scotch_6.0.9/0000755000302600021200000000000013470126716013264 5ustar pelegrinpelegrinscotch_6.0.9/INSTALL.txt0000644000302600021200000007556613560005051015142 0ustar pelegrinpelegrinScotch 6.0 installation instructions ==================================== 1) Mandatory tools ================== In order for you to compile Scotch and/or PT-Scotch, you must have GNU Make installed on your system, as well as an implementation of the MPI message-passing library in the case of PT-Scotch. Flex and Bison are optional. There is a possibility to install Scotch without having Flex or Bison, but it may require the tuning of pre-compiled Flex and Bison outputs created on a Linux system, which may need some tricky work to compile on other systems, because of different C library implementations. Therefore, it is much more secure to have them installed. To check if GNU Make is installed and is found first, please type: %prompt% make --version It should read: % GNU Make x.xx % Copyright (C) 20xx Free Software Foundation, Inc. etc, etc. Alternatively, if GNU Make is installed but its directory does not appear first in the PATH variable that is searched for executables, you can try to locate it using the which command: %prompt% which make If several occurrences of make are found, one might be GNU Make, so try to figure out which of them. To see if Flex and Bison are present, type %prompt% which flex %prompt% which bison If some of these are missing, please: - check your path variable (just in case they are located in some unusual place, such as /usr/local/bin, /opt/bin, /opt/local/bin/, /opt/gnu/bin, etc). Tools such as "which", "locate" or "find" may help you find them; - ask your system administrator (highly recommended); - install a copy of GNU Make of your own (less recommended, please ask your system administrator first). GNU Make is available from the FSF website, at: http://www.gnu.org/software/make/ and http://ftp.gnu.org/pub/gnu/make/ . Flex and Bison are also available from the very same FSF website, at: http://www.gnu.org/software/flex/ http://ftp.gnu.org/non-gnu/flex/ http://www.gnu.org/software/bison/ http://ftp.gnu.org/pub/gnu/bison/ ; - use the "last resort" files placed in a directory judiciously called "last_resort", located in subdirectory "src/libscotch". These files are: . parser_ll.c . parser_ly.h . parser_yy.c . They should be copied in the directory where object files are created, and "touch"ed so that their modification date is more recent than those of the corresponding "parser_ll.l" and "parser_yy.y" files. Then cross your fingers and hope it compiles properly on your system. Else, you will have to dig in their code to have them compile properly... The Makefile of the libScotch library has been designed so as to copy the last_resort/* files automatically when the Flex or Bison tools are not found. In this case, depending on your platform, you may also have to set the "-DSCOTCH_RENAME_PARSER" flag in order for all symbols to be properly redefined (see Section 2.2). 2) Configuration ================ 2.1) Creating the "Makefile.inc" file ------------------------------------- Go to the "src/" directory. Look in the "Make.inc/" subdirectory for a configuration file which matches your system configuration. If there is none, build a proper one in the "Make.inc/" subdirectory, basing on the structure of existing ones. In particular, the Makefile.inc file contains three variables which specify which C compiler to use. Their semantic is as follows: the compiler command in variable CCS is used to compile the sequential (hence the "S" in "CCS") Scotch distribution. The compiler command in CCP is used to compile the parallel ("P") PT-Scotch distribution. The compiler command in CCD is used to compile the version of the "dummysizes" ("D") executable used for compiling PT-Scotch, as explained below. Create a symbolic link from the configuration file to the current "src/" working directory, renaming it as "Makefile.inc": %prompt% ln -s Make.inc/Makefile.inc.xxxx_xxx_xxx Makefile.inc If symbolic links are not available on your system, make a plain copy of the file to a file named "Makefile.inc" in the current "src/" working directory: %prompt% cp Make.inc/Makefile.inc.xxxx_xxx_xxx Makefile.inc Some additional scripts, designed to ease the installation of Scotch on specific platforms, are also present in subdirectories of the Make.inc directory. This is for instance the case for the mingw32 platform. 2.2) Parser symbol conflicts ---------------------------- Since Scotch uses a parser to analyze its strategy strings, it may happen that the symbols of this parser conflict with those of another parser used in a third-party library. All "Makefile.inc.*" platform configuration files which base on Flex/Bison are already tailored so as to prevent such conflicts. If you use other parsing tools, you may have to provide other options. Another solution is to use the pre-processed parser files of the "src/libscotch/last_resort" subdirectory (corresponding operation instructions are given in Section 1). 2.3) Integer size issues ------------------------ By default, all integers used in Scotch and PT-Scotch are of the "int" C type, corresponding to the "INTEGER" type in Fortran. To coerce the size of the Scotch integer type to 32 or 64 bits, add the "-DINTSIZE32" or "-DINTSIZE64" flags, respectively, to the C compiler flags in the Makefile.inc configuration file. If you do so, make sure to use integer types of equivalent size to declare variables passed to Scotch routines from caller C and Fortran procedures. Also, when running on 32_64-bit architectures (that is, integer types are 32-bit wide, while address types are 64-bit wide), some integer array indices returned by the Fortran interface have to be of a size equivalent to those of memory addresses, that is, 64 bits. The size of these variables is determined by the "-DIDXSIZE32" and "-DIDXSIZE64" flags, respectively. When none of them is provided, the size of the indices is assumed to be equivalent to that of the Scotch integer type. For instance, on a 32-bit architecture, you can use 64-bit integers in Scotch by just setting the "-DINTSIZE64" flag, because addresses will remain on 32 bits. On a 32_64 architecture, you can use either 32-bit or 64-bit integers in Scotch, by setting the "-DINTSIZE32" or "-DINTSIZE64" flags accordingly, but in all cases you must set the "-DIDXSIZE64" flag in order for some of the routines of the Fortran interface to operate properly, because the array indices returned by these routines have to be stored as 64-bit quantities. Of course, on 64-bit architectures, another possibility is to tune your C and Fortran compilers to make them interpret all "int" and "INTEGER" types as 64 bit values. This solution is the simplest one, as there is no need to use any of the aforementioned flags, nor to hard-code type lengths in user's code. Yet, it prevents mixing 32 and 64-bit features, and may create problems when linking PT-Scotch if a corresponding MPI library is not available. Be careful not to mismatch the 32-bit and 64-bit versions of the "scotch.h" and "ptscotch.h" include files that are generated at compile time. When several versions of Scotch are simultaneously present on a system, Make sure to place the corresponding include and library files in separate directories. Most Scotch data structures will have different sizes, depending on integer or pointer sizes. Consequently, compiling a 64-bit executable with the 32-bit version of "scotch.h" may lead to unpredictable behavior because of memory overflow. 2.2) (Re)naming of library objects ---------------------------------- In order to prevent conflicts with third-party software, the following naming conventions have been defined : - public C objects start with "SCOTCH_", and public Fortran objects start with "SCOTCHF"; - internal Scotch routines start with "_SCOTCH"; - some internal routines start with "scotch", e.g. Flex/Bison routines, see above. It is possible to make several Scotch versions coexist in the same application. To do so, libraries must be compiled with adequate function renaming, by adding an appropriate suffix. For instance, a "_64" suffix can be appended to routines and data types of a 64-bit version of the library. To activate this feature, the variable "SCOTCH_NAME_SUFFIX" must be defined in Makefile.inc (e.g., "SCOTCH_NAME_SUFFIX=_64"). Note that, when libScotch data types are renamed, the programs of the Scotch package can no longer be compiled. Hence, users can only compile the libraries of the Scotch package, by running: %prompt% make libscotch and/or: %prompt% make libptscotch Since error handling routines are generic and belong to a separate library, suffix transformation is never applied to them. Hence, application programs that use multiple versions of Scotch can be linked against a single instance of the error handling library. Once the library files with renamed objects have been compiled, it is up to the packager to rename adequately the various files. For instance, in the case of a 64-bit version, "scotch.h" can be renamed into "scotch_64.h", etc. By default, objects such as function option flags are not renamed, since they can be shared without harm by all library instances of the same version of Scotch. However, this can pose a risk when two different versions of Scotch are to be used concurrently. In this case, it may be necessary to rename these objects as well. It can be done by defining the "-DSCOTCH_RENAME_ALL" flag. When two different versions of the Scotch library are used without any renaming of all of the external objects, the preprocessor symbol "SCOTCH_WARNING_RENAME_UNSAFE" is defined by the include files "scotch.h", to be taken into account by the application programmer. 2.5) Portability issues ----------------------- While most of the code of Scotch poses no compatibility issues, some features are subject to many diverging implementations, such as date/time management, pipes, process forking, etc. Some of them are handled globally, thanks to system-specific flags. Others have to be finely tuned, depending on your platform. Some common platform configurations are available in the "src/Make.inc/" subdirectory. The compilation flags used to manage portability issues are the following: "-DCOMMON_WINDOWS" tweaks some includes and definitions to resolve most issues encountered on Windows platforms. "-DCOMMON_TIMING_OLD" selects the getrusage()-based timing routine, when "-DCOMMON_WINDOWS" is not set. Else, either clock_gettime() or gettimeofday() are selected, depending on POSIX compilation flags. "-DCOMMON_STUB_FORK" provides a stub for the fork() system call on systems that do not allow process forking. 2.6) Compression libraries -------------------------- The binaries of the Scotch distribution can handle compressed graphs in input or output. Three compressed graph formats are currently supported: bzip2, gzip and xz/lzma. In order for them to be actually activated, the proper libraries must be available on your system. On a Linux platform, they are called "libz" for the gzip format, "libbzip2" for the bzip2 format, and "liblzma" for the lzma format. Note that it is the "development" version (also called "-devel" or "-dev", for short, as a post-fix in package names) of each of these libraries, which is required for the compilation to succeed. According to the libraries installed on your system, you may set flags "-DCOMMON_FILE_COMPRESS_BZ2", "-DCOMMON_FILE_COMPRESS_GZ" and/or "-DCOMMON_FILE_COMPRESS_LZMA" in the CFLAGS variable of your Makefile.inc configuration file, to have these formats and their respective extensions ".bz2", ".gz" and ".xz"/".lzma", recognized and handled by Scotch. Compression and decompression are handled either by extra threads or by fork()'ed child processes if threads are not available. On systems which do not provide a functional fork() system call, compressed files cannot be handled when the "-DCOMMON_PTHREAD_FILE" flag is not set (see below). 2.7) Multi-threading -------------------- Scotch can also take advantage of Posix threads when they are available. They are used in several places: - to compress and decompress file data. This can be done either by launching a service thread, or else by creating a separate process by means of a Posix fork() system call. This choice is controlled by the "-DCOMMON_PTHREAD_FILE" flag: if it is set, threads will be used, else fork() calls will be performed. For systems which do not support the fork() system call, such as the MinGW32 platform, you can set the "-DCOMMON_STUB_FORK" flag, which creates a stub fork() routine which always returns an error. Therefore, without both fork() and threads, you must set the "-DCOMMON_STUB_FORK" flag without setting "-DCOMMON_PTHREAD_FILE", so that compilation will successfully complete; however, in this case, compressed graphs shall not be handled in practice. - to create distributed graphs in parallel. Since this task involves concurrent MPI communications, the MPI library must support the MPI_THREAD_MULTIPLE level. The use of threads within Scotch itself is controlled by the "-DSCOTCH_PTHREAD" flag, which is completely independent from the "-DCOMMON_PTHREAD_FILE" flag. Any of them can be set without setting the other. Note that if you compile Scotch with the "-DSCOTCH_PTHREAD" flag, you will have to initialize your communication subsystem by using the MPI_Init_thread() MPI call, not MPI_Init(), and the provided thread support level value returned by the routine must be checked carefully. If you have doubts on the stability of your MPI implementation, it is better not to set "-DSCOTCH_PTHREAD". For instance, on Linux platforms, concurrency problems have been experienced with MPICH2 versions prior to 1.0.7 using TCP; consequently, if the MPI implementation on your platform is based on an older MPICH2 version, do not set the "-DSCOTCH_PTHREAD" flag. Note that since the Scotch and PT-Scotch libraries are distinct, you can still compile Scotch with threads enabled, and compile PT-Scotch with threads disabled. However, since PT-Scotch calls Scotch routines when operating on a single process, threaded routines will be used on each process, without interfering with MPI. - to run in a multi-threaded way several key algorithms of the Scotch (no longer really) sequential library, such as graph coarsening and k-way diffusion. More algorithms will be re-coded in a threaded way in future versions. To date, thread management is performed in a very rudimentary way. The available number of threads can only be set at compile-time, and the assignment of threads to cores is performed in increasing order, starting from 0, which may not always prove to be the most efficient mapping in terms of memory affinity. We plan to add a mechanism for dynamic thread allocation in the near future, based upon the Hwloc library. The compilation flags used to manage threads are the following: "-DCOMMON_PTHREAD_AFFINITY_LINUX" enables Linux extensions for handling thread affinity. As said above, this may not prove efficient in all cases. More options will be provided in the near future. "-DCOMMON_PTHREAD_BARRIER" creates a replacement for missing pthread_barrier_t implementations, which unfortunately happens on some systems. "-DCOMMON_PTHREAD_FILE" enables threads for handling compressed files. This flag does not interfere with the use of threads by graph algorithms, e.g. for graph partitioning and/or ordering, which depends on other flags (see below). "-DSCOTCH_PTHREAD" is necessary to enable multi-threaded algorithms in Scotch and/or PT-Scotch. "-DSCOTCH_PTHREAD_NUMBER=x" sets the maximum number of threads to be used by multi-threaded algorithms. This number may not necessarily be a power of two. Some algorithms have had to be reformulated to accommodate for multi-threading, and will be most probably much more efficient than sequential processing only for a number of threads strictly greater than 2. Setting "-DSCOTCH_PTHREAD_NUMBER=1" allows you to run sequential algorithms instead of multi-threaded ones, while benefiting from multi-threading for file compression and distributed graph handling. When compiling under mingw32 on Windows systems, it is possible to benefit from multi-threading by including the "semaphore.h" and "pthread.h" files, included in the "src/misc" subdirectory, at compile time. These files have been kindly provided by Samuel Thibault, under a BSD 2-Clause License. These files will not work for Cygwin. This is not a problem, as Cygwin provides its own implementation of Posix threads. 2.8) Monitoring memory allocation --------------------------------- Some memory allocation information can be aggregated if PT-Scotch is compiled with the -DCOMMON_MEMORY_TRACE flag. When this flag is set, the "-va" option will make dgmap, dgord and dgpart output the minimum, maximum and average peak amount of memory used over all processes. Several API routines will also be made available to report the current and maximum amount of memory used by Scotch within the process they are called: SCOTCH_memCur() and SCOTCH_memMax(), respectively. A rudimentary memory checking mechanism is available for platforms that do not have efficient memory checking and debugging tools such as Valgrind or gdb. It can be activated through the "-DCOMMON_MEMORY_CHECK=x" flag. This is almost only for internal debugging purposes. The value of the "-DCOMMON_MEMORY_CHECK" is 1 if memory checking should be enabled by default, and 0 else. This mechanism is absolutely NOT thread-safe at the time being. 2.9) Randomness --------------- Many algorithms in Scotch and PT-Scotch are based on the random selection of vertices (e.g. seed vertices for graph growing algorithms, vertices to be mated for coarsening algorithms, etc.). This selection is performed by using integer pseudo-random generators to produce seemingly uncorrelated vertex indices. The advantage of pseudo-randomness over pure randomness is that the same pseudo-random seed will always yield the same sequence of pseudo-random numbers. Consequently, while using a different random seed for each run is likely to explore better the solution space, using a fixed random seed eases the debugging of programs, because algorithms behave identically across multiple runs (save for asynchronousness issues, see next section). By default, Scotch is compiled with the "-DCOMMON_RANDOM_FIXED_SEED" flag set, so that multiple executions of the same sequential programs will always yield the same results. Prior to version 6.0, Scotch relied on the operating system pseudo-random generator. While this posed no problem for most sequential programs, parallel runs of PT-Scotch were not reproducible on some systems, because the MPI implementation also used this pseudo-random generator for its own purposes. In order to avoid this problem, Scotch now uses its own pseudo-random generator. Users that want to go on using the operating system pseudo-random generator (e.g. for regression testing with respect to version 5.x) can still do so, by compiling with the "-DCOMMON_RANDOM_SYSTEM" flag set. In this case, the "-DCOMMON_RANDOM_RAND" flag allows you to use the srand() routine instead of the default srandom() routine. 2.10) Deterministic behavior --------------------------- When Scotch is compiled with the "-DCOMMON_RANDOM_FIXED_SEED" flag set, multiple executions of the same sequential programs will always yield the same results. Yet, non-deterministic multi-threaded and/or parallel algorithms may still introduce some variability in the produced results, due to operating system artifacts. To ease the tracking down of bugs, it is possible to coerce Scotch to exhibit a deterministic behavior by setting the "-DSCOTCH_DETERMINISTIC" flag. This option makes sure that two consecutive runs of Scotch on the same graph and same number of processes and/or threads will always yield the same result. However, it does not mean that two executions of Scotch on different numbers of processes and/or threads will always yield the same result. Indeed, changing the number of processes impacts graph data distribution and consequently the order in which vertices are processed. Consequently, coarsening algorithms are likely to produce different coarse graphs, leading to different partitions. This option is likely to have adverse impact on performance, since all non-deterministic multi-threaded algorithms will be disabled. In the case of Scotch, the multi-threaded matching algorithm for coarsening will be replaced by its sequential counterpart, whatever the available number of threads is. In the case of PT-Scotch, point-to-point messages will be received in a fixed order rather than being processed on a first-come, first-serve basis. Setting this flag automatically results in setting the "-DCOMMON_RANDOM_FIXED_SEED" flag. Users are also strongly advised to compile without setting the "-DCOMMON_RANDOM_SYSTEM" flag, in order to avoid any interference with third-party libraries that might use the operating system pseudo-random generator. 2.11) Point-to-point or collective communications ------------------------------------------------ Since distributed graph vertices can have any initial distribution across processes, communication rounds are likely to involve all of the processes in an almost all-to-all scheme. In order to speed-up running time, most of these communications are performed by means of asynchronous sends and receives, which allows computations to overlap with communications. However, for large numbers of processes, this can lead to the saturation of the communication network of the target parallel machine. To avoid this, communication consuming routines also have a collective communication based version. The use of this version is enabled by default, as it greatly improves scalability for large numbers of processes. To disable it, set the "-DSCOTCH_PTOP" flag at compile time. 2.12) MeTiS compatibility library --------------------------------- In order to ease the adoption of Scotch/PT-Scotch by people who already developed code based on the MeTiS/ParMeTiS interface, a MeTiS compatibility library is included in the Scotch package. It provides stubs for the graph partitioning and ordering routines of MeTiS/ParMeTiS, but not for the service routines that are comprised in this package. Consequently, for people willing to use both libraries, that is, experiment with the graph partitioning features of Scotch while using the service routines of the genuine MeTiS package, special measures have to be taken. A first solution can be to coerce the linker to pick partitioning routines from the libScotch, and service routines from the libmetis. This can be done by placing the library names in this order as arguments to the linker command. Yet, some linkers may report an error, as some symbols are multiply defined. Alternately, the names of the compatibility routines can be changed so as to avoid conflicts. When the "-DSCOTCH_METIS_PREFIX" flag is set at compile time, all Scotch versions of the MeTiS routines are prefixed with "SCOTCH_". Of course, this will require an equivalent change in the user's application code. In this case, an improved solution can be to call directly the Scotch versions of these routines. Of course, this will require a change in the user's application code, but it can be limited to a small set of "#define's". The advantage of this solution is that it will make the code insensitive to changes in the MeTiS API, because matching Scotch routines are prefixed by "SCOTCH_" and by the MeTiS API version number. This prevents all naming conflicts, such as those which appeared between MeTiS v3 and MeTiS v5. Because of these naming conflicts, users have to choose between the v3 or v5 versions of the MeTiS API when compiling and/or linking with the Scotch stubs. To expose the relevant version of the API when using the "metis.h" file provided by Scotch, compile Scotch and/or your code with the "-DSCOTCH_METIS_VERSION=x" flag set. For Scotch v6.0, the default MeTiS API version is 3. This might change in the future. By setting "-DSCOTCH_METIS_VERSION=0", no MeTiS version will be exposed, hence avoiding potential conflicts with the genuine MeTiS include and library files. The same holds for ParMeTiS and the flag "-DSCOTCH_PARMETIS_VERSION=x", for which only the ParMeTiS v3 API is available. An advantage of the Scotch/PT-Scotch stubs over the genuine MeTiS/ParMeTiS routines is that they can be available in a 64-bit version. In this case, all int's that were passed to MeTiS/ParMeTiS routines must be replaced by 64-bit integer values (even the option configuration values). However, in this case, users will not be able to link against the service routines of the genuine MeTiS/ParMeTiS libraries, as the latter are only available as 32-bit implementations. 3) Compilation ============== Once you have performed the configuration of the "Makefile.inc" file, compile the Scotch distribution by typing: %prompt% make scotch or just: %prompt% make in the current "src/" working directory. To compile the PT-Scotch distribution, type: %prompt% make ptscotch in the same "src/" directory. This can be done in any order. Typing: %prompt% ptscotch will in fact compile both Scotch and PT-Scotch, since PT-Scotch requires Scotch. In some cases (e.g. when renaming library objects, see above), you may only want/need to build the libraries and not the executables. To do so, type: %prompt% make libscotch or: %prompt% make ptlibscotch The most common problem you may encounter when trying to compile PT-Scotch on a new platform relates to the "dummysizes" and "ptdummysizes" executables. The purpose of these programs is to determine, on the target platform, the sizes of the opaque data structures of Scotch and PT-Scotch, respectively. They have to be compiled and run before any library function can be compiled. The sequential case poses no specific problems, as "dummysizes" is always compiled with the same command as that used to compile the sequential Scotch package (hence, "CCD=$(CCS)" when executing "make scotch"). In the parallel case, "ptdummysizes" has to take into account the sizes of some MPI data structures, such as MPI_Comm, and the most common way to have access to this information is to use some flavor of MPI-aware compiler such as "mpicc" which automatically refers to "mpi.h". Therefore, "CCD=mpicc" will work for most systems and MPI implementations. Yet, on some platforms, programs compiled for parallel execution cannot be run interactively. Moreover, "ptdummysizes" itself does not contain any MPI calls, as it just wants to know the sizes of the data structures, and the communication subsystem of the platform may not want to run it. In any of these cases, compilation will break. It is possible to solve this problem by specifying, in the CCD variable of "Makefile.inc", how to compile "ptdummysizes" sequentially but with knowledge of the location of the "mpi.h" include file, for instance with the following line: "CCD = my_sequential_cc -I/path/to/my/mpi/implementation/include/dir/". In case of cross-compilation, e.g. for architectures that have different word size and/or compiler tools for the front-end and the compute nodes, it is possible to provide alternate flags, by setting the "CCDFLAGS" variable. If no error occurs, all of the relevant header, library and executable files will be created and copied to the "../include/", "../lib/" and "../bin/" directories, relatively to your current "src/" working directory. Headers, libraries and binaries of Scotch and PT-Scotch can coexist in these directories without any interference. Then, typing: %prompt% make install and/or %prompt% make ptinstall will perform a GNU-like installation, with header, library, binary and man files copied to the "include", "lib", "bin" and "man" subdirectories of the path specified in the "prefix" variable, which is set by default to "/usr/local". For instance, typing: %prompt% make prefix=/home/myself/usr/ install will install the Scotch/PT-Scotch files in a subtree of directory "/home/myself/usr/". 4) Checking =========== A set of test programs is available in the "src/check" directory. They serve as non-regression checks for both sequential and parallel features of Scotch and PT-Scotch. They can be launched by typing: %prompt% make check and/or: %prompt% make ptcheck in the "src/" directory. In the case of "ptcheck", programs can be run in debug mode, by compiling with the "-DSCOTCH_CHECK_NOAUTO" flag set. In this case, process numbers are printed, so that users can attach a debugger to a given (set of) process(es), and user action is required for launching the parallel programs, by typing ENTER whenever necessary. One might look at these programs for examples of how to use the Scotch and PT-Scotch libraries. However, some of these programs test internal features, and interact with the library through non-standard and non-documented procedures. It is therefore recommended NOT to imitate these calling practices and rather to follow the guidelines provided in the Scotch and PT-Scotch user's manuals. 5) Use ====== Users willing to use the features of the sequential (but possibly threaded) libScotch library have to include "scotch.h" and to link against the "libscotch" library, plus an error handling package such as "libscotcherr" or "libscotcherrexit". Users willing to use the features of the distributed-memory parallel libPTScotch library have to include "ptscotch.h" (which itself includes "scotch.h") and to link against both the "libptscotch" and "libscotch" libraries (in this order whenever order is significant), plus an error handling package such as "libptscotcherr" or "libptscotcherrexit". In the case of complex programs, which may run as sequential programs but may also call parallel routines, it is necessary to link only once against a Scotch error handling routine, and this routine cannot call MPI routines. Hence, the "libscotcherr" or "libscotcherrexit" libraries must be used. This will not impact the behavior of the parallel routines, but process numbers will not be displayed in case of an error. 6) Documentation and use ======================== The Scotch and PT-Scotch user's manuals are available in the "doc/" directory. They describe how to use the libScotch and libPTScotch libraries, as well as the standalone programs of the Scotch and PT-Scotch distributions. 7) Note to packagers ==================== Since version 6.0, the Scotch and PT-Scotch packages can be made independent. The libScotch will not be tied by any dependency against any MPI package, while the libPTScotch has to depend on the one with which it has been compiled, in addition to the libScotch package that it uses. In versions 5.x, the libPTScotch also contained a modified copy of the libScotch. It is no longer the case, which will result in lower disk footprint. Regarding the use of threads, since Scotch is at the time being not dynamically configurable, one has to decide whether to compile it with threads enabled or not and, additionally, with which number of threads it will run. Based on the current processor market, I recommend to compile with -DSCOTCH_PTHREAD_NUMBER=2 (and, of course, -DCOMMON_PTHREAD_AFFINITY_LINUX whenever possible). The penalty for single-thread CPUs will not be too high, while hyper-threaded and many-core CPUs will benefit from the extra thread. scotch_6.0.9/doc/0000755000302600021200000000000013470115365014027 5ustar pelegrinpelegrinscotch_6.0.9/doc/src/0000755000302600021200000000000013303015264014606 5ustar pelegrinpelegrinscotch_6.0.9/doc/src/ptscotch/0000755000302600021200000000000013470127504016443 5ustar pelegrinpelegrinscotch_6.0.9/doc/src/ptscotch/s_f_rua.fig0000644000302600021200000002054713303015264020552 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1425 975 5925 5475 6 1575 1125 5775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1125 5775 1125 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1725 5775 1725 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 2925 5775 2925 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 3525 5775 3525 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 4125 5775 4125 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 2325 5775 2325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 4725 5775 4725 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 5325 5775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1125 1575 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2175 1125 2175 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2775 1125 2775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3375 1125 3375 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3975 1125 3975 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4575 1125 4575 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5175 1125 5175 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5775 1125 5775 5325 -6 6 1425 975 1725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 5475 1725 5175 1425 5175 1425 5475 1725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 4875 1725 4575 1425 4575 1425 4875 1725 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 4275 1725 3975 1425 3975 1425 4275 1725 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 3675 1725 3375 1425 3375 1425 3675 1725 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 3075 1725 2775 1425 2775 1425 3075 1725 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 2475 1725 2175 1425 2175 1425 2475 1725 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 1875 1725 1575 1425 1575 1425 1875 1725 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 1275 1725 975 1425 975 1425 1275 1725 1275 -6 6 2025 975 2325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 5475 2325 5175 2025 5175 2025 5475 2325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 4875 2325 4575 2025 4575 2025 4875 2325 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 4275 2325 3975 2025 3975 2025 4275 2325 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 3675 2325 3375 2025 3375 2025 3675 2325 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 3075 2325 2775 2025 2775 2025 3075 2325 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 2475 2325 2175 2025 2175 2025 2475 2325 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 1875 2325 1575 2025 1575 2025 1875 2325 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 1275 2325 975 2025 975 2025 1275 2325 1275 -6 6 3225 975 3525 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 5475 3525 5175 3225 5175 3225 5475 3525 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 4875 3525 4575 3225 4575 3225 4875 3525 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 4275 3525 3975 3225 3975 3225 4275 3525 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 3675 3525 3375 3225 3375 3225 3675 3525 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 3075 3525 2775 3225 2775 3225 3075 3525 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 2475 3525 2175 3225 2175 3225 2475 3525 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 1875 3525 1575 3225 1575 3225 1875 3525 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 1275 3525 975 3225 975 3225 1275 3525 1275 -6 6 3825 975 4125 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 5475 4125 5175 3825 5175 3825 5475 4125 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 4875 4125 4575 3825 4575 3825 4875 4125 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 4275 4125 3975 3825 3975 3825 4275 4125 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 3675 4125 3375 3825 3375 3825 3675 4125 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 3075 4125 2775 3825 2775 3825 3075 4125 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 2475 4125 2175 3825 2175 3825 2475 4125 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 1875 4125 1575 3825 1575 3825 1875 4125 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 1275 4125 975 3825 975 3825 1275 4125 1275 -6 6 4425 975 4725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 5475 4725 5175 4425 5175 4425 5475 4725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 4875 4725 4575 4425 4575 4425 4875 4725 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 4275 4725 3975 4425 3975 4425 4275 4725 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 3675 4725 3375 4425 3375 4425 3675 4725 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 3075 4725 2775 4425 2775 4425 3075 4725 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 2475 4725 2175 4425 2175 4425 2475 4725 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 1875 4725 1575 4425 1575 4425 1875 4725 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 1275 4725 975 4425 975 4425 1275 4725 1275 -6 6 5025 975 5325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 5475 5325 5175 5025 5175 5025 5475 5325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 4875 5325 4575 5025 4575 5025 4875 5325 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 4275 5325 3975 5025 3975 5025 4275 5325 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 3675 5325 3375 5025 3375 5025 3675 5325 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 3075 5325 2775 5025 2775 5025 3075 5325 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 2475 5325 2175 5025 2175 5025 2475 5325 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 1875 5325 1575 5025 1575 5025 1875 5325 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 1275 5325 975 5025 975 5025 1275 5325 1275 -6 6 5625 975 5925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 5475 5925 5175 5625 5175 5625 5475 5925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 4875 5925 4575 5625 4575 5625 4875 5925 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 4275 5925 3975 5625 3975 5625 4275 5925 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 3675 5925 3375 5625 3375 5625 3675 5925 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 3075 5925 2775 5625 2775 5625 3075 5925 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 2475 5925 2175 5625 2175 5625 2475 5925 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 1875 5925 1575 5625 1575 5625 1875 5925 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 1275 5925 975 5625 975 5625 1275 5925 1275 -6 6 2625 975 2925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 5475 2925 5175 2625 5175 2625 5475 2925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 4875 2925 4575 2625 4575 2625 4875 2925 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 4275 2925 3975 2625 3975 2625 4275 2925 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 3675 2925 3375 2625 3375 2625 3675 2925 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 3075 2925 2775 2625 2775 2625 3075 2925 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 2475 2925 2175 2625 2175 2625 2475 2925 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 1875 2925 1575 2625 1575 2625 1875 2925 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 1275 2925 975 2625 975 2625 1275 2925 1275 -6 -6 6 2325 5700 2700 6000 4 0 -1 0 0 0 20 0.0000 4 210 210 2325 5925 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 2550 6000 0\001 -6 6 4725 5700 5100 6000 4 0 -1 0 0 0 20 0.0000 4 210 210 4725 5925 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 4950 6000 1\001 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1875 3825 75 75 1875 3825 1950 3900 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2775 1725 75 75 2775 1725 2850 1800 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 5025 75 75 2475 5025 2550 5100 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4875 2025 75 75 4875 2025 4950 2100 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5475 3825 75 75 5475 3825 5550 3900 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 4425 75 75 2475 4425 2550 4500 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3675 3375 3675 5475 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3600 3375 3750 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3600 5475 3750 5475 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 6000 3300 1350 3300 1350 5550 6000 5550 6000 3300 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 3000 1500 2550 1500 2550 1950 3000 1950 3000 1500 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5400 1500 4350 1500 4350 2550 5400 2550 5400 1500 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 2775 1725 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 4875 2025 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 5475 3825 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 2475 4425 2475 5025 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 2475 4425 1875 3825 4 0 -1 0 0 0 20 0.0000 4 210 210 975 4500 D\001 scotch_6.0.9/doc/src/ptscotch/p_p.tex0000644000302600021200000004472613303015264017752 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_p.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Programmes 6.0 % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Programs} \label{sec-prog} \subsection{Invocation} All of the programs comprised in the \scotch\ and \ptscotch\ distributions have been designed to run in command-line mode without any interactive prompting, so that they can be called easily from other programs by means of ``\mbox{\tt system$\,$()}'' or ``\mbox{\tt popen$\,$()}'' system calls, or be piped together on a single shell command line. In order to facilitate this, whenever a stream name is asked for (either on input or output), the user may put a single ``{\tt -}'' to indicate standard input or output. Moreover, programs read their input in the same order as stream names are given in the command line. It allows them to read all their data from a single stream (usually the standard input), provided that these data are ordered properly. A brief on-line help is provided with all the programs. To get this help, use the ``{\tt -h}'' option after the program name. The case of option letters is not significant, except when both the lower and upper cases of a letter have different meanings. When passing parameters to the programs, only the order of file names is significant; options can be put anywhere in the command line, in any order. Examples of use of the different programs of the \ptscotch\ project are provided in section~\ref{sec-examples}. Error messages are standardized, but may not be fully explanatory. However, most of the errors you may run into should be related to file formats, and located in ``\mbox{\tt \ldots Load}'' routines. In this case, compare your data formats with the definitions given in section~\ref{sec-file}, and use the {\tt dgtst} % and {\tt dmtst} program of the \ptscotch\ distribution to check the consistency of your distributed source graphs. % and meshes. \\ According to your MPI environment, you may either run the programs directly, or else have to invoke them by means of a command such as {\tt mpirun}. Check your local MPI documentation to see how to specify the number of processors on which to run them. \subsection{File names} \label{sec-prog-filename} \subsubsection{Sequential and parallel file opening} The programs of the \ptscotch\ distribution can handle either the classical centralized \scotch\ graph files, or the distributed \ptscotch\ graph files described in section~\ref{sec-file-dsgraph}. In order to tell whether programs should read from, or write to, a single file located on only one processor, or to multiple instances of the same file on all of the processors, or else to distinct files on each of the processors, a special grammar has been designed, which is based on the ``{\tt \%}'' escape character. Four such escape sequences are defined, which are interpreted independently on every processor, prior to file opening. By default, when a filename is provided, it is assumed that the file is to be opened on only one of the processors, called the root processor, which is usually process $0$ of the communicator within which the program is run. Using any of the first three escape sequences below will instruct programs to open in parallel a file of name equal to the interpreted filename, on every processor on which they are run. \begin{itemize} \iteme[{\tt \%p}] Replaced by the number of processes in the global communicator in which the program is run. Leads to parallel opening. \iteme[{\tt \%r}] Replaced on each process running the program by the rank of this process in the global communicator. Leads to parallel opening. \iteme[{\tt \%-}] Discarded, but leads to parallel opening. This sequence is mainly used to instruct programs to open on every processor a file of identical name. The opened files can be, according whether the given path leads to a shared directory or to directories that are local to each processor, either to the opening of multiple instances of the same file, or to the opening of distinct files which may each have a different content, respectively (but in this latter case it is much recommended to identify files by means of the ``{\tt \%r}'' sequence). \iteme[{\tt \%\%}] Replaced by a single ``{\tt \%}'' character. File names using this escape sequence are not considered for parallel opening, unless one or several of the three other escape sequences are also present. \end{itemize} For instance, filename ``{\tt brol}'' will lead to the opening of file ``{\tt brol}'' on the root processor only, filename ``{\tt \%-brol}'' (or even ``{\tt br\%-ol}'') will lead to the parallel opening of files called ``{\tt brol}'' on every processor, and filename ``{\tt brol\%p-\%r}'' will lead to the opening of files ``{\tt brol2-0}'' and ``{\tt brol2-1}'', respectively, on each of the two processors on which which would run a program of the \ptscotch\ distribution. \subsubsection{Using compressed files} \label{sec-prog-compressed} Starting from version 5.0.6, \scotch\ allows users to provide and retrieve data in compressed form. Since this feature requires that the compression and decompression tasks run in the same time as data is read or written, it can only be done on systems which support multi-threading (Posix threads) or multi-processing (by means of {\tt fork} system calls). To determine if a stream has to be handled in compressed form, \scotch\ checks its extension. If it is ``{\tt .gz}'' ({\tt gzip} format), ``{\tt .bz2}'' ({\tt bzip2} format) or ``{\tt .lzma}'' ({\tt lzma} format), the stream is assumed to be compressed according to the corresponding format. A filter task will then be used to process it accordingly if the format is implemented in \scotch\ and enabled on your system. To date, data can be read and written in {\tt bzip2} and {\tt gzip} formats, and can also be read in the {\tt lzma} format. Since the compression ratio of {\tt lzma} on \scotch\ graphs is $30\%$ better than the one of {\tt gzip} and {\tt bzip2} (which are almost equivalent in this case), the {\tt lzma} format is a very good choice for handling very large graphs. To see how to enable compressed data handling in \scotch, please refer to Section~\ref{sec-install}. \\ When the compressed format allows it, several files can be provided on the same stream, and be uncompressed on the fly. For instance, the command ``{\tt cat brol.grf.gz brol.xyz.gz | gout -.gz -.gz -Mn - brol.iv}'' concatenates the topology and geometry data of some graph {\tt brol} and feed them as a single compressed stream to the standard input of program {\tt gout}, hence the ''{\tt -.gz}'' to indicate a compressed standard stream. \subsection{Description} \subsubsection{{\tt dgmap} / {\tt dgpart}} \label{sec-prog-dgmap} \begin{itemize} \progsyn {\tt dgmap} [{\it input\_graph\_file} [{\it input\_\lbt target\_\lbt file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]]] {\it options}\\ ~\\ {\tt dgpart} {\it number\_\lbt of\_\lbt parts} [{\it input\_graph\_file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]] {\it options} \progdes The {\tt dgmap} program is the parallel static mapper. It uses a static mapping strategy to compute a mapping of the given source graph to the given target architecture. The implemented algorithms aim at assigning source graph vertices to target vertices such that every target vertex receives a set of source vertices of summed weight proportional to the relative weight of the target vertex in the target architecture, and such that the communication cost function $f_C$ is minimized (see Section~\ref{sec-algo-cost} for the definition and rationale of this cost function). Since its main purpose is to provide mappings that exhibit high concurrency for communication minimization in the mapped application, it comprises a parallel implementation of the dual recursive bipartitioning algorithm~\cite{pell94a}, as well as all of the sequential static mapping methods used by its sequential counterpart {\tt gmap}, to be used on subgraphs located on single processors. {\tt dgpart} is a simplified interface to {\tt dgmap}, which performs graph partitioning instead of static mapping. Consequently, the desired number of parts has to be provided, in lieu of the target architecture. The {\tt -b} and {\tt -c} options allow the user to set preferences on the behavior of the mapping strategy which is used by default. The {\tt -m} option allows the user to define a custom mapping strategy. The {\it input\_graph\_file} filename can refer either to a centralized or to a distributed graph, according to the semantics defined in Section~\ref{sec-prog-filename}. The mapping file must be a centralized file. \progopt\\* Since the program is devoted to experimental studies, it has many optional parameters, used to test various execution modes. Values set by default will give best results in most cases. \begin{itemize} \iteme[{\tt -b}{\it rat}] Set the maximum load imbalance ratio to \textit{rat}, which should be a value comprised between $0$ and $1$. This option can be used in conjunction with option \texttt{-c}, but is incompatible with option \texttt{-m}. \iteme[{\tt -c}{\it flags}] Tune the default mapping strategy according to the given preference flags. Some of these flags are antagonistic, while others can be combined. See Section~\ref{sec-lib-format-strat-default} for more information. The currently available flags are the following. \begin{itemize} \iteme[{\tt b}] Enforce load balance as much as possible. \iteme[{\tt q}] Privilege quality over speed. This is the default behavior. \iteme[{\tt s}] Privilege speed over quality. \iteme[{\tt t}] Use only safe methods in the strategy. \iteme[{\tt x}] Favor scalability. \end{itemize} This option can be used in conjunction with option \texttt{-b}, but is incompatible with option \texttt{-m}. The resulting strategy string can be displayed by means of the {\tt -vs} option. \iteme[{\tt -h}] Display the program synopsis. \iteme[{{\tt -m}{\it strat}}] Apply parallel static mapping strategy {\it strat}. The format of parallel mapping strategies is defined in section~\ref{sec-lib-format-pmap}. This option is incompatible with options \texttt{-b} and \texttt{-c}. \iteme[{\tt -r}{\it num}] Set the number of the root process which will be used for centralized file accesses. Set to $0$ by default. \iteme[{\tt -s}{\it obj}] Mask source edge and vertex weights. This option allows the user to ``unweight'' weighted source graphs by removing weights from edges and vertices at loading time. {\it obj\/} may contain several of the following switches. \begin{itemize} \iteme[{\tt e}] Remove edge weights, if any. \iteme[{\tt v}] Remove vertex weights, if any. \end{itemize} \iteme[{\tt -V}] Print the program version and copyright. \iteme[{\tt -v}{\it verb}] Set verbose mode to {\it verb}, which may contain several of the following switches. %For a detailed description of the data displayed, please %refer to the manual page of {\tt dgmtst} below. \begin{itemize} \iteme[{\tt a}] Memory allocation information. \iteme[{\tt m}] Mapping information, similar to the one displayed by the {\tt gmtst} program of the sequential \scotch\ distribution. \iteme[{\tt s}] Strategy information. This parameter displays the default mapping strategy used by {\tt gmap}. \iteme[{\tt t}] Timing information. \end{itemize} \end{itemize} \end{itemize} \subsubsection{{\tt dgord}} \begin{itemize} \progsyn {\tt dgord} [{\it input\_graph\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} \progdes The {\tt dgord} program is the parallel sparse matrix block orderer. It uses an ordering strategy to compute block orderings of sparse matrices represented as source graphs, whose vertex weights indicate the number of DOFs per node (if this number is non homogeneous) and whose edges are unweighted, in order to minimize fill-in and operation count. Since its main purpose is to provide orderings that exhibit high concurrency for parallel block factorization, it comprises a parallel nested dissection method~\cite{geli81}, but sequential classical~\cite{liu-85} and state-of-the-art~\cite{peroam00a} minimum degree algorithms are implemented as well, to be used on subgraphs located on single processors. Ordering methods can be combined by means of selection, grouping, and condition operators, so as to define ordering strategies, which can be passed to the program by means of the {\tt -o} option. The {\tt -c} option allows the user to set preferences on the behavior of the ordering strategy which is used by default. The {\it input\_graph\_file} filename can refer either to a centralized or to a distributed graph, according to the semantics defined in Section~\ref{sec-prog-filename}. The ordering file must be a centralized file. \progopt\\* Since the program is devoted to experimental studies, it has many optional parameters, used to test various execution modes. Values set by default will give best results in most cases. \begin{itemize} \iteme[{\tt -c}{\it flags}] Tune the default ordering strategy according to the given preference flags. Some of these flags are antagonistic, while others can be combined. See Section~\ref{sec-lib-format-strat-default} for more information. The resulting strategy string can be displayed by means of the {\tt -vs} option. \begin{itemize} \iteme[{\tt b}] Enforce load balance as much as possible. \iteme[{\tt q}] Privilege quality over speed. This is the default behavior. \iteme[{\tt s}] Privilege speed over quality. \iteme[{\tt t}] Use only safe methods in the strategy. \iteme[{\tt x}] Favor scalability. \end{itemize} \iteme[{\tt -h}] Display the program synopsis. \iteme[{\tt -m}{\it output\_mapping\_file}] Write to {\it output\_mapping\_file\/} the mapping of graph vertices to column blocks. All of the separators and leaves produced by the nested dissection method are considered as distinct column blocks, which may be in turn split by the ordering methods that are applied to them. Distinct integer numbers are associated with each of the column blocks, such that the number of a block is always greater than the ones of its predecessors in the elimination process, that is, its descendants in the elimination tree. The structure of mapping files is described in detail in the relevant section of the {\it\scotch\ User's Guide}~\scotchcitesuser. When the geometry of the graph is available, this mapping file may be processed by program {\tt gout} to display the vertex separators and supervariable amalgamations that have been computed. \iteme[{{\tt -o}{\it strat}}] Apply parallel ordering strategy {\it strat}. The format of parallel ordering strategies is defined in section~\ref{sec-lib-format-pord}. \iteme[{\tt -r}{\it num}] Set the number of the root process which will be used for centralized file accesses. Set to $0$ by default. \iteme[{\tt -t}{\it output\_tree\_file}] Write to {\it output\_tree\_file\/} the structure of the separator tree. The data that is written resembles much the one of a mapping file: after a first line that contains the number of lines to follow, there are that many lines of mapping pairs, which associate an integer number with every graph vertex index. This integer number is the number of the column block which is the parent of the column block to which the vertex belongs, or $-1$ if the column block to which the vertex belongs is a root of the separator tree (there can be several roots, if the graph is disconnected). Combined to the column block mapping data produced by option {\tt -m}, the tree structure allows one to rebuild the separator tree. \iteme[{\tt -V}] Print the program version and copyright. \iteme[{\tt -v}{\it verb}] Set verbose mode to {\it verb}, which may contain several of the following switches. %For a detailed description of the data displayed, please %refer to the manual page of {\tt gotst}. \begin{itemize} \iteme[{\tt a}] Memory allocation information. \iteme[{\tt s}] Strategy information. This parameter displays the default parallel ordering strategy used by {\tt dgord}. \iteme[{\tt t}] Timing information. \end{itemize} \end{itemize} \end{itemize} \subsubsection{{\tt dgpart}} \begin{itemize} \progsyn {\tt dgpart} [{\it number\_of\_parts} [{\it input\_\lbt graph\_\lbt file} [{\it output\_\lbt mapping\_\lbt file} [{\it output\_\lbt log\_\lbt file}]]]] {\it options} \progdes The {\tt dgpart} program is the parallel graph partitioner. It is in fact a shortcut for the {\tt dgmap} program, where the number of parts is turned into a complete graph with same number of vertices which is passed to the static mapping routine. Save for the {\it number\_of\_parts} parameter which replaces the {\it input\_target\_file}, the parameters of {\tt dgpart} are identical to the ones of {\tt dgmap}. Please refer to its manual page, in Section~\ref{sec-prog-dgmap}, for a description of all of the available options. \end{itemize} \subsubsection{{\tt dgscat}} \begin{itemize} \progsyn {\tt dgscat} [{\it input\_graph\_file} [{\it output\_graph\_file}]] {\it options} \progdes The {\tt dgscat} program creates a distributed source graph, in the \scotch\ distributed graph format, from the given centralized source graph file. The {\it input\_graph\_file} filename should therefore refer to a centralized graph, while {\it output\_graph\_file} must refer to a distributed graph, according to the semantics defined in Section~\ref{sec-prog-filename}. \progopt\\[-1em] \begin{itemize} \iteme[{\tt -c}] Check the consistency of the distributed graph at the end of the graph loading phase. \iteme[{\tt -h}] Display the program synopsis. \iteme[{\tt -r}{\it num}] Set the number of the root process which will be used for centralized file accesses. Set to $0$ by default. \iteme[{\tt -V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{{\tt dgtst}} \begin{itemize} \progsyn {\tt dgtst} [{\it input\_graph\_file} [{\it output\_data\_file}]] {\it options} \progdes The program {\tt dgtst} is the source graph tester. It checks the consistency of the input source graph structure (matching of arcs, number of vertices and edges, etc\@.), and gives some statistics regarding edge weights, vertex weights, and vertex degrees. It produces the same results as the {\tt gtst} program of the \scotch\ sequential distribution. \progopt \begin{itemize} \iteme[{\tt -h}] Display the program synopsis. \iteme[{\tt -r}{\it num}] Set the number of the root process which will be used for centralized file accesses. Set to $0$ by default. \iteme[{\tt -V}] Print the program version and copyright. \end{itemize} \end{itemize} scotch_6.0.9/doc/src/ptscotch/p_f_orb.fig0000644000302600021200000003144513303015264020541 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 2400 2100 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 1\001 -6 6 2100 2400 2400 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 2400 2400 2400 2400 2700 2100 2700 2100 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2200 2640 2\001 -6 6 2400 2400 2700 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2500 2640 4\001 -6 6 3300 2400 3600 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 2400 3600 2400 3600 2700 3300 2700 3300 2400 4 0 0 10 0 0 16 0.0000 4 150 120 3400 2640 8\001 -6 6 4200 2400 4500 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 2400 4500 2400 4500 2700 4200 2700 4200 2400 -6 6 2700 2400 3000 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 2400 3000 2400 3000 2700 2700 2700 2700 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2800 2640 5\001 -6 6 3000 2400 3300 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 2400 3300 2400 3300 2700 3000 2700 3000 2400 4 0 0 10 0 0 16 0.0000 4 165 120 3100 2640 6\001 -6 6 1800 1800 2100 2100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 4 0 0 10 0 0 16 0.0000 4 150 120 1900 2040 7\001 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 10 0 0 16 0.0000 4 150 120 1900 840 2\001 -6 6 2100 600 2400 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 600 2400 600 2400 900 2100 900 2100 600 4 0 0 10 0 0 16 0.0000 4 150 120 2200 840 3\001 -6 6 3000 600 3300 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 600 3300 600 3300 900 3000 900 3000 600 4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 4\001 -6 6 3600 600 3900 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 600 3900 600 3900 900 3600 900 3600 600 4 0 0 10 0 0 16 0.0000 4 150 120 3700 840 8\001 -6 6 3900 600 4200 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 600 4200 600 4200 900 3900 900 3900 600 4 0 0 10 0 0 16 0.0000 4 150 120 4000 840 7\001 -6 6 4200 600 4500 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 600 4500 600 4500 900 4200 900 4200 600 4 0 0 10 0 0 16 0.0000 4 165 120 4300 840 1\001 -6 6 2700 600 3000 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 600 3000 600 3000 900 2700 900 2700 600 4 0 0 10 0 0 16 0.0000 4 165 120 2800 840 6\001 -6 6 2100 1200 2400 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 1200 2400 1200 2400 1500 2100 1500 2100 1200 4 0 0 10 0 0 16 0.0000 4 165 120 2200 1440 1\001 -6 6 2400 1200 2700 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 4 0 0 10 0 0 16 0.0000 4 150 120 2500 1440 2\001 -6 6 3300 1200 3600 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 1200 3600 1200 3600 1500 3300 1500 3300 1200 4 0 0 10 0 0 16 0.0000 4 150 120 3400 1440 4\001 -6 6 2700 1200 3000 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 1200 3000 1200 3000 1500 2700 1500 2700 1200 4 0 0 10 0 0 16 0.0000 4 150 120 2800 1440 5\001 -6 6 3900 2400 4200 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 2400 4200 2400 4200 2700 3900 2700 3900 2400 4 0 0 15 0 0 16 0.0000 4 165 240 3925 2640 13\001 -6 6 4500 2400 4800 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 2400 4800 2400 4800 2700 4500 2700 4500 2400 -6 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 3\001 -6 6 2100 3000 2400 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 4 0 0 10 0 0 16 0.0000 4 150 120 2200 3240 3\001 -6 6 2400 3000 2700 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 4 0 0 10 0 0 16 0.0000 4 150 120 2500 3240 7\001 -6 6 3000 3000 3300 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 6\001 -6 6 3300 3000 3600 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 4 0 0 10 0 0 16 0.0000 4 150 120 3400 3240 7\001 -6 6 2700 3000 3000 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 6\001 -6 6 4800 600 5100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 600 5100 600 5100 900 4800 900 4800 600 4 0 0 10 0 0 16 0.0000 4 150 120 4900 840 5\001 -6 6 5100 600 5400 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 600 5400 600 5400 900 5100 900 5100 600 4 0 0 10 0 0 16 0.0000 4 150 120 5200 840 9\001 -6 6 4800 2400 5100 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 2400 5100 2400 5100 2700 4800 2700 4800 2400 -6 6 5100 2400 5400 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 2400 5400 2400 5400 2700 5100 2700 5100 2400 -6 6 5400 2400 5700 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 2400 5700 2400 5700 2700 5400 2700 5400 2400 -6 6 12150 750 12450 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12300 900 150 150 12300 900 12450 900 4 0 0 8 0 0 16 0.0000 4 165 240 12170 990 10\001 -6 6 11100 1786 11414 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 1943 150 150 11257 1943 11407 1943 4 0 0 8 0 0 16 0.0000 4 165 240 11127 2033 11\001 -6 6 11100 2836 11414 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 2993 150 150 11257 2993 11407 2993 4 0 0 8 0 0 16 0.0000 4 165 240 11127 3083 12\001 -6 6 10050 2850 10350 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 3000 150 150 10200 3000 10350 3000 4 0 0 10 0 0 16 0.0000 4 165 120 10150 3090 1\001 -6 6 10050 750 10350 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 900 150 150 10200 900 10350 900 4 0 0 10 0 0 16 0.0000 4 150 120 10150 990 2\001 -6 6 11100 750 11400 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11250 900 150 150 11250 900 11400 900 4 0 0 10 0 0 16 0.0000 4 150 120 11200 990 3\001 -6 6 13125 2836 13439 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 2993 150 150 13282 2993 13432 2993 4 0 0 10 0 0 16 0.0000 4 150 120 13232 3083 9\001 -6 6 12150 1786 12464 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 1943 150 150 12307 1943 12457 1943 4 0 0 10 0 0 16 0.0000 4 150 120 12257 2033 8\001 -6 6 13125 1786 13439 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 1943 150 150 13282 1943 13432 1943 4 0 0 10 0 0 16 0.0000 4 150 120 13232 2033 7\001 -6 6 13125 736 13439 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 893 150 150 13282 893 13432 893 4 0 0 10 0 0 16 0.0000 4 165 120 13232 983 6\001 -6 6 12150 2836 12464 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 2993 150 150 12307 2993 12457 2993 4 0 0 10 0 0 16 0.0000 4 150 120 12257 3083 5\001 -6 6 10050 1786 10364 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10207 1943 150 150 10207 1943 10357 1943 4 0 0 10 0 0 16 0.0000 4 150 120 10157 2033 4\001 -6 6 6225 750 6525 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 900 150 150 6375 900 6525 900 4 0 0 10 0 0 16 0.0000 4 165 120 6325 990 1\001 -6 6 6218 1793 6532 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 1950 150 150 6375 1950 6525 1950 4 0 0 10 0 0 16 0.0000 4 150 120 6325 2040 5\001 -6 6 7275 750 7575 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 900 150 150 7425 900 7575 900 4 0 0 10 0 0 16 0.0000 4 150 120 7375 990 2\001 -6 6 7268 1793 7582 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 1950 150 150 7425 1950 7575 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7375 2040 6\001 -6 6 6218 2843 6532 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 3000 150 150 6375 3000 6525 3000 4 0 0 10 0 0 16 0.0000 4 150 120 6325 3090 9\001 -6 6 9293 743 9607 1057 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 900 150 150 9450 900 9600 900 4 0 0 10 0 0 16 0.0000 4 150 120 9400 990 4\001 -6 6 9293 1793 9607 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 1950 150 150 9450 1950 9600 1950 4 0 0 10 0 0 16 0.0000 4 150 120 9400 2040 8\001 -6 6 8325 750 8625 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 900 150 150 8475 900 8625 900 4 0 0 10 0 0 16 0.0000 4 150 120 8425 990 3\001 -6 6 8318 1793 8632 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 1950 150 150 8475 1950 8625 1950 4 0 0 10 0 0 16 0.0000 4 150 120 8425 2040 7\001 -6 6 7275 2850 7575 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 3000 150 150 7425 3000 7575 3000 4 0 0 8 0 0 16 0.0000 4 165 240 7295 3090 10\001 -6 6 8318 2843 8632 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 3000 150 150 8475 3000 8625 3000 4 0 0 8 0 0 16 0.0000 4 165 240 8345 3090 11\001 -6 6 9293 2843 9607 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 3000 150 150 9450 3000 9600 3000 4 0 0 8 0 0 16 0.0000 4 165 240 9320 3090 12\001 -6 6 2400 600 2700 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 600 2700 600 2700 900 2400 900 2400 600 4 0 0 15 0 0 16 0.0000 4 165 240 2425 840 10\001 -6 6 3300 600 3600 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 600 3600 600 3600 900 3300 900 3300 600 4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 11\001 -6 6 4500 600 4800 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 600 4800 600 4800 900 4500 900 4500 600 4 0 0 15 0 0 16 0.0000 4 165 240 4525 840 12\001 -6 6 4500 1200 4800 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 1200 4800 1200 4800 1500 4500 1500 4500 1200 4 0 0 10 0 0 16 0.0000 4 150 120 4600 1440 3\001 -6 6 4800 1200 5100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 1200 5100 1200 5100 1500 4800 1500 4800 1200 4 0 0 10 0 0 16 0.0000 4 165 120 4900 1440 6\001 -6 6 3900 1200 4200 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 1200 4200 1200 4200 1500 3900 1500 3900 1200 4 0 0 10 0 0 16 0.0000 4 150 120 4000 1440 7\001 -6 6 3600 1200 3900 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 1200 3900 1200 3900 1500 3600 1500 3600 1200 4 0 0 10 0 0 16 0.0000 4 150 120 3700 1440 8\001 -6 6 1800 1200 2100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 4 0 0 10 0 0 16 0.0000 4 150 120 1900 1440 9\001 -6 6 5100 1200 5400 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 1200 5400 1200 5400 1500 5100 1500 5100 1200 4 0 0 15 0 0 16 0.0000 4 165 240 5125 1440 10\001 -6 6 3000 1200 3300 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 1200 3300 1200 3300 1500 3000 1500 3000 1200 4 0 0 15 0 0 16 0.0000 4 165 240 3025 1440 11\001 -6 6 4200 1200 4500 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 1200 4500 1200 4500 1500 4200 1500 4200 1200 4 0 0 15 0 0 16 0.0000 4 165 240 4225 1440 12\001 -6 6 3600 2400 3900 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 2400 3900 2400 3900 2700 3600 2700 3600 2400 4 0 0 15 0 0 16 0.0000 4 165 240 3625 2640 10\001 -6 6 3600 3000 3900 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 4 0 0 15 0 0 16 0.0000 4 165 195 3625 3240 -1\001 -6 6 3900 3000 4200 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 3000 4200 3000 4200 3300 3900 3300 3900 3000 -6 6 4200 3000 4500 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 3000 4500 3000 4500 3300 4200 3300 4200 3000 -6 6 4500 3000 4800 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 3000 4800 3000 4800 3300 4500 3300 4500 3000 -6 6 4800 3000 5100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 3000 5100 3000 5100 3300 4800 3300 4800 3000 -6 6 5100 3000 5400 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 3000 5400 3000 5400 3300 5100 3300 5100 3000 -6 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 10425 2175 10425 1725 9975 1725 9975 2175 10425 2175 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 10200 900 10200 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 10200 900 13275 900 13275 3000 10200 3000 10200 1950 13275 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 11250 900 11250 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 12300 900 12300 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 6375 900 6375 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 6300 900 9450 900 9450 3000 6375 3000 6375 1950 9450 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 7425 900 7425 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 8475 900 8475 3000 3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 16 11025 3150 11100 3225 11400 3225 11475 3150 11475 1800 11550 1725 12450 1125 12525 1050 12525 750 12450 675 12150 675 12075 750 12075 1050 12000 1125 11100 1725 11025 1800 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 12 12150 1725 12450 1725 12525 1800 13425 2775 13500 2850 13500 3150 13425 3225 13125 3225 13050 3150 12150 2175 12075 2100 12075 1800 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 4 0 0 20 0 12 14 0.0000 4 195 945 600 1425 peritab\001 4 0 0 20 0 12 14 0.0000 4 150 945 600 2025 cblknbr\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 2625 rangtab\001 4 0 0 20 0 12 14 0.0000 4 150 945 600 3225 treetab\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 825 permtab\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 3150 1\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 1050 2\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 2325 3\001 4 0 0 10 0 2 16 0.0000 4 150 120 12000 3300 4\001 4 0 0 10 0 2 16 0.0000 4 150 120 12975 1200 5\001 4 0 0 10 0 2 16 0.0000 4 165 120 11925 2250 6\001 4 0 0 10 0 2 16 0.0000 4 150 120 10950 1725 7\001 scotch_6.0.9/doc/src/ptscotch/p_n.tex0000644000302600021200000002114213303015264017733 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_n.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Codage de nouvelles % % methodes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Adding new features to \scotch} \label{sec-coding} Since \scotch\ is libre/free software, users have the ability to add new features to it. Moreover, as \scotch\ is intended to be a testbed for new partitioning and ordering algorithms, it has been developed in a very modular way, to ease the development and inclusion of new partitioning and ordering methods to be called within \scotch\ strategies. All of the source code for partitioning and ordering methods for graphs and meshes is located in the {\tt src/\lbt libscotch/} source subdirectory. Source file names have a very regular pattern, based on the internal data structures they handle. \subsection{Graphs and meshes} The basic structures in \scotch\ are the {\tt Graph} and {\tt Mesh} structures, which model a simple symmetric graph the definition of which is given in file {\tt graph.h}, and a simple mesh, in the form of a bipartite graph, the definition of which is given in file {\tt mesh.h}, respectively. From this structure are derived enriched graph and mesh structures: \begin{itemize} \item {\tt Bgraph}, in file {\tt bgraph.h}: graph with bipartition, that is, edge separation, information attached to it; \item {\tt Kgraph}, in file {\tt kgraph.h}: graph with mapping information attached to it; \item {\tt Hgraph}, in file {\tt hgraph.h}: graph with halo information attached to it, for computing graph orderings; \item {\tt Vgraph}, in file {\tt vgraph.h}: graph with vertex bipartition information attached to it; \item {\tt Hmesh}, in file {\tt hmesh.h}: mesh with halo information attached to it, for computing graph orderings; \item {\tt Vmesh}, in file {\tt vmesh.h}: graph with vertex bipartition information attached to it. \end{itemize} As version {\sc 4.0} of the \libscotch\ does not provide mesh mapping capabilities, neither {\tt Bmesh} nor {\tt Kmesh} structures have been defined to date, but they well may be in the future. All of the structures are in fact defined as {\tt typedef}ed types. \subsection{Methods} \subsection{Adding a new method to \scotch} We will assume in this section that the new method to add is a graph separation method. The procedure explained below is exactly the same for graph bipartitioning, graph mapping, graph ordering, mesh separation, or mesh ordering methods. Please proceed as explained below. \begin{enumerate} \item Write the code of the method itself. First, choose a free two-letter code to describe your method, say ``xy''. In the {\tt libscotch} source directory, create files {\tt vgraph\_\lbt separate\_\lbt xy.c} and {\tt vgraph\_\lbt separate\_\lbt xy.h}, basing on existing files such as {\tt vgraph\_\lbt separate\_\lbt gg.c} and {\tt vgraph\_\lbt separate\_\lbt gg.h}, for instance. If the method is complex, it can be split across several other files, which will be named {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt first\lbt module\lbt name.c}, {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt second\lbt module\lbt name.c}, eventually with matching header files. If the method has parameters, create a structure called {\tt Vgraph\lbt Separate\lbt Xy\lbt Param}, which contains types that are handled by the strategy parser, such as {\tt INT} and {\tt double}. The execution of your method should result in the setting or in the updating of the {\tt Vgraph} structure that is passed to it. See its definition in {\tt vgraph.h} and read several simple graph separation methods, such as {\tt vgraph\_\lbt separate\_\lbt zr.c}, to figure out what all of its parameters mean. At the end of your method, always call, when the {\tt SCOTCH\_\lbt DEBUG\_\lbt VGRAPH2} debug flag is set, the {\tt vgraph\lbt Check} routine, to avoid the spreading of eventual bugs to other parts of the \libscotch\ library. \item Add the method to the parser tables. The files to update are {\tt vgraph\_\lbt separate\_\lbt st.c} and {\tt vgraph\_\lbt separate\_\lbt st.h}, where ``{\tt st}'' stands for ``strategy''. First, edit {\tt vgraph\_\lbt separate\_\lbt st.h}. In the {\tt Vgraph\lbt Separate\lbt St\lbt Method\lbt Type} enumeration, add a line for your new method {\tt VGRAPH\lbt SEPA\lbt ST\lbt METH\lbt XY}. Then, edit {\tt vgraph\_\lbt separate\_\lbt st.c}, where all of the remaining actions take place. In the top of the file, add a {\tt \#include} directive to include {\tt vgraph\_\lbt separate\_\lbt xy.h}. If the method has parameters, create a {\tt vgraph\lbt separate\lbt default\lbt xy} C union, basing on an existing one, and fill it with the default values of your method parameters. In the {\tt vgraph\lbt separate\lbt st\lbt meth\lbt tab} method array, add a line for the new method. To do so, choose a free single-letter code that will be used to designate the new method in strategy strings. If the method has parameters, the last field should be a pointer to the default structure, else it should be set to {\tt NULL}. If the method has parameters, update the {\tt vgraph\lbt separate\lbt st\lbt para\lbt tab} parameter array. Add one data block per parameter. The first field is the name of the method to which the parameter applies, that is, {\tt VGRAPH\lbt SEPA\lbt ST\lbt METH\lbt XY}. The second field is the type of the parameter, which can be: \begin{itemize} \item {\tt STRATPARAMCASE}: the support type is an {\tt int}. It receives the index in the case string, given as last field of the parameter line, of the selected case character code; \item {\tt STRATPARAMDOUBLE}: the support type is a {\tt double} value; \item {\tt STRATPARAMINT}: the support type is an {\tt INT}, which is the generic integer type handled internally by \scotch. This type has variable extent, depending on compilation flags, as described in Section~\ref{sec-lib-inttypesize}; \item {\tt STRATPARAMSTRING}: a (small) character string. \item {\tt STRATPARAMSTRAT}: strategy. For instance, the graph ordering method by nested dissection takes a vertex partitioning strategy as one of its parameters, to compute the vertex separators. \end{itemize} The fourth and fifth fields are the address of the location of the default structure and the address of the parameter within this default structure, respectively. From these two values can be computed at run time the offset of the parameter within any instance of the parameter structure, which is used to fill the actual structures in the parsed strategy evaluation tree. The value of the sixth parameter depends on the type of the parameter. It should be {\tt NULL} for {\tt STRAT\lbt PARAM\lbt DOUBLE} and {\tt STRAT\lbt PARAM\lbt INT} parameters, points to the string of available case letters for {\tt STRAT\lbt PARAM\lbt CASE} parameters, points to the target string buffer for {\tt STRAT\lbt PARAM\lbt STRING} parameters, and points to the relevant method parsing table for for {\tt STRAT\lbt PARAM\lbt STRAT} parameters. \item Edit the makefile of the \libscotch\ source directory to enable the compilation and linking of the method. Depending on \libscotch\ versions, this makefile is either called {\tt Makefile} or {\tt make\_\lbt gen}. \item Compile in debug mode and experiment with your routine, by creating strategies that contain its single-letter code. \item To change the default strategy string used by the \libscotch\ library, update file {\tt library\_\lbt graph\_\lbt order.c}, since it is the graph ordering routine which makes use of graph vertex separation methods to compute separators for the nested dissection ordering method. \end{enumerate} \subsection{Licensing of new methods and of derived works} According to the terms of the GNU Lesser General Public License (LGPL)~\cite{lgpl}, under which the \scotch\ software package is distributed, the works that are carried out to improve and extend the \libscotch\ library must be licensed under the same terms. Basically, it means that you will have to distribute the sources of your new methods, along with the sources of \scotch, to any recipient of your modified version of the \libscotch, and that you grant these recipients the same rights of update and redistribution as the ones that are given to you under the terms of the LGPL. Please read it carefully to know what you can do and cannot do with the \scotch\ distribution. \\ You should have received a copy of the GNU Lesser General Public License along with the \scotch\ distribution; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. scotch_6.0.9/doc/src/ptscotch/fullpage.sty0000644000302600021200000000151613303015264021000 0ustar pelegrinpelegrin% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. % Document Style Option to fill the paper just like Plain TeX. \typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} \topmargin 0pt \advance \topmargin by -\headheight \advance \topmargin by -\headsep \textheight 8.9in \oddsidemargin 0pt \evensidemargin \oddsidemargin \marginparwidth 0.5in \textwidth 6.5in % For users of A4 paper: The above values are suited for american 8.5x11in % paper. If your output driver performs a conversion for A4 paper, keep % those values. If your output driver conforms to the TeX standard (1in/1in), % then you should add the following commands to center the text on A4 paper: % \advance\hoffset by -3mm % A4 is narrower. % \advance\voffset by 8mm % A4 is taller. \endinput scotch_6.0.9/doc/src/ptscotch/Makefile0000644000302600021200000000452713466077161020123 0ustar pelegrinpelegrin## Copyright 2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## VERSION = 6.0 UMAN = ptscotch_user$(VERSION) FLAGS = -sPAPERSIZE=a4 DEPS = $(wildcard *.tex) $(wildcard *.eps) MANS = $(UMAN).ps.gz $(UMAN).pdf CP = cp -f RM = rm -f .PHONY : clean default install realclean default : $(MANS) %.eps : %.fig fig2dev -L eps $(<) $(@) %.dvi : %.tex $(DEPS) latex $(<) -bibtex $(*) latex $(<) latex $(<) %.ps : %.dvi dvips $(FLAGS) $(<) $(UMAN).pdf : p.dvi dvipdf $(FLAGS) $(<) $(@) $(UMAN).ps.gz : p.ps gzip -9 -c < $(<) > $(@) install : $(MANS) -$(CP) $(UMAN).ps.gz ../../ -$(CP) $(UMAN).pdf ../../ clean : -$(RM) *~ p.aux p.blg p.log p.toc realclean : clean -$(RM) *~ p.bbl *dvi $(UMAN)* scotch_6.0.9/doc/src/ptscotch/p_c.tex0000644000302600021200000000341213303015264017720 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_c.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Changes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Updates} \label{sec-changes} \subsection{Changes from version 5.0} \ptscotch\ now provides routines to compute in parallel partitions of distributed graphs. A new integer index type has been created in the Fortran interface, to address array indices larger than the maximum value which can be stored in a regular integer. Please refer to Section~\ref{sec-install-inttypesize} for more information. A new set of routines has been designed, to ease the use of the \libscotch\ as a dynamic library. The {\tt SCOTCH\_\lbt version} routine returns the version, release and patchlevel numbers of the library being used. The {\tt SCOTCH\_\lbt *Alloc} routines, which are only available in the C interface at the time being, dynamically allocate storage space for the opaque API \scotch\ structures, which frees application programs from the need to be systematically recompiled because of possible changes of \scotch\ structure sizes. \subsection{Changes from version 5.1} Unlike its sequential counterpart, version {\sc 6.0} of \ptscotch\ does not bring major algorithmic improvements with respect to the latest {\sc 5.1.12} release of the {\sc 5.1} branch. In order to ease the work of people writing numerical solvers, it exposes in its interface a new distributed graph handling routine, {\tt SCOTCH\_\lbt dgraph\lbt Redist}, that builds a redistributed graph from an existing distributed graph and partition data. See Section~\ref{sec-lib-dgraphredist}. scotch_6.0.9/doc/src/ptscotch/p_f_sepa.eps0000644000302600021200000014146113303015264020731 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue May 2 09:11:11 2006 %%For: pelegrin@portablepelegrin (Francois PELLEGRINI) %%BoundingBox: 0 0 1198 483 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 483 moveto 0 0 lineto 1198 0 lineto 1198 483 lineto closepath clip newpath -233.9 545.4 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 /Times-Roman ff 285.00 scf sf 7996 8289 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 8141 8325 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 300.00 scf sf 6900 8213 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 7045 8250 m gs 1 -1 sc (2) col0 sh gr % Ellipse 7.500 slw n 7575 8179 1025 409 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj 0 slc [15 45] 45 sd n 7933 7797 m 7933 7799 l 7932 7802 l 7930 7808 l 7927 7817 l 7923 7829 l 7918 7843 l 7911 7859 l 7904 7877 l 7895 7895 l 7884 7915 l 7872 7935 l 7857 7956 l 7839 7978 l 7818 8001 l 7793 8026 l 7763 8051 l 7729 8077 l 7696 8099 l 7664 8119 l 7634 8135 l 7608 8148 l 7586 8157 l 7568 8163 l 7553 8167 l 7540 8168 l 7529 8168 l 7519 8168 l 7509 8168 l 7498 8168 l 7485 8169 l 7469 8173 l 7449 8178 l 7426 8187 l 7398 8200 l 7365 8215 l 7329 8234 l 7292 8255 l 7252 8279 l 7215 8303 l 7183 8326 l 7154 8347 l 7128 8368 l 7106 8387 l 7085 8405 l 7067 8423 l 7050 8440 l 7035 8455 l 7022 8470 l 7010 8483 l 7001 8493 l 6994 8501 l 6990 8507 l 6987 8510 l 6986 8511 l gs col0 s gr [] 0 sd /Times-Roman ff 285.00 scf sf 8371 7164 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 8516 7200 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 300.00 scf sf 7275 7088 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 7420 7125 m gs 1 -1 sc (0) col0 sh gr % Ellipse n 7950 7054 1025 409 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 8308 6672 m 8308 6674 l 8307 6677 l 8305 6683 l 8302 6692 l 8298 6704 l 8293 6718 l 8286 6734 l 8279 6752 l 8270 6770 l 8259 6790 l 8247 6810 l 8232 6831 l 8214 6853 l 8193 6876 l 8168 6901 l 8138 6926 l 8104 6952 l 8071 6974 l 8039 6994 l 8009 7010 l 7983 7023 l 7961 7032 l 7943 7038 l 7928 7042 l 7915 7043 l 7904 7043 l 7894 7043 l 7884 7043 l 7873 7043 l 7860 7044 l 7844 7048 l 7824 7053 l 7801 7062 l 7773 7075 l 7740 7090 l 7704 7109 l 7667 7130 l 7627 7154 l 7590 7178 l 7558 7201 l 7529 7222 l 7503 7243 l 7481 7262 l 7460 7280 l 7442 7298 l 7425 7315 l 7410 7330 l 7397 7345 l 7385 7358 l 7376 7368 l 7369 7376 l 7365 7382 l 7362 7385 l 7361 7386 l gs col0 s gr [] 0 sd /Times-Roman ff 285.00 scf sf 5196 6027 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 5336 6062 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 285.00 scf sf 5475 6582 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 5614 6617 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 285.00 scf sf 4363 6339 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 4502 6374 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 285.00 scf sf 6344 6339 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 6483 6374 m gs 1 -1 sc (3) col0 sh gr % Ellipse n 5475 6235 1391 556 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 5961 5715 m 5961 5717 l 5960 5720 l 5958 5726 l 5955 5736 l 5951 5748 l 5945 5764 l 5939 5782 l 5931 5802 l 5921 5823 l 5910 5846 l 5898 5870 l 5883 5894 l 5866 5920 l 5846 5946 l 5822 5974 l 5795 6003 l 5763 6033 l 5726 6064 l 5684 6096 l 5647 6121 l 5610 6144 l 5575 6165 l 5543 6181 l 5515 6195 l 5490 6205 l 5469 6212 l 5451 6217 l 5436 6220 l 5423 6221 l 5411 6221 l 5400 6220 l 5388 6220 l 5376 6220 l 5362 6221 l 5347 6223 l 5328 6228 l 5305 6235 l 5279 6245 l 5249 6257 l 5214 6274 l 5175 6293 l 5134 6315 l 5092 6339 l 5047 6366 l 5005 6393 l 4967 6419 l 4932 6443 l 4901 6467 l 4873 6489 l 4847 6511 l 4824 6532 l 4802 6552 l 4782 6571 l 4763 6590 l 4746 6607 l 4731 6624 l 4717 6639 l 4706 6652 l 4696 6663 l 4688 6672 l 4683 6678 l 4679 6683 l 4677 6685 l 4676 6686 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 4780 5749 m 4780 5751 l 4779 5755 l 4777 5762 l 4775 5773 l 4773 5787 l 4771 5805 l 4768 5824 l 4766 5846 l 4765 5868 l 4764 5892 l 4765 5917 l 4767 5943 l 4771 5971 l 4778 6000 l 4787 6031 l 4799 6063 l 4815 6096 l 4834 6128 l 4854 6157 l 4874 6183 l 4895 6206 l 4916 6226 l 4938 6244 l 4959 6260 l 4980 6275 l 5000 6288 l 5020 6300 l 5038 6311 l 5055 6320 l 5068 6327 l 5079 6332 l 5086 6336 l 5090 6338 l 5092 6339 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5754 6027 m 5755 6028 l 5759 6030 l 5764 6034 l 5773 6040 l 5784 6048 l 5798 6058 l 5814 6070 l 5832 6084 l 5851 6098 l 5871 6115 l 5891 6132 l 5912 6151 l 5933 6171 l 5955 6193 l 5976 6217 l 5998 6244 l 6021 6273 l 6043 6305 l 6065 6339 l 6087 6378 l 6105 6415 l 6120 6450 l 6132 6483 l 6142 6513 l 6149 6542 l 6155 6569 l 6160 6595 l 6163 6619 l 6166 6642 l 6167 6663 l 6168 6681 l 6169 6696 l 6170 6707 l 6170 6715 l 6170 6719 l 6170 6721 l gs col0 s gr [] 0 sd % Ellipse n 13842 6644 260 104 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 13968 6553 m 13966 6554 l 13963 6557 l 13957 6561 l 13950 6567 l 13941 6573 l 13930 6580 l 13918 6588 l 13903 6598 l 13884 6609 l 13865 6620 l 13850 6628 l 13840 6633 l 13834 6636 l 13830 6638 l 13827 6639 l 13821 6642 l 13810 6647 l 13793 6655 l 13772 6666 l 13750 6677 l 13731 6687 l 13715 6695 l 13700 6702 l 13687 6708 l 13676 6714 l 13668 6718 l 13662 6721 l 13659 6722 l gs col0 s gr % Ellipse 7.500 slw n 13851 7390 270 108 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 13851 7282 m 13850 7283 l 13848 7284 l 13846 7286 l 13843 7289 l 13841 7294 l 13839 7299 l 13837 7306 l 13837 7316 l 13838 7329 l 13842 7346 l 13846 7360 l 13851 7368 l 13856 7374 l 13860 7379 l 13865 7388 l 13869 7403 l 13872 7423 l 13872 7443 l 13870 7458 l 13866 7470 l 13861 7480 l 13857 7488 l 13853 7494 l 13851 7497 l gs col0 s gr % Ellipse 7.500 slw n 13842 8069 260 104 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 13744 7978 m 13745 7978 l 13751 7978 l 13763 7979 l 13779 7981 l 13795 7985 l 13810 7990 l 13822 7998 l 13829 8010 l 13828 8024 l 13822 8035 l 13812 8042 l 13802 8046 l 13791 8051 l 13781 8059 l 13774 8072 l 13772 8091 l 13776 8107 l 13782 8120 l 13791 8132 l 13802 8143 l 13813 8152 l 13823 8160 l 13833 8166 l 13839 8170 l 13842 8172 l gs col0 s gr % Ellipse 7.500 slw n 13842 8744 260 104 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 13912 8653 m 13911 8653 l 13908 8654 l 13900 8656 l 13889 8659 l 13876 8663 l 13862 8668 l 13846 8675 l 13829 8685 l 13818 8692 l 13809 8698 l 13801 8702 l 13796 8704 l 13791 8705 l 13788 8705 l 13784 8705 l 13781 8707 l 13778 8710 l 13775 8716 l 13772 8726 l 13772 8738 l 13776 8755 l 13782 8771 l 13791 8786 l 13802 8801 l 13813 8815 l 13823 8827 l 13833 8837 l 13839 8844 l 13842 8847 l gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 14545 6735 m 14865 6735 l 14865 6615 l 14545 6615 l 14545 6615 l 14785 6675 l 14545 6735 l cp eoclip n 14325 6675 m 14850 6675 l gs col0 s gr gr % arrowhead 15.000 slw n 14545 6735 m 14785 6675 l 14545 6615 l 14545 6735 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 14545 7410 m 14865 7410 l 14865 7290 l 14545 7290 l 14545 7290 l 14785 7350 l 14545 7410 l cp eoclip n 14325 7350 m 14850 7350 l gs col0 s gr gr % arrowhead 15.000 slw n 14545 7410 m 14785 7350 l 14545 7290 l 14545 7410 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 14545 8760 m 14865 8760 l 14865 8640 l 14545 8640 l 14545 8640 l 14785 8700 l 14545 8760 l cp eoclip n 14325 8700 m 14850 8700 l gs col0 s gr gr % arrowhead 15.000 slw n 14545 8760 m 14785 8700 l 14545 8640 l 14545 8760 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 14545 8085 m 14865 8085 l 14865 7965 l 14545 7965 l 14545 7965 l 14785 8025 l 14545 8085 l cp eoclip n 14325 8025 m 14850 8025 l gs col0 s gr gr % arrowhead 15.000 slw n 14545 8085 m 14785 8025 l 14545 7965 l 14545 8085 l cp gs 0.00 setgray ef gr col0 s % Ellipse 7.500 slw n 15450 6721 439 175 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj 15.000 slw n 15663 6569 m 15661 6570 l 15657 6573 l 15651 6578 l 15642 6585 l 15632 6593 l 15620 6602 l 15606 6612 l 15589 6622 l 15570 6635 l 15547 6649 l 15521 6664 l 15498 6677 l 15477 6688 l 15460 6697 l 15448 6703 l 15440 6707 l 15435 6709 l 15430 6711 l 15426 6713 l 15421 6715 l 15412 6719 l 15399 6725 l 15381 6734 l 15358 6745 l 15332 6758 l 15305 6771 l 15281 6784 l 15259 6795 l 15239 6804 l 15221 6813 l 15205 6822 l 15190 6829 l 15176 6836 l 15164 6842 l 15155 6847 l 15148 6850 l 15144 6852 l 15142 6853 l gs col0 s gr % Ellipse 7.500 slw n 15461 7391 450 179 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 15461 7211 m 15460 7212 l 15458 7213 l 15456 7215 l 15452 7219 l 15448 7223 l 15444 7229 l 15441 7236 l 15439 7245 l 15437 7257 l 15437 7272 l 15439 7290 l 15443 7310 l 15448 7328 l 15453 7342 l 15458 7352 l 15463 7359 l 15468 7365 l 15473 7371 l 15478 7378 l 15483 7389 l 15488 7404 l 15492 7424 l 15495 7447 l 15496 7474 l 15493 7496 l 15489 7514 l 15484 7529 l 15478 7542 l 15472 7553 l 15467 7562 l 15463 7567 l 15461 7570 l gs col0 s gr % Ellipse 7.500 slw n 15450 8071 439 175 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 15284 7919 m 15285 7919 l 15288 7919 l 15296 7920 l 15308 7921 l 15324 7923 l 15343 7925 l 15361 7928 l 15379 7933 l 15395 7939 l 15410 7947 l 15421 7959 l 15428 7973 l 15429 7989 l 15424 8004 l 15416 8015 l 15406 8023 l 15394 8029 l 15382 8034 l 15370 8038 l 15358 8044 l 15347 8054 l 15339 8068 l 15333 8086 l 15332 8108 l 15336 8130 l 15345 8151 l 15357 8168 l 15370 8184 l 15385 8198 l 15400 8211 l 15416 8223 l 15429 8232 l 15440 8240 l 15447 8244 l 15450 8246 l gs col0 s gr % Ellipse 7.500 slw n 15450 8746 439 175 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 15568 8594 m 15566 8595 l 15561 8596 l 15552 8598 l 15542 8601 l 15529 8604 l 15515 8609 l 15500 8614 l 15484 8620 l 15467 8628 l 15448 8637 l 15428 8648 l 15412 8658 l 15398 8667 l 15386 8674 l 15377 8678 l 15370 8680 l 15364 8681 l 15358 8681 l 15354 8681 l 15349 8683 l 15344 8687 l 15340 8693 l 15335 8703 l 15332 8718 l 15332 8736 l 15336 8756 l 15342 8776 l 15351 8796 l 15362 8814 l 15374 8832 l 15387 8849 l 15400 8866 l 15414 8881 l 15426 8895 l 15436 8906 l 15443 8914 l 15448 8919 l 15450 8921 l gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 16270 6735 m 16590 6735 l 16590 6615 l 16270 6615 l 16270 6615 l 16510 6675 l 16270 6735 l cp eoclip n 16050 6675 m 16575 6675 l gs col0 s gr gr % arrowhead 15.000 slw n 16270 6735 m 16510 6675 l 16270 6615 l 16270 6735 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 16270 7410 m 16590 7410 l 16590 7290 l 16270 7290 l 16270 7290 l 16510 7350 l 16270 7410 l cp eoclip n 16050 7350 m 16575 7350 l gs col0 s gr gr % arrowhead 15.000 slw n 16270 7410 m 16510 7350 l 16270 7290 l 16270 7410 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 16270 8760 m 16590 8760 l 16590 8640 l 16270 8640 l 16270 8640 l 16510 8700 l 16270 8760 l cp eoclip n 16050 8700 m 16575 8700 l gs col0 s gr gr % arrowhead 15.000 slw n 16270 8760 m 16510 8700 l 16270 8640 l 16270 8760 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 16270 8085 m 16590 8085 l 16590 7965 l 16270 7965 l 16270 7965 l 16510 8025 l 16270 8085 l cp eoclip n 16050 8025 m 16575 8025 l gs col0 s gr gr % arrowhead 15.000 slw n 16270 8085 m 16510 8025 l 16270 7965 l 16270 8085 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13120 6735 m 13440 6735 l 13440 6615 l 13120 6615 l 13120 6615 l 13360 6675 l 13120 6735 l cp eoclip n 12900 6675 m 13425 6675 l gs col0 s gr gr % arrowhead 15.000 slw n 13120 6735 m 13360 6675 l 13120 6615 l 13120 6735 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13120 7410 m 13440 7410 l 13440 7290 l 13120 7290 l 13120 7290 l 13360 7350 l 13120 7410 l cp eoclip n 12900 7350 m 13425 7350 l gs col0 s gr gr % arrowhead 15.000 slw n 13120 7410 m 13360 7350 l 13120 7290 l 13120 7410 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13120 8760 m 13440 8760 l 13440 8640 l 13120 8640 l 13120 8640 l 13360 8700 l 13120 8760 l cp eoclip n 12900 8700 m 13425 8700 l gs col0 s gr gr % arrowhead 15.000 slw n 13120 8760 m 13360 8700 l 13120 8640 l 13120 8760 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13120 8085 m 13440 8085 l 13440 7965 l 13120 7965 l 13120 7965 l 13360 8025 l 13120 8085 l cp eoclip n 12900 8025 m 13425 8025 l gs col0 s gr gr % arrowhead 15.000 slw n 13120 8085 m 13360 8025 l 13120 7965 l 13120 8085 l cp gs 0.00 setgray ef gr col0 s % Ellipse 7.500 slw n 17437 8116 695 277 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj 15.000 slw n 17175 7875 m 17176 7875 l 17179 7875 l 17187 7876 l 17201 7877 l 17220 7878 l 17243 7881 l 17268 7884 l 17293 7888 l 17317 7894 l 17340 7902 l 17361 7911 l 17380 7924 l 17394 7940 l 17403 7960 l 17405 7979 l 17402 7998 l 17394 8014 l 17384 8027 l 17372 8037 l 17359 8045 l 17344 8051 l 17330 8056 l 17315 8062 l 17301 8068 l 17287 8077 l 17275 8089 l 17264 8105 l 17255 8125 l 17250 8148 l 17250 8175 l 17255 8202 l 17263 8227 l 17275 8250 l 17289 8270 l 17305 8289 l 17322 8307 l 17340 8323 l 17358 8338 l 17377 8352 l 17394 8364 l 17409 8375 l 17421 8383 l 17430 8388 l 17435 8392 l 17437 8393 l gs col0 s gr % Ellipse 7.500 slw n 17437 8791 695 277 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 17625 8550 m 17622 8551 l 17617 8552 l 17608 8554 l 17596 8557 l 17580 8561 l 17563 8566 l 17544 8572 l 17524 8578 l 17503 8586 l 17480 8595 l 17456 8606 l 17430 8620 l 17403 8635 l 17383 8648 l 17364 8659 l 17348 8669 l 17335 8677 l 17323 8682 l 17314 8685 l 17306 8687 l 17299 8687 l 17292 8688 l 17286 8688 l 17281 8689 l 17275 8692 l 17269 8697 l 17263 8705 l 17258 8717 l 17253 8733 l 17250 8752 l 17250 8775 l 17254 8800 l 17261 8825 l 17271 8849 l 17282 8873 l 17296 8896 l 17310 8918 l 17326 8939 l 17342 8960 l 17358 8980 l 17375 9000 l 17390 9017 l 17404 9033 l 17416 9046 l 17425 9056 l 17432 9062 l 17435 9066 l 17437 9068 l gs col0 s gr % Ellipse 7.500 slw n 17437 7441 695 277 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 17437 7163 m 17436 7164 l 17434 7165 l 17431 7167 l 17427 7171 l 17422 7176 l 17417 7182 l 17412 7190 l 17408 7199 l 17404 7210 l 17401 7223 l 17400 7240 l 17400 7261 l 17403 7285 l 17407 7308 l 17412 7330 l 17418 7349 l 17424 7365 l 17431 7377 l 17436 7387 l 17442 7394 l 17448 7401 l 17454 7407 l 17460 7415 l 17465 7425 l 17471 7438 l 17477 7455 l 17482 7476 l 17487 7501 l 17490 7528 l 17491 7558 l 17490 7585 l 17487 7608 l 17482 7628 l 17477 7646 l 17470 7661 l 17463 7675 l 17457 7688 l 17450 7699 l 17445 7707 l 17441 7713 l 17438 7716 l 17437 7718 l gs col0 s gr % Ellipse 7.500 slw n 17437 6766 695 277 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 17775 6525 m 17774 6526 l 17771 6528 l 17766 6532 l 17759 6537 l 17750 6545 l 17739 6553 l 17726 6563 l 17711 6573 l 17696 6584 l 17678 6596 l 17658 6609 l 17636 6623 l 17611 6639 l 17582 6656 l 17550 6675 l 17521 6691 l 17494 6706 l 17470 6719 l 17451 6729 l 17436 6736 l 17425 6742 l 17417 6746 l 17411 6748 l 17406 6750 l 17401 6752 l 17395 6754 l 17387 6758 l 17375 6764 l 17359 6771 l 17338 6781 l 17313 6794 l 17283 6809 l 17250 6825 l 17217 6841 l 17186 6857 l 17157 6872 l 17130 6885 l 17106 6897 l 17084 6908 l 17063 6919 l 17043 6928 l 17025 6938 l 17008 6946 l 16993 6954 l 16979 6960 l 16968 6966 l 16960 6970 l 16955 6973 l 16951 6974 l 16950 6975 l gs col0 s gr % Ellipse 7.500 slw n 10375 6678 683 273 0 360 DrawEllipse gs col0 s gr /Times-Roman ff 300.00 scf sf 10200 6749 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 10345 6786 m gs 1 -1 sc (0) col0 sh gr % Ellipse n 10375 7353 683 273 0 360 DrawEllipse gs col0 s gr /Times-Roman ff 300.00 scf sf 10200 7424 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 10345 7461 m gs 1 -1 sc (1) col0 sh gr % Ellipse n 10375 8028 683 273 0 360 DrawEllipse gs col0 s gr /Times-Roman ff 300.00 scf sf 10200 8099 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 10345 8136 m gs 1 -1 sc (2) col0 sh gr % Ellipse n 10375 8703 683 273 0 360 DrawEllipse gs col0 s gr /Times-Roman ff 300.00 scf sf 10200 8774 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 165.00 scf sf 10345 8811 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 435.00 scf sf 5681 3860 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 270.00 scf sf 5896 3914 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 435.00 scf sf 6113 4723 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 270.00 scf sf 6329 4777 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 435.00 scf sf 4386 4345 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 270.00 scf sf 4601 4399 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 435.00 scf sf 7462 4345 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 270.00 scf sf 7677 4399 m gs 1 -1 sc (3) col0 sh gr % Ellipse n 6113 4183 2158 863 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 6868 3375 m 6868 3376 l 6867 3379 l 6866 3384 l 6863 3391 l 6860 3401 l 6856 3414 l 6851 3430 l 6844 3449 l 6836 3470 l 6827 3493 l 6817 3517 l 6805 3544 l 6792 3571 l 6778 3599 l 6762 3628 l 6744 3657 l 6723 3687 l 6700 3719 l 6674 3751 l 6645 3785 l 6612 3819 l 6574 3855 l 6533 3892 l 6486 3930 l 6436 3968 l 6390 4000 l 6344 4029 l 6300 4056 l 6257 4080 l 6218 4101 l 6182 4118 l 6150 4132 l 6122 4142 l 6097 4150 l 6075 4156 l 6056 4159 l 6039 4161 l 6024 4162 l 6009 4162 l 5995 4161 l 5982 4160 l 5967 4160 l 5951 4161 l 5933 4162 l 5914 4166 l 5891 4171 l 5864 4178 l 5834 4189 l 5800 4202 l 5762 4218 l 5719 4238 l 5673 4261 l 5623 4287 l 5571 4315 l 5519 4345 l 5464 4378 l 5412 4411 l 5363 4443 l 5317 4475 l 5275 4505 l 5236 4534 l 5200 4562 l 5167 4589 l 5136 4615 l 5107 4640 l 5080 4665 l 5055 4689 l 5031 4712 l 5008 4735 l 4987 4756 l 4968 4777 l 4950 4796 l 4934 4814 l 4919 4830 l 4907 4844 l 4896 4856 l 4888 4866 l 4882 4874 l 4877 4879 l 4874 4882 l 4873 4884 l 4872 4885 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5033 3429 m 5033 3431 l 5032 3434 l 5031 3441 l 5029 3451 l 5026 3465 l 5023 3482 l 5020 3503 l 5017 3526 l 5014 3552 l 5011 3579 l 5009 3608 l 5008 3638 l 5008 3669 l 5010 3701 l 5013 3734 l 5018 3769 l 5026 3806 l 5036 3844 l 5050 3884 l 5067 3926 l 5087 3968 l 5110 4009 l 5136 4047 l 5162 4081 l 5189 4113 l 5215 4141 l 5242 4167 l 5269 4190 l 5296 4211 l 5323 4231 l 5349 4249 l 5376 4266 l 5401 4281 l 5425 4295 l 5447 4308 l 5467 4318 l 5484 4327 l 5497 4334 l 5507 4339 l 5514 4342 l 5517 4344 l 5519 4345 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 6544 3860 m 6545 3861 l 6547 3862 l 6552 3865 l 6559 3870 l 6568 3876 l 6580 3885 l 6594 3895 l 6611 3907 l 6630 3921 l 6651 3936 l 6673 3953 l 6696 3971 l 6720 3990 l 6744 4011 l 6769 4032 l 6794 4055 l 6819 4079 l 6845 4105 l 6871 4132 l 6897 4162 l 6924 4193 l 6951 4228 l 6978 4265 l 7004 4304 l 7030 4345 l 7056 4390 l 7079 4434 l 7099 4477 l 7116 4517 l 7130 4556 l 7142 4592 l 7153 4627 l 7161 4660 l 7168 4691 l 7174 4722 l 7178 4751 l 7182 4780 l 7185 4806 l 7187 4832 l 7189 4855 l 7190 4875 l 7191 4893 l 7191 4908 l 7192 4920 l 7192 4928 l 7192 4934 l 7192 4937 l 7192 4938 l gs col0 s gr [] 0 sd % Ellipse n 19875 7011 1024 407 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 20233 6597 m 20233 6599 l 20232 6602 l 20230 6608 l 20227 6617 l 20223 6629 l 20218 6643 l 20211 6659 l 20204 6677 l 20195 6695 l 20184 6715 l 20172 6735 l 20157 6756 l 20139 6778 l 20118 6801 l 20093 6826 l 20063 6851 l 20029 6877 l 19996 6899 l 19964 6919 l 19934 6935 l 19908 6948 l 19886 6957 l 19868 6963 l 19853 6967 l 19840 6968 l 19829 6968 l 19819 6968 l 19809 6968 l 19798 6968 l 19785 6969 l 19769 6973 l 19749 6978 l 19726 6987 l 19698 7000 l 19665 7015 l 19629 7034 l 19592 7055 l 19552 7079 l 19515 7103 l 19483 7126 l 19454 7147 l 19428 7168 l 19406 7187 l 19385 7205 l 19367 7223 l 19350 7240 l 19335 7255 l 19322 7270 l 19310 7283 l 19301 7293 l 19294 7301 l 19290 7307 l 19287 7310 l 19286 7311 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 19875 6602 m 19874 6603 l 19872 6604 l 19869 6607 l 19864 6610 l 19858 6616 l 19852 6622 l 19845 6630 l 19839 6640 l 19833 6651 l 19828 6664 l 19823 6680 l 19821 6699 l 19820 6722 l 19821 6750 l 19824 6782 l 19829 6812 l 19836 6842 l 19844 6868 l 19852 6890 l 19860 6909 l 19868 6923 l 19875 6935 l 19883 6944 l 19891 6953 l 19898 6961 l 19906 6971 l 19914 6983 l 19921 6999 l 19929 7018 l 19936 7043 l 19943 7072 l 19949 7105 l 19953 7140 l 19955 7179 l 19954 7214 l 19950 7245 l 19945 7272 l 19939 7297 l 19931 7318 l 19923 7338 l 19914 7356 l 19905 7372 l 19897 7386 l 19889 7398 l 19883 7407 l 19879 7413 l 19876 7416 l 19875 7418 l gs col0 s gr % Ellipse 7.500 slw n 20118 8199 1042 416 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 20458 7797 m 20458 7799 l 20457 7802 l 20455 7808 l 20452 7817 l 20448 7829 l 20443 7843 l 20436 7859 l 20429 7877 l 20420 7895 l 20409 7915 l 20397 7935 l 20382 7956 l 20364 7978 l 20343 8001 l 20318 8026 l 20288 8051 l 20254 8077 l 20221 8099 l 20189 8119 l 20159 8135 l 20133 8148 l 20111 8157 l 20093 8163 l 20078 8167 l 20065 8168 l 20054 8168 l 20044 8168 l 20034 8168 l 20023 8168 l 20010 8169 l 19994 8173 l 19974 8178 l 19951 8187 l 19923 8200 l 19890 8215 l 19854 8234 l 19817 8255 l 19777 8279 l 19740 8303 l 19708 8326 l 19679 8347 l 19653 8368 l 19631 8387 l 19610 8405 l 19592 8423 l 19575 8440 l 19560 8455 l 19547 8470 l 19535 8483 l 19526 8493 l 19519 8501 l 19515 8507 l 19512 8510 l 19511 8511 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 20400 7838 m 20398 7838 l 20394 7839 l 20387 7841 l 20377 7844 l 20363 7847 l 20347 7851 l 20328 7856 l 20307 7862 l 20285 7869 l 20262 7876 l 20238 7884 l 20213 7893 l 20187 7904 l 20159 7916 l 20130 7931 l 20099 7947 l 20067 7965 l 20040 7982 l 20014 7998 l 19992 8012 l 19972 8023 l 19956 8032 l 19941 8037 l 19929 8041 l 19919 8043 l 19909 8044 l 19901 8044 l 19893 8044 l 19885 8046 l 19877 8049 l 19869 8055 l 19861 8064 l 19853 8077 l 19846 8094 l 19840 8117 l 19837 8144 l 19837 8175 l 19841 8205 l 19849 8236 l 19860 8266 l 19873 8296 l 19887 8325 l 19904 8353 l 19921 8380 l 19940 8407 l 19959 8433 l 19980 8459 l 20000 8483 l 20020 8507 l 20039 8529 l 20058 8550 l 20074 8568 l 20088 8583 l 20099 8595 l 20108 8604 l 20113 8610 l 20117 8614 l 20118 8615 l gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 9248 6816 m 9555 6728 l 9522 6613 l 9215 6701 l 9215 6701 l 9463 6693 l 9248 6816 l cp eoclip n 9000 6825 m 9525 6675 l gs col0 s gr gr % arrowhead 15.000 slw n 9248 6816 m 9463 6693 l 9215 6701 l 9248 6816 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 9214 7366 m 9531 7411 l 9548 7292 l 9231 7247 l 9231 7247 l 9461 7341 l 9214 7366 l cp eoclip n 9000 7275 m 9525 7350 l gs col0 s gr gr % arrowhead 15.000 slw n 9214 7366 m 9461 7341 l 9231 7247 l 9214 7366 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 9153 8114 m 9470 8083 l 9458 7963 l 9141 7995 l 9141 7995 l 9386 8031 l 9153 8114 l cp eoclip n 8700 8100 m 9450 8025 l gs col0 s gr gr % arrowhead 15.000 slw n 9153 8114 m 9386 8031 l 9141 7995 l 9153 8114 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 9139 8629 m 9454 8686 l 9475 8568 l 9160 8511 l 9160 8511 l 9386 8613 l 9139 8629 l cp eoclip n 8625 8475 m 9450 8625 l gs col0 s gr gr % arrowhead 15.000 slw n 9139 8629 m 9386 8613 l 9160 8511 l 9139 8629 l cp gs 0.00 setgray ef gr col0 s /Times-Roman ff 600.00 scf sf 9600 1875 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 9900 1950 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 600.00 scf sf 10200 3075 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 10500 3150 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 600.00 scf sf 7800 2550 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 8100 2625 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 600.00 scf sf 12075 2550 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 12375 2625 m gs 1 -1 sc (3) col0 sh gr % Ellipse 7.500 slw n 10200 2325 3000 1200 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj [15 45] 45 sd n 11250 1200 m 11250 1201 l 11249 1203 l 11248 1208 l 11246 1215 l 11243 1225 l 11239 1237 l 11234 1253 l 11227 1272 l 11220 1294 l 11211 1318 l 11201 1344 l 11190 1373 l 11177 1403 l 11163 1434 l 11148 1467 l 11131 1501 l 11112 1535 l 11091 1570 l 11068 1606 l 11043 1643 l 11015 1681 l 10984 1720 l 10949 1760 l 10910 1802 l 10867 1845 l 10820 1889 l 10768 1934 l 10711 1980 l 10650 2025 l 10597 2062 l 10544 2097 l 10491 2130 l 10440 2160 l 10392 2186 l 10347 2210 l 10305 2230 l 10267 2247 l 10233 2261 l 10202 2272 l 10174 2280 l 10149 2287 l 10126 2291 l 10106 2293 l 10087 2295 l 10070 2295 l 10054 2294 l 10037 2294 l 10021 2293 l 10005 2293 l 9987 2293 l 9968 2294 l 9947 2296 l 9924 2300 l 9897 2306 l 9868 2314 l 9835 2325 l 9798 2338 l 9757 2355 l 9712 2374 l 9664 2396 l 9611 2422 l 9555 2450 l 9496 2482 l 9436 2515 l 9375 2550 l 9312 2588 l 9251 2626 l 9193 2663 l 9138 2699 l 9087 2735 l 9039 2770 l 8994 2803 l 8952 2835 l 8912 2867 l 8875 2897 l 8840 2927 l 8807 2956 l 8776 2984 l 8746 3012 l 8717 3039 l 8690 3066 l 8665 3091 l 8641 3116 l 8618 3140 l 8596 3163 l 8576 3185 l 8558 3205 l 8542 3223 l 8527 3239 l 8515 3254 l 8504 3266 l 8495 3276 l 8488 3285 l 8483 3291 l 8479 3295 l 8477 3298 l 8476 3299 l 8475 3300 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8700 1275 m 8700 1276 l 8699 1280 l 8698 1285 l 8696 1295 l 8694 1307 l 8691 1323 l 8687 1343 l 8684 1366 l 8680 1392 l 8676 1421 l 8673 1451 l 8670 1484 l 8667 1517 l 8666 1552 l 8665 1589 l 8666 1626 l 8668 1664 l 8672 1704 l 8679 1745 l 8687 1787 l 8698 1832 l 8712 1878 l 8730 1926 l 8751 1976 l 8775 2025 l 8800 2070 l 8827 2112 l 8856 2152 l 8884 2190 l 8913 2224 l 8943 2255 l 8972 2284 l 9001 2311 l 9031 2336 l 9060 2360 l 9089 2382 l 9118 2402 l 9147 2422 l 9176 2440 l 9204 2457 l 9230 2473 l 9256 2487 l 9279 2500 l 9301 2512 l 9320 2522 l 9336 2530 l 9349 2537 l 9359 2542 l 9367 2546 l 9371 2548 l 9374 2549 l 9375 2550 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 10800 1875 m 10801 1876 l 10803 1877 l 10807 1880 l 10814 1884 l 10823 1890 l 10834 1898 l 10849 1909 l 10866 1921 l 10885 1935 l 10907 1951 l 10931 1968 l 10956 1987 l 10983 2008 l 11011 2030 l 11040 2053 l 11069 2077 l 11098 2102 l 11128 2129 l 11159 2157 l 11189 2187 l 11220 2218 l 11251 2251 l 11283 2286 l 11315 2324 l 11347 2364 l 11380 2407 l 11412 2453 l 11444 2501 l 11475 2550 l 11506 2604 l 11534 2657 l 11559 2708 l 11581 2758 l 11600 2805 l 11617 2850 l 11631 2894 l 11643 2935 l 11654 2975 l 11663 3013 l 11670 3050 l 11676 3086 l 11682 3121 l 11686 3155 l 11689 3187 l 11692 3217 l 11695 3246 l 11696 3272 l 11698 3295 l 11698 3316 l 11699 3333 l 11700 3348 l 11700 3358 l 11700 3366 l 11700 3371 l 11700 3374 l 11700 3375 l gs col0 s gr [] 0 sd % Ellipse n 21638 4258 2159 863 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 22393 3449 m 22393 3450 l 22392 3453 l 22391 3458 l 22388 3465 l 22385 3475 l 22381 3488 l 22376 3504 l 22369 3523 l 22361 3544 l 22352 3567 l 22342 3591 l 22330 3617 l 22317 3645 l 22303 3673 l 22287 3701 l 22269 3731 l 22248 3761 l 22225 3793 l 22199 3825 l 22170 3858 l 22137 3893 l 22099 3929 l 22058 3966 l 22011 4004 l 21961 4042 l 21915 4074 l 21869 4103 l 21825 4131 l 21782 4154 l 21743 4175 l 21707 4192 l 21675 4206 l 21647 4217 l 21622 4225 l 21600 4230 l 21581 4234 l 21564 4236 l 21549 4236 l 21534 4236 l 21520 4235 l 21507 4235 l 21492 4235 l 21476 4235 l 21459 4237 l 21439 4240 l 21416 4246 l 21389 4253 l 21359 4264 l 21325 4277 l 21287 4293 l 21244 4313 l 21198 4336 l 21148 4362 l 21096 4390 l 21044 4420 l 20989 4453 l 20937 4486 l 20887 4518 l 20842 4549 l 20800 4580 l 20761 4609 l 20725 4636 l 20692 4663 l 20661 4689 l 20632 4715 l 20605 4739 l 20579 4763 l 20555 4787 l 20533 4809 l 20512 4831 l 20492 4851 l 20474 4871 l 20458 4888 l 20443 4905 l 20431 4919 l 20420 4930 l 20412 4940 l 20406 4948 l 20401 4953 l 20398 4956 l 20397 4958 l 20396 4959 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 20558 3503 m 20558 3505 l 20557 3508 l 20556 3515 l 20554 3525 l 20551 3539 l 20548 3556 l 20545 3577 l 20542 3600 l 20539 3625 l 20536 3653 l 20534 3682 l 20533 3712 l 20533 3743 l 20535 3775 l 20538 3808 l 20543 3843 l 20551 3880 l 20561 3918 l 20575 3958 l 20592 4000 l 20612 4042 l 20635 4083 l 20661 4121 l 20687 4156 l 20714 4187 l 20740 4216 l 20767 4241 l 20794 4265 l 20821 4286 l 20848 4306 l 20874 4324 l 20901 4341 l 20926 4356 l 20950 4370 l 20972 4383 l 20992 4393 l 21009 4402 l 21022 4409 l 21032 4414 l 21039 4417 l 21042 4419 l 21044 4420 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 22069 3934 m 22070 3935 l 22072 3936 l 22077 3939 l 22084 3944 l 22093 3950 l 22105 3959 l 22119 3969 l 22136 3981 l 22155 3995 l 22176 4011 l 22198 4027 l 22221 4045 l 22245 4065 l 22269 4085 l 22294 4107 l 22319 4129 l 22344 4153 l 22370 4179 l 22396 4207 l 22422 4236 l 22449 4268 l 22476 4303 l 22503 4340 l 22529 4379 l 22555 4420 l 22581 4465 l 22604 4509 l 22624 4552 l 22641 4592 l 22655 4631 l 22667 4667 l 22678 4702 l 22686 4735 l 22693 4767 l 22699 4797 l 22703 4827 l 22707 4855 l 22710 4882 l 22712 4907 l 22714 4930 l 22715 4950 l 22716 4968 l 22716 4983 l 22717 4995 l 22717 5003 l 22717 5009 l 22717 5012 l 22717 5013 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 21638 3395 m 21637 3396 l 21635 3397 l 21632 3399 l 21628 3402 l 21622 3407 l 21614 3414 l 21605 3421 l 21596 3431 l 21586 3442 l 21576 3454 l 21566 3468 l 21556 3484 l 21547 3502 l 21539 3523 l 21532 3546 l 21527 3573 l 21523 3603 l 21521 3638 l 21521 3678 l 21524 3723 l 21530 3773 l 21537 3814 l 21545 3855 l 21554 3895 l 21564 3932 l 21574 3965 l 21585 3995 l 21596 4022 l 21607 4045 l 21617 4064 l 21628 4081 l 21638 4096 l 21649 4109 l 21659 4121 l 21669 4133 l 21679 4144 l 21689 4156 l 21699 4170 l 21710 4185 l 21720 4203 l 21730 4224 l 21741 4249 l 21751 4277 l 21761 4310 l 21771 4347 l 21780 4388 l 21787 4433 l 21794 4480 l 21799 4528 l 21802 4583 l 21802 4636 l 21800 4685 l 21796 4730 l 21790 4771 l 21783 4809 l 21774 4844 l 21765 4877 l 21754 4907 l 21743 4936 l 21731 4963 l 21719 4988 l 21706 5011 l 21694 5033 l 21683 5053 l 21672 5070 l 21663 5085 l 21655 5097 l 21648 5106 l 21644 5113 l 21640 5118 l 21639 5120 l 21638 5121 l gs col0 s gr % Ellipse 7.500 slw n 22373 6375 1412 565 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 22867 5846 m 22867 5848 l 22866 5851 l 22864 5858 l 22861 5867 l 22856 5880 l 22851 5896 l 22844 5914 l 22836 5934 l 22826 5956 l 22815 5979 l 22802 6004 l 22787 6029 l 22769 6054 l 22749 6081 l 22725 6110 l 22697 6139 l 22664 6170 l 22626 6202 l 22584 6234 l 22547 6260 l 22509 6283 l 22474 6304 l 22441 6321 l 22413 6335 l 22388 6345 l 22366 6352 l 22348 6357 l 22333 6360 l 22319 6361 l 22307 6361 l 22296 6360 l 22284 6360 l 22272 6360 l 22258 6361 l 22242 6363 l 22223 6368 l 22201 6375 l 22174 6385 l 22143 6398 l 22108 6415 l 22069 6434 l 22027 6457 l 21984 6481 l 21938 6508 l 21896 6536 l 21857 6562 l 21822 6587 l 21790 6611 l 21761 6634 l 21735 6656 l 21711 6677 l 21689 6697 l 21668 6717 l 21649 6736 l 21632 6754 l 21616 6771 l 21602 6786 l 21590 6799 l 21580 6811 l 21572 6820 l 21567 6826 l 21563 6830 l 21561 6833 l 21560 6834 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 21666 5881 m 21666 5883 l 21665 5887 l 21663 5895 l 21661 5906 l 21659 5920 l 21657 5938 l 21654 5957 l 21652 5979 l 21650 6002 l 21650 6027 l 21651 6052 l 21653 6079 l 21657 6106 l 21664 6136 l 21673 6167 l 21686 6200 l 21702 6234 l 21721 6266 l 21741 6296 l 21763 6322 l 21784 6346 l 21805 6366 l 21827 6384 l 21848 6401 l 21870 6416 l 21890 6429 l 21911 6441 l 21929 6452 l 21946 6461 l 21960 6469 l 21971 6474 l 21978 6478 l 21982 6480 l 21984 6481 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 22655 6163 m 22657 6164 l 22660 6166 l 22666 6170 l 22674 6176 l 22686 6185 l 22700 6195 l 22717 6207 l 22735 6221 l 22754 6236 l 22775 6252 l 22796 6270 l 22817 6289 l 22838 6310 l 22860 6332 l 22882 6357 l 22905 6384 l 22928 6414 l 22951 6446 l 22973 6481 l 22993 6516 l 23010 6551 l 23025 6583 l 23037 6614 l 23047 6643 l 23054 6670 l 23061 6695 l 23066 6720 l 23069 6743 l 23072 6765 l 23075 6786 l 23076 6806 l 23077 6823 l 23078 6838 l 23079 6849 l 23079 6858 l 23079 6864 l 23079 6867 l 23079 6869 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 22373 5810 m 22372 5810 l 22371 5811 l 22368 5813 l 22364 5816 l 22359 5820 l 22353 5826 l 22347 5832 l 22339 5840 l 22332 5849 l 22325 5859 l 22318 5871 l 22312 5884 l 22306 5900 l 22302 5918 l 22298 5938 l 22296 5962 l 22296 5990 l 22298 6022 l 22302 6058 l 22308 6092 l 22315 6126 l 22323 6158 l 22332 6186 l 22341 6210 l 22350 6231 l 22358 6248 l 22367 6262 l 22376 6274 l 22384 6284 l 22393 6293 l 22401 6303 l 22410 6313 l 22418 6326 l 22427 6341 l 22435 6359 l 22444 6381 l 22452 6407 l 22460 6438 l 22468 6473 l 22474 6512 l 22478 6552 l 22480 6595 l 22480 6636 l 22477 6673 l 22473 6706 l 22468 6736 l 22461 6763 l 22453 6789 l 22444 6812 l 22435 6833 l 22426 6853 l 22416 6871 l 22407 6888 l 22398 6902 l 22390 6914 l 22384 6924 l 22379 6931 l 22376 6936 l 22374 6939 l 22373 6940 l gs col0 s gr % Ellipse 7.500 slw n 17550 2325 3000 1200 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 18600 1200 m 18600 1201 l 18599 1203 l 18598 1208 l 18596 1215 l 18593 1225 l 18589 1237 l 18584 1253 l 18577 1272 l 18570 1294 l 18561 1318 l 18551 1344 l 18540 1373 l 18527 1403 l 18513 1434 l 18498 1467 l 18481 1501 l 18462 1535 l 18441 1570 l 18418 1606 l 18393 1643 l 18365 1681 l 18334 1720 l 18299 1760 l 18260 1802 l 18217 1845 l 18170 1889 l 18118 1934 l 18061 1980 l 18000 2025 l 17947 2062 l 17894 2097 l 17841 2130 l 17790 2160 l 17742 2186 l 17697 2210 l 17655 2230 l 17617 2247 l 17583 2261 l 17552 2272 l 17524 2280 l 17499 2287 l 17476 2291 l 17456 2293 l 17437 2295 l 17420 2295 l 17404 2294 l 17387 2294 l 17371 2293 l 17355 2293 l 17337 2293 l 17318 2294 l 17297 2296 l 17274 2300 l 17247 2306 l 17218 2314 l 17185 2325 l 17148 2338 l 17107 2355 l 17062 2374 l 17014 2396 l 16961 2422 l 16905 2450 l 16846 2482 l 16786 2515 l 16725 2550 l 16662 2588 l 16601 2626 l 16543 2663 l 16488 2699 l 16437 2735 l 16389 2770 l 16344 2803 l 16302 2835 l 16262 2867 l 16225 2897 l 16190 2927 l 16157 2956 l 16126 2984 l 16096 3012 l 16067 3039 l 16040 3066 l 16015 3091 l 15991 3116 l 15968 3140 l 15946 3163 l 15926 3185 l 15908 3205 l 15892 3223 l 15877 3239 l 15865 3254 l 15854 3266 l 15845 3276 l 15838 3285 l 15833 3291 l 15829 3295 l 15827 3298 l 15826 3299 l 15825 3300 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 16050 1275 m 16050 1276 l 16049 1280 l 16048 1285 l 16046 1295 l 16044 1307 l 16041 1323 l 16037 1343 l 16034 1366 l 16030 1392 l 16026 1421 l 16023 1451 l 16020 1484 l 16017 1517 l 16016 1552 l 16015 1589 l 16016 1626 l 16018 1664 l 16022 1704 l 16029 1745 l 16037 1787 l 16048 1832 l 16062 1878 l 16080 1926 l 16101 1976 l 16125 2025 l 16150 2070 l 16177 2112 l 16206 2152 l 16234 2190 l 16263 2224 l 16293 2255 l 16322 2284 l 16351 2311 l 16381 2336 l 16410 2360 l 16439 2382 l 16468 2402 l 16497 2422 l 16526 2440 l 16554 2457 l 16580 2473 l 16606 2487 l 16629 2500 l 16651 2512 l 16670 2522 l 16686 2530 l 16699 2537 l 16709 2542 l 16717 2546 l 16721 2548 l 16724 2549 l 16725 2550 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 18150 1875 m 18151 1876 l 18153 1877 l 18157 1880 l 18164 1884 l 18173 1890 l 18184 1898 l 18199 1909 l 18216 1921 l 18235 1935 l 18257 1951 l 18281 1968 l 18306 1987 l 18333 2008 l 18361 2030 l 18390 2053 l 18419 2077 l 18448 2102 l 18478 2129 l 18509 2157 l 18539 2187 l 18570 2218 l 18601 2251 l 18633 2286 l 18665 2324 l 18697 2364 l 18730 2407 l 18762 2453 l 18794 2501 l 18825 2550 l 18856 2604 l 18884 2657 l 18909 2708 l 18931 2758 l 18950 2805 l 18967 2850 l 18981 2894 l 18993 2935 l 19004 2975 l 19013 3013 l 19020 3050 l 19026 3086 l 19032 3121 l 19036 3155 l 19039 3187 l 19042 3217 l 19045 3246 l 19046 3272 l 19048 3295 l 19048 3316 l 19049 3333 l 19050 3348 l 19050 3358 l 19050 3366 l 19050 3371 l 19050 3374 l 19050 3375 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 17550 1125 m 17549 1125 l 17548 1126 l 17545 1128 l 17541 1131 l 17535 1136 l 17528 1141 l 17519 1148 l 17510 1157 l 17499 1167 l 17487 1179 l 17475 1192 l 17463 1207 l 17451 1223 l 17440 1242 l 17429 1262 l 17419 1284 l 17410 1309 l 17402 1337 l 17396 1368 l 17391 1404 l 17388 1443 l 17387 1487 l 17389 1537 l 17393 1591 l 17400 1650 l 17408 1700 l 17418 1750 l 17429 1799 l 17440 1845 l 17453 1889 l 17466 1928 l 17479 1964 l 17492 1996 l 17505 2024 l 17518 2049 l 17531 2070 l 17544 2089 l 17556 2106 l 17569 2122 l 17581 2136 l 17594 2150 l 17606 2164 l 17618 2179 l 17631 2194 l 17643 2212 l 17656 2232 l 17669 2255 l 17681 2281 l 17694 2311 l 17706 2346 l 17719 2385 l 17730 2428 l 17742 2476 l 17752 2528 l 17761 2584 l 17769 2641 l 17775 2700 l 17779 2766 l 17780 2830 l 17778 2890 l 17775 2946 l 17769 2998 l 17761 3046 l 17752 3091 l 17742 3133 l 17731 3173 l 17719 3210 l 17705 3245 l 17692 3278 l 17677 3310 l 17662 3340 l 17648 3368 l 17633 3394 l 17619 3418 l 17606 3440 l 17594 3460 l 17583 3477 l 17573 3491 l 17565 3503 l 17559 3512 l 17555 3518 l 17552 3522 l 17551 3524 l 17550 3525 l gs col0 s gr % Ellipse 7.500 slw n 12300 6721 439 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 12300 8071 439 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 12300 8746 439 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 12311 7391 450 179 0 360 DrawEllipse gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 11395 6735 m 11715 6735 l 11715 6615 l 11395 6615 l 11395 6615 l 11635 6675 l 11395 6735 l cp eoclip n 11175 6675 m 11700 6675 l gs col0 s gr gr % arrowhead 15.000 slw n 11395 6735 m 11635 6675 l 11395 6615 l 11395 6735 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 11395 7410 m 11715 7410 l 11715 7290 l 11395 7290 l 11395 7290 l 11635 7350 l 11395 7410 l cp eoclip n 11175 7350 m 11700 7350 l gs col0 s gr gr % arrowhead 15.000 slw n 11395 7410 m 11635 7350 l 11395 7290 l 11395 7410 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 11395 8085 m 11715 8085 l 11715 7965 l 11395 7965 l 11395 7965 l 11635 8025 l 11395 8085 l cp eoclip n 11175 8025 m 11700 8025 l gs col0 s gr gr % arrowhead 15.000 slw n 11395 8085 m 11635 8025 l 11395 7965 l 11395 8085 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 11395 8760 m 11715 8760 l 11715 8640 l 11395 8640 l 11395 8640 l 11635 8700 l 11395 8760 l cp eoclip n 11175 8700 m 11700 8700 l gs col0 s gr gr % arrowhead 15.000 slw n 11395 8760 m 11635 8700 l 11395 8640 l 11395 8760 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 7245 3059 m 7000 3263 l 7076 3355 l 7322 3151 l 7322 3151 l 7100 3259 l 7245 3059 l cp eoclip n 7500 2925 m 7050 3300 l gs col0 s gr gr % arrowhead 15.000 slw n 7245 3059 m 7100 3259 l 7322 3151 l 7245 3059 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 5633 5257 m 5533 5560 l 5647 5598 l 5747 5295 l 5747 5295 l 5615 5504 l 5633 5257 l cp eoclip n 5745 5115 m 5595 5565 l gs col0 s gr gr % arrowhead 15.000 slw n 5633 5257 m 5615 5504 l 5747 5295 l 5633 5257 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 20619 3023 m 20341 2865 l 20282 2969 l 20559 3128 l 20559 3128 l 20381 2957 l 20619 3023 l cp eoclip n 20850 3225 m 20325 2925 l gs col0 s gr gr % arrowhead 15.000 slw n 20619 3023 m 20381 2957 l 20559 3128 l 20619 3023 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 22191 5451 m 22103 5144 l 21988 5177 l 22076 5484 l 22076 5484 l 22068 5237 l 22191 5451 l cp eoclip n 22200 5700 m 22050 5175 l gs col0 s gr gr % arrowhead 15.000 slw n 22191 5451 m 22068 5237 l 22076 5484 l 22191 5451 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 18514 6841 m 18831 6886 l 18848 6767 l 18531 6722 l 18531 6722 l 18761 6816 l 18514 6841 l cp eoclip n 18300 6750 m 18825 6825 l gs col0 s gr gr % arrowhead 15.000 slw n 18514 6841 m 18761 6816 l 18531 6722 l 18514 6841 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 18568 7375 m 18862 7249 l 18815 7138 l 18520 7265 l 18520 7265 l 18765 7226 l 18568 7375 l cp eoclip n 18300 7425 m 18825 7200 l gs col0 s gr gr % arrowhead 15.000 slw n 18568 7375 m 18765 7226 l 18520 7265 l 18568 7375 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 18670 8160 m 18990 8160 l 18990 8040 l 18670 8040 l 18670 8040 l 18910 8100 l 18670 8160 l cp eoclip n 18300 8100 m 18975 8100 l gs col0 s gr gr % arrowhead 15.000 slw n 18670 8160 m 18910 8100 l 18670 8040 l 18670 8160 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 18789 8643 m 19086 8525 l 19041 8413 l 18744 8532 l 18744 8532 l 18990 8499 l 18789 8643 l cp eoclip n 18300 8775 m 19050 8475 l gs col0 s gr gr % arrowhead 15.000 slw n 18789 8643 m 18990 8499 l 18744 8532 l 18789 8643 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj 30.000 slw gs clippath 6078 7933 m 6359 8084 l 6416 7979 l 6134 7827 l 6134 7827 l 6318 7994 l 6078 7933 l cp eoclip n 5400 6900 m 5401 6903 l 5403 6908 l 5406 6919 l 5412 6935 l 5419 6957 l 5429 6984 l 5440 7017 l 5453 7053 l 5467 7092 l 5482 7133 l 5497 7175 l 5513 7216 l 5529 7256 l 5545 7294 l 5560 7330 l 5575 7364 l 5590 7396 l 5605 7425 l 5619 7453 l 5634 7478 l 5649 7502 l 5664 7525 l 5679 7547 l 5696 7567 l 5713 7588 l 5729 7606 l 5746 7624 l 5764 7641 l 5783 7659 l 5803 7676 l 5824 7693 l 5848 7711 l 5873 7729 l 5900 7748 l 5928 7767 l 5959 7787 l 5992 7808 l 6027 7829 l 6063 7851 l 6101 7873 l 6138 7895 l 6176 7916 l 6213 7936 l 6247 7956 l 6278 7973 l 6306 7988 l 6329 8000 l 6347 8010 l 6375 8025 l gs col0 s gr gr % arrowhead 0 slj 15.000 slw n 6078 7933 m 6318 7994 l 6134 7827 l 6078 7933 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj 30.000 slw gs clippath 6443 7024 m 6762 7035 l 6767 6915 l 6447 6904 l 6447 6904 l 6685 6973 l 6443 7024 l cp eoclip n 6150 6825 m 6153 6826 l 6160 6830 l 6171 6835 l 6187 6843 l 6208 6852 l 6231 6863 l 6256 6875 l 6281 6886 l 6305 6897 l 6328 6907 l 6349 6916 l 6368 6923 l 6386 6930 l 6403 6936 l 6419 6941 l 6435 6946 l 6450 6950 l 6467 6954 l 6485 6958 l 6503 6961 l 6523 6963 l 6544 6965 l 6567 6967 l 6592 6969 l 6619 6971 l 6647 6972 l 6675 6973 l 6700 6974 l 6721 6974 l 6750 6975 l gs col0 s gr gr % arrowhead 0 slj 15.000 slw n 6443 7024 m 6685 6973 l 6447 6904 l 6443 7024 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj 30.000 slw gs clippath 21551 7122 m 21857 7027 l 21821 6913 l 21515 7007 l 21515 7007 l 21763 6994 l 21551 7122 l cp eoclip n 21000 7050 m 21001 7050 l 21004 7051 l 21012 7052 l 21026 7055 l 21047 7058 l 21073 7062 l 21102 7067 l 21134 7072 l 21166 7076 l 21196 7080 l 21226 7084 l 21253 7086 l 21278 7088 l 21302 7090 l 21324 7090 l 21346 7090 l 21367 7089 l 21388 7088 l 21407 7086 l 21426 7083 l 21446 7080 l 21467 7076 l 21490 7071 l 21514 7065 l 21540 7059 l 21569 7051 l 21599 7043 l 21631 7034 l 21664 7024 l 21697 7014 l 21729 7005 l 21758 6996 l 21783 6988 l 21825 6975 l gs col0 s gr gr % arrowhead 0 slj 15.000 slw n 21551 7122 m 21763 6994 l 21515 7007 l 21551 7122 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj 30.000 slw gs clippath 22271 7425 m 22410 7137 l 22302 7085 l 22163 7372 l 22163 7372 l 22322 7183 l 22271 7425 l cp eoclip n 21375 8175 m 21377 8174 l 21383 8171 l 21392 8165 l 21406 8157 l 21426 8145 l 21451 8130 l 21480 8113 l 21512 8093 l 21548 8072 l 21584 8049 l 21622 8026 l 21658 8003 l 21694 7980 l 21728 7958 l 21760 7936 l 21791 7916 l 21819 7896 l 21845 7877 l 21869 7858 l 21892 7840 l 21913 7822 l 21933 7804 l 21952 7786 l 21970 7768 l 21988 7750 l 22004 7731 l 22021 7712 l 22037 7692 l 22053 7671 l 22069 7649 l 22085 7625 l 22101 7600 l 22118 7574 l 22135 7545 l 22153 7514 l 22171 7481 l 22189 7447 l 22208 7411 l 22228 7373 l 22247 7336 l 22266 7299 l 22283 7263 l 22299 7230 l 22314 7201 l 22326 7176 l 22335 7156 l 22350 7125 l gs col0 s gr gr % arrowhead 0 slj 15.000 slw n 22271 7425 m 22322 7183 l 22163 7372 l 22271 7425 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 40 % Polyline 0 slj 0 slc 0.000 slw n 6577 7797 m 6525 7797 l 6525 7745 l 6577 7745 l cp gs col7 1.00 shd ef gr % Polyline n 8625 8613 m 8573 8613 l 8573 8561 l 8625 8561 l cp gs col7 1.00 shd ef gr % Polyline n 6952 6672 m 6900 6672 l 6900 6620 l 6952 6620 l cp gs col7 1.00 shd ef gr % Polyline n 9000 7488 m 8948 7488 l 8948 7436 l 9000 7436 l cp gs col7 1.00 shd ef gr % Polyline n 4120 5715 m 4050 5715 l 4050 5645 l 4120 5645 l cp gs col7 1.00 shd ef gr % Polyline n 6900 6825 m 6830 6825 l 6830 6755 l 6900 6755 l cp gs col7 1.00 shd ef gr % Polyline n 9710 6423 m 9675 6423 l 9675 6388 l 9710 6388 l cp gs col7 1.00 shd ef gr % Polyline n 11074 6967 m 11039 6967 l 11039 6932 l 11074 6932 l cp gs col7 1.00 shd ef gr % Polyline n 9710 7098 m 9675 7098 l 9675 7063 l 9710 7063 l cp gs col7 1.00 shd ef gr % Polyline n 11074 7642 m 11039 7642 l 11039 7607 l 11074 7607 l cp gs col7 1.00 shd ef gr % Polyline n 9710 7773 m 9675 7773 l 9675 7738 l 9710 7738 l cp gs col7 1.00 shd ef gr % Polyline n 11074 8317 m 11039 8317 l 11039 8282 l 11074 8282 l cp gs col7 1.00 shd ef gr % Polyline n 9710 8448 m 9675 8448 l 9675 8413 l 9710 8413 l cp gs col7 1.00 shd ef gr % Polyline n 11074 8992 m 11039 8992 l 11039 8957 l 11074 8957 l cp gs col7 1.00 shd ef gr % Polyline n 4008 3375 m 3900 3375 l 3900 3267 l 4008 3267 l cp gs col7 1.00 shd ef gr % Polyline n 8325 5100 m 8217 5100 l 8217 4992 l 8325 4992 l cp gs col7 1.00 shd ef gr % Polyline n 18877 6597 m 18825 6597 l 18825 6545 l 18877 6545 l cp gs col7 1.00 shd ef gr % Polyline n 20925 7413 m 20873 7413 l 20873 7361 l 20925 7361 l cp gs col7 1.00 shd ef gr % Polyline n 19102 7797 m 19050 7797 l 19050 7745 l 19102 7745 l cp gs col7 1.00 shd ef gr % Polyline n 21150 8613 m 21098 8613 l 21098 8561 l 21150 8561 l cp gs col7 1.00 shd ef gr % Polyline n 7275 1200 m 7125 1200 l 7125 1050 l 7275 1050 l cp gs col7 1.00 shd ef gr % Polyline n 13275 3600 m 13125 3600 l 13125 3450 l 13275 3450 l cp gs col7 1.00 shd ef gr % Polyline n 19533 3449 m 19425 3449 l 19425 3341 l 19533 3341 l cp gs col7 1.00 shd ef gr % Polyline n 23850 5175 m 23742 5175 l 23742 5067 l 23850 5067 l cp gs col7 1.00 shd ef gr % Polyline n 20996 5846 m 20925 5846 l 20925 5775 l 20996 5775 l cp gs col7 1.00 shd ef gr % Polyline n 23820 6975 m 23749 6975 l 23749 6904 l 23820 6904 l cp gs col7 1.00 shd ef gr % Polyline n 14625 1200 m 14475 1200 l 14475 1050 l 14625 1050 l cp gs col7 1.00 shd ef gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/p_f_band.eps0000644000302600021200000005115313303015264020703 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Thu Dec 28 22:07:04 2006 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 916 113 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 113 moveto 0 0 lineto 916 0 lineto 916 113 lineto closepath clip newpath -250.3 454.6 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Ellipse 7.500 slw n 17214 6600 2158 848 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj 0 slc [15 45] 45 sd n 17969 5807 m 17969 5808 l 17968 5811 l 17967 5815 l 17964 5823 l 17961 5833 l 17957 5845 l 17952 5861 l 17945 5879 l 17937 5900 l 17928 5923 l 17918 5947 l 17906 5972 l 17893 5999 l 17879 6027 l 17862 6055 l 17844 6084 l 17824 6114 l 17801 6144 l 17775 6176 l 17745 6209 l 17712 6243 l 17675 6278 l 17633 6315 l 17586 6352 l 17536 6389 l 17490 6420 l 17444 6449 l 17399 6476 l 17357 6499 l 17318 6519 l 17282 6536 l 17250 6550 l 17222 6560 l 17197 6568 l 17175 6573 l 17156 6577 l 17139 6579 l 17123 6579 l 17109 6579 l 17095 6578 l 17081 6578 l 17066 6577 l 17051 6578 l 17033 6580 l 17013 6583 l 16990 6588 l 16964 6596 l 16934 6606 l 16899 6619 l 16861 6635 l 16818 6654 l 16772 6676 l 16722 6702 l 16670 6730 l 16618 6759 l 16563 6791 l 16511 6824 l 16461 6855 l 16416 6886 l 16374 6916 l 16335 6944 l 16299 6972 l 16265 6998 l 16235 7024 l 16206 7049 l 16179 7073 l 16153 7096 l 16129 7119 l 16107 7142 l 16086 7163 l 16066 7183 l 16048 7202 l 16032 7220 l 16017 7235 l 16005 7249 l 15994 7261 l 15986 7270 l 15980 7278 l 15975 7283 l 15972 7286 l 15971 7288 l 15970 7289 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 16132 5859 m 16132 5861 l 16131 5864 l 16130 5871 l 16128 5881 l 16125 5894 l 16122 5911 l 16119 5931 l 16116 5954 l 16113 5980 l 16110 6007 l 16109 6035 l 16108 6064 l 16108 6095 l 16109 6127 l 16113 6159 l 16118 6194 l 16126 6230 l 16136 6267 l 16150 6307 l 16167 6348 l 16187 6389 l 16210 6429 l 16236 6466 l 16262 6500 l 16288 6531 l 16315 6559 l 16342 6584 l 16369 6607 l 16396 6628 l 16422 6647 l 16449 6665 l 16475 6682 l 16500 6697 l 16524 6710 l 16546 6722 l 16566 6733 l 16583 6742 l 16596 6748 l 16606 6753 l 16613 6756 l 16616 6758 l 16618 6759 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 17645 6282 m 17646 6283 l 17648 6284 l 17653 6287 l 17660 6292 l 17669 6298 l 17681 6306 l 17695 6316 l 17712 6328 l 17731 6342 l 17752 6357 l 17774 6374 l 17797 6391 l 17821 6410 l 17845 6430 l 17870 6451 l 17895 6474 l 17920 6497 l 17946 6523 l 17972 6550 l 17998 6579 l 18025 6610 l 18052 6644 l 18079 6680 l 18105 6719 l 18131 6759 l 18157 6803 l 18180 6847 l 18200 6888 l 18217 6928 l 18231 6966 l 18243 7001 l 18254 7035 l 18262 7068 l 18269 7099 l 18275 7129 l 18279 7158 l 18283 7186 l 18286 7212 l 18288 7237 l 18290 7259 l 18291 7280 l 18292 7297 l 18292 7312 l 18293 7323 l 18293 7331 l 18293 7337 l 18293 7340 l 18293 7341 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 17214 5753 m 17213 5754 l 17211 5755 l 17208 5757 l 17204 5760 l 17198 5765 l 17190 5771 l 17181 5779 l 17171 5788 l 17161 5799 l 17151 5811 l 17141 5825 l 17131 5841 l 17122 5859 l 17114 5879 l 17107 5902 l 17101 5928 l 17097 5958 l 17095 5993 l 17095 6032 l 17098 6076 l 17104 6125 l 17111 6165 l 17119 6206 l 17128 6245 l 17138 6281 l 17148 6314 l 17159 6343 l 17170 6369 l 17181 6392 l 17191 6411 l 17202 6428 l 17212 6442 l 17223 6455 l 17233 6467 l 17243 6478 l 17253 6489 l 17264 6501 l 17274 6514 l 17284 6530 l 17294 6547 l 17305 6568 l 17315 6592 l 17326 6620 l 17336 6652 l 17345 6688 l 17354 6729 l 17362 6772 l 17369 6819 l 17374 6866 l 17377 6920 l 17378 6972 l 17376 7020 l 17372 7064 l 17366 7105 l 17358 7142 l 17350 7177 l 17340 7209 l 17330 7238 l 17318 7266 l 17306 7293 l 17294 7317 l 17282 7340 l 17270 7362 l 17259 7381 l 17248 7398 l 17239 7412 l 17231 7424 l 17224 7434 l 17220 7440 l 17216 7445 l 17215 7447 l 17214 7448 l gs col0 s gr % Polyline n 11813 5795 m 11814 5796 l 11817 5797 l 11821 5800 l 11826 5804 l 11833 5810 l 11839 5816 l 11846 5825 l 11851 5834 l 11855 5846 l 11858 5860 l 11858 5878 l 11856 5900 l 11850 5925 l 11842 5949 l 11832 5972 l 11822 5991 l 11811 6007 l 11800 6020 l 11789 6029 l 11779 6037 l 11769 6043 l 11758 6050 l 11748 6057 l 11738 6067 l 11729 6080 l 11720 6098 l 11712 6119 l 11707 6145 l 11705 6173 l 11708 6204 l 11715 6229 l 11725 6248 l 11737 6260 l 11750 6266 l 11764 6269 l 11778 6270 l 11792 6270 l 11805 6273 l 11819 6280 l 11831 6293 l 11841 6313 l 11848 6341 l 11850 6375 l 11848 6403 l 11843 6430 l 11835 6454 l 11825 6474 l 11814 6491 l 11802 6505 l 11789 6517 l 11775 6527 l 11762 6536 l 11749 6544 l 11736 6554 l 11724 6565 l 11713 6577 l 11704 6593 l 11697 6611 l 11694 6631 l 11694 6653 l 11700 6675 l 11712 6696 l 11729 6713 l 11748 6724 l 11767 6730 l 11786 6732 l 11804 6730 l 11822 6727 l 11840 6723 l 11857 6718 l 11876 6714 l 11895 6712 l 11915 6713 l 11937 6716 l 11959 6724 l 11981 6735 l 12000 6750 l 12015 6766 l 12024 6782 l 12030 6796 l 12032 6807 l 12032 6816 l 12030 6824 l 12026 6830 l 12022 6835 l 12018 6840 l 12013 6847 l 12008 6854 l 12002 6864 l 11997 6876 l 11990 6892 l 11983 6909 l 11974 6928 l 11960 6951 l 11946 6969 l 11931 6980 l 11917 6985 l 11904 6986 l 11891 6985 l 11879 6984 l 11867 6985 l 11857 6991 l 11849 7003 l 11846 7023 l 11850 7050 l 11859 7072 l 11871 7093 l 11887 7110 l 11903 7124 l 11921 7134 l 11939 7142 l 11956 7148 l 11974 7152 l 11992 7157 l 12009 7163 l 12026 7171 l 12041 7183 l 12055 7200 l 12067 7221 l 12074 7246 l 12075 7275 l 12070 7301 l 12060 7326 l 12047 7349 l 12031 7370 l 12012 7390 l 11992 7409 l 11970 7426 l 11947 7442 l 11924 7458 l 11901 7472 l 11879 7485 l 11859 7496 l 11843 7505 l 11830 7512 l 11821 7517 l 11815 7520 l 11813 7521 l gs col0 s gr % Ellipse 7.500 slw n 6338 6658 2159 863 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 7093 5849 m 7093 5850 l 7092 5853 l 7091 5858 l 7088 5865 l 7085 5875 l 7081 5888 l 7076 5904 l 7069 5923 l 7061 5944 l 7052 5967 l 7042 5991 l 7030 6017 l 7017 6045 l 7003 6073 l 6987 6101 l 6969 6131 l 6948 6161 l 6925 6193 l 6899 6225 l 6870 6258 l 6837 6293 l 6799 6329 l 6758 6366 l 6711 6404 l 6661 6442 l 6615 6474 l 6569 6503 l 6525 6531 l 6482 6554 l 6443 6575 l 6407 6592 l 6375 6606 l 6347 6617 l 6322 6625 l 6300 6630 l 6281 6634 l 6264 6636 l 6249 6636 l 6234 6636 l 6220 6635 l 6207 6635 l 6192 6635 l 6176 6635 l 6159 6637 l 6139 6640 l 6116 6646 l 6089 6653 l 6059 6664 l 6025 6677 l 5987 6693 l 5944 6713 l 5898 6736 l 5848 6762 l 5796 6790 l 5744 6820 l 5689 6853 l 5637 6886 l 5587 6918 l 5542 6949 l 5500 6980 l 5461 7009 l 5425 7036 l 5392 7063 l 5361 7089 l 5332 7115 l 5305 7139 l 5279 7163 l 5255 7187 l 5233 7209 l 5212 7231 l 5192 7251 l 5174 7271 l 5158 7288 l 5143 7305 l 5131 7319 l 5120 7330 l 5112 7340 l 5106 7348 l 5101 7353 l 5098 7356 l 5097 7358 l 5096 7359 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5258 5903 m 5258 5905 l 5257 5908 l 5256 5915 l 5254 5925 l 5251 5939 l 5248 5956 l 5245 5977 l 5242 6000 l 5239 6025 l 5236 6053 l 5234 6082 l 5233 6112 l 5233 6143 l 5235 6175 l 5238 6208 l 5243 6243 l 5251 6280 l 5261 6318 l 5275 6358 l 5292 6400 l 5312 6442 l 5335 6483 l 5361 6521 l 5387 6556 l 5414 6587 l 5440 6616 l 5467 6641 l 5494 6665 l 5521 6686 l 5548 6706 l 5574 6724 l 5601 6741 l 5626 6756 l 5650 6770 l 5672 6783 l 5692 6793 l 5709 6802 l 5722 6809 l 5732 6814 l 5739 6817 l 5742 6819 l 5744 6820 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 6769 6334 m 6770 6335 l 6772 6336 l 6777 6339 l 6784 6344 l 6793 6350 l 6805 6359 l 6819 6369 l 6836 6381 l 6855 6395 l 6876 6411 l 6898 6427 l 6921 6445 l 6945 6465 l 6969 6485 l 6994 6507 l 7019 6529 l 7044 6553 l 7070 6579 l 7096 6607 l 7122 6636 l 7149 6668 l 7176 6703 l 7203 6740 l 7229 6779 l 7255 6820 l 7281 6865 l 7304 6909 l 7324 6952 l 7341 6992 l 7355 7031 l 7367 7067 l 7378 7102 l 7386 7135 l 7393 7167 l 7399 7197 l 7403 7227 l 7407 7255 l 7410 7282 l 7412 7307 l 7414 7330 l 7415 7350 l 7416 7368 l 7416 7383 l 7417 7395 l 7417 7403 l 7417 7409 l 7417 7412 l 7417 7413 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6338 5795 m 6339 5796 l 6342 5797 l 6346 5800 l 6351 5804 l 6358 5810 l 6364 5816 l 6371 5825 l 6376 5834 l 6380 5846 l 6383 5860 l 6383 5878 l 6381 5900 l 6375 5925 l 6367 5949 l 6357 5972 l 6347 5991 l 6336 6007 l 6325 6020 l 6314 6029 l 6304 6037 l 6294 6043 l 6283 6050 l 6273 6057 l 6263 6067 l 6254 6080 l 6245 6098 l 6237 6119 l 6232 6145 l 6230 6173 l 6233 6204 l 6240 6229 l 6250 6248 l 6262 6260 l 6275 6266 l 6289 6269 l 6303 6270 l 6317 6270 l 6330 6273 l 6344 6280 l 6356 6293 l 6366 6313 l 6373 6341 l 6375 6375 l 6373 6403 l 6368 6430 l 6360 6454 l 6350 6474 l 6339 6491 l 6327 6505 l 6314 6517 l 6300 6527 l 6287 6536 l 6274 6544 l 6261 6554 l 6249 6565 l 6238 6577 l 6229 6593 l 6222 6611 l 6219 6631 l 6219 6653 l 6225 6675 l 6237 6696 l 6254 6713 l 6273 6724 l 6292 6730 l 6311 6732 l 6329 6730 l 6347 6727 l 6365 6723 l 6382 6718 l 6401 6714 l 6420 6712 l 6440 6713 l 6462 6716 l 6484 6724 l 6506 6735 l 6525 6750 l 6540 6766 l 6549 6782 l 6555 6796 l 6557 6807 l 6557 6816 l 6555 6824 l 6551 6830 l 6547 6835 l 6543 6840 l 6538 6847 l 6533 6854 l 6527 6864 l 6522 6876 l 6515 6892 l 6508 6909 l 6499 6928 l 6485 6951 l 6471 6969 l 6456 6980 l 6442 6985 l 6429 6986 l 6416 6985 l 6404 6984 l 6392 6985 l 6382 6991 l 6374 7003 l 6371 7023 l 6375 7050 l 6384 7072 l 6396 7093 l 6412 7110 l 6428 7124 l 6446 7134 l 6464 7142 l 6481 7148 l 6499 7152 l 6517 7157 l 6534 7163 l 6551 7171 l 6566 7183 l 6580 7200 l 6592 7221 l 6599 7246 l 6600 7275 l 6595 7301 l 6585 7326 l 6572 7349 l 6556 7370 l 6537 7390 l 6517 7409 l 6495 7426 l 6472 7442 l 6449 7458 l 6426 7472 l 6404 7485 l 6384 7496 l 6368 7505 l 6355 7512 l 6346 7517 l 6340 7520 l 6338 7521 l gs col0 s gr % Ellipse 7.500 slw n 11813 6658 2159 863 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 12568 5849 m 12568 5850 l 12567 5853 l 12566 5858 l 12563 5865 l 12560 5875 l 12556 5888 l 12551 5904 l 12544 5923 l 12536 5944 l 12527 5967 l 12517 5991 l 12505 6017 l 12492 6045 l 12478 6073 l 12462 6101 l 12444 6131 l 12423 6161 l 12400 6193 l 12374 6225 l 12345 6258 l 12312 6293 l 12274 6329 l 12233 6366 l 12186 6404 l 12136 6442 l 12090 6474 l 12044 6503 l 12000 6531 l 11957 6554 l 11918 6575 l 11882 6592 l 11850 6606 l 11822 6617 l 11797 6625 l 11775 6630 l 11756 6634 l 11739 6636 l 11724 6636 l 11709 6636 l 11695 6635 l 11682 6635 l 11667 6635 l 11651 6635 l 11634 6637 l 11614 6640 l 11591 6646 l 11564 6653 l 11534 6664 l 11500 6677 l 11462 6693 l 11419 6713 l 11373 6736 l 11323 6762 l 11271 6790 l 11219 6820 l 11164 6853 l 11112 6886 l 11062 6918 l 11017 6949 l 10975 6980 l 10936 7009 l 10900 7036 l 10867 7063 l 10836 7089 l 10807 7115 l 10780 7139 l 10754 7163 l 10730 7187 l 10708 7209 l 10687 7231 l 10667 7251 l 10649 7271 l 10633 7288 l 10618 7305 l 10606 7319 l 10595 7330 l 10587 7340 l 10581 7348 l 10576 7353 l 10573 7356 l 10572 7358 l 10571 7359 l gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 40 % Polyline 0 slj 0 slc 0.000 slw n 15108 5807 m 15000 5807 l 15000 5700 l 15108 5700 l cp gs col7 1.00 shd ef gr % Polyline n 19425 7500 m 19317 7500 l 19317 7394 l 19425 7394 l cp gs col7 1.00 shd ef gr % Polyline n 9600 7575 m 11400 7575 l 11400 5700 l 9600 5700 l cp gs col7 1.00 shd ef gr % Polyline n 12300 7575 m 14025 7575 l 14025 5700 l 12300 5700 l cp gs col7 1.00 shd ef gr % here ends figure; % % here starts figure with depth 20 % Polyline 2 slj 0 slc 7.500 slw n 11400 7500 m 11400 7499 l 11401 7495 l 11404 7486 l 11409 7470 l 11414 7449 l 11420 7425 l 11426 7400 l 11431 7376 l 11435 7354 l 11438 7333 l 11440 7314 l 11440 7297 l 11439 7280 l 11438 7263 l 11435 7247 l 11432 7232 l 11428 7215 l 11423 7198 l 11418 7180 l 11412 7162 l 11406 7143 l 11400 7123 l 11394 7104 l 11388 7084 l 11382 7065 l 11377 7046 l 11372 7028 l 11368 7010 l 11365 6992 l 11363 6975 l 11361 6958 l 11360 6940 l 11359 6922 l 11360 6904 l 11360 6885 l 11362 6866 l 11364 6846 l 11366 6827 l 11369 6807 l 11371 6788 l 11374 6770 l 11377 6752 l 11380 6735 l 11383 6718 l 11385 6703 l 11388 6688 l 11390 6673 l 11391 6658 l 11393 6642 l 11394 6627 l 11395 6611 l 11395 6594 l 11395 6578 l 11395 6561 l 11394 6544 l 11393 6526 l 11391 6509 l 11388 6492 l 11386 6475 l 11383 6459 l 11379 6442 l 11375 6425 l 11371 6409 l 11367 6393 l 11362 6377 l 11357 6359 l 11351 6341 l 11345 6322 l 11340 6302 l 11334 6282 l 11328 6262 l 11323 6241 l 11318 6221 l 11313 6201 l 11309 6182 l 11305 6163 l 11302 6145 l 11300 6127 l 11299 6110 l 11298 6094 l 11298 6076 l 11300 6058 l 11302 6040 l 11306 6021 l 11312 6000 l 11319 5979 l 11327 5955 l 11337 5930 l 11347 5905 l 11358 5880 l 11368 5857 l 11377 5838 l 11383 5825 l 11387 5817 l 11389 5814 l 11389 5813 l gs col0 s gr % Polyline n 12300 7500 m 12300 7499 l 12301 7496 l 12305 7488 l 12310 7474 l 12317 7453 l 12327 7428 l 12337 7399 l 12348 7368 l 12359 7337 l 12369 7306 l 12378 7278 l 12386 7252 l 12393 7227 l 12399 7205 l 12403 7184 l 12407 7164 l 12410 7144 l 12413 7125 l 12414 7106 l 12415 7086 l 12416 7067 l 12415 7046 l 12415 7025 l 12414 7003 l 12412 6981 l 12410 6959 l 12407 6936 l 12404 6913 l 12401 6890 l 12398 6867 l 12394 6844 l 12390 6822 l 12386 6801 l 12383 6779 l 12379 6758 l 12375 6738 l 12372 6718 l 12368 6699 l 12365 6679 l 12361 6659 l 12357 6638 l 12353 6617 l 12349 6595 l 12346 6573 l 12342 6551 l 12337 6528 l 12333 6506 l 12329 6485 l 12326 6464 l 12322 6443 l 12318 6424 l 12314 6405 l 12310 6387 l 12307 6370 l 12303 6353 l 12300 6338 l 12296 6318 l 12291 6300 l 12287 6282 l 12283 6263 l 12278 6245 l 12274 6227 l 12270 6210 l 12266 6192 l 12263 6175 l 12260 6159 l 12257 6143 l 12255 6127 l 12253 6113 l 12252 6098 l 12252 6085 l 12252 6071 l 12253 6056 l 12254 6039 l 12257 6022 l 12260 6004 l 12265 5983 l 12271 5960 l 12278 5934 l 12286 5908 l 12294 5882 l 12301 5860 l 12306 5843 l 12309 5832 l 12311 5828 l 12311 5827 l gs col0 s gr % here ends figure; % % here starts figure with depth 10 % Polyline 0 slj 0 slc 7.500 slw n 10275 6525 m 10575 6825 l gs col0 s gr % Polyline n 10575 6525 m 10275 6825 l gs col0 s gr /Times-Roman ff 600.00 scf sf 10125 6300 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 10425 6375 m gs 1 -1 sc (0) col0 sh gr % Polyline n 13200 6450 m 13500 6750 l gs col0 s gr % Polyline n 13500 6450 m 13200 6750 l gs col0 s gr /Times-Roman ff 600.00 scf sf 13050 6300 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 360.00 scf sf 13350 6375 m gs 1 -1 sc (3) col0 sh gr % Polyline 30.000 slw gs clippath 14470 6660 m 14790 6660 l 14790 6540 l 14470 6540 l 14470 6540 l 14710 6600 l 14470 6660 l cp eoclip n 14025 6600 m 14775 6600 l gs col0 s gr gr % arrowhead 15.000 slw n 14470 6660 m 14710 6600 l 14470 6540 l 14470 6660 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 9295 6660 m 9615 6660 l 9615 6540 l 9295 6540 l 9295 6540 l 9535 6600 l 9295 6660 l cp eoclip n 8850 6600 m 9600 6600 l gs col0 s gr gr % arrowhead 15.000 slw n 9295 6660 m 9535 6600 l 9295 6540 l 9295 6660 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 2 % Polyline 0 slj 0 slc 7.500 slw n 11443 5900 m 10989 6267 l 11363 6040 l gs col0 s gr % Polyline n 11356 6200 m 10983 6267 l 11443 6340 l gs col0 s gr % Polyline n 11443 6500 m 10989 6260 l 11443 6640 l gs col0 s gr % Polyline n 11436 6793 m 10983 7093 l 11436 6940 l gs col0 s gr % Polyline n 11436 7100 m 10989 7093 l 11509 7240 l gs col0 s gr % Polyline n 11509 7400 m 10983 7093 l gs col0 s gr % Polyline n 12184 5900 m 12717 6040 l 12111 6040 l gs col0 s gr % Polyline n 12184 6193 m 12717 6040 l 12184 6340 l gs col0 s gr % Polyline n 12257 6500 m 12717 6940 l 12264 6640 l gs col0 s gr % Polyline n 12331 6800 m 12717 6940 l 12337 6940 l gs col0 s gr % Polyline n 12331 7100 m 12711 6940 l 12337 7240 l gs col0 s gr % Polyline n 12257 7393 m 12717 6940 l gs col0 s gr % here ends figure; % % here starts figure with depth 0 % Ellipse 7.500 slw n 10988 6263 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 10988 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12713 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12713 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 5888 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11363 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11363 6188 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 6338 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 6488 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 6638 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 6788 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11438 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11513 7238 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11513 7388 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12188 5888 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12113 6038 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12188 6188 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12188 6338 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12263 6488 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12263 6638 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12338 6788 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12338 6938 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12338 7088 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12338 7238 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 12263 7388 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/p_e.tex0000644000302600021200000000575713303015264017740 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_e.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Exemples d'utilisation % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Examples} \label{sec-examples} This section contains chosen examples destined to show how the programs of the \ptscotch\ project interoperate and can be combined. It is assumed that parallel programs are launched by means of the {\tt mpirun} command, which comprises a {\tt -np} option to set the number of processes on which to run them. Character ``{\tt\bf \%}'' in bold represents the shell prompt. \begin{itemize} \item Create a distributed source graph file of $7$ fragments from the centralized source graph file {\tt brol.grf} stored in the current directory of process $0$ of the MPI environment, and stores the resulting fragments in files labeled with the proper number of processors and processor ranks. \\ \noi {\tt {\bf\%} mpirun -np 7 dgscat brol.grf brol-\%p-\%r.dgr } \item Compute on $3$ processors the ordering of graph {\tt brol.grf}, to be saved in a file called {\tt brol.ord} written by process $0$ of the MPI environment. \\ \noi {\tt {\bf\%} mpirun -np 7 dgord brol.grf brol.ord } \item Compute on $4$ processors the first three levels of nested dissection of graph {\tt brol.grf}, and create an {\sc Open Inventor} file called {\tt brol.iv} to show the resulting separators and leaves. \\ \noi {\tt {\bf\%} mpirun -np 4 dgord brol.grf /dev/null '-On\{sep=\lbt /(levl\lbt <\lbt 3)\lbt ?\lbt m\{\lbt asc=\lbt b\{strat=\lbt q\{\lbt strat=\lbt f\}\},\lbt low=\lbt q\{\lbt strat=\lbt h\},\lbt seq=\lbt q\{\lbt strat=\lbt m\{low=\lbt h,asc=\lbt b\{\lbt strat=\lbt f\}\}\}\};,\lbt ole=\lbt s,\lbt ose=\lbt s,\lbt osq=\lbt n\{\lbt sep=\lbt /(levl\lbt <\lbt 3)\lbt ?\lbt m\{asc=\lbt b\{\lbt strat=\lbt f\},\lbt low=\lbt h\};\}\}' -mbrol.map \\ {\bf\%} gout brol.grf brol.xyz brol.map brol.iv } \item Compute on $4$ processors an ordering of the compressed graph {\tt brol.\lbt grf.\lbt gz}, and output the resulting ordering on compressed form. \\ \noi {\tt {\bf\%} mpirun -np 4 dgord brol.grf.gz brol.ord.gz } \item Recompile a program that used \parmetis\ so that it uses \ptscotch\ instead. \\ \noi {\tt {\bf\%} mpicc brol.c -o brol -I\$\{parmetisdir\} -lptscotchparmetis -lptscotch -lptscotcherr -lparmetis -lmetis -lm} \spa \noi Note that the ``{\tt -lptscotch\lbt parmetis}'' option must be placed before the ``{\tt -lparmetis}'' one, so that routines that are redefined by \ptscotch\ are selected instead of their \parmetis\ counterpart. When no other \parmetis\ routines than the ones redefined by \ptscotch\ are used, the ``{\tt -lparmetis -lmetis}'' options can be omitted. The ``{\tt -I\$\{parmetisdir\}} option may be necessary to provide the path to the original {\tt parmetis.h} include file, which contains the prototypes of all of the \parmetis\ routines. \end{itemize} scotch_6.0.9/doc/src/ptscotch/s_f_mult.fig0000644000302600021200000000413213303015264020734 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Inches Letter 100.00 Single -2 1200 2 5 1 0 1 -1 -1 0 0 -1 0.000 0 1 1 0 3839.175 2023.260 600 1800 1500 4275 4200 5250 0 0 1.00 60.00 120.00 5 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 1 6360.825 2023.260 9600 1800 8700 4275 6000 5250 0 0 1.00 60.00 120.00 6 600 4425 1650 4950 4 0 -1 0 0 0 16 0.0000 4 255 1260 600 4725 Coarsening\001 4 0 -1 0 0 0 16 0.0000 4 255 630 825 4950 phase\001 -6 6 8550 4425 9825 4950 4 0 -1 0 0 0 16 0.0000 4 255 1545 8550 4725 Uncoarsening\001 4 0 -1 0 0 0 16 0.0000 4 255 630 8925 4950 phase\001 -6 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2100 1800 1200 600 2100 1800 3300 1200 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2550 3300 1020 510 2550 3300 3570 2790 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8100 1800 1200 600 8100 1800 9300 1200 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 7650 3300 1020 510 7650 3300 8670 2790 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 5100 5100 555 270 5100 5100 5640 4830 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 6750 4500 765 390 6750 4500 7545 4110 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 3450 4500 765 390 3450 4500 4245 4110 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 4935 5355 5085 5250 5040 5040 5220 4965 5190 4830 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 6600 4875 6750 4725 6675 4350 6900 4200 6840 4110 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 6 6690 4890 6675 4725 6675 4650 6750 4350 6825 4200 6735 4110 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 7575 3810 7575 3600 7650 3150 7800 2925 7710 2790 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 8100 2400 8025 2100 8325 1575 8175 1350 8250 1200 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 8025 2400 8250 1875 8175 1500 8250 1350 8175 1200 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 7695 3810 7500 3450 7800 3075 7725 2925 7830 2790 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6600 1725 8025 2025 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6450 1200 8100 1575 4 0 -1 0 0 0 16 0.0000 4 255 2055 4350 5700 Initial partitioning\001 4 0 -1 0 0 0 16 0.0000 4 255 2085 4800 1800 Projected partition\001 4 0 -1 0 0 0 16 0.0000 4 255 1905 4800 1275 Refined partition\001 scotch_6.0.9/doc/src/ptscotch/p_f_nedi.eps0000644000302600021200000005420613303015264020720 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Thu Aug 17 01:43:45 2006 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 1024 226 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 226 moveto 0 0 lineto 1024 0 lineto 1024 226 lineto closepath clip newpath -13.4 274.6 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 70 % Ellipse 7.500 slw n 14197 1500 1588 635 0 360 DrawEllipse gs col0 s gr % here ends figure; % % here starts figure with depth 60 % Polyline 0 slj 0 slc 0.000 slw n 12570 1262 m 14197 1262 l 14197 825 l 12570 825 l cp gs col7 1.00 shd ef gr % Polyline n 12570 2175 m 14197 2175 l 14197 1738 l 12570 1738 l cp gs col7 1.00 shd ef gr % Polyline n 12848 1818 m 12570 1818 l 12570 1182 l 12848 1182 l cp gs col7 1.00 shd ef gr % here ends figure; % % here starts figure with depth 50 /Times-Roman ff 315.00 scf sf 1535 2462 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 1694 2501 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 315.00 scf sf 1852 3097 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 2011 3137 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 315.00 scf sf 582 2819 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 741 2859 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 315.00 scf sf 2845 2819 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 3004 2859 m gs 1 -1 sc (3) col0 sh gr % Ellipse 7.500 slw n 1852 2700 1588 635 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj 0 slc [15 45] 45 sd n 2408 2104 m 2408 2105 l 2407 2108 l 2405 2114 l 2403 2122 l 2399 2134 l 2394 2148 l 2388 2165 l 2381 2184 l 2372 2206 l 2362 2228 l 2351 2252 l 2338 2276 l 2323 2302 l 2306 2328 l 2287 2355 l 2264 2383 l 2238 2413 l 2208 2443 l 2174 2475 l 2134 2508 l 2091 2541 l 2052 2568 l 2013 2593 l 1976 2615 l 1941 2633 l 1910 2649 l 1883 2661 l 1859 2670 l 1838 2677 l 1820 2681 l 1805 2683 l 1791 2684 l 1779 2684 l 1767 2683 l 1755 2683 l 1742 2683 l 1728 2684 l 1712 2686 l 1694 2690 l 1672 2696 l 1646 2705 l 1617 2716 l 1583 2731 l 1545 2749 l 1504 2770 l 1460 2794 l 1416 2819 l 1369 2847 l 1325 2876 l 1284 2903 l 1246 2929 l 1212 2954 l 1181 2978 l 1153 3001 l 1127 3024 l 1103 3045 l 1081 3066 l 1060 3086 l 1040 3106 l 1022 3124 l 1006 3142 l 991 3158 l 978 3172 l 967 3185 l 958 3195 l 951 3203 l 946 3209 l 943 3213 l 941 3215 l 940 3216 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1059 2144 m 1059 2146 l 1058 2151 l 1056 2159 l 1054 2172 l 1051 2188 l 1048 2208 l 1045 2230 l 1043 2254 l 1041 2280 l 1040 2308 l 1041 2336 l 1043 2366 l 1048 2398 l 1055 2431 l 1066 2466 l 1080 2503 l 1098 2541 l 1117 2574 l 1138 2604 l 1159 2632 l 1181 2656 l 1202 2678 l 1224 2698 l 1246 2716 l 1268 2732 l 1289 2747 l 1310 2761 l 1331 2773 l 1350 2784 l 1368 2794 l 1383 2802 l 1395 2809 l 1405 2813 l 1411 2816 l 1414 2818 l 1416 2819 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2170 2462 m 2171 2463 l 2174 2465 l 2179 2468 l 2187 2474 l 2197 2481 l 2210 2490 l 2226 2501 l 2243 2514 l 2262 2528 l 2282 2544 l 2302 2561 l 2323 2578 l 2345 2598 l 2367 2618 l 2389 2640 l 2412 2664 l 2435 2690 l 2458 2719 l 2481 2750 l 2505 2783 l 2527 2819 l 2549 2859 l 2569 2897 l 2585 2934 l 2599 2969 l 2610 3001 l 2618 3031 l 2625 3060 l 2631 3088 l 2635 3114 l 2639 3139 l 2641 3163 l 2643 3185 l 2644 3204 l 2645 3221 l 2646 3234 l 2646 3244 l 2646 3251 l 2646 3254 l 2646 3256 l gs col0 s gr [] 0 sd % Ellipse n 6652 2700 1588 635 0 360 DrawEllipse gs col0 s gr % Polyline [15 45] 45 sd n 7208 2104 m 7208 2105 l 7207 2108 l 7205 2114 l 7203 2122 l 7199 2134 l 7194 2148 l 7188 2165 l 7181 2184 l 7172 2206 l 7162 2228 l 7151 2252 l 7138 2276 l 7123 2302 l 7106 2328 l 7087 2355 l 7064 2383 l 7038 2413 l 7008 2443 l 6974 2475 l 6934 2508 l 6891 2541 l 6852 2568 l 6813 2593 l 6776 2615 l 6741 2633 l 6710 2649 l 6683 2661 l 6659 2670 l 6638 2677 l 6620 2681 l 6605 2683 l 6591 2684 l 6579 2684 l 6567 2683 l 6555 2683 l 6542 2683 l 6528 2684 l 6512 2686 l 6494 2690 l 6472 2696 l 6446 2705 l 6417 2716 l 6383 2731 l 6345 2749 l 6304 2770 l 6260 2794 l 6216 2819 l 6169 2847 l 6125 2876 l 6084 2903 l 6046 2929 l 6012 2954 l 5981 2978 l 5953 3001 l 5927 3024 l 5903 3045 l 5881 3066 l 5860 3086 l 5840 3106 l 5822 3124 l 5806 3142 l 5791 3158 l 5778 3172 l 5767 3185 l 5758 3195 l 5751 3203 l 5746 3209 l 5743 3213 l 5741 3215 l 5740 3216 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5859 2144 m 5859 2146 l 5858 2151 l 5856 2159 l 5854 2172 l 5851 2188 l 5848 2208 l 5845 2230 l 5843 2254 l 5841 2280 l 5840 2308 l 5841 2336 l 5843 2366 l 5848 2398 l 5855 2431 l 5866 2466 l 5880 2503 l 5898 2541 l 5917 2574 l 5938 2604 l 5959 2632 l 5981 2656 l 6002 2678 l 6024 2698 l 6046 2716 l 6068 2732 l 6089 2747 l 6110 2761 l 6131 2773 l 6150 2784 l 6168 2794 l 6183 2802 l 6195 2809 l 6205 2813 l 6211 2816 l 6214 2818 l 6216 2819 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 6970 2462 m 6971 2463 l 6974 2465 l 6979 2468 l 6987 2474 l 6997 2481 l 7010 2490 l 7026 2501 l 7043 2514 l 7062 2528 l 7082 2544 l 7102 2561 l 7123 2578 l 7145 2598 l 7167 2618 l 7189 2640 l 7212 2664 l 7235 2690 l 7258 2719 l 7281 2750 l 7305 2783 l 7327 2819 l 7349 2859 l 7369 2897 l 7385 2934 l 7399 2969 l 7410 3001 l 7418 3031 l 7425 3060 l 7431 3088 l 7435 3114 l 7439 3139 l 7441 3163 l 7443 3185 l 7444 3204 l 7445 3221 l 7446 3234 l 7446 3244 l 7446 3251 l 7446 3254 l 7446 3256 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6652 2065 m 6651 2066 l 6650 2067 l 6647 2069 l 6642 2072 l 6637 2077 l 6630 2082 l 6623 2090 l 6614 2098 l 6606 2108 l 6598 2120 l 6590 2133 l 6583 2148 l 6577 2165 l 6572 2185 l 6569 2209 l 6567 2236 l 6566 2267 l 6568 2303 l 6573 2343 l 6579 2378 l 6586 2413 l 6594 2446 l 6603 2477 l 6613 2503 l 6622 2526 l 6631 2546 l 6640 2562 l 6649 2576 l 6658 2588 l 6667 2598 l 6676 2608 l 6685 2618 l 6693 2628 l 6702 2641 l 6711 2655 l 6720 2673 l 6729 2693 l 6738 2718 l 6746 2747 l 6754 2781 l 6762 2818 l 6768 2858 l 6772 2899 l 6774 2948 l 6774 2993 l 6771 3035 l 6766 3072 l 6760 3106 l 6752 3137 l 6743 3165 l 6733 3191 l 6723 3215 l 6712 3237 l 6701 3258 l 6690 3276 l 6680 3293 l 6672 3306 l 6664 3317 l 6659 3325 l 6655 3331 l 6653 3334 l 6652 3335 l gs col0 s gr /Times-Roman ff 315.00 scf sf 9579 4019 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 9736 4059 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 315.00 scf sf 11821 4019 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 11978 4059 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 315.00 scf sf 10287 3701 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 10445 3741 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 315.00 scf sf 10445 4337 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 10601 4376 m gs 1 -1 sc (2) col0 sh gr % Ellipse 7.500 slw n 10837 3900 1573 635 0 360 DrawEllipse gs col0 s gr % Polyline 0 slj n 11781 3900 m 11624 4059 l gs col0 s gr % Polyline n 11624 3900 m 11781 4059 l gs col0 s gr % Polyline 2 slj [15 45] 45 sd n 10051 3344 m 10051 3346 l 10050 3351 l 10048 3359 l 10046 3372 l 10043 3388 l 10040 3408 l 10037 3430 l 10035 3454 l 10033 3480 l 10032 3508 l 10033 3536 l 10036 3566 l 10040 3598 l 10048 3631 l 10058 3666 l 10072 3703 l 10090 3741 l 10109 3774 l 10129 3804 l 10150 3832 l 10172 3856 l 10193 3878 l 10215 3898 l 10236 3916 l 10258 3932 l 10279 3947 l 10300 3961 l 10321 3973 l 10340 3984 l 10357 3994 l 10372 4002 l 10384 4009 l 10394 4013 l 10400 4016 l 10403 4018 l 10405 4019 l gs col0 s gr [] 0 sd % Polyline 0 slj n 10051 1494 m 9894 1651 l gs col0 s gr % Polyline n 9894 1494 m 10051 1651 l gs col0 s gr /Times-Roman ff 315.00 scf sf 9579 1611 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 9736 1651 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 315.00 scf sf 11821 1611 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 11978 1651 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 315.00 scf sf 10877 1179 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 11034 1218 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 315.00 scf sf 11113 1887 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 11270 1926 m gs 1 -1 sc (2) col0 sh gr % Ellipse n 10837 1494 1573 629 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj [15 45] 45 sd n 11152 1258 m 11153 1259 l 11156 1261 l 11161 1264 l 11169 1269 l 11179 1277 l 11192 1286 l 11207 1297 l 11224 1309 l 11243 1323 l 11263 1339 l 11283 1355 l 11304 1373 l 11326 1392 l 11347 1412 l 11369 1434 l 11392 1458 l 11414 1484 l 11437 1512 l 11461 1543 l 11484 1576 l 11506 1611 l 11528 1650 l 11548 1689 l 11564 1725 l 11577 1759 l 11588 1791 l 11597 1821 l 11604 1850 l 11609 1877 l 11613 1903 l 11617 1928 l 11619 1952 l 11621 1973 l 11622 1992 l 11623 2009 l 11624 2022 l 11624 2032 l 11624 2039 l 11624 2042 l 11624 2044 l gs col0 s gr [] 0 sd /Times-Roman ff 315.00 scf sf 14475 1897 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 14634 1937 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 315.00 scf sf 15097 3701 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 15256 3741 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 315.00 scf sf 14400 4010 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 14558 4050 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 315.00 scf sf 15300 1610 m gs 1 -1 sc (P) col0 sh gr /Times-Roman ff 195.00 scf sf 15458 1650 m gs 1 -1 sc (3) col0 sh gr % Ellipse n 15652 3900 1588 635 0 360 DrawEllipse gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 4420 2760 m 4740 2760 l 4740 2640 l 4420 2640 l 4420 2640 l 4660 2700 l 4420 2760 l cp eoclip n 3825 2700 m 4725 2700 l gs col0 s gr gr % arrowhead 15.000 slw n 4420 2760 m 4660 2700 l 4420 2640 l 4420 2760 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13420 1560 m 13740 1560 l 13740 1440 l 13420 1440 l 13420 1440 l 13660 1500 l 13420 1560 l cp eoclip n 12825 1500 m 13725 1500 l gs col0 s gr gr % arrowhead 15.000 slw n 13420 1560 m 13660 1500 l 13420 1440 l 13420 1560 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 13420 3960 m 13740 3960 l 13740 3840 l 13420 3840 l 13420 3840 l 13660 3900 l 13420 3960 l cp eoclip n 12825 3900 m 13725 3900 l gs col0 s gr gr % arrowhead 15.000 slw n 13420 3960 m 13660 3900 l 13420 3840 l 13420 3960 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj 7.500 slw [15 45] 45 sd n 14859 3344 m 14859 3346 l 14858 3351 l 14856 3359 l 14854 3372 l 14851 3388 l 14848 3408 l 14845 3430 l 14843 3454 l 14841 3480 l 14840 3508 l 14841 3536 l 14843 3566 l 14848 3598 l 14855 3631 l 14866 3666 l 14880 3703 l 14898 3741 l 14917 3774 l 14938 3804 l 14959 3832 l 14981 3856 l 15002 3878 l 15024 3898 l 15046 3916 l 15068 3932 l 15089 3947 l 15110 3961 l 15131 3973 l 15150 3984 l 15168 3994 l 15183 4002 l 15195 4009 l 15205 4013 l 15211 4016 l 15214 4018 l 15216 4019 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 15300 1050 m 15298 1050 l 15294 1050 l 15288 1051 l 15277 1051 l 15262 1052 l 15244 1053 l 15222 1054 l 15197 1056 l 15169 1057 l 15139 1059 l 15108 1062 l 15075 1064 l 15042 1067 l 15009 1070 l 14975 1074 l 14941 1078 l 14906 1082 l 14872 1088 l 14837 1093 l 14802 1100 l 14767 1108 l 14733 1116 l 14700 1125 l 14670 1135 l 14645 1144 l 14622 1154 l 14604 1163 l 14589 1172 l 14577 1181 l 14567 1190 l 14560 1199 l 14554 1207 l 14550 1215 l 14547 1223 l 14545 1230 l 14545 1238 l 14544 1245 l 14545 1251 l 14546 1257 l 14546 1262 l 14547 1266 l 14548 1270 l 14549 1272 l 14550 1274 l 14550 1275 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 14550 1275 m 14552 1276 l 14556 1278 l 14563 1281 l 14573 1287 l 14586 1294 l 14602 1303 l 14620 1313 l 14639 1324 l 14660 1337 l 14681 1351 l 14703 1366 l 14726 1383 l 14749 1401 l 14773 1422 l 14799 1445 l 14824 1472 l 14850 1500 l 14874 1529 l 14894 1556 l 14911 1580 l 14924 1600 l 14934 1616 l 14940 1628 l 14945 1637 l 14948 1644 l 14950 1650 l 14952 1656 l 14954 1663 l 14957 1672 l 14961 1684 l 14966 1700 l 14973 1720 l 14982 1744 l 14991 1771 l 15000 1800 l 15009 1836 l 15015 1868 l 15018 1896 l 15019 1920 l 15019 1941 l 15017 1959 l 15014 1976 l 15011 1990 l 15007 2003 l 15004 2012 l 15002 2019 l 15001 2023 l 15000 2025 l gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 47 % Polyline 2 slj 0 slc 7.500 slw [15 90] 90 sd n 11365 923 m 11365 925 l 11364 928 l 11363 935 l 11362 944 l 11360 955 l 11356 969 l 11352 985 l 11346 1003 l 11339 1021 l 11330 1042 l 11318 1064 l 11303 1089 l 11283 1116 l 11259 1146 l 11231 1179 l 11206 1205 l 11180 1231 l 11154 1255 l 11128 1277 l 11103 1297 l 11079 1317 l 11055 1335 l 11032 1352 l 11009 1368 l 10986 1383 l 10965 1398 l 10945 1411 l 10927 1423 l 10911 1433 l 10898 1441 l 10889 1447 l 10882 1451 l 10879 1453 l 10877 1454 l gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 40 % Polyline 0 slj 0 slc 0.000 slw n 304 2104 m 225 2104 l 225 2025 l 304 2025 l cp gs col7 1.00 shd ef gr % Polyline n 3480 3375 m 3401 3375 l 3401 3296 l 3480 3296 l cp gs col7 1.00 shd ef gr % Polyline n 5104 2104 m 5025 2104 l 5025 2025 l 5104 2025 l cp gs col7 1.00 shd ef gr % Polyline n 8280 3375 m 8201 3375 l 8201 3296 l 8280 3296 l cp gs col7 1.00 shd ef gr % Polyline n 10837 4575 m 12450 4575 l 12450 4138 l 10837 4138 l cp gs col7 1.00 shd ef gr % Polyline n 10837 3662 m 12450 3662 l 12450 3225 l 10837 3225 l cp gs col7 1.00 shd ef gr % Polyline n 12450 4218 m 12175 4218 l 12175 3582 l 12450 3582 l cp gs col7 1.00 shd ef gr % Polyline n 9303 3304 m 9225 3304 l 9225 3225 l 9303 3225 l cp gs col7 1.00 shd ef gr % Polyline 2 slj 7.500 slw [15 90] 90 sd n 10877 3860 m 10875 3860 l 10870 3860 l 10861 3860 l 10850 3861 l 10835 3861 l 10818 3863 l 10799 3864 l 10779 3867 l 10757 3870 l 10732 3875 l 10705 3881 l 10674 3890 l 10641 3900 l 10612 3910 l 10587 3919 l 10568 3926 l 10554 3931 l 10546 3933 l 10543 3933 l 10542 3932 l 10543 3930 l 10543 3928 l 10541 3928 l 10536 3931 l 10525 3937 l 10507 3948 l 10481 3966 l 10447 3989 l 10405 4019 l 10375 4041 l 10344 4065 l 10314 4088 l 10284 4112 l 10256 4135 l 10228 4158 l 10200 4181 l 10174 4203 l 10148 4226 l 10122 4248 l 10097 4269 l 10073 4291 l 10050 4311 l 10028 4331 l 10008 4349 l 9989 4365 l 9973 4380 l 9960 4392 l 9950 4401 l 9942 4408 l 9937 4412 l 9934 4415 l 9933 4416 l gs col0 s gr [] 0 sd % Polyline 0 slj 0.000 slw n 12450 2162 m 12371 2162 l 12371 2083 l 12450 2083 l cp gs col7 1.00 shd ef gr % Polyline n 9225 1258 m 10837 1258 l 10837 825 l 9225 825 l cp gs col7 1.00 shd ef gr % Polyline n 9225 2162 m 10837 2162 l 10837 1729 l 9225 1729 l cp gs col7 1.00 shd ef gr % Polyline n 9500 1808 m 9225 1808 l 9225 1179 l 9500 1179 l cp gs col7 1.00 shd ef gr % Polyline n 15825 2175 m 15746 2175 l 15746 2096 l 15825 2096 l cp gs col7 1.00 shd ef gr % Polyline n 15652 4575 m 17280 4575 l 17280 4138 l 15652 4138 l cp gs col7 1.00 shd ef gr % Polyline n 15652 3662 m 17280 3662 l 17280 3225 l 15652 3225 l cp gs col7 1.00 shd ef gr % Polyline n 17280 4218 m 17002 4218 l 17002 3582 l 17280 3582 l cp gs col7 1.00 shd ef gr % Polyline n 14104 3304 m 14025 3304 l 14025 3225 l 14104 3225 l cp gs col7 1.00 shd ef gr % here ends figure; % % here starts figure with depth 37 % Polyline 2 slj 0 slc 7.500 slw [15 90] 90 sd n 14850 4425 m 14852 4425 l 14856 4423 l 14864 4422 l 14875 4419 l 14889 4415 l 14907 4410 l 14926 4404 l 14947 4397 l 14969 4390 l 14991 4381 l 15014 4372 l 15036 4361 l 15059 4348 l 15083 4333 l 15106 4316 l 15129 4297 l 15150 4275 l 15171 4249 l 15187 4224 l 15200 4199 l 15209 4176 l 15215 4154 l 15219 4133 l 15221 4112 l 15221 4093 l 15221 4075 l 15220 4058 l 15219 4044 l 15218 4033 l 15217 4026 l 15216 4021 l 15216 4019 l gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 30 % Polyline 2 slj 0 slc 15.000 slw n 10837 3265 m 10836 3266 l 10835 3267 l 10832 3269 l 10828 3272 l 10822 3277 l 10815 3282 l 10808 3290 l 10800 3298 l 10792 3308 l 10784 3320 l 10776 3333 l 10769 3348 l 10763 3365 l 10758 3385 l 10755 3409 l 10753 3436 l 10752 3467 l 10754 3503 l 10759 3543 l 10765 3578 l 10772 3613 l 10780 3646 l 10789 3677 l 10798 3703 l 10807 3726 l 10817 3746 l 10826 3762 l 10835 3776 l 10843 3788 l 10852 3798 l 10861 3808 l 10870 3818 l 10878 3828 l 10887 3841 l 10896 3855 l 10905 3873 l 10913 3893 l 10922 3918 l 10931 3947 l 10939 3981 l 10946 4018 l 10952 4058 l 10956 4099 l 10958 4148 l 10958 4193 l 10955 4235 l 10950 4272 l 10944 4306 l 10936 4337 l 10927 4365 l 10918 4391 l 10907 4415 l 10896 4437 l 10886 4458 l 10875 4476 l 10865 4493 l 10856 4506 l 10849 4517 l 10844 4525 l 10840 4531 l 10838 4534 l 10837 4535 l gs col0 s gr % Polyline n 10837 864 m 10836 865 l 10835 866 l 10832 868 l 10828 871 l 10822 876 l 10815 881 l 10808 889 l 10800 897 l 10792 907 l 10784 919 l 10776 932 l 10769 947 l 10763 964 l 10758 984 l 10755 1007 l 10753 1034 l 10752 1065 l 10754 1100 l 10759 1140 l 10765 1175 l 10772 1210 l 10780 1242 l 10789 1272 l 10798 1299 l 10807 1321 l 10816 1341 l 10825 1357 l 10834 1370 l 10843 1382 l 10852 1392 l 10860 1402 l 10869 1412 l 10878 1422 l 10886 1434 l 10895 1449 l 10904 1466 l 10913 1486 l 10921 1511 l 10930 1540 l 10938 1573 l 10945 1609 l 10951 1649 l 10955 1690 l 10957 1738 l 10957 1783 l 10954 1824 l 10949 1862 l 10943 1895 l 10935 1926 l 10927 1954 l 10917 1980 l 10907 2004 l 10896 2026 l 10885 2046 l 10875 2065 l 10865 2081 l 10856 2094 l 10849 2105 l 10844 2113 l 10840 2119 l 10838 2122 l 10837 2123 l gs col0 s gr % Polyline 0 slj 30.000 slw gs clippath 8559 3564 m 8830 3733 l 8894 3632 l 8623 3462 l 8623 3462 l 8795 3641 l 8559 3564 l cp eoclip n 8250 3300 m 8850 3675 l gs col0 s gr gr % arrowhead 15.000 slw n 8559 3564 m 8795 3641 l 8623 3462 l 8559 3564 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 8623 1937 m 8894 1767 l 8830 1666 l 8559 1835 l 8559 1835 l 8795 1759 l 8623 1937 l cp eoclip n 8250 2100 m 8850 1725 l gs col0 s gr gr % arrowhead 15.000 slw n 8623 1937 m 8795 1759 l 8559 1835 l 8623 1937 l cp gs 0.00 setgray ef gr col0 s % Polyline 2 slj n 14197 865 m 14196 866 l 14195 867 l 14192 869 l 14187 872 l 14182 877 l 14175 882 l 14168 890 l 14159 898 l 14151 908 l 14143 920 l 14135 933 l 14128 948 l 14122 965 l 14117 985 l 14114 1009 l 14112 1036 l 14111 1067 l 14113 1103 l 14118 1143 l 14124 1178 l 14131 1213 l 14139 1246 l 14148 1277 l 14158 1303 l 14167 1326 l 14176 1346 l 14185 1362 l 14194 1376 l 14203 1388 l 14212 1398 l 14221 1408 l 14230 1418 l 14238 1428 l 14247 1441 l 14256 1455 l 14265 1473 l 14274 1493 l 14283 1518 l 14291 1547 l 14299 1581 l 14307 1618 l 14313 1658 l 14317 1699 l 14319 1748 l 14319 1793 l 14316 1835 l 14311 1872 l 14305 1906 l 14297 1937 l 14288 1965 l 14278 1991 l 14268 2015 l 14257 2037 l 14246 2058 l 14235 2076 l 14225 2093 l 14217 2106 l 14209 2117 l 14204 2125 l 14200 2131 l 14198 2134 l 14197 2135 l gs col0 s gr % Polyline n 15652 3265 m 15651 3266 l 15650 3267 l 15647 3269 l 15642 3272 l 15637 3277 l 15630 3282 l 15623 3290 l 15614 3298 l 15606 3308 l 15598 3320 l 15590 3333 l 15583 3348 l 15577 3365 l 15572 3385 l 15569 3409 l 15567 3436 l 15566 3467 l 15568 3503 l 15573 3543 l 15579 3578 l 15586 3613 l 15594 3646 l 15603 3677 l 15613 3703 l 15622 3726 l 15631 3746 l 15640 3762 l 15649 3776 l 15658 3788 l 15667 3798 l 15676 3808 l 15685 3818 l 15693 3828 l 15702 3841 l 15711 3855 l 15720 3873 l 15729 3893 l 15738 3918 l 15746 3947 l 15754 3981 l 15762 4018 l 15768 4058 l 15772 4099 l 15774 4148 l 15774 4193 l 15771 4235 l 15766 4272 l 15760 4306 l 15752 4337 l 15743 4365 l 15733 4391 l 15723 4415 l 15712 4437 l 15701 4458 l 15690 4476 l 15680 4493 l 15672 4506 l 15664 4517 l 15659 4525 l 15655 4531 l 15653 4534 l 15652 4535 l gs col0 s gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/p_f_gr2.eps0000644000302600021200000011724413303015264020475 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha7 %%CreationDate: Tue Feb 5 15:59:38 2008 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 776 866 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 866 moveto 0 0 lineto 776 0 lineto 776 866 lineto closepath clip newpath 0.7 864.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 55 % Polyline 0 slj 0 slc 0.000 slw n 4050 4800 m 3750 4800 l 3750 4500 l 4050 4500 l cp gs 0.50 setgray ef gr % Polyline n 7650 4800 m 7350 4800 l 7350 4500 l 7650 4500 l cp gs 0.50 setgray ef gr % Polyline n 11250 4800 m 10950 4800 l 10950 4500 l 11250 4500 l cp gs 0.50 setgray ef gr % here ends figure; % % here starts figure with depth 50 % Polyline 0 slj 0 slc 7.500 slw n 12900 300 m 0 300 l 0 0 l 12900 0 l cp gs 0.50 setgray ef gr gs col0 s gr % Polyline n 4800 8100 m 3900 7200 l 4800 6300 l 3900 5400 l 3900 7200 l 3000 6300 l 3900 5400 l gs col0 s gr % Polyline n 6600 5400 m 7500 6300 l 6600 7200 l 7500 8100 l 7500 6300 l 8400 7200 l 7500 8100 l gs col0 s gr % Polyline n 7500 6300 m 8400 5400 l gs col0 s gr % Polyline n 10200 8100 m 11100 7200 l 10200 6300 l 11100 5400 l 11100 7200 l 12000 6300 l 11100 5400 l gs col0 s gr % Polyline n 2100 14400 m 2100 4800 l gs col0 s gr % Polyline n 5700 14400 m 5700 4800 l gs col0 s gr % Polyline n 9300 14400 m 9300 4800 l gs col0 s gr % Polyline n 12900 4800 m 0 4800 l 0 4500 l 12900 4500 l cp gs 0.50 setgray ef gr gs col0 s gr % Polyline n 8400 1200 m 7500 2100 l gs col0 s gr % Polyline n 6600 1200 m 7500 2100 l 6600 3000 l 5700 2100 l 6600 1200 l 6600 3000 l 7500 3900 l 7500 2100 l 8400 3000 l 9300 2100 l 8400 1200 l 8400 3000 l 7500 3900 l gs col0 s gr % here ends figure; % % here starts figure with depth 40 /Times-Roman ff 285.00 scf sf 174 231 m gs 1 -1 sc (Duplicated data) col7 sh gr % Polyline 2 slj 0 slc 7.500 slw [15 45] 45 sd n 4425 5175 m 4424 5178 l 4420 5185 l 4415 5197 l 4408 5214 l 4398 5236 l 4388 5260 l 4377 5287 l 4366 5314 l 4356 5341 l 4347 5367 l 4339 5391 l 4332 5415 l 4326 5437 l 4322 5459 l 4318 5481 l 4315 5502 l 4313 5525 l 4311 5544 l 4310 5564 l 4309 5584 l 4309 5606 l 4309 5628 l 4309 5651 l 4310 5676 l 4310 5700 l 4311 5726 l 4312 5752 l 4313 5778 l 4313 5805 l 4314 5832 l 4315 5858 l 4315 5884 l 4316 5909 l 4316 5934 l 4316 5959 l 4316 5982 l 4315 6005 l 4314 6028 l 4313 6050 l 4311 6072 l 4309 6094 l 4306 6115 l 4303 6137 l 4300 6160 l 4297 6183 l 4294 6206 l 4290 6229 l 4287 6253 l 4283 6277 l 4280 6302 l 4277 6326 l 4275 6351 l 4272 6375 l 4271 6399 l 4269 6423 l 4269 6446 l 4269 6470 l 4269 6493 l 4270 6516 l 4272 6539 l 4275 6563 l 4278 6584 l 4282 6606 l 4287 6629 l 4292 6653 l 4297 6677 l 4304 6702 l 4310 6728 l 4318 6755 l 4325 6782 l 4333 6810 l 4340 6839 l 4348 6868 l 4356 6897 l 4364 6926 l 4371 6955 l 4378 6984 l 4384 7012 l 4390 7040 l 4396 7068 l 4401 7095 l 4405 7122 l 4408 7148 l 4411 7174 l 4413 7200 l 4414 7226 l 4414 7252 l 4413 7278 l 4412 7305 l 4410 7332 l 4408 7360 l 4404 7388 l 4401 7416 l 4396 7445 l 4391 7474 l 4386 7503 l 4381 7532 l 4375 7561 l 4369 7590 l 4362 7618 l 4356 7645 l 4350 7672 l 4344 7698 l 4338 7723 l 4332 7747 l 4327 7771 l 4322 7794 l 4317 7816 l 4313 7838 l 4308 7861 l 4304 7884 l 4300 7907 l 4297 7930 l 4294 7954 l 4291 7979 l 4289 8005 l 4287 8032 l 4285 8061 l 4283 8091 l 4281 8122 l 4280 8154 l 4279 8186 l 4278 8217 l 4277 8246 l 4276 8270 l 4276 8291 l 4275 8306 l 4275 8317 l 4275 8322 l 4275 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7875 5175 m 7874 5178 l 7872 5186 l 7868 5199 l 7863 5218 l 7856 5243 l 7848 5273 l 7839 5306 l 7831 5341 l 7823 5375 l 7815 5409 l 7809 5442 l 7804 5472 l 7800 5501 l 7797 5528 l 7795 5554 l 7795 5578 l 7795 5602 l 7797 5626 l 7800 5650 l 7803 5670 l 7807 5691 l 7812 5712 l 7817 5734 l 7822 5756 l 7829 5779 l 7835 5803 l 7843 5828 l 7850 5854 l 7858 5880 l 7865 5907 l 7873 5934 l 7881 5961 l 7889 5989 l 7896 6017 l 7903 6045 l 7909 6072 l 7915 6100 l 7921 6127 l 7926 6155 l 7930 6182 l 7933 6208 l 7936 6235 l 7938 6263 l 7938 6286 l 7939 6310 l 7939 6334 l 7938 6359 l 7937 6385 l 7935 6411 l 7933 6438 l 7931 6466 l 7928 6494 l 7925 6523 l 7922 6552 l 7918 6582 l 7915 6612 l 7911 6643 l 7907 6673 l 7903 6704 l 7899 6735 l 7896 6765 l 7892 6795 l 7889 6825 l 7886 6855 l 7883 6884 l 7881 6912 l 7879 6941 l 7877 6968 l 7876 6996 l 7875 7023 l 7875 7050 l 7875 7079 l 7876 7108 l 7878 7138 l 7879 7168 l 7882 7198 l 7885 7229 l 7888 7261 l 7892 7292 l 7896 7324 l 7900 7357 l 7905 7389 l 7909 7422 l 7914 7454 l 7919 7486 l 7924 7517 l 7929 7548 l 7934 7579 l 7938 7608 l 7943 7637 l 7947 7665 l 7950 7691 l 7954 7717 l 7956 7742 l 7959 7766 l 7961 7790 l 7963 7813 l 7964 7839 l 7964 7864 l 7964 7890 l 7963 7915 l 7961 7941 l 7958 7968 l 7954 7995 l 7949 8024 l 7943 8054 l 7937 8086 l 7930 8118 l 7922 8151 l 7914 8184 l 7905 8215 l 7898 8244 l 7891 8270 l 7885 8290 l 7881 8306 l 7877 8317 l 7876 8322 l 7875 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7125 5175 m 7124 5178 l 7120 5185 l 7115 5197 l 7108 5214 l 7098 5236 l 7088 5260 l 7077 5287 l 7066 5314 l 7056 5341 l 7047 5367 l 7039 5391 l 7032 5415 l 7026 5437 l 7022 5459 l 7018 5481 l 7015 5502 l 7013 5525 l 7011 5544 l 7010 5564 l 7009 5584 l 7009 5606 l 7009 5628 l 7009 5651 l 7010 5676 l 7010 5700 l 7011 5726 l 7012 5752 l 7013 5778 l 7013 5805 l 7014 5832 l 7015 5858 l 7015 5884 l 7016 5909 l 7016 5934 l 7016 5959 l 7016 5982 l 7015 6005 l 7014 6028 l 7013 6050 l 7011 6072 l 7009 6094 l 7006 6115 l 7003 6137 l 7000 6160 l 6997 6183 l 6994 6206 l 6990 6229 l 6987 6253 l 6983 6277 l 6980 6302 l 6977 6326 l 6975 6351 l 6972 6375 l 6971 6399 l 6969 6423 l 6969 6446 l 6969 6470 l 6969 6493 l 6970 6516 l 6972 6539 l 6975 6563 l 6978 6584 l 6982 6606 l 6987 6629 l 6992 6653 l 6997 6677 l 7004 6702 l 7010 6728 l 7018 6755 l 7025 6782 l 7033 6810 l 7040 6839 l 7048 6868 l 7056 6897 l 7064 6926 l 7071 6955 l 7078 6984 l 7084 7012 l 7090 7040 l 7096 7068 l 7101 7095 l 7105 7122 l 7108 7148 l 7111 7174 l 7113 7200 l 7114 7226 l 7114 7252 l 7113 7278 l 7112 7305 l 7110 7332 l 7108 7360 l 7104 7388 l 7101 7416 l 7096 7445 l 7091 7474 l 7086 7503 l 7081 7532 l 7075 7561 l 7069 7590 l 7062 7618 l 7056 7645 l 7050 7672 l 7044 7698 l 7038 7723 l 7032 7747 l 7027 7771 l 7022 7794 l 7017 7816 l 7013 7838 l 7008 7861 l 7004 7884 l 7000 7907 l 6997 7930 l 6994 7954 l 6991 7979 l 6989 8005 l 6987 8032 l 6985 8061 l 6983 8091 l 6981 8122 l 6980 8154 l 6979 8186 l 6978 8217 l 6977 8246 l 6976 8270 l 6976 8291 l 6975 8306 l 6975 8317 l 6975 8322 l 6975 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 10575 5175 m 10574 5178 l 10572 5186 l 10568 5199 l 10563 5218 l 10556 5243 l 10548 5273 l 10539 5306 l 10531 5341 l 10523 5375 l 10515 5409 l 10509 5442 l 10504 5472 l 10500 5501 l 10497 5528 l 10495 5554 l 10495 5578 l 10495 5602 l 10497 5626 l 10500 5650 l 10503 5670 l 10507 5691 l 10512 5712 l 10517 5734 l 10522 5756 l 10529 5779 l 10535 5803 l 10543 5828 l 10550 5854 l 10558 5880 l 10565 5907 l 10573 5934 l 10581 5961 l 10589 5989 l 10596 6017 l 10603 6045 l 10609 6072 l 10615 6100 l 10621 6127 l 10626 6155 l 10630 6182 l 10633 6208 l 10636 6235 l 10638 6263 l 10638 6286 l 10639 6310 l 10639 6334 l 10638 6359 l 10637 6385 l 10635 6411 l 10633 6438 l 10631 6466 l 10628 6494 l 10625 6523 l 10622 6552 l 10618 6582 l 10615 6612 l 10611 6643 l 10607 6673 l 10603 6704 l 10599 6735 l 10596 6765 l 10592 6795 l 10589 6825 l 10586 6855 l 10583 6884 l 10581 6912 l 10579 6941 l 10577 6968 l 10576 6996 l 10575 7023 l 10575 7050 l 10575 7079 l 10576 7108 l 10578 7138 l 10579 7168 l 10582 7198 l 10585 7229 l 10588 7261 l 10592 7292 l 10596 7324 l 10600 7357 l 10605 7389 l 10609 7422 l 10614 7454 l 10619 7486 l 10624 7517 l 10629 7548 l 10634 7579 l 10638 7608 l 10643 7637 l 10647 7665 l 10650 7691 l 10654 7717 l 10656 7742 l 10659 7766 l 10661 7790 l 10663 7813 l 10664 7839 l 10664 7864 l 10664 7890 l 10663 7915 l 10661 7941 l 10658 7968 l 10654 7995 l 10649 8024 l 10643 8054 l 10637 8086 l 10630 8118 l 10622 8151 l 10614 8184 l 10605 8215 l 10598 8244 l 10591 8270 l 10585 8290 l 10581 8306 l 10577 8317 l 10576 8322 l 10575 8325 l gs col0 s gr [] 0 sd /Times-Roman ff 240.00 scf sf 150 4731 m gs 1 -1 sc (Local data) col7 sh gr % Polyline [15 45] 45 sd n 7875 975 m 7874 978 l 7872 986 l 7868 999 l 7863 1018 l 7856 1043 l 7848 1073 l 7839 1106 l 7831 1141 l 7823 1175 l 7815 1209 l 7809 1242 l 7804 1272 l 7800 1301 l 7797 1328 l 7795 1354 l 7795 1378 l 7795 1402 l 7797 1426 l 7800 1450 l 7803 1470 l 7807 1491 l 7812 1512 l 7817 1534 l 7822 1556 l 7829 1579 l 7835 1603 l 7843 1628 l 7850 1654 l 7858 1680 l 7865 1707 l 7873 1734 l 7881 1761 l 7889 1789 l 7896 1817 l 7903 1845 l 7909 1872 l 7915 1900 l 7921 1927 l 7926 1955 l 7930 1982 l 7933 2008 l 7936 2035 l 7938 2063 l 7938 2086 l 7939 2110 l 7939 2134 l 7938 2159 l 7937 2185 l 7935 2211 l 7933 2238 l 7931 2266 l 7928 2294 l 7925 2323 l 7922 2352 l 7918 2382 l 7915 2412 l 7911 2443 l 7907 2473 l 7903 2504 l 7899 2535 l 7896 2565 l 7892 2595 l 7889 2625 l 7886 2655 l 7883 2684 l 7881 2712 l 7879 2741 l 7877 2768 l 7876 2796 l 7875 2823 l 7875 2850 l 7875 2879 l 7876 2908 l 7878 2938 l 7879 2968 l 7882 2998 l 7885 3029 l 7888 3061 l 7892 3092 l 7896 3124 l 7900 3157 l 7905 3189 l 7909 3222 l 7914 3254 l 7919 3286 l 7924 3317 l 7929 3348 l 7934 3379 l 7938 3408 l 7943 3437 l 7947 3465 l 7950 3491 l 7954 3517 l 7956 3542 l 7959 3566 l 7961 3590 l 7963 3613 l 7964 3639 l 7964 3664 l 7964 3690 l 7963 3715 l 7961 3741 l 7958 3768 l 7954 3795 l 7949 3824 l 7943 3854 l 7937 3886 l 7930 3918 l 7922 3951 l 7914 3984 l 7905 4015 l 7898 4044 l 7891 4070 l 7885 4090 l 7881 4106 l 7877 4117 l 7876 4122 l 7875 4125 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7125 975 m 7124 978 l 7120 985 l 7115 997 l 7108 1014 l 7098 1036 l 7088 1060 l 7077 1087 l 7066 1114 l 7056 1141 l 7047 1167 l 7039 1191 l 7032 1215 l 7026 1237 l 7022 1259 l 7018 1281 l 7015 1302 l 7013 1325 l 7011 1344 l 7010 1364 l 7009 1384 l 7009 1406 l 7009 1428 l 7009 1451 l 7010 1476 l 7010 1500 l 7011 1526 l 7012 1552 l 7013 1578 l 7013 1605 l 7014 1632 l 7015 1658 l 7015 1684 l 7016 1709 l 7016 1734 l 7016 1759 l 7016 1782 l 7015 1805 l 7014 1828 l 7013 1850 l 7011 1872 l 7009 1894 l 7006 1915 l 7003 1937 l 7000 1960 l 6997 1983 l 6994 2006 l 6990 2029 l 6987 2053 l 6983 2077 l 6980 2102 l 6977 2126 l 6975 2151 l 6972 2175 l 6971 2199 l 6969 2223 l 6969 2246 l 6969 2270 l 6969 2293 l 6970 2316 l 6972 2339 l 6975 2363 l 6978 2384 l 6982 2406 l 6987 2429 l 6992 2453 l 6997 2477 l 7004 2502 l 7010 2528 l 7018 2555 l 7025 2582 l 7033 2610 l 7040 2639 l 7048 2668 l 7056 2697 l 7064 2726 l 7071 2755 l 7078 2784 l 7084 2812 l 7090 2840 l 7096 2868 l 7101 2895 l 7105 2922 l 7108 2948 l 7111 2974 l 7113 3000 l 7114 3026 l 7114 3052 l 7113 3078 l 7112 3105 l 7110 3132 l 7108 3160 l 7104 3188 l 7101 3216 l 7096 3245 l 7091 3274 l 7086 3303 l 7081 3332 l 7075 3361 l 7069 3390 l 7062 3418 l 7056 3445 l 7050 3472 l 7044 3498 l 7038 3523 l 7032 3547 l 7027 3571 l 7022 3594 l 7017 3616 l 7013 3638 l 7008 3661 l 7004 3684 l 7000 3707 l 6997 3730 l 6994 3754 l 6991 3779 l 6989 3805 l 6987 3832 l 6985 3861 l 6983 3891 l 6981 3922 l 6980 3954 l 6979 3986 l 6978 4017 l 6977 4046 l 6976 4070 l 6976 4091 l 6975 4106 l 6975 4117 l 6975 4122 l 6975 4125 l gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 35 /Times-Roman ff 240.00 scf sf 3825 4731 m gs 1 -1 sc (0) col7 sh gr /Times-Roman ff 240.00 scf sf 7425 4731 m gs 1 -1 sc (1) col7 sh gr /Times-Roman ff 240.00 scf sf 11025 4731 m gs 1 -1 sc (2) col7 sh gr % here ends figure; % % here starts figure with depth 20 /Courier ff 240.00 scf sf 300 1425 m gs 1 -1 sc (vertglbnbr) col0 sh gr /Courier ff 240.00 scf sf 300 3825 m gs 1 -1 sc (procvrttab) col0 sh gr /Courier ff 240.00 scf sf 300 9225 m gs 1 -1 sc (vertlocnbr) col0 sh gr % Polyline 0 slj 0 slc 7.500 slw gs clippath 2520 11848 m 2520 12015 l 2580 12015 l 2580 11848 l 2580 11848 l 2550 11968 l 2520 11848 l cp eoclip n 2850 11100 m 2850 11550 l 2550 11550 l 2550 12000 l gs col0 s gr gr % arrowhead n 2520 11848 m 2550 11968 l 2580 11848 l 2520 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4920 11848 m 4920 12015 l 4980 12015 l 4980 11848 l 4980 11848 l 4950 11968 l 4920 11848 l cp eoclip n 2550 11100 m 2550 11475 l 4950 11475 l 4950 12000 l gs col0 s gr gr % arrowhead n 4920 11848 m 4950 11968 l 4980 11848 l 4920 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10620 11848 m 10620 12015 l 10680 12015 l 10680 11848 l 10680 11848 l 10650 11968 l 10620 11848 l cp eoclip n 10050 11100 m 10050 11625 l 10650 11625 l 10650 12000 l gs col0 s gr gr % arrowhead n 10620 11848 m 10650 11968 l 10680 11848 l 10620 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 11520 11848 m 11520 12015 l 11580 12015 l 11580 11848 l 11580 11848 l 11550 11968 l 11520 11848 l cp eoclip n 10350 11100 m 10350 11550 l 11550 11550 l 11550 12000 l gs col0 s gr gr % arrowhead n 11520 11848 m 11550 11968 l 11580 11848 l 11520 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10680 13052 m 10680 12885 l 10620 12885 l 10620 13052 l 10620 13052 l 10650 12932 l 10680 13052 l cp eoclip n 9750 13800 m 9750 13275 l 10650 13275 l 10650 12900 l gs col0 s gr gr % arrowhead n 10680 13052 m 10650 12932 l 10620 13052 l 10680 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 11280 13052 m 11280 12885 l 11220 12885 l 11220 13052 l 11220 13052 l 11250 12932 l 11280 13052 l cp eoclip n 10050 13800 m 10050 13350 l 11250 13350 l 11250 12900 l gs col0 s gr gr % arrowhead n 11280 13052 m 11250 12932 l 11220 13052 l 11280 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 12780 13052 m 12780 12885 l 12720 12885 l 12720 13052 l 12720 13052 l 12750 12932 l 12780 13052 l cp eoclip n 10350 13800 m 10350 13425 l 12750 13425 l 12750 12900 l gs col0 s gr gr % arrowhead n 12780 13052 m 12750 12932 l 12720 13052 l 12780 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7620 11848 m 7620 12015 l 7680 12015 l 7680 11848 l 7680 11848 l 7650 11968 l 7620 11848 l cp eoclip n 6150 11100 m 6150 11550 l 7650 11550 l 7650 12000 l gs col0 s gr gr % arrowhead n 7620 11848 m 7650 11968 l 7680 11848 l 7620 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9180 13052 m 9180 12885 l 9120 12885 l 9120 13052 l 9120 13052 l 9150 12932 l 9180 13052 l cp eoclip n 6150 13800 m 6150 13275 l 9150 13275 l 9150 12900 l gs col0 s gr gr % arrowhead n 9180 13052 m 9150 12932 l 9120 13052 l 9180 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7380 13052 m 7380 12885 l 7320 12885 l 7320 13052 l 7320 13052 l 7350 12932 l 7380 13052 l cp eoclip n 6450 13800 m 6450 13350 l 7350 13350 l 7350 12900 l gs col0 s gr gr % arrowhead n 7380 13052 m 7350 12932 l 7320 13052 l 7380 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5580 13052 m 5580 12885 l 5520 12885 l 5520 13052 l 5520 13052 l 5550 12932 l 5580 13052 l cp eoclip n 2550 13800 m 2550 13425 l 5550 13425 l 5550 12900 l gs col0 s gr gr % arrowhead n 5580 13052 m 5550 12932 l 5520 13052 l 5580 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3780 13052 m 3780 12885 l 3720 12885 l 3720 13052 l 3720 13052 l 3750 12932 l 3780 13052 l cp eoclip n 2850 13800 m 2850 13350 l 3750 13350 l 3750 12900 l gs col0 s gr gr % arrowhead n 3780 13052 m 3750 12932 l 3720 13052 l 3780 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4980 13052 m 4980 12885 l 4920 12885 l 4920 13052 l 4920 13052 l 4950 12932 l 4980 13052 l cp eoclip n 3150 13800 m 3150 13275 l 4950 13275 l 4950 12900 l gs col0 s gr gr % arrowhead n 4980 13052 m 4950 12932 l 4920 13052 l 4980 13052 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4020 11848 m 4020 12015 l 4080 12015 l 4080 11848 l 4080 11848 l 4050 11968 l 4020 11848 l cp eoclip n 3150 11100 m 3150 11625 l 4050 11625 l 4050 12000 l gs col0 s gr gr % arrowhead n 4020 11848 m 4050 11968 l 4080 11848 l 4020 11848 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 300 9825 m gs 1 -1 sc (vertgstnbr) col0 sh gr /Courier ff 240.00 scf sf 300 10425 m gs 1 -1 sc (edgelocnbr) col0 sh gr /Courier ff 240.00 scf sf 300 12825 m gs 1 -1 sc (edgegsttab) col0 sh gr /Courier ff 240.00 scf sf 300 12225 m gs 1 -1 sc (edgeloctab) col0 sh gr /Courier ff 240.00 scf sf 300 11025 m gs 1 -1 sc (vertloctab) col0 sh gr /Courier ff 240.00 scf sf 300 14025 m gs 1 -1 sc (vendloctab) col0 sh gr /Courier ff 240.00 scf sf 300 825 m gs 1 -1 sc (baseval) col0 sh gr /Courier ff 240.00 scf sf 300 2025 m gs 1 -1 sc (edgeglbnbr) col0 sh gr /Courier ff 240.00 scf sf 300 3225 m gs 1 -1 sc (proccnttab) col0 sh gr /Courier ff 240.00 scf sf 300 2625 m gs 1 -1 sc (procglbnbr) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 0 slj 0 slc 7.500 slw n 2400 600 m 2700 600 l 2700 900 l 2400 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1800 m 2700 1800 l 2700 2100 l 2400 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 2040 m gs 1 -1 sc (26) col0 sh gr % Polyline n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3600 m 2700 3600 l 2700 3900 l 2400 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3600 m 3000 3600 l 3000 3900 l 2700 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 3840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 3000 3600 m 3300 3600 l 3300 3900 l 3000 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 3840 m gs 1 -1 sc (17) col0 sh gr % Polyline n 3300 3600 m 3600 3600 l 3600 3900 l 3300 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 3840 m gs 1 -1 sc (99) col0 sh gr % Polyline n 2400 9600 m 2700 9600 l 2700 9900 l 2400 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 10200 m 2700 10200 l 2700 10500 l 2400 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 9600 m 6300 9600 l 6300 9900 l 6000 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 10200 m 6300 10200 l 6300 10500 l 6000 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 10200 m 9900 10200 l 9900 10500 l 9600 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 9600 m 9900 9600 l 9900 9900 l 9600 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 9000 m 2700 9000 l 2700 9300 l 2400 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 9000 m 6300 9000 l 6300 9300 l 6000 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 9000 m 9900 9000 l 9900 9300 l 9600 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 12000 m 3900 12000 l 3900 12300 l 3600 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 12600 m 3900 12600 l 3900 12900 l 3600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 12000 m 6300 12000 l 6300 12300 l 6000 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 12600 m 6300 12600 l 6300 12900 l 6000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 12000 m 7500 12000 l 7500 12300 l 7200 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 12600 m 7500 12600 l 7500 12900 l 7200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11100 12000 m 11400 12000 l 11400 12300 l 11100 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11100 12600 m 11400 12600 l 11400 12900 l 11100 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 10800 m 2700 10800 l 2700 11100 l 2400 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 10800 m 3000 10800 l 3000 11100 l 2700 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 10800 m 6300 10800 l 6300 11100 l 6000 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 10800 m 9900 10800 l 9900 11100 l 9600 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 10800 m 10200 10800 l 10200 11100 l 9900 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10000 11040 m gs 1 -1 sc (4) col0 sh gr % Polyline n 10200 10800 m 10500 10800 l 10500 11100 l 10200 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 10800 m 6600 10800 l 6600 11100 l 6300 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 13800 m 6600 13800 l 6600 14100 l 6300 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 13800 m 9900 13800 l 9900 14100 l 9600 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9700 14040 m gs 1 -1 sc (4) col0 sh gr % Polyline n 9900 13800 m 10200 13800 l 10200 14100 l 9900 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 13800 m 10500 13800 l 10500 14100 l 10200 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10225 14040 m gs 1 -1 sc (11) col0 sh gr % Polyline n 6000 13800 m 6300 13800 l 6300 14100 l 6000 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 6025 14040 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2400 12600 m 2700 12600 l 2700 12900 l 2400 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 12600 m 3000 12600 l 3000 12900 l 2700 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 12600 m 3300 12600 l 3300 12900 l 3000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 12600 m 3600 12600 l 3600 12900 l 3300 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 12000 m 2700 12000 l 2700 12300 l 2400 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 12000 m 3600 12000 l 3600 12300 l 3300 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 12600 m 5100 12600 l 5100 12900 l 4800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 12600 m 5400 12600 l 5400 12900 l 5100 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 12000 m 5100 12000 l 5100 12300 l 4800 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 12000 m 5400 12000 l 5400 12300 l 5100 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 12000 m 3300 12000 l 3300 12300 l 3000 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 12240 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2700 12000 m 3000 12000 l 3000 12300 l 2700 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 12240 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3900 12600 m 4200 12600 l 4200 12900 l 3900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 12600 m 4500 12600 l 4500 12900 l 4200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 12600 m 4800 12600 l 4800 12900 l 4500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 12000 m 4500 12000 l 4500 12300 l 4200 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 12000 m 4800 12000 l 4800 12300 l 4500 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 12000 m 4200 12000 l 4200 12300 l 3900 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3925 12240 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2400 13800 m 2700 13800 l 2700 14100 l 2400 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 14040 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2700 13800 m 3000 13800 l 3000 14100 l 2700 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 13800 m 3300 13800 l 3300 14100 l 3000 14100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 10800 m 3300 10800 l 3300 11100 l 3000 11100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 12600 m 7800 12600 l 7800 12900 l 7500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 12600 m 8100 12600 l 8100 12900 l 7800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 12600 m 8400 12600 l 8400 12900 l 8100 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 12600 m 8700 12600 l 8700 12900 l 8400 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 12600 m 9000 12600 l 9000 12900 l 8700 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 12000 m 7800 12000 l 7800 12300 l 7500 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 12000 m 8400 12000 l 8400 12300 l 8100 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 12000 m 8100 12000 l 8100 12300 l 7800 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 7825 12240 m gs 1 -1 sc (17) col0 sh gr % Polyline n 8400 12000 m 8700 12000 l 8700 12300 l 8400 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 8425 12240 m gs 1 -1 sc (19) col0 sh gr % Polyline n 8700 12000 m 9000 12000 l 9000 12300 l 8700 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 8725 12240 m gs 1 -1 sc (12) col0 sh gr % Polyline n 6600 12600 m 6900 12600 l 6900 12900 l 6600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 12600 m 6600 12600 l 6600 12900 l 6300 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 12600 m 7200 12600 l 7200 12900 l 6900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 12000 m 6900 12000 l 6900 12300 l 6600 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 12000 m 6600 12000 l 6600 12300 l 6300 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 6325 12240 m gs 1 -1 sc (19) col0 sh gr % Polyline n 6900 12000 m 7200 12000 l 7200 12300 l 6900 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 6925 12240 m gs 1 -1 sc (11) col0 sh gr % Polyline n 9600 12600 m 9900 12600 l 9900 12900 l 9600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 12600 m 10200 12600 l 10200 12900 l 9900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 12600 m 10500 12600 l 10500 12900 l 10200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 12000 m 9900 12000 l 9900 12300 l 9600 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9625 12240 m gs 1 -1 sc (11) col0 sh gr % Polyline n 10200 12000 m 10500 12000 l 10500 12300 l 10200 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10225 12240 m gs 1 -1 sc (19) col0 sh gr % Polyline n 9900 12000 m 10200 12000 l 10200 12300 l 9900 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9925 12240 m gs 1 -1 sc (18) col0 sh gr % Polyline n 10500 12600 m 10800 12600 l 10800 12900 l 10500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10800 12600 m 11100 12600 l 11100 12900 l 10800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10500 12000 m 10800 12000 l 10800 12300 l 10500 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10525 12240 m gs 1 -1 sc (17) col0 sh gr % Polyline n 10800 12000 m 11100 12000 l 11100 12300 l 10800 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10825 12240 m gs 1 -1 sc (19) col0 sh gr % Polyline n 11400 12600 m 11700 12600 l 11700 12900 l 11400 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11500 12840 m gs 1 -1 sc (4) col0 sh gr % Polyline n 11700 12600 m 12000 12600 l 12000 12900 l 11700 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12000 12600 m 12300 12600 l 12300 12900 l 12000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12300 12600 m 12600 12600 l 12600 12900 l 12300 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11400 12000 m 11700 12000 l 11700 12300 l 11400 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11425 12240 m gs 1 -1 sc (11) col0 sh gr % Polyline n 11700 12000 m 12000 12000 l 12000 12300 l 11700 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11725 12240 m gs 1 -1 sc (17) col0 sh gr % Polyline n 12000 12000 m 12300 12000 l 12300 12300 l 12000 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 12025 12240 m gs 1 -1 sc (18) col0 sh gr % Polyline n 12300 12000 m 12600 12000 l 12600 12300 l 12300 12300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 12325 12240 m gs 1 -1 sc (12) col0 sh gr % Polyline gs clippath 9720 11848 m 9720 12015 l 9780 12015 l 9780 11848 l 9780 11848 l 9750 11968 l 9720 11848 l cp eoclip n 9750 11100 m 9750 12000 l gs col0 s gr gr % arrowhead n 9720 11848 m 9750 11968 l 9780 11848 l 9720 11848 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6420 11848 m 6420 12015 l 6480 12015 l 6480 11848 l 6480 11848 l 6450 11968 l 6420 11848 l cp eoclip n 6450 11100 m 6450 12000 l gs col0 s gr gr % arrowhead n 6420 11848 m 6450 11968 l 6480 11848 l 6420 11848 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 6600 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5700 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 3900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9300 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4800 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 4800 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 7500 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 8100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 6600 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 8400 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 8400 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11100 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 11100 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 12000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10200 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 10200 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 6550 3090 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6550 1290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5650 2190 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7368 4008 m gs 1 -1 sc (12) col0 sh gr /Times-Roman ff 240.00 scf sf 8268 1308 m gs 1 -1 sc (17) col0 sh gr /Times-Roman ff 240.00 scf sf 8268 3108 m gs 1 -1 sc (19) col0 sh gr /Times-Roman ff 240.00 scf sf 7368 2208 m gs 1 -1 sc (11) col0 sh gr /Times-Roman ff 240.00 scf sf 9168 2208 m gs 1 -1 sc (18) col0 sh gr /Times-Roman ff 240.00 scf sf 3850 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3850 5490 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2950 6390 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4750 6390 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 4750 8190 m gs 1 -1 sc (5) col7 sh gr /Times-Roman ff 240.00 scf sf 7450 6390 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7450 8190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6550 5490 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 6550 7290 m gs 1 -1 sc (3) col7 sh gr /Times-Roman ff 240.00 scf sf 8350 5490 m gs 1 -1 sc (5) col7 sh gr /Times-Roman ff 240.00 scf sf 11050 5490 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10150 6390 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 10150 8190 m gs 1 -1 sc (5) col7 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 8350 7290 m gs 1 -1 sc (6) col7 sh gr /Times-Roman ff 240.00 scf sf 11050 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 11950 6390 m gs 1 -1 sc (2) col0 sh gr % here ends figure; % % here starts figure with depth 5 /Times-Roman ff 240.00 scf sf 2500 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 3240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 2640 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 1440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 3840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 9840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 10440 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 9840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 10440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 10440 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 9840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 9240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 9240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 9240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 11040 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 11040 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 11040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 11040 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 11040 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 11040 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 14040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 14040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 12840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 12240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 12240 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 12240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 12240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 12240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 12240 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 14040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 14040 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 11040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 12840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 12840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 12240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 12240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 12840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 12240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 10600 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10900 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 11800 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 12100 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 12400 12840 m gs 1 -1 sc (5) col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/p.bib0000644000302600021200000011223013303015264017351 0ustar pelegrinpelegrin@article{amdadu96, author = "Amestoy, P. and Davis, T. and Duff, I.", title = "An approximate minimum degree ordering algorithm", journal = "{SIAM} {J}. {M}atrix {A}nal. and {A}ppl.", volume = "17", pages = "886--905", year = "1996" } @inproceedings{aseilish91, author = "Ashcraft, C. and Eisenstat, S. and Liu, J. W.-H. and Sherman, A.", title = "A comparison of three column based distributed sparse factorization schemes", booktitle = "Proc. Fifth {SIAM} Conf. on Parallel Processing for Scientific Computing", year = "1991", } @article{ashc95, author = "Ashcraft, C.", title = "Compressed Graphs and the Minimum Degree Algorithm", journal = "{SIAM} {J}. {S}ci. {C}omput.", volume = "16", number = "6", pages = "1404--1411", year = "1995", abstract = "Compressing graphs for ordering speed-up", owner = "Francois PELLEGRINI" } @article{basi94, author = "Barnard, S. T. and Simon, H. D.", title = "A fast multilevel implementation of recursive spectral bisection for partitioning unstructured problems", journal = "{C}oncurrency: {P}ractice and {E}xperience", volume = "6", number = "2", pages = "101-117", year = "1994", abstract = "Fast RSB mapping program, with results on standard test graphs", owner = "Francois PELLEGRINI" } @misc{cecill, key = "cecill", title = "{CeCILL}: ``{CEA}-{CNRS}-{INRIA} {L}ogiciel {L}ibre'' free/libre software license", note = "Available from \url{http://www.cecill.info/licenses.en.html}" } @phdthesis{chev07, author = "Chevalier, C.", title = "Conception et mise en o$\!$euvre d'outils efficaces pour le partitionnement et la distribution parall\`eles de probl\`emes num\'eriques de tr\`es grande taille", type = "{T}h\`ese de {D}octorat", school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", number = "3434", month = sep, year = "2007" } @inproceedings{chpe06a, author = "Chevalier, C. and Pellegrini, F.", title = "Improvement of the Efficiency of Genetic Algorithms for Scalable Parallel Graph Partitioning in a Multi-Level Framework", booktitle = "Proc\@. EuroPar, Dresden", series = "LNCS 4128", pages = "243--252", month = sep, year = "2006", OPTpublisher = "Springer", OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt efficient\lbo ga.\lbt pdf}" } @Article{chpe08, author = "Chevalier, C. and Pellegrini, F.", title = "\ptscotch: A tool for efficient parallel graph ordering", journal = "{P}arallel {C}omputing", year = "2008", month = "jan", note = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt parallel\lbt ordering\_\lbo parcomp.\lbt pdf}" } @article{chro89, author = "Charrier, P. and Roman, J.", title = "Algorithmique et calculs de complexit\'e pour un solveur de type dissections embo\^\i t\'ees", journal = "{N}umerische {M}athematik", volume = "55", pages = "463--476", year = "1989", owner = "Francois PELLEGRINI" } @techreport {chro92a, author = "Charrier, P. and Roman, J.", title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", type = "Rapport de recherche", number = "92-12", month = mar, year = "1992", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", } @inproceedings {chro92b, author = "Charrier, P. and Roman, J.", title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", booktitle = "Proc\@. CONPAR'92", series = "LNCS 634", pages = "295--306", month = sep, year = "1992", OPTpublisher = "Springer" } @inproceedings {cuma69, author = "Cuthill, E. and Macc~Kee, J.", title = "Reducing the bandwidth of sparse symmetric matrices", booktitle = "Proc. 24th national conference {ACM}", year = "1969", pages = "157--172", publisher = "{ACM}", abstract = "Bisection of the 2D mesh" } @article {doho72, author = "Donath, W. and Hoffman, A.", title = "Algorithms for partitioning of graphs and computer logic based on eigenvectors of connection matrices", journal = "{IBM} {T}echnical {D}isclosure {B}ulletin", volume = "15", year = "1972", pages = "938--944", field = "Sepa, ALGO", abstract = "First historical results on the RSB techniques", owner = "Francois PELLEGRINI" } @article {doho73, author = "Donath, W. and Hoffman, A.", title = "Lower bounds for the partitioning of graphs", journal = "{IBM} {J}ournal of {R}esearch and {D}evelopment", volume = "17", year = "1973", pages = "420--425", field = "Sepa, ALGO", abstract = "First historical results on the RSB techniques", owner = "Francois PELLEGRINI" } @inproceedings{drro94a, author = "van Driessche, R. and Roose, D.", title = "Dynamic load balancing with an improved spectral bisection algorithm", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "494--500", year = "1994", month = may, organization = "IEEE", owner = "Francois PELLEGRINI" } @techreport{drro94b, author = "van Driessche, R. and Roose, D.", title = "A graph contraction algorithm for the calculation of eigenvectors of the laplacian matrix of a graph with a multilevel method", institution = "Katholieke Universiteit Leuven", number = "TW 209", month = may, year = "1994", owner = "Francois PELLEGRINI" } @article{duff81, author = "Duff, I.", title = "On Algorithms for Obtaining a Maximum Transversal", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "7", number = "3", pages = "315--330", month = sep, year = "1981", abstract = "Finding vertex separators from edge separators", owner = "Francois PELLEGRINI" } @techreport{dugrle92, author = "Duff, I. S. and Grimes, R. G. and Lewis, J. G.", title = "Users' guide for the {H}arwell-{B}oeing Sparse Matrix Collection", institution = "CERFACS", number = "TR/PA/92/86", month = oct, year = "1992", address = "Toulouse, France", owner = "Francois PELLEGRINI" } @article {errasa90, author = "Ercal, F. and Ramanujam, J. and Sadayappan, P.", title = "Task allocation onto a hypercube by recursive mincut bipartitionning", journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", volume = "10", year = "1990", pages = "35--44", field = "Mapp, ALGO", abstract = "Description of mapping on hypercubes using their topology: easy bipartition into sub-hypercubes and strong connection between them", owner = "Francois PELLEGRINI" } @article {fied73, author = "Fiedler, M.", title = "Algebraic connectivity of graphs", journal = "{C}zechoslovak {M}ath. {J}.", volume = "23", year = "1973", pages = "298--305", field = "Sepa, THEO", abstract = "Properties leading to spectral bisection", owner = "Francois PELLEGRINI" } @article {fied75, author = "Fiedler, M.", title = "A property of eigenvectors of non-negative symmetric matrices and its application to graph theory", journal = "{C}zechoslovak {M}ath. {J}.", volume = "25", year = "1975", pages = "619--633", field = "Sepa, THEO", abstract = "Properties leading to spectral bisection", owner = "Francois PELLEGRINI" } @inproceedings {fima82, author = "Fiduccia, C. M. and Mattheyses, R. M.", title = "A linear-time heuristic for improving network partitions", booktitle = "Proceedings of the 19th {D}esign {A}utomation {C}onference", year = "1982", pages = "175--181", publisher = "{IEEE}", field = "Sepa, ALGO", abstract = "Description of an heuristic algorithm, using foxy data structures, achieving separation in almost-linear time by iteratively moving nodes in given sets to minimize a cost function", owner = "Francois PELLEGRINI" } @article {gajost76, author = "Garey, M. R. and Johnson, D. S. and Stockmeyer, L.", title = "Some simplified {NP}-complete graph problems", journal = "{T}heoretical {C}omputer {S}cience", volume = "1", year = "1976", pages = "237--267", field = "Sepa, ALGO", abstract = "Graph bipartitioning is NP-complete", owner = "Francois PELLEGRINI" } @book {gajo79, author = "Garey, M. R. and Johnson, D. S.", title = "{C}omputers and {I}ntractablility: {A} {G}uide to the {T}heory of {NP}-completeness", publisher = "W. H. Freeman", year = "1979", address = "San Francisco" } @article{geheling88, author = "George, A. and Heath, M. T. and Liu, J. W.-H. and Ng, E. G.-Y.", title = "Sparse {C}holesky factorization on a local memory multiprocessor", journal = "{SIAM} {J}ournal on {S}cientific and {S}tatistical {C}omputing", volume = "9", pages = "327--340", year = "1988" } @book {geli81, author = "George, J. A. and Liu, J. W.-H.", title = "Computer solution of large sparse positive definite systems", year = "1981", publisher = "Prentice Hall" } @article {geli89, author = "George, A. and Liu, J. W.-H.", title = "The evolution of the Minimum Degree ordering algorithm", journal = "{SIAM} {R}eview", volume = "31", pages = "1--19", year = "1989" } @article{geng89, author = "Geist, G. A. and Ng, E. G.-Y.", title = "Task scheduling for parallel sparse {C}holesky factorization", journal = "{I}nternational {J}ournal of {P}arallel {P}rogramming", volume = "18", number = "4", pages = "291--314", year = "1989" } @article {gipost76, author = "Gibbs, N. E. and Poole, W. G. and Stockmeyer, P. K.", title = "A comparison of several bandwidth and profile reduction algorithms", journal = "{ACM} Trans. Math. Software", volume = "2", year = "1976", pages = "322--330", field = "bdth about sparse matrices", owner = "Jean ROMAN" } @misc{lgpl, key = "lgpl", title = "{GNU} {L}esser {G}eneral {P}ublic {L}icense", note = "Available from \url{http://www.gnu.org/copyleft/lesser.html}" } @techreport{gukaku94, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Highly scalable parallel algorithms for sparse matrix factorization", institution = "{U}niversity of {M}innesota", type = "TR", number = "94-063", year = "1994", OPTnote = "To appear in {\em {IEEE} {T}rans. on {P}arallel and {D}istributed {S}ystems}, 1997" } @inproceedings{gukaku96, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Scalable parallel algorithms for sparse linear systems", booktitle = "Proc. {Stratagem'96}, Sophia-Antipolis", pages = "97--110", year = "1996", month = jul, organization = "INRIA", } @article{gukaku97, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Highly scalable parallel algorithms for sparse matrix factorization", journal = "{IEEE} {T}rans. {P}arallel {D}istrib. {S}yst.", volume = "8", number = "5", pages = "502--520", year = "1997" } @article {gusu84, author = "Gurari, E. M. and Sudborough, I. H.", title = "Improved Dynamic Algorithms for Bandwidth Minimization and the Mincut Linear Arrangement Problem", journal = "Journal of Algorithms", volume = "5", year = "1984", pages = "531--546", field = "Heuristiques pour bdth and cdth", abstract = "cf. titre", owner = "D.B." } @phdthesis {hamm92, author = "Hammond, S. W.", title = "Mapping unstructured grid computations to massively parallel computers", month = feb, year = "1992", school = "{R}ensselaer {P}olytechnic {I}nstitute", address = "{T}roy, {N}ew-{Y}ork" } @techreport{hele93a, author = "Hendrickson, B. and Leland, R.", title = "Multidimensional spectral load balancing", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--0074", month = jan, year = "1993", owner = "Francois PELLEGRINI" } @techreport{hele93b, author = "Hendrickson, B. and Leland, R.", title = "A multilevel algorithm for partitioning graphs", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--1301", month = jun, year = "1993", owner = "Francois PELLEGRINI" } @techreport{hele93c, author = "Hendrickson, B. and Leland, R.", title = "The \sc {C}haco \rm user's guide", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--2339", month = nov, year = "1993", owner = "Francois PELLEGRINI" } @inproceedings{hele94a, author = "Hendrickson, B. and Leland, R.", title = "An empirical study of static load balancing algorithms", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "682--685", year = "1994", month = may, organization = "IEEE" } @techreport{hele94b, author = "Hendrickson, B. and Leland, R.", title = "The {\sc {C}haco} user's guide -- Version 2.0", institution = "{S}andia {N}ational {L}aboratories", number = "SAND94--2692", year = "1994", owner = "Francois PELLEGRINI" } @inproceedings {hele95, author = "Hendrickson, B. and Leland, R.", title = "A Multilevel Algorithm for Partitioning Graphs", booktitle = "Proc\@. ACM/IEEE conference on Supercomputing (CDROM)", month = "dec", year = "1995", location = "San Diego" } @inproceedings{heledr96, author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", title = "{E}nhancing {D}ata {L}ocality by {U}sing {T}erminal {P}ropagation", booktitle = "Proceedings of the 29$\,^{th}$ Hawaii International Conference on System Sciences", year = "1996", month = jan, organization = "IEEE" } @inproceedings {heledr97, author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", title = "Skewed Graph Partitioning", booktitle = "Proceedings of the 8$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing", month = mar, year = 1997, organization = "IEEE" } @inproceedings{heperaro04a, author = "H\'enon, P. and Pellegrini, F. and Ramet, P. and Roman, J. and Saad, Y.", title = "High Performance Complete and Incomplete Factorizations for Very Large Sparse Systems by using {\sc {S}cotch} and {\sc {P}a{S}ti{X}} softwares", booktitle = "Proc\@. 11$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing, San Francisco, {USA}", month = feb, year = 2004 } @article{hero98, author = "Hendrickson, B. and Rothberg, E.", title = "Improving the Runtime and Quality of Nested Dissection Ordering", journal = "{SIAM} {J}. {S}ci. {C}omput.", volume = "20", number = "2", year = "1998", pages = "468--489", owner = "Francois PELLEGRINI" } @article {hoka73, author = "Hopcroft, J. and Karp, R.", title = "An $n^{5/2}$ Algorithm for Maximum Matchings in Bipartite Graphs", journal = "{SIAM} {J}ournal of {C}omputing", volume = "2", number = "4", month = dec, year = "1973", pages = "225--231", field = "Sepa, ALGO", abstract = "Finding vertex separators from edge separators", owner = "Francois PELLEGRINI" } @techreport{kaku95a, author = "Karypis, G. and Kumar, V.", title = "A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs", institution = "{U}niversity of {M}innesota", type = "Technical Report", number = "95-035", month = jun, year = "1995", owner = "Francois PELLEGRINI" } @techreport{kaku95b, author = "Karypis, G. and Kumar, V.", title = "{\sc Me$\!$T$\!$iS} -- Unstructured Graph Partitioning and Sparse Matrix Ordering System -- Version~2.0", institution = "{U}niversity of {M}innesota", month = jun, year = "1995", owner = "Francois PELLEGRINI" } @techreport{kaku95c, author = "Karypis, G. and Kumar, V.", title = "Multilevel $k$-way Partitioning Scheme for Irregular Graphs", institution = "{U}niversity of {M}innesota", type = "Technical Report", number = "95-064", month = aug, year = "1995", owner = "Francois PELLEGRINI" } @manual{kaku98a, author = "Karypis, G. and Kumar, V.", title = "{\sc Me$\!$T$\!$iS} -- A Software Package for Partitioning Unstructured Graphs, Partitioning Meshes, and Computing Fill-Reducing Orderings of Sparse Matrices -- Version~4.0", organization = "{U}niversity of {M}innesota", month = sep, year = "1998", owner = "Francois PELLEGRINI" } @article {keli70, author = "Kernighan, B. W. and Lin, S.", title = "An efficient heuristic procedure for partitionning graphs", journal = "{BELL} System Technical Journal", month = feb, year = "1970", pages = "291--307", publisher = "{BELL} {C}orporation", field = "Sepa, ALGO", abstract = "Description of an heuristic algorithm achieving separation by iteratively exchanging nodes in given sets to minimize a cost function", owner = "Francois PELLEGRINI" } @article {lafeel94, author = "Laguna, M. and Feo, T. A. and Elrod, H. C.", title = "A greedy randomized adaptative search procedure for the two-partition problem", journal = "{O}perations {R}esearch", month = jul, year = "1994", pages = "677--687", field = "Bipa, ALGO", abstract = "Iterative Adaptative algorithms for graph bipartitioning", owner = "Francois PELLEGRINI" } @techreport{leabdofe92, author = "Leiserson, C. and Abuhamdeh, Z. and Douglas, D. and Feynman, C. and Ganmukhi, M. and Hill, J. and Hillis, W. and Kuszmaul, B. and Pierre, M. and Wells, D. and Wong, M. and Yang, S. and Zak, R.", title = "The Network Architecture of the {C}onnection {M}achine {CM-5}", institution = "{T}hinking {M}achines", month = "juillet", year = "1992", owner = "Francois PELLEGRINI" } @inproceedings {lele87, author = "Leiserson, C. and Lewis, J.", title = "Orderings for parallel sparse symmetric factorization", booktitle = "Third {SIAM} Conference on Parallel Processing for Scientific Computing", year = "1987", location = "Troms\o", organization = "SIAM", abstract = "Finding vertex separators from edge separators", owner = "Francois PELLEGRINI" } @article {lirota79, author = "Lipton, R. J. and Rose, D. J. and Tarjan, R. E.", title = "Generalized nested dissection", journal = "{SIAM} Journal of Numerical Analysis", volume = "16", number = "2", month = apr, year = "1979", pages = "346--358", publisher = "{S}ociety for {I}ndustrial and {A}pplied {M}athematics", field = "Sepa, DESC", abstract = "Use of separation theorems to solve linear systems. Results achieved: bounds for planar graph reordering, only sparse graphs have good separators, not all sparse graphs have good separators.", owner = "Francois PELLEGRINI" } @inproceedings {litsdukl93, author = "Lin, M. and Tsang, R. and Du, D. H. C. and Klietz, A. E. and Saroff, S.", title = "Performance Evaluation of the {CM-5} Interconnection Network", booktitle = "Proceedings of CompCon Spring'93", year = "1993", abstract = "The bandwidth of the CM-5 is constant over the levels" } @phdthesis {liu-75, author = "Liu, J. W.", title = "On reducing the profile of sparse symmetric matrices", school = "{U}niversity of {W}aterloo", year = "1975", address = "{W}aterloo, {O}ntario", } @article {liu-85, author = "Liu, J. W.-H.", title = "Modification of the minimum-degree algorithm by multiple elimination", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "11", number = "2", year = 1985, pages = "141--153", field = "Orde, ALGO", abstract = "Description of the Multiple Minimum Degree algorithm", owner = "Francois PELLEGRINI" } @misc{mpi11, key = "mpi11", title = "{MPI}: {A} {M}essage {P}assing {I}nterface {S}tandard, version 1.1", month = "jun", year = 1995, note = "Available from \url{http://www.mpi-forum.org/docs/mpi-11-html/mpi-report.html}" } @misc{oinv, key = "oinv", title = "{SGI} {O}pen {I}nventor", note = "Available from \url{http://oss.sgi.com/projects/inventor/}" } @manual{ParMetis, title = "{\sc ParMetis}: Parallel Graph Partitioning and Sparse Matrix Ordering Library", author = "Karypis, G. and Kumar, V.", organization = "University of Minnesota", month = "aug", year = "2003" } @manual{pci-93, title = "{CS-2} {P}roduct {D}escription", organization = "{P}erformance {C}omputing {I}ndustries", year = "1993" } @Article{pell93d, author = "Pellegrini, F.", title = "Bounds for the Bandwidth of the $d$-ary de~{B}ruijn graph", journal = "Parallel Processing Letters", year = "1993", volume = "3", number = "4", pages = "431--443" } @inproceedings{pell94a, author = "Pellegrini, F.", title = "Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "486--493", year = "1994", month = may, organization = "IEEE" } @inproceedings{pell94b, author = "Pellegrini, F.", title = "Placement statique par bipartitionnement r\'ecursif conjoint des graphes de processus et d'architecture", booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", pages = "41--44", year = "1994", month = jun, organization = "ENS Lyon" } @phdthesis{pell95a, author = "Pellegrini, F.", title = "Application de m\'ethodes de partition \`a la r\'esolution de probl\`emes de graphes issus du parall\'elisme", type = "{T}h\`ese de {D}octorat", school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", number = "1244", month = jan, year = "1995", address = "351 cours de la Lib\'eration, 33405 Talence, France", owner = "Francois PELLEGRINI" } @inproceedings{pell07b, author = "Pellegrini, F.", title = "A parallelisable multi-level banded diffusion scheme for computing balanced partitions with smooth boundaries", booktitle = "Proc\@. EuroPar, Rennes", series = "LNCS 4641", pages = "191--200", month = aug, year = "2007", OPTeditor = "A.-M. Kermarrec, L. Boug\'e, T. Priol", OPTpublisher = "Springer", OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt bipart\_\lbt diffusion\_\lbt europar2007.\lbt pdf}" } @techreport{pell07c, author = "Pellegrini, F.", title = "{\sc {S}cotch 5.0} {U}ser's {G}uide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2007", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @TechReport{pell07d, author = "Pellegrini, F.", title = "{\sc {PT}-{S}cotch 5.0} \mbox{U}ser's guide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2007", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @techreport{pell08b, author = "Pellegrini, F.", title = "{\sc {S}cotch 5.1} {U}ser's {G}uide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2008", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @TechReport{pell08c, author = "Pellegrini, F.", title = "{\sc {PT}-{S}cotch 5.1} \mbox{U}ser's guide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2008", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @inproceedings{pero96a, author = "Pellegrini, F. and Roman, J.", title = "{\sc Scotch}: A Software Package for Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", booktitle = "Proc\@. {HPCN'96}, Brussels", series = "LNCS 1067", pages = "493--498", month = apr, year = "1996" } @techreport{pero96b, author = "Pellegrini, F. and Roman, J.", title = "Experimental Analysis of the Dual Recursive Bipartitioning Algorithm for Static Mapping", type = "{R}esearch {R}eport", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "1996", note = "Available from \url{http://www.labri.fr/~pelegrin/papers/scotch_expanalysis.ps.gz}" } @inproceedings{pero97a, author = "Pellegrini, F. and Roman, J.", title = "{S}parse matrix ordering with {\sc {S}cotch}", booktitle = "Proc\@. {HPCN'97}, Vienna", series = "LNCS 1225", pages = "370--378", month = apr, year = "1997" } @inproceedings{peroam99, author = "Pellegrini, F. and Roman, J. and Amestoy, P.", title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", booktitle = "Proc\@. {Irregular'99}, San Juan", series = "LNCS 1586", pages = "986--995", month = apr, year = "1999" } @article{peroam00a, author = "Pellegrini, F. and Roman, J. and Amestoy, P.", title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", journal = "{C}oncurrency: {P}ractice and {E}xperience", year = "2000", volume = "12", pages = "69--84" } @article {pofa90, author = "Pothen, A. and Fan, C.-J.", title = "Computing the Block Triangular Form of a Sparse Matrix", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "16", number = "4", month = dec, year = "1990", pages = "303--324", field = "Sepa, ALGO", abstract = "Finding vertex separators from edge separators", owner = "Francois PELLEGRINI" } @article {posili90, author = "Pothen, A. and Simon, H. D. and Liou, K.-P.", title = "Partitioning sparse matrices with eigenvectors of graphs", journal = "{SIAM} {J}ournal of {M}atrix {A}nalysis", volume = "11", number = "3", month = jul, year = "1990", pages = "430--452", field = "Sepa, THEO ALGO", abstract = "Global method for bipartitioning a graph based on sparse matrix considerations", owner = "Francois PELLEGRINI" } @article {roha89, author = "Roucairol, C. and Hansen, P.", title = "Cut cost minimization in graph partitioning", journal = "{N}umerical and {A}pplied {M}athematics", year = "1989", pages = "585--587", publisher = "{S}cientific {P}ublishing", field = "Sepa, THEO ALGO", abstract = "Description of a mincut algorithm with constrained vertex sets sizes based on quadratic assignment with Lagrangean relaxation", owner = "Francois PELLEGRINI" } @inproceedings{rogu93, author = "Rothberg, E. and Gupta, A.", title = "An efficient block-oriented approach to parallel sparse {C}holesky factorization", booktitle = "{S}upercomputing'93 {P}roceedings", year = "1993", organization = "IEEE" } @inproceedings{rosc94, author = "Rothberg, E. and Schreiber, R.", title = "Improved load distribution in parallel sparse {C}holesky factorization", booktitle = "{S}upercomputing'94 {P}roceedings", year = "1994", organization = "IEEE" } @inproceedings{roth94, author = "Rothberg, E.", title = "Performance of panel and block approaches to sparse {C}holesky factorization on the {iPSC/860} and {P}aragon multicomputers", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "324--333", year = "1994", month = may, organization = "IEEE" } @article {roma85, author = "Roman, J.", title = "Calculs de complexit\'e relatifs \`a une m\'ethode de dissection embo\^\i t\'ee", journal = "{N}umerische {M}athematik", volume = "47", year = "1985", pages = "175--190" } @book {rume94, author = "de Rumeur, J.", title = "Communication dans les r\'eseaux de processeurs", month = oct, year = "1994", publisher = "Masson", abstract = "Plein de resultats sur les graphes", owner = "Andre RASPAUD", } @mastersthesis{scar96, author = "Scarano, L.", title = "Metodologie di allocazione statica con algoritmi di bipartizionamento multilevelo", school = "{F}acolt\'a di {I}ngegneria, {U}niversit\`a degli {S}tudi di {B}ologna", type = "{T}esi di {L}aurea", month = mar, year = "1996", owner = "Francois PELLEGRINI" } @inbook {sero85, author = "Seymour, P. D. and Robertson, N.", chapter = "Graph minors -- {A} survey", title = "Surveys in combinatorics", year = "1985", pages = "153--171", editor = "Ian Anderson", publisher = "Cambridge University Press", abstract = "blublu", owner = "Dominique BARTH", } @techreport{shre92, author = "Schreiber, R.", title = "Scalability of sparse direct solvers", institution = "{RIACS}, {NASA} {A}mes {R}esearch {C}enter", type = "Technical Report", number = "TR 92.13", month = may, year = "1992", owner = "Francois PELLEGRINI" } @article{simo91, author = "Simon, H. D.", title = "Partitioning of unstructured problems for parallel processing", journal = "{C}omputing {S}ystems in {E}ngineering", volume = "2", pages = "135-148", year = "1991", abstract = "blublu", owner = "Francois PELLEGRINI" } @techreport{site93, author = "Simon, H. D. and Teng, S.-H.", title = "How good is recursive bipartition", type = "Research report", institution = "{NASA} {A}mes {R}esearch {C}enter", month = jun, year = "1993", abstract = "Theoretical proof of goodness of bipartition for some families of graphs, based on Lipton and Tarjan separators", owner = "Francois PELLEGRINI" } @techreport{shsz91, author = "Shahrokhi, F. and Szekely, L. A.", title = "An algebraic approach to the uniform concurrent multicommodity flow -- {T}heory and Applications", institution = "University of North Texas", number = "CRPDC-91-4", year = "1991", owner = "Dominique BARTH" } @article {shts85, author = "Shen, C.-C. and Tsai, W.-H.", title = "A graph matching approach to optimal task assignment in distributed computing systems using a minimax criterion", journal = "{IEEE} {T}ransactions on {C}omputers", volume = "C-34", number = "3", month = mar, year = "1985", pages = "197--203", field = "Mapp, ALGO", abstract = "A B&B A* mapping algorithm", owner = "Francois PELLEGRINI" } @article {sinc87, author = "Sinclair, J. B.", title = "Efficient computation of optimal assignments for distributed tasks", journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", volume = "4", year = "1987", pages = "342--362", field = "Mapp, ALGO", abstract = "A B&B A* mapping algorithm", owner = "Francois PELLEGRINI" } @inproceedings {smar76, author = "Smith, W. F. and Arany, I.", title = "Another algorithm for reducing bandwidth and profile of a sparse matrix", booktitle = "Proc. AFIPS 1976 NCC", year = "1976", pages = "341--352", publisher = "AFIP Press", address = "Montvale, New Jersey" } @article{ston77, author = "Stone, H. S.", title = "Multiprocessor scheduling with the aid of network flow algorithms", journal = "{IEEE} {T}ransactions on {S}oftware {E}ngineering", volume = "SE 3", number = "2", month = jan, year = "1977", pages = "85--93", field = "Mapp, ALGO", abstract = "Self-explanatory", owner = "Francois PELLEGRINI" } @techreport {tamu92, author = "Talbi, E.-G. and Muntean, T.", title = "\'Evaluation et \'etude comparative d'algorithmes d'optimisation combinatoire: application au probl\`eme de placement de processus", institution = "LGI-IMAG", address = "46 av. {F}. {V}iallet, 38031 {G}renoble {CEDEX}", type = "Rapport de Recherche", number = "RR~886-I", month = apr, year = "1992", field = "Mapp, SURV ALGO", abstract = "Good survey of mapping algorithms & techniques, with comparisons; Presentation of a parallel genetic algorithm", owner = "Francois PELLEGRINI" } @article {tiwa67, author = "Tinney, W. F. and Walker, J. W.", title = "Direct solutions of sparse network equations by optimally ordered triangular factorization", journal = "{J}. {P}roc. {IEEE}", volume = "55", year = "1967", pages = "1801--1809" } @inproceedings {wacrevjo95, author = "Walshaw, C. and Cross, M. and Everett, M. G. and Johnson, S. and McManus, K.", title = "Partitioning \& Mapping of Unstructured Meshes to Parallel Machine Topologies", booktitle = "Proc\@. {Irregular'95}", series = "LNCS 980", pages = "121--126", year = "1995" } @article {waro84, author = "Ward, M. O. and Romero, D. J.", title = "Assigning parallel-executable, intercommunicating subtasks to processors", journal = "{IEEE}", year = "1984", pages = "392--394", field = "Mapp, ALGO", abstract = "Description of cost functions for greedy mapping algorithms using criteria of `loss of parallelism', `synchronization', and `data sources' to place subtasks issued from sequential program automatic paralllization", owner = "Francois PELLEGRINI" } @misc{webmetis-parmetis, key = "karypis-metis-parmetis", title = "{\metis}: {F}amily of Multilevel Partitioning Algorithms", note = "\url{http://glaros.dtc.umn.edu/gkhome/views/metis}" } @inproceedings {yokaka75, author = "Yoshizawa, H. and Kawanishi, H. and Kani, K.", title = "A Heuristic procedure for ordering {MOS} arrays", booktitle = "Proc\@. of Design Automation Conference", year = "1975", pages = "384--393" } @inproceedings{zovake94, author = "Zone, O. and Vanderstraeten, D. and Keunings, R.", title = "Un solveur direct parall\`ele bas\'e sur une d\'ecomposition de domaine appliqu\'e aux probl\`emes d'\'el\'ements finis", booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", pages = "113--118", year = "1994", month = jun, organization = "ENS Lyon" } scotch_6.0.9/doc/src/ptscotch/p_f_gr2.fig0000644000302600021200000006020413303015264020444 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 0 0 12900 300 2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 12900 300 0 300 0 0 12900 0 12900 300 4 0 7 40 -1 0 19 0.0000 4 270 1995 174 231 Duplicated data\001 -6 6 2400 600 2700 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 600 2700 600 2700 900 2400 900 2400 600 4 0 0 5 0 0 16 0.0000 4 195 135 2500 840 1\001 -6 6 2400 1800 2700 2100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 1800 2700 1800 2700 2100 2400 2100 2400 1800 4 0 0 15 0 0 16 0.0000 4 195 270 2425 2040 26\001 -6 6 2400 3000 2700 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 4 0 0 5 0 0 16 0.0000 4 195 135 2500 3240 3\001 -6 6 3000 3000 3300 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 4 0 0 5 0 0 16 0.0000 4 195 135 3100 3240 3\001 -6 6 2700 3000 3000 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 4 0 0 5 0 0 16 0.0000 4 195 135 2800 3240 2\001 -6 6 2400 2400 2700 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 4 0 0 5 0 0 16 0.0000 4 195 135 2500 2640 3\001 -6 6 300 1200 2700 1500 6 2400 1200 2700 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 4 0 0 5 0 0 16 0.0000 4 195 135 2500 1440 8\001 -6 4 0 0 20 0 12 16 0.0000 4 240 1650 300 1425 vertglbnbr\001 -6 6 6450 2850 6750 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 3000 150 150 6600 3000 6750 3000 4 0 0 10 0 0 16 0.0000 4 195 135 6550 3090 2\001 -6 6 6450 1050 6750 1350 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6600 1200 150 150 6600 1200 6750 1200 4 0 0 10 0 0 16 0.0000 4 195 135 6550 1290 3\001 -6 6 5550 1950 5850 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5700 2100 150 150 5700 2100 5850 2100 4 0 0 10 0 0 16 0.0000 4 195 135 5650 2190 1\001 -6 6 7350 3750 7650 4050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 3900 150 150 7500 3900 7650 3900 4 0 0 10 0 0 16 0.0000 4 195 270 7368 4008 12\001 -6 6 8250 1050 8550 1350 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 1200 150 150 8400 1200 8550 1200 4 0 0 10 0 0 16 0.0000 4 195 270 8268 1308 17\001 -6 6 8250 2850 8550 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8400 3000 150 150 8400 3000 8550 3000 4 0 0 10 0 0 16 0.0000 4 195 270 8268 3108 19\001 -6 6 7350 1950 7650 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 4 0 0 10 0 0 16 0.0000 4 195 270 7368 2208 11\001 -6 6 9150 1950 9450 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9300 2100 150 150 9300 2100 9450 2100 4 0 0 10 0 0 16 0.0000 4 195 270 9168 2208 18\001 -6 6 300 3600 3600 3900 6 2400 3600 2700 3900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3600 2700 3600 2700 3900 2400 3900 2400 3600 4 0 0 5 0 0 16 0.0000 4 195 135 2500 3840 1\001 -6 6 2700 3600 3000 3900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3600 3000 3600 3000 3900 2700 3900 2700 3600 4 0 0 15 0 0 16 0.0000 4 195 270 2725 3840 11\001 -6 6 3000 3600 3300 3900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3600 3300 3600 3300 3900 3000 3900 3000 3600 4 0 0 15 0 0 16 0.0000 4 195 270 3025 3840 17\001 -6 6 3300 3600 3600 3900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3600 3600 3600 3600 3900 3300 3900 3300 3600 4 0 0 15 0 0 16 0.0000 4 195 270 3325 3840 99\001 -6 4 0 0 20 0 12 16 0.0000 4 240 1650 300 3825 procvrttab\001 -6 6 0 4500 12900 14400 6 2850 5175 4950 8325 6 3750 7050 4050 7350 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 7200 150 150 3900 7200 4050 7200 4 0 0 10 0 0 16 0.0000 4 195 135 3850 7290 2\001 -6 6 3750 5250 4050 5550 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3900 5400 150 150 3900 5400 4050 5400 4 0 0 10 0 0 16 0.0000 4 195 135 3850 5490 3\001 -6 6 2850 6150 3150 6450 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3000 6300 150 150 3000 6300 3150 6300 4 0 0 10 0 0 16 0.0000 4 195 135 2950 6390 1\001 -6 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 6300 150 150 4800 6300 4950 6300 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 4800 8100 150 150 4800 8100 4950 8100 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 4800 8100 3900 7200 4800 6300 3900 5400 3900 7200 3000 6300 3900 5400 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 4425 5175 4275 5475 4350 6075 4200 6525 4500 7200 4275 7875 4275 8325 0.000 1.000 1.000 1.000 1.000 1.000 0.000 4 0 7 10 0 0 16 0.0000 4 195 135 4750 6390 4\001 4 0 7 10 0 0 16 0.0000 4 195 135 4750 8190 5\001 -6 6 6450 5175 8550 8325 6 7350 6150 7650 6450 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 6300 150 150 7500 6300 7650 6300 4 0 0 10 0 0 16 0.0000 4 195 135 7450 6390 1\001 -6 6 7350 7950 7650 8250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 8100 150 150 7500 8100 7650 8100 4 0 0 10 0 0 16 0.0000 4 195 135 7450 8190 2\001 -6 6 6450 5250 6750 5550 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 5400 150 150 6600 5400 6750 5400 4 0 7 10 0 0 16 0.0000 4 195 135 6550 5490 4\001 -6 6 6450 7050 6750 7350 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 6600 7200 150 150 6600 7200 6750 7200 4 0 7 10 0 0 16 0.0000 4 195 135 6550 7290 3\001 -6 6 8250 5250 8550 5550 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 5400 150 150 8400 5400 8550 5400 4 0 7 10 0 0 16 0.0000 4 195 135 8350 5490 5\001 -6 6 8250 7050 8550 7350 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 8400 7200 150 150 8400 7200 8550 7200 4 0 7 8 0 0 16 0.0000 4 195 135 8350 7290 6\001 -6 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7 6600 5400 7500 6300 6600 7200 7500 8100 7500 6300 8400 7200 7500 8100 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 7500 6300 8400 5400 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 7875 5175 7725 5625 8025 6225 7800 7050 8025 7875 7875 8325 0.000 1.000 1.000 1.000 1.000 0.000 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 7125 5175 6975 5475 7050 6075 6900 6525 7200 7200 6975 7875 6975 8325 0.000 1.000 1.000 1.000 1.000 1.000 0.000 -6 6 10050 5175 12150 8325 6 10950 7050 11250 7350 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 7200 150 150 11100 7200 11250 7200 4 0 0 8 0 0 16 0.0000 4 195 135 11050 7290 3\001 -6 6 10950 5250 11250 5550 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11100 5400 150 150 11100 5400 11250 5400 4 0 0 10 0 0 16 0.0000 4 195 135 11050 5490 1\001 -6 6 11850 6150 12150 6450 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12000 6300 150 150 12000 6300 12150 6300 4 0 0 8 0 0 16 0.0000 4 195 135 11950 6390 2\001 -6 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 6300 150 150 10200 6300 10350 6300 1 3 0 1 0 0 12 0 20 0.000 1 0.0000 10200 8100 150 150 10200 8100 10350 8100 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 7 10200 8100 11100 7200 10200 6300 11100 5400 11100 7200 12000 6300 11100 5400 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 10575 5175 10425 5625 10725 6225 10500 7050 10725 7875 10575 8325 0.000 1.000 1.000 1.000 1.000 0.000 4 0 7 10 0 0 16 0.0000 4 195 135 10150 6390 4\001 4 0 7 10 0 0 16 0.0000 4 195 135 10150 8190 5\001 -6 6 3750 4500 4050 4800 2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 4050 4800 3750 4800 3750 4500 4050 4500 4050 4800 4 0 7 35 -1 0 16 0.0000 4 195 135 3825 4731 0\001 -6 6 7350 4500 7650 4800 2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 7650 4800 7350 4800 7350 4500 7650 4500 7650 4800 4 0 7 35 -1 0 16 0.0000 4 195 135 7425 4731 1\001 -6 6 10950 4500 11250 4800 2 2 0 0 -1 0 55 -1 10 0.000 0 0 -1 0 0 5 11250 4800 10950 4800 10950 4500 11250 4500 11250 4800 4 0 7 35 -1 0 16 0.0000 4 195 135 11025 4731 2\001 -6 6 2400 9600 2700 9900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 9600 2700 9600 2700 9900 2400 9900 2400 9600 4 0 0 5 0 0 16 0.0000 4 195 135 2500 9840 5\001 -6 6 2400 10200 2700 10500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 10200 2700 10200 2700 10500 2400 10500 2400 10200 4 0 0 5 0 0 16 0.0000 4 195 135 2500 10440 9\001 -6 6 6000 9600 6300 9900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 9600 6300 9600 6300 9900 6000 9900 6000 9600 4 0 0 5 0 0 16 0.0000 4 195 135 6100 9840 6\001 -6 6 6000 10200 6300 10500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 10200 6300 10200 6300 10500 6000 10500 6000 10200 4 0 0 5 0 0 16 0.0000 4 195 135 6100 10440 8\001 -6 6 9600 10200 9900 10500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 10200 9900 10200 9900 10500 9600 10500 9600 10200 4 0 0 5 0 0 16 0.0000 4 195 135 9700 10440 9\001 -6 6 9600 9600 9900 9900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 9600 9900 9600 9900 9900 9600 9900 9600 9600 4 0 0 5 0 0 16 0.0000 4 195 135 9700 9840 5\001 -6 6 300 9000 9900 9300 6 2400 9000 2700 9300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 9000 2700 9000 2700 9300 2400 9300 2400 9000 4 0 0 5 0 0 16 0.0000 4 195 135 2500 9240 3\001 -6 6 6000 9000 6300 9300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 9000 6300 9000 6300 9300 6000 9300 6000 9000 4 0 0 5 0 0 16 0.0000 4 195 135 6100 9240 2\001 -6 6 9600 9000 9900 9300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 9000 9900 9000 9900 9300 9600 9300 9600 9000 4 0 0 5 0 0 16 0.0000 4 195 135 9700 9240 3\001 -6 4 0 0 20 0 12 16 0.0000 4 180 1650 300 9225 vertlocnbr\001 -6 6 3600 12000 3900 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 12000 3900 12000 3900 12300 3600 12300 3600 12000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 12600 3900 12600 3900 12900 3600 12900 3600 12600 -6 6 6000 12000 6300 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 12000 6300 12000 6300 12300 6000 12300 6000 12000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 12600 6300 12600 6300 12900 6000 12900 6000 12600 -6 6 7200 12000 7500 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 12000 7500 12000 7500 12300 7200 12300 7200 12000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 12600 7500 12600 7500 12900 7200 12900 7200 12600 -6 6 11100 12000 11400 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11100 12000 11400 12000 11400 12300 11100 12300 11100 12000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11100 12600 11400 12600 11400 12900 11100 12900 11100 12600 -6 6 2400 10800 2700 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 10800 2700 10800 2700 11100 2400 11100 2400 10800 4 0 0 5 0 0 16 0.0000 4 195 135 2500 11040 9\001 -6 6 2700 10800 3000 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 10800 3000 10800 3000 11100 2700 11100 2700 10800 4 0 0 5 0 0 16 0.0000 4 195 135 2800 11040 1\001 -6 6 6000 10800 6300 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 10800 6300 10800 6300 11100 6000 11100 6000 10800 4 0 0 5 0 0 16 0.0000 4 195 135 6100 11040 6\001 -6 6 9600 10800 9900 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 10800 9900 10800 9900 11100 9600 11100 9600 10800 4 0 0 5 0 0 16 0.0000 4 195 135 9700 11040 1\001 -6 6 9900 10800 10200 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 10800 10200 10800 10200 11100 9900 11100 9900 10800 4 0 0 15 0 0 16 0.0000 4 195 135 10000 11040 4\001 -6 6 10200 10800 10500 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 10800 10500 10800 10500 11100 10200 11100 10200 10800 4 0 0 5 0 0 16 0.0000 4 195 135 10300 11040 7\001 -6 6 6300 10800 6600 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 10800 6600 10800 6600 11100 6300 11100 6300 10800 4 0 0 5 0 0 16 0.0000 4 195 135 6400 11040 2\001 -6 6 6300 13800 6600 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 13800 6600 13800 6600 14100 6300 14100 6300 13800 4 0 0 5 0 0 16 0.0000 4 195 135 6400 14040 5\001 -6 6 9600 13800 9900 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 13800 9900 13800 9900 14100 9600 14100 9600 13800 4 0 0 15 0 0 16 0.0000 4 195 135 9700 14040 4\001 -6 6 9900 13800 10200 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 13800 10200 13800 10200 14100 9900 14100 9900 13800 4 0 0 5 0 0 16 0.0000 4 195 135 10000 14040 6\001 -6 6 10200 13800 10500 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 13800 10500 13800 10500 14100 10200 14100 10200 13800 4 0 0 15 0 0 16 0.0000 4 195 270 10225 14040 11\001 -6 6 6000 13800 6300 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 13800 6300 13800 6300 14100 6000 14100 6000 13800 4 0 0 15 0 0 16 0.0000 4 195 270 6025 14040 11\001 -6 6 2400 12600 2700 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 12600 2700 12600 2700 12900 2400 12900 2400 12600 4 0 0 5 0 0 16 0.0000 4 195 135 2500 12840 3\001 -6 6 2700 12600 3000 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 12600 3000 12600 3000 12900 2700 12900 2700 12600 4 0 0 5 0 0 16 0.0000 4 195 135 2800 12840 5\001 -6 6 3000 12600 3300 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 12600 3300 12600 3300 12900 3000 12900 3000 12600 4 0 0 5 0 0 16 0.0000 4 195 135 3100 12840 4\001 -6 6 3300 12600 3600 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 12600 3600 12600 3600 12900 3300 12900 3300 12600 4 0 0 5 0 0 16 0.0000 4 195 135 3400 12840 1\001 -6 6 2400 12000 2700 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 12000 2700 12000 2700 12300 2400 12300 2400 12000 4 0 0 5 0 0 16 0.0000 4 195 135 2500 12240 3\001 -6 6 3300 12000 3600 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 12000 3600 12000 3600 12300 3300 12300 3300 12000 4 0 0 5 0 0 16 0.0000 4 195 135 3400 12240 1\001 -6 6 4800 12600 5100 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 12600 5100 12600 5100 12900 4800 12900 4800 12600 4 0 0 5 0 0 16 0.0000 4 195 135 4900 12840 3\001 -6 6 5100 12600 5400 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 12600 5400 12600 5400 12900 5100 12900 5100 12600 4 0 0 5 0 0 16 0.0000 4 195 135 5200 12840 2\001 -6 6 4800 12000 5100 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 12000 5100 12000 5100 12300 4800 12300 4800 12000 4 0 0 5 0 0 16 0.0000 4 195 135 4900 12240 3\001 -6 6 5100 12000 5400 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 12000 5400 12000 5400 12300 5100 12300 5100 12000 4 0 0 5 0 0 16 0.0000 4 195 135 5200 12240 2\001 -6 6 3000 12000 3300 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 12000 3300 12000 3300 12300 3000 12300 3000 12000 4 0 0 15 0 0 16 0.0000 4 195 270 3025 12240 11\001 -6 6 2700 12000 3000 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 12000 3000 12000 3000 12300 2700 12300 2700 12000 4 0 0 15 0 0 16 0.0000 4 195 270 2725 12240 12\001 -6 6 3900 12600 4200 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 12600 4200 12600 4200 12900 3900 12900 3900 12600 4 0 0 5 0 0 16 0.0000 4 195 135 4000 12840 4\001 -6 6 4200 12600 4500 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 12600 4500 12600 4500 12900 4200 12900 4200 12600 4 0 0 5 0 0 16 0.0000 4 195 135 4300 12840 2\001 -6 6 4500 12600 4800 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 12600 4800 12600 4800 12900 4500 12900 4500 12600 4 0 0 5 0 0 16 0.0000 4 195 135 4600 12840 1\001 -6 6 4200 12000 4500 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 12000 4500 12000 4500 12300 4200 12300 4200 12000 4 0 0 5 0 0 16 0.0000 4 195 135 4300 12240 2\001 -6 6 4500 12000 4800 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 12000 4800 12000 4800 12300 4500 12300 4500 12000 4 0 0 5 0 0 16 0.0000 4 195 135 4600 12240 1\001 -6 6 3900 12000 4200 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 12000 4200 12000 4200 12300 3900 12300 3900 12000 4 0 0 15 0 0 16 0.0000 4 195 270 3925 12240 11\001 -6 6 2400 13800 2700 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 13800 2700 13800 2700 14100 2400 14100 2400 13800 4 0 0 15 0 0 16 0.0000 4 195 270 2425 14040 11\001 -6 6 2700 13800 3000 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 13800 3000 13800 3000 14100 2700 14100 2700 13800 4 0 0 5 0 0 16 0.0000 4 195 135 2800 14040 5\001 -6 6 3000 13800 3300 14100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 13800 3300 13800 3300 14100 3000 14100 3000 13800 4 0 0 5 0 0 16 0.0000 4 195 135 3100 14040 9\001 -6 6 3000 10800 3300 11100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 10800 3300 10800 3300 11100 3000 11100 3000 10800 4 0 0 5 0 0 16 0.0000 4 195 135 3100 11040 6\001 -6 6 7500 12600 7800 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 12600 7800 12600 7800 12900 7500 12900 7500 12600 4 0 0 5 0 0 16 0.0000 4 195 135 7600 12840 4\001 -6 6 7800 12600 8100 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 12600 8100 12600 8100 12900 7800 12900 7800 12600 4 0 0 5 0 0 16 0.0000 4 195 135 7900 12840 5\001 -6 6 8100 12600 8400 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 12600 8400 12600 8400 12900 8100 12900 8100 12600 4 0 0 5 0 0 16 0.0000 4 195 135 8200 12840 3\001 -6 6 8400 12600 8700 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 12600 8700 12600 8700 12900 8400 12900 8400 12600 4 0 0 5 0 0 16 0.0000 4 195 135 8500 12840 6\001 -6 6 8700 12600 9000 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 12600 9000 12600 9000 12900 8700 12900 8700 12600 4 0 0 5 0 0 16 0.0000 4 195 135 8800 12840 2\001 -6 6 7500 12000 7800 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 12000 7800 12000 7800 12300 7500 12300 7500 12000 4 0 0 5 0 0 16 0.0000 4 195 135 7600 12240 3\001 -6 6 8100 12000 8400 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 12000 8400 12000 8400 12300 8100 12300 8100 12000 4 0 0 5 0 0 16 0.0000 4 195 135 8200 12240 2\001 -6 6 7800 12000 8100 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 12000 8100 12000 8100 12300 7800 12300 7800 12000 4 0 0 15 0 0 16 0.0000 4 195 270 7825 12240 17\001 -6 6 8400 12000 8700 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 12000 8700 12000 8700 12300 8400 12300 8400 12000 4 0 0 15 0 0 16 0.0000 4 195 270 8425 12240 19\001 -6 6 8700 12000 9000 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 12000 9000 12000 9000 12300 8700 12300 8700 12000 4 0 0 15 0 0 16 0.0000 4 195 270 8725 12240 12\001 -6 6 6600 12600 6900 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 12600 6900 12600 6900 12900 6600 12900 6600 12600 4 0 0 5 0 0 16 0.0000 4 195 135 6700 12840 3\001 -6 6 6300 12600 6600 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 12600 6600 12600 6600 12900 6300 12900 6300 12600 4 0 0 5 0 0 16 0.0000 4 195 135 6400 12840 6\001 -6 6 6900 12600 7200 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 12600 7200 12600 7200 12900 6900 12900 6900 12600 4 0 0 5 0 0 16 0.0000 4 195 135 7000 12840 1\001 -6 6 6600 12000 6900 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 12000 6900 12000 6900 12300 6600 12300 6600 12000 4 0 0 5 0 0 16 0.0000 4 195 135 6700 12240 2\001 -6 6 6300 12000 6600 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 12000 6600 12000 6600 12300 6300 12300 6300 12000 4 0 0 15 0 0 16 0.0000 4 195 270 6325 12240 19\001 -6 6 6900 12000 7200 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 12000 7200 12000 7200 12300 6900 12300 6900 12000 4 0 0 15 0 0 16 0.0000 4 195 270 6925 12240 11\001 -6 6 9600 12600 9900 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 12600 9900 12600 9900 12900 9600 12900 9600 12600 4 0 0 5 0 0 16 0.0000 4 195 135 9700 12840 4\001 -6 6 9900 12600 10200 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 12600 10200 12600 10200 12900 9900 12900 9900 12600 4 0 0 5 0 0 16 0.0000 4 195 135 10000 12840 2\001 -6 6 10200 12600 10500 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 12600 10500 12600 10500 12900 10200 12900 10200 12600 4 0 0 5 0 0 16 0.0000 4 195 135 10300 12840 3\001 -6 6 9600 12000 9900 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 12000 9900 12000 9900 12300 9600 12300 9600 12000 4 0 0 15 0 0 16 0.0000 4 195 270 9625 12240 11\001 -6 6 10200 12000 10500 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 12000 10500 12000 10500 12300 10200 12300 10200 12000 4 0 0 15 0 0 16 0.0000 4 195 270 10225 12240 19\001 -6 6 9900 12000 10200 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 12000 10200 12000 10200 12300 9900 12300 9900 12000 4 0 0 15 0 0 16 0.0000 4 195 270 9925 12240 18\001 -6 6 10500 12600 10800 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10500 12600 10800 12600 10800 12900 10500 12900 10500 12600 4 0 0 5 0 0 16 0.0000 4 195 135 10600 12840 1\001 -6 6 10800 12600 11100 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10800 12600 11100 12600 11100 12900 10800 12900 10800 12600 4 0 0 5 0 0 16 0.0000 4 195 135 10900 12840 3\001 -6 6 10500 12000 10800 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10500 12000 10800 12000 10800 12300 10500 12300 10500 12000 4 0 0 15 0 0 16 0.0000 4 195 270 10525 12240 17\001 -6 6 10800 12000 11100 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10800 12000 11100 12000 11100 12300 10800 12300 10800 12000 4 0 0 15 0 0 16 0.0000 4 195 270 10825 12240 19\001 -6 6 11400 12600 11700 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11400 12600 11700 12600 11700 12900 11400 12900 11400 12600 4 0 0 15 0 0 16 0.0000 4 195 135 11500 12840 4\001 -6 6 11700 12600 12000 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11700 12600 12000 12600 12000 12900 11700 12900 11700 12600 4 0 0 5 0 0 16 0.0000 4 195 135 11800 12840 1\001 -6 6 12000 12600 12300 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12000 12600 12300 12600 12300 12900 12000 12900 12000 12600 4 0 0 5 0 0 16 0.0000 4 195 135 12100 12840 2\001 -6 6 12300 12600 12600 12900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12300 12600 12600 12600 12600 12900 12300 12900 12300 12600 4 0 0 5 0 0 16 0.0000 4 195 135 12400 12840 5\001 -6 6 11400 12000 11700 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11400 12000 11700 12000 11700 12300 11400 12300 11400 12000 4 0 0 15 0 0 16 0.0000 4 195 270 11425 12240 11\001 -6 6 11700 12000 12000 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11700 12000 12000 12000 12000 12300 11700 12300 11700 12000 4 0 0 15 0 0 16 0.0000 4 195 270 11725 12240 17\001 -6 6 12000 12000 12300 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12000 12000 12300 12000 12300 12300 12000 12300 12000 12000 4 0 0 15 0 0 16 0.0000 4 195 270 12025 12240 18\001 -6 6 12300 12000 12600 12300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12300 12000 12600 12000 12600 12300 12300 12300 12300 12000 4 0 0 15 0 0 16 0.0000 4 195 270 12325 12240 12\001 -6 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 2100 14400 2100 4800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 5700 14400 5700 4800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 9300 14400 9300 4800 2 2 0 1 0 0 50 -1 10 0.000 0 0 -1 0 0 5 12900 4800 0 4800 0 4500 12900 4500 12900 4800 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 11100 2850 11550 2550 11550 2550 12000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 11100 2550 11475 4950 11475 4950 12000 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 9750 11100 9750 12000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 10050 11100 10050 11625 10650 11625 10650 12000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 10350 11100 10350 11550 11550 11550 11550 12000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 9750 13800 9750 13275 10650 13275 10650 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 10050 13800 10050 13350 11250 13350 11250 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 10350 13800 10350 13425 12750 13425 12750 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 6150 11100 6150 11550 7650 11550 7650 12000 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 6450 11100 6450 12000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 6150 13800 6150 13275 9150 13275 9150 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 6450 13800 6450 13350 7350 13350 7350 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 13800 2550 13425 5550 13425 5550 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 13800 2850 13350 3750 13350 3750 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 13800 3150 13275 4950 13275 4950 12900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 11100 3150 11625 4050 11625 4050 12000 4 0 7 40 -1 0 16 0.0000 4 195 1140 150 4731 Local data\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 9825 vertgstnbr\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 10425 edgelocnbr\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 12825 edgegsttab\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 12225 edgeloctab\001 4 0 0 20 0 12 16 0.0000 4 180 1650 300 11025 vertloctab\001 4 0 0 20 0 12 16 0.0000 4 180 1650 300 14025 vendloctab\001 -6 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 8400 1200 7500 2100 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 13 6600 1200 7500 2100 6600 3000 5700 2100 6600 1200 6600 3000 7500 3900 7500 2100 8400 3000 9300 2100 8400 1200 8400 3000 7500 3900 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 6 7875 975 7725 1425 8025 2025 7800 2850 8025 3675 7875 4125 0.000 1.000 1.000 1.000 1.000 0.000 3 0 2 1 0 7 40 -1 -1 3.000 0 0 0 7 7125 975 6975 1275 7050 1875 6900 2325 7200 3000 6975 3675 6975 4125 0.000 1.000 1.000 1.000 1.000 1.000 0.000 4 0 0 20 0 12 16 0.0000 4 180 1155 300 825 baseval\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 2025 edgeglbnbr\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 3225 proccnttab\001 4 0 0 20 0 12 16 0.0000 4 240 1650 300 2625 procglbnbr\001 scotch_6.0.9/doc/src/ptscotch/p_f_gr1.eps0000644000302600021200000011547613464776470020526 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha7 %%CreationDate: Tue Feb 5 15:59:38 2008 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 776 830 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 830 moveto 0 0 lineto 776 0 lineto 776 830 lineto closepath clip newpath 0.7 828.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 55 % Polyline 0 slj 0 slc 0.000 slw n 4050 4800 m 3750 4800 l 3750 4500 l 4050 4500 l cp gs 0.50 setgray ef gr % Polyline n 7650 4800 m 7350 4800 l 7350 4500 l 7650 4500 l cp gs 0.50 setgray ef gr % Polyline n 11250 4800 m 10950 4800 l 10950 4500 l 11250 4500 l cp gs 0.50 setgray ef gr % here ends figure; % % here starts figure with depth 50 % Polyline 0 slj 0 slc 7.500 slw n 12900 300 m 0 300 l 0 0 l 12900 0 l cp gs 0.50 setgray ef gr gs col0 s gr % Polyline n 8400 1200 m 7500 2100 l gs col0 s gr % Polyline n 6600 1200 m 7500 2100 l 6600 3000 l 5700 2100 l 6600 1200 l 6600 3000 l 7500 3900 l 7500 2100 l 8400 3000 l 9300 2100 l 8400 1200 l 8400 3000 l 7500 3900 l gs col0 s gr % Polyline n 4800 8100 m 3900 7200 l 4800 6300 l 3900 5400 l 3900 7200 l 3000 6300 l 3900 5400 l gs col0 s gr % Polyline n 6600 5400 m 7500 6300 l 6600 7200 l 7500 8100 l 7500 6300 l 8400 7200 l 7500 8100 l gs col0 s gr % Polyline n 7500 6300 m 8400 5400 l gs col0 s gr % Polyline n 10200 8100 m 11100 7200 l 10200 6300 l 11100 5400 l 11100 7200 l 12000 6300 l 11100 5400 l gs col0 s gr % Polyline n 2100 13800 m 2100 4800 l gs col0 s gr % Polyline n 5700 13800 m 5700 4800 l gs col0 s gr % Polyline n 9300 13800 m 9300 4800 l gs col0 s gr % Polyline n 12900 4800 m 0 4800 l 0 4500 l 12900 4500 l cp gs 0.50 setgray ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 40 /Times-Roman ff 285.00 scf sf 174 231 m gs 1 -1 sc (Duplicated data) col7 sh gr % Polyline 2 slj 0 slc 7.500 slw [15 45] 45 sd n 7875 975 m 7874 978 l 7872 986 l 7868 999 l 7863 1018 l 7856 1043 l 7848 1073 l 7839 1106 l 7831 1141 l 7823 1175 l 7815 1209 l 7809 1242 l 7804 1272 l 7800 1301 l 7797 1328 l 7795 1354 l 7795 1378 l 7795 1402 l 7797 1426 l 7800 1450 l 7803 1470 l 7807 1491 l 7812 1512 l 7817 1534 l 7822 1556 l 7829 1579 l 7835 1603 l 7843 1628 l 7850 1654 l 7858 1680 l 7865 1707 l 7873 1734 l 7881 1761 l 7889 1789 l 7896 1817 l 7903 1845 l 7909 1872 l 7915 1900 l 7921 1927 l 7926 1955 l 7930 1982 l 7933 2008 l 7936 2035 l 7938 2063 l 7938 2086 l 7939 2110 l 7939 2134 l 7938 2159 l 7937 2185 l 7935 2211 l 7933 2238 l 7931 2266 l 7928 2294 l 7925 2323 l 7922 2352 l 7918 2382 l 7915 2412 l 7911 2443 l 7907 2473 l 7903 2504 l 7899 2535 l 7896 2565 l 7892 2595 l 7889 2625 l 7886 2655 l 7883 2684 l 7881 2712 l 7879 2741 l 7877 2768 l 7876 2796 l 7875 2823 l 7875 2850 l 7875 2879 l 7876 2908 l 7878 2938 l 7879 2968 l 7882 2998 l 7885 3029 l 7888 3061 l 7892 3092 l 7896 3124 l 7900 3157 l 7905 3189 l 7909 3222 l 7914 3254 l 7919 3286 l 7924 3317 l 7929 3348 l 7934 3379 l 7938 3408 l 7943 3437 l 7947 3465 l 7950 3491 l 7954 3517 l 7956 3542 l 7959 3566 l 7961 3590 l 7963 3613 l 7964 3639 l 7964 3664 l 7964 3690 l 7963 3715 l 7961 3741 l 7958 3768 l 7954 3795 l 7949 3824 l 7943 3854 l 7937 3886 l 7930 3918 l 7922 3951 l 7914 3984 l 7905 4015 l 7898 4044 l 7891 4070 l 7885 4090 l 7881 4106 l 7877 4117 l 7876 4122 l 7875 4125 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7125 975 m 7124 978 l 7120 985 l 7115 997 l 7108 1014 l 7098 1036 l 7088 1060 l 7077 1087 l 7066 1114 l 7056 1141 l 7047 1167 l 7039 1191 l 7032 1215 l 7026 1237 l 7022 1259 l 7018 1281 l 7015 1302 l 7013 1325 l 7011 1344 l 7010 1364 l 7009 1384 l 7009 1406 l 7009 1428 l 7009 1451 l 7010 1476 l 7010 1500 l 7011 1526 l 7012 1552 l 7013 1578 l 7013 1605 l 7014 1632 l 7015 1658 l 7015 1684 l 7016 1709 l 7016 1734 l 7016 1759 l 7016 1782 l 7015 1805 l 7014 1828 l 7013 1850 l 7011 1872 l 7009 1894 l 7006 1915 l 7003 1937 l 7000 1960 l 6997 1983 l 6994 2006 l 6990 2029 l 6987 2053 l 6983 2077 l 6980 2102 l 6977 2126 l 6975 2151 l 6972 2175 l 6971 2199 l 6969 2223 l 6969 2246 l 6969 2270 l 6969 2293 l 6970 2316 l 6972 2339 l 6975 2363 l 6978 2384 l 6982 2406 l 6987 2429 l 6992 2453 l 6997 2477 l 7004 2502 l 7010 2528 l 7018 2555 l 7025 2582 l 7033 2610 l 7040 2639 l 7048 2668 l 7056 2697 l 7064 2726 l 7071 2755 l 7078 2784 l 7084 2812 l 7090 2840 l 7096 2868 l 7101 2895 l 7105 2922 l 7108 2948 l 7111 2974 l 7113 3000 l 7114 3026 l 7114 3052 l 7113 3078 l 7112 3105 l 7110 3132 l 7108 3160 l 7104 3188 l 7101 3216 l 7096 3245 l 7091 3274 l 7086 3303 l 7081 3332 l 7075 3361 l 7069 3390 l 7062 3418 l 7056 3445 l 7050 3472 l 7044 3498 l 7038 3523 l 7032 3547 l 7027 3571 l 7022 3594 l 7017 3616 l 7013 3638 l 7008 3661 l 7004 3684 l 7000 3707 l 6997 3730 l 6994 3754 l 6991 3779 l 6989 3805 l 6987 3832 l 6985 3861 l 6983 3891 l 6981 3922 l 6980 3954 l 6979 3986 l 6978 4017 l 6977 4046 l 6976 4070 l 6976 4091 l 6975 4106 l 6975 4117 l 6975 4122 l 6975 4125 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 4425 5175 m 4424 5178 l 4420 5185 l 4415 5197 l 4408 5214 l 4398 5236 l 4388 5260 l 4377 5287 l 4366 5314 l 4356 5341 l 4347 5367 l 4339 5391 l 4332 5415 l 4326 5437 l 4322 5459 l 4318 5481 l 4315 5502 l 4313 5525 l 4311 5544 l 4310 5564 l 4309 5584 l 4309 5606 l 4309 5628 l 4309 5651 l 4310 5676 l 4310 5700 l 4311 5726 l 4312 5752 l 4313 5778 l 4313 5805 l 4314 5832 l 4315 5858 l 4315 5884 l 4316 5909 l 4316 5934 l 4316 5959 l 4316 5982 l 4315 6005 l 4314 6028 l 4313 6050 l 4311 6072 l 4309 6094 l 4306 6115 l 4303 6137 l 4300 6160 l 4297 6183 l 4294 6206 l 4290 6229 l 4287 6253 l 4283 6277 l 4280 6302 l 4277 6326 l 4275 6351 l 4272 6375 l 4271 6399 l 4269 6423 l 4269 6446 l 4269 6470 l 4269 6493 l 4270 6516 l 4272 6539 l 4275 6563 l 4278 6584 l 4282 6606 l 4287 6629 l 4292 6653 l 4297 6677 l 4304 6702 l 4310 6728 l 4318 6755 l 4325 6782 l 4333 6810 l 4340 6839 l 4348 6868 l 4356 6897 l 4364 6926 l 4371 6955 l 4378 6984 l 4384 7012 l 4390 7040 l 4396 7068 l 4401 7095 l 4405 7122 l 4408 7148 l 4411 7174 l 4413 7200 l 4414 7226 l 4414 7252 l 4413 7278 l 4412 7305 l 4410 7332 l 4408 7360 l 4404 7388 l 4401 7416 l 4396 7445 l 4391 7474 l 4386 7503 l 4381 7532 l 4375 7561 l 4369 7590 l 4362 7618 l 4356 7645 l 4350 7672 l 4344 7698 l 4338 7723 l 4332 7747 l 4327 7771 l 4322 7794 l 4317 7816 l 4313 7838 l 4308 7861 l 4304 7884 l 4300 7907 l 4297 7930 l 4294 7954 l 4291 7979 l 4289 8005 l 4287 8032 l 4285 8061 l 4283 8091 l 4281 8122 l 4280 8154 l 4279 8186 l 4278 8217 l 4277 8246 l 4276 8270 l 4276 8291 l 4275 8306 l 4275 8317 l 4275 8322 l 4275 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7875 5175 m 7874 5178 l 7872 5186 l 7868 5199 l 7863 5218 l 7856 5243 l 7848 5273 l 7839 5306 l 7831 5341 l 7823 5375 l 7815 5409 l 7809 5442 l 7804 5472 l 7800 5501 l 7797 5528 l 7795 5554 l 7795 5578 l 7795 5602 l 7797 5626 l 7800 5650 l 7803 5670 l 7807 5691 l 7812 5712 l 7817 5734 l 7822 5756 l 7829 5779 l 7835 5803 l 7843 5828 l 7850 5854 l 7858 5880 l 7865 5907 l 7873 5934 l 7881 5961 l 7889 5989 l 7896 6017 l 7903 6045 l 7909 6072 l 7915 6100 l 7921 6127 l 7926 6155 l 7930 6182 l 7933 6208 l 7936 6235 l 7938 6263 l 7938 6286 l 7939 6310 l 7939 6334 l 7938 6359 l 7937 6385 l 7935 6411 l 7933 6438 l 7931 6466 l 7928 6494 l 7925 6523 l 7922 6552 l 7918 6582 l 7915 6612 l 7911 6643 l 7907 6673 l 7903 6704 l 7899 6735 l 7896 6765 l 7892 6795 l 7889 6825 l 7886 6855 l 7883 6884 l 7881 6912 l 7879 6941 l 7877 6968 l 7876 6996 l 7875 7023 l 7875 7050 l 7875 7079 l 7876 7108 l 7878 7138 l 7879 7168 l 7882 7198 l 7885 7229 l 7888 7261 l 7892 7292 l 7896 7324 l 7900 7357 l 7905 7389 l 7909 7422 l 7914 7454 l 7919 7486 l 7924 7517 l 7929 7548 l 7934 7579 l 7938 7608 l 7943 7637 l 7947 7665 l 7950 7691 l 7954 7717 l 7956 7742 l 7959 7766 l 7961 7790 l 7963 7813 l 7964 7839 l 7964 7864 l 7964 7890 l 7963 7915 l 7961 7941 l 7958 7968 l 7954 7995 l 7949 8024 l 7943 8054 l 7937 8086 l 7930 8118 l 7922 8151 l 7914 8184 l 7905 8215 l 7898 8244 l 7891 8270 l 7885 8290 l 7881 8306 l 7877 8317 l 7876 8322 l 7875 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 7125 5175 m 7124 5178 l 7120 5185 l 7115 5197 l 7108 5214 l 7098 5236 l 7088 5260 l 7077 5287 l 7066 5314 l 7056 5341 l 7047 5367 l 7039 5391 l 7032 5415 l 7026 5437 l 7022 5459 l 7018 5481 l 7015 5502 l 7013 5525 l 7011 5544 l 7010 5564 l 7009 5584 l 7009 5606 l 7009 5628 l 7009 5651 l 7010 5676 l 7010 5700 l 7011 5726 l 7012 5752 l 7013 5778 l 7013 5805 l 7014 5832 l 7015 5858 l 7015 5884 l 7016 5909 l 7016 5934 l 7016 5959 l 7016 5982 l 7015 6005 l 7014 6028 l 7013 6050 l 7011 6072 l 7009 6094 l 7006 6115 l 7003 6137 l 7000 6160 l 6997 6183 l 6994 6206 l 6990 6229 l 6987 6253 l 6983 6277 l 6980 6302 l 6977 6326 l 6975 6351 l 6972 6375 l 6971 6399 l 6969 6423 l 6969 6446 l 6969 6470 l 6969 6493 l 6970 6516 l 6972 6539 l 6975 6563 l 6978 6584 l 6982 6606 l 6987 6629 l 6992 6653 l 6997 6677 l 7004 6702 l 7010 6728 l 7018 6755 l 7025 6782 l 7033 6810 l 7040 6839 l 7048 6868 l 7056 6897 l 7064 6926 l 7071 6955 l 7078 6984 l 7084 7012 l 7090 7040 l 7096 7068 l 7101 7095 l 7105 7122 l 7108 7148 l 7111 7174 l 7113 7200 l 7114 7226 l 7114 7252 l 7113 7278 l 7112 7305 l 7110 7332 l 7108 7360 l 7104 7388 l 7101 7416 l 7096 7445 l 7091 7474 l 7086 7503 l 7081 7532 l 7075 7561 l 7069 7590 l 7062 7618 l 7056 7645 l 7050 7672 l 7044 7698 l 7038 7723 l 7032 7747 l 7027 7771 l 7022 7794 l 7017 7816 l 7013 7838 l 7008 7861 l 7004 7884 l 7000 7907 l 6997 7930 l 6994 7954 l 6991 7979 l 6989 8005 l 6987 8032 l 6985 8061 l 6983 8091 l 6981 8122 l 6980 8154 l 6979 8186 l 6978 8217 l 6977 8246 l 6976 8270 l 6976 8291 l 6975 8306 l 6975 8317 l 6975 8322 l 6975 8325 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 10575 5175 m 10574 5178 l 10572 5186 l 10568 5199 l 10563 5218 l 10556 5243 l 10548 5273 l 10539 5306 l 10531 5341 l 10523 5375 l 10515 5409 l 10509 5442 l 10504 5472 l 10500 5501 l 10497 5528 l 10495 5554 l 10495 5578 l 10495 5602 l 10497 5626 l 10500 5650 l 10503 5670 l 10507 5691 l 10512 5712 l 10517 5734 l 10522 5756 l 10529 5779 l 10535 5803 l 10543 5828 l 10550 5854 l 10558 5880 l 10565 5907 l 10573 5934 l 10581 5961 l 10589 5989 l 10596 6017 l 10603 6045 l 10609 6072 l 10615 6100 l 10621 6127 l 10626 6155 l 10630 6182 l 10633 6208 l 10636 6235 l 10638 6263 l 10638 6286 l 10639 6310 l 10639 6334 l 10638 6359 l 10637 6385 l 10635 6411 l 10633 6438 l 10631 6466 l 10628 6494 l 10625 6523 l 10622 6552 l 10618 6582 l 10615 6612 l 10611 6643 l 10607 6673 l 10603 6704 l 10599 6735 l 10596 6765 l 10592 6795 l 10589 6825 l 10586 6855 l 10583 6884 l 10581 6912 l 10579 6941 l 10577 6968 l 10576 6996 l 10575 7023 l 10575 7050 l 10575 7079 l 10576 7108 l 10578 7138 l 10579 7168 l 10582 7198 l 10585 7229 l 10588 7261 l 10592 7292 l 10596 7324 l 10600 7357 l 10605 7389 l 10609 7422 l 10614 7454 l 10619 7486 l 10624 7517 l 10629 7548 l 10634 7579 l 10638 7608 l 10643 7637 l 10647 7665 l 10650 7691 l 10654 7717 l 10656 7742 l 10659 7766 l 10661 7790 l 10663 7813 l 10664 7839 l 10664 7864 l 10664 7890 l 10663 7915 l 10661 7941 l 10658 7968 l 10654 7995 l 10649 8024 l 10643 8054 l 10637 8086 l 10630 8118 l 10622 8151 l 10614 8184 l 10605 8215 l 10598 8244 l 10591 8270 l 10585 8290 l 10581 8306 l 10577 8317 l 10576 8322 l 10575 8325 l gs col0 s gr [] 0 sd /Times-Roman ff 240.00 scf sf 150 4731 m gs 1 -1 sc (Local data) col7 sh gr % here ends figure; % % here starts figure with depth 35 /Times-Roman ff 240.00 scf sf 3825 4731 m gs 1 -1 sc (0) col7 sh gr /Times-Roman ff 240.00 scf sf 7425 4731 m gs 1 -1 sc (1) col7 sh gr /Times-Roman ff 240.00 scf sf 11025 4731 m gs 1 -1 sc (2) col7 sh gr % here ends figure; % % here starts figure with depth 20 /Courier ff 240.00 scf sf 300 1425 m gs 1 -1 sc (vertglbnbr) col0 sh gr % Polyline 0 slj 0 slc 7.500 slw [15 45] 45 sd n 5100 13200 m 5400 13200 l 5400 13500 l 5100 13500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5400 13200 m 5100 13500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 13200 m 5400 13500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8400 13200 m 8700 13200 l 8700 13500 l 8400 13500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8700 13200 m 8400 13500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8400 13200 m 8700 13500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 12600 m 5400 12600 l 5400 12900 l 5100 12900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5400 12600 m 5100 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 12600 m 5400 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8400 12600 m 8700 12600 l 8700 12900 l 8400 12900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8700 12600 m 8400 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 8400 12600 m 8700 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12300 12600 m 12600 12600 l 12600 12900 l 12300 12900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12600 12600 m 12300 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12300 12600 m 12600 12900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12300 13200 m 12600 13200 l 12600 13500 l 12300 13500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12600 13200 m 12300 13500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12300 13200 m 12600 13500 l gs col0 s gr [] 0 sd /Courier ff 240.00 scf sf 300 9225 m gs 1 -1 sc (vertlocnbr) col0 sh gr % Polyline gs clippath 3120 12448 m 3120 12615 l 3180 12615 l 3180 12448 l 3180 12448 l 3150 12568 l 3120 12448 l cp eoclip n 2850 11700 m 2850 12225 l 3150 12225 l 3150 12600 l gs col0 s gr gr % arrowhead n 3120 12448 m 3150 12568 l 3180 12448 l 3120 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7620 12448 m 7620 12615 l 7680 12615 l 7680 12448 l 7680 12448 l 7650 12568 l 7620 12448 l cp eoclip n 6450 11700 m 6450 12150 l 7650 12150 l 7650 12600 l gs col0 s gr gr % arrowhead n 7620 12448 m 7650 12568 l 7680 12448 l 7620 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8520 12448 m 8520 12615 l 8580 12615 l 8580 12448 l 8580 12448 l 8550 12568 l 8520 12448 l cp eoclip n 6750 11700 m 6750 12075 l 8550 12075 l 8550 12600 l gs col0 s gr gr % arrowhead n 8520 12448 m 8550 12568 l 8580 12448 l 8520 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4320 12448 m 4320 12615 l 4380 12615 l 4380 12448 l 4380 12448 l 4350 12568 l 4320 12448 l cp eoclip n 3150 11700 m 3150 12150 l 4350 12150 l 4350 12600 l gs col0 s gr gr % arrowhead n 4320 12448 m 4350 12568 l 4380 12448 l 4320 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5220 12448 m 5220 12615 l 5280 12615 l 5280 12448 l 5280 12448 l 5250 12568 l 5220 12448 l cp eoclip n 3450 11625 m 3450 12075 l 5250 12075 l 5250 12600 l gs col0 s gr gr % arrowhead n 5220 12448 m 5250 12568 l 5280 12448 l 5220 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10620 12448 m 10620 12615 l 10680 12615 l 10680 12448 l 10680 12448 l 10650 12568 l 10620 12448 l cp eoclip n 10050 11700 m 10050 12225 l 10650 12225 l 10650 12600 l gs col0 s gr gr % arrowhead n 10620 12448 m 10650 12568 l 10680 12448 l 10620 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 11220 12448 m 11220 12615 l 11280 12615 l 11280 12448 l 11280 12448 l 11250 12568 l 11220 12448 l cp eoclip n 10350 11700 m 10350 12150 l 11250 12150 l 11250 12600 l gs col0 s gr gr % arrowhead n 11220 12448 m 11250 12568 l 11280 12448 l 11220 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 12420 12448 m 12420 12615 l 12480 12615 l 12480 12448 l 12480 12448 l 12450 12568 l 12420 12448 l cp eoclip n 10650 11700 m 10650 12075 l 12450 12075 l 12450 12600 l gs col0 s gr gr % arrowhead n 12420 12448 m 12450 12568 l 12480 12448 l 12420 12448 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 300 11025 m gs 1 -1 sc (vendloctab) col0 sh gr /Courier ff 240.00 scf sf 300 11625 m gs 1 -1 sc (vertloctab) col0 sh gr /Courier ff 240.00 scf sf 300 9825 m gs 1 -1 sc (vertgstnbr) col0 sh gr /Courier ff 240.00 scf sf 300 10425 m gs 1 -1 sc (edgelocnbr) col0 sh gr /Courier ff 240.00 scf sf 300 13425 m gs 1 -1 sc (edgegsttab) col0 sh gr /Courier ff 240.00 scf sf 300 12825 m gs 1 -1 sc (edgeloctab) col0 sh gr /Courier ff 240.00 scf sf 300 825 m gs 1 -1 sc (baseval) col0 sh gr /Courier ff 240.00 scf sf 300 2025 m gs 1 -1 sc (edgeglbnbr) col0 sh gr /Courier ff 240.00 scf sf 300 3225 m gs 1 -1 sc (proccnttab) col0 sh gr /Courier ff 240.00 scf sf 300 2625 m gs 1 -1 sc (procglbnbr) col0 sh gr /Courier ff 240.00 scf sf 300 3825 m gs 1 -1 sc (procvrttab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 0 slj 0 slc 7.500 slw n 2400 600 m 2700 600 l 2700 900 l 2400 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1800 m 2700 1800 l 2700 2100 l 2400 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 2040 m gs 1 -1 sc (26) col0 sh gr % Polyline n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3600 m 3300 3600 l 3300 3900 l 3000 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3600 m 3000 3600 l 3000 3900 l 2700 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 3600 m 3600 3600 l 3600 3900 l 3300 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3600 m 2700 3600 l 2700 3900 l 2400 3900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 11400 m 2700 11400 l 2700 11700 l 2400 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 11400 m 3000 11400 l 3000 11700 l 2700 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 11400 m 3300 11400 l 3300 11700 l 3000 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 11400 m 3600 11400 l 3600 11700 l 3300 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 11640 m gs 1 -1 sc (10) col0 sh gr % Polyline n 2400 9600 m 2700 9600 l 2700 9900 l 2400 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 10200 m 2700 10200 l 2700 10500 l 2400 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 11400 m 6300 11400 l 6300 11700 l 6000 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 9600 m 6300 9600 l 6300 9900 l 6000 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 11400 m 6900 11400 l 6900 11700 l 6600 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 10200 m 6300 10200 l 6300 10500 l 6000 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 10200 m 9900 10200 l 9900 10500 l 9600 10500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 11400 m 9900 11400 l 9900 11700 l 9600 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 11400 m 10200 11400 l 10200 11700 l 9900 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10000 11640 m gs 1 -1 sc (4) col0 sh gr % Polyline n 9600 9600 m 9900 9600 l 9900 9900 l 9600 9900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 11400 m 10500 11400 l 10500 11700 l 10200 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10500 11400 m 10800 11400 l 10800 11700 l 10500 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10525 11640 m gs 1 -1 sc (10) col0 sh gr % Polyline n 6300 11400 m 6600 11400 l 6600 11700 l 6300 11700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 13200 m 2700 13200 l 2700 13500 l 2400 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 13200 m 3000 13200 l 3000 13500 l 2700 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 13200 m 3300 13200 l 3300 13500 l 3000 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 13200 m 3600 13200 l 3600 13500 l 3300 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 13200 m 3900 13200 l 3900 13500 l 3600 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 13200 m 4200 13200 l 4200 13500 l 3900 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 13200 m 6300 13200 l 6300 13500 l 6000 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 13200 m 6600 13200 l 6600 13500 l 6300 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 13200 m 6900 13200 l 6900 13500 l 6600 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 13200 m 7200 13200 l 7200 13500 l 6900 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 13200 m 4500 13200 l 4500 13500 l 4200 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 13200 m 4800 13200 l 4800 13500 l 4500 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 13200 m 5100 13200 l 5100 13500 l 4800 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 13200 m 9900 13200 l 9900 13500 l 9600 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 13200 m 10200 13200 l 10200 13500 l 9900 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 13200 m 10500 13200 l 10500 13500 l 10200 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10500 13200 m 10800 13200 l 10800 13500 l 10500 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10800 13200 m 11100 13200 l 11100 13500 l 10800 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11100 13200 m 11400 13200 l 11400 13500 l 11100 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11200 13440 m gs 1 -1 sc (4) col0 sh gr % Polyline n 11400 13200 m 11700 13200 l 11700 13500 l 11400 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11700 13200 m 12000 13200 l 12000 13500 l 11700 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12000 13200 m 12300 13200 l 12300 13500 l 12000 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 13200 m 8100 13200 l 8100 13500 l 7800 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 13200 m 7800 13200 l 7800 13500 l 7500 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 13200 m 7500 13200 l 7500 13500 l 7200 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 13200 m 8400 13200 l 8400 13500 l 8100 13500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 12600 m 2700 12600 l 2700 12900 l 2400 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 12600 m 3000 12600 l 3000 12900 l 2700 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 12600 m 3300 12600 l 3300 12900 l 3000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 12600 m 3600 12600 l 3600 12900 l 3300 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 12600 m 3900 12600 l 3900 12900 l 3600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 12600 m 4200 12600 l 4200 12900 l 3900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 12600 m 6300 12600 l 6300 12900 l 6000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 12600 m 6600 12600 l 6600 12900 l 6300 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 12600 m 6900 12600 l 6900 12900 l 6600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 12600 m 7200 12600 l 7200 12900 l 6900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 12600 m 4500 12600 l 4500 12900 l 4200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 12600 m 4800 12600 l 4800 12900 l 4500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 12600 m 5100 12600 l 5100 12900 l 4800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 12600 m 9900 12600 l 9900 12900 l 9600 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 12600 m 10200 12600 l 10200 12900 l 9900 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 12600 m 10500 12600 l 10500 12900 l 10200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10500 12600 m 10800 12600 l 10800 12900 l 10500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10800 12600 m 11100 12600 l 11100 12900 l 10800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11100 12600 m 11400 12600 l 11400 12900 l 11100 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11200 12840 m gs 1 -1 sc (4) col0 sh gr % Polyline n 11400 12600 m 11700 12600 l 11700 12900 l 11400 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11700 12600 m 12000 12600 l 12000 12900 l 11700 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12000 12600 m 12300 12600 l 12300 12900 l 12000 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 12600 m 8100 12600 l 8100 12900 l 7800 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 12600 m 7800 12600 l 7800 12900 l 7500 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 12600 m 7500 12600 l 7500 12900 l 7200 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 12600 m 8400 12600 l 8400 12900 l 8100 12900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 9000 m 2700 9000 l 2700 9300 l 2400 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 9000 m 6300 9000 l 6300 9300 l 6000 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 9000 m 9900 9000 l 9900 9300 l 9600 9300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 2520 12448 m 2520 12615 l 2580 12615 l 2580 12448 l 2580 12448 l 2550 12568 l 2520 12448 l cp eoclip n 2550 11700 m 2550 12600 l gs col0 s gr gr % arrowhead n 2520 12448 m 2550 12568 l 2580 12448 l 2520 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6120 12448 m 6120 12615 l 6180 12615 l 6180 12448 l 6180 12448 l 6150 12568 l 6120 12448 l cp eoclip n 6150 11700 m 6150 12600 l gs col0 s gr gr % arrowhead n 6120 12448 m 6150 12568 l 6180 12448 l 6120 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9720 12448 m 9720 12615 l 9780 12615 l 9780 12448 l 9780 12448 l 9750 12568 l 9720 12448 l cp eoclip n 9750 11700 m 9750 12600 l gs col0 s gr gr % arrowhead n 9720 12448 m 9750 12568 l 9780 12448 l 9720 12448 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2670 11248 m 2670 11415 l 2730 11415 l 2730 11248 l 2730 11248 l 2700 11368 l 2670 11248 l cp eoclip n 2400 10950 m 2700 10950 l 2700 11400 l gs col0 s gr gr % arrowhead n 2670 11248 m 2700 11368 l 2730 11248 l 2670 11248 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6270 11248 m 6270 11415 l 6330 11415 l 6330 11248 l 6330 11248 l 6300 11368 l 6270 11248 l cp eoclip n 6000 10950 m 6300 10950 l 6300 11400 l gs col0 s gr gr % arrowhead n 6270 11248 m 6300 11368 l 6330 11248 l 6270 11248 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9870 11248 m 9870 11415 l 9930 11415 l 9930 11248 l 9930 11248 l 9900 11368 l 9870 11248 l cp eoclip n 9600 10950 m 9900 10950 l 9900 11400 l gs col0 s gr gr % arrowhead n 9870 11248 m 9900 11368 l 9930 11248 l 9870 11248 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 3900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 1200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5700 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9300 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4800 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 4800 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 7500 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 8100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 6600 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 8400 5400 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 8400 7200 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 11100 7200 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 11100 5400 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 12000 6300 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10200 6300 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 10200 8100 150 150 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 7450 2190 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7450 3990 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8350 1290 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6550 3090 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6550 1290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5650 2190 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3850 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3850 5490 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2950 6390 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4750 6390 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 4750 8190 m gs 1 -1 sc (5) col7 sh gr /Times-Roman ff 240.00 scf sf 7450 6390 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7450 8190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6550 5490 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 6550 7290 m gs 1 -1 sc (3) col7 sh gr /Times-Roman ff 240.00 scf sf 8350 5490 m gs 1 -1 sc (5) col7 sh gr /Times-Roman ff 240.00 scf sf 11050 5490 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10150 6390 m gs 1 -1 sc (4) col7 sh gr /Times-Roman ff 240.00 scf sf 10150 8190 m gs 1 -1 sc (5) col7 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 8350 3090 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 9250 2190 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 8350 7290 m gs 1 -1 sc (6) col7 sh gr /Times-Roman ff 240.00 scf sf 11050 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 11950 6390 m gs 1 -1 sc (2) col0 sh gr % here ends figure; % % here starts figure with depth 5 /Times-Roman ff 240.00 scf sf 2500 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 3240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 2640 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 1440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 3840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 3840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 3840 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 3840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 11640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 11640 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 11640 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 9840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 10440 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 11640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 9840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 11640 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 10440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 10440 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 11640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 9840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 11640 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 11640 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 13440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 13440 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 13440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 13440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 13440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 13440 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 13440 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 13440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 13440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 13440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 13440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 13440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 10600 13440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10900 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 11500 13440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 11800 13440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 12100 13440 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 13440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 13440 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 13440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 13440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 12840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 12840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 12840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 12840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 12840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 12840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 12840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 10600 12840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 10900 12840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 11500 12840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 11800 12840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 12100 12840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 12840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 12840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 12840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 12840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 9240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 9240 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 9240 m gs 1 -1 sc (3) col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/epsf.sty0000644000302600021200000003212113303015264020132 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Document Style Option `epsf' (October 17 90)}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Inclusion of EPSF documents into [Oz]TeX documents. %% Michel Mauny - April 25 90. %% Emmanuel Chailloux - October 17 90 %% History: % --------- %% April 11 91 %% Fixed several bugs [mauny] %% * Now accepts lines as %%BoundingBox:100 200 102 23 %% without space here ^ %% * Added a \leavevmode for \epfs{} to be accepted as single %% element of a \begin{center} ... \end{center} %% * Extracted calls to \newdimen for them to be global %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TeX does itself the recognition of the Bounding Box of the drawing. %% The macro is: %% %% \epsf{filename} %% [xscale=/,yscale=/] <- optional %% or (hsize=,vsize=)in pt %% [ps=] <- optional %% %% Order of parameters is important, and the 3rd cannot be used without the %% 2nd. %% %% A null hsize indicates the hsize scaled by the vsize scaling. %% A null vsize indicates the vsize scaled by the hsize scaling. %% A double null is the unit. %% %% This is not the first package to do that sort of things, but that one %% reads by itself the size of drawings, and is thus really trivial to use. %% %% This package may be extended in two ways: %% * usage of different versions of TeX (dvi2ps) (simple, but not trivial) %% * usage of different EPSF files types (tested only with FreeHand 2.0) %% should be trivial... %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% How to use this package? %% Two things to do: %% %% 1. Create an EPSF file %% Use FreeHand or any program capable of creating such files from %% drawings or whatever. %% Use the `Export' menu item (or anything equivalent), creating %% the file (say) draw.eps %% %% 2. In your [La]TeX document, place the following command where you %% want your drawing to appear: %% \epsf{draw.eps} %% And your drawing will be at that place, in a TeX box. %% You don't have to leave extra place for your drawing: %% it will be in a TeX box. %% %% Z If you want to specify a scaling (say 33.33333 %) then use the %% optional argument: %% \epsf{draw.eps}[xscale=2/3,yscale=2/3] %% Scalings may be negative, but must be specified with the form: %% /. %% IMPORTANT: try to use small numbers, otherwise you risk to get %% a TeX internal registers overflow. %% %% Z if you prefer to specify the vsize of you picture then use the %% optional argument : %% \epsf{draw.ps}(hsize=200,vsize=300) %% Dimensions are given in points with the TeX convension : %% 1in or 72pt. %% %% ZZ For real hackers only: if you want to add some PostScript to your %% drawing (indeed at its beginning), then use the second optional %% argument: %% \epsf{draw.eps}[xscale=1/1,yscale=1/1][ps=] %% The second argument must be specified in order to use the %% second one (if you are tired to do that, make a new macro with %% your default scaling. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% \DVITOPS indicates the default TeX. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\oztex{OzTeX}% \def\dvips{dvips}% \def\dvitops{dvitops}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Provide the appropriate value to \DVITOPS before installation. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\let\DVITOPS=\dvitops% \let\DVITOPS=\dvips% %%\let\DVITOPS=\oztex% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Debugging options. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\yes={yes}% \def\no={no}% \let\DEBUGepsf=\yes% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% \@doTeXspecial has to be extended in order to work %% with other VI2PS programs %% OzTeX produces \special{ } %% and we produce - - translate %% scale %% %%%% Added by ... (PostScript comment) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% {% % #1 = filename % #2 = xmin, #3 = ymin % #4 = xmax, #5 = ymax % #6 = hscale, #7 = vscale % #8 = user postcript % \ifx\DEBUGepsf\yes % \typeout{doTexSpecial #1 #2 #3 #4 #5 #6 #7 #8} % \fi %%%% Added by \DVITOPS\space PostScript inclusion (epsf.sty) % %\advance\@pshoffset by -3pt %\catcode`\%=11 \newdimen\@pshscale\newdimen\@psvscale\newdimen\@pshoffset\newdimen\@psvoffset \gdef\@doTeXspecial#1#2#3#4#5#6#7#8{% \ifx\DVITOPS\oztex% \special{#1\space#6\space#7\space scale\space-#2\space-#3\space translate\space#8\space}% \else% \ifx\DVITOPS\dvips% \@pshscale=#6pt\@psvscale=#7pt %%% Some dvips require a percentage. In this case, comment out the next line \multiply\@pshscale by 100\multiply\@psvscale by 100% \@pshoffset=-#6pt\multiply\@pshoffset by #2 %\advance\@pshoffset by -1pt% \@psvoffset=-#7pt\multiply\@psvoffset by #3% \special{psfile="#1"\space% vscale=\expandafter\@numbof\the\@psvscale\space% hoffset=\expandafter\@numbof\the\@pshoffset\space% voffset=\expandafter\@numbof\the\@psvoffset\space% hscale=\expandafter\@numbof\the\@pshscale\space}% \else% \ifx\DVITOPS\dvitops% \@pshscale=#6pt% \@psvscale=#7pt% \@pshoffset=-#6pt\multiply\@pshoffset by #2% \@psvoffset=-#7pt\multiply\@psvoffset by #3% \special{psfile="#1"\space% hoffset=\expandafter\@numbof\the\@pshoffset\space% voffset=\expandafter\@numbof\the\@psvoffset\space% hscale=\expandafter\@numbof\the\@pshscale\space% vscale=\expandafter\@numbof\the\@psvscale}% \else% \let\DVITOPS=\dvitops% \@doTeXspecial{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}% \fi% \fi% \fi% }% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% Following definitions should not be changed (except bug fixes) %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Will change the catcodes of % when `parsing' header of EPS file % The ``:'' character will be parsed as a space (catcode = 10) \def\@setdrawingsyntax{\catcode`\%=11\catcode`\:=10\catcode`\!=11}% % % Need some counters and an input channel \newread\@drawingchannel% \newcount\@drawhsize% \newcount\@drawvsize% \newdimen\@xscale% \newdimen\@yscale% \newdimen\@vsize% \newdimen\@hsize% \newcount\@newvsize% \newcount\@newhsize% \newcount\@ovsize% \newcount\@ohsize% % % % \@scale at will multiply by % must be / (big numbers may produce overflows) \def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% % % {\catcode`\.=12\catcode`\p=12\catcode`\t=12\gdef\@dimentocount#1.#2pt{#1}}% % {\catcode`\p=12\catcode`\t=12\gdef\@numbof#1pt{#1}}% % \@drawingscale{p1}{q1}{p1}{q2} => xscale:=p1/q1, yscale:=p2/q2 \def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% \def\@drawingscale#1#2#3#4{% \@xscale=#1pt% \divide\@xscale by #2% \@yscale=#3pt\divide\@yscale by #4% }% % % \firstitem to => arg1:=car(arg2); arg2:=cdr(arg2) \def\firstitem#1to#2{\expandafter\makeseq#1\makeseq#1#2}% \long\def\makeseq#1 #2\makeseq#3#4{\gdef#4{#1}\gdef#3{#2}}% %% %% The user function %% \epsf{}[xscale=p1/q1,yscale=p2/q2][ps=] %% or \epsf{}(hsize=w,vsize=h)[ps=] %% Two optional arguments. If second is needed, then the first one must be %% present. %% \def\epsf#1{\leavevmode% Must leave vertical mode in order to execute \everypar \@ifnextchar[{\s@epsf{#1}}% {\@ifnextchar({\h@epsf{#1}}% {\s@epsf{#1}[xscale=1/1,yscale=1/1]}}}% %% \def\s@epsf#1[xscale=#2/#3,yscale=#4/#5]{% \@ifnextchar[{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}]}% {\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}][ps=\space]}}% % % More arguments to come? \def\h@epsf#1(hsize=#2,vsize=#3){% \@ifnextchar[{\dimen@epsf{#1}(hsize={#2},vsize={#3})}% {\dimen@epsf{#1}(hsize={#2},vsize={#3})[ps=\space]}}% % % The main function (not user acessible) % %% Used to check wether we found the box or not \newif\ifnosize \begingroup %%% Warning: comment character is & (and no more %) \@setdrawingsyntax\catcode`\&=14 && && What we will be looking for (`pt' is the supposed unit) \gdef\BoundingBox{%%BoundingBox}& && && \gdef\read@epsf#1{& && We accept PostScript and scales as optional parameters \bgroup\@setdrawingsyntax && Change the code of % \typeout{Opening #1}& && Verbose! \openin\@drawingchannel=#1 \ifeof\@drawingchannel\closein\@drawingchannel&& \typeout{LaTeX warning: can't open #1.}& && If no file, then ask the user \typeout{Size of the drawing? }& && the size of its drawing. \gdef\@minX{0}\gdef\@minY{0}& && \gdef\@maxX{596}\gdef\@maxY{846}& & \message{X (in pts): }& & \read-1 to\mX\global\edef\@maxX{\mX}& & \message{Y (in pts): }& & \read-1 to\mY\global\edef\@maxY{\mY}& \else && Otherwise: \read\@drawingchannel to\@drsize& Skipping first line (%!PS-Adobe...) \loop && repeat "get one line" \read\@drawingchannel to\@drsize& \typeout{\space\space\space\space \@drsize}&& echo it to the terminal \firstitem\@drsize to\BBox& \ifx\BBox\BoundingBox& && First word =? Bounding Box \nosizefalse& \firstitem\@drsize to\@minX&& If yes, then get the informations \firstitem\@drsize to\@minY&& i.e. minX, minY, maxX and maxY \firstitem\@drsize to\@maxX&& in that order \firstitem\@drsize to\@maxY&& \else\nosizetrue&& \fi \ifnosize\relax\repeat&& && If no, then get one more line, etc. \typeout{Closing}& && Verbose! \closein\@drawingchannel&& \fi \egroup } && \gdef\scale@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& \read@epsf{#1}& \common@epsf{#1}[xscale=#2/#3,yscale=#4/#5][ps=#6]& } & & \gdef\dimen@epsf#1(hsize=#2,vsize=#3)[ps=#4]{& \read@epsf{#1}& \@newvsize=#3& \@newhsize=#2& && && Computing vsize& \@drawvsize=\@maxY& \advance\@drawvsize by-\@minY& \ifnum\@newvsize=0& if newvsize=0 \ifnum\@newhsize=0& if newhsize=0 \common@epsf{#1}[xscale=1/1,yscale=1/1][ps=#4]& \else& else && Computing hsize \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& &&\ifnum\@newhsize=0& \@ohsize=\@drawhsize& \divide\@drawhsize by\@ohsize& \multiply\@drawhsize by\@newhsize& \multiply\@drawvsize by\@newhsize& \divide\@drawvsize by\@ohsize& \@drawingscale{\the\@newhsize}{\@ohsize} {\the\@newhsize}{\@ohsize}& \fi& fi \else& else \@ovsize=\@drawvsize& \divide\@drawvsize by\@ovsize& \multiply\@drawvsize by\@newvsize& && && Computing hsize \@newhsize=#2& \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& \ifnum\@newhsize=0& if newhsize=0 \multiply\@drawhsize by\@newvsize& \divide\@drawhsize by\@ovsize& \@drawingscale{\the\@newvsize}{\@ovsize} {\the\@newvsize}{\@ovsize}& \else& else \@ohsize=\@drawhsize& \divide\@drawhsize by\@ohsize& \multiply\@drawhsize by\@newhsize& \@drawingscale{\the\@newhsize}{\@ohsize} {\the\@newvsize}{\@ovsize}& \fi& fi \fi& fi && Infos to the terminal. \typeout{Drawing #1:}& \typeout{\space\space\space Width=\the\@drawhsize pt Heigth=\the\@drawvsize pt}& && && &\@newhsize=\@drawhsize\multiply\@newhsize by \@xscale &\@newvsize=\@drawvsize\multiply\@newvsize by \@yscale \typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& &\fbox{& \vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& {{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& {\expandafter\@numbof\the\@xscale}& {\expandafter\@numbof\the\@yscale}& {#4}}& &\hfill& }}}}& &}& & & \gdef\common@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& && Computing hsize \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& \@scale\@drawhsize at #2/#3& && Computing vsize \@drawvsize=\@maxY& \advance\@drawvsize by-\@minY& \@scale\@drawvsize at #4/#5& && Infos to the terminal. \typeout{Drawing #1:}& \typeout{\space\space\space Width \the\@drawhsize pt=(\@maxX -\@minX)*(#2/#3)Heigth \the\@drawvsize pt=(\@maxY -\@minY)*(#4/#5)}& && &\typeout{*********** #2 #3 #4 #5}& \@drawingscale{#2}{#3}{#4}{#5}& \typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& && &\fbox{& \vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& {{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& {\expandafter\@numbof\the\@xscale}& {\expandafter\@numbof\the\@yscale}& {#6}}& &\hfill& }}}& &}& } \endgroup scotch_6.0.9/doc/src/ptscotch/s_f_mult.eps0000644000302600021200000001321613303015264020761 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Mon Jan 29 23:59:02 2007 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 574 285 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 285 moveto 0 0 lineto 574 0 lineto 574 285 lineto closepath clip newpath -35.0 347.5 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 0 /Times-Roman ff 240.00 scf sf 600 4725 m gs 1 -1 sc (Coarsening) col-1 sh gr /Times-Roman ff 240.00 scf sf 825 4950 m gs 1 -1 sc (phase) col-1 sh gr /Times-Roman ff 240.00 scf sf 8550 4725 m gs 1 -1 sc (Uncoarsening) col-1 sh gr /Times-Roman ff 240.00 scf sf 8925 4950 m gs 1 -1 sc (phase) col-1 sh gr % Arc 7.500 slw 0 slc gs clippath 4050 5293 m 4217 5278 l 4212 5218 l 4044 5233 l 4044 5233 l 4167 5253 l 4050 5293 l cp eoclip n 3839.2 2023.3 3246.9 -176.0571 83.6195 arcn gs col-1 s gr gr % arrowhead 0 slj n 4050 5293 m 4167 5253 l 4044 5233 l col-1 s % Arc gs clippath 9636 1951 m 9629 1783 l 9569 1786 l 9576 1954 l 9576 1954 l 9601 1833 l 9636 1951 l cp eoclip n 6360.8 2023.3 3246.9 -3.9429 96.3805 arc gs col-1 s gr gr % arrowhead n 9636 1951 m 9601 1833 l 9576 1954 l col-1 s % Ellipse n 2100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr % Ellipse n 2550 3300 1020 510 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr % Ellipse n 7650 3300 1020 510 0 360 DrawEllipse gs col-1 s gr % Ellipse n 5100 5100 555 270 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6750 4500 765 390 0 360 DrawEllipse gs col-1 s gr % Ellipse n 3450 4500 765 390 0 360 DrawEllipse gs col-1 s gr % Polyline 30.000 slw n 4935 5355 m 5085 5250 l 5040 5040 l 5220 4965 l 5190 4830 l gs col-1 s gr % Polyline 7.500 slw n 6600 4875 m 6750 4725 l 6675 4350 l 6900 4200 l 6840 4110 l gs col-1 s gr % Polyline 30.000 slw n 6690 4890 m 6675 4725 l 6675 4650 l 6750 4350 l 6825 4200 l 6735 4110 l gs col-1 s gr % Polyline 7.500 slw n 7575 3810 m 7575 3600 l 7650 3150 l 7800 2925 l 7710 2790 l gs col-1 s gr % Polyline n 8100 2400 m 8025 2100 l 8325 1575 l 8175 1350 l 8250 1200 l gs col-1 s gr % Polyline 30.000 slw n 8025 2400 m 8250 1875 l 8175 1500 l 8250 1350 l 8175 1200 l gs col-1 s gr % Polyline n 7695 3810 m 7500 3450 l 7800 3075 l 7725 2925 l 7830 2790 l gs col-1 s gr % Polyline 7.500 slw gs clippath 7869 2022 m 8033 2057 l 8045 1998 l 7881 1963 l 7881 1963 l 7993 2018 l 7869 2022 l cp eoclip n 6600 1725 m 8025 2025 l gs col-1 s gr gr % arrowhead n 7869 2022 m 7993 2018 l 7881 1963 l col-1 s % Polyline gs clippath 7944 1570 m 8107 1607 l 8121 1549 l 7957 1512 l 7957 1512 l 8068 1568 l 7944 1570 l cp eoclip n 6450 1200 m 8100 1575 l gs col-1 s gr gr % arrowhead n 7944 1570 m 8068 1568 l 7957 1512 l col-1 s /Times-Roman ff 240.00 scf sf 4350 5700 m gs 1 -1 sc (Initial partitioning) col-1 sh gr /Times-Roman ff 240.00 scf sf 4800 1800 m gs 1 -1 sc (Projected partition) col-1 sh gr /Times-Roman ff 240.00 scf sf 4800 1275 m gs 1 -1 sc (Refined partition) col-1 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/ptscotch/s_f_rua.eps0000644000302600021200000003375213303015264020576 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:26 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 304 303 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath -58.0 360.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1575 1125 m 5775 1125 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 1725 m 5775 1725 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 2925 m 5775 2925 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 3525 m 5775 3525 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 4125 m 5775 4125 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 2325 m 5775 2325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 4725 m 5775 4725 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 5325 m 5775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 1125 m 1575 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2175 1125 m 2175 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2775 1125 m 2775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3375 1125 m 3375 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3975 1125 m 3975 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4575 1125 m 4575 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5175 1125 m 5175 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5775 1125 m 5775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 5475 m 1725 5175 l 1425 5175 l 1425 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 4875 m 1725 4575 l 1425 4575 l 1425 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 4275 m 1725 3975 l 1425 3975 l 1425 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 3675 m 1725 3375 l 1425 3375 l 1425 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 3075 m 1725 2775 l 1425 2775 l 1425 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 2475 m 1725 2175 l 1425 2175 l 1425 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 1875 m 1725 1575 l 1425 1575 l 1425 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 1275 m 1725 975 l 1425 975 l 1425 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 5475 m 2325 5175 l 2025 5175 l 2025 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 4875 m 2325 4575 l 2025 4575 l 2025 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 4275 m 2325 3975 l 2025 3975 l 2025 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 3675 m 2325 3375 l 2025 3375 l 2025 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 3075 m 2325 2775 l 2025 2775 l 2025 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 2475 m 2325 2175 l 2025 2175 l 2025 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 1875 m 2325 1575 l 2025 1575 l 2025 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 1275 m 2325 975 l 2025 975 l 2025 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 5475 m 3525 5175 l 3225 5175 l 3225 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 4875 m 3525 4575 l 3225 4575 l 3225 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 4275 m 3525 3975 l 3225 3975 l 3225 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 3675 m 3525 3375 l 3225 3375 l 3225 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 3075 m 3525 2775 l 3225 2775 l 3225 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 2475 m 3525 2175 l 3225 2175 l 3225 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 1875 m 3525 1575 l 3225 1575 l 3225 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 1275 m 3525 975 l 3225 975 l 3225 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 5475 m 4125 5175 l 3825 5175 l 3825 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 4875 m 4125 4575 l 3825 4575 l 3825 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 4275 m 4125 3975 l 3825 3975 l 3825 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 3675 m 4125 3375 l 3825 3375 l 3825 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 3075 m 4125 2775 l 3825 2775 l 3825 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 2475 m 4125 2175 l 3825 2175 l 3825 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 1875 m 4125 1575 l 3825 1575 l 3825 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 1275 m 4125 975 l 3825 975 l 3825 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 5475 m 4725 5175 l 4425 5175 l 4425 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 4875 m 4725 4575 l 4425 4575 l 4425 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 4275 m 4725 3975 l 4425 3975 l 4425 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 3675 m 4725 3375 l 4425 3375 l 4425 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 3075 m 4725 2775 l 4425 2775 l 4425 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 2475 m 4725 2175 l 4425 2175 l 4425 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 1875 m 4725 1575 l 4425 1575 l 4425 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 1275 m 4725 975 l 4425 975 l 4425 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 5475 m 5325 5175 l 5025 5175 l 5025 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 4875 m 5325 4575 l 5025 4575 l 5025 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 4275 m 5325 3975 l 5025 3975 l 5025 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 3675 m 5325 3375 l 5025 3375 l 5025 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 3075 m 5325 2775 l 5025 2775 l 5025 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 2475 m 5325 2175 l 5025 2175 l 5025 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 1875 m 5325 1575 l 5025 1575 l 5025 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 1275 m 5325 975 l 5025 975 l 5025 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 5475 m 5925 5175 l 5625 5175 l 5625 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 4875 m 5925 4575 l 5625 4575 l 5625 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 4275 m 5925 3975 l 5625 3975 l 5625 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 3675 m 5925 3375 l 5625 3375 l 5625 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 3075 m 5925 2775 l 5625 2775 l 5625 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 2475 m 5925 2175 l 5625 2175 l 5625 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 1875 m 5925 1575 l 5625 1575 l 5625 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 1275 m 5925 975 l 5625 975 l 5625 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 5475 m 2925 5175 l 2625 5175 l 2625 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 4875 m 2925 4575 l 2625 4575 l 2625 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 4275 m 2925 3975 l 2625 3975 l 2625 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 3675 m 2925 3375 l 2625 3375 l 2625 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 3075 m 2925 2775 l 2625 2775 l 2625 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 2475 m 2925 2175 l 2625 2175 l 2625 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 1875 m 2925 1575 l 2625 1575 l 2625 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 1275 m 2925 975 l 2625 975 l 2625 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 2325 5925 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 2550 6000 m gs 1 -1 sc (0) col-1 sh gr /Times-Roman ff 300.00 scf sf 4725 5925 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 4950 6000 m gs 1 -1 sc (1) col-1 sh gr % Ellipse n 1875 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2775 1725 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2475 5025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4875 2025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 5475 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2475 4425 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 3675 3375 m 3675 5475 l gs col-1 s gr [] 0 sd % Polyline n 3600 3375 m 3750 3375 l gs col-1 s gr % Polyline n 3600 5475 m 3750 5475 l gs col-1 s gr % Polyline n 1455 3300 m 1350 3300 1350 5445 105 arcto 4 {pop} repeat 1350 5550 5895 5550 105 arcto 4 {pop} repeat 6000 5550 6000 3405 105 arcto 4 {pop} repeat 6000 3300 1455 3300 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2655 1500 m 2550 1500 2550 1845 105 arcto 4 {pop} repeat 2550 1950 2895 1950 105 arcto 4 {pop} repeat 3000 1950 3000 1605 105 arcto 4 {pop} repeat 3000 1500 2655 1500 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4455 1500 m 4350 1500 4350 2445 105 arcto 4 {pop} repeat 4350 2550 5295 2550 105 arcto 4 {pop} repeat 5400 2550 5400 1605 105 arcto 4 {pop} repeat 5400 1500 4455 1500 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2475 4425 m 2775 1725 l gs col-1 s gr % Polyline n 2475 4425 m 4875 2025 l gs col-1 s gr % Polyline 45.000 slw n 2475 4425 m 5475 3825 l gs col-1 s gr % Polyline [15 90] 90 sd n 2475 4425 m 2475 5025 l gs col-1 s gr [] 0 sd % Polyline [15 90] 90 sd n 2475 4425 m 1875 3825 l gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 975 4500 m gs 1 -1 sc (D) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/ptscotch/p_d.tex0000644000302600021200000001214213303015264017721 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_d.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Distribution programmes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Installation} \label{sec-install} Version {\sc \scotchver} of the \scotch\ software package, which contains the \ptscotch\ routines, is distributed as free/libre software under the CeCILL-C free/libre software license~\cite{cecill}, which is very similar to the GNU LGPL license. Therefore, it is not distributed as a set of binaries, but instead in the form of a source distribution, which can be downloaded from the \scotch\ web page at \url{http://www.labri.fr/~pelegrin/scotch/}~. \\ All \scotch\ users are welcome to send an e-mail to the author so that they can be added to the \scotch\ mailing list, and be automatically informed of new releases and publications. \\ The extraction process will create a {\tt scotch\_\scotchversub} directory, containing several subdirectories and files. Please refer to the files called {\tt LICENSE\_\lbt EN.txt} or {\tt LICENCE\_\lbt FR.txt}, as well as file {\tt INSTALL\_\lbt EN.txt}, to see under which conditions your distribution of \scotch\ is licensed and how to install it. \subsection{Thread issues} To enable the use of POSIX threads in some routines, the {\tt SCOTCH\_\lbt PTHREAD} flag must be set. If your MPI implementation is not thread-safe, make sure this flag is not defined at compile time. If the flag is defined, make sure to use the \texttt{MPI\_\lbt Init\_\lbt thread} MPI routine to initialize the communication subsystem, at the \texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level (see Section~\ref{sec-lib-thread}). \subsection{File compression issues} To enable on-the-fly compression and decompression of various formats, the relevant flags must be defined. These flags are {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt BZ2} for {\tt bzip2} (de)compression, {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt GZ} for {\tt gzip} (de)compression, and {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt LZMA} for {\tt lzma} decompression. Note that the corresponding development libraries must be installed on your system before compile time, and that compressed file handling can take place only on systems which support multi-threading or multi-processing. In the first case, you must set the {\tt SCOTCH\_\lbt PTHREAD} flag in order to take advantage of these features. On Linux systems, the development libraries to install are {\tt libbzip2\_1-\lbt devel} for the {\tt bzip2} format, {\tt zlib1-\lbt devel} for the {\tt gzip} format, and {\tt liblzma0-\lbt devel} for the {\tt lzma} format. The names of the libraries may vary according to operating systems and library versions. Ask your system engineer in case of trouble. \subsection{Machine word size issues} \label{sec-install-inttypesize} The integer values handled by \scotch\ are based on the {\tt SCOTCH\_\lbt Num} type, which equates by default to the {\tt int} C type, corresponding to the {\tt INTEGER} Fortran type, both of which being of machine word size. To coerce the length of the {\tt SCOTCH\_\lbt Num} integer type to 32 or 64 bits, one can use the ``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' flags, respectively, or else use the ``{\tt -DINT=}'' definition, at compile time. For instance, adding ``{\tt -DINT=long}'' to the {\tt CFLAGS} variable in the {\tt Makefile.inc} file to be placed at the root of the source tree will make all {\tt SCOTCH\_\lbt Num} integers become {\tt long} C integers. Whenever doing so, make sure to use integer types of equivalent length to declare variables passed to \scotch\ routines from caller C and Fortran procedures. Also, because of API conflicts, the \metis\ compatibility library will not be usable. It is usually safer and cleaner to tune your C and Fortran compilers to make them interpret {\tt int} and {\tt INTEGER} types as 32 or 64 bit values, than to use the aforementioned flags and coerce type lengths in your own code. Fortran users also have to take care of another size issue: since there are no pointers in Fortran~77, the Fortran interface of some routines converts pointers to be returned into integer indices with respect to a given array (e.g. see Section~\ref{sec-lib-func-scotchdgraphdata}). For 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type, {\tt SCOTCH\_Idx}. To coerce the length of this index type to 32 or 64 bits, one can use the ``{\tt -DIDXSIZE32}'' or ``{\tt -DIDXSIZE64}'' flags, respectively, or else use the ``{\tt -DIDX=}'' definition, at compile time. For instance, adding ``{\tt -DIDX="long~long"}'' to the {\tt CFLAGS} variable in the {\tt Makefile.inc} file to be placed at the root of the source tree will equate all {\tt SCOTCH\_\lbt Idx} integers to C {\tt long long} integers. By default, when the size of {\tt SCOTCH\_\lbt Idx} is not explicitly defined, it is assumed to be the same as the size of {\tt SCOTCH\_\lbt Num}. scotch_6.0.9/doc/src/ptscotch/ptscotch_logo_color.gif0000644000302600021200000002354413303015264023201 0ustar pelegrinpelegrinGIF89aÀ€÷P¿¿2ÀÇÇÏÏÏô|%ÿ Aÿ¹SÿÐ{ÿ榿Õæ.>çíæ·ø[0% Û· .0(L0`<0x:©ë¿·œ0~)l~w©¿x x©¿<ÿ:më$·À¬È(‘È$·lUw‘©$¿ìª))‘$ÜÿH‘÷$ ¶¶m$|UVw¶©$˜ ªx(¶©$Ñæÿoç¶ëæ$ Ú$K0UvÚÀ©$¿`8ªÓ<ÿÎvÚì©$·¿`ÿÀ$ Uÿ$èxx©©¿¿) |©¿ Ø ÿÿÿ`Àø,x©Í¿·ŽÜ Hx ÷©·¿ó½5 ,Ø&wÍ©ÿÜÿHÿ÷ÿ·% U HHvèª(wH©H˜ÿŒx°"Äj´èp Æ )N@bG9‚<™2¤Ë’"a’\‰P¡Ê›m¾lh²gLš-Oâô¨S(IŸ3U¥©´èJ¤2£u:%Õ—P¡NÍx“ €¯Á~E86¬W¨-Y @ɵjÏÊ5›Q¬Ý¹eÇÖÅ‹ömÚ¶~ßò•»×¬á¼w #N °Zƃé"Ž|8ñä΃-ŸÅÌV3Ü”¿Š zõWÒŸNMö.ëÊŸ_ŽmòmÕ¹ƒ×¦|b[ضõ ÿ=üvñÇw'>¶k±Ï£oFz¹ðë^³þ@Þ½:sðÅ“oí½:z´¤µÃuß¾<ñøã¥Û¿m”(×1eUÕRUD VþÔÔýmÅÔQ ˜ƒ²tUG&µÓ x!OJµ`…•¡ˆ~8 Š¶Ø ‡ ½ÈbT'–(¡Œrt¢I6v˜bŽºÈãˆþXáŽ+é£G†8¤‘EZ¨$ˆB&I"‘7"ycMSô]p°ÉæÛ—æ‘ÉW˜½qf&sìM‡æn¨W_›gî&¦šô•™gÛÝ—œzî·˜iþ¹æœÊ¹I(œÖ 'hrêéG'›¸•év{Rꙥø­W)m“ævé|‚šè}É—V¦ˆR‡êfþª–Äj ’qšj~˜–zŽMV¹%ŒVšèd°[bÙŸ–¼FiU—¾¢(å•Pf9ì¯3öøÔ´Éí±ØZËQ¶Ü6ë­¶L +®±Ð–+í¹Û¦Ëe¯4*Ø®²À6ûä³ÊzÈl¼.޻仿òëì²L5ªhŸ…Æy(­§vöæv Ïjª«/ ±Á¦Å³šq­|6–0Æšj|°ÈŒz\2È#œòÂr ·F ¹š‘Z<&Àq9ãÌÝÌzÑ|*Ð6 m3|=°óxIç|´jF˹åœNwç¨3þî㣷^ùä¥c.tê±Ïºë”ç»ç»Ón{㢿.üå«›þ{ñµ§|î¤#Ï»ó¾+ûò½«¾yò¦¯ÎüôJgÏxõØ÷¾ýð{o½ùáC?þøèOûó¨¯|ûïG>Bò»Nÿýö‹¿üü髟ñê—?áí¯w† \¢öö¶¶4-.móÛÚ×¶×<ÐZCMW7™I°. ̯–À ÚƒÔ !o¨A®¡p‚`S` /X–°ƒ”amT8½ÝðoþE{!ihÚPb‡ÕªtUŸ÷(QVL ”;%©O­¬a¢¢b®BÅ0ŠeñVžÚÔǰ)-’Š‹›"«(Fþø‹J»Áò5!xÕ]ôš²ÞH¬pűîª×5„/rÍq]ƒW õØ-<¾D‘:jä¼ )È=:ò_•”d!ÿ¥/;†ˆÔÚ—%'‰IF²k“‹¥&)’ ÊeSY«šóJ”Åf%»ÎÃ:†Ë&n –¼D¢/O–™— SŠ¿´e0£èÊËplLÇŒfz̸D4æÒ;OäŽ5‡ùªµÄJ›Vœ¥a…«3†³‹´,ã·xÎ4b“šPÜ&2mEÎ0šŒ2þ R"A™O ­²“tT—ïHJeò”¬L¥'ûuIƒšrŸ d$ ÐõŽEeUIÑ:`ˆÌhB7ºPñ“Ÿ£Ô(%*ÒŠrÒ£!ýdD›9šg≙²t&0¡‰Ó^öe§7•'MòKž 5§5ª¡¤éÓ¢µ×$fiŒÉÌžf“©L½jO³ Op¶Qœï\§9¿ŠÎqz³œÕ„*7ÓU¬Zµ­=½(¶äèR…¬¥0}©@¯Õѽ’ô®2-¨Dõ‰W¿®”£l(Kª•ˆ:éu zŒd"ٵIJöŠfãUYËvV"YÙ,²ZÙÎR¶²Bí\U;‘Ïžv²—•þÜ\5+[¹Ö/° mmÙÖÂä¶À ow4\ÜnƸžîn}›â$ NŸ=Žk!†™çRº~±nq:+]Ó^7ƒÍ ov¿ûYÞ”»àEïsÒK]îŽgºë›zë]̸÷¼äeà|¡[_ä>¦»¨Íoó;ÞøF÷½Þ5ð€Làò8ÀÎm°‚%|_üFØÀó]°}%ûàÉRWæpe;Ì` —X¼Fp‚«KaþŠ˜Ã*†0‹M I²}Š8ÿîˆöÉùOýAG¿Ð:ðƒ. E—¿úíß°gÿ<ýCcùÑöç}.~rö~¹5~¿Ei‹§G÷asçzëW|zWzF|tº·{ÎFxƒ7†—jƒçzú{ (^E—æezh_–·€Q7lh7`£G’Õ€­wzÏ7_4èahb=¸€¶×‚³m„Ž'aäF{…§xm'X„¼w{ëu2ñYQ—~ƒÔ7ƒ¹eZ/8-É~Ëwdò×,>§|¸eÙ—e}â×Ã’vÿdž×çdp($A‡†]h‡kx"ruG—PHG â6ftþ€|†tˆá†X'tûÒá–ˆ·ÆXò¢R¥äˆ…‰ 1nu5Q‰Å‰Qt–HH#C¥œgtç„téTˆJ…¨)â¦K6A÷bsÉTL·äVòäTKÅD2GVI¥LF¥V_AŠRÅT%ToQGF^áŠx‘|õ$h*âÖMÆV²tèĈ…øEÙÈNÆUÞøpöÄ2ˆq†Ô˜DpuT˘‡æxVíyñ‡ñr…†E޹a˜H“H‰3-ÝX-Rȇk‘hÈzBS ¥Xü˜R#U†ÿˆQ›xŠt¥80ŸøH(•…¬8’ƒ¸È'z†È`ŠÈþI+iš!.iÕRŸ‡4’t•WvE‘&…%¤8’þÔW %EW“C)X©øSp±÷dGg/y|·(‹‰˜ˆy|^91Wù’¶‹W)z]y•销 pkc‰ŒO•ŽkUK¾¸Lm~Ê(ŒEKÙ‹Sõ‹UEÏn z¸Æ“¹¦õ8n…‰˜ky z‘ÙV wl©¡Ç–¡‡™À0‘i‘¹Ž±‚k–©œÉ–¢7Ž@‰©ÉVb•Vr9O¢ Ž^5•@˜…™Šó¨ŒÕ(n ‰k³™^”i~;ù’Ÿw˜¹‘Ì™œ z¡œ/‰,–z–¹•ØþY™/E©ýh–¤9“ùáæ“ƒ•‰è¹X£ËY‰FÉ‘)Š– É”e‘Çù/‰š\¹Øé‘ýÙ–¥©Û¹ž™–öI‰‹” ˜ÙykÙˆå鸞üX’H™j \i‘Ÿ‡Èš^éøy‰éFT7*”™  /š `™2j™44.ê¢0 £3 £,JD´šˆø’0äABdAZÓC9C?wD^c¢?š¤5¤+ DFªCC$¥EäB Q™£îCÁ³•j*¬Âz=C¬ÿY™k*=äƒ;P•Ðs@Åó?®S•ü#­‹C­0‰Ê™2:©×Z:âö¢…™œ™të#®ã¶¦ã9¡>Ǭ’s˜€ú¢¥ùªä=—:¨3*zç“8 ¯ÿù’Ã㫾ƒ<¿š8Û㘠ɕW‰ðc:Ž©°$ʓ꣭”ó¬F®Ë9¯Ö >«=ËSt¦9nѪ®jú¥’)n‰þ®ú“9>§°ãùª¼?œÔiš5š j«ïz/Ê£<˧æs©2ʳ˜ù¥•i@ä=O ̉˜ «¶ Ϲ–X»œÛŒ~"‹' V\[(h7FÅyŒiÑy ƒw4 ˜!s›µÁésƒ¶e{ˆ™Y®×I±´$¯™ú¯ ùžÉ›\%FçŽwt®yŽó±ê˜¸øH¸®Ø¸÷ˆƒ¼ø›?(Ìh¹2‡Ž±~Äñs›’Õ«Çg˜ :¹›U‹û þ˜”1‹B ÓøW³K|hg»áR†’CA€ùs"YG˜¢õé‰Í*±œÂJ¡ rw?¹‘Ѻ”+Ž(þ ­à‰W”• è§ž&‚Ó)L—!ÑË%¾KJ苜Mª$Ì;µ©Ê¡è—¾Àò´»!•†›¨¤ø–u ³¶!ó¿‚~séLè»—ö˜E9( L™‹F@—0 ¹¢KºÉ¿Â;ŒÐ(˜¤1u«Á¢ë¸ßˆŒ{ÀxqU˜çSáуñ4Ö‹º,Ç ‹y‚—r9Á´)Â&Ë}¹˜TÛ¶X›û»+꺅ë 5ü®*¡ö¨»|µO1·—ëXy(GÖkžy(-[¼À›‘eH»Mº¬r¼ ›ž1rÄÕ[Å@9ˆ,! œ Ù Ò{e"ì®ãÉ‹¥‘÷B¾þ:Y”Y²Å2òÄí"¾ ù¾I¾ ‘v‹¼Ájì%ǵŠ:•c›–D••«É®íŠ|d‹Éª—KÕÉ$º¦3)œÛDFUÅïCj¹ÀûA]ËÃç™– |ž~ì›Ñº…KFhgV%,+YÊe™ªîDO‹Ž Ь^Éɨ¼›Wã/^ßX¤âø½•#“S-ÕŠ úÌ‘¡§Ím®Ç¢¼—¡’ßÊŠÕ$ŽÉɜح}׸=¸›áß Ú˜YnâŒM™™·*¾µ¬Ñ˜c>¨iŽ•Nhþæ3N¨Ÿæy›á¬+žàSdÊþ†)äƒäÚ¹¦f’߉mߊ{ÛñØåc>¡àÑÏõkœûå^ÁÞ‘¬=ž "Êž·KJ{·t.Lçžþæ×™Ü="êe^˜K´1>¨ó9R–Žß*H„¾ÿiß4ñé0îà àÉÜÿ”²n™ýY™óû!Â:æÊéáê=½lLçuޘƫéÝÛ"ŽêÒ٠ؾíü½-ÛþæAÁê¨Þ‘u5êi.Ò .9ž¬z:¨Þâ+"ã7¾•!šWk^˜C ê"ãЪÌ.½ žï.î¾ æPIÀqï2ú¥ù^˜”¡ð¢¾ðhŽ&G‹å;ñ¨N1y´G[˜µ,KH>îCþí çþäcAòõçu~(®2e>´<+¦û‹ï¢þŒ¾Œ¦‚B4¯ð<ÛóŒê¦¼J©MC8¨!ñ=¿ðG¿µmsô=Ïð@‹ôNo¨/7ušL¯´¯êaÓñXßñzó@Aò¨žï1TAæPÏæOsöXߘNš;ßðl>ô£JõhúôMßô¡Wö‰òô ¯÷»ZõÊA°æ<<ÏñLo¬«ø¥c±¤ƒøÏñ ËøÓ:=0z ;'k;‘ù Ç8¯³2Ú¬‘Cøö?´²“:ˆ/´O<›sölÿùךú;?÷kú)þ÷/ù«ÿ9½ù,?°›_°”o³­ü1ºü2²þt:ÞÓ±åÃñ¢Ïü2ºøý*²ÕºüåÓ´CýŸ‹ãúAëúÜs9Þ/ûÊ/þÐÏ9¦¹£G»£<Ú=¥cýýÅôžÏ³ŽOÿ»8‘@ @ & P! ,xP€€) HØ0ãB‡76’¡È…!AŠ YqÀJŠT“ IŽ4m¢Ä©ÑaΑ*Y(P€âÏ"<*3âI¦#›–ä™r¨ÊDÚ”&T¦c"}¹A²`ºÒ§V’b DàòªA£•9·lÁ•l½þ5èTðÖ·€áN¥qßÁm펽úõ¨^Ç!¾LK”mÝÆLþ0 :§èÏ¡¬  6`É_¯’vJZ¶é°i—®}z@jÔAw«.ک믹ãFû6hÔª«Z=›ú¸íé&#+m€¶pÉsøæý»úhë_Rf:»6ÌÈ×ÛKG&÷˜ño3,ë~àïÞø‹·<¼„»Nêì£,ÿƒO½ô–+- ?›Ð! A»ÂÔ.Üm.[ËР3$qÄ 3*C w[‘C%ÎÃù^Ó°Æu²ÑÄ [ à€0àÆQÔq¬¤b,ˆÈÕ°+° wT1J PrÀ¼Ž<‘!!½Â®5¥”°I¥æÊQÊ„lïK5ŸÔ0È,5“¾!µþQLá ü²L…ä4Áä1µ#]kOÿÔóFDS\3PÍ;Ï "ûÜsRG€n?J 3ÒÀˆlÏÓF¡ÌÑS•“½æÔ3.—ˆT 5ï+K 84AÉð|2OLMeu5Uã44Ø »LjÕ@ÝÔÏ*I 09Ocp€P!=è¾i£=P½ÿR ªÚ¢ òÑ ¹âv[åŒû(\*·/» ÍÜón2’Ü(7´Ä ÐTSÓ›/ÆŽ[÷3Wãb-:yM#ë¼ú·ˆõ’¸p+ 4q•2Œ!2aˆó2lcÔž_£Mx¶æPƒë܃èæm™û<à þ‹ë€…‡Ö.]“sæ™Á|„È¢tÎyhWŠk]sù ÚÕïüÙ¾»8l—o;@h©mnn:öú…©º¯AòÔ ž¹Nû³·Ü7níp[ƒ|àkc6­ÙJ›]³æ ({_c WôYG5SË>[ëD‹ä4ÊF}ôÑ€²-u–N)3_øÏÆ/Úì¸zòã*17[ Ì_/½LÑË6Ûu­e­ó ¦Ë5ÐÆO¤ší© œÍãß”phЙvéÐ*õVJ–õì\CûïÕ%¹Þ}wá²­7}s3%÷vyßÝUß {ö5TSt~Ëfù{öå7ßë*Å;þwÍÓÑ×þå:Òîqjàý±)C ÛWë°F¿ ìPTËZyu©_ } óü„Æ9T D|â‹N‹žg¿ôA«eÂM»¤G»Þ@[HS×´Ú¥2þLIt£ üÎwC¨¨]’™˜0S%Ñ€@:ÿŽ(0ø€ˆ¼AÎÇ@ö –ч!ï?ŽÅG‰”àtî&2P~+€¸Ä8¸)pAZ°<Æ í_XÇ‚˜3ABhf»)#ëö7º±ñhézäÖÚeD.Æ…u»³$[–I1б‘Æ)ß'ù‡ÃRF1Š^¤€<¦ÀålqwP¬diJ©FSm9pR0þHÁÝ„wXCæþ”ËV¬[¬;¦/)3–Q“b|è¿NÎEJ„b0±½úE®›í#¡öÄHÁ]BŽ…çÄŸ‹vù¼õ“|óÌ]†æYÊbh‡£Ð'%¬|ŽhŸ¯4À¨jÄEW ÓMÝÞœ‚¹Cø¥‘ý;a3U9ÎŒJÈŒå`jèICõõ³"ižZT*Î}ö’CA Ia ;•ª&<*ÕhK-Ú«™^ª¦+i)AñÔÓ õ¥(½PPYöSíqEDÝM+éyRŠ$U©Abê²”jÕç©i"S¡{iS•b“§(ݪ£zÊË7&T£d=kU}*®ÿL…®?EhK9æþ“ver¯vÝëO}ÃÔ«ºt¯t `)X¥ö•¯"Õë#[Ø„Öt—’ÝkP몖Âö§ ¢l)ýÊ’ËÙ’‹‰D PE;Z•4Ö±S g÷‰ÓêE±ÿymm[Ö¼âÓ¶ºulb{S•zÖ²…e-]o{×â>G¯Â}¤f¡û­Ð>÷·£Õìc/ªYãÖ4<Õ]*fU ÞÕ*—³®ÝìÌ:[ïþu¸¿‰+É{U“Æ×}Y…ì|}k_âw»û|*RsÊO¯ xGú]êQåŠ'¥ÎôªdýlþÀK9#Ø­F«QÕjà Ó–¿ý”©×da×wà ^“IÌÏ£ØEþýZ`þ˜²±ŒqJ\Ô0øÆ­ð|{Œa4öáýl‹SŠØëöUÆ¢e2k—ËÔ•øæÉ‰Œ²vwÛܲ>9ËË%ï—KbÁú'«À¡ì{‰ãÓVÊè5ïÊ®jæK¸¹M.›Wœgñ—ÊV¾reãìg¦vw¼B¶sžÓœhBG¼<®2ëü׊™”È=³xéëÞK·ÔÐÀrs¾s¡ïzûÞWx»^p‰üá Ï÷ÂÝ}ñŠ3|ऎ8º>êF‡ºÐ’v3ž=hær9Ó*Ï2Ë[ÓO—\Í0Ÿ¹Ë'-s>§×±e¦²¥WÎéŸÓå77¹Ð[®–š+=°ÚÛ®ýðGÚîfϾ–]¯ö¹CúówÿûÕ_~öCŸþTç?ðó?ô뾤ÀF«»ñë¿ø3À“‹;òc@ºû?Fû¾ý‹ºüS@ù«Ók”ÝC¾ÏS¾Ðc¾Ëó<ß Áþª=Åc½ä+ÁòÀáãÀÊ ¾ÁkAœ¼ÞC¼„¼AÃs<ì¼ô;nR$)J1§"ìA"DÂwRÂÕ;ÂrrÂ>1Â$lþÂzzBÉ‹BwÂB*\Â-TŸŽBœ/´ÂI1ša—jù¢‡É %7¢HdDSÔÅ_ „ÔÃ@\HQ‚ÄE|ÈF¤E8¤È"‚HWdÈ”ÈH0ÚHG”È4,Ä„¬DެņüH6LçXE…DI¾ÅX”IœIÔ ¡ÄÅYŒH£ŒÉ¤ìÈ7¬Ã¦¼I¥œ{|GŒÇ}´ÇfÔGeÜÊp¬F¯ Hz´J­KÙÛ”³dÇ~\ÇsHxÈ´„K¹Ì¶$H±œK´¬GµtK¶ô»µÄ˺ü˾ L/Ìǰ ï<Ìo|KÁL'À,Ψ‰»à«ÄÈŒµL®L|™L¶¨L´XŒ¢ÈL·àLÎÔÌ›øLþŸ®ÍèÌÍä‰ÓĉԼ̬ÍÇpͧ ÍØ\ ÕԌڼMß,ÍÓØÍÙd ÓÌMÖ$ ÛDÍá MÖ„MÏΨX3zóŸ ÎNçI function /rgbdata exch store % call input 'rgbdata' rgbdata length 3 idiv /npixls exch store /rgbindx 0 store 0 1 npixls 1 sub { grays exch rgbdata rgbindx get 20 mul % Red rgbdata rgbindx 1 add get 32 mul % Green rgbdata rgbindx 2 add get 12 mul % Blue add add 64 idiv % I = .5G + .31R + .18B put /rgbindx rgbindx 3 add store } for grays 0 npixls getinterval } bind def % Utility procedure for colorimage operator. % This procedure takes two procedures off the % stack and merges them into a single procedure. /mergeprocs { % def dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /colorimage { % def pop pop % remove 'false 3' operands {colortogray} mergeprocs image } bind def } ifelse % end of 'false' case 448 128 8 % dimensions of data [448 0 0 -128 0 128] % mapping matrix {currentfile pix readhexstring pop} false 3 colorimage 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25ffb953ffb953ffa041f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 ffa041f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 c000010e5000c00001c00001c00001bfbf32f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001f47c25f47c25c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c00001f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000f47c25 f47c25f47c25f47c250e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25ffa041ffa041 f47c25f47c250000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000000000000000 f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000f47c25f47c25f47c25f47c25f47c25c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 f47c25f47c250000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000f47c25f47c25f47c25f47c25f47c250000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e5000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 f47c25f47c25f47c25f47c25f47c25c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000f47c25f47c25f47c25f47c25f47c250000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e5000ffa041f47c25f47c25ffb953 ffa041f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e5000 ffa041f47c25f47c25ffa041f47c250e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 f47c25ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25ffa041f47c25f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000ffa041f47c25f47c25ffa041f47c25c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e5000f47c25f47c25ffb953ffb953 f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c7c7000000000000000000000e5000000000000000 f47c25ffa041ffa041f47c25ffa0410e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25ffa041ffa041 ffa041ffa041ffb953ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041ffa041 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000f47c25ffa041ffa041f47c25ffa041c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 f47c25ffa041ffa041ffa041f47c25ffb953ffa041f47c25ffa041f47c25ffa041ffa041 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000f47c25ffb953ffe6a6f47c25 f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25ffb953 ffb953ffb953ffb953f47c25f47c25f47c25ffb953f47c25f47c25f47c250e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953ffb953 ffb953ffb953f47c25f47c25f47c25ffb9530e50000000000000000000000e5000000000 ffe6a6ffa041f47c25ffe6a6ffa041c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffb953ffb953ffa041 ffb953ffe6a6ffe6a6ffb953ffa041ffb953ffe6a6ffb953ffa041ffe6a6ffb953ffa041 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000ffe6a6ffa041f47c25ffe6a6ffa0410000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 f47c25f47c25ffa041ffb953ffe6a6ffe6a6ffb953ffa041ffb953ffe6a6ffa041f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000ffa041ffa041f47c25ffa041 f47c250000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 f47c25f47c25f47c25f47c25ffb953ffb953ffb953ffb953f47c25f47c25f47c25f47c25 f47c250000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25 f47c250000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25ffb953ffb953 f47c25ffa041f47c25f47c25ffb953f47c25f47c25f47c25ffb953f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e5000000000f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffb953ffb953f47c25 ffa041f47c25f47c25f47c25ffb953ffb9530e50000e50000e50000000000e50000e5000 f47c25ffa041f47c25f47c25ffa041c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffa041ffb953ffb953 ffa041ffa041ffb953ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000f47c25ffa041f47c25f47c25ffa0410000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000f47c25 ffa041f47c25ffb953f47c25f47c25f47c25ffa041ffa041f47c25f47c25ffa041f47c25 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 f47c250000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 f47c25f47c25f47c25ffb953ffb953f47c25ffa041f47c25f47c25ffb953f47c25f47c25 f47c250000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c25 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25ffa041ffb953ffe6a6ffa041 ffa041ffa041ffb953ffb953ffa041ffa041ffb953ffb953ffa041ffa0410000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e5000f47c25ffa041ffb953ffe6a6f47c25ffa041ffb953ffe6a6ffa041ffa041 ffa041ffb953ffb953ffa041ffa041ffb9530000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffb953ffa041ffb953 f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25ffa041ffa041ffa041f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001ffa041 ffb953ffa041f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 f47c25ffa041ffb953ffe6a6ffa041ffa041ffa041ffb953ffb953ffa041ffa041ffb953 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 f47c25ffa041ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c25 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001ffb953ffa041ffb953ffd07bffe6a6 ffd07bffe6a6ffd07bffd07bffa041ffb953ffd07bffd07bffa041ffb953000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700ffb953ffa041ffb953ffd07bffb953ffa041ffb953ffd07bffe6a6ffd07b ffe6a6ffd07bffd07bffa041ffe6a6ffd07b000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000ffa041f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25ffa041 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001f47c25 ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000f47c25f47c25f47c25 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000ffb953 ffb953ffa041ffb953ffd07bffe6a6ffd07bffe6a6ffd07bffd07bffa041ffb953ffb953 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000f47c25 f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffb953f47c25 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32f47c25ffa041ffe6a6ffb953ffa041 ffb953ffb953ffb953ffb953ffa041f47c25ffb953ffb953ffa041f47c25c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000f47c25ffa041ffe6a6ffb953f47c25ffa041ffe6a6ffb953ffa041ffb953 ffb953ffb953ffb953ffa041ffb953ffb953c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000f47c25f47c25f47c25 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32f47c25ffb953ffb953f47c25f47c25ffb953f47c25ffb953f47c25 f47c25000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700f47c25ffb953ffb953f47c25f47c25 ffb953f47c25f47c25ffb953ffb953f47c25f47c25c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700f47c25 f47c25ffa041ffe6a6ffb953ffa041ffb953ffb953ffb953ffb953ffa041f47c25f47c25 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001f47c25f47c25ffe6a6f47c25ffb953f47c25 f47c25f47c25f47c25f47c25000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700ffb953 f47c25ffa041ffa041f47c25ffa041f47c25ffa041f47c25ffb953f47c25ffa041f47c25 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001f47c25ffb953ffa041f47c25ffa041f47c25f47c25ffb953c00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32ffa041ffa041ffa041f47c25f47c25 ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffb953ffb953ffb953 ffb953ffa041ffa041ffa041ffa041ffa041c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32f47c25 f47c25f47c25f47c25ffa041f47c25ffa041ffe6a6ffb953ffe6a6ffb953ffa041ffd07b ffd07bf47c25f47c25f47c25c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700f47c25f47c25f47c25f47c25f47c25ffd07bffe6a6ffb953 ffb953ffb953ffe6a6ffa041ffe6a6ffb953ffa041f47c25f47c25f47c25bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041 ffa041ffa041ffa041f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001f47c25f47c25f47c25ffb953ffb953f47c25ffa041ffd07bffe6a6ffa041 ffb953ffe6a6ffb953f47c25f47c25f47c25f47c25c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700f47c25 ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffd07bffa041ffa041f47c25c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700ffd07b f47c25ffb953ffb953ffb953ffa041ffa041ffb953ffb953f47c25ffa041bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001ffb953f47c25f47c25f47c25ffa041 f47c25f47c25f47c25ffa041ffa041ffb953f47c25ffa041ffa041ffb953000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700ffb953f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffa041ffa041 ffa041f47c25ffa041ffa041ffb953f47c25000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffe6a6ffe6a6 f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700f47c25f47c25f47c25f47c25ffa041ffa041ffb953ffd07bffa041f47c25ffe6a6 f47c25f47c25f47c25f47c25f47c25ffb953ffb953ffb953ffb953f47c25f47c25f47c25 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 ffb953f47c25f47c25f47c25ffa041f47c25f47c25f47c25ffa041ffa041ffb953f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 f47c25f47c25f47c25f47c25f47c25ffa041f47c25ffa041f47c25f47c25ffe6a6ffe6a6 ffd07bffd07bffa041ffd07bffb953ffb953f47c25f47c25f47c25c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000ffb953 ffb953ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffb953ffb953ffa041f47c25c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700f47c25ffb953ffb953 ffd07bffd07bffd07bffb953ffe6a6ffb953ffb953ffd07bffb953ffb953ffa041bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25ffb953f47c25 ffb953f47c25f47c25ffa041f47c25f47c25f47c25ffa041f47c25f47c25000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000f47c25f47c25f47c25ffb953f47c25f47c25f47c25ffb953f47c25ffb953 f47c25f47c25f47c25ffb953f47c25ffb9530000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953f47c25f47c25f47c25 f47c25f47c25c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffb953 f47c25f47c25f47c25ffb953f47c25ffb953f47c25f47c25ffa041f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000f47c25ffb953 ffa041ffb953ffb953ffb953ffb953ffe6a6ffa041ffb953ffb953ffb953f47c25000000 000000c7c7000000000000000000000e5000000000f47c25f47c25f47c25ffb953ffb953 ffb953f47c25ffb953ffd07bf47c25f47c25ffe6a6f47c25f47c25ffb953f47c25f47c25 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250000000000000e5000000000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 0000000000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 0000000000000e50000000000000000000000e5000000000000000000000f47c25ffb953 ffa041ffa041f47c25ffa041ffb953ffb953f47c25ffb953ffb953f47c25f47c25000000 0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c700000000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c7000000000e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 ffb953f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25c7c700c7c700 c7c7000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c000010e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25 ffb953f47c25ffa041ffa041f47c25f47c25f47c25ffa041f47c25f47c25000000c7c700 c7c700c7c7000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c00001c000010000000e5000000000000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 0000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 0000000e5000000000000000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25cfcfcf0e5000c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 000000c7c7000000000000000000000e50000000000000000000000e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 000000c7c700000000f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c000010000000000000e5000000000000000000000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c700000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0000000000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700000000 000000000000f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25ffa041 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e5000c000010e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e5000 0e50000000000e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700 c7c700000000f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25ffa041ffa041 f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000000000f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25 f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25 f47c25f47c250000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 0e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c250000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c7c700c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700 c7c700f47c25f47c25f47c25f47c250e50000000000e50000e50000e50000000000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffa041ffa041ffa041 ffa041ffa041f47c25f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25f47c25 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e5000000000000000f47c25f47c25f47c25ffa041ffa041ffa041ffa041ffa041 ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c25ffa041 f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000000000 0000000e5000000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000 000000c7c7000000000000000000000e5000000000000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000000000 f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000 000000000000c7c7000000000000000000000e5000000000000000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffa041f47c25f47c25 ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e5000000000000000f47c25ffa041ffa041f47c25f47c25ffa041ffa041 ffa041f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041 f47c25f47c25f47c25f47c25f47c250000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000000000000000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000000000000000e5000000000 0000000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c700000000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 000000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c7c700000000 0000000000000e50000000000000000000000e5000000000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700f47c25 f47c25f47c25f47c250000000000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c250e50000e5000 0e5000000000c7c700c7c700c7c700000000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25ffa041ffa041 ffa041f47c25ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041f47c25 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e5000000000f47c25f47c25ffa041ffa041ffa041f47c25 ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041ffa041f47c25ffa041 ffa041ffa041f47c25f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e5000000000f47c25f47c25 f47c25ffa041f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c250e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e50000000000e50000e5000 0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c250e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700f47c25f47c25f47c25f47c25 ffa041f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c250000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000000000f47c25f47c25f47c25f47c25f47c25f47c25f47c25000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700f47c25 f47c25f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001f47c25ffa041f47c25f47c25f47c25 f47c25ffa041f47c25f47c25ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25 ffa041f47c25ffa041f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000f47c25ffa041ffa041 ffa041f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25ffa041ffa041ffa041 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e5000000000f47c25ffa041ffa041ffa041f47c25 f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25 f47c25f47c25f47c25ffa041f47c25ffa041f47c250e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e5000f47c25f47c25f47c25 ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25f47c250e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e5000f47c25000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e5000f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c00001f47c25f47c25f47c25f47c25ffa041 f47c25ffa041ffa041ffa041ffa041ffa041f47c25f47c250e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700f47c25ffa041f47c25f47c25 ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c250e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e5000f47c250e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25ffa041ffa041ffa041f47c250e50000e5000f47c25f47c25 f47c25c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001f47c25ffa041ffa041f47c25f47c25 f47c25ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25f47c25 f47c25f47c25ffa041f47c25ffa041ffa041ffa041ffa041f47c25ffa041000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25ffa041 f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041f47c25f47c25ffa041 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e5000000000000000f47c25f47c25f47c25ffa041 ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041f47c25f47c25 ffa041ffa041f47c25ffa041f47c25f47c25f47c250000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000000000000000f47c25ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c250e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 000000f47c25ffa041f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25 f47c25f47c25f47c25000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001f47c25f47c25f47c25f47c25ffa041 f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c250000000e5000000000000000 0000000e50000000000000000000000e5000000000f47c25f47c25f47c25ffa041ffa041 ffa041f47c25ffa041ffa041ffa041f47c25f47c25f47c250000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000000000ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25000000f47c25f47c25ffa041 f47c25c7c7000000000000000000000e50000000000000000000000e5000000000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000ffa041f47c25ffa041f47c25f47c25 ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25ffa0410000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25ffa041ffa041 ffa041f47c25f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041 0000000000000e50000000000000000000000e50000000000000000000000e5000ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000ffa041f47c25 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000ffa041ffa041ffa041ffa041 f47c25f47c25ffa041f47c25f47c25ffa041ffa041f47c25cfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 000000f47c25f47c25ffa041ffa041f47c25ffa041f47c25ffa041ffa041ffa041f47c25 f47c25f47c25f47c250000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000f47c25f47c25ffa041ffa041ffa041 f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa0410000000000000e5000000000 0000000000000e5000000000000000000000c7c700f47c25f47c25ffa041ffa041ffa041 ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c250000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000f47c25 f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041f47c25f47c25f47c25c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000f47c25f47c25ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25000000f47c25ffa041f47c25 0000000000000e50000000000000000000000e50000000000000000000000e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000ffa041f47c25ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 f47c25ffa041ffa041ffa041ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041 ffa041ffa041ffa041f47c25ffa041ffa0410e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffa041ffa041ffa041 ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000ffa041 ffb953ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa0410e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e5000ffa041ffa041ffa041ffa041 ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa0410e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 f47c25f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041 ffa041f47c25c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c00001f47c25f47c25ffa041ffa041ffa041ffa041 f47c25ffa041ffb953ffa041ffa041ffb953ffa041f47c250e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700f47c25ffa041ffa041ffa041f47c25 ffa041f47c25ffa041f47c25f47c25f47c25ffa041f47c250e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000f47c25 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25f47c25ffa0410e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e5000ffa041f47c25f47c25ffa041ffa041 ffa041ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041f47c25ffa041c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 ffa041f47c25ffa041f47c25ffa041ffa041f47c25ffa041f47c25f47c25f47c250e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001ffa041f47c25ffa041ffa041f47c25 ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa0410e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000ffa041 ffb953ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa0410e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa041ffb953ffa041ffa041 ffa041ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa0410e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000000000ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa0410e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 ffa041f47c25ffa041ffa041ffa041f47c25ffa041f47c25f47c25ffa041ffa041ffa041 ffa041ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000f47c25ffa041ffa041ffa041ffa041ffa041 f47c25ffa041f47c25ffa041ffa041ffb953ffa041ffa0410e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000f47c25ffa041ffa041ffa041ffa041 ffa041f47c25ffa041ffa041ffa041f47c25f47c250e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c700f47c25f47c25 ffa041ffa041ffb953ffb953ffa041ffa041ffa041f47c25f47c25f47c25f47c250e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000000000f47c25f47c25ffa041ffa041ffa041 ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffa041f47c25c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25f47c25 ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041f47c25f47c25f47c250e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001ffa041ffa041ffa041ffa041f47c25 ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffb953ffb953ffb953 ffa041ffb953ffa041ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041 0000000e50000000000000000000000e50000000000000000000000e5000000000ffa041 ffb953ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041ffa041ffb953 ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffa041c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c700000000ffa041ffb953ffa041ffb953ffb953ffa041ffb953ffb953ffa041 ffb953ffa041ffb953ffb953ffa041ffb953ffa041ffa041ffa041ffa041000000000000 000000c7c7000000000000000000000e5000000000ffb953ffb953ffb953ffa041ffb953 ffa041ffb953ffa041ffa041ffa041ffa041ffa041ffa041cfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 ffa041ffa041ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041 ffa041ffa041000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffb953f47c25ffa041ffa041ffa041f47c250000000e5000000000000000 0000000e50000000000000000000000e5000ffb953ffb953ffb953ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa0410000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700ffa041ffa041 ffa041ffa041ffb953ffa041ffa041ffa041f47c25f47c25f47c25f47c25f47c25c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000ffa041ffa041ffb953ffa041ffa041 ffb953ffb953ffa041ffa041f47c25f47c25ffa041f47c25f47c25ffa041000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000f47c25ffa041 ffa041ffa041f47c25ffa041ffa041f47c25ffa041ffa041f47c25f47c25c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000ffa041ffa041ffa041ffa041ffa041 ffa041ffb953ffb953ffa041ffb953f47c25ffb953ffb953ffb953ffb9530e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffb953ffb953ffb953 ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953 0000000000000e50000000000000000000000e50000000000000000000000e5000ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffa041ffb953 ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e5000000000ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffa041ffb953ffb953c7c700000000 0000000000000e50000000000000000000000e5000ffb953ffb953ffb953ffb953ffb953 ffa041ffb953ffb953ffb953ffa041ffb953ffa041cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c00001ffa041ffa041ffa041ffa041ffa041ffb953 ffb953f47c25ffa041ffa041ffa041ffa041ffa041ffa0410000000000000e5000000000 0000000000000e5000000000000000000000ffb953ffb953ffb953ffa041ffa041ffa041 ffa041ffa041ffb953ffa041ffa041ffa041ffa0410000000000000000000e5000000000 0000000000000e5000000000000000000000c7c700000000000000000000ffa041ffa041 ffb953ffa041ffa041ffa041ffa041f47c25ffa041ffa041f47c25ffa0410e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000ffb953ffa041ffb953f47c25ffb953 ffb953ffb953ffb953ffb953ffa041ffa041ffa041f47c25f47c25f47c25c7c700000000 0000000000000e50000000000000000000000e5000000000000000000000f47c25ffa041 ffa041ffa041ffa041ffb953ffa041ffa041ffa041ffa041f47c25f47c250e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000ffa041ffa041ffb953ffb953ffb953 ffa041ffb953ffa041ffa041ffa041ffa041ffb953ffa041ffb953f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffb953ffd07bffb953 ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffb9530e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffb953c7c700c7c700 c7c7000000000e50000e50000e5000000000ffb953ffb953ffd07bffb953ffb953ffa041 ffb953ffa041ffb953ffb953ffa041ffb953ffb9530e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000ffa041 ffa041ffb953ffb953ffb953ffa041ffa041ffb953ffa041ffa041ffa041ffb953ffa041 ffa041000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000ffa041ffa041ffb953ffa041ffa041ffa041ffb953 ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa0410e50000000000e50000e5000 0e50000000000e50000e50000e5000000000ffb953ffb953ffb953ffb953ffb953ffa041 ffb953ffa041ffb953ffa041ffb953ffa041ffa0410e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c700ffa041ffa041ffa041 ffa041ffb953ffa041ffb953ffa041f47c25ffb953ffa041ffa041ffa0410e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000000000ffa041ffb953ffa041ffa041ffa041ffb953 ffa041ffb953f47c25ffa041ffb953ffb953ffb953ffa041f47c25000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffa041ffa041 ffa041f47c25ffb953ffb953ffb953ffb953ffa041f47c25ffa041f47c250e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001ffb953ffb953ffb953ffb953ffb953 ffa041ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb9530000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffb953ffd07bffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953c7c700 c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffd07bffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e5000000000ffb953 ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffb953ffa041 ffa0410e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e5000ffa041ffb953ffb953ffa041ffb953ffa041ffa041 ffb953ffb953ffb953ffb953ffb953ffb953ffa0410e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffa041ffb953ffa0410000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700ffa041ffa041ffb953 ffa041ffb953ffa041ffb953ffa041ffb953ffb953ffa041ffa041ffa041c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000ffb953ffb953ffb953ffb953ffa041ffb953 ffb953ffb953ffb953ffb953ffd07bffb953ffb953ffb953ffb9530e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e5000ffa041ffa041ffb953 ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffa041ffa041f47c25c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffd07bffb953ffb953000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffb953ffb953ffb953 ffd07bffd07bffd07bffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953 0000000e50000000000000000000000e50000000000000000000000e5000000000ffb953 ffb953ffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffd07bffd07bffb953ffb953ffb953ffb953ffb953ffb953c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcfffd07bffd07bffd07bc000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000ffb953ffb953ffb953ffb953ffd07b ffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953000000 000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffb953ffd07bffd07b ffd07bffd07bffd07bffd07bffb953ffb953ffb953cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000ffb953 ffb953ffb953ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb9530e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c00001ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953c000010000000e5000000000000000 0000000e5000000000000000000000ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb9530000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000ffb953ffb953ffb953 ffb953ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffa041ffa041c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffa041ffb953ffb953 ffd07bffb953ffb953ffd07bffb953ffa041ffb953ffb9530000000e5000000000000000 000000c7c7000000000000000000000e5000000000000000000000ffb953ffb953ffb953 ffd07bffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb9530e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32ffb953ffb953ffb953ffd07bffb953 ffb953ffb953ffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bc7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000ffd07bffd07bffb953 ffb953ffd07bffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953 000000000000c7c700000000000000000000c7c700000000000000000000c7c700ffd07b ffb953ffd07bffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953ffb953ffd07b ffd07bffd07bffb953ffd07bffb953ffd07bffd07bffb953c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfffd07bffd07bffd07bc00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000ffd07bffb953ffd07bffd07b ffd07bffb953ffd07bffb953ffd07bffd07bffb953ffb953ffb953ffb953ffb953c7c700 c7c700c7c700c7c700000000000000000000ffd07bffd07bffd07bffb953ffb953ffd07b ffb953ffd07bffd07bffd07bffd07bffb953bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffd07bffb953ffb953ffb953 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000ffd07bffd07bffd07bffd07bffb953ffb953ffb953ffb953 ffb953ffd07bffd07bffb953ffd07bffb953ffb953c00001000000000000c7c700000000 000000000000c7c700000000000000ffd07bffd07bffd07bffd07bffb953ffb953ffd07b ffb953ffd07bffb953ffb953ffb953ffb953c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700ffb953ffb953ffb953 ffd07bffb953ffb953ffd07bffb953ffb953ffb953ffb953ffb953c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000ffb953ffb953ffd07bffd07bffd07bffb953 ffd07bffb953ffd07bffb953ffd07bffb953ffb953ffa041000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000ffb953ffb953ffd07b ffd07bffb953ffd07bffd07bffd07bffb953ffd07bffb953ffb953c00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32ffb953ffb953ffb953ffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffb953ffd07bffd07bffd07bc7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700ffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32ffe6a6ffd07bffa041ffd07bc00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffb953ffb953c7c700 c7c700c7c700c7c700c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffd07bffd07b ffd07bffe6a6ffe6a6ffd07bffd07bffd07bbfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000ffb953ffb953 ffb953ffb953ffb953ffd07bffb953ffb953ffb953ffb953ffd07bffd07bffb953ffb953 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bbfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700ffd07bffd07bffd07bffd07bffb953ffd07bffd07b ffd07bffd07bffb953ffb953ffb953ffb953c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700ffb953ffb953ffb953ffb953 ffd07bffd07bffb953ffb953ffb953ffd07bffb953ffb953ffb953c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000ffb953ffb953ffd07bffd07bffd07bffb953 ffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700ffb953ffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffa041c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001ffb953ffd07bffd07bffd07bffd07b ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700ffd07bffd07bffd07b ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07b c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32f47c25ffd07bffe6a6ffd07bffd07bbfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07b ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700 c7c700c7c700000000c7c700c7c700ffe6a6ffd07bffd07bffd07bffd07bffd07bffe6a6 ffe6a6ffe6a6ffd07bffd07bffd07bffd07bc00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700ffd07bffd07b ffd07bffd07bffb953ffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07b c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07bffd07b ffe6a6ffd07bffe6a6ffe6a6ffd07bffd07bc00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07b ffd07bffd07bffb953ffd07bffd07bc7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700ffd07bffd07bffb953ffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffb953ffd07bffb953bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700ffd07bffd07bffd07bffd07b ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bbfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001ffb953ffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000ffe6a6ffd07bffd07b ffe6a6ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07b 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcff47c25ffd07bffe6a6ffd07bffd07bbfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000ffd07bffd07bffd07b ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bc7c700 c7c700c7c700000000000000000000ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffd07b ffe6a6ffd07bffe6a6ffd07bffd07bffd07bc00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700ffd07bffd07b ffd07bffd07bffd07bffb953ffb953ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07b ffd07bffe6a6ffd07bffe6a6ffe6a6ffd07bc00001c00001000000c7c700000000000000 000000c7c700000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffe6a6 ffd07bffd07bffd07bffd07bffd07bc7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700ffd07bffd07bffd07bffd07b ffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffb953bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000ffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 ffd07bffd07bffe6a6ffd07bffe6a6ffd07bffd07b000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000ffd07bffd07bffd07bffd07b ffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000ffd07bffd07bffd07bffe6a6ffd07b ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a60e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcff47c25f47c25ffd07bffd07bffd07bc000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000000000000000ffd07bffe6a6 ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07b000000 0000000000000e5000000000000000ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07b0e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e5000000000000000000000ffd07bffe6a6 ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07b 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000ffd07bffd07bffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffe6a6 ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07b0e5000c000010000000000000e5000000000 0000000000000e5000000000ffd07bffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c700000000ffd07bffd07bffe6a6ffd07b ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffd07bffd07bffd07bffd07bc000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e5000000000000000ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a60e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffd07bcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000ffd07bffe6a6ffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffe6a6ffd07bffe6a6 ffe6a6ffd07bffe6a6ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000ffa041ffd07bffd07bffd07bffa041f47c250e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffd07bffe6a6 ffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffe6a6ffd07bc7c700 c7c7000000000e50000e50000e5000ffd07bffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07b ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07b0e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000f47c25c7c700c7c7000000000e50000e50000e5000000000ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07bffe6a6ffe6a6ffe6a60e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e5000ffd07bffd07bffd07bffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000ffd07bffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6 ffd07bffe6a6ffd07bffe6a6ffd07b0000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bc000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e5000f47c250e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000ffe6a6ffe6a6ffd07bffe6a6ffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e5000ffd07bffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001ffe6a6ffd07bffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07bffe6a60000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffe6a6ffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e5000f47c25ffd07bffd07bffd07bffd07bffd07bc000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000ffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc7c700 c7c700c7c7000000000e50000e5000ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bc000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e5000f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e5000ffd07bffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07bffd07b0e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e5000000000ffb953ffb953ffb953ffd07bffe6a6ffd07bffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffd07bffd07b0e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e5000ffe6a6ffe6a6ffe6a6ffd07bffd07bffe6a6ffd07bffd07b ffd07bffe6a6ffe6a6ffe6a60e50000e50000000000e50000e50000e50000000000e5000 0e5000f47c250000000e50000e50000e5000000000c7c700ffe6a6ffe6a6ffe6a6ffe6a6 ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a6ffe6a60e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e5000f47c25f47c25f47c250e50000e50000e5000000000c7c700 c7c700c7c7000000000e5000ffd07bffd07bffd07bffe6a6ffe6a6ffd07bffd07bffe6a6 ffe6a6ffd07bffe6a6ffd07bffe6a6ffe6a60000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000000000ffe6a6ffe6a6ffd07bffe6a6ffe6a6 ffe6a6ffe6a6ffd07bffd07bffe6a6ffe6a6ffd07b0e50000e50000e5000c000010e5000 0e50000e5000f47c250e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001ffd07bffe6a6ffe6a6ffd07bffd07b ffe6a6ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000ffd07bffd07bffd07b ffd07bffa041ffd07bffd07bffd07bffd07bffd07bffb953ffd07bffd07bffd07bffd07b 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcff47c25ffb953ffd07bffa041ffd07bffd07bc00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000ffd07bffd07b ffd07bffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07b000000000000 000000c7c700000000000000000000ffd07bffe6a6ffd07bffd07bffd07bffd07bffa041 ffd07bffb953ffa041ffd07bffd07bffd07bc00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 f47c25f47c25f47c25f47c25000000c7c7000000000000000000000e5000ffd07bffd07b ffe6a6ffe6a6ffe6a6ffe6a6ffd07bffe6a6ffe6a6ffd07bffd07bffd07bffd07b000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000ffb953ffb953ffb953ffb953ffb953ffd07bffd07bffd07bffe6a6ffd07b ffd07bffe6a6ffd07bffd07bc000010e5000c00001c000010000000e5000000000000000 0000000e5000000000ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07b ffd07bffd07bffe6a6ffe6a60000000e50000000000000000000000e5000000000000000 000000f47c25f47c250000000000000e5000000000000000ffd07bffd07bffe6a6ffd07b ffd07bffd07bffe6a6ffd07bffd07bffd07bffd07bffd07bffd07b0e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e5000000000f47c25f47c25f47c25f47c250000000000000e5000000000000000 000000c7c700000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffe6a6ffe6a60000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000ffd07bffe6a6ffe6a6ffd07bffd07b ffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bcfcfcfcfcfcf0e5000c00001c00001 c000010e5000f47c25f47c25f47c250e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000ffd07bffd07bffd07bffd07bffd07b ffb953ffb953ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07b0e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000ffd07bffd07bffb953 ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffd07b 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfffa041ffd07bffb953ffd07bffa041ffa041f47c25c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000000000000000ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffd07bffd07bffb953ffb953c7c700000000 0000000000000e5000000000000000ffd07bffd07bffd07bffd07bffb953ffb953ffa041 ffb953ffb953ffa041ffb953ffb953ffb9530e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c250000000000000e5000000000000000000000ffd07bffd07b ffe6a6ffd07bffd07bffd07bffd07bffd07bffe6a6ffd07bffd07bffd07bffd07b000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 000000000000ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 ffd07bffd07bffd07bffd07bc00001c000010e5000c000010000000000000e5000000000 0000000000000e5000ffd07bffd07bffe6a6ffe6a6ffd07bffa041ffd07bffd07bffd07b ffd07bffd07bffe6a6ffe6a60000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25000000000000c7c700000000ffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bffd07bc000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e5000f47c25f47c25f47c25f47c25000000000000000000c7c700000000 0000000000000e5000000000ffd07bffb953ffd07bffd07bffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07b0000000e5000000000000000000000c7c700000000 0000000000000e5000000000000000000000ffd07bffd07bffd07bffe6a6ffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07bffd07bcfcfcfcfcfcfc000010e5000c00001 c00001f47c25f47c25f47c25f47c250000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000ffd07bffd07bffd07bffd07bffd07b ffb953ffb953ffb953ffb953ffa041ffd07bffa041ffa041ffd07bffb9530e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000ffd07bf47c25f47c25 ffa041ffa041ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000ffa041ffd07bffa041ffd07bf47c25ffa041ffa0410e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e5000000000ffb953ffb953 ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953ffb953c7c700c7c700 c7c7000000000e50000e50000e5000ffa041ffa041ffd07bf47c25f47c25ffa041ffa041 ffb953ffa041ffb953ffb953ffb953ffb9530e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000f47c25 f47c25f47c25f47c25c7c700c7c7000000000e50000e50000e5000000000ffa041ffa041 ffb953ffa041ffb953ffb953ffd07bffd07bffa041ffa041ffb953ffb953ffb9530e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e5000f47c25ffa041ffa041ffa041ffa041ffb953ffb953ffa041ffb953ffb953ffb953 ffb953ffb953ffb9530e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e5000ffd07bffd07bffd07bffd07bffd07bffd07bffa041ffd07bffb953 ffa041ffd07bffd07bffe6a60e50000000000e50000e50000e50000000000e5000f47c25 f47c25f47c25f47c250e50000e5000000000c7c700c7c700ffd07bffd07bffb953ffa041 ffd07bffd07bffd07bffd07bffb953ffb953ffb953ffd07bffb953c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000000000f47c25f47c25f47c25f47c250e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e5000ffb953ffb953ffb953ffb953ffb953ffa041ffd07bffa041 ffa041ffd07bffb953ffb953ffd07b0000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000000000ffd07bffd07bffd07bffd07bffd07bffd07b ffd07bffd07bffd07bffd07bffd07bffd07b0e50000e50000e5000c000010e50000e5000 0e5000f47c25f47c25f47c250e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c00001ffb953ffd07bffb953ffd07bffd07b f47c25ffb953f47c25ffb953ffb953ffb953ffb953ffb953ffa041ffa0410000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e5000ffa041ffa041ffa041 f47c25ffa041ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffb953ffa041 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c00001f47c25ffa041ffb953ffa041ffa041ffa041f47c25f47c25f47c25 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e5000ffb953ffb953 ffb953ffa041ffb953ffb953ffb953ffb953ffa041ffb953ffb9530e5000000000c7c700 c7c700c7c7000000000e50000e5000ffa041ffa041ffa041ffa041ffa041f47c25ffa041 ffa041f47c25ffa041ffa041ffa041ffa041c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e5000f47c25f47c25 f47c25f47c25000000c7c700c7c700c7c7000000000e50000e50000e5000000000ffa041 ffb953ffb953ffb953ffa041ffa041ffa041ffa041ffa041ffa041ffb953ffa0410e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e5000ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c25ffb953 f47c25ffa041ffb9530e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e5000000000ffb953ffb953ffd07bffd07bffb953ffa041ffb953ffa041ffb953 ffa041ffb953ffa0410e50000e50000e50000000000e50000e50000e5000f47c25f47c25 f47c25f47c250000000e50000e50000e5000000000c7c700ffd07bffd07bffb953ffb953 ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffa041ffb9530e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e5000f47c25f47c25f47c25f47c250e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e5000ffb953ffa041ffb953ffb953ffb953ffb953ffb953ffb953 ffb953ffa041ffa041ffb9530e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e5000ffd07bffd07bffd07bffd07bffb953ffd07b ffb953ffb953ffd07bffb953ffd07bffd07bc000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c250e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001ffb953ffb953ffb953ffb953ffb953 ffa041ffa041ffa041ffb953ffa041ffa041ffb953ffb953ffa041ffa041000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c00001000000f47c25f47c25ffa041 f47c25f47c25f47c25f47c25ffb953f47c25ffa041ffa041ffa041f47c25ffa041ffa041 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c25 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000000000000000000000f47c25f47c25ffb953 f47c25ffa041ffa041ffa041f47c25ffa041ffa041ffa041f47c250e5000000000000000 000000c7c700000000000000000000ffa041ffa041f47c25f47c25ffa041f47c25f47c25 f47c25f47c25ffa041ffa041ffa041f47c25f47c25cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e5000000000000000000000f47c25f47c25f47c25 f47c25f47c25000000000000000000c7c7000000000000000000000e5000000000ffa041 ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041ffa041000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 f47c25ffa041ffa041ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041 ffa041f47c25c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e5000ffa041ffa041ffa041f47c25ffa041ffa041ffa041ffa041ffa041f47c25 ffa041ffa041ffa0410000000000000e50000000000000000000000e5000f47c25f47c25 f47c25f47c250000000000000000000e5000000000000000ffb953ffb953ffb953ffa041 ffb953ffa041ffb953ffb953ffb953ffa041ffb953ffb953ffb953ffa041c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c250e50000000000000000000000e5000000000000000 000000c7c700000000f47c25ffa041ffa041ffa041ffa041ffb953ffa041ffa041ffb953 ffb953ffa041ffa041ffb9530000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e5000ffb953ffb953ffb953ffd07bffb953ffd07b ffa041ffb953ffb953ffb953ffb953ffb953c00001cfcfcfcfcfcf0e5000c00001f47c25 f47c25f47c25f47c25c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000ffa041ffa041ffa041ffa041ffa041 ffa041f47c25f47c25ffa041ffa041ffb953ffa041ffa041ffa041ffa0410e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c00001000000f47c25f47c25f47c25 f47c25f47c25ffa041ffb953ffb953f47c25f47c25ffa041ffa041f47c25ffa041ffa041 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e5000000000000000f47c25ffb953ffb953 f47c25f47c25ffa041ffa041f47c25ffa041ffa041f47c25000000000000c7c700000000 0000000000000e5000000000000000000000f47c25f47c25f47c25f47c25f47c25f47c25 ffa041f47c25f47c25ffa041f47c25f47c25f47c25cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e5000000000f47c25f47c25f47c25f47c25 f47c25000000c7c7000000000000000000000e50000000000000000000000e5000f47c25 ffa041f47c25f47c25f47c25ffa041ffa041f47c25f47c25f47c25f47c25ffa041000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041ffa041ffa041f47c25 f47c25c000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 000000000000ffa041ffa041ffa041ffa041f47c25ffa041f47c25ffa041f47c25ffa041 f47c25ffa041f47c250000000000000000000e5000000000000000f47c25f47c25f47c25 f47c250000000e5000000000000000000000c7c700000000000000ffa041ffa041ffa041 ffb953ffa041ffb953ffb953ffa041ffb953ffb953ffb953ffa041ffa0410e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000f47c25 f47c25f47c25f47c25f47c250000000000000e5000000000000000000000c7c700000000 0000000000000e5000f47c25f47c25ffa041ffa041ffa041ffa041ffa041ffb953ffa041 ffa041ffa041ffa041ffb9530000000000000e5000000000000000000000c7c700000000 0000000000000e5000000000000000ffa041ffa041ffa041ffa041ffa041ffa041ffa041 ffa041ffa041ffa041ffa041ffa041ffa0410e5000cfcfcfcfcfcfc00001f47c25f47c25 f47c25f47c25f47c25c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e5000ffa041ffa041ffa041f47c25ffa041 f47c25f47c25f47c25f47c25ffa041ffa041f47c25ffa041ffa041f47c250e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25ffb953f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e5000f47c25ffb953f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000000000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e5000f47c25f47c25f47c25f47c25f47c25 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041ffa041f47c25f47c250e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25 f47c25c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e5000000000f47c25f47c25f47c25ffa041ffa041f47c25f47c25ffa041ffa041f47c25 ffa041f47c25f47c250e50000e50000000000e50000e5000f47c25f47c25f47c25f47c25 0e50000000000e50000e50000e5000000000c7c700c7c700c7c700ffa041f47c25ffa041 ffb953ffb953ffb953ffb953ffb953ffa041ffa041ffa041ffa041ffa041f47c250e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001f47c25f47c25 f47c25f47c25f47c250e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e5000f47c25f47c25f47c25f47c25f47c25f47c25ffa041ffa041f47c25 ffa041ffa041f47c250e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e5000ffa041ffa041ffa041ffa041ffa041ffa041ffa041 f47c25ffa041ffa041ffa041f47c25ffa0410e50000e50000e5000c00001f47c25f47c25 f47c25f47c250e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c00001ffa041f47c25ffa041ffa041f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000f47c25f47c25f47c25f47c25f47c250e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25f47c25f47c250e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32f47c25f47c25f47c25 ffb953ffb953ffb953ffa041ffa041ffa041ffa041f47c25f47c25f47c25f47c25c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e5000f47c25ffa041ffa041ffa041ffa041f47c25ffa041 ffa041ffa041f47c25ffa041ffa041f47c25c000010e5000f47c25f47c25f47c25f47c25 f47c25c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001ffa041f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 c00001c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c000010e5000c00001c00001c00001bfbf32c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32f47c25f47c25 ffa041f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25ffa041f47c25f47c25 f47c25c00001c00001cfcfcfcfcfcfc00001c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c00001f47c25f47c25f47c25f47c25ffa041ffa041ffa041 ffa041ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001f47c25ffa041f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c00001bfbf32c00001c00001c000010e5000c00001f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c00001f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25ffa041f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c250e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25bfbf32bfbf32bfbf32c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c250e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c250e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c250e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c250e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf cfcfcfcfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c250e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcff47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcff47c25f47c25 f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000cfcfcf cfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcff47c25f47c25f47c25f47c25f47c25f47c25 f47c25cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000f47c25f47c25f47c25f47c25f47c25f47c25f47c25 f47c25f47c25f47c25cfcfcfcfcfcfcfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32f47c25f47c25f47c25f47c25f47c25f47c25f47c250e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32 bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000f47c25f47c25f47c25 f47c25f47c25f47c25f47c250e5000cfcfcf0e5000cfcfcfcfcfcfcfcfcf0e50000e5000 0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e5000 0e5000cfcfcf0e50000e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcf cfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcfbfbf32 bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcfcfcfcfcfcfcf0e5000cfcfcf0e5000 0e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcfbfbf32bfbf32bfbf32cfcfcf0e50000e50000e5000cfcfcf0e5000 0e50000e5000cfcfcf0e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32 bfbf32bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e5000 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001c00001 c000010e5000c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001c00001c00001c00001c00001c00001cfcfcf cfcfcfc00001c00001c00001c00001c00001c00001c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c00001bfbf32c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001c00001c00001 c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001c00001c00001c00001c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c00001bfbf32c00001 c00001c000010e5000c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001c00001c00001c00001c00001c00001cfcfcfcfcfcfc00001c00001c00001 c00001c00001c00001c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c00001bfbf32c00001c00001c000010e5000c00001c00001c000010e5000c00001 c00001c000010e5000c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000c00001c00001c00001c00001c00001c00001c000010e5000 0e5000c00001c00001c00001c00001c00001c00001c000010e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c00001bfbf32bfbf32bfbf32c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e5000c00001c00001c00001c00001 c00001c00001c000010e50000e5000c00001c00001c00001c00001c00001c00001c00001 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c00001bfbf32bfbf32 bfbf32c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 c00001c00001c00001c00001c00001c00001c000010e50000e5000c00001c00001c00001 c00001c00001c00001c000010e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c00001bfbf32bfbf32bfbf32c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcf cfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000000000 000000c7c700000000000000000000c7c700000000000000c00001bfbf32c00001c00001 c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001c00001bfbf32c00001c00001 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700c7c700 c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000000000 c00001bfbf32c00001c00001c00001bfbf32c00001cfcfcfcfcfcfbfbf32c00001c00001 c00001bfbf32c00001c00001000000c7c700000000000000000000c7c700000000000000 000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000000000 000000c7c700000000000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcf cfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700c7c700c7c700c7c700c7c700000000 000000000000c7c700000000000000000000c7c700000000c00001c00001bfbf32c00001 c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001c00001c00001bfbf32c00001 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 000000000000c7c700000000000000000000c7c700000000000000000000c7c700c7c700 c7c700c7c700c7c700000000000000000000c7c700000000000000000000c7c700000000 c00001c00001bfbf32c00001c00001c00001bfbf32cfcfcfcfcfcfc00001bfbf32c00001 c00001c00001bfbf32c00001000000000000c7c700000000000000000000c7c700000000 000000000000c7c700c7c700c7c700c7c700c7c700000000000000000000c7c700000000 000000000000c7c700000000 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700 bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32 bfbf32c00001bfbf32bfbf32c7c700000000c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700 c7c700000000c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700c7c700c7c700 c7c700c7c700000000c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32bfbf32bfbf32c00001bfbf32 bfbf32bfbf32c00001bfbf32c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700c7c700c7c700c7c700c7c700000000c7c700c7c700c7c700000000c7c700 c7c700c7c700000000c7c700 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700 c7c700c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e5000 0e50000e5000c000010e50000e50000e50000000000e50000e50000e50000000000e5000 0e50000e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e5000 0e50000e50000000000e5000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000c000010e5000c00001c00001c000010e5000c00001cfcfcf cfcfcf0e5000c00001c00001c000010e5000c00001c000010000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e5000000000000000000000c7c700000000000000 0000000e50000000000000000000000e5000000000000000c000010e5000c00001c00001 c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001c000010e5000c00001c00001 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 0000000e50000000000000000000000e50000000000000000000000e5000000000000000 000000c7c7000000000000000000000e50000000000000000000000e5000000000000000 c000010e5000c00001c00001c000010e5000c00001cfcfcfcfcfcf0e5000c00001c00001 c000010e5000c00001c000010000000e50000000000000000000000e5000000000000000 0000000e5000000000000000000000c7c7000000000000000000000e5000000000000000 0000000e5000000000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000c00001c000010e5000c00001c00001c000010e5000cfcfcf cfcfcfc000010e5000c00001c00001c000010e5000c000010000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000000000000000c7c7000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000c00001c000010e5000c00001 c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001c00001c000010e5000c00001 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 0000000000000e50000000000000000000000e5000000000000000000000c7c700000000 0000000000000e50000000000000000000000e50000000000000000000000e5000000000 c00001c000010e5000c00001c00001c000010e5000cfcfcfcfcfcfc000010e5000c00001 c00001c000010e5000c000010000000000000e50000000000000000000000e5000000000 000000000000c7c7000000000000000000000e50000000000000000000000e5000000000 0000000000000e5000000000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e5000000000c7c700c7c700c7c7000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e50000e50000000000e50000e50000e5000000000c7c700c7c700 c7c7000000000e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000c000010e50000e50000e5000c000010e50000e50000e5000c000010e50000e5000 0e5000c000010e50000e50000e50000000000e50000e50000e50000000000e50000e5000 0e5000000000c7c700c7c700c7c7000000000e50000e50000e50000000000e50000e5000 0e50000000000e50000e5000 showpage % stop using temporary dictionary end % restore original state origstate restore %%Trailer scotch_6.0.9/doc/src/ptscotch/p_i.tex0000644000302600021200000012241313303015264017731 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_i.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Introductions % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} \subsection{Static mapping} The efficient execution of a parallel program on a parallel machine requires that the communicating processes of the program be assigned to the processors of the machine so as to minimize its overall running time. When processes have a limited duration and their logical dependencies are accounted for, this optimization problem is referred to as scheduling. When processes are assumed to coexist simultaneously for the entire duration of the program, it is referred to as mapping. It amounts to balancing the computational weight of the processes among the processors of the machine, while reducing the cost of communication by keeping intensively inter-communicating processes on nearby processors. In most cases, the underlying computational structure of the parallel programs to map can be conveniently modeled as a graph in which vertices correspond to processes that handle distributed pieces of data, and edges reflect data dependencies. The mapping problem can then be addressed by assigning processor labels to the vertices of the graph, so that all processes assigned to some processor are loaded and run on it. In a SPMD context, this is equivalent to the distribution across processors of the data structures of parallel programs; in this case, all pieces of data assigned to some processor are handled by a single process located on this processor. A mapping is called static if it is computed prior to the execution of the program. Static mapping is NP-complete in the general case~\cite{gajo79}. Therefore, many studies have been carried out in order to find sub-optimal solutions in reasonable time, including the development of specific algorithms for common topologies such as the hypercube~\cite{errasa90,hamm92}. When the target machine is assumed to have a communication network in the shape of a complete graph, the static mapping problem turns into the partitioning problem, which has also been intensely studied~\cite{basi94,hele93a,kaku95a,kaku95c,posili90}. However, when mapping onto parallel machines the communication network of which is not a bus, not accounting for the topology of the target machine usually leads to worse running times, because simple cut minimization can induce more expensive long-distance communication~\cite{hamm92,wacrevjo95}; the static mapping problem is gaining popularity as most of the newer massively parallel machines have a strongly NUMA architecture \subsection{Sparse matrix ordering} Many scientific and engineering problems can be modeled by sparse linear systems, which are solved either by iterative or direct methods. To achieve efficiency with direct methods, one must minimize the fill-in induced by factorization. This fill-in is a direct consequence of the order in which the unknowns of the linear system are numbered, and its effects are critical both in terms of memory and of computation costs. \\ Because there always exist large problem graphs which cannot fit in the memory of sequential computers and cost too much to partition, it is necessary to resort to parallel graph ordering tools. \ptscotch\ provides such features. \subsection{Contents of this document} This document describes the capabilities and operations of \ptscotch, a software package devoted to parallel static mapping and sparse matrix block ordering. It is the parallel extension of \scotch, a sequential software package devoted to static mapping, graph and mesh partitioning, and sparse matrix block ordering. While both packages share a significant amount of code, because \ptscotch\ transfers control to the sequential routines of the \libscotch\ library when the subgraphs on which it operates are located on a single processor, the two sets of routines have a distinct user's manual. Readers interested in the sequential features of \scotch\ should refer to the {\it\scotch\ User's Guide}~\scotchcitesuser. The rest of this manual is organized as follows. Section~\ref{sec-project} presents the goals of the \scotch\ project, and section~\ref{sec-algo} outlines the most important aspects of the parallel partitioning and ordering algorithms that it implements. Section~\ref{sec-file} defines the formats of the files used in \ptscotch, section~\ref{sec-prog} describes the programs of the \ptscotch\ distribution, and section~\ref{sec-lib} defines the interface and operations of the parallel routines of the \libscotch\ library. Section~\ref{sec-install} explains how to obtain and install the \scotch\ distribution. Finally, some practical examples are given in section~\ref{sec-examples}. %, and instructions on how to implement new methods in the %\libscotch\ library are provided in section~\ref{sec-coding}. \section{The \scotch\ project} \label{sec-project} \subsection{Description} \scotch\ is a project carried out at the {\it Laboratoire Bordelais de Recherche en Informatique\/} (LaBRI) of the Universit\'e Bordeaux I, and now within the Bacchus project of INRIA Bordeaux Sud-Ouest. Its goal is to study the applications of graph theory to scientific computing, using a ``divide and conquer'' approach. It focused first on static mapping, and has resulted in the development of the Dual Recursive Bipartitioning (or DRB) mapping algorithm and in the study of several graph bipartitioning heuristics~\cite{pell94a}, all of which have been implemented in the \scotch\ software package~\cite{pero96a}. Then, it focused on the computation of high-quality vertex separators for the ordering of sparse matrices by nested dissection, by extending the work that has been done on graph partitioning in the context of static mapping~\cite{pero97a,peroam00a}. More recently, the ordering capabilities of \scotch\ have been extended to native mesh structures, thanks to hypergraph partitioning algorithms. New graph partitioning methods have also been recently added~\cite{chpe06a,pell07b}. Version {\sc 5.0} of \scotch\ was the first one to comprise parallel graph ordering routines~\cite{chpe08}, and version {\sc 5.1} started offering parallel graph partitioning features, while parallel static mapping will be available in the next release. \subsection{Availability} Starting from version {\sc 4.0}, which has been developed at INRIA within the ScAlApplix project, \scotch\ is available under a dual licensing basis. On the one hand, it is downloadable from the \scotch\ web page as free/libre software, to all interested parties willing to use it as a library or to contribute to it as a testbed for new partitioning and ordering methods. On the other hand, it can also be distributed, under other types of licenses and conditions, to parties willing to embed it tightly into closed, proprietary software. \\ The free/libre software license under which \scotch\ {\sc\scotchver} is distributed is the CeCILL-C license~\cite{cecill}, which has basically the same features as the GNU LGPL (``{\it Lesser General Public License}'')~\cite{lgpl}: ability to link the code as a library to any free/libre or even proprietary software, ability to modify the code and to redistribute these modifications. Version {\sc 4.0} of \scotch\ was distributed under the LGPL itself. This version did not comprise any parallel features. \\ Please refer to section~\ref{sec-install} to see how to obtain the free/libre distribution of \scotch. \section{Algorithms} \label{sec-algo} \subsection{Parallel static mapping by Dual Recursive Bipartitioning} \label{sec-drb} For a detailed description of the sequential implementation of this mapping algorithm and an extensive analysis of its performance, please refer to~\cite{pell94a,pero96b}. In the next sections, we will only outline the most important aspects of the algorithm. \subsubsection{Static mapping} The parallel program to be mapped onto the target architecture is modeled by a valuated unoriented graph $S$ called source graph or process graph, the vertices of which represent the processes of the parallel program, and the edges of which the communication channels between communicating processes. Vertex- and edge- valuations associate with every vertex $v_S$ and every edge $e_S$ of $S$ integer numbers $w_S(v_S)$ and $w_S(e_S)$ which estimate the computation weight of the corresponding process and the amount of communication to be transmitted on the channel, respectively. The target machine onto which is mapped the parallel program is also modeled by a valuated unoriented graph $T$ called target graph or architecture graph. Vertices $v_T$ and edges $e_T$ of $T$ are assigned integer weights $w_T(v_T)$ and $w_T(e_T)$, which estimate the computational power of the corresponding processor and the cost of traversal of the inter-processor link, respectively. A mapping from $S$ to $T$ consists of two applications $\too{S,T} : V(S) \rghta V(T)$ and $\roo{S,T} : E(S) \rghta {\cal P}(E(T))$, where ${\cal P}(E(T))$ denotes the set of all simple loopless paths which can be built from $E(T)$. $\too{S,T}(v_S) = v_T$ if process $v_S$ of $S$ is mapped onto processor $v_T$ of $T$, and $\roo{S,T}(e_S) = \{ e^1_T, e^2_T, \ldots, e^n_T \}$ if communication channel $e_S$ of $S$ is routed through communication links $e^1_T$, $e^2_T$, \ldots, $e^n_T$ of $T$. $|\roo{S,T}(e_S)|$ denotes the dilation of edge $e_S$, that is, the number of edges of $E(T)$ used to route $e_S$. \subsubsection{Cost function and performance criteria} \label{sec-algo-cost} The computation of efficient static mappings requires an {\it a priori\/} knowledge of the dynamic behavior of the target machine with respect to the programs which are run on it. This knowledge is synthesized in a cost function, the nature of which determines the characteristics of the desired optimal mappings. The goal of our mapping algorithm is to minimize some communication cost function, while keeping the load balance within a specified tolerance. The communication cost function $f_C$ that we have chosen is the sum, for all edges, of their dilation multiplied by their weight: \bn f_C(\too{S,T},\roo{S,T}) \eqdef \hspace*{-0.25cm}\sum\limits_{e_S\in E(S)}\hspace*{-0.25cm} w_S(e_S)\,|\roo{S,T}(e_S)|\enspace. \en This function, which has already been considered by several authors for hypercube target topologies~\cite{errasa90,hamm92,hele94b}, has several interesting properties: it is easy to compute, allows incremental updates performed by iterative algorithms, and its minimization favors the mapping of intensively intercommunicating processes onto nearby processors; regardless of the type of routage implemented on the target machine (store-and-forward or cut-through), it models the traffic on the interconnection network and thus the risk of congestion. The strong positive correlation between values of this function and effective execution times has been experimentally verified by Hammond~\cite{hamm92} on the CM-2, and by Hendrickson and Leland~\cite{hele94a} on the nCUBE~2. \\ The quality of mappings is evaluated with respect to the criteria for quality that we have chosen: the balance of the computation load across processors, and the minimization of the interprocessor communication cost modeled by function~$f_C$. These criteria lead to the definition of several parameters, which are described below. For load balance, one can define $\mmap$, the average load per computational power unit (which does not depend on the mapping), and $\dmap$, the load imbalance ratio, as\\[-0.5em] \bn \mmap \eqdef {\sum\limits_{v_S \in V(S)} w_S(v_S) \over \sum\limits_{v_T \in V(T)} w_T(v_T)} \hspace*{2.5em}\mbox{~and~} \en \bn \dmap \eqdef {\sum\limits_{v_T \in V(T)} \left|\left(\!\!{1 \over w_T(v_T)}\hspace*{-0.3em} \sum\limits_{\scriptsize \shortstack{$v_S \in V(S)$\\[-0.2em] $\too{S,T}(v_S) = v_T$}} \hspace*{-0.2em} w_S(v_S)\!\!\right)\:-\:\mmap\right| \over \sum\limits_{v_S \in V(S)} w_S(v_S)}\enspace. \en However, since the maximum load imbalance ratio is provided by the user in input of the mapping, the information given by these parameters is of little interest, since what matters is the minimization of the communication cost function under this load balance constraint. For communication, the straightforward parameter to consider is $f_C$. It can be normalized as $\mexp$, the average edge expansion, which can be compared to $\mdil$, the average edge dilation; these are defined as\\[-1.3em] \bn \mexp \eqdef {f_C \over \sum\limits_{e_S \in E(S)} w_S(e_S)} \hspace*{2.5em}\mbox{~and~}\hspace*{2.5em} \mdil \eqdef {\sum\limits_{e_S \in E(S)}|\roo{S,T}(e_S)| \over |E(S)|} \enspace. \en $\dexp \eqdef {\mexp \over \mdil}$ is smaller than $1$ when the mapper succeeds in putting heavily intercommunicating processes closer to each other than it does for lightly communicating processes; they are equal if all edges have same weight. \subsubsection{The Dual Recursive Bipartitioning algorithm} \label{sec-algo-drb} Our mapping algorithm uses a divide and conquer approach to recursively allocate subsets of processes to subsets of processors~\cite{pell94a}. It starts by considering a set of processors, also called domain, containing all the processors of the target machine, and with which is associated the set of all the processes to map. At each step, the algorithm bipartitions a yet unprocessed domain into two disjoint subdomains, and calls a graph bipartitioning algorithm to split the subset of processes associated with the domain across the two subdomains, as sketched in the following. \noi {\renewcommand{\baselinestretch}{0.95}\footnotesize\tt {% \begin{verbatim} mapping (D, P) Set_Of_Processors D; Set_Of_Processes P; { Set_Of_Processors D0, D1; Set_Of_Processes P0, P1; if (|P| == 0) return; /* If nothing to do. */ if (|D| == 1) { /* If one processor in D */ result (D, P); /* P is mapped onto it. */ return; } (D0, D1) = processor_bipartition (D); (P0, P1) = process_bipartition (P, D0, D1); mapping (D0, P0); /* Perform recursion. */ mapping (D1, P1); } \end{verbatim}}} \noi The association of a subdomain with every process defines a partial mapping of the process graph. As bipartitionings are performed, the subdomain sizes decrease, up to give a complete mapping when all subdomains are of size~one. \\ The above algorithm lies on the ability to define five main objects: \begin{itemize} \item a domain structure, which represents a set of processors in the target architecture; \item a domain bipartitioning function, which, given a domain, bipartitions it in two disjoint subdomains; \item a domain distance function, which gives, in the target graph, a measure of the distance between two disjoint domains. Since domains may not be convex nor connected, this distance may be estimated. However, it must respect certain homogeneity properties, such as giving more accurate results as domain sizes decrease. The domain distance function is used by the graph bipartitioning algorithms to compute the communication function to minimize, since it allows the mapper to estimate the dilation of the edges that link vertices which belong to different domains. Using such a distance function amounts to considering that all routings will use shortest paths on the target architecture, which is how most parallel machines actually do. We have thus chosen that our program would not provide routings for the communication channels, leaving their handling to the communication system of the target machine; \item a process subgraph structure, which represents the subgraph induced by a subset of the vertex set of the original source graph; \item a process subgraph bipartitioning function, which bipartitions subgraphs in two disjoint pieces to be mapped onto the two subdomains computed by the domain bipartitioning function. \end{itemize} All these routines are seen as black boxes by the mapping program, which can thus accept any kind of target architecture and process bipartitioning functions. \subsubsection{Partial cost function} The production of efficient complete mappings requires that all graph bipartitionings favor the criteria that we have chosen. Therefore, the bipartitioning of a subgraph~$S'$ of $S$ should maintain load balance within the user-specified tolerance, and minimize the partial communication cost function $f'_C$, defined as \bn f'_C(\too{S,T},\roo{S,T}) \eqdef \hspace*{-0.45cm}\sum\limits_{\mbox{\scriptsize \shortstack{$v\in V(S')$\\ $\{v,v'\}\in E(S)$}}}\hspace*{-0.45cm} w_S(\{v,v'\})\,|\roo{S,T}(\{v,v'\})|\enspace, \en which accounts for the dilation of edges internal to subgraph~$S'$ as well as for the one of edges which belong to the cocycle of $S'$, as shown in Figure~\ref{fig-bipcost}. Taking into account the partial mapping results issued by previous bipartitionings makes it possible to avoid local choices that might prove globally bad, as explained below. This amounts to incorporating additional constraints to the standard graph bipartitioning problem, turning it into a more general optimization problem termed as skewed graph partitioning by some authors~\cite{heledr97}. \begin{figure}[hbt] \hfill \parbox[b]{4.9cm}{ \hfill \includegraphics[scale=0.40]{s_f_rua.eps} \hfill\\ {\bf a.} Initial position. }\ \hfill\ \parbox[b]{4.9cm}{ \hfill \includegraphics[scale=0.40]{s_f_rub.eps} \hfill\\ {\bf b.} After one vertex is moved. }\hfill\ \caption% {Edges accounted for in the partial communication cost function when bipartitioning the subgraph associated with domain~$D$ between the two subdomains $D_0$ and $D_1$ of~$D$. Dotted edges are of dilation zero, their two ends being mapped onto the same subdomain. Thin edges are cocycle edges.} \label{fig-bipcost} \end{figure} %% \subsubsection{Execution scheme} %% From an algorithmic point of view, our mapper behaves as a greedy algorithm, %% since the mapping of a process to a subdomain is never reconsidered, and %% at each step of which iterative algorithms can be applied. %% The double recursive call performed at each step induces a recursion scheme %% in the shape of a binary tree, each vertex of which corresponds to a %% bipartitioning job, that is, the bipartitioning of both a domain and %% its associated subgraph. %% In the case of depth-first sequencing, as written in the above sketch, %% bipartitioning jobs run in the left branches of the tree have no information %% on the distance between the vertices they handle and neighbor vertices to be %% processed in the right branches. %% On the contrary, sequencing the jobs according to a by-level (breadth-first) %% travel of the tree allows any bipartitioning job of a given level to %% have information on the subdomains to which all the processes have been %% assigned at the previous level. %% Thus, when deciding in which subdomain to put a given process, a %% bipartitioning job can account for the communication costs induced by %% its neighbor processes, whether they are handled by the job itself or not, %% since it can estimate in $f'_C$ the dilation of the corresponding edges. %% This results in an interesting feedback effect: once an edge has been kept %% in a cut between two subdomains, the distance between its end vertices will %% be accounted for in the partial communication cost function to be minimized, %% and following jobs will be more likely to keep these vertices close to %% each other, as illustrated in Figure~\ref{fig-biprub}. %% \begin{figure}[hbt] %% \hfill %% \parbox[b]{5.2cm}{ %% \hfill %% \includegraphics[scale=0.40]{s_f_run.eps} %% \hfill\\ %% {\bf a.} Depth-first sequencing. %% }\ \hfill\ %% \parbox[b]{5.2cm}{ %% \hfill %% \includegraphics[scale=0.40]{s_f_ruy.eps} %% \hfill\\ %% {\bf b.} Breadth-first sequencing. %% }\hfill\ % %% \caption% %% {Influence of depth-first and breadth-first sequencings on the %% bipartitioning of a domain~$D$ belonging to the leftmost branch of %% the bipartitioning tree. %% With breadth-first sequencing, the partial mapping data regarding vertices %% belonging to the right branches of the bipartitioning tree are more %% accurate (C.L. stands for ``Cut Level'').} %% \label{fig-biprub} %% \end{figure} %% The relative efficiency of depth-first and breadth-first sequencing schemes %% with respect to the structure of the source and target graphs is discussed %% in~\cite{pero96b}. \subsubsection{Parallel graph bipartitioning methods} \label{sec-algo-bipart} The core of our parallel recursive mapping algorithm uses process graph parallel bipartitioning methods as black boxes. It allows the mapper to run any type of graph bipartitioning method compatible with our criteria for quality. Bipartitioning jobs maintain an internal image of the current bipartition, indicating for every vertex of the job whether it is currently assigned to the first or to the second subdomain. It is therefore possible to apply several different methods in sequence, each one starting from the result of the previous one, and to select the methods with respect to the job characteristics, thus enabling us to define mapping strategies. The currently implemented graph bipartitioning methods are listed below. \begin{itemize} \iteme[{\bf Band}] Like the multi-level method which will be described below, the band method is a meta-algorithm, in the sense that it does not itself compute partitions, but rather helps other partitioning algorithms perform better. It is a refinement algorithm which, from a given initial partition, extracts a band graph of given width (which only contains graph vertices that are at most at this distance from the separator), calls a partitioning strategy on this band graph, and prolongs\footnote{While a \emph{projection} is an application to a space of lower dimension, a \emph{prolongation} refers to an application to a space of higher dimension. Yet, the term projection is also commonly used to refer to such a propagation, most often in the context of a multilevel framework.} back the refined partition on the original graph. This method was designed to be able to use expensive partitioning heuristics, such as genetic algorithms, on large graphs, as it dramatically reduces the problem space by several orders of magnitude. However, it was found that, in a multi-level context, it also improves partition quality, by coercing partitions in a problem space that derives from the one which was globally defined at the coarsest level, thus preventing local optimization refinement algorithms to be trapped in local optima of the finer graphs~\cite{chpe06a}. \iteme[{\bf Diffusion}] This global optimization method, the sequential formulation of which is presented in~\cite{pell07b}, flows two kinds of antagonistic liquids, scotch and anti-scotch, from two source vertices, and sets the new frontier as the limit between vertices which contain scotch and the ones which contain anti-scotch. In order to add load-balancing constraints to the algorithm, a constant amount of liquid disappears from every vertex per unit of time, so that no domain can spread across more than half of the vertices. Because selecting the source vertices is essential to the obtainment of useful results, this method has been hard-coded so that the two source vertices are the two vertices of highest indices, since in the band method these are the anchor vertices which represent all of the removed vertices of each part. Therefore, this method must be used on band graphs only, or on specifically crafted graphs. \iteme[{\bf Multi-level}]\label{sec-algo-mle} This algorithm, which has been studied by several authors~\cite{basi94,hele93b,kaku95a} and should be considered as a strategy rather than as a method since it uses other methods as parameters, repeatedly reduces the size of the graph to bipartition by finding matchings that collapse vertices and edges, computes a partition for the coarsest graph obtained, and prolongs the result back to the original graph, as shown in Figure~\ref{fig-multiproc}. \begin{figure}[hbt] ~\hfill\includegraphics[scale=0.50]{s_f_mult.eps}\hfill\ ~ \caption% {The multi-level partitioning process. In the uncoarsening phase, the light and bold lines represent for each level the prolonged partition obtained from the coarser graph, and the partition obtained after refinement, respectively.} \label{fig-multiproc} \end{figure} The multi-level method, when used in conjunction with the banded diffusion method to refine the prolonged partitions at every level, usually stabilizes quality irrespective of the number of processors which run the parallel static mapper. \end{itemize} \subsubsection{Mapping onto variable-sized architectures} \label{sec-algo-variable} Several constrained graph partitioning problems can be modeled as mapping the problem graph onto a target architecture, the number of vertices and topology of which depend dynamically on the structure of the subgraphs to bipartition at each step. Variable-sized architectures are supported by the DRB algorithm in the following way: at the end of each bipartitioning step, if any of the variable subdomains is empty (that is, all vertices of the subgraph are mapped only to one of the subdomains), then the DRB process stops for both subdomains, and all of the vertices are assigned to their parent subdomain; else, if a variable subdomain has only one vertex mapped onto it, the DRB process stops for this subdomain, and the vertex is assigned to it. The moment when to stop the DRB process for a specific subgraph can be controlled by defining a bipartitioning strategy that tests for the validity of a criterion at each bipartitioning step, and maps all of the subgraph vertices to one of the subdomains when it becomes false. \subsection{Parallel sparse matrix ordering by hybrid incomplete nested dissection} When solving large sparse linear systems of the form $Ax=b$, it is common to precede the numerical factorization by a symmetric reordering. This reordering is chosen in such a way that pivoting down the diagonal in order on the resulting permuted matrix $PAP^T$ produces much less fill-in and work than computing the factors of $A$ by pivoting down the diagonal in the original order (the fill-in is the set of zero entries in $A$ that become non-zero in the factored matrix). \subsubsection{Hybrid incomplete nested dissection} \label{sec-algo-nested} The minimum degree and nested dissection algorithms are the two most popular reordering schemes used to reduce fill-in and operation count when factoring and solving sparse matrices. \\ The minimum degree algorithm~\cite{tiwa67} is a local heuristic that performs its pivot selection by iteratively selecting from the graph a node of minimum degree. It is known to be a very fast and general purpose algorithm, and has received much attention over the last three decades (see for example~\cite{amdadu96,geli89,liu-85}). However, the algorithm is intrinsically sequential, and very little can be theoretically proved about its efficiency. \\ The nested dissection algorithm~\cite{geli81} is a global, recursive heuristic algorithm which computes a vertex set~$S$ that separates the graph into two parts~$A$ and~$B$, ordering $S$ with the highest remaining indices. It then proceeds recursively on parts~$A$ and~$B$ until their sizes become smaller than some threshold value. This ordering guarantees that, at each step, no non zero term can appear in the factorization process between unknowns of~$A$ and unknowns of~$B$. Many theoretical results have been obtained on nested dissection ordering~\cite{chro89,lirota79}, and its divide and conquer nature makes it easily parallelizable. The main issue of the nested dissection ordering algorithm is thus to find small vertex separators that balance the remaining subgraphs as evenly as possible. Provided that good vertex separators are found, the nested dissection algorithm produces orderings which, both in terms of fill-in and operation count, compare favorably~\cite{gukaku96,kaku95a,pero97a} to the ones obtained with the minimum degree algorithm~\cite{liu-85}. Moreover, the elimination trees induced by nested dissection are broader, shorter, and better balanced, and therefore exhibit much more concurrency in the context of parallel Cholesky factorization~\cite[and included references]{aseilish91,geng89,geheling88,gukaku96,pero97a,shre92}. \\ Due to their complementary nature, several schemes have been proposed to hybridize the two methods~\cite{hero98,kaku98a,pero97a}. Our implementation is based on a tight coupling of the nested dissection and minimum degree algorithms, that allows each of them to take advantage of the information computed by the other~\cite{peroam00a}. However, because we do not provide a parallel implementation of the minimum degree algorithm, this hybridization scheme can only take place after enough steps of parallel nested dissection have been performed, such that the subgraphs to be ordered by minimum degree are centralized on individual processors. \subsubsection{Parallel ordering} \label{sec-algo-parallel} The parallel computation of orderings in \ptscotch\ involves three different levels of concurrency, corresponding to three key steps of the nested dissection process: the nested dissection algorithm itself, the multi-level coarsening algorithm used to compute separators at each step of the nested dissection process, and the refinement of the obtained separators. Each of these steps is described below. \paragraph{Nested dissection} As said above, the first level of concurrency relates to the parallelization of the nested dissection method itself, which is straightforward thanks to the intrinsically concurrent nature of the algorithm. Starting from the initial graph, arbitrarily distributed across $p$ processors but preferably balanced in terms of vertices, the algorithm proceeds as illustrated in Figure~\ref{fig-nedi}~: once a separator has been computed in parallel, by means of a method described below, each of the $p$ processors participates in the building of the distributed induced subgraph corresponding to the first separated part (even if some processors do not have any vertex of it). This induced subgraph is then folded onto the first $\lceil\frac{p}{2}\rceil$ processors, such that the average number of vertices per processor, which guarantees efficiency as it allows the shadowing of communications by a subsequent amount of computation, remains constant. During the folding process, vertices and adjacency lists owned by the $\lfloor\frac{p}{2}\rfloor$ sender processors are redistributed to the $\lceil\frac{p}{2}\rceil$ receiver processors so as to evenly balance their loads. The same procedure is used to build, on the $\lfloor\frac{p}{2}\rfloor$ remaining processors, the folded induced subgraph corresponding to the second part. These two constructions being completely independent, the computations of the two induced subgraphs and their folding can be performed in parallel, thanks to the temporary creation of an extra thread per processor. When the vertices of the separated graph are evenly distributed across the processors, this feature favors load balancing in the subgraph building phase, because processors which do not have many vertices of one part will have the rest of their vertices in the other part, thus yielding the same overall workload to create both graphs in the same time. This feature can be disabled when the communication system of the target machine is not thread-safe. At the end of the folding process, every processor has a folded subgraph fragment of one of the two folded subgraphs, and the nested dissection process car recursively proceed independently on each subgroup of $\frac{p}{2}$ (then $\frac{p}{4}$, $\frac{p}{8}$, etc\@.) processors, until each subgroup is reduced to a single processor. From then on, the nested dissection process will go on sequentially on every processor, using the nested dissection routines of the \scotch\ library, eventually ending in a coupling with minimum degree methods~\cite{peroam00a}, as described in the previous section. \begin{figure} ~\hfill% \includegraphics[scale=0.38]{p_f_nedi.eps} \hfill~\\*[-1em] \caption{Diagram of a nested dissection step for a (sub-)graph distributed across four processors. Once the separator is known, the two induced subgraphs are built and folded (this can be done in parallel for both subgraphs), yielding two subgraphs, each of them distributed across two processors.} \label{fig-nedi} \end{figure} \paragraph{Graph coarsening} \label{secalgocoarsen} The second level of concurrency concerns the computation of separators. The approach we have chosen is the now classical multi-level one~\cite{basi94,hele95,kaku98a}. It consists in repeatedly computing a set of increasingly coarser albeit topologically similar versions of the graph to separate, by finding matchings which collapse vertices and edges, until the coarsest graph obtained is no larger than a few hundreds of vertices, then computing a separator on this coarsest graph, and prolonging back this separator, from coarser to finer graphs, up to the original graph. Most often, a local optimization algorithm, such as Kernighan-Lin~\cite{keli70} or Fiduccia-Mattheyses~\cite{fima82} (FM), is used in the uncoarsening phase to refine the partition that is prolonged back at every level, such that the granularity of the solution is the one of the original graph and not the one of the coarsest graph. The main features of our implementation are outlined in Figure~\ref{fig-sepa}. Once the matching phase is complete, the coarsened subgraph building phase takes place. It can be parametrized so as to allow one to choose between two options. Either all coarsened vertices are kept on their local processors (that is, processors that hold at least one of the ends of the coarsened edges), as shown in the first steps of Figure~\ref{fig-sepa}, which decreases the number of vertices owned by every processor and speeds-up future computations, or else coarsened graphs are folded and duplicated, as shown in the next steps of Figure~\ref{fig-sepa}, which increases the number of working copies of the graph and can thus reduce communication and increase the final quality of the separators. As a matter of fact, separator computation algorithms, which are local heuristics, heavily depend on the quality of the coarsened graphs, and we have observed with the sequential version of \scotch\ that taking every time the best partition among two ones, obtained from two fully independent multi-level runs, usually improved overall ordering quality. By enabling the folding-with-duplication routine (which will be referred to as ``fold-dup'' in the following) in the first coarsening levels, one can implement this approach in parallel, every subgroup of processors that hold a working copy of the graph being able to perform an almost-complete independent multi-level computation, save for the very first level which is shared by all subgroups, for the second one which is shared by half of the subgroups, and so on. The problem with the fold-dup approach is that it consumes a lot of memory. Consequently, a good strategy can be to resort to folding only when the number of vertices of the graph to be considered reaches some minimum threshold. This threshold allows one to set a trade off between the level of completeness of the independent multi-level runs which result from the early stages of the fold-dup process, which impact partitioning quality, and the amount of memory to be used in the process. Once all working copies of the coarsened graphs are folded on individual processors, the algorithm enters a multi-sequential phase, illustrated at the bottom of Figure~\ref{fig-sepa}: the routines of the sequential \scotch\ library are used on every processor to complete the coarsening process, compute an initial partition, and prolong it back up to the largest centralized coarsened graph stored on the processor. Then, the partitions are prolonged back in parallel to the finer distributed graphs, selecting the best partition between the two available when prolonging to a level where fold-dup had been performed. This distributed prolongation process is repeated until we obtain a partition of the original graph. \begin{figure} ~\hfill% \includegraphics[scale=0.30]{p_f_sepa.eps} \hfill~\\*[-1em] \caption{Diagram of the parallel computation of the separator of a graph distributed across four processors, by parallel coarsening with folding-with-duplication in the last stages, multi-sequential computation of initial partitions that are locally prolonged back and refined on every processor, and then parallel uncoarsening of the best partition encountered.} \label{fig-sepa} \end{figure} \paragraph{Band refinement} The third level of concurrency concerns the refinement heuristics which are used to improve the prolonged separators. At the coarsest levels of the multi-level algorithm, when computations are restricted to individual processors, the sequential FM algorithm of \scotch\ is used, but this class of algorithms does not parallelize well. This problem can be solved in two ways: either by developing scalable and efficient local optimization algorithms, or by being able to use the existing sequential FM algorithm on very large graphs. In~\cite{chpe06a} has been proposed a solution which enables both approaches, and is based on the following reasoning. Since every refinement is performed by means of a local algorithm, which perturbs only in a limited way the position of the prolonged separator, local refinement algorithms need only to be passed a subgraph that contains the vertices that are very close to the prolonged separator. The computation and use of distributed band graphs is outlined in Figure~\ref{fig-band}. Given a distributed graph and an initial separator, which can be spread across several processors, vertices that are closer to separator vertices than some small user-defined distance are selected by spreading distance information from all of the separator vertices, using our halo exchange routine. Then, the distributed band graph is created, by adding on every processor two anchor vertices, which are connected to the last layers of vertices of each of the parts. The vertex weight of the anchor vertices is equal to the sum of the vertex weights of all of the vertices they replace, to preserve the balance of the two band parts. Once the separator of the band graph has been refined using some local optimization algorithm, the new separator is prolonged back to the original distributed graph. \begin{figure} ~\hfill% \includegraphics[scale=0.37]{p_f_band.eps} \hfill~\\*[-1em] \caption{Creation of a distributed band graph. Only vertices closest to the separator are kept. Other vertices are replaced by anchor vertices of equivalent total weight, linked to band vertices of the last layer. There are two anchor vertices per processor, to reduce communication. Once the separator has been refined on the band graph using some local optimization algorithm, the new separator is prolonged back to the original distributed graph.} \label{fig-band} \end{figure} Basing on these band graphs, we have implemented a multi-sequential refinement algorithm, outlined in Figure~\ref{fig-multi}. At every distributed uncoarsening step, a distributed band graph is created. Centralized copies of this band graph are then gathered on every participating processor, which serve to run fully independent instances of our sequential FM algorithm. The perturbation of the initial state of the sequential FM algorithm on every processor allows us to explore slightly different solution spaces, and thus to improve refinement quality. Finally, the best refined band separator is prolonged back to the distributed graph, and the uncoarsening process goes on. \begin{figure} ~\hfill% \includegraphics[scale=0.28]{p_f_multi.eps} \hfill~\\*[-1em] \caption{Diagram of the multi-sequential refinement of a separator prolonged back from a coarser graph distributed across four processors to its finer distributed graph. Once the distributed band graph is built from the finer graph, a centralized version of it is gathered on every participating processor. A sequential FM optimization can then be run independently on every copy, and the best improved separator is then distributed back to the finer graph.} \label{fig-multi} \end{figure} \subsubsection{Performance criteria} \label{sec-order-perf} The quality of orderings is evaluated with respect to several criteria. The first one, \NNZ, is the number of non-zero terms in the factored reordered matrix. The second one, \OPC, is the operation count, that is the number of arithmetic operations required to factor the matrix. The operation count that we have considered takes into consideration all operations (additions, subtractions, multiplications, divisions) required by Cholesky factorization, except square roots; it is equal to $\sum_c n_c^2$, where $n_c$ is the number of non-zeros of column $c$ of the factored matrix, diagonal included. A third criterion for quality is the shape of the elimination tree; concurrency in parallel solving is all the higher as the elimination tree is broad and short. To measure its quality, several parameters can be defined: \hmin, \hmax, and \havg\ denote the minimum, maximum, and average heights of the tree\footnote% {We do not consider as leaves the disconnected vertices that are present in some meshes, since they do not participate in the solving process.}, respectively, and \hdlt\ is the variance, expressed as a percentage of \havg. Since small separators result in small chains in the elimination tree, \havg\ should also indirectly reflect the quality of separators. scotch_6.0.9/doc/src/ptscotch/ptscotch_logo_color.png0000644000302600021200000002167413303015264023222 0ustar pelegrinpelegrin‰PNG  IHDRÀ€œ ¹«bKGDÿÿÿ ½§“ pHYs  šœtIMEÖ BÿÉ<tEXtCommentCreated with The GIMPïd%n IDATxÚíMˆG²€£†å-ËH30Á ‚½Hƒ@³²5òÁcÐÏʬÇ»ìIíÁ¼ë»­dcÞñ}X]|´‘Vƒ^<«±A­ÃJ#yG zË!âµäañ©ß¡;«£¢#ÿ3««»£`˜Î®êªü"2#3#*3‹¹u輺0·åÁ¥[­AzmÍ~=N}«€óëÝàtîü ¿ð ¿ð ÿôñwû`ùgK·Zî×oAÑ[ïýW*½½½ÝÝÞÞÖžß‚¢›;Â/üÂ/üÂ?µüy…ÊA©´€IHã¨tá~á~áo>1·]þ ¿ð ¿ð ÿ´ñÏô¯n .àÒkkƒt«e¿§Ï¯wáë[Ep:wþ„_ø…_ø…:ùÅ.üÂ/üÂ/ü¸ð ¿ð ¿ðK P|àÂ/üÂ/üÂ/1@ñ ¿ð ¿ð ¿ÄÅ.üÂ/üÂ/ücÍ_¨@`«5ÜŠÒ4=lׯ­lA¯%ïÞ^…âÌýA«{{æç¯÷†¤ÇWÙóÅ™ûpº—½lùóI ¿ð ¿ð ÿäðÏà¶ZÕÑ4=l×·Z= …ÓÎeèt.kÏwo¯Bîü ¿ð ¿ð ÿtòÏÔѻеî®éqíý¿ð ¿ð sùgð‰µµê…4Í=Äö{ Rœ¹_IÏÏ_/‡ÁÜùâÌ}È?á~á~áŸN~™#üÂ/üÂ/ü2°wÈ<á~á~áŸt~™(üÂ/üÂ/üSË/ó`„_ø…_ø…_Ö¸ð ¿ð ¿ðK P|àÂ/üÂ/üÂ/1@ñ ¿ð ¿ð ¿ÄÅ.üÂ/üÂ/ü¸ð ¿ð ¿ðK P|àÂ/üÂ/üÂ?üE¿%tÊ^¨´8sß ûré¡®w½&Gþ|ÒÂ/üÂ/üÂ?9üÅ]ß $]¬Ôv½î˜ÛîÝãÕñUãu¹ó'üÂ/üÂ/üÓÇ?SGï"ö×Þð ¿ð ¿ð7—Ÿ8¿ÞSšî×d»Þ&„ÓŸ‡ÓŸ·¶þ9ó'üÂ/üÂ/üÓÉ?ã:Ĥû5ù IcÜù~á~áþéã— Ä„_ø…_øÒ'®ÊßÒN[b€â~á~á_þWÉ«‡áÙÊrù™¦Cò×ø j‰•T—V>V×ëqZ}ÆiÜàÎûÜ?6Â/üÂ/ü“ÎojäBŽ¥öX뿜¸õÑv% É¥;Ëez~þºõúÓŸlÇÒNÛš_þ&ó¦:þñî~gý›Ò8ò{“~ÞúîuT¹HUþGÅŸ"Â?yü©í“²¡ãªÿì1@ݰ¹iǽÝ$üãÂÛ61’Cö÷6v%$üÁ_Wý`bpvÄòû1{òXïïÐAö|Ób Ê“«\ÐûK LøÇ‘ÿÞÆnù—òy€†ô8ÊØ…ð}ãwè ìýð#Àó—°÷䩵g6Êy@¦À|ÎNRSøe˜ð‡æoi§]þ…6ˆK;m™ãhòñle¹ô—ûòó¡=Sãׄy@>± UÉi¥WŸCB™&ü“ÄŸ3Mæé<À˜Þ»)f×½½õg@%88Fô•¯KŒ"4F¢Ê ÄÀ„ÜùC^Ž™„ò_ô÷\Ê^¨R7€u7J®FŸ{–ÎÅàZRtB+½Ž'…þ]ùC)Ÿ›rß?ÿ¸ýqæWeëwÒùClÌ$”ÿ±Žºæ/EÐ÷­ï^'úúÀCeä£/žºc >•TÅ'|y]]¢®÷OÉ/1°¼ü¶ï¤óû@&¿œ8ŠMcF6û6ÚÞùûéjܘ¾×¶òs®5Z }ÍÇ=¡ÞÜT1hÕ—º´zˆjem×Ï­œ‡AðooŸâÉßÒN;j9 VËÎoóg+~åÿþxùœ_ïœÁ͉]r&¹ê×—'Vÿ.ü?i\‘:vý¸¦—vÚÐyÿlùœÙ“Ç*ó#ëàŸƒ¼õ`tõ¿n~ßȤñûÖo›ûsøg¨‘Ô¥ñвղ_Ó9æ‰Ää/Ö jº?6Ðêsìx.q?î¹®ú1¥¹û¦Ö ?eÉŸ)]iüúé¾×®•?wýuýÏÍÿÓÕeïNï$ñ›~2˜$þ©ŠªtÈägWøÞ“§¥QVŸSøÀÕ=Ëû-. ŨèsgŒŽ™xêˆPö½'Oì©c`eã·r¡·BŽÄÇŠ?ÄÀãÇ&=˜ÚþI 0"X®AÙÿ£çRÅ]oÊËÛ¯/jï?ûá'£ÜÿëŸ=yl`ô~÷'€• ‹ ½iq¡÷¬þ5øsl ˆã©+¢Þ.]Š“cG×¥ŒÍ:Øs{~öqÙøOZ hÒc€®õzZb .1@Ý:À“Æ?ƒO`¿.—nµª²]?·ÎóNJ“Z‡²ßÛ®|OÂØüéW]^lÏŸ[ØûìãÁÈ}æøé<nžÊÜ:<9hüž¿øÛ_vn¾þ²šÞ¹Év\ôåë¥"..ÀÞ?ÂÞg÷òÑgUßá2ÃKÓó_mj—‡ËÍ_ê?cýeý¯ƒßÇÆp1Àqç·ýÞÖøÑ†O›þ‘ÏT½xX¹Ð3ìêP#lüQº¸´ý&~vÙÃwÌKqîFm½ Î‡{Ïî7tNNÓ—Dbç޲|êóß–>Çʪ‚¦Q7Ú(æAÊ(0,´žÛêõüg7¦jXʇØú9¶~5•¿€.~sNµ¤4Í ƒM׫ôCËÔ¨ô©o/”†8pàÅ£Á€‡wçQº8w#*o¿¾X}ö‹ÇnyùÝŸ^<‚âÍkÑüj) Nç2{à4t¡ûùYëÛž´§ pqi\ô; ýÛøUɇ7P1¼8ßÄ .ýçÔO“õËßýöâ s±1Pœ»11ü¶ü©rmrwâŽÂÞ?N\ù/z#À\Ùê¿âÊ á­ï^÷„ÿ»? \xäÕû/Ýý4gä|ò÷ÓÕåʳˑ•%/ê»»ûoDóÏÏ_ïõFޝj ÉièF­`£&tÊÆð‡.hî[Imi®¬‹Ÿ ìýðcù_éxào¾YÖæ _е5]ËLþJï`clõ%gùWñîÙ?éy£]ësÈ €z”pçYÙ]u²»¾ü'®®L!ÂÚÙ“Çàûs7³èß%E«ݵµáá£)Í=HwýÏ?Ÿ€âÌý¡ »·WáôÿÎWÜuºÞçÚ£ŠðÍ_÷ó³Úû³ 9î.oFó»¤ùË{eEm |õ[—þmé˜=L壩ü”·òæ­2à+†üwzå÷æ—,w~®,Î^ø}oD…bÏ¥»5ž•ýsº¦£.¬ßŠ›öwz¡"ÃÐNOé"V®aü<€òYØëæZ^J«Ð•ºŸêÀ©sè\#hÒŠúY@×wb,Nš®ß‚ÂiëεÃVêªÍ~±a¨’0y¡ßãd(¿òŸþô¸v"h hЉÐ9ôoãO±U“ùsï©êH(oìâñ. ’:t[뜆npþ\êuHŒÙf8ýǬ>å›Wû§Ü’C/5zGß«N¿éþX¸Ó£dŽ”Þ ÜYÂú [­™ôŸ¢~–1À”7Åé-´ÌMŠMÕ±´ÓŽÊ_lå¦ÏáW“@__ÕÉT1À:~*þTF#E#˜šßµñ£úó- ¡ú)s\£às®T1 ['¶Îç<©X¿/Ÿk£¬ô[6€ØË…]“$†kºªÎݿԤÿõ³˜[‡î¨^Žmcò—bTËïšNÑQ×WàS9Z^FÅïÃÃMa©c뚘ÕSbïÇm¢Ÿúmš2:Å D~1öÑuŠNù(zɇ|lá„Øòbkk›ïÚZNÒZ ±½•&­…érŒûZ)¼õͨø}  àû…,ãçÃÚø™îï“çg+ËIÖ‚LíÒôÕH£OËKè’.ùÓº…tü9FᲨG#“¿X_{ÝkáÅvÆq-ÈØ=9; ~ßÝì9ýçÞ¿-ttéªß#t-ÈЗÆRéßGŽ»|a,ÿ¾‡¯ýSîMn¿Kš¦üç¾6,í´aßF;ºîÊ~€–^mHþRøª›¼ž®bó* ©º\n~ß‘ŸÍèkX\øbb~.ú†ê'…=©Ã¾¨ÆÏTþC—U°BF•6³®<„4|S·hh¡õÍ_ì1ʵ­+6X*ö¸®i3!rQÆ Wäü¾ozú¬…[_T:4^æ«ßNJìZ©äãª_9úÖÿÔöÉ·£c’¯®<Äì¼SÇZ SŒõW«@ð(b`.FžÛÏU¿MßN×ÆÈ®œü¾®O—ˆ¯aOóãêŸþC&ý„È=¥þ]Gú¹ìcêýP)?mèmò iø$à³7å/•ësûÑÕÙ9c®[Á}’öƒ£ 'õÝÐþ‰`Þ8Xmšš’ß·qñÝͧ÷®ËoLGÐWÿ!®0ßò³hDLù±/©ßØ·ÑÎú'_[ùŠtH ÐÃgoÊ_Š7•L¯×£AjjèÕ5ºFpRvP3Û&2Óó¦¡ ÆòûDî5xÓý]\K¶]hÜ/Vÿ! SÎ`lù÷µ/ô5[ùw‰ºÚ§+~ú[×°¯l$èèâ2åO½è;ò›=tPë¯+†w<ǯb¡k&q?¸}í²á • ¾––1Uf’í7i±ûò»6¨¦ü…v côï[ßO\=ì]>]=#.öÄWÿ¾Gª } uËû–¯ÐçMå~€\[›3fÜ:z\÷]îHývþ«Í‘‚ðž]º‘žnô‡ó?iûÁ•;z8Ê…–-[Y ]l¡²ÌžnMY”7nò·O/øÙÊ2»6¥ë›€>ËÅìG_ª,ö­é øìgY.ðÌØÝþv¾÷§òõíHà).!åÿÙʲvq ýÛò«ÛOÿÎg?ÌTòÉeŸÔõÌè÷\œ‡sê܂ܽ¹ß¨}ôŠK›‰éF4´¢«Ê¯¾Ÿ¤ ½? âÑ ×ëçÊnˆeÊÏÝ×6ñåWie4|æ©™ò¦sûƘ|c€\÷)Ÿ*>Åyt²-ÿ.nuªã˜òoй¹èŸÚ;›ÍÄq<Ê—c^iHù±O#] ´óþÙáUÐcä²E’ÏaÚùX5~MX ¯ÊLü˜Å5¿÷ÏzÉÎåºï/ý=šß%ÿjÓàÐ2¡cTòsÕ?ÞfKç–Ååm÷ƒ/’ðû”Oº*ÝNç5ñYk’+ÿœ!µÕo×ò«F¦zÁu†]×Jåä«k¨Lq|+WùwÕ¿ó&¸}†}íÒþ¨´«þCb£u”œnL ÐåíFî{®Ps=I{ »:—vڥ˰I10ß‘¾ÆG¿0¼2¼GL–».G Kß]ÞÔîW6tx0â-$Æ¢Ê5•¨s©ø]óg2€:‹r{Å”Sc1¤“Å…Rf¾å—kÀu¡ßúÁ̓óñ^å,ÿ.ú§3›Í¤¿Qe D6OL]å¿ÑómKñ¸ŽFt®.Îß<ÿÕ&̵9vka²OcØ}çýù6¶ëRÌtÕި؋ÃpÎUÿ¦´©ã’ßV>m^]c[þ­Ïf¶HÂTÈ<@SƒŽã[!òÝ,. •!]¾’-Pœ»Î設ž¨ÎFj|¸‘)èepù×¹-/%¹ò—£o×Î É×5ÎK¾u ÐjSé•_T.p½qÖ?–ÏïXm=žü>² :êÒxˆér=éÞ^Õ¦¹Æ­üîw†Ï8’4£æ·ÊOe`_)ø»ß^4w45:-Î݈*ÿ§üYÛ`Ë7s_ÛÉ0Ü3¶þ³ò:p„u¹~éïQõ?…þ]ljiSH\ÓWÿZÙhô\¿.ý ¸Âäí¨³ûßKÿ6[NŽ­_wj)ÿºô >A}¨4m‹‰pi Rœ¹o6ì•XÊ£áŠCš"£äŸŸ¿óó×µç‹3÷{÷£ì´÷Le„®o:¿é(ù3åÏ&;ç˜`9²ÓèI•er8ë?¿uôÇä1VÿÚzMÓŒ ]øËÑ7'cK£UþËFð¨³7+¸þ§Ò?×ÑÕƒÀúå{ÔÉÏ¥gÔü&—Æ7p¹§‹3÷+¯·–iÚ#1pÈ5)ó72~ÇôL¸‚k}4ïæ—•FžO¿âÍkn²#Cwÿ!ݘÕþgý§àgy騀kÈ#ôß}pEßY3Õs"ÛóØ‘$—îÿÅ”m½£ÏE2Ž­ÿ±ú7ÉY×Îr-Lÿšºcj|ë(ÿºôèçÚ*„¡MÕ<@,*“†W?ÝtþÙCaöÂï?zx§Ü6'÷< ›ìègíýuº1H;ì7ß,›ùu†ÈbSì‡ÈÊ×0ZSîO~먉NBÊ¿µƒc°e©æ†îWÉÉÀ$?ïµF\qö!¹Õ½n³æê‚áºBŒ>Oå<@l¬¹Â¬Î“sMæZ"éw`öÂï³Ïr’Æ`Ðû[õDÿ’ÎSQí†ÀÎc_:9Ê»qþcô¯^ yñXo|¹yñSw*§?tjÔmòtšh3ðýÏ)çÁª56ñZ›&ýt>¾2••¡a ª_šx7«`þ?ÿ¨å§|“9ÇùtFÃ`ü§f -PèÍ©j!~ó¬éü•|®Üó€l²«ÄoÞ¼fŸg¥ÓӋǬÎRÌ£‹2{åÏT#å;4í7‚†:_~±ñ—ÆÝÅCâYT#HùvŠëì gÇΤºöÙ¯PÛð:&Þó qGŠ“)c6þg+ËæÉ\ ”6t;7­Æˆºö¦f-Püªu¥w­ù~ øg¼ñÆ;½†¹AsåÏUv*mºÿ°ayÌÏD÷O¹$ü7®Í¨ñèŽ ùrí±|q='ÏâW£]çÜÊ«MãÏì<7C#KÔkáúêG'gÝ(¼Xú£wý*ÝŸ¶¾ƒ|¸†>—}úª/ui:ÂvýÜ:Ày o¤Ó.ÑJiÏ_ cßE¦Î¥ÈŸO:5¿ò üùóë]˜ë‹cïæ—ƒÃõxñ|ô; þrÂç/T>¿Þ†¹Œùs*ÄõÉÝ—MVOšµ[]õ¯Ë?6ÖýýÚÞÓð«<.>æWùÛ_úç†:™¾ò­0ÕÒåÏ9Ïv`ÝŸ5¬ÊV(;¡ìG¤kªTžK;íÊõ•Fß[WnÈ›¶¡õŸ髼YõÃuÄ 6¿å«—Î@©ëO®À5–ÿáÔå'…}m QŽZèºÜlq¡w^­\ñðÀó—Ó|x§²±jŰPCÃ|×Tþ²R#¨bÜ{ò´<Ÿ-è ;e˜M÷·éIív€ÿbc€Ô âÝÚ9~¼öe¥1긇¸¿¯|ÙÒÕbËJ&¸žù;ǹÑúÃ;;A¾W1'_y×UϤyA£ØúÏ5Ì>å¨|klª)Fj]kT×ÔxCt¼Ü.ò“½(Ô졃ë•kÖ,œ– ݨT¥‡: }Ya£Òdþ’凵;RçÈß³•e'ÙaCírž†ƒ'OáÄÕÃÁ1@ÎH8Åhp}Ò­Š fˆ|uy£®ç{OžÂ÷çnzÅ@»ŸŸèìæ—#NwÑñcÂþŠA×ÉŒz•—#¤þ›äiÓϳ•åªL¸Ïï õÏ…°,˜‘òSÖ{»¾ éã0Ë^³*HDiÓÄÆtöÐÁÊ*ë¦ '›ÎobP/#¤Ì8ÉnïÉSطѶ޿¸´©Ýýï‚­{–O ˆŽÔhÅ…çAÛ©bm_ùÒ{™ä»÷ä)ÜÛØõŽÒƔʗîdŽó@ïÇþtå«8wÃÜ .Þþu!õÇÁqÞ|Êÿì 65´~uÞ?[µáª3¢Fጧ¼ëTÅiÅß)75&Ód嵸P¡pF¸É1@×ã§«ËlÌ#4ÔÝ®“•Ÿs DÓ¨Sctø¯€¥¶s küpŒÄ–¿¥v_¡u‰îß¶÷ä©·|¹üÙê8u}ºÆ@‡:ƒä¾*¿çÊ[³ÅÀ Mö²£»]0ʳ•eX‚¶sýçF~4&iÓ®ÜélêÒW›^÷wÙK”îù‡Ó”Hëõ€¹u€bnº®½¼B7­¯û½ÉØúü·lÃærp½Æüù¤Só»4tNŒï·i¿©×gb‰ÉŸ,éóL÷ÕÑÒNÛ©Œè b*~®aj¿íMA_}ê~oª/Šÿ­ï^³žÚðQyÞÛØuªÿ\½°’9ýÔU¿ž­,³»Èë><êçô€å¤Ó*ûTlAÑõ ÊÒÅJ½7t% `ÈA…“¿QñÏm÷îñêøªñ:ß‚ÌUœ¦òþë’óèòç#Çò«'_Ý«ßøêÇW¶û‡rï~ð…Sù·M”NuèäÉñ«FiÚ:ê9´þ»èÚ§~úêŇߤö%(ÏÁMÿ©ìS±E7‡Ñs1‚'®6ŸžcÓ=þºÀ¦ó§hë6úuå”ùSéŽ@êFÿÞÆ®sùÕgˆ=ÉÕèçl”có:¨py–«×usÙ§bnº¹†—1®‘Ô{î?÷¦º¦® *Ÿ&òcw•É=“B®ü¹Ë{lþBåýw÷Ý?„UçÞ²5|±ùwéPø–ÿܺƦº?S–y®ñ åwµO3®­%ݯ)¶÷_ç‘b48Îü)ä“›_×ó3j©¤WÃ[ß½.ÿN\=<´Œ’ˆádž$Gã—J?÷6v½òÊÉ7•›7¤|†Þ‹Êsi§\þsêÚÇåÉåÏ÷ˆ©ÿ)ä`ÒgNû”=8ª‘É]ÔÄà¨ä"ŸÜ1кeasÚš#9݉®ÆÍժ˪˜klùO=íÀãeypå+´¼ï~ðE°þS”ÿ™Ü.À&£tŽÃÑ4þ{»å_nÃ|oc7 ÿÒN;:ÿ9ó‡Ó¾£Aש‡¸ IDATF;•uù¹·ÊSÊúŸB~&YùæÏ·ñÃîèÐò¯^‚¥}š9¿Þ-{bj?&]º{{º·W¯oB#à׃_¥Õgœ¦=á¦Ë''?wþüz–vÚ°ûÁ¥»*…ËKݯý«çùä±Îüá4–O¬|Sé?…|qùÉYÿ}Ëèî_”¡ü\þ\Ë—I_¹øñóSè?¶ü—ó·>Ú®lNÈ¥;Ëez~þºõz[Z§?=ôûÜù~á~áþÉåé<ÀØ@ªü ¿ð ¿ð ÿôñE 0wþ„_ø…_ø…úøgð å#Õ¥©Ùv½M§?=^–Ú‚³9ò'üÂ/üÂ/üÓÉ?ósçOø…_ø…_ø§_b€~á~á— øÀ…_ø…_ø…_b€â~á~áþ æ/ç6}WôÜù~á~áþéãïöÁòÏ–nµÜ¯ß‚¢;·Þû¯þTz{{»»½½­=ßߪ)kþ„_ø…_ø…jùó •ƒRi%“ÆQéÂ/üÂ/üÂß|þbnº2ü~á~áþiãŸè%^Ý\À¥×ÖéVË~=NǾv›;Â/üÂ/üÂ?üâ~á~á~‰Š\ø…_ø…_ø%(>pá~á~á— øÀ…_ø…_ø…rø‹þðqè4MÛõ*½ÅÐÚl*­Ö‚ët.³çNCræÏ5-üÂ/üÂ/ü“Å?£.¦CHš¦‡ízœ.ÎÜZ«Í';Â/üÂ/üÂ?}ü3øD«U½¦¹‡Ø~AèZmÎåÊ6öô|÷ö*äΟð ¿ð ¿ðO'ÿLî!0Ò†¤ÇÙ üÂ/üÂ/üÍå—y0Â/üÂ/üÂ/óAæÁ¿ð ¿ð ¿Ì¤eŒð ¿ð ¿ðË<@™#üÂ/üÂ/ü kŠ\ø…_ø…_ø%(>pá~á~á— øÀ…_ø…_ø…_b€â~á~á~‰Š\ø…_ø…_ø%(>pá~á~á— øÀ…_ø…_ø…¿†üý?I»ÞOr·ºIEND®B`‚scotch_6.0.9/doc/src/ptscotch/p_l.tex0000644000302600021200000050627513542632120017751 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p_l.tex % % Sujet : Manuel de l'utilisateur % % du projet 'PT-Scotch' % % Bibliotheque % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Library} \label{sec-lib} All of the features provided by the programs of the \ptscotch\ distribution may be directly accessed by calling the appropriate functions of the \libscotch\ library, archived in files {\tt libptscotch.a} and {\tt libptscotcherr.a}. All of the existing parallel routines belong to four distinct classes: \begin{itemize} \item distributed source graph handling routines, which serve to declare, build, load, save, and check the consistency of distributed source graphs; %, along with their geometry data; \item strategy handling routines, which allow the user to declare and build parallel mapping and ordering strategies; \item parallel graph partitioning and static mapping routines, which allow the user to declare, compute, and save distributed static mappings of distributed source graphs; \item parallel ordering routines, which allow the user to declare, compute, and save distributed orderings of distributed source graphs. \end{itemize} Error handling is performed using the existing sequential routines of the \scotch\ distribution, which are described in the {\it\scotch\ User's Guide}~\scotchcitesuser. Their use is recalled in Section~\ref{sec-lib-error}. A \parmetis\ compatibility library, called {\tt lib\lbo ptscotch\lbo parmetis.a}, is also available. It allows users who were previously using \parmetis\ in their software to take advantage of the efficieny of \ptscotch\ without having to modify their code. The services provided by this library are described in Section~\ref{sec-lib-parmetis}. \subsection{Running at proper thread level} \label{sec-lib-thread} Since \ptscotch\ is based on the MPI API, all processes must call some flavor of \texttt{MPI\_\lbt Init} before using any routine of the library that performs communication. The thread support level of MPI has to be set in accordance to the level required by the library. If \ptscotch\ has been compiled without the \texttt{-DSCOTCH\_\lbt PTHREAD} flag, a call to the simple \texttt{MPI\_\lbt Init} routine will suffice, because no concurrent MPI calls will be performed by library routines. Else, the extended \texttt{MPI\_\lbt Init\_\lbt thread} initialization routine has to be used, to request the \texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level, and the provided thread support level value returned by the routine must be checked carefully. If your MPI implementation does not provide the \texttt{MPI\_\lbt THREAD\_\lbt MULTIPLE} level, you will have to recompile \ptscotch\ without the \texttt{-DSCOTCH\_\lbt PTHREAD} flag. Else, library calls may cause random bugs in the communication subsystem, resulting in program crashes. \subsection{Calling the routines of {\sc libScotch}} \subsubsection{Calling from C} All of the C routines of the \libscotch\ library are prefixed with ``{\tt SCOTCH\_}''. The remainder of the function names is made of the name of the type of object to which the functions apply (e\@.g\@. ``{\tt dgraph}'', ``{\tt dorder}'', etc.), followed by the type of action performed on this object: ``{\tt Init}'' for the initialization of the object, ``{\tt Exit}'' for the freeing of its internal structures, ``{\tt Load}'' for loading the object from one or several streams, and so on. Typically, functions that return an error code return zero if the function succeeds, and a non-zero value in case of error. For instance, the {\tt SCOTCH\_\lbt dgraph\lbt Init} and {\tt SCOTCH\_\lbt dgraph\lbt Load} routines, described in section~\ref{sec-lib-dgraph}, can be called from C by using the following code. {\tt \begin{verbatim} #include #include #include "ptscotch.h" ... SCOTCH_Dgraph grafdat; FILE * fileptr; if (SCOTCH_dgraphInit (&grafdat) != 0) { ... /* Error handling */ } if ((fileptr = fopen ("brol.grf", "r")) == NULL) { ... /* Error handling */ } if (SCOTCH_dgraphLoad (&grafdat, fileptr, -1, 0) != 0) { ... /* Error handling */ } ... \end{verbatim} } Since ``{\tt ptscotch.h}'' uses several system and communication objects which are declared in ``{\tt stdio.h}'' and ``{\tt mpi.h}'', respectively, these latter files must be included beforehand in your application code. Although the ``{\tt scotch.h}'' and ``{\tt ptscotch.h}'' files may look very similar on your system, never mistake them, and always use the ``{\tt ptscotch.h}'' file as the right include file for compiling a program which uses the parallel routines of the \libscotch\ library, whether it also calls sequential routines or not. \subsubsection{Calling from Fortran} The routines of the \libscotch\ library can also be called from Fortran. For any C function named {\tt SCOTCH\_\lbt {\it type\lbt Action}()} which is documented in this manual, there exists a {\tt SCOTCHF\lbt {\it TYPE\lbt ACTION\/}()} Fortran counterpart, in which the separating underscore character is replaced by an ``{\tt F}''. In most cases, the Fortran routines have exactly the same parameters as the C functions, save for an added trailing {\tt INTEGER} argument to store the return value yielded by the function when the return type of the C function is not {\tt void}. \\ Since all the data structures used in \libscotch\ are opaque, equivalent declarations for these structures must be provided in Fortran. These structures must therefore be defined as arrays of {\tt DOUBLEPRECISION}s, of sizes given in file {\tt ptscotchf.h}, which must be included whenever necessary. For routines that read or write data using a {\tt FILE~*} stream in C, the Fortran counterpart uses an {\tt INTEGER} parameter which is the numer of the Unix file descriptor corresponding to the logical unit from which to read or write. In most Unix implementations of Fortran, standard descriptors 0 for standard input (logical unit 5), 1 for standard output (logical unit 6) and 2 for standard error are opened by default. However, for files that are opened using {\tt OPEN} statements, an additional function must be used to obtain the number of the Unix file descriptor from the number of the logical unit. This function is called \texttt{PXFFILENO} in the normalized POSIX Fortran API, and files which use it should include the \texttt{USE IFPOSIX} directive whenever necessary. An alternate, non normalized, function also exists in most Unix implementations of Fortran, and is called {\tt FNUM}. For instance, the {\tt SCOTCH\_\lbt dgraph\lbt Init} and {\tt SCOTCH\_\lbt dgraph\lbt Load} routines, described in sections~\ref{sec-lib-dgraphinit} and~\ref{sec-lib-dgraphload}, respectively, can be called from Fortran by using the following code. {\tt \begin{verbatim} INCLUDE "ptscotchf.h" DOUBLEPRECISION GRAFDAT(SCOTCH_DGRAPHDIM) INTEGER RETVAL ... CALL SCOTCHFDGRAPHINIT (GRAFDAT (1), RETVAL) IF (RETVAL .NE. 0) THEN ... OPEN (10, FILE='brol.grf') CALL SCOTCHFDGRAPHLOAD (GRAFDAT (1), PXFFILENO (10), 1, 0, RETVAL) CLOSE (10) IF (RETVAL .NE. 0) THEN ... \end{verbatim} } Although the ``{\tt scotchf.h}'' and ``{\tt ptscotchf.h}'' files may look very similar on your system, never mistake them, and always use the ``{\tt ptscotchf.h}'' file as the include file for compiling a Fortran program that uses the parallel routines of the \libscotch\ library, whether it also calls sequential routines or not. All of the Fortran routines of the \libscotch\ library are stubs which call their C counterpart. While this poses no problem for the usual integer and double precision data types, some conflicts may occur at compile or run time if your MPI implementation does not represent the {\tt MPI\_Comm} type in the same way in C and in Fortran. Please check on your platform to see in the {\tt mpi.h} include file if the {\tt MPI\_Comm} data type is represented as an {\tt int}. If it is the case, there should be no problem in using the Fortran routines of the \ptscotch\ library. \subsubsection{Compiling and linking} The compilation of C or Fortran routines which use parallel routines of the \libscotch\ library requires that either {\tt ptscotch.h} or {\tt ptscotchf.h} be included, respectively. Since some of the parallel routines of the \libscotch\ library must be passed MPI communicators, it is necessary to include MPI files {\tt mpi.h} or {\tt mpif.h}, respectively, before the relevant \ptscotch\ include files, such that prototypes of the parallel \libscotch\ routines are properly defined. The parallel routines of the \libscotch\ library, along with taylored versions of the sequential routines, are grouped in a library file called {\tt libptscotch.a}. Default error routines that print an error message and exit are provided in the classical \scotch\ library file {\tt libptscotcherr.a}. Therefore, the linking of applications that make use of the \libscotch\ library with standard error handling is carried out by using the following options: ``{\tt -lptscotch -lptscotcherr -lmpi -lm}''. The ``{\tt -lmpi}'' option is most often not necessary, as the MPI library is automatically considered when compiling with commands such as {\tt mpicc}. If you want to handle errors by yourself, you should not link with library file {\tt libptscotcherr.a}, but rather provide a {\tt SCOTCH\_\lbt error\lbt Print()} routine. Please refer to Section~\ref{sec-lib-error} for more information on error handling. Section~\ref{sec-lib-error} for more information on error handling. Programs that use both sequential and parallel routines of \scotch\ need only be linked against the parallel version of the library, as it also contains an adapted version of the sequential routines. The reason why the sequential routines are duplicated in the parallel \ptscotch\ library is because they are slightly modified so as to keep track of the parallel environment. This allows one to create ``multi-sequential'' routines that can exchange data with other processes, for instance. Because the \libscotch\ data structures contain extra parameters, never mix the \texttt{scotch.h} sequential include file and the \texttt{libptscotch.a} parallel library, as the latter expects \scotch\ data structures to be larger than the ones defined in the sequential include file. Consequently, when using only sequential routines in a sequential program, include the \texttt{scotch.h} file only and link the program against the sequential \texttt{libscotch.a} library only. When using only parallel routines, or when using a mix of sequential and parallel routines, include the \texttt{ptscotch.h} file only and link the program against the parallel \texttt{libptscotch.a} library only. When using only sequential routines in a parallel program, both options can be used. \subsubsection{Machine word size issues} \label{sec-lib-inttypesize} Graph indices are represented in \scotch\ as integer values of type {\tt SCOTCH\_\lbt Num}. By default, this type equates to the {\tt int} C type, that is, an integer type of size equal to the one of the machine word. However, it can represent any other integer type. Indeed, the size of the {\tt SCOTCH\_\lbt Num} integer type can be coerced to 32 or 64 bits by using the ``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' compilation flags, respectively, or else by using the ``{\tt -DINT=}'' definition (see Section~\ref{sec-install-inttypesize} for more information on the setting of these compilation flags). This may, however, pose a problem with MPI, the interface of which is based on the regular {\tt int} type. \ptscotch\ has been coded so as to avoid typecast bugs, but overflow errors may result from the conversion of values of a larger integer type into {\tt int}s when handling communication buffer indices. Consequently, the C interface of \scotch\ uses two types of integers. Graph-related quantities are passed as {\tt SCOTCH\_\lbt Num}s, while system-related values such as file handles, as well as return values of \libscotch\ routines, are always passed as {\tt int}s. Because of the variability of library integer type sizes, one must be careful when using the Fortran interface of \scotch, as it does not provide any prototyping information, and consequently cannot produce any warning at link time. In the manual pages of the \libscotch\ routines, Fortran prototypes are written using three types of {\tt INTEGER}s. As for the C interface, the regular {\tt INTEGER} type is used for system-based values, such as file handles and MPI communicators, as well as for return values of the \libscotch\ routines, while the {\tt INTEGER*}{\it num} type should be used for all graph-related values, in accordance to the size of the {\tt SCOTCH\_\lbt Num} type, as set by the ``{\tt -DINTSIZE}{\it x}'' compilation flags. Also, the {\tt INTEGER*}{\it idx} type represents an integer type of a size equivalent to the one of a {\tt SCOTCH\_\lbt Idx}, as set by the ``{\tt -DIDXSIZE}{\it x}'' compilation flags. Values of this type are used in the Fortran interface to represent arbitrary array indices which can span across the whole address space, and consequently deserve special treatment. In practice, when \scotch\ is compiled on a 32-bit architecture so as to use 64-bit {\tt SCOTCH\_\lbt Num}s, graph indices should be declared as {\tt INTEGER*8}, while error return values should still be declared as plain {\tt INTEGER} (that is, {\tt INTEGER*4}) values. On a 32\_64-bit architecture, irrespective of whether {\tt SCOTCH\_\lbt Num}s are defined as {\tt INTEGER*4} or {\tt INTEGER*8} quantities, the {\tt SCOTCH\_\lbt Idx} type should always be defined as a 64-bit quantity, that is, an {\tt INTEGER*8}, because it stores differences between memory addresses, which are represented by 64-bit values. The above is no longer a problem if \scotch\ is compiled such that {\tt int}s equate 64-bit integers. In this case, there is no need to use any type coercing definition. \\ The \metis\ v3 compatibility library provided by \scotch\ can also run on a 64-bit architecture. Yet, if you are willing to use it this way, you will have to replace all {\tt int}'s that are passed to the \metis\ routines by 64-bit integer {\tt SCOTCH\_\lbt Num} values (even the option configuration values). However, in this case, you will no longer be able to link against the service routines of the genuine \metis/\parmetis\ v3 library, as they are only available as a 32-bit implementation. \subsection{Data formats} All of the data used in the \libscotch\ interface are of integer type {\tt SCOTCH\_Num}. To hide the internals of \ptscotch\ to callers, all of the data structures are opaque, that is, declared within {\tt ptscotch.h} as dummy arrays of double precision values, for the sake of data alignment. Accessor routines, the names of which end in ``{\tt Size}'' and ``{\tt Data}'', allow callers to retrieve information from opaque structures. \\ In all of the following, whenever arrays are defined, passed, and accessed, it is assumed that the first element of these arrays is always labeled as {\tt baseval}, whether {\tt baseval} is set to $0$ (for C-style arrays) or $1$ (for Fortran-style arrays). \ptscotch\ internally manages with base values and array pointers so as to process these arrays accordingly. \subsubsection{Distributed graph format} \label{sec-lib-format-dgraph} In \ptscotch, distributed source graphs are represented so as to distribute graph data without any information duplication which could hinder scalability. The only data which are replicated on every process are of a size linear in the number of processes and small. Apart from these, the sum across all processes of all of the vertex data is in $O(v+p)$, where $v$ is the overall number of vertices in the distributed graph and $p$ the number of processes, and the sum of all of the edge data is in $O(e)$, where $e$ is the overall number of arcs (that is, twice the number of edges) in the distributed graph. When graphs are ill-distributed, the overall halo vertex information may also be in $o(e)$ at worst, which makes the distributed graph structure fully scalable. Distributed source graphs are described by means of adjacency lists. The description of a distributed graph requires several {\tt SCOTCH\_Num} scalars and arrays, as shown for instance in Figures~\ref{fig-lib-dgraf-one} and~\ref{fig-lib-dgraf-two}. Some of these data are said to be global, and are duplicated on every process that holds part of the distributed graph; their names contain the ``{\tt glb}'' infix. Others are local, that is, their value may differ for each process; their names contain the ``{\tt loc}'' or ``{\tt gst}'' infix. Global data have the following meaning: \begin{itemize} \iteme[{\tt baseval}] Base value for all array indexings. \iteme[{\tt vertglbnbr}] Overall number of vertices in the distributed graph. \iteme[{\tt edgeglbnbr}] Overall number of arcs in the distributed graph. Since edges are represented by both of their ends, the number of edge data in the graph is twice the number of edges. \iteme[{\tt procglbnbr}] Overall number of processes that share distributed graph data. \iteme[{\tt proccnttab}] Array holding the current number of local vertices borne by every process. \iteme[{\tt procvrttab}] Array holding the global indices from which the vertices of every process are numbered. For optimization purposes, this array has an extra slot which stores a number which must be greater than all of the assigned global indices. For each process $p$, it must be ensured that $\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} \geq (\mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]} + \mbox{\tt proc\lbt cnt\lbt tab[}p\mbox{\tt]})$, that is, that no process can have more local vertices than allowed by its range of global indices. When the global numbering of vertices is continuous, for each process $p$, $\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} = (\mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]} + \mbox{\tt proc\lbt cnt\lbt tab[}p\mbox{\tt]})$. \end{itemize} Local data have the following meaning: \begin{itemize} \iteme[{\tt vertlocnbr}] Number of local vertices borne by the given process. In fact, on every process $p$, {\tt vert\lbt loc\lbt nbr} is equal to ${\tt proc\lbt cnt\lbt tab}\mbox{\tt [}p\mbox{\tt]}$. \iteme[{\tt vertgstnbr}] Number of both local and ghost vertices borne by the given process. Ghost vertices are local images of neighboring vertices located on distant processes. \iteme[{\tt vertloctab}] Array of start indices in {\tt edgeloctab} and {\tt edgegsttab} of vertex adjacency sub-arrays. \iteme[{\tt vendloctab}] Array of after-last indices in {\tt edgeloctab} and {\tt edgegsttab} of vertex adjacency sub-arrays. For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt baseval} + \mbox{\tt vertlocnbr})$, $\mbox{\tt vend\lbt loc\lbt tab[}i\mbox{\tt ]} - \mbox{\tt vert\lbt loc\lbt tab[}i\mbox{\tt ]}$ is the degree of vertex $i$. When all vertex adjacency lists are stored in order in {\tt edge\lbt loc\lbt tab} without any empty space between them, it is possible to save memory by not allocating the physical memory for {\tt vend\lbt loc\lbt tab}. In this case, illustrated in Figure~\ref{fig-lib-dgraf-one}, {\tt vert\lbt loc\lbt tab} is of size $\mbox{\tt vert\lbt loc\lbt nbr} + 1$ and {\tt vend\lbt loc\lbt tab} points to $\mbox{\tt vert\lbt loc\lbt tab} + 1$. For these graphs , called ``compact edge array graphs'', or ``compact graphs'' for short, {\tt vert\lbt loc\lbt tab} is sorted in ascending order, $\mbox{\tt vert\lbt loc\lbt tab[}\lbt\mbox{\tt baseval]} = \mbox{\tt baseval}$ and $\mbox{\tt vert\lbt loc\lbt tab[}\lbt\mbox{\tt baseval} + \mbox{\tt vert\lbt loc\lbt nbr]} = (\mbox{\tt baseval} + \mbox{\tt edge\lbt loc\lbt nbr})$. Since {\tt vertloctab} and {\tt vendloctab} only account for local vertices and not for ghost vertices, the sum across all processes of the sizes of these arrays does not depend on the number of ghost vertices; it is equal to $(v+p)$ for compact graphs and to $2v$ else. \iteme[{\tt veloloctab}] Optional array, of size {\tt vert\lbt loc\lbt nbr}, holding the integer load associated with every vertex. \iteme[{\tt edgeloctab}] Array, of a size equal at least to $\left(\max_{i}(\mbox{\tt vend\lbt loc\lbt tab[} i \mbox{\tt ]}) - \mbox{\tt baseval}\right)$, holding the adjacency array of every local vertex. For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt baseval} + \mbox{\tt vertlocnbr})$, the global indices of the neighbors of $i$ are stored in {\tt edge\lbt loc\lbt tab} from {\tt edge\lbt loc\lbt tab\lbt [vert\lbt loc\lbt tab[$i$]]} to $\mbox{\tt edge\lbt loc\lbt tab[vend\lbt loc\lbt tab[}i\mbox{\tt ]} - 1\mbox{\tt ]}$, inclusive. Since ghost vertices do not have adjacency arrays, because only arcs from local vertices to ghost vertices are recorded and not the opposite, the overall sum of the sizes of all {\tt edge\lbt loc\lbt tab} arrays is $e$. \iteme[{\tt edgegsttab}] Optional array holding the local and ghost indices of neighbors of local vertices. For any local vertex $i$, with $\mbox{\tt baseval} \leq i < (\mbox{\tt baseval} + \mbox{\tt vertlocnbr})$, the local and ghost indices of the neighbors of $i$ are stored in {\tt edge\lbt gst\lbt tab} from {\tt edge\lbt gst\lbt tab\lbt [vert\lbt loc\lbt tab[$i$]]} to {\tt edge\lbt gst\lbt tab[vend\lbt loc\lbt tab[$i$]\lbt $- 1$]}, inclusive. Local vertices are numbered in global vertex order, starting from {\tt baseval} to $(\mbox{\tt baseval} + \mbox{\tt vertlocnbr} - 1)$, inclusive. Ghost vertices are also numbered in global vertex order, from $(\mbox{\tt baseval} + \mbox{\tt vertlocnbr})$ to $(\mbox{\tt baseval} + \mbox{\tt vertgstnbr} - 1)$, inclusive. Only {\tt edgeloctab} has to be provided by the user. {\tt edge\lbt gst\lbt tab} is internally computed by \ptscotch\ whenever needed, or can be explicitey asked for by the user by calling function {\tt SCOTCH\_\lbt dgraph\lbt Ghst}. This array can serve to index user-defined arrays of quantities borne by graph vertices, which can be exchanged between neighboring processes thanks to the {\tt SCOTCH\_\lbt dgraph\lbt Halo} routine documented in Section~\ref{sec-lib-dgraphhalo}. \iteme[{\tt edloloctab}] Optional array, of a size equal at least to $\left(\max_{i}(\mbox{\tt vend\lbt loc\lbt tab[} i \mbox{\tt ]}) - \mbox{\tt baseval}\right)$, holding the integer load associated with every arc. Matching arcs should always have identical loads. \end{itemize} \begin{figure} \centering\includegraphics[scale=0.47]{p_f_gr1.eps} \caption{Sample distributed graph and its description by \libscotch\ arrays using a continuous numbering and compact edge arrays. Numbers within vertices are vertex indices. Top graph is a global view of the distributed graph, labeled with global, continuous, indices. Bottom graphs are local views labeled with local and ghost indices, where ghost vertices are drawn in black. Since the edge array is compact, all {\tt vertloctab} arrays are of size $\mbox{\tt vertlocnbr} + 1$, and {\tt vendloctab} points to $\mbox{\tt vertloctab} + 1$. {\tt edgeloctab} edge arrays hold global indices of end vertices, while optional {\tt edgegsttab} edge arrays hold local and ghost indices. {\tt edgelocnbr} is the local number of arcs (that is, twice the number of edges), including arcs to local vertices as well as to ghost vertices {\tt veloloctab} and {\tt edloloctab} are not represented.} \label{fig-lib-dgraf-one} \end{figure} \begin{figure} \centering\includegraphics[scale=0.47]{p_f_gr2.eps} \caption{Adjacency structure of the sample graph of Figure~\protect\ref{fig-lib-dgraf-one} with a disjoint edge array and a discontinuous ordering. Both {\tt vertloctab} and {\tt vendloctab} are of size {\tt vertlocnbr}. This allows for the handling of dynamic graphs, the structure of which can evolve with time.} \label{fig-lib-dgraf-two} \end{figure} Dynamic graphs can be handled elegantly by using the {\tt vend\lbt loc\lbt tab} and {\tt proc\lbt vrt\lbt tab} arrays. In order to dynamically manage distributed graphs, one just has to reserve index ranges large enough to create new vertices on each process, and to allocate {\tt vert\lbt loc\lbt tab}, {\tt vend\lbt loc\lbt tab} and {\tt edge\lbt loc\lbt tab} arrays that are large enough to contain all of the expected new vertex and edge data. This can be done by passing {\tt SCOTCH\_\lbt graph\lbo Build} a maximum number of local vertices, {\tt vert\lbt loc\lbt max}, greater than the current number of local vertices, {\tt vert\lbt loc\lbt nbr}. On every process $p$, vertices are globally labeled starting from ${\tt proc\lbt vrt\lbt tab}\mbox{\tt [}p\mbox{\tt ]}$, and locally labeled from {\tt baseval}, leaving free space at the end of the local arrays. To remove some vertex of local index $i$, one just has to replace $\mbox{\tt vert\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ and ${\tt vend\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ with the values of ${\tt vert\lbt loc\lbt tab}\lbt \mbox{\tt [vert\lbt loc\lbt nbr}-1\mbox{\tt ]}$ and ${\tt vend\lbt loc\lbt tab}\lbt \mbox{\tt [vert\lbt loc\lbt nbr}-1\mbox{\tt ]}$, respectively, and browse the adjacencies of all neighbors of former vertex $(\mbox{\tt vert}\lbt\mbox{\tt loc}\lbt\mbox{\tt nbr}-1)$ such that all $(\mbox{\tt vert}\lbt\mbox{\tt loc}\lbt\mbox{\tt nbr}-1)$ indices are turned into $i$s. Then, {\tt vert\lbt loc\lbt nbr} must be decremented, and {\tt SCOTCH\_\lbt dgraph\lbt Build()} must be called to account for the change of topology. If a graph building routine such as {\tt SCOTCH\_\lbt dgraph\lbt Load()} or {\tt SCOTCH\_\lbt dgraph\lbt Build()} had already been called on the {\tt SCOTCH\_\lbt Dgraph} structure, {\tt SCOTCH\_\lbt dgraph\lbt Free()} has to be called first in order to free the internal structures associated with the older version of the graph, else these data would be lost, which would result in memory leakage. To add a new vertex, one has to fill {\tt vert\lbt loc\lbt tab\lbt [vertnbr\lbt -1]} and {\tt vend\lbt loc\lbt tab\lbt [vertnbr\lbt -1]} with the starting and end indices of the adjacency sub-array of the new vertex. Then, the adjacencies of its neighbor vertices must also be updated to account for it. If free space had been reserved at the end of each of the neighbors, one just has to increment the ${\tt vend\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ values of every neighbor $i$, and add the index of the new vertex at the end of the adjacency sub-array. If the sub-array cannot be extended, then it has to be copied elsewhere in the edge array, and both ${\tt vert\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ and ${\tt vend\lbt loc\lbt tab}\mbox{\tt [}i\mbox{\tt ]}$ must be updated accordingly. With simple housekeeping of free areas of the edge array, dynamic arrays can be updated with as little data movement as possible. \subsubsection{Block ordering format} \label{sec-lib-format-order} Block orderings associated with distributed graphs are described by means of block and permutation arrays, made of {\tt SCOTCH\_Num}s. In order for all orderings to have the same structure, irrespective of whether they are centralized or distributed, or whether they are created from graphs or meshes, all ordering data indices start from {\tt baseval}. Consequently, row indices are related to vertex indices in memory in the following way: row $i$ is associated with vertex $i$ of the {\tt SCOTCH\_\lbt Dgraph} structure as if the vertex numbering used for the graph was continuous. Block orderings are made of the following data: \begin{itemize} \iteme[{\tt permtab}] Array holding the permutation of the reordered matrix. Thus, if $k = \mbox{\tt permtab}\mbox{\tt [}i\mbox{\tt ]}$, then row $i$ of the original matrix is now row $k$ of the reordered matrix, that is, row $i$ is the $k^{\mbox{th}}$ pivot. \iteme[{\tt peritab}] Inverse permutation of the reordered matrix. Thus, if $i = \mbox{\tt peritab[$k$]}$, then row $k$ of the reordered matrix was row $i$ of the original matrix. \iteme[{\tt cblknbr}] Number of column blocks (that is, supervariables) in the block ordering. \iteme[{\tt rangtab}] Array of ranges for the column blocks. Column block $c$, with $\mbox{\tt baseval} \leq c < (\mbox{\tt cblknbr} + \mbox{\tt baseval})$, contains columns with indices ranging from {\tt rangtab[$i$]} to {\tt rangtab[$i + 1$]}, exclusive, in the reordered matrix. Therefore, {\tt rangtab[baseval]} is always equal to {\tt baseval}, and {\tt rangtab[cblknbr + baseval]} is always equal to $\mbox{\tt vert\lbt glb\lbt nbr} + \mbox{\tt baseval}$. % for graphs % and to $\mbox{\tt vnod\lbt glb\lbt nbr} + \mbox{\tt baseval}$ for meshes. In order to avoid memory errors when column blocks are all single columns, the size of {\tt rangtab} must always be one more than the number of columns, that is, $\mbox{\tt vert\lbt glb\lbt nbr} + 1$. % for graphs and $\mbox{\tt vnod\lbt glb\lbt nbr} + 1$ for meshes. \iteme[{\tt treetab}] Array of ascendants of permuted column blocks in the separators tree. {\tt treetab[i]} is the index of the father of column block $i$ in the separators tree, or $-1$ if column block $i$ is the root of the separators tree. Whenever separators or leaves of the separators tree are split into subblocks, as the block splitting, minimum fill or minimum degree methods do, all subblocks of the same level are linked to the column block of higher index belonging to the closest separator ancestor. Indices in {\tt treetab} are based, in the same way as for the other blocking structures. See Figure~\ref{fig-lib-ord-block} for a complete example. \end{itemize} \begin{figure} \centering\includegraphics[scale=0.47]{p_f_orb.eps} \caption{Arrays resulting from the ordering by complete nested dissection of a 4 by 3 grid based from $1$. Leftmost grid is the original grid, and righmost grid is the reordered grid, with separators shown and column block indices written in bold.} % using strategy n{sep=hf{bal=0},ole=s,ose=s} \label{fig-lib-ord-block} \end{figure} \subsection{Strategy strings} The behavior of the static mapping and block ordering routines of the \libscotch\ library is parametrized by means of strategy strings, which describe how and when given partitioning or ordering methods should be applied to graphs and subgraphs % , or to meshes and submeshes. \subsubsection{Using default strategy strings} \label{sec-lib-format-strat-default} While strategy strings can be built by hand, according to the syntax given in the next sections, users who do not have specific needs can take advantage of default strategies already implemented in the \libscotch, which will yield very good results in most cases. By doing so, they will spare themselves the hassle of updating their strategies to comply to subsequent syntactic changes, and they will benefit from the availability of new partitioning or ordering methods as soon as they are made available. The simplest way to use default strategy strings is to avoid specifying any. By initializing a strategy object, by means of the {\tt SCOTCH\_\lbt stratInit} routine, and by using the initialized strategy object as is, without further parametrization, this object will be filled with a default strategy when passing it as a parameter to the next partitioning or ordering routine to be called. On return, the strategy object will contain a fully specified strategy, tailored for the type of operation which has been requested. Consequently, a fresh strategy object that was used to partition a graph cannot be used afterward as a default strategy for calling an ordering routine, for instance, as partitioning and ordering strategies are incompatible. The \libscotch\ also provides helper routines which allow users to express their preferences on the kind of strategy that they need. These helper routines, which are of the form {\tt SCOTCH\_\lbt strat\lbt *\lbt Build}, tune default strategy strings according to parameters provided by the user, such as the requested number of parts (used as a hint to select the most efficient partitioning routines), the desired maximum load imbalance ratio, and a set of preference flags. While some of these flags are antagonistic, most of them can be combined, by means of addition or ``binary or'' operators. These flags are the following. They are grouped by application class. \paragraph{Global flags} \begin{itemize} \iteme[{\tt SCOTCH\_STRATDEFAULT}] Default behavior. No flags are set. \iteme[{\tt SCOTCH\_STRATBALANCE}] Enforce load balance as much as possible. \iteme[{\tt SCOTCH\_STRATQUALITY}] Privilege quality over speed. \iteme[{\tt SCOTCH\_STRATSAFETY}] Do not use methods that can lead to the occurrence of problematic events, such as floating point exceptions, which could not be properly handled by the calling software. \iteme[{\tt SCOTCH\_STRATSPEED}] Privilege speed over quality. \end{itemize} %% \paragraph{Mapping and partitioning flags} %% \begin{itemize} %% \iteme[{\tt SCOTCH\_STRATRECURSIVE}] %% Use only recursive bipartitioning methods, and not direct k-way %% methods. When this flag is not set, any combination of methods can be %% used, so as to achieve the best result according to other user %% preferences. %% \iteme[{\tt SCOTCH\_STRATREMAP}] %% Use the strategy for remapping an existing partition. %% \end{itemize} \paragraph{Ordering flags} \begin{itemize} \iteme[{\tt SCOTCH\_STRATLEVELMAX}] Create at most the prescribed levels of nested dissection separators. If the number of levels is less than the logarithm of the number of processing elements used, distributed pieces of the separated subgraph may have to be centralized so that the leaves can be ordered, which may result in memory shortage. \iteme[{\tt SCOTCH\_STRATLEVELMIN}] Create at least the prescribed levels of nested dissection separators. When used in conjunction with {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX}, the exact number of nested dissection levels will be performed, unless the graph to order is too small. \iteme[{\tt SCOTCH\_STRATLEAFSIMPLE}] Order nested dissection leaves as cheaply as possible. \iteme[{\tt SCOTCH\_STRATSEPASIMPLE}] Order nested dissection separators as cheaply as possible. \end{itemize} \subsubsection{Parallel mapping strategy strings} \label{sec-lib-format-pmap} A parallel mapping strategy is made of one or several parallel mapping methods, which can be combined by means of strategy operators. The strategy operators that can be used in mapping strategies are listed below, by increasing precedence. \begin{itemize} \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single mapping method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current mapping task, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a node variable, {\it val\/} is either a node variable or a constant of the type of variable {\it var}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt edge}] The global number of arcs of the current subgraph. Integer. \iteme[{\tt levl}] The level of the subgraph in the recursion tree, starting from zero for the initial graph at the root of the tree. Integer. \iteme[{\tt load}] The overall sum of the vertex loads of the subgraph. It is equal to {\tt vert} if the graph has no vertex loads. Integer. \iteme[{\tt mdeg}] The maximum degree of the subgraph. Integer. \iteme[{\tt proc}] The number of processes on which the current subgraph is distributed at this level of the separators tree. Integer. \iteme[{\tt rank}] The rank of the current process among the group of processes on which the current subgraph is distributed at this level of the separators tree. Integer. \iteme[{\tt vert}] The global number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} \iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] Parallel graph mapping method. Available parallel mapping methods are listed below. \end{itemize} The currently available parallel mapping methods are the following. \begin{itemize} \iteme[{\tt r}] Dual recursive bipartitioning method. The parameters of the dual recursive bipartitioning method are given below. \begin{itemize} \iteme[{\tt seq=}{\it strat}] Set the sequential mapping strategy that is used on every centralized subgraph of the recursion tree, once the dual recursive bipartitioning process has gone far enough such that the number of processes handling some subgraph is restricted to one. \iteme[{\tt sep=}{\it strat}] Set the parallel graph bipartitioning strategy that is used on every current job of the recursion tree. Parallel graph bipartitioning strategies are described below, in section~\ref{sec-lib-format-pbipart}. \end{itemize} \end{itemize} \subsubsection{Parallel graph bipartitioning strategy strings} \label{sec-lib-format-pbipart} A parallel graph bipartitioning strategy is made of one or several parallel graph bipartitioning methods, which can be combined by means of strategy operators. Strategy operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it strat1\/}{\tt |}{\it strat2}] Selection operator. The result of the selection is the best bipartition of the two that are obtained by the distinct application of {\it strat1\/} and {\it strat2\/} to the current bipartition. \iteme[{\it strat1$\:$}{\it strat2}] Combination operator. Strategy {\it strat2\/} is applied to the bipartition resulting from the application of strategy {\it strat1\/} to the current bipartition. Typically, the first method used should compute an initial bipartition from scratch, and every following method should use the result of the previous one at its starting point. \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single bipartitioning method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current active graph, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a graph or node variable, {\it val\/} is either a graph or node variable or a constant of the type of variable {\it var\/}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The graph and node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt edge}] The global number of edges of the current subgraph. Integer. \iteme[{\tt levl}] The level of the subgraph in the bipartition or multi-level tree, starting from zero for the initial graph at the root of the tree. Integer. \iteme[{\tt load}] The overall sum of the vertex loads of the subgraph. It is equal to {\tt vert} if the graph has no vertex loads. Integer. \iteme[{\tt load0}] The vertex load of the first subset of the current bipartition of the current graph. Integer. \iteme[{\tt proc}] The number of processes on which the current subgraph is distributed at this level of the nested dissection process. Integer. \iteme[{\tt rank}] The rank of the current process among the group of processes on which the current subgraph is distributed at this level of the nested dissection process. Integer. \iteme[{\tt vert}] The number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} The currently available parallel vertex separation methods are the following. \begin{itemize} \iteme[{\tt b}] Band method. Basing on the current distributed graph and on its partition, this method creates a new distributed graph reduced to the vertices which are at most at a given distance from the current frontier, runs a parallel graph bipartitioning strategy on this graph, and prolongs back the new bipartition to the current graph. This method is primarily used to run bipartition refinement methods during the uncoarsening phase of the multi-level parallel graph bipartitioning method. The parameters of the band method are listed below. \begin{itemize} \iteme[{\tt bnd=}{\it strat}] Set the parallel graph bipartitioning strategy to be applied to the band graph. \iteme[{\tt org=}{\it strat}] Set the parallel graph bipartitioning strategy to be applied to the full distributed graph if the band graph could not be extracted. \iteme[{\tt width=}{\it val}] Set the maximum distance from the current frontier of vertices to be kept in the band graph. $0$ means that only frontier vertices themselves are kept, $1$ that immediate neighboring vertices are kept too, and so on. \end{itemize} \iteme[{\tt d}] Parallel diffusion method. This method, presented in its sequential formulation in~\cite{pell07b}, flows two kinds of antagonistic liquids, scotch and anti-scotch, from two source vertices, and sets the new frontier as the limit between vertices which contain scotch and the ones which contain anti-scotch. Because selecting the source vertices is essential to the obtainment of useful results, this method has been hard-coded so that the two source vertices are the two vertices of highest indices, since in the band method these are the anchor vertices which represent all of the removed vertices of each part. Therefore, this method must be used on band graphs only, or on specifically crafted graphs. Applying it to any other graphs is very likely to lead to extremely poor results. The parameters of the diffusion bipartitioning method are listed below. \begin{itemize} \iteme[{\tt dif=}{\it rat}] Fraction of liquid which is diffused to neighbor vertices at each pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} parameters must be equal to $1$, but in order to speed-up the diffusion process, other combinations of higher sum can be tried. In this case, the number of passes must be kept low, to avoid numerical overflows which would make the results useless. \iteme[{\tt pass=}{\it nbr}] Set the number of diffusion sweeps performed by the algorithm. This number depends on the width of the band graph to which the diffusion method is applied. Useful values range from $30$ to $500$ according to chosen {\tt dif} and {\tt rem} coefficients. \iteme[{\tt rem=}{\it rat}] Fraction of liquid which remains on vertices at each pass. See above. \end{itemize} \iteme[{\tt m}] Parallel multi-level method. The parameters of the multi-level method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the distributed bipartition obtained at ascending levels of the uncoarsening phase by prolongation of the bipartition computed for coarser graphs. % or meshes. This strategy is not applied to the coarsest graph, % or mesh for which only the {\tt low} strategy is used. \iteme[{\tt dlevl=}{\it nbr}] Set the minimum level after which duplication is allowed in the folding process. A value of $-1$ results in duplication being always performed when folding. \iteme[{\tt dvert=}{\it nbr}] Set the average number of vertices per process under which the folding process is performed during the coarsening phase. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the bipartition of the coarsest distributed graph, % or mesh at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs % or meshes are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph % or mesh has fewer node vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold minimum size under which graphs % or meshes are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph % or mesh has fewer node vertices than the minimum number of vertices allowed. \end{itemize} \iteme[{\tt q}] Multi-sequential method. The current distributed graph and its separator are centralized on every process that holds a part of it, and a sequential graph bipartitioning method is applied independently to each of them. Then, the best bipartition found is prolonged back to the distributed graph. This method is primarily designed to operate on band graphs, which are orders of magnitude smaller than their parent graph. Else, memory bottlenecks are very likely to occur. The parameters of the multi-sequential method are listed below. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Set the sequential edge separation strategy that is used to refine the bipartition of the centralized graph. For a description of all of the available sequential bipartitioning methods, please refer to the {\it\scotch\ User's Guide}~\scotchcitesuser. \end{itemize} \iteme[{\tt x}] Load balance enforcement method. This method moves as many vertices from the heaviest part to the lightest one so as to reduce load imbalance as much as possible, without impacting communication load too negatively. The only parameter of this method is listed below. \begin{itemize} \iteme[{\tt sbbt=}{\it nbr}] Number of sub-buckets to sort communication gains. $5$ is a common value. \end{itemize} \iteme[{\tt z}] Zero method. This method moves all of the vertices to the first part, resulting in an empty frontier. Its main use is to stop the bipartitioning process whenever some condition is true. \end{itemize} \end{itemize} \subsubsection{Parallel ordering strategy strings} \label{sec-lib-format-pord} A parallel ordering strategy is made of one or several parallel ordering methods, which can be combined by means of strategy operators. The strategy operators that can be used in ordering strategies are listed below, by increasing precedence. \begin{itemize} \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single ordering method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current node of the separators tree, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a node variable, {\it val\/} is either a node variable or a constant of the type of variable {\it var}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt edge}] The global number of arcs of the current subgraph. Integer. \iteme[{\tt levl}] The level of the subgraph in the separators tree, starting from zero for the initial graph at the root of the tree. Integer. \iteme[{\tt load}] The overall sum of the vertex loads of the subgraph. It is equal to {\tt vert} if the graph has no vertex loads. Integer. \iteme[{\tt mdeg}] The maximum degree of the subgraph. Integer. \iteme[{\tt proc}] The number of processes on which the current subgraph is distributed at this level of the separators tree. Integer. \iteme[{\tt rank}] The rank of the current process among the group of processes on which the current subgraph is distributed at this level of the separators tree. Integer. \iteme[{\tt vert}] The global number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} \iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] Parallel graph ordering method. Available parallel ordering methods are listed below. \end{itemize} The currently available parallel ordering methods are the following. \begin{itemize} \iteme[{\tt n}] Nested dissection method. The parameters of the nested dissection method are given below. \begin{itemize} \iteme[{\tt ole=}{\it strat}] Set the parallel ordering strategy that is used on every distributed leaf of the parallel separators tree if the node separation strategy {\tt sep} has failed to separate it further. \iteme[{\tt ose=}{\it strat}] Set the parallel ordering strategy that is used on every distributed separator of the separators tree. \iteme[{\tt osq=}{\it strat}] Set the sequential ordering strategy that is used on every centralized subgraph of the separators tree, once the nested dissection process has gone far enough such that the number of processes handling some subgraph is restricted to one. \iteme[{\tt sep=}{\it strat}] Set the parallel node separation strategy that is used on every current leaf of the separators tree to make it grow. Parallel node separation strategies are described below, in section~\ref{sec-lib-format-pnsep}. \end{itemize} \iteme[{\tt q}] Sequential ordering method. The distributed graph is gathered onto a single process which runs a sequential ordering strategy. The only parameter of the sequential method is given below. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Set the sequential ordering strategy that is applied to the centralized graph. For a description of all of the available sequential ordering methods, please refer to the {\it\scotch\ User's Guide}~\scotchcitesuser. \end{itemize} \iteme[{\tt s}] Simple method. Vertices are ordered in their natural order. This method is fast, and should be used to order separators if the number of extra-diagonal blocks is not relevant \end{itemize} \subsubsection{Parallel node separation strategy strings} \label{sec-lib-format-pnsep} A parallel node separation strategy is made of one or several parallel node separation methods, which can be combined by means of strategy operators. Strategy operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it strat1\/}{\tt |}{\it strat2}] Selection operator. The result of the selection is the best vertex separator of the two that are obtained by the distinct application of {\it strat1\/} and {\it strat2\/} to the current separator. \iteme[{\it strat1$\:$}{\it strat2}] Combination operator. Strategy {\it strat2\/} is applied to the vertex separator resulting from the application of strategy {\it strat1\/} to the current separator. Typically, the first method used should compute an initial separation from scratch, and every following method should use the result of the previous one as a starting point. \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single separation method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current subgraph, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a graph or node variable, {\it val\/} is either a graph or node variable or a constant of the type of variable {\it var\/}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The graph and node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt edge}] The global number of edges of the current subgraph. Integer. \iteme[{\tt levl}] The level of the subgraph in the separators tree, starting from zero for the initial graph at the root of the tree. Integer. \iteme[{\tt load}] The overall sum of the vertex loads of the subgraph. It is equal to {\tt vert} if the graph has no vertex loads. Integer. \iteme[{\tt proc}] The number of processes on which the current subgraph is distributed at this level of the nested dissection process. Integer. \iteme[{\tt rank}] The rank of the current process among the group of processes on which the current subgraph is distributed at this level of the nested dissection process. Integer. \iteme[{\tt vert}] The number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} The currently available parallel vertex separation methods are the following. \begin{itemize} \iteme[{\tt b}] Band method. Basing on the current distributed graph and on its partition, this method creates a new distributed graph reduced to the vertices which are at most at a given distance from the current separator, runs a parallel vertex separation strategy on this graph, and prolongs back the new separator to the current graph. This method is primarily used to run separator refinement methods during the uncoarsening phase of the multi-level parallel graph separation method. The parameters of the band method are listed below. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Set the parallel vertex separation strategy to be applied to the band graph. \iteme[{\tt width=}{\it val}] Set the maximum distance from the current separator of vertices to be kept in the band graph. $0$ means that only separator vertices themselves are kept, $1$ that immediate neighboring vertices are kept too, and so on. \end{itemize} \iteme[{\tt m}] Parallel vertex multi-level method. The parameters of the vertex multi-level method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the distributed vertex separators obtained at ascending levels of the uncoarsening phase by prolongation of the separators computed for coarser graphs. % or meshes. This strategy is not applied to the coarsest graph, % or mesh for which only the {\tt low} strategy is used. \iteme[{\tt dlevl=}{\it nbr}] Set the minimum level after which duplication is allowed in the folding process. A value of $-1$ results in duplication being always performed when folding. \iteme[{\tt dvert=}{\it nbr}] Set the average number of vertices per process under which the folding process is performed during the coarsening phase. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the vertex separator of the coarsest distributed graph, % or mesh at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs % or meshes are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph % or mesh has fewer node vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold minimum size under which graphs % or meshes are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph % or mesh has fewer node vertices than the minimum number of vertices allowed. \end{itemize} \iteme[{\tt q}] Multi-sequential method. The current distributed graph and its separator are centralized on every process that holds a part of it, and a sequential vertex separation method is applied independently to each of them. Then, the best separator found is prolonged back to the distributed graph. This method is primarily designed to operate on band graphs, which are orders of magnitude smaller than their parent graph. Else, memory bottlenecks are very likely to occur. The parameters of the multi-sequential method are listed below. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Set the sequential vertex separation strategy that is used to refine the separator of the centralized graph. For a description of all of the available sequential methods, please refer to the {\it\scotch\ User's Guide}~\scotchcitesuser. \end{itemize} \iteme[{\tt z}] Zero method. This method moves all of the node vertices to the first part, resulting in an empty separator. Its main use is to stop the separation process whenever some condition is true. \end{itemize} \end{itemize} \subsection{Distributed graph handling routines} \label{sec-lib-dgraph} \subsubsection{{\tt SCOTCH\_dgraphAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Dgraph * SCOTCH\_dgraphAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Dgraph} structure. It is the user's responsibility to free this memory when it is no longer needed. The allocated space must be initialized before use, by means of the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine. \progret {\tt SCOTCH\_dgraphAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphBand}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphBand ( & SCOTCH\_Dgraph * const & orggrafptr, \\ & const SCOTCH\_Num & fronlocnbr, \\ & const SCOTCH\_Num * const & fronloctab, \\ & const SCOTCH\_Num & distval, \\ & SCOTCH\_Dgraph * const & bndgrafptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphband ( & doubleprecision (*) & orggrafdat, \\ & integer*{\it num} & seedlocnbr, \\ & integer*{\it num} (*) & seedloctab, \\ & integer*{\it num} & distval, \\ & doubleprecision (*) & bndgrafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphBand} routine creates in the {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt bndgrafptr} a distributed band graph induced from the {\tt SCOTCH\_\lbt Dgraph} pointed to by {\tt orggrafptr}. The distributed band graph will contain all the vertices of the original graph located at a distance smaller than or equal to {\tt distval} from any vertex provided in the {\tt seedloctab} lists of seed vertices. On each process, the {\tt seedloctab} array should contain the local indices of the local vertices that will serve as seeds. The number of such local vertices is passed to {\tt SCOTCH\_\lbt dgraph\lbt Band} in the {\tt seedlocnbr} value. The size of the {\tt seedloctab} array should be at least equal to the number of local vertices of the original graph, as it is internally used as a queue array. Hence, no user data should be placed immediately after the {\tt seedlocnbr} values in the array, as they are most likely to be overwritten by {\tt SCOTCH\_\lbt dgraph\lbt Band}. {\tt bndgrafptr} must have been initialized with the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Band} is called. The communicator that is passed to it can either be the communicator used by the original graph {\tt org\lbt graf\lbt ptr}, or any congruent communicator created by using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a distinct communicator for the induced band graph allows subsequent library routines to be called in parallel on the two graphs after the band graph is created. Induced band graphs have vertex labels attached to each of their vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original graph had vertex labels attached to it, band graph vertex labels are the labels of the corresponding vertices in the original graph. Else, band graph vertex labels are the global indices of corresponding vertices in the original graph. Depending on original graph vertex and seed distributions, the distribution of induced band graph vertices may be highly imbalanced. In order for further computations on this distributed graph to scale well, a redistribution of its data may be necessary, using the {\tt SCOTCH\_dgraph\lbt Redist} routine. \progret {\tt SCOTCH\_dgraphBand} returns $0$ if the band graph structure has been successfully created, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphBuild ( & SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Num & baseval, \\ & const SCOTCH\_Num & vertlocnbr, \\ & const SCOTCH\_Num & vertlocmax, \\ & const SCOTCH\_Num * & vertloctab, \\ & const SCOTCH\_Num * & vendloctab, \\ & const SCOTCH\_Num * & veloloctab, \\ & const SCOTCH\_Num * & vlblocltab, \\ & const SCOTCH\_Num & edgelocnbr, \\ & const SCOTCH\_Num & edgelocsiz, \\ & const SCOTCH\_Num * & edgeloctab, \\ & const SCOTCH\_Num * & edgegsttab, \\ & const SCOTCH\_Num * & edloloctab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphbuild ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & vertlocnbr, \\ & integer*{\it num} & vertlocmax, \\ & integer*{\it num} (*) & vertloctab, \\ & integer*{\it num} (*) & vendloctab, \\ & integer*{\it num} (*) & veloloctab, \\ & integer*{\it num} (*) & vlblloctab, \\ & integer*{\it num} & edgelocnbr, \\ & integer*{\it num} & edgelocsiz, \\ & integer*{\it num} (*) & edgeloctab, \\ & integer*{\it num} (*) & edgegsttab, \\ & integer*{\it num} (*) & edloloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphBuild} routine fills the distributed source graph structure pointed to by {\tt grafptr} with all of the data that are passed to it. {\tt baseval} is the graph base value for index arrays (typically $0$ for structures built from C and $1$ for structures built from Fortran). {\tt vertlocnbr} is the number of local vertices on the calling process, used to create the {\tt proccnttab} array. {\tt vertlocmax} is the maximum number of local vertices to be created on the calling process, used to create the {\tt proc\lbt vrt\lbt tab} array of global indices, and which must be set to {\tt vert\lbt loc\lbt nbr} for graphs wihout holes in their global numbering. {\tt vertloctab} is the local adjacency index array, of size $({\tt vertlocnbr} + 1)$ if the edge array is compact (that is, if {\tt vendloctab} equals $\mbox{\tt vertloctab}+1$ or {\tt NULL}), or of size {\tt vertlocnbr} else. {\tt vendloctab} is the adjacency end index array, of size {\tt vertlocnbr} if it is disjoint from {\tt vertloctab}. {\tt veloloctab} is the local vertex load array, of size {\tt vertlocnbr} if it exists. {\tt vlblloctab} is the local vertex label array, of size {\tt vertlocnbr} if it exists. {\tt edgelocnbr} is the local number of arcs (that is, twice the number of edges), including arcs to local vertices as well as to ghost vertices. {\tt edgelocsiz} is lower-bounded by the minimum size of the edge array required to encompass all used adjacency values; it is therefore at least equal to the maximum of the {\tt vendloctab} entries, over all local vertices, minus {\tt baseval}; it can be set to {\tt edgelocnbr} if the edge array is compact. {\tt edgeloctab} is the local adjacency array, of size at least {\tt edgelocsiz}, which stores the global indices of end vertices. {\tt edgegsttab} is the adjacency array, of size at least {\tt edgelocsiz}, if it exists; if {\tt edgegsttab} is given, it is assumed to be a pointer to an empty array to be filled with ghost vertex data computed by {\tt SCOTCH\_dgraph\lbt Ghst} whenever needed by communication routines such as {\tt SCOTCH\_dgraph\lbt Halo}. {\tt edloloctab} is the arc load array, of size {\tt edgelocsiz} if it exists. The {\tt vendloctab}, {\tt veloloctab}, {\tt vlblloctab}, {\tt edloloctab} and {\tt edgegsttab} arrays are optional, and a null pointer can be passed as argument whenever they are not defined. Note that, for \ptscotch\ to operate properly, either all the arrays of a kind must be set to null on all processes, or else all of them must be non null. This is mandatory because some algorithms require that collective communication operations be performed when some kind of data is present. If some processes considered that the arrays are present, and start such communications, while others did not, a deadlock would occur. In most cases, this situation will be anticipated and an error message will be issued, stating that graph data are inconsistent. The situation above may accidentally arise when some processes don't own any edge or vertex. In that case, depending on the implementation, a user \texttt{malloc} of size zero may return a null pointer rather than a non null pointer to an area of size zero, leading to the aforementioned inconsistencies. In order to avoid this problem, it is necessary to ensure that no null pointer will be returned, even in the case when zero bytes are requested. A workaround can be to call \texttt{malloc (\textit{x} | 4)} instead of \texttt{malloc (\textit{x})}. The ``\texttt{| 4}'' will consume only $4$ extra bytes at most, depending on the value of \texttt{\textit{x}}. Since, in Fortran, there is no null reference, passing the {\tt scotchf\lbt dgraph\lbt build} routine a reference equal to {\tt vertloctab} in the {\tt veloloctab} or {\tt vlblloctab} fields makes them be considered as missing arrays. The same holds for {\tt edloloctab} and {\tt edgegsttab} when they are passed a reference equal to {\tt edgeloctab}. Setting {\tt vendloctab} to refer to one cell after {\tt vertloctab} yields the same result, as it is the exact semantics of a compact vertex array. To limit memory consumption, {\tt SCOTCH\_\lbt dgraph\lbo Build} does not copy array data, but instead references them in the {\tt SCOTCH\_\lbt Dgraph} structure. Therefore, great care should be taken not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt dgraph\lbo Build} as long as the graph structure is in use. Every update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt dgraph\lbo Free}, to free internal graph structures, and eventually followed by a new call to {\tt SCOTCH\_\lbt dgraph\lbo Build} to re-build these internal structures so as to be able to use the new distributed graph. To ensure that inconsistencies in user data do not result in an erroneous behavior of the \libscotch\ routines, it is recommended, at least in the development stage of your application code, to call the {\tt SCOTCH\_\lbt dgraph\lbt Check} routine on the newly created {\tt SCOTCH\_\lbt Dgraph} structure before calling any other \libscotch\ routine. \progret {\tt SCOTCH\_dgraphBuild} returns $0$ if the graph structure has been successfully set with all of the input data, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphCheck}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphCheck ( & const SCOTCH\_Dgraph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphcheck ( & doubleprecision (*) & grafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphCheck} routine checks the consistency of the given {\tt SCOTCH\_\lbt Dgraph} structure. It can be used in client applications to determine if a graph which has been created from user-generated data by means of the {\tt SCOTCH\_\lbt dgraph\lbt Build} routine is consistent, prior to calling any other routines of the \libscotch\ library which would otherwise return internal error messages or crash the program. \progret {\tt SCOTCH\_dgraphCheck} returns $0$ if graph data are consistent, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphCoarsen}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphCoarsen ( & SCOTCH\_Dgraph * const & finegrafptr, \\ & const SCOTCH\_Num & coarnbr, \\ & const double & coarrat, \\ & const SCOTCH\_Num & flagval, \\ & SCOTCH\_Dgraph * const & coargrafptr, \\ & SCOTCH\_Num * const & multloctab) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphcoarsen ( & doubleprecision (*) & finegrafdat, \\ & integer*{\it num} & coarnbr, \\ & doubleprecision & coarrat, \\ & integer*{\it num} & flagval, \\ & doubleprecision (*) & coargrafdat, \\ & integer*{\it num} (*) & multloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphCoarsen} routine creates in the {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt coargrafptr} a distributed coarsened graph from the {\tt SCOTCH\_\lbt Dgraph} pointed to by {\tt finegrafptr}. The coarsened graph is created only if it is comprises more than {\tt coarnbr} vertices, or if the coarsening ratio is lower than {\tt coarrat}. Valid coarsening ratio values range from $0.5$ (in the case of a perfect matching) to $1.0$ (if no vertex could be coarsened). Classical threshold values range from $0.7$ to $0.8$. The {\tt flagval} flag specifies the type of coarsening. Several groups of flags can be combined, by means of addition or ``binary or'' operators. When {\tt SCOTCH\_\lbt COARSEN\lbt NO\lbt MERGE} is set, isolated vertices are never merged with other vertices. This preserves the topology of the graph, at the expense of a higher coarsening ratio. When {\tt SCOTCH\_\lbt COARSEN\lbt FOLD} or {\tt SCOTCH\_\lbt COARSEN\lbt FOLD\lbt DUP} are set, if a coarsened graph is created, it is folded onto half of the processes of the initial communicator. In the case of {\tt SCOTCH\_\lbt COARSEN\lbt FOLD\lbt DUP}, a second copy is created (duplicated) onto the other half. The two copies may not be identical, if the number of processors of the finer graph is odd. The {\tt multloctab} array must be of a size that is big enough to store multinode data for the resulting coarsened graph. This array will contain pairs of consecutive {\tt SCOTCH\_\lbt Num} values, representing the global indices of the two fine vertices that have been coarsened into each of the local coarse vertices. In case of plain coarsening, the size of the array must be at least twice the maximum expected number of local coarse vertices, that is, on each processor, twice the value of {\tt vert\lbt loc\lbt nbr} of the finer graph, because in the worst case no coarsening may happen on some processor. In case of folding, a redistribution of vertices is performed. Hence, the maximum number of coarse vertices on some processor is upper-bounded by the expected maximum global number of coarse vertices, divided by the resulting number of processors, that is, the integer floor value of half of the number of processors of the finer graph. {\tt coargrafptr} must have been initialized with the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Coarsen} is called. The communicator that is passed to it can either be the communicator used by the fine graph {\tt fine\lbt graf\lbt ptr}, or any congruent communicator created by using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a distinct communicator for the coarsened subgraph allows subsequent library routines to be called in parallel on the two graphs after the coarse graph is created. Depending on the way vertex mating is performed, the distribution of coarsened graph vertices may be imbalanced. In order for further computations on this distributed graph to scale well, a redistribution of its data might be necessary, using the {\tt SCOTCH\_dgraph\lbt Redist} routine. \progret {\tt SCOTCH\_dgraphCoarsen} returns $0$ if the coarse graph structure has been successfully created, $1$ if the coarse graph was not created because it did not enforce the threshold parameters, and $2$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphData}} \label{sec-lib-func-scotchdgraphdata} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphData ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & baseptr, \\ & SCOTCH\_Num * & vertglbptr, \\ & SCOTCH\_Num * & vertlocptr, \\ & SCOTCH\_Num * & vertlocptz, \\ & SCOTCH\_Num * & vertgstptr, \\ & SCOTCH\_Num ** & vertloctab, \\ & SCOTCH\_Num ** & vendloctab, \\ & SCOTCH\_Num ** & veloloctab, \\ & SCOTCH\_Num ** & vlblloctab, \\ & SCOTCH\_Num * & edgeglbptr, \\ & SCOTCH\_Num * & edgelocptr, \\ & SCOTCH\_Num * & edgelocptz, \\ & SCOTCH\_Num ** & edgeloctab, \\ & SCOTCH\_Num ** & edgegsttab, \\ & SCOTCH\_Num ** & edloloctab, \\ & MPI\_Comm * & comm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphdata ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} (*) & indxtab, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & vertglbnbr, \\ & integer*{\it num} & vertlocnbr, \\ & integer*{\it num} & vertlocmax, \\ & integer*{\it num} & vertgstnbr, \\ & integer*{\it idx} & vertlocidx, \\ & integer*{\it idx} & vendlocidx, \\ & integer*{\it idx} & velolocidx, \\ & integer*{\it idx} & vlbllocidx, \\ & integer*{\it num} & edgeglbnbr, \\ & integer*{\it num} & edgelocnbr, \\ & integer*{\it num} & edgelocsiz, \\ & integer*{\it idx} & edgelocidx, \\ & integer*{\it idx} & edgegstidx, \\ & integer*{\it idx} & edlolocidx, \\ & integer & comm) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphData} routine is the dual of the {\tt SCOTCH\_\lbt dgraph\lbo Build} routine. It is a multiple accessor that returns scalar values and array references. {\tt baseptr} is the pointer to a location that will hold the graph base value for index arrays (typically $0$ for structures built from C and $1$ for structures built from Fortran). {\tt vertglbptr} is the pointer to a location that will hold the global number of vertices. {\tt vertlocptr} is the pointer to a location that will hold the number of local vertices. {\tt vertlocptz} is the pointer to a location that will hold the maximum allowed number of local vertices, that is, $(\mbox{\tt proc\lbt vrt\lbt tab[}p + 1\mbox{\tt]} - \mbox{\tt proc\lbt vrt\lbt tab[}p\mbox{\tt]})$, where $p$ is the rank of the local process. {\tt vertgstptr} is the pointer to a location that will hold the number of local and ghost vertices if it has already been computed by a prior call to {\tt SCOTCH\_\lbt dgraph\lbo Ghst}, and $-1$ else. {\tt vertloctab} is the pointer to a location that will hold the reference to the adjacency index array, of size $\mbox{\tt *vertlocptr} + 1$ if the adjacency array is compact, or of size {\tt *vertlocptr} else. {\tt vendloctab} is the pointer to a location that will hold the reference to the adjacency end index array, and is equal to $\mbox{\tt vertloctab} + 1$ if the adjacency array is compact. {\tt veloloctab} is the pointer to a location that will hold the reference to the vertex load array, of size {\tt *vertlocptr}. {\tt vlblloctab} is the pointer to a location that will hold the reference to the vertex label array, of size {\tt vertlocnbr}. {\tt edgeglbptr} is the pointer to a location that will hold the global number of arcs (that is, twice the number of global edges). {\tt edgelocptr} is the pointer to a location that will hold the number of local arcs (that is, twice the number of local edges). {\tt edgelocptz} is the pointer to a location that will hold the declared size of the local edge array, which must encompass all used adjacency values; it is at least equal to {\tt *edgelocptr}. {\tt edgeloctab} is the pointer to a location that will hold the reference to the local adjacency array of global indices, of size at least {\tt *edgelocptz}. {\tt edgegsttab} is the pointer to a location that will hold the reference to the ghost adjacency array, of size at least {\tt *edgelocptz}; if it is non null, its data are valid if {\tt vertgstnbr} is non-negative. {\tt edloloctab} is the pointer to a location that will hold the reference to the arc load array, of size {\tt *edgelocptz}. {\tt comm} is the pointer to a location that will hold the MPI communicator of the distributed graph. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. Since there are no pointers in Fortran, a specific mechanism is used to allow users to access graph arrays. The {\tt scotchf\lbt dgraph\lbt data} routine is passed an integer array, the first element of which is used as a base address from which all other array indices are computed. Therefore, instead of returning references, the routine returns integers, which represent the starting index of each of the relevant arrays with respect to the base input array, or {\tt vert\lbt loc\lbt idx}, the index of {\tt vert\lbt loc\lbt tab}, if they do not exist. For instance, if some base array {\tt myarray\lbt (1)} is passed as parameter {\tt indxtab}, then the first cell of array {\tt vert\lbt loc\lbt tab} will be accessible as {\tt myarray\lbt (vert\lbt loc\lbt idx)}. In order for this feature to behave properly, the {\tt indxtab} array must be word-aligned with the graph arrays. This is automatically enforced on most systems, but some care should be taken on systems that allow to access data that is not word-aligned. On such systems, declaring the array after a dummy {\tt double\lbt precision} array can coerce the compiler into enforcing the proper alignment. The integer value returned in {\tt comm} is the communicator itself, not its index with respect to {\tt indxtab}. Also, on 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type. See Section~\ref{sec-lib-inttypesize} for more information on this issue. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphExit ( & SCOTCH\_Dgraph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphexit ( & doubleprecision (*) & grafdat) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphExit} function frees the contents of a {\tt SCOTCH\_\lbt Dgraph} structure previously initialized by {\tt SCOTCH\_\lbt dgraphInit}. All subsequent calls to {\tt SCOTCH\_\lbt dgraph} routines other than {\tt SCOTCH\_\lbt dgraphInit}, using this structure as parameter, may yield unpredictable results. If {\tt SCOTCH\_\lbt dgraph\lbt Init} was called with a communicator that is not a predefined MPI communicator, it is the user's responsibility to free this communicator after all graphs that use it have been freed by means of the {\tt SCOTCH\_\lbt dgraph\lbt Exit} routine. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphFree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphFree ( & SCOTCH\_Dgraph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphfree ( & doubleprecision (*) & grafdat) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphFree} function frees the graph data of a {\tt SCOTCH\_\lbt Dgraph} structure previously initialized by {\tt SCOTCH\_\lbt dgraph\lbt Init}, but preserves its internal communication data structures. This call is equivalent to a call to {\tt SCOTCH\_\lbt dgraph\lbt Exit} immediately followed by a call to {\tt SCOTCH\_\lbt dgraph\lbt Init} with the same communicator as in the previous {\tt SCOTCH\_\lbt dgraph\lbt Init} call. Consequently, the given {\tt SCOTCH\_\lbt Dgraph} structure remains ready for subsequent calls to any distributed graph handling routine of the \libscotch\ library. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphGather}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphGather ( & SCOTCH\_Dgraph * const & dgrfptr, \\ & const SCOTCH\_Graph * const & cgrfptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphgather ( & doubleprecision (*) & dgrfdat, \\ & doubleprecision (*) & cgrfdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphGather} routine gathers the contents of the distributed {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt dgrfptr} to the centralized {\tt SCOTCH\_\lbt Graph} structure(s) pointed to by {\tt cgrfptr}. If only one of the processes has a non-null {\tt cgrfptr} pointer, it is considered as the root process to which distributed graph data is sent. Else, all of the processes must provide a valid {\tt cgrfptr} pointer, and each of them will receive a copy of the centralized graph. \progret {\tt SCOTCH\_dgraphGather} returns $0$ if the graph structure has been successfully gathered, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphInducePart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphInducePart ( & SCOTCH\_Dgraph * const & orggrafptr, \\ & const SCOTCH\_Num * const & orgpartloctab, \\ & const SCOTCH\_Num & indpartval, \\ & const SCOTCH\_Num & indvertlocnbr, \\ & SCOTCH\_Dgraph * const & indgrafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphinducepart ( & doubleprecision (*) & orggrafdat, \\ & integer*{\it num} (*) & orgpartloctab, \\ & integer*{\it num} & indpartval, \\ & integer*{\it num} & indvertlocnbr, \\ & doubleprecision (*) & indgrafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphInducePart} routine creates in the {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt indgrafptr} a distributed induced subgraph of the {\tt SCOTCH\_\lbt Dgraph} pointed to by {\tt orggrafptr}. The local vertices of every processor that are kept in the induced subgraph are the ones for which the values contained in the {\tt orgpart\lbt loctab} array cells are equal to {\tt indpartval}. The {\tt orgpartloctab} array must be of a size at least equal to the number of local vertices of the original graph. It may be larger, e.g. equal to the number of local plus ghost vertices, if needed by the user, but only the area corresponding to the local vertices will be used by {\tt SCOTCH\_\lbt dgraph\lbt Induce\lbt Part}. {\tt indvertlocnbr} is the number of local vertices in the induced subgraph. It must therefore be equal to the number of local vertices that have their associated {\tt org\lbt part\lbt loc\lbt tab} cell value equal to {\tt indpartval}. This value is necessary to internal array allocations. While it could have been easily computed by \scotch, by traversing the {\tt orgpart\lbt gsttab} array, making it used-provided spares such a traversal if the user already knows the value. If it is not the case, setting this value to {\tt -1} will make \scotch\ compute it automatically. {\tt indgrafptr} must have been initialized with the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Induce\lbt Part} is called. The communicator that is passed to it can either be the communicator used by the original graph {\tt org\lbt graf\lbt ptr}, or any congruent communicator created by using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a distinct communicator for the induced subgraph allows subsequent library routines to be called in parallel on the two graphs after the induced graph is created. Induced band graphs have vertex labels attached to each of their vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original graph had vertex labels attached to it, induced graph vertex labels are the labels of the corresponding vertices in the original graph. Else, induced graph vertex labels are the global indices of corresponding vertices in the original graph. Depending on the partition array, the distribution of induced graph vertices may be highly imbalanced. In order for further computations on this distributed graph to scale well, a redistribution of its data may be necessary, using the {\tt SCOTCH\_dgraph\lbt Redist} routine. \progret {\tt SCOTCH\_dgraphInducePart} returns $0$ if the induced graph structure has been successfully created, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphInit}} \label{sec-lib-dgraphinit} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphInit ( & SCOTCH\_Dgraph * & grafptr, \\ & MPI\_Comm & comm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphinit ( & doubleprecision (*) & grafdat, \\ & integer & comm, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphInit} function initializes a {\tt SCOTCH\_\lbt Dgraph} structure so as to make it suitable for future parallel operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Dgraph} structure. By accessing the communicator handle which is passed to it, {\tt SCOTCH\_dgraphInit} can know how many processes will be used to manage the distributed graph and can allocate its private structures accordingly. {\tt SCOTCH\_dgraphInit} does not make a duplicate of the communicator which is passed to it, but instead keeps a reference to it, so that all future communications needed by \libscotch\ to process this graph will be performed using this communicator. Therefore, it is the user's responsibility, whenever several \libscotch\ routines might be called in parallel, to create appropriate duplicates of communicators so as to avoid any potential interferences between concurrent communications. When the distributed graph is no longer of use, the {\tt SCOTCH\_\lbt dgraph\lbt Exit} function must be called, to free its internal data arrays. If {\tt SCOTCH\_\lbt dgraph\lbt Init} was called with a communicator that is not a predefined MPI communicator (such as {\tt MPI\_\tt COMM\_\lbt WORLD} or {\tt MPI\_\tt COMM\_\lbt SELF}), it is the user's responsibility to free this communicator after all graphs that use it have been freed by means of the {\tt SCOTCH\_\lbt dgraph\lbt Exit} routine. \progret {\tt SCOTCH\_dgraphInit} returns $0$ if the graph structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphRedist}} \label{sec-lib-dgraphredist} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphRedist ( & SCOTCH\_Dgraph * const & orggrafptr, \\ & const SCOTCH\_Num * const & partloctab, \\ & const SCOTCH\_Num * const & permgsttab, \\ & const SCOTCH\_Num & vertlocdlt, \\ & const SCOTCH\_Num & edgelocdlt, \\ & SCOTCH\_Dgraph * const & redgrafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphredist ( & doubleprecision (*) & orggrafdat, \\ & integer*{\it num} (*) & partloctab, \\ & integer*{\it num} (*) & permgsttab, \\ & integer*{\it num} & vertlocdlt, \\ & integer*{\it num} & edgelocdlt, \\ & doubleprecision (*) & redgrafptr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphRedist} routine initializes and fills the redistributed graph structure pointed to by {\tt red\lbt graf\lbt ptr} with a new distributed graph made from data redistributed from the original graph pointed to by {\tt org\lbt graf\lbt ptr}. The partition array, {\tt part\lbt loc\lbt tab}, must always be provided. It holds the part number associated with each local vertex. Part indices are {\em not\/} based: target vertices are numbered from $0$ to the number of parts minus $1$. Whenever provided, the permutation array {\tt perm\lbt gst\lbt tab} must be of a size equal to the number of local and ghost vertices of the source graph (that is, {\tt vert\lbt gst\lbt nbr}, see Section~\ref{sec-lib-format-dgraph}). Its contents must be based, that is, permutation global indices start at {\tt baseval}. Both its local and ghost contents must be valid. Consequently, it is the user's responsibility to call {\tt SCOTCH\_dgraph\lbt Halo} whenever necessary so as to propagate part values of the local vertices to their ghost counterparts on other processes. {\tt SCOTCH\_\lbt dgraph\lbt Redist} does not perform this halo exchange itself because users may already have computed these values by themselves when computing the new partition. If {\tt perm\lbt gst\lbt tab} is not provided by the user, vertices in each part are reordered according to their global indices in the source graph. {\tt redgrafptr} must have been initialized with the {\tt SCOTCH\_\lbt dgraph\lbt Init} routine before {\tt SCOTCH\_dgraph\lbt Redist} is called. The communicator that is passed to it can either be the communicator used by the original graph {\tt org\lbt graf\lbt ptr}, or any congruent communicator created by using {\tt MPI\_\lbt Comm\_\lbt dup} on this communicator. Using a distinct communicator for the redistributed graph allows subsequent library routines to be called in parallel on the two graphs after the redistributed graph is created. Redistributed graphs have vertex labels attached to each of their vertices, in the {\tt vlbl\lbt loc\lbt tab} array. If the original graph had vertex labels attached to it, redistributed graph vertex labels are the labels of the corresponding vertices in the original graph. Else, redistributed graph vertex labels are the global indices of corresponding vertices in the original graph. \progret {\tt SCOTCH\_dgraphRedist} returns $0$ if the redistributed graph has been successfully created, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphScatter}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphScatter ( & SCOTCH\_Dgraph * const & dgrfptr, \\ & const SCOTCH\_Graph * const & cgrfptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphscatter ( & doubleprecision (*) & dgrfdat, \\ & doubleprecision (*) & cgrfdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphScatter} routine scatters the contents of the centralized {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt cgrfptr} across the processes of the distributed {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt dgrfptr}. Only one of the processes should provide a non-null {\tt cgrfptr} parameter. This process is considered the root process for the scattering operation. Since, in Fortran, there is no null reference, processes which are not the root must indicate it by passing a pointer to the distributed graph structure equal to the pointer to their centralized graph structure. The scattering is performed such that graph vertices are evenly spread across the processes of the communicator associated with the distributed graph, in ascending order. Every process receives either $\left\lceil\frac{\mbox{vertglbnbr}}{\mbox{procglbnbr}}\right\rceil$ or $\left\lfloor\frac{\mbox{vertglbnbr}}{\mbox{procglbnbr}}\right\rfloor$ vertices, according to its rank: processes of lower ranks are filled first, eventually with one more vertex than processes of higher ranks. \progret {\tt SCOTCH\_dgraphScatter} returns $0$ if the graph structure has been successfully scattered, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphSize}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphSize ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Num * & vertglbptr, \\ & SCOTCH\_Num * & vertlocptr, \\ & SCOTCH\_Num * & edgeglbptr, \\ & SCOTCH\_Num * & edgelocptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphsize ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & vertglbnbr, \\ & integer*{\it num} & vertlocnbr, \\ & integer*{\it num} & edgeglbnbr, \\ & integer*{\it num} & edgelocnbr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphSize} routine fills the four areas of type {\tt SCOTCH\_\lbt Num} pointed to by {\tt vertglbptr}, {\tt vertlocptr}, {\tt edgeglbptr} and {\tt edgelocptr} with the number of global vertices and arcs (that is, twice the number of edges) of the given graph pointed to by {\tt grafptr}, as well as with the number of local vertices and arcs borne by each of the calling processes. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. This routine is useful to get the size of a graph read by means of the {\tt SCOTCH\_\lbt dgraph\lbo Load} routine, in order to allocate auxiliary arrays of proper sizes. If the whole structure of the graph is wanted, function {\tt SCOTCH\_dgraph\lbo Data} should be preferred. \end{itemize} \subsection{Distributed graph I/O routines} \subsubsection{{\tt SCOTCH\_dgraphLoad}} \label{sec-lib-dgraphload} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphLoad ( & SCOTCH\_Dgraph * & grafptr, \\ & FILE * & stream, \\ & SCOTCH\_Num & baseval, \\ & SCOTCH\_Num & flagval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphload ( & doubleprecision (*) & grafdat, \\ & integer & fildes, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & flagval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphLoad} routine fills the {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt grafptr} with the centralized or distributed source graph description available from one or several streams {\tt stream} in the \scotch\ graph formats (please refer to section~\ref{sec-file-dsgraph} for a description of the distributed graph format, and to the {\it\scotch\ User's Guide}~\scotchcitesuser\ for the centralized graph format). When only one stream pointer is not null, the associated source graph file must be a centralized one, the contents of which are spread across all of the processes. When all stream pointers are non null, they can either refer to multiple instances of the same centralized graph, or to the distinct fragments of a distributed graph. In the first case, all processes read all of the contents of the centralized graph files but keep only the relevant part. In the second case, every process reads its fragment in parallel. To ease the handling of source graph files by programs written in C as well as in Fortran, the base value of the graph to read can be set to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the proper value. A value of {\tt -1} indicates that the graph base should be the same as the one provided in the graph description that is read from {\tt stream}. The {\tt flagval} value is a combination of the following integer values, that may be added or bitwise-ored: \begin{itemize} \iteme[{\tt 0}] Keep vertex and edge weights if they are present in the {\tt stream} data. \iteme[{\tt 1}] Remove vertex weights. The graph read will have all of its vertex weights set to one, regardless of what is specified in the {\tt stream} data. \iteme[{\tt 2}] Remove edge weights. The graph read will have all of its edge weights set to one, regardless of what is specified in the {\tt stream} data. \end{itemize} Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the graph file. Processes which would pass a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} in Fortran. \progret {\tt SCOTCH\_dgraphLoad} returns $0$ if the distributed graph structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphSave ( & const SCOTCH\_Dgraph * & grafptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphsave ( & doubleprecision (*) & grafdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphSave} routine saves the contents of the {\tt SCOTCH\_\lbt Dgraph} structure pointed to by {\tt grafptr} to streams {\tt stream}, in the \scotch\ distributed graph format (see section~\ref{sec-file-dsgraph}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_dgraphSave} returns $0$ if the graph structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsection{Data handling and exchange routines} \subsubsection{{\tt SCOTCH\_dgraphGhst}} \label{sec-lib-dgraphghst} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphGhst ( & SCOTCH\_Dgraph * const & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphghst ( & doubleprecision (*) & grafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphGhst} routine fills the {\tt edge\lbt gst\lbt tab} arrays of the distributed graph structure pointed to by {\tt grafptr} with the local and ghost vertex indices corresponding to the global vertex indices contained in its {\tt edge\lbt loc\lbt tab} arrays, according to the semantics described in Section~\ref{sec-lib-format-dgraph}. If memory areas had not been previously reserved by the user for the {\tt edge\lbt gst\lbt tab} arrays and linked to the distributed graph structure through a call to {\tt SCOTCH\_\lbt dgraph\lbt Build}, they are allocated. Their references can be retrieved on every process by means of a call to {\tt SCOTCH\_\lbt dgraph\lbt Data}, which will also return the number of local and ghost vertices, suitable for allocating vertex data arrays for {\tt SCOTCH\_\lbt dgraph\lbt Halo}. \progret {\tt SCOTCH\_dgraphGhst} returns $0$ if ghost vertex data has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphHalo}} \label{sec-lib-dgraphhalo} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphHalo ( & SCOTCH\_Dgraph * const & grafptr, \\ & void * & datatab, \\ & MPI\_Datatype & typeval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphhalo ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & datatab, \\ & integer & typeval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphHalo} routine propagates the data borne by local vertices to all of the corresponding halo vertices located on neighboring processes, in a synchronous way. On every process, {\tt datatab} should point to a data array of a size sufficient to hold {\tt vert\lbt gst\lbt nbr} elements of the data type to be exchanged, the first {\tt vertlocnbr} slots of which must already be filled with the information associated with the local vertices. On completion, the $({\tt vert\lbt gst\lbt nbr} - {\tt vert\lbt loc\lbt nbr})$ remaining slots are filled with copies of the corresponding remote data obtained from the local parts of the data arrays of neighboring processes. When the MPI data type to be used is not a collection of contiguous entries, great care should be taken in the definition of the upper bound of the type (by using the {\tt MPI\_\lbo UB} pseudo-datatype), such that when asking MPI to send a certain number of elements of the said type located at some address, contiguous areas in memory will be considered. Please refer to the MPI documentation regarding the creation of derived datatypes~\cite[Section 3.12.3]{mpi11} for more information. To perform its data exchanges, the {\tt SCOTCH\_dgraph\lbt Halo} routine requires ghost vertex management data provided by the {\tt SCOTCH\_\lbt dgraph\lbt Ghst} routine. Therefore, the {\tt edge\lbt gst\lbt tab} array returned by the {\tt SCOTCH\_dgraph\lbt Data} routine will always be valid after a call to {\tt SCOTCH\_dgraph\lbt Halo}, if it was not already. In case useful computation can be carried out during the halo exchange, an asynchronous version of this routine is available, called {\tt SCOTCH\_\lbt dgraph\lbt Halo\lbt Async}. \progret {\tt SCOTCH\_dgraphHalo} returns $0$ if halo data has been successfully exchanged, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphHaloAsync}} \label{sec-lib-dgraphhaloasync} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphHaloAsync ( & SCOTCH\_Dgraph * const & grafptr, \\ & void * & datatab, \\ & MPI\_Datatype & typeval, \\ & SCOTCH\_DgraphHaloReq * const & requptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphhaloasync ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & datatab, \\ & integer & typeval, \\ & doubleprecision (*) & requptr, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphHaloAsync} routine propagates the data borne by local vertices to all of the corresponding halo vertices located on neighboring processes, in an asynchronous way. On every process, {\tt datatab} should point to a data array of a size sufficient to hold {\tt vert\lbt gst\lbt nbr} elements of the data type to be exchanged, the first {\tt vertlocnbr} slots of which must already be filled with the information associated with the local vertices. On completion, the $({\tt vert\lbt gst\lbt nbr} - {\tt vert\lbt loc\lbt nbr})$ remaining slots are filled with copies of the corresponding remote data obtained from the local parts of the data arrays of neighboring processes. The semantics of {\tt SCOTCH\_dgraphHaloAsync} is similar to the one of {\tt SCOTCH\_dgraph\lbt Halo}, except that it returns as soon as possible, while effective communication may not have started nor completed. Also, it possesses an additional parameter, {\tt requptr}, which must point to a {\tt SCOTCH\_\lbt Dgraph\lbt Halo\lbt Req} data structure. Similarly to asynchronous MPI calls, users can wait for the completion of a {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} routine by calling the {\tt SCOTCH\_dgraph\lbt Halo\lbt Wait} routine, passing it a pointer to this request structure. In Fortran, the request structure must be defined as an array of {\tt DOUBLEPRECISION}s, of size {\tt SCOTCH\_\lbt DGRAPH\lbt HALO\lbt REQDIM}. This constant is defined in file {\tt ptscotchf.h}, which must be included whenever necessary. The effective means for {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} to perform its task may vary at compile time, depending on the presence of a thread-safe MPI library or on the existence of asynchronous collective communication routines such as {\tt MPE\_\lbt Ialltoallv}. In case no method for performing asynchronous collective communication is available, {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} will internally call {\tt SCOTCH\_dgraph\lbt Halo} to perform synchronous communication. Because of possible limitations in the implementation of third-party communication routines, it is not recommended to perform simultaneous {\tt SCOTCH\_dgraph\lbt Halo\lbt Async} calls on the same communicator. \progret {\tt SCOTCH\_dgraphHaloAsync} returns $0$ if the halo data exchange has been successfully started, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphHaloWait}} \label{sec-lib-dgraphhalowait} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphHaloWait ( & SCOTCH\_DgraphHaloReq * const & requptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphhalowait ( & doubleprecision (*) & requptr, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphHaloWait} routine waits for the termination of an asynchronous halo exchange process, started by a call to {\tt SCOTCH\_dgraph\lbt Halo\lbt Async}, and represented by its request, pointed to by {\tt requptr}. In Fortran, the request structure must be defined as an array of {\tt DOUBLEPRECISION}s, of size {\tt SCOTCH\_\lbt DGRAPH\lbt HALO\lbt REQDIM}. This constant is defined in file {\tt ptscotchf.h}, which must be included whenever necessary. \progret {\tt SCOTCH\_dgraphHaloWait} returns $0$ if halo data has been successfully exchanged, and $1$ else. \end{itemize} \subsection{Distributed graph mapping and partitioning routines} {\tt SCOTCH\_dgraphMap} and {\tt SCOTCH\_dgraphPart} provide high-level functionalities and free the user from the burden of calling in sequence several of the low-level routines also described in this section. \subsubsection{{\tt SCOTCH\_dgraphMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphMap ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & partloctab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphmap ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & archdat, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & partloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphMap} routine computes a mapping of the distributed source graph structure pointed to by {\tt grafptr} onto the target architecture pointed to by {\tt archptr}, using the mapping strategy pointed to by {\tt straptr}, and returns distributed fragments of the partition data in the array pointed to by {\tt partloctab}. The {\tt partloctab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are local vertices of the source graph on each of the processes. On return, every cell of the mapping array holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. {\bf Attention}: version {\sc 6.0} of \scotch\ does not allow yet to map distributed graphs onto target architectures which are not complete graphs. This restriction will be removed in the next release. \progret {\tt SCOTCH\_dgraphMap} returns $0$ if the partition of the graph has been successfully computed, and $1$ else. In this last case, the {\tt partloctab} arrays may however have been partially or completely filled, but their contents is not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphMapCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphMapCompute ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dmapping * & mappptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphmapcompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphMapCompute} routine computes a mapping on the given {\tt SCOTCH\_\lbt Dmapping} structure pointed to by {\tt mappptr} using the parallel mapping strategy pointed to by {\tt stratptr}. On return, every cell of the distributed mapping array (see section~\ref{sec-lib-dgraph-map-init}) holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices, minus $1$. {\bf Attention}: version {\sc 6.0} of \scotch\ does not allow yet to map distributed graphs onto target architectures which are not complete graphs. This restriction will be removed in the next release. \progret {\tt SCOTCH\_dgraphMapCompute} returns $0$ if the mapping has been successfully computed, and $1$ else. In this latter case, the local mapping arrays may however have been partially or completely filled, but their contents is not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphMapExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphMapExit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dmapping * & mappptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphmapexit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphMapExit} function frees the contents of a {\tt SCOTCH\_\lbt Dmapping} structure previously initialized by {\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt dgraph\lbt Map*} routines other than {\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphMapInit}} \label{sec-lib-dgraph-map-init} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphMapInit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dmapping * & mappptr, \\ & const SCOTCH\_Arch * & archptr, \\ & SCOTCH\_Num * & partloctab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphmapinit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & archdat, \\ & integer*{\it num} (*) & partloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphMapInit} routine fills the distributed mapping structure pointed to by {\tt mappptr} with all of the data that is passed to it. Thus, all subsequent calls to ordering routines such as {\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Compute}, using this mapping structure as parameter, will place mapping results in field {\tt part\lbt loc\lbt tab}. {\tt partloctab} is the pointer to an array of as many {\tt SCOTCH\_\lbt Num}s as there are local vertices in each local fragment of the distributed graph pointed to by {\tt grafptr}, and which will receive the indices of the vertices of the target architecture pointed to by {\tt archptr}. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Dmapping} structure. When the distributed mapping structure is no longer of use, call function {\tt SCOTCH\_dgraph\lbt \lbt Map\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_dgraphMapInit} returns $0$ if the distributed mapping structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphMapSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphMapSave ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Dmapping * & mappptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphmapsave ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphMapSave} routine saves the contents of the {\tt SCOTCH\_\lbt Dmapping} structure pointed to by {\tt mappptr} to stream {\tt stream}, in the \scotch\ mapping format. Please refer to the {\it\scotch\ User's Guide}~\scotchcitesuser\ for more information about this format. Since the mapping format is centralized, only one process should provide a valid output stream; other processes must pass a null pointer. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_dgraphMapSave} returns $0$ if the mapping structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphPart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphPart ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & partloctab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphpart ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & partloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphPart} routine computes a partition into {\tt partnbr} parts of the distributed source graph structure pointed to by {\tt grafptr}, using the graph partitioning strategy pointed to by {\tt stratptr}, and returns distributed fragments of the partition data in the array pointed to by {\tt partloctab}. The {\tt partloctab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are local vertices of the source graph on each of the processes. On return, every array cell holds the number of the part to which the corresponding vertex is mapped. Parts are numbered from $0$ to $\mbox{\tt partnbr} - 1$. \progret {\tt SCOTCH\_dgraphPart} returns $0$ if the partition of the graph has been successfully computed, and $1$ else. In this latter case, the {\tt partloctab} array may however have been partially or completely filled, but its content is not significant. \end{itemize} \subsection{Distributed graph ordering routines} \subsubsection{{\tt SCOTCH\_dgraphOrderCblkDist}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_dgraphOrderCblkDist ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordercblkdist ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} & cblkglbnbr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderCblkDist} routine returns on all processes the global number of distributed elimination tree (super-)nodes possessed by the given distributed ordering. Distributed elimination tree nodes are produced for instance by parallel nested dissection, before the ordering process goes sequential. Subsequent sequential nodes generated locally afterwards on individual processes are not accounted for in this figure. This routine is used to allocate space for the tree structure arrays to be filled by the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Tree\lbt Dist} routine. \progret {\tt SCOTCH\_dgraphOrderCblkDist} returns a positive number if the number of distributed elimination tree nodes has been successfully computed, and a negative value else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderCompute ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordercompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderCompute} routine computes in parallel a distributed block ordering of the distributed graph structure pointed to by {\tt grafptr}, using the distributed ordering strategy pointed to by {\tt stratptr}, and stores its result in the distributed ordering structure pointed to by {\tt ordeptr}. \progret {\tt SCOTCH\_dgraphOrderCompute} returns $0$ if the ordering has been successfully computed, and $1$ else. In this latter case, the ordering arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphOrderExit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphdorderexit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderExit} function frees the contents of a {\tt SCOTCH\_\lbt Dordering} structure previously initialized by {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt dgraph\lbt Order*} routines other than {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderInit}} \label{sec-lib-dgraphorderinit} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderInit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphorderinit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraph\lbt Order\lbt Init} routine initializes the distributed ordering structure pointed to by {\tt ordeptr} so that it can be used to store the results of the parallel ordering of the associated distributed graph, to be computed by means of the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Compute} routine. The {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Init} routine should be the first function to be called upon a {\tt SCOTCH\_\lbt Dordering} structure for ordering distributed graphs. When the ordering structure is no longer of use, the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Exit} function must be called, in order to to free its internal structures. \progret {\tt SCOTCH\_dgraphOrderInit} returns $0$ if the distributed ordering structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderSave ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Dordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordersave ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderSave} routine saves the contents of the {\tt SCOTCH\_\lbt Dordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ ordering format. Please refer to the {\it\scotch\ User's Guide}~\scotchcitesuser\ for more information about this format. Since the ordering format is centralized, only one process should provide a valid output stream; other processes must pass a null pointer. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the ordering file. Processes which would pass a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} in Fortran. \progret {\tt SCOTCH\_dgraphOrderSave} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderSaveMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderSaveMap ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Dordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphdordersavemap ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderSaveMap} routine saves the block partitioning data associated with the {\tt SCOTCH\_\lbt Dordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ mapping format. A target domain number is associated with every block, such that all node vertices belonging to the same block are shown as belonging to the same target vertex. The resulting mapping file can be used by the {\tt gout} program to produce pictures showing the different separators and blocks. Please refer to the {\it\scotch\ User's Guide} for more information on the \scotch\ mapping format and on {\tt gout}. Since the block partitioning format is centralized, only one process should provide a valid output stream; other processes must pass a null pointer. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the ordering file. Processes which would pass a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} in Fortran. \progret {\tt SCOTCH\_dgraphOrderSaveMap} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderSaveTree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderSaveTree ( & const SCOTCH\_Dgraph * & grafptr, \\ & const SCOTCH\_Dordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordersavetree ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderSaveTree} routine saves the tree hierarchy information associated with the {\tt SCOTCH\_\lbt Dordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}. The format of the tree output file resembles the one of a mapping or ordering file: it is made up of as many lines as there are vertices in the ordering. Each of these lines holds two integer numbers. The first one is the index or the label of the vertex, and the second one is the index of its parent node in the separators tree, or $-1$ if the vertex belongs to a root node. Since the tree hierarchy format is centralized, only one process should provide a valid output stream; other processes must pass a null pointer. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the ordering file. Processes which would pass a {\tt NULL} stream pointer in C must pass descriptor number {\tt -1} in Fortran. \progret {\tt SCOTCH\_dgraphOrderSaveTree} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderPerm}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderPerm ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr, \\ & SCOTCH\_Num * & permloctab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphorderperm ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} (*) & permloctab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderPerm} routine fills the distributed direct permutation array {\tt permloctab} according to the ordering provided by the given distributed ordering pointed to by {\tt ordeptr}. Each {\tt permloctab} local array must be of size {\tt vertlocnbr}. \progret {\tt SCOTCH\_dgraphOrderPerm} returns $0$ if the distributed permutation has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderTreeDist}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderTreeDist ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & ordeptr, \\ & SCOTCH\_Num * & treeglbtab \\ & SCOTCH\_Num * & sizeglbtab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordertreedist ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} (*) & treeglbtab, \\ & integer*{\it num} (*) & sizeglbtab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphOrderTreeDist} routine fills on all processes the arrays representing the distributed part of the elimination tree structure associated with the given distributed ordering. This structure describes the sizes and relations between all distributed elimination tree (super-)nodes. These nodes are mainly the result of parallel nested dissection, before the ordering process goes sequential. Sequential nodes generated locally on individual processes are not represented in this structure. A node can either be a leaf column block, which has no descendants, or a nested dissection node, which has most often three sons: its two separated sub-parts and the separator. A nested dissection node may have two sons only if the separator is empty; it cannot have only one son. Sons are indexed such that the separator of a block, if any, is always the son of highest index. Hence, the order of the indices of the two sub-parts matches the one of the direct permutation of the unknowns. For any column block $i$, {\tt treeglbtab[}$i${\tt ]} holds the index of the father of node $i$ in the elimination tree, or $-1$ if $i$ is the root of the tree. All node indices start from {\tt baseval}. {\tt size\lbt glb\lbt tab[}$i${\tt ]} holds the number of graph vertices possessed by node $i$, plus the ones of all of its descendants if it is not a leaf of the tree. Therefore, the {\tt size\lbt glb\lbt tab} value of the root vertex is always equal to the number of vertices in the distributed graph. Each of the {\tt treeglbtab} and {\tt size\lbt glb\lbt tab} arrays must be large enough to hold a number of {\tt SCOTCH\_\lbt Num}s equal to the number of distributed elimination tree nodes and column blocks, as returned by the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Cblk\lbt Dist} routine. \progret {\tt SCOTCH\_dgraphOrderTreeDist} returns $0$ if the arrays describing the distributed part of the distributed tree structure have been successfully filled, and $1$ else. \end{itemize} \subsection{Centralized ordering handling routines} \label{sec-lib-corder} Since distributed ordering structures maintain scattered information which cannot be easily collated, the only practical way to access this information is to centralize it in a sequential {\tt SCOTCH\_\lbt Ordering} structure. Several routines are provided to create and destroy sequential orderings attached to a distributed graph, and to gather the information contained in a distributed ordering on such a sequential ordering structure. Since the arrays which represent centralized ordering must be of a size equal to the global number of vertices, these routines are not scalable and may require much memory for very large graphs. \subsubsection{{\tt SCOTCH\_dgraphCorderExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_dgraphCorderExit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Ordering * & cordptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphcorderexit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & corddat) \end{tabular}} \progdes The {\tt SCOTCH\_dgraphCorderExit} function frees the contents of a centralized {\tt SCOTCH\_\lbt Ordering} structure previously initialized by {\tt SCOTCH\_\lbt dgraph\lbt Corder\lbt Init}. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphCorderInit}} \label{sec-lib-graph-corder-init} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphCorderInit ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Ordering * & cordptr, \\ & SCOTCH\_Num * & permtab, \\ & SCOTCH\_Num * & peritab, \\ & SCOTCH\_Num * & cblkptr, \\ & SCOTCH\_Num * & rangtab, \\ & SCOTCH\_Num * & treetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphcorderinit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & corddat, \\ & integer*{\it num} (*) & permtab, \\ & integer*{\it num} (*) & peritab, \\ & integer*{\it num} & cblknbr, \\ & integer*{\it num} (*) & rangtab, \\ & integer*{\it num} (*) & treetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraph\lbt Corder\lbt Init} routine fills the centralized ordering structure pointed to by {\tt cordptr} with all of the data that are passed to it. This routine is the equivalent of the {\tt SCOTCH\_\lbt graph\lbt Order\lbt Init} routine of the \scotch\ sequential library, except that it takes a distributed graph as input. It is used to initialize a centralized ordering structure on which a distributed ordering will be centralized by means of the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Gather} routine. Only the process on which distributed ordering data is to be centralized has to handle a centralized ordering structure. {\tt permtab} is the ordering permutation array, of size ${\tt vert\lbt glb\lbt nbr}$, {\tt peritab} is the inverse ordering permutation array, of size ${\tt vert\lbt glb\lbt nbr}$, {\tt cblkptr} is the pointer to a {\tt SCOTCH\_\lbt Num} that will receive the number of produced column blocks, {\tt rangtab} is the array that holds the column block span information, of size $\mbox{\tt vert\lbt glb\lbt nbr} + 1$, and {\tt treetab} is the array holding the structure of the separators tree, of size ${\tt vert\lbt glb\lbt nbr}$. Please refer to Section~\ref{sec-lib-format-order} for an explanation of their semantics. Any of these five output fields can be set to {\tt NULL} if the corresponding information is not needed. Since, in Fortran, there is no null reference, passing a reference to {\tt grafptr} will have the same effect. The {\tt SCOTCH\_\lbt dgraph\lbt Corder\lbt Init} routine should be the first function to be called upon a {\tt SCOTCH\_\lbt Ordering} structure to be used for gathering distributed ordering data. When the centralized ordering structure is no longer of use, the {\tt SCOTCH\_\lbt dgraph\lbt Corder\lbt Exit} function must be called, in order to to free its internal structures. \progret {\tt SCOTCH\_dgraphCorderInit} returns $0$ if the ordering structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_dgraphOrderGather}} \label{sec-lib-dgraph-order-gather} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_dgraphOrderGather ( & const SCOTCH\_Dgraph * & grafptr, \\ & SCOTCH\_Dordering * & cordptr, \\ & SCOTCH\_Ordering * & cordptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfdgraphordergather ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & dorddat, \\ & doubleprecision (*) & corddat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_dgraph\lbt Order\lbt Gather} routine gathers the distributed ordering data borne by {\tt dordptr} to the centralized ordering structure pointed to by {\tt cordptr}. \progret {\tt SCOTCH\_dgraphOrderGather} returns $0$ if the centralized ordering structure has been successfully updated, and $1$ else. \end{itemize} \subsection{Strategy handling routines} \label{sec-lib-strat} This section presents basic strategy handling routines which are also described in the {\it\scotch\ User's Guide} but which are duplicated here for the sake of readability, as well as a strategy declaration routine which is specific to the \ptscotch\ library. \subsubsection{{\tt SCOTCH\_stratExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_stratExit ( & SCOTCH\_Strat * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratexit ( & doubleprecision (*) & stradat) \end{tabular}} \progdes The {\tt SCOTCH\_stratExit} function frees the contents of a {\tt SCOTCH\_\lbt Strat} structure previously initialized by {\tt SCOTCH\_\lbt strat\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt strat} routines other than {\tt SCOTCH\_\lbt strat\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_stratInit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratInit ( & SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratinit ( & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratInit} function initializes a {\tt SCOTCH\_\lbt Strat} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Strat} structure. When the strategy data is no longer of use, call function {\tt SCOTCH\_\lbt strat\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_stratInit} returns $0$ if the strategy structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratSave ( & const SCOTCH\_Strat * & straptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratsave ( & doubleprecision (*) & stradat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratSave} routine saves the contents of the {\tt SCOTCH\_\lbt Strat} structure pointed to by {\tt straptr} to stream {\tt stream}, in the form of a text string. The methods and parameters of the strategy string depend on the type of the strategy, that is, whether it is a bipartitioning, mapping, or ordering strategy, and to which structure it applies, that is, graphs or meshes. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the output file. \progret {\tt SCOTCH\_stratSave} returns $0$ if the strategy string has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsection{Strategy creation routines} \label{sec-lib-strat-creation} Strategy creation routines parse the user-provided strategy string and populate the given opaque strategy object with a tree-shaped structure that represents the parsed expression. It is this structure that will be later traversed by the generic routines for partitioning, mapping or ordering, so as to determine which specific partitioning, mapping or ordering method to be called on a subgraph being considered. Because strategy creation routines call third-party lexical analyzers that may have been implemented in a non-reentrant way, no guarantee is given on the reentrance of these routines. Consequently, strategy creation routines that might be called simultaneously by multiple threads should be protected by a mutex. \subsubsection{{\tt SCOTCH\_stratDgraphMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratDgraphMap ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratdgraphmap ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratDgraphMap} routine fills the strategy structure pointed to by {\tt straptr} with the distributed graph mapping strategy string pointed to by {\tt string}. The format of this strategy string is described in Section~\ref{sec-lib-format-pmap}. From this point, strategy {\tt strat} can only be used as a distributed graph mapping strategy, to be used by functions {\tt SCOTCH\_\lbt dgraph\lbt Part}, {\tt SCOTCH\_\lbt dgraph\lbt Map} or {\tt SCOTCH\_\lbt dgraph\lbt Map\lbt Compute}. This routine must be called on every process with the same strategy string. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratDgraphMap} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratDgraphMapBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratDgraphMapBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & procnbr, \\ & const SCOTCH\_Num & partnbr, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratdgraphmapbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & procnbr, \\ & integer*{\it num} & partnbr, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratDgraphMapBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default mapping strategy tuned according to the preference flags passed as {\tt flagval} and to the desired number of parts {\tt partnbr} and imbalance ratio {\tt balrat}, to be used on {\tt procnbr} processes. From this point, the strategy structure can only be used as a parallel mapping strategy, to be used by function {\tt SCOTCH\_\lbt dgraph\lbt Map}, for instance. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. \progret {\tt SCOTCH\_stratDgraphMapBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratDgraphOrder}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratDgraphOrder ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratdgraphorder ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratDgraphOrder} routine fills the strategy structure pointed to by {\tt straptr} with the distributed graph ordering strategy string pointed to by {\tt string}. The format of this strategy string is described in Section~\ref{sec-lib-format-pord}. From this point, strategy {\tt strat} can only be used as a distributed graph ordering strategy, to be used by function {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Compute}. This routine must be called on every process with the same strategy string. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratDgraphOrder} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratDgraphOrderBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratDgraphOrderBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & procnbr, \\ & const SCOTCH\_Num & levlnbr, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratdgraphorderbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & procnbr, \\ & integer*{\it num} & levlnbr, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratDgraphOrderBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default parallel ordering strategy tuned according to the preference flags passed as {\tt flagval} and to the desired nested dissection imbalance ratio {\tt balrat}, to be used on {\tt procnbr} processes. From this point, the strategy structure can only be used as a parallel ordering strategy, to be used by function {\tt SCOTCH\_\lbt dgraph\lbt Order}, for instance. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. When any of the {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MIN} or {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX} flags is set, the {\tt levlnbr} parameter is taken into account. \progret {\tt SCOTCH\_stratDgraphOrderBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsection{Other data structure routines} \label{sec-lib-other} \subsubsection{{\tt SCOTCH\_dmapAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Dmapping * SCOTCH\_dmapAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_dmapAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Dmapping} structure. It is the user's responsibility to free this memory when it is no longer needed. \progret {\tt SCOTCH\_dmapAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_dorderAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Dordering * SCOTCH\_dorderAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_dorderAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Dordering} structure. It is the user's responsibility to free this memory when it is no longer needed. \progret {\tt SCOTCH\_dorderAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsection{Error handling routines} \label{sec-lib-error} The handling of errors that occur within library routines is often difficult, because library routines should be able to issue error messages that help the application programmer to find the error, while being compatible with the way the application handles its own errors. To match these two requirements, all the error and warning messages produced by the routines of the \libscotch\ library are issued using the user-definable variable-length argument routines {\tt SCOTCH\_\lbt error\lbt Print} and {\tt SCOTCH\_\lbt error\lbt PrintW}. Thus, one can redirect these error messages to his own error handling routines, and can choose if he wants his program to terminate on error or to resume execution after the erroneous function has returned. In order to free the user from the burden of writing a basic error handler from scratch, the {\tt libptscotcherr.a} library provides error routines that print error messages on the standard error stream {\tt stderr} and return control to the application. Application programmers who want to take advantage of them have to add {\tt -lptscotcherr} to the list of arguments of the linker, after the {\tt -lptscotch} argument. \subsubsection{{\tt SCOTCH\_errorPrint}} \label{sec-lib-errorprint} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorPrint ( & const char * const & errstr, ... ) \end{tabular}} \progdes The {\tt SCOTCH\_errorPrint} function is designed to output a variable-length argument error string to some stream. \end{itemize} \subsubsection{{\tt SCOTCH\_errorPrintW}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorPrintW ( & const char * const & errstr, ...) \end{tabular}} \progdes The {\tt SCOTCH\_errorPrintW} function is designed to output a variable-length argument warning string to some stream. \end{itemize} \subsubsection{{\tt SCOTCH\_errorProg}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorProg ( & const char * & progstr) \end{tabular}} \progdes The {\tt SCOTCH\_errorProg} function is designed to be called at the beginning of a program or of a portion of code to identify the place where subsequent errors take place. This routine is not reentrant, as it is only a minor help function. It is defined in {\tt lib\lbt scotch\lbt err.a} and is used by the standalone programs of the \scotch\ distribution. \end{itemize} \subsection{Miscellaneous routines} \label{sec-lib-misc} \subsubsection{{\tt SCOTCH\_memCur}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Idx SCOTCH\_memCur ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmemcur ( & integer*{\it idx} & memcur) \\ \end{tabular}} \progdes When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt TRACE} flag set, the {\tt SCOTCH\_memCur} routine returns the amount of memory, in bytes, that is currently allocated by \scotch\ on the current processing element, either by itself or on the behalf of the user. Else, the routine returns {\tt -1}. The returned figure does not account for the memory that has been allocated by the user and made visible to \scotch\ by means of routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This memory is not under the control of \scotch, and it is the user's responsibility to free it after calling the relevant {\tt SCOTCH\_\lbt *\lbt Exit} routines. Some third-party software used by \scotch, such as the strategy string parser, may allocate some memory for internal use and never free it. Consequently, there may be small discrepancies between memory occupation figures returned by \scotch\ and those returned by third-party tools. However, these discrepancies should not exceed a few kilobytes. While memory occupation is internally recorded in a variable of type {\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the sake of interface homogeneity, especially for Fortran. It is therefore the installer's responsibility to make sure that the support integer type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See section~\ref{sec-lib-inttypesize} for more information. \end{itemize} \subsubsection{{\tt SCOTCH\_memMax}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Idx SCOTCH\_memMax ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmemmax ( & integer*{\it idx} & memcur) \\ \end{tabular}} \progdes When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt TRACE} flag set, the {\tt SCOTCH\_memMax} routine returns the maximum amount of memory, in bytes, ever allocated by \scotch\ on the current processing element, either by itself or on the behalf of the user. Else, the routine returns {\tt -1}. The returned figure does not account for the memory that has been allocated by the user and made visible to \scotch\ by means of routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This memory is not under the control of \scotch, and it is the user's responsibility to free it after calling the relevant {\tt SCOTCH\_\lbt *\lbt Exit} routines. Some third-party software used by \scotch, such as the strategy string parser, may allocate some memory for internal use and never free it. Consequently, there may be small discrepancies between memory occupation figures returned by \scotch\ and those returned by third-party tools. However, these discrepancies should not exceed a few kilobytes. While memory occupation is internally recorded in a variable of type {\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the sake of interface homogeneity, especially for Fortran. It is therefore the installer's responsibility to make sure that the support integer type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See section~\ref{sec-lib-inttypesize} for more information. \end{itemize} \subsubsection{{\tt SCOTCH\_randomProc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_randomProc ( & int & procnum) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfrandomproc ( & integer & procnum ) \end{tabular}} \progdes The {\tt SCOTCH\_randomProc} routine records internally the provided number, which contributes to the initialization of the pseudo-random generator. Hence, providing different values for each process, e.g. process rank, will result in different random seeds across processors. This allows processes to compute concurrently different initial partitions, in the course of the parallel multilevel framework with folding and duplication. In order for the provided number to be taken into account, {\tt SCOTCH\_\lbt random\lbt Proc} must be called before any other routine of the \libscotch\ that is likely to use (and consequently to initialize) the pseudo-random number generator. By default, it is set to zero. \end{itemize} \subsubsection{{\tt SCOTCH\_randomReset}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} void SCOTCH\_randomReset ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}l} scotchfrandomreset ( & ) \end{tabular}} \progdes The {\tt SCOTCH\_randomReset} routine resets the seed of the pseudo-random generator used by the graph partitioning routines of the \libscotch\ library. Two consecutive calls to the same \libscotch\ partitioning or ordering routines, separated by a call to {\tt SCOTCH\_\lbt random\lbt Reset}, will always yield the same results. \end{itemize} \subsubsection{{\tt SCOTCH\_randomSeed}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_randomSeed ( & SCOTCH\_Num & seedval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfrandomseed ( & integer*{\it num} & seedval ) \end{tabular}} \progdes The {\tt SCOTCH\_randomSeed} routine sets to {\tt seedval} the seed of the pseudo-random generator used internally by several algorithms of \scotch. All subsequent calls to {\tt SCOTCH\_\lbt random\lbt Reset} will use this value to reset the pseudo-random generator. This routine needs only to be used by users willing to evaluate the robustness and quality of partitioning algorithms with respect to the variability of random seeds. Else, depending whether \scotch\ has been compiled with any of the flags {\tt COMMON\_\lbt RANDOM\_\lbt FIXED\_\lbt SEED} or {\tt SCOTCH\_\lbt DETERMINISTIC} set or not, either the same pseudo-random seed will be always used, or a process-dependent seed will be used, respectively. \end{itemize} \subsection{\parmetis\ compatibility library} \label{sec-lib-parmetis} The \parmetis\ compatibility library provides stubs which redirect some calls to \parmetis\ routines to the corresponding \ptscotch\ counterparts. In order to use this feature, the only thing to do is to re-link the existing software with the {\tt lib\lbo ptscotch\lbo parmetis} library, and eventually with the original \parmetis\ library if the software uses \parmetis\ routines which do not need to have \ptscotch\ equivalents, such as graph transformation routines. In that latter case, the ``{\tt -lptscotch\lbt parmetis}'' argument must be placed before the ``{\tt -lparmetis}'' one (and of course before the ``{\tt -lptscotch}'' one too), so that routines that are redefined by \ptscotch\ are chosen instead of their \parmetis\ counterpart. Routines of \parmetis\ which are not redefined by \ptscotch\ may also require that the sequential \metis\ library be linked too. When no other \parmetis\ routines than the ones redefined by \ptscotch\ are used, the ``{\tt -lparmetis}'' argument can be omitted. See Section~\ref{sec-examples} for an example. \subsubsection{{\tt ParMETIS\_V3\_NodeND}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void ParMETIS\_V3\_NodeND ( & const SCOTCH\_Num * const & vtxdist, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & order, \\ & SCOTCH\_Num * const & sizes, \\ & MPI\_Comm * & comm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} parmetis\_v3\_nodend ( & integer*{\it num} (*) & vtxdist, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} (*) & order, \\ & integer*{\it num} (*) & sizes, \\ & integer & comm) \end{tabular}} \progdes The {\tt ParMETIS\_V3\_NodeND} function performs a nested dissection ordering of the distributed graph passed as arrays {\tt vtxdist}, {\tt xadj} and {\tt adjncy}, using the default \ptscotch\ ordering strategy. Unlike for \parmetis, this routine will compute an ordering even when the number of processors on which it is run is not a power of two. The {\tt options} array is not used. When the number of processors is a power of two, the contents of the {\tt sizes} array is equivalent to the one returned by the original {\tt ParMETIS\_V3\_NodeND} routine, else it is filled with $-1$ values. Users willing to get the tree structure of orderings computed on numbers of processors which are not power of two should use the native \ptscotch\ ordering routine, and extract the relevant information from the distributed ordering with the {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Cblk\lbt Dist} and {\tt SCOTCH\_\lbt dgraph\lbt Order\lbt Tree\lbt Dist} routines. Similarly, as there is no {\tt ParMETIS\_V3\_NodeWND} routine in \parmetis, users willing to order distributed graphs with node weights should directly call the \ptscotch\ routines. \end{itemize} \subsubsection{{\tt ParMETIS\_V3\_PartGeomKway}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void ParMETIS\_V3\_PartGeomKway ( & const SCOTCH\_Num * const & vtxdist, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & adjwgt, \\ & const SCOTCH\_Num * const & wgtflag, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & ndims, \\ & const float * const & xyz, \\ & const SCOTCH\_Num * const & ncon, \\ & const SCOTCH\_Num * const & nparts, \\ & const float * const & tpwgts, \\ & const float * const & ubvec, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & edgecut, \\ & SCOTCH\_Num * const & part, \\ & MPI\_Comm * & comm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} parmetis\_v3\_partgeomkway ( & integer*{\it num} (*) & vtxdist, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} (*) & adjwgt, \\ & integer*{\it num} & wgtflag, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} & ndims, \\ & float (*) & xyz, \\ & integer*{\it num} & ncon, \\ & integer*{\it num} & nparts, \\ & float (*) & tpwgts, \\ & float (*) & ubvec, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} & edgecut, \\ & integer*{\it num} (*) & part, \\ & integer & comm) \end{tabular}} \progdes The {\tt ParMETIS\_V3\_PartGeomKway} function computes a partition into {\tt nparts} parts of the distributed graph passed as arrays {\tt vtxdist}, {\tt xadj} and {\tt adjncy}, using the default \ptscotch\ mapping strategy. The partition is returned in the form of the distributed vector {\tt part}, which holds the indices of the parts to which every vertex belongs, from $0$ to $(\mbox{\tt nparts} - 1)$. Since \scotch\ does not handle geometry, the {\tt ndims} and {\tt xyz} arrays are not used, and this routine directly calls the {\tt ParMETIS\_\lbt V3\_\lbt Part\lbt Kway} stub. \end{itemize} \subsubsection{{\tt ParMETIS\_V3\_PartKway}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void ParMETIS\_V3\_PartKway ( & const SCOTCH\_Num * const & vtxdist, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & adjwgt, \\ & const SCOTCH\_Num * const & wgtflag, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & ncon, \\ & const SCOTCH\_Num * const & nparts, \\ & const float * const & tpwgts, \\ & const float * const & ubvec, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & edgecut, \\ & SCOTCH\_Num * const & part, \\ & MPI\_Comm * & comm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} parmetis\_v3\_partkway ( & integer*{\it num} (*) & vtxdist, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} (*) & adjwgt, \\ & integer*{\it num} & wgtflag, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} & ncon, \\ & integer*{\it num} & nparts, \\ & float (*) & tpwgts, \\ & float (*) & ubvec, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} & edgecut, \\ & integer*{\it num} (*) & part, \\ & integer & comm) \end{tabular}} \progdes The {\tt ParMETIS\_V3\_PartKway} function computes a partition into {\tt nparts} parts of the distributed graph passed as arrays {\tt vtxdist}, {\tt xadj} and {\tt adjncy}, using the default \ptscotch\ mapping strategy. The partition is returned in the form of the distributed vector {\tt part}, which holds the indices of the parts to which every vertex belongs, from $0$ to $(\mbox{\tt nparts} - 1)$. Since \scotch\ does not handle multiple constraints, only the first constraint is taken into account to define the respective weights of the parts. Consequently, only the first {\tt nparts} cells of the {\tt tpwgts} array are considered. The {\tt ncon}, {\tt ubvec} and {\tt options} parameters are not used. \end{itemize} scotch_6.0.9/doc/src/ptscotch/s_f_rub.eps0000644000302600021200000003366113303015264020576 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:26 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 304 303 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath -53.0 329.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1500 600 m 5700 600 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 1200 m 5700 1200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 2400 m 5700 2400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3000 m 5700 3000 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3600 m 5700 3600 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 1800 m 5700 1800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 4200 m 5700 4200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 4800 m 5700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 600 m 1500 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 600 m 2100 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2700 600 m 2700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3300 600 m 3300 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3900 600 m 3900 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4500 600 m 4500 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 600 m 5100 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5700 600 m 5700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4950 m 1650 4650 l 1350 4650 l 1350 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4350 m 1650 4050 l 1350 4050 l 1350 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 3750 m 1650 3450 l 1350 3450 l 1350 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 3150 m 1650 2850 l 1350 2850 l 1350 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 2550 m 1650 2250 l 1350 2250 l 1350 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 1950 m 1650 1650 l 1350 1650 l 1350 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 1350 m 1650 1050 l 1350 1050 l 1350 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 750 m 1650 450 l 1350 450 l 1350 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4950 m 2250 4650 l 1950 4650 l 1950 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4350 m 2250 4050 l 1950 4050 l 1950 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 3750 m 2250 3450 l 1950 3450 l 1950 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 3150 m 2250 2850 l 1950 2850 l 1950 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 2550 m 2250 2250 l 1950 2250 l 1950 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 1950 m 2250 1650 l 1950 1650 l 1950 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 1350 m 2250 1050 l 1950 1050 l 1950 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 750 m 2250 450 l 1950 450 l 1950 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4950 m 3450 4650 l 3150 4650 l 3150 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4350 m 3450 4050 l 3150 4050 l 3150 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 3750 m 3450 3450 l 3150 3450 l 3150 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 3150 m 3450 2850 l 3150 2850 l 3150 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 2550 m 3450 2250 l 3150 2250 l 3150 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 1950 m 3450 1650 l 3150 1650 l 3150 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 1350 m 3450 1050 l 3150 1050 l 3150 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 750 m 3450 450 l 3150 450 l 3150 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4950 m 4050 4650 l 3750 4650 l 3750 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4350 m 4050 4050 l 3750 4050 l 3750 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 3750 m 4050 3450 l 3750 3450 l 3750 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 3150 m 4050 2850 l 3750 2850 l 3750 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 2550 m 4050 2250 l 3750 2250 l 3750 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 1950 m 4050 1650 l 3750 1650 l 3750 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 1350 m 4050 1050 l 3750 1050 l 3750 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 750 m 4050 450 l 3750 450 l 3750 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4950 m 4650 4650 l 4350 4650 l 4350 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4350 m 4650 4050 l 4350 4050 l 4350 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 3750 m 4650 3450 l 4350 3450 l 4350 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 3150 m 4650 2850 l 4350 2850 l 4350 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 2550 m 4650 2250 l 4350 2250 l 4350 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 1950 m 4650 1650 l 4350 1650 l 4350 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 1350 m 4650 1050 l 4350 1050 l 4350 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 750 m 4650 450 l 4350 450 l 4350 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4950 m 5250 4650 l 4950 4650 l 4950 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4350 m 5250 4050 l 4950 4050 l 4950 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 3750 m 5250 3450 l 4950 3450 l 4950 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 3150 m 5250 2850 l 4950 2850 l 4950 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 2550 m 5250 2250 l 4950 2250 l 4950 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 1950 m 5250 1650 l 4950 1650 l 4950 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 1350 m 5250 1050 l 4950 1050 l 4950 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 750 m 5250 450 l 4950 450 l 4950 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4950 m 5850 4650 l 5550 4650 l 5550 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4350 m 5850 4050 l 5550 4050 l 5550 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 3750 m 5850 3450 l 5550 3450 l 5550 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 3150 m 5850 2850 l 5550 2850 l 5550 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 2550 m 5850 2250 l 5550 2250 l 5550 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 1950 m 5850 1650 l 5550 1650 l 5550 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 1350 m 5850 1050 l 5550 1050 l 5550 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 750 m 5850 450 l 5550 450 l 5550 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4950 m 2850 4650 l 2550 4650 l 2550 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4350 m 2850 4050 l 2550 4050 l 2550 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 3750 m 2850 3450 l 2550 3450 l 2550 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 3150 m 2850 2850 l 2550 2850 l 2550 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 2550 m 2850 2250 l 2550 2250 l 2550 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 1950 m 2850 1650 l 2550 1650 l 2550 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 1350 m 2850 1050 l 2550 1050 l 2550 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 750 m 2850 450 l 2550 450 l 2550 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 2250 5400 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 2475 5475 m gs 1 -1 sc (0) col-1 sh gr /Times-Roman ff 300.00 scf sf 4650 5400 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 4875 5475 m gs 1 -1 sc (1) col-1 sh gr % Ellipse n 1800 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2700 1200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2400 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 1500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 5400 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 3600 2850 m 3600 4950 l gs col-1 s gr [] 0 sd % Polyline n 3525 2850 m 3675 2850 l gs col-1 s gr % Polyline n 3525 4950 m 3675 4950 l gs col-1 s gr % Polyline n 1380 2775 m 1275 2775 1275 4920 105 arcto 4 {pop} repeat 1275 5025 5820 5025 105 arcto 4 {pop} repeat 5925 5025 5925 2880 105 arcto 4 {pop} repeat 5925 2775 1380 2775 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2580 975 m 2475 975 2475 1320 105 arcto 4 {pop} repeat 2475 1425 2820 1425 105 arcto 4 {pop} repeat 2925 1425 2925 1080 105 arcto 4 {pop} repeat 2925 975 2580 975 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4380 975 m 4275 975 4275 1920 105 arcto 4 {pop} repeat 4275 2025 5220 2025 105 arcto 4 {pop} repeat 5325 2025 5325 1080 105 arcto 4 {pop} repeat 5325 975 4380 975 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4800 3900 m 2700 1200 l gs col-1 s gr % Polyline n 4800 3900 m 4800 1500 l gs col-1 s gr % Polyline 45.000 slw n 4800 3900 m 1800 3300 l gs col-1 s gr % Polyline n 4800 3900 m 2400 4500 l gs col-1 s gr % Polyline [15 90] 90 sd n 4800 3900 m 5400 3300 l gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 900 3975 m gs 1 -1 sc (D) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/ptscotch/p.tex0000644000302600021200000002176613542632117017441 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : p.tex % % Sujet : Manuel de l'utilisateur % % de PT-Scotch 6.0 % % Corps du document % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % pdflatex -sPAPERSIZE=a4 p.tex % dvips -sPAPERSIZE=a4 p.dvi -o ptscotch_user6.0.ps % ps2pdf -sPAPERSIZE=a4 ptscotch_user6.0.ps ptscotch_user6.0.pdf %% Formatage et pagination. \documentclass{article} \usepackage{a4} \usepackage{url} \usepackage[dvips]{graphicx} %\documentstyle[11pt,a4,fullpage,epsf]{article} %\textwidth 16.0cm %\oddsidemargin -0.5cm %\evensidemargin -0.5cm %\marginparwidth 0.0cm %\marginparsep 0.0cm %\marginparpush 0.0cm %\topmargin 0.5cm %\headheight 0.0cm %\headsep 0.0cm %\textheight 25.0cm %\footheight 0.0cm %\footskip 0.0cm \sloppy % Gestion des overfull hbox \renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 \setcounter{secnumdepth}{3} % Sous-sous-sections numerotees \setcounter{tocdepth}{3} % Sous-sous-sections dans la table %% Macros et commandes utiles. \makeatletter \@definecounter{enumv} % 8 niveaux d'itemizations \@definecounter{enumvi} \@definecounter{enumvii} \@definecounter{enumviii} \def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} \let\enditemize =\endlist \def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options \else \if@inlabel \indent \par \fi \ifhmode \unskip\unskip \par \fi \if@newlist \if@nobreak \@nbitem \else \addpenalty\@beginparpenalty \addvspace\@topsep \addvspace{-\parskip}\fi \else \addpenalty\@itempenalty \addvspace\itemsep \fi \global\@inlabeltrue \fi \everypar{\global\@minipagefalse\global\@newlistfalse \if@inlabel\global\@inlabelfalse \setbox\@tempboxa\hbox{#1}\relax \hskip \itemindent \hskip -\parindent \hskip -\labelwidth \hskip -\labelsep \ifdim \wd\@tempboxa > \labelwidth \box\@tempboxa\hfil\break \else \hbox to\labelwidth{\box\@tempboxa\hfil}\relax \hskip \labelsep \fi \penalty\z@ \fi \everypar{}}\global\@nobreakfalse \if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi \ignorespaces} \def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} \let\@Hxfloat\@xfloat \def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} \def\@HHfloat#1[H]{% \expandafter\let\csname end#1\endcsname\end@Hfloat \vskip\intextsep\def\@captype{#1}\parindent\z@ \ignorespaces} \def\end@Hfloat{\vskip \intextsep} \makeatother \def\progsyn{\item[{\makebox[1.5em][l]{\bf Synopsis}}]\ ~\linebreak[0]\\*[1em]} \def\progdes{\item[{\makebox[1.5em][l]{\bf Description}}]\ ~\linebreak[0]\\*[1em]} \def\progopt{\item[{\makebox[1.5em][l]{\bf Options}}]~\linebreak[0]} \def\progret{\item[{\makebox[1.5em][l]{\bf Return values}}]~\linebreak[0]} \newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees \newcommand{\en}{\end{displaymath}} \newcommand{\bq}{\begin{equation}} % Equations numerotees \newcommand{\eq}{\end{equation}} \newcommand{\lbo}{\linebreak[0]} \newcommand{\lbt}{\linebreak[2]} \newcommand{\noi}{{\noindent}} % Pas d'indentation \newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical \newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. \newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. \newcommand{\chaco}{{\sc Chaco}} % "Chaco" \newcommand{\metis}{\mbox{\sc Me$\!$T$\!$iS}} % "MeTiS" \newcommand{\parmetis}{\mbox{\sc ParMe$\!$T$\!$iS}} \newcommand{\scotch}{{\sc Scotch}} % "Scotch" \newcommand{\libscotch}{{\sc libScotch}} % "libScotch" \newcommand{\ptscotch}{{\sc PT-Scotch}} % "PT-Scotch" \newcommand{\libptscotch}{{\sc libPTScotch}} % "libPTScotch" \newcommand{\eqdef}{\stackrel{\scriptscriptstyle \rm def}{=}} % = as definition \newcommand{\isapprox}{\mathop{\approx}\limits} \newcommand{\lefta}{\longleftarrow} \newcommand{\rghta}{\longrightarrow} \newcommand{\botha}{\longleftrightarrow} \newcommand{\Lefta}{\Longleftarrow} \newcommand{\Rghta}{\Longrightarrow} \newcommand{\Botha}{\Longleftrightarrow} \newcommand{\HY}{{\rm H}} % H \newcommand{\KP}{{\rm K}} % K \newcommand{\MK}[1]{{\rm M}_{#1}} % Mk \newcommand{\MD}{\MK{2}} % M2 \newcommand{\PA}{{\rm P}} % P \newcommand{\UB}{{\rm UB}} % UB \newcommand{\SE}{{\rm SE}} % SE \newcommand{\FFT}{{\rm FFT}} % FFT \newcommand{\BF}{{\rm BF}} % BF \newcommand{\BFB}{{\overline{\rm BF}}} % BF bar \newcommand{\CCC}{{\rm CCC}} % CCC \newcommand{\CCCB}{{\overline{\rm CCC}}} % CCC bar \newcommand{\roo}[1]{{\rho_{\scriptscriptstyle {#1}}}} % Rho avec petit argument \newcommand{\too}[1]{{\tau_{\scriptscriptstyle {#1}}}} % Tau avec petit argument \newcommand{\xio}[1]{{\xi_{\scriptscriptstyle {#1}}}} % Xi avec petit argument \newcommand{\SB}[1]{{\cal C}'_S\left({#1}\right)} % Comportement en espace \newcommand{\TB}[1]{{\cal C}'_T\left({#1}\right)} % Comportement en temps \newcommand{\SC}[1]{{\cal C}_S\left({#1}\right)} % Complexite en espace \newcommand{\TC}[1]{{\cal C}_T\left({#1}\right)} % Complexite en temps \newcommand{\dmap}{\mbox{$\delta_{map}$}} \newcommand{\dexp}{\mbox{$\delta_{exp}$}} \newcommand{\mmap}{\mbox{$\mu_{map}$}} \newcommand{\mdil}{\mbox{$\mu_{dil}$}} \newcommand{\mcom}{\mbox{$\mu_{com}$}} \newcommand{\mexp}{\mbox{$\mu_{exp}$}} \newcommand{\NNZ}{\mbox{NNZ}} \newcommand{\OPC}{\mbox{OPC}} \newcommand{\hnbr}{\mbox{$h_{\rm nbr}$}} \newcommand{\hmin}{\mbox{$h_{\rm min}$}} \newcommand{\hmax}{\mbox{$h_{\rm max}$}} \newcommand{\havg}{\mbox{$h_{\rm avg}$}} \newcommand{\hdlt}{\mbox{$h_{\rm dlt}$}} %% Version du document. \newcommand{\scotchver}{6.0} \newcommand{\scotchversub}{6.0.9} \newcommand{\scotchcitepuser}{\protect\cite{pell08c}} \newcommand{\scotchcitesuser}{\protect\cite{pell08b}} %% Page de garde. \begin{document} %\date{\today} \date{\today} \title{\includegraphics[scale=0.8]{p_f_logo.ps}\\[1em] {\LARGE\bf \ptscotch\ and \libptscotch\ {\sc \scotchver} \mbox{User's Guide}}\\[1em]% {\normalsize (version \scotchversub)} } \author{Fran\c cois Pellegrini\\ Universit\'e Bordeaux~1 \& LaBRI, UMR CNRS 5800\\ Bacchus team, INRIA Bordeaux Sud-Ouest\\ 351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ {\tt pelegrin@labri.fr}} \maketitle \begin{abstract} This document describes the capabilities and operations of \ptscotch\ and \libscotch, a software package and a software library which compute parallel static mappings and parallel sparse matrix block orderings of distributed graphs. It gives brief descriptions of the algorithms, details the input/output formats, instructions for use, installation procedures, and provides a number of examples. \ptscotch\ is distributed as free/libre software, and has been designed such that new partitioning or ordering methods can be added in a straightforward manner. It can therefore be used as a testbed for the easy and quick coding and testing of such new methods, and may also be redistributed, as a library, along with third-party software that makes use of it, either in its original or in updated forms. \end{abstract} \clearpage %% Table des matieres. \tableofcontents %% Corps du document. \input{p_i.tex} % Introductions \input{p_c.tex} % Changes since previous versions \input{p_f.tex} % Formats de fichiers \input{p_p.tex} % Programmes \input{p_l.tex} % Bibliotheque \input{p_d.tex} % Distribution \input{p_e.tex} % Relevant examples %\input{p_n.tex} % Addition of a new method %% Remerciements. \section*{Credits} I wish to thank all of the following people: \begin{itemize} \item C\'edric Chevalier, during his PhD at LaBRI, did research on efficient parallel matching algorithms and coded the parallel multilevel algorithm of \ptscotch. He also studied parallel genetic refinement algorithms. Many thanks to him for the great job! \item Amaury Jacques improved the development environment and contributed to the consistency checking and non-regression testing routines; \item Yves Secretan contributed to the MinGW32 port. \end{itemize} %% Bibliographie. \bibliographystyle{plain} \bibliography{p} \end{document} scotch_6.0.9/doc/src/ptscotch/s_f_rub.fig0000644000302600021200000002052513303015264020547 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 900 450 6000 5475 6 1350 450 5850 4950 6 1500 600 5700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 600 5700 600 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1200 5700 1200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 2400 5700 2400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3000 5700 3000 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3600 5700 3600 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1800 5700 1800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 4200 5700 4200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 4800 5700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 600 1500 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2100 600 2100 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2700 600 2700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3300 600 3300 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3900 600 3900 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4500 600 4500 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5100 600 5100 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5700 600 5700 4800 -6 6 1350 450 1650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4950 1650 4650 1350 4650 1350 4950 1650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4350 1650 4050 1350 4050 1350 4350 1650 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 3750 1650 3450 1350 3450 1350 3750 1650 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 3150 1650 2850 1350 2850 1350 3150 1650 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 2550 1650 2250 1350 2250 1350 2550 1650 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 1950 1650 1650 1350 1650 1350 1950 1650 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 1350 1650 1050 1350 1050 1350 1350 1650 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 750 1650 450 1350 450 1350 750 1650 750 -6 6 1950 450 2250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4950 2250 4650 1950 4650 1950 4950 2250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4350 2250 4050 1950 4050 1950 4350 2250 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 3750 2250 3450 1950 3450 1950 3750 2250 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 3150 2250 2850 1950 2850 1950 3150 2250 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 2550 2250 2250 1950 2250 1950 2550 2250 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 1950 2250 1650 1950 1650 1950 1950 2250 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 1350 2250 1050 1950 1050 1950 1350 2250 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 750 2250 450 1950 450 1950 750 2250 750 -6 6 3150 450 3450 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4950 3450 4650 3150 4650 3150 4950 3450 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4350 3450 4050 3150 4050 3150 4350 3450 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 3750 3450 3450 3150 3450 3150 3750 3450 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 3150 3450 2850 3150 2850 3150 3150 3450 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 2550 3450 2250 3150 2250 3150 2550 3450 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 1950 3450 1650 3150 1650 3150 1950 3450 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 1350 3450 1050 3150 1050 3150 1350 3450 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 750 3450 450 3150 450 3150 750 3450 750 -6 6 3750 450 4050 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4950 4050 4650 3750 4650 3750 4950 4050 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4350 4050 4050 3750 4050 3750 4350 4050 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 3750 4050 3450 3750 3450 3750 3750 4050 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 3150 4050 2850 3750 2850 3750 3150 4050 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 2550 4050 2250 3750 2250 3750 2550 4050 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 1950 4050 1650 3750 1650 3750 1950 4050 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 1350 4050 1050 3750 1050 3750 1350 4050 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 750 4050 450 3750 450 3750 750 4050 750 -6 6 4350 450 4650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4950 4650 4650 4350 4650 4350 4950 4650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4350 4650 4050 4350 4050 4350 4350 4650 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 3750 4650 3450 4350 3450 4350 3750 4650 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 3150 4650 2850 4350 2850 4350 3150 4650 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 2550 4650 2250 4350 2250 4350 2550 4650 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 1950 4650 1650 4350 1650 4350 1950 4650 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 1350 4650 1050 4350 1050 4350 1350 4650 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 750 4650 450 4350 450 4350 750 4650 750 -6 6 4950 450 5250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4950 5250 4650 4950 4650 4950 4950 5250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4350 5250 4050 4950 4050 4950 4350 5250 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 3750 5250 3450 4950 3450 4950 3750 5250 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 3150 5250 2850 4950 2850 4950 3150 5250 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 2550 5250 2250 4950 2250 4950 2550 5250 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 1950 5250 1650 4950 1650 4950 1950 5250 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 1350 5250 1050 4950 1050 4950 1350 5250 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 750 5250 450 4950 450 4950 750 5250 750 -6 6 5550 450 5850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4950 5850 4650 5550 4650 5550 4950 5850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4350 5850 4050 5550 4050 5550 4350 5850 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 3750 5850 3450 5550 3450 5550 3750 5850 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 3150 5850 2850 5550 2850 5550 3150 5850 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 2550 5850 2250 5550 2250 5550 2550 5850 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 1950 5850 1650 5550 1650 5550 1950 5850 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 1350 5850 1050 5550 1050 5550 1350 5850 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 750 5850 450 5550 450 5550 750 5850 750 -6 6 2550 450 2850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4950 2850 4650 2550 4650 2550 4950 2850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4350 2850 4050 2550 4050 2550 4350 2850 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 3750 2850 3450 2550 3450 2550 3750 2850 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 3150 2850 2850 2550 2850 2550 3150 2850 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 2550 2850 2250 2550 2250 2550 2550 2850 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 1950 2850 1650 2550 1650 2550 1950 2850 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 1350 2850 1050 2550 1050 2550 1350 2850 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 750 2850 450 2550 450 2550 750 2850 750 -6 -6 6 2250 5175 2625 5475 4 0 -1 0 0 0 20 0.0000 4 210 210 2250 5400 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 2475 5475 0\001 -6 6 4650 5175 5025 5475 4 0 -1 0 0 0 20 0.0000 4 210 210 4650 5400 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 4875 5475 1\001 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 3300 75 75 1800 3300 1875 3375 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2700 1200 75 75 2700 1200 2775 1275 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2400 4500 75 75 2400 4500 2475 4575 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 1500 75 75 4800 1500 4875 1575 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5400 3300 75 75 5400 3300 5475 3375 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3900 75 75 4800 3900 4875 3975 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3600 2850 3600 4950 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 2850 3675 2850 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 4950 3675 4950 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5925 2775 1275 2775 1275 5025 5925 5025 5925 2775 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 2925 975 2475 975 2475 1425 2925 1425 2925 975 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5325 975 4275 975 4275 2025 5325 2025 5325 975 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 4800 3900 2700 1200 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 4800 3900 4800 1500 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 4800 3900 1800 3300 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 4800 3900 2400 4500 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 4800 3900 5400 3300 4 0 -1 0 0 0 20 0.0000 4 210 210 900 3975 D\001 -6 scotch_6.0.9/doc/src/scotch/0000755000302600021200000000000013470127507016102 5ustar pelegrinpelegrinscotch_6.0.9/doc/src/scotch/s_l.tex0000644000302600021200000112347113542632042017405 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_l.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Bibliotheque % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Library} \label{sec-lib} All of the features provided by the programs of the \scotch\ distribution may be directly accessed by calling the appropriate functions of the \libscotch\ library, archived in files {\tt libscotch.a} and {\tt libscotcherr.a}. These routines belong to six distinct classes: \begin{itemize} \item source graph and source mesh handling routines, which serve to declare, build, load, save, and check the consistency of source graphs and meshes, along with their geometry data; \item target architecture handling routines, which allow the user to declare, build, load, and save target architectures; \item strategy handling routines, which allow the user to declare and build mapping and ordering strategies; \item mapping routines, which serve to declare, compute, and save mappings of source graphs to target architectures by means of mapping strategies; \item a partitioning-with-overlap routine, which computes a vertex separator that splits a graph into a prescribed number of parts, such that the vertex load of each part and of its neighboring separator vertices are balanced; \item ordering routines, which allow the user to declare, compute, and save orderings of source graphs and meshes; \item error handling routines, which allow the user either to provide his own error servicing routines, or to use the default routines provided in the \libscotch\ distribution. \end{itemize} A \metis\ compatibility library, called {\tt lib\lbo scotch\lbo metis.a}, is also available. It allows users who were previously using \metis\ in their software to take advantage of the efficieny of \scotch\ without having to modify their code. The services provided by this library are described in Section~\ref{sec-lib-metis}. \subsection{Calling the routines of {\sc libScotch}} \subsubsection{Calling from C} All of the C routines of the \libscotch\ library are prefixed with ``{\tt SCOTCH\_}''. The remainder of the function names is made of the name of the type of object to which the functions apply (e\@.g\@. ``{\tt graph}'', ``{\tt mesh}'', ``{\tt arch}'', ``{\tt map}'', etc.), followed by the type of action performed on this object: ``{\tt Init}'' for the initialization of the object, ``{\tt Exit}'' for the freeing of its internal structures, ``{\tt Load}'' for loading the object from a stream, and so on. Typically, functions that return an error code return zero if the function succeeds, and a non-zero value in case of error. For instance, the {\tt SCOTCH\_\lbt graph\lbt Init} and {\tt SCOTCH\_\lbt graph\lbt Load} routines, described in sections~\ref{sec-lib-func-graphinit} and~\ref{sec-lib-func-graphload}, respectively, can be called from C by using the following code. {\tt \begin{verbatim} #include #include "scotch.h" ... SCOTCH_Graph grafdat; FILE * fileptr; if (SCOTCH_graphInit (&grafdat) != 0) { ... /* Error handling */ } if ((fileptr = fopen ("brol.grf", "r")) == NULL) { ... /* Error handling */ } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { ... /* Error handling */ } ... \end{verbatim} } Since ``{\tt scotch.h}'' uses several system objects which are declared in ``{\tt stdio.h}'', this latter file must be included beforehand in your application code. Although the ``{\tt scotch.h}'' and ``{\tt ptscotch.h}'' files may look very similar on your system, never mistake them, and always use the ``{\tt scotch.h}'' file as the include file for compiling a program which uses only the sequential routines of the \libscotch\ library. \subsubsection{Calling from Fortran} The routines of the \libscotch\ library can also be called from Fortran. For any C function named {\tt SCOTCH\_\lbt {\it type\lbt Action}()} which is documented in this manual, there exists a {\tt SCOTCHF\lbt {\it TYPE\lbt ACTION\/}()} Fortran counterpart, in which the separating underscore character is replaced by an ``{\tt F}''. In most cases, the Fortran routines have exactly the same parameters as the C functions, save for an added trailing {\tt INTEGER} argument to store the return value yielded by the function when the return type of the C function is not {\tt void}. \\ Since all the data structures used in \libscotch\ are opaque, equivalent declarations for these structures must be provided in Fortran. These structures must therefore be defined as arrays of {\tt DOUBLEPRECISION}s, of sizes given in file {\tt scotchf.h}, which must be included whenever necessary. For routines which read or write data using a {\tt FILE~*} stream in C, the Fortran counterpart uses an {\tt INTEGER} parameter which is the numer of the Unix file descriptor corresponding to the logical unit from which to read or write. In most Unix implementations of Fortran, standard descriptors 0 for standard input (logical unit 5), 1 for standard output (logical unit 6) and 2 for standard error are opened by default. However, for files which are opened using {\tt OPEN} statements, an additional function must be used to obtain the number of the Unix file descriptor from the number of the logical unit. This function is called \texttt{PXFFILENO} in the normalized POSIX Fortran API, and files which use it should include the \texttt{USE IFPOSIX} directive whenever necessary. An alternate, non normalized, function also exists in most Unix implementations of Fortran, and is called {\tt FNUM}. For instance, the {\tt SCOTCH\_\lbt graph\lbt Init} and {\tt SCOTCH\_\lbt graph\lbt Load} routines, described in sections~\ref{sec-lib-func-graphinit} and~\ref{sec-lib-func-graphload}, respectively, can be called from Fortran by using the following code. {\tt \begin{verbatim} INCLUDE "scotchf.h" DOUBLEPRECISION GRAFDAT(SCOTCH_GRAPHDIM) INTEGER RETVAL ... CALL SCOTCHFGRAPHINIT (GRAFDAT (1), RETVAL) IF (RETVAL .NE. 0) THEN ... OPEN (10, FILE='brol.grf') CALL SCOTCHFGRAPHLOAD (GRAFDAT (1), FNUM (10), 1, 0, RETVAL) CLOSE (10) IF (RETVAL .NE. 0) THEN ... \end{verbatim} } Although the ``{\tt scotchf.h}'' and ``{\tt ptscotchf.h}'' files may look very similar on your system, never mistake them, and always use the ``{\tt scotchf.h}'' file as the include file for compiling a program which uses only the sequential routines of the \libscotch\ library. \subsubsection{Compiling and linking} The compilation of C or Fortran routines which use routines of the \libscotch\ library requires that either ``{\tt scotch.h}'' or ``{\tt scotchf.h}'' be included, respectively. The routines of the \libscotch\ library are grouped in a library file called {\tt libscotch.a}. Default error routines that print an error message and exit are provided in library file {\tt libscotcherr.a}. Therefore, the linking of applications that make use of the \libscotch\ library with standard error handling is carried out by using the following options: ``{\tt -lscotch -lscotcherr -lm}''. If you want to handle errors by yourself, you should not link with library file {\tt libscotcherr.a}, but rather provide a {\tt SCOTCH\_\lbt error\lbt Print()} routine. Please refer to section~\ref{sec-lib-error} for more information. Programs that call both sequential and parallel routines of \scotch\ should use only the parallel versions of the include file and of the library. Please refer to the equivalent section of the \ptscotch\ user's manual for more information. \subsubsection{Dynamic library issues} \label{sec-lib-dynalloc} The advantage of dynamic libraries is that application code may not need to be recompiled when the library is updated. Whether this is true or not depends on the extent of the changes. One of the cases when recompilation is mandatory is when API data structures change: code that statically reserves space for them may be subject to boundary overflow errors when the size of library data structures increase, so that library routines operate on more space than what was statically allocated by the compiler based on the header files of the old version of the library. In order to alleviate this problem, the \libscotch\ proposes a set of routines to dynamically allocate storage space for the opaque API \scotch\ structures. Because these routines return pointers, these {\tt SCOTCH\_\lbt *Alloc} routines, as well as the {\tt SCOTCH\_\lbt free} routine, are only available in the C interface. \subsubsection{Machine word size issues} \label{sec-lib-inttypesize} Graph indices are represented in \scotch\ as integer values of type {\tt SCOTCH\_\lbt Num}. By default, this type equates to the {\tt int} C type, that is, an integer type of size equal to the one of the machine word. However, it can represent any other integer type. Indeed, the size of the {\tt SCOTCH\_\lbt Num} integer type can be coerced to 32 or 64 bits by using the ``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' compilation flags, respectively, or else by using the ``{\tt -DINT=}'' definition (see Section~\ref{sec-install-inttypesize} for more information on the setting of these compilation flags). Consequently, the C interface of \scotch\ uses two types of integers. Graph-related quantities are passed as {\tt SCOTCH\_\lbt Num}s, while system-related values such as file handles, as well as return values of \libscotch\ routines, are always passed as {\tt int}s. Because of the variability of library integer type sizes, one must be careful when using the Fortran interface of \scotch, as it does not provide any prototyping information, and consequently cannot produce any warning at link time. In the manual pages of the \libscotch\ routines, Fortran prototypes are written using three types of {\tt INTEGER}s. As for the C interface, the regular {\tt INTEGER} type is used for system-based values, such as file handles and MPI communicators, as well as for return values of the \libscotch\ routines, while the {\tt INTEGER*}{\it num} type should be used for all graph-related values, in accordance to the size of the {\tt SCOTCH\_\lbt Num} type, as set by the ``{\tt -DINTSIZE}{\it x\/}'' compilation flags. Also, the {\tt INTEGER*}{\it idx} type represents an integer type of a size equivalent to the one of a {\tt SCOTCH\_\lbt Idx}, as set by the ``{\tt -DIDXSIZE}{\it x\/}'' compilation flags. Values of this type are used in the Fortran interface to represent arbitrary array indices which can span across the whole address space, and consequently deserve special treatment. In practice, when \scotch\ is compiled on a 32-bit architecture so as to use 64-bit {\tt SCOTCH\_\lbt Num}s, graph indices should be declared as {\tt INTEGER*8}, while error return values should still be declared as plain {\tt INTEGER} (that is, {\tt INTEGER*4}) values. On a 32\_64-bit architecture, irrespective of whether {\tt SCOTCH\_\lbt Num}s are defined as {\tt INTEGER*4} or {\tt INTEGER*8} quantities, the {\tt SCOTCH\_\lbt Idx} type should always be defined as a 64-bit quantity, that is, an {\tt INTEGER*8}, because it stores differences between memory addresses, which are represented by 64-bit values. The above is no longer a problem if \scotch\ is compiled such that {\tt int}s equate 64-bit integers. In this case, there is no need to use any type coercing definition. \\ The \metis\ v3 compatibility library provided by \scotch\ can also run on a 64-bit architecture. Yet, if you are willing to use it this way, you will have to replace all {\tt int}'s that are passed to the \metis\ routines by 64-bit integer {\tt SCOTCH\_\lbt Num} values (even the option configuration values). However, in this case, you will no longer be able to link against the service routines of the genuine \metis\ v3 library, as they are only available as a 32-bit implementation. \subsection{Data formats} All of the data used in the \libscotch\ interface are of integer type {\tt SCOTCH\_Num}. To hide the internals of \scotch\ to callers, all of the data structures are opaque, that is, declared within ``{\tt scotch.h}'' as dummy arrays of double precision values, for the sake of data alignment. Accessor routines, the names of which end in ``{\tt Size}'' and ``{\tt Data}'', allow callers to retrieve information from opaque structures. \\ In all of the following, whenever arrays are defined, passed, and accessed, it is assumed that the first element of these arrays is always labeled as {\tt baseval}, whether {\tt baseval} is set to $0$ (for C-style arrays) or $1$ (for Fortran-style arrays). \scotch\ internally manages with base values and array pointers so as to process these arrays accordingly. \subsubsection{Architecture format} Target architecture structures are completely opaque. The only way to describe an architecture is by means of a graph passed to the {\tt SCOTCH\_\lbt arch\lbt Build} or {\tt SCOTCH\_\lbt arch\lbt Build2} routines. \subsubsection{Graph format} \label{sec-lib-format-graph} Source graphs are described by means of adjacency lists. The description of a graph requires several {\tt SCOTCH\_Num} scalars and arrays, as shown in Figures~\ref{fig-lib-graf-one} and~\ref{fig-lib-graf-two}. They have the following meaning: \begin{itemize} \iteme[{\tt baseval}] Base value for all array indexings. \iteme[{\tt vertnbr}] Number of vertices in graph. \iteme[{\tt edgenbr}] Number of arcs in graph. Since edges are represented by both of their ends, the number of edge data in the graph is twice the number of graph edges. \iteme[{\tt verttab}] Array of start indices in $\mathtt{edgetab}$ of vertex adjacency sub-arrays. \iteme[{\tt vendtab}] Array of after-last indices in {\tt edgetab} of vertex adjacency sub-arrays. For any vertex $i$, with $\mathtt{baseval} \leq i < (\mathtt{baseval} + \mathtt{vertnbr})$, $\mathtt{vendtab}\mbox{\tt [}\mathit{i}\mbox{\tt ]} - \mathtt{verttab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$ is the degree of vertex $i$, and the indices of the neighbors of $i$ are stored in $\mathtt{edgetab}$ from $\mathtt{edgetab}\lbt \mbox{\tt [}\mathtt{verttab}\mbox{\tt [}i\mbox{\tt ]]}$ to $\mathtt{edgetab}\lbt \mbox{\tt [}\mathtt{vendtab}\mbox{\tt [}i\mbox{\tt ]} - 1\mbox{\tt ]}$, inclusive. When all vertex adjacency lists are stored in order in {\tt edgetab}, it is possible to save memory by not allocating the physical memory for {\tt vendtab}. In this case, illustrated in Figure~\ref{fig-lib-graf-one}, {\tt verttab} is of size $\mathtt{vertnbr} + 1$ and $\mathtt{vendtab}$ points to $\mathtt{verttab} + 1$. This case is referred to as the ``compact edge array'' case, such that $\mathtt{verttab}$ is sorted in ascending order, $\mathtt{verttab}\mbox{\tt [}\lbt\mathtt{baseval}\mbox{\tt ]} = \mathtt{baseval}$ and $\mathtt{verttab}\lbt\mbox{\tt [}\mathtt{baseval} + \mathtt{vertnbr}\mbox{\tt ]} = (\mathtt{baseval} + \mathtt{edgenbr})$. \iteme[{\tt velotab}] Optional array, of size {\tt vertnbr}, holding the integer load associated with every vertex. \iteme[{\tt edgetab}] Array, of a size equal at least to $\left(\max_{i}(\mathtt{vendtab}\mbox{\tt [}i\mbox{\tt ]}) - \mathtt{baseval}\right)$, holding the adjacency array of every vertex. \iteme[{\tt edlotab}] Optional array, of a size equal at least to $\left(\max_{i}(\mbox{\tt vendtab[} i \mathtt{]}) - \mathtt{baseval}\right)$, holding the integer load associated with every arc. Matching arcs should always have identical loads. \end{itemize} \begin{figure} \centering\includegraphics[scale=0.47]{s_f_gr1.eps} \caption{Sample graph and its description by \libscotch\ arrays using a compact edge array. Numbers within vertices are vertex indices, bold numbers close to vertices are vertex loads, and numbers close to edges are edge loads. Since the edge array is compact, {\tt verttab} is of size $\mathtt{vertnbr} + 1$ and {\tt vendtab} points to $\mathtt{verttab} + 1$.} \label{fig-lib-graf-one} \end{figure} \begin{figure} \centering\includegraphics[scale=0.47]{s_f_gr2.eps} \caption{Adjacency structure of the sample graph of Figure~\protect\ref{fig-lib-graf-one} with disjoint edge and edge load arrays. Both {\tt verttab} and {\tt vendtab} are of size {\tt vertnbr}. This allows for the handling of dynamic graphs, the structure of which can evolve with time.} \label{fig-lib-graf-two} \end{figure} Dynamic graphs can be handled elegantly by using the {\tt vendtab} array. In order to dynamically manage graphs, one just has to allocate {\tt verttab}, {\tt vendtab} and {\tt edgetab} arrays that are large enough to contain all of the expected new vertex and edge data. Original vertices are labeled starting from {\tt baseval}, leaving free space at the end of the arrays. To remove some vertex $i$, one just has to replace ${\tt verttab}\mathtt{[}i\mbox{\tt ]}$ and ${\tt vendtab}\mathtt{[}i\mathtt{]}$ with the values of {\tt verttab\lbt [vertnbr\lbt -1]} and {\tt vendtab\lbt [vertnbr\lbt -1]}, respectively, and browse the adjacencies of all neighbors of former vertex {\tt vertnbr-1} such that all {\tt (vertnbr-1)} indices are turned into $i$s. Then, {\tt vertnbr} must be decremented, and {\tt SCOTCH\_\lbt graphBuild()} must be called to account for the change of topology. If a graph building routine such as {\tt SCOTCH\_\lbt graph\lbt Load()} or {\tt SCOTCH\_\lbt graph\lbt Build()} had already been called on the {\tt SCOTCH\_\lbt Graph} structure, {\tt SCOTCH\_\lbt graph\lbt Free()} has to be called first in order to free the internal structures associated with the older version of the graph, else these data would be lost, which would result in memory leakage. To add a new vertex, one has to fill {\tt verttab\lbt [vertnbr\lbt -1]} and {\tt vendtab\lbt [vertnbr\lbt -1]} with the starting and end indices of the adjacency sub-array of the new vertex. Then, the adjacencies of its neighbor vertices must also be updated to account for it. If free space had been reserved at the end of each of the neighbors, one just has to increment the ${\tt vendtab}\mbox{\tt [}i\mathtt{]}$ values of every neighbor $i$, and add the index of the new vertex at the end of the adjacency sub-array. If the sub-array cannot be extended, then it has to be copied elsewhere in the edge array, and both ${\tt verttab}\mathtt{[}i\mathtt{]}$ and ${\tt vendtab}\mathtt{[}i\mathtt{]}$ must be updated accordingly. With simple housekeeping of free areas of the edge array, dynamic arrays can be updated with as little data movement as possible. \subsubsection{Mesh format} \label{sec-lib-format-mesh} Since meshes are basically bipartite graphs, source meshes are also described by means of adjacency lists. The description of a mesh requires several {\tt SCOTCH\_Num} scalars and arrays, as shown in Figure~\ref{fig-lib-mesh-one}. They have the following meaning: \begin{itemize} \iteme[{\tt velmbas}] Base value for element indexings. \iteme[{\tt vnodbas}] Base value for node indexings. The base value of the underlying graph, {\tt baseval}, is set as $\min(\mathtt{velmbas}, \mathtt{vnodbas})$. \iteme[{\tt velmnbr}] Number of element vertices in mesh. \iteme[{\tt vnodnbr}] Number of node vertices in mesh. The overall number of vertices in the underlying graph, {\tt vertnbr}, is set as $\mathtt{velmnbr} +\mathtt{vnodnbr}$. \iteme[{\tt edgenbr}] Number of arcs in mesh. Since edges are represented by both of their ends, the number of edge data in the mesh is twice the number of edges. \iteme[{\tt verttab}] Array of start indices in {\tt edgetab} of vertex (that is, both elements and nodes) adjacency sub-arrays. \iteme[{\tt vendtab}] Array of after-last indices in {\tt edgetab} of vertex adjacency sub-arrays. For any element or node vertex $i$, with $\mathtt{baseval} \leq i < (\mathtt{baseval} + \mathtt{vertnbr})$, $\mbox{\tt vendtab[}i\mathtt{]} - \mathtt{verttab[}i\mathtt{]}$ is the degree of vertex $i$, and the indices of the neighbors of $i$ are stored in {\tt edgetab} from {\tt edgetab\lbt [verttab[$i$]]} to {\tt edgetab\lbt [vendtab[$i$]\lbt $- 1$]}, inclusive. When all vertex adjacency lists are stored in order in {\tt edgetab}, it is possible to save memory by not allocating the physical memory for {\tt vendtab}. In this case, illustrated in Figure~\ref{fig-lib-mesh-one}, {\tt verttab} is of size $\mbox{\tt vertnbr} + 1$ and {\tt vendtab} points to $\mathtt{verttab} + 1$. This case is referred to as the ``compact edge array'' case, such that {\tt verttab} is sorted in ascending order, $\mathtt{verttab[}\lbt\mathtt{baseval]} = \mathtt{baseval}$ and $\mathtt{verttab[}\lbt\mathtt{baseval} + \mbox{\tt vertnbr]} = (\mathtt{baseval} + \mathtt{edgenbr})$. \iteme[{\tt velotab}] Array, of size {\tt vertnbr}, holding the integer load associated with each vertex. \end{itemize} \begin{figure} \centering\includegraphics[scale=0.47]{s_f_me1.eps} \caption{Sample mesh and its description by \libscotch\ arrays using a compact edge array. Numbers within vertices are vertex indices. Since the edge array is compact, {\tt verttab} is of size $\mathtt{vertnbr} + 1$ and {\tt vendtab} points to $\mathtt{verttab} + 1$.} \label{fig-lib-mesh-one} \end{figure} As for graphs, it is possible to handle elegantly dynamic meshes by means of the {\tt verttab} and {\tt vendtab} arrays. There is, however, an additional constraint, which is that mesh nodes and elements must be ordered consecutively. The solution to fulfill this constraint in the context of mesh ordering is to keep a set of empty elements (that is, elements which have no node adjacency attached to them) between the element and node arrays. For instance, Figure~\ref{fig-lib-mesh-two} represents a $4$-element mesh with $6$ nodes, and such that $4$ element vertex slots have been reserved for new elements and nodes. These slots are empty elements for which {\tt verttab[i]} equals {\tt vendtab[i]}, irrespective of these values, since they will not lead to any memory access in {\tt edgetab}. \begin{figure} \centering\includegraphics[scale=0.47]{s_f_me2.eps} \caption{Sample mesh and its description by \libscotch\ arrays, with nodes numbered first and elements numbered last. In order to allow for dynamic re-meshing, empty elements (in grey) have been inserted between existing node and element vertices.} \label{fig-lib-mesh-two} \end{figure} Using this layout of vertices, new nodes and elements can be created by growing the element and node sub-arrays into the empty element sub-array, by both of its sides, without having to re-write the whole mesh structure, as illustrated in Figure~\ref{fig-lib-mesh-three}. Empty elements are transparent to the mesh ordering routines, which base their work on node vertices only. Users who want to update the arrays of a mesh that has already been declared using the {\tt SCOTCH\_\lbt mesh\lbo Build} routine must call {\tt SCOTCH\_\lbt mesh\lbo Exit} prior to updating the mesh arrays, and then call {\tt SCOTCH\_\lbt mesh\lbo Build} again after the arrays have been updated, so that the {\tt SCOTCH\_\lbt Mesh} structure remains consistent with the new mesh data. \begin{figure} \centering\includegraphics[scale=0.47]{s_f_me3.eps} \caption{Re-meshing of the mesh of Figure~\protect\ref{fig-lib-mesh-two}. New node vertices have been added at the end of the vertex sub-array, new elements have been added at the beginning of the element sub-array, and vertex base values have been updated accordingly. Node adjacency lists that could not fit in place have been added at the end of the edge array, and some of the freed space has been re-used for new adjacency lists. Element adjacency lists do not require moving in this case, as all of the elements have the name number of nodes.} \label{fig-lib-mesh-three} \end{figure} \subsubsection{Geometry format} \label{sec-lib-format-geom} Geometry data is always associated with a graph or a mesh. It is simply made of a single array of double-precision values which represent the coordinates of the vertices of a graph, or of the node vertices of a mesh, in vertex order. The fields of a geometry structure are the following: \begin{itemize} \iteme[{\tt dimnnbr}] Number of dimensions of the graph or of the mesh, which can be $1$, $2$, or $3$. \iteme[{\tt geomtab}] Array of coordinates. This is an array of double precision values organized as an array of $(x)$, or $(x,y)$, or $(x,y,z)$ tuples, according to $\mathtt{dimnnbr}$. Coordinates that are not used (e.g. the $z$ coordinates for a bidimentional object) are not allocated. Therefore, the $x$ coordinate of some graph vertex $i$ is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * \mathtt{dimnnbr} + \mathtt{baseval}\mbox{\tt ]}$, its $y$ coordinate is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * \mathtt{dimnnbr} + \mathtt{baseval} + 1\mbox{\tt ]}$ if $\mathtt{dimnnbr} \geq 2$, and its $z$ coordinate is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{baseval}) * \mathtt{dimnnbr} + \mathtt{baseval} + 2\mbox{\tt ]}$ if $\mathtt{dimnnbr} = 3$. Whenever the geometry is associated with a mesh, only node vertices are considered, so the $x$ coordinate of some mesh node vertex $i$, with $\mathtt{vnodbas} \leq i$, is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * \mathtt{dimnnbr} + \mathtt{baseval}\mbox{\tt ]}$, its $y$ coordinate is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * \mathtt{dimnnbr} + \mathtt{baseval} + 1\mbox{\tt ]}$ if $\mathtt{dimnnbr} \geq 2$, and its $z$ coordinate is located at $\mathtt{geomtab}\mbox{\tt [}(i - \mathtt{vnodbas}) * \mathtt{dimnnbr} + \mathtt{baseval} + 2\mbox{\tt ]}$ if $\mbox{\tt dimnnbr} = 3$. \end{itemize} \subsubsection{Block ordering format} \label{sec-lib-format-order} Block orderings associated with graphs and meshes are described by means of block and permutation arrays, made of {\tt SCOTCH\_Num}s, as shown in Figure~\ref{fig-lib-ord-block}. In order for all orderings to have the same structure, irrespective of whether they are created from graphs or meshes, all ordering data indices start from {\tt baseval}, even when they refer to a mesh the node vertices of which are labeled from a $\mathtt{vnodbas}$ index such that $\mathtt{vnodbas} > \mathtt{baseval}$. Consequently, row indices are related to vertex indices in memory in the following way: row $i$ is associated with vertex $i$ of the {\tt SCOTCH\_\lbt Graph} structure if the ordering was computed from a graph, and with node vertex $i + (\mbox{\tt vnodbas} - \mathtt{baseval})$ of the {\tt SCOTCH\_\lbt Mesh} structure if the ordering was computed from a mesh. Block orderings are made of the following data: \begin{itemize} \iteme[{\tt permtab}] Array holding the permutation of the reordered matrix. Thus, if $k = \mathtt{permtab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$, then row $i$ of the original matrix is now row $k$ of the reordered matrix, that is, row $i$ is the $k^{\mathrm{th}}$ pivot. \iteme[{\tt peritab}] Inverse permutation of the reordered matrix. Thus, if $i = \mathtt{peritab}\mbox{\tt [}\mathit{k}\mbox{\tt ]}$, then row $k$ of the reordered matrix was row $i$ of the original matrix. \iteme[{\tt cblknbr}] Number of column blocks (that is, supervariables) in the block ordering. \iteme[{\tt rangtab}] Array of ranges for the column blocks. Column block $c$, with $\mathtt{baseval} \leq c < (\mathtt{cblknbr} + \mathtt{baseval})$, contains columns with indices ranging from $\mathtt{rangtab}\mbox{\tt [}\mathit{i}\mbox{\tt ]}$ to $\mathtt{rangtab}\mbox{\tt [}\mathit{i} + 1\mbox{\tt ]}$, exclusive, in the reordered matrix. Indices in $\mathtt{rangtab}$ are based. Therefore, $\mathtt{rangtab}\mbox{\tt [}\mathtt{baseval}\mbox{\tt ]}$ is always equal to $\mathtt{baseval}$, and $\mathtt{rangtab}\mbox{\tt [}\mathtt{cblknbr} + \mathtt{baseval}\mbox{\tt ]}$ is always equal to $\mathtt{vertnbr} + \mathtt{baseval}$ for graphs and to $\mathtt{vnodnbr} + \mathtt{baseval}$ for meshes. In order to avoid memory errors when column blocks are all single columns, the size of {\tt rangtab} must always be one more than the number of columns, that is, $\mathtt{vertnbr} + 1$ for graphs and $\mathtt{vnodnbr} + 1$ for meshes. \iteme[{\tt treetab}] Array of ascendants of permuted column blocks in the separators tree. {\tt treetab[i]} is the index of the father of column block $i$ in the separators tree, or $-1$ if column block $i$ is the root of the separators tree. Whenever separators or leaves of the separators tree are split into subblocks, as the block splitting, minimum fill or minimum degree methods do, all subblocks of the same level are linked to the column block of higher index belonging to the closest separator ancestor. Indices in {\tt treetab} are based, in the same way as for the other blocking structures. See Figure~\ref{fig-lib-ord-block} for a complete example. \end{itemize} \begin{figure} \centering\includegraphics[scale=0.47]{s_f_orb.eps} \caption{Arrays resulting from the ordering by complete nested dissection of a 4 by 3 grid based from $1$. Leftmost grid is the original grid, and righmost grid is the reordered grid, with separators shown and column block indices written in bold.} % using strategy n{sep=hf{bal=0},ole=s,ose=s} \label{fig-lib-ord-block} \end{figure} \subsection{Strategy strings} The behavior of the mapping and block ordering routines of the \libscotch\ library is parametrized by means of strategy strings, which describe how and when given partitioning or ordering methods should be applied to graphs and subgraphs, or to meshes and submeshes. \subsubsection{Using default strategy strings} \label{sec-lib-format-strat-default} While strategy strings can be built by hand, according to the syntax given in the next sections, users who do not have specific needs can take advantage of default strategies already implemented in the \libscotch, which will yield very good results in most cases. By doing so, they will spare themselves the hassle of updating their strategies to comply to subsequent syntactic changes, and they will benefit from the availability of new partitioning or ordering methods as soon as they are released. The simplest way to use default strategy strings is to avoid specifying any. By initializing a strategy object, by means of the {\tt SCOTCH\_\lbt stratInit} routine, and by using the initialized strategy object as is, without further parametrization, this object will be filled with a default strategy when passing it as a parameter to the next partitioning or ordering routine to be called. On return, the strategy object will contain a fully specified strategy, tailored for the type of operation which has been requested. Consequently, a fresh strategy object that was used to partition a graph cannot be used afterward as a default strategy when calling an ordering routine, for instance, as partitioning and ordering strategies are incompatible. The \libscotch\ also provides helper routines which allow users to express their preferences on the kind of strategy that they need. These helper routines, which are of the form {\tt SCOTCH\_\lbt strat\lbt *\lbt Build} (see Section~\ref{sec-lib-func-stratgraphclusterbuild} and after), tune default strategy strings according to parameters provided by the user, such as the requested number of parts (used as a hint to select the most efficient partitioning routines), the desired maximum load imbalance ratio, and a set of preference flags. While some of these flags are antagonistic, most of them can be combined, by means of addition or ``binary or'' operators. These flags are the following. They are grouped by application class. \paragraph{Global flags} \begin{itemize} \iteme[{\tt SCOTCH\_STRATDEFAULT}] Default behavior. No flags are set. \iteme[{\tt SCOTCH\_STRATBALANCE}] Enforce load balance as much as possible. \iteme[{\tt SCOTCH\_STRATQUALITY}] Privilege quality over speed. \iteme[{\tt SCOTCH\_STRATSAFETY}] Do not use methods that can lead to the occurrence of problematic events, such as floating point exceptions, which could not be properly handled by the calling software. \iteme[{\tt SCOTCH\_STRATSPEED}] Privilege speed over quality. \end{itemize} \paragraph{Mapping and partitioning flags} \begin{itemize} \iteme[{\tt SCOTCH\_STRATRECURSIVE}] Use only recursive bipartitioning methods, and not direct k-way methods. When this flag is not set, any combination of methods can be used, so as to achieve the best result according to other user preferences. \iteme[{\tt SCOTCH\_STRATREMAP}] Use the strategy for remapping an existing partition. \end{itemize} \paragraph{Ordering flags} \begin{itemize} \iteme[{\tt SCOTCH\_STRATDISCONNECTED}] Find and handle independently disconnected components. \iteme[{\tt SCOTCH\_STRATLEVELMAX}] Create at most the prescribed levels of nested dissection separators. \iteme[{\tt SCOTCH\_STRATLEVELMIN}] Create at least the prescribed levels of nested dissection separators. When used in conjunction with {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX}, the exact number of nested dissection levels will be performed, unless the graph to order is too small. \iteme[{\tt SCOTCH\_STRATLEAFSIMPLE}] Order nested dissection leaves as cheaply as possible. \iteme[{\tt SCOTCH\_STRATSEPASIMPLE}] Order nested dissection separators as cheaply as possible. \end{itemize} \subsubsection{Mapping strategy strings} \label{sec-lib-format-map} At the time being, mapping methods only apply to graphs, as there is not yet a mesh mapping tool in the \scotch\ package. Mapping strategies are made of methods, with optional parameters enclosed between curly braces, and separated by commas, in the form of {\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}\enspace. The currently available mapping methods are the following. \begin{itemize} \iteme[{\tt b}] Band method. This method builds a band graph of given width around the current frontier of the k-way partition to which it is applied, and calls a graph mapping strategy to refine the equivalent k-way partition of the band graph. Then, the refined frontier of the band graph is projected back to the current graph. This method was initially presented in~\cite{chpe06a} in the case of bipartitioning. The parameters of the band bipartitioning method are listed below. \begin{itemize} \iteme[{\tt bnd=}{\it strat}] Set the graph mapping strategy to be used on the band graph. \iteme[{\tt org=}{\it strat}] Set the fallback graph mapping strategy to be used on the original graph if the band graph strategy could not be used. The three cases which require the use of this fallback strategy are the following. First, if the separator of the original graph is empty, which makes it impossible to compute a band graph. Second, if any part of the band graph to be built is of the same size as the one of the original graph. Third, if the application of the {\tt bnd} bipartitioning method to the band graph leads to a situation where any two anchor vertices are placed in the same part. \iteme[{\tt width=}{\it val}] Set the width of the band graph. All graph vertices that are at a distance less than or equal to {\it val} from any frontier vertex are kept in the band graph. \end{itemize} \iteme[{\tt d}] Diffusion method. This method, presented in~\cite{pell07b} in the case of bipartitioning, flows $k$ kinds of antagonistic liquids from $k$ source vertices, and sets the new frontier as the limit between vertices which contain different kinds of liquids. Because selecting the source vertices is essential to the obtainment of useful results, this method has been hard-coded so that the $k$ source vertices are the $k$ vertices of highest indices, since in the band method these are the anchor vertices which represent all of the removed vertices of each part. Therefore, this method must be used on band graphs only, or on specifically crafted graphs. Applying it to any other graphs is very likely to lead to extremely poor results. The physical analogy of this method loses weight when it is applied to target architectures that are not complete graphs. The parameters of the diffusion mapping method are listed below. \begin{itemize} \iteme[{\tt dif=}{\it rat}] Fraction of liquid which is diffused to neighbor vertices at each pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} parameters must be equal to $1$, but in order to speed-up the diffusion process, other combinations of higher sum can be tried. In this case, the number of passes must be kept low, to avoid numerical overflows which would make the results useless. \iteme[{\tt pass=}{\it nbr}] Set the number of diffusion sweeps performed by the algorithm. This number depends on the width of the band graph to which the diffusion method is applied. Useful values range from $30$ to $500$ according to chosen {\tt dif} and {\tt rem} coefficients. \iteme[{\tt rem=}{\it rat}] Fraction of liquid which remains on vertices at each pass. See above. \end{itemize} \iteme[{\tt f}] $k$-way Fiduccia-Mattheyses method. The parameters of the Fiduccia-Mattheyses method are listed below. \begin{itemize} \iteme[{\tt bal=}{\it rat}] Set the maximum weight imbalance ratio to the given fraction of the subgraph vertex weight. Common values are around $0.01$, that is, one percent. \iteme[{\tt move=}{\it nbr}] Maximum number of hill-climbing moves that can be performed before a pass ends. During each of its passes, the Fiduccia-Mattheyses algorithm repeatedly swaps vertices between parts so as to minimize the cost function. A pass completes either when all of the vertices have been moved once, or if too many swaps that do not decrease the value of the cost function have been performed. Setting this value to zero turns the Fiduccia-Mattheyses algorithm into a gradient-like method, which may be used to quickly refine partitions during the uncoarsening phase of the multilevel method. \iteme[{\tt pass=}{\it nbr}] Set the maximum number of optimization passes performed by the algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass has not yielded any improvement of the cost function, or when the maximum number of passes has been reached. Value $-1$ stands for an infinite number of passes, that is, as many as needed by the algorithm to converge. \end{itemize} \iteme[{\tt m}] Multilevel method. The parameters of the multilevel method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the mappings obtained at ascending levels of the uncoarsening phase by projection of the mappings computed for coarser graphs. This strategy is not applied to the coarsest graph, for which only the {\tt low} strategy is used. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the mapping of the coarsest graph, at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph has fewer vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold under which graphs are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph would have fewer vertices than the minimum number of vertices allowed. When the target architecture is a variable-sized architecture, coarsening stops when the coarsened graph would have less than \mbox{\it nbr} vertices. When the target architecture is a regular, fixed-size, architecture, coarsening stops when each subdomain would have less than \mbox{\it nbr} vertices, that is, when the size of the coarsened graph would have less than $\mbox{\it nbr}\times\mathtt{domnnbr}$ vertices, where $\mathtt{domnnbr}$ is the number of vertices in the target architecture. \end{itemize} \iteme[{\tt r}] Dual Recursive Bipartitioning mapping algorithm, as defined in section~\ref{sec-algo-drb}. The parameters of the DRB mapping method are listed below. \begin{itemize} \iteme[{\tt job=}{\it tie}] The {\it tie\/} flag defines how new jobs are stored in job pools. \begin{itemize} \iteme[{\tt t}] Tie job pools together. Subjobs are stored in same pool as their parent job. This is the default behavior, as it proves the most efficient in practice. \iteme[{\tt u}] Untie job pools. Subjobs are stored in the next job pool to be processed. \end{itemize} \iteme[{\tt map=}{\it tie}] The {\it tie\/} flag defines how results of bipartitioning jobs are propagated to jobs still in pools. \begin{itemize} \iteme[{\tt t}] Tie both mapping tables together. Results are immediately available to jobs in the same job pool. This is the default behavior. \iteme[{\tt u}] Untie mapping tables. Results are only available to jobs of next pool to be processed. \end{itemize} \iteme[{\tt poli=}{\it policy}] Select jobs according to policy {\it policy}. Job selection policies define how bipartitioning jobs are ordered within the currently active job pool. Valid policy flags are \begin{itemize} \iteme[{\tt L}] Most neighbors of higher level. \iteme[{\tt l}] Highest level. \iteme[{\tt r}] Random. \iteme[{\tt S}] Most neighbors of smaller size. This is the default behavior. \iteme[{\tt s}] Biggest size. \end{itemize} \iteme[{\tt sep=}{\it strat}] Apply bipartitioning strategy {\it strat\/} to each bipartitioning job. A bipartitioning strategy is made of one or several bipartitioning methods, which can be combined by means of strategy operators. Graph bipartitioning strategies are described below. \end{itemize} \iteme[{\tt x}] Exactifier method, as defined in Section~\ref{sec-algo-map-exact}. This greedy algorithm refines the current mapping so as to reduce load imbalance as much as possible. Since this method does not consider communication minimization, its use should be restricted to cases where achieving load balance is critical and where recursive bipartitioning may fail to achieve it, because of very irregular vertex loads. \end{itemize} \subsubsection{Graph bipartitioning strategy strings} \label{sec-lib-format-bipart} A graph bipartitioning strategy is made of one or several graph bipartitioning methods, which can be combined by means of strategy operators. Strategy operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it strat1\/}{\tt |}{\it strat2}] Selection operator. The result of the selection is the best bipartition of the two that are obtained by the separate application of {\it strat1\/} and {\it strat2\/} to the current bipartition. \iteme[{\it strat1$\:$}{\it strat2}] Combination operator. Strategy {\it strat2\/} is applied to the bipartition resulting from the application of strategy {\it strat1\/} to the current bipartition. Typically, the first method used should compute an initial bipartition from scratch, and every following method should use the result of the previous one at its starting point. \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single bipartitioning method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current active graph, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a graph variable, {\it val\/} is either a graph variable or a constant of the type of variable {\it var\/}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The graph variables are listed below, along with their types. \begin{itemize} \iteme[{\tt deg}] The average degree of the current graph. Float. \iteme[{\tt edge}] The number of arcs (which is twice the number of edges) of the current graph. Integer. \iteme[{\tt load}] The overall vertex load (weight) of the current graph. Integer. \iteme[{\tt load0}] The vertex load of the first subset of the current bipartition of the current graph. Integer. \iteme[{\tt vert}] The number of vertices of the current graph. Integer. \end{itemize} \end{itemize} \iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] Bipartitioning method. For bipartitioning methods that can be parametrized, parameter settings may be provided after the method name. Parameters must be separated by commas, and the whole list be enclosed between curly braces. \end{itemize} The currently available graph bipartitioning methods are the following. \begin{itemize} \iteme[{\tt b}] Band method. This method builds a band graph of given width around the current frontier of the graph to which it is applied, and calls a graph bipartitioning strategy to refine the equivalent bipartition of the band graph. Then, the refined frontier of the band graph is projected back to the current graph. This method, presented in~\cite{chpe06a}, was created to reduce the cost of vertex separator refinement algorithms in a multilevel context, but it improves partition quality too. The same behavior is observed for graph bipartitioning. The parameters of the band bipartitioning method are listed below. \begin{itemize} \iteme[{\tt bnd=}{\it strat}] Set the graph bipartitioning strategy to be used on the band graph. \iteme[{\tt org=}{\it strat}] Set the fallback graph bipartitioning strategy to be used on the original graph if the band graph strategy could not be used. The three cases which require the use of this fallback strategy are the following. First, if the separator of the original graph is empty, which makes it impossible to compute a band graph. Second, if any part of the band graph to be built is of the same size as the one of the original graph. Third, if the application of the {\tt bnd} bipartitioning method to the band graph leads to a situation where both anchor vertices are placed in the same part. \iteme[{\tt width=}{\it val}] Set the width of the band graph. All graph vertices that are at a distance less than or equal to {\it val} from any frontier vertex are kept in the band graph. \end{itemize} \iteme[{\tt d}] Diffusion method. This method, presented in~\cite{pell07b}, flows two kinds of antagonistic liquids, scotch and anti-scotch, from two source vertices, and sets the new frontier as the limit between vertices which contain scotch and the ones which contain anti-scotch. Because selecting the source vertices is essential to the obtainment of useful results, this method has been hard-coded so that the two source vertices are the two vertices of highest indices, since in the band method these are the anchor vertices which represent all of the removed vertices of each part. Therefore, this method must be used on band graphs only, or on specifically crafted graphs. Applying it to any other graphs is very likely to lead to extremely poor results. The parameters of the diffusion bipartitioning method are listed below. \begin{itemize} \iteme[{\tt dif=}{\it rat}] Fraction of liquid which is diffused to neighbor vertices at each pass. To achieve convergence, the sum of the {\tt dif} and {\tt rem} parameters must be equal to $1$, but in order to speed-up the diffusion process, other combinations of higher sum can be tried. In this case, the number of passes must be kept low, to avoid numerical overflows which would make the results useless. \iteme[{\tt pass=}{\it nbr}] Set the number of diffusion sweeps performed by the algorithm. This number depends on the width of the band graph to which the diffusion method is applied. Useful values range from $30$ to $500$ according to chosen {\tt dif} and {\tt rem} coefficients. \iteme[{\tt rem=}{\it rat}] Fraction of liquid which remains on vertices at each pass. See above. \end{itemize} \iteme[{\tt f}] Fiduccia-Mattheyses method. The parameters of the Fiduccia-Mattheyses method are listed below. \begin{itemize} \iteme[{\tt bal=}{\it rat}] Set the maximum weight imbalance ratio to the given fraction of the subgraph vertex weight. Common values are around $0.01$, that is, one percent. \iteme[{\tt move=}{\it nbr}] Maximum number of hill-climbing moves that can be performed before a pass ends. During each of its passes, the Fiduccia-Mattheyses algorithm repeatedly swaps vertices between the two parts so as to minimize the cost function. A pass completes either when all of the vertices have been moved once, or if too many swaps that do not decrease the value of the cost function have been performed. Setting this value to zero turns the Fiduccia-Mattheyses algorithm into a gradient-like method, which may be used to quickly refine partitions during the uncoarsening phase of the multilevel method. \iteme[{\tt pass=}{\it nbr}] Set the maximum number of optimization passes performed by the algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass has not yielded any improvement of the cost function, or when the maximum number of passes has been reached. Value $-1$ stands for an infinite number of passes, that is, as many as needed by the algorithm to converge. \end{itemize} \iteme[{\tt g}] Gibbs-Poole-Stockmeyer method. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of sweeps performed by the algorithm. \end{itemize} \iteme[{\tt h}] Greedy-graph-growing method. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of runs performed by the algorithm. \end{itemize} \iteme[{\tt m}] Multilevel method. The parameters of the multilevel method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the partitions obtained at ascending levels of the uncoarsening phase by projection of the bipartitions computed for coarser graphs. This strategy is not applied to the coarsest graph, for which only the {\tt low} strategy is used. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the partition of the coarsest graph, at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph has fewer vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold minimum graph size under which graphs are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the coarsened graph would have fewer vertices than the minimum number of vertices allowed. \end{itemize} \iteme[{\tt x}] Exactifying method. \iteme[{\tt z}] Zero method. This method moves all of the vertices to the first part. Its main use is to stop the bipartitioning process, if some condition is true, when mapping onto variable-sized architectures (see section~\ref{sec-algo-variable}). \end{itemize} \subsubsection{Vertex partitioning strategy strings} \label{sec-lib-format-part-ovl} Vertex partitioning is a special form of graph partitioning, in which graphs are partitioned into a prescribed number of parts by means of vertex separators rather than of edge separators like in Section~\ref{sec-lib-format-map}. The load balance criterion also differs from common practice: the load to be balanced across all parts comprises not only the load of the vertices which belong to the part, but also the load of all the separator vertices which are their immediate neighbors. Consequently, the load of every separator vertex is accounted for several times, in each of the parts it separates. Vertex partitioning strategies are made of methods, with optional parameters enclosed between curly braces, and separated by commas, in the form of {\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}\enspace. The currently available mapping methods are the following. \begin{itemize} \iteme[{\tt f}] Fiduccia-Mattheyses method. The parameters of the Fiduccia-Mattheyses method are listed below. \begin{itemize} \iteme[{\tt bal=}{\it rat}] Set the maximum weight imbalance ratio to the given fraction of the subgraph vertex weight. Common values are around $0.01$, that is, one percent. \iteme[{\tt move=}{\it nbr}] Maximum number of hill-climbing moves that can be performed before a pass ends. During each of its passes, the Fiduccia-Mattheyses algorithm repeatedly moves vertices between parts so as to minimize the cost function. A pass completes either when all of the vertices have been moved once, or if too many swaps that do not decrease the value of the cost function have been performed. Setting this value to zero turns the Fiduccia-Mattheyses algorithm into a gradient-like method, which may be used to quickly refine partitions during the uncoarsening phase of the multilevel method. \iteme[{\tt pass=}{\it nbr}] Set the maximum number of optimization passes performed by the algorithm. The Fiduccia-Mattheyses algorithm stops as soon as a pass has not yielded any improvement of the cost function, or when the maximum number of passes has been reached. Value $-1$ stands for an infinite number of passes, that is, as many as needed by the algorithm to converge. \end{itemize} \iteme[{\tt g}] Gibbs-Poole-Stockmeyer method. This is a k-way version of the original algorithm, in which parts are grown one after the other. Consequently, depending on graph topology, this method is likely to yield disconnected parts, with higher probability as the number of part increases. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of sweeps performed by the algorithm. \end{itemize} \iteme[{\tt h}] Greedy-graph-growing method. This is a $k$-way version of the original algorithm, in which parts are grown one after the other. Consequently, depending on graph topology, this method is likely to yield disconnected parts, with higher probability as the number of part increases. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of runs performed by the algorithm. \end{itemize} \iteme[{\tt m}] Multilevel method. The parameters of the multilevel method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the partitions obtained at ascending levels of the uncoarsening phase by projection of the bipartitions computed for coarser graphs. This strategy is not applied to the coarsest graph, for which only the {\tt low} strategy is used. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the partition of the coarsest graph, at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph has fewer vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold minimum number of vertices per part under which graphs are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph has fewer vertices than the minimum number of vertices allowed. \end{itemize} \iteme[{\tt r}] Recursive bipartitioning algorithm. The parameters of the recursive bipartitioning method are listed below. \begin{itemize} \iteme[{\tt sep=}{\it strat}] Apply vertex (node) separation strategy {\it strat\/} to each bipartitioning job. A node separation strategy is made of one or several node separation methods, which can be combined by means of strategy operators. Node separation strategies are described in Section~\ref{sec-lib-format-nsep}. \end{itemize} \end{itemize} \subsubsection{Ordering strategy strings} \label{sec-lib-format-ord} Ordering strategies are available both for graphs and for meshes. An ordering strategy is made of one or several ordering methods, which can be combined by means of strategy operators. The strategy operators that can be used in ordering strategies are listed below, by increasing precedence. \begin{itemize} \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single ordering method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current node of the separators tree, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a node variable, {\it val\/} is either a node variable or a constant of the type of variable {\it var}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt edge}] The number of vertices of the current subgraph. Integer. \iteme[{\tt levl}] The level of the subgraph in the separators tree, starting from zero for the initial graph at the root of the tree. Integer. \iteme[{\tt load}] The overall vertex load (weight) of the current subgraph. Integer. \iteme[{\tt mdeg}] The maximum degree of the current subgraph. Integer. \iteme[{\tt vert}] The number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} \iteme[{\it method\/}{[{\tt \{}{\it parameters\/}{\tt \}}]}] Graph or mesh ordering method. Available ordering methods are listed below. \end{itemize} The currently available ordering methods are the following. \begin{itemize} \iteme[{\tt b}] Blocking method. This method does not perform ordering by itself, but is used as post-processing to cut into blocks of smaller sizes the separators or large blocks produced by other ordering methods. This is not useful in the context of direct solving methods, because the off-diagonal blocks created by the splitting of large diagonal blocks are likely to be filled at factoring time. However, in the context of incomplete solving methods such as ILU(k)~\cite{heperaro04a}, it can lead to a significant reduction of the required memory space and time, because it helps carving large triangular blocks. The parameters of the blocking method are described below. \begin{itemize} \iteme[{\tt cmin=}{\it size}] Set the minimum size of the resulting subblocks, in number of columns. Blocks larger than twice this minimum size are cut into sub-blocks of equal sizes (within one), having a number of columns comprised between {\it size} and $2${\it size}. \\ The definition of {\it size} depends on the size of the graph to order. Large graphs cannot afford very small values, because the number of blocks becomes much too large and limits the acceleration of BLAS~3 routines, while large values do not help reducing enough the complexity of ILU(k) solving. \iteme[{\tt strat=}{\it strat}] Ordering strategy to be performed. After the ordering strategy is applied, the resulting separators tree is traversed and all of the column blocks that are larger than $2${\it size} are split into smaller column blocks, without changing the ordering that has been computed. \end{itemize} \iteme[{\tt c}] Compression method~\cite{ashc95}. The parameters of the compression method are listed below. \begin{itemize} \iteme[{\tt rat=}{\it rat}] Set the compression ratio over which graphs and meshes will not be compressed. Useful values range between $0.7$ and $0.8$. \iteme[{\tt cpr=}{\it strat}] Ordering strategy to use on the compressed graph or mesh if its size is below the compression ratio times the size of the original graph or mesh. \iteme[{\tt unc=}{\it strat}] Ordering strategy to use on the original graph or mesh if the size of the compressed graph or mesh were above the compression ratio times the size of the original graph or mesh. \end{itemize} \iteme[{\tt d}] Block Halo Approximate Minimum Degree method~\cite{peroam99}. The parameters of the Halo Approximate Minimum Degree method are listed below. The Block Halo Approximate Minimum Fill method, described below, is more efficient and should be preferred. \begin{itemize} \iteme[{\tt cmin=}{\it size}] Minimum number of columns per column block. All column blocks of width smaller than {\it size\/} are amalgamated to their parent column block in the elimination tree, provided that it does not violate the {\tt cmax} constraint. \iteme[{\tt cmax=}{\it size}] Maximum number of column blocks over which some column block will not amalgamate one of its descendents in the elimination tree. This parameter is mainly designed to provide an upper bound for block size in the context of BLAS3 computations~; else, a huge value should be provided. \iteme[{\tt frat=}{\it rat}] Fill-in ratio over which some column block will not amalgamate one of its descendents in the elimination tree. Typical values range from $0.05$ to $0.10$. \end{itemize} \iteme[{\tt f}] Block Halo Approximate Minimum Fill method. The parameters of the Halo Approximate Minimum Fill method are listed below. \begin{itemize} \iteme[{\tt cmin=}{\it size}] Minimum number of columns per column block. All column blocks of width smaller than {\it size\/} are amalgamated to their parent column block in the elimination tree, provided that it does not violate the {\tt cmax} constraint. \iteme[{\tt cmax=}{\it size}] Maximum number of column blocks over which some column block will not amalgamate one of its descendents in the elimination tree. This parameter is mainly designed to provide an upper bound for block size in the context of BLAS3 computations~; else, a huge value should be provided. \iteme[{\tt frat=}{\it rat}] Fill-in ratio over which some column block will not amalgamate one of its descendents in the elimination tree. Typical values range from $0.05$ to $0.10$. \end{itemize} \iteme[{\tt g}] Gibbs-Poole-Stockmeyer method. This method is used on separators to reduce the number and extent of extra-diagonal blocks. If the number of extra-diagonal blocks is not relevant, the {\tt s} method should be preferred. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of sweeps performed by the algorithm. \end{itemize} \iteme[{\tt n}] Nested dissection method. The parameters of the nested dissection method are given below. \begin{itemize} \iteme[{\tt ole=}{\it strat}] Set the ordering strategy that is used on every leaf of the separators tree if the node separation strategy {\tt sep} has failed to separate it further. \iteme[{\tt ose=}{\it strat}] Set the ordering strategy that is used on every separator of the separators tree. \iteme[{\tt sep=}{\it strat}] Set the node separation strategy that is used on every leaf of the separators tree to make it grow. Node separation strategies are described below, in section~\ref{sec-lib-format-nsep}. \end{itemize} \iteme[{\tt o}] Disconnected subgraph detection method. This method is used at the global level to search for connected components, and run independently the provided graph ordering strategy on each of them. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Ordering strategy to apply to each of the connected components. \end{itemize} \iteme[{\tt s}] Simple method. Vertices are ordered in their natural order. This method is fast, and should be used to order separators if the number of extra-diagonal blocks is not relevant~; else, the {\tt g} method should be preferred. \iteme[{\tt v}] Mesh-to-graph method. Available only for mesh ordering strategies. From the mesh to which this method applies is derived a graph, such that a graph vertex is associated with every node of the mesh, and a clique is created between all vertices which represent nodes that belong to the same element. A graph ordering strategy is then applied to the derived graph, and this ordering is projected back to the nodes of the mesh. This method is here for evaluation purposes only, as mesh ordering methods are generally more efficient than their graph ordering counterpart. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Graph ordering strategy to apply to the associated graph. \end{itemize} \end{itemize} \subsubsection{Node separation strategy strings} \label{sec-lib-format-nsep} A node separation strategy is made of one or several node separation methods, which can be combined by means of strategy operators. Strategy operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it strat1\/}{\tt |}{\it strat2}] Selection operator. The result of the selection is the best vertex separator of the two that are obtained by the distinct application of {\it strat1\/} and {\it strat2\/} to the current separator. \iteme[{\it strat1$\:$}{\it strat2}] Combination operator. Strategy {\it strat2\/} is applied to the vertex separator resulting from the application of strategy {\it strat1\/} to the current separator. Typically, the first method used should compute an initial separation from scratch, and every following method should use the result of the previous one as a starting point. \iteme[{\tt (}{\it strat\/}{\tt )}] Grouping operator. The strategy enclosed within the parentheses is treated as a single separation method. \iteme[{\tt /}{\it cond\/}{\tt ?}{\it strat1\/}{[{\tt :}{\it strat2}]{\tt ;}}] Condition operator. According to the result of the evaluation of condition {\it cond}, either {\it strat1\/} or {\it strat2\/} (if it is present) is applied. The condition applies to the characteristics of the current subgraph, and can be built from logical and relational operators. Conditional operators are listed below, by increasing precedence. \begin{itemize} \iteme[{\it cond1\/}{\tt |}{\it cond2}] Logical or operator. The result of the condition is true if {\it cond1\/} or {\it cond2\/} are true, or both. \iteme[{\it cond1\/}{\tt \&}{\it cond2}] Logical and operator. The result of the condition is true only if both {\it cond1\/} and {\it cond2\/} are true. \iteme[{\tt !}{\it cond}] Logical not operator. The result of the condition is true only if {\it cond\/} is false. \iteme[{\it var} {\it relop} {\it val}] Relational operator, where {\it var\/} is a graph or node variable, {\it val\/} is either a graph or node variable or a constant of the type of variable {\it var\/}, and {\it relop\/} is one of '{\tt\verb+<+}', '{\tt\verb+=+}', and '{\tt\verb+>+}'. The graph and node variables are listed below, along with their types. \begin{itemize} \iteme[{\tt levl}] The level of the subgraph in the separators tree, starting from zero at the root of the tree. Integer. \iteme[{\tt proc}] The number of processors on which the current subgraph is distributed at this level of the separators tree. This variable is available only when calling from routines of the \ptscotch\ parallel library. Integer. \iteme[{\tt rank}] The rank of the current processor among the group of processors on which the current subgraph is distributed at this level of the separators tree. This variable is available only when calling from routines of the \ptscotch\ parallel library, for instance to decide which node separation strategy should be used on which processor in a multi-sequential approach. Integer. \iteme[{\tt vert}] The number of vertices of the current subgraph. Integer. \end{itemize} \end{itemize} \end{itemize} The currently available vertex separation methods are the following. \begin{itemize} \iteme[{\tt b}] Band method. Available only for graph separation strategies. This method builds a band graph of given width around the current separator of the graph to which it is applied, and calls a graph separation strategy to refine the equivalent separator of the band graph. Then, the refined separator of the band graph is projected back to the current graph. This method, presented in~\cite{chpe06a}, was created to reduce the cost of separator refinement algorithms in a multilevel context, but it improves partition quality too. The parameters of the band separation method are listed below. \begin{itemize} \iteme[{\tt bnd=}{\it strat}] Set the vertex separation strategy to be used on the band graph. \iteme[{\tt org=}{\it strat}] Set the fallback vertex separation strategy to be used on the original graph if the band graph strategy could not be used. The three cases which require the use of this fallback strategy are the following. First, if the separator of the original graph is empty, which makes it impossible to compute a band graph. Second, if any part of the band graph to be built is of the same size as the one of the original graph. Third, if the application of the {\tt bnd} vertex separation method to the band graph leads to a situation where both anchor vertices are placed in the same part. \iteme[{\tt width=}{\it val}] Set the width of the band graph. All graph vertices that are at a distance less than or equal to {\it val} from any separator vertex are kept in the band graph. \end{itemize} \iteme[{\tt e}] Edge-separation method. Available only for graph separation strategies. This method builds vertex separators from edge separators, by the method proposed by Pothen and Fang~\cite{pofa90}, which uses a variant of the Hopcroft and Karp algorithm due to Duff~\cite{duff81}. This method is expensive and most often yields poorer results than direct vertex-oriented methods such as the vertex vertex Greedy-graph-growing and the vertex Fiduccia-Mattheyses algorithms. The parameters of the edge-separation method are listed below. \begin{itemize} \iteme[{\tt bal=}{\it val}] Set the load imbalance tolerance to {\it val}, which is a floating-point ratio expressed with respect to the ideal load of the partitions. \iteme[{\tt strat=}{\it strat}] Set the graph bipartitioning strategy that is used to compute the edge bipartition. The syntax of bipartitioning strategy strings is defined within section~\ref{sec-lib-format-bipart}, at page~\pageref{sec-lib-format-bipart}. \iteme[{\tt width=}{\it type}] Select the width of the vertex separators built from edge separators. When {\it type\/} is set to {\tt f}, fat vertex separators are built, that hold all of the ends of the edges of the edge cut. When it is set to {\tt t}, a thin vertex separator is built by removing as many vertices as possible from the fat separator. \end{itemize} \iteme[{\tt f}] Vertex Fiduccia-Mattheyses method. The parameters of the vertex Fiduccia-Mattheyses method are listed below. \begin{itemize} \iteme[{\tt bal=}{\it rat}] Set the maximum weight imbalance ratio to the given fraction of the weight of all node vertices. Common values are around $0.01$, that is, one percent. \iteme[{\tt move=}{\it nbr}] Maximum number of hill-climbing moves that can be performed before a pass ends. During each of its passes, the vertex Fiduccia-Mattheyses algorithm repeatedly moves vertices from the separator to any of the two parts, so as to minimize the size of the separator. A pass completes either when all of the vertices have been moved once, or if too many swaps that do not decrease the size of the separator have been performed. \iteme[{\tt pass=}{\it nbr}] Set the maximum number of optimization passes performed by the algorithm. The vertex Fiduccia-Mattheyses algorithm stops as soon as a pass has not yielded any reduction of the size of the separator, or when the maximum number of passes has been reached. Value -1 stands for an infinite number of passes, that is, as many as needed by the algorithm to converge. \end{itemize} \iteme[{\tt g}] Gibbs-Poole-Stockmeyer method. Available only for graph separation strategies. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of sweeps performed by the algorithm. \end{itemize} \iteme[{\tt h}] Vertex greedy-graph-growing method. This method has only one parameter. \begin{itemize} \iteme[{\tt pass=}{\it nbr}] Set the number of runs performed by the algorithm. \end{itemize} \iteme[{\tt m}] Vertex multilevel method. The parameters of the vertex multilevel method are listed below. \begin{itemize} \iteme[{\tt asc=}{\it strat}] Set the strategy that is used to refine the vertex separators obtained at ascending levels of the uncoarsening phase by projection of the separators computed for coarser graphs or meshes. This strategy is not applied to the coarsest graph or mesh, for which only the {\tt low} strategy is used. \iteme[{\tt low=}{\it strat}] Set the strategy that is used to compute the vertex separator of the coarsest graph or mesh, at the lowest level of the coarsening process. \iteme[{\tt rat=}{\it rat}] Set the threshold maximum coarsening ratio over which graphs or meshes are no longer coarsened. The ratio of any given coarsening cannot be less that $0.5$ (case of a perfect matching), and cannot be greater than $1.0$. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph or mesh has fewer node vertices than the minimum number of vertices allowed. \iteme[{\tt vert=}{\it nbr}] Set the threshold minimum size under which graphs or meshes are no longer coarsened. Coarsening stops when either the coarsening ratio is above the maximum coarsening ratio, or the graph or mesh has fewer node vertices than the minimum number of vertices allowed. \end{itemize} \iteme[{\tt t}] Thinner method. Available only for graph separation strategies. This method quickly eliminates all useless vertices of the current separator. It searches the separator for vertices that have no neighbors in one of the two parts, and moves these vertices to the part they are connected to. This method may be used to refine separators during the uncoarsening phase of the multilevel method, and is faster than a vertex Fiduccia-Mattheyses algorithm with {\tt \{move\lbt =\lbt 0\}}. \iteme[{\tt v}] Mesh-to-graph method. Available only for mesh separation strategies. From the mesh to which this method applies is derived a graph, such that a graph vertex is associated with every node of the mesh, and a clique is created between all vertices which represent nodes that belong to the same element. A graph separation strategy is then applied to the derived graph, and the separator is projected back to the nodes of the mesh. This method is here for evaluation purposes only, as mesh separation methods are generally more efficient than their graph separation counterpart. \begin{itemize} \iteme[{\tt strat=}{\it strat}] Graph separation strategy to apply to the associated graph. \end{itemize} \iteme[{\tt w}] Graph separator viewer. Available only for graph separation strategies. Every call to this method results in the creation, in the current subdirectory, of partial mapping files called ``{\tt vgraph\lbt separate\lbt vw\_\lbt output\_\lbt {\it nnnnnnnn}.map}'', where ``{\it nnnnnnnn}'' are increasing decimal numbers, which contain the current state of the two parts and the separator. These mapping files can be used as input by the {\tt gout} program to produce displays of the evolving shape of the current separator and parts. This is mostly a debugging feature, but it can also have an illustrative interest. While it is only available for graph separation strategies, mesh separation strategies can indirectly use it through the mesh-to-graph separation method. \iteme[{\tt z}] Zero method. This method moves all of the node vertices to the first part, resulting in an empty separator. Its main use is to stop the separation process whenever some condition is true. \end{itemize} \subsection{Target architecture handling routines} \label{sec-lib-arch-handling} \subsubsection{{\tt SCOTCH\_archExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_archExit ( & SCOTCH\_Arch * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchexit ( & doubleprecision (*) & archdat) \end{tabular}} \progdes The {\tt SCOTCH\_archExit} function frees the contents of a {\tt SCOTCH\_\lbt Arch} structure previously initialized by {\tt SCOTCH\_\lbt archInit}. All subsequent calls to {\tt SCOTCH\_\lbt arch} routines other than {\tt SCOTCH\_\lbt archInit}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_archInit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archInit ( & SCOTCH\_Arch * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchinit ( & doubleprecision (*) & archdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archInit} function initializes a {\tt SCOTCH\_\lbt Arch} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Arch} structure. When the target architecture data is no longer of use, call function {\tt SCOTCH\_\lbt archExit} to free its internal structures. \progret {\tt SCOTCH\_archInit} returns $0$ if the architecture structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archLoad}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archLoad ( & SCOTCH\_Arch * & archptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchload ( & doubleprecision (*) & archdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archLoad} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the source graph description available from stream {\tt stream} in the \scotch\ target architecture format (see Section~\ref{sec-file-target}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the architecture file. \progret {\tt SCOTCH\_archLoad} returns $0$ if the target architecture structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archName}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} const char * SCOTCH\_archName ( & const SCOTCH\_Arch * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchname ( & doubleprecision (*) & archdat, \\ & character (*) & chartab, \\ & integer & charnbr) \end{tabular}} \progdes The {\tt SCOTCH\_archName} function returns a string containing the name of the architecture pointed to by {\tt archptr}. Since Fortran routines cannot return string pointers, the {\tt scotchf\lbt arch\lbt name} routine takes as second and third parameters a {\tt character()} array to be filled with the name of the architecture, and the {\tt integer} size of the array, respectively. If the array is of sufficient size, a trailing nul character is appended to the string to materialize the end of the string (this is the C style of handling character strings). \progret {\tt SCOTCH\_archName} returns a non-null character pointer that points to a null-terminated string describing the type of the architecture. \end{itemize} \subsubsection{{\tt SCOTCH\_archSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archSave ( & const SCOTCH\_Arch * & archptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchsave ( & doubleprecision (*) & archdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archSave} routine saves the contents of the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} to stream {\tt stream}, in the \scotch\ target architecture format (see section~\ref{sec-file-target}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the architecture file. \progret {\tt SCOTCH\_archSave} returns $0$ if the graph structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archSize}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_archSize ( & const SCOTCH\_Arch * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchsize ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & archnbr) \end{tabular}} \progdes The {\tt SCOTCH\_archSize} function returns the number of nodes of the given target architecture. The Fortran routine has a second parameter, of integer type, which is set on return with the number of nodes of the target architecture. \progret {\tt SCOTCH\_archSize} returns the number of nodes of the target architecture. \end{itemize} \subsection{Target architecture creation routines} \label{sec-lib-arch-create} \subsubsection{{\tt SCOTCH\_archBuild0} / {\tt SCOTCH\_archBuild}} \label{sec-lib-arch-build} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archBuild0 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & listnbr, \\ & const SCOTCH\_Num * & listtab, \\ & const SCOTCH\_Strat * & straptr) \\ ~\\ int SCOTCH\_archBuild ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & listnbr, \\ & const SCOTCH\_Num * & listtab, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchbuild0 ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & grafdat, \\ & integer*{\it num} & listnbr, \\ & integer*{\it num} (*) & listtab, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \\ ~\\ scotchfarchbuild ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & grafdat, \\ & integer*{\it num} & listnbr, \\ & integer*{\it num} (*) & listtab, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archBuild0} routine fills the architecture structure pointed to by {\tt archptr} with the ``\texttt{deco 1}'' (that is, a compiled form of a ``\texttt{deco 0}'') decomposition-defined target architecture computed by applying the graph bipartitioning strategy pointed to by {\tt straptr} to the architecture graph pointed to by {\tt grafptr}. When {\tt listptr} is not {\tt NULL} and {\tt listnbr} is greater than zero, the decomposition-defined architecture is restricted to the {\tt listnbr} vertices whose indices are given in the array pointed to by {\tt listtab}, from {\tt listtab\lbt [0]} to {\tt listtab\lbt [listnbr - 1]}. These indices should have the same base value as the one of the graph pointed to by {\tt grafptr}, that is, be in the range from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is $0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. Graph bipartitioning strategies are declared by means of the {\tt SCOTCH\_\lbt strat\lbt Graph\lbt Bipart} function, described in page~\pageref{sec-lib-strat-graph-bipart}. The syntax of bipartitioning strategy strings is defined in section~\ref{sec-lib-format-map}, page~\pageref{sec-lib-format-bipart}. Additional information may be obtained from the manual page of {\tt amk\_\lbt grf}, the stand-alone executable that builds decomposition-defined target architecture files from source graph files, available at page~\pageref{sec-prog-amkgrf}. At the time being, {\tt SCOTCH\_arch\lbt Build} is equivalent to {\tt SCOTCH\_\lbt arch\lbt Build0}. In future releases, it is planned that {\tt SCOTCH\_\lbt arch\lbt Build} will either behave as {\tt SCOTCH\_\lbt arch\lbt Build0} or {\tt SCOTCH\_\lbt arch\lbt Build2}, depending on target graph size. For target graphs of small sizes, users are invited to use explicitly the {\tt SCOTCH\_\lbt arch\lbt Build0} routine. \progret {\tt SCOTCH\_archBuild0} returns $0$ if the decomposition-defined architecture has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archBuild2}} \label{sec-lib-arch-build-two} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archBuild2 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & listnbr, \\ & const SCOTCH\_Num * & listtab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchbuild2 ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & grafdat, \\ & integer*{\it num} & listnbr, \\ & integer*{\it num} (*) & listtab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archBuild2} routine fills the architecture structure pointed to by {\tt archptr} with the ``\texttt{deco 2}'' decomposition-defined target architecture corresponding to the graph pointed to by {\tt grafptr}. Since the computation of the decomposition is performed by means of graph coarsening, unlike {\tt SCOTCH\_\lbt arch\lbt Build}, no bipartitioning strategy has to be provided. When {\tt listptr} is not {\tt NULL} and {\tt listnbr} is greater than zero, the decomposition-defined architecture is restricted to the {\tt listnbr} vertices whose indices are given in the array pointed to by {\tt listtab}, from {\tt listtab\lbt [0]} to {\tt listtab\lbt [listnbr - 1]}. These indices should have the same base value as that of the graph pointed to by {\tt grafptr}, that is, be in the range from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is $0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. Additional information may be obtained from the manual page of {\tt amk\_\lbt grf}, the stand-alone executable that builds decomposition-defined target architecture files from source graph files, available at page~\pageref{sec-prog-amkgrf}. \progret {\tt SCOTCH\_archBuild} returns $0$ if the decomposition-defined architecture has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archCmplt}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archCmplt ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & vertnbr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchcmplt ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & vertnbr, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archCmplt} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a complete graph architecture with {\tt vertnbr} processors, which can be used as input to {\tt SCOTCH\_\lbt graph\lbt Map} to perform graph partitioning. A shortcut to this is to use the {\tt SCOTCH\_\lbt graph\lbt Part} routine. \progret {\tt SCOTCH\_archCmplt} returns $0$ if the complete graph target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archCmpltw}} \label{sec-lib-arch-cmpltw} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archCmpltw ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & vertnbr, \\ & const SCOTCH\_Num * const & velotab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchcmplt ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & vertnbr, \\ & integer*{\it num} (*) & velotab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archCmpltw} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a weighted complete graph architecture with {\tt vertnbr} processors. The relative weights of the processors are given in the {\tt velotab} array. Once the target architecture has been created, it can be used as input to {\tt SCOTCH\_\lbt graph\lbt Map} to perform weighted graph partitioning. \progret {\tt SCOTCH\_archCmpltw} returns $0$ if the weighted complete graph target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archHcub}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archHcub ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & hdimval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchhcub ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & hdimval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archHcub} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a hypercube graph of dimension {\tt hdimval}. \progret {\tt SCOTCH\_archHcub} returns $0$ if the hypercube target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archLtleaf}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archLtleaf ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & levlnbr, \\ & const SCOTCH\_Num * & sizetab, \\ & const SCOTCH\_Num * & linktab, \\ & const SCOTCH\_Num & permnbr, \\ & const SCOTCH\_Num * & permtab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchltleaf ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & levlnbr, \\ & integer*{\it num} (*) & sizetab, \\ & integer*{\it num} (*) & linktab, \\ & integer*{\it num} & permnbr, \\ & integer*{\it num} (*) & permtab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archLtleaf} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a labeled, tree-shaped, hierarchical graph architecture with $\sum_{i=0}^{\mathtt{levlnbr}-1}\mathtt{sizetab}\mbox{\tt [}i\mbox{\tt ]}$ processors. Level $0$ is the root of the tree. For each level $i$, with $0 \leq i < \mathtt{levlnbr}$, $\mathtt{sizetab}\mbox{\tt [}i\mbox{\tt ]}$ is the number of childs at level $(i+1)$ of each node at level $i$, and {\tt linktab[}$i${\tt ]} is the cost of communication between processors the first common ancestor of which belongs to this level. See Section~\ref{sec-file-target-algo}, page~\pageref{sec-file-target-ltleaf}, for an example of this architecture. \progret {\tt SCOTCH\_archLtleaf} returns $0$ if the labeled tree-leaf target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archMesh2}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archMesh2 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & xdimval, \\ & const SCOTCH\_Num & ydimval) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchmesh2 ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & xdimval, \\ & integer*{\it num} & ydimval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archMesh2} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a 2D mesh architecture with $\mathtt{xdimval} \times \mathtt{ydimval}$ processors. \progret {\tt SCOTCH\_archMesh2} returns $0$ if the 2D mesh target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archMesh3}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archMesh3 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & xdimval, \\ & const SCOTCH\_Num & ydimval, \\ & const SCOTCH\_Num & zdimval) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchmesh3 ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & xdimval, \\ & integer*{\it num} & ydimval, \\ & integer*{\it num} & zdimval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archMesh3} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a 3D mesh architecture with $\mathtt{xdimval} \times \mathtt{ydimval} \times \mathtt{zdimval}$ processors. \progret {\tt SCOTCH\_archMesh3} returns $0$ if the 3D mesh target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archMeshX}} \begin{itemize} \progsyn \texttt{\begin{tabular}{l@{}ll} int SCOTCH\_archMeshX ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & dimnnbr, \\ & const SCOTCH\_Num * & dimntab) \\ \end{tabular}} \texttt{\begin{tabular}{l@{}ll} scotchfarchmeshx ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & dimnnbr, \\ & integer*{\it num} & dimntab, \\ & integer & ierr) \end{tabular}} \progdes The \texttt{SCOTCH\_archMeshX} routine fills the \texttt{SCOTCH\_\lbt Arch} structure pointed to by \texttt{archptr} with the description of a \texttt{dimnnbr}-dimension mesh architecture with $\prod_d\mathtt{dimntab[}d\mathtt{]}$ processors. The maximum number of dimensions is defined at compile-time. \progret \texttt{SCOTCH\_archMeshX} returns $0$ if the \texttt{dimnnbr}-dimension mesh target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archSub}} \label{sec-lib-arch-sub} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archSub ( & SCOTCH\_Arch * & subarchptr, \\ & SCOTCH\_Arch * & orgarchptr, \\ & const SCOTCH\_Num & vnumnbr, \\ & const SCOTCH\_Num * & vnumtab) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchsub ( & doubleprecision (*) & subarchdat, \\ & doubleprecision (*) & orgarchdat, \\ & integer*{\it num} & vnumnbr, \\ & integer*{\it num} & vnumtab, \\ & integer & ierr) \end{tabular}} \progdes The \texttt{SCOTCH\_archSub} routine fills the \texttt{SCOTCH\_\lbt Arch} structure pointed to by \texttt{subarchptr} with the description of a subset of the \texttt{orgarchptr} architecture, restricted to \texttt{vertnbr} processors which are listed in the \texttt{vnumtab} array. The order in which the processor indices in the original architecture are stored in the \texttt{vnumtab} array defines the rank of these processors in the sub-architecture. Since the sub-architecture depends on the original architecture, the latter must not be de-allocated (by way of \texttt{SCOTCH\_\lbt arch\lbt Exit}) as long as the sub-architecture is being used. \progret {\tt SCOTCH\_archSub} returns $0$ if the target sub-architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archTleaf}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archTleaf ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & levlnbr, \\ & const SCOTCH\_Num * & sizetab, \\ & const SCOTCH\_Num * & linktab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchtleaf ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & levlnbr, \\ & integer*{\it num} (*) & sizetab, \\ & integer*{\it num} (*) & linktab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archTleaf} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a tree-shaped, hierarchical graph architecture with $\sum_{i=0}^{\mathtt{levlnbr}-1}\mathtt{sizetab}{\tt [}i{\tt ]}$ processors. Level $0$ is the root of the tree. For each level $i$, with $0 \leq i < \mathtt{levlnbr}$, {\tt sizetab[}$i${\tt ]} is the number of childs at level $(i+1)$ of each node at level $i$, and {\tt linktab[}$i${\tt ]} is the cost of communication between processors the first common ancestor of which belongs to this level. See Section~\ref{sec-file-target-algo}, page~\pageref{sec-file-target-algo}, for an example of this architecture. \progret {\tt SCOTCH\_archTleaf} returns $0$ if the tree-leaf target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archTorus2}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archTorus2 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & xdimval, \\ & const SCOTCH\_Num & ydimval) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchtorus2 ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & xdimval, \\ & integer*{\it num} & ydimval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archTorus2} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a 2D torus architecture with $\mathtt{xdimval} \times \mathtt{ydimval}$ processors. \progret {\tt SCOTCH\_archTorus2} returns $0$ if the 2D torus target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archTorus3}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archTorus3 ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & xdimval, \\ & const SCOTCH\_Num & ydimval, \\ & const SCOTCH\_Num & zdimval) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchtorus3 ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & xdimval, \\ & integer*{\it num} & ydimval, \\ & integer*{\it num} & zdimval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archTorus3} routine fills the {\tt SCOTCH\_\lbt Arch} structure pointed to by {\tt archptr} with the description of a 3D torus architecture with $\mathtt{xdimval} \times \mbox{\tt ydimval} \times \mathtt{zdimval}$ processors. \progret {\tt SCOTCH\_archTorus3} returns $0$ if the 3D torus target architecture has been successfully built, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_archTorusX}} \begin{itemize} \progsyn \texttt{\begin{tabular}{l@{}ll} int SCOTCH\_archTorusX ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num & dimnnbr, \\ & const SCOTCH\_Num * & dimntab) \\ \end{tabular}} \texttt{\begin{tabular}{l@{}ll} scotchfarchtorusx ( & doubleprecision (*) & archdat, \\ & integer*{\it num} & dimnnbr, \\ & integer*{\it num} & dimntab, \\ & integer & ierr) \end{tabular}} \progdes The \texttt{SCOTCH\_archTorusX} routine fills the \texttt{SCOTCH\_\lbt Arch} structure pointed to by \texttt{archptr} with the description of a \texttt{dimnnbr}-dimension torus architecture with $\prod_d\mathtt{dimntab[}d\mathtt{]}$ processors. The maximum number of dimensions is defined at compile-time. \progret \texttt{SCOTCH\_archTorusX} returns $0$ if the \texttt{dimnnbr}-dimension mesh target architecture has been successfully built, and $1$ else. \end{itemize} \subsection{Target domain handling routines} \label{sec-lib-arch-dom-handling} \subsubsection{{\tt SCOTCH\_archDomFrst}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archDomFrst ( & SCOTCH\_Arch * & archptr, \\ & SCOTCH\_ArchDom * & domnptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomfrst ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archDomFrst} function initializes the domain structure referred to by {\tt domnptr} with the biggest domain of the target architecture referred to {\tt archptr}, that is, the domain that contains all terminal domains. \progret {\tt SCOTCH\_archDomFrst} returns $0$ if the domain could be created, and $1$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomTerm}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archDomTerm ( & SCOTCH\_Arch * & archptr, \\ & SCOTCH\_ArchDom * & domnptr, \\ & const SCOTCH\_Num & domnnum) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomterm ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & integer*{\it num} & domnnum, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archDomTerm} function initializes the domain structure referred to by {\tt domnptr} to correspond to the terminal domain of index {\tt domnnum} in the target architecture referred to {\tt archptr}. Applying the {\tt arch\lbt Dom\lbt Num} function to this domain yields back {\tt domnnum}. \progret {\tt SCOTCH\_archDomTerm} returns $0$ if the domain could be created, $1$ if {\tt domnnum} does not correspond to a valid terminal number for this architecture, and $2$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomBipart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_archDomBipart ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_ArchDom * & domnptr, \\ & SCOTCH\_ArchDom * & dom0ptr, \\ & SCOTCH\_ArchDom * & dom1ptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdombipart ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & doubleprecision (*) & dom0dat, \\ & doubleprecision (*) & dom1dat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_archDomBipart} function tries to split the domain referred to by {\tt domnptr} into two disjoint subdomains referred to by {\tt dom0ptr} and {\tt dom1ptr}, in the target architecture referred to {\tt archptr}. \progret {\tt SCOTCH\_archDomBipart} returns $0$ if the domain could be bipartitioned, $1$ if bipartitioning could not be performed (because the domain is terminal), and $2$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomSize}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_archDomSize ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_ArchDom * & domnptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomsize ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & integer*{\it num} & sizeval) \end{tabular}} \progdes The {\tt SCOTCH\_archDomSize} function returns the size of the domain referred to by {\tt domnptr}, that is, the number of terminal domains comprised in the domain, within the architecture referred to by {\tt archptr}. The Fortran routine has a third parameter, of {\tt SCOTCH\_\lbt Num} type, which is set on return with the domain size. \progret {\tt SCOTCH\_archDomSize} yields an integer value of type {\tt SCOTCH\_\lbt Num} that ranges between $1$ and the number of terminal domains in the architecture. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomWght}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_archDomWght ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_ArchDom * & domnptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomwght ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & integer*{\it num} & wghtval) \end{tabular}} \progdes The {\tt SCOTCH\_archDomWght} function returns the weight of the domain referred to by {\tt domnptr} in the architecture referred to by {\tt archptr}. The Fortran routine has a third parameter, of {\tt SCOTCH\_\lbt Num} type, which is set on return with this weight. The weight of a domain is the sum of the weights of all the terminal domains included within this domain. \progret {\tt SCOTCH\_archDomWght} yields an integer value of type {\tt SCOTCH\_\lbt Num} that ranges between $1$ and the sum of the weights of all terminal domains in the architecture. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomDist}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_archDomDist ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_ArchDom * & dom0ptr, \\ & const SCOTCH\_ArchDom * & dom1ptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomwght ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & dom0dat, \\ & doubleprecision (*) & dom1dat, \\ & integer*{\it num} & distval) \end{tabular}} \progdes The {\tt SCOTCH\_archDomDist} function returns the estimated distance between the two domains referred to by {\tt dom0ptr} and {\tt dom1ptr} in the architecture referred to by {\tt archptr}. The Fortran routine has a fourth parameter, of {\tt SCOTCH\_\lbt Num} type, which is set on return with this distance. The desirable properties of distance functions are described in Section~\ref{sec-algo-drb}. Basically, they should provide more accurate results as domain sizes decrease and as distance decreases. \progret {\tt SCOTCH\_archDomDist} yields an integer value of type {\tt SCOTCH\_\lbt Num} that is always greater than or equal to zero. It is equal to the maximum available integer value when the two domains belong to different connected components of a disconnected target architecture. \end{itemize} \subsubsection{{\tt SCOTCH\_archDomNum}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_archDomNum ( & SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_ArchDom * & domnptr) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfarchdomnum ( & doubleprecision (*) & archdat, \\ & doubleprecision (*) & domndat, \\ & integer*{\it num} & domnnum) \end{tabular}} \progdes The {\tt SCOTCH\_archDomNum} function returns the smallest number of terminal domain included within the domain referred to by {\tt domnptr} of the architecture referred to by {\tt archptr}. The Fortran routine has a third parameter, of {\tt SCOTCH\_\lbt Num} type, which is set on return with this terminal number. \progret {\tt SCOTCH\_archDomNum} yields an integer value of type {\tt SCOTCH\_\lbt Num} that ranges between $0$ and the number of terminal domains in the architecture, minus $1$. \end{itemize} \subsection{Graph handling routines} \label{sec-lib-graph} \subsubsection{{\tt SCOTCH\_graphAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Graph * SCOTCH\_graphAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_graphAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Graph} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The allocated space must be initialized before use, by means of the {\tt SCOTCH\_\lbt graph\lbt Init} routine. \progret {\tt SCOTCH\_graphAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphBase}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphBase ( & SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num & baseval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphbase ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & oldbaseval) \end{tabular}} \progdes The {\tt SCOTCH\_graphBase} routine sets the base of all graph indices according to the given base value, and returns the old base value. This routine is a helper for applications that do not handle base values properly. In Fortan, the old base value is returned in the third parameter of the function call. \progret {\tt SCOTCH\_graphBase} returns the old base value. \end{itemize} \subsubsection{{\tt SCOTCH\_graphBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphBuild ( & SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & baseval, \\ & const SCOTCH\_Num & vertnbr, \\ & const SCOTCH\_Num * & verttab, \\ & const SCOTCH\_Num * & vendtab, \\ & const SCOTCH\_Num * & velotab, \\ & const SCOTCH\_Num * & vlbltab, \\ & const SCOTCH\_Num & edgenbr, \\ & const SCOTCH\_Num * & edgetab, \\ & const SCOTCH\_Num * & edlotab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphbuild ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & vertnbr, \\ & integer*{\it num} (*) & verttab, \\ & integer*{\it num} (*) & vendtab, \\ & integer*{\it num} (*) & velotab, \\ & integer*{\it num} (*) & vlbltab, \\ & integer*{\it num} & edgenbr, \\ & integer*{\it num} (*) & edgetab, \\ & integer*{\it num} (*) & edlotab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphBuild} routine fills the source graph structure pointed to by {\tt grafptr} with all of the data that are passed to it. {\tt baseval} is the graph base value for index arrays (typically $0$ for structures built from C and $1$ for structures built from Fortran). {\tt vertnbr} is the number of vertices. {\tt verttab} is the adjacency index array, of size $({\tt vertnbr} + 1)$ if the edge array is compact (that is, if {\tt vendtab} equals $\mathtt{verttab}+1$ or {\tt NULL}), or of size {\tt vertnbr} else. {\tt vendtab} is the adjacency end index array, of size {\tt vertnbr} if it is disjoint from {\tt verttab}. {\tt velotab} is the vertex load array, of size {\tt vertnbr} if it exists. {\tt vlbltab} is the vertex label array, of size {\tt vertnbr} if it exists. {\tt edgenbr} is the number of arcs (that is, twice the number of edges). {\tt edgetab} is the adjacency array, of size at least {\tt edgenbr} (it can be more if the edge array is not compact). {\tt edlotab} is the arc load array, of size {\tt edgenbr} if it exists. The {\tt vendtab}, {\tt velotab}, {\tt vlbltab} and {\tt edlotab} arrays are optional, and a {\tt NULL} pointer can be passed as argument whenever they are not defined. Since, in Fortran, there is no null reference, passing the {\tt scotchf\lbt graph\lbt build} routine a reference equal to {\tt verttab} in the {\tt velotab} or {\tt vlbltab} fields makes them be considered as missing arrays. The same holds for {\tt edlotab} when it is passed a reference equal to {\tt edgetab}. Setting {\tt vendtab} to refer to one cell after {\tt verttab} yields the same result, as it is the exact semantics of a compact vertex array. To limit memory consumption, {\tt SCOTCH\_\lbt graph\lbo Build} does not copy array data, but instead references them in the {\tt SCOTCH\_\lbt Graph} structure. Therefore, great care should be taken not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt graph\lbo Build} as long as the graph structure is in use. Every update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt graph\lbo Free}, to free internal graph structures, and eventually followed by a new call to {\tt SCOTCH\_\lbt graph\lbo Build} to re-build these internal structures so as to be able to use the new graph. To ensure that inconsistencies in user data do not result in an erroneous behavior of the \libscotch\ routines, it is recommended, at least in the development stage, to call the {\tt SCOTCH\_\lbt graph\lbt Check} routine on the newly created {\tt SCOTCH\_\lbt Graph} structure before calling any other \libscotch\ routine. \progret {\tt SCOTCH\_graphBuild} returns $0$ if the graph structure has been successfully set with all of the input data, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphCheck}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphCheck ( & const SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphcheck ( & doubleprecision (*) & grafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphCheck} routine checks the consistency of the given {\tt SCOTCH\_\lbt Graph} structure. It can be used in client applications to determine if a graph that has been created from used-generated data by means of the {\tt SCOTCH\_\lbt graph\lbt Build} routine is consistent, prior to calling any other routines of the \libscotch\ library. \progret {\tt SCOTCH\_graphCheck} returns $0$ if graph data are consistent, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphCoarsen}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphCoarsen ( & SCOTCH\_Graph * const & finegrafptr, \\ & const SCOTCH\_Num & coarvertnbr, \\ & const double & coarrat, \\ & const SCOTCH\_Num & flagval, \\ & SCOTCH\_Graph * const & coargrafptr, \\ & SCOTCH\_Num * const & coarmulttab) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphcoarsen ( & doubleprecision (*) & finegrafdat, \\ & integer*{\it num} & coarvertnbr, \\ & doubleprecision & coarrat, \\ & integer*{\it num} & flagval, \\ & doubleprecision (*) & coargrafdat, \\ & integer*{\it num} (*) & coarmulttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphCoarsen} routine creates, in the {\tt SCOTCH\_\lbt Graph} structure {\tt coar\lbt graf\lbt dat} pointed to by {\tt coar\lbt graf\lbt ptr}, a graph coarsened from the {\tt SCOTCH\_\lbt Graph} structure {\tt fine\lbt graf\lbt dat} pointed to by {\tt fine\lbt graf\lbt ptr}. The coarsened graph is created only if it comprises more than {\tt coar\lbt vert\lbt nbr} vertices, or if the coarsening ratio is lower than {\tt coarrat}. Valid coarsening ratio values range from $0.5$ (in the case of a perfect matching) to $1.0$ (if no vertex could be coarsened). Classical threshold values range from $0.7$ to $0.8$. The {\tt flagval} flag specifies the type of coarsening. % Several groups of flags can be combined, by means of addition or % ``binary or'' operators. When {\tt SCOTCH\_\lbt COARSEN\lbt NO\lbt MERGE} is set, isolated vertices are never merged with other vertices. This preserves the topology of the graph, at the expense of a higher coarsening ratio. The {\tt multloctab} array should be of a size big enough to store multinode data for the resulting coarsened graph. Hence, the size of the array must be at least twice the maximum expected number of local coarse vertices, according to the prescribed coarsening ratio {\tt coarrat}. Upon successful completion, this array will contain pairs of consecutive {\tt SCOTCH\_\lbt Num} values, representing the indices of the two fine vertices that have been coarsened into each of the coarse vertices. When a vertex has been coarsened with itself, its two multinode values are identical. {\tt coargrafdat} must have been initialized with the {\tt SCOTCH\_\lbt graph\lbt Init} routine before {\tt SCOTCH\_graph\lbt Coarsen} is called. \progret {\tt SCOTCH\_graphCoarsen} returns $0$ if the coarse graph structure has been successfully created, $1$ if the coarse graph was not created because it did not enforce the threshold parameters, and $2$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_graphCoarsenBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphCoarsenBuild ( & SCOTCH\_Graph * const & finegrafptr, \\ & const SCOTCH\_Num & coarvertnbr, \\ & SCOTCH\_Num * const & finematetab, \\ & SCOTCH\_Graph * const & coargrafptr, \\ & SCOTCH\_Num * const & coarmulttab) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphcoarsenbuild ( & doubleprecision (*) & finegrafdat, \\ & integer*{\it num} & coarvertnbr, \\ & integer*{\it num} (*) & finematetab, \\ & doubleprecision (*) & coargrafdat, \\ & integer*{\it num} (*) & coarmulttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphCoarsenBuild} routine creates, in the {\tt SCOTCH\_\lbt Graph} structure {\tt coar\lbt graf\lbt dat} pointed to by {\tt coar\lbt graf\lbt ptr}, a graph with {\tt coar\lbt vert\lbt nbr} vertices, coarsened from the {\tt SCOTCH\_\lbt Graph} structure {\tt fine\lbt graf\lbt dat} pointed to by {\tt fine\lbt graf\lbt ptr}, using the matching provided by {\tt fine\lbt mate\lbt tab}. On input, the {\tt fine\lbt mate\lbt tab} mating array should contain the indices of the mates chosen for each vertex of the fine graph. When some vertex is mated to itself, its array cell value is equal to its own index. Upon successful completion, this array is updated so as to contain fine-to-coarse indices: each array cell contains the index of the coarse vertex created from the given fine vertex. The {\tt fine\lbt mate\lbt tab} mating array and its associated number of coarse vertices {\tt coar\lbt vert\lbt nbr} may have been computed using the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} routine. Indeed, calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} and {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routines in sequence amounts to calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen} routine, yet additionally publicizing the {\tt fine\lbt mate\lbt tab} array. The {\tt multloctab} array should be of a size big enough to store multinode data for the resulting coarsened graph, that is, twice the value of {\tt coar\lbt vert\lbt nbr}. Upon successful completion, this array will contain pairs of consecutive {\tt SCOTCH\_\lbt Num} values, representing the indices of the two fine vertices that have been coarsened into each of the coarse vertices. When a vertex has been coarsened with itself, the two multinode values are identical. {\tt coargrafdat} must have been initialized with the {\tt SCOTCH\_\lbt graph\lbt Init} routine before {\tt SCOTCH\_graph\lbt Coarsen\lbt Build} is called. \progret {\tt SCOTCH\_graphCoarsenBuild} returns $0$ if the coarse graph structure has been successfully created, and $1$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_graphCoarsenMatch}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphCoarsenMatch ( & SCOTCH\_Graph * const & finegrafptr, \\ & SCOTCH\_Num * const & coarvertptr, \\ & const double & coarrat, \\ & const SCOTCH\_Num & flagval, \\ & SCOTCH\_Num * const & finematetab) \\ \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphcoarsenmatch ( & doubleprecision (*) & finegrafdat, \\ & integer*{\it num} & coarvertnbr, \\ & doubleprecision & coarrat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} (*) & finematetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphCoarsenMatch} routine fills the {\tt fine\lbt mate\lbt tab} array with a matching of the vertices of the {\tt SCOTCH\_\lbt Graph} structure {\tt fine\lbt graf\lbt dat} pointed to by {\tt fine\lbt graf\lbt ptr}. The matching is computed only if it amounts to the creation of more than {\tt coar\lbt vert\lbt nbr} (that is, the value pointed to by {\tt coar\lbt vert\lbt ptr} in the C interface) coarse vertices, or if the coarsening ratio is lower than {\tt coarrat}. Valid coarsening ratio values range from $0.5$ (in the case of a perfect matching) to $1.0$ (if no vertex could be coarsened). Classical threshold values range from $0.7$ to $0.8$. The {\tt flagval} flag specifies the type of matching. % Several groups of flags can be combined, by means of addition or % ``binary or'' operators. When {\tt SCOTCH\_\lbt COARSEN\lbt NO\lbt MERGE} is set, isolated vertices are never matched with other vertices. This preserves the topology of the graph, at the expense of a higher coarsening ratio. The {\tt finematetab} array must be of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} values as the number of vertices in the {\tt fine\lbt graf\lbt dat} graph. Upon successful completion, this array will contain the indices of the mates chosen for each vertex of the provided graph. When some vertex is mated to itself, its array cell value is equal to its own index. Additionally, {\tt coarvertnbr} will be set to the number of coarse vertices associated with the matching. This number is equal to the number of vertices in the provided graph, minus the number of matched pairs of vertices, since in a subsequent coarsening process, each pair should see its two matched vertices collapsed into a single coarse vertex. The mating array and its associated number of coarse vertices can be used by the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routine. Indeed, calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Match} and {\tt SCOTCH\_\lbt graph\lbt Coarsen\lbt Build} routines in sequence amounts to calling the {\tt SCOTCH\_\lbt graph\lbt Coarsen} routine, yet additionally publicizing the {\tt fine\lbt mate\lbt tab} array. \progret {\tt SCOTCH\_graphCoarsenMatch} returns $0$ if a matching has been successfully computed, $1$ if the matching was not computed because it did not enforce the threshold parameters, and $2$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_graphColor}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphColor ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & colotab, \\ & SCOTCH\_Num * & coloptr, \\ & SCOTCH\_Num & flagval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphcolor ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} (*) & colotab, \\ & integer{\it num} & colonbr, \\ & integer{\it num} & flagval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphColor} routine computes a coloring of the graph vertices. The {\tt colotab} array is filled with color values, and the number of colors found is placed into the integer variable {\tt colonbr}, pointed to by {\tt coloptr}. The computed coloring is not guaranteed to be maximal. Indeed, the only algorithm currently implemented is a variant of Luby's algorithm. Due to the operations of this algorithm, the first colors are likely to have many more representatives than the last colors. Like for partition arrays, color values are \textit{not} based: color values range from $0$ to $(\mathtt{colonbr} - 1)$. The flag value {\tt flagval} is currently not used. It may be used in the future to select a coloring method. At the time being, a value of $0$ should be provided. \progret {\tt SCOTCH\_graphColor} returns $0$ if the graph coloring has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphData}} \label{sec-lib-func-graphdata} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphData ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & baseptr, \\ & SCOTCH\_Num * & vertptr, \\ & SCOTCH\_Num ** & verttab, \\ & SCOTCH\_Num ** & vendtab, \\ & SCOTCH\_Num ** & velotab, \\ & SCOTCH\_Num ** & vlbltab, \\ & SCOTCH\_Num * & edgeptr, \\ & SCOTCH\_Num ** & edgetab, \\ & SCOTCH\_Num ** & edlotab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphdata ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} (*) & indxtab, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & vertnbr, \\ & integer*{\it idx} & vertidx, \\ & integer*{\it idx} & vendidx, \\ & integer*{\it idx} & veloidx, \\ & integer*{\it idx} & vlblidx, \\ & integer*{\it num} & edgenbr, \\ & integer*{\it idx} & edgeidx, \\ & integer*{\it num} & edloidx) \end{tabular}} \progdes The {\tt SCOTCH\_graphData} routine is the dual of the {\tt SCOTCH\_\lbt graph\lbo Build} routine. It is a multiple accessor that returns scalar values and array references. {\tt baseptr} is the pointer to a location that will hold the graph base value for index arrays (typically $0$ for structures built from C and $1$ for structures built from Fortran). {\tt vertptr} is the pointer to a location that will hold the number of vertices. {\tt verttab} is the pointer to a location that will hold the reference to the adjacency index array, of size $\mathtt{*vertptr} + 1$ if the adjacency array is compact, or of size {\tt *vertptr} else. {\tt vendtab} is the pointer to a location that will hold the reference to the adjacency end index array, and is equal to $\mathtt{verttab} + 1$ if the adjacency array is compact. {\tt velotab} is the pointer to a location that will hold the reference to the vertex load array, of size {\tt *vertptr}. {\tt vlbltab} is the pointer to a location that will hold the reference to the vertex label array, of size {\tt vertnbr}. {\tt edgeptr} is the pointer to a location that will hold the number of arcs (that is, twice the number of edges). {\tt edgetab} is the pointer to a location that will hold the reference to the adjacency array, of size at least {\tt *edgeptr}. {\tt edlotab} is the pointer to a location that will hold the reference to the arc load array, of size {\tt *edgeptr}. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. Since there are no pointers in Fortran, a specific mechanism is used to allow users to access graph arrays. The {\tt scotchf\lbt graph\lbt data} routine is passed an integer array, the first element of which is used as a base address from which all other array indices are computed. Therefore, instead of returning references, the routine returns integers, which represent the starting index of each of the relevant arrays with respect to the base input array, or {\tt vertidx}, the index of {\tt verttab}, if they do not exist. For instance, if some base array {\tt myarray\lbt (1)} is passed as parameter {\tt indxtab}, then the first cell of array {\tt verttab} will be accessible as {\tt myarray\lbt (vertidx)}. In order for this feature to behave properly, the {\tt indxtab} array must be word-aligned with the graph arrays. This is automatically enforced on most systems, but some care should be taken on systems that allow one to access data that is not word-aligned. On such systems, declaring the array after a dummy {\tt double\lbt precision} array can coerce the compiler into enforcing the proper alignment. Also, on 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type. See Section~\ref{sec-lib-inttypesize} for more information on this issue. \end{itemize} \subsubsection{{\tt SCOTCH\_graphDiamPV}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} SCOTCH\_Num SCOTCH\_graphDiamPV ( & const SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphdiampv ( & doubleprecision (*) & grafdat, \\ & integer{\it num} & diamval) \end{tabular}} \progdes The {\tt SCOTCH\_graphDiamPV} routine computes the edge-weighted (pseudo-)diameter value of the given graph. To do so, it selects a random vertex, computes the set of vertices at maximum distance from this vertex by means of Dijkstra's algorithm, selects a vertex from this set, and repeats the process as long as this maximum distance value increases. If the graph is not edge-weighted, neighboring vertices are assumed to be at distance $1$ from each other; else, edge weights represent distances between vertices. \progret {\tt SCOTCH\_graphDiamPV} returns a positive value if the graph diameter has been successfully computed, the \texttt{SCOTCH\_\lbt NUMMAX} maximum positive value if the graph is disconnected, and $-1$ on error. \end{itemize} \subsubsection{{\tt SCOTCH\_graphExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphExit ( & SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphexit ( & doubleprecision (*) & grafdat) \end{tabular}} \progdes The {\tt SCOTCH\_graphExit} function frees the contents of a {\tt SCOTCH\_\lbt Graph} structure previously initialized by {\tt SCOTCH\_\lbt graphInit}. All subsequent calls to {\tt SCOTCH\_\lbt graph} routines other than {\tt SCOTCH\_\lbt graphInit}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_graphFree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphFree ( & SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphfree ( & doubleprecision (*) & grafdat) \end{tabular}} \progdes The {\tt SCOTCH\_graphFree} function frees the graph data of a {\tt SCOTCH\_\lbt Graph} structure previously initialized by {\tt SCOTCH\_\lbt graph\lbt Init}, but preserves its internal data structures. This call is equivalent to a call to {\tt SCOTCH\_\lbt graph\lbt Exit} immediately followed by a call to {\tt SCOTCH\_\lbt graph\lbt Init}. Consequently, the given {\tt SCOTCH\_\lbt Graph} structure remains ready for subsequent calls to any routine of the \libscotch\ library. \end{itemize} \subsubsection{{\tt SCOTCH\_graphInduceList}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphInduceList ( & const SCOTCH\_Graph * & orggrafptr, \\ & SCOTCH\_Num & vnumnbr, \\ & SCOTCH\_Num * & vnumtab, \\ & SCOTCH\_Graph * & indgrafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphinducelist ( & doubleprecision (*) & orggrafdat, \\ & integer*{\it num} & vnumnbr, \\ & integer{\it num} (*) & vnumtab, \\ & doubleprecision (*) & indgrafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphInduceList} routine computes an induced graph \texttt{indgrafdat} from the original graph \texttt{orggrafdat}. The vertices that are kept in the induced graph are the \texttt{vnumnbr} vertices whose based indices in the original graph are provided in the \texttt{vnumtab} array, in its first \texttt{vnumnbr} cells. \progret {\tt SCOTCH\_graphInduceList} returns $0$ if the induced graph has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphInducePart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphInducePart ( & const SCOTCH\_Graph * & orggrafptr, \\ & SCOTCH\_Num & vnumnbr, \\ & SCOTCH\_GraphPart2 * & parttab, \\ & SCOTCH\_GraphPart2 & partval, \\ & SCOTCH\_Graph * & indgrafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphinducepart ( & doubleprecision (*) & orggrafdat, \\ & integer*{\it num} & vnumnbr, \\ & character{\it num} (*) & parttab, \\ & character{\it num} & partval, \\ & doubleprecision (*) & indgrafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphInducePart} routine computes an induced graph \texttt{indgrafdat} from the original graph \texttt{orggrafdat}. The vertices that are kept in the induced graph are the \texttt{vnumnbr} vertices whose part number in the \texttt{parttab} array are equal to \texttt{partval}. The \texttt{SCOTCH\_\lbt Graph\lbt Part2} type, being a very small integer (most likely, an \texttt{unsigned char}), is assumed to hold only small values, e.g. \texttt{0} or \texttt{1}. \progret {\tt SCOTCH\_graphInducePart} returns $0$ if the induced graph has been successfully computed, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphInit}} \label{sec-lib-func-graphinit} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphInit ( & SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphinit ( & doubleprecision (*) & grafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphInit} function initializes a {\tt SCOTCH\_\lbt Graph} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Graph} structure. When the graph data is no longer of use, call function {\tt SCOTCH\_\lbt graph\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_graphInit} returns $0$ if the graph structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphLoad}} \label{sec-lib-func-graphload} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphLoad ( & SCOTCH\_Graph * & grafptr, \\ & FILE * & stream, \\ & SCOTCH\_Num & baseval, \\ & SCOTCH\_Num & flagval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphload ( & doubleprecision (*) & grafdat, \\ & integer & fildes, \\ & integer*{\it num} & baseval, \\ & integer*{\it num} & flagval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphLoad} routine fills the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the source graph description available from stream {\tt stream} in the \scotch\ graph format (see section~\ref{sec-file-sgraph}). To ease the handling of source graph files by programs written in C as well as in Fortran, the base value of the graph to read can be set to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the proper value. A value of {\tt -1} indicates that the graph base should be the same as the one provided in the graph description that is read from {\tt stream}. The {\tt flagval} value is a combination of the following integer values, that may be added or bitwise-ored: \begin{itemize} \iteme[{\tt 0}] Keep vertex and edge weights if they are present in the {\tt stream} data. \iteme[{\tt 1}] Remove vertex weights. The graph read will have all of its vertex weights set to one, regardless of what is specified in the {\tt stream} data. \iteme[{\tt 2}] Remove edge weights. The graph read will have all of its edge weights set to one, regardless of what is specified in the {\tt stream} data. \end{itemize} Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_graphLoad} returns $0$ if the graph structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphSave ( & const SCOTCH\_Graph * & grafptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphsave ( & doubleprecision (*) & grafdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphSave} routine saves the contents of the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} to stream {\tt stream}, in the \scotch\ graph format (see section~\ref{sec-file-sgraph}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_graphSave} returns $0$ if the graph structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphSize}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphSize ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & vertptr, \\ & SCOTCH\_Num * & edgeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphsize ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & vertnbr, \\ & integer*{\it num} & edgenbr) \end{tabular}} \progdes The {\tt SCOTCH\_graphSize} routine fills the two areas of type {\tt SCOTCH\_\lbt Num} pointed to by {\tt vertptr} and {\tt edgeptr} with the number of vertices and arcs (that is, twice the number of edges) of the given graph pointed to by {\tt grafptr}, respectively. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. This routine is useful to get the size of a graph read by means of the {\tt SCOTCH\_\lbt graph\lbo Load} routine, in order to allocate auxiliary arrays of proper sizes. If the whole structure of the graph is wanted, function {\tt SCOTCH\_graph\lbo Data} should be preferred. \end{itemize} \subsubsection{{\tt SCOTCH\_graphStat}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphStat ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & velominptr, \\ & SCOTCH\_Num * & velomaxptr, \\ & SCOTCH\_Num * & velosumptr, \\ & double * & veloavgptr, \\ & double * & velodltptr, \\ & SCOTCH\_Num * & degrminptr, \\ & SCOTCH\_Num * & degrmaxptr, \\ & double * & degravgptr, \\ & double * & degrdltptr, \\ & SCOTCH\_Num * & edlominptr, \\ & SCOTCH\_Num * & edlomaxptr, \\ & SCOTCH\_Num * & edlosumptr, \\ & double * & edloavgptr, \\ & double * & edlodltptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphstat ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & velomin, \\ & integer*{\it num} & velomax, \\ & integer*{\it num} & velosum, \\ & doubleprecision & veloavg, \\ & doubleprecision & velodlt, \\ & integer*{\it num} & degrmin, \\ & integer*{\it num} & degrmax, \\ & doubleprecision & degravg, \\ & doubleprecision & degrdlt, \\ & integer*{\it num} & edlomin, \\ & integer*{\it num} & edlomax, \\ & integer*{\it num} & edlosum, \\ & doubleprecision & edloavg, \\ & doubleprecision & edlodlt) \end{tabular}} \progdes The {\tt SCOTCH\_graphStat} routine produces some statistics regarding the graph structure pointed to by {\tt grafptr}. {\tt velomin}, {\tt velomax}, {\tt velosum}, {\tt veloavg} and {\tt velodlt} are the minimum vertex load, the maximum vertex load, the sum of all vertex loads, the average vertex load, and the variance of the vertex loads, respectively. {\tt degrmin}, {\tt degrmax}, {\tt degravg} and {\tt degrdlt} are the minimum vertex degree, the maximum vertex degree, the average vertex degree, and the variance of the vertex degrees, respectively. {\tt edlomin}, {\tt edlomax}, {\tt edlosum}, {\tt edloavg} and {\tt edlodlt} are the minimum edge load, the maximum edge load, the sum of all edge loads, the average edge load, and the variance of the edge loads, respectively. \end{itemize} \subsection{High-level graph partitioning, mapping and clustering routines} \label{sec-lib-func-part-map} \index{Clustering} The routines presented in this section provide high-level functionalities and free the user from the burden of calling in sequence several of the low-level routines described in the next section. \subsubsection{{\tt SCOTCH\_graphMap}} \label{sec-lib-func-graphmap} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMap ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmap ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & archdat, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMap} routine computes a mapping of the source graph structure pointed to by {\tt grafptr} onto the target architecture pointed to by {\tt archptr}, using the mapping strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and returns the mapping data in the array pointed to by {\tt parttab}. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. On return, every cell of the mapping array holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. When a variable-sized architecture is used (see Section~\ref{sec-file-target-variable}) and a proper strategy is provided (see Section~\ref{sec-lib-func-stratgraphclusterbuild}), the {\tt SCOTCH\_graph\lbt Map} routine can cluster\index{Clustering} the given graph by means of recursive bipartitioning. In this case, clusters are labeled according to a binary scheme: the part equal to the whole graph is numbered $1$, its two bipartitioned descendants are labeled $2$ and $3$, the two descendants of part $2$ are labeled $4$ and $5$, and so on. More generally, clusters are labeled such that the two descendants of any cluster $i$ that has been split are labeled $2i$ and $2i + 1$. Classical clustering strategies perform recursive bipartitioning of process graphs until some criterion is met: either parts become smaller than some size threshold, or edge density becomes higher than some ratio, etc. If graph mapping is performed using a variable-sized architecture and a classical mapping strategy, recursive bipartitioning will halt only when the load imbalance criterion allows for one of the bipartitioned parts to be empty (that is, most often, parts contains a single vertex). \progret {\tt SCOTCH\_graphMap} returns $0$ if the mapping of the graph has been successfully computed, and $1$ else. In this last case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapFixed}} \label{sec-lib-func-graphmapfixed} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapFixed ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapfixed ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & archdat, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapFixed} routine computes a mapping of the source graph structure pointed to by {\tt grafptr} onto the target architecture pointed to by {\tt archptr}, using the mapping strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and fills the array pointed to by {\tt parttab} with the mapping data regarding vertices which have not been pre-assigned by the user. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. It must also have been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. In each cell of the {\tt parttab} array, a value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. On return, every cell of the mapping array that contained a $-1$ will hold the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphMapFixed} returns $0$ if the mapping of the graph has been successfully computed, and $1$ else. In this last case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphPart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphPart ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphpart ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphPart} routine computes an edge-separated partition, into {\tt partnbr} parts, of the source graph structure pointed to by {\tt grafptr}, using the graph edge partitioning strategy pointed to by {\tt stratptr} (as defined in Section~\ref{sec-lib-format-map}), and returns the partition data in the array pointed to by {\tt parttab}. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. On return, every cell of the mapping array holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to $\mathtt{partnbr} - 1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphPart} returns $0$ if the graph partition has been successfully computed, and $1$ else. In the latter case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphPartFixed}} \label{sec-lib-func-graphpartfixed} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphPartFixed ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphpartfixed ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphPartFixed} routine computes an edge-separated partition, into {\tt partnbr} parts, of the source graph structure pointed to by {\tt grafptr}, using the graph edge partitioning strategy pointed to by {\tt stratptr} (as defined in Section~\ref{sec-lib-format-map}), and fills the array pointed to by {\tt parttab} with the partitioning data regarding vertices which have not been pre-assigned by the user. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. It must also have been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. In each cell of the {\tt parttab} array, a value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. On return, every cell of the mapping array that contained a $-1$ will hold the number of the target vertex to which the corresponding source vertex is assigned. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphPartFixed} returns $0$ if the graph partition has been successfully computed, and $1$ else. In the latter case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphPartOvl}} \label{sec-lib-func-graphpartovl} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphPartOvl ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphpartovl ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphPartOvl} routine computes an overlapped vertex-separated partition, into {\tt partnbr} parts, of the source graph structure pointed to by {\tt grafptr}, using the graph vertex partitioning with overlap strategy pointed to by {\tt stratptr} (as defined in Section~\ref{sec-lib-format-part-ovl}), and returns the partition data in the array pointed to by {\tt parttab}. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. On return, every array cell holds the number of the part to which the corresponding vertex is mapped. Regular parts are numbered from $0$ to $\mathtt{partnbr} - 1$, and separator vertices are labeled with part number {\tt -1}. While {\tt SCOTCH\_graphMap} and {\tt SCOTCH\_\lbt graph\lbt Part} are based on edge partitioning methods, {\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} relies on a completely distinct set of routines to compute vertex separators. This is why {\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} requires strategy strings of a different kind, created by the {\tt SCOTCH\_\lbt strat\lbt Graph\lbt Part\lbt Ovl*} routines only (see Sections~\ref{sec-lib-func-stratgraphpartovl} and~\ref{sec-lib-func-stratgraphpartovlbuild}). \progret {\tt SCOTCH\_graphPartOvl} returns $0$ if the partition of the graph has been successfully computed, and $1$ else. In the latter case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRemap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRemap ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num * & parotab, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphremap ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & archdat, \\ & integer*{\it num} (*) & parotab, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRemap} routine computes a remapping of the source graph structure pointed to by {\tt grafptr} onto the target architecture pointed to by {\tt archptr}, based on the old partition array pointed to by {\tt parotab}, using the mapping strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and returns the mapping data in the array pointed to by {\tt parttab}. The {\tt parotab} array stores the old partition that is used to compute migration costs. Every cell contains values from $0$ to the number of target vertices minus $1$, or $-1$ for vertices that did not belong to the old partition (e.g., vertices newly created by graph adaptation, which can be placed at no cost before their associated data is interpolated). With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. On return, every cell of the mapping array holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphRemap} returns $0$ if the mapping of the graph has been successfully computed, and $1$ else. In this last case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRemapFixed}} \label{sec-lib-func-graphremapfixed} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRemapFixed ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Arch * & archptr, \\ & const SCOTCH\_Num * & parotab, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphremapfixed ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & archdat, \\ & integer*{\it num} (*) & parotab, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRemapFixed} routine computes a remapping of the source graph structure pointed to by {\tt grafptr} onto the target architecture pointed to by {\tt archptr}, based on the old partition array pointed to by {\tt parotab}, using the mapping strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and fills the array pointed to by {\tt parttab} with the mapping data regarding vertices which have not been pre-assigned by the user. The {\tt parotab} array stores the old partition that is used to compute migration costs. Every cell contains values from $0$ to the number of target vertices minus $1$, or $-1$ for vertices that did not belong to the old partition (e.g., vertices newly created by graph adaptation, which can be placed at no cost before their associated data is interpolated). With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. It must also have been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. In each cell of the {\tt parttab} array, a value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. On return, every cell of the mapping array that contained a $-1$ will hold the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphRemapFixed} returns $0$ if the mapping of the graph has been successfully computed, and $1$ else. In this last case, the {\tt parttab} array may however have been partially or completely filled, with some $-1$'s removed, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRepart}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRepart ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Num * & parotab, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphrepart ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & integer*{\it num} (*) & parotab, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRepart} routine computes an edge-separated repartition, into {\tt partnbr} parts, of the source graph structure pointed to by {\tt grafptr}, based on the old partition array pointed to by {\tt parotab}, using the partitioning strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and returns the partition data in the array pointed to by {\tt parttab}. The {\tt parotab} array stores the old partition that is used to compute migration costs. Every cell contains values from $0$ to the number of target vertices minus $1$, or $-1$ for vertices that did not belong to the old partition (e.g., vertices newly created by graph adaptation, which can be assigned to any part at no cost before their associated data is interpolated). With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. On return, every cell of the mapping array holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphRepart} returns $0$ if the graph partition has been successfully computed, and $1$ else. In the latter case, the {\tt parttab} array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRepartFixed}} \label{sec-lib-func-graphrepartfixed} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRepartFixed ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Num & partnbr, \\ & const SCOTCH\_Num * & parotab, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphrepartfixed ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} & partnbr, \\ & integer*{\it num} (*) & parotab, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRepartFixed} routine computes an edge-separated repartition, into {\tt partnbr} parts, of the source graph structure pointed to by {\tt grafptr}, based on the old partition array pointed to by {\tt parotab}, using the partitioning strategy pointed to by {\tt straptr} (as defined in Section~\ref{sec-lib-format-map}), and fills the array pointed to by {\tt parttab} with the mapping data regarding vertices which have not been pre-assigned by the user. The {\tt parotab} array stores the old partition that is used to compute migration costs. Every cell contains values from $0$ to the number of target vertices minus $1$, or $-1$ for vertices that did not belong to the old partition (e.g., vertices newly created by graph adaptation, which can be assigned to any part at no cost before their associated data is interpolated). With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. It must also have been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. In each cell of the {\tt parttab} array, a value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. On return, every cell of the mapping array that contained a $-1$ will hold the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices minus $1$. This semantics aims at complying with standards such as MPI, in which process ranks start from $0$. \progret {\tt SCOTCH\_graphRepartFixed} returns $0$ if the graph partition has has been successfully computed, and $1$ else. In this last case, the {\tt parttab} array may however have been partially or completely filled, with some $-1$'s removed, but its contents are not significant. \end{itemize} \subsection{Low-level graph partitioning, mapping and clustering routines} \label{sec-lib-func-part-map-low} All of the following routines operate on a {\tt SCOTCH\_\lbt Mapping} structure that contains references to the partition and mapping arrays to be filled during the mapping or remapping process. \subsubsection{{\tt SCOTCH\_graphMapCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapCompute ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapcompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapCompute} routine computes a mapping on the given {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr} using the mapping strategy pointed to by {\tt stratptr}. On return, every cell of the mapping array defined by {\tt SCOTCH\_\lbt map\lbt Init} holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices, minus $1$. \progret {\tt SCOTCH\_graphMapCompute} returns $0$ if the mapping has been successfully computed, and $1$ else. In this latter case, the mapping array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphMapExit ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapexit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapExit} function frees the contents of a {\tt SCOTCH\_\lbt Mapping} structure previously initialized by {\tt SCOTCH\_\lbt graph\lbt Map\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt graph\lbt Map*} routines other than {\tt SCOTCH\_\lbt graph\lbt Map\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapFixedCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapFixedCompute ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapfixedcompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapFixedCompute} routine computes a mapping on the given {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr} using the mapping strategy pointed to by {\tt stratptr}. The mapping must have been built so that its partition array has been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. In each cell of the {\tt parttab} array, a value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. On return, every cell of the mapping array defined by {\tt SCOTCH\_\lbt map\lbt Init} that contained a $-1$ will hold the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices, minus $1$. \progret {\tt SCOTCH\_graphMapFixedCompute} returns $0$ if the mapping has been successfully computed, and $1$ else. In this latter case, the mapping array may however have been partially or completely filled, with some $-1$'s removed, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapInit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapInit ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & const SCOTCH\_Arch * & archptr, \\ & SCOTCH\_Num * & parttab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapinit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & archdat, \\ & integer*{\it num} (*) & parttab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapInit} routine fills the mapping structure pointed to by {\tt mappptr} with all of the data that is passed to it. Thus, all subsequent calls to ordering routines such as {\tt SCOTCH\_\lbt graph\lbt Map\lbt Compute}, using this mapping structure as parameter, will place mapping results in field {\tt parttab}. {\tt parttab} is the pointer to an array of as many {\tt SCOTCH\_\lbt Num}s as there are vertices in the graph pointed to by {\tt grafptr}, and which will receive the indices of the vertices of the target architecture pointed to by {\tt archptr}. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Mapping} structure. When the mapping structure is no longer of use, call function {\tt SCOTCH\_graph\lbt \lbt Map\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_graphMapInit} returns $0$ if the mapping structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapLoad}} \label{sec-lib-graph-map-load} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapLoad ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapload ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapLoad} routine fills the {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr} with the mapping data available in the \scotch\ mapping format (see section~\ref{sec-file-map}) from stream {\tt stream}. If the source graph has vertex labels attached to its vertices, mapping indices in the input stream are assumed to be vertex labels as well. Users willing to have subsequent access to the partition data rather than to fill an opaque {\tt SCOTCH\_\lbt Mapping} structure are invited to use the {\tt SCOTCH\_\lbt graph\lbt Tab\lbt Load} routine instead. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_graphMapLoad} returns $0$ if the mapping structure has been successfully loaded from {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapSave ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Mapping * & mappptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapsave ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphMapSave} routine saves the contents of the {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr} to stream {\tt stream}, in the \scotch\ mapping format (see section~\ref{sec-file-map}). Users willing to save a partition data array rather than an opaque {\tt SCOTCH\_\lbt Mapping} structure are invited to use the {\tt SCOTCH\_\lbt graph\lbt Tab\lbt Save} routine instead. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_graphMapSave} returns $0$ if the mapping structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphMapView}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphMapView ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Mapping * & mappptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphmapview ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_mapView} routine summarizes statistical information on the mapping pointed to by {\tt mappptr} (load of target processors, number of neighboring domains, average dilation and expansion, edge cut size, distribution of edge dilations), and prints these results to stream {\tt stream}. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the output data file. \progret {\tt SCOTCH\_mapView} returns $0$ if the data has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRemapCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRemapCompute ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & SCOTCH\_Mapping * & mapoptr, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphremapcompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & mapodat, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRemapCompute} routine computes a mapping on the given {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr}, using the mapping strategy pointed to by {\tt stratptr}, and accounting for migration costs computed based on the already computed partition pointed to by {\tt mapoptr}. This partition should have been created from the same graph and target architecture as the one pointer to by {\tt mappptr}. With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. On return, every cell of the new mapping array defined by {\tt SCOTCH\_\lbt map\lbt Init} holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices, minus $1$. \progret {\tt SCOTCH\_graphRemapCompute} returns $0$ if the remapping has been successfully computed, and $1$ else. In this latter case, the mapping array may however have been partially or completely filled, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphRemapFixedCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphRemapFixedCompute ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Mapping * & mappptr, \\ & SCOTCH\_Mapping * & mapoptr, \\ & const double & emraval, \\ & const SCOTCH\_Num * & vmlotab, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphremapfixedcompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & mappdat, \\ & doubleprecision (*) & mapodat, \\ & doubleprecision & emraval, \\ & integer*{\it num} (*) & vmlotab, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphRemapFixedCompute} routine computes a mapping on the given {\tt SCOTCH\_\lbt Mapping} structure pointed to by {\tt mappptr}, using the mapping strategy pointed to by {\tt stratptr}, and accounting for migration costs computed based on the already computed partition pointed to by {\tt mapoptr}. This partition should have been created from the same graph and target architecture as the one pointer to by {\tt mappptr}. The partition array of the mapping pointed to by {\tt mappptr} must have been filled in advance by the user, with data indicating whether vertices have been already pre-assigned to a fixed position or are to be processed by the routine. A value of $-1$ indicates that the vertex is movable, while a value between $0$ and the number of target vertices minus $1$ indicates that the vertex has been pre-assigned to the given part. With every source graph vertex is associated an individual integer migration cost, stored in the {\tt vmlotab} array. These costs are accounted for in the communication cost function to minimize as multiples of the individual migration cost {\tt emraval}. Since this value is provided as a floating point number, migration costs can be set as fractions or as non-integer multiples of the cut metric communication costs stored as integer edge loads. On return, every cell of the new mapping array defined by {\tt SCOTCH\_\lbt map\lbt Init} that contained a $-1$ holds the number of the target vertex to which the corresponding source vertex is mapped. The numbering of target values is {\em not\/} based: target vertices are numbered from $0$ to the number of target vertices, minus $1$. \progret {\tt SCOTCH\_graphRemapFixedCompute} returns $0$ if the remapping has been successfully computed, and $1$ else. In this latter case, the mapping array may however have been partially or completely filled, with some $-1$'s removed, but its contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphTabLoad}} \label{sec-lib-graph-tab-load} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphTabLoad ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & parttab, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphtabload ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} (*) & parttab, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphTabLoad} routine fills the part array pointed to by {\tt parttab} with the mapping data available in the \scotch\ mapping format (see section~\ref{sec-file-map}) from stream {\tt stream}. This routine allows users to fill plain partition arrays rather than opaque mapping structures, as routine {\tt SCOTCH\_\lbt graph\lbt Map\lbt Load} does. The {\tt parttab} array should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph. Upon completion, array cells contain the indices of the parts to which vertices belong according to the input mapping stream, or {\tt -1} if they were not mentioned in the stream. If the source graph has vertex labels attached to its vertices, mapping indices in the input stream are assumed to be vertex labels as well. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_graphTabLoad} returns $0$ if the part array has been successfully loaded from {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphTabSave}} \label{sec-lib-graph-tab-load} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphTabSave ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Num * & parttab, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphtabsave ( & doubleprecision (*) & grafdat, \\ & integer*{\it num} (*) & parttab, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphTabSave} routine saves to stream {\tt stream} the contents of the part array pointed to by \texttt{parttab}, on the form of mapping data in the \scotch\ mapping format (see section~\ref{sec-file-map}). This routine allows users to save plain partition arrays rather than opaque mapping structures, as routine \texttt{SCOTCH\_\lbt graph\lbt Map\lbt Save} does. Upon completion, the produced mapping file contain the indices of the parts to which vertices belong according to the given part array. If the source graph has vertex labels attached to its vertices, mapping indices in the output stream are replaced by the vertex labels. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_graphTabSave} returns $0$ if the part array has been successfully saved to \texttt{stream}, and $1$ else. \end{itemize} \subsection{High-level graph ordering routines} This routine provides high-level functionality and frees the user from the burden of calling in sequence several of the low-level routines described in the next section. \subsubsection{{\tt SCOTCH\_graphOrder}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrder ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & permtab, \\ & SCOTCH\_Num * & peritab, \\ & SCOTCH\_Num * & cblkptr, \\ & SCOTCH\_Num * & rangtab, \\ & SCOTCH\_Num * & treetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphorder ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & permtab, \\ & integer*{\it num} (*) & peritab, \\ & integer*{\it num} & cblknbr, \\ & integer*{\it num} (*) & rangtab, \\ & integer*{\it num} (*) & treetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrder} routine computes a block ordering of the unknowns of the symmetric sparse matrix the adjacency structure of which is represented by the source graph structure pointed to by {\tt grafptr}, using the ordering strategy pointed to by {\tt stratptr}, and returns ordering data in the scalar pointed to by {\tt cblkptr} and the four arrays {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab}. The {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab} arrays should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are vertices in the source graph, plus one in the case of {\tt rangtab}. Any of the five output fields can be set to {\tt NULL} if the corresponding information is not needed. Since, in Fortran, there is no null reference, passing a reference to {\tt grafptr} in these fields will have the same effect. On return, {\tt permtab} holds the direct permutation of the unknowns, that is, vertex $i$ of the original graph has index {\tt permtab[$i$]} in the reordered graph, while {\tt peritab} holds the inverse permutation, that is, vertex $i$ in the reordered graph had index {\tt peritab[$i$]} in the original graph. All of these indices are numbered according to the base value of the source graph: permutation indices are numbered from {\tt baseval} to $\mathtt{vertnbr} + \mathtt{baseval} - 1$, that is, from $0$ to $\mathtt{vertnbr} - 1$ if the graph base is $0$, and from $1$ to $\mathtt{vertnbr}$ if the graph base is $1$. The three other result fields, {\tt *cblkptr}, {\tt rangtab} and {\tt treetab}, contain data related to the block structure. {\tt *cblkptr} holds the number of column blocks of the produced ordering, and {\tt rangtab} holds the starting indices of each of the permuted column blocks, in increasing order, so that column block $i$ starts at index {\tt rangtab\lbt [$i$]} and ends at index $(\mbox{\tt rangtab}\lbt\mathtt{[}i + 1\mathtt{]} - 1)$, inclusive, in the new ordering. {\tt treetab} holds the separators tree structure, that is, {\tt treetab[$i$]} is the index of the father of column block $i$ in the separators tree, or $-1$ if column block $i$ is the root of the separators tree. Please refer to Section~\ref{sec-lib-format-order} for more information. \progret {\tt SCOTCH\_graphOrder} returns $0$ if the ordering of the graph has been successfully computed, and $1$ else. In this last case, the {\tt rangtab}, {\tt permtab}, and {\tt peritab} arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsection{Low-level graph ordering routines} All of the following routines operate on a {\tt SCOTCH\_\lbt Ordering} structure that contains references to the permutation arrays to be filled during the graph ordering process. \subsubsection{{\tt SCOTCH\_graphOrderCheck}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderCheck ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Ordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordercheck ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderCheck} routine checks the consistency of the given {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr}. \progret {\tt SCOTCH\_graphOrderCheck} returns $0$ if ordering data are consistent, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderCompute ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordercompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderCompute} routine computes a block ordering of the graph structure pointed to by {\tt grafptr}, using the ordering strategy pointed to by {\tt stratptr}, and stores its result in the ordering structure pointed to by {\tt ordeptr}. On return, the ordering structure holds a block ordering of the given graph (see section~\ref{sec-lib-graph-order-init} for a description of the ordering fields). \progret {\tt SCOTCH\_graphOrderCompute} returns $0$ if the ordering has been successfully computed, and $1$ else. In this latter case, the ordering arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderComputeList}} \label{sec-lib-graph-order-compute-list} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderComputeList ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & SCOTCH\_Num & listnbr, \\ & SCOTCH\_Num * & listtab, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordercompute ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} & listnbr, \\ & integer*{\it num} (*) & listtab, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderComputeList} routine computes a block ordering of a subgraph of the graph structure pointed to by {\tt grafptr}, using the ordering strategy pointed to by {\tt stratptr}, and stores its result in the ordering structure pointed to by {\tt ordeptr}. The induced subgraph is described by means of a vertex list: {\tt listnbr} holds the number of vertices to keep in the induced subgraph, the indices of which are given, in any order, in the {\tt listtab} array. On return, the ordering structure holds a block ordering of the induced subgraph (see section~\ref{sec-lib-format-order} for a description of the ordering fields). To compute this ordering, graph ordering methods such as the minimum degree and minimum fill methods will base on the original degree of the induced graph vertices, their non-induced neighbors being considered as halo vertices (see Section~\ref{sec-algo-nested-hybrid} for more information on halo vertices). Because an ordering always refers to the full graph, the ordering computed by {\tt SCOTCH\_\lbt graph\lbt Order\lbt Compute\lbt List} is divided into two distinct parts: the induced graph vertices are ordered by applying to the induced graph the strategy provided by the {\tt stratptr} parameter, while non-induced vertex are ordered consecutively with the highest available indices. Consequently, the permuted indices of induced vertices range from {\tt baseval} to $(\mathtt{listnbr} + \mathtt{baseval} - 1)$, while the permuted indices of the remaining vertices range from $(\mathtt{listnbr} + \mathtt{baseval})$ to $(\mathtt{vertnbr} + \mathtt{baseval} - 1)$, inclusive. The separation tree yielded by {\tt SCOTCH\_\lbt graph\lbt Order\lbt Compute\lbt List} reflects this property: it is made of two branches, the first one corresponding to the induced subgraph, and the second one to the remaining vertices. Since these two subgraphs are not considered to be connected, both will have their own root, represented by a $-1$ value in the {\tt treetab} array of the ordering. \progret {\tt SCOTCH\_graphOrderComputeList} returns $0$ if the ordering has been successfully computed, and $1$ else. In this latter case, the ordering arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_graphOrderExit ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Ordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphorderexit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderExit} function frees the contents of a {\tt SCOTCH\_\lbt Ordering} structure previously initialized by {\tt SCOTCH\_\lbt graph\lbt Order\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt graph\lbt Order*} routines other than {\tt SCOTCH\_\lbt graph\lbt Order\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderInit}} \label{sec-lib-graph-order-init} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderInit ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & SCOTCH\_Num * & permtab, \\ & SCOTCH\_Num * & peritab, \\ & SCOTCH\_Num * & cblkptr, \\ & SCOTCH\_Num * & rangtab, \\ & SCOTCH\_Num * & treetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphorderinit ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} (*) & permtab, \\ & integer*{\it num} (*) & peritab, \\ & integer*{\it num} & cblknbr, \\ & integer*{\it num} (*) & rangtab, \\ & integer*{\it num} (*) & treetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graph\lbt Order\lbt Init} routine fills the ordering structure pointed to by {\tt ordeptr} with all of the data that are passed to it. Thus, all subsequent calls to ordering routines such as {\tt SCOTCH\_\lbt graph\lbt Order\lbt Compute}, using this ordering structure as parameter, will place ordering results in fields {\tt permtab}, {\tt peritab}, {\tt *cblkptr}, {\tt rangtab} or {\tt treetab}, if they are not set to {\tt NULL}. {\tt permtab} is the ordering permutation array, of size ${\tt vertnbr}$, {\tt peritab} is the inverse ordering permutation array, of size ${\tt vertnbr}$, {\tt cblkptr} is the pointer to a {\tt SCOTCH\_\lbt Num} that will receive the number of produced column blocks, {\tt rangtab} is the array that holds the column block span information, of size $\mathtt{vertnbr} + 1$, and {\tt treetab} is the array holding the structure of the separators tree, of size ${\tt vertnbr}$. See the above manual page of {\tt SCOTCH\_graph\lbt Order}, as well as section~\ref{sec-lib-format-order}, for an explanation of the semantics of all of these fields. The {\tt SCOTCH\_\lbt graph\lbt Order\lbt Init} routine should be the first function to be called upon a {\tt SCOTCH\_\lbt Ordering} structure for ordering graphs. When the ordering structure is no longer of use, the {\tt SCOTCH\_\lbt graph\lbt Order\lbt Exit} function must be called, in order to to free its internal structures. \progret {\tt SCOTCH\_graphOrderInit} returns $0$ if the ordering structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderLoad}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderLoad ( & const SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphorderload ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderLoad} routine fills the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} with the ordering data available in the \scotch\ ordering format (see section~\ref{sec-file-ord}) from stream {\tt stream}. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the ordering file. \progret {\tt SCOTCH\_graphOrderLoad} returns $0$ if the ordering structure has been successfully loaded from {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderSave ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordersave ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderSave} routine saves the contents of the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ ordering format (see section~\ref{sec-file-ord}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the ordering file. \progret {\tt SCOTCH\_graphOrderSave} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderSaveMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderSaveMap ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordersavemap ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderSaveMap} routine saves the block partitioning data associated with the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ mapping format (see section~\ref{sec-file-map}). A target domain number is associated with every block, such that all node vertices belonging to the same block are shown as belonging to the same target vertex. The resulting mapping file can be used by the {\tt gout} program (see Section~\ref{sec-prog-gout}) to produce pictures showing the different separators and blocks. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mapping file. \progret {\tt SCOTCH\_graphOrderSaveMap} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphOrderSaveTree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphOrderSaveTree ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphordersavetree ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_graphOrderSaveTree} routine saves the tree hierarchy information associated with the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}. The format of the tree output file resembles the one of a mapping or ordering file: it is made up of as many lines as there are vertices in the ordering. Each of these lines holds two integer numbers. The first one is the index or the label of the vertex, and the second one is the index of its parent node in the separators tree, or $-1$ if the vertex belongs to a root node. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the tree mapping file. \progret {\tt SCOTCH\_graphOrderSaveTree} returns $0$ if the separators tree structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsection{Mesh handling routines} \label{sec-lib-mesh} \subsubsection{{\tt SCOTCH\_meshAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Mesh * SCOTCH\_meshAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_meshAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Mesh} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The allocated space must be initialized before use, by means of the {\tt SCOTCH\_\lbt mesh\lbt Init} routine. \progret {\tt SCOTCH\_meshAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshBuild ( & SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Num & velmbas, \\ & const SCOTCH\_Num & vnodbas, \\ & const SCOTCH\_Num & velmnbr, \\ & const SCOTCH\_Num & vnodnbr, \\ & const SCOTCH\_Num * & verttab, \\ & const SCOTCH\_Num * & vendtab, \\ & const SCOTCH\_Num * & velotab, \\ & const SCOTCH\_Num * & vnlotab, \\ & const SCOTCH\_Num * & vlbltab, \\ & const SCOTCH\_Num & edgenbr, \\ & const SCOTCH\_Num * & edgetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshbuild ( & doubleprecision (*) & meshdat, \\ & integer*{\it num} & velmbas, \\ & integer*{\it num} & vnodbas, \\ & integer*{\it num} & velmnbr, \\ & integer*{\it num} & vnodnbr, \\ & integer*{\it num} (*) & verttab, \\ & integer*{\it num} (*) & vendtab, \\ & integer*{\it num} (*) & velotab, \\ & integer*{\it num} (*) & vnlotab, \\ & integer*{\it num} (*) & vlbltab, \\ & integer*{\it num} & edgenbr, \\ & integer*{\it num} (*) & edgetab, \\ & integer*{\it num} & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshBuild} routine fills the source mesh structure pointed to by {\tt meshptr} with all of the data that is passed to it. {\tt velmbas} and {\tt vnodbas} are the base values for the element and node vertices, respectively. {\tt velmnbr} and {\tt vnodnbr} are the number of element and node vertices, respectively, such that either $\mathtt{velmbas} +\mathtt{velmnbr}=\mathtt{vnodnbr}$ or $\mathtt{vnodbas} +\mathtt{vnodnbr}=\mathtt{velmnbr}$ holds, and typically $\min(\mathtt{velmbas}, \mathtt{vnodbas})$ is $0$ for structures built from C and $1$ for structures built from Fortran. {\tt verttab} is the adjacency index array, of size $({\tt velmnbr} + {\tt vnodnbr} + 1)$ if the edge array is compact (that is, if {\tt vendtab} equals $\mathtt{vendtab}+1$ or {\tt NULL}), or of size $({\tt velmnbr} + {\tt vnodnbr}1)$ else. {\tt vendtab} is the adjacency end index array, of size $({\tt velmnbr} + {\tt vnodnbr})$ if it is disjoint from {\tt verttab}. {\tt velotab} is the element vertex load array, of size {\tt velmnbr} if it exists. {\tt vnlotab} is the node vertex load array, of size {\tt vnodnbr} if it exists. {\tt vlbltab} is the vertex label array, of size $({\tt velmnbr} + {\tt vnodnbr})$ if it exists. {\tt edgenbr} is the number of arcs (that is, twice the number of edges). {\tt edgetab} is the adjacency array, of size at least {\tt edgenbr} (it can be more if the edge array is not compact). The {\tt vendtab}, {\tt velotab}, {\tt vnlotab} and {\tt vlbltab} arrays are optional, and a {\tt NULL} pointer can be passed as argument whenever they are not defined. Since, in Fortran, there is no null reference, passing the {\tt scotchf\lbt mesh\lbt build} routine a reference equal to {\tt verttab} in the {\tt velotab}, {\tt vnlotab} or {\tt vlbltab} fields makes them be considered as missing arrays. Setting {\tt vendtab} to refer to one cell after {\tt verttab} yields the same result, as it is the exact semantics of a compact vertex array. To limit memory consumption, {\tt SCOTCH\_\lbt mesh\lbo Build} does not copy array data, but instead references them in the {\tt SCOTCH\_\lbt Mesh} structure. Therefore, great care should be taken not to modify the contents of the arrays passed to {\tt SCOTCH\_\lbt mesh\lbo Build} as long as the mesh structure is in use. Every update of the arrays should be preceded by a call to {\tt SCOTCH\_\lbt mesh\lbo Exit}, to free internal mesh structures, and eventually followed by a new call to {\tt SCOTCH\_\lbt mesh\lbo Build} to re-build these internal structures so as to be able to use the new mesh. To ensure that inconsistencies in user data do not result in an erroneous behavior of the \libscotch\ routines, it is recommended, at least in the development stage, to call the {\tt SCOTCH\_\lbt mesh\lbt Check} routine on the newly created {\tt SCOTCH\_\lbt Mesh} structure, prior to any other calls to \libscotch\ routines. \progret {\tt SCOTCH\_meshBuild} returns $0$ if the mesh structure has been successfully set with all of the input data, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshCheck}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshCheck ( & const SCOTCH\_Mesh * & meshptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshcheck ( & doubleprecision (*) & meshdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshCheck} routine checks the consistency of the given {\tt SCOTCH\_\lbt Mesh} structure. It can be used in client applications to determine if a mesh that has been created from used-generated data by means of the {\tt SCOTCH\_\lbt mesh\lbt Build} routine is consistent, prior to calling any other routines of the \libscotch\ library. \progret {\tt SCOTCH\_meshCheck} returns $0$ if mesh data are consistent, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshData}} \label{sec-lib-func-meshdata} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_meshData ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Num * & vebaptr, \\ & SCOTCH\_Num * & vnbaptr, \\ & SCOTCH\_Num * & velmptr, \\ & SCOTCH\_Num * & vnodptr, \\ & SCOTCH\_Num ** & verttab, \\ & SCOTCH\_Num ** & vendtab, \\ & SCOTCH\_Num ** & velotab, \\ & SCOTCH\_Num ** & vnlotab, \\ & SCOTCH\_Num ** & vlbltab, \\ & SCOTCH\_Num * & edgeptr, \\ & SCOTCH\_Num ** & edgetab, \\ & SCOTCH\_Num * & degrptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshdata ( & doubleprecision (*) & meshdat, \\ & integer*{\it num} (*) & indxtab, \\ & integer*{\it num} & velobas, \\ & integer*{\it num} & vnlobas, \\ & integer*{\it num} & velmnbr, \\ & integer*{\it num} & vnodnbr, \\ & integer*{\it idx} & vertidx, \\ & integer*{\it idx} & vendidx, \\ & integer*{\it idx} & veloidx, \\ & integer*{\it idx} & vnloidx, \\ & integer*{\it idx} & vlblidx, \\ & integer*{\it num} & edgenbr, \\ & integer*{\it idx} & edgeidx, \\ & integer*{\it num} & degrmax) \end{tabular}} \progdes The {\tt SCOTCH\_meshData} routine is the dual of the {\tt SCOTCH\_\lbt mesh\lbo Build} routine. It is a multiple accessor that returns scalar values and array references. {\tt vebaptr} and {\tt vnbaptr} are pointers to locations that will hold the mesh base value for elements and nodes, respectively (the minimum of these two values is typically $0$ for structures built from C and $1$ for structures built from Fortran). {\tt velmptr} and {\tt vnodptr} are pointers to locations that will hold the number of element and node vertices, respectively. {\tt verttab} is the pointer to a location that will hold the reference to the adjacency index array, of size $(\mathtt{*velmptr} + \mathtt{*vnodptr} + 1)$ if the adjacency array is compact, or of size $(\mathtt{*velmptr} + \mathtt{*vnodptr})$ else. {\tt vendtab} is the pointer to a location that will hold the reference to the adjacency end index array, and is equal to $\mathtt{verttab} + 1$ if the adjacency array is compact. {\tt velotab} and {\tt vnlotab} are pointers to locations that will hold the reference to the element and node vertex load arrays, of sizes {\tt *velmptr} and {\tt *vnodptr}, respectively. {\tt vlbltab} is the pointer to a location that will hold the reference to the vertex label array, of size $(\mathtt{*velmptr} + \mathtt{*vnodptr})$. {\tt edgeptr} is the pointer to a location that will hold the number of arcs (that is, twice the number of edges). {\tt edgetab} is the pointer to a location that will hold the reference to the adjacency array, of size at least {\tt edgenbr}. {\tt degrptr} is the pointer to a location that will hold the maximum vertex degree computed across all element and node vertices. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. Since there are no pointers in Fortran, a specific mechanism is used to allow users to access mesh arrays. The {\tt scotchf\lbt mesh\lbt data} routine is passed an integer array, the first element of which is used as a base address from which all other array indices are computed. Therefore, instead of returning references, the routine returns integers, which represent the starting index of each of the relevant arrays with respect to the base input array, or {\tt vertidx}, the index of {\tt verttab}, if they do not exist. For instance, if some base array {\tt myarray\lbt (1)} is passed as parameter {\tt indxtab}, then the first cell of array {\tt verttab} will be accessible as {\tt myarray\lbt (vertidx)}. In order for this feature to behave properly, the {\tt indxtab} array must be word-aligned with the mesh arrays. This is automatically enforced on most systems, but some care should be taken on systems that allow one to access data that is not word-aligned. On such systems, declaring the array after a dummy {\tt double\lbt precision} array can coerce the compiler into enforcing the proper alignment. Also, on 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type. See Section~\ref{sec-lib-inttypesize} for more information on this issue. \end{itemize} \subsubsection{{\tt SCOTCH\_meshExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_meshExit ( & SCOTCH\_Mesh * & meshptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshexit ( & doubleprecision (*) & meshdat) \end{tabular}} \progdes The {\tt SCOTCH\_meshExit} function frees the contents of a {\tt SCOTCH\_\lbt Mesh} structure previously initialized by {\tt SCOTCH\_\lbt meshInit}. All subsequent calls to {\tt SCOTCH\_\lbt mesh*} routines other than {\tt SCOTCH\_\lbt meshInit}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_meshGraph}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshGraph ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Graph * & grafptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshgraph ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & grafdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshGraph} routine builds a graph from a mesh. It creates in the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} a graph having as many vertices as there are nodes in the {\tt SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr}, and where there is an edge between any two graph vertices if and only if there exists in the mesh an element containing both of the associated nodes. Consequently, all of the elements of the mesh are turned into cliques in the resulting graph. In order to save memory space as well as computation time, in the current implementation of {\tt SCOTCH\_meshGraph}, some mesh arrays are shared with the graph structure. Therefore, one should make sure that the graph must no longer be used after the mesh structure is freed. The graph structure can be freed before or after the mesh structure, but must not be used after the mesh structure is freed. \progret {\tt SCOTCH\_meshGraph} returns $0$ if the graph structure has been successfully allocated and filled, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshInit}} \label{sec-lib-func-meshinit} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshInit ( & SCOTCH\_Mesh * & meshptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshinit ( & doubleprecision (*) & meshdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshInit} function initializes a {\tt SCOTCH\_\lbt Mesh} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Mesh} structure. When the mesh data is no longer of use, call function {\tt SCOTCH\_\lbt mesh\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_meshInit} returns $0$ if the mesh structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshLoad}} \label{sec-lib-func-meshload} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshLoad ( & SCOTCH\_Mesh * & meshptr, \\ & FILE * & stream, \\ & SCOTCH\_Num & baseval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshload ( & doubleprecision (*) & meshdat, \\ & integer & fildes, \\ & integer*{\it num} & baseval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshLoad} routine fills the {\tt SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} with the source mesh description available from stream {\tt stream} in the \scotch\ mesh format (see section~\ref{sec-file-smesh}). To ease the handling of source mesh files by programs written in C as well as in Fortran, The base value of the mesh to read can be set to {\tt 0} or {\tt 1}, by setting the {\tt baseval} parameter to the proper value. A value of {\tt -1} indicates that the mesh base should be the same as the one provided in the mesh description that is read from {\tt stream}. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mesh file. \progret {\tt SCOTCH\_meshLoad} returns $0$ if the mesh structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshSave ( & const SCOTCH\_Mesh * & meshptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshsave ( & doubleprecision (*) & meshdat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshSave} routine saves the contents of the {\tt SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} to stream {\tt stream}, in the \scotch\ mesh format (see section~\ref{sec-file-smesh}). Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the mesh file. \progret {\tt SCOTCH\_meshSave} returns $0$ if the mesh structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshSize}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_meshSize ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Num * & velmptr, \\ & SCOTCH\_Num * & vnodptr, \\ & SCOTCH\_Num * & edgeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshsize ( & doubleprecision (*) & meshdat, \\ & integer*{\it num} & velmnbr, \\ & integer*{\it num} & vnodnbr, \\ & integer*{\it num} & edgenbr) \end{tabular}} \progdes The {\tt SCOTCH\_meshSize} routine fills the three areas of type {\tt SCOTCH\_\lbt Num} pointed to by {\tt velmptr}, {\tt vnodptr} and {\tt edgeptr} with the number of element vertices, node vertices and arcs (that is, twice the number of edges) of the given mesh pointed to by {\tt meshptr}, respectively. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. This routine is useful to get the size of a mesh read by means of the {\tt SCOTCH\_\lbt mesh\lbo Load} routine, in order to allocate auxiliary arrays of proper sizes. If the whole structure of the mesh is wanted, function {\tt SCOTCH\_mesh\lbo Data} should be preferred. \end{itemize} \subsubsection{{\tt SCOTCH\_meshStat}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_meshStat ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Num * & vnlominptr, \\ & SCOTCH\_Num * & vnlomaxptr, \\ & SCOTCH\_Num * & vnlosumptr, \\ & double * & vnloavgptr, \\ & double * & vnlodltptr, \\ & SCOTCH\_Num * & edegminptr, \\ & SCOTCH\_Num * & edegmaxptr, \\ & double * & edegavgptr, \\ & double * & edegdltptr, \\ & SCOTCH\_Num * & ndegminptr, \\ & SCOTCH\_Num * & ndegmaxptr, \\ & double * & ndegavgptr, \\ & double * & ndegdltptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshstat ( & doubleprecision (*) & meshdat, \\ & integer*{\it num} & vnlomin, \\ & integer*{\it num} & vnlomax, \\ & integer*{\it num} & vnlosum, \\ & doubleprecision & vnloavg, \\ & doubleprecision & vnlodlt, \\ & integer*{\it num} & edegmin, \\ & integer*{\it num} & edegmax, \\ & doubleprecision & edegavg, \\ & doubleprecision & edegdlt, \\ & integer*{\it num} & ndegmin, \\ & integer*{\it num} & ndegmax, \\ & doubleprecision & ndegavg, \\ & doubleprecision & ndegdlt) \end{tabular}} \progdes The {\tt SCOTCH\_meshStat} routine produces some statistics regarding the mesh structure pointed to by {\tt meshptr}. {\tt vnlomin}, {\tt vnlomax}, {\tt vnlosum}, {\tt vnloavg} and {\tt vnlodlt} are the minimum node vertex load, the maximum node vertex load, the sum of all node vertex loads, the average node vertex load, and the variance of the node vertex loads, respectively. {\tt edegmin}, {\tt edegmax}, {\tt edegavg} and {\tt edegdlt} are the minimum element vertex degree, the maximum element vertex degree, the average element vertex degree, and the variance of the element vertex degrees, respectively. {\tt ndegmin}, {\tt ndegmax}, {\tt ndegavg} and {\tt ndegdlt} are the minimum element vertex degree, the maximum element vertex degree, the average element vertex degree, and the variance of the element vertex degrees, respectively. \end{itemize} \subsection{High-level mesh ordering routines} This routine provides high-level functionality and frees the user from the burden of calling in sequence several of the low-level routines described afterward. \subsubsection{{\tt SCOTCH\_meshOrder}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrder ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Strat * & straptr, \\ & SCOTCH\_Num * & permtab, \\ & SCOTCH\_Num * & peritab, \\ & SCOTCH\_Num * & cblkptr, \\ & SCOTCH\_Num * & rangtab, \\ & SCOTCH\_Num * & treetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshorder ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & stradat, \\ & integer*{\it num} (*) & permtab, \\ & integer*{\it num} (*) & peritab, \\ & integer*{\it num} & cblknbr, \\ & integer*{\it num} (*) & rangtab, \\ & integer*{\it num} (*) & treetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrder} routine computes a block ordering of the unknowns of the symmetric sparse matrix the adjacency structure of which is represented by the elements that connect the nodes of the source mesh structure pointed to by {\tt meshptr}, using the ordering strategy pointed to by {\tt stratptr}, and returns ordering data in the scalar pointed to by {\tt cblkptr} and the four arrays {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab}. The {\tt permtab}, {\tt peritab}, {\tt rangtab} and {\tt treetab} arrays should have been previously allocated, of a size sufficient to hold as many {\tt SCOTCH\_\lbt Num} integers as there are node vertices in the source mesh, plus one in the case of {\tt rangtab}. Any of the five output fields can be set to {\tt NULL} if the corresponding information is not needed. Since, in Fortran, there is no null reference, passing a reference to {\tt meshptr} in these fields will have the same effect. On return, {\tt permtab} holds the direct permutation of the unknowns, that is, node vertex $i$ of the original mesh has index {\tt permtab[$i$]} in the reordered mesh, while {\tt peritab} holds the inverse permutation, that is, node vertex $i$ in the reordered mesh had index {\tt peritab[$i$]} in the original mesh. All of these indices are numbered according to the base value of the source mesh: permutation indices are numbered from $\min(\mathtt{velmbas},\mathtt{vnodbas})$ to $\mathtt{vnodnbr} + \min(\mathtt{velmbas},\mathtt{vnodbas}) - 1$, that is, from $0$ to $\mathtt{vnodnbr} - 1$ if the mesh base is $0$, and from $1$ to $\mathtt{vnodnbr}$ if the mesh base is $1$. The base value for mesh orderings is taken as $\min(\mathtt{velmbas},\mathtt{vnodbas})$, and not just as {\tt vnodbas}, such that orderings that are computed on some mesh have exactly the same index range as orderings that would be computed on the graph obtained from the original mesh by means of the {\tt SCOTCH\_\lbt mesh\lbt Graph} routine. The three other result fields, {\tt *cblkptr}, {\tt rangtab} and {\tt treetab}, contain data related to the block structure. {\tt *cblkptr} holds the number of column blocks of the produced ordering, and {\tt rangtab} holds the starting indices of each of the permuted column blocks, in increasing order, so that column block $i$ starts at index {\tt rangtab\lbt [$i$]} and ends at index $(\mbox{\tt rangtab}\lbt\mathtt{[}i + 1\mathtt{]} - 1)$, inclusive, in the new ordering. {\tt treetab} holds the separators tree structure, that is, {\tt treetab[$i$]} is the index of the father of column block $i$ in the separators tree, or $-1$ if column block $i$ is the root of the separators tree. Please refer to Section~\ref{sec-lib-format-order} for more information. \progret {\tt SCOTCH\_meshOrder} returns $0$ if the ordering of the mesh has been successfully computed, and $1$ else. In this last case, the {\tt rangtab}, {\tt permtab}, and {\tt peritab} arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsection{Low-level mesh ordering routines} All of the following routines operate on a {\tt SCOTCH\_\lbt Ordering} structure that contains references to the permutation arrays to be filled during the mesh ordering process. \subsubsection{{\tt SCOTCH\_meshOrderCheck}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderCheck ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Ordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshordercheck ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderCheck} routine checks the consistency of the given {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr}. \progret {\tt SCOTCH\_meshOrderCheck} returns $0$ if ordering data are consistent, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderCompute}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderCompute ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & const SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshordercompute ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderCompute} routine computes a block ordering of the mesh structure pointed to by {\tt grafptr}, using the mapping strategy pointed to by {\tt stratptr}, and stores its result in the ordering structure pointed to by {\tt ordeptr}. On return, the ordering structure holds a block ordering of the given mesh (see section~\ref{sec-lib-mesh-order-init} for a description of the ordering fields). \progret {\tt SCOTCH\_meshOrderCompute} returns $0$ if the ordering has been successfully computed, and $1$ else. In this latter case, the ordering arrays may however have been partially or completely filled, but their contents are not significant. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_meshOrderExit ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Ordering * & ordeptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshorderexit ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderExit} function frees the contents of a {\tt SCOTCH\_\lbt Ordering} structure previously initialized by {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt mesh\lbt Order*} routines other than {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderInit}} \label{sec-lib-mesh-order-init} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderInit ( & const SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Ordering * & ordeptr, \\ & SCOTCH\_Num * & permtab, \\ & SCOTCH\_Num * & peritab, \\ & SCOTCH\_Num * & cblkptr, \\ & SCOTCH\_Num * & rangtab, \\ & SCOTCH\_Num * & treetab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshorderinit ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & integer*{\it num} (*) & permtab, \\ & integer*{\it num} (*) & peritab, \\ & integer*{\it num} & cblknbr, \\ & integer*{\it num} (*) & rangtab, \\ & integer*{\it num} (*) & treetab, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_mesh\lbt Order\lbt Init} routine fills the ordering structure pointed to by {\tt ordeptr} with all of the data that are passed to it. Thus, all subsequent calls to ordering routines such as {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Compute}, using this ordering structure as parameter, will place ordering results in fields {\tt permtab}, {\tt peritab}, {\tt *cblkptr}, {\tt rangtab} or {\tt treetab}, if they are not set to {\tt NULL}. {\tt permtab} is the ordering permutation array, of size ${\tt vnodnbr}$, {\tt peritab} is the inverse ordering permutation array, of size ${\tt vnodnbr}$, {\tt cblkptr} is the pointer to a {\tt SCOTCH\_\lbt Num} that will receive the number of produced column blocks, {\tt rangtab} is the array that holds the column block span information, of size $\mathtt{vnodnbr} + 1$, and {\tt treetab} is the array holding the structure of the separators tree, of size ${\tt vnodnbr}$. See the above manual page of {\tt SCOTCH\_mesh\lbt Order}, as well as section~\ref{sec-lib-format-order}, for an explanation of the semantics of all of these fields. The {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Init} routine should be the first function to be called upon a {\tt SCOTCH\_\lbt Ordering} structure for ordering meshes. When the ordering structure is no longer of use, the {\tt SCOTCH\_\lbt mesh\lbt Order\lbt Exit} function must be called, in order to to free its internal structures. \progret {\tt SCOTCH\_meshOrderInit} returns $0$ if the ordering structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderSave ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshordersave ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderSave} routine saves the contents of the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ ordering format (see section~\ref{sec-file-ord}). \progret {\tt SCOTCH\_meshOrderSave} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderSaveMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderSaveMap ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshordersavemap ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderSaveMap} routine saves the block partitioning data associated with the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}, in the \scotch\ mapping format (see section~\ref{sec-file-map}). A target domain number is associated with every block, such that all node vertices belonging to the same block are shown as belonging to the same target vertex. This mapping file can then be used by the {\tt gout} program (see section~\ref{sec-prog-gout}) to produce pictures showing the different separators and blocks. Since {\tt gout} only takes graphs as input, the mesh has to be converted into a graph by means of the {\tt gmk\_\lbt msh} program (see section~\ref{sec-prog-gmkmsh}). \progret {\tt SCOTCH\_meshOrderSaveMap} returns $0$ if the ordering structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshOrderSaveTree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshOrderSaveTree ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Ordering * & ordeptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshordersavetree ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & ordedat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_meshOrderSaveTree} routine saves the tree hierarchy information associated with the {\tt SCOTCH\_\lbt Ordering} structure pointed to by {\tt ordeptr} to stream {\tt stream}. The format of the tree output file resembles the one of a mapping or ordering file: it is made up of as many lines as there are node vertices in the ordering. Each of these lines holds two integer numbers. The first one is the index or the label of the node vertex, starting from {\tt baseval}, and the second one is the index of its parent node in the separators tree, or $-1$ if the vertex belongs to a root node. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the tree mapping file. \progret {\tt SCOTCH\_meshOrderSaveTree} returns $0$ if the separators tree structure has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsection{Strategy handling routines} \label{sec-lib-strat} \subsubsection{{\tt SCOTCH\_stratAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Strat * SCOTCH\_stratAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_stratAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Strat} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The allocated space must be initialized before use, by means of the {\tt SCOTCH\_\lbt strat\lbt Init} routine. \progret {\tt SCOTCH\_stratAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_stratExit ( & SCOTCH\_Strat * & archptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratexit ( & doubleprecision (*) & stradat) \end{tabular}} \progdes The {\tt SCOTCH\_stratExit} function frees the contents of a {\tt SCOTCH\_\lbt Strat} structure previously initialized by {\tt SCOTCH\_\lbt strat\lbt Init}. All subsequent calls to {\tt SCOTCH\_\lbt strat} routines other than {\tt SCOTCH\_\lbt strat\lbt Init}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_stratInit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratInit ( & SCOTCH\_Strat * & straptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratinit ( & doubleprecision (*) & stradat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratInit} function initializes a {\tt SCOTCH\_\lbt Strat} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Strat} structure. When the strategy data is no longer of use, call function {\tt SCOTCH\_\lbt strat\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_stratInit} returns $0$ if the strategy structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratSave}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratSave ( & const SCOTCH\_Strat * & straptr, \\ & FILE * & stream) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratsave ( & doubleprecision (*) & stradat, \\ & integer & fildes, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratSave} routine saves the contents of the {\tt SCOTCH\_\lbt Strat} structure pointed to by {\tt straptr} to stream {\tt stream}, in the form of a text string. The methods and parameters of the strategy string depend on the type of the strategy, that is, whether it is a bipartitioning, mapping, or ordering strategy, and to which structure it applies, that is, graphs or meshes. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt fildes} associated with the logical unit of the output file. \progret {\tt SCOTCH\_stratSave} returns $0$ if the strategy string has been successfully written to {\tt stream}, and $1$ else. \end{itemize} \subsection{Strategy creation routines} \label{sec-lib-strat-creation} Strategy creation routines parse the user-provided strategy string and populate the given opaque strategy object with a tree-shaped structure that represents the parsed expression. It is this structure that will be later traversed by the generic routines for partitioning, mapping or ordering, so as to determine which specific partitioning, mapping or ordering method to be called on a subgraph being considered. Because strategy creation routines call third-party lexical analyzers that may have been implemented in a non-reentrant way, no guarantee is given on the reentrance of these routines. Consequently, strategy creation routines that might be called simultaneously by multiple threads should be protected by a mutex. \subsubsection{{\tt SCOTCH\_stratGraphBipart}} \label{sec-lib-strat-graph-bipart} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphBipart ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphbipart ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphBipart} routine fills the strategy structure pointed to by {\tt straptr} with the graph bipartitioning strategy string pointed to by {\tt string}. From this point, the strategy structure can only be used as a graph bipartitioning strategy, to be used by function {\tt SCOTCH\_\lbt arch\lbt Build}, for instance. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratGraphBipart} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphClusterBuild}} \label{sec-lib-func-stratgraphclusterbuild} \index{Clustering} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphClusterBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & pwgtmax, \\ & const double & densmin, \\ & const double & bbalval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphclusterbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & pwgtmax, \\ & doubleprecision & densmin, \\ & doubleprecision & bbalval, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphClusterBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default clustering strategy tuned according to the preference flags passed as {\tt flagval}, the maximum cluster vertex weight {\tt pwgtmax}, the minimum edge density {\tt densmin}, and the bipartition imbalance ratio {\tt bbalval}. From this point, the strategy structure can only be used as a mapping strategy, to be used by a mapping function such as {\tt SCOTCH\_\lbt graph\lbt Map}. Recursive bipartitioning will be applied to the graph, every bipartition allowing for an imbalance tolerance of {\tt bbalval}. Recursion will stop if either cluster size becomes smaller than {\tt pwgtmax}, or cluster edge density becomes higher than {\tt densmin}, which represents the fraction of edges internal to the cluster with respect to a complete graph. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. \progret {\tt SCOTCH\_stratGraphClusterBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphMap}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphMap ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphmap ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphMap} routine fills the strategy structure pointed to by {\tt straptr} with the graph mapping strategy string pointed to by {\tt string}. From this point, the strategy structure can only be used as a mapping strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Map}, for instance. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratGraphMap} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphMapBuild}} \label{sec-lib-func-stratgraphmapbuild} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphMapBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & partnbr, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphmapbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & partnbr, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphMapBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default mapping strategy tuned according to the preference flags passed as {\tt flagval} and to the desired number of parts {\tt partnbr} and imbalance ratio {\tt balrat}. From this point, the strategy structure can only be used as a mapping strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Map}, for instance. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. \progret {\tt SCOTCH\_stratGraphMapBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphPartOvl}} \label{sec-lib-func-stratgraphpartovl} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphPartOvl ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphpartovl ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphPartOvl} routine fills the strategy structure pointed to by {\tt straptr} with the graph partitioning with overlap strategy string pointed to by {\tt string}. From this point, the strategy structure can only be used as a partitioning with overlap strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} only. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratGraphPartOvl} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphPartOvlBuild}} \label{sec-lib-func-stratgraphpartovlbuild} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphPartOvlBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & partnbr, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphpartovlbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & partnbr, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphPartOvlBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default partitioning with overlap strategy tuned according to the preference flags passed as {\tt flagval} and to the desired number of parts {\tt partnbr} and imbalance ratio {\tt balrat}. From this point, the strategy structure can only be used as a partitioning with overlap strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Part\lbt Ovl} only. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. \progret {\tt SCOTCH\_stratGraphPartOvlBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphOrder}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphOrder ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphorder ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphOrder} routine fills the strategy structure pointed to by {\tt straptr} with the graph ordering strategy string pointed to by {\tt string}. From this point, the strategy structure can only be used as a graph ordering strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Order}, for instance. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratGraphOrder} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratGraphOrderBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratGraphOrderBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const SCOTCH\_Num & levlnbr, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratgraphorderbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & integer*{\it num} & levlnbr, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratGraphOrderBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default sequential ordering strategy tuned according to the preference flags passed as {\tt flagval} and to the desired nested dissection imbalance ratio {\tt balrat}. From this point, the strategy structure can only be used as an ordering strategy, to be used by function {\tt SCOTCH\_\lbt graph\lbt Order}, for instance. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. When any of the {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MIN} or {\tt SCOTCH\_\lbt STRAT\lbt LEVEL\lbt MAX} flags is set, the {\tt levlnbr} parameter is taken into account. \progret {\tt SCOTCH\_stratGraphOrderBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratMeshOrder}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratMeshOrder ( & SCOTCH\_Strat * & straptr, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratmeshorder ( & doubleprecision (*) & stradat, \\ & character (*) & string, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratMeshOrder} routine fills the strategy structure pointed to by {\tt straptr} with the mesh ordering strategy string pointed to by {\tt string}. From this point, strategy {\tt strat} can only be used as a mesh ordering strategy, to be used by function {\tt SCOTCH\_\lbt mesh\lbt Order}, for instance. When using the C interface, the array of characters pointed to by {\tt string} must be null-terminated. \progret {\tt SCOTCH\_stratMeshOrder} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_stratMeshOrderBuild}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_stratMeshOrderBuild ( & SCOTCH\_Strat * & straptr, \\ & const SCOTCH\_Num & flagval, \\ & const double & balrat) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfstratmeshorderbuild ( & doubleprecision (*) & stradat, \\ & integer*{\it num} & flagval, \\ & doubleprecision & balrat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_stratMeshOrderBuild} routine fills the strategy structure pointed to by {\tt straptr} with a default ordering strategy tuned according to the preference flags passed as {\tt flagval} and to the desired nested dissection imbalance ratio {\tt balrat}. From this point, the strategy structure can only be used as an ordering strategy, to be used by function {\tt SCOTCH\_\lbt mesh\lbt Order}, for instance. See Section~\ref{sec-lib-format-strat-default} for a description of the available flags. \progret {\tt SCOTCH\_stratMesdOrderBuild} returns $0$ if the strategy string has been successfully set, and $1$ else. \end{itemize} \subsection{Geometry handling routines} \label{sec-lib-geom} Since the \scotch\ project is based on algorithms that rely on topology data only, geometry data do not play an important role in the \libscotch\ library. They are only relevant to programs that display graphs, such as the {\tt gout} program. However, since all routines that are used by the programs of the \scotch\ distributions have an interface in the \libscotch\ library, there exist geometry handling routines in it, which manipulate {\tt SCOTCH\_\lbt Geom} structures. Apart from the routines that create, destroy or access {\tt SCOTCH\_\lbt Geom} structures, all of the routines in this section are input/output routines, which read or write both {\tt SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} structures. We have chosen to define the interface of the geometry-handling routines such that they also handle graph or mesh topology because some external file formats mix these data, and that we wanted our routines to be able to read their data on the fly from streams that can only be read once, such as communication pipes. Having both aspects taken into account in a single call makes the writing of file conversion tools, such as {\tt gcv} and {\tt mcv}, very easy. When the file format from which to read or into which to write mixes both sorts of data, the geometry file pointer can be set to {\tt NULL}, as it will not be used. \subsubsection{{\tt SCOTCH\_geomAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Geom * SCOTCH\_geomAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_geomAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Geom} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. The allocated space must be initialized before use, by means of the {\tt SCOTCH\_\lbt geom\lbt Init} routine. \progret {\tt SCOTCH\_geomAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_geomInit}} \label{sec-lib-func-geominit} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_geomInit ( & SCOTCH\_Geom * & geomptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgeominit ( & doubleprecision (*) & geomdat, \\ & integer & ierr) \end{tabular}} \progdes The {\tt SCOTCH\_geomInit} function initializes a {\tt SCOTCH\_\lbt Geom} structure so as to make it suitable for future operations. It should be the first function to be called upon a {\tt SCOTCH\_\lbt Geom} structure. When the geometrical data is no longer of use, call function {\tt SCOTCH\_\lbt geom\lbt Exit} to free its internal structures. \progret {\tt SCOTCH\_geomInit} returns $0$ if the geometrical structure has been successfully initialized, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_geomExit}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_geomExit ( & SCOTCH\_Geom * & geomptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgeomexit ( & doubleprecision (*) & geomdat) \end{tabular}} \progdes The {\tt SCOTCH\_geomExit} function frees the contents of a {\tt SCOTCH\_\lbt Geom} structure previously initialized by {\tt SCOTCH\_\lbt geomInit}. All subsequent calls to {\tt SCOTCH\_\lbt *Geom*} routines other than {\tt SCOTCH\_\lbt geomInit}, using this structure as parameter, may yield unpredictable results. \end{itemize} \subsubsection{{\tt SCOTCH\_geomData}} \label{sec-lib-func-geomdata} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_geomData ( & const SCOTCH\_Geom * & geomptr, \\ & SCOTCH\_Num * & dimnptr, \\ & double ** & geomtab) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgeomdata ( & doubleprecision (*) & geomdat, \\ & doubleprecision (*) & indxtab, \\ & integer*{\it num} & dimnnbr, \\ & integer*{\it idx} & geomidx) \end{tabular}} \progdes The {\tt SCOTCH\_geomData} routine is a multiple accessor to the contents of {\tt SCOTCH\_Geom} structures. {\tt dimnptr} is the pointer to a location that will hold the number of dimensions of the graph vertex or mesh node vertex coordinates, and will therefore be equal to $1$, $2$ or $3$. {\tt geomtab} is the pointer to a location that will hold the reference to the geometry coordinates, as defined in section~\ref{sec-lib-format-geom}. Any of these pointers can be set to {\tt NULL} on input if the corresponding information is not needed. Else, the reference to a dummy area can be provided, where all unwanted data will be written. Since there are no pointers in Fortran, a specific mechanism is used to allow users to access the coordinate array. The {\tt scotchf\lbt geom\lbt data} routine is passed an integer array, the first element of which is used as a base address from which all other array indices are computed. Therefore, instead of returning a reference, the routine returns an integer, which represents the starting index of the coordinate array with respect to the base input array. For instance, if some base array {\tt myarray\lbt (1)} is passed as parameter {\tt indxtab}, then the first cell of array {\tt geomtab} will be accessible as {\tt myarray\lbt (geomidx)}. In order for this feature to behave properly, the {\tt indxtab} array must be double-precision-aligned with the geometry array. This is automatically enforced on most systems, but some care should be taken on systems that allow one to access data that is not double-aligned. On such systems, declaring the array after a dummy {\tt double\lbt precision} array can coerce the compiler into enforcing the proper alignment. Also, on 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type. See Section~\ref{sec-lib-inttypesize} for more information on this issue. \end{itemize} \subsubsection{{\tt SCOTCH\_graphGeomLoadChac}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphGeomLoadChac ( & SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Geom * & geomptr, \\ & FILE * & grafstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphgeomloadchac ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & geomdat, \\ & integer & graffildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_graphGeomLoadChac} routine fills the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the source graph description available from stream {\tt graf\lbt stream} in the \chaco\ graph format~\cite{hele93c}. Since this graph format does not handle geometry data, the {\tt geomptr} and {\tt geom\lbt stream} fields are not used, as well as the {\tt string} field. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt graf\lbt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_graphGeomLoadChac} returns $0$ if the graph structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphGeomSaveChac}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphGeomSaveChac ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Geom * & geomptr, \\ & FILE * & grafstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphgeomsavechac ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & geomdat, \\ & integer & graffildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_graphGeomSaveChac} routine saves the contents of the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} to stream {\tt graf\lbt stream}, in the \chaco\ graph format~\cite{hele93c}. Since this graph format does not handle geometry data, the {\tt geomptr} and {\tt geom\lbt stream} fields are not used, as well as the {\tt string} field. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt graf\lbt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_graphGeomSaveChac} returns $0$ if the graph structure has been successfully written to {\tt graf\lbt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphGeomLoadHabo}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphGeomLoadHabo ( & SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Geom * & geomptr, \\ & FILE * & grafstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphgeomloadhabo ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & geomdat, \\ & integer & graffildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_graphGeomLoadHabo} routine fills the {\tt SCOTCH\_\lbt Graph} structure pointed to by {\tt grafptr} with the source graph description available from stream {\tt graf\lbt stream} in the Harwell-Boeing square assembled matrix format~\cite{dugrle92}. Since this graph format does not handle geometry data, the {\tt geomptr} and {\tt geom\lbt stream} fields are not used. Since multiple graph structures can be encoded sequentially within the same file, the {\tt string} field contains the string representation of an integer number that codes the rank of the graph to read within the Harwell-Boeing file. It is equal to ``0'' in most cases. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt graf\lbt fildes} associated with the logical unit of the graph file. \progret {\tt SCOTCH\_graphGeomLoadHabo} returns $0$ if the graph structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphGeomLoadScot}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphGeomLoadScot ( & SCOTCH\_Graph * & grafptr, \\ & SCOTCH\_Geom * & geomptr, \\ & FILE * & grafstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphgeomloadscot ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & geomdat, \\ & integer & graffildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_graphGeomLoadScot} routine fills the {\tt SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} structures pointed to by {\tt grafptr} and {\tt geomptr} with the source graph description and geometry data available from streams {\tt graf\lbt stream} and {\tt geom\lbt stream} in the \scotch\ graph and geometry formats (see sections~\ref{sec-file-sgraph} and~\ref{sec-file-geom}, respectively). The {\tt string} field is not used. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the numbers of the Unix file descriptors {\tt graf\lbt fildes} and {\tt geom\lbt fildes} associated with the logical units of the graph and geometry files. \progret {\tt SCOTCH\_graphGeomLoadScot} returns $0$ if the graph topology and geometry have been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_graphGeomSaveScot}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_graphGeomSaveScot ( & const SCOTCH\_Graph * & grafptr, \\ & const SCOTCH\_Geom * & geomptr, \\ & FILE * & grafstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfgraphgeomsavescot ( & doubleprecision (*) & grafdat, \\ & doubleprecision (*) & geomdat, \\ & integer & graffildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_graphGeomSaveScot} routine saves the contents of the {\tt SCOTCH\_\lbt Graph} and {\tt SCOTCH\_\lbt Geom} structures pointed to by {\tt grafptr} and {\tt geomptr} to streams {\tt graf\lbt stream} and {\tt geom\lbt stream}, in the \scotch\ graph and geometry formats (see sections~\ref{sec-file-sgraph} and~\ref{sec-file-geom}, respectively). The {\tt string} field is not used. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the numbers of the Unix file descriptors {\tt graf\lbt fildes} and {\tt geom\lbt fildes} associated with the logical units of the graph and geometry files. \progret {\tt SCOTCH\_graphGeomSaveScot} returns $0$ if the graph topology and geometry have been successfully written to {\tt graf\lbt stream} and {\tt geom\lbt stream}, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshGeomLoadHabo}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshGeomLoadHabo ( & SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Geom * & geomptr, \\ & FILE * & meshstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshgeomloadhabo ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & geomdat, \\ & integer & meshfildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_meshGeomLoadHabo} routine fills the {\tt SCOTCH\_\lbt Mesh} structure pointed to by {\tt meshptr} with the source mesh description available from stream {\tt mesh\lbt stream} in the Harwell-Boeing square elemental matrix format~\cite{dugrle92}. Since this mesh format does not handle geometry data, the {\tt geomptr} and {\tt geom\lbt stream} fields are not used. Since multiple mesh structures can be encoded sequentially within the same file, the {\tt string} field contains the string representation of an integer number that codes the rank of the mesh to read within the Harwell-Boeing file. It is equal to ``0'' in most cases. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the number of the Unix file descriptor {\tt mesh\lbt fildes} associated with the logical unit of the mesh file. \progret {\tt SCOTCH\_meshGeomLoadHabo} returns $0$ if the mesh structure has been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshGeomLoadScot}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshGeomLoadScot ( & SCOTCH\_Mesh * & meshptr, \\ & SCOTCH\_Geom * & geomptr, \\ & FILE * & meshstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshgeomloadscot ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & geomdat, \\ & integer & meshfildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_meshGeomLoadScot} routine fills the {\tt SCOTCH\_\lbt Mesh} and {\tt SCOTCH\_\lbt Geom} structures pointed to by {\tt meshptr} and {\tt geomptr} with the source mesh description and node geometry data available from streams {\tt mesh\lbt stream} and {\tt geom\lbt stream} in the \scotch\ mesh and geometry formats (see sections~\ref{sec-file-smesh} and~\ref{sec-file-geom}, respectively). The {\tt string} field is not used. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the numbers of the Unix file descriptors {\tt mesh\lbt fildes} and {\tt geom\lbt fildes} associated with the logical units of the mesh and geometry files. \progret {\tt SCOTCH\_meshGeomLoadScot} returns $0$ if the mesh topology and node geometry have been successfully allocated and filled with the data read, and $1$ else. \end{itemize} \subsubsection{{\tt SCOTCH\_meshGeomSaveScot}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_meshGeomSaveScot ( & const SCOTCH\_Mesh * & meshptr, \\ & const SCOTCH\_Geom * & geomptr, \\ & FILE * & meshstream, \\ & FILE * & geomstream, \\ & const char * & string) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmeshgeomsavescot ( & doubleprecision (*) & meshdat, \\ & doubleprecision (*) & geomdat, \\ & integer & meshfildes, \\ & integer & geomfildes, \\ & character (*) & string) \end{tabular}} \progdes The {\tt SCOTCH\_meshGeomSaveScot} routine saves the contents of the {\tt SCOTCH\_\lbt Mesh} and {\tt SCOTCH\_\lbt Geom} structures pointed to by {\tt meshptr} and {\tt geomptr} to streams {\tt mesh\lbt stream} and {\tt geom\lbt stream}, in the \scotch\ mesh and geometry formats (see sections~\ref{sec-file-smesh} and~\ref{sec-file-geom}, respectively). The {\tt string} field is not used. Fortran users must use the {\tt PXFFILENO} or {\tt FNUM} functions to obtain the numbers of the Unix file descriptors {\tt mesh\lbt fildes} and {\tt geom\lbt fildes} associated with the logical units of the mesh and geometry files. \progret {\tt SCOTCH\_meshGeomSaveScot} returns $0$ if the mesh topology and node geometry have been successfully written to {\tt mesh\lbt stream} and {\tt geom\lbt stream}, and $1$ else. \end{itemize} \subsection{Other data structure handling routines} \label{sec-lib-other} \subsubsection{{\tt SCOTCH\_mapAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Mapping * SCOTCH\_mapAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_mapAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Mapping} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. \progret {\tt SCOTCH\_mapAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsubsection{{\tt SCOTCH\_orderAlloc}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Ordering * SCOTCH\_orderAlloc ( & void) \end{tabular}} \progdes The {\tt SCOTCH\_orderAlloc} function allocates a memory area of a size sufficient to store a {\tt SCOTCH\_\lbt Ordering} structure. It is the user's responsibility to free this memory when it is no longer needed, using the {\tt SCOTCH\_\lbt mem\lbt Free} routine. \progret {\tt SCOTCH\_orderAlloc} returns the pointer to the memory area if it has been successfully allocated, and {\tt NULL} else. \end{itemize} \subsection{Error handling routines} \label{sec-lib-error} The handling of errors that occur within library routines is often difficult, because library routines should be able to issue error messages that help the application programmer to find the error, while being compatible with the way the application handles its own errors. To match these two requirements, all the error and warning messages produced by the routines of the \libscotch\ library are issued using the user-definable variable-length argument routines {\tt SCOTCH\_\lbt error\lbt Print} and {\tt SCOTCH\_\lbt error\lbt PrintW}. Thus, one can redirect these error messages to his own error handling routines, and can choose if he wants his program to terminate on error or to resume execution after the erroneous function has returned. In order to free the user from the burden of writing a basic error handler from scratch, the {\tt libscotcherr.a} library provides error routines that print error messages on the standard error stream {\tt stderr} and return control to the application. Application programmers who want to take advantage of them have to add {\tt -lscotcherr} to the list of arguments of the linker, after the {\tt -lscotch} argument. \subsubsection{{\tt SCOTCH\_errorPrint}} \label{sec-lib-func-errorprint} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorPrint ( & const char * const & errstr, ...) \end{tabular}} \progdes The {\tt SCOTCH\_errorPrint} function is designed to output a variable-length argument error string to some stream. \end{itemize} \subsubsection{{\tt SCOTCH\_errorPrintW}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorPrintW ( & const char * const & errstr, ...) \end{tabular}} \progdes The {\tt SCOTCH\_errorPrintW} function is designed to output a variable-length argument warning string to some stream. \end{itemize} \subsubsection{{\tt SCOTCH\_errorProg}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_errorProg ( & const char * & progstr) \end{tabular}} \progdes The {\tt SCOTCH\_errorProg} function is designed to be called at the beginning of a program or of a portion of code to identify the place where subsequent errors take place. This routine is not reentrant, as it is only a minor help function. It is defined in {\tt lib\lbt scotch\lbt err.a} and is used by the standalone programs of the \scotch\ distribution. \end{itemize} \subsection{Miscellaneous routines} \label{sec-lib-misc} \subsubsection{{\tt SCOTCH\_memCur}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Idx SCOTCH\_memCur ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmemcur ( & integer*{\it idx} & memcur) \\ \end{tabular}} \progdes When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt TRACE} flag set, the {\tt SCOTCH\_memCur} routine returns the amount of memory, in bytes, that is currently allocated by \scotch\ on the current processing element, either by itself or on the behalf of the user. Else, the routine returns {\tt -1}. The returned figure does not account for the memory that has been allocated by the user and made visible to \scotch\ by means of routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This memory is not under the control of \scotch, and it is the user's responsibility to free it after calling the relevant {\tt SCOTCH\_\lbt *\lbt Exit} routines. Some third-party software used by \scotch, such as the strategy string parser, may allocate some memory for internal use and never free it. Consequently, there may be small discrepancies between memory occupation figures returned by \scotch\ and those returned by third-party tools. However, these discrepancies should not exceed a few kilobytes. While memory occupation is internally recorded in a variable of type {\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the sake of interface homogeneity, especially for Fortran. It is therefore the installer's responsibility to make sure that the support integer type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See section~\ref{sec-lib-inttypesize} for more information. \end{itemize} \subsubsection{{\tt SCOTCH\_memFree}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_memFree ( & void * & dataptr) \end{tabular}} \progdes The {\tt SCOTCH\_memFree} routine frees the memory space allocated by routines such as {\tt SCOTCH\_\lbt graph\lbt Alloc}, {\tt SCOTCH\_\lbt mesh\lbt Alloc}, or {\tt SCOTCH\_\lbt strat\lbt Alloc}. The standard {\tt free} routine of the {\textsc libc} must not be used for this purpose. Else, the allocated memory will not be considered as properly released by memory accounting routines {\tt SCOTCH\_\lbt mem\lbt Cur} and {\tt SCOTCH\_\lbt mem\lbt Max}, and segmentation errors would happen when the {\tt COMMON\_\lbt MEMORY\_\lbt CHECK} compile flag is set. \end{itemize} \subsubsection{{\tt SCOTCH\_memMax}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} SCOTCH\_Idx SCOTCH\_memMax ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfmemmax ( & integer*{\it idx} & memcur) \\ \end{tabular}} \progdes When \scotch\ is compiled with the {\tt COMMON\_\lbt MEMORY\_\lbt TRACE} flag set, the {\tt SCOTCH\_memMax} routine returns the maximum amount of memory, in bytes, ever allocated by \scotch\ on the current processing element, either by itself or on the behalf of the user. Else, the routine returns {\tt -1}. The returned figure does not account for the memory that has been allocated by the user and made visible to \scotch\ by means of routines such as {\tt SCOTCH\_\lbt dgraph\lbt Build} calls. This memory is not under the control of \scotch, and it is the user's responsibility to free it after calling the relevant {\tt SCOTCH\_\lbt *\lbt Exit} routines. Some third-party software used by \scotch, such as the strategy string parser, may allocate some memory for internal use and never free it. Consequently, there may be small discrepancies between memory occupation figures returned by \scotch\ and those returned by third-party tools. However, these discrepancies should not exceed a few kilobytes. While memory occupation is internally recorded in a variable of type {\tt intptr\_\lbt t}, it is output as a {\tt SCOTCH\_\lbt Idx} for the sake of interface homogeneity, especially for Fortran. It is therefore the installer's responsibility to make sure that the support integer type of {\tt SCOTCH\_\lbt Idx} is large enough to not overflow. See section~\ref{sec-lib-inttypesize} for more information. \end{itemize} \subsubsection{{\tt SCOTCH\_numSizeof}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} int SCOTCH\_numSizeof ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfnumsizeof ( & integer & size ) \end{tabular}} \progdes The {\tt SCOTCH\_numSizeof} routine returns the size, in bytes, of a {\tt SCOTCH\_\lbt Num}. This information is useful to export the interface of the {\sc libScotch} to interpreted languages, without access to the ``{\tt scotch.h}'' include file. \end{itemize} \subsubsection{{\tt SCOTCH\_randomReset}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}l} void SCOTCH\_randomReset ( & void) \end{tabular}} {\tt\begin{tabular}{l@{}l} scotchfrandomreset ( & ) \end{tabular}} \progdes The {\tt SCOTCH\_randomReset} routine resets the seed of the pseudo-random generator used by the graph partitioning routines of the \libscotch\ library. Two consecutive calls to the same \libscotch\ partitioning or ordering routines, separated by a call to {\tt SCOTCH\_\lbt random\lbt Reset}, will always yield the same results. \end{itemize} \subsubsection{{\tt SCOTCH\_randomSeed}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void SCOTCH\_randomSeed ( & SCOTCH\_Num & seedval) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfrandomseed ( & integer*{\it num} & seedval ) \end{tabular}} \progdes The {\tt SCOTCH\_randomSeed} routine sets to {\tt seedval} the seed of the pseudo-random generator used internally by several algorithms of \scotch. All subsequent calls to {\tt SCOTCH\_\lbt random\lbt Reset} will use this value to reset the pseudo-random generator. This routine needs only to be used by users willing to evaluate the robustness and quality of partitioning algorithms with respect to the variability of random seeds. Else, depending whether \scotch\ has been compiled with any of the flags {\tt COMMON\_\lbt RANDOM\_\lbt FIXED\_\lbt SEED} or {\tt SCOTCH\_\lbt DETERMINISTIC} set or not, either the same pseudo-random seed will be always used, or a process-dependent seed will be used, respectively. \end{itemize} \subsubsection{{\tt SCOTCH\_version}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} int SCOTCH\_version ( & int * const & versptr, \\ & int * const & relaptr, \\ & int * const & patcptr) \end{tabular}} {\tt\begin{tabular}{l@{}ll} scotchfversion ( & integer & versval, \\ & integer & relaval, \\ & integer & patcval) \end{tabular}} \progdes The {\tt SCOTCH\_version} routine writes the version, release and patchlevel numbers of the \scotch\ library that is currently being used, to integer values {\tt *versptr}, {\tt *relaptr} and {\tt patcptr}, respectively. This routine is mainly useful for applications willing to record runtime information, such as the library against which they are dynamically linked. \end{itemize} \subsection{\metis\ compatibility library} \label{sec-lib-metis} The \metis\ compatibility library provides stubs which redirect some calls to \metis\ routines to the corresponding \scotch\ counterparts. In order to use this feature, the only thing to do is to re-link the existing software with the {\tt lib\lbo scotch\lbo metis} library, and eventually with the original \metis\ library if the software uses \metis\ routines which do not need to have \scotch\ equivalents, such as graph transformation routines. In that latter case, the ``{\tt -lscotch\lbt metis}'' argument must be placed before the ``{\tt -lmetis}'' one (and of course before the ``{\tt -lscotch}'' one too), so that routines that are redefined by \scotch\ are chosen instead of their \metis\ counterpart. When no other \metis\ routines than the ones redefined by \scotch\ are used, the ``{\tt -lmetis}'' argument can be omitted. See Section~\ref{sec-examples} for an example. \subsubsection{{\tt METIS\_EdgeND}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_EdgeND ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & perm, \\ & SCOTCH\_Num * const & iperm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_edgend ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} (*) & perm, \\ & integer*{\it num} (*) & iperm) \end{tabular}} \progdes The {\tt METIS\_EdgeND} function performs a nested dissection ordering of the graph passed as arrays {\tt xadj} and {\tt adjncy}, using the default \scotch\ ordering strategy. The {\tt options} array is not used. The {\tt perm} and {\tt iperm} arrays have the opposite meaning as in \scotch: the \metis\ {\tt perm} array holds what is called ``inverse permutation'' in \scotch, while {\tt iperm} holds what is called ``direct permutation'' in \scotch. While \scotch\ has also both node and edge separation capabilities, all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same \scotch\ routine, which uses the \scotch\ default ordering strategy proved to be efficient in most cases. \end{itemize} \subsubsection{{\tt METIS\_NodeND}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_NodeND ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & perm, \\ & SCOTCH\_Num * const & iperm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_nodend ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} (*) & perm, \\ & integer*{\it num} (*) & iperm) \end{tabular}} \progdes The {\tt METIS\_NodeND} function performs a nested dissection ordering of the graph passed as arrays {\tt xadj} and {\tt adjncy}, using the default \scotch\ ordering strategy. The {\tt options} array is not used. The {\tt perm} and {\tt iperm} arrays have the opposite meaning as in \scotch: the \metis\ {\tt perm} array holds what is called ``inverse permutation'' in \scotch, while {\tt iperm} holds what is called ``direct permutation'' in \scotch. While \scotch\ has also both node and edge separation capabilities, all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same \scotch\ routine, which uses the \scotch\ default ordering strategy proved to be efficient in most cases. \end{itemize} \subsubsection{{\tt METIS\_NodeWND}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_NodeWND ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & perm, \\ & SCOTCH\_Num * const & iperm) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_nodwend ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} (*) & perm, \\ & integer*{\it num} (*) & iperm) \end{tabular}} \progdes The {\tt METIS\_NodeWND} function performs a nested dissection ordering of the graph passed as arrays {\tt xadj}, {\tt adjncy} and {\tt vwgt}, using the default \scotch\ ordering strategy. The {\tt options} array is not used. The {\tt perm} and {\tt iperm} arrays have the opposite meaning as in \scotch: the \metis\ {\tt perm} array holds what is called ``inverse permutation'' in \scotch, while {\tt iperm} holds what is called ``direct permutation'' in \scotch. While \scotch\ has also both node and edge separation capabilities, all of the three \metis\ stubs {\tt METIS\_\lbo EdgeND}, {\tt METIS\_\lbo NodeND} and {\tt METIS\_\lbo NodeWND} call the same \scotch\ routine, which uses the \scotch\ default ordering strategy proved to be efficient in most cases. \end{itemize} \subsubsection{{\tt METIS\_PartGraphKway}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_PartGraphKway ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & adjwgt, \\ & const SCOTCH\_Num * const & wgtflag, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & nparts, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & edgecut, \\ & SCOTCH\_Num * const & part) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_partgraphkway ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} (*) & adjwgt, \\ & integer*{\it num} & wgtflag, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} & nparts, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} & edgecut, \\ & integer*{\it num} (*) & part) \end{tabular}} \progdes The {\tt METIS\_PartGraphKway} function performs a mapping onto the complete graph of the graph represented by arrays {\tt xadj}, {\tt adjncy}, {\tt vwgt} and {\tt adjwgt}, using the default \scotch\ mapping strategy. The {\tt options} array is not used. The {\tt part} array has the same meaning as the {\tt parttab} array of \scotch. All of the three \metis\ stubs {\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses the \scotch\ default mapping strategy proved to be efficient in most cases. \end{itemize} \subsubsection{{\tt METIS\_PartGraphRecursive}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_PartGraphRecursive ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & adjwgt, \\ & const SCOTCH\_Num * const & wgtflag, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & nparts, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & edgecut, \\ & SCOTCH\_Num * const & part) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_partgraphrecursive ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} (*) & adjwgt, \\ & integer*{\it num} & wgtflag, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} & nparts, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} & edgecut, \\ & integer*{\it num} (*) & part) \end{tabular}} \progdes The {\tt METIS\_PartGraphRecursive} function performs a mapping onto the complete graph of the graph represented by arrays {\tt xadj}, {\tt adjncy}, {\tt vwgt} and {\tt adjwgt}, using the default \scotch\ mapping strategy. The {\tt options} array is not used. The {\tt part} array has the same meaning as the {\tt parttab} array of \scotch. To date, the computation of the {\tt edgecut} field requires extra processing, which increases running time to a small extent. All of the three \metis\ stubs {\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses the \scotch\ default mapping strategy proved to be efficient in most cases. \end{itemize} \subsubsection{{\tt METIS\_PartGraphVKway}} \begin{itemize} \progsyn {\tt\begin{tabular}{l@{}ll} void METIS\_PartGraphVKway ( & const SCOTCH\_Num * const & n, \\ & const SCOTCH\_Num * const & xadj, \\ & const SCOTCH\_Num * const & adjncy, \\ & const SCOTCH\_Num * const & vwgt, \\ & const SCOTCH\_Num * const & vsize, \\ & const SCOTCH\_Num * const & wgtflag, \\ & const SCOTCH\_Num * const & numflag, \\ & const SCOTCH\_Num * const & nparts, \\ & const SCOTCH\_Num * const & options, \\ & SCOTCH\_Num * const & volume, \\ & SCOTCH\_Num * const & part) \end{tabular}} {\tt\begin{tabular}{l@{}ll} metis\_partgraphvkway ( & integer*{\it num} & n, \\ & integer*{\it num} (*) & xadj, \\ & integer*{\it num} (*) & adjncy, \\ & integer*{\it num} (*) & vwgt, \\ & integer*{\it num} (*) & vsize, \\ & integer*{\it num} & wgtflag, \\ & integer*{\it num} & numflag, \\ & integer*{\it num} & nparts, \\ & integer*{\it num} (*) & options, \\ & integer*{\it num} & volume, \\ & integer*{\it num} (*) & part) \end{tabular}} \progdes The {\tt METIS\_PartGraphVKway} function performs a mapping onto the complete graph of the graph represented by arrays {\tt xadj}, {\tt adjncy}, {\tt vwgt} and {\tt vsize}, using the default \scotch\ mapping strategy. The {\tt options} array is not used. The {\tt part} array has the same meaning as the {\tt parttab} array of \scotch. Since \scotch\ does not have methods for explicitely reducing the communication volume according to the metric of {\tt METIS\_\lbo Part\lbo Graph\lbo VKway}, this routine creates a temporary edge weight array such that each edge $(u,v)$ receives a weight equal to $mbox{\tt vsize}(u) + mbox{\tt vsize}(v)$. Consequently, edges which are incident to highly communicating vertices will be less likely to be cut. However, the communication volume value returned by this routine is exactly the one which would be returned by \metis\ with respect to the output partition. Users interested in minimizing the exact communication volume should consider using hypergraphs, implemented in \scotch\ as meshes (see Section~\ref{sec-lib-format-mesh}). All of the three \metis\ stubs {\tt METIS\_\lbo Part\lbo Graph\lbo Kway}, {\tt METIS\_\lbo Part\lbo Graph\lbo Recursive} and {\tt METIS\_\lbo Part\lbo Graph\lbo VKway} call the same \scotch\ routine, which uses the \scotch\ default mapping strategy proved to be efficient in most cases. \end{itemize} scotch_6.0.9/doc/src/scotch/s_f_rua.fig0000644000302600021200000002054713303015264020206 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1425 975 5925 5475 6 1575 1125 5775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1125 5775 1125 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1725 5775 1725 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 2925 5775 2925 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 3525 5775 3525 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 4125 5775 4125 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 2325 5775 2325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 4725 5775 4725 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 5325 5775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1575 1125 1575 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2175 1125 2175 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2775 1125 2775 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3375 1125 3375 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3975 1125 3975 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4575 1125 4575 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5175 1125 5175 5325 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5775 1125 5775 5325 -6 6 1425 975 1725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 5475 1725 5175 1425 5175 1425 5475 1725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 4875 1725 4575 1425 4575 1425 4875 1725 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 4275 1725 3975 1425 3975 1425 4275 1725 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 3675 1725 3375 1425 3375 1425 3675 1725 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 3075 1725 2775 1425 2775 1425 3075 1725 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 2475 1725 2175 1425 2175 1425 2475 1725 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 1875 1725 1575 1425 1575 1425 1875 1725 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1725 1275 1725 975 1425 975 1425 1275 1725 1275 -6 6 2025 975 2325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 5475 2325 5175 2025 5175 2025 5475 2325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 4875 2325 4575 2025 4575 2025 4875 2325 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 4275 2325 3975 2025 3975 2025 4275 2325 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 3675 2325 3375 2025 3375 2025 3675 2325 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 3075 2325 2775 2025 2775 2025 3075 2325 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 2475 2325 2175 2025 2175 2025 2475 2325 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 1875 2325 1575 2025 1575 2025 1875 2325 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2325 1275 2325 975 2025 975 2025 1275 2325 1275 -6 6 3225 975 3525 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 5475 3525 5175 3225 5175 3225 5475 3525 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 4875 3525 4575 3225 4575 3225 4875 3525 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 4275 3525 3975 3225 3975 3225 4275 3525 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 3675 3525 3375 3225 3375 3225 3675 3525 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 3075 3525 2775 3225 2775 3225 3075 3525 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 2475 3525 2175 3225 2175 3225 2475 3525 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 1875 3525 1575 3225 1575 3225 1875 3525 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3525 1275 3525 975 3225 975 3225 1275 3525 1275 -6 6 3825 975 4125 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 5475 4125 5175 3825 5175 3825 5475 4125 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 4875 4125 4575 3825 4575 3825 4875 4125 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 4275 4125 3975 3825 3975 3825 4275 4125 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 3675 4125 3375 3825 3375 3825 3675 4125 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 3075 4125 2775 3825 2775 3825 3075 4125 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 2475 4125 2175 3825 2175 3825 2475 4125 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 1875 4125 1575 3825 1575 3825 1875 4125 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4125 1275 4125 975 3825 975 3825 1275 4125 1275 -6 6 4425 975 4725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 5475 4725 5175 4425 5175 4425 5475 4725 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 4875 4725 4575 4425 4575 4425 4875 4725 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 4275 4725 3975 4425 3975 4425 4275 4725 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 3675 4725 3375 4425 3375 4425 3675 4725 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 3075 4725 2775 4425 2775 4425 3075 4725 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 2475 4725 2175 4425 2175 4425 2475 4725 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 1875 4725 1575 4425 1575 4425 1875 4725 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4725 1275 4725 975 4425 975 4425 1275 4725 1275 -6 6 5025 975 5325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 5475 5325 5175 5025 5175 5025 5475 5325 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 4875 5325 4575 5025 4575 5025 4875 5325 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 4275 5325 3975 5025 3975 5025 4275 5325 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 3675 5325 3375 5025 3375 5025 3675 5325 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 3075 5325 2775 5025 2775 5025 3075 5325 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 2475 5325 2175 5025 2175 5025 2475 5325 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 1875 5325 1575 5025 1575 5025 1875 5325 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5325 1275 5325 975 5025 975 5025 1275 5325 1275 -6 6 5625 975 5925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 5475 5925 5175 5625 5175 5625 5475 5925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 4875 5925 4575 5625 4575 5625 4875 5925 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 4275 5925 3975 5625 3975 5625 4275 5925 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 3675 5925 3375 5625 3375 5625 3675 5925 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 3075 5925 2775 5625 2775 5625 3075 5925 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 2475 5925 2175 5625 2175 5625 2475 5925 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 1875 5925 1575 5625 1575 5625 1875 5925 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5925 1275 5925 975 5625 975 5625 1275 5925 1275 -6 6 2625 975 2925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 5475 2925 5175 2625 5175 2625 5475 2925 5475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 4875 2925 4575 2625 4575 2625 4875 2925 4875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 4275 2925 3975 2625 3975 2625 4275 2925 4275 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 3675 2925 3375 2625 3375 2625 3675 2925 3675 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 3075 2925 2775 2625 2775 2625 3075 2925 3075 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 2475 2925 2175 2625 2175 2625 2475 2925 2475 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 1875 2925 1575 2625 1575 2625 1875 2925 1875 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2925 1275 2925 975 2625 975 2625 1275 2925 1275 -6 -6 6 2325 5700 2700 6000 4 0 -1 0 0 0 20 0.0000 4 210 210 2325 5925 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 2550 6000 0\001 -6 6 4725 5700 5100 6000 4 0 -1 0 0 0 20 0.0000 4 210 210 4725 5925 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 4950 6000 1\001 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1875 3825 75 75 1875 3825 1950 3900 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2775 1725 75 75 2775 1725 2850 1800 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 5025 75 75 2475 5025 2550 5100 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4875 2025 75 75 4875 2025 4950 2100 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5475 3825 75 75 5475 3825 5550 3900 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2475 4425 75 75 2475 4425 2550 4500 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3675 3375 3675 5475 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3600 3375 3750 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3600 5475 3750 5475 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 6000 3300 1350 3300 1350 5550 6000 5550 6000 3300 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 3000 1500 2550 1500 2550 1950 3000 1950 3000 1500 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5400 1500 4350 1500 4350 2550 5400 2550 5400 1500 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 2775 1725 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 4875 2025 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2475 4425 5475 3825 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 2475 4425 2475 5025 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 7 0 0 2 2475 4425 1875 3825 4 0 -1 0 0 0 20 0.0000 4 210 210 975 4500 D\001 scotch_6.0.9/doc/src/scotch/s_f_me2.fig0000644000302600021200000003571613303015264020106 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 15 0 0 16 0.0000 4 165 240 1825 3240 24\001 -6 6 1800 3600 2100 3900 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 3600 1800 3900 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 3600 2100 3900 -6 6 1800 4200 2100 4500 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 4200 1800 4500 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 4200 2100 4500 -6 6 6600 2461 6914 2775 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6757 2618 150 150 6757 2618 6907 2618 4 0 0 8 0 0 16 0.0000 4 180 240 6627 2708 12\001 -6 6 6600 1500 6900 1800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 1650 150 150 6750 1650 6900 1650 4 0 0 8 0 0 16 0.0000 4 180 240 6620 1740 11\001 -6 6 5850 2836 6164 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6007 2993 150 150 6007 2993 6157 2993 4 0 0 8 0 0 16 0.0000 4 195 240 5877 3083 13\001 -6 6 7350 2836 7664 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7507 2993 150 150 7507 2993 7657 2993 4 0 0 8 0 0 16 0.0000 4 180 240 7377 3083 14\001 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 15 0 0 16 0.0000 4 180 240 1825 840 11\001 -6 6 1800 4800 2100 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 4800 2100 4800 2100 5100 1800 5100 1800 4800 4 0 0 10 0 0 16 0.0000 4 180 120 1900 5040 1\001 -6 6 2100 4800 2400 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 4800 2400 4800 2400 5100 2100 5100 2100 4800 4 0 0 10 0 0 16 0.0000 4 165 120 2200 5040 2\001 -6 6 2400 4800 2700 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 4800 2700 4800 2700 5100 2400 5100 2400 4800 4 0 0 10 0 0 16 0.0000 4 180 120 2500 5040 5\001 -6 6 2700 4800 3000 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 4800 3000 4800 3000 5100 2700 5100 2700 4800 4 0 0 10 0 0 16 0.0000 4 165 120 2800 5040 8\001 -6 6 3300 4800 3600 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 4800 3600 4800 3600 5100 3300 5100 3300 4800 4 0 0 15 0 0 16 0.0000 4 180 240 3325 5040 12\001 -6 6 3000 4800 3300 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 4800 3300 4800 3300 5100 3000 5100 3000 4800 4 0 0 10 0 0 16 0.0000 4 180 120 3100 5040 9\001 -6 6 4800 4800 5100 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 4800 5100 4800 5100 5100 4800 5100 4800 4800 4 0 0 15 0 0 16 0.0000 4 195 240 4825 5040 13\001 -6 6 5100 4800 5400 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 4800 5400 4800 5400 5100 5100 5100 5100 4800 4 0 0 15 0 0 16 0.0000 4 180 240 5125 5040 16\001 -6 6 5400 4800 5700 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 4800 5700 4800 5700 5100 5400 5100 5400 4800 4 0 0 15 0 0 16 0.0000 4 195 240 5425 5040 19\001 -6 6 1800 8400 2100 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 8400 2100 8400 2100 8700 1800 8700 1800 8400 4 0 0 10 0 0 16 0.0000 4 165 120 1900 8640 2\001 -6 6 2100 8400 2400 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 8400 2400 8400 2400 8700 2100 8700 2100 8400 4 0 0 10 0 0 16 0.0000 4 180 120 2200 8640 5\001 -6 6 2400 8400 2700 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 8400 2700 8400 2700 8700 2400 8700 2400 8400 4 0 0 10 0 0 16 0.0000 4 165 120 2500 8640 8\001 -6 6 2700 8400 3000 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 8400 3000 8400 3000 8700 2700 8700 2700 8400 4 0 0 10 0 0 16 0.0000 4 180 120 2800 8640 9\001 -6 6 3000 8400 3300 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 8400 3300 8400 3300 8700 3000 8700 3000 8400 4 0 0 15 0 0 16 0.0000 4 180 240 3025 8640 12\001 -6 6 3300 8400 3600 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 8400 3600 8400 3600 8700 3300 8700 3300 8400 4 0 0 15 0 0 16 0.0000 4 195 240 3325 8640 13\001 -6 6 4800 8400 5100 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 8400 5100 8400 5100 8700 4800 8700 4800 8400 4 0 0 15 0 0 16 0.0000 4 180 240 4825 8640 16\001 -6 6 5100 8400 5400 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 8400 5400 8400 5400 8700 5100 8700 5100 8400 4 0 0 15 0 0 16 0.0000 4 195 240 5125 8640 19\001 -6 6 5400 8400 5700 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 8400 5700 8400 5700 8700 5400 8700 5400 8400 4 0 0 15 0 0 16 0.0000 4 165 240 5425 8640 22\001 -6 6 5700 8400 6000 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 8400 6000 8400 6000 8700 5700 8700 5700 8400 4 0 0 15 0 0 16 0.0000 4 180 240 5725 8640 25\001 -6 6 5700 4800 6000 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 4800 6000 4800 6000 5100 5700 5100 5700 4800 4 0 0 15 0 0 16 0.0000 4 165 240 5725 5040 22\001 -6 6 1800 6600 9300 6900 6 1800 6600 2100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 6600 2100 6600 2100 6900 1800 6900 1800 6600 4 0 0 15 0 0 16 0.0000 4 180 240 1825 6840 11\001 -6 6 2100 6600 2400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 6600 2400 6600 2400 6900 2100 6900 2100 6600 4 0 0 15 0 0 16 0.0000 4 180 240 2125 6840 11\001 -6 6 2400 6600 2700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 6600 2700 6600 2700 6900 2400 6900 2400 6600 4 0 0 15 0 0 16 0.0000 4 180 240 2425 6840 12\001 -6 6 2700 6600 3000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 6600 3000 6600 3000 6900 2700 6900 2700 6600 4 0 0 15 0 0 16 0.0000 4 195 240 2725 6840 13\001 -6 6 3000 6600 3300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 6600 3300 6600 3300 6900 3000 6900 3000 6600 4 0 0 15 0 0 16 0.0000 4 180 240 3025 6840 11\001 -6 6 3300 6600 3600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 6600 3600 6600 3600 6900 3300 6900 3300 6600 4 0 0 15 0 0 16 0.0000 4 180 240 3325 6840 12\001 -6 6 3600 6600 3900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 6600 3900 6600 3900 6900 3600 6900 3600 6600 4 0 0 15 0 0 16 0.0000 4 180 240 3625 6840 14\001 -6 6 3900 6600 4200 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 6600 4200 6600 4200 6900 3900 6900 3900 6600 4 0 0 15 0 0 16 0.0000 4 195 240 3925 6840 13\001 -6 6 4200 6600 4500 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 6600 4500 6600 4500 6900 4200 6900 4200 6600 4 0 0 15 0 0 16 0.0000 4 195 240 4225 6840 13\001 -6 6 4500 6600 4800 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 6600 4800 6600 4800 6900 4500 6900 4500 6600 4 0 0 15 0 0 16 0.0000 4 180 240 4525 6840 14\001 -6 6 4800 6600 5100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 6600 5100 6600 5100 6900 4800 6900 4800 6600 4 0 0 15 0 0 16 0.0000 4 180 240 4825 6840 12\001 -6 6 5100 6600 5400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 6600 5400 6600 5400 6900 5100 6900 5100 6600 4 0 0 15 0 0 16 0.0000 4 180 240 5125 6840 14\001 -6 6 5400 6600 5700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 6600 5700 6600 5700 6900 5400 6900 5400 6600 4 0 0 10 0 0 16 0.0000 4 180 120 5500 6840 1\001 -6 6 5700 6600 6000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 6600 6000 6600 6000 6900 5700 6900 5700 6600 4 0 0 10 0 0 16 0.0000 4 165 120 5800 6840 2\001 -6 6 6000 6600 6300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 6600 6300 6600 6300 6900 6000 6900 6000 6600 4 0 0 10 0 0 16 0.0000 4 180 120 6100 6840 3\001 -6 6 6300 6600 6600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 6600 6600 6600 6600 6900 6300 6900 6300 6600 4 0 0 10 0 0 16 0.0000 4 180 120 6400 6840 5\001 -6 6 6600 6600 6900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 6600 6900 6600 6900 6900 6600 6900 6600 6600 4 0 0 10 0 0 16 0.0000 4 165 120 6700 6840 2\001 -6 6 6900 6600 7200 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 6600 7200 6600 7200 6900 6900 6900 6900 6600 4 0 0 10 0 0 16 0.0000 4 180 120 7000 6840 3\001 -6 6 7200 6600 7500 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 6600 7500 6600 7500 6900 7200 6900 7200 6600 4 0 0 10 0 0 16 0.0000 4 165 120 7300 6840 4\001 -6 6 7500 6600 7800 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 6600 7800 6600 7800 6900 7500 6900 7500 6600 4 0 0 10 0 0 16 0.0000 4 180 120 7600 6840 5\001 -6 6 7800 6600 8100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 6600 8100 6600 8100 6900 7800 6900 7800 6600 4 0 0 10 0 0 16 0.0000 4 165 120 7900 6840 2\001 -6 6 8100 6600 8400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 6600 8400 6600 8400 6900 8100 6900 8100 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8200 6840 3\001 -6 6 8400 6600 8700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 6600 8700 6600 8700 6900 8400 6900 8400 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8500 6840 6\001 -6 6 8700 6600 9000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 6600 9000 6600 9000 6900 8700 6900 8700 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8800 6840 5\001 -6 6 9000 6600 9300 6900 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 9000 6600 9300 6600 9300 6900 9000 6900 9000 6600 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9300 6600 9000 6900 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9000 6600 9300 6900 -6 -6 6 6600 600 6900 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 750 150 150 6750 750 6900 750 4 0 0 10 0 0 16 0.0000 4 180 120 6700 840 1\001 -6 6 5850 1950 6150 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6000 2100 150 150 6000 2100 6150 2100 4 0 0 10 0 0 16 0.0000 4 165 120 5950 2190 2\001 -6 6 7350 1950 7650 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 4 0 0 10 0 0 16 0.0000 4 180 120 7450 2190 3\001 -6 6 5100 3300 5400 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3450 150 150 5250 3450 5400 3450 4 0 0 10 0 0 16 0.0000 4 165 120 5200 3540 4\001 -6 6 6600 3300 6900 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 3450 150 150 6750 3450 6900 3450 4 0 0 10 0 0 16 0.0000 4 180 120 6700 3540 5\001 -6 6 8175 3300 8475 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8325 3450 150 150 8325 3450 8475 3450 4 0 0 10 0 0 16 0.0000 4 180 120 8275 3540 6\001 -6 6 3600 4800 3900 5100 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3600 4800 3900 4800 3900 5100 3600 5100 3600 4800 4 0 0 10 0 0 16 0.0000 4 165 120 3700 5040 0\001 -6 6 3900 4800 4200 5100 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3900 4800 4200 4800 4200 5100 3900 5100 3900 4800 4 0 0 10 0 0 16 0.0000 4 165 120 4000 5040 0\001 -6 6 4200 4800 4500 5100 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 4200 4800 4500 4800 4500 5100 4200 5100 4200 4800 4 0 0 10 0 0 16 0.0000 4 165 120 4300 5040 0\001 -6 6 4500 4800 4800 5100 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 4500 4800 4800 4800 4800 5100 4500 5100 4500 4800 4 0 0 10 0 0 16 0.0000 4 165 120 4600 5040 0\001 -6 6 3600 8400 3900 8700 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3600 8400 3900 8400 3900 8700 3600 8700 3600 8400 4 0 0 10 0 0 16 0.0000 4 165 120 3700 8640 0\001 -6 6 3900 8400 4200 8700 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3900 8400 4200 8400 4200 8700 3900 8700 3900 8400 4 0 0 10 0 0 16 0.0000 4 165 120 4000 8640 0\001 -6 6 4200 8400 4500 8700 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 4200 8400 4500 8400 4500 8700 4200 8700 4200 8400 4 0 0 10 0 0 16 0.0000 4 165 120 4300 8640 0\001 -6 6 4500 8400 4800 8700 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 4500 8400 4800 8400 4800 8700 4500 8700 4500 8400 4 0 0 10 0 0 16 0.0000 4 165 120 4600 8640 0\001 -6 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 6750 750 6750 1650 6000 2100 6750 2625 6750 3450 6000 3000 5250 3450 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 6750 1650 7500 2100 6750 2625 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2250 8400 2250 7275 3150 7275 3150 6900 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 1950 5100 1950 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 5100 3450 6075 5250 6075 5250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 5100 2850 6225 4050 6225 4050 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 5100 2550 6300 3150 6300 3150 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5250 5100 5250 5925 6450 5925 6450 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 1950 8400 1950 7200 2250 7200 2250 6900 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 2250 5100 2250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 5100 3150 6150 4350 6150 4350 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5550 5100 5550 5850 7350 5850 7350 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5850 5100 5850 5775 8250 5775 8250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 8400 3450 7575 5550 7575 5550 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 8400 3150 7500 5250 7500 5250 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 8400 2850 7425 4350 7425 4350 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 8400 2550 7350 4050 7350 4050 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5250 8400 5250 7725 7350 7725 7350 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5550 8400 5550 7800 8250 7800 8250 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5850 8400 5850 7875 9150 7875 9150 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4950 8400 4950 7650 6450 7650 6450 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4950 5100 4950 6000 5550 6000 5550 6600 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 6000 2100 6000 3000 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 7500 2100 7500 3000 6750 3450 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 7500 3000 8325 3450 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 7500 2100 7275 1800 6900 1200 6750 750 6600 1200 6300 1800 6000 2100 6525 2025 7050 2025 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 7500 2100 7275 2400 6900 3000 6750 3450 6600 3000 6300 2400 6000 2100 6525 2175 7050 2175 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 3450 6525 3150 6150 2550 6000 2100 5850 2550 5550 3150 5250 3450 5775 3375 6300 3375 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 8250 3450 8025 3150 7650 2550 7500 2100 7350 2550 7050 3150 6750 3450 7275 3375 7800 3375 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 4 0 0 10 0 0 16 0.0000 4 180 120 1900 1440 1\001 4 0 0 10 0 0 16 0.0000 4 180 120 1900 2640 6\001 4 0 0 10 0 0 16 0.0000 4 165 120 1900 2040 4\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 verttab\001 4 0 0 20 0 12 16 0.0000 4 210 1050 600 6825 edgetab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 8625 vendtab\001 scotch_6.0.9/doc/src/scotch/s_f_synp.eps0000644000302600021200000005043713322403377020442 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Dec 27 08:34:23 2005 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 840 920 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 920 moveto 0 0 lineto 840 0 lineto 840 920 lineto closepath clip newpath -25.7 828.8 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 10 % Ellipse 15.000 slw n 7200 4950 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 7200 6150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 11700 4950 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 11700 6150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 2700 4950 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 2700 6150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6150 -1350 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6150 -150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 3750 -1350 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 3750 -150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 4950 3150 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 4950 4350 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 4575 8700 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 4575 9900 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 10575 8700 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 10575 9900 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8100 12450 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8100 13650 600 150 0 360 DrawEllipse gs col-1 s gr % Ellipse n 825 12675 225 75 0 360 DrawEllipse gs col-1 s gr % Ellipse n 825 12315 225 75 0 360 DrawEllipse gs col-1 s gr /Times-Roman ff 240.00 scf sf 1275 13125 m gs 1 -1 sc (Program) col-1 sh gr % Polyline 0 slj 0 slc 7.500 slw gs clippath 8445 10947 m 8445 11115 l 8505 11115 l 8505 10947 l 8505 10947 l 8475 11067 l 8445 10947 l cp eoclip n 10350 10050 m 10350 10275 l 8475 10725 l 8475 11100 l gs col-1 s gr gr % arrowhead n 8445 10947 m 8475 11067 l 8505 10947 l col-1 s % Polyline 0.000 slw n 7800 6150 m 7800 5850 l 6600 5850 l 6600 6150 l cp gs 1.00 setgray ef gr % Polyline n 12300 6150 m 12300 5850 l 11100 5850 l 11100 6150 l cp gs 1.00 setgray ef gr % Polyline n 3300 6150 m 3300 5850 l 2100 5850 l 2100 6150 l cp gs 1.00 setgray ef gr % Polyline n 6750 -150 m 6750 -450 l 5550 -450 l 5550 -150 l cp gs 1.00 setgray ef gr % Polyline n 4350 -150 m 4350 -450 l 3150 -450 l 3150 -150 l cp gs 1.00 setgray ef gr % Polyline n 5550 4350 m 5550 4050 l 4350 4050 l 4350 4350 l cp gs 1.00 setgray ef gr % Polyline n 5175 9900 m 5175 9600 l 3975 9600 l 3975 9900 l cp gs 1.00 setgray ef gr % Polyline n 11175 9900 m 11175 9600 l 9975 9600 l 9975 9900 l cp gs 1.00 setgray ef gr % Polyline n 8700 13650 m 8700 13350 l 7500 13350 l 7500 13650 l cp gs 1.00 setgray ef gr % Polyline n 1050 12525 m 1050 12675 l 600 12675 l 600 12525 l cp gs 1.00 setgray ef gr % Polyline 7.500 slw gs clippath 7770 10947 m 7770 11115 l 7830 11115 l 7830 10947 l 7830 10947 l 7800 11067 l 7770 10947 l cp eoclip n 4950 4500 m 4950 4725 l 6150 5175 l 6150 6450 l 6675 6825 l 6675 10350 l 7800 10725 l 7800 11100 l gs col-1 s gr gr % arrowhead n 7770 10947 m 7800 11067 l 7830 10947 l col-1 s % Polyline 15.000 slw n 7800 4950 m 7800 6150 l gs col-1 s gr % Polyline n 6600 4950 m 6600 6150 l gs col-1 s gr % Polyline n 11100 4950 m 11100 6150 l gs col-1 s gr % Polyline n 12300 4950 m 12300 6150 l gs col-1 s gr % Polyline n 3300 4950 m 3300 6150 l gs col-1 s gr % Polyline n 2100 4950 m 2100 6150 l gs col-1 s gr % Polyline n 6750 -1350 m 6750 -150 l gs col-1 s gr % Polyline n 5550 -1350 m 5550 -150 l gs col-1 s gr % Polyline n 4350 -1350 m 4350 -150 l gs col-1 s gr % Polyline n 3150 -1350 m 3150 -150 l gs col-1 s gr % Polyline n 5550 3150 m 5550 4350 l gs col-1 s gr % Polyline n 4350 3150 m 4350 4350 l gs col-1 s gr % Polyline n 5175 8700 m 5175 9900 l gs col-1 s gr % Polyline n 3975 8700 m 3975 9900 l gs col-1 s gr % Polyline n 9975 8700 m 9975 9900 l gs col-1 s gr % Polyline n 11175 8700 m 11175 9900 l gs col-1 s gr % Polyline n 8700 12450 m 8700 13650 l gs col-1 s gr % Polyline n 7500 12450 m 7500 13650 l gs col-1 s gr % Polyline n 600 12300 m 600 12675 l gs col-1 s gr % Polyline n 1050 12300 m 1050 12675 l gs col-1 s gr /Times-Roman ff 240.00 scf sf 1275 12600 m gs 1 -1 sc (File) col-1 sh gr % Polyline 45.000 slw n 6300 5400 m 6000 5700 l gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 6600 6600 m 6000 6675 l gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 9600 10275 m 9600 10575 l gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 6825 10275 m 6450 9975 l gs col7 1.00 shd ef gr gs col7 s gr /Times-Roman ff 240.00 scf sf 6855 5400 m gs 1 -1 sc (Source) col-1 sh gr /Times-Roman ff 240.00 scf sf 6735 5700 m gs 1 -1 sc (graph file) col-1 sh gr /Courier ff 240.00 scf sf 6900 6075 m gs 1 -1 sc (.grf) col-1 sh gr % Polyline 15.000 slw n 1950 7800 m 1950 7350 l 450 7350 l 450 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 900 7650 m gs 1 -1 sc (mtst) col-1 sh gr /Courier ff 240.00 scf sf 11400 6075 m gs 1 -1 sc (.tgt) col-1 sh gr /Times-Roman ff 240.00 scf sf 11175 5550 m gs 1 -1 sc (Target file) col-1 sh gr % Polyline n 9075 7800 m 9075 7350 l 7575 7350 l 7575 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 8025 7650 m gs 1 -1 sc (gtst) col-1 sh gr % Polyline n 13575 7800 m 13575 7350 l 12075 7350 l 12075 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 12525 7650 m gs 1 -1 sc (atst) col-1 sh gr /Courier ff 240.00 scf sf 2400 6075 m gs 1 -1 sc (.msh) col-1 sh gr /Times-Roman ff 240.00 scf sf 2355 5400 m gs 1 -1 sc (Source) col-1 sh gr /Times-Roman ff 240.00 scf sf 2250 5700 m gs 1 -1 sc (mesh file) col-1 sh gr % Polyline n 4200 7800 m 4200 7350 l 2700 7350 l 2700 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 3150 7650 m gs 1 -1 sc (mord) col-1 sh gr /Times-Roman ff 240.00 scf sf 5724 -720 m gs 1 -1 sc (External) col-1 sh gr /Times-Roman ff 240.00 scf sf 5670 -420 m gs 1 -1 sc (graph file) col-1 sh gr % Polyline n 6900 1050 m 6900 600 l 5400 600 l 5400 1050 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 5925 900 m gs 1 -1 sc (gcv) col-1 sh gr /Times-Roman ff 240.00 scf sf 3324 -720 m gs 1 -1 sc (External) col-1 sh gr /Times-Roman ff 240.00 scf sf 3300 -420 m gs 1 -1 sc (mesh file) col-1 sh gr % Polyline n 4500 2400 m 4500 1950 l 3000 1950 l 3000 2400 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 3375 2250 m gs 1 -1 sc (mmk_*) col-1 sh gr % Polyline n 6900 2400 m 6900 1950 l 5400 1950 l 5400 2400 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 5775 2250 m gs 1 -1 sc (gmk_*) col-1 sh gr % Polyline n 4500 1050 m 4500 600 l 3000 600 l 3000 1050 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 3525 900 m gs 1 -1 sc (mcv) col-1 sh gr /Courier ff 240.00 scf sf 4650 4275 m gs 1 -1 sc (.xyz) col-1 sh gr /Times-Roman ff 240.00 scf sf 4425 3600 m gs 1 -1 sc (Geometry) col-1 sh gr /Times-Roman ff 240.00 scf sf 4800 3900 m gs 1 -1 sc (file) col-1 sh gr % Polyline n 6450 7800 m 6450 7350 l 4950 7350 l 4950 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 5400 7650 m gs 1 -1 sc (gord) col-1 sh gr % Polyline n 5700 5775 m 5700 5325 l 4200 5325 l 4200 5775 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 4425 5625 m gs 1 -1 sc (gmk_msh) col-1 sh gr /Times-Roman ff 240.00 scf sf 4425 9450 m gs 1 -1 sc (file) col-1 sh gr /Courier ff 240.00 scf sf 4275 9825 m gs 1 -1 sc (.ord) col-1 sh gr /Times-Roman ff 240.00 scf sf 4110 9150 m gs 1 -1 sc (Ordering) col-1 sh gr /Times-Roman ff 240.00 scf sf 10425 9450 m gs 1 -1 sc (file) col-1 sh gr /Times-Roman ff 240.00 scf sf 10125 9150 m gs 1 -1 sc (Mapping) col-1 sh gr /Courier ff 240.00 scf sf 10275 9825 m gs 1 -1 sc (.map) col-1 sh gr % Polyline n 11550 11550 m 11550 11100 l 10050 11100 l 10050 11550 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 10350 11400 m gs 1 -1 sc (gmtst) col-1 sh gr /Times-Roman ff 240.00 scf sf 7950 13200 m gs 1 -1 sc (file) col-1 sh gr /Times-Roman ff 240.00 scf sf 7650 12900 m gs 1 -1 sc (Graphics) col-1 sh gr % Polyline n 8850 11550 m 8850 11100 l 7350 11100 l 7350 11550 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 7725 11400 m gs 1 -1 sc (gout) col-1 sh gr % Polyline n 10200 5775 m 10200 5325 l 8700 5325 l 8700 5775 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 8925 5625 m gs 1 -1 sc (amk_grf) col-1 sh gr % Polyline n 5625 11550 m 5625 11100 l 4125 11100 l 4125 11550 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 4425 11400 m gs 1 -1 sc (gotst) col-1 sh gr % Polyline n 14400 5775 m 14400 5325 l 12900 5325 l 12900 5775 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 13350 5625 m gs 1 -1 sc (acpl) col-1 sh gr % Polyline n 12300 4050 m 12300 3600 l 10800 3600 l 10800 4050 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 11175 3900 m gs 1 -1 sc (amk_*) col-1 sh gr % Polyline n 11325 7800 m 11325 7350 l 9825 7350 l 9825 7800 l cp gs col-1 s gr /Courier-Bold ff 240.00 scf sf 10275 7650 m gs 1 -1 sc (gmap) col-1 sh gr % Polyline 7.500 slw n 2475 12150 m 2475 13800 l 450 13800 l 450 12150 l cp gs col-1 s gr % Polyline gs clippath 11145 10947 m 11145 11115 l 11205 11115 l 11205 10947 l 11205 10947 l 11175 11067 l 11145 10947 l cp eoclip n 11550 6300 m 11550 10500 l 11175 10725 l 11175 11100 l gs col-1 s gr gr % arrowhead n 11145 10947 m 11175 11067 l 11205 10947 l col-1 s % Polyline gs clippath 6120 447 m 6120 615 l 6180 615 l 6180 447 l 6180 447 l 6150 567 l 6120 447 l cp eoclip n 6150 0 m 6150 600 l gs col-1 s gr gr % arrowhead n 6120 447 m 6150 567 l 6180 447 l col-1 s % Polyline gs clippath 897 13605 m 1065 13605 l 1065 13545 l 897 13545 l 897 13545 l 1017 13575 l 897 13605 l cp eoclip n 600 13575 m 1050 13575 l gs col-1 s gr gr % arrowhead n 897 13605 m 1017 13575 l 897 13545 l col-1 s % Polyline 15.000 slw n 1050 13125 m 1050 12975 l 600 12975 l 600 13125 l cp gs col-1 s gr /Times-Roman ff 240.00 scf sf 1275 13650 m gs 1 -1 sc (Data flow) col-1 sh gr % Polyline 7.500 slw gs clippath 11520 4797 m 11520 4965 l 11580 4965 l 11580 4797 l 11580 4797 l 11550 4917 l 11520 4797 l cp eoclip n 11550 4050 m 11550 4950 l gs col-1 s gr gr % arrowhead n 11520 4797 m 11550 4917 l 11580 4797 l col-1 s % Polyline gs clippath 12795 7197 m 12795 7365 l 12855 7365 l 12855 7197 l 12855 7197 l 12825 7317 l 12795 7197 l cp eoclip n 11850 6300 m 11850 6600 l 12825 6975 l 12825 7350 l gs col-1 s gr gr % arrowhead n 12795 7197 m 12825 7317 l 12855 7197 l col-1 s % Polyline gs clippath 10245 7197 m 10245 7365 l 10305 7365 l 10305 7197 l 10305 7197 l 10275 7317 l 10245 7197 l cp eoclip n 7725 6225 m 7725 6450 l 10275 6975 l 10275 7350 l gs col-1 s gr gr % arrowhead n 10245 7197 m 10275 7317 l 10305 7197 l col-1 s % Polyline gs clippath 10845 7197 m 10845 7365 l 10905 7365 l 10905 7197 l 10905 7197 l 10875 7317 l 10845 7197 l cp eoclip n 11250 6225 m 11250 6600 l 10875 6975 l 10875 7350 l gs col-1 s gr gr % arrowhead n 10845 7197 m 10875 7317 l 10905 7197 l col-1 s % Polyline gs clippath 8070 10947 m 8070 11115 l 8130 11115 l 8130 10947 l 8130 10947 l 8100 11067 l 8070 10947 l cp eoclip n 7125 6300 m 7125 10050 l 8100 10350 l 8100 11100 l gs col-1 s gr gr % arrowhead n 8070 10947 m 8100 11067 l 8130 10947 l col-1 s % Polyline gs clippath 8295 7197 m 8295 7365 l 8355 7365 l 8355 7197 l 8355 7197 l 8325 7317 l 8295 7197 l cp eoclip n 7575 6300 m 7575 6675 l 8325 7125 l 8325 7350 l gs col-1 s gr gr % arrowhead n 8295 7197 m 8325 7317 l 8355 7197 l col-1 s % Polyline gs clippath 10545 8547 m 10545 8715 l 10605 8715 l 10605 8547 l 10605 8547 l 10575 8667 l 10545 8547 l cp eoclip n 10575 7800 m 10575 8700 l gs col-1 s gr gr % arrowhead n 10545 8547 m 10575 8667 l 10605 8547 l col-1 s % Polyline gs clippath 3420 7197 m 3420 7365 l 3480 7365 l 3480 7197 l 3480 7197 l 3450 7317 l 3420 7197 l cp eoclip n 2925 6300 m 2925 6525 l 3450 7050 l 3450 7350 l gs col-1 s gr gr % arrowhead n 3420 7197 m 3450 7317 l 3480 7197 l col-1 s % Polyline gs clippath 1170 7197 m 1170 7365 l 1230 7365 l 1230 7197 l 1230 7197 l 1200 7317 l 1170 7197 l cp eoclip n 2475 6300 m 2475 6525 l 1200 7050 l 1200 7350 l gs col-1 s gr gr % arrowhead n 1170 7197 m 1200 7317 l 1230 7197 l col-1 s % Polyline gs clippath 7020 4797 m 7020 4965 l 7080 4965 l 7080 4797 l 7080 4797 l 7050 4917 l 7020 4797 l cp eoclip n 6450 2400 m 6450 2550 l 7050 2850 l 7050 4950 l gs col-1 s gr gr % arrowhead n 7020 4797 m 7050 4917 l 7080 4797 l col-1 s % Polyline gs clippath 7320 4797 m 7320 4965 l 7380 4965 l 7380 4797 l 7380 4797 l 7350 4917 l 7320 4797 l cp eoclip n 6450 1050 m 6450 1200 l 7350 1650 l 7350 4950 l gs col-1 s gr gr % arrowhead n 7320 4797 m 7350 4917 l 7380 4797 l col-1 s % Polyline [60] 0 sd gs clippath 5070 2997 m 5070 3165 l 5130 3165 l 5130 2997 l 5130 2997 l 5100 3117 l 5070 2997 l cp eoclip n 5850 1050 m 5850 1200 l 5100 1575 l 5100 3150 l gs col-1 s gr gr [] 0 sd % arrowhead n 5070 2997 m 5100 3117 l 5130 2997 l col-1 s % Polyline [60] 0 sd gs clippath 5295 2997 m 5295 3165 l 5355 3165 l 5355 2997 l 5355 2997 l 5325 3117 l 5295 2997 l cp eoclip n 5850 2400 m 5850 2550 l 5325 2850 l 5325 3150 l gs col-1 s gr gr [] 0 sd % arrowhead n 5295 2997 m 5325 3117 l 5355 2997 l col-1 s % Polyline [60] 0 sd gs clippath 4770 2997 m 4770 3165 l 4830 3165 l 4830 2997 l 4830 2997 l 4800 3117 l 4770 2997 l cp eoclip n 4050 1050 m 4050 1200 l 4800 1575 l 4800 3150 l gs col-1 s gr gr [] 0 sd % arrowhead n 4770 2997 m 4800 3117 l 4830 2997 l col-1 s % Polyline [60] 0 sd gs clippath 4545 2997 m 4545 3165 l 4605 3165 l 4605 2997 l 4605 2997 l 4575 3117 l 4545 2997 l cp eoclip n 4050 2400 m 4050 2550 l 4575 2850 l 4575 3150 l gs col-1 s gr gr [] 0 sd % arrowhead n 4545 2997 m 4575 3117 l 4605 2997 l col-1 s % Polyline gs clippath 2820 4797 m 2820 4965 l 2880 4965 l 2880 4797 l 2880 4797 l 2850 4917 l 2820 4797 l cp eoclip n 3450 2400 m 3450 2550 l 2850 2850 l 2850 4950 l gs col-1 s gr gr % arrowhead n 2820 4797 m 2850 4917 l 2880 4797 l col-1 s % Polyline gs clippath 2520 4797 m 2520 4965 l 2580 4965 l 2580 4797 l 2580 4797 l 2550 4917 l 2520 4797 l cp eoclip n 3450 1050 m 3450 1200 l 2550 1650 l 2550 4950 l gs col-1 s gr gr % arrowhead n 2520 4797 m 2550 4917 l 2580 4797 l col-1 s % Polyline gs clippath 3720 447 m 3720 615 l 3780 615 l 3780 447 l 3780 447 l 3750 567 l 3720 447 l cp eoclip n 3750 0 m 3750 600 l gs col-1 s gr gr % arrowhead n 3720 447 m 3750 567 l 3780 447 l col-1 s % Polyline gs clippath 5670 7197 m 5670 7365 l 5730 7365 l 5730 7197 l 5730 7197 l 5700 7317 l 5670 7197 l cp eoclip n 6675 6225 m 6675 6450 l 5700 7050 l 5700 7350 l gs col-1 s gr gr % arrowhead n 5670 7197 m 5700 7317 l 5730 7197 l col-1 s % Polyline gs clippath 4695 8547 m 4695 8715 l 4755 8715 l 4755 8547 l 4755 8547 l 4725 8667 l 4695 8547 l cp eoclip n 5700 7800 m 5700 7950 l 4725 8325 l 4725 8700 l gs col-1 s gr gr % arrowhead n 4695 8547 m 4725 8667 l 4755 8547 l col-1 s % Polyline gs clippath 4047 5580 m 4215 5580 l 4215 5520 l 4047 5520 l 4047 5520 l 4167 5550 l 4047 5580 l cp eoclip n 3300 5550 m 4200 5550 l gs col-1 s gr gr % arrowhead n 4047 5580 m 4167 5550 l 4047 5520 l col-1 s % Polyline gs clippath 6447 5580 m 6615 5580 l 6615 5520 l 6447 5520 l 6447 5520 l 6567 5550 l 6447 5580 l cp eoclip n 5700 5550 m 6600 5550 l gs col-1 s gr gr % arrowhead n 6447 5580 m 6567 5550 l 6447 5520 l col-1 s % Polyline gs clippath 4395 8547 m 4395 8715 l 4455 8715 l 4455 8547 l 4455 8547 l 4425 8667 l 4395 8547 l cp eoclip n 3450 7800 m 3450 7950 l 4425 8325 l 4425 8700 l gs col-1 s gr gr % arrowhead n 4395 8547 m 4425 8667 l 4455 8547 l col-1 s % Polyline gs clippath 5145 10947 m 5145 11115 l 5205 11115 l 5205 10947 l 5205 10947 l 5175 11067 l 5145 10947 l cp eoclip n 6900 6300 m 6900 10050 l 5175 10725 l 5175 11100 l gs col-1 s gr gr % arrowhead n 5145 10947 m 5175 11067 l 5205 10947 l col-1 s % Polyline gs clippath 10770 10947 m 10770 11115 l 10830 11115 l 10830 10947 l 10830 10947 l 10800 11067 l 10770 10947 l cp eoclip n 10800 10050 m 10800 11100 l gs col-1 s gr gr % arrowhead n 10770 10947 m 10800 11067 l 10830 10947 l col-1 s % Polyline gs clippath 8070 12297 m 8070 12465 l 8130 12465 l 8130 12297 l 8130 12297 l 8100 12417 l 8070 12297 l cp eoclip n 8100 11550 m 8100 12450 l gs col-1 s gr gr % arrowhead n 8070 12297 m 8100 12417 l 8130 12297 l col-1 s % Polyline gs clippath 4545 10947 m 4545 11115 l 4605 11115 l 4605 10947 l 4605 10947 l 4575 11067 l 4545 10947 l cp eoclip n 4575 10050 m 4575 11100 l gs col-1 s gr gr % arrowhead n 4545 10947 m 4575 11067 l 4605 10947 l col-1 s % Polyline gs clippath 8547 5580 m 8715 5580 l 8715 5520 l 8547 5520 l 8547 5520 l 8667 5550 l 8547 5580 l cp eoclip n 7800 5550 m 8700 5550 l gs col-1 s gr gr % arrowhead n 8547 5580 m 8667 5550 l 8547 5520 l col-1 s % Polyline gs clippath 10947 5580 m 11115 5580 l 11115 5520 l 10947 5520 l 10947 5520 l 11067 5550 l 10947 5580 l cp eoclip n 10200 5550 m 11100 5550 l gs col-1 s gr gr % arrowhead n 10947 5580 m 11067 5550 l 10947 5520 l col-1 s % Polyline gs clippath 13680 5928 m 13680 5760 l 13620 5760 l 13620 5928 l 13620 5928 l 13650 5808 l 13680 5928 l cp eoclip n 12145 6234 m 12150 6450 l 13650 6450 l 13650 5775 l gs col-1 s gr gr % arrowhead n 13680 5928 m 13650 5808 l 13620 5928 l col-1 s % Polyline gs clippath 11820 4797 m 11820 4965 l 11880 4965 l 11880 4797 l 11880 4797 l 11850 4917 l 11820 4797 l cp eoclip n 13650 5325 m 13650 4500 l 11850 4500 l 11850 4950 l gs col-1 s gr gr % arrowhead n 11820 4797 m 11850 4917 l 11880 4797 l col-1 s % here ends figure; % % here starts figure with depth 3 % Polyline 0 slj 0 slc 7.500 slw gs clippath 10395 10947 m 10395 11115 l 10455 11115 l 10455 10947 l 10455 10947 l 10425 11067 l 10395 10947 l cp eoclip n 7350 6300 m 7350 9750 l 10425 10725 l 10425 11100 l gs col-1 s gr gr % arrowhead n 10395 10947 m 10425 11067 l 10455 10947 l col-1 s % here ends figure; $F2psEnd rs showpage %%Trailer %EOF scotch_6.0.9/doc/src/scotch/s_f_d.eps0000644000302600021200000002021613322403377017664 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:25 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 216 212 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 212 moveto 0 0 lineto 216 0 lineto 216 212 lineto closepath clip newpath -66.0 264.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawSplineSection { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /xa x1 x2 x1 sub 0.666667 mul add def /ya y1 y2 y1 sub 0.666667 mul add def /xb x3 x2 x3 sub 0.666667 mul add def /yb y3 y2 y3 sub 0.666667 mul add def x1 y1 lineto xa ya xb yb x3 y3 curveto } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.90000 0.90000 sc % % Fig objects follow % % Polyline 2.000 slw n 169 249 m 219 249 l gs col-1 s gr % Polyline n 99 219 m 159 279 l gs col-1 s gr % Polyline n 99 219 m 89 249 l gs col-1 s gr % Polyline n 89 249 m 159 279 l gs col-1 s gr % Polyline n 229 219 m 299 249 l gs col-1 s gr % Polyline n 299 249 m 289 279 l gs col-1 s gr % Polyline n 229 219 m 289 279 l gs col-1 s gr % Polyline n 99 219 m 229 219 l gs col-1 s gr % Polyline n 229 219 m 219 249 l gs col-1 s gr % Polyline n 169 249 m 99 219 l gs col-1 s gr % Polyline n 169 249 m 159 279 l gs col-1 s gr % Polyline n 219 249 m 289 279 l gs col-1 s gr % Polyline n 159 279 m 289 279 l gs col-1 s gr % Polyline 0.500 slw n 229 189 m 229 189 l gs col-1 s gr % Polyline n 129 94 m 194 74 l 259 94 l gs col-1 s gr % Polyline n 94 134 m 129 114 l 164 134 l gs col-1 s gr % Polyline n 89 174 m 94 154 l 99 174 l gs col-1 s gr % Polyline n 159 174 m 164 154 l 169 174 l gs col-1 s gr % Polyline n 219 174 m 224 154 l 289 174 l gs col-1 s gr % Polyline n 229 174 m 294 154 l 299 174 l gs col-1 s gr % Polyline n 224 134 m 259 114 l 294 134 l gs col-1 s gr /Times-Roman ff 16.00 scf sf 189 69 m gs 1 -1 sc (1) col-1 sh gr /Times-Roman ff 16.00 scf sf 89 149 m gs 1 -1 sc (7) col-1 sh gr /Times-Roman ff 16.00 scf sf 124 109 m gs 1 -1 sc (3) col-1 sh gr /Times-Roman ff 16.00 scf sf 159 149 m gs 1 -1 sc (6) col-1 sh gr /Times-Roman ff 16.00 scf sf 144 189 m gs 1 -1 sc (12) col-1 sh gr /Times-Roman ff 16.00 scf sf 169 189 m gs 1 -1 sc (13) col-1 sh gr /Times-Roman ff 16.00 scf sf 214 189 m gs 1 -1 sc (9) col-1 sh gr /Times-Roman ff 16.00 scf sf 229 189 m gs 1 -1 sc (11) col-1 sh gr /Times-Roman ff 16.00 scf sf 284 189 m gs 1 -1 sc (8) col-1 sh gr /Times-Roman ff 16.00 scf sf 299 189 m gs 1 -1 sc (10) col-1 sh gr /Times-Roman ff 16.00 scf sf 289 149 m gs 1 -1 sc (5) col-1 sh gr /Times-Roman ff 16.00 scf sf 219 149 m gs 1 -1 sc (4) col-1 sh gr /Times-Roman ff 16.00 scf sf 254 109 m gs 1 -1 sc (2) col-1 sh gr /Times-Roman ff 16.00 scf sf 99 189 m gs 1 -1 sc (14) col-1 sh gr /Times-Roman ff 16.00 scf sf 74 189 m gs 1 -1 sc (15) col-1 sh gr % Polyline [1 3] 3 sd n 219 249 m 219 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 229 219 m 229 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 299 249 m 299 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 169 249 m 169 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 159 274 m 159 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 99 219 m 99 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 89 249 m 89 194 l gs col-1 s gr [] 0 sd % Polyline [1 3] 3 sd n 289 279 m 289 194 l gs col-1 s gr [] 0 sd % Closed spline gs n 151.5 281.5 m 151.5 281.5 149.0 274.0 154.0 259.0 DrawSplineSection 154.0 259.0 159.0 244.0 166.5 241.5 DrawSplineSection 166.5 241.5 174.0 239.0 176.5 246.5 DrawSplineSection 176.5 246.5 179.0 254.0 174.0 269.0 DrawSplineSection 174.0 269.0 169.0 284.0 161.5 286.5 DrawSplineSection 161.5 286.5 154.0 289.0 151.5 281.5 DrawSplineSection closepath gs col-1 s gr gr % Closed spline gs n 81.5 251.5 m 81.5 251.5 79.0 244.0 84.0 229.0 DrawSplineSection 84.0 229.0 89.0 214.0 96.5 211.5 DrawSplineSection 96.5 211.5 104.0 209.0 106.5 216.5 DrawSplineSection 106.5 216.5 109.0 224.0 104.0 239.0 DrawSplineSection 104.0 239.0 99.0 254.0 91.5 256.5 DrawSplineSection 91.5 256.5 84.0 259.0 81.5 251.5 DrawSplineSection closepath gs col-1 s gr gr % Closed spline gs n 269.0 219.0 m 269.0 219.0 304.0 234.0 309.0 244.0 DrawSplineSection 309.0 244.0 314.0 254.0 309.0 269.0 DrawSplineSection 309.0 269.0 304.0 284.0 294.0 289.0 DrawSplineSection 294.0 289.0 284.0 294.0 249.0 279.0 DrawSplineSection 249.0 279.0 214.0 264.0 209.0 254.0 DrawSplineSection 209.0 254.0 204.0 244.0 209.0 229.0 DrawSplineSection 209.0 229.0 214.0 214.0 224.0 209.0 DrawSplineSection 224.0 209.0 234.0 204.0 269.0 219.0 DrawSplineSection closepath gs col-1 s gr gr % Closed spline gs n 139.0 219.0 m 139.0 219.0 174.0 234.0 179.0 244.0 DrawSplineSection 179.0 244.0 184.0 254.0 179.0 269.0 DrawSplineSection 179.0 269.0 174.0 284.0 164.0 289.0 DrawSplineSection 164.0 289.0 154.0 294.0 119.0 279.0 DrawSplineSection 119.0 279.0 84.0 264.0 79.0 254.0 DrawSplineSection 79.0 254.0 74.0 244.0 79.0 229.0 DrawSplineSection 79.0 229.0 84.0 214.0 94.0 209.0 DrawSplineSection 94.0 209.0 104.0 204.0 139.0 219.0 DrawSplineSection closepath gs col-1 s gr gr % Closed spline gs n 226.5 211.5 m 226.5 211.5 219.0 214.0 221.5 221.5 DrawSplineSection 221.5 221.5 224.0 229.0 259.0 244.0 DrawSplineSection 259.0 244.0 294.0 259.0 301.5 256.5 DrawSplineSection 301.5 256.5 309.0 254.0 306.5 246.5 DrawSplineSection 306.5 246.5 304.0 239.0 269.0 224.0 DrawSplineSection 269.0 224.0 234.0 209.0 226.5 211.5 DrawSplineSection closepath gs col-1 s gr gr % Closed spline gs n 216.5 241.5 m 216.5 241.5 209.0 244.0 211.5 251.5 DrawSplineSection 211.5 251.5 214.0 259.0 249.0 274.0 DrawSplineSection 249.0 274.0 284.0 289.0 291.5 286.5 DrawSplineSection 291.5 286.5 299.0 284.0 299.0 279.0 DrawSplineSection 299.0 279.0 299.0 274.0 261.5 256.5 DrawSplineSection 261.5 256.5 224.0 239.0 216.5 241.5 DrawSplineSection closepath gs col-1 s gr gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/s_f_out3.src0000644000302600021200000000026613303015264020327 0ustar pelegrinpelegrin11 24 0 1 2 1 1 1 4 1 1 2 1 0 1 5 3 1 1 1 7 4 1 2 1 0 1 5 5 1 3 1 1 1 4 1 9 7 1 2 1 3 1 11 9 1 2 1 5 1 10 10 1 3 1 9 1 11 1 14 11 1 3 1 7 1 10 1 15 14 1 2 1 10 1 15 15 1 2 1 11 1 14 scotch_6.0.9/doc/src/scotch/s_f_me3.fig0000644000302600021200000004522213303015264020100 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 3600 2100 3900 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 3600 1800 3900 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 3600 2100 3900 -6 6 1800 4200 2100 4500 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 4200 1800 4500 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 4200 2100 4500 -6 6 2100 4800 2400 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 4800 2400 4800 2400 5100 2100 5100 2100 4800 4 0 0 10 0 0 16 0.0000 4 165 120 2200 5040 2\001 -6 6 2400 4800 2700 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 4800 2700 4800 2700 5100 2400 5100 2400 4800 4 0 0 10 0 0 16 0.0000 4 180 120 2500 5040 5\001 -6 6 2700 4800 3000 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 4800 3000 4800 3000 5100 2700 5100 2700 4800 4 0 0 10 0 0 16 0.0000 4 165 120 2800 5040 8\001 -6 6 3300 4800 3600 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 4800 3600 4800 3600 5100 3300 5100 3300 4800 4 0 0 15 0 0 16 0.0000 4 180 240 3325 5040 12\001 -6 6 4800 4800 5100 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 4800 5100 4800 5100 5100 4800 5100 4800 4800 4 0 0 15 0 0 16 0.0000 4 195 240 4825 5040 13\001 -6 6 5100 4800 5400 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 4800 5400 4800 5400 5100 5100 5100 5100 4800 4 0 0 15 0 0 16 0.0000 4 180 240 5125 5040 16\001 -6 6 5400 4800 5700 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 4800 5700 4800 5700 5100 5400 5100 5400 4800 4 0 0 15 0 0 16 0.0000 4 195 240 5425 5040 19\001 -6 6 2100 8400 2400 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 8400 2400 8400 2400 8700 2100 8700 2100 8400 4 0 0 10 0 0 16 0.0000 4 180 120 2200 8640 5\001 -6 6 2400 8400 2700 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 8400 2700 8400 2700 8700 2400 8700 2400 8400 4 0 0 10 0 0 16 0.0000 4 165 120 2500 8640 8\001 -6 6 2700 8400 3000 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 8400 3000 8400 3000 8700 2700 8700 2700 8400 4 0 0 10 0 0 16 0.0000 4 180 120 2800 8640 9\001 -6 6 3300 8400 3600 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 8400 3600 8400 3600 8700 3300 8700 3300 8400 4 0 0 15 0 0 16 0.0000 4 195 240 3325 8640 13\001 -6 6 4800 8400 5100 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 8400 5100 8400 5100 8700 4800 8700 4800 8400 4 0 0 15 0 0 16 0.0000 4 180 240 4825 8640 16\001 -6 6 5100 8400 5400 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 8400 5400 8400 5400 8700 5100 8700 5100 8400 4 0 0 15 0 0 16 0.0000 4 195 240 5125 8640 19\001 -6 6 5400 8400 5700 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 8400 5700 8400 5700 8700 5400 8700 5400 8400 4 0 0 15 0 0 16 0.0000 4 165 240 5425 8640 22\001 -6 6 5700 8400 6000 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 8400 6000 8400 6000 8700 5700 8700 5700 8400 4 0 0 15 0 0 16 0.0000 4 180 240 5725 8640 25\001 -6 6 5700 4800 6000 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 4800 6000 4800 6000 5100 5700 5100 5700 4800 4 0 0 15 0 0 16 0.0000 4 165 240 5725 5040 22\001 -6 6 6600 1936 6914 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6757 2093 150 150 6757 2093 6907 2093 4 0 0 10 0 0 16 0.0000 4 165 120 6707 2183 7\001 -6 6 5850 2836 6164 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6007 2993 150 150 6007 2993 6157 2993 4 0 0 8 0 0 16 0.0000 4 195 240 5877 3083 13\001 -6 6 7350 2836 7664 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7507 2993 150 150 7507 2993 7657 2993 4 0 0 8 0 0 16 0.0000 4 180 240 7377 3083 14\001 -6 6 6600 600 6900 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 750 150 150 6750 750 6900 750 4 0 0 10 0 0 16 0.0000 4 180 120 6700 840 1\001 -6 6 5850 1950 6150 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6000 2100 150 150 6000 2100 6150 2100 4 0 0 10 0 0 16 0.0000 4 165 120 5950 2190 2\001 -6 6 7350 1950 7650 2250 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7500 2100 150 150 7500 2100 7650 2100 4 0 0 10 0 0 16 0.0000 4 180 120 7450 2190 3\001 -6 6 5100 3300 5400 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3450 150 150 5250 3450 5400 3450 4 0 0 10 0 0 16 0.0000 4 165 120 5200 3540 4\001 -6 6 6600 3300 6900 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6750 3450 150 150 6750 3450 6900 3450 4 0 0 10 0 0 16 0.0000 4 180 120 6700 3540 5\001 -6 6 8175 3300 8475 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8325 3450 150 150 8325 3450 8475 3450 4 0 0 10 0 0 16 0.0000 4 180 120 8275 3540 6\001 -6 6 6375 1500 6675 1800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6525 1650 150 150 6525 1650 6675 1650 4 0 0 8 0 0 16 0.0000 4 180 240 6395 1740 11\001 -6 6 6375 2386 6689 2700 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6532 2543 150 150 6532 2543 6682 2543 4 0 0 8 0 0 16 0.0000 4 180 240 6402 2633 12\001 -6 6 6825 2400 7125 2700 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6975 2550 150 150 6975 2550 7125 2550 4 0 0 8 0 0 16 0.0000 4 180 240 6845 2640 10\001 -6 6 6825 1500 7125 1800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6975 1650 150 150 6975 1650 7125 1650 4 0 0 8 0 0 16 0.0000 4 180 120 6925 1740 9\001 -6 6 1800 2400 2100 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 7\001 -6 6 1800 1800 2100 2100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 4 0 0 10 0 0 16 0.0000 4 180 120 1900 2040 6\001 -6 6 1800 1200 2100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 4 0 0 10 0 0 16 0.0000 4 180 120 1900 1440 1\001 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 9\001 -6 6 2700 6600 3000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 6600 3000 6600 3000 6900 2700 6900 2700 6600 4 0 0 15 0 0 16 0.0000 4 195 240 2725 6840 13\001 -6 6 3600 6600 3900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 6600 3900 6600 3900 6900 3600 6900 3600 6600 4 0 0 15 0 0 16 0.0000 4 180 240 3625 6840 14\001 -6 6 5100 6600 5400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 6600 5400 6600 5400 6900 5100 6900 5100 6600 4 0 0 15 0 0 16 0.0000 4 180 240 5125 6840 14\001 -6 6 5400 6600 5700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 6600 5700 6600 5700 6900 5400 6900 5400 6600 4 0 0 10 0 0 16 0.0000 4 180 120 5500 6840 1\001 -6 6 5700 6600 6000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 6600 6000 6600 6000 6900 5700 6900 5700 6600 4 0 0 10 0 0 16 0.0000 4 165 120 5800 6840 2\001 -6 6 6000 6600 6300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 6600 6300 6600 6300 6900 6000 6900 6000 6600 4 0 0 10 0 0 16 0.0000 4 165 120 6100 6840 7\001 -6 6 6300 6600 6600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 6600 6600 6600 6600 6900 6300 6900 6300 6600 4 0 0 10 0 0 16 0.0000 4 180 120 6400 6840 5\001 -6 6 6600 6600 6900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 6600 6900 6600 6900 6900 6600 6900 6600 6600 4 0 0 10 0 0 16 0.0000 4 165 120 6700 6840 2\001 -6 6 7200 6600 7500 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 6600 7500 6600 7500 6900 7200 6900 7200 6600 4 0 0 10 0 0 16 0.0000 4 165 120 7300 6840 4\001 -6 6 7500 6600 7800 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 6600 7800 6600 7800 6900 7500 6900 7500 6600 4 0 0 10 0 0 16 0.0000 4 180 120 7600 6840 5\001 -6 6 7800 6600 8100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 6600 8100 6600 8100 6900 7800 6900 7800 6600 4 0 0 10 0 0 16 0.0000 4 165 120 7900 6840 2\001 -6 6 8100 6600 8400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 6600 8400 6600 8400 6900 8100 6900 8100 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8200 6840 3\001 -6 6 8400 6600 8700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 6600 8700 6600 8700 6900 8400 6900 8400 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8500 6840 6\001 -6 6 8700 6600 9000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 6600 9000 6600 9000 6900 8700 6900 8700 6600 4 0 0 10 0 0 16 0.0000 4 180 120 8800 6840 5\001 -6 6 9000 6600 9300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9000 6600 9300 6600 9300 6900 9000 6900 9000 6600 4 0 0 15 0 0 16 0.0000 4 180 240 9025 6840 11\001 -6 6 9300 6600 9600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9300 6600 9600 6600 9600 6900 9300 6900 9300 6600 4 0 0 10 0 0 16 0.0000 4 180 120 9400 6840 9\001 -6 6 1800 4800 2100 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 4800 2100 4800 2100 5100 1800 5100 1800 4800 4 0 0 15 0 0 16 0.0000 4 180 240 1825 5040 25\001 -6 6 1800 8400 2100 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 8400 2100 8400 2100 8700 1800 8700 1800 8400 4 0 0 15 0 0 16 0.0000 4 165 240 1825 8640 27\001 -6 6 3900 6600 4200 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 6600 4200 6600 4200 6900 3900 6900 3900 6600 4 0 0 15 0 0 16 0.0000 4 195 240 3925 6840 13\001 -6 6 9900 6600 10200 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 6600 10200 6600 10200 6900 9900 6900 9900 6600 4 0 0 15 0 0 16 0.0000 4 180 240 9925 6840 14\001 -6 6 9600 6600 9900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 6600 9900 6600 9900 6900 9600 6900 9600 6600 4 0 0 15 0 0 16 0.0000 4 195 240 9625 6840 13\001 -6 6 3900 4800 4200 5100 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3900 4800 4200 4800 4200 5100 3900 5100 3900 4800 4 0 0 10 0 0 16 0.0000 4 165 120 4000 5040 0\001 -6 6 3900 8400 4200 8700 2 2 0 1 0 -1 15 0 3 0.000 0 0 7 0 0 5 3900 8400 4200 8400 4200 8700 3900 8700 3900 8400 4 0 0 10 0 0 16 0.0000 4 165 120 4000 8640 0\001 -6 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 15 0 0 16 0.0000 4 195 240 1825 3240 36\001 -6 6 3000 4800 3300 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 4800 3300 4800 3300 5100 3000 5100 3000 4800 4 0 0 15 0 0 16 0.0000 4 165 240 3025 5040 27\001 -6 6 3000 8400 3300 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 8400 3300 8400 3300 8700 3000 8700 3000 8400 4 0 0 15 0 0 16 0.0000 4 195 240 3025 8640 31\001 -6 6 3600 4800 3900 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 4800 3900 4800 3900 5100 3600 5100 3600 4800 4 0 0 15 0 0 16 0.0000 4 195 240 3625 5040 31\001 -6 6 3600 8400 3900 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 8400 3900 8400 3900 8700 3600 8700 3600 8400 4 0 0 15 0 0 16 0.0000 4 195 240 3625 8640 35\001 -6 6 10200 6600 10500 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 6600 10500 6600 10500 6900 10200 6900 10200 6600 4 0 0 15 0 0 16 0.0000 4 180 240 10225 6840 12\001 -6 6 10800 6600 11100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10800 6600 11100 6600 11100 6900 10800 6900 10800 6600 4 0 0 15 0 0 16 0.0000 4 180 240 10825 6840 11\001 -6 6 11100 6600 11400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11100 6600 11400 6600 11400 6900 11100 6900 11100 6600 4 0 0 10 0 0 16 0.0000 4 180 120 11200 6840 9\001 -6 6 11400 6600 11700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11400 6600 11700 6600 11700 6900 11400 6900 11400 6600 4 0 0 15 0 0 16 0.0000 4 180 240 11425 6840 12\001 -6 6 11700 6600 12000 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 11700 6600 12000 6600 12000 6900 11700 6900 11700 6600 4 0 0 15 0 0 16 0.0000 4 180 240 11725 6840 10\001 -6 6 4200 4800 4500 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 4800 4500 4800 4500 5100 4200 5100 4200 4800 4 0 0 10 0 0 16 0.0000 4 180 120 4300 5040 9\001 -6 6 4200 6600 4500 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 6600 4500 6600 4500 6900 4200 6900 4200 6600 4 0 0 10 0 0 16 0.0000 4 180 120 4300 6840 1\001 -6 6 4800 6600 5100 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 6600 5100 6600 5100 6900 4800 6900 4800 6600 4 0 0 10 0 0 16 0.0000 4 180 120 4900 6840 3\001 -6 6 4500 6600 4800 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 6600 4800 6600 4800 6900 4500 6900 4500 6600 4 0 0 10 0 0 16 0.0000 4 165 120 4600 6840 7\001 -6 6 4200 8400 4500 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 8400 4500 8400 4500 8700 4200 8700 4200 8400 4 0 0 15 0 0 16 0.0000 4 180 240 4225 8640 12\001 -6 6 4500 4800 4800 5100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 4800 4800 4800 4800 5100 4500 5100 4500 4800 4 0 0 15 0 0 16 0.0000 4 195 240 4525 5040 35\001 -6 6 4500 8400 4800 8700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 8400 4800 8400 4800 8700 4500 8700 4500 8400 4 0 0 15 0 0 16 0.0000 4 180 240 4525 8640 38\001 -6 6 12000 6600 12300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12000 6600 12300 6600 12300 6900 12000 6900 12000 6600 4 0 0 10 0 0 16 0.0000 4 165 120 12100 6840 7\001 -6 6 12300 6600 12600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12300 6600 12600 6600 12600 6900 12300 6900 12300 6600 4 0 0 10 0 0 16 0.0000 4 180 120 12400 6840 3\001 -6 6 12600 6600 12900 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 12600 6600 12900 6600 12900 6900 12600 6900 12600 6600 4 0 0 10 0 0 16 0.0000 4 180 120 12700 6840 5\001 -6 6 6900 6600 7200 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 6600 7200 6600 7200 6900 6900 6900 6900 6600 4 0 0 10 0 0 16 0.0000 4 165 120 7000 6840 7\001 -6 6 12900 6600 13200 6900 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 12900 6600 13200 6600 13200 6900 12900 6900 12900 6600 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 13200 6600 12900 6900 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 12900 6600 13200 6900 -6 6 2100 6600 2400 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 6600 2400 6600 2400 6900 2100 6900 2100 6600 4 0 0 15 0 0 16 0.0000 4 180 240 2125 6840 11\001 -6 6 2400 6600 2700 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 6600 2700 6600 2700 6900 2400 6900 2400 6600 4 0 0 15 0 0 16 0.0000 4 180 240 2425 6840 12\001 -6 6 3000 6600 3300 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 6600 3300 6600 3300 6900 3000 6900 3000 6600 4 0 0 10 0 0 16 0.0000 4 180 120 3100 6840 9\001 -6 6 3300 6600 3600 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 6600 3600 6600 3600 6900 3300 6900 3300 6600 4 0 0 15 0 0 16 0.0000 4 180 240 3325 6840 10\001 -6 6 10500 6600 10800 6900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10500 6600 10800 6600 10800 6900 10500 6900 10500 6600 4 0 0 15 0 0 16 0.0000 4 180 240 10525 6840 10\001 -6 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2250 8400 2250 7200 3150 7200 3150 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 5100 3450 6150 5250 6150 5250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 5100 2550 6300 3150 6300 3150 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 1950 8400 1950 8100 9750 8100 9750 6900 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 2250 5100 2250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 5100 3150 5625 9750 5625 9750 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5550 5100 5550 5925 7350 5925 7350 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5850 5100 5850 5850 8250 5850 8250 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 8400 3450 7425 5550 7425 5550 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 8400 3150 8025 10950 8025 10950 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 8400 2850 7350 4350 7350 4350 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 8400 2550 7275 4050 7275 4050 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5250 8400 5250 7725 7350 7725 7350 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5550 8400 5550 7800 8250 7800 8250 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5850 8400 5850 7875 9150 7875 9150 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4950 8400 4950 7500 6450 7500 6450 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5250 5100 5250 6000 6450 6000 6450 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4950 5100 4950 6075 5550 6075 5550 6600 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 6000 2100 6000 3000 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3 7500 2100 7500 3000 6750 3450 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 7500 3000 8325 3450 2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 8 5250 3450 6000 3000 6750 3450 6525 2550 6000 2100 6525 1650 6750 2100 6525 2550 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 6 6525 1650 6750 750 6975 1650 6750 2100 6975 2550 6750 3450 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 6975 2550 7500 2100 6975 1650 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 1950 5100 1950 5550 9150 5550 9150 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 5100 2850 6225 4050 6225 4050 6600 2 2 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5 1800 6600 2100 6600 2100 6900 1800 6900 1800 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 8400 3750 7950 12150 7950 12150 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 5100 3750 5700 10950 5700 10950 6600 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 4350 5100 4350 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4350 8400 4350 7575 5250 7575 5250 6900 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4650 5100 4650 5775 12150 5775 12150 6600 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4650 8400 4650 7650 13050 7650 13050 6900 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 3450 6525 3150 6150 2550 6000 2100 5850 2550 5550 3150 5250 3450 5775 3375 6300 3375 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 8250 3450 8025 3150 7650 2550 7500 2100 7350 2550 7050 3150 6750 3450 7275 3375 7800 3375 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 2100 6675 2550 6675 2775 6750 3450 6600 3000 6300 2400 6000 2100 6300 2175 6450 2175 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 2100 6825 2550 6825 2775 6750 3450 6900 3000 7200 2400 7500 2100 7200 2175 7050 2175 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 2100 6825 1650 6825 1425 6750 750 6900 1200 7200 1800 7500 2100 7200 2025 7050 2025 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 9 6750 2100 6675 1650 6675 1425 6750 750 6600 1200 6300 1800 6000 2100 6300 2025 6450 2025 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 verttab\001 4 0 0 20 0 12 16 0.0000 4 210 1050 600 6825 edgetab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 8625 vendtab\001 scotch_6.0.9/doc/src/scotch/m_i.tex0000644000302600021200000000136213303015264017361 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_i.tex % % Sujet : Manuel de maintenance % % du projet 'Scotch' % % Introduction % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} This document is a starting point for the persons interested in using \scotch\ as a testbed for their new partitioning methods, and/or willing to contribute to it by making these methods available to the rest of the scientific community. Much information is missing. If you need specific information, please send an e-mail, so that relevant additional information can be added to this document. scotch_6.0.9/doc/src/scotch/s_f_d.fig0000644000302600021200000000566513303015264017646 0ustar pelegrinpelegrin#FIG 2.1 80 2 6 84 214 304 284 2 1 0 3 -1 0 0 0 0.000 7 0 0 169 249 219 249 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 99 219 159 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 99 219 89 249 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 89 249 159 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 229 219 299 249 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 299 249 289 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 229 219 289 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 99 219 229 219 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 229 219 219 249 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 169 249 99 219 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 169 249 159 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 219 249 289 279 9999 9999 2 1 0 3 -1 0 0 0 0.000 -1 0 0 159 279 289 279 9999 9999 -6 6 74 54 314 189 2 1 2 1 -1 0 0 0 3.000 -1 0 0 229 189 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 129 94 194 74 259 94 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 94 134 129 114 164 134 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 89 174 94 154 99 174 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 159 174 164 154 169 174 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 219 174 224 154 289 174 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 229 174 294 154 299 174 9999 9999 2 1 0 1 -1 0 0 0 0.000 -1 0 0 224 134 259 114 294 134 9999 9999 4 0 0 16 0 -1 0 0.00000 4 11 8 189 69 1 4 0 0 16 0 -1 0 0.00000 4 19 7 89 149 7 4 0 0 16 0 -1 0 0.00000 4 19 7 124 109 3 4 0 0 16 0 -1 0 0.00000 4 19 7 159 149 6 4 0 0 16 0 -1 0 0.00000 4 19 14 144 189 12 4 0 0 16 0 -1 0 0.00000 4 19 14 169 189 13 4 0 0 16 0 -1 0 0.00000 4 19 7 214 189 9 4 0 0 16 0 -1 0 0.00000 4 19 14 229 189 11 4 0 0 16 0 -1 0 0.00000 4 19 7 284 189 8 4 0 0 16 0 -1 0 0.00000 4 19 14 299 189 10 4 0 0 16 0 -1 0 0.00000 4 19 7 289 149 5 4 0 0 16 0 -1 0 0.00000 4 19 7 219 149 4 4 0 0 16 0 -1 0 0.00000 4 19 7 254 109 2 4 0 0 16 0 -1 0 0.00000 4 19 14 99 189 14 4 0 0 16 0 -1 0 0.00000 4 19 14 74 189 15 -6 2 1 2 1 -1 0 0 0 3.000 -1 0 0 219 249 219 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 229 219 229 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 299 249 299 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 169 249 169 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 159 274 159 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 99 219 99 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 89 249 89 194 9999 9999 2 1 2 1 -1 0 0 0 3.000 -1 0 0 289 279 289 194 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 154 289 149 274 159 244 174 239 179 254 169 284 154 289 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 84 259 79 244 89 214 104 209 109 224 99 254 84 259 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 234 204 304 234 314 254 304 284 284 294 214 264 204 244 214 214 234 204 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 104 204 174 234 184 254 174 284 154 294 84 264 74 244 84 214 104 204 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 234 209 219 214 224 229 294 259 309 254 304 239 234 209 9999 9999 3 1 0 1 -1 0 0 0 0.000 0 0 224 239 209 244 214 259 284 289 299 284 299 274 224 239 9999 9999 scotch_6.0.9/doc/src/scotch/s_f.tex0000644000302600021200000010117113465315041017370 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_f.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Formats de fichiers 6.0 % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Files and data structures} \label{sec-file} For the sake of portability, readability, and reduction of storage space, all the data files shared by the different programs of the \scotch\ project are coded in plain ASCII text exclusively. Although we may speak of ``lines'' when describing file formats, text-formatting characters such as newlines or tabulations are not mandatory, and are not taken into account when files are read. They are only used to provide better readability and understanding. Whenever numbers are used to label objects, and unless explicitely stated, \textbf{numberings always start from zero}, not one. \subsection{Graph files} \label{sec-file-sgraph} Graph files, which usually end in ``\texttt{\@.grf}'' or ``\texttt{\@.src}'', describe valuated graphs, which can be valuated process graphs to be mapped onto target architectures, or graphs representing the adjacency structures of matrices to order. Graphs are represented by means of adjacency lists: the definition of each vertex is accompanied by the list of all of its neighbors, i.e. all of its adjacent arcs. Therefore, the overall number of edge data is twice the number of edges. \\ Since version \textsc{3.3} has been introduced a new file format, referred to as the ``new-style'' file format, which replaces the previous, ``old-style'', file format. The two advantages of the new-style format over its predecessor are its greater compacity, which results in shorter I/O times, and its ability to handle easily graphs output by C or by Fortran programs. Starting from version \textsc{4.0}, only the new format is supported. To convert remaining old-style graph files into new-style graph files, one should get version \textsc{3.4} of the \scotch\ distribution, which comprises the \texttt{scv} file converter, and use it to produce new-style \scotch\ graph files from the old-style \scotch\ graph files which it is able to read. See section~\ref{sec-prog-gcv} for a description of \texttt{gcv}, formerly called \texttt{scv}. \\ The first line of a graph file holds the graph file version number, which is currently~\texttt{0}. The second line holds the number of vertices of the graph (referred to as \texttt{vertnbr} in \libscotch; see for instance Figure~\ref{fig-lib-graf-one}, page~\pageref{fig-lib-graf-one}, for a detailed example), followed by its number of arcs (unappropriately called \texttt{edgenbr}, as it is in fact equal to twice the actual number of edges). The third line holds two figures: the graph base index value (\texttt{baseval}), and a numeric flag. The graph base index value records the value of the starting index used to describe the graph; it is usually $0$ when the graph has been output by C programs, and $1$ for Fortran programs. Its purpose is to ease the manipulation of graphs within each of these two environments, while providing compatibility between them. The numeric flag, similar to the one used by the \chaco\ graph format~\cite{hele93c}, is made of three decimal digits. A non-zero value in the units indicates that vertex weights are provided. A non-zero value in the tenths indicates that edge weights are provided. A non-zero value in the hundredths indicates that vertex labels are provided; if it is the case, vertices can be stored in any order in the file; else, natural order is assumed, starting from the graph base index. This header data is then followed by as many lines as there are vertices in the graph, that is, \texttt{vertnbr} lines. Each of these lines begins with the vertex label, if necessary, the vertex load, if necessary, and the vertex degree, followed by the description of the arcs. An arc is defined by the load of the edge, if necessary, and by the label of its other end vertex. The arcs of a given vertex can be provided in any order in its neighbor list. If vertex labels are provided, vertices can also be stored in any order in the file. Figure~\ref{fig-file-sgraph} shows the contents of a graph file modeling a cube with unity vertex and edge weights and base $0$. \begin{figure}[hbt] \begin{center} \begin{minipage}{7.3cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize \tt \begin{verbatim} 0 8 24 0 000 3 4 2 1 3 5 3 0 3 6 0 3 3 7 1 2 3 0 6 5 3 1 7 4 3 2 4 7 3 3 5 6 \end{verbatim}} \end{minipage} \end{center} \caption{Graph file representing a cube.} \label{fig-file-sgraph} \end{figure} \subsection{Mesh files} \label{sec-file-smesh} Mesh files, which usually end in ``\texttt{\@.msh}'', describe valuated meshes, made of elements and nodes, the elements of which can be mapped onto target architectures, and the nodes of which can be reordered. Meshes are bipartite graphs, in the sense that every element is connected to the nodes that it comprises, and every node is connected to the elements to which it belongs. No edge connects any two element vertices, nor any two node vertices. One can also think of meshes as hypergraphs, such that nodes are the vertices of the hypergraph and elements are hyper-edges which connect multiple nodes, or reciprocally such that elements are the vertices of the hypergraph and nodes are hyper-edges which connect multiple elements. Since meshes are graphs, the structure of mesh files resembles very much the one of graph files described above in section~\ref{sec-file-sgraph}, and differs only by its header, which indicates which of the vertices are node vertices and element vertices. \\ The first line of a mesh file holds the mesh file version number, which is currently~\texttt{1}. Graph and mesh version numbers will always differ, which enables application programs to accept both file formats and adapt their behavior according to the type of input data. The second line holds the number of elements of the mesh (\texttt{velmnbr}), followed by its number of nodes (\texttt{vnodnbr}), and its overall number of arcs (\texttt{edgenbr}, that is, twice the number of edges which connect elements to nodes and vice-versa). The third line holds three figures: the base index of the first element vertex in memory (\texttt{velmbas}), the base index of the first node vertex in memory (\texttt{vnodbas}), and a numeric flag. The \scotch\ mesh file format requires that all nodes and all elements be assigned to contiguous ranges of indices. Therefore, either all element vertices are defined before all node vertices, or all node vertices are defined before all element vertices. The node and element base indices indicate at the same time whether elements or nodes are put in the first place, as well as the value of the starting index used to describe the graph. Indeed, if $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} < \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$, then elements have the smallest indices, \texttt{velmbas} is the base value of the underlying graph (that is, \texttt{baseval} = \texttt{velmbas}), and $\mbox{\texttt{velmbas}} + \mbox{\texttt{velmnbr}} = \mbox{\texttt{vnodbas}}$ holds. Conversely, if $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} > \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$, then nodes have the smallest indices, \texttt{vnodbas} is the base value of the underlying graph, (that is, \texttt{baseval} = \texttt{vnodbas}), and $\mbox{\texttt{vnodbas}} + \mbox{\texttt{vnodnbr}} = \mbox{\texttt{velmbas}}$ holds. The numeric flag, similar to the one used by the \chaco\ graph format~\cite{hele93c}, is made of three decimal digits. A non-zero value in the units indicates that vertex weights are provided. A non-zero value in the tenths indicates that edge weights are provided. A non-zero value in the hundredths indicates that vertex labels are provided; if it is the case, and if $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} < \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$ (resp\@. $\mbox{\texttt{velm}}\-\mbox{\texttt{bas}} > \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}}$), the \texttt{velmnbr} (resp\@. \texttt{vnodnbr}) first vertex lines are assumed to be element (resp\@. node) vertices, irrespective of their vertex labels, and the \texttt{vnodnbr} (resp\@. \texttt{velmnbr}) remaining vertex lines are assumed to be node (resp\@. element) vertices; else, natural order is assumed, starting at the underlying graph base index (\texttt{baseval}). This header data is then followed by as many lines as there are node and element vertices in the graph. These lines are similar to the ones of the graph format, except that, in order to save disk space, the numberings of nodes and elements all start from the same base value, that is, $\min(\mbox{\texttt{velm}}\-\mbox{\texttt{bas}}, \mbox{\texttt{vnod}}\-\mbox{\texttt{bas}})$ (also called \texttt{baseval}, like for regular graphs). For example, Figure~\ref{fig-file-smesh} shows the contents of the mesh file modeling three square elements, with unity vertex and edge weights, elements defined before nodes, and numbering of the underlying graph starting from $1$. In memory, the three elements are labeled from $1$ to $3$, and the eight nodes are labeled from $4$ to $11$. In the file, the three elements are still labeled from $1$ to $3$, while the eight nodes are labeled from $1$ to $8$. When labels are used, elements and nodes may have similar labels, but not two elements, nor two nodes, should have the same labels. \begin{figure}[hbt] \begin{center} \includegraphics[scale=0.65]{s_f_msf.eps} \hfil ~\hfil \begin{minipage}[b]{7cm} \verb+1+ \noi \verb+3 8 24+ \noi \verb+1 4 000+ \verb+4 2 +\makebox[0em][l]{\tiny (= 5)}\verb+ 8 +\makebox[0em][l]{\tiny (= 11)}\verb+ 4 +\makebox[0em][l]{\tiny (= 7)}\verb+ 3 +\makebox[0em][l]{\tiny (= 6)} \noi \verb+4 7 +\makebox[0em][l]{\tiny (= 10)}\verb+ 2 +\makebox[0em][l]{\tiny (= 5)}\verb+ 8 +\makebox[0em][l]{\tiny (= 11)}\verb+ 1 +\makebox[0em][l]{\tiny (= 4)} \noi \verb+4 5 +\makebox[0em][l]{\tiny (= 8)}\verb+ 6 +\makebox[0em][l]{\tiny (= 9)}\verb+ 3 +\makebox[0em][l]{\tiny (= 6)}\verb+ 4 +\makebox[0em][l]{\tiny (= 7)} \noi \verb+1 2+ \noi \verb+2 2 1+ \noi \verb+2 1 3+ \noi \verb+2 1 3+ \noi \verb+1 3+ \noi \verb+1 3+ \noi \verb+1 2+ \noi \verb+2 2 1+ %\begin{verbatim} %1 %3 8 24 %1 4 000 %4 5 11 7 6 %4 10 5 11 4 %4 8 9 6 7 %1 2 %2 2 1 %2 1 3 %2 1 3 %1 3 %1 3 %1 2 %2 2 1 %\end{verbatim} \end{minipage} \end{center} \caption{Mesh file representing three square elements, with unity vertex and edge weights. Elements are defined before nodes, and numbering of the underlying graph starts from $1$. The left part of the figure shows the mesh representation in memory, with consecutive element and node indices. The right part of the figure shows the contents of the file, with both element and node numberings starting from $1$, the minimum of the element and node base values. Corresponding node indices in memory are shown in parentheses for the sake of comprehension.} \label{fig-file-smesh} \end{figure} \subsection{Geometry files} \label{sec-file-geom} Geometry files, which usually end in ``\texttt{\@.xyz}'', hold the coordinates of the vertices of their associated graph or mesh. These files are not used in the mapping process itself, since only topological properties are taken into account then (mappings are computed regardless of graph geometry). They are used by visualization programs to compute graphical representations of mapping results. The first string to appear in a geometry file codes for its type, or dimensionality. It is ``\texttt{1}'' if the file contains unidimensional coordinates, ``\texttt{2}'' for bidimensional coordinates, and ``\texttt{3}'' for tridimensional coordinates. It is followed by the number of coordinate data stored in the file, which should be at least equal to the number of vertices of the associated graph or mesh, and by that many coordinate lines. Each coordinate line holds the label of the vertex, plus one, two or three real numbers which are the (X), (X,Y), or (X,Y,Z), coordinates of the graph vertices, according to the graph dimensionality. \\ Vertices can be stored in any order in the file. Moreover, a geometry file can have more coordinate data than there are vertices in the associated graph or mesh file; only coordinates the labels of which match labels of graph or mesh vertices will be taken into account. This feature allows all subgraphs of a given graph or mesh to share the same geometry file, provided that graph vertex labels remain unchanged. For example, Figure~\ref{fig-file-geom} shows the contents of the 3D~geometry file associated with the graph of Figure~\ref{fig-file-sgraph}. \begin{figure}[hbt] \begin{center} \begin{minipage}{4.6cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize \tt \begin{verbatim} 3 8 0 0.0 0.0 0.0 1 0.0 0.0 1.0 2 0.0 1.0 0.0 3 0.0 1.0 1.0 4 1.0 0.0 0.0 5 1.0 0.0 1.0 6 1.0 1.0 0.0 7 1.0 1.0 1.0 \end{verbatim} }\end{minipage} \end{center} \caption{Geometry file associated with the graph file of Figure~\protect\ref{fig-file-sgraph}.} \label{fig-file-geom} \end{figure} \subsection{Target files} \label{sec-file-target} Target files describe the architectures onto which source graphs are mapped. Instead of containing the structure of the target graph itself, as source graph files do, target files define how target graphs are bipartitioned and give the distances between all pairs of vertices (that is, processors). Keeping the bipartitioning information within target files avoids recomputing it every time a target architecture is used. We are allowed to do so because, in our approach, the recursive bipartitioning of the target graph is fully independent with respect to that of the source graph (however, the opposite is false). For space and time saving issues, some classical homogeneous architectures (2D and 3D meshes and tori, hypercubes, complete graphs, etc\@.) have been algorithmically coded within the mapper itself by the means of built-in functions. Instead of containing the whole graph decomposition data, their target files hold only a few values, used as parameters by the built-in functions. \subsubsection{Decomposition-defined architecture files} \label{sec-file-target-deco} Decomposition-defined architecture files are the way to describe irregular target architectures that cannot be represented as algorithmically-coded architectures. Two main file formats coexist~: the ``\texttt{deco 0}'' and ``\texttt{deco 2}'' formats. ``\texttt{deco}'' stands for ``decomposition-defined architecture'', followed by the format number. The ``\texttt{deco 1}'' format is a compiled form of the ``\texttt{deco 0}'' format, which we will not describe here as it is not meant to be handled by users. The ``\texttt{deco 0}'' header is followed by two integer numbers, which are the number of processors and the largest terminal number used in the decomposition, respectively. Two arrays follow. The first array has as many lines as there are processors. Each of these lines holds three numbers: the processor label, the processor weight (that is an estimation of its computational power), and its terminal number. The terminal number associated with every processor is obtained by giving the initial domain holding all the processors number $1$, and by numbering the two subdomains of a given domain of number $i$ with numbers $2i$ and $2i+1$. The second array is a lower triangular diagonal-less matrix that gives the distance between all pairs of processors. This distance matrix, combined with the decomposition tree coded by terminal numbers, allows the evaluation by averaging of the distance between all pairs of domains. In order for the mapper to behave properly, distances between processors must be strictly positive numbers. Therefore, null distances are not accepted. For instance, Figure~\ref{fig-file-targetdeco} shows the contents of the architecture decomposition file for $\UB(2,3)$, the binary de~Bruijn graph of dimension~$3$, as computed by the \texttt{amk\_grf} program. \begin{figure}[hbt] \begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} \begin{center} \parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.7\linewidth]{s_f_d.ps}} \end{center} & \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} deco 0 8 15 0 1 15 1 1 14 2 1 13 3 1 11 4 1 12 5 1 9 6 1 8 7 1 10 1 2 1 2 1 2 1 1 1 2 3 2 1 1 2 2 2 2 1 1 1 3 2 3 1 2 2 1 \end{verbatim} } \end{center} \end{tabular} \caption{Target decomposition file for $\UB(2,3)$. The terminal numbers associated with every processor define a unique recursive bipartitioning of the target graph.} \label{fig-file-targetdeco} \end{figure} The ``\texttt{deco 2}'' format was created so as to represent bigger target architectures. Indeed, the distance matrix of the ``\texttt{deco 0}'' format is quadratic in the number of target vertices, which is not scalable and prevents users from representing target architectures bigger than a few thousand vertices. In the ``\texttt{deco 2}'' architecture, distances are computed using in a multilevel representation of the target graph, in the form of a family of coarser graphs. Hence, the more distant the vertices are, the coarsest is the graph to be used to estimate this distance~\cite{pellegrini:hal-01671156}. The vertices and edges of these graphs encode their respective cost of traversal, which becomes less accurate as coarser graphs are used. \subsubsection{Algorithmically-coded architecture files} \label{sec-file-target-algo} Almost all algorithmically-coded architectures are defined with unity edge and vertex weights. They start with an abbreviation name of the architecture, followed by parameters specific to the architecture. The available built-in architecture definitions are listed below. \begin{itemize} \iteme[{\texttt{cmplt} {\it size}}] Defines a complete graph with $\mathit{size}$ vertices. Its vertex labels are numbers between $0$ and $\mathit{size} - 1$. %% \iteme[{\texttt{cmpltw} {\it size} {\it load$_0$} {\it load$_1$} \ldots\ {\it load$_{\mathit{size} - 1}$}}] Defines a weighted complete graph with {\it size\/} vertices. Its vertex labels are numbers between $0$ and $\mathit{size} - 1$, and vertices are assigned integer weights in the order in which these are provided. %% \iteme[{\texttt{hcub} $\mathit{dim}$}] Defines a binary hypercube of dimension $\mathit{dim}$. Graph vertices are numbered according to the value of the binary representation of their coordinates in the hypercube. %% \iteme[{\texttt{ltleaf} \parbox[t]{11cm}{$\mathit{levlnbr}$ $\mathit{sizeval}_0$ $\mathit{linkval}_0$ \ldots\ $\mathit{sizeval}_{\mathit{levlnbr}-1}$ $\mathit{linkval}_{\mathit{levlnbr}-1}$ \\ $\mathit{permnbr}$ $\mathit{permval}_0$ \ldots\ $\mathit{permval}_{\mathit{permnbr}-1}$}}] \label{sec-file-target-ltleaf} The \texttt{ltleaf} (for ``\textit{labeled tree-leaf}'') architecture is an extended tree-leaf architecture (\texttt{tleaf}, see below) which models target topologies where cores are not labeled in increasing order. \\ The tree structure of the architecture is described just like for a regular \texttt{tleaf} architecture. $\mathit{permnbr}$ is the length of the permutation that is used to label cores, followed by this number of permutation indices, ranging between $0$ and $(\mathit{permnbr}-1)$. Figure~\ref{fig-file-targetltleaf} presents an example of such an architecture. \\ The permutation array must be of a size that matches level boundaries. Alternatively, a permutation of size $1$, with only index $0$ given, represents the identity permutation. In this case, the regular \texttt{tleaf} architecture can be used. \begin{figure}[hbt] \begin{center} \begin{minipage}[b]{6cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} ltleaf 3 32 10 2 5 4 1 8 0 2 4 6 1 3 5 7 \end{verbatim} }\end{minipage} \end{center} \caption{Labeled tree-leaf architecture with $3$ levels, representing a system with $32$ nodes of $2$ quad-core processors. Inter-node communication costs $10$, inter-processor communication within the same node costs $5$ and inter-core communication within the same processor costs $1$. Within a $8$-core node, cores are labeled such that cores $0$, $2$, $4$ and $6$ are located on the first processor, while cores $1$, $3$, $5$ and $7$ are located on the second processor.} \label{fig-file-targetltleaf} \end{figure} %% \iteme[{\texttt{mesh2D} {\it dim$_X$} {\it dim$_Y$}}] Defines a bidimensional array of {\it dim$_X$} columns by {\it dim$_Y$} rows. The vertex with coordinates $(\mathit{pos_X},\mathit{pos_Y})$ has label $\mathit{pos_X} + \mathit{pos_Y} \times \mathit{dim_X}$. %% \iteme[{\texttt{mesh3D} {\it dim$_X$} {\it dim$_Y$} {\it dim$_Z$}}] Defines a tridimensional array of {\it dim$_X$} columns by {\it dim$_Y$} rows by {\it dim$_Z$} levels. The vertex with coordinates ($\mathit{pos_X},\mathit{pos_Y},\mathit{pos_Z}$) has label $\mathit{pos_X} + \mathit{pos_Y} \mathit{dim_X} + \mathit{pos_Z} \mathit{dim_X} \mathit{dim_Y}$. %% \iteme[{\texttt{meshXD} {\it ndims} {\it dim$_0$} {\it dim$_1$} \ldots {\it dim$_{(ndims - 1)}$}}] Generalization of the \texttt{mesh2D} and \texttt{mesh3D} architectures. Defines a \textit{ndims}-dimensional array of dimensions \textit{dim$_0$}, \textit{dim$_1$} \ldots \textit{dim$_{ndims - 1}$}. The vertex with coordinates ($\mathit{pos_0},\mathit{pos_1},\ldots,\mathit{pos_{ndims - 1}}$) has label $\mathit{pos_0} + \sum_{d=1}^{ndims - 1}\left(\mathit{pos_d} \prod_{d'=0}^{d-1}\mathit{dim_{d'}}\right)$. %% \iteme[{\texttt{sub} $\mathit{termnbr}$ $\mathit{termnum}_0$ $\mathit{termnum}_1$ \ldots\ $\mathit{termnum}_{\mathit{termnbr}-1}$ $\mathit{architecture}$}] Defines a sub-architecture of another \textit{architecture}. The sub-architecture contains $\mathit{termnbr}$ vertices, which have ranks $\mathit{termnum}_0$, $\mathit{termnum}_1$, \ldots\ $\mathit{termnum}_{\mathit{termnbr}-1}$ in the prescribed, original $\mathit{architecture}$. The original architecture must comprise at least $\mathit{termnbr}$ vertices, and thus cannot be a variable-sized architecture. The order in which vertex numbers are provided defines the part indices that will be used as output mapping data. For instance, in the example shown in Figure~\ref{fig-file-targetsub}, source vertices that are assigned to vertex $3$ of the sub-architecture are in fact assigned to vertex $5$ of the original, 2D mesh architecture, according to its canonical numbering. \begin{figure}[hbt] \begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} \begin{center} \parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.7\linewidth]{m42_a1}} \end{center} & \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} sub 5 0 4 1 5 7 mesh2D 4 2 \end{verbatim} } \end{center} \end{tabular} \caption{Sub-architecture of a 4x2 \texttt{mesh2D} 2D grid architecture. The sub-architecture comprises $5$ vertices, numbered from $0$ to $4$, which correspond to vertices $0$, $4$, $1$, $5$ and $7$ of the original architecture, respectively.} \label{fig-file-targetsub} \end{figure} %% \iteme[{\texttt{tleaf} $\mathit{levlnbr}$ $\mathit{sizeval}_0$ $\mathit{linkval}_0$ \ldots\ $\mathit{sizeval}_{\mathit{levlnbr}-1}$ $\mathit{linkval}_{\mathit{levlnbr}-1}$}] Defines a hierarchical, tree-shaped, architecture with $\mathit{levlnbr}$ levels and $\sum_{i=0}^{\mathit{levlnbr}-1}\mathit{sizeval}_i$ leaf vertices. This topology is used to model hierarchical NUMA or NUIOA machines. The mapping is only computed with respect to the leaf vertices, which represent processing elements, while the upper levels of the tree model interconnection networks (intra-chip buses, inter-chip interconnection networks, network routers, etc.), as exemplified in Figure~\ref{fig-graf-treeleaf}. The communication cost between two nodes is the cost of the highest common ancestor level. \begin{figure}[hbt] \begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} \begin{center} \parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.95\linewidth]{s_f_lea.eps}} \end{center} & \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} tleaf 3 3 20 2 7 2 2 \end{verbatim} } \end{center} \end{tabular} \caption{A ``tree-leaf'' graph with three levels. Processors are drawn in black and routers in grey. It has $3$ levels, the first level has $3$ sons and a traversal cost of $20$, the second level has $2$ sons and a traversal cost of $7$, and the third level has also $2$ sons and a traversal cost of $2$.} \label{fig-graf-treeleaf} \end{figure} %% \iteme[{\texttt{torus2D} {\it dim$_X$} {\it dim$_Y$}}] Defines a bidimensional array of {\it dim$_X$} columns by {\it dim$_Y$} rows, with wraparound edges. The vertex with coordinates $(\mathit{pos_X},\mathit{pos_Y})$ has label $\mathit{pos_X} + \mathit{pos_Y} \times \mathit{dim_X}$. %% \iteme[{\texttt{torus3D} {\it dim$_X$} {\it dim$_Y$} {\it dim$_Z$}}] Defines a tridimensional array of {\it dim$_X$} columns by {\it dim$_Y$} rows by {\it dim$_Z$} levels, with wraparound edges. The vertex with coordinates $(\mathit{pos_X},\mathit{pos_Y},\mathit{pos_Z})$ has label $\mathit{pos_X} + \mathit{pos_Y} \mathit{dim_X} + \mathit{pos_Z} \mathit{dim_X} \mathit{dim_Y}$. %% \iteme[{\texttt{torusXD} {\it ndims} {\it dim$_0$} {\it dim$_1$} \ldots {\it dim$_{ndims - 1}$}}] Generalization of the \texttt{torus2D} and \texttt{torus3D} architectures. Defines a \textit{ndims}-dimensional torus of dimensions \textit{dim$_0$}, \textit{dim$_1$} \ldots \textit{dim$_{ndims - 1}$}. The vertex with coordinates ($\mathit{pos_0},\mathit{pos_1},\ldots,\mathit{pos_{(ndims - 1)}}$) has label $\mathit{pos_0} + \sum_{d=1}^{ndims - 1}\left(\mathit{pos_d} \prod_{d'=0}^{d-1}\mathit{dim_{d'}}\right)$. \end{itemize} \subsubsection{Variable-sized architecture files} \label{sec-file-target-variable} \index{Clustering} Variable-sized architectures are a class of algorithmically-coded architectures the size of which is not defined {\it a priori}. Domains of these target architectures can always be bipartitioned, again and again (until integer overflow occurs in domain indices). These architectures are used to perform graph clustering (see Sections~\ref{sec-prog-gmap} and~\ref{sec-lib-func-graphmap}), using a specifically tailored graph mapping strategy (see for instance Section~\ref{sec-lib-func-stratgraphclusterbuild}). As for fixed-size algorithmically-coded architectures, they start with an abbreviation name of the architecture, followed by parameters specific to the architecture. The available built-in variable-sized architecture definitions are listed below. \begin{itemize} \iteme[{\texttt{varcmplt}}] Defines a variable-sized complete graph. Domains are labeled such that the first domain is labeled $1$, and the two subdomains of any domain $i$ are labeled $2i$ and $2i + 1$. The distance between any two subdomains $i$ and $j$ is $0$ if $i=j$ and $1$ else. \iteme[{\texttt{varhcub}}] Defines a variable-sized hypercube. Domains are labeled such that the first domain is labeled $1$, and the two subdomains of any domain $i$ are labeled $2i$ and $2i + 1$. The distance between any two domains is the Hamming distance between the common bits of the two domains, plus half of the absolute difference between the levels of the two domains, this latter term modeling the average distance on unknown bits. For instance, the distance between subdomain $9=1001_B$, of level $3$ (since its leftmost $1$ has been shifted left thrice), and subdomain $53=110101_B$, of level $5$ (since its leftmost $1$ has been shifted left five times), is equal to $2$: it is $1$, which is the number of bits which differ between $1101_B$ (that is, $53=110101_B$ shifted rightwards twice) and $1001_B$, plus $1$, which is half of the absolute difference between $5$ and $3$. \end{itemize} \subsection{Mapping files} \label{sec-file-map} Mapping files, which usually end in ``\texttt{\@.map}'', contain the result of the mapping of source graphs onto target architectures. They associate a vertex of the target graph with every vertex of the source graph. Mapping files begin with the number of mapping lines which they contain, followed by that many mapping lines. Each mapping line holds a mapping pair, made of two integer numbers which are the label of a source graph vertex and the label of the target graph vertex onto which it is mapped. Mapping pairs can be stored in any order in the file; however, labels of source graph vertices must be all different. For example, Figure~\ref{fig-file-mapping} shows the result obtained when mapping the source graph of Figure~\ref{fig-file-sgraph} onto the target architecture of Figure~\ref{fig-file-targetdeco}. This one-to-one embedding of $\HY(3)$ into $\UB(2,3)$ has dilation~$1$, except for one hypercube edge which has dilation~$3$. \begin{figure}[hbt] \begin{center} \begin{minipage}{3cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} 8 0 1 1 3 2 2 3 5 4 0 5 7 6 4 7 6 \end{verbatim} }\end{minipage} \end{center} \caption{Mapping file obtained when mapping the hypercube source graph of Figure~\protect\ref{fig-file-sgraph} onto the binary de~Bruijn architecture of Figure~\protect\ref{fig-file-targetdeco}.} \label{fig-file-mapping} \end{figure} Mapping files are also used on output of the block orderer to represent the allocation of the vertices of the original graph to the column blocks associated with the ordering. In this case, column blocks are labeled in ascending order, such that the number of a block is always greater than the ones of its predecessors in the elimination process, that is, its leaves in the elimination tree. \subsection{Ordering files} \label{sec-file-ord} Ordering files, which usually end in ``\texttt{\@.ord}'', contain the result of the ordering of source graphs or meshes that represent sparse matrices. They associate a number with every vertex of the source graph or mesh. The structure of ordering files is analogous to the one of mapping files; they differ only by the meaning of their data. Ordering files begin with the number of ordering lines which they contain, that is the number of vertices in the source graph or the number of nodes in the source mesh, followed by that many ordering lines. Each ordering line holds an ordering pair, made of two integer numbers which are the label of a source graph or mesh vertex and its rank in the ordering. Ranks range from the base value of the graph or mesh (\texttt{baseval}) to the base value plus the number of vertices (resp\@. nodes), minus one ($\mbox{\texttt{baseval}} + \mbox{\texttt{vertnbr}} - 1$ for graphs, and $\mbox{\texttt{baseval}} + \mbox{\texttt{vnodnbr}} - 1$ for meshes). Ordering pairs can be stored in any order in the file; however, indices of source vertices must be all different. For example, Figure~\ref{fig-file-ordering} shows the result obtained when reordering the source graph of Figure~\ref{fig-file-sgraph}. \begin{figure}[hbt] \begin{center} \begin{minipage}{3cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} 8 0 6 1 3 2 2 3 7 4 1 5 5 6 4 7 0 \end{verbatim} }\end{minipage} \end{center} \caption{Ordering file obtained when reordering the hypercube graph of Figure~\protect\ref{fig-file-sgraph}.} \label{fig-file-ordering} \end{figure} The advantage of having both graph and mesh orderings start from \texttt{baseval} (and not \texttt{vnodbas} in the case of meshes) is that an ordering computed on the nodal graph of some mesh has the same structure as an ordering computed from the native mesh structure, allowing for greater modularity. However, in memory, permutation indices for meshes are numbered from \texttt{vnodbas} to $\mbox{\texttt{vnodbas}} + \mbox{\texttt{vnodnbr}} - 1$. \subsection{Vertex list files} Vertex lists are used by programs that select vertices from graphs. Vertex lists are coded as lists of integer numbers. The first integer is the number of vertices in the list and the other integers are the labels of the selected vertices, given in any order. For example, Figure~\ref{fig-file-vertex} shows the list made from three vertices of labels $2$, $45$, and $7$. \begin{figure}[hbt] \begin{center} \begin{minipage}{3cm} {\renewcommand{\baselinestretch}{1.05} \footnotesize \tt \begin{verbatim} 3 2 45 7 \end{verbatim}} \end{minipage} \end{center} \caption{Example of vertex list with three vertices of labels~$2$, $45$, and~$7$.} \label{fig-file-vertex} \end{figure} scotch_6.0.9/doc/src/scotch/fullpage.sty0000644000302600021200000000151613303015264020434 0ustar pelegrinpelegrin% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. % Document Style Option to fill the paper just like Plain TeX. \typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} \topmargin 0pt \advance \topmargin by -\headheight \advance \topmargin by -\headsep \textheight 8.9in \oddsidemargin 0pt \evensidemargin \oddsidemargin \marginparwidth 0.5in \textwidth 6.5in % For users of A4 paper: The above values are suited for american 8.5x11in % paper. If your output driver performs a conversion for A4 paper, keep % those values. If your output driver conforms to the TeX standard (1in/1in), % then you should add the following commands to center the text on A4 paper: % \advance\hoffset by -3mm % A4 is narrower. % \advance\voffset by 8mm % A4 is taller. \endinput scotch_6.0.9/doc/src/scotch/s_e.tex0000644000302600021200000001252013303015264017361 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_e.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Exemples d'utilisation % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Examples} \label{sec-examples} This section contains chosen examples destined to show how the programs of the \scotch\ project interoperate and can be combined. It is supposed that the current directory is directory ``{\tt scotch\_\scotchver}'' of the \scotch\ distribution. Character ``{\tt\bf \%}'' represents the shell prompt. \begin{itemize} \item Partition source graph {\tt brol.grf} into $7$ parts, and save the result to file {\tt /tmp/brol.map}. \\ \noi {\tt {\bf\%} echo cmplt 7 > /tmp/k7.tgt\\ {\bf\%} gmap brol.grf /tmp/k7.tgt /tmp/brol.map } \spa \noi This can also be done in a single piped command: {\tt {\bf\%} echo cmplt 7 | gmap brol.grf - /tmp/brol.map} \spa \noi If compressed data handling is enabled, read the graph as a {\tt gzip} compressed file, and output the mapping as a {\tt bzip2} file, on the fly: {\tt {\bf\%} echo cmplt 7 | gmap brol.grf.gz - /tmp/brol.map.bz2} \item Partition source graph {\tt brol.grf} into two uneven parts of respective weights $\frac{4}{11}$ and $\frac{7}{11}$, and save the result to file {\tt /tmp/brol.map}. \\ \noi {\tt {\bf\%} echo cmpltw 2 4 7 > /tmp/k2w.tgt\\ {\bf\%} gmap brol.grf /tmp/k2w.tgt /tmp/brol.map } \spa \noi This can also be done in a single piped command: {\tt {\bf\%} echo cmpltw 2 4 7 | gmap brol.grf - /tmp/brol.map} \spa \noi If compressed data handling is enabled, use {\tt gzip} compressed streams on the fly: {\tt {\bf\%} echo cmpltw 2 4 7 | gmap brol.grf.gz - /tmp/brol.map.gz} \item Map a 32 by 32 bidimensional grid source graph onto a 256-node hypercube, and save the result to file {\tt /tmp/brol.map}. \\ \noi {\tt {\bf\%} gmk\_m2 32 32 | gmap - tgt/h8.tgt /tmp/brol.map} \item Build the {\sc Open Inventor} file {\tt graph.iv} that contains the display of a source graph the source and geometry files of which are named {\tt graph.grf} and {\tt graph.xyz}. \\ \noi {\tt {\bf\%} gout -Mn -Oi graph.grf graph.xyz - graph.iv} \spa \noi Although no mapping data is required because of the ``{\tt -Mn}'' option, note the presence of the dummy input mapping file name ``{\tt -}'', which is needed to specify the output visualization file name. \item Given the source and geometry files {\tt graph.grf} and {\tt graph.xyz} of a source graph, map the graph on a 8 by 8 bidimensional mesh and display the mapping result on a color screen by means of the public-domain {\tt ghostview} PostScript previewer. \\ \noi {\tt {\bf\%} gmap graph.grf tgt/m8x8.tgt | gout graph.grf graph.xyz '-Op\{c,f,l\}' | ghostview -} \item Build a 24-node Cube-Connected-Cycles graph target architecture which will be frequently used. Then, map compressed source file {\tt graph.grf.gz} onto it, and save the result to file {\tt /tmp/brol.map}. \\ \noi {\tt {\bf\%} amk\_ccc 3 | acpl - /tmp/ccc3.tgt\\ {\bf\%} gunzip -c graph.grf.gz | gmap - /tmp/ccc3.tgt /tmp/brol.map } \spa \noi To speed up target architecture loading in the future, the decomposition-defined target architecture is compiled by means of {\tt acpl}. \item Build an architecture graph which is the subgraph of the $8$-node de~Bruijn graph restricted to vertices labeled $1$, $2$, $4$, $5$, $6$, map graph {\tt graph.grf} onto it, and save the result to file {\tt /tmp/brol.map}. \\ \noi {\tt {\bf\%} (gmk\_ub2 3; echo 5 1 2 4 5 6) | amk\_grf -L | gmap graph.grf - /tmp/brol.map} \spa \noi Note how the two input streams of program {\tt amk\_grf} (that is, the de~Bruijn source graph and the five-elements vertex label list) are concatenated into a single stream to be read from the standard input. %% \item %% Output the pattern of the adjacency matrix associated with graph %% {\tt graph.grf.gz} to the encapsulated PostScript file {\tt graph.pattern.ps}. %% \\ %% \noi %% {\tt %% {\bf\%} gunzip -c graph.grf.gz | gout - - - -Gn -Mn '-Om\{e\}' graph.pattern.ps} %% \item %% Output the pattern of the factored reordered matrix associated with graph %% {\tt graph.grf} to the encapsulated PostScript file {\tt graph\_\lbt pattern.ps}. %% \\ %% \noi %% {\tt %% {\bf\%} gord graph.grf -F- /dev/null | gout graph.grf - - -Gn -Mn '-Om\{e\}' graph\_\lbt pattern.ps} \item Compile and link the user application {\tt brol.c} with the \libscotch\ library, using the default error handler. \\ \noi {\tt {\bf\%} cc brol.c -o brol -lscotch -lscotcherr -lm} \spa \noi Note that the mathematical library should also be included, after all of the \scotch\ libraries. \item Recompile a program that used \metis\ so that it uses \scotch\ instead. \\ \noi {\tt {\bf\%} cc brol.c -o brol -I\$\{metisdir\} -lscotchmetis -lscotch -lscotcherr -lmetis -lm} \spa \noi Note that the ``{\tt -lscotch\lbt metis}'' option must be placed before the ``{\tt -lmetis}'' one, so that routines that are redefined by \scotch\ are selected instead of their \metis\ counterpart. When no other \metis\ routines than the ones redefined by \scotch\ are used, the ``{\tt -lmetis}'' option can be omitted. The ``{\tt -I\$\{metisdir\}}'' option may be necessary to provide the path to the original {\tt metis.h} include file, which contains the prototypes of all of the \metis\ routines. \end{itemize} scotch_6.0.9/doc/src/scotch/s_f_out2.src0000644000302600021200000000040013303015264020314 0ustar pelegrinpelegrin14 36 0 1 2 1 1 1 4 1 1 2 1 0 1 5 3 1 1 1 7 4 1 3 1 0 1 5 1 8 5 1 3 1 1 1 4 1 9 7 1 2 1 3 1 11 8 1 3 1 4 1 9 1 12 9 1 4 1 5 1 8 1 10 1 13 10 1 3 1 9 1 11 1 14 11 1 3 1 7 1 10 1 15 12 1 2 1 8 1 13 13 1 3 1 9 1 12 1 14 14 1 3 1 10 1 13 1 15 15 1 2 1 11 1 14 scotch_6.0.9/doc/src/scotch/Makefile0000644000302600021200000000513213531025771017541 0ustar pelegrinpelegrin## Copyright 2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## VERSION = 6.0 UMAN = scotch_user$(VERSION) MMAN = scotch_maint$(VERSION) FLAGS = -sPAPERSIZE=a4 DEPS = $(wildcard *.tex) $(wildcard *.eps) MANS = $(MMAN).ps.gz $(MMAN).pdf $(UMAN).ps.gz $(UMAN).pdf CP = cp -f RM = rm -f .PHONY : clean default install realclean default : $(MANS) %.eps : %.fig fig2dev -L eps $(<) $(@) %.dvi : %.tex $(DEPS) latex $(<) -bibtex $(*) latex $(<) latex $(<) %.ps : %.dvi dvips $(FLAGS) $(<) $(MMAN).pdf : m.dvi dvipdf $(FLAGS) $(<) $(@) $(MMAN).ps.gz : m.ps gzip -9 -c < $(<) > $(@) $(UMAN).pdf : s.dvi dvipdf $(FLAGS) $(<) $(@) $(UMAN).ps.gz : s.ps gzip -9 -c < $(<) > $(@) install : $(MANS) -$(CP) $(MMAN).ps.gz ../../ -$(CP) $(MMAN).pdf ../../ -$(CP) $(UMAN).ps.gz ../../ -$(CP) $(UMAN).pdf ../../ clean : -$(RM) *~ [ms].aux [ms].blg [ms].log [ms].toc realclean : clean -$(RM) *~ [ms].bbl *dvi [ms].ps $(MMAN)* $(UMAN)* scotch_6.0.9/doc/src/scotch/s_f_gr1.eps0000644000302600021200000005022413322403377020134 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Tue Nov 4 10:38:33 2003 %%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 523 362 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 362 moveto 0 0 lineto 523 0 lineto 523 362 lineto closepath clip newpath -36.0 396.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 20 % Polyline 7.500 slw n 7125 3150 m 8625 3150 l 7725 1950 l 8925 1950 l 8625 1050 l gs col0 s gr % Polyline n 6525 1950 m 7425 750 l 7725 1950 l 6525 1950 l 7125 3150 l 7725 1950 l 8625 1050 l 7425 750 l gs col0 s gr % Polyline n 8925 1950 m 8625 3150 l gs col0 s gr /Courier ff 240.00 scf sf 600 825 m gs 1 -1 sc (baseval) col0 sh gr % Polyline [15 45] 45 sd n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 2400 m 1800 2700 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 2400 m 2100 2700 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 5550 m 9300 5550 l 9300 5850 l 9000 5850 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9300 5550 m 9000 5850 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 5550 m 9300 5850 l gs col0 s gr [] 0 sd % Polyline gs clippath 9120 5565 m 9180 5565 l 9180 5414 l 9150 5534 l 9120 5414 l cp eoclip n 4050 4500 m 4050 4800 l 9150 4800 l 9150 5550 l gs col0 s gr gr % arrowhead n 9120 5414 m 9150 5534 l 9180 5414 l 9120 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8220 5565 m 8280 5565 l 8280 5414 l 8250 5534 l 8220 5414 l cp eoclip n 3750 4500 m 3750 4875 l 8250 4875 l 8250 5550 l gs col0 s gr gr % arrowhead n 8220 5414 m 8250 5534 l 8280 5414 l 8220 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7320 5565 m 7380 5565 l 7380 5414 l 7350 5534 l 7320 5414 l cp eoclip n 3450 4500 m 3450 4950 l 7350 4950 l 7350 5550 l gs col0 s gr gr % arrowhead n 7320 5414 m 7350 5534 l 7380 5414 l 7320 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6420 5565 m 6480 5565 l 6480 5414 l 6450 5534 l 6420 5414 l cp eoclip n 3150 4500 m 3150 5025 l 6450 5025 l 6450 5550 l gs col0 s gr gr % arrowhead n 6420 5414 m 6450 5534 l 6480 5414 l 6420 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5520 5565 m 5580 5565 l 5580 5414 l 5550 5534 l 5520 5414 l cp eoclip n 2850 4500 m 2850 5100 l 5550 5100 l 5550 5550 l gs col0 s gr gr % arrowhead n 5520 5414 m 5550 5534 l 5580 5414 l 5520 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4620 5565 m 4680 5565 l 4680 5414 l 4650 5534 l 4620 5414 l cp eoclip n 2550 4500 m 2550 5175 l 4650 5175 l 4650 5550 l gs col0 s gr gr % arrowhead n 4620 5414 m 4650 5534 l 4680 5414 l 4620 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2820 5565 m 2880 5565 l 2880 5414 l 2850 5534 l 2820 5414 l cp eoclip n 2250 4500 m 2250 5250 l 2850 5250 l 2850 5550 l gs col0 s gr gr % arrowhead n 2820 5414 m 2850 5534 l 2880 5414 l 2820 5414 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 600 1425 m gs 1 -1 sc (vertnbr) col0 sh gr /Courier ff 240.00 scf sf 600 2025 m gs 1 -1 sc (edgenbr) col0 sh gr /Courier ff 240.00 scf sf 600 2625 m gs 1 -1 sc (vlbltab) col0 sh gr /Courier ff 240.00 scf sf 600 4425 m gs 1 -1 sc (verttab) col0 sh gr /Courier ff 240.00 scf sf 600 5775 m gs 1 -1 sc (edgetab) col0 sh gr /Courier ff 240.00 scf sf 600 6525 m gs 1 -1 sc (edlotab) col0 sh gr /Courier ff 240.00 scf sf 600 3225 m gs 1 -1 sc (velotab) col0 sh gr /Courier ff 240.00 scf sf 600 3825 m gs 1 -1 sc (vendtab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 2040 m gs 1 -1 sc (24) col0 sh gr % Polyline n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 4200 m 2400 4200 l 2400 4500 l 2100 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2200 4440 m gs 1 -1 sc (4) col0 sh gr % Polyline n 2400 4200 m 2700 4200 l 2700 4500 l 2400 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 4440 m gs 1 -1 sc (10) col0 sh gr % Polyline n 2700 4200 m 3000 4200 l 3000 4500 l 2700 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 4440 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3000 4200 m 3300 4200 l 3300 4500 l 3000 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 4440 m gs 1 -1 sc (16) col0 sh gr % Polyline n 3300 4200 m 3600 4200 l 3600 4500 l 3300 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 4440 m gs 1 -1 sc (19) col0 sh gr % Polyline n 3600 4200 m 3900 4200 l 3900 4500 l 3600 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 4440 m gs 1 -1 sc (22) col0 sh gr % Polyline n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 4200 m 4200 4200 l 4200 4500 l 3900 4500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3925 4440 m gs 1 -1 sc (25) col0 sh gr % Polyline n 2100 5550 m 2400 5550 l 2400 5850 l 2100 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 5550 m 2700 5550 l 2700 5850 l 2400 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 5550 m 3000 5550 l 3000 5850 l 2700 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 5550 m 3300 5550 l 3300 5850 l 3000 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 5550 m 3600 5550 l 3600 5850 l 3300 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 5550 m 3900 5550 l 3900 5850 l 3600 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 5550 m 4200 5550 l 4200 5850 l 3900 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 5550 m 4500 5550 l 4500 5850 l 4200 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 5550 m 4800 5550 l 4800 5850 l 4500 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 5550 m 5100 5550 l 5100 5850 l 4800 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 5550 m 5400 5550 l 5400 5850 l 5100 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 5550 m 5700 5550 l 5700 5850 l 5400 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 5550 m 6000 5550 l 6000 5850 l 5700 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 5550 m 6300 5550 l 6300 5850 l 6000 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 5550 m 6600 5550 l 6600 5850 l 6300 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 5550 m 6900 5550 l 6900 5850 l 6600 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 5550 m 7200 5550 l 7200 5850 l 6900 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 5550 m 7500 5550 l 7500 5850 l 7200 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 5550 m 7800 5550 l 7800 5850 l 7500 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 5550 m 8100 5550 l 8100 5850 l 7800 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 5550 m 8400 5550 l 8400 5850 l 8100 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 5550 m 8700 5550 l 8700 5850 l 8400 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 5550 m 9000 5550 l 9000 5850 l 8700 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 5550 m 2100 5550 l 2100 5850 l 1800 5850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 6300 m 2100 6300 l 2100 6600 l 1800 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 6300 m 2400 6300 l 2400 6600 l 2100 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 6300 m 2700 6300 l 2700 6600 l 2400 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 6300 m 3600 6300 l 3600 6600 l 3300 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 6300 m 3000 6300 l 3000 6600 l 2700 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 6300 m 3300 6300 l 3300 6600 l 3000 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 6300 m 3900 6300 l 3900 6600 l 3600 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 6300 m 4200 6300 l 4200 6600 l 3900 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 6300 m 4500 6300 l 4500 6600 l 4200 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 6300 m 4800 6300 l 4800 6600 l 4500 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 6300 m 5100 6300 l 5100 6600 l 4800 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 6300 m 5400 6300 l 5400 6600 l 5100 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 6300 m 6000 6300 l 6000 6600 l 5700 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 6300 m 5700 6300 l 5700 6600 l 5400 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 6300 m 6300 6300 l 6300 6600 l 6000 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 6300 m 6600 6300 l 6600 6600 l 6300 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 6300 m 6900 6300 l 6900 6600 l 6600 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 6300 m 7200 6300 l 7200 6600 l 6900 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 6300 m 7500 6300 l 7500 6600 l 7200 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 6300 m 7800 6300 l 7800 6600 l 7500 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 6300 m 8100 6300 l 8100 6600 l 7800 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 6300 m 8400 6300 l 8400 6600 l 8100 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 6300 m 8700 6300 l 8700 6600 l 8400 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 6300 m 9000 6300 l 9000 6600 l 8700 6600 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 3000 m 2400 3000 l 2400 3300 l 2100 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 3000 m 3600 3000 l 3600 3300 l 3300 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 3000 m 3900 3000 l 3900 3300 l 3600 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 1920 5565 m 1980 5565 l 1980 5414 l 1950 5534 l 1920 5414 l cp eoclip n 1950 4500 m 1950 5550 l gs col0 s gr gr % arrowhead n 1920 5414 m 1950 5534 l 1980 5414 l 1920 5414 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2070 4215 m 2130 4215 l 2130 4064 l 2100 4184 l 2070 4064 l cp eoclip n 1800 3750 m 2100 3750 l 2100 4200 l gs col0 s gr gr % arrowhead n 2070 4064 m 2100 4184 l 2130 4064 l 2070 4064 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 6525 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7725 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7425 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8625 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8625 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7125 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8925 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr /Times-Bold ff 240.00 scf sf 6150 2025 m gs 1 -1 sc (4) col0 sh gr /Times-Bold ff 240.00 scf sf 8625 825 m gs 1 -1 sc (4) col0 sh gr /Times-Bold ff 240.00 scf sf 9150 1875 m gs 1 -1 sc (4) col0 sh gr /Times-Bold ff 240.00 scf sf 8850 3300 m gs 1 -1 sc (4) col0 sh gr /Times-Bold ff 240.00 scf sf 7275 3450 m gs 1 -1 sc (4) col0 sh gr /Times-Bold ff 240.00 scf sf 7425 2175 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7950 825 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7650 1425 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8250 1650 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8850 1575 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 8850 2625 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 8175 2475 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7875 3075 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7500 2775 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6900 2550 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7125 1875 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6750 1425 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 8400 2175 m gs 1 -1 sc (2) col0 sh gr /Times-Bold ff 240.00 scf sf 7050 825 m gs 1 -1 sc (4) col0 sh gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 6475 2040 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7675 2040 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7375 840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8575 1140 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 8575 3240 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7075 3240 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 1440 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 4440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 5790 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 5790 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 5790 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 5790 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 5790 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 5790 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 5790 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 5790 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 5790 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 5790 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 5790 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 5790 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 5790 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 5790 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 5790 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 5790 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 5790 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 5790 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 5790 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 6540 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 6540 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 6540 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 3240 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 3240 m gs 1 -1 sc (4) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 8875 2040 m gs 1 -1 sc (7) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/m_m.tex0000644000302600021200000002044213466077161017403 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Title : m_m.tex % % Subject : Maintenance manual of % % Scotch % % How to add a method % % Author : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Adding a method to the \libscotch\ library} \label{sec-method} The \libscotch\ has been carefully designed so as to allow external contributors to add their new partitioning or ordering methods, and to use \scotch\ as a testbed for them. \subsection{What to add} There are currently six types of methods which can be added: \begin{itemize} \item k-way graph mapping methods, in module {\tt kgraph}, \item graph bipartitioning methods by means of edge separators, in module {\tt bgraph}, used by the mapping method by dual recursive bipartitioning, implemented in {\tt kgraph\_\lbt map\_\lbt rb.[ch]}, \item graph ordering methods, in module {\tt hgraph}, \item graph separation methods by means of vertex separators, in module {\tt vgraph}, used by the nested dissection ordering method implemented in {\tt hgraph\_\lbt order\_\lbt nd.[ch]}, \item mesh ordering methods, in module {\tt hmesh}, \item mesh separation methods with vertex separators, in module {\tt vmesh}, used by the nested dissection ordering method implemented in {\tt hmesh\_\lbt order\_\lbt nd.[ch]}. \end{itemize} Every method of these six types operates on instances of augmented graph structures that contain, in addition to the graph topology, data related to the current state of the partition or of the ordering. For instance, all of the graph bipartitioning methods operate on an instance of a {\tt Bgraph}, defined in {\tt bgraph.h}, and which contains fields such as {\tt compload0}, the current load sum of the vertices assigned to the first part, {\tt commload}, the load sum of the cut edges, etc. In order to understand better the meaning of each of the fields used by some augmented graph or mesh structure, contributors can read the code of the consistency checking routines, located in files ending in {\tt \_check.c}\enspace, such as {\tt bgraph\_check.c} for a {\tt Bgraph} structure. These routines are regularly called during the execution of the debug version of \scotch\ to ease bug tracking. They are time-consuming but proved very helpful in the development and testing of new methods. \subsection{Where to add} Let us assume that you want to code a new graph separation routine. Your routine will operate on a {\tt Vgraph} structure, and thus will be stored in files called {\tt vgraph\_\lbt separate\_ xy\lbt .[ch]}, where {\tt xy} is a two-letter reminder of the name of your algorithm. Look into the \libscotch\ source directory for already used codenames, and pick a free one. In case you have more that one single source file, use extended names, such as {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt subname\lbt .[ch]}\enspace . In order to ease your coding, copy the files of a simple and already existing method and use them as a pattern for the interface of your new method. Some methods have an optional parameter data structure, others do not. Browse through all existing methods to find the one that looks closest to what you want. Some methods can be passed parameters at run time from the strategy string parser. These parameters can be of fixed types only. These types are: \begin{itemize} \item an integer ({\tt int}) type, \item an floating-point ({\tt double}) type, \item an enumerated ({\tt char}) type : this type is used to make a choice among a list of single character values, such as ``{\tt yn}''. It is more readable than giving integer numerical values to method option flags, \item a strategy (\scotch\ {\tt Strat} type) : a method can be passed a sub-strategy of a given type, which can be run on an augmented graph of the proper type. For instance, the nested dissection method in {\tt hgraph\_\lbt order\_\lbt nd\lbt .c} uses a graph separation strategy to compute its vertex separators. \end{itemize} \subsection{Declaring the new method to the parser} Once the new method has been coded, its interface must be known to the parser, so that it can be used in strategy strings. All of this is done in the module strategy method files, the name of which always end in {\tt \_st.[ch]}, that is, {\tt vgraph\_\lbt separate\_\lbt st.[ch]} for the {\tt vgraph} module. Both files are to be updated. In the header file {*\_st.h}, a new identifier must be created for the new method in the {\tt St\lbt Method\lbt Type} enumeration type, preferrably placed in alphabetical order. In file {*\_st.c}, there are several places to update. First, in the beginning of the module file, the header file of the new method, {\tt vgraph\_\lbt separate\_\lbt xy\lbt .h} in this example, must be added in alphabetical order to the list of included method header files. Then, if the new method has parameters, an instance of the method parameter structure must be created, which will hold the default values for the method. This is in fact a {\tt union} structure, of the following form : {\tt\begin{verbatim} static union { VgraphSeparateXyParam param; StratNodeMethodData padding; } vgraphseparatedefaultxy = { { ... } }; \end{verbatim}} where the dots should be replaced by the list of default values of the fields of the {\tt Vgraph\lbt Separate\lbt Xy\lbt Param} structure. Note that the size of the {\tt Strat\lbt Node\lbt Method\lbt Data} structure, which is used as a generic padding structure, must always be greater than or equal to the size of each of the parameter structures. If your new parameter structure is larger, you will have to update the size of the {\tt Strat\lbt Node\lbt Method\lbt Data} type in file {\tt parser.h}\enspace. The size of the {\tt Strat\lbt Node\lbt Method\lbt Data} type does not depend directly on the size of the parameter structures (as could have been done by making it an union of all of them) so as to to reduce the dependencies between the files of the library. In most cases, the default size is sufficient, and a test is added in the beginning of all method routines to ensure it is the case in practice. Finally, the first two method tables must be filled accordingly. In the first one, of type {\tt Strat\lbt Method\lbt Tab}, one must add a new line linking the method identifier to the character code used to name the method in strategy strings (which must be chosen among all of the yet unused letters), the pointer to the routine, and the pointer to the above default parameter structure if it exists (else, a {\tt NULL} pointer must be given). In the second one, of type {\tt Strat\lbt Param\lbt Tab}, one must add one line per method parameter, giving the identifier of the method, the type of the parameter, the name of the parameter in the strategy string, the base address of the default parameter structure, the actual address of the field in the parameter structure (both fields are required because the relative offset of the field with respect to the starting address of the structure cannot be computed at compile-time), and an optional pointer that references either the strategy table to be used to parse the strategy parameter (for strategy parameters) or a string holding all of the values of the character flags (for an enumerated type), this pointer being set to {\tt NULL} for all of the other parameter types (integer and floating point). \subsection{Adding the new method to the makefile} Of course, in order to be compiled, the new method must be added to the {\tt makefile} of the {\tt libscotch} source directory. There are several places to update. First, you have to create the entry for the new method source files themselves. The best way to proceed is to search for the one of an already existing method, such as {\tt vgraph\_\lbt separate\_\lbt fm}, and copy it to the right neighboring place, preferrably following the alphabetical order. Then, you have to add the new header file to the dependency list of the module strategy method, that is, {\tt vgraph\_\lbt separate\_\lbt st} for graph separation methods. Here again, search for the occurences of string {\tt vgraph\_\lbt separate\_\lbt fm} to see where it is done. Finally, add the new object file to the component list of the {\tt libscotch} library file. Once all of this is done, you can recompile \scotch\ and be able to use your new method in strategy strings. scotch_6.0.9/doc/src/scotch/s_f_me3.eps0000644000302600021200000011411013322403377020122 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Mon May 3 15:33:42 2004 %%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 757 488 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 488 moveto 0 0 lineto 757 0 lineto 757 488 lineto closepath clip newpath -36.0 522.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 60 % Polyline 2 slj n 6525 3150 m 6502 3115 l 6479 3080 l 6457 3046 l 6436 3015 l 6418 2988 l 6401 2963 l 6387 2942 l 6375 2924 l 6364 2908 l 6355 2895 l 6346 2883 l 6339 2873 l 6331 2862 l 6324 2852 l 6316 2842 l 6308 2830 l 6299 2816 l 6289 2800 l 6277 2780 l 6263 2758 l 6248 2731 l 6231 2701 l 6212 2667 l 6192 2630 l 6171 2590 l 6150 2550 l 6125 2499 l 6104 2451 l 6086 2409 l 6073 2372 l 6064 2340 l 6058 2313 l 6055 2291 l 6054 2271 l 6055 2253 l 6056 2237 l 6058 2222 l 6059 2207 l 6059 2192 l 6057 2177 l 6054 2160 l 6048 2144 l 6039 2128 l 6028 2114 l 6015 2104 l 6000 2100 l 5985 2104 l 5972 2114 l 5960 2128 l 5951 2144 l 5945 2160 l 5941 2177 l 5938 2192 l 5937 2207 l 5937 2222 l 5938 2238 l 5938 2253 l 5937 2271 l 5936 2291 l 5932 2313 l 5927 2340 l 5918 2372 l 5906 2409 l 5890 2451 l 5872 2499 l 5850 2550 l 5831 2594 l 5812 2636 l 5794 2676 l 5778 2712 l 5764 2743 l 5752 2769 l 5742 2792 l 5734 2811 l 5728 2826 l 5722 2840 l 5717 2852 l 5712 2863 l 5708 2873 l 5703 2885 l 5697 2898 l 5689 2913 l 5680 2931 l 5669 2952 l 5655 2977 l 5639 3006 l 5620 3038 l 5598 3074 l 5575 3112 l 5550 3150 l 5520 3193 l 5492 3231 l 5465 3264 l 5440 3290 l 5418 3310 l 5398 3326 l 5379 3337 l 5362 3345 l 5346 3351 l 5331 3356 l 5317 3361 l 5303 3365 l 5289 3370 l 5276 3377 l 5264 3386 l 5254 3397 l 5246 3409 l 5242 3423 l 5243 3437 l 5250 3450 l 5263 3459 l 5281 3464 l 5301 3467 l 5321 3468 l 5342 3467 l 5361 3464 l 5379 3460 l 5396 3455 l 5413 3450 l 5428 3444 l 5444 3437 l 5460 3431 l 5477 3424 l 5496 3418 l 5518 3411 l 5542 3405 l 5571 3399 l 5604 3393 l 5641 3388 l 5683 3383 l 5728 3379 l 5775 3375 l 5822 3372 l 5867 3369 l 5906 3367 l 5940 3366 l 5968 3365 l 5990 3364 l 6007 3363 l 6020 3363 l 6030 3363 l 6037 3363 l 6044 3363 l 6050 3363 l 6058 3363 l 6067 3363 l 6080 3363 l 6096 3364 l 6117 3365 l 6144 3366 l 6176 3367 l 6214 3369 l 6256 3372 l 6300 3375 l 6348 3379 l 6393 3384 l 6432 3389 l 6467 3395 l 6496 3402 l 6521 3409 l 6541 3416 l 6559 3423 l 6574 3430 l 6588 3438 l 6601 3444 l 6614 3451 l 6628 3457 l 6644 3462 l 6660 3466 l 6679 3468 l 6698 3468 l 6718 3465 l 6736 3459 l 6750 3450 l 6759 3436 l 6761 3420 l 6758 3405 l 6753 3392 l 6745 3381 l 6736 3372 l 6727 3366 l 6717 3361 l 6706 3356 l 6695 3351 l 6683 3344 l 6669 3334 l 6652 3319 l 6634 3299 l 6612 3273 l 6586 3239 l 6557 3198 l cp gs 0.80 setgray ef gr % Polyline n 8025 3150 m 8002 3115 l 7979 3080 l 7957 3046 l 7936 3015 l 7918 2988 l 7901 2963 l 7887 2942 l 7875 2924 l 7864 2908 l 7855 2895 l 7846 2883 l 7839 2873 l 7831 2862 l 7824 2852 l 7816 2842 l 7808 2830 l 7799 2816 l 7789 2800 l 7777 2780 l 7763 2758 l 7748 2731 l 7731 2701 l 7712 2667 l 7692 2630 l 7671 2590 l 7650 2550 l 7625 2499 l 7604 2451 l 7586 2409 l 7573 2372 l 7564 2340 l 7558 2313 l 7555 2291 l 7554 2271 l 7555 2253 l 7556 2237 l 7558 2222 l 7559 2207 l 7559 2192 l 7557 2177 l 7554 2160 l 7548 2144 l 7539 2128 l 7528 2114 l 7515 2104 l 7500 2100 l 7485 2104 l 7472 2114 l 7460 2128 l 7451 2144 l 7445 2160 l 7441 2177 l 7438 2192 l 7437 2207 l 7437 2222 l 7438 2238 l 7438 2253 l 7437 2271 l 7436 2291 l 7432 2313 l 7427 2340 l 7418 2372 l 7406 2409 l 7390 2451 l 7372 2499 l 7350 2550 l 7331 2594 l 7312 2636 l 7294 2676 l 7278 2712 l 7264 2743 l 7252 2769 l 7242 2792 l 7234 2811 l 7228 2826 l 7222 2840 l 7217 2852 l 7212 2863 l 7208 2873 l 7203 2885 l 7197 2898 l 7189 2913 l 7180 2931 l 7169 2952 l 7155 2977 l 7139 3006 l 7120 3038 l 7098 3074 l 7075 3112 l 7050 3150 l 7020 3193 l 6992 3231 l 6965 3264 l 6940 3290 l 6918 3310 l 6898 3326 l 6879 3337 l 6862 3345 l 6846 3351 l 6831 3356 l 6817 3361 l 6803 3365 l 6789 3370 l 6776 3377 l 6764 3386 l 6754 3397 l 6746 3409 l 6742 3423 l 6743 3437 l 6750 3450 l 6763 3459 l 6781 3464 l 6801 3467 l 6821 3468 l 6842 3467 l 6861 3464 l 6879 3460 l 6896 3455 l 6913 3450 l 6928 3444 l 6944 3437 l 6960 3431 l 6977 3424 l 6996 3418 l 7018 3411 l 7042 3405 l 7071 3399 l 7104 3393 l 7141 3388 l 7183 3383 l 7228 3379 l 7275 3375 l 7322 3372 l 7367 3369 l 7406 3367 l 7440 3366 l 7468 3365 l 7490 3364 l 7507 3363 l 7520 3363 l 7530 3363 l 7537 3363 l 7544 3363 l 7550 3363 l 7558 3363 l 7567 3363 l 7580 3363 l 7596 3364 l 7617 3365 l 7644 3366 l 7676 3367 l 7714 3369 l 7756 3372 l 7800 3375 l 7848 3379 l 7893 3384 l 7932 3389 l 7967 3395 l 7996 3402 l 8021 3409 l 8041 3416 l 8059 3423 l 8074 3430 l 8088 3438 l 8101 3444 l 8114 3451 l 8128 3457 l 8144 3462 l 8160 3466 l 8179 3468 l 8198 3468 l 8218 3465 l 8236 3459 l 8250 3450 l 8259 3436 l 8261 3420 l 8258 3405 l 8253 3392 l 8245 3381 l 8236 3372 l 8227 3366 l 8217 3361 l 8206 3356 l 8195 3351 l 8183 3344 l 8169 3334 l 8152 3319 l 8134 3299 l 8112 3273 l 8086 3239 l 8057 3198 l cp gs 0.80 setgray ef gr % Polyline n 6675 2550 m 6670 2595 l 6667 2629 l 6665 2650 l 6664 2660 l 6663 2660 l 6663 2653 l 6663 2644 l 6663 2635 l 6663 2629 l 6664 2632 l 6665 2645 l 6667 2673 l 6670 2717 l 6675 2775 l 6678 2811 l 6682 2847 l 6685 2884 l 6689 2920 l 6693 2954 l 6697 2987 l 6701 3017 l 6705 3046 l 6709 3073 l 6713 3098 l 6717 3123 l 6721 3146 l 6725 3169 l 6729 3191 l 6733 3214 l 6736 3236 l 6740 3259 l 6743 3283 l 6746 3307 l 6749 3331 l 6751 3355 l 6752 3379 l 6753 3401 l 6753 3422 l 6752 3438 l 6750 3450 l 6745 3456 l 6740 3454 l 6733 3445 l 6728 3432 l 6723 3417 l 6718 3401 l 6715 3384 l 6712 3367 l 6709 3349 l 6706 3331 l 6703 3312 l 6700 3292 l 6695 3269 l 6689 3243 l 6681 3214 l 6670 3181 l 6657 3142 l 6641 3099 l 6622 3051 l 6600 3000 l 6581 2956 l 6562 2914 l 6544 2874 l 6528 2838 l 6514 2807 l 6502 2781 l 6492 2758 l 6484 2739 l 6478 2724 l 6472 2710 l 6467 2698 l 6462 2687 l 6458 2677 l 6453 2665 l 6447 2652 l 6439 2637 l 6430 2619 l 6419 2598 l 6405 2573 l 6389 2544 l 6370 2512 l 6348 2476 l 6325 2438 l 6300 2400 l 6270 2357 l 6242 2319 l 6216 2286 l 6193 2260 l 6172 2240 l 6155 2224 l 6139 2213 l 6125 2205 l 6112 2199 l 6100 2194 l 6088 2189 l 6077 2185 l 6066 2180 l 6054 2173 l 6042 2164 l 6030 2153 l 6019 2141 l 6010 2127 l 6003 2113 l 6000 2100 l 6004 2089 l 6015 2083 l 6029 2082 l 6045 2084 l 6062 2089 l 6079 2096 l 6096 2104 l 6113 2113 l 6130 2121 l 6149 2131 l 6169 2139 l 6191 2148 l 6216 2156 l 6243 2163 l 6271 2170 l 6300 2175 l 6334 2180 l 6359 2184 l 6374 2186 l 6379 2187 l 6375 2187 l 6371 2187 l 6376 2186 l 6391 2184 l 6416 2180 l 6450 2175 l 6479 2170 l 6507 2163 l 6532 2155 l 6555 2145 l 6574 2135 l 6591 2123 l 6605 2112 l 6619 2100 l 6632 2089 l 6646 2079 l 6661 2071 l 6677 2066 l 6695 2065 l 6715 2069 l 6734 2081 l 6750 2100 l 6759 2121 l 6765 2144 l 6768 2169 l 6768 2192 l 6766 2214 l 6762 2234 l 6757 2252 l 6751 2269 l 6744 2285 l 6737 2300 l 6730 2316 l 6723 2332 l 6716 2350 l 6709 2371 l 6702 2394 l 6695 2420 l 6689 2449 l 6684 2481 l 6679 2516 l cp gs 0.80 setgray ef gr % Polyline n 6825 2550 m 6830 2595 l 6833 2629 l 6835 2650 l 6836 2660 l 6837 2660 l 6837 2653 l 6837 2644 l 6837 2635 l 6837 2629 l 6836 2632 l 6835 2645 l 6833 2673 l 6830 2717 l 6825 2775 l 6822 2811 l 6818 2847 l 6815 2884 l 6811 2920 l 6807 2954 l 6803 2987 l 6799 3017 l 6795 3046 l 6791 3073 l 6787 3098 l 6783 3123 l 6779 3146 l 6775 3169 l 6771 3191 l 6767 3214 l 6764 3236 l 6760 3259 l 6757 3283 l 6754 3307 l 6751 3331 l 6749 3355 l 6748 3379 l 6747 3401 l 6747 3422 l 6748 3438 l 6750 3450 l 6755 3456 l 6760 3454 l 6767 3445 l 6772 3432 l 6777 3417 l 6782 3401 l 6785 3384 l 6788 3367 l 6791 3349 l 6794 3331 l 6797 3312 l 6800 3292 l 6805 3269 l 6811 3243 l 6819 3214 l 6830 3181 l 6843 3142 l 6859 3099 l 6878 3051 l 6900 3000 l 6919 2956 l 6938 2914 l 6956 2874 l 6972 2838 l 6986 2807 l 6998 2781 l 7008 2758 l 7016 2739 l 7022 2724 l 7028 2710 l 7033 2698 l 7038 2687 l 7042 2677 l 7047 2665 l 7053 2652 l 7061 2637 l 7070 2619 l 7081 2598 l 7095 2573 l 7111 2544 l 7130 2512 l 7152 2476 l 7175 2438 l 7200 2400 l 7230 2357 l 7258 2319 l 7284 2286 l 7307 2260 l 7328 2240 l 7345 2224 l 7361 2213 l 7375 2205 l 7388 2199 l 7400 2194 l 7412 2189 l 7423 2185 l 7434 2180 l 7446 2173 l 7458 2164 l 7470 2153 l 7481 2141 l 7490 2127 l 7497 2113 l 7500 2100 l 7496 2089 l 7485 2083 l 7471 2082 l 7455 2084 l 7438 2089 l 7421 2096 l 7404 2104 l 7388 2113 l 7370 2121 l 7351 2131 l 7331 2139 l 7309 2148 l 7284 2156 l 7257 2163 l 7229 2170 l 7200 2175 l 7166 2180 l 7141 2184 l 7126 2186 l 7121 2187 l 7125 2187 l 7129 2187 l 7124 2186 l 7109 2184 l 7084 2180 l 7050 2175 l 7021 2170 l 6993 2163 l 6968 2155 l 6945 2145 l 6926 2135 l 6909 2123 l 6895 2112 l 6881 2100 l 6868 2089 l 6854 2079 l 6839 2071 l 6823 2066 l 6805 2065 l 6785 2069 l 6766 2081 l 6750 2100 l 6741 2121 l 6735 2144 l 6732 2169 l 6732 2192 l 6734 2214 l 6738 2234 l 6743 2252 l 6749 2269 l 6756 2285 l 6763 2300 l 6770 2316 l 6777 2332 l 6784 2350 l 6791 2371 l 6798 2394 l 6805 2420 l 6811 2449 l 6816 2481 l 6821 2516 l cp gs 0.80 setgray ef gr % Polyline n 6825 1650 m 6830 1605 l 6833 1571 l 6835 1550 l 6836 1540 l 6837 1540 l 6837 1547 l 6837 1556 l 6837 1565 l 6837 1571 l 6836 1568 l 6835 1555 l 6833 1527 l 6830 1483 l 6825 1425 l 6822 1389 l 6818 1353 l 6815 1316 l 6811 1280 l 6807 1246 l 6803 1213 l 6799 1183 l 6795 1154 l 6791 1127 l 6787 1102 l 6783 1077 l 6779 1054 l 6775 1031 l 6771 1009 l 6767 986 l 6764 964 l 6760 941 l 6757 917 l 6754 893 l 6751 869 l 6749 845 l 6748 821 l 6747 799 l 6747 778 l 6748 762 l 6750 750 l 6755 744 l 6760 746 l 6767 755 l 6772 768 l 6777 783 l 6782 799 l 6785 816 l 6788 833 l 6791 851 l 6794 869 l 6797 888 l 6800 908 l 6805 931 l 6811 957 l 6819 986 l 6830 1019 l 6843 1058 l 6859 1101 l 6878 1149 l 6900 1200 l 6919 1244 l 6938 1286 l 6956 1326 l 6972 1362 l 6986 1393 l 6998 1419 l 7008 1442 l 7016 1461 l 7022 1476 l 7028 1490 l 7033 1502 l 7038 1513 l 7042 1523 l 7047 1535 l 7053 1548 l 7061 1563 l 7070 1581 l 7081 1602 l 7095 1627 l 7111 1656 l 7130 1688 l 7152 1724 l 7175 1762 l 7200 1800 l 7230 1843 l 7258 1881 l 7284 1914 l 7307 1940 l 7328 1960 l 7345 1976 l 7361 1987 l 7375 1995 l 7388 2001 l 7400 2006 l 7412 2011 l 7423 2015 l 7434 2020 l 7446 2027 l 7458 2036 l 7470 2047 l 7481 2059 l 7490 2073 l 7497 2087 l 7500 2100 l 7496 2111 l 7485 2117 l 7471 2118 l 7455 2116 l 7438 2111 l 7421 2104 l 7404 2096 l 7388 2088 l 7370 2079 l 7351 2069 l 7331 2061 l 7309 2052 l 7284 2044 l 7257 2037 l 7229 2030 l 7200 2025 l 7166 2020 l 7141 2016 l 7126 2014 l 7121 2013 l 7125 2013 l 7129 2013 l 7124 2014 l 7109 2016 l 7084 2020 l 7050 2025 l 7021 2030 l 6993 2037 l 6968 2045 l 6945 2055 l 6926 2065 l 6909 2077 l 6895 2088 l 6881 2100 l 6868 2111 l 6854 2121 l 6839 2129 l 6823 2134 l 6805 2135 l 6785 2131 l 6766 2119 l 6750 2100 l 6741 2079 l 6735 2056 l 6732 2031 l 6732 2008 l 6734 1986 l 6738 1966 l 6743 1948 l 6749 1931 l 6756 1915 l 6763 1900 l 6770 1884 l 6777 1868 l 6784 1850 l 6791 1829 l 6798 1806 l 6805 1780 l 6811 1751 l 6816 1719 l 6821 1684 l cp gs 0.80 setgray ef gr % Polyline n 6675 1650 m 6670 1605 l 6667 1571 l 6665 1550 l 6664 1540 l 6663 1540 l 6663 1547 l 6663 1556 l 6663 1565 l 6663 1571 l 6664 1568 l 6665 1555 l 6667 1527 l 6670 1483 l 6675 1425 l 6678 1389 l 6682 1353 l 6685 1316 l 6689 1280 l 6693 1246 l 6697 1213 l 6701 1183 l 6705 1154 l 6709 1127 l 6713 1102 l 6717 1077 l 6721 1054 l 6725 1031 l 6729 1009 l 6733 986 l 6736 964 l 6740 941 l 6743 917 l 6746 893 l 6749 869 l 6751 845 l 6752 821 l 6753 799 l 6753 778 l 6752 762 l 6750 750 l 6745 744 l 6740 746 l 6733 755 l 6728 768 l 6723 783 l 6718 799 l 6715 816 l 6712 833 l 6709 851 l 6706 869 l 6703 888 l 6700 908 l 6695 931 l 6689 957 l 6681 986 l 6670 1019 l 6657 1058 l 6641 1101 l 6622 1149 l 6600 1200 l 6581 1244 l 6562 1286 l 6544 1326 l 6528 1362 l 6514 1393 l 6502 1419 l 6492 1442 l 6484 1461 l 6478 1476 l 6472 1490 l 6467 1502 l 6462 1513 l 6458 1523 l 6453 1535 l 6447 1548 l 6439 1563 l 6430 1581 l 6419 1602 l 6405 1627 l 6389 1656 l 6370 1688 l 6348 1724 l 6325 1762 l 6300 1800 l 6270 1843 l 6242 1881 l 6216 1914 l 6193 1940 l 6172 1960 l 6155 1976 l 6139 1987 l 6125 1995 l 6112 2001 l 6100 2006 l 6088 2011 l 6077 2015 l 6066 2020 l 6054 2027 l 6042 2036 l 6030 2047 l 6019 2059 l 6010 2073 l 6003 2087 l 6000 2100 l 6004 2111 l 6015 2117 l 6029 2118 l 6045 2116 l 6062 2111 l 6079 2104 l 6096 2096 l 6113 2088 l 6130 2079 l 6149 2069 l 6169 2061 l 6191 2052 l 6216 2044 l 6243 2037 l 6271 2030 l 6300 2025 l 6334 2020 l 6359 2016 l 6374 2014 l 6379 2013 l 6375 2013 l 6371 2013 l 6376 2014 l 6391 2016 l 6416 2020 l 6450 2025 l 6479 2030 l 6507 2037 l 6532 2045 l 6555 2055 l 6574 2065 l 6591 2077 l 6605 2088 l 6619 2100 l 6632 2111 l 6646 2121 l 6661 2129 l 6677 2134 l 6695 2135 l 6715 2131 l 6734 2119 l 6750 2100 l 6759 2079 l 6765 2056 l 6768 2031 l 6768 2008 l 6766 1986 l 6762 1966 l 6757 1948 l 6751 1931 l 6744 1915 l 6737 1900 l 6730 1884 l 6723 1868 l 6716 1850 l 6709 1829 l 6702 1806 l 6695 1780 l 6689 1751 l 6684 1719 l 6679 1684 l cp gs 0.80 setgray ef gr % here ends figure; % % here starts figure with depth 50 % Polyline 7.500 slw n 6000 2100 m 6000 3000 l gs col0 s gr % Polyline n 7500 2100 m 7500 3000 l 6750 3450 l gs col0 s gr % Polyline n 7500 3000 m 8325 3450 l gs col0 s gr % Polyline n 5250 3450 m 6000 3000 l 6750 3450 l 6525 2550 l 6000 2100 l 6525 1650 l 6750 2100 l 6525 2550 l gs col0 s gr % Polyline n 6525 1650 m 6750 750 l 6975 1650 l 6750 2100 l 6975 2550 l 6750 3450 l gs col0 s gr % Polyline n 6975 2550 m 7500 2100 l 6975 1650 l gs col0 s gr % Polyline n 1800 6600 m 2100 6600 l 2100 6900 l 1800 6900 l cp gs col0 s gr % here ends figure; % % here starts figure with depth 20 % Polyline 7.500 slw [15 45] 45 sd n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 3600 m 1800 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 3600 m 2100 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 4200 m 1800 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12900 6600 m 13200 6600 l 13200 6900 l 12900 6900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 13200 6600 m 12900 6900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 12900 6600 m 13200 6900 l gs col0 s gr [] 0 sd % Polyline gs clippath 3180 6885 m 3120 6885 l 3120 7036 l 3150 6916 l 3180 7036 l cp eoclip n 2250 8400 m 2250 7200 l 3150 7200 l 3150 6900 l gs col0 s gr gr % arrowhead n 3180 7036 m 3150 6916 l 3120 7036 l 3180 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5220 6615 m 5280 6615 l 5280 6464 l 5250 6584 l 5220 6464 l cp eoclip n 3450 5100 m 3450 6150 l 5250 6150 l 5250 6600 l gs col0 s gr gr % arrowhead n 5220 6464 m 5250 6584 l 5280 6464 l 5220 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3120 6615 m 3180 6615 l 3180 6464 l 3150 6584 l 3120 6464 l cp eoclip n 2550 5100 m 2550 6300 l 3150 6300 l 3150 6600 l gs col0 s gr gr % arrowhead n 3120 6464 m 3150 6584 l 3180 6464 l 3120 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9780 6885 m 9720 6885 l 9720 7036 l 9750 6916 l 9780 7036 l cp eoclip n 1950 8400 m 1950 8100 l 9750 8100 l 9750 6900 l gs col0 s gr gr % arrowhead n 9780 7036 m 9750 6916 l 9720 7036 l 9780 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9720 6615 m 9780 6615 l 9780 6464 l 9750 6584 l 9720 6464 l cp eoclip n 3150 5100 m 3150 5625 l 9750 5625 l 9750 6600 l gs col0 s gr gr % arrowhead n 9720 6464 m 9750 6584 l 9780 6464 l 9720 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7320 6615 m 7380 6615 l 7380 6464 l 7350 6584 l 7320 6464 l cp eoclip n 5550 5100 m 5550 5925 l 7350 5925 l 7350 6600 l gs col0 s gr gr % arrowhead n 7320 6464 m 7350 6584 l 7380 6464 l 7320 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8220 6615 m 8280 6615 l 8280 6464 l 8250 6584 l 8220 6464 l cp eoclip n 5850 5100 m 5850 5850 l 8250 5850 l 8250 6600 l gs col0 s gr gr % arrowhead n 8220 6464 m 8250 6584 l 8280 6464 l 8220 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5580 6885 m 5520 6885 l 5520 7036 l 5550 6916 l 5580 7036 l cp eoclip n 3450 8400 m 3450 7425 l 5550 7425 l 5550 6900 l gs col0 s gr gr % arrowhead n 5580 7036 m 5550 6916 l 5520 7036 l 5580 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10980 6885 m 10920 6885 l 10920 7036 l 10950 6916 l 10980 7036 l cp eoclip n 3150 8400 m 3150 8025 l 10950 8025 l 10950 6900 l gs col0 s gr gr % arrowhead n 10980 7036 m 10950 6916 l 10920 7036 l 10980 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4380 6885 m 4320 6885 l 4320 7036 l 4350 6916 l 4380 7036 l cp eoclip n 2850 8400 m 2850 7350 l 4350 7350 l 4350 6900 l gs col0 s gr gr % arrowhead n 4380 7036 m 4350 6916 l 4320 7036 l 4380 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4080 6885 m 4020 6885 l 4020 7036 l 4050 6916 l 4080 7036 l cp eoclip n 2550 8400 m 2550 7275 l 4050 7275 l 4050 6900 l gs col0 s gr gr % arrowhead n 4080 7036 m 4050 6916 l 4020 7036 l 4080 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7380 6885 m 7320 6885 l 7320 7036 l 7350 6916 l 7380 7036 l cp eoclip n 5250 8400 m 5250 7725 l 7350 7725 l 7350 6900 l gs col0 s gr gr % arrowhead n 7380 7036 m 7350 6916 l 7320 7036 l 7380 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8280 6885 m 8220 6885 l 8220 7036 l 8250 6916 l 8280 7036 l cp eoclip n 5550 8400 m 5550 7800 l 8250 7800 l 8250 6900 l gs col0 s gr gr % arrowhead n 8280 7036 m 8250 6916 l 8220 7036 l 8280 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9180 6885 m 9120 6885 l 9120 7036 l 9150 6916 l 9180 7036 l cp eoclip n 5850 8400 m 5850 7875 l 9150 7875 l 9150 6900 l gs col0 s gr gr % arrowhead n 9180 7036 m 9150 6916 l 9120 7036 l 9180 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6480 6885 m 6420 6885 l 6420 7036 l 6450 6916 l 6480 7036 l cp eoclip n 4950 8400 m 4950 7500 l 6450 7500 l 6450 6900 l gs col0 s gr gr % arrowhead n 6480 7036 m 6450 6916 l 6420 7036 l 6480 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6420 6615 m 6480 6615 l 6480 6464 l 6450 6584 l 6420 6464 l cp eoclip n 5250 5100 m 5250 6000 l 6450 6000 l 6450 6600 l gs col0 s gr gr % arrowhead n 6420 6464 m 6450 6584 l 6480 6464 l 6420 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5520 6615 m 5580 6615 l 5580 6464 l 5550 6584 l 5520 6464 l cp eoclip n 4950 5100 m 4950 6075 l 5550 6075 l 5550 6600 l gs col0 s gr gr % arrowhead n 5520 6464 m 5550 6584 l 5580 6464 l 5520 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9120 6615 m 9180 6615 l 9180 6464 l 9150 6584 l 9120 6464 l cp eoclip n 1950 5100 m 1950 5550 l 9150 5550 l 9150 6600 l gs col0 s gr gr % arrowhead n 9120 6464 m 9150 6584 l 9180 6464 l 9120 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4020 6615 m 4080 6615 l 4080 6464 l 4050 6584 l 4020 6464 l cp eoclip n 2850 5100 m 2850 6225 l 4050 6225 l 4050 6600 l gs col0 s gr gr % arrowhead n 4020 6464 m 4050 6584 l 4080 6464 l 4020 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 12180 6885 m 12120 6885 l 12120 7036 l 12150 6916 l 12180 7036 l cp eoclip n 3750 8400 m 3750 7950 l 12150 7950 l 12150 6900 l gs col0 s gr gr % arrowhead n 12180 7036 m 12150 6916 l 12120 7036 l 12180 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10920 6615 m 10980 6615 l 10980 6464 l 10950 6584 l 10920 6464 l cp eoclip n 3750 5100 m 3750 5700 l 10950 5700 l 10950 6600 l gs col0 s gr gr % arrowhead n 10920 6464 m 10950 6584 l 10980 6464 l 10920 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5280 6885 m 5220 6885 l 5220 7036 l 5250 6916 l 5280 7036 l cp eoclip n 4350 8400 m 4350 7575 l 5250 7575 l 5250 6900 l gs col0 s gr gr % arrowhead n 5280 7036 m 5250 6916 l 5220 7036 l 5280 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 12120 6615 m 12180 6615 l 12180 6464 l 12150 6584 l 12120 6464 l cp eoclip n 4650 5100 m 4650 5775 l 12150 5775 l 12150 6600 l gs col0 s gr gr % arrowhead n 12120 6464 m 12150 6584 l 12180 6464 l 12120 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 13080 6885 m 13020 6885 l 13020 7036 l 13050 6916 l 13080 7036 l cp eoclip n 4650 8400 m 4650 7650 l 13050 7650 l 13050 6900 l gs col0 s gr gr % arrowhead n 13080 7036 m 13050 6916 l 13020 7036 l 13080 7036 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 600 3225 m gs 1 -1 sc (edgenbr) col0 sh gr /Courier ff 240.00 scf sf 600 3825 m gs 1 -1 sc (vlbltab) col0 sh gr /Courier ff 240.00 scf sf 600 4425 m gs 1 -1 sc (velotab) col0 sh gr /Courier ff 240.00 scf sf 600 2625 m gs 1 -1 sc (vnodnbr) col0 sh gr /Courier ff 240.00 scf sf 600 825 m gs 1 -1 sc (velmbas) col0 sh gr /Courier ff 240.00 scf sf 600 1425 m gs 1 -1 sc (vnodbas) col0 sh gr /Courier ff 240.00 scf sf 600 2025 m gs 1 -1 sc (velmnbr) col0 sh gr /Courier ff 240.00 scf sf 600 5025 m gs 1 -1 sc (verttab) col0 sh gr /Courier ff 240.00 scf sf 600 6825 m gs 1 -1 sc (edgetab) col0 sh gr /Courier ff 240.00 scf sf 600 8625 m gs 1 -1 sc (vendtab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 2100 4800 m 2400 4800 l 2400 5100 l 2100 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 4800 m 2700 4800 l 2700 5100 l 2400 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 4800 m 3000 4800 l 3000 5100 l 2700 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 4800 m 3600 4800 l 3600 5100 l 3300 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 5040 m gs 1 -1 sc (12) col0 sh gr % Polyline n 4800 4800 m 5100 4800 l 5100 5100 l 4800 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 5040 m gs 1 -1 sc (13) col0 sh gr % Polyline n 5100 4800 m 5400 4800 l 5400 5100 l 5100 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 5040 m gs 1 -1 sc (16) col0 sh gr % Polyline n 5400 4800 m 5700 4800 l 5700 5100 l 5400 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5425 5040 m gs 1 -1 sc (19) col0 sh gr % Polyline n 2100 8400 m 2400 8400 l 2400 8700 l 2100 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 8400 m 2700 8400 l 2700 8700 l 2400 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 8400 m 3000 8400 l 3000 8700 l 2700 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 8400 m 3600 8400 l 3600 8700 l 3300 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 8640 m gs 1 -1 sc (13) col0 sh gr % Polyline n 4800 8400 m 5100 8400 l 5100 8700 l 4800 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 8640 m gs 1 -1 sc (16) col0 sh gr % Polyline n 5100 8400 m 5400 8400 l 5400 8700 l 5100 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 8640 m gs 1 -1 sc (19) col0 sh gr % Polyline n 5400 8400 m 5700 8400 l 5700 8700 l 5400 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5425 8640 m gs 1 -1 sc (22) col0 sh gr % Polyline n 5700 8400 m 6000 8400 l 6000 8700 l 5700 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5725 8640 m gs 1 -1 sc (25) col0 sh gr % Polyline n 5700 4800 m 6000 4800 l 6000 5100 l 5700 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5725 5040 m gs 1 -1 sc (22) col0 sh gr % Polyline n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 6600 m 3000 6600 l 3000 6900 l 2700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3600 6600 m 3900 6600 l 3900 6900 l 3600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 5100 6600 m 5400 6600 l 5400 6900 l 5100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 5400 6600 m 5700 6600 l 5700 6900 l 5400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 6600 m 6000 6600 l 6000 6900 l 5700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 6600 m 6300 6600 l 6300 6900 l 6000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 6600 m 6600 6600 l 6600 6900 l 6300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 6600 m 6900 6600 l 6900 6900 l 6600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 6600 m 7500 6600 l 7500 6900 l 7200 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 6600 m 7800 6600 l 7800 6900 l 7500 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 6600 m 8100 6600 l 8100 6900 l 7800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 6600 m 8400 6600 l 8400 6900 l 8100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 6600 m 8700 6600 l 8700 6900 l 8400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 6600 m 9000 6600 l 9000 6900 l 8700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9000 6600 m 9300 6600 l 9300 6900 l 9000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9025 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 9300 6600 m 9600 6600 l 9600 6900 l 9300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 4800 m 2100 4800 l 2100 5100 l 1800 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 5040 m gs 1 -1 sc (25) col0 sh gr % Polyline n 1800 8400 m 2100 8400 l 2100 8700 l 1800 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 8640 m gs 1 -1 sc (27) col0 sh gr % Polyline n 3900 6600 m 4200 6600 l 4200 6900 l 3900 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3925 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 9900 6600 m 10200 6600 l 10200 6900 l 9900 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9925 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 9600 6600 m 9900 6600 l 9900 6900 l 9600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 9625 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3900 4800 m 4200 4800 l 4200 5100 l 3900 5100 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 3900 8400 m 4200 8400 l 4200 8700 l 3900 8700 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 3240 m gs 1 -1 sc (36) col0 sh gr % Polyline n 3000 4800 m 3300 4800 l 3300 5100 l 3000 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 5040 m gs 1 -1 sc (27) col0 sh gr % Polyline n 3000 8400 m 3300 8400 l 3300 8700 l 3000 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 8640 m gs 1 -1 sc (31) col0 sh gr % Polyline n 3600 4800 m 3900 4800 l 3900 5100 l 3600 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 5040 m gs 1 -1 sc (31) col0 sh gr % Polyline n 3600 8400 m 3900 8400 l 3900 8700 l 3600 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 8640 m gs 1 -1 sc (35) col0 sh gr % Polyline n 10200 6600 m 10500 6600 l 10500 6900 l 10200 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10225 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 10800 6600 m 11100 6600 l 11100 6900 l 10800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10825 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 11100 6600 m 11400 6600 l 11400 6900 l 11100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 11400 6600 m 11700 6600 l 11700 6900 l 11400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11425 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 11700 6600 m 12000 6600 l 12000 6900 l 11700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 11725 6840 m gs 1 -1 sc (10) col0 sh gr % Polyline n 4200 4800 m 4500 4800 l 4500 5100 l 4200 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 6600 m 4500 6600 l 4500 6900 l 4200 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 6600 m 5100 6600 l 5100 6900 l 4800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 6600 m 4800 6600 l 4800 6900 l 4500 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 8400 m 4500 8400 l 4500 8700 l 4200 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4225 8640 m gs 1 -1 sc (12) col0 sh gr % Polyline n 4500 4800 m 4800 4800 l 4800 5100 l 4500 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4525 5040 m gs 1 -1 sc (35) col0 sh gr % Polyline n 4500 8400 m 4800 8400 l 4800 8700 l 4500 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4525 8640 m gs 1 -1 sc (38) col0 sh gr % Polyline n 12000 6600 m 12300 6600 l 12300 6900 l 12000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12300 6600 m 12600 6600 l 12600 6900 l 12300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 12600 6600 m 12900 6600 l 12900 6900 l 12600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 6600 m 7200 6600 l 7200 6900 l 6900 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 6600 m 2400 6600 l 2400 6900 l 2100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2125 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2400 6600 m 2700 6600 l 2700 6900 l 2400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3000 6600 m 3300 6600 l 3300 6900 l 3000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 6600 m 3600 6600 l 3600 6900 l 3300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 6840 m gs 1 -1 sc (10) col0 sh gr % Polyline n 10500 6600 m 10800 6600 l 10800 6900 l 10500 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 10525 6840 m gs 1 -1 sc (10) col0 sh gr % Polyline gs clippath 2220 6615 m 2280 6615 l 2280 6464 l 2250 6584 l 2220 6464 l cp eoclip n 2250 5100 m 2250 6600 l gs col0 s gr gr % arrowhead n 2220 6464 m 2250 6584 l 2280 6464 l 2220 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4320 6615 m 4380 6615 l 4380 6464 l 4350 6584 l 4320 6464 l cp eoclip n 4350 5100 m 4350 6600 l gs col0 s gr gr % arrowhead n 4320 6464 m 4350 6584 l 4380 6464 l 4320 6464 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 6757 2093 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6007 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7507 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6750 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6750 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8325 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6525 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6532 2543 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6975 2550 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6975 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 2200 5040 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 5040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 5040 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 8640 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 8640 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 8640 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 6707 2183 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5950 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7450 2190 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 3540 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 3540 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8275 3540 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2640 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 1440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 840 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 6840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 6840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 6840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 6840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 9400 6840 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 5040 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 8640 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 11200 6840 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 5040 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 6840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 6840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 12100 6840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 12400 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 12700 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 6840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 6840 m gs 1 -1 sc (9) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 5877 3083 m gs 1 -1 sc (13) col0 sh gr /Times-Roman ff 240.00 scf sf 7377 3083 m gs 1 -1 sc (14) col0 sh gr /Times-Roman ff 240.00 scf sf 6395 1740 m gs 1 -1 sc (11) col0 sh gr /Times-Roman ff 240.00 scf sf 6402 2633 m gs 1 -1 sc (12) col0 sh gr /Times-Roman ff 240.00 scf sf 6845 2640 m gs 1 -1 sc (10) col0 sh gr /Times-Roman ff 240.00 scf sf 6925 1740 m gs 1 -1 sc (9) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_mult.fig0000644000302600021200000000412613303015264020373 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Inches Letter 100.00 Single -2 1200 2 5 1 0 1 -1 -1 0 0 -1 0.000 0 1 1 0 3839.175 2023.260 600 1800 1500 4275 4200 5250 0 0 1.00 60.00 120.00 5 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 1 6360.825 2023.260 9600 1800 8700 4275 6000 5250 0 0 1.00 60.00 120.00 6 600 4425 1650 4950 4 0 -1 0 0 0 16 0.0000 4 255 1260 600 4725 Coarsening\001 4 0 -1 0 0 0 16 0.0000 4 255 630 825 4950 phase\001 -6 6 8550 4425 9825 4950 4 0 -1 0 0 0 16 0.0000 4 255 1545 8550 4725 Uncoarsening\001 4 0 -1 0 0 0 16 0.0000 4 255 630 8925 4950 phase\001 -6 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2100 1800 1200 600 2100 1800 3300 1200 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 2550 3300 1020 510 2550 3300 3570 2790 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8100 1800 1200 600 8100 1800 9300 1200 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 7650 3300 1020 510 7650 3300 8670 2790 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 5100 5100 555 270 5100 5100 5640 4830 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 6750 4500 765 390 6750 4500 7545 4110 1 1 0 1 -1 -1 0 0 -1 0.000 1 0.0000 3450 4500 765 390 3450 4500 4245 4110 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 4935 5355 5085 5250 5040 5040 5220 4965 5190 4830 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 6600 4875 6750 4725 6675 4350 6900 4200 6840 4110 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 6 6690 4890 6675 4725 6675 4650 6750 4350 6825 4200 6735 4110 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 7575 3810 7575 3600 7650 3150 7800 2925 7710 2790 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 8100 2400 8025 2100 8325 1575 8175 1350 8250 1200 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 8025 2400 8250 1875 8175 1500 8250 1350 8175 1200 2 1 0 3 -1 -1 0 0 -1 0.000 0 0 -1 0 0 5 7695 3810 7500 3450 7800 3075 7725 2925 7830 2790 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6600 1800 8025 2025 2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6600 1350 8100 1575 4 0 -1 0 0 0 16 0.0000 4 255 2055 4350 5700 Initial partitioning\001 4 0 -1 0 0 0 16 0.0000 4 255 2160 4350 1875 Prolonged partition\001 4 0 -1 0 0 0 16 0.0000 4 255 2025 4500 1425 Refined partition\001 scotch_6.0.9/doc/src/scotch/s_f_lea.fig0000644000302600021200000000673313303015264020161 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Inches Letter 100.00 Single -2 1200 2 6 825 2925 1650 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 900 3600 75 75 900 3600 975 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 1500 3600 75 75 1500 3600 1575 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 1200 3000 75 75 1200 3000 1275 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 900 3600 1200 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 1200 3000 1500 3600 -6 6 2025 2925 2850 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 2100 3600 75 75 2100 3600 2175 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 2700 3600 75 75 2700 3600 2775 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 2400 3000 75 75 2400 3000 2475 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 2100 3600 2400 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 2400 3000 2700 3600 -6 6 3225 2250 5250 3675 6 3225 2925 4050 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 3300 3600 75 75 3300 3600 3375 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 3900 3600 75 75 3900 3600 3975 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 3600 3000 75 75 3600 3000 3675 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 3300 3600 3600 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 3600 3000 3900 3600 -6 6 4425 2925 5250 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 4500 3600 75 75 4500 3600 4575 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 5100 3600 75 75 5100 3600 5175 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4800 3000 75 75 4800 3000 4875 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 4500 3600 4800 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 4800 3000 5100 3600 -6 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4200 2385 75 75 4200 2385 4275 2460 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 3600 3000 4200 2400 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 4200 2400 4800 3000 -6 6 5625 2250 7650 3675 6 5625 2925 6450 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 5700 3600 75 75 5700 3600 5775 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 6300 3600 75 75 6300 3600 6375 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 6000 3000 75 75 6000 3000 6075 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 5700 3600 6000 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 6000 3000 6300 3600 -6 6 6825 2925 7650 3675 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 6900 3600 75 75 6900 3600 6975 3600 1 3 0 1 -1 -1 10 0 20 0.000 1 0.0000 7500 3600 75 75 7500 3600 7575 3600 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 7200 3000 75 75 7200 3000 7275 3075 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 6900 3600 7200 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 7200 3000 7500 3600 -6 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 6600 2385 75 75 6600 2385 6675 2460 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 6000 3000 6600 2400 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 6600 2400 7200 3000 -6 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 1800 2385 75 75 1800 2385 1875 2460 1 3 0 1 -1 -1 10 0 5 0.000 1 0.0000 4200 1800 75 75 4200 1800 4275 1875 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 1200 3000 1800 2400 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 1800 2400 2400 3000 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 1800 2400 4200 1800 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 4200 1800 4200 2400 2 1 0 1 -1 -1 11 0 10 0.000 0 0 -1 0 0 2 4200 1800 6600 2400 2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 750 2700 7650 2700 2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 750 3300 7650 3300 2 1 4 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 750 2100 7650 2100 4 0 0 50 -1 0 16 0.0000 4 195 135 7725 2775 7\001 4 0 0 50 -1 0 16 0.0000 4 195 135 7725 3375 2\001 4 0 0 50 -1 0 16 0.0000 4 195 270 7725 2175 20\001 scotch_6.0.9/doc/src/scotch/s_f_me1.eps0000644000302600021200000006477513322403377020145 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Mon Nov 10 15:20:01 2003 %%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 523 407 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 407 moveto 0 0 lineto 523 0 lineto 523 407 lineto closepath clip newpath -36.0 441.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 60 % Polyline 2 slj n 8100 1725 m 8086 1761 l 8071 1792 l 8057 1818 l 8044 1838 l 8032 1853 l 8021 1865 l 8010 1874 l 8000 1881 l 7990 1888 l 7981 1895 l 7972 1903 l 7963 1912 l 7956 1922 l 7950 1933 l 7948 1943 l 7950 1950 l 7957 1952 l 7967 1950 l 7978 1944 l 7988 1937 l 7997 1928 l 8005 1919 l 8012 1910 l 8019 1900 l 8026 1890 l 8035 1879 l 8047 1868 l 8062 1856 l 8082 1843 l 8108 1829 l 8139 1814 l 8175 1800 l 8209 1788 l 8241 1778 l 8269 1769 l 8292 1762 l 8310 1756 l 8324 1752 l 8335 1749 l 8343 1746 l 8350 1744 l 8357 1742 l 8366 1740 l 8377 1738 l 8393 1735 l 8413 1733 l 8439 1730 l 8471 1728 l 8509 1726 l 8550 1725 l 8591 1726 l 8629 1728 l 8661 1730 l 8687 1733 l 8707 1735 l 8723 1738 l 8734 1740 l 8743 1742 l 8750 1744 l 8757 1746 l 8765 1749 l 8776 1752 l 8790 1756 l 8808 1762 l 8831 1769 l 8859 1778 l 8891 1788 l 8925 1800 l 8961 1814 l 8992 1829 l 9018 1843 l 9038 1856 l 9053 1868 l 9065 1879 l 9074 1890 l 9081 1900 l 9088 1910 l 9095 1919 l 9103 1928 l 9112 1937 l 9122 1944 l 9133 1950 l 9143 1952 l 9150 1950 l 9152 1943 l 9150 1933 l 9144 1922 l 9137 1912 l 9128 1903 l 9119 1895 l 9110 1888 l 9100 1881 l 9090 1874 l 9079 1865 l 9068 1853 l 9056 1838 l 9043 1818 l 9029 1792 l 9014 1761 l 9000 1725 l 8988 1691 l 8978 1659 l 8969 1631 l 8962 1608 l 8956 1590 l 8952 1576 l 8949 1565 l 8946 1557 l 8944 1550 l 8942 1543 l 8940 1534 l 8938 1523 l 8935 1507 l 8933 1487 l 8930 1461 l 8928 1429 l 8926 1391 l 8925 1350 l 8926 1309 l 8928 1271 l 8930 1239 l 8933 1213 l 8935 1193 l 8938 1177 l 8940 1166 l 8942 1157 l 8944 1150 l 8946 1143 l 8949 1135 l 8952 1124 l 8956 1110 l 8962 1092 l 8969 1069 l 8978 1041 l 8988 1009 l 9000 975 l 9014 939 l 9029 908 l 9043 882 l 9056 862 l 9068 847 l 9079 835 l 9090 826 l 9100 819 l 9110 812 l 9119 805 l 9128 797 l 9137 788 l 9144 778 l 9150 767 l 9152 757 l 9150 750 l 9143 748 l 9133 750 l 9122 756 l 9112 763 l 9103 772 l 9095 781 l 9088 790 l 9081 800 l 9074 810 l 9065 821 l 9053 832 l 9038 844 l 9018 857 l 8992 871 l 8961 886 l 8925 900 l 8891 912 l 8859 922 l 8831 931 l 8808 938 l 8790 944 l 8776 948 l 8765 951 l 8757 954 l 8750 956 l 8743 958 l 8734 960 l 8723 962 l 8707 965 l 8687 967 l 8661 970 l 8629 972 l 8591 974 l 8550 975 l 8509 974 l 8471 972 l 8439 970 l 8413 967 l 8393 965 l 8377 962 l 8366 960 l 8357 958 l 8350 956 l 8343 954 l 8335 951 l 8324 948 l 8310 944 l 8292 938 l 8269 931 l 8241 922 l 8209 912 l 8175 900 l 8139 886 l 8108 871 l 8082 857 l 8062 844 l 8047 832 l 8035 821 l 8026 810 l 8019 800 l 8012 790 l 8005 781 l 7997 772 l 7988 763 l 7978 756 l 7967 750 l 7957 748 l 7950 750 l 7948 757 l 7950 767 l 7956 778 l 7963 788 l 7972 797 l 7981 805 l 7990 812 l 8000 819 l 8010 826 l 8021 835 l 8032 847 l 8044 862 l 8057 882 l 8071 908 l 8086 939 l 8100 975 l 8112 1009 l 8122 1041 l 8131 1069 l 8138 1092 l 8144 1110 l 8148 1124 l 8151 1135 l 8154 1143 l 8156 1150 l 8158 1157 l 8160 1166 l 8162 1177 l 8165 1193 l 8167 1213 l 8170 1239 l 8172 1271 l 8174 1309 l 8175 1350 l 8174 1391 l 8172 1429 l 8170 1461 l 8167 1487 l 8165 1507 l 8162 1523 l 8160 1534 l 8158 1543 l 8156 1550 l 8154 1557 l 8151 1565 l 8148 1576 l 8144 1590 l 8138 1608 l 8131 1631 l 8122 1659 l 8112 1691 l cp gs 0.80 setgray ef gr % Polyline n 8100 2925 m 8086 2961 l 8071 2992 l 8057 3018 l 8044 3038 l 8032 3053 l 8021 3065 l 8010 3074 l 8000 3081 l 7990 3088 l 7981 3095 l 7972 3103 l 7963 3112 l 7956 3122 l 7950 3133 l 7948 3143 l 7950 3150 l 7957 3152 l 7967 3150 l 7978 3144 l 7988 3137 l 7997 3128 l 8005 3119 l 8012 3110 l 8019 3100 l 8026 3090 l 8035 3079 l 8047 3068 l 8062 3056 l 8082 3043 l 8108 3029 l 8139 3014 l 8175 3000 l 8209 2988 l 8241 2978 l 8269 2969 l 8292 2962 l 8310 2956 l 8324 2952 l 8335 2949 l 8343 2946 l 8350 2944 l 8357 2942 l 8366 2940 l 8377 2938 l 8393 2935 l 8413 2933 l 8439 2930 l 8471 2928 l 8509 2926 l 8550 2925 l 8591 2926 l 8629 2928 l 8661 2930 l 8687 2933 l 8707 2935 l 8723 2938 l 8734 2940 l 8743 2942 l 8750 2944 l 8757 2946 l 8765 2949 l 8776 2952 l 8790 2956 l 8808 2962 l 8831 2969 l 8859 2978 l 8891 2988 l 8925 3000 l 8961 3014 l 8992 3029 l 9018 3043 l 9038 3056 l 9053 3068 l 9065 3079 l 9074 3090 l 9081 3100 l 9088 3110 l 9095 3119 l 9103 3128 l 9112 3137 l 9122 3144 l 9133 3150 l 9143 3152 l 9150 3150 l 9152 3143 l 9150 3133 l 9144 3122 l 9137 3112 l 9128 3103 l 9119 3095 l 9110 3088 l 9100 3081 l 9090 3074 l 9079 3065 l 9068 3053 l 9056 3038 l 9043 3018 l 9029 2992 l 9014 2961 l 9000 2925 l 8988 2891 l 8978 2859 l 8969 2831 l 8962 2808 l 8956 2790 l 8952 2776 l 8949 2765 l 8946 2757 l 8944 2750 l 8942 2743 l 8940 2734 l 8938 2723 l 8935 2707 l 8933 2687 l 8930 2661 l 8928 2629 l 8926 2591 l 8925 2550 l 8926 2509 l 8928 2471 l 8930 2439 l 8933 2413 l 8935 2393 l 8938 2377 l 8940 2366 l 8942 2357 l 8944 2350 l 8946 2343 l 8949 2335 l 8952 2324 l 8956 2310 l 8962 2292 l 8969 2269 l 8978 2241 l 8988 2209 l 9000 2175 l 9014 2139 l 9029 2108 l 9043 2082 l 9056 2062 l 9068 2047 l 9079 2035 l 9090 2026 l 9100 2019 l 9110 2012 l 9119 2005 l 9128 1997 l 9137 1988 l 9144 1978 l 9150 1967 l 9152 1957 l 9150 1950 l 9143 1948 l 9133 1950 l 9122 1956 l 9112 1963 l 9103 1972 l 9095 1981 l 9088 1990 l 9081 2000 l 9074 2010 l 9065 2021 l 9053 2032 l 9038 2044 l 9018 2057 l 8992 2071 l 8961 2086 l 8925 2100 l 8891 2112 l 8859 2122 l 8831 2131 l 8808 2138 l 8790 2144 l 8776 2148 l 8765 2151 l 8757 2154 l 8750 2156 l 8743 2158 l 8734 2160 l 8723 2162 l 8707 2165 l 8687 2167 l 8661 2170 l 8629 2172 l 8591 2174 l 8550 2175 l 8509 2174 l 8471 2172 l 8439 2170 l 8413 2167 l 8393 2165 l 8377 2162 l 8366 2160 l 8357 2158 l 8350 2156 l 8343 2154 l 8335 2151 l 8324 2148 l 8310 2144 l 8292 2138 l 8269 2131 l 8241 2122 l 8209 2112 l 8175 2100 l 8139 2086 l 8108 2071 l 8082 2057 l 8062 2044 l 8047 2032 l 8035 2021 l 8026 2010 l 8019 2000 l 8012 1990 l 8005 1981 l 7997 1972 l 7988 1963 l 7978 1956 l 7967 1950 l 7957 1948 l 7950 1950 l 7948 1957 l 7950 1967 l 7956 1978 l 7963 1988 l 7972 1997 l 7981 2005 l 7990 2012 l 8000 2019 l 8010 2026 l 8021 2035 l 8032 2047 l 8044 2062 l 8057 2082 l 8071 2108 l 8086 2139 l 8100 2175 l 8112 2209 l 8122 2241 l 8131 2269 l 8138 2292 l 8144 2310 l 8148 2324 l 8151 2335 l 8154 2343 l 8156 2350 l 8158 2357 l 8160 2366 l 8162 2377 l 8165 2393 l 8167 2413 l 8170 2439 l 8172 2471 l 8174 2509 l 8175 2550 l 8174 2591 l 8172 2629 l 8170 2661 l 8167 2687 l 8165 2707 l 8162 2723 l 8160 2734 l 8158 2743 l 8156 2750 l 8154 2757 l 8151 2765 l 8148 2776 l 8144 2790 l 8138 2808 l 8131 2831 l 8122 2859 l 8112 2891 l cp gs 0.80 setgray ef gr % Polyline n 8100 4125 m 8086 4161 l 8071 4192 l 8057 4218 l 8044 4238 l 8032 4253 l 8021 4265 l 8010 4274 l 8000 4281 l 7990 4288 l 7981 4295 l 7972 4303 l 7963 4312 l 7956 4322 l 7950 4333 l 7948 4343 l 7950 4350 l 7957 4352 l 7967 4350 l 7978 4344 l 7988 4337 l 7997 4328 l 8005 4319 l 8012 4310 l 8019 4300 l 8026 4290 l 8035 4279 l 8047 4268 l 8062 4256 l 8082 4243 l 8108 4229 l 8139 4214 l 8175 4200 l 8209 4188 l 8241 4178 l 8269 4169 l 8292 4162 l 8310 4156 l 8324 4152 l 8335 4149 l 8343 4146 l 8350 4144 l 8357 4142 l 8366 4140 l 8377 4138 l 8393 4135 l 8413 4133 l 8439 4130 l 8471 4128 l 8509 4126 l 8550 4125 l 8591 4126 l 8629 4128 l 8661 4130 l 8687 4133 l 8707 4135 l 8723 4138 l 8734 4140 l 8743 4142 l 8750 4144 l 8757 4146 l 8765 4149 l 8776 4152 l 8790 4156 l 8808 4162 l 8831 4169 l 8859 4178 l 8891 4188 l 8925 4200 l 8961 4214 l 8992 4229 l 9018 4243 l 9038 4256 l 9053 4268 l 9065 4279 l 9074 4290 l 9081 4300 l 9088 4310 l 9095 4319 l 9103 4328 l 9112 4337 l 9122 4344 l 9133 4350 l 9143 4352 l 9150 4350 l 9152 4343 l 9150 4333 l 9144 4322 l 9137 4312 l 9128 4303 l 9119 4295 l 9110 4288 l 9100 4281 l 9090 4274 l 9079 4265 l 9068 4253 l 9056 4238 l 9043 4218 l 9029 4192 l 9014 4161 l 9000 4125 l 8988 4091 l 8978 4059 l 8969 4031 l 8962 4008 l 8956 3990 l 8952 3976 l 8949 3965 l 8946 3957 l 8944 3950 l 8942 3943 l 8940 3934 l 8938 3923 l 8935 3907 l 8933 3887 l 8930 3861 l 8928 3829 l 8926 3791 l 8925 3750 l 8926 3709 l 8928 3671 l 8930 3639 l 8933 3613 l 8935 3593 l 8938 3577 l 8940 3566 l 8942 3557 l 8944 3550 l 8946 3543 l 8949 3535 l 8952 3524 l 8956 3510 l 8962 3492 l 8969 3469 l 8978 3441 l 8988 3409 l 9000 3375 l 9014 3339 l 9029 3308 l 9043 3282 l 9056 3262 l 9068 3247 l 9079 3235 l 9090 3226 l 9100 3219 l 9110 3212 l 9119 3205 l 9128 3197 l 9137 3188 l 9144 3178 l 9150 3167 l 9152 3157 l 9150 3150 l 9143 3148 l 9133 3150 l 9122 3156 l 9112 3163 l 9103 3172 l 9095 3181 l 9088 3190 l 9081 3200 l 9074 3210 l 9065 3221 l 9053 3232 l 9038 3244 l 9018 3257 l 8992 3271 l 8961 3286 l 8925 3300 l 8891 3312 l 8859 3322 l 8831 3331 l 8808 3338 l 8790 3344 l 8776 3348 l 8765 3351 l 8757 3354 l 8750 3356 l 8743 3358 l 8734 3360 l 8723 3362 l 8707 3365 l 8687 3367 l 8661 3370 l 8629 3372 l 8591 3374 l 8550 3375 l 8509 3374 l 8471 3372 l 8439 3370 l 8413 3367 l 8393 3365 l 8377 3362 l 8366 3360 l 8357 3358 l 8350 3356 l 8343 3354 l 8335 3351 l 8324 3348 l 8310 3344 l 8292 3338 l 8269 3331 l 8241 3322 l 8209 3312 l 8175 3300 l 8139 3286 l 8108 3271 l 8082 3257 l 8062 3244 l 8047 3232 l 8035 3221 l 8026 3210 l 8019 3200 l 8012 3190 l 8005 3181 l 7997 3172 l 7988 3163 l 7978 3156 l 7967 3150 l 7957 3148 l 7950 3150 l 7948 3157 l 7950 3167 l 7956 3178 l 7963 3188 l 7972 3197 l 7981 3205 l 7990 3212 l 8000 3219 l 8010 3226 l 8021 3235 l 8032 3247 l 8044 3262 l 8057 3282 l 8071 3308 l 8086 3339 l 8100 3375 l 8112 3409 l 8122 3441 l 8131 3469 l 8138 3492 l 8144 3510 l 8148 3524 l 8151 3535 l 8154 3543 l 8156 3550 l 8158 3557 l 8160 3566 l 8162 3577 l 8165 3593 l 8167 3613 l 8170 3639 l 8172 3671 l 8174 3709 l 8175 3750 l 8174 3791 l 8172 3829 l 8170 3861 l 8167 3887 l 8165 3907 l 8162 3923 l 8160 3934 l 8158 3943 l 8156 3950 l 8154 3957 l 8151 3965 l 8148 3976 l 8144 3990 l 8138 4008 l 8131 4031 l 8122 4059 l 8112 4091 l cp gs 0.80 setgray ef gr % here ends figure; % % here starts figure with depth 50 % Polyline 7.500 slw n 7950 750 m 8550 1350 l 7950 1950 l 8550 2550 l 7950 3150 l 8550 3750 l 7950 4350 l gs col0 s gr % Polyline n 9150 750 m 8550 1350 l 9150 1950 l 8550 2550 l 9150 3150 l 8550 3750 l 9150 4350 l gs col0 s gr % here ends figure; % % here starts figure with depth 20 % Polyline 7.500 slw [15 45] 45 sd n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 3600 m 1800 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 3600 m 2100 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 4200 m 1800 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 7050 m 9300 7050 l 9300 7350 l 9000 7350 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9300 7050 m 9000 7350 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 7050 m 9300 7350 l gs col0 s gr [] 0 sd % Polyline gs clippath 7620 7065 m 7680 7065 l 7680 6914 l 7650 7034 l 7620 6914 l cp eoclip n 4050 5700 m 4050 6300 l 7650 6300 l 7650 7050 l gs col0 s gr gr % arrowhead n 7620 6914 m 7650 7034 l 7680 6914 l 7620 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7020 7065 m 7080 7065 l 7080 6914 l 7050 7034 l 7020 6914 l cp eoclip n 3750 5700 m 3750 6375 l 7050 6375 l 7050 7050 l gs col0 s gr gr % arrowhead n 7020 6914 m 7050 7034 l 7080 6914 l 7020 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6420 7065 m 6480 7065 l 6480 6914 l 6450 7034 l 6420 6914 l cp eoclip n 3450 5700 m 3450 6450 l 6450 6450 l 6450 7050 l gs col0 s gr gr % arrowhead n 6420 6914 m 6450 7034 l 6480 6914 l 6420 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5820 7065 m 5880 7065 l 5880 6914 l 5850 7034 l 5820 6914 l cp eoclip n 3150 5700 m 3150 6525 l 5850 6525 l 5850 7050 l gs col0 s gr gr % arrowhead n 5820 6914 m 5850 7034 l 5880 6914 l 5820 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5520 7065 m 5580 7065 l 5580 6914 l 5550 7034 l 5520 6914 l cp eoclip n 2850 5700 m 2850 6600 l 5550 6600 l 5550 7050 l gs col0 s gr gr % arrowhead n 5520 6914 m 5550 7034 l 5580 6914 l 5520 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4320 7065 m 4380 7065 l 4380 6914 l 4350 7034 l 4320 6914 l cp eoclip n 2550 5700 m 2550 6675 l 4350 6675 l 4350 7050 l gs col0 s gr gr % arrowhead n 4320 6914 m 4350 7034 l 4380 6914 l 4320 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3120 7065 m 3180 7065 l 3180 6914 l 3150 7034 l 3120 6914 l cp eoclip n 2250 5700 m 2250 6750 l 3150 6750 l 3150 7050 l gs col0 s gr gr % arrowhead n 3120 6914 m 3150 7034 l 3180 6914 l 3120 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7920 7065 m 7980 7065 l 7980 6914 l 7950 7034 l 7920 6914 l cp eoclip n 4350 5700 m 4350 6225 l 7950 6225 l 7950 7050 l gs col0 s gr gr % arrowhead n 7920 6914 m 7950 7034 l 7980 6914 l 7920 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8220 7065 m 8280 7065 l 8280 6914 l 8250 7034 l 8220 6914 l cp eoclip n 4650 5700 m 4650 6150 l 8250 6150 l 8250 7050 l gs col0 s gr gr % arrowhead n 8220 6914 m 8250 7034 l 8280 6914 l 8220 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8520 7065 m 8580 7065 l 8580 6914 l 8550 7034 l 8520 6914 l cp eoclip n 4950 5700 m 4950 6075 l 8550 6075 l 8550 7050 l gs col0 s gr gr % arrowhead n 8520 6914 m 8550 7034 l 8580 6914 l 8520 6914 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9120 7065 m 9180 7065 l 9180 6914 l 9150 7034 l 9120 6914 l cp eoclip n 5250 5700 m 5250 6000 l 9150 6000 l 9150 7050 l gs col0 s gr gr % arrowhead n 9120 6914 m 9150 7034 l 9180 6914 l 9120 6914 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 600 3225 m gs 1 -1 sc (edgenbr) col0 sh gr /Courier ff 240.00 scf sf 600 3825 m gs 1 -1 sc (vlbltab) col0 sh gr /Courier ff 240.00 scf sf 600 5625 m gs 1 -1 sc (verttab) col0 sh gr /Courier ff 240.00 scf sf 600 4425 m gs 1 -1 sc (velotab) col0 sh gr /Courier ff 240.00 scf sf 600 5025 m gs 1 -1 sc (vendtab) col0 sh gr /Courier ff 240.00 scf sf 600 2625 m gs 1 -1 sc (vnodnbr) col0 sh gr /Courier ff 240.00 scf sf 600 825 m gs 1 -1 sc (velmbas) col0 sh gr /Courier ff 240.00 scf sf 600 1425 m gs 1 -1 sc (vnodbas) col0 sh gr /Courier ff 240.00 scf sf 600 2025 m gs 1 -1 sc (velmnbr) col0 sh gr /Courier ff 240.00 scf sf 600 7275 m gs 1 -1 sc (edgetab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 3240 m gs 1 -1 sc (24) col0 sh gr % Polyline n 1800 5400 m 2100 5400 l 2100 5700 l 1800 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 7050 m 2100 7050 l 2100 7350 l 1800 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 7050 m 2400 7050 l 2400 7350 l 2100 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2125 7290 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2400 7050 m 2700 7050 l 2700 7350 l 2400 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 7050 m 3000 7050 l 3000 7350 l 2700 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 7050 m 3300 7050 l 3300 7350 l 3000 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 7290 m gs 1 -1 sc (10) col0 sh gr % Polyline n 3300 7050 m 3600 7050 l 3600 7350 l 3300 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 7050 m 3900 7050 l 3900 7350 l 3600 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 7290 m gs 1 -1 sc (11) col0 sh gr % Polyline n 3900 7050 m 4200 7050 l 4200 7350 l 3900 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 7050 m 5100 7050 l 5100 7350 l 4800 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 7050 m 5400 7050 l 5400 7350 l 5100 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 7050 m 4500 7050 l 4500 7350 l 4200 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 7050 m 4800 7050 l 4800 7350 l 4500 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 7050 m 5700 7050 l 5700 7350 l 5400 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 7050 m 6000 7050 l 6000 7350 l 5700 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 7050 m 6300 7050 l 6300 7350 l 6000 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 7050 m 6900 7050 l 6900 7350 l 6600 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 7050 m 6600 7050 l 6600 7350 l 6300 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 7050 m 7200 7050 l 7200 7350 l 6900 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 7050 m 7500 7050 l 7500 7350 l 7200 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 7050 m 7800 7050 l 7800 7350 l 7500 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 7050 m 8100 7050 l 8100 7350 l 7800 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 7050 m 8400 7050 l 8400 7350 l 8100 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 7050 m 8700 7050 l 8700 7350 l 8400 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 7050 m 9000 7050 l 9000 7350 l 8700 7350 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 5400 m 2400 5400 l 2400 5700 l 2100 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2200 5640 m gs 1 -1 sc (5) col0 sh gr % Polyline n 2400 5400 m 2700 5400 l 2700 5700 l 2400 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2500 5640 m gs 1 -1 sc (9) col0 sh gr % Polyline n 5100 5400 m 5400 5400 l 5400 5700 l 5100 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 5640 m gs 1 -1 sc (25) col0 sh gr % Polyline n 2700 5400 m 3000 5400 l 3000 5700 l 2700 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 5640 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3000 5400 m 3300 5400 l 3300 5700 l 3000 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 5640 m gs 1 -1 sc (14) col0 sh gr % Polyline n 3300 5400 m 3600 5400 l 3600 5700 l 3300 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 5640 m gs 1 -1 sc (16) col0 sh gr % Polyline n 3600 5400 m 3900 5400 l 3900 5700 l 3600 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 5640 m gs 1 -1 sc (18) col0 sh gr % Polyline n 3900 5400 m 4200 5400 l 4200 5700 l 3900 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3925 5640 m gs 1 -1 sc (20) col0 sh gr % Polyline n 4200 5400 m 4500 5400 l 4500 5700 l 4200 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4225 5640 m gs 1 -1 sc (21) col0 sh gr % Polyline n 4500 5400 m 4800 5400 l 4800 5700 l 4500 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4525 5640 m gs 1 -1 sc (22) col0 sh gr % Polyline n 4800 5400 m 5100 5400 l 5100 5700 l 4800 5700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 5640 m gs 1 -1 sc (23) col0 sh gr % Polyline gs clippath 2070 5415 m 2130 5415 l 2130 5264 l 2100 5384 l 2070 5264 l cp eoclip n 1800 4950 m 2100 4950 l 2100 5400 l gs col0 s gr gr % arrowhead n 2070 5264 m 2100 5384 l 2130 5264 l 2070 5264 l cp gs 0.00 setgray ef gr col0 s % Polyline n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 1920 7065 m 1980 7065 l 1980 6914 l 1950 7034 l 1920 6914 l cp eoclip n 1950 5700 m 1950 7050 l gs col0 s gr gr % arrowhead n 1920 6914 m 1950 7034 l 1980 6914 l 1920 6914 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 7950 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9150 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8550 1350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7950 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9150 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8550 2550 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7950 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9150 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8550 3750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7950 4350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9150 4350 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 1900 5640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 1440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 2040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 2640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 9100 3240 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 3840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 7290 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 7290 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 7290 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 7290 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 7290 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 7290 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 7290 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 7290 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 7290 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 7290 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 7290 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 7290 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 7290 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 7290 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 7290 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 1440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2640 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2040 m gs 1 -1 sc (3) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 9020 840 m gs 1 -1 sc (10) col0 sh gr /Times-Roman ff 240.00 scf sf 9020 2040 m gs 1 -1 sc (11) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 3240 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 4440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 9100 4440 m gs 1 -1 sc (9) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_orb.fig0000644000302600021200000003144513303015264020200 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 2400 2100 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 1\001 -6 6 2100 2400 2400 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 2400 2400 2400 2400 2700 2100 2700 2100 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2200 2640 2\001 -6 6 2400 2400 2700 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 2400 2700 2400 2700 2700 2400 2700 2400 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2500 2640 4\001 -6 6 3300 2400 3600 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 2400 3600 2400 3600 2700 3300 2700 3300 2400 4 0 0 10 0 0 16 0.0000 4 150 120 3400 2640 8\001 -6 6 4200 2400 4500 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 2400 4500 2400 4500 2700 4200 2700 4200 2400 -6 6 2700 2400 3000 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 2400 3000 2400 3000 2700 2700 2700 2700 2400 4 0 0 10 0 0 16 0.0000 4 150 120 2800 2640 5\001 -6 6 3000 2400 3300 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 2400 3300 2400 3300 2700 3000 2700 3000 2400 4 0 0 10 0 0 16 0.0000 4 165 120 3100 2640 6\001 -6 6 1800 1800 2100 2100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 4 0 0 10 0 0 16 0.0000 4 150 120 1900 2040 7\001 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 10 0 0 16 0.0000 4 150 120 1900 840 2\001 -6 6 2100 600 2400 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 600 2400 600 2400 900 2100 900 2100 600 4 0 0 10 0 0 16 0.0000 4 150 120 2200 840 3\001 -6 6 3000 600 3300 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 600 3300 600 3300 900 3000 900 3000 600 4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 4\001 -6 6 3600 600 3900 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 600 3900 600 3900 900 3600 900 3600 600 4 0 0 10 0 0 16 0.0000 4 150 120 3700 840 8\001 -6 6 3900 600 4200 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 600 4200 600 4200 900 3900 900 3900 600 4 0 0 10 0 0 16 0.0000 4 150 120 4000 840 7\001 -6 6 4200 600 4500 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 600 4500 600 4500 900 4200 900 4200 600 4 0 0 10 0 0 16 0.0000 4 165 120 4300 840 1\001 -6 6 2700 600 3000 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 600 3000 600 3000 900 2700 900 2700 600 4 0 0 10 0 0 16 0.0000 4 165 120 2800 840 6\001 -6 6 2100 1200 2400 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 1200 2400 1200 2400 1500 2100 1500 2100 1200 4 0 0 10 0 0 16 0.0000 4 165 120 2200 1440 1\001 -6 6 2400 1200 2700 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 1200 2700 1200 2700 1500 2400 1500 2400 1200 4 0 0 10 0 0 16 0.0000 4 150 120 2500 1440 2\001 -6 6 3300 1200 3600 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 1200 3600 1200 3600 1500 3300 1500 3300 1200 4 0 0 10 0 0 16 0.0000 4 150 120 3400 1440 4\001 -6 6 2700 1200 3000 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 1200 3000 1200 3000 1500 2700 1500 2700 1200 4 0 0 10 0 0 16 0.0000 4 150 120 2800 1440 5\001 -6 6 3900 2400 4200 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 2400 4200 2400 4200 2700 3900 2700 3900 2400 4 0 0 15 0 0 16 0.0000 4 165 240 3925 2640 13\001 -6 6 4500 2400 4800 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 2400 4800 2400 4800 2700 4500 2700 4500 2400 -6 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 3\001 -6 6 2100 3000 2400 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 4 0 0 10 0 0 16 0.0000 4 150 120 2200 3240 3\001 -6 6 2400 3000 2700 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 4 0 0 10 0 0 16 0.0000 4 150 120 2500 3240 7\001 -6 6 3000 3000 3300 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 6\001 -6 6 3300 3000 3600 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 4 0 0 10 0 0 16 0.0000 4 150 120 3400 3240 7\001 -6 6 2700 3000 3000 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 6\001 -6 6 4800 600 5100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 600 5100 600 5100 900 4800 900 4800 600 4 0 0 10 0 0 16 0.0000 4 150 120 4900 840 5\001 -6 6 5100 600 5400 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 600 5400 600 5400 900 5100 900 5100 600 4 0 0 10 0 0 16 0.0000 4 150 120 5200 840 9\001 -6 6 4800 2400 5100 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 2400 5100 2400 5100 2700 4800 2700 4800 2400 -6 6 5100 2400 5400 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 2400 5400 2400 5400 2700 5100 2700 5100 2400 -6 6 5400 2400 5700 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 2400 5700 2400 5700 2700 5400 2700 5400 2400 -6 6 12150 750 12450 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12300 900 150 150 12300 900 12450 900 4 0 0 8 0 0 16 0.0000 4 165 240 12170 990 10\001 -6 6 11100 1786 11414 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 1943 150 150 11257 1943 11407 1943 4 0 0 8 0 0 16 0.0000 4 165 240 11127 2033 11\001 -6 6 11100 2836 11414 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11257 2993 150 150 11257 2993 11407 2993 4 0 0 8 0 0 16 0.0000 4 165 240 11127 3083 12\001 -6 6 10050 2850 10350 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 3000 150 150 10200 3000 10350 3000 4 0 0 10 0 0 16 0.0000 4 165 120 10150 3090 1\001 -6 6 10050 750 10350 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10200 900 150 150 10200 900 10350 900 4 0 0 10 0 0 16 0.0000 4 150 120 10150 990 2\001 -6 6 11100 750 11400 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 11250 900 150 150 11250 900 11400 900 4 0 0 10 0 0 16 0.0000 4 150 120 11200 990 3\001 -6 6 13125 2836 13439 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 2993 150 150 13282 2993 13432 2993 4 0 0 10 0 0 16 0.0000 4 150 120 13232 3083 9\001 -6 6 12150 1786 12464 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 1943 150 150 12307 1943 12457 1943 4 0 0 10 0 0 16 0.0000 4 150 120 12257 2033 8\001 -6 6 13125 1786 13439 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 1943 150 150 13282 1943 13432 1943 4 0 0 10 0 0 16 0.0000 4 150 120 13232 2033 7\001 -6 6 13125 736 13439 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 13282 893 150 150 13282 893 13432 893 4 0 0 10 0 0 16 0.0000 4 165 120 13232 983 6\001 -6 6 12150 2836 12464 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 12307 2993 150 150 12307 2993 12457 2993 4 0 0 10 0 0 16 0.0000 4 150 120 12257 3083 5\001 -6 6 10050 1786 10364 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 10207 1943 150 150 10207 1943 10357 1943 4 0 0 10 0 0 16 0.0000 4 150 120 10157 2033 4\001 -6 6 6225 750 6525 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 900 150 150 6375 900 6525 900 4 0 0 10 0 0 16 0.0000 4 165 120 6325 990 1\001 -6 6 6218 1793 6532 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 1950 150 150 6375 1950 6525 1950 4 0 0 10 0 0 16 0.0000 4 150 120 6325 2040 5\001 -6 6 7275 750 7575 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 900 150 150 7425 900 7575 900 4 0 0 10 0 0 16 0.0000 4 150 120 7375 990 2\001 -6 6 7268 1793 7582 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 1950 150 150 7425 1950 7575 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7375 2040 6\001 -6 6 6218 2843 6532 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6375 3000 150 150 6375 3000 6525 3000 4 0 0 10 0 0 16 0.0000 4 150 120 6325 3090 9\001 -6 6 9293 743 9607 1057 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 900 150 150 9450 900 9600 900 4 0 0 10 0 0 16 0.0000 4 150 120 9400 990 4\001 -6 6 9293 1793 9607 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 1950 150 150 9450 1950 9600 1950 4 0 0 10 0 0 16 0.0000 4 150 120 9400 2040 8\001 -6 6 8325 750 8625 1050 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 900 150 150 8475 900 8625 900 4 0 0 10 0 0 16 0.0000 4 150 120 8425 990 3\001 -6 6 8318 1793 8632 2107 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 1950 150 150 8475 1950 8625 1950 4 0 0 10 0 0 16 0.0000 4 150 120 8425 2040 7\001 -6 6 7275 2850 7575 3150 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 3000 150 150 7425 3000 7575 3000 4 0 0 8 0 0 16 0.0000 4 165 240 7295 3090 10\001 -6 6 8318 2843 8632 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8475 3000 150 150 8475 3000 8625 3000 4 0 0 8 0 0 16 0.0000 4 165 240 8345 3090 11\001 -6 6 9293 2843 9607 3157 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9450 3000 150 150 9450 3000 9600 3000 4 0 0 8 0 0 16 0.0000 4 165 240 9320 3090 12\001 -6 6 2400 600 2700 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 600 2700 600 2700 900 2400 900 2400 600 4 0 0 15 0 0 16 0.0000 4 165 240 2425 840 10\001 -6 6 3300 600 3600 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 600 3600 600 3600 900 3300 900 3300 600 4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 11\001 -6 6 4500 600 4800 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 600 4800 600 4800 900 4500 900 4500 600 4 0 0 15 0 0 16 0.0000 4 165 240 4525 840 12\001 -6 6 4500 1200 4800 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 1200 4800 1200 4800 1500 4500 1500 4500 1200 4 0 0 10 0 0 16 0.0000 4 150 120 4600 1440 3\001 -6 6 4800 1200 5100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 1200 5100 1200 5100 1500 4800 1500 4800 1200 4 0 0 10 0 0 16 0.0000 4 165 120 4900 1440 6\001 -6 6 3900 1200 4200 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 1200 4200 1200 4200 1500 3900 1500 3900 1200 4 0 0 10 0 0 16 0.0000 4 150 120 4000 1440 7\001 -6 6 3600 1200 3900 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 1200 3900 1200 3900 1500 3600 1500 3600 1200 4 0 0 10 0 0 16 0.0000 4 150 120 3700 1440 8\001 -6 6 1800 1200 2100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 4 0 0 10 0 0 16 0.0000 4 150 120 1900 1440 9\001 -6 6 5100 1200 5400 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 1200 5400 1200 5400 1500 5100 1500 5100 1200 4 0 0 15 0 0 16 0.0000 4 165 240 5125 1440 10\001 -6 6 3000 1200 3300 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 1200 3300 1200 3300 1500 3000 1500 3000 1200 4 0 0 15 0 0 16 0.0000 4 165 240 3025 1440 11\001 -6 6 4200 1200 4500 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 1200 4500 1200 4500 1500 4200 1500 4200 1200 4 0 0 15 0 0 16 0.0000 4 165 240 4225 1440 12\001 -6 6 3600 2400 3900 2700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 2400 3900 2400 3900 2700 3600 2700 3600 2400 4 0 0 15 0 0 16 0.0000 4 165 240 3625 2640 10\001 -6 6 3600 3000 3900 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 4 0 0 15 0 0 16 0.0000 4 165 195 3625 3240 -1\001 -6 6 3900 3000 4200 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 3000 4200 3000 4200 3300 3900 3300 3900 3000 -6 6 4200 3000 4500 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 3000 4500 3000 4500 3300 4200 3300 4200 3000 -6 6 4500 3000 4800 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 3000 4800 3000 4800 3300 4500 3300 4500 3000 -6 6 4800 3000 5100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 3000 5100 3000 5100 3300 4800 3300 4800 3000 -6 6 5100 3000 5400 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 3000 5400 3000 5400 3300 5100 3300 5100 3000 -6 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 10425 2175 10425 1725 9975 1725 9975 2175 10425 2175 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 10200 900 10200 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 10200 900 13275 900 13275 3000 10200 3000 10200 1950 13275 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 11250 900 11250 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 12300 900 12300 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 6375 900 6375 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 6 6300 900 9450 900 9450 3000 6375 3000 6375 1950 9450 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 7425 900 7425 3000 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 8475 900 8475 3000 3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 16 11025 3150 11100 3225 11400 3225 11475 3150 11475 1800 11550 1725 12450 1125 12525 1050 12525 750 12450 675 12150 675 12075 750 12075 1050 12000 1125 11100 1725 11025 1800 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 3 1 0 1 0 7 50 -1 -1 0.000 0 0 0 12 12150 1725 12450 1725 12525 1800 13425 2775 13500 2850 13500 3150 13425 3225 13125 3225 13050 3150 12150 2175 12075 2100 12075 1800 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 4 0 0 20 0 12 14 0.0000 4 195 945 600 1425 peritab\001 4 0 0 20 0 12 14 0.0000 4 150 945 600 2025 cblknbr\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 2625 rangtab\001 4 0 0 20 0 12 14 0.0000 4 150 945 600 3225 treetab\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 825 permtab\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 3150 1\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 1050 2\001 4 0 0 10 0 2 16 0.0000 4 150 120 9900 2325 3\001 4 0 0 10 0 2 16 0.0000 4 150 120 12000 3300 4\001 4 0 0 10 0 2 16 0.0000 4 150 120 12975 1200 5\001 4 0 0 10 0 2 16 0.0000 4 165 120 11925 2250 6\001 4 0 0 10 0 2 16 0.0000 4 150 120 10950 1725 7\001 scotch_6.0.9/doc/src/scotch/m42_a1.pdf0000644000302600021200000001052413303015264017551 0ustar pelegrinpelegrin%PDF-1.4 %Çì¢ 5 0 obj <> stream xœÕV=Oä0íý+¦ÜE"g;vì´H§•N×—Q­`)Ø‚½‚¿žO›ˆ cÏ›7O3“ðS¼ÏW÷ã±ÀåŸópq)D¾¸Š¹Ä)d˜×0ÕŒëa^ g7§æNUöã…§aÐl? fáA£a”—”XLÏÙ½Þ¹4eøl:O{Öùæþ:ò‹>±9ŸâID¡Ø‘†ƒ"*ÅC95™¨49øÏ¸cõü2±œX]ì7[›£ÍÀơ߽մ´ ¸Ñ+^Í€ïÞf\‘gX3ÆÝ‰²“Dzش“,'[< û:iÀëI7ûdq€x÷e(ï8)V³«£âQõYÞØˆPç.¯z“Wj—W–O –G¦¦“Ò<"Oèy;xÕÃÅÛ¯:+ž^&c3”€o$ÖËD²¥X/ªi´›ACè† .¹L4 ;òbºzw.Ës1bsÒ˜s×s41û®3¦:„ð‚¸Ù–¤‚r˜‹uZv”1¤Œåü2­œ<> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœcd`ab`ddä ÉÌM-Ö ÊÏMÌñõ~H3þaú!ËÜ]û£à§«,ƒoßÞr< Ý<ÌÝ<, ~¦}Ÿ!ø½—ÿ{› #£y`òbРpMmmçü‚Ê¢ÌôŒ#3…¤J¨Œ‚Kjqfzž‚Q–š“_›šWâ—™›TZ¬¶[Á/ßRÁG!(5½4'±Sa2yv100°›00213ˆ0ˆ2°ƒ€…!…aÃÆÆ=ßûø~tÔ.ý)´”qñëï3^3ŸôÓB4¼;¹&=Û/4é7g÷o¾n¥U¿Ù¶mˆ>Px¢{O÷æYëWŸ8¸ù;W÷wAŽï‰ß‹ËuŠÞßñ›õwêïÔxSÓøoßS¾gîøÎôPh~÷üŸó¿g>dþÎ%ö}Å,6›žê©Ý»9~¼aoîýíaÀZ˾lÚÜIsú§vK.˜R›%ÿ'’½Û¯ªÖ¶ƒ¤ûúEW¿?{Èü#ÿ»¬hÝ„´ º¦¸nÉßÍlßm¾»77¿Æ½ì»ùßÕOÿ°/ô}ÇM»âÂ/~ä|¯UýÏöûÜŸ@Vïïk[³ ¸ñÝú#ÛoÓ¢¿[ؾ·|ÍÊW>ÿGØüï!óÙVr=à^9™‡çÁ\^þ3>. endstream endobj 13 0 obj <>stream 2015-03-18T11:58:08+01:00 2015-03-18T11:58:08+01:00 fig2dev Version 3.2 Patchlevel 5d m42_a1.figpelegrin@brol (Francois PELLEGRINI) endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000000891 00000 n 0000003770 00000 n 0000000832 00000 n 0000000681 00000 n 0000000015 00000 n 0000000662 00000 n 0000000956 00000 n 0000001057 00000 n 0000001231 00000 n 0000000997 00000 n 0000001027 00000 n 0000001470 00000 n 0000002236 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<2A347CFE5E0A7D9D9988093F703BE023><2A347CFE5E0A7D9D9988093F703BE023>] >> startxref 4003 %%EOF scotch_6.0.9/doc/src/scotch/s_f_synp.fig0000644000302600021200000003066613303015264020413 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Inches Letter 100.00 Single -2 1200 2 6 6525 4725 7875 6375 1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 7200 4950 600 150 7200 4950 7800 4950 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 7200 6150 600 150 7200 6150 7800 6300 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 7800 4950 7800 6150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 6600 4950 6600 6150 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 7800 6150 7800 5850 6600 5850 6600 6150 7800 6150 4 0 -1 7 0 0 16 0.0000 4 195 765 6855 5400 Source\001 4 0 -1 7 0 0 16 0.0000 4 255 1050 6735 5700 graph file\001 4 0 -1 7 0 12 16 0.0000 4 240 660 6900 6075 .grf\001 -6 6 375 7275 2025 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 1950 7800 1950 7350 450 7350 450 7800 1950 7800 4 0 -1 7 0 14 16 0.0000 4 180 660 900 7650 mtst\001 -6 6 11025 4800 12375 6375 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 11700 4950 600 150 11700 4950 12300 5100 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 11700 6150 600 150 11700 6150 12300 6300 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 12300 6150 12300 5850 11100 5850 11100 6150 12300 6150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 11100 4950 11100 6150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 12300 4950 12300 6150 4 0 -1 7 0 12 16 0.0000 4 225 660 11400 6075 .tgt\001 4 0 -1 7 0 0 16 0.0000 4 255 1155 11175 5550 Target file\001 -6 6 7500 7275 9150 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 9075 7800 9075 7350 7575 7350 7575 7800 9075 7800 4 0 -1 7 0 14 16 0.0000 4 240 660 8025 7650 gtst\001 -6 6 12000 7275 13650 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 13575 7800 13575 7350 12075 7350 12075 7800 13575 7800 4 0 -1 7 0 14 16 0.0000 4 180 660 12525 7650 atst\001 -6 6 2025 4725 3375 6375 1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 2700 4950 600 150 2700 4950 3300 4950 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 2700 6150 600 150 2700 6150 3300 6300 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 3300 6150 3300 5850 2100 5850 2100 6150 3300 6150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 3300 4950 3300 6150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 2100 4950 2100 6150 4 0 -1 7 0 12 16 0.0000 4 180 660 2400 6075 .msh\001 4 0 -1 7 0 0 16 0.0000 4 195 765 2355 5400 Source\001 4 0 -1 7 0 0 16 0.0000 4 195 1020 2250 5700 mesh file\001 -6 6 2625 7275 4275 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 4200 7800 4200 7350 2700 7350 2700 7800 4200 7800 4 0 -1 7 0 14 16 0.0000 4 180 660 3150 7650 mord\001 -6 6 5475 -1575 6825 75 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 6150 -1350 600 150 6150 -1350 6750 -1200 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 6150 -150 600 150 6150 -150 6750 0 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 6750 -1350 6750 -150 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 6750 -150 6750 -450 5550 -450 5550 -150 6750 -150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 5550 -1350 5550 -150 4 0 -1 7 0 0 16 0.0000 4 195 960 5724 -720 External\001 4 0 -1 7 0 0 16 0.0000 4 255 1050 5670 -420 graph file\001 -6 6 5325 0 6975 1125 6 5325 525 6975 1125 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 6900 1050 6900 600 5400 600 5400 1050 6900 1050 4 0 -1 7 0 14 16 0.0000 4 195 495 5925 900 gcv\001 -6 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6150 0 6150 600 -6 6 3075 -1575 4425 75 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 3750 -1350 600 150 3750 -1350 4350 -1200 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 3750 -150 600 150 3750 -150 4350 0 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 4350 -1350 4350 -150 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 3150 -1350 3150 -150 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 4350 -150 4350 -450 3150 -450 3150 -150 4350 -150 4 0 -1 7 0 0 16 0.0000 4 195 960 3324 -720 External\001 4 0 -1 7 0 0 16 0.0000 4 195 1020 3300 -420 mesh file\001 -6 6 2925 1875 4575 2475 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 4500 2400 4500 1950 3000 1950 3000 2400 4500 2400 4 0 -1 7 0 14 16 0.0000 4 240 825 3375 2250 mmk_*\001 -6 6 5325 1875 6975 2475 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 6900 2400 6900 1950 5400 1950 5400 2400 6900 2400 4 0 -1 7 0 14 16 0.0000 4 240 825 5775 2250 gmk_*\001 -6 6 2925 525 4575 1125 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 4500 1050 4500 600 3000 600 3000 1050 4500 1050 4 0 -1 7 0 14 16 0.0000 4 135 495 3525 900 mcv\001 -6 6 4275 2925 5625 4575 1 1 0 2 -1 -1 10 0 -1 0.000 1 0.0000 4950 3150 600 150 4950 3150 5550 3150 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4950 4350 600 150 4950 4350 5550 4500 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 5550 4350 5550 4050 4350 4050 4350 4350 5550 4350 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 5550 3150 5550 4350 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 4350 3150 4350 4350 4 0 -1 7 0 12 16 0.0000 4 180 660 4650 4275 .xyz\001 4 0 -1 7 0 0 16 0.0000 4 255 1125 4425 3600 Geometry\001 4 0 -1 7 0 0 16 0.0000 4 195 360 4800 3900 file\001 -6 6 4875 7275 6525 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 6450 7800 6450 7350 4950 7350 4950 7800 6450 7800 4 0 -1 7 0 14 16 0.0000 4 240 660 5400 7650 gord\001 -6 6 4125 5250 5775 5850 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 5700 5775 5700 5325 4200 5325 4200 5775 5700 5775 4 0 -1 7 0 14 16 0.0000 4 240 1155 4425 5625 gmk_msh\001 -6 6 3900 8475 5250 10125 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4575 8700 600 150 4575 8700 5175 8850 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 4575 9900 600 150 4575 9900 5175 10050 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 5175 9900 5175 9600 3975 9600 3975 9900 5175 9900 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 5175 8700 5175 9900 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 3975 8700 3975 9900 4 0 -1 7 0 0 16 0.0000 4 195 360 4425 9450 file\001 4 0 -1 7 0 12 16 0.0000 4 180 660 4275 9825 .ord\001 4 0 -1 7 0 0 16 0.0000 4 255 1020 4110 9150 Ordering\001 -6 6 9900 8550 11250 10125 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 10575 8700 600 150 10575 8700 11175 8850 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 10575 9900 600 150 10575 9900 11175 10050 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 11175 9900 11175 9600 9975 9600 9975 9900 11175 9900 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 9975 8700 9975 9900 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 11175 8700 11175 9900 4 0 -1 7 0 0 16 0.0000 4 195 360 10425 9450 file\001 4 0 -1 7 0 0 16 0.0000 4 255 975 10125 9150 Mapping\001 4 0 -1 7 0 12 16 0.0000 4 180 660 10275 9825 .map\001 -6 6 9975 11025 11625 11625 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 11550 11550 11550 11100 10050 11100 10050 11550 11550 11550 4 0 -1 7 0 14 16 0.0000 4 240 825 10350 11400 gmtst\001 -6 6 7425 12300 8775 13875 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 8100 12450 600 150 8100 12450 8700 12600 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 8100 13650 600 150 8100 13650 8700 13800 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 8700 12450 8700 13650 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 8700 13650 8700 13350 7500 13350 7500 13650 8700 13650 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 7500 12450 7500 13650 4 0 -1 7 0 0 16 0.0000 4 195 360 7950 13200 file\001 4 0 -1 7 0 0 16 0.0000 4 255 1020 7650 12900 Graphics\001 -6 6 7275 11025 8925 11625 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 8850 11550 8850 11100 7350 11100 7350 11550 8850 11550 4 0 -1 7 0 14 16 0.0000 4 240 660 7725 11400 gout\001 -6 6 450 12150 2475 13800 6 525 12225 2175 13650 6 525 12225 1125 12825 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 825 12675 225 75 825 12675 1050 12750 1 1 0 2 -1 -1 10 0 -1 0.000 1 -0.0000 825 12315 225 75 825 12315 1050 12390 2 2 0 0 -1 -1 9 0 0 0.000 0 0 0 0 0 5 1050 12525 1050 12675 600 12675 600 12525 1050 12525 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 600 12300 600 12675 2 1 0 2 -1 -1 8 0 -1 0.000 0 0 -1 0 0 2 1050 12300 1050 12675 -6 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 600 13575 1050 13575 2 2 0 2 -1 -1 5 0 -1 0.000 0 0 0 0 0 5 1050 13125 1050 12975 600 12975 600 13125 1050 13125 4 0 -1 5 0 -1 16 0.0000 4 195 1065 1275 13650 Data flow\001 4 0 -1 8 0 -1 16 0.0000 4 195 435 1275 12600 File\001 4 0 -1 10 0 -1 16 0.0000 4 255 960 1275 13125 Program\001 -6 2 2 0 1 -1 -1 6 0 -1 0.000 0 0 7 0 0 5 2475 12150 2475 13800 450 13800 450 12150 2475 12150 -6 6 8625 5250 10275 5850 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 10200 5775 10200 5325 8700 5325 8700 5775 10200 5775 4 0 -1 7 0 14 16 0.0000 4 240 1155 8925 5625 amk_grf\001 -6 6 4050 11025 5700 11625 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 5625 11550 5625 11100 4125 11100 4125 11550 5625 11550 4 0 -1 7 0 14 16 0.0000 4 240 825 4425 11400 gotst\001 -6 6 12825 5250 14475 5850 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 14400 5775 14400 5325 12900 5325 12900 5775 14400 5775 4 0 -1 7 0 14 16 0.0000 4 240 660 13350 5625 acpl\001 -6 6 10725 3525 12375 4950 6 10725 3525 12375 4125 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 12300 4050 12300 3600 10800 3600 10800 4050 12300 4050 4 0 -1 7 0 14 16 0.0000 4 240 825 11175 3900 amk_*\001 -6 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 11550 4050 11550 4950 -6 6 9750 7275 11400 7875 2 2 0 2 -1 -1 7 0 -1 0.000 0 0 7 0 0 5 11325 7800 11325 7350 9825 7350 9825 7800 11325 7800 4 0 -1 7 0 14 16 0.0000 4 195 660 10275 7650 gmap\001 -6 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 11850 6300 11850 6600 12825 6975 12825 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 7725 6225 7725 6450 10275 6975 10275 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 11250 6225 11250 6600 10875 6975 10875 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 7125 6300 7125 10050 8100 10350 8100 11100 2 1 0 1 -1 -1 6 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 11550 6300 11550 10500 11175 10725 11175 11100 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 7575 6300 7575 6675 8325 7125 8325 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 10575 7800 10575 8700 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 2925 6300 2925 6525 3450 7050 3450 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 2475 6300 2475 6525 1200 7050 1200 7350 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 6450 2400 6450 2550 7050 2850 7050 4950 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 6450 1050 6450 1200 7350 1650 7350 4950 2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5850 1050 5850 1200 5100 1575 5100 3150 2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5850 2400 5850 2550 5325 2850 5325 3150 2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 4050 1050 4050 1200 4800 1575 4800 3150 2 1 1 1 -1 -1 5 0 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 4050 2400 4050 2550 4575 2850 4575 3150 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 3450 2400 3450 2550 2850 2850 2850 4950 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 3450 1050 3450 1200 2550 1650 2550 4950 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 3750 0 3750 600 2 1 0 1 -1 -1 9 0 -1 0.000 0 0 -1 1 0 8 0 0 1.00 60.00 120.00 4950 4500 4950 4725 6150 5175 6150 6450 6675 6825 6675 10350 7800 10725 7800 11100 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 6675 6225 6675 6450 5700 7050 5700 7350 2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 6300 5400 6000 5700 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5700 7800 5700 7950 4725 8325 4725 8700 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 3300 5550 4200 5550 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 5700 5550 6600 5550 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 3450 7800 3450 7950 4425 8325 4425 8700 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 6900 6300 6900 10050 5175 10725 5175 11100 2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 6600 6600 6000 6675 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 10800 10050 10800 11100 2 1 0 1 -1 -1 10 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 10350 10050 10350 10275 8475 10725 8475 11100 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 8100 11550 8100 12450 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4575 10050 4575 11100 2 1 0 1 -1 -1 3 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 7350 6300 7350 9750 10425 10725 10425 11100 2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 9600 10275 9600 10575 2 1 0 4 7 7 8 -1 20 0.000 0 0 -1 0 0 2 6825 10275 6450 9975 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7800 5550 8700 5550 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 10200 5550 11100 5550 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 12145 6234 12150 6450 13650 6450 13650 5775 2 1 0 1 -1 -1 5 0 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 13650 5325 13650 4500 11850 4500 11850 4950 scotch_6.0.9/doc/src/scotch/m_n.tex0000644000302600021200000001676513466077161017421 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : m_n.tex % % Sujet : Maintenance manual of % % Scotch % % Naming conventions % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Naming conventions} \label{sec-naming} All of the files of the \scotch\ project have been written using strict coding conventions, to ease maintenance and further extension by external contributors. Therefore, contributors must follow these coding conventions so as to ease the work of their followers. \subsection{Variables} \label{sec-naming-variables} Variables of the sequential \scotch\ software are commonly built from a radical and a suffix. When contextualization is required, e.g., the same kind of variable appear in two different objects, a prefix is added. In \ptscotch, a second radical is commonly used. Common radicals are: \begin{itemize} \item \texttt{vert}: vertex. \item \texttt{velo}: vertex load. \item \texttt{vnum}: vertex number, used as an index to access another vertex structure. This radical typically relates to an array that contains the vertex indices, in some original graph, corresponding to the vertices of a derived graph (e.g., an induced graph). \item \texttt{vlbl}: user-defined vertex label (at the user API level). \item \texttt{edge}: edge (i.e., arcs, in fact). \item \texttt{edlo}: edge (arc) load. \item \texttt{graf}: graph. \end{itemize} Common suffices are: \begin{itemize} \item \texttt{end}: vertex end index of an edge (e.g., \texttt{vertend}, wrt. \texttt{vertnum}). The \texttt{end} suffix is a sub-category of the \texttt{num} suffix. \item \texttt{nbr}: number of instances of objects of a given radical type (e.g., \texttt{vertnbr}, \texttt{edgenbr}). \item \texttt{num}: number (index) of some instance of an object of a given radical type. For instance, \texttt{vertnum} is the index of some (graph) vertex, that can be used to access adjacency (\texttt{verttab}) or vertex load (\texttt{velotab}) arrays. $0 \leq \mbox{\texttt{vertnum}} < \mbox{\texttt{vertnbr}}$ if the vertex index is ``not based'', and $\mbox{\texttt{baseval}} \leq \mbox{\texttt{vertnum}} < \mbox{\texttt{vertnnd}}$ if the index is ``based'', that it, counted starting from \texttt{baseval}. For number basing and array indexing, see Section~\ref{sec-basing}. \item \texttt{ptr} : pointer to an instance of an item of some radical type (e.g., \texttt{grafptr}). \item \texttt{sum}: sum of several values of the same radical type (e.g., \texttt{velosum}, \texttt{edlosum}). \item \texttt{tab}: reference to the first memory element of an array. Such a reference is returned by a memory allocation routine (e.g., \texttt{mem\lbt Alloc}) or allocated from the stack. \item \texttt{tax} (for ``\textit{table access}''): reference to an array that will be accessed using ``based'' indices. See Section~\ref{sec-basing}. \item \texttt{tnd} : pointer to the ``based'' after-end of an array of items of radix type (e.g. \texttt{velotnd}). Variables of this suffix are mostly used as bounds in loops. \item \texttt{val}: value of an item. For instance, \texttt{veloval} is the load of some vertex, that may have been read from a file. \end{itemize} Common prefixes are: \begin{itemize} \item \texttt{src}: source, wrt. active. For instance, a source graph is a plain \texttt{Graph} structure that contains only graph topology, compared to enriched graph data structures that are used for specific computations such as bipartitioning. \item \texttt{act}: active, wrt. source. An active graph is a data structure enriched with information required for specific computations, e.g. a \texttt{Bgraph}, a \texttt{Kgraph} or a \texttt{Vgraph} compared to a \texttt{Graph}. \item \texttt{ind}: induced, wrt. original. \item \texttt{src}: source, wrt. active or target. \item \texttt{org}: original, wrt. induced. An original graph is a graph from which a derived graph will be computed, e.g. an induced subgraph. \item \texttt{tgt}: target. \item \texttt{coar}: coarse, wrt. fine (e.g. \texttt{coarvertnum}, as a variable that holds the number of a coarse vertex, within some coarsening algorithm). \item \texttt{fine}: fine, wrt. coarse. \item \texttt{mult}: multinode, for coarsening. \end{itemize} \subsection{Functions} \label{sec-naming-functions} Like variables, routines of the \scotch\ software package follow a strict naming scheme, in an object-oriented fashion. Routines are always prefixed by the name of the data structure on which they operate, then by the name of the method that is applied to the said data structure. Some method names are standard for each class. Standard method names are: \begin{itemize} \item \texttt{Alloc}: dynamically allocate an object of the given class. Not always available, as many objects are allocated on the stack as local variables. \item \texttt{Init}: initialization of the object passed as parameter. \item \texttt{Free}: freeing of the external structures of the object, to save space. The object may still be used, but it is considered as ``empty'' (e.g., an empty graph). The object may be re-used after it is initialized again. \item \texttt{Exit}: freeing of the internal structures of the object. The object must not be passed to other routines after the \texttt{Exit} method has been called. \item \texttt{Copy}: make a fully operational, independent, copy of the object, like a ``clone'' function in object-oriented languages. \item \texttt{Load}: load object data from stream. \item \texttt{Save}: save object data to stream. \item \texttt{View}: display internal structures and statistics, for debugging purposes. \item \texttt{Check}: check internal consistency of the object data, for debugging purposes. A \texttt{Check} method must be created for any new class, and any function that creates or updates an instance of some class must call the appropriate \texttt{Check} method, when compiled in debug mode. \end{itemize} \subsection{Array index basing} \label{sec-basing} The \libscotch\ library can accept data structures that come both from FORTRAN, where array indices start at $1$, and C, where they start at $0$. The start index for arrays is called the ``base value'', commonly stored in a variable (or field) called \texttt{baseval}. In order to manage based indices elegantly, most references to arrays are based as well. The ``table access'' reference, suffixed as ``\texttt{tax}'' (see Section~\ref{sec-naming-variables}), is defined as the reference to the beginning of an array in memory, minus the base value (with respect to pointer arithmetic, that is, in terms of bytes, times the size of the array cell data type). Consequently, for any array whose beginning is pointed to by \texttt{xxxxtab}, we have $\mbox{\texttt{xxxxtax}} = \mbox{\texttt{xxxxtab}} - \mbox{\texttt{baseval}}$. Consequently \texttt{xxxxtax[baseval]} always represents the first cell in the array, whatever the base value is. Of course, memory allocation and freeing operations must always operate on \texttt{tab} pointers only. In terms of indices, if the size of the array is \texttt{xxxxnbr}, then $\mbox{\texttt{xxxxnnd}} = \mbox{\texttt{xxxxnbr}} + \mbox{\texttt{baseval}}$, so that valid indices \texttt{xxxxnum} always belong to the range $[\mbox{\texttt{baseval}};\mbox{\texttt{vertnnd}}[$. Consequently, loops often take the form: \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} for (xxxxnum = baseval; xxxxnum < xxxxnnd; xxxxnum ++) { xxxxtax[xxxxnum] = ...; } \end{verbatim} } \end{center} scotch_6.0.9/doc/src/scotch/s.bib0000644000302600021200000007747213303015264017032 0ustar pelegrinpelegrin@article{amdadu96, author = "Amestoy, P. and Davis, T. and Duff, I.", title = "An approximate minimum degree ordering algorithm", journal = "{SIAM} {J}. {M}atrix {A}nal. and {A}ppl.", volume = "17", pages = "886--905", year = "1996" } @inproceedings{aseilish91, author = "Ashcraft, C. and Eisenstat, S. and Liu, J. W.-H. and Sherman, A.", title = "A comparison of three column based distributed sparse factorization schemes", booktitle = "Proc. Fifth {SIAM} Conf. on Parallel Processing for Scientific Computing", year = "1991", } @article{ashc95, author = "Ashcraft, C.", title = "Compressed Graphs and the Minimum Degree Algorithm", journal = "{SIAM} {J}. {S}ci. {C}omput.", volume = "16", number = "6", pages = "1404--1411", year = "1995" } @article{basi94, author = "Barnard, S. T. and Simon, H. D.", title = "A fast multilevel implementation of recursive spectral bisection for partitioning unstructured problems", journal = "{C}oncurrency: {P}ractice and {E}xperience", volume = "6", number = "2", pages = "101-117", year = "1994" } @techreport {bopore96, author = "Boisvert, R.~F. and Pozo, R. and Remington, K.~A.", title = "The {M}atrix {M}arket exchange formats: initial design", type = "{NISTIR}", number = "5935", month = dec, year = "1996", institution = "{N}ational {I}nstitute of {S}tandards and {T}echnology" } @misc{cecill, key = "cecill", title = "{CeCILL}: ``{CEA}-{CNRS}-{INRIA} {L}ogiciel {L}ibre'' free/libre software license", note = "Available from \url{http://www.cecill.info/licenses.en.html}" } @inproceedings{chpe06a, author = "Chevalier, C. and Pellegrini, F.", title = "Improvement of the Efficiency of Genetic Algorithms for Scalable Parallel Graph Partitioning in a Multi-Level Framework", booktitle = "Proc\@. EuroPar, Dresden", series = "LNCS 4128", pages = "243--252", month = sep, year = "2006", OPTpublisher = "Springer", OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt efficient\lbo ga.\lbt pdf}" } @article{chro89, author = "Charrier, P. and Roman, J.", title = "Algorithmique et calculs de complexit\'e pour un solveur de type dissections embo\^\i t\'ees", journal = "{N}umerische {M}athematik", volume = "55", pages = "463--476", year = "1989" } @techreport {chro92a, author = "Charrier, P. and Roman, J.", title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", type = "Rapport de recherche", number = "92-12", month = mar, year = "1992", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", } @inproceedings {chro92b, author = "Charrier, P. and Roman, J.", title = "Partitioning and Mapping for parallel nested dissection on distributed memory architectures", booktitle = "Proc\@. CONPAR'92", series = "LNCS 634", pages = "295--306", month = sep, year = "1992", OPTpublisher = "Springer" } @inproceedings {cuma69, author = "Cuthill, E. and Macc~Kee, J.", title = "Reducing the bandwidth of sparse symmetric matrices", booktitle = "Proc. 24th national conference {ACM}", year = "1969", pages = "157--172", publisher = "{ACM}" } @article {doho72, author = "Donath, W. and Hoffman, A.", title = "Algorithms for partitioning of graphs and computer logic based on eigenvectors of connection matrices", journal = "{IBM} {T}echnical {D}isclosure {B}ulletin", volume = "15", year = "1972", pages = "938--944" } @article {doho73, author = "Donath, W. and Hoffman, A.", title = "Lower bounds for the partitioning of graphs", journal = "{IBM} {J}ournal of {R}esearch and {D}evelopment", volume = "17", year = "1973", pages = "420--425" } @inproceedings{drro94a, author = "van Driessche, R. and Roose, D.", title = "Dynamic load balancing with an improved spectral bisection algorithm", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "494--500", year = "1994", month = may, organization = "IEEE" } @techreport{drro94b, author = "van Driessche, R. and Roose, D.", title = "A graph contraction algorithm for the calculation of eigenvectors of the laplacian matrix of a graph with a multilevel method", institution = "Katholieke Universiteit Leuven", number = "TW 209", month = may, year = "1994" } @article{duff81, author = "Duff, I.", title = "On Algorithms for Obtaining a Maximum Transversal", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "7", number = "3", pages = "315--330", month = sep, year = "1981" } @techreport{dugrle92, author = "Duff, I. S. and Grimes, R. G. and Lewis, J. G.", title = "Users' guide for the {H}arwell-{B}oeing Sparse Matrix Collection", institution = "CERFACS", number = "TR/PA/92/86", month = oct, year = "1992", address = "Toulouse, France" } @article {errasa90, author = "Ercal, F. and Ramanujam, J. and Sadayappan, P.", title = "Task allocation onto a hypercube by recursive mincut bipartitionning", journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", volume = "10", year = "1990", pages = "35--44" } @article {fied73, author = "Fiedler, M.", title = "Algebraic connectivity of graphs", journal = "{C}zechoslovak {M}ath. {J}.", volume = "23", year = "1973", pages = "298--305" } @article {fied75, author = "Fiedler, M.", title = "A property of eigenvectors of non-negative symmetric matrices and its application to graph theory", journal = "{C}zechoslovak {M}ath. {J}.", volume = "25", year = "1975", pages = "619--633" } @inproceedings {fima82, author = "Fiduccia, C. M. and Mattheyses, R. M.", title = "A linear-time heuristic for improving network partitions", booktitle = "Proceedings of the 19th {D}esign {A}utomation {C}onference", year = "1982", pages = "175--181", publisher = "{IEEE}" } @InProceedings{fope11a, author = "Fourestier, S. and Pellegrini, F.", title = "Adaptation au repartitionnement de graphes d'une méthode d'optimisation globale par diffusion", booktitle = "Proc\@. RenPar'20, Saint-Malo, France", month = may, year = "2011" } @article {gajost76, author = "Garey, M. R. and Johnson, D. S. and Stockmeyer, L.", title = "Some simplified {NP}-complete graph problems", journal = "{T}heoretical {C}omputer {S}cience", volume = "1", year = "1976", pages = "237--267" } @book {gajo79, author = "Garey, M. R. and Johnson, D. S.", title = "{C}omputers and {I}ntractablility: {A} {G}uide to the {T}heory of {NP}-completeness", publisher = "W. H. Freeman", year = "1979", address = "San Francisco" } @article{geheling88, author = "George, A. and Heath, M. T. and Liu, J. W.-H. and Ng, E. G.-Y.", title = "Sparse {C}holesky factorization on a local memory multiprocessor", journal = "{SIAM} {J}ournal on {S}cientific and {S}tatistical {C}omputing", volume = "9", pages = "327--340", year = "1988" } @book {geli81, author = "George, J. A. and Liu, J. W.-H.", title = "Computer solution of large sparse positive definite systems", year = "1981", publisher = "Prentice Hall" } @article {geli89, author = "George, A. and Liu, J. W.-H.", title = "The evolution of the Minimum Degree ordering algorithm", journal = "{SIAM} {R}eview", volume = "31", pages = "1--19", year = "1989" } @article{geng89, author = "Geist, G. A. and Ng, E. G.-Y.", title = "Task scheduling for parallel sparse {C}holesky factorization", journal = "{I}nternational {J}ournal of {P}arallel {P}rogramming", volume = "18", number = "4", pages = "291--314", year = "1989" } @article {gipost76, author = "Gibbs, N. E. and Poole, W. G. and Stockmeyer, P. K.", title = "A comparison of several bandwidth and profile reduction algorithms", journal = "{ACM} Trans. Math. Software", volume = "2", year = "1976", pages = "322--330", field = "bdth about sparse matrices", owner = "Jean ROMAN" } @misc{lgpl, key = "lgpl", title = "{GNU} {L}esser {G}eneral {P}ublic {L}icense", note = "Available from \url{http://www.gnu.org/copyleft/lesser.html}" } @techreport{gukaku94, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Highly scalable parallel algorithms for sparse matrix factorization", institution = "{U}niversity of {M}innesota", type = "TR", number = "94-063", year = "1994", OPTnote = "To appear in {\em {IEEE} {T}rans. on {P}arallel and {D}istributed {S}ystems}, 1997" } @inproceedings{gukaku96, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Scalable parallel algorithms for sparse linear systems", booktitle = "Proc. {Stratagem'96}, Sophia-Antipolis", pages = "97--110", year = "1996", month = jul, organization = "INRIA", } @article{gukaku97, author = "Gupta, A. and Karypis, G. and Kumar, V.", title = "Highly scalable parallel algorithms for sparse matrix factorization", journal = "{IEEE} {T}rans. {P}arallel {D}istrib. {S}yst.", volume = "8", number = "5", pages = "502--520", year = "1997" } @article {gusu84, author = "Gurari, E. M. and Sudborough, I. H.", title = "Improved Dynamic Algorithms for Bandwidth Minimization and the Mincut Linear Arrangement Problem", journal = "Journal of Algorithms", volume = "5", year = "1984", pages = "531--546", field = "Heuristiques pour bdth and cdth" } @phdthesis {hamm92, author = "Hammond, S. W.", title = "Mapping unstructured grid computations to massively parallel computers", month = feb, year = "1992", school = "{R}ensselaer {P}olytechnic {I}nstitute", address = "{T}roy, {N}ew-{Y}ork" } @techreport{hele93a, author = "Hendrickson, B. and Leland, R.", title = "Multidimensional spectral load balancing", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--0074", month = jan, year = "1993", owner = "Francois PELLEGRINI" } @techreport{hele93b, author = "Hendrickson, B. and Leland, R.", title = "A multilevel algorithm for partitioning graphs", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--1301", month = jun, year = "1993", owner = "Francois PELLEGRINI" } @techreport{hele93c, author = "Hendrickson, B. and Leland, R.", title = "The \sc {C}haco \rm user's guide", institution = "{S}andia {N}ational {L}aboratories", number = "SAND93--2339", month = nov, year = "1993", owner = "Francois PELLEGRINI" } @inproceedings{hele94a, author = "Hendrickson, B. and Leland, R.", title = "An empirical study of static load balancing algorithms", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "682--685", year = "1994", month = may, organization = "IEEE" } @techreport{hele94b, author = "Hendrickson, B. and Leland, R.", title = "The {\sc {C}haco} user's guide -- Version 2.0", institution = "{S}andia {N}ational {L}aboratories", number = "SAND94--2692", year = "1994", owner = "Francois PELLEGRINI" } @inproceedings {hele95, author = "Hendrickson, B. and Leland, R.", title = "A Multilevel Algorithm for Partitioning Graphs", booktitle = "Proc\@. ACM/IEEE conference on Supercomputing (CDROM)", month = "dec", year = "1995", location = "San Diego" } @inproceedings{heledr96, author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", title = "{E}nhancing {D}ata {L}ocality by {U}sing {T}erminal {P}ropagation", booktitle = "Proceedings of the 29$\,^{th}$ Hawaii International Conference on System Sciences", year = "1996", month = jan, organization = "IEEE" } @inproceedings {heledr97, author = "Hendrickson, B. and Leland, R. and Van Driessche, R.", title = "Skewed Graph Partitioning", booktitle = "Proceedings of the 8$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing", month = mar, year = 1997, organization = "IEEE" } @inproceedings{heperaro04a, author = "H\'enon, P. and Pellegrini, F. and Ramet, P. and Roman, J. and Saad, Y.", title = "High Performance Complete and Incomplete Factorizations for Very Large Sparse Systems by using {\sc {S}cotch} and {\sc {P}a{S}ti{X}} softwares", booktitle = "Proc\@. 11$^{th}$ {SIAM} {C}onference on {P}arallel {P}rocessing for {S}cientific {C}omputing, San Francisco, {USA}", month = feb, year = 2004 } @article{hero98, author = "Hendrickson, B. and Rothberg, E.", title = "Improving the Runtime and Quality of Nested Dissection Ordering", journal = "{SIAM} {J}. {S}ci. {C}omput.", volume = "20", number = "2", year = "1998", pages = "468--489" } @article {hoka73, author = "Hopcroft, J. and Karp, R.", title = "An $n^{5/2}$ Algorithm for Maximum Matchings in Bipartite Graphs", journal = "{SIAM} {J}ournal of {C}omputing", volume = "2", number = "4", month = dec, year = "1973", pages = "225--231", field = "Sepa, ALGO" } @techreport{kaku95a, author = "Karypis, G. and Kumar, V.", title = "A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs", institution = "{U}niversity of {M}innesota", type = "Technical Report", number = "95-035", month = jun, year = "1995" } @techreport{kaku95b, author = "Karypis, G. and Kumar, V.", title = "{\sc Me$\!$T$\!$iS} -- Unstructured Graph Partitioning and Sparse Matrix Ordering System -- Version~2.0", institution = "{U}niversity of {M}innesota", month = jun, year = "1995" } @techreport{kaku95c, author = "Karypis, G. and Kumar, V.", title = "Multilevel $k$-way Partitioning Scheme for Irregular Graphs", institution = "{U}niversity of {M}innesota", type = "Technical Report", number = "95-064", month = aug, year = "1995" } @manual{kaku98a, author = "Karypis, G. and Kumar, V.", title = "{\sc Me$\!$T$\!$iS} -- A Software Package for Partitioning Unstructured Graphs, Partitioning Meshes, and Computing Fill-Reducing Orderings of Sparse Matrices -- Version~4.0", organization = "{U}niversity of {M}innesota", month = sep, year = "1998" } @article {keli70, author = "Kernighan, B. W. and Lin, S.", title = "An efficient heuristic procedure for partitionning graphs", journal = "{BELL} System Technical Journal", month = feb, year = "1970", pages = "291--307", publisher = "{BELL} {C}orporation", field = "Sepa, ALGO" } @article {lafeel94, author = "Laguna, M. and Feo, T. A. and Elrod, H. C.", title = "A greedy randomized adaptative search procedure for the two-partition problem", journal = "{O}perations {R}esearch", month = jul, year = "1994", pages = "677--687", field = "Bipa, ALGO" } @techreport{leabdofe92, author = "Leiserson, C. and Abuhamdeh, Z. and Douglas, D. and Feynman, C. and Ganmukhi, M. and Hill, J. and Hillis, W. and Kuszmaul, B. and Pierre, M. and Wells, D. and Wong, M. and Yang, S. and Zak, R.", title = "The Network Architecture of the {C}onnection {M}achine {CM-5}", institution = "{T}hinking {M}achines", month = "juillet", year = "1992" } @inproceedings{lele87, author = "Leiserson, C. and Lewis, J.", title = "Orderings for parallel sparse symmetric factorization", booktitle = "Third {SIAM} Conference on Parallel Processing for Scientific Computing", year = "1987", location = "Troms\o" } @article {lirota79, author = "Lipton, R. J. and Rose, D. J. and Tarjan, R. E.", title = "Generalized nested dissection", journal = "{SIAM} Journal of Numerical Analysis", volume = "16", number = "2", month = apr, year = "1979", pages = "346--358", publisher = "{S}ociety for {I}ndustrial and {A}pplied {M}athematics" } @inproceedings {litsdukl93, author = "Lin, M. and Tsang, R. and Du, D. H. C. and Klietz, A. E. and Saroff, S.", title = "Performance Evaluation of the {CM-5} Interconnection Network", booktitle = "Proceedings of CompCon Spring'93", year = "1993" } @phdthesis {liu-75, author = "Liu, J. W.", title = "On reducing the profile of sparse symmetric matrices", school = "{U}niversity of {W}aterloo", year = "1975", address = "{W}aterloo, {O}ntario", } @article {liu-85, author = "Liu, J. W.-H.", title = "Modification of the minimum-degree algorithm by multiple elimination", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "11", number = "2", year = 1985, pages = "141--153" } @misc{oinv, key = "oinv", title = "{SGI} {O}pen {I}nventor", note = "Available from \url{http://oss.sgi.com/projects/inventor/}" } @manual{pci-93, title = "{CS-2} {P}roduct {D}escription", organization = "{P}erformance {C}omputing {I}ndustries", year = "1993" } @Article{pell93d, author = "Pellegrini, F.", title = "Bounds for the Bandwidth of the $d$-ary de~{B}ruijn graph", journal = "Parallel Processing Letters", year = "1993", volume = "3", number = "4", pages = "431--443" } @inproceedings{pell94a, author = "Pellegrini, F.", title = "Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "486--493", year = "1994", month = may, organization = "IEEE" } @inproceedings{pell94b, author = "Pellegrini, F.", title = "Placement statique par bipartitionnement r\'ecursif conjoint des graphes de processus et d'architecture", booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", pages = "41--44", year = "1994", month = jun, organization = "ENS Lyon" } @phdthesis{pell95a, author = "Pellegrini, F.", title = "Application de m\'ethodes de partition \`a la r\'esolution de probl\`emes de graphes issus du parall\'elisme", type = "{T}h\`ese de {D}octorat", school = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", number = "1244", month = jan, year = "1995", address = "351 cours de la Lib\'eration, 33405 Talence, France" } @inproceedings{pell07b, author = "Pellegrini, F.", title = "A parallelisable multi-level banded diffusion scheme for computing balanced partitions with smooth boundaries", booktitle = "Proc\@. EuroPar, Rennes", series = "LNCS 4641", pages = "191--200", month = aug, year = "2007", OPTeditor = "A.-M. Kermarrec, L. Boug\'e, T. Priol", OPTpublisher = "Springer", OPTnote = "{\tt http://\lbt www.\lbo labri.\lbo fr/\lbt \~{}pelegrin/\lbt papers/\lbt scotch\_\lbt bipart\_\lbt diffusion\_\lbt europar2007.\lbt pdf}" } @techreport{pell07c, author = "Pellegrini, F.", title = "{\sc {S}cotch 5.0} {U}ser's {G}uide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2007", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @TechReport{pell07d, author = "Pellegrini, F.", title = "{\sc {PT}-{S}cotch 5.0} \mbox{U}ser's guide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2007", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @techreport{pell08b, author = "Pellegrini, F.", title = "{\sc {S}cotch 5.1} {U}ser's {G}uide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2008", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @TechReport{pell08c, author = "Pellegrini, F.", title = "{\sc {PT}-{S}cotch 5.1} \mbox{U}ser's guide", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "2008", note = "Available from \url{http://www.labri.fr/~pelegrin/scotch/}" } @techreport{pellegrini:hal-01671156, title = {{Process Mapping onto Complex Architectures and Partitions Thereof}}, author = {Pellegrini, Fran{\c c}ois and Lachat, C{\'e}dric}, note = "Available from \url{https://hal.inria.fr/hal-01671156}", type = {Research Report}, number = {RR-9135}, pages = {16}, institution = {{Inria Bordeaux Sud-Ouest}}, year = {2017}, month = Dec, pdf = {https://hal.inria.fr/hal-01671156/file/RR-9135.pdf}, hal_id = {hal-01671156} } @inproceedings{pero96a, author = "Pellegrini, F. and Roman, J.", title = "{\sc Scotch}: A Software Package for Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs", booktitle = "Proc\@. {HPCN'96}, Brussels", series = "LNCS 1067", pages = "493--498", month = apr, year = "1996" } @techreport{pero96b, author = "Pellegrini, F. and Roman, J.", title = "Experimental Analysis of the Dual Recursive Bipartitioning Algorithm for Static Mapping", type = "{R}esearch {R}eport", institution = "{LaBRI}, {U}niversit\'e {B}ordeaux~{I}", month = aug, year = "1996", note = "Available from \url{http://www.labri.fr/~pelegrin/papers/scotch_expanalysis.ps.gz}" } @inproceedings{pero97a, author = "Pellegrini, F. and Roman, J.", title = "{S}parse matrix ordering with {\sc {S}cotch}", booktitle = "Proc\@. {HPCN'97}, Vienna", series = "LNCS 1225", pages = "370--378", month = apr, year = "1997" } @inproceedings{peroam99, author = "Pellegrini, F. and Roman, J. and Amestoy, P.", title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", booktitle = "Proc\@. {Irregular'99}, San Juan", series = "LNCS 1586", pages = "986--995", month = apr, year = "1999" } @article{peroam00a, author = "Pellegrini, F. and Roman, J. and Amestoy, P.", title = "Hybridizing Nested Dissection and Halo Approximate Minimum Degree for Efficient Sparse Matrix Ordering", journal = "{C}oncurrency: {P}ractice and {E}xperience", year = "2000", volume = "12", pages = "69--84" } @article {pofa90, author = "Pothen, A. and Fan, C.-J.", title = "Computing the Block Triangular Form of a Sparse Matrix", journal = "{ACM} {T}rans. {M}ath. {S}oftware", volume = "16", number = "4", month = dec, year = "1990", pages = "303--324" } @article {posili90, author = "Pothen, A. and Simon, H. D. and Liou, K.-P.", title = "Partitioning sparse matrices with eigenvectors of graphs", journal = "{SIAM} {J}ournal of {M}atrix {A}nalysis", volume = "11", number = "3", month = jul, year = "1990", pages = "430--452" } @article {roha89, author = "Roucairol, C. and Hansen, P.", title = "Cut cost minimization in graph partitioning", journal = "{N}umerical and {A}pplied {M}athematics", year = "1989", pages = "585--587", publisher = "{S}cientific {P}ublishing" } @inproceedings{rogu93, author = "Rothberg, E. and Gupta, A.", title = "An efficient block-oriented approach to parallel sparse {C}holesky factorization", booktitle = "{S}upercomputing'93 {P}roceedings", year = "1993", organization = "IEEE" } @inproceedings{rosc94, author = "Rothberg, E. and Schreiber, R.", title = "Improved load distribution in parallel sparse {C}holesky factorization", booktitle = "{S}upercomputing'94 {P}roceedings", year = "1994", organization = "IEEE" } @inproceedings{roth94, author = "Rothberg, E.", title = "Performance of panel and block approaches to sparse {C}holesky factorization on the {iPSC/860} and {P}aragon multicomputers", booktitle = "Proc\@. {SHPCC'94}, Knoxville", pages = "324--333", year = "1994", month = may, organization = "IEEE" } @article {roma85, author = "Roman, J.", title = "Calculs de complexit\'e relatifs \`a une m\'ethode de dissection embo\^\i t\'ee", journal = "{N}umerische {M}athematik", volume = "47", year = "1985", pages = "175--190" } @book {rume94, author = "de Rumeur, J.", title = "Communication dans les r\'eseaux de processeurs", month = oct, year = "1994", publisher = "Masson" } @mastersthesis{scar96, author = "Scarano, L.", title = "Metodologie di allocazione statica con algoritmi di bipartizionamento multilevelo", school = "{F}acolt\'a di {I}ngegneria, {U}niversit\`a degli {S}tudi di {B}ologna", type = "{T}esi di {L}aurea", month = mar, year = "1996" } @inbook {sero85, author = "Seymour, P. D. and Robertson, N.", chapter = "Graph minors -- {A} survey", title = "Surveys in combinatorics", year = "1985", pages = "153--171", editor = "Ian Anderson", publisher = "Cambridge University Press" } @techreport{shre92, author = "Schreiber, R.", title = "Scalability of sparse direct solvers", institution = "{RIACS}, {NASA} {A}mes {R}esearch {C}enter", type = "Technical Report", number = "TR 92.13", month = may, year = "1992" } @article{simo91, author = "Simon, H. D.", title = "Partitioning of unstructured problems for parallel processing", journal = "{C}omputing {S}ystems in {E}ngineering", volume = "2", pages = "135-148", year = "1991" } @techreport{site93, author = "Simon, H. D. and Teng, S.-H.", title = "How good is recursive bipartition", type = "Research report", institution = "{NASA} {A}mes {R}esearch {C}enter", month = jun, year = "1993" } @techreport{shsz91, author = "Shahrokhi, F. and Szekely, L. A.", title = "An algebraic approach to the uniform concurrent multicommodity flow -- {T}heory and Applications", institution = "University of North Texas", number = "CRPDC-91-4", year = "1991", owner = "Dominique BARTH" } @article {shts85, author = "Shen, C.-C. and Tsai, W.-H.", title = "A graph matching approach to optimal task assignment in distributed computing systems using a minimax criterion", journal = "{IEEE} {T}ransactions on {C}omputers", volume = "C-34", number = "3", month = mar, year = "1985", pages = "197--203" } @article {sinc87, author = "Sinclair, J. B.", title = "Efficient computation of optimal assignments for distributed tasks", journal = "{J}ournal of {P}arallel and {D}istributed {C}omputing", volume = "4", year = "1987", pages = "342--362" } @inproceedings {smar76, author = "Smith, W. F. and Arany, I.", title = "Another algorithm for reducing bandwidth and profile of a sparse matrix", booktitle = "Proc. AFIPS 1976 NCC", year = "1976", pages = "341--352", publisher = "AFIP Press", address = "Montvale, New Jersey" } @article{ston77, author = "Stone, H. S.", title = "Multiprocessor scheduling with the aid of network flow algorithms", journal = "{IEEE} {T}ransactions on {S}oftware {E}ngineering", volume = "SE 3", number = "2", month = jan, year = "1977", pages = "85--93" } @techreport {tamu92, author = "Talbi, E.-G. and Muntean, T.", title = "\'Evaluation et \'etude comparative d'algorithmes d'optimisation combinatoire: application au probl\`eme de placement de processus", institution = "LGI-IMAG", address = "46 av. {F}. {V}iallet, 38031 {G}renoble {CEDEX}", type = "Rapport de Recherche", number = "RR~886-I", month = apr, year = "1992" } @article {tiwa67, author = "Tinney, W. F. and Walker, J. W.", title = "Direct solutions of sparse network equations by optimally ordered triangular factorization", journal = "{J}. {P}roc. {IEEE}", volume = "55", year = "1967", pages = "1801--1809" } @inproceedings {wacrevjo95, author = "Walshaw, C. and Cross, M. and Everett, M. G. and Johnson, S. and McManus, K.", title = "Partitioning \& Mapping of Unstructured Meshes to Parallel Machine Topologies", booktitle = "Proc\@. {Irregular'95}", series = "LNCS", number = "980", pages = "121--126", year = "1995" } @article {waro84, author = "Ward, M. O. and Romero, D. J.", title = "Assigning parallel-executable, intercommunicating subtasks to processors", journal = "{IEEE}", year = "1984", pages = "392--394" } @inproceedings {yokaka75, author = "Yoshizawa, H. and Kawanishi, H. and Kani, K.", title = "A Heuristic procedure for ordering {MOS} arrays", booktitle = "Proc\@. of Design Automation Conference", year = "1975", pages = "384--393" } @inproceedings{zovake94, author = "Zone, O. and Vanderstraeten, D. and Keunings, R.", title = "Un solveur direct parall\`ele bas\'e sur une d\'ecomposition de domaine appliqu\'e aux probl\`emes d'\'el\'ements finis", booktitle = "Actes des 6\/${}^{\grave{e}mes}$ Rencontres Francophones du Parall\'elisme, RenPar'6, Lyon", pages = "113--118", year = "1994", month = jun, organization = "ENS Lyon" } scotch_6.0.9/doc/src/scotch/s_n.tex0000644000302600021200000002426613303015264017404 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_n.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Codage de nouvelles % % methodes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Adding new features to \scotch} \label{sec-coding} Since \scotch\ is free/libre software, users have the ability to add new features to it. Moreover, as \scotch\ is intended to be a testbed for new partitioning and ordering algorithms, it has been developed in a very modular way, to ease the development and inclusion of new partitioning and ordering methods to be called within \scotch\ strategies. All of the source code for partitioning and ordering methods for graphs and meshes is located in the {\tt src/\lbt libscotch/} source subdirectory. Source file names have a very regular pattern, based on the internal data structures they handle. \subsection{Graphs and meshes} The basic structures in \scotch\ are the {\tt Graph} and {\tt Mesh} structures, which model a simple symmetric graph the definition of which is given in file {\tt graph.h}, and a simple mesh, in the form of a bipartite graph, the definition of which is given in file {\tt mesh.h}, respectively. From this structure are derived enriched graph and mesh structures: \begin{itemize} \item {\tt Bgraph}, in file {\tt bgraph.h}: graph with bipartition, that is, edge separation, information attached to it; \item {\tt Kgraph}, in file {\tt kgraph.h}: graph with mapping information attached to it; \item {\tt Hgraph}, in file {\tt hgraph.h}: graph with halo information attached to it, for computing graph orderings; \item {\tt Vgraph}, in file {\tt vgraph.h}: graph with vertex bipartition information attached to it; \item {\tt Hmesh}, in file {\tt hmesh.h}: mesh with halo information attached to it, for computing mesh orderings; \item {\tt Vmesh}, in file {\tt vmesh.h}: graph with vertex bipartition information attached to it. \end{itemize} As version {\sc \scotchver} of the \libscotch\ does not provide mesh mapping capabilities, neither {\tt Bmesh} nor {\tt Kmesh} structures have been defined to date, but this work is in progress, and these features should be available in the upcoming releases. All of the structures are in fact defined as {\tt typedef}ed types. \subsection{Methods and partition data} Methods are routines which take one of the above structures as input, and update the fields of the given structure according to the implemented algorithm. Initial methods will behave irrespective of the former values of the structure (like graph growing methods, which compute partitions from scratch), while refinement methods must be provided an existing partition to improve. In addition to the topological description of the underlying graph, the working graph and mesh structures comprise variables describing the current state of the vertex or edge partition. In all cases is provided a partition array called {\tt parttax}, of size equal to the number of graph vertices, which tells which part every vertex is assigned to. Other variables comprise the communication load and the load imbalance of the current cut, that is, all of the data necessary to measure the quality of a partition. Some other data are also often provided, such as the number of vertices in each part and the list of frontier vertices. They are not relevant to measure the quality of the partition, but to improve the speed of computations. They are used for instance in the multilevel algorithms to compute incremental updates of the current partition state, without having to recompute these values from scratch by considering all of the graph vertices. Implementers of new methods are highly encouraged to use these variables to speed-up their computations, taking examples on typical algorithms such as the multilevel or Fiduccia-Mattheyses ones. \subsection{Adding a new method to \scotch} We will assume in this section that the new method to add is a graph separation method. The procedure explained below is exactly the same for graph bipartitioning, graph mapping, graph ordering, mesh separation, or mesh ordering methods. Please proceed as explained below. \begin{enumerate} \item Write the code of the method itself. First, choose a free two-letter code to describe your method, say ``xy''. In the {\tt libscotch} source directory, create files {\tt vgraph\_\lbt separate\_\lbt xy.c} and {\tt vgraph\_\lbt separate\_\lbt xy.h}, basing on existing files such as {\tt vgraph\_\lbt separate\_\lbt gg.c} and {\tt vgraph\_\lbt separate\_\lbt gg.h}, for instance. If the method is complex, it can be split across several other files, which will be named {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt first\lbt module\lbt name.c}, {\tt vgraph\_\lbt separate\_\lbt xy\_\lbt second\lbt module\lbt name.c}, eventually with matching header files. If the method has parameters, create a structure called {\tt Vgraph\lbt Separate\lbt Xy\lbt Param}, which contains fields of types that can be handled by the strategy parser, such as the {\tt INT} generic integer type (see below), or {\tt double}, for instance. The execution of your method should result in the setting or in the updating of the {\tt Vgraph} structure that is passed to it. See its definition in {\tt vgraph.h} and read several simple graph separation methods, such as {\tt vgraph\_\lbt separate\_\lbt zr.c}, to figure out what all of its parameters mean. At the end of your method, always call, when the {\tt SCOTCH\_\lbt DEBUG\_\lbt VGRAPH2} debug flag is set, the {\tt vgraph\lbt Check} routine, to avoid the spreading of eventual bugs to other parts of the \libscotch\ library. \item Add the method to the parser tables. The files to update are {\tt vgraph\_\lbt separate\_\lbt st.c} and {\tt vgraph\_\lbt separate\_\lbt st.h}, where ``{\tt st}'' stands for ``strategy''. First, edit {\tt vgraph\_\lbt separate\_\lbt st.h}. In the {\tt Vgraph\lbt Separate\lbt St\lbt Method\lbt Type} enumeration, add a line for your new method {\tt VGRAPH\lbt SEPA\lbt ST\lbt METH\lbt XY}. Then, edit {\tt vgraph\_\lbt separate\_\lbt st.c}, where all of the remaining actions take place. In the top of the file, add a {\tt \#include} directive to include {\tt vgraph\_\lbt separate\_\lbt xy.h}. If the method has parameters, create a {\tt vgraph\lbt separate\lbt default\lbt xy} C union, basing on an existing one, and fill it with the default values of your method parameters. In the {\tt vgraph\lbt separate\lbt st\lbt meth\lbt tab} method array, add a line for the new method. To do so, choose a free single-letter code that will be used to designate the new method in strategy strings. If the method has parameters, the last field should be a pointer to the default structure, else it should be set to {\tt NULL}. If the method has parameters, update the {\tt vgraph\lbt separate\lbt st\lbt para\lbt tab} parameter array. Add one data block per parameter. The first field is the name of the method to which the parameter applies, that is, {\tt VGRAPH\lbt SEPA\lbt ST\lbt METH\lbt XY}. The second field is the type of the parameter, which can be: \begin{itemize} \item {\tt STRATPARAMCASE}: the support type is an {\tt int}. It receives the index in the case string, which is provided as the last field of the parameter line, of the given case character; \item {\tt STRATPARAMDOUBLE}: the support type is a {\tt double}; \item {\tt STRATPARAMINT}: the support type is an {\tt INT}, which is the generic integer type handled internally by \scotch. This type has variable extent, depending on compilation flags, as described in Section~\ref{sec-lib-inttypesize}; \item {\tt STRATPARAMSTRING}: a (small) character string; \item {\tt STRATPARAMSTRAT}: strategy. For instance, the graph ordering method by nested dissection takes a vertex partitioning strategy as one of its parameters, to compute the vertex separators. \end{itemize} The fourth and fifth fields are the address of the location of the default structure and the address of the parameter within this default structure, respectively. From these two values can be computed at run time the offset of the parameter within any instance of the parameter structure, which is used to fill the actual structures in the parsed strategy evaluation tree. The value of the sixth parameter depends on the type of the parameter. It should be {\tt NULL} for {\tt STRAT\lbt PARAM\lbt DOUBLE} and {\tt STRAT\lbt PARAM\lbt INT} parameters, points to the string of available case letters for {\tt STRAT\lbt PARAM\lbt CASE} parameters, points to the target string buffer for {\tt STRAT\lbt PARAM\lbt STRING} parameters, and points to the relevant method parsing table for {\tt STRAT\lbt PARAM\lbt STRAT} parameters. \item Edit the makefile of the \libscotch\ source directory to enable the compilation and linking of the method. Depending on \libscotch\ versions, this makefile is either called {\tt Makefile} or {\tt make\_\lbt gen}. \item Compile in debug mode and experiment with your routine, by creating strategies that contain its single-letter code. \item To change the default strategy string used by the \libscotch\ library, update file {\tt library\_\lbt graph\_\lbt order.c}, since it is the graph ordering routine which makes use of graph vertex separation methods to compute separators for the nested dissection ordering method. \end{enumerate} \subsection{Licensing of new methods and of derived works} According to the terms of the CeCILL-C license~\cite{cecill} under which the \scotch\ software package is distributed, the works that are carried out to improve and extend the \libscotch\ library must be licensed under the same terms. Basically, it means that you will have to distribute the sources of your new methods, along with the sources of \scotch, to any recipient of your modified version of the \libscotch, and that you grant these recipients the same rights of update and redistribution as the ones that are given to you under the terms of CeCILL-C. Please read it carefully to know what you can do and cannot do with the \scotch\ distribution. \\ You should have received a copy of the CeCILL-C license along with the \scotch\ distribution; if not, please browse the CeCILL website at \url{http://www.cecill.info/licenses.en.html}. scotch_6.0.9/doc/src/scotch/s_f_orb.eps0000644000302600021200000006321613322403377020232 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_orb.fig %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Thu Dec 30 03:01:42 2004 %%For: pelegrin@localhost (Francois PELLEGRINI) %%BoundingBox: 0 0 775 164 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 164 moveto 0 0 lineto 775 0 lineto 775 164 lineto closepath clip newpath -36.0 198.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Courier /Courier-iso isovec ReEncode /Times-Bold /Times-Bold-iso isovec ReEncode /Times-Roman /Times-Roman-iso isovec ReEncode /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Polyline 7.500 slw n 10080 1725 m 9975 1725 9975 2070 105 arcto 4 {pop} repeat 9975 2175 10320 2175 105 arcto 4 {pop} repeat 10425 2175 10425 1830 105 arcto 4 {pop} repeat 10425 1725 10080 1725 105 arcto 4 {pop} repeat cp gs col0 s gr % Polyline 2 slj n 11138 3213 m 11150 3215 l 11164 3217 l 11180 3218 l 11196 3220 l 11213 3221 l 11231 3221 l 11250 3222 l 11269 3221 l 11287 3221 l 11304 3220 l 11320 3218 l 11336 3217 l 11350 3215 l 11363 3213 l 11371 3211 l 11379 3208 l 11386 3206 l 11394 3202 l 11401 3198 l 11407 3193 l 11414 3186 l 11420 3178 l 11425 3168 l 11431 3156 l 11435 3143 l 11440 3128 l 11444 3111 l 11448 3092 l 11451 3071 l 11454 3049 l 11456 3024 l 11459 2998 l 11461 2969 l 11463 2938 l 11464 2915 l 11465 2891 l 11466 2866 l 11467 2840 l 11467 2812 l 11468 2783 l 11469 2753 l 11470 2721 l 11471 2688 l 11471 2654 l 11472 2620 l 11473 2584 l 11474 2548 l 11474 2512 l 11475 2475 l 11476 2438 l 11476 2402 l 11477 2366 l 11478 2330 l 11479 2296 l 11479 2262 l 11480 2229 l 11481 2197 l 11482 2167 l 11483 2138 l 11483 2110 l 11484 2084 l 11485 2059 l 11486 2035 l 11488 2013 l 11489 1984 l 11491 1957 l 11493 1933 l 11496 1909 l 11499 1887 l 11503 1867 l 11507 1847 l 11512 1829 l 11518 1812 l 11525 1795 l 11533 1780 l 11542 1765 l 11552 1751 l 11563 1738 l 11575 1725 l 11588 1713 l 11602 1701 l 11617 1689 l 11633 1676 l 11650 1664 l 11668 1651 l 11688 1638 l 11705 1625 l 11724 1612 l 11744 1599 l 11765 1584 l 11788 1569 l 11811 1553 l 11836 1536 l 11862 1519 l 11888 1501 l 11916 1482 l 11943 1463 l 11972 1444 l 12000 1425 l 12028 1406 l 12057 1387 l 12084 1368 l 12112 1349 l 12138 1331 l 12164 1314 l 12189 1297 l 12212 1281 l 12235 1266 l 12256 1251 l 12276 1238 l 12295 1225 l 12313 1213 l 12339 1194 l 12363 1177 l 12385 1161 l 12405 1146 l 12424 1132 l 12440 1119 l 12454 1106 l 12467 1094 l 12477 1083 l 12486 1072 l 12493 1062 l 12499 1052 l 12504 1043 l 12507 1033 l 12510 1023 l 12513 1013 l 12515 1000 l 12517 986 l 12518 970 l 12520 954 l 12521 937 l 12521 919 l 12522 900 l 12521 881 l 12521 863 l 12520 846 l 12518 830 l 12517 814 l 12515 800 l 12513 788 l 12510 776 l 12507 765 l 12503 754 l 12499 745 l 12493 735 l 12487 727 l 12481 719 l 12473 713 l 12465 707 l 12455 701 l 12446 697 l 12435 693 l 12424 690 l 12413 688 l 12400 685 l 12386 683 l 12370 682 l 12354 680 l 12337 679 l 12319 679 l 12300 678 l 12281 679 l 12263 679 l 12246 680 l 12230 682 l 12214 683 l 12200 685 l 12188 688 l 12176 690 l 12165 693 l 12154 697 l 12145 701 l 12135 707 l 12127 713 l 12119 719 l 12113 727 l 12107 735 l 12101 745 l 12097 754 l 12093 765 l 12090 776 l 12088 788 l 12085 800 l 12083 814 l 12081 830 l 12080 846 l 12078 863 l 12076 881 l 12075 900 l 12074 919 l 12072 937 l 12070 954 l 12069 970 l 12067 986 l 12065 1000 l 12063 1013 l 12060 1023 l 12057 1033 l 12054 1043 l 12049 1052 l 12043 1062 l 12036 1072 l 12027 1083 l 12017 1094 l 12004 1106 l 11990 1119 l 11974 1132 l 11955 1146 l 11935 1161 l 11913 1177 l 11889 1194 l 11863 1213 l 11845 1225 l 11826 1238 l 11806 1251 l 11785 1266 l 11762 1281 l 11739 1297 l 11714 1314 l 11688 1331 l 11662 1349 l 11634 1368 l 11607 1387 l 11578 1406 l 11550 1425 l 11522 1444 l 11493 1463 l 11466 1482 l 11438 1501 l 11412 1519 l 11386 1536 l 11361 1553 l 11338 1569 l 11315 1584 l 11294 1599 l 11274 1612 l 11255 1625 l 11238 1638 l 11218 1651 l 11200 1664 l 11183 1676 l 11167 1689 l 11152 1701 l 11138 1713 l 11125 1725 l 11113 1738 l 11102 1751 l 11092 1765 l 11083 1780 l 11075 1795 l 11068 1812 l 11062 1829 l 11057 1847 l 11053 1867 l 11049 1887 l 11046 1909 l 11043 1933 l 11041 1957 l 11039 1984 l 11038 2013 l 11036 2035 l 11035 2059 l 11034 2084 l 11033 2110 l 11033 2138 l 11032 2167 l 11031 2197 l 11031 2229 l 11030 2262 l 11030 2296 l 11029 2330 l 11029 2366 l 11029 2402 l 11029 2438 l 11028 2475 l 11029 2512 l 11029 2548 l 11029 2584 l 11029 2620 l 11030 2654 l 11030 2688 l 11031 2721 l 11031 2753 l 11032 2783 l 11033 2812 l 11033 2840 l 11034 2866 l 11035 2891 l 11036 2915 l 11038 2938 l 11039 2969 l 11041 2998 l 11044 3024 l 11046 3049 l 11049 3072 l 11052 3092 l 11056 3111 l 11060 3128 l 11065 3143 l 11069 3156 l 11075 3168 l 11080 3178 l 11086 3186 l 11093 3193 l 11099 3198 l 11106 3202 l 11114 3206 l 11121 3208 l 11129 3211 l cp gs col0 s gr % Polyline n 12413 1738 m 12422 1740 l 12431 1742 l 12440 1745 l 12449 1749 l 12458 1753 l 12468 1759 l 12478 1766 l 12489 1775 l 12501 1785 l 12514 1797 l 12529 1810 l 12544 1825 l 12560 1841 l 12578 1860 l 12597 1879 l 12617 1901 l 12639 1924 l 12663 1950 l 12678 1966 l 12694 1984 l 12711 2002 l 12729 2022 l 12748 2042 l 12767 2063 l 12788 2085 l 12809 2109 l 12832 2132 l 12854 2157 l 12878 2182 l 12902 2208 l 12926 2234 l 12950 2261 l 12975 2288 l 13000 2314 l 13024 2341 l 13048 2367 l 13072 2393 l 13096 2418 l 13118 2443 l 13141 2466 l 13162 2490 l 13183 2512 l 13202 2533 l 13221 2553 l 13239 2573 l 13256 2591 l 13272 2609 l 13288 2625 l 13311 2651 l 13333 2674 l 13353 2696 l 13372 2716 l 13389 2735 l 13404 2752 l 13418 2768 l 13431 2783 l 13442 2797 l 13451 2810 l 13459 2821 l 13466 2832 l 13472 2842 l 13476 2851 l 13480 2860 l 13483 2869 l 13485 2878 l 13488 2888 l 13490 2900 l 13492 2914 l 13493 2930 l 13495 2946 l 13496 2963 l 13496 2981 l 13497 3000 l 13496 3019 l 13496 3037 l 13495 3054 l 13493 3070 l 13492 3086 l 13490 3100 l 13488 3113 l 13485 3124 l 13482 3135 l 13478 3146 l 13474 3155 l 13468 3165 l 13462 3173 l 13456 3181 l 13448 3187 l 13440 3193 l 13430 3199 l 13421 3203 l 13410 3207 l 13399 3210 l 13388 3213 l 13375 3215 l 13361 3217 l 13345 3218 l 13329 3220 l 13312 3221 l 13294 3221 l 13275 3222 l 13256 3221 l 13238 3221 l 13221 3220 l 13205 3218 l 13189 3217 l 13175 3215 l 13163 3213 l 13153 3210 l 13144 3208 l 13135 3205 l 13126 3201 l 13117 3197 l 13107 3191 l 13097 3184 l 13086 3175 l 13074 3165 l 13061 3153 l 13046 3140 l 13031 3125 l 13015 3109 l 12997 3090 l 12978 3071 l 12958 3049 l 12936 3026 l 12913 3000 l 12897 2984 l 12881 2966 l 12864 2948 l 12846 2928 l 12827 2908 l 12808 2887 l 12787 2865 l 12766 2841 l 12743 2818 l 12721 2793 l 12697 2768 l 12673 2742 l 12649 2716 l 12625 2689 l 12600 2662 l 12575 2636 l 12551 2609 l 12527 2583 l 12503 2557 l 12479 2532 l 12457 2507 l 12434 2484 l 12413 2460 l 12392 2438 l 12373 2417 l 12354 2397 l 12336 2377 l 12319 2359 l 12303 2341 l 12288 2325 l 12264 2299 l 12242 2276 l 12222 2254 l 12203 2234 l 12186 2215 l 12171 2198 l 12157 2182 l 12144 2167 l 12133 2153 l 12124 2140 l 12116 2129 l 12109 2118 l 12103 2108 l 12099 2099 l 12095 2090 l 12092 2081 l 12090 2072 l 12088 2063 l 12085 2050 l 12083 2036 l 12082 2020 l 12080 2004 l 12079 1987 l 12079 1969 l 12078 1950 l 12079 1931 l 12079 1913 l 12080 1896 l 12082 1880 l 12083 1864 l 12085 1850 l 12088 1838 l 12090 1826 l 12093 1815 l 12097 1804 l 12101 1795 l 12107 1785 l 12113 1777 l 12119 1769 l 12127 1763 l 12135 1757 l 12145 1751 l 12154 1747 l 12165 1743 l 12176 1740 l 12188 1738 l 12200 1735 l 12214 1733 l 12230 1732 l 12246 1730 l 12263 1729 l 12281 1729 l 12300 1728 l 12319 1729 l 12337 1729 l 12354 1730 l 12370 1732 l 12386 1733 l 12400 1735 l cp gs col0 s gr % here ends figure; % % here starts figure with depth 20 % Polyline 7.500 slw n 10200 900 m 10200 1950 l gs col0 s gr % Polyline n 10200 900 m 13275 900 l 13275 3000 l 10200 3000 l 10200 1950 l 13275 1950 l gs col0 s gr % Polyline n 11250 900 m 11250 3000 l gs col0 s gr % Polyline n 12300 900 m 12300 3000 l gs col0 s gr % Polyline n 6375 900 m 6375 1950 l gs col0 s gr % Polyline n 6300 900 m 9450 900 l 9450 3000 l 6375 3000 l 6375 1950 l 9450 1950 l gs col0 s gr % Polyline n 7425 900 m 7425 3000 l gs col0 s gr % Polyline n 8475 900 m 8475 3000 l gs col0 s gr /Courier-iso ff 210.00 scf sf 600 1425 m gs 1 -1 sc (peritab) col0 sh gr /Courier-iso ff 210.00 scf sf 600 2025 m gs 1 -1 sc (cblknbr) col0 sh gr /Courier-iso ff 210.00 scf sf 600 2625 m gs 1 -1 sc (rangtab) col0 sh gr /Courier-iso ff 210.00 scf sf 600 3225 m gs 1 -1 sc (treetab) col0 sh gr /Courier-iso ff 210.00 scf sf 600 825 m gs 1 -1 sc (permtab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 2400 m 2400 2400 l 2400 2700 l 2100 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 2400 m 2700 2400 l 2700 2700 l 2400 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 2400 m 3600 2400 l 3600 2700 l 3300 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 2400 m 4500 2400 l 4500 2700 l 4200 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 2400 m 3000 2400 l 3000 2700 l 2700 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 2400 m 3300 2400 l 3300 2700 l 3000 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 600 m 2400 600 l 2400 900 l 2100 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 600 m 3300 600 l 3300 900 l 3000 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 600 m 3900 600 l 3900 900 l 3600 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 600 m 4200 600 l 4200 900 l 3900 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 600 m 4500 600 l 4500 900 l 4200 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 600 m 3000 600 l 3000 900 l 2700 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 1200 m 2400 1200 l 2400 1500 l 2100 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1200 m 2700 1200 l 2700 1500 l 2400 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 1200 m 3600 1200 l 3600 1500 l 3300 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 1200 m 3000 1200 l 3000 1500 l 2700 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 2400 m 4200 2400 l 4200 2700 l 3900 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 3925 2640 m gs 1 -1 sc (13) col0 sh gr % Polyline n 4500 2400 m 4800 2400 l 4800 2700 l 4500 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 3000 m 2400 3000 l 2400 3300 l 2100 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3000 m 2700 3000 l 2700 3300 l 2400 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3000 m 3300 3000 l 3300 3300 l 3000 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 3000 m 3600 3000 l 3600 3300 l 3300 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3000 m 3000 3000 l 3000 3300 l 2700 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 600 m 5100 600 l 5100 900 l 4800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 600 m 5400 600 l 5400 900 l 5100 900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 2400 m 5100 2400 l 5100 2700 l 4800 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 2400 m 5400 2400 l 5400 2700 l 5100 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 2400 m 5700 2400 l 5700 2700 l 5400 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 600 m 2700 600 l 2700 900 l 2400 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 2425 840 m gs 1 -1 sc (10) col0 sh gr % Polyline n 3300 600 m 3600 600 l 3600 900 l 3300 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 3325 840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 4500 600 m 4800 600 l 4800 900 l 4500 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 4525 840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 4500 1200 m 4800 1200 l 4800 1500 l 4500 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 1200 m 5100 1200 l 5100 1500 l 4800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 1200 m 4200 1200 l 4200 1500 l 3900 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 1200 m 3900 1200 l 3900 1500 l 3600 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 1200 m 5400 1200 l 5400 1500 l 5100 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 5125 1440 m gs 1 -1 sc (10) col0 sh gr % Polyline n 3000 1200 m 3300 1200 l 3300 1500 l 3000 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 3025 1440 m gs 1 -1 sc (11) col0 sh gr % Polyline n 4200 1200 m 4500 1200 l 4500 1500 l 4200 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 4225 1440 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3600 2400 m 3900 2400 l 3900 2700 l 3600 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 3625 2640 m gs 1 -1 sc (10) col0 sh gr % Polyline n 3600 3000 m 3900 3000 l 3900 3300 l 3600 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman-iso ff 240.00 scf sf 3625 3240 m gs 1 -1 sc (-1) col0 sh gr % Polyline n 3900 3000 m 4200 3000 l 4200 3300 l 3900 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 3000 m 4500 3000 l 4500 3300 l 4200 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 3000 m 4800 3000 l 4800 3300 l 4500 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 3000 m 5100 3000 l 5100 3300 l 4800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 3000 m 5400 3000 l 5400 3300 l 5100 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 12300 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 11257 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 11257 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10200 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10200 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 11250 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 13282 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 12307 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 13282 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 13282 893 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 12307 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10207 1943 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6375 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6375 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7425 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7425 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6375 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9450 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9450 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8475 900 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8475 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7425 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8475 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9450 3000 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman-iso ff 240.00 scf sf 1900 2640 m gs 1 -1 sc (1) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2200 2640 m gs 1 -1 sc (2) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2500 2640 m gs 1 -1 sc (4) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3400 2640 m gs 1 -1 sc (8) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2800 2640 m gs 1 -1 sc (5) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3100 2640 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 1900 2040 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 1900 840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2200 840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3100 840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3700 840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4000 840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4300 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2800 840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2200 1440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2500 1440 m gs 1 -1 sc (2) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3400 1440 m gs 1 -1 sc (4) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2800 1440 m gs 1 -1 sc (5) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 1900 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2200 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2500 3240 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3100 3240 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3400 3240 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 2800 3240 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4900 840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 5200 840 m gs 1 -1 sc (9) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 10150 3090 m gs 1 -1 sc (1) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 10150 990 m gs 1 -1 sc (2) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 11200 990 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 13232 3083 m gs 1 -1 sc (9) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 12257 2033 m gs 1 -1 sc (8) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 13232 2033 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 13232 983 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 12257 3083 m gs 1 -1 sc (5) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 10157 2033 m gs 1 -1 sc (4) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 6325 990 m gs 1 -1 sc (1) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 6325 2040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 7375 990 m gs 1 -1 sc (2) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 7375 2040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 6325 3090 m gs 1 -1 sc (9) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 9400 990 m gs 1 -1 sc (4) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 9400 2040 m gs 1 -1 sc (8) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 8425 990 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 8425 2040 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4600 1440 m gs 1 -1 sc (3) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4900 1440 m gs 1 -1 sc (6) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 4000 1440 m gs 1 -1 sc (7) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 3700 1440 m gs 1 -1 sc (8) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 1900 1440 m gs 1 -1 sc (9) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 9900 3150 m gs 1 -1 sc (1) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 9900 1050 m gs 1 -1 sc (2) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 9900 2325 m gs 1 -1 sc (3) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 12000 3300 m gs 1 -1 sc (4) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 12975 1200 m gs 1 -1 sc (5) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 11925 2250 m gs 1 -1 sc (6) col0 sh gr /Times-Bold-iso ff 240.00 scf sf 10950 1725 m gs 1 -1 sc (7) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman-iso ff 240.00 scf sf 12170 990 m gs 1 -1 sc (10) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 11127 2033 m gs 1 -1 sc (11) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 11127 3083 m gs 1 -1 sc (12) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 7295 3090 m gs 1 -1 sc (10) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 8345 3090 m gs 1 -1 sc (11) col0 sh gr /Times-Roman-iso ff 240.00 scf sf 9320 3090 m gs 1 -1 sc (12) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_gr2.fig0000644000302600021200000003241113303015264020102 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 1950 11100 2250 6 2100 1950 3900 2250 6 2100 1950 2400 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 1950 2400 1950 2400 2250 2100 2250 2100 1950 4 0 0 10 0 0 16 0.0000 4 180 120 2200 2190 3\001 -6 6 2400 1950 2700 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 1950 2700 1950 2700 2250 2400 2250 2400 1950 4 0 0 10 0 0 16 0.0000 4 165 120 2500 2190 4\001 -6 6 2700 1950 3000 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 1950 3000 1950 3000 2250 2700 2250 2700 1950 4 0 0 10 0 0 16 0.0000 4 180 120 2800 2190 1\001 -6 6 3000 1950 3300 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 1950 3300 1950 3300 2250 3000 2250 3000 1950 4 0 0 10 0 0 16 0.0000 4 165 120 3100 2190 7\001 -6 6 3300 1950 3600 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 1950 3600 1950 3600 2250 3300 2250 3300 1950 4 0 0 10 0 0 16 0.0000 4 180 120 3400 2190 6\001 -6 6 3600 1950 3900 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 1950 3900 1950 3900 2250 3600 2250 3600 1950 4 0 0 10 0 0 16 0.0000 4 180 120 3700 2190 5\001 -6 -6 6 4500 1950 5400 2250 6 4500 1950 4800 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 1950 4800 1950 4800 2250 4500 2250 4500 1950 4 0 0 10 0 0 16 0.0000 4 165 120 4600 2190 2\001 -6 6 4800 1950 5100 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 1950 5100 1950 5100 2250 4800 2250 4800 1950 4 0 0 10 0 0 16 0.0000 4 165 120 4900 2190 7\001 -6 6 5100 1950 5400 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 1950 5400 1950 5400 2250 5100 2250 5100 1950 4 0 0 10 0 0 16 0.0000 4 180 120 5200 2190 3\001 -6 -6 6 5400 1950 6300 2250 6 5400 1950 5700 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 1950 5700 1950 5700 2250 5400 2250 5400 1950 4 0 0 10 0 0 16 0.0000 4 180 120 5500 2190 1\001 -6 6 5700 1950 6000 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 1950 6000 1950 6000 2250 5700 2250 5700 1950 4 0 0 10 0 0 16 0.0000 4 165 120 5800 2190 2\001 -6 6 6000 1950 6300 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 1950 6300 1950 6300 2250 6000 2250 6000 1950 4 0 0 10 0 0 16 0.0000 4 165 120 6100 2190 4\001 -6 -6 6 6600 1950 7500 2250 6 6900 1950 7200 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 1950 7200 1950 7200 2250 6900 2250 6900 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7000 2190 2\001 -6 6 7200 1950 7500 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 1950 7500 1950 7500 2250 7200 2250 7200 1950 4 0 0 10 0 0 16 0.0000 4 180 120 7300 2190 6\001 -6 6 6600 1950 6900 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 1950 6900 1950 6900 2250 6600 2250 6600 1950 4 0 0 10 0 0 16 0.0000 4 180 120 6700 2190 3\001 -6 -6 6 7500 1950 8400 2250 6 7500 1950 7800 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 1950 7800 1950 7800 2250 7500 2250 7500 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7600 2190 7\001 -6 6 7800 1950 8100 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 1950 8100 1950 8100 2250 7800 2250 7800 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7900 2190 2\001 -6 6 8100 1950 8400 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 1950 8400 1950 8400 2250 8100 2250 8100 1950 4 0 0 10 0 0 16 0.0000 4 180 120 8200 2190 6\001 -6 -6 6 8400 1950 9300 2250 6 8400 1950 8700 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 1950 8700 1950 8700 2250 8400 2250 8400 1950 4 0 0 10 0 0 16 0.0000 4 180 120 8500 2190 5\001 -6 6 8700 1950 9000 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 1950 9000 1950 9000 2250 8700 2250 8700 1950 4 0 0 10 0 0 16 0.0000 4 165 120 8800 2190 2\001 -6 6 9000 1950 9300 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9000 1950 9300 1950 9300 2250 9000 2250 9000 1950 4 0 0 10 0 0 16 0.0000 4 165 120 9100 2190 4\001 -6 -6 6 9600 1950 10500 2250 6 9600 1950 9900 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 1950 9900 1950 9900 2250 9600 2250 9600 1950 4 0 0 10 0 0 16 0.0000 4 165 120 9700 2190 2\001 -6 6 9900 1950 10200 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 1950 10200 1950 10200 2250 9900 2250 9900 1950 4 0 0 10 0 0 16 0.0000 4 180 120 10000 2190 1\001 -6 6 10200 1950 10500 2250 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 1950 10500 1950 10500 2250 10200 2250 10200 1950 4 0 0 10 0 0 16 0.0000 4 180 120 10300 2190 5\001 -6 -6 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 1800 1950 2100 1950 2100 2250 1800 2250 1800 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 3900 1950 4200 1950 4200 2250 3900 2250 3900 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 4200 1950 4500 1950 4500 2250 4200 2250 4200 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 6300 1950 6600 1950 6600 2250 6300 2250 6300 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 9300 1950 9600 1950 9600 2250 9300 2250 9300 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 10500 1950 10800 1950 10800 2250 10500 2250 10500 1950 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 10800 1950 11100 1950 11100 2250 10800 2250 10800 1950 -6 6 1800 3900 11100 4200 6 2100 3900 3900 4200 6 2700 3900 3000 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3900 3000 3900 3000 4200 2700 4200 2700 3900 4 0 0 10 0 0 16 0.0000 4 180 120 2800 4140 1\001 -6 6 2100 3900 2400 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3900 2400 3900 2400 4200 2100 4200 2100 3900 4 0 0 10 0 0 16 0.0000 4 165 120 2200 4140 2\001 -6 6 2400 3900 2700 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3900 2700 3900 2700 4200 2400 4200 2400 3900 4 0 0 10 0 0 16 0.0000 4 165 120 2500 4140 2\001 -6 6 3000 3900 3300 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3900 3300 3900 3300 4200 3000 4200 3000 3900 4 0 0 10 0 0 16 0.0000 4 165 120 3100 4140 2\001 -6 6 3300 3900 3600 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3900 3600 3900 3600 4200 3300 4200 3300 3900 4 0 0 10 0 0 16 0.0000 4 180 120 3400 4140 3\001 -6 6 3600 3900 3900 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3900 3900 3900 3900 4200 3600 4200 3600 3900 4 0 0 10 0 0 16 0.0000 4 180 120 3700 4140 3\001 -6 -6 6 4500 3900 5400 4200 6 4800 3900 5100 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 3900 5100 3900 5100 4200 4800 4200 4800 3900 4 0 0 10 0 0 16 0.0000 4 180 120 4900 4140 1\001 -6 6 4500 3900 4800 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 3900 4800 3900 4800 4200 4500 4200 4500 3900 4 0 0 10 0 0 16 0.0000 4 165 120 4600 4140 2\001 -6 6 5100 3900 5400 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 3900 5400 3900 5400 4200 5100 4200 5100 3900 4 0 0 10 0 0 16 0.0000 4 165 120 5200 4140 2\001 -6 -6 6 5400 3900 6300 4200 6 5400 3900 5700 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 3900 5700 3900 5700 4200 5400 4200 5400 3900 4 0 0 10 0 0 16 0.0000 4 180 120 5500 4140 1\001 -6 6 5700 3900 6000 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 3900 6000 3900 6000 4200 5700 4200 5700 3900 4 0 0 10 0 0 16 0.0000 4 165 120 5800 4140 2\001 -6 6 6000 3900 6300 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 3900 6300 3900 6300 4200 6000 4200 6000 3900 4 0 0 10 0 0 16 0.0000 4 165 120 6100 4140 2\001 -6 -6 6 6600 3900 7500 4200 6 6600 3900 6900 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 3900 6900 3900 6900 4200 6600 4200 6600 3900 4 0 0 10 0 0 16 0.0000 4 180 120 6700 4140 1\001 -6 6 6900 3900 7200 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 3900 7200 3900 7200 4200 6900 4200 6900 3900 4 0 0 10 0 0 16 0.0000 4 180 120 7000 4140 1\001 -6 6 7200 3900 7500 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 3900 7500 3900 7500 4200 7200 4200 7200 3900 4 0 0 10 0 0 16 0.0000 4 180 120 7300 4140 1\001 -6 -6 6 7500 3900 8400 4200 6 7500 3900 7800 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 3900 7800 3900 7800 4200 7500 4200 7500 3900 4 0 0 10 0 0 16 0.0000 4 180 120 7600 4140 1\001 -6 6 7800 3900 8100 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 3900 8100 3900 8100 4200 7800 4200 7800 3900 4 0 0 10 0 0 16 0.0000 4 180 120 7900 4140 3\001 -6 6 8100 3900 8400 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 3900 8400 3900 8400 4200 8100 4200 8100 3900 4 0 0 10 0 0 16 0.0000 4 180 120 8200 4140 3\001 -6 -6 6 8400 3900 9300 4200 6 8400 3900 8700 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 3900 8700 3900 8700 4200 8400 4200 8400 3900 4 0 0 10 0 0 16 0.0000 4 180 120 8500 4140 1\001 -6 6 8700 3900 9000 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 3900 9000 3900 9000 4200 8700 4200 8700 3900 4 0 0 10 0 0 16 0.0000 4 165 120 8800 4140 2\001 -6 6 9000 3900 9300 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9000 3900 9300 3900 9300 4200 9000 4200 9000 3900 4 0 0 10 0 0 16 0.0000 4 180 120 9100 4140 1\001 -6 -6 6 9600 3900 10500 4200 6 9600 3900 9900 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9600 3900 9900 3900 9900 4200 9600 4200 9600 3900 4 0 0 10 0 0 16 0.0000 4 180 120 9700 4140 3\001 -6 6 9900 3900 10200 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 9900 3900 10200 3900 10200 4200 9900 4200 9900 3900 4 0 0 10 0 0 16 0.0000 4 180 120 10000 4140 1\001 -6 6 10200 3900 10500 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 10200 3900 10500 3900 10500 4200 10200 4200 10200 3900 4 0 0 10 0 0 16 0.0000 4 180 120 10300 4140 3\001 -6 -6 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 1800 3900 2100 3900 2100 4200 1800 4200 1800 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 3900 3900 4200 3900 4200 4200 3900 4200 3900 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 4200 3900 4500 3900 4500 4200 4200 4200 4200 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 6300 3900 6600 3900 6600 4200 6300 4200 6300 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 9300 3900 9600 3900 9600 4200 9300 4200 9300 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 10500 3900 10800 3900 10800 4200 10500 4200 10500 3900 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 10800 3900 11100 3900 11100 4200 10800 4200 10800 3900 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 15 0 0 16 0.0000 4 180 240 1825 840 17\001 -6 6 2100 600 2400 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 600 2400 600 2400 900 2100 900 2100 600 4 0 0 15 0 0 16 0.0000 4 165 120 2200 840 2\001 -6 6 2400 600 2700 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 600 2700 600 2700 900 2400 900 2400 600 4 0 0 15 0 0 16 0.0000 4 195 240 2425 840 13\001 -6 6 2700 600 3000 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 600 3000 600 3000 900 2700 900 2700 600 4 0 0 15 0 0 16 0.0000 4 180 240 2725 840 10\001 -6 6 3600 600 3900 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 600 3900 600 3900 900 3600 900 3600 600 4 0 0 15 0 0 16 0.0000 4 180 240 3625 840 23\001 -6 6 3300 600 3600 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 600 3600 600 3600 900 3300 900 3300 600 4 0 0 15 0 0 16 0.0000 4 165 240 3325 840 27\001 -6 6 3000 600 3300 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 600 3300 600 3300 900 3000 900 3000 600 4 0 0 15 0 0 16 0.0000 4 165 240 3025 840 20\001 -6 6 2100 3300 2400 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3300 2400 3300 2400 3600 2100 3600 2100 3300 4 0 0 15 0 0 16 0.0000 4 165 120 2200 3540 8\001 -6 6 1800 3300 2100 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3300 2100 3300 2100 3600 1800 3600 1800 3300 4 0 0 15 0 0 16 0.0000 4 165 240 1825 3540 20\001 -6 6 2400 3300 2700 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3300 2700 3300 2700 3600 2400 3600 2400 3300 4 0 0 15 0 0 16 0.0000 4 180 240 2425 3540 16\001 -6 6 2700 3300 3000 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3300 3000 3300 3000 3600 2700 3600 2700 3300 4 0 0 15 0 0 16 0.0000 4 195 240 2725 3540 13\001 -6 6 3600 3300 3900 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3300 3900 3300 3900 3600 3600 3600 3600 3300 4 0 0 15 0 0 16 0.0000 4 180 240 3625 3540 26\001 -6 6 3300 3300 3600 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3300 3600 3300 3600 3600 3300 3600 3300 3300 4 0 0 15 0 0 16 0.0000 4 180 240 3325 3540 30\001 -6 6 3000 3300 3300 3600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3300 3300 3300 3300 3600 3000 3600 3000 3300 4 0 0 15 0 0 16 0.0000 4 180 240 3025 3540 23\001 -6 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 900 3750 1275 8550 1275 8550 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 900 3450 1350 9750 1350 9750 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 900 3150 1425 7650 1425 7650 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 900 2850 1500 4650 1500 4650 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 900 2550 1575 5550 1575 5550 1950 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 4 1 1 1.00 60.00 120.00 1950 900 1950 1650 6750 1650 6750 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 60.00 120.00 2250 900 2250 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 3300 3750 3000 9450 3000 9450 2250 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 3300 3450 2925 10650 2925 10650 2250 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 3300 3150 2850 8550 2850 8550 2250 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 3300 2850 2775 5550 2775 5550 2250 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 3300 2550 2700 6450 2700 6450 2250 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2250 3300 2250 2625 4050 2625 4050 2250 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 4 1 1 1.00 60.00 120.00 1950 3300 1950 2550 7650 2550 7650 2250 4 0 0 20 0 12 16 0.0000 4 210 1050 600 2175 edgetab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 verttab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3525 vendtab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 4125 edlotab\001 scotch_6.0.9/doc/src/scotch/m42_a1.eps0000644000302600021200000001065213322403377017600 0ustar pelegrinpelegrin%!PS-Adobe-3.0 EPSF-3.0 %%Title: m42_a1.fig %%Creator: fig2dev Version 3.2 Patchlevel 5d %%CreationDate: Wed Mar 18 11:58:08 2015 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 290 146 %Magnification: 1.0000 %%EndComments %%BeginProlog /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def /pageheader { save newpath 0 146 moveto 0 0 lineto 290 0 lineto 290 146 lineto closepath clip newpath -107.3 180.7 translate 1 -1 scale $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc } bind def /pagefooter { $F2psEnd restore } bind def %%EndProlog pageheader % % Fig objects follow % % % here starts figure with depth 50 % Ellipse 7.500 slw n 2400 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 3600 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 2400 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 3600 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 6000 1200 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 6000 2400 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Polyline 0 slj 0 slc n 3600 1200 m 3600 2400 l gs col0 s gr % Polyline n 4800 1200 m 4800 2400 l gs col0 s gr % Polyline n 2400 1200 m 6000 1200 l 6000 2400 l 2400 2400 l cp gs col0 s gr % Polyline n 1800 600 m 6600 600 l 6600 3000 l 1800 3000 l cp gs col7 s gr /Times-Roman ff 266.67 scf sf 2325 1050 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 266.67 scf sf 3525 1050 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 266.67 scf sf 2325 2775 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 266.67 scf sf 3525 2775 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 266.67 scf sf 5925 2775 m gs 1 -1 sc (4) col0 sh gr % here ends figure; pagefooter showpage %%Trailer %EOF scotch_6.0.9/doc/src/scotch/scotch_logo_color.gif0000644000302600021200000001462213303015264022266 0ustar pelegrinpelegrinGIF87a@€óQÇÇÁÏÏÏÀÀ3ô}&ÿ¡BÿºTÿæ§ÿÐ|ÿÿÿ,@€þ€ g "S¹­ø…WÉeB§šÞ„®9΀ت/ ßyì×2 m‡ÑèŽ'ã¯ck‰½Ò¥”ÒœC]tE x'_/F î@ƒt@¨©Óæx9®ËÉbúýìF³ûn{qze…xv„‡hoi‹‚s‡’‰u‹~mކˆ’œ‚•f—k™o“^¡e žx¦ l£§¬vŸŸª®£±€³·­µ”¿]¯»š½ÁÀʃÂÄÆo˸ˑÔgº²ÒÍ]ZU;XBâPßS8å?ááä)æÞíKAêæ[îIðVâóñ÷Dôè-ö{çï>pòž´Ç “„Y–Ôã×ð 6ØÌWÄb:ˆþ%:4¸#É#¨Æ(“ÕÈTÊi/±,õÈVnÛVòjYSL›©dÉ'NZ{fò:T¥ ¤6Ÿeã•3¥/kRµA=ZmRVª[­uŠMëU«É¼–{Ö&ljAf\HQã“uánìXRîɺtóá};2oa} íR$ì1î…"ïÕë7bŽ>¶|Nò_Á•cŽÜwsÈË(›NSzŒ©Q±aE ]v[E³[×F;6in—ª¹¦åÄøë§z’£H~3MGb=w>‹yªå7ƒjwºÜúêÎ¥C¯ž½£†íÞ•¿@mú€èÙÜ?g}=÷òêÏßÿ^±â³ÎL93ÖdýÙ@›-5×ak}:é]«Þnb¥}êÐNqïŒ 9¢ûº«qû…¡5ûc½û^¼ê µðÀ_<ï½3«ü`4æþ|»ÿþ\ð!LOÂñÐgŸ|óˆÉòŠ{K ø­]‚~ûé÷ñþ+ůÿ<üŠš¯¿üøoj6ì#Fþâ׿C¥¯~¼ŸùCÀ°}ô_H¿ôÍO½³ŸÝWÀ ^ð€ºÓ`ôÚ÷Á°€Làùç@šP}*áù^8 ØÐ†-ôŸwGBjoàÃÞ1äὤUo3AdÉG½" !‰÷[âöŒØ=&ÊŠ#”¢þ:nÈÅ.ÚpŠÒÂ"µ’Z/zB4©ø'^B|×›hňQfdc ܘFäÅQ‹^ d ùxG5^.t`x Ar'¤_ %XÀæœ$#-HCN*R“+ì¡#GiLJ2„1¤¡%¸Ê>þÏ$¥#{xÉEn2’œa-AJSæ’ƒ»D%,=9YÎ2˜ŽØa%}Ø 4³z¦4+0M6LÓ™0¦1©Mjz›Ø´æ7‹1NtœäD§4Ï™ÎvVóê,';¯éNnZˆžø,<ë©Nvj“‹÷,§@ÅÏ~´ 5çAùéÎ?ÐóŸÿtæ<þêL‡RÔM¨=£sQiZT£]h> ÊQê³ #ŨH³)K…–”¡EiG7šÏ_®Ò–½#%·‰KW¾ò–ºü%1A(L S¨´Ä /yÈÊö³§°T¦MQ8TUw², ,[©ÃT.³–Uýd2½ÚT°&u‚KeêQ—bL®Âp˜gÅ_ÃÇœŽ’¤äcÃ7ÄCÖqyz-$Ö(- ‚« ÚúW?¢Q‰~cû½º:‚”{l,™YÉÚѲâ;lð Z<Ê1\<íáøXÑn³G,_i ©D~U©W-æ(×êÔà†…jW)YV¤•¨c%®þæþçÅÛ"7 RMä"xêKŸF×¹ +n¡›À¬RPt+NeÈ[³V7“ÉU. céEí>WªËÅßSÅ›Vì ²3À"f;‹‘ðjv¯{U­c‹ØÙ6²"˜¥kŸh`üÎ÷¿‰ð¸Dç}pñ·ÀåbÔö’a—]CsW잆4´½³iÓc¹d)´‹¸u1€Û§[bØ¿µaå€aC À ó C¸µÉfÈsãÄ6 »EÌfÆ òÆþ'8dÕì+8α‡qœå•QÃH€Ž9w‡–}Nc–㆙¥å+{îem¾ãr62Íݹ‚oÜ€ Ì1`rüþá£5íÅ©Ó××hG-.úØÇ]Ä3÷Hl/fXƾ¢k·˜‹Ë?¶q†-hxi¸Ôš†Œ—–éÙ±î7„t‡oHéT›æ[]$4­[|hU'Zm›òþ<êKßpÇ{࢔qƒä»ÙfdnrÛžÌã?ûù·>Æöß„ü°*ß&ËàÎñ˜Ñ<ãnë&Ø’p³á¸LʘYãØî.ó›éö¸ÂÍùpvÈ6~+@F“s9ÙYÔÆ0¤½,ï‚×Ù†4³´‰j$ìºÕ£³0¤ÁÌqüz/`µÈC=iŽØ8~ô–=.qqØPÌ¡¾xf~¬kàÒœå3p;lâþUw å¨¥8ÆY½h–ÚÇ(Gùþ½ëŠ×¥‹ü~´Ÿ•Nko2á¾½1Š«kšóÛÚ1r`B®ï}ç˜ÓPÙ±MóžÜø±”vJå'ˆÊP¢RÕܧcÌ>{±PxÀ…ÿ pˆÙѾaŸÌ©( 82æ—Æ6)Ïœ\³»Ïÿ^úÆœŸäø˜ßýþw¶œ':„üß óç³ý¿?-*î£ÒCªt X@ÔwwT€”†Û’òåñ}¬»ØŸø(HðŒùCmlGî^;Âï"w ¤s•û9ñùéúòÕnøÛÐ? ZPîÇp&;])Kò½›âd¦ݵB²l‡Œù ¼þ®)Ñ%œ@ôþçÄÿK s;i7"¾wob~u'kâ·‡$K¢€È7K3B@B.b2R&QV~xW(bIâ}ZwCp}l‚&m2èVnSc··9äF°e ²m8JdFJ|#,v+b Sƒ‚Ô$y†…ù׃-êvo5}›3 <( 7èƒW˜l£Dg(£„7ˆn:%9S‘…•ð…A¨l_`L\è8ÏÆ3ž¶ùÇrD‡ûtŽÔ"HB8-¯Õn'±_…5J-ei1ÀSÙ‚v;tqu5‡Áb›1y±dp‘U‰Ø‡‚h:˜ø€¸/þ’¸\T‰u˜‰¼ÆM(mÍ–kÍ'jm‰ S í‹Koš(HçvfH,5ø‚DèEcÑ‹ÊV†<èmm8paÐ2Y‡u §uÆfd,699(ŒµgÂÀb—†W(1˜…Áˆi1Óh(jˆoË ŒØ/à–e;GhÏiÊÒ‰ä"H[°MN7’x4øƒÿ  Q„–‹‚¤&X’ˆ/>Wëè4n÷ŽÆÖ3¾uaUíu4wŠ…(H—–ˆÉn2— ÙˆíuûHk™¶ ùv2vdæî˜u!i‘ÀõÍ8“¥4„DæqiQ‘ΗŽýxtñXJI&xÅÖþޤ§27èdbgyv¸l-Å„ÊXdk6”Ï(‘Iù‘ˆãŽ[‰C°°†g¶2ì&nâ–„¸x†D¹sŠ÷pxc%x+®H¹Žp©1[)—@vtñ¦†dYd ‰h\¹—aù[΂ugh›6¯Usi)‡C‡|r錜‘‘‰s怙"Yrv™X·Y¶’€Ø’Šh.oH;†Il«y¤q˜ Çhýð{铎é‰cFlrØ,¢YsÉ`©˜gn×Å™ `chÇeï(’É‘1–Šq3m}c[™r ·›  ­‰a1y” ‘‹‰a$3œÎÉšDFƒñ¨uG!jÙ™ÕþÙlÔ  ùŽËy“FˆžiIe»88O(†èXÄVvªdV [‰—]H1µ¹•B †Is9¶ ºš0³%˜„YyØÆvhÉœä6“ðˆCú4  q©ùj8 r0º e-0pÚ)›ìòæyšðŒ²öŒ–‘¡ ›ë¢•‰cÆì’rdŸ—ÖœªuJ:™ Ù¢ÇI-1Z£0Ú«§e6Èi£FÊš­3¦»y¦ZÊ ÅéºeÜYaSš¬Y º9zÜrc*ç–W*À¦ŒNvŸ¥„êc’Ð¥„JŸ‚J )—¥¬Çš1zÿ…JlÊ º£þ| ¨)±§0šzF !:©æŸëù8OˆzÔˆ*'z…Z ¯Šz°Š÷  Ÿ… q–Z¨*—9¾:ª*ã¨: óv2ºo«pˆóh¢£š9¼ëˆz·¶©‡zÊZ«>5Úº­Ú ¦Qã«ÏÚ:´ªÙÚ­q®Ûªr£á¬ˆÚ­Iêkñy¢—®¢êšÚb¯ûv¯Ý:§‡Áˆý¶t×J´z°ìŠûo˜÷oËó¡:«ê6z ‹/çÊ®òj‹¨°öš­«ýº°™ç¢·‰Š€…þ¦V™´j±#[2 z2k)‘±%K«½Ògýf±?z‚Ó²Ûþ¯hq¯«¬0 Œâik²Fñ´žÎ6­â{ía-k|ÿ1{€z>K´¨§ [¶?‹z›~óñ)EÛ¯2 {z¶D´ P*©¶x˳‡1»°÷i˵áW) 볡w¶ À( µ´ jK˜¢wä—€`ZûoGB¹‹k¸6¶b¸ {¶è—¹g"¶R»€P¸ g³«‹~R¸¡ë³(f˺c[sò#^»AÛg”Ë»gÛ€5¢¹\ øK—y°*(!-¶˜×o²ºÑ˹¹[!ü÷! [¶6k¼!¶Õ º)øµ±ëoý¶‚/¼«&×û¸þg¼ÑÛ¹†Û¼ò»cÂ¼Þ $^k(þw°®·¿_k²zÛ«+À’Âx”bzc¶õ«º ·ž÷y‡Ë¹.û¿) ·@ë»xò¾A¼†K*ü'ð6}ૺA«¸¾\·‹g”ž‚—‚• f÷o*ên;²‘ ¶š—¼u{«ŽSŽt»tk­šƒ®Ïûo­Ê½«Áw –ÀÄ5ûÀÆz«â8yÛÄ €œÅ8ó–lhµÀ¶# yGj¾‰v„ «çÀ®‘úhórjlº7K5l£´zkªëÃ…rœvlÄÁsj< ²ÌYŒ°2 aiœ²¨9b5°tK—e¦é˜Áj«þ8ð[ÜWªö°F'vIÀÉ™g£Ÿ¹ªr°=̰, l z| ¯»È*©5zÆ¢ª†ÈëM×È~š,~3Ãu ÆõyÉ:£œÐž\‰³W<bê£Å™Ìlsº‰ª5Á¯š:ÍqðÌœÌú¶´<éÊ­pÊ{úg°¡³àÊ ©Õ´3¸ õv 5éÂaL•W™ú #š“ç QHÎÛ¡£mÁŸñ8–Ú€Ïðèš¼xl… £bº U …ÒçƒQª«¯¯£ìÕÏy¹¢nÉáx‘$r®˜c‘aiGgXØ"&’‘©¯¨quZ‡5Îèœ\f˜fCZv»9¯`ˆz8þœÜùg†¡£”Ú‘¿,;?Ðr°õ‡agˆ ±‘ŸFÈÐR—îybyjphÕn Ê©ÒR0€ç|c>M|S`iÏ9JhBÀȦ˜Â\7Ù\‹Ú í¶ ÚžÍ (=Ÿ×LmVK¹ÐkסóÉ‘vÌd…@–&zª]ô²VÏjUUá‡?™×):×ߦƒvM]Mù÷Ø6mybÙTÏeðƒÛ0xHY3ëè'½‰‡9Í-û…œ4RxÖº­ÒÀ<×'IŽÔŠ»VÉÁÌævµ‡Vš€¤ÛȳFùÉœ•XÂÜÖÝZ3Ý·ã{ŽZ–;Òõ\Ãþ­‹µÄwù§JǰÞbùVàQÒ€ÝKø]uµdß?¥ßëu@î…^Ð%ß©m_§ß%4ܧÄ]°ôOÆ• Â_l%„_•ßÿ­à>ôÜWTWº=ZVáYtÞzFÞþXQT’FT€ÍWo@ËÒ}ZÞeZQDâÆáŸ…âXõÛžÌ_0þІãmMÐÝ`CÞEÿeF»ÅZæ @ÞãÕ󊉅_@0Ub•^.\V¾]nT~ßç5\^®åéMà]žåa¾åÏ•áj5àöÅåWæõ]ïEVñ5ç_~ålÞædþæuWÇætnæqè÷…OS'5S!õR)µN+¥Q¥èþþèòéŠ>éžè›Žéù¤éÅé¡îéµOîèãS¢®NEéÐDê µê %S&åR–NR·¾è¹n댮R¨žP­~ê»NS½.N».êjnæ{ÞÞ‚žçoT_É>ç7íe.íV•[|nè>íØߊäæÏŽåŽç}NßF%^àîJ…^^ÛNCÐ~çîì®^}NååMã#^[I.ä÷n<5®ïžXÖ`ü.E𠆯ãcdãá`ïAþGâîý~Ý¿âš5å/=oäñŸðU^\k~]&/èÜ.îÙÎî$ïQEVÕÞîz¾ìÑNó\nó3=é.þæçÞìå>^-îrçvÞó)¯çëóÌŽLg>îñŸïÌSñ?ð ßWO=UdõSßð[_rvâL®õUÏõm„õeÿâ/ƒI¯Ž¬hg°âb¥to4q/§pßܵæj} ×j3Ì8KÛ&l”ς梅ÿ’ªHµŒ-Æ+«øW £½ „dÄe¹–…9•ßÑœÏøçÏ›ƒß9š/˜v¿÷€ß÷³\°oçúzû< ‰¯Cûyo:·O.üö¸Ï÷¾ÏûdüÌÝúÄÿÖT*û>-ü.Iø*ú§/ÎØ\µ—ýØ_ýÐÿü‹ïüƒ?ù–}¬Éý­–þÿΘ¯©Ooãooæú¦Oþîÿù¸ŠþÔºú¿oüøÏüµ¯û!ÆúÄ ÀÖkÞZR/´K±»&sS—}³³Ìöd½ßxš*gÃáf?PðK 9E”m tú>-”h¥.aÝ”v8ž6½JpP,.c•¿@¼%gÍ%ñ{`Pôù>¿¾¼Â:;D¼D:9Ÿ½¾H@ÁÈCźGGNCÍÎ9ËÉ@IALF ÐMÏÆSÑ?ÒÁËÅ«ÔÓÛÃÕÐJX^BÚ\UÝÌÖDÙ=À×KÜO\Ýfã×d_áZàaÔëã‚éÒe`hlVÛhÞîÁê`gÐpÇíóÈôö»ûÃzŠ ¾‚þþ=ÿ~ü ä#hMßÁ‚÷rÝØðŸÀ„5)¼R_D‡þ‹Hp"B‹)îÛ¨ÑäÀG‚Tø1_F€1;ìXse½˜0ù±Ä—ÒçÅŸ9Kä¹°hJ—…žÜióèͤö–.-õiÏ‘S3V½ygCœ¯V…ýJBÒ @7ú¨ OX;dßÎuÛI®µfÓž%t·m!¿ÇÒ5»vÀ^×Û¥û×o\ÂyÑÜ·1ÜË™ëŽÌqaÇ!oÍxó†Ä$’U>=¸õkέSXÍöèÒ¹qË]Ûðm͹1ÃF]X5ã7€¾{noä¬uïÐæÌ˜5\ÌXÙ±]MþìÚÝTy³Â»ìR¾œ¿^1 x6ëÇ·ï>? |ðÖ}GbÿûõÐ`O¼ëÒ#C>úô=üt" þ˜Xð‰T0Á0¼òúóB8×ÚJî0ÊøR¬9êP|mÄÏØZ,67s/ÏJL,F_®4míÅqœ±ÇÊN\.·é˜ƒnÄ#u-Å%¥{,Å&3‹Ò¶$qœRÉä|3«Jæd„²Ëè°ÜÄ!¤pC#äîÂ÷Ø$ðÍ '¬0>8;Ô¯CÛÌ3B7ù¼sÎÓÔCD÷ôÏ#ú$tÑ: TO5mtRCí¤ôPG7µSH͈4Ô0³¼KÔ¤ÒÔÎ `kÑ20µ ±¬Ê^5’ÕRw<µV]TÉ3»ò7\e5-´a¿,ÖÉcy#“ÉeW ²8ɼT.ÚR§ÕãY)Ÿd.SIåôC ÃEÔÏHé,7Îs-U·Rq-LWÏ@ùëÜ";scotch_6.0.9/doc/src/scotch/s_f_gr1.fig0000644000302600021200000003526113303015264020107 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 6150 600 9300 3450 6 6375 1800 6675 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6525 1950 150 150 6525 1950 6675 1950 4 0 0 10 0 0 16 0.0000 4 180 120 6475 2040 1\001 -6 6 7575 1800 7875 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7725 1950 150 150 7725 1950 7875 1950 4 0 0 10 0 0 16 0.0000 4 165 120 7675 2040 2\001 -6 6 7275 600 7575 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7425 750 150 150 7425 750 7575 750 4 0 0 10 0 0 16 0.0000 4 180 120 7375 840 3\001 -6 6 8475 900 8775 1200 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8625 1050 150 150 8625 1050 8775 1050 4 0 0 10 0 0 16 0.0000 4 165 120 8575 1140 4\001 -6 6 8475 3000 8775 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8625 3150 150 150 8625 3150 8775 3150 4 0 0 10 0 0 16 0.0000 4 180 120 8575 3240 5\001 -6 6 6975 3000 7275 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7125 3150 150 150 7125 3150 7275 3150 4 0 0 10 0 0 16 0.0000 4 180 120 7075 3240 6\001 -6 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8925 1950 150 150 8925 1950 9075 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 5 7125 3150 8625 3150 7725 1950 8925 1950 8625 1050 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 6525 1950 7425 750 7725 1950 6525 1950 7125 3150 7725 1950 8625 1050 7425 750 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 8925 1950 8625 3150 4 0 0 12 0 2 16 0.0000 4 165 120 6150 2025 4\001 4 0 0 12 0 2 16 0.0000 4 165 120 8625 825 4\001 4 0 0 12 0 2 16 0.0000 4 165 120 9150 1875 4\001 4 0 0 12 0 2 16 0.0000 4 165 120 8850 3300 4\001 4 0 0 12 0 2 16 0.0000 4 165 120 7275 3450 4\001 4 0 0 12 0 2 16 0.0000 4 165 120 7425 2175 1\001 4 0 0 12 0 -1 16 0.0000 4 165 120 7950 825 2\001 4 0 0 12 0 -1 16 0.0000 4 165 120 7650 1425 2\001 4 0 0 12 0 -1 16 0.0000 4 165 120 8250 1650 2\001 4 0 0 12 0 -1 16 0.0000 4 180 120 8850 1575 1\001 4 0 0 12 0 -1 16 0.0000 4 180 120 8850 2625 1\001 4 0 0 12 0 -1 16 0.0000 4 180 120 8175 2475 3\001 4 0 0 12 0 -1 16 0.0000 4 180 120 7875 3075 3\001 4 0 0 12 0 -1 16 0.0000 4 180 120 7500 2775 3\001 4 0 0 12 0 -1 16 0.0000 4 180 120 6900 2550 1\001 4 0 0 12 0 -1 16 0.0000 4 180 120 7125 1875 1\001 4 0 0 12 0 -1 16 0.0000 4 180 120 6750 1425 1\001 4 0 0 12 0 -1 16 0.0000 4 165 120 8400 2175 2\001 4 0 0 12 0 2 16 0.0000 4 165 120 7050 825 4\001 4 0 0 8 0 0 16 0.0000 4 165 120 8875 2040 7\001 -6 6 600 600 2100 900 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 1\001 -6 4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 baseval\001 -6 6 1800 1800 2100 2100 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 4 0 0 15 0 0 16 0.0000 4 165 240 1825 2040 24\001 -6 6 1800 1200 2100 1500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 4 0 0 10 0 0 16 0.0000 4 165 120 1900 1440 7\001 -6 6 1800 2400 2100 2700 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 2400 1800 2700 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 2400 2100 2700 -6 6 2100 4200 2400 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 4200 2400 4200 2400 4500 2100 4500 2100 4200 4 0 0 15 0 0 16 0.0000 4 165 120 2200 4440 4\001 -6 6 2400 4200 2700 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 4200 2700 4200 2700 4500 2400 4500 2400 4200 4 0 0 15 0 0 16 0.0000 4 180 240 2425 4440 10\001 -6 6 2700 4200 3000 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 4200 3000 4200 3000 4500 2700 4500 2700 4200 4 0 0 15 0 0 16 0.0000 4 195 240 2725 4440 13\001 -6 6 3000 4200 3300 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 4200 3300 4200 3300 4500 3000 4500 3000 4200 4 0 0 15 0 0 16 0.0000 4 180 240 3025 4440 16\001 -6 6 3300 4200 3600 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 4200 3600 4200 3600 4500 3300 4500 3300 4200 4 0 0 15 0 0 16 0.0000 4 195 240 3325 4440 19\001 -6 6 3600 4200 3900 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 4200 3900 4200 3900 4500 3600 4500 3600 4200 4 0 0 15 0 0 16 0.0000 4 165 240 3625 4440 22\001 -6 6 1800 4200 2100 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 4 0 0 10 0 0 16 0.0000 4 180 120 1900 4440 1\001 -6 6 9000 5550 9300 5850 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 9000 5550 9300 5550 9300 5850 9000 5850 9000 5550 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9300 5550 9000 5850 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9000 5550 9300 5850 -6 6 3900 4200 4200 4500 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 4200 4200 4200 4200 4500 3900 4500 3900 4200 4 0 0 15 0 0 16 0.0000 4 180 240 3925 4440 25\001 -6 6 2100 5550 2400 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 5550 2400 5550 2400 5850 2100 5850 2100 5550 4 0 0 10 0 0 16 0.0000 4 165 120 2200 5790 2\001 -6 6 2400 5550 2700 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 5550 2700 5550 2700 5850 2400 5850 2400 5550 4 0 0 10 0 0 16 0.0000 4 180 120 2500 5790 6\001 -6 6 2700 5550 3000 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 5550 3000 5550 3000 5850 2700 5850 2700 5550 4 0 0 10 0 0 16 0.0000 4 180 120 2800 5790 3\001 -6 6 3000 5550 3300 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 5550 3300 5550 3300 5850 3000 5850 3000 5550 4 0 0 10 0 0 16 0.0000 4 165 120 3100 5790 4\001 -6 6 3300 5550 3600 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 5550 3600 5550 3600 5850 3300 5850 3300 5550 4 0 0 10 0 0 16 0.0000 4 180 120 3400 5790 1\001 -6 6 3600 5550 3900 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 5550 3900 5550 3900 5850 3600 5850 3600 5550 4 0 0 10 0 0 16 0.0000 4 165 120 3700 5790 7\001 -6 6 3900 5550 4200 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 5550 4200 5550 4200 5850 3900 5850 3900 5550 4 0 0 10 0 0 16 0.0000 4 180 120 4000 5790 6\001 -6 6 4200 5550 4500 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 5550 4500 5550 4500 5850 4200 5850 4200 5550 4 0 0 10 0 0 16 0.0000 4 180 120 4300 5790 5\001 -6 6 4500 5550 4800 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 5550 4800 5550 4800 5850 4500 5850 4500 5550 4 0 0 10 0 0 16 0.0000 4 180 120 4600 5790 1\001 -6 6 4800 5550 5100 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 5550 5100 5550 5100 5850 4800 5850 4800 5550 4 0 0 10 0 0 16 0.0000 4 165 120 4900 5790 2\001 -6 6 5100 5550 5400 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 5550 5400 5550 5400 5850 5100 5850 5100 5550 4 0 0 10 0 0 16 0.0000 4 165 120 5200 5790 4\001 -6 6 5400 5550 5700 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 5550 5700 5550 5700 5850 5400 5850 5400 5550 4 0 0 10 0 0 16 0.0000 4 165 120 5500 5790 2\001 -6 6 5700 5550 6000 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 5550 6000 5550 6000 5850 5700 5850 5700 5550 4 0 0 10 0 0 16 0.0000 4 165 120 5800 5790 7\001 -6 6 6000 5550 6300 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 5550 6300 5550 6300 5850 6000 5850 6000 5550 4 0 0 10 0 0 16 0.0000 4 180 120 6100 5790 3\001 -6 6 6300 5550 6600 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 5550 6600 5550 6600 5850 6300 5850 6300 5550 4 0 0 10 0 0 16 0.0000 4 165 120 6400 5790 7\001 -6 6 6600 5550 6900 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 5550 6900 5550 6900 5850 6600 5850 6600 5550 4 0 0 10 0 0 16 0.0000 4 165 120 6700 5790 2\001 -6 6 6900 5550 7200 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 5550 7200 5550 7200 5850 6900 5850 6900 5550 4 0 0 10 0 0 16 0.0000 4 180 120 7000 5790 6\001 -6 6 7200 5550 7500 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 5550 7500 5550 7500 5850 7200 5850 7200 5550 4 0 0 10 0 0 16 0.0000 4 165 120 7300 5790 2\001 -6 6 7500 5550 7800 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 5550 7800 5550 7800 5850 7500 5850 7500 5550 4 0 0 10 0 0 16 0.0000 4 180 120 7600 5790 1\001 -6 6 7800 5550 8100 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 5550 8100 5550 8100 5850 7800 5850 7800 5550 4 0 0 10 0 0 16 0.0000 4 180 120 7900 5790 5\001 -6 6 8100 5550 8400 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 5550 8400 5550 8400 5850 8100 5850 8100 5550 4 0 0 10 0 0 16 0.0000 4 180 120 8200 5790 5\001 -6 6 8400 5550 8700 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 5550 8700 5550 8700 5850 8400 5850 8400 5550 4 0 0 10 0 0 16 0.0000 4 165 120 8500 5790 2\001 -6 6 8700 5550 9000 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 5550 9000 5550 9000 5850 8700 5850 8700 5550 4 0 0 10 0 0 16 0.0000 4 165 120 8800 5790 4\001 -6 6 1800 5550 2100 5850 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 5550 2100 5550 2100 5850 1800 5850 1800 5550 4 0 0 10 0 0 16 0.0000 4 180 120 1900 5790 3\001 -6 6 1800 6300 2100 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 6300 2100 6300 2100 6600 1800 6600 1800 6300 4 0 0 10 0 0 16 0.0000 4 180 120 1900 6540 1\001 -6 6 2100 6300 2400 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 6300 2400 6300 2400 6600 2100 6600 2100 6300 4 0 0 10 0 0 16 0.0000 4 180 120 2200 6540 1\001 -6 6 2400 6300 2700 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 6300 2700 6300 2700 6600 2400 6600 2400 6300 4 0 0 10 0 0 16 0.0000 4 180 120 2500 6540 1\001 -6 6 3300 6300 3600 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 6300 3600 6300 3600 6600 3300 6600 3300 6300 4 0 0 10 0 0 16 0.0000 4 180 120 3400 6540 1\001 -6 6 2700 6300 3000 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 6300 3000 6300 3000 6600 2700 6600 2700 6300 4 0 0 10 0 0 16 0.0000 4 165 120 2800 6540 2\001 -6 6 3000 6300 3300 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 6300 3300 6300 3300 6600 3000 6600 3000 6300 4 0 0 10 0 0 16 0.0000 4 165 120 3100 6540 2\001 -6 6 3600 6300 3900 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 6300 3900 6300 3900 6600 3600 6600 3600 6300 4 0 0 10 0 0 16 0.0000 4 165 120 3700 6540 2\001 -6 6 3900 6300 4200 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 6300 4200 6300 4200 6600 3900 6600 3900 6300 4 0 0 10 0 0 16 0.0000 4 180 120 4000 6540 3\001 -6 6 4200 6300 4500 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 6300 4500 6300 4500 6600 4200 6600 4200 6300 4 0 0 10 0 0 16 0.0000 4 180 120 4300 6540 3\001 -6 6 4500 6300 4800 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 6300 4800 6300 4800 6600 4500 6600 4500 6300 4 0 0 10 0 0 16 0.0000 4 180 120 4600 6540 1\001 -6 6 4800 6300 5100 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 6300 5100 6300 5100 6600 4800 6600 4800 6300 4 0 0 10 0 0 16 0.0000 4 165 120 4900 6540 2\001 -6 6 5100 6300 5400 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 6300 5400 6300 5400 6600 5100 6600 5100 6300 4 0 0 10 0 0 16 0.0000 4 165 120 5200 6540 2\001 -6 6 5700 6300 6000 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 6300 6000 6300 6000 6600 5700 6600 5700 6300 4 0 0 10 0 0 16 0.0000 4 180 120 5800 6540 1\001 -6 6 5400 6300 5700 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 6300 5700 6300 5700 6600 5400 6600 5400 6300 4 0 0 10 0 0 16 0.0000 4 165 120 5500 6540 2\001 -6 6 6000 6300 6300 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 6300 6300 6300 6300 6600 6000 6600 6000 6300 4 0 0 10 0 0 16 0.0000 4 165 120 6100 6540 2\001 -6 6 6300 6300 6600 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 6300 6600 6300 6600 6600 6300 6600 6300 6300 4 0 0 10 0 0 16 0.0000 4 180 120 6400 6540 1\001 -6 6 6600 6300 6900 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 6300 6900 6300 6900 6600 6600 6600 6600 6300 4 0 0 10 0 0 16 0.0000 4 180 120 6700 6540 3\001 -6 6 6900 6300 7200 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 6300 7200 6300 7200 6600 6900 6600 6900 6300 4 0 0 10 0 0 16 0.0000 4 180 120 7000 6540 3\001 -6 6 7200 6300 7500 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 6300 7500 6300 7500 6600 7200 6600 7200 6300 4 0 0 10 0 0 16 0.0000 4 180 120 7300 6540 3\001 -6 6 7500 6300 7800 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 6300 7800 6300 7800 6600 7500 6600 7500 6300 4 0 0 10 0 0 16 0.0000 4 180 120 7600 6540 1\001 -6 6 7800 6300 8100 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 6300 8100 6300 8100 6600 7800 6600 7800 6300 4 0 0 10 0 0 16 0.0000 4 180 120 7900 6540 3\001 -6 6 8100 6300 8400 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 6300 8400 6300 8400 6600 8100 6600 8100 6300 4 0 0 10 0 0 16 0.0000 4 180 120 8200 6540 1\001 -6 6 8400 6300 8700 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 6300 8700 6300 8700 6600 8400 6600 8400 6300 4 0 0 10 0 0 16 0.0000 4 165 120 8500 6540 2\001 -6 6 8700 6300 9000 6600 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 6300 9000 6300 9000 6600 8700 6600 8700 6300 4 0 0 10 0 0 16 0.0000 4 180 120 8800 6540 1\001 -6 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 10 0 0 16 0.0000 4 165 120 1900 3240 4\001 -6 6 2100 3000 2400 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 4 0 0 10 0 0 16 0.0000 4 180 120 2200 3240 1\001 -6 6 2400 3000 2700 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3000 2700 3000 2700 3300 2400 3300 2400 3000 4 0 0 10 0 0 16 0.0000 4 165 120 2500 3240 4\001 -6 6 2700 3000 3000 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 4 0 0 10 0 0 16 0.0000 4 165 120 2800 3240 4\001 -6 6 3000 3000 3300 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3000 3300 3000 3300 3300 3000 3300 3000 3000 4 0 0 10 0 0 16 0.0000 4 165 120 3100 3240 4\001 -6 6 3300 3000 3600 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3000 3600 3000 3600 3300 3300 3300 3300 3000 4 0 0 10 0 0 16 0.0000 4 165 120 3400 3240 4\001 -6 6 3600 3000 3900 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3000 3900 3000 3900 3300 3600 3300 3600 3000 4 0 0 10 0 0 16 0.0000 4 165 120 3700 3240 4\001 -6 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 1950 4500 1950 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4050 4500 4050 4800 9150 4800 9150 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 4500 3750 4875 8250 4875 8250 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 4500 3450 4950 7350 4950 7350 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 4500 3150 5025 6450 5025 6450 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 4500 2850 5100 5550 5100 5550 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 4500 2550 5175 4650 5175 4650 5550 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2250 4500 2250 5250 2850 5250 2850 5550 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 1 1 1.00 60.00 120.00 1800 3750 2100 3750 2100 4200 4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vertnbr\001 4 0 0 20 0 12 16 0.0000 4 210 1050 600 2025 edgenbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vlbltab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 verttab\001 4 0 0 20 0 12 16 0.0000 4 210 1050 600 5775 edgetab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 6525 edlotab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3225 velotab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vendtab\001 scotch_6.0.9/doc/src/scotch/s_f_out1.ps0000644000302600021200000000203313303015264020152 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_out2.src s_f_out.xyz - %%Creator: out (F. Pellegrini, LaBRI, Bordeaux) %%CreationDate: Tue Oct 3 15:47:42 1995 %%BoundingBox: 0 0 475 475 %%Pages: 0 %%EndComments /A { 0 360 arc fill } bind def /c { setrgbcolor } bind def /g { setgray } bind def /L { lineto stroke } bind def /l { lineto } bind def /m { moveto } bind def /n { newpath } bind def gsave 1 setlinecap 0.007200 0.007200 scale n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip 0 g n 8250 57750 m 24750 57750 L n 8250 57750 m 8250 41250 L n 24750 57750 m 24750 41250 L n 57750 57750 m 57750 41250 L n 8250 41250 m 24750 41250 L n 8250 41250 m 8250 24750 L n 24750 41250 m 24750 24750 L n 57750 41250 m 57750 24750 L n 8250 24750 m 24750 24750 L n 8250 24750 m 8250 8250 L n 24750 24750 m 41250 24750 L n 24750 24750 m 24750 8250 L n 41250 24750 m 57750 24750 L n 41250 24750 m 41250 8250 L n 57750 24750 m 57750 8250 L n 8250 8250 m 24750 8250 L n 24750 8250 m 41250 8250 L n 41250 8250 m 57750 8250 L grestore scotch_6.0.9/doc/src/scotch/s_f_mult.pdf0000644000302600021200000001552613303015264020405 0ustar pelegrinpelegrin%PDF-1.4 %Çì¢ 5 0 obj <> stream xœ•VËn[G Ý߯˜eR “á çµmPÝ5±Š® Åq\Hrbèï÷œ¹W’½H Ø")>çõÍO.Èg|ïË»ÕÝ?/Áý¿ûåÛBêàÆ×þè~ÛÁ©9*>„ÝîóbÁ„Oa·;.oÞ?Þ>=ßN÷owÿ.”|v¿êÿݧåÍ×/·Ïwbç"¦Õþ÷iãëa¿ï–À\¬-¸ã"µK®|&èO‡åËC>º‚O½Á;R3CóÔ;|"Õ*æi­øâR*òšJðìRäÕ㢊þçwZØÿ[ºï=Rw1uö ¢øNµWX²D¸ìSm ‡ì+mz,äÁñ~™¢–}è®tîÀ@Ñ·Úõ ¢âªï)fßòjF´œ Ku‡¶ƒ¤–&:KÀ h5À¯ö¢á+Jn~x"™!4&b¸fŽ™#£ñ(¾©“é _ªgóŽó÷K)¨ÞØ7Õ·ìëÔ)ÐÙ`I>´mLìKÜ0õmÃ2À@î™Vz—â¹ I5ÚR$s ³ ˜Ë\³sÕÝU÷7 •¤¯ o“©OØž)TíCÊ®c÷ª€>šr6•úY@‰ö‹Š¹'ߢ[ýkyD€ÏÌ/ªU¤=ˆµÃÈQå‹£,5©uùLÚ/ ¤†À¦æÒÌWÖ„*Ô]=[ ‘B$ÓÄjÕbâ¼A0H9n¬™™Ô¥¢É©ÄAœIַɆy Co¼YVµj%ñÜêž8¡/£b“6V~9TrBWÒ)A9Ù+jNµnþ¢Høˆ˜{.âh6Í#|FzÑ´îô_ñ º(wW«²%balæôp”Mi… a.Ó™6oQ$ \Dì(»áO5JB¼fWMË΀Ž¡Ã‰;Ñ©8ëQ¯Õ8Ñ‘œ'ÊChóÅ’ª8‹ E¡iº‘]5-;V8c—69ø a88å±á%Ëa_*˱ÊÂîEE,™ˆCvo¤"#Ër(A…åÈO˼ɤû£g3ªÃ¬ždÉIÃG‹9 /Íbtfâ<3¹g&C¸m3‡œH|mÁgÍÆ ›M©{-¶ø5Ǻñͨ£Ec²˜5"Ë¡XŠÙÃØÜk/6RèϸiÖ°\·°‘"Ï3V€ò > ÷ã ¹€ˆ.&üÄmƒÿ£71§&OŒŒg‚6ZEcÒ{Z‘{¼èÍ_lɈË9¾Ô^}qWß5ïÕSHWÈ8x³%(èùö¸õ"õYáŸhŒÊé‚+\²fF«9ê“#óhU®`ÑÙ•–CP-ÍÖ·¼k«Ö¤Ìõ8–’-mò Èuºób7?÷úŽrSÊcð?OßnîëíÓwHóM„¼ñ þëéñðxº¿û´y‰ މª¿;÷ñîóÃéúw}~Xþ¨€oxendstream endobj 6 0 obj 1143 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœeVkTSW¾1$çL‡Ò–4U°&Y¶¶>ÑÚjW…:VT@@yX@  Ix%$„@‚†ð&<ÃK fì̬sY×Y37vÍÌùs×½÷œ}öùö÷ý屄âp8žQ²LiÎÚHef²Âý½†^ΡŸ_B¯à£XŒ^ÜÊ[A…µsŸO.xzt>ÿÄ!oò¯gÈͧÈÔӗýúU°R¥Í–¥¥çJ^‰ŽÜ÷êêÕkþ÷gC@@€ä ö?#’iŽ,M!y™}QKåJU¦T‘»EÌΖËe‡$ir­*=G’œ’"Mq‡Å$Ë¥‡%Ûdr™J¥TK^ ~U²ÑÏoÃZö±q‹dw^¦4[¹F"S¤Ê²\­$Y‘"Ù“)MK–d&§HÝ „dÊr³µ’M~2Å£wË2æåHC–ìVHÂ$‘Ò´¹•Á 7.08!r¤_äEîA ùËÏœ/¸µ´¯°ÙZ_a|¬¾ QÌXÄšÍ;‹X:Ì-h»U×3˜ä!ש)GM}©©QÔZØhiÜÓÒæTwÈ’¹!qâïQieL^š!<ŸåÈÇÔUÐIoè0ty¿™\_*h#ŸkBÁš#äyž‘_VVl./?>0U«± ­./¯*kù›‘ûƒ÷ºÝ_ÌÖ´å€Ü'ñ°r¿LÞÔ•/R+î6ÌྠŒñkBµ U•6¶VÍeÝv‹Óq¤}ùüÕ‹×§r÷ŒˆꪲU >cÎ33ý²Ý,îÓ4íéâ\_à’:–ì— æ7”[-"s±¥Øl’F%Å1š-f(…£eÖ2üsŽ¿¹?éÒähÏô ÈШÎÖ™òÀ'Uï¸"&'þŠÜ¥´/zØ9=äD8B4m>ŠóÉ”X šá&¦ÃÜlnZ¨Âvf*Ý-µ!ˆUA¸é"½¬Çûø7Û¾!¸³TpŸÞý±PWXTªœknž“}¦Kûô=y#IöpÀ‚ùµAqa¹šîžÎŽ®ªòêòZqY}yÔb‡«klÒ¡ˆíF̺]º’$)ÜÏÓÊ2|Ã&g'NvNÏŠª÷µ«OÂtÚ†G1³þk!ÈK‹ÕE9…Êb5àtåÐ)q‚K'GÈ“÷wƒæõqŽÍs鈟0>4-'°ßÎÛýzþ³;#MÆÔqM^²]Û >½]öî ¡g7ÇíפÇ&*·Ã›˜yîËu„{z¬u`Däè±;ú/¹Õϲàëä8î KÄO&!Y9ÍkEÚò28 8­¤ñŒ˜¾Êê)^—nÚ©ó)@u5Pøx½é ˜ñCR—ªñ`­cxÌ Ì³s›È’ £g‡Ä;Y<Àl.2µšl“°ÔmòáM~þÅ“ 1b7¨O‰ÂEЇ^Cü…ñ[“;!’ú3ÚQó`Ù,&³ü’L}ٮ̑û ´RYÂAU`Ftãu‚Ì]"Ô¸ˆ¹EÖo Ÿ…YèQ6mÂO½ÒÅù•v™Uó+±‹öÑÎf“¢]Ôše3µî¶·w$öîÙ£:%ÎJ,I+ß‚Å\ãÃÛÆ¢`w/ljaåcl„9L®/äEvÒ5F¦ŽçÛ½ÿòÎRÁOä]2!ì-k+ï…[p®áTχ®‘YøÆ GU}‡&69ײª¹Ã´åó?/i0A0~Š`s‰i«™Uè ½iÕ?V¨ÚCð“£¶ÖA–_NxqUx,ƒ4…•¹"w«RÌ+ÇHƉj§·óºâk:ïp,0t½Lxâ-¤a»¤¦6¯n™ªAUŦ#ë‚‚ýÂÒ3ÄùZ­ÎRš¡0h@j[ÑI 0!ûT©¾1·ÌÝꟴ¹`.'ŒYaͲ˜Êìzh…ŽÁaG]}ym¹ìeMå5pÆZƒÎ–a˜‚¾ÒîBfÌ|…ƒæÛ–IÀß Ò"¶¦0¼×"ú&ºk›Æ§ÄRMî /9‡Ï ôê2[Eíé¶‚÷*ÒìIþèGÑoþµüçæÙÍ2¶ü(?ÓßvðÔ±´P1‡`»ÉaùÍÀ¢,uð)&ñèïÉçÞOÎÙs@DfP©UV”]²·ÀGUÂ+@UV¨|ª®$Iüè0‚PKqD /oA5&ÏúØé_Ý<>|H nO/®´ ¥VMƒbˆ9Hj–]kê· :\½öq8 § dzúسRêß»v¹à4Ó—ÏŸ+i0BÈc6ýME–Í~;z«ÚÐ70‰E*I13Ë#¯óÅÓ÷„‚ygcÝyæbÒÚXurZ¾è@Vºeu«×¶Wr°èƒÝ^º>ЧgÏ›­²©¢|z[‚A°É¸Í­JS ÚQ]ÒàNBÐ~¢ªrs•Ê®\g_wWŸ3·[!öZLe]uÑÎùÛCòÏ .Mh›ÚZ¿j`»Ÿ>ݲ´æÁJÌt³¥5K 2Uñ;åq=ª³Z—ù¸ÛÝn"¸ÑØx»–ÉG_Zð6f>BLÐòáÌ rBÔ3^æƒÀùyk_ä kø¶ ¶U¸ YÍB]h+e7nlAaUE pÓ? #•ûtRÓ6{‡ÑtÐ1$ªƒßÿÄÝß÷×yzÞm÷|’¢þ ÉàT endstream endobj 13 0 obj <>stream 2010-10-18T00:32:04+02:00 2010-10-18T00:32:04+02:00 fig2dev Version 3.2 Patchlevel 5c s_f_mult.figpelegrin@brol () endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001458 00000 n 0000006349 00000 n 0000001399 00000 n 0000001248 00000 n 0000000015 00000 n 0000001228 00000 n 0000001523 00000 n 0000001624 00000 n 0000001991 00000 n 0000001564 00000 n 0000001594 00000 n 0000002265 00000 n 0000004857 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<97BC0DE5049D494B90D335EF5DB57C5F><97BC0DE5049D494B90D335EF5DB57C5F>] >> startxref 6565 %%EOF scotch_6.0.9/doc/src/scotch/s_f_out.xyz0000644000302600021200000000015313303015264020302 0ustar pelegrinpelegrin2 16 0 0 3 1 1 3 2 2 3 3 3 3 4 0 2 5 1 2 6 2 2 7 3 2 8 0 1 9 1 1 10 2 1 11 3 1 12 0 0 13 1 0 14 2 0 15 3 0 scotch_6.0.9/doc/src/scotch/s_f_run.eps0000644000302600021200000003732113322403377020252 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:27 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 317 319 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 319 moveto 0 0 lineto 317 0 lineto 317 319 lineto closepath clip newpath -40.0 378.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1500 1500 m 5700 1500 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 2100 m 5700 2100 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3300 m 5700 3300 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3900 m 5700 3900 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 4500 m 5700 4500 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 2700 m 5700 2700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 5100 m 5700 5100 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 5700 m 5700 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 1500 m 1500 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 1500 m 2100 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2700 1500 m 2700 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3300 1500 m 3300 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3900 1500 m 3900 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4500 1500 m 4500 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 1500 m 5100 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5700 1500 m 5700 5700 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 5850 m 1650 5550 l 1350 5550 l 1350 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 5250 m 1650 4950 l 1350 4950 l 1350 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4650 m 1650 4350 l 1350 4350 l 1350 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4050 m 1650 3750 l 1350 3750 l 1350 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 3450 m 1650 3150 l 1350 3150 l 1350 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 2850 m 1650 2550 l 1350 2550 l 1350 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 2250 m 1650 1950 l 1350 1950 l 1350 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 1650 m 1650 1350 l 1350 1350 l 1350 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 5850 m 2250 5550 l 1950 5550 l 1950 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 5250 m 2250 4950 l 1950 4950 l 1950 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4650 m 2250 4350 l 1950 4350 l 1950 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4050 m 2250 3750 l 1950 3750 l 1950 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 3450 m 2250 3150 l 1950 3150 l 1950 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 2850 m 2250 2550 l 1950 2550 l 1950 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 2250 m 2250 1950 l 1950 1950 l 1950 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 1650 m 2250 1350 l 1950 1350 l 1950 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 5850 m 3450 5550 l 3150 5550 l 3150 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 5250 m 3450 4950 l 3150 4950 l 3150 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4650 m 3450 4350 l 3150 4350 l 3150 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4050 m 3450 3750 l 3150 3750 l 3150 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 3450 m 3450 3150 l 3150 3150 l 3150 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 2850 m 3450 2550 l 3150 2550 l 3150 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 2250 m 3450 1950 l 3150 1950 l 3150 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 1650 m 3450 1350 l 3150 1350 l 3150 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 5850 m 4050 5550 l 3750 5550 l 3750 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 5250 m 4050 4950 l 3750 4950 l 3750 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4650 m 4050 4350 l 3750 4350 l 3750 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4050 m 4050 3750 l 3750 3750 l 3750 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 3450 m 4050 3150 l 3750 3150 l 3750 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 2850 m 4050 2550 l 3750 2550 l 3750 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 2250 m 4050 1950 l 3750 1950 l 3750 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 1650 m 4050 1350 l 3750 1350 l 3750 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 5850 m 4650 5550 l 4350 5550 l 4350 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 5250 m 4650 4950 l 4350 4950 l 4350 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4650 m 4650 4350 l 4350 4350 l 4350 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4050 m 4650 3750 l 4350 3750 l 4350 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 3450 m 4650 3150 l 4350 3150 l 4350 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 2850 m 4650 2550 l 4350 2550 l 4350 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 2250 m 4650 1950 l 4350 1950 l 4350 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 1650 m 4650 1350 l 4350 1350 l 4350 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 5850 m 5250 5550 l 4950 5550 l 4950 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 5250 m 5250 4950 l 4950 4950 l 4950 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4650 m 5250 4350 l 4950 4350 l 4950 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4050 m 5250 3750 l 4950 3750 l 4950 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 3450 m 5250 3150 l 4950 3150 l 4950 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 2850 m 5250 2550 l 4950 2550 l 4950 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 2250 m 5250 1950 l 4950 1950 l 4950 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 1650 m 5250 1350 l 4950 1350 l 4950 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 5850 m 5850 5550 l 5550 5550 l 5550 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 5250 m 5850 4950 l 5550 4950 l 5550 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4650 m 5850 4350 l 5550 4350 l 5550 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4050 m 5850 3750 l 5550 3750 l 5550 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 3450 m 5850 3150 l 5550 3150 l 5550 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 2850 m 5850 2550 l 5550 2550 l 5550 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 2250 m 5850 1950 l 5550 1950 l 5550 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 1650 m 5850 1350 l 5550 1350 l 5550 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 5850 m 2850 5550 l 2550 5550 l 2550 5850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 5250 m 2850 4950 l 2550 4950 l 2550 5250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4650 m 2850 4350 l 2550 4350 l 2550 4650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4050 m 2850 3750 l 2550 3750 l 2550 4050 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 3450 m 2850 3150 l 2550 3150 l 2550 3450 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 2850 m 2850 2550 l 2550 2550 l 2550 2850 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 2250 m 2850 1950 l 2550 1950 l 2550 2250 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 1650 m 2850 1350 l 2550 1350 l 2550 1650 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline 15.000 slw [90] 0 sd n 3600 1350 m 3600 5850 l gs col-1 s gr [] 0 sd % Polyline n 3525 1350 m 3675 1350 l gs col-1 s gr % Polyline n 3525 5850 m 3675 5850 l gs col-1 s gr % Polyline [90] 0 sd n 3450 3600 m 1350 3600 l gs col-1 s gr [] 0 sd % Polyline n 3450 3525 m 3450 3675 l gs col-1 s gr % Polyline n 1350 3525 m 1350 3675 l gs col-1 s gr % Polyline n 2325 5850 m 2475 5850 l gs col-1 s gr 7.500 slw % Ellipse n 1800 4200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 3600 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 1800 5400 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 2250 4800 m 1350 4800 l gs col-1 s gr [] 0 sd % Polyline n 1350 4725 m 1350 4875 l gs col-1 s gr % Polyline n 1380 3675 m 1275 3675 1275 5820 105 arcto 4 {pop} repeat 1275 5925 2220 5925 105 arcto 4 {pop} repeat 2325 5925 2325 3780 105 arcto 4 {pop} repeat 2325 3675 1380 3675 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2250 4725 m 2250 4875 l gs col-1 s gr % Polyline n 2325 3750 m 2475 3750 l gs col-1 s gr % Polyline n 2325 3750 m 2475 3750 l gs col-1 s gr % Polyline [90] 0 sd n 2400 3750 m 2400 5850 l gs col-1 s gr [] 0 sd % Polyline 7.500 slw n 3780 1275 m 3675 1275 3675 5820 105 arcto 4 {pop} repeat 3675 5925 5820 5925 105 arcto 4 {pop} repeat 5925 5925 5925 1380 105 arcto 4 {pop} repeat 5925 1275 3780 1275 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline 2 slj 15.000 slw n 1800 4200 m 1801 4200 l 1803 4200 l 1806 4201 l 1812 4202 l 1820 4203 l 1831 4205 l 1846 4207 l 1863 4210 l 1883 4213 l 1907 4216 l 1934 4220 l 1964 4224 l 1996 4228 l 2032 4233 l 2070 4238 l 2110 4242 l 2152 4247 l 2195 4252 l 2241 4256 l 2287 4260 l 2335 4264 l 2384 4268 l 2435 4271 l 2486 4274 l 2539 4276 l 2593 4277 l 2648 4278 l 2705 4277 l 2763 4276 l 2823 4274 l 2885 4272 l 2949 4267 l 3015 4262 l 3083 4256 l 3154 4247 l 3226 4238 l 3300 4227 l 3375 4214 l 3450 4200 l 3528 4183 l 3605 4166 l 3679 4147 l 3750 4127 l 3817 4107 l 3881 4086 l 3942 4066 l 4000 4045 l 4055 4023 l 4108 4002 l 4157 3980 l 4205 3959 l 4251 3937 l 4295 3915 l 4337 3893 l 4378 3871 l 4417 3849 l 4454 3828 l 4491 3806 l 4525 3785 l 4558 3764 l 4590 3744 l 4619 3725 l 4647 3707 l 4673 3690 l 4696 3674 l 4717 3659 l 4735 3647 l 4751 3635 l 4765 3626 l 4776 3618 l 4784 3612 l 4791 3607 l 4795 3604 l 4798 3602 l 4799 3600 l 4800 3600 l gs col-1 s gr % Polyline n 1800 5400 m 1801 5400 l 1802 5399 l 1806 5399 l 1811 5397 l 1818 5395 l 1827 5393 l 1840 5390 l 1855 5386 l 1873 5381 l 1894 5375 l 1918 5369 l 1945 5361 l 1974 5353 l 2006 5344 l 2041 5334 l 2077 5324 l 2116 5312 l 2156 5300 l 2197 5287 l 2241 5273 l 2285 5259 l 2331 5244 l 2377 5228 l 2425 5212 l 2474 5194 l 2524 5176 l 2575 5156 l 2627 5136 l 2680 5114 l 2735 5091 l 2791 5067 l 2849 5041 l 2909 5013 l 2971 4984 l 3034 4953 l 3100 4920 l 3167 4884 l 3236 4847 l 3307 4808 l 3378 4767 l 3450 4725 l 3524 4680 l 3597 4634 l 3668 4588 l 3736 4542 l 3800 4498 l 3862 4454 l 3921 4411 l 3977 4369 l 4031 4328 l 4082 4288 l 4130 4248 l 4177 4210 l 4221 4172 l 4264 4135 l 4305 4098 l 4345 4062 l 4384 4026 l 4421 3991 l 4456 3957 l 4491 3923 l 4524 3891 l 4555 3859 l 4585 3829 l 4614 3799 l 4640 3772 l 4665 3746 l 4688 3721 l 4709 3699 l 4727 3680 l 4744 3662 l 4758 3647 l 4769 3634 l 4779 3623 l 4786 3615 l 4792 3609 l 4796 3605 l 4798 3602 l 4799 3601 l 4800 3600 l gs col-1 s gr /Times-Roman ff 300.00 scf sf 900 4875 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 300.00 scf sf 2100 6300 m gs 1 -1 sc (CL2) col-1 sh gr /Times-Roman ff 300.00 scf sf 3300 1200 m gs 1 -1 sc (CL0) col-1 sh gr /Times-Roman ff 300.00 scf sf 675 3675 m gs 1 -1 sc (CL1) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/epsf.sty0000644000302600021200000003212113303015264017566 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Document Style Option `epsf' (October 17 90)}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Inclusion of EPSF documents into [Oz]TeX documents. %% Michel Mauny - April 25 90. %% Emmanuel Chailloux - October 17 90 %% History: % --------- %% April 11 91 %% Fixed several bugs [mauny] %% * Now accepts lines as %%BoundingBox:100 200 102 23 %% without space here ^ %% * Added a \leavevmode for \epfs{} to be accepted as single %% element of a \begin{center} ... \end{center} %% * Extracted calls to \newdimen for them to be global %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TeX does itself the recognition of the Bounding Box of the drawing. %% The macro is: %% %% \epsf{filename} %% [xscale=/,yscale=/] <- optional %% or (hsize=,vsize=)in pt %% [ps=] <- optional %% %% Order of parameters is important, and the 3rd cannot be used without the %% 2nd. %% %% A null hsize indicates the hsize scaled by the vsize scaling. %% A null vsize indicates the vsize scaled by the hsize scaling. %% A double null is the unit. %% %% This is not the first package to do that sort of things, but that one %% reads by itself the size of drawings, and is thus really trivial to use. %% %% This package may be extended in two ways: %% * usage of different versions of TeX (dvi2ps) (simple, but not trivial) %% * usage of different EPSF files types (tested only with FreeHand 2.0) %% should be trivial... %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% How to use this package? %% Two things to do: %% %% 1. Create an EPSF file %% Use FreeHand or any program capable of creating such files from %% drawings or whatever. %% Use the `Export' menu item (or anything equivalent), creating %% the file (say) draw.eps %% %% 2. In your [La]TeX document, place the following command where you %% want your drawing to appear: %% \epsf{draw.eps} %% And your drawing will be at that place, in a TeX box. %% You don't have to leave extra place for your drawing: %% it will be in a TeX box. %% %% Z If you want to specify a scaling (say 33.33333 %) then use the %% optional argument: %% \epsf{draw.eps}[xscale=2/3,yscale=2/3] %% Scalings may be negative, but must be specified with the form: %% /. %% IMPORTANT: try to use small numbers, otherwise you risk to get %% a TeX internal registers overflow. %% %% Z if you prefer to specify the vsize of you picture then use the %% optional argument : %% \epsf{draw.ps}(hsize=200,vsize=300) %% Dimensions are given in points with the TeX convension : %% 1in or 72pt. %% %% ZZ For real hackers only: if you want to add some PostScript to your %% drawing (indeed at its beginning), then use the second optional %% argument: %% \epsf{draw.eps}[xscale=1/1,yscale=1/1][ps=] %% The second argument must be specified in order to use the %% second one (if you are tired to do that, make a new macro with %% your default scaling. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% \DVITOPS indicates the default TeX. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\oztex{OzTeX}% \def\dvips{dvips}% \def\dvitops{dvitops}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Provide the appropriate value to \DVITOPS before installation. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%\let\DVITOPS=\dvitops% \let\DVITOPS=\dvips% %%\let\DVITOPS=\oztex% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Debugging options. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\yes={yes}% \def\no={no}% \let\DEBUGepsf=\yes% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% \@doTeXspecial has to be extended in order to work %% with other VI2PS programs %% OzTeX produces \special{ } %% and we produce - - translate %% scale %% %%%% Added by ... (PostScript comment) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% {% % #1 = filename % #2 = xmin, #3 = ymin % #4 = xmax, #5 = ymax % #6 = hscale, #7 = vscale % #8 = user postcript % \ifx\DEBUGepsf\yes % \typeout{doTexSpecial #1 #2 #3 #4 #5 #6 #7 #8} % \fi %%%% Added by \DVITOPS\space PostScript inclusion (epsf.sty) % %\advance\@pshoffset by -3pt %\catcode`\%=11 \newdimen\@pshscale\newdimen\@psvscale\newdimen\@pshoffset\newdimen\@psvoffset \gdef\@doTeXspecial#1#2#3#4#5#6#7#8{% \ifx\DVITOPS\oztex% \special{#1\space#6\space#7\space scale\space-#2\space-#3\space translate\space#8\space}% \else% \ifx\DVITOPS\dvips% \@pshscale=#6pt\@psvscale=#7pt %%% Some dvips require a percentage. In this case, comment out the next line \multiply\@pshscale by 100\multiply\@psvscale by 100% \@pshoffset=-#6pt\multiply\@pshoffset by #2 %\advance\@pshoffset by -1pt% \@psvoffset=-#7pt\multiply\@psvoffset by #3% \special{psfile="#1"\space% vscale=\expandafter\@numbof\the\@psvscale\space% hoffset=\expandafter\@numbof\the\@pshoffset\space% voffset=\expandafter\@numbof\the\@psvoffset\space% hscale=\expandafter\@numbof\the\@pshscale\space}% \else% \ifx\DVITOPS\dvitops% \@pshscale=#6pt% \@psvscale=#7pt% \@pshoffset=-#6pt\multiply\@pshoffset by #2% \@psvoffset=-#7pt\multiply\@psvoffset by #3% \special{psfile="#1"\space% hoffset=\expandafter\@numbof\the\@pshoffset\space% voffset=\expandafter\@numbof\the\@psvoffset\space% hscale=\expandafter\@numbof\the\@pshscale\space% vscale=\expandafter\@numbof\the\@psvscale}% \else% \let\DVITOPS=\dvitops% \@doTeXspecial{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}% \fi% \fi% \fi% }% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% Following definitions should not be changed (except bug fixes) %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Will change the catcodes of % when `parsing' header of EPS file % The ``:'' character will be parsed as a space (catcode = 10) \def\@setdrawingsyntax{\catcode`\%=11\catcode`\:=10\catcode`\!=11}% % % Need some counters and an input channel \newread\@drawingchannel% \newcount\@drawhsize% \newcount\@drawvsize% \newdimen\@xscale% \newdimen\@yscale% \newdimen\@vsize% \newdimen\@hsize% \newcount\@newvsize% \newcount\@newhsize% \newcount\@ovsize% \newcount\@ohsize% % % % \@scale at will multiply by % must be / (big numbers may produce overflows) \def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% % % {\catcode`\.=12\catcode`\p=12\catcode`\t=12\gdef\@dimentocount#1.#2pt{#1}}% % {\catcode`\p=12\catcode`\t=12\gdef\@numbof#1pt{#1}}% % \@drawingscale{p1}{q1}{p1}{q2} => xscale:=p1/q1, yscale:=p2/q2 \def\@scale#1at#2/#3{\divide#1 by #3\multiply#1 by #2}% \def\@drawingscale#1#2#3#4{% \@xscale=#1pt% \divide\@xscale by #2% \@yscale=#3pt\divide\@yscale by #4% }% % % \firstitem to => arg1:=car(arg2); arg2:=cdr(arg2) \def\firstitem#1to#2{\expandafter\makeseq#1\makeseq#1#2}% \long\def\makeseq#1 #2\makeseq#3#4{\gdef#4{#1}\gdef#3{#2}}% %% %% The user function %% \epsf{}[xscale=p1/q1,yscale=p2/q2][ps=] %% or \epsf{}(hsize=w,vsize=h)[ps=] %% Two optional arguments. If second is needed, then the first one must be %% present. %% \def\epsf#1{\leavevmode% Must leave vertical mode in order to execute \everypar \@ifnextchar[{\s@epsf{#1}}% {\@ifnextchar({\h@epsf{#1}}% {\s@epsf{#1}[xscale=1/1,yscale=1/1]}}}% %% \def\s@epsf#1[xscale=#2/#3,yscale=#4/#5]{% \@ifnextchar[{\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}]}% {\scale@epsf{#1}[xscale={#2}/{#3},yscale={#4}/{#5}][ps=\space]}}% % % More arguments to come? \def\h@epsf#1(hsize=#2,vsize=#3){% \@ifnextchar[{\dimen@epsf{#1}(hsize={#2},vsize={#3})}% {\dimen@epsf{#1}(hsize={#2},vsize={#3})[ps=\space]}}% % % The main function (not user acessible) % %% Used to check wether we found the box or not \newif\ifnosize \begingroup %%% Warning: comment character is & (and no more %) \@setdrawingsyntax\catcode`\&=14 && && What we will be looking for (`pt' is the supposed unit) \gdef\BoundingBox{%%BoundingBox}& && && \gdef\read@epsf#1{& && We accept PostScript and scales as optional parameters \bgroup\@setdrawingsyntax && Change the code of % \typeout{Opening #1}& && Verbose! \openin\@drawingchannel=#1 \ifeof\@drawingchannel\closein\@drawingchannel&& \typeout{LaTeX warning: can't open #1.}& && If no file, then ask the user \typeout{Size of the drawing? }& && the size of its drawing. \gdef\@minX{0}\gdef\@minY{0}& && \gdef\@maxX{596}\gdef\@maxY{846}& & \message{X (in pts): }& & \read-1 to\mX\global\edef\@maxX{\mX}& & \message{Y (in pts): }& & \read-1 to\mY\global\edef\@maxY{\mY}& \else && Otherwise: \read\@drawingchannel to\@drsize& Skipping first line (%!PS-Adobe...) \loop && repeat "get one line" \read\@drawingchannel to\@drsize& \typeout{\space\space\space\space \@drsize}&& echo it to the terminal \firstitem\@drsize to\BBox& \ifx\BBox\BoundingBox& && First word =? Bounding Box \nosizefalse& \firstitem\@drsize to\@minX&& If yes, then get the informations \firstitem\@drsize to\@minY&& i.e. minX, minY, maxX and maxY \firstitem\@drsize to\@maxX&& in that order \firstitem\@drsize to\@maxY&& \else\nosizetrue&& \fi \ifnosize\relax\repeat&& && If no, then get one more line, etc. \typeout{Closing}& && Verbose! \closein\@drawingchannel&& \fi \egroup } && \gdef\scale@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& \read@epsf{#1}& \common@epsf{#1}[xscale=#2/#3,yscale=#4/#5][ps=#6]& } & & \gdef\dimen@epsf#1(hsize=#2,vsize=#3)[ps=#4]{& \read@epsf{#1}& \@newvsize=#3& \@newhsize=#2& && && Computing vsize& \@drawvsize=\@maxY& \advance\@drawvsize by-\@minY& \ifnum\@newvsize=0& if newvsize=0 \ifnum\@newhsize=0& if newhsize=0 \common@epsf{#1}[xscale=1/1,yscale=1/1][ps=#4]& \else& else && Computing hsize \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& &&\ifnum\@newhsize=0& \@ohsize=\@drawhsize& \divide\@drawhsize by\@ohsize& \multiply\@drawhsize by\@newhsize& \multiply\@drawvsize by\@newhsize& \divide\@drawvsize by\@ohsize& \@drawingscale{\the\@newhsize}{\@ohsize} {\the\@newhsize}{\@ohsize}& \fi& fi \else& else \@ovsize=\@drawvsize& \divide\@drawvsize by\@ovsize& \multiply\@drawvsize by\@newvsize& && && Computing hsize \@newhsize=#2& \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& \ifnum\@newhsize=0& if newhsize=0 \multiply\@drawhsize by\@newvsize& \divide\@drawhsize by\@ovsize& \@drawingscale{\the\@newvsize}{\@ovsize} {\the\@newvsize}{\@ovsize}& \else& else \@ohsize=\@drawhsize& \divide\@drawhsize by\@ohsize& \multiply\@drawhsize by\@newhsize& \@drawingscale{\the\@newhsize}{\@ohsize} {\the\@newvsize}{\@ovsize}& \fi& fi \fi& fi && Infos to the terminal. \typeout{Drawing #1:}& \typeout{\space\space\space Width=\the\@drawhsize pt Heigth=\the\@drawvsize pt}& && && &\@newhsize=\@drawhsize\multiply\@newhsize by \@xscale &\@newvsize=\@drawvsize\multiply\@newvsize by \@yscale \typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& &\fbox{& \vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& {{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& {\expandafter\@numbof\the\@xscale}& {\expandafter\@numbof\the\@yscale}& {#4}}& &\hfill& }}}}& &}& & & \gdef\common@epsf#1[xscale=#2/#3,yscale=#4/#5][ps=#6]{& && Computing hsize \@drawhsize=\@maxX& \advance\@drawhsize by-\@minX& \@scale\@drawhsize at #2/#3& && Computing vsize \@drawvsize=\@maxY& \advance\@drawvsize by-\@minY& \@scale\@drawvsize at #4/#5& && Infos to the terminal. \typeout{Drawing #1:}& \typeout{\space\space\space Width \the\@drawhsize pt=(\@maxX -\@minX)*(#2/#3)Heigth \the\@drawvsize pt=(\@maxY -\@minY)*(#4/#5)}& && &\typeout{*********** #2 #3 #4 #5}& \@drawingscale{#2}{#3}{#4}{#5}& \typeout{\space\space\space Scalings: X=\the\@xscale\space Y=\the\@yscale}& && &\fbox{& \vbox to\@drawvsize pt{\vfill\hbox to\@drawhsize pt{& {{\@doTeXspecial{#1}\@minX\@minY\@maxX\@maxY& {\expandafter\@numbof\the\@xscale}& {\expandafter\@numbof\the\@yscale}& {#6}}& &\hfill& }}}& &}& } \endgroup scotch_6.0.9/doc/src/scotch/s_f_lea.ps0000644000302600021200000000662013303015264020031 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev %%CreationDate: Mon Jan 9 16:52:38 1995 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 261 117 %%Pages: 0 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /l {lineto} bind def /m {moveto} bind def /s {stroke} bind def /n {newpath} bind def /gs {gsave} bind def /gr {grestore} bind def /clp {closepath} bind def /graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul setrgbcolor} bind def /col-1 {} def /col0 {0 0 0 setrgbcolor} bind def /col1 {0 0 1 setrgbcolor} bind def /col2 {0 1 0 setrgbcolor} bind def /col3 {0 1 1 setrgbcolor} bind def /col4 {1 0 0 setrgbcolor} bind def /col5 {1 0 1 setrgbcolor} bind def /col6 {1 1 0 setrgbcolor} bind def /col7 {1 1 1 setrgbcolor} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix } def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 0 setlinecap 0 setlinejoin -49.0 220.0 translate 0.900 -0.900 scale 0.500 setlinewidth % Polyline n 239 199 m 259 239 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 119 159 m 199 119 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 279 159 m 319 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 59 239 m 79 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 79 199 m 99 239 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 199 119 m 279 159 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 119 159 m 159 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 79 199 m 119 159 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 139 239 m 159 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 159 199 m 179 239 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 219 239 m 239 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 319 199 m 339 239 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 299 239 m 319 199 l gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 239 199 m 279 159 l gs 0.50 setgray fill gr gs col-1 s gr % Ellipse n 219 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 59 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 259 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 319 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 239 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 139 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 198 119 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 279 158 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 119 158 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 159 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 339 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 179 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 79 199 5 5 0 360 DrawEllipse gs 0.75 setgray fill gr gs col-1 s gr % Ellipse n 299 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr % Ellipse n 99 239 5 5 0 360 DrawEllipse gs 0.00 setgray fill gr gs col-1 s gr $F2psEnd scotch_6.0.9/doc/src/scotch/s_i.tex0000644000302600021200000012766013465315041017406 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_i.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Introductions % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} \subsection{Static mapping} The efficient execution of a parallel program on a parallel machine requires that the communicating processes of the program be assigned to the processors of the machine so as to minimize its overall running time. When processes have a limited duration and their logical dependencies are accounted for, this optimization problem is referred to as \emph{scheduling}. When processes are assumed to coexist simultaneously for the entire duration of the program, it is referred to as \emph{mapping}. It amounts to balancing the computational weight of the processes among the processors of the machine, while reducing the cost of communication by keeping intensively inter-communicating processes on nearby processors. In most cases, the underlying computational structure of the parallel programs to map can be conveniently modeled as a graph in which vertices correspond to processes that handle distributed pieces of data, and edges reflect data dependencies. The mapping problem can then be addressed by assigning processor labels to the vertices of the graph, so that all processes assigned to some processor are loaded and run on it. In a SPMD context, this is equivalent to the \emph{distribution\/} across processors of the data structures of parallel programs; in this case, all pieces of data assigned to some processor are handled by a single process located on this processor. A mapping is called \emph{static\/} if it is computed prior to the execution of the program. Static mapping is NP-complete in the general case~\cite{gajo79}. Therefore, many studies have been carried out in order to find sub-optimal solutions in reasonable time, including the development of specific algorithms for common topologies such as the hypercube~\cite{errasa90,hamm92}. When the target machine is assumed to have a communication network in the shape of a complete graph, the static mapping problem turns into the \emph{partitioning\/} problem, which has also been intensely studied~\cite{basi94,hele93a,kaku95a,kaku95c,posili90}. However, when mapping onto parallel machines the communication network of which is not a bus, not accounting for the topology of the target machine usually leads to worse running times, because simple cut minimization can induce more expensive long-distance communication~\cite{hamm92,wacrevjo95}. \subsection{Sparse matrix ordering} Many scientific and engineering problems can be modeled by sparse linear systems, which are solved either by iterative or direct methods. To achieve efficiency with direct methods, one must minimize the fill-in induced by factorization. This fill-in is a direct consequence of the order in which the unknowns of the linear system are numbered, and its effects are critical both in terms of memory and computation costs. \\ An efficient way to compute fill reducing orderings of symmetric sparse matrices is to use recursive nested dissection~\cite{geli81}. It amounts to computing a vertex set~$S$ that separates the graph into two parts~$A$ and~$B$, ordering $S$ with the highest indices that are still available, and proceeding recursively on parts~$A$ and~$B$ until their sizes become smaller than some threshold value. This ordering guarantees that, at each step, no non-zero term can appear in the factorization process between unknowns of~$A$ and unknowns of~$B$. The main issue of the nested dissection ordering algorithm is thus to find small vertex separators that balance the remaining subgraphs as evenly as possible, in order to minimize fill-in and to increase concurrency in the factorization process. \subsection{Contents of this document} This document describes the capabilities and operations of \scotch, a software package devoted to static mapping, graph and mesh partitioning, and sparse matrix block ordering. \scotch\ allows the user to map efficiently any kind of weighted process graph onto any kind of weighted architecture graph, and provides high-quality block orderings of sparse matrices. The rest of this manual is organized as follows. Section~\ref{sec-project} presents the goals of the \scotch\ project. Sections~\ref{sec-algo-map} and~\ref{sec-algo-order} outline the most important aspects of the mapping and ordering algorithms that it implements, respectively. Section~\ref{sec-changes} summarizes the most important changes between version~\textsc{5.0} and previous versions. Section~\ref{sec-file} defines the formats of the files used in \scotch, section~\ref{sec-prog} describes the programs of the \scotch\ distribution, and section~\ref{sec-lib} defines the interface and operations of the \libscotch\ library. Section~\ref{sec-install} explains how to obtain and install the \scotch\ distribution. Finally, some practical examples are given in section~\ref{sec-examples}, and instructions on how to implement new methods in the \libscotch\ library are provided in section~\ref{sec-coding}. \section{The \scotch\ project} \label{sec-project} \subsection{Description} \scotch\ is a project carried out at the \textit{Laboratoire Bordelais de Recherche en Informatique\/} (LaBRI) of the Universit\'e de Bordeaux and within the Tadaam team-project of INRIA Bordeaux Sud-Ouest. Its goal is to study the application of graph theory to scientific computing. It focused first on static mapping, and has resulted in the development of the Dual Recursive Bipartitioning (or DRB) mapping algorithm and in the study of several graph bipartitioning heuristics~\cite{pell94a}, all of which have been implemented in the \scotch\ software package~\cite{pero96a}. Then, it focused on the computation of high-quality vertex separators for the ordering of sparse matrices by nested dissection, by extending the work that has been done on graph partitioning in the context of static mapping~\cite{pero97a,peroam99}. The ordering capabilities of \scotch\ have then been extended to native mesh structures, thanks to hypergraph partitioning algorithms. Diffusion-based graph partitioning methods have also been added~\cite{chpe06a,pell07b}. Version \textsc{5.0} of \scotch\ was the first one to comprise parallel graph ordering routines. The parallel features of \scotch\ are referred to as \ptscotch\ (``\emph{Parallel Threaded \scotch}''). While both packages share a significant amount of code, because \ptscotch\ transfers control to the sequential routines of the \libscotch\ library when the subgraphs on which it operates are located on a single processor, the two sets of routines have a distinct user's manual. Readers interested in the parallel features of \scotch\ should refer to the \emph{\ptscotch\ \textsc{\scotchver} User's Guide}~\scotchcitepuser. Version \textsc{6.0} of \scotch\ is oriented towards the development of new features, namely graph repartitioning and remapping~\cite{fope11a}. A whole set of direct $k$-way graph partitioning and mapping algorithms has also been implemented. Also, new target architectures have been created, to allow \scotch\ to map efficiently onto parts of regular target architectures~\cite{pellegrini:hal-01671156}, as it is the case when considering a potentially non-connected partition of a big machine, as provided by a batch scheduler. \subsection{Availability} Starting from version \textsc{4.0}, which has been developed at INRIA within the ScAlApplix project, \scotch\ is available under a dual licensing basis. On the one hand, it is downloadable from the \scotch\ web page as free/libre software, to all interested parties willing to use it as a library or to contribute to it as a testbed for new partitioning and ordering methods. On the other hand, it can also be distributed, under other types of licenses and conditions, to parties willing to embed it tightly into closed, proprietary software. \\ The free/libre software license under which \scotch\ \textsc{\scotchver} is distributed is the CeCILL-C license~\cite{cecill}, which has basically the same features as the GNU LGPL (``\textit{Lesser General Public License}''): ability to link the code as a library to any free/libre or even proprietary software, ability to modify the code and to redistribute these modifications. Version \textsc{4.0} of \scotch\ was distributed under the LGPL itself. \\ Please refer to section~\ref{sec-install} to see how to obtain the free/libre distribution of \scotch. \section{Static mapping algorithms} \label{sec-algo-map} The parallel program to be mapped onto the target architecture is modeled by a valuated unoriented graph $S$ called \emph{source graph\/} or \emph{process graph}, the vertices of which represent the processes of the parallel program, and the edges of which the communication channels between communicating processes. Vertex- and edge- valuations associate with every vertex $v_S$ and every edge $e_S$ of $S$ integer numbers $w_S(v_S)$ and $w_S(e_S)$ which estimate the computation weight of the corresponding process and the amount of communication to be transmitted on the channel, respectively. The target machine onto which is mapped the parallel program is also modeled by a valuated unoriented graph $T$ called \emph{target graph\/} or \emph{architecture graph}. Vertices $v_T$ and edges $e_T$ of $T$ are assigned integer weights $w_T(v_T)$ and $w_T(e_T)$, which estimate the computational power of the corresponding processor and the cost of traversal of the inter-processor link, respectively. A \emph{mapping} from $S$ to $T$ consists of two applications $\too{S,T} : V(S) \rghta V(T)$ and $\roo{S,T} : E(S) \rghta {\cal P}(E(T))$, where ${\cal P}(E(T))$ denotes the set of all simple loopless paths which can be built from $E(T)$. $\too{S,T}(v_S) = v_T$ if process $v_S$ of $S$ is mapped onto processor $v_T$ of $T$, and $\roo{S,T}(e_S) = \{ e^1_T, e^2_T, \ldots, e^n_T \}$ if communication channel $e_S$ of $S$ is routed through communication links $e^1_T$, $e^2_T$, \ldots, $e^n_T$ of $T$. $|\roo{S,T}(e_S)|$ denotes the dilation of edge $e_S$, that is, the number of edges of $E(T)$ used to route $e_S$. \subsection{Cost function and performance criteria} The computation of efficient static mappings requires an \emph{a priori\/} knowledge of the dynamic behavior of the target machine with respect to the programs which are run on it. This knowledge is synthesized in a \emph{cost function}, the nature of which determines the characteristics of the desired optimal mappings. The goal of our mapping algorithm is to minimize some communication cost function, while keeping the load balance within a specified tolerance. The communication cost function $f_C$ that we have chosen is the sum, for all edges, of their dilation multiplied by their weight: \bn f_C(\too{S,T},\roo{S,T}) \eqdef \hspace*{-0.25cm}\sum\limits_{e_S\in E(S)}\hspace*{-0.25cm} w_S(e_S)\,|\roo{S,T}(e_S)|\enspace. \en This function, which has already been considered by several authors for hypercube target topologies~\cite{errasa90,hamm92,hele94b}, has several interesting properties: it is easy to compute, allows incremental updates performed by iterative algorithms, and its minimization favors the mapping of intensively intercommunicating processes onto nearby processors; regardless of the type of routing implemented on the target machine (store-and-forward or cut-through), it models the traffic on the interconnection network and thus the risk of congestion. The strong positive correlation between values of this function and effective execution times has been experimentally verified by Hammond~\cite{hamm92} on the CM-2, and by Hendrickson and Leland~\cite{hele94a} on the nCUBE~2. \hfill~\\ The quality of mappings is evaluated with respect to the criteria for quality that we have chosen: the balance of the computation load across processors, and the minimization of the inter-processor communication cost modeled by function~$f_C$. These criteria lead to the definition of several parameters, which are described below. For load balance, one can define $\mmap$, the average load per computational power unit (which does not depend on the mapping), and $\dmap$, the load imbalance ratio, as\\[-0.5em] \bn \mmap \eqdef {\sum\limits_{v_S \in V(S)} w_S(v_S) \over \sum\limits_{v_T \in V(T)} w_T(v_T)} \hspace*{2.5em}\mbox{~and~} \en \bn \dmap \eqdef {\sum\limits_{v_T \in V(T)} \left|\left(\!\!{1 \over w_T(v_T)}\hspace*{-0.3em} \sum\limits_{\scriptsize \shortstack{$v_S \in V(S)$\\[-0.2em] $\too{S,T}(v_S) = v_T$}} \hspace*{-0.2em} w_S(v_S)\!\!\right)\:-\:\mmap\right| \over \sum\limits_{v_S \in V(S)} w_S(v_S)}\enspace. \en However, since the maximum load imbalance ratio is provided by the user in input of the mapping, the information given by these parameters is of little interest, since what matters is the minimization of the communication cost function under this load balance constraint. For communication, the straightforward parameter to consider is $f_C$. It can be normalized as $\mexp$, the average edge expansion, which can be compared to $\mdil$, the average edge dilation; these are defined as\\[-1.3em] \bn \mexp \eqdef {f_C \over \sum\limits_{e_S \in E(S)} w_S(e_S)} \hspace*{2.5em}\mbox{~and~}\hspace*{2.5em} \mdil \eqdef {\sum\limits_{e_S \in E(S)}|\roo{S,T}(e_S)| \over |E(S)|} \enspace. \en $\dexp \eqdef {\mexp \over \mdil}$ is smaller than $1$ when the mapper succeeds in putting heavily intercommunicating processes closer to each other than it does for lightly communicating processes; they are equal if all edges have same weight. \subsection{The Dual Recursive Bipartitioning algorithm} \label{sec-algo-drb} This mapping algorithm, which is the primary way to compute initial static mappings, uses a \emph{divide and conquer\/} approach to recursively allocate subsets of processes to subsets of processors~\cite{pell94a,pero96b}. It starts by considering a set of processors, also called \emph{domain}, containing all the processors of the target machine, and with which is associated the set of all the processes to map. At each step, the algorithm bipartitions a yet unprocessed domain into two disjoint subdomains, and calls a \emph{graph bipartitioning algorithm\/} to split the subset of processes associated with the domain across the two subdomains, as sketched in the following. \noi {\renewcommand{\baselinestretch}{0.95}\footnotesize\tt {% \begin{verbatim} mapping (D, P) Set_Of_Processors D; Set_Of_Processes P; { Set_Of_Processors D0, D1; Set_Of_Processes P0, P1; if (|P| == 0) return; /* If nothing to do. */ if (|D| == 1) { /* If one processor in D */ result (D, P); /* P is mapped onto it. */ return; } (D0, D1) = processor_bipartition (D); (P0, P1) = process_bipartition (P, D0, D1); mapping (D0, P0); /* Perform recursion. */ mapping (D1, P1); } \end{verbatim}}} \noi The association of a subdomain with every process defines a \emph{partial mapping\/} of the process graph. As bipartitionings are performed, the subdomain sizes decrease, up to give a complete mapping when all subdomains are of size~one. \\ The above algorithm lies on the ability to define five main objects: \begin{itemize} \item a \emph{domain structure}, which represents a set of processors in the target architecture; \item a \emph{domain bipartitioning function}, which, given a domain, bipartitions it in two disjoint subdomains; \item a \emph{domain distance function}, which gives, in the target graph, a measure of the distance between two disjoint domains. Since domains may not be convex nor connected, this distance may be estimated. However, it must respect certain homogeneity properties, such as giving more accurate results as domain sizes decrease~\cite{pero96b,pellegrini:hal-01671156}. The domain distance function is used by the graph bipartitioning algorithms to compute the communication function to minimize, since it allows the mapper to estimate the dilation of the edges that link vertices which belong to different domains. Using such a distance function amounts to considering that all routings will use shortest paths on the target architecture, which is how most parallel machines actually do. We have thus chosen that our program would not provide routings for the communication channels, leaving their handling to the communication system of the target machine; \item a \emph{process subgraph structure}, which represents the subgraph induced by a subset of the vertex set of the original source graph; \item a \emph{process subgraph bipartitioning function}, which bipartitions subgraphs in two disjoint pieces to be mapped onto the two subdomains computed by the domain bipartitioning function. \end{itemize} All these routines are seen as black boxes by the mapping program, which can thus accept any kind of target architecture and process bipartitioning functions. \subsubsection{Partial cost function} The production of efficient complete mappings requires that all graph bipartitionings favor the criteria that we have chosen. Therefore, the bipartitioning of a subgraph~$S'$ of $S$ should maintain load balance within the user-specified tolerance, and minimize the \emph{partial\/} communication cost function $f'_C$, defined as \bn f'_C(\too{S,T},\roo{S,T}) \eqdef \hspace*{-0.45cm}\sum\limits_{\mbox{\scriptsize \shortstack{$v\in V(S')$\\ $\{v,v'\}\in E(S)$}}}\hspace*{-0.45cm} w_S(\{v,v'\})\,|\roo{S,T}(\{v,v'\})|\enspace, \en which accounts for the dilation of edges internal to subgraph~$S'$ as well as for the one of edges which belong to the cocycle of $S'$, as shown in Figure~\ref{fig-bipcost}. Taking into account the partial mapping results issued by previous bipartitionings makes it possible to avoid local choices that might prove globally bad, as explained below. This amounts to incorporating additional constraints to the standard graph bipartitioning problem, turning it into a more general optimization problem termed \emph{skewed graph partitioning\/} by some authors~\cite{heledr97}. \begin{figure}[hbt] \hfill \parbox[b]{4.9cm}{ \hfill \includegraphics[scale=0.40]{s_f_rua.eps} \hfill\\ \textbf{a.} Initial position. }\ \hfill\ \parbox[b]{4.9cm}{ \hfill \includegraphics[scale=0.40]{s_f_rub.eps} \hfill\\ \textbf{b.} After one vertex is moved. }\hfill\ \caption% {Edges accounted for in the partial communication cost function when bipartitioning the subgraph associated with domain~$D$ between the two subdomains $D_0$ and $D_1$ of~$D$. Dotted edges are of dilation zero, their two ends being mapped onto the same subdomain. Thin edges are cocycle edges.} \label{fig-bipcost} \end{figure} \subsubsection{Execution scheme} From an algorithmic point of view, our mapper behaves as a greedy algorithm, since the mapping of a process to a subdomain is never reconsidered, and at each step of which iterative algorithms can be applied. The double recursive call performed at each step induces a recursion scheme in the shape of a binary tree, each vertex of which corresponds to a bipartitioning job, that is, the bipartitioning of both a domain and its associated subgraph. In the case of depth-first sequencing, as written in the above sketch, bipartitioning jobs run in the left branches of the tree have no information on the distance between the vertices they handle and neighbor vertices to be processed in the right branches. On the contrary, sequencing the jobs according to a by-level (breadth-first) travel of the tree allows any bipartitioning job of a given level to have information on the subdomains to which all the processes have been assigned at the previous level. Thus, when deciding in which subdomain to put a given process, a bipartitioning job can account for the communication costs induced by its neighbor processes, whether they are handled by the job itself or not, since it can estimate in $f'_C$ the dilation of the corresponding edges. This results in an interesting feedback effect: once an edge has been kept in a cut between two subdomains, the distance between its end vertices will be accounted for in the partial communication cost function to be minimized, and following jobs will be more likely to keep these vertices close to each other, as illustrated in Figure~\ref{fig-biprub}. \begin{figure}[hbt] \hfill \parbox[b]{5.2cm}{ \hfill \includegraphics[scale=0.40]{s_f_run.eps} \hfill\\ \textbf{a.} Depth-first sequencing. }\ \hfill\ \parbox[b]{5.2cm}{ \hfill \includegraphics[scale=0.40]{s_f_ruy.eps} \hfill\\ \textbf{b.} Breadth-first sequencing. }\hfill\ % \caption% {Influence of depth-first and breadth-first sequencings on the bipartitioning of a domain~$D$ belonging to the leftmost branch of the bipartitioning tree. With breadth-first sequencing, the partial mapping data regarding vertices belonging to the right branches of the bipartitioning tree are more accurate (C.L. stands for ``Cut Level'').} \label{fig-biprub} \end{figure} The relative efficiency of depth-first and breadth-first sequencing schemes with respect to the structure of the source and target graphs is discussed in~\cite{pero96b}. \subsubsection{Clustering by mapping onto variable-sized architectures} \label{sec-algo-variable} \index{Architecture|Variable-sized!see Clustering} \index{Clustering} Several constrained graph partitioning problems can be modeled as mapping the problem graph onto a target architecture, the number of vertices and topology of which depend dynamically on the structure of the subgraphs to bipartition at each step. Variable-sized architectures are supported by the DRB algorithm in the following way: at the end of each bipartitioning step, if any of the variable subdomains is empty (that is, all vertices of the subgraph are mapped only to one of the subdomains), then the DRB process stops for both subdomains, and all of the vertices are assigned to their parent subdomain; else, if a variable subdomain has only one vertex mapped onto it, the DRB process stops for this subdomain, and the vertex is assigned to it. The moment when to stop the DRB process for a specific subgraph can be controlled by defining a bipartitioning strategy that checks the validity of a criterion at each bipartitioning step (see for instance Section~\ref{sec-lib-func-stratgraphclusterbuild}), and maps all of the subgraph vertices to one of the subdomains when it becomes false. \subsection{Static mapping methods} \label{sec-algo-map-methods} The core of our static mapping software uses graph mapping methods as black boxes. It maintains an internal image of the current mapping, which records the target vertex index onto which each of the source graph vertices is mapped. It is therefore possible to apply several mapping methods in sequence, such that the first method computes an initial mapping to be further refined by the following methods, thus enabling us to define \emph{static mapping strategies}. The currently implemented static mapping methods are listed below. \begin{itemize} \iteme[\textbf{Multilevel}]\label{sec-algo-mle} This framework, which has been studied by several authors~\cite{basi94,hele93b,kaku95a} and should be considered as a strategy rather than as a method since it uses other methods as parameters, repeatedly reduces the size of the graph to map by finding matchings that collapse vertices and edges, computes a mapping of the coarsest graph obtained, and prolongs the result back to the original graph, as shown in Figure~\ref{fig-multiproc}. \begin{figure}[hbt] ~\hfill\includegraphics[scale=0.50]{s_f_mult.eps}\hfill\ ~ \caption% {The multilevel partitioning process. In the uncoarsening phase, the light and bold lines represent for each level the prolonged partition obtained from the coarser graph, and the partition obtained after refinement, respectively.} \label{fig-multiproc} \end{figure} The multilevel method, when used in conjunction with some local optimization methods to refine the projected partitions at every level, usually leads to a significant improvement in quality with respect to methods operating only on the finest graph. By coarsening the graphs, the multilevel algorithm broadens the scope of local optimization algorithms: it makes possible for them to account for topological structures of the original graph that would else be of a too high level for them to be encompassed in their local optimization process. \iteme[\textbf{Band}]\label{sec-algo-band} Like the multilevel method above, the band method is a framework, in the sense that it does not itself compute partitions, but rather helps other partitioning algorithms perform better. It is a refinement algorithm which, from a given initial partition, extracts a band graph of given width (which only contains graph vertices that are at most at this distance from the frontiers of the parts), calls a partitioning strategy on this band graph, and projects back the refined partition on the original graph. This method was designed to be able to use expensive partitioning heuristics, such as genetic algorithms, on large graphs, as it dramatically reduces the problem space by several orders of magnitude. However, it was found that, in a multilevel context, it also improves partition quality, by coercing partitions in a problem space that derives from the one which was globally defined at the coarsest level, thus preventing local optimization refinement algorithms to be trapped in local optima of the finer graphs~\cite{chpe06a}. \iteme[\textbf{Fiduccia-Mattheyses}] This is a direct $k$-way version of the traditional Fiduccia-Mattheyses heuristics used for computing bipartitions, that will be presented in the next section. By default, boundary vertices can only be moved to parts to which at least one of their neighbors belong. \iteme[\textbf{Diffusion}] This is also a $k$-way version of an algorithm that has been first used in the context of bipartitioning, and which will be presented in the next section. The $k$-way version differs from the latter as it diffuses $k$ sorts of liquids rather than just two as in the bipartitioning case. \iteme[\textbf{Exactifier}]\label{sec-algo-map-exact} This greedy algorithm refines its input mapping so as to reduce load imbalance as much as possible. Since this method does not consider load balance minimization, its use should be restricted to cases where achieving load balance is critical and where recursive bipartitioning may fail to achieve it. It is especially the case when vertex loads are very irregular: some subdomains may receive only a few heavy vertices, yielding load balance artifacts when no light vertices are locally available to compensate. Graph vertices are sorted by decreasing weights, and considered in turn. If the current vertex can fit in its initial part without causing imbalance by excess, it is added to it, and the algorithm goes on. Else, a candidate part is found by exploring other subdomains in an order based on an implicit recursive bipartitioning of the architecture graph. Consequently, such vertices will be placed in subdomains that tend to be as close as possible to the original location of the vertex. This method is most likely to result in disconnected parts. \iteme[\textbf{Dual recursive bipartitioning}] This algorithm implements the dual recursive bipartitioning algorithm that has been presented in Section~\ref{sec-algo-drb}. The DRB algorithms can be used either directly on the original graph to partition, or on the coarsest graph yielded by the direct $k$-way multilevel framework. It uses graph bipartitioning methods, described below, to compute its bipartitions. \end{itemize} \subsection{Graph bipartitioning methods} \label{sec-algo-bipart} The core of our dual recursive bipartitioning mapping algorithm uses process graph bipartitioning methods as black boxes. It allows the mapper to run any type of graph bipartitioning method compatible with our criteria for quality. Bipartitioning jobs maintain an internal image of the current bipartition, indicating for every vertex of the job whether it is currently assigned to the first or to the second subdomain. It is therefore possible to apply several different methods in sequence, each one starting from the result of the previous one, and to select the methods with respect to the job characteristics, thus enabling us to define \emph{graph bipartitioning strategies}. The currently implemented graph bipartitioning methods are listed below. \begin{itemize} \iteme[\textbf{Diffusion}] This global optimization method, presented in~\cite{pell07b}, flows two kinds of antagonistic liquids, scotch and anti-scotch, from two source vertices, and sets the new frontier as the limit between vertices which contain scotch and the ones which contain anti-scotch. In order to add load-balancing constraints to the algorithm, a constant amount of liquid disappears from every vertex per unit of time, so that no domain can spread across more than half of the vertices. Because selecting the source vertices is essential to the obtainment of useful results, this method has been hard-coded so that the two source vertices are the two vertices of highest indices, since in the band method these are the anchor vertices which represent all of the removed vertices of each part. Therefore, this method must be used on band graphs only, or on specifically crafted graphs. \iteme[\textbf{Exactifier}] This greedy algorithm refines the current partition so as to reduce load imbalance as much as possible, while keeping the value of the communication cost function as small as possible. The vertex set is scanned in order of decreasing vertex weights, and vertices are moved from one subdomain to the other if doing so reduces load imbalance. When several vertices have same weight, the vertex whose swap decreases most the communication cost function is selected first. This method is used in post-processing of other methods when load balance is mandatory. For weighted graphs, the strict enforcement of load balance may cause the swapping of isolated vertices of small weight, thus greatly increasing the cut. Therefore, great care should be taken when using this method if connectivity or cut minimization are mandatory. \iteme[\textbf{Fiduccia-Mattheyses}]\label{sec-algo-fme} The Fiduccia-Mattheyses heuristics~\cite{fima82} is an almost-linear improvement of the famous Kernighan-Lin algorithm~\cite{keli70}. It tries to improve the bipartition that is input to it by incrementally moving vertices between the subsets of the partition, as long as it can find sequences of moves that lower its communication cost. By considering sequences of moves instead of single swaps, the algorithm allows hill-climbing from local minima of the cost function. As an extension to the original Fiduccia-Mattheyses algorithm, we have developed new data structures, based on logarithmic indexings of arrays, that allow us to handle weighted graphs while preserving the almost-linearity in time of the algorithm~\cite{pero96b}. As several authors quoted before~\cite{hele93c,kaku95b}, the Fiduccia-Mattheyses algorithm gives better results when trying to optimize a good starting partition. Therefore, it should not be used on its own, but rather after greedy starting methods such as the Gibbs-Poole-Stockmeyer or the greedy graph growing methods. \iteme[\textbf{Gibbs-Poole-Stockmeyer}] This greedy bipartitioning method derives from an algorithm proposed by Gibbs, Poole, and Stockmeyer to minimize the dilation of graph orderings, that is, the maximum absolute value of the difference between the numbers of neighbor vertices~\cite{gipost76}. The graph is sliced by using a breadth-first spanning tree rooted at a randomly chosen vertex, and this process is iterated by selecting a new root vertex within the last layer as long as the number of layers increases. Then, starting from the current root vertex, vertices are assigned layer after layer to the first subdomain, until half of the total weight has been processed. Remaining vertices are then allocated to the second subdomain. As for the original Gibbs, Poole, and Stockmeyer algorithm, it is assumed that the maximization of the number of layers results in the minimization of the sizes --and therefore of the cocycles-- of the layers. This property has already been used by George and Liu to reorder sparse linear systems using the nested dissection method~\cite{geli81}, and by Simon in~\cite{simo91}. \iteme[\textbf{Greedy graph growing}]\label{sec-algo-ggge} This greedy algorithm, which has been proposed by Karypis and Kumar~\cite{kaku95a}, belongs to the GRASP (``\textit{Greedy Randomized Adaptive Search Procedure\/}'') class~\cite{lafeel94}. It consists in selecting an initial vertex at random, and repeatedly adding vertices to this growing subset, such that each added vertex results in the smallest increase in the communication cost function. This process, which stops when load balance is achieved, is repeated several times in order to explore (mostly in a gradient-like fashion) different areas of the solution space, and the best partition found is kept. \iteme[\textbf{Multilevel}] This is a graph bipartition-oriented version of the static mapping multilevel method described in the previous section, page~\pageref{sec-algo-mle}. \end{itemize} \section{Sparse matrix ordering algorithms} \label{sec-algo-order} When solving large sparse linear systems of the form $Ax=b$, it is common to precede the numerical factorization by a symmetric reordering. This reordering is chosen in such a way that pivoting down the diagonal in order on the resulting permuted matrix $PAP^T$ produces much less fill-in and work than computing the factors of $A$ by pivoting down the diagonal in the original order (the fill-in is the set of zero entries in $A$ that become non-zero in the factored matrix). \subsection{Performance criteria} \label{sec-order-perf} The quality of orderings is evaluated with respect to several criteria. The first one, \NNZ, is the number of non-zero terms in the factored reordered matrix. The second one, \OPC, is the operation count, that is the number of arithmetic operations required to factor the matrix. The operation count that we have considered takes into consideration all operations (additions, subtractions, multiplications, divisions) required by Cholesky factorization, except square roots; it is equal to $\sum_c n_c^2$, where $n_c$ is the number of non-zeros of column $c$ of the factored matrix, diagonal included. A third criterion for quality is the shape of the elimination tree; concurrency in parallel solving is all the higher as the elimination tree is broad and short. To measure its quality, several parameters can be defined: \hmin, \hmax, and \havg\ denote the minimum, maximum, and average heights of the tree\footnote% {We do not consider as leaves the disconnected vertices that are present in some meshes, since they do not participate in the solving process.}, respectively, and \hdlt\ is the variance, expressed as a percentage of \havg. Since small separators result in small chains in the elimination tree, \havg\ should also indirectly reflect the quality of separators. \subsection{Minimum Degree} The minimum degree algorithm~\cite{tiwa67} is a local heuristic that performs its pivot selection by iteratively selecting from the graph a node of minimum degree. The minimum degree algorithm is known to be a very fast and general purpose algorithm, and has received much attention over the last three decades (see for example~\cite{amdadu96,geli89,liu-85}). However, the algorithm is intrinsically sequential, and very little can be theoretically proved about its efficiency. \subsection{Nested dissection} \label{sec-algo-nested} The nested dissection algorithm~\cite{geli81} is a global, heuristic, recursive algorithm which computes a vertex set~$S$ that separates the graph into two parts~$A$ and~$B$, ordering $S$ with the highest remaining indices. It then proceeds recursively on parts~$A$ and~$B$ until their sizes become smaller than some threshold value. This ordering guarantees that, at each step, no non zero term can appear in the factorization process between unknowns of~$A$ and unknowns of~$B$. Many theoretical results have been carried out on nested dissection ordering~\cite{chro89,lirota79}, and its divide and conquer nature makes it easily parallelizable. The main issue of the nested dissection ordering algorithm is thus to find small vertex separators that balance the remaining subgraphs as evenly as possible. Most often, vertex separators are computed by using direct heuristics~\cite{hero98,lele87}, or from edge separators~\cite[and included references]{pofa90} by minimum cover techniques~\cite{duff81,hoka73}, but other techniques such as spectral vertex partitioning have also been used~\cite{posili90}. Provided that good vertex separators are found, the nested dissection algorithm produces orderings which, both in terms of fill-in and operation count, compare favorably~\cite{gukaku96,kaku95a,pero97a} to the ones obtained with the minimum degree algorithm~\cite{liu-85}. Moreover, the elimination trees induced by nested dissection are broader, shorter, and better balanced, and therefore exhibit much more concurrency in the context of parallel Cholesky factorization~\cite[and included references]{aseilish91,geng89,geheling88,gukaku96,pero97a,shre92}. \subsection{Hybridization} \label{sec-algo-nested-hybrid} Due to their complementary nature, several schemes have been proposed to hybridize the two methods~\cite{hero98,kaku98a,pero97a}. However, to our knowledge, only loose couplings have been achieved: incomplete nested dissection is performed on the graph to order, and the resulting subgraphs are passed to some minimum degree algorithm. This results in the fact that the minimum degree algorithm does not have exact degree values for all of the boundary vertices of the subgraphs, leading to a misbehavior of the vertex selection process. \\ Our ordering program implements a tight coupling of the nested dissection and minimum degree algorithms, that allows each of them to take advantage of the information computed by the other. First, the nested dissection algorithm provides exact degree values for the boundary vertices of the subgraphs passed to the minimum degree algorithm (called \emph{halo\/} minimum degree since it has a partial visibility of the neighborhood of the subgraph). Second, the minimum degree algorithm returns the assembly tree that it computes for each subgraph, thus allowing for supervariable amalgamation, in order to obtain column-blocks of a size suitable for BLAS3 block computations. As for our mapping program, it is possible to combine ordering methods into ordering strategies, which allow the user to select the proper methods with respect to the characteristics of the subgraphs. \\ The ordering program is completely parametrized by its ordering strategy. The nested dissection method allows the user to take advantage of all of the graph partitioning routines that have been developed in the earlier stages of the \scotch\ project. Internal ordering strategies for the separators are relevant in the case of sequential or parallel~\cite{gukaku97,roth94,rogu93,rosc94} block solving, to select ordering algorithms that minimize the number of extra-diagonal blocks~\cite{chro89}, thus allowing for efficient use of BLAS3 primitives, and to reduce inter-processor communication. \subsection{Ordering methods} The core of our ordering algorithm uses graph ordering methods as black boxes, which allows the orderer to run any type of ordering method. In addition to yielding orderings of the subgraphs that are passed to them, these methods may compute column block partitions of the subgraphs, that are recorded in a separate tree structure. The currently implemented graph ordering methods are listed below. \begin{itemize} \iteme[\textbf{Halo approximate minimum degree}] The halo approximate minimum degree method~\cite{peroam99} is an improvement of the approximate minimum degree~\cite{amdadu96} algorithm, suited for use on subgraphs produced by nested dissection methods. Its interest compared to classical minimum degree algorithms is that boundary vertices are processed using their real degree in the global graph rather than their (much smaller) degree in the subgraph, resulting in smaller fill-in and operation count. This method also implements amalgamation techniques that result in efficient block computations in the factoring and the solving processes. \iteme[\textbf{Halo approximate minimum fill}] The halo approximate minimum fill method is a variant of the halo approximate minimum degree algorithm, where the criterion to select the next vertex to permute is not based on its current estimated degree but on the minimization of the induced fill. \iteme[\textbf{Graph compression}] The graph compression method~\cite{ashc95} merges cliques of vertices into single nodes, so as to speed-up the ordering of the compressed graph. It also results in some improvement of the quality of separators, especially for stiffness matrices. \iteme[\textbf{Gibbs-Poole-Stockmeyer}] This method is mainly used on separators to reduce the number and extent of extra-diagonal blocks. \iteme[\textbf{Simple method}] Vertices are ordered consecutively, in the same order as they are stored in the graph. This is the fastest method to use on separators when the shape of extra-diagonal structures is not a concern. \iteme[\textbf{Nested dissection}] Incomplete nested dissection method. Separators are computed recursively on subgraphs, and specific ordering methods are applied to the separators and to the resulting subgraphs (see sections~\ref{sec-algo-nested} and ~\ref{sec-algo-nested-hybrid}). \iteme[\textbf{Disconnected subgraph detection}] This method may be used as a pre-processing step so as to apply the same ordering strategy on each of the disconnected components of a graph. While finding the connected components of a graph is expensive, it may bring an improvement on graph ordering quality in some cases. \end{itemize} \subsection{Graph separation methods} The core of our incomplete nested dissection algorithm uses graph separation methods as black boxes. It allows the orderer to run any type of graph separation method compatible with our criteria for quality, that is, reducing the size of the vertex separator while maintaining the loads of the separated parts within some user-specified tolerance. Separation jobs maintain an internal image of the current vertex separator, indicating for every vertex of the job whether it is currently assigned to one of the two parts, or to the separator. It is therefore possible to apply several different methods in sequence, each one starting from the result of the previous one, and to select the methods with respect to the job characteristics, thus enabling the definition of separation strategies. \\ The currently implemented graph separation methods are listed below. \begin{itemize} \iteme[\textbf{Fiduccia-Mattheyses}] This is a vertex-oriented version of the original, edge-oriented, Fiduccia-Mattheyses heuristics described in page~\pageref{sec-algo-fme}. \iteme[\textbf{Greedy graph growing}] This is a vertex-oriented version of the edge-oriented greedy graph growing algorithm described in page~\pageref{sec-algo-ggge}. \iteme[\textbf{Multilevel}] This is a vertex-oriented version of the edge-oriented multilevel algorithm described in page~\pageref{sec-algo-mle}. \iteme[\textbf{Thinner}] This greedy algorithm refines the current separator by removing all of the exceeding vertices, that is, vertices that do not have neighbors in both parts. It is provided as a simple gradient refinement algorithm for the multilevel method, and is clearly outperformed by the Fiduccia-Mattheyses algorithm. \iteme[\textbf{Vertex cover}] This algorithm computes a vertex separator by first computing an edge separator, that is, a bipartition of the graph, and then turning it into a vertex separator by using the method proposed by Pothen and Fang~\cite{pofa90}. This method requires the computation of maximal matchings in the bipartite graphs associated with the edge cuts, which are built using Duff's variant~\cite{duff81} of the Hopcroft and Karp algorithm~\cite{hoka73}. Edge separators are computed by using a bipartitioning strategy, which can use any of the graph bipartitioning methods described in section~\ref{sec-algo-bipart}, page~\pageref{sec-algo-bipart}. \end{itemize} scotch_6.0.9/doc/src/scotch/s_f_mult.eps0000644000302600021200000001334513322403377020427 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_mult.fig %%Creator: fig2dev Version 3.2 Patchlevel 5c %%CreationDate: Mon Oct 18 00:32:04 2010 %%For: pelegrin@brol () %%BoundingBox: 0 0 574 278 %Magnification: 1.0000 %%EndComments %%BeginProlog /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def /pageheader { save newpath 0 278 moveto 0 0 lineto 574 0 lineto 574 278 lineto closepath clip newpath -35.0 347.5 translate 1 -1 scale $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc } bind def /pagefooter { $F2psEnd restore } bind def %%EndProlog pageheader % % Fig objects follow % % % here starts figure with depth 0 /Times-Roman ff 266.67 scf sf 600 4725 m gs 1 -1 sc (Coarsening) col-1 sh gr /Times-Roman ff 266.67 scf sf 825 4950 m gs 1 -1 sc (phase) col-1 sh gr /Times-Roman ff 266.67 scf sf 8550 4725 m gs 1 -1 sc (Uncoarsening) col-1 sh gr /Times-Roman ff 266.67 scf sf 8925 4950 m gs 1 -1 sc (phase) col-1 sh gr % Arc 7.500 slw 0 slc gs clippath 4067 5291 m 4217 5278 l 4212 5218 l 4061 5231 l 4061 5231 l 4184 5251 l 4067 5291 l cp eoclip n 3839.2 2023.3 3246.9 -176.0571 83.6195 arcn gs col-1 s gr gr % arrowhead 0 slj n 4067 5291 m 4184 5251 l 4061 5231 l col-1 s % Arc gs clippath 9636 1935 m 9629 1783 l 9569 1786 l 9576 1938 l 9576 1938 l 9601 1817 l 9636 1935 l cp eoclip n 6360.8 2023.3 3246.9 -3.9429 96.3805 arc gs col-1 s gr gr % arrowhead n 9636 1935 m 9601 1817 l 9576 1938 l col-1 s % Ellipse n 2100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr % Ellipse n 2550 3300 1020 510 0 360 DrawEllipse gs col-1 s gr % Ellipse n 8100 1800 1200 600 0 360 DrawEllipse gs col-1 s gr % Ellipse n 7650 3300 1020 510 0 360 DrawEllipse gs col-1 s gr % Ellipse n 5100 5100 555 270 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6750 4500 765 390 0 360 DrawEllipse gs col-1 s gr % Ellipse n 3450 4500 765 390 0 360 DrawEllipse gs col-1 s gr % Polyline 30.000 slw n 4935 5355 m 5085 5250 l 5040 5040 l 5220 4965 l 5190 4830 l gs col-1 s gr % Polyline 7.500 slw n 6600 4875 m 6750 4725 l 6675 4350 l 6900 4200 l 6840 4110 l gs col-1 s gr % Polyline 30.000 slw n 6690 4890 m 6675 4725 l 6675 4650 l 6750 4350 l 6825 4200 l 6735 4110 l gs col-1 s gr % Polyline 7.500 slw n 7575 3810 m 7575 3600 l 7650 3150 l 7800 2925 l 7710 2790 l gs col-1 s gr % Polyline n 8100 2400 m 8025 2100 l 8325 1575 l 8175 1350 l 8250 1200 l gs col-1 s gr % Polyline 30.000 slw n 8025 2400 m 8250 1875 l 8175 1500 l 8250 1350 l 8175 1200 l gs col-1 s gr % Polyline n 7695 3810 m 7500 3450 l 7800 3075 l 7725 2925 l 7830 2790 l gs col-1 s gr % Polyline 7.500 slw gs clippath 7885 2032 m 8035 2056 l 8044 1997 l 7895 1973 l 7895 1973 l 8009 2022 l 7885 2032 l cp eoclip n 6600 1800 m 8025 2025 l gs col-1 s gr gr % arrowhead n 7885 2032 m 8009 2022 l 7895 1973 l col-1 s % Polyline gs clippath 7960 1584 m 8110 1606 l 8119 1547 l 7969 1525 l 7969 1525 l 8084 1573 l 7960 1584 l cp eoclip n 6600 1350 m 8100 1575 l gs col-1 s gr gr % arrowhead n 7960 1584 m 8084 1573 l 7969 1525 l col-1 s /Times-Roman ff 266.67 scf sf 4350 5700 m gs 1 -1 sc (Initial partitioning) col-1 sh gr /Times-Roman ff 266.67 scf sf 4350 1875 m gs 1 -1 sc (Prolonged partition) col-1 sh gr /Times-Roman ff 266.67 scf sf 4500 1425 m gs 1 -1 sc ( Refined partition) col-1 sh gr % here ends figure; pagefooter showpage %%Trailer %EOF scotch_6.0.9/doc/src/scotch/s_f_do2.ps0000644000302600021200000001161013303015264017747 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ../graph/ar_m8x8-13.src ../graph/ar_m8x8-13.xyz - %%Creator: out (F. Pellegrini, LaBRI, Bordeaux) %%CreationDate: Wed Nov 2 13:57:20 1994 %%BoundingBox: 0 0 475 475 %%Pages: 0 %%EndComments /A { arc fill } bind def /c { setrgbcolor } bind def /g { setgray } bind def /L { lineto stroke } bind def /l { lineto } bind def /m { moveto } bind def /n { newpath } bind def gsave 1 setlinecap 0.007200 0.007200 scale n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip 0 g n 4125 4125 m 4125 12374 L n 4125 4125 m 12374 4125 L n 4125 12374 m 4125 20625 L n 4125 12374 m 12374 12374 L n 4125 20625 m 4125 28874 L n 4125 20625 m 12374 20625 L n 4125 28874 m 4125 37125 L n 4125 28874 m 12374 28874 L n 4125 37125 m 4125 45375 L n 4125 37125 m 12374 37125 L n 4125 45375 m 4125 53625 L n 4125 45375 m 12374 45375 L n 4125 53625 m 4125 61875 L n 4125 53625 m 12374 53625 L n 4125 61875 m 12374 61875 L n 12374 4125 m 12374 12374 L n 12374 4125 m 20625 4125 L n 12374 12374 m 12374 20625 L n 12374 12374 m 20625 12374 L n 12374 20625 m 12374 28874 L n 12374 20625 m 20625 20625 L n 12374 28874 m 12374 37125 L n 12374 28874 m 20625 28874 L n 12374 37125 m 12374 45375 L n 12374 37125 m 20625 37125 L n 12374 45375 m 12374 53625 L n 12374 45375 m 20625 45375 L n 12374 53625 m 12374 61875 L n 12374 53625 m 20625 53625 L n 12374 61875 m 20625 61875 L n 20625 4125 m 20625 12374 L n 20625 4125 m 28874 4125 L n 20625 12374 m 20625 20625 L n 20625 12374 m 28874 12374 L n 20625 20625 m 20625 28874 L n 20625 20625 m 28874 20625 L n 20625 28874 m 20625 37125 L n 20625 28874 m 28874 28874 L n 20625 37125 m 20625 45375 L n 20625 37125 m 28874 37125 L n 20625 45375 m 20625 53625 L n 20625 45375 m 28874 45375 L n 20625 53625 m 20625 61875 L n 20625 53625 m 28874 53625 L n 20625 61875 m 28874 61875 L n 28874 4125 m 28874 12374 L n 28874 4125 m 37125 4125 L n 28874 12374 m 28874 20625 L n 28874 12374 m 37125 12374 L n 28874 20625 m 28874 28874 L n 28874 20625 m 37125 20625 L n 28874 28874 m 28874 37125 L n 28874 28874 m 37125 28874 L n 28874 37125 m 28874 45375 L n 28874 37125 m 37125 37125 L n 28874 45375 m 28874 53625 L n 28874 45375 m 37125 45375 L n 28874 53625 m 28874 61875 L n 28874 53625 m 37125 53625 L n 28874 61875 m 37125 61875 L n 37125 4125 m 37125 12374 L n 37125 12374 m 37125 20625 L n 37125 20625 m 37125 28874 L n 37125 28874 m 37125 37125 L n 37125 37125 m 37125 45375 L n 37125 37125 m 45375 37125 L n 37125 45375 m 37125 53625 L n 37125 45375 m 45375 45375 L n 37125 53625 m 37125 61875 L n 37125 53625 m 45375 53625 L n 37125 61875 m 45375 61875 L n 45375 37125 m 45375 45375 L n 45375 37125 m 53625 37125 L n 45375 45375 m 45375 53625 L n 45375 45375 m 53625 45375 L n 45375 53625 m 45375 61875 L n 45375 53625 m 53625 53625 L n 45375 61875 m 53625 61875 L n 53625 37125 m 53625 45375 L n 53625 45375 m 53625 53625 L n 53625 45375 m 61875 45375 L n 53625 53625 m 53625 61875 L n 53625 53625 m 61875 53625 L n 53625 61875 m 61875 61875 L n 61875 45375 m 61875 53625 L n 61875 53625 m 61875 61875 L 0 0 0 c n 4125 4125 4124 0 360 A 0 0 0 c n 4125 12374 4124 0 360 A 0 0 0 c n 4125 20625 4124 0 360 A 0 0 0 c n 4125 28874 4124 0 360 A 1 0.5 0.5 c n 4125 37125 4124 0 360 A 1 0.5 0.5 c n 4125 45375 4124 0 360 A 1 0.5 0.5 c n 4125 53625 4124 0 360 A 1 0.5 0.5 c n 4125 61875 4124 0 360 A 0 0 0 c n 12374 4125 4124 0 360 A 0 0 0 c n 12374 12374 4124 0 360 A 0 0 0 c n 12374 20625 4124 0 360 A 0 0 0 c n 12374 28874 4124 0 360 A 1 0.5 0.5 c n 12374 37125 4124 0 360 A 1 0.5 0.5 c n 12374 45375 4124 0 360 A 1 0.5 0.5 c n 12374 53625 4124 0 360 A 1 0.5 0.5 c n 12374 61875 4124 0 360 A 0 0 0 c n 20625 4125 4124 0 360 A 0 0 0 c n 20625 12374 4124 0 360 A 0 0 0 c n 20625 20625 4124 0 360 A 1 0.5 0.5 c n 20625 28874 4124 0 360 A 1 0.5 0.5 c n 20625 37125 4124 0 360 A 1 0.5 0.5 c n 20625 45375 4124 0 360 A 1 0.5 0.5 c n 20625 53625 4124 0 360 A 1 0.5 0.5 c n 20625 61875 4124 0 360 A 0 0 0 c n 28874 4125 4124 0 360 A 0 0 0 c n 28874 12374 4124 0 360 A 0 0 0 c n 28874 20625 4124 0 360 A 1 0.5 0.5 c n 28874 28874 4124 0 360 A 1 0.5 0.5 c n 28874 37125 4124 0 360 A 1 0.5 0.5 c n 28874 45375 4124 0 360 A 1 0.5 0.5 c n 28874 53625 4124 0 360 A 1 0.5 0.5 c n 28874 61875 4124 0 360 A 0 0 0 c n 37125 4125 4124 0 360 A 0 0 0 c n 37125 12374 4124 0 360 A 0 0 0 c n 37125 20625 4124 0 360 A 1 0.5 0.5 c n 37125 28874 4124 0 360 A 1 0.5 0.5 c n 37125 37125 4125 0 360 A 1 0.5 0.5 c n 37125 45375 4125 0 360 A 1 0.5 0.5 c n 37125 53625 4125 0 360 A 1 0.5 0.5 c n 37125 61875 4125 0 360 A 1 0.5 0.5 c n 45375 37125 4125 0 360 A 1 0.5 0.5 c n 45375 45375 4125 0 360 A 1 0.5 0.5 c n 45375 53625 4125 0 360 A 1 0.5 0.5 c n 45375 61875 4125 0 360 A 1 0.5 0.5 c n 53625 37125 4125 0 360 A 1 0.5 0.5 c n 53625 45375 4125 0 360 A 1 0.5 0.5 c n 53625 53625 4125 0 360 A 1 0.5 0.5 c n 53625 61875 4125 0 360 A 1 0.5 0.5 c n 61875 45375 4125 0 360 A 1 0.5 0.5 c n 61875 53625 4125 0 360 A 1 0.5 0.5 c n 61875 61875 4125 0 360 A grestore scotch_6.0.9/doc/src/scotch/s_f_out1.src0000644000302600021200000000047513303015264020327 0ustar pelegrinpelegrin16 48 0 1 2 1 1 1 4 1 1 3 1 0 1 2 1 5 2 1 3 1 1 1 3 1 6 3 1 2 1 2 1 7 4 1 3 1 0 1 5 1 8 5 1 4 1 1 1 4 1 6 1 9 6 1 4 1 2 1 5 1 7 1 10 7 1 3 1 3 1 6 1 11 8 1 3 1 4 1 9 1 12 9 1 4 1 5 1 8 1 10 1 13 10 1 4 1 6 1 9 1 11 1 14 11 1 3 1 7 1 10 1 15 12 1 2 1 8 1 13 13 1 3 1 9 1 12 1 14 14 1 3 1 10 1 13 1 15 15 1 2 1 11 1 14 scotch_6.0.9/doc/src/scotch/s_f_do1.ps0000644000302600021200000001421513303015264017752 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ../graph/ar_m8x8.src ../graph/ar_m8x8.xyz - %%Creator: out (F. Pellegrini, LaBRI, Bordeaux) %%CreationDate: Wed Nov 2 13:15:44 1994 %%BoundingBox: 0 0 475 475 %%Pages: 0 %%EndComments /A { arc fill } bind def /c { setrgbcolor } bind def /g { setgray } bind def /L { lineto stroke } bind def /l { lineto } bind def /m { moveto } bind def /n { newpath } bind def gsave 1 setlinecap 0.007200 0.007200 scale n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip 0 g n 4125 4125 m 4125 12374 L n 4125 4125 m 12374 4125 L n 4125 12374 m 4125 20625 L n 4125 12374 m 12374 12374 L n 4125 20625 m 4125 28874 L n 4125 20625 m 12374 20625 L n 4125 28874 m 4125 37125 L n 4125 28874 m 12374 28874 L n 4125 37125 m 4125 45375 L n 4125 37125 m 12374 37125 L n 4125 45375 m 4125 53625 L n 4125 45375 m 12374 45375 L n 4125 53625 m 4125 61875 L n 4125 53625 m 12374 53625 L n 4125 61875 m 12374 61875 L n 12374 4125 m 12374 12374 L n 12374 4125 m 20625 4125 L n 12374 12374 m 12374 20625 L n 12374 12374 m 20625 12374 L n 12374 20625 m 12374 28874 L n 12374 20625 m 20625 20625 L n 12374 28874 m 12374 37125 L n 12374 28874 m 20625 28874 L n 12374 37125 m 12374 45375 L n 12374 37125 m 20625 37125 L n 12374 45375 m 12374 53625 L n 12374 45375 m 20625 45375 L n 12374 53625 m 12374 61875 L n 12374 53625 m 20625 53625 L n 12374 61875 m 20625 61875 L n 20625 4125 m 20625 12374 L n 20625 4125 m 28874 4125 L n 20625 12374 m 20625 20625 L n 20625 12374 m 28874 12374 L n 20625 20625 m 20625 28874 L n 20625 20625 m 28874 20625 L n 20625 28874 m 20625 37125 L n 20625 28874 m 28874 28874 L n 20625 37125 m 20625 45375 L n 20625 37125 m 28874 37125 L n 20625 45375 m 20625 53625 L n 20625 45375 m 28874 45375 L n 20625 53625 m 20625 61875 L n 20625 53625 m 28874 53625 L n 20625 61875 m 28874 61875 L n 28874 4125 m 28874 12374 L n 28874 4125 m 37125 4125 L n 28874 12374 m 28874 20625 L n 28874 12374 m 37125 12374 L n 28874 20625 m 28874 28874 L n 28874 20625 m 37125 20625 L n 28874 28874 m 28874 37125 L n 28874 28874 m 37125 28874 L n 28874 37125 m 28874 45375 L n 28874 37125 m 37125 37125 L n 28874 45375 m 28874 53625 L n 28874 45375 m 37125 45375 L n 28874 53625 m 28874 61875 L n 28874 53625 m 37125 53625 L n 28874 61875 m 37125 61875 L n 37125 4125 m 37125 12374 L n 37125 4125 m 45375 4125 L n 37125 12374 m 37125 20625 L n 37125 12374 m 45375 12374 L n 37125 20625 m 37125 28874 L n 37125 20625 m 45375 20625 L n 37125 28874 m 37125 37125 L n 37125 28874 m 45375 28874 L n 37125 37125 m 37125 45375 L n 37125 37125 m 45375 37125 L n 37125 45375 m 37125 53625 L n 37125 45375 m 45375 45375 L n 37125 53625 m 37125 61875 L n 37125 53625 m 45375 53625 L n 37125 61875 m 45375 61875 L n 45375 4125 m 45375 12374 L n 45375 4125 m 53625 4125 L n 45375 12374 m 45375 20625 L n 45375 12374 m 53625 12374 L n 45375 20625 m 45375 28874 L n 45375 20625 m 53625 20625 L n 45375 28874 m 45375 37125 L n 45375 28874 m 53625 28874 L n 45375 37125 m 45375 45375 L n 45375 37125 m 53625 37125 L n 45375 45375 m 45375 53625 L n 45375 45375 m 53625 45375 L n 45375 53625 m 45375 61875 L n 45375 53625 m 53625 53625 L n 45375 61875 m 53625 61875 L n 53625 4125 m 53625 12374 L n 53625 4125 m 61875 4125 L n 53625 12374 m 53625 20625 L n 53625 12374 m 61875 12374 L n 53625 20625 m 53625 28874 L n 53625 20625 m 61875 20625 L n 53625 28874 m 53625 37125 L n 53625 28874 m 61875 28874 L n 53625 37125 m 53625 45375 L n 53625 37125 m 61875 37125 L n 53625 45375 m 53625 53625 L n 53625 45375 m 61875 45375 L n 53625 53625 m 53625 61875 L n 53625 53625 m 61875 53625 L n 53625 61875 m 61875 61875 L n 61875 4125 m 61875 12374 L n 61875 12374 m 61875 20625 L n 61875 20625 m 61875 28874 L n 61875 28874 m 61875 37125 L n 61875 37125 m 61875 45375 L n 61875 45375 m 61875 53625 L n 61875 53625 m 61875 61875 L 1 0.5 0.5 c n 4125 4125 4124 0 360 A 1 0.5 0.5 c n 4125 12374 4124 0 360 A 1 0.5 0.5 c n 4125 20625 4124 0 360 A 1 0.5 0.5 c n 4125 28874 4124 0 360 A 1 0.5 0.5 c n 4125 37125 4124 0 360 A 1 0.5 0.5 c n 4125 45375 4124 0 360 A 1 0.5 0.5 c n 4125 53625 4124 0 360 A 1 0.5 0.5 c n 4125 61875 4124 0 360 A 1 0.5 0.5 c n 12374 4125 4124 0 360 A 1 0.5 0.5 c n 12374 12374 4124 0 360 A 1 0.5 0.5 c n 12374 20625 4124 0 360 A 1 0.5 0.5 c n 12374 28874 4124 0 360 A 1 0.5 0.5 c n 12374 37125 4124 0 360 A 1 0.5 0.5 c n 12374 45375 4124 0 360 A 1 0.5 0.5 c n 12374 53625 4124 0 360 A 1 0.5 0.5 c n 12374 61875 4124 0 360 A 1 0.5 0.5 c n 20625 4125 4124 0 360 A 1 0.5 0.5 c n 20625 12374 4124 0 360 A 1 0.5 0.5 c n 20625 20625 4124 0 360 A 1 0.5 0.5 c n 20625 28874 4124 0 360 A 1 0.5 0.5 c n 20625 37125 4124 0 360 A 1 0.5 0.5 c n 20625 45375 4124 0 360 A 1 0.5 0.5 c n 20625 53625 4124 0 360 A 1 0.5 0.5 c n 20625 61875 4124 0 360 A 1 0.5 0.5 c n 28874 4125 4124 0 360 A 1 0.5 0.5 c n 28874 12374 4124 0 360 A 1 0.5 0.5 c n 28874 20625 4124 0 360 A 1 0.5 0.5 c n 28874 28874 4124 0 360 A 1 0.5 0.5 c n 28874 37125 4124 0 360 A 1 0.5 0.5 c n 28874 45375 4124 0 360 A 1 0.5 0.5 c n 28874 53625 4124 0 360 A 1 0.5 0.5 c n 28874 61875 4124 0 360 A 1 0.5 0.5 c n 37125 4125 4124 0 360 A 1 0.5 0.5 c n 37125 12374 4124 0 360 A 1 0.5 0.5 c n 37125 20625 4124 0 360 A 1 0.5 0.5 c n 37125 28874 4124 0 360 A 1 0.5 0.5 c n 37125 37125 4125 0 360 A 1 0.5 0.5 c n 37125 45375 4125 0 360 A 1 0.5 0.5 c n 37125 53625 4125 0 360 A 1 0.5 0.5 c n 37125 61875 4125 0 360 A 0 0 0 c n 45375 4125 4124 0 360 A 0 0 0 c n 45375 12374 4124 0 360 A 0 0 0 c n 45375 20625 4124 0 360 A 0 0 0 c n 45375 28874 4124 0 360 A 1 0.5 0.5 c n 45375 37125 4125 0 360 A 1 0.5 0.5 c n 45375 45375 4125 0 360 A 1 0.5 0.5 c n 45375 53625 4125 0 360 A 1 0.5 0.5 c n 45375 61875 4125 0 360 A 0 0 0 c n 53625 4125 4124 0 360 A 0 0 0 c n 53625 12374 4124 0 360 A 0 0 0 c n 53625 20625 4124 0 360 A 0 0 0 c n 53625 28874 4124 0 360 A 1 0.5 0.5 c n 53625 37125 4125 0 360 A 1 0.5 0.5 c n 53625 45375 4125 0 360 A 1 0.5 0.5 c n 53625 53625 4125 0 360 A 1 0.5 0.5 c n 53625 61875 4125 0 360 A 0 0 0 c n 61875 4125 4124 0 360 A 0 0 0 c n 61875 12374 4124 0 360 A 0 0 0 c n 61875 20625 4124 0 360 A 0 0 0 c n 61875 28874 4124 0 360 A 0 0 0 c n 61875 37125 4125 0 360 A 1 0.5 0.5 c n 61875 45375 4125 0 360 A 1 0.5 0.5 c n 61875 53625 4125 0 360 A 1 0.5 0.5 c n 61875 61875 4125 0 360 A grestore scotch_6.0.9/doc/src/scotch/s_f_rua.eps0000644000302600021200000003375213322403377020241 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:26 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 304 303 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath -58.0 360.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1575 1125 m 5775 1125 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 1725 m 5775 1725 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 2925 m 5775 2925 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 3525 m 5775 3525 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 4125 m 5775 4125 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 2325 m 5775 2325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 4725 m 5775 4725 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 5325 m 5775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1575 1125 m 1575 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2175 1125 m 2175 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2775 1125 m 2775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3375 1125 m 3375 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3975 1125 m 3975 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4575 1125 m 4575 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5175 1125 m 5175 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5775 1125 m 5775 5325 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 5475 m 1725 5175 l 1425 5175 l 1425 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 4875 m 1725 4575 l 1425 4575 l 1425 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 4275 m 1725 3975 l 1425 3975 l 1425 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 3675 m 1725 3375 l 1425 3375 l 1425 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 3075 m 1725 2775 l 1425 2775 l 1425 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 2475 m 1725 2175 l 1425 2175 l 1425 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 1875 m 1725 1575 l 1425 1575 l 1425 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1725 1275 m 1725 975 l 1425 975 l 1425 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 5475 m 2325 5175 l 2025 5175 l 2025 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 4875 m 2325 4575 l 2025 4575 l 2025 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 4275 m 2325 3975 l 2025 3975 l 2025 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 3675 m 2325 3375 l 2025 3375 l 2025 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 3075 m 2325 2775 l 2025 2775 l 2025 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 2475 m 2325 2175 l 2025 2175 l 2025 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 1875 m 2325 1575 l 2025 1575 l 2025 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2325 1275 m 2325 975 l 2025 975 l 2025 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 5475 m 3525 5175 l 3225 5175 l 3225 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 4875 m 3525 4575 l 3225 4575 l 3225 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 4275 m 3525 3975 l 3225 3975 l 3225 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 3675 m 3525 3375 l 3225 3375 l 3225 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 3075 m 3525 2775 l 3225 2775 l 3225 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 2475 m 3525 2175 l 3225 2175 l 3225 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 1875 m 3525 1575 l 3225 1575 l 3225 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3525 1275 m 3525 975 l 3225 975 l 3225 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 5475 m 4125 5175 l 3825 5175 l 3825 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 4875 m 4125 4575 l 3825 4575 l 3825 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 4275 m 4125 3975 l 3825 3975 l 3825 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 3675 m 4125 3375 l 3825 3375 l 3825 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 3075 m 4125 2775 l 3825 2775 l 3825 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 2475 m 4125 2175 l 3825 2175 l 3825 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 1875 m 4125 1575 l 3825 1575 l 3825 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4125 1275 m 4125 975 l 3825 975 l 3825 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 5475 m 4725 5175 l 4425 5175 l 4425 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 4875 m 4725 4575 l 4425 4575 l 4425 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 4275 m 4725 3975 l 4425 3975 l 4425 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 3675 m 4725 3375 l 4425 3375 l 4425 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 3075 m 4725 2775 l 4425 2775 l 4425 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 2475 m 4725 2175 l 4425 2175 l 4425 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 1875 m 4725 1575 l 4425 1575 l 4425 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4725 1275 m 4725 975 l 4425 975 l 4425 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 5475 m 5325 5175 l 5025 5175 l 5025 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 4875 m 5325 4575 l 5025 4575 l 5025 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 4275 m 5325 3975 l 5025 3975 l 5025 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 3675 m 5325 3375 l 5025 3375 l 5025 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 3075 m 5325 2775 l 5025 2775 l 5025 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 2475 m 5325 2175 l 5025 2175 l 5025 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 1875 m 5325 1575 l 5025 1575 l 5025 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5325 1275 m 5325 975 l 5025 975 l 5025 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 5475 m 5925 5175 l 5625 5175 l 5625 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 4875 m 5925 4575 l 5625 4575 l 5625 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 4275 m 5925 3975 l 5625 3975 l 5625 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 3675 m 5925 3375 l 5625 3375 l 5625 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 3075 m 5925 2775 l 5625 2775 l 5625 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 2475 m 5925 2175 l 5625 2175 l 5625 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 1875 m 5925 1575 l 5625 1575 l 5625 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5925 1275 m 5925 975 l 5625 975 l 5625 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 5475 m 2925 5175 l 2625 5175 l 2625 5475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 4875 m 2925 4575 l 2625 4575 l 2625 4875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 4275 m 2925 3975 l 2625 3975 l 2625 4275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 3675 m 2925 3375 l 2625 3375 l 2625 3675 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 3075 m 2925 2775 l 2625 2775 l 2625 3075 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 2475 m 2925 2175 l 2625 2175 l 2625 2475 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 1875 m 2925 1575 l 2625 1575 l 2625 1875 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2925 1275 m 2925 975 l 2625 975 l 2625 1275 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 2325 5925 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 2550 6000 m gs 1 -1 sc (0) col-1 sh gr /Times-Roman ff 300.00 scf sf 4725 5925 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 4950 6000 m gs 1 -1 sc (1) col-1 sh gr % Ellipse n 1875 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2775 1725 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2475 5025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4875 2025 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 5475 3825 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2475 4425 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 3675 3375 m 3675 5475 l gs col-1 s gr [] 0 sd % Polyline n 3600 3375 m 3750 3375 l gs col-1 s gr % Polyline n 3600 5475 m 3750 5475 l gs col-1 s gr % Polyline n 1455 3300 m 1350 3300 1350 5445 105 arcto 4 {pop} repeat 1350 5550 5895 5550 105 arcto 4 {pop} repeat 6000 5550 6000 3405 105 arcto 4 {pop} repeat 6000 3300 1455 3300 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2655 1500 m 2550 1500 2550 1845 105 arcto 4 {pop} repeat 2550 1950 2895 1950 105 arcto 4 {pop} repeat 3000 1950 3000 1605 105 arcto 4 {pop} repeat 3000 1500 2655 1500 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4455 1500 m 4350 1500 4350 2445 105 arcto 4 {pop} repeat 4350 2550 5295 2550 105 arcto 4 {pop} repeat 5400 2550 5400 1605 105 arcto 4 {pop} repeat 5400 1500 4455 1500 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2475 4425 m 2775 1725 l gs col-1 s gr % Polyline n 2475 4425 m 4875 2025 l gs col-1 s gr % Polyline 45.000 slw n 2475 4425 m 5475 3825 l gs col-1 s gr % Polyline [15 90] 90 sd n 2475 4425 m 2475 5025 l gs col-1 s gr [] 0 sd % Polyline [15 90] 90 sd n 2475 4425 m 1875 3825 l gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 975 4500 m gs 1 -1 sc (D) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/s_f_logo.ps0000644000302600021200000026543613303015264020244 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: scotch_logo_color.ps %%Creator: XV Version 3.00 Rev: 3/30/93 - by John Bradley %%BoundingBox: 138 361 458 489 %%Pages: 1 %%DocumentFonts: %%EndComments %%EndProlog %%Page: 1 1 % remember original state /origstate save def % build a temporary dictionary 20 dict begin % lower left corner 138 361 translate % size of image (on paper, in 1/72inch coords) 319.96800 128.01600 scale % define 'colorimage' if it isn't defined % ('colortogray' and 'mergeprocs' come from xwd2ps % via xgrab) /colorimage where % do we know about 'colorimage'? { pop } % yes: pop off the 'dict' returned { % no: define one /colortogray { % define an RGB->I function /rgbdata exch store % call input 'rgbdata' rgbdata length 3 idiv /npixls exch store /rgbindx 0 store /grays npixls string store % str to hold the result 0 1 npixls 1 sub { grays exch rgbdata rgbindx get 20 mul % Red rgbdata rgbindx 1 add get 32 mul % Green rgbdata rgbindx 2 add get 12 mul % Blue add add 64 idiv % I = .5G + .31R + .18B put /rgbindx rgbindx 3 add store } for grays } bind def % Utility procedure for colorimage operator. % This procedure takes two procedures off the % stack and merges them into a single procedure. /mergeprocs { % def dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /colorimage { % def pop pop % remove 'false 3' operands {colortogray} mergeprocs image } bind def } ifelse % end of 'false' case % define the colormap /cmap 36 string def % load up the colormap currentfile cmap readhexstring 0e5100 000000 c7c700 c10001 cfcfcf c0c033 f47d26 ffa142 ffba54 ffe6a7 ffd07c ffffff pop pop % lose return values from readhexstring % rlecmapimage expects to have 'w h bits matrix' on stack /rlecmapimage { /buffer 1 string def /rgbval 3 string def /block 384 string def % proc to read a block from file, and return RGB data { currentfile buffer readhexstring pop /bcount exch 0 get store bcount 128 ge { % it's a non-run block 0 1 bcount 128 sub { currentfile buffer readhexstring pop pop % look up value in color map /rgbval cmap buffer 0 get 3 mul 3 getinterval store % and put it in position i*3 in block block exch 3 mul rgbval putinterval } for block 0 bcount 127 sub 3 mul getinterval } { % else it's a run block currentfile buffer readhexstring pop pop % look up value in colormap /rgbval cmap buffer 0 get 3 mul 3 getinterval store 0 1 bcount { block exch 3 mul rgbval putinterval } for block 0 bcount 1 add 3 mul getinterval } ifelse } % end of proc false 3 colorimage } bind def 320 128 8 % dimensions of data [320 0 0 -128 0 128] % mapping matrix rlecmapimage 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181020101018102010101040202018102010101820201038203050301038105048304 030503010382050301820102010101810201010104020201810201010181020101018102 010101810201010104020201810201010182020103820305030103810504830403050301 038205030182010201010181020101010402020181020101018102010101810201010181 020101010402020181020101018202010382030503010381050483040305030103820503 018201020101018102010101040202018102010101810201010181020101018102010101 040202018102010101820201038203050301038105048304030503010382050301820102 010101810201010104020201810201010181020101018102010101810201010104020201 810201010182020103820305030103810504830403050301038205030182010201010181 02010101040202018102010101810201 820201020102810102010281010205028101020102810102830205030501058103050105 810305010581030583050201020102810102010281010205028101020102810102010281 010201028101020102810102050281010201028101028302050305010581030501058103 050105810305830502010201028101020102810102050281010201028101020102810102 010281010201028101020502810102010281010283020503050105810305010581030501 058103058305020102010281010201028101020502810102010281010201028101020102 810102010281010205028101020102810102830205030501058103050105810305010581 030583050201020102810102010281010205028101020102810102010281010201028101 020102810102050281010201028101028302050305010581030501058103050105810305 830502010201028101020102810102050281010201028101020002 010281010201028101020502810102010281010201028201020582050305010581030501 058103050105820305028202010201028101020502810102010281010201028101020102 810102010281010205028101020102810102010282010205820503050105810305010581 030501058203050282020102010281010205028101020102810102010281010201028101 020102810102050281010201028101020102820102058205030501058103050105810305 010582030502820201020102810102050281010201028101020102810102010281010201 028101020502810102010281010201028201020582050305010581030501058103050105 820305028202010201028101020502810102010281010201028101020102810102010281 010205028101020102810102010282010205820503050105810305010581030501058203 0502820201020102810102050281010201028101020102810102 820102010101810201010104020201810201010181020183010305030103820503048204 050301038105038303010201010181020101010402020181020101018102010101810201 010181020101010402020181020101018102018301030503010382050304820405030103 810503830301020101018102010101040202018102010101810201010181020101018102 010101040202018102010101810201830103050301038205030482040503010381050383 030102010101810201010104020201810201010181020101018102010101810201010104 020201810201010181020183010305030103820503048204050301038105038303010201 010181020101010402020181020101018102010101810201010181020101010402020181 020101018102018301030503010382050304820405030103810503830301020101018102 0101010402020181020101018102010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081030001008103000100810305010581030001008103000100820300030503010006 030100810300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008203000305030100060301008103 000100810300010081030501058103000100810300010081030001008103000100810300 010081030501058103000100810300010082030003050301000603010081030001008103 000100810305010581030001008103000100810300010081030001008103000100810305 010581030001008103000100820300030503010006030100810300010081030001008103 050105810300010081030001008103000100810300010081030001008103050105810300 010081030001008203000305030100060301008103000100810300010081030501058103 0001008103000100810300 820300030103810003010381000301038105030103810003010381000307030104070381 000301038100030103810003010381050301038100030103810003010381000301038100 030103810003010381050301038100030103810003070301040703810003010381000301 038100030103810503010381000301038100030103810003010381000301038100030103 810503010381000301038100030703010407038100030103810003010381000301038105 030103810003010381000301038100030103810003010381000301038105030103810003 010381000307030104070381000301038100030103810003010381050301038100030103 810003010381000301038100030103810003010381050301038100030103810003070301 040703810003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040803 810003010381000301038105030103810003010381000301038100030103810003010381 000301038105030103810003010381000301038100030603010408038100030103810003 010381050301038100030103810003010381000301038100030103810003010381050301 038100030103810003010381000306030104080381000301038100030103810503010381 000301038100030103810003010381000301038100030103810503010381000301038100 030103810003060301040803810003010381000301038105030103810003010381000301 038100030103810003010381000603060103810003010381000301038100030603010408 0381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 060382000300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008103008100030503010006038200 030001008103000100810305010581030001008103000100810300010081030001008103 000100810305010581030001008103000100810300810003050301000603820003000100 810300010081030501058103000100810300010081030001008103000100810300010081 030501058103000100810300010081030081000305030100060382000300010081030001 008103050105810300010081030001008103060c06820503000100810300010081030081 000305030100060382000300010081030001008103050105810300010081030001008103 000000 010081030001008103000100810305010581030001008103000100820300030503010006 030100810300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008203000305030100060301008103 000100810300010081030501058103000100810300010081030001008103000100810300 010081030501058103000100810300010082030003050301000603010081030001008103 000100810305010581030001008103000100810300010081030001008103000100810305 010581030001008103000100820300030503010006030100810300010081030001008103 050105810306120602058103000100810300010082030003050301000603010081030001 008103000100810305010581030001008103000100810300 820300030103810003010381000301038105030103810003010381000307030104070381 0003010381000301030e0682030003010381000301038100030103810503010381000301 038100030703010407038100030103810003010381000301038105030103810003010381 000301038100030103810003010381000301038105030103810003010381000307030104 070381000301038100030103810003010381050301038100030103810003010381000301 038100030103810003010381050301038100030103810003070301040703810003010381 000301038100030103820503061206010381050301038100030103810003070301040703 810003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040803 810003010314060203810003010381050301038100030103810003010381000306030104 080381000301038100030103810503010381000301038100030103810003010381000301 038100030103810503010381000301038100030103810003060301040803810003010381 000301038105030103810003010381000301038100030103810003010381000301038105 030103810003010381000301038100030603010408038100030103810003010381050301 031406020381000301038100030103810003060301040803810003010381000301038105 03010381000301038100030103810003 820004000100810400010081040501058104000100810400010081040001008104000100 820400040104020081040001008104008100061806020081040501058104000100810400 010081040001008104000100820400040104020081040001008104000100810400010081 040501058104000100810400010081040001008104000100810400010081040501058104 000100810400010081040001008104000100820400040104020081040001008104000100 810400010081040501058104000100810400010081040001008104000100810400010081 040501058104000100810400010081040001008104000100820400040104020081040001 008104000100810400010081040501058104000100110601058104000100810400010081 040001008104000100820400040104020081040001008104000100810400010081040501 05810400010081040001008104000000 010081040001008104000100810405010581040001008104000100810400010081040001 00020482000400010081040001001d060100810405010581040001008104000100810400 010081040001000204820004000100810400010081040001008104000100810405010581 040001008104000100810400010081040001008104000100810405010581040001008104 000100810400010081040001000204820004000100810400010081040001008104000100 810405010581040001008104000100810400010081040001008104000100810405010581 040001008104000100810400010081040001000204820004000100810400010081040001 008104000100810405010581040001008104008100060b06810405010581040001008104 000100810400010081040001000204820004000100810400010081040001008104000100 810405010581040001008104000100810400 82030003010381000301038100030103810503010381000301038100030703010407030a 068203050301038100038103060b06810003010381050301038100030103810003070301 040703810003010381000301038100030103810503010381000301038100030103810003 010381000301038100030103810503010381000301038100030703010407038100030103 810003010381000301038105030103810003010381000301038100030103810003010381 000301038105030103810003010381000307030104070381000301038100030103810003 0103810503010381000301030c0602038105030103810003010381000307030104070381 0003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040503 0b060203810003010381000301030b068105030103810003010381000301038100030603 010408038100030103810003010381050301038100030103810003010381000301038100 030103810003010381050301038100030103810003010381000306030104080381000301 038100030103810503010381000301038100030103810003010381000301038100030103 810503010381000301038100030103810003060301040803810003010381000301038105 03010381000301038100038103060b068105030103810003010381000301038100030603 0104080381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 05030a060205810300010081030001008203000609060205810300010081030001008103 008100030503010006038200030001008103000100810305010581030001008103000100 810300010081030001008103000100810305010581030001008103000100810300810003 050301000603820003000100810300010081030501058103000100810300010081030081 000681060001008103000100810305010581030001008103000100810300810003050301 00060382000300010081030001008103050105810300010081030001000c060205810300 010081030001008103008100030503010006038200030001008103000100810305010581 0300010081030001008103000000 010081030001008103000100810305010581030001008103000100820300030503010004 030a06820003050105810300010081030001008203000607068200030501058103000100 810300010082030003050301000603010081030001008103000100810305010581030001 008103000100810300010081030001008103000100810305010581030001008103000100 820300030503010006030100810300010081030001008103050105810300010081030001 000306810300010081030001008103050105810300010081030001008203000305030100 0603010081030001008103000100810305010581030001008103008100060a0682000305 010581030001008103000100820300030503010006030100810300010081030001008103 05010581030001008103000100810300 82030003010381000301038100030103810503010381000301038100030703010403030a 068203000301038105030103810003010381000301030306010701068100030103810503 010381000301038100030703010407038100030103810003010381000301038105030103 810003010381000301038100030103810003010381000301038105030103810003010381 000307030104070381000301038100030103810003010381050301038100038103060406 020381000301038100030103810503010381000301038100030703010407038100030103 8100030103810003010381050301038100038103060b0681000301038105030103810003 010381000307030104070381000301038100030103810003010381050301038100030103 8100030003 010381000301038100030103810503010381000301038100030103810003060301040203 0b0601038105030103810003010381000301038100030103060682030503010381000301 038100030103810003060301040803810003010381000301038105030103810003010381 000301038100030103810003010381000301038105030103810003010381000301038100 030603010408038100030103810003010381050301038100030103070681000301038100 030103810503010381000301038100030103810003060301040803810003010381000301 0381050301038100030103820003060b0682030503010381000301038100030103810003 06030104080381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 02030a060100810305010581030001008103000100810300010081030605068103050105 810300010081030001008103008100030503010006038200030001008103000100810305 010581030001008103000100810300010081030001008103000100810305010581030001 008103000100810300810003050301000603820003000100810300010081030501058103 008100060706810300010081030001008103050105810300010081030001008103008100 030503010006038200030001008103000100810305010581030001008103008100060b06 810305010581030001008103000100810300810003050301000603820003000100810300 01008103050105810300010081030001008103000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810306020602070406020081010201028101000100810100010081010001 008201070686060807060001020102810100010081010001008101000100810300010081 030001008103000100810300010081010001008101000100810102010281010001008101 000100810100010081010001008101000100810102010281010001008101000100810100 010081030001008103000100810300010081030001008101000100810100010081010201 020a06820001000100810100010081010201028101000100810100010081010001008103 000100810300010081030001008103000100810100010081010001008101020102810100 0100820100060a0601008101020102810100010081010001008101000100810300010081 030001008103000100810300010081010001008101000100810102010281010001008101 000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048304000306020602078106078107068106018201000101018102010101810001 010181000101018200010681060884080601000101018102010101810001010181000183 010300030103820003048204000301038100038303010001010181000101018100010101 810201010181000101018100010101810001010181000101018100010101810201010181 000101018100018301030003010382000304820400030103810003830301000101018100 0101018100018101060b0681000101018100010101810001010181020101018100010101 810001830103000301038200030482040003010381000383030100010101810001010181 000101018102010101820001060b06820100010101810201010181000101018100018301 030003010382000304820400030103810003830301000101018100010101810001010181 0201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048404030006070107860608070607060781070101018102010101810001010181 000101018100010101840006080906810601820102010101810001010181000101018200 010382030003010381000483040300030103820003018201000101018100010101810201 010181000101018100010101810001010181000101018100010101810201010181000101 018100010101820001038203000301038100048304030003010382000301820100010101 81000101018102060b060101810001010181000101018102010101810001010181000101 018200010382030003010381000483040300030103820003018201000101018100010101 810201010181000101018100060b06010181020101018100010101810001010182000103 820300030103810004830403000301038200030182010001010181000101018102010101 81000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030601068207080901098507080907060082000102010281010001008101 000100810100010082010007860706070600010201028101000100810100010081010001 008103000100810300010081030001008103000100810100010081010001008101020102 810100010081010001008101000100810100010081010001008101020102810100010081 010001008101000100810300010081030001008103000100810300010081010001008101 000100820102060206030804068200010001008101000100810102010281010001008101 000100810100010081030001008103000100810300010081030001008101000100810100 010081010201028101000100820100060406810706040682000102010281010001008101 000100810100010081030001008103000100810300010081030001008101000100810100 01008101020102810100010081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100840607060806010601070106820706000100810102010281010001008101 000100810100010082010006020601008101020102810100010081010001008101000100 810300010081030001008103000100810300010081010001008101000100810102010281 010001008101000100810100010081010001008101000100810102010281010001008101 000100810100010081030001008103000100810300010081030001008101000100810100 010081010601060108820607068206080601060100810100010081010001008101020102 810100010081010001008101000100810300010081030001008103000100810300010081 010001008101000100810102010281010001008101060306010782060706010602008101 020102810100010081010001008101000100810300010081030001008103000100810300 010081010001008101000100810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048504000708070681060781070604060101810001010181020101018100010101 810001010181000181010602068201000101018102010101810001010181000183010300 030103820003048204000301038100038303010001010181000101018100010101810201 010181000101018100010101810001010181000101018100010101810201010181000101 018100018301030003010382000304820400030103810003830301000101018100010101 860001060708090701070108010781080182010001010181000101018100010101810201 010181000101018100018301030003010382000304820400030103810003830301000101 018100010101810001010181020101018300010607820706078207060781070601060101 810001010181020101018100010101810001830103000301038200030482040003010381 00038303010001010181000101018100010101810201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048404030607060a06010181020101018100010101810001010181000101018200 010601060201810201010181000101018100010101820001038203000301038100048304 030003010382000301820100010101810001010181020101018100010101810001010181 000101018100010101810001010181020101018100010101810001010182000103820300 0301038100048304030003010382000301820100010101810001010101088607080a090a 090a820a0708810801010181000101018100010101810201010181000101018100010101 820001038203000301038100048304030003010382000301820100010101810001010181 020101018100010101010607070108810601010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 01010181000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103000100 81030001008103060c068200010201028101000100810100010081010001008101008100 060106010081010201028101000100810100010081010001008103000100810300010082 030608810806840608060806830600010001008101020102810100010081010001008101 000100810100010081010001008201060881080682060806810608810806810600010081 030001008103000100810300010081030001008101000100810100010081010685060709 080708020881070681060082000100010081010001008101020102810100010081010001 008101000100810300010001068309060806030601008101000100810100010081010201 02810100010083010806078a070607060706080607060082000102010281010001008101 008600060807060706840608000300010081030001008103000100810100010081010001 008101020102810100010081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 0081030001000e0682000102010281010001008101000100810100010081010001008101 000100810102010281010001008101000100810100010081030001000306880706070908 0908070a810a060106020081010201028101000100810100010081010001008101000100 8101060306820a0908010885090709080706010682000300010081030001008103000100 810300010081010605060307020603070b06820001020102810100010081010001008101 00810006010601088806070a090708090806020681010001008101000100810102010281 01000100810608020881070882080a078307060100010081010201028101000100820a06 080108010701088406070003000100810300010081030001008101000100810100010081 0102010281010001008101000100810100 820102010101810201010104020201810201010181020183010305030103820503048204 05060e060302020181020101018102010101810201010181020101010402020181020101 0181020183010305038103060b0601090506040202018102010101810201010181020181 01060206010785080a070609060306030802060103820503048204050301038105038303 010206070681080601068107060106010781080609060402020181020101018202010603 06830706070681060981090a830a070a0881080601068201020101010402020181020882 080a0981090a010a01088207060101010402010181060881080a010a8208090882080a08 830807030482040503010381050383030102010101810201010104020201810201010181 02010001 010181020101018102010101040202018102010101820201038203050301038105048204 03060f060302020181020101018102010101810201010181020101010402020181020101 018202010381030616060402020181020101018102010101140681080603068203050483 04030503010382050301810106060681080601068308060806820607060b068101020302 020181020181010616068201020101010402010183060807080208820907080108820602 0101010302020602088306080a0682060906820608068106048304030503010382050301 8201020101018102010101040202018102010101810201 820201020102810102010281010205028101020102810102830205030501058103050105 810306100604028101020102810102010281010201028101020102810102050281010201 028101028202050608060105820305060a060502810102010281010201020c0602028201 020609060205810305010581030583050201061c06820201020502810102810206080602 058103060a06020281010205028206080783070607088208060881080681060201028101 020102110601058103050105810305830502010201028101020102810102050281010201 028101020002 010281010201028101020502810102010281010201028201020582050305010581030501 058103061006820201020102810102010281010201028101020102810102050281010201 028101020102810106090681030501058103060b06010281010201028101020102820102 060b06820201020102820102060906020581030501058203050282020102010281010281 02060b0681010201028101020102810102050281010201020a068205030501050c060602 810102810206830608060701070406820201020302130601058103050105820305028202 01020102810102050281010201028101020102810102 820100010101810001010181000101018102010101810001010181000183010300030103 820003048304000306120601018100010101810001010181000101018100010101810001 010181020101018100010101810006090681000301038100038103060a06820102010101 8100010101820001060b0682010201010181000101010a06820400030103810003830301 0001010181000101010b0681000101018100010101810001010181000101018102010101 0a06830300030483040003060a0601018100010101810201010101068208060781070601 068107068206000101018200010613068204000301038100038303010001010181000101 018100010101810201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048404030003061206010181000101018100010101810001010181000101018102 0101018100010101810001810106090683040300030103820003060a0601018100010101 81000101010c060201810001010181000181010609068304030003010382000301820100 010101820001060b06820100010101810001010181000101018102010101820001060906 020381000483040300060a06020181020101018100018101060a06820100010101040602 018100060b06830403000301038200030182010001010181000101018102010101810001 01018100010101810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030081000614060200810100010081010001008101000100810102010281 0100010081010081000609060100810300010081030001000a0682020100010081010001 000c06020281010001008101000100810106090681030001008103000100810100010081 01008100060b068101000100810100010081010001008101020102820100060906020081 030001008103008100060906010081010201028101008100060b06810100010004060200 820100060b06820003000100810300010081010001008101000100810102010281010001 0081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 00810300010081030081000605068107060d060100810100010081010001008101000100 810102010281010001008101060a06020081030001008103008100060906010281010001 00820100060b06820001020102810100010081010001000b068103000100810300010081 01000100820100060b068200010001008101000100810100010081010201020b06810300 0100810300010082030006090602008101020102820100060a0601008101008100060206 820201000100820100060a06010081030001008103000100810100010081010001008101 02010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100060306010706060107060681000101018100010101810001 010181000101018102010101820001060906810304820400030103810003820301060906 820102010101820001060c068100010101810201010181000101018100060a0602038100 03830301000101018100018101060a068201000101018100010101810001010181000101 018102060906810003010382000304820400038103060906010181000101018102018101 060a068201000181010602068201020101018100018101060a0682040003010381000383 03010001010181000101018100010101810201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010381000601060507810607050701068107060206020181000101 018100010101810201010181000101010b06810004830403000301038300030106080602 0181000101018100060b0601018102010101810001010181000101010b06810003010382 0003018201000101018100060b0601018100010101810001010181000101018102018101 060a06820300030103810004840403000306080681000101018102010101820001060a06 01018100060206020181000101018100060b068304030003010382000301820100010101 8100010101810201010181000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103008200060781070681060701078106070107810607040704 068200010001008101000100810102010281010001000b06810300010081030001008103 0001008101060606020281010001008101060b0601008101020102810100010081010001 008101060a06020081030001008101000100820100060b06820001000100810100010081 010001008101028102060a06820003000100810300010081030001000706810100010081 01020102820100060b0682000106020602028101000100820100060a0601008103000100 8103000100810100010081010001008101020102810100010081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030081000681060701078106078307060706810607020781 060701070306820001000100810100010081010201028101008100060106810706020681 070601068200030001008103000100810300010006068200010201028101008100060c06 020081010201028101000100810100010008068107060106020081030001008101000100 81010602068107068206070603060100810100010081010001008101000100820102060a 060100810300010081030001008103008100060506010081010001008101020102810106 0a060200020682000102010281010001008101060a060200810300010081030001008101 0001008101000100810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038403010006070107020601070306810706040684070607 060101018100010101810001010181020181010601060207810607010701068303000304 820400030103810003830301000183010600010101810001010181020101010206810706 080601018100010101810201010181000101018100060206820706070307010601038100 038303010001010184000106070681060782070607810706010601018100010101810001 01018100010101820001060a068301030003010382000304820400030103850003060100 010101810001010181000101018202010606060207810601810106010682010001010181 02010101820001060a060104810003010381000383030100010101810001010181000101 01810201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100060106050781060702070106010782060706 010681000101018100010101810201010183000106070707010601038100048304030003 010382000301820100010101810001010181020101018400010607068106078107068106 078107060206810001010181020101018100010101810001010103068207060783070607 060106020382000301820100010101020602078106070107020602018100010101810001 010181000101018102068106078107060606810103820300030103810004830403000301 038200030182010001010181000101018102010101810007070784060706010683060706 0182010201010181000101010c0601048203000301038200030182010001010181000101 01810201010181000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103000100 8103000100810300010081030001008101000100820706070f0781060781070082000100 010081010201028201000702070106810706810607820706008200030001008103000100 810300010081010001008101000100810102010281010081000681060784070607060701 070306020081010201028101000100810100010081010681060701078106070307820607 008200030001008101000100810106810607040704060100810100010081010001008101 000100810106810607030782060706010602008103000100810300010081030001008103 000100810100010081010001008101020102820100068106070707850600060706008200 0102010281010001008101060a0602008103000100810300010081010001008101000100 8101020102810100010081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810107070781080709070100810100 010081010201028101070407810607030702008103000100810300010081030001008101 000100810100010081010201028101068106070107810607050783060001000100810102 010281010001008101008100068106070207830607080784070807060001008103000100 810100010081060701078406070607060106820706000100810100010081010001008101 000100810607060701068207010001008103000100810300010081030001008103000100 8101000100810100010081010201028107068106070207830607060782070b0683060701 000100810102010281010001008506070607060783070607060106810300010081030001 00810300010081010001008101000100810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000181010704078308070807020781 0807040782010001010181000101018102070b0701038200030482040003010381000383 030100010101810001010181000101018402010706070107820607068106070307810001 010181000101018102010101810001010181060703078306070607820708078107038203 000383030100010101820006070307810607010701060201810001010181000101018100 010101010601070108020703060101820300030103820003048204000301038100038303 010001010181000101018100010101810206810607050781060785070b06070601010181 000101018102010101010604078106078107060106810304820400030103810003830301 0001010181000101018100010101810201010181000101018100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010183070807088208070884 080708070883080708070207820100010101810201010102088407080708070407020381 000483040300030103820003018201000101018100010101810201010181000705078106 070407820100010101810201010181000101018100018101070607820806070107810603 010382000301820100018101080108090781000101018100010101810001010181000181 010702078108070107040682000103820300030103810004830403000301038200030182 010001010181000101018102010101010781080781070881080781070682060706840607 010001010181020101018100018201060701078106078207060781070683060300048304 030003010382000301820100010101810001010181020101018100010101810001010181 0001 820001000100810100010081010201028101000100810100010081010001008103000100 81030001008103000100810300010081010001008101000100820102080a088107088208 070882080100010081010201028101080308810708010883070807000100810300010081 0300010081030001008101000100810100010081010201028101070c0782000100010081 010201028101000100810100010004070108810607040701008103000100810100010002 080407810807020702008101000100810100010081010001000107810807020781060784 070607010001008103000100810300010081030001008103000100810100010081010001 008101020102850108070806080308020702068101000100810102010281010001008106 070207810807020701068103000100810300010081030001008101000100810100010081 01020102810100010081010001008101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010082010208090881070803 0882000100010081010281020882080a0884080708070882080708820803000100810300 010081030001008103000100810100010081010001008101020102010702080107810807 010781080781070082000100010081010201028101000100820100078207080701078108 078207080781070882080700010081030001008101008100080308860708070807080782 070100010081010001008101000100820100070207860807080706080701078200010001 008103000100810300010081030001008103000100810100010081010001008101028302 070807010785080708060708010882070600820001000100810102010281010081000701 078106080208860706070600030001008103000100810300010081010001008101000100 810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101100802018100 0101010108810a0808080203820003048204000301038100038303010001010181000101 018100010101830208070806088207080783070100010101810001010181020101018100 018201070883080708078107080408810703010381000383030100010101080884070807 000101018100010101810001010181000181010787070807080708070881080701078100 018301030003010382000304820400030103810003830301000101018100010101810001 010103088107080308810a08020882010001010181000101018102018101078307080708 040801078306000304820400030103810003830301000101018100010101810001010181 0201010181000101018100010001 01018100010101810001010181020101018100010101810001010182000103830300030a 010a010482030003010382000301820100010101810001010181020101010308010a0908 81000101018102018101080208050a020881000301038100048304030003010382000301 820100010101810001010181020101010208010708080101810001010181020101018100 010101820001080c0881000301038200030183010001080b088201000101018100010101 810001010182000108050881070801080107830100010382030003010381000483040300 030103820003018201000101018100010101810201810108010881070882080a0884080a 080708810801010181000101018102010101820001080108810a08060801038100048304 030003010382000301820100010101810001010181020101018100010101810001010181 0001 820001000100810100010081010201028101000100810100010081010001008103008100 0a010a0100810300010081030001008101000100810100010081010201028401000a080a 010a83080a080a810a08030802008101020102020a0108820a080a020a82080300010081 03000100810300010081030001008101000100810100010081010201020908810a080108 01008101000100810102010281010001008201000a020a0408010a82080a088108000100 810300010081010081000a020a0108830a080a0802088101000100810100010081010001 008101008100080108810a0882080a080308820001000100810300010081030001008103 00010081030001008101000100810100010081010201020108020a86080a080a080a0882 080700820001000100810102010281010081000881080a820a080a010a82080a08830800 030001008103000100810300010081010001008101000100810102010281010001008101 0001008101000000 010081010001008101000100810102010281010001008101000100810100010086030009 0a070a00820003000100810300010081010001008101000100810102010281010a0b0a01 0881010001008201020a060a0109020a8200030001008103000100810300010081030001 00810100010081010001008101028102080308810a080208010a01080200810100010081 01020102810100010081010a030a81090a070a810300010081030001008201000a020a81 080a020a0308820001000100810100010081010001008101080208010a0208810a080108 010081010001008103000100810300010081030001008103000100810100010081010001 0081010281020881080a010a81080a050a8101000100810100010081010201028201080a 090a81070082000300010081030001008103000100810100010081010001008101020102 81010001008101000100810100 82010001010181000101018100010101810201010181000101018100018701030003060a 090a830a0400030103810003830301000101018100010101810001010181020181010a02 0a81090a070a02018100018201090a030a0209030a810003010382000304820400030103 8100038303010001010181000101018100010101030a83080a080a050a01018100010101 81000101018102010101820001090109820a090a010a82090a0981090a820a0003010381 0003830301000183010a090a050a81080a830a0100010101810001010181000101018200 010a820a080a050a85080a08010001830103000301038200030482040003010381000383 030100010101810001010181000181010a030a81090a060a020181000101018100010101 8202010a030a81090a040a01038200030482040003010381000383030100010101810001 01018100010101810201010181000101018100010001 01018102010101810201010104020201810201010182020103850305060a090a840a0403 05030103820503018201020101018102010101040281010a010a0209820a090a040a8102 0101010102010a81090a860a090a090a090a010a82030503010381050483040305030103 8205030182010201010181020101010202040a0108010a81090a020a0201810201010104 0202018102090109010a81090a010a82090a0984090a0305030103820503018201020a01 0a81090a010a81090a030a010181020101018102010101810201010181020a020a81090a 050a81080183010201038203050301038105048304030503010382050301820102010101 81020101010102010a0409010a83090a090a820a0201010181020101010402040a81090a 040a02038105048304030503010382050301820102010101810201010104020201810201 0101810201 82020102010281010201028101020502810102010281010284020503050681060a010a82 05030501058103058305020102010281010201028101020502810a090209810a09040981 0a0201028101028102090809840a090a0305010581030501058103050105810305830502 0102010281010201028101020102820a090a070a81090a810a0282020102010281010205 0281010a810a0982090a0982090a090109810a0983090a0305010581030584050201020a 810a090909820201020102810102010281010201028201020a850a090a090a090109030a 820201028302050305010581030501058103050105810305830502010201028101020102 8101028102090609810a0902098101020102810102010281010203020809830a090a0582 050305010581030501058103058305020102010281010201028101020502810102010281 01020002 0102810102010281010205028101020102810102010282010205830503070a010a840706 050305010582030502820201020102810102050281010283020a090a810a090109810a09 85090a090a01020302810a0982090a0982090a090309830a050305010581030501058103 0501058203050282020102830206010204020409010a81090a810a090109810102010281 010205028101020102020a0209810a09050901058103050105820305028302010a090509 850a090a090a02820201020102810102010281010201028101090709810a0982090a0283 020102058205030501058103050105810305010585030506020102010281010203020109 830a090a0906098202010201028101020502810a090a0902058103050105810305010582 030502820201020102810102050281010201028101020102810102 82010201010181020101010402020181020101018102018501030503060a030a81050301 03810503830301020101018102010101040202010c0a02010202810a0981090a080a8105 030103820503048204050301038105038303010201810106010601010302810a09040901 0a0109010a02018102010101040202018102080108820a090a810a090309010a82040503 01038105038403010201090109010a81090a010a02090101810201010181020183010602 010101820201090b09820102018301030503010382050304820405030103820503060106 020181020101010102020a0109010a0109830a090a098209020101018102010101040201 09810a090209010a0109810a030103820503048204060301038105038303010201010181 020101010402020181020101018102010001 010181000101018100010101810201010181000101018100010101820001038603000608 0a070a830a0300030103820003018201000101018100010101810201010181000181010a 020a81080a050a8201000101018402010a090a020a84070a08070a010a82030003010381 00048304030003010382000301820100060206020181020181010a810a090209810a0981 090a020a8100010101810001010181020101018100018101080308020a81090a820a090a 810a04830403000301038200030181010a820a090a060a01090201810001010182000106 82060001010181000a820a090a010a81090a040a01018200010382030003010381000483 04030003010303068100010101810001010181020a010a81090a060a0109820100010101 81000101018102010101810a0981090a030a81090a010a81000301038100048104060106 0103820003018201000101018100010101810201010181000101018100010101810001 82000100010081010001008101020102810100010081010001008101000100860300070a 080a07820706000100810300010081010001008101000100810102010281010001000708 010a0108810100010081010281020a020a01088107088208070801088103000100810300 01008103000100810300010082010006020601008101020102010a81090a030a81090a02 0a020081010001008101020102810100010001070708030a010081030001008103000100 81010a810a0983090a070a030a01090100810100010082010006020601008201000a0b0a 820001000100810300010081030001008103000100810306020602008101000100840102 0a080a090a82000100010081010001008101020102020a81090a070a0200810300810006 020682000300010081010001008101000100810102010281010001008101000100810100 0000 01008101000100810100010081010201028101000100810100010081010001008603070a 070a06078207030001008103000100810100010081010001008101020102810100810008 0a088200010001008201020782070a068106078307080708020882000300010081030001 008103000100810300010003068101000100810102810207830708070881080a810a0781 070801088101000100810100010081010201028301000607020701088107080408810300 010081030001008103000100050a84070a08070a820a0900010081010001000306810100 010081010a830a08070a020a0208820a0800820001000100810300010081030001008103 0081000602068200010001008101000100810108030882070a0782070a0882080a008200 01000100810100010081010281020a0a0a82000300010082030006010602008103000100 81010001008101000100810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000186010300060708 070107020601038100038303010001010181000101018100010101810201010102088107 080208810708830801000101018100018101070307810607820706070207810003010382 000304820400030103810003820301060206810001010181000101018202070801080507 820807010101810001010181000101018102018101070307810607010786060806070803 04820400030103810003830301000881080a890a08070807080708070101018100010101 030681000101018200010a810a0801088107080308840708010001830103000301038200 030482040003810306020682010001010181000101018400010807080508010781080182 010001010181000101018100010101030a82080a0883080a080a820a0003010382000306 020601038100038303010001010181000101018100010101810201010181000101018100 010001 010181000101018100010101810201010181000101018100010101820001038103060206 810706020602038200030182010001010181000101018102010101820001068306080607 010781060701078106018201000101018202010781070682060706020602070106810003 01038100048304030003010382000306030682010001010181020101010b078100010101 810001010181020101018200060703078106070407830603000483040300030103830003 010701078106070307810607010781000101018100018101060206820100010101810008 010883070807080108810708010884070100010382030003010381000483040300060306 010181000101018100010101810607020781080781070881080782070801010181000101 0181000101018102018101080108840a080a070803088203000301030306810003010382 0003018201000101018100010101810201010181000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103060806 820003000100810100010081010001008101020102810100820006088108068106078207 060782070600820001000100810102010205068107068206070601060200810300010081 030001008203000603068200010001008101020102830106070601060107030681070001 008101000100810102010282010006050603070106820003000100810300010081030001 000307890607060706070607060001008101008100060206820001000100810100810007 010782080708820807080108010781010001008103000100810300010081030603060100 810100010081010001008101068106070307810807020781080082000100010081010001 008101028102070b07810300010004060200810300010081010001008101000100810102 0102810100010081010001008101000000 01008101000100810100010081010201028101000100810100010081010001000a068200 030001008101000100810100010081010201028401000608060706020081010001008101 028102060c06020081030001008103000100040602008101000100810102010281010681 060781070681060701070106810100010081010001008101020102080681070602060100 810300010081030001008103008100060106010701060107820607068206010001008101 060206020081010001008501000706070803080407820601000100810300010081030081 000603068103000100810100010081010001000506010781060783070601000100810100 010081010001008201020705078106070107840607000300810006020682000300010081 0300010081010001008101000100810102010281010001008101000100810100 820100010101810001010181000101018102010101810001010181000183010300060a06 010382010001010181000101018100010101820201060906020181000101018100010101 0d0601038200030482040003010304060201810001010181000101018202010604068107 0602060201810001010181000101010d0601038200030482040003010381000382030106 0b0602010506010181000101018100018101060106020803070306010182030003010383 0003040603068100038303010001010181000101018100060a0602018100010101810001 010181000182010607020781060701078106078407060003060306820400030103810003 8303010001010181000101018100010101810201010181000101018100010001 01018100010101810001010181020101018100010101810001010182000103820300060a 06810301820100010101810001010181020101010a068201000101018100010101810201 01010e068203000483040300060506810001010181000101018102010101820001060906 02018100010101820201060c068100030103810004830403000301038300030106130681 000101018100010101810001810106840607060706040681070601060103810003010306 06830300030182010001010181000101010b068100010101810001010181000101018202 0106020604070a0683040300030103820003018201000101018100010101810201010181 000101018100010101810001 820001000100810100010081010201028101000100810100010081010001008103008100 060a06820001000100810100010081010201020a06820001000100810100010081010201 028101061806820001000100810100010081010201028101008100060906010081010001 00820102060c068103000100810300010081030001008103000100130681010001008101 0001008101000100190601008103000100810100010081010001000c0602008101000100 810100010081010281020607068107060706010081030001008103000100810100010081 010001008101020102810100010081010001008101000000 0100810300010081030001008103050105810300010081030001008203000303030c0681 0300010081030001008103060a0602008103000100810300010081030501058103061606 810300820003000100810300010081030501058103008100060a068200030001000c0681 000305030100060381000611060100810300010081030001008103000100170605030100 81030001008103008100060a068200030001008103000100810300010082030506100681 030081000305030100810300010081030001008103050105810300010081030001008103 00 820300030103810003010381000301038105030103810003010381000306031f06020381 000301038100030103810003010381050381030614060203810003010381000301038100 03010381050301038200030619060803010407038100060e060203810003010381000301 0381000301038200030614060703810003010381000301030b0681000301038100030103 810003010381000301030f06010301040703810003010381000301038100030103810503 010381000301038100030003 01038100030103810003010381050301038100030103810003010381000306038104061a 060103810003010381000301038100030103810503010381000381030611060503810003 010381000301038105030103810003010382000306160601038100030603010408030e06 820300030103810003010381000301038100030103820503061106010408038100030103 8100038103060a06820300030103810003010381000301038105038103060c0603030104 080381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 01031606020081030001008103000100810300010081030501058103000100820300060d 060503820003000100810300010081030501058103000100810300010081030611068103 00010081030081000305030100060383000300060a060100810300010081030001008103 000100810300010081030501058103060d06010301000603820003000100810300810006 0b0681030001008103000100810300010081030501058103060a06040301000603820003 00010081030001008103050105810300010081030001008103000000 010081030001008103000100810305010581030001008103000100820300030503010005 030e06810300010081030001008103000100810300010081030001008103050105810300 010081030081000608060100060301008103000100810300010081030501058103000100 81030001008103008100060b068103000100810300010082030003050301000603010081 030081000605060105810300010081030001008103000100810300010081030001008103 050105820300060806040301000603010081030001008203000605060200810300010081 030001008103000100810300010081030501058203000605068100030503010006030100 81030001008103000100810305010581030001008103000100810300 820300030103810003010381000301038105030103810003010381000307030104070381 000301038100030103810003010381050301038100030103810003010381000301038100 030103810003010381050301038100030103810003070301040703810003010381000301 038100030103810503010381000301038100030103810003010381000301038100030103 810503010381000301038100030703010407038100030103810003010381000301038105 030103810003010381000301038100030103810003010381000301038105030103810003 010381000307030104070381000301038100030103810003010381050301038100030103 810003010381000301038100030103810003010381050301038100030103810003070301 040703810003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040803 810003010381000301038105030103810003010381000301038100030103810003010381 000301038105030103810003010381000301038100030603010408038100030103810003 010381050301038100030103810003010381000301038100030103810003010381050301 038100030103810003010381000306030104080381000301038100030103810503010381 000301038100030103810003010381000301038100030103810503010381000301038100 030103810003060301040803810003010381000301038105030103810003010381000301 038100030103810003010381000301038105030103810003010381000301038100030603 0104080381000301038100030103810503010381000301038100030103810003 820004000100810400010081040501058104000100810400010081040001008104000100 820400040104020081040001008104000100810400010081040501058104000100810400 010081040001008104000100810400010081040501058104000100810400010081040001 008104000100820400040104020081040001008104000100810400010081040501058104 000100810400010081040001008104000100810400010081040501058104000100810400 010081040001008104000100820400040104020081040001008104000100810400010081 040501058104000100810400010081040001008104000100810400010081040501058104 000100810400010081040001008104000100820400040104020081040001008104000100 810400010081040501058104000100810400010081040001008104000100810400010081 040501058104000100810400010081040001008104000100820400040104020081040001 00810400010081040001008104050105810400010081040001008104000000 010081040001008104000100810405010581040001008104000100810400010081040001 000204820004000100810400010081040001008104000100810405010581040001008104 000100810400010081040001008104000100810405010581040001008104000100810400 010081040001000204820004000100810400010081040001008104000100810405010581 040001008104000100810400010081040001008104000100810405010581040001008104 000100810400010081040001000204820004000100810400010081040001008104000100 810405010581040001008104000100810400010081040001008104000100810405010581 040001008104000100810400010081040001000204820004000100810400010081040001 008104000100810405010581040001008104000100810400010081040001008104000100 810405010581040001008104000100810400010081040001000204820004000100810400 010081040001008104000100810405010581040001008104000100810400 820300030103810003010381000301038105030103810003010381000307030104070381 000301038100030103810003010381050301038100030103810003010381000301038100 030103810003010381050301038100030103810003070301040703810003010381000301 038100030103810503010381000301038100030103810003010381000301038100030103 810503010381000301038100030703010407038100030103810003010381000301038105 030103810003010381000301038100030103810003010381000301038105030103810003 010381000307030104070381000301038100030103810003010381050301038100030103 810003010381000301038100030103810003010381050301038100030103810003070301 040703810003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040803 810003010381000301038105030103810003010381000301038100030103810003010381 000301038105030103810003010381000301038100030603010408038100030103810003 010381050301038100030103810003010381000301038100030103810003010381050301 038100030103810003010381000306030104080381000301038100030103810503010381 000301038100030103810003010381000301038100030103810503010381000301038100 030103810003060301040803810003010381000301038105030103810003010381000301 038100030103810003010381000301038105030103810003010381000301038100030603 0104080381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 060382000300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008103008100030503010006038200 030001008103000100810305010581030001008103000100810300010081030001008103 000100810305010581030001008103000100810300810003050301000603820003000100 810300010081030501058103000100810300010081030001008103000100810300010081 030501058103000100810300010081030081000305030100060382000300010081030001 008103050105810300010081030001008103000100810300010081030001008103050105 810300010081030001008103008100030503010006038200030001008103000100810305 0105810300010081030001008103000000 010081030001008103000100810305010581030001008103000100820300030503010006 030100810300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008203000305030100060301008103 000100810300010081030501058103000100810300010081030001008103000100810300 010081030501058103000100810300010082030003050301000603010081030001008103 000100810305010581030001008103000100810300010081030001008103000100810305 010581030001008103000100820300030503010006030100810300010081030001008103 050105810300010081030001008103000100810300010081030001008103050105810300 010081030001008203000305030100060301008103000100810300010081030501058103 0001008103000100810300 820300030103810003010381000301038105030103810003010381000307030104070381 000301038100030103810003010381050301038100030103810003010381000301038100 030103810003010381050301038100030103810003070301040703810003010381000301 038100030103810503010381000301038100030103810003010381000301038100030103 810503010381000301038100030703010407038100030103810003010381000301038105 030103810003010381000301038100030103810003010381000301038105030103810003 010381000307030104070381000301038100030103810003010381050301038100030103 810003010381000301038100030103810003010381050301038100030103810003070301 040703810003010381000301038100030103810503010381000301038100030003 010381000301038100030103810503010381000301038100030103810003060301040803 810003010381000301038105030103810003010381000301038100030103810003010381 000301038105030103810003010381000301038100030603010408038100030103810003 010381050301038100030103810003010381000301038100030103810003010381050301 038100030103810003010381000306030104080381000301038100030103810503010381 000301038100030103810003010381000301038100030103810503010381000301038100 030103810003060301040803810003010381000301038105030103810003010381000301 038100030103810003010381000301038105030103810003010381000301038100030603 0104080381000301038100030103810503010381000301038100030103810003 820003000100810300010081030501058103000100810300010081030081000305030100 060382000300010081030001008103050105810300010081030001008103000100810300 010081030001008103050105810300010081030001008103008100030503010006038200 030001008103000100810305010581030001008103000100810300010081030001008103 000100810305010581030001008103000100810300810003050301000603820003000100 810300010081030501058103000100810300010081030001008103000100810300010081 030501058103000100810300010081030081000305030100060382000300010081030001 008103050105810300010081030001008103000100810300010081030001008103050105 810300010081030001008103008100030503010006038200030001008103000100810305 0105810300010081030001008103000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820102010101810201010104020201810201010181020183010305030103820503048204 050301038105038303010201010181020101010402020181020101018102010101810201 010181020101010402020181020101018102018301030503010382050304820405030103 810503830301020101018102010101040202018102010101810201010181020101018102 010101040202018102010101810201830103050301038205030482040503010381050383 030102010101810201010104020201810201010181020101018102010101810201010104 020201810201010181020183010305030103820503048204050301038105038303010201 010181020101010402020181020101018102010101810201010181020101010402020181 020101018102018301030503010382050304820405030103810503830301020101018102 0101010402020181020101018102010001 010181020101018102010101040202018102010101820201038203050301038105048304 030503010382050301820102010101810201010104020201810201010181020101018102 010101810201010104020201810201010182020103820305030103810504830403050301 038205030182010201010181020101010402020181020101018102010101810201010181 020101010402020181020101018202010382030503010381050483040305030103820503 018201020101018102010101040202018102010101810201010181020101018102010101 040202018102010101820201038203050301038105048304030503010382050301820102 010101810201010104020201810201010181020101018102010101810201010104020201 810201010182020103820305030103810504830403050301038205030182010201010181 02010101040202018102010101810201 820201020102810102010281010205028101020102810102830205030501058103050105 810305010581030583050201020102810102010281010205028101020102810102010281 010201028101020102810102050281010201028101028302050305010581030501058103 050105810305830502010201028101020102810102050281010201028101020102810102 010281010201028101020502810102010281010283020503050105810305010581030501 058103058305020102010281010201028101020502810102010281010201028101020102 810102010281010205028101020102810102830205030501058103050105810305010581 030583050201020102810102010281010205028101020102810102010281010201028101 020102810102050281010201028101028302050305010581030501058103050105810305 830502010201028101020102810102050281010201028101020002 010281010201028101020502810102010281010201028201020582050305010581030501 058103050105820305028202010201028101020502810102010281010201028101020102 810102010281010205028101020102810102010282010205820503050105810305010581 030501058203050282020102010281010205028101020102810102010281010201028101 020102810102050281010201028101020102820102058205030501058103050105810305 010582030502820201020102810102050281010201028101020102810102010281010201 028101020502810102010281010201028201020582050305010581030501058103050105 820305028202010201028101020502810102010281010201028101020102810102010281 010205028101020102810102010282010205820503050105810305010581030501058203 0502820201020102810102050281010201028101020102810102 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 010081010001008101000100810102010281010001008101000100810100010081030001 008103000100810300010081030001008101000100810100010081010201028101000100 810100010081010001008101000100810100010081010201028101000100810100010081 010001008103000100810300010081030001008103000100810100010081010001008101 020102810100010081010001008101000100810100010081010001008101020102810100 010081010001008101000100810300010081030001008103000100810300010081010001 008101000100810102010281010001008101000100810100010081010001008101000100 810102010281010001008101000100810100010081030001008103000100810300010081 030001008101000100810100010081010201028101000100810100010081010001008101 000100810100010081010201028101000100810100010081010001008103000100810300 010081030001008103000100810100010081010001008101020102810100010081010001 00810100 820100010101810001010181000101018102010101810001010181000183010300030103 820003048204000301038100038303010001010181000101018100010101810201010181 000101018100010101810001010181000101018100010101810201010181000101018100 018301030003010382000304820400030103810003830301000101018100010101810001 010181020101018100010101810001010181000101018100010101810001010181020101 018100010101810001830103000301038200030482040003010381000383030100010101 810001010181000101018102010101810001010181000101018100010101810001010181 000101018102010101810001010181000183010300030103820003048204000301038100 038303010001010181000101018100010101810201010181000101018100010101810001 010181000101018100010101810201010181000101018100018301030003010382000304 820400030103810003830301000101018100010101810001010181020101018100010101 8100010001 010181000101018100010101810201010181000101018100010101820001038203000301 038100048304030003010382000301820100010101810001010181020101018100010101 810001010181000101018100010101810001010181020101018100010101810001010182 000103820300030103810004830403000301038200030182010001010181000101018102 010101810001010181000101018100010101810001010181000101018102010101810001 010181000101018200010382030003010381000483040300030103820003018201000101 018100010101810201010181000101018100010101810001010181000101018100010101 810201010181000101018100010101820001038203000301038100048304030003010382 000301820100010101810001010181020101018100010101810001010181000101018100 010101810001010181020101018100010101810001010182000103820300030103810004 830403000301038200030182010001010181000101018102010101810001010181000101 01810001 820001000100810100010081010201028101000100810100010081010001008103000100 810300010081030001008103000100810100010081010001008101020102810100010081 010001008101000100810100010081010001008101020102810100010081010001008101 000100810300010081030001008103000100810300010081010001008101000100810102 010281010001008101000100810100010081010001008101000100810102010281010001 008101000100810100010081030001008103000100810300010081030001008101000100 810100010081010201028101000100810100010081010001008101000100810100010081 010201028101000100810100010081010001008103000100810300010081030001008103 000100810100010081010001008101020102810100010081010001008101000100810100 010081010001008101020102810100010081010001008101000100810300010081030001 008103000100810300010081010001008101000100810102010281010001008101000100 8101000000 % % Compression made this file 35.94% of the uncompressed size. % showpage % stop using temporary dictionary end % restore original state origstate restore %%Trailer scotch_6.0.9/doc/src/scotch/s_f_orf.fig0000644000302600021200000001722713303015264020206 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 600 600 3900 3300 6 2400 1800 2700 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2550 1950 150 150 2550 1950 2700 1950 4 0 0 10 0 0 16 0.0000 4 165 120 2500 2040 1\001 -6 6 3000 600 3300 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3150 750 150 150 3150 750 3300 750 4 0 0 10 0 0 16 0.0000 4 150 120 3100 840 8\001 -6 6 1800 600 2100 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1950 750 150 150 1950 750 2100 750 4 0 0 8 0 0 16 0.0000 4 150 120 1900 840 7\001 -6 6 1200 1800 1500 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1350 1950 150 150 1350 1950 1500 1950 4 0 0 10 0 0 16 0.0000 4 165 120 1300 2040 6\001 -6 6 3600 1800 3900 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3750 1950 150 150 3750 1950 3900 1950 4 0 0 10 0 0 16 0.0000 4 150 120 3700 2040 2\001 -6 6 600 3000 900 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 750 3150 150 150 750 3150 900 3150 4 0 0 10 0 0 16 0.0000 4 150 120 700 3240 5\001 -6 6 3000 3000 3300 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3150 3150 150 150 3150 3150 3300 3150 4 0 0 10 0 0 16 0.0000 4 150 120 3100 3240 3\001 -6 6 1800 3000 2100 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 1950 3150 150 150 1950 3150 2100 3150 4 0 0 10 0 0 16 0.0000 4 150 120 1900 3240 4\001 -6 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 3750 1950 3150 3150 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 1350 1950 1950 750 2550 1950 1350 1950 1950 3150 2550 1950 3150 750 1950 750 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 4 1950 3150 3150 3150 2550 1950 3750 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 3 1950 3150 750 3150 1350 1950 -6 6 4875 375 8850 3600 6 5100 600 8400 3300 6 6300 600 6600 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6450 750 150 150 6450 750 6600 750 4 0 0 10 0 0 16 0.0000 4 165 120 6400 840 1\001 -6 6 7500 600 7800 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7650 750 150 150 7650 750 7800 750 4 0 0 10 0 0 16 0.0000 4 150 120 7600 840 2\001 -6 6 8100 1800 8400 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8250 1950 150 150 8250 1950 8400 1950 4 0 0 10 0 0 16 0.0000 4 165 120 8200 2040 6\001 -6 6 5700 1800 6000 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5850 1950 150 150 5850 1950 6000 1950 4 0 0 10 0 0 16 0.0000 4 150 120 5800 2040 4\001 -6 6 7500 3000 7800 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7650 3150 150 150 7650 3150 7800 3150 4 0 0 10 0 0 16 0.0000 4 150 120 7600 3240 5\001 -6 6 5100 3000 5400 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 5250 3150 150 150 5250 3150 5400 3150 4 0 0 10 0 0 16 0.0000 4 150 120 5200 3240 3\001 -6 6 6900 1800 7200 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7050 1950 150 150 7050 1950 7200 1950 4 0 0 10 0 0 16 0.0000 4 150 120 7000 2040 8\001 -6 6 6300 3000 6600 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 6450 3150 150 150 6450 3150 6600 3150 4 0 0 8 0 0 16 0.0000 4 150 120 6400 3240 7\001 -6 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 2 8250 1950 7650 3150 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 4 6450 3150 7650 3150 7050 1950 8250 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 0 0 3 6450 3150 5250 3150 5850 1950 2 1 0 1 0 7 20 0 -1 0.000 0 0 7 0 0 8 5850 1950 6450 750 7050 1950 5850 1950 6450 3150 7050 1950 7650 750 6450 750 -6 1 3 0 1 0 7 20 0 -1 0.000 1 0.0000 5850 1950 382 382 5850 1950 6225 2025 1 3 0 1 0 7 20 0 -1 0.000 1 0.0000 5250 3150 375 375 5250 3150 5625 3150 3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 6750 1500 7650 1500 6750 3600 5850 3600 1.000 1.000 1.000 1.000 3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 6000 375 6000 1125 8100 1125 8100 375 1.000 1.000 1.000 1.000 3 1 0 1 0 7 20 0 -1 0.000 0 0 0 4 7950 1500 8850 1500 7950 3600 7050 3600 1.000 1.000 1.000 1.000 -6 6 1800 5700 2100 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 5700 2100 5700 2100 6000 1800 6000 1800 5700 4 0 0 10 0 0 16 0.0000 4 165 120 1900 5940 1\001 -6 6 2100 5700 2400 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 5700 2400 5700 2400 6000 2100 6000 2100 5700 4 0 0 10 0 0 16 0.0000 4 150 120 2200 5940 3\001 -6 6 2400 5700 2700 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 5700 2700 5700 2700 6000 2400 6000 2400 5700 4 0 0 15 0 0 16 0.0000 4 150 120 2500 5940 4\001 -6 6 2700 5700 3000 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 5700 3000 5700 3000 6000 2700 6000 2700 5700 4 0 0 10 0 0 16 0.0000 4 150 120 2800 5940 5\001 -6 6 3000 5700 3300 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 5700 3300 5700 3300 6000 3000 6000 3000 5700 4 0 0 10 0 0 16 0.0000 4 150 120 3100 5940 7\001 -6 6 3300 5700 3600 6000 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 5700 3600 5700 3600 6000 3300 6000 3300 5700 4 0 0 10 0 0 16 0.0000 4 150 120 3400 5940 9\001 -6 6 1800 3900 2100 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3900 2100 3900 2100 4200 1800 4200 1800 3900 4 0 0 10 0 0 16 0.0000 4 150 120 1900 4140 8\001 -6 6 2100 3900 2400 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 3900 2400 3900 2400 4200 2100 4200 2100 3900 4 0 0 10 0 0 16 0.0000 4 165 120 2200 4140 6\001 -6 6 2400 3900 2700 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 3900 2700 3900 2700 4200 2400 4200 2400 3900 4 0 0 10 0 0 16 0.0000 4 150 120 2500 4140 5\001 -6 6 2700 3900 3000 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 3900 3000 3900 3000 4200 2700 4200 2700 3900 4 0 0 10 0 0 16 0.0000 4 150 120 2800 4140 7\001 -6 6 3000 3900 3300 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 3900 3300 3900 3300 4200 3000 4200 3000 3900 4 0 0 10 0 0 16 0.0000 4 150 120 3100 4140 3\001 -6 6 3300 3900 3600 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 3900 3600 3900 3600 4200 3300 4200 3300 3900 4 0 0 15 0 0 16 0.0000 4 150 120 3400 4140 4\001 -6 6 3600 3900 3900 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 3900 3900 3900 3900 4200 3600 4200 3600 3900 4 0 0 10 0 0 16 0.0000 4 165 120 3700 4140 1\001 -6 6 3900 3900 4200 4200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 3900 4200 3900 4200 4200 3900 4200 3900 3900 4 0 0 10 0 0 16 0.0000 4 150 120 4000 4140 2\001 -6 6 1800 4500 2100 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 4500 2100 4500 2100 4800 1800 4800 1800 4500 4 0 0 10 0 0 16 0.0000 4 150 120 1900 4740 7\001 -6 6 2100 4500 2400 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 4500 2400 4500 2400 4800 2100 4800 2100 4500 4 0 0 10 0 0 16 0.0000 4 150 120 2200 4740 8\001 -6 6 2400 4500 2700 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 4500 2700 4500 2700 4800 2400 4800 2400 4500 4 0 0 10 0 0 16 0.0000 4 150 120 2500 4740 5\001 -6 6 2700 4500 3000 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 4500 3000 4500 3000 4800 2700 4800 2700 4500 4 0 0 10 0 0 16 0.0000 4 165 120 2800 4740 6\001 -6 6 3000 4500 3300 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 4500 3300 4500 3300 4800 3000 4800 3000 4500 4 0 0 10 0 0 16 0.0000 4 150 120 3100 4740 3\001 -6 6 3300 4500 3600 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 4500 3600 4500 3600 4800 3300 4800 3300 4500 4 0 0 10 0 0 16 0.0000 4 150 120 3400 4740 2\001 -6 6 3600 4500 3900 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 4500 3900 4500 3900 4800 3600 4800 3600 4500 4 0 0 15 0 0 16 0.0000 4 150 120 3700 4740 4\001 -6 6 3900 4500 4200 4800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 4500 4200 4500 4200 4800 3900 4800 3900 4500 4 0 0 10 0 0 16 0.0000 4 165 120 4000 4740 1\001 -6 6 1800 5100 2100 5400 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 5100 2100 5100 2100 5400 1800 5400 1800 5100 4 0 0 10 0 0 16 0.0000 4 150 120 1900 5340 5\001 -6 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 5700 3900 5700 3900 6000 3600 6000 3600 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 5700 4200 5700 4200 6000 3900 6000 3900 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 5700 4500 5700 4500 6000 4200 6000 4200 5700 4 0 0 20 0 12 14 0.0000 4 195 945 600 5925 rangtab\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 4125 permtab\001 4 0 0 20 0 12 14 0.0000 4 195 945 600 4725 peritab\001 4 0 0 20 0 12 14 0.0000 4 150 945 600 5325 cblknbr\001 scotch_6.0.9/doc/src/scotch/s_f_d.ps0000644000302600021200000001703613303015264017516 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev %%CreationDate: Wed Jul 19 17:06:41 1995 %%For: pelegrin@firmin (Francois PELLEGRINI) %%BoundingBox: 0 0 215 210 %%Pages: 0 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /l {lineto} bind def /m {moveto} bind def /s {stroke} bind def /n {newpath} bind def /gs {gsave} bind def /gr {grestore} bind def /clp {closepath} bind def /graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul setrgbcolor} bind def /col-1 {} def /col0 {0 0 0 setrgbcolor} bind def /col1 {0 0 1 setrgbcolor} bind def /col2 {0 1 0 setrgbcolor} bind def /col3 {0 1 1 setrgbcolor} bind def /col4 {1 0 0 setrgbcolor} bind def /col5 {1 0 1 setrgbcolor} bind def /col6 {1 1 0 setrgbcolor} bind def /col7 {1 1 1 setrgbcolor} bind def /DrawSplineSection { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /xa x1 x2 x1 sub 0.666667 mul add def /ya y1 y2 y1 sub 0.666667 mul add def /xb x3 x2 x3 sub 0.666667 mul add def /yb y3 y2 y3 sub 0.666667 mul add def x1 y1 lineto xa ya xb yb x3 y3 curveto } def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 0 setlinecap 0 setlinejoin -67.0 263.0 translate 0.900 -0.900 scale 2.000 setlinewidth % Polyline n 169 249 m 219 249 l gs col-1 s gr % Polyline n 99 219 m 159 279 l gs col-1 s gr % Polyline n 99 219 m 89 249 l gs col-1 s gr % Polyline n 89 249 m 159 279 l gs col-1 s gr % Polyline n 229 219 m 299 249 l gs col-1 s gr % Polyline n 299 249 m 289 279 l gs col-1 s gr % Polyline n 229 219 m 289 279 l gs col-1 s gr % Polyline n 99 219 m 229 219 l gs col-1 s gr % Polyline n 229 219 m 219 249 l gs col-1 s gr % Polyline n 169 249 m 99 219 l gs col-1 s gr % Polyline n 169 249 m 159 279 l gs col-1 s gr % Polyline n 219 249 m 289 279 l gs col-1 s gr % Polyline n 159 279 m 289 279 l gs col-1 s gr 0.500 setlinewidth n 229 189 m 229 189 l gs col-1 s gr % Polyline n 129 94 m 194 74 l 259 94 l gs col-1 s gr % Polyline n 94 134 m 129 114 l 164 134 l gs col-1 s gr % Polyline n 89 174 m 94 154 l 99 174 l gs col-1 s gr % Polyline n 159 174 m 164 154 l 169 174 l gs col-1 s gr % Polyline n 219 174 m 224 154 l 289 174 l gs col-1 s gr % Polyline n 229 174 m 294 154 l 299 174 l gs col-1 s gr % Polyline n 224 134 m 259 114 l 294 134 l gs col-1 s gr /Times-Roman findfont 16.00 scalefont setfont 189 69 m gs 1 -1 scale (1) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 89 149 m gs 1 -1 scale (7) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 124 109 m gs 1 -1 scale (3) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 159 149 m gs 1 -1 scale (6) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 144 189 m gs 1 -1 scale (12) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 169 189 m gs 1 -1 scale (13) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 214 189 m gs 1 -1 scale (9) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 229 189 m gs 1 -1 scale (11) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 284 189 m gs 1 -1 scale (8) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 299 189 m gs 1 -1 scale (10) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 289 149 m gs 1 -1 scale (5) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 219 149 m gs 1 -1 scale (4) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 254 109 m gs 1 -1 scale (2) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 99 189 m gs 1 -1 scale (14) col-1 show gr /Times-Roman findfont 16.00 scalefont setfont 74 189 m gs 1 -1 scale (15) col-1 show gr 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 219 249 m 219 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 229 219 m 229 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 299 249 m 299 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 169 249 m 169 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 159 274 m 159 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 99 219 m 99 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 89 249 m 89 194 l gs col-1 s gr [] 0 setdash 0 setlinecap 1 setlinecap [1 3.000000] 3.000000 setdash % Polyline n 289 279 m 289 194 l gs col-1 s gr [] 0 setdash 0 setlinecap % Closed spline n 151.500 281.500 m 151.500 281.500 149.000 274.000 154.000 259.000 DrawSplineSection 154.000 259.000 159.000 244.000 166.500 241.500 DrawSplineSection 166.500 241.500 174.000 239.000 176.500 246.500 DrawSplineSection 176.500 246.500 179.000 254.000 174.000 269.000 DrawSplineSection 174.000 269.000 169.000 284.000 161.500 286.500 DrawSplineSection 161.500 286.500 154.000 289.000 151.500 281.500 DrawSplineSection closepath gs col-1 s gr % Closed spline n 81.500 251.500 m 81.500 251.500 79.000 244.000 84.000 229.000 DrawSplineSection 84.000 229.000 89.000 214.000 96.500 211.500 DrawSplineSection 96.500 211.500 104.000 209.000 106.500 216.500 DrawSplineSection 106.500 216.500 109.000 224.000 104.000 239.000 DrawSplineSection 104.000 239.000 99.000 254.000 91.500 256.500 DrawSplineSection 91.500 256.500 84.000 259.000 81.500 251.500 DrawSplineSection closepath gs col-1 s gr % Closed spline n 269.000 219.000 m 269.000 219.000 304.000 234.000 309.000 244.000 DrawSplineSection 309.000 244.000 314.000 254.000 309.000 269.000 DrawSplineSection 309.000 269.000 304.000 284.000 294.000 289.000 DrawSplineSection 294.000 289.000 284.000 294.000 249.000 279.000 DrawSplineSection 249.000 279.000 214.000 264.000 209.000 254.000 DrawSplineSection 209.000 254.000 204.000 244.000 209.000 229.000 DrawSplineSection 209.000 229.000 214.000 214.000 224.000 209.000 DrawSplineSection 224.000 209.000 234.000 204.000 269.000 219.000 DrawSplineSection closepath gs col-1 s gr % Closed spline n 139.000 219.000 m 139.000 219.000 174.000 234.000 179.000 244.000 DrawSplineSection 179.000 244.000 184.000 254.000 179.000 269.000 DrawSplineSection 179.000 269.000 174.000 284.000 164.000 289.000 DrawSplineSection 164.000 289.000 154.000 294.000 119.000 279.000 DrawSplineSection 119.000 279.000 84.000 264.000 79.000 254.000 DrawSplineSection 79.000 254.000 74.000 244.000 79.000 229.000 DrawSplineSection 79.000 229.000 84.000 214.000 94.000 209.000 DrawSplineSection 94.000 209.000 104.000 204.000 139.000 219.000 DrawSplineSection closepath gs col-1 s gr % Closed spline n 226.500 211.500 m 226.500 211.500 219.000 214.000 221.500 221.500 DrawSplineSection 221.500 221.500 224.000 229.000 259.000 244.000 DrawSplineSection 259.000 244.000 294.000 259.000 301.500 256.500 DrawSplineSection 301.500 256.500 309.000 254.000 306.500 246.500 DrawSplineSection 306.500 246.500 304.000 239.000 269.000 224.000 DrawSplineSection 269.000 224.000 234.000 209.000 226.500 211.500 DrawSplineSection closepath gs col-1 s gr % Closed spline n 216.500 241.500 m 216.500 241.500 209.000 244.000 211.500 251.500 DrawSplineSection 211.500 251.500 214.000 259.000 249.000 274.000 DrawSplineSection 249.000 274.000 284.000 289.000 291.500 286.500 DrawSplineSection 291.500 286.500 299.000 284.000 299.000 279.000 DrawSplineSection 299.000 279.000 299.000 274.000 261.500 256.500 DrawSplineSection 261.500 256.500 224.000 239.000 216.500 241.500 DrawSplineSection closepath gs col-1 s gr $F2psEnd scotch_6.0.9/doc/src/scotch/s_f_ruy.fig0000644000302600021200000002303613303015264020232 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 975 525 6900 6000 6 2550 975 2850 3225 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 2700 1050 2700 3150 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2625 3150 2775 3150 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2625 1050 2775 1050 -6 6 4950 3375 5250 5625 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 5100 3450 5100 5550 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 5025 5550 5175 5550 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 5025 3450 5175 3450 -6 6 1650 1050 6150 5550 6 1800 1200 6000 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 1200 6000 1200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 1800 6000 1800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 3000 6000 3000 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 3600 6000 3600 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 4200 6000 4200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 2400 6000 2400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 4800 6000 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 5400 6000 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1800 1200 1800 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2400 1200 2400 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3000 1200 3000 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3600 1200 3600 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4200 1200 4200 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4800 1200 4800 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5400 1200 5400 5400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 6000 1200 6000 5400 -6 6 1650 1050 1950 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 5550 1950 5250 1650 5250 1650 5550 1950 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 4950 1950 4650 1650 4650 1650 4950 1950 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 4350 1950 4050 1650 4050 1650 4350 1950 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 3750 1950 3450 1650 3450 1650 3750 1950 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 3150 1950 2850 1650 2850 1650 3150 1950 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 2550 1950 2250 1650 2250 1650 2550 1950 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 1950 1950 1650 1650 1650 1650 1950 1950 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1950 1350 1950 1050 1650 1050 1650 1350 1950 1350 -6 6 2250 1050 2550 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 5550 2550 5250 2250 5250 2250 5550 2550 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 4950 2550 4650 2250 4650 2250 4950 2550 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 4350 2550 4050 2250 4050 2250 4350 2550 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 3750 2550 3450 2250 3450 2250 3750 2550 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 3150 2550 2850 2250 2850 2250 3150 2550 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 2550 2550 2250 2250 2250 2250 2550 2550 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 1950 2550 1650 2250 1650 2250 1950 2550 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2550 1350 2550 1050 2250 1050 2250 1350 2550 1350 -6 6 3450 1050 3750 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 5550 3750 5250 3450 5250 3450 5550 3750 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 4950 3750 4650 3450 4650 3450 4950 3750 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 4350 3750 4050 3450 4050 3450 4350 3750 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 3750 3750 3450 3450 3450 3450 3750 3750 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 3150 3750 2850 3450 2850 3450 3150 3750 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 2550 3750 2250 3450 2250 3450 2550 3750 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 1950 3750 1650 3450 1650 3450 1950 3750 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3750 1350 3750 1050 3450 1050 3450 1350 3750 1350 -6 6 4050 1050 4350 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 5550 4350 5250 4050 5250 4050 5550 4350 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 4950 4350 4650 4050 4650 4050 4950 4350 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 4350 4350 4050 4050 4050 4050 4350 4350 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 3750 4350 3450 4050 3450 4050 3750 4350 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 3150 4350 2850 4050 2850 4050 3150 4350 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 2550 4350 2250 4050 2250 4050 2550 4350 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 1950 4350 1650 4050 1650 4050 1950 4350 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4350 1350 4350 1050 4050 1050 4050 1350 4350 1350 -6 6 4650 1050 4950 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 5550 4950 5250 4650 5250 4650 5550 4950 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 4950 4950 4650 4650 4650 4650 4950 4950 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 4350 4950 4050 4650 4050 4650 4350 4950 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 3750 4950 3450 4650 3450 4650 3750 4950 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 3150 4950 2850 4650 2850 4650 3150 4950 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 2550 4950 2250 4650 2250 4650 2550 4950 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 1950 4950 1650 4650 1650 4650 1950 4950 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4950 1350 4950 1050 4650 1050 4650 1350 4950 1350 -6 6 5250 1050 5550 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 5550 5550 5250 5250 5250 5250 5550 5550 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 4950 5550 4650 5250 4650 5250 4950 5550 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 4350 5550 4050 5250 4050 5250 4350 5550 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 3750 5550 3450 5250 3450 5250 3750 5550 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 3150 5550 2850 5250 2850 5250 3150 5550 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 2550 5550 2250 5250 2250 5250 2550 5550 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 1950 5550 1650 5250 1650 5250 1950 5550 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5550 1350 5550 1050 5250 1050 5250 1350 5550 1350 -6 6 5850 1050 6150 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 5550 6150 5250 5850 5250 5850 5550 6150 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 4950 6150 4650 5850 4650 5850 4950 6150 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 4350 6150 4050 5850 4050 5850 4350 6150 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 3750 6150 3450 5850 3450 5850 3750 6150 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 3150 6150 2850 5850 2850 5850 3150 6150 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 2550 6150 2250 5850 2250 5850 2550 6150 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 1950 6150 1650 5850 1650 5850 1950 6150 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 6150 1350 6150 1050 5850 1050 5850 1350 6150 1350 -6 6 2850 1050 3150 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 5550 3150 5250 2850 5250 2850 5550 3150 5550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 4950 3150 4650 2850 4650 2850 4950 3150 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 4350 3150 4050 2850 4050 2850 4350 3150 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 3750 3150 3450 2850 3450 2850 3750 3150 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 3150 3150 2850 2850 2850 2850 3150 3150 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 2550 3150 2250 2850 2250 2850 2550 3150 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 1950 3150 1650 2850 1650 2850 1950 3150 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3150 1350 3150 1050 2850 1050 2850 1350 3150 1350 -6 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2100 3900 75 75 2100 3900 2175 3975 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5700 2100 75 75 5700 2100 5775 2175 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2100 5100 75 75 2100 5100 2175 5175 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4500 4500 75 75 4500 4500 4575 4575 2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 6225 3225 6225 975 5175 975 5175 3225 6225 3225 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 2700 3450 2700 5550 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 5100 3150 5100 1050 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3750 3300 1650 3300 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3900 1050 3900 5550 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 4050 3300 6150 3300 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 2550 4500 1650 4500 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3825 1050 3975 1050 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3750 3225 3750 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 1650 3225 1650 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 4050 3225 4050 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 6150 3225 6150 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 5025 3150 5175 3150 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 5025 1050 5175 1050 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2550 4425 2550 4575 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2625 3450 2775 3450 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2625 5550 2775 5550 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 2625 3375 1575 3375 1575 5625 2625 5625 2625 3375 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2625 3450 2775 3450 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3825 5550 3975 5550 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 1650 4425 1650 4575 2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5025 5625 5025 3375 3975 3375 3975 5625 5025 5625 3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 4 2100 3900 3300 3900 4800 2100 5700 2100 0.000 -1.000 -1.000 0.000 3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 2100 5100 3450 5025 4500 4500 0.000 -1.000 0.000 4 0 -1 0 0 0 20 0.0000 4 210 210 1200 4575 D\001 4 0 -1 0 0 0 20 0.0000 4 210 525 6375 3375 CL1\001 4 0 -1 0 0 0 20 0.0000 4 210 525 4875 900 CL2\001 4 0 -1 0 0 0 20 0.0000 4 210 525 3600 900 CL0\001 4 0 -1 0 0 0 20 0.0000 4 210 525 975 3375 CL1\001 4 0 -1 0 0 0 20 0.0000 4 210 525 2400 6000 CL2\001 -6 scotch_6.0.9/doc/src/scotch/s.tex0000644000302600021200000002406513542632041017067 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s.tex % % Sujet : Manuel de l'utilisateur % % de Scotch 6.0 % % Corps du document % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Formatage et pagination. % pdflatex -sPAPERSIZE=a4 s.tex % dvips -sPAPERSIZE=a4 s.dvi -o scotch_user6.0.ps % ps2pdf -sPAPERSIZE=a4 scotch_user6.0.ps scotch_user6.0.pdf \documentclass{article} \usepackage{a4} \usepackage{url} \usepackage[dvips]{graphicx} %\documentstyle[11pt,a4,fullpage,epsf]{article} %\textwidth 16.0cm %\oddsidemargin -0.5cm %\evensidemargin -0.5cm %\marginparwidth 0.0cm %\marginparsep 0.0cm %\marginparpush 0.0cm %\topmargin 0.5cm %\headheight 0.0cm %\headsep 0.0cm %\textheight 25.0cm %\footheight 0.0cm %\footskip 0.0cm \sloppy % Gestion des overfull hbox \renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 \setcounter{secnumdepth}{3} % Sous-sous-sections numerotees \setcounter{tocdepth}{3} % Sous-sous-sections dans la table %% Macros et commandes utiles. \makeatletter \@definecounter{enumv} % 8 niveaux d'itemizations \@definecounter{enumvi} \@definecounter{enumvii} \@definecounter{enumviii} \def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} \let\enditemize =\endlist \def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options \else \if@inlabel \indent \par \fi \ifhmode \unskip\unskip \par \fi \if@newlist \if@nobreak \@nbitem \else \addpenalty\@beginparpenalty \addvspace\@topsep \addvspace{-\parskip}\fi \else \addpenalty\@itempenalty \addvspace\itemsep \fi \global\@inlabeltrue \fi \everypar{\global\@minipagefalse\global\@newlistfalse \if@inlabel\global\@inlabelfalse \setbox\@tempboxa\hbox{#1}\relax \hskip \itemindent \hskip -\parindent \hskip -\labelwidth \hskip -\labelsep \ifdim \wd\@tempboxa > \labelwidth \box\@tempboxa\hfil\break \else \hbox to\labelwidth{\box\@tempboxa\hfil}\relax \hskip \labelsep \fi \penalty\z@ \fi \everypar{}}\global\@nobreakfalse \if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi \ignorespaces} \def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} \let\@Hxfloat\@xfloat \def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} \def\@HHfloat#1[H]{% \expandafter\let\csname end#1\endcsname\end@Hfloat \vskip\intextsep\def\@captype{#1}\parindent\z@ \ignorespaces} \def\end@Hfloat{\vskip \intextsep} \makeatother \def\progsyn{\item[{\makebox[1.5em][l]{\bf Synopsis}}]\ ~\linebreak[0]\\*[1em]} \def\progdes{\item[{\makebox[1.5em][l]{\bf Description}}]\ ~\linebreak[0]\\*[1em]} \def\progopt{\item[{\makebox[1.5em][l]{\bf Options}}]~\linebreak[0]} \def\progret{\item[{\makebox[1.5em][l]{\bf Return values}}]~\linebreak[0]} \newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees \newcommand{\en}{\end{displaymath}} \newcommand{\bq}{\begin{equation}} % Equations numerotees \newcommand{\eq}{\end{equation}} \newcommand{\lbo}{\linebreak[0]} \newcommand{\lbt}{\linebreak[2]} \newcommand{\noi}{{\noindent}} % Pas d'indentation \newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical \newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. \newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. \newcommand{\chaco}{\textsc{Chaco}} % "chaco" \newcommand{\scotch}{\textsc{Scotch}} % "scotch" \newcommand{\libscotch}{\textsc{libScotch}} % "libscotch" \newcommand{\ptscotch}{\textsc{PT-Scotch}} % "PT-Scotch" \newcommand{\metis}{\mbox{\textsc{Me$\!$T$\!$iS}}} % "MeTiS" \newcommand{\eqdef}{\stackrel{\scriptscriptstyle \rm def}{=}} % = as definition \newcommand{\isapprox}{\mathop{\approx}\limits} \newcommand{\lefta}{\longleftarrow} \newcommand{\rghta}{\longrightarrow} \newcommand{\botha}{\longleftrightarrow} \newcommand{\Lefta}{\Longleftarrow} \newcommand{\Rghta}{\Longrightarrow} \newcommand{\Botha}{\Longleftrightarrow} \newcommand{\HY}{{\rm H}} % H \newcommand{\KP}{{\rm K}} % K \newcommand{\MK}[1]{{\rm M}_{#1}} % Mk \newcommand{\MD}{\MK{2}} % M2 \newcommand{\PA}{{\rm P}} % P \newcommand{\UB}{{\rm UB}} % UB \newcommand{\SE}{{\rm SE}} % SE \newcommand{\FFT}{{\rm FFT}} % FFT \newcommand{\BF}{{\rm BF}} % BF \newcommand{\BFB}{{\overline{\rm BF}}} % BF bar \newcommand{\CCC}{{\rm CCC}} % CCC \newcommand{\CCCB}{{\overline{\rm CCC}}} % CCC bar \newcommand{\roo}[1]{{\rho_{\scriptscriptstyle {#1}}}} % Rho avec petit argument \newcommand{\too}[1]{{\tau_{\scriptscriptstyle {#1}}}} % Tau avec petit argument \newcommand{\xio}[1]{{\xi_{\scriptscriptstyle {#1}}}} % Xi avec petit argument \newcommand{\SB}[1]{{\cal C}'_S\left({#1}\right)} % Comportement en espace \newcommand{\TB}[1]{{\cal C}'_T\left({#1}\right)} % Comportement en temps \newcommand{\SC}[1]{{\cal C}_S\left({#1}\right)} % Complexite en espace \newcommand{\TC}[1]{{\cal C}_T\left({#1}\right)} % Complexite en temps \newcommand{\dmap}{\mbox{$\delta_{map}$}} \newcommand{\dexp}{\mbox{$\delta_{exp}$}} \newcommand{\mmap}{\mbox{$\mu_{map}$}} \newcommand{\mdil}{\mbox{$\mu_{dil}$}} \newcommand{\mcom}{\mbox{$\mu_{com}$}} \newcommand{\mexp}{\mbox{$\mu_{exp}$}} \newcommand{\NNZ}{\mbox{NNZ}} \newcommand{\OPC}{\mbox{OPC}} \newcommand{\hnbr}{\mbox{$h_{\rm nbr}$}} \newcommand{\hmin}{\mbox{$h_{\rm min}$}} \newcommand{\hmax}{\mbox{$h_{\rm max}$}} \newcommand{\havg}{\mbox{$h_{\rm avg}$}} \newcommand{\hdlt}{\mbox{$h_{\rm dlt}$}} %% Version du document. \newcommand{\scotchver}{6.0} \newcommand{\scotchversub}{6.0.9} \newcommand{\scotchcitepuser}{\protect\cite{pell08c}} \newcommand{\scotchcitesuser}{\protect\cite{pell08b}} %% Page de garde. \begin{document} \date{\today} %\date{Revision 0.4 $\beta$\\\today} \title{\includegraphics{s_f_logo.ps}\\[1em] {\LARGE\bf \scotch\ and \libscotch\ \textsc{\scotchver} User's Guide}\\[1em]% {\normalsize (version \scotchversub)} } \author{Fran\c cois Pellegrini\\ Universit\'e de Bordeaux \& LaBRI, UMR CNRS 5800\\ TadAAM team, INRIA Bordeaux Sud-Ouest\\ 351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ {\tt francois.pellegrini@labri.fr}} \maketitle \begin{abstract} This document describes the capabilities and operations of \scotch\ and \libscotch, a software package and a software library devoted to static mapping, edge- and vertex-based graph partitioning, and sparse matrix block ordering of graphs and meshes/hypergraphs. It gives brief descriptions of the algorithms, details the input/output formats, instructions for use, installation procedures, and provides a number of examples. \scotch\ is distributed as free/libre software, and has been designed such that new partitioning or ordering methods can be added in a straightforward manner. It can therefore be used as a testbed for the easy and quick coding and testing of such new methods, and may also be redistributed, as a library, along with third-party software that makes use of it, either in its original or in updated forms. \end{abstract} \clearpage %% Table des matieres. \tableofcontents %% Corps du document. \input{s_i.tex} % Introduction \input{s_c.tex} % Changes since previous versions \input{s_f.tex} % Formats de fichiers \input{s_p.tex} % Programmes \input{s_l.tex} % Bibliotheque \input{s_d.tex} % Distribution \input{s_e.tex} % Relevant examples \input{s_n.tex} % Addition of a new method %% Remerciements. \section*{Credits} I wish to thank all of the following people: \begin{itemize} \item Patrick Amestoy collaborated to the design of the Halo Approximate Minimum Degree algorithm~\cite{peroam99} that had been embedded into \scotch\ \textsc{3.3}, and provided versions of his Approximate Minimum Degree algorithm, available since version \textsc{3.2}, and of his Halo Approximate Minimum Fill algorithm, available since version \textsc{3.4}. He designed the mesh versions of the approximate minimum degree and approximate minimum fill algorithms, which are available since version \textsc{4.0}; \item S\'ebastien Fourestier coded the mapping with fixed vertices, remapping, and remapping with fixed vertices sequential routines that are available since version \textsc{6.0}; \item Jun-Ho Her coded the graph partitioning with overlap routines that were introduced in the unpublished \textsc{5.2} release, and publicly released in version \textsc{6.0}; \item Amaury Jacques improved the development environment and contributed to the consistency checking and non-regression testing routines; \item C\'édric Lachat contributed to the robustness of the software, in relation with his development of the \textsc{PaMPA} software; \item Alex Pothen kindly provided a version of his Multiple Minimum Degree algorithm, which was embedded into \scotch\ from version \textsc{3.2} to version \textsc{3.4}; \item Luca Scarano, visiting Erasmus student from the \textit{Universit\'a degli Studi di Bologna}, coded the multilevel graph algorithm in \scotch\ \textsc{3.1}; \item Yves Secretan contributed to the \textsc{MinGW32} port; \item David Sherman proofread version \textsc{3.2} of this manual. \end{itemize} %% Bibliographie. \bibliographystyle{plain} \bibliography{s} \end{document} scotch_6.0.9/doc/src/scotch/s_p.tex0000644000302600021200000014365313465315041017415 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_p.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Programmes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Programs} \label{sec-prog} The programs of the \scotch\ project belong to five distinct classes. \begin{itemize} \item Graph handling programs, the names of which begin in ``\texttt{g}'', that serve to build and test source graphs. \item Mesh handling programs, the names of which begin in ``\texttt{m}'', that serve to build and test source meshes. \item Target architecture handling programs, the names of which begin in ``\texttt{a}'', that allow the user to build and test decomposition-defined target files, and especially to turn a source graph file into a target file. \item The mapping and ordering programs themselves. \item Output handling programs, which are the mapping performance analyzer, the graph factorization program, and the graph, matrix, and mapping visualization program. \end{itemize} The general architecture of the \scotch\ project is displayed in Figure~\ref{fig-synp}. \begin{figure}[p] \centering{\hspace*{-5em}\includegraphics[scale=0.56]{s_f_synp.eps}} \caption{General architecture of the \scotch\ project. All of the features offered by the stand-alone programs are also available in the \libscotch\ library.} \label{fig-synp} \end{figure} \subsection{Invocation} The programs comprising the \scotch\ project have been designed to run in command-line mode without any interactive prompting, so that they can be called easily from other programs by means of ``\mbox{\texttt{system$\,$()}}'' or ``\mbox{\texttt{ popen$\,$()}}'' system calls, or be piped together on a single shell command line. In order to facilitate this, whenever a stream name is asked for (either on input or output), the user may put a single ``\texttt{-}'' to indicate standard input or output. Moreover, programs read their input in the same order as stream names are given in the command line. It allows them to read all their data from a single stream (usually the standard input), provided that these data are ordered properly. A brief on-line help is provided with all the programs. To get this help, use the ``\texttt{-h}'' option after the program name. The case of option letters is not significant, except when both the lower and upper cases of a letter have different meanings. When passing parameters to the programs, only the order of file names is significant; options can be put anywhere in the command line, in any order. Examples of use of the different programs of the \scotch\ project are provided in section~\ref{sec-examples}. Error messages are standardized, but may not be fully explanatory. However, most of the errors you may run into should be related to file formats, and located in ``\mbox{\texttt{ \ldots Load}}'' routines. In this case, compare your data formats with the definitions given in section~\ref{sec-file}, and use the \texttt{gtst} and \texttt{mtst} programs to check the consistency of source graphs and meshes. \subsection{Using compressed files} \label{sec-prog-compressed} Starting from version {\sc 5.0.6}, \scotch\ allows users to provide and retrieve data in compressed form. Since this feature requires that the compression and decompression tasks run in the same time as data is read or written, it can only be done on systems which support multi-threading (Posix threads) or multi-processing (by means of \texttt{fork} system calls). To determine if a stream has to be handled in compressed form, \scotch\ checks its extension. If it is ``\texttt{.gz}'' (\texttt{gzip} format), ``\texttt{.bz2}'' (\texttt{bzip2} format) or ``\texttt{.lzma}'' (\texttt{lzma} format), the stream is assumed to be compressed according to the corresponding format. A filter task will then be used to process it accordingly if the format is implemented in \scotch\ and enabled on your system. To date, data can be read and written in \texttt{bzip2} and \texttt{gzip} formats, and can also be read in the \texttt{lzma} format. Since the compression ratio of \texttt{lzma} on \scotch\ graphs is $30\%$ better than the one of \texttt{gzip} and \texttt{bzip2} (which are almost equivalent in this case), the \texttt{lzma} format is a very good choice for handling very large graphs. To see how to enable compressed data handling in \scotch, please refer to Section~\ref{sec-install}. \\ When the compressed format allows it, several files can be provided on the same stream, and be uncompressed on the fly. For instance, the command ``\texttt{cat brol.grf.gz brol.xyz.gz | gout -.gz -.gz -Mn - brol.iv}'' concatenates the topology and geometry data of some graph \texttt{brol} and feed them as a single compressed stream to the standard input of program \texttt{gout}, hence the ''\texttt{-.gz}'' to indicate a compressed standard stream. \subsection{Description} \subsubsection{\texttt{acpl}} \begin{itemize} \progsyn \texttt{acpl} [{\it input\_target\_file} [{\it output\_target\_file}]] {\it options} \progdes The program \texttt{acpl} is the decomposition-defined architecture file compiler. It processes architecture files of type ``\texttt{deco~0}'' built by hand or by the \texttt{amk\_}* programs, to create a ``\texttt{deco~1}'' compiled architecture file of about four times the size of the original one; see section~\ref{sec-file-target-deco}, page~\pageref{sec-file-target-deco}, for a detailed description of decomposition-defined target architecture file formats. \\ The mapper can read both original and compiled architecture file formats. However, compiled architecture files are read much more efficiently, as they are directly loaded into memory without further processing. Since the compilation time of a target architecture graph evolves as the square of its number of vertices, precompiling with \texttt{acpl} can save some time when many mappings are to be performed onto the same large target architecture. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{amk\_}*} \relax \begin{itemize} \progsyn \texttt{amk\_ccc} {\it dim} [{\it output\_target\_file}] {\it options}\\ ~\\ \texttt{amk\_fft2} {\it dim} [{\it output\_target\_file}] {\it options}\\ ~\\ \texttt{amk\_hy} {\it dim} [{\it output\_target\_file}] {\it options}\\ ~\\ \texttt{amk\_m2} {\it dimX} [{\it dimY} [{\it output\_target\_file}]] {\it options}\\ ~\\ \texttt{amk\_p2} {\it weight0} [{\it weight1} [{\it output\_target\_file}]] {\it options}\\ \progdes The \texttt{amk\_}* programs make target graphs. Each of them is devoted to a specific topology, for which it builds target graphs of any dimension. \\ These programs are an alternate way between algorithmically-coded built-in target architectures and decompositions computed by mapping with \texttt{amk\_grf}. Like built-in target architectures, their decompositions are algorithmically computed, and like \texttt{amk\_grf}, their output is a decomposition-defined target architecture file. These programs allow the definition and testing of new algorithmically-coded target architectures without coding them in the core of the mapper. \\ \noi Program \texttt{amk\_ccc} outputs the target architecture file of a Cube-Connected-Cycles graph of dimension {\it dim}. Vertex $(l,m)$ of $\CCC(dim)$, with $0 \leq l < dim$ and $0 \leq m < 2^{dim}$, is linked to vertices $((l-1) \bmod dim, m)$, $((l+1) \bmod dim,m)$, and $(l, m \oplus 2^l)$, and is labeled $l\times 2^{dim} + m$. $\oplus$ denotes the bitwise exclusive-or binary operator, and $a \bmod b$ the integer remainder of the euclidian division of $a$ by $b$. \\ \noi Program \texttt{amk\_fft2} outputs the target architecture file of a binary Fast-Fourier-Transform graph of dimension {\it dim}. Vertex $(l,m)$ of $\FFT(dim)$, with $0 \leq l \leq dim$ and $0 \leq m < 2^{dim}$, is linked to vertices $(l-1, m)$, $(l-1, m \bmod 2^{l-1})$, $(l+1, m)$, and $(l+1, m \oplus 2^l)$, if they exist, and is labeled $l\times 2^{dim} + m$. \\ \noi Program \texttt{amk\_hy} outputs the target architecture file of a hypercube graph of dimension {\it dim}. Vertices are labeled according to the decimal value of their binary representation. The decomposition-defined target architectures computed by \texttt{amk\_hy} do not exactly give the same results as the built-in hypercube targets because distances are not computed in the same manner, although the two recursive bipartitionings are identical. To achieve best performance and save space, use the built-in architecture. \\ \noi Program \texttt{amk\_p2} outputs the target architecture file of a weighted path graph with two vertices, the weights of which are given as parameters. \\ This simple target topology is used to bipartition a source graph into two weighted parts with as few cut edges as possible. In particular, it is used to compute independent partitions of the processors of a multi-user parallel machine. As a matter of fact, if the yet unallocated part of the machine is represented by a source graph with $n$ vertices, and $n'$ processors are requested by a user in order to run a job (with $n' \leq n$), mapping the source graph onto the weighted path graph with two vertices of weights $n'$ and $n-n'$ leads to a partition of the machine in which the allocated $n'$ processors should be as densely connected as possible (see Figure~\ref{fig-biparch}). \begin{figure}[hbt] \hfill \parbox[t]{5.8cm}{ \hfill \includegraphics[scale=0.25]{s_f_do1.ps} \hfill\ \\ {\bf a.} Construction of a partition with $13$ vertices (in black) on a $8\times 8$ bidimensional mesh architecture. }\ \hfill\ \parbox[t]{5.8cm}{ \hfill \includegraphics[scale=0.25]{s_f_do2.ps} \hfill\ \\ {\bf b.} Construction of a partition with $17$ vertices (in black) on the remaining architecture. }\hfill\ \caption% {Construction of partitions on a bidimensional $8\times 8$ mesh architecture by weighted bipartitioning.} \label{fig-biparch} \end{figure} \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-m}{\it method}] Select the bipartitioning method (for \texttt{amk\_m2} only). \begin{itemize} \iteme[\texttt{n}] Nested dissection. \iteme[\texttt{o}] Dimension-per-dimension one-way dissection. This is less efficient than nested dissection, and this feature exists only for benchmarking purposes. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \end{itemize} \subsubsection{\texttt{amk\_grf}} \label{sec-prog-amkgrf} \begin{itemize} \progsyn \texttt{amk\_grf} [{\it input\_graph\_file} [{\it output\_target\_file}]] {\it options} \progdes The program \texttt{amk\_grf} turns a source graph file into a decomposition-defined target architecture file. The \texttt{-2} option creates a ``\texttt{deco~2}'' decomposition rather than a ``\texttt{deco~0}'' one. See Section~\ref{sec-file-target-deco}, page~\pageref{sec-file-target-deco} for more information on the different types of decomposition-defined target architectures. The \texttt{-l} option restricts the target architecture to the vertices indicated in the given vertex list file. It is therefore possible to build a target architecture made of several disconnected parts of a bigger architecture. Note that this is not equivalent to turning a disconnected source graph into a target architecture, since doing so would lead to an architecture made of several independent pieces at infinite distance one from another. Considering the selected vertices within their original architecture makes it possible to compute the distance between vertices belonging to distinct connected components, and therefore to evaluate the cost of the mapping of two neighbor processes onto disjoint areas of the architecture. \\ The restriction feature is very useful in the context of multi-user parallel machines. On these machines, when users request processors in order to run their jobs, the partitions allocated by the operating system may not be regular nor connected, because of existing partitions already attributed to other people. By feeding \texttt{amk\_grf} with the source graph representing the whole parallel machine, and the vertex list containing the labels of the processors allocated by the operating system, it is possible to build a target architecture corresponding to this partition, and therefore to map processes on it, automatically, regardless of the partition shape. The \texttt{-b} option selects the recursive bipartitioning strategy used to build the ``\texttt{deco~0}'' decomposition of the source graph. For regular, unweighted, topologies, the \texttt{'-b(g|h)fx'} recursive bipartitioning strategy should work best. For irregular or weighted graphs, use the default strategy, which is more flexible. See also the manual page of function \texttt{SCOTCH\_\lbt arch\lbo Build0}, page~\pageref{sec-lib-arch-build}, for further information. \progopt \begin{itemize} \iteme[\texttt{-b}{\it strategy}] Use recursive bipartitioning strategy {\it strategy\/} to build the decomposition of the architecture graph. The format of bipartitioning strategies is defined within section~\ref{sec-lib-format-map}, at page~\pageref{sec-lib-format-bipart}. \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-l}{\it input\_vertex\_file}] Load vertex list from {\it input\_vertex\_file}. As for all other file names, ``\texttt{-}'' may be used to indicate standard input. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{atst}} \begin{itemize} \progsyn \texttt{atst} [{\it input\_target\_file} [{\it output\_data\_file}]] {\it options} \progdes The program \texttt{atst} is the architecture tester. It gives some statistics on decomposition-defined target architectures, and in particular the minimum, maximum, and average communication costs (that is, weighted distance) between all pairs of processors. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gcv}} \label{sec-prog-gcv} \begin{itemize} \progsyn \texttt{gcv} [{\it input\_graph\_file} [{\it output\_graph\_file} [{\it output\_geometry\_file}]]] {\it options} \progdes The program \texttt{gcv} is the source graph converter. It takes on input a graph file of the format specified with the \texttt{-i} option, and outputs its equivalent in the format specified with the \texttt{-o} option, along with its associated geometry file whenever geometry data is available. At the time being, it accepts four input formats: the Matrix Market format~\cite{bopore96}, the Harwell-Boeing collection format~\cite{dugrle92}, the \textsc{Chaco}/\metis\ graph format~\cite{hele93c}, and the \scotch\ format. Three output format are available: the Matrix Market format, the {\sc Chaco}/\metis\ graph format and the \scotch\ source graph and geometry data format. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-i}{\it format}] Specify the type of input graph. The available input formats are listed below. \begin{itemize} \iteme[{\texttt{b}[{\it number}]}] Harwell-Boeing graph collection format. Only symmetric assembled matrices are currently supported. Since files in this format can contain several graphs one after another, the optional integer {\it number}, starting from $0$, indicates which graph of the file is considered for conversion. \iteme[\texttt{c}] {\sc Chaco v1.0}/\metis\ format. \iteme[\texttt{m}] The Matrix Market format. \iteme[\texttt{s}] \scotch\ source graph format. %% \iteme[\texttt{u}] %% Universal Data Set 2412 format. On output, this node/element structure is %% turned into a communication graph such that vertices represent elements and %% there exists an edge between two vertices if the two end elements share a node %% in the original UDS graph. %% Since UDS format files are tag files, they do not have a well defined end. %% Therefore, one cannot append data of different nature to the input stream %% used to read this graph, since it will make the graph loading routine fail. \end{itemize} \iteme[\texttt{-o}{\it format}] Specify the output graph format. The available output formats are listed below. \begin{itemize} \iteme[\texttt{c}] {\sc Chaco v1.0}/\metis\ format. \iteme[\texttt{m}] The Matrix Market format. \iteme[\texttt{s}] \scotch\ source graph format. \end{itemize} \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} Default option set is ``\texttt{-Ib0 -Os}''. \end{itemize} \subsubsection{\texttt{gmap} / \texttt{gpart}} \label{sec-prog-gmap} \begin{itemize} \progsyn \texttt{gmap} [{\it input\_graph\_file} [{\it input\_target\_file} [{\it output\_mapping\_file} [{\it output\_log\_file}]]]] {\it options}\\ ~\\ \texttt{gpart} {\it number\_\lbt of\_\lbt parts} [{\it input\_graph\_file} [{\it output\_mapping\_file} [{\it output\_log\_file}]]] {\it options} \progdes The program \texttt{gmap} is the graph mapper. It uses a partitioning strategy to map a source graph onto a target graph, so that the weight of source graph vertices allocated to target vertices is balanced, and the communication cost function $f_C$ is minimized. The program \texttt{gpart} is the graph partitioner. It uses a partitioning strategy to split a source graph into the prescribed number of parts, using vertex or edge separators, depending whether the \texttt{-o} option is set or not. The implemented mapping methods mainly derive from graph theory. In particular, graph geometry is never used, even if it is available; only topological properties are taken into account. Mapping methods are used to define mapping strategies by means of selection, combination, grouping, and condition operators. \\ Mapping methods implemented in version~{\sc 6.0} comprise direct k-way methods, including a k-way multilevel framework and k-way local refinement methods, as well as the Dual Recursive Bipartitioning algorithm, which uses graph bipartitioning methods. Available bipartitioning methods include a multilevel framework that uses other bipartitioning methods to compute the initial and refined bipartitions: an improved implementation of the Fiduccia--Mattheyses heuristic designed to handle weighted graphs, a diffusion-based algorithm, a greedy method derived from the Gibbs, Poole, and Stockmeyer algorithm, a greedy graph growing heuristic, a greedy ``exactifying'' refinement algorithm designed to balance vertex loads as much as possible, etc. \texttt{gpart} is a simplified interface to \texttt{gmap}, which performs graph partitioning instead of static mapping. Consequently, the desired number of parts has to be provided, in lieu of the target architecture. The \texttt{-b} and \texttt{-c} options allow the user to set preferences on the behavior of the mapping strategy which is used by default. The \texttt{-m} option allows the user to define a custom mapping strategy. Both programs can be used to perform clustering, by means of the \texttt{-q} option. \texttt{gpart} will perform topology-independent clustering, while \texttt{gmap} may compute locality-preserving clusters when mapping onto variable-sized, non-complete, architectures (see Section~\ref{sec-file-target-variable}). If mapping statistics are wanted rather than the mapping output itself, mapping output can be set to \texttt{/dev/null}, with option \texttt{-vmt} to get mapping statistics and timings. \progopt\\* Since the program is devoted to experimental studies, it has many optional parameters, used to test various execution modes. Values set by default will give best results in most cases. \begin{itemize} \iteme[\texttt{-b}{\it rat}] Set the maximum load imbalance ratio to \textit{rat}, which should be a value comprised between $0$ and $1$. This option can be used in conjunction with option \texttt{-c}, but is incompatible with option \texttt{-m}. \iteme[\texttt{-c}{\it flags}] Tune the default mapping strategy according to the given preference flags. Some of these flags are antagonistic, while others can be combined. See Section~\ref{sec-lib-format-strat-default} for more information. The currently available flags are the following. \begin{itemize} \iteme[\texttt{b}] Enforce load balance as much as possible. \iteme[\texttt{q}] Privilege quality over speed. \iteme[\texttt{r}] Only use recursive bipartitioning methods. \iteme[\texttt{s}] Privilege speed over quality. \iteme[\texttt{t}] Use only safe methods in the strategy. \end{itemize} This option can be used in conjunction with option \texttt{-b}, but is incompatible with option \texttt{-m}. The resulting strategy string can be displayed by means of the \texttt{-vs} option. \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-m}{\it strat\/}] Apply mapping strategy {\it strat}. In the case of static mapping or of edge-based graph partitioning, the format of mapping strategies should comply with the format defined in Section~\ref{sec-lib-format-map}. If the \texttt{-o} option is used (see below), strategies must be vertex partitioning strategies, which are described in Section~\ref{sec-lib-format-part-ovl}. This option is incompatible with options \texttt{-b} and \texttt{-c}. \iteme[\texttt{-o}] Compute vertex-based partitions rather than static mappings or edge-based partitions. This option is only valid for \texttt{gpart}, or when \texttt{gmap} is called with a target architecture which is an unweighted complete graph. \iteme[\texttt{-q}] (for \texttt{gpart}) \iteme[\texttt{-q}{\it pwght}] (for \texttt{gmap}) Perform clustering instead of partitioning or mapping. Clustering is achieved by means of a specific strategy string that performs recursive bipartitioning until the size of the parts is smaller than some threshold value. For \texttt{gpart}, this value replaces the desired number of parts as the first argument passed to the program. For \texttt{gmap}, the threshold must be given just after the \texttt{-q} option. \iteme[\texttt{-s}{\it obj}] Mask source edge and vertex weights. This option allows the user to ``unweight'' weighted source graphs by removing weights from edges and vertices at loading time. {\it obj\/} may contain several of the following switches. \begin{itemize} \iteme[\texttt{e}] Remove edge weights, if any. \iteme[\texttt{v}] Remove vertex weights, if any. \end{itemize} \iteme[\texttt{-V}] Print the program version and copyright. \iteme[\texttt{-v}{\it verb}] Set verbose mode to {\it verb}, which may contain several of the following switches. For a detailed description of the data displayed, please refer to the manual page of \texttt{gmtst} below. \begin{itemize} \iteme[\texttt{m}] Mapping or partitioning information, depending whether the \texttt{-o} option has been set or not. \iteme[\texttt{s}] Strategy information. This parameter displays the mapping strategy which will be used by \texttt{gmap} or \texttt{gpart}. \iteme[\texttt{t}] Timing information. \end{itemize} \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gmk\_}*} \begin{itemize} \progsyn \texttt{gmk\_hy} {\it dim} [{\it output\_graph\_file}] {\it options}\\ ~\\ \texttt{gmk\_m2} {\it dimX} [{\it dimY} [{\it output\_graph\_file}]] {\it options}\\ ~\\ \texttt{gmk\_m3} {\it dimX} [{\it dimY} [{\it dimZ} [{\it output\_graph\_file}]]] {\it options}\\ ~\\ \texttt{gmk\_ub2} {\it dim} [{\it output\_graph\_file}] {\it options} \progdes The \texttt{gmk\_}* programs make source graphs. Each of them is devoted to a specific topology, for which it builds target graphs of any dimension. \\ The \texttt{gmk\_}* programs are mainly used in conjunction with \texttt{amk\_grf}. Most \texttt{gmk\_}* programs build source graphs describing parallel machines, which are used by \texttt{amk\_grf} to generate corresponding target sub-architectures, by means of its \texttt{-l} option. Such a procedure is shown in section~\ref{sec-examples}, which builds a target architecture from five vertices of a binary de~Bruijn graph of dimension~$3$. \\ \noi Program \texttt{gmk\_hy} outputs the source file of a hypercube graph of dimension {\it dim}. Vertices are labeled according to the decimal value of their binary representation. \\ \noi Program \texttt{gmk\_m2} outputs the source file of a bidimensional mesh with {\it dimX\/} columns and {\it dimY\/} rows. If the \texttt{-t} option is set, tori are built instead of meshes. The vertex of coordinates $(\mbox{\it posX},\mbox{\it posY\/})$ is labeled $\mbox{\it posY} \times \mbox{\it dimX} + \mbox{\it posX}$. \\ \noi Program \texttt{gmk\_m3} outputs the source file of a tridimensional mesh with {\it dimZ} layers of {\it dimY\/} rows by {\it dimX\/} columns. If the \texttt{-t} option is set, tori are built instead of meshes. The vertex of coordinates $(\mbox{\it posX},\mbox{\it posY\/})$ is labeled $(\mbox{\it posZ} \times \mbox{\it dimY} + \mbox{\it posY}) \times \mbox{\it dimX} + \mbox{\it posX}$. \\ \noi Program \texttt{gmk\_ub2} outputs the source file of a binary unoriented de~Bruijn graph of dimension {\it dim}. Vertices are labeled according to the decimal value of their binary representation. \progopt \begin{itemize} \iteme[\texttt{-g}{\it output\_geometry\_file}] Output graph geometry to file {\it output\_geometry\_file} (for \texttt{gmk\_m2} only). As for all other file names, ``\texttt{-}'' may be used to indicate standard output. \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-t}] Build a torus rather than a mesh (for \texttt{gmk\_m2} only). \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gmk\_msh}} \label{sec-prog-gmkmsh} \begin{itemize} \progsyn \texttt{gmk\_msh} [{\it input\_mesh\_file} [{\it output\_graph\_file}]] {\it options}\\ \progdes The \texttt{gmk\_msh} program builds a graph file from a mesh file. All of the nodes of the mesh are turned into graph vertices, and edges are created between all pairs of vertices that share an element (that is, elements are turned into cliques). \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gmtst}} \begin{itemize} \progsyn \texttt{gmtst} [{\it input\_graph\_file} [{\it input\_\lbt target\_\lbt file} [{\it input\_\lbt mapping\_\lbt file} [{\it output\_\lbt data\_\lbt file}]]]] {\it options} \progdes The program \texttt{gmtst} is the graph mapping tester. It outputs some statistics on the given mapping, regarding load balance and inter-processor communication. \\ The two first statistics lines deal with process mapping statistics, while the following ones deal with communication statistics. The first mapping line gives the number of processors used by the mapping, followed by the number of processors available in the architecture, and the ratio of these two numbers, written between parentheses. The second mapping line gives the minimum, maximum, and average loads of the processors, followed by the variance of the load distribution, and an imbalance ratio equal to the maximum load over the average load. The first communication line gives the minimum and maximum number of neighbors over all blocks of the mapping, followed by the sum of the number of neighbors over all blocks of the mapping, that is the total number of messages that have to be sent to exchange data between all neighboring blocks. The second communication line gives the average dilation of the edges, followed by the sum of all edge dilations. The third communication line gives the average expansion of the edges, followed by the value of function $f_C$. The fourth communication line gives the average cut of the edges, followed by the number of cut edges. The fifth communication line shows the ratio of the average expansion over the average dilation; it is smaller than $1$ when the mapper succeeds in putting heavily intercommunicating processes closer to each other than it does for lightly communicating processes; it is equal to $1$ if all edges have the same weight. The remaining lines form a distance histogram, which shows the amount of communication load that involves processors located at increasing distances. \texttt{gmtst} allows the testing of cross-architecture mappings. By inputing it a target architecture different from the one that has been used to compute the mapping, but with compatible vertex labels, one can see what the mapping would yield on this new target architecture. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gord}} \begin{itemize} \progsyn \texttt{gord} [{\it input\_graph\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} \progdes The \texttt{gord} program is the block sparse matrix graph orderer. It uses an ordering strategy to compute block orderings of sparse matrices represented as source graphs, whose vertex weights indicate the number of DOFs per node (if this number is non homogeneous) and whose edges are unweighted, in order to minimize fill-in and operation count. Since its main purpose is to provide orderings that exhibit high concurrency for parallel block factorization, it comprises a nested dissection method~\cite{geli81}, but classical~\cite{liu-85} and state-of-the-art~\cite{amdadu96,peroam99} minimum degree algorithms are implemented as well. Ordering methods are used to define ordering strategies by means of selection, grouping, and condition operators. For the nested dissection method, vertex separation methods comprise algorithms that directly compute vertex separators, as well as methods that build vertex separators from edge separators, \ie graph bipartitions (all of the graph bipartitioning methods available in the static mapper \texttt{gmap} can be used in this latter case). The \texttt{-o} option allows the user to define the ordering strategy. The \texttt{-c} option allows the user to set preferences on the behavior of the ordering strategy which is used by default. \\ When the graphs to order are very large, the same results can be obtained by using the \texttt{dgord} parallel program of the \ptscotch\ distribution, which can read centralized graph files too. \progopt\\* Since the program is devoted to experimental studies, it has many optional parameters, used to test various execution modes. Values set by default will give best results in most cases. \begin{itemize} \iteme[\texttt{-c}{\it flags}] Tune the default ordering strategy according to the given preference flags. Some of these flags are antagonistic, while others can be combined. See Section~\ref{sec-lib-format-strat-default} for more information. The resulting strategy string can be displayed by means of the \texttt{-vs} option. \begin{itemize} \iteme[\texttt{b}] Enforce load balance as much as possible. \iteme[\texttt{q}] Privilege quality over speed. This is the default behavior. \iteme[\texttt{s}] Privilege speed over quality. \iteme[\texttt{t}] Use only safe methods in the strategy. \end{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-m}{\it output\_mapping\_file}] Write to {\it output\_mapping\_file\/} the mapping of graph vertices to column blocks. All of the separators and leaves produced by the nested dissection method are considered as distinct column blocks, which may be in turn split by the ordering methods that are applied to them. Distinct integer numbers are associated with each of the column blocks, such that the number of a block is always greater than the ones of its predecessors in the elimination process, that is, its descendants in the elimination tree. The structure of mapping files is given in section~\ref{sec-file-map}. When the geometry of the graph is available, this mapping file may be processed by program \texttt{gout} to display the vertex separators and supervariable amalgamations that have been computed. \iteme[{\texttt{-o}{\it strat}}] Apply ordering strategy {\it strat}. The format of ordering strategies is defined in section~\ref{sec-lib-format-ord}. \iteme[\texttt{-t}{\it output\_tree\_file}] Write to {\it output\_tree\_file\/} the structure of the separator tree. The data that is written resembles much the one of a mapping file: after a first line that contains the number of lines to follow, there are that many lines of mapping pairs, which associate an integer number with every graph vertex index. This integer number is the number of the column block which is the parent of the column block to which the vertex belongs, or $-1$ if the column block to which the vertex belongs is a root of the separator tree (there can be several roots, if the graph is disconnected). Combined to the column block mapping data produced by option \texttt{-m}, the tree structure allows one to rebuild the separator tree. \iteme[\texttt{-V}] Print the program version and copyright. \iteme[\texttt{-v}{\it verb}] Set verbose mode to {\it verb}, which may contain several of the following switches. %For a detailed description of the data displayed, please %refer to the manual page of \texttt{gotst}. \begin{itemize} \iteme[\texttt{s}] Strategy information. This parameter displays the ordering strategy which will be used by \texttt{gord}. \iteme[\texttt{t}] Timing information. \end{itemize} \end{itemize} \end{itemize} \subsubsection{\texttt{gotst}} \label{sec-prog-gotst} \begin{itemize} \progsyn \texttt{gotst} [{\it input\_graph\_file} [{\it input\_ordering\_file} [{\it output\_data\_file}]]] {\it options} \progdes The program \texttt{gotst} is the ordering tester. It gives some statistics on orderings, including the number of non-zeros and the operation count of the factored matrix, as well as statistics regarding the elimination tree. Since it performs the factorization of the reordered matrix, it can take a very long time and consume a large amount of memory when applied to large graphs. \\ The first two statistics lines deal with the elimination tree. The first one displays the number of leaves, while the second shows the minimum height of the tree (that is, the length of the shortest path from any leaf to the --or a-- root node), its maximum height, its average height, and the variance of the heights with respect to the average. The third line displays the number of non-zero terms in the factored matrix, the amount of index data that is necessary to maintain the block structure of the factored matrix, and the number of operations required to factor the matrix by means of Cholesky factorization. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{gout}} \label{sec-prog-gout} \begin{itemize} \progsyn \texttt{gout} [{\it input\_graph\_file} [{\it input\_geometry\_file} [{\it input\_\lbt mapping\_\lbt file} [{\it output\_\lbt visualization\_\lbt file}]]]] {\it options} \progdes The \texttt{gout} program is the graph, matrix, and mapping viewer program. It takes on input a source graph, its geometry file, and optionally a mapping result file, and produces a file suitable for display. At the time being, \texttt{gout} can generate plain and encapsulated PostScript files for the display of adjacency matrix patterns and the display of planar graphs (although tridimensional objects can be displayed by means of isometric projection, the display of tridimensional mappings is not efficient), and {\sc Open Inventor} files~\cite{oinv} for the interactive visualization of tridimensional graphs. \\ In the case of mapping display, the number of mapping pairs contained in the input mapping file may differ from the number of vertices of the input source graph; only mapping pairs the source labels of which match labels of source graph vertices will be taken into account for display. This feature allows the user to show the result of the mapping of a subgraph drawn on the whole graph, or else to outline the most important aspects of a mapping by restricting the display to a limited portion of the graph. For example, Figure~\ref{fig-out-ps}\@.b shows how the result of the mapping of a subgraph of the bidimensional mesh $\MD(4,4)$ onto the complete graph $\KP(2)$ can be displayed on the whole $\MD(4,4)$ graph, and Figure~\ref{fig-out-ps}\@.c shows how the display of the same mapping can be restricted to a subgraph of the original graph. % gmk_m2 4 4 s_f_out1.src -gs_f_out.xyz % map s_f_out2.src ../tgt/k2.tgt s_f_out2.map % out s_f_out2.src s_f_out.xyz -m - s_f_out1.ps '-Op{e,g,l}' % out s_f_out1.src s_f_out.xyz s_f_out2.map s_f_out2.ps '-Op{e,g,l}' % out s_f_out3.src s_f_out.xyz s_f_out2.map s_f_out3.ps '-Op{e,g,l}' \begin{figure}[hbt] \hfill \parbox[t]{4.5cm}{ \hfill \includegraphics[scale=0.25]{s_f_out1.ps} \hfill\ \\ {\bf a.} A subgraph of $\MD(4,4)$ to be mapped onto $\KP(2)$. }\ \hfill\ \parbox[t]{4.5cm}{ \hfill \includegraphics[scale=0.25]{s_f_out2.ps} \hfill\ \\ {\bf b.} Mapping result displayed on the full $\MD(4,4)$ graph. }\ \hfill\ \parbox[t]{4.5cm}{ \hfill \includegraphics[scale=0.25]{s_f_out3.ps} \hfill\ \\ {\bf c.} Mapping result displayed on another subgraph of $\MD(4,4)$. }\hfill\ \caption{PostScript diplay of a single mapping file with different subgraphs of the same source graph. Vertices covered with disks of the same color are mapped onto the same processor.} \label{fig-out-ps} \end{figure} \progopt \begin{itemize} \iteme[\texttt{-g}{\it parameters}] Geometry parameters. \begin{itemize} \iteme[\texttt{n}] Do not read geometry data. This option can be used in conjunction with option \texttt{-om} to avoid reading the geometry file when displaying the pattern of the adjacency matrix associated with the source graph, since geometry data are not needed in this case. If this option is set, the geometry file is not read. However, if an {\it output\_\lbt visualization\_\lbt file} name is given in the command line, dummy {\it input\_\lbt geometry\_\lbt file\/} and {\it input\_\lbt mapping\_\lbt file\/} names must be specified so that the file argument count is correct. In this case, use the ``\texttt{-}'' parameter to take standard input as a dummy geometry input stream. In practice, the \texttt{-om} and \texttt{-gn} options always imply the \texttt{-mn} option. \iteme[\texttt{r}] For bidimensional geometry only, rotate geometry data by $90$ degrees, counter-clockwise. \end{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-mn}] Do not read mapping data, and display the graph without any mapping information. If this option is set, the mapping file is not read. However, if an {\it output\_\lbt visualization\_\lbt file\/} name is given in the command line, a dummy {\it input\_\lbt mapping\_\lbt file\/} name must be specified so that the file argument count is correct. In this case, use the ``\texttt{-}'' parameter to take standard input as a dummy mapping input stream. \iteme[{\texttt{-o}{\it format}[\texttt{\{}{\it parameters}\texttt{\}}]}] Specify the type of output, with optional parameters within curly braces and separated by commas. The output formats are listed below. \begin{itemize} \iteme[\texttt{i}] Output the graph in SGI's {\sc Open Inventor} format, in ASCII mode, suitable for display by the \texttt{ivview} program~\cite{oinv}. The optional parameters are given below. \begin{itemize} \iteme[\texttt{c}] Color output, using $16$ different colors. Opposite of \texttt{g}. \iteme[\texttt{g}] Grey-level output, using $8$ different levels. Opposite of \texttt{c}. \iteme[\texttt{r}] Remove cut edges. Edges the ends of which are mapped onto different processors are not displayed. Opposite of \texttt{v}. \iteme[\texttt{v}] View cut edges. All graph edges are displayed. Opposite of \texttt{r}. \end{itemize} \iteme[\texttt{m}] Output the pattern of the adjacency matrix associated with the source graph, in Adobe's PostScript format. The optional parameters are given below. \begin{itemize} \iteme[\texttt{e}] Encapsulated PostScript output, suitable for \LaTeX\ use with \texttt{epsf}. Opposite of \texttt{f}. \iteme[\texttt{f}] Full-page PostScript output, suitable for direct printing. Opposite of \texttt{e}. \end{itemize} \iteme[\texttt{p}] Output the graph in Adobe's PostScript format. The optional parameters are given below. \begin{itemize} \iteme[\texttt{a}] Avoid displaying the mapping disks. Opposite of \texttt{d}. \iteme[\texttt{c}] Color PostScript output, using $16$ different colors. Opposite of \texttt{g}. \iteme[\texttt{d}] Display the mapping disks. Opposite of \texttt{a}. \iteme[\texttt{e}] Encapsulated PostScript output, suitable for \LaTeX\ use with \texttt{epsf}. Opposite of \texttt{f}. \iteme[\texttt{f}] Full-page PostScript output, suitable for direct printing. Opposite of \texttt{e}. \iteme[\texttt{g}] Grey-level PostScript output. Opposite of \texttt{c}. \iteme[\texttt{l}] Large clipping. Mapping disks are included in the clipping area computation. Opposite of \texttt{s}. \iteme[\texttt{r}] Remove cut edges. Edges the ends of which are mapped onto different processors are not displayed. Opposite of \texttt{v}. \iteme[\texttt{s}] Small clipping. Mapping disks are excluded from the clipping area computation. Opposite of \texttt{l}. \iteme[\texttt{v}] View cut edges. All graph edges are displayed. Opposite of \texttt{r}. \iteme[\texttt{x=}{\it val}] Minimum X relative clipping position (in [0.0;1.0]). \iteme[\texttt{X=}{\it val}] Maximum X relative clipping position (in [0.0;1.0]). \iteme[\texttt{y=}{\it val}] Minimum Y relative clipping position (in [0.0;1.0]). \iteme[\texttt{Y=}{\it val}] Maximum Y relative clipping position (in [0.0;1.0]). \end{itemize} \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} Default option set is ``\texttt{-Oi\{v\}}''. \end{itemize} \subsubsection{\texttt{gtst}} \begin{itemize} \progsyn \texttt{gtst} [{\it input\_graph\_file} [{\it output\_data\_file}]] {\it options} \progdes The program \texttt{gtst} is the source graph tester. It checks the consistency of the input source graph structure (matching of arcs, number of vertices and edges, etc\@.), and gives some statistics regarding edge weights, vertex weights, and vertex degrees. \\ When the graphs to test are very large, the same results can be obtained by using the \texttt{dgtst} parallel program of the \ptscotch\ distribution, which can read centralized graph files too. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{mcv}} \label{sec-prog-mcv} \begin{itemize} \progsyn \texttt{mcv} [{\it input\_mesh\_file} [{\it output\_mesh\_file} [{\it output\_geometry\_file}]]] {\it options} \progdes The program \texttt{mcv} is the source mesh converter. It takes on input a mesh file of the format specified with the \texttt{-i} option, and outputs its equivalent in the format specified with the \texttt{-o} option, along with its associated geometry file whenever geometrical data is available. At the time being, it only accepts one external input format: the Harwell-Boeing format~\cite{dugrle92}, for square elemental matrices only. The only output format to date is the \scotch\ source mesh and geometry data format. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-i}{\it format}] Specify the type of input mesh. The available input formats are listed below. \begin{itemize} \iteme[{\texttt{b}[{\it number}]}] Harwell-Boeing mesh collection format. Only symmetric elemental matrices are currently supported. Since files in this format can contain several meshes one after another, the optional integer {\it number}, starting from $0$, indicates which mesh of the file is considered for conversion. \iteme[\texttt{s}] \scotch\ source mesh format. \end{itemize} \iteme[\texttt{-o}{\it format}] Specify the output graph format. The available output formats are listed below. \begin{itemize} \iteme[\texttt{s}] \scotch\ source graph format. \end{itemize} \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} Default option set is ``\texttt{-Ib0 -Os}''. \end{itemize} \subsubsection{\texttt{mmk\_}*} \begin{itemize} \progsyn \texttt{mmk\_m2} {\it dimX} [{\it dimY} [{\it output\_mesh\_file}]] {\it options}\\ ~\\ \texttt{mmk\_m3} {\it dimX} [{\it dimY} [{\it dimZ} [{\it output\_mesh\_file}]]] {\it options}\\ \progdes The \texttt{mmk\_}* programs make source meshes. \\ \noi Program \texttt{mmk\_m2} outputs the source file of a bidimensional mesh with $\mbox{{\it dimX\/}} \times \mbox{{\it dimY\/}}$ elements and $(\mbox{{\it dimX\/}}+1) \times (\mbox{{\it dimY\/}}+1)$ nodes. The element of coordinates $(\mbox{\it posX},\mbox{\it posY\/})$ is labeled $\mbox{\it posY} \times \mbox{\it dimX} + \mbox{\it posX}$. \\ \noi Program \texttt{mmk\_m3} outputs the source file of a tridimensional mesh with $\mbox{{\it dimX\/}} \times \mbox{{\it dimY\/}} \times \mbox{{\it dimZ\/}}$ elements and $(\mbox{{\it dimX\/}}+1) \times (\mbox{{\it dimY\/}}+1) \times (\mbox{{\it dimZ\/}}+1)$ nodes. \\ \progopt \begin{itemize} \iteme[\texttt{-g}{\it output\_geometry\_file}] Output mesh geometry to file {\it output\_geometry\_file} (for \texttt{mmk\_m2} only). As for all other file names, ``\texttt{-}'' may be used to indicate standard output. \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} \subsubsection{\texttt{mord}} \begin{itemize} \progsyn \texttt{mord} [{\it input\_mesh\_file} [{\it output\_ordering\_file} [{\it output\_log\_file}]]] {\it options} \progdes The \texttt{mord} program is the block sparse matrix mesh orderer. It uses an ordering strategy to compute block orderings of sparse matrices represented as source meshes, whose node vertex weights indicate the number of DOFs per node (if this number is non homogeneous), in order to minimize fill-in and operation count. Since its main purpose is to provide orderings that exhibit high concurrency for parallel block factorization, it comprises a nested dissection method~\cite{geli81}, but classical~\cite{liu-85} and state-of-the-art~\cite{amdadu96,peroam99} minimum degree algorithms are implemented as well. Ordering methods are used to define ordering strategies by means of selection, grouping, and condition operators. The \texttt{-o} option allows the user to define the ordering strategy. The \texttt{-c} option allows the user to set preferences on the behavior of the ordering strategy which is used by default. \progopt\\* Since the program is devoted to experimental studies, it has many optional parameters, used to test various execution modes. Values set by default will give best results in most cases. \begin{itemize} \iteme[\texttt{-c}{\it flags}] Tune the default ordering strategy according to the given preference flags. Some of these flags are antagonistic, while others can be combined. See Section~\ref{sec-lib-format-strat-default} for more information. The resulting strategy string can be displayed by means of the \texttt{-vs} option. \begin{itemize} \iteme[\texttt{b}] Enforce load balance as much as possible. \iteme[\texttt{q}] Privilege quality over speed. This is the default behavior. \iteme[\texttt{s}] Privilege speed over quality. \iteme[\texttt{t}] Use only safe methods in the strategy. \end{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-m}{\it output\_mapping\_file}] Write to {\it output\_mapping\_file\/} the mapping of mesh node vertices to column blocks. All of the separators and leaves produced by the nested dissection method are considered as distinct column blocks, which may be in turn split by the ordering methods that are applied to them. Distinct integer numbers are associated with each of the column blocks, such that the number of a block is always greater than the ones of its predecessors in the elimination process, that is, its leaves in the elimination tree. The structure of mapping files is given in section~\ref{sec-file-map}. When the coordinates of the node vertices are available, the mapping file may be processed by program \texttt{gout}, along with the graph structure that can be created from the source mesh file by means of the \texttt{gmk\_\lbt msh} program, to display the node vertex separators and supervariable amalgamations that have been computed. \iteme[{\texttt{-o}{\it strat}}] Apply ordering strategy {\it strat}. The format of ordering strategies is defined in section~\ref{sec-lib-format-ord}. \iteme[\texttt{-t}{\it output\_tree\_file}] Write to {\it output\_tree\_file\/} the structure of the separator tree. The data that is written resembles much the one of a mapping file: after a first line that contains the number of lines to follow, there are that many lines of mapping pairs, which associate an integer number with every node vertex index. This integer number is the number of the column block which is the parent of the column block to which the node vertex belongs, or $-1$ if the column block to which the node vertex belongs is a root of the separator tree (there can be several roots, if the mesh is disconnected). Combined to the column block mapping data produced by option \texttt{-m}, the tree structure allows one to rebuild the separator tree. \iteme[\texttt{-V}] Print the program version and copyright. \iteme[\texttt{-v}{\it verb}] Set verbose mode to {\it verb}, which may contain several of the following switches. %For a detailed description of the data displayed, please %refer to the manual page of \texttt{gotst}. \begin{itemize} \iteme[\texttt{s}] Strategy information. This parameter displays the default ordering strategy used by \texttt{mord}. \iteme[\texttt{t}] Timing information. \end{itemize} \end{itemize} \end{itemize} \subsubsection{\texttt{mtst}} \begin{itemize} \progsyn \texttt{mtst} [{\it input\_mesh\_file} [{\it output\_data\_file}]] {\it options} \progdes The program \texttt{mtst} is the source mesh tester. It checks the consistency of the input source mesh structure (matching of arcs that link elements to nodes and nodes to elements, number of elements, nodes, and edges, etc\@.), and gives some statistics regarding element and node weights, edge weights, and element and node degrees. \progopt \begin{itemize} \iteme[\texttt{-h}] Display the program synopsis. \iteme[\texttt{-V}] Print the program version and copyright. \end{itemize} \end{itemize} scotch_6.0.9/doc/src/scotch/s_f_orf.eps0000644000302600021200000004072213322403377020233 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_orf.fig %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Thu Dec 30 05:26:16 2004 %%For: pelegrin@localhost (Francois PELLEGRINI) %%BoundingBox: 0 0 479 337 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 337 moveto 0 0 lineto 479 0 lineto 479 337 lineto closepath clip newpath -35.5 360.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 20 % Polyline 7.500 slw n 3750 1950 m 3150 3150 l gs col0 s gr % Polyline n 1350 1950 m 1950 750 l 2550 1950 l 1350 1950 l 1950 3150 l 2550 1950 l 3150 750 l 1950 750 l gs col0 s gr % Polyline n 1950 3150 m 3150 3150 l 2550 1950 l 3750 1950 l gs col0 s gr % Polyline n 1950 3150 m 750 3150 l 1350 1950 l gs col0 s gr % Polyline n 8250 1950 m 7650 3150 l gs col0 s gr % Polyline n 6450 3150 m 7650 3150 l 7050 1950 l 8250 1950 l gs col0 s gr % Polyline n 6450 3150 m 5250 3150 l 5850 1950 l gs col0 s gr % Polyline n 5850 1950 m 6450 750 l 7050 1950 l 5850 1950 l 6450 3150 l 7050 1950 l 7650 750 l 6450 750 l gs col0 s gr % Ellipse n 5850 1950 382 382 0 360 DrawEllipse gs col0 s gr % Ellipse n 5250 3150 375 375 0 360 DrawEllipse gs col0 s gr % Polyline 2 slj n 7350 1850 m 7349 1876 l 7348 1903 l 7345 1932 l 7341 1962 l 7336 1993 l 7330 2026 l 7323 2060 l 7315 2096 l 7306 2132 l 7295 2170 l 7284 2209 l 7271 2249 l 7258 2290 l 7244 2332 l 7228 2375 l 7212 2418 l 7195 2462 l 7177 2506 l 7158 2550 l 7139 2594 l 7119 2638 l 7099 2682 l 7078 2725 l 7057 2768 l 7036 2810 l 7014 2851 l 6992 2891 l 6970 2930 l 6948 2968 l 6925 3004 l 6903 3040 l 6881 3074 l 6859 3107 l 6837 3138 l 6815 3168 l 6793 3197 l 6772 3224 l 6750 3250 l 6730 3272 l 6711 3294 l 6691 3314 l 6671 3334 l 6651 3352 l 6631 3369 l 6611 3386 l 6591 3402 l 6571 3416 l 6551 3430 l 6531 3442 l 6511 3453 l 6491 3464 l 6472 3473 l 6452 3481 l 6433 3487 l 6414 3493 l 6395 3497 l 6377 3500 l 6359 3502 l 6342 3503 l 6325 3502 l 6308 3500 l 6293 3497 l 6278 3493 l 6264 3487 l 6250 3481 l 6237 3473 l 6226 3464 l 6214 3453 l 6204 3442 l 6195 3430 l 6186 3416 l 6179 3402 l 6172 3386 l 6166 3369 l 6161 3352 l 6157 3334 l 6154 3314 l 6152 3294 l 6150 3272 l 6150 3250 l 6151 3224 l 6152 3197 l 6155 3168 l 6159 3138 l 6164 3107 l 6170 3074 l 6177 3040 l 6185 3004 l 6194 2968 l 6205 2930 l 6216 2891 l 6229 2851 l 6242 2810 l 6256 2768 l 6272 2725 l 6288 2682 l 6305 2638 l 6323 2594 l 6342 2550 l 6361 2506 l 6381 2462 l 6401 2418 l 6422 2375 l 6443 2332 l 6464 2290 l 6486 2249 l 6508 2209 l 6530 2170 l 6552 2132 l 6575 2096 l 6597 2060 l 6619 2026 l 6641 1993 l 6663 1962 l 6685 1932 l 6707 1903 l 6728 1876 l 6750 1850 l 6770 1828 l 6789 1806 l 6809 1786 l 6829 1766 l 6849 1748 l 6869 1731 l 6889 1714 l 6909 1698 l 6929 1684 l 6949 1670 l 6969 1658 l 6989 1647 l 7009 1636 l 7028 1627 l 7048 1619 l 7067 1613 l 7086 1607 l 7105 1603 l 7123 1600 l 7141 1598 l 7158 1597 l 7175 1598 l 7192 1600 l 7207 1603 l 7222 1607 l 7236 1613 l 7250 1619 l 7263 1627 l 7274 1636 l 7286 1647 l 7296 1658 l 7305 1670 l 7314 1684 l 7321 1698 l 7328 1714 l 7334 1731 l 7339 1748 l 7343 1766 l 7346 1786 l 7348 1806 l 7350 1828 l cp gs col0 s gr % Polyline n 6350 1000 m 6377 1009 l 6406 1018 l 6437 1026 l 6469 1034 l 6502 1042 l 6537 1049 l 6574 1055 l 6612 1061 l 6651 1066 l 6692 1071 l 6734 1076 l 6777 1080 l 6821 1083 l 6865 1086 l 6911 1088 l 6957 1089 l 7003 1090 l 7050 1090 l 7097 1090 l 7143 1089 l 7189 1088 l 7235 1086 l 7279 1083 l 7323 1080 l 7366 1076 l 7408 1071 l 7449 1066 l 7488 1061 l 7526 1055 l 7563 1049 l 7598 1042 l 7631 1034 l 7663 1026 l 7694 1018 l 7723 1009 l 7750 1000 l 7772 992 l 7794 983 l 7814 974 l 7834 964 l 7852 954 l 7869 944 l 7886 933 l 7902 922 l 7916 910 l 7930 899 l 7942 886 l 7953 874 l 7964 861 l 7973 848 l 7981 834 l 7987 820 l 7993 807 l 7997 793 l 8000 778 l 8002 764 l 8003 750 l 8002 736 l 8000 722 l 7997 707 l 7993 693 l 7987 680 l 7981 666 l 7973 652 l 7964 639 l 7953 626 l 7942 614 l 7930 601 l 7916 590 l 7902 578 l 7886 567 l 7869 556 l 7852 546 l 7834 536 l 7814 526 l 7794 517 l 7772 508 l 7750 500 l 7723 491 l 7694 482 l 7663 474 l 7631 466 l 7598 458 l 7563 451 l 7526 445 l 7488 439 l 7449 434 l 7408 429 l 7366 424 l 7323 420 l 7279 417 l 7235 414 l 7189 412 l 7143 411 l 7097 410 l 7050 410 l 7003 410 l 6957 411 l 6911 412 l 6865 414 l 6821 417 l 6777 420 l 6734 424 l 6692 429 l 6651 434 l 6612 439 l 6574 445 l 6537 451 l 6502 458 l 6469 466 l 6437 474 l 6406 482 l 6377 491 l 6350 500 l 6328 508 l 6306 517 l 6286 526 l 6266 536 l 6248 546 l 6231 556 l 6214 567 l 6198 578 l 6184 590 l 6170 601 l 6158 614 l 6147 626 l 6136 639 l 6127 652 l 6119 666 l 6113 680 l 6107 693 l 6103 707 l 6100 722 l 6098 736 l 6097 750 l 6098 764 l 6100 778 l 6103 793 l 6107 807 l 6113 820 l 6119 834 l 6127 848 l 6136 861 l 6147 874 l 6158 886 l 6170 899 l 6184 910 l 6198 922 l 6214 933 l 6231 944 l 6248 954 l 6266 964 l 6286 974 l 6306 983 l 6328 992 l cp gs col0 s gr % Polyline n 8550 1850 m 8549 1876 l 8548 1903 l 8545 1932 l 8541 1962 l 8536 1993 l 8530 2026 l 8523 2060 l 8515 2096 l 8506 2132 l 8495 2170 l 8484 2209 l 8471 2249 l 8458 2290 l 8444 2332 l 8428 2375 l 8412 2418 l 8395 2462 l 8377 2506 l 8358 2550 l 8339 2594 l 8319 2638 l 8299 2682 l 8278 2725 l 8257 2768 l 8236 2810 l 8214 2851 l 8192 2891 l 8170 2930 l 8148 2968 l 8125 3004 l 8103 3040 l 8081 3074 l 8059 3107 l 8037 3138 l 8015 3168 l 7993 3197 l 7972 3224 l 7950 3250 l 7930 3272 l 7911 3294 l 7891 3314 l 7871 3334 l 7851 3352 l 7831 3369 l 7811 3386 l 7791 3402 l 7771 3416 l 7751 3430 l 7731 3442 l 7711 3453 l 7691 3464 l 7672 3473 l 7652 3481 l 7633 3487 l 7614 3493 l 7595 3497 l 7577 3500 l 7559 3502 l 7542 3503 l 7525 3502 l 7508 3500 l 7493 3497 l 7478 3493 l 7464 3487 l 7450 3481 l 7437 3473 l 7426 3464 l 7414 3453 l 7404 3442 l 7395 3430 l 7386 3416 l 7379 3402 l 7372 3386 l 7366 3369 l 7361 3352 l 7357 3334 l 7354 3314 l 7352 3294 l 7350 3272 l 7350 3250 l 7351 3224 l 7352 3197 l 7355 3168 l 7359 3138 l 7364 3107 l 7370 3074 l 7377 3040 l 7385 3004 l 7394 2968 l 7405 2930 l 7416 2891 l 7429 2851 l 7442 2810 l 7456 2768 l 7472 2725 l 7488 2682 l 7505 2638 l 7523 2594 l 7542 2550 l 7561 2506 l 7581 2462 l 7601 2418 l 7622 2375 l 7643 2332 l 7664 2290 l 7686 2249 l 7708 2209 l 7730 2170 l 7752 2132 l 7775 2096 l 7797 2060 l 7819 2026 l 7841 1993 l 7863 1962 l 7885 1932 l 7907 1903 l 7928 1876 l 7950 1850 l 7970 1828 l 7989 1806 l 8009 1786 l 8029 1766 l 8049 1748 l 8069 1731 l 8089 1714 l 8109 1698 l 8129 1684 l 8149 1670 l 8169 1658 l 8189 1647 l 8209 1636 l 8228 1627 l 8248 1619 l 8267 1613 l 8286 1607 l 8305 1603 l 8323 1600 l 8341 1598 l 8358 1597 l 8375 1598 l 8392 1600 l 8407 1603 l 8422 1607 l 8436 1613 l 8450 1619 l 8463 1627 l 8474 1636 l 8486 1647 l 8496 1658 l 8505 1670 l 8514 1684 l 8521 1698 l 8528 1714 l 8534 1731 l 8539 1748 l 8543 1766 l 8546 1786 l 8548 1806 l 8550 1828 l cp gs col0 s gr /Courier ff 210.00 scf sf 600 5925 m gs 1 -1 sc (rangtab) col0 sh gr /Courier ff 210.00 scf sf 600 4125 m gs 1 -1 sc (permtab) col0 sh gr /Courier ff 210.00 scf sf 600 4725 m gs 1 -1 sc (peritab) col0 sh gr /Courier ff 210.00 scf sf 600 5325 m gs 1 -1 sc (cblknbr) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 1800 5700 m 2100 5700 l 2100 6000 l 1800 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 5700 m 2400 5700 l 2400 6000 l 2100 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 5700 m 2700 5700 l 2700 6000 l 2400 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2500 5940 m gs 1 -1 sc (4) col0 sh gr % Polyline n 2700 5700 m 3000 5700 l 3000 6000 l 2700 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 5700 m 3300 5700 l 3300 6000 l 3000 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 5700 m 3600 5700 l 3600 6000 l 3300 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 3900 m 2100 3900 l 2100 4200 l 1800 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 3900 m 2400 3900 l 2400 4200 l 2100 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3900 m 2700 3900 l 2700 4200 l 2400 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3900 m 3000 3900 l 3000 4200 l 2700 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3900 m 3300 3900 l 3300 4200 l 3000 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 3900 m 3600 3900 l 3600 4200 l 3300 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3400 4140 m gs 1 -1 sc (4) col0 sh gr % Polyline n 3600 3900 m 3900 3900 l 3900 4200 l 3600 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 3900 m 4200 3900 l 4200 4200 l 3900 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 4500 m 2100 4500 l 2100 4800 l 1800 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 4500 m 2400 4500 l 2400 4800 l 2100 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 4500 m 2700 4500 l 2700 4800 l 2400 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 4500 m 3000 4500 l 3000 4800 l 2700 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 4500 m 3300 4500 l 3300 4800 l 3000 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 4500 m 3600 4500 l 3600 4800 l 3300 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 4500 m 3900 4500 l 3900 4800 l 3600 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3700 4740 m gs 1 -1 sc (4) col0 sh gr % Polyline n 3900 4500 m 4200 4500 l 4200 4800 l 3900 4800 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 5100 m 2100 5100 l 2100 5400 l 1800 5400 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 5700 m 3900 5700 l 3900 6000 l 3600 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3900 5700 m 4200 5700 l 4200 6000 l 3900 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4200 5700 m 4500 5700 l 4500 6000 l 4200 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 2550 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3150 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1950 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1350 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3750 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 750 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3150 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1950 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6450 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7650 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8250 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5850 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7650 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5250 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7050 1950 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6450 3150 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 2500 2040 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 840 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 1300 2040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 2040 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 700 3240 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 3240 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 2040 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 2040 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 3240 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 3240 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 2040 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 5940 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 5940 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 5940 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 5940 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 5940 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 4140 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 4140 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 4140 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 4140 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 4740 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 4740 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 4740 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 4740 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 4740 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 4740 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 4740 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 5340 m gs 1 -1 sc (5) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 1900 840 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 3240 m gs 1 -1 sc (7) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_run.fig0000644000302600021200000002107113303015264020214 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 675 825 5925 6300 6 3450 1275 3750 5925 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3600 1350 3600 5850 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 1350 3675 1350 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 5850 3675 5850 -6 6 1275 3450 3525 3750 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3450 3600 1350 3600 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3450 3525 3450 3675 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 1350 3525 1350 3675 -6 6 2250 5775 2550 5925 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2325 5850 2475 5850 -6 6 1350 1350 5850 5850 6 1500 1500 5700 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1500 5700 1500 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 2100 5700 2100 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3300 5700 3300 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3900 5700 3900 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 4500 5700 4500 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 2700 5700 2700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 5100 5700 5100 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 5700 5700 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1500 1500 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2100 1500 2100 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2700 1500 2700 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3300 1500 3300 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3900 1500 3900 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4500 1500 4500 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5100 1500 5100 5700 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5700 1500 5700 5700 -6 6 1350 1350 1650 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 5850 1650 5550 1350 5550 1350 5850 1650 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 5250 1650 4950 1350 4950 1350 5250 1650 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4650 1650 4350 1350 4350 1350 4650 1650 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4050 1650 3750 1350 3750 1350 4050 1650 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 3450 1650 3150 1350 3150 1350 3450 1650 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 2850 1650 2550 1350 2550 1350 2850 1650 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 2250 1650 1950 1350 1950 1350 2250 1650 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 1650 1650 1350 1350 1350 1350 1650 1650 1650 -6 6 1950 1350 2250 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 5850 2250 5550 1950 5550 1950 5850 2250 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 5250 2250 4950 1950 4950 1950 5250 2250 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4650 2250 4350 1950 4350 1950 4650 2250 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4050 2250 3750 1950 3750 1950 4050 2250 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 3450 2250 3150 1950 3150 1950 3450 2250 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 2850 2250 2550 1950 2550 1950 2850 2250 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 2250 2250 1950 1950 1950 1950 2250 2250 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 1650 2250 1350 1950 1350 1950 1650 2250 1650 -6 6 3150 1350 3450 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 5850 3450 5550 3150 5550 3150 5850 3450 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 5250 3450 4950 3150 4950 3150 5250 3450 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4650 3450 4350 3150 4350 3150 4650 3450 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4050 3450 3750 3150 3750 3150 4050 3450 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 3450 3450 3150 3150 3150 3150 3450 3450 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 2850 3450 2550 3150 2550 3150 2850 3450 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 2250 3450 1950 3150 1950 3150 2250 3450 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 1650 3450 1350 3150 1350 3150 1650 3450 1650 -6 6 3750 1350 4050 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 5850 4050 5550 3750 5550 3750 5850 4050 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 5250 4050 4950 3750 4950 3750 5250 4050 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4650 4050 4350 3750 4350 3750 4650 4050 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4050 4050 3750 3750 3750 3750 4050 4050 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 3450 4050 3150 3750 3150 3750 3450 4050 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 2850 4050 2550 3750 2550 3750 2850 4050 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 2250 4050 1950 3750 1950 3750 2250 4050 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 1650 4050 1350 3750 1350 3750 1650 4050 1650 -6 6 4350 1350 4650 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 5850 4650 5550 4350 5550 4350 5850 4650 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 5250 4650 4950 4350 4950 4350 5250 4650 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4650 4650 4350 4350 4350 4350 4650 4650 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4050 4650 3750 4350 3750 4350 4050 4650 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 3450 4650 3150 4350 3150 4350 3450 4650 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 2850 4650 2550 4350 2550 4350 2850 4650 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 2250 4650 1950 4350 1950 4350 2250 4650 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 1650 4650 1350 4350 1350 4350 1650 4650 1650 -6 6 4950 1350 5250 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 5850 5250 5550 4950 5550 4950 5850 5250 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 5250 5250 4950 4950 4950 4950 5250 5250 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4650 5250 4350 4950 4350 4950 4650 5250 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4050 5250 3750 4950 3750 4950 4050 5250 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 3450 5250 3150 4950 3150 4950 3450 5250 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 2850 5250 2550 4950 2550 4950 2850 5250 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 2250 5250 1950 4950 1950 4950 2250 5250 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 1650 5250 1350 4950 1350 4950 1650 5250 1650 -6 6 5550 1350 5850 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 5850 5850 5550 5550 5550 5550 5850 5850 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 5250 5850 4950 5550 4950 5550 5250 5850 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4650 5850 4350 5550 4350 5550 4650 5850 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4050 5850 3750 5550 3750 5550 4050 5850 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 3450 5850 3150 5550 3150 5550 3450 5850 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 2850 5850 2550 5550 2550 5550 2850 5850 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 2250 5850 1950 5550 1950 5550 2250 5850 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 1650 5850 1350 5550 1350 5550 1650 5850 1650 -6 6 2550 1350 2850 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 5850 2850 5550 2550 5550 2550 5850 2850 5850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 5250 2850 4950 2550 4950 2550 5250 2850 5250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4650 2850 4350 2550 4350 2550 4650 2850 4650 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4050 2850 3750 2550 3750 2550 4050 2850 4050 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 3450 2850 3150 2550 3150 2550 3450 2850 3450 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 2850 2850 2550 2550 2550 2550 2850 2850 2850 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 2250 2850 1950 2550 1950 2550 2250 2850 2250 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 1650 2850 1350 2550 1350 2550 1650 2850 1650 -6 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 4200 75 75 1800 4200 1875 4275 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3600 75 75 4800 3600 4875 3675 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 5400 75 75 1800 5400 1875 5475 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 2250 4800 1350 4800 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 1350 4725 1350 4875 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 2325 3675 1275 3675 1275 5925 2325 5925 2325 3675 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2250 4725 2250 4875 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2325 3750 2475 3750 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 2325 3750 2475 3750 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 2400 3750 2400 5850 2 4 0 1 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5925 1275 3675 1275 3675 5925 5925 5925 5925 1275 3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 1800 4200 3450 4200 4800 3600 0.000 -1.000 0.000 3 2 0 2 -1 -1 0 0 -1 0.000 0 0 0 3 1800 5400 3450 4725 4800 3600 0.000 -1.000 0.000 4 0 -1 0 0 0 20 0.0000 4 210 210 900 4875 D\001 4 0 -1 0 0 0 20 0.0000 4 210 525 2100 6300 CL2\001 4 0 -1 0 0 0 20 0.0000 4 210 525 3300 1200 CL0\001 4 0 -1 0 0 0 20 0.0000 4 210 525 675 3675 CL1\001 -6 scotch_6.0.9/doc/src/scotch/s_f_lea.eps0000644000302600021200000001603513322403377020206 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_lea.fig %%Creator: fig2dev Version 3.2 Patchlevel 5a %%CreationDate: Fri Jun 25 18:03:31 2010 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 437 118 %Magnification: 1.0000 %%EndComments %%BeginProlog /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def /pageheader { save newpath 0 118 moveto 0 0 lineto 437 0 lineto 437 118 lineto closepath clip newpath -44.3 221.0 translate 1 -1 scale $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc } bind def /pagefooter { $F2psEnd restore } bind def %%EndProlog pageheader % % Fig objects follow % % % here starts figure with depth 50 % Polyline 0 slj 0 slc 7.500 slw [60 27 15 20 15 27] 0 sd n 750 2700 m 7650 2700 l gs col0 s gr [] 0 sd % Polyline [60 27 15 20 15 27] 0 sd n 750 3300 m 7650 3300 l gs col0 s gr [] 0 sd % Polyline [60 27 15 20 15 27] 0 sd n 750 2100 m 7650 2100 l gs col0 s gr [] 0 sd /Times-Roman ff 266.67 scf sf 7725 2775 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 266.67 scf sf 7725 3375 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 266.67 scf sf 7725 2175 m gs 1 -1 sc (20) col0 sh gr % here ends figure; % % here starts figure with depth 11 % Polyline 0 slj 0 slc 7.500 slw n 900 3600 m 1200 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 1200 3000 m 1500 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 2100 3600 m 2400 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 2400 3000 m 2700 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 3300 3600 m 3600 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 3600 3000 m 3900 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 4500 3600 m 4800 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 4800 3000 m 5100 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 3600 3000 m 4200 2400 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 4200 2400 m 4800 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 5700 3600 m 6000 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 6000 3000 m 6300 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 6900 3600 m 7200 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 7200 3000 m 7500 3600 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 6000 3000 m 6600 2400 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 6600 2400 m 7200 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 1200 3000 m 1800 2400 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 1800 2400 m 2400 3000 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 1800 2400 m 4200 1800 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 4200 1800 m 4200 2400 l gs 0.50 setgray ef gr gs col-1 s gr % Polyline n 4200 1800 m 6600 2400 l gs 0.50 setgray ef gr gs col-1 s gr % Ellipse n 900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 1500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 1200 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 2100 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 2700 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 2400 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 3300 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 3900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 3600 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 4500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 5100 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 4200 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 5700 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 6300 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 6000 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 6900 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 7500 3600 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr % Ellipse n 7200 3000 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 6600 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 1800 2385 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % Ellipse n 4200 1800 75 75 0 360 DrawEllipse gs 0.75 setgray ef gr gs col-1 s gr % here ends figure; pagefooter showpage %%Trailer %EOF scotch_6.0.9/doc/src/scotch/s_d.tex0000644000302600021200000001162313303015264017363 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_d.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Distribution programmes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Installation} \label{sec-install} Version {\sc \scotchver} of the \scotch\ software package is distributed as free/libre software under the CeCILL-C free/libre software license~\cite{cecill}, which is very similar to the GNU LGPL license. Therefore, it is no longer distributed as a set of binaries, but instead in the form of a source distribution, which can be downloaded from the \scotch\ web page at \url{http://www.labri.fr/~pelegrin/scotch/}~. \\ All \scotch\ users are welcome to send an e-mail to the author so that they can be added to the \scotch\ mailing list, and be automatically informed of new releases and publications. \\ The extraction process will create a {\tt scotch\_\scotchversub} directory, containing several subdirectories and files. Please refer to the files called {\tt LICENSE\_\lbt EN.txt} or {\tt LICENCE\_\lbt FR.txt}, as well as file {\tt INSTALL\_\lbt EN.txt}, to see under which conditions your distribution of \scotch\ is licensed and how to install it. \subsection{Thread issues} To enable the use of POSIX threads in some routines, the {\tt SCOTCH\_\lbt PTHREAD} flag must be set. If your MPI implementation is not thread-safe, make sure this flag is not defined at compile time. \subsection{File compression issues} To enable on-the-fly compression and decompression of various formats, the relevant flags must be defined. These flags are {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt BZ2} for {\tt bzip2} (de)compression, {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt GZ} for {\tt gzip} (de)compression, and {\tt COMMON\_\lbt FILE\_\lbt COMPRESS\_\lbt LZMA} for {\tt lzma} decompression. Note that the corresponding development libraries must be installed on your system before compile time, and that compressed file handling can take place only on systems which support multi-threading or multi-processing. In the first case, you must set the {\tt SCOTCH\_\lbt PTHREAD} flag in order to take advantage of these features. On Linux systems, the development libraries to install are {\tt libbzip2\_1-\lbt devel} for the {\tt bzip2} format, {\tt zlib1-\lbt devel} for the {\tt gzip} format, and {\tt liblzma0-\lbt devel} for the {\tt lzma} format. The names of the libraries may vary according to operating systems and library versions. Ask your system engineer in case of trouble. \subsection{Machine word size issues} \label{sec-install-inttypesize} The integer values handled by \scotch\ are based on the {\tt SCOTCH\_\lbt Num} type, which equates by default to the {\tt int} C type, corresponding to the {\tt INTEGER} Fortran type, both of which being of machine word size. To coerce the length of the {\tt SCOTCH\_\lbt Num} integer type to 32 or 64 bits, one can use the ``{\tt -DINTSIZE32}'' or ``{\tt -DINTSIZE64}'' flags, respectively, or else use the ``{\tt -DINT=}'' definition, at compile time. For instance, adding ``{\tt -DINT=long}'' to the {\tt CFLAGS} variable in the {\tt Makefile.inc} file to be placed at the root of the source tree will make all {\tt SCOTCH\_\lbt Num} integers become {\tt long} C integers. Whenever doing so, make sure to use integer types of equivalent length to declare variables passed to \scotch\ routines from caller C and Fortran procedures. Also, because of API conflicts, the \metis\ compatibility library will not be usable. It is usually safer and cleaner to tune your C and Fortran compilers to make them interpret {\tt int} and {\tt INTEGER} types as 32 or 64 bit values, than to use the aforementioned flags and coerce type lengths in your own code. Fortran users also have to take care of another size issue: since there are no pointers in Fortran~77, the Fortran interface of some routines converts pointers to be returned into integer indices with respect to a given array (e.g. see sections~\ref{sec-lib-func-graphdata}, \ref{sec-lib-func-meshdata} and~\ref{sec-lib-func-geomdata}). For 32\_64 architectures, such indices can be larger than the size of a regular {\tt INTEGER}. This is why the indices to be returned are defined by means of a specific integer type, {\tt SCOTCH\_Idx}. To coerce the length of this index type to 32 or 64 bits, one can use the ``{\tt -DIDXSIZE32}'' or ``{\tt -DIDXSIZE64}'' flags, respectively, or else use the ``{\tt -DIDX=}'' definition, at compile time. For instance, adding ``{\tt -DIDX="long~long"}'' to the {\tt CFLAGS} variable in the {\tt Makefile.inc} file to be placed at the root of the source tree will equate all {\tt SCOTCH\_\lbt Idx} integers to C {\tt long long} integers. By default, when the size of {\tt SCOTCH\_\lbt Idx} is not explicitly defined, it is assumed to be the same as the size of {\tt SCOTCH\_\lbt Num}. scotch_6.0.9/doc/src/scotch/m_f.tex0000644000302600021200000001276613466077161017406 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : m_f.tex % % Sujet : Maintenance manual of % % Scotch % % File formats v6.0 % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Files and data structures} \label{sec-file} User-manageable file formats are described in the \scotch user's guide. This section contains information that are relevant only to developers and maintainers. For the sake of portability, readability, and reduction of storage space, all the data files shared by the different programs of the \scotch\ project are coded in plain ASCII text exclusively. Although one may speak of ``lines'' when describing file formats, text-formatting characters such as newlines or tabulations are not mandatory, and are not taken into account when files are read. They are only used to provide better readability and understanding. Whenever numbers are used to label objects, and unless explicitely stated, \textbf{numberings always start from zero}, not one. \subsection{Decomposition-defined architecture files} \label{sec-file-target-deco-one} Decomposition-defined architecture files are the way to describe irregular target architectures that cannot be represented as algorithmically-coded architectures. Two main file formats coexist~: the ``\texttt{deco 0}'' and ``\texttt{deco 2}'' formats. ``\texttt{deco}'' stands for ``decomposition-defined architecture'', followed by the format number. The ``\texttt{deco 1}'' format is a compiled form of the ``\texttt{deco 0}'' format. We will describe it here. The ``\texttt{deco 1}'' file format results from an $O(p^2)$ preprocessing of the ``\texttt{deco 0}'' target architecture format. While the ``\texttt{deco 0}'' format contains a distance matrix between all pairs of terminal domains, which is consequently in in $\Theta(p^2/2)$, the ``\texttt{deco 1}'' format contains the distance matrix between any pair of domains, whether they are terminal or not. Since there are roughly $2p$ non-terminal domains in a target architecture with $p$ terminal domains, because all domains form a binary tree whose leaves are the terminal domains, the distance matrix of a ``\texttt{deco 1}'' format is in $\Theta(2p^2)$, that is, four times that of the corresponding ``\texttt{deco 0}'' file. Also, while the ``\texttt{deco 0}'' format lists only the characteristics of terminal domains (in terms of weights and labels), the ``\texttt{deco 1}'' format provides these for all domains, so as to speed-up the retrieval of the size, weight and label of any domain, whether it is terminal or not. The ``\texttt{deco 1}'' header is followed by two integer numbers, which are the number of processors and the largest terminal number used in the decomposition, respectively (just as for ``\texttt{deco 0}'' files). Two arrays follow. The first array has as many lines as there are domains (and not only terminal domains as in the case of ``\texttt{deco 0}'' files). Each of these lines holds three numbers: the label of the terminal domain that is associated with this domain (which is the label of the terminal domain of smallest number contained in this domain), the size of the domain, and the weight of the domain. The first domain in the array is the initial domain holding all the processors, that is, domain $1$. The other domains in the array are the resulting subdomains, in ascending domain number order, such that the two subdomains of a given domain of number $i$ are numbered $2i$ and $2i+1$. The second array is a lower triangular diagonal-less matrix that gives the distance between all pairs of domains. For instance, Figure~\ref{fig-file-targetdeco-zero} and Figure~\ref{fig-file-targetdeco-one} show the contents of the ``\texttt{deco 0}'' and ``\texttt{deco 1}'' architecture decomposition files for $\UB(2,3)$, the binary de~Bruijn graph of dimension~$3$, as computed by the \texttt{amk\_grf} program. \begin{figure}[hbt] \begin{tabular}{p{0.69\linewidth}@{}p{0.29\linewidth}} \begin{center} \parbox[t]{0.9\linewidth}{\vspace{0pt}\includegraphics[width=0.7\linewidth]{s_f_d.ps}} \end{center} & \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} deco 0 8 15 0 1 15 1 1 14 2 1 13 3 1 11 4 1 12 5 1 9 6 1 8 7 1 10 1 2 1 2 1 2 1 1 1 2 3 2 1 1 2 2 2 2 1 1 1 3 2 3 1 2 2 1 \end{verbatim} } \end{center} \end{tabular} \caption{``\texttt{deco 0}'' target decomposition file for $\UB(2,3)$. The terminal numbers associated with every processor define a unique recursive bipartitioning of the target graph.} \label{fig-file-targetdeco-zero} \end{figure} \begin{figure}[hbt] \begin{tabular}{p{0.49\linewidth}@{}p{0.49\linewidth}} \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} deco 1 8 15 0 8 8 3 4 4 0 4 4 5 2 2 3 2 2 2 2 2 0 2 2 6 1 1 5 1 1 7 1 1 3 1 1 4 1 1 2 1 1 1 1 1 0 1 1 \end{verbatim} } \end{center} & \begin{center} {\renewcommand{\baselinestretch}{1.05} \footnotesize\tt \begin{verbatim} 2 2 2 2 1 2 2 1 3 1 2 2 1 2 2 2 3 1 2 2 1 2 1 2 1 1 2 2 3 2 3 1 2 2 3 1 3 2 3 2 1 3 3 1 2 2 1 2 1 1 2 2 1 1 1 2 2 1 2 2 1 1 1 2 2 2 3 3 2 2 3 1 2 2 1 3 2 1 2 2 1 2 2 1 1 2 2 2 1 1 1 3 3 2 3 3 2 1 2 3 3 2 1 2 1 \end{verbatim} } \end{center} \end{tabular} \caption{``\texttt{deco 1}'' target decomposition file for $\UB(2,3)$, compiled with the \texttt{acpl} tool from the ``\texttt{deco 0}'' file displayed in Figure~\ref{fig-file-targetdeco-zero}.} \label{fig-file-targetdeco-one} \end{figure} scotch_6.0.9/doc/src/scotch/s_f_me2.eps0000644000302600021200000007465213322403377020141 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Mon May 3 15:33:42 2004 %%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 523 488 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 488 moveto 0 0 lineto 523 0 lineto 523 488 lineto closepath clip newpath -36.0 522.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 60 % Polyline 2 slj n 7275 1800 m 7252 1765 l 7229 1730 l 7207 1696 l 7186 1665 l 7168 1638 l 7151 1613 l 7137 1592 l 7125 1574 l 7114 1558 l 7105 1545 l 7096 1533 l 7089 1523 l 7081 1512 l 7074 1502 l 7066 1492 l 7058 1480 l 7049 1466 l 7039 1450 l 7027 1430 l 7013 1408 l 6998 1381 l 6981 1351 l 6962 1317 l 6942 1280 l 6921 1240 l 6900 1200 l 6875 1149 l 6854 1101 l 6836 1059 l 6823 1022 l 6814 990 l 6808 963 l 6805 941 l 6804 921 l 6805 903 l 6806 887 l 6808 872 l 6809 857 l 6809 842 l 6807 827 l 6804 810 l 6798 794 l 6789 778 l 6778 764 l 6765 754 l 6750 750 l 6735 754 l 6722 764 l 6710 778 l 6701 794 l 6695 810 l 6691 827 l 6688 842 l 6687 857 l 6687 872 l 6688 888 l 6688 903 l 6687 921 l 6686 941 l 6682 963 l 6677 990 l 6668 1022 l 6656 1059 l 6640 1101 l 6622 1149 l 6600 1200 l 6581 1244 l 6562 1286 l 6544 1326 l 6528 1362 l 6514 1393 l 6502 1419 l 6492 1442 l 6484 1461 l 6478 1476 l 6472 1490 l 6467 1502 l 6462 1513 l 6458 1523 l 6453 1535 l 6447 1548 l 6439 1563 l 6430 1581 l 6419 1602 l 6405 1627 l 6389 1656 l 6370 1688 l 6348 1724 l 6325 1762 l 6300 1800 l 6270 1843 l 6242 1881 l 6215 1914 l 6190 1940 l 6168 1960 l 6148 1976 l 6129 1987 l 6112 1995 l 6096 2001 l 6081 2006 l 6067 2011 l 6053 2015 l 6039 2020 l 6026 2027 l 6014 2036 l 6004 2047 l 5996 2059 l 5992 2073 l 5993 2087 l 6000 2100 l 6013 2109 l 6031 2114 l 6051 2117 l 6071 2118 l 6092 2117 l 6111 2114 l 6129 2110 l 6146 2105 l 6163 2100 l 6178 2094 l 6194 2087 l 6210 2081 l 6227 2074 l 6246 2068 l 6268 2061 l 6292 2055 l 6321 2049 l 6354 2043 l 6391 2038 l 6433 2033 l 6478 2029 l 6525 2025 l 6572 2022 l 6617 2019 l 6656 2017 l 6690 2016 l 6718 2015 l 6740 2014 l 6757 2013 l 6770 2013 l 6780 2013 l 6787 2013 l 6794 2013 l 6800 2013 l 6808 2013 l 6817 2013 l 6830 2013 l 6846 2014 l 6867 2015 l 6894 2016 l 6926 2017 l 6964 2019 l 7006 2022 l 7050 2025 l 7098 2029 l 7143 2034 l 7182 2039 l 7217 2045 l 7246 2052 l 7271 2059 l 7291 2066 l 7309 2073 l 7324 2080 l 7338 2088 l 7351 2094 l 7364 2101 l 7378 2107 l 7394 2112 l 7410 2116 l 7429 2118 l 7448 2118 l 7468 2115 l 7486 2109 l 7500 2100 l 7509 2086 l 7511 2070 l 7508 2055 l 7503 2042 l 7495 2031 l 7486 2022 l 7477 2016 l 7467 2011 l 7456 2006 l 7445 2001 l 7433 1994 l 7419 1984 l 7402 1969 l 7384 1949 l 7362 1923 l 7336 1889 l 7307 1848 l cp gs 0.80 setgray ef gr % Polyline n 7275 2400 m 7252 2435 l 7229 2470 l 7207 2504 l 7186 2535 l 7168 2562 l 7151 2587 l 7137 2608 l 7125 2626 l 7114 2642 l 7105 2655 l 7096 2667 l 7089 2677 l 7081 2688 l 7074 2698 l 7066 2708 l 7058 2720 l 7049 2734 l 7039 2750 l 7027 2770 l 7013 2792 l 6998 2819 l 6981 2849 l 6962 2883 l 6942 2920 l 6921 2960 l 6900 3000 l 6875 3051 l 6854 3099 l 6836 3141 l 6823 3178 l 6814 3210 l 6808 3237 l 6805 3259 l 6804 3279 l 6805 3297 l 6806 3313 l 6808 3328 l 6809 3343 l 6809 3358 l 6807 3373 l 6804 3390 l 6798 3406 l 6789 3422 l 6778 3436 l 6765 3446 l 6750 3450 l 6735 3446 l 6722 3436 l 6710 3422 l 6701 3406 l 6695 3390 l 6691 3373 l 6688 3358 l 6687 3343 l 6687 3328 l 6688 3312 l 6688 3297 l 6687 3279 l 6686 3259 l 6682 3237 l 6677 3210 l 6668 3178 l 6656 3141 l 6640 3099 l 6622 3051 l 6600 3000 l 6581 2956 l 6562 2914 l 6544 2874 l 6528 2838 l 6514 2807 l 6502 2781 l 6492 2758 l 6484 2739 l 6478 2724 l 6472 2710 l 6467 2698 l 6462 2687 l 6458 2677 l 6453 2665 l 6447 2652 l 6439 2637 l 6430 2619 l 6419 2598 l 6405 2573 l 6389 2544 l 6370 2512 l 6348 2476 l 6325 2438 l 6300 2400 l 6270 2357 l 6242 2319 l 6215 2286 l 6190 2260 l 6168 2240 l 6148 2224 l 6129 2213 l 6112 2205 l 6096 2199 l 6081 2194 l 6067 2189 l 6053 2185 l 6039 2180 l 6026 2173 l 6014 2164 l 6004 2153 l 5996 2141 l 5992 2127 l 5993 2113 l 6000 2100 l 6013 2091 l 6031 2086 l 6051 2083 l 6071 2082 l 6092 2083 l 6111 2086 l 6129 2090 l 6146 2095 l 6163 2100 l 6178 2106 l 6194 2113 l 6210 2119 l 6227 2126 l 6246 2132 l 6268 2139 l 6292 2145 l 6321 2151 l 6354 2157 l 6391 2162 l 6433 2167 l 6478 2171 l 6525 2175 l 6572 2178 l 6617 2181 l 6656 2183 l 6690 2184 l 6718 2185 l 6740 2186 l 6757 2187 l 6770 2187 l 6780 2187 l 6787 2187 l 6794 2187 l 6800 2187 l 6808 2187 l 6817 2187 l 6830 2187 l 6846 2186 l 6867 2185 l 6894 2184 l 6926 2183 l 6964 2181 l 7006 2178 l 7050 2175 l 7098 2171 l 7143 2166 l 7182 2161 l 7217 2155 l 7246 2148 l 7271 2141 l 7291 2134 l 7309 2127 l 7324 2120 l 7338 2112 l 7351 2106 l 7364 2099 l 7378 2093 l 7394 2088 l 7410 2084 l 7429 2082 l 7448 2082 l 7468 2085 l 7486 2091 l 7500 2100 l 7509 2114 l 7511 2130 l 7508 2145 l 7503 2158 l 7495 2169 l 7486 2178 l 7477 2184 l 7467 2189 l 7456 2194 l 7445 2199 l 7433 2206 l 7419 2216 l 7402 2231 l 7384 2251 l 7362 2277 l 7336 2311 l 7307 2352 l cp gs 0.80 setgray ef gr % Polyline n 6525 3150 m 6502 3115 l 6479 3080 l 6457 3046 l 6436 3015 l 6418 2988 l 6401 2963 l 6387 2942 l 6375 2924 l 6364 2908 l 6355 2895 l 6346 2883 l 6339 2873 l 6331 2862 l 6324 2852 l 6316 2842 l 6308 2830 l 6299 2816 l 6289 2800 l 6277 2780 l 6263 2758 l 6248 2731 l 6231 2701 l 6212 2667 l 6192 2630 l 6171 2590 l 6150 2550 l 6125 2499 l 6104 2451 l 6086 2409 l 6073 2372 l 6064 2340 l 6058 2313 l 6055 2291 l 6054 2271 l 6055 2253 l 6056 2237 l 6058 2222 l 6059 2207 l 6059 2192 l 6057 2177 l 6054 2160 l 6048 2144 l 6039 2128 l 6028 2114 l 6015 2104 l 6000 2100 l 5985 2104 l 5972 2114 l 5960 2128 l 5951 2144 l 5945 2160 l 5941 2177 l 5938 2192 l 5937 2207 l 5937 2222 l 5938 2238 l 5938 2253 l 5937 2271 l 5936 2291 l 5932 2313 l 5927 2340 l 5918 2372 l 5906 2409 l 5890 2451 l 5872 2499 l 5850 2550 l 5831 2594 l 5812 2636 l 5794 2676 l 5778 2712 l 5764 2743 l 5752 2769 l 5742 2792 l 5734 2811 l 5728 2826 l 5722 2840 l 5717 2852 l 5712 2863 l 5708 2873 l 5703 2885 l 5697 2898 l 5689 2913 l 5680 2931 l 5669 2952 l 5655 2977 l 5639 3006 l 5620 3038 l 5598 3074 l 5575 3112 l 5550 3150 l 5520 3193 l 5492 3231 l 5465 3264 l 5440 3290 l 5418 3310 l 5398 3326 l 5379 3337 l 5362 3345 l 5346 3351 l 5331 3356 l 5317 3361 l 5303 3365 l 5289 3370 l 5276 3377 l 5264 3386 l 5254 3397 l 5246 3409 l 5242 3423 l 5243 3437 l 5250 3450 l 5263 3459 l 5281 3464 l 5301 3467 l 5321 3468 l 5342 3467 l 5361 3464 l 5379 3460 l 5396 3455 l 5413 3450 l 5428 3444 l 5444 3437 l 5460 3431 l 5477 3424 l 5496 3418 l 5518 3411 l 5542 3405 l 5571 3399 l 5604 3393 l 5641 3388 l 5683 3383 l 5728 3379 l 5775 3375 l 5822 3372 l 5867 3369 l 5906 3367 l 5940 3366 l 5968 3365 l 5990 3364 l 6007 3363 l 6020 3363 l 6030 3363 l 6037 3363 l 6044 3363 l 6050 3363 l 6058 3363 l 6067 3363 l 6080 3363 l 6096 3364 l 6117 3365 l 6144 3366 l 6176 3367 l 6214 3369 l 6256 3372 l 6300 3375 l 6348 3379 l 6393 3384 l 6432 3389 l 6467 3395 l 6496 3402 l 6521 3409 l 6541 3416 l 6559 3423 l 6574 3430 l 6588 3438 l 6601 3444 l 6614 3451 l 6628 3457 l 6644 3462 l 6660 3466 l 6679 3468 l 6698 3468 l 6718 3465 l 6736 3459 l 6750 3450 l 6759 3436 l 6761 3420 l 6758 3405 l 6753 3392 l 6745 3381 l 6736 3372 l 6727 3366 l 6717 3361 l 6706 3356 l 6695 3351 l 6683 3344 l 6669 3334 l 6652 3319 l 6634 3299 l 6612 3273 l 6586 3239 l 6557 3198 l cp gs 0.80 setgray ef gr % Polyline n 8025 3150 m 8002 3115 l 7979 3080 l 7957 3046 l 7936 3015 l 7918 2988 l 7901 2963 l 7887 2942 l 7875 2924 l 7864 2908 l 7855 2895 l 7846 2883 l 7839 2873 l 7831 2862 l 7824 2852 l 7816 2842 l 7808 2830 l 7799 2816 l 7789 2800 l 7777 2780 l 7763 2758 l 7748 2731 l 7731 2701 l 7712 2667 l 7692 2630 l 7671 2590 l 7650 2550 l 7625 2499 l 7604 2451 l 7586 2409 l 7573 2372 l 7564 2340 l 7558 2313 l 7555 2291 l 7554 2271 l 7555 2253 l 7556 2237 l 7558 2222 l 7559 2207 l 7559 2192 l 7557 2177 l 7554 2160 l 7548 2144 l 7539 2128 l 7528 2114 l 7515 2104 l 7500 2100 l 7485 2104 l 7472 2114 l 7460 2128 l 7451 2144 l 7445 2160 l 7441 2177 l 7438 2192 l 7437 2207 l 7437 2222 l 7438 2238 l 7438 2253 l 7437 2271 l 7436 2291 l 7432 2313 l 7427 2340 l 7418 2372 l 7406 2409 l 7390 2451 l 7372 2499 l 7350 2550 l 7331 2594 l 7312 2636 l 7294 2676 l 7278 2712 l 7264 2743 l 7252 2769 l 7242 2792 l 7234 2811 l 7228 2826 l 7222 2840 l 7217 2852 l 7212 2863 l 7208 2873 l 7203 2885 l 7197 2898 l 7189 2913 l 7180 2931 l 7169 2952 l 7155 2977 l 7139 3006 l 7120 3038 l 7098 3074 l 7075 3112 l 7050 3150 l 7020 3193 l 6992 3231 l 6965 3264 l 6940 3290 l 6918 3310 l 6898 3326 l 6879 3337 l 6862 3345 l 6846 3351 l 6831 3356 l 6817 3361 l 6803 3365 l 6789 3370 l 6776 3377 l 6764 3386 l 6754 3397 l 6746 3409 l 6742 3423 l 6743 3437 l 6750 3450 l 6763 3459 l 6781 3464 l 6801 3467 l 6821 3468 l 6842 3467 l 6861 3464 l 6879 3460 l 6896 3455 l 6913 3450 l 6928 3444 l 6944 3437 l 6960 3431 l 6977 3424 l 6996 3418 l 7018 3411 l 7042 3405 l 7071 3399 l 7104 3393 l 7141 3388 l 7183 3383 l 7228 3379 l 7275 3375 l 7322 3372 l 7367 3369 l 7406 3367 l 7440 3366 l 7468 3365 l 7490 3364 l 7507 3363 l 7520 3363 l 7530 3363 l 7537 3363 l 7544 3363 l 7550 3363 l 7558 3363 l 7567 3363 l 7580 3363 l 7596 3364 l 7617 3365 l 7644 3366 l 7676 3367 l 7714 3369 l 7756 3372 l 7800 3375 l 7848 3379 l 7893 3384 l 7932 3389 l 7967 3395 l 7996 3402 l 8021 3409 l 8041 3416 l 8059 3423 l 8074 3430 l 8088 3438 l 8101 3444 l 8114 3451 l 8128 3457 l 8144 3462 l 8160 3466 l 8179 3468 l 8198 3468 l 8218 3465 l 8236 3459 l 8250 3450 l 8259 3436 l 8261 3420 l 8258 3405 l 8253 3392 l 8245 3381 l 8236 3372 l 8227 3366 l 8217 3361 l 8206 3356 l 8195 3351 l 8183 3344 l 8169 3334 l 8152 3319 l 8134 3299 l 8112 3273 l 8086 3239 l 8057 3198 l cp gs 0.80 setgray ef gr % here ends figure; % % here starts figure with depth 50 % Polyline 7.500 slw n 6750 750 m 6750 1650 l 6000 2100 l 6750 2625 l 6750 3450 l 6000 3000 l 5250 3450 l gs col0 s gr % Polyline n 6750 1650 m 7500 2100 l 6750 2625 l gs col0 s gr % Polyline n 6000 2100 m 6000 3000 l gs col0 s gr % Polyline n 7500 2100 m 7500 3000 l 6750 3450 l gs col0 s gr % Polyline n 7500 3000 m 8325 3450 l gs col0 s gr % here ends figure; % % here starts figure with depth 20 % Polyline 7.500 slw [15 45] 45 sd n 1800 3600 m 2100 3600 l 2100 3900 l 1800 3900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 3600 m 1800 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 3600 m 2100 3900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4200 l 2100 4500 l 1800 4500 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 4200 m 1800 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 2100 4500 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 6600 m 9300 6600 l 9300 6900 l 9000 6900 l cp gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9300 6600 m 9000 6900 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 9000 6600 m 9300 6900 l gs col0 s gr [] 0 sd % Polyline gs clippath 3180 6885 m 3120 6885 l 3120 7036 l 3150 6916 l 3180 7036 l cp eoclip n 2250 8400 m 2250 7275 l 3150 7275 l 3150 6900 l gs col0 s gr gr % arrowhead n 3180 7036 m 3150 6916 l 3120 7036 l 3180 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5220 6615 m 5280 6615 l 5280 6464 l 5250 6584 l 5220 6464 l cp eoclip n 3450 5100 m 3450 6075 l 5250 6075 l 5250 6600 l gs col0 s gr gr % arrowhead n 5220 6464 m 5250 6584 l 5280 6464 l 5220 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4020 6615 m 4080 6615 l 4080 6464 l 4050 6584 l 4020 6464 l cp eoclip n 2850 5100 m 2850 6225 l 4050 6225 l 4050 6600 l gs col0 s gr gr % arrowhead n 4020 6464 m 4050 6584 l 4080 6464 l 4020 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3120 6615 m 3180 6615 l 3180 6464 l 3150 6584 l 3120 6464 l cp eoclip n 2550 5100 m 2550 6300 l 3150 6300 l 3150 6600 l gs col0 s gr gr % arrowhead n 3120 6464 m 3150 6584 l 3180 6464 l 3120 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6420 6615 m 6480 6615 l 6480 6464 l 6450 6584 l 6420 6464 l cp eoclip n 5250 5100 m 5250 5925 l 6450 5925 l 6450 6600 l gs col0 s gr gr % arrowhead n 6420 6464 m 6450 6584 l 6480 6464 l 6420 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2280 6885 m 2220 6885 l 2220 7036 l 2250 6916 l 2280 7036 l cp eoclip n 1950 8400 m 1950 7200 l 2250 7200 l 2250 6900 l gs col0 s gr gr % arrowhead n 2280 7036 m 2250 6916 l 2220 7036 l 2280 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4320 6615 m 4380 6615 l 4380 6464 l 4350 6584 l 4320 6464 l cp eoclip n 3150 5100 m 3150 6150 l 4350 6150 l 4350 6600 l gs col0 s gr gr % arrowhead n 4320 6464 m 4350 6584 l 4380 6464 l 4320 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7320 6615 m 7380 6615 l 7380 6464 l 7350 6584 l 7320 6464 l cp eoclip n 5550 5100 m 5550 5850 l 7350 5850 l 7350 6600 l gs col0 s gr gr % arrowhead n 7320 6464 m 7350 6584 l 7380 6464 l 7320 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8220 6615 m 8280 6615 l 8280 6464 l 8250 6584 l 8220 6464 l cp eoclip n 5850 5100 m 5850 5775 l 8250 5775 l 8250 6600 l gs col0 s gr gr % arrowhead n 8220 6464 m 8250 6584 l 8280 6464 l 8220 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5580 6885 m 5520 6885 l 5520 7036 l 5550 6916 l 5580 7036 l cp eoclip n 3450 8400 m 3450 7575 l 5550 7575 l 5550 6900 l gs col0 s gr gr % arrowhead n 5580 7036 m 5550 6916 l 5520 7036 l 5580 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5280 6885 m 5220 6885 l 5220 7036 l 5250 6916 l 5280 7036 l cp eoclip n 3150 8400 m 3150 7500 l 5250 7500 l 5250 6900 l gs col0 s gr gr % arrowhead n 5280 7036 m 5250 6916 l 5220 7036 l 5280 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4380 6885 m 4320 6885 l 4320 7036 l 4350 6916 l 4380 7036 l cp eoclip n 2850 8400 m 2850 7425 l 4350 7425 l 4350 6900 l gs col0 s gr gr % arrowhead n 4380 7036 m 4350 6916 l 4320 7036 l 4380 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4080 6885 m 4020 6885 l 4020 7036 l 4050 6916 l 4080 7036 l cp eoclip n 2550 8400 m 2550 7350 l 4050 7350 l 4050 6900 l gs col0 s gr gr % arrowhead n 4080 7036 m 4050 6916 l 4020 7036 l 4080 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7380 6885 m 7320 6885 l 7320 7036 l 7350 6916 l 7380 7036 l cp eoclip n 5250 8400 m 5250 7725 l 7350 7725 l 7350 6900 l gs col0 s gr gr % arrowhead n 7380 7036 m 7350 6916 l 7320 7036 l 7380 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8280 6885 m 8220 6885 l 8220 7036 l 8250 6916 l 8280 7036 l cp eoclip n 5550 8400 m 5550 7800 l 8250 7800 l 8250 6900 l gs col0 s gr gr % arrowhead n 8280 7036 m 8250 6916 l 8220 7036 l 8280 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9180 6885 m 9120 6885 l 9120 7036 l 9150 6916 l 9180 7036 l cp eoclip n 5850 8400 m 5850 7875 l 9150 7875 l 9150 6900 l gs col0 s gr gr % arrowhead n 9180 7036 m 9150 6916 l 9120 7036 l 9180 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6480 6885 m 6420 6885 l 6420 7036 l 6450 6916 l 6480 7036 l cp eoclip n 4950 8400 m 4950 7650 l 6450 7650 l 6450 6900 l gs col0 s gr gr % arrowhead n 6480 7036 m 6450 6916 l 6420 7036 l 6480 7036 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5520 6615 m 5580 6615 l 5580 6464 l 5550 6584 l 5520 6464 l cp eoclip n 4950 5100 m 4950 6000 l 5550 6000 l 5550 6600 l gs col0 s gr gr % arrowhead n 5520 6464 m 5550 6584 l 5580 6464 l 5520 6464 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 600 3225 m gs 1 -1 sc (edgenbr) col0 sh gr /Courier ff 240.00 scf sf 600 3825 m gs 1 -1 sc (vlbltab) col0 sh gr /Courier ff 240.00 scf sf 600 4425 m gs 1 -1 sc (velotab) col0 sh gr /Courier ff 240.00 scf sf 600 2625 m gs 1 -1 sc (vnodnbr) col0 sh gr /Courier ff 240.00 scf sf 600 825 m gs 1 -1 sc (velmbas) col0 sh gr /Courier ff 240.00 scf sf 600 1425 m gs 1 -1 sc (vnodbas) col0 sh gr /Courier ff 240.00 scf sf 600 2025 m gs 1 -1 sc (velmnbr) col0 sh gr /Courier ff 240.00 scf sf 600 5025 m gs 1 -1 sc (verttab) col0 sh gr /Courier ff 240.00 scf sf 600 6825 m gs 1 -1 sc (edgetab) col0 sh gr /Courier ff 240.00 scf sf 600 8625 m gs 1 -1 sc (vendtab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 1800 3000 m 2100 3000 l 2100 3300 l 1800 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 3240 m gs 1 -1 sc (24) col0 sh gr % Polyline n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 1800 4800 m 2100 4800 l 2100 5100 l 1800 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 4800 m 2400 4800 l 2400 5100 l 2100 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 4800 m 2700 4800 l 2700 5100 l 2400 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 4800 m 3000 4800 l 3000 5100 l 2700 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 4800 m 3600 4800 l 3600 5100 l 3300 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 5040 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3000 4800 m 3300 4800 l 3300 5100 l 3000 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 4800 m 5100 4800 l 5100 5100 l 4800 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 5040 m gs 1 -1 sc (13) col0 sh gr % Polyline n 5100 4800 m 5400 4800 l 5400 5100 l 5100 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 5040 m gs 1 -1 sc (16) col0 sh gr % Polyline n 5400 4800 m 5700 4800 l 5700 5100 l 5400 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5425 5040 m gs 1 -1 sc (19) col0 sh gr % Polyline n 1800 8400 m 2100 8400 l 2100 8700 l 1800 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 8400 m 2400 8400 l 2400 8700 l 2100 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 8400 m 2700 8400 l 2700 8700 l 2400 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 8400 m 3000 8400 l 3000 8700 l 2700 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 8400 m 3300 8400 l 3300 8700 l 3000 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 8640 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3300 8400 m 3600 8400 l 3600 8700 l 3300 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 8640 m gs 1 -1 sc (13) col0 sh gr % Polyline n 4800 8400 m 5100 8400 l 5100 8700 l 4800 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 8640 m gs 1 -1 sc (16) col0 sh gr % Polyline n 5100 8400 m 5400 8400 l 5400 8700 l 5100 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 8640 m gs 1 -1 sc (19) col0 sh gr % Polyline n 5400 8400 m 5700 8400 l 5700 8700 l 5400 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5425 8640 m gs 1 -1 sc (22) col0 sh gr % Polyline n 5700 8400 m 6000 8400 l 6000 8700 l 5700 8700 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5725 8640 m gs 1 -1 sc (25) col0 sh gr % Polyline n 5700 4800 m 6000 4800 l 6000 5100 l 5700 5100 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5725 5040 m gs 1 -1 sc (22) col0 sh gr % Polyline n 1800 6600 m 2100 6600 l 2100 6900 l 1800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2100 6600 m 2400 6600 l 2400 6900 l 2100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2125 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 2400 6600 m 2700 6600 l 2700 6900 l 2400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 2700 6600 m 3000 6600 l 3000 6900 l 2700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3000 6600 m 3300 6600 l 3300 6900 l 3000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 6840 m gs 1 -1 sc (11) col0 sh gr % Polyline n 3300 6600 m 3600 6600 l 3600 6900 l 3300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 3600 6600 m 3900 6600 l 3900 6900 l 3600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 3900 6600 m 4200 6600 l 4200 6900 l 3900 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3925 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 4200 6600 m 4500 6600 l 4500 6900 l 4200 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4225 6840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 4500 6600 m 4800 6600 l 4800 6900 l 4500 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4525 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 4800 6600 m 5100 6600 l 5100 6900 l 4800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 4825 6840 m gs 1 -1 sc (12) col0 sh gr % Polyline n 5100 6600 m 5400 6600 l 5400 6900 l 5100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 5125 6840 m gs 1 -1 sc (14) col0 sh gr % Polyline n 5400 6600 m 5700 6600 l 5700 6900 l 5400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 6600 m 6000 6600 l 6000 6900 l 5700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 6600 m 6300 6600 l 6300 6900 l 6000 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6300 6600 m 6600 6600 l 6600 6900 l 6300 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 6600 m 6900 6600 l 6900 6900 l 6600 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 6600 m 7200 6600 l 7200 6900 l 6900 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 6600 m 7500 6600 l 7500 6900 l 7200 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 6600 m 7800 6600 l 7800 6900 l 7500 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 6600 m 8100 6600 l 8100 6900 l 7800 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 6600 m 8400 6600 l 8400 6900 l 8100 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 6600 m 8700 6600 l 8700 6900 l 8400 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 6600 m 9000 6600 l 9000 6900 l 8700 6900 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 4800 m 3900 4800 l 3900 5100 l 3600 5100 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 3900 4800 m 4200 4800 l 4200 5100 l 3900 5100 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 4200 4800 m 4500 4800 l 4500 5100 l 4200 5100 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 4500 4800 m 4800 4800 l 4800 5100 l 4500 5100 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 3600 8400 m 3900 8400 l 3900 8700 l 3600 8700 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 3900 8400 m 4200 8400 l 4200 8700 l 3900 8700 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 4200 8400 m 4500 8400 l 4500 8700 l 4200 8700 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 4500 8400 m 4800 8400 l 4800 8700 l 4500 8700 l cp gs 0.85 setgray ef gr gs col0 s gr % Polyline n 1800 1200 m 2100 1200 l 2100 1500 l 1800 1500 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 1800 m 2100 1800 l 2100 2100 l 1800 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 2400 m 2100 2400 l 2100 2700 l 1800 2700 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 1920 6615 m 1980 6615 l 1980 6464 l 1950 6584 l 1920 6464 l cp eoclip n 1950 5100 m 1950 6600 l gs col0 s gr gr % arrowhead n 1920 6464 m 1950 6584 l 1980 6464 l 1920 6464 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2220 6615 m 2280 6615 l 2280 6464 l 2250 6584 l 2220 6464 l cp eoclip n 2250 5100 m 2250 6600 l gs col0 s gr gr % arrowhead n 2220 6464 m 2250 6584 l 2280 6464 l 2220 6464 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 12 % Ellipse 7.500 slw n 6757 2618 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6750 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6007 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7507 2993 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6750 750 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 2100 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6750 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8325 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 1900 5040 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 5040 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 5040 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 5040 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 5040 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 8640 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 8640 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 8640 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 8640 m gs 1 -1 sc (9) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 6840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 6400 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 6840 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 6840 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 6840 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 6840 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 6840 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 840 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5950 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7450 2190 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 3540 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 3540 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8275 3540 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 5040 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 5040 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 5040 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 5040 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 8640 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4000 8640 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4300 8640 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 8640 m gs 1 -1 sc (0) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 1440 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2640 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 1900 2040 m gs 1 -1 sc (4) col0 sh gr % here ends figure; % % here starts figure with depth 8 /Times-Roman ff 240.00 scf sf 6627 2708 m gs 1 -1 sc (12) col0 sh gr /Times-Roman ff 240.00 scf sf 6620 1740 m gs 1 -1 sc (11) col0 sh gr /Times-Roman ff 240.00 scf sf 5877 3083 m gs 1 -1 sc (13) col0 sh gr /Times-Roman ff 240.00 scf sf 7377 3083 m gs 1 -1 sc (14) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_ruy.eps0000644000302600021200000004235713322403377020272 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:27 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 357 319 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 319 moveto 0 0 lineto 357 0 lineto 357 319 lineto closepath clip newpath -58.0 360.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1800 1200 m 6000 1200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 1800 m 6000 1800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 3000 m 6000 3000 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 3600 m 6000 3600 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4200 m 6000 4200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 2400 m 6000 2400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 4800 m 6000 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 5400 m 6000 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1800 1200 m 1800 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2400 1200 m 2400 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3000 1200 m 3000 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3600 1200 m 3600 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4200 1200 m 4200 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4800 1200 m 4800 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5400 1200 m 5400 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6000 1200 m 6000 5400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 5550 m 1950 5250 l 1650 5250 l 1650 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 4950 m 1950 4650 l 1650 4650 l 1650 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 4350 m 1950 4050 l 1650 4050 l 1650 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 3750 m 1950 3450 l 1650 3450 l 1650 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 3150 m 1950 2850 l 1650 2850 l 1650 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 2550 m 1950 2250 l 1650 2250 l 1650 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 1950 m 1950 1650 l 1650 1650 l 1650 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1950 1350 m 1950 1050 l 1650 1050 l 1650 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 5550 m 2550 5250 l 2250 5250 l 2250 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 4950 m 2550 4650 l 2250 4650 l 2250 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 4350 m 2550 4050 l 2250 4050 l 2250 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 3750 m 2550 3450 l 2250 3450 l 2250 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 3150 m 2550 2850 l 2250 2850 l 2250 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 2550 m 2550 2250 l 2250 2250 l 2250 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 1950 m 2550 1650 l 2250 1650 l 2250 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2550 1350 m 2550 1050 l 2250 1050 l 2250 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 5550 m 3750 5250 l 3450 5250 l 3450 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 4950 m 3750 4650 l 3450 4650 l 3450 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 4350 m 3750 4050 l 3450 4050 l 3450 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 3750 m 3750 3450 l 3450 3450 l 3450 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 3150 m 3750 2850 l 3450 2850 l 3450 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 2550 m 3750 2250 l 3450 2250 l 3450 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 1950 m 3750 1650 l 3450 1650 l 3450 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3750 1350 m 3750 1050 l 3450 1050 l 3450 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 5550 m 4350 5250 l 4050 5250 l 4050 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 4950 m 4350 4650 l 4050 4650 l 4050 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 4350 m 4350 4050 l 4050 4050 l 4050 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 3750 m 4350 3450 l 4050 3450 l 4050 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 3150 m 4350 2850 l 4050 2850 l 4050 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 2550 m 4350 2250 l 4050 2250 l 4050 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 1950 m 4350 1650 l 4050 1650 l 4050 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4350 1350 m 4350 1050 l 4050 1050 l 4050 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 5550 m 4950 5250 l 4650 5250 l 4650 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 4950 m 4950 4650 l 4650 4650 l 4650 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 4350 m 4950 4050 l 4650 4050 l 4650 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 3750 m 4950 3450 l 4650 3450 l 4650 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 3150 m 4950 2850 l 4650 2850 l 4650 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 2550 m 4950 2250 l 4650 2250 l 4650 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 1950 m 4950 1650 l 4650 1650 l 4650 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4950 1350 m 4950 1050 l 4650 1050 l 4650 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 5550 m 5550 5250 l 5250 5250 l 5250 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 4950 m 5550 4650 l 5250 4650 l 5250 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 4350 m 5550 4050 l 5250 4050 l 5250 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 3750 m 5550 3450 l 5250 3450 l 5250 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 3150 m 5550 2850 l 5250 2850 l 5250 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 2550 m 5550 2250 l 5250 2250 l 5250 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 1950 m 5550 1650 l 5250 1650 l 5250 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5550 1350 m 5550 1050 l 5250 1050 l 5250 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 5550 m 6150 5250 l 5850 5250 l 5850 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 4950 m 6150 4650 l 5850 4650 l 5850 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 4350 m 6150 4050 l 5850 4050 l 5850 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 3750 m 6150 3450 l 5850 3450 l 5850 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 3150 m 6150 2850 l 5850 2850 l 5850 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 2550 m 6150 2250 l 5850 2250 l 5850 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 1950 m 6150 1650 l 5850 1650 l 5850 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 6150 1350 m 6150 1050 l 5850 1050 l 5850 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 5550 m 3150 5250 l 2850 5250 l 2850 5550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 4950 m 3150 4650 l 2850 4650 l 2850 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 4350 m 3150 4050 l 2850 4050 l 2850 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 3750 m 3150 3450 l 2850 3450 l 2850 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 3150 m 3150 2850 l 2850 2850 l 2850 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 2550 m 3150 2250 l 2850 2250 l 2850 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 1950 m 3150 1650 l 2850 1650 l 2850 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3150 1350 m 3150 1050 l 2850 1050 l 2850 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline 15.000 slw [90] 0 sd n 2700 1050 m 2700 3150 l gs col-1 s gr [] 0 sd % Polyline n 2625 3150 m 2775 3150 l gs col-1 s gr % Polyline n 2625 1050 m 2775 1050 l gs col-1 s gr % Polyline [90] 0 sd n 5100 3450 m 5100 5550 l gs col-1 s gr [] 0 sd % Polyline n 5025 5550 m 5175 5550 l gs col-1 s gr % Polyline n 5025 3450 m 5175 3450 l gs col-1 s gr 7.500 slw % Ellipse n 2100 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 5700 2100 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2100 5100 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4500 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline n 5280 975 m 5175 975 5175 3120 105 arcto 4 {pop} repeat 5175 3225 6120 3225 105 arcto 4 {pop} repeat 6225 3225 6225 1080 105 arcto 4 {pop} repeat 6225 975 5280 975 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 2700 3450 m 2700 5550 l gs col-1 s gr [] 0 sd % Polyline [90] 0 sd n 5100 3150 m 5100 1050 l gs col-1 s gr [] 0 sd % Polyline [90] 0 sd n 3750 3300 m 1650 3300 l gs col-1 s gr [] 0 sd % Polyline [90] 0 sd n 3900 1050 m 3900 5550 l gs col-1 s gr [] 0 sd % Polyline [90] 0 sd n 4050 3300 m 6150 3300 l gs col-1 s gr [] 0 sd % Polyline [90] 0 sd n 2550 4500 m 1650 4500 l gs col-1 s gr [] 0 sd % Polyline n 3825 1050 m 3975 1050 l gs col-1 s gr % Polyline n 3750 3225 m 3750 3375 l gs col-1 s gr % Polyline n 1650 3225 m 1650 3375 l gs col-1 s gr % Polyline n 4050 3225 m 4050 3375 l gs col-1 s gr % Polyline n 6150 3225 m 6150 3375 l gs col-1 s gr % Polyline n 5025 3150 m 5175 3150 l gs col-1 s gr % Polyline n 5025 1050 m 5175 1050 l gs col-1 s gr % Polyline n 2550 4425 m 2550 4575 l gs col-1 s gr % Polyline n 2625 3450 m 2775 3450 l gs col-1 s gr % Polyline n 2625 5550 m 2775 5550 l gs col-1 s gr % Polyline n 1680 3375 m 1575 3375 1575 5520 105 arcto 4 {pop} repeat 1575 5625 2520 5625 105 arcto 4 {pop} repeat 2625 5625 2625 3480 105 arcto 4 {pop} repeat 2625 3375 1680 3375 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2625 3450 m 2775 3450 l gs col-1 s gr % Polyline n 3825 5550 m 3975 5550 l gs col-1 s gr % Polyline n 1650 4425 m 1650 4575 l gs col-1 s gr % Polyline 7.500 slw n 4080 3375 m 3975 3375 3975 5520 105 arcto 4 {pop} repeat 3975 5625 4920 5625 105 arcto 4 {pop} repeat 5025 5625 5025 3480 105 arcto 4 {pop} repeat 5025 3375 4080 3375 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline 2 slj 15.000 slw n 2100 3900 m 2101 3900 l 2102 3902 l 2104 3904 l 2108 3907 l 2114 3911 l 2121 3917 l 2131 3925 l 2143 3933 l 2157 3944 l 2173 3955 l 2191 3968 l 2212 3981 l 2234 3995 l 2258 4010 l 2284 4025 l 2312 4040 l 2341 4055 l 2372 4069 l 2404 4082 l 2437 4094 l 2472 4105 l 2508 4115 l 2545 4122 l 2584 4128 l 2624 4132 l 2667 4133 l 2711 4131 l 2758 4127 l 2807 4119 l 2859 4107 l 2913 4092 l 2971 4072 l 3031 4048 l 3095 4019 l 3161 3984 l 3230 3945 l 3300 3900 l 3356 3861 l 3412 3820 l 3468 3777 l 3521 3733 l 3572 3688 l 3621 3643 l 3668 3599 l 3711 3555 l 3751 3513 l 3789 3471 l 3823 3430 l 3855 3391 l 3884 3353 l 3910 3316 l 3934 3280 l 3955 3246 l 3975 3213 l 3992 3180 l 4008 3149 l 4023 3118 l 4037 3088 l 4050 3059 l 4063 3029 l 4075 3000 l 4087 2971 l 4100 2941 l 4112 2912 l 4126 2882 l 4140 2851 l 4156 2820 l 4173 2787 l 4192 2754 l 4213 2720 l 4236 2684 l 4260 2647 l 4288 2609 l 4318 2570 l 4350 2529 l 4386 2487 l 4424 2445 l 4464 2401 l 4507 2357 l 4553 2312 l 4600 2267 l 4649 2223 l 4699 2180 l 4750 2139 l 4800 2100 l 4862 2055 l 4922 2016 l 4979 1981 l 5033 1952 l 5083 1928 l 5130 1908 l 5174 1893 l 5215 1881 l 5254 1873 l 5290 1869 l 5323 1867 l 5355 1868 l 5385 1872 l 5413 1878 l 5439 1885 l 5464 1895 l 5488 1906 l 5510 1918 l 5531 1931 l 5551 1945 l 5570 1960 l 5588 1975 l 5604 1990 l 5619 2005 l 5633 2019 l 5646 2032 l 5657 2045 l 5667 2056 l 5675 2067 l 5682 2075 l 5687 2083 l 5692 2089 l 5695 2093 l 5697 2096 l 5699 2098 l 5700 2100 l gs col-1 s gr % Polyline n 2100 5100 m 2101 5100 l 2103 5100 l 2107 5101 l 2114 5101 l 2123 5102 l 2135 5103 l 2150 5105 l 2169 5106 l 2191 5108 l 2217 5110 l 2245 5112 l 2276 5114 l 2310 5116 l 2346 5118 l 2384 5120 l 2424 5122 l 2466 5123 l 2509 5125 l 2553 5126 l 2598 5126 l 2644 5126 l 2692 5125 l 2741 5124 l 2791 5122 l 2842 5119 l 2895 5115 l 2949 5111 l 3006 5105 l 3064 5098 l 3124 5089 l 3186 5080 l 3251 5068 l 3316 5055 l 3383 5041 l 3450 5025 l 3520 5007 l 3588 4987 l 3652 4967 l 3714 4946 l 3772 4925 l 3827 4904 l 3878 4883 l 3927 4862 l 3972 4841 l 4016 4820 l 4057 4799 l 4095 4778 l 4133 4756 l 4168 4735 l 4202 4715 l 4235 4694 l 4266 4673 l 4295 4653 l 4323 4634 l 4349 4615 l 4374 4598 l 4396 4581 l 4417 4566 l 4435 4552 l 4450 4539 l 4464 4529 l 4475 4520 l 4484 4513 l 4490 4508 l 4495 4504 l 4498 4502 l 4499 4501 l 4500 4500 l gs col-1 s gr /Times-Roman ff 300.00 scf sf 1200 4575 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 300.00 scf sf 6375 3375 m gs 1 -1 sc (CL1) col-1 sh gr /Times-Roman ff 300.00 scf sf 4875 900 m gs 1 -1 sc (CL2) col-1 sh gr /Times-Roman ff 300.00 scf sf 3600 900 m gs 1 -1 sc (CL0) col-1 sh gr /Times-Roman ff 300.00 scf sf 975 3375 m gs 1 -1 sc (CL1) col-1 sh gr /Times-Roman ff 300.00 scf sf 2400 6000 m gs 1 -1 sc (CL2) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/m.tex0000644000302600021200000001072113466077161017066 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : m.tex % % Sujet : Maintenance manual % % Document body % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Formatage et pagination. \documentclass{article} \usepackage{a4} \usepackage[dvips]{graphicx} %\documentstyle[11pt,a4,fullpage,epsf]{article} %\textwidth 16.0cm %\oddsidemargin -0.5cm %\evensidemargin -0.5cm %\marginparwidth 0.0cm %\marginparsep 0.0cm %\marginparpush 0.0cm %\topmargin 0.5cm %\headheight 0.0cm %\headsep 0.0cm %\textheight 25.0cm %\footheight 0.0cm %\footskip 0.0cm \sloppy % Gestion des overfull hbox \renewcommand{\baselinestretch}{1.05} % Hauteur lignes x 1.05 \setcounter{secnumdepth}{3} % Sous-sous-sections numerotees \setcounter{tocdepth}{3} % Sous-sous-sections dans la table %% Macros et commandes utiles. \makeatletter \@definecounter{enumv} % 8 niveaux d'itemizations \@definecounter{enumvi} \@definecounter{enumvii} \@definecounter{enumviii} \def\itemize{\ifnum \@itemdepth >8 \@toodeep\else \advance\@itemdepth \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss\llap{##1}}}\fi} \let\enditemize =\endlist \def\@iteme[#1]{\if@noparitem \@donoparitem % Item long pour options \else \if@inlabel \indent \par \fi \ifhmode \unskip\unskip \par \fi \if@newlist \if@nobreak \@nbitem \else \addpenalty\@beginparpenalty \addvspace\@topsep \addvspace{-\parskip}\fi \else \addpenalty\@itempenalty \addvspace\itemsep \fi \global\@inlabeltrue \fi \everypar{\global\@minipagefalse\global\@newlistfalse \if@inlabel\global\@inlabelfalse \setbox\@tempboxa\hbox{#1}\relax \hskip \itemindent \hskip -\parindent \hskip -\labelwidth \hskip -\labelsep \ifdim \wd\@tempboxa > \labelwidth \box\@tempboxa\hfil\break \else \hbox to\labelwidth{\box\@tempboxa\hfil}\relax \hskip \labelsep \fi \penalty\z@ \fi \everypar{}}\global\@nobreakfalse \if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi \ignorespaces} \def\iteme{\@ifnextchar [{\@iteme}{\@noitemargtrue \@iteme[\@itemlabel]}} \let\@Hxfloat\@xfloat \def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} \def\@HHfloat#1[H]{% \expandafter\let\csname end#1\endcsname\end@Hfloat \vskip\intextsep\def\@captype{#1}\parindent\z@ \ignorespaces} \def\end@Hfloat{\vskip \intextsep} \makeatother \newcommand{\bn}{\begin{displaymath}} % Equations non-numerotees \newcommand{\en}{\end{displaymath}} \newcommand{\bq}{\begin{equation}} % Equations numerotees \newcommand{\eq}{\end{equation}} \newcommand{\lbo}{\linebreak[0]} \newcommand{\lbt}{\linebreak[2]} \newcommand{\noi}{{\noindent}} % Pas d'indentation \newcommand{\spa}{{\protect \vspace{\bigskipamount}}} % Espace vertical \newcommand{\eg}{{\it e\@.g\@.\/\ }} % e.g. \newcommand{\ie}{{\it i\@.e\@.\/\ }} % i.e. \newcommand{\scotch}{{\sc Scotch}} % "scotch" \newcommand{\libscotch}{{\sc libScotch}} % "libscotch" \newcommand{\ptscotch}{\textsc{PT-Scotch}} % "PT-Scotch" \newcommand{\UB}{{\rm UB}} % UB %% Page de garde. \begin{document} \date{\today} \title{\includegraphics{s_f_logo.ps}\\[1em] {\LARGE\bf \libscotch\ {\sc 6.0} Maintainer's Guide}\\[1em]} \author{Fran\c cois Pellegrini\\ Universit\'e de Bordeaux \& LaBRI, UMR CNRS 5800\\ TadAAM team, INRIA Bordeaux Sud-Ouest\\ 351 cours de la Lib\'eration, 33405 TALENCE, FRANCE\\ {\tt francois.pellegrini@labri.fr}} \maketitle \begin{abstract} This document describes some internals of the \libscotch\ library. \end{abstract} \clearpage \tableofcontents \input{m_i.tex} % Introduction \input{m_n.tex} % Naming conventions \input{m_s.tex} % Structure of the libScotch \input{m_f.tex} % File formats \input{m_m.tex} % Adding a graph processing method \end{document} scotch_6.0.9/doc/src/scotch/m42_a1.fig0000644000302600021200000000233613303015264017547 0ustar pelegrinpelegrin#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Inches Letter 100.00 Single -2 1200 2 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 2400 1200 75 75 2400 1200 2475 1200 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 3600 1200 75 75 3600 1200 3675 1200 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 2400 2400 75 75 2400 2400 2475 2400 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 3600 2400 75 75 3600 2400 3675 2400 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 4800 2400 75 75 4800 2400 4875 2400 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 4800 1200 75 75 4800 1200 4875 1200 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 6000 1200 75 75 6000 1200 6075 1200 1 3 0 1 -1 -1 50 -1 20 0.000 1 0.0000 6000 2400 75 75 6000 2400 6075 2400 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 3600 1200 3600 2400 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 4800 1200 4800 2400 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 2400 1200 6000 1200 6000 2400 2400 2400 2400 1200 2 2 0 1 7 7 50 -1 -1 0.000 0 0 -1 0 0 5 1800 600 6600 600 6600 3000 1800 3000 1800 600 4 0 0 50 -1 0 16 0.0000 4 195 135 2325 1050 0\001 4 0 0 50 -1 0 16 0.0000 4 195 135 3525 1050 2\001 4 0 0 50 -1 0 16 0.0000 4 195 135 2325 2775 1\001 4 0 0 50 -1 0 16 0.0000 4 195 135 3525 2775 3\001 4 0 0 50 -1 0 16 0.0000 4 195 135 5925 2775 4\001 scotch_6.0.9/doc/src/scotch/s_f_out2.map0000644000302600021200000000043313303015264020310 0ustar pelegrinpelegrin14 0 1 1 1 3 0 4 1 5 1 7 0 8 1 9 1 10 0 11 0 12 1 13 0 14 0 15 0 scotch_6.0.9/doc/src/scotch/s_f_out3.ps0000644000302600021200000000224513303015264020161 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_out3.src s_f_out.xyz s_f_out2.map %%Creator: out (F. Pellegrini, LaBRI, Bordeaux) %%CreationDate: Tue Oct 3 15:48:38 1995 %%BoundingBox: 0 0 475 475 %%Pages: 0 %%EndComments /A { 0 360 arc fill } bind def /c { setrgbcolor } bind def /g { setgray } bind def /L { lineto stroke } bind def /l { lineto } bind def /m { moveto } bind def /n { newpath } bind def gsave 1 setlinecap 0.007200 0.007200 scale n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip 0 g n 8250 57750 m 24750 57750 L n 8250 57750 m 8250 41250 L n 24750 57750 m 24750 41250 L n 57750 57750 m 57750 41250 L n 8250 41250 m 24750 41250 L n 24750 41250 m 24750 24750 L n 57750 41250 m 57750 24750 L n 24750 24750 m 41250 24750 L n 41250 24750 m 57750 24750 L n 41250 24750 m 41250 8250 L n 57750 24750 m 57750 8250 L n 41250 8250 m 57750 8250 L 0 0 0 c n 8250 57750 8249 A 0 0 0 c n 24750 57750 8249 A 1 0.5 0.5 c n 57750 57750 8249 A 0 0 0 c n 8250 41250 8249 A n 24750 41250 8249 A 1 0.5 0.5 c n 57750 41250 8249 A 0 0 0 c n 24750 24750 8250 A 1 0.5 0.5 c n 41250 24750 8249 A n 57750 24750 8249 A n 41250 8250 8249 A n 57750 8250 8249 A grestore scotch_6.0.9/doc/src/scotch/s_f_rub.eps0000644000302600021200000003366113322403377020241 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Wed May 16 15:53:26 2001 %%For: pelegrin@trol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 304 303 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 303 moveto 0 0 lineto 304 0 lineto 304 303 lineto closepath clip newpath -53.0 329.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [15 45] 45 sd n 1500 600 m 5700 600 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 1200 m 5700 1200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 2400 m 5700 2400 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3000 m 5700 3000 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 3600 m 5700 3600 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 1800 m 5700 1800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 4200 m 5700 4200 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 4800 m 5700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1500 600 m 1500 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2100 600 m 2100 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2700 600 m 2700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3300 600 m 3300 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3900 600 m 3900 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4500 600 m 4500 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5100 600 m 5100 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5700 600 m 5700 4800 l gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4950 m 1650 4650 l 1350 4650 l 1350 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 4350 m 1650 4050 l 1350 4050 l 1350 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 3750 m 1650 3450 l 1350 3450 l 1350 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 3150 m 1650 2850 l 1350 2850 l 1350 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 2550 m 1650 2250 l 1350 2250 l 1350 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 1950 m 1650 1650 l 1350 1650 l 1350 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 1350 m 1650 1050 l 1350 1050 l 1350 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 1650 750 m 1650 450 l 1350 450 l 1350 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4950 m 2250 4650 l 1950 4650 l 1950 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 4350 m 2250 4050 l 1950 4050 l 1950 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 3750 m 2250 3450 l 1950 3450 l 1950 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 3150 m 2250 2850 l 1950 2850 l 1950 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 2550 m 2250 2250 l 1950 2250 l 1950 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 1950 m 2250 1650 l 1950 1650 l 1950 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 1350 m 2250 1050 l 1950 1050 l 1950 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2250 750 m 2250 450 l 1950 450 l 1950 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4950 m 3450 4650 l 3150 4650 l 3150 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 4350 m 3450 4050 l 3150 4050 l 3150 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 3750 m 3450 3450 l 3150 3450 l 3150 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 3150 m 3450 2850 l 3150 2850 l 3150 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 2550 m 3450 2250 l 3150 2250 l 3150 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 1950 m 3450 1650 l 3150 1650 l 3150 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 1350 m 3450 1050 l 3150 1050 l 3150 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 3450 750 m 3450 450 l 3150 450 l 3150 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4950 m 4050 4650 l 3750 4650 l 3750 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 4350 m 4050 4050 l 3750 4050 l 3750 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 3750 m 4050 3450 l 3750 3450 l 3750 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 3150 m 4050 2850 l 3750 2850 l 3750 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 2550 m 4050 2250 l 3750 2250 l 3750 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 1950 m 4050 1650 l 3750 1650 l 3750 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 1350 m 4050 1050 l 3750 1050 l 3750 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4050 750 m 4050 450 l 3750 450 l 3750 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4950 m 4650 4650 l 4350 4650 l 4350 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 4350 m 4650 4050 l 4350 4050 l 4350 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 3750 m 4650 3450 l 4350 3450 l 4350 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 3150 m 4650 2850 l 4350 2850 l 4350 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 2550 m 4650 2250 l 4350 2250 l 4350 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 1950 m 4650 1650 l 4350 1650 l 4350 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 1350 m 4650 1050 l 4350 1050 l 4350 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 4650 750 m 4650 450 l 4350 450 l 4350 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4950 m 5250 4650 l 4950 4650 l 4950 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 4350 m 5250 4050 l 4950 4050 l 4950 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 3750 m 5250 3450 l 4950 3450 l 4950 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 3150 m 5250 2850 l 4950 2850 l 4950 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 2550 m 5250 2250 l 4950 2250 l 4950 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 1950 m 5250 1650 l 4950 1650 l 4950 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 1350 m 5250 1050 l 4950 1050 l 4950 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5250 750 m 5250 450 l 4950 450 l 4950 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4950 m 5850 4650 l 5550 4650 l 5550 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 4350 m 5850 4050 l 5550 4050 l 5550 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 3750 m 5850 3450 l 5550 3450 l 5550 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 3150 m 5850 2850 l 5550 2850 l 5550 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 2550 m 5850 2250 l 5550 2250 l 5550 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 1950 m 5850 1650 l 5550 1650 l 5550 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 1350 m 5850 1050 l 5550 1050 l 5550 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 5850 750 m 5850 450 l 5550 450 l 5550 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4950 m 2850 4650 l 2550 4650 l 2550 4950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 4350 m 2850 4050 l 2550 4050 l 2550 4350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 3750 m 2850 3450 l 2550 3450 l 2550 3750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 3150 m 2850 2850 l 2550 2850 l 2550 3150 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 2550 m 2850 2250 l 2550 2250 l 2550 2550 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 1950 m 2850 1650 l 2550 1650 l 2550 1950 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 1350 m 2850 1050 l 2550 1050 l 2550 1350 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd % Polyline [15 45] 45 sd n 2850 750 m 2850 450 l 2550 450 l 2550 750 l cp gs 1.00 setgray ef gr gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 2250 5400 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 2475 5475 m gs 1 -1 sc (0) col-1 sh gr /Times-Roman ff 300.00 scf sf 4650 5400 m gs 1 -1 sc (D) col-1 sh gr /Times-Roman ff 240.00 scf sf 4875 5475 m gs 1 -1 sc (1) col-1 sh gr % Ellipse n 1800 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2700 1200 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 2400 4500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 1500 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 5400 3300 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Ellipse n 4800 3900 75 75 0 360 DrawEllipse gs -0.00 setgray ef gr gs col-1 s gr % Polyline 15.000 slw [90] 0 sd n 3600 2850 m 3600 4950 l gs col-1 s gr [] 0 sd % Polyline n 3525 2850 m 3675 2850 l gs col-1 s gr % Polyline n 3525 4950 m 3675 4950 l gs col-1 s gr % Polyline n 1380 2775 m 1275 2775 1275 4920 105 arcto 4 {pop} repeat 1275 5025 5820 5025 105 arcto 4 {pop} repeat 5925 5025 5925 2880 105 arcto 4 {pop} repeat 5925 2775 1380 2775 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 2580 975 m 2475 975 2475 1320 105 arcto 4 {pop} repeat 2475 1425 2820 1425 105 arcto 4 {pop} repeat 2925 1425 2925 1080 105 arcto 4 {pop} repeat 2925 975 2580 975 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4380 975 m 4275 975 4275 1920 105 arcto 4 {pop} repeat 4275 2025 5220 2025 105 arcto 4 {pop} repeat 5325 2025 5325 1080 105 arcto 4 {pop} repeat 5325 975 4380 975 105 arcto 4 {pop} repeat cp gs col-1 s gr % Polyline n 4800 3900 m 2700 1200 l gs col-1 s gr % Polyline n 4800 3900 m 4800 1500 l gs col-1 s gr % Polyline 45.000 slw n 4800 3900 m 1800 3300 l gs col-1 s gr % Polyline n 4800 3900 m 2400 4500 l gs col-1 s gr % Polyline [15 90] 90 sd n 4800 3900 m 5400 3300 l gs col-1 s gr [] 0 sd /Times-Roman ff 300.00 scf sf 900 3975 m gs 1 -1 sc (D) col-1 sh gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/s_f_msf.fig0000644000302600021200000000544613303015264020205 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 2100 900 2400 1200 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 1050 150 150 2250 1050 2400 1050 4 0 0 10 0 0 16 0.0000 4 195 135 2200 1140 4\001 -6 6 3300 900 3600 1200 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 1050 150 150 3450 1050 3600 1050 4 0 0 8 0 0 16 0.0000 4 195 270 3320 1140 10\001 -6 6 2700 1500 3000 1800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 1650 150 150 2850 1650 3000 1650 4 0 0 10 0 0 16 0.0000 4 195 135 2800 1740 2\001 -6 6 2100 2100 2400 2400 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 2250 150 150 2250 2250 2400 2250 4 0 0 10 0 0 16 0.0000 4 195 135 2200 2340 5\001 -6 6 3300 2100 3600 2400 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 2250 150 150 3450 2250 3600 2250 4 0 0 8 0 0 16 0.0000 4 195 270 3320 2340 11\001 -6 6 2700 2700 3000 3000 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 2850 150 150 2850 2850 3000 2850 4 0 0 10 0 0 16 0.0000 4 195 135 2800 2940 1\001 -6 6 2100 3300 2400 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 3450 150 150 2250 3450 2400 3450 4 0 0 8 0 0 16 0.0000 4 195 135 2200 3540 7\001 -6 6 3300 3300 3600 3600 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 3450 150 150 3450 3450 3600 3450 4 0 0 10 0 0 16 0.0000 4 195 135 3400 3540 6\001 -6 6 2700 3900 3000 4200 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2850 4050 150 150 2850 4050 3000 4050 4 0 0 10 0 0 16 0.0000 4 195 135 2800 4140 3\001 -6 6 2100 4500 2400 4800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 2250 4650 150 150 2250 4650 2400 4650 4 0 0 8 0 0 16 0.0000 4 195 135 2200 4740 8\001 -6 6 3300 4500 3600 4800 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 3450 4650 150 150 3450 4650 3600 4650 4 0 0 8 0 0 16 0.0000 4 195 135 3400 4740 9\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 2250 1050 2850 1650 2250 2250 2850 2850 2250 3450 2850 4050 2250 4650 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 3450 1050 2850 1650 3450 2250 2850 2850 3450 3450 2850 4050 3450 4650 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 2475 1650 2400 2025 2250 2250 2475 2100 2850 2025 3225 2100 3450 2250 3300 2025 3225 1650 3300 1275 3450 1050 3225 1200 2850 1275 2475 1200 2250 1050 2400 1275 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 2475 2850 2400 3225 2250 3450 2475 3300 2850 3225 3225 3300 3450 3450 3300 3225 3225 2850 3300 2475 3450 2250 3225 2400 2850 2475 2475 2400 2250 2250 2400 2475 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 2475 4050 2400 4425 2250 4650 2475 4500 2850 4425 3225 4500 3450 4650 3300 4425 3225 4050 3300 3675 3450 3450 3225 3600 2850 3675 2475 3600 2250 3450 2400 3675 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 scotch_6.0.9/doc/src/scotch/s_f_msf.eps0000644000302600021200000003527713322403377020243 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Sat Nov 9 18:59:42 2002 %%For: pelegrin@brol (Francois PELLEGRINI) %%BoundingBox: 0 0 91 235 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 235 moveto 0 0 lineto 91 0 lineto 91 235 lineto closepath clip newpath -125.5 288.4 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 2 slj n 2400 2025 m 2386 2061 l 2371 2092 l 2357 2118 l 2344 2138 l 2332 2153 l 2321 2165 l 2310 2174 l 2300 2181 l 2290 2188 l 2281 2195 l 2272 2203 l 2263 2212 l 2256 2222 l 2250 2233 l 2248 2243 l 2250 2250 l 2257 2252 l 2267 2250 l 2278 2244 l 2288 2237 l 2297 2228 l 2305 2219 l 2312 2210 l 2319 2200 l 2326 2190 l 2335 2179 l 2347 2168 l 2362 2156 l 2382 2143 l 2408 2129 l 2439 2114 l 2475 2100 l 2509 2088 l 2541 2078 l 2569 2069 l 2592 2062 l 2610 2056 l 2624 2052 l 2635 2049 l 2643 2046 l 2650 2044 l 2657 2042 l 2666 2040 l 2677 2038 l 2693 2035 l 2713 2033 l 2739 2030 l 2771 2028 l 2809 2026 l 2850 2025 l 2891 2026 l 2929 2028 l 2961 2030 l 2987 2033 l 3007 2035 l 3023 2038 l 3034 2040 l 3043 2042 l 3050 2044 l 3057 2046 l 3065 2049 l 3076 2052 l 3090 2056 l 3108 2062 l 3131 2069 l 3159 2078 l 3191 2088 l 3225 2100 l 3261 2114 l 3292 2129 l 3318 2143 l 3338 2156 l 3353 2168 l 3365 2179 l 3374 2190 l 3381 2200 l 3388 2210 l 3395 2219 l 3403 2228 l 3412 2237 l 3422 2244 l 3433 2250 l 3443 2252 l 3450 2250 l 3452 2243 l 3450 2233 l 3444 2222 l 3437 2212 l 3428 2203 l 3419 2195 l 3410 2188 l 3400 2181 l 3390 2174 l 3379 2165 l 3368 2153 l 3356 2138 l 3343 2118 l 3329 2092 l 3314 2061 l 3300 2025 l 3288 1991 l 3278 1959 l 3269 1931 l 3262 1908 l 3256 1890 l 3252 1876 l 3249 1865 l 3246 1857 l 3244 1850 l 3242 1843 l 3240 1834 l 3238 1823 l 3235 1807 l 3233 1787 l 3230 1761 l 3228 1729 l 3226 1691 l 3225 1650 l 3226 1609 l 3228 1571 l 3230 1539 l 3233 1513 l 3235 1493 l 3238 1477 l 3240 1466 l 3242 1457 l 3244 1450 l 3246 1443 l 3249 1435 l 3252 1424 l 3256 1410 l 3262 1392 l 3269 1369 l 3278 1341 l 3288 1309 l 3300 1275 l 3314 1239 l 3329 1208 l 3343 1182 l 3356 1162 l 3368 1147 l 3379 1135 l 3390 1126 l 3400 1119 l 3410 1112 l 3419 1105 l 3428 1097 l 3437 1088 l 3444 1078 l 3450 1067 l 3452 1057 l 3450 1050 l 3443 1048 l 3433 1050 l 3422 1056 l 3412 1063 l 3403 1072 l 3395 1081 l 3388 1090 l 3381 1100 l 3374 1110 l 3365 1121 l 3353 1132 l 3338 1144 l 3318 1157 l 3292 1171 l 3261 1186 l 3225 1200 l 3191 1212 l 3159 1222 l 3131 1231 l 3108 1238 l 3090 1244 l 3076 1248 l 3065 1251 l 3057 1254 l 3050 1256 l 3043 1258 l 3034 1260 l 3023 1262 l 3007 1265 l 2987 1267 l 2961 1270 l 2929 1272 l 2891 1274 l 2850 1275 l 2809 1274 l 2771 1272 l 2739 1270 l 2713 1267 l 2693 1265 l 2677 1262 l 2666 1260 l 2657 1258 l 2650 1256 l 2643 1254 l 2635 1251 l 2624 1248 l 2610 1244 l 2592 1238 l 2569 1231 l 2541 1222 l 2509 1212 l 2475 1200 l 2439 1186 l 2408 1171 l 2382 1157 l 2362 1144 l 2347 1132 l 2335 1121 l 2326 1110 l 2319 1100 l 2312 1090 l 2305 1081 l 2297 1072 l 2288 1063 l 2278 1056 l 2267 1050 l 2257 1048 l 2250 1050 l 2248 1057 l 2250 1067 l 2256 1078 l 2263 1088 l 2272 1097 l 2281 1105 l 2290 1112 l 2300 1119 l 2310 1126 l 2321 1135 l 2332 1147 l 2344 1162 l 2357 1182 l 2371 1208 l 2386 1239 l 2400 1275 l 2412 1309 l 2422 1341 l 2431 1369 l 2438 1392 l 2444 1410 l 2448 1424 l 2451 1435 l 2454 1443 l 2456 1450 l 2458 1457 l 2460 1466 l 2462 1477 l 2465 1493 l 2467 1513 l 2470 1539 l 2472 1571 l 2474 1609 l 2475 1650 l 2474 1691 l 2472 1729 l 2470 1761 l 2467 1787 l 2465 1807 l 2462 1823 l 2460 1834 l 2458 1843 l 2456 1850 l 2454 1857 l 2451 1865 l 2448 1876 l 2444 1890 l 2438 1908 l 2431 1931 l 2422 1959 l 2412 1991 l cp gs 0.80 setgray ef gr % Polyline n 2400 3225 m 2386 3261 l 2371 3292 l 2357 3318 l 2344 3338 l 2332 3353 l 2321 3365 l 2310 3374 l 2300 3381 l 2290 3388 l 2281 3395 l 2272 3403 l 2263 3412 l 2256 3422 l 2250 3433 l 2248 3443 l 2250 3450 l 2257 3452 l 2267 3450 l 2278 3444 l 2288 3437 l 2297 3428 l 2305 3419 l 2312 3410 l 2319 3400 l 2326 3390 l 2335 3379 l 2347 3368 l 2362 3356 l 2382 3343 l 2408 3329 l 2439 3314 l 2475 3300 l 2509 3288 l 2541 3278 l 2569 3269 l 2592 3262 l 2610 3256 l 2624 3252 l 2635 3249 l 2643 3246 l 2650 3244 l 2657 3242 l 2666 3240 l 2677 3238 l 2693 3235 l 2713 3233 l 2739 3230 l 2771 3228 l 2809 3226 l 2850 3225 l 2891 3226 l 2929 3228 l 2961 3230 l 2987 3233 l 3007 3235 l 3023 3238 l 3034 3240 l 3043 3242 l 3050 3244 l 3057 3246 l 3065 3249 l 3076 3252 l 3090 3256 l 3108 3262 l 3131 3269 l 3159 3278 l 3191 3288 l 3225 3300 l 3261 3314 l 3292 3329 l 3318 3343 l 3338 3356 l 3353 3368 l 3365 3379 l 3374 3390 l 3381 3400 l 3388 3410 l 3395 3419 l 3403 3428 l 3412 3437 l 3422 3444 l 3433 3450 l 3443 3452 l 3450 3450 l 3452 3443 l 3450 3433 l 3444 3422 l 3437 3412 l 3428 3403 l 3419 3395 l 3410 3388 l 3400 3381 l 3390 3374 l 3379 3365 l 3368 3353 l 3356 3338 l 3343 3318 l 3329 3292 l 3314 3261 l 3300 3225 l 3288 3191 l 3278 3159 l 3269 3131 l 3262 3108 l 3256 3090 l 3252 3076 l 3249 3065 l 3246 3057 l 3244 3050 l 3242 3043 l 3240 3034 l 3238 3023 l 3235 3007 l 3233 2987 l 3230 2961 l 3228 2929 l 3226 2891 l 3225 2850 l 3226 2809 l 3228 2771 l 3230 2739 l 3233 2713 l 3235 2693 l 3238 2677 l 3240 2666 l 3242 2657 l 3244 2650 l 3246 2643 l 3249 2635 l 3252 2624 l 3256 2610 l 3262 2592 l 3269 2569 l 3278 2541 l 3288 2509 l 3300 2475 l 3314 2439 l 3329 2408 l 3343 2382 l 3356 2362 l 3368 2347 l 3379 2335 l 3390 2326 l 3400 2319 l 3410 2312 l 3419 2305 l 3428 2297 l 3437 2288 l 3444 2278 l 3450 2267 l 3452 2257 l 3450 2250 l 3443 2248 l 3433 2250 l 3422 2256 l 3412 2263 l 3403 2272 l 3395 2281 l 3388 2290 l 3381 2300 l 3374 2310 l 3365 2321 l 3353 2332 l 3338 2344 l 3318 2357 l 3292 2371 l 3261 2386 l 3225 2400 l 3191 2412 l 3159 2422 l 3131 2431 l 3108 2438 l 3090 2444 l 3076 2448 l 3065 2451 l 3057 2454 l 3050 2456 l 3043 2458 l 3034 2460 l 3023 2462 l 3007 2465 l 2987 2467 l 2961 2470 l 2929 2472 l 2891 2474 l 2850 2475 l 2809 2474 l 2771 2472 l 2739 2470 l 2713 2467 l 2693 2465 l 2677 2462 l 2666 2460 l 2657 2458 l 2650 2456 l 2643 2454 l 2635 2451 l 2624 2448 l 2610 2444 l 2592 2438 l 2569 2431 l 2541 2422 l 2509 2412 l 2475 2400 l 2439 2386 l 2408 2371 l 2382 2357 l 2362 2344 l 2347 2332 l 2335 2321 l 2326 2310 l 2319 2300 l 2312 2290 l 2305 2281 l 2297 2272 l 2288 2263 l 2278 2256 l 2267 2250 l 2257 2248 l 2250 2250 l 2248 2257 l 2250 2267 l 2256 2278 l 2263 2288 l 2272 2297 l 2281 2305 l 2290 2312 l 2300 2319 l 2310 2326 l 2321 2335 l 2332 2347 l 2344 2362 l 2357 2382 l 2371 2408 l 2386 2439 l 2400 2475 l 2412 2509 l 2422 2541 l 2431 2569 l 2438 2592 l 2444 2610 l 2448 2624 l 2451 2635 l 2454 2643 l 2456 2650 l 2458 2657 l 2460 2666 l 2462 2677 l 2465 2693 l 2467 2713 l 2470 2739 l 2472 2771 l 2474 2809 l 2475 2850 l 2474 2891 l 2472 2929 l 2470 2961 l 2467 2987 l 2465 3007 l 2462 3023 l 2460 3034 l 2458 3043 l 2456 3050 l 2454 3057 l 2451 3065 l 2448 3076 l 2444 3090 l 2438 3108 l 2431 3131 l 2422 3159 l 2412 3191 l cp gs 0.80 setgray ef gr % Polyline n 2400 4425 m 2386 4461 l 2371 4492 l 2357 4518 l 2344 4538 l 2332 4553 l 2321 4565 l 2310 4574 l 2300 4581 l 2290 4588 l 2281 4595 l 2272 4603 l 2263 4612 l 2256 4622 l 2250 4633 l 2248 4643 l 2250 4650 l 2257 4652 l 2267 4650 l 2278 4644 l 2288 4637 l 2297 4628 l 2305 4619 l 2312 4610 l 2319 4600 l 2326 4590 l 2335 4579 l 2347 4568 l 2362 4556 l 2382 4543 l 2408 4529 l 2439 4514 l 2475 4500 l 2509 4488 l 2541 4478 l 2569 4469 l 2592 4462 l 2610 4456 l 2624 4452 l 2635 4449 l 2643 4446 l 2650 4444 l 2657 4442 l 2666 4440 l 2677 4438 l 2693 4435 l 2713 4433 l 2739 4430 l 2771 4428 l 2809 4426 l 2850 4425 l 2891 4426 l 2929 4428 l 2961 4430 l 2987 4433 l 3007 4435 l 3023 4438 l 3034 4440 l 3043 4442 l 3050 4444 l 3057 4446 l 3065 4449 l 3076 4452 l 3090 4456 l 3108 4462 l 3131 4469 l 3159 4478 l 3191 4488 l 3225 4500 l 3261 4514 l 3292 4529 l 3318 4543 l 3338 4556 l 3353 4568 l 3365 4579 l 3374 4590 l 3381 4600 l 3388 4610 l 3395 4619 l 3403 4628 l 3412 4637 l 3422 4644 l 3433 4650 l 3443 4652 l 3450 4650 l 3452 4643 l 3450 4633 l 3444 4622 l 3437 4612 l 3428 4603 l 3419 4595 l 3410 4588 l 3400 4581 l 3390 4574 l 3379 4565 l 3368 4553 l 3356 4538 l 3343 4518 l 3329 4492 l 3314 4461 l 3300 4425 l 3288 4391 l 3278 4359 l 3269 4331 l 3262 4308 l 3256 4290 l 3252 4276 l 3249 4265 l 3246 4257 l 3244 4250 l 3242 4243 l 3240 4234 l 3238 4223 l 3235 4207 l 3233 4187 l 3230 4161 l 3228 4129 l 3226 4091 l 3225 4050 l 3226 4009 l 3228 3971 l 3230 3939 l 3233 3913 l 3235 3893 l 3238 3877 l 3240 3866 l 3242 3857 l 3244 3850 l 3246 3843 l 3249 3835 l 3252 3824 l 3256 3810 l 3262 3792 l 3269 3769 l 3278 3741 l 3288 3709 l 3300 3675 l 3314 3639 l 3329 3608 l 3343 3582 l 3356 3562 l 3368 3547 l 3379 3535 l 3390 3526 l 3400 3519 l 3410 3512 l 3419 3505 l 3428 3497 l 3437 3488 l 3444 3478 l 3450 3467 l 3452 3457 l 3450 3450 l 3443 3448 l 3433 3450 l 3422 3456 l 3412 3463 l 3403 3472 l 3395 3481 l 3388 3490 l 3381 3500 l 3374 3510 l 3365 3521 l 3353 3532 l 3338 3544 l 3318 3557 l 3292 3571 l 3261 3586 l 3225 3600 l 3191 3612 l 3159 3622 l 3131 3631 l 3108 3638 l 3090 3644 l 3076 3648 l 3065 3651 l 3057 3654 l 3050 3656 l 3043 3658 l 3034 3660 l 3023 3662 l 3007 3665 l 2987 3667 l 2961 3670 l 2929 3672 l 2891 3674 l 2850 3675 l 2809 3674 l 2771 3672 l 2739 3670 l 2713 3667 l 2693 3665 l 2677 3662 l 2666 3660 l 2657 3658 l 2650 3656 l 2643 3654 l 2635 3651 l 2624 3648 l 2610 3644 l 2592 3638 l 2569 3631 l 2541 3622 l 2509 3612 l 2475 3600 l 2439 3586 l 2408 3571 l 2382 3557 l 2362 3544 l 2347 3532 l 2335 3521 l 2326 3510 l 2319 3500 l 2312 3490 l 2305 3481 l 2297 3472 l 2288 3463 l 2278 3456 l 2267 3450 l 2257 3448 l 2250 3450 l 2248 3457 l 2250 3467 l 2256 3478 l 2263 3488 l 2272 3497 l 2281 3505 l 2290 3512 l 2300 3519 l 2310 3526 l 2321 3535 l 2332 3547 l 2344 3562 l 2357 3582 l 2371 3608 l 2386 3639 l 2400 3675 l 2412 3709 l 2422 3741 l 2431 3769 l 2438 3792 l 2444 3810 l 2448 3824 l 2451 3835 l 2454 3843 l 2456 3850 l 2458 3857 l 2460 3866 l 2462 3877 l 2465 3893 l 2467 3913 l 2470 3939 l 2472 3971 l 2474 4009 l 2475 4050 l 2474 4091 l 2472 4129 l 2470 4161 l 2467 4187 l 2465 4207 l 2462 4223 l 2460 4234 l 2458 4243 l 2456 4250 l 2454 4257 l 2451 4265 l 2448 4276 l 2444 4290 l 2438 4308 l 2431 4331 l 2422 4359 l 2412 4391 l cp gs 0.80 setgray ef gr % Polyline 0 slj 7.500 slw n 2250 1050 m 2850 1650 l 2250 2250 l 2850 2850 l 2250 3450 l 2850 4050 l 2250 4650 l gs col0 s gr % Polyline n 3450 1050 m 2850 1650 l 3450 2250 l 2850 2850 l 3450 3450 l 2850 4050 l 3450 4650 l gs col0 s gr % Ellipse n 2250 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 1050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2850 1650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2250 2250 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 2250 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2850 2850 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2250 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 3450 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2850 4050 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2250 4650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 4650 150 150 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2200 1140 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 1740 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 2340 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 2940 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 3540 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3320 1140 m gs 1 -1 sc (10) col0 sh gr /Times-Roman ff 240.00 scf sf 3320 2340 m gs 1 -1 sc (11) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 3540 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 4740 m gs 1 -1 sc (8) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 4740 m gs 1 -1 sc (9) col0 sh gr $F2psEnd rs scotch_6.0.9/doc/src/scotch/m_s.tex0000644000302600021200000000505013466077161017407 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Title : m_s.tex % % Subject : Maintenance manual of % % Scotch % % Global structure % % Author : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Structure of the \libscotch\ library} \label{sec-structure} As seen in Section~\ref{sec-naming-functions}, all of the routines that comprise the \libscotch\ project are named with a prefix that defines the type of data structure onto which they apply and a prefix that describes their purpose. This naming scheme allows one to categorize functions as methods of classes, in an object-oriented manner. This organization is reflected in the naming and contents of the various source files. The main modules of the \libscotch\ library are the following: \begin{itemize} \item \texttt{arch}: target architectures used by the static mapping methods. \item \texttt{bgraph}: graph edge bipartitioning methods, hence the initial. \item \texttt{graph}: basic (source) graph handling methods. \item \texttt{hgraph}: graph ordering methods. These are based on an extended ``halo'' graph structure, thus for the initial. \item \texttt{hmesh}: mesh ordering methods. \item \texttt{kgraph}: k-way graph partitioning methods. \item \texttt{library}: API routines for the \libscotch\ library. \item \texttt{mapping}: definition of the mapping structure. \item \texttt{mesh}: basic mesh handling methods. \item \texttt{order}: definition of the ordering structure. \item \texttt{parser}: strategy parsing routines, based on the \textsc{Flex} and \textsc{Bison} parsers. \item \texttt{vgraph}: graph vertex bipartitioning methods, hence the initial. \item \texttt{vmesh}: mesh node bipartitioning methods. \end{itemize} Every source file name is made of the name of the module to which it belongs, followed by one or two words, separated by an underscore, that describe the type of action performed by the routines of the file. For instance, for module \texttt{bgraph}: \begin{itemize} \item \texttt{bgraph.h} is the header file that defines the \texttt{Bgraph} data structure, \item \texttt{bgraph\_bipart\_fm.[ch]} are the files that contain the Fiduccia-Mattheyses-like graph bipartitioning method, \item \texttt{bgraph\_check.c} is the file that contains the consistency checking routine \texttt{bgraph\lbt Check} for \texttt{Bgraph} structures, \end{itemize} and so on. Every source file has a comments header briefly describing the purpose of the code it contains. scotch_6.0.9/doc/src/scotch/s_f_gr2.eps0000644000302600021200000004425313322403377020142 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: stdin %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Tue Nov 4 11:45:49 2003 %%For: pelegrin@brol.labri.fr (Francois PELLEGRINI) %%BoundingBox: 0 0 631 218 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 218 moveto 0 0 lineto 631 0 lineto 631 218 lineto closepath clip newpath -36.0 252.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Polyline 7.500 slw n 1800 1950 m 2100 1950 l 2100 2250 l 1800 2250 l cp gs col0 s gr % Polyline n 3900 1950 m 4200 1950 l 4200 2250 l 3900 2250 l cp gs col0 s gr % Polyline n 4200 1950 m 4500 1950 l 4500 2250 l 4200 2250 l cp gs col0 s gr % Polyline n 6300 1950 m 6600 1950 l 6600 2250 l 6300 2250 l cp gs col0 s gr % Polyline n 9300 1950 m 9600 1950 l 9600 2250 l 9300 2250 l cp gs col0 s gr % Polyline n 10500 1950 m 10800 1950 l 10800 2250 l 10500 2250 l cp gs col0 s gr % Polyline n 10800 1950 m 11100 1950 l 11100 2250 l 10800 2250 l cp gs col0 s gr % Polyline n 1800 3900 m 2100 3900 l 2100 4200 l 1800 4200 l cp gs col0 s gr % Polyline n 3900 3900 m 4200 3900 l 4200 4200 l 3900 4200 l cp gs col0 s gr % Polyline n 4200 3900 m 4500 3900 l 4500 4200 l 4200 4200 l cp gs col0 s gr % Polyline n 6300 3900 m 6600 3900 l 6600 4200 l 6300 4200 l cp gs col0 s gr % Polyline n 9300 3900 m 9600 3900 l 9600 4200 l 9300 4200 l cp gs col0 s gr % Polyline n 10500 3900 m 10800 3900 l 10800 4200 l 10500 4200 l cp gs col0 s gr % Polyline n 10800 3900 m 11100 3900 l 11100 4200 l 10800 4200 l cp gs col0 s gr % here ends figure; % % here starts figure with depth 20 % Polyline 7.500 slw gs clippath 8520 1965 m 8580 1965 l 8580 1814 l 8550 1934 l 8520 1814 l cp eoclip n 3750 900 m 3750 1275 l 8550 1275 l 8550 1950 l gs col0 s gr gr % arrowhead n 8520 1814 m 8550 1934 l 8580 1814 l 8520 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9720 1965 m 9780 1965 l 9780 1814 l 9750 1934 l 9720 1814 l cp eoclip n 3450 900 m 3450 1350 l 9750 1350 l 9750 1950 l gs col0 s gr gr % arrowhead n 9720 1814 m 9750 1934 l 9780 1814 l 9720 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7620 1965 m 7680 1965 l 7680 1814 l 7650 1934 l 7620 1814 l cp eoclip n 3150 900 m 3150 1425 l 7650 1425 l 7650 1950 l gs col0 s gr gr % arrowhead n 7620 1814 m 7650 1934 l 7680 1814 l 7620 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4620 1965 m 4680 1965 l 4680 1814 l 4650 1934 l 4620 1814 l cp eoclip n 2850 900 m 2850 1500 l 4650 1500 l 4650 1950 l gs col0 s gr gr % arrowhead n 4620 1814 m 4650 1934 l 4680 1814 l 4620 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5520 1965 m 5580 1965 l 5580 1814 l 5550 1934 l 5520 1814 l cp eoclip n 2550 900 m 2550 1575 l 5550 1575 l 5550 1950 l gs col0 s gr gr % arrowhead n 5520 1814 m 5550 1934 l 5580 1814 l 5520 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2220 1965 m 2280 1965 l 2280 1814 l 2250 1934 l 2220 1814 l cp eoclip n 2250 900 m 2250 1950 l gs col0 s gr gr % arrowhead n 2220 1814 m 2250 1934 l 2280 1814 l 2220 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 9480 2235 m 9420 2235 l 9420 2386 l 9450 2266 l 9480 2386 l cp eoclip n 3750 3300 m 3750 3000 l 9450 3000 l 9450 2250 l gs col0 s gr gr % arrowhead n 9480 2386 m 9450 2266 l 9420 2386 l 9480 2386 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 10680 2235 m 10620 2235 l 10620 2386 l 10650 2266 l 10680 2386 l cp eoclip n 3450 3300 m 3450 2925 l 10650 2925 l 10650 2250 l gs col0 s gr gr % arrowhead n 10680 2386 m 10650 2266 l 10620 2386 l 10680 2386 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 8580 2235 m 8520 2235 l 8520 2386 l 8550 2266 l 8580 2386 l cp eoclip n 3150 3300 m 3150 2850 l 8550 2850 l 8550 2250 l gs col0 s gr gr % arrowhead n 8580 2386 m 8550 2266 l 8520 2386 l 8580 2386 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5580 2235 m 5520 2235 l 5520 2386 l 5550 2266 l 5580 2386 l cp eoclip n 2850 3300 m 2850 2775 l 5550 2775 l 5550 2250 l gs col0 s gr gr % arrowhead n 5580 2386 m 5550 2266 l 5520 2386 l 5580 2386 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6480 2235 m 6420 2235 l 6420 2386 l 6450 2266 l 6480 2386 l cp eoclip n 2550 3300 m 2550 2700 l 6450 2700 l 6450 2250 l gs col0 s gr gr % arrowhead n 6480 2386 m 6450 2266 l 6420 2386 l 6480 2386 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4080 2235 m 4020 2235 l 4020 2386 l 4050 2266 l 4080 2386 l cp eoclip n 2250 3300 m 2250 2625 l 4050 2625 l 4050 2250 l gs col0 s gr gr % arrowhead n 4080 2386 m 4050 2266 l 4020 2386 l 4080 2386 l cp gs 0.00 setgray ef gr col0 s /Courier ff 240.00 scf sf 600 2175 m gs 1 -1 sc (edgetab) col0 sh gr /Courier ff 240.00 scf sf 600 825 m gs 1 -1 sc (verttab) col0 sh gr /Courier ff 240.00 scf sf 600 3525 m gs 1 -1 sc (vendtab) col0 sh gr /Courier ff 240.00 scf sf 600 4125 m gs 1 -1 sc (edlotab) col0 sh gr % here ends figure; % % here starts figure with depth 15 % Polyline 7.500 slw n 2100 1950 m 2400 1950 l 2400 2250 l 2100 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 1950 m 2700 1950 l 2700 2250 l 2400 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 1950 m 3000 1950 l 3000 2250 l 2700 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 1950 m 3300 1950 l 3300 2250 l 3000 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 1950 m 3600 1950 l 3600 2250 l 3300 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 1950 m 3900 1950 l 3900 2250 l 3600 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 1950 m 4800 1950 l 4800 2250 l 4500 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 1950 m 5100 1950 l 5100 2250 l 4800 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 1950 m 5400 1950 l 5400 2250 l 5100 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 1950 m 5700 1950 l 5700 2250 l 5400 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 1950 m 6000 1950 l 6000 2250 l 5700 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 1950 m 6300 1950 l 6300 2250 l 6000 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 1950 m 7200 1950 l 7200 2250 l 6900 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 1950 m 7500 1950 l 7500 2250 l 7200 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 1950 m 6900 1950 l 6900 2250 l 6600 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 1950 m 7800 1950 l 7800 2250 l 7500 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 1950 m 8100 1950 l 8100 2250 l 7800 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 1950 m 8400 1950 l 8400 2250 l 8100 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 1950 m 8700 1950 l 8700 2250 l 8400 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 1950 m 9000 1950 l 9000 2250 l 8700 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9000 1950 m 9300 1950 l 9300 2250 l 9000 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 1950 m 9900 1950 l 9900 2250 l 9600 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 1950 m 10200 1950 l 10200 2250 l 9900 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 1950 m 10500 1950 l 10500 2250 l 10200 2250 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2700 3900 m 3000 3900 l 3000 4200 l 2700 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2100 3900 m 2400 3900 l 2400 4200 l 2100 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2400 3900 m 2700 3900 l 2700 4200 l 2400 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 3900 m 3300 3900 l 3300 4200 l 3000 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3300 3900 m 3600 3900 l 3600 4200 l 3300 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 3900 m 3900 3900 l 3900 4200 l 3600 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4800 3900 m 5100 3900 l 5100 4200 l 4800 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4500 3900 m 4800 3900 l 4800 4200 l 4500 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5100 3900 m 5400 3900 l 5400 4200 l 5100 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5400 3900 m 5700 3900 l 5700 4200 l 5400 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 5700 3900 m 6000 3900 l 6000 4200 l 5700 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6000 3900 m 6300 3900 l 6300 4200 l 6000 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6600 3900 m 6900 3900 l 6900 4200 l 6600 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6900 3900 m 7200 3900 l 7200 4200 l 6900 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7200 3900 m 7500 3900 l 7500 4200 l 7200 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7500 3900 m 7800 3900 l 7800 4200 l 7500 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7800 3900 m 8100 3900 l 8100 4200 l 7800 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8100 3900 m 8400 3900 l 8400 4200 l 8100 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8400 3900 m 8700 3900 l 8700 4200 l 8400 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 8700 3900 m 9000 3900 l 9000 4200 l 8700 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9000 3900 m 9300 3900 l 9300 4200 l 9000 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9600 3900 m 9900 3900 l 9900 4200 l 9600 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 9900 3900 m 10200 3900 l 10200 4200 l 9900 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 10200 3900 m 10500 3900 l 10500 4200 l 10200 4200 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 1800 600 m 2100 600 l 2100 900 l 1800 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 840 m gs 1 -1 sc (17) col0 sh gr % Polyline n 2100 600 m 2400 600 l 2400 900 l 2100 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2200 840 m gs 1 -1 sc (2) col0 sh gr % Polyline n 2400 600 m 2700 600 l 2700 900 l 2400 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 840 m gs 1 -1 sc (13) col0 sh gr % Polyline n 2700 600 m 3000 600 l 3000 900 l 2700 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 840 m gs 1 -1 sc (10) col0 sh gr % Polyline n 3600 600 m 3900 600 l 3900 900 l 3600 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 840 m gs 1 -1 sc (23) col0 sh gr % Polyline n 3300 600 m 3600 600 l 3600 900 l 3300 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 840 m gs 1 -1 sc (27) col0 sh gr % Polyline n 3000 600 m 3300 600 l 3300 900 l 3000 900 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 840 m gs 1 -1 sc (20) col0 sh gr % Polyline n 2100 3300 m 2400 3300 l 2400 3600 l 2100 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2200 3540 m gs 1 -1 sc (8) col0 sh gr % Polyline n 1800 3300 m 2100 3300 l 2100 3600 l 1800 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 1825 3540 m gs 1 -1 sc (20) col0 sh gr % Polyline n 2400 3300 m 2700 3300 l 2700 3600 l 2400 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2425 3540 m gs 1 -1 sc (16) col0 sh gr % Polyline n 2700 3300 m 3000 3300 l 3000 3600 l 2700 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 2725 3540 m gs 1 -1 sc (13) col0 sh gr % Polyline n 3600 3300 m 3900 3300 l 3900 3600 l 3600 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3625 3540 m gs 1 -1 sc (26) col0 sh gr % Polyline n 3300 3300 m 3600 3300 l 3600 3600 l 3300 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3325 3540 m gs 1 -1 sc (30) col0 sh gr % Polyline n 3000 3300 m 3300 3300 l 3300 3600 l 3000 3600 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Roman ff 240.00 scf sf 3025 3540 m gs 1 -1 sc (23) col0 sh gr % Polyline gs clippath 6720 1965 m 6780 1965 l 6780 1814 l 6750 1934 l 6720 1814 l cp eoclip n 1950 900 m 1950 1650 l 6750 1650 l 6750 1950 l gs col0 s gr gr % arrowhead n 6720 1814 m 6750 1934 l 6780 1814 l 6720 1814 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 7680 2235 m 7620 2235 l 7620 2386 l 7650 2266 l 7680 2386 l cp eoclip n 1950 3300 m 1950 2550 l 7650 2550 l 7650 2250 l gs col0 s gr gr % arrowhead n 7680 2386 m 7650 2266 l 7620 2386 l 7680 2386 l cp gs 0.00 setgray ef gr col0 s % here ends figure; % % here starts figure with depth 10 /Times-Roman ff 240.00 scf sf 2200 2190 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 2190 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 2190 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 2190 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 2190 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 2190 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 2190 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 2190 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 2190 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 2190 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 2190 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 2190 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 2190 m gs 1 -1 sc (7) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 2190 m gs 1 -1 sc (6) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 2190 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 9100 2190 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 2190 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 2190 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 2190 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 240.00 scf sf 2800 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 2200 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 2500 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3100 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 3400 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 3700 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 4900 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 4600 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5200 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 5500 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 5800 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6100 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 6700 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7000 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7300 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7600 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 7900 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8200 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 8500 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 8800 4140 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 240.00 scf sf 9100 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 9700 4140 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 240.00 scf sf 10000 4140 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 240.00 scf sf 10300 4140 m gs 1 -1 sc (3) col0 sh gr % here ends figure; $F2psEnd rs showpage scotch_6.0.9/doc/src/scotch/s_f_lea.pdf0000644000302600021200000001206013303015264020153 0ustar pelegrinpelegrin%PDF-1.4 %Çì¢ 5 0 obj <> stream xœÍY=7 íçWL;ÅFÔ·Ú›4öl¤Z#g¹ÂI‘¿ñS\߸Îà€[ŠóôøV¢F”öën°ü“ÏÇëöÓ§¶¿ü³ý¶§ºC½Å}ì@ÿÐþ}b>oùVö7ê·ú°µ½Œ°¿n2›mÇtÆdN4Ù9Š9ÑD'óüý²}Ý€mùx¼î?ß§žŽ±Cq¿ÿ±±NØ3Œ©§ ”ûëö®½¿ÿ¹MÅ÷_·wñý“´MøçÙøä—ûöq û²©5ÄÖ& JøãÇùmù›…ýà à0{J/ô˜zx­ƒôÃ8ñf¿nmÑž¹ J hà˜OýÇjL‹üÔ?¿`,úµsrì§þc5¦¿‚‘3ÿ“˜æWjí­÷àX7zNÌ£‰ÎÅãÏüÇjLJKÿ©«&Eê>mNýÇjÌÄ._NýÏb ¸Ñ9p¬Æ=§|úÖäøÏ܇Ùßdð™ÛƒifÒ¸p¸Ö·¹ð'Ï]žè;Oðò²A޲.¦Ë rÏóU·^æƒgnl-òƒ²—…*Ôó±ÍÏ–'ꮸA=vU®ÙÀŠ”¸Êïÿ[×9%ˆ4”>wAï® Í‰èÑ„†Ò+tpoR¢„³q*Ái4®!‡$Üî)F]_ÓJBí)0AªeÇ%‚Ÿ-EÞ´Ðh#ÇD •2õUt.ÌŸM™±E±­:h”®'ꋬ¨^eþÐÐyéYçö8Lç¡ó×Ú¡Mã†eô°ùÃÞ4Jˆ¾º œ†èBpX F]áh­%Nƒ:#óŽ+pôÙ•DG–-`AaÅάèÄhüʹ–"·Ú dÍl25Y!ÐKŒ’÷NíÑVj²ÐhsZ’%ɪhLbÚŸ(µ•[]à&…‡ì’ÂtÕAé:¡hÙ4•ªJ ²Ð ÍÃ!±ÁŠ–Í‘ ‡0ð„ +9»w—b×RDëpØN;üV;¢Jê²ÙBo*©»í–,©»-WÑCX’°¢sø]wø­ÿZŠü:lÕÒMK÷–-Ý©0ç|‡:( ¹ksxlp®²©9,(¹©ÀçœzvW‡W=]KTJZóe’’Ö<|_„|Ikž]ÍC ¢#Ë¢$«yˆ%%«y(Ú»*ìbŠžŽÕaaƒ;ÃB·Ýmñ #A²FðxЅΦžL¥X鎌²BÏÙàO²áé|}Yu¶"›ÖŽdÙ„5­ùâY«ÖŽSŸCV­ɲ٪V;Om³Ú‘¢¸¹jöbŠp æ‰$²ìž(hÍÃw¬x#´æÉÁß(»R þN)XÍC |©¬æ¡hW…]L‘_‘c]* «4ÂÊùn×JóñÊùî!9ßÝÍ’v äîëjIèÉ=üÝÒxºñº®:zõ—ª[8›²%§’m çÛgÚÂS¶…§Üž´õ’©[²vÀ½šxx WzvW‡W=> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœcd`ab`ddä ÉÌM-Ö ÊÏMÌñµ~H3þaú!ËÜ]û£à§«,ƒÏ\fÞnæn–?¶ }?.øýÿ÷Ý ÌŒŒOßuÎ/¨,ÊLÏ(QÐ ×ÔÖÖAˆZZZ*$UÂd\R‹3ÓóÔ€Œ²Ôœü‚ÜÔ¼kg êœœÌd…ôœÊ‚Œb…Ä””Ô¶°ÄœÔl·ÌœÌ‚‚ü2 gM#C] ad­àWš›Z”¯£™—–™—YR©˜—¢àŸ›šž¨›˜’ 2À%7³¤¨RÁÄ 3®Û/37©´Xìa¿|K… ÔôÒœÄ"Lfs# AaFFƒ‰Ï¿÷ñýèh^ðãòUÆ¡?µDÿ°±üVŸÓ¼íü܇º%¿ç²ýŽúó‚õ Û÷ŒŸJ¬@µµK -e\üúûŒ×Ìß'ý´ éN¬JË NýÍÞý›³û7ãšßœ»‚7Äï+>Ú½¯{ÛœõëŽÚø£û;/Ç÷DƒïŠ¿Åå: EïïøÍú;õwj¼‚©iü·ï)ß3v|g~(´ ûúEW¿?{Èü#ÿ»¬hÝ„´ º¦¸nÉßÍlßm¾»ÿGØüï!óÙVr=à^9™‡çÁ\^‘ŠâÜ endstream endobj 13 0 obj <>stream 2010-06-25T18:03:31+02:00 2010-06-25T18:03:31+02:00 fig2dev Version 3.2 Patchlevel 5a s_f_lea.figpelegrin@brol \(Francois PELLEGRINI\) endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001793 00000 n 0000004501 00000 n 0000001734 00000 n 0000001583 00000 n 0000000015 00000 n 0000001563 00000 n 0000001858 00000 n 0000001959 00000 n 0000002135 00000 n 0000001899 00000 n 0000001929 00000 n 0000002365 00000 n 0000002989 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<161D4A07A398AC8D4F946D6F3ABE954B><161D4A07A398AC8D4F946D6F3ABE954B>] >> startxref 4735 %%EOF scotch_6.0.9/doc/src/scotch/s_f_out2.ps0000644000302600021200000000312013303015264020151 0ustar pelegrinpelegrin%!PS-Adobe-2.0 EPSF-2.0 %%Title: s_f_out1.src s_f_out.xyz s_f_out2.map %%Creator: out (F. Pellegrini, LaBRI, Bordeaux) %%CreationDate: Tue Oct 3 15:43:56 1995 %%BoundingBox: 0 0 475 475 %%Pages: 0 %%EndComments /A { 0 360 arc fill } bind def /c { setrgbcolor } bind def /g { setgray } bind def /L { lineto stroke } bind def /l { lineto } bind def /m { moveto } bind def /n { newpath } bind def gsave 1 setlinecap 0.007200 0.007200 scale n 0 0 m 66000 0 l 66000 66000 l 0 66000 l closepath clip 0 g n 8250 57750 m 24750 57750 L n 8250 57750 m 8250 41250 L n 24750 57750 m 41250 57750 L n 24750 57750 m 24750 41250 L n 41250 57750 m 57750 57750 L n 41250 57750 m 41250 41250 L n 57750 57750 m 57750 41250 L n 8250 41250 m 24750 41250 L n 8250 41250 m 8250 24750 L n 24750 41250 m 41250 41250 L n 24750 41250 m 24750 24750 L n 41250 41250 m 57750 41250 L n 41250 41250 m 41250 24750 L n 57750 41250 m 57750 24750 L n 8250 24750 m 24750 24750 L n 8250 24750 m 8250 8250 L n 24750 24750 m 41250 24750 L n 24750 24750 m 24750 8250 L n 41250 24750 m 57750 24750 L n 41250 24750 m 41250 8250 L n 57750 24750 m 57750 8250 L n 8250 8250 m 24750 8250 L n 24750 8250 m 41250 8250 L n 41250 8250 m 57750 8250 L 0 0 0 c n 8250 57750 8249 A 0 0 0 c n 24750 57750 8249 A 1 0.5 0.5 c n 57750 57750 8249 A 0 0 0 c n 8250 41250 8249 A n 24750 41250 8249 A 1 0.5 0.5 c n 57750 41250 8249 A 0 0 0 c n 8250 24750 8249 A n 24750 24750 8249 A 1 0.5 0.5 c n 41250 24750 8249 A n 57750 24750 8249 A 0 0 0 c n 8250 8250 8249 A 1 0.5 0.5 c n 24750 8250 8249 A n 41250 8250 8249 A n 57750 8250 8249 A grestore scotch_6.0.9/doc/src/scotch/s_c.tex0000644000302600021200000001164713531025741017374 0ustar pelegrinpelegrin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Titre : s_c.tex % % Sujet : Manuel de l'utilisateur % % du projet 'Scotch' % % Changes % % Auteur : Francois Pellegrini % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Updates} \label{sec-changes} \subsection{Changes in version 6.0 from version 5.1} The new \texttt{sub} abstract target architecture allows one to map a graph onto a subset of any given target architecture (including another \texttt{sub} architecture). This feature is meant to perform mappings onto potentially disconnected subsets of a parallel machine, e.g. the set of nodes assigned by a batch scheduler; see Section~\ref{sec-lib-arch-sub}, page~\pageref{sec-lib-arch-sub} for further information. Also, in order to allow decomposition-defined architectures to scale-up to the sizes of modern machines, a new version of the \texttt{deco} architecture, called \texttt{deco~2}, has been designed. This target architecture can be created using the \texttt{SCOTCH\_\lbt arch\lbt Build2} routine; see Section~\ref{sec-lib-arch-build-two}, page~\pageref{sec-lib-arch-build-two} for further information. For further information on the rationale and implementation of these two features, please refer to~\cite{pellegrini:hal-01671156}. Direct k-way graph partitioning and static mapping methods are now available. They are less expensive than the classical dual recursive bipartitioning scheme, and improve quality on average for numbers of parts above a few hundreds. Another new method aims at reducing load imbalance in the case of source graphs with highly irregular vertex weights; see Section~\ref{sec-algo-map-methods}, page~\pageref{sec-algo-map-methods}. Users willing to keep using the old recursive bipartitioning strategies of the \textsc{5.x} branch can create default strategies with the \texttt{SCOTCH\_\lbt STRATRECURSIVE} flag set, in addition to other flags; see Section~\ref{sec-lib-format-strat-default}, page~\pageref{sec-lib-format-strat-default} for further information. Graph repartitioning and static re-mapping features are now available; see Sections~\ref{sec-lib-func-graphmapfixed} to~\ref{sec-lib-func-graphremapfixed}, starting from page~\pageref{sec-lib-func-graphmapfixed}. The clustering capabilities of \scotch\ can be used more easily from the command line and library calls~; see Section~\ref{sec-prog-gmap} and Section~\ref{sec-lib-func-stratgraphclusterbuild}. A new set of routines has been created in order to compute vertex-separated, k-way partitions, that balance the loads of the parts and of the separator vertices that surround them; see Sections~\ref{sec-lib-format-part-ovl} and~\ref{sec-lib-func-graphpartovl}. A new labeled tree-leaf architecture has been created, for nodes that label cores in non increasing order. See Section~\ref{sec-file-target-algo}, page~\pageref{sec-file-target-algo} for the description of the \texttt{ltleaf} target architecture. Memory footprint measurement routines are now available to users; see Section~\ref{sec-lib-misc}, page~\pageref{sec-lib-misc}. Key algorithms are now multi-threaded. See the installation file \texttt{INSTALL.txt} in the main directory for instructions on how to compile \scotch\ with thread support enabled. A method for computing independently orderings on connected components of a graph is now available; see Section~\ref{sec-lib-format-ord}, page~\pageref{sec-lib-format-ord}, and the \texttt{SCOTCH\_\lbt STRAT\lbt DISCON\lbt NECTED} flag in Section~\ref{sec-lib-format-strat-default}, page~\pageref{sec-lib-format-strat-default}. The \metis\ compatibility library now provides optionally version~5 of the \metis\ API, in addition to version~3. In the \texttt{6.0} branch of \scotch, version~3 of the API will remain the default. To expose version~5 of the \metis\ API, \scotch\ must be compiled with flag \texttt{SCOTCH\_\lbt METIS\_\lbt VERSION=5} set. In further branches, version~5 of the API may become the default, requiring the \texttt{SCOTCH\_\lbt METIS\_\lbt VERSION=3} flag to be set to expose version~3 of the \metis\ API. \subsection{Changes in version 5.1 from version 5.0} A new integer index type has been created in the Fortran interface, to address array indices larger than the maximum value which can be stored in a regular integer. Please refer to Section~\ref{sec-install-inttypesize} for more information. A new set of routines has been designed, to ease the use of the \libscotch\ as a dynamic library. The \texttt{SCOTCH\_\lbt version} routine returns the version, release and patch level numbers of the library being used. The \texttt{SCOTCH\_\lbt *Alloc} routines, which are only available in the C interface at the time being, dynamically allocate storage space for the opaque API \scotch\ structures, which frees application programs from the need to be systematically recompiled because of possible changes of \scotch\ structure sizes. scotch_6.0.9/doc/src/scotch/s_f_me1.fig0000644000302600021200000002751213303015264020100 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 1800 3000 2100 3300 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 3000 2100 3000 2100 3300 1800 3300 1800 3000 4 0 0 15 0 0 16 0.0000 4 165 240 1825 3240 24\001 -6 6 1800 3600 2100 3900 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 3600 2100 3600 2100 3900 1800 3900 1800 3600 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 3600 1800 3900 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 3600 2100 3900 -6 6 1800 5400 2100 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 5400 2100 5400 2100 5700 1800 5700 1800 5400 4 0 0 10 0 0 16 0.0000 4 180 120 1900 5640 1\001 -6 6 1800 4200 2100 4500 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 2100 4200 1800 4500 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 1800 4200 2100 4500 -6 6 1800 600 2100 900 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 600 2100 600 2100 900 1800 900 1800 600 4 0 0 10 0 0 16 0.0000 4 180 120 1900 840 1\001 -6 6 7800 600 9300 4500 6 7800 600 8100 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 750 150 150 7950 750 8100 750 4 0 0 10 0 0 16 0.0000 4 165 120 7900 840 4\001 -6 6 9000 600 9300 900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 750 150 150 9150 750 9300 750 4 0 0 8 0 0 16 0.0000 4 180 240 9020 840 10\001 -6 6 8400 1200 8700 1500 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 1350 150 150 8550 1350 8700 1350 4 0 0 10 0 0 16 0.0000 4 165 120 8500 1440 2\001 -6 6 7800 1800 8100 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 1950 150 150 7950 1950 8100 1950 4 0 0 10 0 0 16 0.0000 4 180 120 7900 2040 5\001 -6 6 9000 1800 9300 2100 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 1950 150 150 9150 1950 9300 1950 4 0 0 8 0 0 16 0.0000 4 180 240 9020 2040 11\001 -6 6 8400 2400 8700 2700 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 2550 150 150 8550 2550 8700 2550 4 0 0 10 0 0 16 0.0000 4 180 120 8500 2640 1\001 -6 6 7800 3000 8100 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 3150 150 150 7950 3150 8100 3150 4 0 0 8 0 0 16 0.0000 4 165 120 7900 3240 7\001 -6 6 9000 3000 9300 3300 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 3150 150 150 9150 3150 9300 3150 4 0 0 10 0 0 16 0.0000 4 180 120 9100 3240 6\001 -6 6 8400 3600 8700 3900 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 8550 3750 150 150 8550 3750 8700 3750 4 0 0 10 0 0 16 0.0000 4 180 120 8500 3840 3\001 -6 6 7800 4200 8100 4500 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 7950 4350 150 150 7950 4350 8100 4350 4 0 0 8 0 0 16 0.0000 4 165 120 7900 4440 8\001 -6 6 9000 4200 9300 4500 1 3 0 1 0 7 12 0 20 0.000 1 0.0000 9150 4350 150 150 9150 4350 9300 4350 4 0 0 8 0 0 16 0.0000 4 180 120 9100 4440 9\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 7950 750 8550 1350 7950 1950 8550 2550 7950 3150 8550 3750 7950 4350 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 7 9150 750 8550 1350 9150 1950 8550 2550 9150 3150 8550 3750 9150 4350 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 8175 1350 8100 1725 7950 1950 8175 1800 8550 1725 8925 1800 9150 1950 9000 1725 8925 1350 9000 975 9150 750 8925 900 8550 975 8175 900 7950 750 8100 975 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 8175 2550 8100 2925 7950 3150 8175 3000 8550 2925 8925 3000 9150 3150 9000 2925 8925 2550 9000 2175 9150 1950 8925 2100 8550 2175 8175 2100 7950 1950 8100 2175 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 3 3 0 0 7 -1 60 0 4 0.000 0 0 0 16 8175 3750 8100 4125 7950 4350 8175 4200 8550 4125 8925 4200 9150 4350 9000 4125 8925 3750 9000 3375 9150 3150 8925 3300 8550 3375 8175 3300 7950 3150 8100 3375 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -6 6 9000 7050 9300 7350 2 2 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 5 9000 7050 9300 7050 9300 7350 9000 7350 9000 7050 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9300 7050 9000 7350 2 1 2 1 0 7 20 0 -1 3.000 0 0 -1 0 0 2 9000 7050 9300 7350 -6 6 1800 7050 2100 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 7050 2100 7050 2100 7350 1800 7350 1800 7050 4 0 0 10 0 0 16 0.0000 4 180 120 1900 7290 5\001 -6 6 2100 7050 2400 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 7050 2400 7050 2400 7350 2100 7350 2100 7050 4 0 0 15 0 0 16 0.0000 4 180 240 2125 7290 11\001 -6 6 2400 7050 2700 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 7050 2700 7050 2700 7350 2400 7350 2400 7050 4 0 0 10 0 0 16 0.0000 4 165 120 2500 7290 7\001 -6 6 2700 7050 3000 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 7050 3000 7050 3000 7350 2700 7350 2700 7050 4 0 0 10 0 0 16 0.0000 4 180 120 2800 7290 6\001 -6 6 3000 7050 3300 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 7050 3300 7050 3300 7350 3000 7350 3000 7050 4 0 0 15 0 0 16 0.0000 4 180 240 3025 7290 10\001 -6 6 3300 7050 3600 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 7050 3600 7050 3600 7350 3300 7350 3300 7050 4 0 0 10 0 0 16 0.0000 4 180 120 3400 7290 5\001 -6 6 3600 7050 3900 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 7050 3900 7050 3900 7350 3600 7350 3600 7050 4 0 0 15 0 0 16 0.0000 4 180 240 3625 7290 11\001 -6 6 3900 7050 4200 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 7050 4200 7050 4200 7350 3900 7350 3900 7050 4 0 0 10 0 0 16 0.0000 4 165 120 4000 7290 4\001 -6 6 4800 7050 5100 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 7050 5100 7050 5100 7350 4800 7350 4800 7050 4 0 0 10 0 0 16 0.0000 4 180 120 4900 7290 6\001 -6 6 5100 7050 5400 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 7050 5400 7050 5400 7350 5100 7350 5100 7050 4 0 0 10 0 0 16 0.0000 4 165 120 5200 7290 7\001 -6 6 4200 7050 4500 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 7050 4500 7050 4500 7350 4200 7350 4200 7050 4 0 0 10 0 0 16 0.0000 4 165 120 4300 7290 8\001 -6 6 4500 7050 4800 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 7050 4800 7050 4800 7350 4500 7350 4500 7050 4 0 0 10 0 0 16 0.0000 4 180 120 4600 7290 9\001 -6 6 5400 7050 5700 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5400 7050 5700 7050 5700 7350 5400 7350 5400 7050 4 0 0 10 0 0 16 0.0000 4 165 120 5500 7290 2\001 -6 6 5700 7050 6000 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5700 7050 6000 7050 6000 7350 5700 7350 5700 7050 4 0 0 10 0 0 16 0.0000 4 165 120 5800 7290 2\001 -6 6 6000 7050 6300 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6000 7050 6300 7050 6300 7350 6000 7350 6000 7050 4 0 0 10 0 0 16 0.0000 4 180 120 6100 7290 1\001 -6 6 6600 7050 6900 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6600 7050 6900 7050 6900 7350 6600 7350 6600 7050 4 0 0 10 0 0 16 0.0000 4 180 120 6700 7290 3\001 -6 6 6300 7050 6600 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6300 7050 6600 7050 6600 7350 6300 7350 6300 7050 4 0 0 10 0 0 16 0.0000 4 180 120 6400 7290 1\001 -6 6 6900 7050 7200 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 6900 7050 7200 7050 7200 7350 6900 7350 6900 7050 4 0 0 10 0 0 16 0.0000 4 180 120 7000 7290 1\001 -6 6 7200 7050 7500 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7200 7050 7500 7050 7500 7350 7200 7350 7200 7050 4 0 0 10 0 0 16 0.0000 4 180 120 7300 7290 3\001 -6 6 7500 7050 7800 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7500 7050 7800 7050 7800 7350 7500 7350 7500 7050 4 0 0 10 0 0 16 0.0000 4 180 120 7600 7290 3\001 -6 6 7800 7050 8100 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 7800 7050 8100 7050 8100 7350 7800 7350 7800 7050 4 0 0 10 0 0 16 0.0000 4 180 120 7900 7290 3\001 -6 6 8100 7050 8400 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8100 7050 8400 7050 8400 7350 8100 7350 8100 7050 4 0 0 10 0 0 16 0.0000 4 165 120 8200 7290 2\001 -6 6 8400 7050 8700 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8400 7050 8700 7050 8700 7350 8400 7350 8400 7050 4 0 0 10 0 0 16 0.0000 4 165 120 8500 7290 2\001 -6 6 8700 7050 9000 7350 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 8700 7050 9000 7050 9000 7350 8700 7350 8700 7050 4 0 0 10 0 0 16 0.0000 4 180 120 8800 7290 1\001 -6 6 2100 5400 2400 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2100 5400 2400 5400 2400 5700 2100 5700 2100 5400 4 0 0 15 0 0 16 0.0000 4 180 120 2200 5640 5\001 -6 6 2400 5400 2700 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2400 5400 2700 5400 2700 5700 2400 5700 2400 5400 4 0 0 15 0 0 16 0.0000 4 180 120 2500 5640 9\001 -6 6 5100 5400 5400 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 5100 5400 5400 5400 5400 5700 5100 5700 5100 5400 4 0 0 15 0 0 16 0.0000 4 180 240 5125 5640 25\001 -6 6 2700 5400 3000 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 2700 5400 3000 5400 3000 5700 2700 5700 2700 5400 4 0 0 15 0 0 16 0.0000 4 195 240 2725 5640 13\001 -6 6 3000 5400 3300 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3000 5400 3300 5400 3300 5700 3000 5700 3000 5400 4 0 0 15 0 0 16 0.0000 4 180 240 3025 5640 14\001 -6 6 3300 5400 3600 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3300 5400 3600 5400 3600 5700 3300 5700 3300 5400 4 0 0 15 0 0 16 0.0000 4 180 240 3325 5640 16\001 -6 6 3600 5400 3900 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3600 5400 3900 5400 3900 5700 3600 5700 3600 5400 4 0 0 15 0 0 16 0.0000 4 180 240 3625 5640 18\001 -6 6 3900 5400 4200 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 3900 5400 4200 5400 4200 5700 3900 5700 3900 5400 4 0 0 15 0 0 16 0.0000 4 165 240 3925 5640 20\001 -6 6 4200 5400 4500 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4200 5400 4500 5400 4500 5700 4200 5700 4200 5400 4 0 0 15 0 0 16 0.0000 4 180 240 4225 5640 21\001 -6 6 4500 5400 4800 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4500 5400 4800 5400 4800 5700 4500 5700 4500 5400 4 0 0 15 0 0 16 0.0000 4 165 240 4525 5640 22\001 -6 6 4800 5400 5100 5700 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 4800 5400 5100 5400 5100 5700 4800 5700 4800 5400 4 0 0 15 0 0 16 0.0000 4 180 240 4825 5640 23\001 -6 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 3 1 1 1.00 60.00 120.00 1800 4950 2100 4950 2100 5400 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1200 2100 1200 2100 1500 1800 1500 1800 1200 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 1800 2100 1800 2100 2100 1800 2100 1800 1800 2 2 0 1 0 7 15 0 20 0.000 0 0 7 0 0 5 1800 2400 2100 2400 2100 2700 1800 2700 1800 2400 2 1 0 1 0 7 15 0 -1 0.000 0 0 7 1 0 2 1 1 1.00 60.00 120.00 1950 5700 1950 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4050 5700 4050 6300 7650 6300 7650 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3750 5700 3750 6375 7050 6375 7050 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3450 5700 3450 6450 6450 6450 6450 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 3150 5700 3150 6525 5850 6525 5850 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2850 5700 2850 6600 5550 6600 5550 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2550 5700 2550 6675 4350 6675 4350 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 2250 5700 2250 6750 3150 6750 3150 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4350 5700 4350 6225 7950 6225 7950 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4650 5700 4650 6150 8250 6150 8250 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 4950 5700 4950 6075 8550 6075 8550 7050 2 1 0 1 0 7 20 0 -1 0.000 0 0 -1 1 0 4 1 1 1.00 60.00 120.00 5250 5700 5250 6000 9150 6000 9150 7050 4 0 0 20 0 12 16 0.0000 4 210 1050 600 3225 edgenbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 3825 vlbltab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 5625 verttab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 4425 velotab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 5025 vendtab\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2625 vnodnbr\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 825 velmbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 1425 vnodbas\001 4 0 0 20 0 12 16 0.0000 4 165 1050 600 2025 velmnbr\001 4 0 0 10 0 0 16 0.0000 4 165 120 1900 1440 4\001 4 0 0 10 0 0 16 0.0000 4 165 120 1900 2640 8\001 4 0 0 10 0 0 16 0.0000 4 180 120 1900 2040 3\001 4 0 0 20 0 12 16 0.0000 4 210 1050 600 7275 edgetab\001 scotch_6.0.9/doc/src/scotch/s_f_rub.fig0000644000302600021200000002052513303015264020203 0ustar pelegrinpelegrin#FIG 3.2 Landscape Center Inches Letter 100.00 Single 0 1200 2 6 900 450 6000 5475 6 1350 450 5850 4950 6 1500 600 5700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 600 5700 600 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1200 5700 1200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 2400 5700 2400 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3000 5700 3000 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 3600 5700 3600 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 1800 5700 1800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 4200 5700 4200 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 4800 5700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 1500 600 1500 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2100 600 2100 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 2700 600 2700 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3300 600 3300 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 3900 600 3900 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 4500 600 4500 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5100 600 5100 4800 2 1 2 1 -1 -1 10 0 -1 3.000 0 0 -1 0 0 2 5700 600 5700 4800 -6 6 1350 450 1650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4950 1650 4650 1350 4650 1350 4950 1650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 4350 1650 4050 1350 4050 1350 4350 1650 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 3750 1650 3450 1350 3450 1350 3750 1650 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 3150 1650 2850 1350 2850 1350 3150 1650 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 2550 1650 2250 1350 2250 1350 2550 1650 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 1950 1650 1650 1350 1650 1350 1950 1650 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 1350 1650 1050 1350 1050 1350 1350 1650 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 1650 750 1650 450 1350 450 1350 750 1650 750 -6 6 1950 450 2250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4950 2250 4650 1950 4650 1950 4950 2250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 4350 2250 4050 1950 4050 1950 4350 2250 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 3750 2250 3450 1950 3450 1950 3750 2250 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 3150 2250 2850 1950 2850 1950 3150 2250 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 2550 2250 2250 1950 2250 1950 2550 2250 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 1950 2250 1650 1950 1650 1950 1950 2250 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 1350 2250 1050 1950 1050 1950 1350 2250 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2250 750 2250 450 1950 450 1950 750 2250 750 -6 6 3150 450 3450 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4950 3450 4650 3150 4650 3150 4950 3450 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 4350 3450 4050 3150 4050 3150 4350 3450 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 3750 3450 3450 3150 3450 3150 3750 3450 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 3150 3450 2850 3150 2850 3150 3150 3450 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 2550 3450 2250 3150 2250 3150 2550 3450 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 1950 3450 1650 3150 1650 3150 1950 3450 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 1350 3450 1050 3150 1050 3150 1350 3450 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 3450 750 3450 450 3150 450 3150 750 3450 750 -6 6 3750 450 4050 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4950 4050 4650 3750 4650 3750 4950 4050 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 4350 4050 4050 3750 4050 3750 4350 4050 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 3750 4050 3450 3750 3450 3750 3750 4050 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 3150 4050 2850 3750 2850 3750 3150 4050 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 2550 4050 2250 3750 2250 3750 2550 4050 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 1950 4050 1650 3750 1650 3750 1950 4050 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 1350 4050 1050 3750 1050 3750 1350 4050 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4050 750 4050 450 3750 450 3750 750 4050 750 -6 6 4350 450 4650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4950 4650 4650 4350 4650 4350 4950 4650 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 4350 4650 4050 4350 4050 4350 4350 4650 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 3750 4650 3450 4350 3450 4350 3750 4650 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 3150 4650 2850 4350 2850 4350 3150 4650 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 2550 4650 2250 4350 2250 4350 2550 4650 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 1950 4650 1650 4350 1650 4350 1950 4650 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 1350 4650 1050 4350 1050 4350 1350 4650 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 4650 750 4650 450 4350 450 4350 750 4650 750 -6 6 4950 450 5250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4950 5250 4650 4950 4650 4950 4950 5250 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 4350 5250 4050 4950 4050 4950 4350 5250 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 3750 5250 3450 4950 3450 4950 3750 5250 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 3150 5250 2850 4950 2850 4950 3150 5250 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 2550 5250 2250 4950 2250 4950 2550 5250 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 1950 5250 1650 4950 1650 4950 1950 5250 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 1350 5250 1050 4950 1050 4950 1350 5250 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5250 750 5250 450 4950 450 4950 750 5250 750 -6 6 5550 450 5850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4950 5850 4650 5550 4650 5550 4950 5850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 4350 5850 4050 5550 4050 5550 4350 5850 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 3750 5850 3450 5550 3450 5550 3750 5850 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 3150 5850 2850 5550 2850 5550 3150 5850 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 2550 5850 2250 5550 2250 5550 2550 5850 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 1950 5850 1650 5550 1650 5550 1950 5850 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 1350 5850 1050 5550 1050 5550 1350 5850 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 5850 750 5850 450 5550 450 5550 750 5850 750 -6 6 2550 450 2850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4950 2850 4650 2550 4650 2550 4950 2850 4950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 4350 2850 4050 2550 4050 2550 4350 2850 4350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 3750 2850 3450 2550 3450 2550 3750 2850 3750 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 3150 2850 2850 2550 2850 2550 3150 2850 3150 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 2550 2850 2250 2550 2250 2550 2550 2850 2550 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 1950 2850 1650 2550 1650 2550 1950 2850 1950 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 1350 2850 1050 2550 1050 2550 1350 2850 1350 2 2 2 1 -1 -1 9 0 0 3.000 0 0 0 0 0 5 2850 750 2850 450 2550 450 2550 750 2850 750 -6 -6 6 2250 5175 2625 5475 4 0 -1 0 0 0 20 0.0000 4 210 210 2250 5400 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 2475 5475 0\001 -6 6 4650 5175 5025 5475 4 0 -1 0 0 0 20 0.0000 4 210 210 4650 5400 D\001 4 0 -1 0 0 0 16 0.0000 4 165 120 4875 5475 1\001 -6 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 3300 75 75 1800 3300 1875 3375 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2700 1200 75 75 2700 1200 2775 1275 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 2400 4500 75 75 2400 4500 2475 4575 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 1500 75 75 4800 1500 4875 1575 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 5400 3300 75 75 5400 3300 5475 3375 1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 4800 3900 75 75 4800 3900 4875 3975 2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 3600 2850 3600 4950 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 2850 3675 2850 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 3525 4950 3675 4950 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5925 2775 1275 2775 1275 5025 5925 5025 5925 2775 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 2925 975 2475 975 2475 1425 2925 1425 2925 975 2 4 0 2 -1 -1 0 0 -1 0.000 0 0 7 0 0 5 5325 975 4275 975 4275 2025 5325 2025 5325 975 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 4800 3900 2700 1200 2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 4800 3900 4800 1500 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 4800 3900 1800 3300 2 1 0 4 -1 -1 0 0 -1 0.000 0 0 7 0 0 2 4800 3900 2400 4500 2 1 2 4 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 4800 3900 5400 3300 4 0 -1 0 0 0 20 0.0000 4 210 210 900 3975 D\001 -6 scotch_6.0.9/doc/scotch_user6.0.pdf0000644000302600021200000405334513560004730017276 0ustar pelegrinpelegrin%PDF-1.7 %Çì¢ 5 0 obj <> stream xœµZK“ܶ¾ï5—ç”pª²4oÜ"'Nʮ؉­Õ)ÎAÒjwUÞ—²«×¿Ï×H68ÄH)ËV¹ Ðϯ¿çÍN´Sü§þýòæä«ŸÂîòáäÍÎPJ£yžtÄ¿#CnLq炥ѕåq÷×»“OÔîòäÍ ©²^Õív_ŸaIÚQ59·;»8)'öLcÔn猣ÝÙÍÉ¿‡§ûS5jGAÓðr!ýpÇÓŽ|"7<æqÐøK äHVWûSÜHÃs~‰a¸-›ik†óòXE;\ó¬×>âˆ×eì¬2Ëeõ$…"]¥ð),Rh5KAŽL•"z[¤°£snðeqðÚ£8FIŒ×ó<½‰fxÈb[ï^ñû˜DÃó6:&Ÿ†?Šmª¾. çieþÒÃÛE‹ªœIѱþÓ´Øý?gßÁ;D»4&XÄf÷5âáîÔÄ1ª¨wgçðËÏ¿eJ8ûÝ^‡ÑZ_÷²^åYR•w)ev ±HwÆw°¥58;±oŒ±c$jžËZ87ÀNëé¼EZ¦Þ/2UMÌŽhLŽ£éâä”üHÖÓî‘梎E•¿í#ÁnÚÛ&íTŒ%lŒŽr˚設~¿·O¥,œŒ¤½‡ÃïÄâ¬_ð.*¢ùÐ8ükAô˜|%^¼‹åX®¹›K åABB1ÍF8aL6îNÉŽÞUï=«ëm·yÇB"|#@=Ô(ìž=IÉ*eš7ùMŠÈßíaâ1QÖ>ÍáÆçY·LÚá묘%eBcA©dóâ,‘tÎÛEõeo«Âð$¤þ‘ãBÍ{õt£B~Êc‰ É·9{|²xøSÙÆ",Ÿ}Ÿ_pFçõyò}1€Ñ¦àQ5bÏt7Ù24)êØ& ÙÕ“'å¬@þ7rdÈ`öt~O<_6;Í1¨U nøgLg—Å«ãjôRò$ ”ó˜`lÒ“É‹ÅOº‘Š€ÊÄ.¼]Sí`•$ÉrÎo@ày=ÄÃ2ë^ìµC*Q›tëÄ=À³G‘Ðu;LÛI|ìŒ(nÊäsȱcÕšŒ_E†M¡ûDhòM®AV¥ ‡r!qàG9?Ó¬™‰Ñ»AFå“λµ8Y\£[ùøBXIBÝs1+Æ/ÅønmÉ:ÿ Æ£Xs¿ÎÊ:¾>çõrÍeGÎ×9åüŸÅzy–Ôñ…XsPgZ]òøb{ýVå5ng ¯½W©þéfŽÞ/iÞð.6Ê¥À2ëòbÜ:ðsÝuzÐ Î*®Y"£—Ä8-ãª`ØE$p5Và"1IBù!KEÁ'¬Š1 DðE¡&±²!Àå#³Idp`Bþà™e·M©_ çÀeµ²nâ7I qJ()p­‡îÞ„©jò…´¹bˆÑûurxʰhX®ÈšW ´¡•RI‚r ßÖÈp½)h€k°>$Kšyß-{'ù!6ï«´Ø·¬œ°0Sb”ŽæŒÂq‹ 4×ew'ÔÔõ.ø›¬ @<©ë«"†¦ÔœRc_ô ÷ób9ûbÛ\×R¤æ‰<¿y°%nsÔí|Ôy‘Ö›4¡Ë$!«ŽÎCn&-U¶£À„»+ÈÝæ™‹LòùžD™¦&Ô-š„ºš“xŽàl]­8­%àÉ-ÄÁLkH›˜{4~7z­·â¹¤U˜êZ«Œ¶D…Å «e…~Lé ø×°?ËõöuA€(.9J¨~pkU ™&µ¢NqR˨Y«<ýRhX´Ê¹°¥•å®3ÅI-Æ!tXh®K½GæNá¸Y™j E&-s+H,êN‘à¬ipR:¡•KQ¯§È?Œ¿m_U¡}ê$šÜ¢ ÒJ±ÙFï£n*‹'7ÍæÞÊÙjmi“µÅjÒö­§¨æÊ ¤ƒ[¡C~£Þe>©Œ‰"•›t¯,Åx[1 ]0¬¾Öfª´ý:ŠÌµNÉ× ë¥ÖZTľO2r/¹š†lËvs‘õ`“2)êŽ‚Ž—ù&¨VuÚÄcägÀÒðÎuu„”åÒó•8ä*Ó:Óð±rjSZšæ²-ݬYœ¥C¯ámÌw/ßf";¿ÇjjS³I“‚׊£âçnú ,Fžxñ¢²éã8‹ÍàhŒq¦H]:{¿€’L‡Ï%lP†ÒбUQÛüÚòs û*h[d6É&Ãö®ÂMRlóq™2Ú¤z?¢íÜ«»‘ ¶‘q‹œÏ ×8¯B¿5ÕÁ>z(ºDéÛy$÷’)"iÍöêÎn,¤+¡Æ\È"<¶+GPµžG¸¨ù˜•UuJ#MWÓ‡*ÊÕryê"®l¡Ž´9´VMiÐÈVw!Ó˜—xqp§Vç¨É¼ýú!X\èj Yb6Í?zEëÓYZR¬Ø ©,÷kü™î’rà “6 p¾=r‡г…,—C}Œka…mâ]ºÿŽk+%CûÁÎk7VQåK4Þ¯Ö{çµþ†÷…_üÔÚÛü¹KÖÞ)İÆ9žfš%ùžä(dÏv0|k¶ºJ2cDûºÍ>X6ŒùÛÝa\ÖÔŽ‘û†Í>87[4åÑúê‚ Ep¬|2¹;=Ó6„­hr‰7m¿1É}“ÞòD±‰J,ÝjêæK )æÖ !„!E_¾ÕlÀ&€“„c<º;D•Ù2N½¼< y1¼­_õg0Ƈ—›²Uznì¨ýÜ4N>´-NJ¼gó$h|Õ[´ÌÂZd“%újÁ ;|á”n%›1î}y¬´9ÞAÉÆ/·ÕA>ø;(ô(-n]›øÊ&ÌγöV¾ ލGþªÑ¡ïÛ4¦–Kª¡u¯=oËWø‹Yšö‚ç\ùa0žcï´Ëg¸R X½@«ÛBšA\·(³”¡å¥; Ú55º&| j¾FËÕ¾nï­M5ýו~Ó›•3³œüÉôšÜ¦Äê ‹m§eBÙá_¾@¹U»c|£;êCŸò—ÛÇÝ<¯ípŽÑÎ^!ˆ*B† WéÓ<í¼Ê©ã²‚!Oó á^Áé³*‘qú <ÁM昂ƃ€Ä^«Rõ£¶ ¬äŸEúXtÁ¡GªC¶Þ¼-QÏ ;³YÛ+òbã_Ê{f¡†!Ùùîƒzµó.¨q=¶ßø­Øa½Ï•¸*@{Ã/‡ÐÛÂ\þYŒ[_ðý+3%¹a§m3¨¬«HöÐûúEðE€tèüÙ0ñÍѧ/¿[TàƒðÁ‹èzEššJ+3}X%váß¿u’ú×óÁ†n-|p}]Qi…ËÀ.hE}«ZÌ(÷pv°%ï1$2_â*?ÏÜGÇŸk=ß°ùÓIІ·t¯<îS¢pp#s÷÷9ó×Õ.™~¸J Aš[é q“^®,ó×ßϸ—ÍüÖ%crÀááÿßâ –ÈwÒiÕ;³â:/–¿äk;þ=Öª—Äkü3Ã^‰™yÿºEd^¶ý’#—C3‚¬Ëóºñ‚:Ýxk«7Aü¶„Š3}1Ѝ1¥nõí²û®…-hõ¶Ÿ¯ÀY‰¶$èÂåÚ _ÔË`gåW³KQ3æêœ7så¹¹W”×^—†‡Ýúêç«Hw¯ò/éÐF§ú›Oš5Êï|svò#þüEg\¿endstream endobj 6 0 obj 3063 endobj 27 0 obj <> stream xœí\Ks·¾oùGìq骅Ñxã;Ž“”“ØÖÚW )QNH*¶$[ʯO70Æ,°;+‘ôòQ:h4Â`0À‡¯»¿nìÏK)`)éO÷÷ÙÕâ³ïüòâõB./?/ ýç²ûëìjùùÄ%¡SËÍ‹E~– ÜÒ+-¤×ËÍÕâÇÕ'k) @аzE×^íôêúDƒ°üê ÝU6Z¥VÏéœwÊv-Œ6E‹×tmµr6üsóWˆŠË(¢SÎÐH”VÆåæëÅæÓWp²ŽÊ‹où =§Ut¨g)¢Ž.÷ ¬Ž«_R çm04R|9WçtÛÖ¯Þ²ë³Ô\Æ8éæ§ô‘8Vé±üv«µ5øÎáQ7ÞÊ;œµÍ9Î’O e”:ÿ¨µÖQhí–kÀϳòC@iíM\‰4m½òôÑ q `õ,Í~PPyˆù«ÓñÁî¶Õ¼ë¿¯wu…­%v¡¤âOþ—uί»^ø?Úzmpñ/NÖÎka‚¦ÑZ‰“â^šEáN_ì½çp÷ÙŒ‹ 7:zôWñ¡ªøàKÈV7élŒyçyo4.ìs‚‡Š<8ÞX'cï2Æ!h>‚vÀF°ù(‰œÔœ6Ñ]+/Œ±P,=_¶ÜB{_´xQã(xAw‘¹}É\/·‰& ®ëDô IMÆñ•ÖƒÎtÝ ä-Çoe°ÎÒû î,ío•¸îhBš© ^£g€Ö5,×d!dk¥F[¼I+¢Csù’™Tb• ™èg KË,*7ºgä+h…ëù’ú0h¸2£u]t¶=„ä„8-¼4aõïì›à‹ï&0i´Éýû‚÷À_R1Ûá³m¬ï'bÙþ#Ñ›²6ö¬g#¶£_ëd æŽ n+¾#8ŸóÄÛ°ý†Üé#~©2Çb‡Éæ!Æm b4ÔÀ£W°úõ!hu°ÜØòE½d׬ɿÌÉ›óûoˆÿ,ùïù/d¹ 4æñªy•“fG\RƒAÐuˆbqŸ‡*g™{‘Ñ$]lÒ?\ÔŸòkÞË5»‘{4ÈÚ¼›ËÜÜ!.±ÉÀæŒØy ök‡î¢ ƒÙN>ÞD’&*ët…®ã‡DYz]×Ý!N×oú`*ù5Ø…‘N…Þ I[’û®œÝçQ7¹Jgâ´¸;ø8ç]‹äå«€X±¡åPóÖ½òm‡ßµÇß àjFkêÁ·<ÇFóSròÆߦOðÃDÕÃoïöÅö_÷g÷ÁíÆãh,6#¹»ü<ƒÀ#L˜ƒÁ1ÈÐs™—Íaß%ñg4;hÚTêÔK#bä²À¯É·VÎ÷ð ‰ü<¿Ç[Ùvd¶ÓÁ츣…&þúWõ]²C¸@V@Â5“^t1Þ®o™Ê¨Òh_È:‰qÐÌ7 P•Š8ùQïE%( ËŒ}ÁЕ,±ª<kqwîð€Á8ÜêBˆ'›¶½äf ·d«)„-Ú…’Øqx¾É»Ãíeè´V{º‚2‡róÔ0ÝÁGm9Á‡aEXù2è@Š­‘ŒfqÕîµËf-ITЃÅ„ÅYò Ä)ÁRg‰uª*€”BÒGïçÞ<ôæˆqvæ >Ùò‡8Üùè¼ W%Ù Á÷¾ó²@ ™ï·`l¥è“"ÑôÈPfwËLÚâ¼kSÊL¦.3q!ˆ«Ê¬ç}Ðv~³šÑ‡ýóˆš÷yñѼ¸ÂEm¤¹[XáAh£*©N±„=<Å@ùÝ èhËqÎBÆs•%¢47nD„ŠGSçx_ñçâÃ}t0<©mÖ~w0LÐ;Ç;7WKz²ºA¸ic„¼µ´ÑýƒÐ()¯äÉþB *§àÉŽî÷i $b&•=¤êé‹RðVÌšÃM%mø¦xÜ’5úx\¡žÜêåL¬ì4Ek|?Ü=±“Ã_Öa\áp»,:Ëu•SÍJ®ïR¹:ÄV¸ÖÊW 7rõ›d/·ë">eoa½]åÞÀë›’„Œ;g\FaõQï”A…ÿÒ‘¥~«{¦P´ûgJ¥¡1ê>£¯½¾GŒ>ùÀÐú¶µIÒ’¨Î€k“ndî?%Š–*èPh†—ì:S´ *Å¥¤öQúŽú5#úó\Æægòÿin®´çÅh̓Fo™$ب;.Någ½”º(YžÖ½5M:ÀÔ é«-ÃG»]Ÿ0 h¥ÉŸŽèôû;€ò“ãÔNË7@P×[Úϰö~îÚ»8V8ó;èy¼0ØÎG6` k\À—²°‘ÓÈ'Y{® ²«/«@“;2 !ˆcÇÉ}E„‹ˆQÝÛœ¤ÂrÛ ¡·œ¿!&kOi¹vã:éŽ|á2Ð)Ã5€yîÃŽdeWÐU?Õ¨æä¬Ò•¹û`+õž[KÖ ó(®Äp0~ÂÚ_7Úœµ…·[5¶©”iwUP}eø\£2u7`Ì5˸¸Þ×k–+°t“ª¬îñ2†= —¬â”Çš]ΊӷŠeÊ2ðƼ=_ÓFú%kžÓ(.`XÈñZî|86¸ Œsk‚h S½÷£Ñ:Ís‹MÀ Š~UbÿmŒú F»ž>£¬ö2ºŠ„ƒºÑ}èE ·ÁzUË#{+n4F{lbf¶¡Qšúa¡Ç‚Ó–e‡¢&\¦ªOæf³§ ³§§ÉCo.É.&ýx]F—â¿áîåpY3¢h¤¼–Û¢ÊÑÀâ‘àfm½p0=dtnÔâæjÄÍ °|¹Y|»0BÚåo ¹üjÑ;t— ðkÀ,¯JJ/bî\.ž5Ævrªªû[E“”{*ÿ’í§è{Êô‡Ç‚²GCÚ˜©4zõ­àphtÏ#_wgøônðƯõ|ã0~/_Ð¥Q «?h¥Í:À½ ÑûŠÔI¢É#ရä?ªù@ ¾añzz÷ÉÐnÊäO ‘ÒªåÚÚ§?:ðÍ·‹ÿ\o°ºendstream endobj 28 0 obj 2964 endobj 36 0 obj <> stream xœíK“Û6Çïú:J©ŒFãy\g³Én9I%žÝÚª­=ÌËc—=ž‰=Žã|ú4HŠlrI$õ³|0 ûÇ?@R¿M¥€©ŒÿŠÿ/o'Ï~uÓ›9½™ü6ìÓâ¿ËÛéó30 "XeõôìÕ$ÿ$LA¡ž:…B:œžÝNþ7ss)4¢Óa&æ )Sn†íÝ&ëÖÁ™ÿŸý‹ÂÚBÂ{—;»¢©oh0 ×ÆÍ.³f°^Í~/{ó)êǪŒp(Ãr ZÛH)œ'ÓÔ!ÐYð{]ØumX4CnfP! Äf´ËÂ8aÁO „ÑrstƒÅö„å¶‚å¼ê½_Í «Ùž•GÔ¶´(ÄúÒÙz÷¥µÄÙ‡ª÷¡l¶}§€êà=U }Â`ZÄCczaè†cø¶ÆÞwg“_&ZH3ýL*üý‚³Âø© „3ÓÛ‰’҉ʞw“—µZų”Í@9•kõ7óE ‰µ6Ç"vO‹C]q(jµ‡ÚõáÐï„Ã>o¬Pœ½¼cz¸=o„—£ÇâcÕ|]jd«&ûàäðÉr uN 4H.ÃpLªÞUsëD¡½< Xž7ÖŸ%73(Á)Ô3~¥º«úPõ^ÃQ2¤¶ž10„`8B£ =Bz§2¤†3ô© Î(CGΗ¡ž‘:C{"T©Ìcí:6„VÔ¾†«î‚ÐíX3}Ü €LOn6«˜àœ0¼`°ìé_¬¢è‚kU{¦°Q3­×ªË—í‰á˜ËCa—ÐõDh ¢Ž!“*™?ûUn—E0B; YRı•™Ç“—Pšü‘›½ˆìo@ÙÙ›ØvÁ(éf±m½2ý‡Œ/ë=ÌÎc¼·y÷:4!­×:jOž¸ÜèËÖÈ 1?Xc¼Ôm-QX‰,§H_€T(`ö- P1¸lû°ÀÿËÛoXû}lg<±~3§õ°ˆõEyȯÙë8D K§ýCþ 5ïªãû”F2Hm’bMÎ/×ÌÆ\gc¬tÒÒµ–MP›ñUöI-­ò…}ë±™QVÅþì{p…5-*E±ÀÅKš/¸@kZ'ߤ;&èüÛcP2´ŒôJç»\õ§z™5*·`¼@ ºêAg’Ô$À ­ðvû3l¨ÞγËM9E«/H"èÊ×£ìöã¡tØ/&gßtå@ ÿ˜{ 9 ã`gŸâŠÆºó#µ*ƒvžôlûÉÇ©bR/Öwg[Ù¸«Øˆq›$wèƒ÷Œ7™É¼Ï:f”*ì™ ÷UW¹¢±- rÏ–Í÷6k[oÒΖ´táHû•3‚Ñ#W¥2&d!Y<Ó2PxÆ sÎ/ýÈŽWJÖy¹Ì-›ÌŽlÆB Ðh>9ˆ/9€µe>fᦣ<Ã×Ú<ˆjHZzŠLÜÈKÝõPRÖÏõ˜ ³XPé7ãå\Åê’Ôµ@8¥"E€ì`öy®¢©È+´û’«Üíek¶çÿÉl÷CBBÈkõÕsÂÕ†?ªL¶˜Ä0Lxhp¾„@×Âæ´\ƒó‘ÑœUÉ~û<å_£´Ô7õ:².Éù[–V§€ ŒÖ˜Î¿˜/Y›ùÔî›–Ú$} –MyJcIpû(> d6K„¬°Dèų̂<Î42 )b]ÒEp¢s Y–fÒVdN•Ó#&IP€í1IÃGW¯‘"ÑÒøfñÄò6ŒÆïa|·= ЭÀm_+]TÖ¼N8ƒ–4D #E[ˆ𑉕LÔwG»ƒÀ2“ç±[‘=I›y>z7_ÄÐÁQZ™–4àm•k&ÖÔ€ YY#‰IȰÂI E·$5'ŇMm[uKF°LF^2묬N>J*¸éoª!_ò2˜“¦ædŠO*:ÞåÜÚ­*À–fE +Ð É8GIrT¯ÃwÄh]Æòï*c)h0Vâ:}pÁ.UfY‰ðß)JW#“×+xµö¡ÊYxyc]!¾ø;iO¹z è°ÉÄ›qnTÜ[¡k'ÆX¶• NE²Ågcpù×EðvÇMµ‡» ^ÖO•øÛÜ”2;†œëf8nFM0NéÎÞðÄXê¾!”À‡çÈ †8[ ù‹Ô- ©þ;¶3Ø\²m;ÑÆGN@ëР‡e.ów‚LçÝ€‘¢Ï4¢®âãCÜ%ËØþ3÷(hÎÐXÇx‰‡Q…­‚ö³?н°- Z•Ú‚J`rí)7íå±`ÃöadYãϱÛS‚††#xÅ4‘!¸iöGñ¥Ô'áV)4±¡s1ó¤ÜjUwj¤“åMY+KPÉ÷§” ýTÅÿE±Á{ÝŒí³XKÖc-®÷Ìǵï'RTnhVcx¿Ôu zIg'O~OŒ­–ð¿ñÌê¨Xj³ÛUuY´8‹n•i‹²¢D±بjF»76^ÙçŠ4º¿4¾Òy›¯åËšû†ª(0n»Ýb«bˆ²ÂCQš{P'tÀvº±6LQNÓ¹h>˜’¤4QY&JðsÕ{Ö:à‡²Y>5_qBö*o %‰ñ©)°$P¶ìéñž°Bç3:IùcSçóÆS3Y3»:Õëª÷»ªùGÕ|S5W?ê®ã„ßó“'&½)”ˆ4»ay/²:0Êi8G¹è€²CáŒëŽò?«æûå“CŒ²…ìul å¢gÊ(«í¡Ê/ª&{’Íp5¢¼”×= “@Yeí}C•‹ž(k/¬±ÝQþ©•_ö|ùõˆò¶P+P^ŸÑ%jP‡EéKÊZ¬\ô @­ ÝQ~ÙŠòï#ÊûF¹_€ÑéUÂ;@Y!åÞ£\ô @™òrRƒPfòŸ#ÊÛB¹Š*š7A,9³ÊæIÖÙø'Y]ŒrW‘³Zïª*21‰»)³™à…‡#Ds`™- i­Ì¶. 6íÝ.³Að¶®·ËžþzK3Ä·u×ÛçUóS«ô¾kävù r¥ ›ø„k¥ÂëÞW¯‚§l¶v¾³õšç;_ú¬u@ËùÆøÖpì|#Б?à|Ó ¤~ßç»õ$ÇÐÛòt;ð'Je¶Y”Ÿ¸T\Fo¥ c—jÑ3àRõ†ÎÛÞ®TµòJµñ}%ï%øÊ£æ[H(A³áÖNäÁQ¬…5ŸSô ÙaüvÝIf‡ÌÊ-÷­$?¬Ö@2ˆóûx¡ñ©¢Üx5@›f« ’\C+ÉŠ“\ô ÙÆS¸/gŸGIîÌqã©úš$÷L\Aíµ@ÇA.z€¬}v&ù‡Æ€GqÆÅXvÙÊ]*ˆ ”\A4¾¡ÉEÏ”ã-®GœÌ¶(Ù+6™WDþ3h¯FQîLrãF½zœÜ/áëô{f; Ye/iã$=HŽeRÕC”le¶ù UySqòVQ'wúE´ Ò Z€‘\ô âËæzhr’q$yÉfë$wúÑ´í“â«€,ßj_öô'9x!ãÌ;%ù¿#É[$YI!5N+ïŶë?`“QóËä/­FV©endstream endobj 37 0 obj 2736 endobj 41 0 obj <> stream xœíYsܸÇßçSÌã¨*Bpk¯³Ù”“=¤ÚlU*ŽäÕº"Y^Ë^oåÓ§ÁcЄHÎ=cH2Ëÿ5Ið‡ÝÐokÎÄšÇÍçÅÍêÏ?ºõÕÝŠ¯¯V¿­DõÃuóqq³~v„X¬´z}þ˪þM±:0môÚIŸSëó›Õ¿6þ„3­”ÓaÃNN9SÊ8é6¦_•¬ƒ3¾­ñïó¿Á5UçšJ0ï]¼òù%\å * åµq›çU1X/7ß%õ¼·Â_·Åxç«Všq³þOÿÍJ ¥àâóHæÌú«™·[åzu6ØFª·ÀÓµ…ÔF¯Ò½OÅ‹XÔñ&6¿&õ,?¦â:’¿ 7-}h ÜpΜÇ,êàùÏtµºè¦…°Š…šR!CØØm16%ÔÒ¬XŸ ÉŒ†BÕ„³©e¨Þ¢,¸c “\ gFºé Ÿ§âu*¾NEdì—­…>¼ ¼çÅgÀûÉ0X‹´1T¤eY¤mð¢ë[e>Ô68œ$A}ÛûkÈgß% rÔ}[huèaGÂû±2í2¦%ø1¨µ#B­ Cíe3] ¤½aZÐüô¤Õ‚ôa‘&ûi]i§8ƒk!¦…µ“`èóù韨'Cí3¨ g&>{AmÁ"‡™’€æ´®©‡…MÕ÷ðcÆ­vns•Ô×Ñ€¶Üq»ùpr ¦˜ bseãŒoÞySûŠ4É;¦ßÔwá…ó›·µ'€ d£®leüñVĹF’™‹u4 Ü6˜†¶}M†nï#ªü¡z0ÃWƒñÃßœ:m×O’µHS|-<¨¶Ë S%&\Øogw¹Ò2þS»ùÏF!øO혋­1Õ~Ýë?oRñ/™±ÚÂ]R?,®”ìJ§Œ –…¡VFCÆP7 jp ’Û#@F ¯“…÷}u¨÷…:æqP«ÂPKéá[CÝ(¨¥dÖÃS?KÅ7É»¤ö_mÜ;ü4tÔŸ Ôæ)Æ‘<µ. 5 ÄYðêF!@-`ìŽá©Ïz¡þ_æ¿O½êDr³#×ï©gŽ©MY¨Mp޼ÎÖ*ó¡ ÐÇÀô?Sñª×Â2¤>,Ó3µ-Ì´7¢ë¨[…À´×,„c@* G½ÌIP‹ÃCí Cí$ˆ7®[…µ“Lë#0ýTü˜,,sC:ȵãsC·];þ¦ZYU2¼ÈújK4LvªÔ —xãŠlºgµ·ºÈ[êz¯fN¸ã¬÷jï™…êŸçE?V¬dµx 3jxË{†A¸~¹ðš0ô~»ÅF!¸E ßM`ÚU¯[|Õ»L€<äW©xÝ[¼M.·8ƒßù± ¯¸tÄÜ(££õšDò³¬.ÚÎ×—È´C FïàÀ÷V!Píu\Yx0T [j hV9>ln¹»“ +à&ÜZ\“ …}µ‹ãÞŽÛnàN2.üÃüï½>$ }÷ð%ž'1p_p,³xÕ£U€›À´=†ï_¿{?Êä2Âî#™’º4@r(L²v†Ã˜äF!¬- œæª¿>ô®¹…eýnÊyH2}ý®ü[¨•61”AÝ(¨•†¾NsÏyÌÄ=¾o’…ï“úÓâ©'ã=œxK‚ÞîÅ¿Ô>@ó 3ÿÝ(¾y`ÒHßynÔ½éᲩø8ø.|H¨ØyWÿO¶Š3Ï@óÜߦ"ZâHër8î¢ý—½?ì^ÅåK?³o<Þ{"æ,·¤©åÃ9BêVŸˆùF!`ïuä©0ößgW»w ö³±§ÓMaìp݈þV!`ï3mêÕA±_ÆéÇüðqRˆo[˜od7¸¿U|›À¸$¾ÑX¤ŸçráûQðí ó­­e¾3Toߺþ¤ð}Ö õïË<ô|çáåÛæ[iÁ>ï U|ÇEóßyx]Ì“À¾Ì7€Dä;æ[ —À|7 o Ä›Cñïh.ãïó‡jh<¹gð‰ßf"V…à¤húª èð:œsxZUÑÆÈÐI.Ä9¿ŸH»IG¼ŽY†–©Ð1}/÷±Rß¡dÂ_ëìD¯[µ{Ð20”š8¤ß¶6Þ"ø °ŽîùOí“Ø¡ƒúðâgÙ#ó~NgUã²i…HÞiÓíÍ~D×¼‹eç »uŸ¿¦á”Ñ#·U¥$Zð j{žÝASD ÜK¼ÛÀãÝ~nGÈ ¥òL‹=óäÂI”2ؘ(†Ü{«Ìwï`IGsïý‘ï:²œô÷žÏâCÿgR]8£Rz˜Ä‹*­B Ú+æhKå» ®7Gk hÐŽâЪùxÀ÷uÙ8Þyèlç8²»Brá4Ké„b¶ã´…€wŒX´4§MÜÈYÆä¨ÎÃhñœsǞπ\8ãRˆ²›ðÐ*¨‡V¡å©M€·,þûP¤çQ¶SŽ“ý{åP×VvSZ…€z<ìÜÒ’‹§ þ]RÑ¢ùõ(Ô_lJæ4ÀqvæLÀ ggJ¸#&ð9­BLÃ\Ÿø½žøf‡…%b|Ô£'[σºpF¦”016øHˆV!@-9 †æµçA=}¬²`uXïž'kÇШ\Žuîm7¥­U¬sÏ41¥­Ÿõü¼ö{š`9G•Ä÷Ø‘k3}yá”Mà¥w²#Ze>ß"Àœ˜ÝFæ{O·¾ÏQWAjJ·x¨ç[ù^0i÷D=l·:_FU(˹ÝÜžHð{Éæüšä*îLî¿»)Ù{3þ1°Wéaîmoưÿ°ö7“Á?ùýÍæÅN[ouÂl_lýÛáö7|Ië0²¿¹wGÈöü¥ U‚Ìžá!nu ÇãéØç7 Áç;hNMóù;w…ž' ýgn£ºèœ ô¥0ëõÅßóø–NÞÐ<Ö o€ ãã1Þ˜õF!°n<ž6~ßÉú‹da$ýyYaœx¾Ãß9ÿmÇuðÂ[ Bl¸V!® ³Äl¸#mñß;•(ÿ³ Ôï!âÙw¨ßKF²å¼§áÇpM9–yïÂ{¤ÁX¸¼ÆÒ*󞈸ñ¿ðŸz‡åh,þi|:àÝȘah`œ{«}ÝVÝcU*š~XýñëÜendstream endobj 42 0 obj 2673 endobj 46 0 obj <> stream xœíK“ã¶Çïú:J‡A€ÆûÇŽ“”]{tsåà̬g·²³»Þ‡íäÓ§!’b$%’ ÍˇÁ¶Aðõë¿ðè]s&Ö<üWþ½{\ýéG»~ø¸âë‡Õ¯+±ÿŸëòÏÝãú«Vbí™7`Ôz÷˪8R¬…òLiµ¶ ·r½{\ý´q[Δ”Vù ÛÞp&¥¶`7¾Û\ÔVÞêíþ'’IÁœ³át»{lú+ é”¶›¿ì‹Þ8ؼ¨­»Î ;Ã9¾Ù­~X)Æõúw¼åoW ¤Ä»7Ìêõ#ZŒbÎ,oV·½Fv>l©¢…úÁ<ÔWô¡.þŠ*\Äæ}m}U¬‹/ëâã©Èý¿ë<ŒÔý\·ð©ëlÅ«i2à=Þ™ðÕ«Áwª9gÖù¨¨°¢s®¿ÂŠvlÑà —à6bO£ïiÑŠáAÜc˜àj}#€ieDñÆaïó``]pË$E½0$.8Ó`sþ׺øº.þÑÙØ}ݹD0)NúÇõãï#ügRA¿Ö“ðü7üP#‹'ïDSõ+Ët_0Þ2o!ÉvQÝ¢øïºø]Ý»κ÷Gé4åÛÀ¬x>U©‡ºÈ#Ö¥F©w%ëÊ&².2³î´a@Q/ ¤;Í”HSý“¤ßÖ- ¿ Õá…ôNÒEDºÆÇU½ææFc'Wƒ/Èó(|‡ëÊuåWÁ¬­vøÒnöU”G¾!Õ_†²2Ürƒïlð†+Ki˜ô¦?loãFãý\[ß'”x£áäR"öj¯—íÃîI]z>R…ÞÖ[r/¡i`^4j“Ó|&mÚ·­¹ç²jÐ ëª[çÿ¸½ñÜàuë§‚fJrÍ@µ»?I‚Ã.v2ÇCzàîyäØà3âžêqiIdƒwÇÓùEçauw¢ÐÛ¢…Û£ÒË÷¯ëL]à+ }væ ¬6²$|‹Z„¿ 5„4•ãÝÃ÷d6¿c]à2hæpÝ­‡ ¯²¶Þýµ„W2/Ý™”W2'Üy”Wz`N«'ˆf-Âí®Ï8He—»Ñ"LúÁ×$ÂR«H„KK‚ã¨¸É Âô¦_Eu‹â]]üÏ¡….ív2¸„›(ÞWà©Úa´ÙàK4<=dÆð§A+Š}iIÀ€™ Y±_&»çÅžNv§«½ÌŒ½à8LsûÒ’€½àøs‘[퓱/&[Óè»ëœî 0ˆ‡|¾ "_p`B÷¼ÓT^_ÐÞZ2_¨,Ó}[@•Èá ßÔÅ?:A>N¯ÕÌN©~ÐëzF@ãç\z ×™¡wZ4*KôN1ï³Pÿ÷ºøv¡þz©7™©·€¨ÒõþÊ’@½¦TèIGeÊÊçý¡hŽAŸ<ĵ™¡7ø\CêKKô:¼ó,RÛ‰úàUÐ…úaÔ'K½ËL½Â7-½úÒ’@½²xwWýæûºR÷ýQ¯xFó:6¢~Lãiê}fêñŠë„úÒ’@½Tød³ôpÆ`¿ëláeWñ™{@ÆëðÖÅøu,Ø[¿51Á]oSæ·db™ÎwmÖ ³Æd©ó¿avZ3Ëõ Ùð­©êsgÃKmðÒGïþEô9öSæ€ÿjì }È(€¼ÅŽÙø5ݭÙ'ÊOÍ<©, :ŒM#‘…ìÙQ ìÎ&–_´pwT:—Ï7Œã[€Å~†Ÿ‹ïÌSâB„} ߥ%o¯UßÃfü–EøsNsà‡/ùôðyò¸3Í ³Ê’À7wLUfù6Í·ð}f¾Óõ;ó”·ðøûÝÈO¨,Óù^3We˜Mä{ØØoá{¾ãœ‰ATæ2#»v¤Sø¬=°Ý6¬ÁPd¸÷¶l[™b¡d˜][ƃCǃñ—¤&ŽÍUŽ…åaÿª·¥%Ao->`•¦·Ã’×í:õ:ªÛj\Ãñ5Èg9ÝúÔ´’ê3ñnÂæ–”úÒ’@=>!áÒzÑ©'7MfLH´T|9­Ùhr¶#·‡Å·õúÍÓþ–¼ê*¦¨ß’1¢ìñ…Ì#J¡ÜFþXeI𥙩òÇ.ë ñrcü °,½E}¦/Šô ž{pr Í ®, ¨cÓÜÙkD½%åE Göà\Ö#Û0ñS‚=9ÌJ·Í<‰Ê’à8žÒ2‹Øÿ³¿cß:Å‹º…ߺ<à™cg®Í‹}æ˜+Áž‚R_ G¯ñ6‹ìÏ ýÒÛ?í Þþð8¬OȇåµÁ+¡ó=•eº/xw”¸þ?ÑæKs~ž_'ØÇŸÚ kÞ!7_âàÈ(W<–f÷eOÖ«ÿ¥4„äendstream endobj 47 0 obj 2638 endobj 51 0 obj <> stream xœíKs7ÇïüŒƒô_6V†[nfosã,rç¤ä25Ñ^9D¤*J¼|—¡£¬}>› ¾x ¯B mµKöBêï–T_‘òr­¯cÙ ëêö€÷=»Ž½[aësj|*äbïIãt…ÜsèìÞó>8Úï‘/½@Ž.aêñS†Ð7!œ¥em…ôPd»N‘Ç‘a‹ÏEd8Õ a‹s–I2|]T÷Yorí·E |Ó:,/WZÃßuÂøÕ¡¾Fe[€ á×;â[ŽÌ·ášqOùN5ø6xwÜöçû—\¼-NüÎVÍöªšgü@}|ë\äm¾ºðËÈÀadÀ•õ-O5Wí,ÑðG¹øéøA>\ÁÕÈ€ƒV-O56œéø¹X^>>;þЀ÷Y×#.¥Ã‰ˆžj.%3zYÁÛ.íø»–wcÉÞ±x“{x\l@†qŠ|ß:Û’7æråBš¹ëÇÐ`/ZØÃW»Òu32ö‚KæÅ>Õ À^pœ–u}_ØŸYÿ³ØÃ ûM±—+°n¯Ûq±×ÞZ¦%Á¾®Ù{ìá Åþçâ5:RÍ€ ,Þèáðß–ý%êÙÿù×+ø¾Æ%-Fþþªñâõ„ÿT3€ÿãÔ~Àyî¡·Ýsë€i '˜4¾÷àΡ]¿†Ž º Eã²hüÓû\¥D#,‹DnÑNž¥H, !n ïÑšóE›-–uINI›ß““¦CA«p…’yî eFt8X`ÎÚ5p%½eÊ/­]a+mˆºßÛC ×íl*Ö©f€XsÏŒ]ërFEï°NQ=}jÝ.où©µð‘­¼`RÀëšíǘ>NðlG„GÀËá›a{X}M“v_Ôßíœ"Í™´ÐÛðöÙîxZH… ÒÀ𥠶 µÍQœÝû†‹WeÚ~ßó»—ø_BœÄ´[Œ'¡¥ s£;,1±…ÝàÒnPVÊ–¬¦š²j%ãÂEY-«&Éå)ëµ$ñvÓ%ÚIV{ʪ´ ôÎøÛlÐÞ0Cu;µGe…øžý~B}êí¤´ê›[ȨN®”hÎRÔSÍÔ•ažïCÊIÛëE§| ®ðáÉ ?Ég¥žñl"? -¼ÔÜ5×äJS€v'õ“Q»“¾´ü,Ÿd²†zš²¹løVVrpT¡æÕ~Œd#±o ÀCÞê¤ËnI—ë–i Ò^–’7Sêš"+ñªë¤´òGÕA®ó¾¤¬% ˸ã¡¡_.ß=••+ ¦¯§zl+™{ÂP Õ©fÕÜ3©å†TÿX4^”Š'—ñî¨^Êî‘~¶žê‘ b¬¥B]ýçö—|Z ñI¥wÎsC¥×,ðÖó©¹pØ>½¹DjBÒHx`>$,áBÉüØhÁrC73B§øSå5ýmÂrÁáÊÎÑWf½–ÜÖe£ª]rzìkÒ¾òøi>4rÚ*2ü®OÞ먺ëèë«îZkÇU*†Ús–¹¥$"_ñâ m@ LTÃRro9h$wF´ßßUý['1¼©ŒkÓf~{ûgGp)áÇX¬~½¨™Ö»æñäâoÈÈ2?VÎqðZ4^=u#¿¨sEŸ÷*ð \Ueê¯&½ß®‚Ó„½h™Æx/mb¶ hobp¢lƒ|ÇNÞæuæqÒÁ,¸£yDˆ.«O’ XWV,!óã™tLx«(9䓯Uþ5'J íù¯fš Ž‹ÁÐyËÀîþCÊQF ŠS'êÈâ›]m€FðZ†È³2ÇG¯yˆxHiÜRàËš}ŠH„O€tš¿©^šÃi> X²"¨…V'ÜIS¨Ynãß6füy}L×å‹|ùß^‘+¢ejPÛ'$‹;|Ä®Yo@rFKÕBÈ|¤ &@‹5‚žú{_ Ë9èt(š-‘yöA3#߆j`Ê \'äNªpM µ©â‘Æs4ªm”DÔ„¶¥åV?w¿¥UÜe®mt~xŽIbzG’˜¨¬ÝEMª7¢*odÈ WøñºÆdjÈïÔeÈ8¦Ôsß±éÔ¢è—ì®êão´»Ö$ÏŠ9tôµumu…C©š%[û[Õ8I»§Ê’¢VÚb*BoWˆBWýÛºÛ˜‚gQ_—÷Þ2²îbðÁÜpÏpí|,®<ûµCÁWÉ‚L\µ+÷V6 º"Bµn'îãÎi!ÖÆ´­²Â£€ %;l åÁ»JP5³6³¡W  ¾bi“r퉎JÚ[1Œ<‹ÿ¨è ŠÕ±…*™¡à¼_üš¥Ãr×õñä|ah.(ì²¼Ãßz Uòq5߃á%/.8«œ_ÊÌmSöxí™H‡" ²‘:|ÌùÚq¯åeDOTàW;©uæW ䷣̥/¨t5sg•n_+0c›½Ñk%òM¥ùϰ¤BíÕ«Î'I+'#;VNÿ«Ngœ®öG4Ü1 û„³ÒBŽƒW-GAôôý» h.šl¨ð9‚¤ ÛZD*Ÿõo“ÿ•,ôÅendstream endobj 52 0 obj 3253 endobj 56 0 obj <> stream xœÍ]IoIr¾Ëÿ)C,Wî™ðɰ a»ø0îƒ$jit‹T‹TOk~½#"³ª"—¨W¤£z]ÌÊ5–/¶¬_/æI]Ìø_ù÷ÍÇgÿßáâýݳùâý³_Ÿ)úãEùçÍÇ‹?¾„éBÙÉX¯/^¾{–_TJ©É_m¦9˜‹—ŸýùR=¿RJ»É…Ë…ŸÓì½ —7ÏšœJîòþùÕ>×qR³s-ßûÅ;d{.‘>ïæ=ÎÊLÖ*™¯€%KÕ0Í.‚ˆ Ö…”ß>êØ¶1 ŽÕ ™¤' v· %px"ÁCHñò5,+N.º¸ Á[ò…ðþÄØá}Åe+Éðu_çÛã¸-CZÝ,œ¸$„)Î+—,„£ÓƒŽÈÁÿŽˆ~ß6¼½­G•ÊŸ‰ø×£²"«°3”uX_øC¸¯Üa© @”Eß,#hÒ‚nŸ‚p©¦$ÈÏ]jÿ×z÷-`­TÕ¤ÌÀ”ÆEø'ÄÓM—¿‘41UdÔQ3Y#˜q´”"kú…_ 'V¾.þü}ÞJ úo Gºmà“¼ã#¼ süš “m™ši|:3È;k7!4Ùøã\QcJz™i‹Wt8H9ï*3À@¯ò, `Ì_˜^á:†oÇ=·!Å¢)òŒkM1  ÚãF~X&ôpÍvçK¿S¤;ˆ{ t+­Á …FSðnO>ãdr¾çsîàu…ÆÂšS• ÌÂåkBðíð.jP•Ÿ²H¾¥¯•¨û7û6||>¯7*öÕÙA¼Í ¼sµŒãU¶)5ËÖ;ÄAìà  ·°Ã»Lz³×‘wÌ&÷&ç4 [ùTùIÞeŒ)p}ð‰ñNî&5Ÿ”“Ä)편ÅWUs6êÍ6jf¬²öš±r×û±)8ÔþØ"(`íÔ’…‚PAØ%ßî>Ž>,]#zä§Â€õÇ&"¼ˆXA!ŠV€I>É6›‹•Í6'8i!Š;Q›Y!WFel‘fް0#j›™¤<%rô3çb€ÁXGÃô\1#çÙC {Y‘ÔØ ËŒ@IX ½¤ƒ:·LõoR•ÇyÊ|ÏÂÁŠ\JKÊòº,Í[éÐkIAË ¦¦œß…ž'ã“ °BáGx¶h0²:Bªì(®ïŠ^˜ˆÿ”Cõè ÿÙЛ@‚fy[-ªÔ„Ï’óèW œ†¥ÔË:ânÔ=3Ð{hÑu g gB#Ý߀\¾¥µ%™û#ÝL‡ñ(Ý<+ÒûOž‚ÍzzaOd/mT‹jC‘ÉÔ"—<`§4ài‚ñjöÙ“ ÔÍJÍLsò‹´ú ë TS'0iF^síÂÈi$0­A}° Lò«9ƒŽÙ¯Vâ'áw‰³ŸE¢NpJû"Ñx§IDoý¤FßfÓÈ öX5F•pdg*WµÕÂo¶° ×I¢ÙL`Ǽf]ô":vÛ˜j艀áç9íú€óU:äCùÄøPòî3%1üm·$æZ6d ¤xù’ pÀ™ò%3–û@ÇØ™d3¬=ͪõŽÀrÓÐ9µm2Š{Œ^\@¤öžáQA¢Xšã>ɵ`-Ÿ®™RŠäÅ}@„VAË{9ZMµ,°Fн/¤†ÐBÄR¾9|ô®a„M¢ÓOæòX ¢X»DÇð—±7ž÷Â8+‹Ž'µ#S‡ls‡µ»(ìò05±-°iÑÉ}ÙDÛºæq¨9ëKí S‰QAÙKòÛÔ*›¸ÇÁ:.ÜsƒóÓ“üñ:ó¸‰[p)h3þ<ôñðßœ8BkXŠö&ª¦É «‘÷!!ÁßVÑÔ¸ù×}úºí_毲²‹£LÌZqfŒ" û:§í1˜&ßÁ]®Y~;dÓ¬R£~mL^é`è(–mf&BcñШý ¼ý¢ø\[£ÉgÜ„p)‡'v“×”kôÈÂX&Å‘Z"™à¯J:P>ö`ÔË þÀÉYÌ.£ô˜+ÁÃhÔ.X‚&I…oþDǪÕvzä°“î!yÞY|ʯ%/ºSo ê “²«ÒÄÄp$"»YÝä•Ã|¨f8‘sþꪆSÈ%æb#HJy³zÅi˜óååÕÞ‰Fk}dWZh¤y‚±Ò³4(l "·?O¤ïú0V’øP:6©U1ØÀ‹#x.ãFŽºsh)žŽIœ½#çiµ@½0ú°$—´Å;y‚Iu]vÁõÔN!êC¢Ç)ݤ;÷+?…W%>«¦¨V¥tŸAçóèåJPY—ÛÀr¤ £+zælÓËÔìogÛÀaìk6×Z;q¦Ú±^ÖX»øþK< ­5»«CšfÝÙQsœ\åB{ŒP ¦œäs¸ÎÓù[š[ßNU´‘þ÷s¯ð»¨Î}îáZ¿6¯+“â¶`–ÌÿèV…Ù´tfwò¾ò2ÓŽ6Z[*zaìÁ݉AS×{™«·Sü/ÂÊ>æÑ?ÓëÅÅg±PÍ4‡A<*/¬†i‹^%F1€ä´ª”1?¸ë~¡õW•ãñqQ”ºˆÑ.¨ÎÊÔ¥©9)5¤wZq§Î©ÜZåü $v­p˜¨¼äƒ,”µþ]îÄͦS:hѦ}o$lçý·Q¾Ð·7Xú&² /Nov‡¦wrrw'u´ŽÐo6V“fƒÔ¥ãÑ´9œºþØSŽòØïbìäÅŒêfRjRÎdŠWÀ’‚{oì¸0,È;`ƒcÆà% o‚†¹õN®èÓ0ÎÕ&»“ÚPæ!$v’m¸#j ¾e–[T|Ôd4a‹Yu鮸´ñRÞäæ§ä<¸€ÀŽºñGänsâ/.æðãÿÄß%Öó'ü´²ÐüŸò›~d2uñÎV)S“#©ƒ€/Fm2#ÃF4s8µÉaÆÝS;5H£¤ÙRâõ¡¿ßž;;¹†‰릊~Àêµïôp;pœMo˜aô¤¶Óæy <ƒåF`mœ+å@åÑÕÍ_où<;‚¿Ê›ß²Q·\‰Q4¶Nû´F …¼¡±S¡É@0ÁLñ›+_æã£Ch=2@[zŒ¤V…'ì*û£O ʖΫܡ‰#Sg q£ç„ƒ© 4 ;‘€»K5vQ³l L`ÔÀË´ã%à\²çg²ŽRVO§8ëgZ7ôP_ϸj}NÙ-°It·KšE˜ “eȺ é {t ±0')´¡%êÜØCFîH°ƒeÏÏèN£ 3Z¯ó4Cè“Âà1†˜ŽajmôÓW¥rÜ`EÎÁc¾*0/¯º†y½edÚ¯¿%^Á}3ŒƒÖ2èÎÒ~F%#»:ð#é3eÇï{¦¨Å9ihED$r5ÚÝ$zØ•È| ÍÕw‹MÛàH%èÆîÿˆV`=%×k§ÃxmmèXÄÄvõø4ÌFÚûrP°‹CZ¤¼hæõáT)ó(U³¨6¥fU’”ÒZUÏ9ÖØR;GøB{Œ¾ÆÆéB“}——©Cƒ™ó–83Þ1‰ùÜ,œ†f±wÙÙ+äæ|Îï¥ÔÙXH(˜žº—‘€Ëô#„Íê ³îŒ:C6Åì†cšLlËjhçÍp~‹¿)ÏÏÉÂ{íï}+yAlX.ùÙLÛ<3¸F]™ÂÂ*{DA¾Æ½‘3ñö"Uç²iî±7YRš€¼/ÿ™ ¥|R 5íg?H(86•TLC˜™é¼ê@&(îØcos“`ä–jËÄ€%îkìyt¢÷—fóV[k‹£Õ‚ö#kAÙŠzÂiÙ1̦šÍo‹ ysJ6(šÃBˆ©ÁˆV¹ SÆ{º*¦6é|esºðL5,’ÙÀí)þÒC!J«.¶{^Wm»×@†ª‹À,®Âœúom¢bå nth1–¡-Ö“ˆ‡Ê¬ öSÅ×KøåÞ•û2;Óa"zÑ+A}R!bÅþ”U­|Æþ0¡þl¿ZO i+ôÀ'Ë3S9£ßv‚fYÛ âùâ…–Ø ð…Kˆó‹Ï׿wy O w©M:±¼²eó…ÀÔj§ô½ó@1nyÍsÇìB¢ÖŒ–ÒU½5,Zé–e)µá,‰yNäÒær+`Õ%Œì«ÿ&½è­,Ùp±³Æ›%»»•I›S¥Â™y&ŒÕ„ESÕƒºoÒ‹¥ÌÌ?ÔJ«ô¢Ó)Ÿ1gKe¬«4>ºo;5ix:ZÌ1©sü†yí7kúrPž…䙄á2€ÂAÆKÌÛåé{ìè<<jZ»žÐ8ªÅùB œóîòÓ”vñß2âšÉŒkmÍff䮾áeÅz˜h‰B³Kè,‡ñSÙ' #Ðm'¦ ä¿Ñ–„”ÞZh¡“¦Âåƒu`³Èwë_pø¢VI € ™R»=Øzvê6õ—zÓ¦ªâ¡‹Ž“A±Yüm9ÀÔf¨(‰ܪm’æ÷ÐN’ñI¸vîÌŠ’kÄtIÎOBþ!µ eú5_H1¹û|‚p ¥f£ö2ù“íç)vÈ^ƒjˆfýCÊï2ÕÜåYu¢TÓÊ9É¿G‰šGÙe˜+)MëQÖRîú~ÝŸ­ª•Á/¦ª~Î{mmuCÈ»¼K€£÷â¢xR;¼çt]ÓFâ—Épï¶ÚP'’bÙ¯PjäÖxpó%Œ½È™Ù*©C}3êÚN}\ÀÖWd+9ŒÐ¦WFKwɆ5NI(ÆY‡öÞ‰ÇXËôƒ¬Ñ•ÜEŽ^qÛí–ìMélÓ ûHþ\¶_, )ŒIêÉa|0ŽH…[hmþã@Z­µ-0U¯|ës[ ¬îW½ËoƹE~KëÕ2ºõœ²v8í¿-‰YÎð_nÜ*vR7 Úi TÉ +E‘)Í-'æ 0Hð’©w‘×м| ·¤yíD‡ ìº fäWY|ÏyOk+^âõs¯;»”Ï`>|²Ò†Ýäéš&–p³ZF {ª»Zœv5 Iù‘Co0BÛÙ\õÊo»)B*ƇÖ87ekEµäuÕœ#H>!K„‡!$À+ÕIîÞ¢±TÖ@ÓãÁŸÓÃÀEE*DkÙk'àJ|‘S]<­ÛD6xã%äÁ„öæe${êæe=ºy9ßl å¦ã†äÛ“—«£í"€°F©P/º5¤‹—i£@:§íê<˜7­\½ü{îf½^ºÌ–šo©6&,¤Ÿo£æM~bÏ|™sÉ_vsl.oYnˆùº 1[‘«sè£68Q5Š\Ï%ú¿.S²zAFë‹’@•le!Ð12lÌÎm+g:„êJ_Ìw·£Ò¤•¿è$Z¥g(_¿½†åj9RA™ä \¶ÙÆúöŠ<¸i"R6[m¶Å°µêv†éíܦÉ%¸‰>g³cV58àÕõRÄŸ÷ØçÁæ Óúf^eÁ<î r„v@NÊŒPm¹ :Ä„«i8- ¦ûó‹t[õXºmTNÙ n‚j2€ù-(†9‰¾þŒˆð·uÚ†DÉ™­UèÒI£ aq®ÔîóºæY£HÛ³$bªÚ‡ÕÔKúÙSùÌËç€Ñ¦ I,Êгªí¥–Xm÷œI$4ðÿ¨²M‘®¨ä ú+÷3¡ËUøV£ç_ó)̺rXñ^8K±Ët× b\Y ¢Áœ&qßP‰{ð¹i#žâ‡µç^Âv”C¹ÆŒ¨æh ÞçúÙQû£QþÛ¥ûý´2Ü._'Ö Ê hTWÛ6‡n´.ú5ÌÃØý•|Â0ˆK`Ýk¤òi•ûµŠP×Â;§³ŽJ]êæª‹Ðµ‹—xSòÞv½Zwy­øI†?°N„âGî –he-3Æ•× gmláDŽÝ¢'RÇG2¢Œè$‹ãHÈ@*!“B­áHËè¯ÈCãn~¡¶YJ8ßÉXõn£'+<:û®|OÅý©f§±äþ™m!^.Õ¤š3!Ÿµ•÷/ë#6…é#¶‘\Š è´;ÔoÚA¦ ›ÎÅb“²°Ö]¼dÍÔéd1«($fÊ÷7ó¸Åj©hw¬«5šü"4»ËM¼¯èß0I"ù¼ºn}lbç¶rû0ª4R¿:iÙ[-ùøÉe,·YnDz÷CÙßúšòcù’|6ÓÌÓöu$Oõ,ã!ÕŒ óµ|ˆÀNÉÅÝÓæ¯–ƒ><ÃSü¥‹[„É£y2eÖµsì2FNSó.‡UUìàW‡Ô¬—Š5-ÃÒ0üìÖ>l=þ¥(üÀÞ·»y·_­_Ôøšÿ¬LÍ·yÊ<Ùe²oó@ówíþ7»|,]Ç]Ž)ºÓ®N¸«Û›©ñiLuŽtë>:s)år¼aWJe‡ãb*ù­œûMÙí&é€óO§¨¦A'´gJ ÂE]"ëD’|»e`ºÔ– Œêñ}—$Ÿ£&Ã0åZÇ¥ÔVÔNR¢§û©Ëú‰Õ\؆‘u½$1Zdw²¸¥4È# O(c± !5ûŸcÀ ëÆÿ ˜ Þôü¦ˆû%htüúmö]ÑõÛ!ß"-œ½(¦²1„_°kÓŸvåÕ^|c41—8ªÆ_òǘtçª Úõ»€½š]Ö~®ê#äñÓ3«G3IÏiäß&3Þ¨£_e«Í@¬H¶Q¾%權~ÑafÊO§¦ñEØkf$~ŒCí_.È?ò$`âð&®Óé^·yGWW¢B•è‘7#¥“‰9X°}•¤>I…‰…Û=ÉD›üè$ágPñºZf7 å­“?bëhœ—ÈFÜà- IY¬a æÅNÇ5êhÚ`:$çÒ1’‡= —ÆÌäÞPQʉäehâ”çž½ c² ÞdGdгU/ƒ{tw“Ä{ Ër‚ð:0Ûä}Ì«ô£¿MŠ$`1jËOº}˜9XÒ|SŽQ•KX꡾ÑìdX‰2U1’6Š$/Lƒ«1¸"FB­»wùYr‚pÒ ß7“.Ô(Å×6¡× œ~ïEr¤Zñš˜FÅE§ätifuLÞ)JÝÿsž¼ Á•w '¿Æíêr 2ø¡½¿ø-‰¬ý¡Ê¥êÕÏùÕÂèD»O„ír<ÞšÚ¥ªÝ6§ï‘'§9›®IM® ²këD´šnö= †nrëÙ·Yßû³•ûÞ¿Õˆ:¯%›ßfe®ë2)»J-m¥m¼ºè5÷KXì¤Óô.¨ÍèºáGë]è8­Î¨S÷²µ‰NÊØT}¸V¦.rGB¿Í®Ó²ì0j³óµá|'î¼mZÐùÏ5&g-²÷Ù¦Qt./OþŠ_yyë‹ íZÖ¹±WÛ˜Ø> stream xœÅ=ÉrGrwÚá‹á‹@OíËQòØŽq(¼h0öAÒ·±Hp4 5¢¿Þ™YUÝY[¿÷@*B/Õµdå¾õOb‘ÿåÿß¾ö›oýÅ›ûgââͳŸžIúãEþßíû‹¯o`@¼r‰ÖÊ‹›×ÏÒ‹ÉÅ]x¥áõÅÍûgßäåµX´•ʄ¿ôNúƒ¾¼–RÙ%þŸª`CŒ‡lôÝ¥–‹wÁ>ÒÓ`¢Ñ‡WiŽàtÏ«÷—×ÚûÅzUM÷Û%êu>9¼½„s;k¤>ü‘MM“88†9¼ÜFÀ|°bô>nñ©.úçmÀ{:‹ÕJÙÁN£áKÿpó¯G)/âr†–D¼¸ùæÙÍ?|w¸™•Ðy‹/ZoCPi£Zà =nÔ8³(©`£ÛØ©"XØ)îà /luò&ðC •÷šÆÜ]›F;‚“qz ÑTsóÁ÷øÛ{£ $Ûó?Ãõ.ÂY¸S¾Û°­°Ø M; .¤eH2VD¡«3¿Â!jùø2Ïá Fk(ð§4X-ù㸽K¿ƒ„óç|ý?²1ÝvÝEà+ݱ ¼L ‡›à[¤Ó‹XMÇ`•¦sªl6eªí}èÖ£“ÑŽì"¢å#^_&SŽ)7¦"ìÍK ÐßÃxò)ÜÇŸÐØÝݦU„9üxiÍbµ¬èÍöó–³É)MüLdBu[¯øà—8Ÿ^Œ¨QÿCz¬¼ª€”‡µG¾¿Ò¶Ü–YbEí=ÕÐ8qÔçˆÍ q…Øìk²§2wÄù7¥÷¨· |sÆ£2L\P¡Ìg…Ü.  ÛÑŒ¸gÏ?”92Cå NsHsbla$¯Ôñ³ò{Î ZëÝmp5éNÊÅ„0¸fz‘MÂÏú˶)¢ŸrØš~8;}Wñ%’7NÚLKøëG t Zo#§„|Æû)M¤Gd½MjE2âwH6†)¿SÚÅÂï@rø”Æd~¢ÓqÄï Â×®üŽÝ6Ó» ¹6FI¬móÈÈU\@iØ•„ð¦3ªç BpXäG6¶ {kwXÝ^¬ïæoØh.ŠùEõê„TÕêŸÓ‘5&ú¹`Q@„ÂóŠä1ˆ\^æáÁ6"ŸZ› yÕoŸvôf{ïmÚFs /kÝH©/íŽÜaØÉÆ6ÚSšpå Ù,"‡^aÕ€ã"=Mû[|Ï€2ëjýŽæm‡0•êémÀß#<uBL lD/£´_‚tO%£hÂû´Œ±¥P”וF31eØŠ|4"šC:¸'亮ížûôŠÈYpmzf˜¾Jç  Ì²uföâÇ4ÚûÃd&kû7‘ˆDì,$2Cæb kõHF˜û×(È+Ü^/Oq‘Â(‹!?›ínB*ÿÛÃØûŠi›–•$‰ñù£“"ÄE5L&#œ*ZkG55) +@©\ëëÝÀ];X6hÐ—Æø?c‡sk÷äþ ‹v$[®Eõ±›b]}É®þ„ËGU1f¶Õ‰î†SGØ¡lIgó’ýv µ¡=.<\³z€=~¢~*ìjôOà«›w˜áÿ0„:åÚ aäáR{Œ±AÙÕE¸ž^…y„ªhãØ|öèp3è8LØãg´ö2£hOf‘(Êx€­lt3v›œ/ ôÕNúÜÕG5Â.2¸]Õ] ­Yõ‡Š¤+þˆ£“y”zéÕZ¼',>>á`´l8 —F¸†“§©CÈ,…^\p-W‡³H·K& 8æñœ€fOi‚Úû üOžKÿ$@@©e«Õ‚ˆ~ܳ–Vy N"øÚs Ý§[Õ^†3Å¢õdÁ“ÎR“I£#›ˆ—¬öPs¨…q(î» ‘«5˜µšBWÀ©4\­q\W›i…½9[„%gž–µZÄôù2˜P7•Õ%ã³%™×©àª‰4æx°ølMŸØ•rpNHh¢þ T’Uñ‡õ…Ø'Û¨@‹ Gxm÷ãJ,Aè‘#-Ía=Vòµ5¦<# .E*aPîìcÚ¿ª¸xkód"AÞ¿WÏB­T‚‡èdÄ‘kdÌVJ\½ &2ƒö¡`˸Eƽ±¾s?%:Çäb¢[g‹£ƒ³¢Dë|´ ŸDzÃVdÙ7PU$_Ü)j_6Q;çÂDXßãäx²@-Lƒ,¨ ènÝwc­@9ªåœAátÝ Š]:j½Ñ™&ÿköün2¦€"Ø=šÅ«Ú ‡–OœàR¾O‡Ð«%W|n¸ âÒL•YŽFô÷nu· ½ŠÔ sOÁ+P|·Â)îQTEXÜ\±‘ÖKðn®³O|Êô˜È14%†*{BÓÒ.NtÎÿ‡Ød"À>AÁÌP“Áƒ"½¸Pлȉ»ÂˆØÔLYpÔµÖhE8³7­ÃŸª°k2îYp$—æ‰-8 {d8Çï©IhÂ…I>öÚ$±¢Œ?1 ÏžFÈé+§ÖOޱCamãÝxD̶¸søU€8uåísÕ qÑ»ÏUqQÝ\ÈX™È&ÎŽ«øt¥+Ð2qGÐj‹Œ¢Bó'M>À yÕ‘ìbSÓÎwŒh °’éÜRZés|Ài¥Œ=¼ zSR¨ŠšzîKEîs_ æÞ”š€ÓOË¢Æ9 •©ð èÀï‘ Pþ w ìí¯GiÕE¤øR¿0ekf·1d›y@P 5Öêš“³Ñz Ê/ @¶Mv€=*]!‡ìÄÑlçÆxꎊ#Ì<\U›*Ã5—*Î…ÿbÑá€D¢~zÑ!¤ 'ŠŽîôs¿NÃÍÐÓ´Þu8éÔÈôÂáŸq!P£›ÞÐ õDeÆ+J¿½ô—YªQãÀÛ”@‡“£ê#‰¨³ÏT+Q†2$ѧ0¨íœHŸÝæw Ò'@Z)=p dÿ‰R€+¢r÷îD¹Ú_C ÙÝ=Ö5aõL.i˜§‰Ü „Èí©Ø~â[L…Ù“Ž4…ÔgsFßÏ·ø¸mI7¢u{J‚ÛC|ΠºÐ}º=[|’¾ÖuTlu­¬›à´Ã5þ“¼s¸QLlåªL[ 8ýt¾™C3ÇkÑVàéΓOYÛ~ÍÝ‹KÔ»žù]UJT£‰øÕhtcƒI‘9Ù#š ˆ¥ÃŽ"ÒqãŽeµÒç 9 0¿JžÖdt®š™ºú©®Ü‰azªý#2‹4#çìg—7/$('l,û5…!³k„ƒ !_å¼uë7ø¾ŠÁ9ÓÈRÉ ð Õ%Ióüð–°ÀƒšS’W”˜x‹™á%ûÛôžS¨ƒQF¹ðÄs`,&ùg® ÚžóÁ!/'Iç¼·‡ÛŠJ>ÞFbhŠ·„¾ÀÉ1½×ĺäô—i§èÿì}¥E?£}µÊÇôž²gè²6Tw¤{7-ó›KÄÖE\·*‚à>EGr¾üôôÏ—¸(àP56[=`Fªj4L?a]yS'–=Œ±‡¯‰:´Pn´ŒÒ™7姯?‚Ô&kN3\žOÖ»O«a›9à±Ãr÷xB% ϊ´}»-ñv¼rÚšˆó¡°@X9ÖwùÌ!~Gg6&Â`¢%¡0Åá:ÂJ—ŒA ¨kcN¨™`´jŒÑ%ÚÞaê Õ¶X«ƒ8˜„ZoIiå ¤hžŸh›Ê:Ÿ°Ï  Ãv?v@ÀB¯V÷÷†ŠßŸÓ`Wˆû5»oÓïˆYp¿KÌEÀe~‰È­àf}ë¢ðpCjß§C€³þ¸ð0W銽rŒø™‘‡L?üí%Ø-dPÒÊ5šVjw‡Í÷ÀÑ®{d3 ü|Ì~IPòu ºu-8ð]–84K¥ŸålÝåuNûÍeÐ 2tf@qm=f?ß'ý­¹Í¸ž¹ßª÷6µM]„Í/"úFÏ|, Ì®ZôD·HŒŠãò¿Fô¶M°ý+|ö§Ý‡3Pw*÷ðاGÖç†ÀÀãá߉—@ŸçãgÉ^Mv¥ok~Î6°²@ʧ$u!f„ØJxr^)ÓUÙ)0ÛÜìðŸÓžô®Ù‘Âá.i>åVÚÀÀïŠ×&‡Ó|ù*8àÃÕÓ×Rš§¨Œ"ÜeÂB|9TN¬eÎ ZÆ$%÷s1 :7"Ù,RVŒöô"…6žæ1‚Û´~ q¶Ùg†GX:Ÿæ åVË6a –J… iM:`Q51ÞTÚN •í)+hLäÛÇ4Z×¹ wiWÈÐOðµîÔµá,Jȧ©k3B+Ù‘‚x¡*Ä]ã'÷éè®þ³ä$znÜï”8Ðê²ó§ÛÙÕß lråý93$‹£È{]ÁÔR—†Ähx% :Ý0܈rt.*p¶ÄW"H”›âoæp˜(yÞEÀ¯E€]Áeè,à8¨ðØË¾Ij 29^- +IÌgÀy¹æ³Râv—äÔ{:Ît5î%I¢fëWÚvÍz\$f†­[:AÎ* ÔsU•m:µ}ĪSÚ€ôò0ñÿ…þ$pÁ!ú¶B\XUŒ½–<5#]“Ô¹fŽjM¹¥ âÙuœ'^¾Ê‡‰]5„(!>ˆçÊîç<»W ápÉp]v]+ª3®þóZ1I2«!Ž‘^eÃÙhŽ®?«ÇŸfïïž@N̵†i æ5ذ½.’X〠´ˆ5i|UîļO1rß±YÌv|òÐ0Àá?°!˜náÀžíõð€Xºª.&-7ßffZΘ4XôEÔ`@¦­éHµä+‘‰*ùŽÒÀT,¹@¶Æ±&‚D9 MTf Gå±M‹å"æHÈBí U¸ÝÄ×YT#ÎVdÇYC`ù´9dTöQ–èc +Võ0·[pŽ%ªNc…Xe„Ю+ù¶an© ª™ê– ¥hB—…ÕŒ¯¨kN„CúØ)Hã(¶’;éx}5-+¡Ò ÙæE&Ù©‘ZÐ%‰vÊš•« ðá:RÑÕ(J=–Ñ„GÓIP»Bþ±Ú¨[êët®íC+BµX´ÚÐÔ#U„”A´ͤæ5˜“æ—¬17¶ Ÿd_p5B±6WÛÁ¨Û 5OÍÅ=±›XE¶—|PYK¥Õ¬s¿Isoµ*[*ï¬dÕè‚Óž'U²¦Ð·ûXOr‡u£¢û|΃ýïäU…ûÈDuȺ)&]ñèH¶ã—TÊ]mCrt<¢­R ƒƒ¶ƒ*¥Á¶X5³ä'ÚhÊüW+&oÒ`C–;ö•xã¿‹¶¸ôëlÒgŒÀ?¦É‚'íÖhCK«Ñˆd°ãß1¥á4]…@fkwßPß,GÒMë…4ƒ’g÷H+‡±Ì}œV7cm0·À „7…®èN±­FhÕ¦²Ï=+£ä@¾õU 0®ÕèKÀ!£Ý+à‡ùôŒì&7hj«fqî_¹ƒ›²˜ë1Q„‡I@{ÿ=u®&6Rí˜Y6}ÆÙtc€.cU²õšeÂ-˜Ô&ƒ8]Ð#NWF׿ODçƒi< $7Ø£ K@z?ž;Ö“œà0ÎN›âè”W>ôSŽš‹izœ‡ÎÌ œ·‹nà*Bš¹©0ñRóö<÷i×w™£Ó•Æ:IZß*õ—rJìo’gÇ„k…VeN¥^ŽŒ€ŒôO+Ç6eéMA†*xüÔ•Ùp·`øÃø&¤s] PëjÌÍÏñW´@°Ä4zsBñо#¯»nˆs‡JÌg FïÌÿ‡SÉ#Œè;=/CŸ\IL•µxŸf*žäÓ˜°Ólde%®©Nö¤Q²«\i ŠMò­î24aøÉu¬Wßü*ÀòØ›cãFËö;»Ñ"vlý¿0ÕCÅqÒã”;kô9ýÐrg¸–¤Ôi:šÔI¡sùi°ÍCZ¯ž¨A¬.¿¶kj!h #ì÷)¡Å0Ò›Ý\Jbm#½uÈÔÔØåVÐcgÎõqMò {šÎàâQ>ÓÓ Í6+£X£‡áì¬ E3‘%³ökqÓw,XK¾¤¢\˜Æúa¤´ßó¦3svª"yË(£°»ÛŽqA=¤=Ïi6kbÕ܉ò 1›Üm6Éh:¢mÑú­¢ÞÌø?ÃZ`Ý*ឺ²+€Æ ©CõQîÞ·OWÐÌ@6ÎÕo23j´W®l>l6NNsJyt£0sÎ@]Kô]KFÙr;S¢­æE ¦1¥ªQ;¯¸ íñ’wšË /i÷!¶ÎŽ3ª7Äås¥ºÑ(ØÝ,Ë¥öFÒX»k á`ëÆ;sòörœ«eÓMfã áä†ëÔ);ëþâ¹);é=×%KÑYjÇ÷öi±Ô ¹åçrJImWM™Ã¨Z¾½­ :¬ ø‰É’õ àžç¥µ™Êű-Õæ%4¨?ÏP·OÍ=æí”ÛrƒlW™ØWoXÛû®rkÏ„‡˜¬szš¨*ümQÛÍCï×}š =ÁMMbz«y¸i9b{¸CÅ)Þ4ª)´pd,¿;»ËÅÌÞmùi¥¡Z0úöBAÿ¿¯w€› Óìõ½FÕ®.ÿÀ¨ í\•ËÍW6qíð+©Þ*ªÆóž]9Ƀß©þNæ} ä‘‹ÒB†ìAÐøMŒ\ÏëáyâHÀ,dNDV.+þ…ƒ¹í\©ÛU(dÿȆgWé„›b„(þhÜŠŽß1¢fqCûŽ¿—¶7À=†ÆÝñëD €#­PÎwõ%Q©¾,j–ä¯5ؼ^ÀIJO©­èm(%÷ù=@WHÙñöy‚Aüb’rŸ&Û7 ñ$˜¥8/€*_ºT=µxÃÅÉIÝrèë­ …ÁPWgññ þ’Â@yÕ‡ñ¸Z9Iíå—„rë:Á ‚íÀ&™³ãײS‘©Iûc|O¨i³ïG­Ù —ïD“q‹hìuŸK•ÓI·Ÿ@Öïn3:ëªÖø&…iûª’҉ͥrCÅ«³vÕpò'8È.³—éÐ)*MÙãcnˆûGµg¦ÂOاܬù€¿ùÖ‰&nâ@|•åLJFIJïœh˜sVÀR؃R¨ÿ=_"<7òaeÓ0béŒWag–Ö㡺ƯàŽÜ†%© ³jðš_–9¬Î‚%åS—ÿÕ­‚±ÒNÊÆúkÆ0žêS38¨IÒɨQŽj¡£}[¡?åöÆà¸¤”]vëW—k3¾ü¤ÉâUº¾à÷dõÏIÉJºKúj%£).» à|š|Æ$“c6ÂM=k3‘æÇÂÊùË~Ú¡šF/뢊ýÚÇ‘‹}àèpÆYŸî‰s wí¥!®R—(©Ukuᚉ îÐÓ/_Ž›~il úô¶lØBè“SÍ^Œ²5R<Å72µÃ,Ъbþnø9ÄYì‘ÏÈv_иOǵ¦ ÅÕnHÌ6Î6˜íKø±WžÙÿ59âWÖ0:iÑ%ž’ã¿ñYâ.̪B(ÙøY9ѤӱŒý8ÑÈ0¿ß)46»ü­ô1Áfçô=½&Qt½_xCoN{Ðu™Ué»}»ñ•­Z­žfîJéH t¾­Ö~æ¨ÐçÓ‡£$71}3qMru3ŠÜ­-¾fMu&‰Äü÷çFÏ+GŸZ'$ïN» ŸeqÍP»K 5TÈô¨h—¸«1rÞÕe`:ª£ö¹ÇO˜Ö…¼ÙÒe'\{ûúçN‡²¡wà*¥øšú[Å÷ 6èÊ}Âf©u±âÚ½uçkDLoߥàò ‰æo¢åÝgr;•'`pGà4¿ 4yïMÒë²íD—fí»*F½JK?Ö€6+ˆ|¯á¦ÊNb¤MNP¡j=úŽýÎc4Æï_\®]KgÃùóؾUaÏIBº‘–‘º–n7t\Ä›B\—ø±ÔÊM>ƽOcó~KEL­7+÷ÿvã35 ^VÝŒ>2©˜þìX8œÜû~M™TlvŠy&áÍø!NÄÑ—r^æM›VG§ ´$kŒÇë–€¸gQ‹ì/éÛˆ]+Ün‡&\È+[}ׂK˜¯¶lÎ+Øcnݶí$¦h·×›¥üRJ¹†Ÿý¢¦+®¶uFÄ€}PœêÏEEª œu/Œ$©E‚Hc á 9q– Ù—cŽ\TK¶W‰èLwÛ)!•²ZEݼ”çO5yWè~³atë¬ÝΊ‡yn{œA'Õ LÊ©ÑK„(j‰Ày3Ì»t;NSV²B–BmÿU¢÷§Oú¾!š”CßÖ²!ŽÌIŒ_#ÀÎØ„Ya½òO7ÏþþýlŽpáendstream endobj 66 0 obj 7350 endobj 70 0 obj <> stream xœÝ=ÙŽ$Çq~^þÃm?õÛż~°A°AøÇ‚QÒCR{qwIzýõŽˆÌªŠ¼ª«{fHÊÜ6j²2###"ã®ob’ÿòÿŸ½~òÙoüáîÃq¸{òíI<äÿ={}ø§[ å!NÑ)g·/Ÿ¤7åAJ9¹ƒWz^n_?ùÝñ뛓˜´¶^ù㇛“–^³ÇçøØz‚:¾½Qa2ÖËã7bRBëèoØ€WlŽ·0ÄhíM<þ~šè—鼞?þã`’ˆ‚¥`ÈKzl„Sáøþæ$'áŒ/–yPûãGh¬ˆB¿bó¾ çNxá~û/€U¢FªIKDÐís@ǼZëõñü”QÛh`5˜#zøÏÀ:Ëã4BJcÒŠ:D§cZ¥<aa^äD¨„?rà° ¶w|ÇàO肱wë–_¤¡Öéügz:ÀÞÁš±XŽÿþl„C¦ }˜J-«$—“÷.Àšìx8(oŒµÎ1° 4Ú ¬=>EjPS°¦8ä·i»NÏ$%U\à×Ê;üÀ!È_³Ço #U1GG†CÂüqÞ Ñ> _Í„`)¤ƒ“´Àq6N@fÖ8™ =_¾¤ï<¿‚=,šñM@pŒ5À$ó%üjð;ðÕÌÇÄ™w8£¼¯ñl,H cß1¸96^ä!®Xþc0Àq—TŠcªàizÍêsdG+²céͧ´ 0…|xŸžÚñ¶ž±d/&:Ñ ù{l=¾Y(GSE(„_F4èÓ CL‰>¤+`©fÂ9"Ì–xápþ7p¢uÁÕtL¨t™Ói¼]ùlÆ*ð盕æ‹9UŠhHðžf˜‰¬½7+ðòçÅ ®“ó!ü9½&ò(ÐÌG<Çzò±&«B~YväHM*Íêr QÃ=&&Ï”(g]l@6(Mƒ”ü §›“z²Zÿ šL[5Ea·nMâ½æ{ÞqÇ⦟å€å«ðºüFo¨%²>cD½s¡`Òâ ˆ¼…‹À¬üнÏÊŠ6fA§MKXLŽwLj˜lÝšß±)w\ˆ’yÙÄ?y‰ŒO[å²f„Üæxüåu'O'Ýã u}Jƒh²2bÔËZòàÑZ ÓR- Y8’ýüÄù„oRù‘vU®¦7Ÿ§å1º+I2â4;ø-!ÄÉIÞ¹I†æ^B¸$®È„JGâDDÒZ-F¿JD!ÃÂA¯Ø€MÙ§J‘bðs8^“Â'|¬Ž“>‡,•µiá]o»4än½•¾¢+[¹¥\'ü´j⪼ïòV*·Lê¢iµOmˆ8ù´¦:ùÜ­[øT8n=MÚPªÿì¸Ù|ïØ‹ì"j5Åö ªN¸:èÛ§ÇO+M!꥙¢ŽáG„Šaþv%ÒJÁÕwðÐ"lmBñ¶iÓ¨n%èN™É[°-Ó®F ÎÛUɯ•{„xµs4â«’éøªåç‡>â9¢ž¥=ÉGôŒj%Âäy£šN@˜£#õÅ*c¢#´£Žb}Þ³»ÜðRÄÊÙ[—ñ'¼ëqwa¸hÖšÜbµ|Ú¸¯¯ìñ—ëy2v`Oÿ™VµÂèãøSjØ›Ú)¸ó°Õ_âÔ +Á1RK¸´fçœé–€…7ÇfqìJý={Ò‚ŽÓ*fH_%ýþ®œ.$ÿûr˦I´µ g¾ZW€>á2hõüá™bM6we" ØÌå§°?ô¼ï² i'ýÌ™=#ÇXîdYžêÞfˆ–ÍÄã¯ij Wèñ_‰¹šºÿU[‡ œR»å„™§QQÿ+#uÀ&¢Ä¿<2X¾ürÙ| 6pÁ`@j(½x侸½Œ`tøÀ‚°uGBNJ…èøO6à=šWh<Ó¢¥+F¼ÁŸB¯óSí# +&>è¸Â“nr$œ È%툉¦ê\f Âr°‚ÍÚ°¤ÉZá&šùH+@WRÛjº¤‰œX]q8ÓVµÜ“­p,“PvFáß®Äöå ;ˆÏoNÞ ârF\X~=àþ<]¯è<õÄF3HHŒ]˜\ý ‡ƒd] žÙg4t'­L•ÍnB}«¦õMÅ(ø4E> T']¡rÙÿGvk4ήÙë2?­Yé¬7. D‘Œ`CÆÒ&BõÖø„YdeºþãÇÒ±pI«Lí±C÷y_~¿èö•R„›ò¦«6#¢ØÄÅú^j3¡ÌšGu£¦åÃ1RpävD¯Óá4J홿gº—vh ó½Ò* SU×¹0_´" é0˜×¾ÐÌfRÑŽ3÷=>_I¡ÜØ<:]4y[¥G~@ä£r{®ã®m±Žs˜L·J5¤˜—Þʪ-J ×NÂŽû{>Ðgîáá˜fÊ ÇßÞ÷£¯Í™âù{œnûþ˜n$ÏG êÅ'npôåƒô€Wªïqr?ÆÌúâ#½m‰U%œ£^U×…6ˆ7  ¬¯`ܪX•‹|(™4*¤äh»žézxâg(””÷Þ.Å ™Lh<Î˲¯ ±\äMëóÖ¿?0Añž§/’€ê¡tz$¬Z3€æ{ŸtÂh]-ï­ÞË‚÷ò„ZZWH„}b!D<Ç´¦ncnôØÅ¡ãöE 4¦2ØA9ý4ÀŒ§~Û¿%ùŽ+ï&Ì6É*@WiŸõ?jŽÞ"o%ÛÍ¡ÎT¹5ËiÁ§[\½tÜ^¶>±ÅÉWKÉ€ÚŸÑHK•’¤¥Õj––ô˜HÒ2*Ñ–è]KnGÅŸŸý&€Gµq*A–GƒXEZd¤¼Ià`8oR:вÃ[Ùh)ö€YcB,ÖŒtQ#ÔÆcÁlX³üÍw47P–Î?Päà&>¤ÝÙ‡ßwj1¤ž¢¸Œ€Ý”uÈ Âf'ØO£„¾‘bóŒñ~eg#ÑËÅC5k9¸¢[rï /4>™&n¶¤**«ûœƒ[­L ì,9‘-e‡©ø5ÛG„­…á‚YªÚn¨²£c\,ˆ…uDŒ•‘O­ÝÌIIš³ ;Â2µÁÀ¶Ý­W¾ÄÄz=]YeœŽ‚»ƒhÏÆ‚ €J¹h'.^‚ÖÑ%ÓÇú¥¡5Ãä⦓/];ù^âxÊY"º°Ešë3o¯¼>G¹~ƒ+b_ö ¦JŸ·Œž´6„ظÀÞ”gV«Kª=¦‚Æ5­ö=“¿6šA¶x嚬¦²vplí0[`G”sähòƒPÔ\£.Êo+ n²ÌQ[!D®Ÿ×`Ÿ´¸d­zd¬ªh‡X òâ ø†ë/Äjâ<íḇœ'Ý6àÕ;É‹ÔGKRßÓ­ÉÕ­³â“ üluµØ ¦& ‡ùß|wLŽÊ{¶µËN4ÀCC~ áñí2A’Rœ#cÎw¡N¬Ç}E¯¶·n&eëÌ–Ú¢A3ˆlp¥+{4cÇ~¸¶‰Ì)9©zk0Æ]Ï-zc³©7’NU),8ö±=YÀ•Y¾U+£S}ÐÀücX)unRIdÊr׎²‡ª ˜ØùŸ\­¯¬" È—MŠÕHå¥E¨ %Kô æQ~3ße™Ò²Î¸‹Ö µjÊD¨¢Ûg 2†MÛ¯ªhj-¿„á\b~¤˜ckNøßæ1"â9jPÕéq·÷q<}¿YÇ¥Ÿnº²rŽ‘­EGNc\¨ºðÆÑ,ÔÁŒäbs » Š9Ð6Œd|ÿÕ5B"ØÊ,Îá EµDXÔêÈÊMõ­zaÓ "qE Ø|È@OÜLà…B8¨\1:èÑ(†æƒ¿¥œA7 ÑGôèYc)Y†J)dŽ_Pœ‚E5X¨ƒ¥t£ØÌHý°±ƒéŒ×EzÖ×øâk çÙ çWlÏçØx‘òƽâ/òm0L%"Æùbâ¼Ðï^¼Ÿ„^¯RL4ÄsTzÛëwehËÀ&‹nùꆥàj=,ïÓf|ãŽÂ§BnZ防Ù~rwÔ:£—ÓCwE/SÖš‚vƒ°{7ŒYî±TÜðRáÝϘo"(£GÑöЏ ñ‹ƒ§—Á{š·5v†–åiÛ%Þæ»ŠÆæ8$ñ¡[$ºÆ†>¼M¯frÙÔ9ÝçnR~N5°X¶Ä-›NöËå1ëê°µ Ëí­VœÑO“C =…x*Ve_r¼mzrEså5j* û¨þÇèU× µOÈ…w(ñØZ”/̰l"ÄsŠN~žà¬X-k²8°·wç‰.›åZÛÓipÆÝÛ[ƒð‹;ãŠàeÈmÁÚZ¹Ü(¸:îµ¢aÏÂ;ÝtªÝ7k†r"K(½Ü/SFJ*™{­×ÆÛ”¢…¹¸Èõ¢¹WfO]°6Tq±GÄzN, úóæÔV­Jºl[åh6jeJ à:ؽOZtÀ3I!’`ëôéÂÁ‘ô¡ežÏK6«Aµ˜ ¼ªi¿-Ÿ6ˆ.(*)®Ò·‰Û¡£` šs=.cÍÖ<°>hsó𿸑˜©ŽsÓ=°AY¡]Ú&ØÓz+pŸmfö…®ï†54¬n 0Ùë°q…Ÿ/[]wAø+Ôw]ÊêÑœ…ë>ˆ6ƒ¢¢9lgi«Š€Ö‹‰Îp±rrÉöøŽÜ©1+Éù)©ôêaDª³XÃdw2–¬«T­¬tÝÝ€<Ãtžë6“QEUg.†å.B³6»ÀĸCÐÀÏÖd •Ø7 ßX–7!Ú ¡C×Þöp1oðÿ'L£©Â¦mÑ”b‡?ÿH™ýj®ív_ L4̨ÄÌÐŽts©ã‹"˜ <|Ùs‰‘›µcÐ’d¬b2¡*Ï /C‘Š¿1É–F¾ä>‚~8]$ªÓF8E-(HJÙº4F1…ö–y€/ó„µS°qX›=j ñ1 '>*_ݯïb<^þÙsYÕw®£Pg.Òð\›"w…†'á·ˆ.‰s¤×èã? |©l™è6zDÇ«DÓ²„¯êA‚ ã’ñû IçÝ€ˆ™X%Ö5QŸí󈓕þl4dHÛÎʇ}ú“DøåðªªrĪ’Çg#…g§C?›xuÄ¢›@…ʯÔ&iø¦O UÄ>™×Ö'uÛ;wsœÊ¢po:FÁ@ºKÐÙ¯Ž‚I¼öFÁ*áIiÕµa ‹]Ë—ùÄ|Ù)PýãÇ6€$&g–¾^ l+RKMÅz:/7½C€X¨o'ôB5Tï0w(‘øŽTN¨ØC\VÃ5¾úWòºbl‚Â$¢˜{*À‘¢…ÎÜ3F@«Ñ%|j¾}@ ?G@}>ü –ôq{4 "‚ÑA)¼2É–.À% t±xWBí÷°j4«—I‚‚|y¬¼R®Æ^PŸ¤ @xÖ#Ý<*¸:¥p0S ëiÁ¶ABuÀ;˜{o‹ý%u¼Œ¥'ï¢|c\ÜyƒS"Á¨Ý­›làÜîDç0æ|mb®(<Øíô5FÀT0Ë+ôa3+{>”¨ÂÑ&Œ³4!¯Í餮¯ÜMYgÈZósu<"*l(û麠PyÈöÅQ L£O‘ÜvêKU?Lî+½˜>´$fÌáÅGªmÊW{ý÷$öú”ºŸ`w‡DwùMïX êzzßHÝÍenˇ_4@èNcn˜GÆð¹T{G_X{™š:¢{jtg¤ž›ëáOÊn×ÒÏõm:ÀôÒÎ/å%­Ë¼I½øLÈ9þ`®bd…Mø<𔲢%ø)ÍtT©û^îÊ0i7ÇmŽù2|HîÊ'%5£è®™6!\ÌÁ‡ÝîùÓ¹ q¾m_ÈQÁÖïÞÉX[)žë ˆLà«0È£¥Avo‡ŽëF¨ñÛòöüKʨçEyÛ®_›L¢W “iv€ý,ÏRU=‹ÊºÖQ™è¸¼:Kã0lhúíjípÜsÇiiˆN9r*ö’”ÁnLì³n' O„ˆUï2ø ¿´(«WÞžÓ£Y,neÚn²ï¼À &G[N‡•†§#¼­ì“}ÝB5ÞþÈÜúÊ•ÎU1þ6®ÿ –+Š3 )=èTTª+ˆ°_Ð%¾,˜g3VÔ¥j†J=ë ³Âèôf»7l-oÆÌ³«µ%.£å..3%$3úÌZµjÁï:Ü®Mâ$”ȦÇ3=î§¥FfN¡Œæ àÒ\Xag±§+Û ~H›E‰uiâ~úNAáûg˜œfhKí†y»xë}únfç«Ú÷ƒOUó%[MkTŸÑmV{Ýà…u–# f9¢'œµŒeã2^·‹£aX~ÓíÓ*Âû_¸=óɦÊéÙž¹ò<­žÃŠmǒבv¥¿ØPsM^ÛQrÁÎúQ"h3‰ù«áùàu‰,7xPÅØ^ )Ãx}³«ï:ê±Ð 6ê›v"!(ÙÇÌežôz®ï— `ðƒß2V×NíâåüVV?;;I©w:Î$×#û.þ ê2H R p¼-»0BîÎ7èë·©%ÂÊö$DœÐ°u·K|f¶ûÍ#œé}Òu™¹û²ÁgÌŸ§} WG>òÁE‰I_Z ÿdŸFJ‹ƒ aOïSMy“?¯±¶'ƒ—OË eØÈÕ-Æ$etµ–žº‘á½¢7³KÚRÉ.ûuôMõâî†ZÅVßç>5†*Öæ|@»#bæç.LKEë®Ù¡Ñ.(ÛÕ›ÃäÏG¢ ºJ°ô(˜á·•ªÏá%`~nÍr”‹“wÃΜU=íA—ß–˜{¢GÔ¡g–á°ž)çÙªú{šZ=(¿«ª²2oèxàçŸ5âEy~³‘R¤ñø/䮌šù)íw&J§0OðÒ®ÙÁÍm­é|ñ±á¬A‰}•Z„Úžò¿Ép¿S/G^-íTÑ+lÜ2ø„¿(ñSøWéDœëí3õ3ÿfß&†•4š¯IŸ‚ô‘Í 'ž VÍÀ‰›ÂÄÊwö½RäìÀçTÍÈ´©y‚ÞðkHgøwÐÉuTDâQ#Z›ØÛ:š¾w7x,‚+ƒäT5Q€î;8i¬Þ‚·@IÜdÎ*ˆá Y¾¹,·É÷p{šZ{£ZRPò‹ZRzߌúr DkÿÂå°ÕvÝ}ȧÎS[RÆkT— ¾ä‰×u×ï é»l\žWu }+u ,›á†Ñ>¼<´R†°‡oúËÁê¦ÿ¾FnTN>K„g"~Dù‹c`Ìh3W²Ðñì[§/Ñ- Ô‚ß«ÌöîÅ7ªàÌU5¢E«ï~ ¢ðë8;\rÅÔ–˜vXú( Vèâ›uKË:l Ë™2­ˆhõÇA³hˆ>ŽECÓ·ôŒh©‡ÍyIå… £M–ì’1°LÄrû¶S@ÌA´Íœ¯L\ u%@“"_Þ¡MË[Ðcd´³u¾|_›SåOj½¬Z./¦ 1çÿTLÕd¥ULBœÇ¸%ëå¿mX!u N`uZÌÐ=)I57ðÀyûMƒ[l)S€6  Ø&Ï~ƒ3Ëá‚`øü@"ñQ¼¤ \n]˜ì¤)—ˆÇ’ƒsi/” VŠwƒN„%ðª7·ž$–]²Ü½"dZNm1©‰•¸ÝTSס\¸àÔXîÜ,FýößyüîÎWõ‹¹2§º«Lª±Øoa-Uýf[b^œÆä]»‡+eAüóIbßBx?‹iœZÂaýèWs¡U*hp@Îva=»ÒbáQþÕí“ÿ€ÿ™ûendstream endobj 71 0 obj 7358 endobj 89 0 obj <> stream xœÝ=É’Çq>:úàðág˜fí ްHÓ[È û"ñ$( .HÓ_ï̬ªî¬­_¿€‚<ð¡§Ö¬Ü3+ëû“XäIàùÿO_^}ð©?=u%Nϯ¾¿’ôÇSþßÓ—§C)Oq‰N9szüÕUê)ORÊżҋðúôøåÕï¯߈E ­£¿þúæV,ÖÛÔõñ·ÖÖ+ýêæÖx»Dí®¿¢ÏF8®ß°æwì÷SümœðÂ]¿¦ßVD¡«!¿…YÖÞĪ룛[+Õb¿þéüºžÞ(¿Xk5¶ÀzçªÆOh§Ö¿ÑÌ/ØX?ÜÜÊE8ãõ—lý¬õ³4°6Z^ÿŒã¹ÅÁ|_Üܪ°Ø`CÕ‘ÿ¾ÃÖf &T°éa@c¿ÂßÞ» æ»}Æ6ÆGïVnƒ²›§I-,àdŒiÝ']ÍÂGû1µuz6Ç Ó7Ÿ?þ·+åý¢ìzü °‰Áë ÛSF؉)Dߤ‚qóØâU‚nðÝt>4mq0ŒFë•÷¶Žû]:¯Ýh8ÇmBd-|ÄmÜ–}Ü"ú'Óvøqqtχîixã`QV¸ÎàÀ`÷œ¾šèmµ¬×8F\T¨é…áGÙ üë‹1A±Y8þäµ´.Avü=k"·A$®Z‡h<¥q–g¯ÕÖ€ý, |ÕÀ1düœM‚4.Ô┚Ó*@4$Æó`$Ík¯@qGý¥1¼w‰*}Î 2ðqÀÚOï]X»8¯ ]ÍÌÒc³ä:ÍzÁîØ¢¸îkN÷—Ô$hµùŸH=8ÕˆVˆSZ'ø)”i¬X>ï3 pÆ g Î¹Ýf­{wÆfS@WÀ’›²JQTUŽt@·ÔtÏçÝ~GÖ™n¤oç„.­ž2i$¥Lâ!ö!"—³2Êa>cô9c™Í狱{ƒžu¾´§ÚSþÅêÕœÙ)‘ôa†C~Ùº>}lBLÛÀ´³L”+`ÏÚ4½Î¦™X»“x0¦Ë……™;ûKœ°ÊÔréIC  ŠÈx1Ù±6#+-ò_0𯩧•:1¾–úEŒ2‡ÕÞíý2N’;f³Ôj"*œ3^b1êS5Á ¾˜Ýh‚Bšl%šœww­4]Gê±Ë';ƒ ó,·aNç@I'’ä¢túeÝ’tbáuʈ$¯ â1‡ÔÊJãÛÔB/ÎÇiúx‘˜¬ë0ñaN‡®¯q:OýY'ôʶ\M ØœªWµjûë’ä”–JúBç®üc0‰Š¦!jZñUAGõ;ðÝt1b ([ó±fe¦kPÖéea ¿Ú@1V¾Àì“o“5˜Ž7hæØ®vBGmåÙ`TÂ(ãY>,U§Ô¦$«t‘{>“‰]8I…Êâp3ªÆdZ`o=P ±·H•{”⳦vå6ˆÓ Œh„jRG¨ã¼ÿÞÄ dwZÑÂâÈ¿H©ÆÙ\A'­éö*†ƒIçW t¬¡ŠÀ›Þ+« ¡Ü+CÏm`sH7ËÎP>ØÌ‰ ¬¿œ €g‡bJã)ˆc‚°ŽïTwzoâñþØ÷S„6Qöº˜"V/F·¬Öó¡@UŸ·NúòUéL³ª†$´^ô‰<âÁÌb¯GTœ[²±êAˆ‡/QuÖ5ö’Ð…¤K¢$YXX}/ A˜À „‘KB Wö’P…r2½$„UY’„VF{Lê…$ j«P;BøØøR§[E>UJý?%üú( ákt¿ ™õÉ7Ž}@1öNÄ{õøïº¿>A‡`¥›tÀá@g=>Üà“Æd À\ÔB]È'$¨GoùmÀNA‘§ù¨þ£Ã,â°îéê¿¶0‚€ 'Ê(Ô/ a•iI$1èÇÑ“‘!,0üË+ÐØ«/{b²>öUL°ðiP JIàÌ¿é庨7j_‡ì-ºÀI…Fë» !ï§Žž]—ˆëvaûجȴŠ×% ”±ÀvL¸œ± 4Š3*¶1#‚»ˆ±øÅi%ôqÆ¢Tÿ *vUƒ³•È'ÞÔëo©“Žr£«ª =X%‚Á(¼­‚H¢æþ€¸ˆ(Ûê‘Þbï A ÇÍÎb pjeÉuLÒÓ:íT-ðÍ—‡-²ƒ^­£ØE‚e€z‚µñ°6˜||\?9n‰ü‚Êày£ 7²« ¶ŒÎË—Â"RE&!féã]ô›N ¹Ê„Ê< Î0Mõ­ÆÕ8_Ыv‘Ãý€ª9qº¨Ã]F˜ÿWÔ‹$Ë&bȘ›jA‹× ?Ëÿº‡µ‹ÉÞPÀ¤ÕAk·rÿø{§Kü? ðú’Aýø< å/àþ8ZÞ÷ÏÀ)Õñ·zUsE@š¢ù‹æuúpsJ&ºÕ‚œÐäñ•Ekf‰Ç)샗ÆaŸaÃØÈ Â†^kôCCGåüô®ÊN¬T+òî:öº¶¦¯<¿Î”¢,]E«^âppvÚ ýáÜ£qy˜à¡©cYÓú Xê8@†œnsuqÅx?eZ«„¢|Ò$þ5€Û¬XQÎ×÷`õù•ÙÔ×PuŠ»ÙŒ´è&‰h–³ùCQÛ:Cõ.B{ pq?ÆÊoɦÍÔ!Ñ&ß:‚2±•VÑ,BÇ Âz»lYXïQŠ¡îÏlZ·ix[“Ë ƒÎuf^½ Ï`«î¯£a:`PE I'k €¼ØÛì0‡¥ÁË_.¡'4¶½F4â@´+ôøÒyt Ërç¿›Ô=_tª!ãagä]3ö +Gœ½£ºÝØgI›>̨1S$1íýŽò¨)ËÃ©Ï “]¥ì®©â4Jíç¿þÕ(· Íóïï&eWId—³ëVûyí¸ y¼êÈ/”«ÄâŒ<œëA*£_<‰$Ç«B;¿‹9&𞯭u(7×L^yUA~Ùò‡d'†’°ƒ+B”…m§N¢;¦¬ÐMòðöÙ¨~œ^ž•Ð9_ O×®†Ö²Aèòô?,fåí¡e»8>ÈLzÉ®#R©)‡€vU%ƒöÃôjû(Ç£UUL‚TxWgßž× È P˜ù6/vx4æK]œ/Å]V‰n^™“¸†Åš~až1Ïf—À›:E{/Íà k^yÒ%Ùë«5xAöúÚgÁòöá¯ÿ5/^f}A%â×ë³¹´YI× Õ)gÒèðòí –>Õ®­K1‘ܳ;\.v—â‚•A'<9®SñAN·/ÉÄ ÆËhú¨n“À¦–]¬—xŸË­»M(‰ôáÙ­&g:è˼µFØÜmo.üí2ÿyRÿ: ]¯Í/^R*8ç½ؽli’Ú¡¹×_4†=‰áäem‘QºÖàµ*ýóò …Œ TI{Â[âÁR¸(«:u¡€õŠ„“À(s%„ô¶S?IØ¢¦w8ä>òýL”ÄÔ°¦(¿£ÈDðöA‘ âÊYîø´  ³Q.[®vC“æd‰¸_"ž1˜!/PÐTG’Yhµ cF„waéFtô{¥ÝQv & ‡2ÿÛ$nêçíE)1HÜÀo’k÷É& Þ3â®cöœ¸qAÔç›Mªk¨Þ…Õ†øÔY]´®LÐ$€I8WÛe;Iži´6Lž‰ñA‰—ð‡ R3Jèr'5£{³¬ojÝ“d(ЙGÇW–¡o“ºp^†69Y†jzõÈÌbˆ'ËÐËΙPZß’…’k@€¡“ˆ{L&I5>{[çôr/ðÎö™"Áf7Ž|«z=@¢avçš”z¯üè‹ôDàð˜SŠ÷ƒVú¼¯ž(Q¼ž¹Ô¥èÌJ ä)ÑòKdÒ*1÷6tFØ[ ï…Ãx {7`o¸õËÖ7Ë.š£ñ”b¤àð€E%¬¿—nŸEªÃ*­E¤‚Ö8äSÐIá!RŽ$uoƒÒ@… eWFүЬ :å¬Ãš\SÓ¬VFÀjÇ´ÌÃ¥¸¹ç¡­ûgÑÔÜ÷Ób¬¹—«‰þ–g ºíXLȨü”¼Ø0÷[Ìê Ì¼=þÂwÕÞËîïttå·Ï”â^‹Æ[¼’X?¹P×¢(é&?²‰xH‘ß²üy ð¸Ð>qqȳ-ìKÖ½iî˜AOÐ=¬OÿТô]uœÆwúÒ"T=Ê$è4 Y|ï´Žz܆éó\•‡‡ÎÂ'<â~)“di–®¢.~¶S¦\6—] ÜVIIÁZéZòu]Ü,èßktÃsxôÿç„f˜ëê ´iP]““Ó$<0+çÇ٠ӧ(f†@WmàAXÜ=­0óÀ‘óô9{ {JMÎa¨+—«O»‰s¡=ò“sÆÙ¼„µ-cÍrÙkŒÏ…ut]©¦‰Ÿ"¿©1(­LVHõ3+¢žë’çuR±™o¯Cèö1&¾ûÁ§`ç5¦€&Ž/[™XÒ‡uÒ?¤L ŽFb²2Y¨3ô’)%=ýXó~:`'D°ôV’×ÿøfûL©ÓÌí@ut5~ÔþúSš&±âž N#NbTZäR?QgËá@` R%0äž?Þh0blz §.×!50—¥1PJáv OÅjž×i…ÐÚTó ¾Óß2ÀÝmÃó®ì3ŠotHÄ¿-àð9žàp«ð…±syIÍ­VjhYÉA\³Ç½s©V­½ä¹¡3Yx4¢“ÓJãÝsTT–aZ÷sÌ…øj¥÷ €´/Ž‹áR½1C˜ì¦Ñõ4]t–ÇÔsIlýs^ÈöVS,å%•é9 8Ÿ–޲š©'Bv/RäÝÔ)B¦–6õ.Q£èÞ˜‰Y0ºX¹˜KTlCå(²øÍê” Á¥EŒ1‹ "Hc¡Wï ¡oŒæÍ1߀ŽÏö™X—ÆS.¶€lA-sž^É ¶Á£em¿ß&¤ý:aÉÂõ3q3è¦Å0Ætª~Ð?œÊ‘sªë¬­{˜~Q(õm_‡€Ž^ÃI½cž~÷f<õþ3gÒ Ÿ~(æ¨?ÎNßæã jyu&„#Æ®N/Âάß/öѲ}iEQË•â¯Ò°Ðû»~ѬzPjºr¼ÿ¦f”´ÀÇl­Åß^6k˜åOÑû}îíS+ðÕÅøöñqÙ«´5Ъ2ðfkÌ*û?JËbe· ­ùS´ :TuÉt%‹4Lœ/„úå™IdvôÆwq-¾ÌÀ¡tËþ•°´"»o§“”©ŸË¸ìÙh˜ÆÐ;ž¼:$ïz>q´Z0m¶6äf‘5!ïj=QG¿hG2IG0Z-ê1£Íש-Å,¤±¯1†è€@ºø|¥m\ïY•à¹o;Ü¥ H{à-$ƒè ­¾ÞÞ°ÝüßfX85M0åÛH±öîÅt4¶QÕ­Sjm_ŠD;è6¾ ÍgCLbÛ½ò°!Õ¼~Ú«kü%²¢ºaO³>A¹¥@ך,U˜-cá97¾­ gP6õÉ|ÿŽýþzû=¼ñ.AöLËR ÷b‚F.²nUTn ÆÿîêÄe«endstream endobj 90 0 obj 6979 endobj 94 0 obj <> stream xœÕÛn·ñÝ-Ð_Ðãq`mx¿ÔÈC‹h‹u}H‚À–Ç%¹¾¤IÓþ{g†\îK®Î‘œ~ðЇKç~ãþóDLòDà¿üÿùÕƒÿêOž¿y Nž?øçI?žäÿίN~{l8‰StÊ™“³¯¤7剔rr'^éIx}rvõàóݳ‡°pPÖùÝ‹‡§bRF-w¯Z9ɨÔî)Žjct»×ø¼ÞíÞâ³1J+W½9¿aë\ã¦B¯«)8 ”ña÷üá©ÖŽ+^â³³Ö* S èiq)•’3&X9ì6ÿ Ÿ­ÕAù/Ïþ¸“²Âpð–ü]¾Ò*VD¡qW-üädܽÁaï]Pp‡ zm`S‚Wë áH/Ò³õÊã2Z„ÉS­øMzÕ† v—iŠ®Zý[ý›žç ;]Ò’@&áÒNnòR¼0ªµ7q÷uZ›Á¥EwrN[ƒ‡Sðwçl5¾2ß‘CØÌA ‰d,»óÙ|•yO#«M9âØ*q|Ï‹t6$Ë¿`¶ZG?/B”Ȭà„Pˆrà­ÉÛ£¡ù2ÓYD\‡ƒÖ:£Sª‡€sJ¨ ! ç=µòÈóåMd³Ó™¯N¥‚ÍLìÅŽÇ1éb¼çDl€ò"•Üd(­'‘ýÏÒ†TA÷Dp\Á׬ôŽ-ì“m0nÆ 3ˆÖxpªÂü5C+ç‚Gis6ªOBÔó-odÔ-Ÿ—SŸ§ã9מg€Æ°Ä#€‹¨kîºN`íoÇ¢C!‚7p*p$p™É¿AT‚8`KŽœçËzÓ2%)¨:|Š^€¢Bå@Y™prö§g}N$PΙ˜$N¹xµ ¾*ƒ/–Áë2z×Îíî‹Ý2áÓ2áNP OäîÉòûç b˜b”BÍ }¶Ì»,ë¼]¿*ƒ^¿.ƒ_-ƒlÇ×å÷›eð¼ ^.ƒoÊà›eð¦·p™^‚Z̦ßó£ý\ÏSý~*P  øú«SüX~K$3.JsrZh‡êèçxÒ('–Ç™mEäd‹Ÿhú¿&sÿÈOö8²ŠÌ¾àG‚u$*¦J%ü§À÷„Â\=ãwŸ,£Ÿ,+0ø@g”á×·àú]d3­õÉïÜúùãå÷–õÿÐ=Îu—«Þ´€â/£+mIE]íMÆ<˜™Þ Ð•³­ËèxG…BŽO ‡ì“ãLJ§FA ÃçMG— 2;ôºE !ü|Àê½GöÚkÜÂALÑXµÙ§éÑI½…rã‚· ìr&ƒbáÌ—œ…Þ!4¹›EŽÖ^;0 À“å@/8vÊ„•À¬?áìUÕ¸Ä]Ñ ¨É¤cfs%9 L&K nÔëÈÝï-ý|ÁÓ>ÿ[Mª•]ŸFUªÖÆg&ÑIäüd!ÌŠÛkó˜yÖê©–ÂOÛZR±×V£-(WFNàw0Ç™–«©Óè5þþ“m̯lØÁü Éç¼ÂqÖGco`¾Æ1Xwx£ æ—gL¥HÜFdÁ‰\FQ/Ê!*ÆžZ{½œôë ±¢Ç«Å¦¯ãZì]wÆ?+ ¢×˜>²é7n¨#㇠îä-4‘šäÑ¢~בD­~Û$:Ë1ÏprŠW1°M¢—Lâi¨Ã’I&ú’ûQRÅj ‹ë19 ì•YeÒ lª1Q©Ad¥ô[;J¡hÓI¡c¤Šõ.úa…€}·™Ü*‰ œ-R«àà;Ê (ðNøhN2Y èù=©Ž–DÌ«cóŒÌ/Ùøõ`μŒàyÀÄOuÂ[Ó¡½Ÿ“¶9›íåœKÞ—D±×¢$‡µµjN[a]5ÿ%f~†˜9e¼ ÕŒWƒç¼¢p†”ûVÈE)-µQ=™€hÖëPÎÀ²…庹¾9e‰„°@ JÌ£IiS¶ÑZ9ãeE[›Â¢-nM\M‘3X^§,†^Š'­XÆ’É*ßK6(Ac턉´ß RbD§’VöàgT‰n.|½§«Í‘O9‚FRÂÇ‹$^¯·ÜJÒ!¬ÿŠ@lŠ‚ð0FZ„𔀠#ùdÙ žim›lJª¬‘lg3ð©=\e!c) ZÞ¹™I÷R_°ŸÊðý8Mÿ=Ö'Äg²JÂóç ÓgTÙà —žœL2Öhñwl£WMþ~>yÊß[ß/a(+FáGMzX“è`¦TíJoÕÂ7H²sà¹f&«Ü²]¦Œº“¦“ª_I(/dE U ¨”0²Úå×KÚíÉ™ .Ü« åEª1h¹%·@Z«`z½/ϬP;La“8@¡•³85™ÌaÕò˜´ùìZmxKHQÕTfä)™ëð^æC0˜véÃ8ùfñž¾š*gWë\%¤cÕ‰¯Íi´’| ‘Ñ­;†¼$n©xáiZtÙzJ*–icÉ-ä¤_ º"¿ôÞÍÌ]|JvÐ ;ÂH`å«›ê¼h[AÓíþÁìJæ8tvæ8®rø“»h¼Ûýº­GyÇý–ÓyÉÓâÕãÊ¿j¶ÚÙ¡Çg0¶½»8àþ<ù"yZÔÀXa?{ii¼n985B ¸”O‡p;ĺ··rÂÂ$ s÷wù”×-ÉÍÞôôLÂS> Á,(éJå4ϵNˆrÐÙà4†F}‚r}>˜22Š×IC8Ûr…öqR9öÇêZmÛ‰‹t«IaÔ}üN„¾ë4CÂJx(V!T%­xHW s*˜Ûñ|åÈÛD¥¢aÙktÚDOͼ3y¼“à4 ±>ç;5œÅ¶¾ý¨;b$áïÖÈ_˜ƒ‰Ç ²ºrÏZ…û“{xªG’{јú£v@Q̘ÇÁ@ËjÞßí+ð9¶$³žu¡>RÂ4€¥YE9ži½Èu–ÁÎ] ŒI¡%²õ Âgwjétä¿3ÿæ:­%l\÷G¦j7¸YS4æ¶sŸª?Uðæ“’Ò(P`bsÖðøÙèf)d½Ìçm¢Ú;ĸÅuk5)Eü=êšÒ9ÉÖÑKÃZ° 0í ̓žÁEi7Ë6—b9×?0šá¬ð}†ÁVͺ|…ERr:&ÁU×AÖŽ«Sß@ì¸æsÖnžÒ¦w!À n¨±ÞÔÆQjöh8NÓ&ÓÆO°Î¾ø;–fš¥ì·6m¨®;¾Á:Ȇlô„WÅÐÁ­ÿžŠ Á¡^ºsg‘?¨f6“ÃÖH};c9<7îÕÊ/åd Õ¥òSëçnЛ+ .¸^¬WâNĵ1½0šåÌ™k›:ä÷lhŸ¡NÒ`rBœ³ãÀ×cÃ+«9+æn6¹Fóì$P’N’ Ö·¸sɲŽpÿm‹¾Ú0eÈåÑø æ©é{‡QÍØÍ¡ÕD Û™y…W<ôÛM–ù¿–¦ó5/Ñ3?Lßwiä02LLb†—¹Æä1?ß»C˜• J¿‡?õ~÷5´Š“©€ã:u*’"6?Šøãl”ža5ÔµK·ê} 4ËIšÝçŒSÌ2ÙÒÁÁìÄ¥’¬%›™ùÿ’-‚Ó(À˜Ù*6Ðæò=úð^Z°÷ež›’/"…µC!àÌÎサ–×Ècºa¢Í‚´Ýä!Z¼Œ³ëä$Äðviš™éÀÏ>ðbªñÎ|Ú|Ô@A9‘vCƒÁ·¸`YFÒjƒÑú”QбÇeôæÞ™’UúöM*2 ³}5Ä)Œ½í¦Y€\P©[O ±b]2 üÅU¥÷Hž?ágCˆËáÜÐÞð{|ÅfíÇòˆZoV}‚Ø·zK¹‘¢L/vi;ŽÚ 9Xê±zxšC 3É})*–›ÊÄ©#®ý6MGªõCè=’ã<&ø€9œHÖR°ºÐ&ÃFàúArè劀dò‘½ž¼h¤‰\)ø™Gìó †¸Al±®°ª”\$¢„#%^x2ÈIØàÿÛøŽúWË:sæ~A À/´¡ª0¼‡ Ç÷äÕ‘ Ë=mK’{ÑĸV3s=ó}Ö1 óÄê’p´RdFOÕqsËlÒN^÷R[+ï¨c~Ñ£ˆƒE[äGì8ÕTkb-‘¶¬“Ʊ…圱FnÀF#&]‰£é$žRT>º–f ¦î-àÙï~L=ÊE5O˜U¶SolÌ ßq>¥]"°Z 6:[8ÛÌë­­¡eGêhe@B3 nïeاK¡ !Ò™ÆÝ› K§C"ÄÃ- loã*гÀ!A6é.ô»lÀÒCš Ý(ÓòžÑÉ>Oô3.£¯4öN[7)F^T:ª“vˆŒ­Þ|€ÚÇQiD¢r®Ñ 0¶cß·‡xƒF€‘=û÷‡A¡.K µVC¬55Óä»l ð+Š‡ÐˆzßzÅT¨Q•vÏ¢0H¬Øœ…qWU™žMA‚fU.#¬éhÑYRìm¶³¢äÝZš¼Jm*ÚUëÁJs²^$81÷Ý#eîyˆ6Ž›Á¨iUš^´gçÎà½jÛˆj£]w·n;hÇ›¡iŸ }.&8ëëFâÊý\zßÅ>?­¦2Çgˆ cp™x´Œ—RÂ\ëø‘VK2-™%W%†ó©•CO-ð›—"Ê✳^§öZ#ÝH9Ss>µ:é·öhsþye~ð‹•µßômä‚ÕCןãÿ*_¹U0Ûï÷øNOíà¤4‘‡ø¼)°-mK靸9Ä2ÃÂAW8FQ4?Þãšó;½Ô¨0÷×S±á5†å¦Ü)ëu´{Ý‘“¨’:p±›ÈSEi›d Iøá'™>‰6æ#P"qZ¡þ~[ÚJ¸ú¿B÷ .Œmo!/¬EéÃIIü:ߺQ›72ݹQ[¢ÇlX~*Aéû˜L´ÔñüµM4’oö6#T0m¯ÏÍ­]„¥Âлê‡Ûcjz$¼Pǽ¬QË÷E^R•j ¸?dÌJÉ„3õ#)Dxh,ÊF¯b±[ßÕ£›¶«˜n¹r—>ÃVÝ»é%ˆFZñû|ÑCÖ×ö:ðajïΊ³×r®Ô§¹¬c¼?£c—øclË6냷mÀ ß¹…î Vöûè¥Dp´GT»SnÆ_횎¾”¹Ožô(oÍ}òÆï½[}´>yõ}ð®Vo'¸9Àï«ÞÁxe§ê[ÎÈD€c{Š‘´1¿:wh™ÎÆãu¾a¡!©ì`'ÖÁpÿË•&’op/í¸¶ F@7”´¡F£•sÍa¶¸0©U3]׸ oiÌšTN9ÙʰŽ1pC¿¨ÒgFͱôsØüXíq¯íYLcÚ''Òç€ÒåZƒ ³¼r¾ÞhÄmðªXåe$Ìvm|·zÞzÜ´y¢ÑÓÒWî¦4¶:ÛŽôi2õœÜû©û—WW—¤ñ 1ØoU…Lì³mþ?¥á6Ëà­×mçëðjˆš—Pé·ÑçeF­oÒâZ†ñrCNR=@ž½NÓåºQw¡b#Ž nnëÀôÇÕÖrŸüû´¥æº§’M‹}kæ–Oa#ª‡Âq—Ïà§„äF¢±,þ<'Ò˜˜¶+w•]À{”îÛÈrWDã*5Q'Zø=Þüñ.u®f¬>öÜOS7uõtŒZm6}Î7-Úøtæì”¶ªó`D]Ÿ¯Ìc¤bknÍΕï2û=¢ªCoÞPGÔa"~¢hä´áJmnâî|˜sçŒÆÜyèç—0‰&ýø˜s¥Q‡’ùvc•8üÚeAдLOWªá/' þóá{™mˆ\ð²<âüß=ø üû¨á‡endstream endobj 95 0 obj 4894 endobj 101 0 obj <> stream xœÝ=[^·qï‹ ? èÃ÷¸xOy¿4èCÛ$E‹mj¡-`ûÁ–d)ÉJ²%_âüúÎ /gÈÃ9»«ØF $ˆör8ùpÈóõEmú¢ð¿õß§¯®þþ¿ãåÅ»+uyqõõ•¦ÊKýçé«Ë??&_ò–ƒ îòäË«©/Zë-\¢±›ŠöòäÕÕ'×öFmÎ[ëÝõvs«¶˜½QñÚ¬‹õÍ­ÖªÂõÝXè,§ëϱ^§²½~‹Û’¾þ†Š£ö6_ÿžuÁ›ßÝÜÚd¶ìÌõS‚T9çpýfü»ì•¶Ø£MnÓÐÉ—T¬á¿þú[ü;¤ }¼~]þNA¥ÖcŠq‰ŒÍÉð‘ègOþH¨õ@´å¤òåÉ\=ùå'×OÐ(ks¼~‰€>úý=ƒÞ’Ò×_±b ‹ÞTð9È·&nÞÇtýŒµø–ýMˆ» ¢ qçUV¶ ¸F âÖF—qÌ–Œç¥_L¢rˆTïïo …‚AŒÇá}óö¯o[§ F ÙplÄW¬ë:yë¬F&c×IÔŸ S#ºÙ-¨±›Ï÷Þ99yï¿g½¿få/vÐw¥så4gGåk ÉÛœ(ä»BfcÍ0¾&Ø$:Qjp•™h`u[Î'Ï@ïØ€wµ-Í…¡q$N²–†FŒ2üù+®s±&†¡yéE›ÜûFa(s9*3@.–#•¿Ù{yÍ:¿¥&Ϊ˜q¶·mº·Ú€x]fÍÉüšnd¡WÐÈWÑ·NƒD4 Ðqñú;Z§6’ñ¶@¨—˜ó¼4QÎ˺’ÂA»iÉÎÍ‘+¼9¨:—óVT×Öašë{œ–ÕÓѳ~£y'׿rkšm€™ Š…8Â@§¤Sc ɤIÖ÷Æ ô³ý½Éªnž?®^üåÎþ‰-«ÖÁtïïg–¥MâÆ#¦ÜćÓþ«5•ü5Λðòˆ,˜¯9ä—eIdàÍ.yE6ê\FÙ¨¼‚•ÕTE;¢1,rârôçê=‹™ Š›9g7L§èÇ4¹lT.“»„-G›<6`/#˜IPÜ:æX@‚¨äcÈqeHæuÎær;@– š²+ Á…' ÃÉj£@í95¢A£s"su ÆþÚ"èÁBjŒÌ¦sÃj:6nf 7âÈGdH1@Â&î‹Ãf°¶ Œ›F®èž—i'@ët9çØIÂ8ií‚T>“]k™>NbÎA£V#â½Éƒê‚U ZÐà ^ Éæ/˜lòöDP 9òŠÉìëåyÑ;>lЬ-+¦T>_+‰‰äø·‡/Ôy­kR„‰ó“8ò‘h×1OÃ’”Ì)/—Úÿy^ìõ)S[ó"}>qé‹`ûœL_Ýx fÍ粨Î>mR„Nšêux]Ð20¨­=¹òÄà]É»5›1»Ax€§úŠl­ò~X–\\¸0”=øÚ~²Ý}q⥣ë$aÅEá›&-ƒ»#axφ0³ÔKkò¦´k4$À$ÄìV6ÀoÙ/ @„Ý^í?²v ,]€­"r‹Àþ…ÏJk³6Qy•.`$óA0 °Ý|vX–…K¿8ÒìЦ l>_òcE¦[˜1¬Ow¹5°' .=”\€½¹ˆîS?šL™b>ä6ûS dPÙóéõ¾>V³²[¢*óÿŽ„ÐšÔZG¨ç¤­!oL±OÔàæ®™dÁ€—ö+Ï:€ô¤ü©C3Ô«ž¡ê2tà:À”£¹þ[4N°ù f…G²Dß Éa<Ð :úôf&ZR|x°|ÎÀð`G=è·ô 0^9k ÄPmYÆzãÝjxЄ&‚d^n‡¾þ‘t$èëëøf@X 6Š\èbøeu`äd½¦0 ‚þ¦1¬÷º¦¾£E¯Uvíñ¹œ”oËàáq´Ë!€øN«¾–þ‡(ïÑUžÀ/»ÖÈCÅ*Щ-î±o òJ‘y #^™FUXïŒA~3@TzJ=“ºä€n…(ôQ@Y ¥‘6·6ƒL¤¬×:2}ëÆ¨¥h;”ûÜ•íw¸y‡=¸:¸ø³«ŽL™¦Î8n™¦‡â¸žÞˆ-F!9·lZ,¨³Û“sÞjP—€xÃû7u0½¦e€%……·c×ÄÚÔ#(MJ;nü¥‹±°ÚªÆþž%šìÓzƒ¢ášuË´à1†}üÇNZä zc8Q½_vK´Ü§‚ ùº‰``»Î”æwˆ$XV+@ŸÁïYš"n¼$A*rrßP/&\GjL¸µé8„ö;Ñšÿa÷§V„„óøÎí„Õ×Oe'þ*9¬Ëá¤À¼ü„ žÈpƒ#8|ið_Í­GT`KèpËøƒûŒJ±Êø2†Å}õ4ó¾FPÓ6ùøÜɮۀì’:¨5îŸ)ZœÁi2ƒ_ÿfààØ NwÒ—Âèôò¹ƒÁÙv<Þ iœ_¢’Eš4’&úIîlBÁFlm4«kóAÚwL †~ ÁcçAÛÁ4ʇi%î·`â". Ï“Á¬bÕ÷œêƒ(ÀÓ‹5QŒÎFƒŸùŠkÉ¥8ŸúÑ‚H±,€ÓÉí_‡síJ ’5gwœš_« µˆÊ dþ`&àct=÷m¶>ïæƒ`LSc0ÝOŠ,lÕùŸ+À§|Ï9ò10>ptzcAòûîGhŒ•ùÕ  ô¢þ’;‘J”Žjôt^NÔVê¬ùñ¨íКÙ# _n}HÇÝ´qÚ‚ùë’…¾}dG–È}èv ëŸ˜ŒK—mijÉAQa¸blìžN²¢×¸“´˜X•]@‹çðz~²—rËÌY9ØoÛÌE‹Å×Ä©™²:ö]Æc¨í YÆl9ÉÎj˜ùjÚÂ'¡ÓHÒm®ÙY4°EŽz:öí4\ìú$ {æ•N2ôñ!JæJ˜›1>æúòÁqã‡ùÀp(dîœ¹ÇØ$:©&T`=÷¸õkšG'ó¬p$‡øø›XtÕ2þÞĪ)²æâ}7±n¶dÄk=„Á¯¦Læ­ù˜\?Bá6”>§…§Í¢«#¶n3zt¾©ÅÓmÇu0â 6öxuëó6w/éŸÑÄ1tC"|é Q0±?aä _ŠêHö³œð¿ç ¶Ó‘NIE3[î4jPã=¼wâíôÉ¿*4“b®˜ñ©-‚¸ÞW·<¸! #̰â½MŒjýê`óæ ÕÕ?é\ ã5^vª¦»\E¨76èŸùÆÆ êÆ B}{ãÆ+ú-ºõ@Á€W‡z§ /:<øŠ„±&´+6õup,ÃúyX)墚`14Ó›â«]zÂûl^ﬥ Š¡ÈC¹Š2îÉ…;õ.Ðhá¾õ¸¯_ Ý»r‡I/ò [`foœ¨?  ø^Ÿ±&Û.8Ýß<¹úÞ¨÷*³/6…æç¢øæòöùå/¯¯>ÁØÆ|¥tù¬üóì (sùþJ]þõJW.^YueBмäîêãÞÊ¥lÆV­dh”›ZÕ’¡N­jÉÐ ¼£©U-ZE—¦Vµdh¥ãŒ}-Z)3÷UKx«^3µŠ9N­jÉЊ.­­j oeÀœ8TK†VÆä©U-ZÙ8s»– ­¼ž°o%C«iôº¼ h›ËZ‰ÿ÷öùÕ—¿”ë>îU lƒv¨c`&)l®c`Î8l®c`>$l®c`Q‹$9Ô1°äe’Ìu;˜WJ$É¡Wqáç’oRݶä›TÇÀV|“êØŠoR[ñMªc`+¾Iu lÅ7©n[òMªCá²Ä7±n[ñM¬c` ¾‰u lÁ7±Ž-ø&Ö1°ßÄ:¶à›X·ƒ­ø&Ö˜ÎVä›T·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êЪZѾ‰u;Ø’oR[ñMªc`+¾Iu lÅ7©Ž­ø&Õ1°ߤºlÉ7©À\í›X·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êÐó4^ä›T·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êp¿£D¾‰u;ØÒŸ”êØÊŸ”êØÊŸ”êØÊŸ”êØÊŸ”êØÊŸ”êv°¥?)Õ}|úÓ}­ü%nføÝ>Þ@V¦„°ñ—û׿¾yò‡ÚÚo1”ëx·f£{­×j¯¯½yÿ¶êûÀ5ÖS@DGWã©îâ÷’˜7å.:âOÈ ~ÓDu¬ë¼~?½ÂŸÞox³·(!–½‡ö]Æ@ˆV’ñnÒ¥÷àTƨßQ±è-–­‡qO‘GŸ\> ?û€'ù’V©¯Žu 6í%ÉnœÐoŠ$‡=lR¿aäl5áÖ[;öоËQK²2„[ë!k5ŒQ¿¢bÑ[T,{ã<ž1ûP'G¬K©º­ªÆöz‰ÊšpK°¼°_•N§P£T©áš0öíX ¯Çêwƒ j âj.½Mï`ìcÔo„¨Xô ïÖÃ8ºvr/É uј–í%šp3ÎiNŠp7ÎUC£ê쌳E#ô&Ž=´o£D+±„ÛÞƒMã65ˆ†EkѰl=ŒóxZœÉurĺ0ªêW¬¤(sãsææÀø”Gs`|ÌÜÀ·{hßMUï%E™÷ª²ïctsбh-ÂhPæyÖ}°“&¬…I§<%b:Ř0È{ýf:¥·¨£÷оëµÄ»A§àÕñaŒÐõVâµhX¶ÆyŒ 󃛲Á÷©ŠG†Glß_ík%·#‘ZÒ¶5wX`Œ¶yn=/¡c–Úªõ°·â}ê€?„Ã-†n¤žJî0Ò¿–è%šV,¶Pv‹û'˜ô-]Z n 4uQK`M‡ÍLíÒæê‰ÔAÛ7ˆEÈx˜ÙKî®LTnÃßÿÕƒn$ë³}·QŸ^õ’ŠÙÝ^RPo]¶™µAÛwó+a…É®·%0Á„ÒzIg}FÕÍ>÷…F­$WiÔK¼"µ.«Nïƒv­¯s,èÖè#§2¡“ýÐgÿ.£bµ¤bvÇJ ê­Ë6³6hý®¦Ä:7Òh.¹Ãˆšâ42Vg6ÐþÙhÔK¢©ëh/Q…ç­Ë Û õÕ+ æö’;|ÖBÑ„LSÙ­ÏþmÚ:j%F{IA½uÙfÖh´+®Öº‹Î$òÐj7÷f?æVt¿hÜXêg©å$¿júçÙ ™î*%#³o÷þ³Ç÷È/RÔøJʾǧMøïûÒŸ ø«‘‹Å›ú®¾õÇŸÞc¯ú-ßh7C¿,óotQÂã3YÒ ,éöátÍVtÓoM7Œ¤ Óçù]7º%²¾Õa þ2¿ï­K¿Éx6_&r}X ò»µ‚eëÆV­dhT˜ZÕ’¡• fjUK†VVOxµ’¡UôjjUK†V:ÎØëxÄ^Ù¹¯ZÂ[íôšá¨•‡ùŽ­jÉÐ*x5µª%C«˜ÝÔª– ­2ÔŽ­j oE›É‘Ûµdh…ÔØª– ­¦u²¦Þê°¶@ƒr”Šu÷*§í!P*Ö10“R±Ž9s”Šu ÌÇC T¬c`Q‹$9Ô1°äe’Ìu;˜WJ$É¡À\áç’oRݶä›TÇÀV|“êØŠoR[ñMªc`+¾Iu lÅ7©n[òMªCá“È7©n[òMªc`+¾Iu lÅ7©Ž­ø&Õ1°ߤ:¶â›T·ƒ-ù&Õ¡WFä›T·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êЪ:Ѿ‰u;ØŠob[ðM¬c` ¾‰u lÁ7±Ž-ø&Ö1°ßĺlÅ7±Àtí›X·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êÐó´Nä›T·ƒ-ù&Õ1°ߤ:¶â›TÇÀV|“êØŠoR[ñMªÛÁ–|“êp¿£E¾‰u;ØÒ¾Iu leߤ:¶²oR[Ù7©Ž­ì›TÇÀVöMªÛÁ–öMª{ô­ë݆/,a¼hˆøü·:¬ó5në.~/ItúfF -éÐD­«ë¼~?¼´ãY ÆÚwV ¢–8E§o½Ø^cÔo„¨XôËÞÃ8áVLJ;É—´JCu¬[°i/It”ߊúM‘ä°‡Mê7Œœ"Üz kÆÚw ÷’¬è(§÷˪>FýFˆŠEoQ±ì=ŒóxZÄìC±Îç궪Ûë%*ÓëA+`¿*¾y^êSÕî¾yÖ"¨±‡ú­Ûyû^¢éÆIïA—ðyC·³ðŽEoÑðn=Œó(¬û`'÷’|±XiaÙ^¢ 7ÿ"Í©üDÏi_ ª³ÃŸ—…ÙZØ0öоi­Än{Nc8Õ ­Eòõ0Îãiq&?ÔÉë쨪_±’¢Ì½µ±›grÍxB‰›ºïÊ{èßMU÷’ªÌ{UÙ÷1º9èX´v4(ó< ë>ØÉ RgÚ)ê^bã°0Mù©d_4õ›-ÌÞ¢.»ÞCûng“{ ^üe Ó„qñ×o¶0{‹†eëaœÇ(uÜä„[tG<Ïí¦–´m ¿Õa“Ksëäx ìÔV­‡½ïÓâ®Ká£ýz.¹ÃH?o·K+[(<ÒîŸ`òËi|/Á-.]¨Š ˆƒA˜Ò¥ÍÕ©ƒ¶o ¼²—Ü]9zA÷º"ÏúlßmT裕TÌîö’‚zë²Í¬ Ú¾›_ J)’ÛOÀç˜`€ êÔKº­Ì°Ü"û4¶Ò¨• £ z na¦uYuz´k}bA·– ¹L¨ÁàµÞgÿ.£B­¤bvÇJ ê­Ë6³6hý®úHy7Òh.¹Ãˆšâ4¢qïíŸF½$šºŽöUxÞº å:S´~£BÆûŽ{ ôað¦‚ÞašÊn}öoÓÖQ+é4ÚK ê­Ë6³6èH£®@šZÛ]ô]"­vsoö»åVǢ˾aËJîrwþ»4v¼û±@¦ɽÿÇìñ¡ãT5ôò—Þê° 3ˆ˜ñV=°RóÖ[ÁÙez|µ=ö§Åþ‰2$—Ãð1|ƒgÉx[noØñåÐé=|³שּׂ¹‘ÞyùSy_ ŸžQÄbíôô ¾Bf‚oNý±'aÚµžkǨL¬Á¾=_žµÙo?Ú^þÙ´)Ö'@©ñ?ÜÜB-Íæ7åÅmÓÃ^«uxjÌHrúb']ƒá¨, ˆƒƒÀÒ\¼FÝYÁøÈòôتӼzHÐO‹@ƒ‘V©hzÉYÊ÷וÒã6Ú`'% áûSårn¤žVþ–-T)qÔÞü“2jø³|›Ì| ú>sÁ|Ëèa‚®æ‘îm=ò¡º“w¾Èe9÷&>D‹×½œüžë#Ÿß¿Ä¾Á·^Ï\<÷J#¶´¯N‹iW‹o%±8$¾õ°lmÔ:æAãô÷;‹ÌPÖ¡]0…—W—©èIŶÚM#‹Ùˆ4¨ÕÙÓQýÕÄ1',RÉféÝòé%5š^:‡˜ØïkÏžòܵžß”ð©ÅÅê ùkxZ7Ø&rÂã³Ò‹Î÷e•2°)3õ91ÌÆi«/«( óPi7¥µ '·µ Ê,“6 (‘Ö#gšk¯ŸߢÙ_¼¶ôzý0²~l•42ŠèÍ#yÞŠÄG¼}±u¿¦ã¼ÏÃCd|í]§ýiÕˆºõPü  ˜1" :öyi€ÏØÍÏäƒßaÌO“#œZð´þ,Hæð$`ćn#*¯Ó¯KÕø¶ÐÏ“íXÊ1Î6ù©EN…FÓ¤‡nO^ Ç÷èõô„%{þ gÍs†š¶žN,¼µ°;‚ ßY~zp/J¥çôNí zæ1ÇAÓ oëö÷ù–z±YM"œ Ûrèð>ëB;_ŸÊ¿7;Ãë}ðâ„Û}"M´ƒ™Í¿(ßBÉäøxT»'±í“/*kÜžÅáÓ†YNׯJ/Þ­ÍduŠ—'€óÃì°RB¾Ü˜?ùŽ –.­’AÐ’}[FÄ÷Z–ç‚ &+Ñ:¼A¾o)OßããäëлқsO*%/žè¡ƒ^q®©}#¦†Ó'êšæôC])ó6µû|/v›0&Íi–QzÌù%³ Ó;Éx GO*\ò3…ŒÃeŸWç8Ú™3Û‘1ü#roÜ·o£]ž]–Œ/å"éϸ|h¸¼6]vSù,ï@'ѻҞœµ7ugØ€'I£¦}Àã÷R8éhéA°XY'f§-ëÝMi‡Ð%Êf3zŽBÍ"êCØYóÙNÉ#–¨#=«’“‘âMrð]oD»Šæ“!Õ“çÔ7uq˜ÑUf-JV 0ôp2ÒtÏÔ,ª=™ÎÃÌ7«bPÝ-ò¢a;¦ß'gT¢ _îê¹ø¾âç»þèòóêÚ9‡l­f·@ïðè2—ú–,HÙC^·©ÇI©[нÎ.ÔÁåœ{O’µâþîÐ0 žŠà;>/HMÛ€.»R4hÎÍ‚]Qj#ºÿnR/8M·ðV‡º­s°ãI Jó¬ô{ ·nmæÉk„-™œÏíäu Fõ"@u²c)Ÿ ÞÊ™t×Òna±—%‡–r Y.RÀâã_•޵9äòZÅ,6œeªÁß*S’.ØŠå “]=@·>’ÇÓVgû®‰«‚f÷ÆeÈy³(í{$¢ÐiŒ¾pg [Ž^W\X1Ѧ‹è³ˆ9`šê€RôXÈDò¶š’„Ö½IÑuiLç oøßÁP“³(Z¤Øž]i:L’\-ÒòìR'2&†š½½yõ&ÌpIQÃþ”|¤Â]0™¢¯0GPУšr­¼iŽcÕûü ™ÄApƒ­¯ h‡_ñêÌdkEišÔ0Çí±ùC*¸Ö¡—;l~·É ‹¡K U@~zZ2×ÌY ‰–ƒAéKÛð0k0MœÖ³ÉL8«‘¡™ŽNÚƒcN«ìWxŠÇдÐK. ù‚–qÂΉ)ùžãÇ?û)A¯+±íÞ˜küéñüE…ÍsHr|ä¡N¼=/M’“œFN,jŒ‚1Ûì"z³Ø›”þø„$Lj$ïa™ý‚Múh¶[©‚øã£~M½„äÇŒERzÁÿ³‡¨%ðy'r!Zü f3Ž^ýAÀ¥¥E<Œ[ ‡¬dÄÚx~̲CÀ¬‰»Ê-MÜnSÓh¡c+–ާøÜ îXr·±ë¡F.c~‚„[uíÄ\“ÕÂÓiÞ<þx'ÛÈõh›9¶ÚrHšúoY‹ÆÈƒ³üöJ©›êÍL,VäÑ3‰®Иe9aK·OÒÔ‚xzòѦð0ß±hŸ<Ùv\Å>Mù#i²q|çMéAE™»âe›"x•¶[vÁ¢›í~ÓÕÄùbzr+е"EëGÞ\Ns¡Ö Œ›Â1%Ÿ°F>€ÍÊ Y·¢[lh¯øºö•—Sî‹l+æÈÚ«>àâÚ¼—ö•Ïôõ©˜õæ?lÕ¼®-·„“xb)­\œyÃZ¯²;æ\¥^^öüš_,O(Þ–ÙúÇ^”)Y¼Ý¼åd™­@ôí1Q.‘Nå)öD¼MãáìpF}M¦À‡äÙÍ·é,¦ô’Ÿ\ÝÙ2•qGx¶0µ…™Z®Û…›‰•7ÕqÁì…:­ñžclÉkf)ÎñqÓ¾bH%‰öbq•f}Ihéîß½ó·¯ëT¡ë,‰¬ô‡›t-®:ñ6ý¼®[ÍynRḛ̈ï|W#ŽçLã=Ðb5 (˸¸yÈÖ¹td™;ó°³'¬M(ù0ÍfsOP®]; '"0ƒ0œˆqú®C ù…«))³}¬O¯bÂò>{h©?cKý{jÏäO P~zƒ«ŽT¨¼jÉ“ðY04xÓÕbþL7û9Xîñs2È®{¨Ÿƒˆ†ÕùåázP½e­‡Sâw§Cü¿VýPê]xhZùŸ)TÒkðûÕE\ôÖP*yY&‘^>ê[ y ¤~~¹ø®ÝÆž7^Ô­»GRæPd_&³C'uš£ü,Û¨ÇåˆÁ`õã=Ø."÷[W÷Ë0‡¸#‘ýp§N\¹i“Î"$ñ)nï¬ô¬*Ûm¬‡Gtëù¦N$²¼žyž»’@LÑûÈ“sf:‹¡Q›<‰.ÆÊŒ~Èv©­*áÒÝt3bpã.]røœ1ñã!ʳkwmNbÞyŒçj š9¿`‡M‚—î,°I½cæTÔBNûw¥ïTú–»pQKôÖ[ùÕ×n8%mvx°ÓOPŒÆŸHËyRhøóÝVqº²±ü(~¤{´×eùÎ1]L¹ÜãENã™Vø±5FÛ´¸Ø±’ñhœ¦dÇ,¿ƒþM!j(ÉÈéOkgh¢ÞÊ{ ÞÛaC_ç1^I?ªöÃ%¤#±=,£ìéDç€N:ìÇÿšZbî0ó‰G`aïãs>» A-îù ×aë#ýˆ ¯O"-eë‹ãéóÍ6qÑIcÿŒ¿£jÇX:.#)@¿…ëM]¿+3ótJŃY\¼$Cø¬t´7:¸xÃ8Ìt6Äàq›€†Ñ„Ë-f@Õ´Ÿ;ô)íyÊûkÕ¿»úM`bendstream endobj 102 0 obj 8753 endobj 109 0 obj <> stream xœÝ}Ë’]·‘à¾z¢¿áƬŠªÛx?zvvÏLô„7¶Ó Ù ™¤¨¶‹¢,Jíæ|ýä 8 à²(Q‡Â ³n‰G¾$þr1W{1ø?ù÷Å›»þ]¾¼~wg.¯ïþrg©ð"ÿ¼xsùÕs¨`í¥^kr)\žuǘöb­½¦Kvþj²¿<s÷Åý7ÏÌ5æXŠ»…‡d²I÷ÿ{³Ë÷¯ŸØûêý×Ï\†¿M¸ÿã³W®±äû·GñwÏ|ŠWìý·ªaÛ«I±V¨ü-ĘËý Õwk(÷ïðÏœc2¾ý´)>Xw!YžéN5ù5ß@fêŒÓr"ÕôŒM:<_LE&Ï?ÿ.­Ü,ƒ98ðÖ†Iç¸v —t­Ù—Hµ¯5Tç.@Sjaƒ8¦Äœjf¤ì4Šr¶¦^ÒÕG_…¿¦±Wc­ l´:õêAÂâD?@ŸŒsC:( pÐM­g ’|êêJæ¾ÁÆãÕŤ¡_!Ôƒž»j–·'=ÇÎG•Ÿ…#P¶oÙhÖb§áuC´˜<)“®óGeAËlT•Þún,×gÁÙ«Ãù|m855ß1%rœMÛR ~ؘ1MçÖbª³´#8‚Œ:IЀJEv'ª«Mê¿!C8qr2êO¡¹'óº‰Lƒ·ùjlbÓ£U*(æU9¶¯ˆ@<9âÛ œRt5ÝÿLV°W;ù ¼b`dº-¨zJÿüŽ †Y²GÏÖ3€eqQ醺èŸ(yÜFZ;¾w\Ž:ߢ‰8’Iÿ}{°)ÁA( )£~«Fñ=“Ì7 ? pQsÎÕaÞ?ÌÀøÃnxß‹| z@¹ÓwsøÈÄ-B|q ½e©.åšjhR­Õõ%…m8àÊ_*°ò¡goCàXÏñTåòËPBGK¢eö2lVƒyô;;¾Ð9r_ޒʦA.»«¯*ú¼Éü ¦¾á¦Bõ«`§(ˆ=ò$f“µvÜ-ØÐÿ\ʤ²•»ÀàwÓ„#LÀ*ØjŸ -ë#×UegJ ËÑÉÆ«i-ø i}É]C8ª ßè#±‚ÉgK£‹À‚QÐØ¾ƒ¿v¾iB› ˜o½°è¦ä6‰ZŠD,µÐÚ™'ýyC²­iÔÚ£µjSî|ËÛa§P`ô-†M:EfË×!Ú'ï¬þNFßN.À¡+j¿m¶ÞºI6ÖÝÅ5¾¨O#ùmÑ.ˆ,®tfߥõ–Œ10o#³z!ó8PæP6J9jØM/´_ruF4wÃÛø¤ñâ²4]äU[Áõ£Ò®æ¨uºkv¹ÎŽP×~/‚±• ñÚ)®|$úTmvÏ\¨SõÍî€,Úx†£öˆ‘Îye¤C΃?’éà N¡‘6Ò0ªkJcÜ5J ?Ô‡­Wˆ‰}¥™^NãžÄ).ŒÁ"]°shZsø){*þ ñô°}ñއ‘ÔK°“0þ0ŠqZôX”‰îf[¯ÝÄ9°{¨Ÿ0«+aö8ªþìak6@ì´ÛªÒc£&p¹wGeX e¯ ZÞ,†d»‚¦6›…ÐíuêÉ/ý§V‹àÍZ·÷J“_(ñ×~D«…¶@ºþ{—µÛùê Nð>¿û-î*†`es‰B;[.`ðÿrº|÷êòï—oî¾À„‹5×rùÿóò¬Ñå¯wæò¿ïlbôDº_.oÀâT§!wŸµ€‹S-èZ±š2Öj¡VNaª%¡VrÓ¸d—Eæ8. m…<¾A†ZÀ§©–@†;½f<ª*5ÕÈP«f7Õˆ®å¬M‡2ÔrÉLµ2Ô fæ¶@†Z1L£o¡Ö$'z]^…Û±¬d‡ÿ}÷êî«Ú—}~î`‰6—)´XÂm.ShÙ•-Ú\¦ÐJv[´¹ì@KÆnIr*Sh6mIr*ShÞlIr*´,ü\ñmW¦ÐV|Û•)´ßve mÅ·]™B[ñmWv -ù¶+Sh+¾íÊÚŠo»2ÐLSÌŽoÛ2…¶àÛ¶L¡-ø¶-Sh ¾mËÚ‚oÛ²mÅ·m™B[ðm[¦Ð|Û–¡ waË·]™B[ñmW¦ÐV|Û•)´ßve mÅ·]Ù¶äÛ®L¡­ø¶+Sh+¾íÊ O5w|Û•)´ßve mÅ·]™B[ñmW¦ÐV|Û•hK¾íÊÚŠo»2…¶âÛ® ã»õoÛ2…¶âÛ®L¡­ø¶+Sh+¾íÊÚŠo»²mÉ·]™B[ñmW¦ÐV|Û•aäÓ–o»2…¶âÛ®L¡­ø¶+Sh+¾íÊÚŠo»²mÉ·]™B[ñmW¦ÐV|Û•ázÇoù¶-Sh«xrW¦ÐVñä®L¡­âÉ]™B[Å“»²mOîÊÚ*žÜ•)´U<¹+ûüî‹‹Ãl¤?\Ìåån&ü– E¬j_R ¤1ð‘ÇÙl¦ÚÎ$ á…nBÓ£ÖØ¦Œ³Q,™”cÍåÃhµcÛyè«ö'Z ­ÖQµJqã`mµ'`â—ÍYv2ªì+hÃ…‹Í)^k„ß™z´Yô\~¿Œ¬jø2¶Ð~sˆ!lâ.½…lÍЇüF E¯!£ì-ŒóxARCI¿Ü)~M›&5ŒBv@\±¹P¸]‡ÛJJ`^Fâ±õ±Œ-ÄAl£A`V0¶£Ë£FE«ÑFÙZçA üåNîkZ@ Cƒ “`z¨¯Ó—4üV‚ÙkˆØõä·ô¡3Ø0fpnèC~+Áì5Ú¸[ ãÔxšxñÂñ™ÆÅcCdÀ^ä9«%åž‹Ì#î9¢1€àpòÈ4%aunVUC ©|©%«ŠúLl¦3Ý+CŠØYæL>D©ÃêLfI³êi^Á4+•AM‘{Áš6@êË ‡Á¬²± Ö·v@Ú3au³jXkPb«X&sp"ÜYKcÆâ­ÔaqCk¹×CžhI˜0ÂkK𦑥EA –r»…}NmÜõÚˆ«iÛF•®V&½ U+†änheo“á¥áÔˆ\›<6óµ°$‡Ü|W­BÜ|bÛ+×fºŒc¹ @k¶’Ƴߌx^Ïö9rh›V›¶ûo›e2b ¢ê8kØ£DÝÊæ7“e‚I4K* Ä{<¾f~%þCHbâ€!sŒ VÅÒz÷@²«¸q°¿âÍPÞ c˜ÒÁ†Ó¡oElj‘7¢M^<Øn’ ;äØÌ«,9)5R`´Dž>[éÜ[±Ñ‰‘vI»D`“[pR˜8<œ'Ò¬ŽbëÁkI3‰cæìšÙÎìØ³oÎÕžC bûÊBŠÖ?Õ_l4Ó8Cû>4‹L}ç&ÁqT–]¬ª Ùún\=ÛÉ\›)Å”K1ãì2P 0(0Mà2›–ô®Ûh¦z±å¨düãš8pSF»H&h¢+ÙÒÆÔ”DÙ5ÿYhÑF›n’Xmé{o¤c÷'#½½„ i‡˜@ÃKh¥àÌû}öüOw0•ry€Ð=©û_ÿÆu¨EÛ&PƒÐ‡ä/5 E %nýv;P¢Õ…P×J`8µT®„~‰a`ïRõ˜‡Y€Ñ™¼ºâöÝFKˆûWLˆƒ`§Zj/ ÛÙšý…ÊN‹Rïÿ›ª¯R3çgPØöŠè_¸ƒw­~òøÖ©ü:}sŸÏ«isÞ[€4=mœÎG¤ÍyÇèGòSÀˇ ‚âÖkõ´¹^K¥ÍµZGÚ\«¥Óæz­ž6×k©´¹^«§ÍõZ*m®«§Íõq©´¹ÞVO›ëm©´¹^«§ÍõZ* ìL¯j´ÚC- µbÈS- µp:ÖÈP ÍÅXK C­šçÑ D× ÖM£o¡Ö$'kzaÚœw‚½8.Û–}~-ŽË¶e mq\¶-Sh‹ã²m™B[—mË´ÕqÙ¶L¡-ŽË¶e mq\¶-4/ü\ñmW¦ÐV|Û•)´ßve mÅ·]™B[ñmWv -ù¶+Sh+¾íÊÚŠo»2´1nù¶+Sh+¾íÊÚŠo»2…¶âÛ®L¡­ø¶+;Ж|Û•)´ßve mÅ·] åZ·|Û•)´ßve mÅ·]™B[ñmW¦ÐV|Û•hK¾íÊÚŠo»2…¶âÛ® ½jØû·]™B[ñmW¦ÐV|Û•)´ßve mÅ·]Ù¶äÛ®L¡­ø¶+Sh+¾íÊ ‚1eëß¶e mÁ·m™B[ðm[¦Ð|Û–)´ß¶eÚŠoÛ2…¶àÛ¶L¡-ø¶-ÃÈÓÛ-ßve mÅ·]™B[ñmW¦ÐV|Û•)´ßveÚ’o»2…¶âÛ®L¡­ø¶+ÃõŽÝòm[¦ÐVvrW¦ÐVvrW¦ÐVvrW¦ÐVvrWv -íä®L¡­ìä®L¡­ìä®l™Áàq—Šj·%uƒ´Iê£l[Ϫ kW?×nµt›ÕkÈéD=˜(”m'ê²8Q‡%øà‹±vªsí^Kµ)µÔÁ>&ÄyÁûióá\/÷¥cé¹`Þ‹÷l1çiYU°~l ýn‰\"©^­Éë=ô\±>†^CÆØg¡Òá~©üšl˜•pÂõm¨±”2œ‰Øn²|&l•€ßHÒQ°tÒ{TÈyh ÿv¡!4ˆ§Œ¡Þ@pcAFzŒAjô1JÓ,^° þeNr=3ûéd‡H¦WÉëÓsÅšDõ "p½ùÝÓ¸'zµ$¬÷Ð3Åúz6êÖÀ8‹¼¢ÿeNØVl´Œ·â .±]ÉÄòÕHH웞<¯=*”R‡úïPBƒÄBCk ðéßÑCjÔëch5Ú¥i̶_èÔÈHüš_Ï>›!¨<,kæ-[×ñ»¥Ÿþ4ËñîIt°ÝÚlI²­×#6 ÇÚð`þ}:p(SEµÙs¯Ð†@Žü³"c—6ûܤ×1ÿìF|t2„q ðEG<>;‰žZfó±±ìU­4ÄJo:D÷xlµ´¶‚7ç¶0÷eé¾q~ÎOõ9̱ ¥¹ífÑn#«‡ÚÌz­Qµú,޶ä¨u̬Õ: ªV÷tñts­cއXçÝZ~é9òKhø ›s­¬öZšŸÚ-njޜ Áƒî#7Ö£ãåÞ(w¶ÿîi¿ÒóC;D’9{›’ìÙ{í ¢3ªBP ¢>`~_:pú ¥Íö»'ˆvHÏûU´ã±·6ÛÜZ¯CÞï).r¬(.r¦#3~GNŽ¡´ø™®©pZ¦e@½šÂ·Ò ~C+©üZü(ÓÕc·Eru(б‰sDY8}ô×PT",@Ê5"V–L+Æ*I\*ÜTf¢# O¼µ‚­ ¤rO1´¾AD«S¹D0l,6Q!XiÅœk8Ã8¡«—“ÁIÔô˜Ž†,—H©0 q™Fç3g(‘rQ…$ý$E˜v˜1æ C˜ ¡H?>3£±L^´—4¸h™P06j6:@¦¡q2—‡“Ù9#×C,ÃlŒ’Ñäa ȃO¾µ ,¦¡dIÐô V‰%0c™#ÉëE„€DaËÙHê–ÇQ 1³íX±’Èd'r‰]àø2~`‰†ƒÒ„ôÎAR†=fýR–LТf’äQúl™z˜,Å\BljJ‘1‹±(SªJ¶5Y2Íb:Jtbw$û é[œäV{LÏ2ó—¤J¶T%˜ÖJë…¢´å)1·¡àºÏaØÕûfS†#O ¬/B1™vez–ÒÛi½JòX1GPMÓô"^©§—„®ÚF‹"›oÕµiQ/Öqœ3‰)5DÏÚDÁâI|ËVߘ­‹sÀ$unÓƒ°YÌœäáÎЀslH˜Í”>)̚ƮЈ2€ä¿EÞª`2:Bº¬•,;ƒ®Sfh8I0¥Ö§VÌŠ‘;°B¨¨pÉ$Ñ/ÌÐÇP×dÎ0öµmKv'¤àï*)«¾b’9î4N×tìPÒhO8‘Eë/‚D m¥yUpwWÇ $P@ˆ„(ØTǶ( ñ!žÃOV ôE” ãî[Ò­! `ŸZÖ"Jfÿa;€Ù¸´#Ôü¹åP¬Ö î¼²m2àÍ;BÀޏÙªfðú’4Ì~³Â„]¸©‚ÔÃç„ -"‰™Mta_‡oÁ!Œ`®¶0 3†ÈÛ‘ÆŒf‰k寅ONxd›uÃØýH¶»gŸ)d®W‚A&ú€–ùïñƯÁK“måñ¨ ”$àÊFV|38"ÑÙÚcn5 nl!VËAuRë¦plZÒµÇ 14¡Ü]‚]¡]°ñxÙ…†ß.ØD&Ý.Øx¼¸‚Jhl¶D°ë¿²žDɱÀ±AÇÞ¿p*ƃ·;Ú« GäŸTð .¨ëïbЄBîͰµ@Hn©ÑÜpž÷U>"·Ûé"OdÌíF»ç.”Ë­¶PfŽ$nÇ0°œM}3Ù›òıDáþ¨p<_L˜à®Àé£Ä°üÇÕÀSà¯R/ÀkîDýVÆœù#s{~pA}Uþ#òÂ)[}zuúÞ,ç…û|Î O%úI ?}puý(DK Ç*übƒW?ÂålÌŽÉÄß®…€Í~Ä·kå+³.àíXýéZ|×­ äߨµh‚¾ðýûïÔLzõ„CÉóÓ)x²PÂÀEý ßoîb¯yü˜ûü=~¨«”áËÚ?Y©qm®åƒmW˜Wõ‹¢ÜPàäãZ¤_¿Ø\UÀ‡ð‘ æ7qÐUÛpóõ¤¦mÄ<}íþ[W_»WôÖ9MÏ0}ÄñŸúK#ÈøÅ(¸´7³Æ@*> Tî«Ê›'›>æm&ÜŠêz ÞùM-K[ ÁJ¯,µ×O\l¾,þº3óúƒC¥Óã@OkÇÍÕ8¿È0ÈUñeû>™|Qßã{º™Íéç{=³úºÓßí#!øQôP‚»ä{|ÊÌtßš„ç§'æ7 vùÞÁß®»õœ@Åuu]|X·x†Ï€ËË#n¥&TàŸð›!•Ýÿ;¡A̶Šùõ¡iüÜ $,ÁÆê/8u|n€Ý6´ô±ý¸…¹ñYhðúd¶º †w÷¦¶=³ôO¸ ö¿4§ÞX _>Ñó%¸•]‹ß™(݉~é–d ½_ \~§ÿËV7ï>€ÿº¡­ßCßj½„'?Ö-âŸã…:0Ç›%ů¬­RUí™”èו¶Ôuv²¶“ïb"ŒÊuË7ã.Å€ øÝ~µSB(Bó;µýríT» UÞqÓÖ»9RÄ+yæv˜Û…îïÙðÒƒ{>- ïIüÛ|ìA©B°ûWZÆÊÀ±Ÿò†“~¸é»þPž+=ªØ0|ŠvyN£‚¨uÄNä5ÐH¬ò˜5Vn-3i§‡É‡ø3PRyÏÓö©®®h¹{¯wcw‰"±¦wºÉÇÑÔòÍM$9D Oy€TG»¯3ÔQð³ã—°Âí:̆õP´ :³éøc2f:zǦ””ºÓw€Þø©Ûm?öXÏS†NÔ>è{¡ŽKªÆiòx)[&È{;QNývÏÌo¾L'ë|íÅ<#Y'…ü¿Ï@“]5uA–yÿUÕxJh¡=ôПøøµ‡xß½ªq í êßУ  b{ÝùÇW\ÁÕ½FLh¾ðƒ~ë­ÒÔãÉU ƒìæ¸ÞsçÁì·Ü^1žI•/PÞßa ]€õϯ¸†]Ù¶yþm?ƒpzñ„ð‚´”ÓºÁ>á›NÁOð´Ç¤#2¦õvU{²ñÜc|ñœ–Î"­xÆ+*‹þT'u¹uüœ€l0®¿RÌP3š6ìœÝànþåÙ& Ùq­EÂï3ß6·PÅ„ÛÞ.áΓ)Ç+ˆnaˆÎpc6ƿ㓠±w‰vëÑ„Ša†ÕDæÓ¨cãIµ%í{îФùHhúAvEˆÙkÅkÊ‹c‹ÊÜ6·í‘lêcüh¨Þ¤l«Ãá„Ò’Íj·TR‰žÐ¬öj‚F¿¹GñÓÝŽ§$‹™íÞh8ÁÙ²OÚDŸË]íHê5oíÜ#7£þYNi‘"é”Ð÷.Üí„”ýP~–€ Û®i·†Y«q›F´pmÉžò4ûÅŽMàQtÅá¹XS–. çU,)ÙûóY6Ië+FÌq~!çš×KÃî]ÈÌø[ª5Ÿ)ïÁãÕâ“de ãŽê>ã8´„›YÚqxü¦y¼äûSÔ_Bæx!Ô ˜/àû>í7¤h(Ö[úÐ'ôŽÛC¼3ïoOw¬" Éד]¦ÀÊãÍP6¨m=ÿv0š DdoéÚd[g“¾Âê´6cžö~MwBŒ„Å}œ\kFÁíšñR†æMÖÁáR›‰o·T€˜ßŽ}Š+¸qùÇ^uOßZ²\ô…g5.xÖ¡?Ž+„kòó¦ ¢åjãõÉ䜔â%7žó,sÜg¾éï{+ºS”º¯î ™R£vɉ´ˆûÛâÿÀܰ|~Ÿ+°;ÔF¹ÅË Á",|QÂUÚl þš=ÊT ×èÝÎß|üÊ“ÈDúÊë¼FÓ7Õ>5½°³”­^ºëðé L [פã¸÷­½mº°"³dðìF#zš·1›mƒÿBžã'IžšG¾Ýç“êàýÏÿŒ·/KÙ®?ã3[>ƒ­@4qc9ñÒcøtî‰ÞZñ?Æ=ÑC$7ÝSÄÇ_–&yuî÷üLÉŸÈ.Òà¡€­ÓNôÉF|Æy†¦ ûYóî3 ÃÍ#¬Rrú8ÿ¢«ü×Ñ«…Œÿör3 |ý™¼& Øz’vJðÛª)Íj½Y÷|½{Žçoxú½É¾Ûeø°râ æØà5ˆçf~ ±G{ŽÇi e¿6µ#à9×úÔMÏ̤[ûU¡ ·ªŸLÁ}©¡ÜPS¬‘"e9Ðð¦õØÛtt³Èá"1йo/Ö-.Vxsªîi…w:ýšólÄGciV£&KÞäsò<¾Õé§Äí¡>iøtãtFºŠ^Wg¤/9¹²„Ø6@yQ‡cJÒ<д~âq;6i8c„þ ùïxk¬¥¼>áÄh™ ¯啽{Ïù½x‹e§ªãî eS]ËØ%r Ì$ÿ3{ €ß4M@ß1Õñ¬ÿf¶5& äuL©EH“î¥"ÝÈ ˆÖû&esZö—‰†"£qQ ?3™˜ô½uÝåÌû9=ŸÝœi¼6²_‡KÛëÖ/VÍõÇžžÝÚÛÁ7é>·²^ð¹ÑR¶’=múü† æ2ëÃݺåׇ¾n}<8IéCÛ2§m.v¾˜û¯PR)VMMŽê·EOÔA¦æûrUŒqopÒ5Úå•» ª›¹m»‰º† _?ËáÖåUEŠOIÔyǵMªºÆtˆƒt ÑNúˆx1~DöŽÌp ¯}ij£R`o&õ=UJ®u·2¦âÉíÍMdñZþ.ÔÜl°¶œ`sÊYÁ§>óí‹’”œþf;b4C:S{JHJ´öi6@8¯Tw)<›xå1³v²‡ÁT|Ù÷æ¢í[úÌq—u|J®K;–ò0[‹<ôÀízÂ‰Öæ>~cÇJR0~ƬˆÁà<´t__B ’ôƒ³íXUàÿ¡y߸ÝT8Ÿ×;uq@ýöhÿ’ÙÖè2£× ó:ü\‘ÚcØ’|Jij‡¯LJë¸ÖDé´Ê™«à\K\^9†(¥ײªo¬˜ðs7Îîø?î7âÛ‹ÕÇIaø4CÊå”D€/4bÊò.sC]M[è;D ôtñʆþØ«‘4ùiÓyœ[—l9Ç'ÛÛ[¯d¤À]M†ä¿ãa8?>_㎟ò®h#Ȩö¤Óüi`³½¬!ç©´È,>ÎwÀ$6L[ƒŒ}3ó´xJ‚ºžc@ØWìßöäÙ#¡äµ„Òw«è5fþFýÅvw=„§Q¡‡›óÅžvž…__2qŽ•ðj8.·>ÜËæ`V3yºmŒ€òcLºtNcÆ+]VO'Ç Ðl÷K£WŽ£7o6öAß>°©±Å÷é å'À*¤‰:†wœI‘µ))$ø½­8¬ƒ.—Ö>ãuÈV[/ÍÞñt}ZF&›älžÉ¸3ñ“î7QzsüIìø%©º_ãì¶,êœ@ÚòS6iÝÍ3è#;û¤õb«»Îy¾™m ƒË;·³Qˆ)¦6ê*»á¶ÓàÜøNçhù¦Ù•Õ¦Ù)'›OQægÜç´O½®°9\éUÀZÇRÁH‹±¦k©ßwêêó×ó9+ÏäÉWWRr½_.«è‰Ô1÷©•aùÿ”÷Å¥ ZIÛuº· ¶cF—m u”Ž>øö¯mÉ]§´u:Ýu<>£$ÂZ>aœÂÓuÛ ý'[|bÇ­Ñw<_7Iì7Ü‘3vK†áþr;n-‡÷Xd(®¶=úߟ¡läkÚr³rì Ïî=˜‡MTK7SII`LlÄó_TªaÌ'*:Ð)ë#˜Ú_ñýÏþ®öoïþ?Z˜Pgendstream endobj 110 0 obj 10468 endobj 114 0 obj <> stream xœÅ=Ùn]Ç‘ïÄ|Ä}¼ ȓޗâêlñÚ_­+ÞÅQ+ýñN–R[aq¸,˜Æ·®ZœÎ'+ÞàŠ~QAK&PÀÓÏRI^ísGƯ#ˆF×g»OÃÊ_Ãp¨žXh¿IŽoÃzŠá*}8=ç 3ÚûQ–oâ>0N¿Igü ù&Esár°ÊëS ¸RÒ?'äÃjH~¸ø¯aÅ„>»¸¾ºJÇ•¢:Ø}…ø‚¿B›ûS@ŽR\‡É‚1¯LF¶Öd˜|ŒÈµ~ '‡¯fN–O[†?âÏÖ* `­»âÏóϹX´2<µÞ‘ÅYMBX½[‚"Ÿ0Ük2L3cøë¸º4ªßb[>Œ³e>6!>ȵ֙AÂxÏ a¢ãßjWidv™>"÷ ÉxCÅ9ãpP<çBðj<œNÚ :QÊ,Þ  * R‹_eÎZ%1-óžŒÓeî§œ1eŸ(`Û LN5°ªõi†Ô®~^ ¶aQÇ¥Õ^WaXZ/È&K.fnyKË鹕À2^/»Kém¥q¯"UÄKaž_‰AŸÈü]àKÉkq "ø9ò…rº¶ brCæ¤4l5•Ÿë{"ƒQÖ„„ª(kZóÂTE:ÓJ‚ ŸÄGy««a*2€<ø ÈüEO ÊHîØÅqód+ºêž,²"+ pÕ$ [27Ò Ž CÆ ·…k)@Þ˜¢2¡×Ç’«¤ƒ.뎑Ʌ§L.€fÜ.þrrñ‡ïÿäÄÏed[ã »v±^ –T·\gËžÆé”1à8¦ùñ·S -Aí“A2w$yB-€ÞpÔDê(ÑQ“¹€ÎÔ”%²([¹3Nø±(8ˆù}GY\âç¸7ó@0;@4˜m)ÊgнAÉÒZqœ¡„Y@áU“#t&Zø½¬MèÞX'%4ÐdÊRT]N kØ.À§uíTÄAQíC¿÷[œldëèd±('¼‰0[RšP8üª\¨ž*¸p¦<@ü=Qx*yUŒt÷wõÒCg³³YÑ ¹Œ›Ã)1?ÆQ§ÐV @òg:âÊt»ëuÏ Š÷+„ {qßzfšÀ&l©<ìS ç…¸ªFYmá"oÃR\fÞ¦Dϼ`då(|ŠK+ðÇ~¸Ómx‡'Ó™)§?€×àa$Šù’DHkŸüyame[ÐøÕT‘Ý©ÊMè-öNÓ0³Òµ¢A‰b°+×3gï}’[©ªá ÿœ°€óÆ9Ä > *é7©ji8§H[À¡Sˆ)M®â¦\LyõŸõâ8›ùJ-½Ûx¯wlsM)¤ÀxІ'*™ºÂ?&äÙZ ÞáÌ‹ wqYì!ðÙç‘‘¿ µ×2 Ñff8ͱè:æm´ð3O˜#ºN1s@jŸ¸œ.$p$¨o·Gÿ}J¼šj£(kö|àÁÆ—ˆkëäJHçg’6Ëõ|LÒTô˜n´9õŒBšL›©ÀÆkÖ.g8CžyL²­“ÆZî‹kp!ÌZƒvD•5"XœÇRü[„€þ¼™¬áÍSÿ6%àØOZõe"]ËÄ/$4œhÔÎs€)-úý¶V #åN-*pËD Çë‰J™IUã•ñ3T ~±€®9óáY„« eäz×®åÔqé.XkVÀì3³Û3‡4Pè§}T”òc(ܯMüÞ'2Ú¹ù¿*N7Åé!+<žÄ9øÂwûx„œk„ç~>¼Ï‰âŽáéy #hq\9†Ë(.VQ O#"}ËE’G<‚¤À,n©÷0|‹Àë! á3pt¡_ù˜É—õ¤•:¢)ÒFrËHB=ÉÁÝ ÔÊ3`e) õÀçˆÜ³È7ÂrƒßÔpìyDZ€Õ8ÇŒíA+&pÏã¯Óg`g+P?­3´¦ ”iøB±H q( 8Uo‘>ÿg ÒH1­Ðžâ ÐÎ&± £‚ç³å6F!Z Ÿ™1a]¦ý °:§é·ÊÑÊç´¢#H¦ÂŒ¼‚*Ò=Òg8]†"ÏÈP¦ÚsÄÓ)ÖR®ŒDÄK_SNÚ–rR×”CY- [Ê•‘„÷²@¢KÙ¢P®‘F Œi…öñl`ºÊ•‘„wiuE9 Ô”“ŠW”“˜#¦+äÏ«e$ὬèRö(”+PäʼBsŽÄ—8¡ư™/ËÀÆÝAx°šºö.p„‹xÍŸß`ŸfJÖL ]¡|¶Y†òˆEÇKÊ ûKÈé3|#C‘gd(ó Í9í´’aÔéL»ÊGU‚#ŠÓcߤ#Àw EùíºZ¿>.­–YdÝQšú#‹È!;æCiÌúæv§?}=kaòh¯ƒÆ0t4ˆNÁ-ZÕ k@U×¶.Ž„FŠ8¢âþ®ÈF"kã‚°¼Úº~žiT»šÕ¾]m]?︮T³-^d< ˜Ê ÂÙ‚…Á‹t-^t>¥ÑuÁ{Ã>™ˆ8çet5¥„kœÃYt”à[dÆ‹ÍF€“‚Ë b"Óœj¯‘ó™95ÚõHvµïX­ó7k<›W…ÁÐÐŒZ-M¨8ã.Xô@ˆGuU„ ¦nîÂÓò‡Ä;6ÅUâ­0œ1›lŽ€Z¦_¼JÔö¡ŠÏQ5±.%ÊR´œé… Çõþ"œ©oÐ#QÉIçÐ>7Æéº‚\ÜFºMÚ€ÆåÍt¼/PÞüeZ>¶¤Y•0$z 2+ŸWþ‰bý’V-ŠUêË”aÃâõe*æm=øM¹¶>å‚F_ŽŠpEí#ÔŸ%käÁ÷Sk43¢©“Șzóª>q¿•ŽóAcqj*rÀß\«e5)Q€5$ðý9†ìlÐÓ8i{zÌ„òRÝÁKqªnã¨/)fÁï”tiÊ™³cÒí)þ“Ф﬑¤’œ@¤’¤ðŽ€S/UsüOqw„aƒ/#Æon x …vîœF ò›=|Ö†U¥Š$69öó5¶ƒÔ*`ÒÖÆ€VW¹[ŸâÁ½ÖÛŒr9háܤ¹ì1`ÒÞžwÎ+¢C2ü%nnÐnöZ…åCWùƒ3ð2C﹪:ziž‡ÈÄóKÖô4õ'tþÌB v»LJųÌ9þÏÑü6‰œÐ¦*a'^ô{…ˆAΰ»¸ôš8F Edjp6‘[ œ!ä&‡_!Lg£Ž¥cl;Êý¯ä¿¯pÐÚ<èÞRZ9mÑ'ÃDP&:d7±Ù—ëÎL0ˆþ¡ç›Å u~>º@CDòRAÍ,;j›uE½™+ HÝ#,n®ƒã~<ºAT¿»®¦}JYœ·X¹·jÀe`Öê›—ùzKWn 7k©­G5‰na};GÑ _ëy•¿ÖÅA+;/âij+,{ù6||¬Íé¦.8<Û¼òTé¼!%»÷¶Ñ43–Ô¯ò“A&<„âÌd™ Æ©+%ôº²íAN·¡&̹8mXkö=x¡t˹4Þ>!²#áƒ_T#“üõó=X~ÓMVü¥ _yËÑ5ýór%»Ù¸÷‘ ßTg9LJ-œñ©ñ;ÝÝ¿\Þ×þ/a1 aeMÆŸ©Da¶|òØM]¬0_³BеaÜ3Sr¸ã‡d!f%“ ý$“p_‘7ŠI%gxY¦-µ!`ÑÈ‹—ÌYt"ØD­˜ À‡ÞŸM!‹Ï=¿<#xu˜#›¾½CÚñ4˜x n¢á’ö¶|ŠÛ”±V­ ü!µŠ~3>—óÅ«¸£±r7ÅZ”½+Q›ò%c·™n‚N)šÛ¦3ê”´WþGá÷2ÔËöÔ÷ Jx†p¶Ý.çJà£f“z)–;^å²s™˜1ôü½C%Ň¯W|­32A“Òƒý#N ‡^l™…öå…;Oñ»ËïÁ×£œ|tÎ÷ÀÒFŠã©„¥×@)2/Ë 4\Ÿ® ?’ѸZ}(KS…˜Þ¯+L œ48z–«³Óë¥ÁÕµBÛÑqñ1ÞN<>Á!€É­ý"/>„Õ~Æ7.@ÂdõREÓ(n5«Ñ×ꀳO[–"NîBÏ´Ä ÌÖ2`ƒ³3Ó7Df ¹ÉÓ þ,M'\UE-*ë üÛxqÙl»éñ”v‡®¾+¯¬ÌJý“â|¦¹©d…lX<aÚ’åF¨†IaTËæið¦!uÆÿ~JG³…W5ßÈz”Üu“†xÇ…G?ðz€þ²}Y{=„ÈmqùØm¼P=ÆQŒx­§s+ÙÀ;OÞUR0ðN»ÚT$Š$ãûEìim†&†ôMVϰü~ð³Xa’¡žÉL“Þ4Ñ3zNY_ƒfU°Æ¾72Ãe]þÜ÷é"ÖJ©ÁTçÊ»Èâáã6JOj9m1¯­¾Pg§e£)øÜG‚­‘›«¾–Ú¶"@Óf÷ÙëÎW±ûÃIÓíZHìÖ ¡éANìIàÚ”ÒÛ.«Àæ¿“™»L¤ú7 ÒûÎ>Í”Lîäìqfú ey¯Ž&‡Þ´u‘²®F†WÓ¢Ú`tËÇØ¤å¬W¾nÞÉ/u5  éYñËönÌbDå/Ç…™ß‰¨TÜÈûoßðÂÎU>‘ú§æÁD†#…Òâ:”nªÝ<¼N4㥽°³žˆYŸÕ»O™?þç)>°âTxYsýÛ Ù<ºœùò,†kNÛNžð:«™›}î)fÖÙí¼ËøMÌõì Ö«h*@ªZK4&dP¹ J૾GÆÃñÓTKîò5vd*.iA‹Ùý³˜uÁ‹3)À£«’fè,K}E£Ìžý=®r¡®Âä"^ª•ŠÒŽÑ·}…w9Í#|ÿîOì«Zàu-L!¿L“v¸ )ú’á"äà°Ôä´qÓºõdf7ܮӟ¢ùJyaòÒh#_ñüÄH '™ J.l½íÔX›ð·…œ~‚µÉÖf–‘ªï‚„O¥ßc¨˜ŒoOu–#±ª'¤ ªÄžKq¼Ü~»¦¸:ëx×Îmþ+Ÿ¸àr®ì¸ê餵°O¾<è+1·1j/Þý·o‚QëR¶0jýv32Ã+¦êûq-ñm8Ì<¾q­Ì>+ÖÃÚ¡ùø1w‘6o¼Š ;Ë9=|ênt}|ã%á,cÅp Àópb_GÇg_â `÷:ùŽ‹#Mò 5øÛ/]œÅŽÄÈHí-ÎværP“­Ëé€f¯úg„Dʶ«‘CTÐ`íáÿÍ”€NG|¬ÈxÓ¢È5æÝç`Ù¼Q.‚Î×]Uù±< ûדÿ׫œ©endstream endobj 115 0 obj 6144 endobj 119 0 obj <> stream xœÕ]Kw¹qÞËþ\^åˆÆðÒ±““œxG»‰3"E9#‘=f,ÿúTáÑ· @5›eMÎ,¦ÕDãQ¨ÇWàþt±.êbÅÿêÿ_¼yòÏ77O~z¢ò/êÿ^¼¹øýsh ÓEZ’×Þ^<ù¤|©.”R‹¿Ú,k0Ïß<ùîô¯O/×ů:šxú+>‡äôNWù}ôÊ…ÓGòüŸÍšRòõY)­ûö{|V1údN—Âèà“2ìòsPÎ$öüª f“ѧë§Ð¿Y£ö§OO/Õ²Â{{z-lÒΛÚÂ@ÿôõ_žÿÐ@)Jm—´uq©ôâ¬Wϯ`ùÏá{½“BØ£.«1ư_mÝâ¢_›%® —…6ªMúxWfïR‚ã4]‚Ö™~Ö¯aõ…Ö­0Ç2{¿ÒÙ{·g ìbžö¹oëœN³µ: CŒ[ëËsëÓ/Ou\4 f O–Ž´ÅšN??Õ^Æ6Ï292ýLå¬ ±­0*x¾BBgÁ¦Ó-vg }û² ¢L keT¿.F :ø÷çî*¥5ŠÍƒ~9ÎÏkœÝ6 éï5Ží—䊄Z”UÀátéÞ~$£Ó]¤Ïô[2PÝŒâ)‹FÒ&z6º„Rm}"“¡ÛCÛlLì[7Ć5ùHÞWšgaÈa¸/IùÆQt˜ ų<¾à÷öØÛ¥Q~Q>at® ãG²@i!° ?‚µ¾,”\½nÛkSp8wl±)¨ú!aÅ7ð¸Â zÕ§·ã®æg‰n ±op$³hP?‚O»'[Lè+ ô F®ÔòHñ feÌ’‚¹‡3›U”/ª†MÒ_“å¼.+V!¯ô‡‹.ïRÜÂ(t½d‘×#/ä¹Ò÷·EõxǦ=Û{íoëkf^e 6©ñj'6y¦ªQo‚¿‘ýýPZ›èDv¬æà_uÚð‡UïîXs9KJ–ˆ6é"6”¹ÿ>O …Ëbšb1`l¯ø’¶Ù‰0 w‚ì1åkº›•ÎZ]®1)-ÛÎ*3TãQλš³ÙûV®:͗uU÷kårxW:ÓIO”ƒ×5êJ½6co`2›ô®É¢†Ïbƒƒµmb@9òN¸L¡päIUg¼Æ·*ØF¬Ñ¯ ³“ÖE6|²a€1—m\Ñ;ÑXÙ»€T8à[·£Ï(Ù;Ø…ŸZåûq¦Ío΃¾*[ >¸ø»""ø~ÅÙñÌ6•9aédèåܺ`;Žå/7 «3r/$ýC†ÍÉqÿ NT¯Ð7…ñ,»UÖ]` gP„KüsÌ|ÇEQ&¡cŽF°§ÊûBÏNg¿,o‹ÙVI¥ä§²Ê5EÅœ$jY®¸QB"ºäèL8øÞÄq«É"û®LkõSþÈ㓉üPÈÑé”ÿ/áJ)ó¡"t…J++cð겪ÎÂ]ý³î˜ _ªl£µÅ0Å ÿÀƒw÷ã+; c<¨1#ùŸ’^Î=>åÿ¿ÒZW£ÆoqW§AùW‡~,CùRUO€ÄØßåO=,yªƒ9âo`ç ây‚,¡@ªel‡ld¾:æþ5cоLê·¤µäUâŠC\ 'qÐ÷e=¦Š­¿Id²Ywü0zÏ¢„(oÇ^†8yÏÅØcôÎÌ‹ ôâŒK \´jã’D7±§úåEA<¬t €'÷æ @ÜuQoWeúé¼Ã¹ñTK@Ó”GÖ¢ä;Úsf ©¨È2®!G[À¸×„lÖH3`*@eV!ºŽ¨LÁ°å€ tz%‚/µËPuŽ Û&yš?úÓ˜W§•`¹Ë ŽÔ Â<®¼Ð¶ò}Þë$ (ZÊÅt2R7whü€J•­j9ŽHj‹ Ì(•kF…·¬uÕøÊœ‚3Tj(Í¥<‡Z%*‡qÛý w;ÆÇs«?‹Ÿn>l›çuº)ÒöÓ÷Rû¿ÏÍ¢èÂcIt3}ºH1Kjì^É€_äµe›GÕÿñ¢æ¸!à˜{;Ĉá­ã^€ºR~“ÇhϲEíuúÚTœt1ÎE©‡¢’÷…BÉÉŸ87uVyH>LUíàý†uš¡›I{þù Õ‚ ‡¡J4Æ´áçXƒºî²3vE?´×}v>ì2”IL.åD8"Â!•³;AÞ‚|ð&ã‡]–b +æ¤òs ZütåÓ6 ØÈ_/ì·«Co³ƒ`5!ô©ì ÌÕ'­IuçŠØìuµ²*TgI—‚´ ÌG¤ø‡Ë#®Í>Õ•ø!£ÖZ*àf° âœKìïªLÄ%XuO §ƒŒeU|ãh" ÙiÀ4CLÅèIå×]z`–Y¨ÂPfÍ]cI7è¤+{ÀR²›îCÙ¿Š»A˜Ah %XWðC^æœ?•¡•Dв8 ½õPÌžŠƒ‰([ß? <ÆzÓ릛ƒ¹Ç )ë _m)¨d(i>” µ¹Îy ”ï|ž”æžE2dûčЋWŽ¢æ—e˜´NK(¦5m-\kRM<+äõy‘yIP£d}¨@Iù‡É éìoÚ©·³˜™J¬p£m¸y&xy/Nž½ˆûÂP’{7q&;u¨¯PÌJerŒ²öö±'‚]¼˜,¢l&1<¯ƒÕ’,'|·Œõãˆ)(¹/pX¦šÖRvó·´ÖHŽ }~v–Ç-ú‚Óçàºã— Òip@1$h•ä2I±Ú-ƤÀš¡É‘J,EJ;z/÷­Ò®‹šC[Q‚–ëò€GÀ¾²þ.[fw ÚœÙT4&LÇÚÖ<¥È«¥2€L5,°@³[iœvT %æ4@$”%sƒ\òN¹¬¯ÉÆ[ÂûD$¸MÇùÙ¤™áhä± x“ú£Tˆ'R3OeB<ÖX®„²Áfww"pÙ¢jMp]Né” ´¥)Á}W¾Är%ºáT»9W›ŒºàS8ë+ Å`<5`àl¨0°ƒÙ}ùY¦ŸXÏK]ÃaUfq:Í]<‰·¯Ú†õÅžer=k··cr¥Pƒ&tiÌzÌ4WÒNîbãr<Ø|ŽånTg àg‚/óDj¬‘±DM4å9p\ó¥UŒ£©`ji϶Æl_ŒàÙò_·¬¹æ]s½*‰™Ém|÷ l9™œ’·“²‹î8å*:-ÔéÀ)au§9# ”RViR"5ø6¦*NXî=GÔˆ¡dÓ ‡,ðEÈÞØ›ŸÎ#qr$‡ ¦Á_ï¤LÇ=gÚfP¦Õ{è ýò5ÆÖÑŸOQE3ŠK]—I·³¬Ãl »£Ši1jÀ“ùµV³ði§MÒú‰²&±ƒ¨k <*+ Qw@-åÈ„(Ýy$ zÆ®©Gnøz<Ø“ßkøÖ%*,i§öqe*)¡¿¯R½Cêu8ÔÖ;©.N†k³Ž,yÊŽ€žy÷æþàø<©ZxºŽ,G[pÍŠ Îcú=øs“›OR¨Åí«EÍÄC]Çò7Ž®dÒ”Ç@Éáƒ1*'ß¿°$z fô…ÆØlw†mÊ…JkÔ°RÝë›Â–Ž:}ªg8ì Š™ÆVÌ"Kz¨;»˜{Éqä±²gKÝ–¿GÃ2>bßFPƒ',•*éi¸|Äøe®Ü£Ý‡<}T†Nÿˌѳa´šMUİqjÕ¡1Ç„q8½:ÅÖõ¬L”_1ñóSƒ™(SXbMtQsµ Úöí0¿¤”µ´d•Ý"Q¿5©åæï½mÙŠá¬kBßßlÍûz [ŸæŠPrN~½9Å#›Z@f<Ž“%D³²Ùg¥6ÉÆ1­ú Ú¤;¤»®ÛAÔi)ýVWp¾¶å[‚|ªìO>]( á3G‹IU*»nŠT*mk ó=¨} U œ"ÖWÁpÎÛhŠË¬•·¾ºÒ£8X‹Á‡Æ,‡ÊQâõ7ÛÛ¿’®KcPAºõ¡”­ïèZøÕDžtûÝÏÞGoòqÃm·Ã¨ùSòú¦dbP¼) ÔK‹ç—é@¯Î_"·I}¶sÛÛ¤€]nfT\RÂÀI©W“A7Öö«%FæÕ…¹±ëƒ”øV[öYçÊê&´3—yذ¿Õ~m—9/ÆÛo-M»Õ¼xu]f£7;96‹®€v¾…§þðÞt×sÝW¯úõ°ÉÍ%½.0\HÞJ=f9£‚ »ÜŸM4¨0¿Ä ¢@,+çá€_s"Ø‚}ÇHæç†åµa¢Ša1PËÆ÷õšVãNüØ“˜äÞ±ÚðÇÒ›rüª²Piaˆ Àhå—`z„‡RæPqs½ O1ƒÿ¾Ð¯ÍÚ æQÌA¹Ä%zÕ{è%€Œ5E[wuËprW“ƒ-´íѶB×O̦]}as¬êÔ‚ñÛš4‹¹‘ š(Óån~C‚@ŽV ­?÷ÒŒüàñ˜h>_~Ô¹Zظ‡bÄýÔá}ÉÕ6õcõŸyŠ<ŒÐUÏäcsëôàç^(_ÈAò×RË ¢ñr«ŠHç YðÈóHâõ5£Äçõòùáæ˜P+3Ð/Ê·C©|󽺔ºN‡*ìÖÙ‰–ÉûþÄï1­5ßÊ,R‹æm‰zIºTFÉÇТçß~NqÌ$bcè:æâtÕÙïïk¨g= s+n1èe }!ñ¤¬ƒ(¨ëò‚ËÂj—¯EÞ œ¡]ˆnVØN+ÍvNÞnwt~(#šè¿5ú|VoËŽ 3h']+}; ¼zHŠ¢Íävì&gHùuî³ùü_$±[Õê§„¢ð"z…Lâݰùæ×¥Ú B½Ë"‹-,×á“óŒT¤ öêVì0ißkë<Ù4^k ¯ý£1úF†ádYìî=RVt3Øò¡îõªö­]¨à»–¾wsÜþ%žçšìp8M•©=Þp1¼wÀÛ‘,½K¨ÎB*Ñ¥.°PÜ~UFt†ßþUO/ç÷õ DY˜±£se{´€K0‘v°z{nÕÉ$ž‘w[•Û¬Nn8íÑÅ{¿g+rsèî WiçÓÌ]h˜|Úá§Ò! o‘'~Þ¿@zŒ;³îصˆ»´¦_õ^^¹ýÒk’˜ó‰ÜZqA>!cHqÍ7;ȇ5 dÌ©±š—UdÒ#DCÍì³R¢¨ÿt¸ãOZ¼ªû•”„ö†êÙº,d˜ÜÁ“u=9izÀ1êËÄWù¥Y2å‚_ë‰Ù½Ê›¨óõýõG«ã°—±z}-góîþÐO9Ð3ÿ‚‡Øªòò•¤dû#AkZ´|`þªt×ÛÅ»¶#Qä`)ßÖå3%ü´‚Öá ÌÄTª}¹”¶ÔÉwàX© ¼+\ÀÖ8þþõÅôÒýlñ}!cu’Êzåœî]É兩Ï[Ø„l«i»¬«&ñ-¡Nh‘ê*„c®™Üêƒ$¬MBwÚ9§dmïòÔ£0½h³h?Üx>ó̤PàŽÓ²i¸7§_ýx+@Ý5éÐ9EnÂåÓ%aâ"«‡ f;W‡8´‘ÉE¿q,?q kºh›úŒìl¦7Kú©|—W\ oŸ:·õ‘³OðdÖ†­qŽYß+µ*öþŽô“ÓL«NÚ²&äu>x›`2¨E›uƒ¢¥ï²Jù*i‹k\`M‰SÇ[U¾Ùe{}dšœÂÈkÚLxaÀ#ŒÇJS¯k.¶Ó†Ÿä¼÷W¶Òpc—ØÝç'ý0“¤¯sû´ú°Î.eß ‰\•ì/–?¸Áäcž¿Þ4W»‘øñcN”뮚©€Gd©Ä\-dž(êªÎã“7ÇâÑ»ùñ¨IÞÁ(f(; âë¼/xTÿ@E'P¡Ì}Ž'GU·K ^3Ë"w”w%ð;¹è3ïÃ߉Í£V†TÏNë@OêÑ|œguu鈕@â¡_v0ÈžC]0r$hþïÈk{^¯Áy˜ˆÖë/¤E4(ÖÓÿ¼ckÄî\´]b­ð€;Ñ‹ØÛmѹsØ?·Ä_ ù‘è )æÐƒP4ã[x·¥±°CåÒò_ðßÿ4MŒVendstream endobj 120 0 obj 6438 endobj 124 0 obj <> stream xœÍ=YÇqïŒÄ>.í¸ïã1,#‰82<z DŠ4D‘–¨#´ÿ|ªú˜¯ººkv>îRô ³=ÝÕÝu_óÃÚôÂÿÚÿ¿ùþÉ￈7¯Þ?Q7¯žüðD—?Þ´ÿ}óýÍžÁ­oò–ƒ îæÙ·Oê›úFÛ°yeo¢±›ŠöæÙ÷O¾¼}þTmÎÚèòí›§wj³ÖGo_]¿+?]ŽþöǧwzSÁç|û72ø'üí¼ÊÊÞ¾Æß>ú”Ìí÷ð¦‚F™ÛÏžÞY6,yguÞ¬¿ý¦¼TT¡-SV|[ç°ÎêÛ÷ø;ÆLÖyN‡›¸9mðïÖèM[GÿL¡ ‹üL©3XêfSvèÛ:±ra8¤vIÇtûCN备©é˜u“ÊÏý˜èQÒí’=üÌ¿MÚ|‚]¾$çGF·k²Þá|ÖÀ« ÷«8`frïèA•±0Ý0ñ/åpLŸþøô«gÿñĽù½ž½dúPg°°©ú– ž½µCF/“ùß6‡7ûN“å“ þdß:Yk;Ò”ßíD­‰¡­¯*ƒßuï´Ù¼ ºBÎ.;8†0ÀHo‰¢… ‘<Âý]ðÖY¸÷w8£ÞðÆ$R!·÷S[?ï„PFôÏ<ðЉÍÇc›-˜ûÞâv‹Î t7RY"«<à!E>‚9ò½h“À`òô›5c§+¾¯G u”¨w„G}æpßÖÁÉùÅ8°7äÀ:"è¾²6™ ‡‡õ ¤°)£; ¼&§ÕA³ñ:z øÛNÎs²¤¶]ÆWo ÷¾áøp”%|f°ágr>t1xÈ ÎÛñÇû,”IÎ+ùìv^nàLÒ¢(ÿª­ä¼xµ;0i@ Ϭ¡›.“x ÏÔ¯)åÕ5á{K`óÑkr.‚@ɜϗÇÁ®.µÁòp›¸ KX âŽ2×ñzý®ðÊ'KNóëígï:Ê·),¢1Y›1Ÿýܳ`wݘÑ9œÎo4£<„ÈçïKÇtWåU1ï|a®4ábJEŠðorÓ–í—ï¢Líͨa÷éÙÒñEN„MËò€áŠ ¨/É‚GšîÎÔ'­+_Λöç{_wì¬K®r×':"!ŒŽa\ÏF(†J«v)ޛ̔¿§†ÿbÄAÜV2ô‹ Ÿq–Qzĸó²5oJ–/ë2Ú!et˜~} ç¡A¡®ËÁ…> )D8»k@])’Öãð)8ÎÏ ðæÓʇŠÿ ÐQ&ÌZcÃsg<Ëá9áT”§sŠ®0˜2Cî;‹\|KSÂøÄÔ6\1´–‰5¯,cæFÙƒ“%”¤Æ€N™29gF„––â °… ǃQQ6ÉökóHå3ݲÍÕéÜß©4඘#Ó€ âwdý>ÝR˜wuiGe®q œ…¼iˆªWxFT?¢ø7¸¢H޾ ¸rŒ·RÒ8·Ü1¶»ËÍLŠÏÊ xVüV4ÊÚEo :#ð=E¥ý„^¬ƒ ·ú©Š23ž‚o* ¹`Ã`e•§éþ‹ÁƒÒK;A‡{ÑÎ#IDŽT50â®ä^V˜+.¸´ZZìeD½6—ÍåÚ\¿ŸBGkÄ'¶íl4ˆG;÷Ù… DÅ\8êª(Ù씕í°>ê7GVܹ‚ã=ìR7¼FÁY|BOà‚ŠÉ‹F ¢­pQLÙ±Þn!¤#ãgÀ(ï64¸GçUÃâ°86è@e9SÁôz„¡È’Z´ž&@Ô>«Vzˆó1€G§Áâ}ÛÌÜÔ±ŸHóÑ„´´) +§ÚÊïNÏvgYî >¿oª¹‰qø…“9îóëìê¾ä€ÂK±nKfu)l¾¿“‹x=£ lßvÂDLG¸ÿ…ÉÔ;{gàò”BE?ιîåø–1´t‰áÚÉ¡yuJ!·ó³Zèºò¿rÞ1{g_Î.G{H‡ÂýX^ ¬«0ã¤áxÞÁ(ÙD˜È G'™TúP爊²²sš“ÍÂ9]ŒSªl|ˆ«¶ä¢Äò~GFSªe UFfQ/ë F“GðK° j"&êùV†—äž¿#,Ê$ ÈÈ*°rÜÒx1ýÊ w0(éžbŸ7¸„ÎB—_N‚MLÈ–ù.vá„Kò¢^mp£¥T¥z“¿^KV:óä>hðîQa ‡i¶h ;5ë ¨MZVM#¨Ö:NBœ&° ¹ÝM>ÚC’+‰Þø×‚œà>m¦£ŠgôO6KÙ9\ÃwKKRF%ÇÑ«zhÉz­ÊoA˱è­qùyñž›â>°ƒpj=!˜E5šrÕP Ö®† UÞýhRC”’G`Ýåò›„Œ`JQŸ°ÙQ¼Q H.3‰$óžéL ,m=шr›eÖ =ГC¡ è–ó¥OL2 ñõ%Ò"ëÛŠRñ:c„Ê`­G¯Óš­²[γ¾]bô<ÌhÆÔÕY^\s‰2ÜQ6™Ó(¦»=eünOQÀC}°¨-·§àiÚ……b$õ“øÞ¨ƒáùš(!Qz|µß­+„$«Œb/ÁU:m‹ïõâB£SÌ^¬]ÖsÌMG•Ot2¡2ëõBV•ã~Ñ×¾Ú.¾€tä©Ó¦ÄCgGcSqpqÂo¶åM–My§m8Õ.0¸$YH/ëlj*h__bî|- ÇÔ¤jZ9T¶X8eåÃò:Rb8ãLû±î0çQP|{°YTŽÑe0o˜Fw–A;ƒ¾0Gç̨̺ɸÈ¡£X?p J#P1ŽjÒå`°@=t ¢É›"ýŸ²_›™ûESp/(Ž$V^)Á…)btT¨q²Vá'!h8²‹° ½zæZ«Nù·ô̼>~¹r »,xa¹• Wî¼éjŸ]н©4žó®aà(¯ô뎬l'©Ï³Ò=Mem¦—”31Úóô ƒ>[øF’8$—×ûº Ü÷ºÔ¡~ª{Vrÿ ›+ôgïWŠçd:|C¶?Æw‡À>ªsñ¹ Pjó±».Ox«˜¦t–¼Ræ•bFìw"çcLÆlƒu4f¯ÌÚ HŽ `¶Üîwäbž fòÉ`# ´>é^ÂuLðu#´ìþûäî¼÷†«0+½øØ™F–†Æ…ÈLÛC ‡Rq‡öLTMê7$)f÷fô1 šÔ ÖRiA£¼ÓÂwµÒL›s‘ø••ª œEÒy¡5œ¯0œÿœêÆ\kcV&ËóœCUò5G?\ÇdÑÂ]žË®gÞÖtË•Æ}  Šâ0“ÈÝ~þ4i(ñ`Âr:Äsh}%ˆ¹þnciý °ÇIjÓþGq3*[‘ÿ1cÒåêJ¬¨3}µràP@˜8‰ÞI™¹T°ª‰ŽÏÌâQoÀêü)Œ7 µÑUŽÀGbüRß-õ:c¸A ©äXÐR‚Ž B§ôEÁyÃŽâN"ôùb|ê÷³£SÖÖ´^Ñ‹ÐbT÷±ôÎ*&üær§ˆYõšg,͉þŒá'LŒ^T§úß Ê`¶>Ít(µL‡ŸÉïš%¡rÎaȘ ïÒ¬Š»ÿÂLYÛá-ÅB{›‡ß¯ëb.[CS,>\’6 uºl|ñÞQý?¾? £S¨Ì—h"ŸãÂÚbò.ʼn…µä«ëž"4}•\4µRËAe¬æ9Ö;.œ1k^OÀªäü,nG³¿š¥ÊʵM^Rü%ŸQ‰^ä¢Ý}I¦Ñ—­\T0o¿ªàôlÕ•9xü+jÕç¼kKçU(%Õ¡K-Œ&ìfúÈœ¦Àüü*š8Tt•4Ì`…ŒöãâZĉwmyÄo4mäçݸ˜ Ç*Èç—@Úqè%ÏÎn(/þ'˜Ã.³õQ­£‡=ë·4³Rú&½Ö?–ºXoëæ¢Š.=Vº¦"•Rb°— Cy3ÅêýWd°y¯VÞþ{y ÿ²5Ónåª Pq4l½,ã¨L¸Âؘ½jcUÉe7ÉT*ÈCmeé4$Q=ìºTÞ¹|õ>¿ðèéj8G#çv ÿKió…‡a•Šù 5–)Ñ”ÃdŸ¿«•5÷ÊúãqÅø³E ñÚN~Ö#ÓŠ›èóæSÉ^RÚ)7e2vÌñ"×ký’‡Jñtì'ŠÔá¥9©š«*º _ Vùh£Tg(µùT”]c8‚Z+4‡fá^/ò€ÒCÙ‹/Çzèî*àޮø“&i”Ü •lœS¿÷É?«Q%T>YVFõM\sÜæG¸í” Øæ`ð•ÁJ4’ßÖ.…nX~œ÷Æ‹£(züpÑàXNµr¯+9›y,@L¬pôž‘~"çËa4úÇ;¨òÝM»q¿¦–Ò“Ó ³È½wÒ¶Âà-Ôi™kZ+h#§_è«ø#¬uÏÅC/nµ´:låçÑ«ê/³¦¸ã¯ì"™4Û<òÙȈÕVcÁ6ÇjXäѵX ÷ 7&Y‚ŸñEµþóèûvÏÑÓ†O8‘ù˜ð˺ÛÄÁÜ_Þ£ª¯™¶µ8çDÊÓž¤§»HXål‚Ž7»–,§¦ +·]ã»UßÔÛ”eœ¤“HÕÕRÏššþ”ýÙ<"™R2eOö’•X{¶áê{N¼©›wáa®³ç­2KiNs“?v—£Dt?¶ˆO`ÿÑþ½nl‘ýiû«Ý–Rùöß`ˆ!åün𡚨b2 У°`Å»Î*dz,XMÉ3G!%©pª±èL‡…Ê€i›› ÔVäHhWÂ^†dÉo:Äæ+E>ˆ‚…zvéÍw–Åœº¯Ì¦ðøÊðàbþÔþÚÛ«{“|¶K= !òjk4;¸$ ^:TOQšÄÔîu"$e‰ïa²ê•EæÞÝIº¬GÑ·}Zºúä1X¸UdE`‡©üt§.bhHy¯tÂ…£“ÇÔ(jô–T*¯s\%4zñ´5JšAì!e³d¬äZÇ®E.æµD‘¥””ÿHy›Î,ª€¯á$ zJ›#ò|ס.é¯S?ø—[öÛ žñ°y5<]”Í6I‚d†Ìî×ú0ì{¢ädÙŽF)žÒœ‘ì)éBX†a™Å?JÍC]“rI¹}HzB‡A”ë«ÞpuïGÏ Rbë OÒ:%#ù0&nÑxI.üf1Â:æÐ·öËî—LÏ2ØtKê*'ç ¬¨¶CJ£ÔlSHVårÍ€Y˜¼ä¥*¼ÜqûŒÆ10h†›P=òY?†!Zb‰l¢—UFcÆÎq‹*ìQÍÿýµ›Cî°~é„"»¬5À@`»CoÃ:ÃRrÅQ5”ð†ÝLrS”`aTrÐnbêVa¿—ÅÆ–¤õs‡¢ 踢Ý$d¹ÿQùÍX±‘OKÂ’\Ö*mHä˜äÒÒg jgnÿ)ìÕ5¤RY,iHšá?9½¬Çï‹TJP³Ñ#Þ»ÍõŸ¡r†R„|ªéðÜ™m‚u<ˆ=w2î&ÒQ‡ä+&XË‘q“¶ef˜ ŠÊìz®[‘kÃ×’Žåþaš3˜4ØÓuß‚„8H×ÃYŒv¬.eÞȸ€†ëÙ*Ž]¥F3©®-Z;ïëW“Ź0Ä[ß—½µ¨+§óL‰Á,èp"‹ÑAÝïüñŠR˜õTá}ί®]>¢Òåñj ì¡Ãÿ ©òeK™„SþS­45yÄ;Š4ô7Šˆú¿ L1FM™ãœ°>åeP{ூ–×+˜´m[ ¾#‚Dº•R{L€©ÄCÖ)š‡‡†N2©ñÖ9„mQ1 ëe;³Æ\’ð^åÞbl/§‚ãé4±0;n#<\L>rŸÈÖÄ\Yò5ÿ„o™˜tŒ¶ŒË‚‡-C“þn9‘^†Üýå©Õð‡\Ú‰ZT¸uÓñ+}C&¬y•FÞ|÷W2aËÔ,±ú,µ_ø…•ôß]Äí÷eí¤ [ܹLJ§V¡ì ôáUý³îIÝä©6!oÁ<°Nâœã:Ç93=Ý<Š/¹rW¸ˆ†ËC;—}jÙë7›Ø–ujb9|ìY•O¶•ÀÁSk€Ò'é]VÅcD/Ï¥üwä|Ì]'$Îp¡/Òƒ z·'cM=ø8£øqrhïWâ3@uªrm§³r¨÷žtÞlê°á 6[ö>1l~,1åL.eË< ®u:øu/[#Žx\‰8-v2¾·&¿Òd loùÍ—= Ôa;ó—Õ jl¸ 6±ŽK»’SÔÝŠ”Kƒ¾²HÑ;*\\”u#¡ìø#Ú±•=†©°žêµ=syQãm‰ý/Ç2w^¼lµ–•âcfX*tLŸH±ìK¿ÝY3 éìÝ!›¿ C>„s7¸æÜÊ Øè“¤‡…áV9âãM´Ñ½>ª‰6œÓa[‹ GÈR)GJ9¨ïH|S0ÇA+78¼ü«­x—étHYº¥”ÂCëU¸›gwnL¥.ƒ}~÷ Ûš\ƒ?ÃQüFc®‘¶U›Á/’%Ö8¾,HüMCÓàu‡~Îx v|,äÝ/Ч”ýÃæolY¼qy­™”Ež `Äè+Ë`Å™kÂA6ÅÛ·FB¦ ­!D™ íÁb3켌) µÛI(¿äüãN¨‚ÙtqTáë Ȫÿª]÷ vA‡!‚T2§Ÿ×˜†¨ro`ˆº4ª§d=£ 2³º²³!Ã5Œ%`câ• b «ÞVHÂ=ka¡ œÔ]ƒwÖÂÑÚ°Ñè8‚ûì†È¼a«ò†×Áû¢‚J«”Ô3ݶ—ãý ðiÖÇŽJ¼]e»¶SÍËŽóW*0x ÆD¦µ ˆ4LØNEÙ<[ˆ”=ÁA9ýã·xت Ö@#8ñå^k‚B¢Üïæ!Á,¶ :™ cïkRŸñÖ ½@Fˆv·ãe凵á%Ò«¤éz¸Ùg5~Âhß·¯ê±<äM=GëWŽ‹ù›˜x>¸É0‡CÇégíìÆS'ÄX‰ÃoþÒ_hô0Ý=ýÈûá îR|Í ƒ÷J¢$yh¨|ΰ¯°Òb¡GŽäcZPzÁoê=ðÒî“—Z+·%ã_àcãrö‹Öb¶7:¨Ï¸¹5X"MŸ¤nµv—‘Rl[èû•œI4zÛ‚m†×™,=œÝñ›ÄŠÉ#]ÛÖV±<Ó¡Õ§b‘’ÕôÍ.7ì¥Ùœ ŸõŠ.3" «¿el§w:ÚzIö1‹ ÞuHïö\CxÌ4,ÄÂB-cÊŽHê°DÄø°ˆþvÅëA%"8uRjÁ F2¡R)¨Ž‰Qc݃Ñ_T/S ³÷ÈÀŃÂJ×ß.œ˜*Ÿú=s…IÆï³8øž3„¸ ·³+žù3ªÐÏÂê”ç÷ã6KÂ"U¿Ù›náÎ÷-IÝõŽþOÑFªv‡çõíC;‡Ê}ÞRè*::"Çø3õü”[Œk`|b½ò•0M'NðQ*?4Á`šMx˜ÅU?¢ëã€Õy0—a•2ß8ÁË!³—NõWÓ§7ʹ˕*S¦|ƒn´¤‡,‚9è×K·ÿ¼ \s‚ƒÍñW¹VXq}"8¬£ÍTgê0[úž¾ŒðâÔ `©~ÐL[êð—¾?CÏöŸÄùÃF€jæž/U?žÂ¨#÷¸¾“}¾ñ²­‘½°{ÛE›HœxUí7x7úçQ?\PD¶:BþùaÈ£‰lŸšçNh•@ÁH7wÃo-_ŠD¤Âþ‡ÿñÙ“ÿ†ÿþŽ>,òendstream endobj 125 0 obj 6684 endobj 129 0 obj <> stream xœÍ=Û’7nï“|Ä©=öhûAG-6 ‚¸Dÿx˜'u˜ñÿòçõÝÅ_‡Ã«‡‹ùðêâÇ Eÿx(\ßþù9 Pê¦äµ·‡ç//ò›ê ŒŸÜlA›iæðüîâ›ãw—W:N.†ãíåÕMFüŸºàbÔÇü‚5!6oÞàð8Áèï.u˜¬Õþø ž…yò>sy¥¦Ù褚·Þ^ÂOc‚MÇ÷4»”ޝè©×8að°î‹ÓÈû ޱFåeÊ`Ž¿ÃÇÊØÕñ{ümŒ š §!Þ?äíÍi6°tžÛ;¾ô8ƒýû Cû>Ïf¼¯ ãñõÅp¯|ômÆaÔ¾a(›‰*ĺw¶¾‹Ú¹nrĺ†ýòÉ?Ñ›>ºö1G ßÐL8Ã*z¦3ÇÍ%o™zþï8r¨ëù Ч‰¬ÑÁW`#üÎ4£;¸fÉ× Aõ´a;üM_I‚üæô.ÂzU½RzrÖ« 3?HN-|…òÛùeâŒk¶‚Oó¶!Wx8ÝàôV˜ä5ƒ I4‡àc§8Çã7luZ&Ò$1x Ø?±!Ïò›€ã ¢¹ue]CÔø›’RÇ?˜â»é· ³©!õ± ÍÜéE/l`:‘?žç_ëĥܕ¶ N®4€©cÊçû|Kƒ,0Ä0ƒi çÒ³k~1øè• ´óè¦vNrÈ–Oñ‚äLŒ>™ÌßåÅ×ùEGÄ>zñí¥Ñˆ±tü‰€›çd}FRÞ‚÷îÙt§9ò®[Ù¾l‰Ú¹BÔÏ/qZcRh訣o£`S¶×$Fê a+šq4'P*Ó—Ylç0ú'|qÀ) ÉXq±üt~—×HÈÎYE§¢Ôd´n¿¨²ý!o%¿¨DE$Ü—[SE;ÍVö…ð³Ý¾+ó™æi'ð Ž\8ÇÉ[ß±!œ–Õîø86Î^›^ÚW”2 ÿnãôq·*µÂ u ÚPW¡~S–6º. "ÑV[€$3?Ÿ<Ò‰@Â7“ZX´9дï<¶°: yvú]Dw©ÝcÓ…S_F·MaÑ$AÍ•(é1 ÂzMäÔ° P—…òm~s6.Fòéø5q´Óô—°ŒJÑ&_e'QóWø" Ë·G6ù·ß.'‘9ÝÅÆŠª×!ÕcÉr-&åÑèpÀɳBD8º5Xö‹H öޤ¼ @;€ؤtdeÀ=Â<Ï´D~ŽF£È: ¹£½8«I¢aÎÿ‚XÐfV±,îÆIlð“ÃþÎ(O9D|ñwlÅŒv8—Y5«|DAšÛ|@)9ÀïvÙ¸vÍÔE ,—ëÓ¯ p@Î_Ñr•nq,læR Þ¿>ƒXb?ëÌZŽ#‘fÉK E7py²¶èߨâÛËYýí'­‹éâlÈo\ Tÿ¢!ïÅrAž7$œk4¯9ñÈšTPè5/Hå)Z{ü-=v³%#ÚGaHZ`¡z.îvÖÊ}ȳƒH\›ïZ€®QÁŸï1׸Yýªì¦o &|ê«Æ¼Èíti¡V]‚›Ð?’À71õ>Eí’­ûsA‹nÜ‹ù©Ÿc-𭛀\˜Àg–ç2¶WÂ&N¼çÆúMA“¶\)r«VŒíNØ|; ûzؤ5>È-k²¯Ö6bÛç;•ü€Ž"¬V¨‘ëIuv3Ÿ ðvRçƒ­è† ;Æ‚á­_)"´g­¬ˆ:nʳ Œ:<û·—€sàeǧ_I,[·ëZ.ý3òƒCŠp¸p¬¥™¬8e6Ù´%£7ãìµÄNК=шÆı ÃäP}¡¡SL$*`á˜B Þˆé~ƒmi‡§C깄#•›\œî;±YÇË)CÚò@Gà`ÛM(t¶L¢SÎÚê[Yÿ’(îÜwxô¤,P¯×X=ÅhVqN/ÀiN&¬˜zïžc’´ßÿò•š#ãÌÄ™ìz 8wä‚5V¡Z¡÷ /i> nCA<£ ô·+åáÁœô¡²˜ Á‚d[4;¡äÛ¾ñ_¥z*DÜE¡—F‚Ìša †~¯|ˆhëCì÷!ÑEp” HÔ3£ìˆ<އüæ ¢LX±÷.KŒdíÍî[©•ÃJ©‘Æ‹cû†á[üt¨Åé¼ +‡7`ÍZ¢ê Eäñme1©Õ*`¼ò,[ &xiq!DË\lAøo9ÀEƒ2Ãm½éÄ{&3ÍÊWòçXGmH#V"±-Eën•j†W¢¨A„êbWNáVÑX 6È· ¡79”ŸR‡ËŸóüsŠª +ÚTžÐµ¯8”<¾ú±à'£VrÏÖ Eg“SHPü\?òï‰ìÃñ_…²]%ÊPÏ%}_þFTcøQÊ.µæéÉ0ÜÆ®pƒD­Ò¢ÁËýÓ}NikÁƒÝ fêPû0at[•çék{ú¹’íé ,ˆ¯[Ñn04=ëL¤´ƒ…sRÀ[­‘Ø—Ÿ/‹ÖÆ’Ö 4~‰”;£}V­&8,ÈÉ #”ão~È£§ÔÍ–È6Ø+xº“ ~Ò”G@Dëh¼©Ã½ÒH"ì¶TÃ(ïCpâŒ÷§á¯òä.[º¬7ypô&âˆeMiýïÙx¾¥×´›Ã‚ãü‚#k\ª3Ì£Åxxþ»‹çÿÍñ.'¹vtkiü˜Ü¬¶Ý*˜Tèx^Ž½Ê¹53«AF¤W--â{:¶Lñè²`ðùÔ¯,ÛAPbj£®¿®lÑì“ïÔ®£Üv Œ°"šy lÅL~nmpiçÅ5`¹Qr,#Ø8MÓ¬b}ïŸh0e¿G«€’X|q²_Ô¬ÁuÍkÁtu,Æ¥“š0“×$NŸ´XEhôƒ(9ml°ws«ï)f£úr´:¢ÄoäNù t ‡ö•IRí 9Ù¼yþƇI[]l*,æãºDR¢ä`u 0§ O·XŠLž· ÿ2^rWx$,lϧ®0ÄJ6âOk‰O%",µD¨ê÷.ZŒèQFI~úã sØ v 7Ê ®Œ³´ÌNðäNE•½ÕòKƒX›¶*‡ëyµMˆ”·,•™àvVc˜Y%·‹Q² Q-ˆa§$5xž Q«-E­àg¢81¦RÀ‡˜´|SØ §5r6°ËˆYz_®*ÞOS˜$ñFŸ@b—)+éEÐ,Ê]q¡· N§äÐÛ׸¦Œƒ× D‚ŸWuõ€ÆB„Ç;JÄ—^$VJ¬œEA-»µ›!-l†¦k0ƒØK)5E§»pÞÚ¤¡ìàãLŠìyª)nMx„=Ù\&Ös‰ÅlQ0­É‚VCÒSøád<³Ë¸´Nþœi]ƒjÄD ov©„Ãlè¾ÛªŠŸC ¤a]H@@©m#ºuÞ\e0I.nTQ+±Ö†Ãuô1›ŒÜ`ÕË{0Ul¬Ôÿ}µT-Ù˜¸Ö¦·ÕˆÊõ~ž3 Æmˆ9·QŠ”CNºÔÒÍݸ ÌŸj*¨`°ý>Œ9Ïvvc3×hœX†8bì„…»V­}iAg…´ŒÝg6"H _¥tÓŽ‚˜Âİ'Þ³‘þõ¬òË Ø+–¢‰Í¸jŽ8>‰£¹ŠöÒå™'±zšà ­µ, U`§ ½¿Å3c‘;”0ôÅJ]ð*b~ߪ€UªH#H Cå` ZAXÓŽß²™jÈlê%4¨k­µÃ\q,aJg¨©ØÚ€rP z›§|ÉU4dÞ5€/KhÕõž‡¡I§”0DœC“‚Kå˜?óÇóc 6rË‹iðAŒ¯Ð83¹H! ÔØÇÝð&ÚH µ½q³pD3mô“û«¸».ã¡Ç®Õ/Åôh¯ò–÷Ö(8WTƒ;Ÿ]’êL;µAOÊJ¼Õ%à‘ʽעHú7‰E¦}] Þ‡T£»7Û•>¬h$—‘œb™oòz1³EÂ%§΄è«‡.Ž.L(²„ÚºJÀZ5zšMwî“m=ÈkÌÛjí×µm´"MLúxö£;þ×bd–ŸäŠý½èÁgÊc-°ö*^ä"Ö^l o—@²1I5˜¢ÖzŸ×ˆs‡i?‹’‚³‚ƒ;wà]ì<£"MŒaõЛq\¡ÅÐgRo0·ž£4‚!3D<¢Ñ¥êWËÁKWËÖÊÔEß2ÎÏŒ/0x‰uÖÉmpNcWVðÛP‰dWnß©u>Ú€Ø×f'Gi‡Êæøßø¸Ü÷Ë! P¬ñø/Šòèƒ×Ñ«ªIm€£· "(E¹UB³X±¤s÷e‡5˜kÁ M<$r¿Ëu×ÀÎtxi| •hW³ZãCcFr˜Œ2UƘøXƒkÕ©üêy§e;4Å눭\ºàí2@ÆMí›P2ËRà7î±­kéHᬃîyë­—&\6–L/ŽáU^SXºÓü`ÈÒ•¼_A%§ôvü×1þ‰œ”[Xî¯Å¤K]rþ¼Œ*‡Çr0¾g“éÜNífÅ"†u{:t¯-·pbìnáäJ.šJÇÀ'½Þ“jCÙ;2Q¼˜é&Ú³-c¡†åNÃû:±g´†á×®Œ[ÌlGìQFƒMÓÜg´tW7¸¯ç…ötxãŠþyÉ—oá‰})úö¥ÀU ö¾Ѫ Ü`¬4Øs©N+›î\±ñ (oY¢JÐMÑ ¹~xRŒ—×ÍHeñB1À/×4ò„wÚîå³|\hŸ%~ìª%PCj7³pFó_C×Í üÕëg´?À>ê ¡¶ªH.WÆ`ºˆ¦¶Þ€øÿU¥ÑÔ*E¢tq…3Ë ¼¼²œ™ l´-ÊÍGE…B4¤uŒðpt SHU¨ª©\ߤÿ·£§4£#˜ïiÓË,”KpƵ+ $àFtF8ࢦK&Ìh§ÁáÕò_GÍãj΢*:õ,ŬÙXpü­VÆŒò® # ø#ŸÄÒ˸PkµÚ€7^o_è ± ½vöÉaFL© ‘/ãà'ü#¦wU4>¿BýFè=L {v®Æ{ˆúê1Ìì"ë¼·K¶n11–°×–›)¸¾£í_Ä>vÚ¿K@c£½Ôý_å\mЬÒ0JŠÑY,àl^é](°³Úv¡B‡õL˜<¤qÿj[énn¦Á§@þƒPÍJá>:X³Ìò×ÁZœÑêZ²®¤`)÷ºÛF«ÚE0L0•5³îAÅY¹ÑYa}=°àoÅ3‡ÁCŸ%R„sÇQ[ _â¡VO JÕþœ.ékAu3‹Mϳ$¹ `Ðb…4—¡O¡º<ÕÜjP4·K]xéË|[ÄÓ®fm¢7_h7£t_‡¹#"¹¶jk%À4Ez×Á4â}†$ÂÏ}Jgh69c)îØç1ðâøF@è¶ôH­¡ýz Hq9ÐØ½-=VY¼Ìá7omÔŽƒ -«RpÎ;rý»\ŽÚ“1Ú0Jø ˃Ña#–±Œšú¬˜éš‘;?a¦Úypýœž*„œ´Ä“K/Gܤ\=.ùdŸŠ7¹Ð[w ¿ò‚ÞHkzv 5£Ù‘@Ù&x¼¿’(1X‚pp%ƒ¬â÷y96ìQáÛ.áÄɽ˜>7ñçrú9î$y•ïË–s Öa©¹G0*ï[Ön£ˆMÓuFÂ¥1:ÍiŠ—Û¬j£)¹Á·…©@¼0 ¥…ú›eû.έ –[T‚˜ƒi½¨WÐJ˜j O”K° ìeû,»VêÔÝŒ§cŒr»Ò¸%|ô&C nãÙËÒ C{n +W´X1rŸG`´¾M2Ƶé2çò‚Néž÷Nx^Ø1 mâR=HôiœŽµ"·w·Æ¢ë`ЉÊÄvE÷ØjíuÒàp€Ž ôаU/>š‰žmƒŠ‹k•žÔÜוœÄlˆ‚³â´ÂêÐÉ[«ìšUWÀµÙúª¶ÊØŽvý~^àutt²VlÆ2W§½ û1)vû‘"á|GLb L«õ ò½#»¥R°…‡Ú§/øóqÉz×ÂΚ|CEðS¸²šs€›Sø0 €ê2àοÛqö"ºp‡–ºcÌZTè\í6úŸ–S«öa¹MÇꪠÂrQÙ/¹ÍC”r´8G$­šT» ©P‰Ú&ݹj^z–ûea+ø'«-†$?.è˜?4¢h0§2Pô aK>D‹ Ý=FÜYÕ‚nœLE½‰èÀ;UC$_¶žu¬@«D#DÆ!Â7I‡ØXÊÎŒ]®í}V¡}ÊVã¼éÚÓ–ší ©fŒJU°ÒÕvF>Åš°ù§c9÷uÕ@]] Pë"ÆÕì„`ì¹ë:&®þú0ú”¤œ}ŒÒQ©#ªNéd½yVçh$¸.舉ojëĶók*X°†äåf×Ù¾n…ˆ7œxØÛ‡E¹c|ݱrK›;ì¼ F åÅË‘Ù!ù 2z£T~'ŽB {sã;“ì=é´ò6­ïR”VÑ[¢ÞT€þ«z™odG1Œ)VΘ° ›ûøÀ~@ð^§–ý¤€™ÐR„ãÿ&‘öI"!>ùÛÒ#c£ù§õp.)ë®{6GR²Uðí{¶ëÁô«úP€wP¨¯Ò`ÍÙcÎÉm@zá^ÎÉÅ NvÕâXE²{:žßm‘Š5+í{] ý’F\N÷êm…œo“î+èå¾uí¢¯˜ZûO#Ø}þøî2w~EC}pWZ»Ìéø¯ü^Á+¶:¿cÀǰßÒºzöŽ~$Ú'sj`Blë>Š äÞõ •ȵOô! «ÓÒÇ_J úúñ‹—ëüªŽaÍ–•Ø'Év](sšÝK!–7 =êÀš!îÕ1ìÂÒU^f´îî` `™ˆ7W) ïªÓLÁd\'b|cNô­`böäZs®ézò¶U4ÕÙûýÙÜ(Àï»™·Ý´Ÿ S¸è‘ÓSÔÛËø®&†:,j1X¹»ÖmµøÇei7´©¤±JlH‹fHŸ&µÔnøíùÐ3bûnE}aHjXæ€×÷K]¿=e9¬x”÷Ï !ÔàŒ&vø5I>¾B§õr…àNKàVþíùÅï/,pÖá§‹ùð› ¥”?( [t‡» §Ó_ß\üAþ «Q¬èƒ 7_tÕšn (LšéüAWŠ“ãw¨\í9lÌ!À»à7å@¹ÂªË+í–J›?^ƈŸîʱC‹¿k/®8£%„‚Óælî}ó¿/êË c5}¡îš=棾ÇçÁb§e>ùíû¼¨-(¯>äñgoèEíaòÛ—¨'°'ÝGJÄh¿·ËØÚš30®ê5bŽnÙÙ\‰'?þþ4õC<¹åŽHÃß^ónoòÂýeàiUòn'(²H–Å®3̈j-Âü¢Ã/¶ ´üi^HÜÙ~@˜*æó͇Û{„2øÜ™f$ã~ë>?Eÿô#åGAЛÓ:¾yøðšxàÃoJ.Üû€xlnP•óÕ² 4*ƒ¨¸,½<°mXK ¿,ËŽÎóSŽ«û¸&UxŒw7Hcó¡öEË#Öhb6ÍúŒ€¯Ùïw«#‹óò¢«õà˜ðŠÏqŸ·5'-¾×ã‡(o4þ×â2Ç«<–ˆHtæxÂV‡éòaZ&Æ9@<Ïø1:$žYéšžc>|ý¹ˆÀß_ü/¡ÙÐ_endstream endobj 130 0 obj 6923 endobj 138 0 obj <> stream xœ½][s7r~W¥òøH¥Èñàä-›KmR»Ù­7¯,Q’]k‘²({-ÿút£™=gŽHºì*‡\ûúu7ÎOó¤.fü§ü÷õûg_}.ÞÝ?›/Þ=ûé™Ê¼(ÿyýþâ/ RiJ^{{ñâí3úR](¥&´™æ`.^¼öíå›ç×ódýfù+>»0§¨.¿{¯ 6]¾‡Ç9F­g}ùš8øßËñÙtÀn,tîf{ù-{­rïN+.¯ Éœ&=ªµó@-¢vŽ·°k‹™µxÉúþÛsúÜfs9=¿öÁNðúð¥JÑ&y÷\ÇÉZ¥/ÿO ö£Yï/Ïu˜¬ö¡yûñùµšfïMÙÀ€:^~bƒ}Ï6á Í9ÌŽoßšwëë»õ‘òk\†ÿ³uc‚3Èû­mšßãk8¥š×·ya ói CÞ²ÕÜãs>Šy›×lše¾|ñ?Ï´‹SÒHc/n€¢ÊÚ£ ñò3ÎOY˜¦k¾Ý?åá}tæòçv_—&´ã]³œ2?£CPÙ²õùu=?cx‹²àˆ¯oh}*Ä€ƒ ˆãóz¸êëºìk\ õªY}ÞµÁÁæ™b\Ñ1M…óðx>¥ï©gwÈ¢¼+ch|) ÔÈjk×?›–jÓ͆÷Êvnt‚*M©žÊ¿-öþPÅÀ¨6Ö¶­%Å@ΛÓê·öñl è-=0"ýÎ\ø€îxž-ž\,ði¯òd4kæbÇá§(ÞX-uöÿX5²dË~Oò¨—Àwiå?ï‘‘¨d¶v:>÷èD–K,vê’ß#½W ^l"Y\”Jë+Ïj›uÆ“Õ4[³¬Î³ç«‘¬lh_gæLâ¤:³{‘÷Ô·îAº“¼D ¶°‘¨D—ž;gç¦æÖ¼J Ù?0¾ønÈh´•Ð÷¬ùŒXÇÏl¸k%ŒŸ­$Œ2¶•0#7sWÂDås:(b®Á¸ž@ëwœÍwÿvA6$+vWƒ“¤ç ;‰Œú‘>µ™E¹Éo2ñkpé"ó㈜PÕ öJpÝÀiT¬Àð?¶K^HŽŸe=I»#*þ–Æw®…4NÌÖ±oF£9‘;çÍïFŽ÷M™”Afrø ­´ Ê265Ù'-¤(ød½ãc‡–7ÿsr¶ŠËôâ`5Ìzþù$³7lX…‹dL Ò¹€<´ò¸pŽ%¸Ø¯Ù1 §B×BmÚ]a-ë]˜ØlŽøºE‚H ulÈmCE :Óäcì^⺥¿‡`D^îLîÍŠ›Ìèá=-fVqæÊ£û(™©Hz R-lÞGÚ^<øNuãà>©]{š8§/ßæ/ÁžÓ±=˜uÈÖ>åÂÿFLæQܘY*y¶ÖØÄ/R÷ÎϤ÷zö+¤MçQaw&YFç=3æ%þ)+ÝSUëóßé$§ïÈ2ùÜíPküÚ £ƒYý@V꽈ô¨‚ÝJJö"ª!XáÊÁú2Õ–õå _P`ÆS+TÛ%fê-1€áæWç§XÎÛ#ŽK\^+4BwÆV 8çÚmÉÞ½òh¸9Øê´£ÿ›ÞF(`ü8y-°œø¹q•Ùy§¸"pz:ÑGèbfcSDÚ*k¹(ªž[líA`‰áÆã[ñÂ̚ŎÇÑçV/w@yžŸS|ÉßÙÜJ“ÅFwioͲ´“[m_ ÖyÍ„ 7å¹åpǵ~>|¹ß}MìeæH–%B©c×ÑÎnR L9(Ö¾¢É»K³¾Më#v^­®¢,°;† q¥]lb“ì¶þÂDÓÒB]Úv.™²Ø\H‘·þ‰¹µN#{ ¾Õ –ıqNã-×çiC Á[øû0•w ‘qßolîÎ&É‘@ãÖ³ÍLüdã§в­eÏûͼ0ð¤sÎ/¿m¦¹äcA—™1ÞîÕäçX\„ ÍZ÷”%¶Üs §1` (ëEk:2_ØNkÚNíz¾ØáÎ3BN#ˆÝ ª8sÊ¢ô„è“‚NûFU_æíå¼+*{—Ð2#›Í•٠0F65X7ºr§‚{š4 ³¯ñA%ÿ“`¯ÝЗÆÚæp¶D»É<ø‘:)žN,Èç×u&Å–Î+l]Q‰h¶"¤·ªg•Nͦò»§ÐÍÊ;Š‚ø#ÑAAu¾ ÅöYcK-? $ŒØð†y¹ÎyÕ4™o[¯67æ¶#Ñ]4ôœ ‰èîŽó¹îB/†‡”©f1JÔ˜âŸh|p Ÿ>á`í²žDÀÈŠòÌi #hnãÈ`fZ²ëá+ lîDÖoïD8-;·×;kß°C -ßÓ€qVýA‹[+®¬©e—ßQ …^El\*·öA¹¢Ñ£tÆÐkš'¯Ôbý!x!I{Î2ˆ~#Ðë^ Z/ ÆÁ~ºÙ~xñ%N£f-oÒ¤¶—ø‘¿Çܹhh©E5)­:é‚hˆV^HíûH³@Éÿ©ð fx-XUËÙÍô¾afi–ÛtÒÞÉdL¤€¸¾e&[¢£sq¶™v*ßP¸23ƒb³zɾ¬”ÖxNõòç Çèvë+p&Hi„£ó:|$…cð,ºt”ÇÂdpt¦ç$Àà‘’C•^0·8™%̆-ºÈŽ´mhѪV´‹FPB¦†qgk"9-¦`ÆMZ;'“ò6¹¯•älЖ¼:·ÝÞ″ë“!á5h0'kÞ&ܽÚY÷ô¥Ù ’ø 88%å®”¸„sz³k8ÛäâÀà]`yœ8ˆ96|uògQ01”Ðjè#Ùï´8džŽñÇÓëF‰Œ“4ÊY…Žògfãºîd…°Õö u´fXóÏúĆŒ)¼­Pž!&±Å4yÐ Ü}a~áL~aÔ–ò6ÂäáP˜_¨™Øc-Xµ¯§ÃLÿs.o|êè1ÁlWêF ›ö':Žï©õìX#@è=€½u^vœ¤£nÌ­ïkë]º®í±\ ì/ŪY‚ÂÙ¶® ­eœ‰Ý\x¨Á>±žÈ”˜fÕØfvíih Nge±rZÀé~qAPŸ„Ý®ŠGke;Ån¤lRNvØã~~Î@î”ZÁIËNòYTK6æî­¤˜oJìÌÄÀ—þ¡ÕӷȧqSX3qû(.b„,•MƘeÆòcÌ6ˆŽeÔ€}X¨p¶í²8‡mxÓE29®ô]ÅMI@¤hlÐÊ›„ôÚAêh2|s:<^ô†¹Yñ‹ïÓk›ð& úÀÈ5ü“©¸v³x9¼T`õJxÿ‰ºL*¥¢ $–²ˆò*]+Œv§Š¹Ê+x“ñ®ŠJ¥¥JPr+ñ¿õʹ­«Ye*Úmɨ[³ÇDF·ØZYU&íâÿˆ…QUÒŽY70Ç7Á?<æ`qÿ>öPîÆ2áÉ ïn1®$“ºrF£[5ÆÆÔgœ•ECä!ÙwËÐÀha×5Èׂ+`½«ð (pǰø€wV¬U—IsO"Ìt ÛFãe=Kdø)·ôÙ¼Þ‘Ysl›VxÆ4ow`÷Üõ¦R·~YRYÍzwÉbU~O{®}½ë$£çë5£”ºSf=‚\»Wé`‹4¨&¹¬DÕTONê¹@›Qµðó=õ"@dº@=Ì·&Pß©ÚBd–Q@,ÙL1¤G¿²(!±Iv^Ê¡8!ü#mHÇSe ª)Ä(wEDšGá[îOm ª8° ]5Óš+gpä3M4ªöu=ãx„Mˆ h·n@àB_ºûv})Ø‘h o&|9öå˜ÉˆP+ø‰1˜ÖÌØ Eˆ|@Yj#N–ÓûW-#S2>qf†‘”ÖÙý°ÈÉø€¬óSðæ‰à n/ù¨I3‘Çé“ïÇÄi!»~+ÆÛo›A:€!«`ÌÆÝ²z×qXžSš)ã,6¢´Å5;ß©Kr´3|6wIØYMnXFz0†„‚DÅÉÏ{)?yð°[”'"ƒ´ç–  åµDDåBçN%Åqbå.•¸÷jœó0àŒÁvC}ô5 w´áÖ·Íp 0ÎÍ2R'4h7eÂüýn©ˆ·ÍÔgºñ¼rÔ«e% yÎmbÂѼø>¹mç‚ jX÷+00š¤ÕÁ"m«ž¦„ˆ:'IìÔÁYîô{m€i%[co¨‰RGŒÜzǼk °`¦Yï^GR‡¬øiFꌰn¦Š©¦dGh¶bs_Raq*”'ív(6&÷áý|Ô¦á:¦I6 \™~ï_œ4yŒ›§Þæ®%툿œƒÕÄXGu‡;‰º^¢Ð¦Ž¹Dážú0iwÆÞ™p[ÄMÕ’MS²»Š+ÏßG!µ+)ª4.7ýL]+fbÝÁ qò–Å$®·fSÛŃÖ}\z½U¢ÕÝ^(œs —âÅ.4.·¸„ˆ’œøÞúç´Ø–}úâ%LÝË zJÊ‹ÁL>÷BXÍOaË›Xf%eÑuô ~¬ÖýéŒ}ZñÖÒ´“#|(W¯C•¯[“P±óorD`ëË/YT,æév¥ö Ó8S¼¸Ö¨õæH‡ÿlA˜˜Mñ‚†FŒ´?(õ ú†í•3ÆCæäs˜(®ñzÄAôݼOtß1܇ìÆ×ÓÝÓ˜Y©–•HfysYv„邃Ïq”Á´‘¨'`Q­ ž.½ãxëÜ~†~:Äd^Ã×Ûú@>ì ŽÂmnE (÷ ôñlÂÜ]Ö³N »3 ¤ùæÖ«#ù-Åe÷ ÅMhÝ¡gÛÚ,­xD`PÛ¤.ç|E—¡…›6ºf˜k ‡nËZË9ð‡Y_¨vÅò÷öú"ÁäîIçã®’Xz~OÍ­Þ ›e×…0õ;E™_0”á²)`Y^± Þ²ÍdêIÈy‡—°‹mñ†*¤æÞǺâ0Lh¨€K^NP¢·{ÚÜ\QÖy¨öþ˜6ÔÖe“í nŒÅŒ?kóMÕ¯xD‚®¬Ý•‹øi&rfâÈDÎá ­ÿ ß*«Ò&@×] ¼Á3+*·ûIˆ˜1íŽ ñ­29èýûÞ0(ÄÊG.ËýgõäýÖ@nÞ9\¶^%¿~ÇHB}îiCæþ°zŠÌc‚’+™ZyZ{6©xèC¼Ñ ü…‘7Z•Âs*ì^$L(åSx•¦'ñ*ié}¢=¬ #èïÓc²ó”¢“ ×j¶©»Ë‘ÎÂ^çÉû¡‚­ê†×>ÐÚ— Ð Út¬‡4°&sÆ•ú_†´Â0*'‰ÿí’µ‘¯;™Ƭ Ê2q±½c¯(Ñ Àaæ‚¢t–òœ{ò¥]ËûQÞŠ¤×K…­Þ÷ꇡõ 9E *ÖOcŠôvdïRüÿîCöAƒîBÊ;»zSØåD½3¸õ ¿ç¥Âü=ǓڄҜΒ4ÝÞa&ÝFËß–™ø¡ ÆòœoÚX…Ò…GâuÝYpƒ·F©Ç@Ä !}ƒ®V2€Ñ¬û[ñ­»È'ÆbÂüÄB»þ䔩¦"ÌåöSt¹–ÌÝ_Q‘¢Ù u,+}Ìâ•yÂäôñs…åûàHmi°~ÍS„KýJ@pXLäûÇÕkÎ÷éž:œÍðVXá>3Z£˜˜4Ég’·h zÃ`ÜÁjÀ0²fëîi‚¾­×iНm87Ÿãèúv"$X™Ž! y{ºðò£s>"þ/Ýí $㎭_{O‡£h¢HØ a ô{êŠ+‡èaðè÷“Û8Œífn`©…‚?\`¶DF¨6;~…àš‚U+2ÑkÝYðéù%3B@ƒK竂ƆM°Q ú¿$W?ÔV÷†:¾v¦ŠçP•PDIl+¹Œ|¯8 ÁRé:¯¢½ñWÞˆ)=ØB<™ÞÀoPnx[~Hy0(­h vY¤u§$~ÿa¹Ó,¬÷ xÝÎ-e8?L—Øá.…e†.VÖйó—Âge4Ðýú³Õ>Èì`Ê‚¹d³©.Õ=e—Òúžä÷›ÎF¹ì[ŠW¤¸Vã ®o×Ûi1Í`­°?r3ë5±!H€¯Ÿ?ŸºÇ7x9ò·t~ ¶NŠ]é+Ü+ÛgðäÝÑOs+-2n;”–) Eæÿɽ|C7éÎ#á‹n&­™czHÞ•)‡Íïp möf“2ˆ»¤˜zirt,RTÿ‰4{ÝóèÓ„iMþ5¤Á­´YÕíÞ¸¶1ÑÞ K8æl~EQRÓÞÏèVÔ­atñ®•”?Û…Ö1žºäLÉÿH»×\ïJ/I.Q9˜Z»±»eu¾§̇õª§5nµYþàÌYô/TITúÇ Çˆ`¿8¸M2£po=ÕöþA) ¢^úýh˜ÝP !7ædòI`f‹à%yG ™ x·¯–áÌsÖ.w®%Õÿ¾E-g> stream xœí]IsÇ‘¾ÓŠù 8>LíÚ—ã8<1K8챘9È:ˆHjD’ ÒæüzgVVõËÚý°0|˜ðAÏÍêꬬ\¾\ªðÓ™Xä™Àÿåÿ¾¹yõë?ù³w÷¯ÄÙ»W?½’éÏòÞÜœýæHy—è”3g—o_Ñ›òLJ¹¸3¯ô"¼>»¼yõÍáÇó ±XoCP‡ŸÏ/ä"œñpw~aÍâ¢0‡ÿÅÚ§ÂáM8¼I?ðÂ~¡Ç" }XÎ/|À9øô¦FnÏ•_ŒQõØk6ûø-£é»s¡MôöðáüBG³(%<|ª½‰å=ãýኽ7™úûD’¶^ùê3ïpnµX«÷øØ{`½œX6 åTùw˜ÐÞe-L·Ò—¿¤Q÷´gÜá-ãp½2!dMÇûz•:j|¡"›'o°6Zfº9ÛŽ«IOùwzã*ï鋸ô»óo/ÿó•2q Äëò ĉM{Yjtót%íÛ þüÓ9ÈžÕÊpÒ²D"_àqa®VÞáv"eV»»ÒúWvÕâK_‘ ÈË\4šv+-@ºÌ‹4âíq?qùyý—ê$±¡™fýÒODŒRðûc'­I¯hÚT‹àbËx 4*WL³[øTÁd\»ûÍG©g[?2ÛšòE{ø†PÇId¼íø‡ÅÂ{¡˜žŒGèG6â[á§ìá5[._X3a´°ïå×´ÊJwîÆ ùDS‹ä†Y_E²­ÁpN%Z==ÓפUÖõõE­ø€Æð"wœUuEu»ª¥Ã$Âáþ/šD°×Kpš+È6úÝñ1Sf,øÔLŸ¹7pO •yâ¢ñŽt+s!)—µY¹fư¶cFš,'Ÿ~¶oüùlüÿ1æ]ãì ³Ý2ÌFêEKîú¸ÆßœÃ¾Ix då;ØÐnN¢å;û–Ö%BmHÿÆ„ó!—uAÎÆÇP wSŒ‘ïÊkwÜyަAÚ%„Óõp%þžÖgem_ÏØÀ¨ÕŒ~Ÿ·KãÖn™”_á¶V9‘-å ©pMá¼ä¶8ñRü·(3í”1{oVNkU¬€[ÌQsÀk5oY’6xâÙ~&>€ï¨fa#øæÜê80SÂÕálà,æªñ†¹éeêÖE05áJµ‡ ¿þS„@f‰É¼‰Ït‘5D]ÚJAé}#½“ˆ!.¤T`¥À§ L #Ès Xƒmx*Ë&Ið€¡ò=›ðö8cïÀàŽ«l5KZ¹6˜÷Ç7QaEÎ;þù´wÀxZwÔ…%F¡Î.÷êòŸ¿9\­S눔™šm4Âi¬Z;ŸÕS¾ý?Ó7„‰/˜%šìÌV3Ð5†@Ó’$7øð;"l™J®aF‰%Ø óC*®Æï‰Q®=®m0Š«.Ÿd†Uî²gX¯tQ﫚 (Ö©&TÂzÃ^3må‘&Vëš Búú½¬–¦`™Ž|/¾®-ÂE¡½Æ‰kg`¦Ê&†(¡Ãžh îqЏ´¦¾ÑFeý"ÔLwhJó1²²uhé3º®Œ³·ô¢ÒncÎì0è)dz¸"µi4뢤oÌ> âé¡ÉHÖ‘z„Y§ {rŸèë9¯Òh0kEÞÎ/qÕ†[ZŒÔ•â+¸ê%,¹@¢ˆõóÚ×!¯£žnâçÞ¿vˆëÝÓÇyxW ¢õRÃfØøÖ\”l&’‚[¬n‘'<ŒqS…pˆª­3·Ú¯"íÍ3šþÞ<§¹G(äI¿3ÞÑAt“[¦ZF9ÈÉ8Uá´YfÁk°-êOà!M½É³u®0? ±¹È™ .Û õ† ’_Aû´F\;tqe}5ówdrEmЂç¤I Å_û‘‰üGö{Ƴ;!’kw2ÁOYï`ª5ÞL’lj°ž>=4Æ÷ŽYÜD^^슦&ý=~R¥S^Z” ã– àô\€¹ÓákŠbò€Ï·VïTR¤0ÎòàeÀø‰»åñ̦SãIÝ4újÅX"Ä¢ •L[m &ŽPz @¹T3Õq2=å.èºð E68Sù”^1ˆþZ18‘\ ™pÎbfNCQŒø^Ú˜ÅGµî``ëEØæF²ºÏ° ¼Šµ;æ9¡Ï”0ˆZÖ; ŠÃ~þ*Š™á|8eònÁôÔ„o³ÏÊ(‹8½øIü›*ëâGã]ñÓ°ëܦrè3Ò1W ¬ÀòÐdP±b‰A Y(Ѹ>W¡"Ù/h nŒ´ÔÇ×µƒªá.fóÑ*áÉÇëÅxS I[ë¸ _ýNÉ íBÀJ©†È<¤¸ ÙLιä™S¦Â‘ªƒÇ™‹¤—Vgì¢`îjtžÄa0{˾͟ߜk ~ZfGÜäùÀ¾]±Ç×çÈ9T.,P”ž—‚`òˆŒ|k6שåaoec§62$΢ß9ŽÆO‡š7Ò±ôâ´¢^BFž­ŸåC'5ÙD+؆ä ÒÑ]..DM"­&Ú©ã›®…ò‰±NDø7ǯüºÑøTñƒÁ6Tì»§µ!›ìošxÊiîJ™ÿÌÚíôá§è0ù=*È –ÝåèË®m’óö»P)aµÚȧÊa*FÏP,­ÇAVd<lܵ§¯ûEùlrˆ«qàØŸ$ˆÚa|¤+¢ŠôZ<Â!*èN'V1f…¥ñS\Üç Æ¾ e<÷F»ʿңº—ä¦_íÌbU›tOß0v[' yÍÈfåß1ðäªÅK¾lòœ{ âjÉŸw&¥|”•¨lTe8Uªa(Rв˜é(¥]ffaïÆö¤©e‚Š}jCü×ϰqŸ9*ÆhWÏ•ã„-TªÄÄëäâÞÓªm{"N(ympצ´ÚS¢šv9Q3…AC9²ÝW™ƒÚ·9\,§ú8‡]ÓPj[¨–Зº~£ø!Ÿ”v`H»¤]®jásÖ.¯¬NÛÕ®.™ÛØv\h 1c˜fóz{›KD•½@»}éÚLÕ ‚ + ¥U-CêxÚ™¬ƒÑU l¥VM¢|ãj<3~ŸijL‚äjuèöeí³ÄÌFY7-Òé(ö#Úaõ@ÍõãÒ%!Ìš³Ë2!üï|€eeå#*0j.J´ºÍf½JñiŽëYÖÚyLD¶–S- fô#ì{Š lÑìš‹Òã¸Ý¹ Ÿ±Ò’:ÒX¿ ^Z˜_?"õ,''CØ"Ç8…“{.³CÎó©9#×ÏøÃ_ìÝlÕllü>J·qVh!¨{û&V]å+©ˆècí1‡2žýåœÈ ÇÄIî^†Z4”¡¾5mÒýÈ(Šhž'ç¶‹$ äo ÏŦß_çrM°3|>}’³<ç'ØþQ±&—¼E”Öê`k±ÍÇï4»«½_|0‡¯Øçg¯ò~a®Õ^/L#B•gÏUÕ ¦^cØz>Ïëãb[U{º„Úb ñ–Œ Â⎽?“L ß¼{Ú0´M'@Ó¤>šjK\‚xÓ€¦a^ïÊdpDD× ñ@ Ûî"ý„í=å¹P±™ìNfÌ~q_˜ uUÎyn„wÌ7tÃS» VºØh%€ÐîFd·qzT`fÆ;ÿ ø§wÆ0¹hΠã²s?ƒ=V¥¬é<Ø¢ƒª^îh£ªž®`žÜsÕ/™jt‘9Ï)í+ b[¥¶ã+fËõfñóòìOZ°¤Ò,à}8\èJ`l”Û2·Xøxà,M"¶n*}Òy*FÞ=ÖÀŸ/GZƈ’ÿÿ• ¾b?°Ùïç(1h+dƾƒ¶B5Ã`/\bЛ¿íó¥v­Z”ÚDTÈïžZBÀYbŸvÃÇÔŽ˜ àjxÂlbhºþ8ŒéÉ;ê«“WoóBÌœàë¼¹.V˜'Ÿ¥ ~ fÍÒ6ž$}0Vé#îúBFªç“PHç«ÎJit>#SQ'•ö‰Ž‚pÞ}ı<”ÒÈ#ý(MuBY@p_úË¥© .RÄvbÒ„:@÷9.$Z7;HqD Z¶iÝJ¿Îý?n¥hÎ!Þy9?¿6ÆOo2lR`7W ÿ…æ‹Zm…¹iÈQxº› všls´%çìŒÛ3ö°ù2ˆ"¢ç(*5ðòéàK áüè«E½5Á".FÄÎ’Ác/U¥Fw5Ž–`ëõ)£¦Ë°MäÁÌVé6lÀ§ROàžÖ팵۴GW& š­ªLF3-|ØùÝÈ>ݱU FaõôiõF‘Ï+n¬¥1ÉE}vâ6'YA‘¤fª0“âɾ >óßü,ãVì |Lð€p¼yú–Ð0 Þ/ÌœÆ#j~ øƒììIè<>ÿ¾¥|Ôp_€ï '¿§xÜ•&5ØßsHzÅ@îTSŒ6wDšhÅzf(B´*ŒÍæÎH9ÀçŸØb–%è0I–Ï“ˆÔò~rqo;?ÐW7 §ø}ûTÄI«ˆÍiø£ü–†ø6i¶"ÆCnŠîiü9¨FòV7–!ðÏQÃ/å€+MÔ ýå+òÿOÑ;`GI´»,afo]i˜%¼¦£9p ÷0Íò÷›ÇŽòbæwüöd˜*1qOOÛ¶å2ØújŽ (À´ÞGä†ÕL{J¬óŒ4·?ÒäÛù¢õe§¥¹]{²Ÿ†M‡PhzY;Ñö «ìéeµ•ð%šTmïÎŒ=l“Pä~-?Å/ZRÃÏJH³n®mß  —­"‘ŒØIZ}fÃÖú]Ÿ<ß“nïR¼W6@þ¡ °cØÞ”†”S}¡Ž™fùñ G¸@ÎYb!·úÖÒYtÙ }**¥°ƒ݉ˆYoPà-@ËqüCz<ÜäC¨ê1$Gn¯þã¿9ê»ø/ÌrºM>J.ñ\&Ã|<‘ËãÅŸÙ„9ß*°£½Ì¢qïá—9þᘽeð”õd>×oÐâÝÙ¼ûa´YŒÆv}q †=è|x|ëõŸcÉHú¾Ÿ7ÉéY`9st­èãow*¿¢Š©ékwXuî šŒÄYßµÄ!O°ûÄK2p»}À3 YÏ#ë6+Ø\ÚìåRq_c}ÓKw·D)0‡Ú¡6¥aávM/uw°äO׸pì_å×ø´©ØNr¤7ë9ínòi“œó»|àÇÒœÙ;õ*ÞIºm‡Q57N“zŽk—ê;XyëlU²|¼¸ôžMR Ÿ¯Î¦ì“ÿû<èEÅqÿÆä˜fjºß¨ÿ̦£MãsŸ×4À¸Ñ9ûG\)€è7b 8½1„;Û™MšegÝ „ö¬¬I¬­)l¨Å^CÄ1",:v•Wd„ ›gT¯B]K4Y¬œÝ7ù@@¤S—jl£>˜ÎÇ-úóØ%èõJÅÏe]³bÕJ§©”Žû_ÏÆ Ûö® -e”ö÷¡eòëOMñHÊ /û`,~‘²KmA17Ã_‚¶¾W¡là0½‘«÷°¤{êÉ(˜%64wD.v8n€‹´¢Ðj/·Ǥ¾ À/‚ÉÛS #úÎCà§ù•ˆ¸º(jWSUW©¯Î7†íÓXùkµyÿÇöÖb.£“k`N8‹=È9`À¬š® e9(R¹ ›TÄúîx`x‡§™9H¶2>ü$È›MûûûcLŸ`OIõº+e’ïæ°%“8€-|¼±Y¨ %^qÌñíLþ.„²b–Žâ´?½6éLy˜æŒ ^Íæ}-·³ð|ëd•ó‹øâ«ðBœt•Ûó]0d°}åÆÄ®â¸}ÇÇcÌ.ò_Úr,¸!þõ§&W?fœ! “£æ`ñ¨ÇÄ”ð /¥c–ÇêrÿŸJâoËU e'Ç× fÌBKù‚½óMaÁH¬´ÚKÕÓ¹8_×ðKiÀ©©°sEáÐ74£õ·{®¢Ës?ß±D# ž›jÆuþ¤‡NkX¯.}Ûˆ-~ÒúwÁc3>¸´"I¤%AFªôc³Ùðìø£/r#úÂ'g7µägÚê\›øÉ·£n&ÏñÏLJí?ÒWG—Œ¼øC ÄhS;šæë¢ù~uо£5`åØ}¬SîÝ5 µïç€mwx`ßëÙì1žkZ×|*Ùìß&hgÄJÀgÒûÀ;yùï8iÈšžÞ̳é“G¨ƒ#J¬Jw8ûì¢ÊEº©{uW=á4„w,?àš<1ÛS“çéøçèž¶HgañŸÛ;ÎÓoP~wR<ÒAì:ǧքDà|ÖJŠ-Òܯ<¹_ÍÝ©=ù[F ÿì„ Óø¬ñ iͺvöwç럽³¢5Ú8ØŒ°H×.ÌëÄŸóu'oOsŒÄ{@8S˜ïÙ¬çLóäÏuéä»xFÇFÌ>Û æWPÈ ¬ÂµqºÆ{Ê\ƦΧ ÆMc»J1ÌÛþÖéⲬÝõßÕ}¤}FÞj:µjŠl0{C 41È™Ëëë,í¹Ä{úbhÙ¶ÞT.Ù%ÿÄ(ó¨KJ6Áx—:rÿ'½¨ñ/#ñ\JšÎ£Ûä. ¢­–ù¯&û0ÛØ[¡Þå?5!6ÏaáŸUPÒ>i™Âv Ý¢fø’^ÎùR‚þd„j/¬,(¯Sfƒ>ý²î´×¥’ÝNÖŽŠgK xó§ fu“¾bdýfù;uªí—¼«©-†2¤xnGåžÝ˜š–rÄÇíuW÷4p©I@‘“¥ôá:ÓôÑúSN)šÓ¯jÿ7%>[¯‘MÅÎÉùÌÉyƆ£å Åþª^þ]†?;}(- \uvaÒå ©Çãúÿëå«?Âÿþ /L8endstream endobj 144 0 obj 5522 endobj 148 0 obj <> stream xœÕ=Ys¹qï²ßòÑ%Ž7PyÊáuΪÄfò²Þ‡•¨c‘Ò.%íÊ¿>}3 0ßGñ“åÔn•† ŽF£ïn€?^Ì“º˜ñ¿üïóÛ'¿ýC¸xuÿd¾xõäÇ'Š~y‘ÿy~{ñ÷×Ð!](5%çÔÅõË'×oH¨¯=kWÃඇÿé+¡gõ©p`à~ ¦‡¥Ár² Òp=P¿Ç'ÎÊÆh]øEàEŠZkâ*Õ²Ž÷ç‚Oaå(aÓ½`x•öÞÀÉtC4Þ€@§ÇŠ >>6ø”„ÂоZ†9+ïŸÕ VCNÔԗVC唞¢‹¿ÐvhŒq‰Î}&è©v…Ù5Åœr`1Õûq9ˆú”1m9„¸ñkzRZv)§SyVðöTm@KŽ™›Ø €ÌVÁU/luÄ(*cŒ™V¹L¾n¾g@¢²çf‹"§i™O+°Ì.y_µÕV;ï ÙwìÉ6³5­ºZƒ í}£M 9L¡ö@šIp ³±5GPǹ®}Z´Â­ýy•È'ç_ûï•ÍïÀ‰Ð¦õY`bŒÖnvŠš£+[ˆÏd@uÕ¶ зVÄó¬ã# GhÝÜAŠ'²å•höب –V·r¦õç_¬(Ë&MŒFö=B›DðÏIF(“ûžyƒ³ç oeÈ’vä·´>±ûÜ8êÇ¢dã †ÔöÍüPüŠÚã ›M×*®~nøì¸(Ö•€ggZmFm†”Îþ¾0òCEað•F%9ú°nÕ¸ 7:«–`ˆ1Q4ð¬7¡ó-O"!ËøóÙ«ñÐVa‘‹‡`BÅ"‚Å«¤ÜIñ€'J¢”úF²Ëû<Ës¯˜Ù­ámÕì²!Õ ?ƒ­Xgÿ$Kì#÷‚ô#S¾qŸ ÆÁ¢ßQ,’JŒ¶“·~ä±Ü0¬ª ˆ¼åeÔŽÏ;ò’š”aÂq¥ ÎÈ›¸¨ñöÄX¡Á¬$ÈËA€ºã‚z¯÷÷ŒyÀm<Q[=ÉVØ<¥`D0 àdlÞѱ¹X8=UýÑ@ò(qÕ‘«ÌÝ•E·à£cƒSŸçü=]ûd37^Ç j‘O8Ç  ^Z+ò[‹gãéJ²Ý‰FâìA£¨/¸‹OuˆI#röQdyœ3Ä•ùý’[1ùqv›j/¢à+z¨&6s¯a5³JgxãZî|'å%E2¸É$0`´›Ô D8ãt8gß5—Âmˆ¾œÎÖ8̤˜C@Ù–é¶Ém²›ñ2’‚£àÈÚCD¶ö’TÒ¾#âx]_ƒ–Î(õaÆY§€/x—ˆ #èr"Ü·…žG¼A6úµK·±J·¹V£¬ŒÌNµ,üít’•°ËÓ…ÃUJ Î78ÈÏ`Œdw $§çÀ¨ðÑ+P;Ä7Ñ»™SJY(¥´VÕXªxQ1zðè¯þR)‘É¿ <€Fr&U߯y1› nhŽšüqD|,>ŸM“ ÜcU#ÜÜ+t³PÞ¦] Þ¸s I&“ì¶Ù&±ô>í¤“þœøÙº)f¼ WïÖllX½òPFTîêgq4ÈÔq{å'€0 Ûx´îû¿ÔE+µ¿Ã6j2R°ƒò°ü S6•2±XGj—.§œó¶Æ]/ër’|] , g¦4¥ƒk(#²›„öN6”f„éÅ^f”XCØiycfÙqϨق˜X ­Ë –„ÜmQq9†F®È¸VˆÅ¬òY†jµ%‘‘ý ø\0J1÷Š ;RôuBJ¿mc·RT¡Š-í²†Õšü†ñ ÖV¿~Në¼}±__%÷Ïb9*“«Ä&8—ž]õ)•Z%,óbb )ä߉¯y ô |{iП¡tãUo ÉÃn™åótëç–öV©)nKÀg€s¤bŒ9á1É’¥Dã {Ü‹×g“ö<][׉˜±QíI{ìâ›Ó™ÄðzH–¾©C»u+‘]r† :mSŸB[üÄ[ ³Í“í¸ÊM=KƒqléRðwb²u†œá#h‡!ÙÝ2Ñ6Ý6r2å9ß²,OÁ}XIf©ŠLó¥jx¬T•Æ®´šßëX»Òj–}„ìýxi`¬ð¢ïÙ¥_R`ßû^³ŽTÍnÀ?»ÿâ/F™õÙÄ ÀnÅà#îæV±GŠî¯MúeäÜ¢ˆ™À'--)Ö £ä—t•DS'vK)ãÝ©Z`b&*SbQFÑ…,ì§¼¶UHâIŠ@ÀRK„ð×\qfIe7:ŽD’>]PÑUö±¢êšFÅäWŸ›D•IÒÞ’ßB­öÛÙø©³IåÜ&æ:lµ(eðÜ£ó'«½Ï¼°¦ä¶ÖC¹-Uæ#z³è›ýBE¼ ºaÇR‡\À¢Á(NUÁŠQ}0]“çÇú~ ØÖ¸¾°©Þ0<¢ŠÖš°wJ›šˆzBVˆªt•pm (æ«D8eÖX;¶bÖ·"ÃЪ'&K½­ß®s4ÃËeR q”óxÎa-·FŠ’qmÅ™0chûÚ¶\` lyÖ-i˜0‡Ñ§\%‘ÀìÊš—Ë©ASKþг[=àü”o×ôÂ@Y8hßË|‘ߦ©y kh±¢­.ãâ#™ºðékvx@*f©Ç9}<‰"mÂ}»wæü:nÀZû½³M—tìër4_ZÂv¢ê•<-šz(o‹Eâ¤í’æn«9ððbǾím´R¦èYuܬ­‹<2t_äáSöµmM@m%FÇI.W[+¢QõE_ëoÒ”˜OîÕ˜ÐYÈ×On‰¹Ç‡_zŒH¶¤Ð´«M FÃn|ªXØ|·*հļܙÄàèZ’À`vè,”#ìÕê~„}T<ÞŒY+£8ÖNù£c¡v­þRn×ñ”$8Æ:úÆ5ùïËä¦àýÀÑ(”-B‘"ü…Ì1Ù*KÉae¼Ê¡MÞs;0`c›.4?7ä†Ë$ÿ€»“›u£ Á² Êé….kzTyº¡: ÿ¥„æhÄ­m«:AÛM‰vÛÉG µ¾PÀ 'oôz?–²·Nrç]Ûw½Ü&êK‚ kãÍÑË€­I·M 2p5Ý?â®r:°é‰f9ªN6 wYö¥có’ûc}×WŽÜ¿y" O7'µ_Nå© ïCos":0>vuv‰ó(û0®­‘6cAulê}èܿ}/B Sª…{'ÿŠ8ë” õ®Ëð.MÉ—; nˆ¼‚¿G…xüÞÖ[ÞL‡¾H#ïzÒ¨=ÛFáÚiç5É,É;©ïOz±©'³ÐJM¡È,®y¿†ì’Ñǽàwï}`[(kð;uk“9ƒ% ¹¤sDëV¬æœ‰1N( ‡ÿ¸¤ 1¡ºs"™#®Ý×à"˜Ìûæ2â­çØ«w.Ž@zã[qní=ÓÒ1`ïw¢ Þá´hØ=Á×AÐ_ñ=o¦.*#è†÷f‡†Y95ã¤þÈ×7xéºlvnÍ/ Ÿ-éRÒâ`è=¿ºÌ~²«­ÍÙTï Wüš4Ö€º¶<¡‹qt¡UFøF1‚ær —sc0`åšlüÐެ˫p,cýæ–$ž¾Vtô¥VË•@§C/\ÛÈf« xÌêÁ)ô…îhï*ãF ÌÏÀÕ†N}SØ~:ââ‘Õ3ªï»áËôdùöAÏÄçûGø„/Á–Vä[|j˜:^zckA+xÕ§¼üP_‹ŒÉ ù’« 7 Ò(Åø>¿ àŽ*Æî{„ˆtøG„Ô¸¯oÄüêò 7´èßÔæg¹Õ÷ñt¿ÃªÇþβ©Pw-d_õÅd)±¾hb‹ÄGá"h ï`«79 Òº.’ OMéÿs‚ãj¶¼Œ`‡¹ÏZ6.›÷cðª½_‡¥0HsøWl0̸"ßåØÍœNv¢?3òXêV¤7ë„ 'á ÇL‘9ü›5Xm»,n¬öa¿rEÌžÆ4"&ݽ„±0)ÇE©Œ¬ ÉÉ7ÛÏ,tÝ%8 œ.øñ ]ã ü²³f”»üD-ØBÿE[‹Ê30˜¶Å*~Ñh‚€o»°‡vÉé|Tʯsñ:°¿wqb}C`ps(O¾:xûl®ZžÍýZ%º˜’|oV>x{·6¿óñùñ«µ÷ü°-Ú4?ˆeè½[$ÃÀñyNq5Žôù-]ñ˜m™D¾ŸKkæt5Ðßn¦œùa_ +½$dg|µœð–{cXììvOSªµ}øj/^R<öj/H ·:X'™ŠU§æeLµŒE¾K´îÙDKWÂð3azõÙÒ:‚læÚ &Fiž‹jµyPýZ{;YIù‘Ï/” Î2ÏÂèªkE«ÒPoŽ,ŸÑµèALu±Ç†k'½¸š/ÔŒŸg@²ˆ©5!©yž‡1‹Å÷”ÂΟ¡qŠÙT¯aeƒÀ›@lý³µ©§°ãJ2Ò~|&Vë¨Êß‹ªÒƒ¸LðmuJs;Ú*Ê,oíðúéiXM—E·Õ>.!í6 ã’9ö:ÆJ½eh©æÀüû_õ–(£?Ðè-I×2p¤n¹^OFt·âØÏeö¤¢ý’©¥"‰ÂV*ošîeT|ê%&Õ‘Š_éÜ–îºýÑ¿õ DV1týd/0 Ç ’ïTŒ7xyxðx—€‹ÍU —ë&JÝ–‹Í¬³^]SÇ¡8ÌLv¼mï 0Ñ`¤_RÃËý²ìq˳ÅqP¸óHÒ‘ÇM—¡÷¼?ëZìOk³-|5~}/ª®(ÑÕÝ’‡98'h-¬ý=X‹ã‡™Fw/[÷ió†ô†Oy‘ä&ë…ÙæF³ÐêR –‘CvÏç¼k#w€|Mª„É+¸*-Ç%Ìm‰Ú ÷X»z:\ß–?%Ý —¥çÁD¨ÙDº]B‹A³jÚšN¡ªqQÓ{¾Åggצk |–¦„—CùÊtœÜåÚ/Ž ª­ íþé†AñncmIß÷.SS Ÿï!~ÏŸ&ÕI—nàG>ÓC“jÝðMO{4ùÕ6êÞ«^íhÅÃßf¾Iøkošºv¼7jaWdÞQX­qV…Fê'é-:ÕÐ;®­¢Ø,;ä›fµ6ÏëçÓ ¯ð¾jsð¤›:x§*ĵznE›~«#–ǵ¡‡k<'sÂÅû<¡MãVeyr µ‘Í€û¤ žøáï(ÑñéHm°}ºDdåVov€KC wþV¡xÞjÂëÜ{×ߢlÉ åH­¶8½¤¡—(bX?òjã(i:f^áJ=Äs¿ý;‹úlkx?ÃûÅ‚f³0šÇùë3˜²ÍK÷—ô*%0ʦŠšuãbÜ[YHsË›™ÒDxÇ“›Nå` ÿ¼Ó^@ÁRãÛÍ_#X¾—¶S±uNª¹KuUtûˆt:ïÊ~Ô9M…íT È/F•;¦`uïÝG9ÇÏŒXçOx4yÄN5ÛÐv—ú¤b±&ûéˆ^®µõã,F åš  ¿±‘?Ÿ¯Ÿo—Ïžïx¥¼fn `\ÚÌxz=“yùÄñ¿»~òŸðßÿböù8endstream endobj 149 0 obj 5630 endobj 153 0 obj <> stream xœÍ=É’Çq÷ Ä;¾Q`Zµ/ÁÐeY¶(ZäÈY3žÁ€AþzgVuwe-Ù¯g¬àžzUYU¹oýãALò ð¿ùÿ/nÏ~ý­?¼z&¯Î~<“é‡ù/n¿½„Râræpùò,ÿR¤”“;x¥'áõáòöìoÇïÏÅd´ö&ß_ÈI8ãýñŹò“5Â_Ÿ_ˆÉz‚:þ€ÏZ[¯üñ'|6VD¡×éÙ ã_g:æ™g^ÈÆ8ÿÔFŽÏÎ/Lp“¶Õ¾›¼%µ>Þ_Xe''ÝQ­òÄõ k9é Â2qÚ‹™¬õÕæÍ8u|·v’ðøüüB…ɪÐç78ÚÀb‘îo9» ¬Å Åä=@–k Ò‡ã«eÅ7Ý«ÓFËãt~„Ÿ¢ÕÇKøZGÏbÀ²œ^tPxϯÊÛëCp˜œùÝŒˆ2>5" ×;/¤­ÁŸ&HŒ ŸTÊr Ñ­wª%/.¤‚ƒ“ú·“蔄̮LjÎmé —•“¡ä4ß½Ñ>T'3_¹—ÂÃù_('u5ûë1VŒHÇ;\8.þ]"‡`ÃWHç›òö²¼%þ­¢¢ß_žýåÌLÂ>7ûÙRBNæ€Oúp ÿÖj ryqsöËðôáÁ“ÊLVùÂòfpÞ ©þuyûÛòø¡<þPoÊãU™a›Yž‰¸ò ‚íw>º¤7F‰û Cñä ¸ì'mdÅö¢ü ù;†¥pD! ¿™‘ÓCy9t´Ýë4…*¯Ÿ!ÜzŠÊߎ¸fÍDp5#õ¼\"Q™weá<^vP¦ïòïD4Õ†)ämÀÄyM†Ì'iápæá68“éß98ï˜éßÚ™þd™¶–a9«ª³$,âÞ ª„âX¼¾u y—š„<þë9l?úÙ`=øý¤a2 Ñ@f#HóÚ t9•—å·ŽÔ°ëä–³¨ƒ‘‰MÖÇyc¶8 qˆ‡Ÿy¯¹,Ú B¡#()_Í*d4ˆTÊPØìÂ0ò¹Xï@8¿%¿»!‡A ™žc­V€l5²9"ñ(úÏÖÊ;JOéTÕ8Cß¾Ì;0^Κ"K"!*ÀZyºì=Ó“ñù~Jj•þøñ$±ŒׇE […ZDÁd®ò“Œl¦>ËËXàœ”Iq )Y´Ù&æ—2XSKë› ”e&.Õ.îæ ¥<þ€bÊò1Þ‰ü !ÌO\‚Š£A:Õ ì+)ÖÍœW#:´eIÚãÿäóDtÇ‹¼=k‰¤;ìDäƒ'€7?åŸ9xùjÈÉÁÒ{x=ÿNı !¤Í1’= f¨ŠÒ÷¯Ž8a·È<í0VRšÑ¥9æób>^ø%Ã/é1PvÁi¯–Ë98z‡Z&èÅRV†ÊûÌÅœŸ|\¹ØXßGº]ÏÉõ4“À½Kx踒€¸]EšãÏç ˜[µ²ëÄ„(Ǻ!ÏdÈs²B™ÓTÞg†Ôäµm胱—÷ù„ÊbˆŒÍ}àØ3¡ä}®Òû%¯ú¥ÄÛ™–oª«Û?'Ù C\Áò¼åP#xÚeÜ”²iBò ºçži&Ò¹ 0þÝ䜮°‘jÖíh4Eu\-ËTÆ18ÎD_ù8¥«ŽóyÅF² W`}¯$Ò30Š3EA}6b*-†z_Ù$×pÕ8Ô€m$RBÑ)@FÓØÕë,Wåy–þù@jkšÞ=]ëíøR2óÐa¹Iƶ¡;þH¤Ò‡îÄMô5=Ö¾‡t‰§Ó^6Ú xôD°U”Õ:ŠÆÙ™; \€œ×›@¿Þ¢×ÁÕvn“¢$4çpª±áö®R _æ¬{ɺL+Ú\€ëõ´Gƒké€ÒÁ®ô’U‰>ÎK$FSöž(*¸I‚Õ=ST#[l™A+ÂRç% ÎDBöø%ZúÑ c«É‰2<àƒÅ”õg“¡®e çÂû˜]W"]òöJ¤‡³„P±_ŽÔ’óϺµ¾u 3<”ž(ÅNÊÂ7T*c5ºQ*‚$(J@¹Ê €°höÈ&Ðq÷|„ÃÔ„bÔ6 irúäæm€NžB¿)“»Ñ³ÞîÆZÀ ƒu-A®öþ2>¤w™"°ßU¾t[Á%_íâ.Yè‚pì·‹©M· ERÓPѸJc*é3lµ¡Çy} o¤C(^ OöjB/c²08úª0~jÒðC-—`vÚZ¼´´ÝzN¥ çP@†³=ëjúe·ž¸Ó-Ç]±á‹ó k` nËh<\€ôtžÀtðÚõØH^ƒN`…ƒå÷¸üð$!ËÛz…€ l‡¿fl(¼]™?wɃ]œÀç0ø†yÞP¢ð0„ñ­¹ž6£$XÅ k€ŒñŸ$†½eJ™÷U‹‡‡„’³t[UÇ!RÑû¥D¶„$DØã `Š3´°W=0B¤õ+ Â4ZsüO ,ƒe¨¥g­ù‘Ž7ÿ]Í#“Ü«N·Þj âŠNµBOJ^èwUE'”%Ïê…j,Ž ÒãLÃÝC*š:*G!‰ZE‰=ï/¾È”Îs:ýb’¸§$'&—°ƒÅØZ}Žñm®Øå¨R6 YhÜ€rrô³g¨ccÇP*¥¢aìå⢂=ª¿Ar=¼Gß À9ó´ä¥àB¨è?Sq2CÏíž8a0“”FîˆæPÙî8¡ëg’áæ`‡Âð`òSÅõÍâƒp,!Ïœ4‡¿+Pؾ-ÉÈ¿né¯e2–¬öÇòø_£ÉFt†QÙå¨ÿûÝX‚Â…`¬ü£ý,£ ªpÜ@¬Ðµq@•yjM`®ƒ  ®©¢jE$nNØR]4á]†5‚i¹œH¢OB¶DÃ¥4øE$ÚÀ…$èB9Ü—\Fm¸¯W¤¶s¶tràðLL•ѯdÑ`Ó…º jFBÖ*.ˆ%WÞÊ%´ 7œø;@îSñÃÖ;°?„E‡‡ÿ˜"œžŽŽü!­ X'{!Ÿná-Ñ»‡#9¶ÞßuóÛª ºè8ùŽåVð"óŒØìÁ óØØjxÎq¦m‡7Xo÷î ¸¦‹¬?i;PȤ°-iX8yˆ\Ôõ¼z4Pw³û\\5¯ódi¿ÅG†¡­ÌÀKóØPG┽-ö§1Î/,®S”^ùæÛÓÂÇÕn‘Zu±Ü{áìû[ÂrL‘y­–øpg‰-ÓûÍç‡Lv Ó1iqÄ$IêÿÂ"Ü5og Ýæ±Òë=ætæõšÓ¢<ºá¶y&ȇÀt„#Ñž ÷p–+§ñ’½oZˆS0¬á@ùF혲ê<ÁqG–JŒj,µå6Gf T¥Gkàœ©5ò;œ´_Ÿ\ëë4–ÜËÜÂpŒ™‹´5@D=$mj¿ú#ªåm,Ýв(( ªÚÖ¬æ(k™Ÿ ~Z‰f5¡FQùjÑù8TÈln”_T&ÔS”p`¯7 yûiPê™Û!-¼\Ϻ7H¶ ·<• ³î§ôTæL«…›ïP°Ó®È’­$®|ÈOl%‘rn…\[ÈXn1ñ6é²áíÊ€¦!dÃÜ¿Dêð`£™­0Txëé§œH@ t«¶)>÷Í^sðÖ²V7z„1×&)zÊ6ïÛ¯±S; \áŸ**š¦“CSRf÷…r+í~è¬l9¬(å¦Ó{YñžÙ i=Ó*D£‡ƵʾUrÅ'œ þ3 q¢ï(Ÿ]Ûuê;.Q†œ¶C%ÉZ¤Ö“˜–…ȼ[ÞÒÛ@E¬Å±ð™1½O‹‹‘Þ#6^ëž(O\´Ç{Q׌Þ'”÷4²žÞ¸ß˜æ3÷QTvÛ¿i꾞ch®ª.ª˜Ã¤»¥B;IæÎBÚËZîõ “)ðq•ç‹ 3eœMœãiGj÷˼åv~Ö2¶Aö‚&«îÀßÕ~}®LÄatíaúÎ Ê( ó³åV`MÀܪì ™¦ÔÂDçì%/õV]dÚ¯°¬UWsÎtzbË–ðO»ÿÒýÛÈ™†LD2sÍ’]ìq”Ú.RhD5DJÜ*¾öæ~åˆ'’  .*5WÇÔ_P‡KX¤„‡«xz=/cž´jͦÍù»hÅVÙšKI#»ÊÖ€+ú{¿œÝ W°ª‘f®O:ëð¢ã©cÈšK¬Ø§’füÔMEî ŒëOÛÞ(® ê´°ÅU•ë.½Jå‘ë#y{]¿//Ï— ìÈ–¢Nú†üö–7'ÇHkUýÿ?êì7¹‹ªö5ŠÊŠàY¥hL蟖ÄËØ`sæÕ¦òWSÈ™ìíšã ÞŠdž2MÁØ2†Íye8Øæqùë™·¼Y³øš?M“hÞê *ßMi”žÁ´%qÔ„†ÿ§¥óù‡&éœu^¹Þ>*/LÇj±:‡±rþÑB©4G†s Õ)x4 o%ˆ|Ï»•—ó[æA!©h'­ÜÁŸŠÍ³a(ÂáE*2÷‹ÆQ»C™v—þ8”¥k6…¥I`> Ë:m TwCðF:ѺË&\G—Î0œå™Ã\bÏã¹JN 3'uûP—åÜ0 Q¤j>v¯¹µì…S>éû¤Ü˜d}o)7¸e7ÔUW)CLç/lÝ@[ñxο«Öy­S*±)ù`ð{§ÿÂ\À‰¤1¥±Jfî$êÏEvW/Ëã—åñO«pÏùí4Ô~½é ;IÒÙ…zCHåRöZ9ùÎu¾YÁn¶Z?°*t‹2­hb{#í9=aìWž‹Ç6ÙBóµë=Ö'1¬CÅããÜ"©²Séç=Ô¥.”sÀT ͉¤×ÂŽÂ{›^r.þ¸#Ñ6¨ø™#¼:¢.^rJÚ Ð.Kïõ\Â9®^™‹IN¥×^åÔCÝ+Iè&oo¡‹™x4×D’h[+¹ñ\Œ¤+uoó>£5Uk—ªŒ~-‡þ|§…}åW8K0[”§1Ì'ÃSEq¶*À/ù(3'ò–’cG×ÑeŠÖc’rïjiMåÓ§|žã^Q±Óù"ÔXÀUPÆ6úž“pÿŽ;}ºGÎÁÉñºëQ½ÊÕ²]³'ß`HC´¶¶?ëÙ’Y¡Xv®]cºÓ ȋɋ¦Ñ-¿‡ß‚n…¼¿0W¬ª ÞçטÅ0Pÿ¼L®b,5Ô±7s¤2†¶ô{0ùF‰Ycç S´mvå]0“‰qä—Ì©ƒ¥ûLZ®PÜääû°ð/z¬T_㲂ï×h¬É„LïO÷Ÿà2++ŸÂòÀ”|æT­3$}Æ`i+Bívü7ÈŽÉ"òØø1cûŒë æ5'=Wú„–SævÑ+yüOœK iý1ƒE•9nKÛŽ,eМcˆ3Ûwr6§Aâ:,©ËŽ Ï÷ß)n '©ùdnÊëè!¤±#¯óÐGÈÕGìŠÐ™Ê£¨¤xWb †­Y ÛGT˜¦‹«Š¹ÙÆâA„Ïm¹»I†ÂæóÐÁWñD4œ7ŽUú“‚oô~|‹Îâ­„hƒÉ•‘öA™ GHÐw3Ò»C‡öRk=ç•è8ØMΨ|ÄzŸ-¥åmW·¦d,ê³AMíUøž;ßÊ„ílò´_ž`›*÷-ÄU½Ê¨‘—6ô3$åÜ™ †v"*â@AíÔÕ.ìH¸Ût~%n— £¢§ØºV“Cü”ls;c¥rÂ5üœji˜°Ûì«ÂHñµŸ ¼(™Ò#@6ô1k¬TYYYÎèBgK¦ÞlE àLÞ´Áì{ªu=6YV—Š{ Ìq´•&Ãò8,0רƒ{O#êû˜;J p9æstI­oV`îÓ Øy>ˆ_(ˆ±uÙÚMyxl’ž‚ 8 (ð0ÐWš¡€9¬A§uðãÒõoÊãŸËãoʣݔê®>”æØ{jÖQGñ`‰ÎÖê( &>ÙÓø>5ÉF> ëcöjœIPånƒŒ0RÎÓ°òQ‡^€Ú|$¨0oø÷@ý`Û꾓yG’×1ó'ʶ—5šO*›b˜¥ÃÊËF d§aøÕ Éž“£ì¨‹Õ1÷²(*¡Þy›ž )ÿ«®Ê¤[È-]°u~½Ûl1cRÏ ‡:ׄÁŽhOá\«yhH€8Xk ª—Òë›ûó$Tv­Js‚écŸ„w(T;œA¢sô1pbú7\nSƒµKXûûY¯Ç'…nÎÑ£«ß%dWpFbFøØ@tžÄaÇö;²æ›¼Ž2n´µ4%v>eK™¤C`‹¸½j!:ám öü?BQÞ}$N‡ÃåŸÎ.•BÕct"²Jt|zŒñ´þ­Ñ·è™/ü`¾^[à³Ñ9;û—üSÐj¥ßÿ§žEÌÅ ¶ u…­{À¹LØ[÷€çdâÓ•=àê*tmIh´–¶yaùrG¨x£ÂŽZÍÍ«ÑqêfçÖ¡è8Q+¡:59̉>ËZžk༛¯Í«&yd[ôùÝú©•A E銎8¢1WÚzRAA»þT´¬ÙK•÷Ê·æð—kKÞæ÷J‘¤ &‚‹'+0&yLmŒàŠøE‘ D327rdiT8w-ue“z~›§ NŽs¹ö+’ú¸äølX4Áø;×$ÇŒÎÀ4ß·X—¶ÖS[› н†ELóhÛ#L)\¾tßrÍïØl?»Ù^°Fm\D‰º ÐLÕ]ÕöhƶœÊtk^„¾Vüˆ¥Ç¸‡ú<üÔèóz©ôÔœC—ùŒË»¬öþ(OPŽÃ°nÖQÝÓm_דÔé§‹-­Ûù'hzFóÞR?^þã‚sÎŒŒfÓ@€!Á´½æqn§ EŽí–]ýüVKÜ+VWÈß]# ˆ @?ëÇÑ-„­P­îÐÏÏÕäÍ7O£õ¦ wïùo ¦X(™Ú¯l3{}Ë:Jýs-©ð‚Ñ”ÿ%Ð?ÇuŸg[H;¯¨‹}Ó OÂm\ÇZ‹Vêêƒ'¶­mG¿„h;>âW $(2±ÎúŸ‹Ô3‚ ÙSzm´ƒ.ižªK¯U.=nRngŸðÁ[vÒɧw#) RËÙØ6ø=Utm[a뛸¶­U ç„ÿëÙ=ósƒ|øõ]ù}yK>öxWßTÐÚjye‚þq%b !øöA M×¶±k‚:¤×›þ ÌqS)ËåQaÅÂå––+-ÖsJ—‡9¦ÌRUyºè’í·e!D«ÎìÈhš•NX3uòT“ †Kûg<ø7ù‡!e §þÊ5êsÒ©%ç¯=[ZI°lMËám4›¦%!üÓåTåÓœØÜlÉ)RÁÎNrTS1&Ëê‡ñ2¥°œÜ~—¸óp±ñ =èÃt yÃT^<ÀÓŒ¢;¦&Nö«éK}S¾²¯›ì+y9K}WÇ¿:ã„¶œa*¤&{j{¸gé'h ŽbdeñUäœ>â[›/.Ä6Y66úþ°8$E…d©ÓeЋB´ÅY§]<ë ïsìà÷…Ákx$‚ŠÙ“;@å$^×Ãuœ»?GYÁzVZsôšY ɱŠYv{¥ï^7å§wm »Q ›£»Ö½K½¼­3êl–°'Ø6ODŒ;A ÚFõµËùr|̇‘›-Öèê¤6j u„i¶1&‰uÿ/fõùËnÉcõa<ÉÉPÉ0Œƒöôîð™ÓÿRŸ™a&Ä#ª*ù¾AÔ>^WB¿-vöÞþ8¼ÊÆ‹³£ñÒû|7šÁ5ùæºò2¤¹³}‰©Q ýÌÕ¸gl÷¥,\ESmÉ;‰ ú¸§íúì¬l²³ŸêÂØFËֳй/ͤ]ÿ‰"ì×åb­„.ßM¤äOíÜ=œïé¤ê¯³éJØ~÷K`®»åð~Èóa)pU’ÎóuYQÅ $¥Ù&Ù)Ÿ~«ÖãÍ ">N?—Úduµ[røé͹|l2´“LóÔ^ä–ï–-z‹ßmâ3ŽZöj¶Êæs.ó|tÎ%(è¹m‹ˆw|“‡ûná¾6<ÙaÌwÕú_ž1ÒïOÒð½ô˜Ú¤Ncè¼Ò¤T%­æÉ_ÎþGyìendstream endobj 154 0 obj 6948 endobj 158 0 obj <> stream xœµ=É’7rwZÑ¡ÓkGwMa<'yb41G8l3Âq[¤Æ&››¢Äùzg&–J ¼zݤtÐS5 K"÷­~¹Zqµâ¿é¿/ß>ûù«×ÏÖ«×Ï~y&èWé?/ß^ýës®„^”¶òêù«gñEq%„Xì•“jYºzþöÙw'{}+„4‹q§oÿ~}».Z8çÝéMümƒ²§ñ·°ÎJsz¸¾UÎ.JØÓ÷ðê²jíÃéþh)åéè%8?ñ©µøØ8›4Þ:q6 >àc£¤5¾òž~ ç¥?ýºMø’‰Ï•Ú†[!˾½v–Oÿ·çÿâ*,ÁJ«BRÂaƒ¸zþïÏžÿów§o¯½€#„pzSk˜YœZɰø ãµYêN?ÑÌÎx/qE¥`Í×sN+çá”eŽÿ»–nÑRø2Ô ¾Æ«ø4X}úùúVúÅhê=­v.ïA Ò þÛ]¨R /T)㤫žÀ+ÌéÓµ—‹‘¬Ü…Z¬yA  pj»ºÕ¦-]wY޳³ ZùÌ.Thw!ˆÏ|gVZ Â5%àºÕhŸwlô¯lO/Ù~™|¯ïªEñZ”ÝËBôB¬’PJ©=¿Òâóî¯PÍõzû™0C®6c‘Eäÿ™…½ÈOÂO~“6gT x2üÂ÷Má{øLëü¼“!éáe>a|Ö\%{ŒÀ¸MиpŸÚŠ”¯Ø%pdà[‡Sk çV®"£Ÿú¨¶»y´Çíâfõ€‹Hs§ôPN)‡è wv8üO |Û¼/$ÿç‹ZC¾Lš›!Ä».B°‰Ù¹ßÂÏÞ—ù1ßà'®'üô¸y£‘-Êš-®@VdŒþïk¤oÿ"Ë ` +ÂÁÁ?Ö)ã!´Ž+*€¾{̯į!¯2„Í­Ñ‹ yþ—æƒ;’¾uCÕl¡ÇÈB7-\õ,ƒ¬‘ïnpÑ ·þÎèé>®¨E>½È)ŽÑMóbžGÁéd¤£]Ë7Ïऀ{Ø ô§kdJwú+I eŒÁŸ ļÓ5{ã§ø=N"e–’Mô†¬‡'\ÎU9µrŠùH$`D…oÕ,‰ëqZŠr Àr≽el’}fÅ0ŸoŠÒOxL³8oN¿]¨  ñ8•·5I}´D_ ¦eÇ(ž­•Á˜d=M¼š–(Ôøò‹Ûã‘`äâ®á‘e+_§À-ý¶aCMæ$žìF˜Lg÷ñ5 ÜŠÕ%&ꥩÌ€‘%ßìl³£C¼Þ6ûÕ€LòÀÏWl–wõ°õo#/P«KR'2Ib§¾ÙuŽJ鬯Âïd®Î%Ÿ2&íÇÒî#Ÿê+qöÅõÄ@ eB4‚¿¸×ݬ쨧-imLùf£Î¢Ú!(j"Ûkét\ÔÒ5ðo:ÇE"@z×þ`ª÷ÞUV:"Üàê¢aeÍ+-lÂÁ¡¨—Ô  Á ö3 ŒZKhe !JšZ– [7fÉûfÔq¸5vŒ? C»¨k¿¡èõnÜŸžŸßô§¼i~{BàtåAYŸéêSr´„·\·h”1\Åxµ¿NX,b®Uú$ xÔ?îÅÉ¡þ) mº¦€ŠÍηØáæ=î*½GÁÑPFO³xºÑM¿¹Ñ}+¼«Ý„ˆ¥w‹×¾R®k¼‹( æ\Z ¹Yô€>Q^EüU4èô?´¦ «ž]WvDeøCÿ~|"r­jH¼%…Î’qÀø™øô(]M9D VÀ5[èÇ8Ô5‹Mˆ!Þ’i‰Az»xåGæHÚ´S¶UÑñÔ Ç¹ˆ€ÁÆ,®1YbñVÒ‹ @¹¡B7nƒŽþün$©tôè00î¬PQ@‚¢‹çØg²R¥—â-ì>?¦ä”Ä[SXŸÚkÓ¶`«ÍòÍÈI¥,õ›Ûp‡p`µ™èàG@Zº#*¦J€þÞ¶’höÃzuÈͪ,@%Y.Xdô÷l ¢L£Ý+o%Éå‹^O0·’ÒŸÞü Ô’”ü¥•DÐ Íxf œ!BIi²"'œ0*T3Çý¹uUD ÄÚê“B¤-"›-Gx·mõm­Oÿ ¿¯>ÅÍÉãÌñ5ãWÝsk‡fN‘k7ÕŒŸèt8À­•©Ãó _j•Œ<þb $Š^=»U+šAâŠÈ:(÷`é%0Ä-Î w) àO¡åŒÕ^_º¶.×  M_rÃkAö·rfAý«íé6uܳð6 `.tæ—€~ ä„ÿKäá2ˆ½ÕB®îD™N¬ÉÊP‹[9¨B@ÆM:ÒÕjRG¡iŒŠK¼ƒ!oæÏó]qÏÆ§4£Kª»tNá[cPÀZÉ ƪ†1¨lRgœ\ðÎè1ÑM’~¾ÇŸpÕp°Wåi7jŒCƒè븵î. ÆœÛú"@dwööÐÝÛË‹öV6D×-pú±njK )tTÓó*Šï‘»×8?Œ¤´úìÕ^yÖAÏ6œ›°9Z‹`#ƒkTÈ œ¯ˆ,;%E vS[b¤Çz7ÚÆ@a§­£V\ã#°¯#5¢“¡a³ÑKé€rC/Š6ñõ—1ÜfdÔ1aþÊÁ–0k&+‚mäs[rLÆsÕ^ý±7ÀVàâîJö8^ª2jè”jü†b ¢FÅ]Hã.adòh “Îé‚”0¶b®|}~‰ŸâB^¨¡Ì Qû§¨Ð’ZW ˜²¦ŒWIUÝ`W#›`·¤YÖuOw°/DÇUŒss ¿6,‰jŒ\¤›ð,‰È§¨ð¢áÒ—jXœ…)—Uö"± —„5OÅð‘›PÜŽ}ów¸:ÈU‚¿Š”+ܳ[eu© ×¹ÒiCíÈz•ŽØ! z+‘&æñú³da@3iè‘ à¿\ßzØ­ž'¯à1ÑÄ)F\µ¾OÎ;t¨¼ãî³¢çµqC‡“ÕÓYz0‘ä¦UG@û„ÿMÖAôé¨É4 ±¿Z×~ˆƒ×£{}¹ÍÀ†cÇþ‡ƒ/Ù s8%WC1rbÇ©@ ¥ÑmìÒÂävbÍÄr÷žAÆÓóŽÕãA|«UP—îVX®6õYh+øa´t5¤¶HŠš‚J*•dœ•âÓþ‹Â€á:÷Bsw[E;QC^¸ûšiЪÿ¾«Ðð)8˜7Ãm†F-H¦á¢ƒA"ÅwƒîæH5¡xPÎh+ èÀeÿ¾ ç©r‘ ©M‘9ðùâj‡˜\×äZpÑÑ&ƒéÅ ÓñúoQ<•Ò¨BÈ»B'ØnÑáoD”ªÍ¼ ‘èôgX Aû2E-_€Úé2U½›ÔbÇo’6a3Ç|îgf$PØbÒÃü€½Ÿs›ú¬w$—É3/à×(/¦î%bQ¬×£HáhoÍšýxÀø%;=·Òõ=’pp`îy–n‚'&îµfhW™E¿“_A ±îÍn–eµ ºôç»´¤BH{µyí ßâoÂÌ/ˆ7 ô1Ï×0Ý`ûÎ@ÇJ‹½–3½}úcÇãtV< hßA8ÈÊ0}ˆ€êgÿe3GÉ77u93?Ñ-ñmÌÁ4ÚG÷Èr(ÊQÒeðaCµúý5ÆïÐ2Ò³»ÓdY{¹5d±\|W°k//pýF'îT¬ftSÜùÃ]¼;1¢i›þ g¡8ÍR…!!èQ¶dѼ-Ѭûé8°I $¡Ç5TÙjïú““2σªK :[Q‚¶UßqV»”ñ}.^Z0SWÿMΓ4KlŽ ë0%l°ç}_i^Ðæ"–l9†›qS”(<Û0}†2úDå*jCÄ­«eó0Ÿ¼r>øœn嬷„N3Q1kÙcµœ=Í/ß 5¹|Z'<îæJ²NáÍ^ô¡å¸Ê{_s¥Ü;J>@j£ˆ ­àðßï²8~#§a’ÆÓ€on1݇黯¹è<à_çsRu²£ˆŒ:Fo[Bð’émµÿ€8…÷³D´tîš’. ã© @|é‘«ªÑ#Ø›=”³ßEàåÎñJ 5ÉL|‡}<ŸA& öÿJë€>¨NØæø´§{Î’G#WXc*먤Îôj q`!»åwQ6ëdå e Ïë„0K =l+Óf2ÒNÌÆŸkõ¶“^Ô‘‘¤Pm´,§ñDå<ÖVµßàSºxó´hÏTÔѼ‡Ï2“È'ž±Íbc31Ëë È[ë*•l·Q@¯óÖ¨®çwëä÷i2-¾@ÑLëæÈ6¢ÝJߤ"qñ|lì`üŘ˜¯ÅŃDå?¤Ápós‹³õtq´ì'bö,N±ãP%S@ãhoáÅ-N<­Ûó®Å©K–c¢uÉcºmõS67 ÖP»–MøŒêËŒ¡£‰çx*g+8ëÅ<o NþâÄæŽoouI3‹÷Elð¦/óü~¥ð!áÖ#‰Ê…p§:=†×g´Ôp«À.Hÿ±ÅéÇëº*->ý°ý¼ßü°=}?%,Ô¦­“½@î™1AÍÞ Inó°™>,6­‡…ìG9dÌ9t‘ ËâDœèßê¡èã³f˜)ˆ8ÃŽ#|¼Ÿ@/¥ ¬Dœ¾Ed±ê$6†ëãJ’x¬ -ƒ™¢|Sˤ÷Œo+›, šKÐËSÛk04©gòjÔuæh! .½:Z`&3\(Ø:ùáwj6ã(`4û‹ëäÃ0X&˜«,N*RM„nÖ©·M¦‡`¿–”ªãvÙÈšÀf®£›ÒI0¬ek1ô{ˆClÈað½Žp~Ð1ä}œ ¸V8`w+áÄ äÈm»‡XæêW]3ßQ÷ŽqEaÏIù®?zÐì@&I£§`÷-é{¦J/K»+-Xܬ_mŒéÆz ï^}·ý|]¬7>`Ç×™ •#c‡‡UqKOz½„u×Ëa‰Ò®‹Þ»ô¡Õ-#–íº ~_ ÒAÂM™»6"a×ΕÕ~+ÑTß(Ðîiäe+†Æ6rt®Ÿ‰Î”JûGõÏ©»­ÿІË;3l:ª ¬‘ ×1¥pb@µS•&P»:1Ü6O>–ï϶"Ý€)nXbèÙQx¨n#@ìdØu•!¾è'åf­†ë({¹†  Z}]”°åKFÓ ÅíE^çæ5ž¬ ”Á°2`–qéñÙ:ÉÉw¿ëÕý6ø°/ã%.58úxüe•ô¹Ž —]BÅÛËôÚï7VÈÂIŒm~Ü~²±o.a›·ÌR£°YèØ$ˆ¹GöZëN‹rt™{¹•¾¼xFµk Pf¬m‹Ê1%ë€Úµê_M®Ř¢Ž™¾ÞÄ9½«ã˜!]ÐïéÕpaÏ‹|07ìœÌÕ™iMtf)šry§AQÜ*ö\ìV›öÊ0ÛjÆL6¿èÇ5í{MŽåáì<óMž &¨Ü9c“^4» ÇÀ ¢és°ÙÂX¯£ö‘©8_ÿñ,¾TÇ±ß ð“èÕ1Ø!<"ȼæȪ—á3§òû×±_¯»Îlwñ!/Ö}Ζ@¸ãkœ\™£-%a0¶n:{ o²uëàÔõâ¼€Œ``ìÁ²¸ÏJgªS7¢‹‹ Š›–ï‡C4_ aJîã÷)­¦õŸâO³äû¶EºïÄ?¹¬–m“0ݨÆqóG;ÛIí±vEà/ü:†T;áX>S¦­ÄîPÝDÛÍ装Ÿ’h«…%³”嬷Ƴ¦Ü¸j%Ø’¹ãM¹kœN8~4¤!Õ¸ÌÎUH£kŒKÍ8xÊpºˆé‘£”ÈÑáß”‚°ÝŒXª l¼ °Sï:ˆA–:ÎNk=Ù7…ˆYê,,?jïYŠ<ÂN_ÜO’!mxÿÑ,¿>’:ÕvÙ‰*ßÞdq:†õõâZ6LNüµ4™•­ŠÕwªp-vèí§¶9—¨!$­q¤ÄÓtguÛçîÊ G)}»D±¼ýÂŒ¹9ÆOÛÑ' 2ØÆÓ¾û ì¿0’e© %èú‹­¬KíR–A7üÊûÐp~ò]üDDhˉ3À#Rø¡ccšJÐê`/ó|=Ó§­Ã¸‰9ªñÖóùøò£šZMVX¯½îšÜ*¬ôöÓzÚ¸&~þ˜&qb¨À5ú0Þ5½XèáãóoA­c<£&~âˆÎ‰‰ŽÉX)‘ùHž­Å"9]ƒÚ`–KxtV€o-eµ³ï2ŒËjñò€ý~Ǥ‚ÜMX±~þolHÂ#½êÖ ZwY³ ÝÙÖ 9½w-n,yÙåRò±Žîr`¼æùd¯Íä>àÎDé—q·°¦‰ öZCÖÊ®sR‡Ç•±X#OßÄíbfÛ¾S7Çÿ1ÐëëW,² $*.³º ‚ûV§ø8È©Ùao‡áŽšÝWâ,„iÍ­ …SçrÖA‹Qè#/)Çb¡! Ä‚ .ªæêJkBÔ>«*Ù¾½—0Øî¬ÑÜH¨Èîè; ‡uª2Æ[œf]—ä23 )-è¸YŸo}-=_gßTd Ïò0H†õ¡LBM>ÙÛñíÃûò—¦?z·UJ'ºÚÒëMrÌùqÑ'ëL|y¬,ú™xá)Ý4˜£¿[ÐèÒ˜¬•­Ûúâ,€-þ¸Y_‹sn£öæ­&[lä*ÛÕù¶«¬Cgô«:.JÙmúo%Öhê/<È™ì½ôSíNùTÖ.Z¶]xq9ÑÆÙñ$˜Ù9 T3`—ØÃé7åÚ3hFkWÍÏq:£Æ™Ëå,ñ÷"“”ûqxNZ«%â™jx¾Ø~fëJ-ÅÞ·£Ž ßÄȹwã@BcÂXü^½hѹ šÔ²½M¼õÉ™°Áù ièÒé³ÑºÊ%¿  [°ñøJ-ÖþŒ¥–¶±ÁoCý¡¤Bëƒþ°»(dSÒZàUl”óˆ3à«8ãÀõ?p¶5ùé8 jÉƒŽ»Í‰èø”ÊòòIÞœÇëÿmˆ[ú é¤¤¯åWÃÒõNoüöSüvûVwjçcß2LÿRsxb"aÎwñåšH Oa©T#AÊî¢ñ&vBéjÜ ý̧jx;Á¤ƒGH© N³þnñˆS3(BòBcfÉ»dã—ÀRÁ¬á07±?'vÂÛ+­]!úE@ 0j´­3NòA‹§tÔ/’5Õ)‡Þ}Oº)­ÔȪ÷ݸñÓsµ8µÜ§ÍI—yêà @üæº|ôý>N§j ªëh=Ñ©Ò÷ˤö¥þŽEÌ]Z݈FÃÇòÚZ“;P(kwA'ô<’™éx¸RRy Yxì—ÐsÂÞÄ[öAµì¯¢þPa‡O÷”µ®%Ø÷1öƒg ¡r% ²S¼"jÒ¶yQŸúZ¾?ˆ2g(D+‰9»6w&²ìnÜ­„B`ˆ©|ur|Ñ5ÜmÇžõ¢žÈ{Wì¶j¨¼ÀúèÑš$%#øä¨ùaS‰¤ZrmYŒjÕðï²nFÆáø±dº4ÈBé §ŽFŒ‡Óåzï0‹q¡¼ZֽЀPÔ(èsfz‡õØø«do“rN{•ĶŸ8üÏÏŸý'üûÿÄq²endstream endobj 159 0 obj 7348 endobj 163 0 obj <> stream xœÅÙ’9ñ}à#&xêO¡û € 8Öok왵—À^{=^³û÷dê¨JeIÕÕÝ3v„+Ô:R©¼3%{-&y-ðOù÷îÝÕÏÿá¯ß<\‰ë7Wß^ÉôãuùçîÝõožC)¯ãræúù뫪 –ÁU•o„‡¿YùÁÉÈ—ÉY½ß’ù#»T6k3…¦õ£²"¬lPjr(ƒ6‰ße Ñ¡`%+gqªÿ¨-ÒĨƬÕyÉ8þ¦ÔLg.í^ŠÆ’¤@Q½þC™PDFG˹ßcPAÂs+ 6¿x1/”Q«Ã*àLW÷„g¥#è’d”Ïü4JjÜdmí”H¥u²Ÿ,[L8u —Æ Uc”Ì —Ñ-V¯@')ÄúùÜ «•á– é22)î úekœuÈ&Áü59–QŸBZ@Q͔ĺ'ÖRÞ×|õ]R×¹Õ‡®ã™‡¶w@OÎ[–F ™1°‚×ë³%ÈK§˜£0¶STÀDÛ\ŒYß=ú.÷ia“ç½á "&ü×5oƒ‚ó!§öÀð­/€;ó‰`’ÆÁÙl §¸â/ãÌÐèÈW¹ÕúØ!ª×ÒÚò@'×ä “8¿ö‘Lhý¬÷Nø¤Íý Ek ÏË}*‡âå`Ü]vÀÓrzvF8ñä]»â܇:­ý0&20{£eŠy’û¼'e )“#7å`DÙZërœÎ h€ˆåÎ(´ÂÈ“URŠ$ˆ¸A€Ù¹°3ú9ºx´Š¹Ý® lD9zçA»ïŠOìTûC´ &FìP'†pË"Ç7_ ÐJy®O⣠£f”oAœMèÚHÊtr°«’°›Ñá:ÏÝÇ®™Á]LÊÃ#ÝŠh¢=ûìæ+ç{„‚Hø!Û®Ñq\Ä'ÙÚÌè*z(¶òr°¯qpiÁ•á”ÔkÆ üÀÔî}>~lf8“Ÿ:IÜhûõÖ)$APŽ$yj$„W(x0%Ÿ¼Ý ôõWtŠ@–*‰[â‚Ö±²k (›óÖ?<äÙ¥W¼EHqWü=ØŒµà–—¦Sy+œãr¶†ù€e½8ý”ºo‰‹™ ÎÀ‹É‚ûBkþ8Z3´X™¡‹!ªª¨Ðž»s‰4̉anJêé·YdNKÿÌü–þ†½8wÚrÂ2Þ¦S›Œà‚©kGŽ6KäaokÆþ\'‘ïß8i¸3†"C\è–ã>#¸[dµÕÍázâ0sêõC?í»òZÓxà¹QØÛ¤Ö›VïË2Q™ä ÄÞñÛªpD©Qz§r$<“1Ó匉4•)Z#?¸Þt‘Ù§e…LþÐÖ-cΕs“’zSW: j90r%  >7“…Ò½m ³6ö±uL¸ž5[9!ì Í@nu6àÙ0ps*6¤<›In ÆZµÊÀ“x7ÐðW÷@;§cp[L®¬j³u¤')fëèSž¨ œ1l¤Ç2"çDSТˆ„l?©E6Ñ1À‡G‹ËÑPâÂeÅnÊÛjEë$wŽ‘—L†xí0Qö ˜iñ…ÚX‚Ó!Û’ŠÞV"ðª+zz¦ýHêÅLd¤HF±RO*l:é8‡JÕ?o0áòNk®[aEÁ*$V@A!ÕæÏn·S“LSœ®*2-ÍFÄKý FI¸M½R?l•¥ì¨õ½ÏÕ GdaÇghd!F òLj ^æw¤Ì)óY20yz4ÞÅòX#á”zF-¬]aÈ/¶-×"‘®C)#…:f¯‹`â4Fö´rÎÈ!2<^`ÑÒÎ÷¨Q‰&Y¿µ_Ò™»ë{Â*îNÏ%ªagB8¡[ Cà£(U&ÿ`cHnשF„ˆs²´* Ž›ÄU'¦4"c¶$Ý2§ƒhÎÛvSß¶íÇCÀª·±½Ì½Ec§ÀKçÀИlT'[½8.¸ýGÝ%Ø©{‹'甩 ÆM Ý+FZj5««Eè¼äB"mѶEÍk©š®rfNÓžFž1Uæ¬+¾RÍÔ’…G·Ëʸ4Å­‚ØkpJ×þÑ@‹œ>äYÖÃæJÚQ%uº «w0ÆO^c.*éR™i=AdF1¿¼œŸ„…Ù ¸q†½Ç_Ï–… Kdø[Ep®Æ)Âó("\ õ¹6AàÎqÊLawZ£(9A\„Öu¯05Å—ríÝd8·ºG ­hS^qÇ“GV:Òö`Óa‘sC Ê-–ûn‡WËçÇ›­k.»Vo©J< ×-æg1ˆ-ö¼ûÁµz´jñŽAzº¡†Õ¨3´:ذ²LÛƒ­L^%^fIí±€v|W„¸Pw-›k…‰P}ô˜ÆïÉ+3’ó|Ùú±Ør•%ÖÎZY…÷ßZ†ã9y……L¾)¿ëz)̈LS ÉNÃE¼¬°xvu Zñe3Š6Ò!‡Ó=,² á1•ˆ=ç6ÔâÒ~êõ)­° €wg5 Ô4 ‚ŸQÌ‘'m'-7¸mpƒü31ÿ ÊSÉÅ(ªI“Ó¥tÚw²5¥nJ•éŽÍku7 ?ë&=®N`‚oÌ8Ù}c¦PÄîV˜Ž±·Š psϺ$kG ®Ã¤51ÐÞzus‰Äøí®Á„—¤CHµ¿[BviüÎwFVuÓT_††•(V”îvè…Œµ]åœúÜ\÷˜\\_ñwâ’·)p Ë‚îD̉W/sîFÖqû^HOɦg5 (¬cŠƒMÒÈs cb4½\Z.1Œ5÷æH5fÇî#\ì{Ý"ú,¯>Ö.Lq›­ t;é6÷3}…­ºìe+˜CºUõJÚ­ûckŠsͶfz‹Ç 9Š$¶ôæURáóçûåó~ù|µ|¾\ ú‡¹õ zkÒZé}4ý?®W_–Ì¢ ÕâRŽY\}¬î@Ý•z*8Éû&&1µv.•ªÈW¥3êTëYE¼1ÇѾ€9´ î¼C”GÄ„ä*&ðYñîý§¥™ôH ê¨D÷Õ NÔÇüy亙÷Â.å’(œBéÜoÓê.ضvi`‡°í |ƒ IÇŸ@H¼£ÔÄÛ«°g8Ú’°á²bh{%»|õ§(Ñù1Ûz¨J©¦ºã¡<‡‡ÚDR[Å“NI¿YÆît{¼ØÝj <î´ºÛúkx²<c[ý¶ã]œ÷ýæ”í”SpÊ’Ä»gF èæÑ_lÅæKjV6 œÑ0½ßM+;‹6ÖÆ„R‡µyïg¹.0¨Fwµ7`AÄè–a;à¡y쉊Ê™j=€z—.›Kt0±=ÕØù†c¦‚&”ÄžcÊ´=rSLÚ÷²TÝv¶{­ßº®Y‚NшÞÓ§sAø÷íû<Ë ” ­¯Kçùæê&ß½:LÞ.L~îçšÝùJPIÉGEOÿønØÃ¬[Pà‹©ú3kµ¢½RQ)‡šˆêòu0'÷©UTF‚W¯gn’a¾ v)µœÿÁÚŸÔè Êÿq¹VAÇ^›Pp|ÿ|‡E >× y/¹¶˜ÂÛHÜýb¶ÐÇïóÿ6sYÝ%§s'n±?^)gÙ‹&ãy¸m§7êZÿrPÍ0pèY 9óîT`O¢åZ,µŠ=­µ£ä<'/A§„î-󋟳Ê'µué­€ßòÅïhøbzãrva3_Ž=:~y€-÷±9Ÿ|¹;Pæ˜ò $ƒG®G,€Ê**P¡¨/X@ µÜ‘ñ;ÊÕ€†ŒLqt»î´ßê¸uJð뎄›Ê‚£[.Í¡Ï9uI.ˆŠ^ÿê±Þ˜{ ‡F×÷yhô±Ië.¨ÜçîbõXe‘%Ã.[œyÏ‚‹Êª·M¢*¾©±……éÇàN¾N2cQ ¾ýi })¾#²WïŒ]é 1ÌÂµŠ…ø#ÝD5xÑNöÕ<КãZäÆU uyš‘$ªh+ “ü\PûK„-?ùÐ… ]=)ÏI¢ïƒm”“ªI¯">ÃfB€Ø‰(nž$ÞâeÑÌÄÕ¶†[¦Í-]—{´µ¯ƒçYÞ~T‰ÉÞ·7øÌTæZ Vž²,öÞû³¥·Ôƃ Ééé2 F¦ªÜÁÛ^Æ) >nÝC8]eêëõÉêÇŰº*ç$ìcSýTàè|,> stream xœÝ]I“Çq¾OðG¼›²¦UûbY޶Ãù :P:€HÊÂB$Eú×;³*³2«7¼Œ0‚Î+Tך˗_ewýíb{1øýÿéË›_ü!_¾z{c._ÝüíÆ¶¼Ðÿž¾¼üæ1TðöR—š\ —Ç_Þô'íÅZ»¤Kv~1Ù_¿¼ùüöûGа/!æÛWíÏšŠ»}-¥ÏÝ™%'ø3Þ~!ÅO¤òÛQúçÇÿ }Û©oŸ–dŽàñ3èïçîB4‹3õö[l~Tão¿Æ¿¡‹í=oåÉd“`LwÁ¥¥f‹Ž*¯ݹ ?\ìãÛyòmÒ•©í'\>K€‰C Á—ŠOø;g6$l¬øŠíÂzd˜x¹} 37ðïθ¶ Áûêí ¬â= /óßÅæBËÅÅ85ó- À§Û¿¨Gõ„õ,u§jÆ«ÙcóÁC·?—!ô Z GÎKr7è{ÙØµ@g½‡¡ŒÒ/äÏ<àŸ{òÌR¢uÜžÌÛ¾vçŠøbÚV\üäxÞÕå:ê&“Ša‰®VªiñOÚïrºý®7VàçxäáµÔþ².E·78µx"lÎüöÄ#_î¬[bH¶Ïø;5î£-Ö[ùæÑ]LŠu¬{uS‹=”š¯@M@ÿ\ôðçOj0䬅öõœ^qq5ÊíŸnÕÄi,ÎJÃF“ßb÷e1!®·yˆþ»dÓF|Š…åDÞºl>—Òïwë¾8•MlM¦rw¿ÂÁ“œ»ƒå¯å§Ò´£Æ;ú§Gj/ÚejÐËÿJ‰¦®½© 1­Áþ„spoÿx¾Ì @¶ÚÙ§^üíÃìÞŒÒݱÕ|ÙJÀŒ†ˆÊ¹}/ý=—?_ÈŸ/Wê>‘±½=Û×íKé%F²(Zý^ï»!m\´oX¤vhÃR}åöCîí?~„Ûûš×¶Øl©ÀB£3«9Y7íw, •/ëíÝþé;AQF DÞW‹á&{¢ÛÓÝÿE¹a½.ªñ7ؽ]‚‰“¨ásyµgN© <½üZýžS#c¾;Ø ½@ÏzõZ2ˆI[Y_Ðà÷Â]´v]|ܬå¶,¹ óö[\Ÿä³ ©·`(yt‘Î-¶f;ÒX­ —Á ‹Þ…]­‰à“óhzëmâð½ÚÛ´Åùº/Ÿ1ÍÉŽmR¾—Úð1ì@®VãÛ¾y)ß~®¼º“ ±-M5ÖºÛ?«*$GLç_T±Ú™îÊS]bÊ+Å;ÀÏÖ²;/{iªÇ(X­› nÏ…CÀ 1!Í Úgu„>C]¡U_ 8—c”©¶SÓÐ=îËʨä_ ,õ¯ûpÁ¯ð;á5]xךpÚíÿàZµ*¨˜¶ ï@4Pøw;;bË7aqvªç¸öiÄ5YÖvF7ó¶/2à™U§(]¸…€Œ”ç¬?£¬ÑÍ*h]ºxXW „RP=GF)î­<îõQ?HÓ]ih^³ÒüC00/azv+n¬ Œ¶™¿h׫ ˜#ˆ£žl, ºÜ©Z ÐÈ®¤A[ù}¯J<« mC¶&säVC™vã¼_÷a^EÐq2Ùß_Ðñ¹mXé+:´]¹˜ž Ç{ýj„ÏGÐ&™Tß+ª$½iKB-¸{óc—'ä¬8X#º•ó¡àW¢ ¼&M’'·'ÁMõÕs$Áɯ%C 9 ÿ‚“šCÅcáκ­[¸#Œ GŽÂ=àà=áÖ`ç¡âÓy¼·xg×µ•†XN¥»=˜ys]ôgÛF¸#0­Ê‰2à$srNŽÍ~NÎe¥/q„ÐǺ€O𛉱{šÿ¶ôebV”ùÂÔ‚ ;Ë‚¦ÈÞö6RžœÓþ 0‹+ó1Õâ—†¯bt „–d…°8º¼f@|òj )T9 ÀQð€ˆ6†ÆÉU²u=Ô[orÝuCÀàc'W¬Ë e_v§ˆãcâ¦÷—Ì*/*ZùglM¶é'$17BÆhbì¸ëíÒò¹ŠÀ7Ì ˆZôõ«~ÍÄN"îî_ú¢Ò;‹Þ E¼¼–?·G Bô?ÏéÕQšc“Óì‚,|]1WΫydúVT_;YoB/})¾ZïG+}szd‚2ÕŸBº<؉RÄûm&Öþ|s_3€€ÃöÜ~¶ïg÷ŽIR<÷Q±{ǰmL°BC·W±6ødMi–Ñv`…4%zz“®áÉžõ —²&¤z?™j‰EbùV]¾Ó%[¬·®/6nMØ“¿XR˜žÛ‘¿æjé¿©¥…æ]Z¹ë{žì¡Øx›±„œ÷Á²>¦Ðžþʃ3ï ¡0Ÿ°¨Ö¯ÓƶGf®¢û×»«;¢ÉÙÎúXPž¸a‘lÓƒ«ÎRWsÀG]pï¥KØF îˆReÀgížPîµõ>G.°9¬c×t˜ü´îY>Ÿ’íƒNodù*bÿS“®Ðí}Tj F}ÈyăÎJŽÏ¤È §ÅZ¿ŠjçPv×$©í? —ÎÎûݼ‡_ó‰5.‡¼²mñøüWs 0Þ |e¼Ö÷hÛ9¬W8ÍõÛSäçýÉä=û`[Ë@¡çN–ÓÍZÃa:ÐÖþá­ãŠw~ŸØn‚i® E™V\ÉÇ­\ÑI›ó(—òRË©c•ÊÃóØ ‹qé$Ÿe×á?ïÀ¢>Tëbò)„¶ã ½_ véË&¥-a:Mc髜NÒX6»Yò*$Å6²³ŒÒbKèÜ;~PýÝ×Õuy¿|MºâÚLN³Y¤›é:ß(-ÝhÍ|ö.×K½Âti e…S1-Ú4îîþè„õÛpJxšæœ$Ê–v«P [ˆáøÄJKò_i¤sƳÞN5ó#ËÑV!Ãtσ۰´û˜Ã't[ðÔ íEÇØLûìOƒgéÇR°3WFWÚPôŒ†“ ΦNÅ7S½sø}pêÐôq8p5ñ ÎÀ¿ÛíVïËþÉÝÖëxñ:ƒаDɳZä—¸š°•áT0÷¤¬X”'º‘iQ°ÁÎçìjäÚ@Û¹Z>®¶“ ŸWkyvj¹cân•FãËþPËš «MðŽÜÅ+\ÌP¢ ï†ì`]£d]ü“>ÀìÎÌþK™äÞè06½_>ð}G·(ÔèÏ€êLŠle@q]v^÷<9Õ?udÊ7à4«õú€ÛQ9ìï:gÓÄàˆ·X²­ŸŒ†N­ük·;i"g:]èA„Í:»y¨0 Ðx @„¢2×ZOÒ}\¼qǘ´×`^ýn也fÍý·GÅ.5×µOwÖËÕ=pÒ¨„³öÍÁœ7†㺠½ÃLA!âÌM,â*0*©Á¸(jë¤S)£eQ þ¶Sjæ&› §Ugªœ¶x¿œ5êCè…u?I "ÝxHX®ÖÇ_a >;Þ˜Þ¢ŸZ$ôìÞ‰XG/(4B¸;˜–Óvà+êÆç…œH¨=ÐVíoêÉï6Àî G^’s‘7¯œ›ÆŸ¼ƒ&6›Ü¡š-ç;`f»ÂÌf^L-Ç—kŽ^ÝšmX¯¥ëÃc¹¤÷;akmœˆaê\„Öàçô¢Ƨ9ŒkÍ?Ëa”£»¶¤î¡˜tMñOýxˆÏêÞ+r]þ?›ö¥Ó0`e’qr¯üŒ^7°ö(Øz%Ä|ô-¯¾Ü¾Ïk†g—Xh‹æЩæ‡ÿ&‚¿OkÆÌGoß´€Ç–1ÍC&猌¶-Ü;¨ú ¯‡°Õ§ÝÄÊk^w|(wn[ uîFfL=³¯ëæîsú€KÑèNhggÿ²WFòßJ)2W˜pZû­ Àð¾%ºbLœÃ¡6Í^doA~$Çp ÃyçÀ•¼cQâCøÉÍen“ªi^3Ì:IªöøŽÏ{$3ÌÇ[=6\Ò¶üj0q–ƑӚ éë·^žÃ*q±3ǽö° 1¿#€tL÷v-:=€ëh³=I¤êsMï½êu:Ü w¥Ò^½}É‹‘WÔ¦X±ßêÏ–BŸ@$in¤ÓSÔý’Ògh¢µ§ø´ØÜ©V0~ʲâq^G=>§©ö_zçËh€ÛÝU*qoÀ†/[¹™!\‰ ̳ÖÍÇFZ†W[Øv6öJ¾<Õ¯“0X5PÛ§`ß(;.+ÀˆYÙƒ´à§ÐéèˆrePû›rïx…eàì­¬î+à 2fs€kZÖoúziHÔÖÃ¥ã¡ïtž4à~oìÀcU4©9¹ÎncRDöm+=€T»µÛxÖK_&þn:à­Ë`CÝ9¥j õŠpKyŸ…«ï ‚àψX.\ýîò”×ál;mý(Q´ õ4Y–'>ÄAÁƒH¸ÎÇGH]¸ÚB;X2¾ýŠoËà(mšÃ¥÷|MÝa‚øÉ¦wEEdzûšÜQªRÛ.¿ä0’Hš®ê<¤oIb^>C¿íãs-:À•ŽÁªhSjRôÁ«Y¿÷öÑ£[þÖÁËl#Š£ùÉk«¯)¡h?…n7qyûÍNyªö„*Û¥ÞVŸuèy8é*IlO×$<é!ŸšPZÕ‡Iþ]ÙÄ}|ó{üº•¸UçKZ|½Äj/6âwìåÍóË/¯nð“‹½|†ß ÀYxºry‰%f±J"E½Æ­YÖû}í«Î[žq‰VïfŽv‰Nïx†Çg©ÈÙ¶ñÁŸ‰º¦„+Ã6X§äc77CD ¨¥sJŠÁñâëJÐ >µ2”&{¬,%Ún†>¶t®€À¢=µ,-ëM«nI½gQï‚›S´ (¸íE[‰‚QuÑf¤à1~Ö–|K3 b ÔÎu®›•«&uØòa;!jëXð]¯-hÁ÷¶²%;«²Ä8‹&úÃZºf“†E/É6++V×ÐzíJtÝâ ïQfÂiS‚G++N¨øÜÙpT„vòežöâïZ ¦wB *ïÛæ.×ö¸Fê£ÁÌ37˜–ŸÀü`q¢s¤½ÅôÑDǺ ¨£Ù¶.­ v1°8XÐlS+M="8„ØÇg|3/h<» 44¦™#— TFб±Íà@tÄ;lcBIÂYvªMvÐVvG±€Ð—„Ô õ7ÁÃaR¼„®2Nu`Vdo¨ˆ†H¸+ˆì—i4 ä¥L#NøuE¯g•Pû“žy‚è×F½: iȼ‚h*yÙÛ"'¹Õûû Ô^åþ°lg†ÿÕ¬w<ÃÄII*Á©è’“ñ{mIKà;ôPJ3ØQ’·.¤ëг(9Γl”¨ã§µ§B‘Æ”–?®µ GÅ–©k^q†$i'KŸ´ã8MÕZ^Üè,޼m-  Ã2¡E)ø}¸ ­N†v˜,X]^v®ƒŸ<,Úb²¸dU²”Øi#YÓÃVmqÑæÓ¢’U.¾µ§,wAÜ?,Z÷âͰLÝ”öÅKí%æ/±/RðÈG{™b=‚<削)lmÉY¡Q #*DZ¨%ÇK¢ºS‰zSØ% …eb"(l+‘XŽþÄq„¨ëô(R¬Ú¨3,G£b9b ÊQ­XYŽ|Åst,Öš#h±èe‹ÕçH\<Gëâ=8¢ÃQ¿x!fÄQ1{ ÎŒQ¼PúþŠO %t¹~3´¼í[QÚšÿªë*4|t¨4žáÆCݸ W¨. "ܤC¨-\Q¨" €qy`ÉN¢ia0 ªƒ€œˆÆ*¿h¤„Z†ú+hŠõNר3P5#À;ØŽÇ"ðÇ+‘¦$(’g-H“WFÐ(¯ž V^aAµ¼ |y§ón €æŒÍR!8œ%G°:K×Àó_þL„Ð`ª¶¦¹\EÑÕ4—«y%ð®vè JájOuÅG{LÊåj‡h¢€P"¶©))”°!'EvÕ“? ]‡‚Ñy·P24»Û W1ÄÕ,” ½é¶J,¯}·O®v´ªëÀJÓ*v;%m{·…ºN3—­?Ì)ôcX¯š¹…‚aé»E†’†dÄjÔ ÆnÙ¡3ÅÅøC»Nò°xŽù´îB $+{2¦Üý”à·”«‚½ulý»;ƒ’B$͉ðè/Å+B ûòœ GŽõª{W(‰dðÈ7YóÊI»ZÙ"“‡GúÚ]=Àfk’ JÒ $R0K¨JØòh%E³\P’‰ %lØ å@IíL!cØá2X2øÉDr¡’ù‰ä"µ{!ÀLÕ!ð¦Ú!€'}”áNT#îPRMŠÐ¦šxÇ£jm²ªõ#X«Ö˜ ¯ÚBDzU ÕnÈ– '®d¢Cu%6„æ•hàWâGAQŠ”Sl¡D⥥ _ÐÑ‹Ò&Šp”ÆQ¤”’"%¥¸M)妈KŠÊ” ÈMŠî”¡PÙ"Ч:±›ØaÓFa÷("U¶‘¢Ve?)²U6–¢_e‡)BSMA´²æh+‹OÁ¸ò °+ÏAA½ò.=îWˆ¨å¤:{ ü ¢tLBt¤ÅeÚ;ʽ¤“éDq•×—‰¬.L›|Ùv¢¸ ,‰Ñ—i¯>ö‚NаgLuÇ`’ÏDqü î(A`ið‹ãÄÙtÂÈ`ÖùD*™Šé*Ôy' ƒè¡sS?Q6q\ˆé-qSLo‘cZA”ŽÙñ…ÌPˆ¿dC|*3âw™ ßÌŒ‰¸ofUÄÅ3ó"0€ÙA Ìàš`–GAJ˜+àÂ|’€¦œþ!RJóV‚¢Xãi:q3°Ž¨ãÁðã 8¤9 ~äi Æä¥ÊË'X•—Xð,oƒ@^Þ*żyË]³XgÑ”Îâ5¼"·òm`йQp'r+‚‰4¹…“.¹êw"· 7‘[88‘[!³9fr+d6âLnü̶Rs‡Ö““¨:¹…I*D5¹… 'n"·pè~"·ÐÂ’M$r M¬È­2¯"‘[htÓDn©:ÜÂÈBn€¡Q ­ÃÄZNâ¶0õ… Nç¶0§†L"q[˜™Cf³s[¸_eâ¶pOíÄm…ÌÎé-3Ñ[¡Ý£ü”CQŒ½…š1ËP—2Ñ[ѲCaz+ÚÀšEôV„e­½¹7¦·"Þ›9Ñ[Ññp˜ßŠŽ8ó[˜¬H‡[ÄoEÇ)1Ìo!m&~+:öœÌoáÐÍÄoEÏÉ6ÌoEJ½ê0~²³%¨ÔJªf· $0—Õ!ëÝ‹ËtÝt;Þ©¾˜Ý¢Á0·%£%nK&ÄÜ–Lš¸-Yæ¶dí˜Û’õenKö€¹-Ù'&·d/™ÜÛÍä–H‘["4Ln‰`1¹%ÂÇä–(“["ÄLn‰ 3¹%ÊÐÈ-Ñæ·D£˜ß­c~K“ù-Q^æ·DÁ™ß#ÀüÖ0Lo‰azK, Ó[b˜ºÒu:½%VmÔ–é-±ŽLo‰ezK¬,Ó[b‰™ÞÆšé-±çLo‰ÍgzKüÓ[â;˜ÞÿBô–¸ ¦·ÄM½%žŒ¸¥uÄ?¸ˆ®´÷Ý9 »¥|1x %^ï\€0üg£C  3ah4Õî*uËÖqÁ &^ÅEMoA‰§ôNß@ÁH'딌”¸N¹d=¸SE ío§“ $Ó‰#1N.ù̹•rhš˜kÌ•K‰OùXóÐ4¹0ÕÁƒ|Ín9´EÆé¾2X"NhxEn94E^ó[®¢ ZÒш$Ío¹ÒL¥Ò—:å&*ø•“IïÐÍpAÉ •I} úû¢U¼ÔÑ9™`6k†ËUI‰c¶Ü6µÌ¨›q.0XwÇ–a‡™gö>Žì± Ã?NÜ2lP;(0œ 3 gÙŒÃù;l´K­¬dØ btMpAÉH$QÊ8‚í§g‹C.ǬvC8n¯.Øà¼rgŒ¯ÑHEbçJn‡PÇåP:Hïȹ–ÿÅaåÉGc2IЗCA,šã‚’Ä™`„0á$FJ¯+°ç[5ÇÕJ8ݼ“"ÙŸ„_P+Üp0[§«ƒ ÆO@ S[¢æ¸šžeÍq)ÍcP¦êpSí¸“¾ýÉx!ʘEʼiÊÔÊò0b•dT+«ÌÈWv‚ѱì#hÙQÙ²ë ÄE2¬‹ô0 cÐ/BÈ*"Ì`ˆÀs"JÁŠ(3¢YïˆòqH$ Êa“(ñHŠÎ™Ãỗa,Ff™“Ü…‘ßÀVi/‚ó$غ:ÃŽ|‹a%GN†dQh+Ö–Ã_±È!‹Õæ(Z,;GÚbý9Á»xŽê‡£áÀ_|“⮘@—Æ$ƒèqÊ3_¡¼'qÊÃ0q#ÊS"¾œ(åD@LÂ Äæ(\AŒÂRð„x#aˆ[R0‡ø'…:E¥Ð±X Q±Þ êu2£f¼qOðx4yÄiR‚%yÞ‚7ym“òú ØÊ+,È–wAÀ/o”dÞLѼႳY(‹³à^gá˜þËŸÝà›Hû/¿1üïÿ~³Î¾|)!’.·å¯¹ŽÐŽ[ígg#¶!’þûf¯¾ÛÿöÔoÛÿ7mûß„…Ðÿÿ{£^䔌’–7ÓÐ2ƒ[þîX•þóém¯ÙñïÈ·gõøøÝ;À¸æÛ2@똥ƒþóéÍÿ;_Íà锸÷ MëkÜ· ñ€›æ5Jh`˜Ébd^,Dc^/D™¹óãã÷˜×(¡q4nî`Ì‹@ÿ>ÆG¯fзëœVÛ.L1a(õK)‰?gq±˜ìZ6-Œšõ@— ¯‘·ôo±ºþæ=È¿©é§7RÖðÂx<ƒ¬Òxÿ‰ÍS×ôïc¬ôøjì}£>© µ-b=#+«,»ze)úñ®¸…öSY úw¶üøøÝ;P–"´ï‘ˆ¥è/¥ŽúOe)øßùÝ{z|5ƒÙ~BÓš  Ìk”ÐÀXQiÜËò¼XÑùßÉðãã÷˜×x÷“Æ Ð¸¹ƒ1/ý;_Í`6€ŸÐ´&HˆEÙ Z‘ÛPZƒ_3VZM¿•Õàl¸…ñ»÷¡ ‡-ø¥]1Bz/]ôŸÊpп!Òã«IÌ–ðÓš™6‰ *Åv8ôvk±ê20 .ýë1jq-ðoêCÌæcØú ßʦŒú‡›;|'<À:ßõê]g¬ûøgŸß–Gw)^coë£ñ·ß.ÖêbZ+L,u®\ÚL`a±>oßÝ• ˜Ç§4×úõîZü+þÄÏÀ2Ž;`Âô4>bå‘ ydýç¸AŸò´›šþÅйàÑ’Ÿ‹×µ¸Å›2nÖÄ+eìb\ðþöW°XÙáu‚x³ž¿ÚÚ¯?§{׿x»à õÜ^9íÜ"™Ë;:·Ò9ý™Ê}Ç>À8òCÁ¯®°¹ªsü®êõ«d#~Ù(Ý“ôö¤¾Ÿ’¾_ç顇 ù=¥À¹ ô'NÿãðFö¬ž•z~ã›]úݽQîT ÕŸ9ÎÓtWêp¾ë»Èî,&ªáwï1Ë¥ ¾ê÷j=àf+þÂ<ȉµ¶©%Uþ'¼Ž#´+wþ Ÿ«€WW«èoc·‹¹ñô÷ìÞ'즮¿ºÍyÓtWÉÁ—ø¾Æ½)ÖÎÕµ|5ŽÕ™ãÛ"¶×zŒ›Úæ«ÆûÕP©D?­ññý=æÒî~Äý½¿>zÙµ·×?µ5™'ßï‚°B®¹;º~n„¿3þcïК|~Ôê–ÌÍUP؆'wqƒoݓȷ'7×pÑg“$½>¿¤ÝÈGwD{øéív3~N(ßþ+C´æËþðíòö7¼ãÔãÏØã}0ærÝ5Rûužõf¼ ×ßµwé3%=äšØùÎOˆ±ìÙå`í œ6v'nŸK óQã.t?ÐÊém­xwØîeQ<}7 KîÎeQífˆ·*Ùʵº|ÕÆZ­ª=¥eú–gõvÒ›>ÇYo¶7ãö뜟L÷Wî]ÿ†wàMÌu÷&‘û'ð«2Pau_~>û“›Îñ¹ph[é^íúÍ$øÖ3,Öt¥dŸJr«‰´ªus_fî_%ê~6 õqâ  žQÅ“èïß7ÙÖíÄÏ©]y½c[ÑZŽ<ôUN¼_Ü€™a»W<ï{óíÕáÚÉ7Á=¹ œX0u­XŒKyýubkùñ¦à¿ÿ\š¦Vú¤æ˜øºÛÛËOƒïý”];‚AOÅ­(eôÆGwu/Ýü(vîV`çaWR4@‚‰€Ö¥‹ÙÊ¡ßïv…gÀÚ~u¡ÈÑ-{ºÎÑMëzÁŽà{þÌŒ´þý‘£ØÜæÀikê®2'}~;®ïRÍþ ×ÒZˆuºGKY|}¹É|Ác{0Õ5˜WwžÌ–ÅÔqí­º‚ŽÆyýM\x63>¿ä6úC H5rÞ¸•–6–ú æÜ2Wßvî$~½·Kªðå…p¶nGP…@^ïÛ³¯û`Óê&ä÷ pI £³ „°Çx-Në›W>&ÚêÂ'ãŠï·}óêÖå¾vжq÷jy‹Lj³ ´]T­(Wð²W.ó…x_@ßoÛ:ÀPzع)i³BóÍJ°Ì&×õ6´“-kUÀwØü9$À£òôán³ÂïyØtz»/fŒ—|­âø2ßÞ4V-\¼Ö÷"~Ï==§ïæ.Ž\EÀ zÀKÿVÔ~?ú¹‚Áø†¤øG¯Úò®€šÓ€MkZ£-ÌúÒª£Ûz{mw¨ºº®³ãU[˜ò¶ï#tuÔ$)FŸÂì,v»+F ?ÒíPö$&n·Ó™]/G²¶ƒŸ_qÃk5ÄÖð"õwyö‡uzõû;y®·t ã8þƯyçOüü¬¿vî!Œë¯R]¼Ô+Û#ÿ­7튈`çâ¿Æì`Þͽr¯Çݾ)ú•Z´W7nÝá×H]Í—»ŒÑžµrHDƒãOurû@ƒ&.endstream endobj 169 0 obj 10584 endobj 173 0 obj <> stream xœÅ=Ér¹‘wÅ|çG‡X.ì€}›ð^æ0ÆØ÷$Q¢n±ÝMu»å¯ŸL,U‰ÄÂz$e…*ÕC‰Dî™H}{±.âbÅ?ùï7^üìîâöþÅzqûâÛ"þx‘ÿzóáâ?¯a@¸b ƈ‹ëw/Ò‡^‰Å^8©–Õ©‹ë/þz²—W뢌ڟ|ÖÂYáNêòJiú ¾5Æj¯NoÓo•?}C¾ü€ÏÒH¹êjÌÇ8Æë Õé»8FXmÝéÓå•r0¹=ýÇ%ìË-Ôékò!ä>>¯ðhþïúw°7!.¬´:nÎ/Á¯áâú/®úWW,«’AäIìêV УRNv]VïX™‡˜ 3¬ÚH! “Xí¨A/Z€1á |›€UÊ8éªu"°Îiåüéåå•^ý;>ýÖ”«RÁÞ“YþFfys)àÙ(¡‚Y”v§ïÉ`:5}ÿjß…*?{ÃË&”©€½K³(­Ä釨Å(UAu·ùÕWÛBéT}n]üФv}„µàÁª`À÷ÇOø¨¥€Uþµ½íª\— l™ì'û©þ´C1™Î×ÊjÛ7xmÊé®aUÕwoÓ¶ar8J.WxÖ{J9™,L8õ†º¿‘%)JÉÁÐå¹àQñçu€úÂé]‚[®®wœ{ƒÛŸ~@½×g›aUFWsdX•t¶lØÀ#Æ£¹A,N¸‹+!R‘΄àáUnQÂÎð¼ÍOéë;üÔ/«T]”Ôés>ÕiÑ Ó,:8Sq4]ÿ&­©;Ý6‡‹<ÿj?Šœ¿OÛ4Ú0¢À·ØJ– ¡@ê¾:D¸Úèþqºî ˆ‘hÁãWv1«=*•F§,Å2!ç2ŸÐ…‚k®ú˜&‰<I †íb¥h„ID ‚ ‘´¤*÷º°9gL\舢µ=Ô\=S¿#ïoóŒ²N¥W¨¨ë-a“aF6)›©Ù„îŸ2GþfUT Ñ|ŸAóɨK”sÀ'5C0ìnØcð+ëAÖjJ¶w²ù”FKS -ò% OzøTW²‘ÎA^£b’Â÷ŠˆnåÀBY}9 ]u@ ¯tOì!MwÄ^—1,ù„/àw)j)Jÿ=J_0ƒ¸fU6€eãØá`¡5Ãm: ãéÄo‡h»xi ‡Ô:jû=*yijê»Z¤/wùà¡_Èø9÷Å%qßöé}LÈ„ä˜ X‰³2jÎà‚ÂKɈʭ‘:Žr ¬ca¨: #=·ƒƒoÎ4£hp`¡Ñ¨ 䞊BÂ|UqB­¢Ä"‚¢ß6„ÓŠr*ŸÒ:kðâôÕ%ƒjL£´?¢ÅP¾(¹À,3U[€‰«*N¯#å£Iô)¿„ß PSV¼Ï L^») ÊG­Y%ã_‹”œðïWY±±ð¢&Ô@ÔcU´½å•% ¡….b92Ú‡¸|õ:©|z ø³N$NuŒœš¢W°ep§Ä—ãN¥q²šepæh‚‚¶Z ­ÛoöuvüMš¾mLPmkæZ—7îPðõ„†³‚×ÇÓX:Å"*¦TÒ†°HnÊ,ÕC ù™ÿÖ`ÙkÏpŒc ØR£Í´I†ÔÇr~µ9úm¢M Ví1¸q×¢ î!²Ý”Wâ+æ•„¯8‡àÒRϤ좎ää‹r¦ D™Ï¶ÐD˜© ÃÐ?°bãèrœšReLiëJe¹®Š¦ÑÍ|ÏQªE†‘ÁÈ”cš\@ÇnJ}“‘óûE—HMùjœ9ïçE(’#jWëÕ?^Ô%šsÞQmx]ðb€ }/ —30 8LC0ôl•¾ú3z1Ákàñ*iñ2­iaó£ñ/‰ÔúËl°¼k|ZÀ7€~æä/ ‚þ^+á1:Ü®‰e-_,†„Ar¾F|ê9_Ç#G´mÒ.äyxŸ&`òž%Î,zIvàì׺bL'!&á’#¸Þ;Yå¤ÍÖŒ4HÕL­(^áüÜKLHiñ®wS›ÐF[96ªç"²T %d G¸ìCc¢Ø³©ð.Ñï k—2kÑÕI¨í´H—›*ôYd­/y¢¯¾Ñý‰zÆ›O5ø»·$w$àCãCo½~9gí#.%Zf @ù/|¤âØËèHÁ ©Ø/SÜ#ì¯òI9ÎÄ$a¸ÜBÉÉ€ ¢b¥öëF=BÚÒ‘45Haî™ [ë·E'úZzÐMô­ÔRá"ÿ­Æ-–»Hs4VáÇ3'Âh^õ8*F¨-'em “NJ`Ðéc”O“Éî•!Ù6ˆ»ÑÝØÁÆxˆ-F¡§xÍÉbUÀŸ¦™»)µbö|÷Ù¦hY­=q+^ë‡Ü縗2‰‘3†Û>ýÅ®S²Ùš¶U;x ä”cùŒñ³Æþquõ€ ¢yv¶¿V%±*im«’P€SО#eÃ2º™Ê)/ß=q+ˆ±6 •¶òثꘋo§ôa1 4Ýç)ã.g˜Nk º¢|]?ÇŠ3ðTû>àæìáÇ6j[ÙV‚}*¸…1,Œ”‹[Ya$7Ä#g bÉyfnÀ¬;ÖÊUxÚÅ…¨“[ƒ¸2]‡BÂu nÌŒL`š¯Éf¨¸î>eo½Ñ“)j³êŠähøú5¯eUÏÝ)ÕÚòî°!Yom”ji·ÂÔåÀ‰gÌâöœãt‰f^ ÙT…¿O {e=!œ¡gd̰¶Ñ»ó–÷Q3›§g±0ª úÔÔx‰C¬©æ&ó±-¥ ý¼)*œ.”0S{W€0ðòpI‚e G1¬íF*WBK6ÛŠ¥Ý mZ7¢±(8¾×$Ÿ!ùqkŸ•TD+Ð÷…–Äñ¨Â \³ÁlÎë‘ÃÔj[+y½lІit½#gNËöú¶,Bcò´|cÙÏ|“¶Wg¥~}éѽ Õ@ý0ù#!–Œ¢¾œ>ý ˆð°ø& ‚©©ï¶¯_¸TË*-^«L~’ûŒô*“êþeçN˜:4Ñ?àTêVVɇ­×±Ìw $÷@Š ƒ¤ö™ÞÂ|ž H‡õñüVfdwªñXtºã"™XŒúxœµ¢$H VŒl/úe“|ʨ}“Ïòë•$˧1BŒSº“Þ³°ÝÏþì…._Eº¤,t,ú¼B‘fÜ‹¤µ:©Ù€ $èêóÕøftj žÊoñ*j~„ß·,€6`©á| ગ5Å3®)¬‰¤lÔï”Ç—Í~Ö–Ù¨g\þÈîqM½­9›òyOÙ<ãšG÷i¯ù\G«uåhÝ3.d˼ÄðÊyðoœ¿@‰ì”bI¢æ[Ê ÃŒÂ;Ž$ðÌ÷ÜŒ…TG`“pÒ éi50Vx£Ž:pÕŽôùDR¾ƒ”9×Â'‡‚ÕL•÷‹=TxR,.íÙ-~vÑ­{”ÆoY-%S÷ߪ8ƒ&æ ‹tªW~_ãwAÚC)µµ £‘PkÙ­r³ã7š‰Ê¦G81³YBGi=Úôj¨~è,¼ÀÒšØU¡.°Œyy‡vT€%õG‰4]‘¦L÷ùÅÈUñ"nQÎbÌq'uðŸ’7´“ 2QÙØÞ‰¶ N+ƒÉzZþ pƒ<ê´‰`W©ƒ”Ê mž²ý7[#¶ºL–ý¡÷z‡K!¥ãâѸQ‘e*u¼Dÿ.åŠR ªäKè±ëki‡5ß ›µh*Ò9Þ¦k©L„[”Пå6Fˆ…µu!%gçÇO¶ÃÓDñäákÇI‰IG ÆbWƒ+îM )c"ø÷øìɺµÑ热ÀÍ—eZ¶%cÉ…}’4HZJaIc óÅÂt7Á±±3¾xX@X’£Ìz]µˆË;/Ï èŽ6”uYBÚ¸;ÇùD€_?í PK$øEæ3&;Ó—üö€U±ÃР]Î3u™5x°Ø)Pp _s-“ö?JÛ}JøÃÑ,O¯"ºcyB\‘5š8×FM‡7úîˆwš2†bQ»3ö475â14·MR¹_´oܧ‰f$öÍð§?a=/P̶Ì*eköûAåÖªl^IAn»¦JЍaæ h‹uMüdL]±X^w2HøÚ«º˜B,Z!0wšEE³”«\BS,˜û^M\z‰m&m¯· máÅC¦d¾ª'+EJˆ6½¸ùÅSÃûa;žŒšØˆdÅ픘GÎÌöŸ Û2NÔj‰k06àØE¶g³vgj <$ëùåfÜ3ÝœëvÁÝùžQúX×*ã Ž`œTôQr‰á1ÂYéèÑ•_^mé‚*‘3W:²›Ì«è~z·iŠ rçÇÊatXõ›*A+fæ3! #AòH.âkw¨(zÛCÓ{ 0ë(.vجÄ>)nXBîënž&@š‚ƒ¬œ€¶š‚HvÛÕýÂ÷t?r9Š/¼—Ø¿JKoJ ëd*íiØ—5ï*=¥ÈˆÑ}g.íÔ8OÁk¡ê>M¤„˜Õ õÚ$:Rü^ íîõpiŽ@®WœÀ{ôÈ›“—juº°7ŽÐjl65ohœÔ]zò p©FÕeÜ®D¨dSʳrMIå¨ÒéK(0列z»uû®AÑØ®ƒMôV‹ ÙÊ:,eœ n9°`GÑJ^]ëöf÷ P8SËW±[1­óuv^†w]äÞÐö¨¤ŽÜué/ñK ¼V.ð¡"çò`BÖØß„«™’Ø7V­M¥ÑÐ;^F˜-òˆÕE÷£”Ž^æÂù¸:é°ñÔ ³[£Z#¯Ô>ªn„e㢈ÞÖnæZF¾¤ùQæþmÚ(ù'E`«{¤0LÃ%é.ˆü‚ËÐ)z¿Ý… Ví9¶(Ð<» ‹ë /X¯*n7ëï.‘þ¿ƒ"1û·\G,HٔߴÏËû7ði¼;俢ÉðÐäíá‚ÖXüر󕬕W“ÅÎ#hÿkïÎ2:ˆ³žR/B…Ø\¹ù4ÖÃE@8=±ö¨ t“L 6ÒÑŸÒh,¥y•ˆk]eŒŠ£ÑuÛ…PÜï…]tñòà ¼øý߀åj¦åë·4O]èk#?ú{«} 'â3GJ†ZiZ-šžS:Æ©Ô~ž»^=³ï©«aëkgð?­¹¸Âf®B‹½5jžÇl8üW×/þþü?‹&)endstream endobj 174 0 obj 5368 endobj 178 0 obj <> stream xœÍ]K“¹q¾OìèЩÇÞ)ãýo K¶¾È¦O»:ì’\R2g(‘\Iü÷ú@¡( ºg8»rðÀi4H$òúÏ'±È“ åÿ—÷7ÿòßþôæã8½¹ùóL_žÊ/ïO¿z*žâræô⇛j0nà£&)ºà£&­½÷Q‡rU.ºD˜¬=fÌÁ» ” †µÅ«0Ò4†ë>¡Ž™Wç&´DfS,²+«L2î X· Çµ¿¤òIf§£ƒ)ñ+×x¹5i<·X„²¶Î4^”\ã)„ÀÞ|™ T1}ê ­5zòÆó²MïÐÌ$º Ô&\× — qŠÔv^Cê,„å~È­æ8ÖJkP·NZÄ#J>ÎZå½»l_¯Ý»ýº/ú/_Ó>ÆE;Q²oëç’Æ‚Ê¢‰þ¦U©Ñ*S€‰ ÍÍwíßÄB$ŠL,ß7"ÜÆhF-Z¬~#Ìåªc†ú—›´—{¹¦@nÆcâ¼g@^çˆ$=ŒH\¯Ñ©Ù…ØËMê­ã sªÆsÌ1jü­EI·†pN¨>PFT1Žìöa%à˜q¢È(!¤nµÿÚÈ­Õ, dÜ<ˆ(V…,¡çu ó€¢êháÊkô±×áq ™;ÍG ¹uAU4ôõ”ߨîÎøýC^—uj§’Ѭàq?‹•oup„vôíöÒlÂRŸ”…ì¹D{gº¸ÆKc¦ ßwköI}=T8_팼½Š¿ µPØyA-&ô[µˆõÅ(÷Ù¨ÕK[míÈè$ó·ògpSÇ%'çàs[³òÐE'&;ÿ&1~'(­Q¤ôxˆ5Óç¤Jhk;­Ú¦ªˆÖÕp(uo¤H}~Ì3’Þ‡Œ«®ÑvqH³£‹€åá<ö»'¼Ôá€Â<5±³]:b”œ{GÀã²å»žÀ´„A®Ñ¡åÈC ¹K–YÕ<£Xɪ¦Ù§5Sly–ëBØ+?8ZØ%¥x;ÊýŠf™ÐièÃ'*¨¸àš.…£S†¸Äp8bÉç5¶²3;ùKVi®å±6ýHÁ -9J"k2M‚aiBÆIBšñb> P¾¦Aù´t‚]9sù9f3#PQKSZÒÙ„2èÈSqlgzq|"'"ËÆ•:›\ Úq©ÆþÊÇ Õ(Ó;f¥~Nüã‡ÆYØuÙªîލÖÓ”4êòÔYZ$‚®Òr }£`ôu!V´s“Ù¥†U}¢vÕáq Â3ósYÙëp7ÚÉqª·,µ”M½”ƒÄ‰SòÔ*™Qí’ÕÛ&ÓaÛ5$ãfèu*emäNYw`-Ú4ÍÄêci¤œ':&šª +Â3»5¿„ÜF·'”‰Ä!ŒÌÿEÖÙ©Y.ä­ù׿Uº™¹.ëòRvú3Éwûê>“³æ<¨/­‹ú”u]-4‰Ç~f®7رäۼŮٖ,=e¡mÀûí™­’'kÐ1»CøÍáuçx1µ ÓM™¼ãtC°tÇàF‚Ò¤O³“w "å.„¬ž„ºØÝñËÅ$—¦ý!ò.OrEÞ¸óð°ž 7ŸÇ†bJé~ÌLh¿½es{m8òë¡ mZVí(…ÝÖäXe!² ­Bô|®­#‡ñYr®ÖÀºÛÕ)Jɤ.PZ…³HK^ÑÜAûâE®®BJj—E*7RÎPë*ýÎ}O ˆØù%õr·F—œÅ9žžícÊÒjîÇq®îT'­Æ»’}ZåvËY ù¹Œ³ò'7Dwç<3]­Ñ¼ó÷Œc¸@Ì™ÕÈ‚¢'Yj7S²O{ÐÔÌúf ÷/ ÍðæM=NH¯,Oó(3rMÅüF–‘-B”WÛ wk&ÊuNO#K”þ‚û”zóyf»ò† Ò¹Ú´Öã]îQËð&™ýäiÁ#8•ùaAê`žîÓÊhOÇ=Û!QØ–q qaP›§Ã¶PHùÅæ|£r°£—ைuI‘Õã¼!¾¡Õ“Ü´°2´W¬™e &…3Ab•P&-¤dZwÅ*y¥¸ R=Yœ«ƒ5ãÙ–?% É—Iœ¡°×™ v_ºá9£íDsþ¥Õâ·j„ N™a­*Y‘þ^g]‚~–xȹ¸ÛªËþ·K‚§ #×/IÓ„Øv²H“;¯.LNG2^KOGîÆ–Pøgþh¸¦ jß ºmž´!2ƒ¹}6KíqÛ18LÒ³\NÚa׿w2Hïƒ*Í;Ä+‹ n”º2Õßöfç‡Yªnoxm¢Ø&¹i&Þœ÷Qíz®žg”SKÇæ—,ÎCŽ*:¼‚å ¹n09NV.à™kŽŒ'ú[^›œá]Hj"ÕÇ?NA~Ì“ÀÉ< õ‰œ™Ò¸M=&#…åÇ­þj"½#@˜€g:çS-»‡{<·ðéAH}³t GÔ¶IêMìX›#zXרÂ6vÉ‚UÐf~¾# Ú›Â>©)¨ši©Þå·äýØK›=©l»¼Ç~¡dúÉE­ùL™*ø€ÒÎÓÄ*R˜5n9t…û2`B«pm„G½å± ¡‹ ó+Wå\r @^·¾¬hòmª[«ýç"V6S ?ªÔõÚ7nc;[ŸÎ¾¯YÏÏ”¸)¯ðgH>äc.óôìC'w뉷Q¤Y‚ªÎ²á«%ÇÊ.ÆÓ’kªmK¿Ü¦ê)12hi¾w´¸"A—+V%åcW˜üãÀ®Íds£Ã®¼`;W+0÷öŠŸ%ò&ï‘òjçkø”Guëµ›`x åVlx¬ØVYHû`Â,÷HãEËÕQ¯îT(¯°–?wyp“h­ lÏþŒ­Ýu‰GPÃ3ur L0¸é?Sw+ŒÎwl¢å8ðÅ6a—Ì¥ óR¾”(¼pBO !íf+ãT]O½åN­ ɾJ êí8¦wqxj*ËÕÊå¥>ÈrDÙ=²‘ îOÏqAs%¡ *äËdf«qK6 “˜Æ M…Vö™¤g1ËF^H›føkq¨Bh5#‡y‰É§ÍÑn,6Žr¬Ó#£‰Ÿ4«içÍçÕM–í¹Ê“½‰ÌªV»6Xÿ,)®4L€U„™GÝ=þ<¸è*E™ÜL὿ΡIHKÉÑ ÙÀz!d¨¾Ë$öÚÈé±6§‘ DòΔÉQíùèjƒÓ~é¦ ‚3Ñ®~§P¡ q&rS.]v98S©D¢mVnñÆžs †‘è·Šò­teõSs¨¤îì–L·ù©ªCô”Ú§™s’²èЬáì×Äk»÷\ñ—cM§;gPù’·)_¿1#.ß}¨¦¦»ƒ—oÒu®ÍçÂ…S°x1+äWvr\#Ð4iºg¿»“¨$í4>™ää~®Ê»þdB´Ýá-ÌiÑ7P¨‡qñü¿·”UŠ^É󯨳2è+Û*ˆãd*?úíï_7LFÉT³`eÝS½1B*o$h9±Ê"ƒé Í¿¸ã߸ ¾®l¾úæ,Õíuj¡ëÿRC5ÒÜúsż h–pÆò‡s(…ôJŸ¥HÆ‚2BZÄ›&¤À\…’<›Þ*u–B‡Ð®Ušümúže‚ž”â7'G9l $‹,~_ÿzÿv$‹+ÉHo—MTÄÚÂ: 4Wa™­Ó@A¬lÌ:UÉwÀÄ0-Â;íUóÚÂ:í5ó*‘ñV­lІuú” ™ÍdÀ׆𓞸ý~×éôk´ÐŸ?á3=ç…Ïð$>ƒ×œà…8§—7} iÕ¤+ö28À"â9H¬uø³CE0ºÒšJ”ÐÉñÀ:ÿªJ†¼i´é!h[…^„„TÁg,ÍWDR’»±.`´-ƒò¬ºÒ¸"j±FnK³05š"ÄJb!–f!©7™)ª®…4DÚšLø´EdPI¡Bß`M‘ià¾%騘f*Z;is¹Ùðú}µû} Á!é¦â+lêw]E–J¡Ë\ì®0ª$Óe=ð‰¦±ÕÈõä_·I‹:ë}û‘TÑÄU/ É%G  ¾}¿Ú—¾%©,*ªÔk™|°ªl³ÊÕon¡0±¨lGq }B–Ùì €\’ huiº²geW‹T=hƒêû\@×ò޵‹é raÉÿ´Ê#µ2K×Bê×eåOÆPm,¾úŒÍä-š…pPT/¤ä•HEÄ'Tê0eJ+Ñã ¦‰ùÅÝòçËôg´¹DÜÒ›&&¦Ç7r‡Q-ÑÄ’åaÜ@ýH£èT[Ù~ˆ¶Ñ¬Cry4 ‘—†˜ÝuiˆÞ Ñ—†È#J˜K£ÕQìptÜáè†ý®Ÿ¿„ù`ujd°Ž1ÙÕÕ;z0Dó/=Z G_$«H¬DÁ7ëbÇÙh6)ß'rïàpÀr§;z­È„³"ù$±´|ÄIdy3–œ=Lþ¨é3 ¨ðó‹Û@ï)ÛÑé U4LÞú ÓcE9'?¨mÜŸÓ]ûžÅsT4*KÇ G'gD¯ŽŠ† ² Tb>9ƒFtÍÑ#NÎ$ÕREõ¼'gtVntz\åàõÚž0šöËM³áÚJù%ÕQšËO»Ê™˜a÷ªhzý¬)bõdéèUÒ‘Ûzc¯V ík€wLø¶<Å¥‡·<­•²'¼~âº$z¤Ì*7­?æRÒÕEç'ÙBº¢)MÚVÉò*Nÿ?§vl{ ÿz{mò¢õK†ÖD™Í6›§bÖØfÆ“"IÆ“3=sMµ,›2ÑXµl»«qÕÚõ—mÈtBŸÃCqzÛ·»ÂñØÇÛÓ³v2òÍÅ¢ÚÊtùÑëîMOM÷ÖõéºAiÅr8üŠ7ä¤OzCNž™ŽÞóô„ý>ê‰U™Øü´·lô=°TdÖ')Øjë­R­ÞY ¤a+» ´hvôüónv ì[Æy_ãL4Ÿë=ú„“qSÑd¾ÆÑsuÙÚYõÜågÊ>e¹|}Äû}î= :½GV-÷Oôî»ÏJÕ_2jk©+eg~Ù¬/Ý­!äÂë6t£å9n Šð(0¦·Ò¾ð]Lo#ï>ºæq›‹¯ÔBºe÷ÌøOô |ºk3z¿¹çó9µÒSDû‡RiØ’lªóŪ™ˆOžÊÝåàz©«EÎsÛÝ‹y´;êðñÆÌbõ^ýã_@IO#‰¦Ü®¿®')Üy|×j”d :b¨¨Þ‚ñÓC³·|®y"!Ý0Šôfå#ÞÔ´ùò·¤ú}Ï Ô,äè÷KòÞ¦Umeå—m6ìØOuôøîéÞåuíÞ\0"¦ ÚÉŇÇmúš8öŠoÝٺ짼ŸK8IÙ å‡jl-QkâÝ<ÊLmçÓÌk¹û0*ð=x…Pqad=Ÿú³?yÝÿõ :;>ÉëH0>ŒüƒQWÜÌ~È3–ßG3 ‹Žm•._Ù_3l;ÖˆýÝ+®¥¹L¡¢Ýåëy³7É.(¦4=Ýë â±ÎÖ¡ÕÛûW„Ÿ‚@] è¹ì#_‡Úo™ä›= ùù) ¯;7üh؃'†žÍ#ãûM…F~Œc}Å݈ôîõ/É¥g/ÉõWˆ)c©âTk\&…¡\”Þ¿ÞKMIqÄ||k‹'gY€Ù;冔lmSº*DÇøÏlöA×È¥™g2²)£óiÏ’Ú îpýe\"Ÿ¸ðãJÄftÕé‰ CåOÏS|Aaf†±²¼êùýóÉÍ„k²©sý­OvYÐ^$¤¼€kH†ÝZŸ¥h»ŸCKoã¸]F)ß)˜ˆå8 6{¿f½W¢ý£/»ÚÀ“„†¤« QyiÇZbŽCªµswgäÑ7ùêÅÚíG>•§­ŽC šÜ®VÛ 3É“TåöCªã{ƒ4ytýÏA^evÊBrÔdýe I¯,÷ÏEtŒ× ËL©õ7g[Šýƒ¬t+?sAÁjϾ¦Æ#\¡Ôû:4cÜý*(ýÌ¥ºßA« îªãU†­¤Áž9^O{Hv5®ôÆu8 Õ€´žùjkq,×UÍ&(ß0Øfƒi¯àÈBóþžõXò¯U7º&\ÅŠ¶Pþ$b•Þ*—XñЋ]=L²D?ý”êâ5•ÊÄbm¶³ÄüƒÓÕNÕå¿»ù;שendstream endobj 179 0 obj 6839 endobj 183 0 obj <> stream xœå=[o·•E…üaŸ>móMx¿´O-zÁ.òÒ@@·hú`[¶œ­-+–óë÷œÃ!çCÎ7’e'@‘Oæã‡ç~#õý¹˜ä¹Àÿ柽>ûê~}w&ίϾ?“ôãùüϳ×縄RžÇ):åÌù勳ô¥<—RNîÜ+= ¯Ï/_Ÿýãðüâ(&ã„îp…ÏÖÛÔáú^kíMœ‡ØhÂáî⨭|”‡7Ë€øÖMʚû4VD¡/Ùt|™;|öÞ:óà.T˜¬sõ„B_è‡ ¶ã´nÒ^7[+ÈâK¾ËHîSÍV ²-<¹H bj^9ÔÛz{ñÏËÿ>S6 €À`—WÀP|aF¼WiAÂë/ae§&ÿ”Ð:ú Ó|ÓÏ.ˆZFâØD}xš‚î!8ËÏ;• öñ̫Ċ7« žVÞå!4KÚ‹ÆWTÄ}óÆöbœLûg{~¶„è=Ûi…íò!§’Z›©’„»ôN6|È››è-_‚Ó¦&$ÍgTèHaÛ-«V &Y® bZc`ÎiáÄüWߨÈÕ›B¦@ü}vùŸÿ88\ÞÂp“>ôÑ* ¥é¿V¡´¸ìá÷¯Øûëeø›åñ-AâB‰IçÁD0é¥Õ1!Å'­Îà ¡ëáD4-‚‰|BŸ†à€­çõ /?ëûÿ°Œ9ù· Ê´œ¤•6¡k^õùbKEXÔÁLNÙj¡y€]ÀÀZØòï(|win’ òžM“òBhK ôäd8|Á†ðM³Ù‰/LTÖéD󯤅)†2Íʽ’Y”IypÉßPŽÂONÄŽº¢I^á¼8ÀdæMWî¸>Yj­ÿH&´´n^ß©J›rH>¤ ÁÉÑރúV±gÿ‚”­D¸Úäp´•YNJÙÈ8TÛ ;iç:Jå­U×@)!¶4ŒG@êáξ`ïoª1dÊŒ¤ÖÙ”]¥ù"¬Í Õw ÷ 1‘Mpúûõ*¤/ëO…`ýöå•ê)Àò0s³¼I5#^Þ°±W3 ò³Ùv¶Õö½3Àò1™´dÒ¬MÚˆ–?"›˜)@˜c½:I׋`¼$¨Œ•ÕÄÜ+ýl 8ý²ï!0Ÿôà …s­\ãøé°‹N¾ª–zŠ =w’WÞ­æÓݤŅSüíSFó§}kÏñô q85_}àp¬¾i q“7¶bì¢2’~±àËxâ!€ DãÂ[Ÿ5~ßN(ó;I”W“0E¢>±†@ÇRÆIÜKÁ#ó¹›÷ª‚ž®‘*s²[É¢–`$¬z÷J“•-R9 ϼ×Ú¼]c#Äyª#\Õ¾Žj ¦n×A2ɧ WÏpB˜GÖrŠ>G„0Òl{4¤+y?›ù¥â ¤l¬TnCÂiÍd5ðÛ •óÑ@ð!´ˆ¥[i†÷+ñj±À<ø¥ˆoœ[yþ!ªƒ¨Éú!4 y ÈÕ4@ÆÄŽ›4>ãì=7eš•©šq’L•ñkÔŒe´Xp)ì@6KÐR{||ê‘Ña&ê*ÅFè˜äÈÕWxUJ¬§*§céʾÐÙ~†Þ0øý6yÀRG›½]Þ¾Zß•ibª‰ãd<íå¤Tˆ³mWzyø)½ö>9ðöiTÏi?ôxÂL4X=MûGúÞÚ(9Òf¦ð¦ÚU+C@`Áeõ£ˆ˜«V®“9ê7T.ø.Ý;>†·“"i‡‘¡ê‘BXMªšZÈia„?-¯-´]ZË€«Z¦exÊG’ÅÑÝÉy_ä^ÐÇÿEŸZ°“­÷‡äsÑÝ’Æ%l»ZVkŒÂ‡&m$}wi[‚ òju†<X®Ì®W}¯ÉƒÃ$›«Í(I'Á€ûÆý?è¡óÍÄä&i9Â!ðQç/¶ÈÃÕ6:7#š‡s¡wMï‹yº_á¼im{ëô=+T‚xƒË]ã*Å×ààÞ»¢Œß‰¡&–ñg§ ;!N–;y¸ÉTÑèÃ^R8•m8¤#4\1Všjv=_0|°'Ùx¾/ÇöÙâØ¾_Þ>ÝôqÉV;É %Å9äN.•?„íÚ0tÌ<ÁVqÍÇx*`Á¦b§v mêü{Ã3yY¤à‡4‡Ńѡª°ÝöÃÉ*ÉFÀQé‰[’Ú’%Hãª9P%ª€¬ÚÀ(WÜä·ºjiËYìžÛbƒn(M®373¥uÈNy£ø=x·‹Sê–é©Ð¾©ŽÓ‚lÄþ‡\!ä8Ïíh骥/—\ù¶Ky‘$øñ÷ÆN7{[ªÊׯÓàBeY¼¸O¶iIw,™xM|lñÓ š•ñ!û4à-–Þy÷Éöó5xze^ÏyÛM9E¨”]ÑÞÞ;cU¾YöÅ­îQ aÔµ ÒcT£{€ªFÊœt•Ó¢±Õ7‘ÓºOÐvb· aš¼WwéU Œµ <Á•ü×ù9QÓ™7$aÆù¹Ø9y» éåÆ@z,¦­%7¶âÊâ}bÞù·À%¨`Ú@“g¼¥4k´qf¬UÄ4$ëã÷k…é4°©aÞ}”áXY¥Rû J*M7c¡ÄõœX—®“«À¹¯Ödk—o¼²¢¡RûÜØ‡/ê;ªv• ¢ÑüŠq‡ K@¼ lŸ1‚`‚âöt¾uyYíÇSÖåç·§³=Å×àÖUg˜«ñ³RÕ¦5¢ˆ ¡Üá™7Ö9¦F ½Ë×½¦PbØÍçIQܾ¼Í —×TS*Ü3hgf•;ž„”ΗIzÐ)XI…ÚzEíåñùòødy|Q»N:8}S\•×û½¶3» ÷\ƒ¬ØN„gXl°K—En†g«Ø–6ÁvfÀwöK—ÈÊ»TS´ÛÙqâ츭µÎûw³Ò/“‹ ?Múæ¶GØØò·}ï…ª%Ô'Òþœyïø úÁç·ë q‹x´¹ƒbaëÂÎÆUí%PS7~JBƒó#i<ÝÈ’( q]4ßÇŒÑ[á*:‰Á…?ü ,Áë5YÒ—© ò–Ã!,ƒŽ”Qàéç]š[‰ÕéHŒLÍ<÷18ü¶Ñâ™:‡V…cI]ÍU%çBŸš~4êmAÅ·ŸýÈsç¼T>-öƒ¤Ájб¾µÇÙð@(*ã~Ťø| ÷Ð|Ãlh>ô*Õ(ôgNgípÔ‡1’f(ØáeïÒ`ìÀª  Ç ÞÔ 6i?Õz GG1>íØ¸°khäÌ<03KF×ËTçèçÿzèÏõx¿JÚÈQÃ’ï“5Øn[¬AG “èôó¼~ß$6 ‰¨ÏB ØVº Á c+§huªoißtÆOë®rhF¬šÐ–.ËX9`óU Øù¤¬D3k°;ÁbžsSßX¤>‘/·”j;b1Fífg‚_6Í·½7½ûžƒ(麂~Y¥°?Ì£Í*sÔu8÷ÿ˜öÀ D¿!ìŸïdó8AiŒñ¹s6±<,n7ú¡í»=­™;1ÁììŒÌcÄjV×î7¸Ì@×’°§;4ÐÞëT[*º{‰ƒ—a7ÿ£YÖÿ³ûî”Ε@pÂÜ tf2ãëÚd‘µà“ÚÊஓ‹«0îK̵Àêf;U“cyuîKléT…õÑpǽT uÿ©:ÃÊK-6÷\í«E„ɱÏ/ áŽ=î`M¬ Ƶ1MBtno€^Æ4®ÔWßDwîA À•“Až½TQa¢½”‚A ñtyLo£u‰óÛ'Ëã‹òˆk´Óåt¶«ˆg]!ºÒË' ßBôJŠy~'ÒHôkÕò‘]Íò(«%q°ü(–GÕýÚñ‰x½E}µÒ*å è­x~„͘»BRü¢£•÷ˆ_fSÁböSÿ6+ ø¿“à¤ÕÂ>3Ml ¸¾¡êÛ™ýò̯_¹hO*sëà­?¿ x[ÑÞ³m ?y "Ì8Ç8ôI¹².¾ ªßA¾áû¶ÜÍdb9xü(m¹ù´GÊÃûU‡µùÕ/êκïõušF—š,Õ×—m¤/3¶$1kDUËUMˆöàÚBí¹rëU¯r[Ð:rnMíÈ`ci%|”Á¾OsPG-g*æmófóñõcex#æÕ±Ÿ–É×vîIqëW ›8ÅàR±v?rrGøÁwË9)Ó@¯Ü5Ü®ßßÉãÇ9ñi÷],ÆÏœ¬C Íb·µKVÚÄ—œ}÷‹–© GU†¨‚ õ;-àä¿«SÈn:MF®ú&·¬âTþü¦ñÓæ’Ù1£eW2~7õ6ó¾÷ÁæJåµFß¼zpUÒ‡ÿS›÷àb³„uùu|v½¨&FÏ‚±¾«æŽêŒ§““‹¾ >áGÙð«4ŠÐlþÔ™ËÈo×dJ£ ÁÛfp¾%M«"r»¹gucàLw¸‡†³ŒPæ¹Ó@µË·6´Üˆ†ûª“÷›—Ë# j[»ÁW8Zw-†¥£¥IøÐQùÀ`¹sp­J¦KkÛK¤w1¤¤¾¹¨„®6áù[:ú†¹Åw ¬t|¾ìOSo%èky?sæ^9Ä¥U;e´êiÃhÔì“n¬qIaÌÀ.ôµM SÊè ð–£L»›™–j%]•X[QÖå¼÷ÑwÓm‚”¬îýûÁòEÓsú'í°67µE¸lñ —·XÁûŽ©:hÚŠ Ï»i‰¿( ÿÖc›kÐ$ZÝ”…ÓU²f—ÝZ‘8mVwX ÌËnHE¨.+\_ª”;upBÝgr+‰é¸Ý—mi oÙÐá¢(ñºMê"`À–L ^~Sõ¢ÊtßnðI1–3Ÿø> stream xœÝ=É’\¹q;t°ÿ ŽÕ2ëû"‡vŒ¬°Ã–=R;¬±å—’7±ÉÙ¾Þ™XxÀ«*v5‡Ãà¨×X2‰Üþ¼c ß1ü—þüòêogwOo¯ØîéÕŸ¯xøã.ý÷øåîo ‚ä;¿x#ŒÚÝ|s[òç|1;+ä¬Üݼ¼úŸýËkèX:¥íþëPôƉýmýú¬e­ðEùú¿7ÿãiGÇ“j±Lzóæ ŒñäúÀɼ÷fÿËBI'9Œ e­5Ó"öbÅÎ,ÞJ§Ôfž‰Ý/Ê+®bgÀF^XËåhhÎçÛ5mîtÖð6bÖYãø!”Bàì Œj2Ò {:ÿ¸Z©Øˆ7³}°~±^b+¾j±Ñ×ЉÐÚs˜hh¯´Wnÿ‹0>@ÅìþU,kóKªÜ^„‹ázÿ0¥´ûw±óLîßb×Ìhï#nRj+lÄ9õG¿#ËA;c™Kãf™iƿŲ ×´} mŒ¯|®.LäÃúù¨çýJ@LE©TnQÂèýØJÂ(‚ñMY1#Üp¦´P²cóËÌqdsÉEfóvŽÉ¤W¾e²Ç„˜¯Šú½'4óÁDCÌÛH ¤t-ì¢`± °óc¦× X¸r ÅzÅÇç˜æNhÜΙW--È„¿³¬œÙ &¥·…«¥ÌHr•‘D* Åš^œ¹'$Óš6LMpB·¦i•š¼Œ4ÌýþÛ€Ž¦¦‹+Õvܺ´¸ŒWÐr©ßqÜHÉ… Ð ”Œ<ŽuS ÷¬•ÂË…+“Gµ¶5Í‚²E`.<•.ßÇ.„nf‡.y*iž¥ÚÆwÌ~€Ñµ5ÿz¸æŸö~N(1‘!tHŠ2W Àµÿã¾ÖÊà9-Š |s +„{à”ׄknƒL–Œ'ñ ÞpŠ\¬2rŠ´šJå,OìeØ.zŒ¼RÚü]¥çXµ(î¯îlëWÇ`õÜ{ñiÀW ‡¥iG+Ð,šÖÁúÇkäCµ #ò’‘c$.ÍF ^{„‚Úq>Z¯S*XPñÎ]ž +îêåc¨¬š6ƒm“Ö©¬,E Ý}q—‚Õ3rWÖ ¥ÍÉB»€jéŽZ‚µ¸“æ,j@ ƒUá’V¶¡šö™jÁ˜TÀÌQªuš†ðy;>ð90 ü@z‹jm£™2“y3RÜ/_õ´óœð‚¥_‘­u@½µw!ü¡Õ9þÕ>пz…•SV&2q™É$ 3”LÈ4zuy†cä(Q•eúåÈcÁp§Նº£åH˜ØPnjC•Îx@?«`V¹ËŪ®¸%}a]¡Î7WH$ÖtI£B ͇þ(XZœ:íÌZÆmòµÀçà¥=‰RAîx4õ”¥’ztŠö(ÄbÁ®LþE0˜4˜#p ^¼Bì ngz¤à€[nU0<‹LûMO ϧ~àĘ|8ön¨Ùø#i«+ouc†ÎK'ÀÌPºóÁUãƒ÷騑„e´ Á¨d«½— ¼>™$Cø*zɀť¥‡u­xãáØ]&žùP@§úC]…ˆÎ”˜íÑ©Ð`ï5dž9”W¨w@ëPÿ—:#¿„P$x˜6€ ÅO”ñMí@qàˆe‡r×#,LXž2á Ì7‘`KPK®ó¾Î—ï­QÐN®YÀòÈt?ćWe;^“âGâ5à€Êóã5ÚúÌp »݇kð«Òü¸€3ëgq‚ á—¡®Ð@ðKê b’¬4n;Õ ÃlvK›ÛªÍÃL€™y/àÑÏÓret}Dõ<ˆËé‡#JW;Y”®ã94pJ÷ä Gº fq…Å0øD& ÔÀÁ$z”b@`ihÓI¡;Dxª(žá µ ÿ©"»y¥‡Å1\à ëmµŸúÞ±Zâ-MÛ4UBwÛ[h~;e´XfQ(\Tt(Wc¤D¡¤™E‡±µH¯å=-PÒv¸ÁÅ9¿¥Á*ªâÄ8ª2Ì`Ì1´ú Oƒ;TÁ“·àÒC#4Ýg*À`€ï®~ÏFáy* §¦„#¢€&÷DF8‡=Á¹2Æß&2À:>g­õ#ÂJÜŒÅÝNK&“õ¯B0S™n-ªŠ¸?i˜¿t„ëI·„ZˆíÂBXèdЛ†&û/¯oþoEJr+´³O”þhf;JÞM»wS‹’µã™­ð€Õ±S‹‡~d’óÝd8‚Èp~—XŒç1¼BQ®8ëÃA 7€7‚È]0ô:äÚNsn Ýñ2°BËÞ¤&4ÆâØâ¶œ|,RzfÅŠq‘7èILð}õ¢m9ÆãmÙˆVR˜èª;¡E3 ж Ò[G‘ø•šÚÐÅØÜ¡¿àgƒ²Ë0W1"+‘–Ù¬Çh4??˜ˆ¬Ð´Ià‚Øá \.•Èà‚eÌ)¯ ÀÕÀgÇÀUØHú³C „ ÂÉ»¿4ÊÝ ãLJ'o]AoFú8¸Á¬ò’SVuÀ~ËøN?ztF\FŠ®8ÇÓNÅC"šÞ^k“ã>®}6‘]-ý1 ÂKÒ ”äqÜ7¬Ó6 k\GgL~÷líÀl3D…"îÞ»&äACdH‡4T´®Ó#Z‡8xéWÑûJÍž¯WþŸÄî®0umõ8VÇ-°`åºO—ƒ4¦ ùâ(¡¨}‘IHG0¥›Phš‹Ü|D(–ØB2ë©CA¦+±…ây˜ÐÇsâˆ| _„~ÆQÜÇhósÙí¤N²¤^Åð†–ÍH„“(#OBŸCï[`~Œ¿”Š–Ö7â} «!Þ·q~ÂÜ ¾IJ¨Y€üÁõÁ‚¢˜¢ÁÙúo8YÀAv+FxýZ¨±ªÕš=YâŠeLS;˜•u6÷¬IÆ0âGãznÁÄ< 9Ql4(»„š·.£&œtÇB¾pjÈP >XZà)nª]Ä»bã ð 1lÙÆ//jÌN•1’©¤0¬yÌTR13ªsï¦R;;n1`Ÿµ“ÓIA…[¢«.Õ%@ðhîýL— >¤: í¦˜•q­x¢‘àÑ—ñÎLÂÆ§Çeýxßy(]€ƒ…µ?ó€/œ$µ.¸ø Cèmmd g]–íñ^ßSÍþ´Ö ŸéN)1^`×`z>1%ˆ±5¼ƒÛn¥G5ƒ ë÷hˆ"÷ )ÀT2uð"¸âº©KíêwXY¯™B÷&ß‚¯Ù•dñƾ ¾Ûä#×dIP„Imºúîã=M =Q»l©ÎGÃÚCMÍ™ÿX6|Ñ^oäO a—äC¨¸èYërÝÊ4Âßt1Ð2Y]ïÒü‚šHRÏ9gçWwyî5n½ƒËEƒ¿>ðßpªÍP-ØÌøˆ:‡ƒýóUFN'°¥ÁôˆO) dA&0À§~ÃO’Où¶$;6ņ†¹^Ï 0Ÿê\S:Šg- Zåû4vˆä#íYä+¡qg¶¬ûÌŠÚÍÆ»ý &'=‘U‘×;uñô†äèTzReò„4ø=)‹}IyÒNiŸØ¾Ï2Òpms³ E¹eAÆ]cà»XÙó¹2KlÙlD7±Ó€Pƒ½ú u¨@uÍí‚XË ã©&ì&Iq ¢îtQ†š¬­÷„h‡*K:滟ã®Ñ­d:%oÖìµÊ xšè#}Ãuãêp`^[ÙiEÃÊùA°/0ÓeÿO×·'8ï )ˆ©Á´2‚Ò¸m˜£3=JfÉ…L†è^äŸ"¤Óº½)ÇW¢ŠÜnÝâ{p1;~«ÿüáqÓ‡žZJ=&±R´55M“¬0’rï«ØÎr»Æ>3 ó+ƒ‚13`®0V软•Í(Ý:aäFÑ5k»6`PÞ‡±ƒ¨{¡7dBàhSϨçtéËôà–V œ8° z?a–Eù$MX§ï_·–Oùb¹KxJPt’X䡨±wsñúujlO <@-¬O*ÌNû 5$c|Ô­¬@4ð¿ÈZÚGH…õ  Pj–IÖ'•ÑÏäùky&nOY\ÑòI]vÝ:‰‡{ݳHàçÂ"Ã0I9²ˆ»—ºTyPËÉ HµKETª~Š.¦y³tnžÅêŽN^+›mVà†iÈ?H§]¬œqàÄ'ýÍŒ.j˜=ãØN'¾ÆÏ¨@ùÑ`¾¤ó8\Ї¸µ‰õjÖ¤—8UÖO|PŸœÉ û9¢ÞíËé– •ýúæêK¼¸ØœÔ4Z/rÇ58úÖYÌ(Û½ýz÷_»WW\c–ŸÙ)¡À—»—ä ‚Š­0ÌÃo0ô„Ùq0l@ó–߯8:ÎÊ‘V‚uU{(¿ãØ"Ѹɸ«=½82Dø õ ñïÄÔ¼CâñÕ7¿¼˜Çîwß]±Ýo>W4Ÿ]ýþŠ{ &6¨•/ 0p Á¨«€;0gyƒš³b±´º»µò» V¾$ØJô2DF­Àÿ^@LÍ;$ ~¦˜…IKS)ÆØ=áGé¤_œ(ü(¦V~Ì¿+?Ö‘ÛJåw£ò£tìÞÊÒYÐdˆð³òcþ{15öybFWA­|I€%^(€'f!¨%nª5"·Õòï‚Zù’`+=DÐ˵Cü{15ïhVÚg†NšÞ-–¢V¿DÀ@4ü'„Þ¡¨ ‘;ZC3ì«öç‘ë—[í!€^‡H¨UÒß3ˆ¹y‹DTpŸ'ftÒªä¯_¢ÜÎÝf¹žÇ­’?VkDÀkùwÌõKݵ‡ ÙëIòWÒß3ˆ¹y‹D3iŸfaÒ 4b–¢V¾$ÀŒ5‹¨p#G3ʃqJ*H‡=ÕöùwA¬|I•"ày„ŒW ý5ƒ—·Ä ûü°¢“E„Gù’–~ìµH†8( ¨Z!]ÛçßEt”/ií—¢hÈ#dÉ‘HÍàåÆ-Íd}FXádÅ‹nL1>‹E\”dlð"Hϼœ«ŒÉR¹Öª6QüƹQ«Îa¨D¬„W†‘ñÄ¢•èJzklÅwÖb¶´µ#œoçw&rè׿¡‡ri¢Ÿ4øI!Ù>^›ÈÀ—öÁÝ‹àò‚ëÀDØÝüëÕÍ/CfMþ» G a~ì^]ÿ÷Ë)0¯vñ–qN¡Ôàcj`ŠPà‘˜BÌz_‹BÑkò=©½Ê€é냖xY›DrQÕ"¯ER×6}bG/ë€_×âm©nH_E-~}ÂTz£ÈiRaœ ÂBòP Ʀ ޵—^ó3¢ö)l©-ØjÒÓ¨ý¯®^óK·ÿ=i7Ȇ¦aZcõ(:Z£]FÌ÷p/™ôÙЗº yÞðUµ݉©1¿á½à½ÔTÂû¹¶ÂBë²sÖ† 7 Øù…“ˆ3"úiepŽ}[ç¯#CÊQ"þVÆu ã‚·ÈKšsŽãþ„!Ø´È ¿ïv9=݉vÒ'¤Ì61zªAÌ£ëXTÐá}'BÀ¼Ø»RÓf“Z‡.÷oÉf㤹ʒ/T†ƒ2ý£_…ž¡HHºîðrQVÏÓLb ;/[m¾‰Æ0­8!r¾Â4ÞQIo |hdš­¼f7ãIDÏÌÑ_y¹•7˜k·Ì?dUê…q,‡ Ó“]JÐ^:œð^×Õy£À "ÿ9õkx¨akåVæç­Ž­myhhý½$Ä"5”û¤¤ïƒ•Õ^\ma½I)ÅFœ4>…ýÛ´Oö´nÒÌ™®÷|=+š;›Cß’r¬D¤óÆŽŽŽÎÏCà͆5SøÂGG×SryæÒò3 æÊ©Ó@€þìü]¶Åð&¤-™š*šÍkÇçåV.nímr3a>Ó$Zf¢’Nɬždp& æY‹dw(ÆbÚ&›]¹ö1µmá` LÒM'vÌP“a̧ޅ°¡ÊB±Ueé¼Ûú<‚Þ@#Í®A¦c}èUìx¸‘[šÂß[¿4‹yu± (ØE·;€!î_lÓß©ÁêÍ6ÚæËj©À8"T¼çE¨Œ÷Ÿ)T.sû„æ4¹…1¼ÿowyžnwéî8 àŠÁå&õÊ›Õí»œñîr“»Y;­Ú"G•j:—Q[]_¼~á„@à?(Üô4÷“sJoÕtó²íìlEçø+³¾xõõJæáåU“g/ÈgâÔü€=Çãf«‘v«ƒ<Ó vÃÂèÎ=Uáèo"ù"».ƒ¼“q¦çå'^î¦úRzÚ]ïãý®b®ä„ÇþÍþ·ÈÕÞ[ 熢S€Ã¿a;/4°øþ°2ˆN¯;ï¿â¿­íHÿàÓ höÿŽÈÀ*2µ/3Kî?~ p`J„@LǬ ½n½uaBb¡ÆåŽ QÑ=câ@˜I:¹‹”ª–b'îŒøÛèÅPÏ?I}ƒŽû®Æ4×W:ÄÓÏ‚k,™Z€5³ÀÝ>ÜxãÝßÇDÃ’aÒÕ•qöŒO6â0ŸRlIx ´lKÍpŠ£.\-®ÎK3OÔ‚ñÅÉQGoÜÌÜœ6MK{on¶pÞE¢õš“\‡”¸~]zR`õTŸs‹c®äçpÎæwÿ¦c›”ZʇЎr É3ûž0ýáŽ—Ó OŠå]€ÀuB4‘ÿ7m9(:· tbK#݆%ZZC#b­¸Ÿ•£²hˆt‘GüªVb›Eët“ëD(ÔVCåÉõàØ^Ý/2$ý™„0ÇJMEÚäÎDÐÎN>& ÐïùØJá5 jª‹Þ-ö]ØU+oºwŸ§eœ%¼sW7רv I"”˜ÍQ`Ô Mö„Ÿ{×oÒ‚€Ù&gEû=ÕÀÒt'`½CEÞâ`ÕÒ*˜áª=þ_žYYCdÁ¥½‚€G»UpGÞ ‹I&ÿ6km¡Û.1Ûß(}qÖjTR8Qp!öÅH=êÑñŽ×àøç¥W€‚ÛÙ Ú ¥.‰§¦§-Ò*Λ mÈ%o±¶wºÁN)’ŽR‡<ò>X%Õtr1!ñ“D8¾:2Žã¨œ)@­ÏOwap 1ŸçÃ3- ’x­Ìj±»‰ç±:ùõ8ãAøb¡¦-UÝÞ¯qæ ˜Ó$²°ütÛº;W+Œ-Åg;½ïа¬ì?‹ô½Šô@í›in›UÉe[´“N´\Nuâml 6úÊHŸ·Î.§^Ä„ÝI^û8e˜ÁF´Å; ‹"!\K%øÌŒ|·Ád¡“–ɨ­1 ÇE.OµNÆd×vmëæpuy0cÖx×5˜vS“v3ÀjÝ_ÏŸºŠ¯V9¿Ú_|]÷ßÖ¯ïkñ¶Ï÷ _<`…Yi¢Iógù@ðì½Rú@p·ó¡]¸ËærV`Ä&l*aô_coü(ïeFi£D6H´s_y±øÈ‚éÄ Ûz“×ÀÚð~ÉÞäU˜WÑÝK¹7y‘ÂëÓßäÅ $¾poòÆKð'´à@§á›¼õV4~D}#–áXøI¦NB;`Ù‡ˆÏ>~Kìø -kste‡`¢Ç-‚áµt)nQzÙˆ‘sУ{ØÊ=­^âEâwº÷ûÀûyNÛ€C̼ë3¿>ÚÛ,8<²Ä±·Y„ÄØÁÞfɃüŒ_ß¾N:|}ýÀVÕ미5¤io¸ók"áÝvÁû îü.DÿZëìÕO¿8i9¾Ö ³:|Ê"]ÿÌó`]½PjMgÅpѱÙ_žê]^cX?½yäÙ`ú¤+MfÚ4M9…—;¢i œz'ÓTþ„¦iG¥“LÓ­R?€µiº‚”΂;Ý+Û^h5L¬8 â9)ˆË»ÛÆx÷ †Ÿ¦{f¤Å;O6“=3–õû +3yµsq’™Œ2Ð¹Ñ *[f²p eÿ⦬$FD/i'wl>·“Kñ-“]ÎNFZ€'{ºŒ—êruQ;¹[pŽi¢cc×o”7áÏ`';Cí³ÌÕá\H@’«Œ$Ra(ÖôâÌ=!™Ö4¾6ÆQôªêN SÔG öăcí™Ú¤Â—ùüê4‘+ErïÿEE—Qendstream endobj 191 0 obj 6495 endobj 195 0 obj <> stream xœÝ=Ë’]·qY½HþàV6¹ckŽñ~$å…]~$)/"Ëq"y!“¢$›CÊ$?¾>Ýhà÷Þ!G”kŠ žƒÁitýF÷O±ÉƒÀåÿ§wW?úµ?|ñæêOWRŸEwpÖÅÍȃ’J¬×›²áðúóÃ^^}r~3!ªƒß‚Ò̦½Òò`· ¢·õþþ;åÙ•Údpðöç«4úá׿¼’ZèMÃpÁºM˜ÃÝ•ÖÒlN×–W·­— r“–÷*-¼—ZlQ³^Ô‚½òЯ¿@ZósùïéÝá§O`"¤°€·÷€þ“çWy†äAk½9- ÓOþúÉ®òTØÃ“_]Õõ¿|m¶è´<ƒ}~þäêã+±ÙÀ¤ñ›86êÍŽÒ@ ”x6Çç?€Î3&¿¼ä‹Û]ô²Jn±~–À^Ð @¹è`ÙØx>Àzªà zÝîÚ Wðró®Çê|¯Û+%ŒÛœmã)˜àß©ónÇ&è£` ¬íP:ß i˜cØ`x#Ä¥ó½nwmÐË hÝ#u¾×Œ<-Âá«h€sʾ]¯Û]Û’Âóݘ‡¥QŠÍC@‰ò¬ó½nwmÐ+ÂêHÕÏÖù^·WZÀêÙÆÓåÛöX]Ðëv×½”­Ó!u¾ÓŒ<-`†­–ð‚n·»¶%…ç»M•Œ`%TÙ%ÝnwmK=s¾Û q¥—2l:¬€í»ÝîÚV2tA·°ùj^Ð m ;2×À‚±“ÚF4‰•C0‡f?òûSøBÛÌÏÔCÙ,uÞÓøAip‚e\Õ#Þ«MYÖéìz¯z¤¶5P!5QǨz¤bQzT, „޲v•8Ò’J` ºjCf.%,ˆªª¼×ÂlâN%PgÖC™ÍGÞ ÷Ô†Â^@a¿:DeЊDíQ¬:*žæ|À£¤ N) XLÚ bJ-ˆ× F%Ma4ÄH“”Dhê;‘F „ ÄiˆF!Q{$+„ŽŠ¼h“2¦/•´6åX[j¢¶d… $0‰ôUaÔ| i%Áišu§J€ÞIÚ[KÖ BÖuR( ê@8€žŠ¼x”´ª+ Æç<›WÞ c Ú[(Ó²•55*nÏzø¢_ „úN¬I ÄX€†h¬IHP‚#èHÈ«öø¨J:_ddtÕ†‚–Å$Wú¦S+]ü&åXp«Œgèè¢B‹Ö4D£«àP;+€Ž†¼\‘.®-öáYÒÖRt€‰E@‹Ž¨çªE R¦Xp¨„bè½j‘ÚR”@…P”D£ª‘ŠEéQ±,:Êâ=Vâ’Èi-¶²–ÿ¿c-Ú¢_¤4˜Rï Åœ2¦*Uú¨ÊßTð›ÔíÃúžAcwjfŒèÐç.¢CÕ çwT;48õ ä „ý¼b¦jÌpé×#µ¡¨ž©jAgÛž©ŠÄ£iµ¬x¿¸S[!Ð;)j =@HOÐM‘µGA²Bè¨ÈKö8)Kb;¶w¬¡ uѬñºíUI‹àݲ”¬ àýª–goïD5b€§!i„DíQ¬:*ò¢=Nʸa àWv;c­¥hî`Šiš½îòUÝ#f‚J%@ïUõ×–¢¸ @Ñëu„ªù+Ôƒp$=yñ)i¤+µ”¾«wh ™µ´ÅÌ6£Ú¦11'hnÍ“²Zø¢a „ú^8§6Öª ëÕ!*sV$¨!Iz*žæ=éGI.œñeu$w¬¡ ³Å·ÔÝøJ¸±<1«Á-ª¤€Þ‰2j ¼á]Fh„ µCA±èhÈKöébzR+èÓUµ–¬ ´ïÔ6¸•+2Ñ#’Àz8‰°z'Qo-Y4YY´1H4,JŠe0ÐQï±—DKír‰Eq–[KöyµP"•î¡Cܪ²³1ì/¾³Šˆk¾2½VW™ŠŸ[¿Í~pMžr™zfˆ{^®GEPÚdsZ&·³RÔZ2fÒ%¬[ÑŒÊ[éÑoÚ–¿YˆVl „Ú; ØZ2JíóŒrƒNDµÁ©!W èç]šÇF¦y…µ·iYOöÒ¶èÞ[øY{”ø²B¨ïyŒz©³D¤˜em¥Jù½E ­aY ttQõã#—îãä4®JŒ#tÛ(d_bì,4&FÛŒôXbüÉñí5Œêœ‰ñø¢=~ž£uêøYk}^÷ä?¯€±ŒÅ"æ_]=ùÁ'G}}o›“š?ªöµÀV0ÉÐ@[°GÏ{áè8Î~ d`͸rɹQS¹îpcÅ&}ªƒþäø‹ë¤t´òøÕõØ´¶^ùãÊhíM<~ƒÍBâ Ž¯±·×I½Q˜*´þ([gÑÿõúÆ@ä Ûñ'ØWæáøé§­Ç[„l¬ˆB±9šPðÂozÆZ…SÞPå}>kÀŸ_ßxðLuÇ&T§‹È>û:S«–Ç/ówʇãŸqj…ÖÑÓ4 Íœ‚Ô¼g?¶Ž³§­é¦™ÔnI×ÿ]+:ÛµòÞoðÙƒÉWá¸ÁÌÇàÒü6+£tg¿‚!AUzàÓ§=&õ¹4ÈäÀ_ñD>C¶RÑ‚¨$†zƒÔ?Ún5&ŒËûl>9Ÿ]«JS¦]DãŽ/Ëb•×¶5–¿ÏÐ ¸Ô45©KFP±H¶Ç?–Ųݟ_2ÏÚ3RyCdÞHµYc}¦¶`m¼çÃE¦0ƒ‚8g³ ÓËàB'‚/s³·~µ8 _­¿^ƒWj¦Å÷ŒZ8þG‚f…шƒõæ Ɉ0 Õ°?¸¯áøñ#€ÁÕR4>/cZ{üþœ)8À·¥·¹?‚ @P‰O¦æ¦L²[š‘”[qÿK¦)höœásÊ{<+«éQÛ$±ñÈOŠÄf¡ ³( ÇŠBì(ÚOPXÆÓŒf.ê¯Zþ!ñ‰ñ¼ÇóÜŠšWµVÑ?jâ–…¥—„ÅZ¹§q·ø0¨ .œÎ=ê|†šaój4Ï=#Ñ4·$Çvs`¦>k ßì°¨lèJk\Mé”"ïñ¼ÀÐüÚš„Ü£­¹@Nr‚Mºï’%&@P%Ib¸®d„Ó(vÆȽX7$3ðY''™ ä _ÕÒð¹{Õ$©ÉLŽLG/ý·SGpïBèÉWÐz‹2$n‚Ç /ç¦Á¦0Ss‚›°Š*.tä&èívÌ”²Á²LSjÝÚÒ¥•G7gLÅ-„Xflï“¥¥xK; BiÞ›¶÷üFÙ?oáÇpà^‹ž¹ž11`Æ|âo‘‡¥òΟ4´GAÁ5úóª€Oïò—  _èÞæ©TÃZ'OÒ…Á3äòXIç°¹f`Ó½BöMžX Ÿ[ŸèØÀe`lãHO|}m!‰À`¯Òð"xŸ43DöZÈPb¥`q‚òµ)öC_DiQð¤4K¿Eà½yéóWNð=ˆ5Ìâ¡ûæßzV‘Å2JóȸþOÂÕ*E¸F ~õW2ã ×ÿÅ樓‚æ¨\Ýf¥ªÇõÓë"Àyk…MÊ')^ ƒ> 7Œ !–åh½”+wÎy›ãüØHócte~TˆîòùÉ|޼ ³ù¥¨‚øî‡øMNi;C5=†x ®ïÂwLFúq§|÷ŒñÏW9bµB³»´®V‡ÊâÁÎIén¶`5ãÌÖC¨”ë÷ëãé:]ã‚M”ÚÃb°c™~Á¦,³’¨‡d—'Ëp!#E 0Ù:@øž¬•ÔÑ¥(³¶~Óß´¿m­?«³ÉÒ˜5Vøä%vÂø’NÐR‚>¦KI™2c0{Õ¿cJœ¤°t×,%ëžÇ÷Ï/úÎÞ")Áp*ÎW8€s¥Þq…{æ ,GÆöàTïX:pl ÈïO)`TðÁT |9jO„ˆÀÅÞ ž`á{ˆ¿ºC¹ß(ÈlqŒýR–Ï.6ÀJm^ÕLÙ?$'É ef3‰5I¨ÔÅESx#-úf€2ú]ðYúè—i­boŸúpø{'¿ZHîgÿ}™»›QÏwñî}Lãeñ#3ï…9Ò3¡ÇÝã[F¥Êï(ëFIð¾i­LÖU{üY}œMy Õc•õuÐKèÏPVz“ÍcxG”õ}P6a†2sØsŽ3|êWÖ*IÃûLvÆøýH „®@šTk\Ü|Ÿù{pžK m´‹ìÑçØ 'òLzêã‰Å~Ïÿ¼ÉbILŸcHE}) Ç6Öç¡Êdn’,òŒç)x8Ãi¨¾Ø‹\—bì¦\ͪq”þš! `·Ž&V]²¹ ¬Í¬à6Л'sv:šn+”×I¾#/$8çxA϶ӗ¦ªOµ](Ønd hÕÀŽ,Ä]ÉC©þ´ Gc"@³]‡7\ÿç¥^uá+~¨.‹×/î3íuAû¬ðhq=ÞaSÓ´7xK,E®Q)j3©Gxo¼³À¯Î÷™F"˜¨¨L¼aõ4:UŽç`ÙDp9a<¹Ê¼Éóæß-_„þëšéUI2ñÃPn=EÉ -¦Y)³ïL¬pªœ›(±L9I•Ä;$d*ZòÏXõ•6J™5XÝ¢¦`1s¡ ¬Ï~–pãa•Úã.ƒSnv²âÌy pLƒK—ö›"=É×TÀptaºl‚W6ô‹2 ¶×&úx¬»Ks¼eb3YùTƒ?ˆ^ú^Mí­<îhøÖccêy³Š¡ËTõ[ëòf£ø,ò¦Å«fÙêHÓn Ú ü+ü’='*ÁKœ¸àMLÉ?Ã'ÛÇx…S!R]J‡ÍÝÆ½Ýß™ñ!Ê0 oYÐ+_h°'3»;€×¢P„îv.-U+W‘; üËìƒ KêÐJ‚èÌæœnõ75èãî8£ŒæÒÊ‹¥,/¾/ЇoY'æ!o¯ ÒX%_åpq4‹íPsC÷vívá?­TÿÚ Ã5L´ÔìšÌñ¬Ê¿ÅÒH!‘4[ÔqŒ’¶x¢W)¢€iL.é^ã§Q_cæû0¦ §Ê‰xïìñWÅn¡Yž¿¬`2ÿŒÒ‰«2;†YÕw}I,K.k1ô^t¸N.{„jº£ÌC:ÝÒV åê1Ï®g§;ž¶Ç»ÖáëÖú¢=¶ZìiA/HíìgI•ÛZoŸ<˲¤)jœl”Lno©Ó¹ÝrñsEð­mLÞKžB>/¿8õË íøºŸ0H]EuR½•òfcl÷"å%ʼn4WZ´N(ç3 )óêÀì¶Sî4Ù¢ÏJpÔ՗2É´¤]råf6”•b&Ëù6çUe˜ZÜùþ]A®7n“;Æ+Þæ€”í5ßÅKB–&]Úúæ7ù ãã{M~ÇàéNˆØY<‹.Ÿà5Ÿºà }·»½ “yºëçmÞ”ž9‚¯ÚME\*y>©Tm&3 òåÝ…C5HTvTîЊ@“{PñÌÏ)²åíe·/t7ê'xrÃã EÕ=@tæø‹ëNõw¦êuFµžxœÔv¿ŸûUŸQ6¤Ý—õR‹“)άeÚ°Z&œL<×¹Ø}½Ð%L^ -µé¹ˆ[‡}$6–çï¬@Á¸—„ #_‡?Ž1—É`púãüèaÐù/QäÇTØ:Ìe;ܳq8œüÓ„A:ð:¼‚šw—ýh>”U»Ã[Aäý­Ž!¿Îñ·—'ÊÀW¬>†€‹•ëÚÃ7¹KÐk#÷¼-mDZ ·p¼ÚÅÖ>%:žî=q/?ü=ªe˜3†1/gëæ„«f®Õ¹óqª ëjeï#qAá^ÏÛ¼ZFînP®ìËýÛ±èä£$´V0w‡IÆ[÷u¾Ïûò°%[O7–ybMèûe«’r×GÛzèët º•ÿãüˆÙ:&¾sI>ÕJ¿z3Üú·sà½Ý]ŽçE:Xéú )“‚7é~ÂA¤ñ¾€àßA¤áC ~¾ÅeàÙ›t+À)u~7ñ„¨÷ôÆpg6˜Þë´êŠ?ú¨I_zçåJ+íÂ`Õò/¸è䔣òÛ°jQcÙ£¼ÿÔÄ᦭‡ô<þŒ‡Yü²5o€j3M^Ì÷ùAo<×ãû4ôôØÅ$ZK%ýz®q¿8üX&É•¥ôˆ=¶SÄB`ôtµ¼Á®Â 'ýôÑæñi…g¦£uiJKF«Záíϱ\tŸF®ŸdëqxYÞ3 vêÕ¤ÝÆ 2þûýü] kqBƒ›Å±+¶¥_íßc<³Ø¹¢“õVŽÚBÛ…{ï­“î ±m[æÄ†mÙAÓÅni<ñÉ.é¸N*˜n¼Å0°«Þ 8çzýçO®>†ÿõßendstream endobj 196 0 obj 7883 endobj 200 0 obj <> stream xœíËr·1g&ÁÊi™ˆ¼ñÍUN%©¤Rq1'+IÔÃ1EÉ"%›ŸîÆ ¦fgwÉ”)4šÅ~¿ýx.y.ðÏø÷«÷gøÖŸ¿½;çoÏ~<“ôãùø×«÷ç__Á€x.å­•çWoÎÒ‡^ÉÁ{¥áõùÕû³ïvîâR ÚJeÂnÀg#½“~g/.¥Tv»¿ÓÛ(¤Ô»øl’!ì>^DÎxŽj÷=›ãvñöâR{7xüÍüö& N‡Ýkö|GÏí¿¯þ »‘ò<Ñ)gh;aˆAÄó«¿]ýî»`TV‡Z{(„ÕÛTñLjm½Bç÷bTƒU @œ_ß°á F'¼p Fïöa÷ìâÒ?xcv?Jhýî]gÑWÊÖZ#tÔ€P³ûÌó©ù{¶9Õø$ À Œ²°ã>µÑrwöéà±BÅôúùó¼PB¿.ÑïÜ $òÔÕ5pЀôÔÑ€ïçG„U£è‘;èm‹˜ h'Ý4Ùoç-RÃl›·òaq‹ˆ4ÚÙÝ= °" ͱô=à íÏÚÉb4'Ò둟€ýálŒ]¢î0Éý8‹ŒÖ7‰ÔZ„ÖòD˜¼¼#D ˜X‰‰êRÅÌÒAVççqŸZùLjzÿ6-j¬A¡YÞÌXA‚\Êà©üù¥TÈ–2Q‚o•íƒïš!)QÈFC‚ p TÄÛù»q¬ñ]}WJ€ò ŠKz_ÒûCëAn;lÀàdqºÞ§9\ì|–DÖI{BÍ—æ3¿*WÉcxÔÖ´˜ ä†T³Qnð@Ô«¶†á_>¤íY ÏWR÷’’‘´|wl–j£m#ÑýîËr•²fPJOrÍ¡cxíaíçqÊV2¤¼\hŠð$C8¤ÁD(-nƒ3#/ÐÛqm «'^ˆƒ|#QG$UJ©bæ¡Ç=h´BÚMFÉb~em —(Vãw@ô4V{ß;®§PÀ^Ï¢û3N¡Qת &@W5' q1\¶ÔD¤…ÞHðÑ$ŠV_*¼T4d˜‘ŠTfˆ:†Šè0X= è.…ݽ ƒ 倷 Õ ³U Z²Á=dÚjîÎó"® &ô^OU—Öìý@'á« NjF€I¯ÙÞƒ.­W¿D¿ÊJç÷#~]4NÙ´EdĵDmwÈŒLØ’»‚=RoÁ B©I½=Œßù–¯BªbôU¤ë)¦ž †SÇ!8n·ùÌ7ìÃKz6Zø˜”P èi%þ7näŽÍHkc€Ð±\„°Žá¢Â£jgó|­Z’–¸H«ÄE¸‰ÇQܺÚ±/)’XÆ©"^¸®œ.øÞ¢5α`ØË-$ÖwÀÙc?`3Ù'7ÃÍgG˜ÝEAnhr}wͦc,œa:ãì•ör ½È?'u =‰ø³!§¾ÔÍȸҘ®'Óq8?¥ù”ôŒù:X†Ž±`fñ.Žü`eßaÔÚöz_§£SÔµ%8D—:šÍ7‚ïeéÎܤMT *@ø ƒ_à#X)iOt)ÆIu)5ÚO¾TˆYó£ÿ˜5ÿ6g–&“·r™¸žF4ƒCBt©ðÙ„¢µ«]D{ü¥KTÑÀeT3RÍT÷@&ë7‡\&úÒs½ç0G‰—dÕËÝGœÃËFt|]˜G8ð™u®öóqe0ÅÅë»ô:l5zHg'um¨3³€±² Fh¬F_×éÌ}Nåéz58SçöÀNÁõ~¥¤p‹`V¹€–‘¨â²Ê :±b,1k"L"ŠÔÆ2’¦Žá†Y[É@Ëéö¦á§'?LNy‘ `ì{]ŠKé;+Ð{Ë웕CÜc‘Ûn6…_¡Âà=×^ú{6˜É¸¹¾1Ìt]¡"4À?Üá¿`xòÏÚß"›E&ƒm)–=*Ÿ(î •¿W±|Ÿ„ÀÙAç”hO ˆhȾ 4z™ßû‘Þ.Ôò€Ûs…ìp“p3aQ÷ª~MïƒVÚ´¶ˆâ³ˆ$ÒK‰)SÌ„´*$Mä´ñO<Öa$ø €‹$§׎7Ȧ¥šâê°5©£-åîí‚·9Pùðµ“ó`™ÞF[¦Õ¸ÅN’F›[äð¬•[s\Ïœœƒð4ÇõKܸºžZ­¼C3*ºN[ˆ^öLbUyÀѨN(áÂI¡î²ÒŸsê0ÄøFB›Dç3›%_1óÑ &ì2ª>Ø¡2\¨ ¼ûr»N>»R° ³3ӣݔDÇ•C\¯ŽÀt ’g§eì/!ÑN„E öà1Q qG( Ä8Ç~ŒùÄ£R$ð“ñˆÀ¡®ò ²¡0!/iXpxÞ7SÚu3»ó!Ezj–Ú€¡dŸ|‘ M”¦XZ´Ã2ü¾î¸v=˜°ðøpÀÚÆêbÇIîžïÒž)­­ç°ãùE>ñ†èDÁRÚñ_óÜ_ãe„Oy®ªZ©E­TPªh"íWóê­Z(F¾Qši´ž7œ¶Zi6§£¸AˆÐE+Ïûäï¸!àƒKnÓ(•ÀƒÌ>KoѾõ,÷+f5ø®ïGÒ€Cšò›,m¨]……[³"D1p¦Þå„öäcÛ#]Ö/ T.×ePÄBvÙ¾¬(Ln4’àó¹Â2q£VÆ€d¾wlbæê13–ª·ÂÀ*µg¶‡ÖŠz+\ 28_5CGwæÖ ™OÀ÷3ÁpnØ3@ÀĈs&’È f0QMÝ> .’'n+ÆiÍ4NÎãt1Tójñ£ž´‹Íü£XÓÎãü˜ng‹ùùGWüX+†ËŒH`”ß$Džâ%@ð$•©%X+i*•¹Þ9Zà5„F‚þ'üÑM-ÛBbÓïª ‚-{XóǪ̀V³®°<Lj €ÓÝz£ |¨Ê,5c™ŽzZWû´ÐÔ/wp–@ã·0QøZ¬çÇÍtÚi97”¥èÔЇü&þ¾MPJ,©Ù cc/À9 M‘Eµ4 /U¥ ‚[˜ñä8ÿ’Å`cS_BB)]k(7˜Îs þÙS$j±XiirzSKXk4þ…F[a4È(ªöà«MÆÀ¢¾'þ=C‚‰ðä´ ‡3ÖìYߦõ½±§ñÌmèø8¯N‚:¥vUwGÔº&‹þÛ25’’€ F&_ Üx­õ!¯é:w2YžNwLÝa‘˜žV‘¾Lˆ”4îÑõÚâHCÆ„`ÚífA^§ºÙÑÝ28Ö–+‡„zºÏéQzs¸ã¡-,kiÂõt©ÈùlT}UøÝ‹T'‚¸ð¡äe ÄVýì®$Zi=;iÈ„ØïêxQº0Z‰U‹h¢WÒr…«K©ƒD€Ð 4hw Á*ÊÂ_º_!‚æ ¶§Y;e£ÓŠÔ(EÁJÕ¶‰›”±‰µ¦»6]&Æ{ª‡#‰+Ï ÇÖ J·k¡ÚRá6™`Îu¸ƒýéú„övûkTuŒѱ¿´’ª¬@Ÿ¥XÏU}ëà,Bë®þe"îvÍšB¹…~§ýõÆ8€ÏÇf7Ö¢ó)¨Ibaü möÚøwЇ?/³»üTáå4yÒ¸&-Ñ;PèòÂà[`wœ0éŒCo( L@¤Ã€|ÈúéBïÌc.”zJà´A8¥mÃuó2+âÿMžÛ¥A¯×Æ£ÎÊ8`úçÐs†bëÔ#ž34"µoViÓ¬ê®Ó>]X ‚`‰Î{éÆ1Ãóã§‹|Ìðúâèc†JÒÁ¼G:fHˆYË(,'`ÀØSÒ,º>fˆou»Ád2Aiy×±n<Å•‡ÄÛÞìVÒº2`CHÖ=åÀ!µÆÊÓRµ\”Å\d¡ {¤êÆÉ…îGç•ñƒEM_Eó„Àjti%^¦†÷XÚU>w;ˆâ£§þjUw÷4-UG9®ämøñ îp´ªþ1EQT’æçr¨;ö±GË0Í”N}ëȹœ MBí룘ÅlŒ”ÒŽJñÿçŸäa*‘Ô*^‚VÛ§ €C©öÚgû§y)ºr¥ÍñÍÈÀuäÕ˜©Œ¯«OÚN‘ñÑùô5ÿg µ·I0r ~a£⫸µ¥½¸çÂöø£Ãac®ÊÊ߇´öÉÑqá;ñ¦ºótQ*Yµ5m3.èõ„wzÍ[‡{ä«TÏqàJnl§<ÆÜn#ðÄÖ•±9Yø¥^$I¬ïh³PÖb¦<·˜ôÒ »òÞá·µÌÖ;e-a¿úÕ¢rmƒhkŸRPªeÙêÕléb°®ÎM¬OíPßZ´›I«HÖóàCÒð.³ñ´†_Ôžn×8¨èqH&ˆbq ¬,Ü …Ê=¨6ÂwÓ kç¥ í‡Ÿr‚Ý$oˆT‘èMªhå~ ¢V°˜ëôãÒ”hê—L×ÒÒÁ2g«u0è.%ɼY¯´é@Ÿ£³Õ8fjÖÁœñž“oé>Wçv­<v…4õ~¹ÙSijòJðØ<•ék—- {ZÙq=qÊ +ÊÙ· á·¹±ŠÂ /u#==ËáÈ]ƒãÄÆ¬Ÿ¥-uó×Gt øËÐãÐH%28ð;|£Ã— ˜ý–º›¬uÿnïAGWwh¡˜ßw7Á¤p éºG/oy'fµ"ÝMÇLO¾¥À:<ú/·ÝR€ˆr­ŠáclTi½›é´V¡óõø™Ù~s±ó]úÎ…åR —óO‘èš&ÌçpO¥Ýø¸à¹…ßÂt6ÊIt¨¶:œX7‚­RËã+ ¨»—àG Âp‰AÀnŸp¼åçƒa.¯Ž¸Ä `æÅwÒU„)úÁ†µµ?¢-—~Ñî„T [±híè¶Çd3(*è%¦;´×²²®gõªêÓ•>·ÂŒp–ñà #LtÉáÕÔ#¢‹ÝŒ×]¢_°3Ýã‚v¡ÄèuXíQTätát<ŠÞäáxÒƒë÷-©r«Ð¸ç(¯Ú o $xÝq ÊØ” 6mËÅÂLÕß<ø}ZD«Õ@zBï¨à–X9Øž–k4_.¬AKe™œE+Ñ´š.tý›¦—Í¿|ayøuo‰Q:Æ%Éȸ£Ò,l”6­`§>§ÍZe2ŒRóí /©ðfŽs•ìn~ûz~ürQÞÖ™ÞÞäÇV O‰ù {:–†ÝøË3t2’!_ °ñÌKÜÂi¬5sEZCv‹WõP„Ú¹U០>!- †`—ç±’ÙkDè^>°-¶ƒ¹mÉI[ Ggt~6^Ážbí»ÞŸù%Cðlt!z´9Hj4BŒÎ¢ExYÄ1õa8MMKµÀuÒ…T´M j¯Œ)ØÍì³>¹”E<0ŸOþKI¹f¦ò!Îz³c.”§·÷óãí<àe=v®¤{·ܯjàäpxjÔ-Ž•ãž¨È4ž¥Ø@éºÁ7*L_¶ÐëQ¿Î™/kzδO} é ÚÓãÍÅZ£Â#ОVa¤ý0wÝð?¦½í]e˜i¯uI·iœaV(ùzD'T•àx’Ž0œA„CB*?…Aï4eSË!Þw+ƒƒo],ÍèòJ€ºI¸Ê®¤©}½1„É7³$ /ô{yˆs›{ŒâûÎz«Å6pó¶Þ‹d¢ “|/R¾ÑÄ…ÖUŽîÅÅ< N‰¹‰dåÝâ¶±žþÈw›¸ºJý$gr°±R†7!½”Eœ^†n‹õMZ÷ô;µÆn¨vŽ—c¾ºã¨[çÏqïö#°€ï'»ý.Á7;åö#„0†âö#•Þ _f·Ü~„ÿO‚Ú×çQOnŽC°Ÿê$9ì"†Í'ÉEjäïl(§7—J’w6á÷&k–­Íx€Ê°Zµ§!U›É‰*$êÁ…úÿ8øz$,Ô/š§¢Ç9Γ-ÝÚø–VåèΠN²6ŬJȆÅôÝ®Ò27c`´·‹&ü?¬ªª“%ûÂôÈšoJ"šÂ`«T¬ƒ+Fxg~‡çÐû>8Íì6·YÑ„Oœƒ»K˨êBÂõë¯P$ïG¬jtu“_àÁØÅ†ô2Yc;o¡›_ª Ô«±¢=>ÞͯçÇ/ÕØ Üä·Í;Gðâ)åxòŽ‹$ÂJ®6‚HIJjÕæªÖV Išl„´uX“Þ^Ï‹øŒÞαy'æ"1o{m´•¶͹Çhé‚þmG'i´«k¸Œ³{“ñ KÛƒ‘­TéHºæÛÓMdÛº‘UL×¶”ÄNXyšÚ!Þûx§!¿áµ® È[«¢Ü}EÞö6¡*¶q’ňˆ°)6Þoè=Öb'¾b­vc¼JÙ*÷0Xµ¸õKäGÿÍÕÙ?áÏC®³ endstream endobj 201 0 obj 5294 endobj 205 0 obj <> stream xœÕ[YÜÆÎóÂ@þ OœDC÷}ä1€“ pÄYøÅÎÃj×^)ЮdË’%ýúTõAV_œ­V@,¢8ÅbuuÕWWó§›ùŽáŸô÷õÝŗߨÝíë ¶»½øé‚‡wé¯ë»ÝŸ.À›½eœï.¼ˆOòP~fNí¬p37vwywñÝäölÆ(ïÿsù· ?{i¤Ü]~}qùûï&¶?HËÝ,ìd :ü‘¯?Êš‰R^d&b¥ÍË´W™N®t¶y™ZäÍzýQ7?šõGÕüh×Yñã—߀î@@#ŒB¸´³å„2 ØÐÞŸ÷>sé5Ÿžïl–R[àu ¼””Vùé ÞÖV;'¦Ÿ‘šíýôÃþ œEɰžD,ÖË?îJðY21ýY8f„Ô™…²vº‰œ-gÙÁ“ LG_BEº'rÜÆ—39}Aî¾ ÔI<Æíôr•éi¤–Jòé—øF WÓÕJ2zeÐ ­Qpá@‹ZN¿¢Ò™”ÞNÏjÃ,3ÈEáµú‚( )~¿0K$(t’Ôq벤aaY9Jä52šªÄ ›'Ü{PJºé}$`ÞñéÀ?8ï½¼Þ£•qÍL£k¢¶ò4±fÝ I ‹0#úY8)ƒÈQs2éˆ þïšÙx“­E£Ú¸]‰ßÅÝe‰” >•ˆçÈC kpq‡¼ºƒä³ÒÅE¶K@cn—´€KÐrÖ ib‡¸-féüô‰­Uä&wpÉ€`q·€‡ô¢¾½l åò,2Ç/öœø:R8¦7-Þ©Àoã„£L À‹/¨)s²ÛtO®É"(yuò¾á‹<ï­GÛpŸU/©b[ r ¬| €4Ÿ5¸ýuãÉz^‘½‰~c!¼9™ý†®œJ‚@£° &’(QGBüâ.iîvv5¯I´ày5ÁÏ®V&ñIx=ˆM]êm„ SÈ$-åÀ±Ö)®œh¨’™Ù,ÐÛIxòP£q†ÕÔ`û^ ’:/©­ÐÐA¯_îà Œ ô£ÈÀ+™–¶Ø­Òø$ƒ` +ë!2D<«(IæÇ }¿ÜcŒ×†ë"ŒP·{A¶öª‘¤Ž.¿ì3¿÷{‡æc b% py3ýpï”7I_ bݯxÅ!ý(´ÍH;r¸'Ñ=Àè!e÷¨.™…_õÐÆJ]ôÔœ–IO09[ïsÌsNŽ"Y§³.ƒ÷P—i<)Úåó5°P%>])-;¸Ò’¢0ˆî-¥¡ÎQ¹PÌŒ¹Žy*o£9I…ö~ªÿvs”ð"9 ˆü­m¡+ÿ GÊéõÝ hŠKI„Ónd0U^†òƒZ"qŸcº,‹t™p+­³¾E—¢H¼\";Ú#¸Yï>]/¯ÖË×Ëe/;—XJ׋«Ì]9ÅÌ­ýlb:P®ùuXóúžláÒùî¾’3üîZ!y|5Âý& †ªzK©„ãÃ,ŠÑ糡 ê(É-V=»`˜^ÆÇMxFsõKx'ñ5Y™²,x ¿Ü´«ú~/JuGAP; ¨»%ïZì¨kÚµ‚Ĺà,龆_†•ãq‹ÅÿŒ•t£*íš¼sTÿ<)ÅCVDt1e›v!µ‰·‹MT½b)ä̼kEˆH ³°`uH`Âc¼Sð’Vû¨¬cÚ ˆmU ¯-ƒ9Ú¶à¸W‡w‘sè’ Ðiã7¬Ãìè#6u÷挑Dꌠ„\# uÇÊÖ$EÚØ´¦è濎I¿íN@â­:5ôAt¯Ú!J+w)ö A2ÉorÁK(ÐiƒS+Úƒpù˜^“bQ\VÙ訂dŽ Ï"&߀Dd.õ$&ûÜF­wuEèT;Ûv^b½à /QÌë«SÝX1óü Š*kT&€ur¨"gˆò"\b Bæ|8„»z†+‡Ší€O€(؈• T©ÅÃ|±IcKoZ.qÀ§ µñÓWÈA@é΀:²Ëp€z7åÈn±y^1SaTè q}²£¹n»¾©!Z¸V`.‡8Ñ:\NPÁÖ›G*ÓÐôý@—§xU îùri05î…¥ nÜ ßáèdM¯—‹{ÝR:ŽhÜkØ–Q†FëGH±Òï`’Žñdý¹ÿ¢íôÏ o¼Xº.\„ 6^8„ÿ[rMi®ÂF(oÝ…Û’imFCØÒ®ç†ËÍ“q•û¦×{XÑ=4h?®÷0ÖÚ¸,Q6Î ÉáfiUþxKîЦ®ÃODD­z ÿa°XnG ŽYOx#X¼‘]4“~Ö@™ß2lË4:*7ÓIh<ÚÑ£Z³œýtÁÿ6mXéï/×–6-6Ó¼C¥}FY‡}ûQ™>êÿwVf¼.n¼œ¾©MÀcBFïWÝ–ºñ .f!Q2»D Ø5÷ì·Uãz³ÿú—°©RxÞZv0ýdá°È3Œ<€<ÃFÚhL2*!«ýEæ^ªGhÒÚÀ³J ‚@úrß,Óä³Úoëø,¯¹YÀ°Á™•2®`7J+u ("ÔÈgÎ}~Ptoƒ¿ÿ~s´!´qU¶ÛÍÉ®×­xñ»" M»n 2ârj‡â9PÞ¨…L,!qÆçÍÂáZ;¼AΩB §`ª&ÌS² oB-7¹¸ßLPà l”ÕMLDœ.n“AeçM<Ôd3Ž»“ÏøœÓám0¯qböÌù{RB37®ññ0 pö‘°FX?ák„Ç(m¶°&$PÌž5¸,±ê²Çjçl¬A)Ð†ÎÆ|¡åª?pÊcX£`}l9s÷ñX5}긥†ÎÆš¸Y¢NAÐTãÑ»%™¦cZªÓÛÍJ“¦)°D)*˜z|¬Ù*G#Ö„ñÌ5Í!´ú•M«gDÓÔîŸm.q%¡t †-` HÞÁv ‹Þƒ3œ‘¶åü£wˆÍ’õЈsp°wd5ðÿ}\Ô?oÖ>(ˆðçã >gT]lná8Ô™9—­]påP…;Žý•lJ-"†(]i7²P…ׇÛ&L\"æÜ¤FDDgV»ªŽ^œ€ˆ¹Ú/zäpó‡ ZNœX:{ö¹½ðœãþ â à)øÓIG°8ko*@އõº`ætƒê„£¨Ó]¦VÀêìc(»t°P͇ÓäÓŽ­æ¹"¡ ïÁ ]h[F‡‰ÒZŒ»AèÛ³øë°Ç­Z4‘ر+Ôn“)F°Ð¶™8 m'µy¥ó«CØìÌ¢z³ é|8s1îj•A6ÊY:ˆ}ÞŠê( Št+Np÷±9ÜGmŒBÂ}jÔ),¡àR„#>Ô@Ú¸þH5DPmã{Ü 9>™}™úD\ÐuQŠþvÂûßo!ÿ,¹È¸ &T4:Óë'j²>™_ [jö>Æ)ýlOq®KÍxþá”s£Œ¤Óz$§í±`{HŠŒ/Î7úÕº`Ú•«hž½bâ±Êf?vÙ –)†_y«ØêÛL`ýæD Øü@ H¸>Û£ù*lÑÙ‘sVãÏ2E+UU¤ïì€hâš…DIr›†Ý÷d%ʈ±Do²ýyë6¦àäÉ4’Ž’–#és¿õ’Ód^(4±G%W_ÇÔ¼>¬‘¾ý.äHÎ% ü‰}ScgÎÔ¶£B¶PhÀ÷€®á“x܇WŸÇ Ô4Ð/[†=÷ðªZ×Ð9£ñã±qYͰšN 5ÿÛȬ¾m:\ êÍqÏ¡~ ÞBÈS*•½_N ¢Üãj®²5L*E×Ö2ˬÂÝ~2(XËèøˆu¡u>ô­¾D.Sê0Bõ½O§>wK&œ˜`픸lº]~OoÄËñÃ.mþÏG¼Õl5äkŠŸ4~X»ŠŸ·I¬Ÿz'6n²4q¬OÌ÷¡ ú©ÊÖ·ËàÂÜëÝÁáyÇóq£å=롤ÿêòâ_ðçõ‡Æ-endstream endobj 206 0 obj 3514 endobj 210 0 obj <> stream xœ­\KoIr¾·ÿDßÜ€5ù~øfû ¶Gö0XŠ¢´î–4gwǿޙ‘J¶JlJª>eEÄù,þº‹Ü ü[~Þv?þä÷_w¿îœôK°j/½’‹ñ{ã…Ù[ ÈãýþOûO;»ð·Ø¿ÙiÍâõÞ¸k÷§ñrñr¯…0IŠ3q‘v¯BÔ‹Ôü|·S>@ËX[¸([%Ôç¬Þ Ä+¿è°g $ÄFGy¾Û±a+‹„‘ÇÝîÃîm墢[tÇN¹°€GX®2¶Ó\žvÔ‚l/êsÖѰÓÊ,²a§[|££<7ì ÂV #ÌÎ8áúØU${ÞXéÚØ#l;¨ÛØ%t»úL~e¤xž%”ȰŽ[A-ÈJ’0ðØqì*’=ÏrKdX3ÇŽm£d;Iàgò+#Åó,¡D†upìØ jAV’„Gf'mP}ì*’=/MTm줆,êb'!ÑÚØIéc»úL~e¤xž%”ȰŽ[A-ÈJ’0ðØqì*’=ÏrKdX3ÇŽm£d;Iàgò+#Åó,¡D†upìØ jAV’„Gf§¼‘KÔ{daLj¥&X¹8Ï.× kÄ¢5?C0*,1ÖZÔÄè¹è€71¹ª„àrU!åëP±‚Z°ÝEÂÀc`g¤Æ¬jØé`ݰÓNušËsÃŽZí$ž‹Ž†t°%6ìŒÓ˜W¬£<7ì¨Û]$ vÉž‡nÚØ¡|;¥mc§ƒ²mìê3ùµ"Ùó,¡D†upìØ jÁVº2Síy ì8vÉž'¹Ò\cG¶¶ õ™üZ‘ìyfW"Ãì8vÌŽZ°•®ÌT{e¤c¶5ÍÒ ˆ›=–à1CsddL–Ñ3®NhˆŒ¨S=' õÙÓúŽ%Êê¬HP*¯ÞHGydµ +IÂÀ£g'½§õ#&{¾È…µ°m5ÓseGÙNê³§™!A”ÕY‘T^½‘Žò\Ùq ²’$ <2»Ô)‹4TQà ÞÃä5`Ö Pª‡p@ˆøùnç¡@覅óh˜d ü\TÜí*‚›nÏJìYg[Q¶: HôÌ`,Y¢l˜Á[•–Är&•ù¹¡U6_¯YxÃIA ªrR0JÊFAyn8„ÍËó3'±Øýº“iSf_~Üöÿr³ûñ')À/ tÔýÍû]Þ°‘{Ò ';8²û›Óîð_ŸoOW7Ùýáf÷ßð÷üvdÔOƒ»ƒÖ¥@Ô°ýˆ†™²œ"ù-DTÚ³P0[”IH/ù,ÿôÃþÓNa¯(»GiP+á©A¤ÀLn${›ò£Õ¥uFÞ~“hÚ·j5Ox¯Œ,a† Qwl ¤&d &MÑ£[ßÿ°÷æ­ÆUè¼Õ¸Þi[!IÖ0³ÆV`ÄØj˜Ã=#k˜-ÌíÇ¥g¬*à¼ÕXKppÀVЃ`0Ó¥Õ·‹©ë˧¯„²äá„.[fM: ’g =N©OñÀ/%+-ES‰hƒ¤ÂŸ/ó¦p±GTE[X;Û|Aǘøo剕·ÞÒžð™ýà’áØxÜÑ=­úÔ1ͬú½ÃÓªOÏïb6­Îì—µ­†¯ÓªÏïß”žwlÖcM«¡Ïï'´­†Óª¯Ï®o©¯·k«±"ϯ·J_O²†ÓiU7°Õ87?­êÆñü*¡•õì|”ªK²~˜QžV5[5#}Ì£ÏXƒŽÝ\#ö³¨¦Í‹Çnô)ÌÜÓØýÇÇ{¸a5 a°±ÐCha:™ƒš–'€ãsmHµ¦ Ðÿò{?½Ùô^Ó¥±eÓ€ZI3=¬àšAlR¯©c÷©")+а-Ͱ“¹²H¢VPÊrT–4EË64{A|”÷ KôÞtŽÏÛÏ¿=Þ¥]›EhY¯A©ÀAóæÝî¯/öïKü b[C^ Â5Ü¥æËÃã{ws¢æ”M³IjŠ…ñÏðXãÛÛg‰ÀH³&<&ÌW!ã2‘ÓÓ×§‰‰Ú¤uo1!AU2ñé¡4ìœté=.Š@x ©íÍíãÃýÓO¬ 1…âU¨hP'´î¨<*I®ûzêŒ  ¦Ww;÷ܵ†ñ[õ®;}ý0st#Rp/nq”8MbÁ覂ëtÿõCïX:‰x¦0–¬˜ž>?¾›ØÜb‚ƒe6臖ÌûÃߟî?Ý óc칞‘@iiü"^Î@¾»üøéÛãtFÓwr<ƒíþÇí—/ååÕˆ)`lY­²åtû¥/i‘cÊÕ‹‡—ˆS–ª!y• þPE ß€Ïö×ÐÌ&¢o°~¼ûZS0š´–y%ë¡gÅÑúÏ¿ÕÁ‘¦É¯“‚:¥^Ÿ‚·‚íœF›¦ˆ¯C’¾'Ø ÿA¤ù: M´É¡û/ǪNŠ´²B¼ÆlCáŽ!J³u¶ÑUd6^m2¡W%«í\eK€f£´» =·c`2égÒüÍM£dè7*B[0&mŽÊ)BÛ ´"¬[£äÙ¦ŒIç¨õnȉt:am$ófJÕõòÍ”ï5ƒ‘å‡B/€'„+n̈„ BrŸ²¸u&gHy«î<2•Í%Ow¹† §FŽ“/uÖŒÓÚº‘ÁgaÇÁÃkÓÿÁ Ö iù’#–ŒN@¯<XqÃJ`d^³jfŽ£ýz‰7ª”ï÷ÛšÞ³¦±õ¼_ÇE[nkð®k}Sÿ~ùÑDZ~æêò¯·O·û÷ÇÏÛ~8a´I{‘ƃ91uB\„Î’Š„vi/r‚”·Žµx‰ãvBzÉçÊøZ6h{ðE%aÂimÝÈ`Kõ^/  ÕBB Š ‹ŒEÉRÞB$¤Û¥: ªPƒä©³ŒÍ{ˆµÆRöŒªd“¶ZD§­/tè„÷šÁÈrƒCu”ëQÌ»–’ëÑaU0Ô:¬bÕœQòôh,íü£C}¹ÎßäêPÖuCg¼× F–[24év‘"¤æ#ÞRr†Ô •ÊãIJ‰ï yš¡éÆVëPFj†ÉM†’®K2tÂ{Í`d¹%CaŠ=b2Â'[ f”ýá-#|ÖE×)šž^òt\vwyBè8·‘\O­X×gTÞ++–[ª`úÒÕFjO{_r†Ô.Ÿr¬ë0ƒäy—ÏÛ¥Õ¡Œð.{•ìBž¹2rI—Ÿð^3Ynéò7mA°‰4Ú1¢i¼Ú'Á$ÒΗµ,‘ƒäi—§·Ê’éÔÈÑ/Á'œÖÖ 68KâpF8פ3ÃÎÇE¦®ÕÆn”ã½f0²ÜâЉn:Á„T÷E˜¦89CªCËfbcÎ ùœCi“¿qh´tï¤H¶iw­E.rè„÷šÁÈr‹CqÉ ‚­†Õ‡O‚ Q`®Nî“Ñ£à RÞBúGº%‹i“Ì$³CÞ+±H·ÿ3,}ßu$Ó Ó¹· {IOÐz@ÊýŒ¹wâ…5Ÿ‘ó÷â”Yt‚ ©ÎT>•ê RÝ Ó¿üÑ›3HÞîÞ¦0Âå€ôÔrÀš/pïÄ k>#ç-îÞaiR)¢Ã:3Aª{ÓïΜAò·Ý+ÓÞh›½„4ÙKzjö²æ Ü;ñšÏÈy“{…âFHãL%‡ì%¤qoþ0¢5§—¼Ý½5{+ÂÙKzjö²æKÜ»öšÏÈyËüÕ(ÙuFxè’ÆÈ~0c„˼4ZöCÁ(y:Ý*sÆÆ¡ŒCIru(ëº`0›ñ^3Ynq(,bûi#Õ}x÷¤›n1Rªµè'+£äsm 9” I®³Öu‰C'¼× F–[êa¥Ú#FøDz˜ 9CøÐ¿H䃉Qòԡ÷’§FÎËMfœÖÖ ¶TK<ì–eŒðZIÁÂ¥_Ž2Âë •>Ùjs£äéÜ”n@óv#õ–4K¦Õ#¬žf¼× F–›†›êDÝ8¨m}ÀØ—êÄ ¡­%œÌ÷ii»a”kÝ÷¸ÊP¥jZW„:/¬±Ò(5C(Ñet"_|§Î0J>7:×îÌwg–Ìݹêzywžñ^3YnZ\ Õß–¨^(¥TK¤"´ÑO_*ÔÀQò|À‰é‹Šæ8£ õ8ƒ%ó-‘ªëåÇ3Þk#ËM»ïq\¾d#åàЊðµ›rÕ©¹´2Hžî¾Ó[üq_•sÁ•š5§µu+ßs˜¦tIkF`ú”;/*­‘òVsÀ%cé £äéÙ½U.Ë5GZå–‹ÊN+ëV ¾c%ݤ,#Ü1Ër†pW¥_cP}<íªÃ/?85r.è†NkëF[2 êb?€ÃÚEõÓFxâ·Î"ÁõQ×üœ±|‘Çãl½úòqvÂòyë¾gœ5ð³ÀÂ_‹ÐºÌoEð×7µŽºæ- ÙOSø³Ä Ü7aù¼ußã>+|º2g4üŒ3bðwpEc…MWï&Hy —?RÅ߸¡\BzÉÓA/ŠâRë8턈ë?veÉk¤\å}‰Cg¼× F–[òÑÛo÷0Rï gûm.Fê­4º Uï} ’geÖë|…‘òÍq#y\rsmÂ{Í`d¹é¢•sÃ'ÇŒð¥•ÜðÉ6#|%z7|¨7?ñ·æ-NE¼ùóáW×XÇ¢•‡WטBÖ+x¸øm7ñðÂÖÛÔá[ gc<Ü_]c·æ k[SÿùOW×@{>Þ¤·´Šß‚z¥;|j·xQb¼?ÜVyǬÏhÛ¢AwWP¶,”ÇFpKê))±" Ý)¼kþݶ™0×À71‡ éÕásµä=Ùg:æ$ÿ|óoéR~%/Ò-|ŸŠü|x ²qêæ5 Ó¨m4 dDPù…”Æd°ˆv:f-}.À’XDÒòeÎÔ`ÉŽÒþ’ä}n“ת²P¬³ÏÁL…QÍ~¥¸M+ÕYÎCÑD¨äÆ©@Íñ÷åÒ0A°Ô§ {2&I¹Îþ²–›S§âÞÑ„âÓ¨úyôÏç ¿ø0í™ÂÓ~ p±›<ÌdoÒPbÀ;A„çl.qÒàsç y<üõ ÒØjeZ mMhó²iòK¦ª! º&ÅN˜Nʧ¬;hÿÒÎ ¶hÇÝ2é”ÒJï²"§ M‡_RUP°Øíú|© ‰èS…›º‘«B„„œ«ü¥Ó^¨}lØ·^i ét úûUÀa–%‹ÐÊ'ê׸0÷~í¡^ãgÐI§®ÎWüOl^¾ø–ˆ©endstream endobj 211 0 obj 4959 endobj 217 0 obj <> stream xœ½=ÙnIrïò|±€¦!–ó>à'XÃ6vÛCÃ;~àˆ¤f=#R#QÚ‘àwDfVUäÕÕjrw¶TÌÊ#2“¼ø_ùÿ7ï^ýýú‹·_‰‹·¯~}%Ó/Êÿ½ywñO×0 ^H9EkåÅõý«ü¡„Wrr^éIx}qýîÕŸþòJLÚJeÂaÂg#½“þ /¯¤Tv ‡…§IK/ÃááRËÉ{çŸ/µ˜œ1úðxy/c0‡7—°Å<ðg²FÉOi…`" þ3Yᑬü€Ÿ:k¤þŸëƒÝKy§è”3iûæñâú¯®ÿîO‡k¬„ÖÑ~Jëx‚:Ü]^Ùè&/Ôá=yý·/œV„ŵ‰ÞÞ¦GíM¤nÖ·ïàQÀ÷ ¦û˜gŽÁÂñNxáÊtÝèÁâÚš|t­ƒô'G£á™¾ÈŸj£%ì°Çd+¢Ðí‰çÍd°©lFÜáâ¯oᢿ‡-j`ö|QQÛhò%DÿÃe–×y„”ÆäuˆNÇÑÝÀRû8¯Â–±frQºÃÿ¦ùŒp*ÐT}³ûÉ Y÷æR€ ÚçKåö!æ[÷“ þðãåüÝ[OLŸp4 up‡Û6(kç»qAÕw“1Æ©ù’‚Öºšû¶\X¬î뱬(,…Ç'2ÇCþG”õ´òŽ.ƒp¿’ÁLV†‹+©&›èá½éóÍJe~/…¯`q•ïÇZ¿äýX¯ü¼·ôüPÃN#¬¡+Á¹áЬ“¶…4Ž@lYɘ™CöÇþŸÈË'œNM`Gh÷!a‡”ø‚‡©…iö»éjô2ÇL¡ÁÑåK:wFM £2À6X²8ÊA¸eèfö:ÄePDF&­â¤Blà‹¨¥\˜‚ž)˜÷i¾,»‡ÍÀVw ¨<¡T/&_‡” ±†'à7I„ ¿û…àÇ/„Fò«è¥œª&—»nþtÐ?N@¦ø§sp›Òî +·i¼¯o3 V®z»ˆðK…2ò¤XÚ“ÒüD :,§‚•éXNT>}ÌæOxo03søá‡åuºêz2j“ò[aOËcz j°É§õíÝú€–ÎÁ¾ãá‡Ãúú‡Ëåy(´4°R«æµ—7 Òæ±(BÆò9 ˆ²Î­"pÙÆãúø~= ÙþCÙ~“!ˆ6ãbC‡5œ›A7 Oð¸/|)ÖIió}elÙ~)k1¼,Hˆ†~¸“8AM&T>à[;IÔzá¬mFZÄÛ¦Œæ.ObÍÂ"×I÷Ô\ nYÃ7)‘ßæ½ÄèGºÕY;= Œ o€Ë(‰â•0:ÃÊ Üop`f^·Ì1g4ñÈ ’Ô Pe!‚Çrï€È÷dw{ß\§ŠÅdúž"™¦!@úÉËö¤#ôZ¿‹&½¾ÏdRN“ÈĸB&DEêQôôPiqäuQBBC0Ô6¡*< m¼Á*8)•lŒ8x‡“·¶Â‚›YSËfáÈ«aÁ¨j*þ˜_kò8áýÏé(ʨŽÌá; G¡Ò¸á+é°YëXË£;)Gר—q´–æ´“Õ±¥Ü‹äI2±Odò§iF[—Õšï–;'ïkÝx&“¨á’e ¡ñj rhbΧÏŒ•ÍBq¦ž<\EÍ]ÐpSÎR¡´à=n/‹ã{+²Q÷Ô Îû„ÀðŽšÕÞvòZ ììÒ#BTgä Æ«$Ÿƒ±~$Ÿ-(Y!J"ŸqתQ£Ëa”cwM-':¦—Ï~INF©©gj#žßò€GãܽUµáñÐRµo£ôç!üz6> !M8Ïñ5àØº¦«ôiŠ¿Q¬= #³ðõ*kßÊ謻$4Þ®y€ ÎP©Ò(ê —ÖK4ìœdF§ž§ZûLxØG£wíQrè•¢ ‹»ÀŸ´ª½Ÿ¤“í§8#*›É_ªŠ´³æ.O(àNÖ(pd#zð-ðE–n:ÜÉ O-µwpƒû#õ=áY´‹ åÍ -ˆp´ûÁ˜Öï…Ë`¿ù2$p,Pà_Æ®zW}+°Qên9;J¹Å™cÒØ8làjKêP7oòbÖ-ÕÙ’wZ“ÀÍXÐç€uì#:´€*å&¬ˆ¿Ãáh”É–é+V¥ ;ô«Û<‡‹nc× $8JÖo müT€±Òs|§*Ž{Sv T8ð}¬N‰ùÓÉUÌßáÔçD¸SmÃy$™vÕªƒ”eQnó©ƒIÙWö˜É þ0Ó5Á¾äÍšÀ{2ï 4­9"šg3á𔦈ĹÍ3ƒpaɈÊ*ªÑQ³¦Ukƒ¾œ½¦*ÖW…”„*Îç<²7X`QqZ™˜saƒÚZG¥Ù+™¡¬¤85zí÷PAZEqzQ™+ˆÖÙ!ŠFÚÈmžOH6¨D–)þ  7uíÍ í˜ôËoñ~A¯‹ðº1DÿýÇÕZtÒŒnšÒ4¹Çûü! o,¦³â 0#:޹û¥Ó¼Ïã3­Ý©è‡a´ u¥™QWÄP«2}i½6\2ìqàN‚—LG8³ÉR´R Œš˜rª×xá‰Zw° 2×—M“# ðÎzÞ±–uXØ•ZX&wÑÅyDr£zelQQpËjMûv›¶ï¬q}ÂÂ?Uc«±œ@ͳ½áKmùx%nɇÊÇ'Qû8öŠj²Óp ÂTúDq—E³jÉÿC¨øCþÐj¿‰¸AãžÓl:ž¨@£bhá_ðšÏHûz¹»`ÐÝì)È@ÃÜEg­nßE4®Õuᬠ¦3ػκD‚™q eò‹ P€˜©Oå¸ÒŽœ*‰Ìˆ%K'¡C¾#ïÙ@ Z)¢qœö±‹^µÞo„5ӥ蘆H@¯‡]ìs­âX«% LðÑ<ÜÕú )K÷¦@6¤ÐÊw}Ä!±×M=nÓÖΊŽE5ð`ýusK0‘âNR  ”Qb6ÖΧ“þškÏEn<¼ÐnO–Î:Íþ&BDƒJŽœ)„–jÛ9YÔ..ØÓx7‡ Gô=¡¦FÐ6„7]§ý¼?…•1`ŒTDÀ\0ÕŠy -M¨cäf$V-ï°b£µ~ÌKº&"ƒ†´±“ò›")mö™$ÒX'ž¥jÆj à&êk­Cã`×›Ée×'Ûø]l%B ƒôß‘5f+ÖODضád§®ášü¥ro^ ô/.Kþ¡%¡rØÚ®9K—¢~ƒ9o²Øj†­mcë 7;¹è·œ¨ð¨}”U~Ó"ÿ¶%ZºªÆV…™¥ê‚¸OµéOÂ]·Ù:gŘ1ÑBŒí¿Í3êù˜@ì}ÌålVXº6áã;}*ÎЀ*ûLB¿Ç±Ê(·ª&iÆÑOM.­iÁ-Iµû| —ß–+ÖKÞ*›ˆqŸÝÁÍ»Oο!eñ}> 9zëíÌ—¢²(HÞ•—H{Âć‡ÝåÍg×bʲ{áôZ'+WuåÙÒk³»Ìwd½ˆw$yö:’Å·ÚW>Ñþ™ð :1Š%¾·Ìgr%±>¶*–t%X0÷… Áb§<ÆJ4’f$YVݨ[mh‹q¢|Ì“ë-×cðÉ5óáÞe4öWr!ƒLÌ4#FIêåºr6¡]<¦ rbâÖd ®…îrÕå{Ì—ª3À Rê*dA…ë ü3+i¸ &ep¶&µ®è§Œ³Ý ê·g’k‰2»à% W>Z'@`þ%1'’á•,GàcË1ÛFJv 3 RÓQçt ‡'„:¨À­â »—G 0DKÇ –ΨmÀ…[ø’MAßfà¦ÕCVÌ “RÜD*€q­Ú¸é(ü±ÀaÍ·ì÷úì†oç=«q#F´JÜ7:ŸB‰4-ÓXË¥t¾c6¸Ü›âS¯2êcb¾ŸQŸÑéâjhWE T¯9›z>®ãÇ¥ð ðÙä› 1ÀîÙèY¦“r®šNŽe;ƒ‘f±µ¦Õ <-n`úöë#I"¾YßÞ^ne i79©hì pÊRòb‘ú€7‚0C¡†ÐV%H„:éøL xîõû£ÞÃZSœ[êuþ0FwBQЇjÚ qf/! –føÇµ7£à“çM죛0€ú΀“IZÍVä#mP¢7-Ó2hƒÊ޼fÔBç¬øºVhuHÙ$Q6§2)19«ÛýäáSbb«v ¬½âS÷Ôü4~}\4F·¾Ē͇hjØœê—v$Ê¥$Üå!.ž`³4\•úÕfy»rR]1¬¹1™Võj Û0úåpK ÙÅ@…Ä™;ò«9þün?¼ZtG7"¯ÅKÌËœkÞ8L¡•<ü\.\nGu–AŽ\- Õô^¶A~w'úèÔŠ£wˆ³éD—e$ y1îÐi=Ÿrt=_™ÞðO5Ù$£¿N+oé Ó7%ïËßS}AÇ4™M vÒäÌ\ÃÌ•]«¥ìú¿ð­RÑ›¢NáÍ\ºPFç²i£còÌcÊ¡·šÖaÓëwiB Ç4¹ÉT’àBÝÄ7{f”pa^Òé`«çö|IÓP×z4‹£ƒƒ‹ŸÂcJŽ:æ½[ß¹" ·(ƒ¯[4­÷‚8ôÒ5ã@o6äg‘s ™:¢`0[³½°b6¦ËÕ]n&"ˆÐCä7y½ ¿åú†’·êIŽ$© ó^b•eq!—=µyƒ4ãïföÁ˜MÓG:˜½­åû¶–­#˜‹D¶9 =¥¨Í­k€.V‰ p¨Š«p|‚úï²å‚‚Ý–K]µÎ“eÒ{錌Xœ×—žC_Ó‡.ØzŽ&ÓwôåÇ NoøÚÇ6Å2››Ñج8¥MF1žr<•Ó##ƒŠY®yF£„£Á©F”·$Ÿ—”<ŠJ8'Ú†6{ }Iw[RA§‹%&™Ì+N¼814'é$?ç]¦ÔÛToB'„X0'%á>䶯fK¯·+eqWZÔ||@-‡Ò;Ýèh¸2Í1óqÜ.«;Í eK³y ÉÊ2Ûí š6nˆóŠ*ÛgÆvvø]âß@Þ™ÊñÅsüV`ù¤œÓvKo«ðf]ÒÔ³ÀÐ4—ëC^=eg=ÀÙ²¾ä`[g”rØ1}Î,¯ÓÀòÉb ûܦCª¾j¶œÕ0°m³V´Å²&p3gÓ™ÕäHçŒû¡›úÃúöçM7µJÞöåÏcÉž‡‰9¯1g\´8¶ŒÆž¿²`Ì+ÙÖ“•Lx›[E3‰Qo©]én(Šé%hu®“Á…bSZyŸ_“ª£1z"Ï.™‚ùPËè•Â\œ‰×®ÏÌKkË6€…Àñ㹸ªg.}c57v%ȸ ^ëÉ*(§$Ïn/©Ná4oþëË‘ýž&ðmÛ’]Lp‹êÐÓ~³>f<º%“W"Õ¢j)ÈZä*ºY™l»Êd?½FÂhècÐcaZ`N^cÑ ;SŒÐð°aÎ*± )á !<bžBºqi»Ý¬rnŠºÍ§O¯u8Ú2 V1ç#~÷¯‹k{è³ xÆK;ru ãЭ.AMqàéÿº>þyõ«¯M‹¿ºyåú§ 9cñ¶E†9]àh³%ì7Ö~ƒª?Ž zPÛà ]×Àް ¾bƒíÒà=¶¡0…õÚž ÐHiÁ´ª*«Ê ÈQ›´XIb4ä^¥Ô—åñëúøn}¼Y‡‡u轋zÇSÑûÌ}$φð³b=ý-'ÓN4Ç*7Ó¿1a ØÞ™y`¬mM]xíã(šÞ‰8ª:sª%ZÄ(2ªVH‡Í VÒ[³+søù„³rr®º!º>³—º¬zý„Àìù9M tݼ{œCsñ>²©MSn2•mT'XsZôÇKTJ–X>J-䟅T°c˜@\‰Xoldœ\&—†´¡K§¢!Ãf?6¾±T¸Å§N4fC¦ß}íæ 2Z2PèEŠ»â·y¸3–j‘ŒÞH .ZWט©qT°ZOS©«zaò™«a?M_…¹ýf¾(ÕÚ<øzè”^X¥²;]õ…ÓÓµdBM$­ö;ožW¹gäp\÷xûÚäÞv©ƒñ‘é%¾ÄŸÒ™ Óô¦Çy)í¡±Ÿçœ£äËw@sMǺ1»ÖoE› „.¯ðüª>6Ð?/w ¥Èj„œkãY Yq–×e×6/3V}Ïmd¾¾tŠÀ˜o›f2.¿:)×¹kÝ”ã¹b‹•j'5V¦Ï'ÄxÙ¥ Œî4¸I}P[6É•J.õÝz©7Û—j& öÔ³Ú“K…øMáô÷£}$¾!ˆ|’‘°:ÆŽËäs@ËÙzozø·xìШëËn)x¿9m—ËëüãR6,ç|acîÚ#Úö)g¥øIˆÒ7ö‘èD°½N"ÖÇ¿-bMú ¾ì‘$òzœBÝJVD)é» ö를j•“*%–tªm·¾‰_˜`°òôs%Æ6ÎY`bHžÑq'W_RGÛŽ‡-H™»:¹ÀómUŠI““ƒ7¡-'júš©®ÃÃS^ŪQ6OÕÚ´3Î?_Z“*’úÎì4,yJͳ«P9‹N òÞ¶v|+Ë0Ý-ðhÛuk ©û‰e­‹  B¸]ÙG(æ-惄4¿=*A%ˆŽç ó/p ¡–ºÇcÓ*Ìö>Ú|öK¹›(-þüãJéÑ•vdØK‰ËO_*)k‚X¾Ë«é­.Ñý\ØÜ”ûÏ?ƒ”N*ìIP¡1î•HšOÌç ¶oÔërêÐò–&P?ÃVû–±:µíÅ[ޱ—I0,Ü•æÁ5W—ZáxÌ=JsXÕ÷-mRft+©6Ìhl["Oú¬ç«šT=»¯Ai‚àáå ̇gSˇa\‰õä‘Uªž©=î+ÒÔî¹ÍÿÏ›Ó#{}\rë܃¦s‚/Hø=!.Ù’&&óÕb©Nt‡¸¾íÚ&¥Ÿ®W`ÛJ! m“¢ OlÉ g0häO ˆ­¨‘öÜYr7§¼ìÉ»wVztžâ…}bLõ¹úLuÔLf¾Ðî/ùÔìÇ’d HnÛ&ÿ!ƒ¢«ö]áw˜;Ï&~!ViÚ×¢&Œ‚â*—TŒWhEúI-Þ>Õ0NmÅ&üYǦҋϺM£C§ŽŠS‹4‰å*âBóÌf‹—ô±‚)Ò¯ÞÑ(ýð¯JX¸™([Wn»oÆfû´2©aa‡7ýãp‚Çõ«ñº¿­_.Gvñ±uÿŸLúÔ·íyÓã§u‚LÀÛ¯x(ä±_ÏûÇõñ¡lRL¶Íû5dÉÉõa}|\IŠI@!ž‚Ï›¾1âêä'ÓfÚÉèmí$DwaÐ{àÜD¥¡wn%®ÊÛdÊUÛòaÕ–jX†:ÏRçOS1¶ºéòšX’_rm]aƒ«§®<Æq-‹ް£ºmnÀcF݉½R‘]×Þ fÀˆ üŸßRî ä„Sã†ÜÅ0<ãAx¬8wW`>´U“ÃÕ(×BÃÝwŒPX†oö‚X>%@[~ÜÏmÄ_æ„#—OHL#d œê|€!¶.ÙQ£ ™ç/;$)DpBÇÿ^îdj<Ô]Ï –qò:#L²ËŸÓÚ+­ïƶ|¸õKN%Y©éœú}Ót5§‚xúƒ[ æuneìG´i;闄ŧõñiSXÔY¡¯sfŒ]S×;­žkŸ0_ÝØ™9Ö´P)v¡‰’ünS/â{ÌwZ ñƒ²EmNlþÑ‹®T:õhàñæ¼ß.Ë­ oæeþÊéü)ó¤)c|.zKs+þWÙö°6ƒD¢]«/®° ,‰|…$¦+<úýõ«ÿ€ÿþ/úsendstream endobj 218 0 obj 6544 endobj 222 0 obj <> stream xœÝ\Y·~_ù ƒ< m‡,ÞÈ[`# $ŽAÛòZCZI–d ʯOU±"›œÙYYÁ4¢Øìb_,öÏ5è¢ÿÆ?ÏoNþðϰyööDmžü|¢ù7ãç7›?á„´ÑzHÎéÍÙÕI~Pãü&€T0›³›“ï¶áñ©ŒÓ`ãv ßV¯ÃÖ<>ÕÜ·_^Šá·ü[ü{þI2:è¸}Cà½õaû“˜þš¦xgµÙ¾ãE›¬)¦¼¼äéÆýÃÙßp6iH¼å]Ä!E•6g_Ÿœ}A”ãÎg3á!9PDxsXÏÃyi£åÒÆ J+@&] Sžò΢uÓ&“7“G_Ì?[„ž5(°°9%’®Ë«~Käøè5.ðÙ;(­ÅM/ïâ_‹áÌõdBŒ™wã¦Æq§´iíJão €ÁéxǽébM°X¯'N}ÇÒ3.À8ÛÅbö<Ä4ÍfÚÁšht–µR6˜¼U£RJ~û o[9|*«Œµ`ÀÓâ_|sbå6ïQõÿŒúàÝnã=„!úÍ Ž$ÔØeäÅÉ·]) -$¦ÁåðO›mDÐì[h}óØ­ÞoŸÑf¢6¶—üÓ„ÓsÆ9˜émÃàƒ tˆ„#ˆÆ†ˆò-ˆ~´ð÷óÔ¡á]Ît¶d«=2×¥»É6Û±Š!è–‰ “ wÍYå‘QÎHFyd”6Ç0ÊãƒÊ6¥«µÒ£tø@ßMº ‘&ˆNgùcˆN(sÒEŸ1î‡EºÓؒtDÂ-¾¹!i)Q)éÑÒr¾˜/¬þ-A ¥cCA!@Zƒà¥¼RÊïþ’7›ŒS‰·k (§%"ªI ¥ß>F]à¦ÄV¦˜3©˜# xDhà6c[0{†ƒ2&…í5=î‚‹‘ôçùŒ*æ2ãð›ì\Jù½Æ¦àXï,zC›ä„§Ëè þTø<(há?ižCd¹Ý«YÐÆŒÈO£=äP@ù¨>oiSa в t”Yï;`ä`¶å0Mà\–›õ*(?2¡Þ#± "A4r ?$;dIZ~Z4\>ú2Ób,:¤SžbQ{SƒÆL×#1ÿegÎm5aH㥨„Ï#`L” õ(—KKÉ9¿¬U‰ôV(Û#1ãE~“àç)‡¬ù¯!­øO«D|x¢—Wy!¸+é´`,f¸í_3£CЏ Ò´ÓhäiÄx -ˆcVR±®œÿŒ‚äQ•†‘£B8¯ÌôÛšŠ4·Š\XKJ6„IJ8õãKÉ*´-o[Râ7­7„^R‘¯ò(ñ”Ù£9ȤåTŠz2 u~¡ÁXÜm¿ÿ~^¢@z Ùg± Æåòó|O ¸U;±ÄèÁ$„ÊqáßgaWøQ°àamÒ€_”BÈÜ ø(nýO¤Ó­…ð² =¦{‘0èÑ_Š@+(”ϸ¬¶ó²¡sLå((Ô¼Ðä'æ1–xŒÙ˜f#>Ÿ.1¯7v@èÅU1§3UXï=úÎydWTQ9«1ªÀ´¦ÇEç¨â‹ÙìÙ, æ1Z§l–ôï6Ë;ù­Â@Ÿ aŠª’-8ŒjePDJCa[ÂX¥ˆ÷Œ‹˜ q‘‰’q½t«( %Üaà¯='œ» ý•0€‰¢ýÜà­vQ{$åPOôCðH¸Ï„ÑÛ¬3hd)¹ ßèAÔ¹…ÇxÀXé±~^ê]Þ:…žW«`5ûM~‹Ãw7‚vuR,Oj̶£QÂwV.mGxAtaRÿ-}M‡hT'³Ï{^55A¾Q˜±–à)dñ‚–vƒ Ð °$»þH’Ãð?š"|»¬7i8dìM9ᣴuInI íÞ"Žøet“íj˜ÕE/ÃO(ú*b@8»Á´ËÌÊ%aõÕZø7|qVNŒ6 V’!Š“røÒ+pôʰR;––ÌxÚcNn‹–$ª1„VgÓèèz …˜{®zf% òåòV¶¤iËÙ’l˜’ÐÐA⮺qûTÙQµr‹Ò¦zÖØØGCÛfZî5·@Ç­¡  ê¥*J˜&vùø ¼RTÜé ˆX”JßD&Â¥8×QS"‘d`‹šñ9W•ûy;ê úo×{‹DƒQ—¼)ý𛼈%§ž:C3¸ú4okÜø¶û8{AWð¥ryòG}K‰i×Ó6ì_L{Ú7Å?4¶±c›>½63@G ddèGB+Ä%¦(ôÕ¸D¬¼Ö8ž±ÖkŸ,®-Ÿ\ħ`¨À«÷MÕi:t çõ"eûØ;­¥ ILß%™#rÊKS“×ÛÛ–?“P’þ;ñ dÒOYÉ=`6á'%—¾d]©ü“Ôü#e“¶Ð¡ÕÓ\Ü'˦œœ7k“\¤”ÙD\¶†‘ö2©½è(ÎJ,\`ê©T„™±Ú—ú!¤ t¢ÇÑ{&¡ûŠ™Çv•%ƒ øÂnŽr»6ÌD;„‚ÙJîe¯&E•:ùnÑoé½ÖåR³v¼ÊÞäMâ³­:É{*¦Fup¾öjÇÒÛ ‡HULmm>Í5&Çætž1 ä2Q¹ådì®ó§ï«*»r¸¤‚ýCð¼³~2+yW©n7P+©ìøÀ~z¿w<Ë{ÏZ‡÷ðÜSÓí%0ç\çç|ìn× !±ä×ê±£³Æ""{›bß„/GY„P˜ÅÏ<ÅGWî»ëÑò°8’ʉ!›JÎå¯*’aBù°pª¼Ê" »?­Ì÷FSC½ AVÖè‘€2©Ì 5a¶OÎH(àš“!Ù°Ô<¡Ï š^ µãaŽ£$r—†8f¹4qÎ7‹¤`(·-ËÚKeôÐcF7(ÑV°#QB ¶Pÿ=åHÖ7‰2f•¤½.âà©®^æ…!6K€ÌšÕôœY FVV%‚£L5†G˜þeqØ ®éÍ•¸ßóÉGLš‚¬)]ÈÕJdEðíƒ1NÉÍUªÃÖz6Ìynˆi®¯tmë°ü^V».ò[˜²þ¬ŒaM¦B¡®Îª‘èä+Ýê)L^°0¼}*2Saãó¨äÌÓsYeÕϱtIÈ~Ž¿Óƒ@]Ôfq@WFÝ ·»N¾ûôñÜq½’4éÖì­¾äÆŒ0uÁJ‰õ›Kµ`| ó&ÙEÝŒK=ÜëÎRßãÌ_¨m©Õï.„XYF*p™!Qî½*?Ô²8¸yª1´+aüëaüƒÞˆªQbÉ:[2|2žMõvއ{æxájðs©YgnôªdÙQhcÔÝðáu&³;ÙÐ)Û‹ý]7¡t%èÊâ­"4:¦9%Ú‡uíÂ<|X×îÍx<ŸGçótÌÉu\Z­¨G½',™Gv§WMÉSã¨÷ÔÏ»±*qya9OŸÉ?µi°qì æFæÙ| ï"l Ò0²Îq gÙÅ:ÓlEÀ¨XE+PðYwþ¸Õ¬v^´ê˜L¨ŠÃ±±Pvß°î;§\¯Ïku\l¯•ùð.X:þCµZø šbxº¿; ¥‡éTòû^»` ( I´óa_%é9apP}¯]°-é¢M'Haóq;_+©¹ä‡S!­§Û[(‹i yàû´˜çÁÈú«…œ«…œwË(ì4ÕêÁ'4ÕûkX7ÔJÆu¼º°ã;:O±ˆ%ãï×PcBÊŠ=9‡#öœ¥’ÞÏÔF­Å‡|¶Q¥îêEu¤.i¤ãÈVŠÑÀ€\/}¨¢êJ‚”¤‡ôì±ç:Yás È×,L0Àú¹“{®ÓЃïÕ -µBKŧÑᚘ’èÏÔ*©…"?ÎsB2tÄ#¬r¹»Uâ HÑÈü›ÚKÞŸUnÿÍ ÞÛÌž)0‹w3ÐÆëYVãë &{Ûÿäׇè{o_î£|bwíB¸ÒO­©~/i÷ü¾&†RÚ÷Š‘W’$:Æ@¸pÑ1ä4ÿÖ×Ëœ‹þ7†Š@užt¤üç *Æ‘# 3¥]Äë;BÅ{bJŒ(«8ÊR°5„Ö] Ë–—]Õ¢®Í&vG}_wD“‘BëÔ¬B²Ïc¸†# J/ÂïQèÂ)¼wÄ –`…Ò@t\¼—ÒtŒ7N ¥¹OÄ1 0EЂh£UŽ š/#¤JÓ?CÈ©o´jE}Š›SCß_pÿ7Zím7ZÇCëÎâ †\.ÑŒZí4xºâøPÛ¢žG¿ñÄ×ìó ;ä í)îpÐáV“Ód8­Ó[žý\ 8fyytèQ ¯¡ìÁ­'ó¶«Cœ”è¾`Ø~•c›â>Ÿ-ÒM’kºô„{4ºêù ÎÆ´ó€K-½i<Ý_ªñ0Øîm„|¶b½‘ý½sÍ‹‰ÖUïœãou8qÀžköY²º}Põq³wôTnæ’}£çÓ‘y}’.EÅ·6mqÔé'ýQ¹ÉÒ¡pžä©ë°ª÷€éµ0Hú³Øe±óy”ZÝŒÈÛ_å¼(u‘ÏÎL8Ê&hcà(›`:tªt›çCu7’͇»¦j,ÍͳäÜæ,¨×¬);7§ƒ;Zö¦ƒ9š2¶¼æ7–Ý·âyqšŽF½&_ò ÒxŒ$ÀvÄ;¾:–ò™G“)P©º<{<Ù."–î\j¨ÐƒÈ ÊLÝñÜhHçøtGŠDí µˆk¥2N" .W×ܤÌyOÐÝ“àìí79$d{©ä¾4Æu¯ÕÒ¼À%ÛjÒk]õŽ-›‡FYOæ!7ó,¿ÎáÙÓªd}¡§²7ûºÔÙFóƒ·e\½Ï§œÂX7A‡Ê7øWƒa¶žG¯Zà ƒÎ+ÐÇ4rTýl¡áÍòóª g¦ã~b˜Ok†¿0D©[пæ\Ç ¿Ê°ñùÜèB šÉóÛF<²³yV6ûÊ œÕ=„òúGÅ)L¢Žç>IŸ4` "‘U¯b/”¯îÏÐÞ´¶b¦Ë!ÕînOè9fÿÈ¡—tF¢Ç¶}—omí3Ç÷•æùkÿ¼z¿ôÖ–Mη8h‹¥ Øi¾'¬Îs¨ëì ”mx¡å,n€º­ëÙœA‘U ·½Õ%*r‰¡®6p'º8vÓ–Š·ÚRÎËÇnƒ‚yäp`ÄŸW@[#“ñfùyUPt 02C¹T'cäa’–©™Œw8SŒdªƒU™:-îØUæoò„ð`^DªbXÞ,”WwŸ±˜>–`U@a´îã ÓwÑ[‰ r áós/>P)ßW‡OXÎÈ—p£{]|¥ê‘‰h?~w–¹¾$s™ý©©PçθEšI;Àð½—[½(Ô†<@#{ŸŸÃ¼lçÅ)„ 0±«ï’k/÷U_…‰0õe˜â¶=Òb †ç|í*Rå^­‹XKòÒоò6mqOý*“D…jYƒ^‚ÝñîSQ&_û滜|íÎwWòiøÓ±–UûÓžNL7zëL—ãÁVª«uW.òG®ŒÓG…ŒF¡‚ÆôÀBF̼Ñ×§ûº=L›t«~vf±±U\Ë÷í«ìkºóFzAíÅÞŒ›ñu!‰íE&ÿ@zÕú–Wãv:Ÿjþ2Gû¶â¸«½?&•+°Ý/¢ì÷­’ÉɈ$ñSF+°9u@æ˜I1ËÚË'”æðꛓÿ^Gendstream endobj 223 0 obj 4522 endobj 227 0 obj <> stream xœÍ}]³&·qžËW©-_æœË]Kûfð5˜Ir“¨ìT\®²•l%v.HŠä*Ò.)RßÐO£ÑÀ¼çœå.¥b±öÓÓè§ÑÀƒÏyÿð°ÝÜÃVþã¿x÷â?üüðõ÷/¶‡¯_üá…«øŸ/Þ=ü×7$àÜÃy;w¿Ç‡7_½hoºö[ÚÂCöá¶åððæÝ‹yùϯ^o7]8^~÷êµ»m{Ìùå7¯¶[ !Çóå×ýO%ðYÏ}GnÇáýæÿÏ› ÒÃPzt·Ã2àÍo¨¸ò•S®ï¹pî‡ù;É-þîÍ‹_¿ˆ·-=ü@(ÿÛ wÆ +vû[Nï('çÛ%ç÷/þç¥/ÂÚg¾å¦¡ûâ‹nÜݸúgô.„Ï8÷¼í9À§÷oų)‡ÜË?–¿c !ŗߪ|–Iä>Èlç^~ÿêuÜÈqç˜ýV‰YD¶ÕÆ òÙT]é*ñË*¼oyÛË‹qóô$^¼÷Å+Ÿo)ºs(ú·åoÂ’ýX¶VýÅXŒÈhÄ\PqÊ— pJçË¿Q¿W% ऽüU{1ú¡ ìçË_‘€ßB8óPàç¯^ûã–ö[_×RbØ2ÞÜ(ä¸çÉï›’#„0ü½@œ(ňéÁæ!Só£ê^•Zëõ±ÝÎóÃkçÉå»k¥üØ^ÞÎà î5N’| ¢|Ü-=Þˆ¿U^z[ÞËôÄø¹(sT…¿¹Õ v¼Wòß—¿sŽ!x÷pô·*é}÷Qkpéõbä4¸jLØŽœ]Sè)ÐÒNÆ-)>/›í~óG×r#§[ºŠÿõêåÙèKÕ&®"þÿ±ÛÈÝÿú²Ë´Ò÷M—¾SUSçÃ…SýQ/Báå¢?wꥳo¶c;ö#] ¿{(ù×W¥ø“\3W[¾¹ÝëHRAþ«lßüžµ:QWI}ãèùÖjªçݱ{ÂÐ §ÎÕK»ó-ìÛ©íwþòÕë³t{GzùC7‘ã$ø¼ ëmoˆµjüÎÅÖ€Râ´‰3š5y×Ö·©âaÍ¿/*m÷!­<ਇrÝvª8ò&yoùŸéÏ|Ü¢sð 9&.ür]¡á¼e—½fʹEíጷÂQ÷‘QG—Ýæ? Ù»‡r; ²ñÅÑjODíËÞÚäöÛI™êX€þ¤Žð!ÏJëëqtRCuéåoß•p »;Ü2vâ-…x<¼ü²ôû'UùÐ}_n9œC©;Ý1ý®0ÖØ¦«·Ó-¤±ÙÓtÇx¼üS}/çSº mŸîÁM¯]*˜Ü44ÈG[§ÛbéïTl–Öà³ßWÑ‘hô“{µýÕýJv[q„]ÌÒz}¦!źîþ¿)Ù…hO°Z©5;Ó=£S‘NrOõ5Jö‡»êkЫ´Þƒ Õ?÷ÄÃí•Ux¬°ämC¿>VÁh±WÈA.#¢œÙÁÔ”·´t0µEÇ+£"±Yîðû½“qp~¼ÓºïáàOâžx¯3ó„™=Þ'Û¾?—2Ç wdžôbì¿»ôÔŸÞÏîÙ\>³ €¶mœ4áyLíÌú;³ _º'xÐv~”}ãèP)á¡0õCïs5–|$Èr™EõîäÑÎÇ×H;ùë]gëá9 C‘D£©”_4 ‰áã ½±ð‘NÉ 9nc?d}UÆnqÛMÌvK¦Žú<¶±7]LUôFÍr®F¶jÐÎ-#ošÖ‰j8I0Ôù×Å$²N3÷ƒ‡}ujâY¦ _2ù†Ý¿é)9«¤þ8i„žŒvž¬¥äO=¼þ®ÙâÜy‰M2æIv™ûþØ´ÇAõ·­ÛåÈ¢iÛý°ºðͲˆ:DÚoGòw:’{ ÜÓ°üÌGœ–³?ÓEˆoD ¾7ˆ!.Oý”VUýKÚÓ/#Ÿ¦¦ÙbàÝ`¤ ?M%•Jw1^¶¯{31ÕQFk›ÛÍj†HhðŸu%zR£›ãU“íÚkô‘´–‘ðÐlj_±Òâ=_Èn é“EC"Ec€³Å4ÙÛlÏœ ÀRÒáÏËŃ?©æ»hùº™ÖüqÁ€2iìJ‹%Z9Öê‡ÿä€NGêŒõy›,„C¯É,K ·ƒ–OŒáH#5Ë l­q˜^ÓjÛ˜˜>ýê-u´ù8õ¤ôIË·Ž4ܨñîÁ%ê êšm™¶JƇ,Ùžäó¢àÆëµ_uk¾êÖüQÖkëX¡å.§®eˆû VnIém3tjÚ]¢ëq†Ÿ´r[Š!Æüó/ÜÒ<á–÷ýÞÂm™V¦Jî^¢‘þ¢Á*æçª÷»ê!U':’hQwäøòï_DV‡sZT ô"Ò´ {ÞÒ†UXéX›Ê|ž‹0Ñ)ë·#ôsëÑÄ›²Þ‚‹ t±zšvªÖ¿ùlaAú¥”wÅ%ÔYéÏÝ@@èõßÚoÛ{¹²õX_ÔÉÁæ`švòc,»än>ü¤àÒ&©~_JõCém˜˜ˆ¬‰zP/õæ(Š ƒ ÅÖö'õ;`r§#>¾i.JJ?í ðU4Ç‹Y‚épS™ ­“ÒÈÆO]&%:TËÌsKœ¦c†îíJXí#ع¦™F…÷ƒšëá~qÏvÄÇÜãÊJáùaþ)=P¦fó„eäÒuË"ÕÓ×ZްØ*2µ›×ƒм”bÙ@°ãO (R¶ÿ´eäŒÇn—‘‹îB|?u¹î.š9{)’FÍ/ï·l-óŽns ê™’;eÊëÆ—Ë¥»éÃ_'½Ò²sᥖŽðÑî„æß{öЬy—ku"êŸØê#1€Z×}diB+‘»çµõç¸È=Î4¾ŠÇãò²Ö|Шñ~ ¤‘séŒî¯vqx¥tß½/ü«Ù4•ä¸É‡ÞËÒ¸ Ý)Åá~ß°ìn§Mñ 6xl!Õ•.ôqŽ£pJ#5ß[ħÊÖ¡ñ‹R#ey!>R“ÔÕQ>‡õï‡{ 6wžw׋7Þ¸Çû…àËQŠóéŽÈãnÆÇw„Yͯ¾újþÐÎ>Åj~.!û´ Ô=øW­JŽ}Àè£tìeµp‹uŸÿjùójýä cΤgIf%ªäü0û¾YNÙV­ÙJvÌ êïc.v®ö_ûz¤`G€î0„Ú%ÂÃNDü„†Lp×; Wã*các}Äz‹A–’R¢Éø¶ÿÜKIT>éqéW’ *Ó „åôß©¹H·,%Ñ0 碡Ÿþ{Û-úñîºq©‹»TÆG<ò—}é¥îù£á´3+3Ï>òGÅœÁý¬K6—ïù«€íÊQÌe4íê‘?úÓû¬]¬ÉbÅvFÊ =€Öõ‡nìHbFÔ»J…êü¾UèÛqãuÎÔ™nviÉ;©H×Ëä¸Ä²X2·^Æ%bî´öŒÝyžûO[b9©é”å‰g-±<ñÐL<©ÓÝö‹¨þ²¹v#ºûhâ¥D74£/.ZÃzSu]~Ýì>§óG Íq·¯(/Ã>CH‡Oiˆ|Mñ;V¿oˆ3EçŸ^ÑL9yYBÄsQñoªˆ%fU £´£Lž¼¥,¾Õžû®lsÖ£¸[BåÇv(š€æ9]¤>,;ƘH½a­ÚiçÓ0á¢_DþõÑÒ¨öxÞŠ%oú¢ØtNÜSùî±@°¡ªã»ÑÇÐ_mÎ=„^Ÿmlvý’!SÚ$Xgï–ó©lË:Ç3Ç»‹-‡Æ”áŒú$êâ´ê³™²ê¹ØN¶g1k\ÑxZНÆ$v kK$±ýéwP-)ÜWC¾zùs7»‡u gÇ|r¿¢Žù|™;Òd-Ñ8‹ºXóyWŽ’óü1i¸ù¦á·CùªŽùâ|°¦:¬®âÑ@4¦!0¿Q§3R9›iDOØ& iíR!5ýÈU‘v»ãn:Î3|É¥›£ v?’zÍÝ4èõÈ^úø”¾OG–†`·L©ü3³aWsÓ’ãj?ÃS6u+Ò­Q”V©¯\l:Ö¦F“¦3oWAÆ~yŠ£Šn¢‹;*4«4òA.xúŸzÜ‚K .íÖÑÔÓ°!£âÜËŽIsun ÞÙ¼Z¸XŸºw*ºš~^ðš)ù²†ƒ,!{zçxwÂfω“öã8ì`£do¦›_%§oýŒ®n@ªE˜Vrá}w5\{Ê•¥ñ„ذRΗ‘”ë¯óÛÉùÓ^¹ê³Ê.Å¡‹w²É§bL4aüáUy‹zçÚûzšh¸ýª;Ò=êb*šÌá€ù, ÛO±ÂÇË‘¥&ÔõA¿«aÑýá|?©wžj˜*¯~ß¼üÆRfNl]½Ú Õï×;íã9HªÈ­: ξØ?øØª‘ü벎á6Âò1_ް´™¦¶Ê&‚LëÊÀõŠ£¨úlãØÏc¼œ³–]8[LøŠÄÜR§¦ÿ+§æ²»<Rº@ƺÃ0wÙæJ!ÛŠí°ß ©û¹‹y¬FûKV2´#{67xê–îŽ6š!ÇÐ’4ÅèȺêgôœÁ4‰zð/ayKÄ9öÏrNôáÍ?¾xó·?Çzká£ñ À\C¦)ôCŒD0ᬠ®;ÅÓ!9²àºßަá–ËŽû»Ú¢Ä¢ûõÊ–œûõBÙZ¸»ÜÊÞøöÓÎé•RâqÕÿœñX,IîîA=—Û ö$1åRÝ—åÖêŸ_-Æ 4S÷PåŸß‡%TÅæægÁRvŸ¹"Û›Ên›·üÓµ“Æ‹±H®$V;l~7_’k-7ÉPZ=X}gü+6÷Âeên'nùÜ?FE}ß`Ÿñ°qQO˜íº«(nqNÞœoÇvuv•/O™ÞªaJ«?°ë÷­¸r:}¡íÃ0ðzÆ»lhò½Pq½÷«]»va²žL׳^=õÈúá¨Úº0õ³ög9Ôð®ô…[9b0®“·@wÔ¡Èômᮼzñú)Ñ[.,çz׫öš2ôâ¹þû∷Œal« m€XŽ¡^ }®¶ýê(M£ù_Ê<ò<³w-dΛKõ”H8iª·¯ö¶§]×+¦ù®}iª,q™Š¥b(^5\¬¥˜x±œ;Æ& }îÞ’q)N?.ÿ‘ÆuÝÂ/ÖèÆ¡™œ ¾Ø¸GÉä¨=û§t€²ôéè‚Ú,²ÐËñWø"]-ƒó¼ã¼\A4kãí bÓ™ÇqÏ•mãúC ¤2§Ò·ºT6Hw'Í…|NïÇ-Yd~ÖþÌÇOaBÉso‘U;¶Õ¥þÕkBÓÝ]qÒ3Ü~ lp{Ø;åòí²ñ«`ÝT#›wOëQÐî.¿rˆâÕàB75ÝC^ïäÕ@ññîò*b¶sî÷ìö´ë— ÿìs­5³žñ3]Ù¥C³$àhèyØá={‹û¿hÊ â}5}Ñc›º›ð¶ÙáÒ󰾟ʀŦ-^msW_ìç§ùâÜÞ®8šAåR4¤%dDéò[/!ßÔ]£Ç;‰rƒb¸@ñ î·˜7û±­£lW>ÔxŽ]) Ë “M˜Ã!#—éÂäÔ+9u`Ϊ¾ ?œnóÛò²\ñ:K{·i˜ÑÕ.BõzE â½Æ^¾Çy†`Z{¡¢½Œž»b÷ÈÓÕWaJ{JÓ’Aù<‡»¿dPVçëEö3U­M7ÙOU?„蟿}R{£ô'vô¤½ãø€‰BbÙ¨‰$¶à?m£îC[yëg\èÙ÷º ©_ÔóLEšµ÷ÓêÊ'gŽªÔF†›uÓ<4øÛ´ðx½x÷øÈÕ2mÛtþjÑRkœ×fêöjñÃ’q)( ‡Æm»¿Ž]wÍ-X{¶QI“úÃxgÿËTß÷LýÏaTi®ìÕƒxáÊwni²HÃ(wÛ÷çŠhüóÝ—ÿûáý‹­ônçéãÃ/ÜÃ?ÐK OëŒt;Žržƒs¨éÄ[¨Ç9B;E— ’£¥øE¥ÉïrobM‹âðžÒ]=ú}!U«òøM¥‹ûmWRе*‘ßTºòV–j¯¤ kU"¿©ti¿¥+!¨ZØ^욈b# /„ i.ïu¡A“©úuÎBùØÊý!bÆ/jpbM‹â± ëo–‚ªUys,èú›¥ kUâ ºg)èZ•8ƒªÂYªVÚ`XÕs‚¦¹81,4h2U¿®ÂYèôç.ã[Õ7 5‹‚Q kn–ªzV%Í! «m–ªŠVeÍõ¯+m–ªŠVe͵¯êlªzVEÙª_Õjªjæ‚Tp‰A‡®âEUý–iò¸1¡^YÕÑð l¶’uÝŒÏEÃT†©^]+ãsQ1•b*VWÈø\TL¥˜:U•1> S!CmNu%E)¢W6$´[ƒË*Yùòë±30/®«fbM‹â•¬jh!U«òæÚVUµ‚®U‰sµ«J[HAתÄ9zý-„ jU „U=w!hš‹SÃBƒ&Sõë*œ…hÐL#ä1bÆ/jpbM‹â± ëo–‚ªUys,èú›¥ kUâ ºg)èZ•8ƒªÂYªVÚ`XÕs‚¦¹81,4h2U¿®ÂY¨~/$3¾xQƒ“kZ·ˆ]³T­Ê›cA×ß,]«çXÐ8KAתÄ9TÎBPµ*Ðêž»4ÍÅ©ˆa¡A“©úuŽYucò.¼nò.üiò.\eòÖn³Ö^p4Z«ÿ÷õ —R¾ÃŒŸsüV>Oìœ|¼í4üÛÊÇÆiÜŽ &§¿ éd¤B‚’(gø•N£Œ/^ôÒMÝ9+h ½¤é6B$Äì¦À øâÅW‡Œ%#•ŸøêÀ\ùy´Ž«%,Žô#<´çò#-§°ðÕ™,•9¥.QËQ8­˜Lr˜ˆšá),v&c#DBÌn L-‡!ƒ©À˜©d!LXü¨„‘“ lP‘r‹ýæ&<¿óë£ý$µ6Ç9à!èO¡ÐÎd° °Z¸ÓÉ$<¤ýb—42HˆÝ¬Áà°©åBä0A+xJÖ˜…É`$`¹p!ÒÂd‚ž‰H;'÷e RMA1 Së—œ‚RðŠíLà »… 9Ý™LrÀCÊ71ŒÞkL¦ý[$ÄnÖ`p ØÔ’*r˜‡ <%KðÂd° °\¸ia2AÒÞÉÆCµABj€5¶¾Ì‹ ¦"(e¦B©Âd0‹ŸÃj!B¤Ád’*RŽ £ç† ãçb¿>Ú¯!é ä0±Ná)ÙÂ&c«D‚­î\ˆ´0p i¿D㸨‘AP Áà¨ØŽoyX/çá¡Ã—o3vžÂ}g²Êõ%QÊ9ºN+&“&¢¦ óoÛt&c#DBÌn ¬3™d03•ìñ€É Ï^—4˜L`ƒŠ”[Üè7§0á¹ø_í u&Cx:ÁS(´3¬ ¶îL&9à!í븤‘ABìf Ç€­3™ä0A+xJ6Á„É`™H°åÐ ia2AÏD¤“û²† ©€¦À u&CxJÁS(¶3  ¶îL&9à!å›Fï5&Óþ-b7k08lÉ$‡yZÁS²S(LËD‚-‡I “ zðöN6þª R¬Áà° “IS”2S¡Ta2˜…çl5^—4˜L2@EÊ1aôÜPaü\Ìã×Gû5$Åd’Ã<Ä:…§d¿U˜Œ­êÍjÑ ia2àÒ~‰ÆqQ#ƒ @ƒÁQ°Û„ÒÕ.`Í:Ë‘Hµ¶X·;‰õ¾l\ŠPÖ’ŠÂÁÔÞ~ª›Ì¾¸l䈭õec¹£ö!9ÍÜ,LMmC¼$üëq¬œ`å§œä ηWG›5 µ Ú2À5Ð.ª¥uª‚-x̦ ×µd'*d€e´/% †sÄØö¶±]ÃQû°œÁô Ÿ¶G/ì{ð˜Ízã¤pà2³hgdí«¬ÑpŽxº¾l,×`ÔFpË£@!§–× æà1+ŒÖ’Ž.Q¾ˆA¹ªQ‘öd b?¿ml×pÔ^4g0‰@#H¦]‚=xÌæ ‰qRpAÚY;k¨ÎW··íNßç4S2³Ôâ„v` ?dS…´8 ÒA¤¡”›†jibT{u´Y¡ÐÇ78ƒ©‚õ •´ÃÂ4l‹(9•Y<#ê•ò(§,+‰bwìúè9…_âƒh¨ôãFïÅ©KˆÝ¬Áà°uŽ’œB3©c«,tör9­°‰[ ’—tô…lއÙ;“ÿ¬‡¥XƒÁ1`Â’ŒB;g‡V{[ߋ崂&l84Hšù¥gþñ³o&ïYÿŠ‘¬aD¡)“œú©/AÖXjèGÐZº#ëÍpÑ ip@«d”fßLÞ³þh08 ¶öÍï¾~á˽9}.ƒ3„”|ùñèÜI çª:­¹#N‰R\V¼X“ŠÔÁ”ÔÞÆÂÑ»ÎilHÀâöþh­7FÐYqš ˆ˜¯ä€ø xø9Ã6ä$Ø hÁFÊnô–S`ðÎæ·Ë5uÎkã Ah v"ƒE`ƒ… [²Ó2ÀAÚÖ]IC‚Lf# J8ã æh?ÉiEa0X 6Z(“Â_Íì£]’Ó²Æ x½½?Ú_WWôa§öÜ §à8Ú?@R×7NL(GA'8 …v–ƒU€Õ“œî,'9à(í븤‘‰ìf Ç€M]:As´‚Ã䚊°,ƒ,žDZXNÐ3Iiçd㾬¡‰* )0(:²áBr@KUi_8“bUÇ|4ÏM3¨Ñ’ÎLKj¯Ñ–ö^ìñ¸+ ØÍ Ž™Á! îú ‡9 E –ÛA½Ÿf3m?-fCÙ~ò‡mò™¨¾ø©Ÿ­ÿÞ¯ú‡±¾éß÷ão åòm «Î_Äœ~^ëiߣкíÉ~Ï—îÔ/ÿÑŸå§>üs÷Oùz5"Ç'~FÐe”_iVŸ ògû cóòøá¨Oñ›5åׂœwãW–ìWÐÊ'¤á×8.~£»xíwM¸þÖfùpRQ2~Xµj¦¶S?eF–õE÷òa?Ö稷ʧ|±ì¯í'DÇX-¿…µoò±¾£xøpùÃ"?åWÝÕžµ:$Jq‡ý™çýö»ù<\ý9ŸóÚó™³úÓsË_\o¿oZØŠžÿ¬?´&­B}6+øÍQ}Þg³Ê·©5¬GŽº2¼Š4œŽãGÌ‹J“ºX< ±¦Eq}ô*9êòñB ªVåÉhQrÔå…t­J”ñ™ä¨‹Ì )èZ•(C Éé×BPµ*#dèKѳ4ÍÅu†‡Ð ÉTýº g!j új™–šƒA×à$ÄšÅ-bA×ß,U«òæXÐõ7KAתÄ9tÎRе*qU…³T­ ´Á°ªç.Msq*bXhÐdª~]…³P¦I`HcÄŒ/^Ôà$ÄšÅ-bA×ß,U«òæXÐõ7KAתÄ9tÎRе*qU…³T­ ´Á°ªç.Msq*bXhÐdª~]…³Ð±×o3¾xQƒ“kZ·ˆ]³T­Ê›cA×ß,]«çXÐ8KAתÄ9TÎBPµ*Ðêž»4ÍÅ©ˆa¡A“©úuŽYucò.¼nò.üiò.\5IÅÍ•å®uÍnWΚ„DÕª@ëö•GEH4ÍÅõºÖdѬZH¹òáá‘wí›K³BPµ*Ð\Ú.BÐ4§¼ÀBƒ&ƒæÂ(“·.p .Ñt­Êš¾´J„ i.Nác¡A“1a­jÌZk’=šAmú`ò;ÉÁŽA®ü,ì(È0WöMkÛDH”Y’ÒÀé¾#Ðsê–`GA&C²ç#DBÌn вà$8¤'’Œ¶i ÀÚžBŸ6ñžƒÀÂsF…×%Í{vÛ4ÜâF¿9… ÏÅïüúhÿ©÷›ÈáÑÉ; R¨ì9ˆU"ÁVCÒ²ÐsÚŽÁè븤‘ABìf Ç€­÷ö’Óv D+ï(ô%öÄ2‘`Ë¡AÒØèèë–ÁèœlÜ—54HH4Å´./®Ãwl¤¾‚#6È%±R$4 -›=§Ý´ÃèÊzUgpv‘»YƒÁ1Ta§OÉinD+ßÇé³oÜØËD‚-‡Ic? £o×nFïdã¿¡!!5À Ž›ð¹d´ 8¢´]Ï‘Rq}GÌÂs¶¯KšwzF»†38&Œž*ŒŸ‹yüúh¿†¤F}’Ó®â@'nêôÕ ÜåU]¢Y-$ÁÅrF¿D㸨‘AP ÁàöÔCç·Gë@j}‰sÀLÐ æB¡ÛØ(Àf!GNwj““rŠuZÒ¸DV³ƒb@¦V»Ã¼­à-Yùfcà »…‘bìÌKÊ3Ù¸.k`"ç·÷ †™×  –á8¬„ÀZ°¡ó @bät§5É)u/Å0º±±švt•€Õ¬À ªO- "‡9 ZÁY²B(¬Æ†Av -"-¤&ØAIÊ5Ùøn¨?‘€÷YA1 ëk”È`R‚Ræ,”*œÆVñcØ,Œˆ4(M2ÀIÝ+aôÚPYxãøíÑz H¯®#‡ùˆu _Éêª0Z3JØæN‰H ¡•БrJ4N‹—H0(0(F>Ûc,9BG» í# LWX2ì|–‚kwaÁxçÁ÷™[Zšä4BbÂWXXîŒÆFˆ„˜Ýµò€CM2˜“Œ)K– Áh€ÆcTBˆHƒÒ6“’v‹ýæ&<¿óë£ý¤ÎiÈ%A'( …vNƒUÂzlµ°"§;©IsÒà븤‘ABìf ÇÜûC Sœä0C¡0˜,Õ ÅÁL!A†!$‰´pœ¸¢qÔà©l|™5NHHm4ÅP…×Z‚RЊí¼ÄùØnaFNwb“æ%í›Fï5fÓþ-b7k08lÙ$‡‰ ZA\²“!ÌË„ûØráF¤…Ú=3Óàlü7T$¤XƒÁ1`n“ f'(eòB©Âm0 ÜÇV 5" r“ ¦'í˜0zn¨0~.æñë£ý’b7ÉarbB^²$ìÆVuþkVw~DZè ¸ÀNƒ_¢q\ÔÈ (Ð`pŒü–ÏÔ¾êÒ·¥ZްS¦NHÝì‘ ŽÎo{ùYuµY T8­øMr˜žša/lƒu~c#ºÌn ŠZ}ÀÑwÉÁ`Ì_²a~,~TBHƒß6J¹Å~s “<‡ßùõÑþ’Ú¯ã°t‚½Phç7X X- ÉéÎo’vÒ~±ŽK™HÀnÖ`pÌüµ™ˆf'ö’Eá7˜ À†DZøM\Áô¤=•/³Æ)¨¦À ªPmmrØ JÁ^(¶ó ƒì†ätç7É;)ßÄ0z¯ñ›öo•€Ý¬Áà°©­Vä0;A+ØKö]…ß`$`¹0$ÒÂo‚줽“ÿ†j Ôk08l}ïLPPÊü…R…ß`?‡ÕBHƒß$¥FÏ †ç0_í×ô¹ä0;±Na/Ù·~c«D‚­î ‰´ðp ;i¿D㸨‘‰Cƒcä·3ÆÛ6l¢sްÓé6}ƒG6‰;¿þ(í¬3 ¸+ œVü&9žX°vö;¿±"!f7E­>à~“ &(cþ’“à7Àÿ1*¡G¤Áo› J»Å~s ž‹ßùõÑþRç7䀠ì…B;¿Á*a@¶Z’Óß$‡Ùið‹u\ÒÈ !v³ƒcæ7t~“f'ö’ÃÂo0SaC"-ü&®hô4x*_fRMAÑ«p˜¿!‡¯ëT¥ýŠŠ”*WTš]ý"fkßýƤ;½IN»­#ø6Ïà¼(±yt±š²În’Óîç@)_@éWpEEì‚ì†I ¹ öv=gòÍì=ã^ñ>+0(dÂm’Ñnç@'_?‘B傊˜ ˜ ’»IF»œ3yföq®˜È F –â7ÉiwsX'®îô£?¸Ü³D‚Í’z0¾š3yföq.€@AQÅíôã J·‘¸Ñ߯7Ë™'9·MX(h¦¶ Ì„5p#’2¤•‰"»›‹cÀ¦NC!§µÑÊ¡ÐFõXaËl°HCµ`n&£wfÿÍF 4 Ç€­ÏBFk'¢”ƒAŠUцÙp‘¦jÚÁÜPFßÌÞ›ý #›ƒBÓ‡æÓZ ”¢%õfÒÖØ0ikScµ an*£ofïÍþe(¬Áâ¨Ø< _ô Vd ©Ñ€æ¶÷;–rü¬‡Šóé–‘‚¶j[ÁÔNXšJè 6@6óû#ª·2dp#ƒFœÏ“0a£l”H+µñ?µã–ÙoÖ³p<¿?BШ¤}!ÍÍ Qý(²ÛdãCÚ§ ý©m§Ì^³~……üþ@AR- ܰX¡4,9Ùˆ†Å6õ–g[¦ù©U§Ì^³~ex„PQ…ãl­è'+‘ÃñÈ®úYÌîÊû¹tWJ›ð˜Â‡_Gt¡€0A$ØDh0 `ý4(28„ ¾B±Ê›l˜ñ¦ñ"S¯Ì~›< YÃA£ÒÇe‘ÃQÄJ%Ê䬄!&6ŽMLAd¼2ûmò,ã€âCnIû“bkËã-ézit?v—2nIï1„å-i"¤ýÅ ýÅÝ{e¬î“kœ›»÷dy:Ã#((+gvOü@#úÇ4Tzòw!]ôÓ­ÑÑìIw¤—=ö3]Õ³ntµ¡ùhÀM?ýyí‘£ß_þÈŸ& 8øá•'g[îÜk{yÛ4PK½2ü7Es¡ìã2€æH·ÕU{zZ;³…^tŸUüÖµ´ðG#4|9Rñcp‰†âÕÿT‡!äã˜ýˆ'xÁeWHü·mxR>âÒÌk£‰÷jSC‰^ÌDZ ÍL¨³ôçí8N®Ã°êèäC¿~ñÿ´”¡endstream endobj 228 0 obj 12201 endobj 232 0 obj <> stream xœÍ]I“·‘¾·ó^Ìů'Ô5Ø—«ìYìpŒÇ£Ž¹˜:PÝMRɦؤ$FÌŸL…J õªJ ô£°$rùrú‡ƒ˜äAàÿʯޜýëÿøÃË»3qxyöÙLÿç¡üçêÍá«Kè å!NÑ)g—/Îò—ò µ›¬Ð¯ô$¼>\¾9ûûñâ†ÖÁX|•~FÔ7—†Qd3Š’ST:ÀH—×ðÝÏ/䤬òøÝù…˜´¶^ùãþöÞhŽïð·õ6u|Mú±¾ÇgGÒýEšÕ§å¿…Gì$Žqf‡ç•w¿ÇŸFI­qˆ»<ûÛ™™„=üªä?δŽr úà¢ÿ†Ã›3à =)S[^Ÿ}}O…#L: §lV8dEjSáHàê¦1èi¼&§”ÅØ‹äñÙ9!ê´pÏPeô“ó.K£QEßVi./LN 9/ï¿°sŒ^Ɇ¨N(\¡¤ŠT@®3ÇG²88žj:"éŠá¿5Ÿ¯hxJYÍ[½Ècär »ÉØ N€èêê6}»ÞL¢ÛE kUÒÚ`j¬síèÄ6ÐÞ×dRJµ§[$ÈèâÎNöL%@kdÓ ²Š¼n |©~E¦ñãÌñz(«ò¶ëƒ›GUšµò.7‡) ; rj.K´°°²tPB©;²šrpzÖ̬E÷óOä¨®È ß1ƒ¿=}l¤¢›Ç).æ9ZÓÇéõç ‰@&´B”+‹¼æ`èˆt#×e î¯t¾_¢­áñ¾Û^íQרXÂtëUÎB/Û9º\2ñãø¡ìÞäù•m%çgb8zÑÑïò0ÖµÏÆà.”u¦Z9š êŸt§8›8)˜Ùø Y¤ÝÍ À¯îÉÔO¬óý‚]ˆ% ò²À›ÌÙeÚÄÙÆeN1CîY™6d¢Dåxüaæ…`áÿÝÆ ­¥ùoœMøt^¼ñ¾a„,ô:³A£§Ñ¨{bïãǼ†9ÃD%š—Öì=mhB²Eá[“–gJ±ÙšìïUú΄–r«ƒ6£¤ß@<&mÑ©G&Kßûhhf}ªyÄJÚNB ÕâàÎÊ8¸â–„ƒ¥SqRþ`£-üJ¶Í…Úrð # ÓpM¿/—½_Vô¢CRÙ@`MP”“…"^˜ NÂPŸòySlNi¾]HøŽ4'Î2«pV!mi·Bê¡¿¥‡e(Ð2Ü—Â!Ì”,ȸBDÂÎ- °µÐ˜Fu|úÊ~c7V˜æï½¯ÐzÞ °ˆZ¼’ï²¶ÑÄ-ù B¯3½‹·Ô©@€H=òJ%(~ChX*€–ØE›..Ph#`TeM›xnqI-nZhð^΋N¿s¸@J¥ä²På#0 ]¨–Ð+>f¡8W7ëüb!c2¼=í%ª1ªášµ¼Y30/ÈyxÄšaŒøè³…ãR®Šç7ÄÓÛ›v!a Ö7:gzžôœ‹8[a]ÓŸˆö]òdpŒmœ€šs*c¬î/l6j°“i»à‰+©Êͺ¨Œ÷é· 3‚-šjñ´jé¥_ö!J¿ØPõcÂŽ:ãÊ!²³#„x%ƒ ½Ýƒƒ*¨Y°¼ÞvÁ¬¡‰iƒYð›Ô“Tˆ±Pî¤óhtJÃýM ̇LJ*jbÒ"zS×3 µŒ‹~:áÛô¾ã]&¾HD„Ÿr Q7› ºÿêSüwSiN{¿Êëð¿ Ëëâ¾Ú‚Àz9@ÜÒ´‘ÙÛÒpÙ×uËvÕ£`,uÞ-îÖíâ+ tŠ üáÔN>¥NT ÈháÛH '|Aú;©ÏõÒ'ùcÐÔ¾óÇèâÖ1n<¤—‹Àu¡g úäÔè;ô„²Ÿ ^+ë¨s1 .˜À°ðÍìßd—:b£M‘XÔJ9»ü—-½T¨#E‚IDˆbåQžˆ<ƒÁŠò°Ÿ¤ |¨à9É!¥Sz9$?ª•¡weüDX5’WiõçÕò3ˆ¹tGQ[¹Cª-‡DW ßJYœVr©–U²oÂð³bÙ| Ê?H x~l—áÉy7K ÿ,2ÀQÒtdM›ÑCV«Ú '·l„kóÌ> iÔÐ0rRe·Ð𔹄»•«íã[ãÖx°‡0¡Sr¯8VÙ%Pe…É£Ñ/Ñuv¨˜¶R ;dëež'è ¥1E»/ZÀE@9ôù¡Ìj$Ç{T¡s½*fFñ\¾Jôà‰î¸Èó¶ÞY KN¬ XTV7LMõOW¥o<¦L?bû 6 ÷µtTa´öGVVóÒV»òîG ƒLå&—T*šÊ«{qšc±=ác.oîXYZk Æ%UŒz—K±„‘Ç>©'wâÒ‰Iîë¯_ÂU»w—;*‚<•SÕ-¥áèÅ]e€à*F°†³+Ö`l_`%oÈõfçÁ¢ë“‰ÀOeMÚ6“pÑ{ºnÚÿu#Ð1M£o\Ê›÷à4oWg?„c$zÉîCOö* [1íð—ðÁö üZƒØ¾lSF¯ÃÒ §_ÞçÙ•®ËISŒcw¤•:r§nÆTZ†iãz©]¢ÛÞuÊ$‹±“v˽bšî¥ £0oæŽÅfpíq×Ö²I…íòÌʈÖåsÆO½²œ‘{ÈÊ×÷Ó S;NQ”[ἡΣàĦ½J‡Ø^éÀ…Hsæ Ý¡ü¸ƒäfm¼IòP#9NëÞå¥í©œ±%oXbBFàBlïóÈ`jW±RÜ¢±t[4Å9Ÿ‡–‰¬€(5ºËˆZæõ·ÐòD«â¾z)Úä=ÖõÁ÷ã…ªö„Ç›1'^a<±‡”m¥¨":N}|¢~H]ðÂ5MYWnŒ@qãÀˆf è3'{?åýúmC€ÑMÑÔÚΡÁZ°¦1¿-ßÉ.[g<¹³ç>ü›<Šð½ÎÅ÷T$›]ü­¸ä}nÉŠójbw9{Ž›2臤…¨PÑÚ®s¯r?t—ç “lÆÖ¬Ó9‰~ŸòpÎNÞ·KúÒ”mùM.ó }ô(îÐëo ¬¬@>HOywgÜ·Sð×è2 Eh\$}ZÚË3yc­Ä|…½Êý=|©!˜T µÆþ«üÀGÊF¢ô¼ð;®­µ7£•¸¢¯ša™®ÿÂÞ\¨-¸·& rqð3Â#.®|1®^\[g Vró ©nRÙªšm£¤ãϾr‚”ÕŽ;Þ]èÊ ð;-û²¹:ò»ñäx[ç+{¿i#ô£‚Âï6©Ì$eà rÕM],?¦?‹÷ƒc‡öz?ÝÑ໬Óý´VFc¾H½SéX\ÕöØÇˆtïâ^¥»éÂ1”r£úRú&àlÅ´Á{Ü÷s»É9NÚ,' ö§ÉÐÖe’9 ðRölÐD?`£Vh« k;;œS½Û¼ß‘šsNr)ÉßïQ•*wœÚê=ü_Váµó“%ÕÀ«ÂÌÀ\z…¥&žp|•Ïêê ¨wG ] î]‘ç^8¥Þ´qsúJÌ>ؾhˆtóÊÁÿcz*ïgÿ°Yõ™r¸9»Îg¥=ˇ2§›T©Š(ÝR‹Ösb¼ïr^ïs¹‘e$½Þ0¨òyÀm^<¦0ʯô&eíD­žrˇêDãq5AëxZÚU0Øàdƒ@]¯Û°mT¼õí øÐ*µ?zð8äÅJ| ! ÌÜü¾®)nˆ^<ìRA"Õºî¿PO†¥:ù¹³Ii%À ýÍ_œÝ®Š(jÐi Ž:Ú¨R/ê)kBŠºú´º€°,ƒNêôæƒ*'jx>ô˜³ölýŸ¼ÐÖf09¢dÆüJ®¾²;‡ô™êó§ØjODœ¯9?µ“ž®8vo<¯ËÙ©áÄäÄ Ûõ¤¯à•`=zàÛóÍ„øxIxš „ $Þž,ccj&×¶"Å@ä$Ý6Äó°sÃßé=D&ëÆÙ÷ë]á:ü-?ñ)ëXät*ÄJ)D¦?åSn_fäz …aaüm¡e®*ª *CªÒ¨¾º.Kñ»’Y‘†g²3æ'Þ´0Xmû\B’¥þM‹ÜJÞ´Mæô› ã:QjMײqâføS¾i¡¬J©Œ®öÛŠ»ÝŠ'@/Õ#C/_‚Ó÷½Ô…`ÖRzXˆ>þûypœÁuèçÀ‹ŒÚ˜5唽FFSŽÎ'H?+uæpÊKÍ n•Ó$«ýjX¤2;§ün9º¡ûe¾‡`m§êÀäaÒÚz¤l¸EE=õÀ€©ñ#±PšÆâ“íz3|2Sgø'¾R½¼ÉúûE/ùüvi}v\~“8åÿ-?—?NO»—ǟ—ÖßoT—ö_ƒšŸÙ,¥Ÿø-ÿ5ƒ*T¼Cÿp³”"­].‡Ú‚µÞYAÐëy³º14x ‰m¤æ^æ^HH5ÐÖ‘µÞÏà³u1€ÛWstµí3´ÞÔ^ÉR”§ŒvÙy*úm™Ci ›[­fª™ zNmQˆâ†ˆë¬áûä<¾X ÜBI¡@½ýèL‰r?^,º®‘»V6GdÕÓó>úmÜʬÆb>&‚_ͱ µ—Ú§«úàÍ«d¶aØ«UƒG†ż‰r@ÿgï‰%äai”+Y w'çÊföýᘛr/Ï7ŽY`®Œ’nñ4U›(+Ï&ÞÖ*‰uõñ|Û  erÉmÔ.ÏÅÜÂãÊ÷¸+\ûЯ’€X($«íýz1‹X~þu±›—ÃÿÙ˜ÐüH,ïØ¼Q@‰ÅZ °¤sËþDŒÎ}ÂxÀ9SIþ~ ÉT’'êøjùùqùùÝòsyž'» y±‰[««ðe¶‘B0/ Ù!,’(–Ÿå2®q£yGyÕô`^— Q©WkÉ&wðvsÉœc0cË|í| -ÜþÇǶ*¥V¢§{Wwy­VwuSÅ£S õs|î6O¾ëuÜþIôaŸyÁ':±Œ³þ±.½ldy® ËßÎþºí®endstream endobj 233 0 obj 5618 endobj 237 0 obj <> stream xœí\Is·¾³ô#^åôXeޱ/¹ÙI*KÅ•8br±| HJr…‹lɲüïó5€™i`0Ãå)¶â¸tЈ½÷ט÷íN r'è_ùÿüúèÓøÝË7Gb÷òèÛ#™þ¸+ÿ_ï>?Å-wqˆN9³;}q”ß”;©Ý`…Þy¥áõîôúè«ýÉ1–ÖÁX¿ž£ êëÓ¿`ªUÄ€I+^à½7Ç'rP*D·{|‚¿¥•ÛwlÅ€WÔþŒFµˆ±™qylå࢈û—´_PÖùý4AJå•Ë{Ëúr0ÎíN¤¬q2SðOz=F¯$#ï­ëŸ§5ˆÂïi8á…ÛŸ³çïéÙz‚âÓË‚Fû°ÿ&D‰çwÇÊFº8nñÞs¶F™l½òû×lü Ä­½‰ã6ÚšÂ+"èæÛ¬ß¦UÀÜ›å–iB×FK°šÁƒÿå8l½v!ÅÆXÄÒåïšèË\³‘MÒ*'ø1ï"b]Mq~°¢h!Ç­”BŽŠ¢ý¨(Á{9ÎÐÖªQQ”*Š"µQ£¢åmOQt¹Ð”²7?ë-±Š/L%°ïÇ8'¯˜ /2'…”ÕŠ¯Ø«£:DC³i8h­{j%õERñ×x D E£x4ŸÑQF­¼ƒéÒ³ÑÂGâʼnnÚg3±V.yÀµóv–'´FKìk5}A£Ðvˆ¨sêļËü"l³£à¤Uçd/ÖÈX½ÆÉàK¯)ŸÓ1Ø¢©D¬Õ†+êB¿Óèk&7NÖ1¨è÷§˜­„Öx\œ7ïò"3_88ÓØŽ\°l÷·´FÄñ»¼—7!½RªoÕhSp+Z;ÞTŠY,× QÉålVã5I¿œ§pí¾dæò&붪¦°ý³J³Ÿ ¾¨8íû„߬ÌÁ»ØkˆFî˜UbM×tœìK›!h[y⥺gOË=ð†Åj;x­öaØd½N"Uóð'y |«ž ÕEÛÑ8§¸u]ŽSÃÞÍ£¶KOvÖu^r¢ä•£T–ËH^5IíìÇ׋bþ>k£¬¸Æ•”Ÿˆ;ø³cEC¥ø’D%ͦӃNøX¯Ç”ž êNgt7”¦ŽÒ9ĺ—Ìuó¶ïÅø›Ü€ùÙ™Ü- ­ÂBWI þ ÔÝЋˆ»^g¢KR˜<¹ƒ½†ÈDZü§G_‘-ï~@žûGd1ÞìœUPX»»>’^“ûF®Žž®fà ¡c6ì‘ ä°ÊÙð»9%½œ“Žïˆºàa©m*;Í~OÂ… µžèGnjÍhF °C<€d,€ä@Ö$?™¹›TÚY£ñ=ÃA˜¤Õ±Éþšr+ ee5ÑÛ䣆­Ž™°nRk–BóQpìÕ”÷´†¡¿T&ØQÛ1]¥-AKr™1ÝrcšBnOG£‡a+Ùè¨Öut4壥Üt’±òT;§¡ !’ª+9 %Âûú,{Áäb†4ÂãpëI©•ÌÓrm»Ê3”°ü½ Ï5|\û Kô¯êÌeTÙ6…¥B<5ä‹sðlDÓÜþÙ³é՞릺>ˆ82-»lù²Ça›ŠöÉ~S­|Õ€tÚ¢Îd)TªÈ#åóR¶ø)6Â\x¢ÎÏÕI¯Dmoóp²M£¦yRÇçð²á¬/ÙËœ÷8¡Vëbö&¯¨ù¦ýzç¢0eŽÃ ÊyÎÀ‹O¾ÿÃbµ^&NÿzHâô÷ìñ*÷ß5ýÉÙwŒn—„);ò8;*'Ä^À±ý2™•9sÚL:»!á”ïú¹&UiW"ÃYŽ‚ðãñ­Ùù^¥÷(ÙÞ´Šu †e+˜£rƒ‰¶4þx*Òû>Z%JÆ¿6ÓpO•`BŠÉážÍ*ôvR!p¶¥Ç.½HÊ„2TDQóiòþÁI›>âT0&3¾ ßÎÄ¿fÃI¦&B¤E¦åPeÜ ©»ÏÒƒ 7Ïø¸³5FƒpAØcáÔWmmSÇEÄ1¥øÓa|·Ý¡PŠƒð”$˜ayD"ÜvZaðÂä°Í3\âfÄN8Çñ8–Œtó#i<Â7#ZAÕå +À‚CMôcr ‡ÃÆÇ ôöî$ña‰$|.\9g”£¤>„QŒƒ*F]0¢ÖW6><õ }QÀ!/Š„Ö,Ç:güšÅ­¯[÷ZS†àL0=™¾^a ¯ø|fÔ3àÝu‘F+,ùtDÒ¨¼Àa£†·JÇEPVr?—Òd‹ôìB•[ä®3Q-=ÕyÕæi‹†í3¶çEבQ¬Ž=t/ìÏeZ*#ïö›:®vïT®ŠYÉ™·~Ý(‰Ä{íúu7Ôጡx¨|ÝÈuèШø>ø›ˆ%Ônmŵ\·“M•‚ôy@àýs¢× C¬ÌbŽ ‘¨tÈŒi7·Ð"Jô9ýÒ}V¦° 1¯àÊ+èðêœó%ÑXÞ|a\ª"©[ ­AÌË2é¯å«J´“Ë.Ôežh)"ç­¹ Oéï nuEc }¥¯b®ÅFÂõÅðK×*¨â&Pݪòª r\[Þ¥aiú˜9;äZ/æ¼´Z$¼ÉèxuxÅæÖì3Ècœ ='5u&AœÂ®wÜ 8JÁǯ©Ö>Ø‘”4ƒ¯òÉ<»t`Ò¶àƒ‰ö÷¬~âÜL»ÊF|ͦڄ䙗rÑ$ CÔ#´xuw¹Öã0(gõjAÈ)+¤[[ÑÎ5¨–ùÉÔóYbwµPZßs1 Â|“9£LØ?Û3Y qMgÈÊÈzý•Ñ‚hŠ•jÿCb¢lÅmþâ²8vº1ñd."Ýmâ"ï@À‹­½GÈà ÏÛòœÔgÇ£è'|+ÔngÑÏ”ÖÝÇ·É«YéGŽøÚ•+Ñ„¹©ç·`K þº^snŠëû, GѾí:Ór¾›´e¬æ$‘+=[ƒ,WBû Fsö1§Ÿ”( ùù·”³*XÓ„Pþú€t·¶ì-cüµ3ù±t&\v&E;gÆþbÐÎñšßÃÐNû´óå¬BçsåøîgËâŸâmâ~ZTù‚úùpMÄËèvHªƒ„k"ìÚyä1¸&²ñ¼Â`T–ØuÓÊäg¦ZJ¥Ê½°ü DåG!ÿc9 T&.ï{áØ|¼{ l“sÿL;]Å.N\HkË|©WÅ¡«¨Ì]˜6´f"”T=ê_ ¦M¨ŶŸÓVdí“Ü6"yµWδ­có\jÐQ”²[©l:­’kuÇ£*Ü®ª t¾‚M“š­d¡7SzgZ|?dÛQ­‘mBÒ¢’kç¿ÓÞ„m4õ/JH%6©wLÍ*Ðöš=sxím‘ƒL‘,ÑòØ%éþíj¾ƒÿ0AoÊñëϼâ$z™¸* Ñ–=­¥}ç^V²‘{]Ž7žú•ŒÜ¹ut+û“š¨ ÅöäÝ|ç2÷â¦ü«LÊv¹=®ÝÍЕ«¶¾–•Ìø›Íz™’dq¥°¾J8ÑúÉñ‰pfÛöé“®5›ç[rR8ÖÉyõ&sP[YÁbŠÄfµA»\}ó½;¶ÁÆr#hnáM¸ÞM_L¦pŒÕ‚v+àþ¦ë$ˆÝ¦ù$yZ\(©~p«¾Ô”žÜWõéÈbøØÔ}cQÇŽîßnë>D„üàºo©uÿêî_¹êÞ×}®¡@ݖ݈¾Ó‚¶Bd¸§ã¢±W#{âf ÖÍH7Wý‹B• <†pÝXù­E·¥#د½3Þtø&f0…'à2ÊÁk·stÄÁaÍŒÑK}arörìÓpi<ÇEܧÍQö­õ%×{Ð[#i¦ƒ©Á×¹Ú|IyVN(u›—yB›ªQEžM+³ì¯4Ÿ3áSøQ(ùAº¢ŒÝFªòQ#Qá´Ú²÷4E­·0î¥éÂOÍ[òMnîx‹ÒhªyêÏW'µLW¡áPPŸ4$ó´2n+k½ž,5áë¹hÆvf!¯þðxÅÇÏô’ú²Z!ëŠm,Ùºè+K"B‚6œì-#ŸؤaéšÝ´€$ˆôOÇÓÇý« ©Õ§Tî¾Oçº**9u#xÆÂ<îþszžï™Q  Ï;½ÔîwßtôØkó4)½¹hbfòj/ßøêÆ¾’ûåŸû,crRÜ›üE}}Pš„<–úÊ\®rž!!ÁSµÐŠX‚)îŸÔ¨:9¡zÊi~G:í©[“¡Å¦*W)jóª\¸GIw¡¬‚©w?[§â?LJñétš ¡€'A<“1}!¨ïpzLÕ‡ïyÀmûhöO „‘zÒ%B‚};ÿàž¸s˜Áv˾WµéK¦ç¼&×Êáš½uIf ]ÉZ¤&ÖÌ|\‘q¾r@˜=Ÿ³šDc÷ÓœÃbhŠ‘(î;‚ÝÚµòc—Y.ÂùË´ ¼Ù‡Ð¾×Iõ?Q.…pjé:à6¦–ŽЦX!û!Á4h5ÕR£üUy¿¸––"X\µLvGݯÇÕÉH`k²_5QÇ8ŒÖÒ.üªÒ.þì~UK<ÞéV­Ñöª‘ܘYúí¿åÓ'lêñv`”R®ºG a•§«[oçaæ@Yí1Ò o}†Q[ŠuúÒŸ|…»rH÷¢ÈËêÖÚ¼`_ù!gJrž&‘bËØ”&+_(Öˆv¾Ó¢zJõ¸ÈR÷£6¯qß;üzëÿüWç×>ZX|ó&^ä)Ý<)Mι‹X~«·‹ó­€|¹£¹†r¯_{ʘ4‚²zµâúÁ­Œ¤ïé³§í+e˜Býëùî(¿}Uv÷RNsl¯uz‘,ü!çÃ}ã´ôÉë ÁèŸQr`¸uÿÝLM{58Û^î{w©Ò›’ Ä¿ZZæ]#gœ¬û|ÖÒÀýÕG+eë:Ѫ¾Úg ÅÌ«Û,å8*Ûø{™¯yïN,…g[\,ûõ!_%]鯗GÿO§å#endstream endobj 238 0 obj 4064 endobj 242 0 obj <> stream xœí\K“·‘¾OèGLì©gƒ]Âû±{ZïÓŽÝðC{±}Drè0Gk(ÉÜýóþ@U%P@M÷4Eë àa:Š(T"Ÿ_&øËµ˜äµ åï×÷WŸÿÎ_ß=^‰ë»«¿\ÉôŸ×åÏ×÷׿¸Å-¯ãræúöõU~S^K&£üµWz^_ßÞ_ýþðÕ ¦ÖÁXÿÇÛ_áUY½j'¥B¤ n_bðïoŽbÒÚzUFÛÀG«É; ŸGCS a¼>|G/:a„3‡{úm­VáëVNÎK}xEƒƒ²Î¾¥Á;á]&-§h’þX“tTrÒ‹‚~§KTBñE”ψ(ôaº9#!ssøu8¦Ó¶â_ŇuÍôØ{ðùi¸ VWßä¿ùš9…\¶d­|b‹–0p%S.ôxCÚ¥lœBÔ³îBŒn8{OÊ$…Ðï´š€¹çÕ¤ðÑ/×1YƒËG’[[4øŽ2þsráß}ÌÚç@Nß&^NèPÍñÓD6º~qýÍ ,CkÞsüé0NW’åŸy`Jßà®At§Ãç4aR>˜mT‡/ØÜ#Cå¦òª-~~6ÐÕ —ÃämlgÏ‹ö½oÄ̲¢·Æ—”ióVUÒˆ÷E…¡šÎÎ*ÌËÆÎäÅŽƒ™,Š]¼¡†ÂÎŸÈ l|þ_&Ó·–)AM.ÙÛÆ´´´îð}R'ÒÎäËtI 4™±êl纈€Øn¢i<á2úUþŠõžÏÇe4RÇoéM=5öÌç~·1óäŸßÔŸï1áæŽO µk!\ñïpFœ– ¿¬¢Å=hÄK²“jÈ’»U¿ê…uÁ¹IUc س™±† ð[kA¬¡lÁR5c ežF/VÿÕé° ,¾Èú•—ϳu›¸Ó¸;"–üý­„ÖÑÝÚפpÉê Â;-ò\k¥ïÉJ‹_g&„}õ§!RîzñÄw i\qâ°R§øF®e° ßÑuåáäâ¤Ë‹!ôbZðr 킬¥eªZK°±k€©ìgµ÷#ÓY£dã˦uH¶4e 7µ#b¤Ó‚¬É·›…Î:;QubSÞ)lúWŠ{ÎD ò’¬uÔP¥à ½ÊÓE¥Ṳ̀«[¬5U"drÎ 2É>:¬¶´<ï¦I¤:Ì„|¾ð Gµ™¢wqîÿOe„«6§`Ìá¿%2™·NEôæ˜K»ÞJÁÎÏó~,^‹­Î,Z%\(RÓ~Ū㜲‘ÚmßMP|Òš²☢PkxçÑi‹ä“*þ•¦0SÐý'þœQ…4m²@ï{¼ôi˜Ù5ÇsL`ÕF×±|o5¢ãûõq!¥)˜B‡ètìªV„Y˦3n ƒ&ÿ€ÿ›¢tçg¼$Jói$D*áhœB^õqDú°Ô è!Ißñ¡2D…,*A:ú°ˆ1:^æ˜q áHËR33J«n)DJ0Ö5µžÐ”dÉißKý£©ñç-²2åüí8Ayu“¢‹·r¤ÜH¹8¿c³¼/³˜óU‚Þ ñã•#\³Ô;‰8,!Ey±ŽˆÆJ†5Èix¦Ë†|ÅVÒh”'Uðóé"ä{.s2üÐÀ7³þr.=æ‰E”<[dþwf’“U½ƒCŸBåêkM$STƒ˜¯²r‡Z·9„{—å¤*0:­ºP$½R×·ÿ}uû?CŸ!ÈÏägò“ƒ ÿÛ@š[JB×Voð› AðêL¥Af·­Íè\¯J*·[9‚YxX ¯Ë2 `Ly’Å÷ùsÒ̵=¨Àe9g’’Õ^fê£ £$ø!“álÙ\ð‚jÍgë{“-8ø=9gɦ†ÓÉú7š]Yç’^Âf\ѾÜ(ù¦`‘$g''d§¤7ã‚n¹©e CŽþ ûÝò¸Ç pZ0NÜ­ö}¿®îËõéCë‰+‚_ýºÐÏw¿ wªc0/?t¿üíúó}ãz®9Ô`)†„ –£XV†mÚË#["”ñ {ünåà{œÔʇbõ…³å¹R÷(ñ[z`F /;;гܸU08šø¼íð?±¿·”ÞÃóÑA§ÓÙÉa³ëtsôÐfšã—iVÀ¾Ÿ©3U©xÔ­žÖ+'oi?¦Q!½ýªN)9ôÑówó¼é°ÓŒ˜:â¨åQ‘C2Ýb-ªí†ªÇyýú ³ôCÞèW¦îH_;èR™ØÀå´üÚÇÞt´Ï‹Ÿà¥¯Ù½Ý¡j …ud¼*s@|goPzk·-}í®Ä»<Ö9ÏI´h³O3‚ÚšNŸ`æ£^ë¥_Û™fs/“gõÐë6…µqÏv­ÐñtèGÂ' Oël·wœ^?Rm½ÎOrèSGEä–gwóÓõÌ%°î²!•ú<-¨”·¯õl:Öž÷›Ê—kMÞm綠AÞº\^ªÝÃ$–öo«>øÎ1¤²ß”ÎI!”Û_LÛw6wä·ú ¨ Ts™c ˜OïDŽ6ÒždOÜl™lãÕÜTûÛAóßÏ}‘÷s“iY‹°ãövEA”e×n,u·ÌòI:ª¡WÜ‹äì,Wzîì›ÃW6lÜ:^7]#lM!ÊQ[ö ï¨YÉk©­„ï¿r¿½=´=]öô‰‰ KœhºÛ·OäΛ<ÀÌMÑë`sOð´Áµ¤ý1;÷ %ø(€c»²Q@ÆÕ;½}\] ’s®:üyg|šòÿö•´×!~´zŠÊûÜ¡Ux²UÇ#OñæS Q ý zH´-öe$úíú´-ö5 ”°·`RZµÌìÆ5°Àƒµd¢Ÿó¡¬ ”}éÊæEùS¡,bÚdB5b´?ú²6^¬²:ÐéVÿ£@Ù*ÖG*oº6Ãmã$A\»;5œCé¬ëâ¬Zß/ÕºÆíÒ‹ÂË“Pp“úÛ@êµåï(çÛ“xâë˜ò:?VªÅƒžT3Zd9%…(›OI©$\£éšD' ~hˆ)þ÷¨$Åþ監ӞÈœÅæ/¶Ð¹P´‡œ¹¥èl*È[×·–Çw«Öžp¬žnNpj8%-tmzðj¯Lµ)M¥ºk`0@ǺËç³+V¶Aï!gÝ\€4Bê–jî°â\tëóÝ &(±”ÐSÛ?‚Ó [O‚*p@aìò:hÒZëÅ/m«k3 ÜÎѺ,[•Òv¼ ·BwôxÙç˜É¬ïjÙF¾<'¿*¡qa™´S÷µNc³OÇÏ8 \wÔ=’ÅýêÝl®Ã*ì3àmæ¤ìC‘v£”AEµ˜í·7)š%Œâ‡8s„Ýž_hL yÉù¦¦*Cd3(Óׄ,6 Ø}p I–öب‡ùp®í§!ËåÕeåž Û“¦™æúLõð¾ŒuE£ŒìÔ37pÁ2t ¡ÈÁ&Í@Û3iÄP®oÍÁE'zéBÀܽXü¤õfÎ3L¦7)©Ÿð•n¾J¾×v² dË뉴޹êÅ\”)2_Ó.šªÕ Gç]›Ò?n©Ò¡ÿbTŽF‡ã|îHGðJ¬ÏýP^¯5ì¡_Øä—íÑJ¾ˆ&S$†Œ,cpc\s/aÒ!|ÿÏy–tÝ8VnnR2¼ùa–Ói7¾aþ`œy§Ê°Fj+-.c>&¶—ÜÖ×sdVu'•cµ„ÿÖ3“e“ü’ÊÂ$¥ÙÕæ“2ûáƒÝ;[Øz±$òQ´ú¾ ßæj‰E8$Æý]˜j’¼TÇÑå“Ôy]zÿ ¨J—?u´Š3lÕªšaÍìÐÛ½\@=>烩ügˆÍ¡ÓNÁÇ&_‹8XZû‚Rþ“Ý“KU´j>…úϤֹ[?5EøcçŽ o†ç- ¦}3˜b¯'+õóiZãêˆZ$†N¡B¿£Ê*#ê(ѹò²ÍÅFμʮ(\uO,·éýš +’oÊšûûS­ß)Äò`¶åP¯ ¦orª6WrM¤ª„Î÷“ o‰Ë»Ô‰kÖ(ů‹‹„ÑãI¹Ð¬>2^ØLSèÙÜCÒõÖû’ÝËÏÏÄ÷{ o?^uap¹1GHwø*ÞÇÏâÔyü¥âH* >“Ïí6ӥ͊=ûIîäˆ'q9)<XaY¹n'ù1àļ“. éGº«ÇwÀ¦`6jÁUㆠÚ™×;î»é§;O`ƒú¾V6EÂp8a|½EÓMˆùt<­îJ)¿¢óq•›½ü‰® ‚ið‰å¸*e ÔDæþþqŠ— þ‰¢Fm*h‰ZY׌G~UO0=„Ažø ™>eí`¿RÖki¢¾úùu&ü‰ÖLâš……ýGºÊËÈX3ðår÷·®éBÞ´‘òßÅþÿõ綪ÎÚ—rƒÓ(Ùà d2{v~žo‘ÓÖ$²2'MÙA×+ïÂòs9éôÛ«¿Ρ̕endstream endobj 243 0 obj 4975 endobj 249 0 obj <> stream xœÕ]I“Ém¾Só#:|z­`×ä¾-[á°Ã–¥¶/¦\š¤l’=ds(ѿ޲ä‚zï5GRÌoŠYY™Ë ùñJMúJáóŸ/ß?ùñ÷ñêÍÃuõæÉÇ'šþòjþãåû«ßÜ­¯ò”ƒ îêöõ“ò¦¾Ò6L^Ù«h줢½º}ÿä¿o¯oÔä£OÉîð· *ªpø™=ÿt}£'\Œ‡?âck}4ñð€¿côAÙÃgzÕ« ¿ù˜—×76ÆIGx%|ižÆÙ˜ªWß\Ãk£Ë‡«¯Êì&× ¸ÇÇa2ÑUÛ{NSMÇWõŽ}ýn^x ‡?]›4i gõma©o¯Mœœ õŠºEİ]öÞLcŸó¼NzúSYuVW[á4{ ó¥8¥áM˜ÚO6UÛâ+ýUyž¬µ‹ç C25îÇL¸¡!Î{“/®ÿûö_žŸàý‚vû ÄŠíO-0¯ŒÖ6?óÀšfòÐãûíçL)ëݲRÌÉý–íò=¼©`ÍF"UVSÐ싸ø›eõ7ÚLÞ]6ѳßC³Ÿ•>_áC!OÚ¹êû|ø`½ô*/HOÆ…p‡FxÏÅf&FBÁúBRhƒï(Žó…xx]¨0…ÍÁØý§É%-.õ®Ì§œ?üÍau¨×ñ‚Éï‹ù9P>~‡ËŽ0f¡‚¯©9 ëÆž–#•\ä‚÷}œmýlÖÀO›AkÑ/íÿ[« d8ùuHìOåX$ :×ÔÇâ—ô‚î{IŸD’îýe$ÝM°Ja’^›Ñ{oç÷œ ïQé:Óþ þÞ(ks¬D‹s÷M™Ì›0°gå  ì;4Üž‘¢Ø3úêK6%IPÑR¼Á‚b‰ÂvøRŽ’Òž=ÛfáÃÿÌÄq5g/­Â×ÍÏûW6 ß?Wðl‡Ë ðò`Cå£?ÌÏÌ*ê’Í&1Í z5‹àAà×ñM´G:¸©ó2Û€²þr2\,ÛøN^‹uS²ºóZ¬’®Uåó±úô—…»òjl¶)7*je§ä¬üy^+ÌÁ¿Ît2[§Õ¾è'¥rã àtøý¸Š©>šEóºHAà—U&m3øvã¾°â:«ôŽ=oM |¦­6§õ´…éÇßÛÚÏÛsuû¯On]Ô­¶ÉyÜþÌaæôüôÓöóó: L\ûö6hýzèu‹ƒ é§Ý‘[n=¸žæ\ç4üѰnðŸÀ«snADH’4&Œ\Y1Þ7²í‚E’š3´ŒrÁ˜Ië•Xo6Ò¿o¸z4ÄO»¤7jÊ:,“¼¸l¦-7XÜÕay7޼z܈†0>0÷C;ÃÙˆàó•>9Ð Åøvfaª?jÚB}Xª2¢ÖåÏ™¾þÀ&çCøóMÓ“ŽÖÑNÈ_ûé’ã²>¯ÇÀT‹1Î.5ÚËz8§º¢íëòÔÀV¥éÊ`®|õ¸ ƒÁ¼XUÇ‚oÄ£>ÙåY_ÝãµWÊþa=!rã›àRö‘9\!sÇ¥2Ñ+w¹ýz1±x à¹´=x?¹˜Äèf•Òg˜üµ†fô)ÌK‹Wm†lކu¼àGœ\k^UçÂu G‡ ì* ö̃ñP‹ß;zq‘T“ÔÎû¼ÊÚy_6S@ p!bªå©s«-8Ê_ÊÃË€®€HDË gÑÓbÛ}ƒõ|(_Ï6ˆV£A˜ŠÛó†v7Ú]ÁÁ]æZË<ê8vN;Ž[ÆïÍŽˆÎ¢— ™äŽ"V€§TÈotnÇÆdãÌÈÐiRjÅbn6gâÅ®EÓ4”@8`6´±†g=øôË3>}ßéEÒy35-óð÷@ª<¹äDsÕUN†Ñˆ÷Ñ{9ù=4ÉOÄg€¢uÊõS\8à$6ˆÙçyˆŽ£ÝŠw‚?Þ‰x˜ƒ €1 •M “jN@¡E?¥úœÔš‰ï´YÔ·}­ßð©ð†7Ê×H+”x4C,½ÊÔÛÞaŸ“ôª5d³u+N·Ôn¨Céë4°YvHÆp‰¤`˜JCÈÀÌÙ^çò^2àRÁÈ$Ö¯Êpöt1·_çgFÆ,g1µ*V.èÏŒAü`r2Lèš&pMý¾b¤õ 5#( ?+ýÔ„‚~JáB Š(_GΧ(%Ü®Ê..9`^¾EÀ‘ j¾è˜íè'PS4a×û+ãïCH~`Ï$„`fÄ#UúG=~bî7Ÿûý D}9ßzNdL°‹¢‚©¸Ïå½:¯‰Cßhêƒ |ÀW 7ß6ž[• r¼•0Gƒ¾&XÄ™£«XQûV%ð˜\í=ÃSP*p OÕ4I+h4KÐùBA0M—cðC&徎 ì`ïEdè k¶È5šyg¬˜I@½‡Bµ¤Më)ÃSK 2x1Mjó½v ^ç´YPH*×Z1xñãúSЊÞÄZ)’1æáÑ!˜u[‹ÐR¸]*ìëó qDÍ`&Ð.{ê“\G/¿Mð@@» oÉZ÷“d£¼¨Gà¢Íð#ÑŠ©1ö¸öÖŸço%y–ûOcwî”Wg!ÛhB Ôá_숚˜'—Ü)ž“€= ƒp¹>d”N˜Žî2[màÈ79‹oELvÀè./`ç´£k1ýX arã ×2WÒÖ.JdM CGS²ÕëEB ’à:0umzrdzYNÖ&ÿ{–ßë)5fðBbI LE™k®EÅKº5gjR2P)vÆf8_®½Cà H ç%ÁsXRÞþ¦Ø-&p”—JQþ½8H¡ÒŸ͆T¡Èè<Ë"gž”òCM:‰[µ›eÏu²±'0Êù E©ð=¡(–¤F¸oIß9sxv`oòš¯¦< ¸ò¶ª¯ànð)iê&P‚àöB…u¯»vÝcšÃnŸ]³ï <î¦GM7zS•rºdÜo öú[2§%¬ŠÐ3Ù¬…ãzW6jœa…mÏéƒÖ‰ÇLZJB\±•V!',#93Þf¾?Zš´ #¹/Î drÉaŠÙïàw›Õ{æS7ö•¦ ¡¶ø~$+ƵÍk¶ZTw‹hÂ`Ï#ÎÔÝœM(ë®ú‰¢uDN‡eºÂ*>ã<†² Ÿ—YvBN*Wjò5ðæPn5Å!#8CLkÕž ÜœµWÛÏ»Íoû²=ec?l?Þ~¾k~Ò #wÏE8M[ †NjÆœu–ª šÓ`’³¿ ŸÚƒ÷}â8=ƒÏ9ÞoD:jaœãÒ2[‡+ªè’38¸[„O}þ[Î5yµ%~e³K nþjwâ0qI_¯±ëNít¥Ö©œfTù³äe(û¦‡v¢«ñ8¡ð‹ï¤‹ÊAoð¨\gLR˜«ƒLK¹ììßð­`@ø\á@HqpZ hjogc³7j–Ã"žÊð ýláŘÒ…X¾]é1î†H›m«¥2QfßÄä€}ô få Übð°ï¬ YMt­5,Ú4CîçíúÚ,óÃ%зN ©$áêc~,=’µïʕ֢³Ãm®TÙ>ˆi,ÌÕn›bÇÏ »óÀç¨ ¤¦§ìÜ8üf1ñC;ÂøØ>\ @Î1yY[BüÔmf§ ÷”Útõm7l*}2Œ…6}À‰Ý²ßÙH‡õØDaΊOoå¡|<è$)’‘œžž·¥ñWmuí£.•çzÔ$ÓWÂP½¨¡ÿy,jÅÐÒ¡ -ËŽ'ªø³Ž‹cf™8ãfÏ‚^|eÉ$Ý}6ºP€‰1w‰¹_»p4;žëâ–õÝø÷ìË–5‹eí\ ¾¬ÅˆwsHiO`·#PêNNB¡¸§Ë9Òøû8£1¾5QKeL-&­i^‚E;"úÑÒAl„j¯€ͺÎy)`Ý))ñ©²Í¸×˜¶º*¯0)¿§r^«xœ±& í;ød!4¬íQ†­°'¦){¹Ãæ® öI‘"?øµ›ëÇê¢2êµ0Zá›"Ã{Ë¡ŸX!¤Þ—~SÁÏ'~ʰ¶úx€^«ÇB¼Ôú uàÔ°8%Pºa±Ö ‹œ…ÅÖûqzKy}dq8 œ_Õ€Ä5lÂ!!çžY¤¢m*WHh|*]v¥5°Ø³R·ëTàÚ®Õ ë»";S-àáØhd{±,GSßÞ0ÓZàxKjxÔ÷Ø@ÔTj@áOqßN}Ù™ƒ®€;gòäÀz Í®ÕHçG¸eÑywÀŠ Ô‚éaçä˜Òn26µº½0@b4§Ùÿ0±ä’Ä£ÖV-N+ö­S®¾F2ä %{Ë]UV¬µ&„ÂÒ0¹ÊnÏÉ/:v° Uæ#Ê kóó´ØÛ*5[#zŘfÛeXcâ䎩ÓÏ-sì%mÌÛT†­ÉÔÊ}**D8º5ßÒ."s~UUÍž#>ÈAøÔhº€:* »¾È³¢:s‹7¢5|¡dlÁéÄv ÞYʧû%·è‘[ãëÂЦÊ%¬aØ-žtp6Q©_®ˆŽfL#¤ø±è¸Eæ³ÃöGIÑZ±Œ_èþÎKµJ(AƒbÓb‡ŒÐã4LdlüÁ7Ý‘£ËèâÆ‚ªñȪš·4 ðÁVÎ)Þ1)TKÆ¡-z]¾RË/žŠ€ ã‚`»'¥|å‘ MhÈSÝÔ…»W¶ë±c,š/£kGë-š‰ßÎQ ÖÅF°âüIçu¸ïÓâ.$õ˜2$+J·€J®+ˆha×W‚‘ljAÀ—ßÂÆ"1ÅNAU\KvAúA柞OÛø(ËAá6}­¥N¤!GÒ×£:_ Ž-¨¶T¹»ë`Û=&¾é9?ë÷*qjå[Iê²³®WgÝåy]…'8.ïZ¿‚šÂÆÏJ.ÝÆ}Á$#„Ž[“ØÔ@p³®™T÷¨E<ÝBÝP6AÄ|*=B6_·ÈsÙmŠC(ë›V Õ¶~±fö‡BÌ玛ʺr^Omœ"RÒbP‡> öÒŸ!DÊ­‰{ÅœM[ô‹Õ“º[i V­Šå·8µq¤õ ák]4YuvÕç~.[9 »¡Š”|1”fnÏÿ›ì?æ­/üºÑ³Y³l~<‡Ç¿Ûx,àƒ.ÆNx…Þ™û¡4¿¶A§B_½h#©”í—&KR+½ 8ÔÖ„3·ÂÞÂKÝŽÕI×äwzAçÎ ?¥oèë«3ƉûuN;ïa"tÄŒ—T6¿SE¨L“ätv³C^u[ª'gÕ~jlëÙí ÚY†n·«›å›„ŽÝ ¥ëôçn‚þ$qxøk<ç ä¼2ùŒƒw™ÍK‡®;s4˜vp'Ÿ–"{,}þÅ” |›…Ïj+ìéúÝ"ZHƒ`¾ík˜977cþ̬ÃR4üx”K@W„Õd®—[îV´;ÿY–Ì‹?y¡tÝ_Î+¬‰ŒŽƒG{ êy™ç_ªþ²gp›nXdÄõ à'ŒèZH38 —¼¡ ÄÉ‚ëzž"­/.ã3a—ã‰Àr ËR¾ñ:\¶í.@ò×ÁC÷û—¸â¿,â\œ¼ü«3f»­éí¶µË´ß1™+àD®ƒk³^¬?GÖêÆ*ƒ‰â¦8é‘®f¼îä[+£´&§ÉFe¯n ¬IÞÎ dâœ×Ÿ8ü··Oþþû1ÊhJendstream endobj 250 0 obj 5208 endobj 254 0 obj <> stream xœí]Y·~_øG ò4x;¼W'N€|AËÒ겥ݕµ’å×§ªÈî.²Éžž•†4jw“ÅbÕW'©Ÿvb;ÿå?/¯Îþðß=¿=»çg?IúŸ»üÇåÕî‹ð‚–»8D§œÙ=xv–¾”;©Ý`…Þy¥áõîÁÕÙwû‹sZcýþ†~FÔ÷þ £Èb%‡¨t€‘<ïþ/+¡uLßm¢·û+ø)‚‹ÑÄýëó 1XoCPûwì÷[üm¬ˆB_i‡Ýþý¹ò0Lˆø^p ·s~!álŒõwÓ+ÿ¦±]°?µ±VÅýc6å#¢P{ ê{‹ y”µû'H‰ƒõ«‚ðô¥S=B~ u>tŸßŒc\³oq>?(cùÐŒP>Ú‹ô¡6ZÖÜAöyZ¯×K¿No+x›sÙ™?¯Æzå÷—‰QQ¨¼ÛA)QÌÃù—­§Q´òhAÑŒEê9 !UŒ‰;nÐJfîÑÓq¹2\xÂæ`cäW,¼4 †>â¼yâ ©kœLó¯KŒÑ~1­ð½ó ‰¡/óÆïïMf¦]Î/œÕðiÜ?˜U‘ï<ß´ÛD+¬"Ì7ŠÄ*ï›âË›R~„tl :\¾<ýŠ-ìCăÂ[3X­ gÙ+60ç1– ó,í¥p*ð g-JèUb aNsQKPL˜~"Ò( rôf~úv3Œ‰ãÀŸ€”ZêŠ6¤^X·ÿ™6KDãZZMÂz=Ësk)P\GY.0]’>æŸæŸ¯§ŸMú͵˜Fã:ÊŸ”F à“ÖX›µæ’©Är#A´U±©•©`¸Ìa.Z¨ÑË÷ ~à{»¢>ŸŸò©ß¦ÑD÷»K4GÖÈØÕ©ž=º,§™Þá60O„Êö4SR0¡7g¢ Țءk]DΘR©®ÓSO9×dqU”0³ ƒ™(Âfl|AŸ§» }u°$_0c´« þrpbRIn)^1)äš‘&„á„ùÏ 12öÑü”͵n˜¦¥i0¬r ñ åB„D)s™~:Æez¸güZG1P³A2RºRó‰ŽÄÒÓ7óÏ£@ìáùLh“/Î2˜@|Q©ƒ|±¡XîC±óZDôÆß!hl¡õ ¿Ó¦åW²(­\k-R‚´¸ ¤î…õÊÙàýU“÷¯§ŸM†‹!ΉüÖyµÿ µËƒ†öÜàƒæ¢ÑÀâêÇQ˜Ã@ÏlÌÏœ²ÊÜÈ?O³Š` àèù/½™l=I#JWØÒgéi0æÓ8ê½ÅÐz%8±Ú¤ÎyÝðŽXÔ÷Ž›-À•‰Á0‡_äF¼ÊhJÊ2ŠÔ;6w`kGX ø«·Y]ŒO_äí̾gr½h(ÀG[Q;‰ðØJÏw8™3åU×àñÙS„¨–Þ?nüw2L:9™édŸhÜ…Žœq)¾M_¥*™Cê)@£_`+ i~ÆBÊ‚rõã«úŒ­ö²="ß‚E€èTá¯ó8–ê™3‰ý‡F^‘óD_?$eÒý6 £7¨ à‘;ë=Py¶ÐÂÚšó}¬Óqº2œcÑWoO.¾žÇ—£ô®’JKjô `ŒÇÉ] qI÷ OM8`¦•îø|½Y^á‡àXV™® ´zŒáJ‘å«ÿãòøz¬a§‰›¦9éoÓg^-h|̉îä02¨Z5kG9î¹¥oÒZB´[Tä:‘oÌLì;˜•d=“Tú7=2qàóò×o8fÖ!Ä‚ØíïÊ œ¦Ûå)¢òû?ŸpŒ}pÛÃ÷޾sá“„ïÀ`!u—¥µUd ÌÇ2¿sÞôvˆ§fxú¤0ž3êW›KD¹¦Y¸¡b§'‹ýJ#6›(#×IHD܃Ë6£pB®(Ä:wR­'g4Ù’~©D@ª’þÍé7ƒRŒ ò±]•åS„!®r ? ÀØÏ–:†©Ì,½íÜáÌÄ;¶Û=‡%±U›4°ƒÍëÀ"'b™íž#t Nø±n2ÍÖmaÂë6˜R?o.œ±ƒ/½[I2}„Pbc籈϶dÅŠø PA Mø·’•OlirŽ^éhNÚ"Ÿ2‚¤0Ë”5²JUžz±Á7¨xÂCXÖúȼŗ5%pGå´$.ô4ÛØp‡Œ©ä¾Ãš„Úÿ˜–@¡êJĉÓ@˜Ï傹+ÁN¤WŠ•ñ\ÄôFBP?e .fAYÏëH` ðeüúDë0¿Ò̹Hðê]?çr{LÎå†fK •Çsž…vLAÕV‹fnåoøMTV_ê$a/A¬,l•nx<kŸ…ûê¨aÓp®F2æóNNoË^¤÷$½¸SJiŒ{I¡Våª#(»±¼ƒtÀˆ§ £²)bè¸0ܹÁõ‰Ž§­‰Ž@<]JÜ‚„”¸¯0N‚Ù«¶½I"ä«Ý¸ÉÃAÐÿðáì7pσ'S– š&/%:ï¥7ö’JÞy/mé7üèò Ë\[;"·î5Àn £K]â6§¥K_2‡M4—".·iŒ,(/ÊËÁºØsl¹ÅO2¤%zÏ4°ˆA®%"pl {R6ä£eA‘QÍXz•ÖUlaONÓ%aFÇlªhWvžÆ¨BÁi€'™u~j…pÍ0jðRŒÓ´)bY¼ª‚Ï%è4È2G÷6=uÜr,`Ü)S¶›§`·RÝDÏ^ØÈÒÆW p¬l\ð^6lœ¶]?Ö?%RËüaeÖÈÇ‘¶QàÊ`:na§DYåm’Ëd»ûûIˆ;&jrÿ_%‡ÊyW§[`AWÓ-Ù ìÔ8þ—²€|AHbÕí~>¦Á¶,°>}iƒñ\XªøÅÏi¼^^c˜çoûSàÅ›K{R »Vµ‘²³Zù7Ib´þÄ™ÒÅHú´ÑÁ—QÐîÙÁø<Éœ©*îYN°ÕÒ j’fìºXó73ëBšACXxöþS2ø¿ŽÂ§_!Û ˆ‘Õ±_²þû1%ë¯Ò {Ų)%²ÇHdõ0ÀøûI$ke6´r\XfÔGï7mùJ¼€ÔGz˜ÿzÂüÌé”N—RJÎìMÈ;ÕßÒËAa3ÛÓÙT¾A‚‡•ŽQ"¾q02“ß–›?ñ –i@N1bÈ[WÕh˜¬±Œcu%àhFÚ .Ð\8ië'XªAWÍCóØÇBI¡Jf‡³´³<s7:.FÄ2K:CA÷Ñ-@Æ(×®—‚KÅZæ=y)46÷㥠m2øÊKIO×ÂÇ´Ù½’!¯Ñ,ãÕÍ>Ê8^Ê:cýÓÖy¥÷²Ú¿–÷­ª¸¬x/á˜ÒK†bé^DMÝp1Æ÷“ù<ú_î.í[=zZ m+\¶÷½Wí…(0 I]§•? ëW®™i˜Ì |¨àCNy³‚þè|ì„è†0U¹¿S!!Óh°[&‰{yŸOF˜lcë\Û¤9 ÒZ%úŽ+L]½Ô¶ß@ÄIFB·Õ™©ïX³o£Ê"|™xJžR§Ïgé%»*ƒ˜– ~p.´JЬ`ðv.)Þžo-)¢.N;ZfÔ§ÍX†Oh‘Œ2ÿ¥cå²2ÿWǸ×Äm£}ÿ`™Jß+'tó~˜ž7Q¹bS|݈ª'€À­T5Ö&‹ð¨‘ñj‰-X@a£++.T»Y­ÇA¬nY™žÙ{Ž˜‹´Xt”+½m+&¯²½£4cªL™ž‚/Jb:hÙõœ¦œ¬•¦1àQò¾i™°»Åã·Ç÷çWûÓÚÁ—Zv¨QýDýÒÊIåN¾Ú\n±˜i=ˆmZ÷R›õMdD‘÷æ“\LQéX1Rf͆ã*•’zÑÊ:" a«àÃѨÝÉ¿.Tôʇ™ÙsIóÕ5ž­‘–%¶ ÀV,=ýE:4{.VÔà0ÖÓ{…øÚïÆnˆº¯uÜÁf—¸4Âø =É¥™{§:'ƒ”žá›;1$éQüè½Z‡ æa:áòúw{Mû˵aµÈ݆¿<°­º‘<]ØÌ"ý–.¬9ü+I‚íÀŸ%ÿ(m—?/½­O·Ïo·$ O°Yû|ÌËBû¾|pöõ™„Ýý|&v9“Ná!›V›­vWðĉÁ…éÉ«³o»gÞËõNgÞÈu,¥3ï¿/VraÀY¦Æª0D€xæë¸à°ÛûCÚÑg¹?| ˜ý`²¦B€Ù7‰ZOçÑM.%ídpÒRc£SC40w¡;`¢+)ýhàtÈ“‘r€}–Ÿ¨˜"÷4œæÉoç8På''•ð`6󦼛 z<¤ªTMÅÏãÕ˜õ©ã‹ãuUYƒÑîÌo…7œ¨°‰ß½ø"@4K~ŸîKXPJˆ¦¥ÖbRâJ±»_Û’Òÿ“£ÊÅHàˆ8¨¥À“Y9ãð'Z`ÔVDZ¢ÖJXÉÓ)“”%ŽÚ´ cÇ|Î2ðLQ-½´:ï°ÄEÎg˜¨{ú±LJt*$¹’M‹°º²¸µj y <ãN:r–ÐóÊ[“2ÙÆˆŸƒ*û1t,dzu­<ã|€N{u¢¶ÎîË~ÄKžŠÄwaîÓÎuàR¢Ù@èʹÞ…=&ÎâþË$õ›çYSïé{ À;lмì³ôÔëæÑÉE9ú*½®e.|ª\(Ž\´;ÏXmxå M"µîx¡Ça:f=5¿0Þq¼`¢Ù6^ÊÊïå¤k÷¤õÁ&¾SÔ`ZÍøuíšLJMÃVÉÔu캭ýÓaÊã{Se¬\àth¤¸ƒKp¯xö¤EÊÙë2Õ}ìEoãi“ST"ŒYÜ`A-d£¯‰z¶s‰@WõÛñºg'»Ó?ô=‹{£*AV&ðüõêüÃÅ8cyIÊݰ\â­wÁrévðF@GÁÜG˜szr@[šF¿ÃMnÀs²Ñ}HÇ‘cÙ¨_žu3Á &t¯é¹`ënð4ÊÆb1R墩G§ÇÉÝàYâóimìž)4•ÓØ»ÛpåÆPMÙÚÖëñbØö ð@ûä}?ª«ÛÔFôrú9W˜d”˜æš¥Î(tgô&©k‡1Ô,bM)uì&Î7óÏgE 1†ía§ÍÐà I7Éäî<šÍU¼Ó.Ñ ÿ°ýÕèútë±áŸÄs’Ò°ðo|rmÍáŒp*g ˜?†ÿ¼œÖw1Cø)Þÿyš; Óá$ÓƒCà­E÷Ô~Ý»¯ªê^ Âc8¦Á©w<°ê{u¿mµ7€gß"íˆ½Ž¢§ùº1”¦Q‡¸†€ããÙ»w—ïó|a²Ñ¡oW)Rûª4x&¨ÍÐM¹¡8öù(76kšg-‚† %¶zLù¦°]ÐE³;) {ǰ]J¼6`zr<*$Âv<#am„Dëî!$¤žŸN¨éçø°òË‘EVéž“ÇÍØêÉ“Vc¢MÅs!É2ÖoÓâb'GÇÌ6zùZ—·ˆDœ’'9¾¸2ˈ¶8ð«ó×nD^QÌ;^ˆLãtÎ,Tºl´B 5ÜŠºÙ/°™ÊW=¿Û/œ@Whp+ë‹Gñ)Ša8°¥·30së²zUÕgN‚Y˜“TM³qü}3Ñâ=¶èëåò‘¯çŒ™VàÅsÓO¯û]YYPz ðc0›_(“ŽY\âgé"õò Gô|šÂìuúλ…Í£Çýs÷ü’µ-w4œñ{941ÿ¶ØˆüiöÈ;ð>ëP®áâ,ŒüZ¤í0eI'¡ÀË“¢ûC, ‡³:ævxƒÖÿÂåêHI¨îMîÞò/cGOÐäkgGòÈ£å[/ßp”Ü­s H¿0|c¶¸pí+G?¤ñ¤¨ÅŽ7ñȹ™ó |!ç¹Ùµ9úÿXÚ2šFûö»ÙÓw«wÊT\¯ 4i<È`æõŠéçäù|}ö_Ù ¦Éendstream endobj 255 0 obj 5089 endobj 259 0 obj <> stream xœí\YÅ–ò8âG\åéN`ŠÚå)ˆ(J‰#”x°=Æ&ñØÛ!þ÷ùNU/§ª«{î2f‰\÷Ô­:uÖï,}¿ÛI¡v’þþÿèöâÃÏÂîÉ« ¹{rñÝ…ÊÜ ÿ{t»ûè ”Ú%‘¼övwýÍEù¦Ú)ã…“f´2˜ÝõíÅ—û›Ë+)\p1êý·ôÙtØß^J!ñPK½LÏ­—Aúýs¶þ}Áš«ï¾Àw­1Á&Zއ"(·7óS1/þúú/: ¯cÚ]ÿõâúw_îÿFÕV™¸ÿþòJ ém¨6}2d ÌOñ´ÿ‡Ÿ™Š!V‰S®oÀÚ‡YWn­Lò¸Ü¿§§´Å¯/>½°BºÝàüŸ.T²‘þå“õ`ÍîOB¢Oã“gŸ¯ÊÇôå“‚Hea­-òy:÷v"®\ª‘²^ùñNŒ[oŠÄŒ5jÿ:KÒõvÿ’=ä:¬‘I’°UIHí«ÇOÙòÇ´$ˆ¨Õ¨ 0®0ÈË¥´Ä´*oâE‚²½Çö~Æ”jiË"Ë7]uÐc¦ÜœÄ€¨ <\ÙØíž•;K§öÿ¹tV85®ÿ>ÝáMKIZÆFé‰>eCï ÙZ†;PúJŒP"L*õ}Ù"¦l›]»áöñ`>œIáí| p¥\zhL€é&ׂ—ì–µ¶Ñ}F›Ä ü<»&ãLuwÆË5 ¨ƒêtøOJ½OéèPŠøiEÚy+ñ<‡O/°÷øä´ðéË" 4çðy;¤ï Ÿ0i}ÿñÓD .­·¬•–hÏ‹Ÿ&:A ¾?i‰Q¶‰ŸtzBz@Á„Ò‡+þéžÁbv9K½Î­½‹‰ÖŸVâ›?-µ°Ÿ°\K PU¹†" |»<ÝŽ‹à55ªÅcj ˆ‚~ ˆ&‚Ï»Eî)Ú•QJØÆË¬„ŒgÌþ-JÖünx åÄ…}wÁ$Ø»®ÇmnËÃÿâ¶ÿ(· Ñ÷.k`rÚ0¯=*ï‹Kx*k£ddL •þïE‰Vþ9“á¤5/9%ˆö4²²ç°>››\Í^êõ]þ!¹91!q?ÀýÃzFD2R¾Î™²è48i+6p%ç7þË£Á´è ‡¾-{Š_I´@:sÓ³ZŸÕ¶Dבv5ørÛä–Çc< Ð73jÌ0zŒ«•wd>èzºR­ˉ·¿žÕ³ù¦6IDOˆ(Gô 0îrñ%ÿ-{H¬MD>e¯p…cœqEÈ7L ¹]qªkD T…ýWûyIÏW(RW?…þ——d˜ð•Dêä$_‘5Ž~qò^VŽ_vÓf¿¯QM{4òc•”=øèm'Eåd&Óþê²H 9ÝZ(‰K;™Ä–/¶pJÎßö’Á7üµa¾äohq”PvÛ;;”þÞ¶ð?j ¤ïuþ¡ºµzx¥\bvTÙ—àÙÝÕžiÕ]Lê4è ½p1|Ç‚á §§Aggvô~Í]¡Q«9¸GèˆMèHUÌ™Ð9PB­6¡3H µÐOá92töà´Ö!ø>Qt¾ç:ÀXCÑ!á»æ`MYÐ÷‚¢)BÆcÜÉ?óš¤WA´>ù&þ×~9#LÜüíV€&›%ìEÉ£kÄK{%Û~çCñ6 r[)´÷Æ®`eç­:,ÛäE@>÷°WîìMp\¹Üú:¾9“éo§1‹òP'ÉZÛäÉ(A1µÉ’Y åóXn„»;>p”!ßSr)h‘àfÑ„Ê7ògà´µéä¬à…«fJHetZ«ˆ5<Þ‚9ÓXY'EXø2.rJœ ù«ÅÎeŽP `¬pÆ\¥ð(!-Z€m@w9¸¬Xrãb ”/8-ÓFI™Ò€Ø-mß‘ÐëÝÛ„Ÿ*  ã“¾3 ±æ”¬‚ÄeE[½/ù.Ï‚™9Õ½¢6 Ȳè$cäÄwPR“öˆ¹C™hJºaEÆ+s\*¬Àõ‹èÚä ZÈšTÁkãzGç1Ýc ÔN$†'ß?êüssAR@®5×k>y(ŒNç1êŒà›ù$ߟî8›ó©éA\)Îh]*HÿÇJ¨ÆEyJ/‚ŠcÈ~´Œw9¡ŠFX==9%£ŠÂ”„ºdTofŠÎ径Õj„Î £3ÏÞA[ßQE}>Nü+ÙÖGüô~³«ŸñmðÃSëlîê—-ÖšG,Ë›C£¶C¾Pq„‡ÄÕÂi·rSšxÚ‡ÕøyS8Ls ¼±?^(á#fóŒÖµšë¿–±|Š‘üu;—6Ìú¿iN¼‡IéžÇcÚ— æRýˆ­Ÿn=ìŽò˜6Ìas N[AÜ-s 1TÃå×ߘK0>Âõ’;Ü_%‘NSʼó™:'™6ÛÈj¢6 5ø^Œ©µ†–À¡ã?ëýr"!£¬geÇàõ0‘ §Ñ›ñïÓoúG–P% 4s@[^-¼,Y€Áöa³;Ý‚3îû2úfÔz?uÛu‘š¼¥M â¼]ŽT“­^«ë,ݘi*l+ÙÁ=[1/)æ§SU´Qø‡ „m“ð„\2·?¡oy-†àå£Mfà· Ê™ÁÄi9 †ëž—å^¹![ÆCŒ=pÐ?ûjŽÈOš´¿ivЙ¼ý7£Ü¬^¸vɱÚèA0õ Ì×Ì$8’СÎA— ‚„¨„™ŸlA†Ô‚„(”Ž´ H*$ß2jçÉzšÅâ·á8ýñ¼x Ú8—ç]`ËÁF§JÁI)Øe´¢r4¿ ¬×C”g\FŽÒ¾¾Ì{DR±`н{gÍ@´øê½ê±±øOfì¼ šCË øf2C˜­›ÝR3HßóÉòïqûdf¶f;åæñè „ó‹á±L*ºÈê²Y#£…Vä8Ü1ƒ¬-/ï^3i|%À‘ÙYk%M×Þ^­ Åó“ã5;çÀ†NÜ HIF3кº ÏÂf:Ê €§À+Ë/ã‘¢D{Îe¼¥ò]}™Ì@9aÉÊeya(|ÃUé•S×½F4×ä^9½Yä^AŒWFª•u\¾·x<,ó &õs/š³õyƤÛéìal$cÁƒl¬-ð¶#´¾`s„cÉ tEhŒ1iÿ:3!¸!Ãì‡ö#”޾eXJÁ¦à ¨°È=ÚÞ¯¼fÄRw3î/F•,$m6;a€#!™vñcE®pBÒeÞ”§ Rmñ«‰Â®RÉ5j‹W—[…y—K[“kúm¡”ÆÅkI­=«òb¶£‹Óýbª\ü€º)Ë¥² <œÏV«ho msœ¾^¦%ʽ¬»+Žã3޽û €›"›Xu8~æM¿—ìùÚš$¬%|•ßIñÔÇô‰ XötSèðíIÏ5Ûsùʹ¤ÚžÊ$¾—+š]ƒ5ßâ¯÷"§Jc),#-ŒUHÂêHèÙ<=9>þbxG;ðØ;;×›«äzCo’„»1ÞJáï÷ðr}[“^êºF" ×ýÎǨz¿´]ûþœj?Mú²9ÀZœK¸gçrg‡ò°:ݤík1¦,âZÍéåTuàÂc×ãG³û /uÅšswÕ¬‡G »+MÍš[…¹‚ XaÁôÇéqO‘‰%õëŽn:x3.‚yŠË{*fLONh:Pߥì t\¾ñj¦èiEÑ’k^‘¬#Š”ä>gÕ–·E\ÑÖEV›yɳÚLUÊž;©ÌfͶêT<–ÃH3…Þå“Èü.Hø‡'°×9<ÌÀJÂ1ìUí½$˾¾l]UÓ`§*çܸãMÕçsæ×©6µ©¹@#%ÍûͬÑÒ Ë¶‡°f¥<#)îÙ–5ÝšõŸÎ÷LœöfÄ!áE<9ƒ8X‡¯i]i ?`/ÕO5Óµ·ó2Õ?jLˆ±ÖÖ×ÄVÄ »ÿêh þ®ú;ß­^‰¨§W6ªÛHtÔ•ïd«›<›ñ…î,\¢&†í×øV~šâÎHyüú ,ua*¿}[OÖ›ÚmæHp/·,JÑ롪;„ºð€ëC<Ù õDüBU«:âbÁôj²SG ù<|tOÔfå¦ù3)÷ |m}ø½p²ëÐø|sh ¿}3p^¦jŒ…s²©gÅ‚ëÖô£Žpf~WˆÉ…”æ÷7º¾}¬”e]^TÊ~®SrYþµ;ð3êüZ2ûR2=©`šÎ/˜¾nS«nû©¡Û ,^æª%Íyþì«–‡]³yåèG‡ÓŠP÷P;´ƒ=ÒfzKÄæaù‡0?9aR-¥ÜVÔq’j1©vZéIÓ[§ÍL©Ö>@6gPŠ€UuMé Å'MÊ4™œ$Å\LZJñÀê!Ž œ7Á[Ñ;ƒ7ÁÓPQÍ›áp¥òÏ¥MBb"­F±è#RwÝ%ÚHDž”ÑFÂW¹tÑØòúÅËÓ8š5sœ5ŽfÍÜ9¬q4kfkÞðšþÒ‹l9á+w{Rq³\!®0ü ôKšÚœs…d©»ûŽÄ;þ€Äñ•M¬L£#ëvÍ<2g©òÏýšµTú?ǯaa\ã×ø[\ÖK›®;8¨i'0ÐïýÅsBÄðÛµ1!R»Ó%ywÕësw"Ö Ûˆ:Rn|,œÇ`¾~Ñ  5ûWÐð‚ôs%¹":@4;£>5}œDòéÅÿÀüo;endstream endobj 260 0 obj 4371 endobj 264 0 obj <> stream xœÝ=Ë’7r÷Ùýˆ>6êZ¼áÛZÞ ;a¯ÅðE«ƒÄyÈaGÉ•è¯wf¨J €šjvVáÐ¥Hä;Ù?Ä$ÿËÿ¾y¼ùÃúÃÃûqx¸ùñFÒùŸ7‡?¾†*âræðúþ&})RºÉwðJOÂëÃëÇ›¯_¾:‰ÉEmE<Þ½“ÖJXy|¯M´Bêã|Ö"ÆèŽ?ѳ Aÿ}´Jøã4KpÒúã|–^Z«1O0»±Z[s|—†›¨Õ7¯ÿ–²ž¥W‡“RÀux} €¾†Ï•Ð:úã÷ø¹õ60Ÿt°“ ˆüà”“p6Æ´®6ÑÛã=jo"ðíòö|¯DLW€99éŸN'u0°éGzŒ–þ€FI­‹õ[zìíXÁ³±LLhLyåñ$`‰É+™0k#B¯q`&íÝó;ÌHÒFKœ¿³2ðwFÓ*üË `>¤ÃÌïòiD_{GÏNxáeyˆÃ1t$•éÕÉF;9«ÿB‹Za4~˜vòñ´$yj"7ùG¶#¾üû¹S@³L.U¬HcFx¬§é` 3éC¾JÆ›VÞu>]y³FŽG:E‰Œx8I`ke¢† 8íü¤MØ$¢Œâ„éïo¯”ŸŒ4¦:š:LÊùëÎüé0¹÷“Ð óåÓ`W-Ȇ޲µù^Þ±÷H¨ÎMZúã[6„¡Í}›·«Íñ;6Ç·Œ·lSßV0ïä]šNGFßæ£s¦Ù@9Œg±p¢µªfúJ2ž`Bk#€‡$¥pÍ0‹·×±®Ä‘ÀE„‚D¯ö:` ÇW Àgv @ïôÌ™ ïD ‰ð ˜5åóUZ;œÕž4§‹i‚kÍ+üÛÍëØÔAÑO æ`9Â(ÕÏ´Åè ¢™þ §ùû¾ŠjDŽÊ%ÄŽí¤,ç¿F¸è'¹P3MÓaײcœ2(kÓ§H¬ºâ<>„ü6R†flòua¥cÝèzÚe;§áŠÅF¤ :þ¢®©ñèpåçÕq%>s Þä@ÛoÛ–R@Á ÂaŠAgÔŠh\!ÔÕ&޲6=UAŸfŒZX63aÚCbBãÓVî« §·»8IÕâxĘ.-ôD¶ñ0 $Ì€y›S7$ìNª4(á½ÜI•8Œ‹Ž¬kíÈ"ë`An{¼Ë›>€Üœ‹1Ä–q%^MpÌÂ3ö¾Ù”¤·¡' qsï3‡5 ]8äC:LÀJ‡mI¹üÀtæ|ÃõËCDÖŒ0¾¦þQ¿qrñvÛP(ŠÀ¿ÑnÓ:S\)•5¿Q®¢¡LY°0KàÑ‚ÔX8'19ƒvŸÞ s=™:S [¦Vo@•`Ã׿7Ÿ„OŽÖèiÁ¾hß:?%¨UØ/ùBV©²€ßrE†´Âu%äÈ$pªÙ.Q¼—“¦P|Þ¸4ËÆ»f|‘Íiã® |Ç-«ÙÜ*tFþV¢î Ëе¸G1“ðjìt'j¤E¿ÑÌd,¥;%'!ãI,)¯&çÑ0G|‚hƲà½jYÙÑœó†ùw w|È.bQV·JwÛúr é)¯aˆø$oÈ.4 ›ùg|•‘IÏÑÇÇ|\#y—úž¶›\h „[oºˆ¸yà  06°Jªk¢pP + …Ï4¤·ÖîJœÛ³½m$c®§ r0³Ck_åØ$o¨ff?0út~V Ä8s ƒ5Ì:íiß4íâgð¿·së¨ZþÍÞëÀÉN¨ë[„ÏN7ØÖ“`ca³åGÉÉéÚ‚YsC2VàmšÅË+'ƒpÄ{#.ݹARÀÎ3Óg(ó W¦ÚåÈ€áï‰ü…¶aŠe–¥g˜jc€Ý_Ò¤"Ymºõù³ S­Jâ*ôÄU9Z&®bçZ€5Ä/ÂÊU1®»¤OôJWâ?ÜhÁ{ÿ>Fê¶ ½ºÄ#³‹Ë.Ä '®o½$å[©Œ5:'çt$Û|ÔhY”©à%és5Yö AœˆÙNç æhfî, uŸÞjgÏðuĵµ¿‹néø|“ì„xH T?v"Ùôév”‹6ˆÔêEèa¼’@— al3B8WéÖœ-P‹^)<ªhw8Íó-€aæú#“G=o(kÈÝf„8ÆZ ×ÃІÍ{1ÄËFúk¸ÐŒãØÃÛDÙ&÷ª¶Âö[ã­˜éɨ‰+s£óÛ–ìR­BIÒç¶K&=w%H‰Ç“Ø#o¤¶i.¨HèÅÕ1¸Œ‚Á˜bܵ„):XTmf2p„”¶Ã<ñ˜†˜ZÛAJR‰f‹ÔSP®‡ÌÖ(€h¹A Ù句Ÿ·²ÅÊÖlÄýa Xò4B _³.õ#Ì›‘'ŶFî8©£òœšAˆZôî*ƒ±œþùè¿]=0Qf³A®a‹4À(ÔU:Z€k©Æ¶Â:µI<ü@šÚVX(ÌfåÌ,°ç·kh·r'·´X&¾ý"q¥”/àF|~J±^^û@G¹k_9+®ÌHb|\çã‘÷Ù¯¥íºaÊQô}{”OSQ¼¼(^[¼˜YÂÌypßI£AÖ»)z,Ž6ààxÖ¸_¬~ú蟊(¤ìÖÝcÄŠp¨¾¡è"àÄÇ,°Vut­;­%x–f§êÉÈóRTâ¶ìÌ1.Û¥bKÏËͤR‚³7 *Ñy‘çFQµÐ6µãÔÎ^ÁLÂÅ´­Ý\$HÛXëå0m§Ç ŒgKšÂrZΊç‹\µ\¶¦«žÿÂÄæó"ÕÆ¦ê ·æœŠÐprO¬¿8’Šâ¬=ô½Ó*‰02{oõLùNî9™›î¬£ëü?šod)Ëø›ó{Âáwû=ŽâYœ&rÎi^ó>mÞnòJ‰ùVüZ²Îëº"…Žjã û;nå‹`Œa“ŒÓڮȒ­ÌYqÙWw2”m†l`%là«È+XIT?·>_Ò4ïÒB6γ@~󖙊ÈîBÓ^¿¨òÉ9ˆ«:;Â~“Ž¥,˜ÙR×ñ¢±÷±Tμ¸¥MjÀr`ÀÉì—Ãÿ¹9;öóPñ°V9î-bÇ3Œ½äJ¯e³Ó]7`޲f@kÒï¤0`.þFe.¬x­-½Á’'¿ºÖ…¯MSŒ:*È$ %ÝCNL{×Av‘´¤U5Z1 ߎHøS*¸Pö‚ ]{‡ðN¾„âX!¯š¼@ yDz`žÄ™ø„ƒºÑ|?%Z‰ºf‘§ôZ›šÐ[äúÝHÑy¤ *E³ÃHZóMÚÕ>7½tцV°ÑµB]GüòAxe[ìãC¼8ðS~J#B!ãÔÍÚñ4< =ЪéÝüum ÕMPp _¢.od_¢f zbŽú]«šè¨L=Ḯ©d¢ñ²¿˜‹ÕpŽ6ñþ”/ƒ¯%óãrÄäIܧ×RÄ\ Bå%ÑÜ9+0×D'æe¡Âôf ãèaÉHÆQ ¯½Ü óI1J%mæ­«£Àýt q7«žq½Q!öÀÑóã2ŸwÁ°g¥E»äy°CñIJŽcÍ;.ªmÝ¢†ýˆà†â÷³”ë9L€3e¬ÏH¾©T²FƒÏMË7ó…½ml:ñ­œ+m°œu;ZC°­Ç€ä=Þq™® À*ÛÊ& 0°íß]¢7a*cm>tÑ\퇡RÚY˜Œ²½¥Z̸ÅZÇ‚Ÿ y]C.ÑAó52;›J™”¢ò"×AMK…aÑÒb!ÔåƒÜGK"t/×ËlkøŒä‡€…K×v7üL«ZW’P1Ÿ[–½O.bJeú^kìÍc”*6Zˤ·ï—ÇíÖ2Xô$|¿ù°,E¡;µ˜Á+Ïx©fCÌà•Z³AÏ\.î^ù¦ëÂmv"]Ö¶=âXZþ,½\hAþÌ›cl]ØÓ~¨\®w_¯Üˆ¾~åWC@-SÇ?â[e¼ìS^¾É3ò¤|œû€VßÉmÝ·æC>¤£ÔQ2‘„öÀ¡±6;·‡Å©Ëƒ€ç©§óÊ“ìà‰±5q½'Hä8øõ;†¸A0`]À¥RÙ–Ö HD—\qFÖÍ0ØNq{ªMSœOŽn’Ì#ÆæG[\°ŠÐ‘Ø•@RaTæÕÄ»p4²óZyé,à´ê]¯{Ê{‘½b‚• X³ÅòÜ íWw+CY”_­÷‹†g|€ùSl"4¸{qëR‘èØÅ½­ZBžÝ•³ä‚lûj-´qcEùöl$zÄ¿¿dÀEm/Ö÷Å‘½¬ö|tS`„š´mK*®Ì å;ÖlÄÂi†ñ„2‡ð£ØðºïŒànÛ=WK3tWë¶QËö G{qzi˜Ôº#«êÆÛÌûp$ŸÒªiÌÀ¦Ôð¨èS4ÓÞ ¦·ý„gÏ@ÄáR½æŸÓl³±Wk­r’Ò.ÈM+åWn+0- ˜ κÝäii߈Aƒ˜û7þ;~•Ê7J»Hìÿ˜ßÕ.’ºKæÆ” ÜC׌æk«×>-Æò÷›Æ²çNéÙ}ú‡W¹¢YÃü0 ЩRŠâžHYr»V<ÃØÿ›GËD›¦6¸Ÿ¸`ëO+uBB€É%qSÙWB}§‚Í:7 V‡ñ_çÆ$³>ÝŽÍñ  ãÊ0Òµ?Ì ì,)L¼®9ï‡ñMsWä9Ž7ÓÀtX³¦û…'Æ×ºÿZ.¯ÅüØ£*#Ðâë´`}Zü䟖··ócrÔ!)ìœCšô+&o>%”¡^àbˆI'Þû–I§J˜±vºÛR‹5¼={k ÷,‹´¯>I£m¨FƒBVMZdLQ@XF㳮πIQ8B¶x€J+ äÿó뛿܀곇ŸoÄáÏ728 bô @»OÒáMWtyóöæ«a3ãй™1Þ×M3൅Ô̘PÚ×a²Í"x) =7¼ÏÁX-¥RrZI0×9 JbBæ8a¬Ê¬áüý‚RÒÎÔμԦßÙ>mü¼ã|bÛ¶VU¨ŒYÐä46|äxr˜]r— ʹÉ_#ŠžNTºœÞÌo¬¥ÞÔðR YØ ë8?T8¦½h¡pÛ‹XízÉ¡cm²¶×9tã~#‡®- Ê{Ž(‹%þDY@” 5¢ì<½²ØÖL¨îÁÌ™ÊáñÒO"^—“O3\vp€)åæ(Ã7ÌHù†)Þo¶TJ0˜—~¼ü@ùÁñÍt/$õG"§5Ä=¨¨È¡£˜¤¯ËÑ93>4ôÿƒ6ñ"•õô/6Ï›ÝâËõn”j>´«4¥?ÁN±õAðeè_úžò0Äšó/4ãwÎÕÁ‡AÈfmÚ–P…pzzx£™ƒÍ&á›ü%ER¬×Ïc©ilO;ˆUÜrÝ"œGà¶"¬u?zð;€\TîGo|ª© Ý_Å7Ú¢áðèyØ›®¥"ÔDxéÒ©ä¹›òS g|PY÷½]eѶRd”2VÃTXÿ2Ð(ÜÀŽïSÊƦPâ)/¹/™¼§¥Î{G£Î¦ÿà¨ÆaõìˆÀΙûŠHïÓ[¼Îwóab]åÏg¾Ò^bÒ '<âI¹Q ˆ‡C:B¥Aïfÿu3Õ rÛyÎC«»püq…Šظ*¼¤rT¬ŸuàXÕõÌ}Và’Ÿ‹e^¸MýH0Í1Šá®kç˜ÇŽ€ÃFÜç€Ã¾Fçâ*Øqöa”îÚѹÿ.ÍŽ7#·ÊÓ%:–;':ôí8Êp‚àTÃø¯ú}9·¯3v.'¢°fNi{ü"]@dB‡… Ku§WŽˆu¤¼Tkj_ЕÍ@=24•zOÌ&ž¿m³³NŽ¢Ìà òºPÆUu+—9MÓWDÊ»¹xQL˜a ¹›—ɽu±8Úvo†´¿†Ãn»Œoh¼[Öb ^£€o)vÞë8ŰÜ7;ÍAz>ucÂãfL]¯ù"f)ífÜ¢­©èÀN°­m1ïgTûÝà=Mé©_Di‹%!ó À¡ÀJÄå¨z£sSlÍ=àé¬-Öl™.£ù,Ÿ–÷Yý&¨wÝ '…‰ÑÍšRû¥J;jøšÜ7Îí£=ß ëY[AÍVåûä9©;Ê?ÆmléæÁ*ãûm…ËGr ì*åÙjd'Mr—ñjìFý³¿{w›@—µaïç^ú`t6e¾›™öá––‡µCëˆn·†ôs;D7`ú~ÍL¹0b I¨)C Ò¶íxÄfàX'¢ýäDN›^5?ÎAá¿Üü÷g5endstream endobj 265 0 obj 5682 endobj 269 0 obj <> stream xœÍ]KsÉq¾#öGà8pxZõ~èf…dG8aI„¤Ã®K$&.AîŠúõʬêêÎzdOÚŽ=ì°Y]••ïüªøÓ¥˜ä¥Àÿæÿ¿¹»øÕýå»Ç qùîâ§ ™þòrþß›»Ëß\Ã)/ãræòúíE~S^Jí&+ô¥Wz^_^ß]|x}u“õ6uøB~¾:jç'¥Ýá >6Nxáð·ÖÖ+øñ k½=<âcï­ºü6Ú‡ÃßÈp:M~U{qFüT‡ïÉ`³WG9é?üǺIKg¸Ïdk£åá&0N:\PWíˆ@y“>¾%ä%ÆZëð·ù±p0#B§yOxÈMI(ø„‹ÎƘ9'¡lÅ ™'‡?™Ã¿®ë' yDPÖRÝÁd(¡Ê> {BÙEŸß]©/ÈJ îp¾0™èµÍÊò'ß]ýõú?/à×ä¥A»¾±"ë¢\¸ÍäiY6Pª‹Piå̶<~XÎÓ!þF௪¥?Î+°ž~’LHèÃ…ËJŽRMÖ8™D%™Nÿ‘p…*]5OŸß_)?i +ˆ(ÎBNF*4°$XÃäc8ü‚›&AÕ«×(!ÈOWGPØ)¸xøo|@”µ¥›uC„ƒÎH†PNܓտCªüä¢aÌ)ʼê'¤¬¤¬¬30s›ÿö¨’Yj€fª¦–‡üØ ÉŠøwäù}=_µ¶2,;“žx=c=iûžó»ù#¾^Y^, xLf!2Î Q1úÍyØpO?”ub¦:鄵³N¼Nòk”;|9EÁ’üÞ÷»l¾)ukiñi»fNÆéó7Œ¼Q±}Ó‚æUÛÉ3ó¨ÝNòÞ²³ÔðÚ±¼Z>Õ–ÓzŠ2TËéÉ.£‡ŸÿL<¿z Q“ÕSXXDäl@¦Û©ê½ àSꆧ• + ñˆ‘áòú¿.®ÿåûÿ_9E[eB¯èì–—M~Ó¸V7Ê{½± ä¿èx4!±Ü Œ‹X~Ò•pRyBú’nø_u/f3Q¸|o?'õ„ȉÛEÎ@ü}¥Š®™ùHäolœ™0kCá“Lù³‘L¬Ë!e1±Y>tÉ’èbàÏ“åeŒs³÷8yTþ¼€fµð1Ø™æÚÀÎïGŠD˜r¢ {ЋÀ+N½C*º "yNø™€î ñ’ÔPëü5O¢å¬Ù`’d5 ÖD.(ës„\E;E_^ÈO[BTS>Õ©.°ƒè<îÀwøÝMa'…LÍÊ &µÆ'*‰}Q(½HCz\$ʫћ„I%øH[¦õ5™ä ùMuŠj ùè¬y u@>o¼÷£Ga =î»õ’5âÔŸ÷ûŽs÷ûž>ó°fÄõ¾ã•sU9Ž+îæÁ¡‹].“Pâ6.ü qqj¸Q¿ú£ UÝ ºŒ±ˆ^Ún“[—ù÷-|G©¢ó„M!{£Ë|ã,†®üý¼ë°Zñ n{×qíœCßvôNµ¯20#™?È‹Œû@-7ãâ=ÞæÕxeXU,’a+4N¨Ï#s$å“ÂC£ºÈÿ)å4!GÎMÑTÞh«jsçÛ ==žUAj òì.¿™Œ™‹L~¤eôÕÕn׸pæSÎä€Ë3¸þpE¦dh°Þ’¡]ÃlJ€øA½ëpãzíÅ Ó¾¬Ç=ln±„ðH«PÞ{ËâÎܨIØÊr5²‡¤äJ:Á–Õ>æ)Ôp³—,Ô ð†]µ¨´]`ž›æY”~J- gTr³]hÜS®†Ó†7}^EÖªÔEå…¾¯WA¡­µ©| y’^fIÌÞûžh¬a EÑ…µ ú¬1å''ˆF©Z;ÇIëq}†“¢M2ýM8qí[·et‚E™¢ÞtÆØ èÚ+¤Æ¿µj…4Í¢%t~ÎoFQ+ë¸ê^EÅŒØÕeóué­k*>H£Òm¹ŸŠaSsÈ-ÃÖDÕùîð ‚ôTÄ 93ô)ï®Iz›?è¢ÜCÓ¦Ú&1,Uæ0)«Ï«2§ÓqP-{f•ùk#÷…ºÚùý2v.u˜‚šµ‰?XCõR¶%ºRMÞÙÀ:«vTËæmð,°X½¡êJkÂÔ¥P5VE ¶tq°I,6ÒDÆÁ&g&Ô¤å0ô_̼€U#û©É^©v¾¯9†Ÿ±²÷OðX‰'x|ö€ïåä™Ýé’Î×™Ã~t;q-/ÓaF‚ÀÉM[ùh+;G>Ó¤eŒÝ¢RH¥“®Ò2ï a#¾E !^ùÍz-þ@ª=8ƒ Uí‘Öc¨~¥æúÅ´G”z“ kjQÉ^Õ3Aµªsº9.¼>hiEØÚ¬Â¡‘ç7 K¾p³¡$yXŸ~ZÞl'"ñ2qŸ;Å”'¨…àšYŽÐ cÖq~”¨áÉ‚È]f£×®ñ@V!ݦ&ÔÌUu€2èVoó{í\0 Æi@¨—f†@8 /^Ác­¤€:Å^QbüDŸòêÏëãPm©3—~B¥O«©TÚŽþ =„ï˜áb¡3ñ9+œêL&ÔK-½´z/­s„˜ û<ÜI; )¼èCæ$åÛÕ¿b$ž&jÍÖjl(½é±%¡‡‘üZ¼NEï](‚tÛ…m@‡5|È•ƒªz 6D«®¢—këØäï$v/­om¸àƒõÀŒ`˜:܇L ’µFÔÔp–l]”¼‘š“m5owôb.ÇlÀÒ1êë³Ñ!.?1Ûº—I™JøNdÚj±?«_³§,Ìl= UÏ@H²{¤-„B2¿ô»ë‹?\@âm/¹—ÿq!½ÅE]j‰|s—wð$ÈI¯O>\¼bïŸh¨.÷Oø€ œ!+ùþ‰»Äa«C’ãR¥t$ÏçS$ч÷È,!Œ×s1‘,«QÒ‚vÒ%@’‹áû3–3àÔKøn%#É»Ã>æmEP«UG–)ÛVZ ø jµ@¼åŽ“ 1ÂCÂãc;# 22›òZ‚d\# ÒÖª²[cVž« ¦üDžk,_¯OžÀs-Q;p`màÄ&ø±¡ôœ>:!6.`Š.ÁK?g ^¢ ¯—𱑼k\ô 0 Cƒ’;Os +‡Me ÍØ–QÁŸLlô¹ œ,ª3(Ó(rNÍRQºÅýMWh!ËH?˜4´¢ l6RîùöÐ.Í6ë4uéxæ¬ý‰=Gb¤",ïßÖª=þi°©…ƒ”#˜}³•`°•ú Nw³g‘(ËgÚ7y„†ì™‹ºçÃW’šÇ¼,¼UÒØXEwt³94y"Ï$$fU^J4û¬¶“r]gn‰éêr]®ç¡N-õ¼ŽdSùæ§Ÿ¸¤ )ϛѦi¾l&°îÆ<5ØÎG]4bàG޹݌oµáúpMñ®Ó’0qήü›7æ&·"|WïA(¾?\¸Ž…©6аe¯ýà`•ÂY¬‰O2E)¹l‘.Lªug@ôgà"Òá[/”ή8›Ò€4 ,=à·¦gÕSGɪ¶=“¤¥Á«R=&Jß ïüÚfïÉ_Z$˜g¯Csp2¯·O`á{Š+w>ó–D$ä3¯ÐX?æáÁ¹}wHàhÇ"ñËâë ¨¯°¾+d´E™®­haUȽ«N_1+•é@ÆaÆ9Ó5.²öµ¶Fòl—£bƒbr1º‰U¦=SšZøÝ]Må)åquÆe"j¿_ä´6©-*ƒ"V8…VÒÇï/Æ^^·&sXÀ.Þ¸AÓ­ÞqSßM&ÊC¼CŒw8#O…‘vlB‹å;•ùÊ3Û.æelêxbƒÒÏ´â™TóbVò> $G͹“(ãóÚÄ7€Ì1IÀ7–ÆçÒÌà*F4eâ:~²¬jHùuìŽ7X•tíGü)§õÙ<ʼn}ìªñoÒdaïé%E$7|­÷t6!´Æ Gzeèꃅ½Ôìõý¼ª°y¨y‡÷ì0ÁV‡¯Ô ¼1â[^×0¿(E fÀFöòÍr ³åAôÌ…ÆãŽÄc¦[FÛFM<‘¿WÛ-†:XsŽ 3Wxvnÿü{¶ðµdæ®YÒÆÙÚ–ËFx“ëFY· œJµq.~ž'Œq[tœLhÒ=0bnIÜuz.K5նǼ ©ûÞ%¶/‡Å!~Sr>(‘†ŸC-uÇsOaï‹Lô ‹7ÉQà ©\ÊÝÇBjn pRˆ¿ŸDuS}ÒÒ1µñȰÍñrE²üwîY¤QïלôÌ®IÅ{¸+ܶf]Ühf‡@³t›ˆÁ’­<ï°³—ÓøŽ•Eˆ¼ÂÓ‡ÜA_:”!"7˜Ïy“ØFn|ê n¥1ž9ÿ,Lím: G¾í D ?Ðî;É ¾èsî4©\FºùyLCÜ.qitjdë:Ìæ¼Ü­ÍSeÛe}´¨:󖤹”$º´Ý½u(È!jÕ6¨5gQQ^¦ó¹pdÔŒq‚xdá_w:ýü²Òææ?Û+64ùmSò|Ãå®ÂÙGFH) 0ßónOÜ k±Pü¼›Pq3$o>ŸY+wª :Öp"õáT5nfŠ”dó¸í3Œø™ööQ©ð²á¶b0›9ZWÛ˜ì-ÌÈ÷%wI¢ˆˆŸ~q"<Æy†É©] Ó|èÈw#®!4‰ üà0SçF-¹‚ÁîGmÓ¥]8Ï ž°=7nìÚ„'¬§š*D§+‹¤ÓͧǥÇßà¶Î@-Æ™tƦcÃÝ//AÞÑ!Ø<Ù®ûœL*å‚1DZ+%kŽk±$)FJ! ÇuÝ*oú÷ ± fÙL¬Œ —ŽHññ¼J×òÅgAü•2éö¦© 3›ø­•=ãºúìÆÍú¸Â º²2.Ÿ\}ƒFB;ލ¬†½;;¸ œ{§9› È3¢ô‰ÃÓ U¨ü¯â¨ xJJȇ­%à©òäéà) IT„ +AHf5ÝÉ qxÕRF“àÓ•¶hÐ×SÚ"&9ò9´Ep{iBÛSPQÏ v—ÍžŠBìË™ (àÜ7Ea!x©\AD¹ùO„C¯O`‚+A Ö^¦ ¤kA¨qN¶].DYð$þÉ4Á[’žo2a¼)7Xvmß±¯pTPCcØÓ™~ˆ 6£´±£Åç4*Ü9ÈýÀtnܤ™›y¾rHLeq}œÝŽˆû¶¹ô¾ÛøªoSC3b> stream xœí\K·Îyá1ÇÙÀËðý¸&‚Ç‹\ll­µ¬õÊzYrþ|ªŠìî"›ì™ÙYËpè Q‹M‹õøªXÕ?î¤P;‰ÊßOî.þ𯰻}}!w·?^(úÏ]ùëÉÝî×0@©]Ékow×O/ò›j§\V‡]ÐFÈ`v×w_î_\^IaŒ :쟳ß?ào\ŒzÿÝå•Fèhöoð±u2I³Ɔ|s 6áíÍþ ö2H¿¿_Füp©üö®šŽMQ‰*ĉcÚ¿Æ©­p2 ™hM¾,cMÜ¿eî.u ÞúFFᢋøÒLç+œ@‹K3’ŸæiUP=ŽqB'*º¨ËDXHUDßçuLÀ¹a+½®–|ÁæækÞã¬Uzÿ ÖÒ˜öŸâf‚ðj|DÍ&•Þ8›t$ÇO  p)Í|l¦þúúo°Aá½ùº¾iÊ3(ŠX¡¼–K!-5QÎGÙý‡Ì"Ü´S£ƒŸ¸K¿ w#üsÚ‰ƒ½ w¥Áš‘ž«‰ +¥…³^eºê“„½ ¥:dÑ€—Œgü÷H;nqB/@»ªáyF¯+ale„ãéY…œMüLŸ ‚|sÎ*Kk šm Ìì#È_…$.¿È“O]«ñ|Öß•-jÅGü9ilË1„ŽOòŽ–Ö §&  ,6NÎ4çCÙ?ü¼]¤š `²þ’‰ï³Å¢e‘-+È:WD6ÓaBè)® ³Ô0ÿdo’û÷(KNhã†{3° ïós™ÀT‰Ë+£ð@ûõa‘|µ&=š(XåÅ6V!….•ZoI¢”;giG|«”Ò1 ¯½&‰÷o™Säfì‡,² ÌM"û-“=n^‹=ðphŤ¤ý÷­l–©²lÚg<ÞH9Ú¥µN$°FíaÀcT´-žÀ¨|ß²ÖNjæY$tùýÖ•ãSŸÔöÂp\àš†;äZ<øaÀ,^Dë¦# !µ/ÏG@§>ýú¾0̬¥Ow™ÿþF¿›±Ù/Œ4ùýDušU#Ö#^Ì àjÎ{Ž¡fµq”“øÎ≓զó~…cÀ^âx€Î¾BÆZ„˜ÔDËïpö8̸<ºÆÑA {šF+4ÿ¸¬©Oø°Ì³qx¦p™dáe}²pÑ{®•-Ú‹õ 0[3Ý`»E¶âÊÖOZ¼![8‡s#«[o›#Ó8@Bª½[Y$dB4ˆ„ËÙV¢_Š˜Ø¾)œÑ;=}š×ЫP…t<«–³0|ÎÖ¬Îù]sÎ.nX.µó˜XŸ x¯(ô °QÔ´iD×*àG‹M¿x[ŠÀao)Îg1ŒÇ8Ý ^œÍªÚ 2‡Ùd¶¬UÂ4`™»Ç,L*©kf‡2³LH3³ø‘Â,ÑeV “Ћװ>ñé!¼†­¤Æû“N(„¸ULl=Ò• -gìã@l¤MÅ*2{:=ÝrŸù°ËýÈÊ¿óTÖÚ/-÷#N`x•°äÈG+€žÊmE^ëÄ2ßE97<Š‚ø„ŒüdÚÿ~qý{¤dRú®´~f؆+åÀóŒóý3­Ìz!,‹J8‡P{p—Å–ÀW¾üÚn{]­<³†À"Ç%§‘ì`§+§³ÐÙ˜´.Ÿ^åURŠ•j™•‰ .½Y§A2*Ï2maÌèÿªƒV¶7BòZKrØçmg‘º-‹×¢÷ï?¶¥‹†|X8RÂÁ¼t­‹§¦žÉÓËá…Pn§99Ê7pØ9ÊÆì )iÁâ™é({:žĽ6,LžÜ9dùù Ü†Ó»ÙÆu‹Ÿ&;„!!â‹§š ûÍ)væºo¹mÝ"øh¥F`:U\ò1Ô¢RDi‡Ë9B¦÷Cr˜î3ýÇjy¼üì 8=P‚Zæ1aX·¹„òt‘‹f Û®£H ÌIøà‰,25Z›™Sß/”¿dIl(î l´è¢ :i `•Р.}Ç®#Ê18E¨ ùm<@´u@ÄÒ)îÙrœ]œ)¥ñ1ªÊrgIT« ÜT!SÆ0ßZ\.xÔ>“{~sý`,`è’·“}s©ºú;"û6㫞?w|…žÓgðúºõïCOqfeÐYD‡ÙâíkgbÝŽ†x¦¾Mal€VðùÂëaTýxqŠ“0œÒ r¥5!¡+Ü$æØq¢ÞÍåUÍâ¸óàë Òûî‰f>Á*J©ÞÕ«Èv¼Ÿ´4b¡¦Ú×7ŽH‹·Õ=$cÔÉ!ìKôP8k!¦4s ÇVi‰Ñ(Øm!éH&øæF÷€£´@#[°mÌÞ,ÖÁ!1N%jÚŸ\¢f_«5Ì©øŠžn´t•c2ðSiÿ3›x Gu6ÁkÌq›w 8‡®ÎÈç½ÊáÍ@÷j“ŸC}E` gò©üj³T9&RY:šª>äi)ùP`óg貕õÄ’®Òž,“2ºrïkL“š˜Ô!'X Iu‚åˆpz`#yù(E8ô@•ùÀÛA‹Þ¢¦P“ئc`prz5EDYøÈö Œ2è\%QëD–ï•à0ws°6¬6Ú,¾Ë»9dßÂ1)˜#¸ÕÜ9-bS>Q1%ZôÞ³¡mn5-DœÒÇ*CÝ¡ wS8@ruBÿÍòx2qè · lçÚª½ ìk|‰ßš*m~š*õÍ‚¾F7ô}ÐÂy” /•|ê»Êh˜±½3êÖü²œ{x7ÃÊÛÙ[ $\ ÆàDªD|4K„U¸.ÕõðoÊf´Ý(?CŽØÆ±ß“áGèD¬±BiJ½àš¼«þP ŒKµv]¡Í±Ã2DY[ËU¢xDÜl‹W®³­RlÛ\@.2r Ø³SXÕÿ•ÿ®÷8ÄÅ´E’jÿ {<¨y“GGj›¡Û!¹/“)Ó¹Öú%Aà8¡”:ðžÂüjèØ×<¤®àÂíacÕf_Ôlò­·ûIýz0Äz6dèêš*’>ºÄqLú"…"bT'Ðbq1?‰É5s\ùÄ}²„L"60ÛŒ¤,ï… K¸<&Á,j” .7—ÇÀò ^•w±]¤T°¶§ÓcJ£X1ÛšSxšb}ÑÊ_Ì$c‘Nß]¶•Ö ¢r{Tù 7•Óþ¶k‰uq÷ºØ9k×ÀÿÝäY´UÕ,\ªryŠñ¦-›T˜š8†¾Ž:c‘Å2„–"-¦}fX[’›÷áºV`®NÆ!Öîÿ³Èq&â€4£5zºŒ-ð9“SÃge§]zÈg€@Ø\§àhpЫòÆ™ U[ k "Êq…š›ˆ|ØÏ#¨º¨£øÚ9ÀtbMÌ4²YkɦàÍ”êíÀÏ;í xýƒ×,² ¼âµ||â7Ê‹#UÛlê3 1+-³„[ìÔí|gaûDzm6äÍÈÐm|ªâ …¸Ú®~¤knJÛJª¶˜]ÕÇT^>ÃÑp–)pmU^–\‘÷ºãæç”Œ¶p6¶–DcïrØþ ñútJ7EA9,|œÖ ãwν:Q“™7òíGap¡~‘zÇ\|h„Kf#gÞ²zù¤HpðºÎâ1ÚF²¹H€ûr'ÊT|@¡½f×·%”À«{¢™Ý¶µo†Ô« ‹ é!l©€¤Nš’dð´4e›ŒÀåÍ#æóŒ¢C>+Ÿ“"@Û~:%ãø[I£pü}ჶGõÛÑy˜ðeO¥Sí òD±®ÜÀ$ÎBÑêBid*ùï¾ïÉÚ룛2ˆ™Ê1Ô¿ÏWlºû} ÕUwÿK"ÃÁ0µÅ‚•íKDX=©Ó¿Í€ƒ~|ýÄdxÔy\/]zÓ .b‡vÓ/¢Ì0œËðÌœw˜Co3ïõ}0ÞÄ¢„Oßãqn. Y]žâ¡Ú‡;dzjQņߜ˜î t·²¤ß ÙÅ옶†Îy0%~Fm’¦K××ß™òÆg ö…¢ù;Ø3x¦§@þÀþëòûÜϧ†Yýôvc9N{K` nU¼;ïeÐ>а¿/™› ¼ž+¿?”­û8¥Ü-üÌÞ\uiT]Õ[÷PM¿S\r×Åÿßò:`]Jä°æí„¹¶ü|»Ì×–jÕ4ùìò„æØÏ¨ŠÐ¹4ÎuniXNQÙ|/t„ÄGî›åÒ¶¸êN©Ïêö‰¿ÉcNÛq ¬ÿoTþßiTn¿v¥K›Œ—ç¶ÉèùçCÛdÞ^6]#KGÓo½7fckµö x’jÆK½#F% ­wÊ:% Æ6˜â1?xH øIœÀŠä­ FÃÑKÇèÔXëãÝ„ ":_Sú€úz,ÞPòWl„ ˜‚3œ7!Dlñ9ƒ7SÔ¦wŠ¥ÝgNZWwdÄœ‰ºúzïœ(26:•mœs`òh~ÌV³ÍƒàaÎØ ÌQ‡~”ƒ–ç©ê9çl‚T"pδç0?ÅlRÍ~ˆk%µ¬ÈÞìsÀl–î;%¬sc0ÁQ>c 0‚¥ÞÙRƒI9[ÜÔ¨5‘tÔé.àùÔV'ÍÜyMÝ0£nÇ,œøŽˆs*`/V:Ç.C€çP¥Ah¬,ßgŸáÎ$·åè¸8ˆ*m‡,‹Òð^^ü†y!æyªá÷lÂEv˜sR`,"’Œh¹IS »> stream xœÅ]Y³d9~O&æ7äc^‚{ð¾ O1L 0Á4]1óÐðP}ka©ª¢›ž_?’mÙ²™w) ƒè<º²üÉ–dÉö9ý×£ØäQà?åßwo?ý?¾þtÇׇ¿dúã±üëîíñÏ€AÊcÜ¢SΟ½:ä–ò(µÛ¬ÐG¯ô&¼>>{{øæôþFlFkoâéÝÍ­²vÓ*œþts+6­­WÉb³Þ† NØï¿±ßŸ±©Ù´Œ§çå§P§OÈá½Ñ>ð~xÃ7·rÎÆxºC²q wz‰BôfN¯[3Æú¼Q "m´<ý‘ þ HðÀeL§ÌçÔ‰…'ƒðP_+ïæ%ƒÁ@¿…Ÿ+Ћ³" MQöe,µ;ý Cõ†AáRZ¹ië¸nï˜n/ò°£8*®=W«ü~'0AaýpTüwRÂoˆÍ*‰ç7xö«ƒrvóV‘={&õao0AkM ´òŽ$úë"›nFcíÞ0yd€ÂÒxïX†ñFz> ·¤Á­T›5NfEöS‘t‚©ÐAm.šNUfŸïq:7 yê1ƒµseÖ&qÄñ‡‹êœ!ë"‘ ªŽQ2Š?5E;Seª}ËØß0v’¾Jd#œêù#rèMFß©Éãú°èèù `Ø ;ÄÉÚnnm›Röôsü³2YxBäM§ w{íULJaðä¬cèǺùXEB1~ÒXИ~ú;Ý…_´-aÈ9°Ô$¤Ô%LYýù¹þÌÂúX®Ì楑$[QžR©b²V²Ð×ÊÕâþWèþRŒØgN·yÒ},."¸ˆÉ.bíÞEøxcüö~óÁu.—µÆ[F1‹„ä~`!›Tf¦Q²®ý°ðh™¤L‚Ê9ˆ<¸æ^Á/¬Í`®t§ÿ¾Ÿ÷ †»·>@_/в ÂG…#ÿ\Æ6^·´|Êì2†3nŒ&Äsn…c.„z2OÏã¦$ IkDï`ª›¼ÊwAòYxÁäþ9+£…Üô'q5öÄ<½¤_تÄý ŸÜƒ‡”¿7áÙWŠ2ÙWŒß¯‹ ¿)¿tLfMàVÁ=§Ö${ÎWŒ†¨&ÏN-ÑN?áÔ‚@Ó;«LUÚ^ö‰ŠK ,ŠˆA?<-ü”ÄÃÏߟæë!×j2hIä"›e°þˆÙÍ5KGÿ^|¿V‘ŸeÉOs¨Ót>LaŸ™ø îí(åMTX!…u °8[Í ª÷poãj~ÊÚ[?‹Å´D’ê2¨W¿¼Ð¢\r°*q1×H!½Ì¿—Â6ÖÌÂ5üè£eÊípÚ$ô F9´èÔw”Ë2`‘µÊâœÒƒ/ <—^ö°Âc´ª»Ü;÷$QÅ¥ Uw‡ËןÙâÀûYM1{ KÚCb¤cؼrçó5ˆ>Þ=]ôÑÁΆ¹‚õla)cE\çëÍ™ršUqkä•Ïû© ÞHÜ¥8Éô®±_­v9·ň.òX4V(™ÕP?"ÙE0>,¿ïV0ä²·œe¹qáýè¡ÃÉ>`þþ†= Aù°=[ð¨L&„9}VýVˆö[ ž¿EfgÎ#)³ E…òD é»>ýgâ•€CæuT"ž¾ËÌÑé86$–”ÐGm“E5zøŸA“¤¹Y¢ï#†¯j¶WfzÚŒi§o‹i#%wðVÓ?dî¨ÏUw0«N/WÁ—Y„4a¨í'óȲ´ÈÜ&&‰þ.‹v]1“Dº "ÄPÁ—Ñ‚ V³©u©„5Lw øbS„[ìÿµ´l‘Ä­×^øåín-ÐfW°>*Oؤ{¦irû¡ÐÚÁ¢•xÕp¸µPŠsWÃÚoÏ~üMö4m¸%ƒLðlò Xº,j>Þ/qû11"&˜×‡ÔÝŠÀGî5 —€Ö">ù¶@q¹TKCŠ#ÝW¸oQ®„V‹¾ðr:Lú Ó¾2rªkÇlíSâ‡)/‹½‡lF¹–§OºÉÞWŠ9«-É1%œVŒQ.Ãgã#eÊ9Ft}Yø€½v k’ŸV¬Ì@"T¬`(ç¶‘†²ïm’©2¨ ×yÜãû175¶_‰ºíT– '˜ÞK)Ôø@@ftë}^…`ÕŸ­j6®Wƒs›¾°~‰~sŸõ¸¶°dõAnmû}eÓ|+žo£¦ñ2“›ä%œ›eÊ|e·gH}ʺ_<Œ÷+ÃåSú3LÚaðquš1[h/·àüS†*ÈŒƒ ÷ UDÚ³¶Š‚!™X”|3}X†‰ZTqµR ÝKÙ™ç&¬n\Ÿ‡œå{ *¡uô½y§S“Vþ<ËÅG$·SÑñv½*9¸[®ÉÎI)ífJ¥¹¨J)nÎU)ù”_Àõùç}-^[ õ¥3lN0|£'¶ç"ŒUP‡H>‘Ün‡C@D‚CÛÇHH˰DY%ý%Á¶r—„bßP$ +PÊåMÉß—N‚ႹZýª?u^`×àVçªP«³/p†ebã7§g—§Î¨yãz uG|±ÛÄÇno¶t–Úé¸ËÐý~Ÿ4Á8 EDSÌGƒˆiÞ9Ov ü~ àëðšs37ìņT(»†|83tLQ¿Ï̘³ ½I^è*™ çλµæs‘âǰ ¿Ò~êÝ?Ý"…Ê]ÞNPžÖ¾äŽóm—ޱ«ì³Ø…²èݨk˜&² €ÞetZèa_ …!C?|hXZH XæIk.Ì^÷{õÜæù6v à$÷‰R–T©ÙÍE=D!AÅsëp_¯Bð.Þ.ˆDÇUüã§•“}ŒéPGþB¥ A_¬:3ò8Ù¦€nb:ÒLËw°ÃÍ’èn·/-ÎæN"®7“‚Ÿ¢5öád_qœ;µ€}šù*ëkzºƒ#mf™³½ÆÙ9Ÿ‚z &‰¶tð ó-"Ü@æš»1‹«H¼Xi^Îúñ0µd3ôu•*¦ÇÁCIu6Úêk¡ºxÊxõñM(uØ¥ED—/ÐøTè­|€Oâê–ØpÚuˆŠL ó¢Ëæ{fG0é°;ò-ÁoLÐl£¯ÜŽƒÜÄaxÅy0é nL‹  ¯lgnå [Äþ\žã$C*ׯ²7„­Þ^iÄy¨~~‰è¥fÇi‚Øí•I!DÉMše{’ÙµŸÃðms¸b戦ø×$uýJCc">áÅÓÏï‘A­v‰Zd…eY»G&"IŠÛïÚARi.ìb÷æ iÝÊóÒ¥u_$AÙzwùàúaà}?ðÞã¬é,¨"Þ+QËíþ‰í2[Ϙúõ¿+*H”ËÝ5Ž¢O¡"ø$$<ÐLV¤ÜHa# ¾Š³£+¼û¹Ï±kÓݶhGR¹½¼}]4z?kC½è ªÚZ&±Ó.<:Tx‚e†ê´¼z»KªœO;çLY̲½ǼsweÎÁZïî»Qaiök$¨pÁú»ñVã `?«“wY ˆŠ<‡ŽúéîzÎ6Q_dt¡/b ¤¯šœ{×i<‚g˜ùne:ïíÎwÑÎõ>@W®ò¤)?>ÏeŽr›Rú Ë£ Dåõ­¸È»MBÆPùheg7¬óÉ«e‘G_ÊÆëÚÏI»Ë¼q¨r{K˜/åØ÷Ü&Ky0iOäù=ÄiÃÓÝf1+’Ýö$oq83^ á=.r¶—mÌ— ùáA§?­wQ¸ÈÙz÷ºµÖ7ÁÈ@(Þ½+Ï©‹Þn™±^¨ŠÒN)c_ˬî,¼ÈçôAê]½¡5ó…}­ÒUà/‘Õ`7QÒݳÉ%6ÄËÂó2eራRo+@Gù¨2„¯íÿþìð¾Ôä@+çà‹ðWu”2|Kÿúøòø¿Çw0SécTæøýAuÇÿ8€ó@Þ)&ˆ¸ép|{PPÑÂÚX)o_O¸*Å¢uÉÄ5¶d²8—ó0ºšs…qòç²ö\•¢$ÔjºÇµ—Ź ãåÏeí¹ˆs™D«ÉÒÞAB5G¿ë±“5´œ£ŸpJ'khÙdq®Q£®¶èq Í{üjùöžŠÓ·÷p?]©£v˜_ûüöÞó”…„€ÛŒÉ—|´JLód©AûvJüsð^ÒËo«ò²D«´ sïheâ‰Ó­€¦ªÃÁ0˸<^òö%ãÒÞÞ;ãªmþIUž(Áœ +ïýVb*±;/ìï;cà¾ú| mtêýmæ´lÌ  ýù .&^ª«ëˆJ.t•0® &äáþa\;é°A ªà8¸Çß…ñ QXP[¾=@ ÀÛM½¬W¥0YcKe1m2¬ Q¸¬¡%“ÅÑÍqM¸ˆÂÂåØrŽkÏU)LÖØrŽ~ÂE.khÉdqôƒFs\®Bá¡wl9ǵç" —5¶œ£ŸpJ'khÙduèæ¸FÚ¢Ç6ï1/O_`aƒÁ¶Q0?·°:¥ã­£‰|ÿXç#?Þ ä䣿cˆˆ­5=fñw"øtž¬­Ã{M|y†Ô?q>’0hpw€X.VøÜ+¥àŠÑnÒUÔdU« %TÕõï©ßš×çªQ ØÔCSŒ J…X$ŒJ b:@ ÅÿÃ܇ï£;®e¥d˜PåX+H‹j¤¥I•¾¯×6à¯Ú¼>‚J!Œ$€t ª–qD’0(Zî­³…®J‰°`‡coz°Íí“8Š’zÌ=45†Ù4Å,MÄÖAyfJ‘$ JtÚ"d¥\uèÁ~47Qâ $ õ¹ªFBF9õÑt#…RQ £kmŠVJ†ÙˆLHs+%2B’PŸ D¥L’@jPUÑŠ‚8%Iô˜›i[W*O€½‰ØÁˆ,·Râ(VXÚÓS–ߌTB.è\3Rd%›üòÌŒ”8 IT茴-^•’auÖaû±ÜF‰ƒ,°¨U1¢.@¸©‹¦(”бHµØ›(‹ér‡JI( # S•¨KUÓH¼ÜR—¶¶¯„ RciO*PUÉ 8! tHÓG&Ûôª”Œ«³y;x…åžGäWE@}¬Š…p‘ÂM]4ÍqF’0h1u<–8‘ !R}Îí^†Þ3d—¿Gq-©‡êz`˜jóêz¹$2µzn®W94I”Øh±`–Ò‘MHî2ô^"»|†8ÈÏHByfz…` U JG›¢Q*î"aÔ#i1\¦™rAÖ™¾ ½s$ݸ÷ 9 (Ï­ÛJ!`Y@ÅM)tÕŒ0TBM-¸û1ÍÈ” 7}zç]~Fä^$¡<3ÕˆBÈŠ„ŠœŠ¦[AQ97Iô@Ýî»Ó¥ „£û®´å‚“ÖÓN—3ùh{·ÓåðZeÝÉa›MíÆþ^‘10Ï6ú{\Ò˜}¥ÈÈ´AEçC»#MnAíÄ”ó!Ðç‡znØöéŽþi@ú½¦ñÕD½Eqö|·‡Üð‘Õu”7åhÂ…K›}PKXgä—ÙìûG¯¦W#£ãw•æ/¸òéäÇ‘óÝ3) ^,:*ñØý‡ xT ¼ÀTl1âv=:-8#QÒ†÷ž‹(BGúÌ5´d²—’!¥¹«R¸¬Aþ\ÖHk\ʵ¦]•‹(œkl ²~Áô\m!kÇU)Æ@Èó®‰,Æ5¶œsÕ¼EöÁ‡·RŒôX&Kíu:q0ø™ y¬C]žï`ð¾!Ô8’uù&žKw‡JÉ_æ8V É}ë£<ß* â ”$aÐ#¥.^ç £éFBæ|I­ r2¦®R¾i›û1M=7݈BÈH!§>šn„‚8%IôØ¥eJë\w7!J©”+{ YjãUQÈ4r%NBçJœ$ÐsQ)f•PÔ¨}TE+ â ”$aУ˰ë 7ç%ŠTô6b+2ÜR‰ƒì$Ðsé£YªÂ})i«¥ÂšsV»(ÍNéïbm>(Ñ™iSŒ(«33˜áfJd„$ž›b…R‘ œÂ[U¬` ¿ˆµù ÄÚF[T%JÁØ[‡ìÇp%²@’@ÏQ&I(ZÔÐHZú{X›JôŠC x/„‰/”+yKß.ôCì›ÅÊ‘æˆI çÒÍ"PpCJù6‹6‚¶.ò#Í¢©/©u¯Á~Óhò5¯RBÊWj溕g@„Æû•#õ©šzn:…P’„¤ƒj}”ghA( ¥¢,F=PÑ:ÕM7¢dmòÎx’nu¹3«z®ýV !# „œú¨ºUÄA(I GÒôm9Q,äøºûéÆÔG>oÄA³Bè¹ôÁæM;¡mÚRÎi[å™M[¡TYÀ¨E7kM3¢\Ýx¡gðMšucî[©è¹ö[) ÜÔEÕ¬‚ Y Z<¤°•Pû¡Mz|m%—µéê™1Fw©¬Å­e¼ø&v7·ù퇨eºU~Åeº3oÄ4>×Ý.¯Y›«»[Rmý½ÄýK@飋O¸á.›ñf(quú…åÉ­VE°`o©¢@aÖ#ô˜ë~TN>3ÿzÐ…›ü Ú¤·q¿À%æÄ•šñ® I¹ÕÂ6Úy•[?èªqÙÒQÁá×;wÿ oøŠïbÉõ·U.¸Š‘éUB|­l÷Q¤¦—åÄúhLç¨W|5nøJL<5~%æQï¥éÐç>M“;]~Ú`pç4g®hÿ¨¼~¯ñCs³×ï;€ù^•Ê÷Ãi&WÓз’÷ß9¢—‰°|5±ÿ¾ªhãúû¥û—õ³²ëWáÖ7Çó­±Ù·4Îùs—tqzvÍðÊ÷ð[ ÆAfrúŸ› q»sú錇~œT”Ò¯ý$×’îòç€ÆWHñ¹ºÒXóuŸæýKâqÁêŠY™‡ÜÏÛ¼×½7n¿‹0ý—Ä·)ȸË/šjȨD÷Bi?xt/ñºwÎ]„TÃwÒEH7^éç;Ç·¤FÞ<·%7¹xßÞßÓ{.ÿ—öö™¼‡Êpá‚Ì•†ÕsÌTñâ-H=Þâ·‚Ôü;™ BGù/¸`¢./ŸH/­.‹W¾}œ»ÎoO¿ËìéØ&¡ÃýúfßÉ—C€J ¹•1æ¾ooðsøž}:?7·¡kŽ}úšl|¸±?¦óé’b¼±øÏt†Ò¨oÓØ[+,N ^¨VÖÑíX£´r…,uN“ż 6Å<<æ qzn`¡ÄÐô¢Þå5¶ËžÒ¾ÿW‡ÿ¬!åzendstream endobj 280 0 obj 5613 endobj 284 0 obj <> stream xœíÉ’Åõ>ÖGtøâSÎ}9bŒ1"l`Âáà Ï&lÍ$!½ßË¥êeVfuÕLÏÀApP«”ËË·o™?îØÀw ÿO^Üžüá+»»ysÂv7'?žðð»ôÇÅíîç0€ó¼FíίOâL¾ãÚ JØr`VîÎoO¾ÙvzÆ&…çû«Ó36(Ã,3ûW§ðSJ«üþ~2ç„`" Ñ^¹ýÛøSpá÷¯Ã"FY»ÿùôLJ58áö?àm5ÌÝ?둇jïÓ·ÎŒ´ óLßÉ*oð³µJZ·𷔎[÷Ýù_²D„¸ç»ó/NÎÿÍþöäÒ)mãØ in0’!êÎ/M …Ö€¦WpB'T–˜NH0öG˜¯) þ—q1oäþfZ`5%æXJJ­)¸0¦Jßâ,o™YÙ¸+…–â°Gq„̃Xû(:Dx5p-רÿ0&Rr—Š4ª\Ã뉋…´,þr}Å0Õ˜‰‘`T$úòçÇTN WÎ÷Šž“€Î ¦ìþó° fJë1¾yûWmÆŠ«Àž¬´@¯"'ŽNvæäpx .»­ÕuØÅöOCýhšù7m²^#ùåãòé‚­ Û[9G4€¿Ä“0 Ä-.Aæ¥öAÆ;åñ|Ùò½Ç_<™b©è c{ @2d,Y;ñ–W¶rx³æ‰Þ“v¥÷ÜÈFòUX9k“+l˜.«k%µ‘ý–ÇàNŸžŸ|y‚r¼{!æg'ÒƒjÝ© h¼=Q 8FN_^ž|Ý D+¨S + B⃱<Æ¡ïÓŽK•BŸèÀä0V¤háÀ~?'‡ |kYÍóTPôzÿ¿0b¸<œKc³ÖCšÓ}(C`È€±Ô„ ±3W À*< °¤³ºDóqïâ\W;F¨¦/BÇ]+P™èÇÚRp8Ù,¦a*v:"2;Jeö»¸š¨âŠ»¸œ4~Ñ•F8,oa3¨;¾uß/(™?( of¦PN…‚°™Zá'²z h~zrˆLOd…1E˜˜/2S Ý¶H©ôRVw¾ÃI)!ðM2}ÙΔ°Â ã ‡è30åÍ$›W§šÆ QHÌm8ºvV¸Äªað$j¯ñ iŒxâ\Xa&ù’ °Ýtõ@<ôŽ+ .®0å^ò…¹3:–ÄW¤±‰ªZä/̇¯ƒŸÄÒIÞ`ïÁð4Ø@H‚;ÁÿÁ\OPMà}óA޶cK À"Þ…¥ ñÀDù(PSð‚w;ì=qÒ¾‚ݼ§ð+©írो<›€H„W’ðj‡ì ÅzêÔdU¤­ñ¶P"虈8¼J Â:ÝÍR¡Ÿ‚V|ë2½ÞH+‚·âS¹½àzTµ£ {:ËÕ14&x#=]]†ƒxJ£—cçt¶gDZhN !²ED³Ñ°¯çfÞÅTQ鬟סyt•v %V\4x8±öÀ•sG>s©{Ë‘ãt|Ñ2m8aÝQ0ŸŠy’`P:“É>¡j   ,öƈè#L€C¨ÌR–aq|ÑÀ‡!Àbß~;nÚNÒ+P"jž[l‰¨ßÐùQD›vÑ\{@TVü$÷Ve.Špôiž°\$t­ƨð°•éKe‡Î8(ÄøUž¢—› x£äÆ’hSæyÅ3øUxÃOÎåf¯Ib°Å'°Ìko8oΑãq¼…zì¤ß¨æïpV¨ª(^I±”`(§ô@€d–™še) Ô©gG)FTXÏ["Zg‹[r‰ «™)åÒ ÉSÎ?ü¼vjjÞùÍŽ”ä}Gj vÎÆj^t2b â@ 4æ)ŠQ}ÿrI” =xî(íhò‚3ZÞ ÁøB¹õ4(x/ õŽ3-_,Zd¦hj_LÏõ\û&ÒNX]ªì«Ã4¤ÉÜ OÄ)Àz`m·~½¥ÂûçS¢½õ¾²ÚJéA tÌš†µQK"äj9'mZf›1mÉNJa5ÿqJO`ƒ¿ %Ë¡S…n¨eÑqwT5–eñÊ,¶j ¸·åt,Œ'tψ–æ7x(f[ñ´¦T{?Mc¤Ä;æl鸳€ºP("EÞ: {Sp`n­ ëÐß”‚ž—®Ú~m dá×öœLɺ֢4ETµåjŽÀ†kp{&ÕÖ)-dã—ú9ÎTˆI{©³£²/Gò.䨨H‹Gå9×UÑYz:êq-ÄØþܲ”ëYïz6ŸPkÎ 3ï5lÈ•)•hOŒ«Ê1eLgöèrˆ›=ZÔö£«—ûdÁÆ!|©óFH :rSÖoq5G]GeÉŒp,råŠÿ:¿Ha– FWõJ6D_ Õ¹m¬z˜³&À6ʪ!­MÌTàÐ…"¥0âÿåÎXQš#JmXÐ-Vq„v½³uË8Í.´ÆÆÌDËsÔ/ĦB¤aà¬,Dr×2äHÁ€d9Qpþu©ßÏT¥c2×OS‹X•Š-ª©X°”Ïnå¼A~3&¹÷n`~ìa±V‰IoÀ…™¾Ü'ë-gpˆs努d(-ÒÓ4ª’Jg5É8˜Öi—«’˜ÀžRçüm¥)üõ,¢ë ÷Kž Yô0LžBì9󾄵-o®Dâ4/f]8áóõ‚p0u¼J$f,sEÒ»gthÏ *Íc€å\Ù¾×K‡§ôšT´M¯Y–âK¦_–ÖæÜ)où€¬ÉÁßËÛΖ0{ÀéXšp½’TQ† @ÒòÔ†’”À¶i?Á.¶‚úûƒ N”ðßG¨4įb“LtðÕE( Ʀ*Bo*ùÌÞòÂ_:}4ÃûxŸn—:`§a„O÷N5[rM|Vµ®ïA¬ù‘Òÿ¦Êˆ²cãžrx4€œ™6WÔW\ñŠS,itð‰#8ïwbl¯ŒÁ‚:ôâReGV‹ÁeFW3¤˜ì!WÀÇbè»êgè«¡®¦Ÿï#QТ4=RqÎí@i‡{¯¦<\{pVˆç‰ÒÀ‘=&sk”ÛÍpm­ŠTȺKrãðy{Løü×ÖÀå‚dD݇ÁQ}yU93;¿Õý’\¥—7¹ZÏ»ÍWo³Uò®¶nÉ/¬ÛH›Cog¤¾ªøvÆÅ²-ƒðœ¨ÂO¦Mó½œQth‰¦ä¡NJáíÊʊnòh1Ç”2úŒÉá½ìêœßti§x7–ì’wÕíÞ)ÉØâ ªî†Ø°„ÙêPTùŒÀ.²Ð †Ù;Ù! ‚u½ÌF˜†õJÒȶß/Z¥Öz]øüCn–î°’SÉc8J‘¾š¤B°§²Yãèôh…ª%1´hyùkáp‰zõÓgÇåêˆ2º«³ZlíÔÃÙZÖwÊïÇÖŠäªÐÅQÙÚÈÁ†Ëë[[K¶þ wÊ{]b½ôƒMOxzi»1!.±\·‚û̪yHãzb±ÿÐ=tT¸Gôi„U˜Õ«(l8ÖýÄÅUl‘q‚׳Îig©ÁV%¡ð+F×óÇVf‚›ñM>ì:íü]UJêÕ-L¥ÏÞmÑgÿA¯·¢ ‹)zßÇS3Í—TWàͬS]h‹@A§X<<A9áeJ˜Ton¤Ä ¡œ=c¶¾e¬2ž”ÅaŒ×™ÅAœUK·aZŽ0jÉi›ltbô72O½>&‹K†óeÉâ·O˜ÿÃî-Ì -ØD‚­ƒÍºõ@×½¬¥9¯²Dr›8`àƒp̳G¾9ÞÃZ ·«Òný‡µÂ)jäàïÿ°Öìî m»L{ZüŽÓ› BœùG£f‹ÍÏ ¤)3ÔÂM¿³4²Ì}ÌßÝš]‹&x"ÅB”F”°›õݸ2F4ֆפê—DŒßLSeKu´“æ¯Òϸˆêþï¨Â,>yÒ±¯”Ahª•·Ã8TÄÞÆ-Áœ'E ªH+¾ƒ]*ûàSº8Z£~9»Lº.ÑfEÓ})Ñëƒ' Ûªìõ’i³‹Ri±²ý~]Å/ïX)7°üâ‰rnW[\¤FÁø‚t¾+Ê ½4~yß©æÅ`)¨&FÅ…o&Ú'-ÜÒ¥+ÉÇI¬€}ERÀK—ì•ÎçÕ™ÿt•൯ p„Çæ Á¥²ùu!|“ Ñët¼4î‚·;f_ø$¨#…c̨v߈ô˜V(¦œF§àÍWÃ-Žá`XlÁ[øÈV`áÖdÌ?rì™E/@UgÇ!LØ•¦-¯ÒŽ*°y³îŽœDÈ=VQÞL?¯ *XÀà†8}ÁÓgü±¢4êÂf*³EëІCÜ!%írZݧxðB5ÃNBSº°×[TÐt¡º§F¨0ÐÛ¥T4‰•ÑÌÀ:<©á–~²{›ö>i[…Ï ŠGÒ.^¾äh ™è‡‹OÕDEÿ6‘Bè^Чl ¦T´|ŽÆ¼àF(18«¨j7B7F’3"­Ûw{{•ëñ/ß ¬NÒquLaµØJ¨RJÅ(ž ÀOpâkmØÂ³Ô{í,Ûs c =‹öóóãŰ„Xí)Õ léÁ!äù>äù~Á<Ÿ‚±Ò|ã_6Ë—c…Y¾Y¾Y¾Y¾ÃY¾æ]•_k–Oƒ .A){|÷%ANî^˜ñçørÉ—'ÿ¾`X„endstream endobj 285 0 obj 5270 endobj 289 0 obj <> stream xœíÙŽ·ñ}£äi6ð0¼yHÃH`#¶µplHzv¥• =$­+_Ÿ*’Ý]d“=3»+Yr?¨Íe‹u_=/Wœ‰Çÿò¿ÇçþÑ­N¯øêôàåˆ\åŽÏW?‚ J¬ VZ½:zrÞ+áãÆ­œTŒ;µ::?¸·>=ÐÊkãý ^å«–å¼~t›¿9ÜÆ• bý*>ZÂúñá†3m¹ãvýŸõF­7ø¨´ ~}•qÒ»ßJÇ´ÒÅ"lVJ1Ôú{ü»3ά/M­”Óa}…{³^úõëøžá«õÝx´SZ‰õ1G0}Fðx‘¶ï%‚Uf=ç —ÏMzx1®¿)Œ¸°ÃÖþW=·R™âHx–ž—ïÜ"Ka?Fd5Ãeòæ“Dm8È'FV2àbàãqdz€cZL7LJÆÍl£y#y`Ò¹ÕFh$QHoí#WßâBYìz8Ý)s‰~:­Æû{¦àþǥ،äʤóÂù‚]””¼dœ„\´‚cÖßᎠ­2cheÍÏ@'Ìç'íTžOºt…of@ˆæôÉ:A ×=½G,*í¤“ÆK¸>¬ƒl1 4¬Àã©Z›BBŸ–Psɛ܊Ê¡v £‡ÿ-8G9zAÖObÂ"[PÒ@À˜ z,"BÔÆ$" ¾³^ÚÉ °|Ð’é¢içðÈáj’Ëla]¦7"Ðéå¢ùéXÐ[ÃÍ@Ü«Û4#`,˜u²2#¯ö1#?âR‡`J7C9vyÓÊûÁùø¨ÊµU®&7bç‡x ¾wù¨­*(sYh8êµ1 ×ßýé^×úþ @Ïí;éd)| ÃX‡ª'±>—p#¤U(D¬!(ZA BsÙ¤çU:_𠌆/¼Àåà¼^g äNΈZ:j¼F}¤!ô#úÔÔ1*RàEáx2¡Ú²:BaÁGõ6ZˆÅî ÝV;.Òð‚õ•A»ÚÇ Ý%”™kM$ õä𬥠ð1"#ÚŒfâ¶"#-5¸quÈßÔV.­Kmû5ò…éPÙ¦`M& h~øNz~9DTŒ-#°UþÃ¥9Éì(»§Uü“þ¸Í$S;WEQ r’!>‘X =»ød‚%h„#ѳ[ –,øf/’mÑ:Póµ£mù 7‡àdÒSþ¾K׿F,ÅEÑñ-XýÝâ"È!Àùõß"Z^‡RèÏ*–fˆ¨‘*hO~ôiüðDí­þõ£úOÌÌ ã+èVàä=€ŠÐ‚š™ŒÃ}¤ÙÇZ°ÖNÙÖmúO§TöŸZ¥·~e|ý×J£Œ/Äoæ|áÚárÖ¡Ù‚ƒ…2³Âô–iϹÏvQ»);<Ã}?צëçÈaÁ](¬Þy/ªŸ'5ëšÔƒï`"sfcMbªa¶*‰Ý^DuÀŽ‚gü¾ÆµoÜu'Ãúþº³ý"Q¡ß#Ðy¨Œ»Éò_Èn±u÷¢2÷ .ÛDx0¹¥ÿüI‰0‘'Q2G æAɹ›(¶?'93 ùyH0Øî?'éü %8šñ[–à÷¿•°d„ùb„ÿ¯Œð/¿;#üË#ü;5ÂØš Iƒo&þi1µ7Õ¸¾ÇÃ¤Æ IëKÖD¾K?Ö—»;X÷´ýºçH–­‰ÛhŽmYœoÕa)MõEW•Ãcr(|¯~ñbT÷D-ÉõèÑä~OSMÚ»º+L“©ˆXÜÈȑğ piLÊø&h_—Èm¨)8+#*,åm¦Ý Õ1U}c0þª¬GS†Œuﲈ0äÎZ¬ïß¶d;`[šËA87£$C†;>>ÃG-…ÊÖÕÙB¾ážÞòýdñ<Í‚³Á”ßIsJÈUÂzZAKÿ83S1G†ÒAÉ a1G!´OH€ ›¨ª½,¦åiG“ðŠÒôJÙˆ¼žè}U¯N%¥ u–ɳàƒ'Ukë­0XÔˆªâµNš——/'t_å(f¼µÏJo—× ªYiƒg­C þ•‡k^­d§Ô ’SÁô^ÍÃ2HÌf޵µgÉÆ*Fæá\»\¡U<„‹h–x+뢖JFûÿõÑÁŠ®ÞðÕ7`À-H¢Yiá(áêV‚a~Z9;¸Ûª¢™aÈô²¢#§É,PŠm^DÏÚå$¤ó¼s"¹ýŒHƒŠ:F•ÂBØ}<D¶¢ÄóÎDÒ1î³„È ¥ÛNÐ=M¸;/ɵ|SÆÈ‚4=™,IYJ'kBYËœw%¡NRÉ3Eœ¬OzG(Š à:ÔM‰ãÊÜœ“ÀiGñ€¸¥­1ñÌ[íu‹«/:ÄÉŠl¸±Å~¢ÔWÑ_C€åÛÆ=€&ëèâÁ}ËÑÇspco ¡FðÄÌ¥€$«Ý«ølýd«H-gDxáD±‡ÚlÁ¼¶éJ¨È¦ü¨=€]*L5¬h…}S×Kgv ûÆ&Q˺[É”‘;x¬!Õ¦Y7Ø2/ìô³@ÌËLXœeÂ-¨Ö=mËV-ÿÄíßÉÀ÷TuÙ¾ÙRéí!±+6qq¨K¸õ?#! ×qˆ"âgdïùª©À‡niÚ¡ ~Nâ㑔˔ ­ÎažêØŒM^û‚®÷îKáУÞgrº¥qÇû‡PuF—nÅÁºÙÙ”\³^5AÓ«Å¥æ’UëÙñ”"äÓ¹Wû ‡0œË® TÂ)=éö®y/"F³HÅ;“ b–³þ$R=L𦀯É&8Ý;ÝièÑ)Jˆ¯RK¬à0j¤|Uƒ‰µEµ~4/*•C|Lœ¾I½x¶zLFÌdYriél#m‹ªYaà…ÙÜœ-Ý6Δëdzγ ¹²ÞÚhIÖ3!$[Íäl’O)`°©GÂÜiäJedãZÙü0»ªü¼ÈÄ©$ê ­ká{N¨žU§ú8íFØÓ–åÒÚ¬3Ü+b×8Œ){µ½tåîL¯E]—á°Íg.^¹B¥\¿‹â¶x‹rš¤Þ`¹s̨ž6Çö*ÅC–ï÷Ó‹jÌ §!ÐZÄ“p¢†,agƒûªrÃõºC4µ¬ÆŠãp³j²†TæòùТ*öëPÜòÝѤ¹¨Ç {ã‡U¡ è0¹OÓÿ‰°´ˆe®YX€¸aáÈ` ¿8¬Š[‚ 4ñÚsgߣ0® ÊqªË´ÌýÎRÜn–Fë#¼íEÉ÷¸UÄ£;µv²¹3w‚Ro S[iÇmY—kGÔ#¥Ë¸¡Çù…‚"Õˆì!Q)ÛRÔÜè=r “BG5ea£Î="^)'a–—3½Ï÷w’bÔb¡‡ò-nNÚš±(µõM)]uÐI-¦ÜMs‘Y…šå8‚q+SãdÊnN§ìfªTÍëWÝD'àdò˜êÐ8¥ÙŽ «±«ædØÙàÔo­îXÙ*`CÓ-¬Ü¸²Li¹bÖ¨¢óamà[@Ôa¯!~¨f¼´¾‹É¸„PX§o¤‚Àh!fþÊ*©ÕÓrÚ¡ÀäåbX¼Y68áe “Û¾x‡è›nDÀ4¾Uë4Åfñ_ô²‚yòÄ?@:“Z%dâE@qѰõ)Içp€OûJ纳¥£ m-³óÙáÄÀΆÝ:Ó”œÿÀUÑOꀻk ‚Öë;“Ú6”¡veHnï }ÚÚO+9¸m¨‡Ç‰A+»±æŽ¥ =*Gu‰~¹Oë]¤WùtÙjÝ–j¬Ï^XCQ¢i~Ñ¡nš«4RF§#%½èQ·}¾±Ÿ9ËmLªÒäÓØù3ùi´¼£.„ió ÊLMPFº=Ç3>LãØ}iïÝ8ži¼¶øÑGn yâޣx> ÓôQñlýóéîvŸYåœ# ßªU(<8Ô`W@ áRìB\i¦•ëô5˜Œ+&©[sEÙ(½×ФÉÀ.‡ u3  aA¤€ Í룇ߜQ¡÷Ù·Á90‹¡À`ágû7 6òÀ ïÎGìdµùèñä=oð› ç ~ºu+|Ôöá£RRAð3è ëmaÁˆnFu·ÝƤ}j /xn2:6»›˜b™z‚Mæíò/[Àü¤ûFÝ`HÈ -®kvÍZåÓt¤µ¶w^ŒqçÖ@x·±ö2ïªAï-»Ÿn>G1»ÊFùc>Ãô¶–i,V¼!ÏFÇQñQo%c û2‚Vß!súûiUei&ЕÕwU­²`䛟öŽò;°‹I§9‰Fæô{¢À[–§N‚ãÏ%ø²¤Oe„R÷N‰UQë°”ú’ ™Ju7ÄŨÅ+/?A1‘ªáÏg‹‰©ÐŒ»Éîw2hú›Mý ×W¬ƒ9…~)ëZqk?u• úA eØ¡JN½$I%E€¶„ßBÐa¤¡%¹†ˆÇšyñÊZVv—/òÍUs¢£®ÀG…sRSý¤ÎM_CÌo­ß]ðc-oG¹×ÜCgw”{D‹Eו{aúü¹Ü_n“{#?€Ük¤¡êI;ï&¢9À]‰ææˆ ¢Žtåe@Ý_9³*Ñ=3×éÃÏ8 K›¿t©š7\KTÚ«"Îó}† ~rG/#±Ÿ`°Ž°ŸuFO×pããŸÿpð?à\Ãendstream endobj 290 0 obj 3846 endobj 294 0 obj <> stream xœí\Y·ò8ðøiÖñ´yÉSŒ9À±½ìXzXÝ‚µ’ì•ãèßç+²"›Ý3³³+Aä[l’uUEö[ÑÉ­ ÿú¿_o>ûÊoŸßlÄöùæ‡Lÿ¸íÿz|½ýü¤ÜÆ.:åÌöòÙ&¿)·R»Î ½õJwÂëíåõæ»ÝÏ¢SBëèw/.ö¢³Þ† vO鷱фÝëüØKáùã_(ßdÿÐ /ÜîÇ‹½Š²Vïžcf£µ7±ñ&=6ÑÛÝ5~ ¬¦Ä° ÓҺݻ¼ŠˆBÓ„˜Îikv/é±ÖAú°{Ìf¼šzEË«NJ³{¨É#œfÖ4ÝƆØYlµŸÙzåw7ùqÀþ®.T ™#ˆµ¦³Z¾ëÛò(oB-‹!œ!ÝÅ£A£ÜýTBJÚ¨Šiš‚•ˆòY á\ªœ†CtˆÄÎ[n„Óóš-Äù)M;mhôÃË¿m”…D¨×å(Ó°k¥{1§—ú¹‚1=´òn÷>¶f`™ÄÜ…dûßÖª—Ÿ¿e3rÚoòŒÞ˜~ý4#_ŸÍBÛß÷ûßK…}8™ÉàKý'¿,bÙ¬0+·„^Eí´SºA-uP¾Ìä·ì÷Oì÷»ü*Æïž¥Wp*pö²å¹¼ÙòœE¿»Ø[#¡jM± >ó»¿`ƒ‰…‘±N «té^-Æ>`-ø÷9ýVÆ[ˆö Äæ¡R©ØŸî¬Ôg±„æ0PÃïØ2r!ÒN‚wpÙ˜€Ž¦SryñdNuBÛÁ2nh¬÷.`ì‰àx~bþÙszIxÕ…‹gΤáR“õ¼ÎÞº:[‘Ùe¶‹~ûÉ0¬í ãýb¬çò{<™ ß.Øb„袵 ‡‘„ÍuéýY‚rš|¦ƒ{cw—‹LÃSùæÌ3ü>ïÃCÖl4—oÙóÊVi‡]£˜i[põ Q:òØãÚ@¹‘u\£‰…]5|î?ûJ8BãÖ ý5ÖÖ2€ .¹ éÒF!N?ËŒó„e“ÔQ‰˜×(±ŠÁ8çUe6FûÀ=úOÌ£g–ÚàL.ÇÜ, rå'1͘õ\ëõßø¼«¶ŽB$Z›® •Çcž4dÁ†ÞÓÔ¶óÒh°}ÚÆDŠn²^"—Ô^â$DE?œŠ:³è zË)Go'áC÷• C÷ŽÁG«’ï÷ÿ:wÒú,¼èC¿¸.!-_[Ƙ×Þ“–é`,¹úáo[Z¦d•ƒ–ý‘ø¢¬3‹õƒ‡gî’2D´JeIA ¤Y ¬å|ÌÛ3a=oÊÉê:/(+¢Ëû)ºpe3s÷ÅßäÈ‘Ó>S„Rû›{iáûd˜ ãe%  Y¯ü(Œg :ËìM´ˆ1¦ÌB•ÃZ(ÊÀˆ$@c¤TjpÒ€ŸÊµÄ.{œ«bÚ×%#`ìt 7YðâúÁ­Œ¤¼Çë¸*} qÉïXé{iexÙ¯î3 JcU!¸gù©æ9„/ø\¤0ò;Lªð‚½J±Vz«±–(‹÷›2éĦÃ9Ä߯3¦S¥DoÔ¡Øóž4Pá ¾k„-RŸ—ì775¾ —Í“:<õ –ª<äu~¿ÉâQŽçýÝ4 ék-é,¬úï›ËOh‘Á®[&f‘ „8râ»zêÒô!®0¦¯ij!Œï±”¬Ýtyta)3‘Ä Ê"Ma®¡µ' QMÂyXn‰¼—c¤X™3Ÿè•\Ï|Œþà™OèÜ‘V¬ƒëHÜ<«fz¿´ß†÷«m7^zÅ‘1íñ®`ô€pAÆÓi»’#`yO9éRTäkž€ÆÉÉlç…d3õ환Aƒðhõ»»-O{· Z&¢Ò'M Ë/•ÈÃÉü2Ÿƒû_6º|q©×²ä|•¡Ñ>Œ+åÊ—áî¿¥VÛšwÀÓ‘Ï !QQ(aÉ:¹¡<ÍÛÕøùÑ‚¦Î¸­ÆzöL´_D`M² ­8Wã\.ëäacõb^m ki{±á^f•·Þjác_yËK” <×þn U¡üÈ‚‡N^@εiÒ•ª6]Âh—¢Õ’Ìɸ¨–¦‰:,Užæ…q!-éãôží¤rì3ÍüffçÉ=/m•qJYžÀIX­Žpœ[Ê Ž KUQ†T»’oÃr žO VÖ„6"#–%Ä€E›b¨ Ã1‚Wa€ÊöCj£ˆ¡Ìa€ñií©)/pªª17P_ª+_M¥‚oµÈ[Yf&l&’kj:€3 Må}$Hñ~q^…XŠ ‘§.üR=·Ô*'Où’‘4‚Þ#"´W"ÓIYåQɯ¯ª}â¥XußyȬ}”+ñ‰\ 8¶`p¿e»9±È‰‡ê\ô“¼'$ƽ äØÙ }‘ß/Ë\ `±Ò€PÙ¿jï—Ç‹ü^ˆw¦F!ÉkuâH°î~ë>Ê“*ø³yŠ@`ÂÉÌÉIœîŒbmn^ ¢‰E\ià%&9y· ¼£U2J  ÿU·{ª­¥jÿ/á~Õ¼ÂþÏSÚÿÈœ¾ß3@":W]^îiø;îiô#Ô ÿDŒ‘{2K¹Ó“>ŒÊ°zÞæm8[”êN%1ú^ä4ø59³Ö õÐBœõ£Ø1®hW3%ŸáÓw¹sè„ldnƒOl&5mçu(l¬*•e˜5ϲ$åîÁƒq–rG*¢‰Ñ¹îGUÞýuú™ªÎFIbq±· „ÁdÙØ/¦Ÿ7ãØf‡YÂjGÏññDëÌ ÖýNxÜ`Í® ´•ŸÚ—éý¾«©ÛåôØŽ?[<ˆ‡‚òšaoè×™ß~øO—›/7¦vûóFlÿ¼‘.8øÈ­ŽVƒWÛëôèEO^m¾^<@X’> ôÈdó ÂK?)Ù[$ôÂRFº…b¬oí¾Ï¶LÙñeà·ì1k}ãþ¹R¯6ˆâã ¬£ù(-÷·HuÍñÆH<ž¬ñN·_‚11ÏÐÁ}eÞ± ©u  žçy#h~ÉÀ4ï”|“äÓÍš¼“áv}šÆòX²Äìßæå}hÂtZ]ùÛ­Þg Á{9Ôp ®!ž"?µ}'p}Ì(le½é´cÒVÔpˆî(iWrê¥èìX-í‰=¬´t“¼=0S_^ÌÛž¶Tä›Áö‚£^Æ9Ûƒo¦ÚÞGS÷-Ågfûlf[r£ëæÇäÖˆ¦Ü e²ÁµdÊeÇeÊ5g]É•í2ü—TÈ>àÁÃ-½‚ ¾³…W蟜á¶›¹WÐÿ÷ §­ž4biõ¥1KGÏá%N)@µ4Ó5V?JÕ–l9Ôšv¤‘¡±­\ã±=co˜›ªÌàÞüQ}`¶+:xä=û¦ ]*Ò¾=²Qé혀î¨`åHU…•ûä´…×Ï´ CC¥‡JN Ní5yÌ‘• &ït¹BÔ§/-‡¬(HžŽr¥§ëf«<Õºc‚¶Î`™ñÉš.Üñ²¤ä»ÚŽÅFn;uTR·æˆÜv*Üä¼JTDZØèïyúK™”‹ç–9@™v8Yª£çu4¢Ú_Ô®> v+°ç]·+¢þ†FçÓU =Ä÷qô1ë{lFðwZ©d}àz ;?$gª›‡:™µòÝ$ vÓ›-ò鸕S5ù«pó›C`—sÿ·ÈJ€¢àæÙ%¤õ®*J:í£EXy˜R„‡H†7t1ªSH>€ï Ç„™—IÎW³du€=•¤£ŸÜ ô#ºªÂ“*ȹœl° léf]»[rÖͪ\ÛUðÆT½Èê87;]í+‹Ï‰PÀ¸F?‚ã’äuÙ1’…[‹‘ö°îCnÖÉú[: ƒø) ¨Ë’†Zñ¨tVÚQ ~¿ŽÅÝa$æè¥( pcœÀBRµÔÝX¨\—7=x«’Ô?è´˜¼Z$ÚTë—·&±ò€öG:õôó´$ú€W³€Ë‘›ø ËŸ¬X³6—,Öð”Ž"YëáiОÊnO©º…ò; ¦ OáìÇ·C§2MБ3ª°i]iª"‡ëëêÞ!65”±ÊUljèÖ¢?›"=!)¯aÓ´Ž­±)å5Z%lÚÏqÄiê;€©üJÖÂÊL¥[±êàaÖ¦Ò}KG(ÕW_˜¼”j¤9¥Ò‡´°g¡ÔÙúÞ™püúA }‡UI³ê^A²¦j’_í‘§óW‡ c¼[ŒÌeO€QšN ;#C^ ¹ÀÈ•?Xxpv‹$'ßV“¼×ˆIÚÆ*-ne Ê62†¹;<Øÿ Ÿ¼Bû \w¯Z³ó?Ï×ûD¢8~É\6út´r(tó1é.^uü²¯ÇZbâVJã‡zlžžœÞÀ „NP«ÁõØDe¾ò÷4Ò'áÔp·ÎîòJ}ÆÔ+ó‰)•gÄ(PMaÄÀ:ˆò b0ÄæJbnÑÞØ;•Ñddùµ¸%¨õ–å†õçe„&û;úØ1†Ã[¬ê`Vð>ârÝð†ä1ûô–Dô9â"U»K*iÒûêÔijX MPŠº× C§Ldxr‹~)Lô4¢äÚŸt½ö§ÛáÓNºy§h¿vH2HS'bØÜ9ÄÈhKbnÓܳôM“V”:|³éTCQ€c¹Ð,5óJOíO ؃b<2ðÍuÚ¹fè”T%®ÇµûÎÁ°g¨Z¦·Er6»kR}yk„w}`Í(?}‹Ìu.}‹ŒP¸ý¡®æ¢n4\eë¯fÍ…0Üb¢rŠ)oRWS̹×Ô¤{~?æ–^o:ä㉺q Í ^Ï‚:¿XKü´ß`T‡Î2JXGQì/Ö’êê®üÇí]>Y¯ŠOÁ”pKô…ò$hãfäP‹¢á¢úJÉ›aíú*Þ4ãy¿òQÔ2¹]¸ëY壷×ßÞÑ\ïù÷xË¿·4¦:¢ ÛB¤¥ºÁäØëº™¶ …HâËÍGÿ¾endstream endobj 295 0 obj 4158 endobj 299 0 obj <> stream xœí<É’¹q÷}D_;ØeìËÑÉ;aËjK $›‹B½pØäŒè¯w&–ª Y¯ÞëÇ<ðd&rÏ~¼“¼ø¯üÿîþâÿÛ_~|º—/~¼é—å¿w÷—ÿ|´¼ŒStʙ˛ùKy)µ›¬Ð—^éIx}ysñçÃõ,­ƒ±þð)ýŒ.¨×7ÿ«Èf%§¨t€•nná»ß^]ËIYåá/W×bÒÚzåOøÛ{£}8|ÆßÖÛÔáŽÌys¥Âd¬R‡ïW×Z›)HsøŠŒQhdùð=NÑ“íz_p{á´5‡GÛhíM<|\~– 6FØo½ÏJã*¤€m@8`e¬>ñºÕÀŒ ~vÚ(¤>¨q-@\>e ‚÷r†TI%¦hxJZ‰¿ÎVuÐ÷›…’ÉT8k4stŠ 9ØŸóNñqAvt\ÚZUtkÎB(„ ”Nèô,2cH…†Lì/W@’ΠΛGÉÙ~Áa„Ó­\k…u”k?6N˜Àl0I”#µ%ŸÃ‘°Âäâ˹q¿’#×ÀQ’Ê¢¶—Ï!”B¶kµPçñ ˜Jz¡†ç¬¨)<^À/ýx¼!3Ï?88 ‘z¯‰gòšXÛ×Û*å*GJŽhá{!­-óÁ öªÈ€ŠÊ84ƒÊ{°àh€ÒÇzvñ¨Á H¨k­„•Ô˜e÷£X„$ŠÚ… ÛGíc‚ZziulæsZ¬,Ñ1‘©©¬û>WBëè{'—fèžÂJ8é\G¢³¶zÒÄÚ|Jôý²ƒf¢·»|J0À8%}ì¡ x¶àîmø¶8E»Ã[&8&7Ï‘ÀÖ_ÅÏ줽oœ¼Mg¿ÏP›„ˆì¬@’ɇj²Åño’`›E¨CM÷ü”ñ5®q¢ÉÚ·Æ+ ÕH3Åhÿ–´ÔÀ×J`õg¡0õì;X•Q¸„™ RÅäÎ#ŽFT®H£_®¹Ð*‚pUf*àpù98 õ´ò® iúÇyi\÷Z 6Nƒ» ÂcQÕáúîr:àEe1çG¡! / ,œjf?â0¬¨,µÐÓ¦|G©Üí+FðNeuüN*w>Ç´ç²9¡ÃSÞF;I·ù€£àpž%g¸ÃçË=…Žañü+!Öʲ¸ê– D•Š……¿ÔhBTŽ¥n3’ Tržò¨±m"†HÑ7"Àƒ|G6'Û$ɨðgÉ0~1 Ú'í»68ë9¯d°ëR˜ÃÏcSõØp ¥º•4a›³ILíÁß¶ÛãlðZާ!8šÿ ×°)µð3¦°$˜¸fe uâÀéfe<+áq^^(sòêW÷Ânæy€Iã&Ab¨:¹OHÂW @à„”¡'Ò4b/ð,œRÍ‚Ç~øÏ‹€ÚÓöð/Y,À¯²ÂU±HäO!¦\[Ú.¬t:. @P5^Ï[ûÞàäÔýá@@­Á‡ÅóÌŒ^ jMG¾Îó‹ÊÖUR*7"%pN¥¥_áæ D~¸®ƒ¼¤S)æÀ|‚Þ^KŒSEH­wÑ/ƒ„3)-kŒlÐ7¢Û¨ÆýáŠÐÚkÔ7=_#*ðñév?×{e1u/Z-Osw4-HÇóˆÿÛê|P¿¦…pgl>ïÈ’×é·ˆ£—æÌê<û™Õ[WgfÙÛå0‰Â®Âtc²%åôÇᎅé3l‰éÑMO 2NeéÌè2êQ:´Fp!ƒSyó7ÿP’‡ñ¡¬×^â@&M3½×¢ôœtœ±ï™f[ÕD!”­ CÊ;í&hö4,j$³’Z‹–iͱ€ Do|^ #Z¢ºž3ÓtéÞ¤YÌ*«_ÜSKØV¶6Âø¤33>Ÿ±|ËŒ§%ý±:|Zc€¨æ`mu£*Ì倛WÂG ?à韭¯¶Ì¦«|_Æ‹•¡n­K¶A c !pRz˜Ýk9uíüvÈ@?¥ßô,îòÚ·“#{‚KA¡&»S:·œ?bONõ2 _šÉ¦Ç r¯.ß^¹ìˆ­ÖÀ®ê|}l`craÞäŸR„]µAÙ6ÀÙòòtÙ9³­²I"‰ÇÆ™BÈÐF± ·|²a ¨[À~Þ¾1²&l“M’‹ †´HØý5™òjùE¨`ÙF"”‰»hX;кŻ­DÏWH¢«GuÈ-¿û.oÀ“„ôÁ,ò&e;µ¯?Ø­&Ì0N±,²#å@’Ö9Ÿ—NÙˆ†KŽ£ðDñ˜²”2/žR˜¯ü ‘ B¡Ó;°Ÿ"ÈÎõNJÁD×[ÏyËY†ÀZxé« 1ñýû ž–Mà}G¸–Ø &}5ÌHqòCQ*XO·\›£%b/˜´>åäÆ[Š5'þÅ 4fS… ^Jc)0ïcêê‡Òœ£YG¬ÿw!åKy=•Ÿ\4§è;švR6\Vñ ŒÄ¼Ï‡3Ú•.½Åéa•á~ÌÃNH–ÅiÓY$üÔڸˉÌÑŒž‚1œl§Zó&^ ª€šP;â™uB5M¡{R·ŒlT✠uë~½£uÒŠÄýZa×ÃJ.º×´8ÚãÌñø VºxhCXP½jˆ1 "WQ˜hžê€1AÝ&ªóÛpºÙÃí¿ËÁc¯µO¹­Q³`“|oj:„î±¥f¸‹o1ª=«Â¦° »T²Iã×RbÖø€‹µ K ”¢<,lÐ V‰ŠSˆ‘©‚(›$ik.|»• Sñ&ìRoõèˆýRë⬢V)Ý=ê WTrÓÅ©0þatÞ^EÖ—;Æ’­Ÿ2Ã÷ý*€Óài¡EtØ5 ' LC~ZjqÈŠ¨¨–½JÁlýÉ1¢QªeÄš±š5?Uñë ƒFásœŒ…8\¸UÔ;b\ŽGñSÔ›5ac,h~¿—IzëU/­Ò¥F;߿Ĝ4“¢³©«¾£2;HCŒŠW£Ò}”‡£B§ãJ”Ýr{/ÐÍbµr†ç£[>ä ]”{`ÚÛR ÈŽK˜”Õ§9.éÄt|yÇe•*еN;Sk£Rô<­MôA³ìåª'»:(;L4ÝBÚ‘{Äëà° ¿M|HÝ jR6²Æ«œ¥³{pTimI€ÇÎ̦ØsB'MߘºÙUÓè£sRÙDOéMC]:¦—é‘ÑÔ„Ñ=/رÅãOsŸ3¬­ð€Vݔǂ®mM&Mo6z«º€ê¹É]PHÉš`Ê¡œ'Ê5ؼÂ.LîÈUÎ1w$ÊSf'+$lÐh¶ÛF1é< 0ù^ˆmÝËØ[&ƒQÔQ†-«#ë×Í[G“Ñ{bè7^åÚ¨»cäTãY×^°†àÙÝ;îÐ6€Q XáÑÊ0]¡èÝ)rž·%í¨bÓ‹3˵] ¬ö6“—¶‹2£_Ú<|°²ÈiP¼éô©pãªå .ðy1gLÔýD@{;“<ÃôˆËy]K[×'~<匿÷PRï †näG¬rZmSxŠZ¥ ®çCÖé€D…6†Ç‘ÔHIJÛÚߪ#§ê¶ó©öáv"!Á6åœ}’3H«Ü8?Æ)s³é·æxï+:=¢K„'*ÿ”2 uHû®ïæÞÞq®}VMܯ+OgŽTÏHp{ðe8k´xç©„¯§ÿprŒ^Í9·ÔÊX¹\CÑ vœùMc™iU2­­x«z»T–ÆuÛ>6“lqSš*òqØKTÚ7OÑ|`#fã­lXµvüý¥_ÑK÷§dËS[¯»Œ^€91tÎüVƒô1¹TÒÃÿŸ}ñANz9ãÙa· °‚›ºŽý³/4%JýLÆ™×mÏM(iA$) Ù¢Ïþ `${‹ÂÏM\;PGY¡Ò¸èO(Ê;7ûD¯x¿/×u|ߌTYvÄ6 û'G8¶9ý•åPë_*aì$ÒÛGÕ2rÍs¢WÀ$<Ç6ô™†…Òøþçe”ór ^( ésP~SºCáœWJ<˜žå}‘-™î8qéªG©^ÛÊ` ߇ÀÖOÒòµïtÛ)¸NÁ²·¡¡:BÎöŽPÕþÜBæÊx½‘çâº#·Œ£hšÞ§DÏ9å9@¯ÓØîæGÛæ¿ ;štA9ý™ÙéëlwÀµ •ÿ”ܬ€· (¼wtˆ© ‘?”AþâÜû ¨­¿EÉyüí&oÇö²âŽAF.¿-ÄS|ƒòrOqäF?eÄñ®/ëR$òÛØ°%u´¹¶ ^ª©’zq†y®Õ X&u¨—r£ó5«ê²ì¼“¢Î™¸²Ü陸Î]¹iøœ´4åžëŒã |-‰¯¤à¥*iöôu¹Ñ5Ö^í,ùáìßÜt_wFPІ!ófI†ëت—™ {më„èTQ"¨Ög©¢BÅœ|îµ³qJ×ìÁ^™@¸»µ¥GФ۷ù„{땚g—G1—¾Ä²oÛ—Øô3¤g½ŽÙPù™a¯UßÙöÑVöÑý0Ní[­ÒÓ9¡KHãîj;îùèû~ÁÈ_vÑ|¡¯»…4‘[b\úâ×~ËêFGú>Ë‚ïé°2û¥w¿…;W-æš:œ< J¶Ôá®Re¼(B}ªN{סn¿ê±S`­ED×M?vÿymãK^oia<ãñÒ,‡U{§5Úx%›ŸÖ};«|wµÍ¦5ÂíPo3‚¨³Iy»»×OùX¡·ÛµÈ5-"Dƒ!6Z÷%#ÅÚêìÏÑèÜT©«÷þ s3ë¾]¼¦‘¬êv=#;Õ¾ÐýÕUjº)DKÇ®¡ÌœÏ^ÜϾ·kzUølçÖpÊ‘Çm6ß ÂkãΕ.˧~†3^*³“óë×7°gßõmÀóŒtãTáÃKoæ|0} :­àðñP&ßE}“µ(¬’‰_òzÒñƨo»@´¶KH0;*3®ìU%HÛ5ü!oÓ× ¾Î7%œ³_Oy.fïh³1Ó¢Äul®sÞ¤éÖ~ò†¹ëùkÓmò#F€Èº•‰6ä$lvËàÛ©kÊ>{žzŸí>?Þ`Ão¼¾^c§{>}t±4«ãýf¾¬Þk03cëS—±¶Ç]Û|Ê«øÀWyö„“p&aõ¤=sšµUCI\‹t¬«›$ƒc]õ+­nûœtË­Â×zÕL¹b]ÙJ2q¼ÒYKébWU„ ¿øïEþBéjÛ¸ã3e©7À³Ïrõª«jõPl­îžÚâ™{_¸~j.‰óŽXƒ½wšqÅüÞÿºÃÌ.ŒÕõo¦ê­‰µ“úO鈑8hžIL”re:]ØÌRáK¯}sn6ÊaOÅèO2¥¬lz®K®aMÐÉ®!ÜfgNg 'O{!rç«¡¸6¦ªX=oîˆO2¼zÂ5…’){šTPsƒËíð}ÈæµðüôÜóÆÜQ¢nýÍ_¬¬ŸÎ1nÒjà ϕ™þÍ·”ÂÈoìB0ï0µiŠô‘|y»ÚÇÁŒߥ#0ÁíËÔXg¤‡­oVà‹‘õÄ>.ýnäõîosë[i3`«Ò°˜t4ë„‘†ï@:Ö÷ö±¦ÿýÎpOÐ)[ç"Ìš^Ýe\Ê¥NâTd1í›mìµi7<âÄâF£³‹WX# ‹“7bSXLµ²ß_ü8endstream endobj 300 0 obj 5467 endobj 304 0 obj <> stream xœí\Ío·ïYÈñŽRm9üfnmS-´i„öä K–dĶË‘ãÿ¾3$—;ä’«÷$Ň¢ðÁÏk.9œþæ“ûóNL°ô'ÿ}ñæèÿr»ë»#±»>úùâîò_ov:û0+­Þ]¥7aÆOZº“jNíÎÞ}üáäTLÚˆ Ôñ ý6Îx/ÏOð±RN¢½›”×Çq´NX>âm¡ƒ=~qr*ýd¼ñÇ/é©™ŒuÕ{ïONaÖ„@#hq/i¤ÇJ] ¹L˘ã+z¨´°Òóén—)Þ¤µÈá_æm9|G³çc“ü’F+­€/Ã7'±8=-)&K!3ÕiŸü& 7ÈÊ/)¯ã~”qÒ•B^JdªVþøS~/Àp™Z…î»´Kë!ï $ná*=•¦Çø^žÚàä?žýuJU:%ƒšhÔ«³KÔ¢kœ*V¢/ÿü©ü¤)þrvô푞„Ù}Dåýë‘¶^ãŽHåäÌîÍ‘v`Ë?_}7Ôoµ­ß€»À¿£~'r¼6YA? w:?M›«ŒD 7ïíÔJÙtp&î>³ž 8çÚ¸ÈìKd½Å1‹žGÞßâc¥'ŽÔ¼,øŠiW¤wLTY{< &ŸŸàéC•qQe”Àæ À5EP³ÊÄÇH êq *Râhƒœ‘Ç÷Q1••²½óù_Ӏǒï†á;;ˆ±5ÛÁ„wiZ„Ñ ¹œi*Ö„ ùð{¥ÑAMéÞ†i™ûƒÊ, uñ”½?!í’õYÀ¬NY¢J:ËǾ`˽fCØz4Ù© 4›ß‚œŒ1&è{Ì!æzQ݇_ä,~Å4ívˆ78`"dÞÏ´(”Ž[ -&”¬4†ÚИÅå÷[¬¦€q´¾íï–«Ü/ŒŒ‘óS1-|íáä©„)HEò²Xåuº ÒmA¥ô¾ñ¶ÎÏÊsG'¥GC›ˆÓˆ–¤ˆF Ë-qŽÈ!Ô#z(€û±I‘p´À‰šœ„ ÷òoGðÄ5 AF¢7 Ù9~Ú¹@zXÁ!ŽÃÐ5ÍÊ^!É ¬º ¢?¥5DðÐç8¢…‡šãJÀ¼¶0sq6sÜ#sæÊÙåxÀ™u&ªº0jÁñ’'…RÁµMì5>T.ÏšÕăñù•’¶¤ù{Wifô`¶Ëµ/ð™—Ö»^ ’#'sOhÚ¡—õ»´E!aÞLW>ùìùÛÁön`À9Ã|n 7¼Hàc+ƒÂ'å ÔØ8M °„}eá—§ zŽÕêqiÓý8 úpPÝ2Šj…AتPëÝz ê·nq+úà 1rgµ@{`ÑYÄí:ïåÉ–¿Ø:û‹ÎO =Í€XÅC¬)„É¢ ñr!ź…¶ QÚÀi ½x m_L3,´}Ak A¡Aa‹ÿ“ ¥»sªž-3ÌÛ,ÖÿœxIž‹äXÍ•/+¥Äƒ?pScõ쩃Œû$4êA²£˜³:l),GI Jä7F(žüÏÙ¯O Q•Ð×@ÛW)C{ð~¥3ßUÅ…(ƒ–Ä=š&\±%éòG¹Yí˱܊ÀO{íÚ<.!÷£˜Ÿ<ë’²5¢åM; ƒÈA£™VÚô6ÏŒS´<|uÄWž1™­¹Ú¶!uÜ‚r•AbA@Ö9+Š §ÇÉ숀¾o>ÇF»my6Ù«º6–Ä(†›ßc ÑŠðUF>ñÛ4¡ó~à©ò +[ø†œ}áM‰z)> m‚É/:o*e» ˆ‘.%[phµ©U8Ä×J𶂸·®UX|ÏÆˆ; @ÿjàué85g1_ò:KÌ«­$QáÈW'§& Òàªt5_íËÅøÔ£Ô çÉ+ KŠ*jiR£ mЮ:ò)<Í“ÕÞ'}ä5£¬K«Ñjå< ðÞ¦ÈÑÖ™M1bÿ]šÚ{·©6D«syÊÑq%Œª BbÕ÷i ¹BAœ•la‡aœNN¥ð&ѼJ(3¹aèÀÓF|½Û”BÉ‘²VíÊ&Oz‰‘—™Œ’kÈ™‘zòÒ´™Ú”;1¸¦]t“CeR€Þ±‹#²d@ÏI7)ižõQJZ!‘FÄÓm`EO•²Ï 8#êXõj‰œø{ z9Ü’ôÐÙ•µL¹ôø†‚ Aqi£4ß·¿|•œ7¤ù™äS pÔÒQ×$éâêåµG2–'É é4E`Ž\¹¬¡L†úõÓÉ):ÜhNÍðdâ6•¶T©hÅ¡´ÆhÓï£ }L¸°Ù§ˆzß—²Á~¢ÉØ^X£µs#¿…s«VJqãzì3M ³­«‰r‡›‡™ÿÚeu•`›ª …^‡•{VÊûâÈ pr£ØTãgž·¡æóV#bÍJ1—KòbœUQ²ĘP‘­UÔ d?³š¢tô>X”nc}(Æãw4GM™^LïÐç@Ó4\ТÖÉZL¤Œã£íèGYôBõ°J²¯2âBTð=Xé=ãWÊHD{¸2ÆéöÚï~õÎ4:l×;PAšC¡ú| ¹·Üyå`y|—6©­mSݳ5ÝôõЦ/EÂWV?ïÞË*&÷šÊèxêÚ< þk;MCia~û4 LP v¦ÉâÿᘠD$C,i:@‡ÂcѶÁÄä²$é—¶+wsU&y=K úïY† ËþøÊ È@óUJt•èÄcÕ Ä ¦Ÿ2æd^X÷£ðÈà&3ܦÚ΋Ôjû@;D\`˜X^…q£æ¨àûà Äj-´ÐèdÝßýþûã?/øÅlHÎwÕh¹OÀyIRF¦‡•õ–ˆ nÛÝAǽŽ'âô-÷vù}XµY¹UµùßMµ¹éÐ˯g•þ'­†nò\Ö)•jZ±åh›µ¨ï¨CÈ( Ú£õ/.Ú>Ü5ÇȸÕ*v@ãwðn¶¤;C£ø®ÄS¬†o/Íöw“0®I‹7p[ÐŦ3AßÒVp_ªï¬îI´ ‚a‘˜×ç·zž 1ß ì-ùÀ7ÜÃi3æï1V7%/šMCm™ÉlSv&Õ@ÀvÑ=`| BÖÌŠJÌR.f9´$™Yµã@`¿Ø M± 0‡'‘%n¥mQŠû±h«ZÊç*åÄå”~&wi¿ªþŧ›I·(ìªÇ,Ú¥Õ£VH³# šµ¡ú`&_<¢ Õòii~£ŠÔÔ(/+'œ5Êß$¢©“s邽'ÁÀdôã‰Ã P÷âÓ"i'aLxœØž½±Õ"›<ã’¥ÚИ„*¨ú“.Aƒë üùBœ×ŠZ®ê¼CËâž@^¼€ž.C ²n–Ê »l‘´¦„RuÚëž<ß X“*:q¶ÏŽírºAÒuZD2¡3ü|7šˆ¸]dŠ0À‘,Hb §¬÷PÇH580*Tc–fˆE]YYãäø¶Š’a’ýÄÉîLöÜ" Nía”’‡Ò^^X!7 gÛ\Ñ+þ7ºµ6l^£¤!Ê×5¯ƒ/ÇI¬ß÷"19Ó5¾á÷ÏN.ÝFÒ)éø·¸#tLV§½y–Ñ_G†©Ñ'P’nþÖqÐÛ}8¸]É™4Û4Y[NÚjS.î;_êS¢À@•¶¿J fÿT¹×8Ê´¥×‘3ÉÏIsó0¦D]æZ«T{ÂÒžLÐ%áDùÆ}¯¦ÓeøW(7"ëjì^sÖ¯q°Üxò”’uM´¤nä '~Áôù.Qê`¬¹MKrLÙí×¾ûÓœ7žÔ]òs?¬¬Ê°³òÍMqu²ä.ÑdaU²È"Ø«)g¥0¬b›èÞFnú©$MýxÜ´È—¥{ÏÆ­Zœé±lºüÆ,쟂çxÁ\ 9‘1~tóêM›F$~ó©_³}ÝõÂõ¿ž%º=•‡Y¼Ú9ëdYµeÖëD=·äw„FÏWч_{Ì5úTc÷_ß·çŠÏ(\7½Ÿ™¼y2Ñu•t€ß8¥FGÔ«a¶è|ñœøãQ?ÄèNéEM>]2 aX·¼ž3}¨å Û»ÀÚa¤ÿ|J.©éÞé-5Df† ÷T÷H_l=¥Cš.m¾±u1¬é¹hŒ´Ôª×m%釤¶¢#e1-Æ(¡çœîIPºªÃÚ8H„èÂiXÕU1 Q£‹ß±Oex,àÃ;½p¬+²òX£ç]÷Ä«`P»$éì'QËA·}ŽYådq‹ûu¯¿VHú?Jy4ßF¢‹­.T¸Æß¬“5]çƒß,aëÓ7˨¨ÊG¥M šÉ9jPõCnåPèòîCW¡ùýÞ•iÝ̯FÔfüuÈty¸þ&$͹!yà³;|׌V n•NÂÝÇΤä«ÇöÿùÌp¦ÑÀè°ÜÒté\A¬’{¿ˆ‡º¼ª£œ»Qr>ì-Êú°)ºgu‰Ðy+?Œü#u û»?Ñ7fŒ4@‘Ç×oF))nK쥶rêŒTP–„·£.'þü«ešx)Ç™IH…12b³y[ìËh¢ü,•îoþ DÓÆ.endstream endobj 305 0 obj 4806 endobj 309 0 obj <> stream xœÝ\Y]Çq~ñ_¸QãŽÀ9ê}‰â¶ ÅlÃÖäI rf¸XšŠ‹d&ÈOUwŸÓÕÛ¹çÎp!à›½TW×òUuõýaÇ&¾cø'ý}q}òÉ_íîù›¶{~òà ÿ¹K]\ï~ŽÌÎOÞ£vçÏNâH¾ãÂLZí¬³rw~}òíþ×§lRRZåÿãüß`$çtdøtFŸ_Bç7§gl²VIëö·ËÀý;lÖV;'ö¯OÏøÄŒö~ÍJ{åöW§gB›‰3»žÇ¥¾ÊÚý“ÜúŠÌö"Ž¢èqCz\¦JÏÔ'zÔI%yKa–™HžžSûkÈ`bÁ6/]èä3U0á BJ¤Ðˆš¾åû{ü–R[ØÎËøí8°ò†Pøç¶SŠ;ØÎÛÈaæ™N8ÚÄ#XÈŠI»ÿ fLJo‹ý¼$ä^œ ;i­xܼ¸,N—I„K­ö?â8Ž„(`ÂˆÉ &¢¸M2"ÝÌ4'¥,&Ng¦á_33¥°&qž ïéÚtä²[±J&G¾_’ é䔘G¹ws6oçŒ Ð,Ãã®è9““#L¥Ió~’pT¿žœ ¬"ñP‚–Ô;òÐCÉ5Õpn²:žáº8ß8›v ú©‡|ÿ]¥Dq:Õ@ìb‚\dŠn2‚R)¡"EÛéJt“t;t©÷ËÖÈ¢Ïb£ͽŸ)p¶ß³TعµTa:ÊŸ7‘¯yçhBï|4¥½‰*b`)[ÙÜÙð¬éu› f2²P *з¹ù†È6ZçAŒ}2Ì+ShE<%X“‰™™4!R4AkÞêw+z‘x*Àgøš$w”ûW)ß°.w¡‹’ƒ{ç¶ Tý«†I4äØ>ÍäEYúÖ3ü–ÂíÎL‰¾2lü(·J ~Òºçy×ÕN¥öàV}gºÕ¨Ö ºŽ ûHó. íøúdk¥v÷êA\"ÎÞùÁ]¢4 Èñ.1è Á¡[ûžPr »à Ç'»¬( Ì0 ø¤œ§ Ÿ¬†–“ÑL"õ:Œ«ýk˜ ¶ô þU5)Xçƒú×´«{úWÔ{|êÈQJ©¦Š¯Œ=߬³{›¦p|0.é,÷?ƒÎvÕàg°x”ωRâ5ˆFû%F@`Á¶?È4!Ö¡ÌÌW¬OÞÊkì,'gÃ#¬š¸UãKø™g¡´¶w¶xŽ»Y¤V,Žô†)pUÈjcøŠÌòj0c ±æ¡‹uÔÖí ‘ºíºú–µE0†»"Þ@ëä¹9¤˜W€‰&QKª#ÀúiîóPæ¦=¾&Ó@¿WøÎ1 HÂøA"„r¯3á!;  $d\m@ÇŽŽÍaœš¬3µâb³cîƒ)nâG1$=4iu˜Üx†09D`ެ؅À*ˆ4(«’Ó—zvúÎÏæÆ±É9>©{Z$)ò‹k ­ÏJí8‹dTaÖ}òr@pÁ—£Þ ç¾›aj~O¬¤'#Ä/ +… ƒÂ= BR£KÐ.‡qé@Éte2[¡ÏÖ+Ì·FÁŒ–ש—˜t°“Õ$zYû ²J…´†WiïÒoN~AwÁ]í¹Â,Z>L 9$á܇MQÒù´Dºbq³½Œ%Ç{Dfvè•W@¶+©+t3ïnt3Ñúë¡ôLE@¸Ÿ”mte±ÆâI9={“…*sMÇeûÙ]ÌRç ‘#Mðî7ãÍæ…&‘ÿÿø*ãBµfÏ­S[íÞ Žnê·Üì§£ô¼óÚ„˜i€àã¾$Ç-N†áê,O”ŽËv‡‚-’ßäÞÞD’ ãdRîp3óߎÌOAfÇ„%ì .MÎ «gø1Ò Zm†0gU¸õ¤¹xxg-aƒŽñÌa Yy”pÚ`\ýêRèbVÅ 'ÇKÜ‘ø_If óI5šêÎÛY Æ µŽ‰-:0ïøš`H9§'¬w=¸‰‹>Îä\4ߢ0ßÂ3 \ mfà  ÍÓo€[’Kc±8‹á¦Ð±C°ä1KsìÁ1²¤H/X×y@È‚™Žº¨Žò£SF¶v•L»S¬¿Eù¾©ôšƒKªß…={+xÍœƒ¸æxâH0÷Ú¡éáx7¬:‡/R–öl$‡ÏÈw‡Ù㟓ój1–Ûa'Ð ¹žI¢Ú0ªåy«e,ÁòàÕ¸3=Ÿ&EVÇpïO1“‡v/|FËe5ß:×"gey`BÖÎjÁp=äqù|ŠŸà’%fj–Ö‹üy›?ßv;¼È3\çÖ«î0²0YmÊ3¢¾7[¤ÿb-8îM¬&F÷JÍF²&Ä`ÑøÉ8¼!Àœ¢·j„BeŒt›ò #/3@ôD)7B™ ‡^ã˜x|ýTF •-„ó1Þe ¤L>` ùÛ7?öâå]ÊTq(·ÃJãF˜³ýÓÆÌ‡jF×™Wq^eš{øpÔ>"s|"lD~óÎUÓE‘’2²âÊ %¶ì¬:<ŸóbWQö¥-Bø&ùÊV>|µÊˆÖeÞøˆ"¡6=‰²X<\0ÅTª=é“=4x?”!U–«]„4¾nBsnÀ.º‘nrÎ/&÷È‹ÀÛù*èë«ê9¤_Üb6%np¬¦M_‰,¡9¾(á2ªïãäʯºŽUM Ë+$ pãxƒjb ç}s;‹²ÙX.ÓÀžàŒhÑl Ö:§‹+Àµ  ™{”#íAÝ8`å}åÞRu‚0±:óFãËŸÚãK9˜QR¥ÓrÊÎã•÷XÑÃqj.«•áÎeöPӹȫ“Øó͇T5ßp!Æ›Q PZPû¾4êE¨Ö–±B¬ÖÓ{—[IÔ°¹™7=ò%ßA˜àÑB`†[3òõÉùÇßÂÄØŒ>ØÄ0NAŒ;ãÀ„ªnÿ¶ §]8Ü —\z꾑ɲ¦ö4iF+^†Hk&«ÓÖ¥Sˆ_äx€VOI¾aMn”±ÑZ& ß…Þ°K>O ˜— ËßB³`&\mâê1Ûç{^jicN8Å H¾E»lVL9À:(šƒU¾‰¬’`ð÷q ´ò`å™Îá-aTÅaú´ª/B×yÙ3î&ïÀ™„ÕƒÄ[½pNÖƒûµñØ{Íp|…-_ÌL…óƒÃ3>aaë’Ëwú’|ãn˜h0Ôµü¸ 4ªž@1‚¢<.->åý,þ9žw;|µDظÆçç'9¤¡w?°Ý—'J:ÜÝNb *×'J¡mrKË÷'ß ßnWz–Þnà Àƒ0'Lo”8X­Ë/Îs:{%éw&ÌÄl•£.½òrƒđޭ\9 ÒYë¶²*çTC5èì/€%ÕýÑ[ÑTRåÀÀ­xkáZ×b–¥ î^[³\ DPð&R¥Zø\õˆm—©:V ,YÌ‘#f͸¿˜=v 1 ©æ –‡ÀM¼Š0 ýä\% 2¨m§ !­ΉÆOQl'À{ÿ7r64ÁSe܈l¢¤³|ºJ…Ÿ|qÛVÀè™úÍQ+„’Ú¶»ÉäæêÒ7q%ãÔèyTÀ÷>ŽT„<Þ“E©RRTJî®1±¦Ñ4¸Ã6œ¥\Îóœ‰|?Ÿä¤ä«*Ù9ÌO ƒz±¤²?ÊÄaªR|ñtˆ6ƒqÅK6£ú&Óv€ ¼Ö3#z8˜ßÃÌB‚)Vî1ëâÿŽ ëêÈâç«Âá5N TØY¾NÆè‰öÅ@ŸÆN–ÎóðBÕˆ!¡éáöŠ/I¾U0sÞT+…Ë¥ÎZÓ½ì:S,^Š7Ïß+£îug£)bÜbì­ñ'´:UÔo?¤{kż ëÞi£§oyZGèmµIô€—‘Tnx³6´®d²êtƒˆeLd’Ù5€­ÿ¡oË#ކó¼Ä?(ü`ñ‰éúC–ø›ê–%jãÛ£´1på»éƒqãÚ¬B8‡?1AbÚ¿½èÝi—ÿ"¼Üp XŸ6ÖTÔå¸Ù@×…³é·þ~`™¼y>Jlu­•DBAÆ/"ñy8q@"•êâ-´¾]>·‰K”éV$–ò'èq¨'ð”N2@îI[ëÄy’ ’ &Äô—©­v©‹u2ÆSzK ÿàFŒÞ•bŠSëò÷c?íQV¼÷eãÈGðXãÂçæ° q¥ÎGüurÕKÐÏå‘&d(/‹ IòrÜÏ"¬UãM_½Eyê~zÖY® b÷~yq?Q±%héü»Kä:wë;æZI¨§›:¢¬Æ”÷—¥£çë0sT@ìôÒ»ê±Âùr \á‡Aá¢é.¶cí>’ ØÊ4öäÃÆ1óSGÅð'HÆW®¥ëJ@5t•hZÓïú·n¾k^hàÔbl–9œµ ËLœSo£pö¡6@]ôà’ê6(æfb餜¸^ ù³Tâ±^j¨Ö®PLú‹ ´ìú€8t~q E¨ƒ*Ì»ÁŒéå#õEÅ·nb¾öèíó‹¹&›âüº\A›P ¸ÞÃ*þd.ò.óD§¯6]LiGë%Lº¢Çôï@‘ß•ç•~“¦¹Òª¥DÕ˜øÞ§IÓÖð£•dî°få–ÓûâÔq¾š›Ä°q1÷ÈÆÎñ¢/үƉMwÓ=`aWÎÉ2¥¼þgùóÏœw;|UÀ‚RñqÔN€‚í®¡Å€¡–KËZYvóÈ0Äêaΰ†<òÝ26kÑ©Tf ^ © ?à2D}MÖ ñá™”€2JÂ|‰–Uª{0fÀ×£„ù+83~^Ãü;Õ@7OpÚGÿÆ+›ulXÏpàvðL·s»_¦sÁY]››ºLhP~9,Þ»_ÚVà“[éFE¶ßÌs<¨q€L|í LØзy•ÀERv`ŠŒЧÑrZª‡ãáÁt•UÛ´—gªtd QÄ€(;9-FÞì&òZ5¯°^År9·±,8Ì- P%Cþn]y®ã¹ØpTØúCð¿•ww(¥ŒCÙj…?v‘®qG&L»¿ºöƒV‰/e³¹n«É÷ þò:6üSNÄÇs“[/ò'©Ø~—[/ó'â6aùË¿äVRYý¶;ìemŠCë”?‰Ùþ×ÂÓ,†éa7óQw3d2BvS”Nv@öU»£Ê}¡PÚ:œº“äV‰lø&÷«xl=ïvø*·þgþü²v¯¡µ¾Ú˜w‰ÉŽ8ø W~VyÚÆÿF~Z0·øE^” ¨¯sëçóé™ýǧg!:$U{0ëûLÕU½¯š”×#ª`1Θ›E‘$8Ÿ%RÀÛ>Þçæj…Öæ”êÍ)…ÏskÍîØZœÒF&h7Á$ÚCóoª•ã¸fåð¹í ã xgÖSûÌ~;3PîYn}Á-€¹þïF{ÌlFÜ2Òž8 ÄŠŸäç#û¼ËY¢ ·´CÆ eò“.“ /ú/an(‰0/­Ÿ›>ëïú ëPÙËÃBJýYm]k;zÕ·Byür¦JQ!H<ߘR¥¼IÇÅTAZ¶žôÑëîÄ„à‰²¸<ÛÆH‘%%!-_W]®6ŠÇo»Òý§Üúï•U‹Ó}ÝŸ­ÿævÙàÛP½Û (+ÕTêÓhe»o9ù_†ïȾendstream endobj 310 0 obj 5117 endobj 314 0 obj <> stream xœå=ÛŽ·‘ïƒ|ÄÙ}Øš6ï—‡<ȶ;PdG¢`!éX’7ÒŒ¬‘l+ÁþûV‘ìfñÖÓg<Â& Ã4‡M‹u¯"Ï;6ñÃÒŸ½>ùä¡Ý½¸Í½¼ äžåÞÇ·K¾ÿÜýÛù<‡ƒÿºEx  J=ZÙH=ÿV<£åd”è¸OòB©I9ÁäîT0 MïãÜnÂÿZíàЖR[aòÜÿ ÛÊ0 8ùîÖ©d~RÈ—a=%¥U>®W ?É&«ŠÀ°ÐeùYÅ@±÷]wÀËz§7vwÊ''żðÎïß“=]bÛZ%­Ã=-û»ÄÑvòrk”#~¼%줔‘E/ Ÿ˜ÑÞZQÒ MÀ\n’Γ}`§Ë5Þ…Ù4ó¬œùuœÅY°¾ äÔØÿO86ÅL(=6:ùeDˆbÿL4!=¢´OÏp»ÀGàwš»´ÅÙøwRp ³E˜´Z0½Š«8n{Jgt7‡8¹@xRJÎPz&G.|—…p²$G”6‰ðBó›ßçæEnN™ù_òª¦Ai@„Hž‰p† Åæ }ày©Å$TÍóôÀFGƒ)õÄøŒÊÐKPI'‘×Û8‰~ÿ+²ÏUªÉx ÄhdÖé!3½ÃÁr²Þ ÂhíÒ Ðéü&!C§ëŒ¨ê„ÞyI]²ÂsÂ"#Ú]F'|K80ŠÍóÜR¯6‘¸Å„„“ß“™ßƱªd§7dÄ›ö<³”ì™á.NiKó«™éwž$’+píPiQN¹yªHY(3)«*“ï2Š÷V”tšRSÞ¢+t¿ÈÝ/2ôè†lP c'§ÜUjÊ ÝØ-Zª¶•-E”pÕ»IK ãA ‹Éj8Ä-yã¯Ô¼|’Zûyê¾¥w™%Ù/Ù)•…£¢€sÞu¶º"q¨Fd·áÃ&CC$Ÿ+ q6kt1C¢^W(Í¿Íc“Gî(ñ ÛÚÒª íoõZûo#ÕŠ…ÄCïyÜÙš$l„ü=±€“ÁU˜5cä6¦AqèJqPh£¥Šž™ZFL¼£Û(€D­,_Çr¶U(lrœ÷04+®– žÐ£š‘ñ]ăÎYáöÕ=˜5¦B`%/$=%¤ŸÐg>‘K3^™w<*a9 9V‰¸á'aíÚRæùUÌ-8µr¥Àª¹”ø¥Q`!ÄœÜU»ft…jºŒ½ÝÓ g²àB×–Þ #3ò}y´ËøyJ€äW¤û™žÐPä.íÁr¯üÏÖŽPÞê@ò@®ÜØJƒ.›¦TIÕ:å Šº‘•ô"®¤,ÚyÐÔ“­f$2Œ@H´gã©$a63ÁQíÀgÆ‹ÍÞ®R"‡2$=Íóäë|ƒ±Èˆ]í‡ìn½/¿\†œ/†®ó}ß?A¯E‚Ò-®#¯œ/Údhó-ŽÝ{S’Ný<¿Ô]ˇN¢ašÈÄ¢db=)g–åº9·f¦9hH¥öO1Ð&¹D%Ć7L¡b‚!@OR¨(XbwÁ9|@‘^0ß!ÁWsÞV:kDùOûtý¤à¼¬±FYÁ/Ÿò ¾ `¤z³Φ%ú›áCëµ`6º:Ýä1¼ÿ »c^¡|C<:g|’*àÿ(¹´Ã§ß“v8v†&ò4‚î£xQ  Ãva`|G÷3A‚\ê€~ö÷ny ^kú×ô àKEòà–ké‹þh<+Dï°¸¥ËüŒ§³¾\˜•›·óa pñTÙD\ͨ+xä-ßbô˜ÀYÓ¬ð€·~æPý@ì„Â[Ýq„Ôþ*Ðr±è‹ÕKÚ§CûxÆýÈˇˆÅÄÈ!<ŸGè‘¡CåçE-¹ª<êpÔn´Ž ò:ŽGŠôBµi_”¾Ž²Ö ïÀ´¥AO¾¢¤Ðàk6µÍ,­øï€Ž81š«Äì~öΕ3Ì¡¿Énd&¤¢ˆ!\ëœn•2Ä(ÒÑC·]8LF:K¡Ó³ÑQÁ<¼gaZxΑ²GÙ%þ,›Šk)—Ðü¢°%ïžüñDMLï~:a»ßkÀt1; Ü3y¾{ =,(»ô¼:y4̲i×˲Á “ 3àÁù˜e‹ˆ…Ëx4Û9V0™4¯F§œˆãR‰ýìd\»Èͱ“ÎŽ4?Ó&ÊÉœµ<ÆùSVö :×I»è\šz|kÕäæ v”ýcM³Hµë…½Tê$wÙòÒ¶¦¦ÌˆšúÆSEo@Z%ôèbµ[£r8²2P³'-ê5“ÔÞßœvW‹Ô¦Ô *9üwc|Åñ?ÇIƒ¿¸ÅÆ­J0”ŠÐ`7ÒcA„9q$«ÖHvôÞҌ˕œVµÏÈVx`˜?ǶÁtÛסeÐÝØ6È\#£FEÃ)}Gçø2 C1†]T²F>öâýÝø´ºowöê¥ÈõœÇ#3Ì\@ÊK‘RÁ\X ËÏkÐp_ýÓI® X¸¦Éç)ÐL¦>ZŠà¾¸Zc¢™ú}oúüØ×ÓIà–£FÁŠ ®Ò‹exdAtÖEíVŒmÎnpN7Òžgíz ´›THp… 9×nÛc‹üÒ;ÒýxКœÑ\„n=LgPúäÜâò1¨_Kn@­ öh®2¸å¸ ,ç©×]žæàìxE8o5v< &N™G NqA%©™ ±Ê±/µáÃ*çŠs3L¤¬D2–YåÀh±ºË#3™©P¤©9’ÿÐ{¤ÄŒ;ÌÔDÓ¨ž‹û2^¥”ø´èF¦”ŽNq°’¶1, ¦ÃT·!ò§„¹Š‘Ü@üÔøŒ…ìDvq ‹2Y»Çq­l>[ú(LÖ7‚6ˆñ˸¡eE_†Tæê}iÔœ ´¨ê¾Â£Ü~…G¤À WÓ·òÁÙ¡Ýéà¬"›2ü0ç¢`N"¥Ìl]ɘŽåZÊÍV¦££«µ3QP£pÄ!¥º©Úé¼›Rý|™ÍªÙ*!&)Kú]@zVÖX·à¤vpHt üR*¹Â˜¢Qs L[âó»±”ÈÔ‚” ©IVsøp=i†X>ReôË*—>?ÇI$¸M(´šBœf£x_/û5ºHïPMK!¡ŠôÐú 3Eâ”ÊUÚ7‰™É x¸.Ä\f#T:Y‚!€ù2±%°ùbLS½¾‚·FžcÆÅÊŠ+mvN6¸?t£døyª¹h"û”Û"Åù&†ª0ZD NªÈ¡T8b=‡å+è!…Ñ,V~ aJE˜«­¹PӣʴëŬ–ÒÌ2%Û ÌPc—àâUJ(ÖŒ= #ÀãKœ´ «ƒß«&ðÐv§(®×.(T Qb%’ˆ#Œ[7¯”`uaÜJ¡ž¤ÑŠe(ï7œq‡bëúµË¸(J£-™²CÜ4wz€Å^`CÊÖÙà“¤ÚŒ˜·úX‘m`-ÁýX!;"_ÎñÀÇýHâQò­‹¿ÈáΟ†©AL¥bTBbD¥œc¿è4( º¡-òŒ|xe‡d6úªƒ6RV™åA_ß[ܦ4&±ÌI¹µ6Œ«r±ö}`wQÐ1aHuÍú(¼$ Br[A" Ö^×¹Œ·îeÏ£CÊ=¸2éÛ£8Â!®hU“ÇÝRÝD´iYyJie¤&—Cs£d]}ŠK… €Ö³éG”2ÓgXU-µg(Pù´g¾kÉ)€y(ív[ÍìÀ!K•Œ¾Ë5÷aA!fî¯ÃÈ¡ùM6 >ͽä^ÌÝÜü:7Vâ $ýen>êö,3ôT‘EÖÕ"WIRoVXj(J´P”Lù÷ï¥ÕB)y>)âmÑ/£Œº´ôµÂ’J5†Rè[K•ê#ôX–Í6Réþ,7IMû»î€—ù„žçÞ©0¬W˜bg‹-н[Ð6ÿnLëÀàÑ~îÈ~Qº ÃÿEéƒ}U´Ðu!\M‰e,o…J{Ñb·DÉššš¦¢œSðÂjñ›”Z™ÁGPŽúXå!0¹ÇT­%Ú1£@âiq(Óv°+²0™‹:}Ul?Äb´ÖQ)Ý»Pà§£ÒézœY>]O &&É:±x*uïgQp·w‹­{ÿEcÑ2ÕÚ®hŒJ½Ua"ž±o©p.‚`„‚_è5¾\YªK5Ú +?ŽŠÄÏ:Hsj¹±žL¶Áñ AB9uB &þ ø&g5˜s€“^ô¨LÄYÌz/¾æJ´s&¥·‰vVæA— 0á!Jý¸1{D‡£>6UŠßiÕ$ù1¬æìjý:Ñb©aîŠpmä“T©j[ÆÇ⤠+cÎ;åK-DEËÏq´Y·Iæ GNñ(§JX‹.JCµÍCµ5¯|èqZq¼«5bD¢˜ÑI zŒ2‚PÐ#û0 •ª’ÂT`w»ëXᢺð²ÀÒZ¡¡ã¢=Å5Ðç8´Yi3°d±òw[ýž‚#²àb]uÀc°l€ z‡*^ëíH •Þ´&uKÙÛŠ_V³È8ÄEÊ@+ëƒ+ ÕÉ@­QY¦*1b(¨^aDkÙ£ºI —vEéèÞÁè²Õz^=˜2Z‡¤¨éƒÄZHŠƒD1¢ŽÏs3aJqdL^'B‚VÜ 5´CÆ×ƒVj8tÌLJä=ôè’±G¬Åpô”Ö³j)©Œc†ïY„o„Ã8fÀŒÑvñ ¯3Y=~tU±~j€=ï TTÑ>ÊYÙ"ªÛʹ9°+¹¹éŠ5iš—ÎÒ„œNJ^Óø–Å1¥ñZ:LÄa]ßôÎe‰¾z51î†1Tbæ%€-göŠÓ@-vˆs+s•ÓÀ¦:·ƒ³fºSç¶^Ì\¸Mý€Í7Ußí 1%êgøV.úy‰'‡W8Ʋ0Jy 7+0Â`0(ê »Ÿy­à«a“ ÌŠÒ×2ÈŠ”r”WRnÔÉ&Õ-šÑ¥Ìœºæj.âF“ú —ÎÎ(Q [/‘G}t;ßwQd¬¥ªñ.yŒÏƒy¯hroU'tRW´Ö@µ€;è Ìœ±x?|ëMeŽêëèKtÆÕ•AÕÃÆ“¯Ì™…#e¾w¤½j„Ž„ð'¬Æ„Bgi¦`£%±_ðÍîa7ç¬ÀÀñþªÀÁ v}[¦ ÊÐÕítLœöŽJ“º¤S@# $J³‘8:½°nì\K½ÁÛ%œ…$ç¦ð*j;ct^UÌá…·Í o|x§1{â,¥‚yJ°U†ÌjÏg)~ÆÍ°õ |‡é¡ ŽB¾<1ò6N ËœÞód¬=Í ·žx#4~Ž£Ö$blüjGiꈶ£ƒFyk™Îj-ì,Rã—ý2Õ×q/\mºÉ?ZaéÀ„é¯BþÅ Z¥Ž`…%ÞAX­Ç‘'ë'VpòVKH8Vþ·7„¶Z@ T -Æâ…%|› 4jJ¯ë}„z¦P·©L»(ò—^¤–G£ÂÑÅ_!jçÛܼ—5ÐJ˜»‰J’`æWË Ýê>‰m.:©Àkw(æíla’õãÒƒëO£BÖNÞr¶ñÊà5xÜŽÕU¬á2P0\Êq@4@ù´Ì‹”ß :Áíª¯liáõË\Îãd ,1ò†ˆ,|;ŽEïwÅ€Þ«ÍÆ —×y\EçVß› rŠ)ÞűR™JhJ%ŽnaÞ¥½Ñ¤fìˆûÖZ,x]lºo2K=¢<·<'™2d™ïåæ×¹ùUn>ÊÍ/3‡»ôöXÕQ‰ ÏÈlT®¬waí¦á®ò‰FöVÊîÆ[¼`k‡®©V¡Òfs¼Vs83ú›£4j›+óÑ2¯£RÅ@ª!'{§°g„×xSo$ú©W¥8HiwϹÙÿ(˜B¨û¥´3Lfðw²r+q)üÍ£l£JZ( b1kW9b0N/—ù¯–ñø—#ÄW÷þ…ƒÂ”²ðç-B. Õ¾.ÊÛ|f"دp¥zú&+†›9bð²ûŸ94.íde¿týZ/!¬†Æ¥œŒï½t˜_È e,M™º ¶ûG4ëÀ”ÌtŠˆQFjÑþ°XX-f‡ ði¶Ê±Ù0@Í“aãgš6²Uè›np›ª­™Çnªjái?ÎÞøZÖM¦)`n œ@±9 ™Ò+” ÞaÛÈåD(îm¿›çè¸Æ9h<´WöàôöUyî&ižÙÇ‹O]õÒÿm†Æó±HK÷Y«%åuäðØ˜Žv8sFZyz)`¡¾ 4Þaû¥)Á€<!‹À<à/¯óÎëtøÐ{¶N¥+óD¡ÓºaAÿø¢møTõ¯C÷c‚iËã—HF§ƒÔÄ&9™´¸_k0J,SØþ^òR/BŽæ p²¯èï×Õ‘ß¶¸Ÿ›Ä±þ<÷.޵ Ï'¤ÞúáÐ(Ðyÿ—üÚD÷)à´Ú¬ºªßú Ö7 bï§õëÛÑ_çf}³ yâæ¸›€¯p š*’%îäÝÞ«1žÐëÞñ=š}Dsÿá«îw]c þŽIœaÊ&÷Eþìó."þ@.ÐYBñoâzûB˜ëÏêêÑ?u7v¿PØ–ÉÀq„—š©ù-EϿ腥†nÊ`殜[sXªÞÙŒ?#Êߟ¹r¹ Äœ~ØÆ“ß„‰$C~—&¢­áÏc·¦ÅŠïõ-¨/È5Ëç- %œÕdð)orð»6„“¿èNñ ÙÙÊ­¸‘`uŸyt”¢ˆœ˽äè6\ Xz››¿Îͧ¹I¼òDõ«z¡Ùw>žWKÄ:’Š‚5¿_/\kÏÿé|Cl&2W£™Y÷8—E˜éýö”œÙ.$nÏ\§ë‡Þ»¹y–›ÊÍ;¹y?XÑáWlrØ$3Ê&œr«'ÅÀp“LGí›Ò@±4þ'ÿ Èendstream endobj 315 0 obj 5881 endobj 319 0 obj <> stream xœÕ]Is%·‘¾3ü#^øbÒÑ,c_1[’m9lÉ–žˆ±|`7©nš¤Ô›Lÿzg&PU P¯Þ#Ùž‘]ÄCaÍå˨wb;ÿç_Üœüê+¿{ùöDì^žüx"éÇ]þçÅÍî·PAË]¢SÎì.¾=IoÊ´z0Fî¼Òƒðzwqsò÷ÓOΠiŒõ§¢Çè‚:ýr.ýz~üììÜ*;8áN¿9‹åüž˜K¿9›ŠÿqñÇ©kœÜ]üéäâ—?ý|®ø»Üª6E«_Í­~6—^Ì›+ü†O"µ¦Üé0Wø¢jÌ(©5THu¥Ë§ 0p(6ƒ×2wGÅh6ñÅb’ÖN“æa±±Ì¥øÊ¯¾’Åf+7D!Õî\‰ÁªwW°M4ý’§¯ÏÎÅ µõÊŸ¾Ãgc•Tñô>[oôqÕÖÞÄÓ÷¬øå\ µuðƒšQ袑k¬bía3¿™ÞLƒ.)ÌyX€Êh°oçy¿˜ç}7?¾›Y…Wóã·õrÍhÝ[+gü œˆã ~Ž£wƒòôržömšŸ6°¹Wi~&†}óÓzpÞû±éš3y;SÅCf=’f£BkÖÖVFÙ˜õÏØVrš¹¦ív¿MKàE<½nÔUBÁ‚©0 ©ûÜ\4Ewgç ú ŽÚ÷X×ÂkþôÃül´³EgoÎÎ%l‘¶&µk-A ÞíÃéw©­¼+ÆÃËó8‚„úicø#6Ž# Ræ1QiÞî ÉœCkƒ6nw>‰#\´û4\ï{|36^ ö>U€&]QÎÙ‰OŸOè4#H)?q丩zZC|½†4h£±@´(½±\ò­bû£C„´kb`u =× dLÙ9'¤ŸÐ”òK$§u×UÄ }†A+]ìŸâu&%±G˽Œ® °·¥ «9önfÓ&È@À¤~6“ó¸ŒÄ×¹Šâñ6-ŒSÍ­¥ šÞ³‹1®9=§rËEà9ÈŸÆø‚Ñß_¾iWåŽiµ&¤Œ´ƒ”–F œ ™?Mô9›ð0SÞ;ã`N¬?°~¾cýð>y9'ã—Ø“Áå¥NetE‹L²±þ™¶ÍlŒœnRkÖ`|¢£/(—é2-,¹Ä¸8 0Î Wp!o$h0øèø ¹L½O³•Z­ñíž4cŸ@ÔeŸ?Rulɸ¼Êí$„Þ!i©KÝHö\¤•Òç t±êDöïñ¦ @•ជdaPi¥,RoñÛ4ÝÂ#$ŽV¨Ës;Ÿ"N‘–]JïFâsZÂHŸ#äÖZIªD¥]D¥+ |­L’;©˜Õ é¨Dl"@ÿJO ­GùÏ—t=“íÈycéýY€ )GXzl"¯@,V`ìñ­‰£æ تո…Ô€V‰dQ4Š5t,-.4˜-çÈ0"šÌò©ö íC°%ÄŸ.8ióür#¯Ù3/¿eõ_¢\„"¸¤= ÁE=V N„¤Û4 §©E:¶¨#¬¯þ}Z³`L·ÊËi­Ý“”B6-.Úò9VZ˜Ç’‰lÛ¹­Á«—2ÅX`NàiVŠücÕÆm3Vˆjî 鈣vÐÉï΂"/‘%#8΀ êt*@ Ê?/aq-oŒ‹.kA ãDB;X^Ã{?VÄ5[Úð´Ã¾Ë’Ö€6Ó£$˜ög(¬É70¢Cб-…\ƒýÊÏ‚M;ŸáRtÂØ†`£âTCJxq]°k‡}Kº>\ÀkmÀ¬0c) …¥¦KfÀû)t^E„¦%ÈešïÖNÞÞïg „“fdÔ^0,Ñ ¢ÔãáÍF­‘CЊ`C©dM Ý}˜Þ¢Â‰ÿç0=î¥RHŽ`ùØ`“)£°R‹ÒN´‘"‚²¶(–`|^+âœÄÓiŒ ‹*/tj@-JÙ Ë7KÀIÂÊC DËÖ:@m¯*¾î«>«aÄVsvëô=]Ö3Æßbã ˜œ«v‰ðÎk Îh€0²œDça lœ`'+ÃÅâRpRqª¡mÜ'8AUëÙ«Õ—´? y‰´rYð"“—¸PÞu~Ç]R ­a—ÚæQGçe ô¡t)]¥@ÀQm#t<¤>n‚£s‰y®ÒÕš5N”htÁ®¬=NþÕ›|jÜuUKµsé€}a?k¥7¹^¿›eÓó¹tÍ7K¥ïš^Í¥Læ]N¥\“ÀÝÆbû)®'ˆ¤8"  ÕPú—m¾­|ß™–—Ñ–ÛVk@ÓÚ> Ö‚@K}ë¹RéF—£ãN(ûDQŠ>½Wû¶±TÙcXDûÂr÷®ÔT]&ɤ£VnÛ¥¬ €VNÂØÅªKFÀŸÿ‘jOÏäK뉠—Ø Åí«ñ ” QhãJµZSµ]Ú±µeW-îníZPˆC· Æ4WÅ¥êFHë®Çh½e\, LaŽ…oèÖ³Áü‡ì^‹¡ë+üF@‚;;³ó1$g%°£®pá¢ÇˆÀ} +F¨^ðB¶ÂR¿Y·L ^µ ƒAû+þî`u‡ï™¨ÔçTAµWKþXÀÇ:TmƒÎ)–=0"çêp*›ï¦Â†iêz·Ð@ÞR Q‡¼oCð±Ë)«ó`šÖ¦)fo€¼'B¼N³õ —±äø7Ë ©2m‘{·ç¸™hËFÏU:Wú=›t ¦9òuøõÜi2EóK®Ùãy0ÀÝ.NÑÄóYÁ¾žõÜÓãB«Ö^¡]ã`?v»S…ëYqÚ:u¬s¿TÈú½YõƒHDXܵ3ѨpÄÀ$îôsZ|+ŒN&¶¥hÔý$ñKšÇß|R,d¨*AçEG•¢=È2Šs‡Å°·`A- ÈàsCÍ¥[$ÑX `¹Xò+MÎùqò“c}êb=$:vÑÌ%¹h¸‚ø–± XÐI»·›®À¸…Å«xsφT$¾~(Î@‹ ‹åfo¾K5‚ [VÁlURXÛ5?ÊBÓ1þXd.i£JdNÜõÿ™qÌ ²±XÄZWY°ŒfGy'ß•™ Ý€êFæ)Ãì¥K3“˜‚¹\RD(ÎFfh6÷J€ôГ-¥KzM2?~9?^4+ü¡šŸ]œü´‡°»ŸNÄî÷'ƘZܰ@† v7'ÆK7ýùúäëCSA¥àý qê)ôzÖ `ª£®ð—º´6 ok×RJ²d™ž9S´çFr$ƒŸÜHïÜEÇØ‹ í_°Xå*÷:¯Î³Ê~ (E˜\Z‘ -"2©­5cF[/Ë"ÉäÝϯjæ5jØcä2Ð)î>éÝ©®œ‹cžN½IÌÌâZ×:NSY¸D¦ éw36²4I;5ìPbæv L—tA¾¶‚òö£Ý&³¥Ï:åL¥|oÓJÑÌi†÷Ôе89¾Nëé’fÃG¥¾äýae¡ûtt`¶ÎbÁI:4> è5 JúB\O°«­zvCZ¢¾]aI=¢{#¶²ò³4IAqÅ e€Fy€&û࿆€³ÀÅ([ÒQGÀb’i(ŒÈ~ ç‰_W‰e+;9eÉ“€¹kªæ¡Žÿ‡oº."}¹æxÁ*¸}¬ð_Å%] ¶Q}˜2À›îÙÆDº·©imdIPàìŸî"ŽõÈ/5©í ÅqI³ê§§òGÏç`H\ýjð*T:ŸeœyRÛìE'ìj{ÌŒåÔZ>Іó—;aÈœB è&jòŒPžÊ’Lyé ÌU0ÛÍ1}žZ¤tÏ74G kŠÖyù}:ž#¢›¡$S"4•uåó{6`4ç´üáx•nf),æþÌRLÇ1ÅY®p²ªÏ[ û6vÃÆ ÂÁä6•äÀŽEà§onܱÀâU@Ë(;DÝLÿ?ÜßÃÛ®ó.aä`‰.‚Ð=t´Ñ,ÀÚ¢èü£†ðpO¢¯OYÐ0 å s¤p€„-%dï\6+¬*øþ®iÞ¶¨Á×—+ct!*=hcjeœ¨v6”‚^Ù<àRÿvr6)¯ºÌ0èC ݬâBsC奯 æThØýñܙإ 2hã•ÚiLp½ á9U¸)éNDÒ ¦EŸ¼9ýo‡ŽÂtZ·za°Âöy®57çzSîä¡¿/úOÌâÕO¹ÖuRц†×{âÜIX‡Ê59M¬“ÇY†¿J3PfX;%™Ç\2Äêi ¶ÜÐ2ÌÊ=r Šœ©Lç!+Ñ-Û¸š_9vžòí1ŠÑ¥|•KµÃEöá #X× L¿Äâ°GÛÚ‹H½KÝvßï3 »•"È]‹íÃ\hYÉui1ÑöT×)É]ˆÇɳÚùÓ×*éìÄøÀȤ_´TNËq–ª‹({^ š¬¦÷ÊTNêÛ˜“²•OÜGœ’ÂlÎ%Ú$ª5ðšêe§÷™‹ñs¬ ÷Å^¶C‰™¨9Ù<àKœÅ4—È=û­:àÜÉÇ:¡W¹« “vxë׸ÜÔ}8©%Òꉭ(Iƒ,-=œÄÙ£Ïu¿ëÂçˆØ\`в›5Ö·‰,:g&GòD¡cq±@¢¾Œ5püdžÊg×LÚÂQrnnð›Žý Õƒ ‚:hA:gGDŽ/&¾É\$ KG|Es¨X)N–Ï1C‹ÜÜÿKsà±ⱊ¶±=/jÞOÅ’uÝ õbýÝLpã 1o¯àii-À7oØú¦÷dÄ|j,ئ'rk q˜ä¦¶j†<ú5%…4_Ò@ÄÇyæ_%Åå…®t!tƒçLF“æ@à2yºïSwA6Ä?ó9¤ìŸË<[Õºª!Ua]søéYç^tø?+’4’!¶ø{;¶È¸€áw‘Ì(^”!.h×[Ò5*º(å¨Ôå†EˆžŽgÊÕxϦï&–¢qi©÷Ý€U„<ÄU°8ðÐ b¼I£2¦Ì¦™h·à½^“1®ZWX#Ê&È%›¡ã \ DŸv›ï$’èÊ©sÙ±4èõ˜!-}Á¬U¢-Ñíô![ç‘Ë\m‰†mA@j¹°5Æ1·¥ìt ŽYôÏYçy[Ñô0I÷,%%߻ʊa™–cÜFĆ ËùÖÝíÅ CEGwc8AmaT†éÇmØU-¦…B¼\b«kƒ&BÊ 7¸<ß@®õ•Hи=þDtuÏê@hyEÈþÕª.J—R(ÉŠ1!†âÍ9#(teÖ»TÛÅO-.?Þý/‰8jR[O¬¤ñž±ú2—Ç NŒŒ°mîQ¿Áê=‰.T..¨®M½n/ ƒå΂èM ã~økX׳S#®¢ÞVï½h;5W…ìÐ &º"÷`§Í„  øéЄ *^ Ñé&뫬d•´Ø¼ŽÓúqÌJ©TŠn—ümZ+lÿò€Ëû.d,’&¼âè•Û⣮Çi]¦r‹è·—ð÷ÀK°q< Ô1àx‹ wV¿ÅFÊ›IØ–©~åHè„pÔ]XÛA5Ï·[³í‘•¬°EƱut7K‘M)ÀŸÌ”Ñ/šæËW§ôh-Ю•;ð ŸÛÝ@ 0˜QSÉáiÑèCt–ÚÄÛÍRbô/çaüf~|=™¥ç³”ûÅ\ º93žÄ žøþY\ *—’gTÜò«òä¸"Q€”«©RMìÕ¾9¨\ùˆidA>Aö|N™ŸÉƒRæ§”2lS¢ŒtLÏéçÇ (rÑ=abû³œt|Óe¡°ó¯¥mæƒí—Ìá‰Y8/Û2©%zÎh„W¡!9€Ð®žbÊ*[¿åPEºeU*.PØ';·QTÐdzÞwÿݸÙ¹ÿÎÎ)K&­ê]¤Í8Ÿ²‡^œi‰3LhÜdzš®SÊ’ƒéþ„/=RBêœç"]¥ëD­öEÎÏK"o°Á{97­ž:ui¾ï÷)Y@EÙ9Ü0~•âZÊ./qHß‹-¢5`B »Âo¦uéÔDÃäÚVjgè×^ œ²èЦIjð&ÄðÔ°5¢£rÊ«,õTZÕú¼ß>fîÄ!ߤÀ mÙÕË­^l4:ZTí¢¨×QRÓÝÒ·ÉRîEMÂÓý=Ôt¼ZD¹ˆjQy©Aµ3ýy¸Z4(¬ñ}@*©Å/漟o¦Ç&'c Ðw!î},ì‡Ú/Œ·Ì€v[±Ä‰Üt‹Ç¶û…&m‹šÔ[ŒÛov2a¸É6(œ#%¨ä¿‚ºZ—ƒí¡\×cïj¼ËÙœSõ±T;H?ñèâß|Ô´þ/ý™èõ4FéLövŽIÛa`*}Ÿ_âpx ¹¯7‰#äÔ`}ŸÆ.‡2 x ½„–÷Ï6Q…­_ÎQˆ·wm~‘¥Fš”EÈ‹›õí¸L:ñí@NŠ:þRÞ_IjÅÑXLÔï‚ÍëÜÈâ° ÆÖc-w2éÛÙ++šÚ Ì0j÷ª¬E@*ƒóYð&÷¿Ò¢edå¼×û#iâE}®Ä)ïÆ9÷œy·iÝTè¦~q÷×C°í™ eçãµ ÷iœ2è) Ž)ä²õÊR‹Ib²òâ#ª=|HÝj.Žl¤Å4ËĆº‰ðÑJÉáü4‘òŽ©2¢Ò„’fžKužy«Âè ñvK4Ó3ðfº²`¡ò«®Óu¤bñR§Ç÷ï(0‡r'CÙ @Eù2þu8N·ñåd.G)ÔûûùqýöEB†)ÀÇÑ ¸QÅMZ¶|…çq;-h˜òZY,Õ1ôï:¢‡ç†V„jðÜi\œ|˦gÆSca¡Èò¤Ю›KMn7 RLœçyì_ÖRð“¯.ï+ƒ÷>Ò-#{n?â lE¼Þ#Â]åFiÓÎíýX’a&(»½çÓ™Ù÷±¾˜ó|]×¥Çÿ™ÙGªô\ªV½’ ᜷µc©sû¿¦ØÃÏGöØ}AõLëi;S7—šƒg‡ù˜ÈjÖÆzÂi+} ÈÁ㧨Þ,P¬+rjkÜ B O$lˆÊ|¤kœŸ¥¼%'+ŽÏÃKÊ,pêjÏû\ï£*ÁU¼míß1¼MQšÕ5Ø:ú6öP<ì¡3a kן¥cÿ_ë‘ÿ~ŽÑÿ<-ÚÆH¢›'ÝpLÒ»i…F-†ìñò–Z /Ã÷Ó>ààöÀöœ,î H3Î¥üþûôqíD,~ f[ê­í‘bÓIp  o³Õ¥HéMs¨y¾\R‚Qm½õ =ouKÀáåÙtïM}Þo(9&$›Üøû “C$±åëx$ƯFNmW¦~> stream xœÍ=ÛvÇqïH>b_²Ð!F}¿ª†?¤c ¯ØýÀžÚ¼Ô-Ð$Ë}σ竸›oÕ¤Ë×xƒdˆm€ÿ"~]p6ï‚p9ÃÜENéfÓÈp=›W£U«-?JH³ Å__¤ûÓÂÇD-BNNùD-ÀlDW¬G)?b‡è=‘2à.µÐŽ{} ¸·†*Ø;»QŽ×|òŠk•u-Ä\%âæ‰ 7ÖMHŠó×óÑhÎc9ŽüÄ.ö=ÏÇÌÄ©ª3pöa&j?”Í|+kdÌ"à{7FGBs+äç»nYÀÇySo„Ð1ø´i?9 Þ_Ï%P(Œ$ÁáݤEÌ$ÊX?»üý‚E†ÓÁr<Ù~EL·Œ.~È»“=Ì¡áÑøuMe_³LI§ITb|:Ô4 dœ&ž¬Õd6ù¿Ö!5Âî¬ÊU⇠¸Æ)@ÛêrÙ€•JArí]ZÙ×ðq|]ØÚrH—Õƒº©]¾`º)eÌâ´½sÿ-‰%…ªü,¬VYÐk&$’ˆJt%¨’FXÙA/vFŽÖ Xa]GA"b–hS[ew K¶:_f$»ì*nPh—ßU¯IÃÚë…•¤Ñ ¦tT,BLà’IGÑ8>€Ó *#-ƒ‘ ÑŽ Hg óK&Àð•Á›ï(ͤˆùÄAN­E?üÎ ¹Öt4B'¼Ô^F…êÏxùâ³"Sûÿ,—øh”õYyûyydoŸ/EÈ ½GZ`a.Ø)F½ÿ=QU0±Jm‰aádnyAÔì?M×tüÔºèòülfƒîž ZdG#¤x• ’ã!—Ç Å– z÷-½„ë±õ}&Éù¾éñ²<~V?oÞ&„x¾¼íÝ·ëUËj3:™Ñ™¸XFgíZ~@ž¢P )ò‹CüdÞò,`¼JÃðŸ5:àï„N0‚Ôâ“púklÆ.ºp™9«°Îsâ¶z­ûoíh!»#”iDìŠ÷5BLg£ìSÑ^­Oá%)Cv'..ElÍ„¸Üÿëi#ˆÍÂ%צ+—)ËË«ñc ¬1¾¡Ï`ú3 jå@nìÿ‚ÏÊi-ê> €aô½ ¦`tFMÆPøÕ‘ÓØy¬,x®´qi3ð¬Åb+ÓÒ]€Zê»@z0•IÅ.1)xóö[§)µÞTðãp…gxéé›;ÕÖN>„ ²Àß a¹ÝÃWá^ŽŠlø-Nb&Ô×u®ˆÍM )‡@X>T;Ô~ ^þVꡆbøÕÔCí$€P¼L#¿åË„`YæZþ3EiÕÃõ±üÙÔˆ"*Q$§ —…oq¬Pî‹Àê„ :½ãIlðÙ[T_“Rè”,Ï8ƒæ \_ýŠMãSÑ"»Z\–D•*œ½:T&âpiãñƒ ãýˆZ¯Ó>£nePÐÛ¬øqg1imíFœ-à€‰¯ž•ݱ:ª”îѤ'(äxnÔ~ºGêàÀYÃ$—ƒ!×è—¸d ‡ÄphMg 즃7aI<ÔŸgd2ì»ô6XÕ[‡s!t‰÷‚'ŠÐÜ;“ó§åñË®nÊüqa¸Æg—g=3“°»_ÎÄîó3ã€íظCHO"înÎŒ—nùëõÙWÃÈ•îG®¤œà÷Ȉ1p•ØW0QiáY7ËÛ;‘ð öoÃN³öÈÆ·(–ZåLÃ]F;$÷»4Ä,#{p>¤—Öém‡ pÃ×_/+vmJ@Åà›ò¢€ãåñ‹ÂÂ[Ο¿jƦÇÿmŒÎåÎWì”WüyGR´¶®+~§ ´Xì”ßáQa¸.W9;ã’˜3—mŸ0 ¯}¸h0JP“¾~ÛS _UÎ-hØþ[Мgrœ` f\²þ¡bpÕЧ0+믙ÆO,UKí@Î×úfïúA.ûIµbùrÔVà4#¸ã2c"mvvâwÔüuòG _ê¾&NÆ·†¶0µ¼ˆ.ÎgcÇÿÔñÜe´Ú¸û¥-=Šƒ… ndð(`Áé' xU«#‹²¨îpEE4S›iËF6(‚†¸†vSÚôáQh‚’o#“J[üö…O "µªW;š0°l”‹äÑË›ãE£A—OšnÝ%áÈøÁUyüû¦ëHÂÖ˜Aöl¶ðœÜ2‹µAO`coHB-0lëjI¨…œŒØŒ3ÐOÂõZåT- IGh%!KÿÝJBzËÆ¶’ù\UjÀ%‡:ì“‹B-@*{´(LÑ"»ÿ¯ó 'âÐvÙò4&ØÐúÓñ-:PFøÑø'q¸ö0f cUåîdÄs;;F&'erÄetìÚYg§ÐR)H9p]µñy XÈ­(-ëôBÜ^ØÉnyŠtl¸å5jH q¿I‹ã!"È׆âZÖè”j705¨È¦ûv@?÷éêô.‚£vƒ5ª1LõP°³ü«‚)«$ˆ«‚¢ˆøŒbü8™^,ž”ïç­Õœ,[dW‹eÛÁY§“q.Ô­‡A›~^ ¿×w ¤ìú¿ÒA\’‡'ù6wã[«|EùÜ5%±­_ nç~Eó]Ú£’µ•8ˆÒoĵ6†ŽÇ"ï*]Pøÿ®‚迬`ÅK£õ<N´,gN´|‹{ÈÍ«E ?ý mô:CSÈO8¢£ô’S¼E®8VÙ#`Í9/7³G<æÙÄnYáMä=ä‡eDmàXpzÂlàÍ„È*’ØÑsñG8 &Z>m®ŸÑ€eEÝj”[ˆú±´©FÜ{ÌÈR ¥›B’†G á÷º På‘;`GYÌwi=”a‰“à#^?å#<á‘·:Ä[ÀêØº5è”n3z&·*ÛòÖF%p#±ãäÚ—8D`êîÞP˜£á™×ìL?kË´ÿO‹öÿey{ÙðÇÊ< ËOI4¯ôˆsËÁòSí³¼9ÞòS˜…‘f€Óq¯(í¢õŠ2Ïݦá×D®örwt˜o3ý˜ú pyàLµàZ úûâ7ic%~cgÌä„ +¾­ATd–žÙ-©Ý…¬î8‚2âüû÷öaÓ#вϊM“làJ¶ÆÿáÎÌPâ1€¸£ Y°ŠÍæþÎX72!‹;©É¥tJ¼ 7"…æx ³_Ï2߯ÓOÐZƒÒp4||”–hí·ùô ìƒc²Ñ¾Ð÷ÇEPñŽÍ™{x•š| }½gwÀÓ¿gb²N>!„vuªJÖä„Ô÷B+5©ØKæ‰ZÅoèígåq•)HoŸ—Çʳ¼=€|}މssÌNÊ(Y@Iˆ44þ%¾Â)m)"#Q#háÑMLÕ®UD¬Ž E‡UÊÌ"ózœ]Þl‰Ø~ÅÌ0…4äàJHÆž¤|€¢ÖÆ e®M"^åKÆ©M®]û0¶<0³!DͫšÒ1"8[™“‘‹tZ{þâ÷#UïmÊÌ·R×.­1¨¢ŸåÈÓ‡£c°+¹m˜ŽM´RÎ~H¢B>¶éûS´Ú@.·;”ÐÆ£ÊTf5Œì¬UYQšñi¤œóQš24XòOÞÕÀ—•‹U%h óåÄ>‚8sø pC‡¬6xŒÜ«6À?¶î—N'•Ã.›Î¨Uæ‹:Øèæº9xì@/‹!†¼õÔU"z%[‹LE…š^áè­ÙäP*R•Û¨ÿM}=4aÓov³øUP#ÿU¯à$þá¤Óâ7l&Ð{Û‰\=AK‚·ÙpÕÐõÛ½÷®ô € ÎlþTÂvu}uÕ¢$Õµ²´Nh¤`4̼ӈ)IËcW®üâ!IZpRqr<2ÓŠ6ñ¾<Þ´›Rk¥ápAOˆ†¦© öþpéл9K«MÄL.‹ë~ÜŒUP. çH¹øØ´‰»8¢´Âmʱ±||j·Ž uÛdP†>pƒ\Ÿݵmú‡õ¥a«‡Í®;+bdÆËû/5tظS•YüÍ|ÆZ÷T¼ŽÚ¼™PžËEOÍÊn¸ðÌŒãŸ,`šâOlSräl!&P>$r!Q—ÕmÁE'yniJ‡•5rúéÖ+6…²•ˆ®Eá'o:®øU bÄ!¨ÝD¤¯ªÜÓ-L{¸º…ßGҋ©ß,ÜwöâÒ[6àûò8õÞvƒPU©ß¥Ýj¸ØbVº ÎVc±Íð‡ùøJà=jȰȷ¼²X€"£©ï}ùÒ§‹-æ°ZŽâ#4ernµq  ¹UŸ¦U ‡é6²ä( :)ÂÍŠÙžC°cÉ Ú`|h],|Yv?$_•LÖSªVÖ¤«‡ª¶4‡2gðW`—¹×Æk%†Yv|EÐà(U•õŠõ¬<$£±Î¡ÔäTpOã©;ÙŠ6n '¼ˆ(;ŠƒS•IÉMG¤:‡FMû5®t­ö°ôÌä_‰˜îƼ‘8q0ÃÞÄwa¡båŸM¯17tæ¤Yi[Á0Ç#¨Nè€å}ý£<¾ÜT!•@¶Ç¹#ájU?Ì]—ìAI£ÔØ·«M »G`gR—Ø(ëŒõMáêwíÛQ€¡=Âr¡³¤65uâ³»aý’~‡9ÊÛºIÚQ: £ŽìAÑmäµmMÔ¦âvt'X©‡?WŒ‹Ô¶~ø7rø‡ƒNÙcèErÚT‹ô¹ÅÍ _qØA–Ï(Ç)©'iž)¾€õ ¶ç1« ¼7YåUTÔk•3³ÐÛÒùVÅd¼aoÃë”?Vü]4ÛM]1+\Z?oSBŠåt³4ê¯#qz3ÁQ ³ãºtl¯U.3ör´£/6¢j!µÍÀ²èGeìÖ-¤D ¡“r8=[2KTñ­Ëj2§¦¼{[Y8-€¬š{´€ž nY)ŸR÷¾ÏÃröè`Vm¸Pf* ‡Qbl'±š¾È3Ю҄ÞZÍdXv›Ý!q>ÜŠ£ÂÀ,ÏéÉÍçNÇ)õ›mµìϯ>žo9¨oÿ:Wã‘N!*º1Ó¿È¡ä«õ(篩Ö+;ØèF#åcNßÒAî8_%€y±Õm´UY°¿+þ¶èWß”Çw=­ Z=6¸×›jYó-¥Ív(‹ÖuÿgEyþ= äÆwS°4ØÎQ©­êƬû—åñç2 (t3†=!$!ɨ˜tU‡œó.e‹°ÊžÂט*ÒJ„:§dãsTðK´>-°æ1¯šüç¯r¼n¿¥3g>?œüª$ :®ííÙ<•>í#|in‘¼Ü«Žî÷2ü¹÷€àUI3 ¬’‘x—•NfKjá°ŠôÕ>äÔŸ[µiÿ+_²Ò.vbAôšØŽa“õ'‡‚ð§7Qf#"5¸~²£Æ ¢;H¡Ø)zi—¹R$•ʧÜ~ý!-·Êç  ¼pÚÇ?èËS£ºdþá©ãÈ“ŽáãÒ§¤&ÈÎ]F}È]²êµÚ7“>{&L-Î’¦ˆI aHEŒ®r†Wõùó¬w)Ílɧ@;j܆ï %·ÍGÙRé+fCWà}[õŸLïJÅYkÁ$û¾bzæ8½‹{sº‰XUìo‰•à C•8ç–nGßüÀkWý׳ ,hÿ{JÐ.´m1ÍÌj\pÒÎ'˜H·!=˜‘5°YìyGÑ"Æü}ËyÈ{6ͼœÞ¤Lg´sçïaºgާÝòÑ”º`‚ u'*Îf+€"0hpÚ^ ïlÀ‘0õ[ŸõLÀ_»2ƒ6ÒÄ{ž>V&l£þÑ/Ó€¨†Ÿ •b–#pµ©MI¯¿3q¼ h™|š›LÖÀ%W0ßÐë­s;8Ú‡tmQ×ߘf ²=l¿Øúù°õ_å=eƒ®ÕMá m–+³•1Ó~ö6Ÿt˜ÜöÑ@’@£‚øúF(ã6¾’=âLh66³p°´É•ñ ÛuçE©{Šg—nÅ®ýßpZÜ“ £È^†¹0¥cQ²E/»:­e¤Pží¤¢ÞÝÍZ°@Ë›ã³a`†Éœã soYfL¾-/Ê–Y$ø“òÈŠ^—Çëò³Òÿ¨›€%±ý{ÃC£Ÿ{ P¡’y¤jŽo*èx8°SMVŸhÀj²Å[P§·ß—Ǩé-«Ãº.®Ê[UaÒ ê€¬ êŒ úBq/Ævs·»×Ãàºùô:NÛ²l©!Zîä¯gÿüÏ´yendstream endobj 325 0 obj 7037 endobj 329 0 obj <> stream xœÅ=É’·•>÷y> bNÕ–:ûâ°–g,ÛaB£Ž˜ÉÉn5¥ ›7Yþz¿d[VVuµ:D#±¼}êÇ›øŽáóÿ_¾¹ø¯ÿ³»»÷lwwñãÜÍÿ{ùf÷Å5 ~ç'o„Q»ëo/â—|Ç9ŸÌÎ 91+w×o.žìÝ%›”–R«ýtyÅ&ëµ`v/FÝWœkø“Ù‰ÝÂ:.ýþ¶¥qŽïŸc“;g¼Üÿ€mã ×vÿêòJ:9Y˜ä[ìV\x±›—!s¼ “åtBÛr-ý³ë¿Á!9/é&ï˜ß]ÿýâú·Oößàhmµsó2RZå÷I7,É'f´÷û—aIí•Ûß^^ «B~—¿›Ç*kaO©÷2Û+Ò~s˜I8CG“9Ò"jC¾» Û0Ì2ƒsÜ­’ÖÍÛ‹ýd×ߘIm…Ý¿€ݤTÅ,7q!î$ŒvRJºýϱSp °fƒ¥+W'Û¾” ð1L2GúmœÏ•À¹!ß}vª$B• ¡çŠ«k'´^– 0¡cÂÆíĸ߿&gŸáà8€j›qÂEŠQšy& pI+a&+Íþ6#˜”Þ¼½DÆL@¼À;×7À+-¦âné’0E‰†îp#À3pGøÃ™sHo¹B ´äôL°aÀ¼8²ÖóÜ;¯í`™å¼ˆ<ìÕrÚ+.&­5‡.‰6íÇø1Ð)xŠtð)ÒJd®@ ò)‘êm ÏŠ !D± ±`ˆï~r鈤?…¦´í¿Ê½×ÝIM\ã®/¾¾PÓ»Ÿ@ y!¸`“W;㹤߽-&©SÏë‹o†²ºÜï"«a†I¨0礥ÒúóŽ>æ&ò0W‚K9‹ 2ù€±Fˆ±À30S+¼˜gÊ’—©˜@©£ÜÄü`†‚8Al7jdnœ€yÇ Âø&3zòRÓÙ*â¦8!j`œZ¹ÿ)s9²“ò¼ Õû¸c\ögÜWÜ›bÄݪÁ£tˆiÏó‡6özg)SÞ¦Ìãy€ËM]D(Ï(º˜eLO=ïBÃ>&ç‚ç5‹SÁÑ¡-ŸyPFæ•RMÆâª—óµ»T̈EE(ou!®i;⬊£ 1i™;\FO8õ‘z‹jÚOú»<¤'G€Ã¥5b1/^d1ñžŠ³Ê­ f:!Y~R¥>#ZPgà ðn“³‘PÏ{Z·ÑôÔyXh‰ÙêT…™‘Ú•­µL}‚yS%o0"A¾÷¸€»5‘¥À¨«ÝË V¬ØHB(oPPµ‘ìÛyó2*¡03¸1#‘µzTP—þx©”*|{Áè„piÛ1ˆ‚n«Ä/Š\íõ–Þ'JíàDRš='²sþÆéŒômá€z¡ïW Œ]©0‰7KI=Ò«ñ H}Z7Ú®àë‰BˆŠÁÚãÕø‡®ñöâÍðǬZ“(:µÁ_aŸL"Õ×Ý”e©š~^Xk˶T› ¬ct=ktý2Mœ¥ ³}­ ƒ7K4h ºzqËk4HhK‘\ÿ>õÎfó=3h†^Wüs&`®öôBX[^Fš>’•^O¯âªZ‹ÍÞ7ÐuëXÕ ‡q+ð_[ìäûÚ ûULx8¯²uz%+" Ñ’^1Y0ÛŒ;Œ“å(ø©oÔºkKˆ—}tNÞÄ)­h]Þ˜*û ²¦òBôYS8ø+Sb͈]÷ø¬)0§âwÉ[ŸCMÁ0² ù¸p=r CÌŽ9†‡#ú +ø×cLÓ/èdʪÁ”“‚“¤&ÆÑ,õn3ØBÝ°Ž ËÑÑ•°NC÷MX'4_WtoME÷Ò&è?poŽ!uJ6.8'P6Hëýï뫯m!åòáÓ}†G`,ƒÉ.JÔçz *tÚâXŸÕg)7ç&£œKg! Ö¦[Ü‘FSO̼áæÌd¸H›{zIHéóuc„–b\ßé}Þ)¬#š¹ýIµkíèÒŠƒGÁ vŠQÂÞ>°.çÑÏÂÌVD9P¬Á¿¹Ä©¿‰È‚.µY8õ ‚Ð|—›ºÍçF/rï“jŸ À¸îÒÔðʇi匫B±µûæ-Hvµê†Á¦ø0áÛÏ6ÓË$ ‘*cÖ›`ˆ>Dc2ŒÛjÙDbrödi­¸i]˜@U²O è0ôÎêÀ Ê4ï‚rÝŸŽ[¹oð꬜¾Š¸áf*las)LìЖï"ÉèIh·K˜šb,&&B™ÐZè­õ8LTG• îú‚^8- R‘hT?¤ ªÎË:òtLL÷Çô³!Ùbš ! ñYƒ? ;Íõ*[>Døƒw\t¿TJc^"Ø!NR5N¹¦ÃAa’„_“þ¥Uæìm!)"f¼¬ jºÖ\…"DÉ! zÃâÚߢùéç8‰µKÚN˜ÔgJ6x»h>Ì ½ÂЉÞ¢—ަt¯¼ªÉ®Tº‹ÿZ­¹ ÛÒU*K€l•SrIåÙpj-퉠FK`u‚’jp—§|“uÂ9Üi¶R&W1U(?Ìõ¿ÆÝ[?ËvÞà8)[‰FÓ¶é†Ù¨ÑÜäa-¨êÄ2‹5ü]KƒM›¦úFi£~aåJî;=nD®C6ñsôº¢›*è„à ‚/«æRóó<]?Á‡‰S‚E§F±(]®À“€Ý0nS•G?üWßaíšz@‰Ù{ôȘÃÚ$Ø~X“`¤#¦ÒÆþšö”zrÊË離Fr}-XÚ"šúƾ\:)Wt]ëÖz3Yå*F~ì„4RŠR4ä*À3õ@n„ÍPäiŒ§«QU|S²F¬#-RɶX¹ÙŸDéÊ0LóQÕѱ‘IÖ¤þòfÎÏ ^á'î¤LÛ.á]Áž )àÃýÓ§}{º(ª?–xHÐcx·¢[à‚'°Ãz­º:LöŸó ̯—B)‡µS]P†~,<4´ƒ„J$´„zÀ· (¯RM#¸· uÖ D×sSŠ‘Gä)^‡ t}\Y›Þ÷fÖÔlðñZÇzKÀ´Eý©ø.Í׉–(ŽþƒÑÇ»PËCêZP'åvŽ ÖÔ­8Ûûîr£ŒœÉ#ݸ•3û|¤?à†Æù’*ÃG²Ïsó}n’,ʧjl<ÓëCš’ìø ÂjdVr4i+ïíÜv•ŠØŸ„¶–˜ÁP¥ý†t$¸ÎÆvÍZ:24y%Ç]™d×IK)Øi ëCpþP‚—+Ð-•=b~Œ q*@‰œ;¿{¨˜Ph,(ó[JòåŽ <Ï^êôUê¡û„ó5›Ú0¯ukðù–¨JÍ‹ÚÖ`U„xŠƒm ’ãè¤Z×TT1á”38<˜‹:˜a?o-@gÃÇ”‘ß&¢A Q6²ñh°w5ăCj ø#jl; *êCpS‚ÈpÕ¬4ºŒ&ã`e†µkÔò›Ã^Zñ¤¤Û&ê†f«\aXSÏ•=ár[ÔL¾šÛÒΉCÁ‡þBSù„5µ¢Ž­œ¡òéñ¯­üJµ“„ç¥D;·©GïBY™ëë{È÷‡Ñ¼ 5ÎWC “¦wJá6âë@k¬Ž/#bƒë‚U"ºX~ä;R•[¸{dFr;mN¾‰ÁÓKÂ^9¤»Iy¬ Dl®¿ï”TH‚yG]Õõ¸åHe‹qtᜯlò„t0ÕÞýô&ó"×ùüæ(KäLfÒjÀy¥Ò,² Î3OѬ ½31Ê—ÞEѪ[ÙR_'šcÎѽtm©Ï@ÓAS}OÂ4ä¨úæ`©ûèÝŒ2Wâ7µA½„}S«<йlîKÅ¥9U»x|ÄDíÆâªvá„ í’šQ.«µˆÏ¨hLT@´Z;s&Õqî8N«:X0ë;³ ÞA=RsÌ—°b$Fi™ÄäíJʱ~šÁòÉ®{3Òë´áéÎŒ´rVmsfšàæ'93‡ò¤W¾?Bíõ}à°Cu¼º¨ú²Ü¨}Ú*ăñ·¶A¿þ»=HY>¸ã÷Ú3@=ôk9ÜÅò ’W$s€ñò"ö€l©d®\íe½ ‘ÿ„šEÄÀFða¸]ªIï Á&Ox#\Y¦¼GµÞ‘ê%#å:.ÍX,ÃMT_çþMçí‹+-xQò*° dŠâÎE*lºVÖ¿À-½Šã"‰ÿQ«1¶öªZÊd<¸†ãbjïôxAÉýÁU1 ÃBËî[1ó3zi4åÄâjSØl ÷¤™ÕÉôÚ!›®t®¢øèùÇ`14(›G”àˆÂ¬_êB(”}]l©«tUÅ3ô`rURöò¨šòEÝŸ"ÀЉú” 3Èb¬=K«édÖâ©àèyQ':…H5Úo—GlK;w I÷òþªàẺpÏ ltä~T¡š‡\ÏàÔÑ»­+Ày•¹Z rÄ„³uj9ßdBÞÄÀú^‘hwB¨#8r«5æ`V¥tî¹áy޹ç†l§±ƒÎ h~‰[\¿O„«; Y¢åîÜ.¯ 4¸ƒЮ&nUaïзv +¾¬¿´¹Ñ˜wÔ’8ÌRo³&É„ O1¯Éðx“µƒ^».$…˜0®ºÊ+ž¯Pbb0øúÒa†K…ü® mÅUé嵃ŒR§Ç7~TyW]h£ÕYBý݇.P-êÓ¯NK¡arµb0‡8¾Õ`ŽðCƒ§¦.iŽŸ¹ZØ% Pó¿}?Ø$¿=$ùØÈœY`%±n†žö†À†XꓸûüÜQ…O%wãKÖr›ãw´ÂÙ+=óU¡°*ˆåÀrñua]1ÛÁVöÌ ”"n$T²FW³ \ gáÅô˜YÖhñŠÞ %XÇ–<àw\èÂ4¦è¡¶ÝóÆû&a[R B¼t¡Nh¼©+¸úên¦0w3åoÇϺAeŽÁ¯ê§»jyõUæíÍ t Ÿ¬I%ðyxh@mF¥žãšD+F„9õüAíï¹ù¶ë¼Þäf)ë,ÅFêÔp|P%)ˆn DÿšîdÉëßäÿ”›_åæuwÀ_ ¿7þ„Ø^¨>2”åæHˆ?p‰/lµžQ@lÚ:²õCn6:%ô~ÌÍZ§49fjXÏØÅÌ F¼Ô‘¡gø£y‰{lX¬0Éü^, A·ÌóÑï=T¦¡ÒàÚaåÕF…Öt®ŠcãÉjóûˆ²$Ž7by ù õä8’AUòA£ð©çù°aBœ_ž$ºÞVä`â([Hˆ¥”Ó[_(håAò«ŠP5C4óMtdѱ?¼o‚öÆ[€ÚƒÎ™íQ©57Ó¾¾ø7±a!åendstream endobj 330 0 obj 5728 endobj 334 0 obj <> stream xœÝ]ËŽ%¹qÝ×WܪÆSi¾ÚY€mÀ Œª-Zô£¦Çƒº=R÷¨åñ×;‚ÏÈ$“̺u¡Ec“7êäá É`f’ì¿ØÂO ÿKÿ¾ù×?ÙÓÇ/7»áƙś“fŒ-Fœ„ÒîÄ-ã‹”§ÏO§?Ÿ>݈…såùé7åô§ÿ¼‘ZÀmò¤½5‹µ§óôÊ/^Ëó4Þ,\žŒäzá,ŠIµhA,ù.£[¼ËÔÚ.VpÎ LFËE«.÷ö®çFc÷®¦ü¶¬‡FwÏÛ‡T9Ÿ?b­Æëô¿÷çÓ¡ÊŠÅkÅéñÇ› ~‚, J”‹þôx¾¹}÷öËÓ×·Ïw?ßüûãÍ7oNjÂ;yâb1”þ¥\}¸LèEê“áL.Æœ¨õÒÅÿƒºÏO Op’¡‚¸s‹@'¶·¡ÕVP徊RLk¼Ö*D•rr¹¡<ÅC-šÍ-+–„È7TÄó ,Î/îò:¶DÅ™Y”(–çj‘Ò¡sؽ ¤’f,‘¦@~ºùówýÆ/Œö‹: ͉y¬£bÆ£<- µ · Ý>nÕ{tœl\úñ»žC×b?0é$Ä…“ˆI§¡-K±b)ìÒ)µpK$ž#!ÓVC¢!ËåÙ"-¡µ\²­¼s×…ÖÍÖ©~ЮÇ0lÚñ0äÕ°iï§hز¥–§±2Õ”yŽ„ CúkزE¿pOKh-…m#ïÜu¡u³uj'lWã?6)æ<6©ôÂ4 [¶Ôò¤40–SM™çPØ`°`ë°%‹RnaŠ–ÐZ. ÛFÞ¹ëBëfëÔNØ®Æ0lÌ*„Hؘç1=–°eK-9±¬ZR¦95) U­¢–- fRΓÃE1Ûˆ;÷ô·.¶í„ìZôÇ"&œ`‹¦á¤]”%+–Âwù…q¢©ð ™€6ˆE Y¶Àä §Ã¤„ÖrIжòÎ]:n6Nõ£v=þƒa“0ö–†MByиIز¥–—{FÕ”yŽ„CZ«°e‹ sèU ­å’°mä».´n¶Ní„íjüWxRf‘"}úááÉŽ£pt¶J0mâš‚j*š‚jMA¤y ]›‚€È2˜€‰‰¢)‰`î^Ä ‰f rÚëŒh "¯5Ì”&u4=Àcœbá¥ð@Ð4Ɖ_S Ðè‹vìÕƒ4Ð…ŸÈ™‚ð ‹uñ gD4‘‚ž¨fDSi| ä'U4‘‘øYd¢h " =Q̈¦ rð0æÜĵ)‰ '*;Q4‘‡žÈfDSP}Îw×)ˆ1xl€®=Éâû(ò@AûOû(’'TSIGcª9ŠäÚ1ÕE²í¸Úç(’&Ǫæ(’(Ǫæ(’*Ǫæ(’,'TSI—cª9Š$Ìq]ÍQ5× EÍA5÷މ¦ š6‡¾ÍA$qŽ%ÍQ$uŽ©æ(’<ÇTsIŸãªš£H«š£H SÍQ$‰Žœ£H«š£H"SÍQ$z©°ÜIÜG‘ HAûpE2à„jŠ"ikL5G‘´5®«9Šä屪9ŠdÀ1Õuð»ÓPSŽ~·`Ö,¼®«x®–ú»E_Êgž#ß-òÝõ»Eå»à›Ä¦èsW^ëB+xç›ÄÕø†„Ã¥Â7VÀ©Byœ»EÃs1Xîñsøsí†ÆéEDC$)Q<ÒpàÌ…Y¬•-«ŽØ/ÒFϹ'¹uªña'DWb¨oǤ‡Øjù`¶éáqå0‡ÉŸ=ÊÂÁôû=~ÙW¸ £"ðÉE×ûÓÏTÞ-Ðd`NZìumbüwD P4'‚ïãLà[tì§0Q€¿*I=Ë–¤ C­|žrV× \Á WZ.®äŸÕµbIÊ2AV^ÖŠײˆŒ(ªÃÆ‹´oÔµ¶\NZ*{&Ép …¬pœ¿VÖŵñ÷{\ØäpÍZAhãAÊïXÞ‘-0¨úS%€¬ç)"þÆêÈ"2"‹Œ/bؾQ×Bؼ‹àeÍó™XðãÜç­Ä)¹ÁÔ”—UÒñ7ìáJ‚€|caÈ¿cxG¶@YòTråä"jõe‘E&‚µ1lߨk4lš,¹Ï¯âÅ·<·¬‹Ôãïê[EDå•!ÿŽeßpšÀ‰s “o-#ÿ&ÎDò¦0¬ýXîÛs.„.õkâ]±$mZ³ðî!k/{ŠwžñÓ`F(xdÀ©lf(¿‹wÉR´%†¢=•A¼K**"G…aíG Ý7ëÜOaürœäïb‰éW1H™®Î©Ê^‘’¿ƒ^·–üÛLÊßùgÍßųo!HÙ¹nGÉù»ˆ(ˆ¬:3¬½ûV];´„LJÓû/>t€ü”Õ<Ð2¬8ÿ…têlXÞþÀ!ý2˜ÝÞˆËîa¾­Ùžî&{\ŽVþ¤ sxʺWÐÞsõOa“ÁÌ㾌tÿЮH—åi€ë‚ã¢3]ÿ”W¡Ý›E*¥åö/úžÐ[(7»õGüý»›ûðÄ¥Ô‰*—µX»)6þ‰3è™Êœ2„ü%) ‚¼¨åf…±¼jO\¢l~*Q0r ,?,Ís®:×û>W­<Õ­fT(8Œ@÷Ð.ñ“bß@‰D¹ACyü¯|·0£ $¸˜ ÷ÔùP–†Ñ†[êVcÝ*èÔ°€1Ñ]˜sx´ OY+«»tE¡…»Ãû#S#UZññ ˆ½·0 2n€¿\J¸ÄD§(+V^/íú¶„Õ]¬è’‰.)Øv±¦ËKJÓëË *„§t V#C–p>~BÚá‡K)Ðìá’šÕ ­… L%LÒò‰‹rV_„ßñ[ÚV¢Ü½by·º¢“÷ÙK²œõMgK©Ö—mèÕ6ž> t ÚWlYåôCxë´»nŠŸ # óÓ…¿D =Y 9 Gí7·ÿqwñ•^óÛÿ¹»g ¾©ööãƒçX 2oÿŽfmáKÜ~F4ƒé·¿}‚úö8(ð²€m½ü=ô}ùäí¡x[g¸d`¾¿È3ŠN­=Õ”t€'‰ ”8$ü¼ý)ÊsÎÐ?ćÈl[yþ+^Ã*µºý!ÌzD}Oâ„Öa0 2N¸Û÷Án˜e†Öe§n¦’˜‡&K1¿¬ôF/äí»;y]Iwû[ä`Þql&¸Ì›[À\ÛÜñB]r®a…)„Ò·ï )8 tÄCFSP6@¼ÕЙA_1G„Ô^aÅÂ^0 _·4˜†2ex.ým2¬t‰5üöNÀ#Œ¦^•zwjÕúR]+èr¹Â¤¿RTü„Fr¯õÁ¸—K™_jƒé4À@BÚTºSý)`@ÃDìý&Ê0•º‡$«µæÑç'Rm5¤ùDÁˆ¶†°Q“ÊJ5Æßî”#Œ¼]îî½€ÉTÕ‡Èx+øªªÎxg^@»¹‡KíìJ)à ŠQ cêö@&˜„‡·\¿ŽC]Ó†ú)„6ÚO‘Å û5´Téü^‰{ ŸF‰Þšz.wT¨O˜X3þ²Â)ä“|ëVq÷ÃŽëÙ¥¹~w¯qf¤k@`ô'=ý9fMxjVªtÞ±À@Br÷ï„YR'{~§±,‡™ ~&q&=#j7^YS[«^U^EÇΤ‡Î€C@ð …Ãv[¶ôÄ(€'W*ð‹Q¥Âäoñ»]ç)´á/+< ê^9l HaŒ]¥"-R4m4@Ä%÷$r˜€Ô«?]h2ûGLï]/º[ùTg¨/žo¢ó®÷½-è_hM„öûjLèn@ú‚Átî %®êASá›`HÜd¼ßK&›FÊHg< º3Äóžk)=•.öT3KÊ&Ñßu6yQ~è„ÐÙéðô%šâ48œ‡‘²ß×ÞA;Í÷µœ8«Ù¾ ’*Gð+¦*锯þˆ—Þ„)e±þZ­äòm½|W.{s‰¯¥XyäèÖ¢~ÿ­àɪ‘Ðÿ¯? õœ…H.¤[{do½U‚CS .~깘jf×[0/ÞþËÝ=Ì8s:âþ7yr»ž@œ=ùT=ùpÕ¸ýµ›×IGK˜®zbˆ1®¯qƒ4µuUAÔa·òԊЗËåçzùk÷òm­Šwź3PÒY–:!Gx؃Ç<¨|m'~å·'x,Ð'œ½/ÒœèùCš.àÖ†%BÛðE ß~XÇËÿë2!­V '6\ÙÃŘ(¬UänH$Ó‹c”@·ÆÉ¾íê)Þ3Áa2³áÚy‚I…Hö}@S\ß§)žïC²ãDö{ å@s¹‘Æ|¹O^a% ~·…¶è}±< ÌU<óÉ*¬maLX óLx2†®ÂÑͱ Bƒ-péÚ¹Zœ2øõ‚ÐZ Qâú£çc†þ°wî:Ð:Ùº”嬺ý±˜)˜»Ã“7‰™ÂV 9‰YµdvÅ`>á4ÑTyæ1ÃSŒ¥1ˇ_,- µ\³­¸s×ÖÉÖ¥nÌ®G°ŸÁx ÅH?S‡F_ûY±”6¢ä%OÛQá™Ç H€tJb–-Üà’ÐZ.égqç®­“­Ký~v5úc1z¨¦1ÚἚĬZ2;d"{zÖTyæ1Ãõ–0å'1Ë‹ˆ£´– b¶wî:Ð:ÙºÔÙõèÆ Ï54Ÿ…³O8ÍgÕRʃé>.}&š Ï4fÜ»°B¹Æ¬X,<Ê9E h-—Äl#îÜu ãdãR?fW£?3î\8æ¤ÆŒ{¾QטUKfç·åÆUSå™Ç,ß\cVè^mÁ瞸Ž­Ün<®G0WyiB´ñÄ?Oïä>°'Ë3± W8ØÊCÁøk°X‹ OÆÌç„ ÐtJ( ¾“ ü­%Íý_”ª6ÚÎ]ý­­GýTu5úƒSB¬7¦IÈŒª˜ÑkȪ%³+a‰lUS噇,OKȲW4 Iù[Ë!Ûj;wõ·>¶õg„W£?ú䕞j/ËOµ—Ki"ùÉ¢6£Â3Yžÿ•eLui)k¹¤—m´»ú[[v¼®Etr‘’^ YIz%dÕ’ÙKò,š*϶íÌ-®E°—1ÏÂT¬ö2<°­rY±”&‚çªÕ`]x¦!+³¿²bPJÅ¡ k¹¤—m´»ú[[ú½ìjô{™âa[1éeÒ[ŒH/+–ÒDð´F·jF…g²<Ÿ*!Ëe€•Ò7†KúØFÙ¹§¾ãaëO¿]þG n)¹H¬\´gâivù0ÀÇŸ5¬²Kë?óÙðÜ[ˆ3Öçþ…µ{fsvàúˆ'î`ÚÎÌà]1TÕôU1\'=x¡ŒLsTÚ¢,ÄXÓ”6(ßqçýɳ7ü¸ñXŽ^ºçÝÉCPØœìp3äDÒ•¶Û‰¤&‚!¦•4G…C08.ÎKš‚ÒjÖ– ÒlÖ–¦ tÆ4pSP:lB޾åÃ&† pØ„ÄM#cIPáH… bB5G¥s+ôÄ»&YÁfÍò*œYaq²0–4¥+ĬY@…+ þ;cMSP:¯b*i GL0Ü’4aš£Ò?·Á'-|ÂÙCúÅÎZøÉ){ŸiJÙÿ|X2á€fŠ!Ér÷+$Í•£¯¯)yx¦’ßFµ3Ãì6”3‘¤4$š‚j’ù5¼6b™aHV:5‘œ6Ò3ÃÔŒ6”3ÃÜ1♃Hb¸5Å´8Ô3ÕL6’3<6T3‘,6’3Ã6Ô3‘ 6Ò3ÃÔü5”3Ãì5䙂Hî¸5ÅÌ5Ò3‘%8éƒK?@½à¬àÍ#©µ‹ÃWƒž&Nr¶íaÁ%í ûO’» Ëu:\Æ©W:;ç8—¬:®Ð9êr¡¸JÞøu…öÏÓ‘Q…ÎAë 'ë »ÖÙ?½=&ôa@]®oÇ·h4ô½ÍS˜aNA¯Ð‰ë×]ItºRž±+t º\'nss›®Ô‰|éÍßY ZUílxóúkY\ØŽwë:"óØH´sí)èõã'‘Ù­Ì<ä uNA¯–ˆÎî?-GœAЧ˜×JTe¯«çáfT›sÐë‡$õ^mæÑfT›3Ìë$¢Rö†ø4Ö +s†yýpDëR’¼>gqíÂ'麌ã' ºT¦ZÊ8ޝýér‘Ês`© —x¼]*“,;±§´–K–nÄ»´N¶.õ¿g]þèÒÏ´$±~‚ÌKë'Èb)ßÏòÒÆú­ðøž•"T¿g%ƒÂC WKK[Ë%Ÿ 7ÚÎ]ývV~^‹þõYZã¿4©ã¦ù|h€e×¾ð夰Új5Õªñ½:¢`%¼¼ZŪ´ƒ‰Çà?5X¶ŽÊŠ´)ötõËÂè=œÞ6­…C(µ:ÝkµäS;x=²¤ì¬+ [^â7\* Ń‚i…VNò®à¾U¾ òyâ—;Le·ÎËÀ­_¤ð¯?–·Z!é± n},ƒ„®fäí¿Õ½ãtÃäÏ¡@ÅŒpí@º.l¤;¤)ä7bËíjsÝšEdÿìN£,Þñ76g¹Ýìí ÛoÛן¢BÃÔJáø€Š nšÎ,‚w¨ˆ4‹us@ tL7²ñßlô© (îÍ š@¬¸}Oc)›øVgt@zqÜÜð{ŽŒt«¬tË,Ýèþs?ùz‡mؾÀ@j½Ùâ}x¿lt0î—U¶Ù/»Ù»/…\˜·½¢:ç3H!ì}‡öKHŠÎôv<6ëbÉдÖõ‡;”Ä„þÍBÁX³*zg÷qow#07äe õK¶¤^¸‘Ó‰RÚe{O9.ÄþÏÛ{Ú—¼R±5¨f€«Ûl§¿póp8•‹ÙK"µÝ<uÓj×mÞ,ƒCht¸"”ß>†yeV[Ûéèð%6xî5=(å™ôpzýKhò0ÓNƒM &ÇK„¾,á±jrsxÄ$ÅšWÞj ¯ ~‡v€àéÔ¼?8tÏÚ;äcdïd˜p‚£”kó©/…f™Í¹"pµ˜ç•î9ßgyjÍýR6žjÅy·9ÍK{μÇ,ã~̤¸e­Ï¾x›Ò ƒÇù²+ÿSÂr½Êñ¤aìúH–ZÚל³žRP¤¢í™¦7rJP‘&uïЛ§Ñ§’–ÚãBÁ~ð„rïqå¨H=DWµ¦\’yèÿÝ-êendstream endobj 335 0 obj 5883 endobj 340 0 obj <> stream xœÍ=ÉrGr>#|ô |l¢§öÅö<Ž‘—ð3B„¤$Qš!HŠ (Ñ_ï̬­_¿€1¡ƒ:ŠõjÉ}-üt.&y.ð¿ùÿ¯ïÎ~óGþæþLœ¿9ûéLÒ?žÏÿ{}wþ»k˜ åyœ¢SΜ_–~)Ï¥”“;÷JOÂëó뻳ço.aaŒõé3º .^æÑùó‡<á›úgôy›'ÜæÑyøÅå:þÝõÀAeqP'&­<œõúÎöÃ啘¬·a>‘ÑÚ›xqy¥‚˜‚öŸp†±" }ñ> [å.^áçdƒ pŽ+åã䄺xM“ðÂñåÞâ°ÖÖ+¿|éé—ëô\PMF©‹¿f‡úxy%'á´5x(1yw x*ÜÓFsñ#[ü."'+ñ¬ëöó6FÜ—ÖFËb÷釆ë ãÕ”¹øž¶1ÂÁîlA¾ÈížrãÛ´–çV)~XpÙò»C d\Z×pZ—cKüÌ–à8ãÓç9AkͱÀu‰¦¬¬³ I¥#Iãr£×ü›À:YkÊÝd¤ÁVI‡‚9B-»[øÇ%ãJK;…¨Î¯¤š¬q2çXH ­£/ ^!È?y«·ð'˜¼Œœ°8]ß”³9âpqm.>’µ÷=Äæ âge;¾Kç¤ðÑïÓ&ÚÃ$ZÎ`”ôQ_ã¬á 0º-nÀ¡ÀioÙRo‚•S¾ýzZ]À5Ñ©e=ùržkàd’QÇÃi Ÿ›뺒eÆ D.w0ì²÷ûBFvÙŒ ä& 0M´'¢qË­éœÎ__.œðÂZÙ܃؀óã|änŽ,'&6°vfFf# Ïx)|S¸¬=y@@%kµ6¤#îà”¤D‰R>ÞÊc<Ë—y K¾%_$!ÝDo/þ|iÍdµ œZ9óŸMy9‹4SÔ1ÌP1>Aåú2hP‡V‘H‚ŵ(ô '>TPVO‰âðË,’¸!å_ÒP¹‡™~&8.¦üJk»`‰¢”Çp•(ઌNzªÕè@F÷é@^´ú‰ëܺNÖDeöXÐ8N-ìñ¹¶Nè“Ì£$ ‚u”}¾ÌŸ¯òçóüù9¯P¯Û,ö®»;ÃU•ùó»õ³g5E79e©ã40ré „Œ?¬wù 74 ¶¤œïGŸ/ó„Wyôyþüœ?oóçÇîbïòç«ÞÜY¢€I,SJ”«l~6`Ÿ/VìSÍZh…[*gˆXêOÎVL‚0…ǬäÚºø›y{7P2cÒÒÜÛ™¢Z[•Ë–õ›ÏáÖQ%¶ñ\FøÊ ÀbÂX¶#åè°Jf®¾¸r{Àî+.Áç|I%ÌÕ$WůØ/¯Ò¦ÖªbS†,f€¾Dåhɰ ih’VÆŽ†Þ„Ç"7q†Œa¹ ©×J–ãØp‘åÎöd9md¼ÿʶœ²êž™ ¨GÉŠ¹®3k´öx=ëyI[“‚ˆ¶Mǃ4„é·?1‡q̈G˜çäËŽKü* ᨈ®'ôìõÑeè¨ÛD„ÜžbÖÀ ]²pVK3WYK‡ØÃì–°Ø`P:5¥wH¯Â»?¿’U8Y©ÚŸëšÕ«¥âk'G¥‚m’Wæ&aVYû!Mu{,êÚ-‡u°#Ëyjó7yj+vözU€›¤Ò³›pÉ~¶àJ¬2”l_~¤†±f”îà¿Ó,+ m³¬ºçÜ×–òmš…)p÷¡fO^â/Á5…[n’…-dFi³9ã{šKjº†¨©9'zW² ÁàA¥,´ÃbþÇMá’nh6• ÛÔF/£1 ™„s£pƒvœî„x ü:p?:ª†Á–ƒÿÙ|º 91Wªg±¨ÞtÎ&•¨HT—+Ò”2æ‚ "nK†]f$æ˜oRj‘yòº¥¢š=F.`âq‘"¿ƒÛèÙÏ èÁUÓ¥ý\GEßåÑ›ü9r62d³·‘¶v‚omäÖI§Œî¹`—©}…ïðÞŽ¼·ÏÉUf$çîƒ kDY“>TÛ’‹gÞv] ôKZÌ=ŒuÞ¤C >¸Ðñ4("'ÁŽ£ CNçJñqSÏpà€˜MQSl‡LõÆNü5ío£ã¬þýŒ|ÛÝsµA‰/¶lÐ%Ž”˜W¹*ŽqB”” Z)”–ǧ4jâ¶×¥-@[ö$þ(œâuläµÃX÷Áµ¿‚‹‚w—þi}°ï-Ú*`Ÿ+A»ªÆ1ˆômxQŠ'q¦J;·ðÚ—sÒŽ:œñ8|ßwˆ( ‹ WÜjS3ϺÞȉâÌ1bB>þ¬¶çK–*oOdƒî€EŒÇV^Š `¹¡]wŸfÈhjã×Cxæ º2' ÊÃò\@WÀƒ+Ý‘}%d.gãê.ÇõMð$jStØ|st¹2¢KÛ·—é¸ç™é€¬“saCoÄ¢(µÁ=zŠŠ\¬*À·/w(À×U‘(½Ôª"Ÿ—_«_ôtd'1%g [sÀ’=Ð0ÐÞVîØƒl8}µpìƒhI <:ˆ„DªÙçòãd ôUŠÄjŠŸ=ÀsÇ-œ7#-93Œ¥FqÉ2FÚ5egwŸ3àvñ¿´²ŽÙ‹'VçbñÔ¶L°ñ͹«ÁÝï*d0jçJÙó~Z/@üs OÄRÅðï‘DæòåÍŒé2žñýL,JÁgr-Á¸•k]Æ á¾PˆSœ “û‰ø”*Wˆ‡JVV  øjÓ*Á¼¶ëjàš2–Ùºg“ Zd¢IŽû•†)s°—&̆ñ¾¤o …Òöd{pj©"wÚÄIº#5 m"b c ïä€_ÇfÎC»ŒÔiƒ.~,6GTaì²Í§ôØ‹f[_Ù)t¯ &-¿ç,¹WàD¬‚óv†ma¥ï‰2Heºxy?êÞ‰7P¨‘Ç‘b„ [Œ°¼ä„«HnóýM1 'ªÙç)t€SiDU‰éßüQÅB¡ÍlÁ¯ûϳë¿{~.WHÑ}™ê/TXÍJ‹[]üƒ)eÊ™‚] ììAÀB&b†¼? €Øâ,#ÓÒé¨.±ßÑ„ È>!µÜ”à)è8È÷§èå2ßîP'•gÀ9BGo_â˜Ø¨,­õ@ø,û8_xR/ûÈ/Ë7®VG³éДR)ÂFvŠ>qX ʃ,ÓˆEoÓFX2ur¹OÈ46NÊÖ¹ˆu}t‚;ÉtÒâU„ÍI>+x¨Ñw2òeX¹º‘Å_^ƒÇøFÔ!¹Œøp”ý« óQu„U°T¥&aÁpP”-´÷qÒ²ˆ›üxÃüPRÙ¬ìÕWÁIû7¬F]•:«Ië9€@ïV¬ìúmvwÿ%þOþ¼îNø·Õ5Æ-~}ö‡3àW{þË™8ÿ×3c1¬Ï­û ÑŒ€Ðfy{öí‘õܰÂ*W˜Œ©¢û¿ó‰~Οw›Î:X9˜ž­î‘@ˆ«¾þºOAD)Gbàf.³ë©” ë;×ݤ–«mH<ƒðC!žl:ô˜¥º”6÷¥¸ð<›?¬¬xÓ¨žº^|I­É@Jóä˜?§Tì &Òv½‹Ñ*?(ÁËSàÔí XJªº"÷ÜÖ7&Äû™{&VŽ+©z~(E‘gBë&²Ãî|üMžþÛ¼µ÷JÁ¯eŒ[ÁŸ·yô®óÔÁŸûÍà2À½.­ùÆ€[Ó/-8:ãO-);9,Íø¹ƒÕ;X]êÏ0þ­U)OGµ¯ÛYÕÙË“úCéªFÎwrdÇ$SC‡Xºq`jd/`!›Uh¾ïFú¾6²1D ·?ÙVI0­ü²q†±J’P÷C]Ü>ŸÃǃ¹ÇGF¦ÂE ^ÂEÛñ\=#PŠptª;¡ÀVÖí¼%Dégª4¹£L¯¥g68’mÄ»¯‚¶”iûRa£uôûW‰Ï2¶ú¼4o_RuŽyój†ûZœÒçç./½Ýä%Œš#/±Ü;-tm¹“Æ×¥{ÌÁ¼ÖÕÎôb*t¢s åã+ ö¶­èïV…€YåývQõÛœR¹Ë£˜a`‚¤lù šÜ–…ãÇÒtWË@^ñ}ÄáZ¼±Ã½¸dŒ3¢4½ ö*º)¼¯z÷Km²¯côJŒMi)¢Tɭʵ[ v@áR=Ä>}k©×ñ)jFqm!ck ë)ê±902¸âüÁšú/ç khu]±‰nÒÍ«l­p¶úIŠk£•PçÉ#Zãö¤F­&LlCè>vq¹t<|³Ú‘_<¯fæX¡‡Ÿº‰n'~äq5õÜy=«gƒÁ-–x(!ï)„Ry0 òÝÔ6b>!EâæMJ‚í˜#­u®m·n Zù°JÍEÿ½æÒïªæÍ-M…}ËÑÄm5ÚoäÚh¸ÚÔTµ…a0PÚµ0ŒƧV Cvì{œÝUËTïqŠÉpÒ]ö¬‘¶¿Ç³ð´í>CM†SÁ $úvØfk+™›ì8ìÝ6á/Ach|: 4½S0ZK0{]J0tÁêlba )ŽOoØmÀ‡ŽH‘%×ï6%Ær£q9Uy‹8):WžcÆ´´F’yæèÈf„w«ÜÕûݤíSeQ=_Ò¡EØW¬•ð¡ÊÊ‹ÔÖ0R,†E€µ"(tÈJBM`·B± žVí_tÝE‰).m¬\öeزÑ)©µqªAÝKC)¬º¯7Ÿ—ê´Ž'“vG€t'3¥à¬)O©‘ì°A°´iÙA@èyÁ)átËh ݲ† "fN ÷+aëlò´ÔTv´Çëc¯Ð|ª?«ÊëËóÎò¼-ÃIV³‚ê~T´S´M7!ŒúœìÛß Œ6Òã#vè*03eŠñn‡¸p“ÊÆì ÙZ«6­ð‡šé»ª?¦BÌnãlä‘‘UIwBQ,"8C~*ûvÞÈa¦øÙÜÚkå>E@Gñå%t,MMxv”>¹™ww¦^|QíwðX)iA¦nyòt~j è>BÓyÔÉ-Ù#ªªöG3@À ãR–-x8N–k&aê>СìÊA7wÇF“©néaÛqøs§¾»ÿ”Žì£Ê@¼ƒ{¶]HÁ ûµ¤ ‘“d1Ó & ¹_á½…DDÝf&’,¯Ø®WÍ®uî¢åL©ŠôHÅ™Ÿ£H}s$ÖüInsçÅ’èò`Øéº§(] ƒÊÛå^qüâÔþè­˜‰{Òê¶EܤÖÎ<’E4¢Š¹v§Û'‰Í§v!`¡^€»Ø¡{D?‹ÆŠªÕKÚÈH4œØdXÞ s¢w'ê°Z?ƒGãa’H`¯æ§d~ÄG·l ½þ©þa%¯j×ÉÔ6RgýÈXë—:™ËO3Îq"à/Ó7'ïŒ,ãD§=ú“_>ús NT¤–*Ÿ¶u2¨Bæ)[ž´{» ˆ•4 –Ÿ~[fÿUM{ΰIUýa]7ëèײvYŸ¸ùÉ’4WµÉŽÃ«-?Ú\¼sÃò†~sÕC‹Ôî É™«;BRKìë?YP[ë¦ ·ž–ÂK…°Ù„ƒWtÎ×9Žn ªÌŸ4FÛF˜Qfʨ٠ËýIe±À¹Rò£ó•}óƒ°xVÿ!AjaQ“25 ,ör–’~r'YŠ1È8hjš”ÃÊæ~«]ÓӲ ëºzÒÅbÝf_ÍpcKäÄÁû¸ì²Ì<ë6Ïâ3^î)NêK‚릶µöË2 ÝPWmkTuÕÑù³ÛbCFŠì…²Ë7_eDÜJ€Ó†ìÝÁ7]³bO³ò•Š+x*ð<ë¼&ïÆòCu.‰€¡8;é•àŸ鑍ÈK—¾ÛÅ&7@‰-?y€ùjRçºä~õPô.Úò#v¬Îñ,•ûê0vç¹UæzpûmUöðÊcÝ ½2ä@uÈŽ–º€4±Sk½¼q…Ý/Ê 1ߦq- 8åéåÐ|ÓOïšÓF¶ÛC.ÙF þT›Qüì6AÚñ«ß»´ AÛ6uG4dgCo©cï’;*ìÔ;¹øµ”W[€/·ëXÖŠ|Jð•étŸ.hŒ];E˾´ŠÒ"¯˜]ÆKP”ºúÁ=.Ëf¢®\*¾×Ü— TÉ!Ê“IÙ©<ÙŒ‹x¿¤e•[Çœ­"(9'H»^—dógæÀ‹ Ö˜o·â«ÉÖovaбlU5ChlE¢GiÃòn¸´=ùuìù¥®Ö0ê©_ܪx l4Ý­%Ùzpx—í³ƒ©°½F™IH7?xd|œe{ wnF®D%Âú¤fãŽL“i÷nбNµÿØÒ`ó½ñˆÇªYúÅXµ XÙ 'mÿ|²Iœ»ž4&¸Žîz¢š˜Ñïz:P&…X`í1_ôļLPeÔ!ð&Ñ×ëad„'ÿ׺¶øÝ5õ€c8å²'[ù)–•`Û"S+ÒN{Z\[ÌSËé§¿<ˆª~\¶Ò‚eD‚BðUGÜ}Âe¨þBĶß2ç†ë§üŸºf)Ådop§ÀcÊs6£7Þ•Ëjs›ê0b•i‘J¶Qé¹ê/bì(8ÆUÇ ÈvðËùÑÖ¨š¿ŠC'‘¦:+Dx‰_ö{ñ¢oO÷£EÙÀ§:P\óÚ°†ÉÒÛÇ?þB‹ýíÒ×K©ÓO+1u’éd¦Ço•YIhý#ø·n¢©ë}µ‹ÎêZ ²¨ yr¦æ>¤¿VøžÊ@ZßÙª!Ô°¤h¼`\[‡úœê€µÄ’¥3T9mmuÝâN"ïD-S)ldèÝWSØ’ =M>ˆ°îñSˆ›‡û.ýù.ÍÅoñœÙ4‡¹Ã*Ó—ubú¼ïÃ>WsÓEÞÒŸ!fu}ê“z ã]iµGdÙ‡ãÿÄÆÅ=ø¤Rû[‚uÆ`6uÝù·H§Â8‡RÒÒð$ù“óÀSÛáyL çZ¶º¯ð/ ‚4?ž™„Vé6Kd¿~®‹üáìÿWeÿ”endstream endobj 341 0 obj 5522 endobj 345 0 obj <> stream xœÝ}Ë–\¹qà¾Î|DíT”›©‹7àÝØG–ÆÇcŸ9Ç‹¶|uS2‹-5»%õ|ýD ÜGf«Z .*3ˆ D Þ¸È?ß.'w»à?þûæþæW¿+·ß~ºùóË5ŸZ¾MÑ•Sºõ1Õ[ל?Uûý»Ûÿ¼ýx³œê²”ên¿½ uq§Zo˲ÀSõöþ&”VN-ÜæÖ2>ó!áTPëi©PÛ©$„,ø·C2þ_n%œ#ˆï•çG@i§ €Œhõïù„säˆèv@8eœ#{D¥CàáþŒ;-4k®§à’Úi‰I§‚O¥Œ;$œ|DHÄ¿âN‘IîC‡Àó !±ÏÇX ‰ñÓ!ᔂL“åèe@>¬Æ”S,4÷B„o)'3pƒ#ì"=»¶àäÏ)§% ÕÉö-øT*§LOUGçå™ €R;”/™9Ÿ2Aš;¹LŒáDF#¹üE"ž>8Ð3ŧK€cfVN ò¡&¤!ÁŸ2b²á;Æ5:ÄÉ#æÒp›qk\ëó©cS‘׸­ž<=^ªÖN!¤ž\D¡]d- ¦àaB68Ó!ÙxÕÇø“#"@Iö=‹q…MnN&®€*"îÚÂkÇS¡‰[g9@SÕ@™b#¥r†Ê˜v ñõTŠêBâr ÁI; pz™WBq³È —hF6¦diBµÍÙÒÝ@p\³{ƒŒuÓþµZ˜pÙcduh– Èêd9…|Ép3âãÉr •äX¤"..šœ¸øHb,—iÀ¸ÄxÊVHã’Â):#Èq ,qÈ:ò)T£ qO]ŽEcN­­H&9ÍHí„‹rÆö8V£Àñ´¢ä®9cb’†­ˆKëæ 3L@á'f ?Mc*aÌÖÍ a<I€€Æ; w*ÙØZ@¸!^Ã$³g› ÀVœí:@i´Ø~Ø?@'ïØ·hü@¯l\ 0¯œJ3n žW2ЈâÍ’Xú³ ƒA­wÀVB8qŒ‡íjÑ ! _YÞêU›Aü„íöøTL²À‡: »ÜxGkÁš C@RP¯`›Q3VÔ=Øfæ @šÜ"@E’ tq81lAcH!ƒÖ’¥4d2:°¹¼xH¨X9½@ÑT¶AÕ`b·8²(¢{Å[(Þ5õÕÎâ„"ZÆÁž-Þ¢â@ÚB¶è: š÷ŠIrèw-Õä&;»1.wãd6ÏåvrÞn°+N·œ˜à@³Af”+Y¨ff:TdËo'+^‰³Ü80€5[Ùò`äÄ*‘üyWe’ÑâÁ'doä¸xÜ“ld½x´rÍèCñ©û¡3‰"ǤV)ˆûP½âó"rLê ó HK@jŒu˜€T¤F­Eñ€–µ'Pž“ÍHÖYH¡•1€gsƼÄ Æd§1ä=0‹Í$YR˜¹âßam’ðï°Èéó « pqv ³ˆù Ûëà+xfìyEŽ '$»G~ ÿ_ü-òù3€á&ëg9!¿,îµ»NYм+@Ô’îâÖŒ“@™ü82Güâê=DŠÊ$ð€Bh6dðVoà „ølCï=9 €ƒŽ`¼w7 ÇûE‚Žƒ¼kJ¬„r8œB5ã ‡C.U<ÊÌŽÜÆ<ݵ$øp80–8rP%±¦.áèØ YÇþqT;¶XßÁŽ «8€6Üä {0œãð!«¹‘x~ˆ–ÄüCü$/"*¹ÃcÎ.†¤K2´A’”¡1’È ­’d‡ÕN²¡¡—’1 Õ•¬j¨·d^ÃHr6Ì„$pÔH’7Ì$‚Ã$I²hÇP>9LÛ#æOòÒa"%wU+*éí°³’[,iò°×’J›ÎÙö0ûœŽÏÀ ûp’Ó#yÿpB\~Jª×i…a¨]…ô]«úD€ôxmøM­Ÿ¾µ ÄbÃÿ$’g €.RË$w7 ž °û&è4I0¤'+#¨èô¾x¤Q€Ã± hÈ‹‰^:`ŠpâºJiOã†Æ!š8JuNC­1FÂ1D#6]H£:EF#?ÁWƒC¥HH¥ZƒL݉Cuó4T•ýÕhVY ¯²I£bå¤FÎÊm®U"4W©Ñ(]%K#ùo~©˜3 ÃL‰+19Î31#éð"Ø\áʸ†¡0ð'µIŸdߤF® ¦9£–12š /E.pe`›:.peØ{òRàʰ5C E®^åÅšL³ó¢æGÇ$–s©pe0ã©ã7¡ WWYƒ1¢©Z¬¢WvÜ0ÆC©R‰+¯¢7F M w\âÂýY²ñ I,þRâÊ`q¸xÆ%®œ½z‰+cVâŸHïË5® ¾,6£{),%RãÊ`ÙCs+CøF^Gj\4‚ËL\ãBicåWÔdÜ8ÈèÂå võqS4qáÄESPÑ!¶Ä€(FˆB“i&z@B1€d6ü H}ˆ¥!¿ÎÁTW3Á(àÅû A™C›‡‚;»Vÿ :"”9Œ4Tq¤i(çhtl¬fÿ8¨5{̯a׸§¤Æ¥ÜÔ—r\k\*RãRÁÑ— —Ö¸TµÆ¥Bª5.d­q©°k‘KõA‹\ª3ZäR½Ò"—êž¹T=µÈ¥*¬E.Us-r©)Ð"—š ­r©IÑ*—š­r©iÒ–CU.5qfÌH0ól*¥Ì¥ÖTË\jqµÌ¥VYË\j¹µÌ%Æ]«\jÿµÊ¥.BË\âD´Ê¥nF«\ꊴÊ%ÞJ‹\êϤÈ0TO  UU$Š0DŠTÏȶډ¸Ap˜ Ê3?Ó³€dIû©r’‹[¤&CÕ€I´©$…ªÒ¤hµªg\i’ÔSµ'C,©•¨Ž;@’Tb©h” d2,¤TXHâÍ¡ÚS.QNÅ©\’Jv¯_åj_ŠU½BÕ ©éÔ¦I@ž¤E aÂ*͸ oá!ã‹Tv–&ô6,³Lw¹ñ¶üŠ‚iö¯Ý,&¼Çè£Êć´Êʼª°Îü¬ð?ËÄó FGªe$L Ë1Kú1)a‘tuÕ¬V°s)Ý +X+è-ï”tA¾‚Õ‡æ£Í•a§¦TŠÇ :iR½†¡±UÎʹ«À çh•Ý–¬¸Þ »Ìf’Kâ°Ébº¸jÌg; •udãªøîDlw ôRÄ×ÒìN¡_œ}å¼ h½QÎPÐ&“Ü@ ¸²$g@…ŸŽ/À.qÁON8¼J·œ‚€œ&gH£(e->M­æ”°l¼äP,rT‰ë7hǫվvÇO@ˆ°%ÿYaßøŒˆ]lÿÌ"Èn.yëªk­³7¯°‘“¿¯ 5Ù˜ Ölƒ†Ših´qÆQ\âØ!æp|Ra,Wš8†©ÀSåêßÃUÌâhK¨S¨ÂQ]ªw˜™1¼y$ÀkI8ðá8Q–HrÐ$Ñæ [Ò±7´Žý㸖÷WâÞÁ‰•G>.Jˆ=8-a¸Jƒ†ê*1ΫPcm¼qô-Â9ŽÇE€õ]d|œ±‹ŒsxÑ•qV/ú4ÎóEçÆ™¿èåè Õ½¢Þ£¿@LÀhA3aÚØ”ì¶2H»ƒÔ vZ"´kÂIÇŒó7º/ÄDŽ 1££‹C,íèôk<ºAÄbޱêÚTÂv_›NÄ3h[Š8ѹ"ft·°’â€z)­¨'ÓÃÐ:.E (åŠá5¥¤1<«”=†÷•ÒÈðÐR>^\J,ÃÓsfR¨ƒÔrFP!õžxHMh'\6ñ‹T–FŒ#Õ§I…jÄJRÅÒpJ5O®1D‚²1Ämº”ÆvŠŽ„‚°ˆJ“‘J·šº7ŒêþiÀ*[¬1­rAã^唯ÆÊMŸ•ãc«TH®‚#ºÊ–Æò¶ÌP…l•+À,ÉrÀTÌYQK–+VÂΕÒ‘³:åÛ¢íK]é<˜c׬^z˜ÌÛ5@FOé7ÖÐEãÉ`å]º½ÈN`Å<kK°bž'{ƒóaÐ&aɼLÝ^X2ç~5¶maœÙþÙ1d#½–HŎ⃔¬ÈÖú¢-alñŒ!Y“G b¶È¬#¡lŽÙôûÚ7θÜ¢œiý)9ˆ7ã›!±'ò-‹_gg=éa‡éÔÕ àиyŠc€±ì£Ùy—¤^Æ6€Le®:S&?¼ãSqåÁ{©Ø²»€D &£ÎB¸ ÍQEðr„$‘BØ qt¼v–Qü|Á Õ„8!Ó/aPðr%¡RðÚÒÄáB¸ÔÄ!iÞ‡•™!¹™i8º3KQ8°‘q`,aä JBÍA¸„£cs$d(1íØd‰{82¬’àYÙ©¶²\ƒp‘ ÓUn4’WÙÒh_åO3•QÍTŽ5³PY×ìCÕA3UÍbT­4ÓQÕ“dHµSó%Õ`Í©DÉ5íR; ©™Ú MßüèÇáOmަj—4U´c(Tû6Æ”‘`æÙNJ檦T“[5·š«IÖ$YͶ&ÒjÚ5×Vó¯ù¸zÍÙÕ‰h^¯~FSõEZP¥%uiZfÝÓJD€XW)¨Z¢Ö¹¢°mªzô8·¦0²VH¹x€Å\–á øɵ¹PO9•¥B ˜f-YQ1,1å*Zð›ªõ(* ÔSÛ•Áüˆ˜rq Œ‚v‰Q Цs‘*BH’µ°Gi)Pí‹øp²C Mnš%i§¬”‹T›X´<ËÇÑ“ÃTETÛÆ¢ml´;d'»ƒì‘4kÑ.G鉛J«åVlMö‹9š@¾r°LO`´lCWN`­Ü$; }¤mÌ |¤Ø&ÁHLåØF¿N}‰ Œ—cYÚümÞjD*ÚïÃZ“Šö±f%éX"íKU‹­¬¡ ¬>SÎZœj‘¢-kz‚¿Rµ"kšö1‘ÁHM›Àئ¤¦L×êú"¬Ñ ¼¶TíT饒¯X;Õ~9b+õÔÀiãÙÜ„yÙd–z*k¹S bËɸ#™ÒïKö?ùb1eÈYö# æ—ºùšÓq­—ýQ¦q-“}VÂVoýZB[>i_‚$§NÇ@)5ñ²äB«<5L§¹ºÉ~8%m¢b_Ò"U*rç)jƒ{üf1f$Ð|éù¦È!ÒóMÑEŠYŠR¤˜¤(ÅQ B8ØáH&Å(•8 v(%;!ÄMGƒ T™ƒŽ«PÓøìC/Ñ=ÎÌŽàÆ4å¥$èp°8–xr%1ç \âÒ±9»Ž äðvì±DÀƒ%^I$=Ø)Ñö`¹ä"³«àh\¯²¥±¿ÊŸæ*£šC¨Kš¡¢®™ˆªƒf+ª2šÑ¨ZiÖ£ª§™‘ª§fOªÁš`‰’k¦vÀ4$8évÒ¦… ¹ÜNcƒ4?hwضAB›(´§Lǰ ÔUí¤æ±jK5×Us«ù°šdÍ™Õlk^­¦]Roµþ’œ«ƒô]}ˆføêg´  ¾H ê®´– .MË ªyR”PǨu užZÚP«åñÁZ!Q7­UuåZiQw/Å´^£QƒÖt4²ÐºFZÒEÊGÄhI-Bi0¤…* ˜´˜¥A•jžÆ]cÌh÷”y$|kIˆ§øh((k¤¨Ti4©”kÄ©»£Q©î F®²ÉÜ*4V^i¬üÔ@ZY.±¶J…†ã*9²«tiXÿÍ/oPÎbs·½ñ·¼é/DÞþî77ëfÌûÑú;Úè¶¥lq%£¹U3˜¶)-½ÐçÜúÛÀíúÛÐi»þ6=|qóõ-ì8äUáVÃãŽÛßë§·7»å2 tDý\ƒPFþ~ÿ¦ðŽú%@Ê{_ìýæ1\Hac”<·7 Û˜ÁëL 1ó‚\¸ß<6M5FÉsf”äàð”YhZ0:ˆ%@ À£&Ô¶ûÍcÓTc”S)Æ©.z/ ›É ì]ƒÀ}!/œÛá…ÃÛÑ.£zqPWR¸‹S]Sá¨Í^\õˆ _²€‚N¸ìl`Ä›ÎÂ%ª/ªñˆ³]œêò¨GP°G¥^›ŒNÅ_bÐåQ@u-½ ïÕ—GÁT-%<»€ÕåQ0UÁ+ ý%¬.©j?¼4ÕÅQ/n¶¨¥ 3]9|ûÒDÁD~Á—…ÏïøåA0Q([. tyâÖÊ_œêò(˜*æþFü…©.‚©°gi—¶êò(˜ «Œ¹^Âêò(˜ _<ñ§º<ê…¶n\ ðò(œ ”!–KX]õ{Ʀº<ʸu‘»õãQqë¢÷Ä7Ä8–Mg¼úL/Žz¦›½gLÛ¦bŒÏÇ‚—G=Sì?Å|Ä`ê÷6U"—ó›zyÔc6_kª.ì *‘Ñù]½<ê â'‹ê^2 ‘Ñù]½<ê¨âåµa…jÞAU"¯ó¨^õñ™Eµž‰ÏÎ ÀåQ@ïˆÃ¨U«½Zb¨ó»zyÔ#P- X—ª{Q¯ÄhP½8ê1¨¶S(+Týª/ŸGõò¨G ŠíaeW‡±ºæäÉQ‘+á¥Ù±•8¼íOìÜòÀî·ßç\ Ògc.”á¤F‚uª”m7C¦Uj¡|Ø1Ó ¥û]´·”mè8sÌôTK¼ØnÊB/ŸX•Ë£LË_‰p~ª3£ÌT ïr±òu<êºÓÐ…<Ìi(¾êáœ) ˆžßá{9Ù4EŒi®¬ Ë£6<¦ü¬“Î÷{8nÉØb}FŸj #‚ãÚOm‚UHªØPÜ;Óéòâ^ìm»ôý d3!Óý¼2‚²›1ƒ|§5ÞhþSðÍQ_nu†þ¢«kð÷77Š…Œ,e†olnôå÷Þ´Æê„p‹Î;ºƒ–pÏB]w-›ré9O ßea…0j2c®+(mŠƒŒe‚q_*iïM-Mæ÷‚§4ààCKüsdðÇÐ÷7ø²_ÍÊ#8s×ä;¯ñæf@B­Dgp@ôbÖàï¸c¡#o™a¦ãÍû¿<âÞ›ŠŒ¼ po ~ÁƒoÑdq°ãýú>ìÉAÖbÌ ßiaOúOÔv;f ßTkÐ÷aOt„bÉ3¬è˜Œå—Gœ5–ƒº!ÜD›÷ñê‡PÇa àŠeý. ¡¦æc¡màÀ#Gž`EÅd,¿4Ò¬±”·mî $õ‹]E“%ïçÐ÷aOt[ A¿ÓÞd|®¨9ÉøUc þ>ÌÉ!Hò3“©üÒH› %¿el ¾ñXê°%|p®zÎß-Ñl)tþÎk[‚×å¦aJø^Þñž}7¦DF(Ú4ÁŠŠÙL~a¤MFRiSc¦Z̘«ž+mbt€ÜºÀè·²ð€tÌäyÆ{¼\'”) 2B‘¦çW4Ì&ò‹"l2üª¡±"‘ÞßTæwýÆ5HôÝX!6BfÐï´†±"1õWßu~Ãp¼IßÑ‚¥Ì0Ó1›È/ޏÉHöwB³µ$øC-q~ir¼ÄJß!Ñl&dùJ+;‚wþ8? ¿©©KðwcHd„âÈ3¬¨˜äFÚd$•¶騩3æãÝ_¡ML`CÁÏëWYv@1yžñÖ”2EAF(†<ÁІÙH~Q„]ÕéxØ€‡%Î4ŸQ¿¡Ã»–Rìý†Ž:ÛÉ0-mãsíf„ÿég ÏWÿ•ú¥Ã‡ÜøŸ4?“Íti~(ÐU,úÛçxËEƒÿõ5,õÜ᯶rWž=Çhqq&S( ðø{¡KZžÚp@ÁO©Âc¿ù¯7ÔID}WÇTm<äÔ|tc­ðÌu¨G ¬êÆÐ0V 3ÔL˦Ã猢ë¿aw´óôßnql.Ýlà†>OMªÔ³†M\¿¸yð.P°9Ï툂^þ²oGLHƒí@\øœËŇ’ènß8µÜb÷ámÂtá1üúî_`ÿÀç´äîþðì9Þ·“Š/wß>[N1ØŽ»œJªÕß}£—œ€ï3 Ï 6HǶññëÐÅî^˜^÷ÏðòÜê=pìOfȃG_s’2 ‡Cb^Ê’ï>ágØ^ØÀ»÷„.júH“‡ÜÝ[‘üDï}Âß"NHw­hÑšÀ§”¦5ß\ÌþØÙ-u¼ÒÒ@8í˜ï&|_ÜÝëgƒ¸Pï~¢9–VʶU[û½Tê{è\r%Ó*x±cLw¯_<ÃW Üâ# Cšs1Ââ0¤•º*˜F„Ô"î,<y|£ÕgKŒBs²ºÙ{³#ü·øÕ3ˆ}¢ÏÉ’Eß&™ã½Žàfe²˜«¾‚¸²0âÔÏñ~Jd°å m¯ó»'w}’Wc?™àYfL³øn<úÿ$~)9"ÙJ¤•£HïP#*®¶³ADÖìozÑEò9ÜÐ&w(éîß;cZñnÚª{|Ê-̓Ü<Çh¿– 1³Ö'B¦¹t÷W˜Ì/¢KÙßêG+¨ïÍ"Vh»aÈ_º¤†ÚöVD’Žßri¥×Cä‰÷3»ø°Åí¿Ñŵ5]JïÛÚÏà­òŠ,ËÎZžŒà¼J^幄$ ôÆØ›ÚY";±²Œo' Qá~G–9ùIäv)êj§ºjI;˜Y;¶šxÖ~óN´¨éÝ»¯Æ’= “=ŠxñY¬²Au 5&TüØrwf ýaý±x5 ¯õãžùí ^—³ìE›ð~7g ÿ¡xÉ“›\‰}ðÿí‹×.µx-ý°¾¬©Þ,?ޝ×;ƒw©ÅŸaÈ^–û05ýr«Œ!YÕÕ3îW¸¼GIÀßS/í<%%ot÷QWðíOl4!þ3¼š•í ¸ÄI…Çê,<æ8Q&üL+6Ñ||5¼VèC™¦6à4{åîc]¸Åxu)åœn}Ðï§[x?æÜÊ üÏá·Fìᮆe8ЯO¼ÕE€–ÝP㡺ˆ×‚úp…áyUÌ`ôƒj¾8»"6kdÝÝû‘[³®ï[š¯œs<8 ·º§&1úÝ9,²;ôß±›’Ã,cVÞÒÚh7 ÔšSËNˆp=^S vØ:#‹µ™åí·„_qþʨ©c8Ï1…™ˆS„xM†: erÚ eÐ%Ÿ eÔÌ®ù¹[0ko Dxs»/%ú„¦œ¦÷¨ðl\²3!3@ zÿ°Ú0oÒ8…Z_nÅ…auWFßÀ.eˆ!"aÅÁ<˾•>â»åÍk³CVÞi e+ûM¨@¸a‰x%Út$®ò×>ÇĩՀ=¥˜Ü§Ä¶9‹ÿO¸¶ŽÄ J­ð×f&T2ðUhÛ±†äà8ëîa+þ¾ô¢aë{³Á«7¸¸2'´ýµƒ?\ĨŠÍöŒ0˜´î‚ººk®,N˜Öíú7¼ß?ÄuðúwˆË~ò| a{¸SMçBÄûq@ß^‡ó™Èéç&ü6UÂTÒƒ=}9LëÊÙìÙÃwœð‡º¶j¾¢*ÒÆ-"N©F°å˜7qÓd‰}ÞÍ¡‘¾>-þÚ:Ü¥T\y«½ øÐw—†öùUŒšwG©– ÂíÖØ5‰´Ts´šg1ü¨ÎÉ>×÷/¨e§¸´˜'½³SÏC?üžLHÂ;uÂ*wÚÍ-C àâJ=b“Ù“%w—ªˆ]ß“¹Âùã$/=„(>íÔ¡[À§3jÜçé*—p„.GX~‡T ZJM‡¥´‘è‚‹»B,èD+Ô…µí“ÄØéÏ–Ò¶åa+­T4·kÚ1?1a)¥ûöó´POÕsÝ IiÉ·é©`æôÈ,YøìÃ$¤ýiè"‰]%r«Lå e4rwÄÌOt2‹éÉw»;½â‡ñXim×Äo×þùGHsÀi J½Ëþ„/“¯øÿŽõ`öLi ¯ŽA/{e™"z ³ R#sºB—ÉgZõêêÌô+=G4òÏÒphOŒ<^*³*%Ø|ÿ¯„ÈRöƒ‘m…CŸüDOºÃð- ¨ñçñéÈ—æ²úŒ ­¾=Èãs¤Ì]kccü‰ÖóM=¦5Ôòé°‹t:LH|»«÷|zçì™Óq{°ÌÀ \7 WÖ¾ßq¶¸_tüÌzþèê¹0WÄ“ì+ëˆ_™½='ym†s:ÒõõPÒu}ë1qSóØëúùŽÐãêùùN‡b}ûâV.õø çÁy'³æá[I ¬õºØnªó抋;-»YH‚­ú7¸..àà<09 ‹>!8‡šG‹O”L.a®ØáW–)ðçÜü²¥ìUIV¡ÉžgÀD:9·—¡l¢ÒzÆŸÅOuIyíàzÏZ¶zNgVV/â//Ç.ô-_ 9=H¨¶§"èȫԮ>„ÂuÚr© d5Àz ;üG>þÀw4@εG[ËD‰psÛØ'Ú7ÎH×G—SÑÏf^æôf†¦–{»òDT qG®„†ˆÆÙ<êM*ôÈ ¦(kÞª‚p ]ö¯q !f¬ü…NƒMsažõÙ„U'œ¯Ö£ –Q„ãÊŽnÄO´ FÛ×p í%ÖÃä׊½äËæý-£Ò.½Ê­Šƒˆo…%W™•ÝÊtÎ5¬y1j4ÿ<>þÇ(<¿ÜðÛ©ÞÚ_ãŽxýÀ_o–[ü•k×o1ðx8ïû5“x…ËR‚w‰½ñvßøKÒ øÞ½ó}¿[Wÿ4°? ÿ4>þ¸®!›7}úÇ·:Ãn9*ó:7 Úõ¹ž ¥=Ÿmy4¡í?‹ú&oX˜‘uà *² ¢3uøõbJ_Œ*ÞZXúrwÀo§Š]#}»õaYPLîá+¶ß;…<\<fw8ƒo§Šÿ5Äc}ðði@ß¿þ6 æˆá‡Iä×23ú=ð±áž‘mä¶^„Ò_×¾MÖ…úš>E0 øŠâ…7qËéêÛ p0¦šOЩ‚ÁÞ)Uý™²b_Ïû«¢«L ìïV'ì!—=h8zwÐ÷»MˬýîŸÇÇÿ_îøídaÈ€æ~U´Q‹X\~ŒNôK2ÐàW®ƒ¹ÖˆµÁ<,êãI·)ê¦n^êoh­_̯¥÷q›ç8€iqÕ¼¸ ñI,wž­×%ø!·8C¬¯i±|B¹¶ÃÄÔë³uq¨ò`…d8,ó«%ßÑŠ¹—tV=3HL½Jwõ(yÈ:~=Šýå'üDÑ —O%)äáª3àÎÌÊô¿ïÆÇOãã{ý¸§ÏA~Áͯ³vúÌ»h›hwnz\ž‹X$Å |±}iGá³µ÷‡ íSÔÚO]zè{Gï8õAÍE‘ú-zyõìË¿ƒºsgd8É/vÚi5%ô˜ì²žšM^wþêw%Y•É·áMt›’NÑŸ+-yÐi¿ŽÀm—Ù»ß Øˆ+Z\puKâü¼ïèÕ…%;„¥z/WÚóN€çZ)±ÃÑ¿×AZ½Ç4‡fæW}ºZ³„=®¸voåqõÔ°ƒ)ÿM—Ü€ÍïöenË£ÍÅFüùFÜü·6'~¯ä“#xY;.zÅ¡§%üNh_&ëøÏ÷ÀqMl.¼N•h£í¢û·¨WEQ{楡âºÎˆh  ¾¢¨ÄóZMÓ¹û½B` aÂÿÕ)€¨šdÓž|Q†+F‡b¿žgI{)xOÔŽ.Z²}¹VfÇ€öÓÞa³rÏ£ù0kýžIÁûh¨*n÷íð@WßÑ|.ï>gnp‚§À•u¿B铱òÁ‰—­Õïí¹ÔA&µí¹šÄ¿KîQAeuAY©°õQ SH?Úƒ‡¾š‚<ÀËÑ~Žfuz%BÓ¤Í;?°èœ ˆ‘–í+qÝÖ€¹ß)D#;¬pU8®8¶úD[ܪZI¿[XÜ˃ _¿ÿ.:;ä8jjÝ?0½Lr¦Âðý“es‹…NÝWàG´=Ÿ}×D)ÇÜ_ô=-íkÚ,„ó,”r½òt€—Ÿåx€6oÝ%¼¢·±[QŽü@ß1ô›Nùê›ñ¥KÈ\ˆó7žLϯx^ÆñYŒØõ‘¹{sJ%ûßâô>ìÎ!hW7«†ŸèÑV×wKÌ•¦jÝdá«?5wx¿¹Oåˆ;‡¥?ÉÍ3éï—êìöçQ938èß©qû¼ôÆÄUsY_çûÇ™A;ÙR½¦qÚ²M‘çãú£¹•©CÇ寬Ҹäóïlä+‘öî;¼Æéø0Œ¿ÎÓÛ,´_s6/?÷ë³.$ŠtKÔCƒÞž†Í+0[ÜzkÐ ©üÓú/Ò=> stream xœÝ}Í%7’ß½à?¢nS½p?'¿É=.`6¼%`ã=HÕiý¤]ÍìŒ÷¿w|3òeVæë®‚ ê—QL2‚Œþ‚Œ$ÿíq¹„Çÿ“_®ÿåÛãO~ø·‡P{½Œú˜G—Rc.ý1Æ‘.%<þöãã?=þò°\ú²´zH¥ŽKLu¤~)õñŠ”xi(¹_rzü ”R/±¥ô‹–Ë‚„Ú.}%çKÈ@iõR¹L\¦çKÌL_ (#\"¿•–KŠHi—ˆûôØ–%j™˜.(õÒ™.ø–KnDýÒ*R daJ½´àFÊäK¡·Æ¥ %bÿ´%¿ÜÔˆEb¹dffé—%#¥KÓK¹à+‰zˆñR;RöPòTIŽ—ÁÏå’ð<. á" SS`ľSË%4¦,—Ñ€Ò2J†”V¸L/—H7à²-£J7äš.„Kî24‘ÿ"†Ì”åR ñŠtLÎ…Ëä†!JÀ.j¡´Ëàz`(#–©Ù" ”F 0È—ˆà¼!cS «‘(ú<:êe‰¾Ú¸,—X”‚£—|É}MéÚÜù-ˆŽìÛŽºBÚÎø«EèŠ(e SRªvWE h%K‰š€Õ¤¤}ºG/Au•_ dn¾ ¨a\U³ŒË«–`ˆR[qš…Šä8‰Q?TKB‰½ä@ÉëÞ1Šõ ¼@µf¥è@ÈKn¨€òj8AÓ—¸qh¢¯i€½¬4'LbMíJcA%w˜@¥±Û§–¦ÖÑ­8MN-‘b,lMH©ýÐòzºXF“.å–À[tàÏn©7XKIhLD ¤:K&+Kèò°(| L©Ü x2™Ìlm\ Øzg¿1:ÀC ïZ@lRut?Y(•sQ $7ÎúC”‚òƒë—Ê2%¶ñÔ%I™û(äJ‘Ö N5kp¡=1hw0°‘Ò†xœþq!ÿ½è ,dgàôu®f ø>L àHÐMÄa“R`0;–‰ªJ±5Ôß:™"^<:;Úc5ÖÎsášA…`Ѐ’°Sˆ°ÆÚ{—~06TÛJàzP)H®ˆ>‡Ê„KçšÁîA•€¢óGŒ¤(µ7š±ˆBŠ”¦mE4f TÑc4ÔÙid¦DIòè‹JA;èê` ˜nÁzÀÕ®x¡Q cWJ÷  ª”Ô8¨í¨ÚTªH ÚË¡s583G•aÁ¾È:Æ€¸âÜeÖŽh„yUÄW¢] ‰(Qå.PI]±*Ó±Cù/4À`4+‘¸K€2Dmc#¯D!Š3¸m°_V@T®H”¬-HjÛÁ±?Nèø÷¹(;ô^A±AíSÿ7è>~+zðÐuoå@IjÔÀ{£á…Yš}± ÌK¥«u¤;çGZ”šút(:}Dô+NÓ2Œd¢2]0Qóå2]ü5WO+ÂÀúä©«à8VUÀÈDZ"46 #ä…õgáBGè §à`C_IS¥cMà&61;L“[–~Ë`ó©û®EÜÕ†ïûHoÜø”DfGcȶ_€a¦ñÝ”¶cÍž¸ ð· P€dÑá¼¼…–&rƒ“b/8?Eo³Æžªu®Ì I“éªÀ´ÇF¢&QÐ='6›Ê•ÀôIÞ Œ¾Â¤Kr#lëLÙ`Ys+(UlF]A–•™WP .3Tpy-yRSde5+®¨"â‡Ø{!¥u¶H}+“sŸöW%¶66ì ºÈJŸMùÖm€+htôj‚,³¨O®à©óÛ\pXùö ~‘ú †ƒí¸‚ñwòöUz¹‚.ÑPÁˆ°XfAsMEE$J¢Yc ê2À4ŸÁ,BTU Š`Ú'gùÇ¿›ÑTƒA»]4Õ@3X$˜j0uMµ¬J£©–Äj0Õp$%tbWÒ?HxÅÓ*À&‡LÕ¶-ÃÁPÀ$¸fЦ*Lü*GS@É2K4” AŽDSºU-‹£) q»M!ÊŒ)ÑT­:’š5¾ƒV-ñ+!ð§á …Sµ‚5.ìP¡Ë¤/P‚º!¨jͧI@UQ;%Ä‪VÀh‹9¢ª5è¬ U­0§0ƒQAãEq1GTµ îäP#ªZê"ðF"ªZòg%P±õ¿8LÄàKç‚j*Yñ%‚°  Ñm«üFõñP’Š)ìëhqêh>šÊ"ñ'T5COT)BUE.½ÅUÍ`Ö‘äˆ (Yû†#* $•Qù2Œˆ}=Rù¶8¤òüpHåXæˆÊKÅ‘—œC!ß;F±”·Pçãšàã'z)º -Ú&T~À9 rJ!•SÅS¹$ r (•SR ¨œ"K@Uqúà™E*0ˆ,BpDUÉësSQ]…IQíÁ¿L ,:bd ž@9æ˜ ¬<ÉZŒ¢­Ú$~€ ^Fr@弋Tä²P( r^J*òdUÊP@YÈ’x üM×/ñPšÌäOAȪe8ž‚ [ûNâ©»¬×h<Õ€‰§ZnÏk<Õ [yÖÓxJ¦Ï3žjÐ8j<Õú²»ÓxªC}œh<µtY³x*èJÅS«U¤Q8$–}H ¶5–‚ieáZ5–Š:{X,…KfuH,•~ä@ f6‰ý4J4ãvŒÖ`K@#NƒLÑ@ T…ã£@†\3ŽZ.gaT½H§Q”B‹¢ŠŽ¬EQ0¡ólmQÔ,ÃQ”UbQTe˜QTQ¡¢¨ˆ3ýgE©@D‰UQ ¢².ÃZ•³¨EQ¸D¹Ž¢r–,ŠÂ…Vq¢’.ùZ…S—‘( úcYÙ5Ž­è¼FQ 9—+ˆ_xSÖ4ŠJŠP,ŒËäE £€¢s†„Q¬dCáX­c( ˆ‹Ö ÊQ$Šš £…ã(G@ÊQ$’š ¥Eb G‘`j²¬Á”È$‘Ô”Y#©Ù/IYßY(eýk¡” €…R6HJ%]m³P ]À:”·›%r’P ¤•}¥ÔH-”½`µ·PÊÌÖB)è $”Rg;C)µ‹JeYôœ¡T™f(¥!™†R`µY¢ ¥Ì²-”š ¥à­u,£>ä(Òe ¤rÑ—$Ž2 ´8*éÛâ(óëG¡÷ã·4Ž@¥û$ŽBÿÍã¤q O]‰£:ì"£ËqTƒ![ÇQ­óŽ †Qê% ü Jv¸¢T["P1cT€sèËE‘s˜A€E*À1¶™„øDXt¾Y¥Ê @ u Q°2‘¦nìïÕ?zn¾«#-ì*pôuE5qH”( &À@¯fEðqtª8g‰S"†©ÈM°­Ð¥.`FÕµR€t%–©8HvÀ ç tw€?$ÚŠ€ÁqØA1~`”Ô}xˆ`ƒ Ê¢z‰`cP$Zl¾ÃÇØD›"NF©²†Z‘gvÀBY.n¨P™ZuuµÑQÓͶ× U¼dY‡A¿ÒE…g2„¾6¥cTÜ—"ªdef…&®Pd§@+¸¤KÝ@IdI¥4J·EØÂš˪u°kQð~LlûZ3c$† Ÿ#•á=BªÝpÞG7 _në"<…X-t+Gßî‘[7f tžá}»T/T`,êǽ%âÏ:Ç(ÖöV(Vs¼{Ë )4KÛ€†Á!¸yèƒæ©¸³…v?U'€ö‡áÕ+€#BÇ=U0Àt…ÙTÓî'{M•¡S\Íëz¡T®fÑ 6r™pÛaÞ¡ 0¿Z ‰ª„DÕ´ò‘XL îW+w!ÉÊ“,‰^ö²«/îä¢ýSN÷bg{ÆðI(PñtS!ný)h¢­8ñôp‚ÃБ±KÀ}.¬#è"WoJµ†de"¯·,U»\&Æ­CgäÀaHŽÎ1‰"Ð2N`/.§a›£PaÓÜ3×m\3#†RÉCåVy -ù»U›} ®¿*mÂë+®«±]í‡Ex k®]»"³œ³H¤½X_ô16•mQ‚ œWPÛŠA\‡àU%ÆJ øEZCR©€Òœdô,C¥Ýdê žù—Ê"ƒ’17ˆi¥¥%(LëLhIS½ËbYU_pe‡(CàhÊ•—«šXÙ‚:”(‚Ì›0=;JVˆëY ¸-2“N0Š ¸(„…)êö«Yès‰ÿQmâXdáLu-bîPdÛ0^mLéÇV-Gé¢~F‰BZS"¹jOI—¾&T±ŽIáEGIQ,'…+Ë…Ô±‹i/y!s½yÓÐõ`Ä݆á;YWmæ8èZ UŠ¢*¥ðF“U¥ðT3£*] ¦àæJóQnòÓŠ‘yª’;·®QUÉ<÷̨ ]øè>°*¸”Z|`…©T±VÔÐn™V˜€ ÎÈ ÃÚ¶¶ÈJ—gd…q…DYéâñ ­L!ؘ¡ή´õi¡ÎÉ=úÐ AMQZ!@}š¡UƬ¯èC«\yÏÐ*C¿S5Zé*úœw¡—´šše1ÞMß`÷!{`h[Ù\e„œÑW¸•ÍoIpEø"E\…3;&\ɱgˆAâ* ÙÃ;™ˆÇD¬º3*ˆÒ|ä„i1x°…ËiUz0U5ÒË3¸Â‘HÕWæ Ò&ƒ-H¦èó+&O±:mY»è*S2» ® 3à•à QW«>¸BU’‡u˜ì@›ø\á®û|pUR`0hÁîh0h×àJ-Ý@»&óL\_ºt—¡CB¡ûø@áŒ!Г!uaj‚œ^}¸‚[uÒ 3!ýš”Ls•’nâ)tSËXSªÀÕIåXikJd<)ƒªã¹‹ E®¦Ýl²ã؆Uÿàzbò}ˆÈ‡¬ŸâòîÇÁ E:\-'~5ĉ§ø«Õ,9"aµ%T׫álã-¶u‘Û¬6$.7ÆÝ Zz±«¡§>Àêºc&‚3p`õ…Wü,À½z’Ù"¬:Ç`au·^™ Ë%J¿аpƒŽ5Ì›ôÍj ‚2*‹°zæýŒaa™¼2EÜÏZ¢°pëu?Ú[Òº-mq­t·¸xüÕGã‡óêÇUïê»-«it€›U49YŒÕCåE‹±p³*Wcá°Ðb1VŒ­gŒÕ:«¾±p!”ïñoññOô}Öã?þ÷‡ÛoF®ÓÁT Yr¹Y¼×"˜º7ü§'nŒä%KêÙ®Ê=oÚºîÚMcÏ·]·­=ojru»Œ¹[¶Ÿ7¥à=̶MqUê ýq.ÃmÙsÈ?Û¯OQ1~Æd";!¨ŠþûÛPE ¯ÏfLêÁ†n_ÆŒ6Ké{{¥XD¸i4sÝ`¬a^7¯­ªš¥ô=W*/œÀqÁMmhÕ`hMXˆaóuóÚº*+eïÍRÿûüëÁ‡ˆ«!à×à=Q春|ž”¬ÞD\ö_Ðæ [=Væç‡ú»Ç_^3¢ })U–Fi>×I¡ôU+[Ê—IÉßH>þ´áòº'ÉŽ´[Ù^wïׯ#8Øu.,¬|´P_›Q>O e4çZ Æ …7¤+s2‚8 c”¹,dbòXZJ¼ÄbMl)¢¶_<|7,^wÄØu+ØÁð½[w³TÝðE\nŸ9‡Ï(³=„j5Üði=÷_Šœ.(Ã'‘P[[Ê×ß ‹×]1vDÝv0|ïÖÆÃgÞÒ†Ï<ª ŸRf{æÇŒ'­çÞáÃíŒåeøä±Ô*ß«X[Ê×ß ‹×=1¶¢îv0|ïÖÆ}׀μóL™VÚœóTŠÕžR¢u/ç´ž{‡O‘ Ÿ¹Jüˆ¡ú&¶”¯¾[¯»blEÝ vß­;­/TL¬qàó.Z÷àE)sªU 1§c©æ^ì‚[Æu…]”’Cá°s6²¡|-vY3yÝ•c+ëF²ã{§î;Ü «‰¯ñ²«óœJ™¦Þ0yå͵ž»q ;Ã-â_š~bcMl)_ë9oX¼îбu+ØÁà½[wz΂sDï9q1ç é9•2M]öœ;Ðzî>MâÑ“§Òp#"ø¶”¯õ›7 ^w…Ø ºëÀo¾[w^çO€ÜàáþWM~ð”2Û“U%Ç“ÖsïàIº ?L8–%5i`KùÚÁ»aðº+ÄVЭXƒ÷nmÜ9x 5g=͇›³žQÌ-«¥˜+·jîõ4À›³žRRXd§[Ù¾rλåñº'ÆVÒ­`£÷^MÜ;x›d±øÝ ‹Ræ$«øÐñ$õÜ=z2͹ÑÓÕü !ùV¶”¯¿5—×I¶ÒîÉv4€ïÕÆ½¸EQŠ !A¥ÌÔÉxò¤õÜ;‚¡ÏTJ‚šhUÝZÙR¾uÞpyÝ•d+íV¶#èò^mÜ»ä¢ ,6‚¶c#¨”Ùž®#Lž´ž{GPƒô9‚J¡¯w£oeKùÚ¼áòº+ÉVÚ­lG«.ïÕÆ½àS¡¦MGm TÊ´yÅTÓ‹j=÷Ž z–9‚J‰˜k×}+[Ê×zÑ.¯»’ìH»‘í¾W÷"PÅ›6‚†Im•2ÛS`5yÒzîAÜm•í[mcKùÚñ»áñº+ÇVÖ­dG ô½Ú¸oürXªÌ+2~¿Ûð0F Vw^pÛµ:ެ–{GO"†9zB Ï»ºocKùÊÑ»åñº'ÇFÔÁ^¼wkâÞEO]â4Û³eP³=¥L]Ñ•¼©OZÏÝÞ3ÐçWÞ{ %ÚpÚÊ–òµÖwÃåuW’­´[ÙŽÖ=ß«{£ øæžŸ…sÏO(3äÔ`lîcI5w¯ZópÙªµŒæåÄàZؾ6|¿aðº'ÃVÌ­TGáÃ;5ñ,uþö ȿ埗ëã?|÷ð_þ1â©F—V[‹ßýñÏú ЗŠ/àÁa-=~w}xúñÓO?þòÃo¾ûÓžž€ñï~ÿðô×Ï?|þË÷?|øüüñó¯üsyÄïhë»O@ÿå×Oò¦ü@ýáÇÏ×¾ÿ3þ áo®çŠå÷@‰`ýÔпý…k·*~Ï\Yó¿|âŸÿõ;Ó€r ì– ù7¥ï¥Uà`œ—º£?~°íϸà÷·ƒú3êΘQì}N~0ÿîdœ8NJ½S™•œÁJ$3ã"P ~—Ž+9)•`jpJ‡•œyÃÀá—£˜»`þhä‹;‡G.µt8p'E@R<ï0…CIOмAR©ê¼Ô³ò~RÕy©gþ¤g]u^j~#wÂÕy©gûvö¤ªóRÏømdd–#ÏKaU..;áê¼T5ÀÅ,§U—zÆ›ñò¨08s*>ZF;)òlÓßÑ2×I‘g›˜Ž89)òlSÆa%ÇEžMà“Xÿ¼Ô왓Xü¼Ô쟮ÎKÍ^:«ê´ÔóÎÆÁÂgPGu¥Ü—£òÅíqU¥\Ux‘çWªz½ÔITKø­¯Kß_ZÅ£ \ú¾Rf¾¹~(1sÒµž{÷ ¥݃œ~]jþMó×]·bl™>ÈŽz·6îý*F?‚±¡Ñïdld„0[³¯SŒ#­åÞ‘t`f…_707Í_wYÜH±åùè{—wjÂù€…ŽÀë&:íÌ+-®äÇ”3]9GÇÕG;Èž_ðØ8>xšÿœø3{[Ÿ¥~,¯”D'yëûxŽ„ýV¿<¿<VBY– nDx¸ôíÉõ³C‹î<£àÉ9tânÜȈó~&ÉäfE)¡·³HöÈ-¼Œm Þ{µ*ì„ y~yP&f‰ª÷Fr 7R¼xˆû­‰FÃF«t|EÄÓP®“‚çσ“£[<:!‘ζNåùÏNí´iª%BåSgµ}–6ð ¥D:nÓjÀƒ³kCž_Œ +¡|K 7rðÀ}³ÂÑÐÕ&ç^›tJQÞðü6ºJIx×£“¦tx§—¿ >ÒJ+Ðç)œQ„5©@9צlʃ•P®µ‚µä)áMϽ=b˜F¢œ~JŽøˆ6†]ô‚ô¥öÌìBµ…jˆP-VðJ¹<ËSoH)š§WrèÚå_yc™¬-“á_Æþ¾³èGýÊÓ•–§p*5~~PécûŠÐ~kH‰vb?Ò=o€èeÚ5þˆ+A-Bø–)ü7é6¼{\V A† D9ÚÏýß´*ùª‡G¼;3‚ø;´<≱95Vàÿöá#^å8 ‡ÿåp‡7ãÅöôÓ¼b1Aÿ<ý;’a@zO¿a饖1ž~üðÂ]Ô+¼ÌŸ}Zñžáñôìªø~–¸~ÀSzŒ Ú¿º"Ÿ#ÔL¼t(â‹ÿˆEr]4ÿgüÝžcÿô³p5’oè®oÛ|úÄ.ËX üª°à}ÃX!‰1bic‹Ûë+eÕæ‹ãÅu¯ÝK'--cI«2¿®ø%c}úáÞ¢˜Sú®c= à×;~Œ#EÛ`œIm¨C(¡Un¥âÅpåé‡çx—oXbÆQCÈÿˆÉ%ù/“Ì%ðúKìYxq@„Á­¯5ŒNà»”Ö]ß»‘ŸØÅßÀkb-*ô*(gúÏ öxƒMŠOƒÚ" X®Úa ÂMéHèxЇŸµÇ²v‡R(ÝǘšŽ$‘w´ÛdŸÖÕƒñâÍ`U¬ðoW”\s‡aúˆç·÷¶ª[ÎmMFìÀlOÿi߸|GüKãõ];MïIuc„U+7Vdô×̈E kESÀ @‚_Lwº Y€7Ýéñf?ŸX¨æùtz ó]>|ìt!y|úôfYr"‹Á.m+;rrjvÃ2Rs]µò+“ÁÖ™ºô.ÓV¼¢ÒÎ??ýŸÌw «žb¯Wz~ú+q”:UA%ãk´„»#¦W{ÝÛÍŽ!¢Jø^¸ñKÀ óú/<0 ¦ƒ¿‘݃ÿ¿á•t¾qÖ䢾S:±¬Êþ_×_^˜ßw;.äú½ÿI»ºßéú©tjÞ¤ü‹®´L,ÍÚHÞ® ‰—ðjw( Ñ^@¤+"ð«]Wèã5k½L ?r ˜Þ\ÃÀäñGˆmdãЩn|ðZZ¸ÿÝ: áÝ…>–Ç,¬Ü€2ø’•ˆ·`¬GWªð™8..K€Cø úØÈE%V9¯ø¡2)ó‘ù/M¸µ —UØÓýtƒMà“+8NWãhºj(•Ï9‰ˆ?!¢L¥.|Plx#¶…W Ë„xC6Ýæ#G%ñWºt9G ±ýÇWsEŒ¨âVøøv Ð="tÙt³ƒŽp»¯ôh,ÞJ„¹ñ â%eT͈|Û Pè>lºézaJ¤{±éÖn;ÒGútéGà.Å«zp+/ñá™Ë¤"'÷·…>ö§«92¿µàÍ©òMØxúÍ {^hø¤ŸN÷“¤Ú qw÷Dñ–1>–ï\¶q{p50œ¸Ђ\¶qû×1ñž4î¿ ý–AåðŠ î-¤ -U>Ta–Á;­”Ðð¹â΂¯¢£˜•‚›÷ø½nkJ¿XÓ¨£¨-#­šÆóq¤é„çAÐåQÊàýh@¨¢xÖ‚ ,üœ¹’îIÂW Ç*3Wèî’Uº@ÍÕ’;.XøvPÚ±bo„+v3ݱæEÂKœ¢—aÝ1F±ÎÓ—²Ü¢ä(:úÒ%¼y¯®F2Óýn~´­x{Hd¢^k fF©¦bá}ò}¥{to§WO<•q¥Á²eèF¾Ž­¦cµP}föº*ŒEnÕ‹o˜z¤+Èèú’ˆ—Êã~Þ8˜¸N‹hÝ£ðMc81¾f(™šÂCbJº“)ÈÕ´"Ý€éO8¸Ó±¾"šœOJc¯fª´ÊM×$ž¯+ËäùÆ…+¦[YéÂ!NÂúØ[.|¥XÄú0‚.‘2‘·0m3 Ô qð}XmæqÆà"™í«,C…Âë¯p'\Xd†a,tÚÀÇ(ù9¸ÁÝt©µ #C T·à[àËùÜ8¼……‰³Ü2ñ$“†Ó¨?׃ç?¢°âÇKvPÏðê*ª%ãX! 7xMblv®·Ò"\¹Ì\¦6ÞrƒoYŒ¸(œ°LlÒ^ìJEªèC.dFtµ›;Þ…Å/Ñ"¦àJxè2d¾'á1ÍROæáÆ[AKQ šeÆåM&à ÏIì?óµ’t=jnX_1iIÚ®t× Q‚ˆI—µÓÍ¡VÄ—i¸Ãè«Ñ.Æ›Xy0W EÀ»µYpÀ©®tã_cÊÆ²Ð½RS¨Â‹·@ª²|Ÿ7õDä2àHà/¢}à$h€ñB®8Ñ%D@©|é(P:ï?„®öéB5¼NMõ¾Jnh(øÌDÀØøôl1nÌúâ5èÆoº¶mW30‰—(â—ñ7Ñ’Ö¼ßCEJæ†y7D.IxcfïNÙÐã-Dè2½×¤H—éÓÚÈÊ¥ó(LJ[D!'…îÎZQn ðœë)ý²n¹Ó}£+J‘Œ_@<ÃIÔí_º-Cø×ŽÁCI(mÎ:/p]õ/b®Õà¸d?L­-b–Q<@Ãû¦’l q5#PÆ Þ1/Àv°’ƒ¾±[î ÝBéì´£v’.êôާ£ëž–‹÷E‘¾.C>Þ)ÕÄ–ÙéâýZie7ñ ›O=5¶8Vzºö“*Y´¡Lg©’òDÝ ¹gܽÈð”J§tÒ[̦¬ü~lE6h¦Ü[âÌE®lJæÁ ÑÞJlPfƒ½ELz[xœämÚ·Ä"³5A~ƒwË|Šù펻¸ÞµãñrÔQ¸ŠÏU€å“³JU`ZÇ|ZšV•'!ŠÒtN"Ð-}0;%­8–™+ȬÑyÂq”(‚;aÍP¸"KшPx¡¹‹ž(ÁR¬4zJ¸ Õ›‹žè.u*£ÑS „T4t¢ë×Q{,t¢<:Ê]ÐÐ (tµã èwT €ÂHßB§]Y9¡ PØ;XìúÖjBº1žjÖØ‰òüZs±¥¹ ?¶Ø (™ô΂' ®Gƒ§Ä-Zð”0}š’Ú$xJ¿Œª.xJÄÁµØ)IT!s5>….«œñSZ€S?…1ÅO@YÈ^,~J JãÂ':Lã§„ Ø%º ( §wY`¦j.~®Íâ§`¶úøi žk,~ƒí{Pø!ûL¯†ÀÜ@ ììè¨ÑógÔht±‹ Fe#›Ô¨‰Ñ»EP£TΦ´ jdÁDÄ!Þ ¢LS~,ˆ0zcø jð…Ÿ.ˆÂC)ÞÐ ³(¨ˆQcáå¹Du¾öÙÏ´ømYMƘ·š¬{<* °wÁ÷Cuœ²¡:_?äb(D-†$Aí°z5«t‰ô 7ö€M¡µ8~úBÕÌè§wº¯ÚH}ÐèUáúBñe°[ðõX[5p¹¹û(j HÝs8 jðPqDºávŠ5]‰à¢¨‘Ø-Í(jäEЭFQœ°EQ N+ÁŠ›'>Š8s…Ê&3£¨1Ã/¢ÌÆ Ÿƒc†ûäʆ"+ÏULQZóТtë*ÂÌÈ!ª²ÁüÂk/“%K‰[€ÒÙÈ&eGI’~=)”§´¢4š§<…gßI ².å)…ÊQ‹ñå)N±BÔ.VÉCŠ"„vMõÂÙ}ü\ð‘!°ý0Ú„öCFë”P ÀhŠ„Ra3«¨ÆRz#«ºÆR@á%n³WúŽƒD×X*żðAjÁ@Éb2K¥s §±f8óˆØªØ´„R)ÊES@Éø­ÝŒ¦€Â»M¥ˆ+nÎÈžiëÿŽÒ‹\L¥ˆ×D{BðBŽXtŠ|Cñ ¦€"¡Á•©Ý™"PŠ ¨LN‰vvƒ‹§fë6Äx¶°© ²|@^¡67‚vÖ8uõ@)Ü_T%°ïÒ  z°Ê4³¨\5ðâˆFU06´cA'âe ª@/Ä4¨ŽΑfs刮 ˆY$î ç³DËtÚ3݈.Ó†FX „„…•WŸw(]¦W£Øí$“’d…bR|ëÔVʲÿeü`|èŽiòÏf’U¤.|’…„÷„4lõc]Š¡ZÒɪ$Ž ?eäs‘ÕX؈‡6Ú_ÂNËŽR¾ÈKÖî0]„NzîòuýX(,azåè×ùVÁ;ÞÉ.%/Âõ!+þñÓd)(,B-yãç&²DQÙÁÀ¤Ÿ¥Œ¬ÔÌW=EVK“Ïmú/Aш‚ܶ3DÀ«ÉÍàH 6´Ñ  PLoëK¶°K“7” {ŽöÖ\ôÙA Oþ¼9c",ñÒWr/EÖǰod½”÷ǰCÙÓ&«…xs`†Åûp¨ºZ‘ÔÁÌ)ÊD.ë,Ö/¸O@ŸoF[hi¼Ž˜»•ᵘ’uàD÷p:ÕaZIšC)šO«Îbt•'\êWÊÂÈ|‰r±^+€ã¶B–å™ÁÖ‘0—„)ŒgPÏ¥oÇ Æü‹¬è%šÈ1tH²êGk¸#p&<ÚÍîEµF6ÅqY¢ðÚ&L µ¬ötGåÍ.x[3­B,].–nâÀ1ª’Q^”¬²ç;ø›â0¾EX -[ÄÀW¬¥Q»ø]’28‘²?Ÿ¨Ý$F‰k¡´D‘ºØNk²b‚vÁ„L¯OaÓn|£kÂO^üj•Ñ?.9ëÆ;/Äâj±lûšÉn2'Ùϼ²ˆ_Á@_jÐ "vdMkÑvÌãB)­sä €9 %Üüæ­dÛ2_è¤xÌ瑯ƒ p‡Kâq¡=ÆÝE'…Ú;¿ÔÅéÒ)´ñªsKEŒ”ºhK²l† Ëzó»fqùüªg«U´HWï±³eǹðîwKZMe Œ Â1Px„ç€í®´,£¡¶È.ªmeëò7¶½t¦è9i7Q‚pÜx[zÖØ!Ð[E»TöÜøàqÇàà}IÔ;I›XH£Þ<+›MŠ$¢^³mMÃ'S‹ÚÅ%¡êÐrL­–lQYQpaÙ+ ñA:šy÷݆ªÕ ë]:Yc"JêL‘\;Hn$YÅSd®ËŒ¼ª§-dŒ®-èä¸R<(¦¯X–ª/d*NîŽaDbU ¶XMý-è4&;híe`º/†¿y#EîIvÀ8õNõµó°R¯ž#+Ó Dÿ™Aúë6ts ñ â›ä¦$”à'.t”ÉfD*²øÕ±"S³0¯«<ŽË)ÔYš8cM¥À—HK4XÀ‘.®Êô×ëD’¡ÐuNÐXåÝAt\Ùv[xí¯Û|Í[Ü-&IÉÐ9s~¢uõ¸½°š¯ÑíŨÓ1­3.Aëáþ¬øÙMT߉œnÑ.« $Ì|¡ÅA‚ß8Ë­á÷ Oì=ü²d81ð`“q|°8¼=Øö(†À•2¸Q Å·^×\ù™\yž \åš \dw |pLã@8*ùXpô¡yÂ{缋 »d©M.ke„#àH+Ž®08® ·CíÙcp\8_ƒp@Zî&oáôá4ÀƒpÜ÷Y7]¦›¼eF÷ƒ‹‘x .Ky+ ^×XÓPùÄà /8 ®‹ƒÏ僞VobprH†«ÃEò‰Â¡s— oœ,è`8n¥¥èBû †ãì™V0\ÆÓÁ𞘿Ù;=ó"ðDâÏPpHgḂ⢊ãM[¨è¿ƒâ£qÖŽAñÁç38(ŽëšÅ#q\]n+$>À“QÊ£!q\¥Æî™H| £ð@|`ždôH|$NOH|€óMÅ#ñÁ79$>$•f"ñ‹ÁCñ±¯ ø@è ‹¾´lbq],X¿'æÅ⸤ßWX|R Œã +xã£f®XÁø¨´5=±øÀOWX|4ÞážX|HÊÎÄâƒ/rX?p¦9YÁ8-ÕÒ\¤`<-¸¶×OKôH;fEâiIyÄ2.Ññ´dÖCâ@iŒž‰Óö!7Eâ@ÉòV×í£"Ø\昴@wz N»oÉ)Ú¤IZq8m(.Íápºi‰¶7‡§Eô ‡ÛÒ²ápÚÌ\<ÌÝÛÞì¼ÙoHÉmxêÚ)6NA8PF„ Äç¶ã¬§. sˆCßr~n+U{tr¦=\¢ Ã>&·ýBâ´_¸ÄE%…“ÎpöjUY*+‰VS=ô£óúÒ„½º·0¡ñÀ;ÜŠ‡Ï£IôhË„º¦tJOð”*pyÖÉ ][|d˜cGöçË™¾;wR¥!ð^a8nÏQw ÇÝ›ìQ8nð†ÂG˜£"Þ†=à¹RñÈwà-z«Øl,œç@8ßOïAøX#p™6—IËApÅÆ¯bpT„¶Âà`s%N ^5,3 ®Ãàõ'¯œIï ¸¬ð­!¸¦˜ëÖaº¬¸lù9Ž6\V\¦s‡À)•aÂo™§üù)ò˜ð[:sâo™‚þ¼11¸ì,îðÁû"€ã,ª ˜Áì˜YOxQ)€(YS‘8ïQ™P‚2”5¥è™Q|ëÔVÊ2ÅN~º‚å½Pòd`ræ €Ñ7nà ˜ôÛùÒí¾ó²ê÷¼„‚ÆøÙÀw^ôÂNß'¯fÛ¾ÀU^æê!¡ïŒnTòíX 2&k(@'ô1ád±ýd<å7'Ew~eX¢Áï¼ô*Jà7LCkB3æâxôƒŒ ƒÖŒŸg½3f-)Ð&à™1³i18 N#cöSóÐ(]ƒè,á^€v%(5JÓLߪÁâr@¡Ã`?ôθ¹ä•µZAbpºÃcïŒgdjÔAÆ WUPÆÞžAvc DÕ% ÆÞ@±åÍ€÷c fNÌàìÆÞÐ…Us{e¹˜& | gÁàõ/O§ÄÐÛ&+>]¸š=òβGÞ¤[‚ yƒúE xyƒdä š®1¤ 4Ã@Þ`/èxc>L“ Þˆ*YsxãTZWÀ{ Zaãn´}…»G]” îÆÉU¸ànÄ׈zÆÞè$Ú {÷uÞìÝñ ìà CÂÌyûjÇ çÓ Áç`>CoÜò-¶8I-áq8ÚøXn 7®‰k†Þ(jYõ&â ÙìSúRu¦†0wÞ–vQ¤¡iB>ùÄoÙ°và;÷ö•d‡¼%!ÄálIÙ£Ø((e"o£ò6Šo=¬‘·ñcÈ›ž°[%š°[¥þ%óÄÁnÉ<™°›O<ìæí»9ñÄÃnN<ñ°›3O<ìæÌ»yóÃãnÎ<ñ¸›RO<ìæÔ»9õÄÃnN=ñ°›S0RãÌÃÝœ³áq7Æ w/ >W¸›Q¶ÇÝŒÄ'î Gî¦$“îVÊÄÝòÖ!î^V [E˜ [„v¨›òN<èæ=*º9ïÄsÇÛwtsÞ‰Ý2”t—u@Ây'qsÞ‰CÜ´Ïå·hžÜœv↑UÞnÎ:q€[²Nà–¬‡¸%ëÄ!nÉ:qˆ[²N&â–¤¹%éd"nM:™ˆ[“N&âÖ¤CÜšs2·äœLÀ­9'pKÎÉÄÛšv2ñ¶æL¼­y'okÞÉÄÛ’w2á¶&žÜÖ¬“ ·5ídâmM;™x[ÓN&ÞÖ´“‰·5ídâmÙõ7¸mi'·-íDá¶¥ⶬCÜ–ubˆÛ²N rkÖ‰!nË:1ÄmY'†¸5ëÄ·eⶬƒÜ–ubÐI“N s[Ò‰aî™t¢˜{fæžI'й]Ò‰&†$¨?°¤…Ü3éD!·K:Y4ÝÆ’N¬K:±K:±4K:é–Ù#I',éÄÖ6-ëD!÷Ì:QÈ=ÕBQ·eLð©Y' ª†Õ´+Í:™@X³N&XÖ¬“ ¨5ëÄS8ëd]fäU=’uâÚ’¬“É'8†%édʤY'SnÍ:™ Û²N u[ÖÉ\cÖ¬CÝ3ëDGï(ëÄæÍ:™°[³N&ìÖ¬“‰¼%ëdoÍ:1à-+ÑG¸[óN&îÖ¼“‰»%Ëdân%LÜ-ßoÉ;qÀ[¶Ô×À›"kÞ’vâ·¤8ä-i'yKÚ‰CÞ’vâÀ·¤8ð-i'|s‡:ì-y'{sÞ‰ƒÞ’x²‚Þx¶!”¿½Agíi®F°íæçÍ ÀuR\zèm.À󦼗B‘“¬ÔÍY ;ìåÈÑJî$“[©EÆü‚i«h·ÕŒúIÝZf²¸ÓE·¥®;Ë-ÛÖž‚Â3$\ø~2ú—nûÃ#ÆS L£¸ Qõã?Û¯Oö~мãº[EÀO™1ÂL•>½n^ó¬¸RúÞ^)ü¤·Ç“ñ ì¼jP^[We¥ì½Y*Wôµõ ‡rÅïë † SþuýΪWD^Ò"çç‚= ðLtü0ÃD‚SUÊçII#òw6£9˜r¢}ÜgõXwŸ×ŽmbïÕÂ}ÆE×Ïo\xå_HÞ¸”25$àòéðZ¤õÜ;hOppƒ¦”¤+”ÚȆð¥6vÃÛuÿ­Œ;˜Ù»µqß°áþn^^à´6¡¸aãã]hÊÍk¸Ÿš¼{4ÊôƼ]ì¶Vsï¨%Þ}tæD×-g%>Œ×-g)e.Ä$>—Ø-Öh=÷‚LPO+0¢”2çÐY+[Ê—®gÝpwÝ“`+åŽL+ZïÖÆË²:fF§«cfsFP°56Ó¤YËÓ›Ҝޔ‚yÄ”¢h­l)_nr· ^w…ØÈ¹•êh)òš¸3D’&ø×¤† þ•2‘«?/Ws¯½éBÝ´7¥à™À«F6„/…ÿ7¼]÷ØßJ¸è({䚸ÏÖÔl§­©ÙNc3Š©ˆšÿÔ"«çNkÃãÃÊÚ”Ò²|úb­l)_am7 ^÷„Øt+Ö¹½[÷]-t¶‘›àð"=¿¦¥„é”+ßoâ·Ör¯¹é8MsS ØÝeÕȆð¥“Û o×]þ7"n:³÷jâYêüí'”Ë?/×ÇøŽîcx h‡ÎúîË<Òž]ç‹ûîúðôã§Ÿ~üå‡ß>|÷§¼Õ#.éñ»ß?<ýõóŸÿòý~?üü+ÿ\˵†„Ï>ýõ—_?É›ú‡Æøñóõ‡ïÿŒ Bø›ë¹bùß=P¶h”†~üí/\»Õý{æÊšÿåÿ¤Ëbʲknª6UZŠOE…Á¸£Ô3ž3~“³*´ÎjŪÎKAUxIj<­ê¼T%WYœTu^ê…ÁÏ÷{̾Ϥ0!âÀ®Ç"¦H_³zG©¯g5â‡Ô5{VÓ«C0›ÿXmî(õVñPŠpÃjÝc³;ëÔÓBoaƒÙ²ftlU#KçF›âA©iŠ«B¯šâA©iŠ'U—š¦xRÕy©·›""Î&·Wõ[Œì˜Õ;J½ÝW¬îê7Ù±ÚÜQêí¦¸buGÃÅÊN:õ´ÐÛMÑ3÷<1ÝewÆèi¡70Zp‘ì†Ñò*£'Îí´ÐÛõÎm¯Gí«¼¨/ç×lÿ¼”ûÀF>AZ•¾©êõR®ªÁw”œpõz©YU|ÂðqU¥úyåÛ }^ý|è«=$ýHkø-bzÕC†Ñé ˆÉÁvª:)ò7ŽgñÞ0™`ÊëLžy€rÊ$c×Gû¤Ä³YøAÇ%žõ Å£*ŽK<ëwÏG}\âÙŽX8bã¤È³ztTÉI‘ùuèA%gEžíÖ­ƒ.9+òÌ—^…xÈÉI¨$¥*Ÿô½ZÉI¨¯KÇ•œJÊBVUrRäëm2ás˜>çm2lm2ŠépàNЏ¯`CÏóRop”¸‡Úå§ç¡Lœ@óóRoguyÚŽ»”³åެû¤È|ú‚wÜÏŽtJu;Vò“"oPr<4†öÍŽ'ž$'†1yRä LVîÐ_ëIü¶~T˜—Ý€ƒÜóRÏVèØŸ—zÞA¶™Ø:£¯—z»é$:£P_¦P1àYDý|-ì´ÔXÅóÇz-lÏÊ•‰³µ‚ÓRogÕ;¤´3WÌ=^B=/õxØõê«'KLç¥ÞÎêªWwf¤Ôñæ|èœNмÁ9áÑwéÆƒîDµy I¾Œz &œùz&qgj)ãËd¹Òý 'ÏŠŸpRìL=:jžûbõÜ{@ŽÔàÈÑ:¿üð››Æ¯{ n…Øaùàð›wkãÎÜjùœvæVëç´3·Ú(3Xrû\ʰÖsgê™Ö0SϬίț^7~ÝcpGˆ-ËGyÓïÕ†[e€©¢ÈÝaUzÁ(xÖ5ÌDxì<DQ8Äyg)=¿ðy˜|©’”HÏÐÔô™ÛÀ7„Bg}Boj ý‡kCžñ áBK(—ZÃ/2~£ÂýLÛ"øA=Þþ‰;ú¾5R ¼‡ÙóU.ÿÄ}žé8ÝÞíZÆ+i…GK:DwÖ Ïܾ¡<œ|‚Ö€AÁµ!Ïø†^A*%ŒK©áFºoV¸ŸiÿψNºIaÞRÀKÁŠñž–N_Léè²”’\‰Ì§k ö¬-O óf5ïÖ†Ig\h ãRj¸‘ã…wž¾Uá~vð[E½: H?éJ²6÷âçAªüüÂÇ/Å•à­}æ6^æñ¯Y5Ópã º6ä™| s¡%ŒK©áFŽ8|{‰Ìt±'"ÒÌ.… •nI[N|f9¨®ÿéáºüH¥ò©ÎZ€> ŸïË#×ÿ¢ã Ùö.T=fåòHž„[×½¼æ\=ä·"¸ÄB<ÏÓ–Â %¼‰!6ãw¬%¼Ëƒ.zÒ|–„Õ`ÏÚ²Q/{]x¶L*cAK(‹ôúê ¿9±È–8uÄ_-xgИñŽ€jÇ#ëq×ò ’ñƆì p¾Ì¬@ž¥…—‡I¿L‹Rƒl}Ù‰Úüˆ/V@xÖ÷W"¼¸Œ˜oJ,?k9Á”¢Œ‰K5ÆõØî)š¸åY‚Ýö¬Až§hFÖ´åÜŽ7Ù” -a|K 7r¬f­oO8rŒIÇ7éŒ"¼%øA7&ïvܼI—"^º1åM¯ t5è³µ<)Ì›Õ ¼Ï#íU:ãÂJ(ßRÃì¿YáÈêvîý ^%†ßJa¬˜¢]*cÇðËó ž‘/“0ïê ôYšx™·yàùù¸ #H’é<蟟%^MÑ•P®¥‚)^^»Òì[M†ï%CPÓË&¼“ëI‰†!QÆzäÎy~ác?J›%æ~¸ì™Û á„‚»ä9J ˆ–׆<“tÌ…•P.¥†9tà¾Qáxž“û#íb‰IItåLÄûéð’IŸWQðó N¯ÙÑz{´V`ÏÜùu¡àÝTú~[œÇ­yÆ„+¡,ÊûkdŽû[ Ùô$v ¨8­V…6<=‰pf®Fø6W4V—Ÿ;ÉÔHê'ìîó$ʃ•hó†Äád[9ÉoT´»¾r}uó¯_:47˜ÿð?|l—:ûS™?û‡þî>йü9êw÷‡õßíçࢸ`³Ì +üÜ•rÀ>âet-âÔÓ4~\ ¢-ǸßZ Îùˆd6tð'⨴²<%ªX å›BY Ou©Ðëñ©ry¼ ¯Òß\Äœ@èw¼@ª[Rð$þb—¾xÒnøP o‰ƒ ]PgVhécÃ5çœgwQ0ünÈø~ý™æÏ:BÙ¸ i'éðâe;þËcÚ•ƒÿÿî6#r]}~LÂ|¤‹^WïÑ_ÜgÆ8Úa¶˜>â¹€xØ6~T>`Dî‰&lã}¿ÄdÈx­iæ’¢tâLOB£¦ñ®èqÁ\î_¨¬DâYÃp/“®þB5ʈTc{úé^<— £žþɠǽǧ߰ôSêxúº·gJ0Z½ÿËjÜIB°½/ó¥7VŠ™ êVj‹-Ö¸2]íÑ‚Ê\ðRÖ˜=o¾kÿ}=Þ5cµô{ÌY‹1ßi&ÔàÓ}Ûÿ*¶‡S™m|Ú“Tz(É´è‡z¨ ïóýÔóâfˆ_g7¾ÞZ_3gIŸ]QPËË´1ŠŒ$W1ž¥Ú‚{Ï·Sp*x»|ßq(TâO¬»5h˜ñʫӭw·¾Ì`C˜~²¶:P¼%ù‰äÏü*øWíûÆ“AéÞêªý_7ð‡:Ú÷î'aàͼL¥ ¾Êåé?¹¿ â‰[hHµ5P»YØËéM’|×äEk¼wòÀ[Ï&¯l,xûBvÆÂ£¸éqäâxî™v”EÁqׂ·›?2µçxT·Zœ˜³¼ž/vð— v“™ìý²ç¢Û8Êc›¹hèRtÑVF˜¶.ÚÞ5Ÿ×“†ÓÌ›‰¹écנ޶„C¸†b€«ü£³Ýuµ« Ê ¼é]ý¿ºÎ>ÐY¼Í:îX%OXq wƒd#Œ×˜öó©·æ› j-X¿„°ê‘_WÃŒMBgÞàE²âÕþÆuÅ”^ƒýr>å•Yâ&Ž0üìñÌÓdþÙ!%šv<¦âO£of –†­#7ê¿b¡˜Cê_‡‰`ú!7И^ùÿ0•àhÞ0»3•"ÜóŽü®À¯H.xxÅëž^[F}M#ÿ^«½¤âð<­ßL˜ýÚ×qůìV0$¥*–ÑÃÑr™\Ê›i§ãW±ãUqÓQÔ!P‹ïb7€^—¼ÄbG§@iž*ÀO vb5‡×`ágfÕœ9|"îÆ£6™@Í!–=0Ofw¹‰ÝíGn¸Ð7²á*j=™ìÌË0m­¢ã”ò¥¾>Vbíp¾}.€ÒÓÞP½ž]‘‰°„nþu¢c9ôÛÉ$¥KmáÎÕ ž½}]f¿ÓJ$„kxJãÇDŸæH•Ùê°ŸX\–ÿ3ùHendstream endobj 351 0 obj 20482 endobj 355 0 obj <> stream xœÝ]Ý“·qO•ßî9yßǽ˜7ÐøtâTÅ*ÇŽ+±ËñUåÖÉ£ŽŠÈ£Ä£dѽ»™AÌÎîí]*=pn4‹ÁG÷¯¿{¾Û‰Aîý7þûêÝÅ¿ü¯ÛÝÞ_ˆÝíÅw2þÏÝøÏ«w»_]ã waVY½»þê"ýRƒÝ9ƒp°»~wñ|{‰ƒ×Æí_ÇË`½Ú¿ÏwßåËùùîËùòËëßá«eñj¥‡ p6WR F[¹»¾Á·þý&§äþÃå•„5!L—Ú9_ùAƒPûO—W Â`”޳ÒN‡ýWxWâ^ï_]^ám+œ°øÄ•rƒ±Þó‡Ù¸7ô°qÆã¾¦kã”Ûß±û/ò/?ƱÀ%àöä÷ÜÓµs¸~?\^iÀÉÚ°¿Æ_*ÜþMçE÷i9dó¶ÔüõwãÚ%ð»Ë£ÇSÖäƒæŽ™bÒVí¿g7_²ë·l–¯ÓÈÔþ[ö›ß$~0ÕZçÍï{銻K“ÕzÿåуE $úRV’s$$>;¾‚ê°Ò–ÛñR•[w›ï¾È—#Ix˜¦ ÊÙý_ÙÐãk þE»ç¬e\¬çiúWÓü#?3òCyæ .=4ΜH˜ÿxæxóÓø+ª3W @ªúó>“râS+8Ÿ5HšÎ¸¯?ÒӌժÅÕf°~zúÏ—ŒOžáK2AɃ4Á ÝÁ© dàUk*ûŵ[‹ N ÆÓÜíæ¥¨ÃúCc‚BÛMlïU9A°ƒÅ3žo:•ˆGi{ÝAKo¼âÓV8ŠÂIq(â”>2" ½Mܹ©WD„óê]4¯:|»DQb˜-(z›hOkSL=˜Ö_ ª  nÞÙ›,p¾Î—Q"i%‘/ïò]vù2_~˜Ÿmm7TóëÉ‘-UPû/"’‹ g™2sV7œàøÁ!mn¯P|¤3²È 6…3ƒ×£à4Ú¥)ò­ä"¦”YxƒBØBq¤Tq`ï«!ìA¤ÆÉˆ“×M‰³NñÌÀÈä6¿ oRJ´ì.ÒbF©ù¤Îðƒy:p?ãÂfÝÖvÃ8Ë­;v›î@›kCÄgE «êwÒR᤭²ÊœézÌHl"ð¦¥8¼»ÄejiËöqkmoiZ~Æs¦Àâ\-Jöýÿ/‘(R9ßpþzBºHµQ÷k±ÙLµPpÖû&gE›(C_Ôrå_3JàóÝp¶ü,´q+P Èž^˜~i‚ö=j$®–U­§ÚµJêÙ©Ì„rSù­ZêT<|fÒˆ:ÈJ×Ѥ~yY(˜ì‰Š!4ê„ßxÛœ{7—°oÒ[œ¨™Å°!zDw·Æ4• ©IؘiSãÞHo•nJ0|Vo‹§GùsŸ¦*„Ÿˆ;ÞOÆW–ÓBB5‰›öÝ„ÞÓ-‰~¥<Î_šŠ ÏavÆCFTýóUT£Æ=ïç!ÝȬºÛïl©;ïäÌ/ÿùáLk/Èü³é’íæqYq…÷Y¹aóC½ñòí|ÙSnTžW[KA-9f柭êiAIK}f=­¿5x*Óë~~ü6×[wÜ6gµçËÕy¥eÃåYñ—…\½+ëpahïÍÌ}ÀäñH‹üg@cRV´05ú¸vÙƒðpô!AË£À䜩¼O?ðÉ#o@Æ@ФP[¡G#=À“AO(ô,öùaØsÜäThz{¹º‡¨åImçi®ƒšG¢Ô^W*F„2¦ž6­yÔÆÙ¹žÿ¨J2ÂÝð!¯êŸÒQ!´ê¦‡±æU©Œ)Û† y o A‘E£LÉò8rvm0b>¸Fëêq K朎o‡s\®FÀœÖ¢píá5"¼^z²qO-ãÉkw‚ñDï1:O·9ŽÜc3Þfb©¡=ÑØ»|wí#¹eiÿüivŘ!vÞõd°SºÍûärÞ•eš§Ð,³®xÝW·Ù¡º‘¶9]¾Î—?äËyòo绹ùP€;€rUÜ;/Wßák ¸G8û*ëMÝ Tk頼ɪE}`éî]}É,Þý°®OáÌÜþËAx‚{ȈA>E„g{ý!Ýó‚*.¿ŸÌ{4rjóß1È î«Áém,w-¼.Àºç“húƘ·‡‚ ÎP™÷Idùf¹„{n'6jÒ½ÝF°vf@”ÿËåìÜâ¦Cµ=ñáý™8Sƒû×[:Ÿë&uI.{ P8ý¸\æ†Æ§i~¦rÆÅ; ‰ã‰A ˜Í PùǢ䵶–¼£ë'ùÒk×I[.>ÇMÁ­Pņ×>a¥…'¿òÙ㢒ªKOíÂQßswœV£OÒ+SƉi÷ øGå^ÃÛùNv9в6º •üþ{Úþ`\år¤ÅSLs›Ë1¡9Dúq”7ip•'8FiK¨O3î'Ú´¦u„!ënɸ Ís²zëºúK%»R¼p…(œ4¢E ¬-uçcLß<)˜_õ?4å 3ê™dZHîx÷¾< ëB3ÅäkU¡Ú-òðÚÓ7 e¿ôaòà‡;×Ò·í)ê6ŽgTïéÖæ[dV~zÚ¶åOжñÒ‹ìsgtMxin.EC/­5ó3jÛÙk³¶-˜ŽùÚ¶7 +u;[è«ûü²R¡OQ·#±Ò¡×Õâ¥#(¢Þ¬MöþH?h¡*=bôè¢ÓÔu=œÇ{tÏ`ï5¸°T2 þåÚöþIøcPz}¤¹Ÿ•…Ÿþ8+rÃkŸþîðG )ÝVüáü¹ó}V­ýìó;?´Í^ÈsÂÏk¿œ›BÅØ{7ºr׬}=CÄ:ªE“ÝÛ „]JHi#²“ŒªÏoë—¤„¶>S;t3[,º:Ìq•!…Ò")N…qŵ~‚¢´'§Fê4’=óÄÌB ^‰Ï‘8AËÔr‘‹†'e¥žØ9@zŽ„6·¡Æ ?9?®Þ§ÙW 2½3¹Ë—ïóåM¾¬Ñ)mÒý:â ìÚ3mäg«°'R=±sôKeUð+zֱЖŽ¾µÚNP~ÚI¥xxà«´ìæüéE¤`Ò¸ Œ4n‘8÷…^M«[«Ú™7ôePðÄ⌸ôn àUð "û"ÑžÙ’jyTaäÒ™i¨p ÑÐ5+ÆÚÕC©bŒÞ-BNžjEp‹¨‹Ó`#/|ÐQ¬v’¯™RS‘Ì,vþ”åÇùòYì\7øm!k~}}ñÇ Mq¿\ˆÝo(ƃÇvF ÀUf÷ï ©5ýùöâOGÖQª¨EӨ㌅”¿Ï³ù¾%0;UJ¸[³Æ9ìY:H­]…~´ÅDÎ=¦Ÿ*'m`wÉÿ‘—†Ã“þO" ”3¡„L†kœ>«´|ÙYÉM.–NCE5Z¡´ý%R jg:\US`eÏêö © ´„•‚»ª €L!X”†]´Aˆéª6 o‹h¨–µ=t¢(„˸#`Õjªz¤ ³•×Ñ)zZ¨âéFšÖø=#¸^IGŸ`æÇ£enpJª[¸æÈä2FññO5÷yD8ë*wJ™2ÏŒŸBYb6 ¶ª%~ŸníGºø»ŽÒ±Üª ÂG¼ÙšÃ@31ú¸ÚªÔMQÖ×ïõ¡øçLæ¸ò`Z5ú£¬JK)áƒ=<EN–8Qu[(|ªôFž-LßE"m“Ý–Æ•Çc"IÇ95nqöÐ÷j¥{šß¹•N€ïÙãé„”vuÉH@3£R·SO&WsUéVÛsæ TQÜ@ȉ"ÿN“[‰J´Ü¬z2ÿfYôAå¯BÄ-_dÞÚ°ÆÏü;f˜.Û{$¿ÄÝ Ïüïßš§FåùÒ»–o¢òÙ@y¢d¢ôÍÎÚxæÒKÚKš=1j]±)–Á”Nµ(«¿È—È—×Í~[ø®’SÍRÈ%ì4ê÷±{w¡´óŸÇ{ÒRG2­,¹K“#í7Y"}hÊÈoóå›U‰DÛ`sr§@îJeÀÀeÌ~ Ç5Z/ÊÖQ7<1”Œ« Ò *É­xÊÃÊ8+(‘¤p(jƒtÛþp4åQŒž¿zQуG\ܦµâÃ2$CdœõÉ‘•g©š JOxõAžI8PÃ0e%G·C½:Ì\Û--(TØxºJ?Zjö*¯›ì ÊÐ`5ˆ?Çinÿ2¢b^…V¤~D­·Ê¼vÔj~Ýì8OuÙGê¼ñòL•pŠÊƒlÝš„î²<ËÃEå¢PÈï9_”D¡t¦P†–Z'@G©äZç;'DG<…µã˜ƒ26¡úÿäi¼®N"Mù”#„jØ5%⡎‡XY§(ìB¯à§Hm»äã8ÑX§Ìåǧ6ƒôf-BÇã øÄíçmfkZÆt±ºôo“3@Çj!‚x@ð•G‚M•´6±Wæ±y ôv/õcœO!Ri‘­X|”Û)üÖ¨*ç„©=Wx׬×]Ñk\°½>cÜF~­dßÊ-nëùÝ¿ÈïkŠ˜0(‹2æ§|[#6Ë0:{—ÚÙî<®K­¡ô ]š.7{µe[Åñ4"åõ¬œp|Då ˜ñ=ÊM™¾¯¸u,®e¢Á¤HáÛ¢Û¸$KCéb•,§IwsKÚ%köâ®u`ñ†^¢äUÅ:bƒ¯öGff”&b ë5÷öO5ÂEïÇÂR$Z@ŠAú…[dQc½èÿã•ù&±qÎà“µZ¦e.ÎúeÒ“z¹¦)³C»Ji<§]u{ãßíóu‚r𓎠•¶*¬ ³ïáËUv6Ô˪,¨#7ÿá¾x Môg!õáÎÃ).í¯a³€Î'”N€à- 8ÓU€ÇG,ôäY'“cCßkʃ zOoÆ?4ˆ•Ë:F*#„º°5f9x°ø€7æ$—@Å3ƨ&ÏäQÖÿ >4tD3º5ééºÎmiEë—¡x²%|¥}çž%iKçY':’t“E¥X‘BFŠJ§¦§þ~#3YªNoç>O:Ùémf,%+ºZž‡¥ðZ ¼‡G¬¯Ìá&£ŒŒÙ ’ЏT¯’(ãûªø9ÏŽh$± À9Ô2¦’±°›tyjŸÔF1ðõc(\)AÌ cTG+{¸ÙB<jïÃùr/méú*uÂ3µFDÒf=Q‹æ\fgž_#CÖœO#2ÂÇÜ­¢½m¥-Â{IÍÕÆu©ÚTÜZ®o£UÖFEh¥œÒ›Ãý¶é¨È}ÄGÊòù’ÁG(–?ŸŸè)@ša -J‚n¦Æ˜ÁÔ@·Uú¡Äõмç[’O˜S3ÅÎEÌ%E³L>ÑÜÁ!ÑŒÒV™ BñÌ›ýÙPŠóZÖí»ÎRÑöu|ž<c*j_"hfàÕà”ê»èéÃ"œ¦Q]ãtmÃ79C%•5ˆ³!ת@ÄÍDVö•D|Õtb¿Íw¿iºÁ7×®µ%âï³ ‚j]h멹¸b!åˆf`‘Ίgd»-„FEìT4¾-ö àÛ~7Q«ë~%f*¨¦t¾ñƒ¨Aù-Í'Å]Kãœ3ç£ÆYf2s‡ð¤À¢¹×D;ãggtë 5m•Y]Í-é%œÆ¶÷ѸLÌ'W%¬§Ö×?ˆ”©L_€™´á5§Û)½<öI!?Òf7²=6Gv›µ]¦j²h «eM|?—Ç(K-ü²Ô¢N©òWu²v×C@ßor=Çí‡ô„_whÐDÇpûâÓI5·Ç¤³5";Ìí³òG®{+T¹Û9aÜ#Ív1'9H{:µULKäWÔä;‰ŒÙ4ш¥X—giŸ|0SQ¦i7³7bßÇÙŽ=ã‰ec+´[«ÆVÙm¸hled_7\÷¿Õ¿[ôžR«îP¨¹ª¶l! Ž u7ÖÓ7ßX×–§È¯ì”ëÇÌuŠMºnÇÝœ{Ðñù÷â;Y´"Ö*= H#j¹µÈ–>5£òA¥hÉ"e®“$²ÔU[0š¡G¨}pU«Y7ÓÔ‡&ï³n·ç5Fko|n`²Á íLí°ÜþU0 „öªÜ”‡©x4e’|P„¢6žoõAý<ÙÜîp3v+ÌÆfìËȆFÒ«SЏµ“˜€u5hˆ×Þ“ëÍ@É>ôR ¬æH\d,ˆYQJ4jœ"Àãzº4(úJÀùìEG%lJå€=yV²žiŠÆúžÝÔ ˆR²ÎqlXe[PÂùúãÝþ´”“áUiu74rK¦ÌçQäêõ/f­ÿÑŸÌZóH¡ÄÀrËk±}—w”µ-:¦+Ñ"-ŽWÓԮȵÔXÄ1s¨E %Ag©ÌhM¥|ªvÀÌOD•BÕ·“ŽG@…°DŒFGã‹rôj[Ä® ¯ù§ÿ½C[©€ :ò35¹bˆvž¾¦eë¦go,O×éÞ?L{ÞÐÓÇQ‡#¹õ3MäÀbáº'ýNu1ªÃ ¥¾(KûŽdE ¿ÁÀôKmä<਴ºA¶Ãkš:²o“¥®¬{ƧshS¥ú "舩«Émq7J{¾Ë3%y¼dñYç ‡°øÊÝJƒªB“úˆsr/䚎c’®Ol¥&m¨[õö[©ÿ á|÷È–‡Üt‘á{w°;À¡¶Iå‡ÞaÚTz üíñ9¥ô³àj^·ékj]r½{GÕ×D*8­(nú¶ÄH•5‹]¶Æ÷iöNø5ñeV±DÅÁÕâða± mÑž>1Vc¤¯hZѼ›Í‹ëÁ5»žÀx›¦6´ ­µTâ*„@¡WžÏÃ&F‡7ûÌÆ›% Ät—ñ×ÒÞ¡ùZY§C¬uƒRJíŸSß^Õ$eÌòbLñ¦Jç¼âecéŠä{ÞMl¡HÍ»9$zr1²3…î|]S¼¨%½¬Bîâéש²‘:I.}}Š&Eèç–R+MˆCÅ·«)g|+V óz—9Ê4#WHÀTé"ß=¹Ç:p½i>¦%úåø€kv¤¢ÏÊ«'ÓÑ ÿ¨Uôv:ú*`ª^rE7šã!ºmô{õ2ŒT¬h®{v=ÊÓiÐ*Ç(­ô½²ï)–ŠÇwNuc­BâÊÂà¨F™¦ð±^-#³ºâíáqÓÉ—{\ÜÔJˆÞÿ’ÝѶFXì6ûì9ó{~¸Åâïu)ÛîÓD”«q'M$œ£¦¢rtÅ…ó@DK£¨Ed­Ô1‚Z)!´tiWÓ|è‘`uAª|™ڽʊ¬ÊT*a—?ØÕ-ÓqµJþÐö(s¦ùŒæûŒ¯/ýœçd$îêc‰³\ýTïzéÌÚ@ü Üš¶†ˆmLx?•Ó/eÝ)ImŸÃoäÙq»¯8uiëꬊéícm(ruÖ¼b÷ËÍ'fÖñÚ÷Õ$ʹæëM?’û臩¼½Ëte{–˜ jwW*æêŒ¬bó9ˆÂ‡KŒÿxñ7çu ×endstream endobj 356 0 obj 6517 endobj 360 0 obj <> stream xœÝ}[¯]¹‘^žù yñ‘am/ÞɼÅA23Át+˜;Ý’Z¶G[Ýv[ùõ©¯Š—âºí­Û 8ЃöªÃEV‘ug‘ë/÷ËÅÜ/øWÿþæî×ߤûW?ÞýåÎïcåï]ôö>¥å‹¹ÿòþßîßÞÙ‹1>™ûŸï¸‡ûoþñÎ¥œ/¥Ü§e‰—’ïßl ¯ ’ì%úq‰Fpå>–â.ɪç”..Ý?¿¥\wQ™^q„]í2æ BÚ˜õ‘:È!^blê 'wYL!çx±iôמe@tЂÓk©X×;UuÈöüüîwßÞÙû?Ýù%S4v ÿiVߤ`b‰—©w‚x&[R.&d Þ,މ 9\|H¾ø 1Ü1îÜ É—ÌcùKÎ ±þbÃÔÆÒôÚ â<­ö4–Ë—è&|¼»˜ gbË2ÑeÂrI¡ÓÎ'E áb™BÓ $],·á5gH¹xtKÓ¤“h„ðb.QЋîÂìK˳ÈБˆA?%\é9Z ³¤†pÌŒi3„H¼¡+ù ÉJŒÖ\‚H¸¼eÞfH¼x´q¼°RˆÉ¢_ð6Cã}¾,µŸ|q™ ÄpÖ6H†Ñ_Jí§]„{]>‚ŒEm­iœ3¯ $ F/Ô(qu› ‚Ä$7œ ÖM†æÇ6æ0Ùaˆ¹à:7U€*x¢*6«„±‰ª”by%Ímq„hXzG”'Zõ`$Bô—p)~‚Ðj-¥A $™0¶µÃJÆìb[c‚`Õ3á\y·Aˆ‡Cj½D8ç ñ—…(…ºÈ¥A4! °r[ »$7©ÉÜ!)¨ybH`ýP ¡ÞÞP:6„\±¡OG$b·$ºÅ°&C³d!vs—ÌÚ¢‘u>I1Ñ3‰ 4 ´‰ Ûü’T:¼Br7â¨EV®!…çц¦¡²D‰‚?¡P×€È@˜úóL‚]ŒŒE«[ D€R…˜²µqк€VÃ"„´l”affH–·HÊüZk¡ù ’ F¡AÓb ŽÔÚF±·Ä.ô>AfoÁ@i¡¶Â–´¤A?$ õ­`¡$’Û[!Kz[Ð!Ž‚µñÔ¿`CÆ9 iXzK“»Z)/ý×PØ.@ +‚„ª&-MrB?ÔŸ«£yŠ 2¶£é² ä: IJ$H¬ÚÄ9žÊ´ÐÂ}Î1ã$ViužW8™Å‚ ¼|IÐ!€[@dΩcÂ<ÁЉ€;R‘4Ž! ÄÄ8’9Zz‚4ÞrÄ‘ã8rYä%Â!Z@ü"3nHÑŠº!3Í3n¼¯ÆÁÖr›Tg˜xŠ#™@ .ýt NʘG¢©æNl¡¤š‡ÂéƒúxƒæÛÊȾHƒÔ¸ÈÓ´Àÿbå’™¡…‹|´2uÐ 2”¦F̼‰ÒXß(Ò™ÈÂZÅÃ´á šž$ôÀ´q›R—È'–£diƤ ð@›!©r¦O¬“%óX;¼Ö„ªò¼X>‚”ºŠ€p&K¢äd&‰x‹qÈ91q‚sb}ƒ`‰¬ƒÓª›Ð,—0AHN7 E³œí„ÜL7¡LnEöU4­"ýB6Ma]´6/ôˆÓÔu­‡é“Y’¤õXâb§WÉ’h‰9ÅBF~‰ ?C‚PP:÷ž ø’¢uõ-VšaTy‚b¡†ÃY‡yUÆÅ‘C§e G.$·©«O>fvÚ„áÙN4+7 2 !8 0Œ¥Íp•=µ¤A¥Ic`Kº.ye–Á:X‘a¹-†LÚº[/Â<<€æb 'ÁÒ\-¡{Örè¦Ü 0[áîŠ`ÉÙßëîŠE˜µKcTdíöTY¹F5¬ÞâÇ¢ý+Cv–dø`5äU~âföP»/‡h;iwÏ{ØÉ%4Äì§5§ÑX™ñáWQ¨Ãõ4h*ïÔ,,ʃ5ÄéLQ÷rͲh7x)A&ª»Ê˜2öýº;]“ Êå^à·´C6ÕÃu_/œrïâcçU°ÐôN1ÂBL¼Ž#RQ!éXSŸ³ŽGZŸt̲/òH=®Y ouè³Dæ™aƒÕáÓBº¯Db--¹ÕÃ0@l¡ÚBZ;ËÂé§î-S(*"$é ±Z\ €·:ö9œžvHa—ÀÙævH…Áp¹CzHÝ!=ìîšB,¬Â÷Öf„øÒÓÒSÒÓ ç‘rèž•h´ÄE‡ôäF›Ã‘©ÓÙÕ ­Ï¬~I©åæ†#›Ã‰_-G i—˜›ÿ\Ø "ˆG$à6ÄÇ¢7‚aB¥j‰@€w•ƒx òÚdU‰'kºæ d´±¹H ëBW½“@šS4_ï/ÐbENt™Jyü ëB1!HfÊPÄ Dv' b«ìø²€äP@æ p².WiGÖs‘S3vA2(¤]MãI)èGñ"áÁÛ >W"¢‘UÏ$–E…S噿B¤ ’ög¥Š”wÉ Â¢g“«‹®îƒéb¥¢øš¤B}Uò‘&cA&•ÐZÀ¦z:1:IÏv#;ª¤QyÏÄz“ ® W„_c cS]ªˆ,%Õ"ÑÔòK ÍW¦•fŽLˆx $¹µrzX%"ù†œ6Ö! 3#€$-àÜ2vÉrvÙÖ¿ÃÂ8ÑÑ^FAh zŒ­V !Ó9´v"K~H‹¯Âà­ÅÔ‰KÄzHçFsâ$­OZ® Iüb+›'âOVy¹T%˜<»‰½Ÿ,éxšÃŠ3)N¾gÓfÆ×­ˆTªÌ'’6`áIK›P7'’©sd•@mΡ¸ Êi¡’Ø»&3’ªÈˆ­N `óH¨û<µ!ïR„£CÈ­Ö†"εaB‡/ù å.á,Óâ¥N:y§ÑNÓcleÈäÛÞMéS˜™ŽK¬î#Ö†·SH­‹_d1Gm%ØJGHqm²È†òÑ‚1¶¾Ø>ùj À<؃ö ꎔě‰\êʼn} \êΖØB reG*窎)ôDt£6Ì’a9V›jɴ͹¶ñF1Ê%ê½9ŠêN\óm y¶è=¾(9 Éìû«½Â*㪠1£w3Ä×Á6TD¨c5:ÄX¼ã20¦…¬›™ª—(kÊ#‚Ÿ¨güY&{‰w\‘9U#Š‚yï*²¹â/‚…eCÑ)Å“¸ U÷Š ¶0µ‰ì Ö‰V n\|µÿÐá˜ä(¶î»UÄ´ÍDñòL¬¬w G´5{öÅì}BŒÈòÑ=8p¢­û„¢°1k¼›×å5ñgV'y+bºàT¹_ªÁs" ¤Äá pD{ˆÇ¢mFMeY‚ìM°^²amÿ¶Ò΋VY Nx+"U&ÎÛG°jöÍ?€ä µ¬pR²-(¢ÄÞÒ0æ  7ÞT—F|Nˆvu{Š,84©®Q`9ÆÊ×]ÔCÕf5[Qm0\5vþ!Õã+bœˆ}õ -{ʼnÆ,5=ÊÞ%AJK³W3OØÃ[‚eÏ:?J$Ñ<ңص´®®•dG ÐbOê2MN…7v$ɬ#9š%r«;,´ì@SU­âðpBjIº ×K¹<û¥äÖ‚ â’X¡¢†/å§.TôéàK0$Öäd1r.-{ŠÈ¤VjÔ Òì9•ØvwP ¾^©™È,“%5Í(q\Á~aÏz‰Äf—˜ä<•ŸYsž •ókΓuÛ³ V8°õ%[=Ú\Ev`¡QVÜÓ«VöP»?ÝÛøÜò \å´>M@KîVtYKÊ*q[ÉêND'–G®Óƒ…n󿲿ÛÃ5*ˆ°Ú*ä)SÓÓ*Š©)lŽt¦47A|ÛH”T8Ab#AÒåCµ$»©SKµ´û2ú55pMè®Ùûãµ ÿÈ@µ]€eñ-±,¤*/²—°ˆÖh› ôX h€Ôí¼ºi¡ ucÙ0ã†të&u{DAꊪn³T\ê6ÌÀµíÔtrþ’4[ÎøJ‚ýM îÛiÔ¼…‘–oîC·A½Ÿ-dðu{KÕŠ–ÆX­Š©wô혲ިt# ‡Ï)¬@g“u²-×èç‡"­F×½Ÿ-¤÷ÜßÒÓ¸xvXÆX ±v qEZèFR„÷þ*÷äwýïù›ûß<»ûõ7–$—Ì‹5¦Ü?ûáN þ̽:CV›<‡tÿìÍÝß_¾ÿãOß}ÿäÙŸîÈ-¡8;Þ?ûíÝÃóï_ÿûÛïß?ùÅÝÃûïÞ¾B úùÓû—/åçrÉDZùÙ îäMíä<»ûWÿ=ƒ4 — QP@áQfb~þŸÄïýË»~yK«oïLÀ^ºŸÑW]]oE]!ü€.:Çêz+ê*'N}œ÷tµñ!øËµ™º¡á„@—=§Ó™ºÞ ]+‘ÿyWW[};†™ÔõV8n5ºª"2µ¡ÿ瞎 žÒmÞ££«ÆcVQ’Š)í˜í1@Câܰ_oõPåRè>Ýc€æÈž¢zC+ŽŸ:F7´úvø¬çX]o¥üs¬®·R~È9V×[!’rÅÞ(€áú/>rP”½Ü÷Ü<>GÖÔÔšYþ»CIPo÷gîí òfEU§„äHÊóó»†@oÐð«Ì<å(.vjG%‹ç»7 ‚=Èxï¹fùõÅá®å­BU$ƒúçŠ_{y¿yû‹&¾T µÖQ…0 N­MõÆ ñy{ `ó‰-ÊÉK_äü{½=W‡uÄ£íïWw6Ÿ¸cÐ[4 [ ¼V‘,½\­ ò‚X>§Õºm_£’Rži£… >zhÏ2Æ Žo3ª­‡Ì·Œ1äy7Z4,[3Ó¢=>âX%âülÔ…±P£}N=úìÅ­=Y€+–Σ¶àLâˆ>Çscɨ¡~{¿¥zõlO4 z‹†aëa"A´â#$K/×`ÆVjÝ6VëÅÇj+êûsgÆV=«13,Z‹†eëa¦cZ´ÇGܤ${.u@$Ú%¸fJGzË¥v-Ð[T-Ñ{hÏ-Ï9 ’ =H¦tŒÑr©‹Ö¢aÙz˜é˜•ä£#Ž¥.§¶ñÞ(@Õ&Ñy¹N´I;\еIÈ#Ý¢\µÓÞíÏ-ÚUðËMKôs ]´±{‹†[}}F^$íQ¤—H鎩º£vÛuG?ºÑuGÈÈ7¤ûëý¹ õ€T±—׫Nè½w­ÑÇo-~õõÓB=&²x¹pš0©}÷¨L„ƒÅÚi™ÎÎ86·õï¸UÍ(öíÏ; òP{¿ñX?ŽÓ¹°"Ð4üZ²XŽ(½TŠ;¤òôÚY¬dXë-*⽃þÜ™°C*õ*—õ1:6$Zƒ†cë`¦bZ°ÇFÚä)Ž­Û©¯Íi³ý˜Zߺm®P³ÈÍUj¹?w‹Ü!uãµ÷P7fû}ë¶cÑZ4,[3³§øèˆ›$nP×!•ºÊ¸~v°טªµhL×:èÏ}Ó½C*j½‡Šz£×h Ž­ƒ™ŠYâi“ 2hëŠZ³• õ~æ´Çƶý¹Yâözî”uHEL^¯X÷Þ;Y}üÖ¢áW__Q0» ˆ¬?|N™*.¥Á£¢öwæÉS¾Ð&úK?qÓ©µþÉSÇ·žš‡üäÿ<û_w8Þb¤~ž½ ·Âx+òߟ¶ýî‹»‡„Øå×9—ß´ãM7¡ñ,Ã/žÆë RCˆ°Ü ASïOy¼|ßþç1Ì Äê1ÐGm']î¢uû”¿a“tâ&D[„’Á9þRh|=@sù¸`F–ɲР„ûñÜýSÜ`áç·L]{¿M˸W°Fx76-‹'Äq¹•ç¦>™&â—bÈ\ˆw‹¼O3ëP'ëSCX5¢ÐqLjýÃSÞ5W ¢:¦‰å…XpˬÑÅ/9*zÓߢ“_ܵát\‚Nƒÿ‚Æ®~ªÿÎDᶃÅ=)26Qö‹=’øû  Ç7ï(öüÝXׯÄí¯•ËÓÃ,ª¥‡ïžXÂ"®ú £Y»Ä‡eˆà£nû-|\’´ H¸®fÂóµ"å'n–²¸Fb6Ôþ­jÿªãóÃÜwjfì»AØ4Æ—,ìÔ÷T˜\åDý©Uw/¤±óÎL©&z96¸æ‹#ð÷OÀ±ÞeLp¤XŸ«î&¬Ijé}K“üg5úk5%M“CxÙ0aòR4bDémn  . n1Z÷Ñû~Q±u¶M÷W)&Êæ•Õ¿u7•Ò@Ou(\­5÷#3`È›êXKD+è‚‹1…¸P¸ÀÁðµb©+Oq[q´Z§ßF™~{1Ka íp[¨ÑB¤øW¯ë‹úžñÔÙ˜ˆïÆ‹G´¿#îp,ÆYs,¾°”I«vè…Ôã*hÿð[taœOyfGݵ^LÍLï6ȶµ‚9…yXó÷ A“¦Á?JX¦3IÃb$í@«I—šú×èš|Éo£ ÷ñ+A;‘¤º{«„îEõ%à›&9בքo—€ÙYóËO27¤xk'Ü¢ゟ¥³bXË¡,AÜ[­¿ †",•,ÍDÝZƒo -êlâ‚÷Ú:ŸWæ§A_È:-ÆÝ&qó:yò<òÃÏô¢]HúçÖ+’Ñ:ÅšÏ51Z¯~·Ë2 ªûÞΖ‡ç>ÀMFÔsÿN gtš‚·SsÌ~á(!“1 ‹FfÃóšhæ°ñb/%ïññ?úõ7ä¢+Ú0Ýfÿ't–IË» g÷7½}­59¤ü]“8-ßÍ)}Oá+*%–æ)4^J6BA\& º#¾RÀx›­w{ôÆ‹ ®˜©õ°HÀÏæpf‘0%•Ùd¬³™ìÔOµ­›Ìu›JR7 ò§Œ0¢+îvö”ßð3`YˆÈãÖ®,¾QÃR±¸5œ¼¿‰³Eºpå/«¥?«þžŠ;ã–$n¾§áÂÚRm'KB”'+ˆÆÙÏ…æmnàøk~bhm „È¥zÝ6àáŽSY1 .ã¤PôÔOB‚ÌçÿHë…Ùc¸‘a¿Ã±[ƒ8›ß£PfeÅI²yep0ÃÆû1u7óW5ŽÖLßOãKJ‹o@®Ê£Ê}ri_[M| Mޝo†X'¡¹t<‘aãhŒ‘®!Äü®­PS›®TDBix ‹šdÔ%Êñi èÁ?èäŸÉî{±÷N<Û—ôãó4EÚ(½©áo 8 ÍçlYh> œÑ‡8Àüu›òu¤ŽËDCÚÃCgxö5üÚ³©6œ|‹£i#!å’©oÔQÌ®…_=þB»)³[,óÅ?Æ×rZ…E›ÙKyOX˜¿¯¡N¦@³»W˜4å¸Ë¤" åâ·áù£µæ#bÁgè5«+ŠWÓí­!:ÔáUs“ÞÓÐ×ò¢³þÀÀ gS.Ñå=ÑÚ¤¬þ]ìaÜdV<¾åìZ©Iß§4n¨ 6~¦ÿ*iJ?Úã÷¼[Ù5ž³ª7DÇZ´ÞK/f¥§Žâ ýêßeR¢‹ÝÏy½¬}yÞ «ã«W®³ºV* ?Ò%¯*­.ïêê| ‹WVÞUëWÄ—{ÇuL ¡JTÞKºÁ]q¼‰JI«À卑Žm¤sÿɱðù&öÑ%Eñ€ö}µÀéæ;»DŽd’sÏÈ@Ù‡oto¸lrݤÂÅ?b“ªßú˜6©*Ôí¬kWÝXTŽ'Öø›@y7³r.­·]±š-ø¬[ܤ€Üe9WŒGÍJk¬óÄ÷À &šÛÒ†OÏÉ{G»4Ÿ·ŠÏ×:ñôvökµúº²¼ÿGAÜoØY/ŽD:ÈèvW ÷ÙUjÕáã+­5O¤1äBÐ#9°ž|iHš³f![ðœ7Ó òïЄìL;%.>èÌ0®Ø¥ìñ>>¾˜yôª=t²[GkJ¹*}¤ ÆL²=ÅfhÎ~•TXïòq~Ã~œÓxK|À?ÿw¸µëMU|~6úÕÞ.é&Žx -°p¬»ÁövG«þÝ «ºI|hèßdÕoÈǬsSød ¹ ?ïëHÝaÞ)\ùÃ@ê(ÊÒÈj{€lÍ(D2`Ñ)9s‘XÛ•Uæª8cÿ³à±Ä²³\ÌÚ/êBw —âãQˆÅÞ+ùt/¬c±‘<€™YE X+ „Œ9J».:b:Ú±Ôðwš7k¶ö-|å°v‹¬åtÏé¾íž+{KY‹EÊüXÌ>!½…oÆÙõœ·Ow=HmÏ^H/‹äzU €±%¥°5¸ÜõNªt“˜^ëÎ:r:H _>9v²ÚŒ”|bà™Ú’NzÚcØ3Ê0hçTïø¬5‹å=œwSwÂja'~Wu9Bß,=Gü£= º~”Àȸ½)j©€¶y~T~V§ˆË¶Èl²)'¸ôî/ƒ…ªQ´%Ç'S yðÕ‹ÍOº­àS vç¾ 6pèñÍÎøð¿ÅY¦ð¶®‘/aiõµ9OF$7Þ‰ÔfòšìGÒó!qb‚”àBÊññÐÉa’X€Xj¼X[¿–Î#M6g–²',m|b /L2äY‰ÿïˆ3²¯]Н#mbYr©°~5ˆ†ÄGrwSçTx½UøªÕˆ§dYdûÓ›U²R«„URYnM+hÕ}ƒR3ÔÚWÀç'ý-}Ÿû c—Šâä8Çɳ¡EJkEÊŸ ŸÆÚg×~úª°ÓñçŒ×…$¦UHVݨ£¬/o½!q>iTMÉAô¯ôÞN-ã®™«kºÙu4„öY.L‹@üVöª-ÅóŽH–½í[º7¥—ÿ^§©;7{/Ì5#³Ô«a>ß¡l®SÝ€:æ4Û\]:Æ­iNi±†ˆˆu®†nœ†¢µaÂW„—Y»ºÚÿÏøF_8r–߉*rf½÷Æ/bÞßNàñ~'ãU7Ÿ²dnñy^³Ù0‡ìÅh§LO“Þ7}.8×ZÚ£¤öhæ­F¤·Ì™vÀ„”=žå²ã„%iêï/úöK±}ÿýoO2Ï˪ŽÕENGâñªÍ7”/Ë\dùƒàjr™Š»¶•³¢´TÇÚ‘Òá¶Â£oÞ€Šã­ø/b¶ÎhsN,_¨?y·Z÷TsN«1VÿúK“fÞÚÉbnÜeÍ\G~Ý~!ÇŠmFtºå´Ðê,cp–z)_,Ã`iáB¹š¿¡ù(¾»÷¤¯a6ÖtˆŽÙ±&ìÔÁnÌîk™4jñAi声F¯å yÓæ2«©µ­®šÅw¾³¶O5ÐÎíg齦teãA»ég¸Ý Òe£¯·²P‚ìü•ÒøQ—¯ÙéÂ# ³ °ƒ’Syø À4[Kè'ÊnMÇiåû«Z°_æM=õf«k/7‰‹ B“bËl…À+.vm®V {;”ø–Êrz§c¥×çhž5ÓVN5;uÆ"j§˜Ïµ©^ÚΩøsñÖž?·Pʟׅ¢rÐ`6,ÍÄ»4™'e†vNËìíð.ÙîÖæ&¦ÝÁ!†ÕÕkm¾¶-ƒ¯iÌÚá¶ ŸÐþ˜S›äÐéÜ”MÒ†A¤¹pÿ¨†ðˆ ÿ¢ôë_gÎê6QlŸ5<‰LQü” `ím”<Š—äÔöÎÕHK-Ó‘>ƒñÂiU{ºùD³j¹ÚA*-=œó&;'zˆß+þVóFæ¸Su´vùXþAáÚ#¥ÉTJ¹“oÁà>âŒM%}]¹Ìµ®T·×ÍòQžA5ÑlyÔ|N77`mϸ›†òØ=Œí~=cüµíŸPv JÕQŽ-üÝ7žZÀÀÕ^ëZ É–¯³wÙê¾`Ò»ø¶¬ 6WKZÙv)·Œ¶Õ®… %ªº5eŽžTg7»875Y ½" säÀQÝ/ãÙ BßÐD¬ Óq€ƒLåYm}D<³ñ×>!.®(¦Õ.q™R“gL"­M(ët8Q¸vš¡à&Ñî¿Õ"‹Ðë¬Í•^ŸŸç¢ß/´Issº¥çÛ601«%Ï­+ônfk0)Ò¨¸Ð/d6¢qÍ£‹‰¹jé[y7æ[ØwÒÖBm¥¯Óm§_UœsÐÒð¶x‚ë›QxAÜÖô_OæuX–Ýýú#Uz”i;H!l÷ã·Ù§µ®D‚há¬?’µ¿Jb<» riï&»ˆE¦qþ$ÒÂ%c·$9‹I#›UššG9.c8)*ȨGÛDÔŸËù¼W{Šz£N£²-—vIé?ÿåI¯=}¶ÛàŸžè‚S¾¨Â_–pÿóÝrÿwÎãXî;Y`¢p»PÀÎUé×wßÞiávï´€r‹Ò2“r«ÅOö cßì¿ÛmðÏãçÛñó«¶ÜÃA:&§´sœ[ùz:N;º³àÈÁ윴’õÑúEe«¯™mEª¥hºWfïÈ~ìˆ#ïk¢P=q‰Ìé‘4 Ǻú+èûá4ÎÝln&ø†Ê§Œ[>KGø„ TÖžzŽisBÇŸØ Ô¤Æ3Ç>c%Q/6ðÀ) 7_÷ppíËq€"þ# ~HhYVÕ}¢÷«n/ë (ÔÒtk6Ød;&ÆÚ¹¤ Ïo¤è}—³7[’²4±øæUÊÌÒµÃ&ÄQ[6a¶]q‰‹Ô¡1Gw¬“hÛq.Su1b?þìÜaQ õgãÞè{¬Æ­ù¸ý$ñøhÍ'8¸'΄¯át’ËæÂaaÛz­w£ÕÕyýûÌ«áÅÙ”qaëàìˆWY]È‘þ¶2Ó‘oþ9²ì§ºœ[„l}Ìv[4ÃGd.„OÜ÷¥ù$O÷ÿ‹ò8\æ¹lŽ+‘¹¡ß_'SÀ§?ËÖ±øÔ*gžÎˆ²ž2]UiPãà ‹]² Ö5ñˆEÈ—Oôó_–»'¤Ž‚Ý9r¾ïç+HVGïz}G±8}pš°Ïœ؉*ÄKÛ/r;*¸É‡:yº{ª™ñOÛYcŸï ª¨¢$äΦæV3A~÷r˜ü®¹â0'ÿr‰M'Z¹B ‡ØL9t&ŽìÎAʯζø9Çkñó¦^acÉü%ú¯´@(êÈ)çiZeÒ69ç}m±AŸ&ǧ³#KÁÁùQ4¾F'×¼m0ó&gɉSe5ÞZÇ›å+´®U^v·u÷&öŠOÆ4SëƒzìycBWœã=2ŽºäôìÌ_¥xÎyìôQ~;/䈯q÷¶u‡ÿl7pv“€»ŠDûP¤:cð8 Åqw•tu&Qi_lg©£¥µ»p¾O¬]½u䥲çç\˜êŽ®RÜ¡¾fótÞv|ácõ…æ,†ÏŒ×p§q<¶ S¦©ÝZ‡(éS©SÄÇgNãMUf/d~IÖv½w5Õ\ïgÜ(U$Î6ˆ™ ^ÊœÝÏÉigŽY _ÊÊðTbo+äZ’¤hfö¸Î¶øÛg9‘‹¬Ç>º ñ@×ÕÕ6nÇG­Þ _ {`kvÀ5¸VÏâ—‹¢0dL_#Šâ•3îÆ(JÖÙ­ÖY*ø"9au*mã[îxÊ-#ÎË?ÞµÍä€m‹w7…|×%Î#¶k]ð?¼ÿðàÔÉQÌrµë óžO°>ž~ÔáQþü@äžë·‡JY—1µÂkùŸ¯¿¯Kk²{¦c}!â×Üãýt™c¹ðä¿–ÝlK_6!—º ñ¤vŠp[ŽÛ!ÚÃóç7$ÝŽ®þÑx¯»<µ¶à–ù›7j+‹îlâC-)›UÁfŠ-¡!š¤^ÓÐzçZi],;õš V-®ž·5ãÖŃøyµAï>s“Me$íz‹¿)ŸîèÆÓ5sÀÝ2~oúX¿ku«ŠÊÖ‰!ê%®o;üœ¼ÄÅòñgNQ<7$)d ­‘R¸x¦|JÁ?¼²e›MY°è{Y-}Lp}¶ú(BèãŒ(Â×ÙU ÔÇ”çá·©‚Øa·Õµ»ÚæìÌÊ::Ò)s©ö·ü*Á‡0º³I|qÁµõî“Í… ë|ÔÜøM¥A‰#¾F‚™(('×yÎ[Ôho¼$¦v¾¸=?áüL"I'•‘§ªtË…uÂq×À±êh7\çœÖµ;:„º‹³Kð…6MÕö ‡©Æ“:Q˜ƒžJÖœ/8¹Ö-ò&Øêf3C$—Ó»øE“OÜ»6YÊ ïmî'”Ûyo?û6{û}¶Û`goßš€RÉ{ƒ/¯'|Ôät±©>~;Ÿ:¸$釸>k;ÿ—ãçoÆÏ¿®vö¥‡×úb¢ss9°!c×9ú÷jõŽîª+™IºŽ.;º¥ôvVŠ`Ÿ…¸7èE8uÏÜ´àî,úÀ—­Ò‰W,£ØÏˆ‚ÿDµ¢HtUx¥}„•{.¥ä¯uÎÊà»ô_¿6%Èü©¢½­…nGXÝ84)ð§_Ý‚9vb±rØXóe×¼†«˜ã”·½¤ô'y+…M.—ﲉÇ_š8*ØX—Žðµ×§\Ün¿ñ“.èpÅÿY½y´-7Gõd¹"ÿz~H2ƒ¡ÏêbþJ1kŸÓòáü•rùâŽèÚ(Îeé•ÊÙ&¹‰_hØKo¥W/Ê~\ÇWG>jvp¯œ®Ê˜ëßYŠÝJ´©;Š~J8Úòœ ƒ˜œv:^ð‰Ý;Hu0Û=±ÞœZ90U7‰À‘ –œó³o¬0)‘¯ÄŒ®ïåZYAnâü:J >bG†oë íäMvÒÞµtçó´óÃïß+¦Þœ“ßÀ 73Y|ÀÂ}ñA ÌÁ¥•]R9qÏìq-GÂéèM•4±öXW&âK]m2ÖÆfuî€ZûåèÓË'õ‡›ï%X±­X:¨LÜæ1æ¤Ù ÷W²‹Jœ­_°¹Ýާø4°íC¾‘æÁmøa*­Ë›‚$¹âðø&”‘YüêL›È gò^ÊtÌÁs#÷¾O•ÕÌ'u…ÚAìd^T0S¹_ð<Ì3häÏßVòæL¡°l}ÄÍQø‡/<þþ÷|tDðí¾T(ìƒtˆ»Z÷wYþ D¾”質JÜ0Ûzˆ~a“º„Ÿ!$½ó 0 Jdïhƒ¸9ƒDTÃÇ:ÖèÌ߃møëGå?ÚÎv–ï¢5¨¡i7¹°çAm/ªo)r×9¿a’Ú§éºâÕa?&öè›tÞVeTžBÞs¬¾Ó(×NŸß“»©T;Ò™ç6ðÊÄŸ98ºˆÿ»‘ßÓögç.84ço!ã<¶uüÅÙœK%Ze}F.H}=öÿævTŽendstream endobj 361 0 obj 12616 endobj 365 0 obj <> stream xœí\[wU·~÷¯8Ç]xW£»IB.]„p/Yi'­HSþ}gtÙ{¤-slÂj»òÀ‰˜-F3£o.â—˜`#è¿üç³G|ä6oŽÄæâè—#ˆ¹É<{±ùä dØ„)XiõæôùQú60Ù“jNmN_}¿ýâøDLÒyPa{I¿]0R¸í«c1i£”ÑÛ§4l½ã¶Oè7xoƒ"råÕä•Ùþýõ€æb™æ ë`¨Nÿ„<*à?ƒõrûÍ2zÚ%ør¥5î}{¤'a6¿¡´¾8­ì$ôÆ é&c6/pÄ:dp¹|rŒZãtÿJ£R"ÅOi:m„Lú—V|Mì kBØNÇ'Zã"ÁnÐNƒ×øó-Šq^…æ°2iašìMbSHà›bKœçÉ„Oë ÓW;y›„$‚PÄQAO«O¤ž 6'³~Ÿݤv•¶(“É3Îï¯Ð8Á¤?H¡?éÜï*ôƒeôÓÖ®©Ð÷¢SÓ8Åö%Ó‡¤Ñ*h<·¾~=[Ô?ꞘJÍÙwLÎ1)ÊÓ•FŠ<‡WYSfOiyñ¤bçÙšÀqê7i@ÿü‚,H8o*ƒ|vLnL[OÖ9~0ÁÏÙHç{â*Ÿk…,ÿÄØÊxæÛâ&òј…²–ü?³‹Á›] =I¯*GÎÖ[¢0j W4îºÎ‰%€Ã/ð;/…^è?Vëœ6°8«g§5µwÃ/Ÿ¬9´µ‡¯/¢NwÌlE}–¨®ÈW/¢²aÈÔy&A0žw†ÖQ1ÅÿÊŒƒ]‘5Tš©w\d‰­êÔž§Q@ff æ¹Udp&æ7êH>üdŸ“²É€„R¢%D¥â2ÉþFIwŒw KIŽF‚o6Gm}îIÙlÐ8ÝÚ‹œ.j çê¹¾¾¥vtl’ð[ÐÍõM£ Û%-G¹qKº Ýd Aý!mBT¼ø™®åóï4³¾(ñhÈ ?ï‡I¼*À³Ê};ŠY¡þ8ô6¿!­x9¸J×9ßI¬FC«£·RR¶_®õܜ屶㉬œ%bçèÇDÙÈ`&ïÔj^ä¯t{¹{»LŠm%25+ö»´FBeÿU;ëÈ0cÌ8|6Ø^s+ÒV<šÒÓxâtZ†ö=÷çËsœ%é~f´Öý¼d±ßä8‚¯mÔξö1süšPy»ßK@pºþúA¬ÑF!O ”‘÷8Äóß(xØ‹Ø8(øì#†«\ jô¶ƒãg)A”º0ý…yFîbâ{]Z+ŬÓ}L1-eÜ\’æ×QšxQªrtÑ5åÜÿ™ÈéÀ—lü"åýŒ€jNB2òz²ÂW3ròx)ë}v(àc]U¡\€¸ eÜj¥xnòåšßHÒáW[èå)€Ö<¥4v˜§”ýÝtž²X»öo(²–‘÷·vœ¬ä kÔšx»'È>ê: Èþ¥u{zu9®‚“P¬¯Ѧƒ øMÀ/lîÞµœ@êÑ ÐÁÃü'òQ–$yB¸‘)b×UP–Û8Gë{‰´r•®¡8ìÄ¡š¼Q7"ÍRA°fbKåF™¯³tlRú!¸¢ƒRV‹p ÂŽBßfåfûÏ„¤Me ’:I€A L §ªU‚@$%!Ýu¤aW‘’2eq˜KiZ‚’„ž2sQïÑw%ÿ·‰€,´‘]¹žP€Ê¢¶ ?<3.·7‰\õ2çñœ.%ÌÛïL Á Œ> Bï•F'@oQG V‘ˆ>}JYܸâö˜zhc/ûûEIµÿÀ-ÅBW/i‡—¼9£‰gQç8S×4aF<"˜Ã—•v'…÷Áˆ* ÏU1eLƒ§ã1CP>•m2…")p^¬†tl39Úur¨œˆœåÆU7)ö@Í%—Û)Fñ=¾-Ä0ò"£x}UÿÂY¼®÷Ø¿LÖårò#çÖDì±.±Nÿ”Ø«¾r¯ý©š’»Rh59¢?tˆƒ˜–Só lÕî™Eb‡U œµ¨ò•¡šsø&…j¨™·ªié0Þ¼å‘À*¾òîÀÛ× ûìá5Ù|1Yª¦^a«+„ÐZ%‘Kô'n <7Wä½[ª`\kë+Ú?ÐÉ:µÈÓ5³ªþ| »Ó:t &TkòDZsëÎWéžé½¸(Bž5Ä´’oùFæõÓ¢;ßÄ L¢,u qºìs°v~LKa€GŽ;CT=aùQ·¦¯›¡Èœy2òþ^e8!콩~”¯–ŸV¨ÿf}°Œ²¢þ½ö³¥¢‰Ö‡ä^»ð5³EŸ“2ãW†öPr7Тªš‚*ù£rNC<ªL$³»þé9 RJXŒ/Æõ§»ª<­TÜá’îų‡Y–ÆÜ_6Á?yéYÐ; ýâx³XÈ®{ž}f’È…Š¦N“¶v­Ôî-âQÜòóÈ–Oª§á Ëgí /¬²6m;Ï×í¼qôoï(H~¹®3HÎŒ¡@ºh[°P†©ôjÝú²„HÝÔ¨º°ÅGfÅÈ››^:»/½7“0”«F/k p`Ûh§¦BàȪGà£Ãa°—‡#² Š2ñÈëdCŠÈ,æHã¶~ ‹tÓÚÈȬ*q˜ÚŽÎÚ©x˜¬¾ý D ð¨»Ü©ä‘œŠ@Þ­ý Ë ?øÐNEK‰ñC[a£Ý‚Ÿ/¶<ñ¸¨|¹3,BX„÷ù‡õ/xkâyè_hkÔÐt|à(øCý‹Fë±æCûb^k7gÂ$”/>¥ÓßÀüKë2ñ/NP³†Êy`EéUžgî@FOù¸Ìs]HÙ'åC > Ð[4Gm8~ÐÿH_ÆÞ[¾&¯é³îÛý²²2 Øªdº2ÓêùfZ§Ê®BœÅ'§Xå´Kðeå“¢O–ιÉÙ Þ .ùd‰Ø~7\ß'ã ÂÄІ«u‰.>9±|·Kp¿õ¾Ýò\šaå“Yæh ‡Û Îß¡ã“ÀÎ,%i˜‘u,Ä“#«Të\ê¡Î+­¡T¹Må\¯¤‡}m<¯Ó`€Ûåó4J­w/V×IaõœXm™h‘*@Î^áßâ Mª­XÏî­Wß ø4n¯»ªÔ#käÔ—‰Ú¤r ¯c(9y_u§ÒÆã|^¡XWe’rpÁÞI(ÿ¯ç•mRëëêM‚½Rš}â…‹.»ƒÜâ¥ÝÄï‘ïgÓÍàÿ¦wQ•Ì'ØUaž¨Ð®KV^ÏKׯ:MMærÁÄÕï+Û­+£ï¼õÞ*I€—‘÷ÇÊ8äÃ-@eæj?ïæãX–Žyè‡í¼c¿FŽ-¦j=2AŸ±[œù¡R+½TÑÐ_Æ”§ájGõÿvcÊ1¶/­ýö¯ù­YV°78©jÁôŠùÑɬB¯‹%Õ8Ô`•ÿ—>„€½eäCF#ÐpXýq×’™IÞý¿%0Kµ¢ì›Zåúuüb| ÿ« ÿ%>Oë§b[t¹f§úÃE †Vº¦Õ\íÃ=ûªÅ”—yoh¢±AD÷>#V?¤“ð÷mx÷èpòq£ê<ãª"YÛ4xz±âKEònêV“éa†6ÊêQ•ÖÈ cƒ9Çý “f\zž5ŽB=‹èX©+ŠéñCn‹;S7ù¦‹¤bðÀÔÒh}U7$ŒZz_¹‚×t(‡\7:õ\Æçoˆ›tmÚ1uC*º¡K:Fxk|ë¶iæ&ïÄc碙e¾ëF“3A,ÓÇEü¸•o–eÀrëdÚIûÝ_õ®êã c­â±%>š'¿LoõÐ×´óÅa¬¦l¯ÙÍV HÜ> stream xœÕ=Ms¹qwÅ•ßÀãcJœ ¾ƒvÅ®r*—ÄÊÉÙƒV¢¨µDRKR»V~}ºÀLãkÞ<>±b×v4ÄèFàý|1OâbÆÿÒÿßݾú×ÿr7¯æ‹›W?¿ôÇ‹ô¿w·¿”¸S°Òê‹7^Å/Å…b²NªivêâÍí«¿~¼„‰•ׯýðæßáCQ|(õf…Ÿ¿yƒy5OR›ÙØÃ[øP+åt8ÜákãŒ÷òðþòJ95Y«·0b†wr–‡k¢íìf{x¢g3Ã̇ìÓûË+é&ã¥ÂY–×Ó啱zšµ?¼å¬TpŇ?á³RÆIwxŒë{çž½¾ =kA눯ñYi%ò¢^8øÌ6À·ž7c   Åäœ,fŒX´²‹C#7+–.¯Ä4[Çý¶¥ù;°,#>Ä·Z>ÇÙ/—·ZhºK8ø~]ñÎÁN z¥TB*| Èþ˜±çÓN… ¸¤0 —Éu¿þý+›íŽA•±áº'GCÒ¶ l׸ʋ\ 9mE\ëî+CwB¬’a8ŽsšdwGø‘Aà¤W“„V@„ž­ô|†{Îø™–å¾9â9ºpj=9)«ÃÃCPC²½Î{²‡Oñõ¼8\Åýçþë¥ôp€@Øoñ æ‡oø™Þ7™†J‚d¨èlŸÎôþžµôvšT>ÍËIÑÎŽrô;D£1šè;n¹øûSDȶZ Z H“»p°?³í—'DDkˆ23Ѿg“¼†e‚žÌq˜É÷(çȃ¯ž•jŒ€iáPzÐn8GÑ)£ùt_1&‰Œ‘!Æ0&1”-®?_‡ÃÅÖ 0ªòp¬·>ƒ¬Ój¥ ›ãŒÂâ´ÁY‚‰«oqn-LMIJÙÉÛ²nœã7ì(øf¯Ó—r“±`ñIW»ú™1ÙH!üri@þÉRT.èŠ Z’–vt NeeBŽ|QNÆ)#JéDÜaÍ$­Íܱ!¤#:}Ö€D¢ŒrïØë÷q4ös  ‡ H$þ´ÏHüÚÅílŠBüÓk'f‡ì®´Ÿì`‹l´-\è…MÒè»fM«˜W¿ÓthGÓàY¶šF2ã%˜"85¢¢Ö4¸m£äqÈÜ>Æ:Xïd¿³Uoð'qF €ålIðW†/Žv.~G"'oÛ @ŒÊH J´vŽ\ äZ6Á :·ÉˆOš·±Mˆž„챕ÒËDzO{+…}{•4ææ§ì¤Aâ0öÙá¨ã­²gÚᤄ¿g*eZ‡$%á*™f¬$”i*­Õ¼,¶‡#*ß ‹ÍǸ¤ðV諱fPBú}Â[רâc9Ymë*ýxª­Ñå^nUß$óM??ÌÜ|À‰Ÿ}†dI""p|WœÕÇLYØ¢*~D6mørèç#dá ܤ9h[lê¹J«\IdA^,Gy‹ø,óòö·UÈø" 4O XóÎ?Rúq¬¥’H¤à\XI·8‡PŽè˜Ñ³óµŽúskå#Åãp¾«SK2›šŽŽ‹ÝA$ïOp‡»¿!Q i¤1‡ìb|©U¥D«­v†"Ù6Î+v&.ã3 ;Š G)ÑK†ÏB—f\Qo‡¸N°;å L§Ìw³î[>S ]]À.«žJ$ÿ°2ÂÍß#dçdƒHcoˆ¹%,T:³:8SH4þÜÑ@ŠÃkš#G§šöd̉ðYŒ`TöX,žMä ¬Y,ž†ÛËbd‘)U±X\q“År¤ï¾Ë6ÜÞ¹I:œv— vd•Á( :€å¼HS\¸”ëÜ€¢Ô´°a ^bg5¢ÉJ¨àhw2QÒW³~¢™Eéݱ#çÑ#®÷ ’@^ ðž-Ž3›è¤2*RÍ'÷R!wíœq“2ÃK> !†§ÕºB_QŽâŸÒ—ñË<—_—Üð‹ÏÁµ—EÀ8è’À JªDiRœdT™.àD\~ªB˜œÙ6Áqˆö['DC”­Íû€1œºr½õ ŠÊŠŽäßtrwH~=KJ‹½³Àžaé KœÐë7Å̧QÀ}îhhkàÔA¦«T:ÌyÌ®0Pl&Ë?⦅BâSDXŒ·º'`^`­¸P:½"\¦sì'ÀÒ–ÊØHœä»òpþýjL<à&Aäû:÷¨g`~wäÔà`gÃ?d'ÏI{À¼ëðñ‰‹>C'À®ÃÜ!q§b.3 Ü–á³i-,ˆCl؃±Êž.¯iw o+“`ñûØ—œeãŠÆÔQÏÂlhÈKYY¾X}§$ÆîzÆJ–Ý‹]ûµO;Y@YðAÄÈÀëäu’_3 v¨®)dJi<2 ωާ`ó° iM\—d³j{ü^ ŸªkKr»ˆ¤• #À¾]ʲŒTáö—Y‚滅 1°¿Y>Óxª Ž·Iˆ'†EG­sSÀý´”æÑN) UŒ]Ùĥ]£Ô?u“8OëãÇuÀvD[ °0ÔRÚö +Ôº¼BʲFweëU˜Ëi+pm1:¾¶‚ê Zoœ—Ø&/ëj‰-|Œ_ZÝ”PÂ[ð8¶—„]©}†*Žuê,[Õ«ýѼ¶ŽMà–U7‰u$ÂŽPîE¸áñ­RTJ+Þz4c\âþiá8!—x Ö>š@•D¼à˜›Mm@%òÙ ¶ìS6µ#/ÉyTºWyÁ*`Òiœœ,e³ ¸ÛWæ.¾ªÄý¨ä°²qáKé{ÚGô˜?€ °ÖpDÞJ/‰+ïÜÞ%ÀÒÈS/U»Å}ÊÉÛ0Ösðw«í‹Ô½=ÍêDLJü-›Ù S Šv÷#2e„ˆ&Ó²©T!¨M'€¾T{k)‹Ü ¶(U™HçÔ…eÞè*3pýt± Aú}¡ÚNþò¬Æ„2ÂñO´ ?ÃxúØL7Iñü.eêŠF{Hxguœ1€ýs-ýå5Ö¡;‰Xzùú4عRMÅ!H™×§éåŠ&ñ«ˆ£ç¹-rù¤@¥2¼]¥j4¡œ— ¦µSÐLZáŸCðÿ¥j¯K«ñ*S²ñÿ<´‚y ã g„!(òž+ÞsA/öî§(„µšuS=Ön-jJUë”3K ŠJ¨ë)¬ëuM´Hø—ìëŽZ6€I°AljOÝVe )íüaõמf€Ú‰Å¸$0Á]¹ˆ†ÞI à{[v N µ¬â÷þ %Í6U…Tµ¬_ÄÆ\6•+핹´K­v7…ÜÑLkfÛÂ3çA>ãZ‰U)zjsÝSð½aä×ÁZ,Ý.¨‡fìãÚ§Š† Ïn…®J jQ AÅ¢׃s]|pñBÑ,Š1'§ÔrÝ0áÒS†ìª8MW5¯¶öJKR…ùÛÍO(§ áã©àº¢?h¤;¸»´ ‰GÌbÝ0vë–g|ŸðÎ>¦ZhaŦ¸:V:W¼«xÔ¯ñ¶QÝÒ G¦ùHŒ¼¸¸õúð(àVŸ.äǵ0Ë^ô™‚Ö¡`^†k¨MÚt»§Çby„ÛH¤ÂŽ{Ì*gÕéI [9«`»]Þ›Ëùcb°½®zqÔŒÞÌ‘$ …£Ñ%÷9°qM¨YˆÚ«ËÆž>0ŒðñŒý«D`v•*ñž2S«ÊMrU¸ŒG=;K0ÁÆz¤ö\àáÜÂ{êÑ¢±2®‚-j~¤~*õ‚£1oÒñ —ͼ­²TW9Àþ¾$½%”ð>¯*þ¦fày\íR…È`¯7©§S]áÊ»í?07Dø.öi³T9HjŒ| An!.;ðµÒÒÁtKzéÑeWûkE]xÄËO‚õ,HNp»ÆH˼ÙÑ"ämIc/¦Òú§\°—Ù ™‘y<ÞU¢ÔÊÍÁe¬÷pl—#û"IàtD(FKÕªvæêÁøòˆšE€vö£âdóÙ÷‚À™8¹¹§.v2ˆ³Î‰%tßÍÂU.ÐǾj_«,r3rW ?zÛ­_ê­dS2ø"¤î<¨6u‚¹nbÞØ¸ÃNY Ù6^’¥À‚Ò•½Âë}ŒÿÕ—¬8jÚ4]pêáö8a®½_}Ûï}‡™TO<#=‘në„ɹŠæþBàmqÅ‘©Š´ãzn¤ ÂœÜØêwLðIÚøm¿tí÷`;ƒÈ?ó$ †%úÕ·H ³M0r~žâà¶÷‹Þêq€¼¢)>×})´ ³¯¯‹Æ‚#õìäècœC6Ý1Ëhž)-Jk –Èêº~ g3 `âš*Õ¼Ú*’ÁÙ„[1¿)¤mÍüjþ9õ0€ý"—0Va:l¬+Ë>ûu4œœ7âóyS©å!®÷.Hè2Ø“,jÑKIYì€Z±SlÖx"ßâ{ºèùØzÖ“t¡KéÙLB×¥ÃðZQ1Ò°Ö>“®(`Ý£ÁâÌ >‹¢çx‘VSN®¨!û¨ÿ§@G‘èO‹Ÿ: yÐ$`]»ÆëÎÈH©•Kò\÷Ê—ûtr¶æo 9~‘Zrwä&ÉhÎPßÖ)“7U’z.dw‹_gm-! ,VÞNô½¼k,÷Æ|°¦¯ãúªªÃþ¸Ü9ÆÙ¥“ÚL-OÝÃúçãlC41üTM:F’W^Õã"jÌQ5Ùkìp:×ÇEuÕÆÊ¶5Jqæõ®K+·>èà×¾3v_"D,™m)wqecM¡Fžˆòu•¦»Ê›¨ »"{OomMÎ,¾¦fôÎdæÒé—>DB¡f 45]dô§–nT2‘†$3Òu£ }:—ûuà {ŘÚÊP Á`܆ëˆ(8–aÇ&M`Ý(Ù0ê"â\9â‘ëuö•T›ZßëëÁšLÛX¿aƒG¸õŽL9{ûÌ P”Ñ-_Äí—B¿w5Ê‘« âÛ¹›çÖšÄä×÷l{Ï7KüC\~’*—G¡Ü¶s½ò„Ôå‘«–¢ÿxõæ_xi/“ýpù¬+â]Š.‘ÄMœ~—Ã"ªÿx‰!>F&÷Hšm•ÖÓMÐÞJÝ•û§”,Pu¿·§'UqSÎÕ:_[·/9Úa°Fãvðµ)$A½¼›õbD”ÃYPÉ–“iUš 0€—ó2ĵÖÁv v )@æÄZ»ÈÓ"ØG'àG¹mÜ´A;…}7@€°§‹(4‹™$Q×/#"MH:9$uD£Œ¸ÐÒ€ ¾#ù7YéV)¢Qàyy~[ØÔÀõ`ë–„ÉÙè6Aƒ¯2’¥¦Š·g6A ‹…Yam&[D[-åÆMPïõð%ýôÊjòžÒVò¨õ²öõúx{Ê6ŽuŸžoZ2ðà€ÛhZ“°}ŠƒÑ®ï_ÓÙ†`SYiz©Ûîõ&Âɪ& ¡0ú8‡ƒXÇb‚ÅayÿðRò§8›QMd§sJW­J‹r—e)<‚ùdçÚÝ´½ñ³NxŠâùWŽ/y·Ûn:G¡l¨V€Úª0ª¥Í¡„q7R§?>`4‹ÎþUÞáSÂ}Nð+mÕ®œcÝñLz¾D²®Ñ¯Åäô¨¬5¡^Á˜ä\Òj%%ºi÷Ù&ßÔ¡›Ï–Õ,†ªbGró!έ¤ßÇ +¨hc$¹‹[ÁlumšÇ†×›løÒËf1D*4µ¹ü‰†›Y«eÅdQm=”³;kž 6kÅ›œ{‰R"wSp~IĤFæ3âPTÅ{‹V’~¯E‰¾ñúÒÌ¥‰½/O‚ÁN³Â¯(—ðݧn¾³jÚ ÁºŽ<Ñ2ª¸Øƒ®ûĪÃpu¾Ä{µk›T]oÄbxRµv\¸¤¢ÙAÌÐ’Ó@clvÅŠ­ L®\tNŠßa«Ytc৤}óÅ'ø6E³ëB;ƒªˆ¬0onú2Ýߌ|虘¥ôBè¦÷?5A¼T™ÕlÊ1=wüè¦ï©S¾GÏÇwŠ—.Ô/«#ývµø×·ìñ·Ë€®§mñR€°–¹ÂàyÖNÅÿ؉F”åöFt{OAJ1‡Jl´Ÿj鎙4DKV¤½)«pÆC¼ãì“Æp“5æ…,\%,@l”ÎqÉö·(Œ[’&-h™å7l±#qô>.ã©¶/˱oée¿8¿<˜^Ö‚Y ÄÝÇïGì,C˜¿Mš P¹Ô’b‡¤¡ÞsûG«¬âdµyµA]—ú©P·Æe:ʼn˙⇮)’ì¹x$dŒÜ,jØ w¾]Š C¤Þš¶Ñ§­Œ§Ûg*“ÞÎfûJœ´ä®‚/„@œÞC!o.¢¥Ãé7wEX·€ r<{_k ?+ øuý%S]Çí¦öþ^¶¦KÓ e4çÌ‚‚/4?Ä£ÁZ++ÀOÿžÆÀη‡ÙR¼ï¿/—^úQÐ ­¯åª¸s¡Múå ~ „Ì×’¹r×ÄS)&1F‘×ñ;T»º§—^èƒZßÎiŠÐxéñµ<>¸ýN–±Ä(^¨Û©ü0~J¢Óƒ·gVµÎÁŽ úÚ.ÃŒi‚R\F–²ÂTäwÔ bB¡gæ(?çʸZ?{°2M@k>;®&ð¾\wf\o£SÒn}‰šfÌÞ©rüRQ=ŤÄÎsA=«üRî‡ç5°ÿ›E¾@ƆaMÆ[°œ8;c£ åŸÛ·£*uGÍrÛO}y!%Aç—êlîzÊIݲ;aP®šv×» ÕÊ-JkMU—fš;ÿB †›y²©…¬Í6f«‚ߪ­¢þ5+¡°^û¯WR'N²+t«~Àáxóê?á¿ÿ9þuhendstream endobj 371 0 obj 5802 endobj 375 0 obj <> stream xœÝ]Is·Nå¨òàñ1%N°/©Ê!ë!•’°’ƒƒ(.N,’¶(9–}º³40Þ¼ÇE®”ÍÃF£ûëÐw'b'ÿŒ¿½}õË¿ù“›‡WâäæÕw¯$ýx2þõööä·çÐ@Ë“8D§œ99¿~•¾”'RÊÁx¥áõÉùí«/wקбÆúÿ >t‚¨Ì…ÆÏÏ/¡ñ7§gbÐÆhaRk™ cCÐSë³ÔÚZwÿ=UaPÊ…Ý|2ZÇݧÓ3Í ÜýñôLÑÊÝ¿é+m½ò»K|¶Þ† vÓ³—ÂïÞ⳱фñÑ /\ö阌âMœèð1ìþ‚Qéàoñ!õ'`®Ùó×lü+6Ð'zï‚Õ»|ôÞ²&irÐhw  èB‰¼—ÖH÷§gÊ6H™1`Y (wçУÀC_’袂.wß²·iž0á÷ÈdálŒ|î[¨ãïY/4G=À3ЀΌ• ò¡§>¨‰Êõ[¶RkC®o‘ŸºûȺ»Åîôô'Õ*òŒ$ÞÃÍ2È×§ ;Æ8hC{i5P§q©×:ä“FûÛÜ|7^¥Ab.•­õïLˆ»À ð&Ók£ö3:›7ïû{â4&cØ~§hÄk6É‘lm W'oóÅ/§@Úç~i~GÚL75‰%ûù: -LOaNÚŽÔרI§µ£tr]Ãeå‚YÎĽm,·@`pœy¦ClÙ‚–êøûPdÔ¹gP#×úùÝ¢\îëÖŒ?ßg²j” &Z+Ã9ÀuÙÇ\°¸úÆYyÛŠYgÁX×0‚>²…¾c^.¬së:JSÀ’ÙLþj™@MµÙN…8µ^ºÞÉE$_ÃØ€5´M™dÛu‰Ðƒ†eá;€ $v(ã`¥Ï7ÆbÑ“ŒÀ““ŒŸ¨ýv´?¾&‡ÆûRû°íM›>®ä)gUn–΀ˆ°‰ˆÛÅÝ/æéûåíUi©°AÕR¹ôмwØXãu2AjC¸M Á›`em=Ï (;)b¡ X¦keDT¥•Ðî'ö(~MS¼ÇïåÀúçß‚éÍ7§†›¾¹KÁWºnÆYÁ:\4Fâî sƒr¥î@@#Ö•àCšŽ mÈ–4±¾…lú;š¤–‡áª¬ò™Ú~3ªê81«êqpð2gŠL sp¬Âœ‡Q%§nó˜MÉÊÃ\Æ >È–ˆ¶ØküÒ¡}à_"ü5Ø2!¹NÃØB^¦¸ˆÿ=¶P`Œ]+X´àñO#Ñ^¬Ïñ;aÚRÀVhíTŽ®&Bmî¹ÞOûôCâ@ÙË•|Û ¬Í8šûÏ5cWXu[uÃ&4¼=}5Ç:VVŸÇ–¯FŒòۈפŒlRg¹Bmè«B3ƒÔ Ê›gR¿Ø»ŽªXxÜ'$1S à߃H¹–.Ô–¶ö¥Ýã®ØÄÏybùö™Z¬Ý•$=E~ÄJØmÆWâ´©9ÇØ-î”!²GU£ +_ò!5·ÑYBfW*ZzС?®ÙL*ðý  —TøЩ̻ã˜y‚<óñ‡D"DZs—î%òy]óùz Œ ¡µ¤,zY—â–»Çù‹!—¨ÀÈB*§˜u)!> ‘À<‚Ëöò¦:8#š»aò­’ÑfrÖsôÄIýfŽ´¡\ ⤎Hr‘`[PÞKBù’‰*ZÜôˆ¢D4.ã$ŸYæ“ã2"ËrÓJÈ0ȧ¥‹$à# ¹æ¾àqH° ƒÐÀ÷tËÿ¼Äæx²v  ߥ^(B÷±;ÔKß°Ö\9è<¨Á)ù‚õÍ•Þ4!ßÀÞ}THäµÞϸà.çRêdh†¶…eˆêØÝði¥ªæsË`{¸Âo-1'«B.‰ïͨ¸Ay™9pÿ-k£æÂisð‘›çu N„  ævžÈ(3ÆI|°·¸ŒµL(oÓÀ„-3ÇZƒí‹þ ë$ˆé‡0ñ¾–r~XÞ²ÇÏÓï䟵Іú;¯…$(ô'Ê?kaeÕ#R”Aó…׊oóœ÷Z¸Ù̉¬G[~d&mVÝÐX`–µEÚƒÅé˜ø\(xñ[…"˜z‘Cšd° âäuK7£ÄÒO‚¶ò±!Ñ4@®F‰.sDDïq‡»NÅ ›ë3F­ÿ g«¨±è´¢ÌÖà¢Àó*бWfã±±ô²0s© 5‡ŒÀ™ŒUK¹²Žsži3×·¥Ôz”ß4F®s×qi¹•‡ítóz¯‘߯[ô]C$KhèÍ ¥®DzA:™²V}ÀWØ|q²b*É9ªúZŠ%ó:0ã.c¡®‘"\¼èB>E·1ÚA­CÜíXmâ>æ\U)½>¥l¤W®Ø98~[c³Ê'õÞ†ZIz¿b.£]`’ÇØwyf 7À$ǬQxÓ¹> r5Û €;sc¸QRà·GU.6¨ —”D+¥¬S8f!·™°7/l?tH¹vÔ=°Zµ¢ÍZ( ó¯ ìÿ8 $Ž~cg9:ïò"G,Ø›„àg„A¼µ­!@?8\\_™¦êt[G7ÊñŠd8±7¡h#-½/úÃ™`r‡æ öÌßóö<™{•2sl1KCÀWHCF0õ®DÇMaÆØ¥ðhš‹,ÔÆšƒ-9vÇ…v hO‡ñ}á9ñ^$Æ•q…·5Û” ²]Ýèá®±*yäšµÂùFí&Ð9¨i÷ÞÅç5Ú‚'¡V3,ˆ–¥¯ŸÔtàá¦ÄH-]ž¡*±;ŽÌ2Ï‹ðW]Q­,l*ã€Ò—ÅeÕâ½ü@/òÚã¥Òæð¤ï¥kSâRþOzœt¬é`{.È<Î@)DµÆ8@g؃q0¦ç š¬ÊÜ*A¹Â“i=¶Í¸¹) e±œj’©u° %|\ ¿„I¥·Ê=;U)È*Ð2­ /+—G (Æ»oSMÓÉvÕ›2Cá·eLgÛ‰‚*T#(r ÏŽ:h°%У ¸¶[ÿŽ•³ÊéÚ‚`.y#&ÂSÇèGÉÈm6.QâK‡¯›æF#*X̱sï‰ocV¾{V#®Z6–+$îsµ }n2ó‹<Ä Í´Ìk̂ي|¯˜ åä7;fÞÛÓ’Xßr›+¼Ø‚CʾËÜS÷sšéÈÅ| r«Pq&DÎÕE/Ê90ýµ…&ÂØÏš˜s@ Ö²Ç.fZÖ€t¡i:_øk>xwL‰Ã¦±½Òü'AjÂÿœîÃ]jå@Ÿ¯*¼Q ÇýëM3½m¥4!hú·Ýd’äÉ[Up•Ú0’_îŠì)±\ F:òèÚÓšŽßaÉ v®<«Ó¸¹¿¸?ÌÙÉ…÷Gmü œ‡@+”:ÌÒ-ÿtEÊ’¡ÚcsŒðà®Äõ€–B­Ê#$™×˜8—¯V.»XmìQuþ÷éµðݰ/Ò*m-&‹¢$¶]Fç|RËÿ'Œº›jolŒJ¢q ŠMlµvº]š 4:vFÉVì,/¦Œ¼%Ò!ÖØŠÕåË“O»!Ê^ˆ³Nj%¿[à ;̃30•´³W -j+jÍŸPâÑuõ²xrÛÍæ:ƒÍQ©4ÖüQvܶdÌO2o:›«éÅÞþÄ&õ¢h™Q^®.åýi­.åÃqZø…®BÀƒÏýcXщaäq§ª8æ­Q#s 0žOwá‚@3ÙÌc>‹0/½9âöd1 ²ûùºæœÂ×í¨m<ÛH‡Óå¡p3EÚ1¯ÌÑN4xÝ@“̸<Ȱ(ï1šzmÇ:˜> 9–"Óñ ðmƒÞî¡m]òT3’„^É P¥Ž ú0”§Qñ-è•fÑþ®}<ø: ` Õ®¼¨ò6ž˜×>[] 2ð!.S%ÿ 0Î"«Wã Ögp+ãEš©¹s[/RÈáÃ8vžÕïßÖƶÇÝa\‰˜ ì¾Ú1zü,Ïã€c¤M’÷xc –¨K¿á{Y ׉O±”øÙ¨ º¦vk¨„¯NY/ˆÀ”¡D|;áŽTY“ÂÓíÆ[lŠK$ÌiÄx¸²!´ÿ>-ŽhßÔÅdó.56Á²‹Bª×‘8„›B—|͆ëHh@Ô…F2˜ñ²Jÿô¢&té—Éu‰" §Ê¯câ¶:!où‹,.2Z?:è‚ñH»!l­/‚Ö"ÇÓGœ7Å^lÿÎ$œP4µ0éó)kb¢oer;vŒˆõf•VBÖÚl«M›GÄÂBç$ãM³nkªåwª<¹Ý+à:SEÀìˆ÷HCÕo¼€Ä,+SÏòŠ‚]ÑñLm¬ÄzKo{NÞbýÁalüθJp%–áœ|0MË’NÌ ½*ò ’[¥“»õ€.Žñ›*†îÒå4Úw·ñÄ»Ão(êFMaž$ÎËbÖåZE½¨ÖY€çaSŸ¹"®Ågµ™d¶ \z|§»›Hë<öZ‘ðÃt{n9l¸ø«‹£ÈÅgŽÿÊÛ¹£'[ü}-±b¶›ê£&là9üø*¬ifv[µl„ƒ˜Ã`–ãQ97ì#?)\\á Ü…’¾_[u”ƒËæç”k1Ñãí>¿¡‡ß*å<`½9k2¤ð±ñÇûVÂrZc4‹ià\ÙôÌŸ?FƒîðK<¯² Ýi-È$¼ÃA;e§Wi zü]qb¢<"J\‘«ÂXbmÔ‡¡»4ñ=1æÄ›ƒ«ò§Ê~³8ÛÀÓZbxý Þ8Ü£ýQ¹ûG<#Ы(ËÇ5f…éÚ ggûN°µ_ãDãC |ûPªñ]‚=FÆ&0jÕIµjÊ*7/Ž(ÉõíÃŒ!¤sK­2­^ƒ]½á‡õÚ¸þ‚Éo%žK4WàÒо}™3¥ruË\ª –GèÚÝíé&[â·hÇ+ŸŽßss<gÕ ãeO Rx(,?ÿ²íü©ÒxÑŒÝNCŽï „áù³=)Ÿc¦_[|is#H"n<Öpæåøµ²-ì!VÌ!µåz™ËõebY0³G5‹%shc=‰?^ÈœËÃV1@yU©nW(¬Ããøºæä¼¤ÝÊMN®×¢êäÊ€UqÝ“šžö¥InÎVeï†äõw”½Ez©ì=FéÊÞÓµû%Þ>8ãßÒY7û¥¾n^§  ÐÁ/rÄß(÷]s‡Ž\ïBþ-&•¯‹t¯ÜOÌ$ Ûá^¶òÍÇ\I@76ɸÕ$X<Ú¼^7 öPÛâx3÷;&èªMqK¢Há*~TM> stream xœÝ\Ks·¾³\ù {ÜMi'x?9ØWR.ç›ÉÅÉ")R)Š’EY±RùñéÆc¦fg¹¤JIé 4týúºóó† |ÃðOúûòÍÙï~°››‡3¶¹9ûùŒ‡ÿܤ¿.ßl¾9‡$ßøÁaÔæüÕY|“o8çƒÙX!fåæüÍÙOÛ÷;˜X:¥í?οƒyñ¢Pƒg_?¿‚‡ÿ°ÛóAhíùö—Ýž ÚjçÄöæPRZå·w»½t~0ÎnÀ'„ò^Ûí5þV†Yf¶—ä7å=NÎŒ²vû€ÃÖ*iÝö5þ–R[a·wÂJ(â:Ž»í7q«™-~צ0-#µÚ~”h‰¿é›iœëyÜq åí4Ë}œ\*É‹Gèø ÐèaÃß¾7"XA %ñÝÊ‘kعrÏGÒo¦á·3žµ÷->ÿ·dJí‹Ý^1=x¥é’È ŽÝ^â1k"²ýŠŒßÏ  | ‚©,XW‘1&F¥°ßÃa/\! iÒð¯ÄüÐ=?7#¦ùÔV†1.`K²¢h#ÅûLòž‹A+Ã#åçð‚`Rz›·0ï„”j°ÌCw2J·ž²IE’Ž““}ˆKr.èÑ¿Š£p²Å ZwYÁ•ñI}µP,¨ìCàæ %÷‡ÛU,Srßîö`´ã<ˆ Ì‮ùÎâžÖdx€j ¥* –q d½]ÎëðíKXÜÁ⺔B:ùÛ<<ªí¿&Ù¦£- ´î„ó›óïÏÎûÓöŸ£QGÉ¥ò`íqô÷•ÕÖ®šÍs“u+i…ÂDÆ…’ŽàçU5MË;ȬãQÚµ>(í¸o^¹9`O$Gƒqà£#úûû¶Rݤó–0KÓ3qÁt%xx°ÚáÁy`ÚtçÈ(§‰g¯˜… yIÞ̺ËZ&¢äžÀÎí=Úõ™KÒÝÝ'écÞ'5¼(8*wV€¤ˆÚú,UJê ØK=(oPàÌ ¥pYZ–Âî#Ù(D:)×H§¬s þ”·:h5<áåÑìák('ƒ îxi£D¶N)Hôäé_ˆ=´Œå~¥¸ 낫芸½ÁY{š¸…]²7fLs÷`8<ëÏ&xì»ø¬õ¿˜Fó)³}»—c;H+²4Ñ@ä}Ü0ÄìÝü]…ìÁ>€dÖ§À!Î[šRºS÷!®•,„¤R¹^YÕñQ0°¦eÏ2¿.Åç†ñæ°] QªkV_M<Ó“¤"zGœn`Óƒf›žG¥Çs /„~Â(óŽ<´c]ˆ]¥æƒÕ¼Ž]¿º†“ºDä\'Çq„’Éybß´z'©¿-¤uŒs3IªÔ«ßDiµLZVSÁ½&ãQÊJ5ˆ§*åsæ!ÀþÃq5ö·úbPŠïzHŠ>CÅè“ÈÏ!¤U*‘úË1Nâ¯ø°÷|YÚæZtf×!5ž_rg<ÞwPר¼ëý„ö‰‚ñ…p"ðub4:,Ü̼‡ 1nQ puãºáÓ¯DÑ?¤ÇC©úœÁW>©F<[²  ñŒê £ãž tNŸ>ËRaÆ%fö?½õKÙBc© @üœÏVv1/5ÂôõMQð¤‹cX%E\üÍ%.&€ñî`À þd„á÷€¡€tŸS†àjhK<À­¨Ô–z›Q8h*áyI ¼J?N˜Â€<*6³òËy4SnÏR¦@©ø_kùK½”†1D#¹¶&ÓL‰õn¦Ÿd´Lk¡ý`Ë$— W¥b¦õ¢µðz€½©¬År0h9³†äuKAø[&ÿîÊßñ—›òÉí? ì­RL|<Ü_) šÎ¦¼+¯„ÏJîŸ0±VW¼Xè¢-®w%ÝT¹q­Äó#Kî A!Í÷U¦j<Ì•vFhÐW%°%ðÆ}™…ˆû¯­ñ­”`¤…š\z3-Œ9`üÞ‘ øR`®ÐûEäÇ3)êÇ0 +õ¦Q5Œ<ò’ú¡#¸\éúêpÓ=¼wö5_ôÔwEêwÏI¨¥D‘wrd4Œr¨L€¦+lÈtûæp¥z~ŸɦDÿz$ êöqnK‚¬ïC|RU‹8€‹¤ý ¸A£°OYÚâd«O´›ª õKý¤¶Í"PóKy3Ô’~ß‘Oq¥I0@ê“ñ‘¢€n ÇM ÝžÙ"$Ð £j )]ÒåÑšeÆ}¥^ÅQLVÝq=˜_ uòQ¯ke .οÊnN¾ÿ:V¯œ[ÈìäÅç¨lmS©iÀ²Àã¡DFË”H°Œ0R÷¹›F_× hB"vPèÝNsÐî°»HóÞ'7f`'….€Òå”PDá7çšñ– Ù«Aζ²âr4‹Ñ+“Ì[eŒ¤Åœ] ì7=ˆÓE•ÎG·s "»Ïqü&S5Ïà°Ñ¥»kú¸^þ+l±6NËÖAriU v7¤ƒÈ©d>F¥©xŒðP>FP;Óió0ÎØ¼È€É&ˆ A,¾ û±š¬Ý<ðíŒî*CÏBÈÖÙÜûxÀV¹v¸—ÍÒÓ\cGÉýŠŒß—Ïä“¿%à ÀƒžÅÚ/ó*Z.n@?¸¬L×ã ·®ÀæÖ•Æ–®Ý` `–òžE9 1µá n,îV;SOMg§½¡®,Á|DŸÔØ{©‡^‰…(…NM-Å‹ÈØÈVÛR —Ø¡6Uwx)ðu Ë”aÅMùÝ.n¾UÄï"_ZåŒ Íºd Ö‹±ÙZÑ¢Gª·Û9ÿœ·ÿÐg©ÎåŠn<Ñ[*û]¬7Ô;ü¾œ¼Ç§„9ÔBÒnüù3`Ñú¢šÃÖãÆ$Å÷Ç„ÕÆù¼Ð¬ä«.ó@Ðb=ïæ ©hnnGÉzÙ4Žuw0. Cþ*.m@‘zZR,צî}œ[x×5û©b ç$Ž*ýh‘"»cÎâOÄYÍáW$Äûsq;º–›5+niÿåEÛüÓЇè<…t‡ê mäùãÿ¥ŠP)èÀÞ*«JQX­.RR‰üw…„4‰eV§IBßÔ£Ò$¸ÝæIÓ$@9óÏ&¡§T$„]L˜`73ªÒ¯‡cÄöjwÌI'IÛ²&Un¥4¬/ýsâ1ÄN*ý=„~Qˆrˆ«nïwðˆ0¨ûn’'G(ùõd³)¥©Îa$å4·?"¸®³mÏ]ÏÎVôkï³¾ 3–äT…zHD,ÉP3o#I°X^—Gòœ×VKGéè¤ÍGfzB‚ãmâGˆ•© °SžÉ¡Q-}a熨S…$žü‚k‘ùìú‘õC¬؇¯ñE5H+‹'¨E;ÜWÖhoo¦~ë]„šZ¿êv³ÇÃf"„{\­[dl7¶¯“_œ_¬ý·öz>·rQ>9«rƒõ–ªÁnÆœøþ,cœŒÙn–#zÊt›òGý½Ë$è/X¸¥à-‹>ѽ xÝÒð2ÿ{ó¥.2*TT^Äe¼&)’Âù—YbJ ™*¥œbæ2æ•Ø„iª¬0Œ ŠNŽð F!`U÷Äz±(Vú8žuaªq¡3¡wãa¥‡ yˆ”jåj™†ùÐ~?½‰Ô:”á9óe®ÑιVup÷ƒ<õÇðë~>/­*…m¹M‡ªýI65öR‚3ÓªÕùÛP­:½ï¬Nǧ–‘Ôq,¥÷QuvY…œdU²Ë“ ØB$z{ñ?=Á˶<ÐÕ³ÞÉæÆmœz³f¯Ìà„Ýì±I ɸӿ.úÕ­Çoc Ïm‰G¦ê¾šmä¸aÂèÁêG_„’ecÄ‹]/¼ÃUv= 0vî/Ç#]Ó¸v§QjÞÓà ¡óÚO|sM[péq[„qéª^%§XÚÉ×áb¼Ë§¤ºÒÎvû.?%Ž¥îÁÿâ*fì2•2¢jí\Êœ¹Ö7qC4/šÕVÖ*(ô b ›bEóï¤[%’Ý÷´[¼óEã³áÂǾ^çëŽi¾:†·¾°OX¦snðÂT‘ï°Ö5=¶ªÛyI‹”õªv–ä¾²`ãòe‹dÛ’±~0LÌÓðƒ”­68Ôy8@V[…¼q9 ^¸ä M v ÜÆGt³ Ðgû²’0:Dzp{¨aiZÎö@UÎz®ÃM65‹Ž·QП$;QÒGJK&Ä ÀÉ¿¾*ÂEœE SebÃVè™ê:Uæ@ß’¨ g¾ÏV1e3×4÷ “—‚É=sýhyÚ‡93]ÊRïÎü%1·ÄØG¬1aP:Ï¡ãçgɶN°µ>¿ >Ä •¤Ï®Þgabcútš®ãÙ«êR@ ½Fë%a¯â,TV—2Ç£½·³–b×{}1u^¶[¾Òž® b‰nÖ°dB¨ØAy½ëñM)hØØ«ô”¾UX&VÌÓU{Æ¡LLã‚× —-½Zç+pw0ãúDn!¬Ý°oáÎäšØ~Í%¯Ôg«Òc”ïkš.©W‘<.T/[@û9Úg׉–è¹F=Ÿ Tú’à_>æ‹t3ÕIü}™]ÍpIbm@VÂ,€-Ë=¡ dÞ—Žû.}iÂÍ{¤RKÞ ZbFî"2Õƒ‘¼kN_¤Š =LÙ±T ª„_Dæο¤k´¯ƒ’sü”:±Y©8‡[GnRò-¤å²ÚôÌ{)C¡Ä'×®Ew’ŠUËfüZ€+b1âgHJ¥—í›Õᄯêp`Ò-„`ÂÄëÿC·O3L`½,!¾ÖðnL •°ŽË°°´qªï±ΙxAa·×Á H‡ÞÎF%MïÉäôq:MœÝ2,l„ä &Òçw¥w¢5nTvÕ‘ûù²á:~©T.Y$åbW:{âÕâÕ±H¥ç\¥³åÂ6ª}é o&P4!„Â.é5“÷i¤á N£—*ªwÞå?X1+œi€ñ*ãE æm|ÏÊÇ^\û<ö5|4H‰gHÑ >C4Ïl°ÁËnBßãMÌ®—v §–œ÷°Ãu\ÅÈúÞ=¾‡š÷$Õ$MqÕIѤxBƒ£²|jŽˆ¼3 ‘OZoyÚ¤p¶±A÷^Ý1N;Q~œŠ\¼¡_•c„Ç;¼—ñ{˜OË©VËŠ.XóÒ–Uäœ?KÕE8p'!ÝLÊ.-ˆ¸®ì‚ob?C¥`Œ½—Ï¡ÓH¾,¾ßõœe—\¦)Û\±™Æ=÷£Kºa÷EQ$Ϙ,E}d­Qű" ÷"ÝÀu*Ë®0cØÈûò߀g5DŸ#dšõi™ ãõæ·>:(jÖ›ÔkèîѾØ×Tu a'ý?<¶iËÃ8çBðæÙ4~vpÌÝüg·Ô¥üÔ®¨­¨iªnÛ˜øm¾JpO»m3ÊsP5Qy~ ¢ºÒ–UX4ûõ*•mÄI]8WÍ¥*úXx:íƒ! Î} å`nÉ–?Y‚/ΡáÂv?úÆ î·¬®ïäòWšp‡¤ìáÞºï ~È_äT²™¬\Û17oMZ(Iü䪯Æ#Ñ-~;uªÈ@™·ü#nÁÚb`á­Š) ªØÿPS)½ñ†oëc:ÉØÆoY3^:7Z×¶’`¦j²¿YÑÂÛØù×-æQvS‡3Ãåg7étTbhŠ¢— >:Ó?BÞªÔ✢jº 6™ûSÛ“ßãÍÞ­y•~Z“63Í:5ý ­]G©3-JÃâJg);è¥/æ•ÊÎ ‹‡ÏS$rì>Îï÷ÍU&˜qâb³×ØJŸÈÍ´¼âÓßžŸýþü!„I¸endstream endobj 381 0 obj 4534 endobj 385 0 obj <> stream xœí\Is·¾³ò#˜Kü˜"aìKÖŠSq*)‡7ÛJ©TI¤,Ér”ÊO7–™˜·ð=ÇI¥tÐÓ4½|½`¾=çLœsü“ÿ~þúìÓ/Ýùý»3~~ö홈ÿyžÿzþúü³k`üy`ÁJ«Ï¯ïÎÒ›â\Á칓Šq§Î¯_Ÿ}µywq%˜”>ØÍû‹+δ–JÚÍÛ Ã¼.77øTñšââJJ˜NÛÃçñ¹0Ñ7ײ… dKÍWâüJHf´ç×·@ñï/8“\©à6ðS+œÙ¼¾žq/6ÏpNãŒ÷ró÷8¿2NºÍy~ßSN‡LŽá°P5üqo*-˜0š>}û÷Ìx6/â–;Ž›^pkBÈ«Àöó0s5CŠOÙÅ•6˜å7#tRâÈè%ùqêD†ñÒ˜Íý<äcšŸ™ÜȆVÌ{ò¹›ÎRqáËI ÁE9KåÊYzçD¡Œ‘ù,ãóîY&­/«PNÊ@(CRo*ö"ÕJ+Q~G–¼Jozá|5 =ƒ[œÑÃL5ñ±eFØêñK2û‹D‹†Ç#9zÓ—#r<‘RÒÙáó$B†,j Þ–ÎG·ö;§lÿ»D‰‡i [V×y ãï§5ñ°®„S ßYӌɚv_ÖÅ2Ó£]¥¯^‹Öd•£06Ò9Ý8¢sº‘Ñ”éÏ öW^k˜Qž>½KTÁ›…£ÖKßÓ·¡"®mF>]ÛÄVm3`Ë2­XÉ÷ëgC@(ã¿#*I¸C~RI}¸E,Ê#Ngƒ9®RE°›RMr†Ö(ÃL~CËÊ™Q[Óù–ç¦æˆêàÇ > üÝåütR5ndV5í–'Ô…ˆ>róò˜ðœZä4LšÉÁz)¹¬Že´ˆœˆ³Šæ€‚’²yAj­-òVéÒKÂT¢ytFªí·i£4²º²5óލw 3ÒÝÖQz(«˜!6Ø"\q<™ñÎ(Y£Êv|þXìÑCZ\J  ¥ ÀãI4FÌyS)eûlDa§ôX¹@‹oq๖OÔ–¸eå×T‡8¹f[â52á°± ä}žD´þwiÖA^*Èö|˜½êÈÑ×|ˆÊÓ åŠ2Ô `âöD‡iD7`g²€VïÒÊר`ôÒ–sI'ܮೲ•ZKJRñ¡_Tî€®Éæ ;¨ ;\Ma—rDi±¯7°†P e®lL E lö {IÜŸ¦þú¢!¤†>xÆxÓš”?ÆP2ˆ¥YŒF" ¼¶Ù+öˆ` Ìh',”bd®ÑÛ004ÎÐ[À+“‰jB&ãøPVy 8 v³òPŸA¡ÙÌlº 7ã»p/ÇiÜÓ!ƒ@Ö®ØÊ-øÕ5yVø—›„°Y k2›çH„ãºRùòX„Îo'+h`š¥+NV†Yº×DvB¹©ŽXÉ8G ?ÊÔÛË?A4W ¶ôÂC]GEö>gôá9¹ñéñ^ö£²xŸîcNŸ_Á,Ò0Ùͤ?©a‹·óó õ~¶¡¿ý!lyRÇé=à R¿Zg#Ä£–ŒþŲƒí J剦oöÚÁ/ãXë®ŵÁ©Æ‹õ“ŸÄuÝÔn·\ ¨KY‚z4§AÿäæwÈ€à1H¦~dþ‘):[ì©90ÔôÙ|,Öizó©¸8ÎÒÂbø‡¼š{Á÷Bh°Y“\4±ç´¥c˜!›Y5*N¶Ÿ‹@s'w‰o]ç\Ö‚»2ŸÔqµ }UÈ®Ùv±V3A”Q70~å œ·(÷Gz4B³nôöàÚàvÛ´w ЃÅ¾ýÌRÝÍP äˆ8y= &¢‹¾oÇL-›gÚC¡X\‡ƒ’˜8ìTR¸ÜA~¶¶vä5ÕhÍã•/¦wYÖ?ð1þÇõéiè"Ú}š†‚0Í¢4_JÓd(p`GSjT*&ÅJf˜ešâ®uNQYaªKÈÙ¸0ÊÅ&ŸØs~,t0*ÐiúlÅ‚gªEòÄ2¿ž¹‰›TÇJЧéÌ.| N¹9í]"É z,"Ï…rÐm]"Ò€¹­nr¶T|qn‡%¡‡2BB’²@ûéÉÐÖ©ºAYGO«©«%éÓ9Ϙ†ëB´åu¬e50gxzu†6Þ#“ä„PÚU—\‹›‹ÙBÇ„vTp©,P$±w}­§Z¯RVÍÊÓÕÌ©²¡™W`x‰{ìèžõ^áeo¯§Ü* xÇ|e½–¤:Ø^ 5îbd›^$-Ñ0°èH”:PGâ6ŒÊKJ¢+¡s‡«^kÊfˆ&~},b(+‰§rPƒ$A:YŠA"Õʤ5q—‹$j¯¬–sbA×…‘ŽŸ^ ?*&ÏçièEÊ Æ`Sâõ‹³ëŸï‰r .f,“3îú×ɲŽ÷h W¢=Ž/ð-¡,¯1ÌýìîЀ5IÕ(” €½µ8™¢F¸&£ˆ¯Á5ˆ µbt‰[éxÌ:rÀÕ0Îî ÅQ.!2bìd0 z‰–1[]gù+¨'~1o“N’«|Š»n’ˆœJm UPj— ¶Ehããí}r݈7Ÿe`S¹àýAm‰£@x=ÐdÆH vù`Êú:÷6í2½i}›“Á\¯æ‚: 2`$†[ìß•,H…ð‚q%ý!ög/;ø³ÿU;¨¥a˜ºCC-5„×ö”6Ñ B„›ˆDýäŒÎ"Ecñ)_owŠ/6øã$6QƒØq#[›ˆëk·M+‹MÔ'[±dá^%DðKöcaêø¾°GO ì·Ã3¤¢¯´yÅZŸ¨´ ûkŬˆc¡.¿»Ö80åÜ.Ƙk—“š©°C“뀼Z®“i›ãnQ#Âùn¡ f˜Ì¬­æOO\hjª–Ù Ûâû±¬™‚°$Øú´kwƒ#D8©53°GaÝZA>¡ŸhÍà« È]z(Ìz¿-®îõ陂¨Km77hÇ-tãh§-ÆÌ‚ÂhMŒnRqÙ³Z?½G¶¬ˆú ÿ4ĵMK{)ëW‰M¬)þZi¯¾™5áUÍMœ_E#ÒÃàÓÜšW_’öɦe'¹ÎY}%q±il¤ÇÙÒTFáM†„ÖfÎojÕeßD#åÉ—øŠÔ!˜Ó'¨°ÓÞ‡Ó%¨.ÓHÛ÷CS±’îÀÇýh"൛"x‰ùBéºTôÃ/Å»Ò Ê ý£ .u„à@·wRö ²ráRI=ð†ƒ¶Zš›mºKhL²¦Þ²€¸zM«2ŠÎl÷ú<êÔ I61uèÐÙæÌ‘O^…™ÕUf¸ß‡Kë, (»’Z0#u£Vù„†ûŸp–Úhž¦’%ö% evqB£Ìd…îb#cÔ:%tŒh¿ëùÕ²P¢}[ì\ŽÞÕ(šï„(cü-Ö/ŸN¦ûp‚'㟨îšãð´Î-©å­!ƒnŽÅ0ç57šGÇ™7‘7©Vv€ÿ\nÝ_õªÎ |*ò_M †T(ç&é€"Þo>™gëÁgPgæŒÀ¯"lvRuÉl`3™zqáCñ‡ü¤5^«½B¿¾Xkyíe+64€Ôº•X ótÁêm$)<69ÅM¿9”$Vš`Ì–i0{{¸€¾'ô:1ƒ ÀZ)&j¬> 3/SÎ%èCj0‘¥ñìA|EmƒI÷e a½5wrnÈïÅ([PÕo¨N¿M¯êXÏ/÷IêÛX©„ëñÖ&)ávC)¶®ßÀ ‰5­ßNrœlWìÈ‹‚7–nO;Òk•^‰c¼ÇI…\8W~;Î$*ð"õêZ);µ§Eûö ø,䈅UØÍ¨V](¶.5ízO¹§{BÚmâ]ÆÏñE¡Ehcšd6lMªLg ìÁx/Ëà$5·=©!¶ PiuYI:€†*sOK[¥ âÕw‘®,÷ ÅÛô~Ðm±H»+A}CÖ4ªà€FÕ©5ˆkê~—Ø…2ÿ2­>u‘þĹ­%Ðl`wšR¬öÀd³žÙEΙ‚ usaj'Ö¥«e-ë<“J·&»s§2~É\Ù ÁøaCN.u XÒ¹è]Ì) ×d„Jµx¡œ´¸p¿_çN, 2GÓMÍÞŸâ lWšaäøj{×3ÛúíûûjÖÍÇYcoZ=>¶É<Àä7—ŠÑæ›é"äÊ#–þ#w/̶ñ6-è mT6"±ojÔKNîe:f[{”x¼{¡ëüì½ïIò­qº‡©Ûe,ß)¡ Ñšì!š:×¼ h$Ø m²œ+··œoø4à("ï ‚šÄ´é0ÛQLa oýŽbê Jª wi +ͪ(!¡¦w¡¾í+{Ÿ«º[˜ÊF·¿â4<–@%öXbgÛúu“èÃÖn¯&è¿wq}À"¾×Dq—ÎÔôÒs}We²öZÀÿ]àì±›N-B·óÓ÷»»@³« <µÆÞ’ÅÅòâ+ör‡£òb{G¯B.µË®ÞÎ{ÕÌÿãõNǽÙ)5µ'kÊFºìT’ב4£¼t4CH/¼DêsiéKs"”8w\mVà.Ôœ†\\!tv%©v7íµ·Íõ)ù&‘dBuW0å=…³ÕÓ¼[ƒ¤FwK˜3·ÚA.õè× 0sãÂ}C~Í™†üæj"Þ.ô¿4ºüŽ’ Æö¼B¼_H*•;èÚžºµoox¨c^ÚÕðÜêÍç^³mÒ¹ø¨ï=æÈq4–`fÂZÆÝuEÆ”€jú5RƼ¾}HcA kF„ù`w€äé.Û%7è)ÿ¹4ýôÚ|dìå<>_µH{·o½R´ ŹŎü6Õ ¤œ^Í¿%pg—ÛúïÒìèÑ(a)9)ãwðÿµi}süü ÀßÁݺ9 =ú\˨cþ¶¬H™FÛ#¶0ŠËÕÏ?Dº•}òg{^uê4X™§6`rKØ“gÑÌHHfót¾^,:âSÖÎ%´Ce}=NÇlóÇ1ñƒOô›ƒ¯Ö$¡ÏÄÕB_Ä!]÷òxÐ %t/ ¡"LðømZ?ÙølB‘óCFÕeʵZÄ©LT_¦6s.Ú›d´—T«¡ZäˆfE MqIzɔص^T–i”3Gç&Ê>Õw¯‡`=%nUÐ)M¿ªW’ÄK@ü–z…x¸¢›£ˆq®¿®7dzþh¢B+p¿-Í6?8†‘¨®~×@ç8aç$]T>æ^üJÕœQìtuP{;èšzFÄ‚ŠÂ‹üi”:رÝÜÄ?^°tä¾”`Q†Î~m¾ Y ßéÍåì¨Á wR·~ÁŽr¡-J4QÜ•Çï+°÷4B„’H´óúóOþ‡ë³¿ÂŸµ ×endstream endobj 386 0 obj 4261 endobj 390 0 obj <> stream xœå=ÉrÉqwÊáoÀñÁ1h×¾t°BR„¾Ø‚N’$ÁE’˜!8Q_ï̪êî¬%‹ý…:èM³–¬¬Ü—Â÷Wb‘WÿWþÿåûgÿþßþêÍÃ3qõæÙ÷ÏdúÇ«ò/ß_ýêhy—è”3W·¯Ÿå™òJJ¹¸+¯ô"¼¾º}ÿìO§×°°Æú¿Üþ&Êj¢2K§ßÞÁà_]߈E+¬;=‡‰Fkoâé~¶Þ† Nw×7ÚëÅ9}z#|SB^áã„îô)ý¶V>½%Sï¯o”_lPWÙ>/×7Ö™E˜pº…•Ð:újâ_ñ·ÖÖ+zÈûï/Þ_Ê| ³XçAûˆòom´\7 Ò‡Ó;}ÆZ@ü”‹÷ªZ1cÑ©!­:½Ù±üñúF.ÂÙ)î¿# ½]çy8Ë6âuþjT¤«Qœ}¾†siL…¦p¾w¼Óc—£­uA*Ld¿]± ¤RE„)LE äeWŠºßÿý²Úrª~xsiHÛà¸ÇͺÉT‹5Næ½^’Ãý@Ð]k€dŽóš6Ù}HøQQ"‡hDáT +ÜS¶À¡FÕpSÄStÄ¥ÃCl/VÑ6°dûj…IŸO-°¡ õÒ÷øÙ-6:zí»½Ä3Zkö墭|ÊŸ5K˦0Ó³Ð}G6|GhŽCß™û ,®÷]H©¦`{)UÑ”¥ßeʵañÁ­”ûæ‚K¼ (s”(ôžn@[C¹à;Båä^Ï删«†?®MμÉôécÈ,Q O,ama Ž0ïÇ¡ßßÀA$ÐHüì½Á /«+™²Á2ÝŸÞ&!ä/¸¶K‚³%Si¯mÏ´y!÷ME~‘f FNY ötªVßç!"ɪ‚Ï×$ŸªÙîC´EB¸$>aÀ á”#žwŒ¾“Bu› &îû=Q>¸»ó¦•=€«ýQ™3 sãŒCú î.€P;—_6œƒU`t\4ˆ©lˆh§ÖÝÓ*ßìLR8#CŸ9Ãøž3†ÒÖP’Ð]ÝЕVIb€d}¤IYtUPÖnzäjäÐfS镃ó£ (zf®rQºÓÿtQŒR1ÎI•»Œ0_ÇGÌÊÌDuú¶ºpghLᦤ_9b`y$R$G$?{ ¡\Q¤Žàü2¦Yi&“~³V ­l69號ÈÊGmÜ¢•䈀.^´Œ dtig§4`X‡¡Õf€¡d©ÿ‰|yûÿ…|_¡íóã5”‰ýŠWfo^&–í¢Þœ‡¬`7²ø>.pZÚEÔè¥`½*«˜¹tüx…μ¯ŽLf¹È0°ô_çÅ…?oöªÇS«Óè¿• Ó¡Ú™al§biáca‚fÍSs%4ù<&ú,r5øv">F'pŒTD€L—ƒûˆ¨9ã‚Hãû¡`nLóÖ¨” € !k½(©;vH”N¶/ØÚJâ<àჭí]¿c§¿8û(S‡•5BÞe˜ ¡Å¯‹¿SŽŽù¦¬í ëøÊ'–`´Ž $ô²Uä— 6O7cÕzÔùT'Vj½ æà˜-Òe(*#/ð w¾þ$ÖR±òIjwºXÃ@&µ;ý|g z¯5®P€,ãÞÐüÚµb-éˆPÙ£ ½¼YË‚^ár v•ª4a–†ÉptT)ȃ†Z¤á”+ž§Ë!—³Óã4}Ä¥Þ`«6±‹‚ $ƒ_]8ÅFX8Ó† ÿ‹‡‘ ‘¨EÙÂdíñl£ ç ùÓ¹&Y;8`³²ÇydY ¡ß‰i„ähuÀC(š ƒT«‚ùá qÄbî5q7âY·–»Æ(œšêfY>ºc–;,´ý™üÌvË4€†fÞd48#À…U¼¡˜Hˆ³ ÂHH% (+άID§ä$H 9Ú-¡$楡¶Æ4o#ø7e‰§•1®žö¼âO0kñŽ·¯¿l¢û6TÑ}±€KEZ ÑUˆ+‚‡fag•ì[QÄXå Í`Ȇ“þÀX>Ÿ ‡Y !!ÚÅ‘ðÚyz?›Ç KGþ©éü:£YŠëd´S¬£ÐDÎ8EïÄ"éË–hóÄJ™s¶õ].¤ib…iGs¡°êÄ<WoŠÖãLÄ•fåþö<Q=j Z¼ð 6Ç¥°ÓÇÉÞü_e2¼›:*Åtôw•‰Jv ¦xJÇöü€Ñÿkö…³‹Î6æØ\x¸Ý‹Ø·p^VVn~d—5¶SV ’®@°N-4b•q†aßwûl–e€jïc¦(%4$þKÔðëüdÊŒ%pˆáB†m…!i'Ίfèx›ãr2F.FzÎS¦Ž-M³Ý˜T¨ŽxO6Ç•UP "LtG©fù½S ¸Ççn¥¸tCÝÒºÒ4ø_ ²ã[ZlU „ô¦%òwÍJ’e…:gp<_jsò/åµ44âlº^cÒbFLÍ£x%¯5¹Ÿ´Š=3ÔF‡a8*Œ^ИUü9¢G0Q¥ãSHÛ’ã=†”pœ ‹½ŒÎû~Ï£ítùãîµsw Fˆ£>ý¡–iˆª­|Ü0K»…¿d\T-¾_×vÓÍ 'ŸKn±âL"ž¯Dj¹Øµ2¤ƒµ³‹”]â 67ržìMð¹1S¦‚æÃø©tn‘çG\"¤ò–­@Æ:BdºHޱaÓ—ë 0³ìÒõb),|vmàÖšPmGÀÿ6,C|xÈ^kC¸œQa‹Y¨:Rº()]*”Žèoº ­¨ …¯}ÒÞ<-ßúb”èà hÔ8ýn"ÚùE¥¨bY<‹Ýà-hw69Q5kÑFÔ; Y(²1õ ’mõ•¦Tg[!é«*óa ]~)g8zæwŠžêS^©‹ŠÁt-牬qZÌnnf…Ù3 x4“l’lYŠä¼6ÒY­¤ { ,“jw~è8´É­è`ÕË øêT‹=ø(ãy òî` ½lMS0þNhjÝeLaG¯øð^™jz@—›S‚`‡áiçA‰~åŸL´…Îw *¦¹ê‰d×j>‹T”Ç›×rl )éÒhù„§`fNŸ¨æy“Zx2NØ ¢¯K 1ÅxÇÊÔtªkî W%,mÜ=åÆ6(äÁqpQîµM[¨¸%s¾¬‹Ó„%x=ªŽú'‹c(•ð÷Ȱ»B·Pv*®AIk/?‚!î "„± C/¨·èÀÆXÉÑ#3)Ë<ä­mC©ëèÄ„J5^áóšÁ⥭Bóâ©® O¥žÃÚ¥Ì cÝ15[,§J„Þ7ßBrºÖì;²ö2ªšJvÕŽ±@­Ö,wc4Öªxè¦x¥²7S -Nœ¸’öáÄQåvŽ·Ù¢Òƒ¢ÄÌ\…•èw¯WÕÕÌ·Ö’‰]’Ÿ—ù_v:gBÞ° %ä ´»yž%¸ý×a^éÓþóí>`×ì ½ÙFŸq0œÎ—˜·”˜OWá¬JÒ›Hmì¤I¼;åÌÔÔDTN‚Ùg´™c­ûØ‚oóLgZ» ¿15¬TúXŽõç×õSËÔòÚ ºcÀÐ\„@õ0¯6ß$!@û'ábcòW/‰j9ž¸y­-¸R¨ÆåÕQ.Qñá¸Z4kàrtÞ›p |•ºÆ=WâÞX´0Su}#ëˆóG0ø…ªy_j³å»‚÷_á}PìŠu‰AÙ´­kžß#œXÙtPþÝ™a/O³X™¦yk«­Á§Nèpw´Žxmv¢Ê€œPLð¥¥ÅŒê*g ôÔäO3uÝ£Âçk×™‰Æ±á0%T©pnê†J³•7†Ê̸%(ßÔHÜ]ŸÑàøë”žµ6Ö•]¿H@‡dç£Ì…EéËûµm3%O –úÁJm«¸ÇÚõÛçðñpkÿ€Jm‡= ®³²ð3ÈZ©mv”k„¸$~[³íAˆ±ÿùcuL,DZ¡*ÇyÈ×fRò …A¥'¥Þ÷ùŸA|cJ‚¸á«ë º|¥©¤ßÛÍ´¥Ñ°°®f1Ò'´!‹ x³Úm×W¥fÀÝ]\W£¿µÅ6;ÞŸ¨/ÅÐÆê ïË‚pru1gžl<Åý]ƒ½‡†sUîʈàÇ:‚öÍÖª:ÍÄNé2cï(Ö,ÆQF¨Ù°j–%M8’ 5ï19_²A׋˜Ú¼[“Tv—˜³óêË–`ëÆ‰jY¯ŠK#Qòpë†Fä8šUNV3 W®ÿc&OÌ7=E+°Õ@·U>” Ã<•X ^²UT ´åë‹ê¹JÆR³ ¡µWÌÍ~È Fq¦ýsÔÇ@E4çç°0oÎì 7ÐÄÎŒ0‘M¹˜F-ʇ¦šf §,¶˜ñ#ðqÚŸïž­™fx¯ÔØd8kÚ?· ÁàlÅæÉ ‚íHâéF‚áù3 f°¶œ¸Ìúú…·µ3WÖîZ¹†âj)R™gqN ×ä8éË6`›1ÙlN0¤->:[]à‘lˆ½ºpXE¤ÏW­Ïœš'Ò° ´Õ#OŸ›&!.ELƒ½™œ¤Â’ŸV¥åƒÕѨ.ê 6ä<æ*­¢I:Æ'Ûðƒ-d ’§6MêþXÙUwM§WZų-ùtÅ#=b”"ÑBPqiokæ÷àó ]HuÌA³|F~Ô¢®dÃÿÝKÍ©ÍV-âÊ>ŽW+™;ônœn2wi$i]¬Ø¤@ŒjŽz­7UZ¯é-¬ÍaX4FB?%j¶ )Á5à0~l³`ŠgÊc”´¬VÀ‘ôY-Ò­5(ˆ¤ZdKT¯Pמìeµš3“õXßpÓöÁÅÒuúØGrƒøÏýJÅÄù¯#`ÂF^Ýþç³Û£)Z¾öúú¢ŽíÜš­óSGâ¢Ö앜~{ä}äꎄw›Ò‰Ú«ëxJ-\ìlº³#ïX®5¶á‚g`(ï;{>;¯ÙÀ/ObçUÉ,—VH,Äí^ýÜÄ;=gàHºOrU°ó¢¢ÊUÄ©$ð§RÔàú­ñ£ÎÕÊÝN7¸RÑ>4žEåú¤¦“ G‚^´¢^çöŠ,îÏüg0”ç#JôÔŸ©­`”]Ä0Áßd羊ü­¢ ¾mäÖ  ›Åð”N%%LÊFïó˜­‚mÊ€\˜¶ç® Œ¤øûàšÄ=0¼‰¶VÊñ­ð[ìéH¾*b…‰‘¶Ê’'8¶½_í?ߟÆ“Ú$›éü/.¸wv‰Ù°9»8#³Î-‚­5;|¥žrØ$jÀì»Ó[''¹M5LXv;}.u³v^.çuë“®8¦•Îm-¬§do¬ð(¬~ë¤6€nD³µ;ß­ÐÎ[¶8Ðcʬj/wàòOÒ–žô#å-åwT¾Ü!F'«D}}εî7C/1ßÉèY‡ÒE€ItÔ¹‡ÅûW0Ónu؃éi;Óˆ]Ë•M×–süɇymp&fâtŠ,.6ò!ƒ‚sÙŠ`µ²ï pj­©ÖtÒ¤òóߥáV½í¨yeÐZOpJa$w.ޖŠEñ”“"ö@¯ q¬õ¥üRˆI3’p»Ù¸x9¦‡í±ú+Í+œEB‰¾Ôå•kÙ{(Œi7v?O~"?¼o‡¦˜: 6và¸à‘Ä`Fü+•Xµ %á©ù%ù;š¦, ›4•’F`ç¬doªÕŽ—44›lßž–r)g¢˜T—ڃƘ\kEmBPž‡ ·uE-® CÎv(p~4UºÑÕà´«ïnço¤™ß––màÃ@Ä,¢XÆa‘óÇFÒµ«Ç<é2ó¤zØI˜'=¿«xzæâS\ж‰M ê6™èÒh]™xs¤ŸïßÃþ•üüå6`èi;lÍ{¥4 Âxûls‡H¢¬àM°rØfð=UÑ2'maßšŸ›iˆQ¤ns*m÷X«Áº×¾Y€Ë:kŸÈbÁ=QòÑщeÀxã‹R¨d{È J[Å4–矙]Gpâè.oƒ¯–¿ØäØ—òÑÎë'ÒÅ´ýHŸû믒 ¶I˜_4 jk»ÄDD’†æH~¯¬òbµ˜R— µ~ªÔ­õà@ÕtÔÜ)Nô]ùÑÈÅËµŽ„h7£È¢w>/†à#`ó¿5êŸÔ6¤òÆ$„¯ÂΦ([jÇ\òüN:y—þI[GAáqH󦵻>Ud‹uo¯˜YKíg½Ë ­ õ˜¢ƒYé¦} Å Xk>pÌ{ÆŒ˜«LÿqÏrAÃIí"B.-Áƒ_Œù¡¦GªÜMñ4JŸv1B‘¯ò> stream xœí\IoÇΙðàñ1Лô¾È!;$@";‰"iÇ$%“’cù×§ª»g¦zå¼'R¶ƒÀ={ºjª««¾Zº¿9e?eø_ú÷âöä·§×'ìôúä›þxšþ¹¸=ýÍ9 üÔOÞ£NϯNâ›ü”s>™S+äĬ<=¿=ù|wuK§´ý×ùŸàEž½(Ôä™Ä×Ï_Ãà?œí9Œöšï¾:Û³IJm…ݽÆßÚjçÄî}üm9³» ü­´W.ý4Ì2“½úÈ+)­ò»}x¬´~÷üí…f.ò.NÈ€§ù·à0üKÂÀ%¡ô!<7NËÝþ´Ö8á²!ð\951¯v·@ˆÁ‚å³Pª”Ò›³½°“vœg˜Îö΃Pßs˜Q0)½-YTNLκÝ[ò8~¨»{33Ú{úñ[Ø£ÏÉ,‘ p˜^&¼ŠO­RÝO œrЛÖ^qo[{©$Ï<_|Ô3aí¤¸™õ*~%¬ä¢’ÙE ü…©µæ¡$Æ”²¡‘­¤JÚJ æçÈß~fpÏŤ•á‘Ïc5DH”Hl² ,dMÓ)kq>`|rÌïnˆ|©¬)óTý)+Žšß½âˆëüKéäoÎ`ˆEíþ³jê8EQÚ_'œ?=ÿóÉùÏ?*³ý߯¶Yžþª00Ú³ùUîÏ4›Œq½ L0ïý,]%¤0-dÖñ¸TZ§¥úGÇ$ÀdJóIp7Tz–‚.8Y¶ïâhæ]noQž¦{O¦»Åéäüƒ”ñïÀyÆáz%òå訶Œ<ƒÍ½®¨w—º¶"7ë:RÞï:›ô2ñ«Vö‡Šë«L‰¢¸À)Ð!óc%töÝtîoƒ 8X(*°;|OŠWä#ÛR+j-.òÅ/?A k’Q Ãï¢}rfrbVKòç«Hš5MfibTÅhIâT¹!¡;™êÊ+â=£H”·º³ ÔwŠs7:ÉL:ßó=‡ñÎ!Ð_~„¢.3ƒ1°¸ÌÏoWãò¦íÏèï7™®*¦&iP´š´ŠJ€Ú²÷¹be¾ÊZß0¼(ŽË(:mZ–†¨‡»#_¯¢cËèh¬ Ë•‘ØY³~¹~@~MÖ ­M£×©w|UÉ@[p0–¼«“¹óTLN–…îª8!÷“æ6ßMïu\i°oÉ+¹}›ümé!z¼Âúí6½¯ô)Uî–ö /¤& l4!VÑ›Õ=}»>½,=hz*èG-kq‡ƒSVFè¸T¹1ÀuÊiÞZϽcÇ™/¬Aí½ ó¢ô2ÂÁcë“üÀ’oêà‚{|öqÑ€ŸƒlÊõ3tCR¼aû‡Vî>Nc,MªôßůCÍéÄ57q:§|‰Ë< s]‡•…mtŒMÚ|±˜iÎ{f:ÈLÛ̬¾ 0Lë‡aºŒC™=œBñ ÙG‹aFrA¿ÂXcbL©É˜®´Òmú&:ee@Ñ7ïñ)èåH…床dt¡,s&´DÖ¥“^Zü‡Ä´‡ûx R»¹—ÂÑ)¨cšÕy¬» ÔwQVfoEÉi'`Ÿ_´µ­ã,‹Ül -†&07)7 –ìHÞÕ¼L ;9ßÉðÄô¤xâdyT·Íø‚ÖÀîWÏd|qvéE±ðao‚&ffAjT)Óóñ¥×es}T€SæWê'jOQTр敲ÌnNqyO:e€€âͼI|>ÄáÚ›ƒsQ(, fJ(K¾áûZÌÁÞGM5jRTSá=€1<ŸŽâ|)yˆŒØCPE¢£áO]$õŸ;ö½LZ? çzKJòm-î…ˆT¾·@Æ&P¼ÐÊ9Ë]jß>$.á§8øËë&qÂôkBâKºU"AæuFŠžb'Êê×KnõÚqP'qDY,¢ 0ÞNΊýš¨*z\ç'ãdÂP ãÀ/;_–Çñ°Œ(²Üµd„”ªˆ<ä¨âÍ\‚Oðɳ=Ý«"¾Æádâ*ç³høùMœ%äôÞ¿íÒ×dt&2HUôÜêgdnjôæ²ü à‰²×{¾à‚»\Rȩᮛ–Ø–Ë \ûá†+ÕtŸUþƒìávÒ¿·Ä”­»A}¯“á㥖Tÿ[2 ‡Ê ôˆ4 ¼d–ïñ²' 6„iÂþŽ l”À“­ÖéLZTÇz.”Ž¡‚‰`B—µf)Á÷yû„ÍÛ«þfÙ·ŠÔëSòóSW·:¨XK&',Œ2&LL úU¬%Ã4‡8¾– CÍÍ–ùTxšWiÔBÝfÎä(e]Zªi h̰.+?*o‹Ÿ£üs¡à5n2è^ÅÅà*: x bL2Axl”XÆI0––G%}8)Á äf„$Fø§ê͢߈ˆÞâ7ƒ6)@ 6×O:Óýcœ”“žts¸@¬,ñà¢Àï2ŠæÚš²~ƒ¹å…›‹SàÄQyÁXû¦§¬¼ãZ\Â-€tC_Jº"\ë¼ÆRø³˜•ã3b•]ÔGéb‹ÞtT²„†VM’ËF¦ÇH‡$Q(µé¹ÂÞ ‹“µ'„&.Уvš¯gX²¨óÇ2–)FàoºPNÞlM5ãhçËvT›xŒ9«Tó‹XδÂ;é{ÃÆÌ¬æ½µ¢ö‚|oå÷‰>~GÞ£ÖÒ·«R‰Dž`JÊ#LË7àÎÂê”ÄmØðZÖù)§?Ê!¢—ðœ7q¤á¤ß˜dÂÙ,ÓãÔ¡)`‚Õj,f3•¤`<(û?Ï\PG»13SŽ Îš¬ Ña‹ß¬? Ô[ê´XR_C_?ÕȾî4ðô Þ˜„î ¸ô¶˜ß3ÜgŠIšÏÈï¼ÀµŽ§¸—‘ZrˆY: ^! îÁÕW%Ø®2cÓìÚª´M©ÐjolTØT—:ÆõëòE>èÛ"r¢„^$}å\á)fÍ6•B£¯ìÌp×Ù ½:tÕE ¦RštÎeØß£@Èÿü Fjˆ$D•1Ãj^ÆúK«Ìºç¢ %7y…ªÄîH™dšžVåo†¢RhØT§ûÐ0Íd${}vÀq‹?¤ðyÌFÛ£èï¤_À\žËû+~ Äb|FiÚd~±ŽèC²6Ma,ˆ€Æ¦²–å2aÃu–µê=¡ƒcŸ˜è£–ÃóJaÛ}7Ê(sü WLôßF?ìLæº~0ìQ¡zø…f_É>\ÍMnîæ“\‘ûVô‘GKp–ÇvÁL¿œøÑ'd6!@3cIÈ;èÇ(m˜A wMÇ–‡•k9¸¦Ê¸NÆÜÁ3Wï‚·²t!Q™‡¢éúnGĹ,1:ñ²W˜)²Q…¹÷sŠå8K^Ù`l{N™†ŸÔ¦×e ÌÁô,¿©U¯O ”b<©x%Ñ ‹Úžëd{ÄSfxE‚ç´ÿãÏz=^…Y3$V·BÌ'7×P®êÿ·Ök­É‚öŽÌfYØÈ,o@ö?³|{ˆY¦/©ƒ…\6MŽë`2?±v“Ò+Æ=¥™Ä,†dÏ{9ÞÉè<Ç!cÌb0QgO÷H«æóÑ–Ë’ÕÉ“FY’WÛ¸Û¾¸»±Î«'áT~–™ê>êxZ »òCÒ¤wkÐ7Ž¢‚Üë¡¤Ž¨<Þº(õésrÀþ²4öÁ\”vÛ1߇p¨æÎÎö¦Ó¿"T^ÇÃOÿ.©Ñ‘3Þî¯/:¾ÙöÏ[·5iÔâ»ø!ÎíÝÖãG žÏ/!À¼å枎ùÞ2W‚’påYÈåÅA ¾Ét31žËÐ|º.¡ÁCgøìùº8DÄšÙ7“%ˆ¦±ó»ù[Ëײ¾bÚâL¹!9Z•^9ÞôÊ(‹ýyò1eªf ªcÊbѹ,àÓNSî¼ò:3?hÎ* PT¡[Ñ9KSÂsxþŠ $át¼èÈ"§½FÉÍîß Q¾/j),Y)^­6º »€Âp>oƒ*aÿv­½jѸ‰ƒ|Íí÷NUuÏÓ¯Ô›5Y½ñÐJã”­ûW©ÉÒmºp³Ä¨4‚Õx/·ëg:Ø,¤ù6ôkÒÔ ÝIåH{›³˜¡'ó,NÅÊÚPöˆÿ r¼Eq•í?zP_SÎô>œ.h¯õ´ÂA~²²rè$Þ Ö8Ÿõ„F9ÑÈU÷ ŒrÝ `Ú]Def­¾› ïª. š# TÆüø¢òuÿ„œÌ¸ók.ô? ^¢.¦QkXlaÖ\ ðwpd~t–½Ù÷qX[¹ps1µ•wœQþDwŸáMGãð {šÇŠó¤VSótY² 8Ì×%¹§»aÁbÝ6ÄgQÆ K«Ž¸. E (-åçdï¶šûø]Ø}(Š‹·QqÚ»Ò.ýçÇRw3>ÄuVvLï¬3&ï[Mv}¡â¢©¹Á+gôò˜ÔKÃék7aös¸äeqsË’„0€¶Ý¨c¸Ç(ExÑ•‡üñ)Ø•nÏ0þ]Ú¬¼éþ<Lh=ÿ¤Æ[Ù ¼þeJÍ|#ñýï"ãˆ$^¥PÏMzÕÕËDDÛ,ËN“nôŒÕCnÀ¤}íhŠé"í<¦_ÿ¦&´—Bîa׿é³p9,ýî‹á·#Ïò8=J²Ê#áS¼¢O˜r‹ô«ƒäV`¶¨éuöBêàõ¦kÝ:&á‹32Ë‹˜ 5yb¯H³"WZùã´pÍ˳P©ÍëÁáƒág;çCã’ eƒû¸8¬Y¶.uó.VN“››÷@ÙB ¸ƒ6Ü?†. ‡J·;†ÚÒ¦‡{ƨNÖ'ŒD |©‡8"é+°…° FH’'IÞ/œSÇ,–ÄÝà¶€Ñ,ÇÓÇܳèñ%©øA¾PÙç6ÖAˆ¶W&ø±À¬­JVA´:Ûjóæa¾‡„ð%7¾žz–M÷ØÅ\È1bIro8± Uà#Rƒ­*ò*Po^õ4®BÒv…]…ÓõvyuŸÕáé(èƒ!è^Mkã{Ê4²-©»ÊâÍ<ªëYb‡#“u»0²Ü;ùô‘—žÁÔÆnjøçÜL8¼µAv½ã¬¹ª(mŠH:ó$ ;?ó®öú´EѾäzýa)/çÌ q+?йj‰hf¯{f$wL¬òÁo­içHè]E7ãO÷x›3KYV³’tŽûýùÉßà¿ÿÇ€Êendstream endobj 396 0 obj 4676 endobj 400 0 obj <> stream xœÝ]IoÇÎYñàñ½À÷¾È!;$@â9ÄöA)ɰHʦìXþõ©êꙩކóHÑü0šé®î®å«­ùÍ™˜ä™Àÿòÿ_\=ùä3öêö‰8{õä›'2ýãYþß‹«³ß>…´<‹StÊ™³§/ŸÐ—òLj7Y¡Ï¼Ò“ðúìéÕ“ÏßahŒõ‡Ëô3º ß®Oß­?½¼ðåÓ¿À46ði”›¤1¦zz_ãËB¯ÏñgÚàÀçb Þ+i Yzn&¥¤ˆgçRMÖ8Icý¿²Þ í'¼p@Û¹qÒ1âOxlEúðº|]K1i)‡¯MrN[S ~‹¿½‡Õ†âõXÑNÞàC­ƒôápAÓãWðï^TB¾b¯\ÓÚhY<¿:ªÈÃwl’+ON֙ë4Ÿö&ΔZXï³õé[6ðëL‡Uýy>ë•?üÈÖxIh”.fç¤^ öþ[šIèpøТ„ÖÑÅ'}qT~²Öd 夕:yeËÈ·D¶‡Çô¶T1Vç8¯ëúˆŒ¦|˜¬43sÞäa>E­¼ËG›Ë[à_2éqµy>œá|ž"±®µ™u_°nÖ•Ù&zË—žÌh` >Óõà øÙLÇsg=ˆœ:ün=fÊz·9—ÐÐ6(k‹)ùAò篎çF€Äºr.g7ýüÅ/íë1Oµ|œGÇR@9YâÏÏ 'õaS[à+Òºíƒã»ˆüÖîbqpÌ÷vÑ#2¾~Gì€t?30ìfà+ÆÌËG>Øóã9¨´ïà<6`@:A§YN<15ÍJ?ù$â¤5JóÌÌÏ#ZKFÄo\8¼dG•WaaD‚"#6ÖÉ4Q©“ó,Þ÷>5~Ñ& $f>d8.UœJàIÊñÙ>+L ¾ƈä’Þp1|84¡í$¬„ïpí¬vùB–¿Y=ØÐ{ ÈÈÀÏû%=*æ- ] iãXn6·H–7¾a_røEªLÁþ¯ŒÙ1”i·¦õ;‚ º‚ n Tž‚·ÀËü° àlUf‚uÉ™Ÿÿ€3(ï ­ƒ¯z´3Ä÷F8ê÷½Y©.ßè‚i.S•öáY²†óLÝš—M[å­þÇS¶êßGÄæYh ‹hÝŒ· Ü{Y€«ey/AþüáéÝÈͨÑÖ¸­8 87Å(™oã@~ÒÜ|ŒÜ7”¶æ%í™E½…tàC ´=†ìÒ–© æ“Ô{¨úˆ“ÆÖ¹h¼›Q–rn樷컾s@“­"ó‚˜"¬æÏ$o>––MH&%OWš”Þ©d59>¶ÔÍæ'6Ô,ˆ®–“¦ÞÏäÚ*S 2†ßÉ3ÜËä+£è ÃÛÆ¢ÕX¤Ã+ICž/ÞtÇáh ª8Øv´³œ6}9·˜sÙ*œµI=ùX+a<4©dñ2Û×J)Љ¨€yÖ_+Û0ùå-Ó¸®Ô¼¦ Q+˜¡òe)€´O6îãPƒª´ €]ÅìÕ‹hÜÌ$H¦·™“L²Aôï ~€oìÖ˜7kª6 Áp£kÉHï*Pn ÊHßÿåÓ±7¸p}Ë9霆µ*î ¶p@’0 ¶º(`bþŒ _0z„-¸Ò‡¼èñšѭƒ‘p*X9~…¨¡˜ÂN†NûrÐëÉ„ÃØI­!Åÿ}Uì³/Žl –Q±Ä2`¤DØç0l”±L8.§|´ ø^÷ØUiqé‡ÁQòÎQT¤±w ~jfä/½@ï›ÞA9„‹:€û É„ NZdL|;ugiuæcÁt¨Þs{BûLd_³Ñù+ü9J\3î²î3QY§‹Ñ31ÀT&¥4Ù HE‹^zµðžV*fîºcð1ˈy+¤îO¦Àù¿>yú«Ïá€`i*Š.è©}À‹&zã\RCÛÆpàG6¢;„]ñ7pADZ‰Q j„Ÿ6QËô-yy®ò’¸æèEÄ›ÎBÑ…rÓÕaW™ojp O?=ŒS;¡:;ïÔ€õÞ ¤³ëŽS“5‘µØM+àIu ×™æ;ƒä‰Œ"Hž¾“’ŸûáAx¹¡žÙ@cäóiçP­ˆR/Öpúñ™¼¶ŽJãT›‰¶~Q/ÌÖ+5Å€Œ?¬Y݃‡66ÎÕ"œóÙñÃÉ‘Ð;-©rRI§Þ7´ô ªC+0,x'1û- ¦="˜™š÷ôìÇЃ}ÖœÉÌBx lMŸ¶‘ëH0ÄX¡Ù®ü@sˆ¨†‚k>/ÑòóÅ»»é¾ µŽÄ§ÒèšÙ˜ZÞNnØcjo²Þ 1ncÜI¢[Í>o!̈!nŽŽ¹¼|XCIòja1Ê5±«´r;ù]Œw„ɘî.öpAhÐašS7Ó%–Ä E|šw[‡bíý(ýÅLRéR,r̃˜W”…%VVy´IÕU±Äc3’½öu¶¥K¬:±gaExpŸsÜMÞ8€ &7Ü5ýez@äM–ÎÀ³lÑ6”²ÅáG.džù¹‰ œq® ˨œ˜“³hÀ#°ƒš–ÉÝÕÍïhL1rVÿôxîmÛe·Â3¸žì>ÆCÂE•’¸¡1D •=J#ÃþÆ¥«^…[°WQñï"z³¼ÁmÁ-5aPxÃÛ=æ2‰Vˆ“K±Ê-m²–WËsþàˆ«E Tp³‘—¢¢)* ØDÌø÷gJKî€(¾'höÒ±]Âå£Ú©ÊpíËa­E+ï“HÕM ní´ %WÅ9\¡†s#4å%ÕV,-­PË¡oL+­œƒ8:̱/5 ðSL‘.;V9s$3rb%ÀƒC©µp÷¥«ÌD"ÔwÑÂöð!æ‰OË÷Îk|רŠ×n¤x6¬cšÇø2”M“ËSc:Ïø‰RÀ‚é< 5ŠPk«t4¶[¬9Û"¤ _ᥪýØóUfÉ +‹W–$–5ç3­%P»JDXTîÝ¡›lî”V¹pC‹#n’‹Áp_¬O{™R /hµ¤¶>/­Ñ'ŸyWôMP˲/—}î­,ø v­ÕJ$ÙHÉãLè·G‹ÅNÞOój­°*¯VYç‹Õ²M`}FȦˆð¼ڒ~Ð[r­«U‘_îLEþ—…$¸+©¨”ö„UacR2t‡rV׋ŸÓñf A­‹$d©¾_Ç~ góA€ï9#Ž¿‚kÕ:áû«{Fu÷Ke*³û0“©$ø%Z¤›E›^Iv»¨ê‘Í•JUTµ]‹ :ª©$c¥esï¨ËÅ\ŸÔz®t@‰Ü]ûGÜ©£-}}¾±™c½sX.±Å¼`êoø;*+B§“ààs§ Âhì¸ !0 -àåÄ!Š”| »3|¸3¾÷¬o»Fä¡N¨Ú:`xêÍv0ˆrUJgodtw}ñ/Ÿ°%:¿nmñXd†‰ÁÌþ¥MÀr.&c,9뮓Öd•2ekÓÃJ̱xÎËè1šHÕr"ö’¦sÜ¡®ãeþ[Y:(÷E®ç/æ+Üѱ4>þx¾è´®Ü!üæXµ¯ ¦j †^ù€l»Vº°í̈wK·À}ñMp£)ØX *lƲÓ+UOÁÕÀMݦýö>Bµ4Tö†#­ÛÙ÷ ´NwAñÒ«§íª@ðüØl†”i£}Ç9Oc¿õT>p~š‘[Þ¾yGÚµíì%øm>kþ£ˆ>ÁÔ¢«2ûªT$\’9¯‚% Âb®Å¡ø´Æjü*½§uèƒ\YóJ‚²;¡¥ñ4B£ f¤q@'»ÔÒ7-ïMq ± ßªkÞvÌâ"94~Ú‚µçXs¦R¢›Ú³ö‚lˆnVóÔ\kñ³\`±ØªÚÝ´2XW7qúd÷ï_hèí$|Óà OÁô³ŒÜÌpyäp¾Hk*Âòª¬¶ÕÉuï&åjÝqWÇ.ÇmtY—ßF[ÊP•çyjq-·U{’°È@»Ù³¥Új@g*¹X,6Wf¶œÉ¥jÉPu3Kjùé™-·”i¬WvÂ˜Ì =P5PóÍgÆN.vÞ¡§ #þ>h€†ØkR©‹Ùê x…<½/פ"ú©<$xê­îå7澃HßK˜¸rQ>h¡|M@̳ ›€ª ã‡sÊÖo[{³ŠÒÁ=Ð#ïÏ‹òòª‘OfP'¸Ïñ  «~g\Ýdòt%c†¨s¶MXQ<µò•϶P;õ}±ìn-%ÊA¥{¢Ž3¨ÈÍ#µîER뢚¼F!kïÑãèåH7«Ø¶ìZ¹¡|9ƦJu”Ž­­s„§ØSÕ¹A!±‡;üùUÖºØSнo¥êéópöwFÞuOPPQOR…¢^ sqS“ÛÚŸ¯¯H€§°ÓöðœTM&ôìA«ý@Ìžì  WÁå.Ý›bVP‡òõ{Ü„ø½·áê”w#å ƒßE»é&§“Õî^ØöEî Ž“”Ý ŒyϬ/”÷ðòfUà‡)m0Ñ0n®\¥h1ÂeÌä˶“oó/±@Ò84 UÆûl™Û{IÓØŠYæ^êÈ€7Øáa1ÀuÑeƒDûR&è–iCǯ_zlà;±£­+¼íT ¬fBmé´.}mïh¼®«D¯Õb|`ÀË<·ÚTiz—üª.ü²14±ŸB„jè738•ò¥Áî£|k@úÍ#)_]GU|’Í`Jµ®}ª™XèJiiëR­ê¶§b—4ôvGçÝuž˜ •:]…8êëáðz´;µ/ˆÛ£ÆW&Õ÷eÀë6º“ƒJ¸YàÚ5õÜxô±ÛΟ»Á¨_Ç`3/ª¶Le9\'ã»tdgÆ¿%Bü)AÈe?¶pþæ}ÔzÂ(ÿV•PXôö¡RÏxר²êY”<ó•ÏŠOËt÷Z¸Ùl›‚Úë*d&mÐü³…Km‡ ¿ârL|,¼ú­0 šƒ\²*é¢à •Pà\u-Ý‚k? Þ­k«OކÒŒ†®kDDïQÂÝÅ„ëg Xÿÿ@ÎÓ¯ÓFÐië:çt(𻣢ºö®NÄãËÒËÊÌÑ801/8“±k)븤ˆ60sÛ¶”WfÑ¥Îmãóq«µ—3bTjeŸTÌ?ªÝlÐЛIK݉ô„éÒ½Â^uTõCòÃ)ê R5ðQ?Ì7R,…×Épë#P„‡·ºpŸâ°w­5ãÛ!Þíh„xß=˧S"Ò+WIÎŰ­»ŽÌzRïc¨5÷t ±»¶8ñãì»21PàÄÇlŒ¥§RÌÍ*KV53r=Û,à…w!ÈT¹Z6¨ –D+¥ìi œû‚L8šv;t˜Òì¨{à´:‡Ù %a꘺ÝB¬/#»«8¨Wñ/ñR»Åþþ"!@`om{ÐOW×WÒRëèqß wµÒöV·gyíŽâ ®vÆP' ×I SíÓúÇ]`ÄÊ'¬sÃýê1®Ùÿ DéZ¦Ì´²t83õ%æy€Ãù1EÔðÖ´*p>ØäÇùúÎå(VÓß-wÌi7‡ÞÒtÑoÜ©‚/8`›~¬Ÿð¾Õ–Ó›VÂÔþи…=áHa£#W*íæO8½-ïöÛY-1ó\’ÕÄ%ƒÒï‡]—2_ ~~ivß›’ا¼…®SÊ…AÕNÄ8½>ºÀ®ÿ‡ÁÉ€< v;c–·îJ\~âûxúäðßdƒ(endstream endobj 401 0 obj 5798 endobj 405 0 obj <> stream xœí\[o·~ú#ôxTXÞ/úE¢4Õ[Ӈؒå&–ÔDJÿûÎ ÉÝ!—\#¹.bäÁ'+.9~œùf8ÜïOÅ$Oþ—ÿ}usòÅWþôúþDœ^Ÿ|"é§ùŸW7§¿»€RžÆ):åÌéÅë“ô¦<•ÚMVèS¯ô$¼>½¸9ùçîîLLFkoâîöìܸ8w×ËÓÎÎå$œñ~÷Íòô?gçb²Þ† voò{Æíð±±" Í{†Ö*@søÓ·ØXkë•çÙØïÏ‚š¬Ur÷âìÜ ­C5Æ&Æ¿Yw÷I$'Ýîºðw%ÔîŠ^u 7ìædõ“ Rî.óÄd¿s˜ ŸBn¤»ïΠ£d¨†ä­ßC'þO©FiÐw€!-¶@¡D ²¾Ó#yYzŒøs¤1yï‚ »W¬›¤}§ó‹üwÓemõâÃÙ¿.þt¢< $ÙÅ%@* h¡É¬B]´ÖHRÅ^Úš¬èV*Kj4LŒÖ^tÕ„ˆµÉ`«]'baNI&z»{™Zx)ÊöY=ÎÜßOˆ'ë*´€w…åÛñe Sˆ~ˆë+lâ' ¬,¢ÓÀ^ú‘5¸9ƒ=*á­—i·ºóv‘ïÖ×idPl¥o ¢˜ZRSk|¥r޳WõxåM¿zÖ3œ¹¤üùÔ`ï@¾ Ö ¤ »JŠ0Ç±Ý È;9Eí äÇUæ„ä°äðgÞ-OoYã· çïKnÔšIšÐŸå$ô[›Ñ¿^© S¿½ê¯Û´@¥ùâ+];¦8/ãéÅŸO.~R—ÓÁØ4¼ÔV44?e?;7HÛÀ;Vn’ÆÄ²:·ØXãÛð3Hm™Æ7ÁÊÔGí5Ïͤ”±QÝ?V´úŸ|ØÜ ‹ÉÑ’ÑTîЈšˆO-ÌŽÿv¦dÓÿQ Fø&Н¤.κ3xYÖ×´¬F8U ÂZ¬1“6ïe&*œc1BïÓ`U¶UÚŽ#“[Kf¸û"ñmž‡ÑèuÞ0-p±§Åüö° nm Ê:ÄNÅb B{Rf‚‰ÉË?’pà¯eÇÖES«Ÿ»ôÌ @L·;Ok$épÖ6ÿÎ8ú¸^¼óÍwˆ&ƒLèÝbE¹‡ºej¼†Õò¼®ú@ö5?†Å€_mµ§×Àº÷Øq¤ur¢²K¶ÓbÜ¿[TÜ[U;™‚.­ù‚¤=¨,¢õRÚ}¥ì~¢ Cí3N‚¸®kÎŽsRÞ´&žÆ ¶|•šHð‹Ì•°çüêziÁsÇÃ|ÚÛ´üÁªæi¯?6xÖœžô ; °£mc€²;[ZAOÕ<9_$÷©ml ˆ aò€‹wƒëQ1kI D´àKö >ó*ܧá¢×ß›-6pº·£¿D0Ym¹¼4 ŒJTƒy[ÎýVNŸó —Ž3•6nÒKQφßhÝ1GdP²ûý2³õt¨¾;xß³¸éÇjÌDÜ@užQƒ¨qQkÎ…1¨ÒZàã‹ij×ç‚ááù>ᯎöÒ²=2‡K"×ûàsàþ9pÿåî4~Ü?î¿ÐÀ}N[}"û'­kñIGëLß?2šÖp Ëáÿ›°Âvø ˵N0¸9$,ÿ Ž•¾Þo×’R´1r|•r¨gZ 4wáˆa²çÎŒL&úˆú‚´ýã4“í*Ýú.mZ ‚H~–6š@RýÈrP'Üûn/‡•ª¿ûÍx¸ÉÍØIS0µ¶Õˆñ¼ÔÀ'HœNÔ}™T;y6EAÙf µ4œ“MËÝ]U¦s>§lˬ*cO.àUk÷—}ר}ØfröÄ÷¨1äÌ •Vˆ%+&xAŠ2Šë½ ¼ÈR·JÁÛãõEC§4LÝ÷V„Ì@ßs“Æ-n+Qß1Œ‡¯;Ô`°¼1«Üt¢š˜w#_¦æ°ömCšm>b~ñWGu•Þ0µGuèJ—Ôlºÿ¼‘J,xè*5ö’M€/Sq‡ãæüIÚÙÄI l/Ózęֳ{(s• gœWƒfwñy® MŽ1j¾3¢ç×bJØ‹ú1ålÏrÌá³W§¶¹F|”ÙZy]ÔŠOuÔRçýÙÕ|Æ›š *Ûˆ“,ã@¥Ì¢"IØTºS¦Ìù¹E)Ýî[FиÜu`¾ñ9ÝãÁ`¹Zˆš¼ŸX™x©— ZÜßü'çfojïµõ¯cújô|ø°ÅÌa»|øà~šëŸÃlËm‚»Çtè˜9#yQQïOÔÌ(¼ÍýéAZw¥£Uã;‰#¿=Öž2Œu}JÈ•³Å©=ýéQÉÞ€Bšjÿݱžñ5Ühâ|A9ƒåÔ.Óˆ^ûÆ©%³ »Tøé-‚}8z½ä„Ýþf™¤Ë&<‰T³”'â½È‘e/,ÇyÂBíÎa€t>+Z+4k¯Î~§¹<×±* R–¥z»PË»å'Î@ÂTR²pE#1@Æ-Œø¢–ƒi; £÷å`K¾ÁÜ „¶6rî(•z (èÅОÛâS°+¼|D¨>ÿ®}UÁûM¸’Æ´“ÅÀhÙxOÊãc~³ZôU¾‘ùþ‡$82‰—s‰]°z•Ó˳ì<é–æà¢Iwlî6ˆIèkbº4vm{Å<¡^¹¡™"Œm‹¼¿iÝNsZ‚$Jk âJäa÷õŽÉ;ÐgC‰4Jz•G§Êã×Ò# :ðôq#¹EÂ6gzƒ½l—‡7²n“ðõëåEJк:±×¤YQ*kâÓP¸äåÔÖçÁ4aøÙÏù $F¡ËiqD÷ØºÅæmjŒe°²²»-1¡”i¸mP,¢-4“Ë÷èli‹¦Ûàjš¾Js{•_NÇŸô¢†¬}@²‡EÈs~ èÝû^ˆÌQõÌ–Þ1±*èÌh]à ¤äH.™F«&ªC|Ò¬Z‚ù«%Ägÿ*Úÿ´.ª »¶«ó©ÉF¹ÿ±~äè ôÓó„þ¦Øá&õç¥zz¡,v :«`h´y‹‚šö:n0ll!õ^ZT«jŸw.ð€–âŸ2ˆÁ¢ ² ÑúTS%»Z†*»PFIæ"wp¤4*Z¡!hí“, 6€mÐtz,¢~RVañ("iO¶¶Ò `ò .܄٬Œ`C¦¸a_*”Ãã²»¾'¿OúAÚ³G¦a¢;„$çéÄÛ4ò¿%EJ£÷mUÑ1¶‡ù@â–„¨3WO)F±Oã&nð¢™Bs“í>õ´ã0Jm,Bmûü ú~·œš…•úÈ©Yœ‚õG/œ#ƒ†F®áȸÖƒòYn˜{]η °ë$,!¼©6D¿¶Œc5œ`ͤ)oš‰´Y¶R¿þ|ŒnÌ0&M%û—‹J |Ñ~•Ø.þ–àY¥?"I&”MgûWÚ/$xJû¯peb´5°ø¹Òà:W£Yn“— 'AD]ŠÝV¦xû6Ͳæó…¨[×äÁ8ýQoOX-'«‡÷è‹ÚÄã×ÂŽvC@§B¨v§€^l‘—,Ž•œ ôÊ–;ˆ"Ý ¼=´ói ”ݨžìÚæ=Š&3¿ð1Ìy!+[z±‡‹Ú—èqsòé÷”Nw†°jÄE³MÆ*©ÑíÈÑlKÕ“ñ˜Úu}Är¹àýH—ÙØ]5ѳ+nŸV%Õ—(MŒ^Õ›”'®›+ËxWÀ½·'_-ÃϹ§ës¦Û5:ðÃ<–áÍÐmVï‡tŽÇ}hFÛnÓõU×ÄGÇ),¬· éÁEÚZÌß0R Y`¡}Eðs‰ „€Vu)ü%Õ¸`vÑ:ªxø+Q 'ŒÁÌè7ùH>õ[#õi¦ñ sJ:œŸsêØëÁ7j/W±ÑÑžÑ÷[¡ÜË>Ê5}ÚÝA!Ž\úô>ý²ò?½¯Šaö:ËSV»Ó«ÇÔ‡ë¶N FÅnú@94ýùdFK«Dï5A¿ û-hOZœØîoøØ)ØÉ&—iZÈ@vÁÉÌì+K“P²•¹Ã[Ö£¤`&³ÛâCšôÒêX DäMF)Ke‚tQPvg¦5×Ë,pïÄ”.+[ÎØ;g)ç9³Œs¹+dÿBL˜bª|j“ÔÐNË·b†/u]e¥mz5DTÀÓ.H¯âAí"“ 9K„?D3Þ—Ø@DË>¿÷ÓæjñëàÆ/Ï’ÕIôÙSð&4ˆœB¬œÞøhØXª­+‡¨ÇPkààK‚8o3vu—©l…-9 ’ÞÚ–ë¡FtoW5YonDy]}”XÖår KÞç6(ƒ«]Ùì÷F]cMöý Z–ìÁŽ‚Û÷ékv6®¯ )Xâà÷æÚ8’m¹6ôQn~ ¸¶Šäâ[®ò;ÕFêëà¬eç´yË鵿ö’söXŸFi(0ž¦xÊ~XBŸ´¦À…n9ë—RÒŽEÕd˜æåýè(2,ø8L2¾5ß+‹3–¦d(–0#KYç“ögÊói<~ëάS¶Ä,à:êVÒÜ‹íre5ÄW—ÿ­ÑÚ.bšÜ` ™ÝL“{ ŽNCß'å*Ûû#f[2UZ¿ž4·Õ\ ÒŠê‚Q õ$¼[…€Î!÷Úûã$ [íVú6ÁAäYÕi£HlÆG)v¡€#ö2ëüƒ‘+YÙ0sb}9Äì~£rœX‘/ ßÿš÷ñ?¸u”†‘nt pt4ª •rŒÞmÂé-~ô Âôô1#È/³ª¯„üáâäïðߟ'qðendstream endobj 406 0 obj 4619 endobj 410 0 obj <> stream xœí\Is·¾3ùÌ%~L‰cìKÖŠS©,åK\ÌÉö%ÊeR´µÙLåǧÛ40ÀÌ{¤ž*q¥tЄ^¾n4ðý)›ø)Ã?éïg·'Ÿ~aO¯ßœ°Óë“ïOxøÏÓô׳ÛÓÏ. ƒä§~òFuzñâ$~ÉO9ç“9µBNÌÊÓ‹Û“/w_íÎ`dé”¶__ü¾ÔŽ~©'!œÇï/® ÷›³sZÌîíÙ9›”R˜Ýë3Í&øDì.±U2ïëqèš(ÿ)Yú«³†^õ†¡¬ÖNûÓs.&­ Ÿý)bRxTàO£½ßÝáàÊ[½{‡Thk9³»ïâoíœØ}(•Ú »{EÚ¯ÏΈI:F‘VyüR¸I;ÁwÏò ³Ìä)•µ°òÒ9.\ÃàŠŽ‘:cëtv®½”3» è ˜”Þî^2žÏd¼Áfk.Í<“t½qrà?: 4k «*dÜãÈf–UKI÷†Á™¨º\EºŒTŸg²ƒ.htá²Ú`åĘC•ª&ÏëeŒå¿ rCº »%,©#Ð(ýWÆ‘]XS8)'ÇÝîÆfÐ&X=ÊHî@+-h%çÓ†ÞñÐι¼gc…ž<²#Móå:Åd éýë²±±…ZRhúú ü&¬Àƒí: P9ãÁmÖþçO³‘#Nçq:T2©P¡¦íDÁ`°e(¬ÇõEVP„Ý‘Þ)à9õôwˆÎƒ©§>å×¢@=tµò»ØŒŒZ±ôñK92êÔ®½#_ÞÔì£T^ì6JØä±[J³{¯ª)ߟi5Á8e6ұܴëÅù"…wÙ¥Íg<Ùà!^Drœ±} =^;‚úÊAud/´÷‡é)ôy&;º elk5ã~rZn<çÀ@8(Qîôhä¿gÝè­$0ñ¡¶ÉzçRƒúð¹½k›X|ïê}¦šRÝ£0;p¤1œ³È*ÎÏäI;$ODÄ  :ýwlžn7„-¯šß`3 ªKA15@·ƒÙLm9 `HsÊÑœ—•Ñ,¦ˆ’Bá-¥Á´åÛ)éHø¹ãüZ÷44›õ2Þã4Ä`RÌSùþ¾!ƒÐv4ÀL‘¢hQfc½¥“°«öS:Ëv Z3\W.»€’´R.ÒYöÀ™£Ð‰ t>†I¸ÃÆÔ^W)÷Y¥¨È}Gvš¸›Ä '§*¨œð®å²ÜqAõH÷¨Þ,wjŽ=έÞ$—â‘lkA-%ƒþFŸàõÄ…¢r߸=\ºn€LÝWnÀ«?MpÊU•¬Hg­O ©—§‚× °ø ÜhV `'v«[ìl ¸3Õ¤ ÐèŒË…fH‚“;V)ZcpFaøˆù”!”™j`éZ¢¨™ëáZæGªÝMsŒm–g°ÙF‚åj ×)™a©±¥-–«x­gÓÊZQ%‚ðp´à¾h¢]A”ëEáÑUR¡ö¶Øë±? Xzdm鈸¤:2Êze‡²tw‚+’*z3Ê¡f¢=Tðÿ÷1û€;8J#<[rUëy_-¨x¬D,11aö/tþxèäÛ´Ó>‹DF Kúâó“‹_ˆ½3Zæ'À"ÌhðßGËdX:ŠÎýd˜ä²±ÁŸãW\V#«ë9ßÏ6 R%Zo%ö~ž 륯)÷qö“ø¥qm¦­·‚05;]yþ‘nØ¿sÁ'/¤ƒEXw±?ÙÁ_þTí z„â#fP¤„‚ ßÓ&ZDp¿b‘®ÄQD,a+ž—¬%ñC)oó„x¡±‰8¿²[Z™m¢ÂèÝðÝ 7xѨ…ÀQ—Pì>ŠD 3{ªh‰ŒÛáRÑWÚ4cm‰©´ ûkø¬ˆc¡Î¿»ÖØOÒÚ}Œ1S6äñdb3Õ6$¯–ëh„‡‡¾Ív·¨ñl÷ø ž0ÅZ[Í_ùø«IóŒ½ý‘¬™Ô¦òMìÁýQ­™†5rc×øê‘Ö ~Lµy¹^MއÙ`ݘI pˆ-ÃH¢—44Ò½Aœ6Œ™…QŠ3\¤d¢5fµ~4zlYõ68’TJ•á¡v£ñ¤ðW£4gt9kÂMÍMH›§k¯ÜaðIŠdÞãÒ¸ú|”mZq‚©tÖ NVúz -te¾Kº FN_*Ùe_¡‘òä üD(ïõ8»°ž©êÈé {£˜›ÍTÌÖXâ)I>Gš–Æ”€iZ×鈵m‚àçEzã¹0ÄŸ©õùªxZ2XÒ^ûÙ}Ä9tÑ8ï·‘ó[^øÕ–´EÍF¹õnˆRG¸xt•¥½”¤Í3À(õF}G Dï>XymùZyèpO+ îáîeqPèL%5Ø$}hþ[`fà·Ònɱ¶^Ïnf€Ý·Äs–$ØJ ƒ$Ý´‚ÄóýÜzs€xæ’½µüØv»¨/ëy_ê²K$!d†-Yä$Fçë9 7ÇØU$Š9Ý ‡æD R–¼™À†•³¯µÂ­'iÌ>ð™L9*6£(ê:1ÂU %b>ÐvN¼nãj ŒÙýkIvð„ùÃT‡­!MˆšëlņŠvcTF°QòÑbvi&PÄŽ<6[Oå$»IÕÈF´’]ßY¯ ²ãäÄ]w¸¾Øc’%08 ½`0}Wµu§£2˜X.ÛÌ»Ù`^¶^~/ƒYäoÛŸ'&ý¶ .‰"Zˆzý¬žmì~>œvù1#F=yDò®â„Vøºð÷\¬µ¶ðTÈνŒÛljÁÂ2]TåÑùþbø_…¶4“AƒµINùªV-Ëqòñðƒpð—ÔA$WÛ…·ô^Eèµ."t?ÆÞ!ÑBEªàÞ  Å¢•å]³ÅDZ©Š]‹Îÿ¬(¿ŽÌñÁøµ˜c‚T ~}=·¾=@þô6~ýxõσÌcsòe4ɦ  ^f눤y–&,é% @}:غÃAî…Ø:ëÆÒc<]]«´f%Ã÷¢°±·ñ໹˜8ò·3¡1 ‹éOÚšV«±Ì„ãÑÕ&¤D²rš“ R=ú(Õ\6qÝ_s¦!¿¹®‰7.ªÑ÷þr2šÄ-\¾„ Ãâd%Û‹ËØê…^9¦¹¤2HÿÒÖ°Äw¿ËÏ84Q¸ËÏŠã­(Mïs¦¨¯‚—Î……?—9а4ÚK.µºAì‡`‰œÔ‡bÖ’BT¬9F¿±ä‰!ÒO)è‰*î†ð3?´<gDüß¿\Ò<ªPgk™W¦5`¡HÖH T!g+·=_ÇÐv<å[xƒP:0ê]$ $rI>Ä—$Üé)ŽîÅì'f;èîÍãÇËY~áÃIZðßÂoì4—yš²Ïb“õÇóÐAš¾¾Û¯¢˜‰—㺭º±Ô»všOW[~i!ÍðÎ `Õº=°(G8óÁo#¹°)EáËrÏ&˜w´ÒMìá[(äÒzJð`ÃÊü¶L]‚žÿHÂQ°¸öjÙ™Ò8&*aEs ÆJÁI`‰¥Le l³@DŒô¸ÅáÀöØQ‡GZz‰ùÊrÕ@ß}↩ƒÂü\‹‹ãz>óÚV{a‚½–·þJÄþŽü~Ù °£5ûëÊU½W^ÁÉ}R"3Ò]#™æ½ç`6Qv­B,#·s7ÐXð^KJñra”#Ó»gŒ=-Ûï‰ œ“¼‹k`Ò£·© oÓð¡’£9 ãŽbÓÚÐ\, GÈ+d¾Šö ¶Z_Ÿ4 òtÂÆ9•ÜÃë8¢aõsMt‘ô÷ü†nýzú9!Ú{ºQ'8¨Ÿc€™Ýýlÿཡñ•B_Lª;„åŠ(õ/öõ¤‘öñÛ}w;¸ ÔRt‚À›Ž2L¹ÎÊk¼+ù„0¡à¨¶VÂü¾Ç}–Æ>â—Ž‹ãV U2û¡ =ZWÌ[¸§Ä—C`«\ñb†²áw2èj¨{W´‚Í¥À7qXÖR]ÅO­nßÏ ;~y1"ô=Ó÷²k·Z”—"5ĵ¢©@ DìÞ‚ð†túkÈĦt¦‹p ©þê}wêû¯ÐÉZeš÷ºÎ½õYÝêÝF3­Ý >NË-œÆÛ4œÒa«ÕãÇW³SS|»嶇¥AÌW×Ĭ{¾Å‘d#aqúCæpDaÆç-Qá… 8+ÜU¶‰ÃàßÈQJºO§,,çŸs2¸:â§ÏêUxRÐcŠœ'b)…Š É4‰û\嬔Ÿ„_XôÀ5á;®;—l‡…Õá;-" 8ŽÒžªKÛZû¤q»B…¼¶vî^÷ 6íBíÙD­IOÆ2²ám? ÷GáÈ~÷˜p™°Ó­¿ƒMñj=Æ„.ܘ…ß‡ÞÆi9|öh¼6[˜qRŸ¶÷-õ}.᫟õÄ»M—Ö\™?¼Ê\kXe]€=.–´€P|‡€x˜ôÖåe>ÉxegªgSÔB£$ù‘¼댢Njìhˆü&¾Ã!œÉ2ADV²dfñ'7 Öœ!È ¿ó¶.ÉܮּaLèàŒ+<ø‚ÕàêQЫŠ÷zÝÅëjzOW_öàŠ³ë!ÿ¼»‹JÀþ;0îhDmYê˶Œ¯EdIŸxšð-áþJaidÆø0¶c³èõ7<ƒZ>Ié¾ÝïdôŽ5ÝßÁKST.³P‹Näç¨vóq¬úGsDÃÑfê+ & ÈØy‰¼:|ÿóÅÉ?àϸw=Pendstream endobj 411 0 obj 4683 endobj 415 0 obj <> stream xœÕ]Is·¾+©üŸRæû’”q–JRN¥3'ÛY¤$W$Ñ–hÇò¯Ow˜i`€yóøH')ü<ÄÚèåëð·b’ÿÉÿ~þæÉ¯þá/^¾".^>ùö‰¤?^ä=sñÉ4Ðò"NÑ)g.®^ÜàpAj“‡“Õª/ 4“"^\J5Yãdö3Ëz`•7øÛ8á…;Ü=½ÔÚO:Zü Ÿ­ˆB^Õ͵“†Ö¸Uß”PiuZ[¯p³Kóü=H ½ ÐA¾c Þ¤ñœ ¸Y1y” Õx?²Þ¤·0½ÿ0ñð" ¢dÜ^7t„ÏïzÂÙ«Íç醥ò¾fKá£ó­ñ-¿Ì3[í(© œßW¬ùWìûk6äíÓKåñØ 9iÿJE*òõ~„sÆIÀ–š“@ºàRÞâا¡>‰„ÍÀ*à|ÓMÞ¥„r™ÜRE$7òšòfŠZV}κ±¶|Kœœy2õ‚ÖºÚÕ”újåNxYf$f¶63ó'I0¬°®:«B@©×„iéÀ†‘B¬ú=[ø*sŠñNuþÚÇÞ9÷[k ­qIVúÿáïJÀñùŠ¥8=oR?Üp~ìycštd”3,Å5Ú¬8zCFaØI;Ý¡e–:\ŸrªÚ%g»Ü$´ª¹4dE‡Û2žé 1±—²KÐhá#|O¬'\aå× ß. Ád.²±0 63Q¨%d&iæÜ4Aâ\ãÓ<œ‘¾e’ý]Ÿ{^£Œ‚ÈZJ6Žë6,´:|q`„°Þ{‹#º)ZÍ1g+>ÿOÓÐÙ ²RÑNÞÈFN€õŒBÏh12,/ÓŽ„ÆŽDiö*9°5 ãPΨƦà¨láZµ•ó˜—VÏ·Rm…UdJëш¼ç7¬g–$Þ׌7ß'æuÆ,¼›7faìÃuÚ˜Yè÷¤…t4À H$ÕßùhLK÷Ëe^G­œÏ02ÂÉù²¹g+N#‚_£•Ò á æ]te@î[t¥… eqdD~\>§Åiû‹&vnZø„ÞFÅdž"W‹ÌµøÄƒ„::¶.:û9ûÞÁX›¥–QíÝ„‡^³;*EáTèQÎ*Ô^>åâd•œ‡[ïØe-Êr­¯•—)Þó=nÌ€Zô«íZè«7±!ÒÞúÝ›ûV_àW iÇHcàT¬åZú‰:\Øy ‚0€B„åÆhrÛ=ƒë4¹#ò=™V¯´ýÛÊÚyájüYß^¼N«Ãß?µ¦SfÔö»•t¬°©ÆŒ¤éZ¹%9èâ{¸I[3rÓ¤&â ï‰ Tèxh)ýlÖ¾bçÖgNÇ!<+4J@,[ëä²>ß¡˜&ŒltsZÙ)FA4˜†Ši}Æ’gpô]\Ésš·i0/Ô×¹°vMpdëãHZ®ÓÈ¡¹öú~ýÃp´[OÃli;\ €8¶–ç–äjŸûŒÉK#. Q3l”½¿Êa]«¯ÀŃôPNVƒÆÃ²K¦ZDã0bBGg£ñ§¡­¿›½ífcÆX™{ i¡°“…ªÄÁÜùåp+q®‹¨›?ê¸8cíN04?BíüÈo†;Ž“½_DïÁ‡³4N-k¬ƒü ŽíèôtÔ´`Z>ërÎ7i¡Ñµ¾ç¼Œk&µ¤.m¶ü\¬óClr»Ò²¹çüùUÚQcŸë&Í}<ÕiIѬ gÄ»ìMhàò9ªó§ ˆLãÞ’Îߟnô1pñODÑ ck‡3©f cq ñ{bê<óʘÜÀ÷Êî"ÅtÆÇ…]MÞj`zè½TrŠJXr¨.˘¸wK„÷ÝòõY·ÁÇó×¨Æ ‰‡™ÖÁÞ¬,L¢Ö³br,yF+1Ö-º_u¶!åß°K„¯-—í,ü¬"Khò˜ÌlÉ€Rph¾:&ÎÊÇT6^&Èv œMÔ+ ª×Àþk”£ðŽ”ÅaèxøeÌÏÀµOË㪠xȈ;'!cÀ%ñ¡G{|—6&Åf¤š6ä¡vƒ,{O H%TöŽŸ©«1ÜDhjæÌGçšXí*ÌÆ‚ÃŒÿÍ!¥£½©ýGK›¤KòRkز?¬LޑԉˑÔ@ü-Ôžgâ ¼öØ×Z4ÚÆ¦¥H°qí!:øn8ÙÆá 9tØû¨ËÄIÙœ&N¢c0çÈ•ZøM§JÃÁ;Ù=ì'9Ê¡gds#G$Ãì”lä3p Àâƒù-yæñíH9`JÏk˜i€ì(&!hš“= ~¼8‡¸>R8B˜Ð Ö0RÆ=dÈÉD#;¡ÄZ5jý8‚UwD„Ö;3Hçü= ª› ƒ¤wg†«épRá\Î¥´dÐèªdç„|©t^Î^Ñ+6㦵`F‰!XÓÄ–lߘ{h|Ckkmo¢tŒ@ûèÅfãØAާoäÛk‘Øÿ.•Šw†"ë°ê½Îa|Ù ^Õ&*7à&)q©@Æ]œOº†×µÄÜ€g‰ÿÝâß.Þ@Z¿‹±‰Gî@£$\z0AM±³¦æ¢{¦%$“åƒQ¬ås6bóKöH‚G¿‘lx N¥¯ö<3InìÙÁØêãTЭebŠÛ†êü=Sfƒ"Ò¶óc¹§ÊéÒ‚iÈþGÀ®‹€;;ÈŠ,£¶Ë1FZcã%£Ÿ§«Ql'lW`Zë‚)˜ût×IøƒÔƒg]? =PX:"¦(6†‹«OŸ\ýòóµLNñÝÓ¦jäÃhQÎÔN~°Vú?H+| 7êŸL€å6GFÀê'çÈE£DؽÙáÔZ‰:*Z,¬Þ€ëØ4³'¦˜Q@ÊæÓQžœßªr?pX»²ád lÄâgš¾XÞ<H曼®ã¤ØämÎOÀF¥í}ï2‡D9È{äDDê_3æ~–:ÑHY7+ç¢ ª`†A­àrÜŽ¢#•G9š29‚@gE…¡›õy†sA“ô@€¤Fˆfg•Âx€ ºEãž8Qi0±ÚÌ ðëV16X}Š0— øŒÒ¶œÝRÒ°½ ôîˆ÷[FX&?5ˆ(leu¯ßt£¢§è÷‡ öÕþc@µƒi­;1œ¶·q4yÉ”?ìÁéJŠš  5íÞVAÈ)Ø1à,MxdËÖ¸8it§›Œ´Ÿ6ò…_=jh!e§+½ÿ"}v2ôò#>¢qbL‹ç$Œéoê·*Áó mp´ŽöäIêhÏi24 Ëf–û¸Ç@&¥çîdhÝM£#ŠBx²ñÀ­FÛ ‹é¦»~RW(¿È›]z$Ñ#–ú]7‰æ×-Ó‹–êPgâqÑÎuõ˜á%ØÙð¢²`¦ S©Tn$%‚´†7qq´:ëÛ­*¹^¢éZÆ¿¦‘Çu!›—Å0rÞæIkøíÒ5 çûÇÑYv2!ÞCg_ÚjQühÄQ“¼ …LËÁ·SD/ÕiŸo?õ^VÒ îð'ŠAD¯ä(€@ŒˆõÁ.—_Pc®ž:ª i›$V‚ÉEP«+&ƒ \â.òûWü•¹9v2N±>®®@ÂÞE8üžP `ŠZÀûŒÒD0t°”}Qúqž!©ØXåÌ2} Aˆ£jS ê­û !R†ŒCÍ~ üY޶›IËpL¥I?”jU¤°‘í¬«*ó|»‹FRy«ÞÉ±ÔøÃLd¶õÁ†ÑÁ> ÃÂn"ݳ8VÙÉ{.ÇæJêqB M/oBfm¹iÃ4Ï0kÚqÃ%ÆS¬«‘4»'dŒ¦›eWKä¹Åˆ´j×Ó¢< ¿\®Óð9Æœæ­z§~E w.·ò’LØ‚ª²­[êUã_V½bö¸Vid¬ EyMÅë´wp6ÏäËù3^ÍxA&ï9qä˜p€8 j³bR0‹ Q'ò謰i©~j¡LQŸz΃ÔGËL`±ZÁ/IŸ/8¯Wã—ïRõL…Ô2kã jÆÞºˆ•‡½ðD{khtñ¿Äã…­ÃpC·t ÉèV‰“˱£NýnìëÿÉkó¹e1·"øóÄÜHô„Ýý¯§Ñž¦FAâÕûaÂ=®ÀJVÙre\‰ˆCqçœ8ªzo¢Å€÷ߘ@\PJ^èÜèKœEŒï'tÖÚ­˜*›$^'Ô%œèV¼ŒžA{©SÍŠë ñEú»ÅL(u~ж®¾8¯ŒG´nï{Üà·â æ?Xå°‚Ä ­ TÎMÂV×.wP„AÆã7pšòbra}³Ž5¦*…ý| öh©TF¦ˆEJpêhzúéŠ6¤ƒØìôªLêæêWš{ü— Ñ3Úïö€ªGu?„#÷dGtdœóá<Ì: ¹·¤}þïN˜0yëGæzE£'(Fwó¯Y0¸¯HSáÑXïò.ÓVÖH‘LÚdú$ðyx].[¼ÑnÖZšøp,hJEÊì¢ny¸=^°'ƒft’€ŠWùÚCþùÃü³o³ìí2X+]¤÷Go ­yÇW…AëçrHœ]ÍsGÓZ!LAÈ\3¡üªh‚Á3vì‡ÿ]xÆ8c ÎV+ÌÊ ‹‚î ÎpWo.Ø5<³èF‰1Þ(½Oc`åàŽêº²•S«ëh™¡¾›0¾š®­ Öçá2m1)xêM–‚ËÜ" ûªìêk\y„š!7|ðøäŠ»ò j𓑇Œµzo„ÇqhI®½yŽ_¥v­öìz=VFwrÈ ©eãe]õˆ#ßÎ參ËRG®RÑ–å1|°ùÖÀ½ðAQøTråHÇßä„•Ç×{zµÜT@Û”~ ëÄYñN¸fÚ5xlobWiŸ.ÿ¬ã6|7bæÅùi}Hc[·9e^(òvÀ|×i.¬KèÎÚ0®r2PKW³|ã<Ñä¶Ž#ð¤[y(Ø5¹5(û*¼Ž"­ž§)ûµŠû£M†Ö­#\jÏ”f·.æ§ÓòÝ7âzE%Ö6žá uiK«Å)¹]"M¤šž §¬r4Gw©>9 ßjQƒWkÜæû9dñ;z*}råÛèRÓ¶†ê$à«`Xï7ð3âã‹f¨9G5Ù·õ‚º>+›CÀÐCZ³PÞ$² ¹.Ùæ/wÏð;xåx7꽪Û{ À-îl\†=R—‘@ ®ˆÜLób}WçiÊC ª²N¹V=QjÖ^,Ðý]Û¯î¾ìÄö÷ºü2ô) ¢£­5f'0£ÍÍæèYã¦,*8˜ô¼÷ðè DçkæÄT0È]¸~ÖÏÃTà¬BL.Ò\ CÅüµw?m±mo -£Íë9ËÈ[Mr©XL±³½]jߎÜcò€>ô=/Éå„–YŽšNç&Æ/sßÚÎÇ(.ƒß{KËöê> stream xœÕ\Is·¾óWðø˜2ìKR9Ä•8•”³š•K*™¤d—µØ¢,[þõéÆ2ÓØæÍ#Ÿ\Né §h ·¯Ìw—œ‰KŽòß·¯.~ý/wùâá‚_¾¸øîBÄÿ¼Ìݾºüô(qX°ÒêË›çéMq)”e†«K'ãN]Þ¼ºøÏáö ¦V^wxëåáëõéëõçï–ÿ½ù ,c<]FZ&´°ÔÍLüpu-˜”>X˜íš3©•WâðSzìœ:Üãt^(§Õ׆ .¯…dF[‘¦ý+ΤáÞ¥y•2N"™ðÛ8ã#õëóWWÒ3Á]8|OF¼ººÖB1k-¼(Ó@\3 ¾¦_^]Ã/ãzáÿµåŽÛÃ[œ@²Ôá lC+åt8>þ"=ª9w($œÙ†Oo QóS¥³PÖ/ ‰ÚÚ0ÁÊfëËÉ)ëáÒA쇕• lhG3бӴ#½fuÙQúz"j˜DƵȚ ]âîÆ9©Gs_í—r²¶Õë6f¶}ÂW:üM%ó ¬Œƒ¥¢£'| ¿?7µg¤€²2¿©Œ†eÀÃéëÃ{bg– <8°{ô…Vâ¡Þå»|¶"TëdÞ:QËú޶`çTuš‹dåEÐãÍvÓ[é(‡sE“20ÎwiQ² 5lÀÀ—łܮè$€1"®žþ¸üÙ#À<™u²V»¢Ý'Ò^Ùè^vŒEy¶¾ù59‘¬Î¶–9¶jÕh·àÛ=ó5 Pš–’gÏÖ§?þrᑌ'2a²gʦ¤~<8à L 8çNÛ'%œ%„ðx ôæN#–à}’f[!pƒj=Îl͵À‘LÄÂÓÍÒMÝãhG? —)H”ëGâ2»*hÚ,ÚVîèåø÷Òp†¤õÖ®˜*í û(䡃ÛYƒ¨c¹Ö?-GyŸI²¶ )à)Än­õÇ™:"İ™6p8 (R  ®AÈJÊÌq­êHw†ë;Á”o½6’öbˤ-‹cø Ö³âƒbðµÇ0NÌlü}’Nç˜ó‹tRbÁ®{ܦp‡›Uh¿"§I·@¼JÚ¤¹Ý'‹ôd^(òz"|w‰@ëm ×ñ±±ál@-Χ\<ÅÅMGø–°9ÇçÀÍþ¸{MÝÑpjNéÞË~¤ñ(•Þ2µjá$²hÞtÙ æÜr5Ú¡÷§ÞZøW–Ý´Bmp[(N ±i`ˆSדá”QS‰¦è »Ö,p×ZQ z²óiB;ÎÀˆÏñ7 竔ń#*½)•ŸÑGÕ…Ê•Jù¶…"<î<Z 0°ÞoágèäõÔrREk"íx|õYÙ†ÒZ”ò>++÷þÊ€Ì :#ø—:æï‰,ö¦d±¯È"Ðßg( ’ªH. 6îŠ@ùE™¼j‰ë2A MÖÀl¤-Ö¹øZà,ÖÁ ^ÂX´¯Œ[Ï} îŠep/|¢èùŠÝßÁý»G‚û·W€æ¬’(lH¸Z¬¦–°×ãˆ~ÑçÏð¨`eS›ÌA~*þ¾Ž¿µ1²ó ìEðnâÆ².HѼí»‡Ã.° kXãd°Œ´9·,#Aî©IÞ¸fÐ'Çéå ÿX’¬”3 À‰uó°?íeO­‡ÁQi‰¨_L^HC ·fcÁ`/˜n‚/'½™›Í+̽PƒUAŸ˜sKíÔ°\üôi`YaªUvc~fÃS"éÊÙŸ,/È;¹S“i`Ád¢^FÆØŒbÅÅkS¿I7AÏ¿–Då-,*;o´©€ ›##xå žQIŒlIx\{ݵYaâWÍã§[r²ôÄ·Â#ͼ:øõ!q‘Õ=އb‡£¦xE-¦Þ‘âýCô—Æ„®.9äã¤n3kÌ¿]±ÁF¢Xóx”®IÍ;­¹öš¾Ÿø”fa±yS°£N¼žôù‘Ìó ;îBÏ»qÑTc.ÁíëªÁõAÔŸ¸~Ü0Š6ÕÕ—Å–Çôzøë<›D[mBæÅóQëÔËt+\7/Þ ÷ÌY5uÔc·›:´õéTæ•+à¶ÔuìîŠ ²í›µ†»´Òü; Í¥4ÁØ„2¿º¶L’jŠ¢IzRk‹?AÒt-¬óò\囋2éc óxyf Ja‘·—ð«õÉ«)÷TJn‘tô¢Â‡òmaH½Dƒ(QFUoëâíˆ*2óÐoMä×zÑ›Ù&vfüœ%³¡°#Nؤ´\ç²4±Ùx}5·Ígµî=ŸˆÔs·*<Ñǧ ‰šß­QóÛ«¦C¡°K+&ÆŒ`ú:ÀY4böw|Ń­Sf /í­šÄ…Wù³‰Kâö$‹ÛkG¹û×6Ã3'”Ó Ÿ"ŠY·y³.UŽ»sx“„§7b6ÝÉèÞ1Ë t(ô¡£h:‰€ ÚÙ£éiê¢ß@釫 4M ;]2†>”ƒ¸Ï>¾wAª@«±—øßWàRA‰§™Y\:»âRî×Ýë@ºxk'9ÚC;!ª•"—Dº»8†×`7¯‘/³4ŸãÁ󿮾°3´\Œû—鶬Òß.ËXÂ3Ë—N‰}M€¸4º'vD¤ËÙuÁ¨Ëgòj+Þׯb×,íéiºMÄóFªÆ[®7ƒèZQ—}k¡_ÞÜh댳hÝt«) 2#wÍqø¨x‡³ðY/×Ç‘()ÌùSJ=%9Ϥ‚hËÏ@DZ†!«c ×㿵÷ÚÞ·Ž+GW>  ׯ‹=º!¼B¼TŠÉpNö†œ8 !ÉuÂDh—…ŠßžŽðØ;«º®ŽXtVmÕŸò6« ÷’ÃHî鵺y/9ˆÝ™É ’zZ#yŠ:‹ûn§_¡ Ä>¹‘<{¼dZÑ ÷§ ú9§Y˜ž6½ê6±ZôBÝ©(^Æ<ó6D„°9òõ‡¬?¡"dpõ½½ô%aMóÅFisª½6ý!ïRë­,Œ0bžlÄ[,Ÿ•zvà–­–˜;l2RQ<Á¦nÝ:“Ñ/«E#OËpÍ}¨ÄH}øìÊãg¯Du®¾Š‹$+? Ýé!¬—è2ñµK8röE5For€?å£^F-Ó “ªÃK˜0Zʧ¦‹ËNŒ})-ÍAL¡gý#³Ì]/‘q¡q÷.÷„ Ýé¸Gö¦AZt_ô@0ei ªFt4hHl‚…›4‰­Ï²– ¥\JÕâQ»ˆf2É’ªÂÑäá²ôäPºÎ¯éÇtÊgb¯ ‘uD f„cÞVsÐù—«Óºþ^q…/Æ}Ai…ì"~miöÞæèãè»îéPÂFÓ=jåèEÏ W …E,ro‚p?δע/R‡H ,Ÿa#—Ž“ƒgE©Âí`°D~ö‰ïÒ,ñö)•ôûtšÚtÕDœ@ܨ(¼™¤ËE#Èd´õdãÏþÀ›Ètºp?0Ñ÷/¥Ù^gi°³ZR_WÊdÖ «˜Š*¼ôƒB) ØCšÓýøP¼P6ƒÔ®M†Ì‚ãêk¦¸ WíÇdfÚ°0;nL2íæ9œ¦/È`‘ÞÍ‚Î:¦^dbmÓ#%bûl\ÞÕ=»ó›=q=¢f¥€û¥QH®$Ïå³ÚÅã79^ëÁϔŠÔ9Õ3Ôf=/[w}ŒÒŽ‚éP÷7QÍ8Þ¢D×lºÍð;ð²Ã=¸¤û†¯Ó‡- ?9¹?8wiFº¤|,ͦèén Ž©QOÅ~è£jÌìcòi/hçX'*Z`›¬&RçD•§!¢<«nö}Fí·ÊW¹S›¹NÿÚ+ës«ª[·¹6ïàð?Þ\üþüX`ñ'endstream endobj 421 0 obj 4930 endobj 425 0 obj <> stream xœÝ\[%7~!~ÃáΠ9Žï @"$¼%yØËì$0;“dvñ㩲ÝÝe·ÝÝgΜ¡}س½îr¹\—¯ÊåþnÇ™Øqü“ÿ~õöâ“ÏÝîöñ‚ïn/¾»ñ?wù¯Wow¿»†Bì VZ½»~s‘Þ;¡,3\íœTŒ;µ»~{ñÅþÛËgÆïåþû˃`Üšö—£™ \ïÿŽ#”æVúý þÖ&h¿Zî¸Ý¿Kyà*IÏ__”Lz·Iæyq #”r:é˜10Í?†±² ÷€=“.¿&änò«÷÷ä1¼‰´PÈT¼4fÿ˜Þ4,½IŒp-¶Ìø^äðLrY,ý;g=H-¿ª´{vyÐÞ3빆W%W*¸‚ø7QÞÊ8éƒiºõxÌË÷BŒÛàìœx\ý×ù…ˆKvL9”’ðÂy˜ä«ë?_H¯˜°”ìú5¨Ô÷‰®×®`ôÃ%h”fØ!ì]"¦·÷‰ ÿ¤Cè¿!æ!÷“€‘ŸÃÀÐAHf´‰/ªêïÛjC$HĪy+µr¾Þb`‹Yëéhª‚wDÚ/=0#­Ú_¡ æ 5„HLÀ‹n«JáÜÚI:7YÉk¢s”Bur}›X‘úT¥‹3ž.¹Ô®8¥ 0û8€Îx¿¾Bš þŽèëGœGÆyèÒÚ"¼Iƒ…¶ð3é¹`à=ÿ1¡½¡¦ %½!ÏïÑ×iý[$,›>-.ñÅL¹Ñ,²r'.¢r“•{ÁU²¢ŽFª SÂS‰çÕkÐB"Mj8_ã{ŠRÃ÷æ¾öÅCÚ^”Ñ…Ìóžˆ(‹3¨nø) »’m½Û”›TEþÉ窨¢±T~wýÙÅõÏ¿í†+¯Á‘¾‹?ƒ^e|ú¢9àÓñišÃx:‡àkÕ¨kȨ”> ¶§¥’¸Bt@Ò¢OE–yåˆDºÄ(¦òŒ‚P2ˆ¹EéàÌ @'¸t€‹–å<ŸPGwgÆ !ÔE#ºý)k湟Œ8¡h¨|Ôªþ•3‰e—à~P¯|ÆõÒ˜“ª@BÍ‚JPYÂbÈ­hØ{å=éâ)Û3³¡Ð+mAnw–)i’bùËq_âë. *¤Ú-ð#0®Ùý_)縉™\FrÖ[a"¸ó˜š¤¥ #4òÈ=XÇ·dp´á½ Q`Œõ^£ä„FeõtÁ‚D’Ž'^ïÓ”vØ!¤±å›™8HLgêA­ó@Ô>dc€¸ˆ£>yÃ7›ˆSïÉJ ÅLÆp¡ZŽ@x<ƒû-„% ›­|GKSÛµ¶’ñ`»‰ÎÜéVA&ë­Ä¨HUûaòA÷8% ;Ðl:åóø†H¹ÆÇàq °@xnÊÃTÉÒV50âfÒ{ªr¦øžLÝB‰§1þÛËxÈF§•˜ho즚r5!³ ¥×%”úçz^–ÓV£†}éœ_›1§ŽI0¦ÞØÒŠÔy{ C…€Ìøe‡‰ûrÓF½~´5¤ø8aÔ5!_ÝOY_´ô1½©®žmΧ“Dét91oµªítŠ9<Ýbf¢çð/#òl¬ßœû«¼’d–Y3˜@½¢´!DÕ‡%)ÝZÒ4Û, &4ÊEÅmÒŽ¾GI²òGvKݧ‰Så k=5)C•z>®ŒÒ~@íÖa‰µ]¥œD{=(.üÿÇœpˆ¾ò¿š‹ƒKG·éîS/Du~D¡¶U «¤YÌ_A®fÎÚãŽaÓZ[é„lšs’‚<-=Ø‹ø\)E3Ó8TþÏbÊb"âÔ”e/kžªôÅ2 ‰K¨4—ZoOë–Ë—z€©É*b+­þlx%Ù¬I´1áÚ/amÐq -èÔcNÊÖU¡bœ›*-rQ1¼C*¢Îáß$Ú®òâ­éêBƒ¹¸ç6Ò¨è¨7É ÐÌ 2 Í&7dfu;¯¢( ÷øœ¸qðî ÃXÓ˱þ•æ†Dd ×EÎ%¯ŸSéõQ8íèSR—Mþ=­ds™Höó…!Û®!Hˆ?þwXÈiKMOÄLöçÙxic/‰»¤Ñ•ÐØ¢]Jøƒ3bê°&_âúFœ!-iŠo•Öë %ðlÆ´°Þ+Uýp¸Ó 3Ú1˜¬t銋aùª\ºrƒK÷Î [¨•]LÏ[.]ˆfr˜¥]û¤ ¾Åª˜–‡m¬zÛb5ŽÇ°Ú†eÑü ’Ú®Êl«¡Pìpã”ÍgæúcDKõP-8¢üSóª´)r••¡roRƒ‹hqK§'!P'Ìj{6”1r\¸ÏßOa™Ô%bªÆ!Ü’©mµ:îPælÙì]ŽIXÈ)Ðä€ËÌ òàEÓfñPHË“ÝËŠÍ*¬“¥ôºÄ`Îptñ—R©0¿„­Ì'Z² ¾z“Ë:Ê7·E½>p-X ?3øÈƒ£›^Bü¨Ü\' k`ÓxžPaÓÕ°Š”>0Ò"ñ‹ÎZÔQâ`c½“´à¤ÐuFúºÂ\q3C¬µ]>¡Â²h•À‹æ§[åJÐG«$ébm-¸!¡ÒLö¬1ã¦ét÷2mT»Ücs]DYÁÆ:9çèQàg‚›½=iâè”°{1 ùbÌ8 ÜR¾×êÆYi¤)óB¡s^øåþ‡¨3w:{4 ô——#U%ämŒ7õVµ›iHÂHÁo/–×á5S¾™S}^ÎM€=ôv©úœÙ8CoŽÇ®‘~Ó Ô¡nhÔ|E¸é9Úž‹ª6$ò(AikXl×Í%ÛQ˜Ú%¯ÿr£öºùÚR‘ ÇuឆÇ"46Ìx;:¹Ø«Ø‰ÿtHU; l—©àQn«¯ÿM0›«f«ùîñU®…*¬À‰£º–:cgÇ|Kr,œ}rŒ|u ÐÞºTÅá=ò‚ÔÎ'†ÒóŽSô~rŠ¿ùAg“bé`ò‹e1Jæhmøÿ ǘ°³†`“¯ŽZÁ//‡6Òö )äÁ©MÅË{‹zçkʲªDüü!Êiñûߢ‚Ç䕆NÊFH4–Ø‚Ú œØUW%à1 j)MŽoª!m¤2+a„]<úÄ÷B¨+^¼\ôŠ”®C#Sµðaˆkyó¹ã¾Iìxëû²t¼SÄ­í×?z'C‡í22=Á/Ví“O™Gi`†ÉA9}™?öì¨Ö'Ûh¶…Cj Õ±¾éèó8Ç ¾Üç*t6+‡x«E‰s×ó+ö ]˜©H´iìhààóL½  4€sg­2a0Ý -?½ö‡ ålé9 ÈsªÞœÏwü0¾Ë²ý†÷=ÎoLËBg€§Y(¨Ó¼è¥É6ýM/…5.ÓÔ~4CH üB·¶08ˤӋð‡Ø\C²ÂôZÚlËÈΈ•Ö‚¸é¹¼;^]tRY¬@¨•EºYçérἓ±¤TH9ÃTi”=_=¨Î««F#‘«”|_Q©vâºdU¸-G£p”sUgP\€)}ŸË¦`6ÁU'‡´Ž7îwjSù3·'º”q;ý¤ÚO¯˜µoPærjâ¹[=ªjžØ&$´£Ýëç::YjYÎN‰½ºÏÑß«!PÔãß–8êÒ^¯üNj -®õœKÅ Tzáf¥46^ÓhôöÆUô\O>:Ð0p°€¨/ é*ôšëM¾Bç² Çâõ& TnèÎñl+©¡,4žÂÃÆ‰ÉµQ4Š 3Š·YÊÉjâ*˳·ÎÕøNi# ϰݼ7,’9¦ïë¤F}¿GaØõuó|}ª:ª×÷8>ä2®>€Åp%êôõ3|K(ËK„r;¥²NãÑ"ÞÙ«;™dd­ÅÙ 5‚1U| ŒAÖ§ý‰¹#.EغÍŸâÝ.ˆ/ªnÝÀ‚½JAD?.È`@1ô cq¹„.DTÜLˤDòœâ®™Ÿ`;#H¾«µ1A­\‚ÚJ¯·0Ê)1ëöË42& æI­dI ¼x2•Wëwäâ…ÞªSéÏ|ÚUzÓúºâ‚¥YÍ d@O WüßA °zs¥J.œüéÿ«Äö,Ìõ¡¡–’g{NŸè0!ºßB¹IL}r= ©Èêˆ8>å|¹ †/Vøã,>1v˜Y¿9ίݚUŽ7I1 ¶bß©±Ýå¬F%;èìÇ¡o¦ÌÞñèÑ€}qõ¬s˜Þ6Ú?^ɸ„»þGÜÖ¿KzÔ=üÇ$†…C:y]Æ7ØÇÑ¿mÚF½îŸò¨5 ÂÛªA"eðœñéÓqU«~ Øû÷œíxæÛì±Èíè‰l·ýÝðͳ¸ñC Å7H+÷C“\¥º ;}—¿;'±Çîž)jÃŒþS«áZeŠ=é¹ÞÎ'–ÉŒ•k<0cívÞeYº‰Œâð?\_üþü)Fì\endstream endobj 426 0 obj 4592 endobj 430 0 obj <> stream xœÝ]Is¹‘¾Ëþ<>NˆeìËavØ{Æá…7O¤&µLKTw“Ý=ò¯ŸÌP•@õêñ‘ò:¨¢ H$™_.¿»“¼ø/ÿÿõÇ¿ø³¿x{ÿB\¼}ñÝ I?^äÿ¾þxñ«kh åEœ¢SÎ\\¿y‘¾”Ò†É(ᕞ„××_üõðí%t­ƒ±þð==FÔáÓòöëùñ«ëÿ„¾eÝw˜œòâJªÉ'/®o ÓkøF ­£?¼»¼“õ6@¯·—W&êÉî.•ŸŒQîðûù㥠“úðúò žl°?“q ôÁçfÒR}FkoâáMzk¡Á·¬3h,'á´5Ðø †³6Â\–ÞxÏ÷øì½Ñ>”gàBàÃäþlŒØÂD5)É¿Kdxí?õgÿŸµ¶^!S‰"#±}'Ôá(²" :ls5ý™sÚhɉc|†‰ãZ:%õ¦«©òî^³ç·4E©–®‘¥¯–·™éAk&£§ B™­VÞ%†™ Xr¸a­ë&(]*ÊI)ÒJbtE Œ>â¯Wåg6k³°q¶±Ùsv¿fÜäÇ?ÍÜÒÒ:¤RyCøè=6—À øÀ^óUù1­Š³ÕÛø¡ž$‰.—szØÐÀw|ey×ß²•}Õîz¾ó8ë Ó0H“—r´ |pþT\æ´¼M=FèåMڼ²õa“øˆA^ݨ×I\¾Þ3JîX›F¥#%¨ñêM„C·¹‹J'Éà©Ú๖ÉQù#¶v. èö…—Æ%Õå$|tø ¼ÖJ Y²¥QJCFILÑ“$?,¯S m£IDé¨Dì^´åaÖ”\ ¿:¦±? µÑAÈ>ïTÕ„Ë8æþ@ìíçË¢¬¬Ä_ºH²›J¸Ø(õßS++Œf`¡£®‰Ø·Ë7x¡Õ´Èkbf®:)X•ˆø~AA¯lt·¼ýæi±‘q“_v‹ñž3“ ú7©qвEBðÖÆ±}*£ÈðdX‚ˆ~nèeŒm­ñGÜm0œª£3výä¬Ù÷]{2PGßæ(Ú…–h^€j?îejÿ;èùS²SIw}m‰KÛ´«rË- b‚\§ãÕËÂ&O¡këÍ“ uçŽÖl‚zH… Õw… ±Åøæx3F$3% +«Ægƒ8šs È÷ÚÛc”Lã<‹!ØPGÁ8•t'„yË"2¸%^MúªÖñ\¾; •æ³yZÜRQ}(ýŒê}œ¸¡û0*n~0gbÔ¨»M2¬„y)YéhhþGqë±iñx“Û¬B•)YÞús")ê¡Rià'µ¶¡?9R¡¾kB¢h#:cEï˜Î}›Y„¼a}Tªx…Y’$¬¹ßZZ™ø­m÷&t:Èé3AàÊŠÃ[«6[Õ…É[þþ5NÒ¹¢²]íÔÀñì,ûÊuF%ÀyµwÍõßO}SÀ†Ï„ë%ô,ýä¦$°DÚ—ydæ‰saýš)äÛÔµ3ªÑlé5|É#(œ!¼ÓíIÒ%hÿ(}#éûñ€%¹Ô`©´®æŸŽ—º² ·ØTV°O¡àäÕªJ£-ÓzÍž×'ÿ®Q`y6(k9ºø\z®:æVp '¸¼Þ$ŽØbuÔßjQ82˜¹\°væ°2ÐõzE‰>¾Y*„—VTž cI){?1+å1ž­5t›toþ¼ö™šmä€AKAh)v,<ÖˆÓ£B2Z«âÁߥ>E´üC-Ï `5Ò Gª5<Àë2-F«¼w„}˜/VûuJ6Є^{Ó:|1oÚ„´ˆ?.~óíâM3ûa¿7=몱7M’±¬Ëé¹­ ˜—° \¢‚œÃI#Ý´áC‹IȸQOÎË-4€D¹ød>=Žècxwkî„ÄÓL^?B< ¸u8ƒ·&úÕ¢‘‹“߆)‚Óa&ßWÌPòT¬—l¦5OíºKyº܆t×ÚQbì$aåMþ/+[ù )… ƒ­Qm©*ÄÇí„l—°£Ž²³T8/úfL#í Wü`@·¨…Ä*²2B¯Ÿh¥ Ì‹™ãQ(›m«iiÒÕ¶…R»Þ&z^oêRe&˜àLü¯p³¶U¸:„Q€ÄºG¯Šª± LËIà((æ_’GLteDÿtþ«Ž,‡Ùé¿Ò,A¡?¶0Râ…sþ®ðï‹î#šËSãÞ÷{i/87 {˜o^å˜5®ˆàzŽ@è}Z-aN’2‚§EÊ@¥2'aÊL^”֗²È"Wï#Ûj¡&-aPòuÕãÆ6‚UÔ§‹x»:Ú@oÂÅÎúÑIñ£×ÞæýDÊ TÑ ›‹Ä»ü¥Éè \Þá–Û¦«¢z2HCÝ=™Kž¼Pº¶É£Áùù9PTrHƒtÝ\D šâ‡  O®º(}d*6.“Àp‚· OöõõLÖÕB†ai@ÃøU|Ò§ðÞg”]nüÜùÛ——W–ö³ïì5jq“ÆÇŠœ³Û÷iBò~™Sþä Kƒ[ÿ%>­Î®äÄiŽ$î¦Ð‹ü/âÄ„•OõçLZyäë¶|·6…¨2 ™ŒZ¸÷8ëµ^¤oGâ°‚óÆ’ºÂÈ`XB>'æ.vØ \‰­'ˆoCÜ.“`ë¤ïØ¢%èX´0¶•Òž,Ø„ qrÀ¯±;Å­ß½@Ñäì¦ Àù"ÿóii“$ac&ñà‚ΩգE‰lèbN?—ÆÈÖUZ˜Vî!OÄÔB¾_À†B$½^Õ%sÖsÌ5h<ít«Â¡éä·J+-†ÀÈþ/̸ô ¼µLÞǾà&d@ô¿)-M«P³YÖƒœÑÖ?¤Àîz|Þ¿{¬ °¾;³‹8oÀ·@Æ)o‹^Ð\·Ä³/SÀW,ËÜ|GCÞŒV¹Æå™¤ZÊÛX¯ÇxôWö:¤(Ñö{1¹F\ƒñ½è«P2Ñ\¡JØöàä57’7™>VÒhÔê¶’á6ª R/f;*ã{[OèS5åyµrk³ŠiÂ[÷ žiã7ë`£Í×¢ŸÖ!GÜd(ÐöU\RƒÚ7²?uÕ=O£v'‰ä ½WÕ§³FIöLµgú¨\ÆÊ_]םЀä'¹Õ°D]•”I6ÑÛaÆm`æj ,£ƒ#Œ?+C ²>I³`xò}ICnÔ™=~_âb¨µ?CkdÚr Z»{_bsmª°ø]±k sp¤Ô›ØDÛ·;Û— ïáæÌË8\-ħÆTŒxŽ«ZÈ7éµòGNiÀ/Âî‹ãi´«§'$uclp†™T™9p,8æ{÷&Ó¤B5ÅOlpì9»\óÚ)‡<ãžrФ\"s´]õÄ]&™ 9*+°¾3mµS²ã“v(egA\4E&sgVkJƒéQÔ#û-€SÝ0zÞ@O0K^m)0$ªÔÖúP/«ì&|‡ŽÐÎã¶ØíÁÚLlfì0ZzÊR<žý¨*¹0Fo*‹ÂÞA͸ %yŒ €Ø,—?-Yú‘Údš•Š¸À«‹úð[¤Zj”!îx¤ÉØàL‹ª¢à¨Z¯]ÃDç~×Оs½ca-‡IŠUÑž3T$r”>×t×;#2Hîßõ'€ç&O/1ŠPÊÛmåÀ糖ÀÜ›å¤Ð…'¿ª§ÇÀ hÓOš!o­ ÕpŒüo†˜ìµ6€‡ÝÊñb1'|š‘qÑÕ1‘Q)óèLìàh휢÷ª‰ûµ®ÊˆÐÀˆv–àØýÚa¹º¤šê|ni=\…s3ˆQÀ­Ý€¤‡!ÈŠž?$™R+l…¢¯*œó·!ÅÓp.@ÇŽ öÔÞ4‚Ÿãý#›ÛÚ¢Lnr–äcÅÙýåHš!L’^Šh<‹NAIa}ô£|4N1î)ŠzH'ÔZgà©JÕr^Ênt9T5=g~oç¡ycNÆß˜LÍ­+rŸFôj‡+G1dë‚Ue;Hö*«B³ÝŽ7¬{~2,;kÓF<èëöTî}?þŸ¼I2Î;6@2®µòħ°YU ñ|D©%wà„uJŒxltU‘²'ŽûhÉ”µ9wySÔùnlC>%—(þëËæò%Rj”LÙÔÎq –z†sâ8mÕ—Œo¨¨ÁÍ gF͉ð°ªÀ×j{qð¦!Ôµ{”8âÕÉJÇ0Kôju6›}É7R{Òö(4Ùº‰…UéÄ”ÂÈ_ÂðÜ"%×XMÿ¤Ø1x%f×IàÚ‡.0˜ÿ©?ø»’ÒѵÁ_¸µTŽÔb²X| qkõ¬çyŽfmFZªòFûÃÌY-Ù† î:ϳݢñ+™‚1K]ZÛCÇ9›iãÉC^&ÕœËéĹaŸãܲûi‰h¿ï¦‰–cc0½¹Ávô[K¬Ø‹vNµÎç@·”x¬ž–ÂYÓU°W˜ÚœSÜr+‡‘ôM䨜4h;5Ù¼½W“_â‘áÆÁ[#¶õR¥Õ.7ÛúÓëÖ9 k…{÷hbH²Ž§{®Ä}bç.ÆyÇ;ßjŨœyïlù¬Üˆã¦I$wT*V³B{¼­Î3´W“5ñ”´ÏÖ—õŽ™¯üQ¼6"£r’Ʀ{¶ÔXÎ^5fAO€%Û( ¼5MEо º¦*Œ"4½Íæ©ÛO{_j3'¹‚÷Gö>((«få¸ó¦3D c¿”r»òé1ÖšÍVž—îJÙÕQyómšªvž©ÃE9µ» 6Ò z+)DÄæR½è3Õ™î=ËàÎÌîpͶy/ŠRé*Õ?¤ŠõèýPÚWé‹ÕImªWÏڷ纜ٱ„TÙ§:´IÖL,èÒç=¨‚%º÷TXÖ¦·Žª˜ÊœîxSÏê4Àû¥0LØÎyÕ»2+ÙIo$‹²U¿yB›ïêujk>"˜VZî<"X_t–çÕ–PžsFÕhø!ޝÝyDg‚=¯¶úÀ2½/w¡+Ž÷Ù4lÚ0˜ƒÔZ=ac,Œür3™‡y™ &Ðz=ß/ð93×¶À%1¼Gwöˆü@û¼s©I²Bå8õ/¥ZÝ}œ)ªMVÉTTÊøX†›Ù Ü\òaìáøÒ7‰`ÑuÉ¥ˆ£¾ø¡=‹G-äá·—ANMþ -ÞÝeaî°0¼èß.­r öÀè¦üß©ª“o4¤rš]å÷‰:<¹ô*jüco|»›5ÃC"BèÕÝæÀ6¼ãhu”?üŽì¤¦º¶/‹^K!BÀ{0:—Hö sgÚŒ=‚¯–“yˆZXÿ [P)Ú@Þª ¨ÎÓ€ü^õ(7þò@ã¹Ck`ÒðNÔÁÁžwHiÞ‡Ô‹‹g"Ý«««»6ShëÏtðCýanÒŠ¹àŸîš‚㓯®XJæIŸŽf$óÕeóyñðí–‹Œ×®.—U5×¼®Â´Ã>ËÕ™ú:ì¹YÔŽbÊs ÌSÅÜ’‹@áá?¨­Æ;“úw**øø¦äâðè(åv'ÉJžtMÑù¸0ضoøÂ&xpï¬<òÚ…\©e*ôâË+SÈC£üy€i2ñþ°ÿÆÇ¨tpÃôQŽ}Z<‰®›âøUýó²õ7àNs9øùENý•2Ͷ”ÿªL¬¾†{ëî1üS0á´øÌ#Oeå?eƒCJ¹*ÕÈ×Ü=ÒÒÝš÷onÒ¹oñÉ3ÊëSyxŽå_åVÊÏ<ⲄsêÓXB9šoË}两no£‰ætÚ‡ËG+yLb­>?RöÌÖùá&1¾ý¶´ˆMõ뼊lA{ ?55ûéD.–Queƒ c‡^H¾Mc?Œc4!ʶô7ÏÓq°•'cëÔ/{ë'‚> stream xœÕ\I·¾ü#æøh:Ü—98+$@–Ar0r4ZœhF¶ÇެüúTÙÝÅ­_¿yY~êa“E²øÕW ûÛK1ÉKÿåÿ¿¸½øù_ýåëû qùúâÛ I¼Ìÿ{q{ù«kh åeœ¢SÎ\^¿ºHoÊK©Ýd…¾ôJOÂëËëÛ‹¯÷O kŒõ‡ïégtA¾[Ÿ>ë6øåòôŸ×€mà#j9i¯Œz}Cc\ÉI©tq%&c”V±b‚WŒOµˆ±l‘º–Åd®âdìå•T“5N¦þÿ†¯Xoö’^w êJY3i)s¯VD¡oÊæÊZN^ÔŒÖÞD Îø4}£¥ŠñðMzOÃ?±|O+sxκûš&¢­W~nNÏŸ5}kk ¡ò›Aú0|þŽzõºk‡¤wLÂ×(¡ŸHr½‡}+û΢X˜Û³¹ëüwò¥µ´fÊWçöì&¥õpYÙ|¿O+%ƒ/Vç>=¶ðóöbÕh˜ ßÊl®'«Ë¼ËÛ§Ýákýnþ~ èY Ul`4hšjÎ TeVÚY3úÊC},ÊãjY—®_¯ê3·Až³yQ´òîpE¿>¢DW³H¤îÖfußV,TÚ,°‚q‹Eï(=gëÅUkzretœ´ ‡kh¡„ÖÑ×Ç&7I¥ %û@M\°úS5˃3±L](YlÛ+|*§Âg|¾´ÔS´ñÎö,•ÝÓ3_.7ëð>-¦…¿Nªn½cøLˆçºËuú öünÐæ&u£aEÞ“ºˆh\¡ßÛ€3ð¦=õ§3eMgÀøEä.NpاíZ›)À~†õéÄ룟bpNC¬`{vÑvÕÛórnn}j»'“XÚ÷+E¹½’`àRi‰Þ¯†ûëÕpßÔæœ~¾y eçæœ½”Ò S¶r’Î FÂCÐpçϵæoÙòç“M¨wÜ„0©`· ¾ &1+)aWÀvÈùi}“:×ÁW@…Oe7Ý!Ãá? C,fÆN3ïƒ7ù1KkΛpëÖâá B³z2#ÚÏû$µ‹%ÃùÂWïμ Qáò E„e’šÆñ²kD3Ôr#Jk¹®Cß$ˆóq ÖΊÊh›#{Ê¡é]·1oZA-T­4Ôÿ —„Y¾i”š”7ƒ—¢{Úôê”<õ´ImTï´)°ÔÑ,ÝUt ä1T/ÜT ^ZN½ÅÆ€”“תÝ*äæî! ‚¯ ðñžÓºÎ’¥rt-“áŽ÷»'* XYPÄ 7<—e@6ßû41°›E׬Å]Oº“,—ˆŸ­æ”#¬Èt°‹0[là0Àß¾êÏÙn¼eÏó‰`¤^%rãôd‚žuž)&Û[t+"Òe¦sƒ:¶–CsK‹èͤÐyä’²?²BÏ[uÌ2n Ê_^)0“ŽÕŸ©(‘™`j züýIÐÀ[EW[êÈ ãqÄ v¥¿ÃÆW¶Tð›öÔ!ëËjÖx2üU¶F9@äÁUüþD·ÏÕá¶e«7ìÍ2 ÕŒ0uÖIç®ùî8ó €ÀùôÑ"e#³V‚åF÷ç>÷Ú#ÞhЏóµåF×Útí4zD¶t2#`odAÄÍGR#;«Ó…Æ9å!̬;Ö ßÓ#âdìX7Æ,vi§²ŠYz•«‡“4Ìö¸!PàúÙÒ©dÍaL­a-¨·p|G·:Ð…ãHDìëG¡ŠÕö±xÃTá†ÁìdûãÅõϾ‚Qªl jÞ®O·c6Ð[”n5ÈI4׫½YX@žX¥y©’›”—šÀ*¬ù¦p‹ë)¡;ž6À ‚˳zOÉ ‘xŒK¿I”!¹؃к ¤ÓmZ€ˆ[邉¬§´â8HÜå>–!Ë´\¶ö¾Óc£Ž/t1oÞwbHÒ4^k‘Sƒ~ðäHԕЇ1“»•Íõ¬–¥—ˆC‹MÞ2£]‚¯ÔUIJ²"xsDˆedEH뫲YÛÎA±]üœ¿Å€-®$³ž¼Ô… |™Z£?C] ŒR8UÎ~½ÂÏ ?VRv®ÍZ 8+Õ¢o¥Ìh~(çX¼Àj6 ™d„ÝL îµTÞ?ö¡`­Eå`:Q;˜€–³îý¢æ•Gœ¼C:™[‹USåúóiJ~ˆ ¶]ÒjT2 6ò3ÂÍ#v(â¤Ëƒ³Z|¶º9OÀÕôU,evFüˆÐŽ”(9SHhùt–‰¸]-Õ»Õ~ýg}ú²6e«³_™27P-[q‡…0^'I‘Oœ˜‚7ÁÊnΨ¬’b'ÙÙ4C"ªÚ ÁKH V_´ü{¶]ހ뇓æC=“ܪ@v. ·Cü8fžgm,±Ÿ<+ë‡Y×ÚQ÷n ŽÖÛ‡ûÈvŸ¦ã˜ÓUy4hÆ–O 4¶¸èÖ×˪½FsÀòç®üï°RâÚ7‹)ƒc9«å,F(iã«•t·£X„èž]Ã~KÆq-¬¤—ZäÁ‘ûÔZûÚ¼‚¦ÜvÀààîûÃo¨‚Dˆ…>ïJCÃðž\š—ýý{ZˆEE5ÚGPÛ¨¼î•2èRÇ÷Îb'òÒsq à qr>nº}¸î¼ÌMºK¾€­;2håi¾€\Ê)Œôwrc­k×&ëÛèAk÷›Ÿç\Y½4T>Á8k?&4*oáÛuû„tN+gˆÐf¤¥¾`7f‡ER ÷!ƱQyBàG¡…(‘Rv_V–o{ i¦9u†K‚ QW~áèùb*ßò‹äÝ-ž]Þ à%•“Oïú¨KyMGž1ju/×Îr¨?N­VCÊùÉ—‰gœ¶‰À0L…÷à¨Qļ©Žg?”Nö¨¢©$M{R®ÿ–Ê¥ÀO³r3ÒˆxYÂðfIàÒàìLØäÞ8˜ÆEÇJã>|™ªðn ¶•2v +• \Q–È“¬œˆp´æÏïÓ&ÕuƒY9Ü6Я3ÏñÂ^a" pëT 2nÃVAaÉP­øt[ g#ǡƾAw*–ŠXŽù•bDŒíˆãW,LÊžb$°6h:V^ú(æ´üFL‰°ŒÒ× 2 YÌWiÖ0T ¼Hn ýÄ5×¶ÄË+¡0 Õ‡4ˆÑeïûLH‰mì’o˜>Þ§.œCöVæ*QriαÞaXŽJÔU§pF´˜‘u0§KÈ\ XEÅ™Rpzìå&>º½pJ=Ê&”¥“¿tâ8§õ¯üÚÁ±J%’;OJµ<âúÙ¥$%Q¡>Òqý¼ÀJÝYuöéø s€D†™%ôüìjûù“H¶¢ýBaò`3-±ªÕ<'Ú/ ÙÞÇYPáëÚ |ªJMàŠÎÎRÊ>»J‡1x·Ç¡é¦DsÐÉ ;9Ç©ÅñQ}ììÆÀ¡ÂðjyhK îq-)uš"$°!zq9+šMúc ¯•óœ&[™;+õ³qk¦}ÄU¤t<ßIŠ€tf+OM°‘©Þ°°Rö#Ç>›Ú0¼5»=üZïFQ®C·i«Kƒ5°;üHÏÑHҾķ î#¿w®ñÃ0­ªÄVÚKg¹*ß'-…bO3Nc•œdgPπ욑òÖÔ˜-2c,¬™™Ã8 úvrÚMB‡./¼ÓŒÑÁ§º, i«Æ:õ $÷îu  ¦)è0Xz»Y«Ëæ¬ßͰ°¹®½•]ãÀâW·‡ö3¬Íòõ¤Ç\ÒØ©£I@PSèîwio¤“üöÎ ëÊ3QY“Óh»+yуÁÄT€“äÏÈ» p kìnL¥Ÿ¥ßTW^õ[¦¬­©ãR[«8ÌìÜ®>ç«·v‰ˆùaÀàFÃ1o–ÜR½ÚÌÃwÜþ>ÝIP•Šñì3ÿUL.çÏ8A~&fÖK1¸;˜»pv‰»·xð$PuÒþÍÌÓ¨`ñÃèn›•~øâCÊi ¥¾Ä¥ÁD7Wê”8>*`M¶jе¤ÌÔ èXe¿°µZ³ÞÇv}в÷á…*|T}xAkAw ï3Ï¢{·-Úyÿ¯½¾°{“c»¶ÕwëúµU¸4•¡[ÛRsÒb~(H,ð ?òYë[!Tv»¯xº§ŒÚò²ÛÇÁ¿Kev«ª³µÎÁ@/>Uuø‘ª',ÑýàQ¸7lºS6žÁo #›Ò¦‹æ¬‚’¬Jn0áڅשìï£Å¹ EY3…•›{PY[wÓ7RD®N·ÛoN±Ûç\”¡õ ƒïíŒ6œ[<®à&¼íqbnH¨¾v,4Öï#eä¬~4 þ2â“ú¸&ÞMî4TWcnrÚeŠê)ožuð+Ì­\xI„É"ýwÔ„?ás6¦èý´M–¶¼Zö9ƒþžcýô Ï0nTÔ=£{úâÏO€îðpûbŸ3º/ºzû‰ÐÝ?ÅY5„¶P˜ÑÇ :ŽI€NNléMÑgä¤Ý¹÷Æ8Ô:S '}p’Á«OD?)‡|¨ùð <°qIñ*ËYÈ€a9ºÇ·4A»¢ ÕgFæÏBt«—òÞÊæ‹?F⿺IøÑîæWp÷¤ fñê¢êI¦(öJæy4Œ¹‚ͱ¸Yß ”ÝÜ ¿/HÛÞy ËIO÷ŸÕˆìÒ‹Úí»/ø1?Þxò5BÌS :o¦Q ‰³Ã}ؼl~ì3l&Nƒ¨]/V ­¥ob¥( Ýý•Cl­«KDê3ø)?Šû10žóú¹ÂLKhÎËa“ÜV~éŠØÊ²ª%»äúþ}ÅAÚaDÞ«ÊŚѢ9Kê Çâ ßíñu«uG¸9Ú¸V¡Œôï}ÛË:þÈ[cf?ëâkÂOõÆç=1ïc}0«õ¨‘uÞßúÑye^º+¡†î]»³zγ((>¬»+|Á+‹¤XºÃ¿Ývh ,ÎN~å°NV§ªv5™àÖOá4²”ªãTÜ[Nr¥Êtr¯qs«# ZBûþ²òê–&_c¤C÷h‹íkÈhïÖB6¥º¨¿8ùnÌb;T]x1 “uå-ö º4$8\¨N2¾iƒEK2âÎì €F<ÊGLŒµŸŒÂW;UgìûÔBÄ¥ Ç0«ËàzÌsjÉ)gOwê ÏQvHO×Ë ;f“ééFÉä/4tS®ß4üxdž´™b}/œbm:}Ù ‘K›úK•Ñã}ÝxyüIH“ ýºøë'h±ýo¯/þÿý"Gß3endstream endobj 436 0 obj 4621 endobj 440 0 obj <> stream xœå=ÉnÉ‘w¢áo |z4˹/ø`<†™ƒmìöA-j±-’j‘-µüõ™U¹Õ«ÇE€1èC—ŠY™‘‘±Gd¼ÎÅ$Ïþ—ÿÿêúìôçoïÎÄùÛ³Î$ýñ<ÿïÕõù¯_À-ÏãræüÅ›³ô¥<—ÚMVès¯ô$¼>q}ö×Ãû ˜Zcýá–£ êðy}ûËåño/~sÛÀçVbŠÒÁô/®`²»‹K9)¢;Ü_\ŠÉ¥•;|¼°b‚/Ôá%¾Õ"ÆrDšY–POBø Ï/¥š¬q2­ð'üÈzÈ×4^ÐdÆÃöŒÏóZ…>¼+‡ÓØÓ¾öÞhæáJª€üÂÙRx«äüw­­É+Ú ¬=¼¥Ú›xø’fvÎ ¹Ž&Pý?üС­WN`ÉÙ‡T¾á+n'¯m±æmzíôá|»®~ &VB>¤u´Ñ²X“Oø:CkÂqĺç cuˆ¬ ­ÕÔËŸ2 µ™w dXî˜C›Ð G¶œ{›‰Ë Øæ-Œ¤¦@ëâLµìïoÒnµîm–VÎY€ §ºœç"2µ6“éù @½å8qE¥Zë)Àvá5ôJo9¢Þ¥ï¢ŽøÖLFÈ‚:‹Ó)ðý›>µÑW4o]´[T‚xàü÷Œìo/T€ƒÒdÀ?á|‰F0·_hôÀÖv‡ýZ ðDÄŸ§uõ$}Ktí'ÊâR¢T•!ñqÕ /Wmqÿ0m‘Ô‚9øPµ°ðÛ†ZPÆNÊn1 qã!ŒÍް ¿UG&Ò ßW¸ŒƒM–,ÇÈç§4…ˆAŠášø@â"ú:Mg¥6Â$°oØšo3¦‚Ž?¾ƒÛõÃÄîZDZªÀ}ùàÈQ†ú»|âWDý†ä~§¼Ù”$ä9/½ËÌf@D*fÆ ¼6¸RwÀ[„rDhƒ½c« Æ$’×.íœöô@/­z˜ÄÛMApéu¬$ë2EyŠËëñ^](Ÿž *»edQ°{/ú‡M–ð­~Éá‡>Tßjø7D‰¨óKú;èsŽ&>o¢ZiL½YD®öU¹Ý—ªée&h”Ž~&h®^ø3£îû´måá{x @ýA/¥MêªU0.‚ùÖ¡íF)¬wÚÈðšËÛ¤œ(4 k*ÌýÏõ¨zÊC àÌ£-®DåỪÄçTuZô)Èê’¾l,ª4#s$oŸ6Œ¬â7¶®¢È}^$Ü@Ü[@ɨ@ŸŽdç@&|wÁfc^O˜’_Vê¼J;¶Z°ÆG—B«>mràûW„Á"ýu³ 3ý[ãcZEJ94îÙ,7ycp"ryÛ§@¤mWQàjWmR X¬ ²K-À`•6óŽñéƒÿZåäíêL´Òe˯¸ÙEÀ¼¼QY[àÌÕìz¨<,Á4x-9at%ˆ¬ íÐ^0ñqÓ΃!Þ|eX¥zºúÊV1Âm,ø~æGæ•rqJ†:) BÓ›™+ï–Öµ=+•Èô§S[©¤_ØI䕟ÁYÞIÔí:cO>Žeú¿ÚÖþ4XŸÒ™MO×¶#i¶áÀ£¡ïô`Á<.ŽªVá: 2áßðÆH‘wÌlk¾#8Œj Rø‡Ô…½7ãÀ !ÛuŽ‚èì3=^g[ˆ?ò$‚äû¢ #æ ½¾ÞêG|òz¥ÁÎaDW'| µ[‡ aÕl•êz@f³ï‡FN UèГirR€®tµÖá™IJ `î‡p/8É'%Ý ÚsÅð>­ßõ#rŠJ‡*BñiE¼^#,nÑ+p@7XtmâjCÃ`!ŒGÜÃcÚPh@€˜6 1{êþÒLJIQ‡·¢Ø þ"·ƒ­8dC12.zL¸—q•³ÛQtL”dMØpìà×—ö§°•f$è,Pd|–Êò™¹’öäBháNЄ¢Þ ¨ý%í Nî<—"IyIa;9Õp43àfQÄÆÜ;„øMÚº„ÍŒ¬›ãE2)È䀤ìLQm:eÆtW*OIâ‰E\t#1îž´‹üe“8Ñ™¶œÅr°*í ”Ó?¤Q …<—?­S¡Á¢ø'ýž‰a -Ѭ)M[.J;áxpapεHkÙª°!’.vÕ ½oN2™ÑœrpMáÁ¾ÓÏ#bEœ¼ŠµP‡·*l—uÀL8ð¹dôÅÀ¤’Ò’ˆK Ð9¢çYôø”Ā⑵÷¶Á±· {#·!§h2V~—¤Æ”î× Ž¯_B•H´ë–Š›íëþ~À,ï´ÌdŒàúЧifÛ´ø!3‡åCÐ4œÛžH.G¸m[êd‰†p0j-uŸ 1UTæ%TFÁ68±µº6ñ ¼£‰GriÉDñ»…„™ÕÔÒYv™iSÖ×_;'GªrZ¹ŠIñ­Žc`ù)mŽÒ|N¼ãÁñsf-àK#+j;úÎýINƒßæÒ?YLJ—ù‘¡(—ÕÙª‹»K¼+ÃfÚ VÀW©,ìëNâ³Ð/šÊ²--EAl{rU46vªjºgï_LbÑ™WvÃz¨Qz#ßÞU¢W3$5v–•@${¤m¢; éÛèù¤êTLüÙʽ<ÁŠAšƒ© F%:‹˜œñ XÓr%Ïò€ˆJ£qe÷–%`”¯i‡&ñŠ rþá7lòêxpB£÷êÖlà¾F½K°:o ×c`l… n·í#fý0Ƚ;ô©Q: [pn›5ëUÂÌ»(ä{’Ó¥ÛLÊMáÔœ ¶È#óÚ£QbpTŸ”Ä£•%§3Ó5Ëòé8©÷¯T f¾}ðUeÕ¡ÚOÊ…Z6(¼´Qåe'±Qø‚³;µ%XJ‡I¢…Ox,æQuýicúðß8ZË öˆÇ8éógþ-ûr5~ÿ15è†^ÑN•ï]°cïû.áJ{9r¨r1·µ“7¦¼pP³o'²Oþ4ô×iA£rÜbÎܺa¦˜w<æc5²ÅÔ›"9T•@µz¥tMÑ$¯´Ì·†èñÓúøzyLÅL ¯+`-§B(žŠ-AEW6Òz±¬ ÔiEk?Z†õ1…Ë@W×iäá²LpV„ƾ«³zDe™V¯8ò¶!gkU¯^¤ò‚*‰­Úœ´–^RÖ17Ø2Ÿ7榭›t°;cnÀ“‹j#æ†xÀ½ï­Á ƒýš¡6„ÐFÌ ¦Œ Ê®¶ÜJµB÷í:„ˆ¶jw ¶¥v £ƒ§BJ¾"«n º2È%_oÖ@é <˜½©mÜ×¶¤ÁÚau˜àÇÕƒßQªt¯6PpRP±ÃHó¢ƒ /g^Nâ–:þ‚pUìv—’®S‘b­ª¡uú7¦®2î5òw·>=zÍ- ¬ü2RìUê{ªX6~¾“ék–mG-×}&/%ÌŠâÇŒú\T^YfÎÎQ¢tŽNʾ± ¼äÌäcëÂkáMDzk.nÍW¾ŒÜcmy±S3qº¨N€WD’ð2`d~Éß…Î}•©Whœ_sgç8v³—>|ÈmF‹E?Áv,ó¥ÀÎ,•ô ªXb¾´'þÀfáÎLÎDNºí•GdzˆÕÍŽ¶¬‹$ù T‚aUu9ÖÞpù™Œ£\F4sbÒ—õ(Œ¼Q¡9Cwx7Ò <Š2Ø'%œÆû…§«„Ú¸*žÔUüÛW;®÷,\Q89E7d÷±Â"·çíòÞîÓn¬£Dø®ú.ZÑ©:\’^‹º”h¾¯jµcQ+«Ë2¡—]S"¨e7Öd ;\Ntž°-˰{}¯b´$þ_ao~É“Ím:G­ùÒ'4“nl7Ò’J½ÿGô1 ™›[”©•›—»ͧYÌSY²·÷Ý>­3|¾àå,¿yqö‡3möüó™8ÿíØaKD¿ù~}˜ˆàº/oÞŸýéÄæ¾ˆËèqì,›zû²†¾?VÀ'0?Œ”Àëhâä ‡¬ŒIÚ]—žÄ1"A™dÖe¡yTxCùaÝ’&º‘µ– -µK¬¸éåúøayìZŠEgËŸ¯2¤;–©Z…nÞŸo×óZgi‰ÿÖ©œ6lÔÊ-Ž1r—GpÙ”!±ã$ÀÖJÙnVÞŸ#Ì`¡=°¢–M…Zÿ,Ø8MÿuÚLô-ª›‹¶ËŒW&ßRíŠ^4c¤›|4¿§Ú«çý6Õ·? -&‚#U¯,ÞÍMfò¦E»3[³º¶g(ú¶ØrÙÖšèÙu÷ÚÚ¼ôqÒAÔ-¿ã+zé*Ä õQ_oæ¢U¥Fc»¾úR0N§¶+·iÅàç«)’÷/¾Íö{nA6"|åbÁ"u-‚Æ€{ûJÕòxÙAÃAÁ{xvíf‚g?ÅŽu1˜{IÐy‚GóÍÒ!E­¦C§D|½ð"¨eTkÐ,ÝæËæ˜óØ¥Ÿ ®V¦)öÞšP@re_·»ôÖTîüM‹žo çûô©ÔX@|¢RàW ›w®ø–j•å@=ð:Ül3Ô¦F²/JK¢]‘ˆ)[\ó,áZ}H9êÛc—ìZ$ÛÂÄF°ãEæ>Ú{ÊÑ_§e”+‹í*Gtá>Nºeœdn}žïäPä†N[ŸšÚ‰À†WÛ¼O»ôeE.Ò’{6œ¸Ã¿Õ¥Eawà’†3rŠ Ë¾j‘¨äo)€ïŽô«ÈÛž’áG‹:£µR­a%’Œ×èÛùgH+T!*,ò‹Ãæ¨Wi[`°ª6 1¤Õ4–ÅuÅ(VÍEß{d줧6ïœp¯ïKÚ®!e–ÍÐÈây{~Œoç½ÚÌQìÎÂZ $<‚7û¦õ=·jæf '̬F¶þRl@£ù—lÆ Hà•$_ÝöÐ1åÌÇMtq6/¸ÙU$>µFª³wt¥xmv’,ª´t“ÜÃå´yG©ó‡fCÚ&ÛFš°ºªãfsî©¶‘ýQ%Øœ´ÔÆøÏ)ÈiïçÔ‘lD 6ý#my.âôfoà›NÝä³K­©æßJë²ÚhGT°Îé¶²ˆtTÔ4ŽóMÃ`;?²ª:ÿÌ5JmÔ“<$n¡©(lä/lÎÍh­IÞíémòmêÍ wÿöŠ`~Õœ·û£‚ã 2›ÈÁmÕ8°’Gˆ1¾o{µ4Õ@R´Bv Ffµ2CŠ‘¥ ¯V ø &Ô}ÚÙà‚?W÷lø2ŒÕª}—óv÷õ×_Ò¹»;£-Ÿ>÷5ÊOÿ—»d8'’Ó%ÓÏÿº8!ùü¬Á…ñ]E‡ø¥:ÆôëO×nË0$`ò•„@íÞ?:ù†ÒÀÉÃV+Ð(ö´öV·5ƒLìš`J;µÝ‡†[ÿ~Áð ©?†¶·1mRÕîm:÷±”Y¹?SÔ7}s7qaúAû<µ6…B?ÞY¥É’å¥w…ö:É>*©eW·~ÄÀc¯¦g VI Qÿª½-½çÑÏåå°Ÿs©ý›Ÿ¢’_1äFMð”É-Ÿ¬0eÑÙ]Ú8ö²„Ö:øˆ•]©7œ0DSs<­ÓÖ*ÞåÞ¹„xµoMY›As£Y½fü3esÙeÈŒ èNü¶¥A­uÔðxBè†1{ (ÈZèäî—¥Ÿ¸B}‡ aã¨ìqÔ‡{ÔÂàHá´l#ØhÈÈ‘ÕÉs|›U¤´Ømùü’jf…J˜õëúëã’èüÃÙÿö…±Ýendstream endobj 441 0 obj 5730 endobj 445 0 obj <> stream xœí[Io¹¾ ùuln†ûrL'ã`cÆrÈäà‘dÙˆ$/²'™üú|¬*>VWu·Z’å>˜¢Xä[¾·Q;)T'é_ÿÿéÕÑ ÝÅÍ‘ì.Ž>©üË®ÿïôªûó ¤N)‘œSÝÉ›£ò¡Â”¾ ÚLwruôÏU<^KaœÒ6®­ ^…•=^+¥ˆ«“ãdDR&®^ÓïÕ*ÆÕ'kå­« Fã¼Ðˆë?¯Mð"¤°øéé±Q"xiVoqAï¬2«w- ÐŽ.yÛÐ>¥åFzÐæK¾T*|›s:I.$¾O(£eZ]×é³:¼d;ö§ò؇¯¾(—”J5;¾g<)‡2&¨á¬&iÝ\“,·ÔÒÇÕMJk¬ù×Éß!Uº$’×Þf±F‘¢LÝÉ÷G'OH”XìŒq¶H2$§%IrvZÓ…´Qœ´q¸‘ÔК“3hÉ«Ìíh]X=ËÃä£^½¬³'³ ¾giç'G?Y!]÷¨îߎTˆ^(Ûi5Tµ»Â…„äÆ™Ë£W‹ ÞžwÔðu*„Lºèøëz¸Oõp§uöm>¯ þ[‡ïêðó8œÉÚ;È1©nMÂIà`Ï?0ÞG¯°Ã¯°,éZ ©×é÷ULØtQdBì5°_?ï¤2sòƒåÒæk“h«XNñK½æûéÝòìÙñÚi+‚²÷(q-¥&t0 -Œ‡˜µ4A„8ÎÜ^Ì ™¦Æp1çcLÅ à1=Ä”Ù=Ä V8á•_ý´ªÓ¯êðY%ü²ÎžLp¶ JSØ£‰s%)ŒÔ]¸’”ЦeÊŸv3e¼èh&¤%¬¹/?Ìÿì§ãæúke£ÖÀF<ù„ÞFnªBÖoß×Ùϳ ˜í¾©Ãóoùì|/]ÀQM£ g“C¾|©³?×áežÏ2îS¥p>á÷ÆqnfgÙ®é¼>Ä5~ÒHî=%€í­DÍîüšógIÔð8à’†ãÀñ/î’qpÃty‡ìG8œ†Ü¦L ¾7{YPS rÐÌ^VåLjÖ0Œí¡ÈÚTµ&…± €'%ãô˜D.ƒb‡àb)Ô%g¡˜ŽÕý»RÄR^D×¹ •0šüg‚×Ñ~œ9ÀB¢M_Bv;ý'3¦}µU–ïÖâF. Ìz“em¥×EUŽ_—1â"UtÃz¤/‚·P$ÙG‘Æ ¤ˆEðÀ,zk#Ý@Ù8õOÅ+»”zq‚||C_ÄcºÙg¢ ´D&׫ٞ,Óx×ÐàÛô+bjVÜ”ckÙ\æMÙ/†bevN •ñ5M«„S/õ²ÚüÞnÌÂT…ŒL ­Œv{%¡‰WÂâÈ»¨^ óð´ߎÃ9ÅBΓLŠ2¸8¡Ð§Ü—zPBˆ^ߢ1fQÇøö)gvx:9‚&8< ‡çB9æ8êGh‚€-¯ÐHuÆOk· ~©K¶§•ôÓP¹fŸòù#ÊóUÃêÙ¶ø’ÿ-˜Î¦¼"©7ô›ŽEûËÕ¬ÊÊ„íÔý«¬!!ëî.b½¢"1ÎzE²‚L“Ò»Û¤/êðúÜ$ØÓ5äyÞ¨Z*f“àç|#´Kˆ"g8h ›qõçÍârýXEØhb¯ÃQ#¾(x†Ì?×sƒ*zåõô€46:dà%ýM±ÍbJ§yÄS`ÂèF}2P<«Ã—ux2»à»QXñ5—˜úØ üt‡°ÙIÓ9r~:Þ:g]€;+G7Ú£‹ ‹ÐÑóUƒ›‹1ñ…ÚA$ÉrŠ[Üâøå'úyJŠ‹ËÐ0G?'äG^£…û„¸ž€0§&#¬…¤\&l’ lùâ)„à£ðÆ,:>ñpëŸZ0'ùEùqêEiÛ ÿ”ù>Ž?;|.w›½ÏÍ犠0”í±D«ÁÝf_ÍV0lö Cà9ËÎe5Ü@l¥S(*Õ'á­O¿‘Š­Kñ.[¤'Ñ=„K)ˆ¤;ã¨S2ðëö3‡¿)S€fi{ûŠí] Gã®ØZ…PH‡]å«ü唯¨\Ö6ì(³&û0ù¨ñHm@¸*ÌIÝAkð¹ j´f¿¸Mà1¥ ãíï7Ý›)±Z`,ªÉÞÓ´F…IH‹Ö[ HH=0ÎöUZ?›¨*ôïR¥%Á¡ª–‰Ó*ªAL[LpfŠ®¹³gVEÔ္Å1«ùTŽÌ^´Éý²jC˜å›:¡š‹2Í%Á$Ù±¦×ï‘|¡„Í ™³Šª˜æÈ_ä/Dö¹?‘m o™*-Ô¸¦é2ø—\®sæË¸8Üþbk‡‡íÿ0ϲVïI³tÐô>©…È‚>\»¯ÙxDæ²hUßÜÔÊ×ñ/¼‚nÍfw¢?^’lVh9tæZÄD!y A-œ†ÿ½Öx3•¾Iêiv`«§zníàÜc±Ñ‹°¡Ã­,Ð;$mœ1Ž3ä©n¦`DÔû¿ÅØŠ¯Ålœ¶°®œ6.'C„äTp«ä&I»Xà͵„eÛÈ m«IìuvR‰#%SZ-|wJí¬J‹µÉ¥bÞí]Q>‰CýlZcäÆ×ýݽoŒ™_É5©»%‡Ê÷dNøI5v¸€«LÌýEªÅG yªIS™ÚY:†Åâ0çÕ’) ™” 71#Ÿï²l©Rx Pq[»@Q°-  ®S€}tF+z=Gá™”ØêÌu¼ (Ë ƒ»¿Äð¦¶&n…Äê°çЬ§ZÍŸé]&-‰ráSŒ¥àjw”Ý]J÷d¦Çôí«õü§Q olV¨5=õåI”J}†ýc¦ aXžgØ^«él¤w]Ô*T á`L¬U8ÌÞ*T1!ÉÝí 7"Ë=dû•Z…•-C«ðp¶ ­Â†-ßB«°m ­©²0¾'“þµ®1‘TÙñysP(¡·¼q6Ý|£ñÄ.uU‡L‰¦ÒÈ´ê‘™—ÓÝfUõ÷Ff¼[#s¬–ßk#óÍ,3.+±³Y 7KGK)åï%MWúkˆo·é$õ|ºµƒO ¾ÏCãâ8±û‡£ÿ¸f¤÷endstream endobj 446 0 obj 2938 endobj 450 0 obj <> stream xœíÙn¹ñ}äæqdXL“Åó1ÙØÙ 6Ç® À::m!–¥õÈÞ8_Ÿ*²»Yd³[3:bü`šf‹u_óóºrÝÑŸþïÓ«Õo~të7ÛU·~³úy%ã®û¿N¯Ö¿;ÂR®ƒVY½>ºX¥/åZ‚¦ƒµS :룫ÕO›£ƒN¨ ¸ÍÛƒÃNg¼W›sZk´ÿÇÑ"U'¼÷è a¼B¼6nóM\‹ þ’wš¾wéŽG«VZtfý ¾í+éà„­ά¯V2(#À;ïV¯f)m %Œ¶%Ž3r2r§yù6/¿ÏËë¼<Î˳q™èVrB¤¯UÝ>JÑYB„¦œ›‰  AnnºÐÁæ’Ö^:¿yÏÎ «À!a´ÙüŠqð]:nœrÃ:~ºMÇ­µô)ómç:Ûâ¾C¤‘Z%÷ãëkîk%zî×¾-(¹ZJác9h xê,G”*YþÛŒFÍò„òÛE6*-¬‘#·D.çð°/HÊØËyzš©[ÿÈ8Ð F'öj¡ÝææàPyÿ½¸H… {±å,Š…rBK ÀŒ(ŸÍ¢¹âÈu/CNmN" -õæsFº%‡ÄíÖ‡2*•LÄXÒ¦¸û6/oòÛú³Á,LTˆž¢GÓóK6_—Là+Éï…”‹Þ © ^Îè$c+ge„a¹y“?d‡óî ÷6Ý­sjì•1RüJœ?þ†ix†½í}OE†  ·ÃæÓÑ€Òí˓Žœ°—ñ#‘:A è^Ä]ÝY|LÛ^%J”…T‹K÷qV‹+\vHÕ©¦3RȬÀ$qh!d/‡qù!/Ïóò8/¯F{ÑT0BD©¦‘HÒ—‡ ¬ðIŒéõhgÛ¬J³‡RlUඤG†$ ,ÑaÙ{›·Ù‰x#Õ…æÓ‚02»ŽêqSô™Bpvá‡hK½œùî”l‘Ñ2$˜StúF1q/äóº‰-Žw| :VÜ}½aWræ(Æ;Ax Ȧ¶âϽ‚‡•&#D›w#—ÎÛ¯@‘F‰4¹¢P$-‘ß'>¿<ðŦTÖž.:;…úÇ·KÑæŒè)¤Á•b4ߦ/¥'µC#Õ9ofa' ëæœ'xÎÂ}£ ©$*ø Í®ìïyù2G/óîwÍxòE^þ¹FµÑ ²¾±)®mÜQ¹GÜ_6oþ[ÆýOwECš:®?œúXÊñ’¾óÞHˆº`Tç ìš(á:˜NBS”)Rå» $­7ˆ÷ÚÊ€–™Š@oÒ~ظG ÈIÌÞ#DKww ¨ÎZ'5 ¸»O #tÙ¨/ _|r›¾Mñ«ÄH¹ÂJ_HüEkw“丰t$ø†ô¨J}!=éfø/h"Áåð¤h™ÍdÜ9É5œ*¬]ŠâA€Â½pkË1<<ˆöÑS¢g«ØâtrUt°x[yÅ\èÖ(%Æõçô./‹*ÁÜéÞ?¢ejø–;}"`FRV#xTxÖÓLÎâª1/gÃ#vv¸tz1m´ˆÇK q;F<@¢sÜ‹NíT*âXU€zžn0Aí@™ÍÌ)3— Šƒ¦—Âxß,ÑK¡!ƒ'öã«ó*ú®í–SAµíd§ÖÞ^@nZ ט4¡:zr'ÈaT˜qçþ“b— …¸·?a9s"W­˜µÉK% ?$…e]ˆ–Ýùç$\^ë$%ýöuæÍ Ûî=>P2uÉxvG$  Š(9 ÐøLÖ/yŸw·y‰ŠaÕ`ô”PŒ:=Qñ,w ‰žõK ؉P1ñnm”T4¥)ñòãÎþ‚‚ЄEùÇNˆ]e¤ÊëM-v9`I€ß·2¡Äö1û:VBT»‘š`µŽjwoj"j”ÔÜ¡¯“d =ÊT™O^ÓeEßÓ¼|›—7yy›á²Ï^Œë”õ+*š‘gv!óŠsåš;ƒ2´0«qÑ =?Üõãú‚ Q,_ˆÐY…dzõǼ{R%Þ“lû¦B2A`¾,‹ß6w 1F|ÐÊ?ËK*tbèPÞöR·³&©nóòy!é­¯Dë[G`2<.9õ-§Í Ï9ö‰M˜y.<[ƒÂî…ÄmŸ“¹Wý~uôì'Σ÷Ì ÃßÌ=ÌTKöBû}×9½¨”š’p«mïEýb óf’âËBB°<÷æž“{Wž¶ó3Ì÷>]p3Snò´( ÓûÍqHDÅ=Aœåƒ^¯‘MˆUÝðB™aã~“>èM;díµØìeM²vOrþ¤En1(Xóx5ÝQ­:æ´ÔvÉ…y2ξ!(gøÛŠ7)¦'ÌæfXæöß$¢(·X’GL(ŠíVp:o°ªªG Ùž‰i×#‘ž¤;¥¹ÿòõHm•èÐÝŒm…ë ù{ÎÆY‘Ki·¶mÛ¤×BÛ4èÐÏŠ€fEºà›³"’¢4ky5}W7<©>kï­°”¢ö×aæéÑYv(ò¯fÀåü”UÎÓc% `ßþôv¦-<£Mc O nñB_|õ°Á¯‘WÛ„'ù©™Â=W¾fjpÛ?Ö˪¾µ$ƒ;Î0LŠb¼˜èIÕ­mµ¬Z DÒ=†Œ—-æ§çi&ƹ°TçYj{‡^ZU#& éØí]ì¢éÀX,Ýþl‡€¿[è0{…ŠnB£ZýЉEfjÎMü3òÍHUË8}¡Ù&yÐNͲ¸BOÛÊ‘›g ŠòaNgÆ󮈿7QÊx«Ó—þ ÏÚ?Õ}bé#²î·'**ßÖTÔ…‘ $³ó`K”1‡PÇ}v(ÎÜ3¥E™§4“À½PK´nõiÙS™yJ#n C”Ïéý¦jw\§mÛC±Þ¤yÊ·ÐܧÀL`öŽf:-—û4„¡‡B„GG“dÂ8R÷^‘ΨzŽ!€™Üݺ„‰*#d j è¢ëQõ~ïÔÔ…ú<ƒOª‚éDz> «t\KyI³ë¼‹QÔb™‡O/³Ì×ÙnÚ=Ï˹lw1é@Ù¶!¬sÆÜËý›ˆâé„[ñ›^^‹zõr:âÔ\ÃoF‡ÐAb6rF#¾*Ìe/ܽöŽÛZµ“`ðÇ~J)†´Å—eW*â„i:Æ}6Ä™›Íwñ€é4$b Ý«ÂÚÇ FÀj@¡æì²uÊYbf»|¿f¶½1Q—ÃX³…åˆjâ¨30ÌNP±´ŽÁĉëht€Zƾ•VQÊ£Þ¹©á¸î÷ñÛ1ov²s1ÀK?”f¬`ÒŽ¤©~2‘ÉYi ö–°Ðœ˜ÕóWôË(x¶i»³EÂǹ{ÑÆ<¨€WuçZ': î*ûDIƒpËNT£Xû§÷Šž¹½{%¹B3EojÍ7bR.ºåPѸÍc%Š -þkq8Pµ-Ê1\1x=< t•£¤V«S‹ÄýÞðЬ”Õì0‡2W;ئA2m“mÕ¢™ZÕߤ6±D•"Dúå$ð2'§M“nÐVÌÊ-7ã©…šP¼ñ©Õi Òï¯QQ3ŒE?0v°Ù° —‘¥ìiÛÝQI5¤á0þç†Ã´RO5§U66ìÜ< ! Ëô#´óãî>…fÌ{[ ÷ÇÃl ÆG×mé×>¶8qÝÒÌ>15F ¥]mai20suàŸV/ GæâñªþDpvÞ¼W?ðÀÓÞÀôòŠ·M ÔÔÃ#{b½.­`f¼œ;J¾®K¾£x.ý¦h¦(Àüœ¯J$ÑÁ™Â?M&¶ Úhù`§Ç£iòüdÆ…6<±Ë3öã dœù–®p½xÐódz÷H?PÙÉ7ùAÊñøN#aC‚±ßH˜·¿ÈH˜²ÁoÙHذsÿ‘0E6×ïð3óÚ‡¼ª}H\~š÷!‹#aR}é‘0šœra¹h’s”~LÞƒ¹š_+I¿"¼ 1`5ìܧŠm"L!åÝñÁ¤Ÿµo¿Ò).ü=£&H‡ÖÙ<€š5Ä”ÔÜmŠkœþK³=À©ùà¦b5årh-Åuká7}鯢ÎSÿ ”Œj•¿Ï›"ÂBȪ&~(1XŸá+™1Û6ѯ%üÿ3fþ‘fÌuèêÁ?¦k ˆÅ’ã ˆ]Îèb{Í _ñü—£žÚ"„ë w«î` øm÷«ÿp#/endstream endobj 451 0 obj 3577 endobj 455 0 obj <> stream xœí[Y·~_äGô㬠¡yvbÙ ;¶6@+Ò’íj­ÃŽòëóÙÝ,ötÏÌά¡ûAÅ.ëüªÈùµ“Bu’þïÿ<¿>ùâ§Ð½|w"»—'¿ž¨ü]ÿÇùu÷Õ(Õ%‘¼ö¶;»:)_ªN/œ4]ÐFÈ`º³ë“ŸWg§RhiL «W§k)\p1êÕ%­K6þûìo hZŠIX4¨ž]€ÆSÐP&ZVÎÃäAâ‡:{6»àÛq–öøúìäÇ+¤ë~ÇÙ¾9Q1$,q«EpÝ5vUJ(7μ>yº(3/…B•ÀóÊÜÛÊÜy¾ªÃ§uø¼«ÃËqXäÖjÂZ¡¬MƒÜÞž®•Þ¥´zƒï¬1Á¦Õ‡¢cZ½/jIšÕ/46&ªW7l T¥NûÕ;š»Gð§#>5ìéâ1õZõ2ȼ–ä(µmv™-ñ&@õKÆëM!í]Cƒos3nÎWô›'ÛP»*³Ném, ¤g ÓDáœk 3+fj˜V+czÜ.ø¶Qb1Lé¢P‰Y£•1 „1‚&SkŒ_æ­1¥zcÌÃó:|5ç ¤´J£õö` L¦H¢“z0<ãì`mÑ@\É\| ût¢‹µNNøè»µ‚­W…‡[(J‰kº·etè-D%³hC§kc±&´Fô†¦¹ÁêE¦aá ¯Zψ×Ncmñýb Ì÷oëð}¾Ýîð’Z¿ÙïÜiùúhµs™å^Š×Jx…–z¯œQÕù/g½œ n×[h”0ÁÄaÇt¬„3«‰Š1äãÕþŽ­Û}œÐì,äØFE_VV2HU$T)RÀ¶±L— ‘·ìˆ`äMš= <ŸÌ)Œ‰)æe½l‡ –Ö§tJÜuÎÉ^IvAö­^dF¿è Çú¨3"ÊT|Ô¹ÞG¯òÆVz˜`ñR›‚ãe¦ÆEA…jçãæÔ$ P´"𕝓‚­µuúÙ)£'j6%Á(X§U±;ûîäìÑÏ«'§QÁ’ÚÄ܋Æ0p¦¡W>ý¼eÌiq¼ÌÌ—ŽÍDý®|©¢‚Ô:eˆn‘)*õayÉe¡¼98«j%´¼â56ü«ŸÔ8ò¤Îþµ¿«Ã¯ëðû¹´<çšÌF9€Mµ@tó¼ “FÞŸÌîüÏÊûß·F;m±©q/w.}ŽÎvØsFs­=ŸfC°"©ÌAêŒÍw/˜ûóLÏÂÏ?é fÁß+ó>yuήªE <$¬‹$Œ ©„`´Ð†™#˜˜>\UÈ|6Žóú[á)}¨áüYƒ)­ æãOÙÆ´NP2™/KP2³§Àl_£ÊP²Ó&>Æìõ€ñƒßN=TštIßÅèQ[dFCrZ††Û&[¸MN*³Ðô(,V0:ÞwïCùèÀwçUBd¦~GÀN6´;‚ÞeŠ0˰»Ý‘g_ÕáF»#Ïîßî ó¨¹vÇåvãËnÁ–ó˜NYQ£²‘j%iðרûUù÷yÃ>£Ìör.sW»e ½*”áùûÔlü(wðµ´gSËwaË3ø1¥ºN¶˜"¥I©¹Äßù&ŠLMüçã+H9Í×lþ5 “ ó$KÔ—Ôb§ß¬‚ ”YŸæèñvSh±Ü~*õÁèÔœ0çé:aÿÛÂ9›þFáŸg/ëp£p\|Â|:„²¶ˆåyÑŸD¯´(A²•‡b®è»„eD 8„°ŒÈ“†Ô‰#gH9‚…Q;?íÇé9Ù"‡H%ÿ€Ö1ìÌu¨,‚>ÅOØLdœ9 €¢ …‚ÐÊ@^ûïrèÃÃË}R0vÂ!2 B«ùëcqœhm±–~úMÕÍ-›îSœ¡êᦳ©þš ³µITªûW%Ú9­p)§¾gÆ™Cr_@’)|õ¹ïûÊÑî¨k‡‚¶3ݱa¬$’ìL>-ä1g¢6“3±ˆ³³…¹‡9Q ´<[M;ßTÂ7s…ÙLÂø{l¿جJ¬Ò4´É1¤â€²æ—»…‰Ó•Âù<ÙKôM¾…Ϧ]û¾œ‡ï+]Öìv:ŽK-­¨‰L1€Z†z#'M•Ã3Õt MW³Iëí®Ï˜¦·˜!䯂.&L–S3'|1)g7jØÛ “=ëóYÎæùm¬üaµk~T‡Ô7T*%Ñwß÷õ6vföƒCñj£5˘¾™ÙÀËYÁ½;T‰ò€Q®+͘™ónRÚÐÃT/©N£` HâLÄä~%!Œ¨æ.Òb§{1ûYRkÊÿ¦£ÚÒ[ßçÊ¿dÞ“î[¨õ â52¥äyIÉó#Ï¡¼åkXÊí31‚Öl]4V’”O½ì]ú ›x”ÏÚý`*F›ÐÙ\óûrùNdœ9ìò=ÉL>îò}?0µqùžt;ÈLóÖÀyµ¶÷Xë"ú{³µuo”:ÕC›Ö´çÉwJš¥RñmÙ¦:m¿‚¬Œ¡a¨oüe¶uHéKçÂ,½í ç|ß—å¼k«ÁòAé „nÛ6ùƽ›‹Þnô©à("ô­6BdË·z:hA¯>}3n¸RCåe©œ†T–ˆ ÔÍp­ý|z©•16nˆ…Ó¦á}äÛivôùNñò\ÞÛ»XÝž33ܼSÉ”/ Aª³oç6œïñ«Ž%w¾Ìí í!žàgZ^Éý‚¤›´‡‰²)né7ƒ¥/ ó‰3“Ÿ¨d·Æ÷£G*j 0=ô3GèÐEÙF=³Ûç““n¨?•bv¨é}¾B‚4¹Ë„D¢¸õ €ŽJ†~Á€Î0s8Ð!ÍîúáH 3š'ýê¨(pÝø{tS%Ô£›ÃTÐÍD@ݸ‡š?U”^DË‚Ç0sxðDõÙ¡›ñ¾òáhÇG% íÃÌÚñA$äCÃ7Ï5¡tÍ…ßÏ!|€ö.¼y€j°À„ºñ~æ5X =ºÏÞL¯[ÖV ­# 0žv‰½(/=9GQþxò?9£Q@endstream endobj 456 0 obj 3324 endobj 460 0 obj <> stream xœí\Is·Ιåñ*'ÒeÂØ—£í$vR®¸,3•ƒäEŠ”+$%“’—üút3ƒÆ6|ï‰L$Ç¥ñ ÐÓ{æÇ gbÃñßô÷ìúàÓ'nsywÀ7—?ˆøŸ›éÏÙõæó Ä&°`¥Õ›“‹ƒô¤Ø-™ö~ã¤fÒÈÍÉõÁÓû#˜ZymÜáYlëåá«Üû¦;àeî½ÈÍÓ<àö¾ÇžçÞ·¹ùCn^aSK¡ÔáyîåGÇFZf„:|v˜»Ï+ÚÓsdâçÕÄ©ù"7_W´§È€³.•wÝ^Bà 옖¦ øãÜ|vtt,$çL›–ƒyé4ÝËî;“ÇÞäæ'Kóû“¿„À” bk1cŒØœœƒükƉ¤wffØ™q©93NÉmwÙ¥â4Sq±7ã"¿´Ûœ|}pòñSJíMõt£3—]ŽÝöÞWúô‰ñÔrµ`^I0Þ(ª¸çÚ¡bsf¹‘>^cÛå¥Ks”Öo3ÜÍs\e‘ˆÓ}»ç]âK6 !˜R!)˜¶“‚}`ìߨ” ó$+š'ƒ‹R;±”4O»Ü­Xj-ÖÿFMö®Ëâ| ‹v4Ù‡²Ócg¸`:ÐÉjÍL“ÝïXqq¼Ò Bú$Å$ð¦h+c´…¶fŽ·ÑöCÕÀߣ힌{Ähû{ˆÝ6Ä.Zõ±ë÷û[±1É3š?D´ýô‰ TÙ€†I‡Ž80k¬JþST×  q ¥$7øÝ:( h+B°H´­÷hƒ¦ FrBÆY¼1\C[8aT(Æ ì´…×(;®ƒšHemáäæXÆÍœ'œÀó’ƒÑ;ˆFhWÎøÈ¤Ôí»&fìbbßåèÿEæÜ7¹÷¤;à«¥×øóÉÁ·(Ûü|À7_¹~éF€\6×У дô\|·+DÖZ0ƒ^LÅi&®ŽÒ4¹‰ÍÏ+kí'7Dá“>ñJ‡JÁǸ’~æ&(ƒ`Üš’p•r ³o“p”V"é‚Ýâ*é‚R^8Ÿ`Ô ¬ô#"׫4Ü8éæv|ô‡[æ­)f¯T‡c#Ë&ºµgGà9Œ¡xì²":i˜åŽÛd S›ŽyKæ™BEŸ)‘6Y”sÀY_¹2ÞÄÕYK†ø ÃTØC±j“ !ŸmòH‘ažÃBe¡zôÄ@Þࣞ‰Š%Tq?ª”e+¬>]¨*ñ×Ðä°„ä2ŇI³© F^+ ¢d€‡hnaùW]k¾N¯ì .&Ñp—hEžøYJ³·:éÁ2*)9½ÔÒ<ËM"%¾ôn%¥Å21K™%ÍJA)k«:o"^ëÒËëV[ñ>:aÏ$U­@ # ýäÑBËq’ŽuàƒF4~D„3ÏJÃP\PÐwß—¹—ÎJ03Ä{àö#%.ìjtÂï,uˆï99[åÑÙâ’ÜL£S¿>Bõ’Æ0Här–1ùkëÍ8V_Î,=‡2‡s© NNrŠZN˜sš{_“`ö2½øV¹›®IÙÀ¤Sšß¥ÄY_÷½ÛDĵ™t 4¼‹îÓ!´™äá÷…•ÑU 1¥^Rä)­õðŽTßQÌ®l¶kSøÅ’¨èƒZU%˜“º ôÐíX,‰‚áòàEßs‚ ÜÍw©·šh^‹] å°3ój}ÚW‚6òÐq÷>ø ¤D¸Ým%jÁCe{óÌ)¯ "¼œ"î÷tx ƒa}±}ºQ ¿DÀËnºG’@êî“îA–byN÷X^;$³R ~ ž–2úgä¼: JÌÙÎà]D˜™W €Ebd£F¶×ÞqdZƒø¥¸­’6瓾 ¹IG¬¤®¦ûÀ=îý=÷Üü:[ó׫t‚†Ú %ÍôKwIºúú&Õc`‹û³ö²ë>¨ëÞ»ߦùL·Êˆœ!^à& Aþ›˜ðdÎ~Q÷A\dî>HVçUäž'IáU¦¥¯ÂëÿC&j¸4ÿ>DðSŒTú'­`^·:—¦î$5Ò@ó»3¢‹#LIµkb-bôj…<Ö·jÍ´·ÿ-³†´ŠþŬŠÁKYSðˆ £ƒ1¨ž{«Xecä0ð madÄ$©œÛs |f‚G çù@©¾UTjä{·ÀœôEÀ­£.ŽN8'´.&¾IÏ àPEkìcb^1Œj¾")/‡Á”Ÿ’üÁ²a­pk:ÔZÓÁ*fûtXr~å>z}ß¾ÍÙ8{HW˜´®€Oúx-ñÐÝTÔBNù&üø!7ïróM·IvDŸçÞ§¹™á“ÃïW‘¯*rj2Æ'뙀Y!+»$ihÈ9‚Ø|šì2oãÊ"nó×q>rÑÀ‰Q#\ƒR8’[Ç™Õj}'¥!h›ªëÔñÀ„мØ:Jº£Ðl œ'”!%¤‰þÁ@€œü»ñQ Ñ.³yè¦4v-ea ¸: WT­ÇBï&£™Ádì‰-á‘øäó¦rm’s©ÖkÅ/‚¥K1Ð$Róm*8U‹‡ëSkü /àR/ÓzäõPêƒoR|+cwÁ4À‰‹P–¬ÛõØ Óhœ¸âj”±wÀ{|m§},Rð>NhÐ/Œž¥æ@+IEܯJ¢•ò\¬,šLðù9k§è”òÐ~Ýr+áðÄs¤ÔÖ`Õª×Þ1'k¯ÿSv¾Íé{½s~p¶%¸%ÕùÒë!+ÓwÕù,Ј9LÿÊ}˜ ìNøÕO…ÞŹM§¶rÁ^‰zYYhÑ´†å¢V4ìF ŠçEPå ñÖ­Týqi˜n›T%.ÂLLÒCσ»í0779ý¿çtÅ»‚ñ?}D¸HäkÝl9Òr9£½ÚŒò[&ZžÅêfoŽ.—‚†$™kS‘I2¾Q5áç31_F¢• OQ‚‰~„Õâ¶+Ç£*ºPFJÃ:Ä_ëÄ»Cü½}Íã\n³¯¿ØÑ?]±É˜,ÔlaðÆ1UÐ1çoá´ ÍÆèÆO;a&0WF(“zË INÕ™ÑòÜÀèïÒt†Ë*ÅÀ^îê÷­¬Arg[ºVÀüŠòØOLª¿ÈÍoró¤;à«Åäc?Z*<ù£ŒEJ7×Ѓvl—žÝÏúÀ ÀÐ8S07¹ŽT—Q·UEUHȘkUE¼/ëÐU—1¯s³9GDʘ­îŸÛÈá³ç3²|©Ž©ã§¹>U™vFí¥5âø(Và 5¡zÀ`² jÄt¥2‹ÞbNŸTÇJpL5ðX¦ ºã¸¬¬¶³Ñ„±Ô¹êÜT…Ë…lœ  m\Ð%—PVYdŸ÷fÀ»î¿Ì†ïKÕ 7•F{µ4"‘ØÓ`kÀ:.‹'G˜I oŠE“{«.ùV?óœŽW@Ö`ª·×>mSz”û´*„Xnl1÷x'™¢ä8¡0ÍáœÔ=Tmz¦®Å¼xòpu±•º½ª3À ÒnÁãqllVønòP)øbÚ²È)5äMocN¸œƒRÖæ^SÚǤäágè± f[°òœ8êkJ-UP¸EEYôk<æ›gž6l³îÒúèU׊hä%sïfDSê—è/1çrþ¼¦Sõ”]\a%à…« )ÜÀÇŒ´¿9dðòveRâ+¿®]¡ÆÒPV¶œ„6ç9o{Zv•X \/m´‡**:¿F·Tñ Žù¼ A‚¯só_m‚bLúÄ"!AQÊâ ï¥g÷f&ǘÕ!%(}4䢠¨©s¡ÐóŽ"¯Œ¨ÕŠv–Ó(Ѿ;yÞ4FÙ3ÅÑ…ÈŽªã/eÆç½ š;P¯¥×Ê"tR°Ý‡…lê|n;L(Dô£0CªÏÔö*hus—¦¦dF›¿½SnåIºù…zO¶–âQ¿ãæ¯Òš9ëF*¶Õ1ÄÈuõ>l 'ùÛáÉú)ti”L>»I&!jnÉààV ÖÔX7Þêzçð*ìŒtÌM†’^£´“ñ›g^RÒ²Rc¤pYõ„Ù+!Fa‹N|Ú~ÕÚèSMY!¿I+Û`¶JlâPO&’ãtðp.3ó¾etLdx»*±ÌçfŒª4#0£/Sƒ…×[亟”Ä7Ž…„Wwzbô©ïô$ï¤;ૺ‹±2 põ~#“ ¸†oäDsÏî±f€7Œ30Î-½ÈSÇÎþuÛý.òtwNãnÆèLSB—Ê‚öÇ$Ü).§P\ïg5‘µ< “*;T¼uüÖ ¼5æBò¬#ð8#•<”Xö¾ƒä±H1²+ùË!7 ^ææç¹I.\’]w²On*¬_D€¼XúŒI³œw¤êXIHvLUü5Ž2\ǯ¸ üë„Â6÷D¦ ¬ÄY¬<,OÔðd£@DÇ0v³å…Wñ‚®ã+úߺ{‚¶ƒ.ðÀ¹SçUÝg+ò ÜÖ]˜¿“¯ÍCº%äñ2<‚ßS*ÐPXqûX3ˆÀ@úsÏ>5ƒFÆà•ÄÿÔïq„ÍÇ¿š›HW(5ŦF®Ž4çz‚‡(|©ä }9‚>™² -dy*-æ ÊÒ¨:ÐìxB↛¼UôpW_…õ醛3p%׸¯Öä—ž=k78g¼°{ÿ}×úJ`£.õÉ›½î»‚£CŒ°…t²/ëZªÄˆGÈPœp¸ÙY/]¼hô¬‡ ôuYÿ˜–!½Ö—q*n$ æŒSél•qô!•Ë;PG‚݈·ÔÈù!ôÐÔ…VÈ@¬ !éÖz÷Ý\ôÁVbz£ƒàul3ëê›…9Âó䮬ênÓ-ÄÖï÷qëëxžãG:‡*D†[ï—Wg‘Ä'_îk €¼Ê³Ç'­"nöjDPNV_Øe$„Wwév’fÀÌéJPsÖn>nûIÉ· æ^í)¡ú‘PJ.üB–' éI×SG';tÇM ‚!ÄŒ·"x÷¼Yï¾BsãZCÚ]§K² 53Ø«©¥Âbâßòsà±µ‘ÒâÇ26øÅfíSï½Á2û…ÄpG3·üØÃ¢d§ûÁgÒÝ1D6üœN¢ãITR)ƒ°‡äƒ%ô«#é<ék$äƒ%èÄAr6_· R‰y>ç½ ;}­„ÎÑÿ.J7ðÏ_.‰€‹ô•z ?«ER¯¹gÿÔ f`N©÷%õ²x§ó¥‘*ÄÔ•fÔ22ü¦ôoX”+ErlrUâx©ÛùõcÂ0$ˆÒÜž³ùÀÑp- »T½È;!Ùx°V2£ÍüìÞçM óõJT5Ó¨(: Ô¼>õÙG$Ëëx±5¨2Û¢^îlð£\¶GˆIç[7±ýëDŽôeÌ ”¬žÓT¯UãÉK%Yò¿y6J÷è´@…J7_jðô±Dpf>œO ¤ múÝréîÞf÷)òÉ£ôÌÎ[üÔ“0x‡ ~ LOšÌ={xfOœBѺ×3ïW™UR²Oþà‡ÄðlHX‚\˜¿&ËõzùÔWì&_£ ›bªÂÛôƒaM¬­6“¨¾r›c'¡@°’(KRß|‚j‘Ò·ÿá°OMendstream endobj 461 0 obj 4454 endobj 465 0 obj <> stream xœåËr·1gV>b+'Òå…Æû;)»RNÛLå ù@‘"¥²IÉ¢dGùút3ƒ³/.mÙ)b1˜F¿_˜WR¨•¤Ãÿ—·'Ÿ|ãW7÷'rusòã‰J?®†ÿ.oWŸžã­VQDάίOò“j¥ Âʃ`au~{òäôån­ƒ±þô. £ púölmq®<ý¶,ø¬,øªÌžw|1Í~wþ·“¿žŸ|}b„´«ŸðÏOT´øWÅkW·8¬0qšùáäÛ}>Øï¢÷¦wICJëÓeöÓ2|W†/Ëð‡2¼*;áÊ §ÃéÓÓ²âÛ2ü¬,þªÌž7 8Þh8á ¢ÖBE†,ˆÎ÷\á¸XãêÏŠ%\e®Pæô£³µ Þ ío|lš}ÍY¬~,¯ý8ÍzÐŠŽ¿ÖV(«ãj­jÕêü ½,¾*û²Ë}ÃÉHéfaœœÛ™"ŒV^!YnñO„ÑùÏý‰‹`ÓnÂEŸ‰ñy«X†Ê‘.2ÑE”ÍéͶ®§‹sÂjçºÿÑÅŨ…±Œ4ãÌáÔÁžLtUÅíÙZ. ‘« ¦@îË™Þ6ÊÃg{#߸M(\p^ÄÀ‘?Ì<ùÏÝäg“$ñ{Ñ /’äµOÏjB(4Y^+„èp_,ÎŒ$iömwÁ‹2{]†3ݺá±g]´´æ+ŸäªÌ&ó…ØUº2_W ìù¹w ^fvñyW§0^f .»PÞwg w°lðGeˆt´ ÝË:±3³Ç[|\q=JºvQ5rØ"ŽQ$¿poıy‡½7ꂌ8 » nó±'â&cþåÉùGO8´wÍÓ3ž¹ébìMï4ô¦O¾A‡é£DЀª%‘*½MJ㉱×õ¡ÔÝ·4¶VðyZ7¹(¬ôãGRô=4­:zæýüÆÐ…:YkÇM6pD‹¥¥³»(EÛ©\hü–c`tí­TÀðÍZ”çÍÞT§®Ñ‘£¡´Zµ íœJ&iMÖ’\íj )c‘|†”-7Q ªÚ`ãXyX­uÄ(#»)ù ‘…=ù¨È%Þ†„‚ÔFº CÏX52ÌñâO‚ VÖIôC :ÆŒzš9$èDÉ; }ÝÖ “[í4<8謧¦†E¿ÄŽDú+!1ÓSklú.ÓC­2ù ²“Ô™üZåC¦ù°i¦¥C¶;ý#£äyµõàÇqzòžV£7¨êÍ&ÐÒŠ UÂ×öò ’[«Ç^²7ò­3O9éѧ½dc¾æÛgx±öp4¯ Ë÷ˆÖP=ÉÀâˆ;äExdeIúY/=Eaà0½^‡È'[­áKǼÊH&—/yUÞò,ía0^_ îÉšè+1ô3¢¼f,ñ"?ç¦[±[ hRmQoTmhÄÐE˜ƒŸO5¨6FÕ&cèª6åдK3J㑲bËÂô•zÒ*•êhe:2ÛÉvÉ”Â@ 'ÍvbùUÈD.ÎòsQM̧qK •t1þ¿£÷; ‡*+v‰‡²Ó|ô&FIbA1§”­ZREó³šèmW]FÛQ—Iζ¨Ë4_  qFDpÕŠ{š¡‘Qßs`™è\ge T¢ÁVð#pq•_ŦgÆO“ôü¹üò‹¾¾gP38®ólpvoѧçÐ^â¹"'=ÉšCÚqGýF;:ŠïÖóícÅÓwgÄWp•Ò%V/\Ì9úû„RpžƒÑÕ%úëXG&” 4üª Ï» ¾˜tM©Œa`…Zmeœ#ã•›þ< ,ÑI*WÈÒIJÛÃ’ÖŸ›…%i– Û°dÙËÃ0ÀÉ iH/ ¶tEOÒìZ‹  2x_O¾fó}†Zòz6{C*H– ²¨„U£w‰.Æ­‡ßuq ²D3 {O;Œ„B¥Ü§-îóï æÆP¦ÈrÕC³>Ä a K¯Î€²òüT,g…é%½{ÅÐ! š’ɼVTЩýïôZ @âB`D±W²›=£X”„*ÙÆX‘%>ÛÜú¦ˆdÉxƒŠ$L¼Ú(z”€ ¾Ó¹{t tœÜVÂøW~Y¼/7‰t¦ÄÜ‚–gdìæYw@?FópÔöí—vÖ%Ñz“÷³aÑý`^Î]^Ñþ—±:÷á+Ù™DE"ZË»{9J¡™ ¶—3Á2„.Îã¹ùà(ì¿~¢ÐQ1ƶüã<3ç¹¼5G肾çVƒ;ñK<š‚›ßêtÅš.ﶨíKµAãê~)±Ö‘üÏI¬Jž”v¶ç/˜èä‚]2ykPŸhcaÈÉh\%dL$9f²ç)ì%þûaØR„Íù­ÒÞ»¹ãÓ‘hD“©8¾uÆœ2¦u…é9å] kšn"è†MÒãRú…å"y€T{ŸŸy´0ÞP Œ-—ãv”åß=Œ©RûÅ|½­F´COQ†EVw¾ âú©u¦¡»®e'ƒªO’"ƒ—ex_†o»C–±xVfŸ”¡,Ãï¦a·X€GUÅ5© 5ÊV7i¬1<¤I]ßÇI›‘†u2¤á“²`Ÿ}gª,ááM)€¯Ç–)8UeíwyBIÊÆx–Úq^ gôæ:×܆lÊ 0€8ªÂXO©:¬ž+J^ü™•p®2`Q©&!ý`ƒõ{HöÑ(\7¦i· ëˆé¢+)RPÕ=cã,4˜€J›´Å’O²¹|Axåö|ž¨Ù˜¥—S]¯Þ"Å%)C F!æõ ~SYÛgŒxðÍÀY:_ŸÓ›c/  Çlô…h‰·z Iw“m}7£ƒL´iÖtáêjzª} oªKU]Ÿã©Û™¨ãBP‘'ÿù¶ ¿¯BŠ\Ä æŽze¤"GƒŠÚyÄÜ4³w,í*/©ŽqÃ=úix½1ÈQ¨(ƒç¥_ÐEÙ9y§q‹(ÛfÌNjÉ]RÂŽe¸+æMµ nÛ¤ß$ñaå¿ý§ød‹Y2Î[ -ÜŽq`è­&`À·ÌåWe"5Vòî)® š(dZŸ_jý?hžIbKý3ýh|ï6¿qÜ€1]³®T~ü6šÚP'¬i©«° rs!,ô”2JÇ“RgºÒ…(¸JG§#Qqj(¦Øß)ÄÇ"êòUEµ ƒñÓ:®†E#Æ;/炜@âKž•̺?àm~³‹v3, §ºÌºEŸfÞ×½PúÏ “ƒfT8zs² èúÜ O½ÉßdÂ8q@ºìΦ];jÀrkr7Ũp<Õ$ª,U’X—-窓2^“£  ðÖDEÖ¹hÚÇ8- ¡Wôþ½™<*ê²E¸_ƘH•P½iC>ŽºöIIÔcŒj]Zwd-\®õ/ޱ”¸åcn–ò©|ü~»¤¶ôêÍ|¶NkFZ3¶ØlÌPÃIÎhYã–Ý8ÜK]ZÛt<HÔLèh£óÕÂÙ‘ ¦“mZOÓÝB *L%§’Ðu±µÙJKi¤‹"®xÚiæmPå„ƈfomÌ@¾ífK™6~Ûhã†4Î •/.¦œàdËŠ]|Ÿå•bë;6ÍîñëCƒéÔ”çׇ¶˜T €Š® 9DiÐü.Ö/ò=Šñ#€1›àß &ÿn ¤Ùnrg7P÷#òt‰û‘¾;‚± 3xðƒÑƒÐ5vvûèD¾vA÷º½Ç‡«BîC>:ѽ#HkcìPÖ´ÌÇ TD @ôÑ¥xiÒýzHzjœ9ä~= fÓ¨-÷ëÇ«ÁÇÌþ¶w sÕÜr©þ’#`Q ÇSç›ôð;»I¾—°{“ãt#ÛF‚ߨEgÑvL%‹£ÊH÷^ø#\ §KÌTÓ?ò%ftkS—]bvñ7r‰ÙIxØ%fÍî6õs°RZéñÃY„W5Ív‡9æ„ÚáÃY\IàµÈM‰ª¢”.áã]]Nî»Úùî²r"n¼cÊ3šE€\kjÚÅ f:©ñµq]™w@©45ñwpÊj‘oÚÓÑ­öS­øñïT+‹~ÑñîTÓ7:=0tsSû=îTS+.¨ö®çcߪÖtãGOvhÇ[Õ”Л/룋b¯<çÉ8™9 çMÒ³Û<»U­s2§Ê˜\çYç©2A(•Ù7½Ò¤Æ»Ì7d¼é‡T¤Þù2óc~ä€N o¤žç÷ò}O–™ëGîT’Sµ¯“ª°ÏËÕfYßê]²/k•µ=–^ÆÕ&´Yç~S¶k©õ¡“ÓK™ÁUé«Kµ!VSâ«)µ†8à‚µDºL\¤.­€ˆº;Ä ¦:?Q °¦íqˆ€ï«+· }(©k!mRm}ŸgM˜õ©MrT6æÐ9—:4êpܼ[* hJ¢ ûSœ«¤#> ûgSgê4s€ý³¨ÖlÚSÐWgX‡Akÿ–>¾8 ÿÞz^Ÿm²•eÒN¸jï‚ Ùº-̲-Ü«àí€ýÜfVr“ Û½)Š[¹Ôç¤d{‰ióåL#Þñ€–¥åðê£1ÈÊ¢#“ô¯*Bï6´E3%¡êôOŒÂ‘TêÒ­Ì%cÚë Sóž@*^›ùç†Í7¨ƒd©ÃÆvãMî«JBæA|}ÒA¯Ðˆ‹˜n9kú®#zÊãÌâëè*$í€Q£{˜øþ³+¾³}ñR¯4nô{rçŸ]˜_÷þòkˆ¢¬ÉY$³q­’_$y%³3TZ:‘àë“ÿÙÛ®endstream endobj 466 0 obj 4360 endobj 470 0 obj <> stream xœí[IoǾò#æ84•Ú—£³ B€Ä°Å[œI-$@i’–àŸïUuw½^¦93ZRlè B±úÕ«·oóóR µ”ô¯ùÿâfñçÃòãÃB.?.~^¨üÇeóßÅÍò/§8 Ó2‰äµ·ËÓ‹ò¥Z*å…‹~´2˜åéÍâ?«OÖR­“ò«÷'R£¥S«GÚVA9“V¿ÐÚG¯\XÝÓÚøÕjs²6Ñ ¯ÃêÓ‰'Ú¯Îòw1údV×trZ† vÍmÛä¤2ÿ=ý'07ª‡9Ö*èåš0Ç'ËÓw@ù-¾W¸ þš—ÉG½ú¾îžNxÓíÒU?]ü°°Bºågò å£Ã–Aú ¬YÞ,ðz/lìv®o·|€vKð „w¦p¶Ðû¬âv_q»¨»—“ÈßÔÝ»º{]—´´Z™†ª‡‘"Vk`•).*!½K Ì x  Ó­“IšÂ0Œ5Šß”mq%˜g]ô¥¤e³ºÊb\€\|À¶^Îö`_2 ïË-ˆPQ¹Ås¬1Á¦üt‰£Zj¼½bu].Š*Ä­¯ÈЕÐR­>Vˆì=gu—þ,X™zàÎ&a0È<ènåÓÄwÆÑ{u€X'Û$ÓÑÏè0zJúbži»¨¥ñং•ÒxBÖì ‘Äg=×+(žÎÙPÄæüd­#LHè!SÖ.Ù˜M‚1"8ƒØ¢•ù}±å"ÿ–¯?dÒXéuæ59¾þµAG+B½;ÎEûŠ ÿ”Sõ5q03r༣V¶¢•ÅšÖqÐÍ‹ ´}¹õLQá¾_k+€ x¢a–ˆ9™'‘0‚m›³·nzÛvÛSæ”JvVâxvÔõ°NKïƒmȸ‚â¬nçã•X“Ž`]óò)ëºúÜíNrÉ;ÒxÒœ(R”©%eu¿ÅŒÖj¶o+ÇîØvã!!þ±kÃÉ'<§v8NãaZ£)X\ÕÇoøÛÖ²´=&Ç“ƒsK¯Zgwšà`mêvàx‚ñq¦€/{Šá…]—u÷`†ƒ>NxW?­ê‰·Àåð÷u÷tòæ7=ñÉ´Ò°—B%F+<«g `VRTßU$¶‘ª‚²«W'kŸ‚ƒP4žüÌ ’T …óò®.ïëîën™Ý E˜›qI»¨×ÜÖå¦|/˜û9dÞòÙÎ 1ÚísÐC0Þ8R ØîìÏ@Ñe˜Â{WXòïŠÆ/\8×ÎJøk‹ÀºÛ}?äC%sYnêò|â{Š©}øø¯‡ø1@+ '~³ó âÇ ?Aûl 5é@^J½/QâMxò-Ü»®¹däY…{^w:é³OÁœÎ”Á£JXËÊ*M æÛ¤´¡É<¼t:RÂF‘±3± dûJé€ØÂ˜±p­´L½î|ù>µÀRÃB-ë¿MjÁ!&L-ùÓ‰2p=guÊoÏÉßùVŠÂg(¸¿ãËß:8x<—8°iy¸ï½ºOþA,;,¤%uÏu®‰Åÿ–‰Ÿ ’»-¥¨’˜™Rò¼âÅão£ób?ÃBú&ÒG ¯§ê3]¡Ë$dkN>SKcR–Lš„{R` óÞ¿@ú³„ü ÅÑâJ·sHDoqfB+÷tÇÜÎóBú¾Ü ŠeðMJv*Ç*=¬*Å‹¼XÀ ¼D@5WBÄÿ4_ºÈŸ>”ãó…³¶t0%A B_ Žž!45˜y…»ž!€&Pۜ駬Æ»Ú Ì1Ôê Á’Æ0PbÚ5ó8¿0„ß‚/£Šˆ)…-Ö¢”Úv×Èù**Â>«NûT3”üh_IØ8¬N¹Š© ‚öƒ,àÀ8°,ÕËgUçºîŽj,yÉ»çO©Ž6õºqcA§è ¼©ƒ;x.у„ßÀ™M€ú%Ò má;["ÙÑ4~qƒ˜¸à»šŒMc„œN°ÂÃýÀn”YPËÌMHîzÙjêÎÆô©œ¹•ê…è3Áæíîi—|SÀiäÇ0ñ ÂÞƒe ö"ÃiwÅUt[È÷o¹NG|Ÿ¹@QLWŠ àÉ!—ÒøZ¥¦RôíÌFYäÝÇ®÷4Qˆl ªÝ9| Êt²O·p4õT½ÇAƒäñ‡£¨ «9Ȳ Þ‡£tBpáü\\ S ºá è7]¤z¡Z‡¿Ø½­½7LŽ]1ë¬Ârõæþý±¼ÌùmAòqÒÐu1Î!•©„?(«fbâ‰`©±ì´ž–ª¯‡*j»ó–4êØX9-Ùc+ËÇÿñV  `Õí/2€…à6€Õî>€e¬Œ_½¶âÏF{vÐ*uþoýû´B…vlЪÝ9|Ð Â0iµoËä´ô…fª ÜÏÈ¢£—4Wr8Yù„î“e·©ªòÔWT dÊ÷•ÛŸh{ÓT•E|Vªœî«ìÁJ–:$ å¢Î…ÝÑu;tŽ`ÄL€XÕ?1Ù£´$Õß2€qUßÄz‰¬›ÎxÆÂÌA©üP e.Ǫ/<—Þ:£‰4 öÇ,Î$§·ÎâD¸êÓÓ%ýYœ£êÅÌ,Î709¢ ÄÊüÎ&G¤ˆ±ÖÆ::‚$À#ý‡™.³àšJtíÆ!JV:@…ÉýGöŽ>G%>üTÉày#"чÚqD„Ž{?[?˜ë½PäOñÁñ‡D,´BÙ1ÜX›Gwf8Pk£Ïð玈Xè¶ê˜xÜ‘©¦"Ž5!bµ@è¼Lt;¢l;BHO Ášêì6 ,óKƒÀZÁ užg·<‚1sâNå†ü—Ée3ê%jS%«©ÿǶFgbË ™b×Jmë ðÖ"—µ¦6Œ/tÐ0æ‡ï§ÑçTå$àµÂAïn²ÁÅ-`¹Éëa›y< ÁN¦«äÉøwuyU—7uù©.YçÎáO ¨GU畞j ŠÆàþh ŒJÇæ‡m¡Ý9¼ ¨®ŽPtÊ»»»}√š }f§€ÒWœ NAˆ1G‚H?Fž ^¦¶+„Þó~­#ä¿‚!"ªÓjæ7ÑDÓ”†3ÕÙïµ6…6Qº©Ê{†Ýoä¬ðP$‘ã²|.î7pq]ÿçÕý,šò;U•|¢*¯A Z•·³Uyš]ˆ¥,_ß3ËòÊACaµœ©­úÆz¿é–!úañ?ÐTçendstream endobj 471 0 obj 3093 endobj 475 0 obj <> stream xœåËr·1•ã–ù€=.-4ÞUÉ!±ó¨TÇo¶$õbBR´HÉV¾>ÝÀÌ 1ƒY.w—’)—!L£Ñïn4øÃR µ”ô¯ûyv¹øÝ7~ùòf!—/?,TúÏe÷ãìrù§c\qEtàÌòøÅ"©–J)á–´^//߮‘ÆjmÍJ­¥ðÑ‚ô+ÛžvÃô÷ÇÇm´âÛh+¤’€[?CÐOq±ÒÁX¿ú" £ °úªÌ7üm˜¥=þ|¼øza„´ËñÀ](œP†ÂÛååBå…µÃÌÅâé,Yj|²…Úš0'¹7¹³2ûª ÿQÜ–áE>/Ã×€Òzõb˜ÍÔ¬™¶vV(Õr­‚ˆAÆžªÈœÂ}ß­•.³ºbÓ¯ ó®Ùô MÔ>„Õ9cj7o¥Ò-®‚™ºFî :cq^Å¿¶`„s@æ«h‘ÿaéðœ"jâx fvàx (2 ¦@ªßÅðÌ®Wevg†#}¬p:¬¾[•OËð‹²ø«2{?Zë@‡ö…7~6Ì^7)Ì>{Rž¤SYQY@XäaÓ³²þu^•oF‹xJ7aÞüÙÖ Ñ`¼@íqÖF$#2DƒÂèaæþA"ØSxc2KþUÐx[†—Gk‹¿Úá|WÎt1"PžnC|ç„ÕÎgâ[«~nÄ7¨hHñ»™=ˆoPÑB¼ƒøÙ)‰V¶:ôyþ¯ï9§JmE&,yd|Ð2])A7³4ú7}—4øpÑä£Ê?]>¨"çC7³0H‘þ.}è³îLÜß”3]~ºÆHZ/Àsâw3{_Z"~%¸îT‚ïŽjF(ŒÒ4"¼Æø\G#nJ˜5áIš½m.`Ñö‹2œD>»heìó±Ü³¡H)]ÅlÏF¸çïÞ6 Óv½×M‚³ìÌBµýÃáŠö€­þ¼bT'ö^1;óI“˜µ&ƈìOù Wı±e@&x9/žãCåÌCz¦&F‰ ‡t4í&¥ñÄ&ÊŠ¤…I1$¢‡1ªoe?. +}ã!ƒ(JÎuÁ>Vr¡‰Á¼3ö@6 DŒõƒÇCÊ…_E8²)5þQR´Vé‡ E*•6î—"€*>”J¯½•J˜Èµ±Sº&ÿ¨„§0ŒŸKxÎی헉öQ[ÓZƒ´Š—áÐÿâXË£#ÔpìBPUÕŽWöni¬<@ª5¬ØÕMÔ¦ªŽ(q¬MÐ 8º \Ú¢´ð.R~Ÿû–Iq˜}ÖÛŒ1?tm÷c1mçLF®‰”j2Íu€rpƒÄ~65¬­ϹÊϸf`jÖ0+p•°ÁðÙsäÁ M²Öô“²ö4Ë‹Wª¾z$~O¸&e4s"Í¿äãu‚Žê±'Ñhu8mŽLGÙÄ%)Ì“áÈÆùÌ)˜êœ%a³g$Å1ìÁ%ãZtvDRF:`•âBÜ» „¢PÈ™—Í-ØÚk¶Ç«r¨¬e˜F+«F1$#Nm‡µ‘óD˜Óø;ìM‚Só zKEêdÍ Py — §{¦ù€ÿN!M2´ù›è–ND¯ƒMÆ*@ª —qNBŸž“(I©:isÑ9‡éù0Ë\•§eöÍ0ì05|Wº Õ~°!¿J±ºÛpøb'í¿î«t @\c·øj lÝr„”Ò§ züŸ \è Õ€Äqv¨Jr¼Çä~¥Ä/A`\¯Çí—þvä§#fP–$.*80Í{g- f'Ãêï7z[¤JR7[R¹×(¶Ô++yçzÀ·Ü¯'úFjÀW ò™yCA!Lj›ú.¹F«ÝØÒ"ê”&ÿ ⺶÷7y2½¥V}t—¾T®qÞ -n;åU|òE‡E°›ö ¤-¢³[DÀ¤¦öÿ[{ʈjã¹`Üê/G¸ôu”‹4ÝÕ›Ú~3ó—mž5*ùk4–ÁúYï•9 óu-©ÈcŽOÄVm[ôKF¥І¥L‘ö8ä #à´ŽØ™ 7Šf¤+»ü†`é@ÛÖ ¨íGí8§+y‡¢êV¿8ŠÑˆÃƒ ;dõ³I:'õBºš-£2UûúiØ1ôõ1H[.VÀHŒ¶,lÒPҖÆ+S¥ —G#)üê´d £¸ˆä]êÈ6ôÒšC̳ùªÑ )¢Sv6øàZÉãÈÚuŠ’bßæY;¨3}h‚£bÕ@©#]@™mUÛ ©¥ ýêß" 1 o°¦:Xö("ÇY+Í–v µR |¢Rg̽šä´Úk{(âm²…Š Y°‡-”VH<#C•)ØÁš¥%ŒuwÐB÷ݯa÷ú†Æ£>ù‘Ƨ£Ó 9ªðL4^QDÒ0åå1Êm'+*lToïúìQ‘ >qJ¹Ùzë‚I/O®f¬ÁY[¶KzóÎh3fC%Ä·9{‹}.¡„ÄžME ®Ö >`Ô)'ßXW ¤ÓÙÏÚHêI¸’êÅÛq©ŒGD¥ZÍ*ç§Ÿ”¶ªÓ§dÙdÚ µy¤ó*©º(IFã*AçSe*ótœóh¼¦ÉdžŸëeSY:O—1žq_S Dc,ÕÔщГJ§6éÝÍrÊ4 †J¸ÍÓZf8{2V¡±$×¥æ2þó Á†B“6?ÍMàyV0´Ìd:Á€2êE(§!Vª–ÅÍALj´ôyÞÎÅ €Á2ÄÂÎ~ bÇG¤¦ÅÉèCÇ:5û)ã#c¨ÄŸëÊ5.UÏó>6Ú±ÃÇ}œËEVÊÄa&ÊË¢6W¦Ð¶ÍU¦v¬ñ4jÊÃrQÀ7ï¹€Z}¹ŒH¸uzòMÒ&€˜ê1ÃE¿­Ê÷ù‹]t—‚IáË»#G]ù¹–I^7¸¨»BN¾åâ0Ú÷iÍÔ¦¿ñRÖ¡q?øu•CšH¿ÔÆþ]WyÜÊ„af‡ë*®Þ&˜(!x§0nŒÚñ¶ s’ÆeÕóÍò–‰-çqi·ÈÔTÑÞ ªÒÒ/ïçb£!2Æ%Ê©ÃÕ¾ ·O½{úIm§Ô½¬ª2ò8̘ñMÅÇ ¢¡Ž&БðJO ™ª~f—'€”M0,Ów< è»À*³¬Éû¼œ‰uì½ň“–§Æ{ dòÏ–øà<§<ýºÙЉaK²¿?$Ù§Ï/$•óó‹!ˆúhÏ/ØQ6˜Â|lèÞ\À'öæBELöÍ…AwDZ‹I‡:i›rƒö£oggÔ:¨IÙD­C÷^ãÝ{-ÑîÁcë½¶°Oï5ú ‡O¡¢´B/•2˜7u­×Nx5ÌìÖzí2”¦Z¯÷É F,…I î%×o"ef[÷[‡t±sõATÃt\£&ø¯QûE°{p!•!îïßqí½¬éÃw\ú‹æ`×(-]{Öè u\º¾ù«í;®zÛñ:® ™Î²Ý–מîk›Mhã¢îÇë¸F¡¾àÊѹåº+X³««/»’®÷Õ¥ÒÜ=ê« D;?SõíZ}U|ÈVßQõvcB”À ¼MÿDWbÒÔ¡uFtÁJž—áe¾+Cv5q1ÌÎtÉ¡ û¯ ¹ ñ8Ídê¤×&Œ‚ç÷EÞÇÏlÒpQ± – 00Ԥф=QnBð¡Q·NÕïN|,Ý ó²õV­«¼D)DÉ¢¡¿Ì L¹é|Ä׋ÿœù¿endstream endobj 476 0 obj 3441 endobj 480 0 obj <> stream xœíZKo7ö8Èèã(È0|?Ž›d‘`ÝÀñ$9èaÙZH²bÅŽ½¿~?’ÝÍ"§g4ÍÈVÖðAT™],Ö›õé÷Ž3Ññø¯ÿyz5ûú'×½¼ñîåì÷™HÿÙõ?N¯ºo–Ø CX°Òêny>Ë_ŠNËŒ·“Šq§ºåÕì—ùOG Μ”AØù‹#Δ’܈ù‘,œ0*Ì߯µõV7×Êz/æ×G å5³ÒÍßÙÈRÚùqúÎ{Ôü2±FrWñ ÇÜF²† õÛòŸ\‰Jr¬…“Ý"JŽOºåD~ŽïŽ«oÓ2X/ç?êrrÃ#5õåìÙL3nº?¡ÊïgÂzƒ+tŽ[Ç´ê®f¸½eÚ”ËÙóµ oÄî³&ñdFg}ÙÞÙN õUYþ«lxQ¨·…úª,e\j)T¯HQId$nj¤J„ãÖ„ÆÑ–CÆltmxà*Ì8¥• Û¯3Ùx ãSÂì²_ü6Ø,2‰¾±ðŽI<¢J2c´Ë>ÑëS+çÁÒO×\dÂé[º>OÊÑÜÊšç%Q]@JQ6Ðñ^ãö·kô}¹F÷_E6±ë¨)¯‰GŸÅ ÉÅÏE\J–ó_¹åM]îaeOº:ï.¤fGt ‰D¬ÈŠöQ$d3Xš‘ i¦Ée÷T‚Ä-¹àrˆëýeFá¼E>é¬uº‰éÐ ¸¿);¤CˆÎ`›°‡|˜–ÓùP5ù°15LXÜb!< ž‡A¥J}ÈéµÎžÓ“_3Ýr_Èàô>»ho¾; œ4ðÔ7e™Dg).ʯ˅b~‚C9ÄÆÍ j ï¬k™ª^@Ôa¤ì`æ€|dOd¨;­œlD-w?+C)†Yã¯óB~^–ß–3~,Ôe³*(.GÁ*(kD?h”$ÃÅw×8Ä©zþ^dX§ž|O$©/‘ðCÜË^«?©7Ô“¦>ûªºü™Ehmú"aúÜuZö¿.Ëërâ-=f´Mkâ°ù³­í¡D@ ¨Ù#ö`%eÊTåþh6q`Öšl’1Þ–å’‚ä1ÌßêYY^”;]껲$6»\«|‹~Fn*ô§£|ïþ*¿§<@ùèJгn§û¥{m?9ÇwÚÁK©î{Êtï43Vo©üÿîSù¿ÕÚH·BZh?õÚCk:V;$ê“Hçp^–+IsÃgä&JQ¾u*EÑwTUŠÎóf¢Ù“I½ãn3²á´±ÂŠ”“2\GщIS üeeœ…ÈŠÆÜ«Ö;“ÏHÙ©CŽ-t삪ˆ#B_7LV4ðrRqo¦.•»0´'$4[jl¢Óiœk×?Ð,ž•>ÄÀóÁ(?4ûuLÙ€®É<Y„xt4…ùIkëé¼ÒÖPIŸ´¶öšË·.‚L ÌZuffD³MqXyÄ¡"1®câ@ã¦]ÿ|ú.)6(ÃÚQcžc(B°t¢InôqG‡¡ty öOD¼åÔümdªÀ¸Áƒ+I‹¿äJ׎Ä"ß ýä“Q¢õWxñn˜ê´öèälz âUêÄHÙå%¨˜ÍÐÛm1%õ7-òào ‚ÅÅÄ41Oˆè̓Γú™“ÎWS$Jû ó/6O·Ò§·q{šÕmš†Ó¥)Û£OÓÊ»Úø{é.áÏLkb}…ðgÞ<ÀúàÀDæP¬¿ÅK·yÑÎKœ³c:¥ƒ9ªRb^jÓûÏa£½dH£žaÊšý%a{¿PÒYøE쥢+¬›Ÿeo‰Ò-…_ÊÀRÃÆÆ7)ø$q×ÒÆ±T”UÊiša5ÖŠûL×V&ä³!S´öÐ1u–ãþ, mÝ\Þ®"˜MA ^ƒ6ÍiÛ´è%ºQjxjUbx*À a3ØiÉ×YF9Z'QϳX\%”K¹8²)íÐ"nÎm ZD&ʺÇŸÚÑã}9º’U ¦Ô•™€#—“˜¬O IŸëºv2 ÝÇåEY^•廲<.ár¤æãœ­&à!&—1±ÿ- ç9®39/_ V™Òmx}(þÞ¶Tô!˜–+-U¢^6aÒé™—%mõBZ©Ì”iéCÝïÝ)ÜVýÞT CƒèZƾ™ö‘×qì•…û€@ÉÏ_O:7ÝÍŠ§M÷yÜ3«B·@‘2xfAŸr­…ß{·ÖÃÕ ‚!º \=Pv‡«X}÷äþAxõíÚSÀ«ëÔÿ¯~¼Úˆª÷ûŒW¯ön'¼:Œä‚W+$ÆÁ«ÊîxµÒ–­þ¹É†Ñê0V“Åÿ'Z’îÜ´z ìŽVGTÖ®þù‘àꢠ®Þ]A=\]éçžxµòÑ& — j}^ Ã}b°tA"Êl7Pv‡íÀ- ½¶“ÒàW³úvè7ð‚Õ ÊË“m”_ãÕŸÜ ÈøG’âÕåÊOw¾ °Nw’*AÒÔ½ì@<ÿxÒ$áÓáïeŸ|úþ3|:qç{ç @ð¹ê¯Ÿî5£<|úÜ iñÊ>À›ÊGô£ðH&Cê¶£^ÅHÙ¥Û,d¨‹ö°ˆ`û¨jFL<Î#¦FLCUzvŠmA%ð¸\H¶‘ൺÛ? ¨ãS]ããl#D¸»ñã;ÚfÅøñ tæ0xàL" J³/y V\O]&¼*ëo9טîãÀŽøÝÐxåŒ_99ñà÷y3C³8ʃhJÉUnâä>W­|³¡ÿjIL=¿“Õ…*Ц& u=B̵sh]L<=™Û1}§¤‡~Aè×köœå;yë)ŒDÂ;`4ß>|©ŸÙ© nÖ¨‰¶i¥ç²ªuF¯- ë4Ü@."Îâ ±1 ¹.€%KiªÚ’:±g³ÿþ¸è¬endstream endobj 481 0 obj 2572 endobj 485 0 obj <> stream xœå\Ks·¾oåGÌq©ò"x?މãJ*•De‹‡TÙ9P¢H©LR²(Ùq~}ºÌ Áì‹K‰NÊBàLOãëw£éŸÎÄÀñ¿üóÕíê÷ß¹áú~ŇëÕO+9ä¯n‡?žÃ2 +­ίVéM1a™ñvpR1îÔp~»ú~ýÝÙ†3'evýúŒ3¥$7bý·…F…õ'\[o…që¸VÖ{±¾;Û(¯™•nýó™E’Ò®/â{ÞÛ Ö7‘t0’»ŠùÌ=në`¸Pÿ:ÿ+p®DÅ9¬…“Ã9‡W†óK`ù¼/àÓ@êë¸ ÖËõó²{Þ}à/Ó.~ê›óÕ·+͸~(ÿ¼Ö8Âà¸uL«áv§·Lûiçfõbð†íp'˜5‘&3:á}QxûPx{Uvß”åß˯Ëî}Ù}S–ÿÄ¥–Be EÅ‘áÀ€F¾"‚ EÁ¸5!a”€åÀcº63~Yü¶,o§³Ó.Y¾,Ëz'e™åjÂiÏ¢‘>]˜¦gÄsØ”¼:L‹X‚ÓÊMøxëwð®VÊé¬2‚… )f*ÀºGYét…ìE$($H* ì]¯¯Ën¦g€"¾¨@1‚™¿f•Ñ ”ÒÙGY`^™%]­0”ÓWd1tÁ#ààJƒIKfŒv èŽæEàjE…¯2€¥ÒŸ‹!ê£#–¾‘¨™®b+­MÐ> Ô@Ö•pè·_-¨#’ø.ÏU:4·²¦yCç†(¯‰ ²>=Nê %C¡û*! áÜ•jMT.ñ (®®$K~¿œˆ’¦'¢Ï°òL2¢:Þl¤f­h#Á+’Œ=r^4‹‘È`úÛ¢lóiÙó^}â§Ž ÂkÅ”¬uP€àö¦#‚‡Hâ#MøŠq÷EY~ê¹·®8Ø8Ç êYð<Œ@•€ük²2¯uÒ•¼ý®ˆà=ÙÎ1T>;³,±±\šÄ¸Xé½J\¼-§$îTÚ€90äÊ3÷€½Ò2ø!_‡içyp2&ÒdRîg Q{ˆŽo ±²ëÖ݇¿.Ôž—Ýóæ Ũ 6Í ¨(¤çÌèPpª‚â½°[C‘N >èf“(ô*Ái•<½v±Lw–½§j5Q ¯}UážÑ&Ç'#¨[i¡}^Œ=„4E°wŽÇ(0k̓À×}íús‚šä€Ð&ÜÝ‚÷ô3éP¥N'3Á• 3@>¡àw 3È•3vÚ9\f@HF rÐ(²tÿri¨³zÙí§r¤ÛýÓß{ 5 (gÂ^Aûé`ï´妨ç`ñÜX½ü䋉`aF$‡eyÑÉgµ Ö<à6²oåp_¢ÊL$q÷c÷RL^•åÌ„·¼¶äŒ,j«uÙp–°è&*gNË×]‡ñ¡P &IxßÝ%<Üe~AŒ”ág•@ó9f<§ @”‹BhEm‡^A ¶ÀÎôí``ɉÂÁÀŽêŸ€Ý דƖqÂùßVçϾ§§©ÏžÎ]wýÐ;nJ|!#¤Š`¾t0â×8×.º–éú¨Ñ Da·ÐÑÁ43 ! ´k"ðÿ Z;õ6´Ædñhmœ›1káœeSM$™‚‚CôòØ{£]®Áþ Êð°ÐšMíˆÄ!XÚ¦Õ­ió˜>C Ê\gBÙíÃM_7PµEN1i\©à:-DlëtëNÁਓ6œ²AÉ€ƒÖà³…¥XüŒ;Ç”ðb¢Yá-ãÖ+î× m%“#-7Òž¤(Úq¢])Úg™h…õöúw{´¿îñiÚŽí; J&e-å“äŸÊCO„¬tTÎ(°(!ïQ®m“!ä¨R™0žŸvî(¢D¸T¢´½¹£‹Æû:‰KX‹f­^em‰MdÚ#¾Ã.²†¤v±[|™tEÖšõ.í ð/# -4vªF¦{Z°‘ /³tãIò<3 ’ïw)ÓÖ´íkÝ묊&åü¥¸1z‘Ðh>6g…4Û B»áATWÙziL¥TÄD (ï ™ŽÇgš äQIº{•ØòQ…%UˆŠªx´ÙM{éÍ­’µC"ß9Òe`¥¤¥òÙNŽÊ;SÔÈÎc^ÉtL<Ò©M|zü«B>&=Øn2R4F–_ÖÎ-ÞäïJ8}œê×›¿PÖ1elã0FåèIÛ8pBÕIa4Ý~–J2Ác.!¦J;éµ,2¸8'dy‡Þ/C ÆŒ`Öàm>õ1Ô$j¨ãǵˆÞÆz&¢×FÍÝ .ÁÓNƒÿRÄ™ ¿c+Fî²<µ<Ú” gÜ™ã3~´IZF¾Üj©(\ã¶[*Y^œAˆÔÒ_LFBvÍ nÖ†€"eµgîÛ)¥w]žXâœØäMB<,Øi $¨‹Â«MKÍPøØð=4ŒgnÁÆ¤è„ø—4qœG 8©p™A—ºI-§Ø•L$¥nž`»ÐwFëSÒîmYκq·ä›ÝÉÀ(” ¹|Ñ®œ Ó¶g÷)¤5ØÝÂ3÷‘Ì6´$6¦ Õ·…!ƒGŽL“±!cõ>"iÓA$h¼ýŒ¡™åN¶f‰Ûn«Ã‹¬¹+éë<£¸ [S¾¦÷HùF›.3HýX“ú):l|ÈÓrÈë;ªjX4D3µ]´·L;·^šÏÉ0:¬é Ö6×höõŒ{'νÚÏæ—­1×Ì®ÖÏfJ‡–Eˆ„ mñ…»Æ‹í'nIdž´÷ ‹ú"+™.-œ‡,x)!x7FOý©(¦©)M‰˜ }“F+—Ê÷SüÉ'¨ £[ôÔÜyS©L U¯ùœHm|ô·mSÁ3¯ìbÂ7· +«ÎMç³µ¾î\Tl,vp8oÊ#©o#doÃf©`÷Â^Ž`×é¯ëx1ÎÐõã³Å{áGhøi‹×ËÊ(*vü”s,¸i爎Ÿr`À~ÀêÇsKÛº{uüÖß”å¿Ë’Ü |<ÛZV—*x%‡â²†Êö> A€ƒª•¢ ñÑò®³îYOmf¢Ñ­äFË/¦/¶Ž=Ò^ˆÉÄ46È]Sõ³¥ì„¸}LŸ?¦b‹¯ž~¾O³– –ÉhMÝÚZrµ×©µæƒ^ôùMÏìšÍœnV$6qx¾ú ý€ô'¿ÈÉ£ÿJMæþã?ú‡×ÁÏùçþgW8¤zX2p,TÃéÇû%Zª8ÞKcëì{°][³ap,tÆÔÛ¤ä mÿ— &Ù«ü¤RÁxøà;ë6 Aݹ%ÿÐ䇸4Ö@KŽsÇÄzLY:eP\_‘¤àSÊÇ4|mê t’†˜1572¨Ñ™íüdg¨}†zg¨=vЧ¡vÝ©7ÇÖÎÁCí3'ú™‡ÚËòK µKÏ3d¦=o?ÒŽ—ãñ¡#í$1ë.‘<éjJŽvºOŠÓ/5èî|øbƒîqhÔ“9÷¼qü˜»^½ÛÒféëa2ž¦Hiú݃ª†$=\Öñ𜙯Ð9rúúš`v½c²«?Ùþå|!ÍÂñwðõ†IôIJbñ®§#ê-)ÙH)©öœ®î«æÏåL7 @ŒÕUÓÕO|0üqçxðqVRµÃ§«ûC§ÿ)Ç{MQéùå½§. ÇiÌh”CÞy€<ÞÜî2‚Žnºr ¨üx€fSî˜/H›¦ÜÇ¿ìþbSî„ý-*úª?Kþćß!K“fëv”º9(µ3Ø3]¨­t\h.ÿ—†‹3fÐáâé6ó7†Vƒd.q‹þÉ`ðB󱽿ˆYsêqí'èIýøçBô4ðM<àÿ_! °–¤„OM;-§Èüíê¿”î~Pendstream endobj 486 0 obj 3146 endobj 490 0 obj <> stream xœí\Is·NåÈÊ1?`ŽŽ9Á¾T%‡$ÎR©TÛ¼Ù>Pµ$\d‰–-ÿú| Ì ˜™Gò½g-‰J¢@L£ÑË×ÝhPßu¢— ÃÏó«£ß~é»§¯ŽD÷ôè»#™~Ù ?ίº?žbŠ]ì£SÎt§OŽò—²“Òõ6¸Î+Ý ¯»Ó«£¯7ŸŸˆÞEmEÜ\‹^k%¬Ü¼¢i­zsNc-bŒnó2]róœ†>Z%üæE¢œ´~sKcé¥Õ±ZsêÆjmÍæ:/7Q«oOÿ†¥¬ÆXzÕè€}uìNƒÓS|¯„ÖÑožÑ÷ÖÛ˜&Nm4!“Ò)n%Ä!2¯@Cê`ÀæŸÒ0:ø¼Ìž..øÛ4K{üùôè‹#Ó Ûý-üõH†zÕÑyz/»+ð89Í\}µªªšÝIUQb2Q轋YUg…·—…·ó2|V†§exY†exV†Ohh”ÔzIRWa’ @öÂÙ³Bµö&n¾Ï ÑFˬ{:ë_ë }ÈJÖ@iZúÞÂÒ~Åty™—[¯ü8NŸ¾¢å®¾">·'¼pKfà"°©Í ¾5ƒ$.¾™Ðp2œÆöB3åkã\oÌÊ…Þe Eù(l´ÊÏ,?«˜kµ¨`¯ÞŽçOÞí=Ö†J¢L¹\£çE¸ÕòOÉ»“rmïµ%\P ô`-ðÅ8Z…VÞÁ*”ït±¢ÌÔ¹yL䈈®–Üd›pÚo%FšÍ›Âõ’œ(mz%]w"Uo ,‰c›c¥Ùgeø¢,¸m?¢¾†õY? ÿ‡‚cÏ™½7– Ùô"ºmŸ–EjÑ0(k+-s2-s^02 >œÖ0—¿Î H0ÀfŸÐ¬íƒ÷jŠFolw®e>>I;kUa4`€Ÿÿ¬ì9YDŒiìf²àOi Œ›r"ühËbû0?'‹³Ú¯Rãòf$.³Ð¼S›§3ÂÍvƒ>‚Ö“AHa±‚LL™€©Tf¬E3ò–p—[s´;Ü<ѩݜC.Œ(è³kØb죳óU!—ìƒUÚS™ê¿RŠÁBVt…lRÐSpÁ…œ>JÅ !cóQVn^—i¶âš­xT¦_NÃUÃ÷U¶,Tþ"ÉÊÊóbøbGaµhP¦#)p;®V|õ‰V=’«îÄ÷1Ê@ß@ §ÿž‘U="¦œxø}®Ó®$òÞû¸Žd‰]§ú|ˆc¤˜àîyþTÂÎE‹‡mvñhk\ÒpJ©äÈî×ÅFòj'*[ ÛW'‹’Á)³˜¹èÞ@íoáCÉκ ê˜Eß—Áxcå ÜE8qx½Ytf¾º?>1Š!ªÍ?ÛÚø +â¯S³ºÞòr`ÛR ù=ÎT9Ó«¼BI»5Z` 6¬ò·tÜgüßæ¥H™'%ÍÕÞù¢¢ØíÏ+¾MÖô€ÏB”ñ8zj`6= Qžžfvx‚¸OPP@ªl²Jþ¹h|W@#ÝÛüXf—áór¦«2ûz1é»\¾sÀ×¶|ßá[z%¹ð‡™=„o© ï)ü7‡þ7ǵô%ð±ÒwT­(ÞèHx6SDš½]\À ‚'e8óÜ-ŸÝ.ª½Ç™$p„I]ãã†ZþŽIùÑ¢ŒXÙò¢abÖæaÇ`WÄË"ÆÃ51ŒÄAÙŠáO*EÁ#Eãa;3ûŒÉµv?˜˜v±ÍÛÛnFd&§‹‚{¹t¨œ" x®^|§Ý„0~((œ°*Ðm å»V‡å6°ÌŠ©eðs‚•”Yò)`°ÿâ:(¼l×A­ëÄ#çD&ljµòÌĘhð›%ÍQD¥Û¦@ ÁÀîûþ¸YE³×ãf¨¨4ùYl!SöºÓØyL¾5iešÙ%ùÖ½ÈúñíùŽš÷©µš+ <âðo›Ò½²ñ¾o›i9 gÇ·Í^õTÕþi³E1/³0Çõ{Xõ·d¦0YÁ¾/›Q¨0uTû´yáÍ#x¢§‡zÚlèͶ¥‘^îò°fo˜†GÏÊž•Z¶zBáÌôhîç~ìlBËv÷{Õ¤½®·E.òéä»{íL èy§³•ý ‘W½©Ï†ß{¿ ßöb—›%ݬz€“sïÃ-0Š'´ugLÚ· ÚKi q¢õ–Öé }Ïæ]õäŠþ:NÐ<¹Zè륞¯䎇õ{õîÔν»$שwçïÛ»S}”³‡ûîÝ…=[wz¾‹Ö2ôLŽµîÆ™Ý[wtÓk¤yk­;½ý¢jÝÅðÿݺKwѲÖÝ8³{ëNFEBóÖZwúmµîа†ÖÝî²[w•¬ÞûÖÝ{×=’A œ‹¬{4ÎìÞ= ½ÿغ»SøÎ£è0\øÃÌÂwÕ€z­»mŸҧ÷Gø^[þ0³‡ð­í•v÷þO‡þö¾é˜T}h}Sý±oºpæ}Ó¨øÎÄõaöMß™¸ŠÆo­+˜6sÓÛ ÿÇut_â¼Q¬oÿe ª_ýâÎ4endstream endobj 491 0 obj 3405 endobj 495 0 obj <> stream xœíZI·rløGÔ±$¸+Ü—c%1‚ †ì>°}f<’‚™‘¬‘l)¿>ß#«Š¯Øìîé™ÖÅС)ùêñíÛ/d'èßø{vµúãw¾{v³ݳÕ/+™þØ?gWÝŸ78 b‡è”3Ýæb•oÊNJ7Øà:¯ô ¼î6W«úGÖbpQ[ûŸˆAk%¬ìohÛD+¤îÏh­EŒÑõ¯ÓÚ… û´ôÑ*áûW JpÒúþ ­¥—VÇÅ™—€n¬ÖÖô×ù¸‰Zý´ù–r0ÖÒ«n­ãdT·9¦ÜWBëèûçtßz‚Ò„©&dPzJI`ëðüâ{€:`ù—´Œ¾-»›æoæ]úÄ_7«Ç+ĺßÀ„¿¯dˆa9ñ5(Û] fÞ¹\}¿“UKtgVE°(C„R™UO r¯ rgeù¼,7eù²,Ùµ·eyCK£¤Ö½žw[|±)âDMÈ‚„³1fÞjíMàÄm´Ì¢` ZBgQÐ:H2ÿÇ3àŸ@*û¯[/óq땟ÖéêM>!âÀ· /\K"¼Œ÷K‰Hd¨%"SdÓ<ðÍ‚NI" ×Ô`bä%¾u1àá—bð§&?Ï ÊÏ÷2QÙAª '$E÷‡Ã‚¢Œ¹œ£g…¸‹ãã™ õ|•=1D0šL„ °?AÒ"UŒ“Thå¤BùÁH;ûsg@Ë¥hxôàµ2/‚ùj°äK}š åú÷W¥Ú"ñgÂD }Z—vŸ—å«ràM}m25? ÙÓò¹ßŠ•{ÁT víý ¢Þ§tD:I4«mePÖ.ϹÊÏxÅÀ4Ô:aVà:# …ä»y7ê²bi¬tùû£ñïÞ7ø›Nì˺ëä\â×öá3â¾52.È´‹Â\æH|‚³”xíù×+“Ë@Q¨ R›¦÷ÒzpÂL²ñ. Ü7qu^¾(Ë«²üµ,ŸÓp9ïæÏyÇ?w+¥™Mù ðÓBn ¥4$7뙕ùÖû"øçE^”Ý«²üµ`jvYéK…d‚rªBÒ)m[H¦e˜]Öo‡\ÚÝB.-/÷WP1̯ͬÚ2ò¦ÒhãB¸¸ÐÊitöx³¢¶5ŸФe—±àZŠ08»µf2ÆŒèw ‚RQ:òPî- ñXHŠïäqÓQ`©Hé^ˆ+³óC@£l6 òRüŠ+§Žå¤ xwap’8OA²§;ppýÎL9pµ+Ù àêkw à¼S­îçýV.Yvüš 6EdÆÂÈ^ÐNÞ,ýÂEÞ®#ÂÊa¥›JVþ _tÇûºÜÒ®·}ó²[‘Á˜Km?¶OiEQ„‰ÖÜaŒX¥0jäA៖8‹r\[üoâÞäuÖQBÁ\mȹUáÎîlÇCد´¾HÄ10×K˜h?­ªim`ð ½k>þv½/wÐþkc¡Ñž³’g!çtBƒ ¡—´TC6…åI67ÉüÌPÎ4/bW #a|Ù»12 %1˜±´ímY¶Í¼l™M–xÛéS_ŒFÜÖÙ@Yn2—Á 7ïÜÁ\Äæ`*8óp”¹¼O¾ûïÊ\Vüòü"džH‹‘’ʼn½ÏJÌ\ÓHÛ¬ÔÁ+#£Ÿƒ"„Eeä€ÿCÆ–°ÐnP>Œ›Å,×<ëX[™‡¾œáÑ"ýs”§ü,8à1MœwîRà€² &|úaÿXg¶wg8d…þǾœ¨Ëùð·ÍÏí/ +ÓƒŒŒX*:ÄG÷ ÀÀÄ%­nQÈ¢ Mÿb4zµç‘ìAoe³õµ¯Ï_ÃÂR¤X¹‘³&£®Ëo*ñž0¥',Ì(ŠNTg¥E,æ¨05‚˜wîP˜+‚%˜°èÁd–ü«)|WðÇÊâ¿v;åÌoº®”—OoC|G±±óŸ-ñ\BwFüqçÄj0* ~¶‡Š”@*AÎÿ(>0ÉÒdÉ–Œ0¯%i«šb©Ù²m±$í¾i`ùÀEYnéðžkošP›É-YxGt£j¯^˜Éó Z¾÷¶I—’(§ToÛ¦¼.Øö Æ››æ.Ãᚆ}UvðßF°GYAöfvÑu©ˆ1‚ûQVÅG†t-[[xÖ$ÜëÖ£r´7ÊÃ>˜4=—GÒׄ0~L.œ°*DÒ „¾^Á·"+æù‡4[RJÌµÏø¿!×Aë²\Æ\kð1VÓ3c¤­lßv± þDyR†88kÇÐõ o9”g –S&^ÈŽ´ít@¶¤}ŠÃ¥¼›wî‡C B‚ oe>Z£±N¼ª:R~W Ñ'k4* Þ Å¿e£‘ŽK½Õ|¹m§Ñ!ð2v§o5¨¡XA› » 6ÝRîÛjÔHêã\ ?m«±ÑxQ–J`òT­Fb0¡*=b;`[O EäWï ÖÍF‰Bf­®œÜ‡n,Â’9&~·l, ?xö‰<qÂ|ÂÆ"á(lÝXÄ®ñ‘øšÆY@¥­ú¡M“¤Ò³![çò§µ*.ÈÇßJØTba`ê’û\Råæ®¦â}|åœ()DÜ[õÖÑ,jÑ\¹NWõÖj,Ý(»"×øÐŽNjPËP„*V ù1µzpŽÒ?~°ù5Uç†èɦ–!tZ8h+aëÕ$)€‘عfŸ©¬ S§†.]IUkéâ•»:Qc†áé~ _J×uõÙ‰…5†Ä „(¢ŸdÑhaš.xAÛý˜Aí7°îÓ45ñKÝ’iiaºúÃ$ø]>,âFÎêW!+·rEÐ|jdOat¨Œ·¦n‹]6^grA£j+%©øh?‚ö/4¸D»Tžq[¸Ù’'äýŠí_ï8sžß\àý(¦Þ¹:¦U¥-\Nv‰m%Ÿì«óÕxØm(|¨w3gÔ8Wá÷ÆyiœkØK`ÍçÓÎÝç™Mî£5Î$$44gOÞ7‡N¤V„ ¥”}Õ7§mx”{¤ ‚Mô|ÑᎠ°fÆì„È]Îs:n¥–\c,3Í" çÒ.!vûNò†§‰’Fúrõ'B'¢«òˆ¹Ñ(¥ÔÝMÂÃÜãMî‹ÜhO.Í÷ÛóÉÊ^ghBËSÏ$Þ1#¤àýغW²5#4 Í=ghá¤#±“Ι¸¹˜ ˜i@€îX©Ì8ße¤wÒ÷¦[€Ñ‹4¼ç*0´F#y%³zq‘ñ‘ÁåD&'}'âœ52¥¹óéTüTV+e'èð>c‡ÚF—Ç=Nµ¡ …Ÿ¾.Ûì;— “%¼ùȳ ZH¹xÇ0Yt†ŽW#rUj˜€3€ùõJ¸QìŒ0`oËçSÛŸ‚úÍ?W›‡;ç4\{»Ìi´ 3éšê =Ì 4`,Òtu¢ì¼s—é 9ø Aˆ?Þ'?j Ù¬åß*ÓhNî-4;øçÜuù}RCš®|RcÚ¹û¤ýB™ŽŸÔ8ósgZ}¸¡ ¢§›dÃ}胋Ýn7µ§Â³<¤„ÚžajÃVAÅéŠÕ3m’@ç8mÇ{Ð6Pæ©.Vï”ÉQÎñ¥Œ©~V7½÷͉¿5-`#‰×ç1,°ç¥yyQÍÞTkª£øƒ4•ì¦Uv@f³G°ÂуSš“1ÖŸxn@ ƒÜÉWs_ÝŽQ¡cé6Y­£ªޏõÄ­p "æV8Mó}¾­püYCb RÎ9QYÎFþñêB ¤Wendstream endobj 496 0 obj 2912 endobj 500 0 obj <> stream xœíZKs·¾ï¯ØãR¥E4žÇØÎ£R©¸lñfç ‘"ÅŠHÊ¢dGùõþ˜`°3K©t Ô‹i ßÝèþe)…ZJþ×ý=»^üéG¿¼¼[Èååâ—…J?.»?g×ËoN±A©eÑig–§‹ü¥Z*rÂJZzMBzZž^/~ZžH¡%Qô«W'k)¬·!èÕK^Mø÷é?€‘Fµ HOÏâP( ÆúÕ·i0|_ §“þ>@ùˆ¿œ.~X!íò7ö·… 1òMµðvy½P‘p5@^/žÍROÓÔGP1ꟗ›½-7;+ËWeù]YÞ–åuYþµ,2£Ñê®@ß ËÌÔ±˜œÞyÝsõ‚%@F:Vï+ÉÜä5R¸(KÉI/'‰É(iu•¾¥ |Hw5DÞDþÔh'"–Ýëµï1&ìõ—Óþçãëj{½åÕÅ^Vë;¾AÒÅöFóŒ¶"’_WàL†Ë —Ázû›¸ñµ+*ïì=>¦æíÉZá6Æžµ[ÙÙí DçdMSià€ã¢ºU·ø¥Þ>óåy9‘Ue­TÛX+-¬q*«H}ÇÛ“5Ë”¬^œh/ x°úÑh-ݤ;¡Éw^ŒaCÁô¦,ß´Z]ÙPoÒ­‚™ °;í·âxæ”îÓŸælÑ–D¶ {C“.^u­–V²šÊçg„jõK—öª6½‹ŒÖЃH©·TÖV©í %ïòáÆÌ}wƺaŠ££kvÕgרw7ŽD a¬^Ú²nÙ^ŸÆÆÀ´+ã”Ú¯‰š˜¬ ’ζł}u˜ú#ú:Iƒþ?ƒhV#*²`É/ÍHXµæ>Í[lÔ[UŒHøèPn\ºýÐ;[mFÊ3 Hì©ÈÙ9oÎ<õ]F-åT4Jœywã¬FWf‘ p”z64ŽJ²óq>FSËPä=¤}ç°ui®…cÓ\®5>×!fUú1aÐ:*޶Œ@KÛ‰Hye© s.8•Ô”q!¨$Ï`„©¿ž8NŒ5ž§ïBp‘2K}Ä¡~„£:&ÝßD+MY›ÂZ!­Y+Üt8vΨ\€"ø¥sJá7Î=Ž2a€ì‘+z%œeœ—¿?UlÝÃFª˜ GLñ#K¿s%•"7Á õÒÉxªíµ~CŽšéµv%óÒÙ±·¹`°Fn b¼Å"ÎímŠhL˜s5)uþyžFáTY¦ 6 Òã¶Á24{/S >yKM\®öVoº/9䌌»º”ê™êªø”éÅ£§|S«ï*è}NCi6g§³ˆ}òNòDeän¬ð”³+VR¿ „\¬cé8«Q޲FÐ {w@¡•1 ¢4G°î¶<-˗źßN혳 ,r~DŒàkÇÕâ~?déc²¶uàÛ"¼7¸óÐ0]•Ö õÏÍU_#qѾ5Wm9й«µÕHO´9¦ð£5pKëQºÃŸó+|½‰dŸWø›pB.ö^ágÑíò ðáƒWH‹P“þ¼*àgeùmùîûIÄ|ëU)ñM'.Õ|#‰ˆá0¾ý¹‰b|ˤ"/y®ÒÄ­ŽÝ[? ‰vûÙÓýkx"ä;¶Ií[ÞV:™OÜ·Îy©æm9€·R|0kïUÉNÍQ¹«ñ'Õ7ã½9”÷±ã½ñ™÷g“'ÞÌd=ù΀Ç!\ pWÒ‚’9q¾<@öª(N!©3‡•k¼É!3ßîÄü›dÃòç“1÷UDÒý[s|¤.fÜ϶!‡}7¹¡ ve¹a·[>ÛBj¥Q™ê—“Ê•ôÄn’ƒ–Õ¤õ æ÷Ý‹}Ýøâ ½~ÛlÈ*’®Êòn:Òé|cùõ'#‘q2Æ1z''X‘ü¼áà”!*‰ŠÑØþŸðmÚ•oýÛê?§O~ª/{Ó|½¡·—“ {;EMδ‚Ô/£JÒçtš”Æwe›“\ê³AÀÂ-í§²5‘…ñ[î‘\MãçÊj¢F½ŽÁ­µ·’X¬eçF:ÕøÁÍê¾u*®Q{Ù.ý.16¿M¿eär‘dŒÑÕO&u]'ÙõkK½§ÊÉ»T™ødU?¼”P¸LçÂÿP ºÔ•3F"‹¤ª+×CöïʃxH-VÅ™­¹Ï°Ü¹ûÚ”ûÚ”Û£)7ä»mS›ŒQ;4åøy]ÛåGjÊÁ×x¯†®ÄÌígžâ6yÖ¾AÖÂ~“_åbPþ²>Ï'Z7/ÂYíV%øOró ¬Ãžû\›´ñEmO0¡¿Äù˜Äáò¿.ÁËIBh[òšT§Ciy]–7“Ë*7,{çt(ÈA‡®Ê{d¢4?%¹$óÊs)[lÒ‹‡vDMôv£#ÊM(=õñ¾ïˆbë‘;¢ OÓM-¼0g,utÙþÜ~yž{Rµ†ÓS<Ù™ÁÖõR;æ«ÌÚŸ¢08;Sum¢¾~MÏ 1z­r®Õqµ[{%ý¨é÷¡˜Å¬I]vbÐó}׊³“™vÂÇŒ;Òëaû†P›ßg-¿°Åø¸9ÊDÛ÷6+]PóÝà¦WÍŒW‡ VäK̉¹¶ˆ¦34Õ9®F†;wõê?Û},r~DõÑ|ì¤ùÌö|Hs\÷¹QÌÊñ™5Šz´F19ÞûFqÙ¿QLÜ¥ûÛ »wН_”TCýr´N1Y¤iµÌKä²m§R„8÷‡Œ [d8däIŠ{tŠùhH<î3Yýq;ÅéxÎqV`¥úcFyRU•L'tZhúX¾f­#Ò~î7/ˆµ˜Öì'½¶mºOuŽ #…¹1‹wð£Êö¢‚s³j97¯—‹ 'Qðm)*p¢–´½–1ù1^*@=±†ŸÏÍÜ\ÑU£G!à;ûHEiº1)Cãx~}¢CºóX‡ë£™*uJ0æ4á䯨ålgá’™IÁç† Ó´ž×"ú0Ug6e8l‡‰˜ ™þÔ0F//=ìHÙg»±Â·ÜpŸo¥«Ì‡ÛRŠTÐ&ãÝÙÚˆÈ>i¿×˜ àO2¦AJ¦÷À2¦ÑCöÓàz0 8L㛲¼*®±ªm¦K¢v4kÛðFˆC³þ2‡7´5ðAªÞè!ûohöÑ.>ÂðÆÞ*‘;Xê3Ò#ÌVÜ„ïR\½ïÏM`J;ææŽ#6b ª7Ø’޳²|U–oʲjUŸ=%'i¬À˜v¤ãÓpÏæ­Öy4 Ù2¼8@ö‰!~åd ðÔæ‘FAR'ubdK¹«Ìx’Eû¶}Dæ÷ö #êb]ÛCÙ×n¬=ó¡"<¹}?óå¡Ó¾ >ó¹úEA]1¿ƒÀ|TâQ>’æ?˜ùjæwýçûþ¹ð¹Ìá¼(DU]÷‡E<Ô¨ÿêˆ×—¿oŽËˇ ™l ì> stream xœíÉn9îþ¾âí ÖˆÚuœîžƒÁ4ºc`ÝspâØÎÀK:vtýRU‰¥R½ýeà ‡È´ŠER÷òoK)`)é_÷ÿ«»ÅŸ~öËëÇ…\^/~[@úå²ûïÕÝò»sܰŒ":åÌòüj‘Ÿ„%h'¬ÔK¯´^/ÏᅵœŸJ¡¤ÖÑŸÜœžIa½ A¼¦µ±Ñ„ÿœÿ1êF…û FÄz~‰8^ ÐÁXò}ZF‡(~,Ðóæ†¿PzÇ_Î?-ŒvùyûÛBDÊ$ŒÖÞDz5_2Þýîô „t6ÆþAë•ït##¤'½ð:Žž| pZÑ)¼GΊ¡PxË(áÈŸú'Õa¥›ôNƒàKÎü¸|2XïP§/z 眱۱¨­±uÅvwp‹¿áÛgž¼$ÜN85'—§ i7`N~/âh]²3ÀüÂùø/‹ºNT0AïËòm­aLËû{W+›AÆñ°zmãgsŸHc&¬ù ¢'ŽqƒµàO>žª ‘¿~tZ/בÿ2íf:K†ô(Œp¼gzöòô )±A›Ý•e@FÚî£P1ð»1UœL>‡O§~’Ç{¡‚kIW"%æèÐkŽŒ¡©9-p„—óF+›'Y ©,Õ“¥*Æ^vAëáªÒºM³2ŽIF3 ÉiyW–P–oËò©ðôn€¶H¦*5ô¯{žÏ[+ïh7^U%4¸|óPŸ[W7´_m¦´ðq¼å¢(5Ó„ë5ÑÛ‘R$khÑš´ž3Þ£¡§§£½º2¨Ã»9ê9Á]ÊØÆÃ^IõQRj›ÙsÜT‡gd׺©_}Uâf?%¯4F çÝ*Žl·‚ ‚ÓË3 •Tˆù©Ÿ“‘R*‚C%-d¦Ážc¿ ’¡¦—¸ é[0¨þäé£èE9䙞 ÁEý©V¡—â8Øk’‰4ÑJ˜»¼B¥Ç0Qã}>pl‡—Eº—Îàï( óø*ȆFÎN‰Ä¯çô¦,'ñ\‚=žSBj;»™[Ѹ”É ±í÷ì®âéiQœhÎÓªŽ¬®ìP+ã*“E[¤ »;K#Ñ[Á8eŽœsÂcÀKzã —mÃ@P$`Ó¼½epæy˜ÑÉÌ"%rx’ }+.Nð‡¶ÿª ÖGßa”t¡<ÞWޓɻò ±r.›óW»ŽÃÏá㸿ùR¿FËc@D”äöGJOÒ…¹oi97ŒÛøÈS¤¬ï Z;âûœ‡¦t²Ê¥äÔem&LíN~=a’ê(ñÁÎzË‹6ë<}3 «ÃâÞìq×’xBI¯”CÕ3ƒUyÌ$X«fCvI¸˜¸îòÀ®×-Ûòë)CÿœˆÒÂÞ0<ëÉ_•C‚Ó(b'ÿPB*]ë¸ ¡tÜäš|GN \V“¤s´® 6¸åg1ž“ Õá‹'¨E¹t’âG…:@vp°„Ï0"Þ b²ÖÃÖ“MûG¾®|iu`¤>}ÿP’‡°¥„@¿çÓ˜0Þ3ðC9¼· ÜEI˜tuî³;Ô5Ñ“²¨7¦[41nÊÃm¡ÿÑ$þCSL·#ù©ŸDóD?%Q8k»°ì‡D{Ô˜²ÌÔÇr¾§eŒÑñ2yÐÈ+x|‹1»Ð#ËfMh¨¾)_ͧˆÑ®ˆtòyÆ“¿žÈpï1ÓæaàqšQam`ØÞ³{8×5j´„†+¤ þØìXã3—3†–êó‘¼'ULpIÌ+6WQ¦—‰QqM£ˆjãíû;i̘U²þ’ú •eÙZ†\…¤‡(¼¨` šÑ¥¡É>EÄà­°ýÏ;ÔC*˜ ð$YI´$¥ub7Î;(ó,e0Š]Ⱦ¿åFÂî%ŒþåcûZpmÈ& míHÊ€¹håº5FÙ4¢Wµ¨Fc&ø¤Öu³ŸÃ´n‹¸´öa×ñ"£q6l¾h‰+t;²hº-ð˜UÙpH·E7t&Ü箈Œ‡õºÖRIñºñÙ¯m&D«cÍ„hÅfBzÈî3!šê2a(dß”R¢ËÓ½iàanÊ¶êªæ ré-WçÔ¨$+Æ&›Vþºà¨Œ?½…ÀN­¡á SEÎÃKx8ô:?6V®‚¨·²ŠMí¤v€;‚[Ñ1RòÁÔÒHŒ_­ßC-ƒˆµZN\KUwŸq-à¸kiJø2Œ÷uWƒÞ½1̱N Æ™N±¤tÎW~¢RìÆ‚ý8 /õ¬ÁüjOÓ44‡Ivq¬Üƒ‚usƒV hlÑÅ=2QB`ƃWŠ¢>N&J20>hd™&4LÝ܆ó«îÈÉT^ñ4™æ{¥ž‰&Þ¶ŸÙx[-õ5ÏqнÛaŽÃàÏ2Ç¡SØGÙ}Ž1áÒáç8þ]–×Í„±ž‰\5ÇAÉÂçŸãðáhsÊ[•;ÅýGÙ}Ž1 ]ˆŸmŽ£ðÔÏqìÎS?Ç1âé sèë§™ã(bëç8v[?Ç1Û—>Ç1D_̇œ ³P6ÇÑCvŸã@ ¨Kæ[™ãèsÁ/wŽãcaêºÆ0ºàÿŸãØkŽƒ]¾ ¹{ŽƒêÂßÀÇÇ&m7…x&…ÃÎqúrû«˜ã€°Ïë‘_„„77F¡ó‡õ¸Éö€Ý¾«—À¼ïS[g“’›7CßéH_Ð+-bp[Ë× qhøÀ|×>5Ç0Pô†}nÍ_ÉSqVۻɅ—jÔIô“Ú¾9šÕ¥îÍ{ud‘Źÿc˜ÎÙº¹]uOqÒ©¶˜ë0ÂÈðéæ:"}+Õþ0?oWÂà¿€Ö8Q¢Ãq¾$V„_s´|BOŸ¼9÷ãèHȯͻŽ^ˆiŒ+Ì8ݧƒ6Æ•€nê×®o‹£1Á§¶¸§Ïi`—¶8ý-…h?e[\“[uu³c]_ü8mqL°Ñ†u(…Ôw4`9@véŒ;õ# ”uîÕ7ºÄ‘Û¶Æ“”íqR“Ö8)›ó+[㸬«Ý=•íœÝÂÝ·zãD”3›öÆ“N7m| %xl’ùqèÅóŸ´ŒÞ1̯<`»3ÒW”]Ü`Çבl•Wx$nÕ€ æú?Å)†:Ý“F"¾X…d)È`ïóG^è³Õণø eW7˜ˆ9«gÿÍ]¦N‡zd¦'Ü»xæÇ,Dôj³R¬[ºI oûÐ÷j•êm«éŒLqXg3÷ûèxhAǘXìÚfQÏîàQÏ\ür|˜> stream xœí\Ys·~ßü‰}ÜuyaÜÇcìN*—-Vå!΃ER”ªHJ%9ʯO703h`€ÙƒËÈv\®²@ìL£ÑÝè ßîkÎÄšãÿ—w«/¾s뛇_߬~\‰øázøçònýå< Ä:°`¥Õë‹«ô¦X e™ájí¤bÜ©õÅÝꟛg[ ­¼6nóUëåæ›<{Ñ|àëiö_]ýñbõíJ3nÖ?_^ ë ,+IæÌún%œ°LûiævõìXî`Ö¸’û2so3s—yöeþ!?ð:ÏÞåÙäá µJ âì»iˆ›þâ;Q0j9 A¯WÀÙÇíŽ3ãxðbó ÇJ'ÝæÇÚrÇíæ6Í{áüæ*=¯´›‡íNéÀ´3qƒZ)§Ãæg=S6ï·Ò1-´ö´á«b™›LƒN¿M«àô‡­ÑÌ(©éz·d‘÷‰;ãA ×é=aB”ãðô‹ÄˆøŽŒ®›íNzøCÊEd¥qe˜°r”䳬€ÚB“†.š|](+Z¨ 8´Ä,5—÷³ ,Ôfù÷ÌÆû8„OÅ`j8l™‘ZÆ]Se¾$¶‘$d@9'E8ºŒ[e4}à>½çé&OS#xÀ±sZ9LŠ ³B¯wB2£­HÌOc´¶ËØšÜ楪Œ{2°+|¦%…É‘ã@Ö~4Ó(¨»DE8[›)Ì‚P–i[æ`zØ—•žèé#gëe<ˆÚª‚òCÚyªÃFçÄݦ÷´ëŸëAéTЦÅyÉeåò¾Ê…"q¯G¿ŸH Ân9ãlpÃkv¢½Õ}å­p‡ÊWK£AIÏA‘nŸUO2wÔ~‰U_N¶ö’õ°ž’Îv¥tIÆ»ø¼va4öÄ\4vpXs©ß#â¦ôYÞs:Ö2Ðc½“š%±ÞI€è)â"win-pÁHؼÝ7Ýò—à.¹à•¿@ò€y8sÇ ¯]ísÇ?åMÝÔ w µ øcŒçªGÙ¡ü>“{žgoóð:ß4Õ{)-½ÊÇælqZä³<• ¶`ŽŠmdË?PMÃÏ‹c"¸†37\=¤Â¿¹-Vb‚Ÿ.·ÑÏýmuñÙÿÀÄ£›I`¯(‡åÛi%"š›¦ÀÞ¶v“²vã©ûÖ‚y5•bq5ε*IËôX­cUi”KÆ2Øei\õU‘˜'RøÐÓm!ÿ’ûY±Šü8¡r3Tˆ¼5q ÜÜZÀ¤*[ñBìKÀØú±ó9Ô;´&Š5¶p*úâRB •NÍn+0„ƒúH‚®…OŒb¬–\©àêŽÎЈj¶AÜBN·3–XÞ&×°ƒÀ þA…lIL3'TX˜ 8$!Õì/žëØuþâ¹ÔŠ Ìy'FY¾Hýnso.*„¶h†¶^h»‰tÎàU)!5R¾×iôoâBäqÚ{ئ …»¥Ž ”Ó±VïÔbç±Áyì‚ÑÆiÀõšUW¸R`B}9J°·è¼—J¥k€|Þ†˜º^-wt«Îç5¡6*BÚ¥®ÞøxÌ…Ð ŽvÕ\Î×¹üz»S":šFƒ2n²#Ø^óó!´z²íÊn6µÕF—]RÇàb¿Ú33â, Üß"1 ÇÖ0Ø,¹iú"pFÞ¨†ïß›S¼iQâZÇÜõ9Ôtlˆh ã?…4³,ÎÊr¥o¸Ñ{zû ^ô݉^SŸY‹P¼FW9¤ÏÜpA±_Mléz°pYMVö˜ü=ws{¬ß¼Ê+¦Lx8v~¡Í ¦C 7£©Â©LNXó–Ü”„̆ÚΡ-Ü™ÞÉkcéÝBö¤¦È¶;ìÁã A_¬7äæO[/Xp¾¸ "J§¢ ÓÓÍÇ=’’,¨âcB‹†™^ £'jä­2³iÁ‡ô9ÈDR „ê¡æ‹×wÕ@"ÌþMk½Ù¦g.¶`;žòs(°µ¦ôÀi¼Ï!&Ý´(¥±W&b±¥ðU~“‡Í¾ž\MF&@É ™…á$8¼÷uÂNž† H m,¤ca¹Ñ½dÕà;9f±¼…äðM7ç²7ÈX)Ü—Ž=‹Æ n+96(:ð |¡J,TT@y¥Z)^a;<ˆ*#‹ôt÷Šì°Œ Iseéfèù©ì¸†Xv=}kkâÌY͉è]àhà»Q½;E±Ü[¥@†N¡d³s[_°?;¿:8t告ÜW˰­a!Ǭ+½9¾D»ƒñy¥[g½v4=¤ËCÚç5fõŸH1¸¦ î‰êzŽ+y¨}ÛYÅ qWåõC]ê¥1ÅF/Û‚¦ryžn×Áÿ¸œ{UI. Þ»¸%¿¦acÏHbÒHdb²‘ð’ qê÷ió ‰Ê³Œ<,›Ó)56P¦&_âSäo "ÆTåÚv#Τ¦˜Æ·«¨wÖ,`fgï#&lpjléi½Ó Êtu¬:sÕ?{ïÞ„Þ|ȵB±ßÊ„ž†½ÓpÝÎs®Ó ½¥‚ºœë>Ž;žº_ÅFFl·.§Î«'ž9Üzã*#ˆ³•Ï Ð•t0 Èꪰ™cXö~|Ë­FÃýÏÜÍÇSy°QÒT»{†’8Œ·º Bp.tý ·wRžä†bYK £_® z^620¨@g½eÈ»NÄmP]ÏÖñfT\óC^Ë¢8sû 7¹7 ‰0t1¿‹¤ ÂÒ.&mE¦&mjQ’.&Z d$õakç'‘g|Ï{Üz4á¡…Ii´›¥":L™‚û™gìEˆ\þÄH¹ãÌéˆ\ i´~Dî㻑>詳ûHH®TPñ_ œå`åç‚ä"= r4$WB ZVéÎz©ÉM9àS@r¥`*»TpŒØcÌ0éCi–3D.)κˆ\HXÁ+‡ÈEýyc‹8ò¡Lñð-y"v>¥àèrÇðÿ±4¿¦ëìpOC£±ªN“ó€4ƒfAÍZ-$é}zZ›*åÀI®Jþ#1½÷3NÀTxS„º=¥‚ŠIN#$׽ V:‰Ò6\Gxn$§Ì¬JŒ÷*áì\/µ##'ª×ÏþwÇgÝÅVy…PEÈ3¿ñ“©Û/§Ì-ÚµÎÛ¨«˜¦Ì˜â³ÏIŽCm62øP_UÑùÉ=¾o†Dϰ¹‰Ÿò®`ðŠ¢÷‹ ü_ÙSh_ &C†¯—AçH/>RÝYX™ôíÀ}œ T­9ÇæÒtWc|+RÅ]ÏëÒ¸ôÍÀ‘rsÃtø­…nBø»N^ÛÉß’Î¥ðélm­‹¼¯S8ßÏt±ÜK¯o]‚_Z) <€¥ ,¶’‘ƒ½Ú©ÃXV±Í Ölì4 !š~ÙÞDŽ ¯"Çg0æ´né®ÉÆ—…H›' 1 ¦×]!ï$-ïR3ÎJÙyïÉîTêÒy¡·–?ú—ã`ùnšþ$°|%@uÒXþ8s:,(0)åÀòë ,%ŠùýX|¼öûUcñ¡º í;bñǙӱøÒ §WŸ ‹Ÿ÷4bñOßÓˆÅ/ötV,~ÏH“€ Ÿ-Ÿg,ƒ¤×yi)ì0Á!?]Z@!~•¯ÖoüƒUb –»–þ‡pn 2véÏSàÜ’…ô:”»þùïÐÖÎ ¡—‡_ œ›XLíò,3¢DªÖÔfï¬áKFÖ& Y‹9¶ùÄnH{UŠÈe*ÛRÃÏ’ ‚Sò,˜äû“W¸y˜dÃ'°Ï1b"ÃYçm”É}©#ôG$H²¶¿Hrl óÇ`’¥Àšì J¨yØ\‰BEL²Š™Ç8s &Y1í#M¼æzPòa¥CÕû·0Î?§ð4íàцDÖÖ3'õR ŽXµ,.Ä:ÍÃÆ8ÎqïÒŽDäkD¬– Æ¡ëØéI½Mìq©ª¾Î g–šÎcßø)ƒ¹0uhÚ]ôc¬XXê´!–NEÀhZLͦ׊ìzïí ¿w‡Âžší“ȤĺvŽ߸7hN↛žµ? @-Á@\e ¯qI`ÕºÃÔ—@µ¾<³7PˆFV•Z]¾À!æ,Áã“NŠÖüÙôâ002½ý‹°®ë$ï`à|l¨]w^¼J×b¢ú‰“×Ãe¦Õ‡ƒ‘-X¯µ`‘géïIZŸa‘µ0 >n´|òxÝ|6r¼¯T}r¼õŽ?S·±ð-™ ñ*Ñ^ÿï°ÇÒ`^TAh{ y‘¬/¸Ï‰=øÕ-3B‡¿NG n™ {Úz4ýû yüi‘ÇOó#NÀŠvÈÖÆ¥+D•P_\CÞ )šHÈK‹i8Ùù·«ÿú¯Ð endstream endobj 511 0 obj 3708 endobj 515 0 obj <> stream xœå[Ks·¾ï!¿aoYº´¼ÇÈŽ%§TQÙbNq2)’ªE¹ä_Ÿ¯™A3³$—ë$NÊÁ ¦Ñè¾îÆþ¼\ ú¯ÿ÷ärõ§üúüv%Ö竟W2ýqÝÿsr¹~~Œ*®crf}|¶Ê_ʵ”®³Á­½Òðz}|¹úÇæ‡£­è¼RQºÍ»#Ñi­„•›O4-½´:nîhì‚“Öo>ÒX»äæêh«ƒéœò›ÏGŽH*·y›¾ ÁE½ùHG«„¯h°mniÚD+¤þçñ_Á¹–çK¯Ö[⟬OÁò|/±5H}†Ñµy]fg¼gi«¿¯¾_™NØõ/å‹•tÁâk/œïŒ^_®pz×™0Î|X½YxÃö p/;gÍΚ,ï·…·…·“2{Q†ß”×eö²Ìþ­ ïhh”Ôš-È2•sÖuÚ„“0¿¬}Ÿ”«­W¤$ÒŒà=+Rë }ØœæõÚè¤=#|§EHÇ2Z{É.hV S¼:R£4&Û–±" ]ms^hð陞Å!?YCP†ï÷mr—¹³‹ßåïB4Izýê3šu]ðÄ8²VúJ7G[ð?Rr.f­S‡Î7HòMQFk–Y/dz ^VÚJf©c€ÁXf‹FHŸ`‹ _t•-¶æ£do>4œ3¸¤×^‡æº¼`¦‘õ#UŒ´$éÁ¥è!;á´5|ÁUþ.hÈè¼LsHqÂ{£} ¦ !8«F\P“ñ™—Ÿ²æBm¼YËVðËþ,#4ÏÿžÇ6š"š¶t¾ ¡ê(*Ö¦=š×)­ÐXæ„0X Öˆ1ôÖot¨Lô2q„¯ÖmhMŸìQ›0ÍBÒ‹®Ô ÚBŒ¤NÍ”P?>jo"WO+òöNõä¬wÑ÷Ÿ¹‘n Wu€ bBËvk:@€œwŠN“ÅræØ±N’ZŒÕg|—%ÙœTÆA椼#ólúŽÙ#³XNãÙ %5'_ ‚½Æ…—½A"¸*e1õ®|—}.â²î"b¹ÜV“ïúu6“™ é+ì6}n¤we Ke»°y‘¶µÎ¯m%­|¾¢-BRvðu1&ék#Aâe–/¾JÓЄ„iŒ+>ä̓ƒm¿Ïc(Èõ«Ó’s"í:KáŒ\³#ÜÚIo:è¨Ô@0g³*”p¡GÂÀÞ²è캀ëÕñW$52 Mêì:ñóÓrœž ÿ¤F ÒâШ^äpg¬!¤ô/ <‹.„af(`B™ä)sü?ŸÅ" ¡Ü´°$-øs~˜^—;ï¤Á"µv¶ÎB¥Q"CO!†A”,~É€®ØôuÑØ ›îñ$®‰Þ{MÞƒ3á/d$[±Ø9¸Bé¢Z#DYR#aKøƒÖãÌ>ØÒw.S€©¬ÐRèÖâÜÑì+šÎ#‚Ä(+A2°C+ ã“ñ ‡…ÎÉPú¼°Ñ:³|Sf÷¶bˆpÓæÇMYðyvíû2{Z†?ívÂ’ ÎV!ÜŠ>Ñù&YvԸÒ¦|™ict<7ã¶Ïýƒ§u| s§ÞËàD³éØ’%_8%«PBëèÛ[¼ÇV³^'ªLä€þ`Ö­­ Ø.år‘øöãÌþq!g Úýñ3 ay;s9Ü×ÁŽWÐY2¤7ª†™’Õè§ $áÖ$¨¦2z½”r}¨>Ü*ƒ Vû°/—@ÙmÞ‡À$ ‡†¶´­ _Ìç¯ ~!r²S˜‡½eeí¸¡±-Ê a\áHñD¤B{¿Ö5mΗsøv.)N²?±Å_z0©\…jS&$¥€aÇœ Á§i”¢È·9;ýÚÛDoi\ЦJ·çÙnz}?®¯it‡h¸AÐ "P•gö¸AHi"ý~k>ö™óG…ä˜PL/‰^ÜX\çˆLÆwpMîÊ ùP«5 ¨o¾Ë¨ˆ˜ˆ$Í÷N{›§w¦_ô¥ŽÕîÜ~ÒÍ?¶å|qÐ#ñ$ ,‘«\b®jã8óø¨HÙ¹ËýztÃêÌïÊð²°üílÜ|× ÓÚ¹` é€C 1çº.•~ifM@ä“JKYÃ/ME(Žz|*¢q•[²Õ¹¬è#\±ñÄݸ§·ô}qUq%9ÚX8WœãÄ)êHª?Ú\F>ØE;'F:dlJiÖNÊsmA-9È \Lë§JËù’ÕÇwôZ(rL;õ†S¨e7oKw飒Ør(Ê~É4¢6‹wZKœ’ªm—èùdµ©ÄèÀŒ1Ò# t »m²¤T¨ÿº _—áñì‚—•+ææ—¡> ]›ˆ-´§.ƒ± V 3{tM¦€ O“ËðmÞ”áÅ8L©"šÑG~WäU‰6ïËì§*'œ 4ìçdxèêdä¦Ä¡ò’£4hlX3›ì“j9Ù—1f>~?X#ÃÁSö¾ýj ¢¡bÝ×~bÿæ+@ÈþÏ4ûÔŒÁ®1¼Ï@ÿiØò«:ÎÁ“©+º ªÐ%â²)Ê2cŸéÓÆÍ%ÍŽŒ¬Íi5 ƒ #º“R>-·'"J…‡åödÔ2æá,ó›,þSÏŸÛ T°^%“öpaÝf,m‰¤p†¨òädÝÉ*MäE‚$-~ÛŸLw˜$P|¼T ZB0_ú–Ürký`x§ÂçI¦_¼\ÊŸ J îàO¬ý÷2|U\óÕîä½¾f@ 9И„>&èK€ô˜*¼Žšlrhã=¦!¥ÆéÿHCÊðî=kH 3û7¤@¡3Þ>)«t|ž]ËbÓÿÛJŧĆêÑj£_ÉŸþ}š]À^ ž•áÄÒì¤9ÕÆÒœ:÷Bó¸“6 çÅw³„™\Þµü†'BfG~ß°6™e<\ÃÔ=±Ã_UÊÙJäa0çGyÎ鬬˜Õž‘ö ðU2˘¾jˆL$p>+¸s‡Ê "/ïÓ~ê¤Ý„0¾O3œ î(9=ÒaÀ1µK¹ˆ a¬FÔGš8ƒ,žHüIëzöا…ù✜£g¦°r&¨Ø›Ì1R/(þ¿¼9Jÿ6o]R*=ï³ùÍuaÆ™ýÞøLòVOztðhŒÜÔ-•Cå3¥‹iÍ,¥nKo xzU)‡Þ,fUœÌ--÷@è;û–´¦44Y Ý©v›´Ö7…[b yàŽ<8­°Õƒu&öÝ ;ìEÞοXCäM-¾fGòO¬„hy‰b¦lЬ«Âz-ÊE : <çp=­“åýâ“Üvùq¦”}#ÐZ)íþb¢^›¡“\ŠËm;B½‹‘$¿Ë¦ZàxÏ„”¹þ_’Lù5KZr›-LzÌ£ER×Eýa[îI_¯BízŃúÆaæ´Î‰¦½«á‰ ] Zé™X‘dÅÇ3&Aa¡ðÆ—/4ãos .¨ec«‰S å±¢þq@z¬2ØžþfàSÿw)g;µùÑûßRx¥hÐØïñ?â¡ux§Ï•1iRªK•`mæl„L».µ* ÇЖ SkEoÕÙCHÙØ£6ßI¾âÂëÞ«z[l®±§§ϨzKO¶v^£NÐûâñ%µ4q{>è¢÷~ø’¸P“G(4u8P¼åý‚Ó^Ònòc™tÜÝM–tÊåî'ÈXEifÚþN-@‹¥þÉÐnFt-ÉKc•Êá µ‘#‚³Ì„³^F´–h«GQü…Ä÷<4MÁ•1жJ†Ôxb!èõ„ê qoM~H,¨«ÂﮫÕoÖˆE* rùmèÄ3û·bA‰ÐÓ~|ò¼Ìî™ÇèØ¶þ€×pݨ‡ýp`3éýwÜog8ú9¡]oq3¥åI:±Tãp4”ïWÿ©W 3endstream endobj 516 0 obj 3405 endobj 520 0 obj <> stream xœí\Ks·¾³ü#ö¸t¸Þ«Ä©”Ë.ÇÌ)ÎA)šIÉ"e[ùõéf 0ûàR%:)Â<úùu£±?¯8+Žÿ ÿ¾º=ùãßÝêêþ„¯®N~>ñ®†^Ý®¾8‡2¬ VZ½:}’¾+!³+'ãN­ÎoOþ¹ö§œi£”ÑkvºáÌ#¹[»v·šºÿuþ7XF ºŒ2Œ .a©ó ˜ú{,”ׯ­¿ŒÍ`½\›{Ï›þ:õâ>?ùîD3nV¿Â¿:Î[&4B2gV·' nj™znN¾ï’¥ÜïD/àCSæ*oî]ÞÜ‹Üû67̾ÈÍ÷¹y›7ØÔR(µ¾˜z5K¦m¬a±ÚÏ‚ça¤*°Ãz+`ݧÁ¸õZ¯ïH÷›Ì¼·¤ûÛ:(ç=l(3uè7\¨W¥a˜ºQ–IïUÚÅu>ü]>ÛÃéÆHÍœÔGd¾øïWÖzìAŽo`ÃSÏDçtÌs½•ã‰_osïÁf•_ÿ°Î#¾ÏÍ/óàosïy5€k”ŸH,”b"bÉ`5(ýá´‚ ˜¶¡¤ÕWy;Ð*šÛõç§%C` WÛfx{ßRk}vVPb†H@s$°Ùˆ$³¯òø7¹y—W¼¯$9í¹f‘äôÙÎÌQR;ªd H´‘À%gZM=ûsf`ÞÄ9™ˆÜù¦)’·§) üiÖ/k‹›÷ùL—¹÷—æØ›.ñ­eFY—ˆÊô©_Ë€î„èyñ5x®v$>!(!ó»|¦‡Š@©ù²»øŸ ä+®XAûÔñÒ+ÜßBúä•$Ú!9x;µHóE“!ÏŒ Â9 (eÃÐó>  ÛT`g>ª\ü~ùÀdZP> =எ¦»¼9ô§æL–yªcÏá|€˜öÓ‡›Š¶éx7G⃶Ÿš>ÏØFø0ô<‚þ§r;ºf"ùÄì\5qÑïÌ5ë óšèyñ!dP^î¯ûðáwæ`Kœ)ʆÔñ.@láå6Ø™ º„NK6ˆálxƒÀAÉÄ…Dä‚Ï{š~̽¯ssaÆ^²»vçe“B×Mãy'¡Šxþ¢Ú{úî}s 2Ûe½µ’’¯ª­¥æ}³—ìá7옖¦ØðçŸ0{ÅèÕ€™X”jp?&·¨’MßU“Ì(pÕ$ܻ֡RZËxª%Z0¯¦\e\síM˜2 æê‡í s­Ô˜ Ìp7Îñ”A5fnÕ”ÑÔ³&×S†Á¹& óÌÈY)ÆIôUêôä1­°þyëë±(z´èôÿ}¨X¢è35’¢èSDŒÏ^FK·ó”!Þÿ¨ÛyâhíÙ à±(úFò˜Ý8ÃÓNÖ†!ïŠS—ä¯.ÁÚÒaœ˜ÅkȸÝ?EâexˆK(%¹ô&$h+B°¸7h[ïEqñM/ǰ-^cÈ]úpÅ®ƒ¶*ʰÚÂáEy`Üò!¢Åø_r0 c¢”8ã#]p§&hߘhFÄñ )„ži»Rq3â]º Ì»©ç»tÉBšqc·WOÄæ1îÒKÁ)¹a,ÓÎŒ|— %L‰¡J9Ó÷‰!J+‘ø¯Až¸JüWÊ çÓ‡1À4-á/¡×Ÿ^Þ¤áÆI7¶ã§ …"âî<{%qFi“ì:Çñ½=’SDéÖ–;nã$Â3ÇSÀ>|H¿È½oÉt?¦ýá¶éât¯dºº:>ŒñJMŸ¢â\¦…¬ŠëKÏàìj8¤!ŒWÒY 8æ'„ ÅÌ—dÅ‹D4«u1$Ï7øbKªkè—qv ôþö*%·-Šy ê(@[«HÞiV­@>µ±W…r"§å~ÍVãšHW%FJipN”½•(B‹¡‰$òô{³N, %ÎlƒGROÝi+Çï¢M|‘¦ó²;ÙÝCÚ‘åšö»fã~Ôre*¦´]IÎÁe¨¤#M-D‹¢¹Ð-õ·$böÍ90žaA¢¤¤YŸ:µH™—¹9ËúÄÞ›EÉÐ éÒN„n ^»h``ooÛß/…náD\C¢¹…b‹’º'”ï{ó¥†hnKã÷.Îç¾#“\”"¼4fýÛp«:²FìÓ‹S°I`Ìhxð"S7æv3yЄŠÁ”vÔ}PKÙ×Óiø\ð™÷k>RU ÔI#ˆÕœ¨cFvhåFû krIùþ¥KZŸÅþ†|N–L5W`¯¯U¨ðPÞ_Ï 0ê£âç-db؃vŽŠÇ-VøÀžØTÂP2W‚¢¸fB®EjqäG¯ŽìãNú§ÐÙ ÚL²fT_àd‹jê!TûË©¨]¶:üøUçÀ“ ôÅðeÌòF›ø¼@æ)2ÁçjIüEÑÆ}¢œâMw8¢¾(.\ØD ](È-š_½Ìà†26ó;*Štà”­¨€I颵òƒ=Å•s­ Q†MK0ã¹à²Æ‡-­ÝæïŒ&CÉ$âÑê8zÜrÇÏ…&7ôà|ÙÍ)ÇUþ Âß’V(î 7§RrT®é˜i'N¸ƒüì\Å^îȃŒ œžÁçñ‡mJJ‰àéÞþS ʨң5á/&Í”êj¨“1™š¹y—›$™Çv4Ôˆðþ3!prÆzòwha†@ Õá×¥±‰DK]y¢%´ë8ó¦F‘ÓœÆÁÒ4؈l(¬dd£‹eúøp·–kå TÈ S _Á$—ÂèˆðCšÐ™°ì„ÌñKíëNBu†C Z´%€~5«-G€fŒ_¶ô‡]§tŒˆ *§z3m~&`í}›”UìNÑÍì¥ Gá<Ä-œ*Žíh·¥vhŒ‘u„2 ©Eô[ù›ÙÖEÊq²o²¶þ#7¿n5[[ƒ8<;e6)8Ë*šÔÕ!†OT-+´¯%˜H]Û8èå‹Eçµ`ãÆvëôÂOíwñiu¹É!ÀC¸ -y¼é¨³ÅAãç>žn•‡©=4ðÈú^òÐ0؉ࣵbR–À‡æñ.Ò^iâÆá¤JŽæ³Ò¸E?nDòãõÜÒOí®äkÌ(¦t!Îí|Ø)Nšœo‹Ê1ƒGöýÆ2ËÕ´ÜÓà™ Ë›;ì:i?Þß'&«*z®ÊÔc¸ãC+Ü©R:ä·ÄXŒÑnˆÒ#Úz‘×a.qJ‡ *…c²övGð`ø”ï•C«1/myW­«¹Vco°5ƒ&øÕSeÊ\Ú¿-NåÌfrÌbˆ= rŸŽ>àé~jÝ2ÃÅãd–˜¿Äey'D 9"kŽ@Aº™˜ß&  ¸c8. :ó®4„>UÐÙ`e;¤”à‘¼®r63¹ðê÷’{’°M9œ=ò3ˆ¦„÷\N*]aÌî!L¢‘¡óLð%“a‹à ”DS¾HŠÎ’hÆ×ŠkXafò'!( ¡~E°Û}ÚØîƒâc¥ÂÌ"ø">Æ­ø0Þ€RÌïñf·—£à“xó dI¼Ñc%â•ÙÅuÅÔæUMtw8· T¥•÷c¾2õ‚I0€•WÜGtg6;öfÖË.åð¹b  –iÖµO·àBò·Ï\‹w•‚ÈXj¯vÍÆÓZ]I¢A¶R¡!£;.½Ò LãS”æõä ÃÔÂP팷)ð—S½ë»»‘W¶Ò8&¦ž&îš™™Li_;žÈ/ÓÌu÷Ô‰n$F»®~I±c2Skˆ[×ñ‹ÉLÌ¢¸yئñwZÊ[·7¥ … ,w´tçD }nŸ„IJ‰e¡;jlÄuÏøD’ÙåR d‘q}ÿ–xXh&¡ii´"çtÏYî`a4ø=ƒ€:^úb­de"ª»ÈÍ«&.<"oÔ°Î©Ì p¢ôG€Xv‚5Bç_Ÿœ~`e¡„M®BÛáã]í÷¼eÖâlK$‡1˶Øöxš¹÷æ<ç­lëSÅ™oËÍ‹ÆLæÈøN®À‰>–©ëïyϺ‰w¾g¦Ðuâo™ÂQ‡A«º®Ûv‘R‘dhöè ];¸Š èˆ;/p'£É06çãyé²QB3ájk4ÖVº-‰Ð º¹ à@ P ÐGá«îŒ|"TÖböãÊö`­L…%±×šÞµ93ôV"‰ò &]R&ØbÌdiŒ6·£óËÚÿËDÐA>¥^òëøGŠªžÉ+dZ¥zÌxá»×Ÿ¡¥|™ŠÂ¼)ŸRh4d_Úô»sCoY¯›ûU'1^ŒwÇø³}®÷iB²Ã>J±Š”Êä|§†twÊÀp+S¿bµ“C6Hɸ›9rìVù<w [àK‹NÌ^—êÂXVP.8íƒ^W´k‹Z; 2é˜H º.öÓÚÞ•ÙÕpâåÊâ¥Ô6h!,2¹Xò˜½þ1€Ù•ÊìÇb“H˜ý@4Ï×¹yÓ‚¨-£$hhΟÆ‘‘–•Ñ:Ξ 2¦x}*—Á çªt‰èDzt!~ìÉâ\¸âhÜ‹qX±­ð¢Î®¡øšUV¸guo^qÁÖäAÉŒâ„uÍ´ÿ]Ú½ÚÍÜ7åpÓ–bȣƣÂåzòfág;2ÃBÄÖ•â“àߊàŸÍ¨™­Ù¡I¹ûĬ_§X€à¸'(`˺¯á;#šî¡Î¿ÄZZyP¿væ5'h€Áõ"6s T¹z·…s/?« ­ Zƒàt­dpŒUPˆ&Âèú;z€hvlï}Ç.ØŸF¿ZI§…PœÔ™2¹IÖ®p`Ü,N'™`TC”F.DBU%é;+ް®óåG ©KØ Ý"ñêŠú™‡º®Ä{÷©+XÞOD4k.6馀*Î$“aæ¸ >i¨Ó™O츤CŒëp\ÒiLë%ZÏq94/f‹<öxz·Â-A ¤ý̦Òè¹ñ,²¡öKÇCî¶y·ã©)|>ͧÓV/À"›<dã—>Ôø$r_8ÝK,L’ÕGáUÅÉRm¢Âö…ŠOÆT•J»]«“&ùÕ§—ËÙ ¼Ѿ®¿&ï-‹— =bT&° ­‹™r‰o›Ê7}_G‡:Ц@`š¤¶Ñ½œ¥-ŠYúP† z–*Žùäy ‰ƒ·Ÿ±Ä,4Å<»*™T:®úŦs˜dÇëfLË«ì|ÁÙäë ص´ñ±(ÞŒó ÞÇÇkŽëêñZô'IåXXS;=– kÃqOõo÷º°êò{#BÐüa?qÓ!Vv3¾Ïÿîä¿ñ©„µendstream endobj 521 0 obj 4156 endobj 525 0 obj <> stream xœÕ\Is·¾óW¼#©'Ø—«ÇN*•”mÞâ$‘”T%Z’åâ¿Ï×À, ðø6ÚNé Äô½~Ýá/1È ãÿ¯îÎþòƒß¼þt&6¯Ï~9“é—›ñ¿Ww›¯®°@ÊM¢SÎl®nÏò“r#µ¬Ð¯ô ¼Þ\Ýýçüê"èA+«Î?\\*ç‡àÂù»‹K1hm½òçoÙøîB "¥„*æ?ãQ/ël±ä†–'¼pÅüŒÖÞÄó—rÎxþ@ïéý¯Øƒlñ{š¶^-Ï?ÑØ{T8ÿ5Ï[/ÞsÏÖN$­ˆBO[Ò‡ùçË’ÿ^ý,Õ%KµÅl½º©#6sþõ2ü7 ’ZƒË­ßÍCzÇ7Wgߟ™AØÍoî·gZ3x’–¼ÝÜa»¢fÞýØÕÝÔPœ*àõ²ŸËðŲ÷ûeöÍ2üjþº ß.Ãw …ë✵zZCã8ñòš “TÒã© ]ú”5Ez;Él\M¢t*©#~ïnh’#½UHÙ-:çÒ‰1§â¬”Ú>|q¡Â`tœ=5î6h“QÈÚ†÷ ŧ+­ºTÊAY7—R Ö8™ð’‰k6hjh„³¥íqŒFa4{Tx…̳фq7I߯3Ao-7CÎèÛô#ŒŒÏ3®ði¾ÎøJv0°¼çù†=Yz´E)u}f"°ó¨4 ØêNïô¬•„ÆÆ—°5MV«ÌüÓ«`ôø`•ÏûíAÛ²<ÉÝ…‰ Ü¥r¶ŽÒ¶Pà_™‹äæË¹Îve¸¸4Þ€M™±Jhý$¾D|\m±¾GävåÅkãåDž“ÊøA›<^wq"½²ät²l²oô2Û¬µ£Í¾Z=\G7·b°…‘re‘ˆ³ÇâëLDxI^îȆLY@ª•1°müœü•ª¶V+åBèzÑ´c_jÇeºŒéÉU;i έ–{“‡L%:³Í‚Ó‹°¤‹’wåÁË3¦¡#IÌ §v›ßçuÜeKk)ÛRŸŠpÁa QPNÂLI¡T ƒ¶³ 2Íãz’Ç.ï ­ž¢TTf-ßw9½3ë°ñÜcýÊæÙ«æ‚ïæÙÙJ,¸»ÁnPðÒK7˜0MìïA/QŒô¹¤ýÔŽ0ÏÞ/ÃrI³Ç"ÆûRtI# .# Ý¶„Òk¬™´ê5\SŒoèÐØ¢ŽéÁÙ§ÕêÈÈq,ü&“ö!>½ÏÏ'+üÀx2±2yW¾ ÇÍ Š!ÀÚxþ M+#$\à—dñFš`yÈ{ nÞuo÷ÙŸ:íwÁtÌSTˆ«D¬¢Bé\tƒ3j«4}LùO;„‚MÎ%gMD>8c« )‘A†öá§ cü;;«Ò¶ßC×ë?Íu)èI€:ň´‘dÔùíÐØN¨å'x72ÛʆW¤Õ-¯ˆ 6hÿ)ö¹‚Ü8¯Iz}Uó̰èI(¢© 0ê¨LîoÕcyíMšE¦(ٰ媄súF8+êAK[£†,@Yà¶ŽúÜ,«G¡•Ÿó‹d˜—L £—àI_[`0Sâž8듉H,¡C9ž ®á[É×¾5‘ ßêeg˜ÑÌÆN§¹NpE…×6®Ç-ªÒ³çTη”ìï©o„³˜è«JøaõdZ]†LrtÐõ7I¨]í8ŒÇj,-G: $¤!_zLˆƒBÄø–¸!_ù–Ï§íµ‡ øu4ÜÀ¸®Œ.ÃZØàKf\™ßv4˜aO±SÅ¡-´1µªaºJcöpRi»¥½ipëwLÞ?eVó—&þB犥Z½–•TT5ÄÀ,p‡]/™ÓÇ‚ckG 8¼[ „ÞC…ëdä0ãg­êÔ!R˜ÑÊB=MfÖ®%³ ®EkDj£÷"óxXt†v€DÊ6Wÿ<»zV—ïµNž®W“ãLhz´ª.oIËÙ–©ÎŠãá»É=+ù¼2ߟü¾ý*¾ºrŒ{½J=ˆwNÇRy¹’¡¨u¼`•Ú­Îe€Q,fUÙ&>kÓ/ak¥ëy³ž0yôü<½ÜõŽ;F9k?Mú?ýÚ4s¨ªÌÁ*ožÝ¬äž–T&I,ˆz)f…òÁ7E"6/LwV(0¤,¨ó£—­'jZ© «DMª ܽ´¬J@,ñn# È ¥wS/Íi‰ ò%Å~-q jwaETÚEÒ äüÞjEHÓ’BD^¡-¼ZÚ‰ŽJÄf€TdJ³+c2[g~[ûbÜB·@MÔ ƒ_uÁBdçuÚOÓ1vUúCel»¼ÌØk/r#Ú’dÎkÒÖ5ä"k‡–v^‚ÐuixŠm<ä¦'Wžf}³¢8í/µª¬.Êk\n\9ËÁ 30^æið* GäQT"rà ”ó•Á­—ưd‰7¾Ç” ÊÁÔÅI$wa><’Ëc}rg” z³µ VÚc‰h=ØàOŸØ+ã`mnc£F²á€¹• ¥Ÿgö‡Ý @9Q tTbÿusöf¾Z(üüì.Æ“{Ò¯ ¼6ëŠ;é ¢ŸÒQSIDã ;~Èu!!JüÛñF—þ¸§iß úm|ºloѼ”í®vS¶g8!o4î›íuÆÏIô#uÂÅÐ쑪Œ"„‚”Un1é” 4*EÙ¡ÒÑÃÁ¯s&àeY”Iž=dÍįƒ,°È.™æÅZXDˆ¥»4b+§Š¼ÓŠ:¢Œ(à’ j$Ôq4Ñ”à†§#òf<},]VÁÙÍ¥¢þ9ô;í㇤JEé’7D>)¦R±ôÒNY€ N&ݧ—8*F¾Ï9.A¹/Ž.Ñ(Ò z.ÇÕG¼Ë4Øk’ö›h…ÔMŸ±ô 1xJôž¦7G•ZrKsnš9¼;gàsÿ,Ý9KRk(ßÍv‡’´¬S ¦rUóõ¹ Q]ÝãÖ"®Š‚uüÂ#ÂÞ];zÎJù;tíèh2672L»ž‡­9Q£¶z#eMh—ï¯Ñ9J¡vÝ ÏcÞMàgn”SÙèa䢶Ýô~‹ÉyȺµ1Fº¸R%?\ê˜ÅÑõ¶Nü>]œ¬š…4ë·7 ¡|ì—^xA©r²DÝŪó¦žçزTõRSç’FHí¥kå,S68«pÃ¥O宵K7x!áÒÉiùQábÞòÀ\°oO›yºåqHHX¢¶“¸^O…I³±ä‚áz]³óÌ®€Í' Äs”ë=&_¨¤äì ]¤[Rø!ÎQl‰ˆÙß3ÀÆé‹ÄîÙô4a©#Ä%ùH0ULA,Õ‘ò—¹4þýr6ºíÝò€:'”x´†.xêQå`©‹ç™$áp-Ѥž•}Tâ§ËÁ ÄÎ:¯Väá‡e1cì§ŠÇDÂôÂ%u ã1ü|€:‚Ç 0«Jïwï2k“0çÏ èÈE‡±°•Âí2{ÏÙÖjÐÿt1§ˆ)JIji8ª}zŽSª5ëE-¨<û¹¹àÍ2{» WÛO³/ê=×neEwQ²|¶ )€/ò ®d×ÕÞós ¾¬ðáJ‘ï›<¬5}6?5g Edž©mn‹ ?[†Ó¨v/¸®¬táya 1BúQVwúئßWDVxÝdp¡‡{¥"ÞÛ΂™ØÇâÔ[„„Pé-•[ý˜™ý5¹|¤–"vR¦ŒàÆ2ò”™ñ ÀOêøgÆðƒèÒL#愌‚ˆc([_[æE¨hš_(òB>²â÷m5>RœQt•nž9$ÎÐ ÙDçÞá@mgOS‰´Ëîô…HE9›Å>¦KÌ ©¦Òb^¡•$_E+D IC5!(ÝVÄŽ%:Ø›¢+ؼoSô!ï:\'8½tÛ“qëìî<¿™õej)4öA)^³ÒèZ\e §¬Ž.Öª£G˜ÂXÕ†°›{‚ê¨f=»'/ò\‹j>Ô¿û{¦¥› ”*êËvû3”Ò+=ĸº!JϹÝîï^g"DêO{ˆ¶/oc5¾HLv¼¾ªFWÓ¿B¯–Âsã^ù¶sø†GÙv¹;yGiȪ FÌ ±H¹§áy8ŸgÂl|9^”Ì]}Jfgy“9‹¸X¬½Í¼r&U2³;ŸÈ°ŽÈ=+ß°~æxÓRW}ËUÌþ}ãu¤é­ø”¯ûY]~ÿRUŒÒ‡nï§;‡q{³'3u-àßÙUCÞAhÇ »q£Aîj ó~M­ÓXíÕÃÛEÄ^œ˜”K7^c¡µ*]ã÷,½Äd³×Üð<¼%öXÞ»¾Í“Â×U´üŒ‚¶L™§Ò`+¶ žIž°ó½§+ÿsl<"¶¯épâÚù1÷,YÃŽEžÎ÷;Â,C}ijDc€±…ŠO‹R¦V}‚ñœ‚ œ [çÆÎçâóyÔʱ¯»ä€Öaâ›ÝÞ!1°ü˜mÇÖa:€é]èâ5zÞïÝɯêõ´«hˆ%9²žQÎm~¹Ž[ïÆ”6^ö6/µ4ƒ@Ö“o{YšûViš­x¼Å©tÙ`müá„—mÍjDøpA@•˜ûX1Ük 9¶7ãÿ]{IÅSµ7ò²w7ljÛ›tWÐûp‚ {={`ìdóFΑÝÍñ^«˜nQ„U{“zGÂïß»9Ê)véÕªcó匽ÿNÈÉFj„•×·i„•rán¿÷iï°8ÙvMB¼Ï°èj„Ùyúi„)cÀ%ÃaÓÌá0P@ò¡NÕûЬr±šç§¦¿¯Œ÷Oޣðñ´Çdˆ aí±iæðö(@{õ©ÚcëAîxÁþ:O‚± )ö)Û_@@ÈéµpTÌ<‚‡ 0ÄLaááÞí/®îÙÔ [· ™©¬xøyéš±žHÝÎèô0RòÆdób™½]†÷ËðsõX>Ÿ‡ùÓ­1¶ê°ìy¨‰-'TmP`2Þ9()€¦›íóÄò×P™Pí#‹ÿ_Ë&Xßí.¬b‡L?˜Ö|Y˜|S/¨ò~¾ÜEL8´¥¿ÊPÿ–ƒÄT7òc½Æ#Q@Üß-ìPlÁçÞQçæOÁþ<šhM,SÄüóáz²HÛvÔÃÛ¦D?YŸóK“áïvÓ­ùû¢'pæ:ÒßÇàÎ|œ9™ƒ™A¨?Ø™ïcOïÌë;}O IHc(™'Ž#ð¾2þkHSú‰)eñcãÞȉÝ-üf>ò]S6lÈDÊ\|uÁ¥Î€©è.C„悈Y„ñbNÉÌ<œÅòýÙÿÂr[Hendstream endobj 526 0 obj 4122 endobj 530 0 obj <> stream xœÕÛ’T·ñ}+1³.FÖý’·ØqÙI%¦Œ7ÉCȰ»@Õ.`Xc“¯O·¤sÔÒ‘æ¶³8.BÓjõ½[­óÓŠ3±âø'ÿýâöìË'nõòÃ_½<ûéLÄÿ\å¿^Ü®¾º€J¬ VZ½º¸>K¿+¡%ÓÞ¯œÔL¹º¸=û÷úÃ9€V^·~‡Áz¹~[fïº ^•Ùë2|Y¼/³ÏÊì»2ûªÌ.6ŽÃø3-…RXœýP†Weøæ|c¤cZéõÓu™¾l'h?—ÙçexÓü®9Q‚pÕÅýuË×]"–©*„¿(ççç!9gÚd·àÞtZð 3 ¯ú$i“JdŽÇá£yøŸ‹¿‚°æ•]^Ì#V— A-Fix· ¹«.ž…¸á—OŒ§’¬ì/A˜ãÆq7εC–n8³ÜHÖ·86FyéŒZl`:ø Æ!¢÷qòw]Þ@|É‚á`ñõM).XÇhl!`_ ÕUÜGZh Rö·³‹/~çrvÝå!Áøc—L7#2Õ²3iåÿµìDÓ·—å;D¼ÒòM¤ý]Š"ø{¥L˜€l!» Æ3}˜G¾mÄk!Sw]²?‘}c-Ö?€ÃÙ8fÖ²gqR PÍ*(™7B梘Õ6$tÿ”á!n¡”äF€žÀ´† Ô$+B°ˆŒ­÷pƒ¡ FrÚˆP¼1$ƒ±p¨P­AVi¬Ö¨d¸\•QuHcáäj£ã†û„éü^r¥Fg(QÎøHÄÔí»ÂêÝ,\?FÅïëB¹Çeö¢»à»y÷øæâì‡3 ˜­~8÷[@—+ÌÊ¢lW·0´†Ñ4ssöã¡ÑpP`ƒ"&Á|ÆhøeA®oBˆQ$,9H«. y°µdÕì²Ú1‘$D0nM‰ãJ9’=0NéhÇ"Ç8- ˆR^8Ÿ¤"¯®j§™ÓIú´åŽ[ ;³ÝKcâQò>v”2º$ʳspZ¼1þ¥Å´½qÒáö¸¥ÓO1\ÊZÄ¥'l‚äO-l- b_t|W; › ^€’ Ó ˜t/`€)jû¶uÑê[ø® _U¶°• Å™·aÖ»L~­€Í‰¸@E.'†"·²„x¥TÅsÊ º†üt[Ðo qj õ‹¢M µ :¶3u$ifqދܲ$ª=r´xr&˜Sé™ñŽªP-«˜O‚‘¨ÈCèXl¤F&øjÉ[˜V6Öà׆V~ý)‘•ƒ”õèÈ]?&'9$æyW Üõ~Ö%›cFÓŠ-YðB°G:§‰LBb?ˆÍxGìÎ+üzY !aó8Aj_(›V±÷qH䫿~Ú7ž·i±ô¾g™(lл–I*0ª¶LQ¿.ÃÇexÑ]ðÝÌ¢âÁ‹C ²2ÎyæÑ09a§áö„Þ\­ŒK*+«Ôw{q¶[·X%§µ[%#A '.hç&‹­ÿ«×,<ÔÐ*iˆ ¸ìa‹(MÐÛuè’ á[cdü½¬‘¶à°¸i­¤ÐÕ‰ý­H† áÁévsÄÎ7^‚9R&Ç®ªjT/Ë|rK?e·ô|. ü€Ïs>œÞ5ñÙ<¬ 6TkˆÕEˆ)d®ÜÒ`m ùÔR¶¤c,*~7xPð~=Ò¼~©¨ÚèUÅhne…ì%nÁ”šÌ¥’zä~ÐêC‚!à—}G]ÛõÊ&ÂïœÜ³X€Œ—n—M”àôBq±‡é‘›PZè0ìíÁoîØÛMJyð°½}9,+’gÂÛF HÊûÝXðBužk í)-Æá⊔ülTÔ²ã<}ß›ÐÛÈ­¨Ä7{Û„dTó©iþÃX@ºÙÂ]ebþ„.ÀGSö 'Rzk Âdk†³\«Ï$ÿÔqÁ£å\ÿ+‚VÒ¿Agv…—t¾©ª‘rþñU5% út+È;ðÎËj`¨™÷óÌP× 0åRe­æŸÊðI’šá7%îþ~žMúÀµ7Mø}Q‚Ç…F/³ß”ᓲàÛÞ‚®îÈ r“Ë(J­gçTÒ1SäE¡…2‹‘Ó¥3³³=\Ü@¡ –ßžÂFáÚ(a£úÒ:<¥±ÝÉE\ ´ë8ò„_BJ{×"…? ÂWAáïÚgÕG× ùK1ÅTWk£^ŸVnm+¹Ù´ºœ€&!ûtv¨Q]Œ ˆ ŠaTàT‡f]Q¼àhmyÝ ¾j‚cì[Æi²øã\Km»rÀB»Õ¸CTà$l˜¬»²EÈeâ¬æ!æ@Mu°­+”PÝv¢ä¾È™aWFû½ªõ`]N‚­û„-RŽù^f%qÙéCÕ÷2ÁpAÎÉd*+à¬um5g±b€÷­àÝœµ½ü-Bþoí¼"<‹› Ä<ï8ŒÈF§©$fqŽ K¶qX¼:yœpºE¢sçÍ0ayª+ˆI¢ße¥Ê°MìϬ¦5½gµ¾aeÅë&£Y#Q&8š»¬Üf¥• «¾ƒ;j+2-œà®ªQ<ÓT±ãNÃ˘Ó]¼[4E÷ð'XÚr Ü¬<úµQµ„Ö-èìVp 2Æm§¾j¹½µ IhZ%`Tw3y>¾ÏQ¾ÌÅ0Q»i*zÑ\´§3ãUAA4r>­¥ªE¯6Éê´‹ ºÖ¾ä†2îí-ΔÁ.ãRpÇø 1t˜½5V‘N2°ì£ *è>‘l¢é%¸M;"YŒ>F ­"²:˜|ñb½}Æ©ö4šFÁµÁŒt û?›¨0Z:oGµï›ü;½£^¹Cÿ#ýчH±HaTk€éøéKVDY­/§Ëùm—<‘Y\/<¸kAz}A› éû$D)–ᑈYblÝó@Ȭ4ïU¿¯Iï¨üÄ=w#?¾–ôª ¬•¿Ýõ$Ø,8ŠXÿ£øŸ)5ó•ùÇ‹)‰¦¬£BÚÛבø/ ô4²hBJe,˜Ü^æ±µ·‚UFešúsV**à]!íûÕÍîzÉ9Љ bo­ƒl» |ËM=–ï™GÔJ&Z5½ÉDŒ›° ¡n+ͬ®Mø‡Ð­I‡Y=¾JÚ’ív%kŸnðdÁØÝunÉyOØuÍA€œ^© ƒ½nÏðfž9¼ @B&ÆÝ"•a¿/h”ó¶ª /ÞH€oö¥×ì>wR´O/PœìtÚ§Õƒ&¨ÀÚXO%¹}úÿÑá|˜ÒZ'׆biEæW4}ê4 Q+t–PajVÚŽ pלbÙÝ AÒ{fc‚Y¢ÍØ@ãtôà>Ä^ʼi!W¦­r‹í”—Ô rèÉ÷hٹ˸*ݬ@sh|S׎Ke[Eè¢ñ&Ðï N‘úÁi›Ú~n^ÕËÈ Ù¦km©‚¼ÈMzÆî¢Ug ß–wÅ8Ò#t¢Ä- ö/ÔE”Õ½ÊßE¶T½ë;׌ý:8Ý®iQÊ”M).¾·áŠákA,{r‡ûÊx,h¿hKñµ2V¿96èˆ=%2BóîÁEÿ³ç͈Æ÷>¾$èÓÈúÒ¨ŠÆlR)BÈm å:ÌÆ¶DJ:·LþÕÅ}LÿÛ¬ñƒ “V4õ1/­¬½WçÚ$}Íj‚ŽÍ„OûسœvÂ,Vö1Ï÷ÝÔ½á¾XVsüÿéi“åè_Ju½'"M}HiɼØËË€Ä@ˆæ÷Ôi–Ár[€^(]¿dP\¾¥&Wå¿ÚD¡ÛóNç·8ç]‘1f4{‹Ë °àM1.¸lç™#ââN$AAô½k7kN(wŸ#®ÿR¼)³¯Ë°<¤ïÞ¿I=äm² ƒ6½N‡í"më0 L&wºqšUûÞ,69þ º{1Qjº\ø¸ÐÖrpŠ'ÐXw`í*¬RJÉ…Á´(O.½`R¸ƒ¤à³¿z¶hÇæ°­m:QfÑá40í£‚­ ²:Y¾í7QVÉѪ„Ó“hV¥î¯ÉÛ~ú@?}§!=Ü'oûÑVs­Äf6«ð"â¿ó ýù¦+?ì§0úŸè§é‘ô]ÒŸ\:­¸•Ä×ùÆá«|[+šfŽxžè°)0Âd,àÎWùãç‰û¾>‘|Úòˆo¬wž1¶¹=õ(ØÞÅ246RC¶ÁyM]§¾Ÿ·Ï}ðøKy¿'¶ †>øø]}¡FQ%@FEÒ?søˆtà¥?¾½ÃýŽ ¸mîÁº•‰7 žuÛèÑü&…øŠ»t+,ðkH®}ð·, ,jýt³-µÞnQ3öüøØ{w²·€UO„äpnÛ¸˜ª·oþ`÷¶Äض÷ÀÈ%ï%‰ Æá’ˆX;È J.UwÄk ±ÒÍ#>·Æ}•í÷ˆ/d\fni= ¦k_–’4«˜ÙÈ,¯|ÓeìU朅ÆGÓ„ê&¤TX×}³‘à+çi ¥ZÒGwó»C«ú{ÞmØúøê"Œïô·—M~Œ°,ð[9¿QçHÝ7p2x%V4ƒ¿LTÀ¦Q9½ðí¥.àb´á"ênù²Hˆ›ˆHj^|#Ñç[Gž$Ùg$‚qýi;O÷ŒðDéÓ:aäâ¼Ï¿’hñA”!r®cÆ5͹xp ö¾œ r9Md½þª ÉÝÇëôØ•¯ÆuYŽßŒ°Uß³¸œøR¢ÓOI~¼ž?A§É—©è‡¬r 2ï«Yíl¥a¸ùFY&ñÓSä«`‘’ÕWÁ6à8âÃðS¦erK,G!ãç¨ Öaž9æsTIlD| »Sz>W^v ô¤/û‰úÓ~m]$ý޼SØ¿.‚]{Jƒ‘Ãì„G3Ékº/>Ò´•îpfÈÉÁ¸~‘e¾Ÿ÷¦K÷»ék‡*Ûb )±\•áË2$ü$_’"ÀHç®ùY÷³{`x!w5Í܇šÈr²˜ÅOriHyÀ6À~¦ÐlO3G°ßjpŽ&†‚Û¯‹7Qã-ýLº·eø¬KÛ ûh¿JËÂê½>k1³_ô~Ÿâ“ÂPZáò̱ a2Ö{+Å“õ–I¹°ö¥•C‰×ܤ\· SégjÚµw]Ó2)Wh “À3H;˜t”gyæ<ÃâºÔ¿±™> stream xœåÉr·õÎòGÌ‘tyÚØ—í¤l§’¨,3•Cœƒ$j«")Ù¤d+_Ÿ÷tã ôL7‡±S)ƒ˜×ÀÛ7à§øŽáéß7g_>µ»×wgl÷úì§3þ¸Kÿ¼¸Ù}u $ßùÁaÔîòÕYü%ßq%åÜÎ 5-v—7gÿ<¿»ÐÒ)mÏ_„¡7Nœ¿Ë³÷Íoòì«<|üœgŸåÙ÷yöMž}8 ÃÏ”àR&`aö._æám>Ï?ûgßæáu^]ìµ°ƒöüÇs:]îgíyÚËúœÂËæ‘ß6÷¶¹‡ÛqúØðçyøãÅÅž Æ¥ejp·õ†¬<‘. ÉŽŸåÙWÿºüó™p~àÀ;lwyÜs•ÿN–ÞçáÓ½çZÜòlqÐZó¥Þ\Þ7÷º‰ïŸ[¸À/~ùT;* ŠNNÛ_cLY¤îž †i8àù ޵–NØ£”'ãÍìãHæ Øø˜‡/› ænóðyE›6j9¤ô µÊþO¢4“”Ú@x\xíaí*¿©¸5.¸¯ˆ2£Ä³&%*ô3pã"ö•áT”€Þ¤K‚X Gp û\Ú»ñûÚ‚|¿)u¹Å9‡†½´XÔ;.[òhM¹'×ÍßN 2b\ÌŸSq+cÀ˜¤ß”ŒùMÓ #ô}¾©tTɰ-¡øˆŠ„}%Ì·€D&Fz"±‡8)eAò} ²>( &•¼|@J¯„^3~é’N‚%ã¥Ë$t&jDn†„$|¬ã."·÷‹òe@¾@Œ[-Ü vTÀJFF¿‡{Yà… £B¥áÄJKÞá4b,%‚P ~Ÿ":™w¼)h¸¥Y*Ô&³­ ÞÞ×Îlõ³Þ4(s‚7zåÀnjüF:g$^B!a¢PÞ­ôÂøó_² £:¬£8Z˜³h‰(1$ë]Sô)Èjan/,àÎTîÐÇÀÒÚ‚•Ö”µãá?*D!Îô§T+ Nfj°€Zºœpx¤‰òVSJQveL(çƒï GUÀ^A³0&¡mµnp±÷[-=ŠX„‰ÍƒE^à±wÚZ780p(1p7N¬·ˆ!ÄÁXGíASD㆛ŽJÇ0g}e‚9¦¨%t .e‰º>þ.QÀ˜Jpiǽ_¯ÖYWB3ôkêzØ·c3]ïdbK­I¶¤°fÔõÆ/ézdb_iúZ°ªÂ3 $*OF@˜ÑÑár98ÌW 4˜¾Yf_n3ž$µú#Fp¬ Þ¡Z¤ç’¾ÆŸÂAÅ’.À‚+ŒUÌ &Þiøå Ä®Ò0*‡tš7ÞÚh‘j¦w¬U ¨'“]À»jë-œÇ}{ˆ¶û\šØ"A7< ºö¾– 0û|Q‚*‚YV"§[ÔF7à>Š>ÁE Ôˆt`epL—””‹¨ýCoCqÐÈ[-8VNeú·@q×!åƒeYÁë 2¥BCÑ_#@øûYàoa4²&þʪŒ¼!pç‘g@ùu) βçoDÍ*á{ô$d›Õ¡Xd³;†³ U)ð÷\‘1]Óp 4üA²éÄÁ<¼Š³à)µöB="3먊”«¢ª#[¹sÂYà¦Q·® ä.¸mÂià=S¸gï ßO8ÞÒ %û‹×*øëÚè»:ßò]‘Ñz‡ú5~ØnÿUlÛ(ÉK¼矑éÊ/Å%ŒéÕaÈo@Æóȧçÿ?”ž©žžÉèu…è.o¦ù¸?)Öâ/ÔÑÀ5jr FDª’ýïâ´-›ØyɯI”YòlÒ.êÌnVôÇ ) ã·0Yè Ê– äØëåD!‘] c¦‚ÚAÁÁä§ø#Ù”ü0¦;ºÆÕØÈ™´´Å×èÚ‡ÂWà·ÅîÇëâƒ?Ÿ‚zæåwÂ>f90«àpÛŽBžî.þ<Íщ‘E€}›ÐQ &yîÚĴ߯dÛ(*‹³öüïhß¼Sà|%Û:]*ÿ°%1æÏ“ |ˆœ­À2™#÷Œ¦cB] 0q“d¶ x®#Ö„hX§ TXÞ³qMd‹š šu£†‹€¤ªé‹¼$ŠQ:r)F=ÝW±“ôXQ7+%@z.G–r#'Yº¸ñsF¼Vû½á#¾Ò†0|\X½»¸XhY³7Nc6îD~žÐÙ%£QçF5D €Ó%‹‰•ÚöTweû.ñU‡ú}y‚d ê(H¸ØÃ!oyô¦]yÌ6DÚéâïÄ]ìyŽ‘â¼ëSQ"ã(i¿¥,Ó½â—9Ýg¸¼‹¡žWf9ÒTƒñ}( 1{¦rh  ÿ˜èöhFJÚ}­´oû ,lÂÜÓ†®â–Bê&[ön>?.ìRÆQŸŽ)+5úIðžS>·Ó~>#jF /§DÄÇIµ4°ˆ]Àâ¤PfrÚO‘¥p+ÙZËý–¼Ð,†­;õêvÖˆw0†åØÄr’V9¾6†Å_Ùƒ¢`¯Æ‹~.aÂW†j’7ªÄÑKq• üˆ /lK¡K抨1¾Á#r†?SªâNÜ´äºÖ?0‹­ ‡§­åk+ Eo•`4"í` :þ[‹Ñ÷ŽƒJš†ã‹ˆëìL½à¾)1¤»*¯m¦ÅÀ©Ðmn,écÐ|¬Ëð1þ];Uêl\ªCM©Iå:è”Ø]Ä{†£áÌh$ךa Z.³%¡‹ûZVæãwš9P >qúꎴ"&¿Sƃ%P»›3é„Ü4±¾¼  چ²¶º÷¬TÞå!é<$5É¿6!ú%©‹.w@Œb0¸«„D¬`£l9ó¦(ÇÁ4¨ã@$¾ Ë5Sò€ï5—Š«2ÚRÌ}Êdd'†¿&ü¼T.ð€½™·…‰uQ¹Tö³SXQ†Ê¥ž6ãÄ–Ê%¨¥„Ù>œ·OÕbõ×&’qŸÝ6Xh±¢Å€¾Ë°Ôp€½x–ó’¤A°¾ÎÃ'yxÙ\ÐjORBbÝDR¥´ÞÚNR€ÉŠI·4'í%Hð]¥¾^aŸgijÄÏúéj?÷:Ï^-šjãÀ¥Ë^óÉê¨3£AIÃkýÓurxž4NË:“H­}³lÿ2Bg¥›I-çt)Žæ¦Î«êÐcæêtLøŠ'Ô¤Ñoï L#.QîÀ ¬¦‚—f yJ ظ{RÉ›*K§”¼–IcèÊËû¼¿¹•ʸO™^Ä“WmmÝm!£[)³ÓU–s‘µ1Ö”ú`7J×a3ÏÉ<C7Ö‹ÿÝ™Ÿµ/:Äv‡Ä75í Û¤ý¿5½¹›e5à°×w¤YRš¼îåéõ 5eÅDÀñ ïܹ*d³³¤ßØbç¥zœƒ÷}Û… BgwÒ† !³³uY f^6_i/Ô2b"úK‚[ê Ç5ëjêG½¤&öÍF„Ôþµ€ë?]s¹{¶jª$™M•$p›å¹)] õìBôÓËÝ‘þ<ì¾ÅÆÕmÂÙty¨Õ(¯0Y-k¾+úµn±L_2J¯Q5ž‡0kÄb—).±¼ÛÆ|”S6ÊÕ&:$ÓwÀÝpÆ€m”G¶ªšŠ{Y`ñà;-lpÞñßsј Ëm¨# KÞœÌÒ]\ÁÁpŒçdƒó¢¼#µøµ£:„NÆ”±#Æ5œ‡Ytò&&®¬l¶¬ÊFM}úõ¨ª.X©Ù~¥Ø;ÔSr!;4:׆Z)n®‚μ ¼BcW÷É*`0ÑóïÆæVæzÁ¨:„éŸëEÒ°ù³‘4¡TòÛ>O‚R¶ö<î]çº-ç~Ñ51 µxNUµ¸¡ºL.•ºëˆ¦‰YqU'~šŠë6ö }zÇ$m;„ZHr­0`ãG^6ÆÓ9µùÂÇ›SÐËàð1)½Ã‡a‡WUAí•Í4³¡™Á3ôJvA“9½ªâ[)Î¿Ë H[ÂÛ^4>Kf2¼°Yëâ}¼É¤¹T~£I^‘1PG¹E)oáUÙ)D^ºi7zb±Ñ«Š¿s 4R®9=9Da´7êµ<„燊*Êéƒ|áB«&‰òÇ™ía>^nÂ7©¾fÛÏN.ÕYc®ê5:z™:Z«$Ëgmóã°s†C0™¼lpxW8s }›Þ·.Þ¬ir‡?¯MÀãïðÝ–Ó>lJYä bz!q¹!ÂÛ¤ø \i®Nœ6ã…´q­úÂøÓØ\ß¼=PW~Ž»=P¤ŠÃŠ¥–î©q ´´u’·§Ê ¡>n÷YP)q¡ð„˜­s&ÜÅtº(]{hº¥s1<âL<‚aQ#ªÀ¼ ”-Ø*ô-Ç™ ÊÖqׄ seû;è¬Hn4ØQŸÅÆ&#˜ ê§È?NMïù…iòÌ}0Ù\?W¼ xÀ =àÇ÷xå_‚!O,’Žžt̽Æ"ˆé)Pˆù™Ûq|:G‡Çý°¶ïlj-oûbÔ.¼ñ×Aæù6ž®Á;â²x¯³ãïžäÙã@0(ƒäïm38e›ñŽJ”Uh_÷RAæüóÄi¬÷D÷mí÷ãñ’¾õJ‚FJ®{z’hõ¾úYóSP»àlëêyÞÆñ#ñn+è˜f¶2À$´¢U»™7£J‘f9öžíÒLAÉ£½µ¶fµ£´òP#+o~‰!ÈÁùUh©û@gM7Þ5Æ»ã»ÆxBn6ø€Úq­À! Ül¶BL3¸Ù`ïm€ Nü!nòä<ùë&Ò‰ÒøØDúuéøª±–¦¾ó:_Ò‘žê„4ó  –ö¿¦Öèñ“¾²>{칺֤ÀQ‡àj·wb`x#Ñ_LÞ¿™†a¾?ûYÄdendstream endobj 536 0 obj 4748 endobj 540 0 obj <> stream xœÕÉr·ñÎråÞ‘té±/¹%ŠËN*¶Ë2“â(q‘ª¸È"%[þút3@Ì[È'Ûåƒ!4zïFï§øŠáãÿ_Ý}ñ®®îØêêè§#þ¸ÿ÷êfõ×S ùÊÞ£V§—GñK¾âJ ʹ•jZ¬NoŽþ{|SK§´=~šÞ8q|—{š^çÞËܼÊÞåÞ³Üû6÷¾Î½³…C3|¦—rœ,ôÞçæEnÞææMþŒ,üÐ\íõÉZ ;(a<ÎÝçrŠ”à}¤´TA<¥™g22–”Ž[¹iÜ Aÿz©Ž?#Lr‡k .ã5ùô>Gž¤³ÏùË0ËL‹Á,0˜Õ e¿¤™²ÇÛÆäŒ¿dlÖL-ü‚¸'䞌rÈñŒ[&ͳဇ>þ(M1£ŽǼ2¾¥°fÄ „WGã¼FPŽÂˆƒ?´#°l7Í­‚‰ñƒ@fŠüW'à*kʆ’á ¡à-é¿8üôa›Kèenn‰¬ Òjï.¨¤ó”Ö”ŒàxE†ÓOïãê`ïf0ùA8¹/¯q©KEV‹÷w™MN›¾.$2(2ɤÀ]Ñž!6 ½$æ\êÙ]{Á @û0à ¤ŒÚ뫦AŒrS{µ8”ªrBE0UÖÂØ’Ú„€T‹P¢Ñáï ˆ`l Ææ–ó}俎º¡[jn Øšò°äW‰‡íM‚´•ëÛ Ü” Oû<âÈÁAÆ1PJWýúîd­´CO´N:U NJ ‰SÔD^U8 Voæ[…Þ‹Ü\Êd¬G6–Ô¬X³…S š‰ûÚp²v«ï$îÿ šO¡?ìt1ä»-xzº`u¢ˆ($o‰dP Xà\T3Ag¤˜š×q´ò¶ñ2"Ej^t?Œ¸²’"ˆBK÷}fÅ‘q%/ú>.^i#jxr"pöØÜ™ü`Y±9Åî¨0”µ¶:t¦›.±¨¤wYUfC††™ç˜ˆžCn“•a×Äœ5©Ö´6‚8ævL˜„Þ›¢Ê‡“–r|¹­b$“.ˆó^·Ø÷Cij©¸’Ú‘g0aŠ/Ùê€kï`»Z Z EW¡.çûú; òé“JÖŽÒ³”÷ ’½\HÃó9—Ã*žóIú¸à>w¾$x04wMó“cÏh ¸BÔVHɇZO×Ê™$ªßÖ BB)øªYBD—ã»JWJ‚³ìÂÁìslªÁ5øWª‹"}—áCÅ 0a„ž—ˆ ) £zšúl&åè’PFM[qc©@HàU¡u¥zpuéd­ß±[75l‰ùGí<}HíO#2L. !N÷$‹ò3嚃ۤ*† ³Ý ÅTá6ÝÇnïÔ$ó¡û.DTŠ £ Åc[„ b¸ä9 Ê,¸RËZ»›Î” T%ÔA®f¹€JÚæ9†J^›âŽ?“ÔAÒD€*:þ÷‰“üxÛS’Õ Õ1 ¢ý§e-ÚDh¶2áéÃ]-A2§¬Œ[ÚÆ:x¹c÷E^›ªŸv2åf\D‹c–z# +pS(ÿœ7Ð Ç k&ÓH¶´ÌÞqŒcvÉ Ó”*‚ÈëHk0厢øˆ—q¿*±KNNhã)pIɉÉÛ– ¢oGQœóŽuH),8È àñ§­…t¸ãƒô¼¶û¸¼ä‹$öàÓº=)ÌÆE0éÜ£ðe£L¡¡"|t¨ÞÍ^Ñ!¿Ä©kÓÕÉÒxäü$¦¥‚¯™|¯‹¦§W5Ø9`©—¶:R&ŒÒ!S3‘leú±í…AêÈËuܼ´¾+só¼Æ@ãBÆ+›ø4Ä]wÅäiý:Kà!BÆó†Ú1 ª’ó}T%¦¬„¦¢Ù¶ˆµª” sDKS╦”èÎÊ šÒ÷ë~rdGˆ¸«e8vó ‹ƒ×8ñû-îòn‡òÃ5çþ©€`à*ñ¨ó>p—“P$—S†ÒNh~h¸^t?æœsêèÇwmŸ S'à–àá$ãQÿ›ÊS£òDUóg}ÅÙA¦ƒG¦®Ñ`  ÐÜNáóŒ XÎÓXçê´ÃÄ-?”™Xt1D¹öø?AR¤÷·“³Þ˜QðRËsØ!Ö|ž›_§ù0þ5¸•ò Ž Œ7Сô xêÙ=… 3€v @cÆ6á»ÜüKn¾ÈÍró˼¡osï·­ÉÆƒÊ­>8ù&‹À—Y/rïW­MaŠÍµBfä\Ð<˜«¼«fÊüY̰ -Z‰”ð)áØ¹E3)Ï(³ÉуÌ1­Á?H\«@¹cFdnÚS üdc ± ðE ÔÜUDüÁÞ÷Ê@È?gíKݬJÁ„Ñ®0e[œ5E¸!`w²!HnǪ²CÄlÄ „ÊfvÙ„À U¬R ˜|´*጑z"täË1T]TþÄ[²·’–“›>ÎIÚMT•nÎ/ðÚϪ¦d ¯,y"äХiÈD & Sè`Õ”7³¤°ÅÕ·ÉO^5¹ü¬.ažÎÒ ÀÏNÍò§°¿È\Óâ•ç^[8'U×}®\lœqfG,œ :Þµp Ô‰½ $!–2©hë]Ü¢ð­UpxÛ'ê=­yK,ÜrŽîF3!*¹¼íñŽdðqãpAy@Påã%Ï.VØí[[£™Øç˜nVúPg‚ëÒ‡YEr>*è}:pvËꇚÿ»Õ˜Ãâ$t2ët‰P ?ÄÁšñ*œÄøÄŒysrúcǘ,V Néöki¹Â"¼LÈÒ÷OÄÖ4œÕ D©Y‰YmalÞšG qMÊw“Õ®bêˆ1QÅ©r<˜[ 5·ÛKŽzS•^cí‡l{¯Ñ8ðñüJƬF·Ñr“þ¹GÑV@%8’ð·è5~›ù—”¢ß,†1°cîX c* Ø÷u³ÜLˆ%ý-”‡t:\E›HW ÂÁYG¡®,gg™Ø‹¶Cxu8·÷ªŽkp'ȈûVݬåÛ«ÄkVŽPW{‘ÉÎó Ír°Žžc"WŸìmç1Åí`Üÿ½aJ'—ÅijøB Ǭ8§$j‹ä”ŠDVh¯í”dv4ƒ ŒLÖç"4ƒCÙ2ä¸À ¨árñìB8‡[XÖц[»z†EÊ!œïr[)!¸Bêm~å¥ïEU¹#Ž6®{”r›|~ 3¨ÊÜ g·èx ˆº½è'Î;øX’퀧ºÈÂÜİ”f(õÖɰôÒÍ÷qÇ\é1bÓ¾—]pÿ~&§Sšé@‘ú¨Q¥'ö2®­¼ ‹‡qu~5PÕv3(kŽÿ%¥X¯k÷zõr@Î`À­mÄbÈÂñHT‚Éÿ@Êçå| ìó(÷ˆ`&œEâÅ•íYL¤¯„=’Žªv4kUhÑ.k Ý  ·É(ÌP†G¨bæÚi09¯é §¦ˆ(ÅCtbšê§ÜŒ%Ú– 3‡Ýð’³·¨H¦þá:BÖ/Æ"Ì\)BP”°¸ÞÙ¡Âï„ô3Ê`µ–*UÕO„³é,åBÙÑ`r¥J¤ ²û8Â(>‰RinãÄR×EDmÍKC™cZð’›Þaöá|>Ë,S³]‘['Íý'³ °þ³<¢%ØÔôoY­¶PˆëH=k§ªþºlƒs30žK'##¾” <ÔÈBåÄ‚Åèb¼ÌnÙ-Uš„ ¾O›0­HÜÁ ԙőàA}j{Ó¢>ªöÉ »Ã”ð£ßÏ[§¯aõ2˽ŽâÝâ-5¶ eSÛ%{Ã`¹×Dü¬a<"ŠY`7Øœ@Û.­Q¬I.€†³ÓÍJÇß³tñYyÃv ó¸Y‚ºAñèÅÔp¢Ä²-…Ò8u(¡Ü†ùÁ¼˜Y(€Hµ˜7À/¹’‡ñ ¸~LB[Z3p]¦¥Ê'”|Š:ë0"õT&³äò™ºn)ÐÛ<†­)½§Z¦ ÄQ‹J/葇NÏ8Æ©‚†óx0P‹c!$úª£ ƒµŸ B¸SËnZ•*°jÊPjgìë‡Ïbq°ë&`_–¬Ò4Í=%ÓHÌÆz©®÷@ƨå7)ò®¯ÇPx×ϳ‘TɽHÇŸX1HK]Q;n¤ Ê<·M«Çfi¡ó˜·w¬ï¥£¦Ÿb ,-’‚”~äá»t8ðT'Ș‡·ò@×q'¼[9×óê;šºÇ¼d›‹óIõÔY®¯ÚF%\µ¿)›Œò®½JåÛJd*SE€rUÃví3Ô€°!sÿÈò¶P¸%…ÛT¸%<Øm·aµ…[h ‡œkì­Ba i ÓƒëU8ŸGØ@[.Ã8­ç§ôÐqM“¯ö8 À%­™ý­ÇCšîÉ=zõ ßΫ¶¸cåÝÂâT/®toܦ<&è)Ñó‘9@Ïvï.­'ȶ»/±éˆöDž yºW"BŒWàïbÞŸ†p>8nSϧŒ/5†cÄïçiˆ¿æ&9é|“g %Ÿù£æÓ˜#ÔœTc<ÍӉۉa©§>þ{®™’­DÙìËFIwƒ¥2J Þó†h,Ã¥û½Bl ·ÙU89WBâû'™­•‹æl 3à£-¶n>!›osóu‘„ /0xU_Ú}žådãý§Ç^RÑ2{ …”±øèº§Þüò^3E¨.rMfß*N¤ïh1E¤æéžˆZ0|B2$»rƒkÉAu§žÝÉ7pxœdÝRrïúDÄïV‹q0ôþ€Z Í1f{-¯•ˆ1Ñó¨c0jœ–…EU5BâYlqyò1·ô§»%Ñ®3ßÛŽƒ¿¬i¾RиaH5m8µ¿=ü½KD0ÃïrL°à?ì*yL¡+¼7 è@É neêÙCò$`6Έßä5õ"ÞR³¡g‘ô m[^óÃÄE`D £–á`ga±ÒNš"Beì%¬ácÌ®‡Ñþ_‰÷kTcm£èß!#9 –¨@h*0eP?ýÕ£]c Ò ûÝ«zO+iU¹íì1>*ÑWk¬¡ÅKYa¥A‚ÌssLÞâ£êÅwãC{ä->ÌU:ð›V ¬¡Î”áµ!ãed†ñ!>:GûÉ¿öåñQ¾"·ð„¡X#|‡J(|úß¡‚-‡w¨¦ž=B%Ë£aN‰FEm•È3õkÇKžãÎNƾ¢–0ßÔž]|˜_Ú¡Ú’ §º/áTœ‡qTÇ_§‡ÕêšÐè¡{³x—18ñ^æu?¦Hz¼*1‡u5ÓÅ'©HM7“á†äaÂÂÙ×=Þë8§”7êjØŽ¨Ü…iÎu«&Ïã—’ùÂVße\ Í5)r Ó™™l¤ïúŠ“Á«Â@}·µG°ž@Ú.u×Qi[œã´În¤éj¶oÖTe~MÚɲև^°¼az!¶Šc-^t*}EŒz<ã½õŠÓ¹–˲É'Á÷ðí–5ÏùÉ3 ÷ÄcÊ} N„mwçÑ-o'rv€×xW ˜Îx;`•xȳòM=ûäYù`ã (Oà<ÔqÒuÕ[W¦5©„©"Ì*¬9Ú æ'TfŸîc$¹Sé¡åÐMÞ_¦Ï5nŸL¡#%7¸ƒøâÃ'š –Ýyúö5I“nÍZ 4¼ê))îñ%·â(+6Pïz+ŸzöytÜ€¿Í.ï÷(Âc®xý¼®aœ~K"õÞW8Ö!6|§a…²9ãXbñ ’À1ÖhàƒmŽw{6r¸ŸO¿™!7ç/ê‡?g•Ä}Ÿ?ó®åì×/ž0½êÄd“<Þ€±H{äxÐk6aÊAsEo¢Õ™Í›I:ñ¹ýµV€OÑûm—ë¼»»&뻉O‰_L¿Z2À'C Î >ÇŽGàkŸ»ògÏò§×X9GøsêØŸC‚w¹ŸFá…3µíOi„ÞÙë15Âg?—PÆÕk? Î_!v]úµŸ+›š Qßý„-Ýendstream endobj 541 0 obj 5272 endobj 545 0 obj <> stream xœí\Ër\·Íz*1» UïGv‰²ãr%e‹;+ R)•II%[üût¸ \Üá<#;vy!ÆÅãàôén£Ÿ–œ‰%ÇÿòŸÏïŸï–7÷ ¾¼Yü´ñ.óÏï–?‡J, VZ½<¿^¤/ÅRhÉ´÷K'5“F.Ïï?¬îÏ kåµq«ç±¬—«7¥ö}·ÁËR{]Š7¥Á»R{Qjß–Ú—¥v2p,ÞbQK¡­}w¶6Ò2#ÔêÙªT_5]¤ï>”Ú˦ãT|ÑN­Ì=õð¢;ËW¥xß­%sxvLKSMøI)>;;[ É9ÓfŠ`,^”î®»k&¿/ÅÏÆâοY„À” b c1cŒXž_Áþ“I¿n:™ pÓî]oQ8àçßOy¨óJãÀq4εÃmZsf¹‘>¬î°lŒòÒ¥>j.u•2aèd¢2X°Ú‰\ﻈ^Î!º¶– ë3¢ÚÑŒÊVJ†£ÓÌwéu™w³ !`BBIÛðî…ÒuÍÄ8ÉDîRév;”Žjkg¸`:ÐÎZSgdÁ‚jte ÀÀ, “Å$0k¢8Ý/#´AâJInh$TëÓ@s„²â!‹sƒ²õ^ÀÜ è‚‘Üc/ÞŠè} ,œ0*TmÚ€hXl®ƒÊSµ÷ƒ²pr¹VÁddšé9|/9ŽŽ9àŒ¸àLMо+>‚It ™O‹3û¢ ÷ïR{ÞmðõX‹cüã|ñÝBÃÌ–¿€Kÿj!|pÌØ%¬Þ6Ë;X€ô,¸±ævñtWÇ$ <ö [¢“ã¿)“k=ÍÄ!_MÒ*ÅÄõµZoŒ±L=Z(A0nMis•rÀÙis”V"qA·¸J\PÊ çrØ@-í61M[=ÞA‘Ã^K.Óò— èH/H7÷Ø»†cPEøDdf Û4E㤣Õd¯H‹×dø›4Œ†~x–¦¼ªæ×Лîãö²dGD[¹(µyí^©Ø~g…ÝÂ`EYS-œtÑÙ%Ý·ZÌÀjV°S¬´Ï¢'Á ]#zûÙ&|tãÐ"»'4%µ$Â%ôµ—•™¶ä1q¦¸—‹îþVÀƒk °>œ­Ø¡W¶ÚÿûT-¬^ý™,š’è–p>ƒá¥1§–9½ú¥ G ¤¡Kl ßíÌ[üPY1š%5]7ýìÃdÛ¦\ø ú“(öBm9®K3ЈM„GÔœð%W+_~‡¸ øê"Bæj|Kì¸*­òZ£m\§n­’b ºoZS3vñ>õÌaó¯û?œ!³¤U¨îcœR¬òª`­g\äpx9„5‰”a{;C"‚5]Z1®»‚9)Õâ+t­o°1DIBnÜ#hbƒß¢?º77eªí–Á"•ìópF_I‹ËhÈ =…ÚÑÌ)Bæ®ÂÔìg Eêÿ¶P™ØgÛ f±½J B`5ÝNÅ<8‚ËÑž^ÑíŸN`“‹Azj Á˜š˜ÌKJã| ~˜º§»É0øh08š“mX8øÿ߯dWiçEe“—ã:ˆ¯þÒNØ‚€º­h‘⎓Á:ýÂX•Fõ‚DºRÈÁ´œç 6  G6ÚÖ¢òbQ6*0˜B¢yžQMóGC¿ ÍÁ7JÑË_¬ŸN*ÓJ1ˆÑ«šýK±¢™ê$ÎsjkÞijˆÀÝKªÆSƒªÎùæ$=ÒÐg«R?w!hÔ^ç~“¬œ†—s?g«ìÓcÎ5^bþ 'çÁ¸•éÑ%ý89Qö o(Ç岂fÄÊ)ˆäTJa•ô¥°Ñ4<{×W’l¢­ÉœbGãëæý …ËS\ŽÍ¸*37‰©4“¶›­Äxhªx{e+8 7r6¹b #Ð9=`C I“Ó÷iß‚MÀe:Гä:‰N»í¶E\”ríYCZkØ”ÓÆéAN倪ý´³9ú‰½4‡¼Mj ¸ÖªÇÜšfõ29L>ŒÀãTðÄXÏß·l’âýì|JGñj6G €@%°%ŠF?&VC€¬Šq1““þJ%$j“ÑÑ`º™`B§eÖ8íùøÄ´ÃAì#(Æ»ºÿ8Xm“qÁbœÑàºL¿QšN/óÁoÌ À kíÈ©v|9–òª€'ªK³Êï¡I‚ÁÀòÊÈ4ž;\¢õÍQæäÎ]É”Á—2#B¾sÿ>®[B@né;½8O/Ò…:¹sG÷cKÜ ’á¤Å­‚ï¼·!‹_¾p§}ô¯ö»gæÃå{u{¼‹sa=$n ŽGÂÛrCi?Öìq[î&yؘ”ü¶<Öö_¶}±!Ùñ¶\³ÊÛƒ'öˆàš09ÑAžŠÆéʶ¯±ZÄ[¿ Ú‚M4ØÁMW‰¡ÓÓ¼—ø˜¤x§8s ¾“‚Ú¼pHdbè׸:4ˆØXï*•¡ÓLïÕÒ­8uW´Üñž“ãÎæx'¾aîv’jù:% Š»äJ°ÌH×-kP5ksÅÐB&&Œ=´·]¸níé<—„LqÊÚ\q´ÆC€¹=kGßEøIìýæ‘À ©ª­L¹à€g®8Oˆ_¹>Œª»@û«U¥ðé!6W-ô¬ÃaÛ‡vOͿ߱`Yð˜‚;<}îO°Í§ýí¦•\äüÊÿ³üŠ€å'ýÁ¯†>ðÀãwóƒ_¼YàUYàǭ쨇hõƒ_ò Œß¢6à¹xyÂÒC Ÿ5ï÷›Öß6ÿj´vIÝöûô¯­x®*µá&_RæRñ¤,Òôß„ìY(‘¹¿{´ú¹ë!hä'ø¿´úÑÒAÜ:Å?ëð)Ñz4Ãüm[â1T~—$ç•ß­?¸µK–÷(Z“¥£~3²¶qñÊ“3oy¾òŒ·Üé–ÞÅ1Kþnñ_UÕŠëendstream endobj 546 0 obj 3346 endobj 550 0 obj <> stream xœ½=Év7’‡¹ñõGÔ±è1³±/Ç^<îžçç^̞˸²¨ÅÝÜ,Q²8_?2ز²È’žÂQX±G ò—›øŽá¿ôÿË›³ßþÝîÞ¼?c»7g¿œñðÇ]úïåÍî÷—0@øŸ¼Fí._ŸÅ_òçfÒÎ쬳rwysö¿û?ž_°Éx©™ß¿:g“”‚i¾ÝÊkÆåþ%¶%óÞ›ý»Ð6ÎñýÏØ´^ f÷÷ag¸¶ûls˵ôŘ;˜]i)µÚ߯áÊKñÏËÿ† s^lÚÜŠÝ…ôlFì.¯`§—ð{Á¤ôvÿ¯­vNÀ¦q§Ú+§’õTF8çsüspéló¡é Lñ—Ü{Ùð§¥×øæòìog v¶ûnáÛ3Иìà@bzw«r1Y»ô\Ÿý0¼«j¿ó]y> 朘ñ®Þäͽ˛{‘›÷¹ù67ÿØûPõ*Á¥ì݆ò“Vj!`Ÿ˜ÑÞÇ•Ò*¿ÿoD*É#(@(&#Hé¸uñÖÓ¸5¡Üä¥Òm…E´°žàº˜¥ºïðKã÷W¤›nàEÞ×um_Én_Ͻrmè7Ì2ÓÅ+ft‰W˜5^¸&¼ªüii.x%­w“'¸$ððgàÌ01ÕC¥°‰•â†û¨ôû<àCè^‚œ`i^çæÕÒìa•V@ ÒUX…Ì!Þ~Á*'å|Qp#LÌ(#…53V…1éÒ4\Û~Êcpý É€Ha@šZ+×ýs¥™ H »ª;áøh àLfs.°P§ç”¹&¿ëÐ@è¿ã-àÏ<Ft“سÐ{_f$,Ú‰ç9¡uäÔÖÂí¸¢MÐý]<\áÝÉ¢3`¡uBÅ$”îÈð[2w€¡¢.7H—7 ¿xQ@ORì?žæh)TEå „?ô‰x¹Éò—”']Å}z^/=Š é‹sD*¡mÀ©„Äq LJ{MŽG‘•ÌL‡SÜnï?þ4TI˜²Âùš!\Ìû½@M†Åmÿ”Å ‘ïsï«Ü$lá¡–F³|lîU-PªÉË9¸×1f"e8 ÷Æ‘x€î´ÓvÓùnÏ…÷%_§ }WÔÞCîâ*Ì›@ç΀ªÁ ¼‚07èOÄé¦Kòw¶I|+!ž¼sû_³îC%*Ýßu<˜u¾˜ï®GYWq,—bìF-1Þ"z7-„¼ÊØû"3uаóå2[,3‡±×„ш$g^ðŒLó6¹-h‹ÈLZQ p P'“мÅIʺ®Jˆ,×þ –eð—£PÖ–`”U:ã\BDf{ƒËrû÷äµöó`æ/ÀKo€‡R,Ñ;19qÀ`—W–'¨)fZ‘dV<›b 9$tWA@9`w*¨ÚwÕn„ýH+ à…ÑʼnúÊêM\ǃ(øCºæW¤Ž0œïùl1 ÄTD¡0j1 TÑ9À0f €pš À0šþ’ªN”ºÈJNæã”tÒ-â{ [$Q½ÿ¯s°‹¼-aO~•–@¦´»½‡€?žXLùê{‚ΘÉ+¾(—³ÐzUé½Q—%¶P#à*¹'àÀLÕÒŽœðL¹uƒ Ƥ;•€ÃáÎjVÑÈ‹¡ Œ@»Ï!à„7“³n£€Ã=y¥7 8<˜U¦#àiqG3ßq‹ ŠË;•À ø^ÐJPó9 ’,Ü‹k@ME gxƒ¯,ŒÒì”V‚4p€’¸ ´¶7aM?C¡£Τ_«#êÐTTnKê Š^m>t›DUüi•:š¯ÞÔ? &•£Ë«8Ähq2õ®@Û¨¸Š±Aý³@)>‹úê‹ö[µ?Ø)*µ?D-¾Qûƒ±¦‚AEêCÓäô–L !äK’›HCÊ$±S]•²z2«®`¶¼°ô¨*÷/"Æâå­ÒCtÌ#.d`+â2ZíŸâ)¬Q[lÍ B‚jóxî,ÈÞ¾>¿Ð^ùŠÁଠEJÝÜÿõÏ ךÂdaëÙnûeS>j×_PäZ›-ïÿ|›„§Ë—º8öµŽ6€Xº‡6qÿEpž)#Ëœj‘/Iÿcº{)è,äÂw¿Ì4Žj…_1d@€+±¶PÖ@C…³ &f+£fCñ—è^/DàØôÀCL¥Ü)ôb±ÚÛŠû€¹Ÿ†•µç5€l¾ù¯2ÆÔ8­/Èž‚sÊ€ñd©é¹ìùºûrF:æ€Tzr"ctŸ€n󹮞-•3µv±fRàš­?™Æª¤%A4Œ^êÉstè‡&F¨Ž7ËdPàZ¡ˆª#”Ó/—!D2%º’“¬Éj«ÛØl •×Ô_ä5€PUóÒÑWÉ±ÈÆšÃ«8ÄøÂèm%vz}-v“Ð{½¤®²Nï’ט¯»”Ò[¸d’Ë’Yßò Öõ½"—ñ*,Ø ¾^iž"ºãelrgö`«Eõþ:nT9E‘–êJóÍ—1• ü…Ú1¥C-¬èkZ›GôýÆiÛ¥e³f8„Þ‡ºIXTèÍžçŒçšHx¡UPZ9úü8à‘¨E¼õ,°u§¦@'ÜÀ@XÈ8{Ž,¿jœäx²GÈñ::ò*MY§éJ[‹ö¹X—J×Y*Ý=[*)ÐW†¡11Þ ,VK¸^»È%Gq»Š¹düª­èÐaÚxRÂ*ËÝÎdlôJvô¬HeŸéd ·ÕÉb<¨µ[å’°8eÏÉÒÚ‘8³õ«'Œ3å H%°é'§©Ö_·ç-&§Œó½h?Æ”O ¦ö¨-·P²›0øˆ(#\¶q9ÊHŒ@mîk#dŒ(œB÷;êöl× 3Ï*Õíßÿ˜›¯ró]n>äæ}møUc»¼€ON.¬àPhCó­ã€ˆ¨ëš‘Þçˆ(kÄ0´ &)3«z´+ΊÓù¶¸ ZAͯp©ƒo ã_êó„6aqm6‡6¹ ŽŠÎ-­ÄFç€ÝwÁ ?ºr‡QAd“ó‚†7ÃVõÌœŒíh…9Ž K]Gv(¼ÉE%Ï·å¼¶w ë©7+ÐÀ¸€£÷ hß¶öà¤ÎžÂOàÀ3µ—{›Cê¶§®rH0ý²[‱ï¤dsdGĬ“7G<ÉsÁ…FÖ>¼†¯zàñZW'³öaE/Òn’lÖbÁz(âë)p—:G®š8NàEMØ+¸h&/‰åó>6Ь2618¡`ªFÅ…æÑ0¤e9%ŒŸ¤hœ0µK¡xzžt=à娟n„À:ðè`j[’<šNä.œû˜ 7ÚB¨’‡T™—)ϳVÒˆFR>ZUǬ޺ZÕÉîÀÕe"³iFµLj°ùÅTš= ÷ ¶>‹½°èl®Ù 3˜öØ ÓS­dœÊ4ÃÕýæLKÜ”7[ãß8·5ÛL3Ë׆"ú ˜fÞ¦1ÍæÙ°ÅMlC-²î)±Lí.#<‡c3A³ÑîTk1b·qi ,Uâ GËqÄû!þP6¹öóÔÝË×&¯àû|sÿÈÍïòÝ·zŸ Š…[î³â]°{¥‡á?šQ½n›í‡:ú„«~x"² 1ßA§Õ3jîBAðÀ/oÛzÑÃnâ/ó&튻კõû‹¬‡EþêØd¸¬¦:^ÔhÜdãbÕz²ÁeSkÄ‹b¤c¸óv@dk­CUN` š9PJ÷ß`¯þ¸1Y§Áç°ë¼÷k¿D”;Ó‰mx3)ŒðvøÎ’Þg|¨ˆœHXùÞãˆ|šèE‹`Fd/ƒ#ß¼†˜OPð™,—ÔCŠ3Ø…bëù» Å$Wûdï×)™t®=ôÇGY¶QjÄŒë¿Q®åv©&KÏJ÷Näï˜ÃúkðUx[½i n g‡ìÿ*'Hл­}i2*q—b«§>lX5¢B†§Id :ÝóhÿÔz«ØA4ã+×ïÎ.¿Â‡¹ùx#NßÐE<À ]Ýf@ÄÑ£ …ä\Å­ÒïNæ^¥’]‡×NõÑñˆèòM/4\OÕñÎæé—)y*r7í§ˆG ëèÈ+ LÒSðÓ}þ¦¼¢È'Ê\‡r4h” ·-"t£F÷M\Åk£1><c‹Z¦×TÚ *Ô߯ãtFÝÊ7d^ÜP³)½ÏñäÛì@£\b´­C0‘O´¹\ØïXW#φM­„%ÓÜØÐ±ñwžñã ”‹å½\õ°aêõúc[ÕŽÿ~Ÿ•З¹y× #‘ä ýë®»„¢Ös NºžC=CO'¯:Ýéë9„”PçjÏðœ‚L¥óà5hl¯l鬻Jøè‹ÜÎ&qSÅ¥Ò9;ÜSc¥=¾©ÓPyûáx§Ðø†pUª°œæã#È^=# £e©¿Žœ#ž™¾À !¨du™ †TFŠ …ndÀ`ãü3²ñŽapF›M|ê*÷¶`ïãÜÜ1#0cyñ\taù•>làJ¾* ón<0ÞË÷®°6Ë–†R¿¢ÅMܾEP‘ºªÊÐVR³Aj¤d´¸ûRA-m£-úÄ´weŽC|øU¨ï±)¹¶D¢B£Ç)§­ `†¶õ(G’¢âо¼Œ™ðõ†$ Õa‰²þz*Æ-úöm8*Ðó5ÂsôH» ,^@¼!-j÷2Q9t?<$ÂpXa&Œõ RÓ~t>(øÎ{gVocÖ¥£mKÿ“ŒP”&Z1J‘‹¾èl®qžP¹Êr >µe–µW¸FÅàd’(ŒRÀ¤9ZRÌÙZŒ»ïŸqÄŒ[醡²‡”÷¶Rwc¹Ê1-µŒ‡¤][yt­oÙ݇°[ßÀUº2ò:î[KÕ¡õô<-F^dh«Á [Ã'óIJãc€±#¥$Uòá¼ã»ˆÑûGŠÜõ\dÏÊ÷2Ÿ_ÃÛùõCT¤x¶Á–}HqïŠÈîæôƒU\œãÞ[›0ˆOv'¼~T((ƺëÊ!é÷ýWn ³ž’•GªŒ‘ØÏ§¥wCV^Ú±ïÇ_C&d+ð¡;|ä.¬-£‹PTI)oq¯úÁwø—ÕÓ‹ÏøÚ¦•”ÀÑÛw´°/±Rà‚ä1ו’ýxèn÷ÑÿˆÉ€¢J[KFþ(s¬zÛbü”‘§ wÇùXOÝ :©$ú:C³Òàfh+·U†[H‹trW)”šJ‚#Ÿ7´«À¢X¢²7™sóEn¾ë6I¾ÙcAº!MA9]©^?î3óŒÖ?ž¯"³ÀðÓ0GCy£vôä¹uI,!ØÙé… ú³ðÕ±ñ£ÚˆRbî¸ÖôV<¼£Â”žž¼—ÕÜðϧçÂ4\CCÖ²ÙÂnã]˜¯ò= qµÑ/‚7`x¯^b«Ž\ÇÉ1Ó¸ÊCÇ%Ù‘9`«Äñ¢­¸ù¶Ç3OÉÖLÔTço|™ ¼jEò0PÃäu‘ƒr¼Gx¡%ZÒ&q3ZsV¥E/wMdóuw3뱯+™TÀãÇ »›êý’ºäg‰åZMn~¿ÖÀÏáÅæ§¦ Åê¨?Kk¸Ró60Ën3ñ†–VZDågaöŠ£‘5¯v\tFÊ:§¥s)›@cÈ8¾äLAo#6`zJLѺ”Ô4Wšâ.ñzŒòEPô;^ßn´*á0Ö¬Ö›Ïû¦+nˆ¢A”· ¨V>QL­•޽à,¤V&þÀãYëW@Hue…ÔÍtAþ#çë@Þ4t|QLÌEªF1Y tØW;R5®b-"' vz›zµ+ÎFFÔEïLÙ¯Ñ8-7¹~éBÕ;<9¡‡7RA%¶ÙHÁ"JÝ›H³x!±•°ˆ*YÁ ù—n¯~õ€5‰¬ò¸ò¸ÂA›aÑ”‘Ê¢rUg¨)¸'Sú—+er[. §DwÝÆWU*Æ%6à}Ì+]cáwUBoÛŰ€6# ·§ìsK–ãänc&.¨6—1Oð¨µ\Ïè¡ë!üLºU9ƒû¹JN<2»“I&ä(RGýJ„ãw Ù7YhSäùšÁnÇ™T O{*5Š”ñF±P§+/&J^Tþ`Ê© µR¼ ø2.?ƒ%¦„‡¨ÙacT’œÍJ ‡ÉvTÇ]{“Vi¨÷÷ÆÎ©œ_]Ç ónQ̈‘A^º|¨MÇü*f-uþ]5 Îð2›¤Ä-û¾Û{—›·«6+ 6Ш+õË'ÕÆ“èûRµ+i%ÃÔÄÁ*t^È`ºÞ@«¯óF c5ÂëHÅ Q²-k3Ë×®Ì^œï.í¤;}‚Ò³ÞÅ…VŸøÅ¾ghåä‰9M,Hõ*Öõ.žóžŠÀ@÷תø ݵAD2wbJ ð úBD+Ê;Çg †¶@™=å˜D…Á€)èIBjÚ;£"°b™{ÅÒÌ_Ò`‚¨Ð`h ¾»9E h—žµ¯ÄT[J_‰@®¸~#ÂáÛüLŒÉ»PÅ..¤ˆËšÄú‘ºdfh4Œ8çÅäIj9:¡*É#=nw›D÷We>7uËw‰Õ6aMWgMc/+ ÷%Ö8\JX­”hª÷!šGM5@”Í%:ÂhW§•…Bm.}k#–rKvÁ¯¼tkl¾™U4ê'¢¤ÖÝšFøT6{èÏY@}Ÿ›—¹ùMn~[õFqø÷U¹Ö/ ’?LTT.ÒGZÚÁ%ÓtcÁ¯²ªúÛ…=ÆŸ ±Z!GYò‚OH8¥æí»|جä¶vöXd§¶¥î!3XKƒ¡ZæU\RÉ•*qOj¨©ÒPÄÚ:…(:(çB©“ã>ƒÐâ @e÷eòö²ðÝ„¸í€ˆY«ä4­9eÁ™‹ ™QÔ2ù ¡2r©©„Pœyí#*OO0¨;çÊÔIÇb+~‡–‘Ò¡þèÍ…dnÞÚºÎÖ¥=ׯUpŸ¸ÜKž†eÙæÐñ‡)üåÉú»`ý/Oþ\ÿ,4o² ýkîýŸ* Q]ð;JÇ ÕëÝ Ô‹å ¤©Z¾4ºÉHé÷JÓ§Nåòv!Ý.ùê ^wØ~£Ôx~ò«µ˜î,v c»‰y¼ZÀ~|=÷<áj­E×ΉWû}ÞÑz1Z ׬éÈo[ ÉpJr&OÙsÎ$ða!«Îôį[>]Vè¢/"ÄýçA$.Gž=$hKsÊ/‰Í&§ ´%üyæІ@4›ÚßíxRàÐ_•‚a‚p#UªêT¡Ø|›÷¹Iž<‘Ÿ¥hzÎ+Xlþ?Ißq¤®/ªÉ¦kÞq…Þ×¹Ù [ý-ÅûÜÛÇU£[<ÔM=CJ=ˆè¦Dª¼fµB|9·_½ã÷Ý^²‡Û.²XöŒ ¬X£Óîë.ë—p±ùuAœ©€µµÚJ6ZNÒ$xô+Ô5E´[1ÿÂŒ)› Ã4Vй zŒø_â((‹ïAÌùØ…ÑuürûU&ØŠh×^Kw೦—› ëùÛÙÿ"-7endstream endobj 551 0 obj 6386 endobj 555 0 obj <> stream xœí\Ks·Ι¿boYºÌÉà TNIìØNÅql3©TE9H¤(*6)YʯÏ×À ¦Á¬v—KK®Jù@Âô4Ðï=ûêïΧÿ†¿gWG¿ùέ^Üõ«G?‰ø«áÏÙÕê÷§X Ã*tÁJ«W§GéI±ÂvÆÛ•“ªëZ^ýsýÙñIßÙ LÖÏûN)Ù±¾£iL/ÔúŒÆª!Øõql½ë—4tÁÈÞ­o#o…që{ 'Œ ÅšP×F)£××i¹JþëôO`Xˆ‚aŒ…“«:0#W§çàôÏË^©àÖ—ô¼qÆ{ ¦‰S´O¤TAJjPpØ~$ñ=Hå5¸üC ßL³§Í_æYzÅç§GßÙÕOÂàVšoÃ~d'Íê 3ÆÑ¿3¯Ž¾_UÉnU0Kº^Ê$ªs?NÌ=¥¡–B)H!Ï^NÃϦáËê±4¼š(üušý{¶Ddu‡'Âx°P ÑõքĬ”Óaý:‰Ii%’VhhY¯’V(å…óI†5%4ê’ÎiÛ»ÞrŠÄj©Ë^&ž|Í‚¿é9#s—¨[ë‹%•.E´,žŽë¹.ûaZ}çŽ_ùP«ÉHyI“ÞFÒ֕αÎ<’;¡Ó„UnбxÞÂŒç gêksˆ‡ÖûJéAv;…—ǤNð­bôÌ|ç3ö!95šYt£ŠˆâhØ‚·ì”ÝRÒY,'Ÿ&^3/ÃhD×2²–\‹‰Ã%oÂutئ²¥RñѳœÐ>u/É«ÒQ’wë-~86í\¥sº]vQWDÛYó %PÒõ³äþ•_¿K|X(Ô’ó\0¦‘¥`+%"zõ3bImCzÿÍÎæ?‰^¼(”•oaØ%pŒ“_3Š#'>,ùnæ4ošþ³rX9e¼dæçóé ô8E—•~ÉÜ^1åarƒ{£3ôˆÎOiˆ¤ÕÉQîЀ†Ü‰×Í®)îa°‡Äui[©,ùw+ä¶*KËËý>'¯©°iaåïMULD³ä8½[ò#(6”^Rà:ŠƒFlô¥X"Að–M³C§°è@#lryyóñ•°6S052âM¡´7móbài‘ÆNÂñ — ¾e¦ÉŸ¬]n$}•ÌÁi„y9šÏü¸Óž{XœTéï¯Ù£gÌbFyØ0äk2ûø·4˜<’ œ–Ù&ßæÜÇöF¦± bKÊÎç‘‹!õ…*›õWñ¥¦×*`èo¿ž§%ð »æÒ¸1ÓP ÈXù~“âY™âr€–”öôÁ “Ìit¨ÏqŽ×å)Ñ£žæy虽G ‹X˜œ†ñ[ĆÚét¥Qÿ Š|Pÿ­R§‰òÆŒ)t–Êy Q%taA•×Éc^š5~´2f¸ÉZÒ¾¢±h;Ä ¾RgÛy¡òiFó IDå€Á*'wØ ,\¢nÖ‚†¦ó.´B[\¥ç„²KV}vÝ¼Ž¶DkáoÚqeÍBõoABíír´”L@嵕H–6…˜Ì0X¹¿Rb¢à/Ćœ¹XXr7„ ͨm%jßuÎsî÷H±¤å›‡øØ+S¤B·YCš¡‚OØ•ÞrB s¯Æ:_Ua„E®ùÃŽ!…™º×[ˆúR•ú52{’‘N‰“wIÛû.RHP,Çd9°½Ç¸2L–öåQdEüÂÌ+Éxè9EUI±@–ÓhC¿-D5³œq‹Ã"«¥;ø^AÚà?œêð*íóÌpª£T/ÒDÆdß §¦ÙÛi8ƒSãìáÔ¾óm8u)KÝ6pîïHÉñ‚Ø‹C)DNÍË(Ë•¶Q‚Í`Ûd5&¹ihA网;©·FîÀ¶/£ïEšöv¹¶Ÿ bçÜ‹žáñÌ”÷_2GWfô~-tv`^5<Ôè}ËØ ÒCã«L¹‘QÌbñ–õPó(ÍirIòñ»ãdÍH…ýcàlU–‰B >k#„Ï Œ™G›òB(hí¶’Ÿ6|Yst[2@ø(dŒ¦ ¤á¶d€Ö*Ïìî¶@y¢ÐÅØGnë/›†_O,=Íþnþc£ÿAf‚ËøÉa*QhžÞÖåˆ(c"­Ìε'é)2ç"s¹ iÓ)ÙDÆ‹©Ñ.Ó #•­²’¹3¢ôaîŒâñ\¦; ¯g… MCR[eå öÆ£ÀR9¶„ymªð⥊ÙÔO:æl¡ÕÈ ¢£ŽýŠV{8eZ‰´OÃ=Ž«Eò®”•ûL‡ØÌïMYžµkÊ÷fh(¹b*)qƒ¨=ÑJÀdÇ2*מÓô4ly'G”>ümµðZu TOµ•¤œÊ; öòÌ9•‡5úH³ƒæì”SÕWÔŸO÷ӥW÷Ù½5…äú.D %‘~<¾)½}—îuî=ˆÓ¬%w0 0 Ì ïÉŒ¥I\Pׂ ƒ¦¼™ö~So-ÎÂj ‚’CVp8Ëžü£[im¥“À% Úù<³G4‚ 4qh\Þ‘‹]Z¶7ÅtÆüd=M×á:½ã›iv—p­ ò t;õóAPÐÖçóÅNç“÷ü ÔUB´ÞÂÓì-?ÀÖcOŽ‹“€sS0˜TÊiáÇ”2+ÙÙôèÍ4{ß\p9Í^LÃûqöiÍs]d=_V´ë¨ $(U(ÈyÅpZüzš}6 _5_w[1œ(°g?ixלe<\Ãð˜Ò RgºÙIêçÕ‚™TRŸyÏÑoÑK•´àãï ýü~}axâ1Bm´+E=;ÚÇn0);ëòÌ>Ý`tÓ) Ø¾¨5ù!¡¶Áù*““¸¥R‘§…K‰&Ïí«œN‡nÈÌ[pq£bëYœNç¬Û €¤^ªÅÔ™žÍ¤ø:_ûWˆ,±­‘WHÚ¡Vàu@³.*}ˆ²4‹.õ)BE:ÃÕQ hQxˆ:‚BB¥Ž)Ò9á¨<|: o§áe¶TL˜æty¹,³Ìžy\¬ÃÝ— KV¯í7]Ÿp.Î Õº|žT2BËoÒ ÔÎ%¦?ï‹Aº¼½TÁ;P‹×^Ü€–.³æ@\\ΗüwÁœÎS>¢.»TF ­Æ¶ëáý¯¨Y•R+°Üw½‚«ÞÁÖužÙ]A~™(ØÎ?(Ÿýj^ïáTá!zÛgô¥£è¢ˆHN@@´…ø^%åÐA( Ç„Ÿ-è—ðs(®†;o'…O)—Œ·.ÜÈæÀËÈ"¿¢'ƒ,êÔ„ÚR¥¼ŽSV Ëá/”ÖzˆÔÃEÃ8³ÿE(t²,’v½hhÂt„˜änöƒ5]óŠ ¦sRïq¥ªz¹ÜõÒFZ¢G…gÁ‰HK,0‰+jòú…N$ µÄ?°!°œ°¥Î’N¼ iºX]-A¢üÑQmúðhÝÄqMÙaÁÁý‰¬Ééº{¨l¢{Þ>Ð-Ul#µ{\þŒ¦8⤾~4P˜%; ¦EDnt"Äs>›ÏÍb²½Ð·ê.õ½ð}²cáA¥j§=Ö¿ØlpÒ¼§âTªtº¾D§#hׯõ+¬3B´Á>¢•yø! ZÕ&cD;ÎìÑ‚²ý ˆöM—ö¼n Ñ ù@´Î¹¢•ÚEÁOí8³?D xÝÂÑÿ™0ZvB £}À mq@¿ 6÷Û| íE“ýÉ$ ù?H{pVôá—ÒöiAJSüz„`ë¡bب¤‚€@ZÑ*6ÎìÒRKR¤Ðõ[ÄÚ íᶪõ³ç:àq0ZIMZÚìÑJTLJmî¬Ç’ voï’Š  ]¤¸iõÔN¦Ò÷Kq­³ïîðf_47“r\¥˜‡k }ƒÀS úJÏ>@1Am Å< Z‹ªFMEç#¡µþÙ­Õ2ÿYÑZmè7üDkµ¡m¿ Z«:y-®ÁZá:øma¼¥¿ÖÒ•NÈ3û€µ¨òÔ4΢= ~8y^W8\TIé¶)З>8`ËS/u’Öð—ˆ­ÉüZ8`è't±$¡¼b¹ “½›·ñ·»î6#èzÉV·-sÏ<ƒéKK%;éLÛ¤6|Ú,5½nç(šøDw|âP‰QRµ¶ÔS߯S X|ÖýŠVÇŸ_™”ʵúq}*Û"ËÈÙ+çw—Ã×$Z‘Dz&QÃ¯Šžô;nlŽñ/ÅQI­Ž>ÞéuG@̃âA¯)ŽÂ7S¹=ÎìG{¸WM4‘Š«¢ám×@šnáÓžÞN³/§áýÆ kHB2Ÿ[ù!þ„9Ö?íê þªLR—°Î-zä—¼Eé“Ó«"WLŠ¡ƒ3‹}å72%¯ÔþbŠàP'S3•wé1UJ‰ý‚/(yÍY&¸ÓšçÃO†ÐïÜä›Fïbây›ä¯Bu˸õH²´G¿¬‘}_<ò\9»EÝ+×ÏÈÜ•€ }Â2ƒTñ7®N¥ŠŸØÝOÓlEäDÙ‡fÞ  Cå‹—‚â)%Wšö¾0=N.“θú”ÂáÔ4A–𮆽?äÈDúÖ0»©oþÌÜßÈendstream endobj 556 0 obj 3987 endobj 560 0 obj <> stream xœí\Ks¹ ¾OåGÌqäò0$Áç5ÚÝÔV’ÝÕ-›ƒì±dW$ù!Ù[þ÷Èî&Èa¤ÉR6*DÃl4|x±!\J¡–’þ ?__,þø³_ž]-äòlñq¡Ò?.‡¯/–:Æ :.£ˆN;³<>]ä'ÕR)%ÜÒkÒÃòøbñ¯U8’ÂXkVâh-…VK¿ò}²*d˜–ÿ>þ¾£ÁGÀàK7ø’_p¯‚`¬_ý9-£ zõB=înø~¢Ò+þz¼øia„´Ëßðèß-T0 Ðq´ðvyoPÒ‰r¾øeVAµ¸“‚‚&„ZEgE¸OE¸“BýP¨oËò‡²¼,ËMY~¦¥Ñ `õºPß”åeù®,¯ÊòzâmP[}í¥ˆR/×*ˆdmætÁ)üëÑZ é‚1(b!¿/VþÀÈW´6|(OÅ@·RA Úf)ÀŠ 5d)Þí]òó¬­FjsQÑ"jÂÒá9EÂI ž({à$amâ)Pé7Á$ùa‚juÂÂê×U¡2fïË+.ç9XáÀ †IÔÖ0™ÃqwÃ÷Ór2 X‰ZtÌ0`•í0 r1s˜ ó]‘â†É•nõCKD6dýpÔ`ðvÉ6°Wœꇲ¼î>örZ’ªÖ-§½G7ÖÂ"ºxH½3¨ˆ.KgmÆ‘4¢E™‰²‡´.sÞ˜l‡¿7˜ÎË‹£µ3VŠ`W_ZWHêø\–eÉ6¼*‡ž×"FeÐç“­U¦Eˆ@ŵ8PÐ"&:â ZL¸Õ@¸µq«õʰÈpûêñ % ‚å@9@¡€I Ì¡áÁ`CßäQ—©yó@áá×£Ú*à_µCCx! qU²Qè3õº»ám¡ž–åY«¢D=)Ô…ÊRÛ–^JjËÇfî§¶ó†Y~¬MLX³_å¶Msä­×½ê¾ãM{¢räÌáMWà~Ö}וárXÛJàe‰ö]+#zÕvâI˳ÂnË2-x² O8ÈE:D|Æ‚½ñuåCËàêÆó®µîuWYg]ê?—X[ñnB‰z.½MJãÉ¢TžJ‹âSDo´´ï•¡SY #­ÈØ–ZÝ ·J5Ôe ùzôÇûÔVOEàP ÓÖÞXõǑɀ‚ t¸“¯»Ï0ÛÀÄYg˜Öµ·Þxg×f¶ÊìÛ¹ö¨€ìÚ oãÚ7ÇûpíÕN ýqqüâ~°¹ök9³¼ÜqF}Ô˜nXeEÊÔÁ:lèþ’ð1÷Æô-­â](× cŒŽDõ AUM+ol¯i­¼Âî£ÚÃúà¡=ÆîwTÕ®•§&—:²¤Tëh )+’ãy’ZHRMèú OG½÷›FQ½´ƒ9ÄÔGôa˜(û´ÁQ@æ@èzú}ðÈ¡gðõ„)C|Êw#6ÆŒob¦ÖƒIî•ì(£„ € |ÈXö ­•´ÔÁeP'=Œ#H‰°ÐRgPO~fˆáozÃØ\ Üý/ª¥²^ûQª¨¿ [fk."Ïf䘣ЧQ-ƒ†È=N õã÷¶œ§õäß>š&Â÷ï†6…zã…+]7Ý %õšV7åÒÓ¤E#æ»áÌÆûÚ†˜­ÑW¦jœŒC…òçƸ©ÎÊŽŽ;fîsâì…¶š?ÈX³½`LºžqÐàXVOW¸‡T¢yyÚõjn0ŠÆz£pÛ¯@·¼°#Ì’Q¬£*%åå+T3u\9©|Î!®²5½=ƒ'õ2—¸ÎÄÏI×}FQÁ¬þ“Eu¶zw*öÂT&¡îfœ¶Ü¬pcf»ÐI[ì,Þ6lÍ#ÓŽˆa*îŒÉ$ª¬Ξ{“ù:ÙUÆô°Õúöá>ÓDéVqž>I˜ÕÜ7ß·ÐÜœ'ž3÷ãk8D¡w{6Ш] ®Û\ô‡üÆŸ­£r¼iã×gÖ‘±¦,Œph/GŽ>ËbÈ:IÏ…€m`tèØ8~oØEñؽ)'èÊäÞ[/7~‰`•X$RëåñU˜´GÊ­—WÂYâ©êáN_ªÛ{ÚvÜߦõ’"²‚»ŠRyŒâ}ÛÎC6]cx’Ñ®$.MDÔNJ;ÚÁìŠÄ„¥»Û”FI¬¥½ÕKçÚˆD ÊVòŒM|¥¤¸°ÆÈgƒ­s7__ŽÜ*çžkw¤îéY¾>eí0×É9£óóµn× Ý£½ø»}ÿ¼U¥ÎõÏÜt/sx7¾i¥¹S¶Ô+E+-r,+ÜÎ@æÊ'Qöt£'ÏH׸kí(Ò Ñsï!3-¿åÎ8™Ñ`àVl2g¤ì?™ƒ° <™óÏnõòi>Þí˜Ì¡Å£Oæ`h|´ÁlY°¡l0g¤ì?˜ƒЕí#ßHÞ&Oz2§XfœÌÙß2ãdNe™ßÓhÎÎ@`ŽTtS_f FÊþ3€Œ¢~j“98ß„}3Æ9Ï•8PP¢2 …}À¼O.Yé!^˜äݪï™ìãSøuwù¤¦|@j)4›)G*¬o÷Ü×8 Òט»˜äK×$çnð§ãƒW#e“ИIú§çÁ«§=xÕxëÓýóàÕ à½ÿÁ+û£D¿ßÁ«±Øò± fŽõºÑl_‡¬Ãk‡!ÁÉx˜æn?Ž¥iÆØÂvÞiýèº{¬[•Xpâî6ïü«×ÌEqºu¼‹î¾t:Ÿ³92Ÿ'Ùö‰•3š}ždûÿdSt%…Ee™d)ûO²)3QúéßÕÑñy’í)M²5CßÏ“lÏ“lÏ“lwœdcÝN…(PwG‚¦I6Œz{Ôå Y6diÔÃløÔ o†ÙHÖ¨wg÷0›G Í‘Ü¡¹j?3Ìf¼zØa6´¯•ûL³‘&¯¾O߯k™ÒVOé%Ý`(S¥Ž šR¦¯èÚóƒ(·&à26aÖ‘šqµí$âµ.°+ž­b ½PÚšªJÔWU µeTš‘0“Q·¡J)¢B{šªòé#%]Ä©`æ& åëà³NÒô/CšT@Ÿ\=šQÌßS` ¬Ý}4tm×ÕªªåŠâ8–¡½Ýåò¬3£ZAUÌIŽƒ?çYŠþûŒÝ6¦ÏyÁ`%7Qöùœ‡ p‰bÕ}ÃKvÞþõê?…Ãkòokâó% È­=Ô±‡æ?¬Áøfæ®2>ËX•XRÌ Í{á¡ýÅÉ!lzß ›fð+G“<¶ r¼¾®]e ¬çùIÚInz£2f¶þf‰­ŠøY•.Ê£\”íì†Hz44ƒ1\‰¹BЪŽ|÷0·iU2è M°«*§f.N·—ìºý”ž¡Åúý³î^Ö¡m†ïÊÝå¬YçE ì’y8´¬‡Ï®²f5X® ®ûÎHW @Ülíx°#!›`›¨Qš1Š¥üø¾~|„k3€½íà½Ú®/ _d›þiôÓ‚äË‘Mc¨mR™örµ4%ÈôÊqVØ×%,›áâ~# ²»¿^ïG3˘ Þ®leÖ.Ú5åœ Hjw"4ö > stream xœíËr·ñ¾•ØãRe"ÏcâÈNR®(¶X•CœÅ—TáË"%[ùút3ƒ³Ü]’‘T•ÒA„i4úýÚ_–R¨¥¤?Ãß'W‹ßÿä—w ¹¼Xü²Pé?—Ã_'WË?á—QD§Y/ò—j©”6¸¥× ¤‡åÑÕ⟫Ÿ¥ðZGåVgRhiÕêž¶•Wâê­]pÊúÕ{Zƒ A­®!á´_}ò«“|`l¥¡’Óá|øCÙ}S–—Ý`é¶A8C`NºXÞuwׄ0ZGm+„_TÌA×#êØN\?m¬ À7Ó£AÉ@’ÿ¶•ij ~ߥÀE—p#y‹2k#vÖ%ç¼H®™sÔ! ¡…3n°çJ:F 3IEŽH@ÆÏ]¸ çvž§=ü s ƒ·@g {qò”²ÍwrÐ&2HZD߆®7šÐõˆŠFý Î?82rø´ &·€ºX;û¸Œ—3áÀ=ìü[={Œó¯Y@²|¤[tt:TçõL"À#Ñw,f-E椢1̦üËÄtžE±<êæGþ3“Üe ¼çPzB3FµµžñUQÊ­]'8Œ 0!ç­ÐæB„Ș×B´›÷¬ÍH-: …În¤O8‹Xž7—,vòÜ” Ÿ’ ´c¤}•vÝ ÛHfÆ)äcf§1Búf:‘µvô:›¶3ž]1‰ú÷9ðToAc„²µhÝÓv@Ú^~É…xרó6¥‘Š¢h@²´.`(¨Æßê)6 €²huj?KŒ¼­Ðe¤h†¨H~³a#€:m¥^O£YÌ%:¨j"ì<ï*çiLÓÛ`wi#”¢“šv6·Áþ­à§¼idmJ™Éaoy;.Óì:æ¸ÖÍøÚÔ휃¿žÆßbiÝ4=6¢#& ˜¥¥SÜJ>hHj|¯‰5vô@j!½kŒ9ͺ.MÍŠú`Wß Ý|mýr_Ïl²íñ¥žÜ`7êÝí¿[}pº5:Zœë{C.S:wxßhíZ7#G£µ»Ë<}ÂÚlâ8À;ÓˆŸž}:Bs#O×ùDlºÏéog íýpb'›CÔ4 !'×,7Fç(´A†)Ie¡rÑ×nÔJSLnò›jòéÝŒNhŠÿK‚†þ(¨Ñj(CV#ÑЩÖHwÌÌÛ×:NŽ Ô†>ø žÂ`ŒÊU]¬­³ZôYY®UzÒî寰#ˆËϯo×”Ëzž*ìZÐ9r¶ã©™Ý£§m¥7ÏÓ¶°üc‚fív I7¿³ÙàsS :þ‡<;aœÞ\~Jc„Ƭ+(`¦ñÃÂgµQ]–’]cß /¸Z79IçØ›FaÐÅ›®%eSr#:-•=͈¬g4[Û~åºIn\—˜)§Ó?Ó ä0ßA?WmsÉÜrâ>ÝiÛ‰û{ópT'û×ÀPÆæ9Ã÷™R®!vMlÍ‘1z^ýR‚ŠRý1q,¦*tUj¤Ž]K¿†Üw ´·õÊ©ªÃÓú¤EM¿†•dn¨²“ß³Ì$¹îû·ûéˆTï‘íÜH›†åÉNÃiĵRŒ™üå4'gÑtlM3=Â{YSùÕÇ£'º~KQ2U·š­dçKS7Ò«Xb‰á²,uó¤bè‹ÿ|Ö^endstream endobj 566 0 obj 3442 endobj 570 0 obj <> stream xœí\Is\·¾OåGÌq¨Ò Ø—“Xvg±ÅT¥ÊÎAâ^EŠ4‡’¥üútï ÞpÊ–«hxFwãë ÔOsÎÄœãÿß'7³ßïæ«Ÿ_Ì~š‰øÃùðÇÉÍüǰ@ˆy`ÁJ«çÇç³ô¥˜ e™ájî¤bÜ©ùñÍì‡Åñg’+ÜâòhÉ™qÆ{¹8ñ6Aûÿÿ(ªŠ¢äLI€êñ)Ð8BymÜâ:ƒoÊìE~è.¸Îô]}˜sBŒÛ}82š%D¤ •r:`X)ã¤[¼¯¢„cÆØÅY²JÓÞ´@ÛÅI<´åŽÛÅm!}s$=‚ëÅ[B˜R{Gæ OIˆÐ㜮ݮtœSüR3ÏÕÞ}šÕ\LÝ*xñSФ‚¢;.“Á#Û-A’Ö„Ðò—·ÿCÙ¾  Y°«0?þvvüâ‡ßx©AmA*?ªáoHÚƒ+Sm_€hq—d„ãATεօ'ÐÎÖ jÉÇ‘FevÔäG}¬i‰\ jÛHÎ J@”€ãUßQ…‘ï.#ÿn/5[%ež•~wž8‚›à oùi8\›7SÚLó(ÒLcX¡Œî]7ìÚŠ(¸+HO2_ÌoÅÄÇVlwÝŒF=¸ÑDVÅu<Ä!82lçáY¾)C¼àBK¡T×·hæ¸Ê®ì”€N…È(pÊ%få¶õø_*.àØPà ¬È´‡Øå^|[H‚©mÂÖéõ­rL*¹ùª˜&!ü#ÒPÈÿÙv6#›–šqPÎtø{+]Q&L˾#WóràYO¡YúÎF8N+Õ|R§y« øS±™ü…ñYô>PÑO„'×i…¨ÿ<1ˆÕ |”¡Âk¹JÂæã~Ö4ZÖx-G zL¿v³z£,.ŠÍoR¯ ÚÅ›¼yˆþÒh7Þà¾Gz¼gÑÛ]E2uqïeÂ2™PþŨü>.ROGõ5…†«Äž”ªÝ WVm54BDÄ·àŽÚèh-ª ïR¸aE¬+-RùݦˆRþäx-“‚Äë8¼Ïp<à5Éâð&·Çk"×CðZZ ¥jðZþ"x­¼aŠwc¯^Ôá5Sá©¢ŠÌ&@â`3ÌqoovFfüο 4Ç¥“J¦(9¬mÌ£§‘9síÆÙ°™‘e××_Œ&„fý¡gˆíQ¶¡§CánBa#žQø…¿8&¨ ù#R4_y@Vz9j›á‘é:«Ã Mj[U„¦ÌŸØà*…F@0¸¸›¢ñpOÀ!’ܰMŒ eØW©"Ö2Bü«(ê?eøª(õU™ýK~[†_•á?ÊðŸs%˜ ™‡né Ï;À~ÈÆòª»ó¿ ïßhzR”)QjË\ý¢â§)=½šš\ÄÖuh‹Ÿ®’r•³-&F…ô“ß’©wÈž­)³Ië &=›ˆ4Î’ =fÛŠ–ÅRe¾ Q^õLxH ÒQËCãšÄAbæº<åÌÌÜŸT‚“¢òÍ>&‚pï+lp=Ô™ñÒOо'ýK7¥EZi[¬d:ˆº¼­ôª ¯‹Áž–Y¦«Ç”™“4[sË ‚6‡…l-&}ÍDí¹q;I#b*ºj4/†>êqƒ°M™9³BâDº=D!ƒÁö®s´úH,?¤ÕÂn"z˜óÄ“°]¼Íw >„óÓ°ŠÔÀˆÃº#›ñNÁå„{§›;µÁØó™Y™O"C•Œ€7 ÂÉäcY5ç<‰°ÑØ@ Ü p#œ0*$¹Yo¤ ÷që}¼£uZ‰M‹- ‰‚Çï¼· áȨ FrWÑ ÛD{ÔÁp¡& ÀË\·I¿.mž?5ž&Íw|Se]_Ͼ›Á•1óŸg|þõLXˆÈ¹›ƒÈ1S˜ßÌàð–iŸg®g¯'ûcªßs&ÒdOí1Ò¹ºoã¤8{W†—­£³·Ýðêt££5xé} ‰@ššö{bÚd9Åe g½ØÇ¡€=äZ¡®–›ûN=°Þ=ýƒï@¼¾Ñmzš)çMÑ¡.]Ç£Ù¶R7¸àUbçF§iê8°.rG™9]C1õÁ”¿“u2Ëöô[:>'pHÏÜéÝE´û4°ã…'ºbèí(î¢g[Â- J6èTãtô*BÝ @ÞàI0k‚ȽÓJ[^©Ùâ'q Ç.Œ0[º©ÈŠÚ·¤äÖv²+›x-n(»M­"Óz™¶°AtÒô–Dê™$/t©8¦/ù ΓÂAìÈ8@{Ò¹?ÊÇcç]Z”é²¢‡ø>Qzª§ƒzáµbïz` ñ݃»†Ñ8³¾{¡}¤É¬³;|œ%ÿº‹êäqÃYð’%á½ô,x!Gñ§û)ž×:YÐ0}[sG¦¿ ˜2´=>⯥I\Ä»Ãt¸*gGkK#ñNè§Ôr_Íý\[ ®×£– –yf-Àtƒ4üðq7žBø½µ R1TÙÅ‹2}R†·e"ÍU#X ¡,Ý®l¢pÜ]ðM•hDÁ*@WŠVI€¡,PÀY-د›’ÒfÁfa½ë–1rPÍ $ýº£bë}ö²ºuKÈÜt®éBm¨¤¿‘Q¯9ËúðBÚâÇ£JSK! ’ Xžµ–iI vÑV[;J³Ý—e–¼ÇZ“nœ}ÓŠ´_WÝ£| g¡tUeø§ Ãiñû2û¶ ÉS±³–Ÿ ¢%G¾ê2|Õåá2 ø/MÅð‹J; ‘ÀRv2ÊÓ®¬ˆ‰¼¬´°¢ÌÛŒ0ý®!²&‹®à Rq®” ‡,–óíIïzž”׫‰™Ø}¥!ÊÖzÆ,9\ÔäU*‰öÏÑOebs¦—ʦÈWñ‚¥3õ¤ÔÛÒd›®!ÎyðÙà’»ÕŸœ(+à”¯§˜H‰;ÿ9"0–jæ 7¬ÆDß i½±yfß,ð%&R`2¨Ç#°‰ÀÖjÙ^hßI±IåŠædS…cßÇ¢’e>Ô£¡©LÝŒ¤í,ðRWÙ žçrê•jõ«›°½Ë›7=CÜß´•`3Í};Z`Ë´6Ìýb›¬ÄT|³#†©…ÃBú† ˜a¦Ø¦}dF^–Ý•áev{žy_:'M÷(÷ÈHcªÂ0ä÷.øáY*ÇúãL)“Œo-h½ô3ëžwçµocm¶nV4÷´‰±à÷cÿBùñe-‡´§g6ñmÎåSF‡]}ÛÜ+`~‹ŠmW䟼úèfÏËOrþY[µ‚)W:‡X¤ÀÛ¢íZÛN«ôÆ J}ße½ä’V zß•ðØ€øß€Í2 ü§ÓÓtZ!ðAyÜQÉÃÄoyíZ¸O'ÔUÙí¶K£~Þ4´£hRCÍňrxn†üâË ^ÑvŒÍW&¾e·õd?ú‘®eï7 b¯¶Ì’bQ*ê¤iŒuvÀ몶µ{¯Ç`ï¹ ÿ܆nÃ?·áŸÛðÏmøç6|~öÛiã+âÊÀÐ{—ÚC̯Hï}œÙ¿÷ ;¨÷NºgaÀ9:…ÃzïÒIÈZöÞ%V;ÛöÞÓ]Ùøîs¼â;ÿR |§BØ&“9¬÷fýdï1ÞnÙ{G™5P<ÅÞ/ÐzÜøñA1šzösR¿è*ÆWá›`hkCøwã\»!©±ÜH}Œ`òýèĈ0r¼ èÓ½í2_K 4·j0ç7-­] åQi­½©³•¥Uy Ä@²ió +Òáe¨Žhr!ù»Ùÿ³ÌÅáendstream endobj 571 0 obj 3430 endobj 575 0 obj <> stream xœí\Ks·¾³ò#ö¸t‰¼Ç$v9I©ìrÌœ¢$R¤T%je’²-ÿz Ì XÌJK.Ðré ~|ýÀH?¬Ä W‚þŒŸ]ýù_~uys$V—G?ÉôËÕø×ÙÕꯧX â*Ñ)gV§Gy§\IéÜÊ+=¯W§WGÿYy|"µqýòX Z+aåú†¦M´Bêõµˆ1ºõu»äú5 }´Jøõ»D%8iýú–ÆÒK«cµfêÆjmÍúm^n¢Vÿ=ý'–²bcéÕêDÇ̨Õé98=Å~%´Ž~ýŠö[oCP`š8µÑ„LJwI‰Lã{Ð:°ù·4Œ$¾-³§ÝŸg錯N¾;2àlõ´ðõ‘ Á ʬp!5(»ºÂ©ÒÎÎ3o޾_ÔUÃ狼(›) B©¬«ËÂÜuaîy¾+ÃWeø}¾.Ã_Êô.’Z÷´a┓arÎÆ˜5ªµ7qý>kD-³”ÐÙ´Ò‡¬õq ´¦¼‡ièõŸ˜2ßäåÖ+?ÓÖ›¼\IUQoì@y7Da°DùÁZé×?«0H\¼æCHÙf—í((kùŠùd~Û‹<é‚dg}È̈ˆYø¶^Ê‘®^¸®Lm I+­&ÊÀ›e6ÐYƒÙ@¥×à€Y¥Q 1ÜÃ*A j«ü¦°ñ¾ ¯æa×ÃD=ÝyVz”±T1N–£¡TX„l¤‹•ö™d×çYøAg œh¡ƒ#N¤‚vŒÏ'ñÝd ,·~‘Èå&*ÕW€3š8£ÉÅ_µ\—ÙÛ2d®yÛºñ,­”tBœ%÷¤óâ]û é3Æçy^ûzÙE“Ûöz4ü8Ë?Èæ@и°Òbˆþ.ÏÆèv4£Ã8iÁUòrìz1Z’ •q\gVÚÖ‰a ~Lduˆí¶ :–0êŒ-ç[ 5´$bݲڈ'!í1<ºÉ‹•Y?[3N2W8R¨I`ä#ÁäE·™¯+JÑÝ{£¡Œ'Xa› ËŒ'È9ø¾Îu-~J' ‡Ñã¬Üö¸F§ÂW!L:…tt*ìTß*‡DÒ¬t²‡Ið—eu£1 Ì:¬ŸÜ9ß%¾3åky~·˜ljÒ˜êtX††‚µ¬øcÖÀlä»Ì«|žŽ3ˆÂô7ý“Gzˆ5#T‹”éL¿˜ýE»>R‚NŒ\öð#g.v.> vsí'´œŽ{’Åaö£ )ëì¨;yÀ(:¤¯Õ’³bà•§q$CÖ;yæòá8ÀRê¡8RrÊV¤@–Ki9¦3ë¡{Æè‘pŒ IØÑA+ÝÚ#ðVÉ-Dm’ãêʸOÒ:h€› ÇßÝn˜ÞdN­UXÔ HG[\°†kº ~Sy"?å6oÔ14Ö9‘î†?ë@t²‹oŠ=ý» Ÿ3|º3¸)¤ùaŽþ›æN”Ò4‚+ŠxÇÆM®œî-ê­YŒ¨ØvB ©PèJÒ›-ø ÓßÊs·Ao´Ê^Yö–…–c5ÙY™¿¹‚M.-¹`ÞÁNbÜž¤F sh ¨¥nB e˜’PBqûZ Õº,1Y- Óµ‚ª4·©HÓ d€Õ .ÑNÔÙZã@ÁŠ€ZrýÍ*„Á []w ŒsT\Ë&BüBÐ ua„S[S5ù­›\@[zÈnŽ$/JIò d‚\,ܸ>Sô0EB>¸°‰KiR]¶a± ›]àŽl¤¤ŸlK7x©Kzœ)øÙc“É2qlˆ3°k€ý…wnëÜMJR^ F6êr…¥ÏýŽG#D:[Iª)¨1¬¨3­Œï”ëŒÕ²o’Öòƒß™6€®G*Ëu›i”d)u~ž\ª¥Ú Ë°Ù ~9 &‰¥Rc‰ž–e/)fÍON¿XlAµ("5~šÈxß锤#G ¸9^f‚¢ƒV0ckeò¼fÉÑùú7™LÛž‹i‰Õ ùòíÈ–²;ᇈH]¿Å/ ˆŒg6IfCL¦C¿×vÿYRÃÃ.¡àl©çÓÒPgºtSÜ‚#Ôöþ­oV•( lñ3'ÅÓÕB7›Úd¼Èêô#Aúºy”Ú/¬7ômžvôšGÔá±q…„—ª jyéæïÐÏD†n…^Á0äÇû™¬i’†¬Ÿù´ÌnʵAÏwvU,UÝ*6ýÌ{éÇú™Udð©à[§VÑ%Ájí÷|µ/¢œmß4í.Àg™Ö ÷ƶxTÑQµÀWðhýs§nç~óùíèMáàC>‡ZýðÎÖ>O‘W9[uZo²T·@ƒ&QëT‰wÆ9V¤Ð¢MWêu­Èý/Ù©CÚY1W|#‹Ñ@/ã×ÿÈXìQÈ\äC‚õŸ I^Ê©OK6}ÃMƒÐ&¤¬xäሹ÷n;œã÷ÛbQÖHo»44ÛôÕšÐa¤EèØë‰2äM°$rF)ö"°oŽ33÷„Té`z1¬rhX÷ŽM7‚t!ŸZð^ßý½€=hMun‚|BŠ.0(B|•”œgö}P@8OüŽƒþŽVл™^•á—eÁó2{[†e¶ úJWsíέžwNY=ÊÁŽéy­@=ðK6µiÕ³œ²Õ± †Òù”cäŒýÜ<‡bøYõkð‰‚çQ¯ìD¡® ~ä8Ï9z"0>Úúþ´,ÓqöÌÕ`‹n^·ñü*ƒA’ sÕÎÁÑ›kðìÍ3wÈQ@ $šPÙ+GÙñæzÛn+³¬ŸÙ(É (‰@> aˆaßÉüÊþ!ÛA0ókzšfìüM~|Î×ôüÉßäÙ3llæQˆÑ[¯^›rŸ×eÆhad5òá®üLû• rAø„pGï¹óÌþ H4¸ñ^øt…C*ÀA¸ó³u™>+ÃM9ãm™½Ù&Úò€¸¯ŒGÇ‹ä†Z÷,( §Qµ`¿ÞK°Ù„PùqLOKË}E@çñâÄQ¥ï|ÆqÞ¡Ã«Šˆ2®PYEhì7:¤—óÄÌ™ q‰äàŒOL¼/ëQœÈ Nk N , Ø«ï›r¹ §Ðxz¾íFm”¯Ë°‘·FvgQJÖqóäm!eᙼlj{ÈÛ…ýÍÎ@äçG p£‘ù(&ðqâG¬w,–7ûèbÓœ˜yÑ0:±?#?îç©•®Í^÷cFĶ]Þù~3LæÎèÿì^ç]º·÷ºWÒV¾×ø‡p¦Îücœ¸‡äiÑìï ç]A3£¸æiÐé«‘EàÓÄÝ ÈGâo&ð‡ŒõÜ}î÷ ˆääƒ Ò>÷zD2þáI[s =9È8qIézéŸø;ËIµÑf`%Àøó=ÄI©ð›‰ûqe¤Z H–É{œ¸‡Àµœ`û~Œ)é>÷{L`Ÿ{Ý?<;®'e‚¢æ„ÇåÔæ5©uÖ6‘¶¾>g ^•Ù‹2Üj­´oªý§Ø›æ~L±ùª©eåPþéªëÕê&/fV¾¤›†ŸÂðÖ×ëìʯ» ¿îòð–¦ïalÅðeH_Ké#ǽ:RçÍ‚-±=© ,ЪiHµn˶ÚôdKp×½K忝 Uë^AÏ/&é4!Œßúœ°*DB9Aè º(¸˜þ½Hõï%Z†öî=iA#’>ô¬¡ís”V›ÿÖ>õÓ¥uçð²alA¦°7„MÊ£¯ßåàÕ ê å^öÿT;wOM«èQ»Ï:AŸ بóû›õ~3بM´6¬ßþ¨Ýç@MžÏlÔ£ùCZŸox ®Ìc†æ5pòpìÏ«nþÇ ?XªÜ­¼1ÛIúd.â)ÊÐÌùmùÝѯ€œendstream endobj 576 0 obj 3000 endobj 580 0 obj <> stream xœÝÙr·ñ•Ê7ìãR•ã>ò–«ì¤â8¶øçâòPEeQ’¥|}º f.+.— ˜F£ïn4ö§øŠáãÿ¯îϾúÁ®nÏØêöì§3þ¸ÿwu¿úã,~åo„Q«‹›³ø%_qníÌÊ 90+W÷gÿZÿù|Ãã¥f~}}Î)Ó|ýˆÓÊkÆåú Ç’yïÍú}çøú5­×‚Ùõ»Å®íú޹åZúbÍ@WZJ­Öoãr奸÷ÅßaÎ „aÌ­Xm¤±ºØ¦ð½`Rz»¾ÃïµÕÎ @1Õ^¹J þÍÂñˆ—‚K3ë?…¡7á»<{Ñ\ðMšÅ-þrqöý™ÄV?¾>ãÎùvƒóˆAèÕ=à/8þ}šysö²ËªÝÄ*/! LˆÈªÛŒÜûŒÜe¾Ëû<|™‡šŸ…Y%¸”-fhà7ËHAà?Íhï#?¥´Ê¯?F~H%yd¿qb2²_JÇ­‹<×Ï@ÎÆ}”œ‘•#p”‡ó°ƒÖ~½% è>A*•a–™QâøaÃ*!¢[ gtÛ{2'˜H˜0]¬¦‡¸Ì_6Φ­°ÝOéù¯jå$§¥§¸ ›Aw'KG¢8€2m"…5‘Ãü-nÂ^²ä®f-rF8 ryø±…òþÈ¡Šïxy>"†oòð!/óðSÆþ6ͶS¸Î¹i;b$¨ù!&ª…óFrtî£ÍМ¢\\M×8û‡Ûæ‚…¯žÑÕV)^¢N+Z%4-\ªˆ–圂Éõ*¼IÏßÑùûs0V â'jØîžÁ¨ H€†FºÒË׳aŸ#NLÔbüˆM$Ç¥^¤ ‚>à©_>/„—Þ“üœ­ba{ÃqyeÇÃq-øõüÇ ‚Iýe:®YtŒx\¡ /ö‘@¹?GùÎ"¼QžòŽ7™åÁG‚îÂ|”weøLé!`,™¬±}¢XÖôAi¥®5ÇÂ< C } 4Ð#©8FÝË’û0¯ ° úÝL½œÂ›ÛŒÄu<4}’P°X® {NWPÞN Ý>´øt®Õ ¥PŽªÈ|Ci'´Nz– xO¦0ã&þÝÙe“• ä5ºE^Œûv’7é\ˆ:‰Øwt®*êÌ6ÓQJOPÚc9'@cÜg¬*–\e% ºA)>€—™•˜/ç° ï©yá³GÙ6X; |þ ÂrFB*â1kä¢ßo#÷L!Õ#}jQ¹ãú¯£–––OÓ î=ì ŽAy­Tq~eç[(W‰Øh)vD+°„·‚•YÞHçc°b®|_0–ڨݦd )ɬÚÑ£¢–Ú¾dp¼Œ…µžgÊ®Y™T 1©©åù`äÉB/ëÌÓ¼`d•mP!:ˆ9êŠBƒ ^.û2¤‚ð§ðëÀCýÔ`¯Ià ­—P¤ÜóRFƒþ•Ia™°·n*Ø/N£•‘1&༓wì¤S(ï!4onp|R³ê3q6¬ð{ðs¸7ñ'’È*@ÐÒNw¿lE¦4 ½rÒ3…‚™AèT&½îþÿCe¬’0^\.ÄŸë‡/šÈ… ·»Šyø1#wBäBq¤JÛ®wU!H™b«„Ù\ËïTX fm•)¨1Ø«e|IØ&Î3®¬¨p;³PZ™‚ÃÇä¢ã%Ö7£•ãJ+S§2DÙ•³ SD1~pÂz²#"‹…õ6^$6ŒóS·:]ã P7b!€kÊD«’’‹Azà^U~ gTKE¼Ñ~_Æ""WÇèÝÎT:;*ex`~Џ Îg”zÖó…3áuåb僫²Ü}N}Xå#Æo Q:eU4öªâ°‡®ÊlA¤Z.æ!nûêIÊEäJqZIMâ•R7]ù”8ü Ò;N{ƒ)fê²…[6)àÂ7š À!|¯¸5Â<çBný Î §ÝÄôqÅ-ù2\S­¸„DíbDs\Ñç΀d:— ’A¦ŠYX­5¤X¢„Zˆ‚†ÜP+™ïòžwñKÏ8¥‹)@j a)佯Éþã<$9¢˜ ȼÍàé2MQÇØ£ûFO€> =!ƹ±ß8±ãlP4SÁ†4þ ŠÃ‘ÛH ®ñ¢ݼ²ŽO|à>æ]bsS ^Åá¯ÉòH8Á@ˆ&¬@ÔÆ¸6‚¹ Ú• ã ,Sõ/‘’ñcÆxÜXy% ñ"‡¢B2âlkF\›Œ†<]vôœ@d,”xÞ÷4ôm ê?o¶FäD((ÿh*ÀXI:ï»e¿Ž»[¯jŒÂ´í»·ªë—;_:Ɇ¡ á24Q0…×Ű—ê÷…Ÿj íXi[ó Ö›þ!ˆ ¥KƲ•Æè‚Mz¸hbQ¨+ \ÀÿÝDïfØàlònT2¨“Ý‘¯†øö¡íŸIàFC;ZÇk@ óµÜ®ÚÉ…J2Ü‚¹$×[{TY¢' ±wਔ,/•‰:Ç*–RJ‡8 ¢¦ Fuí¼°ë†Îö¯Èt§…Æd«·+/ëÐak_Æ7ý07Qºg>n"(®3}Æíµé*èOŠqº¬ZV‡è5]!tÇúУ† úíŠ{ßL4qJõïa%h\*–áZ ˜õÏÙ˜êm}y‘5ǯºjíV›‰J«”ô…fhgør¡ÚNk‘‘Œ`•§›±ñT¥Æô áT5®æä®+Œ¯Æ®)ej×€­iŒÏ¤MJì‰XNoáKëû®æ·"DËõ ½GÔ!kMt÷eK¬0ƒrú÷³‹Ì&Øáñcµ3ÍÓt«ìÁ=ãLœ¾åŽ6K­`NìbŸ)#ÍÑgê°° –ìì3 ³ïòô™~[¯­šÚZ|ØHüçUØõ©=¶‰âëTjÓ¤›˜6}Ë ®h>&ýÌÍò-^FbñŒÅúˆÅë|Ì\EAÔYpð'䭇𜹕bŠëØCì0KL3Çôƒzk„‰¹œÜÉÛXl÷÷x ¤Ðƒ$óÇuž¾ÊÇ ˜ð±¢&–y íS®©!\4|SX &„‡ì.¡¦äVN?šØ¯$Bͯ3{P3žìÚ iÁÐn´?ÒFJŠÁâØt •j×5wÈuCܱÁöÜ‘ÎÈø w¦™ã¹0É‹ÜùC“HWå»,¿È cYxï³Ó°$yô_K¬e¥ÂL3O`‰5h|ÂÐ~‹ð>£|Ù<)Q˜Ç œ†;§#³€¤m%B xðÏà Ÿ,~>?Êü?2E³q$¥HJ­–f(yj™ûФYû*Âñ!¶{µ|J¹à ²0:hu ð”:ö„Ò>éÅv”9×nÄ1\Öîé$€áI½£ÊÖýßçá‡æD¯Òìþ¿>‘Z…có<ÆrÝóΞª¥´›Ör3;©ìÍ*4uq–$‡ÙWË~ Æx?¼ØÌÞ©8¾i(\ mHíô‰Ñ¦¼…džzpLw…à6g—Ÿ!S"]éëò½jæÊƒYëN‡UÙ‘|IÏÎ5ü|8pÙii"õ>M.ãOÿ@ÊÞkYð’‰ÈØg«$¾â«šÊ¬>öR"!â3’YxÇK◼ʑhbô[bÿ(â¯G•OÒD[>¢•¦QÇ àØÎ´Ð.å!W…<´I¼ÆÜQ»^‹Õ‹î;Œ¡?ÈóŽÈ¾,çã'¼6Áû .Vg`qoN€Ã@œ4sÄå‰Âf×a`^-_žL(7K? ùíaè~f'ß!&fb˜ÅKavɽÕàFÝÃ|ǤM Bÿoé¹~˜+`-g¾f—SH\ÍùÓÊÂ:¬]ž¨{Š6ØæÎÅèÞÀdDøW9fX;lÀ"ôŸvšýi1£‘târ‘ákU\V ÒØ«¦›¯°‘W_FDÔìIEWæ— á+ëfÙbX…Kd÷íôÑ`¨zÛsÂñ¸ºa(ÜMõP¿3f¹ Oø6¥\åk¦ñ©VÇ¿ß{-¨­ÂŽ"R«ðƒ–ˆBɇËZ®ƒ´Ÿ¶ÐÖĘåŒ[×?Çtüσ·õ¯©Ëi+f¯d‹:Z‡³hzùý,ÁD S¶%r²ü¨8D/cxqO§Áp;G»%¼x9O,—©~а“„ÕÏžjOüU¡¹)(ü§-x¨ý´5> stream xœÝËr·1g–+ß°Ç¥#Âx?|KœÄN*²Ìªâ$’¢\%Š´HÉf¾>ÝÓÀÃ]r%»R>x b@¿»Ñ ÿ¸áLl8þ“ÿ}vuôÅs·¹¼=â›Ë£Düã&ÿëìjó‡S˜ Ä&°`¥Õ›ÓWGé—b#”e†«“Šq§6§WGÿÞþëøD0®…Û×Ç'œg¼—Û üÖ&h¿}{|¢…g^«í ütñóñÑÌ(!`f*å»Ìjç¶? ¥Œ“ŽÎxIÖxC¦¤õ,wÜnOâ¸6F†í-~;g½ôÈÿ’ùô·ç¸ÃÀœ”}™¶gÇÒ1sªãRÐwéè#ßtÎ{'/¤ŒÆŸâN¬ÒôÛ4Ìálô‡ùœZ9¿à+Jü˼qU3Óu:¯ÕÈyð颷1bT °Ï¨÷ù8ÚU–·ïuRc;é/QY*&¤^ÓNñh2t$ÉVâz—‰$§' ø‘xï W–BJ %Õ‘#Ѹ˜IðÀ“œPŒtÆuµL‘£Æ´ŸL›®íÁRÃ6~E¬ °™ªuÐpXó¾MŠ\1*NWè  .üÄçÞD‰R÷ár惠NH¹ Ô¤è ù)nH2]0ä!#`7F±ŽûµáW®Lã¦:îjBH-•[J­gáŒóþ)‘¤¨7;! †ûA ¬¢\`Þ!Ÿ%1Ç5˜I :êLÙž:kÙ3] ®_6ÒܵêL\¡æKÝŸöVsûŠ2PÜ%¹ä§#¿à_µÔ`<@™øÛ½)ëKkOG]tGT`J(àT2}rÕ³U•q® ‡³U¸Ï^žÎ°U9]y2‡¦yiÕØY+‹ˆJH®óiEs•‚Ën"&mÀÕ‡á -0Õ©ï¯{ l&^Ÿ°T|Ô8µCíÉw/NJBµñV7ö¡HÆÜƒHµdï¼:"ÿ8® †ÕŽFíÚàߥ9 ·öm„S³šÜ ÎÂë´8¸™CÉ®3*8Æ×Ãáx56°9a9 i±Ð°).Ô‚C{Ÿ1 \4æÈâˆ*ÜÄâ{0JÎ}ñÜò:{À`V‰ƒ£5ÞJ­zQ3Äú*–Ù#ˆ !èk"mýH!‰M@QoŒBß'©s¹Ô–ªBµ.Åfã•€ÏÅœ0+ò°=?¤ºUhÊÉ õ¨þ`ÜíHËà sз¢†ãâ¬-5SF…×6è ‡²ÓßB0N&q IÊ,’Z€VR­-Æ>ýö«èB+`›ºupE‚AW«^œ§/ãÒ¸€c(·‡ÐÄJ*`M >ãüW5,;âEûPˆ‹Ü‰••¿L5Ø2U³p×nqEp¯¤*ùcãGäU¢¹•¾ˆâŒ«táÕÇN©X¼ÉÅ“¼þ¨) üÄ×ìûôÜJCRÐT–ú!¯šŒWã¼þI´Y¡gz¢óA±´ÐùPµK±o|H¹$Š)W3}¶lÖõ0‰ð&ýÐ×N5a&èÇÉÜÖ»\R ¦7izXGr³¸šÀC†Å® lºæ—@B þŠ­—mq¨¹W°Îë]<ê>L›}ÙÛAÒ¨‡ðZÙЕBL~…¢ùBêÞ6Ž1B¶Nìbû'‚ˆ—Ä z$VÏ;ªý€‘¶onMÁx0)»›l•Ò(B¤Ó¯+ûѽ±z– ¡Måꀠ®5ÿD”Éi²’rèºRÅ4º@NN±JN%l á=‰—¨ãŒ•Ã+frœQ>pÂÉŠ‹_{.ñ&4Aãh·…Â-íiŽ/¦¤ˆª± DŸLé ¥1ã1Ô¤à:8É«¿J1OKÂÕbˆ¸P‹A$ª¤JpÇuš| ÒTáÜ ÕdX­fRl±[|³–D[³‹Ñç©ó´Šfèw­X`ü)éS„©|Cö‚áÖx|Úò ÜaèÞ?|êòHíXà’<%ɼ.®{+DêP wüæH›ELgƒvvHÊÁÅÑ›´=ëzk!'™$Š»¤t–Újì*(`]ÏéjÑDÌ£N‘›&À,ÑÄ¡üh1Þ=ýª®&ká•ç'ñÓïÑÙT ßääbÏLXYqá]šªå0Hgß'ª[è6jÓeDƒRÑžÈHü™]½»Jü¤ª“ûBXú<Ã3ÑõŠw2 j¢b›;¡~Ú ?3’´äSËuorÒc莘3!…Æ ­hM~ˆUCRXJÛ³bwpê uŒbÖ·Y:0 í«TEûâÆW©¿Ðµ”±Ì¿o°HÀ+ÑæÂ3⦠Aâ ­=Hª¢o²o%YPfNÆp×Ú(j‘òº®ã¢…5ƒá]ú©vºªQ±¼Þ¯ÍÆuk“¨Vkf÷*mºŽ«kÖÀeƒ.N&¡Î@âÞ±"*E¸áAÚ@»MÉ9¡ÂÈ9OÁ¹²µ÷L 4îmÚn¹‚ ;ôcjÓØÔ‹œ7ÍvGù0Ò#uñs\Äz£JQ\Ìu5yÂ/žË@s'"à=™Üœ`Á¥ô!‘ëy<Š”x¬‹c ¹É¬-œ0*tYo…‰̱ދ¨”¼ŽÅŽ-ÖKÔ§ø;ïmȎ䮂A–‰ˆÔÁp¡zUze˘ꄟÐb=¯T[¬—FO»¾)£¥XOaß<¬¼¹:‚#[Ê}Ù¿F  IB (@Jôâ†Ú½4z3.Jôâè‹yt.çë–èa‚i¶¹ƒ˜½ãñFv'Ó›¨9F5RlùìÒRΕ†Á{]µ˜¦lâšõlQDÕ‰e‚­A­¸u7#oeßBíúœ´oÄ¥ñøF¶Ì‰êÝs¼^v+Efƒ|%#uÆG ­Í^«Ù¹‰™ ”û Tø)§t4ªwÆÄƒ†Ÿ‚úM‰õŠÁ ?β´Á¾»3¼áj®-¶×ztË2*ú811Èzdµ³@+'¥pÓê ¹x8UßÍ£wݹ/Wu ÌÏEdýÈ½ÊæDŒóý„ÿVEÄ !ýå¶¾M/^Ì7ÚÊ¥scj­ÊŠÆƒš€}(NÃ"Í*á„¡­@Þçºu?g~É\üP§_bYiUpÔ¹ØCˆcdEFxŸ(~ÄgäÌØ…€/Y®:S 2ÐiAõÚ]® ëås…7šõAG±ÖÚ“ßÖF™¯UÅëp_i³¥L÷o˜ãõM¥ÂÂϼ\¨ÆÈºÔÍÿl`Eª€O›k 6麑Ò+ld7¥0yý±Åƒø¡Ùí Ë2ÜÓVˆGÁ‹¶: »ç¼·ÑËߺ{³ ¦Œ<ÂÝÃò¾ü[}¯ÕµD[ÿyVÑ?Ì£?ÏŸóçy£¢2ZÄ @Fçy˜p=»é÷‰yÑ`½%Ã×3IoÈpöäÁveVͤ~ÀÀÔ' Û ¼š® vÞRKtb@ù;©ÉèÆýF,òÈbÊÈ#X"€0&ÓÂ<Èûté<‘%ƒ˜ñˆÝƒeølþ¼ž¡Ìß6D0Ì*{Àž)¥9&T@¡ƒe~ 3 ÂL„¯og餠3?IKÕn¶zu<5P‘^ªäE¥ ïæÑgå3zÖbS×Òᮩ“>ßÎ;Ôá…:Þ´+J<òê€Bö6ç÷]ÔžÍ;ž("E@0½ô`;?; EH1ꯅ"N£§É#O ˆƒ8_d;ö=H/PxÑ=)‘—ÛÝ @^&/ü€hˆê€!0ˆžÍB ˆÃÊÈ#Ð { ¸ 9=ôyïçÏ«ŒP©¡™’»Æn3Ó'ÑP/çÑïkŒ‚G€ÉjÀ(CÈÉ -–kÁùqô®;áõ<újþ\èÏ~v«õŒ®ÆfªÝ8º›Ä€ÐTfð¼9\L2½²ôß4‡KÈ„³î.o»£•)Nv8nøóùÁBrôÌv5Qí™+Q.ŸÏÊÏA„0Î4×"Žp2å¸=G&${#nÒÉ q;ámGCò(¼MýoG§Ÿÿß lGÝþ„!–~ Ûª²¬Ë.–ÞõŽ¢pÏiÒ\0¯JÀWã\»œ·¯KPCDm”ŸîWšHFct^JgWð'ƒÁtÖAÓp þÐ6 Û¾kqŒž8Ô7kQN ÷têýíÕ”æð_hɱõ×ä`ôùAwF)³v:¤®õéjŠ 4H¥·Zt‰is¨ ‘l7µYn¤T`°™l"Ñ¥èVAL©¿þ KCa˜Æ´"Xð‹$^ÿ cZ0èFM#‰iÁ_Iâ ¦9Z5õ©ÒMë é…åeIù59Än1AS!ƒdÒîGÝå2;ÿJè€vÕ´ƒ?í cÅT}a†zõî.žYéQU2½µ"€gä¢jbÂÓÊ:X(!Z¿‡ú3Šÿ=êÿrúVsìTõ¤®“à°®ˆeA ‰Œ¯óà=¡[Ô¤EBýÎn{ð»W;[KUî>Α¸Ö~JcÀoŠD-2çØ—·8’A»úš žº©ñé§ÑëÊoJÁ´Ì¨Åû“¾ó…;±¶0ŠWTPêgp¦ÚÃUNvwöNº½Àm9¬¬Ño_ !YéÖí¥aI[Ž!?›LÐâ2/¢Té~ħ›ð>È?T¹L jbyÐ%>ÿ…·­~••°Ÿq8©!èÁ×€܃vŸ K93ŠñOS)¥y‹æ:cDú=TJÀ ®r»›ÿH•âæÕª*·º8Ñ…|~NlE½òê4©ÏhJ•,ƒ÷¨r ˆÆ^¾Œ¶®"VZ®„бƒ—ÑT8µžÆŠÐ©ò+š¸g©m ¼É•öU-¨n±Ó-lD¶‡oÕ#@ˆ†4îè‚?î£n°|Ó…¤Y2½ˆù’™^ ,ød%Èô¼t йÜÇ£rÕ#Éä˜ÆcC\´Cý=Í6»i¹OÀ"“-Ò?3W *ü_ä¢G©¨;6¨ûï—Cìø¨S¼c±Wu娺ñËci|6¡íÕPb¯N%chïDS1‹L|³Q\Á†Q@n¸6¦µµe¨šG jG¥Ì¦=:ƒò¥ÝK&^¤RË^´¨Äqê)“²ÄÀ+œŠ'DgŒ ¦È)›j†“iÁÔûæðjLïØ ,=”õëÌ· Võœøù-¶ŒºCÅ|„W^¥æˆù0VŸo®`D!rÊÈþ)6€áY„À8ëWƒ4Ù»ÈQ‚@ºúù“Ú£ÒzȯƒøºyÉ#Uh«M@=}‘9†÷ μ$–ŨÇ]«Ö¥ÀÑõ”2.Ò<-æ<&¸£%çÔæwÛ‚Rጉì^НÆbŸœóãâ8Yc-ïHIÖ§ ¹q=1×Ó&òEÀÖîh p6ôˆÒøSßFiØUj…êêÔ-¹ET KE¤ê&o‡k„õ¬jüC #>|RQû]cÜŠµUì\÷Šñ©ìEÞ••“XÚØ¶:OOvƒˆAÅiG>Œ9òâuÌ1l;¶*¼¢†â…H˜º€•6ëwʱcÝõZ¼€X »¹KÈm‹ÞÁ¡»„oŸ×7†AÏÏ€ÓïÓê€ã_G¤`ðý—ek%0»O=xøL¥ HK\œ¯s ÉõÁGy{ÂQ¶±+Ñó¹3׊êµÚwiaU77Ï ¤nÑú 5ë§M®4`•¿iº ªK®ôlR÷éÎ(%£7ÁáF°%|KŽ26Ï®5Y),0WõžZ?}Ÿ‹·²)–””—ºíßÁ|³¾ƒÞæøÝíö^ô1¼IÓ_xï8*Ýš#¹gÞ‡O•wÂ(˾Eâs ÈþÏÒ¡¥·)dÁÊ$;Y̺EŸö—Q—hâ Uõö“޵´wg+o^¿ÉÒ$ýœí9°«î¿ºÖÑ—‹1QË–Rѯ#™Q^i”{Ú3Œ¯ÝòøøŽzòÞ«mŒ>6Å<¥›—A .ޱβé ÏXÝc^aõ Åo1ewÉ£5P}*>ð »Ãÿƒíodô0aF˜?–ß zÐJ¶èßÄÇïÕ–Ï/$ Õ®ö™g‹c×Ò]H×ùÙq`*>ùÙqUNá×^/=âÿ0CcòKK*q{|þœÿO,%ØýöèzoHÉendstream endobj 586 0 obj 5497 endobj 590 0 obj <> stream xœí\Is·Ι•ÊoxÇG—8Á¾ä˜=©8‹Å›%jqE¢QŠ­üú| ÌÒÀóÒ•¥R>ñ€F£÷eþ¾ƒÜ úoü÷ùÛ‹Ÿ~åw¯î/ÄîÕÅß/dúãnüçùÛÝϯ±@Ê]¢SÎì®_^ä_ÊÔn°Bï¼Òƒðzwýöâëý»K1­½‰û——WÚÙAK¹ÿxy…i+¢Ðû›eŇË+9gcÜ¿J³&z»‘;á…£jç­ôþ—Êc‰÷Å‚q ƒéñ%UÜKc­q¤Ú?gËùOïio3öoqºA),¤û»t¦TûO4i½Åšü;;x#i¨'ýô3ë•ÇÏ–Õ·lÌ×p¨J8¦VÀºÁéP,yÍv/w! VôV¿—`ó!¶0KÓêûŒA'M§f +»vy¥Â`ƒ Å||wù×ëß_(m4(ìúôô>ï´ÖDÚšâwW «F Ç£A‘ƒ÷ ˜PŒÇGÐÊ»‘êÒò;vßýv¼£1ÞÍ¿$ ¯&¨¯¤¬q2¿…{=gºOÆ©#?‰4¦ÂPúètÂKýðv–­ \ Æ52ì®ÿpqýÅ×û?Ñ_ƒpJ[:€¢¥Ò|¯Š%ç}9[°åœþŸ`ÃhÊ«ä *k{4÷™QCŸ}ß0t½ÉP{«*D[g·^‚–à<.B9žÇ1ÞYVRb™•!"v#â›K°„Qïóˆuч´änZ¢+Ãnžå–®.~³¢µøåP¾ž±‘4†ã Aù0&–ýQ&'ðšÉ«KõáoB˜\æ²ßáÌW0é›rœz–8‰an,Vß.K2—~t™K­=‚K=nbGt⥠‚KÏ'ÔÇ$ÜVª‰~oõJ)F°ðÁcM8Zm¦ÙZmÒxÑ wì«_ºäçÒ:úþRÉáp YC+Òn6sñY3Þa¨Ô$ zT v¥W‰A–¬±P{C7·z¼/ßû]ÖUÞÁû‰”?­t• ÎL—±€0k]ì6›3®)醇ÞÅË‚K˜ŠË´>ÂVÒúqRŽÐæ´¯¥Á¼ê¢œ¡ö×m" ¹ ó0ˆÉ†";£Á<ºg°÷íYV$j5.Y¾ïË|²óúAì<.Ð3YV†ïÀUϧòÖœ  ñÁ/Àˆ( G Q*$¬65QÔΔBŸø›<édNãòVµ$¬Œƒ ^N›<ë˜f31÷žùg—WÎ@VUÂêtT:œN£xNÚ•(öP\Au¬ÄÌJàQce¥-Ý[Ö™‹Ñ ÊI¢D²KaW¾šÑêÛ¼ØàŽ‚†vP6¬¤-VH»mÈG?s>§ÑÞÕlD³B>Œ²óÿ$-Ôs“jˆPgãéÎ`Òà"¹@ æ´|˜Z2B^wì½û,ü£ÆÂ™U¹‹Á]KÜÑÝ à„—‡¨ž«µE¸g—Â}mß%rèú†¦õµ»häeOñò-¸®à‚ðsž¤o7Dv:È(n=pÜVT® ŒsSêÞ=ö{›doÙêû <ùâœOlI6d”ñ(9ÈÂkŸwû/éWQœÔþÏ4VFH¸9¿K—´Âhr‰hu+Ý–v¶§[VÀÄLñ4L Bˆ¤Åqƒ›E+-£hH/8(¾tZš.óßÒØ«gd˜Ò•–%#´åÿh®gx2•ŸÁ:N¬ÂM–К¢àqîÿô+¹Ò¼‚֌҃§ $,°ŸOû*Ý@©( c´vdZé!—G'ØGLõ!âÈ&¡ç pò“7O.¡WD3ô»\Ô™y|ÄY¾Øƒ“ðg¢…Î0ëZÑgg‡ž@~JFŽÆV¿HÃr†“?Ï^7üvž¥£~u}ñ— 8v÷Ý…ØýæBâiq…6îÞ^àö¿ažysñ´@Ôí¢—ƒ³iO’H9€øjîÃÜÍ2û~¾^|¹ÌÞ,³ï—á¯ih”Ô$eçÙï—á‹ex;›, V2NlÒñD¸”â’„-ç’ñ>G#ì ‘#NV–âa §Š~Åô/œ‘v”¡Ù=^$ËÙqë€]~ T:ðuÞºòï˰^޾ªÙ  ¥ƒô‚™‹w­^«BqOËDJLH 2]ë€ÁZŠ‚‚ç #ÎÕÅa\`qS¤ `qE ‹pplG¨c¾{Ï}䪊ÈJ]ã†"5p$=œA™‡µ_È!ï9½ÁCEEÃÕ …½‚ëSQå9ZB‰¬R sJ‚k½@{Ï^K8!¹´IÛÜ­¨Å¬„!F»D°+)–†qôq™ÍC¯€ù›eÁ³y¶%ŽHÕi nÖªµuL„f*qÁL”0*䈳*÷‰cæ]ú©…Uû]ò:¢?2ê‹×À£eÀsÚ«ÈüäÀyÇ)[Ë!QËu°Ü©ÎG’„—ÿ [ò9Ãî…­U',¿X81ß»§Nzì7Ávþñ¶œaÛÛ@ÏQI…„da‹ÐWb3n},MýHMdv?aZõƒÔ9ß#É4šÈ·wÏvDû>߸oR¾È€) k•ŋǫ„ÒËêe‰j1A_š¨\±süðW鈥»9ñÃïyÈvUfÀ2 Û&Yœ83\ί10[³3­çé–P#,ËÅÛ}<”è èvV E& KP'9ÏœaXøòyІ}aùç¾øf2; êæÓÀV‘.âid€VGü-öþçL®Á˜L8ãô»å™Þ³éÑ%ŽD:>ßWAÙ‡54(b†âÛåÆwüBWðtaa™Ç|æháM„4>tHò"< ç™3ž9BØ´'„ž;øÌY›2}|Ú3+0À®ßì—éçËðÝrÃæýz ØÄO—Ù±y‡ëæ‚ߎIB¬–‘nÏ«•Ju>b±%õKÄþ¦‰–bgd}êV‚äÛø4;¼lzn›?{R°Ý•ƒ¬VéŽúuòðn9±ñ:ây§ c qæ¯CiÓ óëüqãÓ2L‘ ?œd…2ê}v:î'%øŸƒ{9¡ Îg€{°þ–qÿ”_¤…Û›æMgÜŸ°Ãƒ8c¶ÚÍ*1@ŒÃA‚–UÄI@ß4s:–±Ã ò¤3¶ <¡SiB§5@§Rg¸\õZF÷ß\–ø”& >•úx ºM±ÒYë¬è>Í~l.x½Ì¾\†+9ÙkÕ–Ê·²ˆt¡Ân+€óâOMd¼Y†/š'³ãØve|»oÎj'‡±ø‹âq®¤Œrç$õrÛÄ£…'¡S€ÒLù–™‡ÐwÕ&+ ¼j"îCëR­¼0¥ t+-œÇÂÂ5'f€{au˜¼„’»\„¹5Wé<¾B˜Ç‹Hx+•.®ÉŒñ2sœ@flAÞád2›®—É ®êdvЬ>‘Ìfý™ëòþËè >¼•9.¾J-E˜WNW4µ']¨hð10zå-´Œ|³åy³Å­Kô×É'OÕ€]aü˜|úeB~ÔVÄNV(‡´ˆ1:ž|âž!÷yÞŠ¯aÎæèƒÂÅì—äœ“Žƒ°bÌ9õË€Æèx“`d~šÇ)D¼S;-E´JΦVƒÐóÌ9Î&¥ÜÓðà‡j‰õBùV0ýg´±8& ®UѺfx³*ü4FQÄöÔˆå1I‡û¼»Õ¶J4Ь–¦•¡óOÍÊ’1 g­ŠÝ¤‡±]pDÙýí¢/*Ñ·ò×9ÃÍㇽ …äÁIª˜öÀu,Ë`çr–~zM»WDíÒÕu"Ì|\Ñ_m¬®T?£ö‰çj…dPn éžVªÎƒ°O.S E}Ëì#¶¼*)»’; [Um6ùƒ‘D•Ú£Mð‡“S˜Ÿ¾NIͰ²MÊ*“vÀ¿Qf?·Ó-mœŠ6©¶‹]²¬.Iäõ­Üxƺ-¡Ïþl.0cÅ>mÉnÈjŸ(àHË<å½Þ/C¦—?̳M‚s0Qô,ÙÀƒŒ¶HôöÂûœ÷^(uÍ2e^"Oéå±KÐQ­)†½“‰‹£I·÷Rµ¥ L5ħt¬do>SSÝF]Îå%ÕóCés槉xŠÝñó„ÿX¤¶[“öXÛ}(üÛ©”d¢¦²0Å]a eæ¡„6ý€ Q”ê1USÅ·Ù_qJU™öˆ²Ûdºt °>`lYQGL%‰C™©vÊà%qðÀÀÍ4qF'µèô/õ¡m&q¶Âì¸ôØ5ì>Óï•넘€™GÕFTž=¦°vɈ^ºí¿Óubgæ‘=1 j½ÖÖqðÛÞ2ÈÖÊ’OYxâ¸ÎFÒ°TØÎê¥Ú<”Â¥ö°ˆ¨œGPDé«úöº]])Àð˜íê†ú·u%¥hW'@Œî>OݰŽåJÅJv¦Ù6ðy ÷ˆ ë´¡9¹a=]×6ä¢S…²áfæ}þs›Ô8Þðì~6ú}œ¿Hî娳…«(Ó²+?ƒÐêŸgt˜€Q;×:,8† òÑe ñ¤š°Zóïóç@Lßµ´ü„"›­h7»ù*éC,:öâÃÿ¶ælÃ%×yq¾„5õÀ¡î O½ ¦.°îqkj¼–}‹kH5Ð˪}ê@WÆM]qz19¿¾ ä+Fªú(؃öñ?ÑþÜsNДöTº¥šŽãŠ[_R: B«©7»ôáìÍVôñ"/ëçÚê͆£hehäHOiÍöƒZrðéÌÖÔ+Ö›ùÃ"xfãü†D•¨Ö/äK 3—±Ó¾ ûV›`•"{;RŽ#<®î¾æä½î¾ƒknωÜ-Ãgýwù‘úšB˜ã¾±ÏÆãòuú»ìx¶#²,¨™)vu|Ÿ3smD´-"Jòä9{?:'P‚ºè½ØjfN-¢«o_VfŸžÓ{ql73ݱÝÌdÇU§R‹ÖÍLoåË |¿›‹…·û:†L[¸ª9w {83%æ†.ãcJ×i ²Y¿ c7 £ˆ}á§×\_46Oºjì>Ê—ÑãFˆ%óyîyöáÈv=jQЕíl öÜêìA>nér)ÓKÛByÌçN&{œ¤úC󣆌]ÌTÌ78ú˜§™ó»˜±%˜¡Ù¤s=¢2Ä`ÌÂC—·À³“Õd RȺ1™fÃæ—•:=“lúÝš °Åî7 (Ó#c¿„ e·>%±,oPÉyì}»ð%»ß“k.þ´Ï#M«ª'¹¬\Öé:â[-ç@¿qí¨V…Ž5I7#ÀN^¥vc ÉF?Ðn¼2Eèk.–­]µÓÞÛ_ KgVnÄ:,®·>ÐEñd/¸¾Ñ{ ¡7lG¦ÕMùI”lΪñ=T_Ù”7TêÃy)œô®ÙzœÃiÀ¡q›S1žpì/v¥c7†éä:"$Ò7j« L›5¿L5~1ŠŒˆÚ£Ýj>NT?÷·×VõÓ·m²©1}ÎvÕñëR¸ùªûØ6e¬DÍIÝÇ_ýo(´Š-Ç•^›[Ž7|ÛÜP Ñ6+œcÞ:pNåÊ‚ßéÕJN&Òåæ5/çXË›MÕ©äTµ¯äîÊBÝEW>#³=ý<œm«¿\ü Ÿ”éZendstream endobj 591 0 obj 4641 endobj 595 0 obj <> stream xœÕ\Is\·ΙåÊo˜#éÒÀhìÈ1›“TÇoq¤(Rªˆ¤,Ò²•_Ÿnà- <àqfHÉré W ht½bùa#l$ýþq}ôÕw~suw$7WG?AúãføïÅõæ÷§ØAÅMÑ)g6§—Gù—°á6^i!½Þœ^ýû8œHa¬ÖÖ‹“­>Z%}¯ÙLÍÿ9ýN£O£­ NuzC?ÇΠƒ±þøé3º Ž¿™[O›þ2µÒ:=úöÈi7?á‚¿>œC‹PÂÛÍõðÂÚ©åÍÑó.[Jz'¶ÀÚ’1W3qïfâÎæÖ·ó竹ÿê¾é“pOŸFÖÇž[_ÏŸ?ÏŸ/çÏ‹é3s¾ðÖY.Âf AÄ ã( Æ'[ÒcŽoXóí,è·¬ù޾MÔ>¤mÀÐn%è”°ÕN(u¦âǫ̃·­UFxež(-b%lœ ø7GèˆÁ"ÁSËèˆáEczàatdÙ¾[? :™N ¿?ž[_ÌŸ·ó¸Lw•8¬pÚ âH­µ8ò§Í)šÄ¡% 0qh·~Rò¼!?1$Rƒÿ½›}Õ÷©õ¾ÙáÕÜz9.ìdje+i‡E+«Î‹bкÜÉñåŸ%Çç…_x¾‹j¹3“Íùüù¦éQß6©d^4©¼k¶Þ7{j'øËùe:èž]óJy¸Ëæš žú–º‡SM¥zŒè›æ ŒWMƽk-*ÇŠè˜FAOÉBšMJãIL‡Jt™‘tH"y:(ߊ7]ÄØ.Œcì2¶ºófßÊRQê¤uÅ­fÌpUÝf €ï ³qyf;¡lÅÂ/|ÄÞ("ž¿~ù«ƒæ'˜ÅqVªhƒ0ûÙ¹ûfßó+ÉYº÷§WØ­·ù`5˹'W]²¿ÊHÁ ¹Ñ!¹³ ?d¤LÌÚʘ¦ÐZI <­DÄã·–1FG´á· Š,”gª÷ô ¬ŽE–Øù.¦³©PºvüOY+^ 2¥c(©u$?F(ñ6$¾¥6šÐ NOÙ÷“W@ D%BØX‰DBH‰-¢y>¶’Øbl¤Ó˜Âc.ö`Ù£¶X¿@Ù£”œw"5)ù»\â°1fékíMÌún½6) JÒ“Qê ­ø2ôA kgQ™m†¢qÒcDÌF¼ÆO‰`PRe(¿ü‘á„Ïô’ s—G§²ÇÙ<â µbÊe è|Á¿š{ó.Û´ c­ŠY‹<¦*}8lRÆ®Üêúd_Œ†q´ Ç€£ª8Fú–Á_J5rY+ïZÜOí·ó(7lðgs—ì‚©¾·H†¬WT^J± 1ÅT³äZ*‹Ú¯|€2†¨ƒZê²`yC0µµ·†¬ [œ§›!Ó _ 0rGY4­SÍKl5hì°ÿaeÁ¨‹·åxa”pm AÐî¯90ˆJ­~¯òäÁºbrN+„ÂgçݹÒ1 Žº„ ¶Xd7Q¯á_aDá}…¬ÌJ4šS*´A2hºD/¨ oW“ï¤Ô{Ôšxsëèiº501.©Ú £}(4“«ãÕ¤¥Iµtˆä˜µÑ¸AW@g¤€2XâÅxßÀKúÝ«ü»…0¦¥Y4}¢oh•S=ân ×~;ŽqÃ.Ä)B2ˆ7~ˆ×–Wà¥ï ¬å ü™¡œ*L¡àu êÄF÷5Õ¬¢Q¶OBÁ:¼íÿ¬KFˆEèóB˜sºËœ3ÑŒàIæÜø‚µßtú\d֘ʯ±îI5”7H`¨ê½ÏQd´gظ0™Œo(Ùð¤¬y“.· ÖY·›Uj6ÑÛ”±Ð -­o¹Ì ñ¥ÛÑ=Po‰öh—”‡'ìÃOCäf_n©ßŸàß­’Ý<¬‚Tbª©²tš#V®¡.ÄÐïèQÌ\"kÇZ»åÐ!À[ß創w¬ýeîàbµÐú™Èù#B|N‰RÓ\ÞxKA+*V¦IK†•£?êçRcþ:%o9ìBQ¢\ÝÛ .¦¬±>n3p"Jd#0ÌdÞí&³Äê!¿JËé[wu¸ò0Ô]ËEìN­àw‰{Ú9d!ÄOX°Št6ýŽ%ø?Ë‹VÁå„…NP¹ÑcNeôù7LkxH4bC{®6—e4óÕwÞ±¼F¼©©°ýê$ÂÕ4÷£É;†©ÕމNÑûÚöå,Â^åiÏL\`²cú`)GÑ2R´¾ªa›’â=BcÞåç< I/í.@)Øm†C¤­Ëós¦¬Ëˆ,ÏGà*b¹]ªhÕ(Ä>œ*ÁNzÌ \›®¸?.fb×ÓÞ'û £Aêðï@QК'&Ö¡á‘S- @7”«Š™ÒÏôj±‹ä 0&º®>)t©§UÝ’ûp5h;ÒUfí•sÍXiˆÛÖájÞ»(9‡c8¡1/ü(Á”Ã|½ Gcé(Rj«êH:ðˆ¨ÿø‰ü§Psd„Ó}×X©9p‘M8L¨¥.:àSßµÀxH8»åCåÐÁØ]·°‰?Qn±Hʸ™k˜¼HöÒ"¶TŽo&ðÚǹÏp½œ²ßÚ5ïéWw¹È}] N¸XßEäåiåµÀØèK‰:NiÌY$´oª Ú[í›Ò€v¥¨õ2Ï®b9ϲ®×2âw'éB¦6½ªz/KüAÂåÁ;­tÅVúƒ(8p§U+8ð´n´WUè9ì½}ÈLTÞW•µñ U{ëj¨ãÂ"wÈb°Å©­2çËÎãm=Þ:kP¨ô69¦Ç¦½Z+¿nãn€cÚ@ªø¦w±*LQdݾ7Š{;š=¬/hA§ƒöó€#lÜHÐ0´áËKÕA â®eÏ•ó."+3û`Qº4ác6X݉M#KßÁûËñ(L»â¢Xrs•z÷E‹shü"YçLZ;«n ,BMèé"ÀP“‚)7Ô§÷{ÀÑNÍŸôÇñÕF é‘«ùÕÆ±åðWépö“½ÚøÍÜú~þœŸwyø}Fz"ñ3xŸ1Ä_ì}F È-ö>ãØrøûŒt9ćŸ±xª÷{8È~A.£z‹9Ëò-FödË'zqN[ ¦#c=~-àœÇè¡–’óxŠb:¢²Ï£W‡=8W¿ãôù4º`ÂN@h=Ĉ^ ExÀ Z¿þ—GÖKI,`¬g½¤×€Ü£ßaÔbŸKõz‡æ“¿Ã(µÈŠ€éæÄdéèá•©å.Ó# i*–ª=^bÄ󤲱Ý_b¬3³­¢ä3JTœ7ŠŸMá$«9Î÷ú'~{ô‚œ:endstream endobj 596 0 obj 4582 endobj 600 0 obj <> stream xœí\K“· ÎyãÊo˜ãÈ¥i|ó˜8);©$’¥­Ê!ÎAo¹¢]ÉZIŽòëÝMMöÎÌÎÚR’ÒAÅ!A Ø?nÄAÆ¿Ÿ\œ}õÀm^\‰Í‹³Ï þçfüëÉÅæwç8@Á& ÁJ«7çÏÏÒ/aZÚû“zFnÎ/Îþ¾½ºƒS+¯Û>‰Í`½Ü¾Î½ïš^æÞç¹ù"x›{åÞ7¹÷eÝ›ª´¥Fe±ù!7_ÝÙé­ôöûmî~Zý.Íö>÷>æSÌÍgMÒ=lãɹyÕìe4\Áv0R™›ßß¹³)Ä Í’¯™WiºçÍ=3f2Þ›ÿ8ÿ P¼²\k0ÆÀæü)J#ú²šdÁMƽmmŠüêñ\:5àú4.WB;:¦¬0Ò‡íµQ^º4G)á6 :øiŽCĉíîq“ø’[;”¹¥]Z°³Ô|Ÿ2?(#B\B))  b·FI<¶•!X¢ ÛÖ{@Ú°é‚‘Â!—io!º)lƒ£B1†”A<>MÊ@ÃuP#©PºIlƒ“› #¥çø{)” ä±HJœñ‘/D© Ú7cg{ô0;½¯3ãîåÞóæ€oç^Zâçgßi$lóºþoÎÀ{78³ÁÍdÍæéÇ€{^=< @ÄðDt/2qµïYØ.æÓï÷5`!›÷:>½¬ò´¬¼•0ñ%aMéÄ•r:$7NiI@4 œPI@”òà|’Šq žª5-“øi+œ°|Æ l )d¿ñ—ï™l𕞱i®ÒìJCdÉ8ã%õJdבžº²!¢Š Ø&_¥'Ÿì #Û8ñˆ‰ø$Ox¤ë«Æôvò/¶ó]¤D+áBÒ_ç´B¾ŽãuŸ¨‰›`+±ÞÞ¢OÓ$^)•\±„A¢”†s€1f\J;7Í/q±I"û_g5O~÷ÎN{ƒÄ¹bôeä)è’yyŽ&|qx#o¿´T]"òòr5Ç¬ä¢Æ÷10NìÔ€³r=Ç^#‡€x‚ÿ°²h‘‡à ˜¯£·Œ®“ÏÒ:€^ãÅâ˜iðR+ât/éwhG.ç´²I8!|u>œ«>“è‰@­fMô“ D9¥FIg'©±«ÒOt‡•`E^ d÷ã8ŠÞöc¦º%n;=ëˆùѰ'9X3ôu ÷¦²ãüg“ǪÅNY„[j»»- Nš‚ƒÜ„”zÇ8f"? nZ­ÉX"–ú`Xv­ ^1Žq4°‡¨÷I½þ×ÓÜ5¸û#—ìà%lÊ ¦·ÌË4Z äžÄ M“í¡d3gz}‘•æã-‰š€šÏ,Ø)ô+’¬BÃpÓ|ÑçÈ€›1ºò9£æ¡!5ámihÄ…z†,÷R\$àL9‰. ØiyÃ@×h[m¬Nú¾mÚ«ÅÆbïãumïæ-EÃÔQE ´f$÷ÚÂ#½dú¹ÄŸ‘ÜÅ‘Hhd“±Ò2MBá0iA %²h|!_¼Mº‡›SZ^ÂÉyô‡,m½H¥©â†ùn&ž(Ã9ÉG¼*¬î÷f¬÷…‘f¿¼&p‹L&«1hPUÌ@l ’‰Œ ZH0Z–—<¤_îŒÏì×oXÄÎ ÿa4`³4ñ€5Yi‹¨p´c0¥+ì\‰vÔJ]Éë6‹#î@#eå‡iŽeÆ¡ðIæèÙ‡ôŠŒ•fµ«“QÉöœ7|[œ˜Œ’Zç7]Рüæ{1gî9<…3 °‹3 3)õ×L»º¹˜In&óP!«ÓJ€¾„›‘ËØ;¬ÁSê]sk­4˳QbDËÛð"‰–ð}WÁ3ÏJEªU Õ¨×Áz„…ÿ‚RS àZ˜4Þꉨgqcž2Áä·óBoØtÜn3\7æ…(€s•{»G£¼°­Y[ÊQÇ!EÃÅQ#¾§áU.H?g+;­ÂÚÆYé° !mê¾ c~·HˆÌíʆÓhãZæÈÊÂÆsÌ•~B¯¢4b™Ì‘ò».ˆfªçߦ P¡kw@¯fˆoΩ}Bì‰ÆÅÑ Èys±ý*’=’'´MctÌÄCð‹0ºÈ&G*}#›\ úÒÕGaÙÕ€Žô”0š+àˆ|­·½Ì%?åµäê‘ s–¸ÒNB5ÃŘÁ)Le‡®R·“]×ÖHb[èC Ô-ˆ+ÛÔ+ :¦IÌRPÉ zÙ•ê'1XpXþ†í«oÄ¥tÐÇkKoÎÁvâ³%Í!iA+ç;7"‰oÂVŒŽÁÀ$ÞýÌÇÂaãÜ¡þNŽùý±ù67ßåæen>ΰ#MË9[G4fvç¿J¶¥]·|¿CÓˆ~ Yßîf9‚9‡ìò˜[Fþ“ÚPLZå(ù]÷°DËQk¯u@#õ6­¢å­xz h¬Hh m…ïéÆ(™ ëo!4±L홂Œ·’{YuE.ÐÞX—ša­Â‰¤$h—Q'¬Þ@{q¾xK r¼®Éß")(°¡ðqüD—üíäÀÅíŸâêB XµÑŽ@Ÿ$´/beÉÜsÚÕšfph‘øuóJ©Sûºù/Í4É›ÕÓÒ%$—uô~Ó™4E´-·^)¡(×̮ЮÓÿñ Çô§`ø÷û-Þ#.By–뙜gT½ä‡`ÈS4 OlTfÇÈ0ÞeðüfìÕ 5‡,™Ö†2ðhß^÷²® ô&%RåV’ {\<¯@6íÐÈJ]«^jº bn‡ìtÌ~îne-² +ê o#Ëà‘W(ô–n?c–Á]Ï=G؃J›fdøÙôà¸:—ˆ½[u.=ÌÝ+ljxšÚúÁ‰Z²4•O AcSI}hõ˫ŒKykuä#‰- xÎ…*r5ârØPµEÏ0¼KZ¡YRS™žŒTZZÕ8 ÉAÇvìk¯Üdyw6£4íY_D&í†pÂÒ$Z(ìsÏ»r×Oª®1^Öþ¬ÜÅ·kf¸©åË ¾òÆ!„è]^Tq'‘ª«c˜ØmT™¨j)zÙUIé§´{1øù:7¿-|e*õÃa`¦Éei…fOKM—HsÏáfgˆxrEq_¬±Žv/só~ÞÐuá^ò{ÞBº*Îb0ta{7@“…•5¬³w?¦3£[øBúù¹w~J1’ˆ¥© «“”x5œS9³È=PÞ¯{UEôÝÉmÿ‡*·¾LsËu§Õ{7ÄõöK7pT…t¯Ô¨ÊßMU¼t?±G F;Ÿ‹zíXiq7½sšR½/ Ž*hK'á«kÔb€‹å%ÓTÜmLÀp—®H’VÍ4¯K„Ï‘„P=ƒm”Ä9(¯#ˆˆSyæÒ ÄËãË'„jÙÉ}_ôìQÕ¡š¿e¾!^ ø™2as=Ñ¢¡(²î‘^…@E1 ÕÎ SdÍ+ø›®ÏÊxëæ„U×¢¥PPYÓÝÜåœVª.Ê­nÝSa¿%ád%yÓ…$÷Ä,©ÿ.mÖ‰ÒÊóì!Kê³¢äbÈçòˆÿ”ö"ª‚¨!OÒD¦Òc`b<"S_nô. '6 IvºíÜݼð£ ]Q%ÞO‚ RÐ¥• „D±CuŸ{ŽÀÈg𔹿 „|›ìòE5C¹o¢E°ò½DÑ•8™qýÇ\`ɺÙÛbþy„þŠjƒøSäkBô¶AÐóc;H×7_¼ëÞ‰Rˆë”7¼ô.Îo¤G§„O/Šéc˜{ŽyQŒVÞÄ9É)_{âk7-‡82ˆ\/^ë×_8™¾Å1÷^U<¦)ì)/u¥&—Ìx¬¨þQ«ð˜ŠXèõhÁãošaUÇIš„Þ~9} BôÍ‘ÅsÀ%¥OÌi&K…®¾aY|&¿pM³4NGÜÊé8Pƒ ütÆžœ†Ï`l:ß6yû$“< ¤#qTŠ×»`,~v³#±®‚tŸÎ‘ºB(fì¹Á‘ÔÂz‘ùhhéKTfG©£ëƒ‚×Mæ×AÁçpCÕ8úÃ44â®Ð±´íoÂ|hnõUo«óÓ7a>Q#µ±ç¢†(V‡#DíC“ÿŒ§§µøužOKå%e,Ù9Œ=78)èÓé6Y×–íwMyÈ“NcOXXP&1†—A^w,†sÇu5£§TØ_Ø ½$’'ûjR;~˜hæ'Ð''“¯Sîmãnùó”ÿ·qŸÁç)þßðó”Õ9H§6;­èë@ü½X¼”¹ææŒ ¿;ûá µ‰endstream endobj 601 0 obj 4279 endobj 605 0 obj <> stream xœÍÉr·5g–+ß0Ç‘Kì`_rËâØI%ql±*+‰¤(W¸È"%[ùú¼÷€î~@Í™!©rñÀ.L7ððö øi#¹ø—ÿŸ^ýî{¿¹¸=›‹£ŸŽ$ý¸ÉÿN¯6<TÜÄ!:åÌæäÍQúRn¤tƒ nã•„×›“«£¶~v,µq{þL Z+aåö‡M´Bêí)>kctÛ÷ôìBÛñÑG«„ß¾£Y‚“ÖoïðYziu,Þ¹ÙÕÚšíuzÝD­þsò7XÊ`x–^mŽuµ99HOà{%´Ž~û¿·Þ† h„ÔFÒTº˜J‰! 9^ÀR`þ‰£ƒ)¾GOš/|3â_}wd²ÍÏ@…¯dˆz~Rƒ²›+Ø€²ƒ ÓÈåÑ‹.­Jx'ZE5XMsB©D«‹¸÷3p¯æÇwóãÛùñûùñ|~¼ªf0JjÍfhÆ:ÆŽÈ^ƒp6ÆD[­½‰Û‰6Úh™XÁk XAë }HôÏïýà»Á˜ÌhÆ /Ÿ!@j%Tb´üåÆ|¥s6Í-În×4ì5|à8äüe¾Ð«y}¾æ;¶fÞ‘õÊ;¢ñ‹¼#¯ù.Þ¤Q]¡¥beúк$Þ ØJ“H'ä ¤J›6#â,lcƧ$~Éæ£ð½šGß±éÞλDÒK©`ö¸9†ÿÖŸhÎáÊÛP0Õ8¿ñ¾ §(ß5§$†fP. h*€ºò‡%Æ•ŒŒºKû3œ äЗ¿‰Û×4‡Ñaû)$b-5"…¬Ò#ç_̲S b£7M™¼k}Ö’3ÚQ[5.Ç0vm‚_nÉ¢Ò]ã-Ú50…±9£ÃÅcQ r… íÕà](ÙŽt'y]y)xEñ/íÏ’f²±Ð¢ &WèžÝèߌs\ç%œìph¡oŒrIJ»sqâ&¤wˆ¥Þ!9¿»ÞQÒ³÷òîYË迟ÕÎMÍ9àêI®—^O£û0Q(ìçœRÌæw.ò^½oñËh÷G›EöF…0(é’Ü—åfÝ$íh’Ò’u ÆêјiÈOinaücqN+EºœJa÷0Z r9oû†(1GÛ‘ÜÇh»;­—Û¶™¹MûSwZ{ñAY»ý‚_wÞ9Kè¡&9‘hø¢óaÏÐôÔ Ñ$9̶e`L¯ÛÃj~ùŒ­"e¬¤(Ü0.9gósrì/teN³ž/7Düܰœø:G(:ÇÚ R®ku­!„ó{ˆ"ÉwÏß¿H‹zé ˜Ì@†D'M«/gº©\J°Ý¾v'–úÑì@ž®¶¸))÷°œqov6wMùeï¾^åÊ 󶓪vU;ð¤Co/<,>—Li¼›ýzciôf~\lŒF_¯»IÜi_{²†€=þÍÖ ]ëÙ²§ÊƒQw ¼Ze\XGÇ5' ^0Á>­%Ô b_/”&’@†¨•ËÇmv ‚\­ø*†¡VË7y»Â˜ ¥ZI(Š/¹#soØ|÷ yK9…?ÌÄg¸iêv’­$ª¥ÊÍéì­á«Ðøø€6JƒÛ¯pX`ÿíǤY”+Ìì0´r#•bñYZ ®»Ä·íêšÔ¡Qé„—={€Bá²!8(#Vîs'ò4øAW¾&gå*µ´@9DZ=9Jˆ^ö‡lLü¥ƒ#ç£Ï¤aRe*X9éyï ³b†'Ñü .€%´m?xÂô¶Ä¨?.ø‚™ÒÚ&z‹k ^\T#^+?l] +/…nÂ+ÎÔ®ºß6ÞÎ_=e W¥3=)ûqŠ`z¬Ê%°Ì ñàl™•‚•ZÏJá+¥.¹¬Á—ð†yR{gû¤-£ŽîÝ3Á‡ŸgyÞ‘7=…àòƒ–Z[[ÉÏ2nJ_ÿLNšqÀ ËÂO 1xÁ˜0c‡øø,OèMéäpdMÖIº¿ÍßÅ‚÷ÏØx¤£Cׂ37MŽ ÈQI+£oáã–‚9Pp‹ØzÐBH}U¬‚YÉŽª*·ÁéÅæè)’‘¡¦Ím|uÞŒKâ|ÄÅTB•€&†¯\úÊÇ üP²AV ZøÈ'a¥‹E(-\VVÔÇ´§Á{ ±ì e¨2èe}åx$ÙigÂW³òç1v3ÚÛ1¬5¤’kÃq#[¦1]ac”ãVßÕ§»ÉfYAZaôºjsò÷£“/Øþ› @c7ã´ÓÆPr™/˜t$fgúÎ*0Ñ|£.Æ‹Žu=©’ mÔ´Û[ùÐÚvtªuˆ»{þÊ/y­tˆ2[Íã˃Øô>â |¥‡>×M ö¼‹ióµ×1½Ï+Â¥c¯ÎöðåèÉÎŽìýlÏÌpEœ¢ˆxm›¼×eàK+¼gX‡ w«!,ì&©K'´UÃ&úo—93pÙwQ¦­LMP²äì×´: .Wjû¥ ŒÀ4îA™€Ô"µ02^p빩…_•tE$‹¿; Iµß&ô÷ Pç鄯cÄ;+r)ʲÑo{@.°€Þ 1ÌÈø¸E™Eb·Z¸é#‡æærw<{)Ÿ­°¸XÉ ËÂ[(r®z¡ÓºW×YÀ+ìHWLI¡1åHl€HxÙ½²0‚É@ë,"-êD3®^dOøxã}BÀÿJ+ˆ«šÒ+¼M‹Êò·HÁ=ˆÞ޸Ѽdãu;Ž‹Pg=`yãVE¢Åª‰JFD +Qeåv±UäóL3— neôg6*i3¥7¼ŸUédÝAI³œÑ”>gºœeÝY~ýc­Ëiôr=ë¾('ðÄb4E•®G×´ÝT½CÝ $º~½v°T k÷Í-¦eür:ˆC}e2rßÒÒìäÕ@!V‚I+†4(lɲۗïÙ$Sc© É"­u©)ôùä¾Å.úÌO½H°Y.5‹Ägh+ú;Ê‚±T»IÕ˜^ñΕŽý^[­Üàc•hßÑHH ‘÷1þcZ^c6ËØ•€ß0jŽ˜SÇž,dáûW™\üN [sGN°uÒÞc7,ub)1Ø«2°¸z”=˜šéF>˜)f­ªË÷•V; jï A›'±cÄB¡æ¦ b£UeÐÖ½(¤¨,y¥ªZÑ+…p4Êý47«N1Y” þNq _7‹µý.šÆfËC€XDà£[t·Ý¤}Ù4ÉÍ“ORØÙ¤ÌTÎ^~c“2”ùØIÌ­×Q6Ñé~KÔªéÜ k¤T|"âç¦Ç~Ñ+—<«ðwëá]Ö0 JÏgétÌF%Ã4G•7âà-u1%2©»5ÚÖn d^¸W)Ù›ÃÁß–‹Þ-Ì56«—”C' °»#Ìy™YgMG¡4;ƺêêIl`óÙ=Ѹ" gNˈà¹x•)•{¯³uXe<æÛ–½TU÷oí-RP¶R¹˜„> ¶¿½My5!êJ(ÍñØ?𳨀ûÕö_ø Q¯Rþ•öo±õûyšÃ-#(Ê"j·wà µ‰Ð¯/¥ ~Û_Õä†p(Ù« pbÿ7=SfiLxjSÈĺîÈͬø¡©Ø©ŸV{( éå©Êú2“ãérL@ª[}O`Bx$Ý–]cBç»Hˆ ò%ì“ëtÊÕQØáÍ( 9¿ )KR“ï0ás´oKiÄA.ÂÒÇ»‹D:ð4„߀ 8‰x ¨ŽÁ„iä€ H¼œÅ9!­»ÿvthgÐèC/ ±CÐvJ:wâ†Æµ?_—·`—M: l2ú& ëV£ëêCE<%‰¥šX7Jà2hPV!a¾½Ûaj«T•ßž}Lœ7°VåÊý/“¨„R/M79ÛkyâÓô:vëRoX8U¬ÜkÚi¤¹§¤8hW'»µ§ÆY3Þá¸z ·STøDÇŽ6¦vžÁó(ZvsC=·%÷YðӘͺNEwß?_²hy°äOvºˆ+PÛ{…‚Þñ¿#~§ jûª5·ù\'d#hEu`5ŠÐ_¨.^ðÔÆ<ªÜY‚–ÿg °¦‘p”͘@ÈÕ_t*ëêo£žåe™iBŸ¡NÐÁòLÙõÕUIm×û6æ^IŠŽjc[‘¯RJèQÑmÝèí5¬õ¤¹Ö xpüê‚èUðY(ô芇…nïÓJÇÚKÕ)ƒïuR³,IŽñ]ÝÝB®±/É™º"0hY=jÖ"l—M c3¥bï´þð£*ü•/:ö¤¸[a<„È÷ÂŽm5L ZÆK|ºQ> Ý‘Ð<0§°3ì§á–º¢0eÎë<¢3èƒ%·Ñ™I¡3lâ>à :|šïzgpßÛè¶™œiNvVÕ+â҉߈½ú!¹ ™³kÿ)é¨`¦« i˜Ý`È/<ÌÞ?ðo(.<¼'*@³Š8/C z,WN8»æêbVˆoÌc2JM„2@Ý`èÚ€.ç4rȵ…`,Îéµò^FYùs3 àc2<÷9žÎ7óŒ·eÐ6ºG,¯ƒ£†y}Fm±ÿÅ?€2x°$Ò Œ2_W®Ñ:eÒNA½~ â¡ðV½¼ o¾q*=¾™ßÍwóì³çÓ#y+úfó¢vê~.©“¯ç ÔOBñqêä‘PÌ‚Ñ6QçMêœÎ $‘‰$^QOÙ¢ýŠp{:?¾}$’°öÁ_ I”CPœ$yä$QW„õv”´%¥‘ JáÁ¿Œ@Ÿ µ7îW.k{R2œ5?ûPÃ1ŸïÕ(ÎN^\ªçz« ›[½ìmuÚ`êTüÕpšŒØ"£§#‡sÌ~ðþœ¶8ŠGxd(},Nûõé`À‡Qž“!<€ à)e^ð”zuqiÞ]ÓB.®Ý[ŽÇQLjf ò4˜–€§[ÍJQt1Ž€flçI3à›»³»Å¦C¥îW¬wÍÇ6»¿|V`´Nóë€7£‚¥ÆÚòârö8×0&ü}wô“‹ŸBendstream endobj 606 0 obj 4847 endobj 610 0 obj <> stream xœåËr;‘µ‹âÎ‡Š½,yCW±à²pbÇ¡pâûæ&|=Ý­ÑLK#gNâË«²°JG#µZýî–òƒäAà¿ñïË7'?~æ×w'âp}òI?Æ?/ß~z´<Ä!:åÌáüÕIúR¤Qƒ áà•”U‡ó7'9½{Së`¬?}IÍè‚:½{ï›^Ͻ¯ææõ<àýÜ{1÷¾›{_×c©y57ß`Ó(©õrj¾š›››çÏØd—Oάòƒ1þôëSÞ]n9}÷ÍÜûbnÞ4¡|Wmc±òË&”wÍ^ÃÛ`e €47¿~òäLÊk—ˆ§æÅ<Ý«æžÙ€tÌ^iyútjþõü·'RÙÁ*}8“ V²òp~ dS#.5¿™çÛ86 Ͱq©™§ÕÄ]4¡x9Cñú3 8ÿÝÉùþ¡};7ï›4sÝÄØûÖnp¥?³3¼‘CÐ xžŽŠVÂx$ì318aUˆÀ^жVåӥСµy’TªhÐ)?Ыiƒ·Õ¶¨|ÑCå™sƒt!Ñ qÿ 4¨µƒ_ȳRª>4‘rÓCÊÿQ}hâïæ‹Õÿœ`»kâ¥Mx;Ûÿá=(Íî›Þ/ͬO0} Œžy+ ‘OV£ƒ,€ÃMÔ#¨²4t¡-½:œé8+B‚ô¾WBëˆ6'R‰·ð‚ÚhB“`ä £™æ9¡ˆì֟͘ûjî=oøõÔ‹küâüäO' ;| Öû¯Ndˆ~ê`½C8¼øОÎ7'Ï÷ZøQ ÁÒŒƒó!Yø×3hµm¸XÌÚyÖ$¡7MRg3ü²)Æ>6'»œfhf@oÅNŒ$álŒ‰"´ö&&`½6Àe÷éDE:ÖAú¨f§n„D°‰<^8>#îP(¡yŽ_~Ãh‡¯tŦ¹ÃÙý ‚ì@Ó¸>ƒœæ ]Ìëó5ß±5ÇY¯|Þõ_ç…ò.¤‚…^¥}_ûºF|èF®õÞh€–M2n9h¸ œÉˆ³° ¾!m@h ­M¥T¯çíÈ0Þ76Mu:ÐXã.Æçà§Â”oš)ÏB? t‚åól°SB‰qT½2êîÙ_Ž`›’o±;Àn(ò@¡õ)A$b-á#µ¼”™ò÷8wŒkµÏ$|Éh€ Ÿ1¤M›à{;jV–­4D™bÈÅ‚ ðq\•'¨#¿ì|ö³p$ÅÊüÌz'õ0rw¨t®ÒÁm': š³É¸¦VÀ‚#¸¸F'y•Ä1¬Xû×5Â…6‘r™„@z¸¦þ²ƒb"¡‹¦x9÷²x΂„ØgY•Õ$¤bzZî)@,n ž'¤S™±a‰°à!p›LÖú™ ¡WÃþå*ÁŠpAöá #†Ë4‰Œ¥T@b”ÕÓ#½þÛ<jÀÐÁk_¸9œ>¹ W”–žHå]B~Z=û5Y¸Ö¦sÓf¢4vOØ`2¤!y50Ô•¼;™(÷ég/‘¸&æ¹êÀKql ¦~i4uæŒ`7ÖªXIÝÉØãm¾Õë…ÈÉ.jÁ§ ¨Ñ‚! 1R¯4|çÁÍ㎠WÅÓµ³DE)Ÿ²Ò(•ó9Ç…•ˆ÷U)!ê$)K.ò°LBPï‹u³”G,œ€=6©@³©8²R@Ö³Õôp‡ÑT6²ƒ˜ív@r\5ÛÑ?µl¶ƒm\Íñz±Aw?‚ J™Sð]êvÉìq†Ú½·+Ž O‘p«TŠ/¹X¼n ÑB<#m)§ð§LL}“¥ðnµ’Èz•…ÑÙ[Ã<¦=ð~`J£Àú ìVÈ”èw$5´Â°;»¥pFn­íà5ªj²+4°J'ÀÑÓ†ÈÎ ¤ú‡'Ö ùeøw NH5cÁf´—çC™+œ*âŒÁÐ^, L¤¦tº&:ê¶nOqEat Ò9xoPtH¡{Zå}ZûBp¼ñ,CEœ(“aô“L«"FdÌ}˜Ž§Aº2I9)wb›ÊÁJìñQBŒð²ç°&“{„¿´4ä¼c°Ñ†I•mˆX å$罫Ò[1N¬ù=\2IhÛR ࢘¦Ñíô8¸à bJk›è-®m$æCÔºEÔ£-Óµˆpî ¶Ê^m¼)8¾:g0®T×¢)‚é‘*çÀ2 UÆÜÁ¤]øÉ°²S«a*RÊ’›| #Ì£ê;ƒÔ'mé)s$po’)ÞýtäG 9QÓc0^Á?*³u4g骧¯“•mœ*ýT œ€M¨B© ˜¾à“”Ø à„¾Š‘ Ð:ÛH€Ì±žEÖçõø],hÿ’èxcºN ££Lì'ÅŒ`ëA Y µŒ&àÆ0¼[òöª*œÆÏ‹ÍÑ$ùB}^4·ñ…÷w›—ÄùˆŠ#æ¸Ë|e’ÐW>Nà‡’ Fª…|–;»šÉ<©ƒ´ðæØä´?ƒ÷É­Ô F—~^&øÎò‘½ìLx1 îâ.Ü1ô¼ IÜŒ^^Œ>§R ‹º¥‘­ˆ1]fc4€|WžnãÝ þ"Z6̼’ý?­BöÿþLP eÀ©·ظ+L’‘Iì«@DCðÄ,Ïz×ÍŠ7´QCÐn·ð¡µm(ƒ ){>äã8‡Ö‹t'ì#Ó‡—ŽÀWrˆàsuü–Ç:›ÒîCêÇ`muLãyIBiØkc²1<—-ÙÙ}˜ì™®ÎçUæs¼¶N^ñëFàK¹µÓ­Ã Õàvó"¥Ú*¢ ó àÞ.ò/ðÙ&ûaÚŠÔ5 IÎvM«f[âÆX®ðþ¨H @jñ´Ð3¸õØÔ®J²"’Æß~„$Úïú­ëeé¯Ò„¯£Ä;+r.y£_wƒT`½A7|˜Lø¸Eæ™ç0‘[nƒì#‡ææ|w6[)°¬€O\Å'ä, l!ȹüé¹NëV]ÃeIéô°ñ\1$…Ê”#±"á¥WEÑ·01hcE¤EhúÕ‹è ïoŒ'ü³Ô‚¸ª)­Â»´höh· z{ãJó†õ×ñ~¡ŽzÀòÆ­:Št«**)AÅ™eTn‹®"C˜G*˜B¸Ip+£¿c¥"ÆJÓãµJ'êBšÅŒ¦ðy]“ÏcñÔ¬kòSïÍzÔ½,d@¹ –XŒ&ç…WËÒvS¦eèúôÚÀRÉ­ÝËøåtà‡úØËþÜ’ÒÒl2Œj‰  ÆP§ŠhÅœh ÀÂ×ïÙ$Sc) I#­Taà‚˜æÝ™5¦ÏüT ›å\³|†¦³‚ ¡½ƒ—©œÚÆU9¼â+ ú½Ö4Z¹ÁÇêŠÌF%!ÑEÞ£üsX«¼œ±+?Ž0jö˜}ÊH€L²°ýëÚ?‰µã¶¦Ž1ÀÖ {wLŒmXà9-%pOäÂÕ£ìÁÔ 7òNž-ÜC5 É÷ Рͣè1¢? .‹Ps! ÞA)Â!º…'*KZ©²V4¤`Ž«Î12¶êD“FÁ?›.ã­h¾îÈÖö»0Ñ4¸¹ÝDÓšå¥sŠáˆ mΩKSÓ4f„o Å=Ô&™bxj¡X‰ÿAÂŒ~'¿Œ‰òL+aáq2÷ VãæÌý}ÝܹÁ›º7rÊ(áÌØ‰$ÕywðI•u›*N°Ïl/)‰ Õ–’’žYÑÙßpï'œhÛ3‡¸ä#O®Êl%æ0:™ ODkT6EEã tYÊ¥YåÉà—²Š’qú&¿ÊY²$ê¤)åZW«ÒžR÷6_åhZ„¨ÊÏDÒOm©€ªRÕ¾˜Ç{[±Woö¶®yï•ßy‰+Ó.ŸÏlWßÙJ!›óæ€_qº³¥°Qªƒ¦:6{x=‘3õ쿪3 2Íg9>Æð‡ öÁüBóÒ0ä9úR;‹˜|<ª.¤M½›R%oňØ%’’ûÂÏs͵®ìõëÎ8®•ŸyQJù€7&vß±é¸Ü®gø4ƒT¾²n~C£,Öj`ÆÊbýžíˆuz œF´&;B² ÏãÔÂú–‚°±<>𨹠G H”³pË\˜Ÿ†Ú›Kݾ›OMÞ2^0YÖ>/‚]W#RM¬r½0G4ý:†ü—{ 1#–ml,ò%PœÛXoKP9•õD4X 2ç%æ)z…µK-¹Z©ÃÍ‹— Nšoñ¤ÁŠÒàȧ°±·™KHm.n5—¬¢=¦ì$F:”þ)­ŽÕ>ÿ½€4¿ˆãŽ}d"a3–÷2>RÛÛH€çPÆw¦v¥mmm X" 9)O«Ü,¬}AýÕ BP] ¼­H?YR~5ÑŽ‚ƒK5)aê»%ŽãÎA鮨¹LΚ—²¼lH^ª\¿7 ±þM—0Õvúž›ÚPCR M¦ÝÞ&”8©z”_§Ð¬îòp¥ap¸ ë{e3α%«¨DBøÎnˆ éŽ,ÏiŧiÓãv¢A岯,ï`Ü0®á&Q¦ í9Û¼*­™º¦Ñk ·9³15¹šMEoiMö{É[{sÿ;}Á):Ú'–ºª<¢µ¾^+Â`ª 9²2–Á\¯ªÔçNX ï«ØÎ&¼`ÌÚK€ÑE`¼nâ¶Ô’U³P4P{";áÁ'pûÓ°+»šöžäƒŽ ÃxZAkšQ‚GŒZÅ r®|\ZŽÙf¢ÏšT¦Ð(ž«”ŸbI‚«ôÛ+1æ°\¬Äk·ó©£ŽÐc=´ÒcL9,-kæxyÈ\Õ–4îËÃ2› qeÂ|6D¸•×*6Ç«±bý¾ÑŸY€tÒ4qj°²ÛlÐlD½Îªk&Ðu둪!™–èÕ%vò`œ™jC÷X…7VB]ºÈ«F ^ž+^¥(“ê9¦²j">U£j»¾ÔÊÙa=PýUÒyXÈON,P´TšÏÕHмAÎéJð¶°~sq"ÒzºN }ö­ì(„ÚÛ:_„S„êöLí,ãM‰nTðˆ[¨‰èFžzÁtºèCZUÃè»UMG_ªKò…ðŒ­š×Bð)Ž5¡è$Ù¤ºE4®`Ò›²z’8c¡uÓ8¬ß@ãr°Ó-±V¨¹æR;±,4ܸ‹$Cé>øÞ.l{aý®".k¶]Všzkµ‰sèáÍZ¸ÃÑ-¯:,ÿÛ]µO³ÙÕÀUÞx‡¬ïtÂ÷èð{;„9(¾-ðhŽç4\»š°WÈÏc#„ ³Ð‘d#ÔÙ¸ßy˜ðN3» Íi9ø!Ü{æß |+LµÂ½Ð¥ÄÝ|‹÷ª¯«èÇüEZ»$ä¥}G(äÜ¥jië[-X·»¥y×Ù2–5_­ŽÄ…ŒÚúŒ V´šR÷vè±§ØÛ$Ë“w *ðä‹ux$92x¿ïõXãQWz§äéïñ«¨€œÔé±­Œàæ°€òÓ4ŸYY\&™í~ËÊà› ÝJ—±ïßj):À²Òò"<|³QU$5]æ¿S›’%ͪ²œ l‰ëº2$ÃSRù6±Š…eChœÇ¹¼|8¿ê‹%X2Æ´Ú3ÚRQºSöþ0:>"œÞ‡N ³÷‡ñ88ùäÍ£Kè…¶ñþHÀü<1Ïøø0Ÿ£ýÌqó!¨ òtgðË>",á<îƒÄ´pÔøt°‡¥ÀÕË=G¼ìåà,Í9ˆøðÓÁì­Èúÿóx6÷þ›ž¦@Éäøv|.¯¸Laë²`ã<y61DPò>š¸àÈõ׈ †¤„ú¢ ˜Q-B,ï”­×#Œ ,oˆ®W¤àwÆ”®~áCôxez!ë²mš$UµH¼/V¿Ëß(zc×%–WÉÎç"âØ»æÔ{ÒÓ X@õ}¼ùñh®QEMùǾ&%XB vû€õ¢Ý8\Ï«ÙkFÅ\XŹ}?uUgJÏÞÍëÊHÀÁ¾Y6²¨x®sIQ‚ 8úN§2(—ÕñÙ×}š‚ŽÖq~ì«­[»5¼€$PG•”`2%Œv'ú uõ@Y”I¥(ô¨¥ºüƸ¯1¢¼jÕµxY&¨„!¨ŽcVÌ•ÃT¸nÌ·=s²¡÷S‚ßä*ƒU”°f/÷²œ=Ž®dG‚ESÖÆƒ /ÃVC.U¥Ñ­²5›Ñd îóÌ={_š–üa):@ê*Ѧ›v;Ñ;dÁëÓQšj_°îå3idøŽ¹"¬ƒ«/µ÷w`0Öƒý¶¯çíÄ=™Ñ½jg®Æ;bí‘G¼CQÞ°Z/ÏZˆuN¦KQMw›ÈUŽe2£~5ŸÆU‹û¸ †fs2tÿtò/úP«endstream endobj 611 0 obj 5512 endobj 615 0 obj <> stream xœåÛrG‘gÅ7œG)e s¿ð¤( $V„Û²e’•XŠƒùzºgfw{n«=çÈ.•oF³==}¿íùqÇ™Øqü/ÿûâæä×ß¹ÝÕÝ ß]üx"âwùŸ7»ß^Àv+­Þ]¼:IoŠ‚Ù“Šq§v7'?õgœi£”ѧììœ3Œäîáå\üŽQ‚£ ã‚K8êâ@?…ÍBymÜéïâc°^ž~³¬^t7|=¯â_^œ|{¢7»ŸáÂ_ç-/!™3»›á…cÆÌ+×'O‡d)ñÉâ¼hJÂ\-Ƚ[{¶¬þ°<¾^6|·<¾\¨ h)”¢pïçÇDØ’çÖ0aƒØ Ï‚ça"0pÆz+…gç‚qëµ>}K–o>þ@–ïðYå¼?}Cø›× ªÇ`iXþž+ˤ÷*añf¡Ã[z¡s#5sR?¢ˆ`@üÎZÏSÈüà <¯ÀüàAz¦cžë™ŸXGúÌZf¥?ýþtY~±<Þ.ïßµ ”Í䎫5¹„‹î†¯ ŒäV2T[È­”Y‘G EIî¯46;Ý”ÛÓ/@æ hTfØ „W]~Ü×ü NŸÌHŠskáë@ù$HŠIìkî¤Ç· ÀwøGᎥ0’r'¯Ác˜µŠÜùË‚ÆOËãÍÙyÄÀ‡FÀ Òî+¥Çç{ôñs#¾–!~^9‚øüW?YW‰J ¥¿¸‡ùpK©ÒÓ’çŸF .»¯ýTãW¯©ME Eî%¥E彩ï»W½]u¾àŸN.¾øœDM8BCE-¯!j:…Dí}—þןŸ¨}>p#™”yå>p•O|xÚ%]_¶ï»ÞðnÇyCíh¬ÿd–1¢ó;¤e>Š;ðæ•ÈÌ!ï &€ÞCÜæœÉ6„[ópŠû÷g%E… Lblº¨d¢gâ` @Á«÷Ý ¯—ÕWËcÅÕFêT†Ru4ÛHQÍ‚h‰Ñ,æ23y¸Ñï‰j[‚@(ñfy¼ë®F$a¬Šðû‹å8âÎ1•Ú+Ò¼¬64ò¤Á5hrmøÞPD{ºJ(tÕ¥Û»Þ¥R~‰Ñ-˜WsþOã\;\ÂÜ̸Þ|6Fyéz9¢ ù Æ1¡aƒ|I­s¬f(•#CûßI-05œ‡ ÈŠüÉ`<ÓLÑŠçmˆ[Ql»°¾’¿ÏZošvwT8Ø`^)eþÏË×1‘Ý^ò5…Ÿµ|m÷ ûÄ\ûú…ÉÀýŸˆà1ÑÖA&î1(zî ‚ XMò¦ò—CÁ…üUÝW@‚axt³Æäºïï#ñƒ‚¿Ä#”’ÜZ¼‰‡gÅCqƒgë½(j½´|Ï £B±‡”sUY•Qe¨ ÏÂam«"‡±õK®TÀÀ¥Ä邘š }W`$ãB‹Ço#ˆiDÚZBŠácõXYfå´pHñX1›0åÜÃÚ^=~ç d‹•Ly7+ß»Ô%0!$Ö*åtHÊlœÒœÜ'ÖðÀU’¥¼p>±?ïöiï@¤L’3 A+$ "zœ–\&9ËoþD„€žô’€¹CèK¼q†ø6­*oŠÍ—øÕ²›n9·ÐÆÈTÄ9 –/öPÉ¡„\du„øeF1ÈéEÔ›Î1^ewÇÉèî¶sY´žhnåÄŸúɲ!Ê¡»­^ÜeœÄÆtL ­‹Ë- íª©`Æ.jJrÈ&/¬3Ö&Ò'Ê2il-ÉàŠdr9n‘¤g¿è=(×6Ò,]Êë+`ÃŽFùbe³p‹äº€7P#‚ U‘ ˆ´TZûbFeòuzOi[Nq%@("ôtºjb)­Úb™+ú°jƛ⒩ jU%œdBªJ°æSžG zØÁœ°îŠ›’Ì7ñ?ÙXO!µªgËã«åñ‡å±[âê‰:®féÎ*¥¤³Q¥à зU[ây#”‘f™eZ9_SGuŒ”Âoó*k²ˆ[@ƒè‹×„5´Š¶hMiMN»NMŽtÜFôm&‘«ggC;ðîډǒ0¼¨²–°H¡YÀ”ŸŒß0¬ª`6W.öȃ¶ ˜ôšA„R¨&‘;¾Êwõ=y™v¤ùa…¾' qývB]ÝBׯæíQ¤2,„:§—ÎçJxeBS;·Åûá,*¬àj–9w”È%h®9¥,›=dsÇÅ©S·¯3»®Ìa»ÖÒTlA¿´Wxô_ѨÝKcNIÖßö\f‚€•* —Á%<¼8òY­š f(|šOJ«Œ©šåC.˘~ÎçYi "#ŽQ4–2ÁÀUùeÖÖBê®q7DZZŽPMæ+:¥¯mg|¢RXǤQ€4Ž)Y¤ *HµbÁe”ì ·CvÚÙ/Vݤ» OÂ6:.»¦§x"×*ß8EïMÆ‹ÏOR±ÏpVUe„HgáGd$wºšÅ0,®¡ !É ]–dOG–°½ Ï_,AC—äV õ(ÜV¡‹Dv“3Éø—QˆXn Á”†ÈFIÓ1± ÊÉÎ;[µ B˜Uóx¤‘P¦çs‡‘ùtô¹æYï aJgëà ž­Æ¥r¢«s=ºŒpåVé–â%Àör«íÅÝÚ•6=+(‚ÇygÏÆ~áõHT©–±Ü í*ѬÉgðd+Wëq _«C z–ëêï4JŸ0eFC‰Àú‚.?Éú²#fiúŠWèzjeL¥?mJ•Þþ9iÚJYPà Áœ)“ø d[)[i x†2ÈM‹rïâ¥Òû$t­Ü·/6‚Òã”pŽÙœáX;ÌäkbÜR±%~M¢ Úe ·ÌAjÝÃU«Ãi[Œa稨sÕ¿@—1míÏtHâ(ÆéÜF&‚·úoå6v#p³©ã§y•æÄKÔ”CÆ žâÜ)aÞe}˜©ZÊo2ë*ènÔŽ‚˜óG¿^BRþ¿K§ka·p/–“¸¼ܨm ‚ !;iµõ@¥86'ÕM´X -6´u®.çÌnhË·ÝdF¿(©²KœhÀ© 駉†¿E,ÑqEâu|[:·dŸ±h4”A‰˜wßæ«t!®Ò’yµ×&žm¦€^ù°%Р[þ•a(Õ0ÈÁ­ø´bmOc¿¦Æ7uÙ¼OëX3©#žy?íd•IZ -¼9EÑKý°Ø“ âÂ… æˆä²¬ä”ùC å|Ttr RÒañ¼ €‰¥,ù‹-ö¶^§ƒta‹1íU‰¼d(’KLõxfÝN16rÝAU"ÀÔ ·0+÷6ØõºXÓ%[p–fFË~—ÈoìháeÚ€ø‘ ô”Á‰T‹²nŒÇ/.S¸$¼êäO“àãIU`jóDñ±ÝºîÉŒ‰aS½ËƒŠ»Q zb+=‰‰:w¾l›Qû3JÛÖ#Ê^é›CžÅýF¾b9 )%bÅÕ&ý8ºÅB¤ u3jy7§o*7t½³?àߥÄSµ¯##<ÔƒzôYA#ˆÑݨӼ&ë•’aáÏq_W\àxm×›åÈ‹U•œÇP¢ªnñU1þ¥Uâ®ÞR«OìTÒeÊYÛý¼Ê âFšÔ«æÒ}=xMûñ±¼Ž«×ëÿ¦•¡! AÍÃ_ÓuSSm`ÇÕû:À’ ?sß»®™Žq-8œG(3\ÂîÛ膔Л£ÚbªÁ× g<ѧœ‡* ß¿#@æ Jk £G‘õ*èíÞ#ñ57•›qê‡jMStõÝdQÃxGBjå6­šJ;ÎÚ20ˆ¯=’–¹Pù7: xGê}œÿÔPXIÓf­Ø Pùª´Xq°É\ GïÓ{ª§œÎ“Ã’û ÄØFÚ/RB€öÔ©:žÄ§n©“.Ò¡ÎÒÁ=ÔÖL‰¾Kˆz¥?Š‹òg eádØ# ‹V²rhˆ÷ëQrT”²RuÌâ–B9Fã D­ÌäQ2ú›òznVkó)B4iî°ÉµyãoרrTt¿îðe*Ì¡k™ÆÂ w=£ø`†ÚS@U5`0FÔ¨ ÐÖci—7R¡šˆ3RN•›C§À¬†C&‡œÞ:6 ²»¥Ê8¨$Õ=ÈI¥±U1^—Å!"ÀU¤žŒÉJ0ŸPèM^¹ŽJж-¢>™ý©ç£ËH}uÖ¥ &ƒdز¿Ë­;ÎÖàö=ºê&õñšYå n€£@žÈÉ —A£—\£À¸g0"ÐiQõ„WYM-×aßEªÉã‚qþ­×Ä4­7j«Œ­†qÌÅâ¯ß€cöàÜÓHvÆæòI‘"Ç„9¾²3¦ÿ$ûy¼ aSÖ7+g±[¢;ŠÕÎâñ©9VtüNMz;E݇Ü2ܨñ·eSœd¨÷á½V*e—Žæüåým½›½¬VÆŒ¾É¶K½¡ý8ÍÊaÕˆjÄoÎÎPYøáphCÉ& š)i>J,‚œvr¥q†,@Õ=ØÎ—FfþÀá.E´$µEQw6Ø7Y áøh›ÉºÛt-º.¹ÿ 7 Ť¬T.Q~ç’ÂÆjÞ¥1ºê, øÔxkUTžÂÕBAlÿ‘˜Ÿ.ÇM¯Üò¬Ò[¼­ƒ½dXŒž…ÈÒë•J‡#ŒªnDÑkmq,dÆÉÚ`z·(ÓÆÅtJ)ÞzÈ´[ÔI6®ö»—±†-¼ÇéòÛM‹Ï–.¦ÒäCÝÕPX®ø4tǃ¶EBN?4|½œ”Œ{FdÛgÏ©Ë(8¬· ¾P"O-Æ è•r3 c©£<Äîãu'4B€|ìÏøZ ýòô¯ø Y¯Vþ!ÞßàØù“öT¬"*»ÿ°"~¬Äý¸¿”f€š€¤Ž™âÅïøM]¿'@™ýÏô+KSÁS•ŸÉ¯ÛŽiÖÇþ@+6}OÈ í¥¥Êö×T¦ß(Á¤ù×T¾‹hBz$ì)ù5•ˆqþI”ôk7é§Rȯ© ³@Rml[üíp‰ïyœZ“J…ÂèÿhK×…£ßÒÊ @];^O—ÏçjË·'ÿúº¾endstream endobj 616 0 obj 4593 endobj 620 0 obj <> stream xœåËn·µk!è7ÜåU`Mø~lÛ¦I‹¢E]4]H²-ÐÑ'î×÷’3<䣙+Éu[t–â%ÏûÅñO;6ðÃÿ¥ÿ^\}õ½Ý]Þ±ÝåÑOG<üq—þsq½ûÝ),|ço„Q»Ó×Gñ—|Ç¥4“;+äÀ¬Ü^ýcÿÃ1l-Òvÿû0ôƉýßòìisÁ·Óì?Oÿ|ôõéÑwGj`z÷ ÀõÍ7NÃx’¬Þ]qËÍ Ü4suôÃVè-Œ¶%ô—¸» ÜYž}—‡oò‚ïóì«<û®ÚA .%Ý÷ý4ÄKõ=/5|pÛ¾ÈîŽOøÀŒöŽ8aƒ2Ì2[àX3Ïäþgk+•ätùMœÖN¼?>QRÊê=Ã!à†oq…”Ú »§QÅÞoÈ&¯Ò/½ ø‚ ­òôij<ûŽÀôtôvœÛÅÕFÐèÑ :Ç­ëÎߎ{Üàf¨AžÎ¸°K˜;?>nÐN»£t|WsÏñ‡l°VI8-!ÚI çY~1ßFÃÿ+~KÇ¯É (ñ®È|KaÍþc^ƒ sâíÀ8ó».­ œB¡¸Í”¸†!\& ôÿLƽ/Éš€Ï-¥3e2X­” ùžÇ¡€!ÝïŠ0\BAI‡áøÄÂ9NšýŸÂrÍ” Á½¹_dO%Îyq6ýþ ºW¾Ã]Ô`XIb² ¥$ýe@à˜fÄqy”üRE æáºnýZÄá]V)ï[*…®=_T4 ¤Np?wÖ”é4D”ƒÜ(a42$¢Zé({U @€¦ë™¹ ×ÚïÁH ~8~Ï]M‘A`~¡´.ò¾Ö‰÷K™§Xžö“µó P}0À£øÛ†ôk¯²;0X;WW= 6N”\øB’Õ”©„ÄsÌ€Šâ¶Ø[‚êQŒoè™ö虊ž0ް(¾ÿ‚ܹz–Z×:7L#škU |±kAJ(¾¨hÞGb±JËÞR­ ŒÖ»\ZáJu1îÌlINd,¡ òæ( ¯"œŽ¹BÇE €Ú>ÞD –•Êý-QÜ—yõ ‘ºä‹ŽM9£?Å»0[ê•!o…[x*ÜÀä<(“÷âà2…k¹ã Íaëµlt¦ý4ÝRWˆIÎĈ±§óŠ踱ÜÚ£Ûçp¤§™Ü>@‡;ÀFö ܾ0<ÌíÛÿ1ßæá¯Õ¾q‡—•¯èlôÀç Ýàw#1€ŠÆ®ƒp£ºrJE.LÓ·™æïÈtàeå•/'^HóšqÙ´]œ/±;-ÂG ÞfìÝP4œhr#ÔS²Œ×à™ºá€Ë‘e<ÄÊO3°Œ;¡Ãžƒ4þA–‰ä"lðd@1iBîÜçyx›ÒÜWTB‹i•ÂlM¥¸ÃisÁ·ß*Ip‹!¸!T’Úƒ›hA%ØSRé›Ê_Z¦R¼)(Ý/ARCÅ›èlEˆ©¦áY¾ÎÃwyø¾&c˜}1 ƒ c4ÖÎü÷’:qx“7lP‡= u˜bƒÐ”:iæÔa`KEжÿšÁø9¯ÑžòÅçY“ ïóð&Ï7ã~ò?ÜkÏU)ãÌḇ`#÷îÃ@a€ ô±¹}˜·M’1;ÿ4txÙüÙÏ5aöŠjLÜÓ'¥½~Hò?4¯zÕ»j¸ ã/G§_~N¬fŒLÁjiæ¬dåúVûÐÄ?ÁéçÂjÏ@-¦< ÒÌ#è\ *—¦fk‚äΚ7%Æð¾‰ü¶t<1|B4 eðLµÂ0˜€ÉÁ­¦™Ð ™ÓaO “}ÝÑÛˆP­¡Bl²p²ûÇ%F98¾>XIi."F# ƒã:cý0û¾¹àMž}‡—ÅYÂGíÀ‰øbµ<ãĶü:ßæŸÕ^p/8$€ /¸6q B²ž±¨.WKYpQA9ó®ß6a¸I ]üe©“Pê9 j÷u}皇gU&KBØüe<‡sYMâÌ0pÙDÜ]ëR1š£Q¦&œ2 á4Æ”Mµôp˜ÃÔ èJa[©ñƒfSeK2u«OÉ9¤ô•ù/C() æcÜd…+SÆPm”ÞV×Þf³¹©³¼»y]ÉEΛ%w$0Æ.b0ô°ë‡Œí!Ž$â":’ÿóüõ¡‰Ê«'ç¯IÁ}ÖüM™Xcîk¼,ðàFËðÁxÛ oTlOÑ«”§›Õ(Ÿå+×q–\æÚ F£+éeMr%ÿï¥f1p–R0Íi†8–2$óÞ‡Œs¼H(Ó¤s(lp˵ôÅ’£N©kåe³˜ zn1í`’ù)F ‚m¶:,VûÚeX,Bòg¨k8á™ÛIkuŒø¸ˆÉiæ$µXÜð-®kÔz곩k”ôtfòLµpR‘&uÀª°Øl¹!k°¨'Ü m·²Ø+®®é–¸»[Ϋ µ+x^’ÍI7 ]rn¡´¾Û-Aa$%âjŸZ`š<låýYãP£l÷†åLÈOWÌúè)+P{\Wê¯AºP.*¾E•Y8l°ÅêX&åªìíÈ{´D{TH “D­³H´Ž‘‰¢>¯×ö˜Z‚ø¦ÞÒ E`Ý  ½v £A –íR•ÞÃ%\ñb¿ŽDHª'¸Î ß܆‡ W^†ÂJ6¡€ÐÓoáj%ëcasìõ"—lp—Kò!bZ³b¬é”ó°°^Ý©5³,<ü`¤ÿSÖ˜šì†Ý%r2d/ÊŽˆX°¡ÊTNðùŒ)»žP{`焯Å5Ì:»Ä‹¸D:AH;NÒÖ /žµoPj°ÀˆÛúŸâ¥õSq,ÐK©8,`Èë‘ä9Œy׿0v“¯NzÌ"¨zírÙœÁ¤‘@õB2Í13Ã|‰WÕØUÜâ—Év~ч٣ÐmÓà‡0OÚzh£Nm¾„’ÀŽræ½Sbç‹_&Ë_6‘ÒŽ1ÒH6oSœ± ѶG›Ð>ŽÿP?Óp8ŽÁjþãÜ .ûÎ["ÑwýµKÕ¡³Ÿc» ~©¼ð&ÖÙ¢]¶±Ñ¶·›Îš—Ù•«h.H¬þ¡óËž›ë¤ì3:dµØ™gr¦œM‡=Ĩ×0œN myI[*-”ÏÓŰêCûÑh2èôbIZYjƒŽŽ’VT’Óî©,\‰ rmìPÞ²Ò?ǧÝjŽç¦7h\Š[)}Hžù •뫳Êý%¸=»÷&ÝUëE[ KŒU?oíÈ…ÕÔ©[R踣…ÄÕÁˆŒv5b]éÞk‡ËñgmMOXRÆ´nl ;Þn3îZ‰‹ÌÔ³Àc¼Ê=˜W¦Ц <^kÅiotø°Ùá½ÍóNÕÑ „NU~x÷s'2¤!êÜY þ=Sâ\ê®V“”,ˆ×Bñ2Ž7]…‰C±é:" Ê#'2îÏî‡&“@ð×G˜³‚,Qaö¼È+5ÔƒÎþßF—–Á˜îFg·³Ýjv¸Ç*˜dÞ4 màé—¼~Lc»göú„þ¾ÿš¤ôÇÈÚ |§ÍJ.Ã0Ò»¡önÓu™>0%,ueç¸åÛŒN[ú,Q”ZÛCG¼ÁÔ¢™éa9F•‚£äͺmšwk8Æ4ÛæA&•Àw=nÿ5N Å'%¬Ûe†1lŸ¿Ï ª®zÝ’'Jl{s@ؤg Q(Œ…¸+ZZ Z EGÁ ŒT \FZž)f„Û·³¢×ñ.ÆRÂÇÈšé´6KrŠ'Æ·W£î¥à]‡'Îcâ[0S<[yÜ0ÅùÀ½(ýŒ–Éì%o"G¼âÞN¬Õ½¸ZYÕõòðÙ!g¡ÃjîÿDW3láTU©vrΗg³ žlÄâ‹¿°¤Ô%W5øV¨ç}ËCæ½ ‘«w—-A§_$yÞá7=‡àòƒ–Zêºf0Ñ㯣®0”©¸)ƒ/ Æ$ö‚n²"ƒnŠŸÚúÊ7 “bsjœèÁ”-uB±Ž]—b˜6Çü€Æ^TKãIÊÆ¥`“ø%‚í{oeoF„Ô²‡³F=4Ìr†+ƒ†pä<™ŠgZDq`c‹¯Î½ˆ`­>¦[Ù•…/\¬kÿiš¥i–ì5Eà XõŒ»ò”Â3Kç;ñ\z`îUÓkOÑu|Þ¸ê±rAÿñ…*o½ŠžQ]Ä. WJ›ÄB+Ó x51óÖñI¿â­T‘Z|>"-%žlW—¯»É~‘¤#i¼1ôÔb =ÿ€8ËDWæA¾7¥mKoªuS='?d“ƒ%Ù¦›4ªl’ T"¼Ùß®÷àl=%eª*yÇøÑ%¿¦=¤œÑÐÁ ÿ´\TÏL|¦›šê96â<&k‡§ù´ºŒ)P)ŽiÁщÎ>ôÃ\O<€Š¸/0ˆ-ÛîÀBH™€TDlœâóòf1¦ô[iÈ@_J–uþ_ù¢…5º´™CX=pÙ¥ÚÚø¸-‡¬€tÖ”$H5R ƒrçaYN‹Í\º¨+<6{m áô]…m¼ó«¸á# z_jét=$ÙXî—ÁGKN6§‘ññŠ$)ÂÅÈ>¦YŸŠœ]䄽©ÜͺkÈIy q:³NŠœêŸ^Ô¶ìP6¢%‰ ˆÌ­¤+fÃЖR$6@\ìé;·˜‡l4ñPÚ!ý,qCçëþUZAR>¿GQ%\àxp/S=H‹ECW¢J®±UÁý¥Ib®"ÜBÉOlTâeÊî—mVeE÷諜¹¯ßÐ2@~¨uy˜½ZNø—-CüN’÷ª¨E÷è¯kÔ¡9RàÎ]N©,!áÜæ´f<ÆÎ·ƒ@ßú^Ý)~=HrµÊ1šõ7Hü:Ƭ)Nt1d€!,üxG6™(H-v~ ÏÇ·ö…ŸÙ1ÛŒ-eTjf9W׌U4ôw„ F¬“ª1³c)ƒð÷ÚÒ`¿ƒ­<­4ð¡¶ÿéÓ=˜HSz)×ÀQøª¨X2>§Ôk¡}'™®¹#åö:÷Ž‹±±™5œÃAzêHO÷¼S3ÓI'ie¶4põFtº‘ï" Nªg±cñL²änÜûÈ,øè¥4hk·N^R”—¼RÌÂ’B8z_Í"bÕI`¦/“EðWÅ)ôÜ$ÖúS¸hÂÜnkÉóN_ä:¼8ÂÙû@]¾à/y•£Zó·Di•y²è>ÔEÚPÛ‰¢,ʨwjÐRU ð:b³,ž*˜¤_JÇ!Xû©0‹¯Ã|¯¹ífê%x ×¿Çtõ2,ˆÝ#?R!ð»\ì`âS·»†‰È™f¶¿ Ãfew xu‹©An>­Ì颧ÒÒ£ŠÉ#êŽÝ8»ª&¾¿8KP1Ú µK›‹y º]ÃÕ®¿ŒÚKûÐ-³,D'=^rt§ìMšÅh¥`A á+îÝrÛLçÃÁp±¤Z°~ï©×¸KÈmƯu—´€0#\ì1ŒURÛm©L7צêálÖò§®îèx…Ðtùñ*.Qå;ÑǽŸ€¢’ràh–_ŸÅæ¢Çùe3 Þ@Ë® W—K6óÞq–/¾›7lG‘npÎÂç(ÞØp>Ö_ÄK‹P7‰<(Ìh1§DÛX+˜¤†ºD#oHKņü; ­J‹ùr9#5Q»ªUM”…lIü÷2’ÙZðß N)Ñ>³Ô]ì½õåÞ|PSÛÈíp RpÖ,ïÂ˄Ŝ¾ðíÂ9Ö^Õ ™'| Õ¬é]«v )@iÛ1 1Ù^Ë`ø ³kißý ½êü“µ%FÔâaɪ˜çN˹ç8=Þß-?EºrþèºBúÞ™Ã*çœ)Ô5|ÖÑL†ù¡âì~wôo“»âúendstream endobj 621 0 obj 5017 endobj 625 0 obj <> stream xœí\Ys·Î3Ë?bß²t™cÜGÞr:NÙ•Xæ›Y<¤ŠxX”lëßçk3ÓÀ`–»$å”S*»J(Óh4úøºì1È ÿÊ¿/®Ž>æ7—wGbsyôã‘LÜ”^\mþtŠRnârfszq”¿”©Ý`…Þx¥áõæôêè»íͱŒÖÞÄíÅñ‰vvÐRnߟ ÛŠ(ôöù<âÍñ‰„³1n/S¯‰ÞnÏÓ`'¼pô¡vnÐJo:VC¼¯Ýe%Uܾ¢¶Ö˜Rm_°áüÓ;¢m† Ãö ³‹”Âðòi>l¯ÓœRmßQ§õcòwvð˜FRSNúñ3ë•Çgóè3Öæc8WL$\R fÝàt¨†¼dÔk*Ä¢ÁˆµÑçeɆؓ,mÎS¿d :i:Œ85IXÙíÇ'* 6ØPQàíëãŸþãH¹8h£¡a§gЧÛL7h­GŽ´5Õw'IªF ËÔЀH“‹Á{hL¨Úe´ò®h]~Í&âÔÏÊ©Äp3}ILŸŒ\ŸH5Xãdf~—ì5hNzŸ6kGÞiL#¡ôôt”K»ñ+æ0̤‰] Ã52lN¿::ýô»í?é¯A8¥-Ma ÑRiN«1ɉ.7 6œëÿg Í`B½”¼@eíšÎ½'FÔ°n¾¯™¸^g®½U"ÁÙ];AC0wL \Î¥}–—˜û/3'BÄGÇ”øù1LÂ(°÷¾H]¬sZ[7ÑUÂa+Ï~K7 ¾Ðµûæh¾ž™©"†ãAù0F“ý]V'ؚɣëðáoB˜ \æp²?cÉWéëº7zò8É`gk¬FŸÍC²•(~tÙJ­ÝÃJ=Vb‹8±S•Â_ÑöIð1:·Eh¢ï­^žwZö›©· ›D;ú(çѹÆñ¥`@Þ.­£¯ø¯ƒ&·ð54"Q³qŸ…¯¨5³¶€&L’£wA2WÚ•dm³¶wbsÏ Ëz9훫¼‚÷£*¿[Ä*œcÁaŽº 6Á×u€´ÂûöÅËÊJXˆËº^x«u}?/GbsÚ·Þ`‚pW ËPÛÓ¾_< bÄP„3:Æ£×€Ûß5dE®Vc‘õþ^ä™×2Èqp¶É˜°2œ=ïêUsM$>$Ü_S¢ìm¨\©@mjÔ¨kÌ)…0>Ùˆlé§±x«zVÆA/G"?¬@³I™×¶ùÇ'ÎÀW5ÎêpQ:ÌÓx®ÚÕ"ö<@­ ÄlJ`ScƒÒìÝ{èˆàbtƒr’4‘p)pUࣙ®^åÁkÔ´ƒ²aám1BÚÝ@>úA˜‡[Má]kFÔ+äã̈8‹€ÿE¡µ4©Í‡Ht6ž¼' +’3×phNËÁ‡Ñ¡%òrïÝeç5N¦ÊS ÎèÒã–tƒ˜^Þ§õ<¬ÍνÌ];÷%¾K"äÐò €¦õmºhäåZàå$x¬àŽð}îow¸ì4‘Q=pÙ6Z® À¹©cïŠ>®ö¾Êž±Ñw™+dòÕ<ïØ d”ñ™)9È*kŸ(Èí×ôUTP'µýµ•iΗi‘VM)bÛe{8²‚”àfª­anN$ Ž;¬)itÀ´Ò2†÷B‚â뤥›2ÿ'µ]°z†©s𴜨 ¡ïÿ \Ïüd-7>³µŸ[Eš,5Eeã<þü™ŠõÒT==úæÉŸÝü|$6_Il-–°±îÃÆÍÕVÿ¦ž×Gß®u¿€èåàl¢I)/gæÞÌÌ=Ÿ{oçæËyÀ³¹÷|î½m(%6ŸzßÎÍ¿ÍÍWsó—¹y>S8›z{ø Y¦gøk%UánŒ»6œ»N²*ØL)a)¥Må.òˆ¨ÌN¬ ¡Šð1—]·¸Ì O/3i*×, ONÝÈŽ÷ߌ4È^¤{u7 ±ƒ§þuÅV¿9aPçNç I^g)¶nŠ'qÜ]²*crNRQ“M^:X(÷TļºšŒû2ŽRšÚ±‹ƒkxÛ#Rsêk™%šˆQ²4:9¦‡BÊÜlSFÎùZ¾¯<¢W4 ^PÝm­¿å’LÈeíã<ãh=Ä£‹ÛƒKÍ7³ŸyÛz*¯ yæÊ~˜z{Žˆ¢0©¦àø°º«ɤh¦°lÀ¨ %VGÌÕdV\27éS ÀûsJH¢ß³ l 3Ý0Œ´ªC!clU{5¤Ñ¢©}âÐVê¯Ù÷™{¨®bÑÜV`ÃÉâ8éµH²f#+Ÿìv4Œ¼ ´[0^iñ~€*¨uí¬»R6e¿È¬ 4î¡EæIóÏR¬»¼ʪ•ªAÅàͤüýJ«6“œÆYJ5Ì™ÊòÊLã óùP sÑÞŒ«Wµ¨œ4Ϊ6‚Ñx”mʺú©S:½Ò¥¶Ç ¼ØNáÞ˺ÊÄWr¹) ŸÎµté§^Ht¬Ï8†Y³^Ä \vL _`øäì LÞ†TˆÔé{#=éF¬Y*ø”íWiõŠ:oŽ5 —”ÁRv/™œžÄ(ž½Î$Õž3r?k`|£ÆMÈ#0Ú)@+Clæ#%J:ã|N¬AJsÈpûɺèK#«^>˜IBÒÁFWPc™¿ôë¨TÕعžÉó!¬›³ݧdªZW‰«<`aLJç9¿¹©õXÎ6计MëŒõÚØ€3€¸lQ<4>Èqµwó$9¥ÂF]­ýœ ÏrCf'¦ÖVæLdØ‚IÏhgµ¥Ê"ÌÖ*=!ÿIþ\žïfÞ IÔ8UR¶<®-…{ÿ{nïdæ# ±0óñG"£W²uø`ε•?KÇ0»KŽ"\¬l&’îp¬ØìCìÕºÕ":fr™è'_ÎÓ¦µ0½vºy—¯buVêÜ^`›)úg´‰"CÒoËÖ{Ó Ä¬Ô«e=9#Á«¾¼¦–—é¢A„Åf Û¤œ+Ü0Y&ºRŒàf÷bÝ»d:çÁNÞítߘý¯­<¬~à±mVíÈX‰UíÚ¤¦­yrÛ#›¬´–\M•ò»Ì“m¼-“jͤ^¤Cñ´t.Åñü»rŽ-\§`µË5'¦»ë£³Í»ÖÎ@øÝ.Þ^³‡ËBÑU>f¤×R#í#Ù_ ø´•!biz%x’ãX‚÷áÐÑ=ekå)ßÎW¹Âñ“Ò‡¥¼ûÝrêîE%$BÎ\OWV†n:èÅÆ(v R2ÔÂ;PI€1™Àà|xT%yG,c!7‡µ›¹÷ª;ö]·Ôˆi8FÃL£ô<Â4œ¢`yÏ¾å ©u<³ü¼»Rfw-…$澕ܻ;ß×Û£gb{ÜÊ1o›íb£RïÛsïÅÜ\Xvê]xâ6¼/t²Õõ¾ íðÚ‹£šäµé&–¯ÜöYC8Çÿsóu3³fïÌNﺽUèÈ +[1üéÜÄöžH «¶v)øÖ)_t×ü¼•UǪ©ÚJÕ³ú©ÜBö nq °àFÇ’§Õ>‚»Wõn!¸rðÿ"±…‹Úá䔉©˘ƒc¹ìŠé Ý„†;µ‘;ïòú¦Z#Ë»HV’5nèR’3®`ï¿$LbâÊ%¡œ\jãXÅÎw‘8ê癿ÆÄǰD¢äHÖîç+HšÊ ¢ä*ë·ÂKºÛÍ7V!?@ºf ev Ÿò:SÏCò:{Kè0áþ„³5ªÿmÂÙÜWÒƒqz¿S•-¦šÈjí6Ý?ô”{Ÿ›*w™¸I/þÐ4ìú ‹z‰s¯ë*nê¥ÚŽŠWúÐþ°W³~¯$wj¯ã+¥VåN¤!gà¤û„öQ®ö)í`é’]í{~µOÑ x𱦱æÂ57˜¯§ÇpA&¨I?ø) tÍ`:3²ÕÕ†ºV˜¶=®ÅŸF¤³ÍEq]…@‡ÆˆØãå~V>î& —<Ý1:tÜvÇ›C„Þܵo_ÝöŒ-‰qçMº\dÕ}o4©#'Š;.(÷/<¯í³öŽ(ä?B›¦Fp;=)yŒÆÐ5 /—Ç1©-GQnd rëÞJsé¥dv3Ùۙ壔‡nÁë©ÂÜ”ºO¤ÀB”)×›UÁÍke:TʬUø­LÃ!¯•‰Æ{úŽ—Y½cßž¼Ó4±}¯œzße 4DDù”GXt¤+<Á‚Y Pñ¬æn:pâT×+cβÔT4û»7¥=}ðôgåFØ@Gã0݃FÀK5õAaˆ6ѤV9 ^Í)I¿Âòåܼž›¯zIÍŠGÑM‡å‡½“^<5¢;×z¼¹6¡o¦»Nùã›éo¦ë= ùøfzæèã›éßè›éÉ&žüÍtúY›}ßöéA!Ý#Ô]>™.x'ŠÒƒîá–FøÍ|\‚:¥>È›éI?+¼ºüøÝ;W¾y?½ÿÛJãoîm¥Rªê"éDÖ8Vu{^u…Aý×`úÅš_§*)è ÂÓ¿¢Tt[3¦_\PðÔ¾ydqA#dú½ª] ¡Ÿ={º$Œ(Ú¸þCjô÷¸î‘š‚"-’€Äú{öyxÇ]¤°±öjlœ&¿zȳ‹÷…µû±\†‹W–0‰öå=ÏSªÏ.Ö5Ï—tD>z¯ÇŸëÓмeúq?O¡¼Ö¸Î«ÆÅKAøC4ö+4¯‰`ôëù}{ ÌtyåY#¿‚¾})T,ùITF®ÿàày;ä"å½Å,ÙúãiI¬¡=HRIŽˆz Ê—åwèÅô8¬¼LD–U^&º•–â\BС÷õsä‘Xº•·’yþ:¥îC&¦È׵Ĺʹç¯ÿ½êkOQªô™ÍSAMÙ€ˆM™ 8äGBžâÙbªrêG?[$2V¸Þ›»ñL+cÂú×K¸‰•—qbýõuÿw÷:oîBÞFʯ(þýoî’bÛ€˜Ù=ÙýúnQ.ÿ„õ/ÇŽ_°f"ÅËA+¸pzÅëâï1¬i¦æ„’¾9ú/á´"€endstream endobj 626 0 obj 4408 endobj 630 0 obj <> stream xœÝ\Ys·ÎóV~Ä>.UZ÷‘·ŽŠËe‹oq(Q¢U%-i‘²¤üút3ƒîA:¶Ê‚`lhôñõ1úeÍ™XsüoøóÅÛÕ?ºõÕ튯¯V¿¬DüŸëáo×;‡2¬ VZ½>µJ¿k!³k'ãN­Ïß®þ½ñgœi£”Ñv¶åÌ#¹Û„ö´œ¦ÿsþ-l£ÝFÆ—°Õù%~‹…òÚ¸Íßã0X/7ßçÙ󿂝§YÜãËóÕ+͸Y€ µÎ[&4^B2gÖoW nj™fÞ¬žuÙRžwb‹ðCS2æ*î]>ÜEž½Éßó‚ïêµqx“‡_âPK¡Ôæcž}‡wÓ0ñ¸|Ê­5LØ Ö[áYð<Œ¼†G²Þ 8ͧ³­`Üz­7;2}Ÿô†LßâX弇Sä§æ ªõÖÒ°O½U–IïU:ů™%×õÝâìåÙÖHÍœÐ(’sË”[[ë9¼ˆ„äÊ1ç§™ÃE(¤é˜çšŠD†ÈŠ­Å—q4R‚2‚Z¿a30gÖÖ ;!›…ÌØiæ6ÃYE¢À¤‰Í ‚:c3‘N"qWóed¾’À|0+o÷£»ó:+¹Ƹ÷Á (a÷o³ñ¨Õ$ÍÞ5üœg_åáLxâìL—kWpïµ_æÙ½wL+](þeSñßçÙçyø&_ÖÎ7šçEó<·ÍÙÂø †J~’‡ð| ']ѾJYßù‚2h>-Gpuñ†‹îêè™vƒ§ÿGDAâí•’Ü €0Û‚^áØz/ ŒAqÈŽ…`ü‹5¶ hÀÊpTQÚ6 ‡˜$^ä>Í,xsP7á÷ÆŸ Oj‚öMtÃݸ‡²ÂèÕXpÖ"z `/{Ž3G ×E)0mõýèµäGE¯å¡«$«(š[éA óãìÒ°€Hb¤-wàÐïÒ£?TIF”ð(åtÀŸ”ARõw ›†—Oéø ¾ËêbŸJh”s€¿ËcÛG{mMAƒn3¬ð¡Xq›(kG‰½J“@ÛÅ4ÛW¡A]\%¯YDÇù}žç!Yðõô¶9ðRehGä|úôä(hô¥¼~—qÑdø:wY¯ XP ÞV¸ˆ×•CˆöÊ9 "3>‡2Œâ¢+ä²'‹tM)ipæÀFÞtW Vb§¸BJ =È6ü­ºÍprxc®*/ÿ„{B,UAeG~J5§¡Qq}–·‘z\N—ü·£G—x3àNQÖAØñX¸?^´‚z©»|)œC-fñ’šøF,ÜÜ|EAèyòÝ\X&ç ×µ%Å?=ýòþÒt—CGönɆèÄ#Ø(cã‚Ȇªq‚l0¼²%¿ªÝôÝ¢o.mÔSx/ðÕNÚÂêPKóšX€Ys…O Æ+øÖsG™¢²–HÚ MÆÃúóuçÑ!œœÍ¡’ˆÒ(I›¶¬$0*"³rX)y©=,J‚lG¯íuAåâLn‚ë~JGòØ_^J™ìËá§RuA~áÕ*XQ#˜¸ká„-ÏÉOß”Æ;[zñ}ü÷*ŒŸ|&Ë,hÖR£Íë-Äý2»$n‡ÕcÔ4ý›ÖcÆ"Œá¼rZ„gŽ/¦ø#aþ™-R$¢%)’A!\!I¯·Í-H:KÜèbqGÈßCqÇ %&RÆÙÑ»¥ŠŽ|ÈŠŽpœ_kí$Vv0MÆY‡iæ˜4‰4!¢¾-äÿò•2ÆÒüÎJEÎÁyPå¹`Fœð @‰D!?èCUŠ"l!U’”ø=WŠ´u˜b±àocAÎ;0ÓÌ19c‰Óî7©í—:”ùà …™¯G;«åƒ&‚ Íà¡RR·T3†™45¸Ògô¥’¤_4/J4ã¶è;JrpO*S«RO‹?P©ö³õ³BÑus·[?–ëà•ê(ÎvõŠ(Y’Ü>Œ¯»¨€V54ôxšåbê U¥ÁN÷Î÷ä}‡61íCÙ Øÿ)Žƒ¥ž—­­œNoýž/%±ѩ͟;å,Z¹ð³—°ûåxW7ÅiW0/ÉCýz›Ô¹  z~/ÓCí2F,Tüãï\³KŠö§´ ŸµBm>dµ-{¤brÁ‚<5jûÏã½åxÙ(ç3©„ £Š§ãÙÐµê” ]ÓéˆiܽŽb¸A©º¶jìL£2¿Ôea vVĹÇ;:‘µ½Øj!æ>v ¥-Y¢}ì8ÏÀ ¤ÊÐ) w$ýSÚÝz·OA{÷ÑÆÈºö??:¦JwÕV¤ÚÁü†iæ_áÆ.Ú 4 ¦0ãØz3÷×@Ηp1é¦ *Ø:kÓè‰k· Y!èì»´±r…ô—,Ŷ•èÇC–I¾çŒ‰˜#R­‡KæVb®5Ó¨%ÃÍ!¦R]³s™\q°nҦΠ -š]+pÀ­Ô›oârƒe—XaPOò_œEŽhG70ª«Ã•‡ÁåªèÆ‹ÍÎ8+ÜF‚í¦}ÞuÊçDwqÖ‚wMÈGÖæœe ý)A³Í¥O7¡êÓÉ>ÝK,ÚÔuã˜ô6ê#Ê HÄà1C "OQEV£l(GÕæU~øtvgéÙy“S&åO¸ÚsWݺ©Ãþ,?¹>Qê–RÃíäU´›ƒ-Ú{¼OÏq ºÁcPµGc‚L0g±¨a >†ÛÒ›´CïPÓ6ø‚ôj·‰´²@ý×cgUzm%‹N.Úd;Gdi?ÉÛsâ¯K­£T}°U;îb¶yª¸ïç Ó¡ëiï¢}À4Ô¼ªqZôÄÈ:0<|ð*– ¡ÊUa¦ø3ÕÆwbJQ¨úİIp5ÝÂ7[䆫íx®CUfÌ0c¥!n[‡äÇup¦n×S°È¦,öñùBKG£wY#i¼—ƒmÁãŠY$ðjŽŸ™¨¾k¬ÔŽˆ^rIÍq‰ò§©9pЂ õ"²Èa¹gì<‚(×캲€.£G•¯h÷)òèa±ÊT¼£Ö÷¡**ŒÏY&+–ð¤+–ß'Ÿg¥2é£1Á¼6”V£ƒ6ÒmäTq9•4Í.0gJéJÄhº#sˆÏ;‹Š»H Î!sþl fåb¸ŒKœyÈDt‡á Ävk ƒA³44ÙuÖ\LÚ{' %öÅûõƒ÷òkØy·Ž%@‡nZ>±gŽø`N(ÆÆÝÐèvoiÿ›<¬›òëJu'1aÓGdá(Üüìåï&+O~ѶsAÈV ØæŸK–èctã*ð‹†`/ð {°½lQ­Ÿÿ‹–]®¢î’‡µbYiqk5ºh”sjŒfXÆÌ²^¸…µ²6@«ù‹;;ÆõÞ˜&ÎÖ˜IdLsœç,š'5/fÌàñ í¦÷ÕG¶FrËð1^Ü4·ÎD—œº=%`*è8꬇‹uºÊß‹¯è4ÉhjY¥Öë¬Aë¨> stream xœí\Is·Ι•ñn!]âûrLo)'.Û¬Ê!ÎA"EJU¢$SŠä×çk`fÐÀ`F|O–íJé Ä4ÞÍvb;AÿÆÿ/oO>þÖïnÞœˆÝÍÉ'2ýr7þwy»ûÓh¹‹CtÊ™ÝÅõIþRî¤vƒzç•„×»‹Û“œ~wÐ:ëO?IÃè‚:ýºÌ^t|1Ïþóâ/'Ÿ^œ|sbaw?¯ÏO¤ [ÐNjðvw{"½tƒ óÌ‹“ïöÅÞËÁY_cS»+È=.³¯ËðYYð×2û¸Ì¾.ÃÏhh”Ôúôy™ýw>-ë2dzU Üv·øW¾mà¦Ïˆ®+kZˆ0xo@‹+œþîì\ÂÙñݹŒ^8€£±Qh삱õÚhÉ—¿ÌÓ6`Ë7gçFÆAw*òÐaøœVhm½ò§×yÚD[Á~Æ€<¿T&W`N‰|Fko"Ž^V¿fXéÄVš¿D…Ÿ€ ß(Ct3ÚÑêÓ'gç* øµ®è0Ž-~"ÈF†!(I ¢¢Æ†#y‚Æ5]²O/WÀðoùø<Âhá#ÝÛ¹4zˆ*ìÎ¥¢È|_×y•pjÞ9é£5ÿçì\;\™ B¯ Q9­99t~eœœòO5Ö”ÿ¼`qÊÏýì/c ôoÞẽ„Í2K`^pWfÍÃd‡X…»öæŽHe¡ýÜZ´œ~©Ï?@`á ÚÒç°å>xƒG~Þ°ZÞŒdW‰ìZìP#·{ÀÝ—ì0,Ò˜¸0ÿ¿™€_{Ìdbš8P&ÄÆ£Hü±ËЗáId–è\xküÖ>{O9ðM ÿràãÇÀEaœyi€1ÑeÚþ­ Á’N·‡k"¨Õàp]éñ–¶ùxo9¿Í¤cšçI™ýþ¬¦¨t¸4M,¿ÆŒ}SÌЂÙÓìÛî‚geöº z±Ÿãk}›wÊu_I´6ümC6mž¾jN”¡±[xR†/Êði‹p{ lÁeŸ7ÝY†ÃKB˜8\WT†¸=°¾ ßj/{sÕ%&ã›G•,HÕª]#f-áûr6Ûƒpm~uÂM÷Ÿ w/ºíc0ö¥Ûd¿:¹øè7C°}úž#*õ嘙F›.•îzGÈql¦’[ÏqbÚMãÇ4VJ‘PluP¾‹Š—ç$ßýT´”¾8@·kŸ¬Ñ ¢t¡qPŽAÑsoqû6r`-ɹµžN]“¿ '%*¯ ]*hPÁˆÐýs"~ÔVÄ´…ÖJXÉcÂœŽ€ÏûI¸aìBUÉÃÌ”ž^‚VkXT:«ˆEU·ªƒ1„œq¡_”üˆ1פ–Ç4¶®ÎéZ^r{œÁÙe½ ùnN'd'U> ®_ÃἸVm$ðŠj  ô\ìrJ[Ä*ÑÚZ O ÃY˜— ©0 z«‚4]G›—ž0êÔ Sú¶†Ë\]òN57I§ÏC;„h'~ZfÝ“”q…ó‚I\[­Ð’4¢id¢¡³»)C»(5\ÕüÅË‚“>áÄK éq€¼ÓàR/ àªxÞÿMF<ºîº »[e’m¦Å>VL;ëiPz€)ªÍô1r *z?¨xÔ ´)¥ prž9$¥ †à I7ÒáàFú“Ç{?ãÕÌf§â À «½ù:…°û$faQ'–гœÄî5S|\½23:ÖÕ¨jQI#?Ȉ¥Â'\dø¹÷0Øc%uªÖœOÕA)zŠ›k€l)6ŠÅÛåo†È£\Ó4pQVÊÖ­Æj+L…àÊS’æ!P>°<¦s•J©«%êÎc¥º‹ú.ȯº“¦ƒ®+¯ü!WüWÛ–¶8Ã÷Œ9Kæu#gØ“Zí.ë9¨ŠHt½5…°B*’J:¨À‘l½5–$|ÛÙÒì“MoMCº¥›pl<ŒÎ·å]ÑÏ|_[=¥¨ï2ù¾q½ôGàÔ ¥l rÚÅ6¼”CÔ¡#£ÄkωT°I“N6ú€p¡×…+B“Ïct˜üpC—í$Ø¿;¾Õ„Cia5u ¾&£ ŠŒæ8q€Ítvp.A=m§á· –œàgÖŸXÉ´*w"ñƒµšsŒ¹èòaQ¸-ê,€Žï?‹ak;nV2[—Ì']Qm£ ƒ‚2m”Õj1…›i|º6N¡dcÐü 3x+ÚúÙºH ?\)ò 1.#*¹D3Ÿ÷`z \ܬXö/ü¶Ò]ÅÿïеRís¾‘Øb®2ἨŒïÚÛÍì7[#g‚Ão¾§ÑV”)Y³“—Ì’ñyp|„èüÌ%~ýÅéÓñ®Âª Æ_„uø½÷v˜6 ‘'5®3§hÛ•Ý6¦ËU4k;¯-«§’­xšò L1×›©º“xêôØ)´©8¸”MÊÁMò±¶w}ë„´ñúhs§zž£M+Uª!ÆUV[“ÍÒR䢉pÓ|5:br™–"×ûÞšAII£¤î_ /Å0”SÊÛ#Ò×ÓÅyÓ"„làóÛ[ ß¹¸ÊP¢óõ3àÚnçEÇÝß¿ç&¹©¥"ÔÔÚ“}®×8Šëžêé& [ÄÔ  uig°!ãM˜ÄµWêÛo| ÓÑŽ®>ÃÈÏNêzDb.²}þ ƒÐöܱ÷ÉÀ‹¢Â€ðä…Å©æ™<²¡Ë5A€,Û½ž ¥håy²×77ÛK¼1Ü{kÂqܨ¸p­¥£¨ÒšZQÍË›)…Dq‘¬û{úØ7Ù¯0%^0TÝÙÖö©âÐ6lÅ\YàŠC®´™gÒf®}ë¶öLjÉa Ê®]»Ëgk´ÝuÞQéõ> stream xœí]o·ñ]èØÇ“a±üþxm')œ¦I.@¤–mÉ,Y¶l'þ÷!¹Ë!—»:Nn(yÍã‡óÍ™á»31pü?ÿ}~qô×Ýp~}ćó£wG"þ8ä?Ï/†¿ma C`ÁJ«‡íÙQúR BXf¼œTŒ;5l/Ž~Ùüãø„3”áaóò˜3¥$7bsÓ:.Ôæ9Ž!ØÍû8¶Þ‹Íkº`$w›«Å[aܿޅF…jÍ[€®RFo.Ór”üïöŸ€°Â0N'*0@Fۀ龗\©à6¯ð{ãŒ÷FLMÐ>R-(4R Âø `å5 ù÷8 @|_f·ÝßL³¸ÇWÛ£Ž4`6ü\øúHxÏH2i† ØU¦å4óæè§E^5øŽ¼ ‚ a2.eâÕyAî}AîY^•á«2üOq¨¥P*2i¾öÅ4ì±Ëƃ #ADãÖ„X®”Óaó1±Li%’„h8®’„(å…óI,ò`«T~Ùü…0ûMZmœtã8~yV[SŸË‰åŽÛž X˼å¡”xøVP¡¶ÝßT„Š‚¢ŒV*"ÊxÉŒ¾ƒtøP×Ò±Âæ„2áøë2¼,ÃóU6+Ï@‘GEá¬õÉ ÷)ËŸêWËó¯Ôô)ˆÈ} ‹ šéÁny•ÅIÈF±QÒY8tL *È„ß ¿Ó.x²iw®†Œ0Ú¥#ѯߟ((¡7§¼–vó9‘²/BÒ2º9Rè¢hëLíâìl|h•|4;3~ÀcÞî·b©N5ê ”eVé5-‰çŽØs˜‘<‰SVã+²öŠðwIÏÓ–FŠ‘ ñÓÑÊèžå½%ç°eØ|:6šç&,^/˜²ä” A—Ä?¹¯ \¦½ »Yë¦SLéÊ€(á}`#xØ Q¬8 þÓ‰Ñi:­Bë´£ ’‡žé±šIQ9®ˆRÑq­4ež0錊¨QÍ“¸B+îBÒ%ç™w:븬Ì"W> ^{p›_7„ÌÙ˜;é-úód,“rZ¡Ubá¤ÙKv…ò–x¡Ë´¿ð[&YkÊô¯ÇY•©¢¹c×wo U°ì»XÆ|F/Á¾=£@&¢uc­™®XàÆfÄáûbï_vÂź‘L9åÇ=€4Z€ ~óm¤á:’+䪑 fBÛŠ ! eèH]Sþ,ž¦îUÚ\Â4ʼnhÈuf—u``м+k*¹"¿äT~Ï»X?˜¨Xd—Ó亜²Õ‡MàıA»hTN„3°Š¤MÚfmª5hÂ&%l–—èà Nû%ó…¦Âðn~æô XñÞVúC—\ã!FÂùÐ#rgIOc*(q4úžÈ(¸êèÖðO`¨‡Úaz¡/1⪛…%ΩEdèùšà9ž}kKƒ"& p bÇÉ…DpB*¹u(Qõ¾Q ÉÓ1Å”2.“ ,¼KÒ‡ô±ôГ_ÉxÖ~%«”wÉ‘+À+Œ’è\Oµs•¢ÿò;‚ÐÌ _],ê("j°= Ž«¯SäÀE¡\'ÐŽûÆ2,ì"jˆ3B2à•] ?lŸmý²ù9 ÁI±ä3 ïJ€qóØî;ç5À9Š¤Ã“  }y™™ ØÇØÖÜb g¼®-¢i_ /•šSbÉë¿KkÀ-‰ñ[š ˆÒžn2™¸¸©©DªÔsO0(Ž5ÍÒá×”—€2]UôÉ1ðºÉœEñtþím޳ ÝØBœußzŠ žeÂxªïDÉÓ®@.ÇÅx‘*óûC”Xžž?r”@¼L«1*^SýŒfíWòŠ{ˆ™«X wâp§çU˜6§œ^—§åœ€CØ!¹tËœJ€Ü –ërRAdv`œ¹}Î €•˜“ê å 8*î'iYÔx*`¹• ¯aZ`¯ó U‘ƒ¥¨£@ô¬j=Ù„Eµ±f¸Äµû}³á+ÄžF4™M`¬È²‡ß—á¶»à›‰Õ%³©1?lˆðiðÀÉ„  !©…ï¼ ñ¾ Ÿ•áU¾š†ÑB ÕƒVMp@’·DšOËìÓ2œ%:ãì‹3.Jú&щÆü^YH㎥8ïeŠœl…r&83µ¡¢H$þQ!VœE"\>ÂÉXàIž{Á‚«¯´ ñ™nÌmŒéüšÈ÷n ×éKá1`„ˆ;ð°K0Hð»¦Y¯Úý5K 2š¹üï"(ÿ)Ã'ÅD>)³ß69õ4üª ÿÕó =Q3€¬ç“vÏÙbBèãŽpÂýIwçŸ îÅþ÷ õª¤|i„RŸÞ²nÈÇ e›éÓ|µ b~'M×òÝ)‰Fh”BB戠èÞÈÆzCº‘ùìÀ!TÙiz›™åÀ¢ðkw*ú áŒOaO<ÐÎZLê¯ß“^ÑkµÔ~üžVo§—iOTš3í˜ÀÏëCŒúK7¥áÕ<¾ÛE|Á*ð0“Äõ¢7E~KaŠf»®W¥¶Ò‡ÓK ÷'“2ˆ°—èÉ24³¤‹‹qꎹzQ­°ëü«o¯„Ö$iF·¡g ó&í|]•¡‰bš@þÅÑVu™³4+ŒYÓ´ñöR^6ÄbVíïžõ™‰>U‰óì]![Qƒ‰Íí»­¤ŸL•iÉ1®?FY ]XZC§…ðHÑ\ '5t4L^3+1i±,/‘'ø÷FDsÂè—ê*à eôøðÉ¡ áÂzxF`iÉbõÛÁVÚO3{T¿`ÖD˜Àusõ»­§Íªßý2ÜAªßèëÒa0˽-^_ÚÌwñ)¸ ë6< Á*UBЦ9¬7nÍ>àÕ˜C­ûW¹xèNßFò ÜéÉÉúÚØÒÅe†K:©ÊhØÖ“A ÌRʳ Ìß——‚§¥Üç\”‹Ö}ñ7ý0Ñãäüf§‚ÕÜ[n(>9fÈŠá Ÿ'ô ð­¾iLR5PnŽ$K¸ð¯IÔN{+›;`»Ô‰«Fÿä£T·fÄF‡þ´¦{´éc.wÈ#ÝÖ6;o!ƒv:þÛ : R9Íìa›áªè¦ÅI7Úæ•ΤŸŠ@‘ŸzQ_—wÖ€ å4 lÄäüŠ#ýœ”Áë©+-N“f5ÚÛ–}­Âëím»ÁKÃÇ~6ˆð½ËQÃëB’KªM'Fb:@RÖìü E@‡;Ô<§™}:ÔÀìšXt³žå,@6¬h†ÜYàŒTR¦ÎŠ´„8÷Ëîº!=À›pÀö/¬¨Ú@H~U1qÊlǬ)ÿuc…×)?ô¸Oi0L%™Ü¹ÇÜY’Ì܇²Éâ=ž†Ñ'Zì.qm¾îÃnøœ<±'s" J—eO§—‘cBrt‡Ä›ÎÕ¦eÓ~sM³’ëJ¿ÊæKhD4èXq_‹Òæ/ËÜEûëq\6™ xitØFƒ’h}f¢g?t¼*³ge8S‡•N>bÊVx2“éS†õR¦¬s I'JÐ>–ÙÓ2|ÓsTÊú¡ Ãëî,ÁáFqQÂÊ[©’К53“ÀuÏLhEDèq¥Ó‚C”¯lceZÂ¥áDz᭠G$·&ܨà‰p;ÑíFÁºÚŸncâ%5ôM±„4ç]‚Á ü†»§ð:¸FÖÞ®¯4ærd E«skÀnR¼¸Ûóýá_[X~—×Páf—‚ømX5HÏ!hé‰6¹M3û=±p nw¿O,n}‘™=±pü^X 7âêfœ»v”Yèï»N_‰Õ´“ †¡ÐÒTJUõ[.—rå—ÓÞMó¡ —…¶t‚û9³š)_-øiÉJÚa^î_IWpí„ЩH-vheî µË B‘ÚïºáS?ú{]†$Ò.µøžøá Þ4Ñ`S™í•ˆiªë9À±[#VþÜô¤JXuZ8šnŠYõEu\ª.ægÊÏ<° ¤+-Ü`v»zå±›[ž½òhBŠé5ü(KÍB»î½õœk“2_8í‡u('ÚªÎ]µµšË6ͦ½uÃ./4â‹“ôBÃrmòŠ8Ì/4l]]/긫äã O4김ͱ¾©™Ñ$oR”ØN„`ùYF|y³;¾ËÀÖ[—¼Ã½Ëˆ‰\µã»Œ ^Óß»ZðAÜží²@Veí!ûe±Š1ï²G/fvr¼ ,/Üib¯&|¼½ß&R,”˜ká)lÕzD°¨ZJñhüýçt `–žqÜP4ž:(bòqÙ4I_ÌÚCÝ´‡Æ.YgÐëÔ Qkߌ>αKÚ³°ûcu¤U€B¼-„ÇÁc€á„þ¹GLŒb8ÄÙ˜±Ö4¸Øíãì:FR)K]uàáBi·º¿˜"×5º«¤6.PȮõˆbÈ&ü¬g^+É€klq‰»Å“Ä6®5ŒóåÀvÿ¼©Ñ#f)±ZÅ7ͨ4ašÙçM3Üç"„"z7æŠú·±íq/!ižÙm,*ا2,ùÈîm ípÛŠâEahu™v¨-9ø—IN¸_Žf]gÞÃ)ÚÆ™%"No¡rÜ{zR|éCèCèCèCèCèCèÿ·GtÊ?ýzD!˜þ³õˆJ_=¢ º>ÕÙÇÑqfÿQ4;qï³Gô®éû‡чÑåQÓÉßݲG”x |/]PîcNö^ç¢0tÁF¹ûâ}¡˜ËÕÍí¢î U`W|j U±öŽ¡ Dº'xf³2tÅ¢ üáèMY¬Äendstream endobj 641 0 obj 3741 endobj 645 0 obj <> stream xœå[Ks·¾oåGìqéâ"x?®I$;)Û‰%Æ•*;Š)U‰"MR²•_Ÿn3h`0Cr¹ŠèJé ˆi4¾~¢ÑûËš3±æø/ÿr±úã ·>¿Yñõùê—•ˆ\çÿN.Ö:‚2¬ VZ½>:[¥/ÅZÁìÚIŸS룋ÕOÀ™6J½a[Î\0’»MèO»qúßGƒm” Û(øà¶::Ò/a±P^·ùsëåæïeö¨»à›q÷xv´úa¥7ë_áÀ_¯„ó– ‡Ì™õÅJxá˜1ãÌ»ÕËYXj~GX¼€M Ìyaîº0w\f¯ÊðMYð]»6¯ÊðGj)”Ú¼-³¯Ëð×q˜0®E¹µ† Äz+< ž‡k’õV7Ÿ¶‚qëµÞ¼'Ó—E¤WdúÇ:(ç=0TDç ª'kiXQo•eÒ{•¸x[ y_t{°5R3'õUBZá×ÖzBC=ÞÃãÌz<(ÒtÌs}§$)ÙîY6웟7Q04\nNÊ’Ë2|_ÈÝ4Ð n3ôq¶…>}vÔ]ðM¥zP!p#@¯”WàžvG0ÅCü×…‹{ ?ô«ƒ­”þâ²ìº»Øœ•áUÞ–-®Ëìá8D$¶Ö2#ÁYl…¥1"YÀÓŽû0’'Oì(œH€I°¯(›õžÈæmDžçÓË(1!9xµ¹X0›VL»IÌ%‰='‰=/Ûüµ ¿-Ÿe÷%42À…¾µ-‹›¿.C¢p…îÏ5{B&ƒö œé¬O7ÅûLT+ÎÞv¼)³ge81‡8;Á¹ i 2I'ùØ•uëÊÈW£+§O›%jÊì«2|×%|Õœ(Q Nº¬Ýtg ï‘aTU1üU‚ô²Òš%7“ÈuÏLÀ$*tXÙ´àye/Ó—†ʆŽ,H Ü`à ¸{áv§b]펚¸¸¾]}õÓŒ "^ƒ@sÞìú`ë °m•æÛçDì´Káf‰×(ÚÏÀk߉­\W¢¡lM2Où½St10«mÎ<ÿsÉ  q ¥$7‚¦ K0†ð‚EÞ`l½U¶I3Ò[ 'Œ Õ’Àæ¼ÒÖ̪¨#Œ…Ãì4@" ijäc¨äJônð½qÆG\S´ïæ¹À­aÿw὿62@Ò$c |»qb—üU°à¤Ìr¤¾Xðô%]öÞµZÔXÄÎ 1t.&„$/¥œàš"ÞJÇXñæ«$^È/àV—dš×€L€¡ŒIŠäìî+2x.ò“\Vãã²+á%odœt›ÿD,wx½&ãÜóºÚ”òKˆwŽ©Ï}JzBvM$-:-hÜtMEï=QÕ³8¯¹Ú—ÝsÎ 1ÇH"™GÀ}*»•í,`˜W4Þ´²òL»Îæ‘ÆUZ츛m:â.Ĥ'`N ®$Å7s²+ræ9, ”Á‚´,.7ÞQPêï0û¡>•ý)RûG­Ÿ—8m˜7B*ÒÐÊãý¹àÁ‹žÇð¼#\ ²A<$È‘á$©\°¿=òv骘Ù7u„fT¹xjÐx^ëYBÖšYÝ' w^f)ž· O¸ÏUÂÌ¢ Gh±n*khì-I+àžZU_óéêCPI.ÁfÉ£Ô>6.@_Ç<)i•î|¸WÖR[q1ƒ"F•¦f¥SÒÙŒLüòMäBÆ^QÊJîR¨åË‚„X&ó]ÆŽya9#AiÆ)ÌYVƒ¤æŠIÈÜ4ø4@¾“yçZÐðÚ9ºI­ b^€P~:càTaG-ÍJ¨—†ÏÊðûæJ)ôä¨áFº EŸwfD/ƒÏ»;ÿ³ðþÝ¢2IÊ¢F…¥É=…Ÿ–súI,ºIÂUÎN2\hÌÈÆ©W§áwŒÉÍÅ R0M¹tG@Ú™ÐU¸˜dd^õT:?.y‡[ <ç¬97ÜFuT²½sD=Ö‹¶õ¸J£¦¹pÈeuŸY“.ZÇ·ÐùDjFFÇêñµW-ÊXB§EÇ¡”'”ô¹èø"ªD!aiÑ‘VãárE‘cÒ©™6>X|ï—(5üÎ{ò9W)~m³Ÿˆd–1 €Oö^9´Þà3«ÒB:ˆ•C[i?ÎìP:tàPM¤ Bõw—ãìe8)ÆÙ;K‡R{ß)6¥„Q¹è}ˆ,o²q hƪ ÏQÇÖiüYš/ú‚¯DGå›+éqΚl]V×Þ$ZÚ†¹r©ž³³•OêoZ;™K2¨yÒKø§Ì޵ÔËNÃÕÄáιí!Yp½ˆ6”7&Ex|RÒ¾NíËÃo>àíõ©ýa:ÞY£?„SÒ4…Ê¥kf0ñËä§ î¹,þ.Ï(5äxF°ù0ä@ëç*«ÿ§ý\CnøôÒÄ5ÌìÞĘòîQM\/ºiP[É”oÉ¡/»Ÿ‘µä±ö¶·Û=z¿ÄY¶_°÷Ë…/Öû¥„WL Òû5ÌìÞû…OBøGõ~}AõI¯ï¢~~o;G†‡N‚?6%©½6%Y¡¢½S6æ—PO©k=¸e T“kÚ€tÞ (ûkSÖ59õa†ð‰ZŠ|z‰½_ óäqf—æ/È‘}¤‰9ÕçéþŠŒƒºè"¾Ÿî/ˆ+x/hº¿ö¾ ï%Á>Oì=€8ì¾0ô—{‚þ±­’;÷>!¹ÍÉ©ûÖþ±™M[¼›;jÓÊóå»A³ã•²#ˆãfvw¼˜ÆžÕòûFCìÊÑ_Ò®Ü]ü ¦DÕn»ø¿z ‹}:rž}"‡<ó9ed’ÃKz:&–›“Nà—«¾{è;‚¶ÇUJ| ±©Çu¨Œ<…×¶ ’ä^܈‡í+ù¬MÙ&¢y[cá"ø;jE†Í[c£²œvm(áa|£Æ6D¸ü47ñ'Þ‹ýr=±÷l!8ýß vù(ÄHñ“FLaÇ“¹pNÀ’›}ô)wd› p§ÏµßE†:TÜsír=Ør|ÀdƒãƒªêeMÑBc1m|§ZP, dòÕÏ.ÁNk‡Kƒ|°,(H†5g\Ç*ŸôLéqf—*ŸO‚öúÞ]$n­êiTùj_Y‹Nà„ûnÇ×.ñ^UN3-¦´’¾1Í= Ý$ê:BÛM•3sM«´%‚n4Çúyf}Òz¨9\ŸøbËJüÐ ÚoH[S¬¨ÛëHÏnÏZ¶B&­éÖ÷ù8Ïkò8<Ììþ8¶  ZˆZ¸]‘áÄc7Wµ™ÇaQÜÊ=ºçžH;ïÇm“%>÷Â-Z7þ–ÀTTÿ1q`¹“N+cñð÷ÿ-À>§òë£Ïþ[ ÉTéH;ÄF 2Ÿm\°ºxV>驞Øq‰Tw˜zlO¡ãùù;×zÓt5ŽÝ/Dæä*sr$vÿ©.åoøøê1€‚€b$AÀDaž ý8­ô‡Õ%Ù#Fendstream endobj 646 0 obj 3205 endobj 650 0 obj <> stream xœå]Ks·¾³ü#ö¸tiÇx?rŒ“ØI%qYbUv”(‘ª¢H™”d3¿>ÝfÐÀ³.¹R>hañhôãëF£ýËŠ |Åð¿ôç«w'ß<·«Ëû¶º<ù儇\¥?^½[ýñ :p¾òƒ7¨ÕÙ›“øK¾âÒ šÉ•r`V®ÎÞü´~ºnÐήoOÙ ¤´Ê¯ßžnØ ¥¶Â®oN…÷rý[•fžÉõëðm˜ef}qºŸ Z=n±&äfý2 ¡„Y?`V0óﳿÁJe±R#f¤…Õž]ÀÚîaE\:¥-ŒŒŸÞ8±¾ÃO%¸”ëóÜJ:¼o¶ÞMŸqæ’FŠNŠqâg¸v7pfHD¹‰k—Jò¸e3¡hW„(ô›Pö#$Q¶$["½ãÖ3^F"+!×oBÅŒptè»Øƒ™ßA+sÈ,Š/CoƒÄØp µöÅ{ë¸-ˆ€”Qª·Á{l¶VIø]Ia;RÌIÛø%¬ˆ.ù}Ü·“pÄÉ÷VDVËÝãθð媪_ŽÝ‘+6œÉÁy³Úp1hexd‡rÿÀŽƒqºXÍUGÃp|¥7`*BÛk"R‰úÊÚb1¤÷ïaœÒ÷hÞ ]à™d”Ú)íÃøøÓÐý¼Á)=öXfã&Ρ™ÔvÒ7 ^Õ 'ÐÝ‹QáH7*æo)!4®a”ûwY]œWú$*œÛÇiTLòqºát㸄Ñë3ø`Ì+3òR8AJÎû¸mçm! „ËÓY¡¸EÂÁ²šÖY…öÛ<ÊM%µ²L2¡5us–(Êýs]š)û£¸ ø[õËóSà Ø!_ Ç'£x`Wa8Jv2T”è7ê&] 3ÂÁ±·vBë†Þ zŠvÁ…r+T.¯ÁÐײEÅ€]¤±#õ€M %Ayì­’Öu|CoS™¿Jk¶K¦ ©_™ëóæ$djJééX´èüîž ).ðöJXªz‚ž”¿*ç›úPƒ@~äé+½Ô0çSKsj˜)²{Z^dwe[& 8R©àÔù1€T°àz\ΑØ%ÎwWlTºngÅöþØŠmÜv4«\BX )B¡Dìõ¯pzŠWtªJ* ¯)ÍvT(¢¯ç‚Žfõ$³…žê覂o Õ"•Äbö—@œL\RdηÖY›TÚå·4†”iî#9h829U&åv7(… †Å¾è€ðWƒ+<‚Z¡„õ™ŠÃ3Q)‚¡}>e¾-Úi ’K%ØknGM–ÉNL—äK©îV.³b¨ÅÆ,ßÀÍÁ:^6m,Ñ3šUX|iUwÕa*ôS´"¼®{˜6 ¢¼Õs;HÎ× ²:§pÂ,oSsŽÊo¥¥‚œ%Çãù”u ÑF×Mlõ¡©®^.{pptvrÛf©8ÊÖKn‹ÓØùp<]_WÈqß3$¹Ú Õ–ê¯3ÌèpÙá“~¾#ƒLa™ŽÜ#ëeœÐ¾o'üÌúÔ­š @8Êèá»™W4R ñŽ÷¬Šv¥*Ê7-cJ`þ½¶4R˜ÁúJvv4ð¡ö1þaÀàž²Á(ݳQ7±‡(W@$ *ŸbÿÚC‡ßI¦kîÀùïE4:c7*L¬æá =²PÃìž÷ÖtÓâRÚ˜NLká+·Íµî2îâBTObÇÿipY˜ÈwY”•AÃu0·Œ¢ðDyÉ+U|–nÿ`Dã÷slAdDÄ•~ÕÍ: ŽÌå÷*F‚žuÞ‹ ¿ ŸVÀž~ÈŸgù“tø~Š à>;ùñDœYýzÂVß(Œõ+»Ò`>W«w'ç€ÝN-×'/º7ä²yC#  # †‹xCþ.¯è<¾ÏŸÍŸ7ùómŽl|˜Z[`7º2®íK•ê"… ¯Àëv»xÿ€]„Ò#¦Ȥ²mÛ—-w8€¼Ðµ3Ãrî·Ï\ŠÕ¾w"\oûG…UqÒÌRp_@TÝfܧ4UcTõ* §µÅ¸óŽy"¢Û‰ÐQ½œ7: sì•îw"ê•&®¼Ú–^Àó€¨ò’ç×-àR+ âÑ:ÙñdLSI×tªNf\TrdãúK™¨}+ì$ÍŽJéf¤m™ÐÐLž–D¹^ˆþIŒÚÂÚo&MØ ìÊh×cÑ%/+D†gv Z‘Úº´‚n÷öm‹p ]ðú,FN»2z0˪¨uȘ²AòÐIqÖŽ‘%Ý·Ô$Þ쎃¼$+œ’zÞ=æ?À13æ;“ÒLDÐé"!Õ~üÞÙMsA=Õ6øŒ‚¾µ‘5>?X¿·ðÛED³0@ÃiÄÎÕ58€OaÅš8t¯o3— t±Þ.g¸bÅë¨!¶‚–yœ®3Bìg…z¾NOÏ?Kk5Í(-uzEA™Ñó€ixÞA…æ¿y.|@8ü…[`"Œó9yèyXŽž›ðÆe:·\ËdŒ•’š Aø\DBMƒÜlzuø;çŒO~‰õZ0[ŒA¦ ÄPDµœVn”¥£@3¿Í˜ó‡ÜzÖìð}Œ @“‡:k¥¹æ@d@—°eÄ™ZöG—0Â`4Ž (Súˆ./óŠò;”¾ÏŸW¹ÃóÜúºy±vžá'¹Ð'›¾mþŒôýXØÐšgk)iÏï'ÝÁ3lŽFH÷Y0 XÖÁRà«”§<ábY£„àIoMË",‰%ë K¡©R›²Š{q=Õ5KhB›X¦1PHÖ»¤öŠþ–~¿!Ê„ža]›õPa4P2ׄ†(%wÌQ¤Ñpàx&¥™J`PÕƒ Ü€ ¬*í3E:=È*p(,ôï°»fJ†LFÌò’}/«ÂE¸§Š);q÷…¬ Bð¯ºQ²^vk¢ó‹wø¸!S%?<.T{ÖÊ쫈‡†ëŒ3àj°}Ñ“‡ñ¯ˆ Ä‹­=¸p¼)‘k ñ& ‡µD0•&í{â½$EÄr9IQ{åb´½–Vº-¥â*8ëdíT­éDR‚:³uqëÞTôR‰{÷³=¦¥ë×37õ–^ÅžŠ¸ ,Þ0]€ª¹>ŒÀ±tO:Qß n&LßÛÜÍ„üêË™Ùò8ã%€AæÌ÷§3׸óï~cba©²;7]ä¸èòUÇRœÓŸâ^˜-mçiFá8hD€öemÊÊp§™‚ðü¶æÀCJò|mrDdgAȹZ)zÐ"ˆì€í@ܧ–ÃÆ€,üÈ®ÂZÛ‘Ý_òçÛüù[s°‹<ÂñaÅ)FÜx ä84Úb<Î ú¢Âs úoHómæš÷¤9ù I7mñ„ÆŠÕcqÆû1œ4ÀMÞÈ zB“ë¼V XWŠ9 Ÿ ×yð0”ŸZà:ÌoÑaÌa;ÏÍ8æwÍspD6ãŸ×¹ùU5pü9Úûê”Ñh›ùõD>å8ÂY³Ã÷ã‡S–΂¢§,=Hñ˜S†ÀæyzÊßåE,r¸†¸Jû­ÿ5š`¨ùŸ„wù“\o¼ÉŸd°y ò³gÓgQ=rW‡nHdpj§0Ú¢CDÖ^€XO-Y{pÚ˜eÉüZk/$Íþ'üv‰Ää@âKL¤snû…Rûs'âƒãJÕI,O@|'ÁÕ—”ø©åÄw˜ãõ?¦ýí‘h?¥ªÖJ‰,4ØPJÁçmýŒ¨Ãœ ’é²fÔøˆ1)ß°P²ë¶¸ªZã×½­NÌÓÜâñõ.@R¼¨&zwl9\ïJ|sç[þ³:ŠÑtÅ= ‰¬&&R[JSBBSÂjšô¹¬c­…^¾”s_g–žCjyÄ9(@ªx/èFJcH_†'Ú¶,à}“øméØª~>-G(‡áH8‹y3Ó“I6‚³ÙI‘Gîu‡«Üú&^Ö€äÝU{/ÔHoö¤ž¨Ø7Mmû[þYôÚ€¬ôâDžj¤ç)Dôjí8¢§[›»knãUsË÷ÍÖmFh*t±à¯ó'0ˆsÌä×]#`>„W“LÙES[6®´j·Õ“ƃ-L—†¤CaoŽ+ÒPŠ]h¸œÚ“r•û¿¡ØíÁûâÉ$ñ=}jpJGD¦i£SbGȾ/›Ô $ÈÚʳ(‹˜4‹xÇÊ@“†zL`Û6% £¦~d›„×’jœÃO”0ç‹æ¯=ÄprˆâBE<ÜX ÈIû4X˜ôusÙ}`4OÅ Ÿ¦ˆqð—íS„¶·ƒU+©å £Àð'8•Êlm×ö»3–Ú¶â` n&MÙ. RÝNÕù@³ÛÓp+៤ØÞGƒj0=…ð)½l\ü†›!Zd†~W¯§öËqÄê"îG5Ÿß5ëop¬¿1 ’t¬ò…æø¢¢Ê›IÑNNÇ»Zùòç5¤Ãë ƒcÜ;oÊÆ–ÂüÂ…1+8Ž5=¾£cK¬­ðþ^M¬Ý{CXžòù–Ê-õH¼ õ`çµKLíÕ© Y;Ô$!ÚÓA(Lq” <ãh¦fà£{0ƒÉWE-Ã&Cãuì‚•v¬jˆ{çÅ ‹ÝŠªáªÕrI^ HÕO¤bÍA@rÊ”¾ZxÈ6¯ 6½ņ̃Ôïpâ+@éU‘…Ú+µÙ+l˜Lƒõ.ÕŒËì— èÔ­ EmbF¢[>=̘ìÖr‡>ŠŽ;b…C8,×ð¥T84 ¢ƒ×J+.¼#ô3Ÿ\³),ž¤{œºÏÆ1YÂOLñ‘¸¢vù•/vq꘹äPæx6ílæºP°q¯ÂÁÒ|6×rÇÈtU­’ |*´ö$}¡ŸÎ§,ùâåb ²â½ ±& 'ªâãô\%ãx²WTŒbÊ-æ¯õÿ*ÏçE¨ð©_o×ßx¶œvX‚öà±ø…o±זּ0åÏúyž‰¯ÑÆ·‚O/G½,˜áI‡_øÕçR¸9›Ërq´ÿÔ¬x<öQA¨^‹l8W(9«ÀœKŸ$¼G&Ÿ~úœÂè?žü›µ%iendstream endobj 651 0 obj 4943 endobj 655 0 obj <> stream xœ½\Ks$·‘Þ3ccCß–T Ëx?|óz½–¶–¸±k3â g"†‘3’å_ï/z$P@u7›’t‰|g?ìÄ w‚þÿýþöì7ßøÝÍÓ™ØÝœýp&Ó»ñŸïowÿu…Rîârfwõî,)wR»Á ½óJÂëÝÕíÙßÏwq©½‚ðç?^X3X-åùë 1­½‰ç/.Å µõÊŸ¦¶õ6uþ6g;¿_F¿Ë££úÿ¯þD :‰‰ƒpÀ\]cé£ÁA8¥m\‚íoBÐÓhI ªÁysþÁtÇ`ºfm>æ{j'¼p|kŸR·QhÚÎ<ä‰V²ƒ‹®òžÍ^΂ñ­ìŽžpe p¬<¾ ±XññâR36öúG^Æz]líi<>w~ VSBáDTŒŠÓ‘*Ã!~“AÓFËéxƒô¡Xîæ vÀöOøR ª/6Å¡¨f!ìic±æ|d5 RÅ™¶´òn¢­€?ó@©•+¶‚Kl|"4ZРÃïDSü>¶-þ…u)`I 3Q“˜¡ /µƒ)¹»”ŠHZæA g™æAJ»yâG¾¤7Êìs›À2Ì;ô5EÐ^ꊽÒèJÊdp2JºYzKÔ%èƒ÷Çc¡jÎÔFª‚?0òÈèÀާ “V:±9¶¨ …~6§EuŸq+6'´UXiºf3ÍÉ!z9Ñ\É"a‹ã1’ó*‰9ÿÌè6=>)ù`ž$Ñü]¢ykGš`b”'²Ñ„óË„r㼘ÙDo 1x¥ôÔ6ÎOè¦ÍPâÄ\fFˆ¹§nÈ9¹-e1ÄCl³uøò™Þ¥1ÅŠw㊪Ø{Þ™S=vš&lJ¨V#ÃîêÏgW_üýüÿÒGXª ]3xW Þ £²¶E.Lû3}LøËLH|nŸ`ųڀ˜u*6˜þÓïǵm8M‘Ñz­È€á ëcÜ¢ *TÛ½$”ûâ ®Ç#ð•¤Oð¹£åϹ_ÄPÊ.>þ3ÃfieAa‚6=¾L¢Ã©a‘w3áö¶r³H…Z`^¨Ý†¼_†¬$K¾,üœîW'œN•/Eˆ%û²5BaÙq’${V‚ŠotuNé„ã \ß¾c³dÓT¦i€Q’œŽçG@"ut!«½±ù‘šâ;«ð±÷ÓÒ|½4ßÌÍ–%lptÞO«µµ}qxÉús²Z:-ˆ+ÈúvçWm{®R3ÊßflI/8B­óÁúmÉÒåYÑ‚ à«tVä\4[\n^¨Æìž¸ÓïcÞ"S‰ÂïFòq+Á=/¾‰œ47ç»Qsjá³Õ)øÄUFg² …¶ä\þióðá÷¥œ0D8ð\UÄY-‰ ^øŒ X’%XÂ\ 6†ZéÓ¢NÈ srY”÷7Æ'ü³Ô‚´ª ®R9´h{´‚{Ľ½q¥Ùs±ˆ=,BeâÓò{ÜÉt›**+A¦Ä$8ŽÐUÉÒä.YéµÜÊè_Y©äÍœ¢UZ²\Ñ´’é$‰ƒ±žËòÇ¥÷õÒü±–å©÷ãÜlÉrí@Ïz^Žä2,±OöÛ‹ósÍÛµa´5¹¾=J© ,¥B;*°èIËøõtðž|l¹ tÜ9¡¥9È0ª%6@!VŒ™V &ÐÀÂwl’ûÉh_‹Â¤‘zh½É 0ÝÃèHÙ‚+Ë“‰:ù„ô™“—Ír®½|Ýs϶ÈÞQʲé:¯¹*ó7”–s¥a~¯5VŽÑÈ;Æçñ* |£Ì1Ê?MH§%ÅàŒí騻<‚ÂTE D Èdˆ|nû× |§…­©ƒÖS²PPmŸfzj`¡UH î)3yõ({0ݵ¨”wŽ'f­Š•‚cÔ¶aú¯â<РÍ/¢ÇýY¸,BMô÷”‰ÅhUǬ‡ÛV¨,i…sÒtès¼í#c+Î?ãÜ Éeÿ Â×ÙÚþ&š†›«žcyk;ÀÈ/¸¨´­j‹œ>\Eb …¥©iZìÞ·„â^µI¦U¯4ÀLå‡9 ¤ êe{arí±0,_N‘Ðǹùš~ÍI‰„ÿ®Š`T—üÑFÜ…†s² !I—aÓ͘‰®Ÿ3 !Ènè•ãƒ,´åk>¤Î`¶ KZ†BRëð\6:~ʳPàšsÄ:^”¾äâ£gµßä]<α¢FD†ôß;¬ÉÇ\,IC'®Í=Y+M{ÑiÈéIæ}»˜€¿OM¯°§¯—æÕÒd¾œc´Ä®Îþvf`Îì~:»?ž-اß9¡ÒZ·gçÀnçžgßv“º™üà 0¨Ò BæäßíÑë¥ù°4¿ZšwKóÃÙø4÷¶ŒÝìÊ»axl„Û-…=LOöe‰£m©Ù=c¯à2®•¹ô– ýüÔ%Å9Àö|»³À5k%µRÅnªÒÔÎL&¨­DÓb‚Ú°’¿c죘”½½r䩹(šÃÄãÉÈÕuì Ç–â˜ÀѸÂêàéû‹)œü~œÎ7w¾}ç±ôa2«¶Äƒ°`í¨®ßGÇ„’©Ó´—®=ˆ9:1}@“ÈÓN-JÀ±ö*Ñ-´9P½$”ÈUÀo>+({'= lÄ=iI§ãó9hÚí>¬¯³¹XÙ s %CJ ä¸Ä£É¿W³Ï³/Ù^„¤Q”¡0œ¥digCžJ‡%Y*TTD¨4 L?E³Œ”¢­*´¢Ô©®ãM[=TêúèÓðß^\8ÈJøƒÑ›’ +åö\¹áWyúS’å˜Â`+Ÿõ,Ö\Ó ¯sö³+È_-ãÇ<|´N´Ø"Úu>¸!rÁOåéüæ –“øCz8À ©óÊß$X•ŠÒ¥h( v´e§JÉ>×G«Œ$ ©ÍFHŒõ*~z Â*D1·ápZOuó½Ù«|öô/¿ªÜ³± DÏgv=Â+©‰*ã–CÞ Q“Õ ©NR_¥á°ñ4­ó2$t鮲…i8v]¬ÙImô¶ÿH³èÃê"{¶TB–”ÞdÑŠ£AY/+ÊèVIIJTz“B6,ÓÀ½°P¦¤6`:êQ÷f`Jz/túÖ€+M}%íÆî”‡MîUà˜&+¬IÊãä*V)hU«¦\Hq¯cŠÕ8’;)?ƒø9COÐe˜˜%ŒΦ›ðÍVÂ!Ã"‹ˆ^ôÊÎ圯8MVÏÌñRÑxÊ­U‘ãÎVÙš­Ð‘²nPR=7t4/ùŸ¥l E(¬Òž~ºŸé¿mØò¤BL·0׉¯jFOÎ ¡ÆÌ<ä‹«™¨W÷ÈrGEöJ6˜¸§13ÅyÖÕZIéQZ sîÓRdÊý€ V>„“éZä:ÅLø‚Ò•±®à„QáÐ sÔX³˜qÛÝrés³efÃ¥÷uûEÌë`ô ÃŽö oŸÌëà ¥¦§žg˜×Ø iÎx>ʼN½Ì¼¾ªÇVÕyç^¬ÜûæØëÊà­NѧtX… ß8»/‹+ôs&×`L&°±û~9¹Ö=zKPÝ#™Ž½Ç‹R6C¡!™‚ÃÎȹ[öµ =¯ÌK’A„)ÂNGÈFMTáv™8u<ƒ¨ ʦ!éöûX+é…‰H³°ôâùwçéX¬ÒŠÄAËŸº[¦{ª9 9VI¦ñù³«æ€/ RLˆQªmA<ŽäóñŽï-b‰÷?.0€÷y›_€ô%•êñä6fxWû )1õið¸ô¾š›I]9G%±ºŠ·¼ Ž…öCp;`Šž²wZPÒÏ=Ï@³pCL3À³ *£ù¯•ó=yç¡JB­Buᨿ®p»òÙ—œÇø›.B¡s¥1±Òÿ,äðU“uþ0JiÐ`¬Sr@ зõNH·Ë€ï.Jðà9 *’OKWÆÔT«2‹†S¦ÞOÍï—ÞwKsE­¬P‘hËÙ(Ï;ùصœ!KÈœiè ü]žísµ«R_Å€ö¡žá„”žš½ †;˜øO±4qz81AÚî()pÝDCñ«‚S%¬ ]•˜f@ßU“¬0pÓDÜckSͤ •fÍNAΙãGKÛ ŠÇ/ _…)€[©qC6çœöÙÀ¨Š–<€gˆ 5Xb”äªta圎ÑKoA6òãfó²{×ÍžºD0AšK^Ö•‚šN¨$•:N ë5¡6θÑ^ûïD(QÃpîгûõ£ãqzn)rk’‡øùf|Ž6)LÎv@w ÏkóVŽÂvóÆ …;uÙJùKø p”ÜÁ/w¹ºFF˜ãNÍ=Ï1?ÁÎyªÜïƒÔRöõAÊ3r–nû·¢î6½H›¦º]èר Ó<åábÏuN qÂê"Éw³»Ý2|d8¶è»g&xýúÞ*&ýTas§ŠB®ˆÊûAËù€˜}Ë fß~j6›¦ÛEZ“ä^‡ÉZWX! õ7K ¥Š³#ÊyD¥U.˜&4e©ÔL<&þšÆÊAY9;vÓ¾üÐ{Ìà°W ðÁë$Á©\?Ø¿ºd¨J2kG.A”fOÆ+,¢Ç&~îÎ#$Õã¦uˆNÇÎÝBâ,f_®¨s:¥õ»ºèx½ætGˆ+ôèC/Q>*QÆ—™¯·ãa›ÕõÅ™Eyv¾Î|)pUíÄZ¤ ýŒ^·ô²Ôû¹]ºÉ£Ñ ÔFéÅ(«Ò *µöez­Qé^Wx¼æ“ÌÈmÉšè(Ì?ÿñÞ×èsn)-í—ú ª*§Ë UF¿c2Ôù±`Òs mü5²ƒ©P{£0”&tev°—µƒêÒqI9ÂSUžÑ$Hv|éKÈ ¿ºi‚èîÆ†^¥!Î\ÚIÖ"*Ðõ÷ç'“¶ïvæ+.P-ƒóÇ–wÏÆžòö¤ïÜå)¥k¾#,΂³Î†bË:4k•Ø­üé "-Bq[ø¥BØàØÜzb2jÌ–dèJAó<íØ,'Ð&™½kóŒW8‰ö®D5ÊAëTÏ•¼Ê)W¡ÆK#/fn–ª³² ´£?ºEú'Äö`<ÀÃ1Š|Šíø½sÇsB{ÊŠ0Á à{0ÏáÐêÜüË>/ãTÏÁÑ5®YYpûk|ÃËUAiïÞÍ¥Ò”N7Yð§·SNñ­Yê_Y¸­Žr¬‚{«(Gê}S¸+…†6ÃÑ>‡‘04JÔpùÓQ`\ž§N ÉºVuA¨^£…Q½ÒÊÕS8VI)m:|ß»ÖÛÙßp•áO8ÑvÚ5K"4Â!ëzeá¯ò#/nU ´F•_."Èj¼e”J=«—èKY½RÓæÿÁ|ùdMVYõ+Qc5W*.) /ôÒÔºP«~<ÁGXš¦qéd…âk"ºªZ—YÓQÆž‚Z^7ÛsmÊS™•//’•„ùÌd=hJ)+*[²zî9^&c†AæÈqÞN·L 7ãatk~¹å¥.L2›1Ò­Cë? Ð)j~;RŒèÙjÓuäÅ«áÔº¶m¨×o?†µ²äTf¯q.dUàU©6UaS‰òÞ§+¸ùÇåvU¿Æ´ K_¥ÿ79æÑ«ù¥kwÒHOɾc‹!9;³*ÍžçÓ¹DDU$½=R¯%¨µ;ô‚*Bù;í©ru•íÔLV¢‘ù>ÛfÕ¢‚:í‰ÁŠzó&êû ´ÐÖC¢ –ý>XÖÊüÙû´p™#·fUÔæèÛo4]нR±›md‡EP¶nÅDº\§;åë‹ßéÖÎxzž|ŒTTíSHî¸w¥Øî¾Lça\Ùù©Ûî©/„¦?y£Îyr¦O_ð6Íèʲ·gÇ™’ ‘f^6kclç2ãÌL×—‹†•›> Ö1K¬|UæÖ’MEXûæÉ á‰Þ“²¥¢L¬g²KÚ€éœu‰¤Iû §]Þ¨*ú9@x¯òš*OWß ³hÓ<ÐtK<ö_8Žè‘#zaÓ*^ÿn|Gªù.ȈTì–ávîƒÔ—Uioë2!Ê6|Ï¿£uÒ%Øô[ì…ëF襬d`V–"Yüù›•u}^›Q%’Å¿1å;³ Z’ë÷Ùè°…gTÕäò«£—ÌeÝÅæÝJ³”ùr# ¨--ÂïÛé[~É(›¤¤ÖÊX=Å€HÏ ©Õ”Ô­ívžTÊŸ¤JÆOOaô ylU]O×Xééž•kÙ|Ùµ¼Ú–×m¬Ü\ᇥھ zLïFu¿³æXZv¿O͘iâXÝ´~'‹wÊ`<‘ î¾=>ŰйƒÒKQÔ/ÝOw3w—V@+¹ºa –¦˜›³£ý·³½“7Qendstream endobj 656 0 obj 5212 endobj 660 0 obj <> stream xœíÛn·ñ]èGœÇ£ÀÚ’^_ÛæÒ"mšX 4}°u‹éX¶$'ùûÎËåË]IÇhZ~0Å3Kç>Ãá»äFпñÿ³›£ßÿà6WwGbsuôîHÆ7ãg7›?œ"€”›0«¬Þœ^¥/åF‚Œ€S0›Ó›£m¿:ör.„íÛc1h§Ãöýñ‰„ÕÎmïOpÚ(©ªéWxw|F Þùíg¼WÛ;;§ç/â"V8aó"w¼K_J/·7ÇÊ#RÞ,®qOÀ0X· r‘Ös2Ú"ØþÄÀ&ÿ>ý ’ jR)9(@jž#mþއ”,~÷Ï2üІZI€4L³.ÃoËðË2ü[~7­p¨ÙeY/dFbÎ$]÷„ûWÝÿQpÿë4ÛCBiÜÔ¨¼Ú%‘ ´°ªfò.AƒÜž1&sò¿‰ß‚—È¡·•ØLŸFAÐCÕ‡oGvúê»×é;¹Œ{ 5J$Ši¨vÜ¥¥Ô=™ˆ»g±‰ÐÊá‚üÀ¶¹Á¥Wá6'‰ \d‰~°à7'H~£­LôB$Qžw­èƒqƒˆg›tI³vP¦‹a–ZúPyH Á)™)!Æ#§Üö—¼ÝþŽ\3‹´')ÍùL;ŒWÆdÅBùðk™þòMoÙ25÷_Ð(S$nÚ7ex]ä÷¼Ì^”áݪTãAù÷`FŒŸ–›”A”ct-ßüäl~pÎøó̳ý¡•®Ó†ó`üÒ® òÏW\e´¾*C¾ ?S˜ë´c@ùâr¿cãqPÎ&SŒâh3{ã"—iV¢ì¬hmo¨<Ò’û¤<ÆŒÊÃÕ—KØí‚ès•¸B|€4ß­©ÁDŽ¡Ì'ÑQ‹Î‰Ä?¤SÔøÁE\ˆ²¢T@f‘"„͘tÒ@HµÞJãHÆzµ¼,¢ñáØ’GVÄúÎ{ !ê‚QÂUk°m¢¤ê`„„®Je”%:~P>¡ü2ªˆ×¸ÔŸ”fO»ßL³´Õ—§GßéA˜Íω|}$­7x„µR"ØææOoí§™ë£—‹ñ ôã'khMçHáÊUÁí}ÁíU™½-ß ;Ò«2ûºñÙɰ¼m×ÃóUÃbÍ`Ð*gÃÂl$1®L-8à;²=è¼ÝŠ4ôÞUâ~™¦ÑV­Y åÜà…©”&é•U|ïûÊÔŽŒCô§€þM+k¶¿¦¯„ Õ¾Ówéw‰½¢©#B>ÞEèÊsJqûu¶°7ß||Éì _óšÍ_3+7Ì]M3‹Ç,è93•åÏóÉâ Ôc×Z<^± ›Ùsf{šŽ½10ÅŒwEÜï‹¿/³]}¸©T|æ<%Æ éŒ{¼ ójPáI&Â’×@Õõ[IC5$+Y¨Ãm1gùcì² ƒ —Oš›0O( Q˜ ýiY¦Ë°GgŸ€Î$8œ%•^zóEx4ŸÞ¡ï ÓÌ̧ÇPÖÓšrð&<Ê~ÆÙ™ýlm"³Ÿ/‹ýdz1ZŸ‹hây*ŠBDÈô-^ïפ^ë$cãôÛ¹[6=:F Üá côG¦2 «ë!añ¦gW΃ÆÒ`’ä”>¤LU„ßkÝ¢ èWu˜fž M®‰k{HAâá§“¤šAyÛ·‘/FRhË'æ~we¹»†ò¸Ú†—e¶¥|úì´ ðM%‹‘ò(AlFyô0Èg@„Šð_·Öx•ðÓ9¿@áÇðƒ¸‘u++°Ä)-æÈäÀû2ûbFçDˆ*£sÒŽ[¹ƒYúS»ÁµY;$²  ÀM3O ²°˜ÓÅ&‘™U<¸{KU@ÅÐ<`ÂÉ)þª¡m:Þ=½‰tŒâ¯ ŠþQjÔÞº8°R5J ~9Ú© Q¯fºV¢íI"J7àÇã=Œ\(ÁWËYì0ÓJQ´?•ÙË2œIkrôÃõû.O^wÍÁŠ¡Aÿš M'ŠO'J«=4{°ZìÀpû1Ò3š°ÂÅ]w–á°#„Iÿ Bø‹2Dî!Çù»GYó.­‰_Tš*T¶‘Y†ô®YdF«.áÞ÷•œ0z'ca¸Så1î&„vcÊd%ߤ˂B^Ÿ£BhË—hѧ|l…¢*Jdž`Vü`MQ²«˜71ÿ!(zâ ʃ ϯ–µBÀ·G§_×7 ƒÊªE¥-Ê …u±úL™ÆˆíOQP`6¼P-IÉ#zç,/ÊðX‘Ç“¼žÃaXø9F¥tv+S- Lk1ä:Çjàü–Âí»Â-“b> Ä!Øè˜÷ú~bÖ‡"Ï<%ü:!­@™ÿdzÖÊ~Ò,¤©â8üÚO.«|°Lœ—–®9xŒ¼ÔhÒÐÎT)n* 0ˆ^tT>´U úÌ‚iïD4&¡ZU‹qˆYí)•óYŽþ‘Z‚~ðM)á1QÇk­š´ÖM¥þ•jq1ôð@û°·»ç}ªrZœM‹bBºÕÊ‹TóôräŒYå‘91€àǨå˜NáakË$+ŠnM™¦€vBqhìY&r¼ Òr=áȹTbðÚ-§yGïYbÌEZì/#5/×·šÑ¢™bw§'98ížÐt‚fq gf‚Hû¸é*ë[oŽó«%£±6ÖïsÓ -Ö;+¬šöèø–µ[œlà3…‚²µbJA¥¬L 'Û’IOÌVàM³m»mµæ®ù¶oß±5æÛO×ÌÓO}ÍÜ´+MzÀ´† ëRà ‡aÌêÜqE}‘LŽ Uw—Ð’Â.ŽkSè”ñ:)9LÑÐhªÌ‚C;ìC,zL¨§‰§Ô =]©àxÇS’}+³Óð¯Ç½ð…Á>7%±(£nòŒ¼YglMqE£¹;;QàÑ!ë±!TZ”µq¥ 3„ñr°@¼Í(MbÉi}ļ;,®B®íjÖ&SõÃ`¶Œ¬ögÚ“yBEÃ¥»å¶yO¡Ôó#¼8•ôèÖú³è<:,‘¼ŸÙÌýÎÔ§1*Ñr‚ˆ”EKÇ ÇaÎ’;p ƒÒ)ynD’ÖV¶I·h’º^Öó"Wí’` æQ13ÄIîGÜê‹ÆýS'ÝU³(c)":;޲d"ºÊQ¾r€àf=½VÚq5Ü]­52PÙE)³Ô9±ÐüÕ¸§ÔÔ!¹p,õQÌcc"íãgû EX¢ëj‡ }©;]kqŸDY©u“Û'ÒÃ'klñŠîÃb ‚Vèk]ØDY7¸šd½Š© ÇïÕ†S·N¢Ìï>Æ[¹C±L¦”÷¹¿¯Õ¦\a˜N%uѯã¡y÷N$*¡p”pfïIK8g–‚äQ¾”‹òñ°M(Zè½`“²jŒ¹;%Ö˜…ÓÒ ƒŒY%DQÇõ•4òœ-#åÃBo=¢É¢úóOL9è‚oëô¬ýºQ3´ÃÔj ›Å‰œ>¬vçGŠXÒ n幈70ñp¦§/çQuÔ/¦>Mô$Ÿ«®†ô‹w¹ ÚÙ‰V{¤s2GU:ÏÕ«s*vª¥F+µêÞâhÿ8Aå ¿ämôóÔx)> stream xœí]Is·ΙIå7¼ã“#"ؗܲ§R®8¶˜“íƒLJ”c‘RDɱóëÓ Ì 0oá#UN¥|ðÄÃÒèåëð¿6œ‰ Ǧ_Þœýú ·¹¾;ã›ë³‰øÇÍô¯Ë›Íï. ƒ›À‚•Vo.^ž¥_ŠÐ’iï7Nj&Ü\Üœ}¹ýö ­¼6n{?ƒõrûþɹ^Ðsû¬tø}éðYi½èvøKnýúâ¯g¼8ûüL3n6ÿ†…ÿùLÿ—¢™1›hñ†é[^Ÿ=;t{ÁÛí]—Ž+‹{ŽŸZ ¥¶oKë«v{ñ“üìª|¾(#¼CZf•ß~µ-=.Ëç›Ò™Ðø®!7a'rÇÖ–Üi„‹n‡¿äÏLn%µc\+é<Óê4†˜7²¦ñŸ»ÄÑ81×ÛOžœ É9,h:¥•^–Ö·”lõÏRß§±ÕI%çÖ2£œØÀd°g#6W°æötÒçm¥s:üANGˆ@ÿóç"³Á¥sy¶‹RÏ—_ŸËÝ#u.ÖMç¢]:—ÓX¥Ó† ˜Fö—ÁjfsÃáT†˜¶qH\N¢òßÊ*>”Ï›YJ¤§Ñ@OYÑèE—F7]"*3¤§2L=µFOo žÐsj¸==ðB°@ÏoODϬ7€žͲ"ôœîAOÆU‹ÃéyÙ&}¾.»ûîxy4zZa™„žSÃ=èi§#ø³5f +sýàOSšÐsj¸=µgAÁŸ-£-°Ø‹èùÕ“š @MPcX&™è™,`Ä È[ßw;¼*­/ËçæÄÖ… ­¯ÚÙº`t±ëFA› UÑ«f´ô» ]ˆ¸/”êÛf‹™Éî‰Ö½ë¶V€옖¦Zð'åÎi$æ  xÕtX°ÅÓŠéÁ¦+DƒGZÂFML¸ÏL¸Y‹$Â)¹áAr.ëŸOÏ.>ù’®ö¶ùõ‚g®»{×Û Îôë/À½#zE æAPy:ª8çÚ!cŸsÀëFú€š„Õ—.Që&P2J™0²BJ °ˆ:ˆë‘A±°¾Ápÿ§è~0n'E³•ü‰QÔf¸›Ç8¤Ývû¾RK€ÿ¨2¨˜•àOŒ\‡3à‰pÚÿ,NÑ!µÇU’çÎp@úÖWHïª]×ä—’Vi˜Œñ§À¬"Æåþ!?(ÃCœB)É3 Í:À2À·â!‹kƒoë½€µÁ§ FrŠGñVD ß¡OPõAÈ  ŸFÈ€ÝuPÓRE Óá[8¹9WÁb&Œƒä “"—8ã#]p¥&hße q13ÌébÈÂ{à/·ÑÞÀ²\ ÃdÎç–cÇ’ñ8‚f^šã®;:p\3N}Æ0cíLA`Á¸5!¤UÊŸ~H¢´éü5ðWéü•òÂùtèS84%PÉ$îÒ–;n鈈]8œ¯ä2q×ôËäèéL/È0w8ºgN Ó9†$ 7 Çå—¯ÓºŒ“È—çØxÖ2}—¨¹¤‹"›¿ªw“ç&]¾%“ܒɯÓòô,iì—©UÚj[¯Z¢y¦2¹½J~Kþþ.~[oêæ7Op:eÕößQ†xж:Ž(íÎiå|¶¾B·¡êz±R[`V×[í,—ØEXC‡ßþ˜ºÀ¹ÚêŒé7¥'~¢­†Y)m/§™‚šgNö×<ïž!í—«‘¸t%äw…´‡üŽá¨†ÝTÑtlÊLÿŒ‚Òrv¡b2©•¼é§¨ËãŽÐ²´ÜŒ­B¹‰ç&½ì%1Š%ô¬Qê£D4Z Ñ–Rø¹ÈqmÐB³†¼ä·„ñ](?Níþ´Œ~,pìH³\•Á£ Ì[©å›8Ž–ñÐ’ó®PÏ aÀ3º“¥n¥tÇ#»ÌvÇИ :Z‹%£>¢RñjZvÏ#¸I.¢T‚22ÞT{¬U%R¥yåâºM-•oÊ,Ó ¨¬oxð¢s&[·åÿ†¶TY`]•áÈSŒ(J¦Lm×(#Œ,èõ´YÙÕÀ³½H¬5›j!C ÇB¸¹gð •=jR®ó€IPuš9çcܳ,û˜)á'T,] ai8LíÖd>r÷b#>¢e#€p0tØŸ·¸–ù\ r½¿GÕ^ÕÓ”!–¢¢,囼iOe{dq©Ì“î·5³"^Eçà!ŽmCæÕØœ¶f3Œ>Åóic-ËâYÚ>N™—»ÊȯTÃ=/Òóš þ¼'T ?i¬×˜…Ó°,ü ñS˲ÊIf­«mÏŒ´º±(DŠc‚9Gñ)ìR„ì¹¹S9çµj0ã^DP‰[¹f0‘`Âè$ºîy„ÉÌ?‘ö·dôžùâ2$»Ÿý˜™§{ÄÈl>콸¢›û/Ee°8X›(~%9°iÂøy[>¯Ëçû¦/M€ÌY´ÿIßð_”]jÖ|×®ùXkÇj¹&™·6Ä”ZÉç‚®±õ›*¾°ƒ®¬>ôóùÏçHª…¿_´$(]ó ÙóØzsÒ}ídfk„p—™Wg¹°53Ÿ&Œ;bf§üne:Ÿ{³æe¦ç)㤇-ù@e¬\`Š›Êc¡ö|`hÄç*Â]¶,QøÓ”¼Šï³#ø"uõ÷—Ì·¯Mrí@ÆÞ¢Ä¬ÖÜÐóâé'Í=àyÛÄ“¿'“ ,€U”£}Ndå¨jÏ@EesÞRÚÓ½˜˜ï¡U´NÑÞSœÓG?­ t0àà¸bt΀Π²:NЉþS“\%æ½­ºSúK¼¡+§nT>‰9ñ!.Ë5ÐãÍ´D¯+=úf† ¯ÉÀWiäB©»Ô*¼…–n÷öV•†Tu4; ß=kl4W’… J0‡%`ªÀ£¹åð`6Œ€F€‘]Uc-÷‡òy³j¹AO ïB.šà}ÌãHpqSGî]’ îÅm@Â. ÿ¢ö¼œÈ¾°±Z‰3Œ,p³Jí`º¸3ÑŸ¦ja',1q+À3l-œQô£oÇUûJèÁÿE€ªH.îL Êë@ebãà ¾èõFâŒJ*ºÔ6 ò’@ïÃH;6Æiï•ìÊ786F>$^âJ¬t“`‹¿ –kSDìÇBº;9FÕjŽ@qk„„.<Þ_æÄüúàh¼Ù;:4勦OœÎë 1Mv Qã43‚ p\ŒŽú6 ®yÈÁT o² 4Î’º˜ÆàÌCwAȰáh’šÅ”ÏO |º ʤb0e«Z£äÓ“ë§Ç1e2Èá5;ˆ55ù¤¼ÄÒÐJ\¥ù"”áØKòÓ~`ti§cNf3N‰Ü b ¨I[Ô 6¼cÔæ×hä‹Pàýð¶êÑÁ €5ÞÞÜìÀT”tÀe6y¶$é" wIä„΄Ù;Ú¥u€ÒŒØþé ü= æì‡™†ߣ«È³­ª“ž‰‘äLµÌ»DVn\CxhÝ®-e#GâuÃh9bp¢//7²y ²sÀϵÂ{>åÖ–L”@t‘¯ÂîJîÞ¨ˆÍ‘jn˜i£rD½ õ½Eìì :åÔÒê\Â*°¶Ë~íZùD[½ˆk’Ÿ ƒð­¤ï©Pì^­"‰VfÌ À[ â(‹³¢œ“Ì+=𖃕“R»7“+ NÏD}‚¯ ƒñ«!®ºVìÄX6Y~ÏÕYŸ.¡í£Œ#+‹Üƒž¸OS4LNµCŸa/R¨bÆÜ¼GÑ`ïvüˆ­;MìÞh¦µØÁ±“FÕîhÏ<Ý>Nk•ËÒX8÷•3Ö\Â_ºæ8òÔ@R3ò>MÊ“&„~Ó 2#÷ãÚŸAX‚®©F€ Ú­âФ\­Ýˆ‹6už›êÏT€“bU´ý ä'o¬)¥¢1®“¤E Gˆ?Ç*3­Ú¢…ƒC#á,s–?H}ÀG4J*?b£Hi¾Š!"©»q¬{c \"íñ!pðu¬ÃÛÖaŠÐz ®Õ”¯Ó•S-¶…]ißE”»ÑD1 §Q¢}>~t2`È L¿‚Š®%Ë^ón“/·¹Ð‰*Û¨E*«­x¶ šI@ªÁT¡]ºRn»ä nä 5õlRbÀ`‘cŒÍzµê ècP¿$«Rv¯Ð€f7ï놻)“yÙ:F8š_¯ažw¯QZõáEÌy!¿øTtí†ÆzŽ’y“ ]Z³Y9m~vL XË’8Û)d¦ÎGN¨Eb˜UÔ :¹ÌÀ†™vU“Èqÿ6O·ˆ.` tFößtË]1DÄ<}ßíûzÕF€oHô€Ð¢å[œY2wß`+¹ëì'kR3ó+\g bõkDk~z":»²¸Ÿµ‹k‹…50ÚaªÖ=mdfcÖÂÚà›NU€zÁ—QTo;i¶<}ªEiíܹ[äeKÙá@‘ðò‚1ºAç†ö¾K1ínÚóâm‰Tð`C}‰*Vå˜E6rQ €®—;< C[)ö²]8Á9YÍXYÃ+ÖÁ ¾·kÕîqj®£¤šKŒ7ind"l5´7LVµCÌz™ÇÒ:þ±›yx™–¯õjÙ;RFûÃ#ñ€ü|–Sé\îܹ\•‘^—‚Ñ›PF{ÐÊà£QTG4%¯9´Ÿú—º"wð0.ƒ@Pü¥!š<ìNèü.͉7O×3Þ‘<£´âûT7'@‘ý¡> $-ódè+e+HîÏ·w»’Weî{ ½³²^Z L^ºG(­¶dkŽ.­µä²Ã)_‹Ú¯VYÅp‰èfL5|„í§b‡·Æ‚(ð×®ú"߇ÊIâ¿F6öq€(© ìWjªt`Ò¶4ÐìãÍ×5K†]ì·ÂqF_ Úƒ\˜ÌÝÙ1†Ó¥ð1ÄØ`!v86Œ‹”Ôa=`I*1&¿E5uW•2†¼^ܳ‡VÑ-[¢w¼âšéÒäõíÄ ¡¶ƒôzØÌAq¢x­9ÌùÁþ¥{@ÔêÆ86ž8 7VÃ8ØNo—œ•ðN\•i΃ÒuTx‚Ak¬€ÐÉnúQT'ñ¡!u¬ò»fÚ‹Eg0T*ƒ<6—5ùëIi€„jœ¥×„^\ G!·¨½ËÍ“ ]¹KËõ²ò²2ãV}‰Iò¡C cW£ú¿_A³s¬$É’Åç?Z·ìí®ðF ¹à‡ œÖþpßÛ@N ³§c^«Iâ(ú`[”K ÷¨Æw‹ )NÓd„Fg ôš`ç²Äyg9·ññÌ£5Æ´L\LCó±¿ZCܽ=H´­*-@sSâ,‹CÛGý÷²"Òâ}~·wÂLûPJ——í±Ë¥zˆ4‹5ÎŽ5ôHH.÷„É8#Å¥í¿Mz[ZIqß®<ôGKHB¡¼v2¶iX™S5¹FÕÏw©;¯«ëÞ§V»ý}ÊIâü¾ÚÖ'¿Ö¢~wæ¡s#E&ö—­·Øˆ@(R@´C„ð> ÊAþ äC¨è½“àÃ×íŒu,N88µòôÃŽXÀQGÒ“d|´.‹$b  ˜äf/m½r ¦«£SÂ_Ûڞ͓ªÖýKœÑ½“ïÈwBWI:v){Ë5-Á´)½Ý‰µ£P%8¦ !µL ¾LÞ×û‘Wº÷‹2xË/Ò„ã[/uÒ I½Z‹:³™§×÷C–qlôÊuúXpœ%ѹ³ø¤rT8ƒ„÷ë…3‰QåàëVVu‡ñ¶.Üj50+¨Y¿à³0òBãðÆÈƒÐ}B:í©‘+µNVº„d'Ó…JÉñ•Õ&þsOÏRæu8Š©FÝN×:»·—ôÝÇþÐïºJ»*¹ØÅ‹Ð‰ayÑægRß¶|[Ú1‰Šõ2Ç»x2Bík.i0X+žßöïØ,ÁÐ7pcYøë3YåðbæÊ½5ü¥iÐÇ›‰„à¾< ÀK"Ô?]¹H‰ÌkÔÖ—V–> stream xœíËn$7înìGô±L+¢Þ:î É.™ø–ìÁc=Fâ±c{äï—”TU”JÕv÷tÛ`‘C42‹¢ø)õ/+)`%é¿òÿ‹Û“/ßúÕõã‰\]Ÿüré«ò¿‹ÛÕßÎ@Ã*Šè”3«³«“ü%¬@;a¥^y¥…ôzuv{òÃúûSD­ƒ±~ý÷4Œ.¨õ·ÓìYàëqö?gÿ>ùçÙÉw'FH»ú éúê\°¸­¤„·«Ûðà„ ãÌÏ'ßïJ½ᬯ©¿žˆ{˜ˆ;Ÿfï§á‡îöØg—Óð= ­íôË·PQg° "Rxv‰ô<œn@HgcD)Œ“^ºõS[¥^¢±õÚhààó´ ¸úãéFÑ.%¬e:©Ö7¡µõʯ¯hÚ¡Âý!yŸ¿´>®ïp Fko"_ñ’‰e |INà5áF9rÌ#Iv;IÕ’àæ$O³÷Œºy+^© ]†v#¿¢ ëw8 ª=ññÇ‚ <}(…÷Fû0È%h”ù¿˜£±ø¯ê[>¾Ê< 0áL›ø™Í—±VÞ­Ÿ`HÁ6! ‡û[m@ kdÅâT0¦ßâP"/êÇ=cÍ'6æÒà|¸d0oN7ÚQxL\ä—\‹~ 4bïg¦,…!h4µÄéÆJ@Iºõ¿¸•FÓ:„06ÄrYßÔȉ”bµ&#œ/ÿ”¡Éª9çÐIzœØÄ/ÀÅm=€gïÐø®ˆVl™wh\T~œ|Íõ4ûÔ…}·Õ¡wRðܛ‰9=âœÐÊE;@ß7Þ/&ânM\Ò8Š(@M^0áå4,i`M=Æ(Ô§áÃ4¼™†OÓð|ÚÞ»q¶GýFÅ€ŽËe³´¶˜åùÌïk†îÈ(œ,vަê’Ã"…SYpŽ«¬N×ï.ýÝzXÿF#ˆÞT ûë©òø½ó­?Wh©©½gBLùL‡³h]ûrGj¥}_!.n™±ÛÏ s„ŒÜ”¹¯ü=“o•nâqP£¹kœù᥽äÖZ ¬ÿÂv¼DzFcƒ²¶ñ¶¤b Õß©ÑþÞÍÝw¢÷)ïÔÉ®âÑ;…¥Z²8!ª“н%ÑÃòö „«£zv™.ŸüÞfØK¶ã·YbGúPmêÃDG.[ŒÐPùfXþÀ‘p.¡ÏŸ7'›”EL"Ì® ®5=yƒ™ú¢l&o5ähÊ„ü½ï ÅÊqÇä¶`ýMb‡"ˆ»S ByÔÒßV¡Å¡`6¤½1bt,*e 8=¨TÆýë©–Â5,C ´öSdbÒ´øCBÎ8Дģ•ŒÙq:k ©}‰*ƒDõ¿L)²CæAµ&¹aó'ä×¹w¦‚æ }š'qè £RKóúèMKúeWF÷|7Pb#Õê웓³/~Xÿ•pÄè´†«%ª¥SMV«¥B\[súPF_r?#扉ÞöüCgn€D‘ZG¿-çÖÒˆ7&fËÓèúÛ 9ÿcÞƒê°p_b€ŒK„Ñ×—‘n32ÄWûcžU˜v“¦@Ê9&MßO F{@Íû¬ ðu•Œ¤ªV„Õ+T$Ú žJÑK¢lÍ8³û©1Übð"˜r*ý¶ÉŸØñ2“Ü&XyxÓä„yx}º-«2¨ÆÌjßQ˜È¸šp·Ø9£&½+ŸŽ‚U(°ŠX.÷”VÊ£CÁƒO gáÇáŸl“›Õ!g\ŸÛh ÐÑ„¥“;·À‹ zf;£•©¶žMcØPÊmõ‚Þl0µYê6lá–|…Äбt´ca­cýÅßTÖõÑv¢41‰½¤¥˜”VÆ"³Œ?vi×uI°¨<ûäM¨ ‚’užB-TQ¶9O"¶'²0:ågOÖvJ;Ëe Â@,ÛZqI*Ü3}¸¤ñô–LÓìK亂™ÓìSàÃ4{5 ¯[¤YV¦í·Äîöc쌜Öµ~#¦ñ•c¹lˆÈß}šf§º2f‰=ßuß6#˜Á4á±;[9·L°²Á_LCoÑ;g|ë6®º{f¬0]=UÈ=Õ6ß2.?MøvfÜ6齌qƒeÆiõÆí¢z;3®”#sé§ïžº+]w9† ··óïÈ‘õ&Õv¹Çœå^`Ô 1Õv: ø)ŠèZcZStigP9×ÇãgŒ.×Õ´ ª„‹'eéðÐ7W0,‡+©fnÝ‚ÁS‚…DŸŸ)¥0QêWóö˜»©às½ÃçúQçCMR8L'‘Ö2±OG=ø„@8žÏô[ózÝL¿aÐBõ޵ìкG-Ñ%‚¥~9CQÛzšŽôB+ ˆÀë „B¹nqi@’VA…¦§‰×šöq·F¶½ì“çÏļŽuE³˜äè­-šDº×¥u1«oå.¨K=Ð ªž·•¯ZR¹ÈcÐäë‹<ÃÌþyÃt‘gÛœ4û¾ Ð?>S2µœÑÇ/™R³ `,ñÙÀ5¶®X%ˆzÛ êŒгª[Yå]Âatàźn™]R‡mô»aæ×žzŸ½ ý/¦m÷kNTª·ÔdÃ=`ž¿z›d¥TÇ"jŸX´c‘ꃂ¢¶™£æ„r¹!`ˆÍõÇ 9Ž~Üí_ö(‘ Ä¥Že‹:H…Ba¶8Ììo‹Ôÿ°[ë0—ê×Ðèä®âY/´ é*¥©{tWyš.Fåž]Y’¿»]·ó A-TôßdzñÊÄá¢g:5A ñ†ê#òU‹§¹ñC $’4tdÝká]ÖªÊÜÏ•³ÁGÜ¡ÊÙjœ~r¶¶Túò¬œ=Ìì_ÎÖéºyår6 Hìæ[tŸN;ŽãÿEî-¤\äÆã]ÇeEîafÿ"7±”q¯\äÞ[{JEð­öíR³– L;c¨ç½¿ÀºLS lçÚ7ª¦4©|ª$9õ£×¾µkk߇¼!£@n©`#Jb³Ö”qŽ3{°sNq´"6êTˆƒ±)h<@aªÝ:_¿1؈GŽ×6Rf>ÃF|º+ÁŸÌt?™äóf§3yl8¾Í\vo1P]Í»ÜbÐêÏÔbh½úÌ%}✯½:e¤²ÆCÒ¦7Z°T?Ous´ñˆN«¾Ïû‡o8†½P_Ê0n}£KÌ ‡? Ç*ß½ìòöáØ!û2 Ì‹û2=ß9?+:!èÜ—¡{–¾ ¨ÏëË8§â­‘Þ~­¦{¸©/ƒqÆ™ý3:c ¦Æëöetd­éZv·¬õ™ýzdw~>ó’—…»¶©Äjè Š…êK} ~3tŒ¦ÞÑO˜êÂ0+¬Þ]JcÕeÖıt¼û±}g“2-°ôŽ¡M„çO[éþîüÎhbÝ (m]ÝÈ,($Œãà¼ß¡QŠ:b8X‚È6µºÝåU¢;ô!0Õð“·ÙåÅúoPêÒ|Źγ£™ ]çÍJé·Þ)F6åŽRÎËÛçZX¹:ÌïåweÊú’(2¥fT– ¹­Ô–•”Å-#nrn¨sˆß6Ée«Gh[ (z¤@ÙZÎx™€wfªÁN+-À};ÛD‘n?‘:¿jÅßµ:A·åç/©“œ/ókgÕ¢àæÊRz‰Õ£òa±¾áψsë…^HçùûÌ;?QØÙˤ´‰íºOºãüþá–³—ÞGèÞ=> stream xœå=Ér\¹‘sfø#êXl‹o°/>Úã°=ᘻysû@‰¥°D©IµÚý÷“™xKb{õªX GÛ¡ƒ@Hä†Üþ°ƒÜ ü7þÿæãÅÿÕïîŸ.Äîþ⇠I¿Üÿ½ù¸ûí5 Pq‡è”3»ë·éK¹“Ò 6¸Wz^ï®?^ümÿ×Ë+1x¥¢tû»K1h­„•û/Ø-½´:îĶ NZ¿Ķv!ÈýÃå•fpÊï¿^:œR¹ý }‚‹zÿ¦ŽV ŸÍÁ–yÂn­úï×ÿ k™AméÕî !‡Ov×·òw𽄥aªßQ3º öß.½×Íœ{q©ß__üå Âî~TþáBº`a ;/œŒÞ}¼€Ý»Á„¹çÃÅw]„`O÷rp–æ¬Iø¾_`{\`»Yz?/ÍwÍݱÏn—&"U%µæØö?-ÍKóóÒüq™áK1/5d¶Ó¨¥c€Ýe€;ä œ¾CÊ:{OÌd¬ˆB'F°^-ùð‡Ôm, La´´ {M ’·û÷ÄyÚzà··i„wùÜïØ$wéË íÜhíMä+Þ2@8°l_’x?Îí}¶ä ­ãæ ¨`ö¯/¯T©³![„·ÒhUïöaBTÐ@7lø›z ?eßòöÛ´‰ —9iÏXÿØÖÊ»ýÏˤø•øu4 ƒj°ÖøDiÃ/r–\(¬µ æGÖæãx¸ec^N@KI1a•fç4€ÑF˜A $6Õ`|>ßF½!ÀÅ9†Ë+gR.ìÿDí0š("4ŒÑ]özŸOŽ X²5àã,ð ÓÝþ#Î<r³Y8Uù—„, òbW¥@Tö…¤aDÿMs›¿¹n2ÊY`3ä.åP™èIL˜„ÃsÿФ¼™¶Gòñ‰X÷?aK‚~ÊvñõR W2´öp£O°$F·2” 8-ãå8!2L¨a÷È6ɺoˆº&Љ)à‡2ᨱf`â‘”Jªõl4ç6.Î?'˜à>§¶rÑ!½•ªèéõžäͰ˜ý¯Øž{ Ø ÊÚR!hŠÈ“J-õ Aù%íO¿&3§‰0(ÛAÍC"¸³ÝM#BÌF<%6·ÈÔrbó¶˜Ü% ´Ó“x¼ƒ%sÚ¡ËOŠ÷L{ß/£ù$|ȯ:Ë ÿ÷"¼Ìö2,“$[ 73¯”hËí@’à7 P¸œUßÀ B¹tËö=w·LCã´™0z>“P£vp,€Juho¦¹ç;0xz˜Œ}œ!H½•!HÍ•!¸ÿóÒ|¿4ŸZŸ5Ѩ ´êÈ áç$Á˜ÄÅc÷§…Q>³îщQead Î…² í@g x¿àÿaÙHUÀÊœ“Ó"°ƒ;ý[AN‹àƒ˜8÷œÀið¡µ4çàœ=Èi‰\¿hNÊ€tI¿ÿ~¿ŒxS‘?S0âÚÁi7·ÜÆ·Ë ×ÍÌØˆ«á³™W«‡ð Ú¨˜2Òþ¡I£iÓ>AÕò¥ÐÑ#sxEîØÜ¼Yšo—æç¥ù¥¤=õ¾š›dQ9p{•÷…ëpF$[0 ¬ÛɾúìÚjÀœŸ{NÀ2P)¦ðu Ë+’ ¾k`Ë8ïɈcÈè×o•’ ·Kóît2€s) ¨"ƒ™Îå ƒ7X““aìy<:Vã‘ù…æ˜TË• e,Éï—æS¯Ô|Xš¯Æâì¼hà<†Å±çXtjxЮb‘´ƒÒÈ–Ö€vPê(„²&S@¯Dh©¹™ü¤ š[¼ˆæÌd¦¹ÇŽÓ5·ûxŠ~Ç·‘kðMsŸLs·©ÐVâUÆ÷—9q”Qà)¢æ;^ŸC¢"õ~ix·ô¾]š÷¥Î¤^¶ëv ôSùÙ6]Üf«ÍƒòGŽyf•$KCå–Æm1qšMñzi~à³û,Éׄ½4‚ªÞÌÚ¶Àß,M úÈM¶&GiI0;€KlcÂWäõJðdqü—«,Á£VY£G#lR2 aZmAØFFÜŠ0.}³BüóÅõ7ëØ_Ê•F뢅±ÇÖn’OÎ÷ªå@ÚG¯šV#{)#¬ &‚Eé[~•‹ƒ~šãCŸŽ=’¥‡\—†Í/ ]àW‚G§IV8OEaìQ(=öP“]‚w’ŸÉÿ."›™-¥ËNÌ#Eö\rzå­ƒ‰|²’3ÞU¼E:àÓ€‘mp.ÿC<Ál jct<ó˃,<ÓÆ| ‹ÛŒáu3Ÿ8'|Áò6†)ÚnJ€¤ûF4#ëM¹P¬œ…óœ€yô‘˜ÖU·+)ƹ甸dÑ ÚÄ#„¥Týòâ6¹^-ØÔOÐsZˆÉYH¾ˆýÏaê÷,ð§µ(zîã±ù-Ù˧4»·þf ä{å*xÊãzþàíI °L­¤T‰–’ýYöì–EîÛ‰¬,ÐÏ÷L–Ïý6-aÑÿt´º0ÀÅÑÚÈOÓÖÆmz)ü˜0Vbtc)žúz‡ù¼2ŸQÓû""èë Í8øyÁ2›R/H¤œL›sÂ|6 g1Î3‚‚Šâ.-ä=åú¦¶Éˆ„¶ëÛÉà Êökxx©EïЫ°¦Ê¢ºI¦ø§Üô©èT Ôµ `n#̾¬²‚nóÂ^0ÂAyS3xYÄ4ÕëhSï |0?q€4Tw¤5¸B!3ùgYùÄÂÛ3غ0¼p>ÀCex=fuégõFå¾Êj!VqôOX'SdJ¦ÀkóÈúÍ2¦ÅôÖ¢3˜GyÈUi»ïŒ»™oüúo°R@ÔEY «NeeDœCžŒkÖdˆt.>Ì ×Щ¬Lè^=çcš SÚ±Ðað×¹:¨S]×ð`ˆ<= |Js[Q[„¸pØÿÑ\’·?§ÁZºR1P·j–?ΆV$9èÜÔêòOC‚ݰh&¿„’™Á™à œœ‚¯î7éÒ”ÔXÿ+Ja|ïj«õ|nt"­!¿ "¬”™ÁpÀ}ûðL¼*M®¹Iõ*lвì‡4uÔ…-FR- Â&[ׯ*ÔWi ç+ž¥©õZñ_ÓrqPÒåŠì< Ïæá m­f½É v0v f‚²²¬Ãž©ü–Ä·8*§´%ìXI ŒRNÒü ‡?’‚'@Q!XJŠM5•/QrŒs‹øòN<­Sè‰-G„Cª]ž@=:‹Á½$ö }ƒEOÉTší°¯uäN¤uñœÚ?q¨o©xúô5Ûñ-k´ð£7>›[MµÙY8àÅA@÷”.]XcǺ٠ËjÂAÈo[ð=õ˜í}F|î³&¨T3›z6XUÝÄy6q[€ÓeR ¾Á©pÆg²¢9·ï2zÕå¾u}âÊ¢öóIDŒ*+R¿‹·Áòj9!*™§%9Ú0é4ob@[ kL±%€¡ÐH4X4Xt%Lß6IÄun>m¼Î;µ7 PÍ8G z6ͨ¢ë¢ÍÑ\ÏÆ—9WTÄŠ5ßuózµx²: f¼d×QNJ_Ÿ¶3%õ”zñÞÆZèp‚K8ܽH*ï'ÏFY¸;5¨´‚Ø$^QªàJ¶4a —ƒ s¡ç$ߦ×€¿:\xuŒÐ剋´Kl¹M…¦0øæ+wSØ•ZÅ“9Bé’#hÑÌ®çi-/\f>ð›†ü^Nl•)ô-öºuÍJêžfåâÒñ*è¦J oBjÕ=nÚÂ_òªÊòÈ@¨¸õÓÆžøJö›s’·#^µêHcu®¿ßMô˜/‘m߉Æ6ŽSâù8ºöÙ‹/¿ZÆR?·Nº(¥p ‹9¿ÍÝ£lZ«€w.›o2S+³…”²Ù,œ¡¸,1æz—°-á´ùý)íÒÄ^¸gÍŽÀsTý{dm‹Ï¸á|-®Éᢔ[~jରí;ÊÜŒù4ÞÑ“îØ8U²^‹õÅà*?ð€¸¶Ìkn+EJ(®ò˜ ø‰QÛØ…À™°f׊æáh u¦Éßâo µ®Å"åMê^êk|ÁÔ2±¼v޽®KÏgÄ07XœÒÇæ<šn4+)â {çf~‡f?íÈy©sÒ<%0¢òe4™ +’dÅI‘P–¯ÓKo~Àá‘.ÜkõóàXxøðĨ¶‹à)[ÔHŠ&Úµ Š*'®2TÇõrCõÀ£ e~u?2E4ÛÓ•¼o ¬Ÿ£0nÊ×Pa0)^ÖÙaÌñΛ¢p?÷_3€«G3À±êxaÜJÍÊ¿qa>Š1¡…Û:øØM@|eZc‹½12—-T÷Ü(Tq"tR*Bzöý2b%i&x\°ze=¶8üqm2K»[çsó5SØËÄSF¿Ý^6£ðòOƒºí;¨°¥ô¨ÇäÆ\á†ß-Æy“Žèɫ֣㱃‹+ùŒàL…ä6›W&Ñe«„€fæZ´xCà;-¶_%z?RR—ÜöµžCÆ!z-%JMÀLæxâÆè8…sëlNKgθôv¦öjˆR6¤óùumÆë¡x&(+ô%c~‚ÚB°¥*X†–[-Ÿš¦h>E†ÉXçÿõn˜Õ[©_Žqªc@m‰XõÓ¬VxRhÒÏÅ .Ä5Ú5BÉÿ˜ù“ÙD‡2I¼›ËJ¹I žÌÁKi“É€ù—Òåë¡ëŸ€#+glCŽ~žµ`šk{ºã{x…4´r«Á…žG´¥‚>áÐÊÀâ…kцíF4 ‘#¤ÉÕh6¡M©.Ãeq‡uëKZÝʼnúz‰¯ò`6†Q¯ÇÕlÏCŒx0¥µ”bæ`ìË‚‡M#hËÛnàƒ3z\’eª„ˆ¦Œs”\PEWê¨y‚/9#vÌý°8™É’=i•îÄæJ?g¬[0Æ“N¡ZÉÕCÔJŒÔGVãÙ‘Œfæb¥Ü'V"l2Ð6C8%–²çaiK·ªúÝ#cÎ재痰èp:öœðÜ6š»GBaE wû³<1¾ÄÚì‰ñÙ‰Ô>dñ·ù¨c×Ùͳr˜ûµð¹Ë‹Ÿi5ïJØð>ѸÜ•°É ¶YYʅ번 ^%n^`¢è¨ñAÀÕjƒÇ”ŠüúΙ4‘ŽŠN·sV”¼-j*` V¬×TÀ‡vy‹µÌÝÖQf:cdf[^-¤Ü F™k2®e[q$™…m§¥.S˜–vð`ä5Α] ¤ÁX}{H7x‡º'æºaS\è¤j •sUCDn_j"_7åÁv´n¨/4H5«"rB¹ª|pêÖö rƒ÷³³öµ©ÆÏŠ\ë·#7i^¹…â X{[è]0Mó9ç6¹|©yµ¢ƒµ«¸rÕËíÞ¥¿¤!ðõ].À¬âmŒeÀÑj¡>¥'r{Õz‡_d­#Õã¬,#ˆ5#è±ÎNajQã3Óc-<¹Ãçnø_UZyÐh,ãWÛoõIEomž(£à'½ª$,žy; zePôT›fzî9áY%¼fÄý§¤zÆ,¦ÔbÌvÎóï™®'Óçü<2¦7ý[·\v“t¹h¦²“`±¢µ(CìÆüf陌.ãZfBºñDyy¾ ÃøÖá;jÕ=M@'FuË” xÒ€¢N2½ˆÏÐÆUFlQÊnâ?ÊË·Úwฒj1½%¼–0>áÖï­`Ð@»¬Ô-Oóx V­Òžù1aº/&×÷:×aiőިó:+ŽÁs€pE¬ùÜA4`¬U·; jÛ4ü—!™uwò:x’`Ê3¹§ä{ðióQç¼ä4ÝÝ1øž` =7‚įæ×qˆ´î@ 11k§>lzÃ?¬±­ãª ëôœ½Ûa‡ý:2ßsÊVŸ¿·ôü Dgσ—»ïô7 BVµÅ »[à\áýfȱª-*=²BÿùTçîÁâlÞê8ߎ§´Œ2½?A€Ríâ dh'%¾Œpª£cëÏ,܃EEH§¿D ‹êCÚ€î>ÞϬK#×o¤zˆë í#X„±S4Yp’¦0²ÛXÙ¬ñÏãH¬Oœ4» ìfÜô'²€Q©]Ë\±0—ŠÇô©U–eZâç {³Nw¡¼P”yýsuwó%I¹ÏsBM—£òé\>ÿÖ€]}Þkô„(žô û™R21i9˜k͹1Z‡ÖaX*£%®‚ic×N±p.(² tû¶RÁÓÒ3·N AƸDy[¦>³ï™IÎÆ2‡{qÙ7ßðÜø'Qfò´/¯^JF̵jEÏöìMuï¦ô &Au­e×ÕLÆnäþåâÿͰÊÃendstream endobj 676 0 obj 5381 endobj 680 0 obj <> stream xœíÉr\·ñ>å˜ãP¥AÐØqLW¬”*.ÛÌÉÎÒ”Ê\$’¶ã|}ºñ4ðð†œáдT.ÂxFï 0—RÀRÒý¿o/ùÎ/Ïory¾ø¸€ô?—ý?o/—;Æ*.£ˆN9³<>[t_ÂÀ ÜÒ+-¤×ËãËÅ«ïŽÖRx¥"¸Õé‘Z+iauGÓàÁê¸ú™Æ.8°~uCcíB€ÕÕÑZ#œò«_ŽTnu’¾ ÁE½ºH £UÒ0Ø6·4m¢• ÿsüOÄ\C9ŽÁ«åš0WF-7ˆò÷ø=àÖêË4Œ.¨Õ7yö¸¹àëq–¶úêxñíÂi—¿")ÿ±,aé¥ó¸×òr§w„qæbñý,Á+´‚{Î&˜ÂšØü<#w“‘;ɳòð]óxì³MUÁ(К/`ç¿ÎÃË<ü‡?gwÜnø:ßçám볎›P’´°V#iQ”@HgcÄ=H œDBu’g¬ŒRwRc½6øò«nÚ†´ûZ{-‚÷+Ù ­wˆ‰©¶…óŒ¦Ðª„ýŽ9í–때ƿ"ßqÃáȲ%|KŽàyÆŠoy’öqù8÷æh­ªhÐÅ&ýØâ_Iépµ³ªÓïöa TÐÈ„·ìÓ·3`ø·|¼N‡0ZúH\ƒ £V¬A¡£('Îu«¤SãÎéLŒ|üžKE „©I %‚P’$2CäÐ9ó8y6lÍKÜÉâ_#ô+ƽ̀‹^ ½P²@ŽyOèP¬Gk##îcV¯Òr+¦} Öó’ö¾N¨ ZÅž ñ þ3{ü› J§-ÂùË?$Z{Ñ¢lÑ ‚³O $`Ä,¯a0 'Í]ú!áäÄ(gI¦Æ­!iÞ‚T,NL—a8^Ò”ë´ÀÚ¸ú•F€–ª8Æ/GÈM´l¡u8D'©Èp„¤"ÖBw’RÕÓ6z€Úûdq¤BOéF­÷ ¥·Ñ„¤óÿ¡Ð)±ŒY©@•´g«j…ã·'…$/Ù­%ˆýÊ›ØÂaÏYø9Åq1«/¶[ÕÞÚÚh¢Id®ÍJÂò®;Ÿ [Õ`D’Óô¦cLDÎÎæªc8ŠàÜ¡û!+n{í0ÂÆ{´ã´CB;=èW/Û´ˆ™Ã ]é3ú“h…žé<¯æ@ø’/f\Ì ÿ”Î"=gH”ÑéZùH!àr­0Üò¡W p4Z>ÁâHÈÓÐ^aÆéVDiHYÍ@ÑÃE’Œ:,ZÜÂÇ€…ãÌácð¤ôÁ Œí=¦ÙIô˜†»D_åá›±_ðU¬õ¨’Â÷ bˆa zN~ëä8ÓÉ]?}YûM÷Ù o/½=ËïÉ"”í°Ðu Æ‹_2ɮ룥Y4#˜ræ€b¢$¦Ú/QqÑ‘˜(©½ðaœÙ]LH0[.&5¿O2“o1AZR´úq•gßV¹I÷ªÊ,+†Vß7³›o2„ãæ‚¯ QMÜÀ¨ ¯cÜИíÏ „ b,¹ñ¸Ñ-ë TEŽ_Où‰9<ôjŸ†gyø!ïjv¥Ù—ã00Žrkï«æ€T†hÈb„CiQY¡0€gö ²RÂuXÛ‘y‹ôv(Ÿ609e²wÞ‹,Ȥ²È¡A7yxº~<*ÿTáq_Ó3â6Û–ZaºÙ»æ‚wyö,'r”fOòl»ø09öÃ(Ëfk»0Ô ÈèäÀ†aSíÜ-þ9ϾÉËæv*|&X¾­ð™œ÷M®z©Pº@øE"S{­µ÷[á³æ™;˜à”Z‹[Pp\)mM¸I]ggÂMÌþ΄4«#܃趋¸ÝK·JË&1 G™R“hƒ¿§°#¢‡ˆ3õÊ.Ö=…ãeQ˜ðà…WTùëô!F8íúÙP E% ôáÙa tôœ…òÇfHd WGä2Æð&Œ¶ÈØC´A(5ÎìG+B³qso ü<÷{5çа+cÆDn®~ÆëT<ÅâÙÔ{–õ‰æšªÌ¾€>Scåã[úRcÀ¶å¿^ZÒ>ÏMhkpT)épMùµˆ±‡R~s{I%G7ÔÜcn^#¸qf˜ƒõ˜ 0>P¢Ù­mÇÑ,b~•‡Wyø>ï*__*½øh.ÄÑ:Pk/øÕ_é»è$¬æÅÆ)B×@þ9ôíSmâ¢ÚW=T .5™ôóo§¦“ÊÐwÔvÐB[;Wìï1FÑVu#ÃH2i¥…ÎJÖOª?yxñTÖF*z¯­P–Ê 6r`œÙ£ ‚ A%˜B+ýuÅIkés€2ƒaÌ´ý95uCeºéöy˜Pyr’ç ×ü¢öM÷eôó1@»Ö”Œ£1,~§lèâ‚eRcŒ5x†GH B@KíZRSVma©ý»Ââ¤nC4ºÊËötô¯šŽ~uøÄç{”¯ÌˆÔõ¢24Ž@«…­Rñt^<꾦˜Aá­ù§Lø¹Äïh$¼l¬úJ{ÑÃkvŠï;âM¬‡4«”DX‡¹Y«ûSóÉNóp  X£ –4}Óêõlžð€k3åS‚>GmÖÑyÃvº;¶}Âi‡¡ì®µvŸ»¦Àýl•ŒëïkQPúƒµŽì8ý­#£ æ<¼u4Ììß:BBívñè@¾ðU²ªêgÑ:šä_¹ClS‡ìAD'ÆÞQ¡Jå ¿Mgö)§tM ¦ú9ª)?f¿ÈØ”þgnhƒŠæÂ#¸¡é Ž+¹ñý"¦ëé…úÂË!ûEFaL¶Ôwò©_tAÎŽ3{P<šØÅ3ö‹˜‚ìÜ/ªø€!/´OÎk@(ÍùÐÏ<‚Ô%Uþ•±`-žË^®•&zZƒr­ŠöÄ„9‰F—YèÎ; ÷Òs¼ëøô4`+¹îgAOd†±O@Ðfqe‚>¥€ªˆgNÐ~æÅà=@Ü ÌIMšm‰H?}Îç8Aû™G(„ÚCB'þ‹YÞD¤óO@B¥¦â'h?ó‚Òµ¹‡„²»ý“^}í“î%èäf.!úÏçCÛÛÿy‡aw¨; Æÿy‡á¡tëÕëÅñ‹f$ô®¹Óy“`[Jؘ'òˆ Ç vÚMJ3T§œÄ¼€*iTä±:(?sõ³ó±*¹…”Šn˜­1JwÀËêØR¾™#%%3àBåþ¤h³N³;EÇÙ'FQG7ÒÇÛ1[BºùŸš§{Ó¤lE- ÜëvÁ'F­ÝåoKL×ð¼:ö¾=8•Ïž¢[‚ºÉÿ06rí-:K9°¶=º)N]’ÿó¸Ï‡=â>UÕ¡Óœh ÜW*tRåÀûqfŸ4=·J01§t÷w'ê¨îºÕELªBvkå+QŒÂƒž¼ÝvËl¾i]Öy’gÍÊxãïÐã¥}’ŒÏ£ÙeAþF­»)®¼õPõB‰j±Âõº§T0Ãå-0ü‰iKçÖ ñ{_;ïë¦ ·{ýjcŸÍuõéŠÊWwÍæ‚³ª ¤*4n rE+P¹ ÐÃyºî¶^"¡%!š¢Ë<öÚùæ“n­Ü"°åÓgB)HØòî‘ÀIÛnós±œ{ƽé`@E°ën:ÊØ¢éÐ66Æ ÌXìAvæ®X¼ì)í Ž6oó®|ãbYzáÿ‘­áêWþ˜@êè;ªDùA á»õ º†8rƒtXQ9\ßw“j"E£Tª– LKø§IÐe'rǼã†Y…öoTþ1/ÏO¾»Ÿ1@ö UÞôtÅ{®Š£®4ƒ&­r÷üÚAçSu+”m¸Snæ c…ÒñÌü„Gõ ,ô%*÷ÓÄc‰–³>æ®)sÄ«‹X‰¶Þ“f5zq¥ò`(o°%ƒ9ªKõü`Îø90ãxÓêå¿õ+šâ&óo¼ÌúÒBŽ"Ÿ3-ÖÂk_Yß¡úxäRØ¢ÁUÕ·9¶œÔ²ÒìEþTͺ?s³ÕR–Õ—YpÚŒ Ñæ4jÜdÒé«;?[j³¸Qä¬Õ97U°íŒÉ$Ä ¤Ô2æ„åHAaBù²å¬ ½´Û‚óQùé÷T4-­·…Óo‡Â¬\³HžxP³Ñt²ûU”·í=“Gê§eÌçáëLÜ×[i‡QY„ñ™“(Åo º€ ›Šh¾c¯é¡òÐX§ØéÛÅÿ˜}Ž!endstream endobj 681 0 obj 3537 endobj 685 0 obj <> stream xœí\Ys·~gåGìãÒÑNp¯Iìå8‡™Jª’<È¢D«,RŠùõù˜40˜!—\ZNUJB˜ÆÑ×ׯþ{'¹ôoüÿÙõÙ/þâwWïÎÄîêìßg2ýq7þ÷ìz÷Ë Ðr‡è”3»‹gùK¹“Ú VèWz^ï.®Ïþ±sÒ:ë÷ÏS3º öoKïui¾/ž–Þ¯ææ¿.~Ée5¹ƒÕ6b—˜îåùA Z[¯üþÝùAG38@ÝÆŠ(ôþkj[o¦yNCô`´Ù¿Æ4Fko"Vwƒp6Æýe¬–4CœðÂñ!|ÊFûj¤m-á Â`ƒ kD®Ï1@¹ÿÀ(ðU?-ËãÝ|r¶ƒšÛ Êþ!›oljk0Såìþ‡ó «¼Û?9?,}‘ÏSI:Y1xF…jÿa›cÍ|k„&8pubÛ·…ó­”%µæ¢qSš_µEÍž”@2TršîIYsomnZ7Î" ©–ãâRómi¾,Í÷¥ù´¬þ«¹÷î"¬‰Û"Ì¥Ò⤉øAK18cw ^'—zqs®ü`¤18vjiï{bi¼Ÿ!!늢íé ¾¬ëh]ñ¤>’®„!zs]‘f1,”ÅAú“hK”8ó“U蘭F?ëNøª,î›Òû¦4ßßuq¤.N­«‹4D{C]’?KZÐ#ã¤*"šèšâj9êˆ%d#)ŸòÊ:*Ÿµ£òñ_CZœ¬äbÚ;U8Q©Å̃/‹CüU9©?–Þ‹î€ßVÎóÓ‹³?ŸATíî;ø÷ßX¹Aû‹AÞî®ÑcüàÃÜóêìËcQì•D§ìUF_”Å}(‹»že¢ÇgEl3Ÿ×\x­ìÆA?…݇^%4X=1š …Eý^åÑ£™²sæ>ËS?Èû9ÅlB•K&Ô8  ·à1ßÄ8Š–açV,™6)Èc¬YA" dll õ¢M2=cv R‡é¬•‘þÀôâYßÑxÚ•W¦Âæ; N‘¸+0d„ÒYÛä Ó›>Mº6.Ñ鈉ÆÅ~ÃÈqWô¤|×Sƒ°_&Œjh|– :Ÿ¶ö1õ^=Š:/å 5"@"í¦ljò87„¯HÑü]Ë€+ªFdf:U±’ ʸ|õöò±!;r’&çºWË|-'˜(D9ÉIÂ?äDÚQN¨õÍø•·}Ãä‡ÃM^«Ä„k€äEêCTX‰ ø²ŸmèŽQ¼ç!7L<¨^*>âÅ9É—ò´£#sà”;0bƒ ÅР޴þéÛÛb´÷¥¹€©÷í¦bhÀ5fKþs"¼Œ´n/ËÑâ$´€ëð¡aÕÌA&‘½Ía–è"ó<‘÷—aÛêBÛôÒÝTÌ'Ø×vEhvÛ¨h‡ŽÕv…°.À4¥¿°›èù°i–¦…rÍâÃÙª×< ÎuŸíršÈºÆµÑ Ý €ò&B®ÌÓ¿aÇtµ:ãFƒñ¥¨t’ fÓ$Ô'¢œ0¨o`ä¶&¹4p¿ "lÖ”ŽöDX=¸¯(n×úV+ND ç€^ìÖ˶⌱´uÀojKiˆ®ŒÄ–¡"Òà¾)¶ 1ç+]ÇhV¦Æž2µ"r¾éýýªPzž9¦f­œø8y“ntg G õÓ ·P?[®‹î€ßVÜÈP_À)º¸sNX¨À÷FJõMÇÃ{D"äì3º¿jE¢ä?r“eP¾.M¶#öÙå-Ù–ž¨Y…Å«ÚàáÈõºÕZò…>º&Qò]Bà” àŠÚÄ c”çD‘'dÈ!­¡5{¸‘–EÖûPz6X-º“á·µOÕè0lÚŒp±ñºZA}Cú> ¿ˆE’ængÅwo§dÒ—ÍÞ±n­tk q"ºï fó@ªtå­ø&–&À©ÑˆhWWÇcÁ™Ù¦^^m6ÎÌVí»'Cs‚u„}ãÝ–³›Þ"9ŽYÄ?cή#à 3^²1œÌPV‡i7x8kdÈ›º(Áusø£7ëæ3èØ}<}>C†`‡hwNKJN§$†Ä)º¹ç>I 9øL‚mnæÞm#Ëf}Ýî©u®—]LÊü®ë}_öÜsÏ$zša6‰ €0‘åpmMðojéSÑ`’:©ÉtI}Á]f*¨³NsP¯Xd§pÓ?ëcÈ¡¦ÑNW¶/ŠoíëÌ,ÔÃZQµÙ½4©-œ ËÖT5 óMÜ‚r=m21“ÎfÔ ÙÔA5¨“ïoLp:½p,JÙ[2Ú V¼x:…í€Q;ÕœƒÆ*áäàôÜs¼Æ‚ }¢ &kì†ê-bÀ·]%cªwµ©oÆÎÛ&V¼PIÃæ©¸•§ Q¨•ìÅï5Óì‘_ö!óy%pUn|b-0Ïìÿ–ˆè(LDZäÞäÙu솬sŠ®”^‰ß¸÷ë'ó›[€2üj&8F~–n Éw7.Rá~WÆ9{÷Ç„aMÜâ¶Û{·^çnéš$Z‹ÒFÖò@†Ÿ Íè±)%¨LµÎ5ðKH4ø!lä)o»3aXX£SIZRÖ¾œÏø‘¥Tçžã­Ñ[8²J›ºaRÁyÉ'ÅŸ–æ÷÷Ã1”Ké[\hÒ[\h' Š rìÇ]JC}X¦ïG¡P¨+™ƒBTª€1k—¸ô¹c‘5<éøÜ´ÕLÙÁÄКFBídïv-Ž]’‹m!u)׺9/ÖKi´¨mÄHPX‰¶¿RpË•§«Þ«|$€uïçá|&%gÙV±JƒC;#…‚«BÌrò—DA©(]Ò)H¬°#¤—VkuÁÉÐ$Ž2£É)™Ááü¾=wTý¤HÔè»\/º|´JøŠ›&­ßD+¤îWŒK¦H ±ãÉ£(¯*üÎZça(Šò˜ wê¹Gåêl¢9`_·GQ©—UŒ-¬`ûÙE)U®ôV´­#©Iš—š2ùH Àã¥Þ‹ÜÔ¾VBò­‚r‚Ý:†9Ó!d€‚ðˆ¶ÿô7Mä|çÆÒ'R+F¿J‡Üä³4Í=÷(|y ïEV…·Ùêjá'è‡ðË·Wik~²IþÌí²öjáTº—7kyÕ4ÓöEAºwÅÄKl=y8?Ÿ^¿‚#¿eØËÉ!Õ@O¿–‚»Í<+ƒÈ&þqBÕ) š}×ÀÌ©,ݲ?ÂÍÝ=Ãj0N›ÇHKø|g%ŒˆUdPƒ7XÓÜsƒ(·™hbGGÙÓ¡ÊÏKóu7vÙØÓ†µ^PP ¥ €—"N‡^<âÙ:Öýº°ö 릦˿—Œå·8Seó*4Ì;LÊtƒ;Ù ÷ y¤ú—ÊF´fagœ‚%g °Ï=÷IYÂ>ÚD¨ãvgû!Ç„‡I™äý?÷¥÷YóY¦Ëxð®aÕØ¹SF€EyÆm i.<€ @u65;~sT˜w {ù tB‘kÓ[1d¾({QšìÖí}˯Ôûdn&Fa° ²©š:e mÔ`ÌÎ „pI¶ÇñÚ¹ç>¶‡‘MÜ£¤ý²ÌÂÏ}B¥G0¹’ï…†´w—ÇòxñWl’JŸuAíç…à§£ÀÈ$0ÁÄ!¦ÖfÍíB™•ÒÌý?ÏëåÄà-ÙpOwBSÊk64­:/JˆØ€¯Kï‹Ò\y[³×6x²ÅöWëV+–¬ž2[—Íwy0+om«Ÿ™é\Ü½í®’ÎwÝÞÊtf‘UºZð'¥ žŽ&ÅÞž–zÑÝ3c“êZ”1ÔºM¶—› ‘£nᔎ>¸IíóÁÝéÜŽ·£Ïm )>?»øä+†é}w¦«î!æò˶‘sóesΓ¸÷(°³{2¥µž|/WˆâmÓ*Ü”Æ 2ÕxÐ=¶‘Þ¯‚ŒqÔJ&G‡ZÄOôpŒÉq(Ïñ1 ¶Žh`µ›i˜ó;°®ÂÆÝ´«ÁK÷M„\*½Ó qŸùµ€Æ¹Î=÷{- 3œŸû‰¢ÖZÆšpžŸ¿œìžPøÑV7Ý$Búô].ÍfçÖå ¤¢©Í8 ä ©p„‰ ØJoÈ 2”iõ™B™ã!_y¹ÇãÔ{UãÅM/g,>Ë˾\:ÊÒ\k)¨N†,ég¸ó G´ds:½dª® :Yý¦~¿¹é T›aqí@îNP­F*’TŽbtZ«R}arˆñ¿Oôº«Í}ÖÜç=bÇ™+½ ­êíªç”—’\U1ÆWí%çÉïhžNéa;çÂVkè  z®ørÅ4ÔU²Ýнç9Ù,;÷ZÄùÍöÚ¦¨Z_]DP­¸QÑ2`EI—L¯‰Fôi;‰ãÑ cÇ©™fÔTÙßÕFp_ó{ïûþ6» ×0¯-éÞJ˜S.TéNA†Áö¶ŽLe‘” vèø,'>Úëf…MyÛé†OšÕ4+/YäRµQpš.2sÂtYoʺ §Õ*µvÉ(_gÊöïrŸÀ+Ÿr"ó±uïÇà‡/FyÕŽ,lóô×Û††þz®@h²Ø‘ ©„×J~v$<ö,‰)Õm}HSŒkÕ|¸S¥;ÉwùKäò†}Aƒä^øõ!Ï3=ï6Ÿmq(Ir<Á?•“ÿ{i~V¸´‘óÈMVäðE©t‹Å=µÉh |í0CóÚ?ëÎüײö?lÊ’2˜ÔÎÆñ´Š‹k›$ÆÂ·;CõŸÉñ «Vl`+‘örûÉ5Í“F' !kLÄ-bkˆ½`С1Ä_Í€§­¨°~bQ6Nù]»}™š^mèÌÁ½’«—pßçÑàí*:Ÿž©4ï°¸iã–ðY½‰„àOj&ÞU|aµ²Eâ˜èZHȘ*ýê÷ón¹I™&›Z¾Wî6·ÀkâÈêÃïÿ!\Ò²[fß<3Z©šc•rËW½ò^š1†çóâ)^$õ~GW0ÎÁ6+§{윪%fÛüÛ£üzÇx¼¡w¾þýŸ¯ÎÑ걪s”Düç5«Î™zî_ ô¡8ç¡™—ÿçÜ ¦ÿ_œÃ®2Pœ³â˜oêøù±¾&EU2ô%2¼U ´ãxzsæää<™J9õ~«$T¹"H Ù@þ¢"ˆÀ ý¤Ü‰*‚üÜý1*‚dv|¨6VM=÷¯š;}„»•;ÈÆOº"¨pcªº?7¦Š ÎûM…(å®båíýÉ ‚ÊsŠj»);ÌÂ©è‘ gÎØóæ`«0UG4—çLõ\¯»ì;MQbŸ÷ :²Ž(F 7Õµ¿qù€:¢Åø`€áâ An3úöAìçJ&zŠ?ŸýÂK|endstream endobj 686 0 obj 4178 endobj 690 0 obj <> stream xœí[Is·¾3ùs$]š6öå˜Å²“râØbªReç`“¥Š(Ée[ÿ>ߺhôp†ªìDÅA <¼}Ã1È Ÿñ÷Åõɧ߸ÍÕ›±¹:ùñD¦nÆ_×›?žc–›8D§œÙœ?9É_Ê4j0!l¼2ƒ²js~}òíé›3l­ƒ±þô" £ êôe™½é.xZfŸ”áUYðºÌ~_f_•Ù§íiì³4¼¤¡QRëÓÇÝoÊñÿlk•Œô§ß6³“óâ·eö‡2|^†ÛkxP2L=ëü¬ à Ø Vé àOÊ𻳳­TB Æ.±]P‘·{Ò½3ÃÕMYû Íz¥å¿Ïÿz‚#Íg ÖZ¹9¿¯´ˆË÷e“ƒÇäF\NˆÛ o‡°ÛÁxºŒßœyrþÉ·ØݯÙIW]„½>Ûz °mäÔ|Öà9ovÙÝáîÁ¼v‚Õ8y/°>[Y0oöº"Í4&°>ýFE®½¶Ò¸AF^Œƒ³Ng^üóÙV .j+b:Bk%¬Äm1m¢’x c-bŒŽ`ÃØ… †>Z%<ø‘v N&E‡±ôÒêX­!v1VkkˆÍh¹‰zUÖŠcéÕf«ã ¬Òs|¯„Ö‘t¾·Þ†„‚ÔFòVµÎVzÐ^Cm§-µù§‚¸¯ÊìywÁó,ñÙùÉ×'€m~†ñøÐÊ0„SAìÍ5&, •óÌó“G‡Z˜h‘vðC1[˜«[_M1¥ð´½]WJZƒ-x´nZ~ì‘ÐÇÁh3á\#álŒ™ ´ö&Bá%*j£ef&:3ÖAú9e\J;e']fOïqxx*cY@GVJ‡82…^¤µ–ZJSÒð-qÁgf¿d°¾È[;[íÁy1ÎWŒ‡“è°ÝžäYëzMw¥-öî±µtªæiRœ#˦áWexÞ]ðE¥Ã2OC"¡t'/Ýû°±†)zµzšÌÆ_uÙø²Ì>î.xVf_ô¥ ¾ÿÈ3Fƒ­F´+©âÄœÆû‰#OpFàTâkÆOI¥`Zê”!8Ò8ÍG®¶^ù‘WdÔ«ÜtIÛÙ!èúð—4m0M>í†;}—!1È.¯€e',b´™B¹é}ÖÃ9T¶×væÎà¹üò%LQŒz=(k“Ñx¡î•P½Ë‚äV«BòÕ ,.Ë´ÜõîJ2)a:ãÝ*BßÏŠK+Oê ]6:¹¿Œ«úCB¸œkðmvî"š!œB8=îlò£pÍ.Ê0ˆËÄ({·ÙªëCã¢2Æeòq¹°»™[Ùj6/˯€­‡ i?,1Še<Çà|FdNûÚ³pO+%;sëñtæú’ Æe#’‡Â¯Q™ìH,|êÊäÀÖ²ir•g‡bÓ’ÏH>¶ “Ïøð,HP±6 ï+êêû0«†ÝÆ×y+{“¿”ðè®É’ ìêD«ç×—<Îûy§w™Û ’®ÂRrP³ÚþG‘Ë•áÃ"ÃËì_ÊðË2ü¬ ÿÞøE³lÅœ Br­Y“¨ëÃY›aØ=ùŸö¿íÔ4p Ó¥\n8ö¹´fµ¸OUóóüibh,¹PÚDÎP}÷Cþª|¢2Μ…l[/޶ö}lR†éœ´:Y6,~ËŽá:a›1¡…ODØ*§[öÃh‡}ËúÕA¤»qL[7(»ÓI¤„?Q0F¯d¥ã¸Òø%¯mOÏ– ¢P$6;õ‡€«U_AOÒÆ¥öi£½½Ý'Öâ7¾CÜK¹:+—õš1R³9ºuÒ'u”„rË¡Öÿ\rð.V¶áßòqë6HI¡œÍšl¹ÛÍ⚊ßå¨Äc9³+LirqŒr¯¾d1çCéÞÓ-Ðá ð‡Ž{qmL‡Ìœt™5~„Æ—EùsÚs4®Eh·åĹ0PuÑæ+œÍ¡ÜÀ·,Ó²¿¢|ØM/`]IkQu£áHlL€Œ ºƒ‡Ãç™;¨îàS™ÒUÐê Õýá“È9Ê;, «5 /†(È¢’ßÃD–bße1 f.:¤iV‹à¥‹Ñ€kŠvxéâîl†BÃÔø8V ËQ·dJ½2Ç䞈àJ€ÒðçR D7qž¹K ºÚ¦=)–ÿ•— V¹'—3e]Ïl ôSѸÀd‚YD—ŽÃÓ,ïpÞ]ðEʼn`ÚIÁ´£Ì¥}‚a¨LSìó.æ×–YS˜ÓO(àòTƒIžJ¯Ëðû2|R†¯Êð¦¥hš­‹¼[GY0çÇÈÃŒöwÑ>Qj©yÃuĽPGz*qêŒ3ïA‰*š¥²_.~Q i+ÌW#*ù€|!•ñ_vÉwY†E¾)pÜ‘ŽË~V£÷œä7Íá ˜ Œû®Ë¾cý{10¼’ð|ª 0ÏèµM§ãÉ-Ô!œõ›êã!€íûxZ ` ç=8Kyzx¸1ÈßVÿ•¡ÕxöE—¾_ÇmŠ‘ƒÙ»§Õoʂ֣¸g×N‚ªÑZËðÆÉ!sîÚ1.þ_tí`+Ô}„YA !nTÀfîÕ‘fÐóÄ]üd¤¶¿kÌxBÖµ,é5Bçd7“ú[z£¶*â„’?[«E—WÛ·HOæudq Ñ·©XPÑÍÊnµ²/ôM“ewT%ôU“˜dn’ò¤ÐnÊ4k£ÊMR!:»Ò¼–Ž”•î$n5^1aY3T¢ 08Ñw:¢ÚRÐŽŽ(Ú#ìß|ëxÔ†(J5ʵ†([¦Û†( Ž ­ÿ@{h0G-ÏŒ±3"lpf¬©§Y.7™Üh¾ì G§M¥5ÂÙR O¯µ¸ŒÝ)ÊUÚ.µNI›½Þuâ5uW˜¤ê¬w]CY+_¯ À`ïÛA«u]ïÏÞýVê’ïòÅœ {a“¾NJÃS?Jí#Ö†ˆ>„1Í€ÒëýÜàZZT½¥M…V4>“g$uÛ A‡[aVüÖ×)› à5¨¾þçlxÁøºq~5üBu¥–úœQqétŽZ§eýŽbš–äæªêíüÐ¥c¼À kí]†àE¾ñMû½yµOåõC¹¨Çw•$Ô%ÿ†—Kñö˜—)ÑNsñx‘ R5‚JÇ )g‚Øõç²ín¬Ô¯¸A|I:ÝE»D»Kí­;ÑD6AÖn¤«ŽnÉ nÚ(¤a’g{r?D”.É5Mõ £Ê@ÙÒZqÌ(ˆIßÕÖ4RXY¾­¶ÛÀCûWôëˆk·í‰ô `/÷v½ÚQÄÝ}„ðV‚í´–ÍVÚáÞÂ7ŒJßI¹_Ïðe†DŠPû×yç<¸Æ‡Ù†æ˜˜%×ú¹Õ⣮´ÌZá§Í8‚™ûÜoÑcÜ]IHºµö~ ë !˜#²t±f¿evð×S„â¨ô©/³[¬ûÓ²L«2ä^X)¨CªqsÚàÔ½!{Í™ ìš4­¬kïiÆÆ|uOSbVv±°Ôü.Ôfèd,* ]ÈU÷çúÝ 7¬4¤e7SÉÜsOǯ²6úÚzÅ-\†„Ê }µ­[iìY7ÏIÑ;µ4IcßËãê†qofÍü}j˜ÔS ïãc‰%>>–8Öc‰É1úøXâãc‰ÆÙûøXbßÇwóõûO$L _?>‘¸×'RƒŽ¹Ïv|"1ÍÜý‰½v÷öÙ~ø'w+«AEw¼'"è¬ô„C©íâ ¦£Úmf$8QÚûyB1BuÿO(è £´ß7ùšÐÁû¾¢À~ÊÊ^^cñŠbQ†ù¾­-ßZ¤Ç ã8WW‡Ýé…AˆiŽøˆ‚e´)³‰IzÚ'&àEѺhWƒÛoìõ{„ [J™K1šY Peè+œ%5úõÉub*‰endstream endobj 691 0 obj 3522 endobj 695 0 obj <> stream xœÝ\]o^· Þµ1ì7¼w³‹Zõ­Ým]Óvh×µõ€í.RÛq ÄIZ»m²_?RÒ9¢ttŽ_dK‡ˆ¬èP”H‘)Ê?준¤?åßÓ«ƒ?|íw×rwqðäÿÜ•N¯v>Á*N9³;yv¿„·óJ éõîäêàÛÃp$…±Z[s(ŽŽ¥ðÑ*é¡vÃxDœ»ÿuòWœQŸÑà8mpÒ“3œä :ë?JÍè‚:ü²öž |:÷ÒŸ|u`„´»_péŸ@0Zè@ËQÂÛÝöxƒìÍ=/¾YÝ –Ýyƒ‚&„v‹.*s?VæžÖÞ×µ÷y¿¼ÔdŸÕæ95­ù€oú)Róçî³Ü<R85³Zµ8öRD©vÇD 2NÂB!»àWööè„tÁ˜Ã—¬ûUU‰×¬ûšÚ&jÂá%S•Òo%è‘®(›¹Ð?@¥I\\Öí}Y×sstlÊX™GÔ)ˆÕ*ìœ V #¨H[&Î=÷P¤„µ‰¦P1ÞªHYˆï³"áÆ;a:üî0‰Öâ!S‡§uÈ«Ú|YÉ]/…' ç­^þìd8àÓF“ð´s(*Í„§]t"˜)u+¼O†RX®Ô 'ÝáGÇÊ{b¤ˆM  ©ù´6ŸÕæëÚ¼ée“z?œ›´ÇeƒóàQV¨wÆçCôþHÇÚ(ŒãÒ)=ŽE{aL–ÎÆÉ,Ÿ\v»’›E|ÄJ¢õÒe{ñÕæùc‰ÏBß“ÊÒgµùy%øq‘b4FFÇ¡ÖÉ<3F™ö]UºßµìCŸØóBj_Ø»®æl¡h©÷f8àyí}V›½|R/3\¯kïó~¶;Ëé}oŸÝ )ô¶qøÖ6ž Ùü©Nò}í}1¤üz}êLmëåpu—C^k®‰á¹÷ƒÚD(zo—’aÛÖ›-v˜e¼9"-R! °jÂ„Ý ãEÔº;ÿ'[¸¡¥‹¹¶…+¦c¶÷Ÿœ|ðíŠAc6ˆmÍÅpÃ~<:öÙ¶±¶ß„·¿ë:[Ëë£3x¹2`dô:›¶ÀÂ༠;ç²þý%¡Û¨­Œi­•´À-ê¶µŒ1:b Û.hð/ÇÈ7ÔVÇf ƒÔi#.¨Z?ˆmð„—ÑÚ;~˜½<úh«Á  ¤VA ¸Ÿzî©•™‚PÖÝ›õçÿ½ƒÔSs$eŒPKfÑü˜1cÖ­½‰h“¤µI®>IZF©³biÀ‡¬Me jƒ‘e®³ {³\ Ê•ÏâRÈ‘é‹â8éÃ^Óg(µ ›Y:=K”­k†0¶9ÁóLOC¤°m½òÍpFåiZ¼SS—SbÚj´³ÏûáÐÛ<÷‰ªVÞM›ðG´nu“òž‚}N˜‘DÆ”Teâ4â8}h´ô1». ­,® 51Kl ´0&>äF£œ£‡B>õÉ £›ö+Š$ÈØC¶9es8íLÅDo§érÜìåY™õK5\a:ÓhéÍ–ä'â#€“DÛš˜Ç-”Â; „+4šÐ4b°1õÜÝÄ 3A(÷D[gÞX$̉ѕCÅ W >ü'&,¦Üç$Z„óÖ’B`ƒ \;¹b½L bkz%'W†¼ª³|ÏçÄõPe¤ÊÌÉÃÇŒ»F»~¬ol=ûUh-@s"ù+;k|kºØ¹fÖd˜15èÖ#TáÏŽm€¤ÞóÚd¾èjSÁÐsj¯Ã4‡¨N†Ì;<ªdÇœÆÅÛ€…–O‰*†ÔH§&ýIˆ©éÒ¦¹)4¤åz÷,÷Zï¶lŽ–é°ìémh´æßYš¥ŸĬ—ð[Öý¢õYi¢ÖXáÚÃû¯ÈK„bxJVis*´C 7­ò´C­ÃáX o¾_l¾Å`ŸT7“PzM~¯Ù„|ÛZø‘b?YΊwQæVªó¼Ô‹~{ÅŸ1ï=À4dÍÙ_Ì“¦Oü´G~C®ó\D`A‰jIÚZDÙv_çn£Wö𬎖Ê4š÷:wƒé…A÷Ø!ͧÜÚ|Ù’#Ä#+LX\êv±ìÈ#‰ Ð”_çO‘ÏñÜ{`…ÞѺÁrzíÊãW*»†»¸{ì±­]çñò¦[»yÆHæ@'(k¹ÆC‡ÙMsÉ^ãÊqŠH™?4ËF šf(¬0}^Iϼµß*”Q¨Òï%¾bɬË8À(…’7#Mš¶sŒQ9jgb|½`úÈËô¥#Óœ€1Êá²£€þŽ\6-‡ögdŒY2uêNR4]Hñùt„ø)M&$¥¤f4µ¢¢Ü  LчR¾áiif…¸Ÿ(¦:PL²»aø=í{S•öS/"€'šàmNéáOr¬\m×4þM¦¡MoäÓîŽ=ÚÄ6A…Ë`eš;G]®(4×?fKŠL<@à ŽÖV¢‹s½i5ˆš l}n6H~²\S´7‰ž –Òdȇ!(Ùšêºú³<¡ ›Ò¡ÅH…àSž2¾ÔŽDeš(ê-à@óx½puø¡ñêö][˜Z>ýÐã¼É“ÖX½•”îñ ç®ó‡Ú™®ôy„ìe²WÂWu:‰’S›ö—+z Ë=§NçÓZ½ë-{^ÇP·ÆŠ^j-÷’\.’;SÒÇ€Ï̹Óö!Ü‘°/Ò.ÙÆ¤Ò2¹ÐèQý.‡'Þñð$àB#Ì(ñ7D-`X¡í(˜ñ›ô4¦­E`Ïr7Å[j© Nî†.ºÃL4Ø5ûÏ-ÓÊÙ»hÁÒˆkèÓºÞ&9˜´‘¼jäœ65ŸoR]ЫçNTï›”1âÿ`¤×ňOŽ(qâÛääÒörk딳èä\ãT×´¼ÕPåPÑŒ/Q”GWºFã†çzkT0¡TÜS^=٬ƯÑù?kóIMOl\óææÇµù·QÒl˜K¢KòÀs(+G°ç]XˆsÚùÉpæTÞ¿ØÌ7dd7bž(àÛϽËZ‹‡%+Žé: Ww‰ƒWE ¶‰Ÿ¾gr1;†.RÎc85ôm“Õ&ã&|s—†µP [} Âɸ‰×‘;¡`hŸê$²½‚ÆpKù&4hr¶‰ ¬ =NÇ'–OÊÝU+´½Ö¦Ò„YÅV¯,³Âöw<ýuï0mf„×õ0-sõiµ÷ÊÕs7<Ì©’D¬ß7WO£õf—å§×ÜsA|¾Æ8ágƒH†FÕ9<âàç¦L¯4Çþ³"ùž!gâ{”·Ášzó| ¸ ôjÿœÖ⤴>;9jÜï“>êR®Ë[èérŠ•»¤¯“j¡Kǯ¡ù]rÚÿrÇÌ®¡ oÄ6)s⨨U¥Ì~‚‹EÊ4§1¾ížÀ™er¬T4ûÈwÉ©ŽÏï´Cc=Ý%{œÊ„¹çwÉ­«M4Xs§:ß¾éËágïÙ]²Õjp•Ì5spe”ÎÎõžÒ7QJjá§]ƇòIF¡à6qÑÐS‰ð båiåqnpÅŽ.H‰×JïÎÐh{ I ØIÙ$a¸¼å*.ióŸi”âi;ž×cóg“–B+ו{NÈÂ÷«˜‚²—9ˆZ7+âXŒ³¾‘2ÞP¯á;n yûmaA óoK¤°pukóeŽVé^a¬ Cû¥(o¯Û‹·aåßâ¾÷¾of§AùŠ'UŽk•ȦN®ž…³‰;Ä÷1¹@ò5¼ÀŽt»Ò7” ù{Þ=©ý %Êbì‰ø?ù 0I‚ÓE-Œôø7z˜aŠÙt‹tvB·4„|CŽÆÜ—{Ý<â£w™Û¨®ŒNCÈûz'|Nä  3ŽMeö§J;é„:*5LÄÁ¼5'Ñ;£¢zù€6 ¤,¬V@œ{îWÀj’ÚÃ>öU«±­,á…ðŽsäô­ë=,¦| *ÞZªa ò]pLʈc\ç½j‚û¶Î¦öSL “z×~-ÞàÉ®4£ÎÅ>3‡½6%yòï Ì“"ÿnAv®Fø<¿c+¤–Iž ÉÉHåšäJŽ!¨'ší²7ƒ¾\;?€¶nΡ>°MÂ'bM¬=èø¶þ¬¥—Âà©6—Þ#ÎtôÞl깇à‡™‚PTv_=ã^c˜ Gÿ­yÑß±|§Ÿ<4paš3‡Ÿe°Lw"7En]ÑÄuî¦ ²Íúïœd¿ãýÍïû‰j¥Z É9ÁR¶êœÚ¸˜÷“Û)žüçýƒê•’¸$ëd­·¹Î]uÑì¤ð²ò•Í?ÏË4nX)µà*¯ÂEãK>S¦«ˆ|æþ&®áÞæÊFzTÍÂð±Nv]¬5ý•;Ѱq¡9©RQúþâq*”¼Ûµh§C4¥VÍ`nž»\ú°éŒm:…å ƒ\Wâµ—S±äæ5óÖ­!â2ºfüBytgôäcNŽÁx9ÅwéÇ{¼¾ÅÃåÏÑ ø-ØÌ”²{Äæ*\ÑçÔýcm›"î%yŽn­°Ž{ÉTYGG<*£q·TeD KÀm#¢ã÷E:”r”Êïà¨Þ£KÝi‚Œà^7ä:‰¶/dË$ôêEÈZ®nå΋£?>¤ƒC‹ÕC\+°X–¡ÊHq>îWd@æÀ§— ¥f)Äή®Tüw®ˆ.¤^0Ñn§¢ËT}DïåÝœð¹KÕAª…ì°Tz ñQm~Y›'ß6ç0ÿʃ€G›Ø”×A‚’uôûU¦ž»[¤€(7Q é¸¾&ÍÍçs3A*A†EIëg#²‡7ì׉ÔWé+ˆLQ5akjÈM.ßð[넆÷©x½íИ”®,7€~u7€.¾«@Jáìpê¹ÿ RRÂ’•©¹ÆSbqztv~=P¶ËÞL$¦å•ðFÜÓ.¦9n‰ ŠÚir£¢ÇAÔN3Bƒ žåÎU_²¸ózãjŽF ßY«ìiÃñ™H²aÁÓ]ó{s7GP棚ë\Àµ~-6q>.Â0¦–„ö%k¬°.ÃÒZc·‡+xàí›EФÝ+Ža²ëPשj34I“d¿:øæÈGendstream endobj 696 0 obj 4134 endobj 700 0 obj <> stream xœåÉr·ñÎÊG¼#鈀ÆZ©\ìl•rìrÌœâ$ÑZ\$“RlåëÓ Ì ÌÛŸ‹¦ÊCMÌ Ñû6ïÇ•j%é¿áÿ/oÏ~÷¿zýp&W¯Ï~ï/.­FhsD†«h‘çaå\Èâr ž {p9a-½Ó‹ ÍF.'íÏe¤ŠNºóïÎ øÛ²ü¢œñu^58…h9QÙ‚’¤£Òo¾?ð BCMŸ¿$–è“/ªÜùg—Hü@ÖµMÐÿpYš–÷eù¬ºý%X|‰±¨"ùiUΗeÿ»²¼+'>4"›™Ó2„‰l~lk†€Šxu$ŸEѵ9Z;|ÍÙ#ø¤lzƒÐ(ü‰%_uÅðöâRk‹ÿ´çÿíÿ¦Ü‰qçEY>o­\øÎáM¼ÏÄG­ylÄ7:’¯`Ä ß [‘°;ñïªä;]‰øPòA‚¨hŸ›p¹¿ëraÙè˜ÇfümDê®#d>à05ؤ[óQåúH|0î±éƒ R ˆœä>xü#øcñ9…wGâÃã³KÖy+‚á| ð“ òâÃݧÆ‹.82à.`BôaÚpÓP6_îæérÁPjÊÃÓr05Ð~“6Œ!³?Ìø¿.wjž!ÒãËˬFùÓ•K ;¯ÝîJ° 6*Áw5#TÀ"V—=›A XÕpÆ’}ßÝð¦@_•嬶’ ÝÇ^tÉÒ–¬Æ€‰EbUÉêºA8oþÐ%ÆM‹ZZ²Ï}—È/»¨=t¡ ‡;BØ £m…ðgs®ÛJRìÎŒëLjíCW&my<ƾk^2£Àë.r÷½Kår­ UÝ]‰z¬»§Ó¤4žØD¥`ÌFB$eHôÞ¾WòuQ˜Æwœ²†Dý€ÆO<j½èó¤©uô:ME­1C}*Ô:zaå)ÈÆp6Ž/Yã t´½Å©K$Ê…_·'8EVì˜(ú©ËèÑÒåO›¢§(@ŠþJ½ÎA=E1áWoGk?~ÊìÿÓôãGÍ㟠¬åïí2BùûŠÊ5rÍ’”7O oθaJé µVÆt€–VñQ#Ìôq 2ÆèðϯÙ3¼‰Y¬­*sÝ IÈ\ʇÌêa² ¬Þ©óß0ÞäíÖk?®Ó£´„LêZÞÞ0,j$Ö{¼ZX‘Ý"É´qÒK7½“ˆ-ñÅZŽ‚•·ð—¿ÉÛ£˜£ÈâçóCùöìFã¤%#^Á‘~é€ 0ÜMéG:ƒöéLU5åbõf~‡ëL}”ÛjË»)! e¥weh^qĺ§U—J:!6•ë-§/Ór6@– ÷•¢µB ÔNÔ“qü©„·L„YA¨ðh)Ÿ™hÀë*©y5@=¬=4n‰²8ã&‘Möîy~×Ë’ÌÐ{?ì.š”0}È`eT6·í\ùº•D:Â\”êQ²ÌgxW"FÞ\*‡¡5¯ƒ´qS Ldf56V"_’ô¸Î‡)þ`D¼c$büéú%”*>‚á|p]p7œ™Ù@¦YÈ®@â~Äbƒ8Œ[ üÐ\#h³¤ê#¸ ¤wÚ‰Wi»‘®6µ÷y‡ v œù«ùñ¾d[—Û_’H;Þ&™Åõ†þîP*0 <¾ÕÛ‘À#zÉDG€³ÕÁÌ8_f€ô1GóÒãu|v¼bºeã~Z?cÝß³ÜÚQÒŽçïwÂySmy9EG#.iTá2\U-óäãEÀKi 7X€òábN€ØLÃæ%܈ÍJ«_ʧ"nF—èôMe}‡Ð’ûn‡[©ÑžG½Æ-ë`„6á’}²Êy§ŒaJrÒf^Qàt9©›¶¤sœVW>«©Q [Vª`N­Ï O²r kŇ¹ŠÒ9Yqà ǘÿû’ðw¿äDÇ•ÙÇ"¼(Ë5È5¢‚È1”ª¼ÈQ¥BU™`R‘?Ã|ËËöS0I#¿ñÔyza¢OA°hh¢¯;tæ•y,´CÝe¿¸û×4ŬB•e}XM.„ï3¾€Ž™ß¨_J»Í׸ü"`­æHáT*ïÅàcMRÖPítÕªŠjt­OO5âF6¾ áBÉhvj'ÅÃkÂ4_Q•Õ¢T±^ç¨"{Nøû²,Žu¨uµK¦r/Öª\ŠÇLhcä¶LdЈ¯Íh‡ržK7ä?0Ê?/¸#óïùH¥E™’oŽáBif¬ämíùÏã>,äHã4µ–0W¢b4:ÏrUÓÙYYϼ@¥ ¹ÿÕwL„Bg´Ñ/8Ì]ì^Qì^^#m·Œn0‚À¿õ"ˆ“¤¸„[ù=Ä>ñÁæ*ÈŒ _‘e*_12º%¤©‰@OzÕV6'•}]4yb¡åú½¦Žƒ)Uú9ZÁ˜cÉÒF]=oC¿Ò€Ùh£€ªV†Êl•8d^ÊM[êº æÓèÚ+!Ü23 ¨u×"8‰>ê Þ PW~_ÕT™I”ÂÄhC´ß Q·fB JÖ’/4ý‘…‹Ü¹Ìñ¡Ä#‘™)—"F·!Ò>Þµ( €â:HQ¼¡Á òê†Âþ;l!F³Ô3ÞÆFëÿYüÌ—½e7¤PŽGv“¬=Ëâ¨ëVÔ}†*¥8ôUV¤~²qoìíXGʺ@xÕ~±Éƒ.FÝIæ6¶ fæn›¦ù¥¶.(XC¿Í±[¦¹¿-®ó‡Ö£qˆª[ï› ¾gCC"÷‹Hß“LÜn#!2nm…¶He;¡P2%?K8·Ï\lsܲ.RFHh;UXO¸(k÷Š–Òۜܺ`i(!*/Ì8¤1)/átÜKy•Óøl;óØ”7 ÖùÛGišFÙBwÛù¦#ènRØ@l˜¹jÀÕ´-̦ÝNÍtw×m‘Åè€çÌÕâ™êýÆä©· [enSÔ5“‚0³Þˆì7ü½Dj ©7u¹l.n_ÚaFu!ü¨[ 7–V7e·Q4…ËTMhÂåCÚ:\1f4"±QóÚ0e‚‹ YêO8S9"&8µ™¦¶÷¶“#Ò!Lô–rD‰g*mŽ9¢ŽVxë¶ÍÇußf¡NóÍR‘ž˜Ðñ†Ó½f3Dq""gÕÏ,²^²\ä8|ƒú`:fckFÛO}Öä!ß]…µµ’Dž2?P5"çóDã€4Þ8@°4¦5©À¤¤IÕ™cf>¾m¡jp©›]kã¶Úá§¾¢+q~4m±“J÷‚‚]µÃ¡Ge ¯]&oöj¾#­Œ‰ Ú‘î%ÃÌ‹¢‰‘0ãÑ©´Ã¢9µ½ Šƒ§õ—(b¡Kò-(ËÖ¬#ý0Š{ˆ=q'[#îDaeë20Ùa€Á«™#üh(yß 7Ë·nƒÞ$ßûe¬ôå|ˆmoã±½^ìÐÕAmòž ]Í%ZÅ™+C6RQ¯ueÆTíSV”?[âÆc~-²Ô›UqI[éîN¯Íuy”Ýdˆ^Á·ñ1#.ê_²<õ!7wègG;µÌÜ‘yÃü)Sì÷csÚ¸n9#&IRGÙ¨aHXFãªç:­Œ¢Äd"4e§udÅXÇiK»Ys1Ñukdõm«‚^«ê½¼2ñºl^U¯ wd™Œ0ëdó;¥ê'+›µ²ìéç×Ër"º;}݆¯÷îC‘ØFi»ÌUÛæDðMq?‘‘çq"OÚ˜úäc\4Þµ)ܼ•¥iR¸„v^àuY² ûÌ -M·ÆgÎB2È?³0 r7 ¹£¡«4.뇺ý2¯¯#}yÞÌ‚D*nÊõ½UÚgs÷ z›Ïݤ+Ôâ÷uª"§Òg;õ¥ÚvÊÒP@ÏÒPq8>}ðåÙÕg{~Ç¥h ¢‹Ûé® DØÏô´Óc%ZÚ¢ ôlC@ѩ܀Ü3Ú]‘ ²m;iº­Ci„ï7“­ŠiwŽü$YÐ2Î[¨â[’Ûrh)"3N?Óm«J(W4þÁ Wíw}*2ûÎ]ÀàshÈwyòZ»Š‚eG¿Ñ‹1e™üªØ÷}ºŠ—Š~ñÌ ©G;„F$κRº,ã´œ¾¹üæìÿK d€endstream endobj 701 0 obj 3862 endobj 705 0 obj <> stream xœÕ\Ks·¾³ü#ö¸ëÇÏ«‰“JÊe‹7;Q%—IIÖÊRøïÓ f`¸»$íJù`  _?°¿oÄ 7‚þÿÿòöì«ŸÜæõþLl^Ÿý~&ã?nÆÿ½¼Ý|}¤Ü„!Xeõæâú,})7ì`lœ‚A8Ø\Üžý¼}¿;W~0ÞmßíÄ œÛ_wçb0N¹íÛrƒ–¶©Wl_ŶNØí‡Ý9X?8ã·/Y÷‹y¾·4 `·—Ór¯¨Ïâ*ŠhƒÁソ²j»§Nç¬W¾hó•¯Ò _mŸz­‘¼©”ƒ°&„íë¹÷´4hÛ[ìHƒªX%h:ڨľÏ8V €à¶oõågóÔ¼ÿÓt ‹CtƒWº8çÞäw㉂ëì1¯T™8Ç»|¼y/ÒÓ)Vk¯ŒÙ~‘ú=ä9bûÕî?ÿkêNI$ιuñvæß«‡‰¡ÆêIœJ­<žã:>I—Ä߇Ä]oº=³ƒ•#ª‰_âÔ\ÎX;Ɉ‘¿+;È8`$7h|lÚÁæÍ2¯’åÍxmÜÂ¥Þu“ÝL콜šÕ£ƒš,ÑÈ Š„–sVC Źbî 2´ ÄÒaMg eŒ …±ó«Ü«8ZËspêA`NË3"1 `jõ@ëx]lùcÚŽVPƒò8Ø™Cvɉý/~¶úËRÈãšZv½Ù¥†·jtD0-Õ/Н’/ªÀŠ×©ð»D¿x{©¸ã`NÄ{&\/’Ógõ gåò’‰C¡Qœê8/+yJÎ/T°²ã˜1É àJ™¾cl4*eì¼Û¡³b”.)Ç.¨&PߪÍÅ¿Î.¾üy{±#ïN™ä!…F˜‚Ó8›4ìLæ*Š ¨n$÷·ýRòëÉÈâúë–5ËåÄI\H—Ç÷X¨3ý³yHIÔ¬`žÏ:꛹ùÃli.š¾/ÌËwg?žéA˜Íç3±ùûë6V£:CƻŞà7uÜœ=ï†Á à PÆã”¤`R¬võRs?Ï\½¯kW/6m"É«i†–Š6x¼ÊË*†’CćNB­‰?ýZXù¬lð%nˆò'íÌiÀá$Ã6=˜“¿º*´Ã4÷FYwÅKç ­¡ºB¤—lOœ¡i[A"ŠÒ]TÄ FG‰0ÍA‘CÔ‰¨4wu=Ù§E%äô¦M ond$ÝŸêFJƒ(I?à‚ÒˆÅQ´€¼IÒŠèj˜;NVäW'ÀïCÖ.¬-©SdG ÍJ”(³(ev§‡ñ®Ò$ÂÉÒÿDÒ†`JTÄÈHn±‘‹¼A÷È£;ÝÓž‘bçkÏ#w—<ªh+M¡¹¹¬r%r—f v5ÂÂ!]ëŸÝý^6fáK¨¾§™£æ³]§õ¬âúLÒñÞp)4ƒB“ô>H4à`¦@㺥«nƒv¥ —¢dR& -wž×,³Ïg_ªÖ|©÷¢9àûÂOZR†°O"i>édj?õ¯úpDêqNÊÓp R{û¹÷ÍÜ\•Ø{PAJ¬På•M«¡ÛN(èu½ŒáX‰vc5»B߉*Öp£“fTA?½v ‰Ez'Ê®ÄÑÞóq®¯Ì…'¬‡.ãwÔ­´¨ñ’ ¥¥îÁ’»´ºB‚§ ÆL¯wtc" €·h4uíΕºD+ükõ%EÂzö¢ãÂOa‹}š!¨‡Z"Ô‚ž,Šñ‰:t,P™¿ïÞõtÚ=„ǃ&U?ÍîÅ‹sfï.mÇ‘âLG£mϬV™¿xÒ¢¥»aAT"èá>æsU«Ú˜ˆÔ,a>çpW0õœúœBšöxí»¹ùßÊEãIž^Ô^#F€IÛ†Ò¨|B#‰—¡ÀdŽy5îåèÎXá´¡V‚ö¨9׸‰‡P·Æ€†j°Èp÷(Ñ,VÝ\×·z|ˆÌÕ5ž»A)¨F^>.t•vd«ÂBY×F²OS_Þ¦Û%™E¦$¿‘c»w‹/ãèÒ"’JÓˆH?SK"³-TDÐQ•*7˜|ét¢¼_žHøœ†(0 5bI FøåPåÍܹÂÚ#ð”’TÁJmsÛßÌÍææEsÀ÷æH¡ëõ`ÂÆxÊÓŽÒˆ£¦?OQcÑ“±žr, ¢b³QÝ€<‚(ì­U ¥ùŒê…ÃGÝ`(ò|É$€³ï¯žÏ’‘=(ìPÁúÔ»:K˜´>BErK £©²¢¾O‹*]¦Çóàk\:î\V…¨×>Å%Sï<÷Äε35Gn‹¡uhïIœQÉ©«MCò”>Ó†[j“tVŸSÈ]h8Ô\LÓmW€&^ÉJS·Áqã‚G9Q€¬ÏÞìF(ƒ»ÒÂu#‰GÞ{¹æ¾ƒÞ^ª—”Û'Ѝšb:;‡8ÒpUÕûM¶'¡_äkÑ‹43ç^ô$­l¤ðJê¥Åmo»c*Êèa®êÉÿ¬›^Q§èç«{_”ZíÓ˜£Q¾üðMáZe“ÿ‰ñÎ楔(o½Ì)‡ž ‡ÊõR6R><"¬jÀkP† ÐIgsêË‚DÑ¿$;·áSñ\P`©ÂG À„X»JÝ’LCàH %BÓ.*¥ °;[zs«i¬^Åm*•G,áÝ"%lÉ[¦„±;„.Kóì+#—kÌ~]ñ|?+Ž#¯B%—@–Ñ“‰òn.ãºÙ¦qS¿\hBêm§ú3}*Ö{—9 %×¶YåT‡®y†²qV1ê7"Ž"q¥!3(Äw¥Më9,ÌbEàU…+¢,dx³´Ì(b&Üã¡ãø¨ÏP¾‘°ƒê…[=hôžŸÀ]G4ƒ*Úl Š(Ò‚[io§žã16UΘçPŽw×ÉošŸ±RÝßî T‚ÖáÑu ]§vPáê5UX y×h½â³Q"Hm ñ½'÷%Üí(¡ûcx\Á´sùhr¥yB‡nâ·äÐÌl“C'äàD‘<È¡ëd%ĺö`±JŽ^ŽðGê‹£zz‚-zQÇN™Æ‡Îa“¢ù|i"ÆÇ>•—Ä2š‚“|Ó€¬‰*  QrLL_’sµ®,‰´ä,Û „$(¥ÍˆH‚“Œ7"ôx0"ònëüÇG$¹B´¬²Q¡L]?ø€QáTTýiú)ΠT6²<úWÂŒ„H'Mv ¬·ÒÄØ:ޱõ Õ L¶û´³ô,Fäé;ïmU‡N¨pÅl™H¿(ƒÐÔ&Ø–Ž"—Ùó{šl›FÔ3–l;NϵᔟÿKsmȺ°xÿQkކ¢‰\Ö “z?~)RSS§ª©Û…Õ(P¤²‡fáhF Oà¡u<βtúí¸÷€®/Tœç¨fŠ\RbØÁ"z¥—Í8Xœa°i†ù`(ŒLÛCE÷%²4:žÃÞ?ÔUÏÏjj~˜›¿ìŠ@™Â?Uº˜vdÏt#Ô·³xû²x¦{¯çæ‚üØ»x¦Ûž¬ÉNiבÀ¢ËÃÙéª"8 f•àì)ðMs÷ÕÁ¥Ú<Íä¾Ù[°4L™oSüeq9çR duëlÏìec€gÅ¥#»K-ê·TŒè·Õ$‹xÝ$AŸ3‚b.|²ö3Þ>K.Ô?ÊA¬‡>O58£‡õmÔèè.ŠÐq}øÆøpö°¸Îçv;g| 3#£uAãÑ,]ž«h#²¥Zó0SÐÍ×J’ ž,J3n”Cܪm4#$Fzê9ÅŒÐÄâsÃ{ÁB-áaD¬@•èÄCRPb%7î2† ÓP’4tJShµÂÑ9 ài9Î>6Çy—ˆT¢Î_]!¬>¼‹¤x;/¤ú” 2òo…,Ã*¾z² ç,1èùþƒžÊZŠÒ>©">ñqY,îFñ†°ž±I‡¹¼ØÅy_¥µ¡zFÒ68·#¡Õo§¬HÁ4†—–u’¢½0vQ±ÝäԺ‘6”B/÷– ÐXËÝx5¤“ØÙÿ­®N¨'ߣáyçëÔ)\KTÄà3qíµ, jiýSZT¿8Y’ñÏXM/ 9Ð}t=¤“sÑ 34*þCsµh$MõhrŸº…h½‹}dè]0]’KµÌ‚mÊã}D¸ªký±×àñ›Œ[ûÑúÍ<º‰Cúw'Õ ‰CMo¸•Zª®SÊŠGÙ‰¬ I°³íñv ^§GżVÍRJv™ˆ< ´råË>´B*v³÷ç#L)¡Þ/\¶9«ýnoümwÛš™òTôý–Dè©òwO½9™{NÏ@â Ã) È…‡[vŒ‡ ¡VËËOE®Qð‹ü#eˆ„98¹ˆÃƒÐ Jô ·®üX&‘$þǸcb®ªù ”s® ·‹‡&Gb˳©*.šOg‡Y£¶ã`’”¯sUHŸœ«ÒS÷_‘«’–ð…c¹ªÜsz®JZj\Ÿ«úö¾øéÜ{o‚ÊË?/AUE)× õ†2ÌZì!g†…¹)¦æt1?žý.åtendstream endobj 706 0 obj 4602 endobj 710 0 obj <> stream xœí][w$µ~È›ÅÕå«RµóÊ3±âø¿îŸ·'Ÿ~íV×'|u}òɈÿqÕýãâvõÙ PbX°ÒêÕÙÛ“ôK±Z2íýÊIͤ‘«³Û“ÿœþô ¦V^wz›Ázyú.÷^¾Zøúô›Üû—<öß¹÷¬9à‹¡÷¿gÿ<ùëÙÉW'šq³úÎð÷ɹeÊá®43fu =Ê1燞›“ov<)̸ò¤·yGW¹ùˆM-…R§ßåÞÏsó<7Ÿh/ b˜öôÛÓÜ}‘›÷yâ»j¹~¶4…²°±·6ÍpÖðÅЀU"À])‚¦’ÒÂ4 Єà ºDó_ÛÑúäÕZÀ53­vº„÷MäróuqþµµÌHçV°ÔˆÕÙ%lôpØJï9 +'D@) ° ÿu ‚ÉôsfƒK ~™×ÿ17o;$¥B$µwô¥SÜÉ7ù\çû#© L¢C‡¤vGBÒ† ˜6̾gäƒ>5ñ$á͇VJSh»žÐjÏ‚š/ªó¡½kJí"h] Ze ó…Uíz@«€ózsh‰½?´G”Z©9S’BÛõ,€V*æÕ¡½ûX‘âG‘íz TUºƒ íM“eݼxhMðð Ðö=ûC 30·i%ŠO éu>ðBIñV1KÍkß³N ­Â.“Ô] }¡žË8å™Ú®g´î"ÞE•€xÕÄ“HâVQýöU ¨ªâ€—¯…@;QM¹–˜ªó2©÷©9à»Üû67G‰‹ØûØüÙeSêìÄUªH]V›L°`‰@Ý4Ñ|_5TrÌw¹ùØì-X°_Ç´4ņ?).d-ÄÞÆì”ãÙ U©9©àu M6}WM2Bູ¹‡Ö¡pÁO¿6žªƒ@.$hD\8®Æ¹vxMkÎ,7ÒT0!FyéÒ¥JIÍ”2¡Ÿd¢2¨Oð2ðy[dÑTúÊÊdˆÚÀtðý»ã7M´'ÑÀ”ú¢µ•ì.B«O#þ^ÐÚšÕªÓˆÛEëcµmsd«³Z‚Ö‡×Äw‹Ô†‹/fÃrïœÃ¼Æmc÷•­vŠ”`øüV;³ôZ»øÄEh}p+`´¶úÄ%h}x+`´¶æt>nM<„OÜ%¯ð‡OÜ­?dk— !ªçM´ª˧_Ë@W^§ºÄ/0«mH[ø<î=(ÃC܃R’1të`¸P§IB6„më½Hâₑܾ³x+b–Ú £B1m°6 Gó8\ÕmU”9,h 'Wk7ܧb6Mr¥‚ÃZÙÚ }3vÇåýøá*¢„Šq»RJ+°&B©¸Ó¾g÷œÌÀtšA›–AÅÕÙ™ÔÜ­ ª‘wm`ÿ®ÇêÕž[Bº:¥œIÖƒ3ŠtÓ`/W馕òÂùt½Ý¸|}ÃTT7Ä8‰‰¸Øí´.f©.6þRùdºnºó¼¯m™’îömšC µiè·Üñ¦yÃW®Jù‰P.-üò Ü`_²ü(ï8 aüÀ `’|K~jÓÎî}›N´?æïrïMn^Í–(Ð;žsf,¡î§Û2 ²ä•ê¯îË^P”t¶—¥8¦»*—uÊò˜”¢çà`¥wøGe¸Ž .n$†˜ªslJ0< “žqçM¿Ã((7äw ÉýïÓx'`‡Ýx•dYa¹›¡2{‘E¯hw&ÍKc’!vnÇm"äép…“BNíqàŠj8Ñ‚bªmdø™;b¨@óÊ Ò¥åí€a´çÕ @M%pS£™QRWº= üc[u‡›,I-ÑeÚgõÒý¡ˆž¿B¡’ÆE™ê„ø—´„“Ƚ%Ç£ÂJf¦Ã©lï?ý´ƒT+˜²’ùÚ ¬ûý®ˆš–’Òýڼɽç¹9zȉ½…ûy ôövàEcôã]Þ4³ÀI¸,#”¸öâھݶ\^,ˆ“A£ZƒE0ÞzGÿî¾·ˆPúzÙdf”UóÉPŒ¾ït…ÄC7Ìm¼m¨T¯ÑMctß¾‰èz‘ÐM»ÞÊ\À^îœþœ õöt¯è…M`>Èb¾û–þ_¦™߯>òÐ-ŽnŒÃ\’ô~Ðï€*•¬ZçÙãÐÑ•ã_£UõÈÛ$Q“)ƒ¤±&øÎhn[­ƒ3(8"Qœ‚N˜ íä¡;i“pij,üŸ¶€8â”B :sBDkÊ ½†Y€S™ZYšWÒi޵å¨$O‰ïOñJØI¤~éÏßeó,¨ž† N¸NWÚŸÅeßvx—Fámꜞ’q†ô–¦Ç]ª&Âx1F Ð=؆·… £I¢‰bM$ü†p§u’AÅ]ˆÞí¥¤H›ªS m^͘Ð$cû݉x8ài{ ç£?¼Èb=¡IÕÕ*Ø­CÂÓŠÖé†R ôÁïw¡T*DT)¥™’C Ê„óî°ª76£ðdÊJ>¥ýj[š‰vÀuÛ­  ˆ-ïÔ&Šƒõp÷â7C-J¹ LØ!L¢Ä~|¢°Õô—4  b=Àg ÂÕŽ1ˆª'èvZ*Áß^yÁ‚+‘ï&„¸¢Ë¢{‚ë`)À€!Ëß">s›侀þ´ª¥MÕæñ9ìIªÖKѪæ=lòâ:÷Ýö\q5!÷Çàj>En5WÃÃÑ©šG'8;²ÃB:¯;ªÆƒ¶“Zt“F?Ì•î¾íJ.ÓhUe}&üYWãe™”µ¦%ðµ´•/E÷Æ!4{Ó]Ÿ«/÷®åk]8™Šô€‡M \3ˆæL…£=—ñaJ̦£RŽ• ™…ÿâ^#óuEl3{"qŸCëC~Ñ1aD‚Ïé(ªé–ñ—îøºƒ Ù ç䃳Ü¿ªÃb£ÀÉ”ÑQÇeúñžœ†èÜEfPÅ{ÈkÌØ‰˜²¿/4w"¯ô.!ZÊ=Ô¯# i“à)GìÛôŒ1ˆ„|™š—¼oÑ<`¡Ò.·!ÇÑ< Ì3s¦Xp|Õ7ÉÇ(M¤c¶±3Ïœ[ØÙ~…6ÚWì¬?žÓ †Ô(­îP±ŸÔà¬~­Ò?ztÎ#öÿú¡Ã4%æâ©;8ð§yñž BÉyá^?$™ Š×©ÃM&?"2E²d3A‹!Ú[ð8ú*e»Œ‡æñ&¹yƒ€³±¿Á4¦kΜ³Ã¿ôb+AÍ3NeåŸÓI1¸“‹Ì nýŠ7LX¹1¡+4rÀ´T!äé‡<äDy«Jæ“FéqÉøPr’¥±e•Ð(I®K«k®ró!7ŸšÍól¶Þ ½SV)äăhv<§ßåZaBÌ¿È)Xöøº´9¦ñžI/G|OTæßoíYÍ¡ìdªO„é vì* V*Õ‡Ó97zß‹«8? ;aùr}ÊaŠ!L:°2ת B5·´¬Ù+×ÂM™ë“:þõ¦ýK;pçmÅ^±——¯@ÄövyÀ¾:U5ÔæÕ–%u‚ª’EZ^!÷H%IÅã„ï¬|„8p¶‚§{ð”o§ìÌÈ-âɽ×MðÊÁ4¿yGO••ìRÅ&±ÝD^(­ˆÉßcðBàLºmÅcÃc‚Õ@æòB-€IÌá…x\ˆÙ7ꕱÎíè¼0.¤G¼0v7e¦ÞáÑ_ ÙÄëˆáKß#+ _ÙžÝE¡b€Ñ˜‰¹ 0ábF¢¢ðKáÂÐzöÑ'˜h!‡0¥–)ò÷ÛjkB¹aós¡™/Ä–«> stream xœíÉr·ñÎÊG¼ã£Jc_މ£ØN9QÙbNv’HJ®p‘MJ–üõé0@ çÑtìCÊÁ ¦ô¾áý¸cß1ü/ýûúêè³oíîÍíÛ½9úñˆ‡?îÒ?¯¯v9…œïüä0jwzq¿ä;.ͤ™ÜY!'fåîôêè»ýŸ´÷Vðýõ±°“âÌí?ŸHé')äþþ®¤´Êï/pÖM‚»ýÝñ Lkæ™Ü¿Å±¶Ú9±?ó†Yfö·8¶VXsŽŸpiöïŽO„›´³ô¸VJm…áeµ …üÓñ Ÿ˜ÑÞã&xR­Åþ5Yñ²€¾Ž[k¸à«´µvñ@¶´ó9®Úå.~(}}ÝrêŸþp-k\k@ݧg€Ü"r¥Ðû•á×8T‚K‡a6« 'Ô$œ˜Ý4wrp¢q…ïÈø}K%y¼ܛ՟^D4rnÖHHÓÓäT‰,R+J¡KT'>ðŽ'\x?ßÁI@ΧÃJaMµæM:ðähÉEœwÜ:º9íIX¡$³¦'ܱÉp¹;ábÒÊðˆÿ+ø–&”¿(¾(Jrip"í (ä-áÌdyVç ‚ÍX– ãOÇUûäì”ש˜tÈ柖õÃçc×:qøÏppÁ@ØŽR‡[¶d€“c¦(']â ¸<œå=õ»0öƒ»qoU2ü³û0Rÿg®åº¢m„aÄüDô½L§ôr?Ð=°Z˜ rê) ‚ ŽžytþëZço‘0,4è²Ýé×G§O¾Û¿ ×iú…\Ä l±Ð 5#öø^Y[DÎ5Ú*}§²a×îÑ,;@vN¶WÇ+Pø;v|òÖõŒB ›éÌ'ô¨Ý´Ÿ"eÕѱWÆÔ8¤è§çüSM¢¨'|¥tj0€­TM¬îQ)»¥* 㫸‹×¸$èƒʺ&#”ÏâTÑJ,7 "ofì¤Ã[zIÔGåѨ£ä0¯’þIG«õÕ£c5Âìĸ\œ¦ ÷”•_/hZÇ; [ΰ¥’Œ2ÇÛ¸Ür10D£¿ HF£±Áû2ôèæ €ê“Ñ|º¦’Ã9º^¨ÒàVªBùì{¾.Ûâ†Þu¼-Ë2¼*Ãóá¶ûÙY¾,ûf6@èù¿ Þøk¾A'øÆ»m}± &TãžGRi/ÞL{Î+KL˜¼a¯lvÁ Î ¾Fà%è—×…;j'5¨C1Ô†­_*0…²_ú¦à¢©Yð‘ú½R‰%aòÓ±ØÂȨ@[w÷h`^i;ÂêTDЙUbh^“Ú_:?’:Š4©ùä¬jcTØÅƒ"x3”èQë‚Å  И[ºèð°ÇÝt—s°‘刦q ^õÔ|ã{ãgLK ŒúògK¤®¬Ò`såKÁ>X €mÄ+:™w¯â1Àe':|F(õEƒ u*6ŠÈÝé8µM¨Ã¡-.TtŠ9Œëá+ˆZøy“³! UîÅ<‚-7$p†ÓTÞ|SN\q‘ó´&ÖNxê~k2ŠÄ.Š*„üm¬¨\õ>ÕнEÍ÷BZ,¤>9Ì8ÜEN×îÍgN§&ƒ|w=`j:ùÁD«˜Š_RÓ°âcÓá¥ð)•âE$—®¥Ä'ÜpMeCŒa„¢2±´¦”¹HîŒ3À¦`¦Ñ2”uÄÏ|!¹F§ :(5d–±$þ"E£ði·p_k‡*÷]ÿŽ#­¼´mÒ„¬„ü¶®'[)Dz´T<È}4<‘õMÐ@ÅÿÚ¢izäc$%°65(ñÜZªŽ¬‡)ò¢`[ t3;y³ô$)‰7©mË€cG.ɇc â$xˆËt… 4+‰Þë¦O Z>ð…b˜¿2£lEs_…!Šßdý7„¯wqûVÈnÒ´]åE¼:ÓÛüšÎmÃJòzÞæ (+¸´6˜%%Œ®Ÿ1è…RÈ9œeøÐD?qøS7”ú! ­®Z^ð1ÏöB û˜Ì–*Ø÷K.3«|>Ì€2„ ’M|QÛ[ÜÀ+&»a§€›‰UNi»@Uœ½k‡$P ³¯òp#ª¤¾¨l@´0‰¥ðtÝŸOq¹n|(”ÎÃô2WSŽŠËI8ÛCp𛸢«°ÁU3¾§p”ÜÂÓq>öS7ØêÏŒÜ×›7cÓUû œÖó¸X:¹M+àÚœwok4k ”™² áŽÕ3ƒ\qüT†/Ëð§î°¤(ÈgQ\<Ã鯍|¿/ Ì [¼ÊÌÜÚŠ‡Ú¡*¸P•b¬#Ì&3‘«®sžë,u\”Aûh#j‹5¢qëé­$u»JƒAÏm¹yFÙu“H¢ú³›HŠÃW«5Õ¥Ö@Þ°UãF½õ€F¹ªM¤âXaÛ˜‘~+’Ø(`{ÏALŠQÉê!¢Ã¨&k]äá¼+%wÝ!‘WëfÆÞdªLµikÙ dš(èUn58®(†¿*'œE+ è/fåf9³­ï6U| ¬=Ä[lÇàªVZ¯?õÒ¦‰Ä´¶â@>Kª)Œ? ëÜ × ÆáÇ!)·‘Ì90£2u1!ÂÁqý* K3%ƒhñ˜0é—shê«MùpLøª¼\Á€¨5”ÚVáÂr>ý¨^=¨ÿ¿_JüœêAFËBE˜Ö™S]­9ßÇ-Š.f>?ä01³µ—³1¥é¢ãAËÉéÖ”u”8Æ1”Ç£s-]ÌùX ›Ù-š´Çú ”U¢¶Á޶– Î~\ñ7X‚ Ç}æÊÃt'`%Sã€uz˜ Fo€ùÚ’²X¸*ÕÀØÀõ‰jZ‹Ê_’‘ò1ɈŒÚGÐ-0vÂëm‹8ñ*JŠUë‡7“ã ~[7CLª‡º}mÝ X®I™ÎÕ\õmÜÛr[™F?ŸXm©’ ”xÅZ‡Í$'@d0„ÅÜúÖWÉ÷¾?};r?Î8ÜÜVÈ5ÎòÉÀ‡ôndEãå LÓÒéHFã´Ü” ¦Ñõªp¬kØ*ÌX$8Ö×·Æ-xÜ&5ßϦ'ÐvÁØy÷Azõ2a Ê*öþlF¬mlÂ|þeLDæ?Á&h¾pW!TÔ ZìRÝ%ž Žú©\59*ªÚ¶P ôìJga-Áær ãÇöÁ1]¾S¦í»«Ê¾¡}±íæÌýƒ«Ž!Œ˜Ý¤Ôž/ ¾­#  Æ!D!K7lT;ÍG„6Oñ»Ø—Ø|‚ ‚ð5íy¢:Ú?ÇiÇ€™TnÔUÑV•˜*$êÃÚBʨ ð(¤§ÃÕ:ýÅ“kÚN\Ûaë%ežK2ôq6>ÚÍzÔªáüPG¾ò®ÒnÔé]‰é¥F™ú¥àt^Üj9'Ǻ(vxY¨n\‰Ã÷m€f/»IÚwÝ0‡ô°ÖñÜvgÉ®3„A‹×Ò?ÐË ôžCûJ|Mÿ)è4”+mσ'Æ>§dCN:—á7Áœ„? Š½¸–—¹ÙT…ÆË¶RÐ+Þ¤ƒ˜nyõNÐJ8ldWÂW§ÕaYØ~n›lêaáò¸¼§Šè—ªx!wËB#à°Í>[…ìdÒ«‡•(ªý©ö#W@ ûÛ o}D‰)]µ—ÉÕQ  Ü, "32þñÙéÑ7Gjbz÷óÛ}q¤¸ñ ëwš;Ü]ÁŒ ïóÌåÑ‹À ›è#ì|`L‘'5óD#ÑáhdN£‡‘¾¤œ•¬‘õ.U]ÀCSfÅÓ Ý<Ú%oB+[Ç’¦ŽTjI†¢fS}wkë €´ÂŒüçë¸õ›¨g›4Z_e®t½9=±¦ýzà]]ÇÕJ¬Ê2J6þ=ÅÃ/5ÂrßfhaLx¡±Dzû¶û:Cx3ûpu¬P„°“ï? ˆ2°U’¶¯ŠÁ"¯’NK®öY~ÑÌFóøíz·Î«OxO§[Cq‡½Æj5Ç‚‹V¾‰TªþY¯}B¶ò“YIùãð¡‹*} ÎÎM¾ÉݤÚga’ËtTÀZç NÎŽC1×ë^ØšöÁ“é‡í´|±ºœÄÇu÷ÒEÜä A5rÆŸmßâlô›&£7?ÅñYCFhÊoÛºtßSÑh"áYè»ËíC4@I‡¶²æ¡æEÈÉ|´Ú<¼X¤è|ïÂípÉë‹­<^Ã×6€fWf'²˜÷§5~¨¦T6ååa¨—Q©}o¤Â«Ÿ‘¸Ž·™lOÄ‘ç‚ñý…D 'Õ5rò+ÅÃE扛蘊ü ƒ|ö­ðTŸ`¿jbðäÑÎ$† ´‹ˆÀz-X¢]œý:O÷¬Œb˜õ˜åæEÉÈ^ŒÌó2{Ú]ðežÍž øxr’n§´ OÁýãÜGëóÌšû'ûïŸAs(`NÌGï愈„Š·e–¼fxV†¤M‚ÂR…èÆBÌ0éÎyGÙ8ƒY„O‘QR‘­ÓôM!Ì;2x\(ë’;’–æ5ãÝ&¡ã)¤Çà‚/zunÚ«…YPôà.‚ô©G$2x<«,€8A‘ÁŽƒvwyæp"`N(„ÊmBà¶ø6‡QP/ÐLUP}Q†ŸÀÏ[_«, h™y&¢ÅÊ÷+[cø¯ÁŠç“5Rþq?RòEŸgµ@ñ„ËwÇ٠ٗ¦p|–o°Ø‚ýÂÑ÷K¡Ú÷K‹N²Åû¥0{Q†‹ó‡ÙÅû¥V%¬ðµb…6Wñò¾Ìœ«ZêÎUE×x^L>ëêÀO*ŠœpŒ´Á»;„Ô÷>õZô´f+é%F.åÿô—`XÃÀ%Ö4¢â¢;#™÷1¤‚±qsÆ(iDª5ƒ¡æàEH_­!J6é^P­Ýº1&¸MTsOºú´ÓY]]ŒGqü·0Ÿàý;½tqFÑ|zLz˜<óó :ÄI€‰æ~ûÙ¾<Ø~6õz…- 9“J½úyyq›îqu‰—ý9†Éƒ:>ÏÚ”ÚØze–0¯G©Òªý¿j¤®öXoã±smÒös–zºÝD;8¶ªü$AkÇF¡ßlÇ ék„Š9)¼‡3!@˜B L-YÛv[†oó°û3+àÂKŸó’Ë '`ŸUéÛº(µ±· 9‹t»×¨ššð®“6&?>Éñôk¡&;ˆÜF)‹Þ¶úòÎâÅ ÕÂ_¢s–jÔV×)„ÕÚór?>Ë k=†’Y=¹à{9Ž6"Ï<À÷r(&€~€GJRw×Ñ›¨¶s![ÌVxü(É› TÓ–AÃÑW΢tý±°âDš>J?_7Hp:¬rœ±íiŠù×/~ †Ö”á;”jö Šâó2|^†§Ý_fbg0•î û(Ëͯàù'»„ÇÇ`l.‰YÃðÉ*k`vc3o<Ú“ÀÊ.BØÈ}qëC^¡By["­›¡Ìo¡/˜8äÑàýù .Àžg¢.ÀÂÙÅmžI‚{`ÌК¬½”oÎF¶‚3HUÑáæ7œªê7 ›ãë9ú퇪@ŸgGÙíEw­—øã/MÝbÃoà<9Oüy¨:sz|ü>à“XðhýÐi2zJ0ÿˆ GÞó v=zg>* ^!QÒvÍcž— ïQQ“BiüãÌQÿãä©ÉÓ¿GòL¬‡€$O癇'OEøÉ:uxöô‹&¥±ÈœÇÛÊ´þÑ©_úµ¦õ»”=™=åóØ@Ž%w!ÆÇb¶Ï3‰ñD!椹¾—Ê ës•c~‘Õ‰ÔþO]·üUåb¥yD£±%ÐJÄJüå®~bÑ蘡 ö}ZÝÿÄ|*½¬6>žÃrÛÜAPd$ÉmÏ3ÍmG å“ô†ñÀ}6|‚}8ŽÍ­«.@ò8ÍíDâwÎr¯\•Üp$òÈÿ3Þ÷f¼kÑÂk{ŽÿÈm­qRlAÜ!âr â2¾âobößuyæMcàVZzØS`ýŸs ñÂ+õ<1…ƾ#óG®`˜ð[“;ÔöœÍ¬HÚ8dŠ<Ì:ü›£ÿG²Zendstream endobj 716 0 obj 4814 endobj 720 0 obj <> stream xœí\K·¾/ü#æ8khÚ|?®qÛÃö9Ø9¬µz!ÒJòJŽ_Ÿ¯Hvw‘Íž¤|0Áe‹Åª¯^½ÞˆAnýWþÿðÅÅgßûÍ“» ±yrñúB¦?nÊÿ¾Øüé ¤ÜÄ!:åÌæêñEþRn¤vƒzã•„×›«?n¯.Å „ÖÑoŸ^îÄ`½ AmÑØØhÂ?¯þ Šº¢¨Ä …Ž zu?€†ÔÁX¿ý< £‰oç٫¦YÚã‹«‹ï.Ì ìæß8Û—2„0à àV Þn^\È(ã`Õ4óüâ‡U 辢Ĥ¬%ðbfîÑÌÜÝ<|:¿œ‡¿ÌÃëyøªùÌ(©ua})b—bá/—;9gcܾÄwFkoâöm¾m´Ü¾É7"¢ÐÛg4Ö:H¶·l nMK78|ú3»LN†ú<­W~{ÃÖße2Ñi C;x£·Of¾·×óì+¶ÍÓLÂ;»}œv1©°rÌy±ˆïG÷"ÀŽ£::á…#îÄà=DF•M[—;£ã Ù~¶´TÞ‚Jn2"…mÍHÛâå4R¿,o,Ÿ·OKFá7ÊR+ïèÆó›zZßÎH¥gT;)ìà\Ü줬šžÙ¸¤ j¿ñRøA“AyplÂ8q‚=y98›(Â0}¶§/g~6’f_ÍÃÙ´z6¢"‰.Œ6Â/žË˜)×t~Ý|ù[¦éµhc§Éˆw* 6ØÀµô³–ÛKå#£®(s-½!r¸Ooª%/Ë.^ÁB‰†Ñaû{æú/{ŠAz!ÅðdƒÚÀàzpô¦÷YOêfgä¸ÛuaØoÿø †Á½Êõ%äjl0Û_ç#7‚W?É"En—w™rt®B¶"_Ž‘†›/ÁaCšÔ0ÏG}Øe˜ÒÂG’ÊN ÈDºlÖkì pâ›+[V ڌⒺˠƒìsÀ—$î„ðf2pz¸.KèÎo½ÔÒ7”µ™)3(§Û!^ƒ;„Õ®úÂ[['ë`!éa‹gY}¯º ¾ªt6ᙀ6J”# 9ÃL3Ç#( " ~ˆ^eDûÛÌF!d–ï1Šjü‡C1©‡xF£Ë×nbIÉôˆbÙØF®û(¶ì(…t!“E¤ix7ŸÎÃWóðÍ,ó_¦ÙžÌê:¡'¥{0{êdÜ z2n`kÁºILÜv xídsÿ¾/ZnLÑ8HI¨c¬¼Ü"}écmŠw™QÃîma¯½¸I…p,IŠGíxT©Á„ŽGÅß%ZýÇuÍMÒ‡àI²Ø Q+=#ú2ÿÕcòXÇ’¾C¬X =Ä5°<¬XË:´{œ·´N×^†4IE ­v£žÝdùÂo›+Kÿ0=ÆÜ‰ð$!Ýî7†èÙ•=Ö=ÑŽÃD¸œÚþ¶â‡ Jí'”R8Kö¾AãÂm#ܾϡeÜ¡‘=-WˆŸj]ϳ²ú'2|~m£|É.‰oQëÄËVuÕ_/ðt‘Š­Í?É;ƹ ²ùe±V<=ÎB@¶WØt.š°c’ï]V_¯†(&ßT¢kj¿ÃÏr@†tS¸•∞rÍ4ݹÿ¤tCƒØ#§µ|>ãq‰ÞŽÛRZSÑä{½fŠÿ¶–\£&JÖJÍ•í÷Ë@¹šñäaâÁTúÊ×b¬£LûÒeF„1û@nÊMé§}î2SQ‡˜ÂÚüPsÆ¢Ö{âV,ð l¯„9·+7v“¹Âl'Î1m*–-€Ìh—NjÏñù53ç·ëªLr*ñ§-ìFþê¢@…ñ~Õ€Þ2#લæÛÌKk„K×L[.]súŠ«Ç0S¦c ¨„ÍÕ7WŸþÈë3·Ùnssd›-ӕɷч·64¥iáu%’y*5F Yr´4FµªÂ|~Éé-ùpA¹B ¯”jÍ¡WÍÎ|Íå3 T7|ô8¾öó}y¿éJàI—9VÞBQmäÄuŹ®‡ËŒ&½È¤."$t:³ûçÁQ#ÔXI5rˆ‚”6FÇ3ÒÈy2Ä×0Ü/îhß}Š8%2êàš8=í7 H߃UïÃ¥ÓÛKµÑƺ!†„û*B|ÓÌ)¸¯èíQ€ìÝñ?ü8Ú¥7­!Kã©5ijkøó p-QØÓtEÊ(•_íêó/×^,ß®ðçiÉV’ j;˜•áTzš©*ßüxè,ï0E¦80'ùZƒÏ‚¡JkÞõ10}í§ÓŸ7{ì”f ° UåiôFB"l–Õ^îòbÛ´íÛö„¥ß™¦\µ¿Ó“ GnÃëZ—¨Î‡,hÛKH¹Öò·+©ƶá%É&KÔ­®,®)ë‚-ãâªM˜¤f9Ãiï¯ÅêûÔ)‹/{$çç]éô4ïä¹í¯žˆ#$ïÖÊ#ùEÛ>&Úðû‡…ôÈz½ d[so¢SKHÚÍ;g÷@dª ÔÏpóq–ÙIVp{»™½ZïWj Eˆé5Æž’€‘vPªîÁ­qº½}²M­îVcÎ[=e@èM1Ì"¥8$1ÍœvP¹Å%ší^÷uHÈ‘BúÛ¤: ³ÚÑ¿ÍlÔâ½oÕœ¦ŸãHsh[(kˆ¬ŠM]ˆ¹.n!Ö¯¬F }ÓŸ.ÞBU¥¹•÷í¬‘Þ¾Ö“T—QüÃö¥»T”€†÷%©Cz=rÌ…^²g“T‚£Wì÷„b{»+û¡zí‡01ûUãm(àx!5!a¦™lÔ0>áuÕóð·ÓâféÔÔ9ha;UFmÄ玗뺸¤Üý:äñðŠGç|­{Yß>@» Ûtl^Ó/3X(¥!ãžœŠúÖ“Ó*¼¯žœòô–•µäÊÄé9 ~Øñ¹EÚ–¡î1&úi“Ÿ2ö³µáŒŒé¡» a¼±m·{ß§Žðu”L¨÷oNéDÚ¯v߈‘hõݷĶ­ŸŠÄî[fGm›·Ö;|~ÑŠ“„í;µÃë iz]a|Ò3ýŽ!yy‡`qo‹ÎÐï?RãL ºfÂçoœÕÉ“gó‡£q¦4t@³¾Y™8½mô³ ãÛfßÌ×ÝzñMo{Úf!†Ý6sóBühm3é£FÑÜ6gNo›ýkÇ÷͸ÚÔ7›Å2öÍNËØ7«Äò¿Ð8«»);Mÿ~ˆik™×ÝÜTÞñ‹ŠQãé×H†×ÇÛÍ]vÁ/Ö¸›xÊ? ;c:4Þ¸•v°üÂóÄ;Ü·•ð„å¾ÿ>3ñ–w§¼§ßmóvÞu÷f™À~í®e]À½-Q­>rGôy»[×Ìÿß ïÖe?;k‚™ÈñÑÇ]a<Ÿ‰Ý¬oͰS 'ö9xí\@vÁ_3É!è)ÏI» a| ó°*¤t Ƕ:¨î¿ÆåbJˆ ³ÚpƒÎRJjn¾Ç›}§^wó”S!¥V7ý[‚ÑnS›£qÝN˜üÝÅ?BÞeendstream endobj 721 0 obj 4029 endobj 725 0 obj <> stream xœí[Yo·~ú#îãUM¹/]â¦EÒ6‰ hú`-¶ X²cÙYúëûrfxÈጮmáäÁÅ9Ã9ëw–ûÃN r'èÿñßóë£_ëw/oÄîåÑG2ýq7þs~½ûí)¨¸‹CtÊ™Ýé‹£ü¤ÜIéÜÎ+=¯w§×GÿØÿþøD .j+âþòX Z+aåþ–¶M´Bêý9­µˆ1ºý»´v!Èý+Zúh•ðû·‰JpÒúý{ZK/­ŽÕ™7 n¬ÖÖìoòqµúçéŸpa)« c-½Úè8à2jwz›žây%´Ž~EÏ[oCP¸4ÝÔF2)]‘Rb!ï@Cê`pÍߥet ñ—²{Ú=ðå¼Kïøâôè›#ƒ›í~‚þp$CÔxã¤ew×øeíç×G߭ʪ¾ï,«¨kÍA(•eu].wY.w[–WeùUY¾)Ëçey1/{"0üujâÄ.álŒYŒZ{÷²´Ñ2KÝ@‹„ÎR×:H²¨Ç3•ö`Œ±û_1 ¾ÎÇ­W~Z§Goóqç\E})|'¼p=é{\ܪ¥Ÿ¾¾•¾QRëQúí/+N%ék#å -"ׯhœz„ÈAaÐJÕ"ÿº\£y¾òÕ¦•ÐÈ€dÕÞãp¨XÊÄËez^¸[ÿÀ$0>JVÄk“Ü ð5Aê"UŒ“ZhåÔBùÁH+ÂLœÐOPs°"_y3êWû³DÃH³ÿ¥\º§'J+\kw"aT‹ÄŒ-kJ»Weù¶x_vßUnaaB`µÑë*ÞëÓ÷F±´ƒ’[êŽÏÅ S‰rÅ$™T¹$G"ÞœX @X‰Ê”*âWù¸Æµ.–n7(k«ãüMìü›ß22·‘ΰOº™ØâྠVØŽû­¬V&¹´ñ$'À ;rÆøÃ$¦¸!‚à‹´m„Ã×ôýÞuf‰µê‹âŒ}^¬ñ¾¸,îie±\R5Dn9*`Z¾+Ë˲|^–׳£èi¨†“åµ}&>Ÿ<ÑÊ!ŽÇÑ„ðLzâ`·¬jçé€Q˜[Ö2@*ÐÜ7*íˆß }’ñû²ÍN¤7ê¨Dì~\¬,‘ÿ@UÇ÷QÔJÀ$ÏÄÊ 2{O4´°ûýž±‡¿ç²¶FzgëGΙ©O(jÝ^´6|¯+›;«Êö÷ÇìŠC±‡$së€Ñ€Â6B+&4œUÉ©iÛÑðD|ü£³}¥Ã&n)M:âBµý¼ú²y›û" Ö°ÇËé¯ fà]˜È#*Ô‘(¬e¸‰ñë(¨y”Ž;'§€§¼DÃèÊ›²`Ì>áeWŸsVnÍ^ÇBÖÒ“'sQ®Åñ›Ìb yuLz¥€¢ “aN÷„¹#‘GpG9Ý^é'òÿ\5s¹= Tª†Ä¤‰I³§+ÔÞŒÛn¥"‚$H>;ލ#CLA' oâÛ+zû9.(`iØHh iÜ­˜8Õº º&DÞˆ\©>tÞáBc ´‹tmËHÓ õÁºNUÐ-ˆK¯·r;PºdçIAW6Ws7½J6âNø®ùÕ÷ã‘&{) éÆe'áþ̤½b~CY‘Ï1ˆaáb©½—PrÃl"rè½—)–âN æ] '5^¹ ðójáN“M*8 Æ~`Þ€ ¨0~ÒYÜ,eHý²,l“Ý´ûz©*Äèf¾]X7yr®+¾s|T4eza´-•ÞŒtžãnŸ?e`Ú,Þ®`®¿·¿˜i&§:þ"‡0;½/¹ü)÷™ WW' `QÏ ñ¤ÈYnÚ ¸2J5 wrò]<ÁðÒé$û]/+#×pN2œš Ò®ž‰[Ïvf=”u´3ãäAè6;%r"àe²Wz€ ¢b0-‘ùÉ%JZ™ ¢´/|ã›í¸gÒ‘:œ¬Û½%xÓ| íêít'¢ ~æÜÏ×°ë6—RR¨òù€ˆSm´ð kG“ß08É£õ\ Ø4­¤ÆæP R…iÙ¬jì!%±&øµý¬@ ¹q¦ümº â‡t¼ÓÍÛÕ‰[c›uº©DÌàRÖä¨y®ˆßô\.ê|ѱÍÍiôê]{™®\[Ÿ®]-]€Æú•Šá¨Gíñ*æô¨=\¡M4!}wºíª-zÔmŠÿÐõZ"¾RÌå®75‘2‰±Õ*ñ"ï*µ0ó*½¥­?¸ ŒãHòþc Ú%°vjî·×$k¼Ò]ÕuAÌÖÞvívçK*”ÒV‚¯_0/Çi6µÞÙ‡ý2ò“å×ü_37w’±I®cªÍÙÔ±VíVïšZ0j«}‘OÜ5 ±p~Ó“Ò}ÆfЖ²â@if­¨AXnV©CʶUÉO¹(;ÜHR-Ü´RCöÑ….gÆZ9÷®¨ ª<ð ñoÂñüuóâ²l«þ‰8o÷üy*ñ™Ý“É`4<ÒÎxã€ÈX¡óÎüx,‰æ`ä³F̧]6WÜ7«Ä^6~¼‘Œ ž0!çØWâè/YÛ‚™GÇÒ6›(ãhc¨… ÕÚ!XÙ| „C|œÊ…óßð´þÄB¼2O)Úh!)ž¦12m燌‘Á‹ÛDºqwˆngŠ-X ƒý~_¶Ï›Ðž ß´šT¸ Ú=å„@²Ç¸©%Åuûn‚lÏÖÜ<`BkæÐgÐc¤{@x¬Ús·ÓG¥ ”—ŸWß‚dÛ*ï›u£œ‘ßøEuQ4¨øøj T×£Z•v”B{êð¢YRÊVwòîûî†&_”傹iw1(Ùînh8¡òJÁ/šKf^|(»gMž»õÛ»¸É>“%Í·ÝÝÊÈp_xte« V dÔC{/=¼è²ŠiE­‡î\Î¥’ J±Kß4DxÙ½°‡·Bô|t]¡¹òl0_~öÄw}µr`&ö®’ÐfÄ”’ ÞQªëŒƒÕÿù,7 ¼¸Ò~JPåãàÍN êa¦À+å í´ñ¸‹ç3A!ɾ÷øö½!U“šiŠÔøqãÛ 8ΰiÊQÌj‹ë‘ßѡΠ¨ü H/Ôv GœöU¦UÕ“igWs®›ùåüÄøòh\[£Å.ÔñÁ½MÀÊîž|²ÜK#NE°ñ‡«"õ£‹µ*fÐÒ޲!Ó«y¹Ò?P¬ÑtrÄ4:ÂJ¼â~GÕ"©«\©V ÷Ô ›ià¡*›Ö}Õ4q×'Õ( EP ®­yc; T j”›&Ε꫇Ó4cÁgOŸ ë­LšÛ fq¬\þàQåÜ1è÷Ú»¹.&a™6<0Ðþü<Ï„G¡ÚÞ9}mÜ.wÔv]&#ù‹ÐúÕÑdà4&ã¿i49mç’†IóhrˆNwg“iö…E²«çéÓ¬«jcÝ‘²Îlò°¢endstream endobj 726 0 obj 3459 endobj 730 0 obj <> stream xœí[Ms·½oåGì‘TiGƒoà˜Ä®8)Ç.KÌ)ÎâJTªDR&)ÛÒ¯Ïk`fÐÀÌìr¿œ(Ié Ýݯð§eÛˆeKÿºÿ¯n/^ºåõâ]^/~ZˆøËe÷ßÕÍò Ä24ÁJ«—oi¦X -íýÒIÝH#—7‹¿Ÿý|ÑÊkãÎîb3X/Ïþ™{×ç+ƒ Nè³W¹÷yì÷¹÷brÀ7Cï?.þ²øúbñÃB7­Yþþ´mkåH+ݳ¼AróCÏûÅ«-…p¥¥7Y£7¹ù@M-…Rgïr響ØüÌ%ÓXaÏ~<ËÝW¹y—ßVË¥æc'BY¾\ l’p19à›¡9«DÀ^)†¦’ÒBÌhB Õ%šÝŽæ€Ð³ó•À67Zí´ 8VCó>7Ÿö¯¬mŒtn‰Å`¨Ë‹5=¶Òû¶ K'D / X€Å÷pÑ ™¦76¸êwyý¹yÓ!)!©½3ˆ—.pk$ßg»nöGRÑ¡CR»!iCP6 ̾g5§ÞÇÉïrïÛÜUì}˜œÆz7d ਊd±®”L°0`_Wq=ŠöX#`¯&5›Ö·HXÐ×5ZšBágņ¬@|ô°§3›/'7½Œï› Ú:p˜Ò·•דÊÝOE ¾xi<-¯$"".Wk[íh›Vmc[#} h„òÒ%eHÙÐhÄ`'cÞfÖ½žT¾âd¢T•ÿ[ÐÚÊÊÿGkÎÝŠVŹ/^ÊÀW^¥º’ð Õ6$¾ŠºeÚWSJ¶F€ Эƒi…)¡­Ú‚ÅzÔ¶Þ ¦ F¶ÄFR¼‘µÑNŠ1äÚ(e4ñ ×AuªŠ2§¡-œ\®TÀ¹pEM)»â  ‚£Z ;ãW“Ü ýÞåP^·<ƒã@$°tã—ÆI0UD"TÛbèÙ=ƒCÐp‰RAÒ«ý¦!ǰ¹!êäiÉ;lëZËg^f‹˜+y‰$ÉF JIŽÄÛd™Ä6H¾`$wö)iÑÄb®`p`àZL:©FDJ]zé.u¦Cå—¼4ÈÇvÚ®ÌMµÄéåöþn  ÊM¿Ëj|ÌÍ›¡9å¤bBou—÷ªCYÈz¿RÒYøÕ8†bãù¯ü^% VªÅvk]•#|öÝ9HaAª$]KÛo¢”Ó»…aJª*ãÕú¾®LcsT7ÇÞû‚^j˜”EjQ¢_îyŽœÉüæ”B쓎·õ“œ |Îg,h8 ¬slNÚ6­4ûäÄ#¨üKÎ*œÃ*jÑ-ÒØ¨—sRô"m:'ÕÊ÷Tܜ÷f½î¼ÜøÂqï“mmE1´°‘²ÌÉ“÷“£µXM¶Ãxƒßôqo°HžÕtz¦>eM­FOœäƒðŠ æScÁàpÆLÏóøT¸*Ú> ‡Êí–áƒ0$ uHë WÒ3È^aç¦ÖÎõ ƒÖ€ú²W¸Ï\a’íaß¼ÛÒÛÎå‹+–/¢8ÛøÏŒ»9—ai*ÈÐHÇ­í…GDiˆô,×Ìxneo’¼Ñs X¯ðÜ8¢ö\«ªÁk†îu=áGÑj:´¨ÆV™—¼J¢”öv  û$è»Giåç><¸·É,#ÔTX<þ]•xzåJïSœãÖð-ï"5¨Mc'ì()ÕxÔOÎcV4!ˆ7Tš;ßô>-‘!Úëq6Æ·CÎÚr ¸¯OVÄ´#ag9ôÓ9jy#qêiÊäº X3Ä{@K×VÝAä÷dgNŠ~ÃZO`#©2¨ã@!nÅÆ¬M¹Æ]‡ŒX­ÁoÆIScJn,I–—VQO¶à7E¾)÷€&ªà+ïìEOV¿ÆÒ±¾ó veù·Üü6»á·½Œ>yøá sWÙä¡Q\Þˆ¬]s¢Ým9õm‚QˆùsH¿…­*¾%J¸›£ BÝù.X‰|›¹‡ÀUéœû¯;­à“sCÞ²|ÂVbÚ®â­ZRŠ÷¨+„ª*mNe› Õj» )Y§DeÀ~±œåÕC‘K1‚*†Û™ ›HH£1ÐÈ:’ÅDï-òÊçƒ$Á ]–ÁqGšA] îϺs_ça2s~±½eJgEØô¥TDÌÒmTuBYÑ@^„%~—–Š>*¶‚Ó%d1å{·½l(ëë$ÃÊ~^¼œ»ì´”sæ¤Âz”*è“~à2sG­9ýyYÞä¹´1Cjþvqñlö–°f…ß~|ßqÅy§ŠQâx“ä gFËHäÙ ‰¼¬™‹s>þ}’Þº:§F骕s•ôc§V›«ÿ€ŒYr·âsÅ!*Â;ªõ‘­Œ®• Ûªæ¸Î»n8˜c†ü]÷Ce_મ梫i=»ÜÌÑn؛ⲩ;XÐÍ®ÒO8Xôáɪơ4ðå•^¼c7vßçæÅ䀩+=ë‰>—ðY¨¢éJ‡áÇ=®Q˜›V-µÕTãl¿v޽ìkj.Èø·ÛËÜÌ×8“÷1¦‘íƒ#’ïÍ„µl¨Y G°!›û‰zŒÜp=#ï>Mt2ŒâÝBª ÜΊªxßa½ŸKƒ’ ^#xbþ5µã½óUóþq¢&æÿ”ÖiœÉälìeL²ÒšâÎû!¡ u¨½Aš¢È.Rö0¸?ì(=‚å¶—¡`PžÕ?§ð5ØU£Y¹0ÜWñ‰È"äñYàωyN-¦­4Oû• &¾Ò{R]p7í}qfK㸫³ÀàÑ0wþ8ƹ¯@€Oð#7²±zó=‘wâÉÌŽáÁ…qý®ËB_ÈX¹s!3èD‘m¨õ³É““–ËvØ©ÓÅä¥5m·ßÿ“ÍÜÓ èÑæ¥6ùIÒƒ@˜”~èÙãA R†TQfãÌî¯+¿Êé2x¬zg?ô€áA+á|æÞŒ'bNmœ6×Ù­^çÏEÕ×5D$¹˜_¾ÍDD_©o9iQèMOäNY]!¿Âë&Ð5ØJÆ#S÷TÏŸåwÐ}2¹[n‘›Sþª±œuryü/ᾈ¥ÆÎ8ã§p%‘‡ž}>…Ç«$çÑpЧpvA9ù‚ir—œmЖp!²„&h«á•çä ^¯b7{äÀßDtÏ)àò¾xÁžYL’Œ³Ð;K5z}pü _€÷ϾáÙø_²gß}ÏþϾãM:èÕ÷Ü.ÿg¿úÎ`ö¯¾÷³õÍÁüß}ôMßþÈ9óÓÚ¾gÿ§µJkdfs¬§Êì á—P…t=­> stream xœå\Ér7½÷Wô‘T¨ËØ—ëx&F11KØâÍžEJMÅp±jùûÉP… U½#,)|ŒF'/·‡¥ùnÍ:¾fø_ú÷ênõÓ¯v½ý°bëíêÝŠ‡×韫»õ_.`€äkßy#ŒZ_¼YÅoò5W¢Sέ­PÐb}q·úíìÃ9ˆ–Ni{všÞ8qö{?6ÜäÞ7¹y—¼Î½š_#½só’ön´0–g¿ŸåÞëJI%¸”g¹÷UnÞÖê„æ¹ù>K È2ßææ‡f/ÑáõµºPøYnþ~~¾áÜûNë1Ty’(æË&jχæ/þ±r®óœùõ† ˜IóõÅ5š(}_ !°m*÷¾µ(œð§_µ£§x礟 ‡ÙSÍ´aaZ8@[ké„2J§5¾SÞõ2>5•¿ÍÊ?äÞ»¦¡î§Ð‹ðNÊ„–²?.ZÄ·¾ì…–2?šo‘$ðØÄpηúH¬S‘'<8…‘QÂÁ)¬_ÿFJÆ;{(ÄoÈ×¶S  XüsuñìûC㺩îd²F¾éðyÝ\:AŸh|JjÎð$›#Ñ:85SÉæPL6ßJ†9‚-ÃÜ€ÍIäï» ÊG¢u8ùëóñ·^‡€òf˜C Ø™a`'[zµðÔ#ÁQTç8zŠïŒÖ>zÊ_ƒO{©™K)˜æ°èV^3ŽË„¶dÞ{@`Û8Çaqд^ f*”â ‡Ðæ–ké‹1ˆ€ÒRj…àpåeR•—‡#ÐæV¬7Òw Œˆš^À÷“Ò[؇cðYíZ¨©öʵâPpø Öšñe€(œuüœ‘ûOî½hx1ôâ»Xý²R ÙúóŠ­ÿ¾â΢r­™ÐÌu ¼cjè¹]½<ô\ÈKÈ:AB'1ªñ\è.+WŸOÄ&9ŸxÙô‘æQEËÊÀ‡ª‡ ¬ë1ÚûhE)­ò1j+•äÑè œˆÉht)·.Z:K)):a“¿$&áèça!«zðö<€Î|Qf™I–í(\ÍúèºÖÂÂÕÁc N05´iŠÁt —ù‹¥i+ìäWéò¯je‡Fð¤‹Ø†I ³“¡ 'å0‰Öô‡þm¿2[ètS›†xQcBUÅ¥) K¸ÉÒc½´RWå™~#M,¸ÔW`óGbRŠ Õóqì $©5ä#LÊá:í,µ-5Ëý9øAü‚éꮣ4HŇ~, (CIwö5*ļã­ôÂȱ}˜r~øG3>ßÏ¥4À>$ï§ëòª[ºY`1ž™§8®ÛC¹çóÊÈjÒó§8[D9ï)£öWC{o嬀À¾ÏÍÛÜ|ÈÍËÜüTs ìmç&3D¶/ÒÎu™$j7’c%¯N(?årVã{ÉLjýT÷ M\}çŒ÷¥ê4©bVÂÔ‚7^·fÏ0Â§Š„9UæhÿÝ9$+d‰&¶;”ç ‰ß Ý©øY.‹êf‡läÑhØ®¬$ONe¼/Q†aè9U’ JÀ¡“?Ç/úŽ·ËI¡Ÿ“:Dà—œC‹LÀáUÖßœàwƒõpŒnƒäb'8¦'TÕ‡ìé—çè^ ¥Ã¾ªQ…lÐÉ:^Ý_Ì!¨prW”ÑÔ©,{oâu íÔK-|›Fµ¯«)ÙA*8ÍÕ@Àr «Q:…n§l'„œ tÕ‚ÀD¿[ëËžam³A”qÅÿ¤ç³¢SV‘R3  |x††•XˆFð ÒHäP²¹ màÚÖWï+é ÑŸbZ±w‰ÓzY»40©Å¬åñ‹¶!„ÙKKØlêÓì£9ѧ üŸ›¤ÿ4øÍ5¦$æS¼™¦Õ´L^n¨â_ÏKÀ6…ä^t°ëŠk…Å)ä’§ø‹°´±ry]ç&éÍ$ìh–&ý’,meòh¤Æ5önOgiBïAÒÀU3›e9ÕúIš‚ä'ÈöOí¤Ón4d3”ÓÆâdǼ¨35-kI†¶»ƒ¼fv£j–#w“ cìUÃ'cPª‘£Aªçäf¯Éë†K„Ý~µ=™1=(¦f 9 /ž2rKËfkž°ðä °”ä^̯ gìIŽVf\̱#¢²ÁDBü_§)Ý,à vf"$9ЭZêøi³ mÇóÉИÅe%kÂt¿ñ{UçmS¹ž¼E‡hšñ¨Hê牴.é_Ö‚dáÊ—‰‹Ó£¿|0 l l#G\úÈ¡T m‘+¹oˆXaRâÄûÁ'"Vï5ù©Ê=ÑÙnÔWÇ(·ëq‚ˆÑñW+›ôNÝ´¶Ã¶I•g¸ @Î?ÎrÁ¦Êõ–ó‡üÑ®ý}ŠéóD¬’ öeÜT‡ ²•ŽásœxÞÑù†€Ð1fÛ éd¯¢ä84OÛô Ç:#ü‚EÉó,8[r`NÍùRt+¢jw z@­_Öx²a;id‹²m§\·Æ7Ô²ßÙ¢à5=‹â V’Œ7¢nõލYûˆ•ªÓ%íÁ4»l°g³p¹†òüôonaXàËí#ŒýÌL‚D­sóÇ:°ÿtæ@º5sÒ4,\/ãjtÒ4¿ŸLê,;ÑÙY' ¹ö:áÌ:áY‡<¡*N³{¥Ë(˜`i-®eËy¯²¿S¾¸ÕòkÎ;}Ú‘Fz¯UTÞ…ïh…2~_qk¸=ã¤_âC`{ ™öv §]ï|iø– w»F+Hïtï˜Iç4<®…;#q¿*! j¦Š^<¯ÇÝ”pñ™€(º_æ€5awƒÃñʯ+²*ᑎàF™t$cÀåy!…yKúïó*¶Q|DGÓ‰³ð`Ié¤bJ`œ_03,BArh>r°Ae¾Ž>ñò§zŒ!9 ¹†8æø±Jøâ”×Ñò: „OZUâK˜PB„éK¿éåA̧46'ÿàô¨+óÎ8µ’éTŸ´~2ÅÐûÔ¡#!*8 ‰…0#JFóõŽíPØ_>´Sýø&*Œ¦«ûˆ*j4â+ª%ÌÎŽŸˆBï=ŠR@ÙAô¹W)¼@ësoìÑØå MeU~Fûq°ü„Nų£¨†Ss´$ήÏ^‘dþHÚQ¶vFµò}Úʇ‰ŒPÕQBo‚˜Ëe.§æÛ/ø2u·FÌÇŒ!Ugy={´“ˆ¾#ôXÚ¥š¹k$‰›i=)ýÓðšg×9Ùmf†ëß)H¼pš¿„/ÚÑ ¦PèìsNa ×D•ظKØ-K?ålG¼È+âEêŽ >É éuÖUeŒ/(\yßI]àUz´%K"pQc¼ q4¦¦øYþç°óñC ©—®d6£'²ý`oŒE•÷dõWƒ€ôž•çn¹kDëT@Á¸üÄr¹—©Ü) •x-,ÖQ ˆGa§?R¨_4…Mƒ 3/he{$*^;¤‚CÏ1Ž!H5Êάvyô¦ñ0#(:¼º¡¿Ì®ïÞÿŒ»õÀîc! }í\ã%\4¼(Îþ®’{0•$¸7 æ\ñîÒ ×5Q)p«ƒ=Ð3ph mY°žüÄ4þhb´1°¡²cnPZ„œ7ÇaOb›1G-’zN°ü ©h’ö“yò÷ê?„WŠÖ KÏÄßOhKXÆ:ËÁ,œƒÄº–"±j3|}Ïá(‡ã8”lÙÉò¿³ÅÙ§§V0£( j– í9¼š„¨Wªþƒ ‹ÃÉ=–^Gàì{އ$@ÍÑO€çÛ…ðîЗÇÓ)_ºgßsž‹³?Ï«&0䢿LJ{éŸýmËòxZÛKñL='àiEÇ­:Ï÷MŸ#¥f»>a¼kàP‚S> stream xœí=Ûr7ryfRù>R»ËYÜ/ÉSn»›”k7k3O¶$Q¢‹”W”d;_Ÿn`hôsæRtm%¥M q€F£ïÝèù˹˜ä¹Àóÿ/oÏ~û¥?¿¹?ç7g9“éçó/oÏÿù hy§è”3çW¯Ïò/å¹4j2!œ{e&eÕùÕíÙ×÷Ï`jŒõ/ÓctA]¼«o?t¼©o_×ÇÛ:àU}{ßýÙ»úö}}¼f3%µ†—V¹É*}ñÍEwð»:øc}û¢>¾å ¥Çy2€lù»úxß}K`¸C€ýd”mþU}üæÙ³K)cœ¬]£­.’§{ÓÝóóúø¡>þ¦<~{õgÑÀB_J+Yy~u ‡Î—?ÖFÜêÈŽF\~\§ÕÄÝw1@NòùɈKø2þüꋳ«_}M¡½c¿^ÑÌMcï{»Á•~û¥ ”]œ‚VÀ±é¨ÒjB„})&'¬ Hž­ÕAùZ%<ÈMœ%8™ŒOx–^Z›1h1 ÇgÐbÀá&êTÙ¿ð,=@ª#@,C†ô ~`ëèÁ¶B*ñ6$¼ ¤6šÐ#˜*È"°¾JJ¦ì¿TÄý©¾½êøCy‹KüÛÕÙŸÏÌ$ìù`ÐÿþL† Á6?·ÞGüÿ•fr®¼y{öÕ±f”“ñiÎÉ+ÍþÛ 79óã¾'NöÜRçäÔ; »`Î_NÂÙóyjíMÌl½6Zæã7@NBçã×:Hò™ÏcàÌ” “÷6—q GgĽ 8^%T&®ù—ÉÉÓ•^‘iîóì@AÀÆðè`3ظþòm†Ëz…dy Æ«ÒX–§ïñw‘@"›¿nwSÖ&C¾#‹Ü‘Åo*Ldî×yE¯Z ¾áXóS° Ag¿¥<Ÿž]°íëwÏCíôʼn‰D4®9eaIª˜@ZN/«dT=Ó h¾¡2E? ï2ø9ƒuÍ!ÓgŠP:ýŒ\ã}ƒÜ—¸(·,DªyÞ=C:¡J—¶…Šü°?åŸ2 1šƒXq‘ÎM©é¿Ó„F ß ¡|2‹¼ À¢”EÇü<ð2Øeà—ìSÖ›в|Þ‘Š‘3¾ ÆÌ$·’Ûí "!W(]„õ›¼–¡Zù´|«¼f@˜ „?B r~oá/€ÌäÇ:;”-×uòÄ Ì­Ÿô"ÍcT:†÷]¶^H‡ÍJTFU7ä“ ºíßç¹QŽ–oI\؇S#±LeÆ]»‡2œÑOڛч·ßÒò,–=Ø×kmŸHÞœ°‘ Rxk¬çouÃ}F¸„ñ`šÄÛá‘ÐÉßÌtàô>v\øÁT¼­M¾ìлû)¸Ä ÿawÊU3õ¸¸EøHη²­ÎWØÁ·Íø;,Ò¿k­i$¾bÞo<é- MÏD?ß7–7m4+´\–û ˆ‰âÛ7²Ž ‹ ®…€,7%?ò³˜”sTrueޝ"AWñ˜ë¦Â‡jD€Y6ÑBE¶a•¤DEQoQ‘MrFE7°ÊL+ºX "Ù¥•à'Qi嘰"ÀɆzU`xË®EÜ8²‰jÔb˜›˜‹Z_×ywQ õÑvfÖÚB‘™ëÀÍŠfk*CÃi-L2\e€Ç›Y6Òóy´çóá[m6M¤ôCB‰™Š¿BÁo«‰ÊŒ<¥j]x,ªÅ锓œj  öS­×°yyJm%á˜wוpžEa‚"JO×ó¡8·çP²[`„ëêÌÅ<ÄÑhý­Mo¤fòø<ù& l®ŸÇ$ÎÑ·‘ª ñ‡Â¯³¢H•‹gM’?ÔÇçÏ/69~­(ÍÙîþ2iÉùñ‡®6«jö‰D¥·/ŽÔf ‰w#¹“2¿¾¬ÂùíÍpŒ~»ÀÁ³Vá0!.44æhWæxÌÈÞ|N->/²Ö¥t“•æ!A*¡6-1oÐÉíÓÒ‰³h¹îq$œÒµDü8Ñó®âX¼~8埊ˆÇ …¿%Q‘%§l °b¸SSv=ÐÔ‹½Î³_TK2rò’´è§â~¿ÊCƒÃýç…êäÖmO£en9ÿ—5À’­'ÀzrLZªžÊb-€ZT£}Îhpt³ç†Ñ“ŽâžŽèÅ"CÏÜYYX¸D: ´HmèøÅÚ‚gÐRÊA¨¨šã¤FÑÿ´¨Nñ5J¢NòߘBNÀmÔ*UZ¸”-@°`ΕG€ ÓÈÑw=Ãï:OB0uŸßÊ F½»½F›ÒNP·Y„Ä|<‹yöª;à £æ,‚K!ž›à8ç·ðÂ0Ê›ã30ú 0øSÁçÌÁ«Íó±g ’0àbÓ±-Gàoª#Ôñ1!ï3_ˆà©×´rl!9knب=w&É9ቯźDi€H¦Ÿž9Miº*¯Bw—¸t'²D¬¹ ["Fp !%wšÀÈøŸGT i%<̤±#¤Õˆœ @—¸ûJú3i™öiü(¸¸Àbõ2¥@cb BïspÍø¢‡ËÞÍF¤§ÊAÒ¶æGõ,òã]}¼yT/dj½ÙëàÌòO8eŒ˜Wª!bwFÚIi³7Ò$žÜ@.QÒ^üyAÉP´aãN~062{Ÿ”ºY†j¦¨ãˆX5<ÿ»ø¯úøE%/6Í9e'¡WB9±F9½ÍÈJ>=3Šï¯]tËd8K±!úÐB$LÃB_å¹Õ õýÍŒyå†CÒ•´+£N†df·Ì°#µGQÚÊ&m# ®‘Ô˜ŸœâÉ :7ŽPÑ &;n5†’80¾EvL‘:|¶{I¸†N‰2ÛéÉ„U„6J]üîYSDÛµ±>_¦P¤ÕÚñÇèï’` ²-&Ô»É+ǵ6¾6Òûn䑼-e?$wìz5geR šDp'ƒRoGÛ'·%¡4 º-}{h~vÑx7¬«¸É¨BVª³Ì‰™ u[«ÔAƒM_Α‹Š:´†£ñØ´ž‚ðGHKkR {Gþ‡¼œmƒRœ ú¨7C¢\*. eü©òån&8²žfÍéisêÕv²Â°„nò§A4ö)Nì¶ È4"4"žHIfæÃm5äß2ÞH ¦Ö¾º]A䘚2*ŸËŸpTjÔIÊ‚ÓBˈwž_é÷Jp8“K[&ð{ –¢›{H¸Ër{\_jT#jÜ@(øK¥jÀäT‰|È J³+è©Q„qåÖÑzذ\[ô:C¤Ô¦rI@Û¶…JÏ\<•#^ôýžê©Âý@O`ÈMz\ÆEäû‚I»ªq¡ó5V~D·IfØìó[ fç…]äc ”‡ˆø)OW³÷N4¼â¦(|#M%8Õ¦[Vp)QB·ì0PãÇ5+ó^lôË„RÉfL¤64g¨Ð0.µaN0Bâ«ë¢—™þ.ÔÊ-cGå-?Urì:X©S«Cõ.È×LHµçÜæ¿WçÜ‚ ²Z…XœÖo7ÅøÓ+“û Ì&¬%ÞªÌÎëÓ˜§Ã}ꤌmÐb¶…=›VUõ¬æåñ$Þ¦ƒrÃÃrbWÁ\¿8¬«À€8‰{Xz|`þë±d­Ê8Z ³ÜÁ!RòYŠls8$Ç,µ4›Ò¿ˆ"kÏ^a˜`g•^ÆåþP‘J™˜X pÖ Úsz7 H”dÙ—Œ¢½?µ ÁÅ…B;ZÊzìJ‰qÄÕÍ3& ô$6Y\)ónĆ#ôxòƒÖzÜDŸ‰ß¨›uu)‹¼íj#¢£î7fÒHùà?ÖCég°:Tšpä‚'i$q},pë4ŸªöRºÌ ˆFVWÞ¯«£'Uoí}ê¦#ßÕÇëî€uOÛÑ4N¨Ô_#˜A›œ™Õ†_=îÍÂ:H6Hc‡ÈF‰tK²Ù%÷mÞòà)‘ã…sõjÁˆjÈÁœB5i•§¢šsÞµ•sÊkQP÷7ùÄ0ÄÚ­•m1äd)…rxãÞC+N1ãä¶ü–4Ý>ñƒù$¼²"ðQ qD¦!Ⲛÿ?†©µ2èáo2c‘è~|]ñòDå_g `¸c#"’2LÑíU·8<½Ø![ )2KVÈ`ŽÄåz(¹ßu.# pf ElÀ³ôTâïbèjuF Ixóè³s{l‹.æjOöûèb]Ÿú)¨×üà·o“ú|Çk§ Š3J/÷Ù™ha…Ø=BI¥&¤ Ù¨~N`‚ ¼w],BÉ®*åDÔ¢'©W à´ ´=s½7(1ç¹½ù.ÙÓqí<,¶N|ãkcGfë÷É(lã8wY´âåV$9/ñVœ4XÙó”VÜõñ“Zqå¨PâEöÔF 9ž‹væ¢MíˆrsOSʰÜO±S‘ìæ‹€8FùÚÃ_Ft%¡Ànò²Ö±Ñê¶ûmr}qdÚ ˜”ås»eüŠWµˆ°É½!f¡(‹L>;g+ƒõµGµáj¥§À‚ÔNã:‹YA¾ ÃKÔ¼^FûÕÛ¡ž‚ýðâïQaNìÛ;³$$ºù”,¶XêyÅ>`ˆ‰M„€W!Ëê ‰H‰ºZ!A§ðݨÐm”Šb!öËŽ–À ,)ÌL SOØ¥‡)xÚ@Ñc2@]Fóoé3ð ¿¼ø1E6X_Z^Ê/Àï¬s,’6n†a¿‡r ÌŽ÷ä·à[{ ‚[c‘"jUV—ÞR Þ,S7Vð 2‚Rz±¹ZŸh;h,>!´]Âv "C[ŠI£ï(ÉgŠ›~É2÷\矗nS¨}|Pl^ã5׃B¨8C˜¹®í_ s:k8Ç@£ßçb-a4‹ÀbՌ٠ï·LÀJТ6ïnŠÀ0.œ«‡ÿßÂð²E,oŽ¿œ‚wÿEž‰š¶µâfb¿“êï{~5ÊHvëM™¡gnX@ê£7µ*DÀ Û¶4v¾,jÕ¡Ë¢Xk,â8c0¨Ò*¥²Í}¼õ¶¸¦—r4wÇ [ÕÓ~Èõ´Øyë„ÒGÚ¼v¡À­Ñ[Òø_§ÏôCºá>ð:ýªóÃöåTC½5ö—S¥«•Š'_Nu2–¼ê#ÝN2aÇæw6‘ïZ3Ïw ’á']Çõí4µIqA,” vU[ϰL¹P ¦A…EÛ0ª (컬‰ÍÆ”[' ¸è~ÛHÀ!®Íîég—V »Ä<¬ØH®5—C¡ðK°±Å«Ì')!&Á;|HæôôN ïˆoa[#î 0Ó3¤¦ÊÝL àÍÑ/ «-”Â'—ÚØnû°±•[oØ’ËjŒ«nö±ØÔ#6Íœ ²ì<(^G UÌkÚ|Ñâ3´^¢lå"v;Qø‚^³µæs+ ±òíT&ÀÓòÛ%X ä¸ÿ`¿5 õV¶:!µì+ªÝ›sÇ;äŠßÿ̄۱ðÓ€Ì&ªÔàÍ¢;Ýÿý^OHb[Tùª¸þ`Üë0ò€çƒOæSQ—$is´.*±V鎴¢XßGÃeŒöË5RxiC?ì¹y‘Jàå²ô-Áøì<µØ2…Ý[Ù3‰6+~Ú£Zú Êš.ïÚñß-ñÄ w¿·ôÔ~ˆµôŸÒ@ß ¡¢.~b& ‘-¹ÔÕvAéF‘å*¢Ø­Dp¨R¥›káó‹ÕX‚@¡ “Þaëy;Ò®Ú˵MØ­.0*Ç·nÍú{Š_ÓúòpµH@ùîŸÌ!c ¯¹·ÈXL(âN2Ø#¿ä¯ñó*:yï$-û-_±-IN-¦=P’€‰hHMBY†§¶–V»KZo4ˆèÊèø7®ÕgË¢«;æ™26ã‰î¤i¢ðtîzå+ lØby“…Ï™+šø)jîËÄXS4Òû”ÄÕHeÔÉ}Ü öI§_P„ã“Ûí%@’½jÎ]w¸­÷Àï—õ.0Y;r†Y|Í(‹wTŸÐÆËV$–Úy;6äMÛMaãJá:„‚¡%(ÞOñU÷ñPS“Y•Õ ðc«²QnùRƒkìêÛ'•ùRmº%-j µÄOX`;à/ݪ!¾5j3öŸ–4máÓ€Â7b»xëWÚuñ7.?l²Ï²Ls£W~ªÐ#±âpï¡ôѶÑ]DüÆÅ*‚â'9x ‚å>IÅ_ðmš_8ÑJàçaXü瞥´©žá¢ÝOvØ?ûÝ^ à?šY¡ß}t6²×¯ò c'†$ÏÏä±üN;¾õúÀ"˜ôOH»x2RïU—4lt@Ïïâ?ñµE/z_9èôëj¶–P¥v6li„ þÒJÞŽ$£Ü—¯ ½¿BýSÊmû£D¼V_„úvʸÅþM…¿ý{̶™­TÊð¶ÊkÝ…9Y‹ïsšY+ÝpTß@}5wñãHÛ ÙszÚÛS‰d²æ@«LÿtÕòA(,øi–0ðe¢ –¿» _®J ÏŸŸÊ_ËŸ¥"_®Â# ¼3¬1Å›¤>5ÌIâ ¸8GÃçÏVÑ9úÈ$Ò2ÄM'“Çûþ”tHÉŸKÌS“~ îœÄÀJysÂG§<Ú(iN¼a}ø£Sü «N¥·§|t ?(£d¬®z—×;†4ïoH©ì>}.‰m‘QÙ²’k±ãñöÇC`ˆŸ%—P bÙ“˜Ãp›@a¿ÏÝq ŠG=+pAàŠQ‚ŠEzpíèc¯D`ÕkÔ kÝê*?Óz£Q^’&òIz›HØ“žû ¿VI¦x— ýX£í„Íʕ̠DŸ®)`{ÝØÎG5ãH»cá=¯(¾þ= ·X_t÷lþôÓØ—Y5RÓ©ÒÇæ¥Ä» µœõh~G$#ÅOü#3ÇÔ:E=‘¼íSðŽéE®•« õ³ËÎÒ ¤8·õ’å¹À¶H»?¨ðÝ~¯¿ëcPÞ^ñ×ïÏÛ«©=¹÷Íwäîs~7Jì‘48}Ä“{N+°JõľT•ú6ðò©4©frsz"réÙ-NN9Pö Rüdšh{è±¼ÝW˜¥Ób< ùyÎS*®¿ƒZúckbéÜ#Ý<k ,24åb#ÐÙUe"m³m°g/»Å*ùp§®Ÿºæ9ÙÆÈŸSÆÞçÑ6Ê“ÚCî}aŽôvœ¯Òå½´)«q÷êÔŠ¯U0Ì¿Äæ²Í· ié$t=¡ag]Üœ`-š˜q/ öKõ`Ëc·§(Wù]}y,†ïŸÏþ”‰3pendstream endobj 741 0 obj 6133 endobj 745 0 obj <> stream xœí\Io7¾ ù}l‡ûrœ “d`$Ñ-ÉA‘,Ùˆe)–œÀÿ~¾G²ª«Y-u[mÁÁÀÑOä#ùö…¥ßVR¨•¤õçùõÑ_¾««»#¹º:úíHå_®êóëÕßN1!­”É9µ:½<* @JøUÐFÈ`V§×G?®ãñ‰Æ)mãZÐØªàUX+·Ç'Ji'¢Z‹¡šfÜ%tzýÍÕÑÅ”Ö'ÇRÈ”¤5aý¶à‹ÞÄõ+†û÷c#…·Ú Ð<³Mð8YX_g„Îhíš)wy,1të×4Ý ›å ƒ¿ËÓUf}Uμmfó>LÈï38š¤õ²¿–~¼„5Öü|ú°J©UÉko3¯¢HQ¦Õé·G§/~\ÿ•p¤´*ä4ÆIk¤Ñk èp›Ö—ÕÀ•Ê™¬“I"•.¸5„Êh6ðœ:V$67ßfßë(¬UÄoPD“*ýê„wl" ´"ÆLnˆŒ·!Ô]”†œ|(“AÕœµ"Œ*ÄažSèež(Hw°*ñËßŸà€´k&×íö<Ë“A²º!ÎmG‚ѽ+P-U]EÐÂ.3cŽhÔëôêô±Ë$ü}¾¤¡ÕʘõiwÂ7ãöøçéÑwGVH·ú:þ¯#£­ά‚´`®[]0²#äíÑ‹–`vÞj €Aà†„ ‹1x9èý4¼˜Nÿª;áÍ4|7 ¯š;ÍÅÜB8¬é–•"LŽ80îq‰9g æÓ?0¬KGkp3öô"c<›Dó¾È®„eãû0á}w êaÜnÎPT)‘ý Åÿ­×ôÉOD9Ñ¿r«¥ñƒl5Ñ‚) d®®î’œB|6WÆóiö\ d¼¹ÄMF¥¶šL PÿAçBOål¶äø½„ãàœÙ$Zֹލ†§QKãDЉ/d$`L?ËöJ{·þXö– çÈ—¶̰tí_ê\oÓú+vþŽ…Ìöªr%jç 4yŸ¨òp\Ê…˜{›5ZÄ´Ý gnx›„JûD¾sЬÇG-{]ÖÁSs³3]0¹íp—H¼$æW•ššd„²… 74ȹÔhXÝÅáÃQFÄf,¦-‹Yщ›•“áöPlPU*ö>#ÉiIAζÍè‹yƶ¶?Z6lžv'|3BGÛ¯¢5(VÞ; ÎÀà«,Î4Bv7øÀ lÌ8…´ªüëéDÌ´ßMÐ×ó‹tCÎCq즯»sϧá¯3—1ãmW kI!RŠÕÁ-½Âi? ‹Öq¬à›‰·· \±©ŠE’+Ï+ÜIezLG œOa<¢ßdÊ)ÞL$c.:ë4ø¦íS GrpN`$Âl(P)R J•Ñ ¯©ßå©Á =‚Z#¼j©VÈqô]m— ƒ3Tëèx0]´1\+ät!‡ö;U¡òpÓeèçôd^•RÇ“½Ú®¨óš/·ö¹£…\3$†ˆ´±¦^°‚9ßZ®Ýh–=²Ê¬²Ð5µên»ìŒæj¢ûBþUE¦{Ý“'v—dxæ®ûkÚŸº3ž7dxuú¢fºÜåæ¶ÁÌ‹ú¬eÓ¨*D“£4ˆÕž¨­Gðs¢á"xVˆ û¢ìÏQˆf®‡eÍÌɰ쿛žý¿<½%û)åiƒDt`åé²yèæÏQžÞ[dº%œç¯Z;JEã’qI“GÞŸKÀ tÁ0qiǪ5Âßqøª5Yæ¦jý„´ÕÈ» ‚ÆiUºwp‘Fd¿çÑNEï>]yùé§­?ÏØ€lŽâçY&ùü̓A3 [ͨOÐ “àM«füÀ/Ò³>gÝ›²îÀÝŒâŒ:Û;ÝDúÁüyÚ[ øFÅÿžã-MóE5 (.v‡iL‚U&0É›¿ B§¿¬¦qZ¦kðxÂ^Ö]ƒ? ÅÃý€½Ûƒbè³ÀWïÕg޵™:/¼³¥ÏâÜÓg‘ñÓú,ȱÓ’Ó$£Pq¥5Èšry*ḠëÙ'Ó0fœ”²Ã¬ ©4µ‚~­L¦S3#%ø´'Žt&z >ëË`ǘÚ{Íú2C )ÇYÔ{5rÞ[ç”ë¼àÌO!ÕJò±í ɺ±ÆøK\NóZ CI/?eJOÕR°°­ÞÛ–íâwè(W©±¾ê*s —]…Ú·£ð5î +qÂq^,©ÎU½kè‰É`S‰¹`]# ¬æzËfsåÚ²gÆè—««Íëiþ¾ËGÖVü8°T WŒV²„øeÌL/‹Žba}'o‡Zê\xœ)ÚAz´¤„ó]ÇÅs£ð°ÔfC 2ô¬;áv5 »ý@k¬™z¯æç.笑÷ˤ9×·oó×þ@¢Sû¸ž×ö‡)Þ¯Ú\¶¹Ì¿m1fV¸¯ƒò%¶Š|^èÓaZ޾Lû Ý×*‡O¤¹âÓ²´—7ÿ¥«VEêãtnßè$¢7ñozò»Ðß0ŸlÙ¤íÖ=~»™VÕó%ÍŠÒk㈡–ºd©ql¶[ö}Ñt.dÁ‰GÀ½Í+XM"”!lˆþðRI„ó±¹Z¹×M»‹7ïÊ2J:Î açŒÈ|Pòµß@ÒŽ6R›u#hrŸƒØÍb±Ì\µó™¼,¹ÇÆi7Ôj2è‰u9‚Dò«ém‡m6à/IÆT!8Š”©fiM°Ý˜‘EÆ–'"ÄãÍOJ~Ó.F›Ü?6:¿¦â¢Æ_jq]8X$xôØ[8à0“‚B.ó¡ÕAÜSfll>4ãTé(éFý§ã"ñð Nú™¡¥•ý—/ˆ®¬6åå =møÒ^¾ Õé§ù¢4es½| û¿|*¼<ÇÓ—CÕ¼Ò§½‡¡g΂#ËPj7C`2…ÛnbJ²|ḧÂfܺ­„Of† ˜ù÷¤ã&3‡BÕFiu/ÂÎõnwýfò’™N|nRÞ2§7 á§è[Îy%ÿñ5þåëÖš÷963BµI/çA®#XzdCïx¬Ô†O¸äs`½sHzâúßyº“Ö”PÓ`β?˜=W¢£8›=7?nÎyÖÒõß—N\†eÉëgb)aÔö@GÔî0Ú0§Ï²‡Ï•“7S^( 7ÑÖ=ØÇÜD$,¬ê_§ /Šÿ ‘‚yjnñûøX¬_諟㗳´/ZÏÛUš’€Ð_PѺ:ªž#¸üw%(:rlRÍNµ¡œÍ¼é‹ÕÒ§èë_> stream xœí\Ks·¾³ò#öH*Z7މãŠr’rÌœì,‘¢U)™¤_ùõéf ,f¸»Üe¤Øåa`º¿~÷ì÷+)`%é¿áïËë“?üÓ¯®îNäêêäûHÿ¸þ¼¼^ý騸Š":åÌêüÕI~V ÜÊ+-¤×«ó듯OÙÆjmÍ©8[Ká£UÒŸB™6ýzšþ÷ù_ñD üDƒë´ÁCÏ/ð¯p-è`¬?ý$ £ êôeö¼»à³i–ŽøôüäË#¤]ý„¯þ—F èu”ðvu3Þàõ¦™·'_ͨ¾îD à… ¡&Ñu¹Üe¹Ü]™ý®}§4¼-Ë2¼lZŸ~Zf.Ã×ex? 3µkþ®½QªÕ‚ˆAÆ‘êÈ-à9[ƒ.szæßÞ¾gÓw46Qûð…çü• {LW6ßB;¡BÐù?:½k_-Í^œ­­B¾9 N””Nh¿r.Hä$‚CIí…ÓÌîàÀpÚÓ‹ GËÚ»ÂÚ'RÐ púÍi™~Y†ïÊn7-„ËV8í&¤Ù– y‡óî‚Ï*„&&hc œ Ú €¹Ç0w>íÀ˜ð·‡™_Üé3”ˆQX½-ïPŠÇ4¼/ nËìóiHï¿vÈå=ФÖZàŠð ´Å„1+g­Á“ˆ¶àµvšÙƒ¶àQ¡¦„21Óv´ùÊ-h7àÉw5"5‚øàzaéˆíøðÍYÍ@›"1Â#ÏÁeF0íÝŠIž½ï.ø®Ì¾*à ¥Ù»îc ïÊvàoÕâsA ñR¶ÒÍËå(³/Êðm÷¸÷]ļìÞç®;[é¡ ¥« ?+Cä$J$ µ“šeïümÏ‚fQMB,ZFÛHjK¸<ü¡¸3á6Ø»3áFqʄۊn[ŠÖvtË¢5nà ôú¢#Q‹Â?8NŽEÔVÆtšÖJZà¾RÇZÆ^“Æ.¨\îžÜÓYù9÷ v׈Šè'‹³5e_”T§¤Ç¢“èl ¼Æ7t4&$i•˜ :yPEeó5,âô{¶æ6æk²zTPá1ùþÊ"’|lÄ–Ëá&RñqUÉ^ -±V¿E²zÔFâáÝ$yÁ­ß-%6P”=Îì“Ø@wè<=$Ÿ-"…ÚyF2½·©Ô&æLýÍ&nFë«ßqÁOOâ]ÐKA«Ùå XìüT‚hwŽ ¼âA†Dàø¤àhÁãc‘Rlr^ð Ñþ¼ ™Ñ~]†÷‹ö»V^ωï@AC¥Ž¸ Zg?PKŸ¤{­%ÄèF‘Ì™È+‚‡mØ<^7 Fc Gt((&º®ÀÑ™N7h’|åfä®ò7ØSÄs‰ëÈ\Î\£‘˜q—çù@tµË·g* dì‰Þq»_QŒïÌŒ‹¼5~.6è¸Rm¸ ÒåÓ¹Y^°GßÖ¦‹‘/Wùo.eÁŽèìXËíš0`Z/Šîè*(BX­•£ÐÛç÷.•é§,u´Ó–\±R÷gö¯ûàB˧«ûìì”-Õ}@}uGå8Ñ醿O.ö¨C{ ZƒzdeŒWTô¡TIÀ N3ûäJÐu´iO!õÃÉ’'tÓ?ÔbÄ€†3õ­ú1LÀ„Í;&·ØÃR·P±5½»2¸‹= „uÓÌ>Å…[¦0T9Z±gâƒRÿeëbÏ^|@¼Æi™f´oGàƒBêkÇù0Ì<‚¸AÔƒéù{¹«Õ\U:­ Y=ãy¡¯Rò‹›œSü¼”ñ A l­œžyâä”uN897¬ó‡GNÑ1P–ÑsœÙŸ x9Ö»”Y¦¶f–_ïÍþ˜ ”æNÐaæÅXZ¹=ÊÔ&«ÓÝ”×»:B;A=Ä¡ÃÌ#ê1¨Wjw‚²g¿R{¹A7ú\Ùœú |œí}ÿ[ûì8i?˜|–ßÚ¤Û¨ñ¿89öõ Bï»']u vÛ{›îbÈ@™ß1±‘N“Òø!çä¤Ud”º±:(ß ™ år¦úÀ)U´”ÛÃÍkIùbŽ”¿@RQuvó×NÑnæ×CQ4\&Nõ—]ܸ›îÚÛYjQ_º³ëÆ”ÔÚ»ûqûáorãþï)º»#÷HôÚ[4–6òÍúúè¶zëšü‹­x.~$­xÔI·+žÂgÀÀQzñžE?b\½eª¯i|ì×#ºnÞMj.Üu×X}9”ÆÀZ™Y‰ná‹§º\rVè«ÎÚ}V<ʼUš}[†åǶs»¨)ëLÇóœ>£AB´%zši3@yv‡ М¿¬Õä/wE°o‚I%Äâ.­²Ë©Ô„ú#”WÙ9ôÒ.¹ä“ðÿ2ô‚j½äD“—*µòŽùï©gÔ¬=8ê>BãÛ-}€vÔ#uÇ·e…ʕᅸ_,ÒNIŒƒû.c ~kê5Å©5PG+.ÑmÒaóº ÆÞ4[«+!H[–Çk[ŸÑ9Ýõ¦0+júð8‘<ímí`Û0·É55(˳îsÁu?Œª¿:D:RÀ >+£Ÿz£uD“£Iž J õ¸XÛ†­HOU;ç[|wÕÕèÄÓ»y#VQ½è.èæÿ用VïÏ+Ò epOe”ú#¿·qçð5ÎØziJæƒdOß~z߃%y£MŒ~œˆ¶'+ˆ*qoéÔÿHV‚ˆÞì/+`0 Ââzm‘–HóÁŠ‹w%¦Þ½%«µíøDÈs§æÅB{A\ŠÍaÒž9ìóÔùÜf.›Ô }ºhô[oÐHyŒzšt꘰¤áS½Á¤_/gö©7˜ôëEÔoâmÕÇ—nTuIIVùêxZKæöív-áôM¯‘ÛF›´Zãꙸî% ½ø<ß1ëMå|þŽý°˜Ê%Ž›8~OsÕ•ôÈ”~œQ}´‚Ø(˜ô ¬7sŸ!Ô(Wfc¥™çJßI»ô!Åæï l¤*ùŽ> stream xœí[Ko$·¾ü#æ8Zd¾×8N6Ã^9Ø9¬¥]­½¬Ç®_Ÿdw³ØÍžÑH3»Šaè ¢T],²ÞUÔ/KÎÄ’ÇŸî÷ÉåâÏ?¸åÙÝ‚/Ï¿,Dúã²ûur¹üË1„X¬´zyü~‘¿K¡,3\-TŒ;µ<¾\ü¸º?Zs¦ \­nÖ‚qkBX½K`Ë·ÝÚíW:Zk!˜2vu} RN‡Õû£µ –q!Ww×9­œ_ǵRÆI·úï„^ZÿçøŸ`WUìÍ‚2,Ÿ‚ÁØG(¯[]¥e°^¦Ý»åiY„ŸËòvXæíêÛÁ¥X!E¿;Z[Å™÷fõ&òiœñ ÑÝ—ÆÄµ †IªÛûP£'eWoË=ý|´–žÏøÇ à€óI‡•ù#ǸR«K|ÄAHrI \%\ ¯ÈfÁÊÕE–CPnuÓúûY¡Ôï¥Gr„À4·Ò·#´aƸþ¦Þ”þº,¿‹K-qÜDx]Iã›ãÅ÷ ͸Y~‚Fÿ}¡¹±LȨ£’9³¼Ä;fÔ¹X¼™Õ{ÕÔ{P`ÎÊZï/ ÜŰ¼+Ëeù]YÞ–ã6)ÜË–²i\¹åƒn's’L†^HBÂöˆ Ek%Sr¹¦ÑVäO?EÁéÊT/ˆÉEmVDƒî"Ð1Teª”Æ YSý¦æ|Mu2Q´Â­|2‚,'`/°§)`܃‚Ñ@‰Ò]nóa¸ µ= ûõ®:Á¯Yùyð¢7…»ío'í^SP¸qöôåèìà[I5v‡¸eüFÿMÙb€=Ôb˜º+;Àƒ™åî„8ªAØ#+Z%M`Vnœ»¥C v]t8 m0Ýcwƒ³Œ-JÌ8·ú*£{[jè0v°°±‚Cɰ‚“L¤?ÍZ€¶>*: wÜøò»xÖòr’C—¹¬½\ ?c/—¡ÇM„×tðrÂÁ„[Ú â \›&íÈî®  œHA±à um‰£w…£»²ü0>È(LÒún„}ß?š1÷¼,ï7Æ\'ÅäpÇ$ï zú@ÔiNÛ¯j•S:jeeRT)§Ä“>P…?ÍD´‚µÉJ›bŸØhÐqsØèWÜL]1ußÔºòw”)z²-™x¥džÑ+iÏlŒb_G°ÅÑÌp6¯2〚Úñ“pD½&µMj³ÄN“= ¸§³poYÎô|7™«&ÁÄ!ÀßÔ²R¥aÙÞîßJánÁº]ZW‚¨{ ˆ£n€ìn¥ À¼M4q¤l¤ /›ØØð&&F ïl£µEMC²ÚßÕH[ÙÿÃ#”ï¡­æQŸlÜ\l å±Qríw?Æ‘´;A¡¹Èaä¬ß=Tñ“R™ss85ƨ”íÿ;1 ²æi<É_v Ì­Þ#Š7Š-¹Bôç(çįúÙ@0›¡Ðˆ+zd†4vLJ|ÒÓ×ðT¸;(@W9jX6B%¥» ÞV»î°}å…k@¤Këz/Y˜°r”…ib*Tq:—õÆTÜH¤Ùäã7Õ­Â ˆk¿ÿòH!‡ø–Ö†È:\NÉv€ìî’@izæ]•8ŒÃþ]aùù‰Ã7úëS¤;¤~Ú<“Il žÉ„êàÕÆ†˜ÇŠÃyÓÓž¤¡÷Ù¨0 ©TORr*­pÓhK³o0Y'&h›ŽšJ'Ãtðc§"Ì×á•Xøi[±“wVÐ ¡'ÉÀ^ˆ90•Å|#)aóÚ5tU—%ÅãÄH}œX÷]35f깋|%Èèç"I ¬Û2PÝ^£Ì¡ÐG b¤YO~H¤ Â&›‚Æò>NDÝK|Xo²›Û´‰õ(}£xÍ,îï㑽U-~ç=*†¬_.É]Eƒl“ø×Áp¡š>¯g9Ö]¨÷^3Ye@î%‚fÑóáÄHV}xBÅ„ÚÚDFé¶WL ú¡,'Ž/A?CÅd¬oLï6ëfÒß©mô¡PÁ5iVÔÇÖe¢‰ºÈîäCŸ“<’”úmY~l}Öhì,ðh*±á¡¿êø~Ë.Á#ϸ"àë"Ðîb#¬²³šNÐ[b¦4™ e™„#É\œ—{º¢1am …Nê}jD0•ñÒH,&µ!}L {ÀSºð‰&R„Åèí1u_ÅÄ#ô÷‡ÌééO«>)ËëBíjÄ%aVÙ}VtšÇ~m¼šaê"X†Ô"ø×öz.‘íUlÌÄz¿Óhì¦,ï Ý2ƒ3ï—)\YHCº¾1͵P-’'e‚ ðƒDDë¬$ÒAž!Uy¶Ÿ<ËîGÃÈ™iåóÄ×g+,‘4÷[ZõSFCpŽYM5ê¾É3aômY^º?Õì‰XßÉXiÇ‘±ìÛ]ƒ#šèY‚Þ7HÊÿ¾,'-’ÌV”¨ò¯F¯|ì|6x5D`i*¯v::\&üP äIÄEÓ3Ü4½,A ×sÞdø¼ÉÃU熑S†_•%Ùé¯Ù© uÚ¼«RJeýMŸEÂÄba¤¾ã‹Ëˇ²áÎ7ïÎ×Ûz¾¸GÝÛu›r×{ëWß.Ž_ý8ãî›;5/ µ—3`ۄθƗpQˆµÓ€»¯ƒ?Ëx=ŸAh™qç›f“QŒ?ØèJCl–wyà_S~j«™6L®!XÚí¡(ÍRi£ˆâ¤¶Ëu‘Ê6{C“GÆ Öp™§ââeN@|Qn©phlŸ²ZƒÊا¤µY‰2-_RZ[kÖ¨U¤™·åAÛÞ†ëÖT"õƒ•·é›Q¦~ÆFÛŸqDìÆ©J¢ ´R€ézêÖoN1úÍõø±b„"+{Ìã•fÓÓBĨVO©É×eIÞŒ7^W6¿ƒƒ ÂÍ%Öåõ34¸{ñ©\ì8š‚& žh%Ñë1¤BMË-“g#NϘ;ö=<$^ o âÓ "øÆ6%à˜,’—§¿Ïá[_îîø¦$|Š—dúÖCž>~‹ïœ ŸmüöÜœêñÛã·íã·¾ŸùŒñÛ§RV¿?7|£i™¦õ^RªQüï5¤åN,‡¢ãŸ+rÇ·+^ÙAŸ–!RïkÐgð—ôIÔñL‘9_xú˜¢j¾Ä1q¼-nFZ¸i(äK˜ºðÅæ€Èn,ò2ì!OŸÊôòr{xÿ-“Y•iö¨¿ü¨áˆyC¤„ð_A>CJ9@ÚZJ/~XhÄKö"‰É,wT$ä"A‚¸>Ô°0ÎÂ}Šß­~ÆaaŸ½œa¡‰¯W~÷³Âá³Ë&îM7LTîÿi˜8~îm˜X4(#m«õ[(Dz3~y÷‡‰QÒò0ÓÄÇ_Üa¦‰‚é§LK¼ÊS^“lÀ릉åÿÊÇ%ŒA.`t7M4áO­‹ÿø¸\ÇÿÓR¡3›TUåúO—%?¢k ¾ß/þ„¡÷Úendstream endobj 756 0 obj 3043 endobj 760 0 obj <> stream xœÕÉr·5g&1Ç¡ËÓÁ¾ä–E޲“ØfªReç@q/s‘Eʶþ>ï݇­g8*Né Boß0?®ØÀW ÿŒŸÝýþ»ºz9fƒ`Rz»¾>Þ°A[íœX_àXi¯ÜNþ;ÊlGÿ'=î{r{| {pé”¶ë?‡¡7°Å?ÒìIsÁçó,žñêäèë#50½úîö×#AhÅ`õêîˆ{8×ÙyæöèÛ.d^ ,î0p—€»HÀ=¦áuy§0|›†çixQ,P‚K9"(Ìž¦áOÍϾ*ÖÆÞ̳‘9…¼¶n¢ÇÛã ˜ÑÞ¯Ž‘TÒ*¿~É+•äë§H^æ™\ßàXJÇ­[ß“5ÀR©Ö2`ÚZ8ÝPÂÁ§RüÂÂæÎÜb˜ea­~0\g§Ìv†/_“éÛˆ¶ÂÜØ\ã.gÇÓ臸µbð‘¾; w4‚Þ»wÁƼpÈ'.àÓþ'[Bç¯ð|ð‰Ÿ¦OÓ.ñ À CÜ’ºbDª’Ö&œ£$³é»ªZ‰Õ†ã߆GºÒ/FÁ¿A û7‡ñ,åíL gÄàhX¿þ9)ºIAðZº%ÒN›·‡ÕƒÎçŠ#ðz©8"ÛŸ4|ž CPôÑ A[pf ÊB(‹¸š&ž¯+`ÐaƒA uÅ‚üG€KùÛ4¼OëE™V „ͨ¢"H‘Oxž 8å ºü¡Õø©Ô É&¤‚E% \;í¨ò ,qäž{™íÜd«\‘g¥Üö:ìÊcý>Bļã-Žá ®íÄ„†‡Ý ž:3 ŸÒ‚·ól ëÒ&O«€(¢rHå¨Ì£­a€{ÁDë²áá ÷ZÏr?[¨§òþÄn…!±/ɰ5oÊiål3>åÝ€ôÍi½½¬Ís‘ù9àtÀÝ©ÈKî€MG>L¢¹lðÖ¢:{JÓqçJÅÁÖé›Òxr:„ yÄ~`bj4ÞaéY@ÔòNTâeTÐ̈L,ˆôuÎ|÷pëï×Tœ©ä\D|Kß_E[;¡gšHd9J6â}@ñµI“Y«Óô÷ÇDX£#pë?â˜#—gÂØÚÔÚ8K¥à)!“šÌ‡¦pЭ;68ÚIPîà‡FqQ6R?ê'%L¦íîÐoáŒ;ô9‚†³ZáÒà"žaÝ£§(Q©he­ø£<±FO{"$`®F¹òb®ÇÕ2“ÄÑ9¦ºäįïãÅŒrÏvÂ&}”†n¹‹˜"üŒi4]URÈ \K2Mg)t·qÐëžl1ùE\Nl6»œp¸fªã¶¾=F†à4ˆ¶þ§lxFøºô}†ØÄÌLærÚÞ*Ö>ç¨uJÖo(¦iI‚ êÜjÆ @çËN9§ðL ò©|^Œ²=\xp,ÏÈJØrÞØe,uMnÿ"i$ûø€rAÅKš˜ ¢]‹ ­9_êªçÑ%á B¸/Ú]e-£Ý5q‰J7½ñS$b£[¢à80²j‰]ü !ÌD$òå¸Å†ƒÓq§NÆ¡TºÒ‚½QÏ0åÕ.P!Êõï:üp Š0G•÷inJ%j³ErÎ_ÞÇ `&g>œ|dæ‰Ê\i P`Dî28øÞqwnfNà¤H„:Øï’ÓœÜΖó%Ô ìì|Qr˜×U“]3–8r`wöš‚Ÿéºx¤*›úìTÅ>L‰„‰Ðjm“2&ܽ–íiž¦ER¯*Êêi©¶èk+æ»Î˜Ø‰®€Míe©³C¸¡îJËó#ÆÌìÁæ^Ëçéì%¿ÛJ¹¨6Ã}Dv}z¡ß/³ãåÒ¦(SqoÕe8=´•oÇÏ«cÁ ;[h›ùŒó’µzÁÜ­.¬5“,Vn[ØÊzùF ,×·a½ÄWÁS“HµtŒróÚæ:&Dãiø®ˆÑ»ùFr°ãV¾~ÇdSÄ€¶­9ˆ"™E0ýC ½.y¿Bu[«+emÏQ& { ¨‹Â' ³}cE÷ëemÁõÆ zá 2‚ Vùô–T\q¹ä¶á“r[ªªp XÖÜÊ)Ňœa2bMžGÏo¦r Ëé*[Ù)¥j(åÀúAP<Ä¢JSîÌBÙ —$ }C„àz<™«É(Ãè}"TTò㹒û‰ƒÐú3Å)ò.£Ï×Ý×þk?0&}.›!t—ìÿ³ýOiVÎÁqP+ƒ„1˜gåʃªœgöH´‚`û¸l hQ¦Y‰™!ªê\x©T9”jBÖÝýô÷š½ÀÚvöFVÓÁœº~RgútLÖùLËrnéìj#wÜûˆÊoÂe„ðÜ„\#ئGÅÃ!–“còÙ805‘ kŒs|Ê€ô§cƒU7ÌŽß9g¼ŒšÚz-À/£{c*•׌˦/ ãh ÖLÄ¡k’Ü8@»Ò”…B¤…£”›gö(DZBö Û ‘aö: «BD˜ýß"{,ŸõJÇÕj¸—Á¾‘å¥|× ,x^Š_ÆfQâ ðŸÚÙÛsFÇ-…– Ó/_£‰wçÓÍÊšãè‡3«zé'š½p3•4Þu¼½ªD)Ї1E‰²ö±‡`:ΕÙa4­N¯]äù¨/Ô!Ø[G¯¬Wº¬  ®û)ºÖ/½¥p ?­ÌÍrRVgªš`Ué R£:pª< ]F˜ÿ‚ø…OV¨ŸéêY§­æAaç…ó€‰=:áÁØD36uÎÓ´j¯°ót3€€uR­ÞdÂ8o€[0v0X,æÎ*€ižÙC¡ƒæS.ì ñÖ³ôùÇj,9ÙÆœG´Çhƒ¡™uƒÇÁH•d²ßG1tàzß“é‡Dû7dz´ê \”Ú‘'¶X{¡#Ò ÂºÑ?¹I8%õuh-TÈ"y¼VàÁ¯²ŒÌã±¼æç™}Ú’@Uë°ç>ÖVûÕq`sp}åyú, Òw÷ÅÁ4 9`gˆ4â>E&‚àIÁ°”¤ŒÊ öUoÁ"?‚ñú$tùxÿnN{ÐÞ…Ç4¼NÃm `'hec0Ïllƒ–$!)qÃIØ‹ŒØQ(!É8ó$AM.Í‹´ëDT@ äãri.‹Ðá¼IÔÃï³ÒiøeÚðU¨÷lš¢õÔ„™zš†wi_$3ð¸ÖØ àY€“›ªY¥b4ÒÂR. ±Íe’4éq©z3ÃìBkÙâ¼Ô? J°,ƒÐJ%ˆid›)Áóq·wiöuÞ67~Sœ\±/AåMór7Mî'€uð'iˆé.Úðšm›TŠÀi‰Á‘Ù‘‹8¸µÞñ‚ÇK„U©g#¬¢å³6)„ˆ0)vAØsÚÕv@¿__|ò]Gg=•'š¬…1ˆ¢,x]CH0¶°p›6kë7Â5¬!D|Xo: ZúµÐ`uxc8˜d ̈9M=z— ^«—vÒR1ì•Ì{ohö‹úµÔ÷¥‰3º†¸Ê£ r3>œ“^ÒÌri}¹™·õýqfþV¢ÖÁùà)s30>Ïìã)s°k¸Á Üa±¿"Gy¶ ´ŒÏHkåNƒŠuÞd²µ•?´p¨Å“p˜*潌W‘~ áòÝÖNò­.²¢Äò¦Dn'efò«â§kö/Ò¼ˆ97»õéa‚!ÿŠFS|ÐF»5ÅãL—em˜Õ¶ß × Rw57¸Ú:µÅx¦ää8OE)k±L·Ø:ˆûw@éµ¥…®tæt¿¶l´ q©vÁPÝ3¿ë È·òõ`l(φ-„ü°‡±¡4›ïj<[ˆÂôâ¬bªc郆ƒ@êç—z™lOðäy®óYˆ}.¬²¡s-¶~5€™j×m`-›Ó1uê3¾{÷pµÀ,À^ö9ãyž÷λϺGá4ãóÒZÃw¤ÁChXxŒŸzÖ;|—¶Ø¢¤‰ѼϼèGôz±k“?®vöy]E½6ÈêY+^½lÛš¸\ݲ-×…äøôKòy݆=B—Û³W¸ ÌœÌp?zÔ"Ô˜¥5XÎ/ÙÏêAÈÝhMë¾ñS ¡sƒïª²zÉwdz“æ~]úª‚2Äc¼Cx†ÜiŽï\ñXÆØd ¹úÇè¥:}õoãa.8‚“°5^ •}r-î¬:4a¹K&/bl¦ÉòSêa†ÕJ.Yˆ°ŸÈØíq~ }ó]@Éë=(Ëö¸ý—ø©²m)™Ÿ ýê2JŸU‚ݤ¬Gø~$‰åyûÇmüPä¯þ.q–…·I‹'²&ÜMqÅÕnÿvÈøtKè • 8ÅènhÑŽ§{ iE»K€UÉÌÿk'*¶¸¾ÜáÛœ™—HR—x¶$«H"°ŸškS.¸éƒÕc)Ó5¡Éê…¦ $¿Ò;š¯—[þh lõæë<î¢ìdÒ9¦É0ßÍv%‘‘6í ¿¢q§Gî‚M3!Å쑯½^x÷2 q (¶ú7Êëº??z¾x²tngŸL€«¸øn9ÖÀ#]¿™óž j )ïG7óøÓxaEckíÇ6&k²N “¨£4ü·s ËR·dÀR˜Wóщd¹¢˜é¿ürcD뢮#ú¨¥ë𺚹ü³ïXÙÚžÇpa&ËŽîÓÔmE8wäFŒ¡2ˆýt“u…îŠ[±‡VWÊgÇ`½Íu/¦“¯Èµ˜ ðÍN¯ÒrW%¤Ó”ƒY îmo'\ XT‹ß€åÀäú]<Ìvb ¼°”ìøg2ÿNÃÏ’UY(¨Çá«4ü{+—ÙL7y|ÓI“[¡,am׬ªõ““ÿ•`ÿjÑà Œš ^¯Û’JE/¹X¿“«¬åc$®,ò7#AóÞû×äCêvÌÏMŠxT žD³Áw.qc«þýœ¤½¬•÷íz1Vv†Ù¾°’å# РË0ãSP’dÞÛâµ:Õ¿Ä ÷ËOTqCÞPs¨4›ª³¶ÄÒC© ^6P]†Åì‡M,¶Så¸ÙBÐ÷Û°¥' S]> ·}™b@Š4©ùC ¸Z.–P"ýdïÝyýÖ<œÓyŒ?€¿|Âò¶íÞ/X=¥GÐÄ&Ό܄;ýÂݪO„ý å…zÞp ÿäfá%Ô‡>ìÆ¦:»SokƒóTWÇ÷/Âýß½™³÷‡ÿ–ãñï_¦™ýß¿pTÙö×ùþåà ù\·êøöFR ‡DR—8N ¿ø=YáôGŒkDÈâî×L7;la4èÃâGÏ›*u#4Ô (–ü|Èòƒš¼ø/ð÷kÌB±÷Z! ÝìØ÷ØóMe)§gŠ='¢÷Ën2yí ?,°ôŒ&\$¼¢CTùU`ùœW4à!9k@A{Izµx@¥!ÏPôï×GÿØþ„endstream endobj 761 0 obj 4410 endobj 765 0 obj <> stream xœí\Ks·¾³Rù {ËÊ%N4žGÇyØ)W\¶™Ê!Î)ÚŠ’EJŽóëó503hÌÎ,÷ÅH©Jù ¸ÕÛúýÀè§•êôJñýŸ/^ýö›°º¹?S«›³ŸÎtþËUÿÇ‹W«ß]!­´î’szuñò¬üP¤;¿ †:huñêìïëøì\uä´±qÝñÚêàuXkwÏε6®‹zýí3Ã;«iý1¢M–Öoym´·>¬/yí¬Ñ168ׂú þ˳s ¾ódÖ?Tê=2*­ï*øª.o ½è)®,kï’—Ø7…tð¦9ák±û»ŒMôpXJÆ 3qA°ÜÁ(×÷y©,YúÇÅŸÁq“V©KÞx›Y»UZ]|yvñ ³ÈŽÈÙÂåœQÌåìÃ(»–»Xà‘…l/® Ë,pÛ…õgy™|4ë¯*ôbáóÊ[üáâìë3Û)·ú ö'\ĸ² Ê(Ôê Áâx#äöìÛE5l;êa ™f§’)šx_÷P÷¶B/+T |Z—·³Ë×¼„:­_ŒÐ9‘Õ%eVç,;^ôL…0|ô'€ªê·JQÁ¯«èÞpÑD!ö Ú‹´‡;¥iN¦0´| ŠÐ4­O-Z¬íÀsXBì¢eyØÑ9@ž!À~3\^y~»›<{„s‡{{åןðú¥LO!ÿlzé"Ï‹Y„Ï)çK§A2ŠK‡³êtÄ¥A¡ó:¶—¾ŸÕÑ·õȧPb0ÈÃ7®¿[W„÷³¸?VèU]~÷l»@("6„—icQÁßgÕNäà‘¯A€à›–ÚÌG\¥7œ.ùˆ !•_Hv¸:hG©ÁöÔ›¬¨?ªneµ½±(ê…ÕÂ(¢Q8Œqíâ¼]²qÖìpZöI'÷¥ˆƒ±s~åb2÷lp‰ÏFÈ—Ü ø#zÜæåéh+ çàÕXø2k€UÞp˜­r¸+kN]4Æz`ùE>*)*ê@uˆE¡-gçdL§c1¤z[]0aX÷?<7¬‡ÿ•ûˆ_Ê-¯Ê}Ù‡<3íœ .rëWøÂŒ2 ²„‹³¾-ÁÂ¥”S£;èå,B¯šÑ87nh¤ö²PÖ×™b|!XĘed‚_ÿ[ïš©òæ½—HÄ/Ö¿7œ’$û;ü ľZãƒd kòDÄPäçÚtÎÙP4A²B!xã–ÇéQŒ6©¿¶MÁMxDf¬`âlR„Léí) ¹ "™P\¹àCÅG ÑÁÁAŽbˆ†~蜊2nîBæìÑ$ļ4º´žÝ@ŽDßí`šÒ”ûŸ²0¥E u6ë/J®<™‰dÉWóÎ{_À£Í6ÏI©Ù]êÜ^\è7Ól)lšÞhö#A*Ã~Û›‰$ù)ýÕ÷GÂ¥›’–õÀÖäl2ÙO 1^ošŒcëè}j¡·ÀüÁN†­åçÆ©Ê-|²ÁŒ¿è-Øõ!õ0ßgCΙI….Àl~,.gÿ®8ÿµŠ<.¹ ÍQÈâ²Gªô^"!µ,ß”bƾ©à‰ñ–ddé§%öÕNÏLÎn[ã´vQ‰¥\¤¦Ý”aÛm&2ì:ŸÝ¸NiÝ:ÅSdÖÈ!¯œ·ú¯ˆŠÞ,ý½bnd „ú²Ïn^Õc\×å«zä?Îæ<דeÆs–”°'¥C¸Šâ 0¥&hI€åÊ4æ|'pdЄS„aè±OPU‚Ë“f)°³)š`ŠKÜž÷ôš~hÞsÅ:ŠZÎÆ©/MP‘ÄÙëhˆKsžÇ©Bt‹zÎöŒ‚,êÄÎ’Ýlt±ÔéÆÊ¥ýI™I3þ&ƒ2ºD™¤Gíõ}zµç1dN;Ÿë ·0Ëf. f¯ág4¶ä¬ÊRi‰F"»èx/ci¤·Óä‘ à¬µ¬ZÆã0jÌ‘öp$1ôvR&ƒ­?«Ë¯êòbáóÆKËÉr[Ò­ è\#Y‹òÚúò¿û»üœm“ÞQв@Êx¨Ë·uy9‡M‘Tì’¥b‹Ö÷¶øEM犯ùqZ‡ åàF~f‘•{=q94…ì¤É$yÉD&yØ€3[è[›{Ÿ¥Ð'ÓúßdU5&i/ }Y­¿U¼(ô9|GÛyéý3Ï]fãK'E°O}϶¯ò%ù~¬þ ?´<&{úö˜ˆ”¨¬‚ ¹=— ‡´Ç4bK¦ ¾º½ÚS„O+ôØjŽn¢zÓ|x&íÏ^F ßµ>VŒ‚ÆlKS…»úoª‡êÞª5;Dh1^½erÌT?M˜ó.f6®!Tmú¸ºž‰ƒêz‹ŒˆŒmÒ…—å¬iRÁ?ôçSz8vN(.k."¸=«HÓJ@”ì#‘ìÐ’F ¥4qh3 ‚Ì-é_lî°Q<ÉõRh){áàG%€>u®Óäæ„3,V‘áϺ%dM`î`O©öø×ºü²šæ—Û ÷60ÈSË»Ët·¯‘ 'îïò¨B*»<¢2#ø¿9¢æRÐo$ $æRäð¹(@ú¨¹Ôêò_ÓÜ âŠrdË0Š›8Ñ0ê}½ûëٴ窟áh{B£`b ]Y¡Ý†ûoŠØêFÈý7ŽÈ‘i†.ÒQ#œä=θäàfZŠ—=¾ªÐ݇\‰ˆGZ‚AÉ#;†? © öëOʹžÖ)!^IQ©¿¨~¨Ð7˻ͳ¢ “üPØpMŠzå$êᇠ}Y— ’¡s–©Çˆ©‚”[?ôƒ=d-RA®&.Èï*ôûÙ<ðz–‡BL×Öo(ìý,TœáŽ̃×ø“F8½ÔÝ^vu5eæôg0¿Å…réd‚©Í‘L¯“~ŠP‹lÑøÒ²<ïà ¦1#ä &òóB¡#š`îj'…øKO>¶´\<¶ ¤…ªk:ˆ´ü‚)l«dÈòÐÀ6Çj¶g+%ïsá#¶Ùò}9¶ “H:Cá‘9˜Ï ´œ'"~Ÿà¤:Zíó@ýpu…KY4e§YŠõ¼èOH±ô¥´â‰Â¤Œ{d\×+œc†Ï{³ˆ1ŒeÞ T¾)ÐÚTòz“ÊŽ÷ š>`ƒ—ó 7ÝVÞ_¥¨çÕØw Þïô£m%Z‘Ayt¢øµ¢!ŒN¨ùB0Ge´_ÔåFws· ¡¼*¨µÒˆ#ºô°B¢ox[Ôƒ¡²²•§ïwè¨ÿ$ðåog0èX’.ØN 3ýƒÜg™qìÐÜ—_¦ÉP®N‹æ”é{r«uò@âôýKä0¶3¢}Ùï^‚„Žé^ÎÎÝTÕ\#rÓ¹d1.…Û»MQ”ŸøñüYPÜaŒš›‹ˆ+jËÔu¾Y4'xdPøÍ8åXªò&í={¸¼A Ó…ÀTÞØ…<‡Å¡`wtÐÝúk«Ed¥Qé˜X=†3ÎüÃ2òEάYžùrNF°pµ8•c$]jro鬆ø¼4d]l[å—<æµ& [„uJ›x<ÓÁÌ|¾*· Æ-¦Ú3ÙÉôÅ‹|}!w]’…`‹ (·íùNA-féK­rIe’L!­«,˜¯^-ªWX牴4‚?DƒÖ5LÒúí9¼A ìÑjÐîí›¶5hõÇðµ©Þ_ˆVì¼OéÊšSveur.a6ñ³ƒÜ@bÓ9¤7€úÎeš(ÆÝ|dzê¶lŒÐÁ hƒ{Á ñ†ZþÑ–5Šýá^1~ÿ¶¬E8Í(|‘]|4mY¡ Sù[vß¶ìóFèH@µUÓZgžá³¸™e"rpÐY—$±ëÙÓ/«äæXÔ ¹±Å£“¾ÿúè›ÆGö¢ =Íg/ž½œ6 ŒòÙ ¿!‡}ö ~¹qTÓøÈÒÄAW¨–&OÓ46l¢)~¨nÙ}9AuzS9ÑT·ž?¹ ¡Däù› {„Q©[%:éGZÛ'úèb¦|ä-xßÔ#¯{pŒ²‘•ź4yOÕ6¬Î¹Ÿ€ÄdËû¡Qÿ,sƒP &ÖjU‹_ú"›‹ä ¦ úøÀqÇ*©;Úò0—e}Z4Ñݾm!æ\ûªvxÀ¦6¾$[®àÇ=²o_h OÒ¬B!çy‚Jtò- ŸÈÚFÃd?c¡9/ùwUø—œž¾ÃmE[_ÏeÆcû_ͳ¬Õûüæ8 ë®õ˜ÅIí–Ïçñ˜¹ +^çß ×Ùx ˜y…1ÿP®l_Ž×&+ oÊz&bƒ …”]‰ü1kÕjø®ˆ¦Òg¿D6>âj½ádd—x½ï'Òàa‡R+ƒ?ó'ÒP#d‘#ä€:…§i.Ó„?…« )~¨ïÛ¨ã?âoƒø‹¥¥>ò]ùzͺí3Üþ·n1ëVäSSñMÓ/U e›lJ¢ï‹e%4µ: :Êz­q¾®g¾]´Çû¦‚gœeßš:ç˜ì­ŸŒ3'ÃgîE³ó×DȤӎ–ÌÝH‹Üý‘|nãQl߆!nËç¶ bäal8}e\à©Û*"#p!6Š›Î›r€a#I0iBwÜqÿöÁñ¯7¨>z™ú}?j½ã«‹Œ=qK»/ʧÉL2òüL±p‡fº,Z5,ªž>cœmawÕ„û4°s¤a‰p²1¦Þu=±­KÓD¬¬t_Ÿýˆendstream endobj 766 0 obj 3579 endobj 770 0 obj <> stream xœåÙr·ñ•ØÇ¥K;Á}¼*±l§œ8¶˜ªTÅy xI)‘”EK¶óõéÆ1h`€Ù%)Ê)—K#Ûhô}Íü´aß0ü/ýyv}ôÇìæêîˆm®Ž~:âá7é³ëÍóØ üÆOÞ£6'—Gñ—|ù™´3+äĬܜ\ýkûÃñŽMVÏÍöâ˜MR ¦ùög\æ–ké·ðÙ8õݾÇgiœãÛ›ãtj2Ân?)Ìö4üÎ9ãåömíµ`¶‚A޹Ãeå5ãòß'Ì%¯0‡gnÅf‡˜ÃO6'ç€òKø=‡£ԟ£7Nl¿+«'Ý _Ï«xÔ—'Gß©‰éÍ/@Ê¯Ž¸q®°±ÌØIÉÍõÜÞLÊÍ+o^ Þ  nùdt€9ié}Wpû¹àö¾¬žv7|SVoÊê›òö*Áe"$¯0Ò|NR€ÀD>1£½^  #Ï•fžÉÈ/m¥’œn¿‰ËÚÁ‰À;8o²ÀF†b’QB‘Ú‚X\â2ÐXÉ ökä·ÈIHeÁZ¸Œ«¶“ã‘6J‘ÿÎQé Ú ­·Waƒ´Êo‹‡ ¥Lï{¶N“€wúi:?\^éêf3®wñŠÚl_ï„Ô®¢;}¾‰À”±k%­ËG;)e…ÞÙŒ†¿U¿¥Ï—‘;Ž˜áÊoÉzz–Â$bÞƒbµs R{PH1i­l”'Ês*!t’®Ÿ޽%ËtË—Ô^¹íy<Ér¸ï3°EÒNˆ2Hq9Çj‚'ŽObН@¦§S¡{¦²'jYmhw op?¾Ù  “7<’Çϲ:“È˲îïPórÏ8*Ø'UÖéOg¹Sr’ncŒ5@%´„Î*Ài^y€%t`B]€ ú{™ÂbÞâãËòH6|,)l˜d0 }Š›¼c>“¯ø§ß¢n;°7dù¶0éYN. ´ËE©MÌÛãÚ„ŽXH–ÙɬH=+ª£A²¬PŸ’Ë^ƒeŽp4’Áßyð€ÊÏ+à²ë¦ÌIˆ½L,z8“(z2 •?nËòYy¼-gbÞ5tÒÐãZºF'Ý _Ï3]%÷À*Iè*X®AW€0™a¦ëË.ÙFtiõȶ`h!kJìðn¼7>>«tng àÖ&?¡“!|ÑÆ3áñÛrâ— QuŠAT©ö#zÑ–ëòøãqŨçà½ô,Ä•ÜDôˆ¨¶bD¸Ýðº¬^–ÇÒaõ}‹i«wÝ«|¤w!ue%÷ç]¹ÿPV_•Ç·©\°¸OZrå7]„ßtq¸A„Áê ]!üEÅàˆ÷ )÷Êó.­ÈÏžU\½ä*~*“é›È‚W]ÂA(h5¨”ö‰ÿ-1Þ`ç]w#”gL¿=:ùâãúf°aö¾âEkáRÁ¤€¢"iýd”I>õÏÁKz Aß ç‹ñ«dÞ{CSKêG©¯¥Y)ÝC\sòØàE/š3Jé!÷ã)£Dë.˜”Þ¶ÉI 6GÉ)³î)0H«¹Þ(tÈÂ×Ì5$óÊC\3Q &)ôþlE­î€Õ,P~r\¹N2ØCwšœtR‡¨Ü=À*þ'çy¼ŸCÂ’¡=4BÒÕ)ïþÌNܯf¨™1Qe[×›Úè FÕåÃéŽt¸à‚B»ŒçYë×PÊ »‚©8ÜHÔ‚ù°Øffb,—pÎÙÁT.Qäà L–7‚Q¶"0~|_O{zÂìwÎÏÂFsáH] #«ÒùQª½ ’§¬Æ`'9ËdãMö” RÅEÂ]DËÊ–²¿Î¥QlZᤂY­snª¶Ü¦3´¿0@ör.ϼã=© K¡Ô§‹»VpÁì‹- G°? rCË?$÷ÇèéÝäÒ.b„bö®(ù$­œÏx¼â!ëk &x[ïVM„ðÈ* 8Š ‘Bë¸YÞX<År,¢Eò7«_kë—æíÙçX˜ãœJ})h8^p­&]²€@ÎkÊàa“þòí*Èœ¹r”«˜ÂC~fE§rP?Çî'b,ÒÖ÷õÉVþ†èÑuå.ÿ·~nî´ZuUH럠˜Š(ùƽ êW ?°Vç5Úó™É&ÚEU´fÄGÖÕ>82É!uP¬„Õ“t2+ßë&V@4Â^” ­8­tÎHHSHªÒiA„/ãiVwu6’«±QÊ>uåt©QÂYŸ•­ ¤#Ù©å>8R47€*X 1”—´pA¤D¹Gñ !šRbûËZ¼’b*FgÑ>è Ãóû”öñí¤Œ`£x¾ñÉÉFkGÛ9H“úÌvüY®Ý¦7Û¦‘ÓƒçÖ¾£¤w 'ÞEœûFtqU1>ô°‘‘å¡{¦ CØaVX\¥–ÇŽ£#mÏVy¿±FdÀ‹+Sqš ÏŠÿ7¢q wGĬÓCh- =Ö•c "…ˆðá%PÇ•Höï%þgy|Q¢å•Bo|ü²<þ­—“ê¦dr]sÖÇ}ÒÜωƋîÉÿ(¸ÿu5¦ÇF®–9 €W2ZnÁ Ž%+ ©êjÏ~E £ÈX3™'˜ñ¶‚)˜q8ä6×-¼‰À‘!™ßDàBê "Ýf °„gˆÒçÒR‚xSnMp‰þ+Õ5a| ä,%Œ/a_?é=¨’·“LLt¢NL6é°©‘ªsŒXHà-Û¯‹Û¬´_in/p×{ëå¤c½RéÕ,! /î›R§æÖ¢.·ËuZÅñ€ÜåFYEÀe‚0Gµg*bK÷)ÖñÀûÓµÉf^sM€¨´zÍN…1Ó{W’:¢ŽBQê$µ¾è.â½ö~Ñ<¤vË>Ü4vø!n}BQ®Ê•åáŸç?ÔÜJȧ(ØGü,ory­v°«ÿ‰¢J FSV@ [œWá•t´m† á}¦E‰2(&iò̶ªƒç›Ã:V«ªÆ‹òÜÒp,kûC½¶H`ü&´|9ØÒ±O!(ëÏÜELÝj %ÜÅÔ™!Q;rñx¸ñÊÖ!)üGUKô¨U­ÓÊѱ¡k·¦Ïc—4Cœ°S®LÏ7Ñ“§WH„ÆÁ ¾è Á²·Ï»»?‡ÀiÒ€Ûoánr¤À4@Ä*…ö Mm Näu-diŽ9ÐûO‰¡HsTà›ûsTKŸž¤=¨–|æÎãU™ðõlJXTãfåE"p‹˜ÏQ—x½—•K@^Eq¥V‡”cF ±&áB’re«ë¶§£Qÿ"‘bgK§âèz³íCòºÍ@ãÆü=Œ¯`'ümÌ=°w äPó¶ÁãÍ„žoµc9âòzüSßFâ˜\eÂè‘æ¡.Š"Nªñè·ñ 4hT;^Ѹ2¯S¨¹^‡“̰õÞiZ†D…Às}3î›Ü²1b[PÈ´”x‰9Ö^h¤>1 ëDO¨†[ÑóöEË8]¾ökŸP„±Êí GÙoމCøT>xèOå=Y¾g„Í|ãV°m_)šS×4Kp›#á‰l‘‡lÏB$š/6*t½ªèж´º¬Ì½{.G%·=äv^5ÿA¯œÂñš¬WMãn¾B'…\·i˱9¬Ëöu†ç¸KCµj4¡ÒJ/Ïrù$ O~/wÐMLtR[:vi¶©à=n¬œ´<¾ýsˆ"„wŸùX!é%–.léÔ-^Ë`@‡l\Wˆì‡-Î×aQ)òBv:„ébž ‹KŠÀtÂnùJoø:q ä–v˜Õ…%4¾-V›ö\Ói_dS¬6Ý©£óò‚L!o¬¸IÙƒ¶³!©‰J^OFÛ¦ öã*FSô:#; 6¬üÍ\íXi¶Jå'ÑT±^6¤´§EˆÀ+£×t£’x@y ŸÛö‹¡ioÔ”@_c!ÎÁáo2#°iÇÂÐùcÅ]ã·Lƒy¼®r„{g 7c[–… LTÄøJN†DWH^cz­çõ:B•ž7ÁO`ÖX.âillj,ô‹ªióBC¼E=Yw愈0 ðüF;¬PiôjC¿­ â²T‡W¬IÑŠe'Ó`;+ ð/´S¤=ÈšF…ç•2âìØ¢œ ^×j{‰Ò®¬ÉŠÆØH?¢À\Žn± ƒÌOàŒc Ë~¶ÓHþ”nÙ¡@ì'\š­[$^!± ÉÄ먪"þÌ7Ô`Ø)ÕÐâ]ë §õ`ÐÿÜ6dãZ²µP€”*Í¥gtŠžO¡cgB‚¾ˆºš“ãíþã=Êoî4Y¨W ~CH.ß¼M›¶? Mè5Îs*£ÉÓ°í´7xN™Æ9Ý{aª'2µ Á™‰”gáx±[òfQ颮ƒ¾Ôä"Ëï $\ïû³oÇïñîð“Š|%¯<ü;(\öþOd¬}å«voûvÚ»yÀ'}£ ¬>/oš½ ä¸rðÞªàÃïÿQëüïöQ.,¸kC>ª’WþQ€01/õU•Ï-2ÝOU´ï#ÇÍß•Õÿµ‚Y*ð»,æ 7@ÀñâšÜ÷þØ ¾¡žàc+qoüHD~å2¡‰k[岋O˜”ïFD(/ág3¯¾nœ? A¿Ñ"8Bï¿^ÿÓä#ñÃqÄV©-ÆV{<é6/ÞS•G9?΢òýÑÿþâHendstream endobj 771 0 obj 4246 endobj 775 0 obj <> stream xœå\[o·~ú#öQ ºÞ/¯IÛEÛ ±€>$},[6 ÉŠåØN}¿CÎ 9œÕJ^%pƒ<˜¡8‡ä¹ß¸?oÄ 7‚þÿ}~}ôå~syw$6—G?ÉôÇÍøÏóëÍW§X å&Ñ)g6§/ò—r#L¯Ì ¬Úœ^ýx|wÐ:럧atA¿)³ïº ^•Ù—exW°ÏÞ–Ù³nš½,Ãv­QRëãÛvã4;ëÂ}w²µÊFû㟎ËôEsû â—îvWeø¢Ù™m—!°Ï»¾ëβ3ÜŒV¶:ðeøÓÉÉV*!c—4htÖÞÙ+-9¶ß•Ù?ÏÃÿœþýHj1x0ö¬µrszZpEK½ý[d¼ë¢ó-]Û V„]×6ÚŠa[3ÔÞ”û]–ÍU醯oNÿqtúÅ˯ËN *_®ÝÆ[!9°ݳ¾­®Èõå*rÑÞJëg H±Ì˜L’¿œlÅà"PÓZ+a%„iq ôc¬EŒÑÑÙ0v!Hœ C­üLP‚“IZ1–^Z«5ĦÆjm ±)-7Q«|TYk!Œ¥ó耡†ÒIOñ½ZGæÁ÷ÖÛðB'µÑ„ ªVhJ^9¥–`<+Jå낹ïÊìiwÁ·ó,íñ×Ó£ïÌ ìæTë78®PÀÛÆiÜä3ZÞÌ3WGϪ€£t†€KÇ…n9w!3lÁ7÷­ez‰åWë:sqdÙ¸GÚ`Otœèv’ƒp6ÆÌwŽÐ¤‰¼Ú@ìÞeòŠ(tæ&­ƒô!³Ð¸,¾ŽÿÄã*¯¶^ùiœ¾¼Ë«]¬7rePÖ&)oö+;œ$š} s<$!Ä·^¸jù¸&h=:îŸn`ɦ î¥GKã„K­¼.ÉfH+È/ØŽe¢êV;Heõο~ƒ7xë<7ÊÑõ ŒRÂu…ÌÕ21Ç.vO³ÌE¸m9Ÿ¹“ܶ¼Ñ¸Ó´Ý‡¢_8£5sŠiÊ4{U†%¢î:'L&fGybGr:L²‰x úV6–®ç6S_ “pªH\fªðÖH…Fn7ÑÛ ¨—ÂìBñWʼnC‘°$»AŠcrüï$D°q%–£- ´RÔn•ñ;BœNt™? :Þ륓¥‘ª:¶Ë˜Ué.ULmqAâ_‚–ÆÃ6¨ûÏ'ʬ41”¼k›ý(‡‹k. /ó¬ÉãVQzµÙ¬Æú^êš>XAÆ]ö„Švº~˜Å’l"ñö$o&bËÊ!Û­“Ì ƒhâŒ$“,Ÿõ¶ ™üvB=ùÝjè/[áº&b Ïl«­a‚b˜í€O†žR !Ž(£hŠCè»i<мeÌ–„™Ic¥k\IœëaãŒ5³wÁÖèeVjÊõ(Af+c釄¥¢t<)Å3KéòcƉ%¥È« À®þþÄi Z‘×Eß…àÀg 9cFŠÃèç¾zÜ3Ÿ˜tZêЙ%¸KpÈýÆ*,FJ'yleÂ<óˆt’—ˆZ &DźûÓIm|½H'õÓõ¿y:ÉJ ÕI'½XÑZܧgËojiÔV(òЕœ@’ª—4m …»cká°?E‰ Û°Wt´ÃÓÍ7‹}[p—¯…ÕP¨5ó8¶ø¿$v€d­ËxrŠ›‘ŽeL`ø·|Ü:.R)Èû¨[Áˆ™úkÎíšn$Dj =Výé6p…v® ãæ.²êÆHÒH Yp|wN»ŽÓBa*" ¤|«’K5Ú•P’ëÓp²L»þ 5O÷tÁ:mŸ=—ÁhØà ”T¤ã‚78Ó<óe@5K@„~Š;PƜݙ•ýX]°-=- Bl·¯º^—ÏØ¥ Ùe/²S[ ÔŠÁ*Æï׬/‚™K3išUlxg´•Pxî±›0=éÞ¶E¶ŸëJeWpƒ2‡d¹u§Ïh(éR•†ÖÄyæ1UèE›`¸õ½<·¨ª~Ö<—Kͦ®·~þî»2»€“@~!˜¶QQ€ÿx‚ 2„B°g]z¬lK>”ƒ¢þfQYrHï ÎÊð¶YËë¸B:ì*Ö€Kë Ú¢£œ3À»î™™~¾v`}Ýà¨è©£€dÇyæÔ‰Ð1ù=™:ÿêòäuébxYPwÕÅøe¾op®î!ß!nVÞŽ†[¶1üÎÈðëc2ä3Ÿ€|ŠRí‰|ÆÍºgòpÝEþÇýßë!yòÛžv©üÙZÏÎV#ÞñyÌ‹2d »îU™ö¼Y»ê|ÁœûÝ®x^xÞk!`÷ŠRÓïCR äôÌqýŒ›ÊžwÑÉðÝï4ê›Þó.„×Ý-’é ð’ÕÿW[šŒr°jMSö/ÄAÚ9àg¬ùÀ5(„ Ò7võÝ[ûe&­n?z¾IÚMãÇ… qªÏ"¼´:LÑ`­¼ eœ™Oi ¥”ÔãTÂÏ[Oiº8¶fËõhý¼*ŸlA†ð`ùœˆ·ÕZÈÁ?¥‘#Ëö9 à Fp‰‚Cõ‡R&˜W&¹Þv‡÷ö‡RñSûÜjô£=TQ¡å ò[ð ©AT#¦dƒÑT”žf“l0ƒN(Ñjþ`ɆÚ64 ¡rèrè¦Rk ÁÉÚ³«ÔZ8¶¦.e6¬˜ >®¹dQe}9¿æÍa;Õ{,UoÒZV~¿¶Òiy¶sžzLUãÜÎuËO*û“ žm“L :¨Ý¿«a¤qÅe|È£‡EWiÃÃ+]¥Fù6•ÒU¥B¥ jQV5T^zYJ!¼ Á¹ûªÞˆ€;S“šsq§½àËN­ŸØaW«h"“ §ß×*šøBõØ5mÎ;^xqé"*ø©§"‰N§,•V×5Ó…/Ø>ë—Ÿ¾Ì""<Ú¾„i˜Z…Üê²Cu¤%JW=r‹zg*èó:X‡pÔCȧy«)Ì) ZbøÓÛ^‰‘åŽÖ:h?Ûéás5_­¾.ò¥µœ±Ùên1ÞÐ÷ºŽ€ZÅ\3æQ½ï¾«Â­ –¬+KEª îA9UuW°~Ì«E ²R’©UD6-¦×ÎÃr‡”g¢µª¾O:UC­üŒ†0Ž ŒU ¸°0Ãõ*+qW‚n3µôÔçšpý¶¸?Z·¹Í]·ôN³+çí~zkƒ?ÛOGRã¯Û«™†ÏçÖ  [zSß/ÜåÞ{ ¦o+Í]Ç~Õ~ܬpGÝLKmbÚO–•X³+|Ê&̶ŽwÌãë§-1ºÑþÄ pdYO˜aýÎ;ÉEÂoóê"µd2Ór3µuÛjÅÈ AO§JÆŒY­+¶ø¬×õì˜Ì6)Ä=mo³Ë&¯Ô5¶ì¬¦vÐn`CÍì’Ÿ;ïŠáU.ôr³`Ö ÷ri|ÜJX@¦#äÕîÿB"ÄÕŸô!œÓj7W’ØAšn¹òv•_’ëlŽˆVƒ`zeÕj'AvwÕâ,N˜¿®aý…n ¢nÉê|û¤ª£•˜˜½™_ó)è ÷нõÛ^cNÎqßoO¯QÀgQrÍ'¼ª>¤÷!Òù‘D„·»x 4Þ°­ï­1å4µàV¹¸„)¨¤öûÖâÓ¤1fèŠkœ}ÇytÅÕoŽ~·Æ5ìÕLLÊ¥>#-$yõ´VÍs› !ý„…Tí·µùE%éPé r‹¶G0™õ"lš¨1p^ø´z±cS•#}¯÷T; Þº0ëËßTb=ÁnZò‰·”°«y.q¯˜|¶É€‰Ýti‚ÂƒŽ·#]:g̃híáš­ùoÍÖé`ë‡AMK)À*À)N_}—ÁQ“-ß}Åg[+{4ÒCNgˆë¡T_z»r"ã@Í_U±>±|›èi߉,=iøñ¹ÑF›ŒÒ2ù–@ªîïmtò;´1¡Ò;ÄVµá@ë&µñ<…ÐVÙJÀ¸«’«2XIŒµC;ò绌¦×2¶N]%´M]ñβ6¸h_ß?hÈ€ã”L?®årøaÌá½;²ËÔÆwzV–¬Åu7sò—#—¢ã¨ÓÏjìrʨ6­må <ì5éú£}-þàK;*¹§Ðð»çÛ|Âkß•ÇWù¤R-Zz–mE?^iNø3{ڜ䑚ùaΞ¶‡ÚæCÔM}i¡¿¨@|Go%¤\+"q¦cΛ5óDo\ƒ¬P \ "¦å2b“³Æ™~iœº/—upƒŒŸEÀ—² 7VŸ­èâÓuÂê’Gä*ÑbE(³,>Ö‹éCfÂÝï8ìÓíɳ8Ë”1Ñ­šnVžO²rk×ô_´bŽÉ=ƒº«¬~åàe¾ˆ Ý·ó“8M6+‡6ãéêÐ&¿š×ñ¶ØFËJš¹$¬„> stream xœå[Io[9¾ ó#t”ƒˆÃ}¹ö,ÝÌLÐ}èÌÁKìˆ·í¤‘?Uä{E>R–d©“žAa¾b±6V?ýºäL,9þþ¾¸Yüù'·¼~Xðåõâ×…ˆÿ¹þº¸Y~w dX¬´zyzµH_Š¥–o—N*ÆZžÞ,~Yýt²æÌI„]½=áL)ÉX=â´p¨°ú„cë­0nuce½«Û“µòšYéVŸO,’”vu¿óÞµúI#¹+hmpZÃ…úÏé?€s% Îa,œ\®‘sødyz ,¿†ïl ¤þ‡Áz¹z•gO› ~˜fq«¿.~\hÆÍò7å÷ a½#,·Žiµ¼YÀé-Ó~šù°xÝxÅö(p'˜5‘&3:Éû!óö˜y»Ï³gÍßçÙû<{–‡w8ÔR(µz—gÉñ?äá§<|ÈÃÇLámÍY~פð>F¶¸œ†I¯¢(VéBŠ £Œ[ìŒa9ˆ,Ù 6z8‚ñÒ˜Õu\ œ«/HY2ŸÍ)ɹ)#‘m/œÏ~iœÙö $Ÿ2Ç8·:?YKïU!Öalà_#i¤zZ £™á N2c´KúøÕ ˜ùD„uA¨^Ìwˆcú-_ÅjneIóуø”ÒÌK]éÙËK\®˜µvMÔ•äåHp%p$YŠ€™ÝjŒ®ayM²ó2ò®¥fÀX®%„’`E’§?™Œ…‘)ò´m¯PÓt+ZjX§ôèT‡‹’ÂkÅ”_Zë,H C£wxšföbª4áï°SlÌÑŠÆÆ:Z=ÿÕ_KW¥PÇA¡x!y<£¨óåö%ù°×:YÛ0ý1+ôŽL÷Xò©E?q/J“¸P–IpïÄÅû,§[*§µ+tà7´ˆq‚ƒö–ñ² p}BDgö°ˆ±ÊDšLÊ' "©ów1 ÜßB¬Þ¬òôëê’MÔ^åÙÓæ-üCa^Q˜ †¹`Æ>C˜@HšB˜¯›²ê m˜…÷ Z¸rÔ,YØDᮿ6 _’X+D´n3DÊ‹¼þcÞæš<“ÏÞUJMŸÝ^!4žO áÿé㽯XHÃë<|sRJÀc$^§ä'ìxNV=;±õzÁ»<{•‡3¦Û9bíC×M Ý5ExÓwˆãÒ.rY.&©ãy3;}K ·Ô@ñå<4g ·ƒOKU0ü¢Ð$X"Ç ½“Ù_6D>{9}†"„ÁT²oõ=ómírÑܰÈå'Ùpl­ $Ið†Òçþsqúâ—Î×íäºwg@C&Pbué2X壳^@¬•fµ®ø¿ÆK;€hB§~M0ó,-“éµN¯~ZaÓ5$SÈÚUÔX«u¬ªc¼w$W*¸º°AºAûfBœ«pŒÜÑ{lk̤‹™ðmä4³O¦ XH˜’æéÜqƒ;5w,Õåü§i½Qå©B¡u.­gzõ ¨î0Ô°úÓæ**~ú–‡°‚ ä¤8B¬à´NoC™ ‚Ö–¦@ä›ÔÎñPÙÅ[l*“c‰<SIgA˜xs  Ê´Æ»øö¥F>‚Rî1¤¡!™ø’¹n¹„ylÁÕñ~—žÐ,¯"÷ýèyµå)t8/FËû-GÚ©,B쇩M†"ƒ‚]-UòÌ6âìQf$­™ð1™à@JrÙX7¡nh‰DFŒ=‚ÅF)øVËfF™Ê’ö¥"†›0™£ñÔçË£9µÉ#SA׿wzƒ9*?š#¾iŽÒSˆÀœZ¡“1òLÃû<|Ÿ‡·yx]$43ÓL9åÇ=Xj‚ %W?ñƽÔu‰“ëH‡ !ö‚©ëô¬“ʃž†zÕºIn7ùc7I[X³9njɼÙ*ºí7µbÞnÕ’|fÜÔ éŠ/Ëþ28AåG‘^6#ã¹iü$'m 6z=½Ë´œ«"D<$ÊÂj|pˆL+½{5?¬…ãûêñîçè1+…Ny‚{imÀ£û¢q' vºNŸz6Åið]ÈoÁpâˆCظ´îº1‰¶TèD\=º´3Œ=ÍŸ(’-‹þ¾kâã|…)/ÑýUš5‹S8•³Ølº†Úi[ÏÇ;ÂÀ—'í—Kt&ØC¨˜µ¶ÿqT¶Ø>—š)ÏýQSÈTv«Lå•Å7]«~L®jƒo‡öÛ)Voó`¶N¦iˆ±I¸P¨§S¢wg/Ñ&–ÑK[. cO½Mí Ÿˆ04Zþ8x-üÁ»%A0|AAãÌþ  ÀОÍírÉz0„€Òß!€mNj€Îz½1Í7Ø Üª$Ü5Í7Xõ/äíŠM<¢í8ÿ6‘$Ę27¤ãÛtX¸È[€˜#?ˆ ƒÍ€g¨öh 1Œc«¦ŠíkÁ-dpuE¸5:ÜÁúF’%6¥È>Á Œ%½<`¶çNðïž ÐÓô×€(c0o!ð€qfxP@Ï·˜Á¡f¯"àP›PÁ ¨¾ª@qH EŒ3û£ €Åo U°§¥‡K-ñ5k¤’s4Âþ³ÂûÁ¢ˆÄЉgè0% ìEo¤Æ»7QLLÒÏòð®Jóé›`œ}9 !¤‹EÛ}±à\R5Ö¢‚sBÙgQ56@ѧ§™=tc>k"fõ€Qýwe‘ix“_įšÆI$~‡Ÿ+•P¨hKøßå{.ähÂK ¸IøÃÌ3„ïâ#Ö¿«%^[>)eIÑz¾åTø5þcãzø|XÓPéÒgõÚºT?«¶^û§ ìÚÅ""GþÏrZ2®AÛíÛ»2®¼]öVd뺻¯$ ;yFL÷ásq<3ºlF­¡…ÝjCz°¥…A¡”ª\èp—ÆùRùM·Cwã\»¡B¶ÜÿO Ö1Ê•I¡ 0é0µÉŽî…LÕ€ó?´´ŽŸ©´¦Ää›vO¥¸`”ÄWB“Íx­î—y“Ó:&¤Hh2cþoÐd2ûÔAÁdŽ©°ÊJæ0™g~šØKæ#ÈÀ¶ø‰VmÁß\}XƺRÅÁ1)¦8u8‡ø§ÌÖ4XîÄf$‡ªÏ£ük«ë@ŠØ ­€x)@«~¤Á/Ô ²›†³ Ê~$#%·M§µÀ¬žÆŽ‡IÓñ“i»9&-šKe#Êà1T}à/Õ@”—ó¨Õ>¼Ì*îŠ'Í^Ÿù1Wဨ´¤”‡6Z¶H£ƒÀøiêéõðKÁhÜTàWˆ|x÷é˜eÃù§p¿œ¤Üp®‰Cú‚°>™*X`§J(/ÖÚ¹ú±£ nAŽ<¤0`oîgo*Q:D9iu¢°˜»T¿†Øúg…—‰Šç¦ñ%®n9p€{[l“³§ „¤AŸ7$g½»üW >]ò~d‰Â 5¼)N[o6Þ‘r²ëâTzÔ ;Æyáä˜ñ%]•ð¦øB/¸ê=Ý'–d¨A8«ÁÖ©Å8á‡bLj!4ßš æa®¬*êüx¿ª¢‰ZÁãÏž«Ú¢ÿ<¦=¬çe H)ëyÛøiZÐ!]ùžøJÛ72”H;ë§é)íj’l¨M6ýÜæq£̯CòÊý|uÞv2°”­°Ã-Ñ­¨ ù싺y™ú>è›`I°‹tÇx÷Ö>€W‰Õ(ËÞÛóvY™ŽõƒlÀ[££V¿†—¡x€Šj +™u‡¦0¸X­ü¸ø/h†'endstream endobj 781 0 obj 3175 endobj 785 0 obj <> stream xœí[Ks·¾³ò#ö¸Ty¼W+‰]©8Š-Vå`å ‰/U‰MJréßçk`fЃYήÈHJR:1 t£ûëš¿­¤P+Iÿºÿ__ýñ—°º¸;’«‹£ßŽTþåªûïõÕêû,Pj•DòÚÛÕÉùQùR­”ñÂI³ ÚÌêäêè×õ»c)¬1Á¦õõñF \Œzý–ÆÆ¸ ÃúÓñÆâS©ÌúÕñFGábXŸÑ¤2ºõöÝC°&DZÚ^é×§´Ü ¥üúeÝñ®±Òb¶Ð n}…Ä´Ô|ñ Û¦kÔúM9jTØòšÍ_”-¶ìN壎ë÷ùTN&iÖ·Ç%¤w)uyÝÿ¼Û޵s 7œäÓqÔÂíÖßaAè¾+Ì(‰¹Ø‹,Az‹Ef…Îb×AXkb¹ ÈQ¦õyæÛJ¦8=.ƒ×Œ? —Ù¶Чÿ:ù+ÉŒI#BJP¦“S¨Îs|¨ ´I­ŸÖá³:<™\ð# -Ø2´ÇŸOŽ~>½»ÕïPéެ%ít¤¤Z·ºÂŒƒŠøaæíÑóYÅ7“Š ^+þE=Ñm¾¬Ã›:¼†tä‘Q$kW5Àýqü”EëBG%ù¬©ýl‘hcšNøT/Q¨“Á•»¨F·[nÈ&ØÆ-­pÂè᳉^ÏèSwçZéÄM‰//*â’kŸ€¢AlÖóœ­æqFg1"ª8»dý#þñé:ÖYÁ5[Ó™†*bñ:M.¯¾-¤¡w5ý¹OgÎ̓óÀƒ‹ŸCÓ›yÍ›f4{^Žå,¹‘>ô)‚ À ¾Lëǰ a(é˜vAD;èTw£ƒïQ=‹:@1amñ›Ñ’¼|†Rë·l ûô¢¹Þ‰J¥¨½N\í7:X¤_m4ˆê˜ÊQÉ´&È>;&ZºN*(f3Ðùè¬,Éøk!‰FrþxìÉÊ5qHßÅèSÇVHNË0¢Á¶Éç·ÉÁÏMŸÂX £‡Dð ÇÀlôO«Ñ?«³'“ ~¡BÆ@å£Ã¹W>@ä>øÀ²63û(ï2Mh°+ÀwWOô¾žè¶E¯vÁuö¶Î¶H—q½ÃË<ûÓüÚ2ü¾?T oêìÛ:<†S`š"´Aî‰ÙêÙ }`®’-oД<’(H«cÈ û¼L'ëvÙmþŒ=x(ʈì¢ gÎe\ôœÅþØ­ß•tû}DÍH®ÝØá'¢MB3~Œ mŽª›ÙF†”ý+äÐqÅ¿:8î|Ÿ¯·6ËN«ÛûšÑfsál›(7ƒ²²³—jïª}œs¬§Ï“êÜSñ8œßžß^ã‡û5ÓH Í“°þV¤>ÉÞ³(Ž`ȧ괟^á†é) ´Xgì8þ{ì‹Ú¤3Ö å ûb°8Ó0söE„Ì1ÓVÙ½°/Ïna[» ûþ1¹övr‹g•ÂÇ)웼ü qùä’Ò »–êÞ>ÛÖÕì¦ßÕË¿aÓ„ÚÇRÜã?ùðR:ô¾üM•é5gxã ±ÁÊjOr”ˆ®\ ¨"{Î_jÓ0s€öÀ™8—iâZî÷œåæ¾:í´)~3ëë:ý¼ŸÖïžÕÙ“f—|¯‹Yò®A@€Uò€9 á>Cò”²üóI¦ç¦‘ ;Ÿ@ûNèLwuË(Ü4kË–$~פƒð¿ÎôîÊ©Þ] TÞÕáu%x7yföÙe£ý9ÊZ•ùÓJj‘îgïMs„2¼¨ ^™B”§–ÀT€ü€À™)f[ü1»h\ÖÙó:Ü:ôtpÙÚÛż9Vn&ExÓÒmEô¾e([s‚S·æætÚ|W¨}¨³¯&cٳɣ±ó°L”ì"ï&gÙ®û»ÑŸÔ!nZ+É,5‘l§uø²•`g"¤EŠêoQÍ[ÆœŠO]ÕëÉóñ£¸“q»Ö8„hK-&3s]‡ÌbÆ(0pø·£“'¿Î؃vî‹9n<.Ü'v6yV†Mo… Ê+ÐW’„·¾óÖÊQ@‚hÒLJ\Âo#SJžgÞ‹÷ìÜ÷::ÔrŸ‰4ßZŸ‰Uñ±úLŒMRDÍúLú™ÃûL Õâ—h3yô’•zñà½%:Ñóvî-ÑÉÒ~mo ­ðÎìsZ‚€û1RfPŽiå]Å„õ~Ú-ôBXÚXBÄRXÖX2á#3þ-o5¢ % |ôÔYâ8q6,Þê,1¿Û,mÜYBm’¥±D‹d•܃7–Pêç5–Ôé/ÑXb½q)ÖXÒÏÞXbdB`°Ú}…ú­<ö¢X>ÛÑ€·£%¦ø?Þ¢…–Šõ£ô3‡÷£hzU¢W»o³å@¥+ÏØ6«Ëáþlb:ñ_ÜÇbmz˜>–…u”%·Cˆí¡ú–jDÔh’DN†™n‘®/„ì›ÿ>©“WµC⼊îí¤ÄY-æc³€kõ”ð=¢}ÚúÊ×#ü†j.ünæ3„¯%‰ …3)ñɂϣ_-Ñü~ÛĘ*ŸÍõm ROä|Ý‚–Õ·“\¿l0ÓÍ•hºn.ýÿf..yv þ÷…Ñú¿«,·IºY÷’Kc1 冺í~Ý`cm¤´J…¦xõ-Sü•¡O7Í›“¼›”6tI»—ô'I„=ȸœ‰}‚4F3ðJC•ï1]ƒR ‰ZNß´´˹´†¿Í<“gí“-(ö¶ÏþòÁK% þ¤#·œxÍúlò€ût$ÒË’ ¥#ѹ¯¹#ÑÃ{ÒßýB›“InåÚG)ÒØ:ôÃpˆ¥~>ú7ñHPŠendstream endobj 786 0 obj 3047 endobj 790 0 obj <> stream xœå\Ks·¾oåGìqé2açÕy8•JE¶Åªì$R$UÅ—IY.ýût3ƒ föÁ¥e%åƒ`è_¿{õËZ µ–ô_÷çùíê›ýúêi%×W«_V*ýåºûãüvýí.PjEtÚ™õÙå*ïTkNX k¯AHë³ÛÕO›³)´ˆ~s}r*…õ6½yGcc£ ÿ9ûR„E­…‹‰ž] ‰×HBA0Öoþœ†Ñ!…Weö¬¹àïÃ,}â¯g«VFH»þ ¯öÝJE¥éÿð°Zx»¾Å¸aæfõz–Ðf@42…€§r¸åp44ZlÞ”Y¶à»jm²µ…Âu™ý¾¹ö±ù‰W…ÂÇ2{S†ß–á¯eø¾lck/†a~Ð "Z 'cÿ¢'§JHgcÜÜã>àMÄo$|€…ÇLøQ~ÇAù°¹ckCÖ:µÞü‰Aë&/·^û~œ¶>Ñr/´õ •‰"Z-…÷xŸ0ZÎŽþ&ÝéÑßg`;é¥Û\¥JãÚOùãÒøž²ßSÆåR÷”ÁšžÇçŒ ÿ_ö²ïÓCœâÍq‡^Ÿ"Ü­q*?ÀÃÉ©ÂÏùÿž1îîD{aT„ÙË] 4Õø±îiæüæm¢a´£ÛÓYµÎ‡ªåÇ!tTAÇ>óÐDöã"!  úÏýV4GZ…º« ¿ïç q ÖgA[»¹LT Hßcdï›ñ‡ˆ88KÏ2PÐÅ7'só÷=;FxüÌeþª;GÔ{²äþ±„—Œ¨FèÅ!ÄRظl2Ö<b;HÇ›"V»I^©ô-ñI¯qÇD©£b‘NÿÀ´&ÉRŒ(FeY²¶“%v.«çƒ…ã2Ö]ÃøºWÒ/¾‰“ž™S(Ï“7á€ÔNÓcŒPÕÖ=d¥Cm7ót|ška~çwݹP#ÿüØÂòUáÄS¾šsª {®€ù¸ÖAø=çF‚ÆV·´ ´Ö½ø_6Mß›¢m®ÊìÇ“–u½Ù¦m´Vƒrcçä\¼ÈÏem8è¡"0 Šã8±‰ËT‡4ÐÞ5ÀÐÃ>qÕèÎ èGææ–^á9Þvf$@ 5H7‰ 2i˜NlŒÏŒ`BèCè e] µØt|Ð(Üüb­—˜ôüC1+׈›4¼+ ÞîjV þ%2hûCƒM~òHèK%1òmK¸½˜!\É!Ø€*\Mý•´±a0Ò1Ê£´øщ90ôí¼4dÉi;®–ÅE ð0pQ ß¤Ð-Gˆþí$(}p3îã-]Ú$çmNVøUŸ2èltƒ7dÃ~îÐ×HE¯6-×c•ž‚}Ë62O íÅ_có4ýl–&R¿2mq7¹é¬(#ŒwŽ1 ÊâŠÑcqärpêW»A¹Ø0|ŪÑ9øÕ*³@Ë#ÔfH«d,2=3c{~G— bmàn.Wâ…ã¸\ ƹv!Ô!X%S€áðH­• jWbЀHÌr¢ÉÇŸx1t¶2$€Ë['›³ðÖýšllºãŽ…`Š€4x9=Vü…æÄ¡­4ùÖ–µÃO÷Ll¤ÙIb£W )±‘ÂH¯“V`$u‹3P†™ý³HAD™hb¼äs6ƒ9CµvÏ:Ÿd{§%2…WMkÙÉr#_œ¬ a“¼ 41pPø 툎0))§f—l Ó ƒV$j» eV0TÁd:ÑPycq„ßqˆA‡uxÒs1§ÂN¾!¿³Jü Œk&·ò¾h€þš|î²ËfË‚P^UŠwÀ—ü™¢Ñð[PŠk8.¢3JûZ|Iú9i®Ǥ­ãHfПb|¹o~Ô‘ãm´ˆÊëõ)êC«CÌ—ý1QÐ:*ò݈€–¶c0²ÆB—=pÁ¡‹¹IGB ]QU‡‡þx⢚¬/í ÁEÈ×òÑ¢‚Ñ`ŸIç7ÑJÍx©?2š T÷úØIYåj(¿vJFúæv…Wv„aæ€L¬G+`M‚ÊÖL, êß•Ùÿ…L,>'˜V&ö݌㙶œ[IDÑQ6’´)Ñ #¼¤i%´mºÊ½d§aÉ#™M¾2?$+d& Ÿˆ2e¶bƒòÄ ŸK7_åKRæïš)Sæ³?åx?ó(›%:5h˜÷ÞGÉ\=ϹéçÓ/LT;Ïù=ÄyÊ*7h3ë…ÕQPb§F1p"˜¬¾LÖ{…ÿú\î‡Ùʦ¦ÕP–=BTn½YIÆ6ƒE0ͨʴk¯ðÃtKGbìW;~ÁJ<®­W'RÁº E>Ÿâ}3›„‚b™eéˆ(‰¨;$¾©B?8$ Ѧ¢–ïg©eÊF~»}Zæ~8A¾’²ùySf_WñÓ$ÀØ9Àªíz`,ßSæ,*sg …ů›œc1^Ú ‡Úð+Ĺ–¤m»GÚ¶ò*s.§')cle¤ÎËúû2¼+_|jž™m»®`ÑçóZ•2qûõÞWGÈC¸þ|2zßS¼j @0†îý[õÉõêlñä"iö² 'gn{“µ`lß7·]”mµÜPjÄ碢–÷1דå~™ëÉ?T‡˜|™1½ØSs–á®;0ÎüÀ_ž÷T¥\¨ÝK.š,ÎÛ¼F·åëaH°ÁÐ#¸:Ûº¦[ ð¼yΆ~“aéÚ={áž%"yA}Õî†ÿ\}õÓÌn–ÁyWÑlÝÆ[ÔV6rbM³ÏV î4¸¶Š€±¦(Û×¹I>z§3Qoö AÆ®¹ ÀÝ—ó5Ì«èœ ô%ÚQXS¸Vu:ç°^)üüK8žQSPn$¢.øäRh  ¼Ÿ9Ä¥ÀÌ&šHÈlw=k)ù¼®çø©JÚÑ:š¨&…Hܵ£‰ŠK.Ä¥ ,º‚>¼@PÎõ.”9'öïhJWˆ0êð„"Ï=v…:7_@»Èç µì€a¨X7‹KýL¹ ¶C;Ó$í4ñǘ£ÐËg£î•YhgJ¸©Bo¶$c@¨¨ø›·‹É<'|÷éh]/´ïb ÷VÅj¡ZFiíwBÜÞ "ClÛ…òâù(—}xE¹j>Ô¤%$qÁ™ÊÔ¥à‰0éØ1"“OÃÜ›Ç2|_†wexµ¨§…û^(sä@ 8]G]M?ŽÊÑUMß a7¯áꚾɼ9°Ã‘’W†j óMïò™bïCW¥âñ£Û †{¨ÔFë]Aj»TµÇ£H·sÕ><ÔU{úŠÑ;Wíq¹~ŽáE!³ˆ¤¥Ê´·Â+W™àªâ•ëîRÖpóÁöÍɦÙáÎØ”åWc ÒŸmï^Œ™&i…½CLª°ã;¦¬+Zɵ¶ dlPjx™®¼‡¸óÃàr©aH o¯£/t¾<º¤ÏÐÜ¡…{½u‡ÕTöÈòÈ”ngш*Êò(HùÖ~æ€,µ/¢IÜŠÏ*£ïæ¾ÖqSK[S's_ô˜¥ª2²iÏÚ¿9µÜ°–Š!Äþ`9´ŽhóMUüw´}q&V¢o´{Ü,Ê7Ií¸Wy+õ,-9HÆ OJ#‰ ¡a_Œ™•c¦Ë9Ógú‰ùN|.ã)ý°ý|jD}r¤.©®MŽîBVõgÒ¬)ëÔ¯dGk5NÍ\cfPÍx´Nñh~’£6£݈„¯Ò,Ò=¶ÚÇ¡B5!Ë:T©‹Ã«: É¢>ØYTè[$B[çß qÌ.Õ¿Ó MËÀ–l“4¥[¼’DrZêÙ(wjâ&NÿiŶBߨ¥BÅ/®¥Â¨ðR-:†€b-ýÌá-Hî?GKų7$,¶‘¼y^ýr0:êÐ(k¶²•—4ŠC-)í´Z Ï -4x»Sì¼ôs”t1ÓVÿOùïƒóUдbwyµƒñoâæ~üÖ0†ÉwXnsÈêgî·W7Ì›Ÿ´S+tP×Ì»ð‹DºV³~âXçRG•ú’‡>¦×h˜|s¯ˆàŸÛQ6~ŽmQñkè&o@¤å¿œˆ¥6°I-®Ôû¶wNÄðGèœðñ³uNhiÈfýÌáH!uÚýá;'„W³{ÄŽ cž=  C¼=ãi‚ð®zšÃ;.´¶äLnwÿß”áCµ–ë*ó¸ãbèŽ>°ã∙ $•ô$ý+ ø8A*t¿‡™2•((d÷¯'ü« ÉÛ¾ÛÅv]‰s7M†_•áÇjomñÞ9ú…€Ÿ/ñ^ÞûhĈõyâœÇÀX÷=[9Ïøö®Éc¶€½owAýQ9_7³°KåmsÍ,ôó$ôvM· F»_[Ö™€w­ Ã)šR`ÿO{ކ!ãü‚ÅÉ’Å ô‹Þ/©U‰€ ‹­J8ícD.r+DۡμKÓRªl›ÉÏãŽÑÑÓ¸_öøÐâa‚âµñô5)ï"l'éG1¤e0T²úÀ¦ú÷B"zhCòí%-€R ¬ªhùEsë%µ6çÖબ}gå“-Èö–Ïþñ0òFÓé ßú›ÃÊêL2Ì ]5ô‰SPG=XJä”…)C? ?ä‡Õö'íendstream endobj 791 0 obj 3585 endobj 795 0 obj <> stream xœÝ\Is·¾³ò#æ8ty:Ø—£í8vRr\¶XIªì$Q"Yá"‹²\ú÷ùÐÝxFg†C/) ƒè‡‡·oãŸV¢“+Aÿôÿ~usòçïýêâþD¬.N~:‘é«þ_¯nVŸŸá€Š«ØE§œY½9É_Ê•”®³Á­¼ÒðzuvsòÃú/§ѹ¨­ˆë×§¢ÓZ +×÷´m¢R¯_ÑZ‹£[¿Kk‚\_ÑÒG«„_¿MP‚“Ö¯ßÓZziuœœ¹tcµ¶f}››¨ÕÎþ„¥œ ŒµôjµÑ±2juvLÏð½ZG¿¾¤ï­·!( M˜ÚhB¥' ”éŒ1Dã9`H Ðü"-£ˆoËîYóÀ×ã.ÝñåÙÉw'˜­~¾º*vV®ð Õ)»ºÁŽ]TãÎõÉóE^Mñy]'2„N(•yu_{_{GK£¤Öëe—øª:›—ììÛᲦJýÙyY¾nâðyÙý¹,¯Êòº–>kŠ”]aàDOvÂÙ³(iíMÄI´Ñ2Kž$ %Oë }ÈâÖŸ¸x­:ÜúOLŠ®óqë•ÖéÓû|Ü ?^  ×²Sˤ5Þãiarœ¡þ"¡îÔäïY†ð­/Ò©pöc¾\K9@6Úq\¨2)UO‰ u¯²=@~?Ã>e÷#6ÐÞÎx¿ÚH<ÝŸ%WÄsú_1ÂÝž*ßõâãÎO7ÚY‚99rGÛºs°A/ £½žpU*#UkŠS]ˆr”Ž}tãmSMŠ·„ÑÀøh1’_Š1â’VɈv¦sŠ˜žß'=Q 6]AY»~“ -ü #3ñ¾ž^D„4"L„ŽÓú§ô© vd;»4É  EÕa¨\ç+U œÿL´Ï§j6ÞÂŽL¥¥ uQt|J\0¡¥ ×[¦= 8YXéSÓߘrÕÚ¦e½º“°ÖYoà’¬ð/攃žM„b‰‚…1˜«||íû”? ÙM÷ÛmõäP¸Jšù§TèÈß™.Õ°›rýã;vëȺ‹BˆûŒ ÃÙ·­£\"–„ý<“‘Ë‹ àápË‚ÈÛjâ Òoš.êE± e÷CÓ^?dA`¾G ÂðäD<ÏÄ8˜É£0qqN$â.¤2­¼kÂ(ýDQ¥[ 2ƒ¸Åâß&QJuAhRãzYR~C¿rš}‹®Žƒ¹›ÐZY…zjŒnNáÚD@„ûr&‚ƒõ/°®’XõNÆ87\éÇQmЬ„‘,!ÑËe1Ì"ÛŽ÷Þo•SÄ2ÚëñŽîtcdèH$þzdÁ½…Xì† ·ìõ¢œVÌUVwžÆÐ†ýb‹OñÇ©­šA·˜Ã\‹.j‘ý4³[QROžÑtœ~ÉœÓÐ숌ŷµ#º›Éí,öÅ›Œ€¥ñ’¡÷^Ó¦„ºªI$Á]©¼ŠB·ÊÓ®wªÒŸt6Ú' *¶8ópV+Khö¥¬ vºÚ¹‘Œ6d:*JHw§£ìœ£b2ƒp¹›ºjoÉ&-Åxs± O›Ù´‡ºF?ͦ½Â=_”å·eyÖ<ðõ$ëËÙ´¡š„]9<C m ©–wöO¡$#˜º 0q)…¾(h¼+Ëeù¶,/ÇeÒ)-BM­S¬v0Ë’ÓîëÖ–ÝUï,á$ "Ø™ 'ŒÎÌ2Ñ[^­A$%U á¡•TqG6®»"-Ù‰÷¨n¨¢¤UÄ¡eØψXcéÈþNÜ€6"˜u(»;¬ÛÛ2‚ku0=„¬K¹OZ z)kãv…¿aÁ:ñðvgN㛌Vp[}^¢x¤ÌÖ_FĬÐ(pËpîó›y~ÉŽ¼d¤K\p÷.!þH'ðòfrý¯D&…ú$YÊãaÒ:Pe†WO_2ŒN'Ãtò£»ò÷‘XÍú ÷*ô¶lÞfÀiª÷Ç«$J¤è²•°ÈnN¤‡^™0îP>ôð6Áì?Û¾ç5r £ïËîgÍÏÊî—e÷Ÿeùe‰7Ÿ•ÝoÊòoeù­&Ð+ðoŒ<›A3*V]6NÝRº®fMÆò¬yàë j‰5*€5Á2Ö¨(}§Ü#XÏjÖ$4jÖd”?kxV1aÖ0¸ÿ~5jôü»(<Å‘¶äšCÈo„í¬P‹™|Þä‹2Î*k»j/ô@i3ŠÔuñî¯ËòCY²·eù²Î¨†  ¦ÒFEXÛ`*c1/kÔ ¶{ƒ¥ÀI%Ô"aªH˜­tMjÚf™²‹þ›l§•uM0E³JTJ¿Ì¼.³^NžÅáBíkZ~K §±Š8ê–Öfl!ø¶È²3¿O2¥ bŽ7³xG*ÝÜwªX3ë6W;žúáÔQLQ‚Eß!X@â•<_ßÉâ0Ú=³¦•P¦  )õ“ùzZÃýH¿ó?bHœåƒm¨¼û¢yà«f¤ühC l4} …Ð¥â2;^æZ ŠF4&h‰+ p\ãÞämãÍÖ¢’[JqG,md'w‚¼­dGÒö%«l°ðí>?2ö']'cIò6ÃCÔÏóš¥Âʬ8Jn)γª"/6òË–rîFÿp¨§$k*Íbš_9<:n]h¤hé"*Ë" Ž2P2£Sn;…ǯ_r²,'jšW…äAÀ$P¦g‚ïi•r­,73‡²l»ö‰8n· #|èÊñ[ô2ä 0B{hÄ€XÞÇq烠’!Á„ÞŽ bÝpü¦iÃîËò²˜³½­ ä*ÞzÞ’ ] ‘çî½Kû˜5;˜qP#m³ù >îÑ{=Hu˜Œ{<à •ÍX eC”­3W…d·œd ô°•GŽˆlX„•1ÔXIÞ2Rß%Ž;‡ mÀ€ÙQçÃÞrÛÐÆÓ ˆIÈúÇuÙ­S¦ÜS&MfÖFW-½¦$êpºôØNéú¼I¶%ºâÑÔatëO ÜJiåÄ|ôÈ,7'Å‘w_!£6—õƒ³Ïß•åm¹ñ¾‰ó«Šë³Îä»þ¬LïSR !~øyW yɺœ?žN…eç-™ 'ålðbö<&õõ˲û¦,g8·ÃÅZ›n–•eOÞU´h+ £«O½#®-ç´|˜…™¬/wÝDím…D†À0J]U/ší2n{íF.ÈþdÂÓ^ì^ p^ó |–Ïfc\Ñ©hª6ï‚ܺåUφQaÛ³©lÞ¹#èŧãÙüÔ>œ|vröÉ _3B½nœ¾Æ[pÈF¬æ¼›”)¹£l*çì<²IÇ•¶Ûge}'”}‚Ä™.:î™S♀ÆÌVz.z[2gÖùà#>}‰­êU½æ„·™^~—o‰F-h$² Ö͆‰ÔPn««D{ŸªÑ,ÚbaÀ …³±¬ÉV,h&A©4‘~¸í‚BÊèbX,Ër6_æš«þiF$ûlÿ Š=D©[ì¡Z°ROóÔ} )_ äPqžÌD"†öÔ‚&»<6ïÇ@¥®zàª,YàbâôwšB°¡ñ<4¤äÚËô”ÉU?f`«¬aÇY* ï:tL›z-T\Ó͹¾45ÐîWÌ9Ø’°m Ti,?ÒØ',}`” ¤5j´ óá©¡¼¦£è`XFa&î…´%ªÎ™z´‡`ø'¤tˆÉÚN'¤2Ó¼8þÄîf‡ºŠú¸f'UT/zTvû +íî4›Æ¨FÑ3ªÒõádÎ>i ѺʭL¦ÔÈ@úwæA*¤úéoò¦zhº*­;]2SØümlë•=v»@…På"¤qã€.¶ô!tC{Ÿ$ü°¦Nsª1ó©)³eÀgÇ©©™|äÔ5ÓtúU ÕßTŸÖäÄUq!­I“/H)",ó’`7^â%¢‹üiØ>9=&ËõE^ ïvhý.˜Nô…–0ÿ’49ƒÝ>¿›ð“¡Ñ:·e¾:›vRΦi CÞL×£Sصi–z¢HX'—aS{h{I߈AÓ$Ÿ*+$"p>Å«yZ*R„_æezfï¬+dšp3O!¤¡YSýœ,Üû`¥ú}‰¾›fþv´Û»´âú~ e–¢¦iL”¸ß]JLçAÐ,Ìæƒƒ5Ý&3 È]þh3 lôhU–~¦AQ—X+6Ó0ì>ÓÀùQ# ß”Ý_³ÈâðÇâòŽ6 (€µi AEúÝòl ¶kGP×UèKmž¢®u§ÌcòËbÛê'"ÐĽ¬bû¦óºÍÐ`wšGhøÀ4ÕÐø5ÈVgég ý:y*K¿¡ŸO«PÏ­þ†S³;÷šBˆî±Sì„—Í\ç¼z‚¢q‚¦F%ŒyÄáïM" ;‡¡Bgü ¿iÑ8ÏeÍf[æ²–°ƒXÿ®&•üf“ ’~¬,5›dvŸdô¨ßë Ã2•[…:uH‰ÉVi5Ÿ€8<ÛFöËÈù¡éWú1ü 'ü8|B)K±ã¼Ð¶Ûï¢X/“öûˆÚû8qDæxéá«VRiH¸'æÀ·uHƇ˜ãá§2j¬fî”:p™¼)Í÷ÙÏÍkгŸª}¨äG_/ßÑÀøÿïx$ñëiö¨üÙÒ´ÃF#;¡I£ÙÏ”ëQû¶È19ë{ÛËc÷¦Ã‘‚•Гß+Kìbʲü`lŠïNþ5O endstream endobj 796 0 obj 3639 endobj 800 0 obj <> stream xœå=Ks&·qw–+¿á»™«ZŽ€Æûh'±——%¦|ˆ|Ø]riÅ|ÈËÕÊ›_Ÿîf¦†)ÒNU¤Ãbña  ßÝÀþõ &}PôùóÝÍÉ—ß„ÃÕý‰:\üõDó‡òÇ»›Ã¯Ïq€Ñ‡4%ÞÎߟä/õA[˜lŒ‡v‡ó›“ÿ:½… M´.œ¾ãfòNïÖÞÝ^{߯Íûu€øìÃÚû¦…˽7kórm20 Ú˜2›ÀŒ›îE!&¼]›?®Íï׿µvæ NƦÓïN»sÜ­süØãº»¢Ü31à]µûn¯Àá–ö“S!üÅÚüîÕ«3 JMÖm)€Ñe¯¸ùfm^ÈÞ?ÿîbš4ÒŽ:œ_ õ¯—&;#b ÊpÚÉ9§óxÿmƒÆf3®º{ø¡·>šñËo\”ToõÍ‚(Ϧ” tbgjò 8!åaÛ9!d5çø4ÙgïÛómwëjm~jäÕ]·Këɘ²[6ä [Šô›á=šâ6,òhŠ›ïÌ¥§ Q;!Ú',qäõNÐXäòõÉùÏC0gÁ!å»$]vMä‰Ö—ß@’”q¦LÆá¥É;oòý “V2N%žÁPNãvb·MNiÚpl•Rò„¶}ŒQÃfHTÀC#(Ñk–’ØÖA;“ª1tÖã, ·É>еôÇ6"{83iRNÅŒé9~ʘP¸y[S—l챂²qeþoWaþÏëÎþ~í=ïøíÒKsüëùÉN,bvø UÚW':œ¢BÄ78kæ¹çúäÛÇ*¾¤qF‚¦ÓFñ}”ÔÒ³“Üü÷±®š1ÓæïÒU›¿îj—‘®ªe`söÄ¢óq!µéIy—R¦cj¸óéËLɧ¯’2™ØŒ‰:ÄLae R;Yˆ§¿„s‡»anó§÷y8Í$¡74ÆLDáÌ(!àjb5\ þ†Q÷0ÿÎ,PÈ6‚s,ÊÚ>d‡?À1åN0—Z¯‚òÕð2&³|Zæç%hKÌ‹¶.Ì”]ÖÒ¼›‚ÇÝD2´Ú×;r)f¼XgÉÊÁùU9̪T~|‡“¦ˆJM£<&è<­ž (ßcfp“!¹P¨c¸W˜n?´œ!̼™¯[RDéƒç3ÏöÓ*~$¡5$‚;‡‘ÞÀf˜¼óÖHaŧþž¡X£ÂL"ê¾®'2Šd¯dA 5Å/'#†|/(þV`uµ"ûüäLH»EòÔ·¬/ y$+÷FÒ¸low„p’¿»t$þ¤GÔÙ‘‹TIdl™¬ýº,¶`ø>›¢§ZµQàpˆüîl% æ%Ð 3IèrEr_pŒAƒP¡œúîƒ#¶TÖ}m¼ŸWÔ.ÔaM“ÔFä7’€ hÛùÈªÇØ Ù0*=´ZWå–uŒ0›>uµßõ®Ž±ÈÉÁͳ 4%5Ò:‚Â#I-e ùƒņõ%“ó®£ã2â}ÉfRš ¨gÞSgª£AÜÒ & YCB‘‡-¡ŒTBÜ–I}¨FܼB£Hç¼ÜófýîZ ~S[F7¤>óRV@†s™iPÀW… A{YàÕnäUØ\WÙ)Rl¢ÑÛVïBl”ÍÖNª 4#ƒYæ˜È1€)zsú›WQO)D?0’ÐM´hHC:mzÒs)\À«(›(ù$è×Âra3Ps C_@Ñ䤎‚ü»‰ñ®Ù’ö5†ZÒÖB„QÑ•^’t+Iûó:úíj‡Í³ Z’öÛˆ%/2¥“d1šYM2©17ÇÇŽF%žÙŠ³ÇØFÇèj’õv™sÿð#®È€#4€@´ßmí¦`ܲɎw{T‡½³É´‚„Ê´X¬&²C[†ÍbÏ)tú†&β“uÀ–hèÓ¾sk&¯CíܲTiÛ¬6Ï»~[éJvn‘éôöàBˆSD‡Öx;ÞÍ÷gÀÀäCÌþìc‚¨vLBWû$2•æ][HÆ–”§À|ôÎ8à~¸Æ)ê3f>W8@…‚SÞœà’ýdãÒó„H^Ð(9&Rª~8’׆.6‘<îíGò.þOEò IÕN,ïr …¤Y&†K3‚}TdU8UÔr(@*Þ"¦õhçtýöÕ;£àÔKÄîŒhrëc ïJ¼®íÖ3ºÏ#I“±ç eÿË¡@ò•–’f¥”¨mðÉ }·Ø¨ ­çEø*& '™F,·?Œ:yd5žKj;ÎÜ•ñgüx‰ŠI£¦òùÏÐÞð¤¯ÿ[°ÙŽÕg\šT2­ÿ‰¾|Û³1F,q‘¿£¨xcPáî¨R²˜›ýp¶DNÊ^‚%ÿA!š Šb 4¥žhíTæ]Ð#½ÔŠ#^NëÑÏ‹¬}ÍeD‰¤„:f/! /ãjm~ÎkÑ Ó*RÔ.F¡dÓDÝD¸cÏÚ]+²Ï ŽÒúµÓa(¤J¸™óÚ4^˜Ü¦5DVÆHR‹Íž©Leõo=þpYe5ø®ôTŒ~×9èXñ<ƒl¹CÆÇ‚ÒmP„zk~É‹uÁ§°stZ®" S•óŒeJƒ`žD÷²¬(ÆVÐ1šàž*ÑÀ(Y~ÂsjíP]剼rß²°­PªeQ¦µµaÇÝybfvÎPþ©ž½,MG¤pQ9Á¢w¥qÔ¼5FDI–ËT²¾Mç,&S!F€›ÄãGO=¨ÚHÚr6´GéÞè'e¢Œ~äì/^¦Ö[вi€GØ€\ãÆêdaè«.1‹éùK’I|œüÍèÅ£R?ˆƒª½gb]´ × £-¡Iü¤©ùš²{ô"uà7ÛårÚU]q÷¼!f7|P3d›î&j W¿´ju{ í4;ÖQ¶ Ùí>6œ&¢41ûÕÉSúë.Ÿ*²Ÿ¨…½Ð1Ñ+4¦¸˜íõzØ% †ÖfMÑ™<¸c?KŽš™'×4‚§Vòå¶EF˜6é£mª.OŸ§÷qL©b)iWqzmµðj‚=:Œm=)Ôal‹¶LØ­yái<<‰vöEMîê„ÓûÜ‹ýd…fíÁ04ÒY+½…ÿÍz‹»…fËz+&oFVºwf '#Τù&ö¯£çXÐHWý¸„«ŒKñØd›`ñ¥s©p Ù [†®­o«ÃH™‰N°“´v˜†Q"îÉÖ–QˬÊNJ…½ƒ³£Hy*yàú¢V­½ülqxƒ¿¾ ¹£uüYÖNË]ÅÚAb xˆB[0¥zÆvU¥ŠNÿ–¿D+Zï5êý¾¯°aÿ|…lÈ!lÇ9š­”ôІzº¦Ö¨:ðª’v[YÆü´e¿Ì¹£\´$ï3pd‡v8Ñ´®:›ˆVå“ic§±ñÉDIÚ(¯Ÿçøô9¦¦êÝÌFÙ”Qônà¶=`áDE&¬?¦:—›G'0ÑSѨªV!£¡½pƒ=¨5÷<>&ÈP»ÈÿªOn^íev:NU2/Wº m6Q4‡5‘ÆØb›uü‹¶ÐT‡Õ/TÆ*c¿}[ê†ã”i×uex¶0$“>¦&¸¶ÇÜÔ& ÷ì1Dü()ÓG2¼.¶&Ø£ÒŸº(¦¶×Ù–s“¶ GÚÚUP9šü:>@cÈ:{xþ‚„D%öñ€ú4¢K…ül•ا¥çñüŒh‚0y°3_¬¸[›7KsÀÎFØ‚£ªÁ“£4ÌqÜ-;Ï®kÏÓfŠ©eç±ãcÑ[[ é1‡PÅ%’!¼ŒÇDóoëи›ò>ÇÖ¸!ŠÑ£ÙïÙKv× Ðf‘Tºf¼)fì—v”ëFˆ}Ù –w6”GËðF3ÆÚëÚnã=O¼W‘ãÊš¯fvTU¢†ºä¦Šå  ï«‘»B\ä-ö¦²Ù>dÊ úúi÷m}-axeÖlËHçÕÕ‡9íšPs‡¥£ên%iO‘H{0>ü-0 jsKÏÓ \†09-åäÎUÙÖæŸ_íY@©%¦Åcïî'Õ’Àó«”Yì& l@7ägì&]€ ¡Ùͧ‘E êràßÕˆŒta&œþ‘üPÿ¹VÖ£%ccLqôåp‰>Ä,)=E¥R‘ý1ùÑÝìëd÷mž,n.rPoÐU*M~÷ Ñ߸qåË •¬ û•z1yáØ 譶Æ^0»W,Å…Ðæ|ÖÄ^qÖ—`A©&qÒÈž°ù±¾;ZÈ%æÙTZmtàŽKÐ`gì‘>D>·£â3Ÿ‹ž ª«Ž •®Ü•Cv46‘By}¬©>dTLP÷óòÔ¼Þ5j¹|W”k^RÕ‘›´q |¤[<¦áöeS椬­ Ùmî]„«™Ø©?ήZ¾c#R¹ÓöÖžŒ¼ÏŠÕÆ6G3 …åѾšR†ßËíê-Ñ‘iO1OôÉG×`/óôÕwÊvg6D‘$‚÷¥&ähÉ}£!¨/ÂQyë6«Á»åbSA_}X¢«Ò’ˆ¾^sÂcž ôuìÞhaV©‹2xó°·›í*Qõ¶”®Œ ¶Š"‘Û=ï‹\ìuùrñ¶Ñée<2ž`£n¹î[C{ÑÂPÒcÊMËÚ äAÅÎ ¾(‘N»ë­.ßÉå~È“tjRš"Ð7y<ØÆ%—¶5#µ%I \tE[‘n‚«Àïcü‘¡YmÓÐÄ™åv·X‚†ì=’s™Ã²f÷RßÃÞÃ0ÝÄ`ç;âQ?1~܆‚h…u°`dAò~Ó¬ŽÀ"GuÄl"-ͨZ‰3禄ŽöB×Ë26–pòbÛtùYY×(ŸŽ£ÆË,N(½ÍÓ\ùá eŽŠŠçšWQõÃEÓ< "© ÆØ›|z ‚¼ãùÍ—0võ‰¢<˜y¡jËo-ì)®Ã1O~Ž¡8. µôm^.•7~mBôèëÇyHšµO  [XµÏiéMRrtˆgëµ?ý‚š–#Ϙ.¤÷ol+<)ýŒ…"ª=®Ú5´›/|$µæGyÑ”ò~êÎ!®„‹Kåå Ò5UÙ>:`èr™Í(øÿñ)„UÍ=§|L¤55â_E×iéyÊË£@ÏA ªÜxXCÀ }¶"ådÒ? H PïзôöôߘrœÊ¾0Ÿ›s•tŸ»}Ú¯zPô wSJ,è—íD€T9ÌDI€sÚC#x– ½)d²¿SQ|’N6q.‰ŠÔ!lC…SäKWƒÍ¿ÌË´¾3Ú`•Wá“o, }®"ìŽy%Pfd;Љ Äm¾/’Tûø˜a¸´¡ƒü¦U¾Ë@è±ÂAÙÀ @¾ñ¼©Êaøpçȱëôó¦sðB#¶c"Þ½êB/Š=âŽxkÉÐ-œÆ’y–ï`Ðn‰‡éõ)º°aÕƒ¥¥ç oΡ—á B@W=¥½7çnV”³ö¶ÿþ€h–æ:àó_)šòKÉüá«ìåòh Z²-hSúÒ+ÁÚµ™*MÈGó‡“ÿÕ®R:endstream endobj 801 0 obj 5568 endobj 805 0 obj <> stream xœí[Io\¹¾7ò#úØ2¦9Ü—câÌLÄ[A™lI^K²-Ùç×ç+¾…Å×|­î–r€ÀÑl²HkýŠïãR µ”ô¯ÿ{v¹øþyX¾¹YÈå›ÅÇ…Ê?.û?g—Ë?b€RË$’×Þ.O_/º™j©ŒNšeÐFÈ`–§—‹¬^žHa 6­ÞŸ¬¥0ƪöõÉZá|Œ«3ê¶^éùÌÛÜíd’fuÁ†œŸ¬·ÂëÕ õ†`Mˆ«ÔvÁŨ9Nû‚&*u\]žèˆíF·úÌæqz·4X ŸÌê¶…‹.fõŽæŠéû£êˆŒGàã7ù“‡ó!ÿ©7¾qz•&ûG¼ÎT¬ô8çuYèÓÉZ é]JÃ)Bò³Çç¿£áQЂ¸2kM\}í($üz‰%$¦k©«YìŒ={Œ5Š1¢bªÍ½î¹-xöÏÓ?/´w d!b§ç¨·l›lùýsS ¦Té8Ì|E”tªÕÓÒ|Vš§Í?SÓje ­ñãéâ×…Ò-ÿ ùiamp`1 ½Á-/¸dO­¡çýâŬ"™¦"‚ð…¢HoÊŽ.Jóº4/Ç&ísm”*¨åZiá¬W~Ƀ¢u$©ÔL> êØ{;6;ŽÖª®­ÐD«çh/H6~ƒ\z±×J§Y5á¢"ʘn}øúk‹Cyc–ké:¦nϳ¸j”ÏÌ1FK§ºÅÁgúMùèÎø)/{£h8,,HX}9!a šä•æÅHŸ•2$§!œ[&+‹MN*Ó”B´Uи˜GLá˜Yþ´\ijÒ{Úðsu=Y•û^úûë#$GöÂÆ±g á]¦‰›q\óŽ.ÊŽ®Kïeiþ± x_zßO§åæY¥`S‘s°-6N$®7]£Øpëú™™6üª6o6&8+WÍœ˜›Èœò'ƒqeR^K3YCq™óTŸˆxZ ¸î×Hq—mÌYWÞß6ò_»Å•¬üá+]ÔΑðÓŠj8 Ñ!;êŒIWÝ·ýî¸éˆ_úE ò)s#à‚FkÎômGÿªÉ6,Útgœ pßÄM ÷ïg› ä6ŸËÛÜQršs! 9=cáüíÑœQ–É÷BŸM˜u¨çeçMC¤‚oUúkÑÀ¿•æ_Feìš¹wWÀwÍÏÞsÙS¨µ¡WÞ‹c¹Ö0eip_‘#êlG 7̪t‡ö=v·8c1ÎØ:NxÓ­†ØX¿E¦9‹==˜f(…™&LŽÝË4çÞ_Js#ÈÍÛɽOn&H{¤”ˆ©Ñ󬏯¯a‰ÖvÒÙw_—›ùÀº{ï -ì£ÞþÆîðªÚu»0‰–ŠÝ.XsÅϳvÖe}À«MQ`\º€ðžW›à‡m{¸Úûè2MaÜÝ^·SÓý®¬pHüê·Ué~QšO ág¥÷t2€³e”Ì =yÆ=<„¾[@AÈŽBaËOeslú©%™Ìž›[§½Z*·96;©°VÐv•\Ãк!л)÷wÖTÍÛæ€·¥÷uinl?÷²XŠ…`ïvŠI+Y8o²åsé}5 í¦Üü0aVG 8knç¦ÙËöpEû…ñÓ®Úð“êBÖJ%Dvn¯›fg~Ù¼ôïª‹Ž°|J¦>.qŠŸ)¿o›hoYpS—8±‹&;çÅpÓ•"Œ 92ï\Ÿ3ýmp2:f’™.X12¥äyÎÄ­4·ä<Ýâc˜áïýÌ}3¦S%²êNõDÆGKcRh$ÿÉAÓ?(¡£ÓÇðé)ˆ¤—6† °~À¾±çïìd ÕÝ>éúa>½æ»uÔN³æ¢akò@¶me‹e#˜j‘”* -£LvY[N¥%9‰ÐT ÎÔó=+Џ³k4ÞÂ0%&8P'u©!$ŽÌP%5;øÅ­Q½Ò„ñô§UÕñÇÔb`¦›¾­iæðW5„Ÿ­|l#ènTs™q{° êó™9Ôð¾Ëà|«Ò_kÞ&ȇÚ¹‘-ÌhØç€Ü½ø ll‚ÂÁsÔ„n–ó^Î‡ÂæJõDÕWðµ=má—`0ºÚÞ¬\Û3c÷cÔöL@~›«í =‡×ö@„ôþµ½½£-µ½¨¾…Ú^½x|)¾ž-÷ž÷e>õe>-%•Ü—F¹WO1¦4TF{ˆ1%n7fšMs”óèe¾Iá\I0u8î=¸’Ì›š)ßf‘/ ¸‹És®G«ò]ì$ ÿ¯òíR廫6Ø%ʆ‡ß|ÍË{•Ñh+QÃ}F°o© óD¨De4xíÇžCÊhаz¢ <\óÞe´û&;rÍÈœÓìˆðäØÀïX©·æ$"“«¶U-Ÿ &ÞÍBýˆX?i»é¶­åÆKo¬ƒ¾5¦ ƒ><‚d¡ªôˆ§¡•QÓ#žÃ…„î(!ìÙη°q†&°ñðqÂs²¼k.%ÚRéJ É‘iš¼ÂäYl¾$¥ÄãK7Y«Ÿ«Í!“§–VÒ/w~g±gµÏw–T'¸ú³Z_"LnЬL„ ô !QÚ¡©âsèùˆ±çV¤™&½4Þ? ½ïó2ÛcQ„J†ô 7•_‘'ø9?ÉÁq!Šœa•‚ò”ýÕŒdñ{ýX®°’Dþº³gZu_Q‰Ø¶@¯§äE’ßÝÍåuëͧº`Âè‡ÿrQ=B(âcƒò÷á£/Mµy$JYvžŸ»³Xvš½–i-)¡ê{˜ñðßžd,ÊcœàgÉñpšh'ù&àµS¹Ä‹„9G°âÝT&å¤Í(aÆŽCr6ƒUê»4»Aà…«ÊÎúUñ(ì ] "Ÿùûãò3ȉÑÇ/nжåOÂз]ZûÁ O?º`$X/G‘×]ðhdèžÍÐËcxí `9‡57jA¤†ßõ%LXºúÁqÆ&pA_7cƒ\¨œCGXÒÍFÒ€dZ :Ÿ¹Ð¹kÙñ A|$ßÓlV¥æ^²LbåQ¤D‘×€Ô{$aÇîÇRUpžìSR‡žÃTPÀ_¿?úÃ]XÁˉeÚ¤ÊôØ@ª:†ô-©JKØ.†£ö‡Ã¨ ´:ÀûìpÇMu ð ¸U ãXãò%©J¸Sxià @åp^‚Žik^~ èkýð~ílÒû±ÚO=dŒ”qm%Cìžè¸öÐs(®)ïûšûöŽa®?µ!~ÚH_–[¾ãc[’·/? …»vê÷§à0Ûh·â8<Ê:CkŸÐ P¨ªßO2š¦–/¼ÖN “ˆpŽJ°8¢³ýÁTqè®4åØåà×Å(ùðPendstream endobj 806 0 obj 3227 endobj 810 0 obj <> stream xœÝËr·ñÎòGì‘riÇx?މ-?R.«l1';I+Qª”Lʱ•¯O7€4^³»ÔJqR:Âb€F¿»ÑÀ¯6ñ Ãéïóë³/~²›Ë»3¶¹<ûõŒ‡7éÏóëÍ_/`€ä?y#ŒÚ\¼<‹_ò WbRÎm¬P“Ðbsq}öóùݘZ:¥íùóÐôƉó7¹÷]wÀ«Üû27/ó€¹÷Mî½Î½»Üû47ßÑÞ­fÒòü—óÜ»«€T‚Kyþ[î}–›W58¡ù67oó dÙæëܼëön^;)¡ €?ÏÍ_<Ørîý¤u‹ªzºëîžû¨z¸4ÿqñ·3ç&Ï™ßl¹€•4ß\ì€Ð5âbó·¼àш#â G#.6gÄIqâ^ÓKE(þpSCJÄ|)»¹øþìâóŸ+½ëòLŸœ·½ÝàJ_ü¤QÅ''Hi UX1e‘±·l2L ç# ­µtÂÆ9J17~RÞÍsìºX¿¦ìÚÛݳ.ð%š€|’2ò—2‰¿þkØzhJ3m`×ЖÌY˶¦Öf?¶Ž‘F²Q‚dÂuÀ­%ôÂÓ•·´Wˆ??mdá«@i/5ó)Ó¤º•׌£|…Ýyï ÛÆ9`½Ì‚Œâ,Î𠹡Í-×Òcp[JfŠW^&Pyi9 Í­Øl¥Ÿ˜f.Bzß &¥·`%­vq©öÊõð-ä$¤õ3ŸdCðeÆÜãÜ{ÑðíÒ‹k<º8ûñLd›ßÁ~àrP#zc„cøæz”›œYz®Îžk4½šœÇ9íäœFó2·—]¾ÚoçJn)I ,Àmf´Ý"O3£½T”Ò*•„¶RI‰Âà™ŒD—Òqë"¥Ó ”Ùez¡­°Èi†Ã£ÑôbS(;nbÖéy•@ë+òÝhÅ·dÅ+ÒŸV÷ʆ­§=ÞV†YfŠvâ*'@õY°0åŠ6AÅm„Üi_Àõ»9 Ùݯj¤Àž…*Öss¿y¬/çxA§€A:â.nXšb¶—%=yÙrfP“UVütrÃÓ@Ø ¨ °¡°XnÀA\zî!,–ƒF sÂÖT–oÆÂ{¯ àj@gUZ>K@¢»’ÀI ÉðI%ƒŠ%%¥ eæô)êCJLÊaSæ÷.±´Ÿ$¨—-GU8j‚Ãk{oróm­Bïí*f@){ÍK;˜eZ c²ÇﳺÆ!†q”Trít!Jt¾ÈØÜË!ëßâtvâ•t¼I«p…Jxb²¥ö€0µv¥ÔÅÐQ/éÃeÈ Îì&¥†›-ç“È«üž U\¼«8ZÁh:_\܈B±íâXõ½HOUÒœ”-gè‹/il@G‰J“ÁCØÅÉœ” ²¤°&0ƒ•ÂBÆVNàSôDŒNR¨Â¼¼CÉ%*÷Jqr¼ µñz O8¶6+wTe Ëñ–|÷*~ç!ûWÔÅÖÖœÕĈ“ÿHsÈÚ°`¯ó0B&U d‡òMàv›IUn×Í`;ÿ`—ö+¬Žbµ›y¾Ñ–#‡a Ž£Í?P@9Ö¦_Ò w XÐOëBï*r©w —®ØqJX#ÍNL/eêr´]î¥ZDÑû œ>CTr:]é×óà¦SA'h*¬µâTB£ÆóXD¬Äã‰ùw[s)ôpÜdîÝc½œŸ,ÈÔ}b¡}v×£E÷lh¶| Ìªf€!^ÚS™-ľÖ#ì?ÍxþfKaTaÇz°œ!u`å¢È0¯L¡ŸK‘‰\ŒðŠèjÂítô.Žöºk¹j±Š9 ?ù:ÉD4t+p`D…#a"ÕB¥QÊxžGÛ)'Çlëa@7_åb½¥Ö„.I¨2Òîtr¢)ÞG‹QöŸAí¢ƒe×._&WØ¥69K\õ鿌 ά¤+¬ç¤-À à='3¤-„¼ÃP"‚¢7¨¼xü®«È@.¬<VVM÷amçyK/ý/¨¬¼·‚ÏꂹHUP´BVŽ ú™‚»5V«i"## †ØpQ[öƒ´ÖÌGwRT`Mt—†0©r+q/r…xïâ‡Ò»Jàæ©{Æ„kƒ¹ÁD»²Qø{n~ŸmÉ÷«¦c?·XŠŽÇ¯k†\A½Â*?ö]%?^F4ÖáK£E€0LvT¼‘Áª¢:ñºÏzäÍÓ1— *î†Cö»;Û¨Ÿ%³>*wÇ Œ‘•r§šñøM#MªAuVZçM15ŽP¾§—h~(¶[ýVôúƒRÐÌ¡e„½ì3…i‰ªWƒIÔuCƒðÚ¡mk-a!ѵ§ÚšÂe×RËÉ8ÝØÂ€/¢mám* ”ž1ͬˆšDXùˆ4»‰*=,¢€‡Õšòˆ´7 |¢^ _Ä‹4ƒ]$6°,AÇ„ ÀU5&sö^–;dýóøäºG0J'±H?³]!"ú#ºrçËä©êüGý.Œ…õ0Þ÷V•( ©g‡ê—}JÛ§sR‚ZÚ§ Jqp¶V©÷ bR2ÁŽÂ©´‹\:S;¢ÚUðcų8³oŒFZ… »,HèüиôA~h×:ð:Ä%+~¨Ÿ^ù*¸:ÄA¹¥E} _aÙDã¹,‹ì†Û*œ9jš_n²òß`M[Û¢n^–&PN\q¸—1hB”˜0lßoBÖO BÀ=H Ô‘'PÏSFø,UC`jˆâ¼×$ÐêÅg»Ä< àÕ‰" H9€¨s”^ÇmÔš¬üe"tg¡Œr‘ ÿ¤éåáàú©~><‡úÀQ¦°‡÷(ÊÁ ½¶#À;H_’áKHå'å|Ãp[§ÎîoçÅÆÈD~´± )ö¶¿Ù‘ë:ªÈ RÑœu­ÁÌt1¥§B"bPˆtˆÞÍÞ!¹±W5Ênü‘‘%&í,VejÛ;vǽ®‡Æ8Õƒzäú‘2OÛ°œÍöÊW˜žÅHôúÐÀ ÂñQV£Úb­;y¬–{s1-©ÖÐ7qvÛUÛ1lòXÂtM!·–äNËÜ3LšÃgÍÕ,+1Û€çleYb‰¢ÑC>@jèðçÄÍjt² ™BºRUF·. …a|Ö¿‚bì‘fö<©Ž £=.ØÎå½àÒ*@¿_ò$Ü{ß ìhÁôíƒ^£•õ¢W©)Â`Q:<ÔÊ´GV¿³‹Õ(>[”H!€ü3˜-ÍëCøĵ¬¼‰j% H#ŒÓ²JÒD„Ï­$ë«‹-ƄʶX?žL Ž·`Ü&”-Ì…öÎ-ƨ>âCj¨6óˆäs'°oljmD£=üËIf8ê{ì£Ýn!¤œú—ýzhÃÁâ4/'+ë ͇̭šÍйâ‡×fSká÷˜©@ÀÖLѸ°wlWXQ·?Ænî¡Ôia›Z”µ‰å:î½¥Ÿ”Ë[#Ì;®;…|1ä¡E™¹¯:ƧQã´Ü&‰Ü1Hò}2Ä“¦Ñ`ON"GÄú;:æÜô ûÒ5²~aßZø¬Ô$,çù t Ÿë×"bï³ÜüÔ¯Eì)l°VÞÛ‘Æèkh•næõ á%=>ˆQhüR5xÀusìYæ(õPéJ=É*SÐ?"—+:ÒÕÅ#¿)cÆ2ÅÕÖÊ–Þs¯Ç²‘w޺ϧé;ëé©yJ(?m5U‚«}Bîñ` PZ09 |Z u‰_zîó´:qaNÐ2b/÷DÊýé¸'¾RÊËgJŸTSÄïW®b³Æ·/ÌKPéỖ†¶€yÔ±¬B<Áàˆ‡MãÛQæüóùeNIï¯ôg w]ê÷®hÅžÕ§''çcû-hy¶¢ûZÄÇyÂã±Ì¬Ÿœ§XN=÷År˜s²Î6h½®ÅrÄ­ÅòûÑ‹™ýGYî‡[_%R¾Î³`‡\Ý”˜€&€&xiþ(&¸Ûè‹Ü|š›×£,¼/~øö¢úÔ;@°›g˜«´g¹è"ˆýëeE9Ý­à vÛl€P.~Õ¯| %:UÍT›Ð»ã†^”;ý3Óù…<ª”ßæÞWÐöªK„ÚF4‰ìóÄFà•oûÿõ”µ`èâ*òÝw•<Ð[’I‚$ãã…®½ÿ矰n¶Æˆ‡"¬V §x‰ykÁ÷î(â’æë<઻¢ïÖôy°G§{»·¯½4øû"vêÍÝ×*=Õ]î6¸¦Ì­1¥ÂûúPCvs“›cCД’OÆ0¯6[%&'x aÈãv:7sïâ ýxöSdendstream endobj 811 0 obj 4987 endobj 815 0 obj <> stream xœí[Yo·~ò#îãU`M¹/¯uã¸EÚ4± Hò`k±X²9‹ÿ}¿CÎ g8w“ä†àçððìÛýy%:¹ô¯ÿÿìúè/ßûÕëÛ#±z}ôó‘L\õÿ]¯þzŠ*®brfuzy”¿”+)]gƒ[y¥;áõêôúè‡õߎOD碶"®/ŽE§µV®oiÛD+¤^ŸÑZ‹£[ÿ’Ö.¹¾¢¥V ¿~Ÿ '­_ µôÒêXyèÆjmÍú&7Q«ŸNÿ„¥¬ÆZzµ:Ñ¡‹Â¯NÏè)>WBëè×oèsëm 8¢6š!é ’R—¯O ^„ÔÁɧi |[vO›ž»tÅW§Gß™NØÕïàÁ×@VªN鞣ñ¦Õ5vheÆ·G/9U£;r*9Aè¤s™S¯ r¿ä^ÒÒ(©5˜0î¾)˯Ëò¢,ß•åuðMóÀ˲½ÍÇ¥±ô¹x9á…kÉ—‡FÉPË×”:ßêœ6<¯•ä R®;ËdÊa w)@€BËZ¦˜pd™‚m=Óò}Y¾—-~j +2R"™ï•3iAC¡6“ èy´î-L¦rÅ ~†}:aÊ‰Š–ŒÏêšh­•Ø$`ð<—¨+& 7ÇÊwFF]ÝÉ€CÜO”]p±:òÛdšœY¿J0ŒrëW¥Ú’bcã8Ðg«._–]¦Ö¦ìZÒ.Â.ø8\÷{±\u&BŸž6êBz6ÈØó·‡%}eÍÙ;Ñ*¡ÿ~Yvß3p„ŸÆ Áþó¹ùÊÚ )~%ÎÙÿži—t†½íf@€øÁÂv\ÿvlMgµ2m€›vä{YD+Ÿ©c I0`—ìK&û#©ð˜ëLJÜ.úÖ˵MzLz ¢ ª%¶'‘죉ÝÚ ¿y÷²,o§òË>KË‹&„ëniмVkÄ ®Ó2înÕU5Ä.PüÑ'S zi\†¢Ctš$á…Œ¾wuQ‚PdD=ÉDS1-TLnöQô0%{á0ÂÕúÇ`0¾rx†Ç_ôúF3UNX‚¿þ‰èŽOœpé FÉ áÇý3¦—t§EiÂÁÜægÚ=,Dr3òdÝa ôaNžtb$¬LMß|å˜Ö%?$•ì‚QYW Ùǜ,ïjNñˆ!^VgÜæ&G38ÃiÅqÌ7Hdõf~„3…‘èc;Ö×g Ýh3S@ÏÐ~BŸAü¡1•ÔîÁÖ®²¿fWY ÅA®ÒÐÅè*ç HºÇ(ÐÄ9vÖ¹CPžYÇ Ê3ë8…Ð´Ž°2j 6¾˜Ñ>ë%÷Mçì­¤€)b¨T£v%tÀ$ꕤR#’mx&Âq/5 ³Æ3OŠ7̱U”ÞMüãa «*D@˜¿ ƒ\EˆÓè_kBLÏ@ *žèÂ2ë ø*úþŽnlÊÔ̾«²{S–¯72z¡ã¡\íÊ~"l$«)h†ÍD䞀>;Þ«ÎÂzÎ?ª´—ùv­4ÊÙN™‘õ Ã%Ö3³~K_RâL¾Œ±èŒtØuÂèM×€rR{Ä­i‚õ¿ §þ[–Ï WŸ•Ý¿—%Kª¿*˵Ħ}Š<±j:û6îÈLã(-Ïš7ÿ§àþϲ§Z=fë<üàäçs)§ã H^sDÌÕÞÍÒ.bèÏBé¹KrjZ,PÎ'ÓÖ‰¡†@LÁ^N¬“Õ$œ_½êÌ [" ²CÔäÄÔ€±\’õIæ&9¥#ˆhÇ"bNYÅ<~ú#Ö€±T!xrUxðdjy…ш º5?fKfVß6‹VÂíF‡µÁ4‚NnmúÑšZò9ê0|©ày'wÌÙµ–°p›%'qÚWÀØÂâÆ+–‰žµÓÅ·ùÊb¥<àP>ô‚ë"F‰—›´p¸>‡Ö^ ¤44tî¤æùA"Å›ìå8´A/FVte¿Ï«¢úÉX¤Và“V¡ï“DÀåHÇ«é¼$žÈÖ—ÊY5=e­ˆ¶ÅoÇŽ ôÊá%ô].êŒg_Jç0ÚEû… 5cœ<¾÷÷]—Yžð+ ®uŠ á7™0lP÷°– ZÊÈ·ÖÁóîû²œÕÁ§‡?¿®áÐ|hÔÁ—R´…"w¸>†µ ˆçks}™873(ÜrÐÃÞU ú. YÙÊF’I@øc¶TVu’Ÿ¦¼“ùaÆ*‘ÁwHË—|5/ŠÝdx1šÊ°/Õ©Or ¤…}ò:#ÕÄBÍ.£VÕpî­³¢¥ÀªÑÁHë½M“U ¾tº÷Q°7^»ú%ÈK]èœ$È  LØ©õÂCóávg§‡Ó[¢%*\„]  í"YSͿ⠞ôidll¦äý2,¦¥\QjÔt=Ê@½`1¨Â{ ÈO¢ŽÇWuÌWȲíÛ'ܸÝòç´YÝ{ UR' É•%×-¹ 8xà4îà/âõ@0‘¸Eµ—¿¸KßôÅnZþÖ„°·¿˜0Ÿh#È̘*¡¶”€àcä`Æ>{ÚfíwÞ­ïcŸPuë·ÄÊf,`¤6a¨Â4eU ¨›…ÄzØŽ{”žh Ò¸•qˆj|jº#ø0qØ8¤çÿ`ÄÎ»í±Æ}õÜïYv@kêIëõë–Hñ*$ãÑí„]¶sÚÝg?ÛI »´3°Ÿöpv Ôìšµ³7²+‹¥0ë/¡1ŠÚãºgxêw·â—eÉzãÊì³'ã2EŽ*n@u!´䦕¨Ž¼Â ýϘÓïÜ;¹§T3î,•Å3Kdf‰ÇSµâ,¹(Ëwey}ß,ÙPÇË¿êù€,ˆ#¯™½dçv¢M×K/ñÿæèôËûxÁVR?Ä  Ìà T ö³Ç/9‚üá–Ú )S¨3ãâUYÞ”åë÷ÇãZ²$RV£©ìç‘l»8k ÌÈÚÓoÊ.k¬ÏŠdi—yƒv"|`wjƒsÊŸm =sNÐðrçtÞDâײûª,ß6q?!D†pÁo—WÍÇ]5q¸¶Â_–%¸Þ»»kÍ2 ÎùD7ò&zORä/) rbž¦ËË_ œ½ ¶‰—»lPÏL0Xíý¶Iw%W?² í³UìÒ6*°p×WIwe.[^•o›aFòvé1ÛþPïÚʃû~×ÄÌ/Ùë¶)©Þzb „EØ$‰F[dì›zð¼]»»õŸ‹©AôŠªÆÚõéÒg>z ù’e®â> 1v2¬T QßT8ˆHÅqçäñO†Ð¹a4~Sá`jFÿ?’¿a¹Ph–®Ug¾Û¼5¼9ò¯P•°ò|¤Õ/Iî Ô55ªËRƒßmìÌEÝ÷zz´j'ÐÎ.-oÆËù‰þò8íHÑCœÝØæ©™$Á’(5OfâiY~[–§ÍÏGÆ–ŸÐÀ6îë#C?i¸ƒ¬k²‹z¥<$zÄr³}›*ÍQRN?Ž Ì'SgÓ#¼Ð½G ¯Ôja:!Õ8îm«±‚½ç½µ°WO*¾Ë·D9Î{ë0Ì{ ÄgMy@F…Ôò†öAß±s4¦Û_×Àžh´CC†æYm{˘°1ÈÔ[#{[û0óoªS¡ ÍP¹^J¨|¨šÓ7=·ÅJ¯¦#Yáñžù 0¿(gƒÂN ú̓ÂA(e[Oj”’‡»v¼éw6:6†ÓHènÃÑv 0–†±Þ95›F¦mœ9hbþ ¬Þybï'ö¨ŽIMï6PÝÓ‡wˆ†‰a©§žnô®ßÉ7æÖ½$ã6ï\í:L †ééäß.R:©| ½¨gɦ¿¨z¢ ¿%ø˜­Ë1¦­Wþ!Û~R‰<ÕcTOL:®çáLgˆÚ ö ƒi ¨ù…“‹ zTþí“Û 3Ú…†áüÓ‡“C&‡Ó me’&þšz¡",Ë?͹JµÓôè¬'«;窆6èŸvõðûl:Ø’-[q¨`Hf´«j:øÅÆÝ§ƒ“Z6ž›üWÝ®ì'ÅÔRÃ_ÊÇéàÇéàÇéà: |œ~œ~œ.1âãtðg8j8¬¯øtð°søx0ˆ&\?Ùxð§­Ú>Ž~ãÁÆêñ`æ0˜1äLç4å‘<Ãë&'H^Ù7Þ2,´\ä¼?Uq0%}›G› ͧQ^ÕeûÝÎ!—Gy·8 JnÈ…ÑL/2¹;Îô–í?c¦WR¹Õz6Ó;ì>Ó+5 ›O6Ó»Ïo@ž7ÅðU ÂÖ™ÞP|ïÉCÏôNz¿È}¬BCÆ@°eYÊ¿#ï¿;ú\Sýendstream endobj 816 0 obj 3385 endobj 820 0 obj <> stream xœíks7òûV~ÄV>­)v¢÷ãk8 ¹"Çœª« ù`¼~Pç5›püûë–fF-föa›ƒÅĬÔjõ»[-ÞÍYÃç ÿ´¯g?¼°ó³ë›ŸÍÞÍxøqÞþu¼žÿx$ŸûÆaÔüðtWò9W¢QÎÍ­PÐb~¸žý¾xs ¥SÚ..ÃÐ'7K ³`æâešð(Mxž¾V'üÔýãðï³Ç‡³_gªazþ:ã^ÿ*ªÑz¾†/N7Ê÷_.f/w=žw°°8ÞYBî}Bî‡Jp)Wéëy>MÓ4|›†ëáYuÂQ®Jª”8¼¦€ð¦Ñ\.^-Òç—iø(­{ž¾Êíz&Há}L”—R2àô-(Zf& nAx8´n 3‹KÎC-[ÖM@8M_ °›4!.³BòÅÃ~ˆ”XJÝp-õ|ÉYóùá p.©LD=ÜÊpJbüç¾ô Ðãí€À¥ˆFd×­s¨jÂRPªŽ-»%U}KUe#UŸ$(?§á³ðqË~ØCÑx¿û¯7!z’†Gi¸; ⯠HųÙ჻8ÁFRßÇ ‚\ÇWmÔeÚ)Û¿×F²ì¼Êƒ÷ÙÁgpðÁYãª7 qx–&¼:È‹kð A°,Xåê:™öÁñÂ×›ê„óôõ4 Ò¾#~•¾ž8oÉâ‹­üD\VR;K?a%læ'VU$>TA\Tq¿*! „”„×Õ¯‡Ëa!ü é`8k”ÞVùƒà¯ ͈n¨fëäÁˆæ&¿$X~Hpv&™!ìL°N3"ÁÀfïF°)AÜ–`TûÐ~Ô5–X*²i°V3!ÞNÌ%Ã7iÂEõ0ÄD^ÿ/³‘ð÷q˜-LtÍ”¯1¢ÌM‰Ÿ’š5z[‹Žp™†ãÿ‡ÂÓHhÉ oœ“ ½¾1Êø¨½;X2ˆˆ p—R0ƒÏʇPû`,™÷Þà™`lœCúÃÐz-˜ F(Îðà3`Ì-†1Ùd¨ÒRj…Љӕ—"¢Êó  ÆlÍ—ÒC¾Ã[g…‘£`Rzt°^[íÁSí•‹ òøOˆÞ „€$:½‹DŒ{°BÎ!D³—!ûRèÚÙ'ûR@Ú¡Ñž­ÙW7¬qN¨Œâ?@šxÃŒ†H/H‡”ìÁ‡È]©@¾o"w™g2 “”Ž[%¨Ikc^|Gã"N×üYz§s0ùúP¦ ³ÌÔ„Êbvér¡º“”Ç[Ùh"SŠ1ªp ™RèÛ"„$SƒÄ²Œ‰¯Òð¼0*9?%fS=%‚ѰVI r$-ЉŽÍ¨ù-o”­]‰TÎ8Aç¥S–Âk49E4–H¸F;K%ê …Ë ¸—Ùž8ˆûR(Ö8ã³)/ éàì äa(aŸ"®BÔ%E{HçlGŸº<‘Ž—Î¾Ê ÀÎYßm÷1Lª:…Ї£ºI]ÇV¾ã/ìîÆô•h4eo¤ÍžÛ…dòQúzEÀ!~à<°5´ùNh!E·$À)û¯˜Šq sÈÙ.;O XðÙ/þ<Ð “(EѦ¨¹!S^““µS¤°‘: 4 Ø)YId?bÄfI)ÙFßZ¹Ö@““k@0QÛ¥Gû¨|¡[ò;Èñ Y†'UëI×X‹a½€çjhh½š”d…ç±Ñøz@ å™Èl£È$Sc.eÆJká?âX(nm0`wÏÁx÷ž!‚;“êwaŠqº7avñN–4ýB£BC‘Zã‰9³½˜œèÀF Œá¨,Ñ=)Ftñ?-Ø3ʽb&7-dáp› É7‰f¿•âiCÒs/MHi…¶¡ØûòäzÞÉ—#n‹¨W,ß¾(æŠòݘ@RZ[”<­­XHpÿ `œã:8c+4TÞêiv¬Â½=8H´tàRÛ ¸jT¥ƒÜëQ‘¿ÛÌB™Zºws°„²3>Ó@·<&‘ÏID›ñh»™…(îÈFåQ4Ø¢-Àöcnç€ qâ"ÌFœ7dáDõl òë|9jrRñ½nÓ'ùrÏvý‚Uà—zÙ?&aTkµ§úSão§WKɰ Qf*cÒñ.¥ÙáS¡£Ía¤` w*1KÂãCÀä*yÂ@dƼV ,k|Á³Â.J ’dL&G£<̆`,—§´»,=ÌòûšenLȵNûÝ»Œ§eíÞ¨uŠêLÕoÉà!š¥%&ALž¸ ó‘Aµä:òó ,ÃLWo“bŒmtÖB3ŒèíÑŸ‘)md-!.I?ƒØV•·Îcª‰Äü(‘ÚÏ\cw˜$Ê ÐØ&§þ)~÷Æ3ha*º"W«8¨\])ž#QÎûÏÙÂPÒe&¡ÙeoÖ´P“aKN êÀ”+„.Ø;ãÜTŽû€—ŸL¾` $Ó#^„ŠÎ¿ãd©Å€è ö†]@Ý߯mC'–jž·ûªœ^o[Üõ¨$“kÕÁ°­ae^™,™ zt>L8JEŠrÐÌ¥~J}%¸/@&æ¹ÞŠ±È¦Ís• ”踒çj¦{q"3‘çÂׯÈíŒ<„HJ@Ìþs˜¢™ Õ;lê°Þ•y% âT™w<‹:rG‰+µ0÷ÁþÕ«4›¥á÷q¡å×ë¼4™ƒ#ò\Hg®ÂÐÙG¡4iÿp_k°JåR&y6/¶“ “ÃzâÙ8³UœKä,X¼±#Ájáh¢!’SÛ•û{~ Ž“}íúŸÉ›ÿ+ Ÿ$Ï?ÑÁ‡Óðµ{€jšæiý¼Zø¨ãÞhPënÝ“êο%Ü™ŒO„£"ûˆ–(ù© Ö© {[·íב¹Òš1KÒŠé057¢´™ÁS»ª·ë®Š¢èbpËÙ}ÃÀ£:YiÀ!…#¬¬“æ> ×`Å´¹F39­55—EÉ 'K€1a:¥ðp÷^3ßA^ÁhøJícã5’Л´‘»IÒ0r=)ðZcU^™¬“v)ŸÊ%$㚸Wмã[^ÍHɱ=)9Ó¹—&l!A@h:KB—‹¸¥s>Ó Z2*☠¸ÆÓû‰^âù”vÛÇÞ4Ë ãS•Û†]Ê è?phË‚:Êa¯D× X´´£A$ÀçpC{%hÃC [ÛAz%Bž îÐøóü ³;®sÎxm%(ŒzKFUÇ:”Ñë+îî¼ãÁ8ˆ½í$UÀoØñ`a+åú/{tïZàÃužñû/ðÅ£åI1W ¶áà.G¼5½ý¼Œð°AMûXCBYxàxùËËjöð.(ÔçÚ `_™m6ZMÕèЪqµME$ê#9ĤgyÉo´iÔ¶j³ÈÁ¶é±¡Áƪ;„ÞÚíÁì ñ¦·[]áÄäMŒi^¿Š‚z˜2ÁÍäà]~èFShª(¹ª:¡@½À`B¨ ö¾5wПª!΂§Ï¶>#-¬¹ ó¤šß}ƒœS²ôJ‚Á„ÔݸxÀ©ÿ²‡»À"¿C˜xYévòŸ«AŽtƒ'dYª+W™o±šŽf{y¼#×ÒmDð) ²S}eøLº+i3f4€ñqY3æ†`Bèˆzë|×nÑÓô¾ß¹uÛG ’·u_öܰ6öE¶Wn!=Ÿéq[¢|÷òjÊ·Û2Â{ܨl±wÅP*·_öâ†W—\©¯ä‰[GÛ¯ô‰y ö•>q#ôþJOÜÔ°ßä/÷İκ›oOÜ:Áßë‰[×À÷í‰Ûÿ׷²{íöíµÛgzífØ­^»Á)î#™‡Ì<+G×-c:†í°ý‡}²±pÑ€ ©Øœ Ìè—‘uÃjí—c ÷ݰôhÛÇn8Ýòñ~¾ ÷ä˜ôY=¿ûÇn €‘)é°•ð6Bº<™Í…j·L37*ÅE¹Çë¸Û5Uƒ¶sQ3ضGiø< «~ê‘Oÿ3˜FSUøðõ *ј˹ǚ›ÌþKšú- y¿3Ö§•MI»-—Esá ù„VÉw¸@(˼xUÀdc ïê¬Ca炊éFØ\g߯]¤±Ý A麂ØyT¿‡¨ µ¡Ü¦¨Q.«6œ€'"=ýãå펢#n†_»Ïß¹X°ÎÛ]"þ¸Éî Åb¿I~Óß+õðªvFewç'-ÃûG;a!¹Ä"6‚6»’Ëð¹z ¨å¹JcpPž˜£ÓPöÃ^÷ý¥hõendstream endobj 821 0 obj 3497 endobj 825 0 obj <> stream xœíÙrܸñ}*13.‹Á}¼fc¯“òÆÙµR•ª8².«J×Z>â¿O7@ äpF#‰v Ã@³ï -ý¾d _2ü¿ýóøjñÇßìòünÁ–ç‹ß<üã²ýãøjù§C8ÀùÒ7Þ£–‡g‹x“/¹4fri…l˜•ËëſV'ëÖh««S\+Ã,3«;\[«¤u«c²ÿ~}Àf”µ« Ü–R[aW·̇p\ .|væf ÛRZåW×멎]e›=Œ“ö€«ót‚"H ]Á’Á-ÁrZD˜g²Ã[jµúÒÂv:£>bbzü%ž=³¬ñ—ÂáýêÓZ«FK¡(ö”Ò˸v˜G޼_“JòìÈ)~D·Ýê,l+f„ëPÖÞçÄHåAª“‘qp¸B+^ŒìÐNhM1¡#Pþ}øWЙi®qèðÔ…Á¥‡Ãð•~‰¹\J  ß½KËŵxö4ì‚:ò!.¯úeD'Wf­ëD‡N$ ­×'ðIZ×HâÀ>ÉxNSø6Áèf £ÉUíXpÑhex„©uJÛµq÷4-Ò«~·F­Tâ=ó©Š¡1ÝxÆ3Ñ¿«›s„-rÁºFpå:à¯É¨'Ø;à䥥¿AÞÂ*’·ã ΕŠ_”Î髸FHæ)¯[$ZJ4ó–ØÈ»H#c¢â&‰“– B>Œ›`¦q<·Ê›*6Á•‚¾‹ð8ó«7«|¿·bŠz¦ÏÍè‘cbÝÔk{Ýžs6\­L2¢&^”š¼uœO˜Yàc0dÚ~š¶ƒqÆÁ¯´V¤ukE$¼ŒE#ÐP]m@#+¼ðÊ Oka“]¼$'¾Dê˜w|õfMÀQJ™¢Ã!$„;ml¹ËqH¤í¬`£g¼H»×i™œïˆ¯°Lö–ö‡rQOhàAJ̇ò u qų˜|C$þ»åbõ‘ü;e0 ²MúLÔn.ô€›F9ë#îÏ׎ƒ×ÉQ *`²; p×S³0$†|/r%Á¦AϘ…4a Æ<,#íÔgžz¾Ÿ.¢×Mðþž´áŸiùÜsÎx‘¶^ f3ä3å5ãcpD³.ë|ªÛõ§"3ˆ»‡Õ/² öÙáâ×…j˜^~^°åÏ n(™]î ö®@=æzýÎåâõh#KÖY–C¤0PÛÈ:OÈ•>9îÞ¦å»tàç²@O^èÑ}½¬ Å<ñz¯Óò8A ×Râ_ó…^‚`RÆ5èè •ý#1$rœºÐ ˆ¥cjÅp ®Óäâ ·¡bדæGdn¥³ÌïAÄ Çmagefè›Ý$ض2¼}P+T‘pú6A81ô,a»âYB˜ A ÷,1» %-Ò+ÊÁØHÔnÚ‚4»èŸ 0ªKèrtšüÿut¤Lò,Ò@£áñʰ¦¦þn,¯¦‚ Eä—®ˆäEdªžnC6xº ±‘žIQFb¬3yÛµ?Æ||ÑuísË®†$ûsªïiQ˜C&ä6HÎê1c9-Ę­Qµ N†CK `ŸÆ¯?Ùª‰¬Á¶Ö5<ÿåLÔã•5™ÎN5 ‡â‘ ÁÁk."¢nÝSÚÈÅÓ¶­Ÿðýv-†)8'í^î'vq§$x·¥vØüÃxå,Çw;„+FîDpêv«pv᪚¤ÂÕënX~ªBØ:\¢·á2L( ´t¬O(Rrò%j¶S*êe»}“DK¶Ûü\“‹VتüF舸 ºÑ6Í{–^Sr´@›SûT¯!óA ø0Ýñý(ßïì ŒŸì~ƒù:ÐcÚ¾Ìfh£G™×ýÇ‹ñ0üxOxháEBL½_{lh8!\®ìÁKü”–¯Òò°zàE/ØôƶJtûj¡,7÷Ðôv8[¼EÙ¼í›Nu8 =—(æFkSÇSæ”ͱ¥ã˜Qé ´s«‘ø¶!ÔÈÏvg{†„ªˆCg¥ØÕ ÝFÌfÌSËÆ¡ äa¥´Lœ…eª{%r:›ÜÉGcѾ€¥SO `¡Pò#7!ðÂ6>„¡éèH`}2D@ÔÚi2ä¶æ"ɵê$k¼×â9ÓϨѱýt1Æ0VýPÇðéý\«¿*T9ZŒÛÕÆþò—’ê„À†ñiq«â„Û!µîDŠ6°³£¹v¦ÁNz«9ã=(gé]E3·©®÷H”h„KøLÅ3áã=ÑA‹±l­êÇ “úbO¿tã­;œKòþÞi(ÇWoGŽþ"‘A;夜˜°»ø3.ÎÐ˦ނ¸ß½÷ h|_#ôäë—Õizøœ±Û>mÍš‰f€MxÉWâ⣸h€²ng·Wq!@È41d¦_¤BÕ¨ÎÖOá¤Å0xõúzQ=ð¶¡>E??aº1zテ1z¡¿Ù=lC=BÇè»ÝÇèÚÕF•‰âú>T& ‰|v¾³Ž‡_¥ÝùcÖBY(—»Á;áoºº»Bƒ%xÆî_ª,ÌØY·“ïW›¯õ»›žTãÌWß<%‹.*Ø=ްw¼JeGyÛî܃·`¦Î›ÝFسŸ*˜…wãmÙÛr\Ylª­”`^º¯Í׻ްwì?áÙŽ‚½Ív@®a³‡qIøÕ1Že§á·Aác V+VµISÈ}b–ªÓR­iâŒô×Å Yürendstream endobj 826 0 obj 3461 endobj 830 0 obj <> stream xœí\Ys·~gùGlå‰tiaÜÇ«Ërʉc›©J•åI”(UDê eÇÿ>ÝÀÌ fg—\_±ô@Â4€FŸÀ×|·áLl8þ~>»:ùä[·¹¼9á›Ë“w'"þçføñìjóé9 PbX°ÒêÍù‹“ô¥Ø-™ö~ã¤fÒÈÍùÕÉ÷§7g@ZymÜ鳨 ÖËÓ7¹÷¶9àeî}‘›WyÀóÜ{Óüì²K&ŽÍHLK¡Ôéëæ€'¹yQM‘>#žR [#ÓÊ>>m’x“I|h’xÝ\ûÛÜ|Ÿ)„¯ró¦ÙKÖp=,XšbÁçæã³³­œ3mæg'Iä^Ö{vR‰Ä«4à6÷>˜š?œÿíD(ÎÌÅŒ1bs~T3.5?dz{3Ž Höf\jŽŒSr ã2­âêpÆ!¿´Ûœurþñ÷tµ×¹yÛ”™öªÞŸmá‚é°×y¿È |UkWì%ûzž›7KûÒVe_ûÇ1öå;íkf÷²ùI3½¯zgê~ÛÛ­‘–î—äS+Ù¡Ò~KIL‹˜q?nì2bt“Ÿ|+u[a,³FƒzøD%íþëÙ–3` !.])É ²ºu€³Bí„¶â!‹[‚¶õOš.Éh8RñVD‡má„Q¡ƒG«RF£ââp”L+¥Cƒ¶p`‡”‡ƒL+=‡ï%W*88%øÞ8ã#¿q¥&hŸH•¾\!̉2Òø.û§Ï2;¿Î½çͦ^œãóó“oN4ãfóxé/`¹20»±Â*Æåæ :¬`\L=¯O¾ÛוËD$À€ïÉ“_å¥í4_¬r¾©ùU¦°Óù>jxÚ¢Ð:ØÀYð<Œ§Â|²&„$J90 Òá* Ò}›—®’,)å…óI€†1 NŸ½?ýˆÈÅë4Ü8éÆvüô& × ï”ú\¤,wܶdÊ æ” ¥LEFÔ2•xrÞð¨àT’)Î=,“H’æ*0§ï I@…D!‹Òßkñ¨ÍåËÊ’”Ç(=“Bû‘ÑV8—X ¼ãr<^TøáL½Rƒ9IÜ-N€Ž!ŸV‡±•Á ¥‚tº¸0@°*㕤WD®Ï0RAsâ æ[iAíL)o°[1ePΑ†–öôç´V)Ûb  '72hÍ%±Ríºj2"U˜Îã§l(©ÎTÒ.­aÒ©%%òHx<`˜Ý÷•¨2=ß‘ˆ‘  £À²BÁ â/Óp¥žFmâ½4¦Ng"  Çþ–i“8†lézX€ `ß@  ;œþxf43Jêhó²EÍ ò”ðg¢¤˜bYá~A¾$2ŸV$dÀð/ЏÓ5z60ÖO†• D&Þ·Äub@àªÀAlS/ÉöfÑKì}ߤð$÷^-Ê5°=ø,×¥:[À4.qéà_f0µ K‡HÌOxÖ2EY¤zdÛ(‡ÓO±-5µ.Z 6H”dªeO ¼Äá «B¨ßÅ!Ö›É"ÆÑí…?Ol€Pª»rÚßÓÁÁ8–*Bf|–ª¬)HôÃŽ*þ71 Iì5·¥A!Χ‰‚|;ð Dý{¢Q"à)påvóÂÎP¤Á}ú캳ËyE_wÜQ¯è‹`J$|Ò›˜(!ÕžDRfÀ‰n˜«8Ú0ŒQÝ_âpÍ,ØÑ9ïtpf™wãnÁ‘•ÆuZ'T=;Îèu!³iB+1Ãt2Ú•”ZY|Dg«$3ÒP>f1Ã2é"ˆlô¸Ô<4„?'Ú GÅôOÈú§l„ðè|¦!é844”„ÓNŽŸ÷m޾HFý~1Ó‚Y¥ÇÙˆžP¾Èíæ’‘eA”K®3é7¹yU¬T@³˜«®ƒ8‰YCÜAl’D"{œf˜²b„WúQûX £g­‘P}c ÊŒv¸+ó5€±- 3UÓ*œœÆ°³­Eo‘ãwƒ@g|Fâçä¹^Š;oŠùév{éÒÛy$û‘¸@´:Ò“Šw9q(6Ÿo1g¬t7^-s¢Ä6˜?…iªo$3Iéù¨k${uf•9„X™y[ Ê“®ÝŽ£!jëeê”W`ŒU€Q'ê¢lMÛþ7lÕMfÇ(áMWß(%5¦Zw‘Ø‚.$ºHC¢@pÐ Èzw!7éÜ…Øqd ÄvUBÑ›èr {èèí[¢?!C ­¸ )µçàÏ´™ù’¶*%&ñÐeÒÐ –cb ’u¾ç-ãªÈ_`/Ä>¡ˆ ®S¯”¦u± K}¥ í7 ËBÔ&D{/¸šìšñsš9-º‡]r§ã°üRê¢Á³Þ/¥Ü8–z1Ù‚!BxêJæM²óŸ‘C\Q3ݬ™e»J^ƒÓt£‚ÖW;^Å…t$”„TãñÛÁ¦ò m‘5Pz9Ï,jJ"?¬n]º« €å¤œ68)–sZ­ºÁm7rZˆŸ'ñð²$³ÓB/¥ë,<ÄEZCúe)G¼‘¶Eß]¥L¸y¡EË£òàEr”^¿4AÖÇó`¾þøqÍsó/éC'f~¾ ªL¨‰,WÑQ<3/ñ =3p” ËóÇ,Ë$ÞŒ XÏÀèWÞ£² +,!鮌^j»*¸%rv“.¨€`'@­¼ ^}á)/L¯ åán¸ãÕ”äÿ3»òçæÃìöæÞ/«g‘Ôü<7ÿѺáo¦f³ûV6T´½vf@­Çï6gþW^{¾Éo^Ô+ð£ùõ‹^PöSã܋ԩ{Ó¶ë7ép•³3+‹:ÝkÎ.Gçɸ•µÕ”֦ɖLŒ¯@(ÀB¸äâIaæM½j‰4¬!Ç"PCäÖl ؇˜ƒS‡Uüx†O³xµó$~ç½ *­s>PmˆES³ÆG_–èž Âb6à6pŠ`--ÂL¥ýÔslÁÑ4‘&·Þ‰[˜=#Íp ±÷WÇ-xð=fJ!Ê+Ã¥{­úi”ÚþÎz†¾˜§&¨^ax¢¾…É<¾þr·ö‡£Ÿ=ú^ÚQûuà&­Ã(ÓóÆô!ó:Óº {˜‚΃Mñ-m×·BJ&áüKÏß‹–nà råmXo4ÉÂ;I¢ëÁyT/ݾH ¬u <†ã—¬vk0zG<„éëªG™”œÉžºM_QRr¦·Ä ð+r lJ–¬&L9Cµdw#5@@†$o'ògÓöñ"w»#r³å44pëäæÞán"pXØh~IŠrÞ 9õrSx­ð `··¨šÇB¹DW™§@àì-ªÓw̺E×í€!?6aÀÏI¦½ž°±›@$)¢rˆÀXùQ¹#‚„Q”pK7b(&öÞ­‘uRß«È i£Œ ñG‘C‡©ç‘_a"Mæ¸øí#WˆLƒ¦Xà<˜{Wƒ•Ô!‚™Ý ß¶´º»óF–ìžçìNÒ øÇ#ü^í•îÁ%8÷t÷²M0õÃÁý3'Þj­0B&¼zîÀ[wš6ñvA`gÇÓ¶Ã]·¹÷Ê3å`ÁAR°2ì:\»§´/iEòXÚQ_ihŸKïD<ƒÚ‹PÕ„FCöYn~›çͦ5çú=°&È«ÌE턽‹.*´Ü ‹ÖÃOIsÄZI°¼Œ¢ ЉÜVÀJ„Þvïñ Pß×¢ð#<ć©XÏP‚½«õ4D‚3¨Îakõ”kõ Ô~Á–XÆpÈö!µzD½ØÌŸ¨«[ꑟ F©?¼Ì`ÿ5ƒØ¯¾PcQ´[¬¤ˆgU½ê÷æyA¨ñVOÜ#»óýk|T.°ÛR¡5®ëÞæØŠ9¥¶ue¶‚BQ¥‡ÊH|-oÅXGG„º>a*à©V®Œˆ`ëcT×(ƒ½uï8¸ŒX{w„ŠÊñÑJ!Å›çwº¶¿Jl”|†Ók=‚Ò÷°¬Pi*«ULjÑ50ýÚkÚÛ¬ ¢šHŒ ©Á?Ì…n„ÇÜTE—ë=Ó‘ F“x§Ú.5Y¸øñ  ­V"¾ÁrZåß ¯H+?eQ¨¿:Þ[9uà[Øúî€o)ý$à¿à4ÕeÉ›áÈMQß³ ønUµIÐ;”›%È7ʾ3⛊cÒ¹€µmUxS¿µ‰—úK`'­ ~-úZ·ŒþŽôwÍ£¹ ´G¿%(¸“wM´aOš”û?üb›: àN¬ñ÷kLñÅN^Œâ)V¿)ˆŒ™] tâÒ@Ø,E_}#H€SY¦¹h™À™"R¿9:ypLuá‡Æ"îe #æÇý_¹2ƒå"Ö½•úרţ$óˆ …b Ò~©*M;„Äo¶2`©Ápˆ"¯Ì´šÓõé7'ÿ&2áendstream endobj 831 0 obj 4061 endobj 835 0 obj <> stream xœíÉr·ñþÊ•o˜[Uzöå˜8^ËŽc‹©JUœMŠ«¸È"%Gùút˜Ac3oŸ—r¤!h4zïF~ì8Ç¿ùçùíêOß¹îêaÅ»«Õ+Ùåç·Ý_Na ]`ÁJ«»ÓËUÚ):!,3ÞvN*ÆêNoWÿZw²áÌI„]¿<áL)ÉX?â´p¨°~‹cë­0nýÇÊz/Öw'å5³Ò­ßX)íú,îóÞµ¾‰ ƒ‘ÜU0È18­ƒáBýûôKÀ\‰ s '» b[ºÓ @ùìp4€ú8ƒõrýM™=m.ø|˜Å£>9]}»ÒŒ›î' åg+a½+tŽ[Ç´ênWp{Ë´fnV/f >B»'¸Ìš“è}[p{Yp{(³¯Êð³²àe™½/³·eøµJÑgexQ†/Êð¼ ï „Ça6qET×ó–)ð’‘ ‚qkB,‘–Ã…“iÃW‰ûÆ)­]~—¦Øxf¬Zs&`xÅMBv™¦¹©@¿"0^â ˸V‘2æ$—VQàœƒ›yÜŠ¥D¤ƒVÊÁôkXáqKgoRdúª ß#dÇ‚³‘yöŽPá"Ÿmu?íUdÝF:\ãpÅ0ý2S4&"äˆÚ÷eºqu‹òa=Ìg&(£×+döFHÁ4X0c´KL¦d>;¢€$ Ð{‰ªáP–7@fáj?$¢yW!˜Æ&h ‡{¡DÏá{!‰Gœ“ç(+ã^ÊÖËÈÍ­¬aR¶å±°÷}B'HA™5·:s,`…ÙIe‰â{çX°—zA(”Ò pýh¼3E½4&í„;½þ `K®Tp½öÄÕ#Af9%—T º`{A̬GÄí°O¡%´Á‰ÌÙ‚³-i,êÍû‚R&Iƒ ÚÙJXZ£¤³É®Õ~ÄÙ¢/Áð+¢þd¸)#M”i·u…†-7§á8[(ótþM؈ÎZgbèÔÐNÈaæ§“ xǰݫÅá«2œxµâ}&^íEñIÄ•½kBØÛ«¸ïùƒ Ï‚ç¡gF \Þ'éö:í<}_øüšLçØÌ“Oš˜ÅbKÌ# °S!½W ‹ëBß»r7PB#Qñô“ÊŒ°ÈwVh¡¡‘ÃÌ!2ÁD˜LÊ­"“Øõë 0oR­¿_o[|7ºazFK3)A8m.ø¼’ÛÈ$öŒyC˜¤LÚÚ`@æØŠI_7ÉV1)ݲ‡g ’£õ¦ìHÛ å™(qøª _—ácû¦Ì>†1>±Èçr|b²‘s$ ï ÀGø18®Ïƒ égç@`֚Ē]H(ß6YrÕdÉ}Þ>KúñÓrâÍ<å“ Qçg"ì%;Û%ΚW­o‚økôû_­NŸ|ƒ}H}ŒD¥H78P-È6b…Ï(‚ôâÚAÀ¡gl@\æº ïÊðªÀýþ¤–,a ˜ Xr÷é?É•'׋³Í$¯¾,É´ÅÙIàg'|mz¡ ]·z!bNÛüŠœ‰‰Vå….F‹ˆ·eö‡2¼ižüº ßdÁçºéÝ®›8Üe„¥©~V†ÀèlšÌ” ‘ÀÅHhd×Ra—‘#g1&\¾-ðö&Y0aän„ë53sZîB¸ì]Á¡„CãqMñª5{"(mTÀL8ˆs!x܋ɗ#‹‘Ü”Yr™¶8òeö!üS_fä£v0Õ-Kt>¢Aë¶1òå~Iµm¦†lR&Ôßbø'É™0 Š ¡199ûkL· fªÊ©H£xÁÒâ5MÈhÒFëÞt Éñrê™]³::Ô¬U`€LvZGæªÌ¨Ì’«bÍTPb¶y”²€³Ø÷伩,à˜°ÃÌae— °ÈŸßlY`T쎥ÌV±›”~i}›VÔhŽú€í:ÒËU•Ë\XU¦/¬úºÆõ¶ á–êv¸Ä†ª:IP½K­™­SÞ gÓñl͸ò´Ö|‰³’Ѩ¿k_€k>ñ̈́վ¢uø¸ ¿)ÃÓæ‚Ïv–·PQ‚X„\»“p…æPuŸÏ¸¦ òNÏ9-é‚Úùrûi]82•”J›fÏð4f¢Ji¥0‚¼¯Ä—±[˜ðŠÁÙýÌþ4Léš„;$´K Š$tv !Õ'*’Dq©¶R-i¼XEò“Ç’±6z%?¼y㩪ÑÇ«¤T`$—ž´‡|?ԈܧSTÀpa€föo6‰0/Ä}¿Ïq‘Ê0®š1ÑaÕŠ9”­Pž>ÿ¡u‹¨‚ Hj1ªmз§¼Y–^T´«¿IèëÒ" ¸dmdÍÆÝ^޲‰ œíªi‚y_Þ}ç±¶+«Š?Ý'’>Î¥$“Äz>OnX«ïbnXi—jc×_ßšFÙA4âôCšÖ ÉuÈ LIJ°¡å-Y1'´edôÖ½‘VeITZʾDï!Âsu2C|ØŒk«å\,󺊘æ$’÷6ŠøZ²Æ!ž…ñˆ‹%:Ž¥cž“‹íAKÂ#„aƒèü½ˆÃ?ËðÓ": oiøIþm‡‰ÊÄ|ƒø:58£)SLmÔ™ Iê§Í£ÿQÿzQÂÑH‚Oì¡ÍõÓPS´Å0äΙ9Kˆ¼ £Ôù>³Üºñ‡i¢[PÆQwŸsKì+QÍ„¹OO£Üè¢k¡+]‹Â)¸Úš¼j‰4"1 ç6øê¨öL.„UÚÄbïRŽÖ@ŸØ‚“¢Ê ©éýOh!¨˜k ꪇöÑàà|zST^zèkf¦®Vû¥W`õ¬Ž_ö+kë¤|16~¨iF‡\Jÿ!/ÜI“$ÿâñÏv)Êzj\sӛѵ¦SU#±# õhxÑ‹§ÈMjõ>¼ú}ô©“ïiT6i÷žèI6[ÎnMÓ>™¤ûDhÇ©ßaRX(>ï¡püì5ɹêô´&‰|Ò~©B×{v‘†íjÄ~Ýñ¡ƒ¼2DÕÂæø@Î ¸ŠJ£ûÞxÜcVÉâ~-œØú^æaÒ0ïxèM dYÍÁS…fE/ Â[åQ¶•ƒ.ǹiEtÕèè}Ä›>CÀ¦v›31Ð,øMµ$FRXm]j÷I“sá6¸j5Y‘7úÔhÏñ²Â;cáAHµ¤4Mð¾!7»NcP[KW_%ÐÎÊ Õ{BÍ„H¸èqUAÊ`~7¦¦äÖ÷4Ñ ­0+6½£óOm%Û?zغ¢ù¥¬Sú ^+ E'±çÖżӀÓ0s@Xäñ‡ÚÑ@—×eöÏÍ4 IXT‚šö <} €¬ÁÁ/ü=RÁ?}(ë´ŸÖI~\¤ï.A”f hxøq1y¨o3Ž çÊ©çUÆž×øá—OØA.-º!K(±F @‰ˆz[Q‚x¯1%Æû‰ðÐLÛÄÞOÊí¤n‘[¿fÕ@hp8)ûë•àWß÷eùõ}á#Ža&Á¦ Ù ‰iìûãbT?qHÛ—`>€˜}š;Nt-?ÄHŽ*æš=‡Pé8µj zQÇý<ëDÜ3¯LŒd¸Ž‘þ\~HçÛ•Ö÷ïê=t’§’o °ã~¹«{F4…¡iïëôGqÃFO4´¬þ‚£¤«48MÅyHVã›`åF‰Í¨mCpÐ!5ÎçÚ6ÚoÊx /ÀÎPþ55°áÎA_:òÏp„XÀ¢KàF¢ 3¸`ŒŠ@Ø‚š|çÕö Dyy4Õœò_ I BSø5¦%ë/RU—ÇÌYWWnP=\,vy¤û¾wþq|Ž`‚7rñ-~þ m¬’ÑÑ×2:OW]~GÛ¥ƒŒÆÃ+fÂäQ.ÞÒªKo†ö‘VØ¢f+ø+’—fL1j9Ì â«u_¢–´|ÒvÊ}é'(?®ëcÕÞz?‘˜X• ïs*®Ô\)Ž®ž)É¿I°1™»›â­w£`ÒŽpAˆþ<¿=„Yžë[¾*ßÞøÈ1ìª-åSÏÊA–fþ7&F6Ê¡ôýÄ_:ˆã°—n;“Âùî‹<½·? *íŒÍæ«ÎÅ"…SêGi±”ª2­-y6!@f°1àR‡ÞE‘ES†¥Éh û·«ÿ½ý#¥endstream endobj 836 0 obj 3630 endobj 840 0 obj <> stream xœÕ\Ér$·½3þ†¾¹©PÃØ—£lË[(¬,DÎ gÂ\F$5²üõÎP… ¨n’MË ¦¢°äúr©þ~ÙØpü/ÿ{q}ò›¯Ýæòþ„o.O¾?ñ›üÏÅõæ·g0A†M`ÁJ«7goNÒ›b#„eÆÛ“Šq§6g×'ÿØ~}ºãÌI„ݾ>åL)ÉØ>à°p¨°ýŸ­·Â¸í>+ë½ØÞœî”×ÌJ·ýpjqIi·ßÅ÷¼·Am¯âÒÁHîª5È6÷8¬ƒáBýóì/pr%ª“ópr³Ã“Ã+›³Wpäoà}[ÃR¿‹Áz¹ý¢Œžu'üiÅ­>;;ùêD3n6?)ÿx"¬7p…ãÖ1­6×'p{Ë´ŸG®N¾¼9öDp'˜5qMft¢÷u9ÛwålïËè§åñªL¸*£·eôb~LÔÕ1´aJÀx"°N0nMÀ$»åp°Äimxà*qÉ8¥• ÓoÒ°ñ°%pLirä«7ß’)¯qJ`ÂZ¸×Nâdãã±µRN‡í»(DÊ8›S Ô .t9z@8ˆ2(<õ”ÛtéÂêAàMn}$;‡1Éeµ8''$—ÿ)-"¼‰ [NHË/ ÎH‡õ —|“(•­†¦óM§öJ©¼‹°ô}zOû°=Ï”ô5qò³ÿ‹ ›++“^9§•óSãÚäÕ]<‰VÜ”žÇ¿xÊ&™1Ú%©¹Xlf‚öÓ°¯ª6{“åVÎGV\‘kÓg¤®ÒÌ M©;š <i1pÊê\äÍ‘½"’ý îi™rÕ›7dÆ«rò®YâŠù`'ÅúkQÈ¿•ÇÏñQKTÿ|UM¥fR91­FOMïž© ‹øj+sÒêµñß GÁÛì$X³`EÚÅãÅÁ¤ÈfZ”áÁ 9÷(£ažÒÓUŽg¨…׊)¿±ÖYp h½Óp¦yä ÖÙƒáñqMÔ°džoˉîʉ^•Ñ×e”Lø´µÔíãm‘†Öh7ürœŽ.ϳày˜(YÜçOÉôx­“ÌæáÛ¯÷d8{XÐMŸlOæãÏ+M:…«å¼8:?Ö,ÈåQFo |TjyŠ·u̦Ð]Gv~q;Û ïÊãMy¼<Ý ‹¤ôq~Ô*%Nh‰’ø}Öð§J "Q¤¼à4!Št`i„yQ`¦"ÊmW„_•CÆ>z¶ßnË„ݹïZÆÄÇoO×ÕÍšƒ±KÍ32ü}üN5 PfòЇ,³T5¨úPLçmËJ:Ö5ï3†EU2"Ÿ…Br¥‚kKö°]¥D×êýK˜WØÂnŒáœyÔÆ€ÇvÓÀ”1p€/Þ¹ýÆ5>߸ּ0,½‘G`…BŠ3(¸È8Î WA[Ä`RZT{ðL~ñ©xæ>íƒX1'pK™g‚\)˜„ÑÃ@.n¨ ]íMZ‚k[NTÑL2%xý§†• §qóný¹¥]²†ÂU€A¥Œ(Wð¯€Ê5Ù³µEp,W'O‘Ìóµup¦¡¾È¥#Dì¢$ËгCk‚FQ€+g˜4è@8 ç‘'8À!ÚÆ5ÁIêVíAFnuO난U–¢`Ê4†Ð^ªíùU4å ®†1"¿ýs”2ÃuŒ@#µ¬"¹û4¬´] FQ¬àMº;±&ê.ôëv#òzÎÓõrôm­lLÔ¬W#õ<'sèøy¦ã¨o`ëe´$ «=¥â`>Þ8 =Q头°º3¦ MG”n4°á©)íR*?aùqÍo§õnÒ–Ú/ƒ}&”.„ÛÕY–Û4ª™ÔñoËÅ8û² ·‰86òÜ,ΚLy'D^ܧ aIáÂPˆ©c¤Žô2]ÉðÕÄÑ´kþ¢”ÞÕvóÀ[й1à‚˜³ ìE÷5 <ÞjFMO 0gMýµ@': $úCy¼+¯[³Š£=S©jùÙ¯ݺ-)%êU€à\VÚL-õª¬Ìébò!¤O˜´$ã—“aÖÂYç´²ö#i’VžFžžV†˜ãæQ‰‹vÂZ¶ù‘ØÚ2·9vªYk0øJ®Y œ"!Þ;RªYkŒ+më¼â.R­À—ÏCḨÐa(\k˜LWºû&54ý!Ÿ‹•\óDíÃrÍÓ"ÑCC¸çA“XÝó‘Z–-ÌK sŒ ³üEe˜¨¶WGÌ0k{¼ s؈î#—1c-ø:0¡Qfô”_ŽYHíÓûZ8+0Á\ƶ†¥ÿ,’Cp£trÊ€cšž­¶‘5ó«m ¢ñ€lßâÕ-Øn•\ƒŠxŸ „ɦWé(Þª¬þlž§ Nq`ˬîþCY;Jƒò B”iÁ¸8Y0‘Rb*9#ˆ#´ê¦Š0åÀ}~röñZŽÆà\õðRÐâ0Eu”Ùµa¤XrÊÅ„ômp£\Ê^‚™X©~tŒ@bHz82¢µ–)°n\˜I%!ŒÚÆ™ú¯î)X§¨ô¸á&í/€ÛªÅeÎÉ«kõ-÷O‰€Rê%¥â\z…Qž‰6aTY ŒI‹–y.ÉÔ< éȨÍd¨äˆî2ÊÌPœI£FºÓ'iu,þ \Îq9ÄWÑœղá—qãtùè•ôTû©A‡¡È¤ïºâŒ¾Ü "¢K†ÆÕhîh¤x Ca¦]¡SaìDïö*­‚;/àèum2”çD´h†òuº&÷fˆ "«Û`vö ô™ ÷´=S‚¤].“2á–€š‡«³}¤¹ç Tž>î%¨lST,@áà½&Åêdñ#L£Ä|ŸÒoY(Ôz‡JÞßy§Ï£t̺Äe:v%N'áa‹ë¦[Ö¸î}_Sˆá¿ìZABDÊÃ%?cZrÀA9.RIÂ0§Ìö#rŽÆé)¡Ñ±®¦ã ³}¶*†Ó4_à²a™QZˆêF£UqsÝjf›Øîºg¼|ÍãÛ>]ßÁ ØŽCëÙ䃑î@г­q+´O ¨|ÖŸO "ÄzfÏ`è4LNu}ö¤/‰ÿ7ú/U«Ë3`ÚÂÍÀD¾M,Χ¼OÁŽPè &2¦ÝLí6Ïq³mÔ8|sù³S¯ J51© .9ðåTJ’ySÊ2Äæ(#hË!‰Ãª3éuÞQ„œ¡6ÂI‹’ÌòNû>nb!´­¼,%ÿàÍ‘JIåCË·™ª`V Ví_ XñÜÀš5ŠÄ«Iûhó†KÑÔ(rÅ•!ö¡*Û³ô­•¬p<§h½@´Á0ÀuMíg‘ {Y™À]¸Ô•9ègHÛ¾8%8óÞeirñ*ì(µÑ¤°È‰\=" 5SÙÕ¯2§'_gââX·éWrÎÔË:•è¢æ¹(»B€òe³kBf{ŽyVØ ù“‹A­S¨ fGÅPqN3@ƒtˆ¹yèf"bù ªÝ¿ÅºþJj.±õ§CñRLžX`˜U;™„ItB¨a ©B”b}ZˆÓ?"ã´„@ôsbPyÚ Ì›Ö~85¢\!:<@­ „_Æ6«¾5ßÏ€ÃΔÜbk0Nôš…ñˆ—}ÅÝã-"GqaÓñÐÇHLrÙÍEÉ‚Ç/»o7LªÂ*X‹k ˆŠç‘'´+„/ÆXüÓuLxöºîÊ‘ûq_vGÛ&†´Âþڈ²nnbxZNXbVNùãóAs/˜ „Zõ &ÀëLõXЖ6ÉãmwôËr2ú®<ޔLJòø÷ù±Ë ‚¢ø‡¦ª¹ÅgR´¥Œ*ý·ÐC‘!Çò}Õ!ÕxaUô¼ƒ:Bu޽•ýìWiŒ¦›V˜¸»=È÷þ¥¼y4°Ä-…s/“¾ÁCY¿ÈàžfOGƒ-ÆSä¢Pxðußæ<¬g<4&À.Òk¹ú®Çç jB  ìsŠý4¯:ɳ«¢lú&Á9óš®[+ÑŠ¨ƒá—àÝRÔgÁÖÉÎXp²Ò§V,a ¡kð& î8b Ä 9ˆqº>PÔpgÁulò «â„íY&ôrdŒ#K«-Å:žÞÔ®~ ŸTÛF1Á¸¼Y¬h[\‘[Z?Z%ðؾîcºK«9½üº+ßñ.é÷ “®WÃ56v&®§j“óï%$ŠÂ?ªdžÂ%“&äƒ×á#¡xî‡ š«*€k2¡Ê@¨´þÑRÌ×ãÊ8µ“ëwtÇA€9ç—^ªw“S²Î¦rÊI»tqOj0¡yzj{Y9ß8¯EšBoæU¿pÔYw—ÞÃî¥FöSZJVT €œé1û’AŠ™†U+aßt¬ÎþMàq¶(Èö40ˆöQ4ÑWÌ;iÝä*pmÔâµÉr£4õJ‚=6¶LéÁó<Îx…ns‘—àÝ,+ZÅlÒX†ò!±!ŠléŽï] ªÉæ9§«ãG•H¤­æ6Àjjç{±Ü¨@êU¢]K.Þ˜ZHb`¢Ø­öXÕI§:úpžy HIûÌm$d;/÷å±t¶ÑPð¡;ám IVâÊôÈÊcùØ»’¸ÔBs쌕£dW H¼Ç|Hxh¾[®û´¶w/ž¡ø(-Öä¹]ñP]CHŠ`SmgF)á$ÇÖAY^낟¤Û=$ÞèŸ0øYC£~{â¢AÞ{_\ä-D»¶õ³ëªëYgxQÖN‚j1銠‚JL_._åÝÅãëÿt”¯“ªƒ@êNIb¿fwS]΀’ŠRpèÙ‚½Ÿ¹Ü­ª: )í¹ d€âry«Ç`¸ˆ£jqÎ/6λ¯›W‰qÍ?ܦ=Dèfçm¦Êƒ©FÛVk¤@TæV¾ï¢nx âÝÔ‚R+úžˆ|ÇZÃNüÎaGI*â×;-"×:-öë>5Ý;p ƒ®†Û4C Ó/æè9µPgeGd4S5-ÈÿŠ ‘íÁïuéß)àI5ÉÅð½j{9 p…+SÐ)˜WsÂ!¹²ëL>¥膾½Í‡Yå¦Ë 9 sZsir-­ÛM§®#Î]ÁC¤½ÿ¾Œ^”Çj'¼-úßÜÍ£=hyÕÚÛCë…8$Ôµò5ÃJü¬)r*ü6R üÔ²RåíJM•1ˆ•»ÁÖ{¯h÷%ãô¤0Ú“@Ÿ¤ƒèÚ+Òz—«å#ŠÁmÝÂàW³wEHZ9l?3YãiîÛÕD¿on¥¨]mÇhËÀJò¨å³¨É±÷Ë(!ÀÉGÿKØ7ãçø)ãwôäGX¦‘§ÿ ¬€_ÏÒbÑØ¤¼@½nåGXŸwl÷óý þ2S.‚÷Èð®ŒÆäÀÇ{É9~ϲÜÖj9vóûyä µZÎÇ5ãwÿ»Zmúñå«_'iíNšL>T¯Â¼„]¤H¸?.ëŸÖðQÊœ²ÞMÀìì'O?f!s?É?Íû÷æŠiÿ1ÿK±¯š HåÜÿÂ~„Åògþ‹\¾„y ØšºãèCüLìúyä)?Â5ø¸&sÒì7¯­@¾L;„Á¯ùg¿üB¥ü)<·ø>œ ~‘ÝIm¥dÁ(©›`BS°m;·pK³Hæã–XK\Ïs§‘Ǜƾø»‚ùç^pA0¹JŽR€Ë~(Ú„µˆ¶;ýP.øáš‚& ªí× ºsuµ_mô.'M½ó;OjšÂ–Á‡{m?Ú]íwFø ¶z˜ÿ¹íÕÇPfÞå‡ÊÚ …?X;JÖkYÛrØ<†=”Ì?7'Ê»¦<ºùq¶Y_ü4z›endstream endobj 841 0 obj 4452 endobj 845 0 obj <> stream xœÕ[[o·~ú#Î[%ÃÚò~ylR£IQ7M" (š>ÈV,µ¬D–øß÷rw9ä’GKH0ÍÃËp8—of¸?ïÄ$w‚þÌ¿¼8øÓ7~wþî@ìÎ~>éÇÝü×Ë‹Ýg' â.NÑ)gv'¯òL¹“RNn畞„×»“‹ƒ†#1«µ5‡Óѱ˜|´JøCYºc„Z»ÿsò7ì¨%ßÑ`œ6Øôä ›|‹±Rcýáç©]P‡_•Þ“î€/Ö^ÚâÙÉÁ×fv÷ Žþ׌žt ã¨ÉÛÝz¼ykÏ›ƒo‡ ªÉ]üdB¨YôC!îªwUz/ÛÞÔüg·÷ÇÒ|KM£¤Ö‡×¥÷»µ™ùZßä±Sjw,È q/.8 b>ËI¸` 6(Ý—åbÝï¨m¢ö!€´r»s¿R÷®WÙL…“_ˆøÐeÈ¥÷ìèØ*\4(J7i¿sÎÚ)8HÚO>¬=w—¬€Òš°J Úë¼*wøÀR^ÙÉ©pøýaº ¡V‡/ËËîïJïõ¼†p|ÚëÒ<-Ó®ÊÝ<™§}×Ý$.c´YUMë}ºßÁæP/Ršß­í®Æ@¥AW€ÊÄÉ“N“°þ%é@ÔVÄD®ÖJXÉŇG[‹£#ö íB•–pMº¦¶ôÒêXaŠ7ë#ÔmÖmY‹ÚÒg­rQfBI :zܦ[oôC"ÔFºê)±’ o~efRjç„—“’dsÁÃÉéµç67jœŠÖt :Þls[y|x›[ß‹S“ B.Ü|•dÁÒÍ÷ìJÞæ¶6É$;<î]ç«Qè,ZéC ­½‰4Õø3¦–`H2ÂÆCœ#ÛÙÞ}PÖfõ”‡jñó´¸[©b3UgymHfEà%u{¢‹Ó÷žm]<ÉÜÏYqÏ£l„AÓM¤ެ™¬Š1Ì¡æUvW´ÚL¿VÞñ/ò¿¾aCøiŽóø†CÞ²eÎËêüð¯ËqHŽ%4R›Ë¡&kí¬‘§…/3ñàØ¼$çVâĺJ¨†E\Æ­M*„¿©0ÉèÍ`~—ü²¹äÓr0äð\6ø1çmŒ•´ñÕÓ*ŠÔ±•°o RV‹3IiΛH‘·¡„ õi½©¹kèá¿°¨Ü+7ÉÝàêßà.¨Öº 3žYPíÒsT‹À˜Ç@µlìùjaoÄ¯Ôøíñëÿzµ’œG¯KÏýÑ+V Î<z­n{ŘÀ©kw óoKo¦êÛÂTŒ•Ž`*ìs„g@ ©ÌÓÎ÷¦Ípr€Up2¨ß œ\½œ„ þ1l]°¸¢±JMZ%4)ìÚs4)'—W˜„z 4¹ÇÖÕ`ÐVúqa£ °Ú´°QAJ!siGékpÂUF¨ð jN6Ø@S/,&?óîoÕo-#ØÃf^ç3"èë!¸…î´=ÐBTÐÕÒ ŽàGŸÖh2QÇ=_NZñUîu‘ƒÙ +…„·3¬4³ú‰‘ÎpQ^ÑDo9Äd*°t¬áW¬ãe5–z¥‹¼÷Uî…% ˆ®¡vÎ$׺ÜÞew·ŽT¦Û«¥RÃöPÜîG7TÂ@’ã'“Ð +Qgô&:¡EV›8o¾s²•óCeâJùq¦Ûì©D–³Õuq1f×ÁϹHåï1Áy4 Š~XŽl*­åÙ‹#+”(ƒ]ÌÍ<Øè¢N‹þ¼ ÙR›™ù&spB»+3¢5™ð³^FH’þ…Î:¨âg,üo¢Ä&.˜€€Ò߃ñ³g#po` ä|à+Š€žSoÕqoäëmÍá|†Î>nò®ŽÀ.S|=O3Ûh©:a2ìsX)Ý(Ì:åzÚûÛYcVqta†¯µþ:wkìÜc]mq8/¸±ÿ˜¨}¶Dà© üF½Ì‚ï  V-‚•7~½Úd¤9ÇxŠà§< m6y›÷l*·õ7xè´$Ó>u*C²"Ìt׊ðeeE¶B:â7­7Üȉºçß3eØâ‹ž+§e¼¶£,@ ºAr ¯ßtsl/ ðfh»ŸK¾îx]VظäæÔ Ã4ž$RrMãö%ó,3ÝÙ ¦ÊLwxëXÙŠ¹†ÒW¤fä÷>ÎK·×Á€Uq˜3Ó½®2@X[]\4CG {¯Ûšºû†ý¼µñ68óu\oßåÃ25Àˆ§qŽ¥¡tßãnrÏê0— îñX~<Êâ<žŒÖ¢ÒÊdÌÝlDÚ´‹Ø“$¨qƲ g}#3wÉ¿½`ËÜÆ· Lë&Kw‚›Ká«$x«œ§Ö*CÈVGªì&±°ôNR‘·ô ¸|#h}ž†D!åLÒ<<Ç»ÂãÿYÁ.š!ƒÓszvÎÛ§é:BÎ@åb¶•p!ßÚLËû2‚„Ì»”“Laµ’P0ß VÍÌÔASTð##«¿å|àïn2+Õ`cØüýàäÉ0ÓX å`á ¹Èß"Óˆm _²LãÒsÿL£¦L¿ÍÁ÷E!ˆó‹.™ï{&þwVÀòÆ ~Ý©ˆÓºtC0'Pîµç77èÒ Ž’É醾,‚~-5Ø=GÊ^ú¤ônŽ´\aNxjAK²#)èå$>åHXܯtQ¨h….S<º5ÉÓ™ºYEyÛšüáq¤²¨¡|!ÜÜR~~WºÁE©÷º;àué}U𛳶½/Ko{VO&«³ÞX,eü<ïö2pö¤IÙP] ‚¹.!kÒ;Ogçz§ÁÃfÿJš µ®«‚0YzEÿ7ÞûËÁ½ß:ÿ+ÉòÈø;}Nð]²ŠFš8Èÿ.XÂKá{Kêm=À2j’BUrQ0•¤l‚üA’—§9râ ¸Aí`/¢û¼;à[#« üF0;¥ Š^ÆiªÁ£µôÜÝȦ€^§5'¥æª£èY—dFç7¥ù¯ÉÆ`„‘7Œ|ÉAACcMòI—¢?wóÆ4Q€‚"…õ‘Í÷W,xbÑy–X“Q´Øä_œíJT›¦ëIÔ±òaҪͮ= $q’×;(. OzäáØàß–žû@*Ù¤5'çÂPãÖ©q’7Wµð«¿y¸´ž… 99JÐñUøêl8OÒP@câþ<4†/Go%ªr~ÚêÉyßfé-å-ÜðåÊ`v˜GP<À(™“‰‘û6ÇD»D¯êì‘ )ªùÎ÷æ ´¬íÍPY˜^Ï·äC•ª{—»¥·•?áÙ?–™_iás!H@¨Ð¾bv¶Å:)'—»¢T|o“ú†ÙœÍY+'ƒêÚˆ‹©¢†ÐÏô¹ßóúnau†^_Ão.^ÿ-^?uçR"Ë^?D§ûyzâÖäM[é”Àª{}- 1R÷®²U¸ªVú¡fJÝ«Ìå¬XºÛ«7lŵSrí½ºR6°©¶ŒàÊþ·eRµ~ˆÐVc·à?5L_eÂ-Â#M\I/1¸nñÝGžgâ7yA¸mktÖ.ôP\å÷eFȶüHvÞtíÂj>)fŒ~­ ל僪ø*oc7EUêôûMwÚûv‰d&§T¾2”Ÿ1&)RR®‘.d|•§™®ýy癪‡óŠé¢}8¯Èˈ›(P#’-!ÃqAr/ˆ£7RóeÞT˜™k4&=ªb÷ñ-y€ùÄ ©ºûÁ ϶ž lªùðÚÎàÑiÍqšDý„x¶]^nü+Ö"ñ»ÃeÊ­ƒ¨l‹Aä¼¢ á«:|£áØ‚¾Wr‰íBbI‹5ܦv«yGßá2~”Ò’õ»“T« ô]Ñ*nuÑÓ|FÏq 7¼½\ öï¿yØÜˆÒbÙ³ˆÏ$Õ f6î`<w¦àì^×ëk·GìaÝá"G¥˜QÍ¥q³iÉúåHžnéISë#§ÖÚS…à2ÏÆÎ¥Ãwù°2ªÆ—Q¯sçH÷u ÜФ-ë›á°û%Ì*“”,ÌVß Üà$¥ES5IŸ }^š_•æIwÀUú2€èyý„ÒŠ!6€×Þ#úMžKï¤Ñ“ &G¿g%¸e9Vö8û´4ÙëW–þ¬³÷̬v_vë~þdÝ*qw|ÊǼ«sÑe¸å#"Ùše7*³µ´¶cGGÓ¼¿Õ½½¸¢©ž€ás™hzä.ç0¤1¹}5|“b]«½‹CíÙ*%ÍÈ4´UÉm³¸N;HÍ9‹ëb”][E…ýR' 5ä•åŠÌŸ"´¾ #aËÆ75/ò—F›72Ôm÷;-úJ;yW þÇv#ßãG8—/8?¯tõ]5¶¸û2÷3Je×±™O“N€@V5iêËùøðC|ߘ¥Ñ›ç_™ùÕK|¹¹Ê3ƒUwµ'{bçDK?TnCR¦.¡1I4¶7æî~Ã6§v\õõ¼’¶ÐœàÃ+i5Á‡hX‚ôÞ8§)»ôÜÝ/aHGZaÜüþÉJEÖO…;t¡yÉü¬8™_»®çz¯¿¡t¿)þ†EG[ð±|m¸ÆU#ñiä6àË›Wß·ÑûÖMØô=Å NS3îG棅€UY§íç€ù-vÒq—±Ÿ¡‡õ#á¾?˜çÁ -ºÑ˩ʋ¤›^½°Áæ»Ûg¥‰©®ôȨy㉔£OBΟbpü‰S)i›±ÔkäÞД†Dw«§`küÈ?°åo{Y°Ÿî;’k¬î‚'ð¶ßÕö>%úD´ÕÿþǹyMù¬6…­lÈÓŸæ^°©—ž“¥B_:ÈŸQ9§ºz>XêkrÆVÌÚóÑ*0*EŸ–OHÇqû2lÕ˜¬”ir—Âï²æ-í÷?U¥C Ý‹À×g°TÞp±cF³<~È*Þ¤N׃ÝV$:š÷ã\` áY ¤.0§PäË×hÛÇÖG}úçë%ðìK®p‡Ìk88DrŒayt! mi†*›Üø×ÿßendstream endobj 846 0 obj 3901 endobj 850 0 obj <> stream xœíÙr·ñ•Ø·¬\æ@ã|L'Îá¤â°*•Šó@S¥ %Ê¢|èïÓ ` 0»\R¹JöƒÇ hô}ßíÄ$w‚þÍÿ½zuöÙ×nw}w&v×gßÉøÇ]þÏÕ«Ý//p‚”»0«¬Þ]sSY&Ñ\9v8»øäïû¿FŠk©ÃPünjB© &§Ú(í\´Q¸qÙ¿ÑFáž0‘4nƒ r²ˆ'>ü:b[j=ÄðZõµº‡’£ðý ‰©[Îw}+ÏÕ`£mé8(¶ÍqÒ°#¬á'ÍTFFOÑ(õ5&_á’s"¹Y¡Ø`f…ò,PBàÐ?O0¨ˆÓHs-g^žiK”ƒJÀ’=„Êj1)ã{ø’ô/ 7+ñ Ëç»òù¦;ú–>µ’ÉøââìÏg(™f÷#ºÔ¿9CCÈ ;ëQ`ðl¯Î´“vùß›³¿ ½nØôº­õS?{ÝŽ×Æõì>ºÊÊ»¶ÿ0IU3ù»äñ ãVœÃZ„‘¾ä¬Í+ÏqR”ÅQï\VÞCt{a£=J97ÇÝ#d 4 ûÏËçŸBì/º¾\>J!Pa…Ø$¾–He$ª¯WFºÊ-Ÿ])ÓYpoPZž¦g6¥Bï¸þG4›A mó;«51™Í¾æ‘Ìf@·)®“÷³‰Ì¨™WWi)B¢Õ¶’’¾ÛZ-!ßõLLdÚoÄy‘¨ Úµ¢×.¹¦Úæ½ËL,]Î €Ô9þÏÒ×SHß¼eâ—~'­Ã¸]^!"Õ»ÑèV…|QævâS²hÉ.94ŒÎ5!z“;èÆ^ÇV1F\ú2:±É²?lR oUØ0‘´42̉O–ÅÙÃfjŠî ÅçHìÆþòxû³¯Uà\ŽºpÂuäýJ1ªDˆ;ÄqŒBݦʰ84c*!Ÿ×Š„Â•"I£Ý _VQJT$Ò£´£l…! "‘}–‘"$²áiMd'ôÈ«гýu}[>Ÿõ>»Ôp©A†‰ô"jÆŒ'įõVš¨×‰;¼Îrž‡o 5Þ°á(T: Le£Ÿ©”ÇÐ#“2 “uF(~(§¼-çyYF1Ú7ŠX^?"eQÍ Vs;ô_I ‰àÐ\FN0pZ‘®HÛ’ëU±jGÏOÄî¿Ù—áÊçmYí%·Héw¨à>AêÊ&ÜN]–Ïwe6ú¦™°‚ò›'Ûlç©ê <*ÔÞd%ð«ÈI(«LçD¯AÉ™'ig!„h7ðÛú9ƒ˜yócÔ\•"„jcßÌÕÈ´j`•ƒtÄ›$!.óæE4HÁubÊãv¹sSKK! -ì´GKç¢6 @iÍeämD)¬´Â¤<¬Žâç½Õ‘lÕu@ŠÏb–ií§D÷ed™šò—ÆÈT¡'Ì-à Èi Ä3ãšR\\"»‡- Bô—ª¨iPÔi2i{sL˜³Í(1Õ"KߤùqâpÉÄ£Ò}Ÿ6×¶ránKÄc©´2.'T•fx½vâXiÇíbôí–+Ä1-šk.=n{ ×Ó¾N·ñèe‰_³4¯‰­3”b3º2(bwBIÛ/:­5å kÛ¦\®îÑ-9!Çh’I4 aÜM±*¨©öäÂ’\Œ&SJ#í—¥¤T²›¨É]P.f¨Ôß…c¡‰æª¡n$º³Ã\Jü;ž°î³¢’ ËÑ Ӄ٪ÈòúŽkK¹K †â©D#>H Î co¹‡0–ÚK¤£X`ÿ +-¤1U!bôÓOëüùÔý#Õ8[¹W„¼=àPå<Ð*j–RóAÔˆ&gÈ¢:%ÕoÒlÊœ 3vøweUÃe@Ÿ«3cÇ'ýç~”#Z*ïšÂM­´ÓF´±¡î_\ùžqò ÚÅ6lš v?u@J?¬»@Rßž„°¶´ ¤hïk/šI©Ï QxØÁY#AnëK°Õ‡AqµD­£tp.?̈rŽº¦âŒÔcÖçˆ*ü†Þo‹PÄa=#0‚ô>€#‰ø™<:}ä`¥Òî9©°ŒœàHZt ®‰ÇÞt$Y^ˆÁù}ÏËï¶PZd‡ÐaUŽæþ¢4‰ú~¢‘t|†Y  ¿ÓÀ,®€*Kß³_5‘«ÚŒ1‹Ñ·çè_Ø ,cˆ;yé‡z‚õ wTB _/•”u%˜• ×ñ6Ó,ôÎUJª@™ÆRv´'‰óÊ£›Kóè] ¼•\z¿)Uë"µ§ÊÊ03lråßïšJUê°õÜ2ŽÊúól°Ç{ ßÄzqwWY‚øùU—ÓØ„?v„ChÒà;­D ª ‡p@-XóÈ Â!JU\ar>§öD_tAfp~]>ÿÖ8ÈZaPúˆ$€»J%Á¾Ò“¿ßUµrõú»rA䉹‘·õ,—÷ê’&ÐëÄt¾mQŽeHx†Í®¯°Ð*IûÈð?[hÜÏ`fX´—ÛCÿܲfäsC Ý)Ԯߺe¥îѯàùŠJƒ £üOãÎ*ꮇör…BŽÿN®Ö±å½‹^xôÑx(³Œœâ2’ñˆkRâôÑ\èšÙcD†lû½B/Ô _t!bÅ‹Ï{gêFªŠ.^-‘ê†_J›[‚z ðZÓå¨ö¶^£Î•ó¨6æ|D¿Äz3 ·SÚË”\@%E7–—‘SüÔ)†Öt3ÞËw\›5òŠd†.(=~;]ân”ê¼çu×»”«§vå­. ÚS[ ù½C®?cñD@âr¯h9ôc«û7£|9?AΚÈxFM·”iJI§ z;PT$ s±ñRþŽ’Ab1¡iy „ ¥ê4pCÆ”»]wý´Žü(ʰ~Õѹ|kVÍ·`0¼ ÿ†‚‡Aç§¾=Ó¼g¹IWÊ­,7 í›-7þ3[î8œfHjnO–Û £Ëå6­Øtö5ùm{ISœƒá•M&4q«˜ŒÄõ¸Àqž¯þ4]@m~<òȨÓ$ëÑ D«®“Œ\Ž‘Xä jmôælÍ k%±ú fz,jmS6!êYÉß~d¾xñy%U ©êͦºú{²…lY…šÀõæõžt=ÝÕ/‚,P ’œÏÓ6¦½XÞÛU)f|¯ùë¨s–Ü›á«M–àÚL©ÎP=še‹-ðê±r8Ð%¦â•ÖÅ<Ÿ«.71I0¸¶_dnÊ/½ä\À¡v@w“nñ³Ü|çȱs„ŸM]9$•- *aè¼f²Êá7wð‡^ÔïÕdååäê²>Ö¥ñïtG}³€¹ ­Ö–_æÕ\ìš·AÐ~ôúÉëÚïU³íUï…Ýz°¤6«iG×™aUB"å¦J‹ˆ‡¹Píé¡£…ßê2þ #Èàxйï™kG‰€à:Ö¿½øÖ²R]jÊ Õz¶zvFY?ù¦¾ÕvJÑ-4íUj4ÝXÓ)ÌÍÈÐŒ`‡NêÓv{t 9V}ßud~ë*;—l/ZÍû÷à¡0Ô~h'‰H¡––§Ê…K8·± Ê wé°2´i”®•>šMàŠ&nYS†÷+UmÃñ`&pö>`$e÷DS‰ „Ÿ—Ï?•Ï‹î„/«,dz˜!¿Æ é¶¢Ðók óÿžþƒôô$EaŸ–uÕ>ÌâÖø¹jŽ£¿,Ÿ,]É®ì°ײ[ã¬ÄóÚ…ãÁƨѽyÿÅÚ09Ô#Ú^Z>¸Ÿ_ È¬õ­-ÅØÐÑÏ\ÓË>hÑhµ›Fõo6¯±G˜Œû¸z-}1¼IG1vûZo­«”ÔúLC]5Ñ:k…6yFüÌ©XB·9[Ö¯†h2‡ÊpAæ·ZÛ„306—M$Ý<9Bïo(+úºMÌ(ãeå}=ñŸ·9´=ÃÎêª~|c U:I€GakbçÛ||´CÇ]ʼn³Wï½$äWïöðå6õ _z£î«O¶:Ý·ý¬M±e̯!76ÞØfÐ^*"¾­Xx~«ym`u™ÅÐólîCX%º´´“Öû”×Öb<'—‘üéJyZa²s ü“Š$Ÿ ih}#Ÿ_#óS×ôl¿5„–[iÛÞ<;Ü·ãª{Œ$rñ¥Ícȇzµ¬nkÌ’Ò~3EuÚC‚ƒ[«‡iwJq Ò7óSÖ²·û;̧òêèÆöøä§=>·HMá¶îUùnóÊ)kbÃ|ÇÍ®rTÓû U¼2¿j%7cÓX˜h.lú@æ¿CyÛ&µb³h?Ò;mìÜMI)<–ªyä×ùQ§`ªkL³±EØ-À*neSÚD8’cjhÔÃè•^ ú¸=t{ò´Ü7Ðý'm*dÐI¥pãa …xœ­‰h:Wâ¹?Zš17„–) ‚Ïî--"ìøAÕTÅÐ~õ„h:Ø‘~E„ØֱX$€^A›+PÜ?Ï9I%³ºLÀ]IîHqÙõ;6‡‹ûº£WÉZTyú%–4*‡–çg莾ãÒ#ì³oZ|Óº`íÿäMë~r‘æ|Óúã›Öß´>ø¦uïöØÇ7­Ëìÿ†7­©×M¡ù§È˜ŽH/öî˜)Ÿ¡*'Ä8þÏgÿ²ÚÂendstream endobj 851 0 obj 4957 endobj 855 0 obj <> stream xœå\Ks·¾³ò#¶rÉ2eŽñ~çáø`—mVåå`‰¥Š(ÉeÙþõù˜40˜!¹ZZJ¥|ÔÆ6ýîF~܉Aîý7þùäúäóïüîêí‰Ø]üx"ÓÿÜ<¹Þýù¤ÜÅ!:åÌîüéIþ¥ÜIí+ôÎ+=¯wç×'ÿÚÿóôLÂH÷ÏNÏÄ`½ AíŸÓZkë•ß¿`ëËÓ3Õ tÜ_ŸŠA`¯ŠÀb0Nxá*ø+¬ÖØß¤ƒœñ~ÿKF¢­Á†3åkÛ?a8øú]&K-÷¯‰?Ü7i»QèŠrvüK:SÊ»jÇ[ËÁùP_ž‚*0ÅT¨ù-ÇëØ˜PÏ2¢F¶ Üœ…¿L”HŽärq{”µÒî Æ‡K¶û"_Ç8Û\'ƒ=q KÚ¯÷?Z3X­ §šÂ1°ÙÙ/Nÿ}þÕ‰²qpÑBÉÎ/ R—ù‚:¨šiP‰§IæF/¸lU ¿8Î ÂÿùwºRh#e½œÎ{ŽC¤†VK\t^Þ”åë.ô -’ZÓ=?ùöÄ ÂîÞôþ~b\s"‹¼Ý]Ÿ/Ýü×'߯ZŸÞ¶>‰+Ÿ­/“ŒõùžµáÚA©ç{~93HU+94TÊýB³6¢’Â;&<®ÚܰÆ= ´ wš«@Âí O–A{’ò 7Z?ÝàûtÝèpÈeùÍ,ˆýyw×ór–ˆŠƒVÄM?hHGYðÕë pùÜ–ªåóBÄEYþ\iÎÂÝì³jºóÓ$#œ 1 }¨½×³Ú°3ï1·ó8h(/m…Ñ„b0yã#ˆ ·­„­ZPÜæàu gÁ-oÍÖ9iK«ªe·ŽeryÖ’$µr‰?°-Ä Gg…µ¨ÜQ&çT“cÌÑŒSË•÷1ÛÃáœôZÙS„5šÌäS~ÉÄêXËíÕÈÃh«$Œ©rvéÁe½ö¾ºØèûÔ}äƒ ÎÌÒq²'@–ù¤SØ–dõÙ2ŒÏ—ØÐíü@^­CYÚòšE¨Q1êuûÑð º ›·{Áõ&ÓÔœÈH?%2"†’ÈH™ï‚³µjÜòd0½ )rãö4£;¸,7( šÑM€‚fDÊ”€—4¡Š†et•":ã*駬µÈ2ë}/À$•]É‹’gYÖÚøÖÐnøî¡æàv3ª°¤€]Àaé6³½ž;zô†_þt~ÿX• €s·)•UЊ²—ã»,ñ,G%°è}•¸au¢aZß­¨ÒÚ ¼ :°Í²¶ôC;87$¡†ÂÜRPŽnš6{¹({fÙܤ–.s­¶LŽyv}§ YËUäZO8Ü);DäöY‰wV“$>ZϦ Xôw˜¼R&AÏk7B¥ÆÂdèyw×U…’܈ ðçnÑ üˆ Hô}œ!TG¶'ÒU=ö&^ŠÞŠ® ”¹ÆçeùkY^–嫲|Ú¸¢FH^@H­à,i1²lwÁI›œ=)M0£ùàWEH¯8Ùš‰0µ1…7­º'=Ò¢B“P’—ºéî/Ë} ¢šå‘Ž(åháÛÃΆH¤ÉËÇr€”#â¢M8‹-·I9Ç·ƒ¥ ®ÀÇÀ•=ÚðOÍæ|CÌbÖ£Ó*ˆž!J #TÃ!˜09ÓùOZJô¦»áY>íŠõ]^(;ínÜÈLÜp¨–tÅ †âeÙ|ÓÅvÕ…’UfoFÒº‚Êx/GEE4lX»ô”£ú#1‘š•Äé¿$³Š¨ib"y•°’[RŽ`ZÄSlÅÚ… +ÃãÆ™¼»DàбÚÃly4qX°ZÉ\¢ôÙP5¬¦”æ×eª—ÖŸá§H/’mDé Ç)ý4:TµÊZíÃÄ ·MC¨©s^J¿n9ãQý!´WZ:°_”å7eyÞÝðe¥¹[k…`* s•• ÓÀ€3d­Ó_Þ•åõ¼ìú„PÔCi ¥0‚ÊQÛää+.£­… \­^HùŽy.ÕÃwÏs{é>R¿Ð4iU"uwÞÕ ß­18…|ÿ JâÁĵî,T]7ý¼,¸©µ×Oío2…RwÛs׎i+ˆ£·J锨Ú~‘'Ô¦k¨_DT9 9÷ÙS¡,¥•Ók—Ó [öÉø´’™bÊD¢¤»½¢-(ºtjiØ ìf;):*»X#w/꾞ào©:òUÝÆVŠ¿g™­Zø˜»I1"À·}Vþ€±pØp«>*_ÚÁC5+íÕ«EDiß"¯J Ûq¨É¡FG:”Pr,î“Ñ×]¿¾ÌEg󎓊i©ÖÔ®QA1=r¢ÞæZªe«ì rÛt°Å#ãzôh&  ´ÜÏmL–/¶‰ó"]$Îi9ô =…Ñ=üû±_ VÝ(çW Î÷‹–„ÑïWû4þt>£¼½Oàøcõ ìGígÕ ëLÃûÀ0érˆ~S(ú¡©g2ô¢Ñ®E^ú]7}Ë+Vmo.¼{bø”º?Ž06<ç|šë³ã©¾Îïý†AR»Ï>ÌúÎþ&$œð{†«A"£Uƒ,Ä#«An/Àu¢ &Á ¶VËþcò‚ж¿àPRªœû V=@aÁ¤¶ëpÑUƤ7 “ò­ÞvYw3vŒª™t¯êßÅÿ•êßl§òÛÕ?P9¯ÃCøá€è'wš’wHÕ¿ÔƒR3äòeHÆ@ÇÝî‡ÛÖÚñýp-‡LÃÌÌè+r¬Q¦™ì#²é…mMkr§Í¸U:æFÑ‹ÌiVËJ&€~3§ùLyvì\yí7M’©¶Ñ[.Õ´q-r±à¸ïÖ ÚkÞ7ÛqJ˱³æbìŽôiND>ÒGÄiðñOGó¥(É‚Šîµìø·€Ë)'úGló^±¦€?fL`býJÃô?+£6yŽÚ!á=Ö2èGßÈ»ûøW áö!úD:¢JÕˆ™ˆÞ‚B«2JÓ‡ 䀯(ºø.5·„üôúDZ\ž5ïÖ"™ÙmO¦qï`Ö ãžH]œïÿ kãR—£Þ™Î|'½`ÝãM5udoÆYJ£¶¢[Âí*¸IjHú˜­Ô¸£7¥ÐܦÍM£K!§±³H¯•ãuØ7|®,EeõÉ"¿=ù/´•Á‡endstream endobj 856 0 obj 3648 endobj 860 0 obj <> stream xœÕËr·ñÎÊGlù´T‰c4Þ8&¶;9e‰UIU”ƒLJ”l’¢$Z2ÿ>ÝÀÌ v—äRvìƒ 4úý¾_‰V‚þÿ<¹8øú™[}<«³ƒ÷ÿq5þqr±úË1.X…!XiõêøõAúV ì`„Z9©áÔêøâà?ëãC1H¡Tpë7‡Gb0Îx/×oi¬”qÒ­?)!°þpxƒ°Ú¹õ;üP+åtXÿÊ>¼¦±6d(6¹dk^¥ •³õ4~j…¶Ÿ²5‹ ap8dŒ»(­`}žõàüú&d„™àA(ü2n‚¸Xÿ„C?o<I³ÚCq¡4vN+çk¨dð :”nÐZî²ÇˆNBº˜<Òás&É[v™s†M~ɖϤw½ËsP>=)`ý2ã•ÉïÖ\þ÷øïÒ<È ›Ÿ"SÍ.N~è4­fB‚2z$)²N ÂÐb¯”šŽŽrTòÍ/Ùz~/¾ž è£ ê#ƒÑð/|ïLôVbƮߧi)qÿ%Ztp¦À'Ð5±ŠAÄÜÐvrpFqF~q­¯Úøf,ïÏ¥7ŸÎ±²¸Öî!ø¬Ò=†8ËÓïšð•÷Ž0)¢2çƒ üRàyR$ÙÆ#¢¤#7Iƒ—žŸÙ#ýU’skK5sÂÆ¸¹”¨6!,ä…¦µm1󤸈jÈ{(FQ4}0IC›z;lÅOKÚ(‰ŠòœK”CYï3Gr4s”å‚ö2/à‚sÊ(Ãö`DJr“®ÅƘQlz:nƒ&Ÿ×‡GÆ£ª‚õš•T©ïz›?F5`Ðнù’‘ò®„„[ŒÓ%Ê›ÊÔùA ¾úܶ˜¯JVêi½†î'œ~ýL–6[ËEub¡çx¦Û Ë¢/” DfÜ.8üOã‘ótZ GQS>X5žRzŠÆ¦Søu^NÊ‚¬¿§ Me,›¾$<ÄS(d‹).ñW 7=SWñÁ⃩ H,¹˜$ÌãrÜýMZ-DÅïÑX[5íæm%0t§Â62*Êx$–‚Q ´KØ|ñ¡­Á™Þ¬ Ò×ÏTA)p™ ¾!º*¯[ÿ3ƒÅŸæÙ§Í?̳tÆ“ãƒ4*ÙÕgt!ÿvAXÔ\+ëäê'”G œ&ΞwÝLÕv3ƒB­74¸äf>Ë ý¹-¿ÍÃÅåh8Ã.¥Aø|XJî0n@bPü× Ä÷yøoj ¨+Ÿ´`ÏPC\Æ D6Ð׸;”xmŸ6ÈP>Ï@<©† Ê´Zþ1°V„‰Ášf¼Å˜ƒ•¸vþ¦"c‚⸹à»%Ú”´€Î}F›’ÈMpââ¨9+â~ÛDÛq“¸ÏZÜÈyâ‡j6íð¼ÚwñÙ7)ãi ?axT–¼ÊÐHg¢Yb*ìÍÚÁb­;[ÁÕäcÒê¨ÖA[/ý®Y«6íì]Œ¾µB]h+'a“¥‘©Léµ1­ÉÍÆ´ÚúÂKî9 ÜEç¶ž±ûQ¼¬6F>Ú2X8 …eC°Ð¾K¯46ÕC (¢Þ1â“Z¡O°ˆY5ž„V°ã¥>ĵ]G¸"á#øEð1ž¢}]»F½óbTJ6øJs$A”€Ãpˆ“©ˆ÷ŽÈ{5¥³ÐßR¨‰Š@Í’Á)ÇÝWf£gP5}@îù.¸:y ¢ ¹¼m®n<“Á2ÊC»”‡%áyx?q„ñºœ "„5å¨FŸZky6ç~qSnFÀ?EÔ)(‘ίvsˆŽ“‘ˆÑ!ÏŽÞpàÚùhÀíÑÃ’•݈<8‡”ñ{ŒDÌË<-Ú+Ü<Ý2nIJJ—¶-:.µmK³ÇÍß-.ð$¿hÛ”Öxrµ¼ÓÓ;¹Åe^·9Î;%Š\*8$WvææÈqöº¹àMž}‡ öг "vÚѰÈ@;IF‹ðgQ¬o%Ÿšä8ïñ‹GCîeåTô¸f>owàÍ­˜ý–ÀÏY÷ÍÌ~'°oÃÖ[Á®ØzaÑ»F¯LGƒè¤‰ ßFzFH¥¤˜œÇdÕ’¥D!:c8¶ÞCa¹¡Œž80*k˜]Í-ZÓfX ”ßvd4É”£éîÔÇ`%èvr Ïá'Àða…>=‚Ñ®J9X7ÏÜÅ®RDB;èÁCØî'1åq ? jG}  A,¬\–NcÈÒ«ÛðГ@R³ØaYVX”K*_¡õÄõ›r¥1p´zòã}Y\)K—s¼°¬7-¢g @ u 7½ô/ q«H‡®£œÜ°Óm”o•Õ ‘“XR1Š\/À”…SBØÅˆNBê)áŒîÔ¯l;žÏcX%\̶ôhU­Õ‹à¯&…pˆdåÁYUiÕÃ&ZOûµJmŒÐª[ŠÊ†û—"(ê2sª»Q>,Å«c‹rV]a»¡«#ÊB¿rW²qu@2”õ «ÞA/—[vd‡¡/çP˜Ru*DXíUY6T¦@Œî’ Àà-â¢âw ª(­¤K€ìª•³,N‹bƒ› æÌZ\Ë‹KH'%ѲEGAÊXU‰Ì£ÝÅ:&¾jú¢6ëzˆ";²ïã:Q‚kјy˜W?jÂÁd®È-B‹&˜+(1ííùÍfö?`Àí¦=ö@4k””ÈVÀP«‚" ´¿²ÿ>ÒWèÿ¡g¡wí§òy{t |ô +·²ì²`’WJwÛÔÝ$`ñ áì©—Ú”¡O*¹| +}¡³ÎÇÔ¤3Å’„™ØVó!­0Päæ¹M¿*÷k6ápò— É K?fÒ°”˜ ˆß=vláí¼ªÕ1’b¢k^Ò}RU¡ÝŠsšö¹ÝÊ„’ϲ—Ò㸪!ս̒‚5PK®ì‘¡n_J=6~:p½€ªfQ|áWL~ÔQ2  ‡éRHÈmkø¡¯Ì$Þ¸Öî¸a³7yï±³&]ªÌiµ›X·YƒDÙ6sØÕ‚êu°”"}`£®LìþÜÁŒú‘t¼²‰u„/|‘„ ë*¸¨SÜAš¹À•ZÏÇ»t½LÀ/s»HËŠ<1ä/“ý +€!DmW”.ÐÓò^Mµ úÈ}žÆ–|m>}¨0–—>rºr¤˜ÇoÙ‡lï˜ ‘eĺe‹ÏߤC°ÍTÇTœHÙ¥s²ÎqàyJL !…`Dªo$¨‰'­æ©éÑ ¯ˆÒ´íî}R¥i°=„‹²b£‡0U†eÈ'{‹À¤Çà Cén8¥Ò GsQšÝëëû˜Ú„.>Ç WþîùS{ U˜Òñ:ýÌ× kìÆ›ÚOqsTÖÅ}:ñj\"t’Ì¡¡l“)={_qE8¹‡„…`ëæøé˦DPNÃ@_$‰F‘B"6ô‰@Œ¢ìë–Ò½½6(2_Þ`hë.úïí–¿9†RØÑ‘Wìæºz$똳wÒd®Ô…㟽fi4³ýÄÍ~zH)Ë™#ßr–ž&žÓM$0áâ¢Û»à9†)& x ëï“í:úDiŒÚúžr¯]—> U2)sÎ†ä ­ÐÕîUròŽjå¥iÞZÒI[òð¬£ogñOÑ™£h£~±AЄ ½¨ò³h58Ýݰç¶RJKâ¿E^ŠÎwªêÀÂi= ÝZ$îDê›élÒÑá¼£h‹‡©÷K:Hn¸èŒ¹2Xþ­còzölS ¶÷¦g:x0–¬½±6õ†JrßU§}ƒ“;>ȈŸß9‰ÌšacƹJ0éAˆÜâÅÒ_¬ ½Eåd|4Oòð]NA]7¼ÉË<|•‡ì³·­Óš¦LzK-oU3x/Ñp§rãá”òÈîTL8a,k(ÝHhäð¦FG”þÁV̲Z”(hä§…n¹Oµ×ÙÈjÌ•±Xù¹E G7†•tSšÿÎ÷Ĥ}‡¦åtè”Ú ^NÃñ—Á…m~Ž"5Ë{?>v"t©þ^§i­›oðjüîMmŒ‡H«Ãn)ÃEn¿¢Õ¬]øö8Çdz·N»@·aaìÒ#ÕòDìõøìÓšL)G¸xÆ+¶–À&¯¥¬—Q¸f|§*ܤ²˜Êeð‡{É9¤æ|ÏŒ,wC¹ÀÕu©…ž[*KÊõ\OÒÎÂGÚí–‹¤'ÃUu;2à.~§1ýŠ‰Ø¸—®|ëô¡ñ¶ûðË&w;ËG“€wÊ ‹ÜP”ÄÜð ŸeW÷0Y¼;”ñåë+„¾ê,“0ÊÒ›4]pÌ2Mûs6„;W{kU*T(òIvQe«zh7gÌF÷`6˜ŒÅéf§bÞ]4ñ€1·Ð|ôÄ]ÁNšÏ WšÏ’U?ÉäùÐp†f‚5Ÿb®R»/eBånþx¶.1( ¨†a÷wàñ]+†^[üúm •ºàwp0=ÁêèŽe ¯·S AM:BöÂÀËt²‡úçXb_’/üŒ^ÇÌ.iÕá¢5@áÒ+ÏvJ)5„ùî’-M—'ñ¢Ò¬!ÏŠÜxÖwŒ …JÖÞ|lK¥˜ò LÝjP*@uÃ5— %Ó/Ÿßòõ2´Wäéí¯—Ù/ÂÔ?t‘f¿ÏÃü‹ù)Ž Ô§º¢Ž›÷§'Ë(xfž¸Ë‹eÒŠ´Aü}£øçIâ4CyÖÞæOÆ4‘ަÏZ é™2½þýŸ)C߆±§GïšÚè4?½/ ÇgÊ`©ëͰgÊÓÌÝŸ)Cü‘íT\äz *¦'¬ª|›\Ç•i ö0°|Î:m±ÇŸ¢ˆoÞ”ÀpSº{àMQ55íñÆpñ+7]ã“m•ù"/ˆ%Vv|äËÐV>Áðƒçáâç&ÊT…üV©ø Ä:=Æ5,F¶y˜ggÿxð?—S¶iendstream endobj 861 0 obj 4794 endobj 865 0 obj <> stream xœí[Ks·¾ï!¿a+§¥K ãýÈ1‘*qªâ”í­ò!ò%Ê.®HG’eýût3ƒCrwHš)Ž}a€î¯ß½À¯kÎÄšãÿÝŸ¯÷«¯¿wëó+¾>_ýºñ×ݯ÷ë¿î`ëÀ‚•V¯woWéK±Z2íýÚIͤ‘ëÝ~õŸÍþ¶V^·y‡Áz¹ù˜gÎßvÿ\½Ø­¾[iÆÍú3ó÷•°A2«p{ÍŒYïWOâz˜¹Xýp(ÉHN;d’ßdŠÎ2Éç5#qø>/8;Ùi€B·y¹ÉÓ?ça\¬¥Pª ξ©Ï¨gÿ›‡_ ; B_o<åÊ+fÆvgÀFÉU)§~*!@AFŒ!=3ÞøNBiÐÁ¸5!ç“=È Tn$IŽ^¶æ,Ñk+uµR=­T¼4&©¯s„/覤œ¥]ð8¶éX3Nºb›n¬•+9:"%'˜>#ðO GIìð üÂyâÈ†ÎØ” gœQô½+ÏA¢¬QǺ»Ñ`Oóì9ðÝItÓP;h]»é+‚éiæ”ÂØ$ƒfŒ€Z0©mõ!Ø>PÌv4jç(@§' {ZÂä—D¨¥G·\…ƒzÐñ¡: ]oºý~«ÓBüêDë&\—¯K7™• 7]‚`Ê)ߟñ ‘å¢ÊŒª5eæ<‰G°¡e½¢\…. ŽÚmçw¢ö‰tA 'u!OT5-„èž9ôçJxØ&á1/h0Ø"8øO§"M§BhXP>Xš¤¬?ä²i>gÄf6K:\•t¶¶éW*†Ä9lÃå„R)l3¬Ñ`¥ƒÄ¦²WJ×y†þˉÇU 'v²µNÁ6î¸PŒ}ðö©.˜Õ‰ö¨¹sS¢Ý’‹Æ #ˆ† GQ@}†5è3´¤å(à4¢;IâIÿnb-Ö6ž*ü k"´¶‘×C¿lú nQ]{fH¹›¾Ë0ЫyÞKÂ2{–ãrÚ¦½ašTºÅR®(Ì)¹Ô÷Â亇9Z[Z ãæ·éP®¡×B0ÃÕuñ¥Ì%û‚Â¥‚¢ãÓ(Ùó§ÉŠÄg¼É¦FWéCËxN{ãÁ¤ËB¼…5\”604\€"` êÓÍ«ÜKºl{Îw¸³`Òë*7‡Rþ"T]q"2ˆk’[\¡¹k…ž.U¾ì÷³²`€~y5 ”u´>8&h+™l¸ š`ÖùÕ„ Þ„Vø´Ì¤ëIÂ[„Iôùr~«? %Å®zTý™Ñ* >U@¿®«Õãzr A™Êäz«Ñ’‰\Ý*TðÁ( uÈ­ÒÀ©>%mx¼“¸¾Yt!]~]4»cà«›Ý)2~“gÍniØ`Ö:xÃÀMîaÆÆ&w?sx³ #væ½îº±užÉ<ª×=jlQ¯;úQ•y¨)ͧT> 3p £“3€S˜ô¤à—†3€Ó`gw.y˜¡†N*‘oñ¾ß4µ°p˜›&ìÀBÚ¡BîЌó<|“‡?æá·™çñ>¡…J±Gå°/:E…=ãªÄë:¿hðROÑø¦èL8CçKù›3ˆ[vRwƒÞ¯MõŒS?·PU¥ÛÛrcXr‹Šä5Ö‡Æh+JçÍ­:{±Ì…èܱ=l8©ï;3-ñ¾»ž<ùÆÛëà:¶Èbq|3|ÜèŽKHw°k+Xü™üš_µ ÅþŠ’v¢«€UxV°µ‚”KœÆk6bÈqãw8 Ét±ÅŸˆµRçAU–®ïñ@<{TE‚”+ÜÀ¸Ù§&¸Ú67£vee Ã.Ué3º €7{ ÈëÐßÏòxHº67ènÈ<-nZÑü5Öå87÷^€   5D&¯—žÌ Ç\ €ì>nð)¢ê_DÎò,¹\zMÀ¯`‡dò:L·Á5úà{Ÿ³nt|IŠŽ)ï{2M.tÐûÝÕÐ_Üÿ WJ&r×Àñ·eÒ•¨ø­É1ùe(^œåz¶ ƒ‰Y› Â1ˆu CÌ/ çêgŽ"äÆÄ=!~ê¥x}ÚÖ]¶Å"òSïeÞ¢}ícÞ"°ù[þ;ï°k.øG#ÛåÊ1o nPŽá ܰ  i‡·ñ]ÇÄ“T›¯:]àcTÈo‡‰½•tóª€m|ÍH/ª+¸ å÷>: #)øÝÌ ðøPÿ‡Þýh#G¿·=éXð±ÁRét33¤ƒ‡ðp¦qG—±‡÷¥Ì†ÛØGf2CE–&fH JìÎüÎlÎÝð´6\_Û>zƒÓBW×ÍÌŸLõ`⻣‹èˆïîä ãã*µVÒ¨A°uèð÷`=ÌÑ:tüDÜagï¾å ^šÿ¨˜†·º¾® ¬Ñ¡JîæxµÛR˜»™0 üÝêþÕ½‡ùn.½oa%ã«vÇŒê~M›ùް<(ƒ‡t^“ǃýÌñafÑ÷ÃkžÛÕwËãÁ'õ&ä®>À–ǃçñà“y±º<¼kD—ǃËãÁ9…|t…ÕÿÌû™ãÂÿɃ~&ˆ³ËãÁåñàòxpy<¸<\.—ǃËãÁGöx°¯—ǃËãÁ»²Ðåñ`ûñàÐÖ[.—ǃç÷õx–{ËãÁÃ*Õ$Å[ N,­›‡rݨïVÿŸüðwendstream endobj 866 0 obj 2900 endobj 870 0 obj <> stream xœí[Is·¾Ï!¿a*§¡Kc_rLärœ”Øb•Q)Ñt‰‹EJŠþ}¾‡^ðÝ=ž…¤e‹Òà#ð|oEãá—¥j)éûóäbñåayv³Ë³Å/ •ÿ¸lœ\,ÿzŒJ-“H^{»<~½hFª¥2^8i–A!ƒY_,þ³z~´VBZeÓê§£µ.¸õêœÚƸ Ãê k¿¢¶uÉÆÿÿ3éÁLý´¢ùŽOÁûÙ~Wѳ:AS%m|Z]‹œÑvu[ȬG^ˆIZ¦f’áv¬!ÄÔMÂWý#xXãõêæhm½^u4°A¾‘j‡à£Ž´"lI˜°zy´ÖQ¸èˆØ»m6-“44õJèhW—lf°Ð¿(³:eäWÍ:tR|í@c¢ÞÔÃÊ[/ƒô“Ü嬌ìø5[ì7ÀG^³‘lηYÎޥĩ|g\äWƒÅZ¯…†€Ê$ŒÅx>¥1Ɉé9|'ƒÜnéQ…Ø®ì¥ôo·æ0o·ekÐÿ –•¬°1ñYß g"IIgÛíä¯Ëœ¤\ë `Yk¥…CçF£*qsaéEv¶ C™Ëd³ÕX-”Ô>K,Tr‘By'¢µ«c´¼06Þ`3¯)31 ñ±cËÕ…¯þßK¶Ö¿ánÜ5­+–5ÃvMBçÕW¥yLM«4à›B}Ö7‰ïWÇ‹ïBZ~€Gûz¡=ÖÜ2(„Y^€à­0¾#¼Y<›õzfÒëùb œ×c«<-ͳ²àW…ú]i>¬}„¸‚ 1=(OŠ=M!µÁ¾ïBc$PŒ76íÀ&Ò7†ÅUá¸ÁŒí€˜÷“nN¡©’é}DLTE•AðL«<æ ûƒ "5 j0iæÌÜ<-ÍW¥ù¼4¿+Ûx:Xû×$¼×} ûoî2³fî3;G£Áß…Æ?:·…tFxø^î©™@/Д誥æþqÆ):È$”‚ßl2‰˜¼™L%€P¡Wæ½Yär"^fฦrÇÿ„ ‰Xc\}G-Ia6Ñ:9¢ÂYE=Ê]7=wÊV>Í uGï ÂÙ·‚ûÚÎâm¼:¼ñ¯Ã;“÷Æût´>µsmŒ¶F†A²ÂÁµö–vo‘µy.6&ÌS–‹pØÚ.×Í㈈¤zÀâOÌZ¹óà*Ëû_æ…¨ß*ôW@~‹2pÌ•îÜ%¹Ñ#ö•ÎS|ÉÈWE׌œ¥o”"6Ú׊¦¥;©ÌL:›‚¯qBÖ1¤fï'7^¨°1 Ê,Îärúæ%eŽÄ™bÎß:ÊòL40óÞé_è(›(6 ©Áó¼XòI•6Ü. õ¦4o[Æ3,V+ÍÇ“þ>‘ÿ!YaÂË*Jãö‡ÀÒOA˜—ñ®4/:XÌê‹V-䕦yY¶7DEiIþÃöd°Ó53ÈëŒlÇiòBå}€çcòù×ýawÙÇ÷ûÿ õÇIãøyK¹t±ûÓ‘KˆÍÜ(:ÊÒ °*ûpFQ‹¤iþ<élØK‡'ƒãÒPfýןOGfÞ+ÄD.³–r€ÌoSò&³÷…ú¡4Ùw–Ûß­§s†¾+qé´”¤ƒ#Ÿµê·3ƒ)úa¯ õMå›g½Em4®OP|VI_K9@|Èðc|8ãb}¯y‡~Øùv|·ßÝɼ½0zé4Ò\œŠ.:Ê€ROÙãKo¤ƒ_æ€Cßý›‘5޾æqðYöü¶ »˜urÆ¡²ü&¹po0+— ›æ–rÌÊѪƒ™isx3ìmåÚ拣¾G†œ¾íBÅyä­b7ýÙ‰¶˜RCe§¾›1ÌÊ'ãÌÒ¦h…õt| ج´=eã[ÐÂ6„¶¶ù²,cú<þar#lØéôñí|R·Î,|Oë{Óüb€ø—?àÊ6c>k·ßAòlRÚÐ^Ey ó¥/ÅôÕË™8syBy𘴯DŸº|•áÕ{ùÍ÷ÚOXïÕ*Í{…"ãúÏø\jerRó60¸Ï1ÊÇÊíÿá;ähñcãaÙ~¬;>ÿΛuJ;'×£-mpkŸz’ï6Í›YD¹þ}>â€Ìõóôpå l/Õ-•HGè°½xšw’þ¦<…1Z:ů2š»1œiSÊ·™hûÕàæƒßŽä›@”3iЇ]¦´w,6™ÉZ ,0!3]® Vìe{_C瑉»íºì©B§f­zô½A‰Î.S‘7tF×'ª§ìsóù„;]‡eêv×aUi£¢¾~²½—^ÇA¯6à·£sÕ U5_JBC®K­ãÄ¥¸ëkåšù§oÖùM.Õ\Ò•“¢’4ƒ0ª¯áÝñÏÕ£UwØÄ‘Ê;x©¿Uælæn„÷„H¥‰M“‰VNÏsº®I¤É 'Ê7xQ •Av€—©Ê—ÎF˵!LÔjf©GaV2ÊJhG7ìmófÖYB&äòˆá@b”™©@”LPƒö®+‡)*>õdµ—ôÀuv²ÃygÊê´ÄRý–e{ÐêKÙÞÁ'‡É2—•Ôò Š8ìÊ¿vLvÈÍ·ÂÈz ·g˓檣ÎñÑm*U"õAt™¨jLUñò¢›wÌÔx)0›iªø)X{ìË’FÅO¹´i\læ%2‚“ÒlËÖ}J“åxk Ë)UIæØÇÑÎmœQU\Ów'„»Œ˜Q‡P3ÞasÉRîòñ(bíF;ª{I2 …@²1ú³Š³Ú†1º¨Ô]&÷3¡Õ†’mìæ—lD>É}|’»õ“³Ç'¹÷ð$·{‡«!}¸0ö·£ìÿWSå‘ò𗸹î)îþÈuoqÈ}^oq œÝcÜýáì^ãNÀùø÷ñ5îãkÜÇ׸õkÜÎÚ_ãN§œwþ7úpàk\Û“ì5®–Ñ ˜rÿ·#ìýWÓ=€JMˆúwY»w|[¨¬`ùëºC}=ʾ—üTbØ? õÃä°úærÓ{Þ$î=oU¦â©¸;_ PØ5Í2TÑW_š¦oöòü~ñ«H»endstream endobj 871 0 obj 3011 endobj 875 0 obj <> stream xœí\Ks·¾ï!¿aK—Ýxóp)JÊN,±|±sHŠ’"R´(Já¿O703è™]î[¤ÊöA`Óô×ïøûT+3Õüóïéåäûçazq3ÑÓ‹Éï“9mþ9½œþå„& ™&•«ÃÝ„ÿœücòÃÉäç‰UÚM¿ÐŸNLrôS^ŠUÎM/‰²©£¼Ÿ¼Xw{)Òƒƒíý»®èe]òGZ0ˆ³O•út0¡ Åc×uø¦røg¥~}ìŽ%è•3föÛ¬’OëðCåvU©7uø‰Y8åÑ ÁÎþZ‡ÿªNF'ü}´U’  E§pˆƒr…C᧺ŒÛ:¼lö8û®Ñ1=/•2¼ªÛëKÅ€Öʶb €fö¤òN=IB˜ÒTÚ’3Ó“3ZÒš¯É Õ{¾1IJžÜBìÆ(ŸÂÁÄþ¿*ö—uxV‡ïVÄņ†‹O ••FÑR6G‡8ðz†Î½«9­Ã»ÊwfÖ?4[òÑþW`ÖP¶À,Òž“?fŸ+_êð¢?=VOçç(Ñi([ (°æáXÔÌî·¨ˆ™7^E ZʘyCièá,ê^3z]‡ïñ¬ð=2øl2 ­„¯¡lŸ*ááLNĨÛ:¼Ü=|T#<4øÐ;{ñ¬¡lz…Ñ} ø®è”áÇQ›¼y´¬V³†²f€*âÁ û0 ™çmйs|Ww˜;„A'¢¹©7†dF9ßQ6€Öj aÿ¦Cz£IJ³óÑdCx31A¤ï·•ïâ\‘TÓX›öŽƒK1)@CKÙâ Âþ«¨†uÜÖoG}1Ÿ”÷‘ÄÈ’¡H¹Ä®Ü“:—o쨢ûv3/Zâ ÊãÔECÇp-Úv” zgñÂAŠ/Y¶×uÃÞY¡Š%_ŒN¸·wößJ]«wöv?ÑË‚½¥Šßw–ñ÷Ï]쉴 ˜º€—_§µ H w¬)Š8ˆ‰5Ž”Åa„P˜ôåì ÅÛãQÞý¤‡ïq"GÏ*ÞoŠ w+¦l|íÝvoîÖŠ4°ÝfI]j™HÜêËÙTšˆãš6Òû³ºÁw %FÅd“~ì›ØPJeø®nPl[¸½»•ÄØ5v¾y1~u?£å½[Eï†b”±í[cß¹/‘@YüëJ}?ê÷.J+‡‡G†Â^þ¶ki=VŸ¶PZ×a”Ål© oVÑc5¿õ½Ø‡Q1Š +…û$úí94±Š³Á2ç/rÛÁFÿпNÿ†¶+=—v4eÝ$ùòãÒ³áBž*MëSYÄßòòU°)˴㮑mrÚ AEc*ÓSòôjû¹·CÃè@ëd.Ñ›\ëÑØã0õæ°}XG°$¾<Ý&l–júµ&©ÎœcRÚéXVÊЈ)P]Èr.f0y¥.Ù8*rªR+l[K1ÑZe¦´£|.§cpTqv” ÊéHå~æàUrñÞ£(²œÎÔýEé+S!Únâe7r}µÂj±ØCƒÍU£Í}'ÆÉë }QK*§±¨b4!A 6ñ£––ø°rAT.Òð\0!U4J{—Rïý‚‡˜Áy‚¦%f—LŠxÚ/mËö&¼¬,®Ån®Ånäªå./˜cRÁ»þf (kcèíüCYïK’ßvçÍâ!åWXl¬Y`Dø}Y Bð­Ô=ܼ‰øhôÒƒTZãÀÉ^Ì Ô†°HFo¸F?‘3ûÍTC7c;m͘dÍ¿œa–P÷Â('K=‘³LÉÞ.‹¡¯b7$0å²åŒ3z=?uiöª€Œ‘[QyMÞÈU‹w7Cv…/H·-Ð+îÊ:uŠF.hÌ«™Hö`;ó[£)2fÌ ÉÝú–Ù“¢8.ŒÇ° (ÐÕ¿u{alA¤*0n¶¢+õ¶ñ:' GA&Éí5†v%Œë¬ŽGƒ/·Ïd«£«ËˆÍ½t킘²ôÍRçßV ·û F‡ì͈ãevËSbr­TDT.6R¼3&«QÚƒ\Ì{áNÅ›š<¦·§Ì!uºÏaM$û.úE™L²ìZI©ýg‹ ¹Ì0ÆÚ²ŒÉco¢¸®»Äa‡Ñs"ÛŠŸt³ïýç<ž‡ö÷9ujÒÎIGyw¿¸™"çc Ú,Ϙ26£ÎEsèÚØ»,H:AUäõ&K3Û )ï﫹X„´§óÂ0˜!µ@«Ã½|¶ÜŸ¡õóÑË ‚Ê p ˆYä«wx:˜P$,g'Þô6DµT†ž×H8×UÌÔÛ: ßTª8;!j†ó¥aÕòxÌ%_ syðxñ¦¨Ù¹‚á“TpX¥ùùOäSd-e}¬£”ƸƒÜ/•ºmŠ˜NƧãÉÄ ˜@e–—:ÀgbkªxOZÓ&êc¡‚óFÖê½—1:Ö4PD5‘ËX¶‡dR-3iÙN"·†š‚œÍ0ÖÉú^K&i§Ü!qΚvF[@C „çjåê uç&Mð«§u0LI¬]œ÷ú4’÷d²˜Ñä= ÇqˆÊ%èÜû|¥\ º¦‰:¤‘J9ËsP)ƒ¥ØJ)ßî ÔÌ‘ômçjæÌQ¹¨žFrþJ ¹ãÜv‹iX†1Òq€4A¤æÑ{ÎyD£˜'ÛËÙfb’NA6@æ€:QÓ¦f‘×”úã’zÛ2A7â‘æfK3+tŸ(G œyôóNârBû1>§ö#v<ê€É¹vó-*ÙŒÏpy,†±hÑNwôY%WÕiJÎI/òw ?Ð6ù¬ 2eœ]ë«JnÀžóˆ%Ÿ:‡IÉ\3e.)Yøe* ï³÷¤Ô"êÔz²ãî›Ü]13®?®Y|’“_𚤄±÷O|­#¨ÓüÕÎ+ˆ!ÉvìAn·WÅÉër¢½*ÞR6¿*Î)QŒî`WÅ÷§I唬þüÌÐ:Ê ×>ñ\JÛ]§(Æ7ü*xU=UÌ[€‡|¦:a¼%çÀiOå8Y”Åy© ïÂŠë ‡¼b¾7áç̤ðʪFî¿’²+Ùïêžùæw–÷ŽÑ”æ NCÙC Úƒ¡³ß{æÏ (|ؾAµ”Í1ã” ³Ý3ßø/7ì ªš«_-: e t(ã òéáXÔWºg¾7Ì¢#1k([`ÆÝs8‹z÷Ì÷U³T¬HøÊðy>ks8“;Ü=ó—ƒË…uÏúÊðÙ¨´‰_¾uÏ|o˜¡ó“k([`FUõ‡ËêwѼMRvˆ:þS[SC/¤0Ã8`¤€Ó6€£Bf*é]XÎrÝü&®™·(íš?a× Ð6Gj(t»°…ÕPØâ–ùð³Ä±³Ê„Dºï¸ ÔsK¸´í}ÚnØ õçÉÿËx¶endstream endobj 876 0 obj 3015 endobj 880 0 obj <> stream xœí\Iw9¾×›7¿¡Žå~T¶öå8K?†ÙüæÒ=ƒÁÀØ,m³õ¯Ÿ/¤¬T(SU®rÙLÃVF†¾Ø%9ßÎE'ç‚þöÿ>9›}ÿÐÏOÎgb~2{;“é‡óþŸ'gó?b‚–óØE§œ™>›å'å\Õ™æ^™NY5?<›ý´8;kŒõ‹§i]P‹‹B}Q†çÄÿþuöÃáìǙ鄀0÷gÒEÕ9MìMgíül&éM ”ÓÙ£]Eö9s("¿)‘)T&ýIs{ìM>§¡QRë~n¢2Tž”á»1ß48À*…èŒ]|,dfhÇe/׿\']è3þlŒR¾, dËf>øi+ûVìŽÅ™£¥LÊ&»ûfõR»ÃÈ“ã]…±ŽíÈÂ?+ÔÓfÜ;¡5d¦;‘ÖfBV œ];Z¨aîZoF`Lª0æsç#ˆ¾õrãuF¶@†Àë&cD‹Ñݽ€Æ¤8‰9¾]ïÃÿÝ h»Ûߨw™Ð“²ÏÕ P‘¿|©”ëlÔ€0t>¨…øs?j+bÂEk%¬„Ù‚l¢RCUkctx5]àcè£UÂCNâœL"ÆÒK«c5‡üÃX`_šn¢îE•u‡Š1ºÓùR‡ÎI¡²¤‡x^ ­£G7I8{’2IRMhB.:áâù?D©Oý¡ wX¨ÊðQgêÈeÐmþÜi;M]xp¦ qE¸BÐ2fV>7áÿ.BljÂõ~Ó–/mÂ6½á:šðÚkÅFm¿^Ï’1áTÈnÔ«ôUk£e6>ã„.[–¥ -Kë }È–¥µ7‘UÑt2²I:lèm$3KHac¬ÞÏx°T^ˆ¤­¬)úhÀ›†ÊºjÆQáñ†-ç [›/ó„8êN‚c–DªH«INWK½š++òsÆîi?ÅÔ2Ö\îeÆA S¬•zBŒ­ƒ-_Òi^†õÊWàryh?Æ ÇI›bo ®ñ~\Ïé9Ó©¹RžÕBdÛZô*Ð%eã…¤Íé XÏósZ>™/‹Ï^3%Lïöµ¹ejgÇØ 3Žûõ*³xœõ­úïDÔÁr©Ù»û!EÓ£عQxŧ,§ˆAršQ©.z»rÅöUZŽ0‘{f÷Šu´^ô£¤bò–;^¥h0 ?UõÁX pêuI„ë¶è}yˇ2<)ËaØÑ3ñå îœÔƒ$¢Ië«qK¢¥Fv´[uTRÀªLýP†“¦š¨ÛAí‚qULæöý‚y¿&/½r‰ŠuÒFMSà£ÇÓ$”µ«¨LшÛþ;惧,в7õeO­ZèVÇau”Ôµ à“m …O4QaÀL+“ó )ÉkÐ!:[r1š›5øø2Ç€zoÎ1êZŒŒ¦r¥î“dr•vqrƒV!7‘ÙŒr£͈«QY†òxzZàMÝ\Ðè¥,9êÒ ° ¨§Ž[Æ9 ”Ù€îå¸ë¤Þh´(n½ {b´<Øó8Á¹UQe‹>ÇtÇ:ŽCR¡Ë¿ºÑŠ.Ü̎ΣtlÞ¿îwkJžïóQÍpkæê{;E;•\/J¸îÑól1JÖqû#ãØÈ¾ÙVþ–|HYä)'GÇd¼`•:Wóµ1•U`´NèË*±Äœ¥z³Ö¦³ð¨íDÙ<9H’˜ÔÑsÈQkßÂ…´EYsuD‚ûsz‘”ž3áåç–Z¦Žd­+rw÷ã6Æ’Jգ¯bM™Ç›ãÓÌÛDÓ2¨Ô¨­ë ûæ_Ö™³; û’ˆ~xx~ø÷Ùáw?-þ¢fD3~¹ ¶‹qÜI»¼cØ$èA¥üÚ)kh^FÕ¸éT4²lljŒ6Ð.‚D •CÒ¡ƒ½a:=Ð+Y¤™ ð¨ C·®ZæFõxZ¯Ñüf¯aQÖ›ˆ)º7sP|P¨MD-5ÜpníÇšùNâe÷]DMö9`©’ï"n·w|Å]Ä¿ê‡æcŸ6Fç©éÚr×m†ñNm¡„\8=(ÃGUá”ïVA~Ú¸-Z0Šö€öP ¥jé`»¢ïþhB†˜=Æ*ÈçÕŠ– ]®P~”m–Í€IšNÔwe8ÞãÜO›ìñ®ÛN04N‚GqVŽ5uºhL¼&‡SZIÄî9‚B–‡®•¶T"”Ý• tT27´\aoÍãþS¨{:ŸGÈPrÀ˜çòõ¹Œv½¥\ŸÒ¾³¤"kË^nU(´’…Hrʯí#®gëFGÈã‡àÎòÛ-çed^; ª*)ùî^ŸQ¯ùT€ÁÌÇsý%"zW¾YÏë’ªþℨÓ~þ¨+Ûf×. àðnû®@›-cnº¡ è[Ô߯owP¡Éphs¯ñ¤†8ÂÞ®}S.qöζ…l‘Ô³ÓAÅû|¬êCˆã¬é0Ò4õ0óàU=ìPŒ&{SUm‹ß3˜xPàMÀ´L•j€‹¹E’)Ö`ÎÅívÅDÛFDšÌæn–é.¢Hè‹äÉ xÄ´Óó¥¢c©þ< zé‹|Z­ Y¶g¸ÜJa„¬6u»ú¹³GP¨VÐ`üéàY! „«<Óù%1èw:wNÃÏ¿FÚD»à\ ˆ¨B «à´n"|ÊžCMÅ+Ffø½…þÊì*T÷ØUˆfs€KÐ]ê^¼æ'H (v-ˆ•Stè‡zÑÕ÷µh ¼j®- °¨ã(W0ŽˆaOl{©u|žêR©^Ý£a›P¯ ßö}¬ â#ÒŽáºøSþ«p8lNøËTšö’Q´uhý–tvâ¶Sß5ê!}ÖÀÌ•ÑÐG*ÿ$ÝÞ´å*g•ž®5Ô7ï;F[”xÁ`f!®Ÿ®õmño|-Eç¿§ì¾]p7ï+ðw‰Výï1 8KO¿bCFî;Yî×îñaÕ×4 pÌÈ®¾¦±¢\ýkt®ìWÈÞÂ×4عìÿÊp—-³Ûü@ ÊÊú—Toå_ë/õ~¾d|3¿by£Èøv`üíWŒåÌe¿6Wu±»é¯bÜ­”pÓ_Åh£u7lë·¯b|¡_ŸËí}ŒÓ"üØq/‹ùw!ŠÝò§0ê«fô] ©4¬LºÈÕ`"ÝóÉW±\Úa8ô?Îþ;4)endstream endobj 881 0 obj 3095 endobj 885 0 obj <> stream xœÝ]Y—·q~Ÿ““ßpï$šPØ“'YV$9”lKcŸK~wÚܤ!CQùí©*t7 h çΔs’<qÑXjùjAÍ5郢ÿŸÿ÷Þ³³¿ ‡GWgêðèìÇ3Íÿx˜ÿçÞ³Ão.q¤Cš’o—Ïò/õAk?¹è̤‚9\>;ûîøÛó 5ùdœJÇçj2”ÓÇ+ê¶É)mŽ÷¨mTJÉâ¶QŸP3$*_ò,Ñkޝ¨­ƒv&Uc^àìÖãìñyn“¿^þ¬uµ`lë‡ “&\ .ïãJ/ñ÷ ŒIáø˜~ï‚‹pÑ´R—lÌS™j*À ·ÏS|…Sh-®ò3n&3\–Þ/KóÛuÍûÙåÙÏ,®æðOþó3M˜œ9à&`wx†=>NÉ®=OϾÞO½Æõ~¢ŸbžaRù~þPVôCYòO¥÷Uéý¼ÀMñ³—¥ù˜š´1Ç?—Þÿ,Í7ÝÞV§Ò^\@3.-Çý‰Å*ñøZ\ÙóÜ6ÖèL\Ö« |¦‹”¨L¦c¢1SŽ1Á&ú©1vŠ*ÍAD‚vq¦< R¨ž”w)UßsˆϰWá’@‘¼1fÂ#Á c&¥m5â‡2ÇK±—b;rÙr›òäQûz7&kc¨¶þb««îÇbºy· 0O­¡ÙÙ¼Àˆ³Ÿæ~96‡?ž¿„ó(ýtËü” °19gC¾ÝG›µ!ŒÎ6N÷$öÿzÃco£ wÓˆäÓ-¿'o[’‰¼´Á–!Xj Ë·f¼«V-GÜÏ«Ö(%ïæ+6Y‡—¤¢‘‹ßž›$ 8GÒ¶€Ÿx›×©RÔrA=Y§ƒCYîû¹ËÀ÷ ßÿm——Qr&í—É>Êdã„Þ§ÝdULqÝ~/7ÿV>ý¼ôÞ;U¸=™`âíVôß]Áö¨¬èÕþa˜ÉDÛ+òh%£û…ͺ׃ Y³^êbº×µù¤4)Ík³»8›°I j³]f|IÍO„x.Æö‚â§¥ó[ < !7ª¦O‹Ó¦FoŸw]#ú—úùÊ·’þkdM¬eQ’}”Å%è®Pk<‡UTá*³™F®}Ów”H½\‰QéJ½…÷ÑÈŒ¾{¿Ž¢!{:Éf”cF^Ë9JXYðäÍ©½ n‹vRm¤ 5]"±ö[šÅ#±ÇxîXÎ #kõÉ–›ßb 6°v 8îÍÊÊÖl¡ŒKcëc`¥yЖçÍäÁÔ..èií\(2öLJ¯B5¸Èa@p•¯>ÑùÊ‘Ýn”ÿ{W·5Ög¾37"ˆe¥Ñ”•Ö–Òl®¢ v’Ì ­íÀ/Ø5‘P`ÀÕ0P§³ªFè\ñò¹ãÉ÷Ì*ËV‡ý‡Óh--"n³Â"Ñ›[´– 7gpÔfìúáú9–±nä€g)á¨þ¼žp=†ûyòh]G´é3Ã[jÜà4Zy_Û:LúÑÈ€á-¬>2[#Âå‹®æõŸÅÖ/x¸5*, 0/d(àGYüD|ˆ–q×Y³z¨mœÈ^¨ÔuD”it¸5îç{aöˆoÈ‹—ä~ù]-ÓЂ@cæMn]CT dèùN)5Å…T|„o’‹$g5Ê¥híñòœÌ³ŒGˆ“¬ð³vý¥0Ù¨ÖyJ ¹N>0—FG#QÑlòúÆmÈ)Ÿõ&ƒzC×Å´zþ˜TÒ)®™ƒ1“YA'ÜÓ&.Ô5b„è¡Òž õà:9êœ@´æø§¢XæED·XÀ”n%ÏŸxÞ˜‰VRã¢/ ²Žü'ÜáN’…¥ˆT2-vYº¥|EdgÄâÀèšü&í«|yÉã š•NãÕÂi^–t5Ì¿õÉ6Ùz[nÁkW±á–oÄzMÎeGAP= •ÄÒ;‰ÁÐï6Åg·89XA‰1´z úRÄûòÎÙå¿|wü¤(žÆúó- ÔF·)]V§ÝBú!À8Z4ð^PÆïB*²ôý"r_Ä„$ì»»•94¾ë2K“×I¿¯ð”F„ƒSÊMÚStJ{²zí¹Et éAçðì¯zÇÜgHÄœ˜¨ñƒ‡.!Gþ,Ío«ÀXÎKÇõOH0å,X7™w¸œ€ÒÛ;wÀ‹ºŸJóUi~Þ ÈG,~ö²4W;B]'­1øÍùšU<·sò(÷¾.MqëW¥÷Ii ?ñƒµ·+ø©ÝËÅ‘XA`‚AÞg®äwd80 il¤#à]ƒqf2°öÜü²)Íä¦àþÏŃO{x ÑrZÎxѨH0i½ŸCô$’¯Ég[PP7Y5Qtcœ~ô~€ =˜Ù\ï=ºÍ¡DÑÚ¾£??˜IoÐý97H Ž…q6Ó5j-a} <0гÃ*ß·VCFËs& ùÁ:ùРýŠöŽÚÕ»÷˜‡Ì3†‡Ì3\«\TE‘ä®Fí2ˆ+ÜÏ7››¦ÜJ³ó­ÇŒ[;ÿYÓ(ìÓ1S`=jÜTü¦T߀`®ÆsÁ“72®;T¾ÄÍVÜ?g Km‘XPÂSq¢4Qo”òjRÌ„–ðx5¸‰Ÿ²ñI{r¶·3[!Y“̧ .9àTmmœ¥$Ú‚8ýÒ!9Dþò‰Îlƒv.lþ¨S}Œ €¿A56cþ?ŸGJÖRÝÈy•Föxß|±½Y9ÒÓàˆË³1›#ó#E•û=ÛM¡ ¬K™_Ì‹”ã½µT¢g•þ«˲^÷,‹~~~†E¸—ní~Vy·pqÌÖ]éaV6Áñï½øJÃ3y·‰d=ª§ž Ãäpi5I™»ç¢À……Mf<¯ËU7plÊöÇ}™”7w…®Túd°Õ›0)†Vjƒï0m®GömßùÝŸ›ü&W§ËkaðÆ5æídã8`Eûñd™õ \Í¢÷KÞ2®9Þ¡¦6^üÒ¶!®á%pOŸæ¯Ó»…[]Ï8JUzWMà øÍôûg1OÙ7a¸¢Q¤]*}¹¦e©Ñ¿Sz¡àÿ*úÉK˜Ân£•GE,£îä/6Bñ-¥x}’ÁÛ<65®5É6G>÷K0U³­ÎÄ Ò Ñ[ãТ³ç}ÞV£ÿœoИ8~]œ[B(íÐÁƒ’„,ÿÕ¬Eó”F§‰LzW?H²`ÖéxµÛ@%)à|Øë_ŠœeËö¾åh²# M¿ W‘5ë}lå:uÓÔõ+ >”èk¸ôk #·c({-Á?P­Ðî¢vZá=GR“9tèÁ`Oy7‘a"«à[}@³!IV:edòõõƒ=òpóÅÆI%]}h7ä9o¬V3£@['4ÈNeAÏâ9H˜´u;!Š”¤»¯Ùh±Êöñ û´«:Zz‹aRÊ´¯B—˜ ë…êÍ­Ç8kmƒŠ®5Û9u·›Ã§ ý­ýïÉ ‰T¼hÎÕB¶œFm«6ßËòByMÙ‡# |„À#Q52¥›;«X‰N<¸ëlopDËV?á…ði1³*ó]¡|Ÿ•DG  4ʘY"5 u¸^pŠWBRÙ}Ei€:6Ðiðòrôv ¶ÈF!).aRçf£ÒIÇ 3I!‘ø)þß|wUÑTˆE„ Œ5®V×Þ3ä l<52QÚgýš]·HEOõ {Q%R’s)·±œºÖ*]UM9ñù }›Du^òOâî †åÐä!ô‹ŽDùˆ|‰m‚ñ-kv QMÎØEÀrí¹Eư€¦PåÏ…%}«²dÑ›va"  -²ïF¦ïÀ¥ÛäÑö$eõØ™Ë'¡Ö!GR’ñ;ù¢½:pBù¼+ãò[™º•ÊšìµÚöPd~½~^2ž6”¢ç¤üR#XYú‰³÷eÄÒý7çÛH,OÂOôW`ËT ÿi ;GoÀ¦9Zfq±‚¿‘ X1¿ó×ÃÒ#ÒoÔ\ýÒ¨ ð†ÙG´[Ö"q9˜7ͧ¨ôMÕ{£Ž%(ݾÁE®‡Õ/y§°µÈdú´ð½Èzúº4Kª“P¤‚\¢V”]ˆR+:T¨qí¹…ÔŠT#æT­,µú‹›º‚6X,™o«I¿ñ« 8 ð^Å0ÔU”ëQRUî”ï‰|ÀOKó³Òüº ¾Î¤ôY—ÄÉÚ€JàöǪiÕðQý\Ãö?Î×Ì»oZ­Ð”5“U+÷‹mËA¢…0Å ['zŠnàÍj¼³ø/›Âgó'°\ï}˜¢-…¾Ó¾¥ËÒûIiÞé5KZ E*¶‰Î¡›¥´@‡Q:n‘è(9ÖWysþhE§^eDUµ)úñ¡–(Cn\nx'HÍi”ÞÞüÝÒŒCËèë£BWû~)Qh=C§´ÈÎ{lÙ†·6dQÉù€ÛÈ«†öñ&ÊDÕº+E'²ÀíÑC5WYj<ëNÈœk‡ö¼ ÖÈÒ¿Š¼PÎ6à{ ÍKœî;¾ƒÅ¬ßE•ˆÏ@¯rµ¦¯ ¸mcA¯E¨¨õˆÄG/§¶¡¬bÚyxvM.I8ãÏ5³Ò>4, [VÊmÓsÆ[D±yAy¡(:fÃÇ#ƒš\±´·~Ô:zÃ9EÅu̯pƒCƒK/él,E^¶Xgi#z7…ÉÛVúÜ%Æ ƒ˜ˆÒBéÿ¡¡*Áxá2Ãõ rêúé”zÂß YJWu‹ 4•èû¶ç6-ñúÞTKš÷UÇ5ë(•ŽM@R”±óʲÑWQo?‡ëŠF»IsÎÆ øˆ]Ã#¯ ÿ±¢Éí놵nÑÚ┪+RbÝ Ë (£Å$„K½{èíÜì$ä/Ëëbwú:¥8E Øsó«t¿ê(~¶â÷TÂ.Ѐ!ÛŠÜá…´kÏ-Üá>°E >3ÒsÛ:óïôœùÂWOïj­\\â:ï²8œÒð bqמ§0=Z##(oé»Ïꩼ“–§Œ”(Yïö¡üÝäC½‘ß”eü¥4a×ìMï@V‡×µÉÝ¿BBT¡ý?w‹7^ÔKÏçÅŸ)]Ç.$*ˆ´:̪Ò&#˜XU ¹Wtî­4ÑJ\=ÜìáuU8?1Æ÷ÏßàPìX@h©<»ò Õ˜ÌÿyG¾¡œqúùÄ/EoËÙhÀi]V ²}·^êHêEÈÑÜ+"I"(ñm¯YDy&Ìz®†‡[Ÿ+þa+Ô[¥þ²Ëšk”Õü»ó§ ûI"(± {‰,ß–oÛDéÁ_ò^Á­˜•Ž;6®ªŸ>¯é9Ý÷]uí1ù ÁĈ?¨pšŒœ4¢í‚ªçd´ ò|™9ßI—µû^s%§?žý/m@˜¶endstream endobj 886 0 obj 6374 endobj 890 0 obj <> stream xœÍ=i%·qßòð6ð´š7 lY²dè²4@[ù°Ú])ÚK{HZýúT›ÍâÕ¯ß̬ûƒ8\>²HÖ}°:Ì“8Ìøÿ忟]|ðµ;;üù (qS°ÒêÃÕã‹øKqBLöचf§WÏ.þyüð>L¬¼6îø%5ƒõòøyîý¼;à‹µ÷®þvñÑÕÅß/ô4›Ã/Õ_/„Vvš5®$'gϠǺI›µçéÅ7ç®íäâ ú3pŸfà>˽µp 2ÁsBOJÞ8'&g8ãh¿Êͯó€ òñ›Ü››ëF$Œš?e)Ü<©Ûœ2̧Ë|–ÁøGµ @¨ãŸ à>øZsK˜aÌõf{|ÿ€Ô³•þø~¨•r:_Ý¿ÓlMqŽ >‹àø4ÇÓ Æo¹ù,Côàˆ!DÆs\c[/9>¤¶Ýl9¤¸Ì cå,/ÙOóŠY^cÛ9Åíè”qÒñÙŸ³§û—6¨IÎ&\ð: ¼‰ëÌaV¸¦†c JÝß³ù¿¤ÑR÷F+ ³\ç!íIÖ;SFófܼ50|Ù° ÚY<+é' «°)–íz—öˆµ/#–¨Ù>\"…Yu¸r2ÚŠxqüù¹=È•š„ó»»øù¾†¤½+zŸ6w¢ƒ3é–€ñÛ_®9hËã|BÒÁ*3yŠÙ8¨ßõ‘æAŠrP_ã:–œëì¼9¾e3/¸¦œÂ›8x6 ‡ÑÆOŒÇäÕð$9Âr3Üe%Uòá-þÅUÿ˜§!‚I;#Š1f¡˜}Fƒ÷ƒºÁ¼CNʹ²Hí\^Qui»^ÑW‚nîlBŽ|×qˆ [À­¬7ÜãvÏú=‰sk@P¾åò8ñP̘P~$7BFHå¤áß_a¿ã ¦= Õ‘)G§w &S“ö s>)ÍøyòÊ&šáwLIÌ 2Ž¿@¯œç m!Søù>Äó0F áT*¼eó’MÒ$LEáÄfIa8’ÐÄwkò;è õ/²É:Óže±˜Ý*ÇÀM9†ìÀVÙŽ öf{ Ã_ö`Œ ÅÙ2¸_À1/T¡àá6ºM¹¡u ÛÀïà^4¨î8ÚÌZE‘ &5ÑÊuEÁ ØýWè Šù$.ßCÅPAƒ›”J'" 28¨L gˆb'_ùM’ËvK7K:VO]¶pžV­PEãtz±%Ôü27¯º>YõéläY¯'МMØI‚É¡°é¯ØMdZ''oe46˜Qt•UûOjS‰Yw4àO¹÷/…ÍWëþ ÚJ®–Ä·¯ú2HØÎäe¨‘»ƒª)2‰µ‘¾ù ˆêZy§/–e„Ø%5p :l„âçû.Gír))ºƒMÒ $C±»ÇFë6i²Ë®ãOÐ*W§®û”ÈgÛ’ö–a5ÕÚrMU)?_â (ƒ)€R?Ãn¡@\Øê®éä„.€ù~¨aoŠFéé@ ښܚh!5W•¸Ž4HLm6‚îZ®{­:v®‚Œ´ËżÑ$ð¤ª5n¨8uìdËgÛ7¸ÎìdM0´y[ßUÃmϰYp!£åBv°=^+5˜SÒv\?äæwÙ5ñ]×wÁƾÌcåÊŒ3¨Øûƒµ³™æ€,p¸ÂÚs>†€¼iN½.2b‘Áen>ÊÍëÜü¹êÐ?- o±GŦr EêªuD×J£x5•`[ê:•Úž«(ø.‹æb¨÷enÊmÿ°/ò*0ãd7`ˆÌ(ÛÛ X×ÀÖdZò· êBƦÈÍËÜ|”›×¹ùs¾]Öûtó4©|Ðâ´ÿO!Jlò½­Û-O³Û|2&³ÿËí+Ô@dr·Ïrç *`4¨R´f8 pÆÎ{;énuÏÚg4NÒØÌNÒã\á@œa±Çæ6±;Ð*|ð§‰]!s—ᦊ/ü°ÍÖn§]Ò~–{lꌀ š×Ð3h,`ñLZF=WΰsWã;,:ý[ˆ76_Ç™4#e@Kõ¢Öã þ}ƒÂp¶ï]¶ã:sÕIñ¤áòßá¿£¦+VÉÑïâ!ùR+æ¦ÞÀEÅ€ßiŠÓÑøF}§+ò•BE.Ö9T&@ô8‚©h5s‡aÿÈãÇ]ä ŒÐS>‰@Zå“!…W¾U>ÉC%ì ºÈ®ÒY2ö’9$üÍœÝ5ݼ‹&Ž;ª°ªò2K‹otG,…+Ù@{Z›ÉE«1FU¸Öøã²-©v9¦aáIÉ[ú¥qAÀ‹JëÎë03mä¤ä?íÙžR´¶,¶r;]#ÑRõm¨€bo…)ºI Bœ°ž GÊ»ÂT™w|BLø;0ý4{$;×ô0œõb‚æl…;*€MH3ùãçÔf!Ð8@(àˆ<:&•˜œr˜#à‡5Z,¹Lñœºµ ‘eEÃ^¿àÏ”&TÉK“AÂhKÎ,傽 BØ‘ËÔþXÄ“t*¬S;[Œà¿\Ú@Hh1#Pp- šá=Ñ&P Ÿåá곋«ûç–(òÀɬÂ.b—Î…#=úðtbðBŒì³·%…˜|£8Ň¥Â­G®E´Zyë Â4žŸ,ÏO! ÷´)á‘oQöHøüOjíŽ#ží¸ŒU¡wKøõlD)4:v*PȵÀú@¬ºÅߡӲäxNt{rç&Ébö,™áÃÜü2k›WÝŸj:™À€è¹9pÿh O*¤ŽÀ³ÀEp ·Åþ"ñ6ë¹Ï6õ\€¡d[çÍâà"zÑœ*Ù4Ú-x}vô$é‹p¥ó•~Ê8]W«ªJÐLx‰qŒH$"-Im§¨6ŽÜŸ‹Âté‡ÙˆZ(íà/ݨ[ƒÀòÆ&?œI+¹2Ãéyn¾YqrpÅ >Ò F¼sé²A>0ž±^¶Íek˜UîQPgTái%‚^–©Tþq¹æìð‹xÁµ”?çÜeÆ´ÒKÖbTv•yóìÿ57Yï×›w„ür½¢ïw èb?.lMš”¤BníÙ]x¥°½WÆ%¿SÔ[ Õµ:ç˜'!+Õ £D€ú¥/µ¹¨^Ø…YfÃ\ ËVæPŸÊª µUÁð#«7.m…÷¼D$Šy‚ºô Úƒ.uàsy´œ‹WÃàão•˜¢zr³¬M Ì)k¨Îw¢0¨õ¾g‰ qt4½YNÈfSŸWCMd3-g$½:hŒô%Tg¾ÞK×ÜßãKQ¨KyxoADc€\HQÄôçMÈT1Xˆ oòí¼íy|º°²³ÌÂán4]é!U#(X”X‡¤é¤õ“k| Ôk˜.ë2õšŠ8¤ ²/›{uûÝ€ù‚œ–0Z p=»:!.i«|ÉR Çå1d3 ЧW[¯£^8”o¿]'ïÊššCX2̧ý—Üü4ËšZÕ ·\Z±ü×ò *÷nŒÃÀÀ*ï-gçj—.ñÄNÑI=ϾÜ)QÝ_róÓÜü¢K¬ßä°±ÿÈÍrÓæ¦ÞT„›&Æ¡¡¬–JEÇâ» •Z0 ·Ð(½Ð™u¥‹åaÖm¹ÊËicñD‰R‚pÖýî¾§,+arS©…á…oB¥y4Ce›áp±M.8Bm Ä)r}Þ×Ht6¹üÇ&Þ£c„™‚ˆ÷ yÃ6Ïìy¾ƒgq…vÀ¨èj<´¥C èsÒ½c¬’ã’ó»]>в£_R f`‡J+!Rö6â‘û·Ôf×á³ ÐÓ\qú%ý41/ÇÙ¤ü"÷úÓgtL™Sø –ÁŠ?Y¢cÑÔË$ƒŸ, J͵ýG½O6qÙÈI²PÖ=܈D_c2-û»i<Ób’…Άæ êǹùY¦Ë\„ÁM¦o¶é´G°LÓ§‚-ü2Ùˆ .Z< £6~çý57¶â-˜/6 —ÏóvYHóÇ|4,Tý87™ñÏB¥lì”gè; n.@éŒZ³:iËD½×STáO²Ò¼ZÇzS¤“óé¡w²6‰ÐYEL– nÝWIUÂ7ù¶7‘™†xÏ…ñb;y©*ÛV£q¡ucH¶Ø©ŸqÎçÚÈLmªS¨1AÖ;ð±\/°‚yˬìï³M¨ncøÇ5žt½d¦–ºÎ šb¤çcwï_Õ }¦C@¯ ØgJk·þy¾}¦ÈÔ¦ Ñ ¸W«®ï-0~uWZºø×¿Ü,ª2™J]Œd4¨ó8å§ÍÕbÏi‹0¢æóÜ|²©fK(¸ŒˆnãEË– ‰V‘Ü»<³: ;å¹Pe‚ ¾Rþ‹~ «†Ë_j©.×r+Ö½$5V:êD€^Á«Bï`­RŸ/#¦Þ6aÁ÷1Å42–]Z$$ÔÚáÃÈV%X¤y>X¡gñ „¦Zì©¢|—T “>ŒÎv+—îÎ5Ú’Î÷ÂK¦Âÿ&E'ÎÑTÆöŠùS©Ð.³ÇûuëT1èçK•G°h­s³ïÒˆ•Àœ¨ˆ¬a~¡A¼²¢ eá„æ&ḕ…é"àÁIqü '5ØšXø„ªc$0Þ±2´“»áÇUHbvûm.ÙDðLΈýïM„xlL¯1”Üws8Âgep@´™Â»„ $Ìê­=Ó 3H®ìd,núlx”‚ÀV(® ûÑæŽÒ!ßÅëöó^[BaqÙ, 4x‘¨òMœÍ;¶¥)Ê'9…0‰ÄÏfÄuü0zR¡žvÁ§Õm(sÙ:‘äPZ'pxŽt›·Lñc ‚Þ¸¸]ÉtÕÎtö—(°*:"Š~¶õ8[HøË¨![aZ3ˆ*’YhY¸bkåã:º2¬ùùÔ±¾¯`W……ô`yù-a‘ö{‚¦rwéPeçu@J-J<ãuܪ5M¶nÛèž1Nè¿hïÖÄ“MßîÊqËeè¤ðaÍN2H=â˜Ý Jâð‘­ø(NÆÀ$£ì@ ¦¬»»p€E![Ï×Õô‡~¨:R€n!£GnÚÌεÏ8«Ë–GX¹Äè®dkzc·Aa›VuªìX g¥8¨Ö >…Gˆ(É€Ò¶Z%ïâÁãß×ÄBjÕëIZêižK‘VE®ã®ÌP/á1 ž,ÔfSåçÓ’;)^©=úL“£I×ïw6?ÙϦTÕ|±åõ$·Àæä'â#4¾Þ4lÔ†"®5ºìŽUÜh•uÄ·÷Åczy0æ ŽD®-¤+ÉÔÌo¼Â€ `†žJ$–ß™:¶bñ¢‹—ø„8½ùA±øÒNEÐôȉ³ùAEfó8ÎÈOÝaµñW¹²µƒ³n¨ÍE¥¦rºäF`ߊᔰÒÖS€‰©ymŸŠ1eÚ_ÉcÑÉZ!†™ƒéj;Ì#ž¬ÝÇÎ >Š["•Z×Ê7½«[XjKLâX˜‘È|Òè&[¯"æIºY†¢‡gº›NÕÝMŸ#\½[Ó²m)Gµ•}¢¥¥Ä§¦#Ñ¢¬ïIR½‹?›û¸°æKá´ ú­°mB¾éö+ŒÇ+—v$Ê;l Î”hµ¤hé?Š+ ë7ì¤Ò(dÿÖ¿á¢e¼Lñ訑jZR¦Íjl²|òˆÞÎ4h|Õ„^ òÝSS„¾ äm‡Û’‹˜ß+ÏB|˜&¼»T|0Ú¶^©•è¶€Õe\ öêZíÃ00„JãZÆÞ < s*Ã\—îsO“ÏrK[ ìv½ 耓Ûù¿x: ¢NÕ›x²yw½ ëýïÜüʳ´Å‰êò¬t‰§Ê³<¨;ò.6úÞ«³hKøþrŠq 1ÁÊÒ*ÄT¤Ø`˜GØÚqòÿ©[ …'bµü+´E&5×Z‹8çµùS 4£¸Q å<èäv\ 1I eÔû*вXë}ÇZNE†“ZLFS¢çF}V~ž¹EOê½—›¬.çEîe™ O09 É_¶csµN¤ ö"ä½Mbð~ ìùÎ{ËI¸¶ÂËÉÉnD×O”ÀÁyiWñ~*¼ðA™÷Yàå4r„&„eæÆO0Rì=·)𪟢=²7+§Üü!7YñÅÃM)й>?%ÎÍɺÀ ñ§IOJ%§Â™ÍäT©ÅsÎÿfD’¡Z03–'W%°Þ,&†˜³§¸k™­* €Nãw¬!GÑ­ƒ Ú*’ Ãçèjù2z_>&¨“vå$£Ò†AfêuœÅÎÃ2‡U_?}áÔÝÛÀærrö ½¥ê¯gÐÜB¸µç…_¨lIšú6±ÇÌí[~õœ©,(ˆ·d§ì'mUZռ̋«ü¼Ñ™E]ôèíìlå?ÚY§¼ñh­ºÍyQô¥­¦áÿŒÝf4ñQ0Ø–ªT>á Ωˆ'%7o)+ #1zü¨rQÀ2Ó²NЈã™TÞn.ë}ÚPÿ#vh ‡÷@ºø:Õ¬ÒÑtñåH­×ž®Býg ÏSÜ‚t·ýÜ%Ý×GŒ)Mˆ"Å¿ Ëj²_Ë}9@–‘/›«å¸À¦÷ì$½ qK×ñÚŸÞþžõ‚å³èӕЙƓ?Q«Õ$Ô>\—òÛıôa’BIÉ„[tD_ü(£sãG«IïÕfh‹Ûµ*jùÒ^j¥eêÔ6©Õ¡·_¿j•`ði…^-~€Â‡µçÔ*É ¼coQaݸžKç|8à·R5~­ÞÄÞ.U0Ñ’~$èJ¤Çµyym„ìG4—×X0õk¼GÉUTŒïæ>#ù0ñy~«¥\t\ ÷‘j´€‘ºTôa€ôM·ÔN®í§mkâ ròfœÊ9 b_ Æ­<• eJ•‘ÃÆgNTЃöV.:J!ØL ‡Üu@¶#¦ËýC <9~ägô2öžòËGé`Û—*±D—9r<¦°d[Túi°¯Ï-%׿³~,2˜Õs]3$Ç(1.‘ìùRããmñÞdõ>;᤬c'Ø«çÍÏ·&ÏQ¯žï2í¦tÕ6å¸RÙÊqÉsð&w³±7ÈyT Ê×j)ªZ`zõ6õ¿L5dª¢>5£_ðÜ7©ûéƒèd/ ”§.ãÅÏž\ç…¸³¥ G`p'޾JÊ£çj6dýžèmó8n´<_ûQWô6(ÿ_:ÝÙ5ºÁ&ßðËí¿JÛ2¤*Üqèüo±ªÓkò†W÷Ä;ãß]ÇKps© òÉö½Ý: )¢–,%Ëî«à+½mäfír$K?Sù]Œ†JÙ&EÁ¼ßiõSÁ‹ŸkXË{_g=$?žÍÛ¨E½éø¾Õ¢@Uvh#~ÆÏ aø4`]kÏ â÷š¾§.UöåÌ8þTlÎçèP÷âÈФFaô{S•.}¤²á©³*¬É÷óò¼b¾ðRDùÀ·ÌùÕž<ôAÀˆ#ðHÉü3£l¸þÓΣت:±+ lO^[¸“пY¯.¿•O²ÌÆ\¦¹ªí¿ø?H³ªendstream endobj 891 0 obj 7262 endobj 895 0 obj <> stream xœí\Yo$·~ä/ š6ï#â 0ÄpëÍ΃VçÂÒjw¥õðOÙl9dÏ!­­Ä ?,M±y‹U_},Ϋø‚áã¿§7ŸÿÛ..ïØâòàÕ\ŒÿœÞ,¾8†œ/üà0jq|q¿ä .Í ™\X!fåâøæàûåñ!“ÒÛåÕአÚjçÄò9–¥ÔVØåÝá Jã~yŠÕÊ0ËÌò¾TRZå—/°…<×´öºìƒ Ö*iÝò6¶vB.Ÿ®„´³ËóXi_ž‘y܆îŒÀ!¦ÊÐV –Ûbžiç‡à.lœpuë©ÃËö¤Ó8Ë—ɼŒÓ÷,´$s–Äá ÝæQn È 7ÁDQ.eŠcJ%y!‘?çñÿsüØlá‹Í†=–R,Žÿypü§ï— ã;&yl,KÍ€ÅY‡úq|ºp£sé”¶0o,z¨ÅT ;§… 7cƒP{“۾̵׹x?~2°X„Qa­?µJù=ÎP\ .% :|ƨÌÔàu.Þæ¶×¹vÈÅËægØ/H vj•göynp_Í,Mgª%mgf‹×¹‡¡¿b*I,Æ+ô*íêŸòÒÆ ü*è†f RX™„FÆÛmt*øëØQ¶Tjz‚Dz6LŽm´W.è=ŒÉ*%J}ƒúªpF9œÅ ËsÒ:ñ´;zBÇÃè8LŠ˜Ë8'Ýš%ãzàFK£_’É>ë Zõ©Íöî0k£µ÷EãiiIPF$‰0¢¤b8WF—X'Ò1™èK2ÿ«±k]´˜Nk[A'Ò%‹@N͇\|ŠàFø¨¦Xl©)œ'–;[×C.|S˜Ï´VT• zÊcÐI›v‚Ó‚CvƛŊ‹AkÍã|~·ÅþE ½kØæ¤šØbòU¡ÁÒ€î0=gcËY°Ø‰ñzV!B×ó´sªs‡$8IS« z{¶IU¸ò`z|ÚÝg}UY3šbÖ¸ è×êÔï»T˜·„ßF¤?¼&õïCÙ8-“·EÙµ¼í êohx%Dœó'¯»Áë–mc…­‰nY>]¯LÛ>Ë=|ȦQT¦ÑšBspUŠƒæÐ5ç((Ãï«#WžŒPtÓ‘ûס°ƒEôLÎ/qß£Þ 0³…¤çÖW§G °Þ¼‚îMGÜÒi†áx¡?ä;»°Ôsóø0>¨ìU>’f¶Ä¯ô ¸I—Áìì¦*d{; @  ‚àyìòí!@6}†?+¤&š¹ŸÂr ºàR”æBDÚtfwñ3­ ¯uk9Ì·ƒ`¨.ŒÁq¦hrJüpþÀDá…Æ¥p3éèY íŽ~v™AÃUèAY/ ¦g¼²fK§GÔ,Áµ¸ÅÊ F2gâF*üŠ ÃD8t?>øöÔâ-Ù_À¶ ç|qÖ[èdª¹>ø®‡—Ãç8N-|/`:Fá ÛàŒoƒ€šv’ãÿLÎâi¹ÏÖž jbÓ|‡yžcne€3 þÓ¶þI!¯©ÁÛ±iLPFeF Ù_Œu~lAl˜C n‘~/[£µán¢Š@j'¡_6y’k_f¡?˵kÊW };®'öû+Š7Û§†fwà˜>Æîaü4 èϹ¸]lK­Ìc2ʱßUžäÿìi¯e ­¿,£¬x l×åÌžN|2ÌÏIÿqøäзZ3tP-´ûX|2„œ°½xlž]è% [°¹µvØ\)lŸÍíé@ÃñkT>/4+Å—ˆNÌ`D´±€ìŒK™ˆØoQŸE^FTüðTöš¶1ÒY§žžà†µ]³Ô–—ÌfË8_Üï‘•Õ£DxaÀÖÙÑÚôQ£yže¹ó ®d¹¬ xg×Yd&Ý:‘?Ó¹hrqÖª´¥¼ ;¤1si—ÂMÝù!*—p0™xÙ‘¡ã*™ÀÐÀ­,ICb¿)H¥8"ët}õC/hVi¥IÞxwGgdƒ@P#dí.lÝïü l|îôÿ+ÄœaƒÚÄÄSmfCÕƒw Å<†òE~ÔO5st¨lçf:4ô0$:ô&OH$7¬‚1¥µ°¶Ì3žÚÊ}=2ñŒ3,QüŒ(ÇU.º¦Ë®;KLIôÈêI*eåe•¸÷â!·v_ R 8ØÚ9ÔÁŒ#¥ñÞÂÏÚžòì‹òÞÊ Âå³o°µã(tt,`=Yºv‘à`]~´SÏ\  ‡Qy4žÒ æÁ6†ÖÞH_™š„Mô"94` Ï3˜¿e„ǰŒi‰ËÉ 9Ív_{çð&A4BŸ×õoé1Q—ç¹øÓ¬áR"‹iàÞ–•IQ¸ÁÒÊ^P»4ev颷ÞÅ®-êÝÑ ï”LáÓÇ!à[»õ›Ú\“6Ñi*"ž ¯®ˆ®.â0Ñ¿¦Úà±9ØLkê䜇Ü:üDgЀUè’;3Wñ;ææ$z–þa¨O™õe~VÅÝá0‡’œ·5£Šé¸z}ÛÁéÙ&¯æ.6ç¶¾&Æ Zˆ¡ûÞ@ŸÆ›ï˜å/V^òA4H›œÞZ‰Ú6SÚœXæ-HDõzS vUÅd4š¬{¸¨Â³Š^K³Ø—Îf@øAZÛÀ-µiK*SqÍ´…Úw¹øžFÊù4¬3Ìo‹ÏŒAí Ÿßþ&×ÞS3Õ~Û¾ˆ¢Á7ÔÆGà#zôÂ.c>㘹Gâ].7%~ úô€—¬Feÿk€ÞBÔ\…™NªÌë™ A;é§Ú†¹‘ Û ±#½îçô:=*ØF¯qD'´NX.ç¼W–¥pá@¾ †M _J²È¾£¿D}Ïš*h"¸Þ+p̆TUz9š…™˜šKÃPbËÐ,)];5pѺù}d4;ç¡58Ì/Mbs®JÓŽ2|¶Äo%5h®÷·XIÉk J0rˆ¢þ´”04~ClnÜzíLyåQÑZ`ák_Ñ]™ šS`<̱ï`µrLæ#;ø=ž¦…ž¯ Ö2³€"ø °G.Žá¼OWŠÒEfÉ…÷….7}r÷ˆZcPÛˆú‹«´zÕ8AOÎÒ¢ý£ñs¨XRÏ©!ÛbÖôYPGeFuÜ«­íF™U·’ÖÂIã;\¡î¼¾BÃ^Ôš¿´f@õ$ Óá[iw·…ŠcÏ6'¢„=¤t-ÖO6¬p³Pmìwª§6óyW£×à=öÇä,ñädxŽ÷2–è‘ «§÷Æ;v¼"IÏy¯­ì™É)h9ü™ö¦ÁëÚî6ïrñ>Ê.€Á‘e-éo͇ä>9Ø'—t—¼ðQžÛ‘s»\|’ù’‹ÏwÍÚRÄÛ··5÷I.Q©p>siÅ݇¨9ôw¹ö}.– ¬|m09›ÏòÞÚè›Öæ·ÂÀ“>?⻘áÕà!:šX*’CwTa`ZKÒéz÷ÈÑ+å©îo=‹ÏpB®OGC®*e‰¿«´¸&r)½{ž‹oó‘¨)Œ*,4øÊ+¾{' íq5.a4ixü5 ¤BÒ›T.6rš[Œœ‰­¸Ý󨵨õ·Ã‰w¡QäȵšÊZÒqÈ—ëÈqö±'õªÔWôr…;£¾'”ír&ªD„‡°k÷_Àgû½ jÒE'r¾®Eç»Èm)î»ì×}†£ËËI²›¥º—%—t roÌ+SÀãî-¨¥ô;ŠØ¯Ûåñ…ù»ÊêU_`ŠNŒX1¿"@µ·D¤áõrÅ¥Q t›€Ó¿M&z¡˜€fUÃð—C½Ìù£¸NçÔL|fź‰)]‚`؃s?Aûçó ÑBéAÁéǶÍ[í-³’«$>30ÍEƒ7yÑ|À}w”e›ŽmrTÉä ?¥{þ†Ó=Cıs:‰¶K÷ä æèI÷L5û§{B`ÓEÌ÷$ð’<ç8ÍI 2Á½"³ó„¶-¥ÞO<â“´ÓMEÙT‰½^à 2qŸ“'Ü7ª|“Ç}‘ks– À)Ö”–fФ­ê Ô;m?lwIî}*0þßv:Áí|ž‹ä×wˆã"ÄÏuÓ‡¯p#ŠŽDMŒèü/›­ð+üI1PReÒ%ÏŽ‡<§pE ŒÊ·ÿq†Õendstream endobj 896 0 obj 3783 endobj 900 0 obj <> stream xœÕ\[o]G~·*ñŽHǨggîñU ©­%(‰8¡vâ´¡?žµæ²gÍmŸã8’H œÒT4µ ?”Þ«a[=¬5ÃZ*ßë ÓÑúÁ2 SÂPÒ½€ÄÍt~]ÄûÛPHÌ“üÅ7¥ø²—¢ ®K-éáÅZ‰o Ô§„È“¨ÐKЀF6d”‘\˜ö Œ™ÉáÏ£BÔ¬ö+ÃdÃ]ÅOÏ|€3D&ÞÈEŒß>±EuX3î£ à¦^NÉ:ÕñT; éÏ&_’‘FçÏAÓÎóÖ?)çÿ®oËñ¾)µ¤í³–lBñ®oJKÓo,ˆQ†ÑŠ.±v &„¯À÷ Á4€ :Þ$0ñë°'Žejl¶Ÿuë–|·óæ¶”=nKí÷k»ûãÅÙ×gjaz÷LÑ/θ² n¤Æ»[¨Ñ쥵ææìÛ©Á*Ç«Š=èÅEsõ‡2r ÄÒf/Kƒßb-¬R¢$A»—å¸îR Éu*‚â©–†ˆEUФ­)ý~w^FþwiütH߯“X·UF(KöR‚ÀnxÄ^B0MM÷²“‚¡ø"ï%Rkí—ÍŠâš;B)Džù(~ÆÕDb~ ™ CŽçy¾Yü²Ÿ6óI!–÷cí›Rìx?Ô¾-Å–÷cmÇû¡öi;ÄÔùë¥Ý]|yvñ›¿íÿ‚½·€ë l‰´|±FT2ù.Jr°êßcèÅl¢Glâ4´Á{ì€Ã¼‚ƿک;ƒB1Šƒß¥/•« 2F§0´ ÿ‰Ú¢`á>.–[ÛàcÎ¾š ¥¤ñQdAÆŠNÛâvã¾ÖêÜN{’Q"_ƒ²h¿Ö|_k0Ñc@ÛŒM'Ô9 T…Ú œÏŒdžVÔ(Pu.„õÄöó0Ç¡“)ÐÊóþ¼­ÉIÓ}T“C¢‘%“ƒ¢B1‹5ºhÙ šæÎĈ¼N3[&®ÕÆØ´GÃà€Ì)@ŠN¨ÚƒB-ÂS,„™'&‚VáëóÌì RîAÆmò¯¼bñp#?tzé‡Ô5B¨³ñI?ñÇåM¼<ñ‡½Ž6µ¨*Lã %ΫùãØP_v58LéÉwÍÇ(ð†b§„φ‹‘Yê í9òBšòœæ^ìuõ ý—â)6÷Ä»w›ÜÖÏlD(žgÃaj~Äž ¾[ê>'ŸÝ5“€kÅqËgN[sÆÉR2“Dï®ã/…þ‡¾H,Ká¢/ Æø"ÿPoqû‚¿;Š0 ¡7ðPf² Î%f7ŒV–  Ù‡w»ó=6Ó_̵ØóØ„s]IyJ¸øRèÏË™+‚.ô†Hž™{§V£CoÐÝp3†ÐÄ @i«aÃbm]ÚµitôÁ­ WË‘ø\© mö;ëªGá•dâVcLRJ­äöŽŒg¹ô °`ÿì[˜Œœ á9Wˆý(#µ*‚~oPW’a*Ò 6$vÀXBèjð$h©Ð}FPHçç RœÔþtî@Ö Íå.¢Ÿ‡Y­Za<£Íå‡ Àu–“G|6´Ó`X”Ò«ZŠ ü7ùÌCL‹MUþ¿3Sq0h%À1ðˆë&Îúlk=ÈerY ºËdKÕŠÄIjdžâÚƒ¥f÷]1»O`åÕ…Az ~_Ú^¶3k}a•—äSõ»Ÿ—ÞÒeFË^NÆ-þºÏòi‚=­fM{ôœlùx´á¶Mkhb¦NïdâàS³b‰ìt‚zAx f"÷StL£VãPa­Ÿâº,ˆOŠ|¨E71¡èðW©i›©­H„~mÝÀ?¬g[С}ÿ0‘,ÔAë?Oa3†’•:’„1Ñ€tBÜÒ/©V¹‰-ä FsßÔØŒf :[#-zȯuKPšÜAI% °J3T“ÛJSz“¼Ñš\\ñÆIj釃àB ‘c‘wåA õ´û !”÷ºžFo\åIÐ@}ÎwÖº`1“Ô¸ùµkå¿VJé˜ «F´…¼y2&l2¢=®Ð ¸’ÃW8AîµÃår£áoj%³H–øØo½"ä9$3ÖÀê¹j……ÄŒ¶¹çd¼Ü&¨–b_§l~´ F1§WÏaÇxRû­Â¿Ìx¡úd´­6@í(µ7Í{o‘OÔ#·Ôµ‹G k/ÈÇÄ£þ/ÀÕŸJñW ©…g~qrõ ½h„M½ Ý9~57ˆO™„±Þ•¹½j X,^•â«ÑêFÓ+ËÉ•p®7gÉA¢Ó 5þTÐeÛÕw‹»Ï¡ ~êtBé®ß ”pT0и0§[íÐ!9DÆ£°Ñ»aƒw$¿bc>øÁûç‚´_;-¯b ñùÉ›ËÛ–,XÍ~ÿÝw›4 ÊÅËBà?šÝrµÔi¿L;!4ÝYê{šµ ;q s,áè˜usÏ×»¸±Îûn‡Z1rvµ¾úY*ÓU¢oš¾ïCôÏÖÞê“ǃgj ç&‰:²Û»“hçàkêà¦oKñy#7bñU9üûJntjÚ,ta9ÜÊ%/%|ËRðZ+Ks†:¯h“Ì­´X˜4M0ë @`´ÙásžSp"¦aM¬¹×’Fܨa’1vî7¢Ñ£©Øy\F îL|ÿW“‰ R½»6Wqß¼ãuž26fP;„º„©ýH(øCaž ˆ×FèÆæPd|JÜïÄüGì¯|<˜‰Ç½†_[«:ÅnÍÂ…j4ð)n*Ë6!ì½{½"c›+ÎGö$’H#9)–çåôÈySe0¦ˆ&00= ࿆ÅälïPs8Œ2óJøÜÅj'äLßÏ:,¦!¡,†ÝÇ4é ŒMéY(íDù†~¦ç×i¨g7Ï«Cç–³ /íàÐ!F¼&·}ºë1ms¯y=F¹Ì2e’™0Ú0À£è&í§2“º¤%3Óþ¸ÌÄé3õP¿GP¾ RoÆ1ÜîùQ´Š~kv­~<¬Ùá˜'€<þH°©U¥˜ù¤_Çak¦2´nEóÔ6»6S1ûÂIPŠ0üÅ9/™WfËzàp¨€“9r~Oì´Öo°fÕv~ÎòGø Âxe„ÚW¥Øù Úñð­Y¢MãÁÊ1ê‘6 œȈ&N‚¦©H‘ n´QÐòM¨€ºþ7®a¬XªNžŸJ4Ù>•Ço’#ª).@rµÿ± Îj1»ÀÅæ5Nœ n² (åï¦êþr v1ÖnEcAÅ)÷’uQæ½.-ZÍdæ<Çô]mûû¯»%´±£qö&kÑÈ&Kë¬),Ü©銟ì#¨¤ºóî”;!û0‰ò¿#‡Ã8ëgP5ÂSijGŽc™RHÇ·#§¸H3Œ~4IýÕ™Tk1FQ«-_@nÓœ˜ï“‹=^Þ™…(oâDMg¶„ZµÉ*TÑôF(O³4‘>càŒ€¡ßc88€˜k´ÙɆ~Hà›ÑñìÊO•ó;Ìã-#è¡>=`°Kè Sâ¡ᤠw18DÁþwa ‰·Q]%DÒ\F3›öBqkÎnmI1V/kehfÌS ŒÞÇZ'ç“u‘tjb¬Å´tÜ&¥\¢8¡^œS ì^NÀjn¸0Uç!5Ö„l>úå]štøm™ÕåY;m~y.9¦j«(wBë¡W„'w.{e¿°úLÉÇ‚ƒP%#êËF‚vRÀ–)@èƒÎ6©”®wŒf^Ô¾¥±¡Ã½LLÔJ —&&óJoÓ%ÌÌ‘&Rz,·hß_N9:;pt·ôQ!¢«ê†fKøª}æ€TДÔÐG‚-‘úO–‰½ß><Á0¥ªÍn ~0U»úU‹•Fþ\ÉÄ‚˜ºEµ ~c…3N…D h íÜ 7KÿNbô¹› Çm:pLoÍ`@7C<¿}Ó¼ËR¢õwÄEuTs be„Ц¾\ê£Z÷ÝLl‚æÆÏÀI8u1_?€…p‹7¼5Al$W†dêLRf‚²¹—†§2'^¾Ö c]*‰òánÌ$ؤ¯€VŠ3d¤ÊŠ;Vá#"nš¹åƒj:™¼_”ß䑪#S˜4(¦öôq¦ˆûŸÆ¢p'¼wðSú dݼ IExmG½°4ϸV¥8=«E¥jƒÝ,}N³¶ÑÒb1ÚuŒ“·íu‘˜çÀZ¯5Š8|§¶oea3'î׋ÿƒ"l˜…:E—²Òõ¡þâOza#.eÊðÄLAcÕ£ìÕYžzí¹ #ùIa%,ijZ âÇ›^ÞýÏŸ°hWo\òÉ[9aÏÕDµƒÃ&+¦—ôf´™¯Q]Õ'†=¢…Ühdl­ãu7°]4´æÆr‹Ô²¤Á½4Œ'EpËöÈ*¶—„¥&.†!¸±‹×\LÁÍñû"¡˜Àñ~Û?Hvl߯ΫnÃMÒÂé>ÕÕçÃ3‡ê¢Æðüé¥omÿ߯9;ÍI)r­¡£´ ïÀl94¾2È›$„¡_az£6ô¡UãzŠªÂuj/´†©ÎѶ0 ÿ×"Ci [²u1·iýId¦‡p=bíÁ2#¿$EîÄ÷gñ^<Iý¾ãËRoƒS—Ù}ÜôKϱf.G݇—dKó³åS‚E®ïã5DÍMk¹àå@Ì­AVÜ8uÒÅ¿6’ÊMxƒ¯}$½g|˜ö4¾O×8Á9_H"2ql“$ÃË[$/aà#‰-’ ÚûaI +£„«µè7ä *kÝ1;vfEÓ¸ Ò·žqË xö¨ç$éè’àpÂê9º\„Ú“áЩÀ+ŸÝ*bzw…vf‘®ëR96ZÓ&©‰ ¢œCêöHÙ°Tv ,^(ˇ/J‘GÝä}ȉoäz¬a&©‰oã,FÆ3eËpnG’o° •³éý-åUuÃeÕ6³l¬«²Ä&À‰µl;´—î¡?ÌkBè·|`½7&ñ…©Ú:^C{šnQ1õ‡)«]®p’ ^;êN~Éö>Ý×ç_´—HO ÜÜV+5J'ÐÝŒð;´>ð†9Òê¢PQ$Ê!”è¡åЗâÖ„Çùbô€ùaÚ('×Pƒ2H×XÂÖ¹øÀÑ Œr”‹)áBh¼4~]BW1ÑŠÛÐ5@`‘ß­åÎÈ„-A±K§iß±‰`¦j1|iÆ}á×ÀÄÅ8™Cͥı³½ü¾ìS™Gx›ÕÞ+¼n‡!Baå y Sܘ^Ê«„Ÿ(OTB™\¬™?n6mSÀl!ŠÀôåNäCDQ= 6ÐüÃ@>Ê¢ÓŸ¼¥1‹ù ’JØÜ®hóþL/‰é!þ8IÌLdé¶’sè;Ke*è¨Òô9´:टúª|ˆ¨:X†¦y^íizÂCñ)ƒ®CŽrâë³u1I"¬º9Å”™?ó^æþêðæÓ"ñEÞ™‡v–N9ó>÷VçšE‡O;óÎPO?üad6¿³n,¾„1sAü¸‚ÆQºSº7bb\°Î` 0à°ò«›æˆì )ïiZ%{üÔ`}ãëH¦$&}‚•nË /M+Š-"zÖmñÝû†Îˆ`Ý^òz®_‹ë‹r_ŸýXj–endstream endobj 901 0 obj 5269 endobj 905 0 obj <> stream xœÕ]IoÉ‘¾æ/ðø8«s_¦O6`ccw3{”HIFkéµ´üë'"²²*r«·ˆO‚¡ƒJ¥¬\"#"¿Øòýr)&y)ðÏü÷³×ßýà/_<\ˆË¿\HúÏËù¯g¯/w ¤¼ŒStʙ˛çéKy)¥œÜ¥Wz^_Þ¼¾øëîáêZLÞíÃîïø¬µõÊï^_‰I„ ”P»Ÿñ½õþ¹{ÅÚÜ_]á ¯¢õ=¶0NxáŠÞ_²^žÀ—ÊLB«bÐ7©CÃî=õbEºø’Æ´“´a÷œ¾„Tؽ… ­½‰»wW×rÎÆÓ¢ÆVÞàyz½ÚÝνÁôž²Aøœøâo›Q´5ÅTç/öÈßϤŠÎï^t§ÊºžGÔFË.єۦìPç®|̓²v÷öþÍ`Í£1"ÒVùID oÿïæ?/”÷SÔøìæøŠù|¥„ÖÑså?»R~²ÖЂ±_)—Zyb$ìÎ¥ý¤‚GÞâ#vadÉy–Ámçuø'Ný:ÏýZªÉ'Ó8¥*¶Ïà×ßý Kaúk3!P4¤Æâ‡øô÷°¾}¹>Nkƒõm£h-'íWbgÀÂ@ÐBf)ãýP¿T˜¬ó¦hò,mz4 ç* rÁ‰ÆZºâCN›ÏWH¨¬„µ\c'/äîWA'ÇžñÒkœ¾œŒ‹=ŸÅCZ­^—+?eã|`ÒôŒÍš7ÿÀFb‚}Ÿ àZÉǾ—v(n¬5gø™’Δ¼Ãþ@9K_sñ²„A³ÅZ,ó¸KS• q D¢káX6sÓí*`?¯‚‚=ÓbAâY &J|úG«Æ½û$…ÖÎRÈ¿à|Éoß[<ï`wnÿ¶ò[’?ï 7 /"( ªÓTÿe!lO/ÐcXôÂïV±±Šý»õííúøóézÁxÚˆæ˜5(@ñT§ý¤l\ÆyºÎ¯^‹Q8ãv}Û¬…͇½9­òÀ°MÎó*{ô±JÅé4:¼©µž”ÑgF íYëÊCš6T’ÂiJ6úû4o)m­?¥‰º0©Ø(¢…Vì¼½OdSð!þ%×LM0B°·i ð¥PµsýB3y²6!…!%k«c»âô…0ÛpõWZ%ë¢ÎK44íèC®ºX“¤·a ¶7œ£ºìïmÒµAÊrÓHèï·uØ5>kõEJ쿾ŽC˜ ë­EDíNVbØça~ú†:,¥cu˜Öf æ@FõˆÉ¹ã£ðßZ:ôÒŸ(pÉ>;Tà•¨µ›œ6{Äž™Â™ÅÍh>Z»aÔq#C‚7ù~}ß7 †A4.‰›Œ§ˆÛ¿q³ÂÀœlƒ~K,zÒw< ØCÁj@»xtB1ZåÄ\šü:÷çä·±‰´]ì}0£¤œTi”Ððnô7lŽ……OD 7™Æ'r¸!À‘Éa†À#“×+ë߯o‡çH ”!3‘‹|ðSp­È{?iÍ§Š¼-Æy9^@ù‡/“s„«BK&è”›UqŸ«ŒÌt”Xïàˆó‡Ê·´Fý!Ø{VA~#ïÉéwøØc6 TÕÇÛÄ7Ò»-ðAìø@šÕîFÖ‚ä:‘O O‚t¡ï¨j¬²ˆ4®øˆ€-&ö2Sö»þ(QÃ-­/ûŸ <¾aÒÍ¢µ€éîBUüàÿøÕÕÁ:>™V­ÕCHÒá ÑŠsGh‡ J6_Ý2[p†P œý9€u]¥sIWYø¶#œ1•8ãZP2Àt¥ƒñ·È¨1z%)’§,ga*lÉ”Ò(Q¡ôÂæmI2 J¨B¬³8lØ™!MÜG«„߉ôÞ)oz‚$q–j±HÊ´\Œµº‚ž2íM$R¯*t‰”v9«@C*cwO„1Á `w>#ZJPWx²‰)z«òûò:µÐ6š4•ˆ½…Y ƒ/? gä&/u}¤àzå œ[ϲóÿß=J ebùö V Üf`÷©ˆ ©N"Ï9}0d‚æ>„ÇtyâH¾ÖAX5})ŒY@Wº„œ”ïó"U•)_ȇ®]…–“S}oãî§ÔÔ{[HÕÜÓ_ÝD#PÚÓòoòcÀö¹©gc¾ÎÌh t«4‘á¶{Læ”(73îjKݧO}, o=;›©‰a’kUˆXëôeÿ˜´ó9Ï‹¦âušwˆ³|†ùþ¤³“MšŸDÜffMž²ñ&÷)Be[à˜ƒ–äFcÎÅP¬+'mÁ!\Úœ)'¹¸„2ùy·i3âî¹vÚ´®vWI.FIüý´ŠÃ ÁRUR߀ÂW%Õ‘¤ÕH‹Øz?ãó‡:J§¥„í˜!Kº˜ž‚hÒqRlÖ’T¸;ŠIÑÒÂñ)žMZp¢‘| &lýƒÓÂËùö~=-?Wñd´²„Ç»úd¥ÇçÇ­M˜h†ú2ß$æ® r/å VÖÊw?ÄK‰±ÔËÏOõ ŒHo˜4IßX‰1-þL}@ê0 .'Â,þD¯£ t–Áé™u,>ÛíÎÀ39§`.úD.g$…®½´D}…+ûC _ZܥƻDüô–7~‡Ï †É26yt&±agRüý[¶Î7Éó…¾ëÄ{ŸßKéºÁ„aQ¨Ë›?^Üüë_±¢²˜¬{_2|WÆg³“†¹ ¹0éÉô¤pN‹Å¾Ôƒãä÷[­@Á ØŠí´gê¥H{ÆI=:ryþDΦgÙØ1~sЖèj­ /ݦyªš‚ÕÕG" b6Øè¼dx2Ïæ«â]Údb²”}®±[†¼óÿv­ãp%»‰›_ˆŸ "ÍÍ”W YÔ¾è$ŸÖÚóˆÎ(õYvs:zZÌ8èSçüƒµ¥u 啬€¢ž¼ö£`‡J˜í1ådTäà´MGDmO(=ávžYŒ"å3:GɬN© •ˆoËéc6…-‘°Wwc=Ü)QËå¹BÞ,ô/=«IXÔ$Œf¾¬+Q¦pûrža{Ü·ŠF±î}ä30GNz÷ ðø ±õÇß3ab®”Y€Ò“SÃúqÀ¥›&D8M{±vn+,6°6V{»<ÞZ{ݘXºC±ƒ(KK‚‰Ééì?¯:¼-ùh©0¬ùÀ™iëcX9¦ës?TÇzË+wvâdßVã4ÿPŽ]œÐ…–òèظ8IÎãÝ!¶¯jO‚€äwÛ±æ¯!='x ÜÌ0 q‘ºÝOÀ®ê;òd“ÍË-O¡~¦SVõÒ黦§AÜ?.9^$ Ÿôâ¾Â³ƒö6‘7F;;Ê»Ïë •+|R@ GRÊ!³š+§•zÄÈ|é Ë4žœ‚zË<þvÅš]n²ïɹA%ÌU"÷u•B”üÁèßXÊ‹yǼ>©ø<×^Á`V]”´zpyH¥ÄÔñ^f §•«k´M¼‹ð_ØÃ!ÔBw‹^&•‘FE/N£³¸™qP§êHÀ^ 2¨®¼øH0{ GmDd+*-ÁR~ÿ# ò(7¨¶ÕpXôY²p‚%èM¶Ì׌tPÒ£èSs€JÞ,¦Óû4´òºÃ(MöN}qND¦÷óô6†nØŽ¬N¥yeÜeoÚ çe† 0-ËFJŒ*Í8m…Ö:IÍu‚à}êCVe}¯íÈ{B†Ø*çG¨ÏY‹5°CƒòUšiˆ¾s.5ÉŽµÉ }ÛêLɯU|´ÜNm"kD-—V¶Öå>"ŒJ›¼t,C;A— ôuFaRà•³x–%^’ÃS–›¿yóuàÊaX,¯T³á•–s%=¾[ßwo×ÈÖ¯ËÛWOÖI“(Âþf‰qPº$WŒÒÞþÁŸÒ¨C(ƒ]¿0ÆùÐlfrȵՎs‡›>œÙ¬åíƒ!#…e™¼Kß›» ?©àw˜/pT¦ié ((Zø¹\^G5!w.Àü‚'ºVú†ŸÎð@ivÃ!“SúÏ×yK„ä(¦-uåÄ>.öñ—~NÜ×4£êZ“A&nÇp\O´šqÚ)"ˆº'Œ”ðHn[bxw)¿ÈÄ:[iùΑ(Àõýߨ"§ôøJ†¹s--ÑÂ_ïÜø qÞŸ "Bç:n.wÒŒ?« k‡ÆQk&غ¥4‹F´Ö[’°Õ¬)²lÛ¶¥Áëµ¢H®‚€Ôb ‹ÉÖ-«+ÊXÏu Xžðø–‹ä4 ÑÌ1À2˧Ò~´}QUºÙ»yK}ráu5×ç ÔLÝÙ!çÛŽUÃJÑ´G¬.G ”Þ¾u9 u8&æ«D)mêH;Î@ö~J•Nœnîãí<Ó5FÖXK‡œ]\†sÐä., çl?>ã@S=E³cé ;lå Ý8O³ ާI—gÃŒuÈ©ÙbÊ¢äûVZxVjÊÒ Õ1Y§‚$BÁ|=Ái!1¯ùq –:ºF á¤U»Ùëżá~Éû¹¦Cñ­s¹ñKH*îmj+}\÷3™œ‰ gË·™¨5\#Ì‹s”ý#*ÿä¼$š>0¹O+(£|ÈLÊø\üdJÓþ!½í'R—„€5ÌžKO¬ƒ€­ÙìOK+ÍþŠ¿£›„TÇ9xè`Cýh,!êÔëÃJÇŽê`õ¿BÚô‚h5ç½OcÄ­=æ²›•º³ÛÑjh¢´ë© ‡r8#Ù£ª> ·ZP#k›ëúw©kЫçµu@ó8¬+awà $0C‡=ùœ7l´I™¾¦Q e’ŠXµ±Äh“mÄÔ šÉ›ßò^m½åÅ•'Ìöרã$wC—ZlƒglÂcjД9ˆ¢QG±Ò2^…åÂ×XÖaùÞ·Ê:pJ¦…%øÚé Ÿ²"ÆØÎÝšIÃ%&gý¹’CrÒàD¯xÒH— u.ŠÁ[:éNMe9ÏÞhS›Ë¯F…eím{ÔËfÿ¼˜RD 5ÑUt#3âG¨ )k#èg? €×¦:4Çú€6³ˆäã]1ŒÓQF±éÁ RJйòMr0­2l 9~Ì äÏåz$F#óÿ#Oæ:Ó85ãG°¬IóÛrIpHÈ gЇ4¤Mˆ69Öî‰|´ð¦WËr`Ò ØÈÍœ±9.<'d;«Rx9’±61­¦4Þ{…=Úw wà›(€vјéRgm141Rî3ÓQ$û%gsÖLLJYÐõò¬çDŠÜŽ“Ì Ø“¤Ù49ìö‚Öܪ؎b¥ÁW>†µèòz¤_[¿˜÷B5øôÚ–ôÏT2˜Õ×»bÃ/¸å,3Å!†x2F!·}øÅ=^ü”Õ—ô)\biµttUºñ„) ª°âSìH|•&À-›Ùø°´|ìÎÒ%W"Üôrè\íœ.ú‹îX¡ ˜±}ý [àÍ{µfHo7ÝRÔµ>þ.RìÚø#oú8Á&!Ø ð€pû­Š¯´®BïpiÕ|m Öóhæ›j›Dl3LHü„š?’ÓåØtÜ«mQ_҈Ѽܦ ‘—Âò>m‡ñ,Æ/dFáÀË“L÷ûÆÓÌ€ÚÀ`b“-SòAt‡#º¦¤öm^ŽÛ’Ô¤ÉéKf÷Sæ0S¶ÑY\qÐá0ëc}æÎ¬9cÕbBƒGðV¶´D’¥09»¹«âœ¸1=3æ¤\êÇ1cž P¢ÁgF§Ä4‡%pãk@JoÁL†RÆFI±·ûè n@÷´Võï°¤Š:•°ªNühÕ-‰P•Ýx-Ð# ZØII¨W5]ÈT:^Ðij7®Å¿Oâ¯W|Eƒ D©s¤ÐÕ”úMÝÀ'm×+IG¥$üy jÖ_r­n˜pÆÅktyÔg6™­Ì'bW9’Ì‘r­œ MaöL˜£ ³õZ˜ý[|-½¶AñBföøwöa*µ¦í©Ú[úí(ªº6–×b§E)Lõý”D‹ü~¥%c©EQsMÕÒ/×Nr!¸OÙ\ÞL^«¢ñ|m£€ ûqýŽ.{Ò^¼j›øì zöFD6^/… +²ÿÌŒã$=oÍéÝ?Ù¯yÃ4»C’3fƦ²ƒ Ѿ)áM™>ã"¡:ÑÎcȦ<+9ëqûé ,‚”í²Q.VÚ)Mj»ê“­œ†w?%Zh9¾új_Å”L±œ¹¯÷gB×YEЄ|šP9¾¦Ä¸ÔE¨®$=†¾~·ÄÖÆÅgØ—lmËe…güe‘ùç‡ÒDÏR4:%—þ„ÌØKŠYZv£™ÉYª‡*ƒ¶Ä‹,Xõb¢b”QÙñàfœ­F° .ùó{9€eîMÕ~J„°®ùÕ{ZÑÿ&¸ ue«¤Š¿í,GÜQ&¤Pܲ…¾òF'¿&˜ ‘åZ`Óxxžãú\X"ì‡×Ê퓀-`Ý”¼¥Žsö÷Ä>I¥d 9þ},A+áäö{ ÊI¥+UNüQ–s^íŸIæÃ¾2•å*Äù¬Ñ!È×зc·o.ÝJa™iiE}E®SiÇkH@R²‚Ѽ˜“H\_WP–Qe”çðÈ´A4‹Y4µåøg‚ŠcÔ­¹Q›kÍ}lx ´>ý©ëæk¢+S kUÅW9?ð—xÔð¦ÂÑù±œ¯Ó::U\ZO ™ÑÆl8,“òë£Xñ»ßß\üþü?qîQendstream endobj 906 0 obj 5767 endobj 910 0 obj <> stream xœÍ]Ys·±~g¥êþVîËaJœ`_œ'Ûñµ“ÊâHŒ“Tt(Ò’\&)EÔbÝ_»Á æÌY(»üàÑk/_7º{þsÊ~Êð¿ñÿW·'¿}lO_ÜŸ°Ó'ÿ9áá§ãÿ®nO¿¸€œŸúÁaÔéÅó“øK~Ê…¬µ§þϬ<½¸=ù÷†Ÿ±AIi•ß gçš±Á ¹ùÇ™3RlÞœsxRÖn~8;gƒ”Ú »y‹ÏJ .üæû³sÅìàÓKæ™Ü¼ÄgmµsbjÀÄæ*41Ì2³yuv.ì s›ëºµé;h1MîyìÃZ³}¾¹…2x'Xx= Ùûé8Ç9NE170xl,þ¥6÷øl­’Ö½ßÄöŽÃûçá"n¬1ºt›ÿÁíäŠ{Sô>î²ö>unüN÷ÌKèÁqÜİo\·Ö`¹¤ûF»7È¿¹7~GgJæA–Ž·ÇÐÜn>œýïÅO„õƒHa×@MdàóØ­dÖ§‘šԯ†žÇõÁ pLt­tl˜’â°g®E;VÚD;ú/&𻋳Rõ8åsaÌà¼>=çbÐÊð8õЧ‘èa_•ój1Æ3˜˜JRÓ®1¿ùˆ»=XºAïÈ€obS{uéN¯¹ÀQ¸<ƒÙk˜S fõæéÓ<«ŸbÌ;ŽMò§–›_b‰ºùCX¸fJnîâ sKü™VƒçðÛDzSŽÃ¯\"¥‘Köwz|†Jp8ëûüö*?¾Êo› ^N=ÄI”²R¥qïÓ$èÖÍNâ–¹ªYF( è±4˜% =諃d*¦¿üˆ’ZK˜Ô$ |‹NÉ(¡çËÜ„4‰¼"òVäàû¸-¿"+º!+êðMë´ü‘Mûü>œSÚn^ä£z“ß^æÇ×ÕY†·8ÄW';QÓ§@;~ åÅÀÍ©Z¬>½=áTŸ¶Ó››“']*Û:º”ûEcEÔ¡÷yrßçÉ‘y^ÖkªßRÍ=LkR¹A8²!Qîú=ÀK_.ä§<ùqÈ~³‡ñz6A¶øQÁ¸³áñu~¼Ìoª·qMo[=ä…€Ž$]ÈÃÁòCÖ†M› Â,>6faœ*Ù@YtÖì=°•Í`] ¯9Ô’kæ*¿}•ïj’ooë¶uƒwùíM=ZÝ/9¹Û|\df«y« î SÈÍ[ºZ˜¿ÝEw4/!Õ»¶:¢æ,EqD=€&Õ¤”Þ*µÒô±µ(ô‡¶í`o „@±Õ/°o€ï 8 Pk:JÏËÿ&ö¡ÄíàÜ Øh(åÑy:™ˆ†A`4аâ€ä—/Ì8Z(ò@0¬¸f*ËG1Œ'xYþ}éáÉÂýMuµ•Ðt  y«’/ f'H/âÒ>J‚Gk^voÐHßÔÕYDu?Cœè8¦,×Áõ=Ži€9œ@Ó ª9ÐâäJýng%DL¾êØ<9@§ÄǦNÙü³'ãÏÓJ üm€¶ý54­cPÆJQ¨@?Kí©8ê‰íëÀ; ”–uõý"1Ó‚´4º rÞ we ¬ûصw¦)”®)y\×?Õ€6t}oÃLÒ5l¼£‹÷u¯£•a9¯…Uè̈®Ô(ù g ZtÁn1xÏ+»ß:cÚÒ†Jl*…{"ö:ÎÚy$œ2èœøN¶VvîûØÄº®³ƒðòe´3=ü-[N=A–ÁiÓ÷žKõÚV·ds¡¶\SÔfJ{UÜÂOb’¯s£hR¢ Ï$æEÿø·ÜÌþ†›6è™qÿ’/&aÓâVî‡éf÷Ež[‰JŠSl©„’…Gi+`€Ä’aË9ΆqÀ\áBt;wE½£6O7d˜žË$é _1ÌÔ€2Á«pE/y«žž‘aQè ójFW:^TÌP²á·"Áu–Û¯òã»üø,?ÞT’¿{È’ƒ É@»^š—%"›ãÌeIÂH"«1ü§«î_æ¼C“"(ouêÔâ=ÑU浆_3!¹É›ù§“‹ßü;xC­ ¿Nݸ’œhEãv?Ýb'Š©ßgaùU~ü"?þ=?~ݦïŠj!Ïlë öŸ'°Ÿ=y~×šÆæq~ü„µ ÆlO«œ³ÈÆðöm«‡iÀÍ~0ÇtoO¸¸³Ó›=Öü"«·5¸ÞÌ«ÑLbiïü0‹xñèá}Âbv†ì¡À´*aØCiU±‡j0·ŽÉ`y’a¶ÃË€@XøÞ2jRØ+9LãŵVk,¹Ê÷nß„¡IÌÍðh :CLtÓœ~óâE˜~÷kª¼{«°L×)§íìÒŨuYyZWx½*¤¡ºþ‰“ª¯QÈs@‰•Ô¹&§æz™^_—ÏG¼.•¤×e*F'¬²v`°AV±ý½4jòÓfRÓº¶|Žïí A@JnǬ\t›Z3½Ù'.^U„`©Ÿ(¡TŒÉBP)‚¶=`! l×]Èá2#`Ϋ”e4ì!Ö…ØÓRVXÄÀL»‡ÞÕ6ñ“‡9>ÒGœàÎÄ' òeü ñ ù1‡ôQUúÙg¾À÷˜Œ[™…øc¦ 8Ùƒõí»*å1J8kQ]îP?%ÈÊÁ0ß3²Ñ» ”]†XRÅ(º¦Ó]IO`má _QJ¥ŒÀ®ýÊØVÔƒL÷¨âô Ìã8^Ü6ÎhŸ »6ø:?>Îöy~ûm~ü¦&×ðøUÕvÖiKœ¨„´¿j’ë7ù‘Ä¥þ«ý[âèÜ[rÆÕ,iŒѠΘ1-eJC—“QKvO…ÆáYdu¼ÒÜÔ—úÉU¨—Áõ`ÕôfŸz-oì–ýéêeà’…iC©‡ý‚õ2xì¡^È‚BÛ’ëݾö“»ƒàx¿·tk‚þ1=ƒß»èõÀ9ß Òêdsô‚¤¶åpˆBÈ÷"qú·ùô>\%rÞçÿD±æã*Á6•“ûp–dJ~WUù™„A be€ÝêgEßÅýg òzX„ˆô ¸$"é;"ЃC ÷IDÈ2Æ‘ý—‘€Òâ­¼¢¹AåÕµtâÛ倯™éSxàiìA·üè¿ÅëŒP:@ï_:1U_u#» gøw¡~¦„³P¦AÈÃÎpŸ¼ÛÄœ…¡üï[È Åç, õy³‡:ÓuÆ`݌ߙWMàöLýeÜÖ,ç‚þ¥èšFz–µŸº\ {ÆÕI9óâSue¥EŒ‚Ñ3¢¶2%Ö|(hæ.6•ªU5$:Òªp€¦+qq&ö—7àOóþ;„”újŠ…öÆ5Ó7qEÞ«ÚV‰31k³€q¹Œx°C%»qÄ£•*‹’Q+ú¦œ@èÔòû3 Ò¯U;@ùÝlÈé^ ûP>Fñ ,·‘øyÜãã”.Hè”’õ›ØÞî kÃOË›Lî|ž&TîoOA;¾ meÑ`tt W¾:…·ö{'¦¡Õ#Ä®5Oú¦ðƒIÙûZ\†·uYŒY/›?#£=[D¼K2â=ÌYªv]Ü@ 4F“˜té{âúŽ •äež—Ùgt›r1 1úÅa×þÃÐÓôÝPŽ–©ÍÅ™“˜ÃÚðfêuÙE,4U†Å >žŸ÷*ÆÎÑ0œ\[9:þ®Yᱡؚb™ö8Þdi-Šˆ¤BCPȶ ½pS$4_W”|\ÿºĹX‰·£kÍ€)ps,{…Ã&®MÐ\‰B‹ô—zfz†Ú`…æè¦ÛQ¸Eòžg·ˆãTKèÔµªBÿ0·(úcÛp„'Ž„&pXg3Â8uEvDpÚ…²éc½˜—‰"ËÛÔ4àŠžWpJ¥|C$­Sµ‹Ù?ŠM8üð8›Ùµ5fĈ4euà‡´:y‰Èß÷)uÙ~‰XhhI!$Ï^$õqF_i;­ëX)]‚ÙFˆ¹£çzô牒!Ëý®1o3¹3Ä•­K ¢7Ñ…úÿ1ÖÒ¥0.lЉysꫪ ³Lês.uƼ’æ#âý°áýo)-ñ³öêö!fFÞ÷ycƬ`”5¤Ep×·¬GK ¶-fû(‰åò’Nfòbäy<Yf²ÅÏã JM𗌬ÿžAëŸòÛüø ^/¼0‹7Oa™7–Y²XøDõË,YŒ1þyœ^šÅx×"7Ã&©½#*@ Bíê„þ|aÄÙLœZµ³9±µHy›kiô¬4–o é Ñ{³:‚ØA©ŽfØK®ñ×§AA³ÁÚ³6Y{FëE†›1àÛ)_^w£lâ*”é;°$—ÁpØJ¢—c[Å»Ô ÖsML ã:ñîìõY³.˛س‘Û£¾Ã¼aë<Ên©ÞHؘOÌqNÒzikúè#:´Ì ˜#·cá€rô^°îãkÑŒõ¹Ýµ)¹³;S%iœE©FªlG‰¦ê"’…³ wh%iÈñY(y2×ÅÝ:x¥üÆë~¡×–¶‹ÍgEORöÕ ó`MU®dÞìœÌ1q§üÊÑ¥ü£ð•ëÆ»w¥H„ôn¡6_ŒÃP½RcŸÕ,eMAPxwÍeÌæÂ/aºú¯i„fr)>º Á<ÉÄ{Q±a|ûy³Á·Ís½Î_64£ [ ‚ ¥‚>ÃMÃԺŪðջʾ¤f¥¢‘@‘V›ÅÚpa]´S¶SxZÔ|„¯YY‘ ©&*gø1‰´î:ø†Àä~M?,veù) & ×Ó¸:ÛÍy¥5ô=u—¶ËËöíXï„Fâ袀1™ôÜ¡?ÅÞ­˜ý4¼n»4š®#üfpx%â; \ e "áNÔ%–BŸ;_!œ{ ôB¹ã|þ;ËØFnçò^Kã Š/¾2‘j¾']åS7Qéu²Þ0â2üÃ&„²ì›ð1¶n9çÚz '5S0ÖnK^MsZ§`¶¸:S9Ϲ&(¬”(N1Œ= AŒ#…«6eJyYìd»¤èAŒÄk=œÃç2M :1E·mÍ,£G³}ɵE÷œþ»<ý–=O:1„î¯GŸÿš‰Ûî‹Êƒó²vu`;›\¡ê³è&–nEÄ«9šv ýÙuêuŒÚì Ô-1_˜äî³=mùnù€F¾»oKcE…ÕmD(ð‹{žW>Ò_0.”îî F%YKH,|'zÙ]J0jw4KŸz]U98~xVý=;8°ýlV{Ue.Ü£¸¯öpn„/0vWµâ(L©”@SQÅý×èu/?ãT—×Õ]P0ý¯L×îUªóˆJÃõKGcôWÌÕùƒòžœ‹¨ÈBx›ÇOö¼"{ÔIñ‡uTŶ:Ø„‚©ãu7‹XÀl@’PÔfO߬ˆ‚¹ô¬(ž%¹C«œ”5 ŸØè@š^“Ò(±ð‰óF6+ŸHüB§& ®ÀÊwwH-èál`7שŠ1î±{ÑmBhBsX¾ dJZ<#t_}í,®•é{çÝþŽA5‹ËÒ«*{³‡ÒÓŽ˜ÏÎHx1ùG`V[X‹ÎŽêz+>Ú׋´é£ôëÌJt5C‡ê^¦‚‘|–ÑáT."XË≆í£¡ÞúмT3q€IE³²øÑ/ôÚ«ñ»%Ùª¹=:dl¹ü–$Amx¦æa¼äÛ3á]ç¿ÿ®40æ@ÆøÉX–Wü™v+ùY­®#&ÌnëÝÐôåÈAÜô?HÐÉÔëUWÄ/`÷*à‡3¨âg—Ž U!â ‡X†/“Ä}㹹ͼ ¦ô·“ÿ ªÙžendstream endobj 911 0 obj 6526 endobj 915 0 obj <> stream xœÍ=ÉrÇ‘wÌDøp|˜0Zµ/òIÒȶ&d,Á‡ …$À-ÄÍ)Š?™YÕÝY[¿¶¡V£º*++÷ÌÊ÷¯S1ÉSÿä_¾8ùâGúäúDœ>9ù׉¤?žæ]¾8ýú¸Ó8E§œ9½x|’¾”§Ò„ÉÀ+¯ô$¼>½xqòóágb2Z{¹øøTKþ)=†Ÿ_\ÁàŸ`°ÔÁX¸ Çè‚:ü¸¾ýª;à‡î€×_­[Z›ÕêÏh€QRë´ YlÃÃÆµUó6¾<;7FM1ÚÃõÙ¹˜¼‡)Âá->+¢Ð‡7gçrÎÆxx@rjþ»Ö֥砬= rŠ>¸Ã«uä„–‡g8Lê•?¼Ägëm€-@{°N’‡k£åá’†8á…ËÐ¥ç?ÂBˆª˜å)[éQ‚E Ï÷Ò €Þ¾fK>MxÔRU;›¿»JƒƒÖº€)ADæÝkåݼþçÆ9/`j`âø$ÝЗ¯ÎΕŸlЖ¯dq>ÓÁ¹„S2N&rxxãa#ŽïÜX5)c‹“à«æS1Ú/§¢¤Š3ADpU ’I_±Yø9ó³å3ò•.{Íó ã_´@«š!µüJû´²Ù~§-3m_ZyøÆê{ç†GË×àC~_ÁxÍ6¿0Ñ` ¾©íÍÂ/Xåï‘~¬™‚—wÏãi‡´+$+ågÁÏÒeFè1G,hûQƳ6|Äãô6U0‡˜‘ Ñó¼2ѳµ™ž[¼s¾4Þó·{¸k@œpAÊhm&'lñå+|­§ Kùôª¿>—-ïØ&*Xp!<î qF°Äp+2FÀ£4ùð!ÚÍ•Ø,‘RFjãËL+Õ§sý¡t€s“ižÎužZƒŠ©·/þI æ1tx^ÕDogÜz ŸQE…OœDÃþ[}CË\á9ñŸì5_²3¡ŠªÎyì9ãõ+†Üë´’+¥Ãó£4@9»I°¼ŒÅ|.ªË¹»²Ÿ€‚ÿ’Åy>NË÷@òœÉ®Yk•r@AÏŠùñh’)Ê]0%Ù'+Í,»p#Ýý˜ÒƒUz½cß—â‹ft¦£:aJ¡8ðY8ÎUù8˽u)÷øîÞ OS‡l½EÕÌ6Óµ/–Ä9ÀÈ»;R‚ u)§·>n“AbŽêÚÛI|á¿@†¿_%ÎHasø*ÝŒˆEX÷ ¿NÕ.m(..²¤«µØÞ;vÏK qF݆A@,á*ï™%ø|#“Œ“-£æÚ G KFp’€ãTa².¸žIhá¿f–Àí'žÈ`y‚ã7)FéJªä)¹2 lAÐFV£âѳ+ k¢ÐæçÚÚ´ãSÎëii]múâ§N!½£(´ÒÁ$øqdI8;qôÛØuàcš‰Cþ®]mF°v`ãdìË4ÂY N@°2XŽîeš«´1kC%íñ-8·œ‹9-¾LøòÆ æŠÓ ²+ØhÆyŸÕqBðSÔ 'ü ZéY–»hüB¡D•oÓ&ªÊ´¥ÝÈ­µç95ç¥5ÿi,[‘é|GÎÙ-ƒ³–s0K%”^&3 [¥¿[OŽ? ˜óµ*‰´Þ¶}Šû×$~rnWÜå‚—kÚžà•hx©Îâ]ù%¤Å‰óÎe’A†¢éÄlá—]§ÍhSZ-#oþ*r%¬L²q® Ppƒ™ :xƒ¤í¶±C¤+Xc:KáJë(Ý ÜÓ¹!~MÀA ,ÊíØ³;JÌ#ßîj]åî£ÚŠIVä‘”šrRÛö êX ½Ò ‹™?؈?ƒ`ÐvóÙåÌãZs ƃœ7²`…ä?w8³,'%+mQz¿ø±eÓøW@7ÂÄÊiè÷4äVCD`N‘¡sïšFÀ¶+WSL6}y\ìó/¯àB™Æ„ítµîŠ+ÈÂ0›ëC "œæ †”3^ Pí\‚jóGÞ´Èýê–y$W¾´=|G§nœèÛ ¤‹¤4Àm*ECȵ_Û¸W3rÕb*†¢^:ňÉÅU÷üò^ÁÔÿ\¿ï=ö²çZ$ªbŒAÐgEP2i'çƒü4‰zË=ÿ½>þïúøÏõñëõñû%ÑsøvyÛÃNðEÎg`<1.ê¢%N¡ÄI7•à©ÓQ'u¾ªÆIšáä»õñï½y»i. ²k÷Ó0[´‡8Ë ôž˜°(õ89 Q×n˜üXUYIð”€ïº•‹ òž”þŽ8W•œž”æ˜Œà ‚V2X%þ´œ‚C7RavIÇÙA•….ç{çz y80ó(ž­­qä·Ö~4€$¥®'ékk²4)ºë´> ÆV¶T±Ø. e?}ÓýŒÁ°-E€êOŸ—¥÷Þ©[ñŸ¨=xMnî&O)ÅXº¾Ì°KPÛà c: 03`f) ¼a*Ç~”UeöÖV¢¶í9q{9.„ ÎñSã>Ngz<ù™ÔÃÑÚˆZ¤þrLeÆÏ¬?0*t”ãêO,8}v0ða¬sr‰Šl7D2s 1nä²rû°ãÜ•>Q ¹ºÄ"„½qUàetdsBIQ*P2¡ܯÉb]1®xnÖHƒÕ¦.[<•Ô%rÒÎý›2Ý–š×Ÿ‘Õš ³°hÅTf½®‹I!&$§oñ[eÀŽÖ·4ÊJÌ1o¹…ʦ*ßSS¯V]±¡Q0ìQ^2˜Ê@ÃUlؤôÙTEqvRz¡8ZÞIpÍiÇN+¬zˆÄ¡•DüÏ>JiªDSÞkyFhMEG%bP@ì’Õ–,Á(¶K¯"ÃÊ`úKm ºda n-öË>$„aÕò•–ã€Æ>éAg»§9Ki\(HÛIÖàí$kÈéçÁ].É™ÌæÞÞ¯óIÂÜZ,¬\ˆì³š¶ØöH ÿšž)޵%ªaJíBí·À[ ëí(*~¨>ZõÈ2JEaD #Áã‚Q ÜJR›ÓžN ©dD¼ÍžÒi›géòy@ >Ÿk Žyí£UKÀf§Ðå †Ä'¼NDà¼ìi¢÷,¤í 馤IóéZ´® À`F ìIËÕ!Wm&SåpÛ`;ÌÓÈœeø‘h‘CgQ.!'f9ÁO}ʹ5‹c'm=£ò°Yi7¼-¥JŽåô OÝÙjo#Eòrxog vÖáàFÇüýØ(‘8‚6<Ê©qÔTfQ)è¹”\#H©‚BNÁê™è.[1’â%;¬ªLˆU5m…=›É[¡)+rq’ª¶_XBóYIÒ"ÁÏr{œ|ªª]°¨W˜Q…M¦«Gg#ÖŽJ‰:zB/1M’£,·[µžhtCFœ?¿hÍç­ä ¯*L$a˜1¬=:8/¯œªší ´‹3°Ë´²$+àü&Ôç©¥ÆàÔÂ8‰ÞÝ4-ipÕÏ8IW.î¡Úß¡áfö̼y!’ÎöF±@29à.QhÓw~ö¸²Ê(8îx&.=1q1—RúÑY qáö ·¾ä*œÍ¹FC‡QbEZQ`Àý»F²8®¶=9Aê,Hqƒ9#ÃV0¢<ˆÒ¸Ñàz)Í|%+ÊŒ¿‡ëÛ7ë#³ËÞ¬Z» Î/NîH¼áˆ¶˜¤ûfË›°Å0ßœfOÞ7¶èÁj3¾^ß>í€iȧN¼÷%ýmà4`”¦V8_uá¼êZãlÀ´>^nšà¨p„^ìK2 ,Šà] ¦Õ[_ |;S©ý#|­·Å-ͧn|»O‡™»íÛ}=´O"ûIS0y[vAŒ»ÇZxReñ©Q÷•á )ksçFJ2-À$Ó[¢U¼ÕÍ= øNK×9§µâˆÐSY;€ËÛ]w”¨ò¶\›é…êŽ_wÚ¸¬‚KJwWñ¥ñ¥qõ*c[º;½ƒ†ˆÖ;±•Ê<âi–[Vy"uÆ u2ÞQ|“ßÄ)ÃKàÛÍJï2 “a+3N·»K×ç”:vv¾³äœØ,GnÀv) Eî½È+LxÅ»#Ö*þðÅñTÊ)’Èy 'bÀm‚ß8žt"’>²Rrø3MfÀŽ“þ``7RY Ã÷´1…oŸ±II/g’•ÁéÂ'„b¦j#<üþ²ò$•ä™ à 1¡Ë§e”ó÷}`1¢oؓʀ&u°Ñ™d1¤IC뤵P ˆ]£Áüäk_¥ …黀^u}CÐIg\‰ƒßÎ4†´„/`f«¼?0µ¡`ĺŸî×dI+aÃŒjTÙZ…)©O/¾?¹ø¯ŸS‚1§eiõ@®1ݱ3lnü¤×fóöXáÓª¬7󜃮ÓäÞÔªçSbÓÕIÀòh_ð›Õ HU x{Y‰ßøÄË3÷Þ¿IS;§{Y˜l@æ d­"¦R -øÚ?³)]ÚùŸ¿ä=˲Ö{”û¨p‹³KyÔltCå2©£¨)Þ¹V¿Z廕Fã\‚±Žñ–™×2À·Û>¤Ææô˜}Hã æUé)]h\™”tÄ.#“ÍçÜ|©Ì›A†'"xÊ«5P{ƒÙ~X¹SëWCÀ/"ÖÊ—Pãdì ƒ pËd2ÐU`UÖfÄ&ÂÉ[\ÉëiÙ””tÁêe—{c€8ØÇ[ÞCô£3“Z45U9WÙ,“È–ÌI…ÆtŒM ¼.œ’Qv¹ps¨RÔ-özJžÑîCQ^Ç=œº—É xYH7ŠÓì´æê³nZ8Ü ¾„…²I¡z7 O§%`%…—$ 6dÆWÚÅŽh ×7É F–|InÎ( ^“܇„Pi)¼ÕìЫ{›+ÕåÑ èöÃ*ÎÇat£5ðÓ#x€¸`\ŽDG«‘ã•À+“,p&|¿&› ¦±ŽsE'ûM¬×J…æò§à¡‰”À™G¤ €0G²ÒtÖ%ÛÈÄɯӇV‘^åE¸ftotŽ5”" gÃ~Sƒ+«õuAB¼\ÅÖMá\‹ÈkW:XjâñiõÂ-ÑNx¡àÆ%REvŠ|U÷dgtÔž”#ŽE+âåð‚·Ús¾¢§²7q/7º]5%1Âìză>EÕmˆye”`ß]i NSð›1J‹¤Q#[nÐÑãrUfÕùY kmëóC£º§¿¢™”’vhÂ’Êz þ7ë)zݤABtº«¨4‘2[Ñl½®@F÷Èax÷wGÝW7<45²Ò:ÊÑ9âÙyc-N^º]Œ€3`¥óŽªNC£FAWyïÆ•TOÍŒ”EIò •EíqÛõ/ÍïñˆÎ%n[ÖׇîÐ,¢Ç#f`<š‚ÚP»é^ÑÇlb¿@£Æf`eµãu‡„€×¥WÔg¢‹ruS`t’r»Ã¸«žõV|±ÀuÀµ²{•fq ,-öZR´9 N2d>Mx7 H°ž“õÍjœWx_gI©ìrm¶C¯‹¸tªf1“·L¥C2{]¬¸¦¾È]zÞ]µc`P¬¸c`ÔW…:õ=ÛO6^OÂTJ‡ÑÆ}¥!BÄjºnøyžÐŒ'¬NQpì&ãâjT¤“[ÿS;´Ù6ø—fSü-#ÕÇøo¬n× 'D† "Q&6-[H³ò-Òyņ°Bò@áîø¡êÎtQ›ÕäÁžöí-‹ fé³ÿܼOÑÖeÓ^õœS%såR˜¨lP†ƒ•Õ'c(¯}$ªROÍl©âè+cyF_ÚÈIš¶C$®Æi.g§x' /ŠŸkÊ#t•ó”g‘.d7ÛA!ÊT)(¡*Æôz#Î$OVP£_s7ð‹á깡MÄ$ÏâWlK&üoÞ÷ܲgðjÕ#àþ"¼u“Þ=iÄ7GG¥³üÓ±:e酪¢Žáô\YàF€@þ?¬ªSQÔT§L žå ?íÓÀˆ±®æY\Ï•÷KÿÞij8C—-'S6nuj쉒~[ ŸJG+ãÁAE uG٨׋©þ!$BÝ;ßbt«’qî^²>8·®¤ð-uª”Þϓ֓¥K» ¸Y Êžf’è‡owñw@a>)/Jðß‹¿ÿn6åM²°:níõèkáåÁ² Õ¨~xÜÎÁ`åºñ£Ð5W •TdHSèÍÀ>n »“݆±p!Ëu®-4l2ÒX3P¥ž­nK×5€ÊÙ)X¹æ5—ò½·ÕcSøåúøEõ˜Æ¾?[ ¾þã´>^®ºoŸ­Ï»Ó²p.ÄO«ƒÒKeèËæÇëÛWë#ÛTSqJkc†¹ž÷z}Ë\¯¦î€—Ýý£y±¢{½ýÔ­ŒÄÈRÌÜ«§1˜ÏV)“Gƒíî¯Mß|C¤$eHQ*t¸­òY Jç1›ŠCŒRj®qqöXá>ëq ¢r«% Ja9—p|—J£¼Æì+» õ!Õœûªïð«;£ä†ëaûÔ穌ʊ&ô ßY¿-ÂÅ^? ¾ qz© Q„™¥x³Qtež¥zòu‘gë뇣ö _Ö¤Sý|ÊlÜI¼!ú‘h§þÝ”òÌ«ßMùáŒzK?d£(O¾‚!èØŒzÓŽÕ’#¥™ðl%Ý% éFÆZÇ‹c—¡çKÚóeÝ~%À¸|žGh‚ߨ,Ùl7y¤!vÜCo¤cR\$ýŽx¯t£¢¤ôÔ©y×â¥Ó˜Flù)—fÒ*è}~µæ&'ÒB±Ïi£¸Þ þÕŒ¯y!²Lý7²â”ßn•Tó÷m³éT]&ÝË‘cOhPã€É×¾mœmQŠnôÃlÀ£Ô ;Ød›¢O‹£{`Ü€’Š×„~‰}jsŒzÔ×I¬ëç aɧ¥¬*Âldº]é´mw‹ýö5ΛÔåQ`µP„ °÷ƒ›GÒ)ž¡Nð"ì\™Q·åå,\Ü*%{\arŠðþ t½j±¦ʆޯó¤÷%•GodýðºUGpÛ·±Úã¶¶’¡(o·M…¿ÏX“-Ò4ulÛúý À+@~Ï~YS)LüE?©¦ò÷ZÆ·^ŠßóP“£°r*&]Û"”YÖ3ÿdW§t6>BP0.øObq§g׿f`t‰›¨€?­à`úÌ!óc™(ÖOæ‘ ˆ~}T…_J}þqòÿ¶Íkhendstream endobj 916 0 obj 6221 endobj 920 0 obj <> stream xœÍ]k·uþ®müE?½ xǼ_œO¶ë¤uª4µTEœòêfxW+[v,žç’ÃC9;+ÉN-óåðzøœç\8þöL,òLàŸü÷åõ½¿ðgÏ^ÝgÏî}{OÒgù¯Ëë³Obw—è”3gŸÞKoÊ3©ÜbÍ™Wz^Ÿ=¼¾÷çÓ?‹ÅhíMüËÃÏáM)ù›ô"¼ýð1T~p®übŒr§_Ÿ¯–(üéÉù´à„îô>[oCP§GkçWXì½Ñ>œ¾§êVD¡O_ã³ÖÖ«¶™çÚ[ø¯púíyKô1žnj{?°n¾;¿‹pÆ·Mä.]PǺü»T‹6îtÉŠoÎ/`ÆÖ…pzÌ:MoÚ ¬Åríõâ¬i:zÞVÇÆU§k˜…€2%šzÉjçgm´,à Vî+–:…ÿ:ý­(¡uôMín,ÐË­Ÿ~Å:zMÏ.XÝ,E™§¿Ò~ëûµÂ%·°)³¥åkØn J™² Wj•ª Ã ø—7Í_Û®šTq]µ µnžóH´ò®¬•?«¯RŸfQÁóyåÇõÇ|‘Î.¤‚CädûDüŽo3=ó¥{ÁÊq›¥^¢¶ƒm¦Úý6K³èèà6Smõsl3[ëö ò*ßÖQñãÜ ËÙQÿ$äli¯°K»8ÅǽŠ:=³æø N'N8É÷iaƒ2¼´•llN(”½t¢d9=·pVuû:_õ+&ÞLx¿bÂË«®›@:P5vÑÞת@Žƒ(}IX†C”'ÿ`Ókqª!±CZ/8WNa Ô¬…š¥Ž¥cRrf¨üøÏ±3»çä«OG]F§±ò[ø¸ž™uŽšd\Ê_ÂQcÜ"€mß6sËtFÉPwi…f½yÝÅ™ùÌë PdcÑ€D¦Uz=Œ¨°µ ™HÅèAŒjqä]ëš™%ÇÙñž³ß Š„|†ÅÊ(׊ñÄËI€!†›ckÖÏ C®Vf8’C9šBޡÉ»àÕq&âÈãd DtÐÿ¦ÊÞˆ€Æg`SжEª ÅAûˆ-ã£D‚÷ °÷: ¨á‘ïò3Ÿ–@ýÀd´ €D–"Ì8ˆÙxÔ ±+ôX’*ʆrV†æ¤÷€? ª¨LÓ-:ß CÓtyS«¾¸ 5)·´.­nû„6XEŒ…ߤ—cŒ®ŒÌZ O78t°'Bº²ÎÓbBUeÈLY_â3ÎÊ69XRw8l×j&}‹‰‡ž¨"Û>´ÑNjf¶»Mðj¥ê´*öî)$ß(vÞ5kífØð &x ì:1äô*î €¨÷ ¸i7`L3E!÷…Õ RÕ*ÀˆÞÅ“ÿ?ÕÆÉ&¬Ý&D ó‚sñ`"¦\ª'I2\òZí‘Üüýü@vñRÍÆÛׯc IYälGÛâq*b—d2YÚ¿û‰ˆ¨>¸èdš„¡¡¸(àÌÕµø²²àñ âó¹ÕÇ(•í»°là`tæŸ ä"‚‘»º•M#i3³™IZ²@P¦>äfy±ÎÔ &¶q暘¸¬™ˆ–ïÍÞ›º]½_n}7·ÒÐ/6 ¦ã ‹ÒœÇÕÍÇ-ô¥Çx¬Y§’?'Ê% ?VÛ)Hcÿ"YJN‹l Kç@m"¨BíUSN,GI'•kʉ*Á)CÀçå´e@4œ?³Ä`‰¨ƒA& êÏl‰d]‹¿œ_Xû"É›7ñ^’ü¸0‹©œÂ›€Qrìp¿Áv­rš“Ž‡Õ_{“Ü÷¦³‡¸ú¹ ïvãCè;ñ§§F½ô¤o.ÿž)š·¤tÐËya€2º¢/„v3’18é5Ø ŸS$·Sœp§:ÈÛÔ%òò¡Õ‘‰Š°¸`ä'гºÜŸ;x„´"ºVf9®3cùö\Úœ“‘%Tj|îQNGȼÏé6˜Ã×{­1©‚á<.[@$‰ÞÀ,lraïðŽû)N ªùs¬¬#9ɪ K€#s?E¡ñ˜%Ú/¥Z#‹ÉNᦷ—^§VÀö)=vVÙ#f½d$Q¤V+°÷§†á™7ü’U~9k™[H['OßFtÒe(æëãGlëB-f®>þTc}õÑ6ÞŒ%I8®røZvщðàB&dôÕ?m3D;Éñ9áuœ&Kñ›±9”¸…ަ&#€C7p JÞ9;0üL ŽGfóžüN¥îlÆqÏ .ÚÏ€Âì›°0´þß°FØ+?χO¸ÇÓ‡0úÙRöŠ;{™ ÄõлI6‹@;€¸jôu§iMl1Žœ'ã@bVı¦Äñ!Ê£ÀÆÆéŸÐ/`8uE?Çô²ºq2È‘ÏmIé5`ƒèR—€°¡ñ­\Ó<­%Þ’14ûw€j¯~T«À”…·0å`h¡s¯ƒ’CTøòÄ–œ—Ÿ³ò˜PÉÂNͧX)Ã49¬ ‡8bPoG7Š=ºƒÉÎuÆÁM70Èä¹?'¸¡/Ø•­]G½;°yCãÃÑÎ.bºÂÁÌc;áp4E¤”€(cRŒi,úô'*1eÅI(¶)ûDHËj[<îÆwÄ’CSY wðGä¼·ŒOº‘i¼Iaû3µËê›Ð8ã0t¤Ú…ˆ®è¶õ˼ á GN1mW2¸¦ôiÝ‚Ì=“eŸ6;Ó,slµ Ø®g^§Ì`É-‘÷o“¬FGc¸í.äHóâ›RÄFAÍ$ÿí_›T´ÁDl©Wóã ŒnJ¸Œ"èÆg2IæQgú{sr’ç­ö¨l 5ƒ>Í’¼^ï+j«GFoÏ ÞC4™¸ÆÇ° %¶Š[K¹Úö©írV,¨B˜| >HÔàLá. 7"°ß’/Qû•ÙÖxšž…´¶±MžWC  (a°¡3ÞŽÚIaAƒb¦ç™…ò´ªð•NPØ•×&3Ç)]V‚ò~ªÝ’ÖD†ÐÛIÁ*(fذ8ÖUê õ[mv¼¼ B_>{›E¾¶A0ÒO)„R–ÒB¡/cÖõ§½¸i&AU¹Ïw¸½˜B‘9Þ ßO^ýW¼AbaprG»C#Ù²°TžY˜¯qÚÛÙÍq3å4Þ$j¸™]L0[ªCrÏe}ì0y¢5;†ã\Œëôt|ç3˜3Ÿ°éޱ Çqq„U)I¤wÔ;ž<е‹À±Ï]c¥Ôéf"3§Õ$ùMKþ òàð *Õ¡ÜLQÏ?Ó[:Áך‘1a"m‚ž½¯e|“ÕÝ_;¡¶î Ûë¼ÖtM$FaÑînfcߤ}•-ÀË”*Ò:^7J §(poñä;6ÏÊíƒs‚¢\ÍÃq÷Ѓô›;@Cí9ËÉïx†‹x'dêËä‘ÒF=›HHÀôigO¨¢Ê¢Ôœi3b5¾À!aú›æðÀ‡ù]Û˜–@¾¥ä=ßÙ·1òÏäEÂMbãœÝ@=B‚v’§ŒóKÒÚénJ¯c©è¸6`}–…dWs¾ýL"¯ñ*#j/ßtHmµ<Ûav÷*ûŠ\{ùd’é<¹ÊÍ`+'e”Û :@XfTÓsÍ=Þ¦É=‡ï’Ž62¼SÄT¢­åNP½<*°Ù|:þp,Ú³øm‹8réúÛ¦ (ðóCÃ;+wºÿG=x×Üuâ:7¯!£‚à c(*EÀœ0¶|£+6_ã]ò¡d™ò1‡+,åw¨Ã&·cp¥´îÑö! l.¬J:±yÝæ¨!u¯áÒççkœ—r˜SÂË÷µôe}ü¨Vøpøøc÷h”Ôš—.õñ²>>–~][¸ª¥WÃÆ¾®/êkOkéÍp¼WÃ.k OºvÓã«áÐ_u#Ûk ýy·êéµëÑ ‡VùÒëAÚä¼8ƒ·2rJ¸Ø4ÌŽše$IÇ3<\äg¹äPø¬ÓRØ´–£ðg¹ÜŠ5¼ñ}xV†ÅIß@òjì9W7h„&œå6 ÷ nÒ8ZßÑÎ—ÄØÝƒ±=3øM‰ÙÂîCK½Q€kÐæÕOÒëx•™oöUj/ZÛsh\T? ‚^¯É.Zz–aÞû_Ë—WÜåæK›ûB¼*ªõ“²v]¥×äõÀ?ÎÒ|â¥ÈiJ»¨; Òë×;íÀ]:¡o9»‹ÖvÞ6 Rg_³”Ê.Ñ”9Zé“Ï)§¹ç©y•(´rKðòPðw¦«f¾Á–ë4 éÜ¥½9—xÉtÁÿžc’õŸ®||fü•àYö2K­9 ¥·¨†‹ÐýZ¡$Çì ´*Ä&¢uÀ)–zÊ·ñ7 ¥½1j1@ʤ}¶o® òQÍ^åÃúæ¼ø9Ǿ8‡AJæ‹3N,§­g„=~ÄΛ©Å®>êúøS}duýðµjÃõƒIªÿ‚ÆØøÕ¹ÀJwõ6W],³tž® ö§k¢»˜yÒ»çe½d?a'Qà‹ÓÀwíê42;Ä@;µbn¹Ù×B¶±­½¯%É•„îa² 5·enI,­ŸH×F7\Ž}- ìo°ãúË&°JZî~ë˜Î?ö¬Ç¹MU¾½¸Õ}z‰ç³‘¹ô&m)@SÌKäù÷3£‚+ÀYøð2u£¥å¶Ä[|¶Áê%Ä8ÿ>õ]?Û@y¼` É¸ãD·Çðôdk錷:à‘½=|·íd7Æ|•Zatjn¹§dø»qüxi¥ÿ¢ì•‘¤^ðkê&ºwÑ_ä¼'Å?R²·ïÝØW)Y:ž¯Ç!„Iû -ÈöWÒ6é½îBYqÕáÙWeŠG}9MÈÆLè øš­šOcN-(‘‹5ηÉo¢ÒÌS`ú.Å^< –<ƒ ¹±’E=¥(µ÷í»(†üfѽ¨··Óuãob^0¦IÔÛŽã,gdÊ:û=pãÅŽçæê±¡ÄTÖ.ë˜yÚŽÁ–T7PFqt¡9©>ÈY eýÊÏžK´GéœZ ÍêSŸ0FiTÅ›“"ƨ)j/Þº4×x·ïÀÕöøÍ¸púO’Ï⣬JEÿ߆Ÿ÷ò~£“ ¹´å^â *´ÑM®hx?“/ìMíÈ™®RŸø)‰×a~ÁF÷wUpoìüKÚ“P,·sÆOœ&s­• A,:¸ßÃíL3\ðúñ¡Ï}¶É6)÷“™"Oýh¾øægïýüù?ž—ìŸendstream endobj 921 0 obj 5942 endobj 925 0 obj <> stream xœí][“·q~§õ#öMg«´#Ü/z“e)¶9Å$årü@j—db‘”I‘Žâ?Ÿn\f>`€Ù³\*NªR|àphÝýõ àŸ/Ä"/ÿ)÷âÁ§ýų7Äų~ Óå¯ï^\üò5ò".Ñ)g.=}¿”RÊÅ]x¥áõÅ£þpúÃå•X´¶^ù“¼‹ÑÚ›xÛã/¯¬‹áô›ÔØ £OË啉a‰Áž¾å·ÖÛT~M# uúÕå•\”µQžÞB‹_¤ç |ЧO¨k§õé!¿Vô­õ¥“ÓßqBK×Ѣ÷¯Ó£³Ôößa/ˆvAC)"â†ß'¼p§7üì½ *¤‘ ÑA½<Þ¦ú2Ó©–§ë<¥Ìéë4ŽŒ0í–xûÜ…ÔÆÙ þE ­£ohEš¨—¨-‚:ý3µ–1˜ØR–Ékkš&gR¤t§gÛÄÞÂÄÊðAúÀ“\7æ†÷™VNžž¦F8êïÕÖÉë¼"Ä>§/ÿøèëZ„ÅJf®G×ÄJÏa›ÜV{úuš‹ô˜—ZªX÷ÎghiT u¾™ß÷@fyÖÊ»ÓU&N ™†+í‚»¸’j±ÆÉLË/3;YaMáJyb9¢Àmx ëðìòJ+»¸P×Õh"áhñ¸Y“Ê‚Øú†û0‹'Þ@n„L”X…žññr'ŽÏœ¾ºaG¾‡Ö¸^8Íü)ÍÞÚ:¨f¦Á‘^íD`fMºBÇӣˠšR×5¯«‰ªn}úêå„×ÇÍx–†6*뫌¨SÈ­ií‰C¬w7ÖEû±®¶$:W1ÃÞ>ݾûÝePKðDÜç›Áï1±6)ÎEÚXY[m¿CÓ:¹¯I±h-–Hþ"Ñ"¢q§/3; I³y¬ùÕ¥IO1,BJüì[XÊO¶¥Ì|_(L|omáû²OVáR¡úý~¼íؤcäu»ÓÔìbB ºƒ¤9®rìŒ÷EšºCÞÝu§Gàùu }£mÓ…ˆ}’ùÁ×kD­Íbd@$‹ÃGØÐe[‘¼°ô‹·éï`ò²NP%¿â%‘:Z™$ˆtª¥y:àšál›ÖÉHR(ˆ”pŽ{Ö‘¡36Ð }$Å…c’š­!¡%†rÍžÿ¨ü¾¢¼q!ô?€L¦)êÌRHϬK Cáq•ëæ%í«!%~ú)SxþÆšèãN}9£GÀ³ª/hЍù§L¤o¹x¦^  ¸fû—ñQÑÐêW%2׸F ‡ªÞ’ÉÛdœî„ ÑéOš;¤Å~žÛJCËÖ¬PÒšz'%ÕnØA©S‹Òº¨ã3Ù8Ed™'«Vf´³4UbË'™å˜~B£#öÈ´ïš—=²ŽæŽË÷. #­ÏcË…ídVdÑÙ˜ !–”‘·<¯õ5ŽylðzâN!³÷¯ª ×¾œ ßš(3íõéCË?8bÔÕDûš!OGâyf%úPï‹}î„Uy³H{¯É|ÉÍ…0^3»­Í²½¥~]ÓËÓüZÒJü.ÍXg6]¼¾´4Œ ¡ïø„ôb'g j4r ;ZåÑ ñ|l>Ë´©HB}VÉç U¨¬±eñ æ¾I¾M©n†‘RÈ:WejãÊOÒØNeah5ªÅÆsº¹$Žs^Ù¬¼2AI‚êr· üEúÒ«hC]°È¾Â‹´¥–f^¸KK©Ôº¤+OE6R%RÝlͳu­2´¾Ÿñ$âaUB+ˆë‰»÷ðœN¯M$©°[‹¿nfø˜Æð‹jDZ˜²ò•ó Ùìá,$<$þb³/½_¢ §o¸‹¨,m[~íØBØF¹C|*ÃKQ‘Ûr‡¨TðÓǹsŽÓóB™ÆZ¢ ­Ž@aözER´îQåt~ÙJj ɲØ{™ÙôîüSšÖ"½!k5Iœ“­A9кյ™þ`Â(²VÅ©ºìüz2OáCã{à@HÉV†f å«Tà4g×7K’Ä=Ý)ñêÓr Vï*y¬Hw‘@?!r¼J†&´›…¼„Ÿ­CØ– Amçï׿ÚÔÉv¡ÝJ~·ŒÞ Ü*_2ŠÈ4 AR·`7.«¦ˆªF«yärvü–L\…q'h<Â;²ˆˆÞu_7ÊØCƒÓȤ½iÚl $=îMÕèÍèö†š— gçÃ:½ÃDM6h” ð<m“=F£ÙŸØ¾Œð\>Õ$ü©Öļ4“‚v‚€ÀéÎÄj“Á}•$™±É×XHì+ !ëñžÂÔŵ€Q " ÒÁµ{M€Š þà&—ö‘äXáKø,ï)a:ü>‚EÞ,VQK2¥5y\Út@>0Çn6Tx“‘Vã@å·G»¡+@*´ ÷KAרQ.Š{©œpÓçO*ÎdðÃ8ÈzË]ÀXGbŠ1…I\bâF`¸b¦…`[XIGú1óÄo¼Î-‚-&y½ÅßNMH©õü4ˆWÆâžíT'Dâv¾ ¾g_V’¬1ju=fGt“QýN¢{¤®ˆŽz±ªqlß–µÑMÔ爣±¾<¡±%É º ãÔ¸fHÉ,]kå8ñ©Ïº– _oò$½öµ¸cÇF@Zä¹zäÐ,@šÃ(¡S.¸›ìßî§ZAt<ª™éÀòKö*-®÷½èéð¯vŒUæ!®Ïœp”Ò»3¢`=*Q~&qLtÞ'‘œ4cE~èód)ÐïÁm×'ù ØôAä4Y/çÅדN w0p”æ@·=×ÀY!’Çbs,ˆ‡ü»‰r¡¥ÏÄÞ­û~µF>tVÐFÀs…Á‘¿µwìqoV¥&›§Üo„(ÈS&ß Î79•Ä:¿tž¼ëL ›É6^7“eÉ$â«KvbT¨‹§tÓÃËA%Š’õÏv'3ó¢)ëüÈ® ž…ªq·i ÈÅB·3:-yr?å´ ¹àÃÍ=&“Ûa“p(ƒ§ Ü{ÅÑÒÅ>/«£[Ö̬Š#ßãóO¹3m§‚¸äYº•¤±ÉIUþŽ·ug00•ùše¢P4÷☚,›þ†Ò¨ÓÄØ ””­åƶÝì GÛ-'ªQ¯ä|p‚šLÎ4ýfl€^Ã8ôúIz ÿ“Ík(å¼]%7™•ƒ÷I¢±Ëk =™ŸqÁ.ÌŸçYJi™§èË¥[=thÂx×à*ÜäOµø*cU'|ñ­G#ÕžƒÀßdÕ@üpzÛÛ6IþEôN);GÛ[ßõTÓäiQ;>ž~›ûvN¯Ê61cÖvÚ;«oÚNi1ì§i¿pÿwš>q4§q{)8I>×k<‘Ó;F/¼ ÿšµB&û(zñ%ùŸ¬Õ¥¨Bo«©Ü̈Ä8Î$Ž dM%†qŽéeQ²j<ò$:7ëíL™Ib’›­·G?|[4Ðê…Jë%õYZݵ:hê”ͧ½³Å…ˆ^m/I  é¬L¢sµøËü(Z}VѺٗЬ ŒÁÀß7 Äý¹ I‚Ö·m.Ä›” ;+áGDÄÐ–à”Š§QÅA8x—WŸ9tÏê’™£jaGõ&NMxvP)NoõNsÔ3ÈQÔý˜q™NW`H bˆX®€þ„EgÞ0vø'ø’˜%¾Y+|V«WðñI9£|`Rnó_¹5Çö F [´s“þ(çÈ¡&ðªPp›ú¶{ûw§¸ Ș`™¹Œç…ᆟ~Ÿñ”ƒ,K˜Z™>"šÌr?>p–»Õ!Üâ=»lc‰Ž«)p$ÄØòì”É“=ƒ ù[\ugC©ˆB3% a{ü·SÞB'ˆÉ ¼¿fþlÉâ5ôHÿu{ÔÃ0Jeѳ½¿u;L2oï;tC@ë±+Ò–Ï kœÖØEk×r$ãHõÆÞ2š\5b&(-«#Óx`à`o“¢JFé Ly@ÛÛSCtlÍ«DMkPQýŒn’“L gÇwðÍ«®ß¾c’Ð9|[®l¾)2åTÏyÐÑ6Œ ´¡ê£ÙVv9¸ÿU• œú·\C$RwÉ'R»ÐZ®u•jÜWÍâ­ø~<ÅŸr'ѱöU)­k§ÖÕ,dˆgè»Î +-œmò$NÞñJr(¦2ä·6‚“I·oruÁê½a7ûÅ ý"·¨WM¾ñ8dS`0ègã‚ã"µþÀ0wȵ3Y,òb´ø1 ±]gÇ™f„ˆ¾úÀÔÁ˜¤Ÿ²÷J‹åFMRíLñ­u8uñBRž /퇊íÜš6:Ø´X¾+Øá¢F\ÝWéôY;H4BvÚBÂi¸°LkhÃð±‡yIίrç9®@èç¹Ö#[w Oå"vT»ºÆ }\ÄSÕÐû q¢ùL4^JHÌ43:4¼´‡Þ­¹¬É±€®Èq¨9;D¤bbƒFOëL™JžÓg•a¶e=¬ñC{JèE¦C‘'~]ׄS¦JÅ>«ÚçèºpR¢.¨Ó«aã.û·~¸ÏÒÞZŒÃ‘x»ÚI* 8ôÕfL°¶ô¸Þ·`“‰\k6ǦäˆpJÑÉorÐ’„â!`»j$ -þ’p*…©G*Î ®b÷»šDƒú Tj;x=®šeµ"ž¡ÍœZÒÈg)3è”Y[·o¬Yø³Î•á·ö>Ž{ÎÙóÔBXÛû‰žøþFùðL wÄ™Ò+¶=ÞäŠq¤Ã$†º±ï-¬0(„J±˜ƒÂ&îšmà>ÒAþ³¨îEê{éPÁaP‚7Òù¥,+¡?°É’#àøýæ‹Øì±¹~3õÊg)ì„M Ķ´+¾}‡¤5ÆçVÈ{•1¬É’õÛ6e–Zeh­Ý[l]„dÏ•$’´Û|{3oKÎV^¡IÔìéæ±:";†6¥¡–Kv¦–»TEçjí^ñàÛM¶æ¸vdéŒ`nRe.…nUey⸰¡è2ouYê²ß¶Z‹&ï¤ÇÓMé-ùݪ1×P/`‘>ãiŽOX®n,jÉÈ<Ã'"7K°ž¾e24–f·/ŸQ‚oü±¤ä(™±jOê0Óžmâ‘i7ÿ>Éb>ÂV_›6ÕäIÕ8:–œƒ“¶RAöÌ™.£œÙ)Å=M¼sm'Ó!âôé 4ù p M 7%ü¢É¿[½ÝæüRY¯¦BúiY;?eøn=Ì41Ä ç‚KFs²¢ÓH“š Îú_Ÿ''µ¯';ùœO:kÚú#×ÂDRâ=CÔ”¯~-:nåNºbv\¢kØ?DÞY´éà8ZdQ˜HÜY­G+¬åÃØr^Wô}]él{e¸Ï/Ù<¬|Ñbø†µ•æ“mäMy—ÏÖ\€”§I= â’;0´c¥¸ˆ¦8­w~ïÓ—Ä|Úc˜¥³ ˆ[ f/ÅÌD8.g–¤qq‡åÌ»sI-8Œ'$¯ã ð(¶Ïn‹'ø­)üïš6—NÍà ä Ó¤¼QbuŽ*W—5ž…å³¥®K±kà <kÓBvÁêfÀÙíuD¯ ŠG×ä­ýK‰HÓÕ M­³=¬°ňÈ‘êm~¤µaàõ µ‹·kârm|ð¬wš{Ôy) ŽR­s_¥–bRラ|îà¸á¨J[XqçL¼(uÆYR,_]ÑKú :aw¨t’¾¢q‰µ—hÚqKD©q~B˜Yí¼(Ó|–÷E°>ò`%˜A„ëäÜPÛ§ø¾qÛÖR*L ÚOô8xþ$߀AË€T!f`©¢ úiHW)$³lˆT ÖͼÚì/:«'ž1¶½¥LŒÜ·-Ôô 3QLSŠø$'û&ó—Qí £ÏmËá£ØîŒ ãZnm|¬îLº/怟o-véqò5»êBˆöÌrXµêWÍ"WñCÃâøªŠ-µ±÷„E@2zX¤®¥þy`‘GT‡·Rr¹}ÜÁ"O×ݽ'û2 7¾?06Z¿^Ì Æ±ÂèJÑzu¼¥fƦ_·#k½±ÂlŠõlŒui ÆžÆçÇÑwô+Qî!´ò"½;€ÖÒùzB6î@ñ^×;©èRºæ^×;qRÃùŸ«Là°ežÿ9»^)ÎÉuµlœÞþrÅãò”ºþ²ÞÒäšâêq¹×Ô/ã.¬ÿð7L(ŽŒ7'jÇX7º?"`÷7HlçnˆdÓ€;–ÃOú^¶þÆøš.\Áа©6v_L–wÜV©Ÿ–’Ù!nBÀ­6€ÏvXÉGmD-¾ý ;|ô_Ñ+QF“ùº€£2*•$ýzƒÊÉI“:—YœéñŠ|Á[-¨Ý!§l bŸ§•´záƒG˜äK[k_­µ§˜lùn3{±y[³’BR·gë•7¼Èm=æXœJë¸‹ðæ–´Ps‘ÊîDû̶?£döM¡ÅµÒú*/¬”zpD>æ OX4…4»TKÕN¬²$Ù¬7xt¯0µsŽ̧l­ahÀ½ÛÙ2;ø:‡ŽTä2†Nnwû€Ú¤”Ëð~°}¶OÐgkHJ‰"dk¢”D¢­ÙNB`‚üWÑLÜ{T¾ FÕ`³c|}(­‹[Èí/-D±G»n÷ž˜vØåë<ÚPÌKMÒx»ËÌ)Ï©+ý¹8r¤›ï»êÓ@Àì2¬YqJ—š±:ñ4–Æ4~Û¥qd¾Zeåú‘²èàíïcM%¡W%D<'׃µ¿ß~­X º ·ò™6m»jÐí‚$³ÚÇ¥™:J|Æ(ªã[–úàí=Pt|›^µÊx©9pÞàe{ø~Œ†K¶p¨X×{pj‘–G']yà ’âY¼ý…Kü¡Žqz/ŠÖq©ÚΊ£TÑ5w5á=¼ßO„b–t:çŠã™0žaí·¡U¥]JXuG„Òµ›NuJd{nÝž :|Gðj§ö£|Èéa~hœ6ŽÌh-é¼Ç ¯±Tkp ï œ+íaàîáí·¦õSww*ò=3Fvõ`/'ûzPdÍRÑ6ç±»k7¦wä–û™Ò‰ÌÖê…øÔäÃ!ì8”~H‰á#Xíû{áôôæP3ô7ªÑ,‚lè}·_cGªK6: ²ðG=+cŸÐ±oÜßú23?ja\ä¢Ô|-±¥ÉÛ4½\/L} ܸˤ¡×;&‡SáQ7âÐ%ÛÝ¢âYÀ1¾q ¾”ƒo<üÛ_‚bޝ¶%úøÚÜþ¦>úoÕøpÀÁ÷!‘ÊL—ìñe¯ÆÞãTÄ,l—Ë,¬T»`žÐɘþy“ÿi~lÂfwdì¯Å¡¯ó“sk ó÷¯&½ß–«¬B3‡†D5W¼÷µ@È€;2¤~¢šÞè}öÕëw…¯î +>p%)ç÷Ä•ñ%bã{Q>®_MâðWªù (†ÌªØÔ#‚ Ü”ÍŽ÷O+|pŒ/5è€#¨¥ ýÛn³O†åY«8ø5÷ápÃy¾uDœ ©ç°Š’ýMÑnã>2I åe=3I¦W+>¾TŠÃN*‡þ¢”¦Ä€ÈÏ$y±áKÔj×çü_°9xYºG²år÷ÿÜd £Ô¥ džý¦[w‚€±×­Õáóè"¸[uk°“C •ñQðâª+Ö´]Xál{ž/¯‚˜ÀXïŽÝ}¸z¼âÿõîìù¬naº%€%U1ÊØˆoKgøâ6>·Q(v',> stream xœÅ]I“·‘¾3sñè›_G°KØGø ÛÒØ²ä‘5=š˜°} Èf“É–ÄÅ¢õç'@U}@õ^‹-*xèŠz(,‰D~¹‚߉Iž þWþ>|~ïÃ/ýÙõË{âìúÞw÷dúñ¬üyøüìw—Ô@ʳ8E§œ9»||/)Ϥ”“;óJOÂë³Ëç÷þvøÛù…˜´¶^ùƒ:“ÑÚ›xpëã?Î/¬“áð;n¬ŒÖ¦ó eâäÂáÔVÆè•<\qã„îð‚Ÿ­·!¨Ã#xþþüBNÂÙOað‡çÊOÖ sø&7VŠ:yÉÏÞíÃáfÓ‹æ-OÏO¡ã‡ðåƒugkÞŽ Ü‚=»´ÆÉ¼ ™MŒÖWSø–Öh4‡‹,$1Þ^Ñ´¡ó¦ÿ þh=|IÁDwø§¬%ZÇÔ›!69˜µã×Çþ©Ý÷ynÒ1T“ÈDpjxæŸVg*-ÄK…3†“ö*QÅŠ(ôÎæ/¬_>ËÓ3BV§Z|©µê™9o0mcmM5;ÜKdßD2;Ñd—¼ð4­K̤èO¼D­ 1óÒ@xûS„·Qf$mémƒ4‰°±ôN-ìFzók©åJo/âD4*')1ã®]á7¤O+2f†å}ˆÊδ¢ó*Î{]“eYÅ[þTQ+¤ìãy_ð¿ŠÁ™µT ©"˜hfÍÝIkQ¸•“Ìñ÷(7VÎñ)[g_@âk³H'¹Øæzù4Ÿ G3Ô*‹Yk‹˜­‰¼¬àëfŒƒMC²!¢#2[Gm˜= ©Áþ”º¡ó ‘õ2JÛ€(íìäœ^ÈÿEsž–“£ÉÐ\­$æô2à ÆW Ô,*#½¥Óì5gî€×Í}¥Õþ>¿Vцêù× bš´¤Ž(ZŸï—H×ûs^®ŒDžë 7Ðú&&Mš:|³NöiG¹|F­š¤£>ÒÞ8KdºZÚötIr/J;S) UM`(çƒXãls#—Y“ކPºP¹iK#ØJTÓÃDäÄmÿ\ž$|¾Ÿ¡Ð:{ø<érÊ_³²ˆïH¥|›×¥)à‘Lì>š®TÀÃOšŒ$ìwÑÈ1FR &g~)Ýé HŸj’‚ Nh’ß^»»Â‰y /w ‹ÇŒ´´ÍTˆV:¾bÍ“°»AÏJ›q±C'Ð1l Í®’ïøœi©¼ê!ùË„¢Ž0S)qß$¥œ8¶¢Ó¿˜•Ò5õeäðžeò|(áÐõ*ÄÌ'…\~yÝ¢èYYÓØBU¨ÐÑ[€éð}@ÙžëIÆé\N—îlpGy’p·lÛÑ“óIíØ>=ÊB–8ÌÍâT"%ÈáëUà²Í"©ê‹tN>æ×Ì r¦ª”B[SJ•²"ÓE …U®çÕyuæhÓ4™5´:ÒhWâIbé£Ï‹|•ú¢5’: ‰P¤ÉV€%âz#„'•lÁ²Ïó¼ ‰G„/ ÃcV+°dšÛè<¾„Ï2ýƒÏvkÈØZ‘H£Ê^:×kƒ¼«2„êm48¿lõ".‹ø6ɇ”°Ÿ¾?j8‚Å׎ÎOAépšå]î¸ý¢ž„q¿”ß/2ˆ†=¿_T´5¾ÚyÚÒUè|3ï@AÍhó$¡!x,Þ‚`‡^²ë¹æ ‚Ca$òFÇbDZðh7IÙS¤¾É èxÈŠBHÐë¼iÂÐ:¹ÊPÚàDÑŒ|±,päjÁy_•!-£s†}²ò‚™Oņú´?„eßÁj^÷íÁÖ™%t4¬ÿªÈh…ég Œ<0¸ÈZ‰Y¾-X¯§ bƒõ#7Ž€F`Ñ´¢ •1Û¡tê¦fn/¾çšb`ãWí±ã˜mFò¡Eg’ûžˆ+õ4í,€<M¯rUuœH©ùØa™‰¾3ÛGê»VçxXÄ¥=¨Y€X‚þOÎI["¾óVHÙ4=Fðéås¢f¸y:Ä7ÿ³˜Z9"Öô…lʤ²¾c }rèÀsoˆ¨_îm= ;nüÍ¢½Å”Ñ}Ü‹fyþIíx´À”› L™¬y+Ql™H ­FHì9/§±çÁ.Š÷Ô±’Cµ¾hH°ûMȈÑæpk î´@*!ô!7æõ&™¡†'*YkÝ´Æp;Ú¨BqÐ/ Ì-=:ék¿åþ¥r$»@CE¹x‹~›4¡•èŽ@ªE Ü[«¶ïšsÃÄîßÄN ý﩯µ?p%ñsÞG´ÞSH#§tŒl¶rw7ßó¤¬úZI5Hã™(G¶jÔÅyL›Žil'„½^–aœo[3 k«”lr‘© …ÏÙ’Aºõâoƒôô¶Å\å`\eqCǰçN¶±Æ4"zG›|=W˜ã•¨ðŽ®0”ÔrXhñ´éhúˆ …€;ÔMê1¿öóÏ{ü~N†%†Tû^´Êuή¡ë ¾U³ ’-ú‰‹}_\g¼@ˆ­×yŸ«AUgzÑYœ?ðõÐKÁ‹5ÊýÄ ¿>ê(“ìJ§A¬ ì?ûk³Ë,eÅÄ#ÀÁg%››9Ú‚‡¥ñqs‡Jì:.R‚ §7T.%ž±N¤l]áÚBʦR‰Í?ÊýÉaá»&Û[û¸—žYgjãÒ[ŸUÄu‚Ô…—kA–‚>kAvòÒÎljÒ<«¾ZO úKFÏ7%¥/™%óÉl¼¦sï6k„C.ˆ£äÇ«L²v|tÜÂJBzG‹!ÊIæ¨CF”r@~_Ù{/ÅØ¿Æ6s ë° œ˜AŽ>æ4Îk§ìMX5Ëæa8yÛ|™nö>K‚ˆÍ¥½ÌöX£àÈëåav44yÕ4i’V•¢Šn‰½ôu›Õí ‡0`‚½0e£It%»­%»×œ­D&OOÓ­ö° 2®êŠ*^-o31ŒµML’×ÇdÁÿH÷:%n ½£˜éþ:ÁâÏÎK¬ý`ì¼Þò@bÖ«YdîÆ˜׉UªÁÑuÝÝ×!˜™I:³‚nfÜ¡‰;XÆ ´0 –¥yØønX†µ©²n‹¢ùy ‚Åï’ÎNÁ:Ü’¥ÓœçTô1»V´ t’»IÑÁ,ýþÈ+á*ÙãƒÙßÞM$ŒÂØýÀù(OÆHk9ÈÛ¡‚éï=oð‚ 3:ZÇÇmŠï¡ °á™ß7”ZÅHÉÞÊ0âÁÁ&â¹ø;!¹Gã½uÞAž`ˆGBŽ«UÔ‹ c÷ãÚá‘NÑ\ŠÈZ¹†PÄîN}Ù¯!{g¤åÍPÁŽÔ9lª9u(áš#[p=å5æ.ô¼ÏQÚ¤eÄtÂØáìÞ,a¤AhvGª`’WbUh`²F¬2ù± ‚Z2Z‡¬…Ïûº9@o¨Îº3˜l••wIsL9¬îÒæãt‹^¦ûjóqÎšßØ|!e0¼›ÍgID_iQˆ9h_L‚Q𻈠gG‰$]iR–Ò“oV=µ‡¹ÌK!,Z&jµ%•ÞºRàÁ¦ÆÛì¢ÐJõ Y§ùé>@Ì5E™{ÖÍCÓ1 ŒÃb‚YØèÙ5 ÉäUuÂp_?£õ¥ÐýæW?`ó ª’ùE}0ýˆ-1ªÐøø‡|±b4MÂ&B0ÎÖ¡‚\溔«Üw pé—¨@˜ù›ó%îŽ- Ôzãh–ª¦ÔT‹ðº­`œïp±Ä:F•!£÷Û씆±X¤×uÄâ‚·ŠFò—(¹sT퀼¬)“'Qáªê #6Ç&eWRüª¸´·œ2ËN°ûŸX«4¥ET„ÃØ –hAN@r…ÅÉ7,IÚ%þ†Åžnöy“©0 ¥¥q]o:DÂæäÇ^¥Òè¹ßâ~®¨àL›AÂÄLÊqºÏÅÁÊŸ“+¢ÄÀ¯JÏ¢©–$ž„®^[é¸<”x„›ÜÖöáäTÐa”Rq<Í#Òæð_ åâ¾²ëªx×S°²X\yî*‡’ºS%C­¼¿[A5çqbc¦-9dÝ2ŠJÚ}›ó‘–l˜9khŽãUî]ÀXà@à&"Ã#ÑJæVô Ãiõåžtš'Íé«s"©Š"vˆ‘ú-“óÍa¸)½ÈÝYë«bz(M =kyß °Ò$œ˜h;hߣÒ%J\«tIÃAþ;VºŽxºµâT?'©o\çg{’RŽ…;qÝÚrÈ;‹) &G}äPɱkü ½«¦t —¤fÐáûß4s#M¹íHM, QiꬓշÕОW’9\R·f¥Ùq²?V,Ó««óG ´¤Cù&«‰ûf¿®ë?@ìÜ%²‰—æR8™ œ×…šº¯v§(lãÍl<iæ"ŒK/Rfpì/`éZ¢òëR”ÁœÚó^åñDÜËX­¥ø·+Ë/Á-Ç™ÍY|‰@dé «9œ é‚0áã¬r¥Sÿó^éý³’«Ñd):xU¥u"xÞVK–¿†£T4dË®XÒ§¨^D;¶˜‰ÆÚÇ‘:Äž[:1Ø%I–Íú˾"C­ó®ãiãÚ>wóÔ#Q÷RÌ sã Ú1m¦ÃCfc¢2å]ü*ª÷n6k?[`Q⣸ý³—^ =ñ®Ëc¥êýÛÊj©¯}.E ƒßQàÛ›fssyƒçZǽ¨©—ÉMÚÔ}Ó[¢ÑMeÿZ×2258 ´c:^ùìƒï®r8–õ¼Ì³•twl ÏRÍgrfGâäYÙǺhvXƒ û•=vœTá!ùw‹äƒ¼”^GÊú1¹®˜¯ æY;£ª(œuLAGãª_ðŽ}ÿ¾„7Ù´É%×:üN»õ#Xñ¼M¥)ÛM^.vÓe2;i‹ÀÜÜeV<æÅOÎ0èxZ婨&¼·ËÁXÌ '›!ÒŒY–ßñå`Ü-G×ÞÇå`)ÑÞºN¸g 'púÖ…·º,[ËwµÏT6WXªÔ7ò¤ã KœH2Âçú„õwwM\(\™¸ùư> †–wîðâÀ½°ò4Dìßá…׎OùžZ'}S™ßÊ (Q8 H\ÑÜHb¼#=Yâ…äiÚVê»Â<úà”æ…EßÏe×-QY,Dê9l¯’.4hî KWøÆ°&ùõq埀ƒ‘¹> stream xœÕ]K“·uÞ3UÙd“åìt§ŠlâýÐNVœ8Jì(4“íJ ß,‘CšCK¤\•ßžst÷4Ð÷r†C9ÖBPƒóøÎ˜?Ÿ‰Iž þ§üûñë;÷ø³çWwÄÙó;¾#ÓÿyVþõøõÙ¯R)Ïâræìá³;ù—òLJ9¹3¯ô$¼>{øúÎ8¿'&­­Wþ`ÎÅd´ö&ÔÚüÓù=+ääE8üóù=9I­-¢Ð‡‹4¸T4"~ÆQóÂ…:¼¦Þ‚†PÔ¾X—õ/mMƒÎ£éüÆôý9è')äáSÅËÇèO`¼¿Àï`ÊW…°Q#Q²óv‚²v$ ݯø³÷FÓúp­?¦EI—L‹’šVÚ'2nþbsTÚ"ìŸ~wGÙÈÇOöð qÎס|úþ& çTï€ûD¥cR®ü.곕Ne¡Ak«{s~vkm,ËÔ+”´ô_™®òx&dKúÉÚæmßS:N*è³{RMÖ8™·¿¥”ñÌj¼Có¿PIµ=íÜÆ>ƒ“§Ÿ¯&!]G¼x%îÆe!YHÒ‚U“’‡M‹µÂh<5¦Äýtú¨n$O1óÃ÷iÑ|Øïέ˜í—ŽÆ’"‰^ÒöH±©â©L0Ô5’PÓW!Œ×‡ß¤Ÿ{Ü o&WÎÜxŠ_ç IZgÔ¾›ùY+"‹Ìbm‘ßr¯¨,‘—v¨q4‘™µ$uÒ亗Ø6Mô7;­"”§dN°güo«BÌ3Œœ>ÅÈ)5‘Yø…Œœ¡I‘‡ox!Ä…ÁöùF®MÉ¢P·«ÛîpÑ.¨°Nƒ–¢P+3yÒůù@…µiÂÎ#›p/óšµ*W›í—!iö •,IÏ£uÀhŸ‚!}Âc.ru——ÙÂ=Icfiý;0 ¸K¤ä›õH.Ë4ÞW½‹y±Òø>(O3[’•c+ØÕ$Àïò4ÖúÊ~@ïív?©'UNG ³œÑœ‹ñ±5›ðH(Á«Î !¯¦_^TôZzo­x0:.#ˆ’¤ŸOA,}æû$ Âj—”E MôýÿJhýp¸e}µL!ý P R"«tÇ0L?’0lÀÎ&GìÞ§.»±-œ¤›Õ' VþFØkÁ'U¶-é7iN°J/¿WÚWfºŒŸ˜û"}—Úù¤iå^¶N´}nðÄ&JfºØ©+4¡ÃSMi!Cפ EtŒ`Ò+[¨µ›<él Ͻþ{ÑBQüwêÖÄãN$ñÙÆ’ݵ±ö'œ¾J¿ Õ]z"Oò’Øý. '#)‹y¡Æk•àB bÌ80%¡65ÇUR€éCî"b³QpNõ4j»­Æm\º_fµb'f¾„¡G4脬ò–:ŠB3Ä$°lQ¹<+Äs¾q|’ÿMà‚øræ·§¹/ÁóSꂽe·PÏ!a0Fg+Œì瀺ZÖD{.4öE7 3̲q² Ù=ãšøÙ(Q¾+µ~H¯ —ÂïùêDk¢wùç M0ö€7v™æ5OC¸RÈÊôÔ¶<9‚&´ö´Ç°;IžÇšðù’Ìâ¶÷n½þ)ó wËø0-NË›ãC¹™_¦¯S‹´Róbm>jVáew„gݾ5>”‚‚Ñ!ç-¥Gt8w!th²gU—·+à|ÚÅ´ðõyƒiqÍéëå½FEªÁ6bÐH³¬©ùnípµ~=„±§¯Ðøâš]çý}hWÖåeó5ÿ Žýc»ôÔ|Ùý:u²í›€ÖÞÅÏÒ‰qˆŸIR¬7§ágÐ cülýþ’øÙ‰)¹ iMšfo4¯4Ü?ïEÄšOKá.Hïa0«„»ès¸+}†€X‚1„îÆ²´›dˆ Zýš4u´äŔƳdÒtý©að¢e³ù#¤OŠŒ =YÙ^ ¿€Y"x?5¸Æª~ÈÆA™q˜mñùQ˜dœAÌ´œË¨ê&YõÇó4½M¿D Œm 3ž/?ÍâCÞQ­Ñm¥G¹”iŽšiÒs:‰)ͤê¨Õ¨B£S•A.ò0jpZÜ›S¨¤“‰åoT³!ùç-Éш­ßFÄÔ¢®\8µ g“jºÊp´zäx>)ÇWGS7ºM¦Þ¬Ö&×9iRžKB ¶ø4óˆ&ÝÐ×”æ~Ûjóm¤û…•ˆºå{ù6âz²)²É·óXÆm.áÈ©*µÁšF€J!ŽsÚ@2¯ÔÞHOÛù]ns©N)ÃIÑ‹\†#%‡m]jÓ: ¬Þ-ê$–h®WQ˜%aG§àæ´i"S²o*ä¤7½Ç2¨½ÙOÔqQ¨joH¥éã97>È’K¨ºŸ´!\0Ç„ÚÍÆíÖ÷ðlRWõ=à@ äâ6}i†Ð,f“‹H/jƒWy9NØOuUšð !ù§Á â8'ˆ_ÿ‚ð†pÉä¼Ý7¼&âËÞ¤•’⺾qd;½”UÝ+F-ú:µËÓ¼ìhJÔ}‚|àA4¸ã˜\вW9_U…®ÞßÀt&¿Œ¡BÞÿÂ,©‚›Y‘Îî»5Þ‹+)ó§ªÔõNäD~¨Žž‰×u‘ŽíZfðÅnŽtâ±)él°ÍЮk;¢©å8ÒæéÈHr O«…q*¤$™½8ºb…ÖðÏ1ä…èNM>&ê’çBFR”ôöqÓ¬çyÆþPCçÅ×a¾]"ÒUuðcxãqžÏ3#»ÃÜ%ndÇ¢ºå¶§ÖZy«¸À4+§âÅT–3…!½ë]$èÆ!y¯’$¾ÜWr¤ïÖÉk[wªj®Av¡—‚‡ÊÀeËd‚o ^Z„—¦ˆ¾ˆæØ-Ž^wÙá‡Ls_ä-ù¸™F6¸¥þ„ B)?¡}ëØèê|*NÚ/p•qæä+¾aéTÍNÈ…{ðý"/~>R?3ˆ’o¤×¤™r¹œºèåíý‘ÆÏÛÔÿäêO¥ÉÝB]‰eÑ5ã‘O¨+á!Dí>a©^åªnÌî€7 –еaHlÍe·žTQ0Œ2Â<eiäÚmK@ŽV[•…ÕWšö E6¥²xGiªÝ_jV]Úe ÎÓzþ#aâ`]מŒTT[ßCúGXù§ü¦ t‹Ü6J¯\ØÓo5œk2ÐŒýf0ÁuX0ËÖ-¨$ )ìg(`&ýáB¼N Ô­U*[¨O† ¨Dî×rô ˜/šòϺ?k«AÊÎ[7¶W …Ê÷8³oµ‹õ«\ûºõ«ïvëW»6ÝÒ¡šf?ªšÌeعÿ øx ”r¥¸\æ×{ÆWôº{™CPœÁÚÉ(KN_@€?—£>m …ÒjÆ¡Á°‹£Ô“”Õ$}á¨À Ä"âÚ-eOÉÊì9ºQ\УŒoüPHiÕ)žõ€Úƒ½ó.›¬à'üÌsã ÅlZ^çÚåFçüdEb'ÁSdØ:xµ["œ Z'ÔÅá­R Ɇ§}âF±‰%€¸©¬©dò”[+š¾9§ÍA޾ÍðÛì:{ZúCøœ|ÂÀs†tn.â´S‚åLh¡^â|’ïä½€ñæ_ÒäàÙã Òg€Ê(šDîðS²Ë­«–à„ÃK¤ý·,Ç;n>XNp ÿx€£ôçðýkà×BBëg†á+Ør˜#-ŽÖNpëp†åÊÚ±ÛU¼j†w¥8N’êOÓð@à O}„º‘†¯F¥ÜêoêY¸^šX¨:•õ#F£ë[7¤šÑ÷ìËâ¶Ó<ÞøüÜI˜ Ñàø•t…³~¡¬ãQƒ— ±¦²xÚ™ýbÎØNÑ’QjÒVíz³Š×Óz£iñå¢k2¤£Òµ­VMZ{{´û“;è’õN¾~]ŸtRÊ`¼X EQýŠï˜5ª¹‰›m`Ê t.©0¸µY.²²CŽé„­ ,%oZòÕBÙ8¹¤§IûÝJ)L‡¤CÚyžh&l÷%"¾“/«‚Ï¢øKÄYŽ…$[Äà‰-GÝ4ÆvÑFÔï°0yO† ­šˆW9Âé¨, OC«;ÅŠá‘îÚ„þ[F@PU,óQUµ8øÌÉ+˜úãÊs%ÈR‡Æ3:ú@âO~ ÌWÿ¾r3œ¥j¼á˜q°ùÒßl¢‡·²ë;N–|.©Ì  Ò»Œm±ì>ÐÓ¨GÞÑ«Õ!iÓ²ŸÃ¨3Ðëh¯Êïö ¥ö„̼ûd¿„æW¬êk˜Í]zoÃÞã·€®J‹] w7&ç~rÎ÷¬ÞéÞSƒË¤!øŒ%«àÚŒÎ8àðÓœ4—Á4ö Ù rÙ£8rŸãÐðý¼Z°­+„'S¦Æü6íkN&ðÕä}_7¤¥T Á$‚?ðÍï¯óôm‚‡&¬V{¬-ò ŒFc5a‰õr€í^gƼñµM|5õ6ÈÃæeÏý[„‰Ó§‚éøm¼%¿zzº[j²í†'f» ‚GW°Fªw+ExÖˆ˜‘vÂåß i_È+3&fï†ÏÒK6R÷¢Kˆ“¦–UIã4?€cÿ’Óü0-J=šÐÁµïôTO/ÃЗe¾ÏW.ÄÃ1†üT`°Ð0†{ÜPm—¡Ü8±šÈëÉtc2Ç1eì8¹ ²\+Ùw^hÕ¢Œ|ì'¼l_nc»SÜ0»u)²ée{]µ9\Žê”Àóûˆ\.í6PdP]wºð ?æ×(9ʹÅ/àÝ ¿lŸ,aÁÓäà¹Oyν>³>o®4úÄo“U õ»yÙhréí㥊 Ýá×if«Ã|É­$btUÁ–=_g½¬Ù ŠT5uì=Ây¡O;­'0äñÅoš¶Ñõ¦ù™D‹oéhE”væï¦WPÍ ñÕú­ß*¾Ê¯˜hw¢ƒÚ ¯±9‚ ·½›#4a§Ý´õ`çëÒŠ8óR'èË¥A2è¨U(cóJC˜ÚLaÇœã4ŠÛõV7'S±/¹?.„ÙTI~j©1E=¯òI> êWèQ»Œ*³ÊMa'KX´QvU‰üaâWÁ_okËÓ΢¹Û’XÒéÏ™z3‘Á^ã¿ÞŠm!쵿-ßøsØC¼Zcêc¶…‹‚ýÿm[ Û–˜ž—ýÒ¶eø$-û(Õ;méfQpŸàï,¶%ù;ö¸m1cÛ¢¼œB§Ù–þÃphERJ—î§Ê­í©ò¦°°Ñg¬ÉÛRV0: %“bµj&ìJÎ ¥LMQó²”ú²ãìN°ô[—d« ‡2vS\;€xÎliËÕvhvOËÉ÷e”¦ ÕöDyú_dÍo³‡t›X`uêÍŸfÕ–¬’5G‹$ƒÅ0hýÃL‹‡køôAþJ̇"£º"ƒ¢€móG$lþ Éöå®$ìߤºm¶fõ]L''I'Ð ïQƒk¿É…=ñ>[ºÌ®Ô-Ô´rP)Šê†DÇ…ŽòX Ñ–Œ“€4í̓;£ºI&¨ÿÊOSb 96gçËWÏݤĀkÇøÝmÿÒùÌp›„ÐìÏbô¨)Ö>mÂ^¯R}þCLr¾¯<„õ­-ØD“êšõ€®òN]0ãT[ÜüšuâÍþdH@“¸(þly©ûüßö›SÇþéF¦3m¤ƒè¦ùt˜Þ)èP‘[^Ã+@–âìÆ8Ä®%Ñ.¹ì/ÁñÈâR® ” LlNYøÃX¨}T#à˜Q¦³ªFÐ÷ºåÝ‘»(ÓÖ—õ=ûz¨ø¾Î… kÐt¾‡¾ý+çwKÅ O'B‡V“†7ÔW3aã&Éeí«"æßþúáÿ¤þtí¶endstream endobj 936 0 obj 5995 endobj 940 0 obj <> stream xœ•WKo7¾ëWì©¥€ˆák8dmÓ¢îm* ‡ ‡Dvì"¶cÇN‹6¾É]í¬v7H¡ƒÔp8oæÝwFÛΔOÿ}¸Ù<}ÎÝåÃÆt—›û­?vý×á¦ûzk»¬st1tû7›vÓvÖZ;v^öÝþfóB½ØîŒöžØ±¢­ÑÁ{Yñ(¾ÜîÈXÍ&©?¶;«M°8ÕÛ÷F²ê»rj}†XN]Ö–ƒÚÂ3ÞgVŠ7n‹LL)¹‰|Qä ›¨þi¶½z5zÑëúà­:ï·VUlþø6Œ5?}6aô3à49mbÒîµðííÖ±FtaâÍûj,R®AuLêÛrè(Ä’÷:ª‘…ÔxÇQ¾s+n¶XbK ;ËÐí¬Ó¨©m½®p®2ؤ“Ÿ¤òî3jsugÜê¤\rFGrò¡>E¹@±efÀkÇçÅqF+ðÄC¡-·[}çr<þ Jq-p?…L Á.XƒF0ÑM4NºáèÕ<âSÿ7…Á…äW¯æQ×£J©þÓç”ä°t&iòGXŸÁ†pßÚŸtDÿÿZŸô€òû-¡`pÏÀ›Ù"BÜIÖqÇ«*ê‚1¬ž¯÷RuòxÚÜšÎðè5{¦Á­'­²%4‚\ˆ_‰6°ãqE3ŠBáãâéòµ<ŠOÆçZK±Ó޹µQßRv¬HÅXÅ™$ïè±ðÍ"~Aüå›\ÊÍà }¥Eúúf¤¤B ‰´n ¿Ú ýä º}ñªŒ³@Îa° #‹ÎŽÔÏE‚Iý{^{öÒ sU9iåÛƒi;XŽH½´ü}£=óñP­¨rc€Ê_m¤ùôéá1 î*û2še‹U?Xc¨©ßE:„#‚•E\2w²WhPªC§Oí)è“ú±'LôäàTš&íÐ QXòCKIÁ-·-g6LÈGP.²˜ Pæ(ï ‚kYDÖÁrPíÚ ô†sßoA“-B:s%^=ÑñDµ ¦$VC-ëÌWKiœ857 rôȯ[Ý ú¥X‡ã¦uµZªŠ{.[|p1¸è¸B‘`Ô! “êzyѺE¹Šõ¡‚™5 @j飇Ŷ¶ÄÑ»!„F/[$=+W&™ñ2åž—Å6‘Í”ÝÀËð¸Ü*³ƒCŸ™fÁa’_ ×àz jÑ.j©ˆÊRZb09ç8CÄQ}Ù¦0†‘õ:ÔäÄl—XŸ±¼…”ëcOÕ”ü0–0Ê%æoêŠê½n%K4õŶYIÀ‚.MSÀsÒ⨄ÎÀOå« c¤þR²‘S@‚Õ$)ô#MËí vËÓæÂÖ{rep£(N?.žºá…8žUg¢öúò""D±Lœ," ¿@.]ù³Í†—ÄróÙ~ó>ÿáŽD:endstream endobj 941 0 obj 1266 endobj 4 0 obj <> /Contents 5 0 R >> endobj 26 0 obj <> /Contents 27 0 R >> endobj 35 0 obj <> /Contents 36 0 R >> endobj 40 0 obj <> /Contents 41 0 R >> endobj 45 0 obj <> /Contents 46 0 R >> endobj 50 0 obj <> /Contents 51 0 R >> endobj 55 0 obj <> /Contents 56 0 R >> endobj 64 0 obj <> /Contents 65 0 R >> endobj 69 0 obj <> /Contents 70 0 R >> endobj 88 0 obj <> /Contents 89 0 R >> endobj 93 0 obj <> /Contents 94 0 R >> endobj 100 0 obj <> /Contents 101 0 R >> endobj 108 0 obj <> /Contents 109 0 R >> endobj 113 0 obj <> /Contents 114 0 R >> endobj 118 0 obj <> /Contents 119 0 R >> endobj 123 0 obj <> /Contents 124 0 R >> endobj 128 0 obj <> /Contents 129 0 R >> endobj 137 0 obj <> /Contents 138 0 R >> endobj 142 0 obj <> /Contents 143 0 R >> endobj 147 0 obj <> /Contents 148 0 R >> endobj 152 0 obj <> /Contents 153 0 R >> endobj 157 0 obj <> /Contents 158 0 R >> endobj 162 0 obj <> /Contents 163 0 R >> endobj 167 0 obj <> /Contents 168 0 R >> endobj 172 0 obj <> /Contents 173 0 R >> endobj 177 0 obj <> /Contents 178 0 R >> endobj 182 0 obj <> /Contents 183 0 R >> endobj 189 0 obj <> /Contents 190 0 R >> endobj 194 0 obj <> /Contents 195 0 R >> endobj 199 0 obj <> /Contents 200 0 R >> endobj 204 0 obj <> /Contents 205 0 R >> endobj 209 0 obj <> /Contents 210 0 R >> endobj 216 0 obj <> /Contents 217 0 R >> endobj 221 0 obj <> /Contents 222 0 R >> endobj 226 0 obj <> /Contents 227 0 R >> endobj 231 0 obj <> /Contents 232 0 R >> endobj 236 0 obj <> /Contents 237 0 R >> endobj 241 0 obj <> /Contents 242 0 R >> endobj 248 0 obj <> /Contents 249 0 R >> endobj 253 0 obj <> /Contents 254 0 R >> endobj 258 0 obj <> /Contents 259 0 R >> endobj 263 0 obj <> /Contents 264 0 R >> endobj 268 0 obj <> /Contents 269 0 R >> endobj 273 0 obj <> /Contents 274 0 R >> endobj 278 0 obj <> /Contents 279 0 R >> endobj 283 0 obj <> /Contents 284 0 R >> endobj 288 0 obj <> /Contents 289 0 R >> endobj 293 0 obj <> /Contents 294 0 R >> endobj 298 0 obj <> /Contents 299 0 R >> endobj 303 0 obj <> /Contents 304 0 R >> endobj 308 0 obj <> /Contents 309 0 R >> endobj 313 0 obj <> /Contents 314 0 R >> endobj 318 0 obj <> /Contents 319 0 R >> endobj 323 0 obj <> /Contents 324 0 R >> endobj 328 0 obj <> /Contents 329 0 R >> endobj 333 0 obj <> /Contents 334 0 R >> endobj 339 0 obj <> /Contents 340 0 R >> endobj 344 0 obj <> /Contents 345 0 R >> endobj 349 0 obj <> /Contents 350 0 R >> endobj 354 0 obj <> /Contents 355 0 R >> endobj 359 0 obj <> /Contents 360 0 R >> endobj 364 0 obj <> /Contents 365 0 R >> endobj 369 0 obj <> /Contents 370 0 R >> endobj 374 0 obj <> /Contents 375 0 R >> endobj 379 0 obj <> /Contents 380 0 R >> endobj 384 0 obj <> /Contents 385 0 R >> endobj 389 0 obj <> /Contents 390 0 R >> endobj 394 0 obj <> /Contents 395 0 R >> endobj 399 0 obj <> /Contents 400 0 R >> endobj 404 0 obj <> /Contents 405 0 R >> endobj 409 0 obj <> /Contents 410 0 R >> endobj 414 0 obj <> /Contents 415 0 R >> endobj 419 0 obj <> /Contents 420 0 R >> endobj 424 0 obj <> /Contents 425 0 R >> endobj 429 0 obj <> /Contents 430 0 R >> endobj 434 0 obj <> /Contents 435 0 R >> endobj 439 0 obj <> /Contents 440 0 R >> endobj 444 0 obj <> /Contents 445 0 R >> endobj 449 0 obj <> /Contents 450 0 R >> endobj 454 0 obj <> /Contents 455 0 R >> endobj 459 0 obj <> /Contents 460 0 R >> endobj 464 0 obj <> /Contents 465 0 R >> endobj 469 0 obj <> /Contents 470 0 R >> endobj 474 0 obj <> /Contents 475 0 R >> endobj 479 0 obj <> /Contents 480 0 R >> endobj 484 0 obj <> /Contents 485 0 R >> endobj 489 0 obj <> /Contents 490 0 R >> endobj 494 0 obj <> /Contents 495 0 R >> endobj 499 0 obj <> /Contents 500 0 R >> endobj 504 0 obj <> /Contents 505 0 R >> endobj 509 0 obj <> /Contents 510 0 R >> endobj 514 0 obj <> /Contents 515 0 R >> endobj 519 0 obj <> /Contents 520 0 R >> endobj 524 0 obj <> /Contents 525 0 R >> endobj 529 0 obj <> /Contents 530 0 R >> endobj 534 0 obj <> /Contents 535 0 R >> endobj 539 0 obj <> /Contents 540 0 R >> endobj 544 0 obj <> /Contents 545 0 R >> endobj 549 0 obj <> /Contents 550 0 R >> endobj 554 0 obj <> /Contents 555 0 R >> endobj 559 0 obj <> /Contents 560 0 R >> endobj 564 0 obj <> /Contents 565 0 R >> endobj 569 0 obj <> /Contents 570 0 R >> endobj 574 0 obj <> /Contents 575 0 R >> endobj 579 0 obj <> /Contents 580 0 R >> endobj 584 0 obj <> /Contents 585 0 R >> endobj 589 0 obj <> /Contents 590 0 R >> endobj 594 0 obj <> /Contents 595 0 R >> endobj 599 0 obj <> /Contents 600 0 R >> endobj 604 0 obj <> /Contents 605 0 R >> endobj 609 0 obj <> /Contents 610 0 R >> endobj 614 0 obj <> /Contents 615 0 R >> endobj 619 0 obj <> /Contents 620 0 R >> endobj 624 0 obj <> /Contents 625 0 R >> endobj 629 0 obj <> /Contents 630 0 R >> endobj 634 0 obj <> /Contents 635 0 R >> endobj 639 0 obj <> /Contents 640 0 R >> endobj 644 0 obj <> /Contents 645 0 R >> endobj 649 0 obj <> /Contents 650 0 R >> endobj 654 0 obj <> /Contents 655 0 R >> endobj 659 0 obj <> /Contents 660 0 R >> endobj 664 0 obj <> /Contents 665 0 R >> endobj 669 0 obj <> /Contents 670 0 R >> endobj 674 0 obj <> /Contents 675 0 R >> endobj 679 0 obj <> /Contents 680 0 R >> endobj 684 0 obj <> /Contents 685 0 R >> endobj 689 0 obj <> /Contents 690 0 R >> endobj 694 0 obj <> /Contents 695 0 R >> endobj 699 0 obj <> /Contents 700 0 R >> endobj 704 0 obj <> /Contents 705 0 R >> endobj 709 0 obj <> /Contents 710 0 R >> endobj 714 0 obj <> /Contents 715 0 R >> endobj 719 0 obj <> /Contents 720 0 R >> endobj 724 0 obj <> /Contents 725 0 R >> endobj 729 0 obj <> /Contents 730 0 R >> endobj 734 0 obj <> /Contents 735 0 R >> endobj 739 0 obj <> /Contents 740 0 R >> endobj 744 0 obj <> /Contents 745 0 R >> endobj 749 0 obj <> /Contents 750 0 R >> endobj 754 0 obj <> /Contents 755 0 R >> endobj 759 0 obj <> /Contents 760 0 R >> endobj 764 0 obj <> /Contents 765 0 R >> endobj 769 0 obj <> /Contents 770 0 R >> endobj 774 0 obj <> /Contents 775 0 R >> endobj 779 0 obj <> /Contents 780 0 R >> endobj 784 0 obj <> /Contents 785 0 R >> endobj 789 0 obj <> /Contents 790 0 R >> endobj 794 0 obj <> /Contents 795 0 R >> endobj 799 0 obj <> /Contents 800 0 R >> endobj 804 0 obj <> /Contents 805 0 R >> endobj 809 0 obj <> /Contents 810 0 R >> endobj 814 0 obj <> /Contents 815 0 R >> endobj 819 0 obj <> /Contents 820 0 R >> endobj 824 0 obj <> /Contents 825 0 R >> endobj 829 0 obj <> /Contents 830 0 R >> endobj 834 0 obj <> /Contents 835 0 R >> endobj 839 0 obj <> /Contents 840 0 R >> endobj 844 0 obj <> /Contents 845 0 R >> endobj 849 0 obj <> /Contents 850 0 R >> endobj 854 0 obj <> /Contents 855 0 R >> endobj 859 0 obj <> /Contents 860 0 R >> endobj 864 0 obj <> /Contents 865 0 R >> endobj 869 0 obj <> /Contents 870 0 R >> endobj 874 0 obj <> /Contents 875 0 R >> endobj 879 0 obj <> /Contents 880 0 R >> endobj 884 0 obj <> /Contents 885 0 R >> endobj 889 0 obj <> /Contents 890 0 R >> endobj 894 0 obj <> /Contents 895 0 R >> endobj 899 0 obj <> /Contents 900 0 R >> endobj 904 0 obj <> /Contents 905 0 R >> endobj 909 0 obj <> /Contents 910 0 R >> endobj 914 0 obj <> /Contents 915 0 R >> endobj 919 0 obj <> /Contents 920 0 R >> endobj 924 0 obj <> /Contents 925 0 R >> endobj 929 0 obj <> /Contents 930 0 R >> endobj 934 0 obj <> /Contents 935 0 R >> endobj 939 0 obj <> /Contents 940 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 26 0 R 35 0 R 40 0 R 45 0 R 50 0 R 55 0 R 64 0 R 69 0 R 88 0 R 93 0 R 100 0 R 108 0 R 113 0 R 118 0 R 123 0 R 128 0 R 137 0 R 142 0 R 147 0 R 152 0 R 157 0 R 162 0 R 167 0 R 172 0 R 177 0 R 182 0 R 189 0 R 194 0 R 199 0 R 204 0 R 209 0 R 216 0 R 221 0 R 226 0 R 231 0 R 236 0 R 241 0 R 248 0 R 253 0 R 258 0 R 263 0 R 268 0 R 273 0 R 278 0 R 283 0 R 288 0 R 293 0 R 298 0 R 303 0 R 308 0 R 313 0 R 318 0 R 323 0 R 328 0 R 333 0 R 339 0 R 344 0 R 349 0 R 354 0 R 359 0 R 364 0 R 369 0 R 374 0 R 379 0 R 384 0 R 389 0 R 394 0 R 399 0 R 404 0 R 409 0 R 414 0 R 419 0 R 424 0 R 429 0 R 434 0 R 439 0 R 444 0 R 449 0 R 454 0 R 459 0 R 464 0 R 469 0 R 474 0 R 479 0 R 484 0 R 489 0 R 494 0 R 499 0 R 504 0 R 509 0 R 514 0 R 519 0 R 524 0 R 529 0 R 534 0 R 539 0 R 544 0 R 549 0 R 554 0 R 559 0 R 564 0 R 569 0 R 574 0 R 579 0 R 584 0 R 589 0 R 594 0 R 599 0 R 604 0 R 609 0 R 614 0 R 619 0 R 624 0 R 629 0 R 634 0 R 639 0 R 644 0 R 649 0 R 654 0 R 659 0 R 664 0 R 669 0 R 674 0 R 679 0 R 684 0 R 689 0 R 694 0 R 699 0 R 704 0 R 709 0 R 714 0 R 719 0 R 724 0 R 729 0 R 734 0 R 739 0 R 744 0 R 749 0 R 754 0 R 759 0 R 764 0 R 769 0 R 774 0 R 779 0 R 784 0 R 789 0 R 794 0 R 799 0 R 804 0 R 809 0 R 814 0 R 819 0 R 824 0 R 829 0 R 834 0 R 839 0 R 844 0 R 849 0 R 854 0 R 859 0 R 864 0 R 869 0 R 874 0 R 879 0 R 884 0 R 889 0 R 894 0 R 899 0 R 904 0 R 909 0 R 914 0 R 919 0 R 924 0 R 929 0 R 934 0 R 939 0 R ] /Count 177 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 23 0 obj <> endobj 24 0 obj <> endobj 8 0 obj <>/Length 6107>>stream xœí]ÍË&Gïç´„h^ðˆ^ü‚5ÆC"h4b‚`4(¹¸—õ þ Æ„|xó*9¸—œDI4 Dˆdã®xÈÇFAr_ã"{z홚驩ꮩžéyÞéç­:ìÛû<óTÿº¦ª»ª?ªw·<à<ýç× ¼üÊ+]ùž{’Ï„òo~½ûú'úr©z ¿á?›øw¾äÿøÿ¥Êžg$÷eˆ–×kø ÿYÆ¿ƒ?x¼Ž– ;þÌwyX|>Y>wîµ"õ*ˆßð$þüYÞ~ß îPö (RïÂö~Ã_5þfÜ/â‡x‚û _ Ÿ»6ØŽÿcø ¥ømØðþŠñÛ:°á7üã·u`Ãoø+ÆoëÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñ[ lø Åø-6ü†¿bü~Ã_1þ.êÃ{8L¡ƒÁÏÈ_-¬w²lø ÿãßE}w^Æûù1\ËkO¼³Yü ]Ä™áBlÇÿ1ügÿ]?ú(g¥W¿òþ ⇲ÅÀ†ÿðñëm•“·ÞSÇ/Ô»Å8KÜÞ½ÙþÜz ÿÚø—0øÏ›•ÿ†bà%Rv½ Oÿié½á—ë]C¯¶#ÿÆ…¾üÈ÷>~'|JÊÇÇ |tt1õŒP†…l×nFž's éƒo]Û3~^^X¯á_ÿ<5z ø£Ïw1ðJï  O=SÖt1¯ã6`øSõ*ïoþb›øCù4càI߯{/Ñz•N‘·áÄ`úç·C~¥ ÿykøO9Öˆo2öÐ0€âømAï ÿŒz•¼}ý9uàIñ)çî'!%Ÿ\ü®ßr¹Éå-¯£B^A˜w¨¿Ò…Þ¾þœÂ:ð¤õ‚뫬WxY|f¼€(ŸP>¤uÔI€Å¼Šðk ¸ ýÙw ¬‰{sëŬEöÃð oÐì<«›W/7µÄ0eùÄ\Í•EÇ/1ÈykøSõ:(!6ãÙzx°1p3<ú‘¶õ™ÝØt1-‰Ý8f«%†Q–÷ß sp—¼£äÿëéŸÿ‚òîþg6‹?Uo×®ñü QÈzxà1°w¡£Ž §ÜØ—ƒ“‚øÏZ |òƒÍo¨Þboý„»õv÷îÛÝ¿žÞ|, xƒøSõv3ý\ ¥¶Q0ºMü¼¼ïx’fÄ¡\èâþsÓõž¤ë}ÈàIò8°”ÿÜ ¬^‡ÜZ—Þ‡¼Üný«ßso=ÛYr Þ“ZφWyó÷»þÔ£Øcš]¯ï˜ pÈmÆÁå&ñwó¦h.^ÍÑSÏ` ìԴĆ âǘ‡©rPhïU‚ZúóþÛëÏþ2 ŸWoÔ~†Ú¿õífôó5OÛ›ŽÜfØptYQôCrßc8Žº û¶‡ÉηžÅÆ R”g´ÞÎä…ŽÉ{Þ­hÛExFù?ú°é«>¦°ž»´¿פŒ)õ ”½ ÷Ab€ãã Ÿ{ñ=—CþÚ5e½kàWú ~|ðÿªU |~lKµ€ûæËM÷ÑG#±Éa¼5ÈŸ¼ׯ`òZ™n¤f|ÛȨÈI/>±4ÓZ9Þ»7éwÿ‚›ìMNùÞï~¯ (<›BÃzCì?s>Á'j˜„ßB‡ö¬®œiRþËõv'|—Å bbÃGG]»LÚ³ þ…ù“¢à5ø•» RÄLØäÏûVˆÁRõެw/(ç2\oW˜ä>k il¸³=€;ÓâÛèß]”OèìB¿ bñF .Xèaƒ¬Þùæ/œ(ÿåz»ƒ?x¼Ž– ;þÌwyXxçò¼žÜ &q.Á/» p4Ú¥q(x›rËD`¿ü>ËÊß˹s¯ñ¡¯ Èò—›€ñkô‡È‡“¯®3à0óœ^4§å£|GÑ&ò_®·;ø3û÷¡ì …Õ-³áUíÊ“zLöµ+Ûª ãÔ[ïŒß 6ì(…M¿k¶ü5È1feÆ;MÇÚ&«à[âMDûyÖ ”²aAþ)üÑòéì…Î%y¿ÞBü“lѳršæ¿NX÷šÍg’ƒ÷âr×!5¨4ûŸSò×t—óôG^¿ »åñD4|âÞ®…NÊ ùgÙÝþöBŸŠ Oâ×@tož>åÚ‰CkÚeñ§Ö!çíõ×Ë_c½'ÙK¯A•ª×éNÚE~‚ß…>¯å!¬=ç¦@xfù’fìMµEósðǢؔ¢Àñ˜r͉Sê¼®¼–#“°~#È_)p7W„õÛí"?!º§d(¬íÕ´,¿ýÄ&Ðä:¾¿ÒQÌm ¦lúw¯‘¿†›Þ†³°eÉ_I ¹4ƒ°°Ÿu˜Û|´/Öó¬~/4þœ4;µ/ZþjI ¦÷å佬“¢±«>¦Âm\ûXΪT 6ÃÏTÊ_“@֟ɰEˆsÛEöÕÏöÉ*Ÿ{nخ԰³œîØX-LJ~åð+ïe•™¤°?ªl‹&Ë–¥üžº¬9¹¿S°crXø*vcÿ“'„°G™gáÉÅ¿ÄçÔìCtéØUŸãBÀŸ»D,°7ÿYã<+÷¦Êû³Ú…å)ÌAlÁvû‹!£éu†mtãý·Ñå»\Æã?æCN„ÎÖ§T쪟ÃËÚS-°žqtˆìåŒz=.BiÀnîJOÖ:¿CòÁGbVCá˜ëˆq @òì@‡¾ÑY.¼cVïKçÔc¾K¬CFñ‡X(“G×?''í²Î£Æ] JáwÈÏ$]§æ¬¬\Vú®Yúã}é¬u¬äŽQôÞ¡]øDêÂ9×o¥<ÀÇúx˜+^”øÃyî(]/xž3j.Ö[)箢106`""2Åñkº6§˜w rèö?¥ç#]oÀn–þhäé–¢„Ç€pˆ2Øó’9‡öB` L~ëEœš¾’)üêè¹K“øñ‹$þaÐ0¥/'ÈAðŸùIT (÷L"9¤ရŒ?uØ}‰ÿå™Ê_³Ddù“`¼÷øirb#þ³;ݘó9y:ÙSBFžä·-MÚ0çÏÕ˜ÌÃ/Ç`òäœëÕ(Kþ\5‡múájŸ%[ÆOÓ†ŽÏô¹XÞ²I}ÀÊ10ç±aÐEbÀ1{ѧðûI9ÇèÊù—–àçõBÇÁg×¹V¹¶ûÈ’?¨jö‚ÂíŠâçÆÆ}„,ÿyÔmádZãQx®—S ûð„ˆ ó)‘=Õ Ya>œœX¹1@cÆÁn£þßžˆ cü]ž'„õ è ñkb°è8,à×öw@í{l~r <NšRýË46$êèBàz1p»$}3y¥‘?î4S™ñ`ø=œœX3ü‡.y‚LÌÂw÷?“ôŸ_x0þ[7˜ôþ³Œ Ì#Kþ´k@Y]8sÿñ÷<îã‚|4þs‡mÌhüÚþs÷ÞÛ÷ÎýÄúM>ꪰº}ùÏnk1p¶ “ì ^Þz&ŠÈ¥Òg<‰ŽðWîv¬ùƒ; 7~ë}Y3‡ëŠXÈ8ôêMôM¡®Á€±`™«BâC¡<êY“ëý¥ð 鳊Ûp#|.Ÿàž —‚ç®dù‡¦umAB ñ‹rÁÆÀ¤L‡MEsv|‚'ÈpYü]7Ä:š˜yèåßc&‘ŠÚüL2~IÎÈ=ÉöŸy/0†Ï}è c}÷M–?m—U?YpExf•ø‹W_]=i®PYÃàw™ÄD#„A˜ð‰0ÁÔ3„„ g™Œ„—)Küõ½iÁ¯ä#è· [PŸµR L'>2Z( àKàiWz0€a âøøÑ‡á“£Çžt%ü‡†¡Îâ‹Ù³WVÎçî›~ëÜèçýç«øÏr€”`gøÏ½¹±ôüƒLâþ3gäèɶSŸœ "גּ†B§Ð:Ü4R)ã—®]X„sß]VÿôçMÂÎ6h>¹Š4L V||k°^BãÜ¢jùŒ0QbÔá~G#*“pmBŒ®|æÇ~jÀã~-ùüBª,9MbŸµ–ü‰™1Ú}æI•úvÅ~>¢7_æó…5ÅÀÍ%ˆ¼Õ'ïE‰Fú**«„ÏÉ?~NŸÓuŒqˆÁ®2ÛHëFáó¦Q¡ X ᔾu¼]2%Ò-¨¸Ö†V'Zä€}ò5b`}ÇuÆÅä¯aèûÊRø>ÆÏ‘2¦Ô3÷ ¼ÐŸ{ñ=bÀEòâ²Ã¶“àÿ÷$áÓÀáa|ÓâàEŸÊk=?üƒ3éèë:¤”ÿÝFL¸m˜· ãrˆžÐÞ¶›½mkÀŽéOAùï}T/Ó¦3)ùÓ·™6à"ø 2/Ÿ2€66ÜÒåÿ¶T^ÜF|øeÅôîÛþe>ƒ®G©‘ ègª¬ÄßaNû X‡>˜†î, ³¤0þ0Ú®€?®åŒþø·‡4í¥¤ÔCI‘ú–z…/…ŸPô™òy¡¿øô—áÆ †Ú;AHŽßÙyqGÆÓTøÖ‘ŽSÐõžOª¯‰– þ;žÿ¿ˆÀñWNFËCJ‡¢rpnïDÆ$ôM#n7%5&ø$þ’y¡—ãÝ-ÔÅÀ¸I­a@yÉÝ0Ê©,ì‹ 8M§ònr­)ÆëØzÛr¶ÿüšãåªÅ‡02þQ,í˜#Ý’ï_8¶ÐvrÉ„#‚n‹èÆ™’È­Í#;òŸÝHΤ¯‡ÿ‚§øuÆl±ÿðôWß ûX׺©à:pw\÷ÖÅ0º|,2!Ĉ̵ sÄ wdõ7 Fqfgv1}ùºò·yorôØ“rxÍlw…Û‰N®ÃðR][  ØÅÞt^äÑ:ÕzþÕÄ0€ø“ùBÀï >Á9¶»Ül4Û@W6*s2ÉõÒí~ƒ‡…Šè^èÑÜÞJéF[ æ­cæçHéüÙ€ùvbÀrøÆxofTˆ­€ŸÆÒ}Ÿ;Âéùüà!Ž-Õvº.•&è¶r׈c<¡ÜpjêÉV¤ød݇¦_Ç^xuõäýr8Í2é°€xÚêT (äÜ—õ§Ôå\þ|²@®¥Ê»‘”ׯhêÕ\i§Ä¿P_g×ËãÆÃ(½ó¯ÉÃ$ÄY¤ñ?—_‰Ç ëÕäÇŒ¿¢“€y­Xxßx§ ¡ƒÒ\`ïDÓpÐÌ9aüJTzØYrSök3l ¼˜ÈèW³ LŸû¾” ‡%Œ@‚ügÈY~p>gfYþ“õBY¶»]4öàe¼O5õ ¡RÖ’"~ç­Pø—£šW¯K¬?-'®Ü ö.\ôÛ6œÕöRíM50U¯²ëWâ×óä˜'å¿ÜîvÑõ·,»l˜OB!/e៭RÑq`†Ü :nJþ.­@.Süþ^¥üg·7Ü-”z Z¯¦:e[fôûXI&å¿Üîzù8î¦ü„,”{Ž€?kðI™î¹-éGfÈ?…ù=·kÄ/¡ošÄOêU¾Vå|A.~¢'3ðózeœkÅÀrftüB–à—ßwP\¡iËßA›aÀ“^ýÊû5ø³ä 76Ë¢õ ¯‡ÞDV½)œ+ÆÀn/1@A>†ßðW‡õXh@Áz ¿á?›øúò#oÜûøð))_€òÑÑÅÔ3B6¸v3PÖoÖkø ÿÁßÅÀ+µ! ß¿ì ¿á? ø-6ü†¿bü~Ã_1þý­G¡/¯W.~ÃØøOgµ‘w`ø ø-6ü†¿bü~Ã_1~‹ ¿á¯ÿ*÷ëË¥ê5ü†ÿlâoú†"¹yÖ¸ßUS¯á7ügÿ®TûõwÛ@¹TN ÃoøÏ2þUrb)Ëæÿ~ÿ°^‹ ¿á¯¿ÅÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñ7Ã:¯ISê({ïÿ‚2ÄÇÇÈ箊Ôkø ÿYÆ¿+ÕˆHŽŽ.º6àmƒ`;ïÀðþñï௣eÂŽ?sãÆ]ÞÃ)—Ï{­H½Ê²á7ü‰–·ß7@ƒ;”}ŠÔ»°ý†ßðWßÖ ¿á¯¿­~Ã_1~[6ü†¿bü¶lø Åø-6ü†¿bü~Ã_1~‹ ¿á¯¿ÅÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñÿ.¨. endstream endobj 25 0 obj <> endobj 33 0 obj <> endobj 34 0 obj <> endobj 38 0 obj <> endobj 39 0 obj <> endobj 43 0 obj <> endobj 44 0 obj <> endobj 48 0 obj <> endobj 49 0 obj <> endobj 53 0 obj <> endobj 54 0 obj <> endobj 62 0 obj <> endobj 63 0 obj <> endobj 67 0 obj <> endobj 68 0 obj <> endobj 86 0 obj <> endobj 87 0 obj <> endobj 91 0 obj <> endobj 92 0 obj <> endobj 98 0 obj <> endobj 99 0 obj <> endobj 106 0 obj <> endobj 107 0 obj <> endobj 111 0 obj <> endobj 112 0 obj <> endobj 116 0 obj <> endobj 117 0 obj <> endobj 121 0 obj <> endobj 122 0 obj <> endobj 126 0 obj <> endobj 127 0 obj <> endobj 135 0 obj <> endobj 136 0 obj <> endobj 140 0 obj <> endobj 141 0 obj <> endobj 145 0 obj <> endobj 146 0 obj <> endobj 150 0 obj <> endobj 151 0 obj <> endobj 155 0 obj <> endobj 156 0 obj <> endobj 160 0 obj <> endobj 161 0 obj <> endobj 165 0 obj <> endobj 166 0 obj <> endobj 170 0 obj <> endobj 171 0 obj <> endobj 175 0 obj <> endobj 176 0 obj <> endobj 180 0 obj <> endobj 181 0 obj <> endobj 187 0 obj <> endobj 188 0 obj <> endobj 192 0 obj <> endobj 193 0 obj <> endobj 197 0 obj <> endobj 198 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 214 0 obj <> endobj 215 0 obj <> endobj 219 0 obj <> endobj 220 0 obj <> endobj 224 0 obj <> endobj 225 0 obj <> endobj 229 0 obj <> endobj 230 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 246 0 obj <> endobj 247 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 266 0 obj <> endobj 267 0 obj <> endobj 271 0 obj <> endobj 272 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <> endobj 286 0 obj <> endobj 287 0 obj <> endobj 291 0 obj <> endobj 292 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <> endobj 301 0 obj <> endobj 302 0 obj <> endobj 306 0 obj <> endobj 307 0 obj <> endobj 311 0 obj <> endobj 312 0 obj <> endobj 316 0 obj <> endobj 317 0 obj <> endobj 321 0 obj <> endobj 322 0 obj <> endobj 326 0 obj <> endobj 327 0 obj <> endobj 331 0 obj <> endobj 332 0 obj <> endobj 337 0 obj <> endobj 338 0 obj <> endobj 342 0 obj <> endobj 343 0 obj <> endobj 347 0 obj <> endobj 348 0 obj <> endobj 352 0 obj <> endobj 353 0 obj <> endobj 357 0 obj <> endobj 358 0 obj <> endobj 362 0 obj <> endobj 363 0 obj <> endobj 367 0 obj <> endobj 368 0 obj <> endobj 372 0 obj <> endobj 373 0 obj <> endobj 377 0 obj <> endobj 378 0 obj <> endobj 382 0 obj <> endobj 383 0 obj <> endobj 387 0 obj <> endobj 388 0 obj <> endobj 392 0 obj <> endobj 393 0 obj <> endobj 397 0 obj <> endobj 398 0 obj <> endobj 402 0 obj <> endobj 403 0 obj <> endobj 407 0 obj <> endobj 408 0 obj <> endobj 412 0 obj <> endobj 413 0 obj <> endobj 417 0 obj <> endobj 418 0 obj <> endobj 422 0 obj <> endobj 423 0 obj <> endobj 427 0 obj <> endobj 428 0 obj <> endobj 432 0 obj <> endobj 433 0 obj <> endobj 437 0 obj <> endobj 438 0 obj <> endobj 442 0 obj <> endobj 443 0 obj <> endobj 447 0 obj <> endobj 448 0 obj <> endobj 452 0 obj <> endobj 453 0 obj <> endobj 457 0 obj <> endobj 458 0 obj <> endobj 462 0 obj <> endobj 463 0 obj <> endobj 467 0 obj <> endobj 468 0 obj <> endobj 472 0 obj <> endobj 473 0 obj <> endobj 477 0 obj <> endobj 478 0 obj <> endobj 482 0 obj <> endobj 483 0 obj <> endobj 487 0 obj <> endobj 488 0 obj <> endobj 492 0 obj <> endobj 493 0 obj <> endobj 497 0 obj <> endobj 498 0 obj <> endobj 502 0 obj <> endobj 503 0 obj <> endobj 507 0 obj <> endobj 508 0 obj <> endobj 512 0 obj <> endobj 513 0 obj <> endobj 517 0 obj <> endobj 518 0 obj <> endobj 522 0 obj <> endobj 523 0 obj <> endobj 527 0 obj <> endobj 528 0 obj <> endobj 532 0 obj <> endobj 533 0 obj <> endobj 537 0 obj <> endobj 538 0 obj <> endobj 542 0 obj <> endobj 543 0 obj <> endobj 547 0 obj <> endobj 548 0 obj <> endobj 552 0 obj <> endobj 553 0 obj <> endobj 557 0 obj <> endobj 558 0 obj <> endobj 562 0 obj <> endobj 563 0 obj <> endobj 567 0 obj <> endobj 568 0 obj <> endobj 572 0 obj <> endobj 573 0 obj <> endobj 577 0 obj <> endobj 578 0 obj <> endobj 582 0 obj <> endobj 583 0 obj <> endobj 587 0 obj <> endobj 588 0 obj <> endobj 592 0 obj <> endobj 593 0 obj <> endobj 597 0 obj <> endobj 598 0 obj <> endobj 602 0 obj <> endobj 603 0 obj <> endobj 607 0 obj <> endobj 608 0 obj <> endobj 612 0 obj <> endobj 613 0 obj <> endobj 617 0 obj <> endobj 618 0 obj <> endobj 622 0 obj <> endobj 623 0 obj <> endobj 627 0 obj <> endobj 628 0 obj <> endobj 632 0 obj <> endobj 633 0 obj <> endobj 637 0 obj <> endobj 638 0 obj <> endobj 642 0 obj <> endobj 643 0 obj <> endobj 647 0 obj <> endobj 648 0 obj <> endobj 652 0 obj <> endobj 653 0 obj <> endobj 657 0 obj <> endobj 658 0 obj <> endobj 662 0 obj <> endobj 663 0 obj <> endobj 667 0 obj <> endobj 668 0 obj <> endobj 672 0 obj <> endobj 673 0 obj <> endobj 677 0 obj <> endobj 678 0 obj <> endobj 682 0 obj <> endobj 683 0 obj <> endobj 687 0 obj <> endobj 688 0 obj <> endobj 692 0 obj <> endobj 693 0 obj <> endobj 697 0 obj <> endobj 698 0 obj <> endobj 702 0 obj <> endobj 703 0 obj <> endobj 707 0 obj <> endobj 708 0 obj <> endobj 712 0 obj <> endobj 713 0 obj <> endobj 717 0 obj <> endobj 718 0 obj <> endobj 722 0 obj <> endobj 723 0 obj <> endobj 727 0 obj <> endobj 728 0 obj <> endobj 732 0 obj <> endobj 733 0 obj <> endobj 737 0 obj <> endobj 738 0 obj <> endobj 742 0 obj <> endobj 743 0 obj <> endobj 747 0 obj <> endobj 748 0 obj <> endobj 752 0 obj <> endobj 753 0 obj <> endobj 757 0 obj <> endobj 758 0 obj <> endobj 762 0 obj <> endobj 763 0 obj <> endobj 767 0 obj <> endobj 768 0 obj <> endobj 772 0 obj <> endobj 773 0 obj <> endobj 777 0 obj <> endobj 778 0 obj <> endobj 782 0 obj <> endobj 783 0 obj <> endobj 787 0 obj <> endobj 788 0 obj <> endobj 792 0 obj <> endobj 793 0 obj <> endobj 797 0 obj <> endobj 798 0 obj <> endobj 802 0 obj <> endobj 803 0 obj <> endobj 807 0 obj <> endobj 808 0 obj <> endobj 812 0 obj <> endobj 813 0 obj <> endobj 817 0 obj <> endobj 818 0 obj <> endobj 822 0 obj <> endobj 823 0 obj <> endobj 827 0 obj <> endobj 828 0 obj <> endobj 832 0 obj <> endobj 833 0 obj <> endobj 837 0 obj <> endobj 838 0 obj <> endobj 842 0 obj <> endobj 843 0 obj <> endobj 847 0 obj <> endobj 848 0 obj <> endobj 852 0 obj <> endobj 853 0 obj <> endobj 857 0 obj <> endobj 858 0 obj <> endobj 862 0 obj <> endobj 863 0 obj <> endobj 867 0 obj <> endobj 868 0 obj <> endobj 872 0 obj <> endobj 873 0 obj <> endobj 877 0 obj <> endobj 878 0 obj <> endobj 882 0 obj <> endobj 883 0 obj <> endobj 887 0 obj <> endobj 888 0 obj <> endobj 892 0 obj <> endobj 893 0 obj <> endobj 897 0 obj <> endobj 898 0 obj <> endobj 902 0 obj <> endobj 903 0 obj <> endobj 907 0 obj <> endobj 908 0 obj <> endobj 912 0 obj <> endobj 913 0 obj <> endobj 917 0 obj <> endobj 918 0 obj <> endobj 922 0 obj <> endobj 923 0 obj <> endobj 927 0 obj <> endobj 928 0 obj <> endobj 932 0 obj <> endobj 933 0 obj <> endobj 937 0 obj <> endobj 938 0 obj <> endobj 942 0 obj <> endobj 943 0 obj <> endobj 968 0 obj <>stream xœ]A E÷œ‚”blkÒ°©›.4F½…¡aQ ´]x{ajqñ æ3ó)ºþÜ;»Ðâ½zÀBu:Âìר€0ZGJNµUˇpU“ ¤è.2<_h*³ñUNPÜOUƒGåfR^ä‚(ݤeL´ÆNÿ]7Ã`~*³8/¹ í!m³8; râœ5 «J «‡Œµ@%ÔØk5·Íöy©Zc·`JL‘‡·¾|È.šDÞ¡Q_Ù endstream endobj 84 0 obj <> endobj 969 0 obj <> endobj 970 0 obj <>stream xœ]=à …wNÁ ò«$•"–tÉЪj{&b ’ ½} $:<¤ÏÏ–ýȆñ:½Ñìá­xÁF•6ÒÃjw/€N0kCŠ’J-¶ƒâ+îH6ܸ{Pl•øÎÈž—6¥" +au\€çfÒç9ë•bŒü³š40©£³ÂÎ ÕÁÄ ¥:Õ ÖèÔɕѩ“Û,Yº"`Å¢ÐmãêsI¸"ä9ϧb÷ÌCÇP!‹6ðûg]˜¢(òìxe˜ endstream endobj 82 0 obj <> endobj 971 0 obj <> endobj 17 0 obj <> endobj 80 0 obj <> endobj 15 0 obj <> endobj 78 0 obj <> endobj 13 0 obj <> endobj 972 0 obj <> endobj 105 0 obj <> endobj 973 0 obj <> endobj 76 0 obj <> endobj 974 0 obj <> endobj 11 0 obj <> endobj 975 0 obj <> endobj 74 0 obj <> endobj 976 0 obj <> endobj 9 0 obj <> endobj 977 0 obj <> endobj 336 0 obj <> endobj 72 0 obj <> endobj 978 0 obj <> endobj 60 0 obj <> endobj 979 0 obj <> endobj 58 0 obj <> endobj 980 0 obj <> endobj 244 0 obj <> endobj 185 0 obj <> endobj 133 0 obj <> endobj 31 0 obj <> endobj 981 0 obj <> endobj 131 0 obj <> endobj 29 0 obj <> endobj 982 0 obj <> endobj 212 0 obj <> endobj 983 0 obj <>stream xœ]O»ƒ0 ÜóþƒðXZ ±Ð…¡¨jûÁqPœ(„¡_ C‡³t¾;ù,»þÖ³ Áá‹"Ë:ÐâÖ€#M–EY¶–'ÎÊ ÙÝ•<Áf ³óAÍ$Ÿ×KWåB§iñ )(žH4EÑ6Æ´‚XÿIG`4‡³Þœ UQWÙ*)šJœ7׈cn𛤖é÷Œw>¥`ƒø1bS/ endstream endobj 103 0 obj <> endobj 984 0 obj <> endobj 96 0 obj <> endobj 21 0 obj <> endobj 213 0 obj <> endobj 19 0 obj <> endobj 85 0 obj <> endobj 944 0 obj <>stream xœU_HSQÇÏq:/9—ƒ¢Ú.ˆ¡`sI`J%12Ô‡„ÀˆÕ˜×9ÝÝwW—é¦n¦îþæÌÍSÉt:ÿfEM|¯ ’^ëµ s×õ¡ëˆ(øçðýþø~~£ì,„1V›ë›*ŽnEÒ,͒Ω@ޤ—ÓШ@“½˜ö$'HÛqb+@9»> endobj 945 0 obj <>stream xœ}SmLSW>—ÒÛ«üJ'lµ½fŠš…mº¡Û¢2‘ÄàÔa¢&šA{fý¢´…ò%…í}ûA¡8%Q]ÌŒMtsšLȲlYâœK6šè£ ‰Ž-;§=Ü- Î?ûqsÞóæyŸ÷yŸó^ef †aTÅeÛ÷¤ÃÕä5†h3Èrh“¯h•Ÿ\Q‚ZêÌQ­òÁR°˜,[Hæ-B åBdC.äCQôú]Dcègt=B£§ÌfY±Íîq˜ªkœüÃZ¾°¨èí|þ‚‚"~«Ep˜ V¾¬ÂY#X*œòÅÌd3˜§‡_ónÓiß´~}}}ýº KÝ:›£úýµù|½ÉYÃïê‡[0ò%6«“ßUaøYéëfb›Åîr ¾ÌfV{…C°ÎhØfªv NÁj¬3Y«ÍBË’n,³ÈÙ˜Y¨J£ì›Ñep¦ÓÏ1FSÝ\áyÁæ´?/©|Q-4<ç3à9ÄL,4 „Ô‹Õ»íÙ_¸e[ÁÖbĈ 0A&Ä„™ÓÃD™^¦‰1ý(+íp&ò ÙÍó[ÆáŒ¯K[CŠéÌ|âÏ&´Éq-{w˜ÁU·¦k'Jñ·ôvµ V¯‹û¢hÎÛÞîHw( ?[sµü{š-OPê©„ªé ZJw?ø9o ú… /¦ûãÎ?Xÿ®¾ˆ—à€7pÙøž4'ãrËUx•t[Óîø éȪAˆ»]PߨËN%¦›ÇRË )’Îh(–vvxÅtç¶Åà„.y½‡CJëØRºk£µ©«¤Ž®NzÅÉÖÞX( ‘\ˆˆÁνIöæžÅ,àFßuú!w’Ý€[•S×Y»(šõ/ÙP*Ûð©6™¯ ‰1o¸6ÜŒE¡@X_ýž±2œA.7`ì²/Á¸o‡! !®ßGZÐÑ®Ë/⩾„VLsœtÐM@½hÒæQã¹Jû 4õù¸ìÔÓ͉T~‚ÁoNâ ¦ÓÍš„j%\>­OÞ!ÅSwT8¸RgÀãϲaÕi¸<©KLÝ0¨&á E?žÃ¨²µÊ“Ú”ÿ¾6óϯmæ¤kpþEvÊøúŠTeqw­­¥å²UY%zûd«zr!a_¿T•\œC¾dñ«ð %¸Úq¿ñÖ“MןÝ$›F³ðY¥–V²NE§è‡h#§¦jr¤ãÒ_Þ#Ðâìëd'ŸÊÿ¾léÃa†˜±BA~×&K5@0epÊüdvPn¥›qeó‰îy­‚b° ¸æð pÌ£ÇO¤Æ›ÒDpªˆk‰ÂˆnŒC‚G¹ê³Ôø¢Lo\Ѹ¡Ä6Ψ c†¦Îä]£¬ ­x3­<î‰tÉ(ÅAà{¡?¡Î˜žÞ#•«É7b²‹èWZó³ÅLÓ’¼FÍ)1hו§·¤V/ý ª Š£²Ñ`ð”þ¿ÎâçËwÍHô¡äžÛäž$-½1Ù×™­hj’ç èºýt)ÍË£‡hz‡ŽWIÈovS£¼²ú`[âðÒˆsî׈G;Á \9ëê„–•"m¯¥!ý>i€æÒµÑï|í wà¼}p|PîÒEÂx)Î{‚á> endobj 946 0 obj <>stream xœ=’{LSwÇï¥Ð{«]‡º*ÌíöÊcC‘Çž$[´>2&RK•ÒÖ¶PÊc±PzJ ב2œPž!Ð!S óí1þ±lÉb¦‹[æÛ¹ðsÉ:²,'99'9É÷{ÎçÐTxEÓ´X™¹_•öo'l§…ç„çEà\½¿šRHÃÇÖê6£~žxs#)M,ç”F“ݬ+)µò šüKii{vó/§¦¦ñûʵfFmà3ÕÖRm¹Újô|ŽQ£ÓZí|BF©ÕjJOI±ÙlÉêrK²Ñ\òæÎݼMg-å³µ­¹R[Ì2¬ü1u¹–_·–¼ž•ÆrS…Ukæ3ÅZ³¢(fŸÙbUŸÒPT •CåRïQû)%u€bCkQáT5u—.£¯…%†µ‡ý-¸dk‘ÄØ pÔG ¯¾&w Ô‚=µà0‘¶'¿E¯·ÙUÝ\å®¶2_|«¥Û3c€;®¯¤±AÆ:0^º‰QQxU¼Hb#’òÅ#Þ?`&á']ÚÅÇ‚^Ž2AΊeBmHõÑ4ŠÂ-"4¡AËÈ>ò:ÕPÞ±] ú&çò†²©ŽWpn¤ÅdoCD>³xŠäöá|fÅ۳зa~]éuF&|ä¶\£ÇVðüŠHØ!dÈ/Ã%[}MC½+ë)n= ¬ž¼$*·UŒ8?Ô}ë€lV™ª#Ý¿¸Æ^··Ø3à´(v0vpøÚ[ §èÑσ¢¯â«€/ÌöO…£e2º .¾Ó ÓìâèÃðÖ,S ç©ëN`û=ü ™PäœÂµ ¾å£ÿD nœ¡EPÈ11H1G%v'}ïb5?’~†ˆ¯½soöÖ27¯ú€9Pb7‡E?'–œã˜?Œ/ŽÓ˸ß@‰H¨Â9ùÏÊïHr6y¦9¥p¸rpxÐ?ñeu¯ËËu¶ø[¯»4Q’¡(cH:É("¢ÜTµt÷ÆÐÌ€â üÅÅŸõ@¿¿êG=!¿~–HnÊc M*õÐôÐå{˜×ÁÉVãC7•Žã»ÿ1ëÅè³Õ#rrøO~cfeAý÷©⳸}×’°÷}]]•¢-GÞ˜ |,F‘¾­†¼ÊÅéœcM6ÈÍhe€• }Î)A2Ea4Ä­"Á¬üÓÐ/ÚÀmoàl…Æ,`I `Üô¢#q[û×îFw³ËíVœs4Õ@{jÐ2<8üùôCÂC1É=Dd„&›ïÇcúõ`Û“ÜÂH× ð²²³]BVžôuv‰É‰v&¸%¹ á{|RÉx‡TŠ’+Ò§> endobj 947 0 obj <>stream xœMTkTT×¾—af®¼D»nÔ&½3h ¢¾€ðˆF õYQÂhø€qa@ÀAŠ<$Óò˜Ù0<38dˆ(/G U^*>ÐZI´³¬ÖƤ6j±!µš}‡£]½˜?]g­³ö9û¬oßþÖ>4åîFÑ4-މ› üù7iþ-7þ" ¦éw\z1x‰ÀËýä[~.–ÍAÕlTøR"šÎÊ-‹ÑææiÒÒuòŪ@ùòÈÈð`ùŠeË"åÑYê.}™ƒŸçÀÄ‹ôÄ~ó@ÄG¹V³ÉÒÛ¿O’‘¤ù-ÛOEC‚ˆ¯?™K¼Q¼ï_îiëm•â‹Ø)Ö7ŒÈøï¤+^ÞgwDG—¦B"$Ú3œ™gª.C7´×|Þ?xªç|Ët­òáõŒe=¸³CôøŽÝñVÌg4BÛi8Ÿl%ÁrBOò3ôY„Á2‚¢[T*KÊeÚuÑû»Šm©Ãð'hgjºÙ&œÿ´}P äêl¡ÈFpâ¤Ë4¾ûÅÏDXÇÏcq¡“ø#%yríƒ vCg0”—|,ÐÚuÝŽ–£ý)§6„¼­ 4Gè ä§ä’tè7q…É’>Ó@uœ‡CŸá¬×"gŽô=0wË|\+ó.7}w ¿šñÿÂ/Ù Àvb%V í1ïiE+Z[¿ä„Ëkì^?œ÷CÉã-¸·áæ'—}}ÇÖ/„£jûZkD@¬‡¨â­¹Aï«€J€“·8v¯<ñ ]¾lWdp¿þ A0“m’£0n;Ƽ¬—ùq‰É’‹µaLXábå áD©X^zãéä?´Óüâ¿‹øWÎ:É~³´ÍXŸ[`4–”q/%/wˆ“ñ›UÚÇ¡\z²d¨f¼fíºaøµütièŒü¿HCø –ü— Ig:qæ[tÇUô˜¤1؉§_ˆ0fGKÀ7à¬ý¸µ­éF?´2Íe5UT”qêÒØ’ÛÌ~ZVk0%p¨HFF¥¡´ÅR]ciäz£­7„ò'4ÖG5u»a(+©©»wÅWåÃ&x¿cß•>“µ Ž2'ö·eækJwNFà< DŸ)ôEqÐs"ÛœP”‘½æÉ{ž¼ñ¼½—¾‡4Ž ,·à_ÙêÁê»=ãÆ/=†0tí/ªÌ- “Ùv ÓÖÓ8tA}•x“5dñ#*ò;œåþß}Öq’»>zø œ…?Œ|4˜|zW{(|›´Ê— Ž“%€Q}w.þãù¹¥ªnY×Þj%(„'êL•6#½PñÚãü#üàd“àqý ‘KÌ?e¡¦ºŽé Ò\ þµ…&]Ñl03J‰šä‹û$5Í–q›¥¾îIu30¨—(“¶oOMf'¸˜¼ [˜m§Ê?…sMœ] ¸®Ý®~Îü¤þ… ü&þxMÄGã+öY¿c.3ÿ!Òaaô|¹6`éÝ=çs8¿=[ã ’!^¸@sQŽÞ_¡Ò‹ÎmèâH¿ٔÖÒãÐÆ\¿ßyïÞש«CˆdÑh„:=²†Å¥+{~{.¶/ˆòO_±Ìà»ï‘> endobj 948 0 obj <>stream xœu“}PwÇw „U#¨ízSwÓ;F@-Ez Ú^QPlªBÚ)­AŒ”¼°C,øÎ낦€òÀ¡R±têõj\§j4jϱŽs§wíµhÏÖNGŸùÙ™‹ …δÿìî3³ûü¾ßÏ÷»4DÑ4š¬R«Æ=~œ+Í¢¥ÙAÒ‡tPú92P1+§£13§Q2š¶îM¶X‚!'צŒÊŽV.\²$~2.6v‰r¹I/²µf¥JkËÕ›´¶À§Ì°dô6‡2ê•\›ÍºôÅív{ŒÖTcr^^ ´l¹Êt}^ت߬\e1Û”¯kMz嘺˜±[²Åd-´é¥Ê²Y/˜)Š 7[¬BV—­ß’cÈ[CQk©uÔz*ƒRSIT2µ‚ZE¥P«©4JE=O…SÓž©`ÊF #èò ™A‡ƒÉÞ’}<3ørHdˆ!ä®|Št0L:"^éï|¨öɤÅ8ÌÞÓ /IÙ¨/ÚÆ @S6—*/ɳ¹šøAâ×O)oê·;Jx¦ÊÿçúLtÓ9òž.ô·ß’Î+ñ_"-ú°=pÞÌcqzì÷„"Tl™Nf|;ÿáÃo¿Ãy‡$°ÉªëwG.\¼råBjÌ|Õ²d>°€"Æ=]ë“aØ JŒr—uÀìæÁÈ]|Ããïý9I³q×nÞÍ¿¶ó¨‚R1{Æëõ}!&-œŸ’²bÙ–Û§¸1>~‘Æù>|í† óp=‹Sn]½]WUuܾœ#ûél9Ô1¤mÉ\nÊÐðÇC{K¸¹ã»¯âpUãHþ4ŽäªˆÍ¢LJæ²-Ða)(µUqÙ. Ø!ñ… ËÒ_Ä÷9ÜeÿÜ~|ïÍí f¶rcÖh»¾ØÊ•5U€1B‘} 8a°™ÖZÑ ª~"ÓÚßÙϿԼöœ`zzûîÜ­Íʯájì‡+œÀxàp?&g©ø@¤½>, d‡ìõô›d–v¬²¶wÔ{jNTsPW]Ý^ã¬~œÐ ýàŽYÀæu•ëËUöÌmkr …Yq~íHß¹ºcŸrmÆS•ãrÏ·×Ô—ðiY°ÁV]Qî¶ P̺M}ƒgöãÔ'2nŠÈüó"é; öW6Ê`óôA»›ûØÉ¤àßÊu úµ€Ç{H³Ý챕ï))ã Õo—³8ùêÈßÜŠèi¯¬jä÷WVWAÙ>]oU=0­Í=—çÂF’¨&Êx6‰ üãß·<‘®<³ýØzQ&ýÕl{+ à¤Ô;’31‘$ŒÌ¸áÈ~üuw}eG^QéÞâR^XŸVV z~ç—LõiöýÛ¾Sçáh_\›É<-#>ècšïÇ›2i‹SÇëD¦ž’߸}\eÃOK§óÈ™D(N|yS÷FTh‰õ µˆÁ„:6Œ¿àq‰Ã‹«¼¢u^Úïà ßñ32LÿœÝ¡ÏZ÷ÕÖ6ðm%žíÇ€ùæÊ?þÝUÚ»ÕÃw7¹ö5W×繫ªqv5m-öd8²ÊZÞØih°»2iQaþH_d©0ÁÈ=diØ­6Ù߀ÍLÂýב=sÿÜ-Œ +ÁÈm@9›™uòìÙᓟü}H“ž¾Ió&ï&÷Ù褓ÃÍu tòÍà20_a¼¤IÚÍ?ÅóÍiÜèËiéÛeo»]Úì]]mm]YFf³¿XHüD.åÒó˜Dï8‰(¼-mÛèZiOya`éÐÓ’È Ãí!aæs ûÃO‹Ø¸ÐCÞÿxq¹W&Í‘ììöƧ˜WÖ,"Ád²éµOî aâ%@YNž#ád&I%«QAžÃ9w¾üܨè®ârؽ‹7õ;sQ¾€4Fà¼{?ýè>±3­“_C®²ݹ·>:38<¨úk|Vºn” †Ð¨Á^ò²«Ëü® ¼kêÎ?êqõ¸¹°N)¹râØ*NöMá&;,ŠI¢BáSL¥¨ÿP†~i endstream endobj 79 0 obj <> endobj 949 0 obj <>stream xœµV PSÙ¾!{eŸwêöÞhßU°:ˆ‹®ÂʲT\_€ây„4$†`Ï$$„‡ä!!*+jĵbݵ:ø¬/”uµ®µ¬ínw×97öFkÇéL;Ó™vîÌ{gÎùî÷}ÿÿç OB x…E­r?Lá&¸÷=¸Ÿ ›žÓ®/ð‚g×ûÞ}cQå”6 ­Mùöü0…r§J&MU‹§%MÍÏ /•KT²¤„tqT‚:U"OPó/ÛÄkI2‰z§xZHªZ­\8gŽF£™ Ϙ­PIOŸ%ÖÈÔ©âÕ’ ‰j‡$Y®HW‹W$È%b7·Ùî[˜B®ÌTKTâ(E²D•N½4]½#!+Yš*Û&œ;o~ТiÓ bñ)MÄ¡ÄzbA|BDQÄ b 1–GÐÄ»„Á#oâ]^?áIèxíË'()Ùeî6vAÜ(-‡S>¿pñŠ{…ÑTVÉžD£¼Ð!Ñ9<ÅTb.‚E4()yÊtÑÔ N¸©«2¸·hÈ(ªÌ·Sø WE£ñøŽ¶Š|]ÞààFÚˆDYƒB®¥nù\³9VÁžŠðÔ|/)y©¢(ŽÅÕä-Dòà&¸ZvÁõ8©…^E?}Õ7pÕºvƒ³þóZ_nµ¶“á@ Èw‰»„hÇÒ(ÀÐr™È˜8m¦ŽR<ÁÍ$ö¼¯>{éÄo™~Y4ùñÖ”äp¸_ÏørOµÜx‡€KGhûùSÆZ ¤J¿]¯%¤•fþƒRò¨Ò@%mÑnì…ÁF-`,®‹sÔ1R•&‚’é¯÷ôCµÞ&Csñ÷~{òÊ ê`”Y÷TQ¾Ü€ÖŽTöÎ'-vAÿ}Þ³]Bn5j¤á7pxÓ¡Ä® µ+š!]±µ)»µ­¡¡­®°QYÁ:ZÎA9Pgϧ±ÛȵúOt¡ÊÀ4ÅZØLÍÿQuí®óø‘F¦,±Mr(ÓSfÝRµ°!%œ5LÈIzfróº ]}ý'o£‹[<ß=Ø!@DjÚ`,ª#˜®Y­ÝGºy#út½ò•(ùkQu:s>€rr²—…ø-ÖVö@™¿moy oBŠNbHá×KÞ˜pZ¡UŽÆàÉ~Fƒ¥  [¬ÍOI’¥| çÛ²ÃÔd:Ðcèн*mž©Ð{a_UMmÝÕÛ~§íÛÁ­Ø_£6”ò­`5^7w:_¯€Âru+Åw¡Öαv”èœxŒœ7…ˆs}H¿i»$2ű¡q-PØ{NÅcñ˜gSѸ¡¾cõul‰fWzñH…–>–û òâ½}㺤HXI5횎¼¸Ípó3gÏñ>k;œ„ÞL»´z¯&Ë]NœÐÂ/Ýî@¹‚[wQìÝCç…h2 §mŽÌs@ýpóÊ#;d´²Ç;ë ´´¤vQ[^ÝÞúÊææ,{RN´nËFFÞ”°7¨ÉKÂ%7HíÛÙ‚Ì4H†\óÆ#é›sbÓ – EkÑ4yŸºÛ‘wfm³òÀJ˜™ …BãVËÎh‡KEy…< ôtø¶±zZÙ½umõ þ 3wì‚$Ívvw¶r§”·$Ôó!1!›&M qžîîì½hdߌµÛÐì¹q1’LÆ€øÑžñÏÑ~aýŽ6ºÅwæs'òF¤½ÇSʽ¤Û3ì2¹2#MÚžiïlm9ÈàYøS¾Ä¬Å|‰kÞ†ìnpº_·È*-eÑßÈW¨r¾FLtEÒÿ–~†C†Ãº·(=_üv̹ýp]ø‡!Ñ[Ö+͵è¦P†˜ÍŠXêÿ{ÿ]Dhì.Ê.8ýu?r5è: È#wpÓÕm'¢z>à‹Ÿ¸5, pÊA9€®³8_¤7ÁŠ6ÍÐî/`nÀïá–­¿qðbãgpN§Õ¯ª6†ÁÎL÷ðþ´8Žñal¹'Dp¦ÛôFóëå†D÷ ´ ßN½°i;•‘HEõF4Ê|«kzE[BN…šƒnÞð5zúì‰Cpá*|*äL(’–‰t™Ú•¹ÚÂâŰ›§¾\ôÓ“nû—Î_\ù ShäÄx<4oκޒÊýíuŽú¢îXæÀµËMN ¾;½hἨð­Rã­;Ãþ\€èq4ÞÁÅñÌŸÜr­híÀ|"“`ÉÌ+…ÝZß±ÅKŠœÁ¤ ò2J©È}8:xÃ/êOéÝÌ•äB¨îb‡ÈEÜú…®#Ýæwþõ;ô‘{(@ï8PŰÍáúéÏs;€?gßolUEæ½t¥lFAŒf)( Æ٢ݣçÃ…Ê…ü],>IfC^­Õhª®dzûÏWt×жaOa}Z¹Vñi»R¯’nɈƒHˆp¨ëöµ@Õ›R‘«ßÑCÈGžÃh,òšÿ#›/‰gÜü¹þ¯«yÝIÃB®“ûž®¬´RØ&J‚|£Ô[¦·èê(™(§yu‰L¶ÊÚÊŠò{`ãé§‹¶&¬‹Ú¡Àïá%yøW°’ʇMΓp¼†é!Åô<ê=Cù> ª}Ø'¸êR ]Vôˆ¶5CËþ Èe_Îåf@†ªl¬k:VÒ5ûa‹rØ—ÓD9jPeì‡÷9MÏWó4ÉËB„\4^¶§þ%à‰G±Åa1UQ Õå:S‘…ÅþÈ'- ¨ùä7t£¬Ìl†=Tu2oáÙ. ¿ááŠò ¯Ä¬+/b„|‹'®,‰Äs11=;Û`€Šÿ/ª¬@c˜c_µ#Ð@Ç!1å«iàÂl(½ÒÚ Â U¤Ã{ðÆÛ3¨Ág„½ÂÇg°Ög$Aü)B=á endstream endobj 14 0 obj <> endobj 950 0 obj <>stream xœµXwTTgú¾ãÈÜk#‰z³˜¸÷bM°!`ÃX"X‚Æ‚D:ÂЫ fæeèCg \@A *öBÔÄXbÔM45ƸI6ßýÈžý†Ñ´ÝýçwÎïÜ™9Ì9ó•÷}Þ÷yž 5x%‘HdÎn«ììMMß”ˆc‰•ö1>2z[Àp) ¼{ìë?D÷_C9¯ µ¯RR‰Dá‘cýž¯µ£ã¬ÉÖöÓ¦9Z/ ó öõ‘[»ùÄù‡ùÄ/¡Ö«Ã}ƒýc­ß›1ÇÖ6>>~ªOXôÔð¨Àù6“­ãƒc‚¬WùGûGÅùûY/ —ÇX»û„ù[\nêÀ§sxXDlŒ”µ[¸Ÿ”œ¢¨© åNá΋£–DÇĺÄù$luõuós÷_ñQàªàÕkúÀè_Ø‘ìbQaiŒmÄE:‰ø£+›[®,JP*r¶cÿþ'V)[Ã#—«9}N­†]Ї¡AÙ3ümöɋғïE .¬8ˆÆX¡BÙ lW˜ JPŒ [Qœœ®Sß"?i‚«Pg^´ !¥‹ÁZÑÀ"e“e–b'âXQ}È·O*®D¹,<‚¦˜VùÞMEÁ0üggÆ3ªdxlš…œ¾\’åÉãzÚ+ –‘CÔ½äz_Þly*tóÈþéÊÉóç+×»s8õþvDª™±4ºD\Ñ¡}‚q7ÐW¥û X¹Ž¾šŸÀ÷7ÑŠtg.^.—!öÁ½oo;}‡UðOj¯\„ëÌWÓïâ¿px þ”Ejz—ºø‡FʾoŸáá²n6–òïá¯Yoeñ. hýmϬùsÜÚð–bJºA´×Išo æRÑ…°ˆµù3xøäqx$ýý$$CCŸ~‡Fr8{±àU-?Ñ­:û εt7í?PÝ{a_b£_Ëfp…·ÈMá7'ø l]œ`´$½Äè©ÑÚ8­…Âôl•2=›óœëuri›3ŒÁ˱=y¶`_4OC.hö#ô6TEi骜,>;`fñD`ãÕûP7Ú‡>:põ§oìñD¯NE90•¯#uâµ²Õ‰S ’ûPõ )RbGÖ ‰]ÕåwD?ŠX4jÊwXâ°É5WÁ_¢1oÂö“¢,o¾?äàµ@Ô° …¼²êæî#Ú`®Ÿ†ãaK§Ï•Whãù˜ºd4‘¨§8/hO‹½< RãHTÊÆÊ¢ñ´èEx0x¬ÌŒHÝCú۲мUÇÊf¤…Nâ¦!…ÌŒázZ6Táwƒ,E[ôwÉu2sI4üZ½¤„_5—ð~¾%Eï£öiçÛ%jPp™¹Û³!‚‘×¥UëtÍM[fÊm²9’Êðÿ¥¢›Ô' áÓmO;)ËÚyKã(Uy™£ZcŠ— žýÿy)Y½úk²GÜa`0zº²¼GêûôcMÈ,s¸³ÒC¦pHó"Ü×dèÖVâq$\Kñõt8³V²«%vKÑmñýÊÉLˆÍÈâBw†m#Yè²& ‚:‚øÖðÝY3N¤U(vÆ×&WÄB8³%j£ƒËÆŽïc¹ÜZÈSå) rALä$òx,9šÂ¼<} WX êªêŽM½PÌOÇNßê iÍ(å["Š\ÊÊœ*á,Ó¢?øIЦ†ª¹¼ÌbȦ kIŽJzè ÍÖI~èCc R4WœÀ¢q‡\ceª)“¦)˜ø/q ¥×bŽ_Øuþ*w*v í,÷ñ[ j8R´$Ò7;_:%:±/AYJÏôZôcΡãúǙຠ{O¤Á ›Cê#»R’‹·ÂnA¨«î`ìhÄk,zifñ‰´%úF Á›…‰?²{ò5×9ƒ ‹V΀0òL‡h5In ¯ÿF8p±& ¿"@6Ã=¨2–þ@¡ÙCâ®H׋o ’Z1F*NF_³¥†šýó–+S â 6ìIïS†Ad(srRÇã2+<µåTª Ç4t@-'ÐQÊu!„»ÝÍKN‚&·<½ÿiU˜¢Î)‡b(R×0&ÊÒ¡$íÎ;gu’Ÿ¢­}7H¾Žt,éÑNï½A­^•ÞÀ8ºz,“kSêêkjê»!™¯Ûw¸¶˜ƒgüíx_oV,˜ó™¹ßDû¸»ó°–+ØÔ¸ýéÊ/ø“±«éUÑ™)þp¼Š[v„µq Ùâ¹µý0²BóËÛÕ¯ ÒmC‰FÌ’¢](:öõjõ]·IÀ¥üÀŸD³ÁM…²:b )#-;sù«y?( ²K¡x Ö6›R¥\ÿÇø‚V©@Cð+µ² ›”­bžMúoï´-&9ì r¸Ÿ0°zÌBŸ[•P]\¢©¨Òïêªo¹cmUKv̆ÌÌí¦E ê#„Ív‘EgÍ‹ÖB¢:º•1 ­wAµ„4ß7.cÍŒ8P†ýO tAISOAq]À~ÿ?2¨tͦ(Ÿ`^íÁB-¨ËªëÛG€iþ)¯ù0Ý':õ ÝÔ–Ô¸C`ÂýV‘â¥nLw…™n¦Fq7Ý®.¿Ç5 2¹ÒÈJØ¿(ÓÿÔE „±4Ý€„;½IÛ äuWŠþ%ÊØÔØ]“T_§­.-><™ú¶IÙ¾µAȪ /-ÍE†J‘ªàcy„yã>ç8šŒæ|ÙÕÓq"Ù¯Ž·ü'ûâ®|½XsMŠ’Œ“Ù,­Š Ê`Û_¹/Ž€M“Dãø€ë8þRä'áF^ÜŸG£ì_†¤ågj`L)ñ-EU(×hi•×]ö’6ëÔ_¹à‹_©×ÙÔmbM:ö*§°­,TªÌ,ïÿØê÷È‘ k/HÑq“oxA‘tœ°¥Í\“yׯ£žØ A7ôh+ù%4÷+Eˆÿ —õ_c‰9R¤ÄFm•o&S´öjy§a¯kéléóÐæ¥Ù^žDj*‘°nfëE»z)Š3Ú±ª¼XrÚ¹l?ì„Æ,¦/-ÿßYx±Ž.ÉeiªøFÿC+MJžªHj òÔŒx…àБʵNžµiîŽ'°IÎ÷»ÐfÈ#´ÈyÀÃdž—Š£P2kPƒö¹Çc<ËÞÁ¯b«¿ODR4¬Qú¢œ‚ìLÂCJ>rÖ‡1>ÀøLhB y-§eKÝýÚ&øŠð¸¼`¡:®Î8×`².¤ÆuèùâÉÈ;«eƒ§cì&a;䌖¢÷ÚÌá[ø;[}‹J‘ñw?CoÎÀ9¸µÈ›}Á¾zÔGòö×[èÄ#)’#bÚæÉПo=:ñ>~“Ç~­©¦ßééRÍpç ¿( %Ò²h§Ùò=–¡™€-¶ø–áY&w‡}ôÈãÄWz¤ÖKÎ]AÎWö!y@.ì¡ÐN(æÁ¥Ë73;¶µò{;A!éLòV¦çæ¤C“¢I­.©-4Ô¦4­óÛ–œÂ…ÕUOg÷áÒù«Ú4|jr¢œ0Ýʶ¨’œÍ;6Â:fÉãUè4ìÙñë;³Î¬háÖ7l€àY¨M×dhA5E5šJæY:ëÏëj¡«¦‘× Í=0÷aBL"lMŠàäaéqÀ4bÄNr:rªD½·£7T–Â'ÀÜE0ý£›lI>ýâô$£'uè„9£û}§—ŠsÐ#öYÝÍ p“yŠ-îâw8|ì¿ä´n §Üýc³èz/ìIk ßíOtl Ì…È[ª’÷ÅœæóŠ{ú"(MK‡ìtŸ³B± 6Cú¡ÌãªâìýŠY=¹­a-ie‘kª˜)å,»*ÔA¹¾ 4¯tÀÜF£Oš¾i9~·DõDK˜N4ê©IHû:‰ýlC\]xdl\DX}B}KmƒÃv'M}±4›4õÎßlÚarù28 »_L7¹…{yq0i‹Nbºí%½§ÑÕÓRä'Î`×WxõÀEæ““>G³ xæ–"Žç\Í ƒ¼h“¹RäÂŽ,.Ä}ãy—robË¥sìÇo¬ñÞãË·ùµe|šØ–y"¥2ûPL‹¬f>X»h¶—[Ù~Onå±Ü«ª]*S'¿´W^öª(O]^Ì”è÷”Tµû^þŠ(ÇàÛOРs1Ý»ø€n¯2?iH \Bí– oKãŒsØþ§²DmaU"ûÒvdO”¥ J”:E^*Ä0ý )6\ \Öªþ {áGhÈA m•»yQ a§º´º D-ÃN6( ¬Äö&[iŒ"¹yc@xÐ?MÚ“ÄbëÉŽSV¼Ý‰œ9qôK¦%ÞÈäDtÿ$:–4˜·Ð(ÄßBc¿çDKúÜÍ©ô 4%'R÷QE˜16ZtšþàOʪÿ Î#F«š~7GZOþ~:5ùC£ÏŸÔÙà³b»_ÊMƒëÿë°úlÅ”8ñ ¤ë*!#æô wsnÞØz×Ùà +a‘<`v¸kº` &;µ/Ú»àJô1b7{Ž §Û¯«¿ƒÓ  ¯±Û`Ym’¤…„îÀµê35—޶˜\Ðé팊U¤M—‡° Í=rMÓé$yÂ’¾ð+RÔedÙ:È‹ç¢#6¼ÄÕ‘tŸh`úké@Eª*—5ªŸ‹´ ¾…ÆHBi\L[}ŠþùÉ;ò…ܕЮh.q-ФÌ5éÛ³2V‘Ja°›¬±îÜņzb ¬OƒgÄ(M»Iæifé{3Ö€|}CUkS‚6`w”ú6À¦ïr×¥«×9»{{®ÜÆ-YË¢s’†‚û˜ó×½?ÓéüÝÏO]èkæî¸óH'N ‡ßA¹w¤â t€Åioy®ˆ^›ßÅÉŠ•íE°‡1$k##·'EºõøÜC¯¡h C<ø’4Ñ[a«Gvß_ëè=ªãð虬+DÍÐnï€ÃÐ 'ápCWmc£Ð §@Ø ‰ÑyÂLHffùOr0]B,Ñ£ñu/ä"¥ÆWØê ":…LmRURJvVAž\˜]˜S”3Ædš‘P©åœAc èìNéç(‚MJˆ_fú]·Ç—Î ‡r;cϯù®ÃùSê/™X™r[€'x‚W—Ï‘C§wŸ9v¿íœ~Ï=Óx¢"–CÌ‹‰²i{x.dçfòñ^Q[W†úçæ$éÇ£×7£á Mß<ƒëŒF…G÷Åom*]ºs §ÎÊ7é“‚˜?%sê"w:ã2`nw´µŸ(˜¿ÌÑ..šÛº€íœö±ÍÅEn+ݳäd p®¡`_ã>/ÿØ©’R†9öУˆ\;ë¤h].{>n¯Ÿ> endobj 951 0 obj <>stream xœu”]lWÇgbÇž@Û ÓxKdž>Z¨Ê†6ÛD»$ЪU„Ê5“ØÍ‡ƒíÄØIì‰Ç‰?ŽÇöxübì@º²K UiB«µ­ÊmÚÝZU}hµû°êsÚ›X<­V3wæÞ;gt~ÿó?34¥®¡hšÖv=~¢¥ymºSyšV¶Õ(ϨÇtTüµP¯‚zõÂ6ÍžD>æ6#ùWCÓ¶‘@,7ÿÞ­Û°Ûní³8»Í{Œ-­­÷÷77·_äìV³iÈxÔä´pƒ&'Y ÛÌVÎé6în³8Çöís¹\M¦AG“ÍÞ÷»={.«Ób|spöQîŒñ°mÈiÖ T×½ë÷؈ÿ4eð`s»}SL@‚:‚xÔ„Z‘?ýfØ%„c%¥÷’b-Òhà® -)uP~÷KD'Ñx$&#¿«ùÍ#,>§…3Ðo~Ç2Ä…G"Ó‘`¦`R‚tä«àr_ædŒ'h} >©ô/s7¿âo“‘!“&QCWüä¢÷£P DXbP¯n ³ý‹£¥¡´MþþâÒ-øŒi@ éÁq³±¬B*§u(¸\àv³ž×ºÁ],B¡°†~§„þU¤ï(O©”WQL÷Ëþû;0õüþÛï@Ôþyÿ—Çú,%ÅZªêÀu:0ŸíÄt ÊÏðHýôãÊ7Q}7`±ü—kW®‹sѪ~X'ÿcüÔ¿ÊTÁ‰¾›°xêºùêá´?üz _WúsoÆüÕ2}=²g±¿4zeò²Ðêìëט†J!URŽy»—JÑ£«:ÜNù²aQý䤟ˆá o@ݸ“Áóá0ô|ÚŸ–E1›eÑ)r˜±YŒ$§%ÐgåTF„x(aˆˆøj9ñêD i&—¢"‘$¦|B0Èó,ÉŽ,t‘¾óeAžŠ…8{ñçÏÿŽjoeã1’œŠ…£oÍâM·9ÔÊFb`øÂ©®›/ŠƒW,ï÷3Ç4îj–‚ üf­Ì£åyúÎÚ•œªJ/1uágÑ܉áÝø9|w¡gñ"ëÚžCG؇[sº4jC[ÑFÔ,3xYK^Ö¡ép}ÿ–Á+;¾§Ãûdüª›Dí ZÑ {['q;nÄu¸I ZÒ-)¿&Vœ½­B—•v]4—ÎÂx½1/ãÕæñ>¼åG",@?á˜KÓÓ´ã%̾<&A×ç¼ù¤æY¤þn·ÕަåìLò;N·4¥¦Åpôù\>?ãOø$Ã+ ah{±wÏËrf˜on"†sv«Õ’²àgʨ©¤\+V}z}«ËKRRJcÉÕe”kœHI“1>ÁÏûäéÌ´A™Ã°ZÄàòG˜Òó)fÍ—«\Ã=UŸGaܰº¤}ìóÿ¤:¨ü Ë$äd×{fÚ ÙÕÛ8ïBôà—ù)å6Î5æ"ÄÈ·JeRAÉ#V‹(R«H«®ÿ“Ìq©Ò>Gþ;myCy#»A½µ×W_W>__OÆ&Šú/"*m endstream endobj 12 0 obj <> endobj 952 0 obj <>stream xœµzt×¶öaÍа2Á22½jè!”Ð{/ƽ{î¶\d•-É]î–…å‚llƒmŠ˜NBI¡×@ prÆß¼ÿH¶Iî{¹7÷Ýõþåµ´,Kgæì½¿ïÛß>cÕµ %DóW¬0ÞòÛ0¾¿€Ð…Wèu¯å­I6ÐS=»î0f«ïÖÕ¿…6ö¦„A`XÒü à¨Ð>¾áŽ#}êljãÇOwœàºÃÃ-Ðq…[¸¯W€[8yãï¸.Èc‡Wx”ãˆY¾ááÁ3Þ{/""bœ[@ظ PŸFŽqŒØîë¸Ö+Ì+t——§ã ÀpÇ•n^ŽÖͳ¾Î –†{…:®òô ¤(jóÜÀÍó‚¶ÌÞº ä£Ð…a‹ÂK—ìZá¶,Ò}y”ÇŠhÏ•^«¼Wûø®Ý±nçz¿ þ6½7~ÂÄI“§ zê´é½gÌ*æ<{¸Óˆ‘£¶î9¦×ö±ö1ãl{PÔ j5L­¦fPC¨5ÔLj(µ–F­£†Së©Ôj$µ‘Em¢FS›©yÔj 5ŸKm¥Pã¨mÔGÔ{ÔBj<µˆš@-¦–P“¨¥Ôdj5…ZN½O­ ¦R+©iToªeG‰©·)–z‡Š úRö”ÕÊ úS(GÑT<ÅQ µƒêFu§zP³¨žTÕ‹ ¤> l)9D½%è!èNm!µ¤ºRA?Á³.¾]. · otÝÑõ”Íh›ZÑ`Q-¢›˜MLq·yÝʺýÚ= û¥ªž#zÞïe°i›ô–Ã[²Þý{‡÷éÒGÛ‡·[f×$ôv¯·³Ø5lõ;žïœë;³ï=û­ö¹o9Üì§ï÷yÿeýõz ¨yWôîAîCî²dФÅq½c†ã¹Ã¾ä0èoƒ{ ^1¸`È! Cn š7ôëaÚa׆‡ Ï^1ü«á¯FˆGöyƒWÚ¶&m1óK ‚êÖ¹B~Për65O•1 ”§Æa¶oí£6{ÄnP3þônÍm˜¡EU­>Ús°™Þj*×ir4ZÉaÔ×è8«Qhå pXÁœ?]§ûöÁ8¬nRY–DÑ« .SVÃ`#ŸÃ"|ËKE¶| ˜y›&©Ñu¹Œ¼.÷B]Ðs—ÒÎ2XL.T«9¦­€rrï½í÷^,ƒC´œþùÊ© çõÖr8îŸ~w„‚zƒÖÑðÌþuqE; k`8¹­`Ä7¡ñ@™?->ôEVÊV‰5+­³ ¬u­ƿâwÑvcõÞêÇ3í©vR…‚l¹º?Ý 6J!UªáÙö˜ETºÔ,Hs€\cÑ c¦}•óÀ üa…Æ[kYUBŸ„’”’ ´›íñ4œ°}8”iš´5P'¡NiÝývMtC¶.-S!o{4'k:( Aíj©M­î*ItÓ›DG’ w¥ï23¶­›I/Ñ~³’ÜGgžÏ{ÑWÌ£P¾ ‹Ôt6³™C½EÏkß߸lëT,”|“Ä>/¹|®1Þ»‡ßáÚºø—‰nje>’¶2Zü‹JöæÏ!‡'ÿöhúu,Ì•¬À·YÜGä¤Ê¬‘ r´šþ¡iÜ⛦‘ØòJ™‰oTÞG{î y?´“Eo…{á>£°÷ÁìÏ£Q7ÔëÇÃ!؉u—Òàáᨃýp¢ì`ÅáæÒ8¤å®å®°†¤Ò6H]¤Î.[€yS1ôà¡ÿ•ÀÖr6­HÞýUê`’÷5ÚµZ…‘2y¼B.ÁÓq)^‚>NÉ-¤;”šÒqfÚ‡ÊÜ`»ÆÍZ¨búsÈ’† oü­=ÞDwÄ/ªÓ]!{ÛW:ÊN ÌÙ/AhÛVo©¹u¬ÙîÔKÞ¯6ÔÔWüìú–Åè}<­DS¿GÄä@f¼ ä‰j.vœŽÀ¬Ä›÷¢cñ¨mÚû <‡8m(ó)]©%ÒE)S( !™Û2×»nóÑÑà ~†Wá)xv%énÁÍhŒ‘wh 5Ù½ºŒ ï÷?Gò=ÙK4bÁù•L¹‹D|·Í·“0{5-Úr¨€cªÚ?’kM§Ç4m¸ êñó÷ˆEâQ?à®ñóÙàæ!et¸€EatÕ±#UÇ€¹úÉ$lƒ{}4u®‡—¡1XW 00¶<‚½üofÁe¿Â$ä¶`3õä£L¦P\Ûz‘ KmL¢Ld³ç.šFn6AÔæÐ†Sd †d‡èt(åx7Q2Ø„Š’±$r,^ ž&²mMë(;÷¿Ö¶ÎaýËèN¬v"µ‹ÍBV£µ¸?š€çHðÛwd­`å÷µSà…èS¸,=¶àÀêì)0°0r•ÏÖˆàµk†xñe9eŠ0Øí½ ‰BÝå{ÂâEÿ:‡üi)í5ÞFü¼2ÞýüÌþ˜4 ¿ƒû<†R/ ñ€±ŠÑ!¤Á/*Hçì̼•z|qÿڦɉ&Í",>gF5{hÀc´Õ„F›t&!p‹íŒóš¨ éIŠBñ¸ðyøC’"‡BžÐÏõ~ïKL¨8T4Eæ?Š›€RDíÔgEh,T¬/ÄÆ$ BR›¶s|·åûwÊò«K¯ößD3ÑW,êBc‰GVµú]¤÷kšµ•ÐÍÐ`åÄ.z®J_'Aãˆ<¾‘©µ–Sª# „ *5›r««ý«\9ñÍyà³8ΕÙ‘„ÙlF‡ÛÃ\oBƒ dn·ÎbÛ¿‘¡Ò7$¬ÕÝ"l„o:H¸“yµ¤~H—ÓðÔÄ£¹)(£#àž"4 Lë 1G¶å9™‘¿Ä®Æú1Š2…ÜWüy¢¬Qq/æ3›}=fOõ9ýU$§ÌS§%)QlOGCŠ>]£))á´ZЗt;¤.%Ø¥öåñ€= ¹’ÕžYnY¤¿¬Ó/Î;Ó¯¶¼ñ!ê’>Á_Ëi’²‰ä0y^"ùÑJèT$ÄsJEb’BéU鱤z¶^‹×ùUH%âÇÕ!•ò/ãH~LRs’…šù¡V}yÿ±om_q,ÿä<›'mðГ Y4ÞŸ–~‘È™·z½*€t«÷ÁÇÚ­ªé':™·d-nÆ]±8)h)ÞZ‹ŽÅÙRsî×o&àáÿRpüª7œx%~OÄnØ MÆ“ÐZ‰8ö*Ü)ß{–pÅ^fBà (ÈŒ¦?_FýJçòCX4ØŒ£å¡"õôÇ‘ Fú®¢ñ[Ïê®T^¹À]O÷ê½¾)âÚɧf´×lÅAËc!ßÊÿÄÖiõ7¹2³ÈW9—´/ø|­QuÇãOÿÅ·~—‚Ÿk¤kîƒëPkÅOý°¨üÕ·ˆÔÊŒÒ&B7®%’ï›@£!z3ýQræB„h<ü ]ðBzò¶Eó¦*š[8ôUÇ'·@9Q‚Gѳa<É#OÁÁʪO[ô÷}ðXˆ¤–øuúÛ\¹%²Y$.O˜ÕY9}[×™R6‹ ±ìù6Ùñ~¸Ý±çz–Òºç2Y)ßÏ,(áã„üdôÍÞ]tà’Å¡„«ÕáÛµÑí²^­‡HHR)²¡8ËwEÕò<\­Cù~(&à P¯S…C0xh¬½’>iò<4#ûŒ8mjäAZvZAEŽÔxuåw™¨+ùPˆN¢ì{[Öm”/‚3>\Kîžòº CtGœËÜ+«ÿtõ‹ëz‰&‹Ün/ï¦óá<¹£‹ÊKíDºó$ð²^Gñ¾D½ÛÃ*¶¸ØÿBÙâ£æ¼ZKXR–ÁYÙVÚEÞËA•?gÛ@ÕŠ\µÅTì¹G z³*  °3ªz(TåħËõ™‘SpªýdHÍ%Kë\ÑžlÔø´¯8 ¹Ê\?d‡µOÓ%[ò ÍHÏÿÕÙÿ„ëÓd–?9ä®=7J™1ÚŒüŒåO&<=l´kº¹í)šzù*1ÇÑÃlšG…[30¥Ÿäß•œ ]G¯ •Ëv*¥sȉ&–o¿O½çþ-…Û€™¾ÐiI€!º¼²ØPž›Z³]#©¨=¢'>èÈiωoZ|àøfåGÊåîÝ.ÌŒç¡ç9r“Kp¸¡¤™IAÓØáô˜ù;œ·º×=ÙtMÏ T,þ„ü~*‹£¹YYÇݵ¸á¥€¬…n8#’ &119_Â-öèÊÿ!çÓˆ!Á\š‘” žÄ:Xl¯e¾¨…}¶—Þ»ÒZZ¶¥u™¹¼FˆP»gß¾#eåæºÆ‚f ,BTêRäÚøvX”ª²âÉÔ“Ÿ*_1Û~öI[˜áÙë õU ì'Mp{‘¿ºyÕ˜µ‹{l[³ZµËbß˵fM9TA“ª¬ÝHu)yPƪšO¾¼1Ü>K–CÀ—”lñí{4§´Fbö«÷t¥ ¯b¬âB0=؈¼›:m\,±q½XôE‡³ JÛ3­ÑdåW43â#áM[®õï4k#À"¢Ì³ÁÕ)&Š˜µB¹ÓP}áþS'³ÊàÔ…”y•»ëÖ‚;x«V:ïò÷Ú¹œÁ§,¬žø7“žcC´ØÃÀsíZü•¥!#=*’ #ö}Á]»Ïà÷Ð{!ÿ[®Æ,òQŽ'—ô$NêŸTš/Yl•›±ø/%rô@ÈO"´-?LSoÔ( œ´Òöú˜Õ…ÑdŒKT«R†aµ="£"G•FXX^%\{¢ÿ¨F“Xó}Ѩ6}j|ÜNy¼t}ÐÂeJ†µÈbsZ– ™òÈÂði|€s“ÏÑó§O—q¶üjÒÁjžÖ›,NoÓÓ8“e\ê†Y4õ^ÓñìójŸZÎ])€x&¤8¢²ÜP´çó9û?À}ÞÃî͉Áoÿ0‚Àµ_5ꙓ“J¢ r8ni‚70b~ã¤hŠÄöõˆ^9Vòew…HÞ:’M2*Éæ<û×QÒÁà4Ä:Ô!ca éô—C ¹BÂ×ih$ÿ{—ôøt‚W=è²ÒôHÝÚË^ÓvEÔɪzÝçÖYå3¨ÿ#«ø²NfâÙ¢uJj;gO2&þm£ É„>%ÕîÇe³õÁcò’!ŠÃW‰cŸB{ÆO%õ¨ 1="®në•$¤:Äe’r ûݯ"n4 wßå‚TwQgÇt°‚ºÃGÇò½O²Kh4ü÷žy„ÿùÇþt`kùË5Ä,?Y}í5U3¨´+v£ XT²è€mÎRW €ËÃö…4*OsX¯=Wu¨Ô¼¯æЦX³³>šì3êSã€J~z¥ŶNd“rÕšHr£ü«D`P¨w+5jˆdÚJþ¢EtzªF&çÇ´=·ÏNШ3ɇÌ „®€æ—¡¾ê­ª°¶j}ÛAýœ‚%msèvÌ”¢yF;2''] µ‚®+Jg3ÐȦ½À¼ÌÁý=%8i‹ªEF”þ°á9aóÞÜGB0×ï—Qd`°=„„%9ÉÚÔ$•í+Gç-CßcÔüRˆ"ÐeÍ¡žˆºûâû_ãw%øÕŽ,þ¢µ(Q‹v·Eh Üê„È“,'Ø}7Z{æÁn»í*["®£y×k[\Îôÿ*C¡èCv2¼Ø]¡©.0I²rwW6󆇫ýbC%É áAHŒ' i°»È°?¨QY̳˗oÖÇÔ‡î–Ôí­K/¶=€N-S¤Ê ‰ÎK(Ì)ÉÜ]”Píá"wwãÜjÜtR`Æ-\ø‹ÑË´Kµ|q+þy^æˆUÑ~®àÁÌÿa=²EÝ>v«6îØæJncåXIôÒR4~i»Ì@h2_f‡-âW²ØÑàÅl92cgšª5'´eDŽj;Ó´D‘¾_"þ1ßÇV‡–ùKƒC‚!æJSi5éH-RsëøJ»Så!Ðç6’„\E?ñö,~Û¼¢ÀóœqøâÄ'·ÐL#žæœÁiä ×wŒ—h»u~KQ«R8ßµUîÉü&œ:ià´ãónKôŠc _D3âg){R*½KCrˆB1 ¶ÌŸ8'ýÈFnÍ åu:'”ï“uøÍÔhõ™htºšãæ|“>ÐíÎ÷¨‹D|^,¹7Õ@Rr†tøÂ¯ù0kV<ž¶ü²ô’¥˜Þ–¼Œ±äåf¶ÅÃ8ÒÎIS–¥†C^Wfȇ ¦<ʲéTÐéëŸ^ø†ôÕÖq]«ÂÊÃÂ˪ªÊʪˆ=õ&YŸ^ŠæÖ êL(ë1Ê2 [ǵNgÛ(Òz®”¦Ô ÑPL`™£*U€ ‚‰7ˆóð5ê~‚Ãäç%4Z1áA‚ü½–îH0–_œ¦'€.r‚ùxŠõРÝ\¢&Á«KÂWoˆRC´« ö@ƒºAõ;Q^ÒNÞØ´¢"£‘ä{•š³ÚRâ«ÔUíßó)xÇb´È^­MÍ ¾+íʹœ¬óÇš´¥ï¨Œ‡ â²WhãÚG‰:Gñ—@\ö@lkχÿ#“’bú¶¶V³Å°Å°xШ™cœpwZËñ}þÒ”÷¢ñ@Ä`r D?y†DEœÎÙÐÀ «t ²ô3õ6Õð…mZŸ?ô3+ZDI„—„è£Ö¥ìíjý&Yǵ&0‘6ZÿU±ì¼´u q„­Û„­þ›__Qõ¹¦ã(×bÙß嶨KCˆ]JVÊUr¼¬m—=^ÇkåùÖ µê4˜¬§¹ IhÛÀµs‡-žÐ Ŷ½¶ÏŒLWæAhÓÓóI[¼ö ¬óü‘ÿ˧ÿWª÷h®ÞùÍÓ‹»ož^i/ýëÜö¿¾HX|ú@Î~‹§Pù«ÉX Ë:ø™Ú°“Løre2Ià¨6w{<™W§©2È0¼ç ”[¸ÈŠW­{ûšÓP ¹>Æì±¤m.žÂËÔ:âttÿôû×!-5×9µµÚë’t‰y@ê“™–‡¦óéöhF[FûÚÿj†±®ôõ:ƒàßWÈ/mubÓÉœ ZFŸ”-‹S$&*9ü·ßæ¥Æ9R9Ȳ“ôùi99:¢‘J©±ÕÞ(ØeÝò®è* wRïø^ÛþÝôB7XóBÜÇù-L 3áô s̸qNÀÒƒßV_N¿·샯²ž°Úõì<…³p.e(A=®g›ˆã»U2"gÌå„-‹dËbǬ p¶œ+ vêÍ |Mˆš[ßfË@έX6 ü€Lyr©–r¦­€ä'açgq#ˆÉi€GnÄž Ô×[<ÜD¿üò£Ùîè/Èå›v(¾É¾z‰Æ#îÜ xá€Dî`[l3÷½‰ëŽ‚®¨6·±<ªÜ7Yj%·ûâ‰ú3À|s`Æô™[f­_!ÁëñN™Å˜‡9ˆáiQ%šG\yj@ŠKblJò"<–ýK+¯‰eÈnÔýÇOMvM¨ëû?¡™Oç¼ì+Æ:€~aïUœù‚dèÞ¤S£‡ÍY5g§1²Êl0Vu‚XÎ|äR^0'¥TkB\$Ûv(CÕÉê0U $«SÔȈÛd²L(âŠîÕ/‰, tqý°è¬¯¤6Õl„}L]°!0Ì/Îeü³%H€l¿ùæ'ŽÜî-¿5¸´=Á¨Ÿ™w#n¾I2Œ¦³“-M}.·Ë"à-¤q7Áñï°Œ^˜‡óÛHî3b’”–ãK|®m! 2™Y¬!%ßÍÆ:êò=ZnD}ïÛýa›E>&þŽß€¶³¨Çô˜ÚæãëáM´A^“RMºÜ[_|“—¡LOQ«@™*‰HÚ±<`{¦Si²NE2Í$BrŒ¡£ 9?S«ËHãô…õ'îB ˜¶gEzk=a #~M”sU˜[˜§wÈvBçµÇ£Ïê™Hç®)2••E›vÆù¦lŸryê*ÿŠ˜Ÿ¾Cb @xIé.Ô2ð•] ê)5^³¼ôÿ†ÆòÙsa‡\}£‚CBŠ‚ë ù9Ä h5 0ZˆSø¥Ì_¾B’@v¨dRÒéúû7Pwm|ç?YfÍ?h÷ýo`ž ϧKŸô·!{t—-£‰¡ê]w¬¬I¾ÃÈÅz€³Y¬±pOöþs.OÃoãþdˆ ‘ˆ_cbòÁü+6ÛrHWÊ`…Û‚*OQ„Švbwb t…Ùçór33nA©§‡H3 ¤;'àþ;±†’:> ‡r¸c4œÔÌ:‘¶;ÿáÁOÛ™‚>;ŠHÌGâòƒáG-צòÛÙí{{¡ˆùäbÓ•«6Í_ë¹m•/gŒe¿¬?Ò—˜§O>cî¸(­s“§O¨5ÛõrMà”u#ú üiñ/ÈæÛû¿ÖÉy5q‘¥19˘án,zkveds¬t˜ûá¦éSæzÿLõ…¯šÛÓ_÷ôÁn~ˆ%ýKŸ"Ï'Ø ÑÖÆñƒ·¯‰Þ ÝÌ̪*2‡Hc’<Ÿpÿ ±dN€üHö‘ÓŸO\¿5ÊÙ•swwƒÜç둨+'þõhlÚ}†Á½?`c`;øŸª‡£`ÑËæÒúŠ£ûòj‰cªÙQäœë—¶¶3ÓvŒšÄuZàŽÎÿ¿3¿–ůPÐ+ÁÃWB´ž·eÿ‡×÷þÄÿ¡=xC)úвÒîá«HB…ÿ|µøYd›%6jö²¹)É¿£ùË;ˆ©R]ÛÐI€t-h4\¦F¯ÍÊ´Ø‚uF„`D:ã#£àÔ§h­ Ͱ¼ [ç’­ÕA†µ;%¦¦¤È¹-‹σ`…i}KdÑ®¢ÿsLÅÝp¯/g\¿zú1êšÍ»Z$½¦ÖÁ 8fÎHÓ¨íÛ6ü}BR<¤ZšZNRNŽ6MŸÅ™øqlÄ’<4ͼ˜WzüØÜA˜Ú4“„_Õ6üO? Å]Ä"zõ£ÿíž¼ð™hµ¹£•B¾GkO6;3K¹LqTqT¬L&Wp¸'[ec9 0óýͨÐ(hº¿ï<êoBç*…­ËQ/V9kÙNgØ›Žùí;|¼áó÷÷_*­}lqgÞª j9±ÖS;G›"CIJÔJÉúQ΋\7Æ/ù® ¢OœûüáÃá˜û VÌ]?Ð-c~íDnü(çí!Á°Áaò½å?|uö@M=wyÕÙ˜I†ÎŸÖ>dÚ¼P#|GyÌ̃†êÚs0XµdÆä°Îu&kt*8°¢$¨nS½÷²µ+R‚€™þüÄݽu'Z¬ŠY_z·E@œAˆt?Ú(Ž"ŠŠè¡ÅÅ–ˆ‘C× 8Õ:VØ:Ýa JÀ`ˆ„8IÛw¢¸Hˆˆ( ÿ-ÞÈæ·+iû›(¶ý“| vߨòÃvAæ‘û(È– s¯¢–ƒc”¢ž×,/7ñëØòè Ÿˆ¸D¹œS«Ôj50*ÈO«Îüòü§’\‹àé˜ÌÔ´TÙ´9¸ûª2çµÅåÿO–Ùòönì‡3Bô§°+]„û ;?´ÐX@óö¡yè-Ô'¯ã" ××¥+Ó•:e0…ú‚<½"+:K‚^B’K%Ùi™ë'+ˆIQAd‡…Ó Ð6ñ9ñ1²„øÄ<Ìi¥îý$N¯98ÄÈbãeiÉEÉ4p –,‰LR¤@‚ƒ Bj8äøc,þÀ&6/1¯PŸ›—8•Ñ*Yº†×c¨{ƒeaÛ0êõ˜ç øÝßbiÆi¥èP:lð6 B~,жùåw"W£Q>”DD@d‡kp ׉CDÞ‰â Ò`€’|®ãߪÌþý¸Îò-jÀ¢ûüöpf¼»ïþ×ó/¤±]RŒÚñ}µJqýqwd#úáaç{êà œ»J1ÌÎòø’Ý» ÷œ]ß4wî± 8,ú‡³½?¿ºI·«¸…?¥„?ÝÚùã¢a/„5ztÒ§07#+‡Ójm4uܲ •.N¹œìJa¥NîíÛˆ~1RdÖx}H´Ïy1‰ö¯vÁÿFûÈmÄw Ö(´~ùîD˘AX°n°äßùc¹“¤æÙÃײ+ ©’KRÄ$BDeÅÉ™?¾)ü¤Ö$¿ëñü·1£<л"[ô­:#Уb!ªB«Ø3¸xå`»‘ðcò»œYˆê¥ì­¢êªpðg¼\£ÇqþÒƒ¢4ø šõÙ5Űx—nÏ´Ò Ë(^!ä(‹5¶)¤´µÇ¶7Øãÿ³CvÌÀV¼<­éÈ_dŽÉøŸÿ˜ñTnU$Ã6…ƒøõïbfÒZØ(.¼ÖͰ˜±¸п›zäóo”gIGu^<Ú¶¬65¨‚óT%…AHscŠSIÂî´c'Ý( ‘{_zöHȯ·üãm&›gD?n>ô§GÙu¾{×­vñR¤rõëÒƒƒ™M˜ú·7ïý—§ß„ó¯XdC?¿×tñHe$h85­Š° É5¡IÊxH‚Ó´­ÔÈÏ/Bú £»çÒæî—{pÝ»N5ôìfÌîÙó²¡g/ŠúÿâÚø endstream endobj 75 0 obj <> endobj 953 0 obj <>stream xœO[HSq>§ÍyÔµe`hÚñTŠâ¥’XF` EhEyaèAÍÝœgÎKÛÔéæÎïlÓÔéÙæm†—M¨Pˆ^"‚@ðE=Tõ õýÏ:©/ß÷ðÝpLz Ãq\¦ÖhªËŽÙ!rN $ Öÿ¹–¨K¹äÒµÄݳH›Ž•¨î &ÁqC÷°Úhê3w´µ3T^K>UªRÝ(¤®–”¨¨ =mîhÑ(–i§õZæHè¨cKÍôQy·ÚÆt³¸ØjµiõÝEFsÛíüBÊÚÁ´SènÚÜC·R•FCÝ×êiêd[Ñ ªz“…¡Í”ÆØJ› †IjjË1ì:V†>ù‚I±]<Œï cŠÄËVâÜKùvЯIâ}¢*ƒƒÙ'ËÚ¤Ãaxì°›cµ/.!–ŠÙ".JÕoö{rcŸûÝ}sîËr/ß:¢¼ X̾#æ‘’÷}<Éù9|DÐ#vÛë"Å&ð¸íÀfy8Gh‚ãfyrff5˜yWûŶ*G™H‰Röê>¨rí¾ÂÆ_ì÷é#Ö=+Düg)¿~ïÓ<6%mAŸïü8©HìÁ–ði?H|”qá0c2 ÞW@ü–!)¯ÓŒ@ïHS.;œ44á Î{§æ¼ä3Tå/ø³ÂÐOþ{(ëœ=Õâ½LÖã²KŒúÃ!η> endobj 954 0 obj <>stream xœXXT×¶>ãÀœ#"¶…”3v,‰£(V ŠÅ24é ]©C™Y3 ½wD„QD`PLh‚QcyIÔè3zÍFY‡lî}oÏ`ßMò¾ûÝoˇ0›³÷Zë_ÿÿ¯#aL1‰„ut^â6k¶á¿ÅW$⫃Äפ›Èö_ ú\LÁ\ æ&Ç^}eêHqè,†[†3R‰$4Jéº;6Üß×/ÒÚÆk²õ,{{»iÖ³mmí­û„û{y„X;{Dúù{DÒ‚¬]C½ü}"c­múEFî~sæÌ˜˜˜Á3BÃ}ßš<Í:Æ?ÒÏz½O„Ox´·µShH¤õZ`ëÛÍøæ¼;*Ò'ÜÚ9ÔÛ'<„a˜‹C–„:î^º,Ü)by䊨•Ñ1{<×Äz9ïõ^ëóÎ._¿õþ®7m ¶5{ÎÜ7æÙÍ·Ÿd>mú †yy‡Ǹ0ã™uÌf"ãÊLb606ÌFf2³‰™Âlfܘ%ÌÆ‘™Île–23wf3“qbl™åÌ,f³’™Ã¬bæ2«™7˜5Ì<Æ™±cÖ2#˜‘Ì(æ%†gF3cKÆŠy™á˜`f(cÁ cÒ¼3&Ló@²NÒkô¤Ñ cø1û-9Ë¥–½V«ÑVóÄL‹¾{ G[½¸ªJ"îè³ç•ªýªte,Ñôÿl©ŒUhfxfD«О…Fh€+P«zÏ|œž-ÌÊ­6»G[bµì<±5®5kB+4ÃPoÜ:%wÄ89ÒnJöÉ,úLA/šé$(E î@‰T<ˆ½üwžï’AŽÎ~oû j$#©¦ ö\.xËÉ%'[«½ éúõ|'ôg‘¹ÞsáhuÄ"4üÙÖ¢¯†ùžkõœ€Ãð¿ñUé±¾%¼âYÿñ ÑEûw|7ÿ324_ŽãÞ„.î¾Ýu2W É'<ÖâJöIµÃ–eÞŽd°œL&_óøº³8¸œ0;Öø¿IX¹…Ø›Ö"¾¬“4¡9¡¹TlÀP_™ùˆÌ"vsÇ‘ÑdÌýé8 íî<‘Ñ’u< 8øf¼WÙ"¯i;^¡‡ ewyh•/lwn>Žð‚E_O¢7WáªjôÔKÎáXQÓ!íKî›Ë×BV”ð¶£ëÉu‹ÁФ’dÙE}‚œ½1Š×åâ,ìKRî…XÎS··¾^WÞÞ½ù ûB'}ÝR™ÿ¯è¾F³Ó7 Îݹº›é•é¿çWžC¯lÖçÀ÷ß8]Ö¨E…¸ ïÿˆXaãiöAÞÎ%,IÝ9UØ€8N†s ~I J#°ßIÓ‰Ö‡$­ŸbܧRq¨¸ˆ¯„Üø4¤Ä ™IÊôÌв]9¾À“)@F¿ŽÃ£šÒå 麴lhKi î-[ˆv[Sö0TH«Rkö ™‘r²{@Yš«…²*á@åq¿÷¡¬Nãˆ"´:¦‹©{öÏÙX°ºðB8É}|ªQš³,\+hò  «†¬Z¹Å/½»^9€øÙhI!{ù/õ²•5ÂZX kµ4dŽÀB4„z…Ç$%{Àz°)q¾â}<â#@sxR~éxÏ_£CØÿ¿‹.~UÚÓ.?øADpEPPF[}%muV‹ª$?Ò~Ú!E_qãõd<ºzÈÔ6î66™\À ÒÄŽ½yùj癫BÇfvepHÐ;p±V°øEJ {\úÂ^7ÄÑ7†¦—…Ðø|鲆c|ÏH¹ŽÏôì>14Û¨ýZèú‹Çñ:9þgŸPD™ÒÂsÝ¿ó.>×ò¿ÂÐ]´c­ÃÛõ§|À§ßšÌNºòsÝU¸¡4oÊpqŽ©žuVÂ1¹hÂZˆóž÷ë8¤q ‰^櫚tMßB™ô?$& ¶Eû:èz -˜5<á^zµÈë%bªhÁç–fçNÏúªTà »AëO`jÒ•jP§'ËÉ`R@xßó9‹¶d=U½I‰û”Êù`¥`ÏjµÐDù­¸‡=Ñûs5 ÉÍ“?FS”’WL=²:íEÊ‚‡(¥ ìZö³/ëpc7¥X,4Èwß*þE}ù¡ƒ-¯,¯,«êÞt:©ê‘ðìûצß#¯¹lÛè)ßïÎ9yª¢ƒ~6Ȩ•;`}Ä.yû¶ä@X»Nî«¡±ûMvh;rFmP:ÅÑ´®Îš Œ•^¶U56Á. ²›PüÐa²M'~¬—Ôª–*ãsJ²ó.Pæ¯Êø¿8ÖtABffš:Ó€ãýä%0’FÐIÄôé]ƒ} 6H¹LO†<‘=ý¤LW¨U«r„øä”½Íy5Ǩi)íl÷íXjK¤>„&,V\%¿ü…}˧O/mÅž'‹]4jÅ>äñ-.øööd¦Ý&öòþi,"û£`ãËâCg‚ýò•`Gfʉ{¨}ë%Û›qöýk͘pXÒt#žåÜ”âh\ÅŸ ;¥<ýÅ¥î–ÄycY]v¹63Žq \tÉžJ*«ëb›=žÑ±Ñ‚gw¾-аá­eAžþò½{bý¨(*jwUÇE¤9GÂzÎåã¸ß¼õþµoÖ5† îu«awBºF‘›ØJE(OSZXÌá~.|vâ|vç8mßNsågˆ;åRÂf?¿uÔç[úži½pJ忆îú“9pâÖ¥Á§ü½ìE¦ÿð?Ÿ¯'ê¢õxT‡-ú‘Æz´âØ1£âÅ€½Ò¢» ïs_¿Eœ…~Óß òÔXŸ~óVGÙQïâY4'Ö„ò§“ñ º<»ýOùÝT×÷cѽ’òÔ¬„=je‚Zž¾%(:Vƒòbê}nT|Zò*at”«x2[èƒÐ.ËÞeƒz.Y ·À)^Äîp¼RŒè“òíMÞžAþ>>MþíÇtMíYJVRþé}anøŒÎäáÂsà9‹S š™¨ïcÛ$çîá•{RÌ×ð65™—¡„ëÖõ>|xgS-dEƒºò¹ãFÖ0(3ÕÉ)‚bkxõ–cS(“[4‹HV´l+Ù'?µù`ÚÓÈÇQEªšèâ„ÆPpãÑ ‰É"?„SudÅü:¸ LM~PX˜_\_ÿáö› †IÑö“gÏþî|HêiÀ ’yÞñ&4»Kc.¤1·6{yzy5¶µ57· d…1ær¨RU Å1íÅ~vGâ[k÷$dkS„ýYUepˆk « ðð[w.øò­oO=ÄTšŠZвoNIðKƒª{÷Ùóÿ˜$‹!ÉT òQ’wÇw£ÿ2U!»®}Bæ#ø/¸>àL§Šß\gé†<»|2È88 ¸$t7x)ÞF#,*(ÌÿÌ`•ÂT1Ô„ëse‹ê2S3Ò2¨U"«ÈDSQÁþ̆ò5Àg¿ùe¶¬¨´¸¦‡[ËÜTÊæj.9ö ¶Nû ÝÚ %Ð1à¡â ’4û²2²’J(wþ”¨Å#¾~‚F+öñÅõÁõ#X2nâ:bF3ðåqþŸN³XBýë ܎ηő‚½âÃîèÿ‹Aˆôsc¤Ÿ¿Ð“÷Rªû†PSî×Çð9ÅÙW+×Ë‚TŽJ¯¸ô×4ÖÐ!÷`Rú>KâÑïG‚ÄdÓoõ²@ÕTð¡.ÛÂ»î±Øø!ù1ùê2ƒí/€üj*¨/¼hÚ9ð%í»MIæ¾÷)b2qÛòÀ8!îöòÒÕ06;G»sÿö›'ÉSçÖD9üãü[¨ªö&êÄG:I'•Ô}†×F%x™˜F’H2唩@1 “4ÿH ¿ìæ!¢8¦:¼>® 0.Á…¼S%.çÖ@3œ‹/±£dþ&ŽIRü¾àà˜˜ÝÉTçÄ^š…,}g•„žb*ÅG},ߨ‚@añj"5¼ÝÛ£¨”žœ¶b®¿†Èl‡ö'è¢ëÙs¤‘× —4à hÕ­—œA+tÁ—¤¢©MÎŒVºÄ'§* žjÉLYkóßþ«´¥_Ú 84³þœ2¿é”ÕÓ6éãk›ZªOtUe m'z²«»ßù¶£Ã&GO…œ“˜ä ùX«½â|c~ÚŽ¡€#Ü—:Z$_â t6Èh Þ¢C&Œsßc ½2ë°»\Ÿ_ÚDY =¤ÑÓ#$Äcæã8 í¿úÛãwÿ#3„o>:_q×Ï91±wys˱¸G*OÔ&Þ–+t´ 9ÀݧààŒítfóSù¨Õ1ê UZ&(!ƒÛ›—MÓI=‚áÍ)~a­e8‹¨Ÿ".–Õ«³ÃcUŸ(‡ýï˜*ð(‘‰aDuä0¦âß’Yî“ »9ß†Èæºòγ^½NFR²H)&£å÷_R·f=å*³æy (!gùÕþ~FÞ>\‡|‡õœê} &ÙÀ‚q†<'VÓŽ03¤ÄÕ0hèÄ|~¥+ª¡¾2%ÉûµáÙªBUç! @IF|©¼0?çk:êr¸RFç—± qA..„K™[¹ÝW_Rœ›+—ÑÙ»pz šœ¿Æ£ïÒ@¯ãÙ놷b&ü{Î…/¹'3;‰„X-]4ecÃ;W½bºel¦“ÑcW´D›;×éÄ,y£Ëí Õª'|Lah-½âõŸµµ·OîXé«X Áoð(,ÔíÑG€›Õ‚áŽ6®=_]9~âdƒ1Ò¶:4;­Ã= ý ½5ðË€¬!¶A¾yeÑBcNu54s-»kÃöî\vÚí Ý:ãk,¼XLâˆ0y5Èòo£yÇ{¥Ÿ7 D¶‰·ß?€;(¹P»>)[^¬u†nYˆ´Q¬ÆÅToá\Ã{¬K¼Ê!ÀÙuGJªZMñžR”œSòã-´ú$à´ëÎÝÞ¾õ¾]¥yy‚Ѿá/§® yµáå'zSÞ,nà3ÈøÇ,èÍ Ú [ 攜aÜ®†ˆÃºƒµ­§w|8‘6Å42T˜ø»}þqÀ_p[Ÿ£ö““kö¹8ƒ¥·'›~½½­½*yuhú|ûeÊ4íãå‹Ý—/ŸÙðÂå³³i‡àÒû’"ì‘Ò,å™†çñY㥸ç²Ñzyyzꂎ­—Eb‘è’;« Šdd{.«7CÉÁÌÄ®Ê|ðá|ss”ÔšÕ˜[0ÌÿP¼Ÿˆ endstream endobj 73 0 obj <> endobj 955 0 obj <>stream xœW tSuºO „ËV¶£Þ[Få¡#¸VQÅY‹µ€,¥´¥”niö´Ù·{¿›µY›½¤I7P±,²ˆ3 òD@tÔã2ƒžQŸ3ïŸxûÞ¼¨Ž¾ó|ï8sr’“œ“{ÿßý-ß÷ûø¼1×ñø|¾pá’%Ï–¾ÍÈÝÂÏÝz]î6Ã9¾[7Œ…I˜4¦ïÖi7OC;§"ùõhÍÞ>¿©Í`^ØÜ¢××m‘”ά¾«ôÞG)›Uzßœ9”>ÑX#®¯®j*]R%ÙRÓX%Á?¶•–7W××H”¥3Û"‘´Ì=[.—ßSÕØvO³¸nþ]³Jåõ’-¥+kÚjIJšÍ¥‹š›$¥K«kJ¯UwϵυÍ-RI¸tIóæq“¤JÊãñniª\°zaËš§Ú$2y•¢zsÍ–úòUÛ*ç=z+·Œ÷ïvÞ\Þ¼¼Gy3x«x/ð^äUòðVóžä=Å[Ä{–÷ïÞƒ¼%¼2ÞRÞÞd>ûÃÃ;Áÿô: Zðé˜ØØRáXahÜ´q ±œøj|r‚pÂþ‰Ó'~0©qòý“¿*ZWôåõ#SœÒ2åXÎV”¯ÐgrT†Ÿ+;oG€ŠÎˆ¬³l„4ªGÃA¯‹ty;\ WÌÐr'ÝIW·¯½³wofè•£€8ÅV*–mäê*J×l5€Š¨8°õÈWÙÔ€­ƒ1묤äÑ›ªYC‰nW0ú2èßûW8A|9?Rñpyeu#izsyrlÉ6DZÛ±,„&ŽëH{È®ßÆí¢Ç#mQjM-”©E¿É"%о{ ²9”åç^ÍM]½ŠnDÓöìùÔUdq" sØÈ&Øbm„VXìl…Ón7jm ´] åeR4H¡½]­×MÜ Ü”Úš¨²˜vØ<àO,¼ÃNxBl‚e‚j™Ø2JF*h%«bev55H;‚>åÒË}*åzËËÊ—Ö+%\7ySÕ½ÖF #¬½¿w‡úȤ ÂD™$†DHËš)=+s@ÂÁ`2‰6 µÅh2§wéY˜0+Õ[lFS¸Ãj‰þ/™€n6ØQ&Â$èðµÛ%CP¯°ø#ª(ÿ-dÑ© êÏòó-@+/‰ õ´q>* ÈÚ¥r7 ÑcH„ÆýùíçNO÷Shròëwá#âÝù¿çn"GxB…?bâl è(• í4苵Hs&Ñidëìgû Í~ÓýLÍÜ9³¹_QÜî#Ñ6†õ²àrvQo¢ôX´Eø§ì’3g<ÈMÆ¥Ý?J^~nî5Q,&»öfvÙƒ¬¿À^‚ð˜=FR ÖVh€*gc=K;H5AÆEõÒ 3ÌF“Ál°˜ÌfÎÁ…йbtÐ;°%Ñapƒd!¨&á ,1ø`ÒB§œ)&m6wu=·XSÉØæ1%\ô‹7Öí€8ƒ^6 qèf… ²%€p@Ö‚Tm»’RØmvð;0ìIw$>¶;]`÷ùˆ¢ükòlžÊòßþJÿC~‘ÈeëÔ›hZo Ì7Ê/r×C gå \'ãÊÐÜDôô±/üÿ;uùlòcè$‚Z°hh‹ÎFnânãJ˸É@Lç&œD÷õzÐ}hšF½yñ/¯ˆseܘf› Ì”&XŽ˜‹,Ê}ÈUdÑÌQ“·^\àŠD¦fڈݨé™ÎkuQ=0èLÃØm,<£×:@+m€ËÓƒ¹ ¼:æß÷o~ T„nÁ¯»Ðø¹‡-©¨jn¡T'˃°ÚZÕ-òzõ20ÿÔ¼§b‡¿7¯ŽÖ0fê‚Ftêâá® öìhzz“ôÎÆ”xÍšµ•@<©¼èsÚ=¬«#C¹o³ü+ù ‚üö|±¨³Óí á7‚‚©¶ØåÜ3ÅV-0¸cYœ†`Ðîö9Èa4ýÒ.$Â¥>#yoä+“I¯u‰Î Q2§ö˺cçQ[±3XP QPˆ†¶JMä:î¶Ê§¸@på¢üel£Y”âç‘Zäâ®Ànk'f¬V’¦FÛúwGåj® _3_ø£ÜÏ¢ÄX4Fx9 Ùª³©¬*ÊfÀUÒÍjÃ!Öq’ÇQ³#pM©>£Ó a,23)›×¨yˆ_ _C†y ˆŽum¿ GoØ´ùçhþÚ^U°)ô,€Šêژי£Å‹þÈGcÞî?/@ócEam²¹¥©µI”¥{Ó™4ÉmqáÌoÑâ_ª9þóÊ-Ád·'æMR¾´?íïñnÏ~æ 8|x€ùˆWªw¯š¹î4šždwö[$ævñŒå œ„nà£uçQïÛ‚üšïÓ™a4rÍÊšWŸ.ÅRšÎMå„ܸvGu_-µ£z—áœ:n9¬ë²OKáqbîC³8áýÓû‘ÀgO:£$‹G2fç$³i¥•¬ä^b¬´,%f§ÙçfÙ`ôzüWW\ÒòË¿âsšp@9$í¦¶dÛœ¨OæÚÚipˆ½U)8I\þä½oïèÒY« $&®®k#»(ÿެ_ïççT¹oDž^»#iw±;q<< =2¾Üao‚:PƒÆô"­+Æ)Ò×e÷†íd•ÅyQIŽpB1…Iö<÷T1cÅ<[«]ß´»bnòz`Їf±OØÇ2¦±)®x¤ÛPkÓÿJê µÙu]™>d¨ ô±Èàà–aÒL¢³ I=lSÈYVAÕ;h'Àvgˆ(Bÿ©ÏäÇóÏ`ïü9›þ®cÿOtÊ´âDÇ6AýâÚ¦ÖÚ 0Z´ý¬Ýë&¼uºøD8“û7¼h3`.iIY:w{²!Y$çú|Ôr}ã&\™HNSŸ4~À9i÷ßçÀ¬ endstream endobj 61 0 obj <> endobj 956 0 obj <>stream xœX tSeÚ¾!/ˆ—8:÷GA±²UÀ²–¶´éMÓ4m’&MÒìÉ›µÙÛ4iÒ6mÓÊR6A(VQT\FGqÑ™_ÇùÒ¹sþ¯-¢£ãl''§i›{¿wyžç}ÞË"&N X,Ö Ë׬IŸ?oôã}É;YÉ»&$ÎV2»‡?ΙSÙ0ubÇ]·ßy zûfd›† §«¬Rg¶:–— e¢âÂ"qÚ¬¼Ùió.\07íáyó¦--勊órikrÅEüÒ\1þewÚ†²¼b¾X–6kq‘X,|졇$Ƀ¹¥–‰ Ÿ˜=7MR,.J[Ï¯à‹ªøùiO— ÄiksKùiã>8þcyY©°RÌ¥­)Ëç‹ùüÝâ\QQ™8·’ ˆ{— –•=µ¢²J’+Ý)Ë«Îçdo(Ù¸kwfé틟XôXÊwÄÝÄ:â"ƒ˜IÜGd›ˆÍÄ2b ±œØJ8`߇¿xÆÔ2v½"¾ZP®ºv½vx’9ŽjàÉÁ¨Ó×’Œt$‹¶ KÌ¥I)É?ª£É¢,ô·¡úWÙ—_âšz1HYPSïotGê(«ÍØÕý}ª+êŠ:cŽ»Ýê¨Oœøôs <%k¶2·ÉshØ¢5¹½§èðg}è>·W¦Z0) ”deɆ­@Vë¼±O³'J‡OìG`<—Ó¿|þÖUâjÊpjg" ²@š_+“×d€‘¬õ‚ÍkµF]TèÈ‘^ #>eI•I­ÜD§ [pIÏFÑÞ+ù—«lôÈ{ÜÚ|³v1>d´&h¤Ñ0=Œ¦ )_¼ùÜé9>úëð_.ÂçäÅôW™©ó G:þŰ- æÝhöX@ F‹É¤"CŒû ²zzlöÀC\Î妌ì_þj.“B3˜ËÜ0ƒÞZk5YÁ v°9Ï£ÎTôçá¥9³žÃL¡S’Òñ²î»ˆºßb'‹Q+÷ë¯ÍgîÀ¯»™»g[qñЈB÷QL„©çæd'Þ;ÚŠˆÎècïÖ·yºcÛº|ÉÝügé¢ç6g™2ü:$†Y ÖpÎÇlôËïrVƒT…S¡Ñ‡”;[ˆÊÐŒGÑDf=šéø¿#F‹ÅO7˜]&P_Ëô·îx–ä_9_\ÊdR·J˜_?ÊL ‹—0Ó€d&q~œ-¤ ×(ººYÛQ ׿´×´‚W¥1ëõfêYfVÁ3Ì|ƒûþÉ ^G­©_r~U"¨t¥´Ù`1‰48ô·ÝYï ‘r’ËàÔᛩLTÕ™ø! à !½§Çê8ˆ›2ƒƒR: +ÀlÒ ·è0d vÇgu…mT-µÇ Þˆ#¹Öé¾6ÁlÑLêHëxíx×k—làÄÀj­k S’ç¯Q‚xÕ7ÄF_âúvö”€ˆÅ:C½—q®cð¶kLTÍéÊ\ «j]Qÿaw݆{½w£žçŒy÷€‹l¬ñ( å–b-%]–Í,WeZŒy‹–¹©v ïTÛoZÏÓþgÂäÀ®¾-s ˜™šqðÛœTËÇ{úöéi°ìªP ô º`VÕØJÎ=/zñlï@4D]Çb½êB?ûŒ,J’ÜËd¢ŠòJ¥SïSSM’@9’¹k3y³¸çø©ø[‰KT]èú¹ðÿáÜö?ˆµéÁ.Q­P'£³R™9$C\–B‹чǩ”áìo~Í3ô¯¢ |øNt…ëŒzû®%®’i%:ʤÛÎlЕëJÍ2aü™­qféî| ÁÅP§sïa4öu¸‚!Jú¶þ  ñ«{=ãU©ËtÕ8š)ª,à“óν: ú©ÖUçõð6<Ó:Ôý^'ºŽ'…õÕ"®KïÑR>uK9lƒbÁìòÍå™EEX“¶ ;ÛêŽ flËx*ýo°“““)\YŸ ¾x23¹Ÿ¹ï“éïEŽ9ޢݹ=%G~ ÕÏÊ2v)4µF¢6·ï íÛoózöô¢´Ôº6°ƒ ©¼ÕŠÊJ&‰ŸkYQ½q§¼ È-5'÷ëDÓb‡èÄK}ý@¾\ˆé¤·p|¯«£OPî'(«ý :w…>F'¹®ÖØ• à„fhR–$"¨ å>i<ÚÙØ<#Xü\Q¦XE‰Î>ïyÏz†+-ªÛnóØèîoζtîÑ<·»ú™&–¯)ÊÍ=ˆ¡*ÐâŒ6A¯t+JE廲ŽIží½à²Sþ‚Þü! ¿DÜ–ÑÄ5f£ÎL—¤­¬Ød¾¼³ œxJréXAQÁ~Öá!¤~“´ÃK¸X#”âeZs9¥µ¨- #1ûêØtµ:M±¡ŠZÈüFµÅ(‡"ÞÜk.býž†f£{?Í<¿(k§`w)%y‚늂Íã;úÚ@}+½ñÒU%Ì 2>]òLV!ÆSqIüb gpJ&7ºÿòþï±9Y¼™ëâNÔ¡³V®Wh(³A»Û(Ãðê…;˜gRŠœé@nVì;z¥û2ݰÏáEæùÿ¬¿£û[ž”ë¤tÞ ÙzØN>|¦ô¥½Ý¡¶6J¹Iµ5/³¼˜/È‚Øa¯ÞÛú½/ôdB託ȷn9XðÊW_}Š&µaF?¥Ž¢îËýcóCp•LKNçÊñÕ55r…¹tdE£:Üoî?º½ï)æN†ÇÜÃ̘zñ×èž¿ñ»ôuzƒÙ¬ÕS‹g1,P¹Zxth_äݯЉÁ“NB7ìQ…Xêøêsî(òGÝçXˆw‰ûâéö–ÞX_9ÑÛûùÕèŒWÜb³ÎdÖ¨ÒmUò ¨U½"$UGJ€|2ëÁ*ƒ]ïñØœ.>tÚê†&ëbÚ~…Z¡0gÁr©|þ‚Ô•Ï­ÇaÏfó¹¨XOG¼bàÕ´BUr¬5_žF·ÆF§˾ÎD‹Ÿ]%- È\UuÅ…£ Ï9hL8êÐud²5p Vйs5†•ÞÊë°¢L’uLí8™yÿ;™›mu޽*øß–›(Œ¢EQÖ¡7Q¨‹Ö!9·.ÚŽ5]èp¾Aò ßÓ ›ùÅfùÌ—ñÍ{\óa§ßš¨™vE¹{ÑܯF8.(¾‡yvâƒj0ÌדšùIc”uâ zý ;ÉNÞËýˆñŽ™Ájúל&Äq4ßpùyžp¨¾ ¸AaY¶±¶¤¸Qnmî9”ÛY¼Z6«”ÒW™j+˜[ȧ¿uaú,çÉZ6§zÞ&àñx•6²{z¡žŒÉüÒrA%ÇÁŠ}'û_ÚÓHuž‰¡›¬uØ+ÜŽ½ÂžVtû–YØ«Bç¹è ºÑ_£‰ï¦_d~F3ïþ —ÂÜ1Òú}«ã{Ûvh£› jÁoˆš›€¬ àD5 -(ƒF—ÍiuÑèŽäÀ·þæœK'„OçK~•_HoÙ±N›•}'%ùÖu$¡F 0êÿW…ÁÄÌyË8fixâˆÁÓÐà:©ð;Ñß»cžÍåìžÄ©îx´!Ægð>ÏgXki­Ø É?3ÉŠÌ]Omü¾In80€n„ÓäkyûŸ\½mwV•‚ƽ:ºýÖûC°5éžÄÔ4ˆ…Âr¡4XÝëˆuPKF¦rýíXŸâîÈOM÷ï©V•®ÊXKkËw0¤<§¶\YUäöî¢#8¾™žïâ“­.Y»ùZ|®`ìe »áÊÄð¼6¼Ô\@Š ìaÞð*®Ý\§1X,5*jÛúòÛZžÅœ»•™ÊÜÀÜô؉¬ô_Ëú4'°7á³W1ì(šÞìl¶º(«Ãj%ŸÎj0˜qÛ)£q#Å®Pï4ºœVkÐO<ðÜë5§±û» š~¾¸[¤Å1…ãáX¥«Ð«± =Åíp‚üàýß}~éåfâ.£ ô”4~¯Õr`e}sÅûqÒ>VEå$8ÃNÎÀe ׄ*Ä¥âRIP‹Ç[ã“õ÷\é’më7ਙ§£ó.B6¨ÃB‘ ª0¯¿òÈ…«'¾l¡®$'8#;o0·gËÌõ×*í±ZÃnªååC/Ÿ2ØhÌ›ÔÆj\· ‘dúXÉ%ɯ¹um—ßî±uaÙ$ÿ<`|\aÌ7–Ó£Y5šû¨£µ¹ëmT-Ãòâ3FÉLçT€Å¢“®cžJµ˜ £«d×êlpQ/¢‡ZÑ, ÷rÚÀ¨ÕãeÓDc%4&uð õ˜E>pÅÛl§Û ÝÚøe‰níÐaÆÛ‡wt‰ÔB¹H ¶rZ`×Ú¡¬àtÔë/ú½œ7ξú_ó&Pïñ»(§g­qµt›~+‡tÐÑTkV™G×ÈŒþ¼ãñ†¾(ÕrÐwòTY²L¼ÓWªôõ†1Gía)óÂk«Ûõ%;;cÍGN:p\8^›ÅoÆ{‡Þf‹Í¼Í¤ÉÕ˜AÂZ··Cܵ£,K»h9UÌÏÏã+Èô‚::ÌÝÏ:t†|?ÎHJª½8#«F;šÑ-#&“Ú¬9oýÁ¢Ã]-‘ÞÕ¸Çú3Dš‘d)t›­Ng÷ÿýʦáX ÉäYîÑ÷öÛûl~«5VÒmph©r˜„PÅö]£íÐ+AªöXêè¸9\ U PT‚…Q¤®L¶N Ň‚Ø™x´6}^Ž vR2ZG-¶ÔV ¤N5&ª §¬‘þÍÈßí‡)¼p8Ý2åoÆ=ïð´ÿuùéÊ´¥tCJ–%šb0ðF¯M¸Z:ÝTð–8Ï^{àšŠXã:¸>—áH2iM…Qýê`øø~ĆÁ1|rsvfe ˜ºËšEM»œ"˜[WU‹ ƒ¹;Æhd²"e¦Î4Ôkù×$¿dv7¡ÕÑäC’£¯¹Î&¼§9Ǭ¹©ÌR¤¡˜{GÞ1©0ZÍ<…Ojò7Úm”Ã8¾=Ø)0Fàìhnóìè+;øŸìÿn1ÜάSmQçšjyöyakQÑõb{][]2ܘߔ쎰.%{xAÒÀõ»êœà#}Úd’y ª Z¨x r|†$þCj@gÃû6éóx|>Så¢G¢È:é·CR®Ïév‚üZ§Ú9ò ¦*ëÌ`R­Ñ¨5N}PG'£Œu¿kt=hxjÆgÇ:€GRó|zòJ²Q¶•{V´7¿D"*FÊ»ü‡ÇKÙmV,í¤Õj©YZ´®¤„VãõwH‡­žïýwÑäÑ»À7¬¾a£'¸íÍAE…@Ð\ÑÞÞÜÜŽ5;CžßÉÚÿÊŸâ:ÏF¡d:—¹¹ts;07‘¿xuùghò%4QŸæ+  2ðHF#Í=eMQE”õ@¶Ô77DåöB7½ÉWƒ$ùxaκçÛ7$ÖÒþJnKVÇó°œLç3‹ܸsÿ;gúPº³Ÿ¼Ì“ä²7Ù]ÌRî84Èï áôà…3ŽˆH^§ð0h2â¢hö7éƒËæÜ}?“RJ£é Ÿ»Bþ¾ÇáŒØ ½½Ñþo‹&€ìë<½QÀLn¥KVoÛŬ±éª¦$qš…''sÑbN º›«@J3] äCöö’²m 'G‡›Ûæp»¨£ïŽN‘KœÙÌE£J_FžºNír¶ÕÛ©”Êhr¹Ï@¥Q“ë»!1åÍ©)D¦NnqMJÿUñ/ endstream endobj 59 0 obj <> endobj 957 0 obj <>stream xœµz xSÕÖvBh8(V ñžȨ€ *¢"“PæÙÎ#mÓyL›¡™³’4sç!›´´…–‘Å (¨W¯x½“èÝ'îþß÷ï¤EÑ뽿ÞïûŸ<}Ú¦='{¯õ¾ïz×Ú‡Ë:„Ãår‡-_·eõÜ9Þ§²ã¹ì“CØßñbqØ÷O¨ŒàÁˆ¡ÍO>ó§Ñì3£PõãhçHËMÊP.OJÎI‹‰MŸ0=bÆ„¹ .˜9aÞœ9 ',MŒJ‹MX–•–N~I˜°9)".*=gÂô—bÓÓ“=ûlVVÖì°Ä´ÙI©1/Ϙ9!+.=v¦¨´¨ÔÌ¨È ¯'‰Ò'¬KŒš0°ºÙß–'%&g¤G¥NX—•*âp8+–Šv,KÚ¹F#‘€Üx-¸Jí¾v´ñZN2ç7ïêHcȆЌÉñAŒhËŽà]@ýìyŽç‰fßz»³úp¡Ý›þJÊ)ÉÚTH€xSâCé·0åúˆ!7=Y§ÅI¸*p&:A’o$é¯9`(v:¡²HúAûCeº•ùjTU ‚:ÏWgK¶èµKõT¾7VN01YÛ=ÚN_ÖŸ‹ å¶¢ÃÖ&¦è°½ÕÑc.£ÕF6’áöÌ"zúSžç˜g‰ÀPh°@!eÔÛä:5È è7–†^ÙX¶„8Çã ,Å/þc2¢ÑvÄE{;ä V) ¦™x µöE Ì?…&¯Cso¡!Ìå?þ±ïC ¾Û÷Ìs)êxÐ2^Ú9M†òBš¤os£™¾4±Aïò>ÇcŠ…6RO )Íj+Ó@ä©Z Mëþa;rÈ߇ÅZ_XÆìCS­¹uáÇAHÖó(šŽfü#èHЮИ8#=\”ú+XOÒ¢LbΤ lmço¾T¯cS|X2~T´–‘¦†®ØÔFù]›É`2Ú°<ÐÆþ—›{Ë3”çYåyRà,6ØÀLÙUK÷ãg€^¯ÊÞŠWêu:9a¦Œ©ÈPXb¦›¾èº‹ærLà÷—ôÿ—ZE"'X¡Œf'ó]`KÅe”h0ƒ"Uv§)èh<,n6^žÆ÷÷h0èYõ1½z] ˆ#dêG¶œå£h3ŠCè©EÇ_úªÝko·U¿æß¾ŒÇmá ¦1»6½¶¨É‘ËŸ ý1Qˆs™Ç°Ï ¼Ñ#eWµ²˜Ø$1-mJißM–ÈÃà™xê }+>èî¨ohd"ñ\Y¨^³V/”UX´V¦ÚM­D'öi[~žV«ÑL>S‡ Ö/ÞÔÅ™æ£n4¼¢‡©;×w´lP£¯Hrˆ"È­^£S/"rtÖZÛ¸ž5<Ï+H*0MvF§´$ŒéôFLÇ®ÁóÉýÚÞÔè÷)ÿ²Uœ¬Ôç)D èt*ÐR„s§ÉXQH¿…’6+,’‚FÚLýZvÆ" ñÏ!½­ÕG!ÅGœºÄ×’um£Wë ¼wqBa‰¡°ÂH× ¦zd‚°?†Ÿ+‡‰ªNƒ¢@JMƒŸèoȤð‡L²iü*0¬¥”?»PV®Ü,%L™q‡‡œ¨›$  >34BU~¬LjJbÏ®¯p—ì?¾Æ¹÷õ˜bZv"²rïXùš­M6#©|Hl¹Q‰íËyñäŒæcbú˜zÂ+%Å™éI¹ÁëOǼ‡žîDþ}Ÿ.©·Óß%Yblž¨­¾|«¡Cé¤ã5ŠdS2Knmy}Ѿðý«ñððg¶ÓßÃË—ò½8-Ép£|7;ePrW¡(¥Æè8T±*ls“q$™¡l õnE!,™J¿ÊõÅúj­Mù ")cžN–˜¹EÔÌ…ï áéZ4ÿ6âý;å=‡42/üw2ÿüý‰hÒ¯÷u41ö4WŒ¬`´˜œ”?ºKJ«Ð–WÅ=ËCÅìdÁ]~¹s0â‹ùhza )lfau®Yž*Ï$&-Ï÷{ŸûÚ·øËq—^£C¾pgkÄñ¿´tRÐç(èœÝ¯n*êʈ:Z™7{ÞÚÜÜó7Ï#fY­Åf»Tµ*]S8©œnŠü¡rþDóÖcnàŸEªK…¿þR¯3ù9æ:¡Û´º [»ß{‘Õ딵lv/àJ˜wQjà¯ÆU¿áRX}Xm40ÏžCsÏñX;^`´V™(§¢4+Q)Rèèe¸Wº‰0;I”TpÁÁÖs­Ÿ×]flÕÄþURG÷ºCgÇâéªÖK i›»á«Ó@9Ú”4yr~$“²"e)l§ž;-:y¢­¹¹–®Øz@U P]Wê®è,:MXàË^Ÿ¡¢ó7g¿T 4” æ† T¤·Ù FwC7ÐvùB4àd²ÖÕI ¥/D¡ƒ!šs®äš{„ÇÊÙ‚v©[”žšž.±*-Jº6ÅOÚ†¤=¸Û*;ÚzºåÓ†k´¹ÌRú+£“ðBVì¡æ\A/õ¡ÿSOœ‹+ÃuéÏl¾›{ïÛFl¯µÑj몔À®2)"¹Ú8†=¦ïâ½~Ƈû"~9žë\^çy9¬ÉÇTt`ö«›Vl!!Š­StõFB6ªÓÕVWŸUœ©Ý/¯<qñÞ?øÂE˜0sp×sÏ¡ÙçP<ÙöHô’@™¤Ï„|J–ðâ¶ð~ñÉú÷ÝÑÖJó¯ÝæNü$¤ö$ÎWŸÖ’Ô«-'¶«½¸ùXitWò8 =ÝÍï5_Þfà ê—b ñ“rÃ3¶Ç‡¿ ÔNqwÝPë<Èô —,.G/lEÊdÛw>¾JçMüzåܸ€ÑßÏœ»:2Û5î.£º‡d&^§ÖÓ½²ãËâÇ?ìB˜€÷ÁÁê®#ÔIdìÁñëmá? ê`Ýö0^­S‘(Û0}ÞÓÉcµÄï 7ЬšÊËo¿cÚ ”SVYIgBª6b!Ê÷@8ˆÛ73%ú"5éœÜ<±‹ûo¢kÿ¿EÇbk1W0íh2bH¯„[,y #¥<>J/ñRÎË*zì7u@3é÷›|uÒVXJT»€‰1H­R712WÉ-”r«ÄÅ=q½ÃcEìÓ‚9D/ûÀ_ÛX$Ú²wW¶œÎ8»Ë– Ô´­x\º]`(33 ŸßßTSezDštWA4# ×kdoŠ×d.-¤AnI³Í^¥T}¦E’šš¹7²'½ïpkgs9]µéˆ¬¨oŽ¡'ª³/V3ÉÏïŒ *+¹èx­ó€­qö”ž·µ–ox똠Êò©‚€¢{¸hØÛ(ù]:å™ûƒU%ÄÔÊõz-=]!ÕËô-”‘Æê°Q)×j% §§÷3z­<¢„ zV^GCÑpô4šæí'¢â2ããhm¿¿ uoõííMˆÏXkÁXZÕÔÕÙÖùK=ƒ¿gØ „Ø3;¹Jæý—»¢s¥§Æ|‡<õ‚(¼piÈN vçwš Än·¹¨ʨj±3G©Ú¼½;î­û_|ó—:úÏ,m°I >\ƒùüI¤ŒÚ0þZ~ˆ©êwmqñ@.QçÍÞ>ì.]É>&Ø©"ÑÒQb§¸¦¡ÖÕy$´c탎~ú™ÕŸ¡1ÿµÔ¬p*4z½\A/5O“ ÔÖÔÞÓ'¾­?Ìì»t´½—p¯®4œòÿ~Ì@‚Þùþ%Þ÷£~j(ŠËà1¤Ó‚,Ù>p3{ZçÒð ±ð—fcú‹ò7GIƒuB…LŸãësš¡Íäöêè`ûJÈZ¤4H™MF]=”ÜZ Ëm 4ðÏõcÌe)‹Álµ8Ùá.yOì¿ðs è î"ÚŽefÊ.:]¨Èå¼Hà7•‡<¨Gpæôá`÷*ªŠpJª¢÷n’¨ÅrGv½´,·&¨¥¡³² ¬:[‘ÁXdfl®¦º¨‚ …KÞšG<(äåÈÄbü"^¸yËî¥ÄíÊí¤O2­…tIuCo'¸À&«H-Ë*Í&Å×'ÑØZÇ6%&gçî¸Pȱ5ËžX,-Ì5(@­·Úªë©C}uÇžü ü݈%yîä†0’ ‡äßÁê#]̯/-¥–ZfCíoë>ÅŠq¦éìmAÙÅS¦&EúþòAK¿—Xúxˆ3%x3¦¨væ¸Î–E*gN©Sà!ýkq[®*ÓHëƒGý2ëIPèA§•38°¿!K´äÍß 2[ˆâûï™ó º’VË`®dY² -&4ã_AêNR ± Þ5®¼Ù—ÀJõEï_; ?5¯˜{ø…¯~™bkdïíïtôZ‹Kp½øÉTWMrÜD¼ö’rjͨ÷,¨ç¢éŸ³Qwyž&vƒ½8åk<‡á,Çyø™{ГhŠFHE÷OëC0góGèѾ4á*ògNÜûâú§@ýþZ~b~ n›Ã¬Á¼y^%R‹Îà0Wå-6Ûfý¾ÚÅM½ƒÎ“6¹™t&ñ˃t^Â/yßTQzÕÖá<±$²ZW,NTç§A•Q!/«««j?^>##•ñ[íMAAY)sž¿¬¸t<\•)TÄI¶Ç€²M²ÒfsI-TQ®‡855+6ø@fÇýn½Ï;2ö%:ëÑ7×3ö3z] gùh4ÿw4üÎÊ‹˜Ëàÿb ú›› ¢#½ƯŸð¯KY›•7#*„‰Ü™Í÷rÂ\EÞs±þ.â½NÜI¾<.à[ôÅ AæéNUfRœ0bOñ¥H€dg•­¨šøœâ‚Ê”œ„üÈˆŽœ;ßÞxçF%¸ìšÂRb½ }ÖKš®i耯šò“CÇã¡xžŽ'¾ph%±^߃ÝEEÔ%T"Ækñë—ëµUwÃy¸ ¯>ÄÔ<Ø»¨³ö æ'p÷TŹßV¿ñôþOõ:}è„2{^euq¹ÓD–¶ ±ÖÆÃû>ƒ±¢¥ªåÀ…«ÿ‡ «bcHž3\$Ó'\è¸›Ëæ nÛçÞ‚Oº‚f›ÑJ^-P ÔÅ?Ã,•föÖ­L¢hgúJ ¦òQP¾MÚwùS¸NÝ|å Eãò_ ‡9ï¿„Ã%Tæ‡8üžãâåùÚ‚üÍŒl&²©¥çâ/ÜiþÎfÕY$½Zª¥s7'Æ'•¨mh©7ÕšêSù Té؞^n äDx{4sêÐ[a `Ñô”à¡(‰’Ÿ!QRäê‹[‹;˜‹èGÉZ¥ð­¨ºèYqx†úG`o­ÿÒçÔéi2‘2›I|Q²WJ^Âü( áY~ü^+zºøƒšMÔeÙò3“³’R«%U•M¤8“áöÌiä¢Ý—QÈežç‘ŸŽ®Õz½¬€Þùîk†,"¥c.ù¶Ýµít2cѺT¥š#ùÇólÚòg¾3b¨9K¦Í{õÕ}÷kÌ &' Fƒ‘@ÎY@j¥Î»Ãí8J§Ôk‰V™5«Áè°Ñ΢úGqÇÖ‹yÇ"¬æ¡'Ðè&ewJ “ê–šf6f›ìjc\in tS}ø‡»÷W.MÑ+5´>ßï¡Q¸O¿ì·X§/̱wPìÙ= èGWÐ5ÿÂ2(¡%Ø<}ž¦|`³-tÝ…®óä£ëŒ9ó»™ý£$Û"—¬aäÛt†v§©Ì?08º#óà[—îVÓß '< ijZZšÄ‘U[[çª#X7‹;¸Y=Bzy/†m›±ʺ_“¿Ž´²ò ŒNFz %ñ®Åhª0ÑÍh¥¡ÌD¼S ºßÁÏ"ÖI•³¯ $õÎûÏÞIxa!˜L´Ñh08ꡉÕHT¿4J¥®€t^ø‰þ¶‚Øù|öyQ˜™cpÂt ŽÃIí±Áñ^•SyL_ F-$™Ô…PBjþ`U5\½]< %‡.ž¹û?’’fk£ÝHC!ê‹™°QJÐhóIáS´üPjÇAWk¥“vu–œÓCÆB²#{ePɺšªk£Á̘«ÁÅpyEÃöš’êê÷ñ3ûûŽ}°Ê ú0¥:¾.ËÕXÑYŸÓ¼-4,"ŽÞ´Z,ŽÍõ ûqÞó§~Ùh$£‘@ŒÆÞc4æa60 &ΙÔö-m_¸Ì-fóWvêoîOŸé«ˆ‡ ñˆ;+ï¡B±hH4r ‡{ïìoŒû¨~â©ÔY'ܶ/úpgUC]1]Þ^rq0¬j¨µ´25wEvXtlÞÐT{&’ÐDy¦ñ<ìeA×»íΓÍàôÍuvÙàщ‘IôÃÑœ lz¦L_«$Æ^"ËÒ(qOVà¶Ú¯ù„ÁQ2ЩiéhˆÐFýx"«<•;j,H52gûûÙu V N"šžÓ?žo¯?‡¶ýôˆû‹ª›Ž8}¨>Ø‘—¬é ˆ›)þ§cç.ôÜÀ5ºè?/]w6VíY±3$$‘V\Ù^ A°koÜ›ÿ gä¬-Ãå $»~]ºÀc³JA—Å‚å‹÷`~½kv(^ó¨À zâ{ÝhÊ%ºûËN4nSøx¿RZõû>@‡Û¯1œtµÕ½/qíÒx_èL&cÏÎÛÁÛ'‘Jr#n— ö Ë¦*T©ôú<)ýòäJ‘VíEX®÷4»°ôˆ¥ýé)âò% T h ñÁÌè5€ƒÐ§=øÃ QbFÁ—@®AbÈ0© D[,F»¡ÐûÙW­ÞÖ í']ØŒF¸ÐSïñÐÌ÷G?¹Þí®@³?ýâ< …†-9¹O_ˆƒ×dYB{oö í•Z­"rhÐÑi¡¤”(zâz©ÜÜxé´ùwJ~OynÁô tprXZØö d+@ïKF‘ÑH,­±b_31üYu¹õ9îŒ.R}†õ¡eÎã “¹j$A¤M\c‹´'€Œ_§÷­ßuÿï>O´ÑÅýÊ}½ùS×Õk.BÔ·Ñ7‚\&¹ Ê™F~åiÝ¢œ‚éÛƒ˜¤¸7Sƒa'ìlÖ½@SÜ¥T™¬,}‡.(gåá »¤ôþ¨Ô\¥¾ß~ú ¸AÝ]sd ~tê¤b+E}íG+en©wçZƒÎ¤¢ z«ò¨¸ø$Q–ª²âæ÷¾î8œ³\,Çð£áj4¿¹º™½QÅ=È.ã±sÑvÏsš¨ú4ƒ6Q•’«¡µò(ü´^µ¬¾["rD;s‰II©‘èQ 2F7À@y ªH•ž¬¤÷âQ!xÄk˜z ™·B£UjãsALi¬›¥´Èæ¤í6»õ T†·]V¬®•»ÑxF Æ;EÓP™åjGe±³ÆBw ©½ , l¼T\fV‘À‚FÎä(S}Ajƒ/Έúmr!ú÷nÔ}‡zØ·&§Á` UÀm¥²FWE²7ä³K­*£V«ÑëÔLpV°"B Ò!*S™4F ¹©N¥•½‚ßÔkõ /3‰}³MV+}ìì[ö&Â’ªØ­[D“2#˜E2¢ ×Wé¿6é¤$Sm•M5U’’ôíª ñˬþ!Ne<šy3äÆso†çŠ¢ßrÙI®¯nuÕqшKÈt­±•‡ìÁéù¦›}( K\VÎØ¥ö,Ò¼‹ŸÌŠLÙº¨4ô‰ æóÚwúθ÷Ÿ8|\ЪqÄP»ÕáÊ|[N}[EcçÑ覠…s7MYμ€Gdàù°‚J<Ëë˜HÙ˜„ž>šüö[JTÉ»˜j¶Îuè*Mf3xèiv³@åM,aÍ;ÿ7X éД?Vï#•Ó¬,O*•©Ë¡ J K¬Sñ"½nïê9xMö’¸Œ Yù~{K›v£=(à4y í»ÒxÀ^ Æ9€J­­†ÎËŠÞ ЖjÛ4šæpH†]Š[jŽzŸÔ ¼Ï;Èôú|¥o‘žÇë¸_½ðzùLi/ˆú9|úxŸº±¶g2mò´˜’$‡„¶( úÞüòKÙ3 ˜Zpu›—4”÷™––‚–¬ZelK¯¢žúLS*wA-õÎï|xbÿÞ“ð¨•DÓ %]u5Ùä‹ç/~vmÈ‹×Ï|ö—CKé¸õ';¹Ž{¿½þ*¼Äcß@g)SƒB6g¦ìÞ¾ŽˆAœUÒt¸ÐÔEa‰¢"%.G³­/ùüŸîÜ~÷ýW4±­€ƒT gðX<àIxzpІ=ØuÈMãÀ5‚×àzIg3ßx”)r¸üPÇÊv‡.%-üïâcá;”ôÝh䇸˜‹¶aò}\ÀßPêK\¿7qoJEn}›»µ™8wý^P#®JŠKˆOH/Ëjls·¸½›ah3}‰bxl£g¤ÀnqÚIZ!vH󊂚¬k’\î›m+ìV“‘4=^Í2Õ™èøDòñÅÈ/­ÖÛ¦ü½/E½¶z«„#AƒÖ¤´V¢‘èQÒ|ª{B#RcEñ5òêò »Ãám+|s„ë¾óͧn5ù& _ž=q‡‡šØÉ´ç¡cK¯?騮s—ÒÿèmßÜÔ(t*!—Æ ~Å—U*¾€ü‰ˆÀ!m]jHDؽÖïü¤bji$ž˜LçÌò[óãÑéyþëØ#ß%Û%Ý%T¦H¶Å€w&)©øÙ bÏÁìöÏ¢©hJ£¯¿Øê‹Mµ75¼”zolv• ò^Þ¹vO„ôÇÐT ÇÑcèÑÖüúø¡©*sšIhî<šY7«¼¡a‡œåyü=󽓅MLçñ3}ÀÄêùàÐ×E–§:ãM„í‹!{Z<^Fýd3+ð¼){S,T$x§*jÈ0H˾™Þì¶?ô¢§Ð¤ú<ºî‡2þÃDà(t[Pt¡ôãÒîŠcÇKzÀ½P—¢”dÞØ;ª*/v˜i?¿æç<(è÷dñÇ Ñ0-é3}mÞNÚ¢þJí}Ã^#›‹û%ÌckMPꧯ[éŸÉÏ“ƒÌ7Oòq…ë% ïéáŸáb—;Qš±ÌÅÇaÎaîG.?J?2tAÕˆá.ûˆÎÿ!n endstream endobj 245 0 obj <> endobj 958 0 obj <>stream xœcd`ab`ddätö qv64qT~H3þaú!ËÜÝü£àG k7s7Ëüïg„¾' ~Oàÿ+ÀÀÌÈXXÙáœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*À\§c8çç”–¤)øæ§¤å1000&30¸0012²¤üèàû±°ùĦŒ».0}à-:«{iNuKK~•\Õ´¸Å>Ý¿ÅT~3ý–ú-ñá7ËwÉïLŽÞ^]ÐÝœÓY^×%ßì\×Í¡ítÿݧ·Ÿn;[î>K¾·¾¿zy7ǺîEsåù¦ýÈ™ü]|Û ® Ür\,•ù<œ gBzâ endstream endobj 186 0 obj <> endobj 959 0 obj <>stream xœ½Vipç^!#6Ô˜BFÈ®HRÆn W˜f8JJÀN5§Ï>„lË–u˺o½²V÷iaËŒlÆøHŒs!!$nI; “^“i¦“d¦í|rÖ?º¶stú£ÍNggwvì÷~ïs}/ K[‚±X,ÎÞü‚—Ÿ›[ŸZÃJ­]’z‚ tÑW5³–B:ÒÓzצ¯[¨U¨~%*ú!Æf±šZõ{Íra]M­ˆ—]•ÃÛ²}ûsx[7oÞÎÛÓÈÖUU4ñò+DµüÆ óÑÀ;&¨ªã‹ä¼ì]µ"QóŽM›¤RéÆŠÆÖaÍîœ Àû F#S—jIYÛt|K[–Y¬¯#.Ž"ýžÞEP¡ wÜñ:#NhÂáiw÷¾{u°÷ÂåŽ+€ßÔÖ>N¯P”“:!A7Þøb= ©Á ·[åfB‘_Spp•Ös!î‹{»ÉØè5Ä‚)ü7…—òvç7³ÿ€d %Y©ÉT:D‡ßzëzוpºp—Ù§#š¡Þ"€Z¨¢ê`"ý)sˆ5AEì3(A!— ôNzwf*³xííàÈW°cЉSaG—ÇäÑ‘|8e©†z8Mùf U¢¯»µ /‰§ÏÓbZš›[¦«¶fií ®óY\ĸD%à2\±ôÏÿçŠB<¨n·’míZDÁçtyü.s¹Pâg¢•4¥‘KÍJ{–Á®±ƒ·´ëBÄ SCp -çWñœgÃjh+6"ò[f'S·¸Cׯ“oºüŽ :»A£Eg˜­7,l] b½—i“i?j5Í­Úb›Õj1ƒÍb¡M´?“^…®›‚0Eì*øüaˆSV¿šàÃIˆ:à „¤-ÑQ¿AÆ‘C®)Ñž”îÎR°Û÷Ùq¥Äó-p„!¶ ÎÿçŽ@<¬yc D<¡ O‚tuÇÿà ;ÊëÅ3R_ÐEI”½(NÇ6Âé•\c“ÉtšÑ³¦Þmö’ç¡b†EX\èŠè@&o† ÛÕMEÈ”÷ÕÝ„,´­FO¡§¿<0ýóýEÇ%2R9U|¥kÁhQ’wk¸¾÷7 øHOEq©€fµž Oí*ajá/©†)G{»¡¢®¤þÆP›ÍâzƒÞša¡#â¾Úëµá$:‚¶…ß'Ô‚®Í*ÑðŠÚ 1¨ÂŠI\«|GѳM¦áåðSdìúM‡º ÛtÞЯ Ø;ìU•zÝÖ=Yi%¿úĉ“‡@‹kà€#à!"ñ¾è„€±S’hîPöþ÷÷Њþô »Uc!e…G[N1ý‰=BOUPÇ„ù|Ì|‡÷{–õßÁ².€uŒ–Š.×uU@A?J¯£×óîýÕÉÑ®N2T6*MBœÄ“=Cáw˜¾Ï4›ÐD¨Š‡™ Xz;ÅòR/×Ð n‰+k˜4ÅËEï_;‡–$n’߻̜•÷BÛtV»Åf\:@[m­ùuޱÑ$ã£R@«n–ôçÒiô³[è}OÞÞ‰0ôìG yUQ½Ùj5Ƀ/l“•¾_05Ýçîóô’ÞwmBx{ðk}¢šzT35Ò1yü! m¸×fgÙÜ®¶°T nËƒŠžs===½~.k”ÉËu]‹ªäxy’?ùo'¸º¬>¯ðVèñ÷t ‡.’¾ ô¨+âî`"-„Ôä”ÓkäßéüÂÇ|1Àƒ!kƒØ 5HÈ t[—˜}„ahéýï%g£Í`3ôÊ9Íצ}yJp½»Ï{ã ½Ô×tXBU¤ØÏÿW:2¾:´èÝYÙ{ìTÕ¹&±®Š‰Áÿãd³»èTQ%¡øb¨¶BÉ!Q‹iº°»ú7•EnGn;à¸ô`d0èOL26öŸ>#26›ZH“D]dÏ[Cš˜Å3è³ûìYvJÂ}M£³ 7Iè´ˆ=4§–>/â“ÛPêOåß"虹&®8×û×ßO#yÏ]2þÎèÃO﹯߸ã­kÚKž 9¹âŠï1cKU±:Y)÷ì*®Ãéð0Vi·Uz&Wµ¿,ÿèÏŒj›Ö2¼- ®è jhš —ÍUèkMº­¥â(Ô ¶ƒ:JŽÁ$5ãpÓ26? x™ye~D"UÈ*‡ÀifࢠŠàÒÎÔ^?juÄ:9ô)ÿ²äò? –§=×™þH›žŽaÿ.Ôö) endstream endobj 134 0 obj <> endobj 960 0 obj <>stream xœ­U Pgí¡n4]ÁZ·gp1x•²nˆâI¼q•ÃF˜†Pk>Žaäa`&È(‡ŠĨ›eCtc6±p³YËdÄ¿õg«¶*•T*»[©Úê©®žª~ßÿ½÷½~Ÿ€pw#GÄ–¡®‡Ü/Ü\7î—$`ñ‹+Ï#=À‡÷ž¹Þ[g!“J™‰¢| R gP¦kT)¥jQ`RhiXØÊE¢eK–„‰VË%ª”$±B´E¬–Jäb5ÿG&ŠR&¥HÔQà*©ZþÆâÅ999!byfˆRuðÍ E¢œµT´S’)QeK’Eë• µh«X.¹z qÝ"”òô,µD%Ú¢L–¨A¼¤P¦«2ÕÙbMR²ä 4E&YBÛˆíÄ"ŠØED1Äb/±–XG¬'6›ˆHb ±•%¦3 †'O¸GˆG‰à–›Ê­ &íîaîu¾*Ï·<‡©ÙÔvÚ“¾áåæ5ÓÏàƒóµ ×’‘\.ºÊüI22/0>"³€-{â‰_9ê‘JÝ=V²Wˆ›©øx›M¥ú*û¡ºàôé‡}~å Þ.€óB´‰úæC7o6íßÌbÍwg+´s6A÷8:?Nrz” ¿ùˆÀþØ>&°ö{„^BÌ·O‘‹ ð.&ÄÖ,§ê¬~†áܰ÷YçÚàô©:¤âòhH‚8Ã.¥8=)^“4Ïïv WmÜ\»‘cÈ>N¢f¼‚™j7ŒØs±ø Ñläö”?ËoÁ×xzòŽÂ˜=Â[rÿÐX*NHþ™pÎÂtœî}èo¿Ž˜Š}C×4œ&,hrhå[XÆ LôóÇ"’?~3:ÄÀGvD<©(Õƒš–YŽ´YÌÍ]Î4[BdÂÞ¨l¶ìO<ï'd?]y,p*àö¤”9ÔCÝI^Ë•…6ná s•ŒˆãB™f¨Í×ê!/5”é¡ PZ•W§¨‹‹dáû~Û«¨Ô ÏÈ;tw Š>>è䌸Š÷/糺†2cÐyP|Hˆ}©<(l¨./o=Îu Fãùăե[ÿ胊ßáiíÂ⊨ZÈL±f8Cw·Ÿû+r7†)+Øòb“Þt3˜ZùF—òCŸî@¡mä6†æÚI´•›Ç  B›ežeK…èiåcl¥°×cÍ…;gn|Ä^•ESëe$áófvw­Ð̽ìpÛÐ'ŒåjOCo9í ¤z$BÄ‚¬’—&•rj²  Z]o'£?öF–Ò¨†Š9'NB ë öëcádÃ>H›ÂÜciS Æ_ù›W—4B#˜Žëi—YmHÕéøÂjô?DбQ;É…¢‹ÌÓEÃKBW§m’›5V[k[§åpK–‘í=1<ç«W“Ä2j‡~£~b¹$w¤Ò+þ–qoôüÙ3í¬Qb•ô]ûYÕŸ…Wd»¨ÄÃyÙàB~‘ ËHŠIp~pë.ZbtqÆûm܇ùs’çý)sâZo­ã;ÞbÐÁnPLqè24æJËJ´"¬õÇ4j*iâ-S5Çb/oçiÇë÷CÖi_‚FC‹-Ã/üãäëÖ­Ê«¡©¢£ºh[vSVŽ:_–Ðw`d|ðYmߎ¬ÐŽN=nµ œãHú%ɹsŒ²H§†:½5Çf5ï¾µ¡û5,| “xžýÏ@4 8‘w}}>èK´e…z¶$[¹j!Ð[– ¢@4ÿ#£5—Aãä=òˆ7³Ð†$ý®ê=£$zø<œùî[8HIOŶÅðöÃd0fð̯_A³®Ùœáf -ªõpPŠMCBîïTøÄ4 ;œ£LŠËŒ…8H²dö¦ŸÖÁ¼[s¶Ãié=o»ƒ0˜ÙCOÑJ²¢ÐÉT2Ý%¹¥üÇÚ^ ã{¿ÅØ7x>öÅ "òlf?ë¨Ò׿5””„ƒWè5qfùùxºér+SƒDŸYzyA(W»|„Å]hãíû]èh— û:*~ÐsD«ï1²JU'œKu©æœê´ÖôW£÷îŸÊ}'Ó*l¬w˜‡Êuz­òhMCþñÆ–šŽ–üž„Ü}:q«:žÜ tàšõ¿‰µJÍ9Â,UqdBb›¬=7æHb2ÄÑÿˆBþȹ]|0’v.µ…Ýnß A@›ž1!ð¤½×hmj¶tØê;þ ¼šu@›q˜/¤L+Ñ=€ßb:ÑËðëè7ã†_17_(ünw¸&õãõ±<.*MÖ¡/=§btrx ÿÇý'sù R€¼y—ÄpL—º3U‘¡N“ve[æ.+‹ƒñVÞ;ï×”òÞiù>G¯B4À pN•ŒÔO 9‚šªú¯þ©ŠQÏ#™Ÿlß…o6Ó?lé…×÷»Táú‘ÏÛy=>‘^ÂÅq›y¬æ÷;Û"!âÖç§Ó?¹>zïvÝž]ÿSœŸóîŒcÙæç¬Cð"ž{À4žëeºB(ÃAkýydÞ$²bŽýò$rÅ‘ïB+4HЉgþÆ#UEÍ| W×T5 µÜ1´vÂTu´ª æ4CU±‘æg†w›Ñj—¶ÙH´­‰9„…¯ÕëùÂ¥tQM©±áÓûÈçJÎ¥}©Y ¹9ÃÙÞX_YɺÆÍþ@$‰®0=éíÊ”¬teJg–­§½ÓÆÎÈ6sMHY{Ìì‰Åu”Ã{lëí¾²ÍÇËfôñkö™NÿXÝøM endstream endobj 32 0 obj <> endobj 961 0 obj <>stream xœY XSG×¾¸¹*n¤WAí½Ô½ÖºïZw­ XWÙ·! KX“ KØ÷„}S÷W\‚ÚëÒÚj[«mmÕÖvb‡þß?I€¤_ý¾ÿçÁçÞÉÌ™÷œóž÷L8„u‚Ãáp—»¸ºN›jøï8ýŽ~dý»V©H¤ßÿÆÙØZ[놑ãoÙ齆ÀƒƒàÖÁ„‡™´<4LÄ÷÷õ8NØý¾ã´yóæLrœ>uê<Ç¥Á>|ÿÝ^!Ž.^?Ÿ`/9n Ýíï#9NXè'„ÍŸ2E(Nö Ž˜Ê÷]ôþ$G¡¿ÀÏq£O„?ÊgãªÐã:¯`G“u“M–‡‡E |øŽ.¡{|ø!A¸/ Ù²,tëò°m+ÂWòWE|,Xé%ôZí½V´Û%fÏ:ŸOö®÷Ýà·ÑS€kàæ ·`wÏ)SÅÓ$Ó¥3bgΚ=ç½¹£æž?fÁÂq_4añû·OÚùád‚E|BÌ#Fë‰ùÄb±€Kl$Æ›ˆñ„+1ØL¼O¸ wb ±Œ˜Dl%–ÛˆÄdb;±’˜B¬"¦ÓˆÕÄt‰˜A83‰5Ä,b-1›p!æ눹Äb01„ØAØ; áA¼Cx41”FØ}ŠNX#b$ñ.Á%‚"X¢/áHô#ú ‰Ä"b 1ˆØ‚}‰'Šˆß9bÎë>súTZ ²J¶zl=Ǻ†µI¶ùÌä¾Ã çBÊjí;¸om¿™ýNõ_Þ¿Õ¶mºí£I:nxuÐèA)ƒ~¼zȘ!—ìØ=â-æýøÎÎwNЋi5ýpèò¡?S ;<ì¹ý<û vóª‡~jĨÊ‘FVüóÝõï^bÞeYO¶ÈÑݱÙñ¯÷´£úŽZ?ªlÔ£wn³iL昛cmÇN»Q_1P_´¿i¡î>§V`uúû´¬Uª !@ d>h@—Æ^  YŸœœb©àPʼ"˪@C£ø²•¿ÙÀÙdåh_! ®eì+²´4¦äÅe±É‘@(´\I+ÉëHgƒìI㦰C몵{®ƒ®ºa¼/á|ý;t(ÞÍ,#Å|¼P (b£OóÎ ‹ðº| f=áJ’wüÅÖ3çŠB?ap×8¯Ö0ïCËyòå–£ Þ—«‡t4eÜ[/ÕrZõVðüІ6P`SA>$ìhRÂÁA• ’]Æ-‚ãlÔ• ±ozŽ_Õ€b¶’„¶(9 R›HR÷®ÆO3-ìSèö r³Dþý•aA7QZ衵û^%ºí=œ©?IÃ!äw.ÞNÙ1$ÜJ_«8vtP·×=@V Š"¥ªA [Û%%y¯Ã, RÐæJç=ÝöëóËY'T@#Œ‚ ù]Ã2m{ÖÏdñÆÉZø¥–sQ«uVz_„wœü ²FÖ“' !ˆ÷ã$Øöùñ'hÇ /4‹^êr÷Ù÷ׯ~ëšóÔÉ.K–²½Âh¼Àzl²†,®6žZÜ^¨bG¡xé™ùpn‚Æ¡ªÂ  áu6^CÂ è² ZÃçö>ƒýÍ+ñáLñZ}Ž–sHo\±ÒGëïÑ% :X”’”ÂÈS<–P·S½G09£5ÿ…C!õ°óɾ/€9›ôþüo@Mõ;œßô{ç• ;ç±1éâ@5Úp.Ä×Â)Zx£;2UØ)÷á|XJ_¾tîêKËf~°ÒyåG~O1hœõa¯£²&@AÎó!šþó{Û=DAþ,ïy½¼ÈçoqÜU÷Ÿâ˜ìEóŠÀxîÕ¥óŠ äQû#A4ƒ‘‰‰ì2n4ˆÜo0”9ó¹èA—(A’A‚ƒ(gàkr_vnû”[*üý@”YŽê¸½«?ÐÁ2Õ=¤»í(f+º¤‘dïz“pØcègÁ™³àDäÀ"n×IZ/ý‰ mÚqœS¨ï4YYàtÇè˜Jlµ«Þ‘6mãÄÕ{×lı; ñÐà&Â>7N´TjX¸ÍÂ× Ì¾ÞF®‚Þ¸mÞ¼¥Î7Ÿ<½©ûúîñENŒ)K"µÐÓèŽaºãºØ%>×ÒÁfËõ¬éèæ£¯Bj.¯ FÂa\o nÞ*Ê™gݯÅÞ =¡ÜìEô6·19ÏŸéêkÎïK–‚êàªGÃxÇ!®£¸üÀ(#J…Õ€ªP—ÔªãŽÌݲF´Ö•å}¹ß´êcŽôû¨c¾y‹ÌD€¬ºw 0ür^éàH|F+¸ÖÑp$ùVÛG˜ñÛ‡˜Ù×% °ðìd3ÐîdØÝÒÂ8mvï%<shA¦0ƒŸ’ùq8HÕ45þøMQpx£ŒIiìN×{©Ò$9ã©ñÑØÇ ó|§¼Žy*eyÏÚ¿Žu¾woÀÔ›òïñ™”²Ôüp@<ÂN䊿!·DÙRÀ´ùž“×áÄ™ÞôÍ)–÷ü†hM`eLv8C arÖÁV›¡]e _#XýÍ !ãõ¶n€š¿p<üðë_ï5_ ¢”MQÅÕt› Y£ÍQ)ñþƯaw±¶Ùv œÐÚßìñHC¥šBÒ&xnhUs NŸŽÁד4œkÆÍ}@öFÚ¼™¦Âc`øÇ(üà†ïí;÷v–_€"*†Q¸lLj8[ÍZ°>ç‘úá:aú¬¶XÛâŒÕÈùA¿¿í­4Õ]R¾yôw⌂~(ŠO¾VMàjˆìžê ÿl¢•P¨ÛdIµp)ëÆØú[IöÇ…wÚü¸À…`_+¹ÿœ‘K~ ‹¸Íð¢ƒÃy-uÔß ÌJ¿ û¥Áœ¾æבˆƒî"¼kS÷·½€5‹žø«8”ƒJ¿Ï`gª.ÕA+-§Do¥ßiØAƒÑˆ"L‡¤(¨ ÊÙ6r+:c£ SkbOÄ]MË÷ 8â#Ó’v#&UH)HwxƦÍ$“ º÷ãÐÀ^A™‚ É!àpdä–i«+‹2*(%™åÞ‚úf&Ä”Ð2J2+¨wMÓ¾ÐÚ]Ðíê„.ØeQú>MtEÐ)E+ êº««WBVF" ƒ¸ŸoþÙ5, Öˆ«Šër[” ÈQ*ÕéEÊB ¨/έ`y'ÑÊ44hëÃW]u~Åð¢Z@GöÉF*3Ü.V|Q{D¾1 P.Þû¶=lc3ÍÅ¿³Ý ÖÃ?i8 ºÚ0€†Cf†Áw&†|Q¹ ,¯à÷»ñ&Ç”‹±öôŽ^½s"¡ù ö…Ž(æWçÜ5½Ç…œ•g¦ªéT7cÑêoA> ±œ°9DÕö„Kß%RË.·ø¥MMA}ÍF"a?4 F³lv›ŸÂ¾¦ ‰AìC8¨ ² í‘qø]ï»»sI¡ÚôJ ³ö4tþgjt©H!ˆÂL£®fxm^‡±€a¡Xžd;ðùQh«õmî?D‡9‘8:˜ŒsiÎ¥v‹3Ï6xK—t¯y¤·í©‘8à1s £pL6È­Õï×rŽ>ú?j9òÝ›,J rP)å2MRùd˜d_ýöìj$á(ô&3ÈÂÈùóbù!®¾r‰(³r@!U-*ã‡ÅˆÂ½öïn{qÚçg2½Âô¶Ftb9t]H'È…ILrlôŽ¥€š½üæ÷§ê ŽÐ2VéW.­T•¦´þöhà–|‚FÎ@¶?Œ…vÝÿsi7áŽÖÁ-çf;¬Æ1{ToCÇùÊB’CpŽ&œœ 䪄*>j“é¼ÐÄvI¹Q݇yÐ ¬>\ÉÍßy ¹fÆæ }²’T‰I åäe¨¾ƒª‚s”²+œ|뇥Ü&Mw nµ=U* 7r›6V¼7´F­Ì¥Ýòï™Iþí4Ë¿˜ÎE×Q[”P‘bLòO?ˆ¬P5(¦.™Uªàö°Ç c€è Ð?OÓ¾@zˆ±d{½ê-l?äµÕx—ì8åÜ“‰¿ã8mGjëê)h½‚»Éc|ÞùÓÍë7¯µmr5Çé³v…1ߨ¿EÇí“d„êc‹úf¨`½£ß-J”>TIµ]i…~%ŠàÐPÑÊêUÕÜÞïYÖÁPE·¨y¾£å\ÐÁ* äB¸‰Ö”ƒH®ù Eý?ÅëÀ—ã íO>©6„–(1-:‰Ü²Y –€%§Å)åºèöå 7n¸ø¹c¨Þ¤]kñª~ð DÕ!䆎¢#š0è×VÔÂ# òF9ô À×ÄŽ;  ÜÈ?Qx¹±à¸ šeÅ®;ðNë€ X¿9~SxÔtÐpÎ뵺笠ʠ8Z¤ÖÀ“ä½Ï@“š»§Y]YRwe/X´s&ã6Þ,?^¢Žq¥³Ê\:Çu«ÌµZ˜¦å`–’cî˜å†^R·Ÿ<{¶ô â²H`!»¤ÒæÅ‚I½Ôúwò§£«ÜÜv­úûÂÀ"¢+péÅ WàÎ+võ—¢ ²âॠ·†ñþˆ‡R¸‚ÞìuòÜÅcÇΞ?²Ãm£§§;;Íη Úõôö­ÎY}L«)¨Ê,TªÂ*“òUZYP_ݸ9~›Â'+Î÷+ß ¨W,™½«4 8šå!"^,‹ üŠø¹qK=ÀÇ žšõz|¾óºã»Ñé-µLl¶WÅ4@­$A,HL7ôKqEñE 5H™éE™yì®Òã—=V–ÛÔ¤f«KrÁm@uB0ËsÉ®ñÆf‡Õüa K—‚r•ð@|›X(ÚŸTx¬¬¬9÷¾ê<ø œ þ …M@™Ï¨bÏOO͉Ë%X…¾7Ðä4 ¬K8/;n€ó |™wªðB…ú)èu1ùι[ð±6ä#”FJ¶?²—+”B@Å“RˆNQ¦e¤tSœ1½9F9g¥_ OІKÕ† ®{K’þ—{•ÿÇ­Š©1ßÚÝ·Øa-ë¤óÒ©1µˆáT\“n‘O­ß¾ÍcÃTv9 ]éO[ʵà0õpñÔA+ÿ26€ä¾‡¥vh ­ˆ‘À 8ƒàòÀÒà:ñ~@]­ú´µ 7øX^+ØDùÞ˜PpâÜU#«dâêi~onÝa}^¬Âö=ƒúá´©Ee‘-6¨ °øSæ€Eò^êåÖu‘¡¡‘‘¡¡‘uuuL7ؽK®û\7,Þkéºäo„`&å¾kýÂÐm™µ»¯ÚÔ#Š2E©¢,°»BöÆv¨BUÔ”Ë ÖŠ¯ávˆºõ¸óšï‘¸BÖûPXöGeïåü2¯ŸfpÒáLÛ©Ïa¿âƒTLFd~²º§½±7µd)1Á‰ŒwóæXVKÎ^}Âé›Ü’e*ž ŠÒ¨Þ:8Õ ‡¡x­·î…b:ÙK#phׇ$ˆ>á~a>AX†€¸tI:.Ié ›ª”F "cBÿ ñ í5†÷Lÿë[Ñ1Õ€tÐAûåoÿ–ÖuÄ[®8º¤î—Kÿ­‡5QfL™}Ú 0‡†ƒ צ٢_˜l!†H4M²¯M:›ËN[—t›E£dÑ*o»O~}ÓÃÓŦš~æåƒº/§0¡ÞÕÁxCéÆÇkè©§xÚ‚MѤ£“»»›óÙ?øCƒA¿mÖ/$ôhÊ‹žÂAÌ¿·MŸýÝWÆÔŠû%ÚbüÀ¢h 5X˜¨1¨»2½ÄdŸQ¨ökÚVšÙEèr¬[ôâ¤]eלZ*k™¨w°oþÇÌ8ܺJó|J@=p¨å ·¥7Á\µvçÚaïáÊŒ£KË„@¨@óÇQ×7ª›N›Œ¾,ü˜Ëkë<|òpeQŒ3ƒ¤Üèιû·Iÿç”,n!9=Ø;vO(#ÙZ(Þý@,ˆ¤ŒXÀV\£åäëVúP G~r^hÁH¤'z˜¸.É]ŠI¾¶nS¨d• Ã-ž$àoÚ‘â‚å#ÈR”'w×;Zêà…¦>¢ä²JòV—:˯ 7s¹Xå©3²ÏÃØÌC¸ÕËô8DJy6¿dã÷U «Ù`㤛œvýT+ý¼ItA3hnöq,úœŒó~~Í À@÷s5ojÎ%ý$+½Ç›Atv‰€ªLR*ŒL’Ä&3蛿V%‰$:ˆŠcÔÙÅ…ª^²âœÖÁƒ8XC BfÝX8 õAÖã§ë^¡a°´~‡C ²39Ã~p§ûåÎí›ï£ñh‚3ê÷‘Ñ-Žùk17ø5cŸtg&Îü³wa½Îê³K´,19H)C·ÊÀ§¦^«¦[‰G‡2HF^>óÓÝ£‡®¶Ÿ¸¾¦ í¸»h ê·pÞì½uñ¥šÊÒº‚”BY6S|âdã@=ør猕Û68¹¾ êË4¨ÇÝë·×¬ÍôT N…ðòTœüŒÃ@! ÒîâÀ£‚Mò •B«¸˜Ã}ÑX¹qlcé£Õ÷‹Y¥ œuÔ.ƶø@ÉâSÊ*“ë"” l„õI—·wßË¥_1|Wq¬ó“N¦ÛËÇs½|D·¨»ÎSw–}†¸ÈvåöUÕRµá+ÿ$c#Ê„5ÕêÒ†6ßó1{ GÃ{ õ²_ çço¡-$gt¢> OïÜc<¼)èˆÓÎ`O›P+W)Tr€"àe.§mG+²å¥Xbt\9ýÅýs«—ÎrÚ¸Üh–FߢåÓ]Ä´5“6ZŠÖú£0€úPRÐ\Zš_ÏdÁø!\¦½¬.KOE”!L„dr‰Èpå"£Y¯nyQn'/¾ÕèßÙî÷ ^×wÐç¼3e2ïT7ÿ,4%݃Qzƒ=éÞÊðÜÝ9é‡ÒÏ+¯+Ï+Ïf^種‚ÿ aºîĉ¢s5|3b¸]}‹a½ÌåxûÙöS_Ý»¸Ý}£‹ç2ö« úëÚãmà"õ`ö=ÔÙÎY8㉭_…3¼_—D­Y¿døÄg3àh÷ôñó»Î——j˜…¨‰žëÔ®Ó^ºúýÓ‹k×­rÚ4×@ð><Éù{…øñÁVÿ"îý‹Ð_£3NúçÄ‚hŸáYˆ<í•’Œ¨:LÒYeÊRC(íúï3L‡™×[p<èÜ;aì=CÎ5tüÑ„p=ôUF•dfe©@)U%R‡ó…1Áe+pfv܆&#+Ý$d5n.ŽòñtˆâùYp¶ôøa ɤç»}vçÑçí·ŽÖ „%lM@ÁÜ£ÉrR2Å@F¹nÞ8×è/ uŽ» G©9ÍúmVú>pýÙ[$È28Îæ”ùY¹Y-yàRCq4À~Ì[Ÿ.2ØÏHg³Íüà )Fƒ@*PP¢¢McF}A:SÚüú–çh(N—_+Œ1ªTŒ‚Â;à+xOoM·×úðƒ‚ö6„7µV762è²õ?žËÐeío¡ë·8¦í.][Óùö—;k® ãý¥'`=ýiìQ°lñر&žZÅ4’p=TÞ’3ªÌ¼PIÕE” e¾©;ç^Z©xf¯¡ãhlÕ%L+,?óÜm¡¿ ±µïÎÁ=Ü}©§¥%[Sâ@,…e~­¦ª åK×[¨_Óbì3‚_ÌøpQŸØ5‹ÁR¡B\DÝ´Þ˜çvœ§NêÈ£L-3ƳÛξþ²ák¦·žŸ÷l}—5»Ù'Z’˜œ&MbJRSZñÓyhýip“ox¨h©_›”vÞSmÒGëõb:?»0”S•ÑbYšB&eд[–›¢@lN|^|ˆ|ì‹d \ƒJÊ *ËñÓl‚N6¦ø¾­…Cµœ:ªýÛvhßn¥Ÿ£'éF3kOéé JÙ°³ÂÜb5ÞW…ç_¾—1ÄÚ¨/VlÝì1~Wö&ÍZ&1qù":BìvR‹O.ÿâìá¦ÖF¦$úèLÉŸÖß8µ/ÈÃåá)lªgt¬ì>'dšfõ‰¼j ­…iÉYÅ9¬å.ÕÔTìO_- ùnÝÄ‘5-.(TìÉ’•FìuóM‘Ê#ájí©ü‚“gà~óÁMN«ÞÕJï_ÐûpìRwÒ½8÷á@†¯Ñ$º¨¿ 0ˆÊ?ɸü¦‹hÃ4Q°c<î“ý ½Nk þôÉô—{[¼DáajACv–¤3™@–¶|áN61%!{KT*-ªú]íþÍC1Säª …‰ù Ùè!ô±—æ¦)e€GÇ ¢ñÓ$BNÿ‹O2ºMPW’›¡Ì-2,6Oó&ôRÃ×d›iPœ”)*@ƒ¿Ý ´/Z! ‡_’Ÿ Š©œuxÚ…ìQ.êbZóVæÜ²»›°œ©ÉRç°Ý|ÓÚutžx1íëßµõL¦ÁÉ’‹ÏÎÔ—´Ôƒ³T ÿrAïmsÚX%јdY^ŠŠ©®;™}P¯…GÆE'°hì0ì¦ö€ØC yªý8ŒóÐ2úm%¡û°v{ ±vƒýw>ñ;ív{I{ øÉÂDI~RV ç"N1šœÁø½ˆE#¦Jp& •¨V×Ã]˜Rs «=ÑDé—£gWá «Ÿ«ínèí‘ðÓa¼ÿÇ¡ŠÖúïUßôª§ƒ@© ËŠKãråJ–_úñ¾ð"H\¶/È.ÌÆ “ êw3hðòôå§ w&û@€,Dé”Î âª4W’€ƒ0V$‰ÎO.ÄNâ¬GÄú¸¤Ød tH!‡8ø–<\áBd `ß>°/·^ñ©¼ÆÈ\Ú7£±Våc¯}òfmÖ+N&½ò×n*a?,zÕIoF“&Þˆ‚¥hˆÆÀã l§‡Í´Äe‡8.5!M”‚e—š^‡}´{zîúÔó÷©²•éÙ»K1ÚÞ¼×Ý1;Ytø“þ&YŒLbÝU=½¬úÍ0³yÇ?Él`|¾~y.\œO"Q6WÛOןég- µí«µµÕÙ ˆÿ‚ÝÒä endstream endobj 132 0 obj <> endobj 962 0 obj <>stream xœcd`ab`ddduö 21T~H3þaú!ËÜÝý£÷§.k7s7ËÚï«…¾‡ ~áÿ(ÀÀÌȘ[Øàœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€\¦"œós JKR‹|óSR‹ò „˜YütðýøÞ½éÇüMÛç3~_úùûïŸü¢+Û»så<½U»Ó»9RØ—vŸí>¾œãO/{VwŠ\B Û¡þ›Ý‡ðf÷¡ö½<Ê›ØUºg¬‘ç+[ðÃyÖ÷ü©“°ýNœÆ¾‰ë·‹ù|ÎÕ“xxîÍááe` Kq' endstream endobj 30 0 obj <> endobj 963 0 obj <>stream xœ¥y \×Òo#Óí†ÊØ"jzÀÜwcL↢‰»à.* HØ÷}˜™ša_ÙUad±Å¨¸E&côů‰IL¢ÑKbªñï~g@“››Ü÷¾÷Þ¯2hŸ9uªê_õÿ×QÆôîÅÈd2vñ*ûÍÓ§™~µ•FȤ‘½¤×äN$ý…±3É úË¡ïÆ‘B§…4t0 Ä-ƒ¹Læš²Ø? 2ÈÛÓ+ÄzÜ®ñÖÓçÎ3ÉzÆ´is­ùzyïrõ³^åâåáëBÿòžµ“ÿ.oHëqo{…„¼9ujxxøWßà)þAžóÇO²÷ñ²vôö óp·^êïb½ÚÕ×úçtSz>ûû„†xY¯òw÷òcfþ"?{ÿÅK‚–/ y'ôݰp×·•‘»VE¹¯öX³{­§—£·Óžõ>ÞÛè;uÚô3gÍ~}ÎsÇNè?`ò”~ 3ŠYÃŒfÖ2c˜uÌXÆ–qbì˜õÌ8f3žÙÈL`61›{f ³˜™Ìle–0S˜mŒ3•YÊLc–1Ó™w˜w™™Ìrf³‚™Í¬d^gV1s˜ÕÌ f0cÁ(™! Ï e,™aŒ3œQ0ý_Æ1gÊú2 h˜ÞL óT¶Gv¾×â^傳úÔöù±¯ßúy÷këÿfÿOÌPkÞÏÜg ýÀºA›¼cðe‹×,•3•^ʆ„ 1òCøü¡aC/[úXþs˜×°ÇVà :"i$?rÂÈå#ŸKóÎNÑV”–—Êš;Ê%¿ÎY|ÂxˆHKN‰$ú®‡©c4É € sV4èOj ÎÁQÍ©þ£EV; õéyz½ê0Ã2Å%bk6‰.LÿZ  ¾‚úî…Xòäã‚Ô˜‘…y§µû¬ÝÓh ú¸ ÂRÙJ‘xry©3{HÉÐ@í\ÔÒ™¾¾=X”=h»RW¶@ ¹¤€ýyC£ÝÄŽ›ådX²0ÙÌ™U¶^Îw•yçEj²ÕˆÅ¢Ú¡%žÅQ„E;K¥„5R?‹q9ûlÿÛÛço[5A…Š(™’/ÁîÛYŸ“ÙB×Rgdº*”?ÆYrWà›÷¿zòÃìë¤_®j6¹Ê“•ØŠ¥ BËWp‚.È2F0—>Q7IJ£¬‡`6‘KèÇãð©ÏÈòÆ´±ÄŠ úÊß·¿|†’CVòD È|Ù ïשJŽ+kƒcp,ºÜ«ÌÖÃ6n†(óΛ ¢ôB”]ÅÉ’¦MÞ™Ý9/ÜÈ$­6%YxwíªSïì_VÄ@&“ñÄ•¸"ýD®A3ˆliŠ>*. ¢tª2œ Xm ó`N妜ÏÇ߆¯á\:2W®}xíËüÓô4ðý‚r¢LÐk+€; 7 1µ E´1J²ö]MÏi3qˆ¥òàßx(Ñ닊ššOg•wýÜjbAl6-u†³;T … ‡n^ï¯ã‰ÍÀá„|*´šö³pã{‘!*åã6–8˜2Hóç¡êÒÿUÒYóf JEÍéHÉíähש仚²´˜Å-8:ºÈäÉVU—½³5]yé!Ú²×à‹ˆ6‡úÍ9Ë` YüFŸÛ–ÍŒ^ œyg…K½ˆygL[ÂÙ¢¼ÓòΊP"øÏ «€#“°¾]ñCžË"•ˆuΊEI.„õ˜‡“8Øï#8QñªÍ~•™Àó=S§…Â\ò¥[âèõí4dÌs47a'~Í£KÞ|é±»ª»êõ­†ÐWÁØ]H³p1«¼s£ ÍŸ :]d4øqnµáÕÕµeMg6To”­°kKÈJê€'µR!bùK¦ŠøõaXçÛ|×?^‡ê38m€28Þm€ŒÀŠS칿9•LÚ‚åhmrªbþ^Ò‡:e.mQ¥µ Ç\ob<ýaIKÎE~wöò|¹Ë ävƒßúLA£O-®2+TŸ³&p¦i!Â],ôÊÚœ/¡‘·ÜUP¥jòjP߉å”êÛqk‡/œ ¡6·Zâ…Ô¢Tˆ.Ô!*"c# i¶ö– z(ß›n8ásJ«Á)€¶-áõ^‡TÊ;îÕ>Yó 9ó#DÏ2t¥¾¢…©N&ਭm–ʘN›3|MÀ¥ÀlàŠ p¯ ·.²^šYàë(6¤Óp8ã[V)Bø¹‡Æø¨}`6Ì®ÞzÙ¥=î&|Ø»ôÂѶ¦SwŽþ¿ü¹@Їý×j´¿°8o­F™JìÈ.² Ç’©˜¯RÆ阹ä¤nÂЏ TÖA«©¯(ïlxrµþ2ôæg­ço gœ7³Ë|‚ý×ÁÕ «ió&¶èäÌêì¶Ž§áwi˜Þù­èGÉñ˜É7…¨p£çßNŸñàÖs~=¿Â™m¦g8´°(+û °¢µ©Ý¤K¥™Ùbðï‰Yh RÒÔ MK›3yØxdÍšDE n¥Ö|hföt/»Éâ4²’X»¨OØV´«Në3¡ .hK»y„ŒÈÌÒƒ>;GõeØ‹ 5swVÐ`8µÐª=Ò½jI´}ˤ׌¸®ýw¾‹Á=ÒXOüÎWÇ"ÛvÎLÙ–œÓ¶ááßÑÍo“¿#ci½Ûÿàp.‹´ó˜Á¬?YÝN9ÐÈgXè®òsÛžàà~6q/ÅѲßñŽ—h·ìf¢ä¥QdYÜÊf#DÅN ‘ÁVØ ¶¬`é† ðÄÙ(] ±E¶ñÙEé=ˆ¦Xüâ ­¯KKÔéT„¥ÍJ‰ÿñkºlB¶…nóY¶¬bA«ONÏͨ(‚zîHp¥·¿_„ûfÑíÒ —Ϥ¹Í¡"h`“¬Š {,Ç.i"­ ƒ$î†.kY¶ˆšåˆÕw“p ¾~¹ì¢XHŒÔiãR…À•Û"6SêUÚ88ùúb¦Peþâ³—1wFú•î/µà0ž¤Hª ”vÝ S8.) T§ó×k´Ô.ÈĀ穢8§_v‡ 6¢ô‘¿teNõ,Vu=É /HÍ«RÈÙ›‘‹µ¦ïŽ­Â˜þšéóÝK†& M#’@6 !ˆÖX4I½©ü“ìåÒŠ”œ|ƒr¹²XˆºäŠx²ØLTduÔ;€û»‚Ôv1I ´Ì“¬B ¡D)öã3gE’môj2 ¸ÙŠŠ’¼‡¦ˆfšj6Fz½…ßÊâŠßš¬ôó¿b’lb•m[6eíAlGÍ$6dØ·“pÅãp²²¦ŠÃ+½I:é¶žê}b8àÆI8{ QU}LÌ«óÐäSîÇu3LÏHigäx¶s6ŸP Ó‡Ñ/Eþ¿E¹”•R»¾È‹×ëöÕAÈ­PI·Y(×ë¥W¦àpU&òr¤äì ›^6ø*v?ëök«5z„r]ã)Ì+)®<‚oö¨íäïå’Ûåyp°F}kË)ÕnãÆýKé9gÍC“áO'àlœÑò¼x¤FiS£Õª°mŽ>Ëé Z½¯:ÒÛШ?Vvä@SSA5`0K½-ÉŸš;ÍÝÊ{N–w6á·<¾GÆÒ±"ˆDGv“]hMFc8F¡€cÑUèêM>àׂý!·Ïö\N¾ àjúßÔüÁõª‹Tã}ìßônÊŒù° Òf¸.ÝaﺊQü©»/b€QF;"óʱ´–_è|›t,uVüY%v +’ÏXìõYnUf&h³…˜„äˆà\ê#®-k>æÙ:o Vr›Û¢3:ܽxãpò•wê§Ck`"Rõªß™Ðû!/coVw™l ,¤¨A3Xåé¾ %ý·ž8qé ©º§Øž”½R:r*Dxš‘ÿŸ vóº]!~ÿ¯•kÞÙ‘` ±Æˆ5ÝóëHL Ö8ù›S–Êh4â¯<Ö`_gæ­v‚7È\N ã‘;üþ‡p{FzÝ'k…®A¿%ÏH“G'Jš¼W] kXå)êij¼k½¨æµ‡waë ïã¡—ÓèˆöKá×ûÊi#Ó%ÆéT©Î~¡¾°’n¦Óæ'¬ËŒ½±¾Æeë'ݳýCœfq—2o_d,•0DÚÈ{“Cnjôm†cpÞ×»#°ŠU>Ë“®óÇ=ë\]¼¼\\ê½ZŽëŽS€ZÐ9÷¿Z,®¶îxŒ?žßj©¼%ÙJ3x2¶fW®S|`ÕrèòÓÏŸy“‘BF0h_¸¢[‚S—˜ ìØ¹îÄò\*ȤÅG-?²½,TÕ¶µ.eÁœòÑWTÁ”‡í©¢0à¶.½€L*ÅñÉ‚n?d†¾?–w¹CvŽpâĵ­ÔÍ`…s/£Ù3•ò üÍ{ÓJL%kâÛsÝapÂÁÇh$S$~þBZÍ;³ÅP{µåia\— »%fñšèdCFŒPR”Y{¹úÀƒžAžŽ—¼ÿöàûÓÏ)¥a|‹Ìõ.¯‚ÓR_ßBƒÓLax÷‚예)´x“©>éœÃÿ:[FÔ”YrÑ,ïŽîN×]2ÙYq6–ÞEúг=ÙŸ,ÝýŒÅÑ÷VQtÏw=J 7µËèŒ*§t"/mÿƒÀ9E3xT/ŒpN¾ÌàRT²Õ9Y¥EÏˆÅ°Üø}á á’"!Npf¾¤¢Ëuº:­im뚌¸}dzáϊòs³¯›t^€&ˆVb,7„ôè‘ H×ä$SÞá( žöô(IuÆ$©áÿoIbK;³l+‘‘ÅZ´<'H³þÃì3‰%Vt<’á.tü;m€…nhKiµs¦˜„t.çÿ= µú“SS<¡­{uCÑÙ™\Ö© £Fçyyg„ô+ŸU˜‘{ ¸zVÝ6mì¢guOï™þħiRé@vtm#ÞR°Ùw&—&Ò£¹Ãðê^ö-‹Õ¿Êr"3’Õ>*Éó+ipÿp¥æÚóÇRÙöºVû²ír]yøüÿÔ”þK ØŽÍÍc¦mÚ²=P45Ýf㟕œòÞï×pm=ŒRAzÙ §RÙUÉQ.:×ò™z®4:?6,56V-t ü¯)©ñ Uø¾„¢²Ì½Y¦K´£ôQÖJI&Ât‰v?áë0™¨‰ZG’ÆÓ“hTcŠ£ž $•ˆ¼'8•ÇÝJ: ?A;?Ì9]ððF^%ÅksDÉÎâÝ`sÁ ¦¥lв2Ö—­dJ°Z<^*Ãxì'Ç_:å|9ä&h!%I˜ï8¨Æ w.UìƒvýÅ®«ˆ¨œÙãéÏ¡>Ï_Ý¡X³¦è(umDÙyƒKQKEDe»& ¾A]Qýð7ŽÖ¶·È•²+”BÚu÷3¹Âo‚€Æä}ѵp ös8ø¬Øþ=,´³…E¶ÝõT&eá`ÙUño¦<´Jø¼|0Ðé¸(B€ØeÆf„eèrµyœ³Â‹dS&Éû¬°0ßuŠ©ÙyŠõË'’Þ‹É ã¬ÎAÖ>1óšp‚…“é'³ÅÜëe뛹nç¥{Ôïncñí LW…Û¤`>:׿ê¸_g7Ý?å¶lk ÷N?áxÃXs.pÿ˜ÖJDåðöÄûWÞÝ)(ÎÙ½ÓqÑpŠef3…Ö¬{_a/dæˆ[ dÁ2¾>R hïxÐÑ0ØÆÍ™í8Þñý»wÏ´Ô—v;ÛR†ƒÛŒøÜ”€‘Ö´6×àk&ˆ Çó|( öIkc¼£Ü]v,…Hð4ø–¤-‚V®.ä»{p Ç²÷©hŠÓïc.MÀuÀ’HF{“ ' );(©1»áGänü$¸ýô |þËÅŠ‰ª‚=°¼¹•cç´Q;ñ¾Œj¼a”]íÀy":™~Ê1IRòK ãòè¸ÙÒîFË5^*©?ä³s32!¯»OƤ$%& ;7-÷š „ƒ·.øRÝœ¿¸93Wk2öÇ{ŸÞºˆ£öƒ1FT]ó½ÐepÂpª´+ú׾芃.ª(¶¸(3+/[è|Wñh7¿Ýáß6ÈX2÷¯ŽDCŠˤµäÅÕ&ú\+µøTšOb,•ÿÄKR2æS su™tf®,©®ËNJW›6´iËM/ˆj«êà’pu’6‰–ûÀ)å8$}_¦Uu@^TT@‚*hÓ£…r2„ |Ÿ›dPƒUxp„Ÿ_YJ®F…6[‰ÍÖ$MX øYùUF”får ø(” ÑDÓž˜jåw0±¸ø`þ¡Ì”–´*¡ç¿œ:DçóWQYb4ݼ㠴mÒd§$A²á+³ÀKE>ú+—&²d‰Z§h­”_»'Šû5|[]–W!D©¢`ç^h> endobj 964 0 obj <>stream xœcd`ab`dddsö Ž4±T~H3þaú!ËÜÝýƒíÇaÖnæn–…ß }OüËÿ=J€…‘1¯¸©Ý9¿ ²(3=£DA#YSÁÐÒÒ\GÁÈÀÀRÁ17µ(391OÁ7±$#57±ÈÉQÎOÎL-©TаÉ())°Ò×///×KÌ-ÖË/J·ÓÔQ(Ï,ÉPJ-N-*KMQpËÏ+QðKÌMU»ML:çç”–¤)øæ§¤åeæ¦200000v1012²Øüèàûá³qÁ’ùŒ/¾¯dþþçGªhOÏ”yݳ8Ög/ÊMjÈ©i“û­÷ǵ½¾»£»K²zkcÏ”Þ Ó'Êñ/þi¿í·òtöÃ\‡¹/äáb^ʽhö endstream endobj 97 0 obj <> endobj 965 0 obj <>stream xœ¥WyTS×Ö¿1psxöjií½¼ª­S)N­"HªEÑ"­’ SHB€0„ˆÈ S$LA@q¬¢HJZ4Z[ßk:è«õùÞ:é;¼õ¾›@ }í÷Ç·¾µX!gÝsÏÙ{ÿ†½Ã#œF<  ^`ûö†õUžuâëküœh­ÿe•3¸ñÁÍÉ4q\ÊŸÐ}w”3…Œ%ø<žDž M’EîŠPxN ›æ9gáÂù3=½½¼zú‹E²È°P‰g`¨"B$Up‹Ï¥a‘"E’çÔE Eì;³g'$$Ì ËgIe»|§ÍôLˆTDx®ÉE2¥Hè¹\*Qx® ‹<íÁͲHűñ ‘Ì3P*É$AÌ’Hcß“Éñï+Cw† EkÃvED~#Þ>Û+yNŠwêÛ>sçÍ_°ðÝÅS§MŸ9‹ ÖAÄ:b ñ!Ll BˆéÄFb)@¼G,#–^Ä b±’xŸXEøÄÂK¸"¶ãˆmÄKMŒ'&/Ä+ÄD‚!F.„+1ŠCÌæªI8 âo/•÷Õˆ¨—ù³ù þ5§@§Vç‘Î g3éE–’Ï-Ô$*eäë#….<—É.›\ê\§¹&¹Ü\ÝŠFM•?j`´rôÕ1¾cŽu»zlñØ{î÷&÷Ϭ £­ `F½fÞdá[W côÓÍÇú¦V3¦=ú0ÆŸLŽ…¨¨z(gàîŽò&Ë롹9’ÙÈ||ûðéúø Ë£)RnWèY4}Ø.’»/ÇŒú̼ 2p÷IQ F¿õ3¦0õÖx4v<‘ˆ|ü¹38Ϧ¯?úöÊ•ëׯ|àãø^Ëef4ã×°µ>ŠÀ2zX,[È&q‡êPˆÿô4òþ ;}¼S%ÝÅvƃò7) TOi¤5‰þôÂ'—®]X1×kÅêeþá÷N3ö"YåfÞ] ÒYø—¬ˆVÅ ½Q5 O|¿*X$$‘ÇôgäƒÞž‹fà‰,v袭òïÈ©Ç$¬Çnx;Xøn3M· €ïøH‰VÓˆwçÎF+lÈ*ªÖPÙX›tdñì !2k´¨‹£Ì#SÅÜe&8ÀZp÷Ç •:êügGûͨÔÌ·.³zÒzhˆRä¤gïavV†(ì??bÖ?’ï§²ç2o§Ãj—Hìf¸¨drÊsu D Kb½) m.©Ük*aÎD‡j®°¾h3f5²a&aá2ÝŠÒ5%p˜ª66?}¸7:IÃh£k¡¨v0V±ƒÑôšÿ^ÍC3-\Æ|”håÑȇÔ7p!K!…Å>wÉ*0Šl2ï.¤H†øóœHbÂyí¡ùÊ dÆe¨eùLÞÎ]±" ü¡§æÅñ/Hl}™¶Wë7Ô '-MùBc#ƒ ~ÿ\Kξ"ùËÙv}U-³Ob=P7ÿ‹ºƒ,@ \üç­]ôsRßÈ=C*‹ÛH{Ä6$žÈ'9V¨Í±k’zfæÕZ¶@ytý°PŽxjÈIøÒ$tɹÆ÷ü…¬êIä„ÿZ&2‚< `„²vjS3>ûÎÌ;kAJ®¨•¾·ê&~íãÉà[oªª×Ö2P¤Ñ”iK5 êë£áÁ¬'Þ(Ãcü¯®þùîiSqkˆéÚs ¨ú:{h©¢Ì½jvÉ5” &F$ óÓ€ ÚÙÚv0!J3„Áe3â½åkßïaÈ'“@ÖÎÑ¢’ù_EŠ_rú#2ú†E=á[£AT+SSA‘É$mËØÔ‚e_|{æÐ?ѸƊ¼ü}ìÞ|M>dj%U-P¦ªƒõ·'ÁV¼<3ó°Ûã7ÐKèõC+~{‹=v™?ˆO'·ÝË)‡?õ-<~4 8Ûelhd¥x”ù _–  ôú­‹üV®1ß`6÷_8³)x(‹q}ÈÃèKTv‡o]‚‚è*#´#·ßc™þ&gƒ®O'£‰èµc÷km9ªÔùñj6aÛu4,…¥§’¿¤4}´þÚ…Ófx5Ë 7Û°W›­¹f^¯Up ˆÑ§4êRÖãµxM|,>‚» ±h-Zs°a°kéy 7dœH?_çð9\(=UÖÛRrîA}jÙºâm° 6À:ðSoÎØœ(› Ô¯–…\9 ¬æÖÙ4ì:Œ¿®'È+§Jº˜½Ñu©•@êÊ}6’}„¾Ån™áÐôÜ=}˜sÕLC ™>(3´ÔŒ²ìDʲ í¦Ñ¹öÿÝ~ðH+°ÔÈc‡9øx±¤UîôŒ|Ò¹lKHèÊ™ìÛá8±-è;Õ‡‚ûx}´ÎÒt…¦ †®P7§võäæÍo[ÓšÒ«ØêRN!ÚByeFPƪ*c“¬aS쎬¸6³PT³ ¨éþþ>Ñ¥†86+-=¤ ÑIu)¡rÉÎKßFÄZŽÖãqñþ·Kº= ±Æ?OR@m‡“ÝÞýÚ}ìÃ#ôæí]çÎë:Ý}tGÈÆÐí!¬/§ï#'xgg@è›o¼w´³ãð‘³ö×F=¤¯ß÷j´ê÷ž6 ÿÿ·k;äýˆà¡ÝW­=´In‹år±Ø(7™ŒFƒñ8Úax<ÜG3À“xß@·H{”/èzö:j½Î·†XoÙû“*mw§æ²¾œÊx‹}½×7 ‹3Ù#¡Ù7Uê—/¤éöã+’õ±C…ìØàŠùÅ?e3ùUùÕ»†úgoXºŠ½í%ÌɳúÎd\nl…}ClüLÜ-» e@•s§ŠÕpø×BÏÊÿâ)7¾äp!\"«2;MÃlŸµ57&/5?%»,½Pi:ÕÕXZÆ Ìð8X±ßÁ oòEQQÂm>êýåeº:D\ÉÓ™/d€°ƒB74v¦ry‚ ,ü}tZFv$SQ gÐC²¹¤¨•­ ŽM 9'd²ÿòÝËͽÝçûàÇù7ï`wìòŽï¼-™zC}y³.ç@fSÑv¤áPwû·Î÷_´fÓUy; ¡¢E_SÜVØÄ…“07}¥¦îДE²áz¨„ƒöÒWC÷jÓÆZ?Ȱ—6*º>ŸËw|An/­ BÎI7ˆa#¨ìk9ñ„<*ÝFñF(7]Û[{‚=ß§ z°‹¡ì/Ðz3ïæ»ùëÑiúù±÷¶môJ›'E¬F¦°´Úî» ¨ÚÄIœBéý8¹£‰ýþûqߢ昩õ,\¤îøöq“·kÀ¶¥Ñ5IuõC}Eî¾ÜBæPÝ(êêq‘0%7<"†•ȤyÑyërUùœ»Øä2Â3³•âкu™ß4tfä’ŠÙ—ÖΠ픵Ã,v•Ã<×>ëwtÆ¥èÙ’YÉÄ2ÈÎOSRØg€¤Q zäŒ Ó®2£9fÞ7ƒ=o7_¢Œa½õ ¥ÎŠ`qµ@q­å…ÅÅÌò¦Ö¯€ºs|ùþË×.ع©¢#‘-((*=Õ$¯”+âRvÍýæ}4ûùâ?{÷1v‰ Íß>¨QTkFs9kúUq7Òèº ½ù·Ïos˜Væ”fædç¤C:%«T˜LU†Æ³Âî ~›N>Â9ÈuÅäôôrC|ô ù8{7S‚ߦ5ZM@qn!Eï¥Oúû/¬[¼hõú¿ð¾KÉö› Ö&3ï˜åÎ(.On’b—à€ƒ¨ µ·iZËÍ“š;ô Ñwn57í-e+ƒï’»Ë!ËæõòDv‡ äÜ8YcÊ)ÛŒ‚ͼ TÆåô}M_®¾|ÌÔWóïr‘š·háÄ/Ëe–&¼¿–Po=òBãÑøG~¸½²7 šYØBû?sºçÄ­[=[7o ÞæÇâ‹Nó×|zÙÜ×s÷n߆•®_ÀÞ6×VDÞ ªú†o‚jè4òOÄ 1Üܹea§ëS±ó¤…xæ?˜ƒÈoÏž,ÜÏà×Ëh¿õoÝ»zîÆßŒØ%C yÚ V“ 9K­Yµu¹-OÌ zÍE¯òÐäÉGß ÿÐÑ aÒ舰CÒÖΆC­Ìûø?tºP¦¦eïIÞÍÙ“J¯ª2>=¨^Ùñ„R‰0¥hó¥<Û‰èÃÛ·nóÚ­[øÖ ô˜.içšA˜­‡ýD¦†PÔ%,úžI脎v¨Yü/R-âÚD'çoGóã0 ÜÈ9tÆþì<ó©Mƒ»ÐYxóˆ¥í걎3-º"­ ©²ÌJyÞŽ_Áûqâþ7‹+ËÇA\ç@ÿ²uŽ"¼½¥P«R3 ÕÅÙL»¬[Ôµ¸)H¿>€!_öJJ˲cj‰ª¦qÛÑ~ÛI ÖW¸“’nØf¥ZWx  T²4%3??-ž™ù¡¶MÓmuéreJš8\ª g¦\L-Ú£ÍeFœR—]¶›}<98=;5 ”q† }1÷óé óãù¼ðüP÷ˆÓ©Œ}™©-¿+¯ù.¸.E ûÁCo(­Óï.N/bñˆ^gj6ļø¨MK§‰ä2aZæžÄlˆ§TåªÊ–ö Á¥°£íE‰8^²W£±wT|ïUéÏôhu‰5 ù•8±P`v±¸2.NIR·‘f77‹Û(‚ø}³ˆ endstream endobj 22 0 obj <> endobj 966 0 obj <>stream xœW TTW¶}ea½çFÍ‹ÐT¡ÑtŒFçDŒ5*ÎD (“€ÍX È\UuªŠb, ªJ4hpˆ¢I0Q jl;&1qè$?‰Ø±Ï«\ú¯¾&éõÿ_½þzkÕ°Ö;÷Þ³Ï>{Ÿ+b܆1"‘ˆó_ëè?ËÇõ{ŠðG‘ðü0á1$ÿÒíÜ=F‹a´[Óóc£Æa÷X̃۟aÄ"QBªÆ?>!M¥ð~9lª÷¬… çO÷öõñYèýfl„<:,$Î{mˆ"*"6DAÿÄxƇEG(Ò¼_^¥P$¼6sfjjêŒØ¤ñòÈÅS§{§F+¢¼7E$EÈS"½WÄÇ)¼×…ÄFx?=ÝŒ§ßþñ± ÉŠ¹÷ÚøðyÃ0“ÞŒ‹÷O'½¥X•²/4lmÄú QÑoÇlõ™å;{ÎÜy¯Î /1ë™ Ìdf#ȼͼÌlf^a¶2K™ ÆŸYÆÌ`V0>Ì,f³š™ÃÌeÖ2 ˜±Ì8f<ó,Ã3Ï1f ó"…‹qc ¢Q¢`ѵaó‡ý$®u›çVävxÐð;;ëÅj¸É\!wDàˆþ‘KF~7jË(ûèèÑÜg¹7zÌõ€13Ǽ7æÚ˜­‡ó}pà‡°Â"zÏ"ü«yUµ¾ öƒN­É"‰ßzæ)öûê¹¶ÆÐnl‡ãЭ«ÒŸý¢ƒ}Ga¯+£ù€ì=|n8’t“WÍY ­W\ $JcØVS/ƒpR\ç Ic ·$·# p O´ôÀ/†{N° á6² ø×1nt|^¹öGFË%uÐ70–UÀ©œž¤ÓhƒtY›kYëçjeø [šWV瘠¼* èL˜ÀÖ¹>©MÑëR!väF$gû`‹BFN³Î1™v!Ë.:sÿû®X¸ƒÅÙá|Õ!ê{,׋¿·yÝùÉ4¡ ²ˆÌ!»Èn¤ß¸ ýžàó8ªвr@«—)É2âuâÜl²á,Á÷0䨵ô/ 3jeÆLƒ¶¸J0ÕÈ0—­‚¢œü|ÈVJ=„÷Á†µ˜Aaq ³ïŠñ3Ìâú²ç³¾7®VFêä’+fu¨l@†jÔ+)ކn£¬pAפÄq¥¦°C†óX-FñífS‹ôšÇÁaá°˜Œ“‘ÄCø1Ó¢¶a¢mã\mþlçÝë¶ ãÓq°‰›±´Ô\dª‡jàn|¥õ×ø“çd³%¸<‹ï­þ¨>äz}?&îR¢ú_Çi2¼gl€F8«³ÿûq–ÞgÇŸ¶]I†$Øv8¦:­=£¸Ë?²˜¡4+GŸ—/S­‹Ô« òÊÕeÊJuCÖeeKî™%œ‡°3Ó&(­¢3g°èŒXxV0ð•Pœ«Öë“3¤MnF¾:âèΡÀù¬zË/ððÞÙ²¦XKþÔ÷³Juµ)æüúØÅ…o^‘¸¹ e·4¸EÛ¥¯×+ Zà²@•&#d÷ƒ²´Ð`°”šÍ¥ Ï*>î¿>ºu»'¼ ²=Çö›æYRÌQÅjce4q'Û»®àøj2âÏR£ ÔeÀ•ƒùåÐÃdf:„)ƒ4zûžØ¹ÃéÇÿ^ò­‹cš6\š^d;yÌ#;ÉN\@æã®Ûwí—ZdåÉíat­(>H1dß-ƒ¤v».R¿BÁ"Mã˜ö{ÈŒ–°ÄÌ„l²é,6c+¾ÝuçIÿB2³Vúï”ó¾¡ìayŸX8&˜ùlI&ñn“”à8K5Š»`‚ݲ† ËÏY,M‘KÚL— >— Mëªj »8¿¬]&0ì \@ÆšNÆ—Hm”ZSÁáѵ}~¾ÕTv[jwH¢´‹ ÂaD žÙÎÞ6åDÊêØHmÎ"ibŒ¤Åt›êL܆׎Dv‘¶¬•×™S#$ÑŽX)¬æ•Õ`„®¾ª¨$ê×ëöA"„†äà<ª*öâº5ž…YFU9T€±°°— ¾žõ=ƃŽŠˆ.AŸ ÿkT‹¶(…êTŽV©É!“ÈÏA1ÃÉ6쵈š…ãb¼#òêJMad‰êÜYž9 éÁktœœµ V¨‚“:ËçCŒÚf Ecó=Ã$ÖÀâÔòhP{ÅGB:m’zÃ%ª}ÍЦ« „À ª*J †è×é\…b‡ºÅê†p”’Mž„%3ã"öF¯ÒyÉY›±É`‡Ã4ñŠ¡pAdZ=Æ£gÖu^ÿj+HfTÔ¥OÛýØ!áÑåRÕþ%á)çç5g?;3œ“xƒ~ø@©£í“#9jºJ‰ÝWàè µ“ØÅ:Jm¡Žm5–Ý’Ö9ˆŸDZPî#Ÿx’ ኪZ )Tübê$·Œ®NѲ °c25äC—ñ.]ˇO†Sõ2ák0`É?Gä™óJÁ«Ì%%ܧì³axµæ>ô±‰… ¡˜Øø+â⧈ ;ÙFÜ2\.I'îIÛɳ+æ)¢k{ÙRWÊl¸].Y™ú¦t9.” Ö£_‚أʈˆ£íïü*Ùîœowi]îc±ó>ä1„:ä\²‘l&³È|ê™Á8›ÌÆM¸gá\Ü!%ýäž0Dö-– §Üyô3NšGÔ¤‚LöB%48ÇìØCžs¯? KñO§ŽyüãįÉDÙ€è7”ê~½ÅtƒêÉ1¸ùTOž‚ŽyÔ»ø#Æ¢SÒG\ dXðn nd±Œ¼"êütê¶A¸”T"ãž(qž¤Ã\x…ªNœ~“.’!Ð;ÔQÿ?G@% øÏïö?îáç²úĸ^XËŸ0›?¥¯Gë·ê©n5F½þ©YCÜÝ­Ñ,£Û5Îí`§®Ü<´Ý2ù•V¤ŽOƒ¨ï2>¸,F­°€ŸS“r Z¹«Ý=_¡ôÜKS*¤Æ,Ðüêg¸sp\Qžzמ õ;;§Q’r¾³'4—gÈNmkR}‘Z™_¥­Ì¿”iÑ8¢ UMѰ™[¶Åß'deñ‰·¥«Ïh¯ë›õEj£æWÓÝÁ¦ƒª¬Èh*)”ý !îãÝÁ ÇÞyôä¯Û¿#Ãê]³8rT„¨…;òÿœ ÙG’©gUà"‹gÁ!:t”ê¬ZÈGi ™“¤a1’S?œ¤Ïcè¤A; *š]½µpÀj*56ÒXôšÄ ²ÈEb¡ôw…X:ãÊ%Ê×s}‰7pk†B`ÙÓáæ`t±TMƒŒ‘ÿ„™¬Ç/÷“kœ"g-Šyò† Òh‹¨Ü6uC=5óHí jŒÑ°Û°Ë%¶1ì%(×–¥æZWA>ÃõÚ<ò§%žÄOÈÕ”S÷3y5]€¥]N##`·1Ô0ùM¤<#< rŒÊ (SIA.xâò9¦¼r𢋚+p§ð¹g‰½êÄgÎÁÆR—ˆ…80&­õ¾Þ¡ ÿ5 ÓdQéJ¶:=­¢î/ÐFõ[‰×yø!ïÆžÞˆëË«á-X½Ç?ncÆ: î°ÂôêñÅç¦ßS†Óp»úÔ7m7 îAGâÉu>ÖXS¾ÏúîA| Wʺ-?õV·ÐâõfÕN¯Ø¯Á2€Ùd¤ŸJ®Íií:ÞµˆÐpCŒ7Ïòu`TH·m[ñ&ÐK .À…zn ÒUôiÒ¨I«étÐç´=Šæ*ºk©[øóÏ¢O~FűŽKiyµéyk³rTª%ÔÞ9²YÒõî›æ‚ªÊ“­Õ•=/½91õKFùùÌ < ¦ª–ö4{”VM $­ùàÂñ+À=<·dö¦¤·üÈH,IËÍ¥ÕSx ÏK\ð5ô!‹“­8ªÿC›èë~ ~,Æø„Gæhëm¸Ä}îÓýÒä¯ïµîktX¬§w@¦´¡óJÕIàºÎ'ÌË…•!ïÈb£äº5ùiz5@—SD‡ Ó’;'×¾Hž[µ%þÕâ«¡²£š´p­ –¸¤?gîšñcJpÂÿýôùêÛ„©‘‰p!Ï/?ŸÀwøl™3¤› —Y}¼¡™{8:MôñË ¦G]™Ñ¦ù:¸ÏŽõgé„5-Òš=° Þ¡7ží‰aûâã·¸HíŽë/ŠìxXŒq=‘ÞÈz`<=y"ƨs|cR]\\RR\\]Rcc]]£Ô#Ù*”U ´¬Ð*qŒì%é6ß2z„­pô辪Ñî ó/sì•f endstream endobj 20 0 obj <> endobj 967 0 obj <>stream xœW{TSç–?1Â9E„*ž tz“¬j©Zk[;³”Ú:µ´â³µøÂh!AyžHNvÂK ðäA|EŠ–ÖÖNµW/3>ºÚÚ×r{kë­ßaNgÖ| ¶×?îí™u²€¬ÅÞß·¿ßþí}xÄÌÇ KÚ”’ü#ýûø ö÷|àj¦&§* ’‘3G 碣sP~4Úò(ÁçñrÕ†$¥ªP“-“kE %‹DÏ'&._"ZöÜs‰¢Õ¹RM¶Dœ'Ú$ÖÊ¥¹b-þ¢mQJ²¥ÚBÑ—äZ­êÅgŸÕëõKŹùK•ÙªEKDúl­\”"Í—jH3Ek”yZÑâ\©(x·¥ÁIÊ\•N+Õˆ6)3¥š<‚ yJ•Z“¯Õ­; dJ2¥Y2yöÖEî³KžYJo›‰·ˆb ±•ØFl';ˆTâUb'‘Dì"^#^'ÖÉÄZb±žø'b#±‰xƒx”˜MDÑ„CCÌ$j‰yzÞw3Rùÿ5¾ÏÍÔ„ýcØÇáíäcd?AÕRß?²#b~Ä‘YÔ¬âH:2evüì”Ù–Ù]³Ï²¦(ö"øÙ0©{.š9‰²&ccN¢7þé_ß¹ð~Ë®7\1™f€uyÊÚa9 §¡Å<Μ‰œï'SAf?…¶’ðø”ýÚiËNX ûÖ”*)sxÌÕ;$÷¤!LA^j¬Ü%ä:ÿf¢uF±M†v±›ç»‰nòÙ”M£Øù÷¸h.&AÄÍãæÜ[ˆ¢QÌÝ»(ZÀé¹Tz'ˆÝÚãê!ó8ŒÀQ˜pöޱÀ ætfw‹-© †,xK³W™–¦…«å¶ûÑ7û;QÏÜû“¨ëflÌ´}MÞ;×9ÔµóÏsžü‹éRO¾ð`'X¡ƒJžéQö š…füŠEs}ÏElÛ©Ë cŽ\ ¹…Á:/×Wíþ,ÿ{up‰=¼ÀMÔ5Ég ûôžë)r ¸Ž÷4ËÅü°=24f?7,ä^ûíŒì»2› ¡Œ%*Í>qÎv Voü …!êògW¯¬ØŠOMø…èû—ï¤y *¤›ÑS(\`&sqäS*gQ·³ÛÞÛ—Û›þ¦X¼I+òxäžø+<Ž[[,cp\æ ¡ÛèÉWMÍGñQ‹ nö¹.^` ã£;ì‹t4–U3PvPÀ0UÕŠ.E}6.6nÿ«©9­ên0 8V9V1VÞfê*j:ä.)õB”>©þâl™ÀÔd®/ª ¹ydTØê-–ŽvAm}sK]ÝPƈɹ‰¾rñ¤Þ«ëf‘5¬nU×½ÚT_÷зˆhX¡± ,ePÕT+4tà{ÎÇ‚‹ñ£¼Ÿ&Ñc=|t]@û¹'ÑF%i^._°ØDi¾ä|$7óSíøÅþ. &”ÛÈÕ ™l-|Õ.@½$V”Á]ŠúKÿ°"´’^¶sCÒŠêá³ô9É=ï*˜– ¹Å$¬ñˆÜ§¬<ïÀh·ï<S`YŽ6‡ùÉ䊆Q!BbB€G±áàŸâùyHô ±wé«í†ÀíÏ0%Ã>ü$CF &@á&oXËdŸ»HS¶R Q„Ö\‚aü\‚AS" ¹’± 5hp²ùy,ÃGk¢MõL=4PžèøÉ}ŒÖ¼ä²Pbòt€= %p(®¾ø°©á°µ¡ =Ž>sŽõÛú-”ŸÌ5¥JPX”ÖP”i+5”›£a>W5UôàØ©·øSsЗt׃µÎ`¬ÄÄÀ~B)H¦O6·ª@åL•©òY®&.y«[ jâ=~«ß1͔ŠÀwÌ™ŽèƒNssi£¡E&`ª `NätqKPK•÷pm¼÷x¨¶4\›Ÿ•ÙÓq¸[6¢¹ŸâêÊjÊí`‡ÚæÚ¦Б¸¹#µåµ;ÄÛ¡¦©¶‰ š”[ßdnß¿÷»ç_Û} ­œ¼Ò³Û€n_¡ëÄ>Ù0Pî öÂw•[Iì”Éà´C€’HìKôÁ¬#»í;ZþºxƒÂYäñvtz†÷Ö™…^ÏéFPcÒ„ûɱy¥zmN’\·$TâÕE>ã38v®µ‡ªø„^üJîÞ={g>žøz¦^€ õ7¯•mæ£÷Ž®l ~¬×n>ì\aÎ3©páRì`¶3-‡0ÌÅ†êª /Žü§ÊFÆ ñ`k¶u#¤ŒÚ¤52§#>+3²ùGŽŽÓ©·¯Óiv¾™Â ³]ãôAŸ¹oÚœ45¦6hœµÚÛ]~O¯»÷zB\‡'«CùÁ|3²º,Øž 8()\ÐõPÓådEn”5„- ¹±SÁN}…ÆR´4;#£ŽcXÙ'ò=bÏ>ëfÈ=UÛÕ]N†b;¤ƒÔ•´Ô‰è *¶Òþ½g”gÿâÞsÞå"“÷ÈUùBlÿØw¨Û~¾ÕC-Zìv|Îj±T¿à£õè'ºªêÀJyàÄ"ÚÅèÍb,³_Q9 ŒM…–ýLÆi6ë¶ç%¯‡x µ˜¬‡-=‡!@y ZMa±*}(ë~ïœK€Ö±+›=íƒYãýdŽIîd`ƒ±Üx(«ˆ‹b÷zÐÀ·¾ÐÐØ{‹ÏìïéF})äQêN½Çãlóøú±¸yO‹¸9}oŠ@Â>4»Ñf“˜¢*vÍu*PßA Ñs7No9Ëh‚Ž=íb¿ Ó»/c°Ùxœ)¦’Šô´ 6‰K=¤fÞÇ,Ÿª÷œèêôÜ8à•ÚŠÁ TÍtu}úøËØÜ£E‹8š›ó}šõÇ“ÃÎvŒõ=ý«Í±÷>ŠMÃÊ]hUh0] ŽÅBº«œ?n¹çä3ó¹G¹Ø??…¢PÔèýî†êúŠrS¥Ñ,Ì~rS»!ë ì5Ÿ‡!Êâ¢ÑÒo=p΋-Ü<* M¯:Èêæ¡°Ë·¾æ£ñÝÏBaä·£'‡›šc“ Üˆ¡†Rwº½ížcÒ#[_NÜü”€#_R\çþíïÌ>4‰ÅÓÄexÑÆ 7¼¨ÒËó½‹J®Þå£9(™vûKF€º}åÒõQeà`«ðÄÀ)°AµéP5R††‚îVG“³£Ô/ÉK7ÈäUWf+Þ[–$%¿”Ú+s”F)‡4Èvȼ…©Å’,ØC½ö§4Eÿyüê`ÁÛY.Á–þ·` né8dÍ«/ðb®uöÆê#½ ¾ëòZm.¡½ÓkïêX¬ÕÂâç…#Ü*ºE›_LY•þÌ¢Õ§Î9š>¾)œ^C²àMÏ7>Ú0µž~¸_¿½œ õäÿ—\ »äŠ-x—ŒBÇ‚ä ¡HDÌ½ŽˆÕX ·ÐFö š[¼ÊGUx3qþ’þ¤ÕiyX™£Ó®²ÞXw\s·†=F÷æ»rZM^^·Æßërõ ðT¹¹£¼£~Ôü jòó§^™J¤ÿ‹ ×sº°žðV”ØéC‹±íø ‰i7Zʱ>ðŒÍ†’'™Šð4#4dñ¯Ðq™ä`Ù.<–ÆÎÚ&«Ú§èÌk婞ði·ïEê!ÞýË|¼ŠåÒ¬šü«°¾mu[†`Üæ“Áz—üèì.Ö¡;\¥ñå¦2E¨l—åxȃ}Óeï‡|‹ì4÷Ú÷Ý#Ç/Õ`C—ãI›…MVmÙ6í4v³­O҂⃇¨ÐS¼¡`‹ðÑÆßâzNA›yôáÕvêÎÃo²à'6f4ôBˆkgΟkÏ|ý·Tð‹bþWÿüd¾„žýG¸$¶4H‚]båö²÷%Ëa%ìÚq ŠùÔü]øÿíM„«qþç–NÞ;ŸÏî˜ÚM×4Zk¡–²—5T eF÷ï2U0F0Æ—Ø*µÍ¶ZÛæD¯ ‚‡Ö»ñÜpÐxÑHüç$c5¶r3U]_ÙÐüéUñ‰úh¦¼@¥Ru¨úÝv»GÞF›>ä5#/C›è9ï&2ÈNõ"ø(õ,íËwçæækòr]ù½ÓÂÕu±Im(¯¹¾+œË°‘þˆÉY‚ˆ™Ë;#q×GFN:"gÄÿ DJù endstream endobj 985 0 obj <>stream 2019-09-25T01:26:51+02:00 2019-09-25T01:26:51+02:00 dvips(k) 5.996 Copyright 2016 Radical Eye Software s.dvi endstream endobj 2 0 obj <>endobj xref 0 986 0000000000 65535 f 0000925052 00000 n 0001050743 00000 n 0000923593 00000 n 0000894233 00000 n 0000000015 00000 n 0000003148 00000 n 0000925118 00000 n 0000925219 00000 n 0000956125 00000 n 0000990756 00000 n 0000955092 00000 n 0000980456 00000 n 0000953821 00000 n 0000973260 00000 n 0000953145 00000 n 0000968653 00000 n 0000952571 00000 n 0000965204 00000 n 0000962042 00000 n 0001045777 00000 n 0000961599 00000 n 0001041546 00000 n 0000925159 00000 n 0000925189 00000 n 0000931527 00000 n 0000894417 00000 n 0000003168 00000 n 0000006204 00000 n 0000960050 00000 n 0001029644 00000 n 0000959296 00000 n 0001020769 00000 n 0000931623 00000 n 0000931653 00000 n 0000894579 00000 n 0000006225 00000 n 0000009033 00000 n 0000931716 00000 n 0000931746 00000 n 0000894741 00000 n 0000009054 00000 n 0000011799 00000 n 0000931811 00000 n 0000931841 00000 n 0000894903 00000 n 0000011820 00000 n 0000014530 00000 n 0000931884 00000 n 0000931914 00000 n 0000895065 00000 n 0000014551 00000 n 0000017876 00000 n 0000931957 00000 n 0000931987 00000 n 0000895227 00000 n 0000017897 00000 n 0000025090 00000 n 0000957821 00000 n 0001005910 00000 n 0000957263 00000 n 0001000947 00000 n 0000932052 00000 n 0000932082 00000 n 0000895389 00000 n 0000025111 00000 n 0000032533 00000 n 0000932145 00000 n 0000932175 00000 n 0000895551 00000 n 0000032554 00000 n 0000039984 00000 n 0000956775 00000 n 0000996817 00000 n 0000955837 00000 n 0000989735 00000 n 0000954503 00000 n 0000978594 00000 n 0000953467 00000 n 0000970584 00000 n 0000952840 00000 n 0000966546 00000 n 0000951974 00000 n 0000963455 00000 n 0000951198 00000 n 0000962408 00000 n 0000932249 00000 n 0000932279 00000 n 0000895713 00000 n 0000040005 00000 n 0000047056 00000 n 0000932430 00000 n 0000932460 00000 n 0000895875 00000 n 0000047077 00000 n 0000052043 00000 n 0000961184 00000 n 0001037068 00000 n 0000932600 00000 n 0000932630 00000 n 0000896037 00000 n 0000052064 00000 n 0000060891 00000 n 0000960930 00000 n 0001036478 00000 n 0000954359 00000 n 0000932695 00000 n 0000932726 00000 n 0000896203 00000 n 0000060913 00000 n 0000071455 00000 n 0000932895 00000 n 0000932926 00000 n 0000896369 00000 n 0000071478 00000 n 0000077696 00000 n 0000933025 00000 n 0000933056 00000 n 0000896535 00000 n 0000077718 00000 n 0000084230 00000 n 0000933124 00000 n 0000933155 00000 n 0000896701 00000 n 0000084252 00000 n 0000091010 00000 n 0000933230 00000 n 0000933261 00000 n 0000896867 00000 n 0000091032 00000 n 0000098029 00000 n 0000959895 00000 n 0001029027 00000 n 0000958947 00000 n 0001018243 00000 n 0000933305 00000 n 0000933336 00000 n 0000897033 00000 n 0000098051 00000 n 0000104730 00000 n 0000933470 00000 n 0000933501 00000 n 0000897199 00000 n 0000104752 00000 n 0000110348 00000 n 0000933576 00000 n 0000933607 00000 n 0000897365 00000 n 0000110370 00000 n 0000116074 00000 n 0000933660 00000 n 0000933691 00000 n 0000897531 00000 n 0000116096 00000 n 0000123118 00000 n 0000933755 00000 n 0000933786 00000 n 0000897697 00000 n 0000123140 00000 n 0000130562 00000 n 0000933850 00000 n 0000933881 00000 n 0000897863 00000 n 0000130584 00000 n 0000135962 00000 n 0000933956 00000 n 0000933987 00000 n 0000898029 00000 n 0000135984 00000 n 0000146642 00000 n 0000934073 00000 n 0000934104 00000 n 0000898195 00000 n 0000146665 00000 n 0000152107 00000 n 0000934194 00000 n 0000934225 00000 n 0000898361 00000 n 0000152129 00000 n 0000159042 00000 n 0000934289 00000 n 0000934320 00000 n 0000898527 00000 n 0000159064 00000 n 0000164810 00000 n 0000958608 00000 n 0001015373 00000 n 0000934410 00000 n 0000934441 00000 n 0000898693 00000 n 0000164832 00000 n 0000171401 00000 n 0000934586 00000 n 0000934617 00000 n 0000898859 00000 n 0000171423 00000 n 0000179380 00000 n 0000934788 00000 n 0000934819 00000 n 0000899025 00000 n 0000179402 00000 n 0000184770 00000 n 0000934990 00000 n 0000935021 00000 n 0000899191 00000 n 0000184792 00000 n 0000188380 00000 n 0000935107 00000 n 0000935138 00000 n 0000899357 00000 n 0000188402 00000 n 0000193435 00000 n 0000960634 00000 n 0000961973 00000 n 0000935224 00000 n 0000935255 00000 n 0000899523 00000 n 0000193457 00000 n 0000200075 00000 n 0000935338 00000 n 0000935369 00000 n 0000899689 00000 n 0000200097 00000 n 0000204693 00000 n 0000935433 00000 n 0000935464 00000 n 0000899855 00000 n 0000204715 00000 n 0000216990 00000 n 0000935539 00000 n 0000935570 00000 n 0000900021 00000 n 0000217013 00000 n 0000222705 00000 n 0000935691 00000 n 0000935722 00000 n 0000900187 00000 n 0000222727 00000 n 0000226865 00000 n 0000935788 00000 n 0000935819 00000 n 0000900353 00000 n 0000226887 00000 n 0000231936 00000 n 0000958449 00000 n 0001014727 00000 n 0000935896 00000 n 0000935927 00000 n 0000900519 00000 n 0000231958 00000 n 0000237240 00000 n 0000936039 00000 n 0000936070 00000 n 0000900685 00000 n 0000237262 00000 n 0000242425 00000 n 0000936136 00000 n 0000936167 00000 n 0000900851 00000 n 0000242447 00000 n 0000246892 00000 n 0000936233 00000 n 0000936264 00000 n 0000901017 00000 n 0000246914 00000 n 0000252670 00000 n 0000936352 00000 n 0000936383 00000 n 0000901183 00000 n 0000252692 00000 n 0000258388 00000 n 0000936471 00000 n 0000936502 00000 n 0000901349 00000 n 0000258410 00000 n 0000263472 00000 n 0000936579 00000 n 0000936610 00000 n 0000901515 00000 n 0000263494 00000 n 0000269181 00000 n 0000936687 00000 n 0000936718 00000 n 0000901681 00000 n 0000269203 00000 n 0000274547 00000 n 0000936817 00000 n 0000936848 00000 n 0000901847 00000 n 0000274569 00000 n 0000278489 00000 n 0000936936 00000 n 0000936967 00000 n 0000902013 00000 n 0000278511 00000 n 0000282743 00000 n 0000937055 00000 n 0000937086 00000 n 0000902179 00000 n 0000282765 00000 n 0000288306 00000 n 0000937185 00000 n 0000937216 00000 n 0000902345 00000 n 0000288328 00000 n 0000293208 00000 n 0000937282 00000 n 0000937313 00000 n 0000902511 00000 n 0000293230 00000 n 0000298421 00000 n 0000937410 00000 n 0000937441 00000 n 0000902677 00000 n 0000298443 00000 n 0000304398 00000 n 0000937527 00000 n 0000937558 00000 n 0000902843 00000 n 0000304420 00000 n 0000311073 00000 n 0000937635 00000 n 0000937666 00000 n 0000903009 00000 n 0000311095 00000 n 0000318206 00000 n 0000937732 00000 n 0000937763 00000 n 0000903175 00000 n 0000318228 00000 n 0000324030 00000 n 0000937849 00000 n 0000937880 00000 n 0000903341 00000 n 0000324052 00000 n 0000330009 00000 n 0000956708 00000 n 0000937979 00000 n 0000938010 00000 n 0000903507 00000 n 0000330031 00000 n 0000335627 00000 n 0000938104 00000 n 0000938135 00000 n 0000903673 00000 n 0000335649 00000 n 0000347686 00000 n 0000938212 00000 n 0000938243 00000 n 0000903839 00000 n 0000347709 00000 n 0000368265 00000 n 0000938335 00000 n 0000938366 00000 n 0000904005 00000 n 0000368288 00000 n 0000374879 00000 n 0000938436 00000 n 0000938467 00000 n 0000904171 00000 n 0000374901 00000 n 0000387591 00000 n 0000938566 00000 n 0000938597 00000 n 0000904337 00000 n 0000387614 00000 n 0000391573 00000 n 0000938733 00000 n 0000938764 00000 n 0000904503 00000 n 0000391595 00000 n 0000397471 00000 n 0000938852 00000 n 0000938883 00000 n 0000904669 00000 n 0000397493 00000 n 0000403002 00000 n 0000938949 00000 n 0000938980 00000 n 0000904835 00000 n 0000403024 00000 n 0000407632 00000 n 0000939057 00000 n 0000939088 00000 n 0000905001 00000 n 0000407654 00000 n 0000411989 00000 n 0000939154 00000 n 0000939185 00000 n 0000905167 00000 n 0000412011 00000 n 0000417893 00000 n 0000939251 00000 n 0000939282 00000 n 0000905333 00000 n 0000417915 00000 n 0000422665 00000 n 0000939337 00000 n 0000939368 00000 n 0000905499 00000 n 0000422687 00000 n 0000428559 00000 n 0000939445 00000 n 0000939476 00000 n 0000905665 00000 n 0000428581 00000 n 0000433274 00000 n 0000939564 00000 n 0000939595 00000 n 0000905831 00000 n 0000433296 00000 n 0000438053 00000 n 0000939672 00000 n 0000939703 00000 n 0000905997 00000 n 0000438075 00000 n 0000443048 00000 n 0000939769 00000 n 0000939800 00000 n 0000906163 00000 n 0000443070 00000 n 0000448074 00000 n 0000939866 00000 n 0000939897 00000 n 0000906329 00000 n 0000448096 00000 n 0000452762 00000 n 0000939963 00000 n 0000939994 00000 n 0000906495 00000 n 0000452784 00000 n 0000458254 00000 n 0000940060 00000 n 0000940091 00000 n 0000906661 00000 n 0000458276 00000 n 0000462971 00000 n 0000940157 00000 n 0000940188 00000 n 0000906827 00000 n 0000462993 00000 n 0000468797 00000 n 0000940254 00000 n 0000940285 00000 n 0000906993 00000 n 0000468819 00000 n 0000471831 00000 n 0000940362 00000 n 0000940393 00000 n 0000907159 00000 n 0000471853 00000 n 0000475504 00000 n 0000940457 00000 n 0000940488 00000 n 0000907325 00000 n 0000475526 00000 n 0000478924 00000 n 0000940554 00000 n 0000940585 00000 n 0000907491 00000 n 0000478946 00000 n 0000483474 00000 n 0000940671 00000 n 0000940702 00000 n 0000907657 00000 n 0000483496 00000 n 0000487930 00000 n 0000940779 00000 n 0000940810 00000 n 0000907823 00000 n 0000487952 00000 n 0000491119 00000 n 0000940887 00000 n 0000940918 00000 n 0000907989 00000 n 0000491141 00000 n 0000494656 00000 n 0000940984 00000 n 0000941015 00000 n 0000908155 00000 n 0000494678 00000 n 0000497324 00000 n 0000941158 00000 n 0000941189 00000 n 0000908321 00000 n 0000497346 00000 n 0000500566 00000 n 0000941299 00000 n 0000941330 00000 n 0000908487 00000 n 0000500588 00000 n 0000504067 00000 n 0000941396 00000 n 0000941427 00000 n 0000908653 00000 n 0000504089 00000 n 0000507075 00000 n 0000941570 00000 n 0000941601 00000 n 0000908819 00000 n 0000507097 00000 n 0000509907 00000 n 0000941720 00000 n 0000941751 00000 n 0000908985 00000 n 0000509929 00000 n 0000513456 00000 n 0000941817 00000 n 0000941848 00000 n 0000909151 00000 n 0000513478 00000 n 0000517260 00000 n 0000941914 00000 n 0000941945 00000 n 0000909317 00000 n 0000517282 00000 n 0000520761 00000 n 0000942011 00000 n 0000942042 00000 n 0000909483 00000 n 0000520783 00000 n 0000525013 00000 n 0000942117 00000 n 0000942148 00000 n 0000909649 00000 n 0000525035 00000 n 0000529231 00000 n 0000942214 00000 n 0000942245 00000 n 0000909815 00000 n 0000529253 00000 n 0000534076 00000 n 0000942311 00000 n 0000942342 00000 n 0000909981 00000 n 0000534098 00000 n 0000538920 00000 n 0000942419 00000 n 0000942450 00000 n 0000910147 00000 n 0000538942 00000 n 0000544288 00000 n 0000942516 00000 n 0000942547 00000 n 0000910313 00000 n 0000544310 00000 n 0000547730 00000 n 0000942624 00000 n 0000942655 00000 n 0000910479 00000 n 0000547752 00000 n 0000554212 00000 n 0000942732 00000 n 0000942763 00000 n 0000910645 00000 n 0000554234 00000 n 0000558295 00000 n 0000942840 00000 n 0000942871 00000 n 0000910811 00000 n 0000558317 00000 n 0000561367 00000 n 0000942948 00000 n 0000942979 00000 n 0000910977 00000 n 0000561389 00000 n 0000564905 00000 n 0000943045 00000 n 0000943076 00000 n 0000911143 00000 n 0000564927 00000 n 0000568431 00000 n 0000943153 00000 n 0000943184 00000 n 0000911309 00000 n 0000568453 00000 n 0000571527 00000 n 0000943261 00000 n 0000943292 00000 n 0000911475 00000 n 0000571549 00000 n 0000576373 00000 n 0000943358 00000 n 0000943389 00000 n 0000911641 00000 n 0000576395 00000 n 0000581966 00000 n 0000943464 00000 n 0000943495 00000 n 0000911807 00000 n 0000581988 00000 n 0000586703 00000 n 0000943583 00000 n 0000943614 00000 n 0000911973 00000 n 0000586725 00000 n 0000591381 00000 n 0000943691 00000 n 0000943722 00000 n 0000912139 00000 n 0000591403 00000 n 0000595756 00000 n 0000943799 00000 n 0000943830 00000 n 0000912305 00000 n 0000595778 00000 n 0000600699 00000 n 0000943907 00000 n 0000943938 00000 n 0000912471 00000 n 0000600721 00000 n 0000606307 00000 n 0000944015 00000 n 0000944046 00000 n 0000912637 00000 n 0000606329 00000 n 0000610996 00000 n 0000944123 00000 n 0000944154 00000 n 0000912803 00000 n 0000611018 00000 n 0000616109 00000 n 0000944231 00000 n 0000944262 00000 n 0000912969 00000 n 0000616131 00000 n 0000620613 00000 n 0000944339 00000 n 0000944370 00000 n 0000913135 00000 n 0000620635 00000 n 0000624690 00000 n 0000944456 00000 n 0000944487 00000 n 0000913301 00000 n 0000624712 00000 n 0000628540 00000 n 0000944564 00000 n 0000944595 00000 n 0000913467 00000 n 0000628562 00000 n 0000632377 00000 n 0000944672 00000 n 0000944703 00000 n 0000913633 00000 n 0000632399 00000 n 0000635678 00000 n 0000944769 00000 n 0000944800 00000 n 0000913799 00000 n 0000635700 00000 n 0000640717 00000 n 0000944866 00000 n 0000944897 00000 n 0000913965 00000 n 0000640739 00000 n 0000646025 00000 n 0000944963 00000 n 0000944994 00000 n 0000914131 00000 n 0000646047 00000 n 0000649890 00000 n 0000945082 00000 n 0000945113 00000 n 0000914297 00000 n 0000649912 00000 n 0000655213 00000 n 0000945199 00000 n 0000945230 00000 n 0000914463 00000 n 0000655235 00000 n 0000658868 00000 n 0000945318 00000 n 0000945349 00000 n 0000914629 00000 n 0000658890 00000 n 0000664345 00000 n 0000945413 00000 n 0000945444 00000 n 0000914795 00000 n 0000664367 00000 n 0000667978 00000 n 0000945521 00000 n 0000945552 00000 n 0000914961 00000 n 0000668000 00000 n 0000672252 00000 n 0000945618 00000 n 0000945649 00000 n 0000915127 00000 n 0000672274 00000 n 0000675870 00000 n 0000945715 00000 n 0000945746 00000 n 0000915293 00000 n 0000675892 00000 n 0000680100 00000 n 0000945812 00000 n 0000945843 00000 n 0000915459 00000 n 0000680122 00000 n 0000684058 00000 n 0000945918 00000 n 0000945949 00000 n 0000915625 00000 n 0000684080 00000 n 0000688756 00000 n 0000946026 00000 n 0000946057 00000 n 0000915791 00000 n 0000688778 00000 n 0000692929 00000 n 0000946123 00000 n 0000946154 00000 n 0000915957 00000 n 0000692951 00000 n 0000697839 00000 n 0000946231 00000 n 0000946262 00000 n 0000916123 00000 n 0000697861 00000 n 0000701964 00000 n 0000946317 00000 n 0000946348 00000 n 0000916289 00000 n 0000701986 00000 n 0000705519 00000 n 0000946414 00000 n 0000946445 00000 n 0000916455 00000 n 0000705541 00000 n 0000708628 00000 n 0000946511 00000 n 0000946542 00000 n 0000916621 00000 n 0000708650 00000 n 0000711861 00000 n 0000946608 00000 n 0000946639 00000 n 0000916787 00000 n 0000711883 00000 n 0000718090 00000 n 0000946714 00000 n 0000946745 00000 n 0000916953 00000 n 0000718112 00000 n 0000721655 00000 n 0000946833 00000 n 0000946864 00000 n 0000917119 00000 n 0000721677 00000 n 0000725445 00000 n 0000946928 00000 n 0000946959 00000 n 0000917285 00000 n 0000725467 00000 n 0000728584 00000 n 0000947025 00000 n 0000947056 00000 n 0000917451 00000 n 0000728606 00000 n 0000733090 00000 n 0000947122 00000 n 0000947153 00000 n 0000917617 00000 n 0000733112 00000 n 0000736765 00000 n 0000947230 00000 n 0000947261 00000 n 0000917783 00000 n 0000736787 00000 n 0000741107 00000 n 0000947325 00000 n 0000947356 00000 n 0000917949 00000 n 0000741129 00000 n 0000745384 00000 n 0000947420 00000 n 0000947451 00000 n 0000918115 00000 n 0000745406 00000 n 0000748655 00000 n 0000947517 00000 n 0000947548 00000 n 0000918281 00000 n 0000748677 00000 n 0000751798 00000 n 0000947614 00000 n 0000947645 00000 n 0000918447 00000 n 0000751820 00000 n 0000755479 00000 n 0000947711 00000 n 0000947742 00000 n 0000918613 00000 n 0000755501 00000 n 0000759214 00000 n 0000947808 00000 n 0000947839 00000 n 0000918779 00000 n 0000759236 00000 n 0000764878 00000 n 0000947894 00000 n 0000947925 00000 n 0000918945 00000 n 0000764900 00000 n 0000768201 00000 n 0000948011 00000 n 0000948042 00000 n 0000919111 00000 n 0000768223 00000 n 0000773284 00000 n 0000948097 00000 n 0000948128 00000 n 0000919277 00000 n 0000773306 00000 n 0000776765 00000 n 0000948194 00000 n 0000948225 00000 n 0000919443 00000 n 0000776787 00000 n 0000780358 00000 n 0000948291 00000 n 0000948322 00000 n 0000919609 00000 n 0000780380 00000 n 0000783915 00000 n 0000948377 00000 n 0000948408 00000 n 0000919775 00000 n 0000783937 00000 n 0000788072 00000 n 0000948474 00000 n 0000948505 00000 n 0000919941 00000 n 0000788094 00000 n 0000791798 00000 n 0000948571 00000 n 0000948602 00000 n 0000920107 00000 n 0000791820 00000 n 0000796346 00000 n 0000948677 00000 n 0000948708 00000 n 0000920273 00000 n 0000796368 00000 n 0000800343 00000 n 0000948783 00000 n 0000948814 00000 n 0000920439 00000 n 0000800365 00000 n 0000805396 00000 n 0000948900 00000 n 0000948931 00000 n 0000920605 00000 n 0000805418 00000 n 0000809140 00000 n 0000949008 00000 n 0000949039 00000 n 0000920771 00000 n 0000809162 00000 n 0000814030 00000 n 0000949116 00000 n 0000949147 00000 n 0000920937 00000 n 0000814052 00000 n 0000817026 00000 n 0000949222 00000 n 0000949253 00000 n 0000921103 00000 n 0000817048 00000 n 0000820133 00000 n 0000949330 00000 n 0000949361 00000 n 0000921269 00000 n 0000820155 00000 n 0000823244 00000 n 0000949438 00000 n 0000949469 00000 n 0000921435 00000 n 0000823266 00000 n 0000826435 00000 n 0000949546 00000 n 0000949577 00000 n 0000921601 00000 n 0000826457 00000 n 0000832905 00000 n 0000949654 00000 n 0000949685 00000 n 0000921767 00000 n 0000832927 00000 n 0000840263 00000 n 0000949771 00000 n 0000949802 00000 n 0000921933 00000 n 0000840285 00000 n 0000844142 00000 n 0000949888 00000 n 0000949919 00000 n 0000922099 00000 n 0000844164 00000 n 0000849507 00000 n 0000950007 00000 n 0000950038 00000 n 0000922265 00000 n 0000849529 00000 n 0000855370 00000 n 0000950124 00000 n 0000950155 00000 n 0000922431 00000 n 0000855392 00000 n 0000861992 00000 n 0000950230 00000 n 0000950261 00000 n 0000922597 00000 n 0000862014 00000 n 0000868309 00000 n 0000950327 00000 n 0000950358 00000 n 0000922763 00000 n 0000868331 00000 n 0000874347 00000 n 0000950433 00000 n 0000950464 00000 n 0000922929 00000 n 0000874369 00000 n 0000880412 00000 n 0000950550 00000 n 0000950581 00000 n 0000923095 00000 n 0000880434 00000 n 0000886758 00000 n 0000950636 00000 n 0000950667 00000 n 0000923261 00000 n 0000886780 00000 n 0000892849 00000 n 0000950766 00000 n 0000950797 00000 n 0000923427 00000 n 0000892871 00000 n 0000894211 00000 n 0000950863 00000 n 0000950894 00000 n 0000962659 00000 n 0000963825 00000 n 0000965442 00000 n 0000966846 00000 n 0000968941 00000 n 0000970887 00000 n 0000973626 00000 n 0000978912 00000 n 0000981039 00000 n 0000989959 00000 n 0000991155 00000 n 0000997092 00000 n 0001001259 00000 n 0001006346 00000 n 0001014956 00000 n 0001015639 00000 n 0001018517 00000 n 0001021401 00000 n 0001029238 00000 n 0001030042 00000 n 0001036688 00000 n 0001037520 00000 n 0001041872 00000 n 0001046078 00000 n 0000950938 00000 n 0000951576 00000 n 0000951708 00000 n 0000952315 00000 n 0000954260 00000 n 0000954444 00000 n 0000954885 00000 n 0000955638 00000 n 0000956037 00000 n 0000956609 00000 n 0000957159 00000 n 0000957697 00000 n 0000958327 00000 n 0000959802 00000 n 0000960543 00000 n 0000960698 00000 n 0000961096 00000 n 0001049292 00000 n trailer << /Size 986 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 1050943 %%EOF scotch_6.0.9/doc/scotch_user6.0.ps.gz0000644000302600021200000223734013560004733017566 0ustar pelegrinpelegrin‹;¦Š]ìýk³%Éu¦‰}_qÆd4#M dx„‡_`Ã#Üek 9( =M–¨ÊB¥UY“™ :…ÿ®çñ“·AN75=2²ÉKÖ9ûì;Â}ùZïë¾Ö»þâø›Ï~t~ñò×Ï~´ýx]þâ/®WÏž¾yùê'_üîù·¯ÿò·õpü¸Öôp½üöûWÏóÕ›‡m éáO¿xþùÓýûgŸ½üòÍzƧùüÍ‹g?yxýc>ýþbÏ_~s?}ëÿñÙ÷³Ïöð°í?9*ÿ÷jª¼ñožþæÙëŸ<„œßýò^}ñŒ›8_þì›/x­½üî›/žó›öò?yXù߃{*qãO÷ËÏ¿ûúÙ7oÆËoÞpëgíWaã?¿ëüןùËùŸö«êKþs}vÍ¿ófûÿúø&_ùåOç~öþ?yþ{ðïgÿéñ’¾ò _迚/|öŸòüxyw¡Ïþ“üEòŸ2¯8ÿ>¿ò“þ›§ß>{õÙóÿì“?ü¡óÅõòkÿôzù‹ûoú7ŸýÇg¿v4~òð—¿ÿýïüêqП}ÿìÇŸ¿üú¯Þ½Ç<ýæ‹ÿü›gïfíáG¯ÿæü›þ‹Ï~ú¿öÿñi|?óÝóôÕÓ¯Ÿ½yöŠ/ýâÛçÿcZ×wùìåw¯>ç¿|ö«‡—ß½ùö»9×õÇkýñvüd [Zž|öôËgo¾ïß|þâåëï^={xýôwϾxö¥Sôì7Ï¿ù›W/?ÿìÙ›Ÿ<¼yö‡ûê¥sµüÅÿ°<á¢÷óÏß<ìëúð…?ð¡‡÷/þÚ>ùù[^û#ÿÿ¤½ýõóo¾ð-üù“ÏÞ>ûÃç_ñïÞ~¶üüíÉùö‹ï¾å¿¿üÅÛ7¯ž~óúÖÅŸŸ¿~ñúá˧/^?{øù“ß½f\BxÈÛÃ×ß½à•¯æ+åÇ/-/½`ؾ}ñÝ뺾Ÿ›ßý×XùóoÞzµ··>|òžðð£ðÇ·? áÏ¿|æ÷¬ ÷÷Ÿ¿üæó§oxÍ/ûų×/_|§Ñó˜¿ó•¿ý“—¾yö›‡×NãÃüŽå“oøô­|Òw?>ˆ÷»>ÌqxûÉ{~ôîMóÙæC­ïoí—¿ð†>yï§×~¼èûO‡‡§_|1¿â—¿ø»åë§o^=ÿÃÃçß½z…!>þöö|8^¹^÷뇧¿~ý°þxåÂË7oçø¶?~ùòÕÓ/߸x³ï>ãÿúÙ»‹1Uí33ß>{û8mo^}Ǭ1§)÷ôÅ—Ïž}ñvyýæé›ï^k-O>¾üø^ŒÓwþòÛçÏ^¿}òyüááW¼8~öôÍß…é$~4ÿó÷ËÏŸŒÖþn¯­ÿó'ß|Ã?òÓþøßÏß¼šÿýâ˽yúüÅ[ÿ^­ôçü<Ísy¢ƒùå÷ß>{Øy¯¿üìq¨¾üæÍ«?¼{©á ø2>øš?~ó›'¿~Êlüêáé«WO¿_ž´ç|Šú«'í»ç/¾¸¾zúê­ÿÌßž½blX[/õtÞÝÏpçÛ'_¾|ùÀ~ÉWüq[æÅxfþù_ýðâåÓ/xî•yÿ<Ç`¼þòÝ“½õÇÀwë =ü|y÷ļñ‹/_¿Å|ׯßówó³ëÿÑdçÈ=|ü@ûíËoýÆsaÙà|¼·÷Øž\¿{që/ž}ó›7_=Ór~ólþé«ü)¾ÿÓâßþð6l8ÍOþ¾¿ÿ»ÿõ-ßÿàãÛ‡?‡-Ï·,¼ç‹?üàMáÓ¯þø§7Ìå“ÇYòGžò­#Ç›æòÿËãÒø¹Æím˜§·Óïí\öÕK,þ³‡óqž½‹íßõìóçÏ>Îøüu^œ/ÿÕƒ÷~žxØ?ðßë×÷×WóNýå÷ó˯ïõó§Ÿõì‹g¿{þù3ÿÀ»\ÍüG?~f~ôû‡ÏÇýû·×ó?>ÿšøñõÓ׿]^={M`ƃÜoŸ|þ9÷ðg‡àïõß|óñyx«7j8øæ›?}ÿòÙÃ4->{þ速Fã³Ç ürz®µø5ïÕÿ?ÔíÉOßò•¿Þüúë—ß¾ýîõ³WÓð˾zùò·¿ýæåï¿y»¼ÿ«=ùì§áèç>|ŽÍ×/÷ìÍË'ûðçü÷æ}ÓyN—µ>¾0ý¡·úÑÉ=ùŸÿöoŸüâoßû×¹âŒa®þŸ•ûŒ]¸‰wýðᦟýð¦Ÿ}¼ç‡×_½üý·ÌNw÷êÍÛåÃÇæïŸ~ðã sð° Oú¯ž|úËÖi÷„àŽ ðgÊv¤GWÄ(mï\ ";Ž·¾S~ØÓ:}Oqyœ¾Ï÷ê5ÿLÿ¢ŸŸŽ\Âsš_óS~õÃî¯þøóåÉÏ5v#ìßÿöã¯úžïß<¾Þ¿ðæÝ;¶/¼{Ǿ<¾ðíÛÇ??ûßÞþ¨®¬BBų9š~ýã|Ïþçß³¼¿¿›Ô÷ÿùù“_üƒòó'í~ÉâfhÞïbÙ[~ñýô±û–ûúÅß>ùÝ[_ù•ýÕÃßþ±=| cè‹ïøí÷_={õL7ºLøñwy?ýí‹§ßÿÕ_þüÙ¯~ùWùïY‚¯þã«ç µ‡žÕþêïß~Xaï¯òî×,¿åOþôΠç°êçßp¥ßÚçoFÒgx.vù£¯¼€å1’ÿñ,zgò„¢·o3—Ø/1=ÿÇOÁÅ> Ì£?b0‡ðíâ }ôA¿yï„þøg¯ôøùÇkyÕWZÞþ£Wzwwúîšß}ûx-öÙ‹7O§]LHq¾{áW^ÿý›–'?{ûÙ÷rŽ‹­¿ž/¿ûåó·?Š?ó’o´Ïž½ýÑ6øR4ú3ãÝoÞ®ó•¯Þ†ùßçoßñÿ~ûø‘ß¾}¼Æïß~òýO^¼ýö‹ÿž¿~ûíÂåýñ_Ýæ/ý1Ì1™‡ÇŸ^ñÓãŸ_óÓãgÞðÓã…þðPüÙ'_ò=·°=ÆÉožN‡bûì³wÎÚçá~ÿ0ŽZÚòȇÞñ‰?G/¾}ý)Áø!•xõå[ É’@>%ùãJd°¦{{2~z3µÛ£·{ò¿|óüûîÙãk ÕÉKÞ¾wôïÖÈãù»wWà6’#åc}a¹ï–ÝñþÕð?¡Æš÷ëÊ\"ꓟ=ÃÛ|þúñbÆ›wÿð*¾}ü#Ï9ã¹Ëü7Ï^½èË»’}Ûª·ðYÞþÝûÇyû  } ÞØûoŸ¯,¾âPü`Þ¿çþ‹°ó>Ÿ½cqoßô¼ÃåÉ7rPïOôÎ=>¡7õâå‡Qþ»÷ðáO.ú)äÜ?Œð×O;_zò… Žÿ^€üžWþ‡_¿pb?ƒ~¼‘D.¯Ÿñ>ùú=3Ãç_ –Ìã—¿ƒóýoøþùç_ü<ÌwüâÙœ—gó=bÆÏf¼xýð ÷ùoß~DøîmNêwßþÝdLÞÕ皣2ÃÿÃ7/ß8iO~ÌóVÞ_gúñljyïº?ÚÆß×·Ÿ¿x€xùõÓW¿ýñ>^潉ùËÿþ|ýí³ÏŸ?}ñ/ÂÏæÏÛ{Âÿó‡Ï>ùã_öøñûÙ—O¿{ñðÕë‡6H Pâ!×MÎþrzÐß=þç«×ŸOó»wÿ}:¡ËÏŸ\ÿþ§3xõûçŸ={öÍûM€åÉ«¯~ð“ÏÞßàÂgþ÷iôßÏ~óô?H)gôùî›çРüõWó¥·ŸüåÚ|>éæ_ÿîÏþùwïÿÇüwyü¾Ÿ?ùüÛ÷˜õÃ6Ã÷_€ÙsoññΦ³{õ5Qr†²ånCÿ™éûØïÝýÛw[ nknò¬n þàÇt²ïÃÛOñÀ;8ð™œàÝ.Î$sË'7ö~û’õïü)ˆxt;O^ÎÿѾ˜?,ó_Ý>LüóßÚÜlyöæým¼ ¾Ä˜÷ÞëãÆÑÃW¯?2Bˆ Ñú=ùã/3üþ…qzzüB„æF "‚ÇQ1L¿³Ÿwqù­QÚXj°(~߬†Þwûã<Y>µ©ùQoÈ·½[oÿ‰K|2Kæ“ öùdt|»o}7B·ýýònüu~Õ㯾ù“_ÿÁ=yošoÝ$zö꩞¿‰âýñq×óíã›Öÿîïïc³‰%¿ŸÍÇÙ~xg<ìüä«gß>{úæáO,á‹or-<¾iyOè>µÉ÷¯ù>¾Àÿg¬ØGøë/Ÿ}¸ß Ë~þö]à†;¿xûêã/Ÿ¿}õ>¢B»A}~Õ¯–OÍ|¾ôŸ@?—¿={ã‡?úí'ÿúÍÛ×o^½ü-÷ë§ç¿ÿiy‡$~þäËç/ÞÎ}ŠOþúðá¯Ï^èÛAKÜꑬš¹Íøî—åÉ÷¯ðP¿zò‡Çÿ¸$ß¡?»¡ús­}¾w~îÑ2eáá“Ë~ø²§¯>øä’Ÿœýã{òªŸ¼?oýp|í«? ?^ßýåa]÷¯ëöñLúÝþöÙ«×8±Ÿ|ò†žRÿ ÷?ÁçÞ7ý$äŸÀà0õÓ³ñûéïžñð³?üO/¿yözù‹‡ã?ùäœü/?ÿ«‡Pkþwóãç×Ï ÇO¿y€dåÏóóÏ^~þ&üƒKüåÿí«7o¾ýÉ“'žù>ýúõ_¾úÍÿý¯þÝÃlðÃϰ˜/|à‡ŸÃ£ŸìÇË_<üò«ç¯_$ÿÀ /X=ß¼æßAf_=ðåŸýôß?ü‡oúóÍÿþñ ÿîáÝØ<„‡—{÷i/êöÃO?ÿüå×ß>ýæûIaŸ3‹ÿaüû¿ùÛgœô¸ë—|þéïž>ñô×¼aÞùÓ‡qþÏOyÀw÷úóWÏ¿}óúǯŸ¿ðŸx™?9÷þî篞}ΰÿäqf÷Âßýòé.ÏÇm›Ç·Hð?¾fd>Öu-ûŠ3›d÷ã‰Þ<=òežàq§çÓÏåñ¸G2óÃ-Ñþ¶„ðÉîÌ'ç…s[{ùôÈðï<>}Ü_þøÓßc^_¼üæÅ÷ß>ç÷Ý£~xqž1¾ýѶ߷‡#©Ö‡?þðÓ#?î#}üäO¿ùòåC}wþŽûw£¿{7ïùnMüÕïõó—o?òç Û«üïÙöŸÞÐøîÅ‹ù翜ÿ~úõóß¿{¶úè?{‰õó§oýÏ×êÏž}ñü»¯ÿô¯?}óû?§«z7ŒÏ_çxöÅß<óùWè­fÆÕõÍóòõódzy·~ø7Ôç¿Åa¼ÆÞm²üÉ7~ØŒùpP³¼;yø°…6÷iÞïÍ™Ø×â„ÆõΉ?~ñìË7ó˜m¾Þ½ú8y^ÞžÀʘ´×¿ýøb| È~ýõÓ¯$>Í›^~ññ¥üðäõ‹§¯¿úøJyxòŸŸ½zùñ…úðçøáwžøÉ›ßü;¦óäÍW¯ž}ònçKßÇv^xþ»OÞÁ½½fõ|øýà÷g¿{öÍÇW¸×g?xȃ[ýæù§7RýÐ×Ï?ùâåÇ&nçÙÿööúážèþð[æ^~úñ7®ñ>ü{ò7ãŸ}ø­r‹Óï¾þ\ôðáeîêãW¾ê×ãâŸøM+zòÅ'¿z£Ÿüê }ò+_þ›O~eÀ¾úäWnæù'¿òµ/>ù•ïýúã¯0ò'ß|ò+ßûò“_ùÞo?ù•/zõɯNÌ'¿2+o>ù•‡ÿî“_¹ß}üuã~ýêéçÏ~`Âaã~ýô“ïØŽwïûhÔ?XJºcüî÷°ž¹C¿ÜõNi¤}o%¦³m%¶k”¶ÆZÎÛÝ«ïÛ×ûJc+çˆk9rñ5§ž—#”-îû5êØ÷ýÜK»K ×zÇžJµ¯aëmßÎ2FË©%¤}å¿ýùªu)m?Cºkã›×#¥´ñ…W¾n>¸ßãì-ïñÊǾõ[mgZ÷=ñkÊ!-}´rlWÉyDîsßjÈ\ ŒÐû¨W¯1ï×–Z9ûÈçJkÞrKýÚúz-ëvõróÐ9”ÝÿÝ×ku$îêÕî³Ç­…îýŽ­Çºq½±Åõêý®{¸—˜zµÖë¸xÒýèÛ•îó<·k ©vÂChýìçzç5¶¹§sïµôrm{ ç[Zïuóæ¯-ëØ™ˆ£nÛŽAßü©¥÷»‡vä{M½l˜Ô•k,é. ß¼o÷yßãj·¼¥ÑË1ø-ätžkQ=â[iõÞÒòÊzö눣ÜËÏp¶x½{>ZMû¹ma¬iÇÎ$æTÆzîµìŒ5ßÁä3ýk;ùÓ‘×¥õpí÷~nmÝ[XÛ±¦yµXïq\Wæ9ìÓÍÏuÛ×Ö¹XBÛ¼`Wõ`º×x3H!^åu` \ç½;“wñ€CÃÆZnÆõ vÜRËÆ€®g ¥·16²ñO¸™¦ùÜ×Ù¶‘ŽQwlþ 7_Â,•´ö#]K q=ã8·½{(¥ìXyÜî6Î\ Á(m«|ÇsNùfÈö“U0®‘r?Ó’KÙx¶éÞó¸Bß¶\X,%Þ¡¶¶1rÜù~ž;ÿöq<#ke¤¶ŒI/[«a͵1s…EY ×u¥ã³m<ßs\kÉñ¸Jtdò¾Å·X®c/ǵp+ë±×Q®5^ዌ%K÷lwˆ9¦ íì9Ÿ©ŽXí}DV\a}¦v¥[h[ç[ÚÁ-ammácÝÏ|Dì1ÖÀ*ç[0Ú”ù"&d]™VKX®;/,¿Åé0 ~’‘KëèÝ7y+¹µƒy­NN*v±a-•il¬úÑÒvbª ~2«' *kŠ£^Ìÿ1ötµùqäÊ(±†F¬²/³®ƒ¡iXdêÃÕò]F¡ìcï|û “PYuØiX™ÐPk‘ [8jH™»î[=™˜ ßQqºxœ¸Tžçf‰qì×ÌjÜÆM­ygÓÁb­Ø 4‡£ 쿎ïM8üpâ6\È^ÓÖp×kÛr>DFbÜÅé8ŽÚû¶â²°ðRñ‰Îņ9µvâA,ãÞùŒ«œeûcÒA8É<n£$ —–õ 5¾÷8±Ì&V|]ÅðâÁuNŸ*0³í¾·ÚyÕâµ.#ͽ¶¥­aïÜi ûU›+_Ñ+fPÂè8ËpVG¢0 ÷Åcl×U·\sÜ7¼ï¶¸‚ÆF¼ðF¡4âIˆ8&Ž1¹V,þdƒC<,{êgä±÷r ¸Ð±â€°Ðn¨Ôsã+Çñߨ÷öã>óÀòrÛbÄ¾Ö [À}ì:\ÚŠÇ%0a5'wÙÎžÖ²Ž GtóŸ#žÇºcÜO.ÇNx&à: >«îÓÂÔXø—]Ïc+Ä׳Ö±ã¹Ø×šo mÅ‚×RXiÜk#”õ˜y`<ÞB4ôÚë‰ãcŽàº/¸\î—¶3ÆÁsæÑ¼qAÌt«Kk±tÉ}å­ 1qªÿóÓëu‘vn‚år\bɼX ó !÷ÖׄãŠO¹0ž2£NÕ“Fѵ—"DÍoЃØã-^=¤‚U,æ`­'âó6zlg!¤ÖÔrÝÖv±¸7 R?‰Cx‰…u¤ƒKÛˆ ˜”€6¿E)ã±™˜xEbn¸22Xi g0‡Àr0‰…ÅuçDæ–ÈÓÀ l×ÏÕ¶ `M¢¤|&bH®D¦órîŽñ*á€gqV€&ž£X (´{ùn†„¡Èë†Ù¯ Œ²/»3[œß‘"«¶ßÇJ°#¸ð@Ip`‹¸W¢mž&±bÞyX\*;€neâ{ª©ò hr áFÃ¥oÀ3<óÈKû`¹á¬£ ÐF͸Ýëb­À\¨[Ýàœ{¿ö¼u<<Þ³q1‚c9p K4>Ïf´lIDÊ*ÆywV_ Üî-vì£d‘ç•ó}‚¸Ü"À¡t"0®p¯˜E>N¦önüo0°FwƒÛ‰ÓX›nÙ¬Ä'.» Žú”CR¸ÂÉ×ù5ß™£Aþ®‘p›× ÔÌ(ºÄ¾¯ŒwXÀô+جÔýH%E щÉ^ç¶n<!g¯¬Ö$ Øc ŒöM dÄ0žíZB-k%€%æOq_W'IJ*:÷vãðÛ¸» Øtj #)–Á?-åL,íîÝ0;@€¨Ä}þãº14Ð;“¶18ÃÐ3žg[×g: ÔL,fÐÔŠ+c\#·Ä8„•À Ÿ‚Õ4‰+pû[»°¸ýXðÉ|ˆ!ZÒ±ý= Ï}àïRa vk8ˆÄcë= È´ß ÐÐ,8*{ò€c Ò¥@ØVàÃo"²màž:cÀŠÁ/ʽÞ` oÖ1"á‚ft€<·@ø¿E(1YØ,†&Z.ĪtôA°`hòÞö·†›Å-ß8ÅÚ ‚€7á]°•|2ÀQHáe¹r?*áŽXÂXÆ$BI8Bìº~‘„–Áµ%ˆ]@ÿ2rÓ,¯D>Ö±«u ‚<3Ÿ= w —°./Öõ¬w¸ŽOìf[Òôbâ ÌcgUqéÂM9²¯ÆÔ«gXˆ8‹ 41¥ò0q¿îŠq¬¬,(4wâçzÜ¢U"5NPä`lׯxê}ó«ÏÌ'«’›8 UÜë2a²+¶ÐbAè‡pѡфj. N;`È’°Àº"FÌ#‘ˆwïõ¶nEˆ±2ç_0ÃAyfœV…÷”^k:d0#hÍÝ*¨p „´â7¯nÄd`“aÁÑáE‰v»EÀ5´ÃnLd#z©`©|]Q^àc¬]eŸ±Ú—8Àû8Î}œ0½qNÔHP&PA÷"(‹:U®­HÅ]™ ca€xîÿ&u1Ñ•`Žø›Ã[nhLj$ãÄ}íû¾¶&ü^|çzŠE.&  >XТïèÌ6Äbeš4`èÀžÏЉp׫ßò²ªYDxy©5&\$d½g™Û^0ªó̃µvh³p^™ØZŽ…û‰`0^âVq`3œÕÝb0ñ* ¶Z¯ jXˆ 0@|ÃY±fÛ}”Î=ö¡#Øð%ÄMHÚånœ7»o šn˜Å™”xyfzfõáÖ1¸]ÌB9nl¾@}N]4:Ú#+…ðÇ<êbNgÇvw†¦Üï• y ®C̈ sÀ÷…g#|mqõ¢·\„3ø59àa¥ ¶z°ó’¯ãà.7Ì€¨î3¢oH$p,†x»¼nÖ#ë`Ÿ ã³/Ü•~’Px¸^®mî/:Û LÝAtf™r§ç©ec\G¯¸N–ür»w<Î|‡yïŸ~³zvñ.œÚR g ßÜÊÀ«¬­ÖœÊˆž ŒyÓù¡Z0Ü8þÚO@ Tgpí(“Ä6 #¶IÉ'öO`<0Z „çbV ! ¸§² ÷ÔNIéˆXø‹~=q^m=­8,,ƒ'‡SÔ:ABbäx˜F(Å'm+<{‰Ø&ŬœnÇñÝÇ‘ä3¬aÀÏ–Ü99ñv˜Ö¶î»lh.³‹È¾Ô„ƒw1Ÿ„0`6±„8âX¨›Á„ƒ..ÂñuÀX®_˜èk ˜žÇ—Ãy†.•õâü2€Vøt»1ðÄ,"„èt8E¥v°BðÖîN °éÄYê{róir7@ÀÇ‚ ÍëÄ‘€ÚJ †‚­ü>³·ÆBW é ?gÁëãS '!  £a± ˜¥Ò[&îߣhÞÐ^îrȵe»G‡2Âçá…pæ#”à"¼+X8ÁSñÎ`'À+b9ã6ù–5V&ƨksgkÃMö"¶a¼søÇI¨Ç¸ÇÜÐ'ä»ÖÃKa”;6'5Ä:eà¸0Þ@85±.ã&é¬ J|/€g?V)މKNV  PE`ºâÜrÔt¡òÅ€½áµ„_H¾|ãa— λ± €Ú7N(J2ž†´„w˜:äv‚éMà^ë Û¾–ËJPn€Âq¥ ã½X$ “7À²fÑc9ÂÓÕMØŽºCîØC}YpÉñvü‹›5nb$ÊÜ øBVÃŽ¡ L¾·n-˜€HûR:/ ͳøÆìîÜÈ{&kÞÝ>…Q‚sdlJ$¯ÓáxDdfH»7" ƒ˜Ì<_ˆaQá°#·³¸[PݽÚËô¼ñYÕC F‘L<Ýq/­7þ r¸[ð^!a`u„¼@Òv 6ô}—C@ÒÅhâdÃË3¹Ë¼Þúš8h5>îæ¦lÛWby„±áë*ýßpl`î>,³…9¹¡ï‡î ¿¸·û>@4ÙÖqx­ƒ.ð!ðöÏòeºpÞÆˆâàaɬ1â,L’KìHœ@ëL >’õ E Aó c-D1$ŒOÜî.m<·"ÝÁ˜²Æ•…p‘ãíÝEèL,Ë”.ÖZÆ®D¼#+…oLX-EØ ìbÈïes3k?ÍâgHs“žy€dภxj\iÃ>‰ÀD/²N¾Eüñ²It <%a_D3ìå&²ò¦ûtJˆ_²°–˜¾*’+Ñûè©cþð”uÉ8\\° T ¯eÀÀ1>—ÞN?<†é|‹Ô‹•̬Þ¡-s3ÏMFbMš'I'8‘X{VŒ!B—Ȉ[‚|d77¥Æ5-‡^ܳ¬°:€r8*‘…u|ĽƒµäÄ|ŒpmîŸwüËÍ8Kê3´x!²TvÁø)Âj7¼÷„ËàÑ/YÉ Ci‡æ~áà €Ãꉠ¿óæöû±{J´‚›¶ÚÉd&÷DÀMçÁÜŸ< Xñ¼3St:x”ˆý/„÷¸/aŠñ‚hΣÇÂ³cþS¼ èÂÕ5çg‘ö$Ä! áÑâKðDŽ€ •¸x¹‰ ËÅ~°xB€ ìPNn5†ñ‹ûYîö‚­†ó‚Nqùš ²ã–¾‹—0œcb+/ùÐk·1­mÛ縗vºa“®xR3 ®Œ†·„˜´U÷;× ('¨{¦ ÿä1o %ˆ¬z¢ Žb‘2²nË`v¸5V*Ð ¾P.w„WÜ[ uœáÁAë1€=±€^¦[o§Qª²B ¸Ù®±°w°BóШ@ +Ñ…ø³Á»7LƒÛ+ÊÕ][‚Ã`@ÁãÁ.IÙ€y @É«[÷å —=£Ãachƾ*}?Ýr¿ù¹üqã“Ãe@ÿç) Îð¤tV÷g°ƒºtÇ ´C@9£Žêöüä8Ü[oœpº³NpBg®º{}Aßõ”‰‘°ã‰á`¶SüÔ%0²B˜ó# ˆ‹%2;LÿÎÊ¿ #•b2J‡kTëê˜'¬U¢óÎóË$¹•úÏÁe¾&˜Ê½yÈÜ+ãx* OŠ­‡ÀÈ߯ð\Є¸ƒ‡':aËÀZoHsLž†ãÏÎ2€ˆËǵâ@ÃÆ}åí^ÖÆƒzø4óñsöX>ã·1¤mÀö°F ‚»‹£¹‡âÆDKn™!Á WÆ…ÏZóÉsÃnÅ©g¬¼Øí :®sIW¶Xo#&þ@[ôdó‡HaGX)Ïí9(¶ƒA̤û’Ã{oØOك೴s䀊Ð^Aêзà Wm9ƒDîáÂÝDßh3œD˜T±Ä8‚Cà ó…” F[êËó~à̲1­Íƒ‚˜ïNèÂVÚò9°®É;3î¯îÐ:¸É#ì;ð»a. œÉ:ÜÛͷ葉'_·1xK îÔÐð°07v@E#°Ì…?ˆnôÀ“ÂUÜ)7ëc·M⯃žÕ´I«o¸!®v@ËUb†Wæêæ*çù¢0ˆSoB ÑÝMáså¹>pä‡'ieóT’§Fý€3}~½<—³$×/4‚HŒf#L!ø ²‰Ïɼ–Å ‹÷‚¡•²‚‚R•ŠUSOXïÛ&çdÌ.D<ë;˜Ý…àGvS Äp»ƒ±Q‰ Ø÷-þÎ_ñ=ëÅM›H©ô…0æH:p¿Ú–‰I`!&š°Ê0vì¬7<ÖÆBØ0a¼º»,Óœ#ÑFp±j-p‘ܰr`¦‹?û×D é/], *åY¶Y€ŽéX—ÉO ÿÁ3áÌ;w Çí UšUéò"x¶XyDë¶§î![„B¯fvHôTEgè;L=:ÜçY:·‹0gmT÷Ly¢3€?îEÏJ †bÌŽÇ‚¬›÷SÍÁÐÊžÙd)PÖžŽ.w^ g@L³=° PÁÉCµŽ‡âz5Ü}’Qã¿¡Ø<ìŠ[ðÉ·e¢àÒÅÕ˜­M?t3+k“Ç1kæïxgL–X¼1æ¬Þ×->é‚ÓAÒ+Ç=ïx7xúÅØ_aš¢tÌcÞŽÚ ¡ìLðà¾ÄìfÉ.Óc$p• [„ 3Ö#>ÓÆÍr©z×t°¬ØÏÐ3RXb,“B8¿XÈV¢ÁUžº1¦ÃÓÇ>àTî-yzq€fÁ-É„!Pߣ”P€é“I|•òÈ:Õëv Ä8ÝpÇŒI—G|yÁŠÓm/#Šó0„ÇÑ zŒvì:2ÖÏ…‰ñµ”á|l ”: „“Šýœî®3zÔâNÄ}oiž>dB+<è`ºC˯å^Â8Aª<üø àÝÌ} n]™nÈK¿ æ]okjàØгœ²ùu·ðöó<`¾„Ðù¿«Š Yòt>‡9yÐ7º»I㸱=w?@eñïÍßòèƒX¹ø)×$`lØäÕÒBƒóŒÔ JtsWµ oÖŽ~cÚûF áq±0'OB\Ã#GSÜ‹l‚†oæ=/@œaz9÷ Ògܶ iv·/Èi¦Ìâ Xëç̵dd³› ¨Í#vPšGÒnþM’áim'jy €ù YdÉ“T‚ _™ÜbyƒûK&$pgí>r[f‰sók¡½›/ݽd–ã fŠÉÜâL`ûó¤ òÍ›!á‘•„´Lbe µ) ˜‹ ʛݦ»qÕØâ5ú¡û]ý¯ôdÌÍÃH,€ë¡GDÕ5\àÓ<°Ûe~¡éÂç¾á|0.C3ûÉb‹r}˜M¿¼í+ìRRæ“©8Xî#Í€ÕAo®Èë‹úÕÛô†ÝîŽòVrÍûÎ-öܹ 3åÑè%Öµ8ò€WYÖ1× Bij©ÓøŒÎÍú7ŒFÚ=žZ#±k¸“_2H–ع€ºè%†€“f0¶¸A |zxÄÀ2:! Û‡î*@Sžô¬B[|†dáBÄ*®•ÈÁ'«§í¡žµNø_¬É »zx»ù1¥°æ <¨Àeí<¨–ÕMé¾ë•n‚ô¥0|FŽOš&°Æ à$ÌBà^žDpWÄ'—ñô¼Ç³&Œhe”pÚ€—ËŠŠÛ$,V ˜ÀoV“ºvÛ =À”y`ÖQ7‰ã` öf¾t7ºµ]î$ˆ >tñXdéÐÅâÅÃò@ÚÝš™Ðˆ DMc~ÈFæß N3PÆ…‘Ü“x®©¬ÌLå™Þ”pñ Ë%$¸1Œ{Ä2!‹ òQoS e7n%»gŒ?~=àe¢¸ò–eŠŽbÌÜyåz¼¶¹ž¦1®ð[ûÒ<ö0ÁæŒ@‡®ÇíùÇŒ( GøÆ¶›EÍP­fk\'q–¥ M`¦‰ê凙±åè®/¦ÎÕ{³ì&A){®U§ND4‡•%|²ö@ëD(X[rXjò¸GÌïÆå¦'ÜËÜR3»gÚÆ~`¡ÍôèÖÔ`¦u#®fÓÔ.0¦;`nH²¾0´0tÓ8°VFî¸ ÖɬFó@—†gÇœÀPÜ/n…E<½úîÊýu!àD!Òî~®®*zJ‚÷Á‚‡¹H&’XU a]ÃLÚ2ÑkKÛ¾[‘r#»/âVë/ãPnåñY°,‡Ûg¥_ðÒ“°5·kW=tìXMÞ…±°>Lã\3L @’ááÀ >³¦êÖ¤¡Êg¼µµ À“KÜë²¹Ëæ~:Ϙ®ÿ?þÏ¿]à_Ç>s\Þ¾×tzþ壀ÆPøSÁ”wý'þ¬dÊc;Œ?#šòîCÿ*eSæ³ý÷!œò8¿¤Sý¯O)Ä«í_žxÊãÃþ‰|Jˆ?ÚŽõAñø/×O ë¿,•G+ÿ§$Tæ;þÿ&¢òA÷Ÿ«¢òä©]‚ÞÌYüo£ªr<<ùêûo¿úDhäω¢üÿC%qkçÇß2öþQ¥„ëÿ?þ1Þù³†žIáûùñ7®òÿY¢&¢bò_£SòßP˜äO”Hø¢?ü7õQË(‡»˜÷ei— .ñ²ÒðöØ>TóóMÞ¢ž'̶Ê/̃LÒ¡î. ì¾ÏÝì+Ðïhq1]m$sbaxn\ñ  æ3Ò ¸¶tn@\-Ѓô—u=ƒ¥Ž@qiJ^òv“Asš)+iq¦)¯cm³6Œ¬Õ£&‹‰’m˜ãbÆ™y‘'lúf‚gÎÞqÜÆ½÷ÛüÃ<¦[…¬¸ÔRö;a2×µÅ-·#«i<æ9KéÛ6VL6¨ðnš›‹2ê¾G÷S¦n ‹/LÂÚ¦Ýê³5ÎÜRw»£'eÍT™¼[ÄŸ*6¨FùB&Ì컃áèËÜ£c<Ýÿ:²ªõ¾ÃÖo‹r±¢Î4[ŽÛOFm]¹xRNemG*œ,XÌÙXÞ721)ø<„µHlæ(ßn7vË’G_G.‡iÈ|1ŒåLfßvˆ:´c¶¸|]ØÏ<¶qßåê<<Ì`í§©—•)ÙJØ[OÇŽÉž¦‡áaP<ÎÑ–½™~pì«ê)=ì&¾f¾xÝ<ÊÃkè<•pY{:vº—?â1ÏâcX<Í™p±ZG•šÇÐ+.³‡[é†bæ…ª×Ý4œΓ5qçvôjYzT;‡y0ï·Ÿî¨ +ÌU;X8+>Ú³OY\™@÷ÈǨ ®®W¼rfkµ@ý¯È@cDîí]G¸y¾c\XÉ­¶¹AÓr¿Ì9ˆ¨ù^F¯›J l«æ‰(÷ãþжaåD9íqàëYÜ©Ú*}'ê O÷l\¢û¸wwTn+ˆÍËÛGÄE\¾ÌÄè›§¼¿Þxƒ•¨ã‘èXöãÆ( ߌ nšÏ\X~5ëIñ“·¥†Û¹¶fJ8KC©ŒT-ûé )ÜÛJìÅ{1 x[¦ùLV Ëo²¡©^ëtxWµ@¤±^•š8¯°à~Ïæ¹]s§y½Bcݵ.3¸ yNTù›‘¹˜Ú+à‚¼ÅcIVQÒº'bÚ,pîxzâCØb!HæÃ©Ó: FÉÎÃÀÌòX÷RpwÙ¦›Zq†`›ÄÄݽüYñêϬØg ¬ÁËc^bécg˜{Oc¹.ó¼®Ã4‘Ü[ó¤X×¢é9}ßbÔ Ÿ¾ŠÉ)‡Ùt¥ò°æ°Øw–oW|`µ®ÂJ"7`OŸ´lD.\ -pküÝ}hekò’”ýñpÖtþ;ñií °–XM×¹ïJ:‚RRnÇx3)ž§©&Ÿ«fëRð.0ÏžxÏ(:X)ªê44**¡(\6á§,ØFô:‹n †£eÁ’íã¨fènØ&ËcÓ$ãiVÀ†[O»® ÃwZM„§jÅ,º¨„†B( œ„ëÊ—UÎJq­eU²øZî‘·X`ÏnWðæ¶š‚%'<Ni?,!2CèøKƒL?® X²d°Ç˜¹ÂŠ{]·ø+â¬VöššGÙênàƒé3j\qC ?.Â7¡­„¦Ì_pi,5ÅB˜V‹‡$‡çÊi­'ÞÜì ¬ 6À޹-,ÀÍCôŒnƒ¶0wMfýzäšÂÁèÜÇivçN\=Á¯p,ÛèŽþaîVÛ¢G @‰®DÃd=¥Å,Õ‹ãº!Ýà(±ÅÓB4\Ê=!òÒ—BQ€è;W£s·×ÈíXÑA`k³úMÌ‹1wìOˆ¥‰ä™ùÕJÖnþ\ÁDí!®ÊÓ”vZ²<âéÒÉŠt“~x®¾æ…hЊAxBËÂU¹ÄòWa÷¦Ç=Š9©1 Ãïá/PÖS/<^‹sm™´|ƒ0‘Tãw\-Ëg5›“ÑÇÊ"ÙôéàT–èõTÐiùŠ©‰ŠÀ˜Jc„ð)˜ù°8g½L®) Nnfý€‹˜‘ Þ°CÓaxôršspχaÐÄu,ï²â#»š9‰Xÿ±\!:–ê÷]- §–qaƒÜÔÅ¿ÿvV,ö³î;©+ŠA_JÑß*ñ¨øÒµ€ýUV^¨¯§G±%7eƒª$ÀTºkX"kˆ70Ô[ºêìY|À‰X€)<µ™s‡(…e܆J9—åRûbŽîÉ,R?á½Æ°_Œ+¾+)>«uèCÍÅ! &¦T‘’`D™Â âŠB÷qÀ³ZÂ?F/ÔÉòøQæÄ¸À¹âÀ h¶-R¹² ñµÃ¥6`>$¯‹ugýJž¶ÜÀ‡x:ÃEøN¼éÆ#™Î~ùeZÛV‡(WnGñ¬ÇÜ’É&è8¡‡ o¯Úxq!º›¾*`x_ò_ï¼pJÊ âîÌSÖˆ­O&z06'Ü“À±ûŇ𫦂Vv H®Y–bf! ð£ÇÞXÂaÒøß™Ž\pù‹ê^ÁÒEµ/M™ âYÉt‡ŽWU&$¢X€/ú ,!¸MY=e®xpqÒ⬬;.‹dg*­P&TÜÊÞðA…Ë 6…ˆã—o%¯Ö©‹Wʨ¬Ü<Óda ‹Éã\é‘j>·ÕŒÄd±¸3)'[¦(œ“YØúi%ƒ&·Ú¬|ÈfTt9ˆˆ…òAý#õóxÔ¶ÀžÌî/‘ÅôW–›d§Yu>"›¡÷ÀY¦fãâæþÛm2•õ`dê%²°ˆÇ"ÿ6K¦Þzâ O*SÀdU‹*of©àíÀÌ‹b<êšÄÖf¸Ì¸ßb-ä d@ã¡ØÏÌlHn¦ò¡¦˜ÖEý+Èt« 81j7DÈzÚ‹™cõ6y 5%@ƒ‹A.“¢w нáP¬”j¼3]* Áów0„éÄíY ŸÁÎ*[yâk(M|Æ2 (&¤wAY%—a} ï!öòp4éf•‘EyhÌæ.ïÃ5 œVrmîÛ’¢dt]ÖAà! ¿¹‚Ç«ò ŠÔ–&3Š„¨ùÑgb׉§]¬D¹a+Û²àŒ·Rz‹jØ0°·nÙž3<°¹0—xj%*°Œ-*â’ ‡ ôxÿWQGu›q¹˜ âöX’7€7ÿßBîüñÜZ\L–ùr¢þ“2Ô)ˆÉ Ö1XQ0 ë=¡¬ÔYÍU^T=¸™ÐÁ㘳‹æÖ"<;‡y£G-Ué¤aeãí9y$ªìnóXÄí:é ubl™H8º+ƒÞ+‹JƒâÅx⾪¢ˆ!„¢j\ížb¸›J|‹yØf~rƒà ûJÚbºö+ À£efT@•Îm&àñ/“W.Ö4&²(Ñb¡S,¦ªÚÍxYÁÇ`†å˪Y²„]‰¦IàDEá„Zç¢Îév¹¤§tüýjÁÓLü0$%‘ˆúÑbë«m·ˆÖŒN|Tå”§læl$k–L<(Ê Y½»Nq¬M¸“ÕëÂa=­EÊ–!1LüUnËÜöaµ¡9„Ù"ɺbqªh~nñuëd‰¨R]Ó¡»Rˆ üSHá7¾?è‰âÊ×ÂûX6ý†"2+`…âDͬ?Æé4©Å})MÏe¸ir;í¨˜Ü’&ð ú[\¾…G¹`€wÚ.ûnìšá"ÓÉø¨¦KtDAmÎÒo•0Û¡”±ûZÙŒ6Âþ-ËæÖÁv(ä€Ïb0\Õ­¨•2e ö±UuR0S…m¬Ê„’«T˜©šFÊFEKq`ŒeUÞ ²>G_5­rˆïd93Øà>îˆçw_TÃAB³ÌWÐG1‚ò†;âÖ”û%zeqrÀÔHd¸VŒMˆa\PŒÖm[|¿åN&ì^³$ð¶P„•[*ìlÔt°ŒU,¾Ñoè?fe•#q8æ63@  ÚÝ]Ä&…\oE.ðl»Û¥¾cÙÀ‚g‚©mGS!ºƒAΓ‰i&}AH|ƒ¥NUŽf´‚ñ 7c’¾Ö­Ç25×YÏŠ ;fþ›5Í1º%µoÕªF‹rḒÖ®y0Ü;†tj½€äÖ{pk˜È¼Ž›…ÓàAZ@aĘ´îÊT™‡0±ÓlIå°W¹0¾>vZ¯ÉÚVó2õH)㟞j;§dÚ£Û»˜2°M!S`ÞâuïÄôM¹cQÎý¹ëœ ÍʤÊpÁ ÜÙ'šÂy)€S-5bÉ31Þfm'o½”u2ñ¥*´1‡*Uà¸:†¿lj< b¯¼Y+ïu…!B:Ôµ&Œ”:‚›„¢âþi ÀžÜV_XÊ<„%op?S“õ8¸R«ÂYÄç(ƒP¢k¯\ŽÅ‚Ù¥ØÕœy D#¿ªÚ¼8Bbž’”W4Ýô_õr!|»àŸ•S[vK4íbjšÊÁø^XeWß@Èè‡qÜÒ1n¹$ÆÄ!Å…‰½ |ÍŠj9I«jKìØ* œ…qX«®L㺙t%§Üy½x b˜¥ÌÖÁobE+O0÷MÜ.›Öw)rܪø‰®ÇÝíÛ„º²(7àÆ%ã8XÄ_¢Œ¨ØýË™‡R—tSÍâTE¥2³œga8kãÛrOÒ]ý67„âþìRĬžº‚FP‡dó©ÕQ£tW„¥@} ©[½äÜMøÀ9 Õ|C_tªGŸÀQˆFAݺCÅ8Þ%ÞÖ3E"`–ž%Yu«Ù¢ nf0˜ÚÙ ÇËu¾…Ȥ’/Ælˆö!T\óf(°Å{nžªûaH8%·y è›™ê  ÉGO}‰¥è+j÷ä gø? –*y)ÖÔ¢éæÝZ±x65þO"“Z‘„×fž#|ÕZÛ©Æ…RqÕ}Åw˜s÷dܵ&³*ÊÒðÊ„77íáÀÎh¦´êE 2¹¹¦ Q†Á0Âø€ UÕ=€tàLA…ÛTfõ41]%%Öt@É¥æÁƒ6r¶¨‹³µî»7DXT+3²x˜†ö´{êA4ÅËÀU ppÌæÓò·‚‰—R뱨 e{„‹Iï’ƒ8s-¹@ïfýóí6˜Š?“äS”ŠIªàÌÈM}´)ƒ’ú ñ>Eȯ¤6=Tü278»NÀ &“Ó Öî|öÄTŒb®4a²øÔþ½ sî&bÏ÷򮂠)õ0ǺkVy˜!Æ7ƒ©4ŠÎËØ£*æn˜‚Ú9+«(w‘øùºdV{¬†öt˜/¿ÁˆÃso©©`íu"âÄMÉÔ[°JüüÚÁB‹Ü*‘w«4F´õ4S„m»¦à*Dô´[?½7"ÁÞwKˆ~&Ðw5´ú°xòŪº~­Ãœ-ÊÄ”Ñ 8«òíV.@öCEÀzUà‹Ç0¬ÃE‰Ã¡&ˆdàÆ1te"“Ä7ˆ­zž<àÊ7ψ6¸6@{Ç.Žsñd®O—+×_®À/ÖÌM€6™|•È,nP? Îzî*¯¶ð€;ßîøëŠÔPËiK IÏ4÷¶†ºqÊr]ýÊÀ?ùÁæzµÎcÙÖSµÌ_½tµuàR÷n5ËϹçq€Ò7ë›ÄB$,l‘}ùtŠkøb°8Ãh•—¦ÑÇËR1º\¡z˜ÎÓ¨M:EÑ·GÍÐÆ› E<˜°‚÷´¾ ÂÕf¸‡|6¶ê90m”Yèׄ‚Єñ¨Å-äzjº.`înóì+9_Ð×c'¢Xr¶,T¨¶­{T3ÆÝ¸Ê=ìöd€ÑgµÄÛªü¸µAB‘Í,òº¨AUºÚ›œæ@+ ”&†Xß?ë†×[A¿¥^«ÄTátÑdëyb퉱[pß«š7 Õ•¬WoG€5“«“'8ÛÛ;a2Í|lˆ6$¢¶yVw{ØtÂè§ZÛ]ÅlÈ)ûNÊ‚Uñrä9EÓ›Ãô¤îƒ5XmX`™•ùûžoÝ àûªõ"˜àéX™Oþp›Í}j ªKî¡ÈêJ›án\ïáƒú«ª¨±D§õ˜ÐÂJ-î Á,v÷*Ñš\ˆ–‹¸-hY:qŒÐ?†6§[ylïHÊaìl:˰ö|Œ „'Öâî¹”¤^¥ŒWUveðvØ/v­’!±þ˜4Ö~êá'¶hôi¸s‚åí³g”<‡LT¶ÂJÇ/˜{UŠ\‚Zpš$X1Õ]ûÍüÐlÅ‘Yw6®Í-áqY_T¿˜àñ&èÖ¡Âüæ´QDZÉR’Û *ÅB6n3D‚m†š]'XÑ‹`˜‡7»[D…Gb^w•¶†q¬mêW`ç¹Ye  xUlX9Â"Zx}ƒ]ÄÜ$N';±’•ŠEtŠ0šÝªMµï*èg@¤úkÓ‰Î<Ú1æÛƒÙ@Ìf6q›z¡Î3ìà¾0`$‰YA|¦ò\î1Så¯[IÍÛ*ê­âh¼‘þe~ k,ÛÓ4ì†ç®xl£ø žRùŽmâ+«ê" $éZU«¥£ZôP5ïÜì鲂XKƒ›¸?Æô/7Ng"Ç,&4Þ:$¾?†`‡áî½…qëuÊ“ªÒ±Éòÿâ²{îe󞢔õÌ'3$ØÛBYJ·Ú&̹ʞʗ»ÃEå‡Å™à[œòî !v¸m̲íÁº6îº=¤Ì‚ºX5—ýÛÀ&©,;ÆÆœV«Ý‚e‰øfóøÌ/8 ÛmêÞÉ3X±Éèô÷ €¶q,aňî;s,çÈmŒS< Ó&CæÙ{+Î|Åc›‚‘Ü» ˜g˜Ä _QÌN)³ 7àâ£Ù] öú´t[ûF¼¼ðPÑ<œÖ+ÒòÕp§úÖÝ–ÃÁwùná5è \2v—Ó<÷[ú¥B_o‡‹¢êlÅ™ÀÝ®¨ò¤y¦/Þ}*§_Ä Hx&âäâö×ðÒÊš`ë6ñ› †ºóó•5V¢JdÆz¸í˜[ç€TViÙÚ‚»SÄuɆIv«; V˶¾å-Ž'Ü“å@Äfm P¼ò\ 4^‹Iw„u+-Qóxýä‰!6Á¡Û¡…yxž¦]lk±R焃[šÚ…mî¸a‚ÜŠí[àÛ%ª®êg!cvƒ±[ÿLh^¢ »)„±cª­ëêÔVln=šG0íf ƒªÍ£ªÖJz3c¶-ë<Ó^áÉV†ÄÖ‹/RŸ~ÇM25üošŠøÄ[ª4ÏÆ…Y$Ü=`š;]9u»=¹7nã »: • ·„Øp› E`BÝ6 ¬Ú벫’lûP.,jœøPòEa„Ý}'̨šô°º3-KŸåÆÙŒ¾¹µÃ ªÿ‡ ’D ‰˜ï‹­m¶¶cÎNOA© >w[‡¯ÔåîÎ67>ì{p:‚`¿KLk l¹g½©p“qcžà™é\•) î\ÚÄX拜ðé£Û6Éã~3Ö\î\{d±&¡µo¹ã§ve»  Ó²–…ºh@x3Và'èÖÔ+!ùj’·i¤¸”bdÊŒàíZ]X_« yðfjkm. uÄ.»°°êÁpÄhè ZZ¦]ÌvE¹y–²OKò`ç"tú- fð\²…]wÌÄ´õR`‹%ÚB¤›Pqmf §Û6C, ^øVÞ˜üðî j¸+´`]W¼^UŸyÝÕl.k49±(*©äæYOÖ¿Í|¤ í6ëF°åuH[Gí^‚íç$¶t¹‚Öí¤€Ëf¶ó5lA1µÓm ‚’™]ȨðT}j?àÕ˜§J¤©VX+£ ¬r_&+ŠRoÀ):Ïn¿Û†À*©à’¤^;±ÑœÊËâV†‰A3õ._sKÏ^/;nÈÝ÷ÛTNLΨ½]Ö¹‚Ø–n ‹ÀÔßkoš&zÄ©®iÕ<*Їlv“T>ï\AU[?¼p¸/BarãîN°„4÷<¿ ®Û:KÅYÆvMʆH˜|;%éÃàïÊ<¢©UµáÖŠ ®ã² È âsªm2¤8s³ÉOÛÛßjüáÁ2Ê3†f‡“þ˜æÂP °Ö ®¤?3»K­·EËó¸Ðî>7XeÓáâ‡PETkÏ!¢Ãy©#»ªjPmÄc—°}6ÄTf ßÅ´µhó>¼Æi:Œ1Ù”½ƒÖÔX(<íeÅõp7Õ“æN½”µVÕ\l5ÑÏ·çÅóìAÍF·eoYUsööð’GV.rÍ爥KÕø9`¾0”•®sŠÚ¦ÎKPaóÜ”FSÎõT­K÷ «Ï.¦¡(’=Zv—hد} M=¹æ‰zÆD¥N=HU¥¿‚ïÙhQ3Aõ)ÂÂMѦ…n­fÀã¥d_‰xÏm- &Xðî“a‰-@ Ôšc¹Ì¦L®"ê—`-R¹Ìà’WãsXsârâ»G °Þ°Ôy²©¤fUVãNû”µ vîsß­eOÈ4gp·%¨Ã{Ûݶ MÔ­»ÇWÝWE ‡y­Ãƒ%gÍóÙ* O¡ÜpºÁüØñ ‰‘æ¢g:LzS›¹ö‹Ë)¦²Ïr+`ðˆ:6µÉ›‡º¬^;«Âýxhm„÷ •ï×ÙNm0èînq5`«)lIì§Î•n¼0ì[66/yr²/°)¿'¶páàS)2´R¶¨‚!Duµa‚BÚ·«™E´šØ^b;ö.Œ¯m'¼‘H~šÔåi¾;X¿ÙœU5œ¤N¥]ÕmÂ3.f—vTSÃârð¨²]¥îî1aU^«ý­f‡ÅªÚ .µ*R•M9ÍæmÝŽ@¬ ž:Y›e³XIš¿¯U‘:Pà½_5Ú¯¨»uu©ñ•i“fbTÇÅ–4LÞ-°%Ý0݇yœy*j‘†\Žcž¨à ɸK³Kl\hZÙÙfúÂm %Ë» Ía®Ð êè¬d 7~ ðhè¶»¦jt§J1uÇ¡ÜöI-8;øÜéá>>*Q³»{†ÍJ|ª,Ûq¼fœm[oµàY'Fº›Õ2Ì`5ûÅ¡æðÄ@½§=qáÀ-Àn²›à²@qä½f“e›&D†sÊ~O¦ÛmE\ÃÔyÜìæ´ ¡. ¶eÏý}QÂhö̃Q)xÌŽá¶Ú=»ÅHÝLÄ.×1┸ô.×)UUã§hy˜W ö ·P•Ü ,K‘í@˜=ž€I3]I©¿2Fwª€±+‘"Í}üßåÖµ½›Ùƒà –bž–ðˆòfÈÊ Æ@M&iè±îÇM|åÉX‹[µ—ÑÇÆ£ÛË—TÇzÛ΀ÒêáÁ»{æÏ¼p׆y÷ „k¦¦%Ñl˜¦owgÏ ¹!‘©.ý3›"»‡±E宜 7ë®|±gÐ@Õ hóu†Ÿ`Mc¼Us ¦¢ÛŒál± ̸0ÌTÆSÙw¨Ê`‚Æz«Ë>Ö…õ’Äl.gÇ‹·êù(̦ Gw7Ôñܦ€¶N‘H?Î¥¸ãzÃÄÝFØUì9Ï16gâcº;é*Ãv5¯U‚¾L½ :¶“èî‹yà¹TjÍÓ;Æ2 E…¹KØh.p0±ÈŽ'X/ÜlIÜÔaæcS+ät©æå %´&Ç44û'(JÀ™bÌV{õ¡ªj§YGeoˆ¤lº¾@ÜghXÝA˜3Qe—  µ*YAÏ=ð Áv¾–݆ý2V¼•ت Úð;›ø³1„*¿îQÅóÞšky×ð”6HXMyÃòpµÛ>v6ÏUñ‡÷š'TN—Ofü²œÛ¹ƒ}p 1Ý›„›Ý‡ -ÕÙ™‘Ȱ„hÀ#<21(bªUº¿\Ùʈî.?7ò›O꽜ª*Ã`q¯`ßCu•æívä®,ð½› zWÕeìù Ž-L cǸê wõÔûf]‹@öв4v9®]Z7}‡{½ef5îÍֲʹ½k—ÆÑ¬ãc&›¨ÐÛrÁMr›}ê˜x<+A2ªûuÎ$aÄ!š0ššÈ ³È¶’l»3 Àb*ÍN:ƒ’ž¶´Õ›[9½ì –EOÕf õµ×mT·>-S% ÆÙÔp@Wð4ß”m9¨Pø}cȧ^œ{kòÙ>É6THëjš³ Yÿ¶ê^(ìGÙ}¼R0ÙLUÙȈ˜ú˜¥)ÙV6§:l6ìåÞâÒäé§é œÇ,<[œÇOã6›2*£ÇÿŸÉ½™-.MùÆÓŸ*©–—*Н6©2ŽSmö|?&pÊÉò’ÝLäwvóÒŒ8< Wí¾á‘kš{‘0'"¸[­Èº)ô[2EEî|¹n­nŽS†Ôz*‡MƒÀ ðX§§ðih #+ú}‹æî•i„Û(ŠhµÌ|*Ò,!"»…fÍŠk ÓI¼f²*a‹K–^Ÿ—Õkgí\æÌp£x,üˆ _£ç6ñﲆØ&܌ڪô¶Ù†Ù·šùVêÉÒE^ÁdGòD¼ž‰d¡™ìfFã¾bHvžÛ.5©øpP؈cAXÿYÉt˜òŸÌÜv7sßm™εÇr,nø0ù¬¬YûìZmëØ*tŠ)p‚ìÝIQ]Û(7¶–—á)“²åŒ*Wô¬0šþ 4½ÈÜV•è‰ÅÖ<ÿºPÒuB!Mœ¼¦×j[òUŒ\\wm)…ù¨#Ï5‰nÜ¿íÈÂivÒLÆÉ Ó6»Ø7³¤¯À­V³8ìÁP<+¹f¯Qà Ž~ó,âÄü2”ÇÂR²(´Œ²¢Ì"íÖ/H_Nõ¯XF±ÊÉ^±îJEaEª@—œ¥[°j{)xVi ¾~:£:%òb¯ÁÞê{2%  ( · æ‘Mßµ¶:÷y nQEPQŸ™9FPþ¦ˆx˜u]Eî³-°L¨` T®b…Bö,<˜hu®'7Ú“%Pi78'Üö!¼.v #¶A„ðF`±CÇf‘pr¯g QAD¼Ï#ÁÓÊlº½ºVÅÜ ë<#–×í:SëWej§M}e¶Ø3Ë!Éö>Lš`„ŽÅc1E2qkë­ìh¶ä ¯eƒw¦áE§r¾itŒþET$.tæãZÜí7·æµçè6Öv2‚S®qؾ,™9:Ì€…ñ€XÌꑜ7´¥Jž-M€ÁF+nÁ‰ž4Z•ŠUaæX íMbÎIs–‹gOy²-m4n À•­ágd»÷eIÎX8üáâÓöÞ0EÕð xäŰjGœ­XCä2X6[„y[ãm÷³”±7uOéO†;n}ÙXRªjfÉým l¨² LYg2G2Ýg·ƒ¦I—ÕŠ÷nú7±x[ `KeHë¬òTï¶É–¥®ŽÚö‘‘°mQpç»¶Ç”ÆW[8oB™n”xÇÓz²Š1ë+ÜMÞ¡ífs â\vxbÛ={޹“µ]õ¶;“º™Ï G²·XØ:vÌ|ÝÏݺ#ÓdvV7A9Ú[Æ–M)rjc*²™l&Ö–“ÂP­ü&ä7%×ïñX¡_d ]£i^ö¢Šî8­Þ<À`öÂ1Ç㲆zhåWV0Áàgœ©÷P]鈽ÌŒÊâTÖ×ì#¬…liI^?à]víQÜZ­Ê0…ÃޥÂéí,z©*_¬+&.Tëø×ݨqíMˆÒq\ ‹«f`S;ùàdQë Îf›\ËwzZÅC©JÏÇœmBùmÓðfSqËï€0s;p]‚2¨aÇe‚O“Êî¡s‡€;?%s ,1²ßÂQÊlŠ M>ÒÒp–‡§Ã–Ò÷¹U¯g;&ld (á™AÅjâ®&N5;–Á\šÒërl•ç:zˆ/7»è²¯º²þ©Xckßuk!Ê#l—š‰€køB²EiPVÿ”{¯VŽM—¼sqSÙ¶Ï DsoËìoÛ:@ìö‹Ð6\ÆÁzþµ=vœ¢À€ËºS-¾#‰ë]Ù”¤>6z¦ãÞZðö=3Ñ!{”5Û«XpnÍE“xv´\a+ÉìqÓnæg‹™²À!V{!‚”“ÙÔ‡=ìFv{n2¦"’­t–Í'Ûåzàiz»Rp#ʆ`x÷ây™Ià–E·<‚i½ÕS Æ4°ÏN¹&|Z~i*Øf2”¦hWQ@eSèûìÅ´BÖ̬PU·Ù”4† âî°ªl6°½lí*bæ—ËNMX#wÉJò€Ù3O8ˆ»ðIàÉÍU ð€Ú™0ÕÇ×Óö´aaaA!¬X·qÒªëÉp«cSC#åKñ" öiÛ‚U¡"•´¬ë s±Å˜§úÑ#ú]6g£KÌÇ1)¾÷™ÿ[Ìãꎧ)ÌÚna\â³Jé8tÏ9…b£¸7 ¨Ü»ó·ã fWøo_£* Y=3_§>yÏìårà:žR\lf=ÆÀŒX‚âÜjñ\+·ì‰Åfu‡Xec1¢ À×Ô©ŠŠ+Ô™í[C¶2¨4[ð57Ž›Iï¸6Y{07Ïí1›2H%XÝ´ã‰ÝåoÄ/õ‘X\€m‚é½z†1A!§0ËŽéåx¸ÝBy|R{,ŸYñø8ÌKp[Ú°røžý[yŒÃ\ ­Ú×kW„[;l¸g´‹1KàR;‹…i›Ü»Áw ÛžÆ2‹"ßÙuðj(*¬[reí.;š½=oRj`Ô2L´äƒ Â¥ž °0æ¶`°ß¯íTØb¼678wk©,ŸùYm–J4gÝé1†;&ø|;^cà]½msNx¸'ÔðA– ㈋uu5’'Àçi.ÓÉT{qÖlÍÄ©zÖNDkà)¬»¯S´|%Œæå¶Û¼ŠO óqOw£°Î £»”)s“ôp£zrºËòÔÓö>Xì`½-…Åo/öšWàBŒ»mÄ¢ÜÒmͧaZ•SëÜvŒÒÇÆFö Š_:^¦òÞW[Ð ÚÝ€g˜ôJPoÕ–'öº¶ì°dBF³AµÊ7,Íš¬F¼jËݵ5Ù`»m&ÑßÌ!±L•Œí4U(˘çªðÏñ´Œ‹õîwØàp(†ÄÂÀ婦­ˆ¼4yÈ‚[ æ!WÐ/Ô×G¨nµÚ©½Ú›»ÖŠ«í“÷î‚(ÍC0)ñºX…W©³A3þpá6²Yë*b³Ï¡v‘Ì5ºwoT°2EÑ“™Ýål'(äa“J{TÙåÎý±Ä2uîÛ¶EÐcßsvsEáŽË²º?G ·g€è«þ¹pƒ¦Ún¶EX”ptmŠ?C¥÷\_ašX— ÞÑè³g†°üÀOG1›%¶–);íªºìö?¯³¹Ä½ò ŠnîÃ.⬪ÑÖÅN!÷f_ aî–ˆÙ3üŸL}¶¸“=3×!›V4f_DÑÖr›Ca‘ã0ý«™¾d½Äüöu0=Ëœ à³ÇöÕ:|E׬e„ÿeu#K‚¿bý}žÝZ¼åÆ«zÁ6v_Uï0÷2ªiQíY®E•h¿–÷uåÐVU¬÷ML¦ÉÜQÛ PpêÜÀíNqš•º9¹Ç[7©}òæ¾Õ¸ml £÷gE7®ØM¡·äw&\Û•>š·žTP™,Æî#p:9••´°`fÅ\:·ù¢¡ß™==†+ëîXlÝ`ŠÔq¸‡)®žBª2gŠÎ¡Ð}—ïJXZô½*5wnÆ@›vfÛ0ÝÄä*k(`iî­s1–²œ;Ó3Ý=3WïÅþ‡gõ@ât‹îÆKØè$‘6Ž­ØºŒy¥ÀâT03eB+ž/§+ÛI­¯êbZn6\oµ øõTXm&ýÛ×N¼Æ‚xýl°ßs„±$n–˜=f~˜•xz%П‰Ñ ÇÀ·—1k¡žöʾNõøæ”,æŸXÚÄ}°(=¬³Ž¥öàuOÛÈg2-@ ÙlîTÄó[8Æ’™<˜ŠÇ¥Vêí ƒu3†;ˆP´îôÄʉöÃ8v=Ó9Ô‚Zº—5¹`Ø ¹!nŽŸè T1,MÀ|­ µì²*µ`§ïç`g¥r»Ue~§4ÖPYЏ€)ƒÌ¢ÂŠ‚;ð;ù®}ý®¨0 p:<:üa>ìOP6Ä$Ürª•í,Œkža™… е¿²ÙB·©äRÃ%ë™ûV£èm7ÄçkV ÊýòÌ^P Ϙ¿S»`¬­¤°»èb÷¬¬"Àd.Ъ| ¨n›Ô¥Z5[›µ·-¨7;=º½ÜÌ­‰AÄÈ¢‡›§…–[sÅs¶=Îåñve23Ý]ÇY æ¦îeiÜY(¾*VUZ²ÐeüËÜ­9÷<8÷8sÐß]5?8š¿’þ +PI„½gJ·©Tël¯…£1Þ³ÓW³ ñg…8hn;ü¯ñ%Ë ¼Ü ˆ–¸bàw‡'íîž5•“lµ¶°ˆCO, jVÃßyqlŸbüjœY 6I´.i#¦Ù©Tâf®à…+ Ym%™ˆ‰óX<î„%5 L«Ä2WÏ÷÷:’­ìv"ŒJÓjç8kVoc ï¦ì€Ë\ÿ¤µUÝdðl1 2ߦ‹O0!@5š:i›Šoê¡Ífð®ËƒOw€×b‹#X§Ýzx¥ucZû67›ñ }µÓ›]­,G2„ù3[ð†‹¯Â/fÎÀ9% ízÖvÀOb!l·Eë¦",&.z–lOéÑÕWUó F Œ¤SlXW&‹ÐºË-j1°(½à:g¿îèæ.X«2¸ðê®-~PXf]+¨ìV}ÁàciGLÓ RZr·Û¨MÔôI‰Å·2œx6÷óÍý©feHÆUÔ˱„ÄÖU$Åë3ˆqµLõ»U}ãaUY @Ê·ç*Ù£³—˽*¶)ø²„ –>,7µ3ŠÕ]@ªk ‚Í4ÿפTG¤µ«Ùûg›pp÷?šô·¨Ð5w#Ãí)³ W«[Ó ÖÑ· TužŠ*©àVkž÷ÓŽÓ± ‹[­ò·kÛS8—ØÌ²Û¼ù£ÇË®¨c·÷|ÝÁp_þ­ž‰MYsÍ×)È¥ u±íó ƒPðË!—1-ì™!I"u™ÙûܲİÛè"X=fOᙨ™¡Ú03<“R¡Á¾3ën¡‰{Šz `{êy—!/>ÍüX†ÅO`hõÙÍ6ê³&}Ú‡Ê2±ÕÏTš©!k»¦`aµ]<4h©Ê}EŸ š9w*OÛTA‘¿£gSDåž*pÄýò”\Ù‚tä”1$Ëhr~›¹ sŸâ•ê»OXžë´‹'¸ÔÝßÜž<`œ>|PãþÞg½ }Ì»e!S ÀÔ·ö–•Ç4sÂRâabómêH³6q”¾Ù‰p¾µx{·nËL¦ ›r½™³WýÌî¶]V›‰KªþœWÜ›ý°óGU¢{.zKbë¬@ÿyšÌRù“bkìfóÍ•õ€G§ÅV=L•#3à›ža®’€£²þnw­ìÉšýrÛoDkn¾·²\—yS¶NV±B]¬Ü75?Û:4>®Ù(¦@ðST×è:{úsÝͲ¦³²¶ºÙAޏ ˆ¸ ;¼%Xšèa³Ýø@+ (v{!*{6n5ÂÀy‰å‚»´.M…:*eêWª‘©H¹ŸÛ©²ZE¼{@k5}ÐÐíœ KBù+1Â5ºe;*ŠŸfYÝ;c*ÓjŽÝ¸o<Èmu$öI` ìî·‡ óÂL¯«ó ›89[ `¢·5c*Ó1~‰ùÊÖYÖÑÅö1<*N ØáA,6 L¼ÕÇ äÚ·¡ŠáÁ“*=»˜•ugKÚÕ Y•X° WdöõàÏeO¶VÁùZ—®^ŽÈd;”Ü:Ë=; ,J' uÀ¦—zšZ+ö˜q0CÁ³”í6U,JXù_e…¤ìÆ”¢vË€V>,ƒ%Ò®ÊmÄ4õA.‡MB¢’xëTˆîËT®¬À%± î—hç‘ý(ÞÂjy0—M;`ïN UÀz2î¶LMrEuÝ÷&øYÑÕMôNbÿõç .UŒ:rí|Öº©³–ÑÅLÝÀÝ îÉÚ‚ÃcùÑ^±™qæ:‡Pbx©Á§t“'Hæ³–L,ßöÎü÷¤Äg€˜-XÃ5”©Tà•}èdªU)Ê|Ïäe7­øc´ä ÜbI9MésõͯˆDàËuºt!$‹ ddl³i‹!ƒ]‹Âj»zfÃí×÷·¸[ÖÅÃ…Æ£Þö>ì¶kÂÃY¤£<ºÛêûª²y¶¡}áӀʗ†ÀÔ4`ž=6"0Ù³?ܰÄì/¾ÁÒ‚TQìО³V€±WÛž:¾ö Î ÊÖ˜+vw‡L]x7×Ì‘ Ê!Ùm1|BpWj¶P; P³U‘¬„@@` ­ö>ÍcvØt;º£³¹¥¡–ÅL롪T²WzW‡䃥-Є¶[eE„îÍ–Ó\”94wÑ$WÀ® X²;Ÿ=,y*¾5/ =ŽËMšÛÕη@H¥lVˆºYná›*ÌüSOA¨~a™gllaOW/oP†Çþ‡7¿UèXØgî]³JOµMCyæ´)£c‡/Õëq×P<õÿ\>ô„ ªÈà™r°á–¥`ÐX¦Îèœ.Û%…m…Ĭl6¦º+3žsàu»ÇÄ]ü© ʳŸiñPYÔÆgUëºmNÓwB±e«Âg·¡‡5‹³[rFÄÔp.p4F/¢²k>Úᨩ4Š?wK$ÅèØJŒ°¿®«Õ+ÆÜǘ"î@9ž¨ˆ[]ËnG PnP³ù!™ýSª»¿»Ûwutlq·Û³\8F<+ÍvTvÿ€²3(&á­ê¯Ãh› §mí ¸E¥ÀÁÒŠä¯Á^šî@䙲Zbl߃kV ±ÞÜÐP “µ™"@ëñ¤ÚØžu0»‰¶¨'n¸E3Ë)­Ú¹ WnCüÄnÓ£Ãlð…±Þ()¼™†~¨8¶šäu ªB¥#m´%ç™ÍÆv— оus·WͼÃêÁ½[©¢‚ÒNø'çÁÿ9z…Úøú—)8ch\Àc¶Ðœ¥Ê¶cÂß /Lqî¼ûá·›P„åÛnR§ºÞ[ZeyT¥$áîì°²[y2_‡•À›yË}ö3ìjlMÝfìj¼«FuX)ZÕXœ‚öqÃ…•R€§,Uå%N~QÄñ“W•Úa,wœ}ëVëh¢›ü»ù%*º5A¸—Ž3 xr™uÜgùQtWW dc1{5¨Nk.ÿNððI}0…jšêõð}Õ@óÜsSA¯ï`§eÛ:|Ïf¡VʪîF:ëÐf/D¾ÖšÜ|ÙgCr,«Wi¯…æLá:í4Ü#¿í¾wôÂ~–S<Ç#ƒ˜–»>–©’ÇCîÝ#›4ºšÝc¾e_‹€+)Í@hž‰ùÔ¤"*6ƒ±b/ØÂ–UMÃtXÄN§óÖ®nbò•U&^¨uekr•Á1ÆSùS7÷†Xf³Ë\eë”ÿPU¤Ï(E© $Òbm«¤š=JäÚv¼k6¤{oÕÎWÑÒoŒÐäéU13yŠ.«MõåÕâ®Ý²c›F÷©R5QÚörK„M~v+¨^{Œøt5‘n[¸†ÍM¶cöp´ÌÃZÛò]Uk:¸c?«Ì)V›Êë|mqH˜0RÝáXiÀn i\¶k–_+’ ù«2®Yïª!6±f/ܯ]´A¶*àû<úZÖ%ªŠoФò¹—•÷ŸVæ2ÿ¬ û·™Óé!|RÂþÕ Xfʲ9MÁ,K6‡"v™xâqÖYR5”(kÅá°"GXšû†Š'Ã\- &ã%¢ÛvM°NA2ODˆtÕ¢›fù£ª“g´·5Wv·S×ìrs<Æ,_±ùfúî[-èØž}µShÅŒ‘UAíK’%YÎnƒª«»ƒ ŒkU¨É\‡n±gWÚFÔå`øšòÐ˶*¾ÕFwÉ–^ÜÛU${´v±YEÀ›M³/&ýpÎÞOð‡=/<‡áwâj‡ -ÁŠSØ·šÁ¶Z€\¡ym=æ‹Ú ™}–sªU¨sýݪÎâQœÙô¶í…þ9œGQäA8ìD1þY±aÑÏ^-öL°(|*ojBVû¸©®ÞäA¨¶ÞZ]¸f$trYy˜7»eà¶ü¾*µÒ¥«ý—¦f©;Ó¡Žlÿç[™X˸vuxVPlf ðümªQ31*•šƒë±Ååų[²;¬mQAA QUæ†þ`Ê)œ6¶T>³`Cd¥¦ ˆgQWUιaó,s+,‹Iì dêÉ‹†ÅäÝülO€§ð)S±Òæ|Œ·fC?΢¼±M'Ý‚ìyßd¦?,%7.1mŸÅ˜¬u‡4 bÔØÄÎdUW +ÞuT;µÊÆ”BÂ)íOô¶öjcÑg;Ì®*Û¾m!vàN+Þl±›0Ý( ¾@ÂpüP³dݽÉ:[?˜¦.ûÇ„©ÓÇ©ÙaÕ·í…%=7«Åˆ#Êj]@eE§O3Mðȶg<<·1&âŽÀ‰®ølÿ‰tâS”ÿ¾3Mβà+ÁޏšfuÐeÂiFŒg©³ø‘ —Öݦ[iß À@ÊŠÔl]¬¦K‰Áj³~»‰*ËŠ¶ (€9²¥óÕ^ý1QAÕ=«®~'E°»»˜Êܸ-ß“-SŠ¢;7b;3l€XuÉlÞ«á&0ì6aÞƒ%°)©Øe©³È{Û2×Ñ<—ªm€(ö̽Ø!¥aÓr+ko™¡ó'¾MitK7©ÅSa‡™Š=ŠJyНªú1ÀížeiÉ+cšÕ‹ÁûF\P¼xn×h{e¾¯_vm܉¹ËPTÁ}Ø«:†³–ú ,lVÁG5c¬ íÌ9´;uºXÍ]é$5[–®”áq³À5\ÌÅB ºê ¹Âmá\Њt1ãfú\§MC„Û‚–œ@µ7Ž i3F³ˆÒT¤®Ý’§²ƒÎ }ª&óðLÌG´öÒí¨Åb…Hãà¹hóÄö6¶Ce×¹1èáM°—P±#cݶ)F§b`lJ‡Øûf ™W±ƒªdNÃÜ&èˆïî>3Èô—Ë@tÅ,o©¯û„‘ ;P´É }œŠeŠ#HBO²½ljv,ͯ4Jšdf®šX€ÕŸv™¿hK‰ÓZÞݽX]°ûÂfº£W­uµã¶(ï}­¥„ž’bpÆË¿‡»ßMYëõ¬ó¦T~Û#õ¸3™†¹/ðà4vŽÇeO,Mß6®y àµ÷§ti=g£LKÈKJæ„ä3-àòD|ˆŒ ¸”­í—ÕNƬ=yn:3pÔ¬ ³7¨Rºì}ë=,Ñ©¬H°æR"„i¬·i•ÖíãM®ïÇÔn?‚7÷6gKÙ‘%èÌL¼Ü”TGžK˜èÎ-7ùà)‘Y¯E5¨`u´+¼+—¡ða±¡ý¡@P6 Uc Ï¡äŸRn ùçaœTPô ôªˆ3Ó¼Xp¯È‘u¹²Â–öËÊFâ ¨ÃL#›-\… +õÍp¤ñ6]ueÓ5S²ÚC§aICP­š‚öN¹1Å8ål,óô­dùõÖØôÔšmɽ*mÓn³lßžæ3Á:y\~Û`a…F©£ZfÉuXÉ^ØÍ31®Ò‘†´[¼‘5ÂuÒ¦ÂÝN@äuxæmz0>{ Þ®hPmÎíiõó8øã̶ žü3 c{uŠU7‚Ãjó¯£/«mæ†òWGJD¸ÛÞÔ}©ÜênuLhƒC³ sQß"X< Äñ@$šÄ·e–®™Ýâ ›Eß.›y$µ7m©Û•{<á°=¡ÂzÔ½ZÚHûâ“_ùš¯?þ¸Ô7Ÿüº=<ùö“_ãÓWŸüÊ•_òkzxòæ“_ù¢ß}üuãRÿùßêðþ»©Ã›ÊË €ç¹#U‡C&Í{÷iD¤ë¦,œ· YÁó ðNï*„î2y ²Æ)â}îàZø©U â™ÝÀÞ“±®[{ëîM(ÅLåÛ]*7Ë›]™ËÒÕ—°‘Ž‚ws Óìè&êáy‡Ò!6ÍÂf±ÊUF6ét¶æÃl2‹ôz8̘,VÉæ`oÝ6ÐU ÌÓvºü^à™û oÈÉÓæåQwV¼ õ·ŒJa7pg–©onûÄŠÛÔÁÿ<“ŸÖ0–Ӽ׺{‚>cÛ¡P¾ÊÚ™@ˆnÖgWAwºJŸíœA¶>=%–hãóŽ_UXj‡TÕÕÌUì,˜ý.VeOæn›lتê´\͓۾\JVn/SÝÎv³nölÏvö¤&âsíŒÞ¶ Âþ`pò(ÏŽ[WÑÙsÇG uùXoŠƒ»»5“Dºól¬3Öö¾³ìïò˜Õ¸”h‹D–Øg¥$¾ß–"dqÚ ÿPg‘À ö¦,V®ì;>’qÄ+3Ó–x“½ÎC §#²¤5Ø'–@¨ÇöPùmaÖ´], óC ‹i« ”–d”[c [lÿŠ3ãÁ.7wu¶Á&,«3g,ðOÛ—îÞÐùâkŠçM%FÆ‚ëb¯_ÏÍDù•ÛM©=L¼‰Á÷ðhXfMÚf':3'ûÚ² ï&zÆqZ Ì!0Åd¥ÜbÕC¦…9<ºìÂ’ÒZhÃnvÙ˜N„ˆfET2«âZ¸V°‚@¿ÑÁ5MióË„£Ÿ¿_‡‡ª<°µ¡*‹áXmDPðͦÒ\äÂ’wðÑ¢Ýì–÷l‘UC¥ÞãÀëH”¿§‚~be6çCÉŠ˜Ù5Ò–^«eöž‰÷ó°-Ça%ä˜-=<Í2i™€r¥dÿlË—lø·‹1x$¦q‹Ë©žÔ™ðçÕŒébóK›¤×jM©b·¼ªÐ{j6“_¹Ø©à%ð WW®…âoéð,q³ù›Q„aѧᱷ w¿Ï$L›¯GË1OEH1/|u™ $ݶVõa¬#3¨¬ê½LLJ€lG©øÝÓJwÖþµt´´f‡@lbVp­Œ —-³ÝîY¨ýœ<ãÚˆ”Ñîž½ö…àé9BÈÙZ€»ØˆÐ¬R÷‹mšccgB‡ícìcbúe&Ö=™Ù›Å LiáF+yÍ Ü=`‹÷]` »Új«]g>ìÍzÝíÍsV¢mß³Up·í,íøf®Plä@6¢->ΙÃìæùösìÉæH›ç• I¨ÊÂøZRkF5ž"]ÊÀïªÊ t¸u.:@žÒU›½¥ l;¤ZEÝXI„ŒcDÓXLÀÛL5H³ ¥]íšûñå¼0Æ)¥°nØ` NI]4ÓW=ÜK,£½'.ª¬HÂmý#$X!¸™«xâ,£uBË~]Ð(LÚ8ÜDÆWXwlc¦Ø¢—c/Å{ Ž ˜õÜ0ì æméÖMžª5I[ÖF«,”ÙtUI …!+±Ü· ÉMÌÊâÝí.Y6“±€¾¸ƒË¬ì›…ß“ø³Ø¢ÄŒñ^ïÎäÌ6c]Ïd,½+:Ö)Q'Z°PÂŒxtŸ«RÑÁ†lO>“V¬QR„õ`gWˆ6Å"®{5•·ÅãÕżxµvr÷•i'²^0“ ) è+Ϙƒ9mNUÂ*OÃԬ؈À/e"×}S_^·ßÁáXG4%?.Ù*1?ωsßyµXÎaÝf>íeD¬WÁ[™y˜îf]ƒ«’¡¯ËnŽR Š`[®:ÌÈkŠËÚóØífz^ÉnC8T˜Î0!@%Új“ãÆÒï™·†°[! È“yË=ЉÕ–,l¨ÊÕMi±¼y›íÚ<ÑÈ‚,PÁ¨ªà^<Û Ñä99±²dÇ^ä²’3«øìœi#§øè÷Rò*æq6{Š 7ÀÇHVEâäÆE¬¹”õ<èR@ á&ÄnY×Üc3;!ó4uSMãÎÙ"öÎ3¹Âª€«Qµ„¡Vÿòm=¬½ßO»¹¯Î!r-¶1V=âá32Õdê±¹^¬,¢*Ôµ…Êì3S’1—Eu_ëldN˜m¢ìûöÍ8Ëhø>;7vÖ‚I*ß—x˜¼‡M’+Ê«ÕZµÍ5ÕlªÙÃLÈÑ/g¨-Å>ɧ^Œð^ì9cò]&'cå|¡)›_ºÇK—d]mÖÇÖºÌÙÍFwÜ\ *‹-Mf06HÂ|—%VxÉ—•¥)ÂÌêÅîVlÍÊV«Am þßmm¶î ìªG£æž e˶Bœõr\ça5²z˜ÎêVÑ˃ø˜åep¥lã,Vc$2fó$ / ÜÙ†Ä:æÖ. ™¼Ñ̨ÕeF‰§Æë™tpæj‹C=RT„Of?0¯ïïö-å.ÜXk–v§¢<ÄK¶xZ’¨¯è.”­ëlpŒOÃ)¹¥4D7ÛÉ=Ûëä°¹çðä¸mÛ·…¸|Ø%Ö–ŸvMÄNà†¡b`ÉÂ5ÜŽ°a†5· †tm³k멦Ç¡;ÜDŠ78Åêl.tL ÛÜmcDŠ3ãØòHxïŒWxü"2)òªc É%XÇ®Ýx+{_æœ, Û†µ»áº†`§+ìEºXëŒYÕe1•k&ÌFª™øh¿¡àFN¿X4k§-Áé6º^0òU±r…kX8¬v°`Ž uU_Ýh²uª&³¾FRÈ\òTҢѨ¥ŸÍ8ÎöQH|u0(BG»ªåYÞÌŠÁàK=üä°r¶¨YÑ”ÛQÿßtÞ½à Ö&Я¶åÃë([¢«þ8˜ý`3@J„1+.í\Wsø¹ÝÌÄÓ÷°vgßÅH›š çJòŒl§¾f3„Ó3G)¬Fhà¬@>aÓɳë{²™!–›÷ÐØ—C9“€ìÆ tfЏI$v«kì`À³Ÿ ¬Ë4äÓ63'Áï„ÊZ;¡) Ï,¥«®¶¸c¶» d·úí0wkáƒp󍯸õXeû²­1ípZY €òÝÄ›ÛnåJV©c0S'm0¬Ò‰uÝæEÚ@§ˆázÑb+æ1(¼c›Ú ³ ×8íw7X²9œ¬¢ãp–ý–J»”3ˆ†5ie Ïî*<Î2ìN½b™öž†í»JÖ‰BŒº[ÀP'¸Ëú¨¶eg¶íŽÃ<q(ÕýßÓ2q“ì‹›o¦íVŒl £27‹•j‚åóÕ  fF6kü–¢$Žyðë…³Çr3Œª¹”§©™{>ÔU±Ø¯©‚[Å.’¢ Ýί N4C«pËmØù*ä]öd&zQ«öÛCÙi*†6˜âeµö±`ä̽Úc ã™n´*pt˜¢"#EBHÇàólJs™ÎE¸µ'_º@Õ|2›{v,5Úz,罚Bs@[Ù«(Àdƒ*w¾à]>½œéêJÓmõ‚y³t²_¬Ûâ·½4O:ÍY<²¹¶I„}¶çê\Õ¯€ fb/;«ok3YF»ÑÞDn ÿ…Œ¦eo«ˆ-ͦð=Y‡¹ŠPp õ™·Ë~ìÝì¼1¡b6u}RÈ|žËaQüa!¤µ"ÝžVŸiö6ùÀNo{Gí¦Õžäîµ[&prà¶HÌzFP}±nqH´¡ßT=a‘á€#‰ÔÍÛ°ãŸy×*¡§e”¢ÐP]wAâ…9 bÁV É^FV…ËŠLgÿ°uÚ53”.ü †Õê»ź¦mòL&Ùٯ$÷šfNZµqõ®Þòn©¸mM»;€e½, ¡FP;ðZâV;€0´Y•–k½`ÿë†?(;ƒâÆ¡;ùÕº²Ø"Ê]3¤ÜlM*;]Ê:°ûORËíuh¾¸§XÑcO-³œ7H ¡0]³Í« ]»•2×r›ŠWTÄ¡÷Ã$GÌ¡Øy¯?&Æ·mqªY[{R³ ÏJkfÒJ‚~ELnö¸³áÑA¯ 86·™ßs--–hñìà[M€ƒõÌöŠöš]žs1<Û“PÌh$dðïrÜ@z{ òðp`õ˜ý*7Æ¥ÛD*6ðõ°H”Ä_mw‹¥ç¾¨¯z·£ŒŒ5ë.˜B DíË‘w\‡\Ýð²vôR[ü¶ùJN‹)Õ©·ðO'Õ?,›!¶++qÙß%™À´ V X‹As¸},æ©weN¥A`ì|¤ܳ ³w>LìRûÌéÀðùW ¹Ú•V'é0c¾s㎟WàT)”‚ÓjÃÛ:(F±Ñ8{‡óÐv”SfË j®ÁàKß ¸SlŽÃ¤Ñgîý³ŠûH„(7IEô¹BíÍSÌPØr»¹ †SpÅÅb±ûÐ~´¤PÚgÏUVŒ§u››˜ù1ËP=ÀÝf¡[–ổÇ=Šnh!ˆ°@ìI§6yÌB:l‡¿ßT³V3ßÇ5û2l²GSEÖ Zp1‡ÙvÝ}†n¦)ªA -B‘@î|¨ 1;.GÑ#ËM/¦¤‹ ÂýÇ.áïn/xŠ›Ýýd²(ä(É «* ´7N) 3xÒ@T¹M“%¤$÷% ‘–å,ëÁŒÖC­?Óàƒµøx¶âùÝà_nKÅ¥/Ýù80Æ;nLì—qNÙQ\ål»|™†©º}´À†a”0›WÀjTˆ"ðdxãÉZa¬+ŒÅ^T9°€MË/«]8Ü~Ã7Ð#ß´+¯Ym8â¡3]4éöi·]­¢F»== :D/yæeë©í…ŵXŽºßö®f=® W^lö”"kbû9Ìr½4åF°ADDWZ¬ª£ÚSŽeZm—$ž¸<Üžßf³¾½ZÝáq‘•®ÊVQLA§=ç¡–a>ZıÌZ!>Aî»c‚[䧦Ãò»j9XßøPI"–gCîÙ…`1Dù5… § †®Bàu½æaNåÒ“ºjc{·¿ls:›g¸Ü8&‚­«¶ùÖ YêðM–fVcÅb„¼†se  í* ±À¶:cY²Í£Û§Vø'k/Á+á©¡#`†X‰Ê’š¸_~ê6,ˆ¸ã¼ …Òº‚-îóðAáXÜI5YÞ²KrÎwíí¶Zµ2Ù’¥°læ6«»¦è\SOÿMºï¼+)ezå$Á¿¹â /µAlkXî%ŠLl<=ˬ6Dd¨²BP‰¡Ø³wµ-?pLD¶ÚÚâêÇ]ç`kæŠ+¸KqO1aøÑìþdd³ÇÙg„¶)Úr{œA²wwjH²7=c¤&XÍQbLÄ]‡ ºï`¦…Ū'ªÿG`Ù繄ˆøbáAÁ%ÚŠv³+_³ _Ý?7¯XéõÄls{šEŒ[”›…S7A»ßSX&ƒ … /Y|paå2Ëèöã‡ÁA–½Å4øñ=æ©8ä$1÷â> ´œR E5 Ð5,ÛiµÛ‹SomÙM· ®•Bx»§Î-DäwÀ¥i§  6K"ÌÀûlU ¿ß·º;åc îFÈK.%cš… ·(ÆQ e< ¡žC|ØÆã´a6“Ž-çM-F–ß}‚áŸD § &AȰ—Îmë:k¼»M‚A·õKLŠâÑLˆÛ¹·23æWCÙí‡rÞÊð`°}ó$Á¶áÊ¥Ýnê[&<…&&”ø¼Â€N#ÏbÓ&wíæé5huÀè®6w¥íV;bbàÁ~Ä_kQ=x‡8ô¸XW¨„‚c„þ h£«îG¥;‹­,á*¥ý q$vôóì7ê¬0ö¨_‰ËÑÛžGÍžÛî*ªF±<; %›}%P6ŽØVmŒ8ѹ_…ÃøI‚v˜‚DOîÌo«õ +_©wÌM ög”MmÈ‹æ~«sAÚÓ$ŠÓ^‹Ä f·º¢ Æ«K ó*†xƒÉ}ëiÏÍ“½µzxdwøxLJñ(@—Áà ‹Öj 퉱ªËÎYÊd·¸¶O¶-¶;qõÑ{ßölãŠ]a~ËÆ÷A*=jL¬¦ÑC·ú¶¦µGá]·+ÔÓÌÀ²Zâ6A­ªŽ§ÓMüL½áX›b#Ø*«‚ÏÙ¨xwãmSNT9ÆÉœUí²mª2C$# zQßxµ‰³§ÄDwJm—Æ¢O·‚˜þ„ÂÚ;<Íþ ;RhÚµXÑcÌ ·]§ îë2жӴŽú"nÁ«bÞ·r0xjb¥îr D\YâÄ‚ªv3´¥|½ƒ=÷YiÞì…àŸ[}Û(ð0O§Zá‡tYe#¼$§°¾rÌZC®ÇŒOV`R±Ëa›]K·ü·L¯h<·º¼–^®ªãzîg; €»QMYi«cÓ8Õû$xÃÏân¹? %Y;iݪnÈä,ÿlJÙÔð7c躦›\ ½¤¶ ˆÊ3µB½çC:l`”Ð$f"†UÝÄ3Ø !òQ5åa6°«Wä!έ&˸¬@Éð|+!ÓCèXš5,!ð öG ËX©&W]a³=,†Ãƒ &ÓÆ™¶îpê(PbŒ“rrŠæ¹Õwº¾`Þ&?­Öq™aJS{Ìx›a4k˜‰N¯©ÖÆ`­ˆÂû°#§@[âEe+Ö‡1 fQÚÐ|ù¨\†¸ƒq«LИÐbëfAÜ5ŒžÊ¹àûvÙÓ6Eÿ¤¸{«±Š7õ×mú ”ŽDìm îë«löíš—sßâ÷@ Sæ W]6Ù„ï`‡M7æ‰áì.¹Â¼›ÀÇ#k"ŠˆvßæA_Q~ûÜ<89Ž…† ÃÍV^¶™MKf%˜Ã”eß›àÛU|¶Ï¯ zvf]§C¡²jûê"@¿â¢„ûæ¾¥;n‰'„;žÄ0+Ûcës—ûPý²qEÔ~ªY”o^ì/À ð,n“c¢b[¶ýâÆÎb¶>6ÕYXÙ]ê}JdOlŽŽ!™ótLfûHÂŽÚºöhµå¸.+¬æD4ëŽvc¨§VȽǮZY·3¡»…gÀê€@›‚ʉ( þ ©Õ¸í DfRÔå‰ql[Rèæ›ás‰K­ô)¯ëRÓÓjù¨Y[¥(ÎÀZ­ç‹á¯ÂMLâµÓ86ód_¢/U+WÊíº¾yíE¬¸Ö>kA[ñ'CÙ“ÕŒÖ ÝØÏêÍþê'ŽSÖ]ÕcФ§ÐàsKMg· s·D”7§Ø:Âä,ËsU4Uê_“oœ¡ ?bMS ÞÖvµËâazb86¬Úc(ìç²íX……àVd¹5œ{içu8ȸóË®.s… mhPYÐ5*fq|¬9½„Ò$›Òù‹Û'õPà,3|Åüι7pMö‹vÓ³‚•²çä¹ïé$ÊlwA°#®TÂar§.dÆc·6+ë;áëßtš“H·«›\v+úˆ ‹¬¶ÑúµÝm7»„bÌ2®[¡Âj*rµVÞMØMw®d¹È#>MCÝÍQÆ0óÙýDK<8†”ì¢LÌz¢cñ@díŠô·¥lªÃXÌvúVÃÙ"þê9ˆ‡hݱvÔ°é:Bð@ Ùi fqMÍÎbýâªÂ>àH$u ÅÝ%ŒJú ¸½ô‰—êAyLËADÄuœ!¡JIwyϵE5ナvÛi-nœ)¹3FAG  óoYN‚÷©&Ê„Hü×&ÓP(F  µ(:coÉnoÏHÖH$ܳ<¨÷È.ZóZÊ¡áUMßR7N5*0ÞÖ†¥af‚]ê—›`8L\—u™­âl´+78z?mÐ';ÇdîèœÆìaäNËèž¶K¥‰<Xm rí{ܦ¼(>Ê’ªFXÐóÕPXß‹Uþ÷5›´ª ~_*p( 27C$^»úC2 v qfX3jÚá•¡SÌŠú§ m/&[=›Æ_L1YíaqÐѽ‘Šš}%κx†~æ00” ZÀ*âÙHõRÕ|õ`¬Y˜ÊÜþ‚ª»øZë´ï”2 l–úwO2hì‚‹Âv+Å =+dU@?;a+˜IŽhþ–ÙNü#›LG,ˆzo7¢` ïºÔ"!ÀJ´Z†ÍÎEÝ“=† àŽÙöÜq›T1:ì×sDVçÒUËUÅÓt³Œ¤àÓáFœê¶JGÃ>Û\牰f°þ.«¹`uL)ÃaAV–»€ s@cÀdYœ‰M^x‹ß0VÂÁ¬ÌãÒÕº¤`Z;7Üí 7”¦¶eÒ6­¯ XÄ[¨œÎ¹EwXÂáikÅ:Oà µO…ºÓ‚¿c¦þbÀ²Ž£6ÑwØ~ö _zéÜ ,™Áôìêðp€T—ŒÇ±?9ah¨ªÍÕUÀ;SΓ­àÄ‹x`r›`Í”  fq+É[MÝ>”™Šv ŸD‹q¬iÜÐär°IŸ^²ªÍzæ˜çà®Î©Š6dâé¼ÜWXU4Sáqa¥Zµ¡ÞgÔÛÍÖ S±ÝJ¤ÐP “¹Õ²òŠðyÔÙü@;8æ¾\XÝXì–>4Û( C¶hÅSÕÜ’bKI,¨‘óìç1Úâ9¤Çªd]êû¢õÀVpG³ÁÃaO?ŒpU; ë­Ì­Ç$ï>»¹5Af6i °3ÆÜ!›Ú˜à²Y`u›¾¯À’€Û·s¼@f@r„)Ê:ñÝŽm‡¥;yȘ, ŽÖžœÝ7q!À¼1;° IÈÑKEî”Q–ÊÞž‡¬\`—Ëý%ÏwÅÕa3›9m QÝøð|Þµ‹rT²Í`6ºíWn†æ ¼væŸ7¼/ÎÔÅŸ:¬|é·6h;u̵­m3ÞØÊ4¥Ë|) +Û»PaßjŒßp¤Ê;W€é•«Jl·Uëí(¹ÅCšA¦Q3V»Úmàñ”EˆÅ9Ôë>v±ÆÎ¤›˜m²ÝèW5ލíAÕíñX‘‚0S¬9IíY¶2Ü•ë·Ù Bi²0Uù<–G`CíæÖàíVnTã¾(°oÙ̉1±ÜgédçiÀhÖ&aÊ'ëìŒ,u.€+&M݆åÙÜÅ6Ÿøf×G©nçÚÇhµÊtn@SÍñ\YÕq¢e•êõŸ½Nþ}Ú*Õ Â,Þí2+ ϽâîTÂò„½õå±$‘\³·‰w]TìöŒëJ¶M‰rX@ÊM°·áVÂIZÖt~KbÅ÷Õ’UW<¨ž7©C·EEåW%Â—Õ ÕijNN`%„±´{뺮 RaÕ­pKàé åÇôvR‰ iº‹ù»åžçϼ/'9Ü.¹=\Ô8³Å϶¸Ä(=qpËX=ü2xÏ;Òfa­Þ‹$ѓт0¢›ëA¾wž¬Ã;)°Ì¿ºå »(^Ťü»,›ùS»ë5¬„5{¨é M¼¼,hï,ü7AÔd銪^Çup¼òæéÿ®ÒX#ˆ^Åco‚­»@8k-Zïzs«Ÿìßyqí3,· 6W¢ÛšËñ´ddåB<ñiÁj7»ÇŠaš”aOOÌ7†ÚÒ#M¥©% y‹|ŶeÛˆVPZ¹-t™ Üô^åÿme}¯vA Jo—Dü)Væ»Eì’ü#Äsn9š‡ÎâÖbád>  NKF¬?qŒ| Ð~X|Cø%rGU(”9Ã]Ív·Mc»éž= Ã|§5—ÝÃ1“'ì!Õ¬d §uÁÖp‰Œ a•ÇËQijæÞ^fÈ=¶c½"UmÏiôz—qÙ¦wÀ7Móõ(:›Ùg#Œ™+Wkîv ·ÚõÌðeu«0™ J;@æG78¢ C-p„¿{l4ìûd¤³VJºb Õ4–]œ²sK± ÐB…KäUè4Æ·ÁT.\îÄ ×¡—»mìèsöê¦öh´½o0{æ>eØ FºÙ£ßv‘€‡c&_N=¬cábn]î–ïêd70ñ¸ƒ˜kƒ\÷%@]ö‘aB<í„ÿ@jRÿÕ ü¡q €L- [Y_fÂÛÓƒ1ú>Ôim­í4Ë2·•G°ª?®;tCÒæFØ¡·yãa·b `?UDÄ–óbcĬpºC‡Ã;AaåÜTé,³h“M V°]Ý\²WôÀ*’ò•êbžã:ÁïúÅü-Û µ’9Z˾Îý©µm°ãì™vÀºŠÀÄÀh»n1§ÎÌ'@œÀi21¨ 3‰Dï©j‚rVË /Er³M„âL޳6 ´dÖ²I]»Tæ2+®¯€ÁmºœŒ+|Ô†_Í­<» ÅíZÝd&|,–v˜e}ÏCMæ´ÂDî]館wf…Øob7áÜŽÀµöÙA´lUÉbÇAõ<Ïšuq‡âCˆóW•¤¬U9Ë-©"‹;…ýnÄïqe3f\ëeO …fðföé˜ÜèVÒ9UÉa#@•y¼¤ Ç0gC1âË‚(]ŽðÉó¡87.Ûþj'Ð]¦×¾³W·¾Ò꙯ „·ý춈MŒ6ÖbÆXüú2ôÜ'p´rjÏY±£™ïºÉíf8\KV¯eÅω5FwΪDLcÖ1cpcê¬Ø„Ý‚·Ù…‡综1TÆ4`›Am Ù X&:ÍEjœ>¢B ý {ÝÛQ…TµQH¹%-Šmü[Ö¡Ú[†§’ýÛ°†6Tˇ–/0¼mv™wY$„¿ÜžÍ4ÏkÙZ1ì/9.¨T¦’3£Mmty¯®×y?bd ­ë¤-ê6‹Úwy•ÎR€‹úb=ú µhKö,%—ôx÷Ä%=ÊaxÈ©]óR2$­ðÓíjÿ¼š¯«6íU æRÊlÏð¾à‡ßZö è ŠVwÕ ‘Nõ«Ö•?{‰œ-šÇJ½8¢CDÜÏx/§¹ukßS5šY›”€k䧳ƜçøVÅ—oÝ¿•>)e~ÛP ÜÅk+lV O²bç^Û~Ýóðöß Q$¦³Þú·m40‡ CÐoäª "Í.p²i¥Ÿ‡þ¬”;OKÖ%Ë*ó™HN¶7MõhJÒÄo÷K·A­„xµ{0£x‰Ó÷µWŽÎ7<;Ž'hbèµ=*_&hœ­©WÒÁ’­"_íð³OŒ·<§M‡eúšv2Ã10ˆ)käÍí¾òçìB‰~AÍõe ¦Vø1ý$-!pá¥ÚÕYŒOXyY»ž^Âõ(˜tßÉæà\t@šðRHã{\ŠY|íc7²­ƒ({;¡ãTèíÚ].H¦žÐ¶+î T¿Ú´C^ƒot@nßJÅ||wö@Îéöúi ]W²ôãpñùpo!áçwYVj´@±¬ÀüX¼l ÍCz­«\ÓQÉ}Çp|é¿Æ­¥Š¶!i½Äæ“xÚ'ÑÞ®–!kt+ÏìÉ”ÎB/Ÿ7¬~ßÇ‘ÔFpæZ m~ûžêŪԩ k_SuF׫t­½;ц·þx²«&A¤9šš|Á%`³©òÆÜèN<Ÿ6œúV ö»ŽxYš7ÂkÁ(X¦ÅÆïn* Ûi!³6 *Hâx"¶ë'㯨›|…³²»ÖÄ£¬ŒZaonÁé°ã±®JŸâQûq@ËÝ¢%2ÀÄÌW©î¤zÒO}Ñ>~F'yèyOªá©ËWÕÙ³eQ3"Òw9Ñas.ËÈZ©ÞVz½=ƒ|·»òvïÇS¬jX:h–Œìï}í;1Ï–ç ¥Ÿ*þ«Z…W¶H ˶¹¾xk³MD°;'I»<6âì`"Ã-uì¢ÙNäû%¶F}m·Š]Øñ1ÇKi%)Íi'rÐÏÇ^u͇ËmcßϰÅ3z¼óòå,פ‘Ør±ÜÚB“Ö ÌÏÍ÷¤¤éæ½ÅF9ƒuQ•ãòð¤ŠQvîÙâa‡‡ndçë@;ÉF?[ð¶Iph7\œË´‘=ÇÅϰ õ`›j$<Ú™gûø¯æy¤zZTçÖp Âìl'ÿ÷¨áª&§£Ø¬ôQ¾£HíJ‹—=ÕQnÛ¦Îâž_ʨ%Él‡«Æ²£bvÛÒE¶ˆ§ãÛ2ïs}ɱp­ï×3LÄ£¶ÛÎ6·F¼t{‘Yã÷Œ¤$…ª–ªÕúÀ iŠP=wKJêEsŒ%H…‡YÐäåaù‡`ÀÖT4rèÜX‰ä:ðÌ÷]¹iÂQ9>·¶Fê ètnÕfôuÙ9îéA=8£ÕWÅP‚ÔuüÙ†NÍ.©ÉÕ¿7ð¦|yÜÊÊ|Ìú¬$Ÿò3µ³¦b‚Ü9‹È3ÐÐí®±Ãúµ*츘#Ûd†¼§­M…âœ.ÊÇ™µ¼6à÷{åz ‡8“mj*|åÓž§-=Àˆ½]ÐD®þEÂë ÷(:£{´ò9ƒÍ3É“$EÒS‚éÑ;ŽW=ˆk™÷«KûM ˜Šé$ZÔrQ3QÈœ×ä·gWwÓ8w)$ãȦ©TÁ ýu¿5ÝšM)Bˆàk’áïºxTK'ZÒÈÔ,Ç®Wú ³b䕺‡$˜?¶`¥+åI¶c;/E¹*È—mkOù|xrü¼Ÿ‚}ÄS#ðçQoƒäÁË_·="ƒ×Yã¥2Gu¤òÀ6k=à “Ë3sÓtqõ)§”9“b—ˆšQ± € #ÙNo9%l¨Ô?'j: ¬ôÚ›\YHÏñ½]|ù² À?ÝÊ9<ÅÅVªjJ(ý‡bÞZˆŸé³ð:.Åâ±üªÖ KxžFjÕ>³ïÖ÷¸}QKugÚÙ«)„Ÿõ Hù½X¶:­[>üPíoU: $D>…­¼= J>å/ ¥ëf¿,úWP’ÆG7âûê4«z=γDbò•:UmsëkK>I\ѵ+9nÝØrÄ’”Ï€žê髎'}Õ¾Gí3–Kf£¯î‡íÜ ^¤š´*8Ó¢ËÖãüêÄÊl³™jI‹GJG߸¬B›öéés.Åãùæ™,bŸÉþÇN]UVÕF&»‰¬Þ ÙØöz*F£Š‹ Vížû×<±8‚R"Ù”þ°ëž¯³¾^>Û¶4V·o~«…ਟ®ê8Üi—«¬W‰Úç]ðØÕ±ìð$Cù½¶§‘¿²‹TUéNjü>å»ôû>Ö›!³8ž`p…°!‡€¤ÞC»›SnËùF» ºº \ûÐ BoUFÔÉÜw–o+MÊ‚ïDèmrW#9æ´­óÄb|0’êU¸ö$ûnË1 ¬¿-×°ÿÔ±x?žÒPt‹ÔlÄ/ë \ž®ðÒlÊàe³À³öj«4‹‘×^‚ù]m ªA«K2UÓ¼ZCÙ]¢ÆÄªó5 ì«Ü·#³ªêØÙpäŽ=¨âö“KÄíeÃÌÓ„ŽP«ãAObGªp XÏR½ôl€y{Ñ+‘tv|Ùy—§§bR ßÑáîx«ï½í?¼ »·Xoz%@ÑÈ^¶N³{¯¨0@ïõ`ŠHl§«]c—‡TÕ¢USé­òÀ±opœÁn‘.}Pï\O?ï[©mëðômd Î^ßÒƒ¡àO8h³dúÒPaÁû`ä9z,8ö*¬zº!Ù©l ëþ²p\^¥£yøY4”MT™ŒUùð§—rzp&@À„^…³¨ŽÇºZªÀ‚}Y¯²œŽo<“ó—R¦¬çô7)¶scêCóBn`6ѦxþT†Ç•˜g*·ôŠ Yìx#¹¾Žü£þ¯—øÇqݨä¾Â£Àe‹JŠùŽ®È¢/NŸ]‹”Ù”$ &¥Ì•PÙˆ¨ó™ÃX×l‘ÑC×I"G#ZMí2»‘á<ªá¬jœyÒ£\s|ëJ1©ríl›çI)zÝtîõ –dtM´]]žhCc“bNg:3é“>²¢"ÒC#ã¾Óügx¹tÚ&–™;"€4¢âW¡Æ¸–ð£+w‰¢v¾†0W”Q€h†þZÉrZÂ%Ç„žTÜÖDH…÷ðœ0Øùv ”Î%9Ž¢“ ™ N‰n¡¨X¯Åû‘‡g?åY¹ʥ½‘ M½¯ŒÝ™ur ø/|—ÐUo•y3À£ª?Æ´4ç¼áÃ]ø6Šá×öÒ߃ҚŠÀÝÊœãxÄeÛ·‚H¡³Hƒ3r b_yS¨ úRƒP ðm±øØÈB@A²Îæ‘êÓ*pJ˘d™Ï>ü7û½Ý¦‘‹— ø-ÑIH6ùf;ØiÚ= øÒÞÙ)ÈF±sDyêÙº\?#^õ ƒíÀn'´>q6Zƒ Uµ˜møéT‡d“qöAáÉé¡ÖêA>(Ñh“W$ÆÉ±©û÷8®ëÀpÕNùRXñºÙ_Äj®DeÏV‚ºiŽ I! ¥ì‰àÒä|N¢Úù¯FFÙ-—ÜS‚½³ïß·ï×ÜO2ç²ï#P€ÿ´–È–ªc:“UG"¶O…¸£Ž o»´  ~õ %U]I+¤ÄÙ‰,§ÓÞüĹ"B‡vÍQõ£ÏèøÖ+øXò@Àß/äO¶ž—uJò·V¾­cBz~-ÿÌ2ÙBj`¶taRæÚkÔÑT¥ì,Ù¼VkœÐWâVi¦©«Íq—²{¡!#ì¸~T­lxœ¯†­³ÙØk¨(6Ñv×7„4^³’’F.ÍßùíáRÄî;òª¢ÊªŸ0¿{Zzíxßõ ²t¡V–Yé^Dª*ÚÏV –‘E­:»žbçèRN%žËKˆŽ3‡KÅу¸Í>ªƒumöÀ-¸ YPD”×É ' RPÄÇÌ̳¾M¤Qú^¾»#Ù]Ï]G³Ès$6•ºÝ¼Ô†¿¬g»¤Ä—ò^Š?ªe¾Z”t£i´Ýyi×Dü« ÃIrM>}? -[ 5®à܆“ Éw¹øÑt*&ñØ„ðŠfï åÌsòQßšæn—üi¨˜Õæí€i~æ4ŠnþHV-Äâi †ÿÿ ±‘Ô[ÑóæYP-®ÆrÓC(c‘‚ˆq¤¬0,ìÍìhñduÚâ´Õòã‘x6ìCV·œ‘²muº!OqˆÄ2–£é9+ó 'pbX/ý¸ˆUé <÷G ëf~"ΨɣOëÄ©) ëè*5øÜ{+œm›­ŽBÊc%±ºC¹@ÁÐnŽ ©zyC2À>¹smiªyNr7j»SÐÿAQKÞj<úiQ±§¥:³Z¬EIeY¶ƒ94 É­r–½¢â—f1€ žÝüŽø€R/]žï ‡B –œ?ÂGà«®¨G†c¡ ·n¥ÌظµècÇMKc6CÁCÙî-ž©FâÑ£#=kúÊ: ±á–âWüw{ƒ¾7!žîQY÷.¾š¿„{0\Ð +Ûϸ,´5aêg8mm 1¨8ô¯{ÖíꔓMtWˤD· š4Qèâ-—éŒSR{°³i€pêî“ÅìšTP9±éqEá—çÇŽà’À5ñS·•çMÖ$”ý ƒªüœíš’Þ† ¸(Aà¬JÙÀ\Йë‰?¤¢¥v¬²nUB±‚G³¦Ñ™>Ãþ£ÕÈ>®›¨rÜ}ÙÜ=R˜ÄK¨A*6 nT<7I4çª÷¢ É Îv \›¹ÈŸt÷+AÕ‚ª YY68Ô…ÀÿvË‚NFðàt¦7üËë~9ç*ŒڬqNRŒ#ÖÆb ¿*ܤqi Ç#+6›ßt“»‚”3úù=òh?NLüû,Éì­F°þ)Kd&€iýnÃu¸ ªõÈŽ®%%Á/D5åØD¶á¨Ièþåöôªtâª:‘Ã@A¬”öR"”÷©z,±tb*kiþ˜Y~ dUššj@dp M£\VꞪù¡Ù‚¾ªÚ ¿–ª&Ëó.á!˳£WÅ­ñ>ˆ®W~œ9­]ù¸3=U¨9 Hcþ áâÙ¸‘ø! _Ý ö¯K•†K†ÏªL‘“#ËʧŠ| ƶå3}Ü%ÈI…Ýщ wz¹Š„/ÅŸŠò|#Á”€ÎSMG÷ Y º³ù£"?' Éñ”àÒîŽÅáÏ]¿ØÝªBØ.Yi Åw€‹<·¹³•îœ5á“d&‡É$fÚ”€„dÜ ÖµæaY;f!ÜK­±ª}ùèÏ@Êëa7òŠÙt[­Ùjì(jKÈÝÅ‘Ø&X"ya¯´Ç¬¦(„p4}zœPm?Ô„RXg••ˆÊ,Ø[¥ˆY€@<0Õ^S´CûÙ÷ÇTW±JÌó³æc%Q1tÖ&yCØÂ¾V$@­Úä)„} Lú›±+ò±pDtŬùY–7±8k5d¢Ž/UÇLÞËeGqíJó¸¦JË!4X­ãЭ穚CžZ- Ɖ#ÔÕlý$¬;œT”¤òX8º¬_"6NˆÛ*i,ü‡7ÑÞ=¹aÇÃ/Ã<Ò%õªƒx$Y„Îfc•T'îñnÙ}*Ð=Å s~• gC²pâmßÀºx­;«ÎÁâXJ»‡WÜjײùXz˪Q.´ìJŸ®×¡ ‡'Ê}ÍGé;rù U“–ÆW¦¨:T·Ž+sQ›P2ÅZ–ƒFÜcÓoe„k¼K§ƒbZù"Â$$4ªP[œ¥^ÔÄ   Ò¤\eÄ5½¯¹4$"ÞŽ®tÑ–äþ^åË ˆ€d‡å{Pn³µd„œ—1> ‰i(›ÔòlNXA£Vâ5²ï>]cd®°tgß]Sñh7‹hÀ’e&JvP¾rÔNך?_ë¼ÁnPpªã@¨YIj˜ÃÜÜ êé¹rÎþœíêÇ!‚æµ9ܹäWSH‡¾ÍÆW€\åöEsÐëgJ•€ìšëz#µȉȩö·•Vøußá:¢Ö£–¥æV¯–\ËT;-qkãêq ôâÕËù~tQž«êˆÌvX B¶¯âV@ÎUãÛ«v!PÕÙdà èáƒR[ýQjR jk¤Œ?w … Ð'²Ú«à_P–sBïØW5GQ‰ŸJ>OO<_UKáF$ ÞH±+ˆùÄÖ¼µ}Jº[د·IÔÒØyz.Ht%Í#uQqHŒ´;Ê™·Z3GÌä#H"  ú ,œSyUÇj"\=útþ<ãWjœu¬ÅåñŒU~Å|T9u÷:b“nƒ?Q9([FÈû,ŒD®†hÊgÇt[¯„´Ž­;¥«X3ÝörG <Úʰ÷¼à€` ¶ªSá}• ÌÚú9*»¢¾*ÃÖ£ypMgFU×k_<-tUQ)Q~ä‰ÔV6:‰Ò¯æ]x ¯™×c‡½fñ¸ð1@À?SaÕ `’ BÐ~p;ËqkMòM5Q”¢}oÕˆï#-jX[µcŒ6^܇zu<–ƒ•ÞqHvÛlŸulýÈ–×SíUöew òT]6K_uzrÌW²þƒËZEž*’m° —3öK¡÷G+ï­‰êæÕG¯ÏŒŸQ¯Í"y“áµ#eÃylšP`-^IiÛ"z,<›ª*¼¶òtºãåÁ?Úµü‰Ò_­ßñÙEFHãi±£Ø‚€-§½l8 »‘á ˆµh ý±JØêJÚ<÷¨ÎsJ"—3óßw4··–¾ÛÏ$Ð0?ÓÊó5£ cQf4ŸÕ¯W$þU¦ö›ÇßÄþÁ 4öTØE!PϿ̎)_½÷3ŽS$Ù•„æË»¶K|›´É!NÖÌ ¼< O´“×tÕݰx6¬ß¿ “£êSàÉl,5¾ªWä7[Ò¬JAçÔÕc¹ýÝ1šR6J¢ðšÕÍ?Í'ö6¨ž“µžZÕ‘|­º±ÂguŒœÕþ¼„¨§s›ª¡¶) ‰é×ìR¶¸Þ·Æéö…ÙÍçò_½TPÛOÿí$&‡è×É2Å£QhZÓƒáëÇa¯‚‰Í0³#ö“®#ÁU ¯sXŽûVGæH¡<<§´=eÒ”Li¥^¨W›­y G^•£fÀ°GÃ_"$©´èky€í³­…óáùÕFv¨%PÆ×—}E¸ÇWu”Û¹×®Nú’§=¥=,ÛïÈSE;wa#Å˺†újñ Ý ©9ù¤8Ëb·Õ©ir ±–>2lòõÀ‚èP²š´G=8]Š[’»· nà áçI ¶Š’èУ0dÉÊ:QéàªZöêô_iZÂf¹O8ÈÑž‡Úx­¬Ï aÍD)[ÞW›?o7¶½,ÖW„ÞËñsbZɘÑä§o—ì¦B8D'8Ëq×áÄ'–4$µuO½ì=ƒ½:f à+&¤•Œ&Ðuš*¾6%ÿH,ñV˜·CÞTóSPõ‘æ¡h°å•×±lŠp·«¤$Â*×qy€M¨”=z¤þA¯]òÓ ]8/\†]‘™-XžºÇJ¯q,°”zSÜúAé¢ê±Ù>jÐÜ* DݤÙKI¥5PµÊ²k\,RÇê`J]Z;f/_rà˜|¬Kû댾~8kµw`Å¥t5ŸùMÕÂùÒÊã+,€bEüÑÛo£èÇ­Ùu–½ÕØrdç¶d­D" ™&€FM¤Tb'¨ ÇÅJÝðÔ‡ KH Y]C8à•ݪ®îWä“Ó•Eåè3;ÂTˆÇÎÔ¿w¨ÅB¼lß6[ÅϹn²ˆš´W¸Ïðá:c»@¼xú/aBöKR7wö$ Ðb$ÊÂpäc¡ º46×WlçcDCV`©£~òU©E{/‘³çÙ*ZT ”t¶’ÌX,EÁ,‘íŒ$Ÿ[q¡‡uÛfV‡‡›®p¥/s1~174Ž˜WîÀ¼• eYZÃ+KÆe!uû²«RmhØÒç×m)Ù-Íúc—õãõ|­›Û~ø§· tZ<çËŠˆ)†@X]Útx’°åb•wÝc[œr%9§`ãy»rÅ/‹We_ûˆ[—{«aI»Í­·£Þ'ÙíÙdS¤ –÷â½cé¯Ìñ€xÙjƒ‘ÚgaMòrÜVuC?| tx•Óê1_Mÿ7>Š¡³ÉRŸeäH}W¯-«Kѵ¦WKaCïQé°ø7XyUû…cW&X4T»d­ì¶Z `BÖ&ÆïáÃ$©<|Ýd£%v!Óžî^H=0Ø û¹´æc‰Ô@èï·¾Z¤4õ;à´¼ñÐ":. ’N³Ö§ll˜=àêÞNE¿§3 ÞÐìF ã _ûá,£B¹Ù7.×çÑþ˜g¥Iƒ2VúÀ[h¶çë“m‹:ûþšõèÌ-]w‹MjÔ¶²ÂTd°à½hGd~>íÙ(°Õïâboû®9Á8Ǫ~L?u™É ;Û‹Zfõ¥ž¥ƒÁ,ILJíZ² Îf$2’ªÓ‘n PŸí±¼l5´k?bKDcÅÙÏIf"³Ì>{:YßzÄ$V.šW«ßUTʶث1dŸ É*’×à†×] «j@àë¶ñ’n…ï^KôwÓs\‡ {5 Ò`q{Ó÷¾á+°ˆ¿¯ö#€ÔT²¶‡¼~»Tëæ½sEŸ åàïÇòx*ÓåRýDÇÕÛ_ýußTí“ßnr%WT¼ €PúT%âó¨KWm»å"N°'€"5ÛÎúj,æ„AR¥ ˆü„ã2HSi¯¹•‰Þ¡¾öu‚;¤A÷Xm·ÖÀóúFéŽCÆcO?¡¹dH\`Lõ¬ØNëÚJŸÝƒLµuÑ3íòÁ(•é¾%°‚ïFp6&yÆ ;°¤xúo>?-!tÜßöñ³â†€¼ªêÙ›~±aùµx©ä#×v÷zAËíRšúì(Ïûˆ¶V´BÍÛWdM Ù zä*Ë„B{ ÏsÈ¡B'3 »&£Òª}w­KškV¥FÎÄ?—e„·“`xºa; /~¨Áj—°ô»?îÐå›ëQ¹¬j«ß¬‚äÉÉnÕYZ·“â!­±M{·žkì)AÞZ¦“Â;)¿èÕHÌWHe¨™ÍÚ5ÚʇÙãž×¶¤B¸jr颸qßz©Z OŸÔIJÅj%Yêº-¢^ Vã]Eè×ÈÖ:‚½—ðŽW3­f#/ÉñRn×ÏÎþ YÔ4J9›j~6í]1=J}ª¶~P~={ •ì;./[2 û„b÷Š÷Âêxæë¹Þu?!>;·ã£w´Ö¥¯BPXKÅ#^ÂèИKQd¤w@C¼X_Ue•¬­ó`•ü¥Ÿ]l}c)樛áuÁFa»—ýÒŸ™ÕygÅu‰@sçZ< ¯­'*¤©fJYáïVAš5¥#Âw©öÁ6¤` 4+í¼I}t¾ãÓ¤iL¶|äÈÙ1’„R`–z27y!t§]>½x…ˆ×õó1Ûät®ŠlÞéÁW7Iƒ ?>ް©d³ÇsÜ_bÕ–¢•’Íd}[qÄŽ êã{,0Ÿ°™_šûÈê\9 PäÕØhê:e5¸I×Ê!±àiKXà1y5e²óÝuAilg­ÔÔ¥|ÔvÑ€(þØ(ç(‰¬6ªMÖ2[®(?y€Ðx±ÐíÖjz~`aU°£FÃZ,¤#JÈ&(Ã0Š È\.ðGÇ#Å*^5Ÿúìƒü*L¦†„©zpê>Â#B•î×Ѻzp©8» 7(×´„dŸñ–Jð(A9f›d”G¹{»Ó¨R…g:>Ö•½•pIÒ¶”Ü è^%1nÆÊ§}S€TÁ±Ždm XÝ˪œŠ/²vÍÆUÖµ"¯|º‡¤Ú6iñf“~îÚ~„â QMçåìМô&A¢®74ÍÄÔe,%út‘øÙߣØCñ lAÊ¿µƒÝ¿2»J@á_Áª¯}P.ý„“‚¼"ž‰î´K{°@Ï@ ¤çeT+Ôn@Šî|·®L’xáôò •UfÞìb{š>û7³ñÀO ¾Ì&rìå$Ðí„Xíz›ßº± Ó»:•óŸ™É1 ͧÌ]k¶¡_¢W0„ ¤RÀøÇN×› j×¶Å«¢Óc“rhIå@ ¾äÈŸ” #SW]gGRÑÛAÈã€ðp@-åÒÈG?nF@ŽÒ}Žý<6p5ÉÓÁ œU -tff öµÎ 1ÆIU??ê9¯ÄäTϱmÍ¿£î~ö”°™y,;‚^ìA½œÃzÎ0)i‚ñȶ¬B Æ9Ÿ×Õ–h|Ù$ z4›|Û€}ûïœu³Öa–ï^›R;¬4Õqm8OgÚz_·Q[޲!0î꼑¦'%œZ™DÖŽ¬ 4§™žµî“%ý~·fuA.ˆ˜ÝbÇsE%ìß9=M,\Ïü §šÕ­Ødë9ŠN¾A»ð1N}Ä{jý²® M9…Äž)4g =öZÚ¦Ê7z¨©·Ùj¾FÕ÷ÔñyêM tÓL¨Ì#ŒU-%êI"7®k„ØgÍÈ>OÌû10<[Oð:rkë#»A;&h‹Æ¶¼ÓÀ¾ºø\˜±)|’€-˜Ÿ–ÍÒkºr´Á#‡î<ùú"Å*¤òMx3;nØïTãW,KPבlþ²ÎÓXFª6ÒV‹–ëOãEàÛEc–¡ñARY:¥9›œí¨ãë  ;îÈ¡[@4Ÿì9»%å˦ Â{UßûP®ªà˜JÍÀ ¾<œc>Í.N^ÕãY=6øj½Ö­qžnÖF! ‰‚¦Ÿž<‚/¡A·5 }o=W£>ÛT ùT…«n0÷ò`ÝS¡d˜å•‰È0¥=ߢJ[$=ÃßU$-ྜ¢F í– ¼ÉªyÙâq±p¨F? ‚*ï8aß1©[Ò+Sýóäi»HËY û˜×ÒL•÷×o½EáL ¼Ê»N¶®’d4&Õ:IŒTØEjÛVM©ð¥¢¼¶à˜Ðí+0V@­‡ãíwXÿcœsg#ú>3ÒÁ:™5š<´Ö ‚YÒGÆjLg>S9å-y(8úúñ¶•™¯¤1<ÀUZóØ`P´3 x:”ûiU#?ÌËæ¯ª¾¨ü±×VN¾kCkAT¶j<@Rá`1q‘$Èë£M6Èõ4yÝ›çRoÎ>¨Âgz[,áßIkø÷+ ]@ðé²C‡Œb M×´înB ÕêM’ª ùÓ 5Z´ÃÓš@ý ™I5é÷áOaÅstœGKl,€V…éüÛã[:µGëÅüذ(ëÖñ<¡'zÀš•=ãªCUà"Íif@¢$¢+y‹/[g½ì…y'ÝæÉhò&b&¡#j!fç=Pìxl+Ù<Çb¨}¾ñ¢öFñí­“U’myÊ.Û`7i©DZaôGEÌT>Òù¶¯ð‚,Æbc°üÌJÒ€VÅEÞ¡YähÊoÀ»°Aç ­Œ WK!¨ê=`¿Œç¥wêñ9'[dSȹêÏÒS\¯ÙeJXãCŸü¨g8ÿÓ ñèz ‚;&ËG|egß‹¿ÞÕ Î¬³±®]š†KïÇ´nßÍo¯µ€wòLœü‚•±Á¬#ûsâRe½’dëýîïz¹ã$#9ç"Ë~üÛ»×)RìñæÍÿ ïë@´²–Ήè¹ö•xp=‡ÊàeÎó§m«£¡štë¹÷½˜à?´Wµ™°>ùú~f·´¤9ùn#Mtmx ãRцf©;äi9êIŽGj½Õ~9,üºC~Žu‰HH ßCâpß½™Y?wBÌ9uÞ„‡›¯æÀîë$ í©°¸™É|¹h¬ÚX-õgRSg@Ï»j kB¥Ê¾Æ2 t©êɃqngé‰Iv9Œ3nY›‹5½FÒ“Í/¼ ˆóh=S5úTjÃLr4;âãb¡ ¦U‹«­@ ÝFæˆ.Ö»56M¶Uë†.ê)Öu*z\uUɦ)£뀷à4ÈÙä R½m*Pu0 j"˜xèý²îì² ‚‡C&¸çº³uøÈ{˜NPh¶±uÓàîGf$n¦£­³år”~)PhÌËÂð;8¢–.=úbÔi(ÙÂCv‚w„ ºŽ¹$‡k[¶ €]Øæ¶Ç1ÀÚnÒ»ã¦N£§¤·FìöÍ*!L²ùÁÝú"ZŽ£s­Ú=¯s²¨gÅ <ÝGë9¯yYþRÍ*úd!> ý@ú¦0/©YÈ)„uO£nMìw›,岙ʶžZÃ($Ë®‰ÔpÖ_Ϧ¤rs8òdd=äÔÙì÷Y¤¯Û+j¨>U1_§àe•r`¶h1‹È¸ŠãÖ&îäà ÊúòÑJ¶yšWˆnA^5A{ô¹ÓÌYÛŽ÷¾‡DôNÖMRÜóh8Kxð¥r!*6–—r4>lß²}t{€Á¸`<6ÿ4xÓdÕ ¯ráܵ¾xz‚YÃш(_òÄ­z#è÷êEUxÍɃ³Y„œŠÊ .ðEâfôd­)§Rþîi Ï¢“¨—MîX–´r6V !z†Ç±<›Ê}Ÿù§è”lp8Hƒ×ãTõ^–ŽÏ;[MŠÙbìÛN²^+äv–ÁJË?}è·y}ñx_²yPâ„ÌôÔqK©—æ%v¬*ô F"NÕ'Ù-YªhѦ Þ'±û¨ÛŽÞ$°â¯‚Z²ZrÒŸ¥ZÒPH¬<>ôÖïœMÄŸ—Lœ‰™.˜øe*§iIÔ|¢‹Ôá÷½œ±™vmšZ~û€#°ë }:tª¬C eðߊ®Ëk†ó›ëõ„“|ÎGAÆBs8o?öÐ%¢‡‚ÉŽh'®ù¸8÷±l_ï5è^DÈM’šî, uÂo;´ªÎ°— Ô10æ|«Jú°äZ€¨­ÊÕ|KUí‰ëVá^6ÛjúÉ Ke»Ðȶ²Ú…ëpÿ6 äÖ=»;mTp[0­wÏlɳ·ÌãqŸójEF•ì§^ÚŒþPÉÏNVÏOÑçö®5µn?­—5•Ú¶À ëÇãÓ"Õõ8ÃÞ6ö“V€™zRþ&ÒùÛüS…Jë?&TZÿA¡Òú§*TZÿ…•Ö_ •ÖŠPiþ •ÖÿJ¨4…¿*OþÓ*­ÿm¡Òú›Pé…JŸ_~G<úMˆó_ˆçéyGz晞V<@¶z=­gü5¶v»´j~êë‘åÖ ìÈë]ö Æõ¯ðœ~]I÷½×öTÏ€ªe:ó× Þ¯‹•§ÅçÅVçÇEòSêó|5*¸¶OÀî^øv«öÆ~U¿1-¦Šm;Í:aïG\ÿµÔ¦äüÚÖÿŽu}3OP¤Np饇pAvU»O£ñÕ“¦ä–1Bq2ý±J‘¢vĤz~à‚U¿ÓÛ¶®k‰–-;±kÉêãñ½ÁNª°Öê×C¾Å,%…à<)MË¿yCÔ ¢îÙYL6Ê6 <åÇ®“È[8šŠÛ’¨>¹¬g[8<¿“¯s*•¿´<ìòû,õ;oaòÓêÞ³!ÛO‡•)zÚˆªfŽ«Ÿ>£æY’â™Nv¡ºüq\ükÃ*ù‡B7:À$O¬o¾†9¦Mª}žž~¤ÇÖäO+¯qY™ŠÑNõ6ÿßVm•™y„®Á›Îâ:Ö a=U¾s)$îðb£;Þä©ÁþNçì¥[$º¡9ꋲOY(rNØëµ:±Ò­ÍÛ•¡ÄÖùž«ò½ ˜ùÌ-ÍÙ›{©ù Ÿã,p8–b¯Q—۪͂ mC’me“ðÁÓô×QÛ ƒ z{Æ[­·³Ò¢ÖÞS §~9uÿ±ÛøÀ¯/ïÔHx–ÃGü“§n5©-öN{•”p!%˜ ögpV›¥ 6 å/Ô/òpZh;ÙËÏSÛ÷³R¼ÕbÝù>˯S®ë½´¸]OàMò¦ˆ’ÃF¼×6[M²6ëharSõúµZÕ̵S®Ý¼¾ñ^ZsÙ.¦Ïô²¬5û/>vþãl¼^©¯î{*¤¾N=´”Ô½ šåtíèÄ÷ܨ!¶+›c•<@$U=K«75fÁhÍ«cK‰ÆmCÕ­½Œ×žÎ\”’•¥Õ§}£UNö·U4gýî¥c™R¹pùËi‰M–ÊK]ÆíI>;i8¢f›™ÃáÙÂfá«° Ò–ÃZ*S}#e}½<‚àËóÂS‹×z~=Éš€¢šo=–ŽÔd%*&ÏÖoÞSêÙƒ+ <†|ÕH»š]„óDŒ_ëÕÈ͉45¡1Ó·n_ügäî÷tð,–ÈO½:áD-ÆáÜóôÈ^ÇjD†¶Ïùu‡N_¯¶Š|…DCsÒâ8N^ÈÑ3L¼(´¢,ò­¸Œ>èK¿;vxp ¸~Ú'÷™éÓ å᩼÷EèòL|qåö½ÍÅsÓœµëÑÓ8ª¬ó6^xÌ9?þý}ßøöÓmñ\ª˜Õ›\w&X=ßcïÎxd=Øí|ywÄ™Õ{Ü_˜õO½6Ø|k&µ“†ãÉÝý-Ñ]œË„K¡Éy‹ÃJÛñÝfõ:N¤€™Ýœ*ŒÝþKeué±| UŠ}»Ž[‹9Úˆ<”þ³¨í$Wà»ø„aß-ý£Š¯gZöMªB*ôz$ÊVåEiß÷PÕSÕ¢¾êBΛÏÇÈìï°_·Fvœà)ù°4á©ÑÕzC˜b§›W6«J@N1êvËB6} žZe/烻NËÍÎÏZˆèÝúkVåh;NÓ´õöS]ÇNë1YñØÑËÕ¨KÅ"³u¯* kcÐE™ef㸽 ª™Nî›Pí3 r>ñ­lŒ—´g˜-(*;yŽ?)å¶ÆëܸðÇv+æ]H4K嬴X÷êö0‚ꀗ| æé¼Õj[”E\ýÒšCa‰\þ‘›,Æylºjdm9U2sHß>“€ÑÉ vý{Nå·bŸ$rÛÅ33k øê3WE'OV{jv‹*å¤> PûiFÇICÃèø Þæ¼ˆž¬ün(p|×¢èþ@)Jß&%Znv9·¶g 5ç?sتפۥ°ŠóôCX`ÛÓò톙ÊvµØŠc³a8Ø©ˆR-*°Öd)FWÆÁfO±–µRUýŽ`ÝSÛepü¯9ËC~n%÷>=$á?M-ÄT¥C!îÈÓñÝó?Á;‡ [l,Í6qxbæÁ›`êxpúùèy,?UOÉJ¨ÖÆÕhÙùÝÖóºØ…ÊZÛMe*ÐýÉÖ⳩™KB¶1"Q,±N³fÌ'‘š´ f÷°gœ4çk¿Éš­jWÖs ®¯.’þG¡§äÔ©]|àºv“IåãÆçVåGY%½HïÚ} ¶òbŠêΟ"½G!ÇSÁþ8Gà^8“Úºt©¥F8Ò\MD#ÞžÇ8˜šºA:ì:¡¥y_¸„mj:7™’² ¶ù œÔ%ÎtÀÐkŸMÖ@vÇ]d"ä~¶=ø€8=b®®õ¹Ú§÷8OõjNÖ¨ô<‹žöŸ-u}ÿ½xÄMs9p8üÈÂôx£Go„¬Í ¿A <Öp<•àôÏ‹ÐrY¦¶auTi_|ߣÓ7ÌîÓ •UàÏvr~åX¥›³jÞ÷Õ=±r¸ÖéîJ.mýH±D’Üüô…T U(mDYE™ýI Q÷/š.͆ž±£v1Aüz^v†ñHI“¼¿ÇVɦ(Ít²†7x  Ånž%¹øË_"£õžë@÷^¨+`57üÙfcöžÛ pz滤Ûá”ô¯m›ƒñ×3*Õ3A; —[ˆ61iS©h[ðY[¸Ç‘ÜòÂM¸šI]7‘i†èEMÛÆ7(‚Èü8áÌ(Qœ{o**÷Õ‚ŒûâM ÂVn¡ŠÓ¦Ì®°¬&Ï^WbžµÝ¥¤£a³ýÞ¶£k[>\1¼ê7Î Ùälã%rªFª|¢àÞ¶Á® ž§oÙT¿NMá™/ùHÜž_r}@Óòt0Lß9Sä=¼šåæ™·ï/ZƒÝs­]¯z¨RÔ¥]sž¡þ·ÆW‰Ñ­µ`ìG¥,‚IU'RœÉîš-9½rW\¡8œÀ‡¯ð Á.†m‡a_¯¢ÄjëKƒ@kf'çÅ®®žÚ‡œ5#žAkhÝ2‚íL%-È,+WÏ×&º¢Ñö|ŠB°º¬ð|u¿ÍFµœtûµïŒ¸ \R³þËUíh`ç ³zUãG†]oÚ!~1ë+ì±[w*\L¼­¤àÖew³•+àñ\úÖZDa–ÈõÚ° ù_Ôc«6µ#É¢í¥Ž§!MÔóèéwÛ¡ “°tÙó¸•y’ óN5d•l ÷¤!öQAÃö‰+OÁŽ ÕoX·ÏG÷Ürt nû0 )*1’L†â´ÊÄ9ýœì‰cŸ(›Çwñ%à„¹xê©:âÈùظ¦ø´Bº ˜e¶æ^Òs”ÝÝa?Žkfž‹Ú8‡þ/SX€/ëVºq+ªÜzæ¾°ÒºEP¶ŠÝLñ@=’«¹_Gu›Ó_)˜ß+Ù;«D?UTì5¸ó÷´˜‚¶×ýÀØ.[']‚ÃYfXv†ó¼/‰qÀÐÉN2möz«ðb÷ÛòTx©)ðFEê.6\·«zN°9@Ë —G_\ûcG?rƒ‹ì#qé@4!j%gÐ7Qæ€r`\Ò«®O¤–K¦x18 ü)!›Ýa@øl‘ÌNB5].MγOÝîcrwGþYq6zþÜ’ŒÇ9&¥ µ:UEzëu;ŠHì®/¨yÆôþÝÌ‘H=²¢ Ìou¥ˆYAsX„ª©Àë¨Ýõãí¯¢ÊÖ7’U.nÿQš·èÿß~´æqÿt¶“Ê!°Ê÷êjÝ«^À¢±G)‡õ³¾¼ z.=±Û²Ù½|‹-eÓ(ÈJ¯ Éa¹Vâ"CPA¡Q'‚/ÔóÕI%ÞtJ8€½®ËúGj¹UƽŠsŽ¢'ë¦úfíßqŸ>Ù˜ÎbeE”íSn7ü-›ª±³*H§öâ6À;ÅO¿Î¯ûJ¾í”±•g7ŽÔÅ1ÌWt¿ ×±äÙ¯®³}*Žý(IÉ×Ýó ð€=dv¿}ÆÐ¥äkfõ’¦õ;§ìÃT¨­Ýš.¦ÁÉ¿ì?´¤ÀôêQ9¬—ý\¤"åÛÒNù¬Áy»ö/QCåUÓuŠ]øÔ*{2¯~æ—ØÎza7¨†òNèðBýŽh¿:’BöáÎoí³­ QÁn¸\Sådɹ*:A-Ç£á  ÈÕÝaû—kZ6D»+;g~PvÌ…SÜüòŸGÕk[<Ÿ/¯Àyý Jå¶QqÇ‹#šgM~AÝO¹|‡í¢™l°qÝ¢S䶬ƒë6„'k…ªœÅe .Ÿ}«’”¢ êÀ<ª™ï£lÛqHGÍ‚¦:i$ú³R_ý8šJž{‹?•vŽ/ì±DQîùV Õ!¢4ü8ïÓƒó½K›oÂí7£Þ—ÝR„ ] äa>«+Mq¬º†¯*ldlWS¥ ÷ð+—ݘ*jšZ)ÜÁ¶Ç9ØÊ®3 Ù¿u_xH\)DI£b˜Z®–‚Ó*P–À ýŠ@1—¼QÉ?éKÀ]^¾Q%qÞ­Ãî`–.YÎTÛf‹'KC©P’Éí¤«¢ýCµÙÛ©æ[\–?éJ°ïÆÔmæV%‹KáT‰””ú„ë@uêcG¡w‘{âá’§–ÅȰ;|\ä‰Sv+qŠ221’ŠrÇæºOTRO‘(Èž p$pÖÓ®WÙÖ=y ÊL9ídÜrˆ±¨PßdEói‹ãa(›á´žhYÑoà’•~€ë“?½¦:‘Œ+V‡®™IÞÇ~ùy͘Nz©ý¦xÍ¥ R!#œ–ô-–cò²¹"àÀëSßÇߦÉ#€QnOgŠK½|°êtOÀÿª ‰çù+øvŠÈµõñ(ýèÎ?¾+ÑØݴÍ&…iÚ2ÒÁ÷¼+ÍÇáÖ‹xªÁÓíÑÀ~X8âo­<ªy‡l¯÷e©ßVdÀ ÷À MÉ/ ug5ÿ'?PT$•Þgtžä®ÖeTrÀY6V'ÛA¨»Yˆ,y ý£XySÅm‚pRò@Éq.KÕéZ¼Òq=‚p³ IÿÍŠÆ{'ñà0l'­ç4ýÒ<®ë£ ÊýL…}$Üë^jì³cɰ>•gÈõêÑÌ”ôáQ¼P†uWûFOÏœ*‰­ô]ì²ûûœEéÝ$‚Ì—36HTWäukɲHm,ýîT¦²:N€ªSµØÜ8‰dc Cg¬#Ù‹ZòMÃÀ¯»/‹ñC<5»œƒí,ÇX åŸÍÆ7` ©ûiwÄsZs@Éþû|í¦¬æG.,ÖƒrP"B…ï#® |$_.Ý3èDDŽQ\ ¯ç~€8€ñèYP…ð½Èüv7f§LT’‡øióðãqV¹¼ÝžßA‡”ˆ®v00›á|¼ŽWÇßõØ¡ò訯e¾žÕ|N ¿uÀöz1Š·§´ä@*÷írøl¶YG§##Âí„v{U±ŸWÓ³ËãxÛ ¡¹X2†#ùG¯À&ä¾Ue <8{s±û¾´[1HÖ¥ÃË»~Sü~”½=]QÔ™^l]õŸãƒÇBåq¹";kÕptrŸm[1!,†©‚iÖ(vô£pö­ ®*llä°<¥ äùV4¿Z0m¦}ãpª‡l¤úè[•°”ªKùìoŸjud‘\=dÒƒÖLä³RœÍV[F– K‰ì¢î€²º–¥9ÕÍ(°VU,ÏIxWdF5k³¬õG‡„)“Ý1Eö›ø¶¡Ue­|6ò² zß D0»vvð;„«Ò ßb;? ¿RiAö–Ú8¦3Øí¥»%€M-ö·«ŸõÒÙ*\-ýsÔp«PXQ¨€0¯(c$ãƒÏÀH0ÃOï’ÞåÐæâŒsó«íÔpƒ›ÉuªgËÞê˜3ÎZHTUn£äiI§Õ€ÓÒxﱯó"è¥(‡u|MaÚ½5…÷ô%æ°øšÞËS[•AЋwV¾¨½¡¡ä*nªL9:Ǻàªã÷ýsð}Ñ6@ yMGfý(ÉîœW‘Òß"/è…õÁÁÿFvÀŽA¨>Àˆ ?V4SHIŒ†öDžQ[ƒ4!'Ï&^[¿›Wë¤aíÕ:n´Vß OéV©øI¶® '$Ö¨ªjò$î˲ϩ‡Ó;ßq>µSzVxýû~| ž®SG=ö‹?8øò‹-bz|ÙšYÈᎨ¤•âF×o%C§Þä­Ó)fã EÅþ[ÅR>®xá„?Àµ•û¯“ýØZlí:ÔÔvà~B)­i4“§°ÎpØäÌ‘3a=ªîÍ…¼6}¨Ÿú9w¬Õæé ÐÇ«µº¯¯Ð´´gyX{¦ös•_f£æ×‰Ú”%¶°Å³‡ð½ÿ(ó¨ëÈâÙ–N£ÎT² NtLàï|Ôúœe=Æ¥¾¥3e©wå¨âuLc3l“ïÈ¿GwІÿzfæÙNB r>³èŠˆ÷z ^-i'_¤&ú=©±²­EïV `ü¹Ù«ãœ2»J¥{¢Yÿqÿ¬å>ýHÍÙ&ûÕ<Â!%ò;#6v“Ùtë°ìâîH¡y!iwõZÒuÚÎ`w>ƒµÑ#høËÌÐ]`ÎU-Rø‚ÙênK#yã®ã „u'ˆü~r´Ç¢Cà0^·#‹Ú¾Øp£÷å`÷¼.ÙÉ ¨×½éI)¶t¬b0ä…Ôçn‡tñHÁƒIóC;üm:»”ÅD€m·¦×@ZPzH[ ›j1Scè–Ù·’îÎÑF=K5çøÊKn$í$ǪöÈ–—–]|ðXÂÈw4–o­GtÃd-7ÃG¹º[e(¶PF@çÕÀJö84õ<#è¼dîaê‚—íBJV«H «‡í¶.¥´ 15ËÍXEŸ]?l+R¾^ÛXØKd'è4t¶!°¦úDYJ@kR­ªôð5›“!qÙ åŒÐ8šæ~ÖÏ;³>„"A€tݾE§n犈¦·Ž½ÉŠ~ÍûÇ®L—gÙúY‡a]&ÛFÒÁÁ-.d€Ôôè‹cÃÏÉ­»îœãjÏQH0âÞXCåB'u,¥£5}hA) ”­v,Bº§¢¼Á­XcV$íi|*±Q_pîGr÷xÉ"ƒæ¤ïÖEÕÂýo‹©ØT´ TèöRØÃ½,Õ¨TÎVyÛx6<,QÀ»·›£ú·žþ°?g•eé(«"ážpƒBɳ¤¾}œ)í¬âÎÔ,¶§” ¢,ü¦¢ciÖþ².Ÿ3gõlM×–Ñ“u‹¨‚ ©Qo¤D ±MKõþæØ'Qézv•(·UoÛ-‡½–ØS÷Œ°o:ñy|`µ¥@êí8m‚‘o-ë´—¯€“ûÖ‘âƒÍ›x“š.ýžË[^à¯8|ÛÆ[`ÛNï9©×O“ÈôXp{œ\y¡vRªë}vBWÚ֏ЛñÌÌ7l•¾?“dàÅ;µJb#·'Or,ö"`Ò«Ô©FëVpCÕïc·y’©cú[ÕÃj-¶Ä~òœ§ZÕLA{»“ýö¡-]Ë•O(YÙ j þ°ßÑi_¥Òû¬(C ‹¢NÃaÂkuçauζRø*Ý3”µoñªÕqêÞü5o€LÑ?nËΤ:Ù§5ê”ùFn Éݨt§Ÿ 0õt¯|[MÍ{žñ,%1£ç:Wsl‘¨Qx´ Éó}yrQéi{’Ay¶[´â©îiI&ÐoMn§¶××Г£Õ _ ›®@ zó8”¨öŠ6¶l‡:KÎÀvÖ\°r½v* ÝkP_Šü+×ÈZ}O…$hÊ7‚qƒ´^n¥ä¢zÜׂfœE<ùX’g´VN¨\×ìý4÷(3ê!!Ï÷ËÙi¯ XðøÒîÍbœkõø)Ðå mÕÄð·¹®ß>àŸ8Ûö¿þïånãoþ¡é¶ó ’ãmÜÙ¿Œù6ßìÜü—ÿÞ 7`í]ÿùM¸y«ÿň[Š¿üÙsß¿D ï/ðí?Ù 7÷kÄ¿ÿŸ2ãögñþ_ÂýÏcЭÿò»¿úëßÿåÿ¨Q·u$z9•ÅYz‡òÝÉùp5[ gh:ˆ®dQ®êWeŸ/PÇW…kÕaLZ€ªhÍ^µ´x ì†àùÖ[á7X®°Ñ’N…ݰ•7Àµéé®->~ Ì«Ä表f§wyõ,m9TlE̶>Ûï}ï%G³C6?ß›¸+.aÃjéü€¸}yŽöÚ¯ïDÂнA 7LáñèÔñ–ŠÅ†£ßâÁÑ^—?\uEå©¼Ó Šz v'whû‹ÿ™ÞVgy ˆ¢ÂsÎV8áŒÚÜFp¶&7\‰í³ ˆúØDÌUDÍ=“êí¤NPœ=έñú<¬ßׂîÄσöœè°o>vºßòæÑ@YR‘*Z¶3êší¶’ÌKÝ åßþVZk=?À³v°ZXÑ«Rëæ¦À¿mE^‡*_wçÊ¥:Íêðeg”¢Ç‹¬œÝêjö§«Ë³ J°è¬ä8 "cËp†/]PóÔv…®Ÿ3›§Ó³œ•"Χé}-,'|²úmÕjü÷zô¤4·^Úž[ñôíyn{)4FqÌ ò«áSƒðâžþ‚Æ=€:±^t^9Vý_<¾Kw£ ŸrDª3ê¬ÉŸÃ"‘ž{èY·Ú!«¤]áy[~4v ?J÷¿œ:ÛÑEÌÃÍö9wõBÊù ì gÅE‰ÕZ5Ý ÷Q6†}Àn­ OZ÷-*àªV\¿]6©uCß+ma÷kã›,Í7:ôŪŽz·Ûù¤°Mle½Ê²G…<¹.~`§Ke;ù¯¤µ>[NŠÂ?ö8gY¤ôIÅàæÑå]3ŒèyÊa–ýVj—'–õ IkEÓµYsr°&à¼T¡,[v[ƒ©Û#wPÓWÅ‘ëô6YÕSÃû™ºçYn¾‡U÷öÏ ñÊy²²C‰¶68÷}ÆTkWš1ÚœøvϦ§àû,_Þ$ªöÍ)ŠB7Kk û8µæPÙ.¯ÂmeÖù[Í‘íMψ]S¤`1 4üêvƒ?Ab¦à Ï éÁÓ –9 ›ÓáM,4Êš©„¥àQ^š®x˜­–Q#ôLþözÓ+ްt‡ñF;#w|µçÓ©òXHÙµ^Ö>P•BÒ?5;=¹ZŸÖYs§)‡†5±ºˆÍWXÕ·çìX"·ñêµã ß}<¶ïºÉêåHÝäß{TÔ×#úu_YîªÓÛÃÓ_ÎŽËôz.mû¡M-Úêæ¿Î—9÷Äçn§¿fû>du®d?lm>g:°ID|ò1%rbxlÖº°fÎ®Ž­Gf+årHƾ¦Üغ۰ñ‰¥ªÛøv$Ôtò–£dÅÞLÁ‘õPÖä²1Îòm—êæº >*Fv] Wœ5ót½Rò`Iª¢¥ –j䥷9ŽªÿiVW2‹Rø‰|¬I1Í n-×~Òλ.²Óå gc-`îð( ½t']NÇj¬7peŠôä·V§DžÏ>s¶mV–Aæÿ)ËØ ì %IÛ¡©)è²'Lÿë¾5zÐêåe]¬M×3¯IýB‚¿cóÄœh’ù6qe[‘Z›I[šÚÄ#Ó_´ê©ŠÃ(Ç·UÓ× éÄ!áo2¡.Töÿ†3KŠÿ̯’:{º…ù6ž?ã±2oëKvO«±€0/ki¦šÙä§v«ÛwqŠÎDâÑ£òeDïáH»Åác\ëýؼH¡Ÿª¦ŽEõ#¹È ¥8 Ø$lG‚µY={¨ØÎyøˆ¿Q•H0>+Ÿ¥G²£K™Õ@詎+UyÇn½XøÂCt²ÑÙ¥^Õ,Šã˜Ê¸ÉC%u*ˆ¬©ô&þÊ%ê_g_usÂ8yîÞšÃNÙ ÷}fÃø²é´P$d¥KÀ¤‹kW(•W»‚¬ï½µYRb9zò8ÛôÎ8-W¥ßQý=Çf̱Øíú%×Î Í.ÞÇÖ¾¸’îëQb)gË‚W‘ÝOX¿Ë­jUEÕ•5`U.mÇ:£¿|U°Ì^g ¢n¦ŠvuyHÁM Kzå^öh³ðnÏvÃ÷zŽÎu 1ÍbÒWpÜ)°«èíZcÓ=B]ˆõ¾Öbnk3Arßž:ÙÚˆn_bö¹ímÏ#û=*ÌNêož )ÊûFR49ý­›Z%¤ßµþ¨?MÚë`;‡Ôí}wç­‡•µŠøþNlÐ@ʳÒWàÏì¸p¼°]ôšë´W8ñ6ÏŒ {Ç™ ús|~T~?¾êi¶ØÛ¿-W·Y¬hoJ ‡bƒ­7ËRq‚Ðùjl¯(c;˜[Žß'w~$«ó¨ˆ¨M#€B×C2./Õ‰ÆðÙﻜüPµ–ô8UQrÒqÉ%Ïï"RÕòp¥jlé»'«ð¶c¤†ôðsYE% w ÐÕb÷Ò‘ÂÞVõ„¡*/ØlSê$–=›…@¢Õ!Kÿœ.죿ó:ÄcÑ~ „t÷¢Q^s÷ç›}ßÉä–O&÷ÙÓ íÒ ×G[ë$ò6>ð_lÇÓ3e%]Þ³Þ®<Ñqg¶Š>Oæ8=ŒS:ÁIÖ÷²¿äÖÇîmÇÚ×|Î+«ùg2°Æƒý=²æ›QÏÝdzEVW½†ã/¨©aŽNÝÙ. ÛÙuäÑ"ÛÓ¾Êg¥a_EñÊqËyU{ÿSÈlð=Cê㨕دÈÛžŒ+¡8_òÝ[G½»5O(ëuÙ¹!GíPì«õI±&:Ú†EŘ£XôñÌÍ!V˜«^6:õŽ¡ô<G~-ØE¾ìR[†G À€V[G¶¡ª|’œgµé<Äy4º "B}BœáýXòA‰œýÚ]œÍøñ8ù}¼Û—`3Ëúxˆú[™×Ç^ºÄß3~K°¸ õç¨K±¥ÀÛº=\fÅûÔ~ìq^A÷•µ_Ið®Uý¤41gÅ)Là¼MÙE]™”²Ûäš…Y!],t¶ÝöŒvG›íšU^©½:ze- v.¥ÙÒÚU1æN`$m)X±šÌ=ýlà+tAZç™ßÐ5À"¹Á®(ºa >0½ (×ê°»‘xÅ·úIS»G›&¯`s³Ú)|‘ým³‚Ã2d =$lÈNÏeáŽôLvcv­Ø7št¦ˆšæ¨K¬VÉþÕÙyHôí |÷rjSc(µM°õнuX÷Õ1‚/·n< }®·wà‰cV¡ÚíÚ¯çîNÎ|«gf³UÄÅÏ’ 2ªlOòIþH£ý]ËùÔׂÆUyê1Zí0Jíyîd“3i^]“×ù4ų¾tZf0yGhÜÖ2Jˆ¡ÃMöåæg‘µ=ÿŽª'¥ ØÉºÛì§k¶A]nÏظìì>V,ïÏè¡Ñ¡³-6Ѝ²À'œåž$´Åþ8€¹„R´oRÒ„ÝÁ,O4}³ m¯‡žêù9«¹<­–ÉEÝQ`jûˆ+\ Ð3€Wôtì+kÑúÑy»h§ÉcÑ-èèÕ¢‹¤ð(kLê~Í)c¾µkn Þ~„¿]w•ã!¿Cu¬êôæßŽ©°QáF:æ”ÆãQA ß2®øÕtG­B8át§$ø4¥™›ß< 4§ë±µ^¶óÙ7NÒSœÅ˜šRÁ-Ð wunM^û:”¯N ä7¦¾ëˆÚu«©ì+ðÞ†‰{½÷beòêÔ9Jê.>eŸŽƒóî/©·:x érXGs`gK_ ”<ÖÅ΀ Ùú*ÿS¯J‡`MK—óÎϾ×xO?,ô˜×yYáxÈëÓxGõa½lŸì¬Ð"M9!GN^®§z±+š®$öTV»è¡¤{鿯ªg꘱5¡¬©*lò€3¹bÕº{\õýt5:Ó½ý| dSGGŸ9ô¦—ò)ÙÖt³2Å=½ZW¦^.¶Ï„ïÀQœ oKi%2çk{ÞCªµCÙ£Œ¨ ôG­ üÖ|§>³­î4+Í!'~AC;öô¡`Õ~ai¦³Àö¼@TøùÀax ÝôØÅx³â«2¤]ê0út¸Ã ¢^ž¿"l§zjóyBûÀŸªQõ¹…—2ó[{­·¡G…¥8`·ŸÕ"¨7ì#V¯…›cŠóÚªÊýM‹È¥?¤ó4Ú ^^IPܬÈfÚd¯.SÖ§„}‘\¦yk{)JѤW·è¢ÅñKæ×Iš:Â"çµYßC³Á÷Ó°­½šsUY<™;Y³è^eU«Øì¸´ÌXÖÝgÈ#Ù"Õß*MM ¬Ÿ4{™g7÷ÈméPHmYWÀoLÞÚ«&¹Äqä^cmÒ{駯Y²f oy§6ø‘Ô˳´¦£b²Á{ÊÖYtgkÄ"úVâpEEK6L]—]Wí±zéºÎV¯åwCÖiº[K„눑êœX…°~þ°g÷Ñ0g¨d5ɲøÍ3„*…¡äŸUµé¼–Ø÷}vÁ7ÕµîSqtvúvÌ8ÑÕ—Iqõ¤2”¤N+íñ"á[7å“íØ3åQcîyJ`Ç‚)š A_µœ£ðü… ßk)©Í2UåÌék}¶î#õ@${ê÷†Sj ®Påaöž†`AõٶƦïÈOf¢ÆÙɳ ˜5¬Ë >•ˆÙ¯ic£Jå£8Çé¶W`Eµ~~æŽ ìÖóçÓË$è±`ZWö0‹°×‚±¬hM¥UN$Ç–µL+‘<¼ý`Hº·váQJŠ4ZÑ1Ò¬ËÞ(¨µ>o/ ¡òl†RÄ”ÉCbµ.pŠÂ#ðЇfŽ6¿ón’Öß[±xqi&ayq›-`§,¶è!1]'õá?•yĪ'ÒˆsäàåqýT؃ÚÒm%ÉÒ‘qm¯¾`^ˆÊ{j4$Û+Æ×8Í­nBKrŒBÇžyfÇ@ eñ¸EŽñI°ïݼþ¤j¨HÞ«j´Ü=]ЫÛÃÄA4ÛSq Qx&,!^Xäså¬Sçóç¸Ø@šÚók—Ó7ï?ŸAžÑ“HÎüél¢C3¯Ð¡ý¥Ý‘yû{ÇE(Ñbù¨=:;Í¿>ÇSÐɧ=Dð‚¨—fÖ—ƒŒNI§Yy¹º©›èäY¶‡&ÑÛ¬ÚðªcÀEÂf¥ÏRéN— ÄŽ‚UÊ[ çþ­ë9ToiéŠà}éaÓzܺ5zZÚH-ýÏ w¤$ZÜ–µvÙØ"kà­+×î‰æ]ëqv‚ñ,â8šÔ}oË_çqj(MWS溟@L¹u¯kPº˜œcÅô£Ö ¾4Q]UpkˆI[†O:eÞl˜N±E`¯&„X±m·ÀIðbpÉìsÒ½^Ù¹~bÜÁéºO«¬C€;ñ;)[º2|jóg:3šžE7eÄ€ lH±¦ÃÚ’Â9^?ròíMH «#a"Õ%uά¾ùÈÎÀ‚”rò}Ÿ‰ìæÔl ßÑCs0xÿé«ò\˼¶îÜlòU& 9Ä´êK%ÒYœT¬Lê5åwȰ[/Ý^/…dAªð^ÝKÞÈ:§RS«æRf%¶*^ð"9²cSàÄ^fHcÇðãx­š-§5,ã†êia|*!y~m¸YÈ‹úpÎ×ÅxÁÏÎ|¡G:±QËRk‡Í¾¬‰aUÃ…H±>دµôìáÇ¥Sª½þ,àªr§Ž˜˜Î£¬jI ^ÇËB,]WˆL%^9þ Fª;ëñî¿^À1ÒI!}«2¥>£Ú^Or yO” 2„ VH3ÉÉÚ•àVÙÄh^k«ƒ§ 9höèäFj rÏãκ÷¿‰’sÏ×Ñýp4›µŽŠeäš•'ê<ä'î³£W†“@†ÚwÁÿ(WdZ¬ïÚ‰Î+…EÁB&«²XæÚçhŒ¼4­h©öÇú´‰$‡}­´ d ½Äƒ$ÑC¼Ë[J5ŸsÈø*„£~ì§Ì§÷Vû…äZ6Î"†Ø/³UöØàø«Âšù‰wËâÊxÛ; Àrëõ¶ òTåáa±;ÖŸåí¦÷vø§”ûé"sFų• / ³|Ô‰"¥<: 9ÉÚ=Ûh~/w„£F­’X%wn§ô^ÛK•[>•¿'»_Á;˜Õšºh.kÝN0s›ªT`æ·qLÍa­ ïöúPXµ“4„/•„@p&t7RµšÍJ_ZÔÞÂ%`š†´ÈR2‰”¦æx=¬™®ÆRav£}Oy˜ÅI¼é˜Ñö‡yÕC%™A‘ãK¶×C­áûs²’~Â)_É~´ÈjåÍÉ*'¹À˜´È}?=Ò ½)kÙñƼü]\;D6X(™ÞžvÝ,hMÕÙPű )‹F3=MÁåQí÷ö°û*âÀ›Ô,gëAu!+++¾§=c~c~ŠÊζ’øŽ‡g'‚^Ÿú"¼*»SìãâOÛP˜ñø~²4Ãùslj¬_Të,Îr+@à+ÝÃò×5óñÀQæ'ψÐÁÁ ûgØÕQ=&Ɇ04§M¡R»ñ5 «‡dÁBí³ÏcÆÁ¯ÓV5ÖIa«Ä›gõ9!QÑåÚ–¹+©µ¢q»Ëꃧ8UõÕ’­DÓjß»±k $ü©)ûÚÀ &óÕÙrwd™¦nm§…yÈlÖaXì‹ÍŽÀ²f¾º4xÖΫ؄Ö=Æêº Š"‹‡ü`ÍžtªS ¤ß·¬ºÁ¯i®ë¬éô(ò{õ\—Ïx–›yøl´ª¡2÷4îc¡tÈ}ë¶Ç]*‹q„t–PÒ,j!K- `&ÚÚ²« õ©[$˜&Ep¢ë€¤¯0¯ïζ«R×®¸Å˜Í•dlìF#ðßêˆ[w,êÐÙí`©È½¶Ki:F[ⵃTÄɤÇjd‹G~ìȸ  8}¦m" Ñc°VƒþQ€ Îχµ­0Ù^¨f#éÉAå+Ueùr7®•:ýñ–À0¯EŽ¡¢`¬‡›æpcªpÅî ù\’uѸ›Šr¢ ¸I$ýŒÚTÀ¿F rÇñ![M±¬8µ9놡žïŒÆZyù>G Éö p#é [Q¦ÙƒKTÉ’çµÏ©»=Z·FÎßíQ¬D9x¼ªó·m¹pYV²S‘g)‘¶ Ò< vÃfîu:N§bBÇxκ2k¾ºÅ% ¢M*ñÑ Žø ÷mP†ÝögÎÇ"²¥` ï§ÁuTc† ¹×‰ÀÏÓßxYIWTI銱Ö&¡Mvò£—ºT‹Paž&¡{&º~Ž”°ÐÉ Ç-»évH䬽¥ubþ¸CkÅŸÇc*º^YkmE¡ÝÀ*@YÝ?Ò½0.Õp”÷ã{çf›s„Z܆4  ,èp´´-6 ‚k ÷ñ¹¸™­n‡•Dm$+]m`(×í¹¡tÔÃÜ´i½ŒÜ'ƒ½8¢¢j,ß&V±¥0À%H¼C•}‹.»¬Ñ³Çm8öHZ§ÏfI—åPһ߼ÕYR+ZÊV”Å€£á‘x¦ýj„‹‘?´Á ,¤üZf­o"Èðò•/Q£ÈcØhQïc°À>X N ޼Z°€J¡ÿ ƒý4[i›¶|Rá ±Ï´ùê{Êm„Åâû~›ßúíþÉ3líakÿð [û“akÿRfØÚ¯gØÚ?i†­ÿsœakÿ•M[,¿üÙãYâÿÿ„‡ØÚÿÏ[ûmˆíï±…_~÷—¿ÿ÷û7g†í¿žjóOøêßýÅ¿û ÷Ùþ,†ôËïþõ_ÿ«Ã_ü¿þãüwüóîŒû—2yÜÖ4¤<îvMu§¸…~ûs4Êz¸'UD%Õ _·…2¢ñ“ Dõs=¦pgôa˜ACú#+*æP¶½HaöíèÚ·§x=Í{!ÀÀp›ûr°Kmö´Å¡èOì0$(¹zçjLÄhk>oÊ£­OæcmÉÖ.Ùþ¥Æyz„О\·×:Yäy´éràe–fÆgßVï—upDyÈem7h·(‘¯]pV4m‡M.AwœªN¾ræzŸLÐõ;Kïê]½N޾!¦kÍ/ð°dõ²–ŸêV¾]ƒyÅ ßúÕÚ¯>mÙÎ, ¾ØzDÂx=¾©m©+)Päþ­„mìiœ‘§vq²Ðêà¡~ ýÚjÑPÆ•?§H^ë4ÖBmýPMÊkÓ±!”`Z­ÝÙ~E» ÷â7í¾Z_½t{œÄð½”εN Ø±¯gZ³éÚ¨<£5k–;Ó»]^íIŠýL©óåV’s#<°—Šäûk’NïVŽÇŨY9¼ÿ¸fJ³Ù3Î] Õ¼­dÞ69yVVíPãÑyûÄ2ŠE' ÚFàÆ 5t/%=øOwØ7Q˃Þéé‰C? „zø}.•Úºï6XDùŽeaÖNºGý?­WY \ÒšŠ7Ùh@zÇ[“›÷¤"j6c“¡£ÊçgÔŸ­Gô‘Äbàì*îW[Z×S_Û”ÖiÝsˆK嘖clŸ£³q«¬"U³kÔS¢žõïa/ØÝ­jóÜóñMxúu„µÜóéIãnæ]ñ<ˆbª\–mÁCF‰×°‰l €Ü,ej¡ÁF=þzu­ò1”Î#ÁÏ’·ó¸¼å#Ô™¿Ë!^ªë_L\š tê¹ôQ;>§¹¤jãHPú1ÙIöd2ê¡EY^û÷¹b¢Û¤nÖÔ²á€m?õ` Øvì?·hÛHWuchJ¥7ÚÛ={£¢Þ$„¡N\õx=•!\]˹¶`’Ö‡:EÏFxŠzÃsªÑŽ-“(1Ëš+e¼C»È~—®·$Á1m´Óú ØRÏ»ˆñxÀ}ù4­©„FxÛóÂÏŽòîíÓç^§k§²îB $½Ð¢B¶Ü{×yñö–ôù‹ÛÉd×S«÷úž¡Ý+7¨™´Ö‘¦²E ž¼ÄGH9Ïîg—©tn…,XCnÎó~Î3«ÊµzÉò`tx µD¾^Öø—ƒ^î õò?F§åº;@Xô‡{¡_M¯[PL‘ôjl¡¸*«²ìz[ÔCúVhjOðÖçSà!ëp¥Ù£R—êD( ¡ŽN˜;áë gÏÕÁæêBº²>"¼E°ôŒzÿlµCÔ0¾KtÈ>O“«@å*Ãdâ–>¹ÏöPý#Hö,¦¯ëøÑö@Y¥iÂzùÀ‚kMG²Ó;ÖK$ЦX$J­ji!šÍâ¨*‡©º05 ˜lsÚg\„žž®Õtð-Êä´Úê·s­«\®Î„:¢Óg–¸å6ݼ»sk©o_€&Oi{pµ—T§úÁ݇Ð`—<À@üJ¡'Çó?yî›gY.{m´èÀhë¡tFx’¨äRC§Pâþ"BèoXwyÆûéå–:KêR'REkÚkó°‰!¾¶€"Ó¯ó 6ø¥c‰ðª<«%Þ%XHöˆ•o€¦e춸?UKN[¸Jâ±-ÕVÏXAº˜º"ÿIWQ¢Vï-… ïMAí~¯.%±#f·{О®—E,$ŒÝôÀ¦~*“ø©œ 4å=êuM€3Å™|8çô¶ìûØ‚é‹YO÷ æ˜GõHþÎÃ9Bg¿cv¤g‡„yiQ7¯#L3¿lQàÝœCd RR’”hWš~.ÖHI .Œ¤& Ù Ø*Ÿ-qÁ†UžueŽzˆ>jÎŒC×! ž”Tù]ÕTuÉ Àͦ3ÃôÜ9*ï!±å½²C³,>ÛüÎ:™ˆ<Ç–¶¥bœ6Õf¹+“vòCD"F>¼ÆAæ½Át¦£ÛúE:=óo8Øž+Q~fëʸx¾Ë{M÷®cy¬\æà†ýëçU}G묟O©£(ÎøKl7Y×ɺ—ÕKT²ûˆøê#Ázž*Šê è|É>J®y ŸívÊÖqìÌïd‡L4„±«“E¨Wó£ï$HÛ©W$Z¿V AïÜA¨Àý©iQ‡èc³t³ôED¸YOli'{¡îã NúÕÞx¾vÀÕ3¿ÀkáQè µ0ÞΆýÍhb7k…ŸÏáhÜ#²8&Q*’ˆÖwØm«h{:7˜6;=yu»”ˆØ;ŠÞ£íðú—Lý&¹Q€óé< ZÚ&>L“·L0J6™©íÒì{a³È*zk=ê½÷} Ƴ ~QÛɹŽãzå|ON€ôØê” ãzG“mË›jSéô¢ÌÕ`˜YZã ¾Žë&ñ*¡s?êMD¸ fìórŸÞMÝBÑz\\áÔ$`ð$x3<òi­•—ùªûµõMa?ðȨú¹°Ùá+<;{~÷4"YÅîC VuYC¼!¡* óØq–µBÛFÙHk»n°ÇÞɦþEÕˆŒœ¥Ü¬¿Ø=¬"ºòÏ7Üök­±¿oýQì-TÉëg„”, "vä˜Dš×pÔ™Üü®ã÷},t-$ð3mZf>Ô 4²w^¡“5w)¯Ÿ…ðÉ.ž¨ámýžïÞ)@J‘‰ƒ9o-D ‘ÐvDrÅãÉÅ{=ÚÛÂ4y•RøîÐÖûãKI8ñt³ñŒÙQ,5€Õt€•`c-ã*Ê1énÇ]SõË>9௚[õ;n¿&¤ƒ’ p¿£ä)[<‹¢4¢sÏŽ˜ÞæÊfó&u_ãiÀ^<‚¸ê Uæ ý°¥úÙi]Ÿª~ZE_3ûË(óžñ¶×8R+¹pA,“ØŠÍbï­‚xè×qÕ:Ž$ºó*RÔ?J‹XVmâú˾2›é¾ýÂk‡ºl púý]ÄA¸Ðǧó„H$[oå|ȺÄv'R ¿^Og9¬›§¥ƒè×:¡à¾ôvlÊ”ís²ú:cê&ùé³5‹§Û­étKNó—cl–9Ø ÜŸv¨@XwvbNu³´š‚(DTí¸5HyX; ûx¨:¦SÕÇCwnuJfó2šnÎ☯èmG.-GQsèóætÙc ÝiÛ«êVÜ€¬<2FMß5pʨ¶¸ÝE²óPPX£‚ I„Kºßí ùûƒQÎOÙÀhµðÃ2]:-8ÌDÒ¢­óLõ€ô¸áÁ*cR/´¯8Š_§QÊÅ©C"¢%(¥Ê–~öêV‚PU…<µ)]t¢3`Ëk‚\2± ´=—~œd«îduâòý#Æz/ÙðN*ÑÙM`¶'xª°™¢­à rÉÍÝÚ™¼»Ù¤²çtžò¼ÞVbÓÿ÷¬â¥ÕW¥{§ë먃&鱩sJ¿åél ž¨3ý‘ð†¤ó˜€êýõh/#|‡äÜÎ["/ÃY¯>"¤ƒ d–ÙöÂxYQŽð÷¯ °µo®õ”‚ã÷+gl+}“õüyøµÞâi¿¯iS‰7v5ÃnQà c£EŵãIü;LËŽcØâÉ$Ïû U ˆõà‚¢õµ¤Ì ZiOõDH9$Ûñ«cçn𥠶,PˆkU—ÀØçÿi”_ß›XÎÚ4ÔVéþؘù±ž¤ºËVG#{âDÚ¹GLze?O–˜¬®ÀûXj¿4éA]¡{›Òu¹ØÏ{+Úh<î Z%¥ÉëgkxþœŒÖXç³WUWõ>Þª½Y…®yʧ½©Ê° ï¢p™ØM.~n s´D"@’P P©º‘¾'ÞN¨qBºN÷g…U–ßÔèU³Æ—h&kWèýv[Ù£ò–6ô>céÐ=¡*cuõrÉÜ?4^"ü¡X(ÕìatFx5ÕMv»oÅÖ¡õ ýÓ˜ÞÚeéHPÖÕÑsKÕ$wQšÄbUéÜà½)>ôNÈÂùªÄ“F{β+Û:¸ÏFR¯Õ¯˜ƒMµeócÎ+кչêY~; ¬Sõ ëlEkt+‰( IʪˆÊ>z¾+„q“X–¦Lb, ´?SØf î:Cç_ÐíîÜÇVSk[•¯áñ] = tÉS…í½ƒ­ÊÍj> €õ};ÃD^ás-ìè«gnÉ«‘/ÇZ^"Ò}Zò›C6Îé‡U¶ žˆlöÖ%ÂêÀ¹cgº¨Ú Ùõs‡–,]€t¼ÉÇTe?©­;“÷¥L¯V15>–ýD|ùœöí+FÙá|ÍÁ+U•›ì/A;ÂÄ@n¬©Žì)ŸQMÚ.½¸à௛c®Ìž=Æã¸a‡Ÿ3n€–-¦VN~5‘ñe'½ó'¤Oš–_öа|µ`=m:¿Ô«ÈÅZ¢ƒ ÇßÑÔ'>8:rÇ ~= 0Ôµgö°D’Âw›=úÝùÑ1¾ﳄC#=¿4±öÄíË“w¢‹Aœ¦55äûSºw¾Sµ[§i ÏÖ¿xC…Þüs­ìû¯©B«uçËd[â¼­%/¨ä8ª5çŸ<ìpâE_NÏÁþ—²Š<&51D™jžeMÔe'l¿Ç;kîbLë-Ž@‚¦5™õüL…JñÚª×èÙ’Geû?®ð©œP‰·ÊS%Ðt˜¬Ôì¥û8@1f³‰¾,]R!.ªÕ¶©éM¼Y˜K‹LHLU™tﯨü§é4@ÃjÁô?rÒm4Y* 0sú•¥óµ}ª?‰5_U[å.ËÍ/\2µ¸Y‘²[Ç÷¢à<åB¥åÀ NA%‡á]aÃ5°¨x5@WÅûv:Ý*‚e³‡·×‚ç9 + i燷)ŒÄBŠîtˆˆâž=ƒŠ¶óc÷"ÍtÔò¤MiOgÃ}¼]¹1¥ð®©žLÔþÆ…MþTDcª>£ÄÙ:¶ç4áÉñ÷{ÙIqÝp)g-ijIl’,N9ŒîX±—ÂÂâwTÞzWN•yA\VqˆÿðôlOR[öõœúâ°]æÖGxï3@oz²ó6 •üŽVNKY‘”¤;,˜Ú^Ya:-­øºjIlìÁ Å‹Òæ7u±ì‘5Ën­Ç‚#Yªlù•wúâRÏ‚¸ài=Ùì-DÕG Ù¤…ÓE¨ú/•†s!µ½êV,nç¼yzÏÖVÆëùÔ¨€,ù”ô®•Ÿ]Fž[}2ëæH¶î×@ p/p¤§XО·Îµ:–¥É´Ïs!ŸNÍ^5^´F9 3‰’õU« dw;ëXÐàÉfOgÉSE× íëÞïb]ûÛ— héô9ÄÜñ«Üž§"c™6õ÷JÛ1jç¥ û*~àÒ¬½ð²î ‰y`¦2dODèþc§_Wá¡D¾€7ÞºU6µYÐ,@² ïSy–ðI4éL[ñNàOþ÷9Xý™ìÿ°AÁb‹ç²ÂSQSþŒ¥ö:¼ö¥ã!Ú–ZMð«è@õõjAEªyuE$tÓ¦PȈÁŽ¥¿U†Õ!Ì’—êgŽÔ9ÿJü¸†’P’lY$„{1TRâQÍ£¦…Ú¢*» /nŠÉVXK7¡žOMÈ[Y>¢®}JäD"-y)oÅÖ0¨‰Cýµ¬j`ÛëÛ’ªžÓr[¿ª¼2’’çüé,‰gk1Ì}Rì 3  Øâ8åõÙ ôt¹}ª\æR2­(Z)xm€“)¸|VŽHö2·hûµ|ª¼;$F­N¾«ª;¥l-ÏSóãM6&[[ ‚«šd¥ šô–ËZ¿Ü°÷f»™ÜC‚e[.ÈÊwÕì|Ûfçã?Q—âæH}œ/Ë¡k¾êR«XºlÍDˆ€ÒT…„‡Ä€ÇŽ^ˆÎ¨€÷­kè×”´» Î·ªÓŠNEaa±ãп©.tA¢þ¨‚²tžÓüLKAÍs¸ï‹€tŸã«‹—¬È‘¹4j¼ÕSkˆŠh–Áëé±ÛÝžºÇC¸ãuš§*aD™R»®='ÚÉcU(¢â” Ò7¿VÒ²"ÏÍ«â–ò]ê}i гʽΫàrÍb3=ª±©Ã÷Ö"á2îCê†"ÚM±ÊË['¨ï›òåÓ2–/ƒ?Ùÿ]2þÚȦ—AÉ ¿ÿ%´oP…b8‹ú* Ó|!‘öwÀ˜ªB¬^ÞÚáY1{.Ÿ[c8«N¬“kgÀŠ»íQCµÝ£½zO‘`Ƽ¼ö,žoQß¿@fz–o[[ëK'>pàãDuamœƒYÛŽ¢¹u)A™ÔxjÙl{.›þ¹5p°©÷ÍèKkާzáÛÂ!€WKÞe¯ñ ³všßçQzá¹”L:¸^ÛÌÖVr—õÀn$4XohÜ& È3~NC_ ïûê`Kvi,… ÀÊö÷X%)·Øk°Ð ìÚyGð_:/åÁxVëÞÚ$8pxEèþ´â«ÿO[tÅéa¿º(&ÖX$¤/û ‚ %µÇë^âê­™.¦Öbµ×Id`—æœ6“´_ý³¿ïaOÂTUµeß8îs8ª†}kþŸ*? WV]ö©Â;2Ë÷áJV‚S•ä@@Õ¶W¿‚m“ãf¹“îÛꨣ¢—´%¨vtÃA´ÀoÒgZ6y>Àâ5èVû_FnvÞp•v¦;- 4À*K·ªƒ®Ø®§ É\€P€¾–¢/1œøo~®ûã¹õ—ßý¡áß;´ûþþÿüã_´¿û‹órý7gø?ÿÊü«?þùóëßøÕ_ÔûW¿ð¯ÿ8\˯á×ñë‹âÎþðçïš~õ=üò»¿ùÛ¿ü˹ù‹?~TÎ.ÿ‡û·ÿæ?þý?ï¿úûû¿ù«÷¯þŸÿA³ÉH>'=à«g‚Üðšž"€Æ©ëu¬¬k$ߌ®‡…²ç5¥wØ`¨ÏúÎŽ?Ôƒµ£ïnêsw]?õº“êBk<Ô ç….}dàiùèÜ0Œ<%gq¶GïÆÀ+½^›Ôæ9Öâ]-ˆdj؉•?[¦¥vxWOÒ˘Ðà§ßÚ¨ "i«òc ­XPQ8°<ª«þ¯.qö(ñxN¬ÞôYGàsµT?øÍþ-ö4é`@™ÞVª’üí–’}CE¿L›»Ûݾý¯Y£oáê 샘ì³T,(~*š…öªWëÚ(/ûA=nÕv«J^êãýþ`Ú°R¶­~š—Ž ’˜r·Å«£úÖõCíC`zº}}vXÎY/[»mÔ÷À%y ¡‹™ÿÀR³aCU½÷S¬×SÁ§|2ÄÝ´0Ýß}M^ÍŠ¼¾ãœdªx;XV[ ëªÃÏíA¶ åùµE?ùÙ—9¾è)lc-Ís¡öÇ{ú× c3ØÇ ôjEC¾Ð#tºÏ‹Ç«f§ªeŠˆÝ½hIrަC’‹6ÿþöÃøÔ• ë±-Î#ï E«ü×ñ öËê– ÛC[(%®œÁž6Ò~]*…žÓ‹SÓ¸ëõMh´È~·ª‚0Ž%e©hÙ⨣ŽS;BF·Î ZñTBËÓUì¾úëа£8ÎDä¤{S©W¡ª#¸N>Yf± 6íO}oÏÜ]Ïå÷æ:\òc.å슆y6wEÝÉêÝ+Ïî¡•C „UÕ–mÌÍ7¯]âÞ¶Ò»ŸoO¥¦Bÿ­­n—<¯Ú)C5‰¹äx;b¯y_Ž>–¶¶bçêçÏy4¾XŽÏÍÚ…úÎÓH„à)Úª·Áß^óƒho+kÙâ‹­DŒÓêkcgU]]£¼¥"ÄÇÞ<õ|-Bòí^ÊE¶šç@¢|Úe=úxøŸf”T ÓyÃ#uŸœâÒ sÚ–RÜDϤ O)¨P¡gÂvD–øÉÚJ[­Á¥¹U~t;µUìä0Â}æ –*¸\Z q:ã?Õ“tö‘ Ap <)‚&K³;ÌZ+šîytãU½,KëCzóA•ýœ•³ô$­´oéQÑ÷úTœ{íü>Ã@ã$Îp|Þæ5¹auó˜C¾×²wüy¢æm#;çÈK ºŽê:Ëø¸¨Dõøáʇ¾G ¡âÆzUð´©öOSVëüK÷ž,W«£¥Îv¶B¼o½¯?¾ó˽ê)û¤Óè¼ÌÑGýŽ€æÛrtapYéÌø8zkëÙ“.Û±TÌ0æ,rJî³oÍ»]Xžs§bÌ.Ï8Ú_å(Þ­U=—öV©„wxøW<÷|·“f·ïH2&Һᶬ·G°Ç˜¹.'”sv‚ÐsE2$Û¸Ï3ÄÇ ï[±¶WŸ‘“}azk”ýMâÃHÃõ oô`Ì¡¦xlþX¢J¬°™œ°»­¡«€©[Tê%Z¿Uæ {ìɽ´;0ë`·Ç;I>$¶Ï^ÂèAÍdíD†ØÏÑù+· r)ô Ž¿XN½;Éõ‘èùÂ^:)´Ïì?yvª¶À‘õ$z ,VjÓ•›v,v•ç\ƒý4!¯Ï R¸¥f'pSTæÅsŽLdßÖšC'V^éþ‘{Nq±üI14¤¶À½«ŒhÏä)­£ÎÈk&[èëç¬×•”9Þäð°m&Èd.”ŸóŒÑ³ÜïaQ*EM´¾‰|ÎNÄÏÓh6Áb7~öÙZÖÕV‚0RgÏJ´­Aômö<Š÷”Uƒ©½ªÈ‘ŸÖ}zÈØÌEÅTV;`­y¢šõËý}íœÓ:HXi‘BUt|á¨r{´ " Î?ÙñVÞÉ&O^nãC޳¶q¿Ü_£¿¯)ØÍ=ñz¹YçÒ³Ž„…ÕObœæ^‰K¼8ã_ù¶Ñu?ù¥#–ÓUì7¶ØC>ÈŸùs›d1Óævý8ßn÷„^ØÃ>OÍH¡óíìÆêlÓpàÇÇö%g4ˆÍvæÛyæÔuNåL;ÞîV§éùâÙ}-Ý sˆ„ù› ÓbÐÀ%u°ðørI?`í íâÍ•«FÊÇfquew€„ˆW~C5tØ´vEvwÚ·',"åØ4w©+Q‚3ä æéjúÈÝD‚¨ÿ‰ç~ú“ŠR[± hk7¥ µÝŒìu;ƒUï¯ÿ õATÕ l"’K°8˜G¬â%,#¿ƒV¯m8àÐXŠjýxÄI”oª…64U±?§PÙÛšrÜìgjêb7*µŽ”³‡lH‚!~Ι¦3T¼þQs¥o ·RõÁΨï»búæk7Á(oÓÀ“`¿ê‘%=jùʪÂo°ß  ($aúR0™äª K_AP_ý¢Tü!âjB¹ÏœbfñoeÒ¬×oùöqtï2^DCÛúõùmÂ9õ>Š8}ÜÕ†…‹bȯ­“6v8½n^ä²ìÖ=2û¶‹úÍc¶§£6¡ÁF•ÃÈ^N”¿šôÀÀǸ=ûZÈg$¹—–­ ³eÉŠÞFEÕÐ{”­=i"¨?Ê€ÀÜÃÔŒæ•I·#Ž7HtÛ™ÝT$ŒQBå1è«•X®‚7b°Õ_]LAW’³¡VT¹ösÎ5`øìgtÐèJï©–€GÙxpFž¹#öw¤Ë@Ž`:°ñ¯±pÒì¸d{u.ãáž cz oMæXúD¬éy6᥹ŽÀô_»bUÚQݾ#ò¡¤Ÿ*Lvº‡óƒë¹—p ºã`œßŠÚÔäuM§WçÏÌøçÁ‹Ùá+”fÙ°±Í¯«¶£*^Äpµ1†Œ „¢ûê·Š«[NªpÜhò¤p& IÙ X9¿þ²0y4öªŠ%Ú¼ ôÿåF§nÚž,³ïîZÅ­ÅQ!|ÚøNXðÚö`ÙÏ…!‡*e6'‡ --¶»—Õ²ä5Fe+·ÅWH°¼/¨zÒtvë꥜äÊKù@õX•(âÆyž3×´¢®W m•ôTˆ 5àIïl¾èXì°™ž4 Ù5h¼/Øè¶l^Œ€Xx”ÜâtҌܤôj'ªÅÈb<öf+˜*è¦å™áCÒ‰€þˆÄ™ðKŠnŠzÃÐ_vô•‡h‹Ü´w÷ÓqÔ Y+z($?Ôç™ÀAû2Ô%šžúçͰ°6çü²ý Å_>@4ª7!G¸”Uè—ñGc~BzrqrH×zØ[ä6¾³¤Y^¡º©* ªÑ㉨Im(§¼¸]ûëû=¬•Ì+ÕªÅïbÿ}æ¸|¬“æ¼;° ’“Šä•„bûFTZÍ#7°òøš»”[~¤D„®•y:ƺdf~‡à¨&y‚­ /„Uz_µ³/BΖ¼(“( n—›uÈý[_µèˆóy‡îv¤Ñ…ÀHê&¨·>Ò‘õup‡XÉ È%V" »gq°R¾k†*\Ƀ˜å{—Z i9¬Õ‘ò¶^o+Ød¼ÚL‚xwöÐæù= ™Weôç÷’|<2’õN¢ÒК˜¥JÿháEõ:TŒ&L9•Ä¢9ޤù Y°iVjÈÁ0Èùl’m`)ª´ ä¶m`ëV.§qÚk[|`Yc·NJs_Nº@­b€{1h0ÙTàû„¯¶ž¼žV@B4«[î`ˆ|Õ—·¿ÓE‚ì%X[›t”€8µQP28CÍ&â³¾mê<Ûç…”­Ëbéö;ìÓ‡@X«ÖQÕAó”Œâ3CÜš!’jEgÐ]©¯•9" oA•$˜ÇÇ÷°®¦ìcò<QŸÜ5­sd^•¨¼F¿jU_¢œ ংݭ«„ßyÃ=>ÑúVO=«¿”Øšd0¥ßTŽ_a¥í­ë8 â5 qÝîpì Ø›pK–Ý¹ç¦Æ‰Uªéâ)­:s¢LxuúÕ©J $ò,äæjv+jÊV"¡{•ÀáDçÄ¿HS*S[‹b¯ØkÒl®êçà›ìi%±Ø‰70ޝé=ÖsK×u«Ýÿø£g^_\ø9Ç`ûM¶(˜R£íô5²¶›öR²-ºCUùZMÿwG8»î®jù…/,6q1ß Éq ÏÃcÕ:R]vx¦¶êVH@àù÷f‹Añ÷‚ºTç€mÃ:&oZ £%B§*ƒ›[ØÌf)±*ÀÝù@Ë~ćìlw9»ê|d76£·Ã-ø“x¯ ÌÙÍúêþM£«û§5²´ÆÏ6ë}ÑJ;P #®,:¶´ö^2ºhaÜäÍh„H²*v2äO£f!ÅÖÞÇaÌ®óh‚ÔÖuj^‘-“ ·¯úhŠNv½hŽ´\NøÌaÉÎÉ9œÜXžQ_N~ª¼>¦‡k9Ã%5¤p8)nÛ2šPø¼^°!€QZïªT Q/é_e%-5½¶Êâ뼊۲šWuš3:§Ìê‰÷VúIƒçz¯¼Ï‰ö›CTëVä—ïÖ(FA:Ÿ¶êêÔÕ„Æî(S%Ó~ñ…Mû™Ž7¢Ã\0žÊÃÏßÏ£±7í„=tÅš³š¥øæ¼Ôü²f«ú§XF\ʆǜd½-ÃøqV$̉s¹5PW e·ˆ×g~˜ÙÃ8’1Ÿ3ÖF H’?Âô5Ž’{€9 U€!â³–l®{a!€å:6Á…{-žsŒ£ýƒÖ·Ö/;Üè±yñú”Âàp¯KÖ,Û+ £PDSÙån6±ÃUç»»¦Ã¾w _Ž#|¢ŠX 6umöÎæ¡4nCy£ –<àd¨g@S¡í 64©KãµE–Ê27ìïôµ¬—+žsÙóéWËâµÍB”²Áal1)«ãúå—ÔXg؃pЫ>ç ºmGôx~øNEǦ@wÃ}`ÑÍ­ÆLpßç·úÈ…¸©òI‚’”¨a(Û*ÛÕz<&ÄŒkŸ!×¶iË£m$UÎö:¼‚ž› Ø`‰gÃe(@¦;xú¶òÛ ¤Qì-Ò—8èö=ÆÑô!h¤Ä¤8ŽÄñiR¢ ¨‡ À¾íŒë(<$è–áüðœ‹Ï“© ¨êÜ9M*­“Ì¥zàtN„:/´›¬¿{·‚¬å}b kÙ™\K ˜OçáäÍ$ €Øy DÏ^b¯«÷£ð›ŠÅöÁ: Õ{7ß »ÛÀ+G7ݲؤÌËõø¤’©” &ù¶™6;¼»%W·§$¶x™:öµ5eÕÔèá©íåjëÍv.Üü7XÝ,¿ìq-›Uu†ðMxì‹m“g×SŠkµG@Q¸ÖX–½A¢c’€áµÐÆb‘xp ³u´øÈàD»c óXø8K¹#ÚŠ¨…"š 4•(ØèÊËÀµRvN•ø¬,+=GïkÍÑxÄKf2;ÁßòÕõSäVIùÜÞu“7_à ¯%“ ‡M/3•a8pjW¸€'w¤ ûYµ/õIxåíÔßHÅêà¾9Õôzë]“Ö?²6[MõñdžÕÉ^Bœ¾Â<›ØøÞˆ­ÏóέþH8ªèU M°}òtúVIeíUÚmiØ|ÝÁ6/EúI÷lŒÓØL^ü X¡hò8¬šý—œú²´©«¸v?áŠCù¼ç9Ò ÌNve”E œƒ²¬Eºc¦~Óªó½£æ+ªµéa™ë—UôxLãt?hÆCnàŽÿ€–ª š,‡‡$w4us—êgŠüz ¶Güñt°#Ë“•_ú¸y­êíL³ÖoGõVt²pÁä›!;úwÖ,Ç2_^t/'r‘ùš=õR,˜R#X¸º\çŽÙâ²Ç´ª 7YB<æXæg׿»3Nm¹HH7œ`j^¢IÃ¥ÂÒÒBMÝ#[å‰N¶$;ú,x'‡aÕªûò¼Ë㻡}É€I°|ìjµ è€ŒšÄZJ9.ŸŠsKµhï»>Z>aGÔþÒZï üe¾“xU¸'hGØ/ÀÀ#ȆQ‚y<Y¢Ç éÈå\¬–)*ç½µ—j©–¡%r_€øÒO †óÓ®ùh’Vk®àj‚+Võ%l‰‰H¤kÜo1ã²–ª#2JåÁ«>XbÏ e ٿŽixHQÎ6™ô!qÌÁC¿W €[a­ŸÏ,²,!9ïØµb.¼®la#›Pˆ·‰ÏëÖiÕ¨ÂAŠà»÷¢ºÍãF8 Ï…<2ªôS™È«±9ù¾Á<Õ¤¢–zH`›×µã““åü]ì~›ë?§À79,Zò€Xs·™fVëš!pKÁ3a‹-ÅæËaÒkVˆ„¬9>×eÒo p·|‰ÇWêqÓbⴞ؛ÍL )Íæ>ƒ—/Ku+Gèé2oLu‰›A¨¶&½­*ªðÑÔÀå΃GÐòÈ}Ügì¯x‚ufƒ²IÐ6|‹¤[3È$IL–¯f³7?ÀfÕ›§ÞÛ^=ÈŠê. ›g¨Ømh)âï~ùuOoÉ1öR¾L¹k³Â†µxÄe—(pÈáØC²Îr¶ýU9Ц-·¶ZU{ŽKÇ![©XúR¹kõíDØš¨ ÿT;¶7ˆÓzšÅÚòt[^ê=¯©X„å¢Rí'©AåÕСIŒÈ[¸eŒ•% ¯ÐÒ¤í±†g²wƒ¨¦–ã£%FtVGK_‚жBìè L±¶Y=\}ßíéTù.;tö^#óKÜ=ˆ:²6ѰÃ\^õþ<æÒnmÅãnÎ?óB¢BÂwTà˜”>¬óèšý\ñӉ︎-÷…¬%ÂjÃÝ­¤á{D» ®Éð„êƒgz %€9À¼‚¬V]ÖÁ3E~«+Ì¿ð(×'é,m>ƒ*}úu¿|›od…ÍÙÞb£nl´) \øü¹†žZ{yý‰½"ëÝžðëÈ.±I»‚c1cªG;<}UP¨+"{‹ð_Û¥ÿ–£Ñ)¡ gSw¸ì5¬êÐð¯ò~¦¶Ì*æ-´Ï‹ÎDØË©/.aϸ¹é`×xÓ¦ )cÃ/8âeó9×^·hbù±;´ëVèNß ¥1ÙG¤“bS—eVÇtJÅ9<«ÃW0…›‰ÄéOñ í©ø0ÍPm¼¼âW—.¨¯E\ ü¾–ïõ:Æñ0dÆì‚´ Œ×(ꬢ¬jÔöõ“$$Ôe~«5Û0«Ã@N¨«z¨2oC.IôáN;ÄV¼þã?»;ŠP¦ ÂU¼ä½”vÓág+›‘4a°ô÷­s/ïýb•ìÅÞÈÈ£,hý°øIRå¾FÛV§]$¹áhÃc;VôìÐù™ôô—EÖùÖ9E®ñr_Êçi_5ínÜçàŸ(Èñçå‘ãøóò‰qøã’R^þeqðZÿ ÃÁ?ÿ÷Šp‡zÿç'ÂÁþ—1üòg Ê_¤Â¿rÿd8XÙÿ-ý?/¿©oüA}ã¿’³ø£\Füµ˜ÅßS×øÿâ¯ÿÃß“Õ šýáßKúåwÿÇøÛ¿þãdþà÷ÿéW?qÿò»¿ùýÕ1¸ÌßýÍ_ü'âÊþ¤þò»¿ø{_[Ú/¿û÷¿ÿÕ×T.ï/þ¯¿e©üA„G÷»û«õ'~õ¯^×oòú&ЫýÌN´zš4VÔ~§ëÿcuSÕŠ¢zl¸~öJ¼¢RˆT™ÕÒv- ðeØ¡r©ƒHm¸f¡*جÄprhê=íËûù²hðsŽe²Pe×ÉÝ`ו­÷ ã³ ÊTo˜D™÷Þ—†ó%8PòϺ={ô’ÒØÉÈ®tWÌT…<˜èRB<<úÀÙœwdI:m-ÔYO,EW÷==ì¼NÇ’ýª8oçUù÷m%òx<,c‹tÐa›•<åéÜó§søýhªÞflúexÔ¹Wáh²ó<‰RÓë®Ôõž PyÙîna$5 ægœŽÔšlç©ú^̦âcdËÂÑ:úk& «EÖ+÷fóãð„~žÓDøTy8Xó¶Ï¼Èj^zRXX=v”s ;58, ä Œ¸‹ÛÂwVÖÊSáÃì8C³1ßI'§¤­ÝéÞ³=ófs¬ÔlØžàuCP‡¯Í nã9CV_ä}xÇùãeýXŽô9!×ÍAØ[ƒ¡®&¬®»IÉîrêÛ¡—ý–{D’ê¯'=Ý¡½ËÃV§2ì’fÁO{<³XUaµÐ?&$þÝ-Z±UÅÞr!ϰä÷šmCž»2I—f_ÓÛ— )ÛÇ©(¤_ÜvúÜZ»ÛïXgM²åOmæiyÞÂW·:„$9Ëg@²…ϱ)ñ“·ìÑ¡º,+Hhé6nUÖÇBÊÙ‘DšØlqÞ6{¦è—ŸÏþ©ÛÂÂasC»I•g[˜Ú\ü7ßþ8ç@MJï:lM‹ØšP¾{ùÕ…b±/¹Ì—»}vmÙú´sÈ"axïaoA°/KáÐía@vh·¾¬[_Û1ã)¯»‚ëº÷¥™¨N¨Ž : Zxÿ7ÿèlÜjcÛp³¬äÜË¢€u>:^lô±®ž;ÂзãÔZ-tOž&›ó±WŽ¿ÈP3/':µg±‚AÌìÏ•ÖmD÷¯wô¨«ãüîªã/ÎÕ-vLGõÎIØf—½½hûFhPÀÂ3sÏ¥¿íÎÙŠ@¤W#›+·Òy=J‰&-¤=³±³¦;¯çÛÛXÿç–_~G3aÖýàÚ’ÝÕ)äZçC’Òù%.qcbÅàJŒíRUzç¥-…ãÊô®®<,|³jN³K©9UëüÔWrfæÚUÁ•ÎËV'ût†êb×O_¯'"÷‰ÚGµÒ_޶x°þ+±ª)¤@l··À’oÖVó\³Ó<ÌÛñ‘7½-èhQÖŽÇj¡æ¡„†K¤Oþˆ°ŽÛ=Äã“<Ü è*x ÜKsµm&¢M®`²G›VÝ–W±UwÞY­}W;àV-Å<·ž^, {\<¾u%uÇBËš“rÙÍJ—?G:F6Hq‰òü»sXÑ*;KáXýw…N¿ºàw´C´Z–\yÛW"Ÿg‡áhÚhá<Ÿ£äÛQ™;]±ÛS’¦{z>¾6ª³»UÐÑʤ<ü»ZéÅ6O[(–ʲ]âr‘þÔúíDŽG'¯®t+M¶Ì6Rƒ‚\kïq& >ïÇ ÜŽ\é÷vÏ+õú6e õ>!Æ'ƒùì)V A«m<£ªÒ·AG›ž­%ö®Çž¤êù<Н[ãndܲl0çeGÊ}œàøÇÎìyðï½ô/+Ž ÂÇf¸?%*l]s@hONÍçÃÙ&@Ñ[KLŒ_½þ û©A¡ Þ»K“7õÅž¦^ÖëäWe‰9>ó­ã{B^ ¡èÏÑŽPxÀr«Ò-Ü ììY3Ð/îØCØ?T•œ`)ýËs ýA€p 47zŽäcÏ·È ìåU²åUæ "|_‰J ™ˆq:Ùµ[÷3úËͿ֗õ#Øû(¿”ÀÖæÉt•Išb3½$– Õ“¥ŸuÄ@ºž´Äv Á¸§ÍyTßçV'¶0œ:€v Ÿ+¼ {uÀX#m­Wy¤4z&yÝa°¶XKŠ›ñgx—þ³3…Ýu04¾;ÓfÔ@ŒµÏ’Ð3‘•g#Ô1fÁ*¬M ÐWŒP.6¿ÀòåêÇÒÔzŽ×{vÖ“­Á·N¤ [Í}º:«PA¯!í¥åæ¶syµ÷¦áAÜ~ßp¯Ú•`Eƒ‚ˆ&qZl\âtÖz;*äB£cpJ[mÝœœl°ÅÜÑdOâ"pÏÓè!ÞC{Š·nʧ_Í­î‘£ëí5'gV÷Àwà«¢>ªäUÎöVü:»³ô ­:ÉeßñTnŸÝ(>ÊLbÕúÖ£‰`‘•³yjtÔë¤ì÷ù>Ù™ÖÑïÄË Nºðƒ% {?¥„D[‰tÀÐ%Šÿ `BÍ´•˵QÐ(Ú~–÷ñ’È‹kÙ¶ªèþmÇø¼5ÚØŽÖ²Ë Ñ$~ Š*qV3œø¶i™k/¨$ñhÚ•ú•Ò®«/ëŒjö©‚×UšÓۤذ åK]v-9€æ± "-ÃAçr"S¦¹cgžéâ%ðÑc«6l09 Ç5XA’ûu–ÏxE¤t^jú‡V„,ž™éyçé9 8µJžèPáÕañãz¡$ÐV Løé¾®´ú»QþÖã¢úT³àWoè€Ò^XÛ?ï׋„s«m4ÜÄ–[ïî©Sy:Èy9zžµTL¼Áò üX@rðœmGWŽ3öŸ#(GAjV þÒÊœt‘ó„?Sét²×V®ÁCå/ïÏZšÁR!‚ï¾'lTr#”R£Äp¼Ì ËÀ ã“™•ØŽßpûŒNòßKé©}×ΊÑ@ñ4gÚÝiy¨]ÿé4/¶]v­¿ÏiðGiµýœü>¥¿®š"ò]7§!‚Æ’ìš#˜§Æ;„÷ ×5€p|;Ü\á¬ÿ¼†„ڈݟ ÐâNma d4Þñ£€L‚”qéòª=<¤l¦yÙÄxÃYô:8àGÁ3­+¢¾?"€ÁI€Ì:ÙÐGb£‡Ñ¬*$ÔLr<®œÔë qðXatÄŠÚwõòiUàΕˆ ¢h» ‹”vZNa`VG§/!¼††pöpZZ ²O +Á—-«Ú !>A‡®CZã#%àå²¥¶øÁ‘4v)„-ĵ'öT›ìÇ¢Š}¤É'6Õu úíéžSâ`µ-XtI©d;6ªûf³#†½Ä·;çï#å]ŠÀ@‘qCʃ}dK·Ý :õÝw½˜Ζ¹{%ìÂhz©äELµ×‡ FÒP<ŽÝÃ[jÓu[ËK|>ͦt«d­ÿª¶æ5OÝÕ+¶¯rÓDO'zÛW»ZYvafbhýUHyN…“zzNÇ]ì ¡Še9oÛÙu#â“´í ƒQÜsòˆ3]·”¸xÛ?U‚xÝ:†Ôïµ–‘LYv²„g" [Ö»z6™¦:€¢n(èQ_@ÒRõ¬³t°x*WÇ>ªÑçßZ Z@°¸q…3`Ch¨Ž¸€±Š~»ñ&záº>G Sš=êšGÇ­pjþX÷ÄD6Js:èMŽ™ÊŒg#›è“ãó‰¶\¼VB‚qäÕG´xìKŒ¿œž_2£•<Ý={x±:yÉÅY‹A«ð‡­¢>¡0 ̷Ϲ~É—Œ›÷b§ósF™uPø@N,N¶-M7Ýoá5º?b½ä8Eœ CJVÀù˜Ðm[ÌÜ¥è"•-K}j)NDaëÇèÐæÿK‰E6*˜ð»5H ‚uKm-Uø´Žd-á(ÿhC›o—Ópvk§‡T¤¶§~À¤Ð4›®Ÿ‹WaE£D=ZîY!ÙÍïïG5u=û¾Î!tðÕݶ 0ði¬h` â¹$§*xz¨Ï5OÈ9 ûÂNëq /N^«Ï'o»‘’D‡ã.iÄÓ/ƒ|òJ¦Ÿt>ñÊyhøÛì g)W=—¦sMèû±!K—6È%ØÖ3o‡à )th•ÔteÁå{Û(Ñ}›¸09o, Ü\,0™çúxœèWàÓ–+'™ Nv%‹óÛYÿ0ü¡öËéæ*Moaȹ…«¼¿#mDœOFßÓEJ\É&i`tÆH8¤¨š"°iÙlR¤•ÌxœÎÀÝ$ù®°¶ÀÒôZ„iµ´h» ‰âaë&- <í° e[Õ|ëQ[¹NH)ÐÚ1TP7Z,!ÆlE¢­·[1E!ö¿*Gµã¶QËå P^÷7õ~µ/„Ë“W êoÑ— ¦Î½ŸBB8ª9„—¯9MHƒ»³Aš>—v¿ýü°nž<·­![7ب¤Žƒ|Û"V`»)-üjeY}fAeyšé³ÁvGyì þÔj]€nHˆ«TåM21¯R &š¼*²IT~P6©j“s7—r;±Ç—³š¦.(š,Ú`²XHvò¾öÏ&¢'€ J ]Ë¢ð”ãvÈÙ~I8‡z2´ #ÿl¸¾†â·ú&†_!Â6TGM¸dÙÇi|<ú¤ž`÷]QœçQ“ÅFc‹=lËc}¨0‚5oí9‘,8Ù¿²Õ´¶© (Fp"~¾·‹ÄLj¶©Ix–÷÷„Rõ7ž¯y ªOó¹xOrVþâ I#;¿zF•”Mâ:ø “$oè¨,'KQÕ›‘ûC´ÐLRIú9¢r_‚ñèb,ŽŽ,k@ÆC{5!† ˜Â®Q?©¢x$Ø…]K.ãÁ1!ßðeÇUÀ\ªEZ‡8ªÙ9†ƒ©64‘À 1¹9‡¤×ûlû¬¶yÉ‘!Qo>êC«ùH›VA0"PIU0Šè4f‡¿Š¯TÔÒ¡›GÌ],’ ¯Šø®6¯E›§X¯m ¯#:´qQ¼ È•8j ëÁqî¾–SÿîËñµÃ¥@ƒš–«pL|ûòjª½lŠg—cµÎÓì †µiƒ;m¢½3y“,É*¾… d9 i[' ²$8Ȇôi}æ¤*;ñ*ü‚£šu`¢¸œm‘!fD{ÝZímGø-vÅUôâ‘€B³#8ÐÆ0³«®hmN;Bµ$Y&ûÑ2Zr/öšG2`¶çqž ÆÖ¸¢Äo¥x"±+}³Y'sBè£SÝr3p\ÿhRûÄyde»l¼Tìâ¶¡/X‹nJ¢Ä„¢Ú†mZ·EVªp­*§ú#[ìÆj1½©"'íô^zÅW§>ï|kÙìp— W°AqÀT˜©’ëw)„­-vP»Ól+0€ÄÖ¹­HðoÁ§`á{)ŒÊ ðº÷ý\g66ZÜ`ÿ;"Íç+¬[ÔžÝ1ɪM-ç{‹®þ÷­Uìk D Ó­B„}¡êzE»äÕÀäÅn ckiGŸçN;>¼:ó†i\DPà—ÕïIl­Ÿ9ÑÏÒrU†£¦¢AÔW–U•iLPsVüE´ñˆ±ä¬AHê}€±žDЖjÝÊ÷jM§Z‡ÇÙÚiÇê—óïî,‡éjf¿7RÈF°Ö4fºQ;qU÷ íKöÚB´!Âí²‰ËŠÐ&èj7ƒ›åú_çTF„EO®Åñ† ÚÖ5Þ¡„Ê&+_>8¾þ®:> ¡'³g¸²±jø®Ië§!™¡e”¤À¤•7Ò»AÜ*h $,Gô “Ì­+À«¯ãþ®|§ã8Ë›ÅÊöá1Ù#ë„\977L@EÝ÷û܃P´‡4IÚtBRÍLxŒ3E§£¼¼¯^„õ –˜]ÈÝ‚»Ô;;:!Ò\–mȨرô ”AM"k¬¼b=ó±¤Ï¦0Fs­;‚¬\ˆ"¶jBù†×ú‡Q“\–C:o2±Ëž°Ú» ©ZHÂÉ‚2ý6âëc&¯v9Wû=Áñš# Ö¿ÄCÜj×ßdk!À¦Þ÷gˆ{uPÙ³ ö¼Õ_R8±¤w%÷Àt½?_¼Â‘‹à¼V+T_Ѹ.èa8»‹Ðyµÿ‰ÛÇ» G_ Œ4m°3¶êD.‡Á¸d‘,mU;nk/ÀÎF^îÑsPðZkÆuÌR‰‰Cqôð˯Eëß‘X€ÄóL£›Ó ¸Ùux`)Èâé0ä[CË~HŒ ÉÙ)4e¾  ¾BnmGX.峬Aã¤9W«‰¸ÜeK„d`fãG­ãF_¾Y3Ĩ국Sùñ9ˆø5­¯Û”­ê%d—ÄÈ‹™ž=Ê«¥ö¿ø5ª“Tóöéq·÷ºÁ¿P‡ïRªƒtñ­Œ÷ç\šÕ'rÞ£d[S öª“Ôê®ÄÕœøÜdgçcTßP:™Œä¨›¦²r±ÔwS¬ØV•ñ%ÚkÄ fU\N;Ïûò@Èt¼–¡ø.ç"¡»ª¼$U©‡”Ïñ×qÌxbã|ÿ{0¯¤r‰“[‘]ëâGÚ,÷—¿eI(Ìcž†µþêä‘bPUU?ÌŸ‡Y~Š\8aõ8}^ë>–«d85t }6¯½'=W-޲ガÒÈL`Xõš7Ä´°H!Ë^'½~íEb7‰€«ä.*úéÅøSöE꺗ëÜÁÅ…¦壚XKÜzlA¹™š!&qݦgÀwëû·/{—ºÚ>$eÈud½ÕO|?Ví5É üq{žŠW{{üèëë|%Y‰ìµ×PO{“fnÝ›Õ,xµ’éð*OûD²K¡ûÅÂ4eá¬fAQ›gmìWQ©‘% \{T•uwËT`ùh³Ž+?Á•zdR7ܹÝV´;WLØYÕO…É œãGƒšBLªGDÐB”Ê `mØ.ð²)ô š¶ˆ¤„*ë‡e®½‰CØÖß\ôëvÒ }¿ˆô€™ÒHŸð>uÈ>3·²Ô]¨9$¯û²^mGO^¢FRN×ÛÆ´RƒYʈò¢@…JCŽÄ~Q•‘½:rUoûNL˜/²0Z¥Lpjy^½¼€‹%f*‡V|6übö…V™¤µK—ç©” ƒïAyy­C´¬âGn' 5Û6~À'ì@I¡2dó)áÊ’u‘±—8³OÕæ9̓ÍfÆáœÛ8ú35ʦݗÓsŽ‘ÐØ¥K_ׄ˜¸ó|T³"¨±ËmrTè8šµ QÄ%kqâôÈn, TžKSÏäñ@a³úÁ"ž„lÏ;m/961jDÐ~ì€uÄ ¤ê]ß·hŒL89eK+,DHÁ²Y£õ³ukDã7Úµ¡¬_é‚ëÛýÜÑlÁ’\ú9Uõ(Mr'ÑOd¯$µ“Eggpoè0ëÀK°¨&6¨*©­eƒõÁqÎ)5A³S¡-¢BÔ¥–J çéßW°n2.KGܤç½Y‰„Û‰Ãú²²ã‘2©ç+ŸBGDáû~„ûŠÊKÛŽzq©<_;Ô$ƒ¶†ªÓÊö×eùÜö;òqJë 9šþæQ‹Âg®Œ—#µy¶©çùVåá°JzMІñt/6¶ñ>€¦Îj;Ïš‹CöžÎè ÁãcÓ’ìH€+Bðé*~jyZ.¯‘ÅÉ\%T'­Z…+üö‚Àê‘HSÄ µ§æÎRP8õâÖ‰Ê[—9QÛTn¬h—¡ÃÆVi³g>Ðæµú)`m—¹N”®ùi°îˆÿ>¾·OÀ!¿»}ðQTµzÂU¥Ö>è…§ØoÎÐÅ ð¢zm±°Ó–Ç<÷Š ŒZÖTHíúW#…oõ¶ÃV>‡xsŒÖ4 à1hîsž…Þj¼(2:4®xä«ÆÈ–ºßÙBdë'åNóª,È"?áæÉ …6Ùì’`eÒÀ7ñ³8¥êËGòãIßmó2Ô7ÂÏÒ‘Tz-‘•ã^5ô‚>2Ê.fµ+µÇ˜Gh…¥wýl÷>e Aj<窋•à™ý¤¤èöÙT©ù„øwžíûè£2÷ÊMuEˆ…@_„Bu‰‚ýUÔFHç$7@«è?ö5A°­Š=ìÖåä1t„UV²ÓvÝ#ÕÀÒQ–ˆ§#Ž]XQ/.{‡ÊòdxKù"dÝ0ù}Ž;ÕC#yœ”GˆjÓÖ¼»î,—fS,‰ÿ!ŸÛiÈK¿ˆïŠÌx¿?%µìì½÷éÀµŒxu–²ñµÊí h[;¢ø5èÔ¤Ò#!Û›_ì®'‡¾Ç7 œH”NÒ¨ Ç'O@¢D>ÕyàùImª*~ €7¬Ûiïçµ,2+ÛGÝ,ø‡ÓûÑAHФÍHÕ…èp>«H±srl’ ³¿@AK¹eÿbõ³DžØ5ÀzÜUí9š'ßK· Gÿí TÚ¨«»L³Ç $/ð±†a6ÜEKk«?õ¹ <õhànÂ$9Dû@ŽìÊ1´’hÙlߣtœŽqT)QÞ‹’:ÉÄi“ÖYP]²]L¶5n½"Ñr‘íÿò$A¡¤xJ%\ü*yΗ­¯Ú N°žkúУE¥w`dÔäŽütéJEÿ5E&öÂpßVç/JQ'º°æaõU<÷&4«§Hê[D @™ãœÊJ#Ûž¿šgprú³õ²u¨b$ÂÜàý¨ ; _DW»—•<ßa†ëUåG”dÛ k¡ÐQb$Ïš/jÁ¥®vfZN-¤øÉ¯lûõú–çï&‹¤ŸžÖ‚Oã (’í&Þ (ê.Xq‰ÇêÕDÍÂÛãIùt+ÅÊïVL|樔”‚s/IÏþ»£f±Kán \åÕvàÔ–×uÔö  !î«?œî v{›UJ!§!'“`“¼æËÔVTÈý“#¢69õÉià:µãÓMŒ|$€` Þ„G)Þkä‹-÷)Üí-Pð‘™Ü€iñ |½ns~¡+‰F|*–¶,"•ÔºÞ¤p°‰ßS]„×T×Sm¹(‰¢« œ¿·ÄrÜ'§æ±Ie¾È/ÜÔÎ<â®&¦pÿ#M*Ñ?ú®zh85Ÿ)¯8Ïñre04”½e‰*úžÕß"cQV¹y?äOYakÁ»ÊWè' ÿðF„ GéìFš:΂˜ˆÑ,·—gŸ|]M•ÍUpÊH^hV17>Ï[¥lB°6¨^•:¹âà–j õt/ˆ¹@N’ÎÉÖÓ ÈÀ‰¢j`ý¥'xa_óõiy´†29â]ê˜:ïþƒ7ÐÀ¦è§Š²Æïyäö¨Ë ¸«+MBNÎ_2ÕD“·ïKfû·œø¤Yœš°UHáôkÌ ­kIûˆ0¡äS?Ö'rÈËj<Ú2ˆÄMÅ“m™5^S¥J¹8Éæj›o Ö4ªJ'=¢-VjO²‘þüΠX)$DMüŽœÞ¨öÉu\©Æ7õÝr!À*ø§œ1ØJïõú$×{[HºÚ[qÛ(A†/r‘ë;õŽI+QPë\€îP†zö­œŠº¦÷׫0 mqßìäç’A¸€+r’^^Ò"«Yr!¥ñ â)U¦~ËÄØÇI*=?µõÜ“5¾ífʹ´‡ÇÃG K¿Üe&©<ðQ‰Ê ~Z»2ð‹ Ý'Ž*„LT°ØÍ›0 «]ⳤüÂzn¹ë`¿ª?žMÚñÄò' û!Yt •«ŒÞ¾$H‘k‚-3Énåê"­Ú%gih•Ÿ|ñ 8T'|I{ŠE;#Œn~(å±÷úz{º‰‚Àª1èï9~Ö•t18ÎO‹º¨´öòºøVì°ãÎÕ²¥!!Q‘¥mÔ¤z™’?ïsc%MW©?ÊN5¸+hª¦Bè¹Å¤&ÙÎÞ¶mšdúy%r|ò hÖ‘_ÓäðÉ[&ýMÌUµ9âКݵ*©P|ÆÆâ _NKVí.žWÕ6*ÓAíc]fÙ1>_âïP_”kGýð¾| Êß‹WuÀñÓ®‰úæ•NìmÁ4È .ru؉Ýb>Ö2ؤ&%Ü“ò*]äñÜŽ å銨gÛÛ¹R­dJà"¬—V7'ùHûÒ1¿dWù *¢f¶“;—ȃK_L‰<œ­~x1µé÷›X©¦l§×¤ÖÁ´E& Ý8úª=PLÕé„—þ,"1èRî&JnoÝ×ѶÌNá Y‰äª(m1g{êšèæ!ºTFÒ¸ŽêÈö8C 6+A»'aÊ=U!ïªVÙ¯lZ¤“Ï$²ö Ôûú%R¯Ž¯œÑÒîǺ¼u+]'åÄÊ«„cæå~y§³u}s¾ë»´ UËÛþ´’d_ÑÃKÑæì±:€S÷Ëš? ÄÐ4èÊ®}iÑfk Ü<츢ìà¢.NzL•uŠj¥(,*Þª«IïÏw”¿ÖóáÛüÙ/?F^ùßýêÇÆwûÕüÛÿøË‰_þÏPûùG¢ö3>ØxU–¡€ç¥¯¼xr•’}³wVS€¯wW>MPåwi³¬ ƒSæ/•ÖË'Α@ŸyM^ô,ô^ã+3Q×¹Eß÷Þª SË«z0¼3Ÿ:ì_ø( \®[“ÞzšúÏÇF©Ž¼|Òe`hʤ‡¢¢2嘽v§Ÿ¿úRlSë]Ÿæ:²Ã?Y‡å>Ô!­úÉÄrÇGéÖqÇúPŒ­£F¬}§˜sšñŸ6˜1œ«Ê$o¤¾z”]_*‡[g™ÖÍ׎÷Ö÷^E”T³,æK™Û ›Vûj¹¦¿ÌíÀL]” äC½ÂzŸBůcÙöƒµWSYÊi0g•®Ï¾ùjÉ!‡çmoAj¿_o3«·'7…ÜãÙÚ¶„‡ß½÷!¬QnΫõ-D]j0™‹Ópóåå±:Ò;ËiËÈ{ËS"³žB)Í­'g$(ÖæôÛŽùé²ÜŠÑDÙšõ;z1ƒÀfÖ h§½×â©5¯ÏK õГ":lpIâZQkf WjQ”—êùÎý‹a>aóÉ¿•Ò°y]/'¡5_¾õÎóÂ{è–ôe@–_†&ß«yë`D$ŠÔ¼î{7rÚ¸”IX÷z¬Ö>âæ±©'3³¹lÊû8ÆL`Rí 8ÎîJ;&gl–Q’€yÜŽÛ<^2>ꈭud‰÷­¼«Õ\cI15"J-òX2q=ëÕ@öy”:á™o*SGÏÂ#üH¶'¿&g&‡XOíʼ_¿´µ^vo±w°cUùO[‡h‡?|J wñ™÷B„o©ðÅêåJœ:=X¼YúVÖH¢F—rôJôÐSÓNÍ­¹‹S£,Ñ×®¸ƒ"B­Þ÷$þYwü"U=!ÚÔT÷IkÞ6¿ZóWì/røÙ‰IýiÅ.ÖÖ“H¨^“lŒ[óÑÛKÕ»+Ÿ£ýCª#\F›•y½Mv’ÌUo˜‰W†Šµå/-"Òû¸Ë8жyí&=ÑA{çûGûå½¾Ž7%pÚ¢—Ñàç7HòÎ:˜qt?û¨œau›‰TJÍ8 {Ü”;è<žÉuOizß^p}Zî—e{†:ŸhÃãm{fxsu¿×Ióîûº©¥ðÚœ¨=K°Ñ«äfmsns¦8Ùe0Öª­áx`V}"Ú¡–:Hˆ$ÛÑrÀI‹Ÿ"û›FÑ1†.7pWU»ÉåSm¦žÌ ¯].å€@>79;ò;]Ó<»‰Uú¡½œæ7éÚ.‡R<š³¯&Æó™ \žÓRÏæ<‘åÚüã—Œ÷±àÄÓ«º÷Ù:dÛ‘õþ¸ƒÂTƒ§ƒ üM'ó÷xÛqÍ:ë|ÒwÖc÷Þz—:çðª™íb£?lX@)0YÃàHöÓ¢gúëÞâƒ[×gB¨:{».}å¾ÙåöS6þö_«Y-àÞ¢ÉöçÆ?¦ß#±ëžãUÒeõîlúÑRœôý0|«¯†TË8Æ3öÀÈhì¤Ë«]€Ÿ7éx·æH¬AÚЛFßÛ¸0ìdm¿ñë¶Ó¥ÒN¼½=$š1agƒn͆z÷åõÅøú{âaRh¥wW€2AßmòîxoÒ©\Y«†PĪۅâ·ÜÐR´ù‹ÈEß¡Ù)sv²X¿ªÚióÖ$FKEÂöm»N?”NX^GwÌYÁ;Ù|— HÎã,¼_#S?6ê’~®JÝUý0…ÒxZGOp•ªvŠ¢êì%Òþ´«-ã"ÚòcwBþ¢uº’¾Ì z j‹9ëè`éîþ¿I2Ùº’^ÙÇlj3°‚J´WA„-ü:î<éðÈ#59_ÚxÑú[Ùòåw·*#Ž¥nTôeT7 ³¨|!6­nTaómB U—}ôÇlöÞJ!&°Ã¦R´uö†»ô ¬Q _ûï¨D–A&¦ùöÕá€j °Í J %]Eëtì¯+ w†5*‡ä°ºô0ûuD\O™]Lì·ï_9Ñ Ï~a7à Þ¥ çÊy‹d©ÉÒD%…ä ˦wÄÌ^§fÉÑlíDQ7´½`·Ñþz§Òoœ½wQuÿ߂R,ÅX$ÝçþœÍËçWK¯8ÛË[õkióC€Ô2ñÖ.êîº}RJÔŒ³:È÷9üI YxvÊ•nZòƼFv2G_¥m/@Ì f度ˆô%•aºíê'ßE«ÐG/¶©£;âe%MímÝ]ײW‹ªrgÚ@š¡)¸æ,ø—ôŸê¨7öR€¸S>Þ…OQþ‚m¸YkËhã<wdPÔs:’è¼Zi¯ ºã³;•hsÌDš)Æ_¶û7¦. ý]yT,ZT#Œ ¨œ°âíIJÙo‹9ò¿ åŸÈ1UýIÃ÷¬°!¥»’iT¯«±Sù§<ɵrÙNYoG•Ó@ª Ù–oç.¡^$¢T%Öîë6ÜÍþ\cS;Qðƒêb <•å¹{IÊQ%¨)`º“+¼@SJ®$ðé}µLµTÖ^¿¨ÐrÖM’$¡Ú™À¡pÚ;…ô®7¨VQD‰´„梗²B\<~b-4ÒuãxA¶´»À±9ÌêÆúIlгX>ÁÏ&µƒJKU\*RG4‚R{³ê/M†²wA–CEÊg–±A…l)–š̗¾-Áš”p”ŒŸÑN¼_ä¾Ò‘Fú4 × è¥Û è®K§ãK‚?‹cÝ‚›-HjÛÙ‚‡°ì^Nœ“-qóUpªQu(QJò~nkìCŽ)ÿS˜³Q1EʾPºsœó!ñƒ< E…#´yï9 Ý‘oA,9²Ê]&­N¥+s¶Bo¯¶ãò ÁÝ))”k´äÉ%çó¨øWš=’ŽùhjaZ:Ãð!½¯×AT*陼c’QêÔ=;8ÿÀ4U*…ü$êÉw‘`3ÑÿÑðËO7û5J¬%× ¤(Ë _vçû‡~ADÊæ¨,8"íGNœ©ü#¾¸KбßÑyê©Ê÷Å£”\Fý¥ý¼&I_&ÿ“G.\,~ÖyJ]ת™åÑd£á…ÈÉä¼TùÓ_ZBãð’“öéÜšHmpè$¬cÍÑÞ—mâ*ÁŽà͆z¨ ¥G3uÂ2ëR•Á®Œª&ÀÛ‘°®þ Ë®Öè%5*¤ïÖ‹\!gV4zëÍ æ`×ø=¯Ð8߉ò[€ &m”>JT¯çJFG"“L!è7 êw¾ä]qÔe…)8'=… µ’ŠJ"é;1NÀØf]|É2ÄzI‡åZÒCøc ÷&Ë›/ÊsêÞ@õ,üwÈCÁ#b’Ó{ï‘ î\Šøœ2‡R2Q¤ƒCåÜ9ñô)P¬TVª=ÕïðÉâÞ8²íÁ ùzí]Ë Ž‘²´fž¢ÂV¼×PN‘ø®Òˆž«`)Ê–äNíôîËåì|©›ÂÇz€“õpî4„ö¦ØZu¼O õ±7sž-"õ'w"A¾‡4Ê¢&Ð’EAýSï X­sÈȼŒî¨ÔŽ)©Åi£<î`å§8[çx’Lf}-¥(ƒßÕqʼµ§¢6%³ÉËeÅ Q\{®å•ßc»2*´ÙµûÙ¼¡>clŸ¾åƒ˜Oôâ½Uµ#)#'üOÊU˜$¿r®AÂ`+'Q£’Éšê}j~ëŠBÅOø\Äí©ùW7ozgÅP´Î;1”PíÌÀ-2H‹‹êchAçEˆ><ÐöuüŽÔɼ¥kñ‚‚‚/¡7“§'(ÃBN¡¯à˜}lÁ+åë# 7 }œé·½‰šcÞ…–NGÁrŒÔØÖ÷×X¨™Ræ _„ô%²@9%·òÛRòÕM=#…JïÖ©ÀÊ#.×k(òLÏeÌ=¯ä ·sÄ+Š`åqˆ"™f‡ë%c<ŠF´ÃBäw Û k”Z,A@Âù΀”¦#ØäÙ<%çv ‹#ÞÅɶ˜âñ]zóQ¥Iu2 ¹EÒovw6PŒ£Nf 8Nå!œ†%–¤"3ñzI ^ê)…ÄÔ õ¸¯){`(qânƒwêÖñîã͘ˆ¥—0ìÑ5-ä6(7»·˜[ î'u“lg„ŒJ±¥l£ãcäRwæ½÷ôQÕb‡äÎÄ!­;5[=-‹-F©1©]Ô|•Ü®ã£swéÍiL`SbÖïÒ“·GG=¶’†ÄÛGµˆ-l Òjœàq.g3—¢ô;Ã`ÙÑÈ—ÝÎI&}Ž üО˜¤›T°¢zª$¢¨=^@+UÔ1OzNùawE¨»æP÷˜å©ŽûJñ D€ÒºvÅð·µ"¯2)ã¸Á &EÖÀ´Þ‘(œ ×bò!º~œX5@A~÷¤fÚç†úû‡ƒd¶¤¶çU¡‚ÍC$lj‡“ó×.Tøš}ïóR¹r:މ"4™D÷´ôï9_ YÛDŽwsꈞÎFû%³Zä€TÙÏꀔK?b°’÷©øƒ›Þ©úÆvû\’q”‹A,ïPà´Œ¨æ™ BÞ®–5„5(½ÖƒBæ#°‘øxjÐ3ÛjtՀ⭯ß,¸‹öÊŸ¶Žu™£C·ÐU½6­é¨ú¤ôåùf«=t¸>ÅØœT9I ”Ûª&U´^‡)ssPjE›K#’ª²…’mEŽ ^P–Xƙջõçf×¾mÅÅI¶ÕúòQ··plƒâph¼Õ¢÷V ^Í‘lÁ¸J½]eUmm{n6¤f¨C…9þ”œE¥§|Š=®ç³ÝôÖy*öŠ6*§FµùqV—£c/ÉF]Kõ3”“IÝkÈM–Ä׿¡*–àͰÏH’[:êd¶âŠ&ÜrÇtT++eôV¥äÛž(¾Ñ3Mªà—%”^ªw€M3ÀrÒ› ÆÓ< ê&%þ%4k4çﵕòk/èO0# Þù{?ï¶Q¨ÒMÛ΋,{lüG9E e¯çÚh UaøÛñ¡ÉOŽGææ~¸ýZ"£:ñ&ì®ÇÛÚGM¾ûrÜïUÕø¢0‡UaFʧr8°¯ó™üŸ HÓYPÝW‚¢ƒwÄvŠÎK}Þ´tûØG_LÚ(‹ Pú½ÚéŠlèƒñäˆà|’†²<îzIm¥úUø¤ÿÀª¬›ç¹ÐêÉ&° { ÈÒ˜d[_‡½5 ¨×Maçª_åÿy»ÈVïÉ©§]É()Z-¬W…Ü¡Â;ÉŒÌô]ð:VPÒ^Û¢<"A7ï»N›(ííÔ·K/?—åiÕ! úþ\¤€GµôL•þáêuR‡»ˆ P>}^ú:&~–Lx­ÒrŒyGØGPê(»I©ýY_[‰´ ’‹û83 lsí^صj^Û]tŒP ©¬†7pZYiï¢ÀÌkû‹êýM #Ïi(Î×»Tæ˜t¢/ä'’RzÉlGY¬h´MýÞj¥Q¾˜U${m*s@/…SûÕGO°':ªu {)ÉàvF 8ÌÞ£Þ©ª(Ï&'U³xÚ<÷1ýPÐCËߣLÇ™ ²æ{iM°BŠR©ý´es¯¡3êvÔ IWu¼ÎXØ •;xGŽz3ãéA[R¢@Ì– –áE_RR_wüÄI¢¥:~L¶¨ü»Í?ŠOp<§Ç“Ø`:BZ£é2Pí•ãxý¼÷j»9åÎÉâ/¼Þ#Ë¡æÏ©Â_]§+_þ½tªw(e†ì<¥¦2¦^opá ÒÔŠ”ŒOOýEœZŸ‹Ãß–Õ#dÉuÂáËk‡JÅÇ*g]3ŠŽ6|>¯‘6€$ô/5Eaki |‘¦6¥µŽñÖËD¤hÅÇ'Ñ?}ªâÙÆT„Ú¹&2Uãœ8ˆEÕ~•Î`-UkÑ™gðÁ¹ål^±)RïÐ#û «@ pe÷ʾ}úg…]ņf> ‘:G•ƒ©Û-7Á‘Y/ùò]opØ´>úß—W×ZŠZ(Ø^òí#’9ø) zá}À8±>Õ R%ÒÓYΟlË£[ûÔ)ÑPµh¬ª9JrkÞÓv‰ÐÊ1Ì šVA€ÌD¢Ri4ëz\,ÊÉçË›^Íçu±žíµýG°Kžˆí‡þ­DºDiu)ä`‹¬ HÍz†ÈÜö[[Þ8ZÖjïú(¾j#Û§U‡÷œ ºZ©' gJJTÝš hCN©çHýóôðèAAŽÎý@ enä—gN#Ûa,ÕIÉ¿áÑV„ˆCŽ!ò/´'‘žùžñXþÕxxPjG†uMåÁU¯}Áê¡©†Äx¬s…ÛØg¤9 3e³Ã 4Ù£*Ò¬ËKo'*GdÙTQ,KŽÕ€‘=|$ ½‹ËGUe³Ôþ9o³¯×CïH±èˆòL)¥hOfís½6Ð)cBBUxíck?ª3ÔΤäÏdëó¬§0‰£yë\à:R‘ÙÌŽôx)¹ùëÅÖßo¾—ÝŦ¢<öäˆHú±¥’aMURæÎu&²ƒ%Ú‰¤#¬’:õBTïà³M»ËRä/Kø ‡&{Vì7Å œ¶Ð™˜ÚXÊó×Ū§k¿[½¯›L<þf}àý“ê.ÞlNcµ·} êuÊlq&Ûó"ÅÖÓr±ÐwòØ:¦QÚyÉFÍJP‘­oÇ£>mp”íz{h[´Ôp<°%4`œ]m¿‘X_ù47A_7ñÔ8æStŠÄž²Ó9JY¾jñò¨^¬…8\ÍË]Ö’­üªõ¼·|©²¾ðªx.Ð^sè¬ø©)J¯qˆHƒêÿ*ëÑM)ñÈž4:K9¤åÇä*§‰*9 M«Ól!½jú¶ê9+úI¢0ú¿jÊ øœ³å,Drê Tc4o_ƒ_Q£^륺ô?¢h”¼uö•lûQ%*pLnÌæœ_t0ÍÜ»Aå`G & ë4©”£X4•Sy5é½ÒÃU5ˆœo…{Ó@Ž&‘®Ç¦ä3«§‰9Š{((ºWq²êw— ¨}€š¾×oNþp:\J…XÒƒ(ãdÉv±8œÊ%4'E/¾Ç¸'~xû퀑Œ™|4ʨ7>EQ,"°Ò ^lWï´j ½Óú¥wž²,ͪKÎûó¶[VžºœqÀ$Ÿ˜ý¬é@Õª‰õô·Ô`‹?41ȹ@Ñå ¥ë–¤/Ù_½0t¥&tîî‹Â{lÐX/–4h®2ï¿M#õoÜ'S–ŒÍ]5%”!ò^M©éLn®×I,{Óæsq(D¹ÅjR¥áv³V‹\Cœ`«äïhåhGÀ6Wâ(òA9"Åaà`Ï$Ey3­lóä=³îTÂxÏÿår¦¸Í4ãE=æáèVÎs¤UÄ~ÚΞ|ƒ—JÈù/ŽO<úå㈒©‡Í‰ÏÞ­ÛMM5Péw†ˆW‰ŒÌhªÚ"‰aw:â÷—·á…@ƯlJT €TÄÅ|¶¼u&˪O89.Ö•!{‡HƒÒ×iíJ’‘œÖüÌAÃnZ¦ßK½qdsUA"Çõ£€LXMø Hæ R?¾>ˆ˜Uxµ ¾kvôçiE(¢F¦h’h©îç8/¥kÚú(¶î†EV j&òá+UϧõübÕÉŽù o©n9‹÷«í“­ßË8•œá”§)>ŸÕÏzÆÉØTA\Û9Õ.(µ“¢:^ƒqvdìUÙ@ö[_êí}€[ð Òœ1 ʺ­ŽËVƒDÁ%ÒøT.×¢p]él* 'í·Ôb¥v‰šmª´lw&ç-—ÁÜ*žú¸­éߥ Õ’Þ©&ÖpNMum»¾“$ ç(pL—$¤[®§âE†ÌZWµG¢;l0·hK_&¼WE¯'›P s˜ÉŠ(¡Û£Õ(°ýv² Y~)* ¼¡Âᧇý©SÔòº9­MÚßÓ¦“ŠS®¤¼ü[dYDQÔ> €SxÈê4ÈK( £À¨SÖ!Ì÷\˜HVÛr7© léq\J‘—ç…=‹ÂL¹ñ/NôÊq‘øIÑõÈ8¤šâ(rQ²f6ó%Y¨ºjËDf_à»XÚØ¡ö™)»GFúÊŃŸDëIǛ͘|Õ)ö=-2c*oÕÃË‹nÔp—üP'ݶ‘$t{{:Â7"‰B½ŠfEì¶r.”^õÑH—À¼8¥·%šÈr™†b ˽^•cå ²!G½ÌÁ£"qìxoÐ>RÛÖ@e' søœhÔˆÓ‚Z[1ö¼w÷R¡(£UUõâÂyipy_:k˜–ÀžÇaàSlYɵ©*Ø ‘0Î(bÊY0§DP {(ŸÍ³/óâ󱀉ã/™C~b‰€(ùçÁà« ßÓ>ëJÍ‚8+“ZlGÂì 4OÎw,·Ê«¯rÒÔ䎟« º3x@}âoQb¦÷íhëÛ|ØsÒE»©ñä8J@{$âNæhºSð’ýÅ”O5Æ9W%„|¯óV÷¢œ›ì]ÀT–_^aF¯njŠnpU®öCÈ•ÅH|oWÕ3VÅpf êÑr°ÂÚ~š¡ŽƒË$32°6 KÝês¹º:ÇyêûʧV?•è¨i›}5Z|¯5ÕÊÙ¬)Aüh:#þVµgÔ·ÞdQê9k=õ>gbÕ™ÈüIáëxdÀ_™´ñ«jšôÙ­Ÿ‚/œG/3É„Á·*¬$z"%IþÊKhðIãx{W³¬z1¶¼©é‹€ï:9Ô…üh‚ŽÚºßŸKéÙàó{ÄÅtÀâøHå°©:©Å¯VvY_“=–öQëUG×ΉþÉuQåM¦û$[65Û T±;k(ôÌ‘“h¯I‰‹—ŠÀU¿Å—¼jo¤”¾l›'Éìt E¨&ß#Tð8z¡³ƒÉèr:ÿâ-–t×ç–fa%Ça8Œ’Œ)œbµ8ÄëHIr®YÁØÒýÈöàéªÄža˜¬§ò*™!óѦšüCeöP…2g^#ñ ¤à°ÉË̲KìªMúòµrÓÔ¹ÞÒ˜™¤}ÒŒ×@jŒ-’«Zbej §G µk¤sÏ‚(F½ L‹OæòΨ¯½ô¼o)`kžÓèÑ,È‚yá ìÊTŒê}嫿uV¤ð81Ã[»r¯ÂJʇ)訞N“¹-q>̯4àtäl;±êZ€N# ‡là/‚?)§³ï7.¢O³Ý£ÄOKõ9Q';Ü`Š‚Oª*¤c–ÑKμy¶^')¥x=œ¥GXÏ*+æøÿM!õì;Ë^X±"€¢cêqG‰>Ã=y¶Í—Ä’—8uˆý¢;„ß´¨j¡™9=K èíåwa^“˜Ô½ˆpÀˆr•d§iÚÔC¦³Ž¼o½¥¯RHo¯Ëƒ†“ÀX.;LºEí{âAv]â;íþŽ5å •<ÿ)p²õ®<íÇ)®«ÝZ»†/øGÝœuè@âY”yU„åœÅM.¢:ùÔñ$Dt½~È4›PuºÑ2ý_¯¸CŸg¸lÉÉ ä"+>ÒˆqBWesQ†¤Æ+52Sx•N_šñ!n•Ô8Ià ÷öóަôWjJðëÕÎWç™'Šá•Dµ)¥ eâ«3î[p©2”’ŽnUŽ]6çäÒüÖ>Ž®i‹oùD¶5åLxùh Ή¢¶LYeÛÑÁ£çênå8•Î}›àQ³Šê>:éL"GÅk[¥ûô,äà{“±£CaÝ9°ÃfUî`«ÔM°Õij‰«âÞvSQs¶i¿äBF— n >*[ió–@!ÓŸÔübØTîFSL⨬æsï¯qÉC%È"èèÂä\/¾y@>Möä®z—hÏ—åüP’:¿’Ûü‚¼”­â‘x{OTˆKÚ©œ;µñ@Jè¼ú7 Ë=cô’@'®[2ÛïšÇ°U¡Mò$P­…µ¿b54bÍIÃK>›1|aÄ]$ P!²‘”b ªš«MfޤÃrÊR~JõNúöòPìGsôÕÐW­„x¹NnÔº‹8öQ‘å³…IÍ3ì`i«û …‚>ŽÒùÕfµÝ)AóÅ6švÄã¡T õà™Þ$@{7_±7|]=¹žYÙHÖ¨¨ôíwi£%ÏA¯«¥Gè2¸Å#¡5Ü[ªƒIy{§Duî¿5ÇHraú¥a¯Îa[×  Y…èf_”­®c¯W°Ý*”·}©Û±*B•„L¾é—g"I’Ö§À0'¼•-Ì9‘†cßæ¸]ÛSY9±i)™Ê3]¬±Lk6J DâÐB¸ýOžuø øySú*nEÛdKòv(,02èIœ®Ú÷'ãÏÑ«¬çå øyC"sƒ3©¿ŠÍkÄœ(»/P˜/@˜vH–ÃûÄ 2{¤ëhÿQ“ ’8¤]Ž’(uòd²×çNѰ£·–›_Ù! ýâˆD /3*U¬MêõobÚ)^u Mâm*´WgÙRµ ÖÎ0èœû âj¾p’³íU›¯Wo¾ô·¤ Ä “‚ÚÝZ´gU–¥iãTýNXvÊG™@–ñfpIfË:ʆùzYÕÚ%ÑšCE°è‘ðšö…Ž ë™“n_š.ØÄ¨X:!J«SÃS¹>9ëŽ(/#uØ«n†÷qò3':.§åïgç;oõ´óº;³ãþÄ¥U®áÔ¤¯v2®Ôsí«YŒ­¥˜M¥ä^½rÚ9”Ï•½ß(ú(D4Í[Å[3„M«–j–\÷ÍIœ#G”}o {¸ïÕµa tz‚Y¤{kS¤Òͬž(õè™ùŒ ©Oï­wßíêTþªæléé<Üaý)´[ìfm—­Ê*½Ú¾a?3lE®%URV”n߉ Mw”¡ôû×C\åÖ”õU°ŠýCÖ~’÷íbÙ6 N—Hl`å$]¶xÌöZót)‰)ò5ѽƒê ¦q¼¼CI:¹Iu]i$¾u·JˆG²~éèþ’–^’R &¾¶ÎšŽæ­çG7ëõ=¹Éy">)yõ³_õÇl¯9dž5dï#9WQƒÎ»oÛ6ß}&Ú®à&ßkXØË^4Ê9v{ñÕ ûòÉ'‘*†()?Ë]<µð$© Û¥x/vL‹z½ƒ]>=Ôå¿6ö¨‚ŠTϱGnT¯ø¤R™}1t|UÖ,ÈKÔy²Ô#™¨@D1ÍçØ*9ÊqÈêÚÎŨ„j‘­NV8aC´µÕòH^éRÙñnYLGC;Z6OT¹J[KÒG‹cµîÉp_)¥ok#í›EŒ¾gÔùZ=œûÕBw«â­8•ƒØÛ–å/¡C¬¼ó5)C¨=j²í*cçóé‚HÓ¸_”b ’=l;Ž(5ùá jLm›¶Þ÷Ø»2Šö(TAÕ±Œ$αŒÔbèNe¬Üµ¡…Œzó0j˜—*¨Ÿkå94MyVORf|m‰±ÓµqOÚ”†S×p^øØ ¢—ò_!¯çðØe|Á×]¯Œd†o̲Zò|M*Dð§ž^Š Û%`_Fa¾mª¼3ÂÊ[¬‘¶–OºTN è¨Umì(êÉN¼-uîýì$¶R!UºŒPRu²»ÈØs™ZX)UoA4ÌdG§«6­Rˆ„«9Ô"¼³kÇBhq´åÔ9.¹!عӑ².£»¿| 0Ùhóldˆ‚-$ئD{í05ž«‘|¿?H”l §ÊhÞ#ñ¤_‚ô´Ñ)Tvt{¬›rž+{“ÈÄ‹¯is´áL¿‰¿ò&‹èßÖ¬v½õ”ß`*£°®ñ˜{dr‰Ö—š˜=,œ³ã7(W´Î+6¡ø`»»¢zúA:pQU-è¶\UO¦úÏû€ÔÚˆ×ÆáûÔüJkÌðÎÉ*S½o;×vµ9æºVÜ:+ßnojsªœËÙÛØþ8ßšXåCm}>_[®Ü®%%½ßœíÚlÄuñ~ ÏfªjíÚ'Õé…Š/s.“¾,^é¾î•¥Þ(IŸ:Z¯,â6§™äX&ØNÝÄxwzÊ?µ —œÌξGP£ÚY)`PЃåš'‰¡wQ&c˹êi­4GÐXWoŸ[eyMä^# ˆÍžåÁ¥ÅzY„Q‚tq¨GÕxý£‡÷Q-̘%X-½Í©þ+qóñÒ‚ØJ=ýííB½¤%,:e ‰Ö¹?Τ^J·¦ÅZ ¿^ÒÈ—·ˆÌ,‘XK% 8†¯ôzb0¢¿Ã ·>Ó†¶ª]IvÕO¨ƒ‘HƒÎå`T' ´xäb¨P›³Ž¸qË,PãÖrN‡ƒ~ç¬ièé"¤3oéõêÎ4𣗦ӕ…3œ'YRÆ@º§½Êm D`Þ£nÞ¼à%OñEl  µgõ[Öq–Òûòl®‘ôʸtàStz’ ý¯©8¼¸ôäŒãú#‚"B22K®/(ï9.àWV˜'K•Ôä‘ù{·“9²©ó)ª“ööÒk-e‹8;¯Óï%Q“í2¼ÔÍÞ`Z@Gàvor5»V³õ MåwòÝÔÐÔ’¯Wšòq<ª:þjRLæsZ§n½Çsu§J½i©æa'½?^£Œ‹ÕQ…"H ]°NJš`œ\ѧç›ÇV7 :B»'+Kw/—EÎVŒ’ŸÇi{E§”Ö"Ô¾ ˜!ˆUPÀûî`£ŠoÁ¢ìÓ5;o †s$‘ýÄae8 OQF2±B«S® yÛZï¥Ù°¬IŃ3ØÎ;@J`Oš@oL@½.üoQ…+i¢x“r¬‰(X¿Ka [j~¬\ýlѳ±^Eâå˜i([ÒRæ4 B{Ö#2û¨‹ÓrÕÝ0­ö¨†çE{« 8nŽhF; ÔLÔòÎ`Ý:æíên÷ƒšIaþ×>*Év’NBJ¯h”®–„Í Ñ¬ “¬­T¼ªß(G”6ÃKQ£<Ûäø‰2ÁïÎŽ[n‹û$(ÍHKØüà üŽ"£ÿìŸÇðwÈŒúW›Ðèò{)5êWûÇ!6z÷·r£ç§ÿ^ÁÑGNÜ?<ÁÑó]ÿ†äèóÓ?üUOì½þÞJŽžþ÷‰Žú ÿ¿ÈŽþ“Xþ§PþAh†Ÿ~þ³?ùwÿá/«¢™øƒÿð§õ'ÿž7øÿþ,ÿôóý%æOþòß²X¿hyÞ?ýü/ÿä/ˆÌÿþOõ ±þôó¿à±ÿñ/J*sþ)_ã¯kЦøÓÏÿÚxùÇñ×ÿ"û†ñþŸþºôéÍ«üÓ_I…òQÿÅ_üÑ¿üã¿&›zÔGÏÿõLùŸÿÑ_üÒýŽv{¤@~œìõÌšÃuA¼:E•+€°(Æùs)?°ÎqxÔ(~­Ï8NR±4}2£V'¸ÚK`®òVW(š5šÏ~vž±uG𰝢 @箥覬NRzW>u=½’êÐܤ`VíC˜¥ë=5íê‡ Ô‰o•¨[¶Ó³ú„:x{ÞB€¨d•*•½¬Øe¬>ÚéÜˉ® ~ì•ó©Õ‘à+êØ-T§.ò–d?XÇ­rÜ«mÞ¼Ÿ9Û¤4W/ä•霕%¥à8Ú©„Sé°³ðQY%?E”öžZºt9uîñ’¨ˆ™÷áÀ_²ì¦†ˆY^ŸÃÿq9©¢T|þC7)¥m:$:iì«”ðiºcYéj.¤Òf•ÀÛ¼kWÐÄFŠüˆêœjЫÜûäÂ#ÿ¤„¦KïDݨlsõJ•ʾRIÈÙÂxkj/iª£)OY9)¯<׫=Ôè’Ùîä9ë^Ï$ó­÷èWÙ“RóEF±È×\Žr*+}V1_¸´Jü OD1Cž©|CÇ%šô†ÅÑó=S¥8bñSÕD1,Ö¤.ª“ë£h–ÁËÇÑã'jûì¬hïgrm½Äõ)6j¤ºsZêv‚“˜Â5Navägbó(QX41/Mƒ`íËú+ú’|Ê)u*L«JŒ|=™Z¬ÛÀåÑäècÞN5Ê­äðâ{Ët¢æ?©ä‡´¸'ý µ¾ÙÊ”L|A¶½Vl÷é[[X–HƒÞõÎépÛü”bœ:@8»ö(?(Yør.í¥Úæ)•;û_õsÛÅe•Ì¿¬übmlõxÚxl™xèk‹²~ík<9}å@éš9(d28-erf‚Sí˜C¶×tFÍ{ŽÇ¥õàÍ/ä©;K•««a|û1Ÿô/§|~ub§¯£±[s8(­1Ƶk—£ÚŸÑ;w¹Ûgü­ MÒŸ®÷ ÏK&³|ï]¨ûo‰uRè¶+ÄGö8â8¶×¤DŠ¿Cí6õ‡ÞzsTm¬…ÚŽ*Þ©))èÃTÙœ ØC‹Ã@Õ«9›Î4!îås´‚ƒ¦›2¤³iÒë•9¬„á¥B䣼Æ3¹~•¾Ã|ú[‡Þ +¬p˜ë[jÁÕסäpUwTà´[4³VIEÇ~s$)$v{l€ëåN`Ô2L Åм껎º³“|&Ú&±¾©€ù®Ù;v›ðS$``†ÃËé±ßÌ4"Ò,9ôn«ÕÛ =I¤ÿåbóá߽ÆÂìD›Í¹yŒ¦—·*¹F}áŸÁ!P4YšÛt {5Žû “£÷9+¦ì¥ö×g¬ëÃ{8šjº<1SÁê§ì®F¯|ôqüèÆ>ÿ-´ë2ØZTK›l„§x)V•e iÜ·T„+V²Ú•|‰î+;ÃÚÞ­I[åê4Ù‚eRÏéÓã½WÞ8xYÒ…—TßR(['žX~H÷H“²ñÀ9ú““«`@Q£^6ªœËJ¡§%QÎ.ô–ÌÝ5¯1[¦{¼99ÍÑÞ¡u[¶mðâ–­–±J©*!~„¶»ûÔR³KÆ–‘¶<´/~Ùéås¶Œm@hCQEöšI‡0ÜÈ N9åÙHÇ’>žNây[lÌ”ÈÃi3%7>»$×ëA\š[ãKå%›-W¶vÑþ+yE[çð!ÄIHâ‰ÉÚ%®`o#z‰zGûÄšÇðŸ#vg÷²eM8LÂr³UÓ[Iëóx×ô’¯÷;#«Í™gÙ“Y…«‘ön{½òÔôfÿÈDG~îc¯©ƒIø÷%«­>÷qËÑßæpS Flšð<Þ—zÅÄëVå¾VвuTæ)¤|±eILsØ+•¶â° âî­¯òf_¼|Gµ ÇªŠ £ý+‰æ»ÔC%Ä×d?²óºíï~K•ÈÇÓ2ð€ðuÐE!ÕG¦f>Ÿåâ»Î¡JcW„G‡æãPꨊĚ¾f$;>kqÆÁ:òòHÙ›gñiäÌë²1íVQ0½UÏï S.B—òä©êx§”*É¢½w¼²žRy‡R5»ès4“m%%`Xb‡ø£¢•ÕÓ[u÷»è‡+G™O’fR;¯%9÷VsPïé0÷)Ú¢®²Œg@ÍPöš=rTÞø¶e«IÙ·¶/žH˜%ðµ–çMK^Ö°¤•€.wtÂC3úG{t"Uå³¥¦ª}zB»€vô5E­[U_E©ãâù×f Žý0ºÎ¥Ë³VS]iÂC{IZ÷U¾—üûή(àÓ;-'54½È–ù爿Êâ€> íЧ^M²].µ3oIªj%L³†S‡ƒþU5®2ï•ê®õ ©»€osîÅ©(—£A¯Ó&ãHž.†ÚAr:ÉU‘²à¤˨€ÃaÚ ]‡s¸ÝHlã¢_g$‘|ßYÎ|+G¡eƒ*¥Ë!RG?£Š¹éSc¿¿yɳXÇehf‚¨,}ãoÉ»Ze]ƒHýáôÊ}H;ºûÞ¹+óªô#hXA¯(šT¤ŸN™áôÂ^™²èº]®ÆÉÌÛٙߥœ­szÏ’d•Kë©ÍänS|½§#ÍJ—Zµ˜Z_úôÂÞ„%xýò»ƒúÞá•þ¤í–üÃ|S&|¡*VÁ?[m)õÑ IÎöjJà€émrFAí¦ŒZyŽ3ꘛîï9´C¥'‚¦ž×uí×®r£ª :sl“¢mZš¤Q«2sŠÙ5êdkЯМá’G1B¾ô;`+¦ð‚ñ(ÁìLUma£|¸ïëÝä@„^éhðóé³äPYQ:=d -BßÛ®²j/, ¨oë­¿ö"¹¾²ÇõŸŸdÀ@2ä] KÊ2‚‘šÓá"|‘Z„Ì!­|3Ͼ"§Nq‚ ܧVtY)”Lz—`I0¬ 8bsvˆx‡Pr^ßpµ!(Dä@VfF@E` ­tñÒG®Dãí"}P­I;[‡c#•BYÑËp~Ð%KœÏ¥WO¨=ΨÄiÑÞÐvÛò#Õ9]Ë:P®yÎù¨ó5£Ð(÷·.Úý;^ñ*µŸ³ËÝu¾Õ^ÁE↣6ÃÎ|Ù(y¯àE§¨9[gÞF½×—´&³¶ß*ÎRÿØdjh^í IÖàuË9§»~«×ù(˜¸ÓTÀ)Ø.e‹?¶ïr%Ktgmͯ¡MôEe—Õ?i¬/ÑjSø<Ë/7O¼ë ,M€úQ"ÙZ{„ªx?±]T¥µÉv²šçÑÈÎ[} 7Š¥‹Ðñ~øxÊùåW÷=…÷­.ç¿9üjáwå«9dݺóÌ]ájŸà Å¡VÖ¼òÜ”@lQ ÛW2Ùîjî ð:µG ARÈ)î¨â«ôÐ]“’Ê—»®-°“jgÃÖ¥‹î×Ê; *®®À»€Ò–(ÆØ áØbäX™÷ÔcÖÆKâŽJbg ÄòÆçª¥§„:?ÝgŽéS"Á©ªË ìbJCMúÙ½ñ³¾URÎAð!®ñýT–è Ä ê&;¹ÏžÕ3YíÌ¢ð.#uÅ =\ú wX$Ê稀œDÐ`^êR^D‰z?ÜZwr2\5z“BRç„€A¢J)=­§ÅÝ›ËE |œÎ´{CÁΦ —D' ¤WU¹ô;+ÖäœZòBvö†ˆàÉ‹u0s=;gI^‰Š™kRÎ_Rn;”U²ÞÎÛ9¸{ÊÂ&,]sRûtýõ”ÏÎå§‹ëT »É¢ÓNYÉ»ÓíWóÆHæTšUDç˜isðsT˜êÌ› ²ºmÂx+óÔ"Ô¿XrˆhW$@Yž9Àò eŸŽÛÆ $Ù|ÕËÂ@m»–D=˦§²JézØæ²™»b¿@ŠLM§yæ…Rª×GLDø4=Ñ&F7…¤uŠôNu^œ<×><5Â)éjÏ+k“÷¹T"JTg^¡®&ÓÎ|uB~ñ@¥©¼îfcôÖû—\äÄ<ÑKuŠ¡V 1 ©CÔ}cÁK¿‰åïEøÞÄ&Þy:æÔ,Uœ,çnk(ëæl<ÕcP°®*^pëhž5œ¼Yʪš¼F²—5[¦‡EºÅðå´\“÷!Å‹²nÛ¨×׬Lº’Yæ |ÌÞUòHž¬‚êÖtEaeA­™ª%·_Ô)ê6êÅø•e²Ær†àùºÔ¹¬(ÖM=Jäè`7jÖO=éÙ‡“äªÿ%ßkj”ÎBó õ(Æ'ÍNz”ɤ{< /zÆ{r"ÁdÝ#bu/ðç x/ž¯Í29#ì4øø˜CåãŸ#Zÿ"Ø¥ÇÙýV6A‹£‹Ó£¹vö¥³²?„—åmöt*Ñ‹†ó]£X©6d]‹£•ݺQI=0uRíjg’Ïìh÷#Õ¾¢¼—êÜ 2ŸAÓB©;ªW&WðÀc+àØÃgÅíÁÂÀjž©’.“­ò€´<øÔÉLÉ·ç©6/ÛXsp XßÜÀf ×pjâU™ Õ|^oñågcóg¶Uwî›DÒ¯“*Ñ 9\Ÿ#ÓJ^…Ì·rQdùS(Qf¦œÈÞÃð^BxÝ®øEýú›˜hu ©)Ï_dÝQͲåjøÁºõªó“Yä9ƒN—?ëò{ô¼Â°ò6Òv:Ò7Ùd°(&Å}cÙ%«óªeƒÃžù¹¼¬v:ÿÜTê”:U«RüPEø—C_ɬ®ÍqáÐܹ$O—¹{;BHܹyìcŸ‘j¢¶r˜ªòRÞ0Í) |SÑÄ#¯eŸIyõåŒâ÷†]ýÂ>d@i‚¼4žìdø§Ët¤B~½Z”=S’ÃY"Å_VÅÃO¥–è|njŽÀ®ðþ€]Ä!ý'Rø ÖƒjKÁ¥ï—&ß!ÏG>áôÊß"á(‡$…³—D°ZžïK‘PîF@¡”³äddÝæVZ™©½º»qH5w2{1 wJmâLR.«%ð²0çì E`¦ÆÎŸ*ÉkR”™ÀGŒ„=2îQëTr JfNñ­R æ>¢„"“Ÿ¢3ºîê„`޽^Äœ®Àÿ¹ìb÷JÀ“qü¡¶@RÏîµ…¶ˆ´ãðÛqÊØFõ¾·³EZ¹UIñ,]ÒªÛ~ã!ÞD¨€_“© ê/–Å@€T©;\Š#óÿÌÆ·ss‰já#ÂSež¹šoŽÇÑw»niÛìY"•ä*àòîp‰©€IÉØœó¬6L.ä¸Ä.^}ªã Ô•£.þÅÿsL¢wݸ»Y‚ØÆNRl®ýLÒ+9 sçB¾¤;éPî“À{2ŸÏR‡Lå x|sÉàë½ä…G‘ËSÀÊ­^‡žuzDEEà¶6Y„ ¨¹X I¦U™'*{ë]Õ¹À½ˆÛTJÕ £ Q²Ÿ? E¢&{AòËð-§>ˆcÍ:xâ7?ArÊžŠ °¡ASò^>˜H5Ía·Heªh¥…Ì­TEKl7UÉ dŠëgRHš*+2ÅIðh×—´ŽÌMv6Y?ºâËE¢ Hö/;‹ÄK*Sê~³Ûî„p‹šc‚T‰Ú³<™ |tßšâ{Û»´™G戰÷딜ãÌzéÆÎVÒðØ´‹Äî#s¼ ´×¤Úa<ôž&êÇæ¼¿¨a——a²ýìÿb‘¦‰ßÞ#Ô¨^hWZ§Æ$»’}¯z¸Z]6ôçÏHí¢«=œcm¶ýÒ·>6ùÕüË€ÞlŽ “"¶`b{Z‚þªH4épá ã9QÔ7ÿ¤zËé4gTà›‡ö)®\µuÈV–%—wsB©.0ø¹n×§”°òùôßòÊ•O æm jŠÚGgùƒrºŽTæÔ@öƒ ªÞš‹ÝŽtñ«º°š-ÎíjjÒp›3}<ÿúHm$jN/mÇÛ.ƒŸ2J²+yô”H@'ô÷_ÇTa‰¢ú|D#ÞöáP ÙEÚº½)ú†’$C IŒ÷ ÀUŒâxBò¼¨_ì†Q±=]¥K`C·MôLu¥neôTòµßœâáÆ;›êÊUª×\¤x §d€É጖嫶£‘ ®¸‹ÎŒàžB³òŸMo3;µäý®,Û¦u™éÅxÏi¡à8ÃÙò,¾úÐNƒåÝ~èŽôŠêh9q–Tcãû6 œÔÙøÆEpC[pvP˜!;dÏG‘ØfjÊâµyD Ç£ ’Óô`s¼ÌxâD¦¶t’ËŽÑ›•§ÒW‚$ZX’@šI,GÊ%¸ªÝò¥ +ÈÂã,b=ÂË1 ìZþIÓAÝ»)>{ì1¯å€>¶|M3×vÎö\½èÒöÚst=êK}9ï£ÞRŠ^lz_êìBVµŸúáûÈεÕÏG®4»j(ùñÆ”çã7%ƒ%ûqN+%2xí È;Û”C­–~Œ*Up:‰CE÷Ži»Àý(P²‰æÇ&«pɆyõ}ôê‹ò r*S?ú‹=Ê.Öª>‘þ[^ì磆̛ťÿm"a©FBi@~.²•“b,W쟓-]°;í½?vö/T”j”õ²ꯡ½ÚÃY(Ã{k§Áœƒ&£p€Ø&ž*/ª+£‚Ôõ\+—º ºtN=¾ËC'NÔÌtÊ´‰L·H«Î¼Æ§qŸû%Ö4Ê9ˆàùé"¹.j«b ó6Nß;⊊ä:• `è‰I^QóSugy”<£üߢ9ó/÷|<áÊ’ƒ¯= _ÇfÚ㤠cíðA? €îÒ>WžŽSED>5+´ þ~ìZê=×N᧘I§ÇO«»)8º£j…5â ¿§ÝŸƒŽ¢Qc0ùØeÜã*³Q¤TyÇÇW’ÏÃn|ç}É/ªãPÔ {tq$…³Oä$bÛ¾ë ?ȼº¢IìÛ£k ÞÖHð¾pkÍiá›sÓ„v¹y¢§<¡ 'êœå\u€dâ Šx<Ô~ö ym·q !¿8(8¢«Í3`H!*2—ô•úÔj2QkíBòìþÝʳL ¥DåãPûsTÇm<±<&X~óu.PSk>ÖÁÒC¼4©€möW::¿%†øµqµøÑˆ Srnõò(TJ"pf]:_-“cß]Q-j×Bðºß~ÏŸ,iÁµùÂOé,B¾Xbõz÷éIÙÜ$vò?D/›Víª[¿Ù‡©o²yÙ2ù[ýN¿N\æø¢´Nãcp6ŸgŠ¼Ø“Zc‚ÒlKé'ÂVðŽax­-¤Ë>®´Š|;*Ÿ56ô®§ùl©ÏY8è áQ΀ªIp_¤¨ =æ£)ÇsLF—yÓ+#ÕüdzÍÜ@idLÎ ž:ËËèž—Þ{IŸ¹…ÕÒNONóëZ¼m&Ó x¿÷’JQ5}UÅ_ZÛ µ§… l vÍtêÒrë'ùhµ«¤Ò‚À6!ªÔ[¥£ÏéÞ`y“etôÑ’««šBÎKêåEVòÄ*+Ÿ‘щBÙ]ÇN¯•£¥¾‰$ÚRÈü±§Uú±J¤ Ÿ^ZR8ïŸ@Sÿ¼Aª9~=z0L•&¢zÊ<ú8?Šw™½Äç”XÞs²Æá¾ÞºP®"q¥9úe=®ÆY‘ ¤VŸ‡b±•¸¦„“F:∟+7“аÈÙ-2ÖZWýVúÃ6ôjåã ä°ÙÄYÑ㾄W”S‰âXíqNEq·›ó:^)}`Xæsò¨)N¥Ä(ØØ^xô¥QyF WÕz“׺ßC©€·+Ze(ó2fª‰ üÞaØaQSãaaÑ#;¹Þ¼þC m¥:_}Ú¯^9ê Êá3hLJ>}õ™ªw?•H‚mCPÏ'NàÔ!I*¤رvëBRéÖæ²4uiökÕ¤hÝÑZ‹£H]¤/˜³äDø*ùË!¿%×ø>ŽÙW«'VWE»^ÞÄ;—€– f}T ±Ý{ä,)HÉ­ê8I 9Ú/‰Ðƒ¢VÖo+êv(ÍÛ¨XÙûRÇñ±´í>›uPFTvõ~º0Wר/)6Q´!VÝñ‡¼¦á»ØºUç‚Ô5”œêˆ¤ì³×‹îÒNn%A“-ïö¸K{“ì ç&µ} ƒx+@µRrIÕ=Z_mK•ñ¹Õ—¥‚ÎM£oâä§²dèU/»LÓ¬•gs‚U‚Ô£eJÔ .¬s»©‚»2ó¢&hF|4_¡zO§ŽçÁÒ §Ë×SÔëÞz©B¨kéÒöµµ6¨XÍ\e‹“mÖGhf)ÇòäW€¶IZgo§„@™Z‹7¶`îmK¶‡›lŽkI´/ËRRàF•D¿¿†ÐŸ÷w©l¿ÙÒ+4й{0˜6ß®}Ÿ¢h]Ú°o¦L^š1iP[>‡ì¡-I5:L¼(s('—Fg÷ži°¤OúÔºIÔ4Þ™>öfXÞEÊdÇkèµ"‡„ØÄ^³o¯\÷£>ýÏð"fŽë1‡%0|Ö–.~y‚‹ Èœ$ŽßgA·ÌTÜÑ}úÖR•ˆ‹lõ‰>2{GMjæ™'%üëC÷&óÌ~ó¡*+ —R]ôúC R¶0-øRtL-Ðá&-ob¢­ ïYùÚ®©IŸJWÓŒ³.Ÿùz”þœ^ QÞÃ#¥ò–Ÿ”ôÔúèGCް?'çNk7åô#$\ó‘–‚!?üb½Ä›Ò®b\S:AŠQ‹NBšþœúÉX<*j^K1$Ù)2¤)'NU×Ö¹ÆÔûÖuÖ—´zÖzn¾è·n·AÏ% Y·P¢‚©º*æÉ=Có×åÅHKµ`\ÈéUÊA«Xl—ÂÙJKy¨ð9‰ñQè‹4õáÿòÏ<¥ t…:ñVß+Å ö¼€ L7ÖÌÊòÚí$-û§"µ%íØjD‚[½ryÐñ›®fÍ™É: SÚ 6ã)8ob•æLĬ©ÅË»*U&É`qlÁ ˉ¥ë6ËËà:“'ZŠË•6Ë»žûp«Q!²ƒ¶¾ã /dÁÃCa󉮟[Œ*óuŠÄ’(È 8À¯ ’ ›ÄˆºÕ$OOJBb(”Æ&,$À¶.p;o}m8§S¿IΤÎaªÓÖ M£=²’ÖÞàs'-Hä”)ûqVJ½8 ðƒTÒ¶Wìn“|<"cLJtŒ/*"þí±e±S¤ã5GY#Nóh­à[Uˆ˜ÀC4PþEvq'¶Æ3ÐA‰¨åUÏVÁ’u[¯N™óq —£äÈnàHÚÐêœÀ×ZkÎøê1ñòñ@Ôg€¬%·phÎ÷my„JÈjÂü'ÁðÒßTÆ ¾—dÞ£¡©“)Ø̤­D%4„aØh{íR«mη(Ù§Oq&&4©w,ÑzêVnÒ2Ò˜¤a¥É߯Ãn£“}€R#.Â4Q _]«´b/S?GöµäR‡6Yñr½?šºKQR³Æ <"Ò‡žSxÕlÖœòmnu£4Wª“s1—9Ã/ßwN¨}ÁJ|¨šTPâe•è€:f<ÀOŸÎ*6!>ï¹oïwÓp¦¬/¥GÀJyµ5ÃÞ¶™1áòø§L¹ u‰Ž8» ÁÙ²AÈÁ!27EAd`Sl4™v±×—û¥í nê{ Ä‘´râ^òJR≷? &r&µ)Ÿ3¨ìç…GQê‘ÜH^4§8ü-Ÿ¼ôCƼŮ6Õ´ùVо,5µ•;Ž•¬ÿé•´b•fà ª,U>¥Wsë³Bg3¼º|ïĦå^%Hè_JPÔÃݦУ¿É¬¨{ÑvªÜõ*¾äÑâñ/@vóÕ´ïSšB§œ6¯Tv‹º•¶"ª¯®”dP)F²ùuÖTý™7‘@Ì^Çšæi:³•UÛ䨯i€uä»)ãn½c6Am*­b™0Ødðë÷©ùdrM‹àïUL÷R:ì–¤“^ÿTVï8áçÎq)Ež›•³¦y}qȩ̀Aµ…P˜m¶;iTÌÛOŽšOn5¯x„œ`åq‚æºHY‰6 xÁÒWŒ[¹øfG·(ÿÏò)ûb(¡’ËM·Ú»k´CÂPºx_|¸÷Š_¯ú”IÈÕY•uzm,+PCYˆJ°¯»°þ©ÂŒÃ)ØzG}àÙ²z™[+£0$u¾Ú·?hšüá~G]—ÿ宇¬ 󷩺œð{)êÂ7ûÇ¡éâÊþVÒÅþ{]nŠ•ðOÑůú_ºäþÓ?I5°OËóéà¿]ÏEq˜H‚.îî¿OÏ…¿ÿ.çòóý%§ì¯Î2þ‘w©ÏO?sjÿì~QÉ?ýüÏ~ù©üôóÿú?HeeÝÚϽLI(¬Pêâ(jEG‰™¤Î{œÊ=¼²Êð^—®&ºZ%õ¸oúŽ–é8>_{”‹ú¶l=uöqæ·¨`©r·RÔñ+Ê,ïcÚóË)}}uï¢æ‘1Ô/j…„¤…ƒR¡OÞ¹BËR­û¤ÕR‘â®ã²^à`¬l>˺uœEgV¢6¥Û©?j‡=M–¸ϺK¼0ZÔ¸<Œ|LˆæýPýg@€yž”.4½+ê¾T÷Ö‡Rf¯šïqÒÒí]aHú¹”K–<œ5Í`½îb[.aTÑýHÄN;$ñ–ˆ¼Çs(±OÔ%ú}j-Ø5yšdYˆÑóv†Ã%Üsé(=¦N¢š°ëAL­æi‘Çk]¯(-š‹Ò|›®TòÊv(zN’óˆt³7Œ¹½ À÷Õü 4½õÈsfäOÛ2ÇÝ’_T(ý¥NT±¿Qp~™õO¤€m©_)^Ö¬hoØv‚:V2Ž<4éiºüšõ娋œõvV“MvÝü™ÃVlNLY÷Žôñ:ˆ­`y©ØWÉ/áL¬Ôõ>ÖU颺ü–ƒ—·lÒ{켿‡šßbRJ§Sîoý¼8¤L“½›z¥[ÑÚñÕëЩ­ßtêl“±ªŒwEËß(¿)9ôܪ¬ôN94í¤)ÿæ»nK×aŸÕUÏ)éÖ);ó·­××1Åû±‰¯‚Çiê3oV‘Ç6¯íòrkÚZfï椒¦DŠš lYô/õ‡†àÃ‰Ž¤ ç]% ƒï%çLel†”ŠV)ßÀzu­‡ž¨‚é«ðñ£‰KŸVüß]%ÀmIQ¡hÐTþ _Õä“AG--_ÖͨÈB“ ¬ ¾üý´j^ï^-:¥®HúTn^ ‹’ï=µ³ ¸Ùß(¾ ”fìϧR“P/õ ô8ÕÓí^›îï’1f«Ü& Ú¤F·f—ƒrêùôÉǯKž^ÂEDUõ,ùÝ®ô[gŸ&}^WÖpǕɨU#æYÛüÍÞ6Ýœ«°êð¾£/uzÔm¶ÇUƒï?jÏ}¿å~lß2Û…÷ì•û{‚–ŠªÓÌï(-_éq÷ ê"}•mÏz»!ªVð?ÞN§qó[ô–õr®Ú­ ש¹?½ÍBŠYRM»ÞÑõÆ£pÕ”FG‹¨tL¹ùËuÂØë½…Ó¨¥7çÝáE×ÌžÒóVÇ8_à;ª(5·ôÎ¥WéNoî¸_»Þáø_Gº}ö¸ç¼¾®3à>þ8là4ȉw {‡ÇÛŒ;(¤M˜&§u›wñ@kñNáœàû1PºeG¶ÔÃnx#¡Kæ˜È÷úÕÊy9w ’|?r‚ȇޟ~Y¯„O¹:~P¥C~S8j-©è 3€ˆ)ih­ÊÙdä²q*E›aÙUàäŽ^> 8ôÐ ØÌÒ´Þ&‘æØ“Ú^Ž€·ùàè<}âk ãöVaím±ƒ…ö!JÉcƒús%M›Ø©U°Í¹“;ž4²µÇ¿8èwñr¿øÖ÷IVaQcÑÔ.í²š@O'>°]g¶Ú‹“‚@ÜW1 1ôµMakÁ56fÍØØfç(µsÞtœWÏdòÔ$o~ÇÍžûÖìÓmÃFÔî«S£¼-m[ʰcö2wÀ·|‘WAâ:óMNƒ3«æÄɬT§ 0âڛǥi]”•¤÷›÷¹á¶êµ ]ªhÓ•b¯ì€õáè]H ¸8IªR „Âjj=¶ EvûXpç¦TÏtºÛy¯`§3fÇÿÙžÂDÙ4;is9e†úÙ%æÊGƒÈ©î½ùýæ/ˆüÔFq.rã ±e ·IKKLÃ3¾¢^×(_"‚ûÊy6œ3ßSIw6YX€á©ËAj.(¡«1%7¨ž2¦·Ø "€7½‘·vfLË7SÈ?]NÊlÛ¦¤„R‚’KÔ:ý³¹ŒÔSá¤ï ïfEœ9Óìô¸ŸÔȉúË#§×úQ„$*)ä˜í0=G½¦Hå#[0ªwè]Ý5­å.g\¥&Z¦We-«Ññ"MH@ÏØc‘N]í¨¸¨O=S5ƒäÊÇ)Æ`U'ñhj¼¢LppcÊr÷ˆs¾Yg' Idå’_"ç.gŽølr+/S!S;1ž|ñ(èÎ8pVù¾…2Qo)ÞNéGÍЯ®àœ„—ûá-´›Xò½R‘jð<æäG5j–È&(lƒ¸Ü81K=’÷?ë4ûX§‡ã¨9l<Ç{ˆš7ˆ¿Gjß)íOuÚ¢™‰¬­ ý.'Nâqˆ¥j&€IÀ†G)[Á­eƒÜÁêõ2W ÍeG/õ%ûQtå÷ƒdÛØÎƒSø */e6ç9Vd}±ÙµîªkÉMnÖwAXÃQ˜ŸFŠ”U ”ª‡óôɩȩ¡tÏß±]‘ý¦+zÑÈ4q²҅ªÃP/„ã~åqRß1ëáXŽ'nËü éQ5àãûDƒfê`õ°íŠ^è%é5nTâkd§Ðl ‹LÉ i]†žÕf´Ã£·' 7Ýl`e›”ÿ4 ¿ŠÞ}CšXWK‹â’ÀB¥LÙ¯KŠ<¢ªvqXñStSŸn2) J‡Ç‘]ÈoGÔ­Heûö­A¨•~4€•{Ñý&øÉ"¿ê¿·ódúMÎUà•3Öã{íÊ X7Ù®ú`IN³–oêÔ)Ë•ä;w霎À$•Ûœ ¿”ÑÔL.zyñ88¸ õÌ]Ï ÒCuxÈfQgô¸Î<ŒY¶Zêõ}lVHÔŒìàÀ&˜Sš´0mm’‹‡ÑB„ PÇî¸Ö½·ò+ú•«|Á) žo ¦LÆ f/ÿšND{ÔtawU˜“çÿR,€31´ñœìJ&:‡Ü€Lx'O±¹ƒü5—’Suo®s«ƒס~m)(e\{4LºKê2ʽô¶s]ŠvéjAe%cg¾¨?³á” R-›¤Iišöd/ Å?ìà‚Ï'Ë{™y €¨¬@ˆc´­hƒówièìèkfOþÍ“ÿ€9켨(ƒ3F >`ÉëX7~‘À&,þ–s-º¯Hív*ë§³¢$¶r)›c.2Û÷½¾øÃ6Ì8Û­ “U _¨*e¡õÛ«Ÿ´¿ð d'9óªú^\ÞT‘+«Dñ"éÐéŒF$¾‡GVˆ¼ 7TbºCúê“-ÀrWR¶ÌhþP-IßjY¾‹TyÒó 0—•.úÑöûø‚‹Eåy,`ž†‘`1þOV^€W¿«æ‹…·Îõ0nÏjj“÷À8KçÛ®1o½rNÞ8¡¨ ¶| ©‚u±!*꤅»3ÿ'UdH¹:“ª K‰@ZöJˆj6 "ÐEŸÃ#À8ñ&æ+ã@CKãýD»¯ß¨S³×"%‰Ë@(T’ò¯ˆY=ÃËãýÈÇ™`¢ñèCÊßEï˜+—/8jGtï$C §JåçðËñ©Íj‚Lu‹œ\Pf ³`N…sÉRw¼G¢ý©ÒyKI\Î.åÒw ÛQ.t&I¦ÐaÄ(r²ÕTÑdæð©ÖŠ&Q ^êNÑž>¨æ#•H9©ŽãËf €Çq…,d+Võª%¾9¿­$NáĸظÊ,H¦7óy‰›ŒemZ?Š$À±çš@Ê©ŠùK¹V`úp>¥ž H²ÕÄl ‡ìHN…iEyÍIqŽøšë±AެªßÓ–ç"·Ë)B^:^7:iÖ¨‰ Ë%Öß,ȘA{°¼¬Úç|1’³T ?U‘•GEpPŒvÏ£T¡ýIa¬™Æu¬9öióR¶’å¥djjý~€í^wór‡ýbR²R½Éäçžñx_+?»´žéEà['9%·ILê‘q`³4–u|öÿÞªY0Ÿ=œáPíJú|*AÜñÀô¡é—ZCI@žÇÜݰ ‘rê˜ Ù‰7— uÂÈÇ-K%7æ©?¬A€–ìÈó£P XI:öÞY¹&X)~õšÃ'½{P5|ZŒ~Ã{H…sÁ.@À÷åñìöŸ8f:ª÷3ì»P«VmªÌÒGU^rÅÑ€”íÄwצ•0ÔäM}Êï¼y~‹Z5;–Zç¡CfÄÓ6ùr?ðH/–Ã;M’•µßw†aô¯Ò¹¢lã϶Žº^γÿ,Ñ$ z“•›èƒœºtW“Q››]µ˜-åú¾ÓKÆg(P”tÐc¨¡„âŽó€äÊÈ„ÎÓj/û3ð\/Dj*¨-ÎÜnZ§è)k¢ ö$ÈŠ§[Š$[³w²ò`G7%_÷H¤ØÞF WE‚î¹ó®ã­—fæši •Γbï¬ÔõmŠ<+½\Ü(ЇótÈp„gÖrï‹ ã¾TÊÍßS«-5«=(ü[g%mó­ÌèË蹕xˆ‹Œò”ç€Í¸xî"‚…jänö–ÊS½ÿÚŠ¢Ú»kÛªƒg¯²m•[ª ›Í|Ôí¬ê-ØRò£8F—š:¨QßÀjKÔê ‰£#á±øVQP êíuœ™4—w{•ò+÷g¨¢ÓVîv†ëb§,N\j@ÖæÌ³ŠB"¡ñÈ Ì  /¾OÚqþT•²t+‚(ê¸+ÛCÌì5ÝóDü€-åƒWÑçÚW'¾¨äÉÞ:"7_š¯(àË\>æ`IVg©Ê($öæÐƒ8Z‡RõÈ×$2ð õ£ŽGht y=V!èë¤Zì~ª+ž=u;ÿÐB¨×3hw\I"iPΓ>lâ8;CÍ´Þ®êÎJ$ >;Ï*›-M ß Z½¼Ëjn9÷ÅÎáËÖëWd$QP.M^»ãY0ÁæïNPÓsqþGÞxd ¨ˆÒØ…E,{8³”'J€.Ìc3G°8Ü•ýÈv -¨› Äz?W=6yW²ñéQ…Â"S3b{…€Ä쌇bÜÑñ œ7‡ºÏK}y>Š‹š'Ԝù¬„‡ítQ3 òJ^çNß‘¥•¥.+Up —„Gæµ‘Ž gàs:˧Ÿ©Êþ#ž»F–‡räSÛ©æÛh—k|¯-¡cñ¬±)«í'»³ž‡§©‘Ì"$‚5î—*/:|Õ ¦ôUûÜJŽhSþŸÓ?@ æÖ0D{É tТXì±9ª<‡|q2Œ‘÷ÛUŸj"Maåoƒ´“½nUgÚŠzȃ4þ¾&Šï¦ À¹.Sá|ê7¢‡GÖü|To jÔÑ|5 GS;G“>\ 7r\é+|—ªjçôNÓ}ìˆ Ãý †W!êU°'ÛÍ&¨¶ÜÏ…òÛ´ŽøÔÀšI‰¡m[T£öí:EÛ"+€1)!•Ã(D­4M®7ê€nHŠŠä:\"UµJH+¨PühË­T"§ïqÄŒ’$cƒ"<š'5oºíô„Ïq®à³9-N3øøÖ¬¥ŠZ ”eÀ¼7$¾é«°å"‘\ÃzP´Ãjµ›$¡­Nô‘ßrnàx„Kê˜o¼ åý¡Xâ@•ƒoÎy¯œŠxrÒÇòV€ƺ(‘õF¯²Uw×ÓE1ªýÉŽï§À%¢eZv°É¾»“›^»@ä÷jW³>sê, ß‹ú•ÂÝfE8€a€r)G ,Dø¶=dŒÒ¬“T=-n‡:@¨ ¸WaÐ)LŽáÛ!²o¿vz8lôíD@PŸl*ÃâÍZ°Âñ2{sœ«¬óúiêî” Î‹s†vÍi˪8÷¯€-âô‘Q ÓPËY/ÇóC"™©¹f/±JiI½bU ¾g+Î%xiç×v0 ¨×µ½ˆ~Ï ‡0¶M Ka` Ù£½GP†ÿ-†9õ´jѦ—&þívû”‘"iQÌ.I’Ã~Ê©eeE S]³Uk¡Ú ©|Ο`.Wž»ªÚ¾yö^ -}¢œ…®Š+%ßß° ¥ÿÏòÕ¶»_ÇœCu[M¥É£j›P!úÊ ÉisLnWbBzµTÕõ„ÚÏI'’kÉvä¨V• ÇÏI=¡¯@óKæ6}}ô¤åè}|*"í1òw ´>¢ˆŽO’މ‡Ú¯†JŒg6ï’úšCáwŸT/þû=ÕïSü–bDz)’Òá@)^ûæIñ8Ak9EåÐØ‰ËÇ£nGâoø:óQ°«é~ŽŽò ­©À«N3d½pÙ?ôì-µ¼Lr¢ÜÌñu.1€Óì$»è°àÇ$|wUùoú½ú=ì¦"Ç`ÿ€ž»ý‘"½Báh/iè­lÔ[›‚÷Ôž‹o¥÷µµÜó€"± Zph; it’®º•Y] ,‡*e|)ÔQ&eÛ ó.U+4ö%ÑÉ.¡­”u ¾)%š‘€(åÎiè7ËÈ) %¨S BâšjÐ)?VvïxIz“ål`Û^z½"¢zƒfPU D¾Ï}²Þ¸³ì»ôò•×HÔáÍù2p‰³.uèžÞT^KV Å>½kÃù ó¸Þ•RÕ[ EŽ~û³cåEyhÞXñStvïõNxÜVûÞ")?œˆg¶°Õ€(мõ;~‚juÊ¿¾¤)WÕ5ÅÕ¹x•hÑ–éuŠWí TlŽ ­é=ÜK"¼Õâm|‡õdÓ›ÓÚVh)šŒÀ»6»‹ô=þà]ŠÂò‚*œv–ÑY72¨B+§ô5Ä=ÊÓçu2?%ÙÊK˶’8 ލOf³Q<†á›‡YUl"K\ݶq¶P½¡`V¥¢(hÙÀ^YHßÀu¨s‘ûè,hs²šº±(7ªô›ºÀ”ç1‘ 'KÉáõžF©·½-P­(¾[y¶Ç"‘÷»Ž)7ïbÒŸ¤S¿=!Ò¼%ŠgmïnŸäUö6Ù±å±ú½‡>Ww,G™°-é×3)<ú©X{÷W‚Žòƒ;¯ÕY6fÐßè(¥R]ï¤G¸æÕëf%ïØ)´yÛXÂM:\:ˆHeoFò¥‰×·%³´*OÚ”—²KަJ"¢z)ÅX‚d¥yMe E3¯ð=ܺ"ø$îå­µ/ð­Õ€VXíÓÎêžT¸¥Ú5%½¿|¸-‰Q"›ÂlIóþQå¥MÞ—±"‰TYÕ£ÀÆìëYÍ–õ¾!H&/{5ÇOþhTÝÖëVS#su§IA²˜ÊÙŽ6ŽÃ r®ñÚ¢b2ƒÊì>ªÓÙŸ°üó–iG C¶õ=s  MèqØ’¢ËB.“ZH[¥w2 q$É«×$òÖ6K>ë«.¡àUŸõÑ~No½ç²›+ $ÞFNâ±ÞE¾økV%‹P=¼àDÖÉB9vx>¦EõnÕ­òÜö*»ÊLW>HÍï:ÙNÒTùwÔTA„÷À:;Œ‡B®tÑ~òT¼Éøï«.IÒ ÕŽ¯´Eã}Èd“j'—EÞ“²GÉ Îl¾¨€¨Þ†Vq2°ØÃ^ÖÖ#•=Ýå¼h¦à†|”ž ÀxNyHÒC8·ºŸä…s)²È%Înó‹2½àY?OjIÉçÆ½ ¢ªÔÀ¤žgU¤)04HËT”`¿×{ƒìÉ ѲœL@§$ÔõØ(•$4ÝöK«ž—еeÅšØÁ‚ÁT•Z,*&Í[i/&¿Žk_O¬Ìʨ`MÑ{è¢Ñ[•þ<Õ.º©/*߀%P×=÷÷‡f;iÒ©FIU"” Í?Wˆ‡œ©óâÖ—@Ì.™m¨<³²< †˜lv씋rb:à,]KN¸R£à 06¡«ÞÑ›u9ã E%¿×.6ÕÞF%4–…¨jgäcG\}ubµB±N—¾ê¯¢º¢wŠ—Xêã»hÏFíØz@jÊ,Â}R?ãvþš’ï Ž%%È Ó^½q.€„öŽ<( @C~qH¨ *%ÚêªÕì´ÿðÚÌ4쯑v꾬ˆ³€…3ù÷ àá3VÝJ‘Ï›ZÎeBÕô’ŠPì}üÇ? €þá~ç!ØþwÁö¿}¶ÿÞÁö,C°ý×C°ýw‚Mÿ‡`û9ûOâo†`Á»¿ïC°ý¿2Ûÿ0û÷Á¦û§ŸÿêþÃo‡^ÿæPl‹?ýü—úGùo~ù“öÓÏã—Ÿ:ûð—Ÿø÷ë¿:P{~âUþ·_~âsüï¿üÄ«üóßþô„Ÿ~þ?~ù‰÷ûåÓ=~Þßþäýù_ýêG>ûÿêG>À¿ùÕõ§ŸÿäW?òþôW?òÊöËœŸÿݯ~L?ýüïõ#/õ—¿ú‘ïöW¿ú‘Wþ¿ú‘WþO¿ü˜xåÿü‡9ã4sƬ=—ðG\2+!¬E†甼ŸŒ´ú>6µ—6ä»S‡Ê’ =´bï?l2>ßJkõÙ4xúOZÚ×ë–  üV8-‰ºÔì¤÷~çp¡Øªš ½ãܯH u £i½õÉÊ ïwtÔc_ýæ»ó ºS)qwõé$+/ŠúÔ¨„ÃzÀÌDëî¾l;×{8©®uktª¿•}o=cÙë|î÷"Û¦|%éRDtqŒd¥|%ûÃ{„â^©©Îöž3Ç1dùó7Ž@’kŸRÕÎá€ßè< ?¶øS‹ÑåUÄó±BZn^'9ßxk®Y¼€á÷8fŸJû½ìò‡ú½^³ÔD6¢~«ú--ÉXB} µ l7ÞÚˆ–5à #]¬~Ϫâ×ù¶¹n•Ïô ÉjÄsš§BüúY8DÃCëÔ:‹kϯŒKÛ!6Ðc{y8¾«Ußv‚¨D2„;I³BgoÞã ÑT.pöJº_amö¦¶³Š—U?ªJàç!Œ1µ«|_Be ¼ù¶]H€½æyí5¾+©¹FÚØoO=%k¸Ÿéö8wê6°ÀÅyIV^‡"›ÏÁÞÞN—–/{ŽÃìaI¿È'%oBß{|œV;ålÒBLe‰Ãª_ÖjŠçQÚu+`¶Úñ“ªe‘‡Éöç¼õ„ÝYñÿωéV²“è§³Ûš¨jþÝ,+'ŠU[½Éù-»¾öéWo»ä„æ2—cÂwsL5ß;ƒ_Oã™ ñ®,ñl|{m 4Êñí Y%Ïu&}ïxÆï $^U]êpŒ“ ´v“SþèZ<û±øNÄÁ4G"WÉ–ì.ºv`³û¨ê¥8({é>–I¬\!®¥Ùù¯ á‡ðûª¥º žãûª~Ór»?=õâW˲³¬˜Ç–×1UKÇ(HÃÎq{ ŽA "(ùBVzPÇÙ·Øe»w|½X”°KvJÄ_ ÚTáÈ"2ÞÜFÄ!’yGfËQ¯›s0”Ëc ¹¬T->—ÃíªuŒ½YÃoÚ{t»•ƒÊžUærèø>׳Ǜú¡Õ=IðŸõ™ÍÈÙÕ °p ÙðªHƒµ=MdõVª•ÚR±+À‘Ôd¶|¹+Yãž1„?©çK×yb#§þªo$çù KeO×m½m2ý-}#h¬øê¥øÛxÑ©ùþ⥨ò}SÔ4€ÇÍÖäv xl·³ N‹sŒ5Ì~9gœöR•n¬»·w™Çêù8ã O?rb–³kb€5Kyg}ˆµU¯û-Š®Ó}O…¨¬çÇ­…ÃèüŽô‹Ô‰4íQZödÖ0EúŽ*êŠs‘úd€îV%÷%¢|ôb¾¯Ì®ÛÀl¢ŒŠÅ /‰ .©’½ñØ]æ‹°d?7ïÛÑ©|Gaü¤¾„•5-™Ê ºBÇ`ꢞÅó]‰E&,C²AMv°VZât$Ås÷§ûèP§UPÔF=G6”}w„¶5-ûWØOæÓ,Å™yoÝI½'6ÏW…pÒ1µ:Ñ7§‘O£¶çû|QgŒüšÇ”©ÅK¹@<ô¨Ò7f´eÃc"ñ‚åXÖïkÒj†q‚ Z?EÑ9/ºîðQM®Êw¯˜o;xªs@õCˆ~޵ ðÔ{r¿õ¹8^\•~m² ÷„J·i Túä¨>*ï–HL¼ßjþl_Uå;s.uÏajn)]ì%D/d«óJ¯ÎEdyÛ=Wª`Ø÷)w™@ÂâPƒZ¦NNY®jª§,©$‹¦â#ŸœPÏ#“|ízN4Z\-]ÕPH7i¾4·ig°•<¥Ò³xøÅ±¢Î¹&èë¬ËUU< Ò—óLË-Iv8æÜA žíx.-ü>‹[¥ I”_ê+‰Š0œŒ¦Ø?õÖ§µq—sGqskÈâEô(»ë“æüÒçz²î$W¤±Sù· kŒ(iøÐ¾8$O–ú —ßý9ø¨¬ŒÆí€>*)xȺvt—'¤4±GŸ†[Vj¬¤6épjÕá§[bï«X–Û@p²É¯KžRŠJM$Ÿ\Ö¾/޹©‚êÀ5'Iv6vÆ 3G©ô¬ãÀ$¹s2mš)k6ü¼¨ögîØ$B>Ýóø&s0˜“ªãÐ8'žfì(ŠøFö•fO}w}2g—üx¼ÔØÀ:,A0¦\­Í‘¸59ÖI2§¶ z€:8‘óOòŸ\K´Ò¶]«¶˜^*Cª±à"‘ è«éþlPõ¼e“Súf¥U’;‡ýó̇×Z¡?¢‘›òð†­ §4z%„²,`¢9ЙÊÕ®}2‚¦äiÛšçÐB£:6eÜ ‚•ÅÒ”•WBœ鯅Å~¿VÜ“GI*¡‘88U‘2úÖ¿áÕ¯ÚI ×UÁ"­$+/`£dzRާ´—[£'ꇠ9Äg¿ú)zÏ8CW)gnð'回cAi¯.M7ÃÔù‡Ø¬DÃÛ«Ör’‡«”–Ô…­¾µ"¶ ¾Æ}û¹Äj½ ,f½j"–R7ñZ+žGÁkUÞ^eÏÜIÖC“X6Ú¥Ó@”ÔAlª€—ôï&ì-ÉÓ[MŸnå™ouu@¤ÉÖ1Èò]`epºÁtTUÕÚýP³Æw# h¡ ì·(!ìËËž(¼œô ÷õÝË 0¿^+Ô[ÎuÕœw:^¬ÕÊκO=¥ÈðÏ£Ý*§R?KÞìâãð35Ôó|kR1xŒ5Ú^S#<‰×£³¿µ$ôS ˜å¥‘ÑÁ’åþ8v,”Y·ƒ6ÚÞ<íÛë°úh×N©4ô¦Ðf• Ÿ›ú–e”zGäq|"ðl¨•ŠæÊ²žº2P¹Ð©5rI÷9[z”Ü/ñ@/O3EÓÔ߯¤ÃkÔãuÔ3²|ÆŽÎùSeú4ë|ÄH”º–ÜŽãÚƒ17²9A´ÉÐçEõPß›:;•kÀý¬zrɋڮȊÞlÊ’ð½(EA7BÎ%ëìFuÑ!¹@š¾ätzÓEÙÈ7åÝß÷ Û›àþy‘é˜<؉Œ¡ ž7P¤‹Þ•:$H¯~mTRÏñQrE¯5ÿžSÍ~¤›C~:ÂeŠÃì³&Vö3}½|`¸Xrÿ>ÅSy,j–ØvS¼ÊŸq6k "/žø¬{¥î`Ïuf|Žø)X¹"¶ò5|Çõ©ùZ<">Z¹~rS —”iUZáÎ-ÀÚª.²¼ü lGÊ8`[¯ñÒ<‚ *¯I.„¯g.L'EÈúŒÛÇ¥±Ÿá÷¶5ÖÙú —mYuÞÕ8ͶÚ+ñò’5{_j{È \´ ÕHÒ5ϼ÷4Ÿpê/”ú‰Hßpz£kž>Y$DâH‘¨¨ä¢vëÎvz¥e¶ñ¾M»#GƒRÔTì¹ä£éø¤5Š3#þ ÓO‹êïŽnowƒcajƒ5Ÿþr.æ;V(ê¿X ˆÔ¬Ç3ÝØ› Ñ¦Q¼[BV±VM[‹G Z#=€f–òûÊ*Xý³GÇ{$ÖÉ¢xvàÝK7 }ãñÙ¢¾Røí¢œ8*é é<0‰µœM±rÕQ؆ْõFm˜½J!-ïÂßE¸ù^BÀ"HÆê¢O#å&[)zÝÜŽ÷òwÑžoóñŒ½·Ó“É ·³ÙJjéºE¸œ–ÿš¡v›-MF•+Í&{¢!¡‚¼Ê.¾Ò0MJÎåí(ýOÄõsHxUçï¶CQ~xŒW²ÓJ®…Cþ× X8~,G„›ç¨”¨pfDPKO/k¶Rß…® 1Øî!ëËk–{yo{æÑKÖÅŠDzaˆ‚ÉöØÒm“Hðƒr¡pþŠÚLÑÒP «AÉ­l`ZŽúmB̸_V.Qz»“”åx”¨$ <Õb ˆÓŠÝgÌÖ55:ÒuÒù5$ÎU$Æ¥ì£ööö>ü8boÎÙ“ spêö˺á*ÝØô9Ï6–¨!øg>dÑçs:„LúÕïñ~äêŠ=dA\ŸÚKz¹SzUsgo"†Ê“„Åäm·º?ìd*GgRÀ¶^<àºi”…OŸÊJ f·l'rØHÙíXÈÊ„á倳Ã/6|‹¥OIj-¹,V Ú^ûÇ"UÏ­ªÎ¦f¦ìˆ›}M^'Ö`¾ 'qwhýWç{.LF›*•z„RŸ$ˆdø8E^ÿMÕàH'gãÒ?žC£¯_s LÐÀÐözìx:%,ò¥({§zÂÖè§ÅÒÕm 𬃠 EKׯ>É þøÊ)—ŽQÞù?ïI–ã6mÛwYysÎëJê ß +B­Övb-½Y{ÖaCàRB:‰–ÙXÄnŠw°œ} $»ÃÇÑ.ªAc,på7{UhêÍ—n•Ò€¦œÂPK¤>=»ºEá.ýØ’—œÒ¦@ };oEì_õBar?—âÁE>Úm_ܺÕ}Osš‰X­Äðû) Ықlò§j ;®˜æü¾J òâ]y³¦µÐrË}ÖLŽZ-Luaz*‡â08DÞ±pϱnèø}Ø*¯’zº?rÄßÒÔÈ!枆:#`ÍdCgjò t(o‰»À†N6TCÎY ª×Ʊ ¼íQ†¸Ë›×éÓëê `]×Öùè×<ÇQñž9"š§ANKÕå\‘ôa¯‚ Â2p¾ZºXþtÄd»~ú™¶³(C~2È“Ðõ‘ŒUáô®ŽØÇÈ/錮½—“þ¯O>)lË¡¿“ºçÃF@ì¬^vˆ!m «ÀpŠgŠQuÖÛ½óð”=`cû±3K ²T™ˆöH‰qÞ”¯?½=ø¡@ÝsÙ€õ6oéSìdŠYé!ZTü– Òz{yÄr»üb:²5Ð%ñD²—0÷éb9¾ÍÁV&6«ŽÆ&ÑÝÛN0,ö¾ÔÉVµa}ša¥J\'R…ËaæW ÉAçoã8ÂÑÅʦ”Wþu+ßû§-õÖœíç!Ùå80[Ø&+ àVo‘Ø[˜Výžýu'ß>=MP'¸f Rž“7WØg}Åí¨ãq”eqPª6½k Ÿ>óªÔ4Q¤ãFÁKlìDÂU6ëë¶ô9ÓDD&K=äHµo¾gl{M¿ &l‘íÈ5•EóJ”ÝÎÎòÚ…ÊWHIYà8©‘O?U#Û“ò©>L¥$s'{¤wpr’ÜÇ.Ë6îú3íGÏTK¯¯-U~«¥EY&-„K¥Ï—RîÀ!NŸú¶F Pý•æ¶B‰z«'¬^5!ް=Ï]Ëm–É2¢¨Ú>“9íy|NЬsU=xl€áÂëCµW•x ÎçÉŽô°c­'TåõÂbM‚ Gúqv ¦s¯ZAóâúo ÅY4e;AwŒfyë  åŠì ·ŒqV=z[m6:ù«.Ì J$¬k×ø=”]ì¿n×®é ð’=$9iw¼:0Ë·$Sð žÝ­ ©ò¹Ë¤û<*6¶ãI:k6¼ðÉ;Z¶"si³exZš°FdÀc/ͶSüáUgÇdŸA=¥GqùÊÛYæåP#m¯ÃWñ™öbËë%êCÛ4qòœús.ÑL´¡Ï:Ò£jáqT£Mu#Ë 3^ê„H·Îfw±ÑÈ‹Mk¼[Ÿb'Á•׫†˜ed·`Ñ‘À÷POó²|jß¹ QOš-¨ ¯| óTúb’óôÍ-"mh_Q“–‡¬Þ[y#•;Ѐýùª º4”X„Æãi2=ÔÍ[A*ŸB½Ðµ´\Ns¢ˆ˜Aâ[½üËéów-žåÝ0E‰†ë©PTuDÐËÞ²fÁ¨©–Þ)?O…SÈ¡”@=†OUòì­¥ø¬½Éoq.Ž7¼8-û=T»ôº“’(è½)’ðus8ä‰3övvŽ,¶[£¸~À®‘ªíÖ‡Q5bGC6êÒÊ®Q¬‘§-û&ºÉî ¨—TAÍëýj3NŽ­ù•ø§CçèQfd½^O"OX2Ùdª…§Q ¶ÄNázÀk²6ŠY lM~-òÏ¡ñJÒ§«èˆr7íq ö©œ €«]T×µùÍ(üÙ{ö~·c+’2_εP\+ß òõ ÛÛ”´Þs“ýìÄáD›• åºTW¸ÆÞZxüFóX( wQAã~u—ŽÛ¤62sñŽ ùס¼©ô¥z›½*©¢­i¼“qráŸóÙåÔ#Ñ[Âo‹æsâ±2ÒÞÏwð”’ÚAëVåCÚ-?ÍË|¾&ß®Qå ØÙ Aõy£æÎr@YWJðkoMC[MÜT¨|nþ+10]à«’N*…J$µ[o”š ÅÃ;{î# .’¬ªy#c1YmW Ní€ù×d±v/×ìj±×ØÓi«’å¶qùE4E‹Ö?¡^•ªÔ•E,‡Ö²¯®©Ùg›Ž|­/ØÑoÃÙ6Aô#~=DЗJˆ¬* ÛÛWPÙœÄS½–#?ƒ#e¸mYTM¤ˆA÷ñ"õ9»Á DØ«{¡Ý[% ‹\ÞÀ)?ƒævÿ”-S@›hé¥ ë(Ì~©OR´¶µéìlñ—¯\n~ºviœùP*5`fŸÞÅP>.ã$±h{ÁþMÓat^Ó›³é…ðM²äp½N¬”;ã=Öü·ôy[·8LïQ&ð ¾)׿ý¨nÀ¢ô~Ôå‘‚%q{ÿÐ*CSÉ tâÚîNýfE¾å±ñÀ‹ž²¤ô8‘íÇ»F5:kî$;‘ª”(+Kˆ±üoÊrh0ä÷pFz]ÕDôÝ´ååe`YZ•9$ú|öhíÍÙï^ÏÓ —E Ð?UânJ¸ëý.ñSŽÎºçöƒsS¯ãY*„+ÓO¹´/¥¸ç´méŽy%{FG½¦ÖæD}¥/¡RïÉËKóp…~4´!+¿ü¹sŽZƒÜòPjèUÇô#Êëò ’Ìd:ð,g3Úkº%¦¤G%oJ¢04õÔJE£v¾ü¥"ƒâî7ÕŸÜmJÚvæGeù€¤Jïé"akõ+7=K€x Ã€Üd@Š\0}áV;ýPp­îfdªÒÑ(Þ«8‘îjIbÄöÚEdešÔÀÎÓ©|ð+O­ú¾H›xª­’÷ôJó’•ú|Ú¬z§¢·ÔGäWì˜3êYê‡Ó²Rs–9{ãÈCùˆ®›€ŸõSÖV‡ˆR¢}dÅN‰¼Eµ¬&aÀ~h¦âÉ>çqh\~³ŒÒ€£«$xSvH}ØOâýÐO|ä_Jõ¾Gö4×¼(lääÇ‹ÿöé×ßôC±˜ ÇJ—]•ôE!úNí‘Õ:PûÃ3QÔ×ÅáÐôZaB!HGm;¶åsõ)´W.nßN‰+x¥EbÏ}ôr¯­ŠMfë«KÔ&=‘º£,[ªÍ&ŸKÒ{ÝE-/¯qÔÀ¥Æ2/°^Ú€Y‘=·‡þ>CïÙZgi$döêx¸D!{ ¯œ)Û<ï½SõºñðoÊøáüaY®Zû­ l-ª«©LÂilõªÞrxÙÛ.VuÎ%†Ô9Ãc‹H1)"£JÕKÁAÀ;ÁùYZ¦üæ@P±(‰VüA˜&8²‰8¾ëø5½Sq­¨o(… ¤…‹æésŒÞêµ¼]ìG˜— 6ÕŒ˜$¾J‘TÙ µ[šBÊjaÕn&&=«Ëº”ØÈꃞŸ½}xU{¸bxJxþþ±ü:il†›%çí±z× ÉÝ(•e™»fîîþ¸»“0voæ>êí²ë¬×Öñ‚|>@ª Ú¿Jäöy»Ý‘LáÍ)õÉ&¢t/A6õœªTvE É›4ÓE””—›Ró³-r›Uø´.VEM>O«:B9›|SÂwf1nÖä:ŽbÔ,G´AGvš@EEC± =òÙ·–×·ÙúEBA®¡6éc½JIJäVïñ45š•S3eÌí²q·ß„ž%u©›ÜÔ¸)‡\OX"CXÊiÿÑy8M1ùõ©Ù¤h+‡d½•‹º‰P àU² ¼ÃÛt>Œ`CŒY%ƒ)SX•7䦶݅?’/¹Ai¯”«G6ä}´ÆÕŒ^Üó´¬"_ù–Z>oýNò«î¾²ÆÒ¾÷›Ôô}©3—¦8`ŽlC‘ÄÎVpR2~b‘ðØ|R¢P †À0òžÚ¯;o„4f'NÚ‘$5N)§Tæ(ÑX B5usàERå¤w…R»´ØÒE/3ýÓùb´êzU™ÊΡ=ÁO “y½},#PÇ”òè ÃnYj : Ž =ûAV‚M$v¨†vª9RÊL»._¸â–EýÚè{“ Ý%I„Юº¼%‡É6ûRƒ$s ÀAü jö½6ºÖd~ÜŽY…?Yž SXA‹ ² <óq©'( Ë­¹%àu/í Í«Ÿ­®^Ø€ŽôV®“”V-žŒì^ÜJ'm íR.:¬’{ÒŠÝù‡ªw9GôhßðBMÙkVG&;¥|¥ÖQV4Aض”2‰È3{¾ì\rîŠP¤&ð$oj÷õnÑ^F;–pì YPUÌå\Pp]Ê ¸£¯pÿ‡U]ÞëI¶æu—: ʪ0NAô »7q/µéeªØÉy¼|¢ðR!Èz$¸YÔ¿w¦ì3PF¢<ÕJ ú[%wôx½*RqRÞ4:\ÂÛ)³*³p+]+C€dLH$‹®('¸Ç´Ã•Bùüùn÷çGFyġ젶‡mnñGîqZ@ÓãbÂÃ)èÞ'1"%àp&€dúj |ÚY6OÔg`|z`ØöÜÙ¬Õˆ òž—&—ê=Yó¥U’ʤö¦fÕºHU·/èÚÎ10¿|K…OéÔ%—Å?±m©þé-\КG“— ¤ê£\èó©ú?/–”´’þ§¶ÅõæÛTŦ$À¾Q”|¼‹åy¡¢÷0…?)I§QèëöIcÎõÆú´lO"†”2Q€´•Ù¬ù¶|v#чÝZujŒýúâ‘EÑ­½ñ¤ºÞZëtí(ªLá$Ÿ®­@í ‘ÉjKwhN»]²cIKƒ7& Ê×lb¢ª¨ù²¥Î"}ÎÓ,ÀWS¦ísR¬_”ñ¶ÄÒ§ E‹šQK -ˆ ß(›ï >Ÿìã+¯Øü ÎB^ú{•ÏöºÞ¨±ƒÚØ=åäÏ”»Ázt2®t³¶œI`!¥grÙÏU¾¨èd–Ð%ƒJµ¿Ìöôn'à Ø|U*(@ÈÄ~Œ‰fò W‹5רz™d±ìÄCE>BÜà»eGVæ_§” ÿ:Ï[å%JŽ›¯HbNB:D;ˆnoߣÿiT2ˆC°Ð:€³0>õ5¢Un•d¢\¬Î\/,«J½OU¡¨«Þ§ï'QÏž°½Ö«J³‹”/< ƒ"!=xïežhN‰d¶•Á²úd»KA®ÂÕd[:Åœ)n¼…%æh(A°·óJŠ»_iäð×Z“Jo%òâõ>ëˆO+ý·%_Pé^Ðä]ª=ëz{åÛGþw;<0€L‡u‘'À” °¡>s i©îN‰J¸¾'ëɦjÿ¨º•·V¬öé²¶¼é’Âڼ׈5²?X7ýÖ´ùz Q[ÜßS][…¼•¬6Al¤1mP)«8@i¨M€9Ú™Ž/ûœ^£žUjÜÊxé³›«“ 2œ,*¨–H4v=ò#8ǽüh³ôµüV‚3ÈL:œw‡#háSå3 È%4nÔÝ>*UG¨I—©«È¬FUýAb+ÉØÐ˜µŸöw×ÒQ‡¢š‰4Ág’`¥øüÁ¶ùln(4h>ë;ÜÊ(9ûvŽª\JûÞ^ð€jl£ëö£Ò¡ÐBòÓmÅ«ªb¿ 6|†…–MëGO÷‹ý­¼`‚Åæùª¸}¬ýêÞêO[÷ˆV2{x¶w”h±¯Hf”üòœxº¨9N­îãåc{{¨sÄêŠ× Ý›ÚÅ;Ùzy‡uøjÇr‚ü\YÖ—XP‰Üõâï¶Ê2}޶´Ž{y$ê« @nÊÙêøI¬×Mh>Îéô¨<*ÁíûäwÙ­"‰@m ,?9q×ç•J¨¢:…6åçP[ëUc‡m²çO†QšÏfiíâ¹ï¥âcù$m¥&¿9¿ÇÚˆÓÃs£6øÚìÎñ{ë¡.1˜€Ï_J扷Uäshž±iV¬Øõ–OP{{¶ÿŸyæ÷§éâ­ü_’K@=÷\ÀÉ|FGÚ]ƒèéhW­¯3/ÇIþò±uèÒÀ9xex—SÉËŽ¤–Eî×ÛQ Ý´‰ÅAñÃ/‚“_+s„D d#Ç‘5i¼ô˪Nä©ûêlÞŽÎùî¨.¥¦ß3_·åV»ÂœÄªÒ›)H/0KÑË&›ojsPGÒþ©ñW0²(©1”ÄêXœ7ܯ7ÄÞµ³²Ý{/É¥Îò§™ºÏȦ=E«ŽZÙé=ã5‰#:ÎÃ\:íi2ÌJ+x¬ÝgQ:OfÇKíAÝHÊ{œ}ý+vÑ_ï«§*¤¶’‹BZaÙñàwdñÉõ£ò@Ÿýá$KÒ\Xs#ε&¼²Ö!’}S—·÷9ZûÉÇ÷yâŒd¯=¯¬Æµ,€xP…zÇǦÉá¾(§@VÕ¹?Ï {ÆÖ”\’8üç:««Í¸‚ƱýÕa|¨q½¯W¹b›i‚ Ï›„ã>ÂZ;!+1ûØ~s•$­˜ÛövX)†Àà/Ž÷Ù­ÔÄœzÐPñ–^¶QçSOðVÙ®Žå´nµÇl¸Êqà5êó –“T£Ù»ÿ=½×Æq˜HöåÈÊä®Ç‹­|”ºçw9Í[lé)>ÑÎíÿ ‡¨{ú+¶Ó(YEÓóqtÔO±Oo2x°2±¬IÎã~Û)@3å þŒø,ŽªTn½tØôÉ®+Å+ð^Q¹¦uüãý¸Òð:}y±¼ˆ±‚¢ó}jôéEÓíM+ñÀëêBÁ‘.²h]9WöT±3ù5M?T•š@FSÝ=¤ê¢ÌÛªu¨<ÈFölAÖãÁ@ª¤|›™äƪ\m¯5iz³7Ѻθ®:z~tg­i(*U=ªšSÍOJ ;†^ðyÛè·søÀÛf©È¬¥Wƒ”[‹í•ÓPÍÜñçxåß‚‰¤ŒWòæxQcãTw½;ÁØ,·.ª}®AÌ㥓ž³š”ðu^Óo®`Áî=Hî¶s&û¨éµ¼Ã< $ñ¸<éL1ñ™LßΦ9ú©á®·Ž¤Ï¨Í¶Ïÿõ–lƒÖõZµ~®åÅVSÿyNå5 å—~ÒJ;(u{(õ#ãüd¢òÖªÈMži¾Hy8PÒmËè†qÆ@Ù NVµÊ÷õ&‰ Àqæ[[)sñíëžòSSˆãÙ*ùƒžÈáºÑN§2‰)³* ¶2/ªª€Ø<&r0ÁQìêÆá™±ÿtÕó=('‚L¶lpo^ŽæØ­$i¹“b¿$VU1€ „Ûx˜‹­€²„ªŠ¸„MYzŠ[þE>Ó5 #G¯”²nÊud ¨b,•†ôzû¹+¿_¿zëwiTcnwð^§R°(‰[#¡ÜäöÒ$ 0çg‹`òà–‡·/$ÓËFrŽÓù«i -ÕEÃèâ×s²%w°ƒ²#gj)åO™VßÓ6îKq j pn¢¶Z®m©'=h=uS_—€mSn_ ®=-¤rñD¦×J÷½ ôÔU-Í3ž~Å6Œ§´ €²Éuf°›Azß‹¤íôd oÔX¶'„‡VëÞ6|ZUÙZù(è¢ñç´—B—wJª÷Û^y^éšuêÜ–^ª»æiû´~ª9IœäYqêr„u]>õ_u_’ MÁ'–Uš„£¥½Ó¾ì+­UΕ’nÑd4ªÍô\–ÔzÇÉ®“DÊñÿúKf¤¼ º TuÊ,°»ƒÝ茂k$É—#›½!ÑÉ‹¯Euãøœœ&{H–Òé Å1‰MIÔ¦=꣇£mc«þ¢¥Åk9Å£†§µš1žžœµz²@ûQülP¯ÓpóŠ›:Ê!Åï‘k½g$­lé¥mqÈù“("þh¼ÌIµMænï%eC‚¯Î@Á–ÏkKu˜É‹Êáu'ÿ´{Ä.þd•€`ËÌI m΂¶oZ[kylTš’eA;­ðd-úVi„¬ yä\Zn*]ç´ú“zÁ¾ÿ$Nè­õtý>²wLªzê•­ FRþ^i$`#€¸ïü’ú>Á¡¥æ­f…på·SpJàë¾ÄÇ¿Á8› È)ßò•›¥6Æ+kS·ÔgWÝNmj6áÈÃ#ƒN¯ëQܱÇJÏ)ŽkëGºm¦§í |e+Á.”#õÁƒ¬;ÆgÞ2È3ڜش¡| o³„õØõÑ Ÿ.lÄ%ÅpÂPL@ŠÁqb¥$°åýtzu„ëøÇu=äÍHÊ:±C—ölÇGvMƒSá×—½šoöÁÈ/9rQÕó­ù¬¶2¥Î««eµ²³Né™ng¥‰.ºe{_••Öϯ4ŠèuÇ9½©9¶N-)è­CXuÎH¯TV؉–$†œl3(ÔjB•¦“låèeººÐ€\"…c›ÔfÔñÙn"¥¶¬3Ee éØc֮䦿×9ó§}BšçÌ%}ªÔ'j*ãÊIdxe»&Dß‹EŽùˆÛí~ùo”kj¦D¼Hê‡É{Ô©—ß­ê0¸£ª=[àŠº8°/ˆ]MŠ6f‰½Ã÷Ý‘ˆ±õpnDk0A±—©8ó£¿VÑH…ˆª•” ª…+õã¶G•&ö©§{°1ãxtË£F&9ñ€(h,­ñ{†nK‰dÎ0žú  ½}©•ræDˆέZV¨Ç¯B“óüδ¹]‹"ëº]ðj²«¨ ‰] äÏ[8k{›ú–9n×÷j2úîRŠ*ÏK r›ÕE+ê¨ Égp Ðhïƒô§ é“JmËGÁ³êÕ†·È®Ž;1 ^´À$S5e—I…Ó’¶£8ÀªùJ¯ «Rö;þåÐrþ–C€Á )O³+°4º–^ò¾µ¼ŽßÅ/õ ­drB*Âw<à'…}õ:Þ«9¦=f‰ÃoRÀ‘ê®WB¿(ƒÁÔÊ °A¼ù|¨©¨ ¢Ä¤£¥Ý’Œ#I"3™QšÜŠce‚j:2øRlhòÚ³NfªÄiaæ44þä!ÿûò^ï#jýï"ÖßÚ]¼é<¶E8.{:¬A¦ÏGá*rÞVž÷­½©UëR b­|U%bê­žÌz‚*õÖoCëxÙº‘¨Iþ¥šN×r^ØZ줦gȵ5VWzœs;ÎÈ©Rþ·n2u:Q·u0©ãu¨+¾S[C‡øyªâ@ >ªÒdA;ƒâ4‰I h[ÿ==`ÂæÒTÎ7X ŠB‘¼ÉÚÊ>ˆÔ#Žp$ß—e©ÀGâÛG®*ZÍAÅqw`•ã\ª¦Ð»É 9¨ÙjÆ‘ùe vl&u™ö¶ŸCFàðJñå%8+Ty³‘¼a$qkýÃÿðÍu8Vê—©y5ØHrätHú Ö©iHçûb·Ê*ԅ泚±=)+Ctø ÛvâÆ^Ø ë¤÷ãxæú&ÍãÀZWp)*Ï$M ´qlCö1Óí²Z |Šú/9k¸¡¼‡oÌ Km8A‚ãž #5}x|ì LiUã4²ì«ˆÓÍ Èœ'@éCíÈ&1€S\Š•Uñ5ž•Kˆ4šrÔ†<Ød€’q.ŸXÑ{g°ØîÒÖ”HCñÊ¹Ç Þ9²¯žRŽ`D'Mûí¬o 5…fDrny‚šÎ2ËÄÅÃ"æN9ÂóQ‰°œ‹UÇïýù)ªj§÷áK¯â)¡Œ•ƨBÏ¿+Q#Ü—®z‰²¤ÕI*CA±—oÞ¶.uT){úiš`5ÍDo‡Šöl–ª8r˜Xx@o•A6÷>·÷šëÔxÿ«+Á»Þ¾³)“nêÉšö³k£ÜÙ䘚ŽTwျlྠ=œVŠ·äúüÿ›áAkºÅ~®¶Ââà&›ßÀ¡ có¡¢ gR•‘ ©ßØæ‘*䖔”C+àLÊÁµÒX³zðïh¢ùýšóîä¢õ)Èpj˜m=A qJ<½Ç|º#Cÿ¶Ù¥©Yàsô¤ê'ÜÖ'«)Þr6”âѺÁòJÿ §ÉÀ<#S|„i#ÂY¨¥" GG ÒMí·Ý^N²7¡£\Þ•h·ä@)Û†'´ßONM«Ǫ̀kõöT`V#Ñ¥ƒ"±¿E]æú%éÇ):^˜ŠãNÞs‘.©Ÿ@X1k–ps²åÖ\ŽÇ4Õ—×{9(TM#;!š(p¸…éòë xpåJu áhxmöATߤÖëÛùIå ¹¦öLUn0ß¶sD¤¸u1ûE±ÓÂQµK7ù¦Dàëûm vé;ÃÎo`~µJ˜Æ)áÈc‡·ªÙæÐ`xoɾT8 ˆèvBAÇæ}mù¹…nç!Üôs]ëï?–‚/û`jßêU1P€³ûi""aø¸Ü°‘œU’Ý•Z‘ªÏ9u«Ã îKïìÃU~§È©;Î U£Þõ›w4k¨íhöQU{’jLáƒáq^Ú4E9y:g:© KØö $$jŽ˜9]9Ì'C÷}9ñi…Ù^µ I7éðßU©#ú³ó?ïñy¼úX¿zwºe^}XAà—öƒ‘­MÍY””J*5+€Žd]¥ŸæÑ&Pqk¢£ÂR+ã&G7¯94ï¨É!bЃÂ`d çÎ8uIï`Ó}.¥ ôZ&÷ú£“ïuÛÝñn}ðº^ÌÊ©Òó. Ù˜íñb÷mGÕÁÁAV’âòkMtʸ|€N·h‚Hb›ËÀñ>Ú#ä9_­mdóŽj[ "xç­Iªè>—-§½T¶xäFbŠ×JÞî: ï0!ñœðš¤¤ÈS,«¾~QHy yæ¶œDœyJ8¢Â’ÒÐú>¡Û  8…J7H5>Ò8þ𿳠I § I »‰ÿä÷Ôˆ$†,N$,Høéwñ"©ÿ½Hbøf$9ýÆ$”û÷Ý„-þ÷Û‘Äð?’¿ß$–Ÿ~þWü§õ‹ÃGJ?ýüg¿”¤öÓÏñoþü—ŸÿK~þ÷,ïŸÿ«¿ÏÓ$üôóŸúµ~û¼É¿6vòôûgõ§Ÿß¿Ëô„wùþ.Ó^üŸþ(ÿ…± ïð/~G›¾ÌÿùßìzÂgø¿~õ#âßþ®ž(|Œ?ÿÕ¼Ôøï7Aùñ#/õÿêG¾Ñÿó‹”4)“ G©Ä¯­>¯¸lŠ*$¼$i—Ñ)†ä(h—ÎØ±=˜zdï­Z®ãÎòœÎV•1Œ/Éõ~¹üiÙL¹«JâWÔ>“ÓeÌb•숄:¹ßz£óÖ‚ÎåL iÿ²ã¬fWð‹±¶³.NßÕS(.»º5÷¤¶]•´¸¾Oi@§&+ò­Øtž÷›K}dEQ|DjÍwÜÃ¥H[öå¥ÚÛåܪÆäoV9NõV¥Mì·áwú¨\ìÿ0Œ Ï‘=¤–WöÅœ¯~˼çK)Dà¤|/©…IqZ““:ߣ¶»®T>“=ua)îÞ¼£¹ÔF îåákúòþõ!ÑÉõتßOT (NeŒ[Us¶8=,¹y­ë¾Õ¥c=”ÒÃ÷HÅé¿ÚÜxÃjÕŽø”—/ÎÏ.OSÒ•Ï~¹Uuh ¯ML¹?âÌtBÏ–ìДöÜNSrl–úð*$­r»dG kÇóä×òP«×îÒ>²]´Òô‰YÇÓþUðXo]”oNö}_¼v1Œ»N6‹÷oÄe–^b*aióÍùtÂYé·Î²SdiÊðQ ¼¬{¼:´Ìgfß}ì,*ç[ò½tðxO~%ýpIù’ýš!p˜JÞ|ÇH5±°Q'g<&äsýl;”¸l” ÛÍË÷'ܳw]K/ï ÏÕ+;û>âG,,ßróØ“ZVl»ú¬ê¾niùá¶¼ '\Þ߬¤Ð;[’½DÜ“‘È‘ºŸ¯Ê„±ÉÓ¯ë¦3næÐ˜g ¬`\±C^T¨,Eµß¢Ðw°C’©†öÔ÷ê“õHøëµç±±­-DdoèfTâqË}Ф ÄÝš ‘¡ Óûn"Ö¨1~Ä:‡Ðöe«sZBíö¶’*ú"q`ÒüÕl±îú :±Aoö ¡—fó Vô|²Á¦wÑö×Þ5î}®õ†½PÞù$©xzõRgãòîhÆ×Ë üûL/Ü4±5‚“N¶}Ø [aá­Çì}²1ðÇ-wÝG3W)~¯alhFç+=Çñë3˜íUsæ@»Óƒx5;ñ`« Y{—îë­Ê‹mχÕkÈr¨ýSí騋äØÑù¤qÊK»Ò£(ÐûN%1ƒZ¶UköÌn³;½‡xpnâ·wtol<ççê¿2'=³µV'Í!Ž•––'™ÍøßHwÅ™õOØ]m«>ܧ6z:"j÷™‘-œ;ž¦r»NòQ–¾4ÊTK·I6öÔ;jÊk_rÛgÐé&Ùª·lÎi}ÈúùxÑ:²ýàŠ˜Gé‚fõ¨´Yi#ȳ¿û-úG;œ4²x¾µT‰Ê#°UϾ·b/Ï~NNúÆ‘rui¾®N1éÓ}snî\´¸9ó*,°zC©5‘‹“¹ q…®!_€”½.žS–8ºišC‘>ã«:ÛõÐ9”нÛ~L×/=Üu · x†Mp©+aÙŒõÊ‘h£ÓÐËF;b2¹?æVÉìW"Ÿ4’mÜ–Ûö=„>Ŧ ÇS=`Ez©b;¼ƒýNÈù 6Ìs%7úų5-ëv‘hF@Ô,áydzöqGºÙáÇ^¸–ÎQUû—}߯%±;¾„˜({Mã›'gçTüô (°áTŒx²µÌú)"É)$§´¨d}΋3l‡·|Žg½bVYsª³ç€@"¹³‡$½-ç>Tð!¹ÊrÛIR%‰¨õüv?Úß2vŽ9 °‚<}ñÎPÿÑM! ƒ^ÉIľwÊ‚ëNæÛq^m÷C´r¾j“£M4ÍȧÆÎ*’WÏH]KÂ6›1M¹ß›¢ÚÊ~—ýaï]‰Fëum°£uˆûž|…<àU”™¬´£Y)Ä]WI>*rV@åÕ’ð†lÕ§à[p£nîS ¯ ;Н.MÜÆÛ œŽd«grÛ­ˆ,wÕÉâ éìzØð>³irŸî!G‰Mð,%ý‹NÑKù…I ñܲ^7Gš4ºšUÛ¾sP‡Ÿ(:tŽëñ>™ï—oÕÙø$ã¦^9¡ê»qww¹ú«œÜFמJÔ\ u•Í>„:Š …ª¤]œT,Ž|̸ôS×O…XÆ®˜¼hY’¬ þ˜ Øp”Mì”É¢$:]<–¸>/öå—‚Æ—ìÙÅãÎJèÐãHËÛ„¸ŠŸ¼¶ÒB‘)v_àeeµøfœ¤þ¥óÇ Ì7C,ŽZ_t~ÄØÎÏÈ1!É»$Ý8.è(…*Ïý‡È”\u@±½¹WÑäCÂL’öšZmdó¨Ë‹fæ·ƒXûaS;üV•Í‚9žß'=­$Ê0í‰øJU¹ïšþÁgÔ {{H®ß‘fÅÏ9ïÔ0Ûæ¦S…œÎŒŽ&ü®;ë²}­`Eš£dgµ®šO;:‘Aä=LÒŸ*ôÀIÎg{Ö¥Zͪz¸s«HÊ‹G1ª«;LÀB؇ï^»A뇯çá=aQ®™œë48nª üV³jR¯ ʬèÈr$r^zMe?©²|º¢ŒFÚ&?€ r–Á5ÕFk]Q ƒ|¨™%+¯æbì5­ÙnÊõ(p+œó”ÕÑ+K-åÞ…–‚ù,Þ%K®WN';v`­ÞãÈšŒé1IJTn±?ÕÎe–êH2SØžZ7^fyçåHu~1Y„6âÔóf£ŽG¤w'åžÚbURñ]–E†Ê%5»±ÿÝ¢äA‡ªD­'±î£Ñbú¦NbÏ8 Udk~­^Q;i=D¾Ã«d{#lj•™I ‹ ­Ÿ!ˆ+ˆŸÀªÏK‰CŽp¢j\ÃùÏÂ2}ê•·òjâðÑ*4#%\Õhª"tT1·:Sªwý"dzöŸÒ+F ìu¶99S%åëb 9Kw}yê9ß*ù@°2@%xên¸ž™5×ÓS½é"ÑÙ”4S;ކYDa<Û¥ ·íç©.1§‡/_U b¿)ðãt¾4pí,ÞÜ…*äÑ€ÌSÝ9L’w—¼¢Fëù>®…|ì;é„’‹|Â'ùmº0 ©²àBÊVjõªø6å©ì¼¡(õÐ> ’‹xŒÓµÁ’ûNDŒIÂhŒœ=ãgU¼ïs–ð߉ù”L¯—JÌñíü>Ƙ{ ¾`yYo…}| û­ñ‘wWW‚'$‹,v¥+Ÿï~oç,n"€Ýƒ±<ñ¸ì¢‡åú=ZüuCµE:KR’ÝŸ?ûÆùnìÙåÈY#^†-kÕÙwb²93 Äõixª¶‰g"!0€$ÄzÚXÖhR­daãVˆÐåœÕÝ‚ã‘YiŠDKÁ–¡¬¼UÐG‘O“²¶=]! AaŠ…bRÂJX …¯]·Q oÝßrr®NI{ìlÛ¦…‡^¥¬ò6íY„w('i±°¦$.j4‚ÛT!è4ÏÁЇLÍÌäPnþ@×oÅ„ÑrÅùƒ@P%ñwgnrÔJá%d}€>-¨9+¿ëä4ñtèkÃôмúz/Š íÿXFNeuÇN$ñeÕéš\/ò6x?G5Û2€òæûq„÷5½ ¡“Ú2Uíÿ¬!@¯HùQ1–Ǻ5mXÊoC·†¨„‰ àhöKSNPÈ&±ìÛL…‰åå:‰B¡X N§‹_EO¥Ïé$Jp]U8œ‡VO°sȺÜÒyÄåJsû~Î.-q›<Û–œTk*’ÖèÇêó°vH Êðy«^JÝQ›ë,\u]KxMß÷~”‹ÄöW’¶hûæ—Áö½‚þ÷á_ªq©™¤iDÒe”pt8Æ¥=Š@‘ ‹™ÿ»oÎ_¢~¸ž+gå}ݺÖj‡÷öpuÂÍ=ì`9g”pyg‡²µût)M ²vw‚®„ëÕ,Be=nÙYa–ïæ«z U—jédcÅB9²Á”ÜÕì´°½?x_E¤4‘Ö$|Gfw“T(QúÈ|‡£A÷¡jÁ1½ÛX~‹púµyDôí%íI¬Ä’ìA‰å´ %0ØŽ°Óµ¦{µ$Kö 3õT9à¥óx•å”ꤾ±½Õ^·ÀYjͳ0 MÐA’zYÑ<ÊUW¯°?Õë6I޼-Y²ÁµhìQÓ÷ÉÐ!ëéŒäœŽ W§éPb;N¸8ÙŠU8Ñ©ö 0A!¯rà¹Ò½J¦CšÞ5û’l«GÉ Šf­¹À¢âÆB!KàLeºôÒSÁé¥ÒB ­®èÿ%PŒùÂà<%ΰ~“«!–r>K†WCáõ¦Ks'ÒêÚ®£ÍÂGø”ñ`§ªÃýÕ£"ÎvT>ƒ'Çãü’ò–áÌú/3Œ¾z÷EòÓÌiõÔß#^øŸþ²ŸTÅÓðxG®~(=è:U‚–—ÆK’ÿØÈm 3ÉZí- §æG-BòžÚÊRÖÚ*‘û™Žåj;fÕ¸,Rb) ‡_éì(gÙ½ÊNÆp0K'³ôUk{yÑê€N®ìø/ zô×+ E¢6ÀÈYHGAmòíAÉçBs¼j¸…E½nùòQ_c.6~Jüž3[R6Æ”ÖÎkަ³Ã^¿Ch÷æGËŽY5ÿÞ­©­¬|¢ê›ª¾'(×´ ›©jÏ Ôg?giEÈâÀIr_G›rq´;O€°>ïÔIvJi1âñ_g½î8Tã[g“\mßê½’¸Xˆ®ñô5px–ŠQÚ©êò ë¥Š-ºrdir2/u8»òB@0Æ+ÏY-Ƙú"Ý*•oÙh­·6‡Ãé*¶µŽ•ÒWÃRgÆò-”òqêÍLpëY•^•¸õ••z(üù<ïုö êuÆG­5ýœ·BKÄ-uãooC" BÅ+*zï[t%” «Æ®òßÔšÙÁT…ÚtZvx—©åÖÒ‡zKpfïŽó»c< ãÍéHvâPê“]ßÕ˜E… 6ÔK™ zÀ¢íd)_)`£ú/Ñj׺¨l‘q¿¶Èu4S$àkm¶&ˆÚúyº`Àlþ½zƒeŠ.ý„QÓ‰ß#wAÈúUÂ!ù´»˜:áuMûöm)1 ÍYRUHC.J.õG]7£ƒP|0ÀÎtv“· .­NVj)cU?w÷b°F«„†\éùS<çpÃ*:bˆuÖ2øoÖóRŠ0ê\ÁòN]¥Ž [Ù6, N®tëyS³½ê*Îü(æq—q9}¬²gÏÉ”–bI [à =žÞŒ,ŸíqâÜž›–O¹óºš&Äm6~µè\«HaŸ,?oâ]ÔÕ[“gzmªÃ¥;§Á¢+ëßæ¼MQ Ö+˜¡€¼w(TÄ271aŒ'£ü¹úC«=pUk×ã@ e¬B¤ORé àIó¾Ëž©C—#7ÜLèRPøô EOúÅvIª¹l‡£º·‰ŒÒ„¬I ÕéñKoo"·Û[ö†Ç“Ç+KH&’ôfD¡&"ÿ¢mj»¢ì!E½ÂähÈÁ6950‡‰ºVýÛé< ei¦°: \iÕ%K¶-d×ÇÑfõ¯‰™¢4d-iýnôÃâë£nìœO/,eüx¸”±^iŒgÌAâHñám˜þ?½T½SéâõˆQíHÏö®¨PÓùàîڸʨw¼|RE¶Ô"Ô&•Ș§hÞ­/§g½ý“±eYN«ãK qÜš§¨W©ö§ù3ÆxE8/¥A§bNªzUÕÖ„¼à6jÐæ˜Ÿ]<’^ç*ÎÜÌäê¹ÚÕbÕ[®no΋×D¬$s­6ÌÔŠ™„rfììbzñ¯ʹ3oj&›£·¢´àf1²ÊŽŽ+FÒCr\´î£Ž¿5ñØy„¢¢/¯ˆÚfR#·ÍþQu”tUåÙ‘HBÒ}ÛöHO!T–'=gbà¾8+€ì‚–9s)[óéch%œí׫æùtoUxÖOoõ•ÔL‰JÚ\ $ñ´ÏT'…¥nºÎ™s´•8z¬JÔCjøÔYǧ³½.ßwOSK½å h)K…–޳c’ªKºæÙð¦S½O¯ÿo²'©MMòk]m³˜p»”£F¦^Èg‰.¶&h¢v¾«–¯@¬Iíœî[ý¢§Á´ lÀBÏ`¼¶T³zlÏ5Ù€${õ” +³B¦5²7¯-Ú÷ÔV<ŽÀr;$´ ØËZ'Ý7î><#Aí"®02À^¢éBÃKð&*ÃVÕ‹óÛÕ¿¬’á<8à@ãd*P} ¸+§¥;`uŠ&s4¯í”`«¬ §¨û•Ë;†Ž‹ÙW8šáŸ LªvbøgrZ¼1û†I&´ëv+÷ÁŠ÷jÞ{„Kc#ö’ãîÀJ‰öj«MÌHhlyþÐ’œ1ôâNú•š¾ÀX'åÆè7VõFãx{íÄoùSnB¥ ‚|VQ Gi2âtvã°Ï”*½AÈDçÓBÓƒDÀö8/ö8ΰ›ûÈ6Ù¢>7[{QÏ~¯JtþNzôÀPahB†­§é©‰¸2r»VQëb¾3͹„›úæšA]r޽%:ŸMï»UU;{¾ÛmÜQƒ("Ê{ùd(h¤wèëê­îËgß‘”¸²ê¯|E¡IÙ/!‹2dx—gßõ()]¡J(9LNPî×Ú4”R}'q:©5p+oÜøÇùöÞãS!a¨æ=T&½}H”¾]YôïòúŸ3Ñù@¥ w7{Ÿ-ýÍí«Cøò‚N{[ÖS–Äs«×Qÿx{!½»×‰Ií”h¹÷:’IAi±©¼ûU8A‘/PF¼vueˆç•êihþ©EÝ|¾Jœ|@|/Ø(YÔ ¯îmM½qÂ^RrùÖÓžX †‹ç¨ÇO)˜Y›CfJu;jH°è”õÜjhÒÆÒÚAí‡,jÛ ÍÖzø"¨*1Ù6dãIⱬ¿UÐ{ßÓlœ‚Á×^¶ÏX›Þ’ʜܬ#ǾyÛc÷ÏjW\©¡³ªŽäg•mRèÇýªÔ4I}`Ä& zzп÷~¸£–lº—¡|gñéi#«=Ô4ðPׂu´ šãeGÙcÅ[ûIèOY!2–}Î"‹õã±5ö!qòLóîa[’Àr«}$F'i… (ïUõ7öáÑ MQnåÇYó¢wåPð/`³—Jøô̰;LîÙ4˜¸õmÌvh¿CQÈÆ¼õgõ1è%æÉR°¬¡üzm›³ÆÙ¯”fyH9;­½ IÂy¶âuW•}^§:œUëªÚ†²Ê}‹oBåZ}@À' èC+RE^Ÿ{€âÉÓS>©6{Z·ÚØsæûr.`3Hý¢Ú# oM—çfÍ&ÈÛÑÖ$T>¥éH1e½DŠàtêë¶Ûú™äoSWÐvZwàSÚöÿrg®ºEŇ+æk¹¢ÍS6íGIµe%¨ùã ÕcÕE1FáÑ5íZ러QE×óTÕÊÅbDT^¬Ù7©öàQF]m—Τθ§¿Ôž˜óàŠ_ZÒÈÕ>R WX¨ÜB˜µ kŠ\îy·f_Û@,ÞŽD“1£Â`|àºEÔÌà!>Eáí¢4O9Šž{%]uôJT#ojÌI¹³D:¤#ªcŠêøše„ž6 æc‰¬:0@‚¼I†wöh˜"íÒ‘4jç’ICYw-}–S«Ê3Û/µ13áÐvî=©Zf(u~Sðy´ð8©¾}ˆ IÛÚÖH«WDMÓð©‹[DØ›íHªñ¦}µj§¶µ÷ºd ,ål‚ÙßgY×ËåK]uI`•|GZCî7µà\™L&F°uQg'+:¥CŽï¸4õ mµÀ†õÄάn©ã„=)‹Ú[þ@²V´Œ=$™Üd ·@jƒ9âϦ¼/…¨ØYI/‹w@”–€º¢9 ñj?~©Íÿ^ÀF Š™Ô »߆ðŒâÈ¿-õ"”ÄI[ƽ›¦ÁE\‹ÔDiÉRP¦í’+ÓÍÝ«¤žÙ æyî[¥>OÛ^Gõt›’þxY…²LäH7Œº«¿úÒñ¢%15 "ÒTNÅáø÷Ð-Ü!ö}º@ CS@© C™]å»=jM'%ÛðlDw9›ý·GñéPêº>T}:FoÞäçi;j°¦9©º|4E¬9&`û„žŠEOgÇ=àÝ&%»ô‚ìÕikͳɤbö%b-OÐì‘âLM~<\”éD­•D £œlOSØ‹5¤Ó&9~ÊvKî˜@}¨[‹“–e‚—õJÅFxnÕfÜ žë~X—p†5U¶²ô7ƒm*p¢^ê;}¡ÊÌcƒ¦vEYÖ_™qUÊx†kI‰3IN$â…ƒpðø‡º¶:†½·Ù#ƒR-¾-y¤§ö.óÀé5q났­yamb •5…°¦ IIfm¶Zd 4{n”‚Ô›úÜîÃÜÊ©Ï;obÞGÒPÖSÐåÅû¨jß­ËÜ(9gò ^ím©´¤(Ë«áIÜ ß †X;Ö&G6Y~Ϙy8òï•ÅœÓ9­¡¿±ççÍzQÿ s×v›VEï¤ÔJ¤€#oÍ UÁ ÓÔØêË£­S¿SÈ”ë!1)`\Ö¬õë|_ ¢­—{cU¨Ø¦ãO³+Ü%|RShugA‡dß:+‹7±¬cG ›¿Ôc™Ÿ°-3•á+–'‰íÛd›°àa¢ÛÐ&•¤Uµ”u>¶¢¬ÎFéæAæMi¥"& í5Ù¦,É~+©5gÓµ«ŸH5öóÁ5mQÞ ÎþÚ²•Iôìsm±ÒVäTݸ9¶{jì,öêù·àÂŒ¤ü‡EMá¨uGQ¾Ÿ×jÃÊË{öz¤VRÑì‡TÓRaÄ“¶ÅXú¢¯—`ÒÒÇd#ÕzÙâÏvrTI&YVß]ª†ÎÛ먄êû6Mc%ÀÅõ(;·z!LVÓ5«{Ä=”<¿Uñ~ÏþÉž¥QûÙˆd’XÕÉD Ÿc)ùlåJð³0ÃÓovßÓåà]×vYW‰FT4çc0!¯r ×z4~-’€.Oš'KL‡t|ˆn½í–µŽ“_‘–ò*ÏøŒ.1ãíS‹d’:›!ul)užÇÔ»Df“Ö5ÀV;qòf_' »¶È¯âo„\’””½ùñ¤w“™ ùªÁ.ÖIË”rä$Ý»*ðKi ¼ºO‹ÿðª™ÜJ›ìå¤d|8áµùW¤[ókÓ ¤.hÔ”¤¬Ë÷¼,[–¢éÑnXEÑG…y‹›^zƒ’'·%7iÅ"˜\2¸´©‹'ù“’ƒ¶ÞƒLÁçˆë«c:K“-'¸;)O0 ©©³Fq££‹²¬·B¥±´NõNÌÕƒÝt™K¦M€Ô£†¶ýȬ7Þ%M˜ÊŸb$é“IÙpoB͘‡Å¶T·Sp¯BxÔM1ZðÖ½Ч^¿À‚¥/Ö›ª‡*~F‘éAÞ µ7V‰$ñ9¦ã£N[bZ(x)¼(¦(ƒXÙÕ®%h",]GÓŠ ð§Æ{RŠ@Hèr¬Ú)'*jÅÅšO’€KÎ’ ÃaÎWÍ–2G§‰îu€Áó:ÆÒ‘B¡WI.æö,ίYT¯|¼`Qnˆ\ÔðR%“b;yXêü Go§n£Š(:C-RP6¹Ø  ðTæS½S`ðÉóÖø]Å©‡Ý£ï§í”ÛÞÛ5¬V7˜+àjïq(ÀZ›î;¿.}èu¢g¥ª?ʤ’±Ö§¦ÕúñTž/'²ïCeCy麜3‘ ‰o]ÁéÔ rÞ¯¼½£¥§H¹9ûÚå`ØY_®AÕ>c—NóÚ¥+ƒ¦ [|•‡•Or_šÊ(ëX‡”R®³ïÏÝÓØƒV™GÆšW±ÉY«ng—W¤SÆ¢¤v—ÕÐÚT¡Íñøfí*â­=vð¡ lUÓkw(š&δkŠª4¥È$çjÍYÚ¨¬_’¦:²>µT.mõÙÔ®ÿÚ¡ –ùdg u²ùŒÛ¼M'•’;I´ÌMÚ[°óFÆ6´½·mpÖÙâ±Ì’d¸EÖÖTò®¶³“Ï<Ý¥:^l†ëðhÇ­JßA˜õƒ¢Rñ“…,ÝaÛ+Suk—LJ‘4òJ‰ï:Dm³Ž¬/«bí³÷>AdeOk¦NY £abªñu½$ Júný[%Ù.5­CÆ]%£·mú%Ãêc+}(÷ª<&5¹Þˆ§Žd¯R½:MG ¼Ç aŠg]5:néF¨?„kƃ­Ddo:ñ”[g–É’<Ù†Ñé'- ÙRRyŠñ*IÍÄ—×ÕmÕ®PÐãõTOך©>*šRji–YõÝQ@0•Èz‰hB¦™–´¡NmL"õLa9í?ä'ÞrCI i6 ùeb±”èÞÊÚú»@µW«†÷*6Š>Šl‚ÙOÄTå¶&wì{[Ÿ7’ôíl]ODÏ¿œP$·ÚŠÝbÔºvG*íU û·ià{+‚Á&´÷5•=pHÝRåV€ã5S‚ûÝ.m·ûªwrE¾­©ÃØ¥6iÉgp`œ»àÕë±J>Û›\^ášh[0Càò$æµà=ìrxþzmç n\‘i¶Ñ÷BÆ¥C:·P²Ú•rÖ@DHOõ¬öx‚ìÇå\”#šQl2eÓ/iÃEFÚRþR[´Æ‰¯ªÞˆºwœšŸiã˦Œ³= `Ê~¢òë e»âÑ=’êmYh­ÅŠõá K* Ê# I3©A9-b_–qPþÔÅ÷YÀƒ7ågÚªÑ1n¦o¶;³Ã#x;Ŷ!qjü]ª(”AùrÚU¸Y‰—Nö@u1«<Æ[Ñ–P©ÑNÏ,÷$.åñ­é«Ïžoàz0‚–t¼jþóó*ŽÀô‰b}Úw%A •0‰ `•“R¯6e婨åê%çŽÒÑe'k<ÂoXNñ]Ïf~±xØlUò¼ 4èߨX¯z¦¼‰ªÇãV›Î7KŸ`­4Yð¬`ÏüâVâà¶(Ögr"c‰ˆyÁÎŒzìÊ^h÷‡v.¿æAÖú")Nßö¡cß¶¼Çµ[k„MrvçåÛ¸V:Ë€ÏÞŸúh¬SdÑ|±ß©dãQ¶4 ­)šmÇHLN™ªÕ j'Ê'3ù-Yèižß<‹ˆ_L)—±D¥Ô{‡ÕáŒ÷¹ÔL&;8 8´Í*‡®»êƒƒñ5Q›‚ÎÇD©ÃBߣ9 ÷‹-APÆ7Þ¨Ç^u…íO‚O\‘k:NMYß²²Ö<'¢¤Ãéä¢Á7Ir«„‹¨´³ç³CP®€5«ãp%3üåØkyYñ5d9¶DdYÖ#Ñä–G^´T¿HǘmúhspÕŸåtièàÕös*­9d爵­U¹Rœ”§&<'$‡¥u¤ ~8¨w¼Ó™.âº4¤S²µ×Š•8àx65„n¬[”´hoé ˆ³ª$~ÂL¯‡“‚åÚ\L;aTÚjO·¾g„HÈÈÀ¦¦†ŠñyTÙä¨L¬°DZíÚ€µ­TId/²³Š«r+‚Esân¥&€¬-WÕÉ•=(#àùÍ3!Ý×R‘%£ê¼A/zpp³+‹ë =yvyÞ+z†Åvljz5V¼L@‡šd|—E%Í”éݼ<­·föœƒì™ ÷0ˆ»$u«©aƒ 9‘GÍ5I÷úrëÁФ`»;–Æ—v< ^íáùÖTñšàÊgj ”tä‡r›Œ\ :/°ôеµX‡¶vÔÊ@œ¶±¢œ« šNlUB å1©*gö>µ³GgczàJnî¯[Ž÷‘øë\[w²š§{sC„MR™ q¦“µ¹–ä~l8(y-;¹åãÖFÜÐÃs׈0jÑ#¼^^nEü«{é–.ÍŽ‚:<·m1íTÞ¿Ë|†âD]`뵎8 °fùlÆ–“ÚIpã±Iç¶^;LöØ^Å]}ýH6óãïm? ¼Ã»ÒñÖ¬txvÛ$·>1ó—FÛŽR¥ór’€Ô‘gá&g2ÏìR+5žÍ~>å“Ê::ÎÎë ‡viyjÏN:‚€ã¬š@EJê kf…Šô3³NÛ £³ädð2¬ ðÒ!àä±fRkèët_VçVGˆ¥ÖYÉÝâ+dufêm”ö_¨Uã±mD¯ù£*“a&AÐ~§Ë¦{”ÃÞM%⥠êX>üB<ïþbQgÀ4-ñÜNbŠ ?.o¯Z’YFù¢¼ŽÆK'P‘Ú<>ÍÄÉV¿|S[+Ê|ÈÒÛ‰ßÅðleh¯ÙÍ6–*¼ßóÈ•„}Ùu³/xëØÒLÒõRÈ1Þ"šºuç%É/ÜGƒ²~ðèò–·LyûÅÖë%aÔc%ì½9nu+>ç²2«‘­¥¤û:äºôÕt”&VŒïx ÷s9w?„ÜT#~è/ÖÒ)÷):SŸ €ŒlFeØÃÀnž4³c·æágqÛ«`»ñË3•‡”áÈÙÑ‚Înƒ(ðlçaîü©as‹âÅ3Lå ô`7ôë×w^Ôíg5Æ :€æáòöƒÔ”Ô–}(‰¹Ó7ëÏJ6­²ÕÝ¢*8YU¬ÁC½$Pˆ‰ëR8b³žÉZà›Ž;RCÇ}dT*Ì;nËMžÙÂçvuó5™VSäݕ«}35ÀäB¶ÊÝ5B-äò‡U8™ÒÉD À(*Ñ YoV2ƒ“‘db—jÿ}5Tƒ &ªfìvÌâuØ”}í‚.pöP”õ#1õ  ;>uBäUU*‘Ðv¾º‡Oÿ<·,. Òqê™Ê˜¬âTŒ@¤ó:>ÇËïNYÙD%@âÐ=ÐUb[_T›¾c5¦Ñùüò·ó£í§Â Óé5n¶8ùtdúåà”úïqÿ§‰4NÓ7ɇ̖¸­©VLS˜‚·ppSè¯ÔWæ/ p¶ÇÕöÉÙIÉQ^×c}õG¿ì¶k«qAö7œaHù¨ò>4Mê´ÝZM{²fÕ &w°V£ òCŽ››pß uû­U,tL»#zþW§$ŒV닺WNSWŽî©'?|nûSVE4Ù<Ï­]g;Nþ¨Æk*8n\ä!Xã¯ØÄ=Ïl2ÐhCyš—¯ÏÓÖDðL~ŸÉ¬UênGÒ_yua‚RÒaÅ›ü ¤$ƒKÅ2$¿q Íq<)\öû6µº¦”9VÿÜÆ€ØyêQïs lPFÜ’1åAަy¿:÷NK€ì„vmX2Ïè‹ZZ[.}S¸U¿'è´€ eì=/ø}΄’ù™[1›f12Õ½HÒ‚=©¡¦|“~a@å»jV[jù:4gmÊP£]äsÿ¿gRê‘Yc¢8UÆ^7õ€Ô´R6—·YÉgªŒy®#„í0X¯µÖ²E©(×U(/^—Ù¬ç< v“‰š×½ÀîA†ä²äŠÞùé”Ĭ¥A1eÃÝV˜–ð„º—4Y¦{zOtaëØ<7´uIÕ™HÃNU^¤’Uçȶ싪½¼ŒQåˆ}ìFßxõ`YÇ…÷©[œ£‹µ¦íµKŒŸ ÏÉ/èVZ‰\…Їþ5ÊÐjå¶¥=(÷û¶ÊÑþ¸úÌÂ[i¬ZÍ„IóïaRôù8ÓhÕsÊLì0'Ý̓usLE³ Ô¯Š‰­àÅu°Æß4t#'íÏ¿NTJ6;ñ…?Ô—&ïÕ6˜'R뻨§ç8Þ÷”Kd‹”7i¿4Úõ\%˜Ð$z®ÏÖëÊ!QÛREý)ß;éÿ¸ôrŠ[\“Š}8[’ýÜ~-<§Dî¬ÌÄ,QûPÛ’›j8”îWŒŽÄ¶¨ðÔ5€Q:Ž ¤z"•”öÍ‹0ÇrMá@]3…¹ÚKi/dÉ.e´ô~b–ygåb¿ËʽœYZ¹[ç°C·ÉrPVWÐÜkäåûR{^rÑcõR,¥íBñý=?Ã'M ÈfÌEà¾fz䩦 ŒL„õðóñÈiíi×¢9]घ€úñ5Ô Š„i«"m%!³º–6û¶÷˜v§ž¥N©,Êýù’‚ÈG^šŽUqÀe€@Jn¼–œšÍ½š.›nàæ®ã{{¾À³(åΈǦÔ$+– C‚ð—óêÆj$õz~tŸ=:]ÊíŠ 4z&éÍHÿž&•«ì¤ÊFáuËŽ÷*0£(o¼öÜjFeBô¡†ÖÉ¢PŠíJyHÎXºå€7‰¡mÉÅiM×^r ûe°:G¦È©lã1OƒÆ«à‡QLþ ÁïrgÁtÃè)|ОҩۼJºéÐô•L¥S‘¶$WDã;kSœ#Ö´’?ÄïÝd 3ŠÝ°[ W‰Z®o \›÷I\Z7ʶ¥—w»”§ºêt­:=+¹­}ë 9ûC蘗™…Ü.Å2Ù—…³„í ïGèoF¸üzvZðóuÍMÖ6•²ße?<=K¨1”äU y(ghÓ°Ÿ-°ƒó‡ãSgä½ZM¶[:éEpŽ2+¥g“YUÛê*•­=MtVÄ©¨ þQ…J3G†¬:õ6¹žJl‰£VÕÜŠlag*U(û°9eÌw7…L3€V¡Rµ+ú:–zW…duŠÃÇIuI[rcZ°u+¾ãÞ½?EÚ,ŒmÃ.êÜóÝà˜œUì8Á[êàR:˜xPÿJa©Z+/G¬pXó·Š#$³KÙrî"ß{\@¾N±­.#JfŒõĶÃó(¹TšËæµ K$ÑLÖ–œá90“×ÄKÒnø¡Îâtda_¾ƒôy£ž=^“ë½³uE¯½³)nöèGxNnö‘°Å:TÇôüáqÐ2Éë#²놗¨ÐFiNò(…DÊÇØ} iý™ ©X³ê5\+,¨ª££'DÀvÉR.lÞüMG›ó‘=‰½­º%‰×¦¥Ðr„ksoo‰2ýÉүܛÓRML°xGØòº FînS—šžzÃ*¨–´6~?êW¨h 1ë)¤Ùܦ12ºóάò¡ç–PÍJ\ú”ö¨>ô«À*…ä³] w'ý%½;Ï/oòÝÝåîa ;‚X’=Ö/Ò«û­þfó›Z™Ê¨ÇrU'AåæVо‡wwF[Sã›|V{T9§ƒiž‚;NZ] |. ¸ÔˆäÁ‡-B¡ž77Ÿ¤èÚÒÞn)c졸{é-;­qí"u£qi·Të¥09‘G-'ôUÆØ®ÛÏ*íÒ·[†>aQÙÄáÃ.[éË`qÄØ!årLE•Ó‘A’ë4;ó$TBO‘yF@¯»\7^.®ÉUöÖýPæñ*žOŠTJÙ—MŠ74ÚˆzlEeNÃöù:8pþ˜D$P9kG‹ªWO2%fò´`#ßFmÜ{U»d®©•yq¸\MI™ QÙ҇ĭ¤°V7w äzÄ òa £'¡(§cØÞR>Û°s—'YôÜÖyì‰KícEÓ=. ÞaQ«·ØÕ+'{aÈ6"•s›N·mn¼ÃL¤ï2,ü¦Bà bÀ Ç4»e]¶Æu8ô.>’ËŸe›éÁê9ަ?³«ÖÑ3Àå»¶·ÒduÛP¼Ú<梷:y£ÀƒêÁ$‹wÚÉÚÜY(vÏyÜZÎ*t¾¬Ç–=>ÙQ5*6HÜɹr·ócåzê+Ìõa^öÓž SÞ”%ïc$¢šÜe õ îT,’ I´?Ä~ºÓ—ù(ý»fúoÖlÿíþWÚÓýì?mO÷³ÿ„=ÝÏþ·kO÷³ÿ¿±§ûÙ?°§ûÙÿ{:Ç5îÿúìé~ö?kO—oOwÆôÿž=]û¯ËîgÿKît?û¯ßîÿûnt:©ýÄ,íâËŸØ¡µO_}ýsžÉ¾sñ÷ÛïxJûaüý·Sú èRþôÕ/÷›_~þbŸ–Êÿĸ.ÝŸ¾ú÷Ÿ¿ÿâ©–ø|æg»ðé«ÿæË¿³¾úñ—ßþÉOxßýö‹«]ö¾ùëŸü÷Ã7_¼×x4_ýðù¯re<º¯>ÿƒÊõÓWß~óÓ ¹½Ã_}÷íž{¿þügyéUnp}ùŠÛûï¾|Å­ý÷_¾â¾þìËWÜÔ?ýò×òüò×òϾ|ŵüù—¯¸–þå+®å_ü§|ýøëÿò?Ïå¿þ¯ÿž7ïüòïÿòÅó¿÷ý/ïÈ•ÿÕÿ˜rU¿ùÉ—\Õ¿ûÉ—\Õ÷?ùÒ%ú“/¹ªÿ û~|ÉUc¾þá—ÿżã•ÂûÊnÇÜo'Û¨ª=4¨G>ïH-,³òRt\o³¤[šåv^&8yÅ=Yl³ü>Õ ¤<{W}Z;´Ã9Ýù4(²"âSŸ7ȱX}Ú÷“UíóP9RÁ‹Yy¯õ,ÇTàQù˺ä{+YÕŸXç̯ĪÐë‰eXWSúÏÅ:ñ›á9”pÔ”Zñ¾üß+89’†æ[ï‰âêÜú¤iz€s®oêT¾G*³­&åXz$%s|TmÐÌI× Ò¨Ó³‡·Rº.»ýšMJÅéÙä9Yˆ^|öH.å°.IêJ?žž\híâÂ<Å]ÖìíWܼyzüPš]ËɱJ6Íæ™;jà¿„þä¾í×x·p‹jÿTîñT•Z¸•zç]Õ¥ÏPí'óp×dÏP ;ÙkϦå[Iʼníß÷óü¹{4ûZ”ÏYÅ qyDl›Å3°“_yžQµ~QðpnÓ¬\µúÑ”äxúr–Q Äë0Âr¼fRó÷>¯îrÓS’K¸œ·è%µ´œ/ujáyUû³M¼¾åì„ÂúRÃÂ>ÆíN«E.ù¬ãUŸi\ì£Éâã8:|”†^ÖS(Mˆ$½#j¿Ò=•U‰°;<ä¸%üÕ©%Ò{Zó|”Üòä&õWy„m%)ãÕ=@×eE¶N‰iϽ"ø)®μ3?oÑì×öN%RæYmÖKw8U)¨ÑàεGËéádážÇ¹"·í8Hy¤½Sú]÷±ç9«¦?¡rAkjÂÓf±•ç ×cOå9žÈmg=9Žê(šsfŽ!kå”ãdÍçeghÖLU÷ïò\]}¤ƒ…ã¤y•I·*Æ; ¾×Éι&݃'Uô³ÔG¹ª¾RÙnrOG9'WË’=܆ŽgÍP3hTÖ~Ô²ò•«#íyÌ ‚ˆ¢½À)ÞÍ¡ç@õl„{¼R”lW=¬*›tMÍ™®ÌcÕ½ÊÑ IÎJv/ÅB:®ÎSR}·žû ˜ï@Á}UùMK±nvñ£Âknƒ­á©j£8z5j8šSÌŽ”(ìtåëÊÏåÁ+Qò%´>©óßø0ybá—<à]š:Ôg®(Û¯k©‚Ð/»šŠ€ÜKÇRU]Þª1¨â¤§n2㎶ï.ùD\øÇéd‹ÓÀON{d§4J—Ó2Á¸ðBæÃMóø‡ã—<­WoWÏæ}\iöt×p, FÎÃÜ꘰¶yPϵI·u>çP¦ì&>ž¾\óê‡Ï¢ID'Wñv‡N¹²UùšXZÕ¯õÕ Ô ¤©È[ÜFEÊç¼í·¨Bµ-;…-ûLÞÉ«=-¸ê¥dõ8=GVÚc¢áIej¼‰D4ô–œeÂçí´ùY2t4Ë~}«âÎmÕÃ= -puDIÍ—ªì¾Es7…«zÄû%»IáIAUW”$ÀBÌe.%ëŽÐyó9—|«IôJ_±C b©’mTã[¤àѯ'TŽ0é´äŒêÒ]@¢‡C½žn’°¹ôþLË–RSñIʽ¬ƒ !à‘©,漩ª|s1ê­(ÌŸzfE§ ¡ûVO”ÜÝßC?>Þ©3¥†gûc)–û—t(•¿æ` {²“ãÖy–ðíT¥.xÜB`aôÛƒȵz^•ç M÷_]IÉt$õ¡èØàÕ·‹¯Jþ²’~Ï}ݲ_'«Õå¼yHFBZ³#²U4Ü|$/ ðX=’Z™Y;(駺 è"ò<ï¥8Šó2¬µˆáíܰrÁuau„ç!/,rsQ« °¦™:þÙÞa)ߥ¼$æìˆ˜'­ù8Õ3ãÆkø|›R¶<ò¥JpdNÖÐ¥€µ‡ìdH%Ö§óœç`emc¸], ‰bDÄÀçx*SÂ3¶:é°¤ú9…t vHÈ—ìe¸ ¤““dpRÚ¥Ù©ïXµqfß=7ȼ’Qœð?nÅ~H»5«&0Ìè×I¦/ä*œeÕ£MbVäÖ$ág’Ê6GQˆ°zÙZunËÖóËsXñð^Çã¯!Çò‰¯Ho¡Æ=¯I€ÍDlx4Zïæ.ù¯BQ¦6uy4ûQH¦Ì³+†¦Ið:¶YgDÞÛ^}nVíÈ尪ǵú‡¿ª(=B~ž ¨æÜ“2¥m‘þGÁÁ~·T.e$n•Ô ¶|ÖIrfûÚ¼ §yY{ ¬¤ñ ¿(Cùðü3@x+‡ )TăK`ùÖ9U/OƒiKlÊ #Dñv<ß¾”ÿL·V=™å{ñHo Ñº%CNÞš2Ùl÷öL˜—RyÏYñ‹z(–õÈ<ìÛ@alSëÅþw|ÍѹбG¢Â ĉ{€Œ7ÎëØS¸¤mGA-$õÚºŠ~z$ßdl>îaÓÈhf3³ 4€œp誜¡ ½á¼°FH["G7òèQqœ:ʱ×8}Û%9?ŠP~shu¥¯½[;>×8”¢î©¢‘bÖᣴ+‘Š JÅTÃ&è«:øÈä\A¾AÞ§”nÖ§îO—NDrö–ìZ ÝN’ôËŽŠ£ËÁѱ’ÊÉ!JÞævP(@}óyD0°ú–™ƒôœRz.í2ɉçÜ »’6`j!Ôâ¡ê…˜æ Rv+Ûˆw×è—GáÌÛcëgjG'<$ž|,(’z³È8¢¡â µ XêêµTJGbËÒñŽâ …¨b²j‹®Ûd#½^Ë’ó•]ãšÞ­Kt¨ ü>‰·µUäH ½_e’zW¥ÄÔ¦ïñPž¡tW"LiÎ>سŠè>­BoLƒ‰¬ö„´‚ž Aj"gï–ÞÃ~™3þúNP4U ˜šìÀ(¬>A ¬Î6|I…¬µ~õ³TæÁi€ÊÕªÝnª• {iñFä½uE–qõ*£]€þA;%µœ£, …³YŸu0åÉ.½óV9ÐhöâéF?Uš•ŠrÔæL15új/*4<ø‚´²Õ»«:æ*É€NNA¿·†ò~U6=Ë× :J._溨ڮۊQk]–\e%„R»$1Ÿ•œ˧ÚoxIV°n¶ÎÝnG”ñTÓIÊ9´Œ”Ngv© ó+ S«ó– ²¶3,Hé“NLŽ®lƇi}=CG2YS*5ž–V"ÐáÔ—«¼×ÀÊiqÕ±_Ê+£Ã«!I%>çÍÈMüBW4¢®`°jHeiFMqÜÔqç#ÀZŽ®fuyí~øE猳š§{ Æ)ß~ItV£R°#ýdª“Ã/?a[b^{òYJš#ñxæKkÓÂó±L+EõMxA‡»fÊMdgmºÃæ'•ÔP„ìù`ï’…Xå±÷LeÉÞ`!M‡Æ«Mg{z²¹©àº3°^ÎÓ š4Ç£örM®ö8¬ùÀº¤Re+æk³È6­ü"@fqzÙ™é-|òèd¿E¥ê×:»æXU.SqQmË:ž‡ä†è·ËA …BTl…ØCrJ=€ôW¡Ü˜$gCYÞʶÍǰr¹EÊ3fhöPnϤHoß¼fçS5¶)ó4ÆÑœ|¿c‡mæh­~ÝѲµ†Öbà[-¼ Í«1‰¬‚ZŠNmº>‚–·_sd³)q¥;;K…pÔZ°“"{Úängvؤ²Ð;a[—(î²T§âɽŠ;¨?'ÅÍFó?©hÁ36žÓ^59u)ÑÆÚ±I¹‘+Fuéüá½T° ä/g®¡‹Ù£YïÐL)~í–R¥.ËsÉ}–àW ØkÑ‚Vyå,Ädr¨ŽòéÐqd.[3Ñ!è©ÝnQÈÕŠîÑ6lûõ'ã>ÕŠë p€ç%mTUV¨êÿ:QŽU);‡R/ϯÌ;Øø1l¹=åË]§¦C¶>v¥¨ìÍf.åé/ý§ì@š$YÝ puú²“ÛL¡9Pdýi«y‚ _•ôM±¯c΢^6Õ—Å”ö|DQB<ÿxªAZTgæ)÷s%ù8ŠTH#ïËiW{ÀÉ_;’ÇUŒåp@“<TlÚLqSüýUó¹”ø»Ó@Ë tŸâúÉ–c9æ÷¨T@’;máò#.:—G™—5Ζ‹áºíHh„ìÅZ¿¨Ý=÷K¯y©Šç€ÕbRn•¬¿g¶$_:Ú5`œB}¬¥ú˜¬ð©n½I0ÅÂlëOgRK›b)ÿ[I—zÚG_â†|8'c°Òƒ(F©‰zvêç@ENù­0—gCi-q—s„¯eÏkx&&²*<¹(É®í;TõÐUÍdÙä5góÝ¿ÏÑZ¿r¹COØ[QëCw À€}žKÅ÷©\¹ áKU PB`?Yò\bŸëQâäG`P„~O Z‹k¡0Hê X’“·Û4äc“wˆL“KH}<•¬Þ#¥ÐÑ"Èt×±™{Pâ¬ØÝPyIë3ǘµ¸£ÉZJÚŽk„P l‚ÝpÈC%‚¥ý%[ÛJkës)Ü5îk |îà@v^Ò–m¬L*·sª5Êæ´#¦ƒêÜnì[¢ìT¤ïsu»ŽàRf9Ê2ŒˆÒã%¬“…^ûåÕ#†HN \5¯…§}…Ôôß®¼ pð+cÚ€)Jþ6t^2€Ò~O>›¾iñùŠÊÚ_²S¹¶ØreI¨A ˜^6ü@ ä´W“$Š«rê± @í†t¤PÙ¶j‡©8ŸÏ—í{:iìóÑ&Œ}ܦOĬÅÎz3wóÏ<(MŸ q¡dûjèz¨å¯ýâ©zu¥²Rv¡ØwìëÅâ<žž9G«dçªèœÆ¥Êû‚ïlŸé>"qØ`§»M…ñKÑU=³[xŽò¯gWÊ#Û?½ž© ZpªÕ è+ b¯c¸~v¸µÙ#ºrÔw›×¨)ßDy Ÿ’å¶C ‡ª(ò¸ªù<—¡Lꊺ–ûèg*Vw[lÊÕ<ŽŒ9 µjçš®Ó3˜gŸªT¥ÆcØR$ðÎÑ{ˆ œéù¬ÃË]¹GßR¤³*f‘ ’Ïtì*kq¤TCSCX«_=íx¦jYÛ4(½H M˜%AÜ5&1öÛÕªZvÃ4·¢¶&ë­Èå¢ÒoÚó/}¿Z­³39‡¡5„s'½ƒ]Yv×ɸ=ŠÎ½÷ŒÎ›Syy~“qT¼L]§Ô+yQ œž.Tk'÷Ô¬Ö!F®Æá±Ò•¬D=K[6þ)?Aâq=ESVÕFi÷ÈѷʦæYÁ‰ËCÞ•ºöNÑImp¼¦|^"‘½Ï‡Ã'[µqId9U^â:’ö¼Š£òºúQ°ðIz«½ 7'1d´ˆú·ä ª'‘!wLeìOIûê"ê¾-öá}\Ü,áÿÝzÇ61®‡ª†5OµôÈÀ©Cü²nDç,«¡Èÿç1¦ ‚ ›Çê‚ð$åÅŸy” xUS­­£IÆÂyvÂsÖ´k“ç×”AExJI¾%7BEý÷q²šìâd)G­kg{¬…t[/—;§YåUNþYòôsÖ¾<¯xñ*,"¼4#’  ̰gä·ÒÿÎ7‰…Òj9ŠK=Ãbã›à4¡#­¿¬ÌÖ<·#¼ã’²(5B»=…Órh9æÂåìt}Ó.ö¾ÔÄ›Có>…žŠ'ªKé ú{}J°˜µ••¢¹µÚT­èÚbñ„—ƒK¬·Ó¨wà…¢Tï#¨n¯  ØOlp“ÛÎãÀqñ¨ €’ØyÍeeýÄö&/ÅcU@?·—7ÛŠlóPÏ)¾XçC… xM¨©¼þ{-)yGÛ‹Ý\2÷£F¦àQ&ûÃ;òÜPw)ÕÂ7XÈ…ÍH…—¬MTɉ´¨¡1&¬t«Ÿ;Ý·Eù戚ÁÙk[›nK7]*¥—á™@QZð«›åxA,‰|@x$*³ØÙâf…{µ­ëM=Ii²OT`,Ó¢°ñÄèN±ºn¢@(&àW…°Ó# O)m5‘e‹Ç”EwC¥“$xyÕ9 ”bÆ…‡½Ô‚{rîµÆ®þœ•ÂLºß^y—D¡×ÙqÞ©fÃð¿€L¬ª”X^GœrÓÀœÿTl8«lí±œþ¬‰VíFn¯;’––¶ nAû®Þ;=Ø®ôÅñÑ„yyFi‚Hó¤ŽNªjlóذÅ#¿`'Çú³Ç晈Í3XÅö<(=QxŽ1¥L%EÅ㆜üR¿(X¹J‰«²Íë¸x‘GSnK8Cè¯R±Tjˆ¸»LCðÍÔu¼o§˜¬­™Oâ­ÛåÙC=/ˆ¤E4©,™7:*ÄJ@ b‰:Wè+ÐI. 8.jr~â²5æÈ¥ÚÉKø¾óO[ø²;°b>=c‘x@B9Ì5® ¶#(=y¸Î£åé_±úŒÊ(ª¯¨ SVËæÐiÏZ~×'äc#ªc_ÊÀ‘"Y™ì y–"<Šëy¾,+ŽuIáwØÔÕꀺ[Û$Þj4„lå1ï:µLìA©KŠAÝóîiŽ{‰Þ‡™èår”÷¾u¬ö¡å’& c°¤b°øë€fŒ´>+I[ØfÙÇÛ­7ïI:%x“‹ãý/`{¯uøee³ãTŸP}Ѩ;mÔÞÛÃ:*ç&Îð^dÊ)*™tš#GÅ­´ž¶ÃIUe€ÛtŒïÖ¦jÛŽŸyMÛ"òšŠÍ›Ó÷Kö"fݱñ@õ½³wÅþl ëýmßú鬢N½£‰¦_Þ{´yäì2+éÖfÙ¶ò”ÏìNPD_EìØ‘HG€7iñ†ô@Ð^€õJ8RÁ_« ˜BAÒX:Õ40¹@ë/1~KÞýõ;ÃN"a+øÄäÃÎÑ´”òzº5‹['•C‘¦p IôTÿwmSúiþË WE–Â¥ŠÇÜ X[¦G)¡pu´Øj6¼¤­Sjé{B”Z²#|×ÓþU÷‘Î~H›—’]‡Ö> Z*>¡Ÿ‰„uØU©liA÷ÒÖDë%U·hv¢×â<”`NH0Éå•ZJ/¥Öš]¶huhlÍÖÚmMbÁÐŒ…q^ïÁ;¼¯øä›8û¨6$à  dv7íÏÕ—»ËÛãn”uz)cTgm™€:ìÀQb¯¡ö"¡õ."~¥ ²Ë†"0{|élC˜OÔÓ‡¬‹ÎÓMaÛÌNå“É“GËDE®ÈvÎ)buXa‘tÀñ=S;4°˜ž>#(UšWlñî~«ªœZ#¼Á±ë&-@ÝI8ùm³³Ê>ˆU‘ލCÑ©£®béžýJ Ó•I*wµùªÁŒW¿6™§“ƒnB q‘¼N&Ó– ~uÞfz`D'«êºwkv‰ÀÊj {®Ø÷I«ÂV™šrÍ7…Ø)%4ÙŒÕË)h(®þ)Dxè ­d_T×gG°Z€‘ÈU÷)¶"©´Ø|L\ãU €r„8}ä¬*ˆÙ|q+.K:Po˜Á²÷IñV5ÜÒ­…DHeÛª<9ì«ÞgÏÖz\óÖv!œEÒØ©»‘sÿrŒ‘ÖŒôÑ»V©L•œ­Ã¬¯U’ ÊÔ”j¡UX÷z{ÍÞØd$)à±Ò²‘bcU•]³qEcF‰ Ç­ëÒFvQ䇉–QS»BÔ)zÕÊ$?éÁJÀiÚ{é¢ X¯‡ÚçužñC]J§GûC÷4¹ÞòG#…ý£÷«¢—zÀ¨D=szúzØØðDH—Nð<²%5ßj•òL4ç¼4x”-s]J¨Â,+]¿V¢Ä;ì)#0=ò(l„9=-“Ò¨®I1%´¯‰%¡¶k2Òó:Ý ]òï·ìO Æðyx¼ªc8W/Xê#E&§2O‹(=Aª&íkí/u]ˆ: ®·­³‘äûÊÆä‰LÛ|W<{+`Š<àC«øFUNñIä£s8ÆNÌ·õâH\kƒW—ì¥E­¤ŸÞ¥Ñ•C#ÒÛ9t]eMDÅN²S5WRºt$Óí †íÜY…TuyJ<“˜ˆ¯•Ôœ³ AÜÙ·g·j<ЏØ09œT –‘€ê…§Ô£Ë”Ô ÖcJB#9Gé¨ð"¸íâk÷ E8 Xswžã£gNá~”²dwT2ü F>–[&¨%S¨ÿØù í½Š-6ÅPIÀ'©Uú‡>˜*ZûçyR'õFîu¤_WÁàÔ½§¯Êõ …·Ù$ùè¢rhQ÷Y^z5«DB$س«‚®Ôo‘`&ç2(á]ä@Pä`MV ¹B A‹êG_ÌW!Ÿ©OPA‹‡Id#²W ޝ=Q^†m -ó$ÌW|Ò"‹ØyÞlu%FøMJ¬Ï5µ;=´c}¿µz   ü¿(TT®qu¶f¡Õî Ô ÍÀ£Ø‘­yI˜ÓFRwl'‰Bm“÷GeÃRU„¯á ú ô$·µ¯æ©™Fc¨uèËn/Dãï÷­¬ø2U@Mp,Þ4ËBç-„.µð€•]¹kýÛê—ëCjcs,ð$ᨾdI·s{5h”JIKaÅ3áY-&­à’ÚŒÉã¿]åºf§~GËzVŽ}ÈÍÚ wJCžÅ¾óÕ•ÌÑŒg¬£o%b&qqluP ÏdYf¬z+Ÿo…æ·2]ä3IUí¤'ïÁK’Ð{« &ÑUwJ3 ¯-ˆ°Yœj(S†ÇyÞ›Äxíxº³™šyE—Ö¼Åq}ö9Þ’â …»ö}j—ª]IRÕ'zEu™n²¥2qÉ oÅfˆç¨Š€„FY`FÕÛn97<ÐzV)Ÿ‚§sÇq$·®]ô®ÞUœ!bç*ÑNâýMæÜÒ°öhJ¦n¾ºÎC›Á]~p}<µštíwP¬¥(™HaÛrùÐE¶T>&–m‚ˆ\=NVmƒÛ¢}Öo"ð}¡õkЗvHò_‘ÒáÔ¼&lE¤]uðNhYOµnC m'¨>'éÇS-@ÖžPÐ1éJ_ª aˆÚ„AmŒï훫ù…#Í};Õ©²_ó}P§¢ˆê6ŒÀT!Ȇ÷¾I¼Ä(ëÜ xœ¢ Ê1·W~°ãwHb À »*éΡeÜYÇ­ðœ¶9]ºNܸu”<œžÌC´LFK R)iOt¥ÀÕt…ýÁ2ºzr¤€(öØÖRѹ,§"âÁ+¯ jî¦@ªÊY¯ÿäñö9Ó*sk3›Š#ùÃÐæñó ‡>Ѭá<ï鎜Ñ ‹*&™T ^¦B„‘uMÀâ…ä=Á’eé%ÀÝ5Q®C–Ô‘;A6‡ú¹{\ÓSÛqZ½èe9t?»1™ÂLæ™Ä .ràÚD|Ý+lô&•ûï=µè1(a%«=-o=èº'ðUI '³¥PÕ¸œÄ£ì¸ºå¬Iîl¤G{R5ÆŽðDºÞ[C}£k~Q‚°ÆK¢‹‡á׳U‡*ŠË?³ÔïO¯0üHݼ‚þ…KJU'Õ, ½‚?ÖÙ/Ž>ÊÕ¦Ék%Ò­©/Ð_e;¶÷¥”ßdÙïÚMž@eY¿ÒäÔþ¢N«¥öw½_¤KGMþ.˜ò@»°vɼ"”GÊæ¥5ØôÒY–Ä÷.=¨rtÞFjg'bè€\^UÐÐô.‡Rlã:³ò>I¿#­û"=®ªÎ-*E¨<õ› pº©,€]yÞc OY|Iy)ç`½µ½ÜxkFmÞ%sËxeªŠâ¼Ç0‡Žª+ÛZ¹ß¢Â¼'DM8{ŽV(—%(òVµ*™oçËóÜNP|Ù %§¯Ti¼<«:ŸËJ’U3ª½Fq|=Éó¥,—¯]ZÏ]À”à ª¦äTv5:šT/–ôÙ•t˸À†&žÔMˆa!³—ª&éÚ׬TpXqpw•{Þþh®]o*ëDÒ¯NWr¥L°Mx·ÃüØ™ô8jêÜ"•›úèTQ«ðsEv9cÁy¶ö`ŠÎDÒi¶ÇÁTk—³…¦g/iùaO§_ª;²¤š—x­âçW䩼ž&êj¥Y'À&Ë+~yÛli ¾^ެ9ã¼E"`ËÙ^¨ ¸Él ;s•nGdegJj%;¶éÎm~>ñC0W-E©ï” ºŸv²l{®íFθ§Þ„ಃRxÌ®E›šš{órç»Èì‰CØ"&rŸÚ߼ΰ3. 8¢J3xchÞvépF°K*±ƒ´7¯Î+ Î+†í’šh°)"KÙ”f{†ŒÈâéŽ Í¡Œö£Qí£9=h‚…š·çá©+æ%;E]Þ x@fYJ¥—[«(ËäÜ¢öÄ£Qø§õÄn™—ꔿ–-ÕèJvN\'ù+–à AX¹¢³Me/üá.¦ž¦òNu^zϼ¤‰Q…±CíÂÓ“½s‚³qPéìù(ù¢>tVÊAâ•UfWn-߬Òަ‚•Öfú­u*pâí“ß!’Ò³åÙ(Ú¸pûMŒEHX8©›&ñ´øm{-Y®ç˜Í&LÍìhYB8ì6± oÁXJÊ/­ì‚³w³–s»IÔa'g5bN>´¬n$g©g$)½ö_€yÍ1"þ„qåtŽzîÕä"yÖ=ây `Ø×ÖI^•Za8T~é#}ƒvõMK¿r'ÈvÙÖ€Õ¦Ö7¦þìNã²{wO›dJ Ä䛿"x9{óLNÎò°i˪djz{è:šÈ§Ó(M3ž*ñüm²ÅP¤–Ú€‡wnóÞˆ¨³è“LJºK¬­>q ª¤›ÆÞ²ÆG&F}°³¢ÒQŸªr@wY„\]áª3ö¸ìqÓÂ.mÓ6k¿Úz¾U}¸qöhêã'-e‡ó”Î>Üj•_·³ïiìB˜ó˜Ÿ|–Ý!v:6ꢥ~:¹k5i¹fò¤Ńí{>Uâ /ÉY†ó¤˜‹ÝßD­<YfczdJÈæ­?<,òûbÏhOÚ¿ì%ÒI‚l¾S¹t)ÅTúÔš<‹\¬D*<Ù¸à7ý>d e©#ºôÚHí¯•5Þ´EÞ” šô%£ƒ.½Ûû5Ï#«MCF/T¶øˆäK¡¢ƒcvô¼Õ¬áô.)ÝLþÝNÐÆHÅY’ùú`z¿Òg<®»g 'Žíïa5Å]ØêÕžA%› ·'Ôô¤âÝÐh`P·ñ—Ç64Ÿ»%©Ã•²ä‚î'ŠÎÙæõT¥ª9ˆ•<ˆœz4ˆÖ%ˆñ×êv{…°T àÛV5AýÕ;ˆã¶®J•i°ËR ËpxÓlÊß³™ÜÚ°Ù>©È0v’…ºüttt9hôtÍ[S ±é¬,0‹ƒõT‡~µOÓW÷R‰{¦Pí$ÔÆ›|Z@ö56Í7áOIéôØðu+ñi÷Q_:TÞÇá¤û‘•unÏÓ)•Ócû¥æØGõv/¯ðâ(ÃD—§Ý_6HÓSWINÛiÀnUÚl.g9A ÊSðq޵úó(d5ÍSkñDL!*ÂP†B‘9r©­›O±Õ×÷}^…mVAŸÝÓU)Olµv:²­8`ÖˆáíM¦G7lÿÙûµ ˆÔÒ´Y äe´G™Ëª%Rò¸PûðÜÜ£B1ëã8úEJ\ò¸’ç¾Gº†§,2’Ùì /¨bp°RÉ$@EÞŽ‚B¼›¹vÓˇê(ê;oÒ9¥XßÜŒ­©S÷ÒÄsèeB¹N á‹ø§B™A£¹KñŽ —ëNXê/¾ÕÜYTíhÛ's½“…®Íν]—ʩɺG¾ ×©Â¾cÊì²â#†íùœØ?°‰rÊb~ÆõÚbåã@qE =Nô{!©y€¤{/á‹TN¿¨KO* V™®Ð×õn÷a¿å9 'ó:§‡2Au Jq-Û•Dò{ö5Y“‹/6]ôè"®WÙ@žWíx£Ê Ë6ˆK쎗úÒ±ü7ßåð>¶ó09rð¨øëV´sνmÁ‚,áñ¶ùHüË*:­Ó®~9 üÖ¦‚¤çl=Wþ7=\¹n‚S¾u©ZÝ×&öé $¨=îJ½Hê±½å­ZA„sž6JƒòÛ"U ªc²ÎgÒŠGnT}€—åtu(¨¢Dþ";òõ¸ß©íg$êµ`yQ·Þåé¨.˜ËQ6¶&8Æ“mgŠ'ð(*YóÒåÌ;Mõz¬ ×ù‚‚wõznqé+É+ æÉ t~œÒ;µÑHZ1‹Ô¥qôâüëö©Ç<³Ì¹d‚©w ‹m%K.:Ž’Á¸ÕžKšrg¾ósóNÖ«U!2QI=œ6f)@šg<äI¤šP…Þ¯G‰cÙÄVÜñæ …¢ŽR‰&Q'g”ú·ZK„”ÓÓäºg>¥9nÅAÍhY¬0Ó“•Á”©tÔæuõW™›• ‰§Üåé@î“H@z¢de ;{×MD"©QÅjãAÝT¬GÙOêG9Ò”XOqôÌnÃ>M \Žëg&Å7ÕXôP¾Êõу™-C®ç…u«fRÂ"~r«[²k€´´æPÉ!ÕùÌkKâm/mù‡ò*(^ÝXÉü™¢4ÍXþ‘ø!1nÇÏ¡¨'ß—˜?5¨LÊ×Ìm›ÅÂáÏÛ¸¨U«–зÙn²j¶™ÏVý ³jŠGèrÂóV}µ_¦r¬÷æUZä°ËàÖ¡ª>ÂTøl+YÉšP}&ý£ãÒ,”*Ö^RZ[õ9ªÞŒTÒë6*H’ƒf#9›K5OÉ ¢ÜÉZ¡.HÔ€J×µ(y¦`–­ì›³£nÐ žÝ™›½ytFAç´g’œ†²'9ÔFiZ‚Ø÷4h‘—tm†"94:îFNޏ¾¬tªIÂ5ÛFœ¸UëÜ2#ï©‹›ý§¯åUnAv³.Ééžùµ¥¯»EÈ¡+øÐšý)ªÛK!׫5|oÙ4°ŠbÀÜÖù•êôæ±%¦*µ+sÁšØÖ–µ¹Ít…_5XÏ ^59ê ‡QËO âÁÓœl"\Pª’ °…4Þ¯RÝIÖQƒ$ªBÄãåyœ›¥ÍÀdJ3’ÇùjÑÉ }l\3ä]0><0’Á¯– ±sË8X†Þ5þt²Áf!3(ÎÝ•ò€Þ…} €åL/´³±÷’6S=l‚å!ýÝ8ªÜð&gë<¬#Ÿ6Ez·¦žEbR¡Âù›ËN‹zª•@åV•úmŸ{ðZ*åw ÷?÷îm«Y³ì½¸åÔ¤À<€5íUÊÈòZl©ÒO<qo8Tâ0éï{4â|oy4dÒ"ƒ8<6ç© Ê¦h«LTÛâ¢ì³vŠ`×=#HÙŠlSyç`„&êõ°v}ÐöЈ<8}çà|Õ’…nŒ2Ä,˜´vŠ¿ÚP!’P‡¹‘¹¡{··Þ-ߨ·“‹¬=R®Râ„ú ´‘‡¦•ãÕ|¨¢ŽXT#w{µÍ©Âá¤Ü Ĥ¤(G¦°‡'-!5ÏÂt…Žƒ-ÉšVô³9àªö{°_;µ¤Ž&˜Ã©5§#d@°4Š)áhõ#%f~ä6Œ$Ýâ’¬÷2ÇKeÎï+%˜\q\“ 7·q°}›yx4¦ eÑQätÙÀ{€:„.5€ù7[L§Ê-2äÀ^¨¾^PZØ`†ê‡8'ñšÚ·8kHʦPš^:ÝŠ*U{n†³‹Ï$¨vÓçR9V"#Q ´ÏÕ²"¡¹ïsF3šzî:P^¸–€:píAx}ôÌ£ät:–õ_UP `¤¬6)С“àxî„m­Øo=€o‹¡%ê=D‰uSƒBɉØÞLhRnËý ÕÞè\8Ń wJ! Qe‚Y©ÏïmOí’|º^§¹I#uöN1…Çù;»'.7¥Ÿv¼9o{mêü~F "ÚØéÀ~Ëè-Êò¥‰¼³îsU•¦æ«PV=Á~C;U‡¢²TpÎê tO«NK¢7?Ër–oÅ~Ÿ•e­•Å{€)^(’–ÀÕ»ýÖl²9 ²'»SYØetƒ(‡SÕ†áC/‡qŒ]î+Ù9zµO@·#ŽÔ:$7¤óª¾ü:r[HQìËÍ:.<²jÃ,eò@”îôÔSWc’¥Kß¹g«èvzj6óyûÌ ¨K<'é4>÷ÐìµU,Ë”°ýã›l¥Y0Lïsƒcª\ëÅÃ.»g²ðnMžjkÝ_y3×.•”5S÷l°¦pî]Å"mÌ/•¥`çLIMšŒ9··‡²Ô¼k Õ¼RNæ_áN‡v1GñO5Œž»zÖê4±2Ë)Æz3)G¡%…‹Ãÿ†ç³Ù µ«Âp¶òî6x£§oˆ•\Ø Î;KÎÆW ÿ*[Kù¦^;ÕgÚr­¥,KÏí"ntY#!‚·•LhrA&¤V áqMò%$P(Hÿ5©3t&õÓyK©ncl} ‰”·tá¨EÞé¼·IšMüÀ ß´H/Ü®k~”6÷67ƒ ´\U¦vUÝÔÏt°ìݺUìR…ŠÐE"#ŠÝ:¬f¥cY…/‹6(õIãU,-gÛáX’“¼µül£—I#¢S²¹OÍ-Ú#™ÿ$®°ôºÇ]Eu †Ü?%?Ý'ù_ÕpòæXªì=süz$ <êë ºÚG¶±h Z20‹jëŽ#‚Ùß^9VÕ9½­®Çã[2’”¦‹EíG}·bc…+ ¯R…§<äÒTÐ.ÀÎÁº:Y¥ òèÀ@ågIrÌ,Ìì|£ÌTOFå³4xfgQhN›æeçØ1ÜõýÔÉ ÛK—mxJ½•v~ªåÖˆ½6O• ‹ A­ úz(R;¶®6¯Î¹ÛfoÇ£ãÃÅ{hú7Ã8ÿ^ÛVYöé81¤uíÌ.Bžî{‘*tà*[®GÊRñ`”2M [½+ZSá{–-™ È)3:R޲'ýȪ4 ÛIbêWWÕ¥k`F…¥HÏ—Z[@ÙÁH^ÂHj`Ø!ÇݳÖÔNG9«U¹Eý@¨Xlc“Ù5zrׇt`O"²ô§«EÚ¸¤•²@磠­½÷ZÞ-'Ńÿ5»•oU3qQ¾:¶ÕEõöF$ UrcÕ¦ç%òè=+𥆋C ¨,m;ÂO…ç~œksv/Í¢šòUŽ„ë£Pèj´T®Å" Bþ0Ñxåi½v–Þ$Õ[¶Åsè90ìÖNçr—Ó‰â.†|]‡²ÐêÏ– :¯‘l'ûíù  +½«9A„+(7%¨†K§yؽ55ÂÐúÂÚ1yJBÊ뱈#jSê©ìé1é±ózË¿ÐÒ÷õ~ȨQtîó"µé’œ=ëTñÀ¿¥ÿôH"oò§R“Â^ÉÆ,âJVEƒò)TïUqƒƒ8bm.ûåD|0tÛ/ÎX DåÙ_Æ2õ5ñæ=$ —¦NåõûTÉð…•!‡n[léÊ' ³zf½x¤Ê‡žxx¼£‹à Ez~žU½…uÉìbgÂ:×Ô›¢6C_íA–RÞcK¾ÍS‘[½óÝê‘+%ÒäUŸÎ~±t¥ËMZP²ÕÙ@àÒb"¦~pÁ’6%ŒèŽA踪Q[…è)åWÛqÒ8çÚs\Åü˜G"°‘’’ʶð¬ÓA¬dm»i¶väZ(ž”AéÍíz ü(5ÐtžOÚy5ÏÒ2Š@G¢4’¾ªEÇÏG0€*ƒž=zˆî¼¡Eݸ摜ÔTdùâ?Â%ÿs´*Ÿ_UöÀI­Ï>s”œObM4篯Tç|Xžiéõ°ˆ,»}B0TúÍj¬ç€¢ö¯½é›7¼ìç5+Ï÷Oý˜R/€þv{Ø!S O» F©¼l„­ÉâbÛÊËÞËÀ} !ÆTÄQ}€=7é9l…÷ÚS^#ˆ@èóššTê€)KùtFîWí»¦øZs¼°U;Û7Kç(Z^­;Dëey“ãÃ×*G š°5Ì“‹À^%B©Cºà9+NÍ&áîÓ¥ÚJÊùI{MTþÑ„MSlII­£Ëƒ½œ½É§1=êƒЏ_½Ñ$j#–opÆöZ"%‹Q.K?:…âf,%ËÛ&ù–éÛ54èlÊç·YFŽ«Þ[™êÄî¼rGô|¼ '(b®w\Ï賋¸ ±:°þñÍ¢Pj‹èbœò0©ÕòžM-¢â¿ >“t±Kš|°u E’ ûÇq[Yyør“Aõ‘=˜J«Žñê? L¬’“AÍa<&VI øÄÞ¤!÷žðw„­ƒÃRà’Es6i²nn` Ð uSµÿ¤" õ›Zó/e¨b”žÄC‡ɧwRaXBóý¡œÕºeISoÝì6–"È1¬j*ýÛ6Krüà$^3ßCT[žß“nÁ«î†¶“·]Ë¡âÞV7ÅXZ»Át,é׳‘:ƒ#L¦§he:&Òâ°ÆLÎ퓌§®\ý‡·Öuoˇ:ñV]D÷ø8km£:nUV¹6¥FÒI&RAŠe ÌeVŠˆãVb¢ùòØ­¥Y”ÍU(£ÙÏÜ[NŠ4ïpnE4ªtĘ.ô˜r”!\ ”¼j5Oy{<*£S!™èÒ Dú7•AV·î<«\Òm†FOŽÊŒ¾9ßsI·‘†a£ŒQèQŸ1ÈæFZ_³³²›½¾§mM i$<‡¦6ss$œÊ>ÒhhÚaãFŸÊTzêdö8F”ÇÕU}“½ts¿½¨Ù l…žŸ2S€[ölRQ±}ÙbG¸§d«éBÈ$~€¤¦‰RâÛ2ÊzÔ>p^>quÊnž{MG”Y³n¥ÀTÎéÝãÞ€ 4y©§R{Ôy^×£žâxH5K³S‡8Aª¶²¶Öl{7í9‰\A©–Wå9bµÒŽ^àólÄV'ºØ¶97tDh(K cß>2ªÈ“m‚ðÔO`õ›w"„¬Þ­>sQëpŒ‚:é$ /)ËÔ”ÉD²ÎÛLàFŽá¡i棒%5_SêFsD¹ºj8xTHÈmÜsë´ È݉x9–^=ÔtŸ{PTé¸ô‹  oJü% š5Û:b*Џè°™©cYKºdjî©Ó!qÐû¡P´‡_Ÿº«Iq~ö´•CÚU=_¶cØ5ûqj,ÃÆT,4Ú¡ÂfB€ƒÕÊ)<ñ‡3U6 ¼õS²æÉfò P-T¹×,ÒG-œÒÓa©Ž¬½8Ð,vð`”k¤ÂLvàëu=« $дf«­:7sÎÃV“:GÁÌÔ6!eæµfÙ^ŸäeK›¦>A³0cñÞX™UOŠƒpåp!•\yv‚6ƒÓ+a¨¡Q–Í’/9Å–­@‰hŸÓã¶–^ªCÎF«ñ®xõ3ÔúöÔȪ¬Ûx‘ÿHyjï½öÈßM¼»øí(äÒöÚãòNèÑI`‘TOñÞ›çUÑ>H¢mÒ–ZT!³” •fK*S £¢—ÂZ:ëmòÊí9®gOü `@»ƒêÝ ´FL$MØ/²P9d$ÖH—§¥t?‹dÁÊRèÕ¯PI3³¡T¿÷R¤š(³Íƒ²Ø­ð)”š]¶O]ÚÐ|uˆ`éý¦2)UÛ{K Mì ‹ï¨X›G#ªÄæŠe¹H•ϼ9 0ìŠëÜB®®¯Ççv<<ø0æºo^kqŸeÍAÃ))èµö V3ͪv7t1”‚Æ{$bp < /ªŽUÊ(QA½:Uñ ¡¿HÞ'ª Çs(Ñ)7œýZƒ´<&’Zðè@L_uWÐ<>'qY·àXÀxÚ’iãT›Sk–H{Ö⵲ݷçA([Ñz3ï粇jQI-:C¼™šÒEš' ²ºnUiHä9^ÖÿW$þ{ÄÍ‹µ–„L&H†D€ÁÖSI»dÒ:Œ¨¼lþI«¼êx®UkÓÈj¤Ö¡lWÊ.<—¬ŽGáz5ÏåÿŽq°‡cé2Q_MtøîçT¥tÊ“q¾‘kl§2Á{j“â®5â´Š<ìy]2Ì˾làÝ&ÚvёܨˆiÖØª-Ò¦ØMé¶\¨‚ 0ÅÁø]iLÔrÊŠ€-)Õ< •w"…¢g›^‡ÌAz#,]ëË©2¥q£ÁDZú®ž¢R”¥Éj±t¸K¥)ób°C¶|܈ì9ÄnÅ’w««fÞO›ÜæeÖàPÉGT§Æ9|íd«“©bÓK“",·ãêmÂ¥ Ž(C…®Ð°ç4ËuŸ"€õøÄ‡%RœwÍš‡fR<€àšwiêªÔ)©q½Wa·¾S¹Š=‡]+‹×ä0¯‰£Ü/ ìÃÖÉx¯Rì½å÷âaä}œÚ%Ê?Õ€:=j˜¼j6h"Šo"ˆ8t:´µæ×ÍÍå…t;5ÞNRÿ0†R¹ý§‡ÐU½m‡`)2Gyyb<Ä(OQwFI„N·¾")­Ô[À,YX$™‰Ô¡“•ú‘.TÞ>TìW³&ë]£<=vGW•Âc1[$Û´Ñþ‚-åÆu¾€1)}¹Å©BuTV§)YAªë§.WÞ‡ÄËâÞºÃðgÁÓPm¯ì(Ž»‡WJ^ÈNTpÈÞ%xPÈRKö‰°ÛÙ¾ÁŒ{¯µCÅ¥f–ãtì %Í@[Û$‡XÞ÷>/`RФtêìÛ'7)zÜN̂Ŕ,Ú"Qëh¢ˆ¹tͬº&¶œÌÊѵeÍ¿¬ÁCe¼m¿»}…;IPV!8€²[ZÔ%5ó1?³|&…ŽëK,PAópœ®%5=›pó1¶+ª) m[j½ú¿¹Rlyņ×óXʲ5åx¦F©fû&¾ÙIQ œ%g%ß•l©æŽUÖðzXBzõL=iNýˆJÓ0XÈÊË–6»mØ(d%*q(å§ô•ú€­î¨’ôVÐHÿx­#ËozE}”%€„iÛ4ÅË’‰Ïbž{$Õ2«„Kåå!µþ¡7˜§² ÓKÊšé4ŒÝ¬~2˜xëã-3ÊÓ^ç÷ÕDUW`UÍ;(CÃrÍå®Z4Øß‰Gþwhßhiê¥!að‡Ø ò”Õó1ýÝܸÝD¢ÞÜ”)ü ªh€™²ƒ,$ì5—à Ì¥·©L6Ë¡”&õZgÄéxÔÕâ&J+,¨[¤Ò 'Íëƒv ûŒüv(žåÚö0RX¶}3“¥²PXŠžv”ƒ'ÓT”JqñÈÔÏžk“ñ­ÈöTW’ôrº]ˇ‹âMÜÙÎ1¼(k" Øš—#‘¤rÞññz`ZI¹iu}ºïíæë1Up&ŽX@¸mF9Å@œpMj8NSËùÜÇ㸱ã jŸšÕê©UÀ­BL'ŽßS*O\/‰äâXíy­>>+,ÚÓ?mÎVæ4#ºÈ?·ÚAŽgÜ[wš°ª°÷+&‡p¨MOc«Uʳ15¬ìkQ±À«&±O‰®X’,µ¥Û抇#ö¹fe¾ìe«¨óm‘·›CÎxÐEÅéU§„p YôY(yØ, ú€¨<5Ô °ÈSvU#72[uÀ»˜}r>Ô¶,©yP(ÚK`?*OtÚ½I秇 ÍR¸« pJ}d6·A™ÄѳHñ=¶Á³ô¿…ãÜѬR$®>¹$Õ(ûCh™¿¤[{?O<.68Õ›í'ŒäÒé–æDkÌè'8ªÛœË½Û‡òk½ €¯ð>ÞCKqÖÃäv\õMõQ­Ú-9ͪZX‘¢IP ´ìˆ“þ*U÷v<„…þ:›FÝ¥{4(Ü)d=§ŠD^ækûì@¹#gDØ…€ Nì{˜AŸ[Û¥]É©òË ~J×°•9ì[°Î×Ü~|ì·°>D`yË).bØ’;Š = PPCb  OLËã¬FoÉ|Uyº}LlA÷ ¹)ú®s—ºZœ«4¥7Õ§¨n›ËYEž8A5-‘¶2n[ ’I˜¤žZ­rô"˲Î<ëÚ…ëen¦¢íáàÝæ§2d&êඬì›ÖæhͶLm»çÙå1%%¢‡Ž§eúGÄ€Hë÷Þ\Ž 8¬!ΤÂ6ÿhu9•†Øsq-A®(Ñøˆñ|Ó%¼µ3?.3ŸFŒÕÏm¯èõpz’’`H_oÃ-C 0`ßGÒ­—í^*C]Ëv¶MÖ繊ÄÅK†8?8&'ÿ*9(¡ÛÉJT'bÙâÌ̳« #•¨{™ ‰LíUÙt¨š Õ®–åU†«äRí }*Œ+x¯Å",],UÕ´?³Œ}TdÌzgæ‚J±x!À÷à\»4¦>+°¾ƒ™” xÎötBÚ:%Þò2‹Ü„+m_ŽIÜ×5/9S ”,YêwЛÍSõZó«ßÕ8ÕšÒûm¾ÓÁIƒSæò@[Í[A¼;pÔx4¬Vû&nOeŽœnÞS¶£I°ÁfÏ˽—&1êNõq]$2¬Û&à­JŠ×»Ù3=·½4ÀÆ•}CÆo}¥çö-á_nštE•£”ü¤¦¶jNÊMý’¨M­\Ÿ—ð~±)Üš-k“« w¯zÇDàÕµN0Ú:>'éâŠÜ…„¦)Ð.r„(”“W¸UõâÛSzU\ä™Û¿à=À*hÜp¨Ã¡ ±‹}ÿ[bw‰fCgÆCõñSþÅP62ˆŒ¢æ™S•SËjµ#Ù´ÊæÞ’ÿi´z>¬ïµ}«"®·$Ù¦N?K‚¸uÙÖ q{cø&y`<ÄK'Ý6[„ŠÌ%5nwúV!’Lq²öd‰°ö}‰œìlYc¤7Þª”Gò!ÁåŒÎykÌ}ŸVU”…;Æùëæe-¼ÇF Fáò]J„uÝ}U@{( 2[MUª\ª; ÛE„IY&µ²À¢oõo“EùÊTK)úµì·³l–5kP}#±eÑeÉLö%P»–±õæ?u¨L"AÇIO`Î"ÙØ3ÕÛÔï&õ«¤B^T˜AuÊK}¶ÃÉ…¹‡]T *‰5í))ùFÛÆWƒÐè„ùö´2ª™E™ÖœB8É ]§‡÷)ƒ]yD6ûm71V×zæµþSÔ÷I18;­7b¬ãò¶œÛWjµ¨Ë§ýçÖúæß]@ ŠÍÆ3ïFøQ•Ñf†»í`èZª¬KVéË*·¿É­' µc$%óÇÇ$/U¹2ˆ~°¦Ö{ •ºY{ìHÊÎaï_;>›HÓó¨i¸ªP}Îû݃tº¿ñ uß8€L½ø°O[Š}ŸìŽx¥Ôí¶H¥`Š9È‘ì*CèùÐP+³©_)L q8÷#Nð€}’ äá±`œ~X‰†¼Wã#“«ëiªvù8„M<ÛÔü–%áð,³Ò1íCè'EãþcwÄ“Û;zÒ5<ײ±Wrfììˬ›âDyÈÕQpªç½„ÔТ<ŒÍn$R>»KõѰ%*ª`*qEtÞZ é-Š¡=sÏgðDLme_Hú3§7ÒhñÌk)Y!ÿ®)þô(_â¶žÏ\ñD?¬­Q“VçP¼‡ny:k8]Aw’F5îÏsí;«G µ ˆ±xôPŽsϱ/E+«cgN?²+íXRž†–”ã "óD¬d®?=¦©™$ÐçÎÙîºÜéŒWeXH:®Ø‘ž¢‘ÐÁ:ùªq±“¦à$Ï„£Îåé …ekKÚE«ñ )½¾mÚUššÜqVÅ’œç!W“Wå€]k*mé«.`)ªdȳVÊánÓüÙZ(ÃGp—6‰=¯íD‘àŒ¯1Jm!„œ[¢¯î£$ûÕçÁrìŽßö åVª«Rïrªk\ônCI{ÕIQ: ƒäÉ +ð¸\` Ým˦ZFiš=žÒ59¹Ïþ‰3lZR(£Î…¯Ò1ÇíÎëÉÓ®Âúž\cÙ.ššlžÎÝsSÍ¢¢>gÞÌGÑbaNr /ûeIÍ’C¬Ùˆ+`8'}o%ýÖÊR•êôPXWÏeÝ Ô"‘äviÅLŒ#j_P’:àÜê­rçóê?m¬´ý%{JwDpP–L‹“!;õô¼_1Âü:pÈÓPÞŠ_ÈóŒ­gPcó¸¶z!èIÙêÇÓ'n²¹õR òVÇef‹yO™„´!é}í7‹ÅÁùÔšíÕAOù2‚uW|:U<Äè[pâÍ9ÔÛùöÛÃ~«TÖÇót]|› “]ö©ÑKÅCÀ=ºî•dl›Q«¡Ö¾ÙÚ°Qžß;Î(½ÎÓ0êÂ*::@ÍÉš´ÖHúnnç¶ ;ߺžÌâ¶Ø®[>Ø^ã³y”í”’ß]Q˜1“g‡cKùô»{4¡€ßI)þF56•Röð‡|ÄÓ(‡Þâ vD§Ç•1ϲ£Á™ŠZ Ï¢ŠG38¯tØih´—"R]åp7¨^.IlÈ~béè^C“Ê= ¿z §sWì{©ù¨1íýN[úÓ1¾¶i=bé …;Ó¿ÕðØÙÔDUsÐH &S<”`¬; XXªWbz^[ÐSKO¡¤„½÷$Úî³+Þø³_E!ÀìÐà}ßîÆ¹ÈíT:@ÉÉF$H=²Á¹vTµ¿7׉bµr`2ãH;ÆÕé‰(¨Re\ß>/F67Áù 0·´Þ¦Õe÷\°Ë˜ŽªÎi‚|5vŠ:rÍ{µÞÓ¦ŽÐ,ÉJn]=Ùs¼NÞ ÛsçÛã}êÓ§G!i-d¡®Ð…-»éÙëí¼yR“§è;“¥‰'½SRæS"t³l޹ÈZ¢†Ó¥‘ç9A[ÆgàWwŒû±º 1T‡8j3Ÿ7‘—M”ÛŒòYÕá-½üÁ VUrzà>2%ùÔ=è¶}« Æ©ȤK$x¦Û¡'ͬì>ÆÂk¨žx”H·«”À-gJîÌ-ðw€!™àé ¸§Y39ÅMÚVݳ¥9կߺ ’ø;‡úzºJöÔ9#½AtLe¸iEs¹®Ö½&÷ҾknÕ4iй‘MKN¦Œé:co_ª?ŠÙŠNÍ6 “÷ʃvpŽÇ˜‹ÑS¤ã*:V4çuµ›/9†w¡¯Ì`KP°zb—ät*LŠ­C¥²‚º:Â,RëÕxEY9IO¸Ã­Ok#ßkkØ'•LJM@€·b#‘(´Ž¤Ò8?·º,;yä­ußÔõ§JгÒC2•¤åË#8½ T[&`”ƒoò©Óìª °©hgš†-‰•âômc ñÌ.ÕeAC Ý¢W“–>÷À‚º°Kã40¿y•`®O†ÇÝ!èDêÖ%†ÆC›ƒ,oqã̬skºû_²Ç/¤˜¥|ç# á“+”ç'׬DøNJ!¹çÍR|ø1àK­bKÒ’H¨š§Ç!ÿí©ÎkäÃãö¹¤àº¥÷ËÔf^Æ„#8zf:½e‹ÁCw–@º€U]ÁçP©Œ5@¨• Ý#ED®åð—~—K'}ÁuŽ—•9<.HÂ}ûL$£§À Ïi,©{]-ÅŸëðtËÃy‡p—tiº™Ü6x¶æÐMšðš2Ú7§µýÞ³.^ ÄYu·:r8J¬¬CTíqÊÕ»¥9¥ <ð¡GmüiÙ´«ÿÖÉ;à¹z [tR·´»½å+,ô—ʪw4¡o{ºÇŸ;±°lå }|yoKC™w;?ØCîÔr ˪ZåÑp¯ƒ5¡hªsóò±´ÖV‡zÿ"¤ê¨û§kS ¯j)¬•MPÕÛÜÝR\ßP7ÿ:Ö•8»³Ú ÆW­†ðÀnÑØëÛJNdê7¾Ôx"z‰¢SeIà&òI¤26¬ƒMÄ`}_Ç+•„2™Gt/m°¢cÍ 5½GïEnT_š7„ÔWNÕ¤ß+_=ž2Uýž‰lD —„CZòXm¶C£á&µó€×Ö‰ð8öÎZ/€Ý­¤?zŠlll¾¼YR'E—sýà?€á~7D|âÍÃmŽjŠ#=Y´_¶Æ¯v’à/»Ø•ä:›²j‡E¶0xQ£{ Dà‘ú¥yMïÛÍ3ÔxI±õ|‚’’°SE•W %Õ`§ò+)ŠÎûŸÀS"U‘R±ò;Š! —ž|¬˜vx8Þ]äxzØäˆâ«LŸì/jÐ5Ü­9¹Ò¿)èc¡ªeQ÷QWÔ Ξ:pÒ·ÿ°eN¥?Ï$ŽTÿoriëÎÎèPê=Ž·ƒÒíSe]ojO[=RI=ë,jx‰ã«’êóøýw*‹i#ª¤ìË]RëêÈPö¹5eÇ£­žRxgžÔìÔ¸-§.:¼…êP0©zò·_ÅR=…‰Þd›Gå ‹S^<‰B”€»N½pÐæƒ8d2Ü;c~Ôš¬³9¥ÃÑ nê9¯ÎÒõ†¤§û”-ì®RKŽm†îÈA—‘÷MQ5·à•C"W\ä */LÆ éÚ¹wÊË-à0d­œ2Pe>jˆfã@“ ½Y˜ÄˆY‚0¿l8™úTóG¿¶k‘c6NŠJéŽjGxåjÜÉSÀ³‘ƒ§Gu¬õ³Ð0ØŽ¹tè‘T#ˆžŽ%HNMÊtOL>ßà\ð uô™} b뼿ïñnE%J£KÁÜíÙ»G1Åú(K×ÑB`tå¶í[ŪªM²êêãÆï©²ížùTàZnoRiнʪh›Í½E†(|€¿gìé÷1œ«ÍãÝV邯ŽnÙØ–)ÄÆRôŽè¤+ƒB³Þ²zDÒª†tj8îy²<  ìY7]66aÒ]H-o‡b\Åö}l‡ÒtN7uï"%z žj@:×¶”t?lvI´ÚÞ4M2_Ï<¯`ºT½Ž²šÌÄ-Œ‡ÇÒjÖv*¨ ¨SÖUå°Å•”Ç‘‰E(•€¥‰´ÍRÒ¯í ܪ5PÂå£r¬î¬^ _6È O&ÍÔZñÅ -¥¦3žìrrÄé 7FáÊÓqÔú´ \´*e]7Å>SѺmŠ£–dŠL)ŠíY•¬x a•í‹ä%£;\óÕÛv…g^laÉÒM˜•Gl;™ecƒ $«ôêZ ]îÄÓyq‹gU”}ýýßýúëïÿíñwßþáÇï¾ÿü¾ùËãþh~û‹õÝ·?~⿎ÏõÍ·~ñ§Ÿž?ÿã?úßýÅ¿úãþ‹ïþÍg¿ýÇ矄¿ÿ§O ¥? ù£Ÿ}óã¯>ù•ÿáó÷?|óÝ·ú“Ÿx¾ÿüõ|ïýúG~ðÏ¿ûöÓ?ýí¯>×§³üéYÿ4„O1„ö÷?øÝ÷úéýú¯¿ùŧ?ÿ“Oÿô»o?ÿpüÑóÝo~÷ý7õK/íïÿë§ôóü‰pVÿÉþõOýן¿ÿæç_ûéÏ¿þñ—ŸÍ_üù׿úô¯¾ûù7ŸüÝ?øˆô¿ÿå?þæO¿úêoþæoþäë_ÿð'ß}ÿWÿ‡üO>ýÍ7?þòÓ¿üüÃçïÿúó/>íÇòÏ¿þõçßßÚŸôég¿üæ‡øWßýåóõ÷Ÿ?ñ_}óóÏßþÀ¯üöÛ_|þþýÓ¿ú³öé_üæó·?üÏ>~àŸ|úýÃùtþÉù‡ûýoûAß|»ùëŸÿü»_ÿæëo÷Í·õé/¿ùÕçOÿbý³?ùñoü'Ÿ¾þöþà׿úá;~ÿë¿þú›_}ýoø}é_Zýÿôékîð÷÷÷ÃÏ¿ÿæ7?þð'?|ó+ïñ+?æã?ßýúן¿ýñ‡Ãë{¿ùþóÏyî¿ûê÷/÷ß~ûÝß|ûwÿÕ_~óí/þÒÛøÅoóÕ¿þö›÷ÛÏöþþgøÖñå{õùÇO²2¨=?}þwŸ>ÿíÏù•àg¿ûÍçý§ßæþÃßýæ»ß|úKnÃeø™ÿ8þÿúó§¿ÿíçÿðw?ý‡øÕqžŸ~ñÍÏüôo\¬Ç—OçÛŸÿòãkÞÿ÷ßüí§ÿ[`ùŸ‚ÿû‡ÿöÿ`…ýâ»oõ»/?¾_ñßßë¾;Æwûéïþ8_Ÿþ8æóÓ ØüTsøôþáüÅ×ßüþ—ßý³oÿò»Oíã:y@­ýû—ÿ~¿3þñ§øYÿü;–ìçOÿèË ÿ¿‡~Îÿ;ÿ³×ùþ•ÿ¹åí§ü/®ðÿøŠÖoõ«ýïÿèãþ'ÿþõ¯¿ùÕï~ÿ,ÙßþÈòÿóïØßþÇ?úþü±gÇw¿úÅüoöã×l‚þí_ýêñ›Ö7ûùñÍ?ÿåÇ:ùøþ¿v‡ýê›o?ÿÅw?|cLùôÇgÿÑ¿±­~þo‰?°÷?}f×üÃ?9¿ýùw¿p{Å\>}ýý÷_ÿ˜ó§¿;Ù‡¿øü·{ù~úêO¾ýîG~å7÷>ýåwß¾QVÊWùßÛ_²6¾úw¿ýŽ»ß7ù÷ßNéÓWìä_ýå;ùÓW¿üÝo~I`øÃ·Ê§¯~Ã/~÷‹/ߺ?}õï?ÿÝ—oðùÂ?|Ím}õãß|ùwÈW?þòûÏ?ù /ð»ß~ÿå—Wü×?ù .î¶É¾æÒ~øü×?¹2žÌWŸÿÁ åúé«o¿ùÉ…~©ùŠ__¾â‡Ÿ/_qOï—¯¸¡ù‡¯*·³¾|ÅÍüw_¾âFþû/_qöå+þÞ?ûòïÏ¿|Åßûç_¾âïý‹?|uó÷þâËWü…ùå+þ¿úòég_¾ânÿõ—¯øëÿþjüõ/ï¹ñ×ÿÍ—¯øë?ÿÃW®×¯~ñ“/¹ßÏ?ùÒ7÷“/¹ž¿úÉ—\Ð/ò%WôÍO¾ä’þŸ?ù’kú·?ù’‹úÕO¾äª~ýåË“«úö'_rUßýäK®ê7?ù’Ëøþ'_ºv~ò%—ñãO¾ä2~û“/¹Œ¿þÉ—\Æß|ù2rû“/¹ŒßýäK.ãßï/ÿÁvþùo¿ÿžl¶.{ýï¿Þ©óóç¿ýüóƒú¿”Uìb$'XTñY÷ؾ2µÆ×–ŽÂÇQ›¢Ú¬X^Šk¯üºŠe½¼ÑøªWP’'øí‰gxGÊñ–”þvÛuL'´©2îê8¥˜=ºúHÌlgÖž,{ð§ZëYì´«s’ÎáIä¤'ÚSÔÆè‘xrÔ'—[±ëK1 ª¨ò¥dæÝ& ”Þ—Ú­"M·ãQÛóÜÊæ|S …f4ê2qï7«h÷8 øª~–Ø^JûÛ¹­ôwrP—¢ü>ÂÒ“J»SSIŠ\E;‚©/¥ð{QËב»sÿ÷\Íáš÷íJPP³vO£OMÓ‹7\kË­·ËÎG…êñݶWmIY#êeçh¦œX9õGxÖUß%Mþæ5ØÊ·ºm²}RÚÚjPÙ]õ$FµG%+F>Ët”ëQ3jÒÜÛöSW‰'?SÓê•»‹3òÉêëêÁt¿>§KIÆáÖѰî[sü‹ë‹ŠŸÔ¼ë´Ñ9ƒ­ËS¦é¬ã}S$S’OŠ×Wšß¡…ÒS¤ñWtAY½_µ¨to'à¥<ÕÜS0eV ª²KÃNQOàƒç þ.¢”¶'ºÂ¥0e® µQÈúE‘BzËÕ‡–†åíÕ|hÕ™uí_½·§òòᩇ04áÃùÆÒ–|—Åj¯+L™í§œ÷Á£I:÷i¼ï¥n Ô¥žñŒ[!Jõ;œø­yëwOL$¢pûópÊþÂjµMžov7R¹Ÿ¥·>•‡×y¶B9)µ';Í®‘œ[5ÌÎ!»÷v(¦µmfvªb¬ÿF’TÍåÍçNÏeëâ…Z~{ôÍå©×XǺ%]žŽM*d ¯Âùæ/gmxðöФÿö=‹T%ÖT<:lüåGãeÊï´^¶|j¼×}6bŒ¶Yapí%Û{.M$ÏãÒ֪ћ‘Ç\îí+ËòŒ”ü1NÈï¬i+(I®Õ?©Èï}Ï•õ;TMþ} 'Þ¦X±RNaxî­©­£51GÍ꫺´IûÒÛ O:´Þuh|û®1ÎgH÷¾»ÝU¶¼®¨ !kgO˜ë…-©°`Tì=¬ü²×5ß=ž¥I¥Žî=õtO[›:¯ËÑáλúÝãÉSI„«>wóð!²kõœ|¼êµ<çËæuB˜‡DLàCßyÿiÛ e©‘Šo²$OgÆÐÒ@Mmm½Ù_g¿ƒ]˜vo;?ƒôÈÒ}îÆÓäuÆ­TÉK×Þx…  ›ýI"{ÑÜ8ydp­x=Π(Å9W l ÉQÍ×—%(¯ ´0ý¤WÏÇ>2!'.6K²Å¢ýÂ36¿ÿÊ‘µÌ6¹NP_9rÕn3qS±û˜]1ÐîÆ#,Ê·!ÿ÷̪ ðîuºr¾—Òq—¼Æ©,c—.cãí;ˆo|êó®°®R'A× vÞ¯'¬½†B×ÒhRžB©Unð{nÕcºÝnï—7R}dÓe‡ZH< y#vZݪfI %'xмž§y®x§ó½×©Æã¥Cˆmû~N]ë<á&Ô?¬;'×ÚžmïŒ<éòr @/¶·N…ÙŸ'‡íˆÞ÷MÞ-‹Lv¬kJ‚jëÔy1 å*J¥”ÓL¹¼#ë£^¥K/{< R—oè(®Y“ltÒ_9»™9«þiâÑ´¾ª7zfm¾¶m#?m ®hžp¦ÃŽß¶à‰MÚRPäøÖµûÖN ×;l…V¥SD]>×xHétŒZàÁõ7hfù®«éˆSoEIuÒ5ñ1³Û²î²&¾2íEÊæ:)•u1 XDK6Þé$nJ—àݱíÕù«{Š:&‹§œJ`Æ"õIº®"˜ezxDP6>ëÖsGOå ò„7ÙÝa‘C"˜:´¤åæ®Z¶ø1nîÞž °2÷”ó—ÕUႺ5.·éÑã xÖE†,F€.Q¡Â›¤+5ð7žËÿ—E„q ëÇJ,þOÓGq˜îQÆR©9›­.Y{÷èã5•œåe6g Ô€PŠ.èf× óÚÞ°ž4µ±›rYèõ–G† Iö:¸:”]§ÒQ@#¦éñE|UlëlƈӑÎqênz® œa¸{ž£é®÷LåŠd· SÌšsÙçÅ^$ àá|Êã!³"†Ôíü:qt82yɘ*…蹫!-OìÚ“{›×Ç.é†MõŒ´|aëöK^üqj®ÇZÍvÏyX£%ß½å®N¬6“ðLB…ÉL~©O<:‚íHB”•ú“"0É.§³½š¦ EÊÂö]ÑÓSÔÁ^Êf·vDr£`1v›ÔîéZ×gµ«{­7Ï]]Ï­ã’áŠó¥ÜŽŽW·g1îO~SàíV|ÑcE}ã·,­Ó<T|™Nì[7`^åþm^ZØ<½6¢LärJw|vq7©wlÞ¦Öƒ$ mŒˆ³%ë|Ê+o½ËGÇlV‘[¬u@Éå*{~;2³³¢÷:ø½&¡>âñºE5—Ô¹(¶¬ïK}°ý¨ÖÇô'aDn÷‡‘eÝÞ'¿Qß@=P·ý¬ È_F§àL)LÊ?·ð#Èoç#ùµë¥M² ¶CÑÚŒ8ÿx(僈ïs9²ìùÔ­FVÕ ]fMØá8ߢ¸Sì¼QÕ—î}LWÕ}ßís… ´Ñ=TÖüÙCÏäß:Ž\¯íX¤Š™F´úÎ%'’¦N.¡Uí S&[ãiÍù"%–Ôà˜Õ.ÂrT严5KV®ÈE>wZÅ \ª<>O ¢ÙxºKÈ÷AésÜóTgKÔ"@wîBßzº%Y¡‰r£JûŠáN­oIçqëZ"$Yäó[½7E›ÅÆÀÄáØ³%5¢~pH\d}aö¡znâÖ5³l±øIŠ÷ž€.ž:yüêP‚•¼¶AeÑšöÑÆ=…Ì3 pP8D³Wmâ;­z3ޣзn…ž.%hÔ[ù&ûùÍ*¢õçPA’þP/hO>¥yVòãuk2ˆ@®àÍdyU ¿³¤%ž$äG÷²ä`eSCÁ—ûÃ6{¾Ýªm*­ÝjÒJþU„“ÌDÉgšNØ_ÎYîœ&Þ‰öW5 >îrêÏA„~ÕØxÜõ¦l5¥xÄ,æ„7H4oŠåÄoh#‘mnŸ¸‘6uˆx¦NÄŒê'rD¸„ô¾¢óñ—8Òþê×ÌT¼ÔªÓ6‘jîb”çQU÷"Ú Ð; x»ÕÅ|-yðÒö³Ï96¥ÛJR®˜ÈªWŽ¥±Ì³ÖÇKÞt irdxyˆÔ·–Óüj»Èœv¢‚¾eL‡‚È äÊ[·}ü~ɦŽZ>Ry¥S°®vÀe7A1DDïzLST.í#GXÇ&ÿòszðÊaŽ¿Êl y@0–‡#Þ6RX dãÄtÔÝÃä1,¸űŸbY¢2?ù£7/IºßR½êH"u–°ðU3ŸA]wÜÎ_ŽF½Šê—À»—r¬­Åjàn‡Ä"SMW{cÐ〕ǡ#|‘«®ç){Âïí¸¦»oæñòRï“ýD •¢v`EŒ©fÇ–Fª p!ÒY¶ØD ½zÿÆæÜRedPÏö£•˜O.æ–¸²ÚVsjÒŸY]_.*dÊÎiÝñ`ži$l:›ÊíI ¤#õF‡ú@÷¥ÆŸ3J 6¸½CeI:€†¹m2yQ{ÄQ­¨–“Øïª.ðÂÂ\•zP_Bv|ÊáØU/ÅÑ–‡=<@u &ÆÒè€àä,ÏÔ>Ú«­€’š¯\0#8TGÐT½(mùÕŒ•Íw¢SÀcCVðÓyRºÝ,I> «Lwn‡µµ œ*¡zTÿ`)î³õVx3f°²’û€ l]À0«8ާð‹\7BŸFŽx‰©€€©5µØì†Då(d«S$Ûø”…lß»“S\A`¡¤yJ  Ù+"Ì•YWÂöëžÇr̽tç“ÁÄ’·’æ‘)Ö¤^Ù:^*n/·™½•[`ׇ²Ïž-C9ïö”{©Ý@Þê_Z…Û¤$‚ 4%8‹t6-°†âÙŠ§MëžJù£Ê2€v,Úd—ãÞ¶†Ú=Ãv»gˆ˜×ÁzÐdò1«÷úºîfÌëî7{l5©Ò°{çùƨ½a¢¥ŠjYGë’¨ÒYŸ $q‘í«ä©â«æ ©Àk¢,åü幉Šã",ÇÖ¦&V/[GÉP¶*ëéå`hHοþI”pÊv6„OçÝ‹þ)Fåó¸·Yq3°tÔ¡8r¬u2Z`öË'ÿ’\©O«.´–¯.QåC°CÖƒz•U ‚WCÍO²ùKx¥ÉÓuXm©1©œpVãš TlÝ5*»Lv”;¿ÝªŠ'þÉ6á«fúö…˜†yö¨vŽN~çK¢0 aeD¸òu3tÎ1G9w•¨ü¤¥»\q¨¼ºï=-н66…F”ÌP,t/5 Ò5«ÑÖH†Å?Ô¬\(ÙÆ)- \Ђ€g‘TeÓH9JU§“a /€ÖÙú½¿j› F—ìÑa\ ²¯‡ÆCÚï"}(T`Z)ñçk¨ÿä¼·‹„q*(z§z©÷Ah &¨2IŸO6òRGÝÃûN%8‘Žö¶-?aZçƒÉÙRQ³N’£h:s^Q%EEGûóªªVfu¶Ô¥Ø"¨ÓðJ¹^‰’%É鋚"Å>º ÙsóÚÅ\‡ò«è·$WÇ=P·Á ÐRˆž=zQfªlÁ²•ºòS¸CsðCõŽW›D6¹%-hÄÞñ”記*©ädƒŽ]8µ$g$‚*9³(ðAP¥ÔÜŒQÇ£AW‘:At`%SNã(ë‘'M²ÍÁîüL¦6@Ù&¬Ñ\Á]¡À’UêrÜU1I;JìjÇY³Î{Phœzcè©´å³IÇ„ÒsìÙ á·ÚkªE…Úœõz5Z\ì•SËqÂõh<¥¬‹G2+ì{Sª¸{ªÁ9‹3ÍIµÝù†Lp§ÇA¯sÙÂsèü5œYq,I ÅyjôI©µ¤`>xZ@%ÕN-PÕÙÁÅ G;åv©ý¹† ìzDG\Ò^5`e•j•)a*[@–¿·üÿ%yþhÀ¥b·³ÉºW;2í1{bÅÖʃkwDÁ‰)M¼€}jMõ1ø:½?B˜*è`¾ —4vU(¥Âë.€£•6O/ujÏ7”ÂUû«à 0$5ÆNòÁéªô±{í“Û?È\í¥ ‰Å!ˆW™}ŸÈ`É^IQ½\9½µiæYn½Ë+)ÉMå (bklšN‹üñdÁˆ|9ÈHZ¼–ùm{^ÇØxrSK<þòµ»*æ]–·éA"L•Àû 0BãiàW3`Q„Þvf<ÕQø%œS@±c}`ªC¯Sçw—rtÏGˆ¥¼g!Òö½?5­ä4'²ž[›>E±ÙÅiž`©÷Í'²%¸M×µW(®-™Çü¨säê³d–)©v-ÿÓÔ‡J8ç)*8£©2ïÙ‚h‚ÚCm=›Ù‘X;/¡`nõ>ÆH½54YªRmÇX`õEÖ£~ =J4q¿x90é(áPdô°©êyG%l¯»•e!¨éí*w;ª HUÅ 1UÁ¶d@ÒïÍ-€&3xF1ɘÄ:UÛð¬šKÅÝž¯dÅÈnC(&‰ƒý´ø³çÚ®YêûN£‘V46ÞÜÝgi¤úê~ÂsëÍtð)—Ú?ò2zÞê@Ïùû“Åù`òCï ºÚËJ9Ê6Ö%ùP÷BŸùʶíQ Š…*hlHz÷LÇÔ“ÖhD˜¤É*Ñ—2íõÜY8~š ¬)¨~þîGè8»â} ý²¦Ò]s×K6Ïá¼È«®Éz©˜^Kïi×À3•› Žœ$Ê?–÷Ç$˜]RVx¥õtTչϮ9q±_LÏæw>‡=RÔ®ÛB•U®½^¸¤XM4Àð1ß”òXêY)Û¦¬™M=•öXý³å¤ÉšM$«ê1Øi „íð`XÇCàÊz_Ú_vŸÚKÜîTÂú!é̔ԅÒe¤)åÊ#âV’‡àÒs„óN·MˆçºKÙ’‹¤äèOÌSs/‡ûyÂ$n ³¤ßxèãÂZ  e9Q²Èûà ®›Ð§7˜aépUÚ­­U[ä †¬1geYg[Á“-"Þ©ø,pjJ„ò¨þe¦{Ïoo½a }ENØaž=+•“ô&ë¹²ê­Lü3Y:ÛÑ])¤çÑW7ò±B@+ÞÇÖó~¯²M5‹¦´O´£î8k­4Êȧ.9k¨²Võ´SÍé¸\_ýÞW‰ JvV3OµPn*ÉHuÃk,©¦•™p¯¥äÉûHAPÓ´d¾«›¨Á¦ÁUŒ²ѧ!ùÖ ]ÕBð±V»ÎNݨ;ýë¤å­P*»NÔ"E)ORueR—~z¶«Cxˆàòá¸÷ÒL›,jzìèP»:wÔ=jð»#²»öë R¥Òó øR/_ù)$Â]9ÕckªÚùÕÿͺK§äø¼ßKöRéY"Øâ±/í6CFB¥Ã@ú¼´òrˆbHýŒc²‰ N)CvÁûè\FÙyÖDªr81©÷u¯Ób¤ Þ{=T,úè^*0^žÑž[’˜º<è~‹G±ŠX›ÿ'eÉökᡞ@*`-»ñ™ítÑÊuËÁ|xðC¦zÁš6n‘@5îél8Wn[.o8¦ÆØAOd‘–P{´ zjT0æPtì±jÊj)ƒK5™ØNÅ~ÅAÖšY÷­ÌµZ¹”U˜BxÂÍ#S!L¾ô¾·ßü‘ž’'4V‡J”vvΰ+¡UäÇPRR5Dm‡šÇœQ‹®¸Õx{’>àhµV4"i[{«{A U÷2gÒ”§Ïyn&š* Qƒ;r™GR*À$B¦š<Ä…C v·UIyÂè >h:Xˆy»,M€¦tIÒ‡…ñ&P”Ð3…ë>&EBKÒnäáUR(™øæÁ+“ûÛqª6ìÙµÍÏ) Ì’²o¡c ›ìûÕ¨[°fŠ~<[Q .=Ëyd ñiw»Ž*l«<Âië0ËÍ:¨©¶$Ñʇ’·ò¸Z×:tWÙQƒ’EÒ”Kqv+1ö¤2 œž5 ã4ìõ\jV7%'IÝO ¦+Eû)°¦ê ¶íörƒ8æölâaÜGgLjP§öÐÁþeyf¾a›gyÚy> •\Û˜Ôsˆþ8ŠûlS¤ƒ%î~´&p)î³¥<×CÁBäE»œBöI¾ä“È6Ñn'h£}wü²ƒ¾­_ìE¿jðç$³ì±÷Óì>½ƒl]¾D¸çì¶Èɀϑ=£t"ï´'¨IYg\ÀÊ n¤_R+I %œöS dQf€ìÃÁšËC×Wå´\°„OÝîy‰àBö£óóÜãZ]z'ÚXQ–”t(xºARº¶ö¾³õ¤cv¨"É,ÒnÿêÙGQKÃYuç]CÐ'ÌÜ·*¯Ìi}®ÿÖ÷ùñÐ…µ‰«#ìmoëªIo£‘À_`•úAÍPŸÂf¦D ºziŠ—O‰¹òе` Ÿ t×™xÉiÉXçîlïm‚3qS‚±Æ~•€$Ö>œ'yÚæ¾<¥Äd¶O÷Dq©ÂfòYU.‚®†*¤çà‰év>JÛÉn×¶´ÿž#uRr‚PIrý /'GW+÷roI+ëS‘éµéÙ÷4Ô#H-mp»Ù¦8ì]í*0óIAW~œhAˆP/ÅC±m¢îd,ÈIÙr[¬í©¹FöYËñ™=¤y7-ÖAx2MÀ’9_k+Rk%B °gÇé}t×—¨.bѲX‚_Œ(?sŽ[ "6Ù”;-Ú_Ðëó#±hµ]×™¢ïU™5Œò¶¹‹©*Iă—¤vÓ¥ZK«ú ë…¡2¿ ƒÀ6Ŷ…¹hµa3ÿ¹-ýt> 3JÔ•¸ú(þ¤Hª¦ÒÃRK÷éG~bPñ/*öœú£< ÿqM)š\¾"‘:hIå¤j+„ÊWÇŒ>@^‹¸¼º3á]kuÍ>BÔ *™€U_ÔDJ†3Øü· CE,×ð’–öó–³Nb}ä0I%Õ°w$N5}µ§R%lF2r›ÔΛGx\$Eë7'Õ¯™•(¥òR0ÖÉæÛ±a±7 H|ežÄ™©XJ[χ5Á#ËN¹_ÅU…æ–xg#G™f "]ç+ö±7ØV´×Cîp =â èŸMMLyƒ¾ÍªöœH=yœ”Ò”8ìØºÝü€íÖ–$2eÖM]3+\§ò‘¬àØtfOI¿èâ´„ K×x·rm¯ÞDE6Ѽ“*•"èMYôønÕ’jzÄŸi;‚‘A—] ÃHy`p´©QGæyTz%ÓPo•Еžñâ•lYGíà  í‡}<ž ‘µöòÊž%IÂ~Yöœ—«QY–U©UG¯Ñû=€ÚAè³¹/kCüWKŒK}böêgNÞ®âüSŽMòl>)šìƒs_õbJõ©ýÂèÔ˜¬cju¨†|ù€;ýž F §.55ÓðÀ›_;”ÈRáÿÎ$6RWÔÐÔ}j“MŠ&¹E$uœÚ)Ùk>ÜUD>¯=9Ïk˜Š£H”.¼w‚Š_"°‹¢ãî Q2Ciæ\RÒ?ŠÚ•âŒø“ÄoÝþ¢âïc_|°ÛúWÞú*ñFì"k¨ä¹ABr´ÂxÜ‚lÛ%…Ǧ¨9äè6AÕ3ѧªM¼7X7k ?¥3k8Ͱ”O“‚žúÌŽxhµ«h-©FA€JÎÔ°¬åyûb ëlf·ÐSF":qš•Ul*cŽ DÚãõu‡œì‘t®/;¢Q ÿ‘4väyhªåðT[lŸª-Œ[E@íÃϲ +)ƲHÈ#"öm‡yGî­ùb—¡:aEÐ¥ü×ÏÀ>k~Ux®SÖ½³[C?ÕÛžYÜ9z›QÝÎSayTP/-4Ó-«KX®î<’OÒ/‰‚Ǿá)=ÃVÕIì–Ï]š½4Å©µ…ÛN¥,‚ð$ˆ]Z`G¨:)š*Aµ¢S‘V58<ßmá=¸Aå†OY [Í—RAª’ þR^‡˜Ç¥è欕Þ>‹Ø$2_‹íÐ4¢ “kKD4 ;•žo°ûÖ«•Ë­ªÝƒ•©µð&{2¨4Э…:¥Ã°2͇dŨ7'Û©›•Ì{=æ\”΋*·Øx~mq?ÏÀ¸v92DKHÚ61ÃS¯0?äc䌾•soÛ8PHx^{cº=T'R°IלwšõXTýD¬k Ïšš6¡l@Jµ½â¬SÒòH’iT‘šMËúóLvúN‘EEäØïS=ÐtQ¼ydõòa¥=úèaPð_ÝνêY]³Ø6yíáó̤C¶ÇMšG/ST°e¨v õmê-óxØy›FPyE˜Á2Çíè‡ÊÙJ˜oe´ 3 ƒ ϧýº›œrXãHXÚƒpj=õˆsv‘ ¨Ôº«:˜% B]e;dÛ’öæ@[š3K\“ÙAx<άaZØZ!‚ƒÀÖôÌÒR0–Ää¹F WÕÏ©D‰¯T¿Y‰Ñ0 îq2<•¾-:mQŸ9V¸Ô1âúÀÚê;kYæ±e³‡B°¸=­Tz‘ u¹|ØA#}ne{Öú†E¹‡vh¯úU4î œV>Œ{wî©´u’>·AYí6iг¡¶®Ønªä±ö•c½u{—˜÷šª(sù¤ä­u,Ó`D¸+çóq,ÿºïˆd¯ÆKG,J¶RS+éE!xÜg>ì¬è¬tÞäÒ¢uïÿvÎe3ý4à zõnéhŸrÍ>ðÔÎD–ÛEi`[S?'Ê4î…%ªA׸ÂNÙ˜øá$}ìtžE}ÅhÑœùÓ¥+œ]œ¥}),s³_z÷ø•íL34';Ì<“æïñ’!kÙÍKÏIðÆ Ig”é€UÕÜî-ø¦NsÔ0<³œ{p>mKÖíÆÁ{lâ@µ5àž*Þ¬±¾×ìeèw9ÎÌkÛÀž(si‚gÇaW»ÑrC/å”.“àÒ”†T ¼²ÇŸÖí¼óˆáãnd~‡ú&:Néd@Ò(˜„ ˆq:ÅçÙ®©”¦.™@i¢ñÁ*€Z¤ŽöDHpÂêzgÛÓ‘ïMõ÷ˆ÷`Eˆ©’öcL÷ÁÆît¨ú”Æ#1ùÜÞÙ%Åkmêö4ºÃ2Ü.xK>Ò¶ôߥƒ™¸5ÙM*švMðÄԟ앲 ¬1¨ Q¥î.SèyÊ ¿k:l³Y64«-õ@3·À/¨;^´µr6³QS-l(«  ”n4^›a?6ßàôÌQÁ²Í/Íóy2€ƒíQÊìL<ùp™iwçp†ê¹AV` %éKƒåFýí¤ ïmûñ£Åƒ1›â{ضíÖÙànçº "šG{¢¦¬¬ I×­†xxb×5 y$‘ÙCJňWšì¶ EŸ•ŠdgvðášN9€£X„”N¶ÝÀÎÄy«¤8È€ê¶[8ÑEPoUêàáûÈÖÉÀà+÷ÖaÇØ9àà°à ¼ŽÒèM*'=³’£Ú©l˜ »;˜éZl欺á¯!ûÞK¼Þ¼B½!Bó:̃hÄ>÷Mðð,V¿6Ó›\l¼@}±’ʾ¶rÉǯ/69kè³äÚ²ØïAδ6¥íºB#9uRóÛ3ÿU™4z“_çÌXÔ<ÔLdK[ì[†5Œ#ç‘åƒ1ãë€QS·QH¤@QÅTàäl,Ñ0ê$»ÐIjeåÅ!žhrrW•Ü!ë’¬;@S¥]OØF`M/Å.¹Z ²o’ß%‹ùà.Ïy›U‡½¶à 'YÕ“ÕÔ/ž˜õ¦¼'N¼¤’WǾ{ªJÝ©X:ËÝ󉪃¸z™ ›¬w&«°zBH]™²þ3TÝJ­k94¤Ú~‚Õë&;3xÛ½ž¯“ ÍSv4GÞ¦‚}ˆÊq §«/ ÞðØ^°9:d ’×nÐÈåA½MÐWm]"¿5v—Å©Lgþ(í”m®Òû·QÞìQ*5-•sŽ©ÙêíZ·yX¼W[…;U¢ÅÞ}xOðU^ßrUh—çì:\Ô~<° è¼ØU»;Õú 0ªâ'½5ÉÁ”œTGìU'ªRÂÝ6©"¾"Ûáa {߼ʛ=O9¼e+'àÏYí®LOz¶‰Õðâ§ì–+¼Np*“TXc¸[ež~Ѹz\Í€}ëwÏj-w9Ö-“6çH]Iw¢‘³síuâ˜ð•‹=R —Åë"OuùÝ€¨ò7+*™~s¹tk'g:k¨µ+ñ|O ÈØ¹õ ÒQ×½ÂcWïv%Ë2R)TÖ°ÑF˜¼Wa% ZÆJ '»­ò’ 7]°OÙ82È•ÛuD’¢ú¤0žD· Àº5sŽÏøÜʼnMâôZµuæ™ÔTú'Ù”ûŸLt¸¢X‚¡|òKõnrÇ}Êìikq÷t\µG«Íl¥èÄÒò]6~(v¯Ë‰¯‹»,„ìI HÇì›Ü±$/-©ºV|m{³’Ð_ j oM%ØÛ’áU µ{j/ÊjUi"%3‰"t³¯F ¬€4À¤jœï¦F±xÎ4f®Ó´§Ç¡ÖoZÁÖ™¤zšV¿¡ÔSò²ÈüoÂMjaßH*Öìsho]Ò¦=lðªÕV™ä:²„ØŽêYð¦‹ÈPFû:(EÀ€íâ[½>í"yê´¦¡œÂ`j»Îƒ-Þj3¾’´\õÄ+–P<ÏI–öÔE¿Àxß<­¬YrÉ—¼G[ˆ,Žõ¬[Cë'qtŒZݨZ£[}ï›ÂuÛ6q,ýT$?I©s2 RÄþ$›Ùvo‰*Õ#m-gB K`÷žÌ“®ê%¤W»miw˜r_ó1''¥ùßòÈL…’2ÀŠôž2ò×®q•ûྈãºÏׯ«àªF‚J íy#{(3xLO€«g„·4Qgvwˆ²û}n²‹Òï@ÅM¨s\¬aH»Ó¥?¶+µ<àÍ.q×Å«øzSv˜òÉÅ®Eç3EfÂ8tÝŠ$Ùy©KÃJ…2àÙÃ}ÒYÐ%™e¯}÷´OÈË¥‘¨ƒ ÂÚܾ¦§ó}ö©|Ë¥Éyr¦Q÷:ò ÑÈi^›’eÂǘe}®Î)× ¦$ÇXf§[VN ˆ >Ä‚›ª÷uÒ IûZ@»Ì~v;œ2ÉóýaÇQcQÝÊLÝÖCÇßáT}Òßœ{ÔÞ㘪dI7ÝÀ‚,& dþFÔå]·åàJUÛ;é¢`–uB‚Mè¨Ù1Ö*[±îÑ笷´êóT—BÝyŠ 2Ø}™äÙµ1f!4! »oÆ"ðx¿½om F¨ V/òÚ­ÔD¼•µÞ´y%XŠ„Åc‹„«oÂiQë$½ /éίN›C, r6_µK¦á=÷Lq©M)‡ÍRA¨ï6ÐP³Ø‰/%¹uÔ;×¥he¬tO‚8|"¨¡.Z ÁuLK†°õ[Ô[‘ì .sb²ü¬ØZµ:jaÐÔ¾°i8¤½9ÀÊÆÃŠ*ÔƒµxJ/ߓݴÙ$L:¶üòt"á6F Ðq€œy ”à­H¨ôêß÷ì7áq¥ÖŸE¨8‰„pjÏkrTþHFË‚[-qÝÿšzâ%Éd*ûSÝgYºEþÿ$‰(ó–-&ŠÔjà{Ù¦±‹nn¶dr95J쾟ò3î1\€áíÍasç¦Ç9‹¼+Q©*‚Ãã´}>‡ na³ì¢š[ox–î=º¾À¼°»FË™Ný;–‡‹ZX‰ö)3/ûvˆ¡œiŸT½7’M”©V;H|H ÛD/ÞY]”¼qm:¶eÓëèZßÔc壢\MÉÖ*ucðb à+ð€Ÿ-v϶Ÿš–y,©@¢p[ 1Ç8íUß:–ñEŸ*Üdt¥6é|DÊS……¸y™;ÙèуA­^y.õ`g5üïG“p=w/˜Ü!K¬Ù׿eîô¬Ñ çŒR9‚`ð>î®! ¥›rN qÝÄòo¾ËqÄÇIi•dÎÊŠ½õW5Éb«c®–s ìWÚvóD·D‰ÅÔñ+–ööúÉØ¸½Ø±)d©ÃÍH%œìd²i%™Å+F.ûž¶‘íl÷ÏS¢´ãâAЙ’AšôÀÇ4N“’Z<Â;(K4ÖÚh±pâ8é½C\üq#•ÄÌÚØ³­§22Ü»–ŸNÃ9Þ¬"ôs,¾ucó>2ÀŒ2ðÕȲ-Ç*'»¨”¤ø}KTbÕCÌ¥I«{´‰q²R#A}®%\ÂÍjÞ©¯4N륛µŠŠ:3“¡ò)á’].qó_jü9Ôà€ '[ ½êY TÍÛ´•j–=uXãÉ?~t©§t-µh“®[±ô’Šcg ®õ£[…—‡ ÁžÉñ8ÙìÉ—F$Ôø´;½“ÔÄpî˜'#[ˆ‚@ÇL©8¡—@ ¯ ÀÉL\ã+ÉÔá²æûQÈls„¹ Š,ëo Qש LÒ6â‘ÃÓf:^‹ÀÊkõ´iÈf޲ÏIŸÎ1 AXÃgÏEä­ÁÙ1âàUue(ùdÅ;žÜ®/YWm˳Qìª-À/Õ.Á$EޏœÖcÚRg«ûºo™^²1ó–.p9—é ||\`Û¦›ÒyÄ£u©2™%Êã_©o¥X-°ÌÈ EƒÞá oÓª…½Ø”fqò^Q6cu¨¬K†™§+Aûµþº.­†¼ªä Œ'á,ôY2ÇÒgÙA±êÑÂëHˆ^!V{SŒ“g¯fmq 1[fŸJ¦–È%ª ÒG¬`öXèÑAeã$Ü…ncØZŸ¯ä©/¸–À~¯]æ’˜¬ÎÒ ÞußÖÄïš1 Tɧn·+ø\=¡%Ú:‡XOŠs=ö#.’©[ÄŽÑrTgÒv‚åþP¹œ¦ÍRaXÛÝòV.€¤>(W¦bÀ-žÛ*l[Ó›({_7;ßf\´ÇJiÏL×–iÔ½èKýØߨb±á?•üÚ~GN¨Np²“íµ‡ÔA¤”5=9²§ Aôa ?<¥Áwœïª›@`OíT°X¼QÒDP L…À¢fWL°«ŒØ½”Aº¶tM¤|ðR®;i”p èùÏ¥7™ˆ}E€Uu‚ JzåzØøIÙÎcx€á¤¡>ægžgXœ‰+ CJRtP¼egT¹"ËŸØšÅ,6áR‡¯ $ÎtvžUpç°gýPòœIîhäòž´1Lö—[š=«êr‡àÀͯWÖõ>åôZé9ûœï9te#oDÞÃntvÂ8p/u7Èyí@E­L§Y¿?ðyӇܺÍúGƒSVÛ}¸\Ÿ(*Ûƒ}B ɶϦÄF’Ô5(ÓîNª&®L¡…½í­:Ìïñ0Ÿw­ê`蛜 wf ín‡ëzŠz{Uu! Ø#‘G·©Ko?Ê Öøñªä{±³ì™Ègä6³§#Rñõ«¿¤y˜£Pû²<ô#›žRXG×K+«çén­:éR °ò6F®æ©lWdmݨÂs¦¶kdçJ–/q— ‚ -»(–%ìãe'›©ÒëªÖß±±MhU’«÷tØÜ‘(¬ ×ë¡­DÙ|ê˜I‘ü€ xhìRý˜e +«G×¥$$I‚LúH2ºøŽô,@ÑJö:@{òIˆ{ðS{r‚|ÞçÙýöГÀ|Õ Íã#/‘¦Êʯp›TmÒ®ª‚FKCÕ¬{å=ïNõ¼ÁŒ²ÙÐ]i*%R¦œ ÛÑ}Ï¡ O €¡ˆùûØk<6$‚n®‡í*)T³ÿ/öþ¯×’»öCßãSl?Ф.2 2ÃÉÚ:W-éIǾ×öCªjwwZU™¥¬ì§¡ï~?fue¶lÀüfX:GÝkçÞkÅŠ ç“sÌ1Xtê‚<ÄûõǨL˜”ýÜ/€Á]Û’¦Õ_P )êú?‡ç¢µ’Vçs ñ¶Dæ-%h.é4—ðfÓUÚaJÜüÁ¢¼ÉÿûR‚`µm¼·¿JÅž”`W»l²ô5Û€™}ÙÒE!î)ˆïPëŠ^_Üá@묶!òPÃÝÀ‹úŒ„n è]ÃZIYÎ-rˆ°”j ;óɲ5Ñ5~Þ–¼XZ&‚wQpͧGIQnaO©¤6­ÕÜPô‰¬}g,SÖĹ”G5aXjúvÏ¥}¸·Ú-äÛ>7à%ð\¦M`E)ÌOÒ²Õr)4~¤“*ŒÑ)þS~MåþÜˈ½ße8ÐxOÚÝñ„Üo½jÅw ßUÙ¾Gãm†¢¥@6Þö²ÑЃöá¦q`}ZMGB‘mÖ¬Ø:ÙÄÍf–F¾ŸžÈRq(ÈÃ"¨“s¹ξÜWƒò=›éÙsÜ$„ÇCpÒæ4(NeÆ»ŽOÂ+¹Q …¦ZòÒ7Ï5®#OÞáWŠÞ4ÏÓ_Uy÷®ž ý/ÀPןn;µhmYkùc‘ëœZ5 X´Nå$mk‚ê‰`ê¡þÒN|¹­ÂŒt<£xªB6Ê@궬™\¢"¥’;øYœÙ'Ö΄[À  ’¬Ö¶ç \dN’˜ˆ"ÁØ~9':Bd+ž€àÒæ<Ê¥Ó‚­7š©O’FäO^úRÊÇí]£Épƒ*ú]ÕpÛÚDÅg°9«BN¯µ“JKmÖ`e›ST™(zÅ+Ϥ¥d«¶Ò¹î­(rh‹âðx$?Ï•T"q ^öí¨•(4d8ì¬ÙpQJVuIL*1Õív‡Uà‡,ÁÊ–È"¹QŠšfédûg*¹\•\‰b%r½¥ÄÄm\ç’Æ%å,œŒ¤þWêòÈf–ÌSé65öÞ%dpeÙBÁmÛ®±-y-tñ<`X¾ÔÌìÇ–÷ZQOC•PËPž·ŒÃâü¡*W³óž²Î0’‡êP³w§gëeUEùÓÀè®à£3F=±j6^ÚÐí]ꊂÞ`9¢Ô ®x–ø¬& óàÿ_(½:@ó|q¾Ñ –ÛvQ!p´ñ>Ü\ϰÕë(@¢%3•ÑY† Œ@qG$ºn9EÚÖt:¼%½SÕ;±k‡ÊjI€ö›KSU´›+3äÖhBn°Q%œ-X¢ºrépÒPý÷ÐЧxô2ÅÃ]03ôÏËécù›£à:9Uø±(‰g£A3T]´'i†»®zÛù¨!÷x¤¶Ä£·ÎÂL¬!XrsVàå`?°I»:riijå-®¥Ø®!×)gkhWÐܱ/¿ii¹êGT@!1´©Ø1·ð°…ò$±V4Œ‘¼75§-ŒIW§grάwOd¥2åð¨ X4xÊÉ‚Û B'wµ•¼™I‚ɳ÷tÚ+UzzhžsP¯+_G1ù¨q/Jœ{IµœlYÉB¬Ä¹é•à”ƒ9Þ3– éôi'¾(®[¥wéò[ÔŽÎ~^‹ÞöH4Än”­àÊË6«å„Òº3Í}¥+=‰P]@rQœ¤&:X$m?Öü¨ö›åïJ*Šñn»ªÝcPî’Â+Q©4õ«O§ þK!“”¹9ã¦_ÈÅ^SØ-ô¤Óκ£Ôû•ŸÔ<„.—½2C±îÑ‚Ž˜Ozç©Ë¤†7­ïª·fBEPÉh½âÅ9Áe÷ WU/2Õ3ë–rv浨ž‹Õ#¥ @ëÎÎZŽj}sÛ¥'|’¢@UÙR&Q—.MAr9ejgý×å 2ªº9{ÈK4ÏA{INj`¸ºDTÝìYX¼ÁUÉœE‰+nY|ÕC;&gÒ,†rHgO0DS !¶SÁ£¹æã7µ#U·ÈzG¢‡¸:@Ã)ç°ˆšz¿Wb.8auQkYl³Íêm•»r”sŠc†Óvõ¥«†“„Žmˆ lCë}(4@*L/ÑÅ.VAŽ¿âÝëÒŽ„â¹”=|…@aU™¯„&Ö (}w¨V†´¸n DÕZbtXÆ'µ‰ˆ÷-ÛÁ;}ÏNB«¦\ÊFBVÀê%6HÒb±:g«P•GZ|âÖXùª{ôÉÒ%‚?ŠwÂú±æ+UŽvfà¦H‰r‡©¾žkM„QÍ–/ɽмóˆÕ„#¥çÙ7~Ûmì-°Cªq‰²R…¹gaBB%S•û§z¯èYâ…ÿ¦‘Bñt›µèÜc]×:ŒJé â+ÉB­`*™éxÈ2Pºn«âÌc ŸçeqõB*Ùó …£Wâ¨)%q@t«Éž>§:dÔU˱S"ëH¼äã­–,ç²ÚcÞ½Êa.Žèώв%«èjÐR­;yX|ú“WEïOieê@Q—¢Âøpè03[T¼¼oJTéîtµϻȾò›Ô=Ô09‚M­S´£'3ÙÎù¶!žóØj9ï#oC¹.ê990|y µŸtÈ9Š{æSwõfiEØ”¬yöÈöå™gÕý7ÉWŽsìêƒ5*·¥ßÜ– :küDšk†C¢)6ŽÔ‚™$G¢ I %~ª& ¥ý¹b‘£”{+):©Ãøæ1W–¤õDy‚Ë«ô´Æì ]㲆ä®:%TÊ@ ±L½uõ"À>O§°?kLTéÊ.Àƒ‹D½Màú9]VR˜H,–e‚ªé"|:Nuj0,ñ"Q½tEƒl)O²YÈUÊMð¨ý\B˜T§€í¶šé¼_>¨,ŽŠê›©­¨ææ:Œ=”Ë“ì:=¸KuÚª®$¶ib,ÿØ0`RÏE‡8øõ`ï:Ê9ç—™@ÁÄ5_ùÞœbVî 8'†‰wJ~Ï•ÕÑ“À;¤n8€ì= É‹ŠEÛÛ£GÑn¨²e‘¨'å³;<%I~EW£ïÑGzM9‚ýG=T4I„õ<œ’˧Vé,hO«<Â{u–H½áŽ2m(ŽHrŒ²[ù¼D熎B·C®Žf4ÖR¼’sæäFý8žKLJ|j¶r=Îí(Êé¼Ëjbm2 š¡†Fð[YÃi@UÕR  6g#Õ.Ã³Ø öð@iÉ)½Oö(dÅø\·׺өÉ)wR^L‘ÅÆ—ñ_ËRZT¥ºÆ}Ӝ†® ƒbᚪ£Ecg_íÌYoÔ“÷é•2µ=*ŽKl–ÕÉ'1­ w¬{êÓ0 œ´X©ÎñÏ#x–4ô6W3y,ÕússºWŒœgKå²ê)èÏK¿æÉвjÅ ;Œè˜Ý¯$ (Ò‡žäÒ*X¢?óУá´÷tö|$²R<éáq_¤z‡Áökù^´¥D¼‘`äÉê·#‘®S¶ÝÒÙLž¤Ëf‰îNiz’A¥Vë)UŸÚh{¬Èehò©üÚ2ï"ŽØ}’íAþÈg³žVÊOçn—<¨jŠ{n›Ò]Z ²ôîG’CeqðÛêY2sv†œ‡·ÛÇMŽ6m‰LÀ("aK r/h8"–r+¨`Á#»”p[¬6ÜAåûhÌ”´ëéÐøãÎæOWÜÖ±Ü3$1{‡àg§ñ¡¨*2Ó=î\ÓPÊ&=etª¶++ݦ ¬b½z$dPœû·ÛlfƒQµ'xì^á¸Òj-:Êro=7õ'J°hcÑz¦KAªL?RkZ'LJAÝçYKúðÑÁK+lßur£ˆVM%–šˆ…"ÛîiðÜfV öö«ueu6”;¾6mÐéw’.ípõ’ø\iEÉQ’6£3hÜ<†nR±µ²'é@‡@5±É–[ècæŽfœÄ·K¥áá 8E÷„ h%ȧ­‡ +†`~SµE¥ÂJÉJýÎ’ö®S\œžN‚Rí7¹É¬è1{ÊóŒµÝc´g²¤àŠv)D²$½6™ßjϲ5TQ9·h¹¿ŽfŒ˜¶Gb!pÆY§vG‚¼åȉ÷qTàlNÞ)•qMem $îmµÃ­°0d*ÍGÑ"ö‘Ó8-¶@Îy*]Ñ fH½¼HÑ£-CË¡Óæ(cŸ“;_D}ÇûáR‹Ä#ŠÄ¸J¹|¶U öU“’²åͲˢjks*¿ÄMŠ·«’ÕeeœÇ9@ò€/ÎêšêZJc¿ïO.5¼ý7gP”Õ™Æ\”*Às—Â'¶ú¢Óó|…¡7Ýà³ó09¨³ªGɸVNJc ÊeÁ­êŸI%BZÏ>ƒ œö¦¥Û ¬˜©¥8?‡ªB’5Æe«–&¡Û)­» e aèV0½º}»zöä›Ä=ªøÞ”Ýi‹YûDÛrVÓ£bQº’š4‘ºTê¿Ânã¶ià@D‘wßD];õ9”¥+Vîe¬•@aí—.ÝSúHôôG´Î#”l·<Â,]Eô—¥Ãáv N†#V5Ø5ŽP„Ïþ+#*DHj;4$sv¥=ziìKÃ鹩-ľ†!w‹µUW¡ð,ÈÙý'ÿ 8žžU²¼}u_²v‰’ÝÉnöX«“Æ:áÉ>«—niö_ʼ6aLSwÄ`)¿ááÓË¡B•ÃÓÓî.‰à”Jâ9]6e†‹6 Wˆ›²@ÔÔ/ÉK0HòMCÞî—+)Ò­¶J0°½yT[âþ§¼ãWxvdÚx-s<;=¶¤ö*™¼­sm*’u,b1R~_"U¤µ±-¦‡þ¥º’Äó¨6=¨T‰öŽMG¦Nå(Šƒtn‡å„æ§‹}Ÿè4+ÕžŽ¶;Iü4ß°{ù⚩(Ñ…úfžUm :è€EPcËñ{7S6»=¤ ³K$vÉ ÖiAóìË×·Oqü: ¢™#)ËxzFxEW O¸ÉcùzR­þ^)ªÁY-:@ÜJúq÷É´Nð©Ê5ìÕ;*ŸÀ‘ã6Î*ž»K‰Ñà¸E‡O1È‚->­ýç_ýH²Ñœß›GÂ,Ÿ~È%ûÇm9Þ9YlyRPðNeAPÒ¾¦‹ò€­ –ÕaáÏsUÝ:`Yw, 7R)RoÖúrNdG*‘ôhÌ%äJÒÏ$•ž e©»] ÊQÜÍRy¬"<`#РSμ.9|O‰LKdQ½D…¾h+wkööe`§µ%SÝÇ'YŒ£ƒ‚•µažSiÛó Ò¼ù-oRZHOr“4}ÅÅM«Sp¾&ŠçéltvìwHaäÎØ‘œ°e0OšýŸ/fSûMwçš%=.ǪòHªu,5ÁSIŽP­`›Ë¶åï<ûÈr‰.}M4x]Ô)iœç¤¿²TÝc5ไçʽÆj®·5Ž^‡U‚Ôœ´—Ç–ªðÏIÕ??mÍÛz󔻿¬ [“ržwH¿ºžtrQdÃ~º6ˆR•¥ß;ø]2?{è°-Ò°¾|…íŸv¨µÒ”øD%ÿ›•û#ûý¡ ªSÙumD±;nà{sögJmr“ùAîrøÎ0™HQY—KøC¹æ±ºãHakJœRkQ‘q%GȆ>Ç›H§»çhYxõ‡¸_VŽTS9úÛ©‹íªŽ´kü«RîR³1ÏH«8\KCœ²»F×U1e<Ø«—ç)ªÖÉKkòj?U³Ô|¦mk—Aä)j•Ä5é2åEmž:A˜HÓ7ÖªzÒ#·5·îôwYBÂY#kâdºe:QÒU¥–Ú<¦úyö°­áüKäy»íºD™ËÚû‘» ö£^{jsT™7–ö¿[€÷}oê° ª(‡¨JšË{’G’¼¾ùÈÏî7ùÅŸ¿÷òýíKL/ñü«Xþ*„—=„ë¿øþÃ_½Üo~óö›—Ÿÿìå?¾÷úÃögãý÷¿ÿðö—¿òÒþø__þüëÿð¢åà_¬?iß½~xûõ›w/?óñW¯ßñ‰_¿ùöåÞýöõãïÿä-þü¿ýÕÇßÿÕW_ýö·¿ýÙ›ï~øÙû¿üïþÃ_¼üöíÇ_½üç×^?üæõ›—u[þöÍw¯?~µŸmöò¿zûçø‡÷¿øøÛ7^_øÁ·o¿~}÷òëwß¼~xáÓ_þá¯ÿæåï¾}÷é—ÿæÓ/üÅË7ç%þ,þôv?þµoôöÝúã7_ýþ»ïß¼ûýÛw¿|ùÅÛo__þnþÍÏ>þîã_¼¼y÷¿øæÛÞó÷o~óæí·oþ™_X—þæe¶ÿôò†oøã÷ûáëo¿ÿøÃÏ~xû­ßñ+ßæÓ3ï¿ûîõÝÇ6¯ï~ûáõkîûï¿úñáþË»÷¿}÷‡?¾úÅÛwßü¯ñͯ¿ÿêŸÞ½ý×_¿þõýãïð£íóÏ~ùúñ%yÓûË뿾¼þîë_}åüãï¿]ÿý1ßáßþðýûï_~Á×p¾òÛ~xó›×—~ýúoøòþôÕãË7o¿þøòÏ.Öíó»óã×_|zÍóÿðöw/ÿs`ùÅ—àÿþôßþWVØ7ïß}ûûÏ¿¾ñ¿ëO?íýýï^þð—ÇË_-_r*/çu¾üÛŸþùß¿yûãÇñ—ýîï_®OWÉíùã•þæÇGÿç?î‹ÿðò§ïõ·ïY°¯/þy}ÿ/Äÿ¯ù?ñÿò*_ò´¸}—ÿÓõýï¯hþúÛo׿ÿù§_øßýû›ïÞ~ûûƒûë,þŸ¿g ¼û÷¿ú?¾~Ú±?ýæí¯¿û÷ÿú×ß° Ú»_~ûÓ|ûÃ|û»×oþþíǯµŧÿ“ìÛ·ï^ÿþýo )/CøwÿÆ®úú_?°×?½²iþôŸw_¿ÿÆÝEøòæÃ‡7¿ßKhÏùå‘møÍëïÖê}ùêgïÞäO^øvÿöò‹÷6)+â+þùÛ7ßùóO?:^¾ú×_¿ÿøúÍ?ûù‡ùå«w¿þîŸ}ô¿|÷ùÇçËWß¼ÿöÛ7>ÿ¨¾|õæ»ïùEwøO?½~|ÓO â?>ÂËWß{Þ}ûú‹/~üé¿ûåwþÁ·øá_>ÿ«%Æ|÷æóO¸Ô_ýþû_½~¾ÌƒËäŠÞ¾ÿ|AGyùê‡oßüð«Ï?áÂÿëë‡÷ŸÀ5´zÍ3øêão?ÿ;Ëù«¿úðúÅop…¿xÿëÏ7#s{ñö7_ü—û[ú§×\쯿ùâZyŒ_½þÉ÷Î\ê»·_^Hõ;ûþ‹?º|›ïÞþéOO.ø[WÏO?àŠ_ÿõ×o>?ד+þ¥¹êõóEŸÉgEj}ûå{q¡íó+.²~Ŏϯ¸ºûó+®ìùéUáŠæçW\Îÿù—ò?|~ÅEüõçW|úÿçó+>ýo>¿âÓþùŸþ·Ÿ_ñé÷ӫʧÿýçW|úúüŠOÿÏŸ_ñéÿðùí?¿âZþéó+®å¿|~ŵüŸ_q-ÿÓçW\Ëÿ÷§W×òÿûüŠkùço¾þ—ײ®ôÓÏÿt/\\ÄÊÑ?| úüc>ÿóN¸øüþüŠÏÿú§W›¯¾ùâ¥Kã‹—®ä/^r¿üâ%7äW_¼äbÞ~ñ’[ò¿}ñ’kú—/^rQß~ñ’«ú{"‰ë«w_¼äªÞñ’«úþ‹—.Ô/^rU¾xéÖúâ%Wõñ‹—\Õ¯¿xÉUýæ‹—\Õo?¿Ü¹ªß}ñ’«úý/¹ªÿúÅËŸÙëŸ<ɸsuÿüEœŒ{þñ÷þôÉRæ¾~KVøö›OäOBþ׿þ@hü¸²2ù௺z}ýÝë×Û}QÀS¿'‰XÍáªnÙ­I/vȳÃ÷V¶\ˆº_z¦ÉØê7uaÛ£’¸BÊ—2ÏC¿2 öHþ$ (¨ÃÝ✷V'} 'ÔÒÛ•6ê9í‘EËIíød}ïz{xÚ®|ºƒ”~ΡR^æãX¼}~6‰˜:© g Ñy´ÝæÅ°'¦ºIèá[ß,Ú Üš2 j x´©¨”öò‘h”Õ[…­òZÆÛÂmN 꿘t” ÓNCáÖ øX9:·GêJz¥pŸý)CË‹Îóß÷¾Gn¼GÑÒŒ5éòÚÒxÃá I Y¿ä9ê1äqÞ¹Øüêzu}:.^*½žáö}ìj¼ÏìyñU6‡LºÜA­˜å¦+ª™yäçRqfhF•sd­ž9±*w«ilxlýÓÀ…׃«èûT`ÜAô3è” ÍYvHÑçyð›vçnõQó­òê¦ØK­ŽÈܸŽ=¶Ö3ãl¬Úë`k %Îp;Ô/‡“/v)mqßaS7Ò Ìi?e;wÏ]Rî{Q»FJ\\R9v^ƒðÜ=È­¨*0ož]¾±•ÃN,ÅýnS·éÓùá â­:7Ëÿª(Êph¤Zä£þ\Ó^qìXÊIÎÑM‰—Þd½ÓÒ”[ÕÔ´Gx;PçüIZ~ÏÎ+Æ»Îçð\M›˜™ûÈÒ›‡£ kTë^ZóJ¬òðt2V¬o=vímúÎgß=h¨”¤J¦SYìQ&tO{NÁÃ7Oc£Dí£Ó&á]½÷ ù¼çh)yD™Óâ–%éô6»¤<£³qN=-ÓîZ4 ¡‹;«ô÷R„öäÕ1É´/ób‹àÒ1½öBèŒü›í¬²ñ¾A*”έ:ϧ›ãUU`x<®lW{Ôj@]ª1©R4%øœ}l™·™ú©¥È&ß‹$YyÑ$È®¬S_²³¤¤¸ÜÐßö&ú¯|±º=Gš¥q™Yæd‘Õë>®àƒQi8\¤]ë½4žˆ«Òع›<§¹Å¬ï­«,&®îG ¼Ç¦O´m«UBdIúMyrÇ©ÒÆ©¡wÒ7(okˆ€îñe ¼N{“Á½„ zJÉN¥ø1ªV$-ÒD®-xvÉ ¨NÅç¥Ñ­~I·éÌþ{”·Ö€ÒãGû»«_eg¤ËVY³#Oí­‹G¨¶E*<» uøæa—K¹J»‹AÎKm kg¥†–çzÅIdþ]û²0¬„改XîIz¥«òËNÔ,±,ek O‚æ”Z£ævjÓ¦¡s²¢Im„€E2¤š$÷s(¿É^T1xöÝW|üqD"½ÉʰGÒä6Ô$Ø›mÐkQ¹YEϾ\0¤†4¶¦DÆesx¤®Ø’ÌA7@nº×««xO›%W“)7tè$4ÊŠhC´UìßîA­lØ-I9=äùéýPœŸqyŒK¢ûÕ&ú=ž`Û5M’‡AFΠçÔº„ˆT¦&ÃÄq{¦söåК§,õl$¯9€Npô;§˜AØÎÝå„*ÏMÇ PQ‰Ï%L«]‰`Ýpù¨•É6*qª­EsËéL’ÇÎÍ9øÆTºÇou» ä^:¡q5k&%îqi‹Ò¨èÈuG;Ó,$Û®ã+pZhíµ¬TèÕ|28Òó2D8í™oÇr£ èq,^úykø)'’€s ÄŠ,¹/9»ëØ`ÃiuàüvhÖr›ñØ‘yÉ6bö ±bahpÇŸç¤xÊ4 -ê¥ðp+WåheÝX˜ u³ZºUÙ¿¨ƒIâÑ™5ê"½rÔ`ùKýw Á‘Z•žä…]UöE?MŸˆ  };Ò?c¢l¯ÚCªœÁC(T¹Ô—˶ÝQ/©¶QÐn¨eŒŽ¡R ‡Þ2¨” ’ï¸Äϵ ã妆´ ¤ªLWµ  Ó¦0MšúÂP*)a˜pF0ùÔì„°Ü'DîŸdn€}²c“sNÄ:«FRQ€D#'Š#~$Õ–.y:èH¦ëÌ~ÈœI§s}]%2퇆dÕ)“ð ¼ %³#OpÁ1æ¬ÛqJ×Ü5¤yH lé‘xj¢<¡¼.xXQì©;ÎYùsÁLn!ù|£€$$JÂxƸñ`R”ík _j@TYåb¥[t°pU WØc'£‚«[Û‘8¢Ì’¢Sz²°ˆ>–ÿä¸vóTKQq¤ï"W’|ØHC×9neÍÅRO*Ѫ[¸¡™ D‘¬ý;w›šHÍpžX©- ¤’±ãžûžOñ<@à Ü:0+i"6Ä—2÷€$À0$³´M9qŒ“ËÖ.ª“´²ûµ¨Ÿ ñ\ 5UPÎ;«LNìÏ¡ûÃ1Sn(ýnå²Ó}—ŠUjPÉÑ?jø¬I¡8wŒ|õ.Û +P'äˆj.¥l”¾â”'ì™KÚ½eµ¼wùn Õ›(¤j#’¯ <gqd•Çe/ªà]Gú$ó+A) k7Øà”!zK¾~ƶï»CO•°cb\ž¶S6÷sª#§N¹Z—Î߃ 2¤xÝ(¥„œ¨ñœŠII±-@]»îå;󮊾™žDey™M 0ÝÔúüزÎêP|¦.랟u ùéVå7-³ˆ}¤ 3E ÔfõŽ–«+Q`&ê½<%¼‚k±j1F‰:ÊT8ú¢]Nï.:ÀÅC_RÜöh ÁW6ùkqÞÖ0CÒ„~,›9jcUµ°žaÝ©º4ZÃlL3b$k‚Ð5%PÝš,ƒ«é¾gPã*­ßaqrÕž*"xÂЂެÓyõÝÉϪžwh_´Å’ˆ¿†€u”æò%óÖ™?hZŒ º ÷"LlÓ;÷,@J¹žEŠ–ùÚ)7ö¶Df¶áƒ'a6KqçyJæªeÏ­´ðÃ7'yé$A¾È¿'6; 4ëv¹èJtVÙ³Š#›èw ›I«žý²oò®ô¡C÷;ùw)Ç$ÅP¤ß®¡H«¦ö¸¤C‡µ @ÇœGuåPÍÒiRDY“+,íVDæFÏvn@‘‡ÇÜ9åü‚Ñl×ÙëÇ’•Å­e¹QýÁÔt ÓJŒÈ²¥½ˆ‹ÕišU}cþ‹[f?Ô×t—“q*¡–VòœœäôUu¦8m+oàò>À¹Tÿ7y_Ï H»^z°ÊØC«CߟJ“«øÕXVŒ”»uêã®Þ!Ž>èvGà’ —àYÅÞš„u·Yj_°´øO2Å¥Ÿ) DÁ¡ËîãA~£€äz«TpËÖåÆÏÓ@½dÅ@| N6QHºS›ˆã„Ú=olõd%•…¡üD·sx´­ýñ¤^¤ð+lIVõœ%Ïûê¨,Çpç§£"H%+³E×ÎOŒXY­²C)¦fµT”ý'GÔYÁÀ®UÐÓ±³ ¹j|⦩³\{Tà Ü_žìtïDhVÔP6©]¶ÑR¾ô)Å [ èæ”=É0SÏkM¨  gâÎq÷¬Á®8ÒPY—÷äR(àÈ› {;§¢…Óyñ#¨’ö|Í)‚¦¥šÊB–A«¿Ùnåqegêá¬ðسLvø˜øHºmÏÎ *A²ãª'VN“ÔhºÍ>:Ç¢›!e#¥§óEÉCJV¢›#c<”[Þ9¥Ås)ÐËCw ˆ–ǵYvçu¶”ª§G’-nqõÃíPht¾_äIiéJ†Þ`6ÅŠOdz--H°5ÕwƲSÅ À#a#6ý Ûá–¦ãSŠ"Å– Ö}i_u® _·†sýÖO£äç´®: 5ÔNHà³W°ÉÁ ~E/êcyDÖ¹ñ§™e»GÝMº#!;@åQ²êî03+ÀÈ\AØ]§a™»`žËÌtèŽôÐÓô¬Ã“N¥¾”h’Î ;‹cdÞ‰HñITmÇuñhœÝuâYË AÕG¸ýl-¶ë:¥B=˜Ž“ÄFô8º_¹YY0áàa÷¸ !w%ivkåèuY&(VËY’ýЃ9éR5=P;×ý®.!—ƒúC´Mb±¸-EhT§ÄHĥнȓìÆ[ÝÛÓY(ÕÕlõôìz d-Ûobrõð"Êq*ÿ5Êñ’FÛ´E´‰•­l†¨ 6Õ6ÕifÍT›gÙ¹]ì6áYÀÃVxSº‰ZŒß:*öËò|¶‹T hTk#{s<*ª—½gT¾du‡'RÖa ð’æ2˜¹fÛˆøÁÙåó$õöm—=ÉÝ'¡;øÈCS~ùјB£=2wQ ¾vŽH΢åCí*âBéNƒÞœzð¨Ü eµûu•´F@OдÂeDýƒ{¶´;¯åhx)KDéá8Ê®âôÁŽbI%‘kÜIç¡7Å}ldĤ2XNs±èõ\U D%:%éo u+0’³êÝÉáÐ@­1+…p©ŠÄëòŒÞÔ 0õ„™˜>?pn„pÔôc¢ Q—p ¢æû¦ÐšÚ&vtx8˜rñ0¬½¦°ŠÇ^ûXv·»"„Ñ©õÍ“Õų©Lס,÷ÀΜ#US×zÒxÐ*É6ên ËÿᎳ,I¶×²¨Ø&5ÅX§.Ä+Í>(dC¬ÙC#ËÓéA»{(š¸üöuÙný£>nUt\çbÛÈÑò˜Šë"‘-°K›Óè·(vÚº©¼åhtW±˜ÂTGWD„^&‘„7U³EUœÇÉ6^¶A¹G9là-ýéƒFš¼ã¡Š£¥On ÔdiE.(ÄÓO &%@SD 4—<„s I9ë´ä1œ|¬ìÅ¡idFõvÀr#MI¢'ŠuS©–2ÞCýJÕ¾›;v"›§ Ž”Ÿ{(¶›€¤}•v®sA´ÀÏz86êOÕw YУĮü¨'Õy¯TKû£p¹…O#á>‡Þ:¯Sùù¤º»JÊB„a\ÎN­Qêå{·’¡|n6o¢®tý:´+ÙOõ@›-WÕ¿•7Šèì[x"”7CgôGú¿”¨z„Ï`â]UÌÖ”ïtBfj:èi§. ê}ò÷§ä’âé\Ö ËcÑ‹s9AmšUtq:—©ÝZ=5Ï£jw+dLÜèìçx%GpÕWP–Rm9–(!hëFúÃ&E5Ù’ý£ÇŽŸ²v@[EÝî…AÙóêbj•=lTøœx—Íg× úžŠð²Š•t)3j4N‡"+š€ízRDkËãüê6ÈÄkª.xò9•®"5 ¿>çICsßÑU`M" 7l +PFv8ìϨÑd÷ÀÉ3>ÞÜ“™“'ä-Iqðhø¤‚XöP‘Cq7§~G˜V"•§­Šƒ;»ý»èAù3ø/·zÉQ_2–œßjžÞÑ<`bu=Ú~»2`IUÔæ÷'>-­Û%™¶L’§â´ÒÍ´b?)/K;ä _¬Ä1gQÃIJ,ôFUø°¬Ý5µD/Jޝ¬°GO†ñ)ƒfÎbUÑ‚'¤„–‹ÝÄKý¨ã§ÝY7ˆ[Ëo³Œ]a›Ê${¾SÌ…$o[”†˜©,)DÞË]ó‡êœrð@ŒD&°;­.Q•µxQ:Øå'‹…A$˜n+îV ¦êŠôS±wS^Ïx$½çZ¢Î×2!V ®Ô1¨ŸO=ìIÑ®Ç]ÿ•ƳTß„ÅÜ·g§ZZ7.ÚžRÓܺnïlaA RŒJw²ô¿’¸:V¨å œÈåîENÒ×î†À3³Ó‚£Ö%°ç©üŒä’ºÌóXR{Ó P1Jþ2“@X‡c®yk‹i;LÃòªím^$Ê]M÷ðHÚÌXÌY¥®Ásø‹-Î_Dö/XYglvÓ ~àtŠ‚R|÷¸deUf$Æê™écÐ+ë¼§ð¡ ++/ilG>!«R ¥W}ìY¢T—Ç•t4ÓiÖe†<­Ø†¤X9Jch8HèÍjäHídË:UÕéaý£Baò¼I ö ¨ÚT@åUꋱ$æbjRƒu‚9ÑB¡&Š»Ë)K¸T¶ FÕõjP|nØ]åŸÄM²/[­ã«ÃOžî³W‹&Ìj¯rÅO^‡B†2GíW< ¬µÌYµ¢(óZ5PeµmÎLôÎÞRý*`vP%Ø“(E×õéÐibÑí±oíçªwAm­eü¾+ZFiÖh T¸ojÂ÷Ò,èÄñÒ¤dýè\H¡È—ëRÌ®°¼´.m)ˆ C„×ÑÒÖtCY^©žeö³¨$ɬ1uçvIZÓ„{(œ­æEÍ£h׌Ç'Žþ~ºº<ÑxËö)žZÑžà÷¡[2Åõ«åÔ¯„Òö1UU͹+R?ýžZÂkr#{|Ní³|¶RÙFÊU ‰ÒJ—-a¿ÀÖa·w+‹’ËÒÉÒ” 4vOÕI I)3*!\¼‰íEHúíjû+E5Kðœ>5Àþâ±ßAö;û¾0“äêøx Dýqgg¬zÑ‘š Ód©wÑÀ©,3²gKú«Ù<&™$‚«Ì›Ü0·C¢CçW"h£–‘:ì©b:àÚŽNÄim@Ù ‚Kô F'Bl”©}Óh¢w£@û©E½#oFò¬"MÔJnÈpç)H }YÌnϲ¾l)¿@EM7=¦µÀÏÂ÷4l\>`‰ï+¹5ƒ ÕáÀ¼*÷²VèÃZ(”²Ç§,¤¨¦«8uÄÝÙÜÎê>Ú–Îy wɳ–ðüaQ4ù“³W#-) ä£_8 ©äø¬/³É•|aUÅfPfXi*AÏÒæ}˜ÊfŸ<¼Ûj˜H03+öl‡Z£ž!ê ¼csŸ¹Íï{©­.†¶v—iðàHG¬¯§ÛhŽðµF¯W;f’ožÏŽ«îYDz@"c"_¢i-¦i–›øž0m‘À2dǤ±¦çUætsÞÔÌC`me¼%é\î› ÖÁ4i_£5”ˆšÀ) ¡£rUûЗé25h$KAÔ•¥†R;¥t }ˆ’‡»2<‹æë¼MRM²r/€‚ ÿJSHìÏG½)Oþ6[pë8x<§eëR‡bƒÙ5¶‚ã•!¤†`wG-Âòþa“:6·¨ü”»V:Ð Jö_GÈìÊ>r] ŠÇÅüUQS B£›_¢£ˆÊç%¹´ñ¬ù¾Ô©äœÛB©÷xsh)Šgƒ:>k~!¶%åôD2‚º«‘üª#Œæ,÷×$ª+RQЉqvR(Cyqë:vŽ[‹r?.Ø¿(D{Y»¢¸Ôì’®,qÜšã9ô0"t’·ìdiuçFµìi–C$s5/×ËøMQ∞’(¯›þbAÅ@j#³‘?ÜzÙR?³GBFm]ânvB‹ÊùV%n,µ­<Ö‘i³¾ƒÍÞ“¤›ƒÂÿYV<É!¶©°&W#“*ä°Ÿ-iœ­!aJCñ¡åw<@)o°¹G6­dF[Jú›²BPœ-¼›í¨Àé—F¶wÉ[üd6vx»déǤà±v² /žô­94[wÜJ\«©Øž‡P›3dzªˆ©ow€,‡±Î£I. Àó`–Êþ#kYA6j*Õ¨HÀwÍ[åaH–a£ÙÜœåL²R–lý¥X©5’æRÇO?ÆAÊÛ]<{ï½I•T>Ÿn?pÓíÍì¾§áT¯óQ,eð±êÐÇÕîQÎÃ;ª¼žRŠÕ F™C³!ÖpÕµøàyñf×R{VÒí,Ãî•l|nϤw‘ò†ÒóêêÂBÖ&jç³ b'Þ‰ëøkþçüHFd7r…„—[ÚÇ®¡ ;&ïö2—ï„f[Êph]€º]ý¾»Þ›uÍ/hÞûœÎ×°ôg™]ð0ÍoŠBÛ ¥ˆ„ž—h¿;~y§eª°±µ´@`é;Ç1Úá<:ëº ¸à(îP­]'x£°YÈN¥ç§ †šl¥÷ð€o<¤sCu"Œ8¤Â=«êÕ ˆÀìåÛ ÜYkOªK½‚«jšZÌxä{Ë–kØJ ¯ŒN%<#+XŒýD¢P†Ô».#?çnùÁåû¬+&òˆž{^­íó\ˆlRv†Bä;Ê᪺|ú¦Y7IïbÏkð;uŠÃˆt=59˜j^‚2ЉÁ§å KuH7þ?OKmÌ÷M”ÿÅÛ¦¢x0mËv¥XÓxæ°V?Œ²ê"ß "X:êžÓ:ÑŒìRµâÖóä°ç,ý•„Êd;Å5ò@}Ñ¥I/¢‡Š:c‘\í½°wææÁXkÐ>A×j‡©õ"«6ÎÁ!ÕCÍ ØP •uîP0édNî‚}¦¢*>QF [`¦Erpn—Öõrì–ðôÛ Yê4;—´ß¶2%ÂëmÍ.l}hÀ¹‹ãeôk’+LãA5OäÛ3æðèÜÝLQym$ ç'Y8ã‘7œ×!:ÔtGUæË-¸XêRŒ ]zUâwb„o¿¹^ aeð°²æ'À¾UæW2Ùít¾Á>‘ºO ºS[‹ŸÉêÐ÷¨Ô°Š?’ido?Ù¶`>ANDÕ»38Bi0nòlò°EuX6б†o ‡í2fÙyÐËú×,1ªîÍä×2m¿Ú\%i1Y‰ûâ)ã}f ”°Âöþ°òìGº„÷`Ò4Ï®ÈW ¢öE*¸¶~Ûaw¼KtbæíT£$,¶ö…SEòËF ÑîòÌèˆÊ<Ïê¿[±èÝרøgƒ­÷]þG-}¾°M# Ž4Uv.†õ#Ü%ÜiS„^STŠM’ºÖÚ©hXIšòÅä(Ù½Nÿ]{C›t:&Gu.¬Ù¼Ñ¥«äL “/Ù›ÎÓ¢ÚÆËHj¢©.è#ÚkplÖ.}_6Þ`Ê;ñøä“# Á€{c DåPØÎN¡ë×M…”ž¶M~‰FZ v—FäC‹KI<;…¨I˜Þ•„ÖÐRípnëN:n¾Uò…Þ%BpQd6-¢$ã°åùrI§aÿ¥HRˆt('ü8°º9~˜ê"³-gÑB™2—•w©Q,Á‘×GÉš‹ª¸éÉÎyö}ópXMÕ–4ê! I(Vo;Û³%t4 ÌB gγ£¥ÔÓ]¡Õ»/Ç-½Æ¨–LÍ+i8KÃô¯]+;mxjAÅÃw¶»+½J}ϧñ…6ãæ3ºZëq¬ÿ"9ʃԱa¥+èζ•ëvËyáWö\u ¡°IžG<ÈB©ÚK•?ã qM ô ua¨pä”#.߇1ØÅGsˆ°um¥’#æ9YµÂ![p'AQ*â’¢,v©¸®PÙøûì©ý©È<¸áÐzo•¬jáx<(㜒Ø*‹Š¨¬,Dqö 8¢ŠµŒÚ(Ö$Pz ¦¸èу&ʈ±t$ÊxÃ)§KM ލ]gÐÅ‹øh$ã¬x峆ÎPË•€¸I_gZ<^žó¿;»'%?™ºSFþe£„ÜÏkcÝìX¨oSÔãæÔÃDÜœç/nO™þ§¤<õ•Ë5–ÅÜ3Ý’'j h›–ZE$É“»<5&VŠ|²¼zaŠ-©îPnw‘ë÷ÀÞx§@AÙR‚)ó^6®s·û½†žØPGÕ„ª(Œ½©%Þe–‘ô0¬ú£WË]²"qMާ敞ö„ª 䕜„#ChLQ7Šl­bÈÈMçÒTF™²=_δa®‚ݦœ6RÈáºn>Vï§ÞDƒm„ùâ“èÒ]}Q-p—þkÝû¨2"àŽDþçÞ–Ëŵ¤Ÿ"ÐBé¤ÀCä^w­ýNýJ–¥ç$ýcEž±±h¶à—*I%…øÙ}Cu÷¹LdøÍËóé3VÙ»…^k•íÉ p"@Ýù*äµÕÖÄ‚(€aºw²1ˆ2dýÊÒÈÚ‘÷ ·Gw§z_·8«±£>Ë3O‚èòP_xlj÷ Ô±Jª‡¡If³'î(¨bQ÷¦Þ„ÜÀ¨ ÂíB^­Â‡zGp÷Zr/Ü|5²5ìž<ܤùÙ lQ#LO’l‰GÆU³[½ð£½a Œbª^9µ¡šÍáÌpù [•G9:™AÝ *­Ýºuù_ºhøLÓõ»Õ^‡Ìç7ÉíÕQMÓU!J?â·ÒËÑiPr[‡©Ÿ¾ZžÙ ©ûéü¥)clž;ÞkÞ“ýÂâP „¿Ìkœ_+BL[òéÕÓ†«'ÿ·6[ Pcßùìòô©)Òòâkq¹EèAצÞ7Ô2‡#Ô6N¹v9ÞÀEXHž®\͌˾šh<‘ÛdwFûmÃöó;§7+÷:Ë"# Å¦9¶åCéÔ˜ó%a©y]³jÃÍ%ìP /‰”[Å€©®ƒÔx=jIž‚ïE•G)AO-•´Tà Yì€È J ]F(š­QÇ)‡®ÄH¯%;²‡’­tÉѾ ,I©.¤›A·Êí°˜âµ1wO×8êq’X’eœ½_êG„0¦9ž}{I`<\ϧ¡…ÝÌ×í˜Ô“° žÃì ¹ CǦ",K§¤ ôÒGË'[·:={]ƒ’v£p~ìÙë§éޏxUuEÔ[¶ã:XFXÑq4À‘˜÷äo:h‡¤F¼¶­û£QI´åü„Ä=äKëaa²Pø¶ZRX =¶¨6Òö!ÎÚñV­*³â*°EIV6ˆÃtÍb™Z,N²'Yy›únkßêÔgSY­(ô¦<­SM&ªc ÉF¸;CSŠ6–od -våðY[—%×®§ª›Å¶&Å]Ê{|ɾ¸W€ÞóYƒ0ÑÇHµ.éÕh@‚rjJ¯ì4oåébyîÓ¹+*­™H l“é,wÖåwR||2òžËÂôçÖ N;ôÝÑwóNx´åa©nRÖ©;…¾I9#/Ø)ÜUõãE )a¥hV4N»òjœMÓ*Ïü©ï¡³ 7=Jhüˆjüp39œY%ðvÉ?ß çš $ÝÜ §èÆJòë[q´Pn60#á‹*3Í©Hàå!/èV•/JÖ&w4X²‚- DÜJ'èó )øÂ{T6-Š@¶OQ)I³ —MLd’¸í |In”oY¢£\1|¢†‚ÒêTÔp¬^(;<pÁ“ºœ~s5+,@^Þó³ÙÂîEp‹/sx#lT8xô'õ‡›þŸÙ9g6زPþ´)@ä¬0-’Z4ŽŒ·D,?cË ÃÜä4m¶qœïàCH›žX"yâÍ:|™6„ʺPüÈaÓæÐ½kK®7$hmém¤PÛ)6­î"ûé—™P9qn½Häõµæ´Qñìµl96‰IÒú­Ç¢¶_š“GÕÇX+<¾‚G×QÚ¥”ÒSÉP X»l¦Û•óȪ»‹Ö¾Òqõú£j–Õ”óˆZËjÚÓ-G¢¹l»­0X׈éÀ–,0ŒdnT¸I™•vØ%v^“dAyB¡|Õä<Ÿ‹‹cÕ¤1M&v%QàîLä ‚g{.gcP¦Ž¡dMò‘¼Ñ¬/È`Á^›½@QʹW®ªœ‘]E\OÊj£‡õ.#e[ßòLÙ\3nžÃ¶d)«nÞ±±øC7¬£:d5 Õ7•JxÀÅ9=òY$ O¬íñ[mÇ».í ,%å\-0w24Ï…:®œ£I<Êp_ê)pà›[lÏgW÷ô/âåq*[0±-ô\:@ƒÉy£eˆÇ?;ÙšöuuWIE«!EîÓ%êGû¼”Áv4n Õäý¡Iоˆí‹=¶¶œ—Ú3 'eAí§>’äJ'· "ÀfŠÅ)v©`¶( çÊÃö(®FÅÒo|'ÏŽjHd¶Âàvyt¾ÄÃøÄëôJ&á¹XöݪÊI¼ÍHƃ&¶ H\VörtºÊ;Qkqž7—ëYxà¤Ä£ªç”Øžl9ñbΘ/E :%é€#!\Á“&fÜV.[ÆbX™Ô~unW#xI|ƒãt6Âß"ì“yÔ,H²£ÊÆF»tŽÓÌõè*kÇWKM—M\7àè)IXK"~ò…”žÚ¤9WB=È•ÎP©©#ûÔñÝݱþ>À†' ®õ9Fª F;°¡³xbÙ¡«$EDz²>À ªáTè+j+ËdÄ5¢¶<@‘ÌJ”¹˜¸¸â΃ò°Ç~ŽŽjæ Ë5uÙëe9†åÁ® 8åkb!Éy€EîKÄ+§¶—_ñc4‘Ù¯ŸušÔ•âz±u.Þs´mª{éh}³'”Ý hSµ°î,-š&]QYÓÝC3'y§žQ`6Ù b¶…Z1ġ߷G´E"¶¡•êLWRbe’5–—)›qËTæÊål¨­nõkºíZÝÙÈ-‡Òk7i:éMÁÁwQ¾Œ¥Ïž$5¦¸--ÉÓ‡ºsJ©Â3& õií Pòðyè§Æu(YGÏZ–cÓqŒ¬´”¨¨«Iö–l»h ˜È"rœ—÷[e8/è‘ýë8ä¦âã홊AƒÚ¦H nPª;ߟånúIä1ÝàŠVy³;ÛAaš#H5Þd{gXH`G[„®4–P"÷Â@¿/Ç3ˆ¤»JEy§?çT»u#HñûÕHMˆO2ö¥}ÎZƒ·Ç½|y FW­ÅF ÉåT—u«¥GA‘³pÒM¹¡æÁ[†Z—;|ß!òTü³DWýɆµ7Va¦Òôøœ¼ýhªmU\¸q×éiµKIŸ/Gÿ”ft&ˆmÁ²{´¦<·Û²;cå°kuSbŸöo™ÀÚ^Ùó›Q¼Ç%eGj–‘N¢HÞDV­ÂÍB Bp¨+„\nõ¸õLÄbG*‹L7YïÑ¡j…½õ— ›¬è¢õ;EæT9ÚóiOAZù§ëñXtPÖèié•©ÿȦ§¸\cUí.‰ÒìõáÁŸ S Oþ³Êâ9% yh­H³[ÜÓ(§ÊTO:‰HÀ—+¯#¿eÉsk)8À‘ÈšvظJóxjùÓ¢NXZ™A6MQ=ofw†C?c*¡á¹ì­•¯õ´Z•#%’..Æ @±)íôRk¼êhGH%°eå@ûR¹:ÊédC?€@&$‡,tiZ k}QÛ°©AÅ™«bõÌÎR=KŽâŸ7 ~˜Éƒ]Ò$È„ ;CHd¢Ó15ðÄ9{Tâ“+ï{ž’£¼«‘ÙA³ë0¸’ÄÏ~?‹¾Z+ùî– 3y¬9VÚ#*¼t÷Eï‘T«K¢H^T2]ëi~±Z7þ¥rÃ’c½HÙݞ¥.ˆƒwrvô9Ô&xßP´US3Ó!rÓQy 2‚|I[h…‹˜eÙ6®~ÚÐÅ›‚RïEG7ÈûÄî6 KËÇÒ5-$Q*¼§|ó£/Ï‚\uÇ5 uzò€Úææ\nߦÉj_ªy:†zXÑ7 Õ—3häq³tW䥩éÀóÎ+L7Oμí—ó¦J2¨ìðHmšüÉ4Ñ!iý`e?_äð¨Õ‰¢š30(¢ƒD’V‰B™ÉþìDyï:Óî€ñ¦¯-UO…€ƒ|ßu<ÒtèÝU]UFLGvgÝ›•Ž'h‘ÀëÜ(Ù²°ì{tJ ‚ìÙ‡•XjÕôl–|–1yRi—U¯í1%7°XöÎ*vO—©ý#ñ½Óã:ŠŠ…OZ6µæœC” Ê»oÑßqÇèYÎTEé»N<¨q)-…)åkçCíÊšÒRÀ'ªå¿rJÒ,)ûúS7™£²5'w%gK0»Ë­Ð8W¬ å…;y’Ñžý¬ô ¥ï°ÎÕ°”;bæ9ˉ˜«UÀ¾ () Xù¬Üvp^u2ªÀS`öÑ<‡Ó›d'àÆ#&8Y€(?BæK§„l‹¯¬gê$Y¡ä¹¯¦ƒ©çÁÝ“£FprR¼ãyîNúRÆ0ZE©*$¹-ä™Ín¬ú˜JdLŽ‚ ÿi‚¦M*,*þÃüGÉSeT´¾â<ËÕSwq©>,ž î.<–½­ 8å§ËRôS,í´×ÇœpÖW»F!µ˜è–ÍÁºs•KÇp¾©ªÁÜUnäÝéÖ.rþžÏzß=ØWΈLŒ£VŸP5[AIÙÊmåìâ%OÉ>éZæ:>€l9·»ÈÆNv<¨¢ÄºÒâΊgA³]¥ÔŒ¡Y¦Ä_Y¶I÷¸@D§l?çq‘aÉë,*™rÄ0r:+¦ÝYÙZRjÏ'oÁ£#r.Åá¯ç]•pPõRG ®u‰kêUmëSI†LSÞ:5/‹>:›L}Ãs¢ÄÔÉ!ˆØÃ^~˜¢yæX囉áN³uÂzºxW3óÓØ’vÜš%OÇëÕ)âãÁ”W$-+pÝ®äÖ0áRÞ«“׊`z ¡ù¯Jyܯ9”täΟܚ\›Jt‘€@fhSÁfjçár©vsúÉ?û\V§2)äá›bɡÆÖ-#ǼHkà}J«çÜÒòõ>Éäîï”y€LJûD\²Éšt¨Á}ðAåT˜Äâ½Ne~Ï6çÀ¤k™d·­a·à¾ós$ßê¾²=UOVݶQAç™ÈIš«RÜÓ“–®HÎÉ÷ï% i¡k ä0°Õ—@>I/Þç©ükpã{8߇´MZ‰&âÔÆ  ”²ö*;Z½±—$>€OîXYÚš·ã½-:;önE¯½%@“QÖÚÕØh”_$¾ñèÔ}‰ÊÈöíØ†r6ÓCʻۨ©°|/|!3Ä™н=ïÄqÐdÔ–‚·ß~÷¹)vRe:I F¹ ´,EÇ¡â_[cIIã[ò$êÕÒî‡(¼·ÍY&µŽ†*ʇB,‹±ÓxóqtT[Rô(7=³»uÂŽSrÞ}-´ÎnýÔQdÿ«¹÷Žðv%y4ë)ê©;Ô¾fÙ¡ÛÔMÀJÛsÀH­pèéÀt]³zR?oËEIg,S îT%åq²äS+?¯f2¹›¢…z €d=ÓîÄYÉYerG ÊÌu‡f¤x‹‘¦B µØÐç}êÈÂÎW+ÛAõV{Kúƒl"—\=˜L%<ÛmA•Žì@.èàBúdUôê`xSBv¬ª›½8#§OÛ‘ÈrŒ›CÂ~µé´šGŽo³n¸}MÚ‰;“lN‰ž«QWKÆ<øM‹á³o‡“&„ÇIÈ~ *`—ŠE´C!~ŒÎàbTD:k™ðtÙ–Sûù·™[¬ŒèJ•P‡×AØÝj† Po› —§¢)¹kn– Ût£BÜEÓ»æ%á^ÄÖÈP|ðh1ã^æ%yS»:.û)¿x³5©³DrpÛá%Ò2ï-ßVÁœ5LåìÝÕM¢gV·ÌÜ"jø}caÛ霠V¾¥µÈnóùv}ŽìN4/vEãí‡u cK.ìýÿ p¼ù(¬µÁâ…tµ Ôàvî:Ó˜yœ'õÁ–Èü6ƒI9žõè ä1StÀ[·z°Ó`eî%_Dùp‡â&˜æ žó:Âó쌼/ž¥€uÀ°p=/¦º(E‡P%)ÀÉ:…Ñ(2ÚÂZBÁà=’p®&EWuºZD5Ëá J"AÕ‹ p›Îò’ºæO6svâ¨Ë`fÙ8„!k¾ØÅ`£öæ‡â¢—œœ¨ì†º32£d¦S^ŒƒPà…K„¢ãÐSx¤2Õ›âS·½·±¨ÜÛû2h ¬Rû5l$åi"CáJ¶¶Ù´Q¼»ì›"¾ÒP½nJ¨A›‹’AÃWQ³1‚º³K Y"Ö©M¶Þ ÜÏx6™·’G•e:÷¼¬0Ü6å²ËêÎf Û[ß à[PSÕJè'&’}³'SQâ”0-Wš)OÔ<%¢‘4÷‡Þˆwñ.¨k¦Hnß<‰)êʵOk· Ä}iš®¢Ósõº´‘¨ÿÔP½tÏ‘Tk•¾±ËÈk„¶-õG /²cDÿàygRƒj—sЬ˜µúhjé»cFg9ÖôIJdŸú?PP r·fKlMŠ+û,* ²ãv«%^óØÔšÜèÜ)Àxi)½ílÆ^Jɱ²Fj¦`3š^˜Ì §­öÉꔨœ¡¼‰¥~+4È[­gS-5OÒŸå‰ê¬“L‰ëÙ“,²¼g¹T.{Íx* ^tn:-TEyؽ—]dêßì¸ò-7À#êìHtéµ­Ä+ÙcöX\‰AÅãì2LýÖ‰8 ‘k}⹫›Èc¼ä–'¥!›£Ï”zèÉÀš.Ô*­Ø#|‚:#Š+ßNžò—¹Ižšƒ‹ÊÆ–P'äЉ!JU·DmP¦ýg°“œpГâÔ`ÇthÜ~+y¸-Ïu Íñ.u'(¡Õ¯)ñTb›RØÄ LªNå¿¶GŸ²š"Ia°›Õ¯ÁÕ“ˆË2<%¢/¸§….ÊòUV×V6Õ+(#€}]êlØ òŠNK °&Hy¯n–Z’»ŠJ jp=Úû±ÇŠÝCñ3–Àœ^ñ,†¥Fò$uÕA8ŒLIKS£-èMK2fR’² ª§øá §#è½):VD`¿†® Ï‹âWë’+ÅæµÔ–‹‚leA[nkºÕ(›pJô;ÓŠÕQô¤ÿ ~MÛdä?<ëâíên¥æ¢ún^8“½*»'Ýž¹„äE¿\%¹^‰bk_I œu¨’Ë:¹®àÙFMö•]p÷ »)Þ].B0>ÒîÿEF€Ê‘_ØÕ(Âê”ôµ¸5홼KôˆO—îõ×v¯e Ó$‡†Ž¡êMÇ'íÑ>'É—4CòŒY¯=sŸRéü¤n FîöTèZÊ7õ-Ëj¡xÏ%.­ûÓ¢V^’ÖA¹fJÇOÕ û£_ƒ*Ðm÷Q†(µª,q Ô!\Q¤‚fI˜SŠ {eŽcÌkßÌ\~©QÚK–U_Ýw‹e=²:¡ÒÝ•™A¥¢ vTÿ¿ñ)ºÚˆ ÷ÕóIì.óP.ÛS5ª 盈@¦Ú €äY³3Uœ]\GQúže¨ŠrÊËEƒýxœË$N *U®Ô;îl`ž'¼ykŽ'¢–î©[ìdn'ë÷cÙÇd2—l¶¸5e%qlìÝCì8¹6(Ós({§·Ï³8êñ$Ql]d¨>²”Øš|œu#D¶‰LªéC:鎨 òÒŽÞW“b²ã›SÄŽuîÒM}|Æ{£°§@ŒÚ#$Š.S¡‘¥”ûgHNLå²zÄ¥"Fuô‡ê«l{$` ‰¯õ“ 1÷@®»Û³De¾)‹¹•cò¤uÇá@Š\“å+OWªÄQ­‚LáL…fØ9N°’TpŒ À©9OX(m_ !`ƒÂvÉŒ³ƒº"Ҫ䳹‡rÑ£ õ)”ñ­·uŒCfbÚ9ˆÖf„ë­Å"åÛ$=,ˆÔ¹×¾<²Ç†·$d‡!<ãFØŠGË`Š8)¤?ÐÝv½iËj=nžËE˜•ÑU»o³T¸‚r böc+Êa±±YųäÛcýëÓ™H¹ÁHi»¥ÔxuM¥«ˆ@5 Z<''0ƒÃÝfo²ò™ !Oò.wĦåÉ&³sØÓ9œJ×Z†hå9ÕäÓ”%RX¦TÏÓÆÒ¶ ¶êس„e©—#å‘“•ç§¾=`¾)*µ”O¯^V.ñ)æ×DáôáÖÜÖg[$ j0§?¹2òV”èÔDU ;Òó.?I¥{þ•§\%]lPÕ;UÕ‘©/B[‘˜ÈB”¼ØÍú20¨VÒVg‹Ú”ßg9G‡ÿ#Ûc³Ví?é³W4Å“„Í3¼4c)šºLNǯ!k‡[A9•¦ T,º|‚X®äöòPŠ˜*œ]xéàÐ%7°Ép)%QrÊoÞ\N[.š· pjv7A0u_™1WýÓø¾µRjM¥‰T6%ûí( —¬§Ô^ÏÓ]§r‚™j—$ÁΪ±(½O¶ôXo_Nøß;yb9Hšaù@l×å®ÐÚà¦ây,Ï©èÏ &Q€]NnHc¼”kÈyŠÃNºóe/Ê£cÕ)Pï¼b²E1HêèjšØ(%?Ý|ê­¸ôæª=e_Öâ|µîˆe§æƒ*†guا·.‡òåÉ£šß(¯^Š”ºó‹Yçż åÂ';)Þ‘#»ŸN¥Ê„iJH—ª0µØæ¸´ZÒ]Y‡ÔTQ&èõ(Þ.ñü}ù:UŽì·Æ6U§ìÓ Ã3 rrº@±6¢R…¤·‹X#ñÓ0s€é{UŽï!‰ør FzásYYÏhTü‹ÏIsצ’cÕʆò)4e¼,ßšc. e§«6ǧ@GQF¢SíT_žëAÊ;¸ç\Õ8ô‘C ªææ ¢£û’XØSñ¹å4TEïH7§íã]_Umx¼XVÍäZâÆûÉàvt–Œ0Eé´) ÆÔê’įÛÊŒ§´+»¢"+{c¨Ôq¥ X;þ þ5|ªÈ*•œJ ¹×Y•¥ï)ÛØ[¶(*އ¢ó&™+ÈKŒñÈJ˜Ó‡4g)"®a–½+Xþµ„Ž¥ÄǺg%AÅ’Ää\¡±#i °HÛŠ‹±§Æb/‚RdèšþuûvÙ¨Ö“€Æs—~—œÞ zµiíâ±ÅC¬œvPE·®îÝ“ìÆoçAƤ$]ÚðÀÛ 6Úê5*×ÍŸ^”S»ÎŽU+ƒÑìËñs‰Hôì”RñüìržYý¶Kh"íÛ>yÖHѰ-›êʲ9âö2p›7þpêec v¨—à@A¿I¡êS}j'ß[F‡F«ýщêmZd¸õu½u2—J¹È¿,‰½f±Póh Mr]2} œÏ²¦uXôÛݺñ´w)‘ O¹AM¨êdz=kjP¬Ší¥®ÂPŽíØr_yOô7Â8d;ÎðDO“`£þôT=¡fØêr˜C1ñKHÞŒ<È÷”ÜÐx_i¡óÃö™dhvãP}8IºJ‡6+O<›3R)àŠ48d>v“=šOqZQɇò1”>Õ…L] üýÙÈ_T4í¹KÑWÆ6™_zõé9qíÒÚd"dyX¥s6€ìüÆT3îö RÓ³š=ýßUŤrTY÷ñ[zTq–S¶k9è•b×¶„KøCÅoœáØÈÉâ^xò 7mÝ—HÑÑûRߢÇ><‰ oL!ˆLÏÀJ±ž…y&o»ë—lëíZ RÈ*»ÙžuMÚ*®Ò“@ð¡ØAWqËöt¿g~SƒõzYžëÇ.—WÕ ¥<“ÖèØpKaºË+çPø3h5¤Bøªwöå"Já ò÷ ÞŽ¹¥¬ïÌÝm(>ªó›Á) ¢(‘4©U«Vg"¶0Ûaù)˜6‰·ºÒr& Âìũ؅êÙ:¨– ÿ8æFùÖ/-ÙU'n:óC¦-SPáP& ,§dâ†M·¶ËÏU{q_ä>«ï ¾:ŽÕí³’½¡Š® Ûçõ(î}YA¨Îî1`¸l†ra߀-náÆ:èJç ÂŽj)ƒÙÊ¡ÿlrÍ*Uq˜ جrHý·CpæX7ä&YM#ÅT~¾."À¾H+C@ÇûlfñJMW¶5yûØ9ÓAéci¿M‰ÅIuž´~#óÀˆO]!‡‘ä¦É׺ô_˜·ó f‘E15)PØ;4OÅžª††ÄIÙjk9ÏÐ%>é}ìúBñSRœ£È… ©tJ«òQŒÄw6¥¾~Ä1™ƒöv­6Ÿìf¶Ñš99]f(øCFÒ 9ƒ†îžœ4åb©ò”VñåæòúóØø(ϧ¹dÏÇïi#Ë3/î“DþYXmãíUÛ¥œï/'KýNi@zH' RÜn©´‘{™5Öá¬NÌ ìÓ³Ôjš?lµÇ3=%Š XÅÔÕÎÅœ! )(}9\šó “äÉm— O¡z fªª!\PؾV3ðñ¬+«š´GlL€«U¤¡“Ö?Á3Ð ‹{vÚCY« rŒìôâr Dݱ( ‡B”»ª.×ìJiä-fÅJIàƒ.)Dªø“ä²A]~ d\Ç4<ëÛ€>4«P³šílÿYc–Ëá]¶5±¶r»‹ýʨ#ù€;ÌTÐÜ“æÓ>TÚ¥³Å¶©wªEÒßÔ/Uf*xÀ“`R)¹ýYn”lR;I26JÐâÓ¤ghªtQ«+#XÌSÆEþNéžk Æj¥F•/„­¤Ï–E(»êÊÑæ›¤i·®u C­/OMõøâÊúé\Qÿ)ñ@ˆ-z<Ö´qƒ—ÃîЀôTŽ;?A•&{<àÙ¦ÃùÛ¾Ä0°/” òX¾Ö¡»]29ßΓÀ¶ÃÛû:/íÎØèhW€0Kr̃åâ&ò„L÷ä1ŸÙiJŠŠ(Ù"Yr@áóµUp:AÂséKwó¬D‡úC;G«ýs™ÊÄ!ð¨7¤Ž²—}ÏŠÚŒ«¡ÇóŠß·³JÚ4Ü6ºš$9y݉ڳëÐD„»îܨH•ù^(´kðR}tKðä~:¶áA£B,"îQ¹$=Ê*~ ž!òH†_‡ªy«7yø¤B¸‚U±= šŽ.ªºi¥Cý¡yÇm_”õ©´§Œd–r_þkJQV-F‚xh-cËÕóÓ>Ñ[3êa­²Ô±ëø¬+8ƒ¨ â0öËNzpζ“&Êb•\Wù){tǯI3u³@ WªäU/nÕø4ÆY·$«ƒZ"ËY¡:5a‚„'ÈB'Ž%1Û(×·¦-³t]=Óc={êFÊ*Ûåé?qUX!r›GÃ'O÷&t¤‰"]GÏóÍøJ@9Áúºo’.½ŠTöé)D§R/j*„°¾È縯xÈXVçÝíøŸÒ#us ™%©œÑ×Qõ0Öô›Ì1vî”ÚÜ)Š­<Úvµ'e Šª_r‡QàÊ{o@Uf ‹±V:·„ðjÂVAÅ!@ñ±ô§PVYf‘™ÈŽAÀ°‘êÓ¡wчN²ˆ‡{§Øs*\ß5Ÿ±pàFÇKyÇØ¸?ZÌåK6G4)ŒdÓêðM¯úÙ^ù1+yÛ¤¡·Å†½µ'°aD'¸¯¯}[Í3OwUãIŽqijˆAFÑ| `@vØ-&uøP/‡ x§é •pQd×&F¶xêÚ ¥½O1ö¥H&p4*q©8Kr:iðݼ?šݵPÕæPX>œ>—NåÙ,±%Tç\¢#S@»€äÀM-ß'h,ϧì‡ëyÝG3Ŷ|@6Ur¸^äUŠÚ¼°y¸I¹Ù"gUM»¦q:ÛÐO¹V›žt?õ˜ƒ®Ã©ƒ:Ò nRÛ­\~úÚ)U·˜N\JÎ3±êˆ¸r® HQ_¶¬Û\ǘv,ûŒžÎžPr´\ÔvÐMÌ“™6úáéœç0sÙ•;™×¥Úsÿø&+|£°,S»{½3¦:îÔ1 *ÇKõg½Jbµ{²à#-|oŵ³Îš^Õ­ vÓ#ë•"ôvj‚úhX¨±À´¶»li Àƒp´\µÞý|lX^z0‘sdzë ør\µ ÁR™•ÙuG‰º.ôC5›e•ìä­U ÉcËC\ó¨˜éìufçª Î›±£ øDMCõ|ÙB Üoew‹+çÈ—¦µ/­Ã¶Cóž§¹ÏSê ¥3“²i…óU؉vL- cb¾ödy^G+ï%ÆP i‰iªaU›Rº[ÚIƒÜí*gEøbK…2bŠé@.V{`ÓÝ,¯¨ªlgòÔ9ô`Lä/Hw~5\;Á™âM`ÏS6ì\Ò²ì^Ü-+ÃûR=lÚ«Ë(‚©›Gú‹,ÕC1«b}¬á”VfAg&-ƒ B®Dý<Ùœ6[Iš°Ÿ¢:Ýͪy¨7ú£©°R2‘ºSµ©:Û Ð\³•jèÚQu&h´úùV¥L‘TÏœ±sèuØÕ‹D>e·ä¥Ù{ÙÕ׿WǤޣdÚé´³²,ZáêÜÁ³³Û§4â!OP˜-™ºkj®çDÂ¥Æìh:•éàA€8ä¼ÏâòŸŽÉ·Ô+u÷Ý«¶Ìu/£¶¿%ª\{uJØv&ÏÉ%<²¡XñÇ$ý z5¾ÙûW"¼ê7ŦVÿZ×"ž¹X äì)#[Q… ÑÁ­¡¢Í$+¤À:zϨZ-ÛüÒ ‡µªñOM‡Í5w—AàžÏû¼ÕJ×P=ŸD娖–1»z¼i7ƒoî)òPo›wz4ìËÚ$Ù.Œq­ÖÎnävÞ5ïc ‹I«_Àéå¢TÐðxÄ/†=eÂw%Qø:ľik}=±µ¯¯lVdAÝn ¨Ñùx¨) PsÌj^ 0ŽKOŸÄʇ__CÖË{\¸«®¦øÊñIbÒö•ƒ†˜¶UG 4uõdžHªC•}LäM›mR¾•×IÔº•ÝWAÇéžiæ­òNèTº‹jA)IjÈl1UÒýÐ&š~Œb e­«vOþ§–2͆®fM‹cž£z2T>Ç0“-ÒÔÓÖ<ݯL”ŒÉ*]BɱY'åÛ)cqŒ¦<Âû¥HBá‰Ç.cô,Ë]tÚ¢þÎ2‘ 7õ(ë"ßO¶Î©¶–ÁváÜ7MدÉN l»¾_ íK 6ã½'ZšÍ'» &¬ïñ™hI‚®·B„ÔꑌµÂ¬ÔœuWý¦=7I÷±î'ŠR¢ii~ǵÕI8T­ÑïG™è»T ‘ŸìÐ(Æ+Z)ȬöÝÕäLòQY åQ(úV#«ÛL%¯Ì¼•®†ƒgO|yK "諤¤}ù8á«Ë\R$y×]TC} ë6¤‹÷îô/÷œÐ»³œ»ù(=ê"4IQ·6}%@9ÈMåцÀ_’7VáPòTRBb¥*Ìe-œ4í"Øj57LTåTîÉá[e²ô#J¶QU¥©s™™`€F2¯Õ\òÏÂ¥»è—'Z’g(‡îÝ|¶~Dd± À¨RP/•·){åÐ8,(oß$_ š=Ÿ1pu»ÍËóРÔèÁM$Êp‰}E¦óðØ@® vˆ:‡p³v?ÅõÓÇ,Q‚Í0TþW`•`1l5òœƒs älBÅvfÕ†CøÌx² œ0¢¼ž[S¹a*Âíi¶Û“§ÂÞj†q×ù ]ؽ'À®‰"\|ÎuoN7@yÚm;‹’»j?ˆ¢…½ÄÞײ Ìí`¹RŒ‹'•mð|2„© f´9I‰¯Ã]_â`¯¢¡AgF0¶ šÙâÁ^Nñ©kÉLû­»ô®ÐÚûÕK¡$0¦”Òþ¥ß½– ÓBr»„„·µeÜ7µèŠ¢…ü#‹bÎd3㊭éEš£X$´Ù›(VÞ;Y}ˆPÈÍR q¿«böv H]Y‹ãÐ¤Ž›–ùFÊUœ ²»ñ†ëçS¶èÃkÿVø¿«ój“ó8nïŠRäÕ?%ä;J.s7£>ñõÙ¡—°—$aÏ-»’°Ý┳R¹*ê¬îq ±FõqgzØ+¹lëìἃR¡wY´"Ï@”D|¸ä¾ÿ›ÿóÿ¾Áÿ3Þàëo_ß|øøþ»7þeûÇ×>¾ÿðúoo±ýÙŸ=ï¾™ïß}|á¿ö×_¾}ç‹¿z?ïÿS ÛŸý7ÿÙ¾yÿϯþø/ãÏÂÿé…Øü³vþìß~üöõóŸü—×?¼}ÿøñáõÍG~v¿ùÈ/þüý»—ÿøëo_bz‰ç_ÅòW!¼87ôÇ_|ÿá¯^î7¿yûÍËÏöòß¿{ýaû³ñþûßxûË_yiü¯/þõxQ#å/ÖŸ¿´ï^?¼ýúÍ»—Ÿ¿ùø«×ïøÄ¯ß|ûòï¿~ûúñ÷òþßþêãÇïÿꫯ~ûÛßþìÍw?üìý‡_þwÿá/^~ûöã¯^þóë¯~óúÍ˺-ûæ»×¿Ú϶?{ùÇ_½ýáÓ?üÃû_|ü훯/üàÛ·_¿¾û?ùõ»o^?¼ðé/ÿð×óòwß¿¾ûôËóéþâåÇ›óz»ÿÚ7zûnýñ›¯¿~ÿÝ÷oÞýþí»_¾üâí·¯/7ÿæg÷ñ/^Þ¼ûÆ_|óíïùû7¿yóöÛ7ÿÌ/¬Kó2ÛzyÃ7üñûýðõ‡·ßüág?¼ýÖïø•oóé™÷ß}÷úîã›×w¿ýðú5÷ý÷_ýøpÿåÝûß¾ûÃ_ýâí»o~á×øæ×ßõOïÞþë¯_ÿúþñwøÑöùg¿|ýøb9XÎúòú¯/¯¿ûúW_ùÿøûï_×?FÌwø·?|ÿþû—_ð5\†¯üÇö‡Þüæõåã‡_¿þÛ¾ü‡?}EQöòÍÛ¯?¾ü³‹uûüîüøõŸ^óü?¼ýÝËÿX~ñ%ø¿?ý·ÿ•öÍûwßþþó¯¯GüÇïúÓO{ÿ»—?üe>_þrÏáE¥ôªÙ—ûÓ7øû7o¼€/þö¯ßýâýËõé:¹A¼ÖßüøðÿüÇñ^þô½þö=KöõåÏ?¯ðÿ%äð5ÿ'þ_^çëOþ–·ïòºÂÿýÍ_ûíú÷?ÿô ÿ»óÝÛoÿão°dý‘åÿó÷l‚wÿþWÿÇ×O{¶¿ÿö›ÿoýñ › ½ûå·?ÝÆ·?Ì·¿{ýæïß~üúWŸÖɧŸÿ“;ìÛ·ï^ÿþýo)/ 0ýwÿƶúú_ˆ?°×?½²kþô#Ÿw_¿ÿÆíÎ{yóáÛßoÿ¤¾|õ__?¼ÿüƒëå+çO¯¹ _}üíçgA}õñW^¿ø ¿Áû_øü¿ÃÛß|ñ˶úé5ûÃëo¾¸VîäWŸžòO?áRß½ýâBNþ¨}~ÅôϯøåñùßéþüŠ/ôüôªðuæçW|™ÿþó+¾Èÿðùßâ¯?¿âóþæó+>ïçŸ_ñyûùŸ÷w?½ª|Þß~Å'üçϯø„øüŠ›ôŸ_ñmÿéó+>ý¿üôêâÓß|~ŧÿóçW|úןWëû«o¾xÉ÷}ýâ¥Oî‹—\Ï/¿xÉýê‹—\Ñë4pIÿÛ/¹¦ùâ%õí/¹ªï>¿$X~õî‹—\Õû/^rUßñ’ËøðÅK×Î/¹Œ_¼ä2~ýÅK.ã7_¼ä2~ûÅÎã2~÷ÅK.ã÷_¼ä2þëzù'Ûÿë_øÀn\šØðÇ×+Õ¾¾þîõëí¾î“òH•ÃCýÁzô1u=ñt äÑøõ¾ÓT)WÝ) K±kßLy¯mh‘eHù7ôÒ åPAÉ „póׇ²?r[Ô—¦ë|ÚP”_ºÒæ$ÔtŽhäyYÜQùS€µ›¢^ªÚâ°õC?zµ.‰ YͶS¶­öòª¿Æ%gr9Å"‡½ý0RÕ—½QfMɪÏUߦ5EÖê¹hRRÛT®(PýñO:®(àO_csV#Sc9'“×AÐYy9AÝiçœíNj7Ï›jþÒùQvx»(íUÒyTÔL-+1ñ„¤×ÛugÏÚȇⰮݻÖ$°+÷²L*SW)¬A勚~·›pSPj¡“úR˽ù·¾9ÝÐÕ";NÀÕøËùIRås ö6g¢†Êj¨ת‡jµ*H§0Xs<"žŠ5ÉÉ*~>\¿†Ô»º0É.©Éö|ò¸ž¦§#µà–Ï+I‚ãûêóyÖÀ]¤p ÎñïR´ªÔ—Ѓƒýèu;®½,3Å;ïyÇ%Ü)m®«µ^¶ÊŸ8n5ûyNCÍ‚@å|lóÊzÛ{x›4»=Ü»‘9–Øá°Ï J¨q¸;zvZü:x¹íu5n\ˆ;ª„wR$êV“ÉÖuw2DÁE…W(à\R7+l¤´),ëþ>Ó)ÍÈQ.ü˜ÃŽo»²\yô¹gï£*]A”gÝ:7“ Ãâ ,ôÍ~ÅÔoçQ%ÃyøɯaÊgJÞç¢Ú! cõ¶Ž%¿_ºnÐăàtÊXGÀ‹"Á @)²ö«,;Ô2–˜a:Ÿ[ÖF¡êOƒ8•*ejM©ïCU[‚å²ÙøþZ2έÂM±e±{ÙsÑ 2˜œöx‘2ü£¨¹ =ÛQ»÷¡ Ч¸Ç£lTë]î9#7Gq³Â5a9¸%Y1?ÉápK™tšºÞeÏ\]mmA–±yÕTmOšÄ´CU‹åË«±ù¸§-–;«ëª˜rö»œO94­ÙHâl{‚_¯Ir%ŠE=ùØØQí®¡N š¿i`¤Ä¤­7~™§NìRöo„™Uµ…À\£5’aN{@z!1í•Ϫx3¡Se‡}lO¾U­h¥T¡¾¢ F甃¶wíÇâñdLWí—»•¤{(~“UÙã»sKȽãØ5-[:MíÕE­ãê.©a÷WN•–Aö17;Ò†õBc: ®þ©Ý-`#›+·;èkÈ6"G(FI›,F¢êF ½Á/ bnM9êÒëNVèÞdÏdî†[›¸$’=|9Œ~ˆÇÆÊu¹(;Kd˜JuÕ¬£¶ƒìÊ©ZtÐz2ƒ“›®§à\œî–¾±qT O·zì/ ù•bjŽš%í §9šUH nÓn;‹Ñ9öÌ‘·êÌi´¡uêH8²£ŠqH hQßCÛ9)ÝÇÙœ'0œ=ø°c£9ò:75Ù$7+êªf YHjtàqƒî2¾ù~êTEª'h‡sÔ©º¢Úc$î/‰Â½r@œƒ/¬H©ýYÖ7Á’•¢Éwì<È´@¿S¦½nÄ[› änòߪ<5*ÄÉ¢ ‰rÏL?ë‰êCOɾZH&9Ð%ÆM)UJ‰æt–&„ZiÖ©¾….ÜêÝÙ®¸?Ë/Y{,Ytøÿa36½Í5žévtu¤£~Èj4žÒ4NÖ°²P$1;åç´gy1\æÕHG±_mEͲw¹4wUøoÎý”a"É•ø”¦É¼*Tõ8ˆwõ/–<«óV·] ¦\Ìà$AJ§_¾$¯ñL¾$£Eòuß³r“ï'+üÒÞ-þ ±@Q8}@A›-Ý]QÜ’úvºe½±<ëzÏzu8ÃÄËèÖ:¥í²mLˆQ"ÌN6%ÔõgÓ§ýpd‚ø•«¬Q™]¡ðÇû\РUÖ’^›U©» >9¥ak~2SSs~Éwwë%åÜ-O‘¹\ž‹„„C…(Vuço÷Ví|âÊvH}¶{v), J?†``ÃêP‘*í6l‰šÕ™0½–ÓºFØò§ôh(ÎÙcùUÝÍÒ—d?÷±´cØZ$±¦ž4¡b•¢Äúv)]Ôç\´U¶!‘P{=sx°A }MÇY‚DPŸSKƒØÏ]8y2×”„6U±©ßµ0lŽ 'M›$³²@Y|÷b¥?é^ÂX§”+rÅ”1Êc”¼Òý3‘ΖóŠ,8jÈ6F_OÖ‹Ná0ꬋº„Ò8!ØÔ;I}<þªXò} ’“röª÷üA̪RǨ‡¥±¶®%÷cl\87Si ­Í¹g’A)þÒYó¸µhëèÊ–žiLÒf]]´âAÎ%½6<ÏŠ›£ùœå:¤¼'¶©ÜLr—¡Ú‰ežœ89žM'y°ëj.•”äÝÐó3Hf*ësç"CFVQé:güž%çþˆ÷ ±/«!qsÈ-*§qœë²»¦®a¿×(þ¦DˆÑ€‡³ƒ$¥†åÞåã9¦N¨>õq=FyœNvtjzùºÛ¾]XŒugU‡äÃ¡Û €¬æ3+&Ih¬ÄÊÙª½²¤Ý,·¨' VykªâÜî-øá€ˆÊû·®!T:ºNKt„ÊÇÜŽ#轪ý‹\ÅNò,«HÅ";9åÞÖùÒ<v‡)’OЩu¹†·I%à]*ü£4‘øqò‡zœZ›+ÎKŸý^ü~ç‚Pé»úl>lRqجÔ|‹_÷ 6É®¾s厽—…ÖE”NÊYšÖLK¼š2›·8Ušÿ iL¾?[n!†º,çÎt0t±9›\k4ÅÒX íÅõF•ÞTcë6“9–õZÔ5c³¶Zjáª*DQx‚¥½©Äx§w@á”f*;͑ڇè¦Îª*=’°ˆű*LÙß1lãYƒð—ñÑú*Ž;•MñNPò+ÔÍ#”ÕGxTJ£Ji¼×Å~ÞÒÀòÓãã»èu®Oý°î3­r1 l퇪O—þöKéK}Þ-S<°bõÈ$Dù9EËWý‘nŸ£¡AbŸ¨ ¥ã=Cf‘LŸƒê}Ξ±y\°ÇÒ…b/j{R@PS_A`rbO C“]n­Âcb3±I[)Ëš«ë‹ èrÌEA%v¬ê¹zywCb_†= ÎÍá¤iÞ²l«¨ÒxYsžšj“ylBI°ßahxT…C€ÇMAü€Ðåµ(}ObÁJ6Ý¡ökqÐ¸êøšKúõt!à鑵nÀ;i|‘Öl³³É¤"õ: þi ŠˆÈwYhÎûCBPaK%ªÔEa½§Ýž¤\ª*:lï]ÑGǽ³¯ÀèòÎØ&¼¨—ŸÉº*îÕيùµM‰hE» "”_ÊÅ"Œ]*ó¼Þow¸åÜCLü{Œ!†˜ÉB:©/ÎâØaPdBëJu†=U9½ÈZ¤Æ_k¬emLítní¬·@ù/ЭÁáUUôžóZ]ë(£òüI0u«S_Š•ìqµ»CT•ˆ4]£Šâ©Œ‰ÚjÙk§É3kÅrÛõú×)lå—êíUäìnü&_!²¿n•cy€Qu–¨U!©":$è˜IcÄ¥§+𴏍~¥MŒE>Hezв.½ÊxÆRÉu…µ´¹+©ÕJât\U:h£,– y Ÿ¥©@êï[:-9@'+r׸‹?uòÇôËÛ=u…` ÚK*…%NøõkÔÖêÍ ¼ØÜÃESÕU‹—¼§jm^¶ÜÛ}>Ëç×ÔY&¡i= ¶$¯,?õGíæ <_owä‡í`Y⮊.ç#–¹ØÃ*¾EžŒæ¨JIÙܧÄÒ»\_çBO*#õœ9‘M= wº9 =U‰ê&¢µ¥»NÖñ©L›Iß[žý36Í.#¨ÒjŒØNÕ«ª¦ŠtÒkS“#+´¿7°Iuëæ=Ð:Áü¶#´fd z¶u##üúˆŽÿOiŸSã3 (Ù•å°ñtÈÍ©qßšÞ~úò^°ã‘Ú+üÕIàò´QPŸØR‚Óiò®7ë­¡(ëþr”X®Ù©éåTT‘’¡I£fÖCIÉC9 2lX²åº‡Üüaõœ¯.àð¯.€3·Í*—{W¼&*ÍüŽ÷±4ÂV¶S|(Ộˡ&ÌÜŸçC;ËK<Ø"ì ý¯u\¹§M|8F¦¦=—#¹“î*- Ž*ÑŸŒ’žj)¾›t[–\vÿK¢Ž‡¥øÃ-Ð âò{œ*Ž&8GäašÆNÀÝ¥ôËìG¡fÙüOekƧv`­5yÊ6 ù^;ÅŽ’hQyðOecê®Mèâ§ýr3-ÅŸé¡ Æ>Ÿ…{É_?UÈ”ÃÏr¿÷+6¯úô̈b@;(àö>†RjvpUšÑÀ&GV­ü¼ImY—šhu¤ÚØC óPJz;/½Wtf¹È'¤l°ÖÄ‹š‹t{&Ëæ=Ùóe£Þ‚‘#»jVdIú?ìTíÉ]CõáJÇC¬]Äɧ)‡Å¾áÊ´N%¦ïË¡õ:‰‰´âY~ ÛÕÄöf³‘“ëGŸcŒ–‡S£cߤèK9Ö%J´(Öw/;DI¡¤X W§õéx(€Agpa¦ýQ6σúx*ýyu¹ˆûõ{¶ëèFzb@†$¼œJ¢ É¡] ÀÍÊÒ"è|]Í) K• z²Ž;dUÀ¹ê¦aÍQ9‘¢÷ñY½‰Ž$9l¡¡†î«1kéìy J@1Ìè ^UÖ»%hò“"üA«gÕhš~«!(›¹&ú/ /û”e'T9xÄ/Rj°u&_A]Ež—ú”M©–‹FQ¦Áxš×T›«…A%ñd4d×À25ÀP¬´¬éå;t«kÞJŠyéæ`–G3í¤hèïU©Z|{øð°P=\R×ÞÉÌ™ÔN Û–j‡+[«ÈÈ>´¬´Ý2å¦,®±¤”®(Köæmü‰u‚(ª9ii+ªÜÁÍ jô²‰;Ics¿F %sjŠI±*«;Cm0 jI÷55µ·€Mžh—K’8…@húg§jAÚZ¬®uxˆ6Kµô… 9±äÞÏ¥çéá^5Úz¼ùDåS+Ló”ã›™ïHµœD††ê¤¢³ææúu7j¸%F¸Úì]Èyª¤¶N´˜\Fú•*>¤ °–(¦ß4Îi“㲂ð,“yoö‹Î‡`¯”*T7Ò[ýw7ît©{®*ȸZ¼EN‹%Šb¢³²àT L²aÒJEü°Ž0)k|†êÏü€º$­H !¦H[ÙF’8íYǽëÙþ ð‹OºåÁðGb¥j‰ÉÑÌ{ã&s¯ª]ëþœ«zZáPѬåÜÒ](Æ@ûA ËôÑÑ ›xc +yd6I mð©NØ{ÅWo&¹¿ê;ÔvP¿Ó…ìõ¨(°Òmj9ŒL¦¥æàîdÛÁ@…ºx0&â©wðþ!ÒI{!¦Fa&d§n¼û=Óô¤¥ÊN¶5©À©gwZQ!SÊQ݉T3Y¦áÚ«8(Ë{n :Û8d*RìÐ9‡Í.žíd`ðyøŽˆš©Qõ”T¢×¡­ÃÉ4ía”YPj¸ï: >P+’ æE0ªÎÕ[UA(c—¹ Äû jÞšÍq'{Þi£@R\ÞGH nªB_Ûy?ÙÝvˆ~§ŠI¢ È5ÐzöëRåW%œ¢“Ê qé]*õUQËäYv焵Ý☲#çäðXX©5@)Û¬Yì(ÛIËâ\§G©¢ìn AU*ÖðŒg?M„RÝÌ –•fÓTªà©:{MËRVŸ5—vYU#Y5ëè<ö|ÔífY°Ç¸<©^t£ÒhrºJqšÚ†Msdpl_~ÇPÄâ#—¦¶y"ZYØaò!ÙãS@ìã„Í:õœlGn‚éxØ®§Cð²]Š•mߨ¾ ñkÁ‡BwÖÑ©”üH: :•EÀ¢ˆg‡DÏ7xìóÞ£•hy6òËP–¨S€@­=Oe¹-mêß'7³ÙíZgf4J0#\Q[f…v˜¬ÂT°Qé lFÞ «)Èó$hS%{ vE› UËxb¹Ò­‹Hë×Rj4WG½GœTè<·ÛÙ¨Õܹ™”&mDçšu¸# H2j‘»Cë×zóEÙû²ñÖÌç¶Å)åY8¬)îEù¦§Ú²\9‰à쥤Ý$ë-K¹ª©ž|÷hXIú5@c9>òý¬ª–¿ºlDÕ«¡&¹:]›5Í)ŠÚöêN°Éòbë«V¯-ñE÷®áãN™w²,†Ù%«JÒÊ:œ„½¨uôù ŒÜyZ^Þ‰•èù¡Í+-~¤GhHÁ¢ÔË^v,%Å™<Ð $Jý‹°žU–ßìUÜÄS-ݺOɲÇíDó)Þ`…j£*ýOWÍq,Y_nàgJáuç’Ö8:+;æ©Ó=Énz©õKxP¤'—ÞtŠõTÊíìǢʸN¤!Ǻ2؉Zúññ¶»öÉÛŸš–ÃGu¤T>(àpw˜U¡Í¶"«§¬aC[Ç‘½øÃ„¯/úÙöµqr „u£´Zo.ið{´V»=Î(åöðÛþÒ¥I‡]ÐÐC!ŸšÊWO¢ìÓézœMYzí*›ÁlàK¥ëää¡èEbUÂÆ9~rŸòE$ÛƒJec·ŠÀ1äƒAµHbœd¶3tR[QdµYMëø»üKgÕÜÖ)kUXgÜžƒÓwÛÙƒ*]>}r­}êB\r°î—S­q?,¦|3¶ëÒ”‹ —U5±ŽïwÚlÖÓ;vߪGÞº‹ï*ö/a…%áõ22°þ®zhï¬ò³r!úѤe ¯ÚNAD{ŒR©ãaWbÓn/i½ XmJëʸºu³fXâyéó5Çu¯i]j¯êÖT¸œ›ªÓö‚¥øJÍ$”y)šÑSJ•=­ƒ¦>»Vá EZÒàåun}¯ò)‡üAÛ·'ÐXŠÉ¡lfΪ P‡J”âát’ !Z}¼Ù…&ÏvÉ`ì®Ú{ƒSeË@—zZ+w(«lØ)!<ô¾®q.#5®`Yéz0¡lŸÂýš>rwUH¥“š®µîçTPªž (>ikšuÜUgÔøo46e"ðß:è@8O´HÐ$yH®œ4YW÷‡Ÿl"3ŠWyTß Ý ÚŠ'íË i%eJE] …cæÍ¶“SÔalj°žÀNÐT~Ñw]ïp1Ü!O±±/ˆbI^2‹ê¦nö_iÓá!H— ßJzy”—‘5Õ>R ¼ÐÕŽ‹+ÒŠLÏiÚV."v±uÛ?ÉhîehYsìì4O*!¯~?±‡Kâ]hF7ê6EÑÏ’yjl5ÏMTêµJáí¬×¸@µn¦C_Qk²m?¥®Ÿc{´ÑPåKqÓƒ"ß´§t„T¬Ù`u÷–¸ѬS´s’×O+Ûè:n/ïSkîùŠz7íÚª`–µ¹—\%M¥ÎGŸÒ¬ð'mWðÈÊ5]Cíòãa}NMTA5~L¨Áº+Ì=Tû}%_ÞWO„ôÅÖ½%yüyj ºÚäÞNrm #.Å.Jm‘Ù®Ö2»Ž ¬öãÒYî³m6¥ ¤à"ž{4]Ø•ÀçS!¥ª,ÚyH£HÑÖ<DH=¤Á·c)Ô+ûD ÿÂÒ/.°ÃQ£ø,ÅekøKm¬rë z<Ê?d×K¤¬*/.­7´×whØÝÙú]$ÉAÍ«ÉbŵÁu _y€ƒ`4¹‘š©å¨M$ˆ¹j0æ ´æu§2°‹°µ9šoÑÒ—’À (ÜËõëIE¤ïñèIrÐ('VlUC‡Å«$ë¦%FâëïJ-9x¶àÑÛu®¦'÷&ëã5{Øwî;5Úc@‰c«ãÖÓÊ“OÊ ü®ìKe(Ú¸ò  Ûø&\øôN›_„£*©ëTÏ)¬-krû[”5Ô§/ œÃçR¸i^ƒû&¬ŠW­6Ê2¶Ûözê#Ýå‘«Êi“SE`þÀEAæ pdåÿ+d3Y*ñ¼Èú‡«XU«FÚP_l¢ë4±B|‹‡§«Xª¼=¾³QrÓU¸SFŽÙTT$iÒÑíÞx®s±@UͶÎ}˨±mÈ%­@v¹ôx ÀÉ.âý’eo®Ò’œ_0¦§prèúÅSãhlÒØWÛµøVºhèñìØ¦èÙá ™Aã—e¬Ô[¼z‘ÉšI ʽڟö ½) ë^y-æ}‰ðieÜFXSÀ-¹øªgEj»«ªwZ„\ÊøO Ž—çEç®Ú·ø¹{$zj“Ô£àiÊøùìïM×XâsèÔ§u{ZÌ=A§ù¶œ|Cý/í¥5·ã©JMàv¦ PÙG—Ѫ2ïz G%Â:<šJž/µ])€÷ä¶Õ >Æ¢$¤&—Ï£»o—ì¼[äˆãçX’«,‚IÁYí-SÕÄåXnUi ÜüÂm þ°æ¦ häbò¾hI‰î¦k3;m“Pºâ8|®4‰l}Áb»äAhT¼¦Û”ƒŠÏê<Í(áÈ«íˆÞÆIbQI•´Lzî:k¯F$¾,îMUÁR2 ÷ÕqQÞ7SW«ëxl–Ùà¦\žòñ8’Ù4Æ@Xãìbÿ#ŠmcP¶î¸ùoJz®TTœ¥sÀ€ÖÑ‹"ÔÖù –t0P9ý\˜‡^ت.³oN?ݸ¤ˆe Ø-|ŽæC’]Zà-™wu%Õ?wW·lw,Û—ëf3 _ÈfíÈJ~^Š)ë\¦ã¬;ßi U9•1þ¤¨®8ÈÁ"{ôêH³ë÷{çƒÅ`@bø¥Ô5¹Åü@ ; W‰ž×M«\¸M[’äœ*Œ*$¬úÎse €H¡«Ñ‡Sq°˜Ãƒ¹šºªÅÔ\ÊT äÎãžæÔR­ÊxôñPc†(¦÷.…Œš/!{:œ•溠ÔM×^%€Nšûxþ 6p®Èá;Ùæàm~¡´`‡IlYœud?múöÜ„&¶ÈÔþ—È{ºfó/"È©LåxªÀÝB€kT¢ZNz OÖ·Þ‹upeHÍ ÊY?jg_«oX©¦÷@Ô„ñÛ1qï1)ºôÊ{PÕÓ#¡œl­™µdš©—¯{ͧòö>—é$¹ˆ‡º7þl[îK­W‚Ùõäù’‹”`ŠÀδ·×]vI!"Oû%ww{õTàÆžÈLFå±Pa$çßT!O·^ó?:÷H<—“l—,ÐͪÒ…[a4Û©>Yâ·×°6|繪ÎÚ–-Ò¨IœîéµPÀ¤jGì¹q”ìFà×ã\Û;îYÀHÆW,ÞOòÏc„mWfr,I«jYvxhE:›…ÕêøëÒ"•Ø€ëlÀu4dpÀ>ŠÉNؼTw\$‘ktÕ”cò%¥[*Óe€]E».Ö!òy¶ZW'9W©@Žëõuü€’)„NM^¢Ç§ch,]y»%J5ô¹EƒNU‹ tvaõx˜(Q7Ãz-#`ÉÔ—Û–®’1žâŒLïŠõøßÓ}î{µOO­‚§ŒCSG)…5}Òª.Q.Kœð¬]jîý¥âÖuhž»šøXŽÔšƒêçõ¼·‚,íu§¡´§&ºC£ÍÏÕì¤~š­ÎìÌÃMLò‘ó7¼³¨ 5T ùŠÍWÚ.î(©ó™¶ÙoÒšçAkßÉ4]ØŸÝ{Ú(Ê/åärgÕ•ù°YeL…ªMà£#©Ju¾—ôqbDzÃÝ‹&"A_´¾–Ï—ï«mæÆ^ÚY‘'PÄýÁ{ ûI ]µo‹€}+WMâÔeœ”"ƒ\™6þ«N‚")”ÂIF•ƒÞ×´îȃn†æ‡šÊ20U­G ›¾x‹ z ˆ/áCÑ\*Ã¥ý—]¹yùCs?Až— í«XÈ,“ív l¸*¿¸èWDÏPÁÉ2Ÿ5¾ Y*&êJyôT+T"2b7ŽAyî¸ H‚8t±cº§YÇl´&—PkVSWjísÛ¿wM‚®vì Τ#µR «º¼e½ù Û{û)•N‹Y1]/“›û+qËÆ5 H‚ýV zêì}É)Ú³‘Kaë2òZ%zœ Ö°XR¾›Ù ZS2k¼°‡A¥±{Ž4<¶g-”å¢HŸ¾ÖLDÚ0íàÈìŒW5=Q;@•:Õ~ŽÆ‘@³"p{ò@DóéH®nlÉá$[Ò7!JÈ£Œ&¥¤Ž55b³=ïMm¶aæ5% µ¤!g¨2 ›X¿º 4ŽÅãÕÖáŒ%¹«J%RœÃ«‡–BŠ ¸ \ 6ݸ‘Ô^J€«-¡©+=zšã]Tp¤`»äš<€±—å$ëlhýBŽ’nìßÚÆêCw·Â’¾5ã©`Þ6*?£ç›@¼Ç®´®ÎzxHdg.‡(Ãv|²d»ArMPUØÇ:I^Ž(lv‡ ½oW&,á)‰v{Êu›Ät=Ûµía§Û›•’‡]솹²Ë6;F6æN𳃪MéÁ= ò\]Ñk=%Æi™G‰–äX‚®áä%uˆ÷‡ÿÑÅ×4ÌcÇvxÀgŠVg` a'Ðÿ$H5…Û³Dp#øØåÈíS¿ ÑXÔ }U ©Î¹E6›š1„}Lª‡=[½%ªû2;ç±² 0G+eÅ®g 7iÕ0ʆpº~òMƒaíp!])@Ð+å)‘u]ù&†²HbÓN=Vd,Vá¢@‚¡C‰,€~óÖlÔûêKounÞ*%?wêlØ´¹ÓùÈ©lrÐòÂÒí²j|†PÌ€%Œ3_wš÷753_V÷–¦µRÝ/‰Ä~¼¤®Û!qÀÔuéÛ{(&ÂæY2«”þž>… ÀPÎÝMx ;§TØ)@UÞ¡Ù¡™Ws›ä täº)­@ŠÍÅÅ“¼-*´u;ê©iÞ©·,Kêh§:-Ù®&©¤#vq¶‰T”P „é"¾@ÒŽJ®ª —œÔÞq†}Ž ô¤ƒ&È<*9ujNYæ4ìknZ=Â5»hâÄ&XžPCwÂn–÷TWPŽÎ|p›#{¾ÖïÁ.±¯±Æäž½¹¾(šYë¬ëÙ¢NÌr8DÒ —ê Ü^ßäºB;—;ÀÁqAˆ"⬞L)±² 5Š'€b™ÂYš”¢à(·ÊßÓL5®cõ‚coeV)˜yGÙÛi1ùi"`ZUÒ¡´èéꮯS$† úC²¬>Ö@ÒѾèQ¶ï«}¯lb9üMUr6zësÙ+ßrVxéåÄ<<ºíd>;oQãkÅÜÅÓ©s]§®“NO;A>Ä¡·ªJ›ŸÎPßkˆ¼íÊ6Ÿ÷–(;Þ&ÔSkÍïó6ü“^؈Ýcˆ¢mŠ‹G?>gè©oŸz™•ì\Y¯ì×R'}.Hžw”ò{³*`‹ì¶K. ºpÈÅÛJð é–Î-‹­:³XY±Ò-måW×Ö§J‚› ôG,à{“Àz–Û½LIý+S¥ÕgòV?p‹@µn©1 Å…ï)‘D«¸ià²]åéQyãÒH§±¦ßu«ØíÂYWŒB×êàáU`ž^wÜ7-8´¹—jËîX,×ló°€w«^Óž(i8¢†ó|â$}M ÇŒj2ëN¥âau‚2Ø€GÐe“t:m)=\'…=í±ky,'6éƒÌýv˜KõöÍ)v [e1žIi­ë/.OL‡Xgq•½œ *ÀèÕíiQƒª¢Ã½iEI…™ÔN'§S¯GÎ*… ˆQ‡0>q*co7ýp¨çY‡³|Õ³nIM~ÀÉ)rVë.ÚÌ£øèT¾ÉÔ1‚MxdYçs’¾¡‡­«Væ@dx²ó-}¨£6\I.åOæ@ÖK=G=y'ÿ—òÒ&.[¸=?¿¢:n{É ©Râ9õ¥$H_à -¦Sá°ÑsZaÞ¹Ù*«ò»vb3‹T¦û ¡x¡ž––n:6MbL¢Cm’é¸Ë›~Gƒè |»”N²=zñ¬›W1â>ÈÞ˜OšK¦€È̺áŒåŽÆo• %!•eP ü»Ÿ\ðrÞs™°“Ô`e{ŠW‰ôŸFP§Óêü°‡Û©Sì}îɱæE”ÛWŸlòæ`kþKÐè]ÏW'ä’ôi[ü®PË–dg;[Ü1ƒÒ|ö-œs±HûNúź²”(¢¿Î*³ÃØDšøN4º¯‹‚›Ù”ìª÷±òº–Gg?CËÅ'éõêgP¦èG½¼K:l×±B«ÁÄN([Ÿì~v\†ïãЋÇsin]£o§ Çó_òýÈÒò>ɘœryú‹S§ÎÈî\“nª÷%÷¹*jöè LáÙWÏ&¯µ½wˆç’2CŽèàE2)àÁp•#á ¤ü Ÿ`®o—çŸT·^’ɉmD;è PÝÂøæìSJÑs-${}7–­%Pºs—K@nê€Æ«‹UÚt¥ëªiáàWÏš1X/°¸-žŒLÏÁ©«n$S}™"÷5ðx)O–çî>#¸º/Çd®(¡É2"e«¬*…(W+ØMÓ$ФÏ×áE%öåÍ".(Þ£ºâܪ@6)æ5ͱQyŽ™{ò8YôçÅ›sØõ*ŠüQòP†eEóÒ"e¹±S‹NŠ{"w裤[ ±fêçá¡Wl³w,×-/Á7M³f2»ü¯à©( õf >¶¿ÕÔR­.SœÑ™± §›ç¬ l—|N­æÞ\íÃÉ_ÞQo^Yðü3WNš_,Ÿ¼ñw ²Å±" ÀP›Æ=>l¯ËFfRi•5|6íØ±‡šªCn>£VÑÖóƒ;i9» 'ß+0£p³-Ó(Bvjúh'ͳZ2õ鈦sPÇ*0e½”î2jLíUŠSSž×Reèò5”±ªT(DæFåcú·²FŒ¤]ýã@Š.:>XÀñGÕ ,« 6ÞÍW%µ™Né›Áj/ßÕxÐóÖŠ§^dg®-Ïi½cµ÷]ŠSçÑms©RMA^’~g܆C€ŸÉ ¤´>°sÙŽïžjåËÆÝùE»pQi¬›jÇ)Íjs*Èa: h”3I¢ï<ö¦éŸ]ŒKQ¶¤‰'HË™;m€(ë›±´9BW=1‹§£@ò“…ø (W8Ô¬ECkíI,AÛU–s\¸Â96VNæ|Åot½Ç¸ †$:ŠjÝKsÜÅ»FäËããÔ+”RcˆøªFÕ¼m®}ñÀ§öOÁƒ„`WùháŽs§øÎÜì¬à¦ÜØá°.•NѲ˜ ÎS „…äÄ{S4(¡Ô<¨ÚÎí²^>ظ§}~îšj‡Ã”Ä–æG…ºò´mÎåB DÊR¨ÉóYÌ=.!ÀHëÃö,I¤AŽE”%*wMšˆ)†#yO“Þ6åY :˜êêyw ­Ì÷»Ž<¯5çA Ô²üÔðXF'7±gé¥ë®\¡aî4ײ yÎÓ})Þ¸&œÎÓ,MIÎvÁãØ¼—êüú€x}:к[ttÖbŸR[ìd‡ãgU5­²½ R5Ú$)õl)]ŒxU!‹6£ÍZ²ºŽ•­Xê·ˆT}—‘?¶®NG«Ïq)~3)(:#Á"òÞG©“ðF{Zà¤ërJxŽûfã¤L-<“R6ÜÉéù";ÝÑq‚Nô˜ï,Îç{âÓgËÂGÄØJ%œSÈ'UROxE&äÃÊ wEÝŸœŒ¶Q|;ëN½Àn>‹×ñÄ©9]3U‚ ¹“‚7 5Úž¢ÞäÃ&…N6»R—Çs‰×‘ümî„ C/ •}~6!]':Ä=šiÊpWù;]‡‚½$\­R(¨·fsOÍ‹´%`ŽLÐubÅs ŠkŽÉvŒæ$ÁÏ­j3'P>¥&gÙ,ˆË¥<”C¹,îLÞªKUK-É>× äÐx–ª<@þh­)P2[ÛFèÕž‚¨ª* *IôÒs87–O½Õ@æÕÞ¢ôži#<¥8ìd{ L ¬ÁÅÝÑ8Rñ§E6V…ÿ}Ž®¥c•ýÞ•%,ÔæÜ­§ Yµ]yÖDµ,÷·j;µ2ºóÆ Ä'R%ˆ…`LØ]>™Êj‡ššŠ“%¬o;)i¸„|7ÅTÁ®qºq‡…G Cï&âÌÝP6CÑ#»KÜÖáXrf;[:z|ERÈgÚ’s›Ä:™²f¸M>ýá–Ïû=fÝÁ¶èv#í #õiª•Ö2ÁÌþj“H¦£¼½W(ãêOÚî¡©©-{z—Ds;­™ˆ÷l{a¯‘cyær2vDÄñ¬5X“§k èr;8´•hŽa»œY jŠoI䀛_šx…Uv>Çà' 'çõ( YæewKmç•2¨lêg‹ƒéˆžªgj!·d~Üø„0Ò¯£片åKƒ»d{—ì¼ß»©„Ò`H„¦h#)hÞl%~µHmë{ˆ]­ØJœn½Û)•c—´Jç«fìž=Êw5Éi |ÏÈ­¯ê;¯ÖHÖ…4Kç™|~m7·ÄÕ>oOqH7:µžãµü})Õ//TlŠsË®8l¡/ß.SeWòCjPˆŸ`îÖåìy(=+.f|2ð- ¢VÒFYÃ1Ç䯦Ԯb­ÑÀB÷#!´h0< dB<>9sÚœžY]i*.´«DjP<éP/Gë°ÊН”ƒ‚Û¡ +ïâˈÁµJåñ´¶3vÕ^Ôí& Ëi(÷šö“rx“Ž.çБ]½ßÂ-RST»àܹÍß–«êWu 'ú.áǬª5±Xáeê™Êûö5ÍCJ4ßIÛÛE¾%š&$¹s¬KI§dÙ‡„¬²T4¢ö‚í\"ÔòÞŠEÒÙÄ‘Oâ ±‰[ªbáRiÄ‘ÉBH…ö]²r&¬S´n½^âCvÅ/Áx‰ªr¿%wñuõy¥¬éj+éâ©Û§¨vÜMmrtUSQžAB+ñ çÈ]'Ï|\]>ô莞V¹üî©fքЀ"ÉÔçØµô=m>c |Rüj(utM§Á/h»*–LÓ_šBýÖ2³ÄÕ¶#ÜRš<9=Mà†‡ŸÏуÔß‹t¯ÿ-¸Šµ•¨Î¶z*t“ç÷†³©»ä̯9hJì–"M¬òÖža¿óíQ„**OfãÄo… ‰üP)Zâ-SpÍ«$6PÔ\wOãTî¢k*!‚cû’.7²S¯Ñ3òi”¿KÅ¡K1 ±”%Ë7¤Æ Tøöî¹Ï.xØ«C§ÏìD¥TñLôË›|Ʀ8°µtæ?.öÃ#©e{òYÒréµ:η;ËReSN (6@«ƒ2ÂËêºÙOö¥§ÓM¬ÁNýzœOº€ÐÉqKŽ¡ç¬¹‘T7xS"ˆ.Ý÷±dpI¾jüiÞ TÑ—£*ï|©^”Ò5vÅóƒóT`ô ùà}x€”µR,Kj"€‘F¬X!§e2³TW:@Ù­:,LžršRßÜD¶KDŒòU=8ä4ŽÿÊô[3:t‰ŠôØ­"·“*)T^šÅbYkøv‚Øãóž‚Ýæ—ŽlVÕÁ2ʧmyhp?¸9<Ÿ‹ÿ§"5ÒÌ•¼:(ˇÅÛç,2îzVnn‹½Wªe6%d·½tq«Â³pKïä %Àjч¤+DUÚ7k@«T8åc’¦'Uu;;!ôV8Êbj·qp¨|N¾SÂ5!ù;w–›××®‡sQD2'åkOû¿$² ±È¡¤ªºqJmÝÖE³"zƒPú£Ð%S?â’WÛöGfºd€øôþJiV–I‰rΔNù¦äyn¥Lêžw·Q8ªâÊßLI¥º¸/sï®ðའD¢&r±c¼63ÕŠB(Ž7()|…‡íéYðlõSï:àû \ðr\œsÓUtÛ”ÇêÂÜôW×ïÐ!óV³\jÔ£§Å®ÏƒÕDK¬¬™v- ²ŽC€JMÆñ,ZVN2´+Ãtr& .§¬,–Ù£¾eðÔ€<@(j+–ÙêÃ82dwOϲ/‚c±YàR%ò~Vpw‰²Èª'Û]ov³iTkœ‡”4ÝN²òÊØFYrŽ’ÜÛ¹†éƒR6<æ~¦¤ü=YíñIJ^gcPlßqµ¼õ_àI•l²Dˆ<Î'–ÈÚàá·¸ÎæmRZÈÉÂY5.)¨Oa|ŠT ÉàqÐ2å¼ô¶íCšÉ‡¯Î—é°´CSû¾¤Ðìp„¤0ªl –uìn¤‡Çö˜³a§cÙÌÔ—r‡¢Ì3 h%@7;©Iömì9öÊ¥‚<´¦ zçì£*Ç\¸ù'ñvs’RúVæ0YH <žœI³–Ò ž¸EìĹÁe.ÆçãòÖÒšâÀò#õ>lI½6¡g;D>‘‘¢}Õ£ÆÛÍÆd£^±µÙ¼T´Dk¶ \œƒÄê' gª:æ„^‡ì©ïø{û ©I¬‡ú²‡äE6“Ú/¹]𬇊”|˜Z©Î ’q}x×íõ(æÉBqßÕnT·Ôv§ ç‹Ï¸÷ݧ3õ/×;}ÜölX>,”LݨNÅ£+ËÄòsßźÏËÇHYÊ VGCAîÓçPw$ßüW…”äfßzñŠtÁ¸Á“‡ö§g„>Ò½*ß<ú¨¹›ñnò;¹‚¤DýUn5ë(%›á€›Kܨ9T>’-•–TæóæÒìÈÆ¬‡‚öNR‘Á Oç¨ÎtíJšRÔL"æRÏÁÎ!ãë­®“DçÆ:m;G§ö‹,2bõÌi#¾) w(:¥sβESpXÚ±@¾zÁ”QC¥°Ø–ŠÀ®îíù‹/¬ùÛîÁc„Û‘3RY.n“#Yû•¼‰2¾È%¬ÐU䦭چ¦© ¡·i°EîX Ís³ ã”Ôai‘ÝUdc! ˆH‹Wë<ö\Ú-ƒFËê VÙßÖÈÕŸIFPNÒø§`sèžž Ôìº@©4s*Ì'{tBY¶”1¥.¿Ôå°ÁݺÁbè2ï¸L˜9·ZÇíòn#èC´ WWJ;2رo”G†‹ó¹)룺<¯ªÌ²ìèz¡ñË |ly¤˜–jvFœ‡©ÉU–„î€ñ•É~êqÈ ôãûKäô5È´Š°“vm•rOÇR2qýY…•íx«H²õüÔYWUeiþñ¬‡g—ú×íl#Úu«Å#‘[‰“!ŸèkRÁCJI°ëGbèP­…¢%{“fÛÖ3Mçs)mWÔC• v)n;B¬„EîÅÄù]ALP(Íî5ɰéoûC&L\ Ûéè×)Ž€¼qѳ~Zi2+#K\6-¿m¯w©®ªÃÚçî|$ñòQû„ÿ˜T7Í1quwˆb‡®4Ô…)9ü©4ªó7›D;þºj鉱úÌÍS,õ?Où¸‡¥†˜ÉŠ §ûêÚE€ »:J[=ñÈì9 ô–YÚ“ÿ*w®+rÈòâüx—[ä0û£ˆ+Ûºlhãä¬çɳÉçò:"M)7ïЭ!;Ñé\xòx‘åJuŒmsª}wà@»”©FtVõGöñ nŠ öuðnc¦Ý†B¾'v0„) ZTØ–g™C²KìVöfq¢ëÑZ‰•­@Ò‘ç9­,ZZ߇§G„…yg\ã¡RHå¼"*{<þºáUÅŸ[o5tBSÛÓÛ(<Ùšå;È?’ÂQΈêX8¼M+»üu®<ä·‹¾(nâµ2ÏéNdY@úU5çvŒN~;†òÎàl¡]ÉPn +NÈi/`—²”§[Ž&èA¥aG¶”Hƒp`ÈØ}.»é–UÔ`o¡ðdÃ²Ñ ¤›fsV©:8@êæ'÷[°Oü#ô_’`þÍ¡kA~ÓÉ7mwÄ5k“Õ€CêI¸<'(NÁCêX2Ͻ¢“V¿;ÉÀÏ{€qdŒíÖ×èdÃ<­\Dbg%¢&Å:€"*U«>^p½Ú>çn¬-À’ÒIZ‘1Ÿ…®A—®xY~½‚YO$’¦Bx/)Òga¤/½ÎÓ:]óø‡Â®]ÑÚLFïE8¡(t*Ê9%Ç‹­šKé]·q;ÇE’µãóÑ*`œ˜¢–'…›ŠSŽÓ~6¹Ü–¾kÜ\ƒOªîhÆÓ³ÌNÑq’¥eßî² Œ°_\{‹Tê³8Ý:ÅH êo- @>¬Þ>y*‘$¶W¶¥b–ÓòpZX¿“$ ÔÈšÀ¼ÇDy 5´¦š ú(8(?Š7mž8äoö“£5ñv äÖ”þ»§Ÿ‡ÊJVÍÔü×¹ççÿÏÞß6í’[×™à÷üg>8ÂŽ°T@"‘ ‘3r[¶‡–»{Þ>”ÉC±FÅ*ªª(‰­ðŸë¡XEµÔ–5öL[¢eËõœsžûÎ`ïµ7Ö^˼õ¶CŸ|«3‰Òu5ªRµ‚o¸ÞÍ+ã¢Yºw:Ü•Ó8BÁ›¥5fy¢cY2LÕewX€õËòoÜRè$/2"”7ûxP£j×ÅÛ¦ FÁũҷB±:*?Ý–BthÑ7‹—–#Æ\æi=ngcûÀ€ÿËô›UÓsìþuZý9%-ÛõhU_l×§6€WXöÚbyT¼ºDsyÅüÛyÎîˆÞ¹{ˆCžm·ãMrJqˆ4yyh)ók‘&ÕÑpj–|LAIx y ©¯cØ™Üû¸òâÑ`=ùKûi*ßš8ÙìZ[ß >Û{{=<€eÃßú²ëH6<ÿ;¶¼sÁƒHMÎp¿ÎÖi»F…EýÄ[{§ât"ÀƒV6@ÜÖ:z+ÖÌp¯«Š¨I~>å« 9¯”½,»L,)^VQsÌ£ªW«3ФŸtnÕKiŒ[Þ†…Qì©/í¯-ˆX•é še2 !òð`¿íi4^ Û”EõSÕmRZY¨ýYªˆ·¬‡âÚ r#(çМé Ê<'-_nOÉ.Aç‹§x û‘ nnÇÐ !àR- ‡£!»8sʉ (ÏäeUÊ—¬Šh4¦¡FrÂßcrÒTÊVñÎç{¼r„ÕlÑ×÷L*†vÌ€l$­Dá–€Âb±›õ?}ºÈ¸¾Îì>ž°jzÉÛÒ'ÍÐÕán á,Fr§úËžA$ ~>Íy³~øqJêZÉÊûÓW"5Ø—”:g#TÜHÀ-%•£YíêTê¶~ê4i4}FŒ*Þ¶Õ‚½*‡Û£)Ûyk´·Ë8cÞóŠެå¡öÇ<Ŭä¾E`åÊŸÓÅxK¯oNÊШù@ ¤jaĺ-ªÝµyz÷d#U)/€BµÜ»£³Õºì‡¨T2:…‡Ó*ZYjϬ0‹4ïB±@• ñ°Ž³è À©BùB¿À£ŠMžiM.  ¯ƒ°0”WÊ‘(c/¨íç/Ö5^÷âß´½íÀî·QU}8ª6ó¬‚è+Ýt9•V4¤vtxªÂ‘ž;u„sÉ꣼ªdÊøƒË£jÕÑØºk[vìæ¢|ü²æÁÊŽyve¥!kGQ­Ø¶Š†mH)žíŒSß?/û´¨±“¤2ê\¤é:_D~¢œÒµ#7¿ŸyˆT)VE­F„¼=,¹Q;;æ·µ„&ªÔ[V)«¯åvKÉÁyå÷ð/W¾M.Z$ÕoÀ—0²ëWàÙz±ˆb[ö×f`\ämp"ïÜÈ¢EŠØFy¿âä°–ßÔL23 ôN™ØÜ§¶Ó%X­އ(¡6ˆL‹·jÐv¾T‚$튭AmMåònµ£'4ÛºjX¨Ö™É¯açÕ Ä ™­Ã+¦ê¦Úú°RœÌµ¬OØdª“x¦"`"4ž‡Ã%ïfë3Æ‹Ðd‘DÏÑO%#uàÆ&ê*'H)ÛÌ”öH!w~ Ì£’ÈF‹›äΕkÛ¬"ÁˆM\·-®<½W‹µ®Ãƒ7½Ú­4¾ž¦lóÅÛw"hI¬ØÎÑ.HÓi™øªÖUX¼/Ô# ÖIQ¿¸èd4 TJéM¢T|¾íL¼¢)ŽÝÍEžóÑQ“ÆæäÿœàŠ˜ÙÀ VòôV(XCjY…zm¬6bW…V'w@VRë4SvÛ&ÓI«{6vkÕ …=”*’ônG”¶çŽôÂHìKZ™:N?)zþl+R%2¦_¦, gVµ†"2MmrîÃY² õS,oó>¨râ‘m?¼ÔÒuÇ”OP/Û<7 z T‘’€áøÑ!ÔF~±Ä»4F¡ÎNJE'ÿH*ڔo2h‹–OòzŽE v¤|*=©Š‡ò”¹¥¥‰ìÜ:F㢪ð¥z!O>ï!ò§hU®s 1÷Ò'h^/µõÞës“×8ÖŒsÏIô©Ÿ¡’¾Ö%®˜6ù/²oåâ®íSµšªiŽ'•qFýBØ¢{$“…¬.eVak.½´ Ë^¼ÔYgrÁ’ë¡ÐÆ z~ ãÙ({~]ã<óT;J ø« Œ- OuHÈ]j 7‡†Š‡“i[9ñÌUÙÄWsŸQ;òv5}Ýæ CµÄ,Ã%kr•TD]Zr)‡3Ó>Ÿq¢ÓÊM5é[N¡Ã/\Þ$IùÙv>¥8ÚøÚùxZ]¶­Ï¶êº¬¬‰Ö)íHÕh&_kÓEF××¶t-)•}õž“KòN§¼†¢ßÇòŒ~éP¤(©ƒ™uŠE“Àn@¾u ñŒO‘"èjÓR&$ÍÉŠž•ü7õ—y-'Ϩ†®^Dð¹Û2g?tñ,êÚ#@MuÊBå ^×6eB\#'ܽEØ“M¥[A‚Lb8vke å¬8íU¤éÄiUBË2äo‡}yTdK6ÙÙÏ-I3¨˜=k»ä°ê]’øE½çÔ¬¡{Dë«•æ’¿­”<ð‡ªŒ…2ãJÞ¥ªJ5K’¬Éf£0Í’/²] Â=Ÿ¡„õ-‰Ž·G¹TÁ'×ÔâàØ:г¥ðŸ60Sk:àä¥è‘8Õ§»?YnM¥ö•õW4ª:ã{d’{žŽ‚ºžðÁ«˜ß“g&FR°6T:AŠT"‚6/Æk=$Õ³fÕà^Þ+Þ„Y¦ê¶?à@|rîDÑBNi} 6åÊ Y¤Q;s¿òçNÐTl·nuÀ}Nüú˜&KÙ—Un Å–|Ö6t±@VÆ_«J‰ÂO~õÇp2ˆTõôlGYu‡ Œ²ÉBfÙÅh(ûD¥ˆ¹yB‰³Ž%§]ýŽU‡ B+·]ï ÆÁ*U+0ä:¢0Âcî®Ò6OÔåâÖþç“Ð,jí«”£æywJJ'PÑQõà¿¥!ñ“*úšU«v.Aðê÷ñÎnwWïQÂ5ÕXÂù§2<»<†'Öl“Z­åy¶RFúió©I¶-€A; *GÝjÃ:@JÚéL\¯±½VUímÀŒG${yÔ›%äYþéó]ÒУ?‡G¹Ó!pŠ ²~RK’­ $o>ÕòHþÔ‹BšK Ó«M…7Çܺ½óŽšÖ&åÑ90-pˆšC­o•5ýü¿ÇN/ ²m5ajàSQÚkëW²§_v+±,*Z3•Êa5 ùcmG‰*@gbª]3ûÒE6û!®éX¶"¶v„UGÝai¥ò5+½ãŒÛ8U4!úè_¬\}²¼ÕÔè£njv9ÒÞÿ<ÊiÂк¸¢jvÝ3AþCg^ý™lëßÝIô=¬46%•ûÝéuµe4Î: ŠÒî-ïX“—5‰åÝÀÈÖÒ©KÕS j iü·:.ª¼ñ¨=~uÕ)4NìTh¡ÕcîÖ âzÜ…•ã\&Ÿó’[ ì”ðy1ûÎjIæ>á#¤4Í'¸õ0U‡²ª•¦òUvê­*Ön·ðU=C«Š [ÿwùÉ!ůâ È\²5ïOf8eí*¥vk‚úØØÐíT]f{Ž$sDŽmÝ €×=ˆeF<ÕVU~åÙF6]åº<ªƒ*C–?¡uNÖ Ýþ.°ŠÔàq¿ ¦[©)¨²Ú¤¶Dwˆp=‚¨¨‹Ú{‡ªWÐbHNŸlƒÀOEW·niàDl=m¼)æ(éÓsheω…sàʃC¼¼¸@Iá/Œ$•\”ý²¯¥!YÞõ"Ã×èx§ZkÜ¿ÔÒS¶ÝáÙÔã¹£¸#Ô‡Š&¦L êË#* 5…DŸj#%R Â~Çùi‰³Þ$øóT®E&58pªgHÉ9þ§/~zü³¶¾úÉûõWß}à?ÇÇ?ùâ+øƒó~ÔŽöøwÿþ÷úO¾þýÃß‹¿>ýŇÒï‡pò+üÅw_~üëþ?~üæÛ/¾þê~ð÷ó›ŸÇŸ=ŸÇ?û£¯¿úð¯~ù凘>Äûbùƒ>œ!´¿þ‡_óžÏÿü‹Ÿ|ø£ßÿð¯¾þêã·Ç?›_ÿâWß|ñ'?ó¢þú??üóÿ‹`¼ò/÷¯è?ÿøÍ?þü«ôùw?ûøs¾ñÇŸùáßýã/>~÷«ßúˆþüÙwßýâ>ûì/þâ/~ÿóŸûû_ó'ÿ§ñ/?üÅßýìÃ>~ûñ›?ÿø“ûü›ÏþqߨïÿìÃÿì‹o?ýñ¿ÿú§ßýÅçß|üÀ|ùÅ?~õ-¿ð˯~òñ›|÷‡ÿ‡ÿúÿýÅǯ>ýãýéüË¿~4âïÇß|ܯÛúâ«ýËŸÿøÇ_ÿüŸõ«/¾ú“?ýâËþíû¯ÿ»¿üî_~øü«Ÿø?ÿòÛ¯ùýÏÿüó/¾üü?òö…þáíÿןs¿¾»oüÍ¿øîÛßÿö‹/½ÃÏü˜Oïz~ýóŸüê»o¯ïùâ›?æ©ÿê³ýZÿô«¯ÿâ«¿úôß?ý⫟üÔ[øÉ/ñÙøê‹?ûåÇ?|~ý/ø£ãû?û“ß}ÈÎPµóÃÇ?ûðñ/ü³Ïüð?þÕ/>þ1×ÿŸþê_ÿâÃO¹—ÞGþ¿ã¯¾ýüÏ?~øî›_~üOõÿøíŸÈ¤~òÅ¿ûð] Ç÷ŸÎüé§Ÿyóß|ñ—þ…?ÿç7ÿõÿbmýä믾üÕ÷ÿ|¿ÜOwú›?ãë¿üðW¿—Ú‡ß;sø@»?PÔ~øO¿ýëÿîó/~ýõáûßýï~úõ‡öé*y<}¥þë×þϽ#þŇßþ¬ó5Kõã‡þýÊþ‚~ÌÿŠïõ½åo[Ö~ÊfeÿÍëyùå—ûoÿ¹ý¿úÛÏþÅ—¿úõß³Pù‹þ¾féõ7ÿéÿôñÓ>ý£?ùâ—?ÿ›û‡ß}Îâï_ýÉ—¿yˆ_|û~ñ—òï¾øîÇ?û´F>ýùpg}ùÅWÿÝ×ß~a$ùð{Àá¿ñwl§ÿ)Ñâ[âþ«ì–ßþÊõÕ¿þ‰ÛêÌ÷‡Ï¿ùæó_¼b~Êþ*²ÿ~òñ/÷ÒýðÙïõõwüÊnï?}øé×ß¾Ïëúð{óçŸûÇŸþ$øìg¿úÅÏØê¿ù£ûÃg¿àM}ý“ïÿ¨|øìÛ/?ÿög¿ù“’>|ö‡¿ù©ò¹ü›ŸÿúûohõÃgÿñûŸWð›Ÿ|Ÿýä?ÆŸ}üÁç‡Ï~úƒùÎ?ùÁ|éÏ~ð#wòÅ~ä"þô?r_þàG.ãçßÿ¹Œ¯~ð#—ñõ~ä2~ñƒ¹Œ?ûÁ\Æ7?ø‘Ëøö?ò0¿ûÁ\Õ/ð#Wõç?ø‘«ú‹ï<¹ª¿üÁ\Õ¯ö¿µ&~üËo¾!î=Ë‚ùëŸwÜýøñ/?þ˜jöQÊ%*/«1ŸõÓ°,ùíGXÁ’\ئb¿å|ÍÚ–¯§õÎiÓ?<ûx]3u%êþ@ß#Ç1^G£¦GÙž;®</¨út÷|ܾ4íÈ[/jžŽµ=¼²<´ä¿Ëdmêb_].Ù®]aeí㵪:JOí±±G¿fèRþk»|Ýšò¼Ó“WªkU%&ªrqñq‘¢¼«ÝŽr91­:D´åUÃ35ZÓVJ ëì;·Qž5õŒïHö¥"6õ9Й*«ûEÀ11ô©õXåû¾YÃZG\yŠ0×GçÎ3Qr>§ºâ<ç”î©”èþ x¿.=^OÔxžÒPûæ­nå¼U¨³“Y=~–â¶#Ë´=–:©œgõ øùäþ¥êÒlozeß'ªþ¬G#¼€[öþ:F¤ã‰ö«9¾ž¹Pîñô }´µU‹YHU±­MGnö‡\KåœÚaÝWïìYh,{4à9§c«RÊöD=%ϲ¤WÕ‡KKm9Ô‹ëPõP{8ľî¨#´}‹ZÅ÷·R—ß·¢3AÇš®"åŠs¾åÎrͨ£Þ¶jNú»:íW)…U,á¶<=ã±Q‰)Ã*U™ìòÌŒ^Ké5ñ9κ]Ï=ì‘%”ÑçÒy"Îá-í$‹^ÂJDH—z.ÏÌ›Êøµ«h¨Š xßGÝ%ŽûyCKŽãRkb|²WaßéߥÔLÙã˜Ò¬XÃÚhÇç~Ï¡=Uÿ  Ðí)©Xj]Öß×Qž«Ë—JrË(ìyS‰¾R·µ‘¡ØzMóLE'Î5εËѾ<žr>%Á,©fób©ðúÒ6!Qo?ºá:uôA~ U]æE®[[‡ÜmMFJ9FÕÖ6i<ë GŽ^až5¼N´ íÛO5<ØÅŠ>’|Žå<2»ÿ±7.Ùƒ.ƒx:'îŒ0Ÿ¬çµMÖž%#øþ4= ëý(ºÿ½ª””çæEM;YSò:åt Ì”¶ Þ›ÆN<2½dÉgg×ÍãÔ@fè ¨3Ú½¦œÈ|w]z2k»ÈEôœØ)®;kdîÌo‹­¯¢Ûˆ“ˆëÈy”¶çc‰ÜÐTñDhÙÜ1ÑB¢†Ê ‹*jòt~Úy¿%:2POý\ 'Æü'ù»ÒIóšÎ,9;¢÷Ðu$•o¤­Ï9X‹]!‡>÷á—ã,Üb´—dOjØÅ|×zU¹’›¢ûó)méœd’Õl …ùøë”=kå$B»F<—#MYu «+’|²'ÍŽå-›¼ç ñèOÔP+W[óbݱ9Íy‘a^öM×åDCFâ{™` >„/[Z¢cä¶Éç,p!‰E}÷ås-j“züšØñz\øG2C”!¾mÂòL&@î Z7”3®ã|ùß™ÔÙ.!H/IQ%Rï„ k÷J0È`MMwÁK¾©eßÕïƒëŽÑíÜçúuf[MË®~åe,3Æ£l×.ñHíäLX'†²H›¼C Z¦wµ4‘Ëøžû8ev¢$éàÕÍfÌ=Þ!#(Õ2 ÉSè¨4—ó¿6‰=N—РNâäv ªM9:w­9yòvÛyZr“wçíÔ¹þàDýrJil rÒ<5}sfJ­´ó9tv‘èôª¯Ôo0›¹hº}_÷öŸ›É૪Žä¨ ÙV3hrèªæ!1ëTÿÔ·>µgÛGÅÁ?#GùJfŒ´;K ^>á`³”|éõ£9ÊÃ*ž¹¶}û˜&ÜÎr¾OíN±Ý,“¦ꎇª kËPöUÀ*àÍ—b4ĶÛ®Û7ûeïW•‰ª§ ó<£Èƒ,HfîÃãð(¯’mTöSqÁ{8ÉIJJ&°¾ˆ­ >“­êàáù|­ÂÛ_6XOÎ>¼Ò¯y»òó€Mì¯ràå?.‡­«£Ye§3M+EOBlË[[<„_¹Õ€Å’ßD&d³µÄ‹Ž¡(¿LpÒÞ©iôù¼[æ×± ™¯}³v¬.Y­Üß‹D&‰­²rj–9øœ.|rvfk\Ï,ìµ -°V5Ïã±.ÉW×­T‡`ª©NTþd/ ‹ZãKUZ1”ªVbn&/Œ¥F[§m´´UOž-¹€øÔÒç&ÊúÎ^²u"Ï(¸…¦%½wê:ÇŒF­!:_6^ª¼¡£•”„±í‹îL²¦„àƒ¡̦Þ²ª¢fÒoYrÐÌ–¿¥%œ:R¨Ûwn†Èë;P©ŽU¶hlG2ÄêéàV»GóQ­?Y«·¤|®þº€MûS¥æ<€ÆS RKƒäy!÷ÃJÔ©Ðh 9ºLËù¨g¯&®3ÿQ • œ£ï“:7Xp“óÑ,åËBCåû}$Oô¾ÙâDa–ߣMTIb¤>yìù¼Å×s/Ϻ§ZšuH¿&Úoµ€<T¸DÔ %ƒ.‰ÅwªÆ!ß§8è§l4€n¶ö̘ÝÛ^å¸U,% Řt_”õè7ÛFIï'épøh꥖µkª-£s¶ì¥G±å”܃^4ÊÉýºM¨R Ì9Ž{]ºF'$ªNûü’ËÍ›ÚÇ"!åv  Ð3r°†<0õ"Pj 2•`6à•ÈÙ;aŽAE]‡ÍÈ–.~×!ÏÍ1]ùLï[ûñKàÍãΪÚ~jÛPgìf±f࡬Êú>>ùÍsEáuVù%q(±?=±×$zœÛm…äBsqˆ:;ÖO饾¡oèÑ›ÊJÕ—R,!XÜ’Ô•HÝ/ÏÍ&zj¬Êe”&žTÔ%TŠLuZ*çó‘€OÛQϨ2(対ô”‡MºƒUãUŒ÷Ù¾ÇM§45 ,—w© ªÇå’ºó‹rå[ܨդcQžš,yFîù ÃXø²Š­ À©j5¤žPÛ¥cXÛÖã–@*;žHº¾j’×áÜÌ©ýÀIÄž±u‚OéŠbËÛeÎ*>Êr¼õ·Zr5^rÞyV;Y§E…¥ —ÕS8éðe…¼ŠŒŒ™ˆ™±r±g`#).2Ó¼¨|©OÒñ±kÔçœidZy¸Òœù|64ÛNÙá$sˆ{eijôôÈY{ GÈ!ÅÁÛ­¦c»ÕJÿëVXx¢äDS+¢ßíúl·`uá!w®C|Þ<Ÿ6v[VßÓ±Š^´W'±Ô͘ÏYe&.×Û ͧ–„{~{ShA\Úd5YNkGk0ÝA™ –ãC³Nð^vTSu<ýâß‘àœŸ:ß’þ¶,;¯ÉѾ[¤çPõ½o4Œ°/8¼.ít5ÔÓ×9ÝÏt†N¬M…ܦ.{Ѱœkºµd¤L’$;g¥]NÅx”ü“ ‘‚èT9æ™É#ä)ÚÁJV æ8)gÀÎ<ßÇŽ±³8AkTE¢¦óÀáÌàíÄö£ÙƒºÀÄ!92‡“㶪n`Æ¥¯ù_JA:tZä&«°·ûàì…õk dzãs± ²>N]áØåP¥Å7ÿn«'µWÊg‰{Š2c`c¶± Ôy Mù»GËU•ÍäóbÒ®µ¶t//ˆ28D¥½å5²\nGl)ÈV;Hʬͳî±%µED+‘Ç«Ôë0`ªR+@•A´Ecó+Cr®qD1mИ:q)lWï°”à¨m¼<Ñ=‘¢¥¿`‰ê†m|ܤW‰JåeŠmÝùö.MÕé‹WÓEЍñ(péåñ;ü‚^Ô hôêìáÔK“b£ÿ»£0#IÓî/Ÿ+Ù#Oàk'žÒ­ } ›¦Zo¥ ¦·"tZ?/Éw‹¨UBˆ¼Cª˜‹ÄícéÌÌKgO¾¥jÕÎåÚ*h¬4©}Î;è$FüˆV¶U7´‘å>¶ƒlF¼“f{kª>ôG×¶«×q+oÂ6â/5NÕ;˜ z2X<½”ÿ,¬ætaSÞT±¹Î6’=(oûÔ+Že5®àìõeÓ¤w‘]( (K¥Y‘ Øe]À Íå¶h#88SrkC×õ~ÕýHRgî‚ ÈÁUϬ?×Y”;åÚcÜÒyI¥Zo¶¯Ù¾GÒÐüR|£¯Ç!&]èýW[QúÚÝMªŸÌ›ªN@j—U¨çù Ï‚µIjº0+³™¨yœåÍ.#xpfO±ß÷ÞE4ë ê…4¶_õpi.žµoz­ã.§Z¤Úx“îˆD§æEk¬=9y;:ª£-rLÊŠ6…lëé#Kù˜—e´ Ý<œ+Z=Ö¶%¹$OžÒ›œŠáºeÛ¨S¯årÒîÔ ª+&¦ÀÆ­Á‰m)ÆÄuý%‰ô$?ísHµSŠCk+µ+Ñ¥2iU©îà ½¦|ªü;'ðÙ·“`§ƒ+Æ¡FŠl¹;G5º«És& ØÕ¾È^ë´}ÞŠbQ\Ó'èªîÈbµ¡ùèQ¦õû΃ìÖŸ+¿oQ•K%§(t Q€šÔX•?¨PðseêîË64ûÜìýë|tÏyõÍ‹*cP Žm‚<ãPèTq‡,h•¨ØŒKüÊÊBºn¥·5£5aP§ƒ ìT©æH…%DÄl$½kkpWç_”%ÕP1-5‰4yõhDµuÂ({ê+njR€$;9¯c1û¡HÿΧÓ ’QœQ®¢ìÓ‰ï¬=q–K}P’ò6žóœh3ÀÉ»¾ìQ+&v¤\ö¤L¥œKåѵwÞ“å%)ëuõJWá¯:˧¡ü.“»éÀÞ¹¸îj‘Õ¬*%4 áÐ8ÒaxV4Ogvg)·| ¯Yi×y¿¶º 9¹?ÃS<—r©êe僺ÞÞ•ŠnQåPãkxnŽþÀŠ©´ÛªA¥ge„šÑqÃ3ÄÒt~&ÙZª©» ¦³zÙ§ð+ÀL‡ÍWÙóTÔH^E=šöæ6–Fƒ—"Èh¨*2‚f$·“#JC%:+ŸÞí¨K¢šçá)*L{òL´_™"q‡,q^dÿ²ÄSˆÍsÂ->òS–•´ ±=—Û¯³Ííž±ÕdH¯Ä«Ä‡ÔS瀠Å*Èó–ü*ßw€=\îTóÔŸ¬ H`pàWóø[Ÿ’ܺT>ÝÝÊj¾Ú¶ƒ³©\I:ü©«jŒ}oádn<ß\À0¶JÕ[ŽŸØ:_U~t$%+©“@B!•Xš³å†Ú¡ý=Bd³ð&@¶” ^X¿çSÜâº?hƒä­Ý±§z«ÕrîéÞC¦ü wn)Ú†²ö$©‡¥©»èÒôqÈC5ò+34†>DÒè w\Žj'/…l=Ž^M«u·ÈŠæ¨>UP¨)›³“¢÷E<à¼UåF‰ÆìxZ ž¯6 §)2 +åQl‹{¾¥ÙSÐÅ'G üx8ìå¬8…G&MSð¨%o…@$*xhù*(»}S—8‚{¡¹—QYk:Ý瀀û¦¤<ûüU¨Bç<@0ùø½íL.Ú¶ƒ¨Ë~ÓÔÜ£&5.x,úÿ%5ß#Xå,:©N@fôà@/¦Û3’¢m·' ¢4~ïØG¹4 þ½#âùK˜—£6«ZÍdƒRW&Œ ¡š¼ê¡F,_›a{zäÊúËðÚŠ—@h\+*r.ûbÇw§¦Ú?EqåCå{žyîCg’†u(øÇã ªÔn_+EMÂqpN~Ù×tÀ]Gy¡Ó‰á«s½É‰ŸGÍâAEKùPtí¬:—æø£*}gGhjãîÃѯЀdº³¿@£ìˆäT;ƒ$+€` šOµÝŠ·ÎÆ'€ûSˆ“Iýã~nſ᡺"éŽ)gE, ˜‡r,™;ªÝS’»ÉÌÀÐ÷§n-¨?´bºUôž¤ëö„ã6ἋH¦ÌTÏÀò—WBxèê4³~öóQ©DŘp{²•ºÃª¨‘v‘{™¾ˆÃÚ…¥PÆuϵËÚÍÅÜÃóÍÝULÓ;QºYÛa)y ‡+] º_Rð*&ÏGY5a†›òò•9G Ir׈íXuªqê$ì+sh9ëìhNÏp™É…²kgmv“º”«_Gþd4röe/,)¬'ä …«­‰–‚,Êy±õ¯³.³KvòyCP‚M*`Š*•W¯û|ªV`‚ºÝv7uPûÔ¬2;–²"Å9UñÊ“•$ *Š€:Çê¢Úq˲§pMOâ‹­qÜ‚fWÄGGGoM,»fèAÃÏ=SÎ+}u[~´JÊÑ’‡¨ÓGÏA< aÞB.•n’¾ØuÃîÄùx! ¹Ä·*c€õ/r l˜Hj¤w›:„)v Ŭ¾>˰%/«˜i?LÜ xkJeTÈ2”Þå9”­)ºœL¢ ŠÜä4¡Ú·Ñúù¼½BâUþÖœ ¥WÅQ=<ͼԜ*ÊjÎO2ðñ™žÇûR\Ý3Þ¢t0awÑÆzC»¡4¥:ªé–† Õ%KÎ|Þí]%ƒ®ŸÛŒX±dÑšGÓ ýªË[ïCÃûí8›öÝ "'â°VƒáS¯ã>·´3Óë`w©àøÈ Dq¶€GnEU’²2Š]]Õ¨{ɺa/å—v¿“"õUÉŽ½§ë6xÍ蓬~©ª#@æÝUSŽ+ÞÇíùV5 •.E%û¯'€+^2AhbÖ¶XÓ:€ÂŒvÞéÐú²—^ª74ß¡P¹c…¢Ç ¯[K*=§ÝtôËä/A¾iÒ72y„N+O(È\Ä 㣯h›ÁsBU¶ÔH!(šC¥¾PÑ™”= ¢»¨H®æâ æÔJ<±ËùáK¡˜SŸƒe%5¹ÑžW–J‡>Fï×§ß‹ý›ò…g¨QÙý<ÆÄA)àQ²Ð\žíQ$¶ŒíØZ²L[e·†åYoc‰=5ëüØYxT‘çeéÝÕt¼æ±QúÃb—$¡F—:7Ž’Ûù:k÷‹T¸–zاÚîÅ)g¼•š9îª!É ?ì Q¾œú=éø­Ê^»e—'FT†Êz“öteÙZ^ù>¶•F–€Š^+(˜ÿPÀ×Ó ïV_2QÃù?φ>¬œ~€@©N@î³€¾D²<Püw»€ÝølG€ý˜ŒE!À«&t)ß~<·*1±´êtZÕ¶øi|è+´Á3Sñ£ÙTR^=­lÀ#‘>,¸—…ÛÊ;:N|ªpt'=yªä(­–ôåe‘Jð¥H>²ªR<–X•®êÙø– ³{~¨òÃJŠ>ªµÛš{=Y& h@iš›¨u]&ÿ¢.ÙôAH)ð/I@”TÂZ×¾.±Fy\‡X…”ÓUàÖ°;T,èžNÛ1å{ˆ‚W› Ü‘qcÓ~³+uÓ¶*§£oEjýƒÈo +’‹2'³kè·ÙäUU²² ¥¼Ã¹]ʸÍa5r’ˆ¦$ %Ÿxz&'K»ð“òÒ¬ôتÏé}K¤%ƒad§,û‹DÉÅÙWP~‡ú:<òÛº¶ žKïM6âa }pǪZæñÊ¥«Ù½ö™ç²vµ±ž™Òž(\:X…í f®ÞßJRãVoÄu^‹h°ÀIƒÅ±ât‘A“ESê.FÊV èÇ,'+5¾'ߤ^b3ñÕѾu‚U½p·.ÔöÀ_‰Ž@!ÄîªÀW[ÐÀò²¯Þ€äwQ³Ü8J8寴ö*é•q;VÝhè:¸’žù¢Sæê­€˜†(­#Pˆ]š’N+¤ [ΩÒd¢v 4 ¯ƒš„ÜËÍQ¥x|¬JÖD—³j²ýÈ=ô¼ ü¿KK*jÉðÀ¬çêê='£J›d"ªr¢Ý™nb›Jö ÑóX² (;jMt{:W­ìŽ­d¥¶ÕŠ’8HÐÐR’„!Çs=Ô3šŸ¨ÑJ`—Ï5¨Ÿ¨:<‹•>Ð@‚ì½…”‘¥€{ºF‚A”•]^È(RzáÞ#;ùš¾ÝñŒãVvJ‹«[ ËL]G¦ ª¾K™øM8(7ÊÓ|r|5{«GbÝ–¿¡¨h›WÙ_…y‡¡xÉÎ× KaJe²ÄçPÕ7XÙʃ0‡C¹£nÕo±wÑA m*žÜy`HÕŒ…Jk¿Q~n,_yÓéH1®”¸f…–%¯ËÀ¾ä'ev½zN-œ5ÏðøOY®U¾Ã–Û4±/vTÔ½Ä5ry»[ÔäQ‰XÉ@q°Ä'µõŒJDzî-â"õR~G=è, •…ø‚ü·Ä.QL‰¼./’pCÄ».±zù½CßBË`”Xì·,-Ôlc$-C|ú¢k)r?ä´ÙÒÿüœrœSót”ÕH¹O¦°€—0ÛØ–XŰ߀¿¼êªŸÖédÃô¼1:’¦§U’båVl+ãùhë+¢YsóSªª¤H5ÿoª[àçE 8´ ÙÐÔ¼Ùy¾àLå»ÎoKer„Z)J–=z>žžÁ¹”1«áxu:ª´I°²{ÄS•Å>ÀSÔÁyó^%ÿˆzl÷çš@c=¾C Ô¡µ˜ÙÒÛI‹X² ƒ¼¸CÔÞÑ•­yÔ^;]x=­tlÐ8Hkq{@aÝJ_6>&UÍxJÛËÅl#ëZÓÃq)}É!`‘8¥•ÔÒ›¢ºjxHpʼl`FB*W[¬²DOä…ˉ·¡ª²Ðí/ Rå4üx»E AÂ9¯2¤•™HÆ!.¬ƒÏÕPo\âqBírkfˆW¥! ï)AÚƒ§¥á}~ôö#nÒÖn#/¾Žì“_^/à÷¦ âÆ4ÕÙn“”ôb]ORú–Ùë…Às»“|9&¤–¹hÔrkØ#'å‰|fŠ%êC³¨cÁ‰çÌÐvmeúò8÷l–¾L,”Ä#CzÀæ Uvi8j>”Raërˆ@¹"'–ÊšUíT$GÖ€ãvÚpž:ç×$-ø‹Ô}Û‡–RÅ“Lí%Ok”è§$‚*é£HÏÄ­¨ Ý;/±®yÜš>é5®pºbWq·Ä¬ ö \+DDðØÜw0™úPCHŠÖ÷”STirgÀ—ön™GùAÁ7zz¯ þE>õ#ÿ\ˆó¤²V=¢òÆ[|û=õ’èÌÊ8Æè~ažÍŽy´¯àrUKÜOÝÍñã,À^RÙZ‘í¬Ûw÷ls‹ùŸ„^‹´ƒ +à HWm"Ò¸ƒ&/$ˆ•üþ3uÊ+ž…ky`"Ñ’ãr“²V5²£ü(ÙHÕâÝì/zêC1)…؆ÿV[ˆ¥¾–ˇ’ÖwŽ×s©F𦯑 ûì±>¦by\vW(+´4kLWO —©'¬Ãm9ô`»ßý0àƒc’ø  ¡íÈçåéŽz·vò·—ÅW'š Š{ôì¸Õiç:NRP‘ë~)¢Âû‰Ï)™E÷q™N,í2%ÒTïˆÐ8ÏH¦Ü æÕÁ8&ÀáµN6I¸Œ®†‘/’"éõÌeèv³8¤Î9«“U «gæ i#U0;¡uSzeêð¸{xY<÷î`¨s—ô½ÉípI§wà874u×ÓSå Ø-…¥în'¢²=åü*sèž«C3÷ÇyÏa©M±§›ÓåÓ™EõE0öu5•ÈìKyÎ|X™Ò‹ÐZW•B‘·¦$ŠOíŽio‰êmhQR/Ö½t}b¥\ïþV¨2\ wƆTrù¬4\ žšV¼Ñ¹ ;K˜&çn¡½’X5Û¤cUÒˆ ½ÞÖãżLU8’ÖËáB=}õÞ^ÇvÎÐDäYÛQUUñ†#5…øÄ]³’ì¡¢`ötµo!ÐÑ©òµ†õö nI¤öw÷Îzƒ½ƒä¤¶œ¹yÆF‡¶ü^‚צµÅ¡ú­Ý‰d[©NÊ™Iù9=Îöxn{3QGÎþªuÍsTÜtªv~tÛà¦ÚÑ Ž—S¶ÔÏït¤ *ˆE´ý\‰3t ˜›Gç<ÏFÑeÛ°:6Mܺ¥ P©³—dOYº½‘:Õ§?nž=rØ¥SléQ*“r…Z «:eSi™•È Àav¿âyÎÅÝú[ÉÖ±kFîÝZ ¹;*¤bh[-ÎÃ=©'DVþ2aJ`SIôáà}†—×4ºOÍ…R¶Rñ½ëU‰NÔ—Ÿ½àu ¹[˜÷ ²lêd–ïÏcŒëÔHmót+WÝUΕF”†>VÄ.œ‚ *GðõA ¢|Õ¹XHçÑQܸÅ)¡¢QÑŸöa¥µ8…º×E©L0ÒÉã}ÏBi‡©Ü*›ÂJ•nQ¦©Ùl·Lݱͼ›.è¼Föh3)jOiœÅ+ù܇u–Z·žq÷K×ƶÝæPæÚ~ª#‹T9‘œúhÿ£ ·¸Ý4±Ïy•=ŸØ=8npÐq+á,KKùk¥³¥ïW›Züõ”·Ý²¾=½Vøç]íGW-öd}σ€¢®ï¼‹“’º:1¼ï¶Ûƒä&è ì(ïUyt/ÛzÇÉ™`åÁ ³ëM»¦G °Wß$RÕ$NN­ÕRÓ=^+—öÈQ ìôqèXæàºž?Kb ~ä±S÷-ÙëCúN—ù1upUûýñ1éÔ5£ÆµOìuãKŽˆq‰‰´ìá†"h”²€ò;›1<ƪp/íhy DÃêLå+ùíÚ"§šd“ÚUv~ß͘×!ø"<\Êçù2+ïy’ê@(rŸõhh›öуB߆K™QƒÏ …+ë)`÷¶¸´›5’§ZVrk€6;α)U“žV ¨€5ÂbpM:^#ÛŒB0f3ùIQQîÒô~è±ÜŠÇ¶†_Ý¢‰Æ:¶˜¹yyVÂÀ¤ Øu:ä>©¨ ªÁÈ\ÕaêížÉòí”’}t Ä€¸[xõT`äÒÕL2¯ZW¥ü$N—C.¼¯EÔ 6Uš>ZªÛ¾ö‘œ×nÿÎ|(ìJyëæ1Ä^ØÍ#ÇvQB”çÔ—îo¾‚­1ƒ.gÔÏÇó‰~5YR‡“²âÞ¹µHæ*:y¿òÃf!Kä9è¤HЪ)ò © <ßrŠŽÒÎ À_äâÌ«Y•^°[ЛœobŸFOñß´] ¨áÈe`=½ @“rA¥bË„ Šùk»«øÏ6’«7Ô=ït<¶?ÁØ`>)¥û¨K%ˆxJ2#‰èQ‡SfzzsMD¾³$6Oî`$öµ¦= _6'å{“‰p)…òø:Täc¯!õ$^ömÉý‡Ö%Y ¤TP¥õÖQÚß±ˆ–<–hÛÂRÝ‚½åÈc宥zæév™³Á#ê`HOàÂÅè·y¾.͹|ð¯^•|’ å÷uì£êÓzÔñ#Ù&ÕqíJy)ÚoPÜj»SÎÊlË}Ï: (ñäê©×¹-‚"‰÷Ëã ý—.ôÙÔ‚.Å…/ò+=4ou;C>ÈL¤ÃÌîa½ên%Æ éÚ– zÚ.ý|î·tËÙô$¬>Í®Á'a=ŸòNÏ»%›5”·Ò½ß±d+Ý}G]¤¶ò­¦céÍ2Öc¾c“gã ÃRZ,\pvàVQ†&öÛº<¸KV¶æ_A­ï~ÇHbIÚ%bía}FMH”à‹Ç³IûëVšEV¢ûÞ]$ÊQx,ê¾(É™”húHÃóIÍ ÍAX%W=Ñ”ï>8ä]œY¤f’²ÍªçâÉl¾ÕÉ{0œmNlNÖ9Õ(ŸÕ¿Y81ü²éÞúR;ÛJTȆ½p:¢ðlG9ë` Œ“v«kà5Ƚix©Ö-Ø(-á d…d•Wz%FZýÞ*Oç´­•Õ eô§¾{Iú2õ™VœŽ¥}"ÂS’Û ¦ºP £GÏwx¼@Š“V¨=NÐÉrÄ"­äìQ‘\)æùÌB9}-¥„Yëù—ÕS ü¢õTÐ{·.´kˆáìÊ…œö;Ë…~9£SäfçuÔ­.8ñã.2Ú¸PYÕ™úv;¨¥s8”°¸Ç¢vЏp‹2,^- OÇ›_ ªó:’¶YJ’–Ý|‘àù\À|;Õ÷W!¤ëæ‘«m/{%Ŧ†>\j$^þ1м\ÒY²×«MÆÉËÔc´:Ÿ%U‚ZèÔ½šÜ‘uÏhŸ¸ŸÆÁ=}²¸Ù´]<Ìáˆú«¹‚êPC¸¡`þ- iªÑ“²#ø4ÆCV…¢ìRŒÁÑJ“Dc?Tõ‡Ïγ¨yØŽ<©‰¯í^-R‹»1k+¡Öø«e1'•öqÎrÿu\•wAòR}%6w ¶2Ô禵åäá¹ÂÜ·¬D;òËMßóQi›ïÑÐÃ#´¦¦©ÍeP½UOD’ËŦ°,ç1PnQçK!¿:ST|‰çÐXZªP•[äf‹uµ¥âtìÏãM§ïS‚•‚»˜sØ%6VmåQu  cx¦ã ßrðÙœL:Ër!m›P);•ä·˜%X•ÿêž_%ø)õz&w+ O‘ŸcPGG“ Ão.ƒv†òÀ·'­ìà«Sv”¶#S¥ÈÛ²Ûo]ÄwšƒÀôª “™£æPƒ].‰"môë=xv¯¢„ÐiSÞ§Âe Yºr">+0iU隀övtyC·FR:å"ÞÔÉ•GñoÖ¯Ž;ì­™xÙö6÷©! ¯þéÌ4MT9@SŸAæ·,4GÚ=³Ð‹úÉWͲѸúõ `y³ÑÚ»[mr4‰ÙXÝá^'ƒu _Òôž=sªÁMRÀ˜WtØ0zð7ƒgK“±7ßN!vBo<íÁj0ò˜«ØôÕ3Ú2õNõÖÁ‰†SöiŒ/8QAä.z%ŸY:r íB‘X嘑•oÖZЗ3×üi Èg¬}ô{PoÇ´ëê\•bªŸÔcÒ­Ò&cŒ(×R9c‹P·Š'Óh|å BTÈ£©–®=úMÀl5Âÿ#_EZÔír¦YXKœ-:õÙÙö´Iº|ð¤›EzMºƒ²u»’Í%yÙ¸ºt X'Ô×]c&ÉRp¼zJо/ ŸU©‹×±Þ“¥ß,c?ååĺo((Ö²ÚJøÞ±èÍð¨C„Bç:c*ñ³áNʶ뽅 N˜»¨èÌà}^‡“\>,_·í+)M_<ž)¡‰åÔA¤i{[“b’ˆÕÅÑYä}†êRK¾©ßn6ÈMNŠI/[‚€¢ž3'›„ÂÊÙðCé ¹àáR¤Å“צ¤}7t§m'‹âY¥xájIAÉDžÎËC”ä|Ù£š(ê\Ù?$Û¸x9€ÊˆÙ:¹)„ _>·ÓX[Z?ÄÇÊöbY‡ëÕUï¦ üO2Ê#e“$ËG¦5Áxœ>–Y¼¸ÞÐ^6XKäs3Ÿ-õm Á#&AéWHÉ›o¶ðÒ[Â1¶àÉR)œòœ@µ4Õ³v{—e6l@˜ûµ”Æ*Ç6]&Dú‹çv¼.6Ó£Bøæ¹ë|ÇwÙ•ÅTuê‚V`·B]ÍQ„"÷üdIkåñŠžõíÒÞ|¦q›ä‰T3Ùá®À31`ˆdI½G“ÓÃ}Ñ£7}öœü\ÆUÙ™jlŸ™ŸÉ¢õà£;^ªkÆ´Âçãˆ+9§J°Pý«ûnÕÍSÚ¦µƒ"aIÏétËŠœæÚøïÔHàè”ò¶X÷ çP½ž\ï" ±Š'[Ö6Áãj…{:ÐÛ¸a/ÖõñÄõëËR¾;Êù(Pz?5ñU\³ …lw×E‘m?Ñ;­ê²<)`áèÍjLÐåqv‡5C9•_k63<êUó2€=þ=*Z¼Z2²"uÍ1ѳ˜œ#Œ¼QõlЧßrËó8¤î±ÄÍóâms*t¨CD؉,3™HƒÍº_“,àÛ½ÒÌ6çÉfsD5;š3Poªéè…íH9Q;¬íÀFœ]Cä´ @2IÞ‹˜u ê,ùÿ’îj‡oU2ÊÁF²Áã=muóv4º·3—¥(òý,vê¬MªäQ9dzçKòju¥ ‰éÑ™ç T`ãh`ÌE° (V ŽNþ^éõ‡'°M,—-ѹ´ DLãµ¥Y¢å£^˜ì@a‘ÖpËF•ŒMM“Ë> ”ŽGRW²÷ϹËΛ¢ 4·^'d%eŒ¬x‰Æîà@î¦åëÐ=rŸ–-<Ò,ÐÏâT!mwµ%˜ÏacÈzŠD¦¾RZ$°â§§}3¶Ât*NI(ªryT‰(ÞÀ³j{óÙæåb²Ä&Hì…=évʈ\6œúˆz| ˜•; Þr¶`È †˜ðø!Šÿ9ˆãwÓ›j*¼©. /X $VZt(rm#Ê"Ÿ8jŸ ¸0{O›±\¯Ñ£#jIy—Ê´Eǘ9ö¼ù—¤\°O æ°”.HÊ‹½Z*íº1%‘mÏAðÁ•à ð`/nøºÏÒêø®. )Ø“g…_Ë6¼ë-ìëÑ‹P'jiï|yó”rÊ¢gI7½Ýq bÝN\*õUįTF¦÷GÓZðDìÄåÊ Ý~hË“wß6O•e9œ eÀ»°¶øh«yîm»m¸§Nt$9vñk#li6ê{•ã>^^]­»\Ô~çuw§GXdìVxåRÆÄaVjsT„½åL¶ÍÙ7 ¨¡o¤âú–&UdNuYou«Dms•1‘›ÖfÑÚhVW"œÌPÇ;ŸKÁ°À¡'A€¤H‰yÉåpÜžBWҬƣl[O°~z å! IIŠNÎl·+’tóÍA¶qUqõqÐ…w¼s’“á ï‹‚›ð¾Í Yï±æ>ãÝ–…ž±FóŸ³`Í!âûªË_÷½„`‡}84BIsÏ7ò´•à]òH:,‚é´Îí0’ÇDÙc<¥ó¶$È£DU —£%Ýu**UB2ÕqíBU{·µÃ«|QUpUE}—@…Dg­·Ãsh§{;)v:h¹-§XK#RÙœ„vB4ioÿ^à}ƒ÷/>a75ŠæÃŠG ¡¡ªQQ‰H[gíL)Í/¢ Äá VU߃]${» ÓS-Q-Á®¸Iéù(¯ç$"ÏZ›ñ,׃‹ÏUM›Å™»›¡^øáu*YªI!ŸEù$Ñk-Â%³¡†Ýçî;VØmkkeê*&L(UŽÜ$¹½š‹jãfk¼^VW2a’Uã;%éc×M˾7¢‹~xŠè_šþEuÏ}4ÜÓRTk…½)»nÛEB5+NꤳX{ %1´c-#Ïé‘¥ÊÃî@;”Í[jÇj˜h¿ô[›\¸ŽÑi³ãHß77Ìûhñ½öך΅ èãvs÷0ôìº2ÙÁÁp•¨À1<}ì⩪bâ˜S~V×qW›×KfÏ`e¡Dù©ò`h<À˜êš¼ny&²gˆS\ʆÈ]µ%<}4¹›Nh^*z+ðZÅf%!Iô‚WÅå¡Z´¢ôòAAµOt·nÍKq©]™“*MU§«œé+{ÀLz¨¹ã(CòÈ“"ô:^vS¦öö¬ªz‰ÞÅIKU'Få© ÄÊ÷•"HyÆNžŠ êPpšl Öa¥?×ï¡~÷ÿ@W¬ñ?ÿ]¶XüÍßæ‹µá¥1wöOÃË7ûk,øxcÝå¿?o,oõošcåúks,J“ÔæX®îÿ-w,þþ¿‚=ÖøúËŸü÷oŽuçŸõˆ‰Õß×êw¶Mÿøm›ì@¯•Vv:AbÑ‘¢Œ9;Yê§¾[QY’:@¶ãrX÷Ró¸:Œ¢ò«y]ª´TªA¿xFécYëíz;Þó†äÁHî9^*PØmµ!ÚÊæ¯%åxeØÀ‰YÔñ})€E1Sz»y³vݯ¬-„vÐÞU(e«©.Í‚þ$öÍŽA×é(è{Êθ<Ywš2÷©Þ)ôA®ª6îþâ¦ì=šŒ™{™½(­&/ò©H¶úû<Ô¬þ •í£Û·}‹êlkæºø‡Âs7«Dk†ìù>ÕëÝnp«Ò¥Ïëò\òrþÇšÃ-Nâ‰Ò“C‡¾õä¹»ÞÚ7¯“̺SE<òÌÞ¨áÇ ®±œ:¾¨Ä¬ß}PýztÏÎI I*1=¨¸WÇBc|ëÚf6M:·¡:÷¶ï¾Û‡:$…k:p äÏ)öj¤³ÞêCUIYÂfš”—‹š íŽKô4Ú¡cÏRŽç¦kšJù")0õû’ßEAn–•Vù?Im‰`×ûâõèô«LÓ9Žu*‚Ï–»Çõ(”òhñˆ–k(‹°6Ys´ÍïcðÇ,ÌI•ÓúΠ”w[‡J-]…›åmD©ÉT}ê$ætê«Ý%O)‹²/5‹^Õ³Y)o¸(®ºvƵÜ[EžßOŽV©5©jNíéõxœâÌž‹+yø–q8³“'Û*^qðÎyu"˜µ«bÙK&m“â%UoFÏÔô¨aÕãQ•’ˆàÎë¯'É']ÃîæÖ5©ÑÓœç‘Kdõ²*´†¿§EŽQŸ à»™b^¾a ]´ãpo*©Æ3QÚsä|ó^.®•š¼zB?”Ö~P·5vŸæò^YcM•ÆSosÞ î3ë³bXxaý Ýl0¹æI0¾ìPwå(»âDSS³˜@ÛVP$ü•¹Ö=ü¡|w+ûíÁxõÕÖ«Øk:kr*çÁÇKÍ¿ ÞëÍɱj¶U²'“ 6ªZ­í°ØQI±yÏóžÇ^~“¬7•4œŠ’)-EîaÏœŠ'³Ógq¾@ÙäWûó•;w,®MØÑOC…ÄpK@f™ð嚪¿˜µsÐ+µ‡ø>¼X’Ì}ˆœy³ëôq—þ\ßM`ñžÜ‚Çâb}.vO Ùy"éç “¹Æ…|·šÂ-a?Ôj·ŠDr°´$vÊdôÐ-ζRºe ¶Í -6È®”<?³³Òú4q£—½á7«‚椔Ǫ‚‡·Ã§l`•Œ8d4’ÊãôhH Èn3R-W>qÎ.Ë&uë—Òfª!°Ó­f+Kâvp´Ìðz¨˜Þ5õ]z“b¡G×î~n檀 ;ñ¬çXùÐH¡€07pÍ-PµvbÃö Ès&¹zfHf^H.×JÌÍ6{³s¿¿ã±°dœuËJÁ7½ýŠX‚,s(mÎg(IUâ$e$ò j,•¦Ó«÷t„"ë21d7gå~êUŽÛt™<§}:•ÍrQÿÏCPiXS™-[ÛC¸ô8F¹©ÝÊ&y‚ÆãXŽQ Š%Z†§žj³9ø¬JŽRl!´Äƒ©6½£j¿×é>e$›§9 Ý$–У IÎ>}b<)†ìÊZ»Àµ`"®p5ê–še%uÚõ X>Pjޝ‡‚÷EtRm€¥²´˜$ÜÛ“°2&¥o%Sï}…müvoæY ϲ¯²bq>C¹=äÚã¹ÛñÊž}eœ¨ÖAiüŸ5ÀØ÷àI{™•˜ú”áéa&YOñ5µj¯îÍÁÜûL[…œÑDSfïæ@T°§çäE`mtÏ*…ÕR=:—`‹Yò_ç !¾cL•dö–˾³^-ØÎ>ZûGÿqSf5¾ÈÇcðö(Aš¢õ¼L_Iû”‰÷$8RÑýtŽýPIÿÚ¾FVU©°zCŸNkï#Ù»ö•|ÝT4Š‘Fb{“ú/g+ë3gRLchª O=ñ»'­¨³Š–iãŽP) çæ Hw:JUéôB>áºD¢a*\+ @å&5œÊfçœj ”¥í•Çïårµ Qöqب(•[3 ŽðÇbd‘ y]›G‘•α±`lÇv‘Ñ© Dˆf¶%â"Ó\ y.m”uÏLÖÒ“4Ìj‰*GŸÀÈHj±îxQ•ò®‘ø;Ë|+º³³XM„2Ì5>Š÷î?Á­ÑM¼üž;?>¾Š÷Ìè+Ò£x0¥’9ÛMd'ò²E¬uÝN‡›±H†üÏì‘ÍÞJRºm­;C·¹Íȧˆ˜&«/•q¢T•Þû~Ò9U]†d ]‹ŒÝ·˜„uæ™2…[>œ–œq„*W))=jNz³¤¹`ÏáTΈϤ Ô­’tx*¤½ànzÓÅA°D.•7ÔRV4ºšnY“òëËÝ5ÐâY6€º¥,Q/€µ§*òC?ß›ýG°ÓrÃà)§À<¥Ùf*Sù¤ªòÓKÍZ†)jæ ´v³œ®èZYž ä§5™w•ïJX ‰¦%o$^Ç›Ceš**Q%ô¥i*ˆà™Á咽ΞBkôér¢Ã1XéØgÿªÐ“Z—c8bòmÐAN1ü.4’ìæ™‘Õœ©}o‡áX£…+EdÔèGÑk-‘/Íw²Ãn$Å7;Ø €Î O; …ͯ†þËðŸrñ¤óÌïÔ‚VyR{*cnÞl±;»Ö ÖÆ[LäµasPºIˆx´£`sÀ¦kÃ#†ç9©©—“ò^)Â-{õ‡ˆ'õ›þ¬ŠýÔ´-î*—[Ȳ/ ;ZYjóUÕï¥^H †çfñýB^µuçvTSt~þŠ‚LdeÉ$g ;¥XƒŠ6ÒÓy¤ [Ä› ¤ À‰V&,Fç#n^#(™’1h¯ :a$ƒo¢î%6ç½Ù¢ÒÁ·}¡<(Q¬,<¸‘¥€{¿I·^]T¬Ïîä2QÙ7rV c9›Ç§:r -3.¹|·N—#&J]ža$¤g“æ1©KOÍ/ P@QdËŠ^ûÝtöý.IK3bœxäGm4­¿€V£;KÒë•øc»…Oa‘<ýÛý,ç Ñ™oDQµ©ô1‹Zx†ö˪Î(}Ô•Á‚Ô òÙò£¤´¹Å%Ùnê†ñ§GõL8Ë‹Š-*Ú¦¤I¡.{;À¢+„Iu_š³Ô¶‹ìy”¦ Ûâª$`1ϰ3Ö¿J—†‚\Hê2f»D'ܬãÿ€Š:ÖT ƒú~J(Ö4u—rÒŒLL)êç©õkŒ ©Š(^~¡‹™“qsh¡KzWΧ—Oì­Gcóé ÉÙµ™mšƒSÏTƒSvÙÆ™JJ ©ËQƨXíõqš‰· ,›*i².cW_ƒJ kë¶âÈAIêÕLCÁ¹Qìœ-Wüu‚"hr ã+¨4¨TKFþ[y™9ªÊúl1R?³éUGM—꥜J{œþM5^âjÎ¥:Ð`½íðµü×9x÷Û¶³«x­Ñ÷ ¤2–\ã³e~¨‚¿ºšëÚ=‚•Ðã…éÚl濵6ÐG4[&ÇË¥þÉàèÔ9})Fñ8Æ+‹„¯ç™n_ã0)%gÀoÝàX2‘¨5 ׉ǓèòFÔRi¯ŒërÐz8”}¨)ŃÛë ©æ«ÖA™XŸÃì´¸íU4“+Y¶€æÔ‰Nw`‚¸2é$¨ qp7]º„-VöÒMI÷Àpš;¬€îsJøŽMæ¿Nr“},G²L#[RÛQ¨Pë8Sah»XÂêÕ±lÁêà÷¢›ÑAþÚvní©ÂÖ2O€0«üŠB+áRÇ„p15Ps"Ë0cqD…DžSÍÁ4 ™L œÄzµD±r«è«FÁ¥p~ˆN¼Z¢žíVÊJ«ú¯yAƒlAÚe;:4l,åMŠŽÜ’Ê)o\õO*àñ>t«öù.É’ا½§fb@I¾¡úä(kõöU*6TÙ„d@ïøoÞÝÕäbÑ.54·£‡Üçµ½Ï*·¨›+Uëf‡æq¿¾§ êUV:iMA°ã‘[Õžy•“RÞþÉ%ȵ(™'ðJoVšT£¡ƒòÖɑ镵âÓVŽs <\ ZÀ•†G™Á£Èù!¥,\:ÜÌ^èuºJà ðœ‡ÈÎr¼÷év ‰´BA–²= þN›qçm/U³1E:2ÿq©ë]8vù…=evQ`€H·p̱<¼<\]à6Î~o¯sçÁU\w¹éÈM™Gî„px¼Â—[•÷ínǽðí‘€) «XYyÓ!Ç•G7( pJÌpPÿòÖÔÖV’Q£Ê/àÉR'åeQªø¬ï¤ÓìUë®/îKàÄÐzè%L9EôPËÿvï©lÕ6éòFÒÅ]éRCÎ~vGl‡é›ò‰¼°gÒ÷HäÐ"g:ÆühvêŸÄ’”kݘ$»·îð… ùæUKÅ:ý:«ÛJ]*ç+)Þñ#ûRƒè8Õu"¹P;Q#;öLhzOrZ_U‹›(õ–„¬\¢‹'‘ÆÚ}ó+”À¯íTPÿ<›ÿæ© ôÃå!/§æAJ/%¿ºDÜj7Zœ,v„ºSËö~d7·´£¦_§hK÷‰päñ©Ð¬[1ÿÂñÙü—(LR–¬Ïqn‰ˆ¥º3E}qŽ˜<¦°Ô*²{iâ'­:xSÎi5œZì­ÙG8%Ì9šÅVÔ)KSÛ¸9¬Û%E†¸ºy$ÀêhŒ:nŠÅ`¬È›PàIMf[u˜xoqcÇ’X)ÏiEÖ Ð¾…$‚.+;n“-ì'v^l*{à¬$¾ó<7­ºƒ4Ê7Ty3©ï¿ãšÊë*Pö™AãÏ •ë$Nu6à vÛ’§×rë¼)ÎâÛú< —ÛfиDÂÙô‘^ýÞVj¨*æ•þ(3Ì#·>—<žƒUýIþ?’ÊŸÄJ`Ы–c´!GFXW¤O'cÞ¿äy¬JXìp'ú¨’‰Sjÿ«ì ¡B£L]2÷®Oƒ~Fö¡žsÛRÍ$&«NxRFP]o ÀÕorÌ¥!ï4ŠrÁÓQ»j„MžB¤¸c —§f1¥ƒ%óMͺÍÔj~_5æ›0IŸ—E¼xš‚ÀÝ¥2¨ƒÌýššò4–²ÛD.7‹øµo”U£¬ùÖ¶»¬g€rÒƒJ<“Akð& $¨Ú×”YG2ÍeõÃ# 4°–ޤy+³.=9±¾Ô-R‡¿9YK4:tÌI*ìTÞ& XS<í õ5,Æ<_(Rµ/ö˜I»7µŸp_#+¼¹N—rWªt±çÌAëR*5æ»…ˆFדEËŸmŸ°¦òi㟒tÎ9„žËv¦,”ˆTœÀḹN]™åcßOIý-¸ÇGñ÷é,JÞu¹Ñ={žž,7eY-½;ó¦PHV¯4Àëµë{@®Z/S a.ÔìñªoKåGåÁB…öy[u´úÑ=Â!bÙ¦óƒO¬š‹=øôû´¶7T\”–ûÛˆ$_ ¸üêÿ€¢ ±Û–l…=Óÿx7Òæ¢hHÈÈç¡¢˜ºýmÞiPMw%Õó P\`yÜ»·J­a.Z€³Î¿Ò5H˜Í…RÎOu¼®“N’ò¬d‹ã¤¥öÔHƒ9í³¦u®6v/»‚ W²ÿ§ÑÊl ;&/¯ëÄ•#k®ß²M''¦€aNDn«m#cÅ>´§>yòÔ=zHŸ^]=rùl箫*=°‰š†J¿^ÞέQ·â–CH_ßTÈ÷S)Ù Ò#õ"¦ŸúZUÓcᨧèñ¿KÓJ1§-CÕx>ž®ß2¢Üá) |,è‹#¹äõ2µPêŸ`J6 äêþÕ%F#àŽÁ/a¨÷ÝdZ«MÑc yt=JÁêPa‘W¡V‹Œ€îW¨õ6 Iáô”’ \gû콕3Q(%‚é\‹‚ ðçn-¥ŒÂ§ùjKçµevÎWîÖ¶ `;R‡jz;9c½/}¢~ÚC•Ë!ß[›Ð@ç«Håot@”÷Îp_ü =vu7Ñ(«¤W?~ÛffµSâò«LèÓsj­~]Ä€?,}Ä|Qln¦Xêz檜þæçò8ÛQ¶ûÊ„\q-­ž© i[RÒýN e³¾«,Ç«Œm6NÝR½ÝÚˆðÿ*~Å‚NZµê½LII±}¢ÛÔÿ˜…DœŠž'y(÷ä˜_£bžÚi.Ï‘žá샯©é´<”Žj0:+F¾t©_«»™¦5bŒý1îU½f²QW%ÁSä&k~¨rÕØôë`Ï'uxÈÎ*nârH@ÂFêöñÙ#;œï˜È¥ÛU Õ,µ!‹Ø«Ëš‚CÏãÙô>¤IÁÎÁølÞÙEßÌòY§Î˜Š,Qzî`¨úåˆ~ëHŸ•5ù⺕ٯê`ÆnLz£\𰞸œÏà²{·‚¶<žÂƒtpõÅǤºhV•rÞEg S)9j¸,V…Ñ-©ûgW•ò Kß–}k¤SêµXÉnçP0z8Ÿ” 'A_,5Jí-ìtZx×st+ ƒÆžLEÿ—Û©AÕünŒºF².ˆsvXÇ'VÄÞ¤ãPX‹pItÉb[ÄÛƒ%þØÁž‡NíÇëMÔ.:L¿Â®#í£¼L*"gè†Jd-£èÃq*`  ÈØâ¾YZÙ-š¤ò ê?ìÝjT=ž¯‚.í<>[ ›Šd-ó·gJåT\Áeþ,H£½\|Àr‘7n½•¦žÓüÅ–6¥ ¸ð”$!©l3èË¡PZ¸X)Ü ÷QÐbæf—ã‚ÇréÑÚ>IxʲŒ´µ¯žoq³:Ka8Á¤èÖå½zðâ9Ü”þy5¿1Ùùœ¤\Õ3ŠsÃÊÞ_ÓN ,¨¶­ŠÃØ‚ÿ(*°Ùw1àáÈ£JË©[Ó£”GWp‘Í­T˜øª ò”íä€0/»-}zÀÍf,rçF´ˆÈj²ËôN>ìÖÙ_Œêé,-IÉ®Tê ÖSb«¢÷”¶SìöuÀR©=€Ž"§žU>*: ÈXÊ¥Ôü$j~½måîì­OýSi¤¨fÑ‹ Qm jäR PM5ù‡o*!v(eAT§¦ª€Ý¾}¿‰êèjm™›º…§N»1 èL ÔשÒå©‚°¨ž©È òÉS‘ùÊ—›T%eÅJRÓö”‡ ¦ àeq+k¤0s×bƒë¬à¥z| nq·ëBåÁ;/#ÅA3½%%HŒ})¬0öç&§PY?M‘žN …·¬ŒF±µÄ#ÖPTt15Zhk-Í«ÔN5;IPAÅRǃµ(±¿5Txâ/).à³>Ëv6QHCåS#ĺ4NxŒ÷Eo…êkTKž§ëAy+8Ö­xfwlÕ $z)õ*Ak?wù°´R'³ÝGtQ4[Íé×"ŒÍŽõõèÉFÆHêëLbŒì, ¢ga(7¶òñf5A?B—p ž¯ôR%øSµ;x†A#˜éDëܪÃ÷¥P‹ÂƒãTGHU<´{e –H™äM;“â,†.3ÌFóc‹•Òö±5Îe©kð8§ÅÓÞÊ[ê_:®ê>ÍÖ '‹øR'ø•4_Uðwõ>8=ý~Lµnxt+s·`kŠ´X—²- ¦jêÃn°ÑÛFío=2uãô ¾m-Œ¡D10W×»ç<ØaŒHƒÌ§ÛpŠuI‡Õƒ±ppcYø(d^—HAÃÏkdÞòu]šíÊQïêÌ÷ö©©Vòš;ÄRæ±ùÃÔv¦ËóD–ë¹ÕºÁ MIÉÑÞ$1Iåi ¤êŽ6FJ_ JŠ,eÓ”ÈWb›[†Œv+ä4™@*‡ÙDÞWAÅPtYájI#7³€Ãz¼R½r©„ÐÀÊ_mIùdSißèQ®öÛô¾‹-žM¶ƒ^a½XÒ{Üûzød «êòyöÁ!p@óÖCÀ"IGŠÙ8I’å )7FÙûHÃ=…ñ.G†N¶¯…Pé°çÈÔD^ö­ŽëàtM`‘à°êR}f¼öŸ4=zÑmf“~}®“šÝyAç—ó|@JI¿”8})%º‡ýePò§¬ótÆÍ¶8^‹¡–ÊÖ~’e±<É ‡.c—Á§*®¾­‹t-¨Ü2ÃnçSÃDâß®X¤F±*ö$óçTÅþUµx;™¹KHù…rgwç=ÔÙ{³;Kù·QÞ—ÅXŸb]hG“Jg€Eœ’—sE0Q’1Q:htt‘™L)UºZÛ‘ðEXµP$¨Ê¬W@=ê¦ÝjyYš§ñ]}/*èz(N¬ÖQ~fŸà%€šCóÒpØÁÊZ:ëFT“Ô%µÛ›‰2‹l%%ÂcÞV¹N–çüHáãÁ#¬Az¶=Ú7É Ä2†bɇGæû0‘ë¥Ì#ä°ÈK9rNí§Þ[íç!h~ä{“~­Õ!m6[½]U7¶r®Q”ˆl™z{žjN½,U«ÊÆëŽÝ÷1Š,@eŸühÛœžÈ:¶ß¢ê£®¨g×K±ï(Ç•oRÎ[¯¢¦ÿùî"Xx”x¶_å°°ŠÕC…`nævü;,7P«Bµ.ï,PRºTÙ¦õX¦ò©cž’’ i¥KPÌî U4ïÓ±‚Ý/­¼¼Œý ñã"`-y¶V“¸H°Ò‡çÎ*Ò˜9¹îÚá "ÿ}z@ _Ž­A Ž6¼š±O{ãy+òê’gõRÕ¢l!®‹˜:y=©NgÑñ ¢>ÕfyJÜ5…|-Ò*bÔÁ¨9I-?ÛÎy±ä*)ˆ·ÐŠ'ð”;‡n&íbÉÄ*/RSñPßä´>Šq’Œ\?ÿ4+pè †'â¢%F­ê•U«R”´”²A–”?O©yë¡PõŽTóÈ£E} X2·ªqÇežÔðj´Ð™\s E6ñ‘/{_ Jê`»?CKF{š<ÈÄ!.l­ðÝöÐaV¶ª=fu*ÏiµõÚû+çÔI\|J°ã²H‘„«cûgø­kš~|­Î—ì5;ÐØKÿ©ðFÒ¢@"Š0ÃÛU¸Iª^ÈcÌ‘ÇxLYñh^–´ì(ÕõtYEß‘Ôf9Óž§ÙªŒÙVXTvTujÝ®·ž{Ô"é ŽÄðØíÊ 4šlOQ}Tü¨z)yšJ_óé&Ò¶MÈŒäï+…C.Šˆ®¾éãÔH½Bóæ@[C6ãKL,[–Lø*q­«†:G¬Çk!&­µ¼¶!Oý ju®°å ¥äNÒ“%­Hm%¹YŽÒ Dà+r·q¡ðÈdtÒ^Á¬ZœeŸ¿\‘S"ÀÂnŸS²ÕbgòâL+¶4³SJr=´I`µ?UʈG“J­,[|QZZ-ÉH¹§û³zCM3?*EwW×Þ ™‰ZBÞã>ß³·”*d=(ÚÆxÇüdx¹²)¬‡¼Îå¸ÐŒd&íÆ‚µ’fïZ^œ£óÔ¨Yds®éVȈŒ –`§Ø˜‚ZùÖ|m–|CÊвE6U‚\Yd/¸¾7a\}­¯¬$õÞknëï¡……¦ÄDJ’G±} -¿[ÀŒÕ4Hn’¸=*O¯rLAEgõç:4sèIÊÞ~7Áý»øN±ÿñÇóïc÷¯þ¶9öO¿òrÝ[û§1ɾ_îoFÙ÷Oÿå³ì5¥ÿþfÙ÷½þÍaöøá÷¨V?äóúºÿG;ʾ×÷ÿÖ,»ÿà¿Â0û}üÉ¿üùé8»‹âWÓì×ýá³_ð¾þÉoFÑïëÃgŸ÷™pge~öñ?ž>ûé~L>û“ü˜?|öÅ~䃿üÁ8|øðÙW?ø‘Oþú?òÉ¿ø{LÖÿ·¥gÿoOæ’²Q|mâUÇËAæ@v*ôä¹¢fî3Ë£6­ÓM:YåðîѲ;AYU¬%j÷ú§))£§.A<Ѧ]KMgÔ¨‡tRçØT°w,cOš–Ú8eHÉàQ˜½×–º2¨í<mkŽ‘éâëȘ‚Ø1M…üHæÓñV–H7RÑW¶{$å¼`aµ·>v´®—Ï¿do/îŽLï` !hGÝ¡«¶*;“Ú××LD2ã¡#²wƒI² Še]¥¢l'°]'Vfò$éÕ¼‹¨+å‹ÄzÍÀ›êWç¬ÑzßnÏåšaͶÈâΓÄyÖxDõÒ ¸ ´.‘}è¬ë™Böê)ÂN·áRc­C‰¢ÒÁQ@£vç<†wCª&¤éFþ„rqCÙ‘&"ã]‘‡¼³áC–:¶YŒŽß§ž)êF(õî5]’ÞXË9œu KšQöZW3ò–.SM5–Çá¾(¶©ŒTŠ6X¾ƒÛVwÔSl®ƒ=<¯k÷aæ¼–ïÂÂWÎûøÉº²$õãÑÖLÙóûtbŠÿÓ$ÚÒœ]RÂþŸíÊ7ñ^´o“sPÆØöM¯ºÌÑÓœ±Š‡´¡T¾|(oST‰áɲXŠ\¢sÿo-ªàKPYv¸ ~Êt•2©îSçcæE; o_¾‚†Òœ÷ã( «Y±îæ98ö©1ùÖÂM|Îz“oïåKõ씪ûŒYRMY\¥‚Q€®,*k¶ÚG;ե׌^3 ¢®*”ÆÓÐÖDKH %ìð÷ù‹ö¸ ù—¸rÑyñ&hêÐ2ÞNj«*yF±¼Ä‹HwªïVÔÇàwnVƒ'ÂEÿŒ´l«†é¤Zé‡CÙ·œ“¸QÉÜ4rúåxjÑ þ•}zJ|› ÷ó3vD™iiòØa m†È§ÊÄðFy mÏ$OnaI¯éšª>ù:mijŸ³Ã`ŠU ØÝ­66¶ìÌi[^c–—4ë`^Ž„«*¦öû©½²âAêKº÷T<Ò²{Nã/GZ_ÀõCáÙ“Ij®³ïAíI(ªöX¥»—לT33À„—}ÎRëz˃¥U4;Z@±¸üw‹èßÑ„™è% ô–‚ÈK{Eq„ ·÷:[kŠŽ-(®QáyO­äâó´um–1O_½iFÚ*ý ’qÏÙ‚Ë „iΫAÌí)VÚɪtöm©hXTóöô~–îƒÄƹ3À ¤xé„KµsëœVµwˆŠµËßìs ‡ˆ¼á5WR±H"wg=U¡ª‘'À“³/ª½®%ìE“ x{Fpÿ-ñ­K3gñÄ ½rHw’INQWùõ¦‘ à£ò·gÓMfq—¼¢[œKt6šêe¨—Œ¬>rk·F"8²¤Á ‡3¼C ÎMmÍßÇU„Ç 8J/¸ x͸qÑ£.ijÓqƒbƒð@'ë·x”•!ðe%&‹#ó„V£‡ñmxœtj%RœH!¤o^#[ˆD¾2¥Ô–U`9MQ­W 3bµ^ÜKj4…o*KÁ1)šðõ0Kúu¿]’Dh+R”±|ÚöNn8ë)Å..¹×I¥gi%AAEeó´í«"“JO(r5%À1^åG´Ö¥äe[4¶Õ‡Ò•Ú3U7Cp\]^ÇëÁÜ¹Õ ßÆ›<¨=”•*&õcfÒºÉr5”Z4ª.°é¸QwJš£¦JLäÃB·)#= 3>l{I‹ŒëTU‡–wwVÓܱ)ŠkÞ³ª‹Šåtl„í·ÏûuOcû{Ǧy7™‚,¢Q«âa€þ“B=Öiøõ¯¸°ÔyY&½úy­×´VÒzµGŠñÎT±ó#›Šë%tÊÈ£rãäýÍú&‹…uuÀþµû ®Íj¬k|º%%!\sõ‡d¤Gá® Aª5 ÂpÒ­nòº '/5—ö†YƒTTe%I>õ—TN}^P~m¢¸<°™lí¢Ò$?s‘zT\ÀŸ´šLœ»ÍL'kT»xÊ6VÉI:j†Üõ3ßšõQT ¯>ü²ÊtìMùJµËDÙÍ]}ó׊••(ÊË\™äì¼Æ¤0éRù•Ç/Ò[Áød¦zY9Ÿ  B‘CbŒêŸP•P«7¥AØZÉ¡O*X_B®aûQê‹|ŒÂ’@TlÀwë¦I·ë“$ƒyÑgËÕG}ûa™nÑÁ[²Ëd$~'éœj"îè϶ÓÍàý43ùª>G=ÊÖ ÔèêeV³¡é˜ª&;e”q5ÀÚ©þ[˜2DgT?ĘŸŒNëÙV±´â”ÎæÎN'6İ÷6iv¬C»óþIÃXF;i4ܽÁáWŠs€eß.ìÇ™¤<7¶é~›ë:ØÀkfw^  1µFúzž®]G"*v"X—(~ðßÙ&Ž2¤¾\} ‰m2+€‚u{¬a¢¢JA_ *×zZY‘ˆ•òÕÁ¼†ŠU P}†“\ÈO7'O‹2òæ àh)ßÙ#µ(â'õm+þÍõ:>bM×g6Ôí¢ˆáåVåúäÝug_ѽÛ|îé Žêÿm§lû–0·ƒeÝ-ĘÛÙ°<ìS9?’Ѓ=*–ëΟ 0T¥ÐöH¡K>=9ÝøÉÛÏÐú£Hÿ% Ùç5²M<ÞP?j~tî‰|¹nî„¢XFoæ?ç/EæzéZj⪃¡Ò£V?µÔ)vrÈ6e¾ôVyw­³‰_…Êÿ£.Y[B0ÉUÆ&ë¦l’4 øÒ„P—wÓ[;3¯B Qqóûðî—ÆnòBÔù³ePLl/!C­µkÑà˜“„{D™­é ìÍí²i †ÇÉý§¥w„ËØLJ ‰·@°gAËo!Ô>†˜aò”€êü¥Ýˆppz&^‚}jQ³CÍteKAi…HéhНÕð,Öö¨F©X®¢å¥ˆ“®}×)Û_·Ží¼¥Ô·q+W6jÆZ‚‡#™‡}}ÊtV9ß1Y./w1ìê&9Sx+·«CÆíî©%Ìk×—ú'·ƒ/z•h{wbñ{*#§×¢.Ô¦rÚ›¶vò1µÂ—¨øÁ$¬+KÈ7æ;2èþ¤GíŒZ³Jp§Î{éRZà ^\ÒŠÚØûagÖºC$ééF>«ºO,kUÝÝ1:_F—óÑåˆ[àŒäg×ÓÍ0ƒãµż޳óŠÂ6êÀL}óÆæúE-<©Ãa_Sñ‡¦jü |q ÛpUB``í§O­IŸ–†Ãù`’ i(¿#rüîþd–ý\–ýíT–ý£e²üèŸ ‘åG?ä±üèDc)íúïÆò£¿…Å’.-âðù?jG†ýgX,?úÿ#‰åž ±}øìósÿ!œ×‡Ï~ÌÝ}ùå÷Ü•TùW?ÿ¯Ý-û×zù/Ùzßÿ»+øìg¿úÅÏ>~O@¹øÕÿåã7ßSP.¾‘0ø›Ÿ¹³Ï¾û‹ïÿž5òÙw?ûæãþ…l˜¯ù=O%'þà‹?ÿÁ¿¸?|öéÅüæOʇϾúâ_óÛæ7¿0¾ÿ‰<¿ÿ‰ \¿ù©pyï÷?ñÍøýO|Ê¿þþ'>å¾ÿ‰ûþ7ßÿÄgþÛßüTùÌ÷ýOÜÞ¾ÿ‰oø÷ßÿÄ#þãïâþÃ?ˆ^Äþäïfý—ЋطŸýü¿6Ûèoøx|ú‘Ûûå~ä2þüûO¾÷/gúñOÄôC9Õ¼P&'ïí1§mG -%›Ã‚Tš~ý‡Ï÷I<ÆàQT«Ú¡Š i4^Ç˳XzVjIžÂ[Uyž¥ÛÂ=qïÏ{Ÿo¹ßÁ' QÚ”®ƒ‚ð=3¦Ä ʼnœ•ÞÎÒ‚6™+÷´F»ÕÓŽÛ¿A‡ƒXFqæúÔ¯3Rûzâÿ¥”••žÛ¤Džå5UUVs‡Zˆ{žûS&e§ûÑî{Ö¥5f}7!äÕCØÆŽÖ’ö‡‚Íž„¬ªÑ³×|¤¿×¡Q»“'‹W½ô7ÌÒ/.âK×Cn…%AÝ,¡BM '}µX瓞ë8)„ï&“*\”ú@Î3Ùl ¬ÕŸußai'ËTÿAÝö.G}ù#s©µe§Ê^º•;ù£ÛùR;ŸŠôª˜¸6³AÆ ©:Å’¹AãúäÓàTÄ8 Õ­–“ïYÛ|äu[m£ïR–1J‰÷vÙÜ’3ÓªÛ‘»oì·ÉMZz óÏcPwIrõ¤©ðÌõã$¸³œt ­ù,È[ÊÔð×ÈrÖ*O¨¾¸”sPjâôýªìÄkNmiÂíüfR4ºm!ÓûtžufElR>|‹¯DÂ=¤©yNMa›¼dõISÖáIü#¶CèÚrª ìáðëðô¡þáÃ3è¤Êá+}íV¡o©9ÑÆ­=û뀡¼­}šÅ’ŽHƒn9n5ï.Ï#—#³·“UwzÆK®ûÑ‘Tþì«¿j‘íÀ ’ŽêËó סo䉨שê"¦/÷¬Ô€FæJ¡G5,Ö˃ëJªªãS²ö³k9#ßEõ/Í@‡ÝPöADÀ\o–ñº¢˜røžDMUˆf*\‡KŠÓ!N(VÅ­Z€=i[ÑoV1ñ²F&ÔGrH×—im ÅII=­öCóÇô ²O½û> s´u±Û£í§ü¿S?¡g;ÒT{¤«·r~[W6ä ÷«¶g‘w›‘ÿ5Qk*›;YòR¨SÆÙ” ¬ð$;¿Š—#rQå ²Ìf|÷EØ_üñTÚ8ʉy]ž¿½¬v¨.³át¤7ûxC“²¿Ü¯õòÅu˜…µÛ±µQž¸‚Zªä†¨8ÛÍ6屿ñ*A3‚ZKªžÏzmAû[¾ÚµßÀª³8ñî ;$³ŠÛsëÓc¾Aôlœ²p]ÚtÙÑȚ5 6]³Õ×Eç¾Ë”|H$$ºɪՓI£¼j²+³ÖäÍEfNéà±râVUˆ=ˆ°wf³,tŠjIl“bÞT"Hjfq–¹µÕâT¢><2)âz[ð+·{±ôÜ!ð4O yŒ•µ}`‘.u7 _—ë¬,áVSGŸLÌ9Ó£¹›HéVŸËpÿ¨"Ⱥ&ÂÛ¤%\²Âɶ>’ õrÞšÎëñ-‘DOooI:`UcR\ ÆýÉPw9o]'àâ˜Îˆ^ƒL8;8T5&Þ÷ó4–-Wùœm6îõ Éð† %æK®ä¥n.Iݺӭ¾–´6†„f¥n¶÷¥ƒ9ÙŒ;‚ÞOsª¡m•?IÌ—þÓº:“̹³ªŸÅÙM…À<µæ@v¼: ÏE×"¶œÇé!oͧ©„º²ð·JgÚ’O‚Q5Ãõ ôÐRÀqÿÁF¶,8»OÄ÷. ªOÇE"`S.DeIˆ˜›ÅÓ<ä<²D’º7ui'€š± ‚DiöAA¹/ àÇ¥æ@׫´ÕqåÔ¯%ÇE“$jë$²æ*}3n©¯Ó-Û6£OgU¶IæÊ“Ý÷1š¤9%…§6UQëÎc&KZô°$,±ƒœ-Û@j |m©F™Žô¨BAÔ?XD2Ñ”Â÷­€fÔä‰(¸,ž[5Jj£7ý?ö8OªÙËç³)]{7‡ôVm7ajŠŠQäíÕ lÍ¥³†JWÚN°t0U´D¥ 0ø­’Ê8‘} #« s¼ë®¼2~Ka_W_Ð?#•Ÿ_AøW¡*JVûÈ訜6w}’\yS ¡[„;xeß ¥O½iÉ@Ô?Ô‰–aÞLæžj×Òv.wù]¤ÔñmÓêx ’ëú„‘š´zYÀOuúÊ’ÿÓ£Š-’­ˆÈ¤ÍÝ_í¿*Á£v¥…TîNFT§‚m§'¯Ù¯ñŽ-(KïÃGÊ¥ü²VÄY§w@ÛlŽk¼b‘(sL³. LÛ­2U|”q>¤#Ib‡™I{s~äNA™vmZÜÓ6Ÿ,Iþ¢j§Ê‡ö Ýñ^xå&œDaÉ—ÀñòˆÔÐ)„+P~ú´²ö»!Úó(ÚL²Ñs’å?t13_F}”Æ3]æJ„vž[/×–¶¦$3ñïØnÏ}x¸Ÿ39í¡A3™£Y_Ý÷@ðËCá© ÄwÊÐÊaïʼÍ[Ê*´È£<×3N ñ :jÁ¥,jÖOU9ª  óà2–‡,ÀïNÚäÕ€˜žTúTo¤ òøÒ‹:9ü{m›ît¬´_ªÓãÙÆ¶‹ÏLÐ*å—m«‡u YzåÚ Ê™ž("³37š$“»ë:È" 'W}çvïËiO­€áîW=Å  Ãö%=¼_%÷ÀeSÑ;…\UXSѨ;€´w.'ãc*æÂ>±äv§j]ÚŸšÚA¼­šËœ[ù•´ó‚°¤ê9"šÄ¥ñslçyo9¬ô^ÉÖ@VÔ»Éa]úÐñöØ­šµQø 'ûe¯Sí_¢€móÞfƒÝ)ïãžÎ­Ë2îöDÉÔÎ? Ió¨ÒuÕ%kèn:GV¬Ú~_b´3:%Ùðd´ê ´iõå}‹9©®µ‹), YÚe¯IöF¾Ð TVÖ.ƒ¢ÃRtü¦sÓŽQÜaQæñW¼žm3Êiu9Ááìé©l·[îQW ]°HbÛÀÚê—•6Ø0—Xþ%qnQWÞÏa묟]MV;V²›7ìB:XSœåŸš˜‡.JCaÀ9(x¸§¾¥­¿Žà³(¾Õ×0C¼ ¶‚¹UŸÎVpM`¾E½à™îû¼T•ê×r!Z_’=Ÿ)8²fyN,/r[…„xzÂE]ŽmdºŸN®±7«䬛í ÏÿNšëåS½ÃGùå±Ç?½·ŠÌµéu+v>Å‹1sE¯×Á=é>QÌXkêG>ìkÙ¨#Oàãk”©¼'ÅÿCÔ{–¦³ú$µZŸažrŸ; O¾t~RáΣ2iK/§¬yqÖ9ÌtðÞ‰óe7ŠF¢UXÉ lçÀêÊ[ÄÐ9-–y<Ó>»à¶o¼ñ{•ü|ˆ„b~«{»K7©$ƒ„û¡µ­ÖÓ0à® ³úâžÔ2<§¡ÀžbEÃ<Ú^¯îGÊ?ذ›z±È I¬‚2›ó–=A£\-ßÚ–Ê"`h_'[’oÑÇÔñ–÷áýyq{’ë–cáO%‹¥€?µc‚ïäB­Ú]gJ]½^}Y%Õ+sÀóGÆ5fš*7¾ krÀÒÛ¬¨ž¹ÔÉë<1–êíŸÜärhL%²n>Mj¸dƒë}k±’zÞaµ8X»¸ íuèÔ -ñGN½ê-/®7w.Þ‘mõ~ÕýÃØ£~xrC•“·k’Íh°JÁ<ô;,‚•Ø¥Ez(Ö][ƒFao¢1ÑÆ€¯¤&·¥v¶BÖÎ4EÝÏb(òŠõÝ_Êtש/*©•:Ô’“§æ°Éf9=sÔ[Ž  SŸîJÀ)«‚ýÉuðÓ—VÎTFd÷vöƒ\nUí¼¥óy*aKÐä[‡g÷›ç¼GÛµÙÙ¡äÛ'8µ£zÂv, ê²;—$6xL£ƒÖ¶ÈÖ%Æ‚md|©½=H|w°2EgÕk'zìO8;¾÷tM³1 Õ)Y‚„âó7ÏÛ¦ vU4›r‘v©%›{.JÅ °?•¢Eµ]+Ê4ÏaU¥¿· 6e…“à7Ûé iswÚ ŒÇQÅ©86%DsʞʈhB4Hw‹7˜(øv*ñs[g ÅÁÞ žâD•³õ%ðÞ3ªNâi²î! ß àr³¨4kÓe¥:©Õ4[<ϾyÓ@ÜùOgvÚf^ê©­Ò©Z>Ͻ՛»[íÖ–Þð*ë¨0‰é["H©)6M‰išƒzÒÄ _mA‚HO]x‰xlCÒ»äM•VéèÒ܃½Hª¿ƒót’P 5w{]ʃÓ=3¹ß¤>–6_•ÓéS—UÉVÑqË)Æ}±•úzÉ©ÑðÜåv^ÚJPçó¸®K ß¾9U¯ŠÄ;UëÔ­„ÔÍT³CP‡?©ÃI.ÅØWÁ{ºÆÞ|ÿɆ½„²Âé1š RlìKñ=–/é`©0@!*:U‰—L¯-«SÍÑYbV×-eŠß/ÝÁ\Ϻ¾$ã¥9Ý©z[úT˜)< ð+PÊI%Ò™n‚}%æÄWPxz»U»BÀÙ{4Ýí;Ë4²ä •$ÚÉžN«½“b4ÔJðXnÇCÙ\¼èz©®uP\þ´ró°×$ªƒÝ÷T¨UMÑb­´®TSxqúõ‰{å籕Õß[kàQçåPL#’…œÙROY ÝvÔ àknkŒK ®DNS°à=¶µ%§³ë ÞðŠtǦÐÐ(¬³¨%¨ +X†ìM<ƒÒÕ>ÏÖ¼Tx#nÇL=éíNòJùMt§¡<z¸@âY<\{ª:‚jf޾N·¿ ŒRÝ3*^‡yNÏœ T¨öÜus‹ž3%e§¸á-½ ôÜT· è@ÀNJ¼Ô ×˜íqm‡ª’뜇ºa×&¼)å!æÕ¢²ôù¸²·®3¯„x ÉSÛ|‚+†û˜J ’Hœþ–‰}Jü[MßÙŽ˜ È“wé9ǸÂÞ8d×ÄSZv –ÖÑ×í°cýk÷ÞØ´jÑ¢Yò™Ò'ÉLÒiŽ1x6Rը㴵®Ê,¨ûnñâkzl«ÇnùÄÝë­Ô°$2ªw‡,hT4¨Ëq.rA‹LVRWJ—o¶nÍj´fX) 7ííA¼„J¾ LžÏ¤~›ù )b— ‘[%†7}ÅS· «Écñp|–à0Ë6, =íÆœî‰ª»/]2Ç)q昑…AÑž/›åd—ÜoŽ#¡ÍéþâЕàÈ‘§Sõü`ïõÒ4”Os¬÷ÖHÜâ}>õ‰Û‚/7 `Ë·ª²ˆòùŽ4V‰âÊm\|¨p)žÞ6÷Låz³)¢'Jä…¤È5N?”¬#ªžfOõqâ4n¶þ‰:£[%œˆ Þ€y,K®[FS=ˆgmKè©Í ¥r!/novE#X7…¨GÓ®³Úå¬`´l­9R§ç[†îú¨§œ£C].½HïtT¶ÌI¶Ò3øfó“êtnYO½;ÐLPz{ËvÞÅj¼OåÀQ÷æ©ê vʶÒü3w}_вyvæ ˆ0Š(%Ã)V×?Q‰/AK½h½+O›‘YUvv éÁðH`cazˆX¨(kó”Ð9ÆÃë": QäòJˆ¬ÛSZ¨Ñ×öÛÖ´‘UÔ4-“m©À/d®ƒäA„˜xnôÍß²yjƒ×¢P»Ù°¼º%£ŒàvçêA6‰È|*ÏÉK³'Q‰<*.è:Âßòw˳ô‘´œU˜=$p é6Éü/ŃU·U2 r±G|Ô˜‡lH¥¶+JÚxr_­íþ´ƒÅ”„ ±]ŽÖ¿'yÁíåªø“:UÔ@ýšjÃö˜«·±TîÖªr¨e²¹ÑKùÕ0Ø‚gI mnMÌ4ÿ#Пª¢'Öƒ•ž^^ûÔÆÙy Ö¶²„dìצI׉K/Nƒ[cì]¥Å¬ ÜÙÀáU½7uÂã–Æ}ì¢Ç qhÕL}Zùj<ô,‹š9¼VªÄW)ßCDgù¶‰3Ʋ®c5¥V^ƒþ%ëk†$aIHI§…•åRW½lþ;ƒuГ’eú\¨¿¤zÊ›îc…³ë«ç°Ní/JŽÖæ‡kN(~r:D=ë²ÊªKíhÝ6£ÙÈö'iòÜo§(0ȸ¢'áSÖ¡½¶[ ~U½AÇÔ˜Š¸pkwÐÜÅ5IqH¢Ö Ž»$®Ã*·©w¯— 0ƒòá|¤dJwà|ÐX‚ÿ >rÂ6ä¹QXa߃ïtÜßúÌr* L°ËõŽM‘гt¦†”Þ£nW:•¸b®LPêôD`›{‚Ʀ>™ž R¢ Š"_"°R®Ç㦺Õé鲸¡p4%üã¹ÃÉ" 5z9Ý SRŒý>å´ÁYŽd#Š'™ÎªŠÂæif¢ŸidMh”öÜ à…fÍçó°it‡û‡ ZÝN?Y“(‹_ý)¯gÛ·6R¯‚1Rÿ=@P[Óíʳ'&òv6÷ô­a~¾lD‚l×þk‘ÝY! rv'Ô]U¸Ñ3ê V´}<íN\åY'™çQuëŒö]¸Æ—ÍzeÙQÏÃvoÇ©í5{TlRQÒè˰ÄMqÛZYUç¨\OÏ3œÃ>¯&¥‘za©4ððÀCsuúbœçíc˜zûUëwê[ÅäUR‡âMgÑ>]².ÕcÈ8¹äG„©3·³ñÛ6Õúý):bh—TðÀkYÉ÷·àØ­-HbLVNVëFÃÀ^Õw¸µÂÜæîl‰ JÝȵpß)™§/>ÔBt |©hê{DÓ[æÏ>CN•B‚¿íPíƒÁ® ”Ã÷¡LÞ©{Þ»Tye±'qN†KéD™G_äõ^M:m¹n©JdÜCw‰Azë\¼v1Ê÷$׆G†“"‘ˆJ2wÌÃ$}9ó¾ÞmDäIóЩìÒ:¡¨üÖ¨/•)uÀûoœ¦±ªN¹Àö¬ö”£éÖ·E)‰†…ù¬zF²ñm1RGcƒ"^®õ°%î½Å wͲ5Øa;^OrÙ1‹©ÉÃes{îüªùWO·•BïAñ*b`àw%(p—÷¡¦Ð怶Fí¥0PÖ‚õ²ñôÂÒ@\Í*¡dÓ>i¾fõ>Ü´$ˆkcKOšŸK—\¥A×<•=Õ«°ÆŽ ì€W‡ò¤3f‹¼F£ír±‹¬¨í€RÞY–CoåŽdBAi;xM` ÉN–ì=½4^9Û‹£¢Í4}ÏžÅ^¶l|ÃÖ ± ¤\ZƒNT.õu¨I¶agýØÂÐG™2 n¯ú*×å°n¦Mƒfe6½5ç:¶jrÉ\v¿œ+ka±òlžÉu࣠"J7h?¼ªæ‹—ÎÆ …Aé{ª3D )S*_öivwØ öŽêDÓþ«u¢:tEÍBã#š;\éL.)GÕ ‚oàVQàU‡QR½%§4BEÞ)¯µcž£ŠÃ@ÑJýðŠVUŒ“’ô¥X Alw’óú% l©™aøá—_²(÷½;Ì1¶ádìj¿ãŸ®•±=]]dXn:i{'O}¶ÅÓÒèÃî~Èä$}dHïéš¡'xhósm Ù7ºôð Íᮩ™Ôö+,J•\ó>sKk²a= Ç$Ѿ\xSz‘>*qk6OQš¹"Äc{—ú܂٪­ É£+œŒwO4¥‰){uE'=é²Ô$>iŠ7s5¼jDéÙ”#$Î9ùñ´+ér^<¸5©áÇûxX¹†L\m||TCØáxåÿ‚Ìs ʲš/•œä^l®¨Ýì*ŸçVÃSÞ&?Áì ’>pš7ÕW•Hõªá­†Wâå,Ŷäƒ= ”Þ¼ˆ§/]Õä2^²ÙUU òž?¡6;âÀ|þ1O5#7¨g;« Ô”$û½·gÁÀ’Ê X^éjÙ‰ x!ÙS14ó¤™%Ÿû}%5“J/m£Kr'Ç­¤8ìöSàùtë©üz¬M@ÖÒãHc UGkeé:˜=¤Xª¼¤Ú„@‘U3çñMO¢ÂqÝyHýÅ9*² ß¡—µ4<²9F~¼móK­— U® ;ýÑŽŠ* °lu‡Ô±=ïqÉ¥8™Ž”•/7ƶAѳ¦‹úØgjöj«y­ú iåAEì{:=!7\j¼€O´À¨Ü }P ó–½ >á‹’“T+~L „È[-ú–nI£ì›u™ «¯Ô[·<)N…—Ì^A¦ºEï¹åÉ\«þÔn-6Öïª\-°E4&/p` ô/d›ß2y«Û€Ä8åûdñ…Gcàþ­ –h`÷åÔ]vãªËº¹Â¯9ëRm×ú§xXúÃ^ûÀéÐ]¥8Ú9ËßsùÝ5pË©¦ðEâMáéÂ-°CTü§ð|óQÁ×Q«m6ž¶V@¾¤ÃPó}@~“,õp›;µ4MÂlÏÞ6\ìâ$ªõf×Ü~:ùµÅYY{aÞ`¬XµbmÎóèæÞmäý«uÙ/‡n`S£*ïiöÂ;¯nà-„MVt=žÖÕ‰ÛÊN`ǽûô„òY©V]ë›æJEèuQm“±"€Ô V8¹—ì¹ ë‘*Òù\Ò¶£ºƒ˜•{ßs+ü;ÛÐT›Ý9°è®÷¸×‰ Ç4ÜÓ,š5+„EX{²îs\«J#UÍl²ÐêµÝ]¹î7; QeqR‚ù>nT‹~è0ÏCœ”A–‹:=‘Q$™\Ü̪ÕJc:Ùã™ÞëøÐnó8ý!‹¾j>Qz;ÛSÈ’Y¦gýNïÚúAHö𠾡ö³Meg“±Í«ž¾v¡ì¦úh¨7d§ëk.ÞôÍëDü8Ô¼c÷\ǽÀe¼(rêÆ,‚l&ݺ<ÓÉóIÖëS1L²¯ƒ¤ZœÚ c£:vÛü‘ãc·,²vs–ñIÐ(b4õñ>ɤ¢RÕ;<’¯cW\·ÌÀ¸t¶µ±h¾¥Þ]Çã\Ĭgùñž« .&rás\2<ŒsuiÒ%l‹/É^éL’m¡G¥Pç½|b«ÚA>58 ‡J®,òäÙÞµwº«RJD¡[ã{2Ï&(t]eš]•àèá%ÊsPÌ'ž› ¥-Áµ…\©KšÙ|ìš•©†8+‘i0»¦5WÔ¥*¶çÀÒ—^2ÃÊ»é_¯;°Ó7™öð“Ø»³3—ÜGq…V®Ž»ëlí wÄûWå[Ž’1êçê kïаֵ[—èú:^AΤRòîy=‘~Ø N‰jU~«vÛüƒAMKEMÊwxú­Ï {ü@ NùhÕ£sU"•Êûòa/GÀ=¬n)zÐvn’“–r³¢ŒiËPOU‡™Hò¼K=)Š ¦sçUfa·ƒž€ï%»»©XHÃCcîêÔ× 8 ôѺo3ÕÆëXe'òFDf œ+<®ÆÒ°‘m«¡\[xÚ9cM$É=8NÊ}’q“’ZÃS>…~T‡¦ñÒ” l Ÿ½§Wà3eýgÉ#.ƒ¢º'q››’˜¨#¿ÜwB‰Å .wÒlÕž·{$l8$¾¶N%H¿ºÈ÷ø‘oE§‚£’‚yíÛ(fN íBòóÖv'íR¨Û±;½¹¿½U¡^6Šu£á(ƒŽ–Òq”)Ö˽-ñý]îõÒ¼h_0ýô鬤DöCsÜkö j³Öáw×Ô¨Ä{êYx?ÊÄDä}¤\À‹ ¾mõ°r¹ôï}pÉû‹e³¾ì ‚»´}O@yγî¹1ÍÖ«€wDà¾ÁM›eeÚ5Ba16øˆbö·£^òÃÓ&rMRš€Ú|î±æý–ƒ[—º¢–Ek`ª©ÄëeŸ?Rh±Ô¸L .‰MíÂÓ\˜­(m‰Ãá¥ÛN¹È1¤aÄ"¼°íR—ÃJУף3 ‡ö9Ùr¯çTépN2;ì µ$žbØ¢ìµlÀ¾*‹9WÙÒÜÚü%Es“éöu̓ʚà/Û@¯ 3!óLì.ViŽ:.²à}õJ؈;ôñŠLúQ”!SRÆ ±ú!Îó±èn*$ÀHÜô¶ÌS²Hì½¶à»2¥¹Ä,uݳ~…íA ¶]x‚À]êe£ÙÈ,•»£ÀU2ÌS©ÕŽ×„4ù|âp`‚›Dc°àWáGÕg‹ÔPۋÚT—~ìsg³de\R<¿GÕ[EOG!^²’*çɤèÇPÕWP¯g9GyŽOÎFË.NQaø1êZ=Ë+õpUíWY¶ãÖUðwéÊ“­CÃ6€kΖ–Šmæa)XK¸.›2 —Z§dGÓNÈ_-X-¯Ü ]Fk9ʸ_ʘO©{B«Ås標šÌ€k–)Ì+“:¨ª9g\*lª7óN‰^/i—mDIp¡  ø®Û¡·³ÕT² NEßf×z¡zzjy¼î'ïJÙ‰ Áñ@y²¼¥‡t™$£MÈOp¹¦0Ô¼Ê圠vÓ»þâ<À•’=Z×`K•ç‹­ŠÏ2(h¸ÐõlNõê[D€ƒ›#`k"b#±3G¯Í)KáíTÌ`ˆQUôÈiªÆXÎÌy.`;&ÚÞ{Ÿƒ¤ù,0ß”º1Õ÷%|’œ_U Œi|Ü-³ÊÁ4Ç‘õ$PȨïÁQœ º.’ٜ٠[žHÀ:ql欥Æéd9‹¼ûŠîå<öéAIê÷$GÂ†Šº”kòk²R;ïEA^'Xù´B½…TÖÑ)ÒëXš  6‘X’etK-*DV‚¡æ&PXàNS´(x-±K›w ÏåùÕ‘kfÝ4I­¥&ÍáWªÒ’3³ç/yEÏNºú{†«6 …&ÙÚú¶«NŽ^¸²–ÁÙ¯látÊ(skˆ³4)XƱjÐrxH$\摹ãxó³Páh˳¤±Ï@:š‰L Ü©2Y¿¬ãkû8Ç-ú6ƒ³@æ¤Oõ`YRb9ÎâLã<=Éöü¤aÑl™Km]q8œ(ÏÍkjÝ—’¯ó.²»(<µ&»=Ü’÷d×ê\UÄæ¿‡£¤‘'Ï}M]<¡ùꇢ^H¼Ž4ŽZui8%[qy¬,Eÿ¹Uï:_g(x°Ù倶Úñ$Ù6Ë}‡¿«UBP¢:+ OVwœCö»m ÂËé‘ðNaQ‘óG‘Ù@Ñ|ðnfBÿ“]ƒ£n¹{Lë)MH¢ÖòZI¨FB/õ3:ÏžœK‹“P¨+“§°Ï¶‘GÇ#¡àX¼Pyfœ§¼QPE‹|T% ±Ÿ³’õ,½Ûm‘£OIîkT È”6ˆ)„Ec©~âꯋEÖ¶‹´Ã˜,¢*Õ*»•úFl,ܪÐwÞˆ<‘<¢sÌGRe@mÛ‡u’/55Œ‰€›X˜} žñ€Ï«¤x±ë ¦=bc#S’GV€nm*㿤5ÂW'öhuÎ dèpíÛœ›Ò¯:ÚõîùÐæ9ßBi¢ŸÞ+hs®˜j)Ïn"9æÃ6ç;É1‘µÀNÙ: ù>zá­a¯Ø´½ˆD æ€ãÂékb±å9°†5Kdg©*»-åj ú“Â’Z99‚Õø%-ߨu¦—â¹mÙŒ™¹êd‰b.Ðú:Ý’×v9l5G‘Ûõy²ÖŠÒE/±>YKÇêQçwp9«ÉÒiº¥½ªYKº_Ž 4Ïä×QsÚû¸©/ìC|_²Å‡!J îy*^®(»7í”{ËZù¹ƒ‡]m KÏòLé°ÇØ<¡!!ßÕ# Âé܃õ(Ýuf©ÎœïÂc–ØÍÒ,æxHý'1ßÂzu•Š~ö šdÊ•’9'Áf ´²áZšºãñütP¹–xÚ͋ܢìL¿-DyâJꀨJß{Ÿéù’kéûZ…ÑÛîfÙ>£Êá[=Ò`È!~ÊxÀ59›ü"WEupVu…ö÷!œìQœ±G°â–;öáÀšÛ¦BÈ”õíÔð”¢[w {ê xkÌ2ìêòz4 ²@Mo&šg›Îåßu§t¸ô›:/™áw²×:MÖ¢‹@p[f“Àbp”›ø¶…ÿíЬé©M>m ÍkjnñQ¤“ôîa©v)€÷0¾A².Óy.Ê••ØÀ(óÁËžSjàpÇK(ÿ§êå “å#È“¦¼×7H­-åÈIáE+Ei NO4ꣽyJsHƒäšç2Ùª\4Õ‡Mvº÷üo³{CBãét’i°¢Ùi…àÈv“]ÈÔB|jÏ›ónì9‡KÙ¡°Â“IüVRÆï1K;RãxNbNÒoCÒ{`ív–WEs*ÂÛó9²´êPj5m öui<„»’YÖ½ò>Íõ:}(eÓ½)MmåOb"ïãô4å~ö skDF‡SCغA•„²›Ý·@pT Å6;°ô|–f9{çÛ,Èâ³m¤/œNë4 åÈ8W›xTb{jžt톧ÇùÓŽ!O±\ñ¦L\{€¸­Ç$¾”U`x.€ân ç¿n kí̘tÄĶæA9‘dº—îÆBU-hQrjΖG;õÁr,‡êü G—köÊ”äOÃÈñ$nà«‘ÅCŒ/Íu¢]ž§Ú(ª;©ŽÐ‘(PÎWâ{öð®•r‚ÛÈæ.» á¢ôã™p Q:ßË-ÎȾXˆ—s® %–{ÐYˆÒ–ä¥M¦Å1)­Ê;éÎÒ³Y w¿†ì´NàhÕpH˜ÖÓU~`É,ú–¹ mr–sYÅ´%ÛløDÐâ)jksNHûð×¹ï/G¶× ZwªÙ“ÃR{r§AŽLÁ£4Y&G @ëg JñêÁáT¢‚ש#éMjÿÙ[ÿ§ô•¥1®làØ;µÛä!ruìÁN™} —ù]õ·àÙŒ>ùÙ<ÍßdœæW#KUµ¶‹¶èâS%Ò5RפT;Ï K©Áû ºÚ6“Ã̼6ƒÂŠÀªºG¦ ÙéqJ¤RÝie'| ÁÇn{‚?a¡‚»Š„S;=ñžWIî|½–ªôLª2ÀTBQU“õÉÊþ%Tò=n¶s8–ûr¹Q@ñ22Éd„M'͇NCÒjå'"‡öD–Q@QM,z¾‰²Où‹Pmß4ðÿÈWÑÔþºûœu.…Þ°åäê Yù$jÛC§²F¡M½2¨I»ó/ýU¤P¬] vµÌ$,«†ç …Þ^‚ÈLIyÏA]ö”Ô‘YR]ü+*hM5Ÿ4ÕùiÎ.r'’ä.ˆÝë}ÆtîX¡—¡oŒJDcjÚߨ“ÉOÏ:dté{8¶‹: ØDº>Ä[qëPÀÈèËjzi)«ŠÓ©|é™ý V&ÅÐ6(¹½E“éAÒ?0Þ(SÚ>‰nسäaq9`e°)…çɹ¡ÊýÚÏ(v ^ð rµ'ìܳ¹Gãg§ôÓ lhO£Ô37Ÿà"ŽS·ž·Üp%¿KF–{¼;œbšFÞÅ-=Ä_ 1øž|k´ì:!ÚB¹vE;Öd $#^x~ô('ð"Àé¥Bæ£v þBžªRÃ÷Õ||^bTf5²QbÉäX»³®ÁcöS—œ‘•)7þQ— L¬š–Ü·»ôîŠÙ’ÅH³Áæ–8ç×&f¼ƒ’4;òÚ=y)è± ó¯±#¶tÛ=˜šæå •’}\vú¡Íuáí°xY±lIT'UÚö¦›©S8†*ª)É Â;ÉT[]Ž ò=d¤± f€JÔ|BU‚Pr{x©i3¥VͳNöÁ7 lÓ³cé9‡-4 IbäzÁ;»)eÑJtÓöñÄ’/èJfgåJ©+­òäëεÄ#бp7Ñ€ÕÄ<.e:o™¦ ˜aO+ky¦O<ÕžZ4¢/,½à »ë>ɧr•\áI=?© e;®R¡Ö;J›xH—ŸÚDpߣ;“O©žÀ^¸O Ûs„%¡KAhÖ¯ÎÝ*k‘U’-jrª‡U’†ï±£,e&WPÙ*êŠôaSóV[èœûç1¹–¯†tžïMvKt¢¬Yè)TÊ¡µô…êi= äÓ,ë8ËÜ®2¥ÌËÇpPr”WZ8ònöBǼ¹è•ö´M*ÚE¢Ž¼ne¸©M€ò$…Òô,/ÒQßC2î>, êiÁ1‹kÏ¡yQ¢Þʬ®¸G©½îºÇÓ> ±Þ¢Gv’n&^ û4ªiëGb5zÂGÕt<ž¿©µH<ƒ*£§ yêa‹Œ¦Z4Nƒ oØU* Líré~z‰âõJš. s,‡wÕ•T*ìr4zãªV+‰¹õ›„Æv:™‚œ5IZ|¥ÌÏ=^TÃ]ë¤ÌR£É¯% ž@U)züÙð3ùoÙäïÔ¬ <Á—XBqÎ^§…àP418ú`ä*jx@¤YŽi¬¬‘õ}$Š7‹eésà÷ëFy;u(×ñS3¹®ÿÚ>]aóOXdí£nURSÒ¨qJPÑŒ2‹xÏïž'U"¥1©`JQ“ÿbX¸œOóH£Iº`£ÚžU½ f Q”†/ æ!º×ËT£¬–GTüõ«‰ßµCJ5eû£üâ{›3¾KªM°~Ÿ=ó’ ‰.®FMº©›¸­dÃ1—öÒ¬­-äd N-_«ÓÙÂV ¼Íæ(ã#±[ë'óüÞu7³¨g Рîy=Ö&Íèjbp,¸†Á»º¡‹½nY÷» ¯U@ *ŽzÍ£[F…MàY[·OiOE›¥îó9øª•Kç¹:Û£^y%yIÏ|ÔHâY<DõF¡>UnÛ¡¨©5Ñ¡ðvYžhØ g¿ ò¹(uζ!Rt,éÍÝì2TÒ …ä-šöÀÓqe]OØy2Ij]7祻,îñò€žp1- ‡ ÄSŠ ÃÎÇ(¥ë V ŒÖ·"¡Œ†êåòf‰Xì ¶ô=™¥BÔìŒuéaÌÝÆ)vÙ Ãv˜~H¦hש89AÊíëWUMyâ… JS•³UãRÖ¾DÚAÁA†ê];+Ån¼ƒ²ÜºM§¬í5Z†4(°ØR¹lkw}kÝëøû¡"DùÀ$W[¦u=Y ÐZ‡agyqÀ‹·k¼¹ù·Ô÷‡Æ)ýÕÌÔʳ­+óÊÙÑ!;͹c]”Z7+ÂÅž{Ê<˜“¼èqHJ¯› O•îùK¼ÉîxÕSRst¥“‡Jˆg}’xlMÙMPã:]ºîci¾ªG'îû$?y°tï<§4Y ¤,‡ã€R쉈Y-)À#Oà:´Ä:;L×s©ÅsVbwí"ˆLÑÅ–Ç£œw)1XX¦ÃqÐê 试U’S½Îuþä=ŠnmL‡âÌÛ1~Yˆv'¢-¾_5¸K–¬'APg#¨Fy}ÊÍ‹Q ùçA¸/›€WW•#Êç•g÷è_M0*‡La·åÕ&é½&6)ÑLêNy…­N6oJô-^(,¸ J¸¢ ç¥uuRÌU–5éÖ—G¾ܯàÃ_ªMñÖ×T6ªn¥®[ƒrV$çè’¬Ò†€,2ö| )!P÷j¶À¥…ÒÖ†Ö „¿¯ã´ÅË’v@–5áÐ4{ÿpVͦglk‚+;—¦é W­RŒE}®o–°ÃòäqÛ²F^% ލ¨"ê²´Õ+e Œ#t@²³–Á™q9ï:I¼:(9•Wh«¶®QïãDßU¶u²LO· µ¸ÃaÞýp ZmrO$¨y²Ð;Ïb½jœßjõ¿’Ad)^-i›¬FÕëÑ•ie9+D&qþU’My÷GïuCñRã.-)¦MÏÉ'zœ—R<()®Î=RXÜJEIƬ2<Æ“kekÇàÐö}y§{‘*9 ŠBæEÍd\æ /)^pSRÀÊN2Džvï¸_‰¶§\‡”ãùˆKÐDnä _2a94¯î (“êaù¶¢íWiÔGØýu®;uÃ¥Ä\Bš¿à[­¬ǧ@6§íg ÇÁ«ýoÓj~eÄ“ù»Ò#—C•ÔKx°Cö`þ x–½«óŽ<ôm1ÆÖ¹[Ó#;ÛiV0¢¼²âÀ÷Ã,Ç@Ì2jBál$=rÖ<ËW²¬*°¤)x=ùƒ;‘„l¢¢o5$=4?©Ç©”ÞÉñ2í$V$Huw½|Eùqn»:S¡}Nâm.FXH6ËÀíü›èÕŠ;?Û:;*¹:)uÔ$0Ô]ŸƒïËé^žz?–‡k6X³´¦sŸóÊô°VPUQ+’útZ}¼[tÿ™Êºãv£6êÎt—øžmG5‡êÅÝw· ,h×nHÄíÇB§Ú]6ñãq_žœ€1}wåUt·{Üo=mþü¡ïï>àljþNSã𷛇´¦ÆáŸŠ©qø¡©qø™§ÿMÃÿÊÔø šNÛ?rWãðŸq5¿s5þÞÕ8~øì§?ý[¬~Áßÿ¨}ð,m/ÿñþúþðÙO¾&^~ûíþðïç“ÌŸýÙ/¿þîãOþã—ßü–q*>ûÅÇoˆ#ßýg\•Sûõgüö°Ò?ûÑì«/?þôý§ãsßëG|û§ßÿ!·ý‹/ùí¡ó½/ü‹¯àû̽|ûåçßþìÿÇ&Ï\î·_üå÷?küñÏp­è\½ç/¿þÁ/5?æç_üöŸÞZ$ÿÙ/?ÿòb Íw<?;i¾åÿüýO<‚ÿËße5ÍÍÿ«ïâZþ‡ÿØPW¾ýüþ'¾ýúþ'¾ýþþ'¾ýÿö½E5ßþÿþ'žÄüæóÿéÇï~k·óûõÛ‘~ó ¿½ö›«ú‹o~üËŸÿôËùßÀ-Û…úw›góí?û»½´yVÿïüÈ5ýé§m®êÏþ›oÿâoóáþô#Wõ«üÈUý/?ø‘«"Öÿuäøs÷?çîQsã¯Þ°Ùë‘ïvÛuÀ<Îô–Fõ¯ ï”y¶¤+Õxyª¸Çâai…u«XðõÉÍZö†ÇaÛšÒå¼DÕ3 Þõõ:­[øón¯O/„G­qëzuç³Þ³öÖ{RÈ7"ãëåmåVuíÕÉà¶¡Ô˜^+åmÄ«ž€ŒR¯þ9‹j×zþ“’ë9æ5U/+.º’ûsÇÍ>8åÙ;×ö:ybwéþQƒcÞ[Ð-¨wWÞY²ÎU-%}bœ‚ž½NmƒuµÑ‡÷¼gÛiCzõ¼l5ꦋZ)€›÷8£›úíÕ+=Eñry ¬ðóÚÞwm"¬mŹݻnM·<¯ì—â­, G‚£³iÓCªghIaÜC‰Þ‘Ö“Š‹:Û„L#È>-zÏN•p²¢øŽš©[Ìã{ÃÌE톣(KÓ»D8'Ó¢^¶y‹’z+ÅÚ• çqë—‡üT ‚Ó=‰5)|um.z«ËQÒâ`å<ÿ?ìýys$Ù‘å þÝ÷SøŒ‡@OfÒö¥æÍ{ek5gÈ*JfVuµ$[Z<àL…%—*©ï>ç§×ÌÜÜáØAN ÈÈÜÝLí.ªGõªí8Ý/‰I׿ í2¡éo“<Ô<ù%®í`Ä£Z¦¡¡–®¡!á?®âP«*«CÒ¥BèmµZ3cð/…vv®LúNÓ×q’gÖª™šú†|Áˆ£¡–Z@ºªP;Ed°Ž²* hl«P¹ Í5– [4³<]ºOt”“Jq40J6Úó û³ŒrÁÖJØêœÖßto£öÁúj¹ËÏ`'I K IlЩՂH¶­³ŠÜ´˜‚h=d£A„YÆV$R‡´S A‘OW£OA/8—a6«:©ƒ¸§ŸvŸ”¡‹JPÚ˜¦ÙÒ~eG‘U±¥W¨}m|´õ“0ƒœ")ôlèÒf¤C  Å^Ò*;—H4^Ôè1 !œ@H+YC³"v˜ð‚J*QÓäU C$dQÔäŽW؃²¢myØô¡ä•Ö&Éz0u% ü„öˆ¶A—5d®RµM¯1Ê(Z6‹vƒŒLšU¤i°šCx•ߤQS8©ê2©jm_º‰””µR³ÒUh‡k`YÊ¡ô`¦µ¡-#iàç®e*\ÓD0D´0­ ·lèÒÝk>诡)Š¢@Y×ðC•œ;@Ln? œf[Š„öxMO ZQ…vNÒ“e¬Ž+´:íèUµoâ€r}ªM¤8Sí!È„5âBŠŠ»iïwŽõEøšFܲB,ô„ŠÖ†Æ4 mbÇ€AOØ¡ª¸¶œc&Ì_RA4%Œz=N2=§ðÁq*Û…§'Ñš ƒOÂäÛQÃÏÉ·ìxÎIsdÌ.]IçNì^RPòEÁT6°a"ú%ÃÛ¯+Ûc2–ÃZ ¥—šë+J"´j;ˆô¤Í¥îº´MàG ðKX:Ò÷´„›Z€Ò‡ šd¸qu[šœjŠ,¡ÍÙíº9M+C(­!Zc×R\«ÕB›{:0Ó˜ €IÚöŠn»I™ÄfñËÚ¶}VC1UJSñµ`”5º–ª¥=hÓlYW”¶¼§S$ ÓdèŽD؈ô³’,+™‘œN8YGRrH1eÃ_×thdª©Ôòäx¨Ò F=} k"¥*Å× .­¡Ðµí€>á2åh]KÞc’l¨ø"ƒ=¦VBÈFÖ-M¤m!ÅŽi4ЫÉì‡Æ.3FØ„­&†ÓȺ•äËó:Vk/ôVYSJ(-AÓ¥¤ÍW É>ÉÝÌQG}£Ô—6`FwŽýâ(dCfT'DÝ 9¨T ú9dxšNXÒî14ÉÔ\ä[‰ _Tž¦´ÔGšº¤»ETj­')M=£ ´z¥gÈŒʬ(´Œb*pèC¨Ví»N®°Æ €½^FGh9ê`³­àe2‘M¬×:,…ûa?²Þ‘)UÁ$QH?:(Ç„;Mcn•ôÔøÊ¤£ré5éõÆ@Ô¨)ƒ¢K¨­¨CÙÆNG’€„ìȠа¥¿Íy iù^+ª’+Oëg=PÚôô“4‡2{®ù–FfxÀ15Ž-,#ò4Ð²ä ”µ5×’ù* “¥Æ]FG;,"¯CÀœ¶ 4±v[o×ËhIULOKîŒnšð‚RØ™S¨KÑþÍé1,îš9Êà8hvä?&cWC—>J³Ž˜†wé!%›Q7Ý£b»Kñ¤Ù–Æ<’É5“™ ¥O „÷‚f0aËgmØK›@¸‘ÒEy,5µ„BŽ!µI$þÁI“KÍʯJIÄ'IJ_‚©4€ˆtAÒ+µí«Ü!Šö¸lŸ\^­ñ:%Øg ĵq„/T‘QZ·QÀУdC)o¨S•m¤ÊÊžDp”¦ÁÒ× ¥MB R ÕÐflϘZ³¨©ÀõTËêVÐÌ xR·iO¾æP RPiÒ   Z*Lš¯‡S^D.ÿRÖHWÖr‡c%!W#Ë0AÞõ‚ât`OiÀ¡ñ¯äEJ…eÖ*+€B±®îB»Ò‰ð<—ó‡…VœFÌyÞ6¤w‘“X÷WÃw§KéQ" À±¨1(rÆX6µ§i;þ–¦_^ ¤œ¡<Ö¬¥)‡Ü×B¨…³§¬OÖ‰ô®¸v…Q Ñx—àG · yé(­ÔZø Jþ¼2ˆCz%™ôiÏHK•®‘_EÃ’ß5Æ¡»™Ô®œÌ„bêªð´‘)“¡,´‹ ­¡RH"×Ò/ä(#1U4‚£â%€EË—Îôd£jáu |˜-IêJ>J–8²­2ÊG´+ô\ú¶'ÔÚoSËU iZHÅV{ a7ª#B×Ó ›É óYãFuÚ–K{ÊÿŠ% ÊêЬ ˆ"8¡û]H$KÊJۄ¯â¡Jc\Â+J›iêãüÍÁ’+©Á‰ D„õ„ Fí´Àz ¿|tz¿ë¶P±$TM”À–òf‚ÖWÆœ~ì)[!rÆÝ*ÿ«!3²Žé¥§=XÃþ-üóZ©÷2Šéš<€U²ÓdééK«p”ãé³{CêÍãN;¬§S\)S‚ý äÐÌŸ)m†íÇk€ŸZPÊ‘¨YF$5 iZÒrªIJ:•Ž ´q : åY˜¹àZ’TvUJ—€ž1ѨÔS‡ô3Ê!v#QI{ߨgd…hÍB§Â8%Ìæ$„RwPð.}wÐÞð2zÚí¤Ü4á¢Ký¼åa¸¬(aÊĘӌ«–}¦" ôj Ì!ipR“Õ4WH ¸Ij¬‘ëK [Õ¸ôµÅó;ìärxäiÈ¢É{ŸçÒ>]t‰`„+{G£Ž^hºH%G'e¥yª´Óèc$‡WCP‘'Xë[j5€W°¦__@kŽwFÚ3'ˆØ–-‘=MA™\ˆ\Ö^âUÚ>Z±Ò?Ú¹1ùj~!UHúcè ƒœª%˜°¹”§€î Ò­WêEA¥Ìôt¬‹XÇt;«é W4²°tÇ¥¿‡†¥KÂFÈ&Õ§‘H%ç;¡³’TUÑ»ZË) E,Œã0P–p¼ìÑ@+¤Ú>¨ûŒÊZX‘5ˆ°öG ^MßÝ´’>¤I#Œ.’6£¤}%U%d*Ä[$jÒÖ K3íãÒKhdSüE²}QRŸnQ6 Ë´%iY % ›BЗŒR.ߘ¥Õ­zlbéMÄv…à» ›aÝQ¯C¹^I^Ð¥Ôz’ÖqOK—Á®Ì¡ï£A`#߇³B XÀP~š€]nœ”ÍÐ7 ÇïwŽtï–¢ä2O F×Þ%$˜Ø³û´m9m!ÎXÉA• µ*-˜ŒPX§ÿÑÉXr„k+o€Ð«i-ÚÐÐÿ„tR¨*å6ô\ì2Žž„ê-Òç)—iWaCGЍ$¼À:g[hUÊ“hêÚuખ¢€†0P¯Ñ=.£ŒI>œüŘÍÚ$uÃ¥WULƒZZ$ÇI&¬ÜKH:œ VËý‰¡Z”¥ VK: ùU(³HçºÎD)ág¼|ˆÊÉE ©š²>Ò=¥?‘tÓœ²ôTËóÆJ´jÑ©c í“£!8ýph„zCË„.b˜Ê.#øfò Sªõ$}púj+‚.R‡¢o»&QkôÀ×…†¬0G D@ä4T† kc õ=……4×:¨$‘<,ì—4è±eÃÓû.¡èWÖª©åqKÛigK¥wRf ñ¦ØY·MRD±Çòð)iXô)ØÿëZŽ Ýkk8C¢ŒÖx-à[ª¥X:͇¶° <vrnÌaM Ü‘s ÿkC•ÂAÎ-o¨Î´Ûã°rÔÒÊOëë\_×lí$¥æ®Ú 2Y7š”JO&þ?%4Æ‚.(Oà˜”Ñ ¢â‡ÊöpiDÑGÄÎL2KÔ—~£—Ab'75®í¡ñ'_º-x°°ì·Tˆ®'å&Ц»iMt¼•¤ +1—J¹¾º£ûO’aŽÙXõHO/;Ý÷ÆOK{)y<в(]£Åy§í"¼}KÈ©*tð0ÇX¹” •Z±¹”j™7LÈ1-6\I=”œÚZ^‘>a¼"éÔˆ•¹]-}›¤J(0+ÊÒR†”.ößRC"×!¡3^ µ[šÒ®z(‡´"ˆèÊÃ6"OŸ.]iK›pTOèäô•ì{D}›¼9©Ï0ð–Xè_Û™ÞÙ­]ÚŒ’— -#¥ ìíåµ™ /5½¶IR~ ù,LÀ&m¼ºÒT-jðš ¢™tlÝF¥²œ )(m£¢‘$øÒ3"Fn¸Ÿž€âB`ÙÀL²„a¼vÒíç\ÒW2§r^ZM%þC@ïmZìHãɵ ¥R YÛ°£lGCÅVZ Dá4Šô=ÁgZ~ÉK–—CÍ %_FÃJ+ŠA1éeÌŒÓÂâ–œ ¬vôP ¯k[&MÔféÿÕ$´(ÅtÊM¦s^j$„z[yï9ÍBµ0ä¶€Vu­’iš% àsHqŒBGä f&éXøÀx&\†ʲœ7DÐäç‘´L#Ú¥w´œ—kOG-y²B@*(3J‚³iäºVƒSËÄö­ª:sñ:Y6úH¤ðp–PÖ „ lî%¿¬@uðÜWe£<–CUwœé)­‡\ ƒ¡–6åø‰ìRRsfQ·y-e±xƒ¨Y'禔×ßÁ„ÑP箹’³É0PÈ{`:’ŸUA[¡+ÑìNËJH’â$Œ4T0dª!'š‰¦8 i¹ž1‘ïgÍ¢)× )áîÃØ%ܸ¯+˜…¢aHš£Ç ää(­(ì׆N¨ÍÄiÎ T@ŠïB‹ÏÂˆê£ 0¿ÁÜ® Ñ+Ur–­TIá)ùš¸hV¯eÓƒTYì9ýMA›¬ÖÏ’1¬k}L{ìºnéØ˜¾]Ì-šJåRëµäC¨,"Ƶuà®äžØiO©1åiàÇM–tÍeÙÚ. œÆ¤’ ’ BÞFrÛ”$(I.ie­ác…ø]ðDhW^¶\ç^þ¤+éšK½*ÞÇËMC=~Ï!°]k§Î­ôno`í¶`L¢a· ¶”ª\ÜJ¾=ñâB¦Ÿ&iu()ä\ONÇÖ‚9Ð]˜RÅÆP9ÉpÄžˆKTÕ—ÐÇç! ªàœïÃN .ŠáÔ6Æ™)rªˆ€Õô0"‹]€Äš¯‚ö°ôä“A©,ªJ!‰ž-`ͤº íx ³*é»ÚqN]Åtd¬Kb×A-­'£ZÀcZ—Å'ðבK@0 N÷HQåEO€\p¿$ô¥-^B#]J%A.@1Ú„½‘R&yMÞvv›»!ædÅè+ÌiQ‰Ü †ˆP/D-IBØÀG¬Ñª{ Ÿè¯&“䌞‹îÆ2†Ò«„¹àŸ–_ëA´y$³5‹»ÇbH • áh—Â¥A¾,€ÜÑ>¿ˆ­O¡ÒåȰ4ºœÎ4š$0}#ØE=iZÕP¨ý‘÷ÑFÞÞcöu Y/1&A8Îh8ÕÊ\iÒȦ!Dû-‘ïL÷؆T”œ\“ÀÎˆŠ‚c¾ ÞZÝ_.zSP’›éÙZhhòN €@’@œƒTÚ>“ÇÞ'z:ú%´/¤Áaǹ–§À'L1y0ÜI¹º,ÿŒÔ 8DÐVDtG‘]haUád“•‚OKù“Çèi[àÎâuЋY> s·VyUÙ¡‘ü¼tcª)å–ZìÕõ5­Ë ÏÕ©R`Mé!ŸhäâÉj=;qwˆ5ŸDÕ*èÍ:ù¦½å:õ}Oÿjè=¥6Ú^:±¦yžAø+‚A°*ìp M'ÓÕðQ„– °ÖÆ!Lpp-@ ¡ä5ù?Ú£]$üfÚ ¹v^ǹeÜUró8mÄ«¢UÝ»˜¥ [ê¡Z¦³ qA%ŒÐšOM2Y6!]^è`•Q³Hn‡ü~Q@Ý]…‰Ãû/„eá‡þ¥“bÓ¼à ]2 ²I;h$ò¼Êåàr.EOá–ÖA8­ #±’•°Rf€à@¶N裪h†Qš–ý£}ŧž.–£§/:Øqü*Y²irI”q¢è« xˆêmœ³ì‚p_èãEºëh’ú¦WVÚ%2·µg”LÒÆ´µ,ˆ‡j!„Ö‰'„Å«Œ"šKh¦ò„sú«SÆ ôÐgp與aÝËËŠSÅ&‚ö-¹‡†Î;]fDhIF{Åî*ªti_¨ #XíhÁû@Ó4èâ ­8m f÷™ñ%éR•† Ê5ádºÛ$É £a¥`û ¼õ´‚KKú˜k$RZÔÔ˜k×äBp$%çGj·Ô†NÀ(H–‘ò¦]GJWjyý•ë$²Ä¨Nöœð­œ±—KûEšLë@HU®“ÜJÍ¡ n0hZZ5A–¤†›^¾-ÔVôœS$_—Pfò¯„²\BÏq?•È”1kDàd,˜¥5e?iîrbÞgtý„7A®¬0pMù/í{kí³*æøº"«²æðAÊ>FéÑèG7×$#×j¡FOÚš¤Z2{‚ŠüÓ{€óS¨ˆp‘%8)Ä. 2@è'縄ÝS¥ó*b Q%T©…*$)'²…YîÅÞ:)G¢ŽMHé1j$°&ÄɉjdÓËŽœ$Ù‘8I„MØ–u¥Ôa?MoÂ!‚Ô¦ÖDG8_F¤“ÚO¡Æ  !íR-$<}šÈZ_Ȳ·tX¡€Ì…¶±–¹&NÊ¢…Ü¢N]HE}ØÁc5U¤m•ê#e ©;Sx~òM*`mH:¶jåN"_Z9älŽÈOMÇAåH¾©gBئt}aÁ6Õ˜[‘kYRû/%}€s"}²FpÙBR¾ ±ÃÖj3äÖ±Ö²U4äÖ°H•kÊ“@ž›ÈþHáfÒÑr®’–ŒH^ á»–‰##N6¥–1ÓÚBî$™QaÞ hZƒî„Æzôc±Ôl"}& ªuœwFÝ.U §;#ó\ë+¡=ÔmÙ»NVPyH뜗.$ç˜f2¡æ+´´šœF2‰kÍ®´f5·ÍRŠ'Õdä2ð9a1›ƒ·®j³BG!×j×®­q§Ò8Š4l }FuræMj¨. éÈÿSš¾•TcÃPL<ºÇ$5]í9‚¤¹=`[jŸYK HB)½J ŒðqN,ÖIQ§õhF´‡…óîG-QœŠ¸]™‚^V‘ N’ý °”24Å6¢æÀÈe»Rë#¢¦žPÖ9¦^XÛ<‘QÈ2zçq"FŸXžX°–”0ݘ#¢£zó¸%#V Øetw¯hô—Ò‰®¡lÁR p€ü¢ƒÑ2@ZJÈ3jhã.wP{ÕšFÑX¨‚Ž%¯Œr§’›*ÃÇmp„WÈm’×Kó#¡H:\ Ù‘5}_ïÚeÉkièªBîgžô(Ô¼Ð/Ðê쳪‚ÀµsÍÂÜÚKÉ9a>Dà逶 žÌ4ÛfÇÎüMÝ3d¡É"è ývD)GˆÍßÃAÓb%*4I%=Ä9ˆOL1¬LôèàTz¬˜@h€ëJ$K{кÿÈ$”ôRÁI€tÕûésÑc%lå{iIIs5Àq` ‘]“R³.e@;axºd“e§zz7ôÍ®+W Üiâ!Á’ ΄ AÈY&:_ËWN(IÇ%Ùœ}W5á4Œ4{ˆ2&»^°7zäöÁÞRÁv¡¥ÕwDxä “YBå·l\·R]Ñjº‡P .(-é¾£M U !Ýß*i:K»¦1 $]„¶Nß¶„…‘´Ù)ëï-NÏ*=×# Òc™oRÀ`, Ê¼ƒ¯ Ú#!ñ ÀÆH‡e¶Ï踹«%uÉe6†çÈrª;K,îÉ/‚AÆ´$‰ø-S‘! èSoã\Lù! ¸9 y•X5T8Â4ZÇRU¥+„ä ­L´iÌ!½‹ètb›C€.%MŒ8YO;Nè¶`Êxmcë"°¬ ½h¦Õ-'E¶±£­©>Ô$äWÚzö¶µe”SPs&@b³ÜEm­Èa¥’­×È]£µáÅ k°ž²‡ŽŒµNNmGÞs…¬¶…Ñ„†¸§ZþÚ»m£]¯u` WÈ~”‹­çiIÔ. êf—ö‡`²RŸÎi@­•’ïKBa9AX} Z ¡Ts YÕôŽH“ œ\ëj>‚N¤iEÒÆþNЋÿ­¢ÇH’AVÐÜ[ÞpEÞRç¬1‘©<Êw¤dõÉŽÆÄy\)ç¤NZ+vjay©àMtÐYʲD½¨¶ìJÎè ÜZÓV`+“ЧU¦l‹“³~ˆñºF:Ø…­zS‚5¶ÚÝp]Ó«†QÄ~Ð6'kHý#C? N‹$ ]dxšYÒ´òmãe”ÎÐB/TNé›Ó‰rÝ£#û#K ÚI­GVëB>í¬IdêðŽi*Whd4ቜ%ë!ÞE¤jS´½Ô¥\ùãN §Â^ JÈèàœÚz: t.ï[HjéÀ¨]šåÚBFà ¾Ç®FsPòGó”V$~ôb"£} •íŸåQö1òÆ’ò@‚C2mrÉ;HÇ»<’¥II!UNRʰ0…X—ã h7rÕÈ® Gª<œZóX8råÌ»†+)’稚—éltkÎèqªU¤ý“’â"L ÅlÈé”@Y;èçKÊM‚°' , ·Y ‘,$ý–æ5µ TH1í+k¹Èɯ|¯$à\kLZ8”&‘ƒEâd`G³g´I.äÕçÈÑþ…˜a%‡“ä2ÉF;­!¼Üy&Žœ(=p®oi8 Fª~’H tmÉÊnœtzj§äŸC¾.­‹)=/ÔEIº‡æ8rg:2²iÕ’Ä‚/´‡jå;ç’I2%¶¤™* | ­?)B…I•øÄį´š¤Âr8ݺ$sšòŠìŽ Ï#ëá0ªi,¿E¼¨·³ ´lw %M¯Z3ÔÛÂ# Auyd& ˆÄBAšÄp"‘háBÄ4mƒ¥¼¡EGÓôQä:i#™½RrÐF4¤ ­i Eq¤_œ¤œHKO†…fXÛI¾]BÚ† N_Y|Ñ´“>ÖŒÇpç ŠEô$9–0±‘é9í´ -Õ=„A1¬b+•Ì’Uf”¸ èÛÑdiH?kT|š"mNkPÝ™εœ®Sµ‚†7F6!´Ug-Ãaz"MÕòDÂש¦/ºVIÛ†X¦¾NQB%#&˜C`¶Õêþã°J‰©³cz^¶Òt…5••oåtNPRúMJ˜" ]ƒÚ¡Ó‹9ÉÒl-ñ9Œ.(ídž,VÁ-,&’ÆòÚÒRâ°M5VC †ö0ÝG‚šèCOçtˆÚD‚@ZA–:ù–´ôŽKeSqRôeå J<éhJ ½Fú&‡7-Ô dÁ&NK_þY¥o3‰r³ÚÈÐéž’·µW–Gq(C:£‘•10mŸw”'Ök•Î6ú¼ÕÚ+‘PQR)I£4(igÂR´–‚r¶%ÙCæFçI`Lã.xCG9¢ øÈôSLHZ”ÅÓ Ñ÷‰àl’% =$µ†\TÙ&;%DC¶ !›†”éAÙÒ"~aäJ+JÈ_Cc¥|²ÂAÒYZ݉,'l™Ú01ô ½ ¶ˆþnd(ˆÐSŠ:ÛHÖBž«q­VÂh ¬Úg:yG~²Œxœ‡±<â¢Ošõ3·lèªâ8M81£Õ ˆÞçÄASN®DŠ™˜Æ‚ò@@ž4&£ D8;ÕèUŽƒq0Ì’=Y d›kÙÉ9€*¥Ù’ì‹ôLKò‚>Ò,&NƒÕX =»§ôËZÖÉ^Ðf¡(è”Eõ€¦‰î›$¡`B»à’š™Êú›òMéö$ðׄ†ç h)9Û²¹"ØÏ#>L¹´‘ÒtÚ÷siÞáÜ”tòØ¥¥–CºÝ‘®§™èéQ€½ 1PÙÆIB(=Ã]L*gOeÙ©¢yèä¥t"ZCvä§Ölj–7Ò­5æ’……JÏØ¼I ÍäyÇô÷$Õ‚ˆZŒç“¡Œµ,2|ÞÚNÖéT††s‡¼q4ìK¥5ðx-S …ÖV¸ 9õÝŽè_¯ËP&Š‚”\Ë©—‘ŠdX2j–HÞ‡MP³-ÔMjhl>„¡rÆ¥ÂzÒâô- C\Ç8Æé¢%¦@a†c†O ¹öaÙpM¡:<È8NIå PëWÆã¬ÿ‡®§]l rPÈÕÖºNsj#H K)¼lYþ¹Á"¶ÒK‚‰ôjA—(mg EèOYãP¦º ߥ\„u­¤ðYª)jØú-aÎ÷–hózúÎS|GG°X%Ñœ¶'rMHOSý@ö‰|šEÑܽõ Žtú¬IX„ñ“ƒi=ÔnCÜhá'•ájê:Ò9úЖ åaæjνu©†´0-1’¨8¬é{F?M9ð+j~ä–ÒfTHœõŒsÂPG+¯L¨—²µº– )}óv>Q£'¼«Ù£[Ei]Fb¨þȹËí\ÍÉI¥y¢ü)ec« cÎt;:ÚjcÑ^SvGjM;L_jŸ4—,Ëa]WѦ2‹dà•ªÉ†õŒã¢"§AENrB„± £ž´Ù×ñlWY&ÚLfÂÍdE×V O}C€“[‘ÜÔ[.dIâ­Çd^hºQh­”´ŸvZ ŽrÎÊ ·¸«a±.‰"ÉuÖB“Rm«(†§”ž‰ºc@Bj/%-²„Sî²ÐË’€Œ¦(¬ÉUlh¬Ë×ð¸ËñI¤ËdÝz«–Oë¤ÉèÔKâ§v´®ÔÒVLhUG%dH;µ. R!ËD¬£‘ßÔÉDhù˼„¼È¯ekd ºVqNq4;‰y é:òíâ Þô¾•ëE•¸æÈA!½@ÃVÊÉÓ­ê(êÓ~ÕsÊËÑj ã™àWÙ¶á83å×;‚Jç.Nù°¸ûBßF‰NG!A~˜=I­NHÒˆE“®-­ë8”]k=5"’YbºRe¬¥¡¦!­â[¢4øT¾ ‡…|XZ­âV%¡Î¶‡ ¤¥HµÍ5¤¤c¦’¥Kh"¥ i—h}áµ7hö×XŒÚÑ%:$kµ¡/xV•Óu^äØzrÉÌ÷Ö_•¦ëÖô¶•h”ÕŠ]$ýÄApk3€‡Cɤ•Ô½RžÑ¨çÈG*ˆPq8û´+¨;Žh†RÓ,ÕLÆ´¦¹I+o'ÔÌÈŠ5t×%É-§Œ„†aò?3N<+y š\:VË`PM‘¨ )¶ »ÐŽ-ê3Ê"úŠ–gŒMâ ¦®Ø oicO o¼v$M‘¤7d‰aå•pZ |Ë,É)³’¬ÔXù3Bºi{r=+­†–ƒêŠ.B]Ü'»և\ßÖ¾hp–W´fKÛÎòÿ¨ ¡Ê¨ú•«Î1uRe† •m y¸`ü7FY#Ê—¥[!Aåþâ\‹§(© ¥z†HnCú FßÒ™¾Ar)QcãŒêX/ÐJCX·òŠT@Ⱦ›>Ïé¦%MWNR™až—•ÐÈÑ…Q’æ-=‚H’%ÊFtThZò¢»<ªµò;+]«{¡!ƒêD;d¾¥ÒB¨¥£öa½|s¹„h÷TWôOƒ=¡Äà&°I¡ÆIIk¾:…T¦L¨<¡sƒÖ#=hðL#¹ùt‡’ò«+€Š½3š29¾ÒÂQ ÄAlFÚAGx7‹… ²N—-l' þ+”Œôc æ’„”.¤ì¶ÕŠ•“X%ˆÐyaZåZÎ%ù0ÒŠ íž¡ÀâmÐÔÎ[òŸ£&¦“¼R\qi5üTNh¬Ô59C[êäÇDZAr¦¨+ƒ—YP¸¯\RÈ3oH”h…ú©ãè×z¢£KJsjMŽU Ý $1-µƒdãë\ƒ¢â2º! 9k¡ž¨È'B×’^<€^ØJ¤F[ÔrO§P§íkqÚQÇ?rœè÷ÞÒ•J{Z3!‹[шª€®›pO¤%.àŠÁ+{WJÿIÒ†RÒØÈÚíYþ¤6ƤËeéè¡& ¨–¸}H3Ž.Chm¨œ$<“Ð(¡‡nN;ç¬Ðmh( /ž~¦ešÉÕò+,…¶³3¨VJ{ k»h88ˆTÙÐã•øº "ÒFrO©¢/Q !ÀŸ&r z‡ô ¬†€P=]ÛtA¯¼XÑ#^^“p™ž²Ä™’‹,EлFÂS¸ =‡«TM[ïBí„H†"àl3@ ´‚50¥6¨§Ã¼Eþ€×žvà)@½4©T‘EŸh¨Œþ’r ­õpE¥ÇæíåÞ8bÅœ ÑS ªªž$Á ,cÑèŒ*-Èb9¡Ù /i»Ô-©4tr°Nk¬Ω¥-*Kñê„…e úÓ„$W†^Z¤Œ(ÄèI|‘ëÚ•‘ KÝ|™Ê›Í:¡ZɨåÑ]¦‘=óÖÉòÕ+V0“ ] ¹qtâkèƒ[ŸXèMÈKÊŠŒkVÆ™,W¬.<$ImP=këÈÞN…`9U !S±Väpo’ˆUÑ/ç4gN;T IþŒ>’T´[s2F1–¥ò©<‰šºaM÷æš&+¥„d„@=âý¥²”Z•Ä•/ed9—ŒpÓá¬F€ž²Ò¬¤(‹ž!,šÇ–Vl2z€Ê›h4 2î‚ø4§µ½õd;y®–tgbG=§ôQ #€"|…?#Qþ‚ôyÝjÈi?XW ÓƒP?”e2ÇM¯Cc¿pÈC:Ud¼_ZJtôv…ž€³Gy ÙgFZíÔ¨%eR@”&;áå¤@Z¡¡:2ªÜZÓ˜ ÖN®ôôAMòQD·'b0p: "¨‚„#BÈ)¨Z‚²)¤GZøyK'Š„OË3”;)üÚBÿÓÙRŠ—Å¥<’6¦Wy ÁXëèûAºw…BWGmõˆ’Ha {IZY4)¡ŒUX#ºuÅÒµdRÈ ¶=ÝbBøuÆ­“WB ³ÊΔt}ªWHuQa[¡UÎi’Ù¦uWj9Ó~±ä '±óÐRè)$3¸“R£Çxf-.S-â2“ËÓÂ{'*ð&GJŽ5Àt;§GB'.ÄÙQ~Ë#">ZkJZéDË¡}uæ4pÓ^¦úF -Ñ.–ýxféyYM§É„%Ï%rqSHïÓÎæ,Ç´§/ ®~ E@ÓlÚI±9îI éZ)]¡µå¹–VùزÐJªžÉ‹ôœÂü…䢙pICQ;AM)³HaZƒÇ/×,Ä5Y”aÅ|iñðD4ÀAÊsÒ%@­D†µ#µ—¶órŠ ¡Ò5¡u”[s¡õ¯èꮨ›Rˆ2¡¾+%çT®_Oç³F–€V12¨¡‹8L+QCMM:£\ѳINpZ˜9µS ‚n¤É5ç‚Í8vAã´=Q÷9'iY&P‰kQµ4m(sš(Ãi=õ(ÊTV7´žÏz¬\&®ÊKgðþ9RRé§\aß6)1β¥ÊBÚ™CY>9¨ä?²å7¦úŽ€£¶‘wšñà@Da¡±¯èr¨ýßs8!'PÞXTPMhɧ¤-ùÊB„´$ׯñäʸ(«Kj @À~Ó‡ ‹O¾Aáb:®É+à—Ù*hr™— JáÛ˜“VyzÆ'ìLgá=AŸ+Ú_;aºŠN¬‚þ°†IUÖ PTÖšV@§ƒÂQRÈ(•ζ–‰Ý†ä#…M¸;à|Wúý†´ ئ*R£ˆ†‚#u½F·€Ê'Ä'!ÚA!)Œ£ý#]«¥!ž“Å…U•Hùʱ+JïB™J(eÖõx°{•4‘ƒ‚OfQ»—–°’;!á–CÒ^ÐúÔeH Ò^èX.>ç6¥¬sÒPÐ y: =.+)ä–“ø´Ž[ÔŒv]Àž•UÐ൥gWô­•²rØ%º¹QwF«©¢´ìP—.“!ξÜ]A¾UJ"8™ÃœuЩí]¯[ÙJ[“‰ %:„b¤Òツ´†JfárÚp‰‰d™ò–œÍB/ÛpYQcÝPJ¡G¢µ ±ƒ ¬…< fó &M#Pë©ánãÆQ‚£,e*´ 3‰¡!‘ZȊ²J€’RTÁË7¢7-íí©H†&5%ÃEš@µ&p®…Ýó ‹4ü>¥¯}!kå<L(.Q¶`ºÖjŒ`N¨ ÞHJÂ"‘à‘Æ•Î0½ÁÓ„€\FêÐйãi¢!?° í$§I>>z["ÕIQ¾O!í#ê÷¤´«Ò^H5¤´j{#%Ò²®s9:eÂÈU ÷$ÁiS&‰!`n [!:9k.ƒjA.c¤ù$¤Qì¤ß¼MÝËà‘ЖTo"ÝJÒ~A駆QZÆ”·R—ÑÔ6“â,hÛMa`"ÝÏé'2â"QêÑ)á„7åöÉ‹ CŽÎR¹ëRp)Ñh^n¶4>™Ætˆ%é=l*–\†ér©§Vãô„Y—†rSN%uOƒT°ÂHCTUFF8'z…¥e¢›e@í¨*‹‰'6tê*ø0Ðr¢¯µ\‰”D‹¦¦·„¹¥v¥¶s)½‡’óÜ'ò‡²ël± ²½zšÝuARPÐ ·‚Ì56’bºÏ­íµ¶h÷,’º¤®$ÕÌé0tz샮Õö"åDK2¡ÀM¾^J F‡éˆå‡CÚNÀŒ{ ùmE&‹´_•5î’Þ‘ë†ÓÉLJóhåc¦äµÒ†JêÚeUSkM od¨¶¥‘ Hy¬Áµîa•ñDÚ·ò[jš š×Uµ‘æ‰á¬Æ7J{SwW Õ­V¤§PGjG²¾2pi‚„,.]-OYÈEÊ*£g^$×Ú2¾CíÖHŸG.ã&ÿ£¨:ÅÒÖ³+"ÑÝqŠÐɽåŒER Ïà3m„Ù ])bBC8¹uLˆ¹ pÓuù‚¬9ØÊäÚ”ŠLh?Š!$ÊWe”D`šäãW5Ç…5KšÖ=‚ENN‰€s”ËÒÌé.ܰZ·2°E-”˜BÅqDê7uCÍVeCÞœð–yÊ™p›æ«ƒ;/†!È(i—FŠo¨ý"¿¸-9´iH¹‰äŒÓ€2rF_;„2P)ÖDˆ»¶¾Ê°‡%QšÂ9R¤ÈbfH—œCa<ˆÓ\K £FÖAsRì“Z”} ®h©ØöèÞbÚJÂç$¶§¤é;á ž¶UÈYÅ¥T=V;ùÁÔ ´e=œ¿r*Y&A²< ÉåäõiÅ 7Z8WZƒ RFä“PZË6kŽxd<7®±¤œtYcÕ1ì*ͺS°Q” sD«Á舻 ¤%JË:ö½Œ-{¡%½‚JMxÝ“Ô#tEF¨.ÐA›JÔƒÓ˜þR%Ìr‘!ikDuaÏA•æZsÉð×-ÅË‘v Û”k[†4릎â7ŸÇZ´²¹T5M,«Òúªk—–=d€äçräµYÉþÕÒ§©{eZY#ÔE ‹¾q]PvUÛ’øÓç)K4È’þ\¥Åòäµ 2é¼ó*ÉDn„"ÚìrûÈ,Å—Ð "5"! h½«¢‚ÃBœoI¹Ð|3¦Î_xÈÉdP˜¥©†‹Æë™+º5”øZ/ĤO@¼F$Ѝ;iœ#™wiŒãSKis ¼Ë‘’YJeu+A®2nD8BØZìDÒ‹Øõ9õ=žÃzBjdßR´{¬Õ‘–äëyÊVÆX‹ˆ’ÀŸL¶v©fXy` ì±¥–M§É¦û¼ÀŠÆp­lpMœõŽ®j}S¹”Ò¤ o ! ùu ´‹U[É}Mãr2gŠ”Ìš¤¢é·ôZŒÕr: Cu[d ï Ì6#´žšP!áXˆzX6rT¥@¾¼0WAG•cÆR‚¬¡"-Ò.l ø:„„åï±&š0Y Á¦&cÁ-Wô`"¹‡U$ï^hÍ­wiÌ\wEÄñ=T·òw$ž¼”JÀëB‚Ìe›Ü—S¤µ"ã6’ :íb˜yª¦G$y0 ZñäÃÊÈ@´ªÔäàu™·”èl]S©õ_¨i…¯Žõ¥Å …·v±£¢ Ô¦n¨"˲ Éó¦P¼ˆµ²¤`*òˆrÊ£µ·Z©qg¨“×&åêé5¤ÙŒà#JZž×,à°£2€$7myÍFZRB ½zÐ70†®jŒä¸PÓšR_GM"Z[ëV(‡¤ˆšé0ªáÿ*å¯Ë·¬ÁÀ!TÂFu_Bá@ïöXèNþç=´$¦óI ^W Œ|} tŒR¨KΣ>©\F94Y_R‘poqJÐÑê¹µúG9—zÈž5ž´¤ÐÉ>dÄù…€š.BÇe _h úI9Œlsa¢K¡ìέ߱L¶\@YÔ¸m2’79‡ÐQ\®¡£Ç¢|½R“Õ«R`¦o¢¤€™à\@¨.D A~Dކð¾3–Æ®y-ö¬a®P¬©kRÝ­'xmåÆuäEƒÖ{*¸G-O)ÕšP8ÞÒÀ8/«ëSèä¼¢ŽfÔ²½4 ×=²š Ò$f{}*ËDË€V«:Kµï0€rè¢(¯ª†úz¨Á ‰*å,µPÏTÀä–¨‘0’Ô!u†‚„]ÛÒQ\wLL1 †õ2޵®A…/p¼4iÛ¥P¥ $0À9PAäÕe^¹õPãk:Nëή ¦Híh÷¦jŒ¨Ÿú´]ltNÒ šnjµµC™F¨5)Åîe‡aœ µ*ð³ôÒõOgŒA¥4Xðíßsái¦g<üKÕ¤ æ@jœ*È}añ ÉÌ&…²ˆesè©j•e=djr¬2š„–Jò#ébò¡É‘ê:ëì!ØîYo)H}-§“(øÖ2¸Bé¹\öJK)‚®%Œ¾6Oé;Ĩqï ’ër bÒIKíìÉJ[”ŒôF2gMÊA}sal9‰]ï*Ú i7ؼJȹ­»¼ì] ‘m P,Szˆ~Ža(¤ ¬ÄPž¦Ã’ÙâœsÝ‘ ý!¥j5'…qB½ÖA#dÅ¢AC—Typm¸¦L­dQ­cRÕáùãTPRš@ÏJL#$ U^š¬\@gPÝ 'v5œÜTn qr­J˜J[XÂJÜÑV`FÐ#•÷ÐÓð3E_$®ìÝÖ´*É.—×%u‘3õ`VP½ì*'?1í=CÒ‹µ[>h]RPcx6e1j’e~åˆÚ»4s7ƒ&ÜBm¤°É®iöí_×pÞÒ6ºÇ0D4”áT5Œ »Ûþò''$MŽ<;j'&,{BTp# Xɨչl£œv@{’B-ÛÒ NëÓÞH"™…惢s5h]꘾ÀäüGr²L¹·t»Î¬KNé£BÆpêávVNÑ©¼Br 8Ä N§Ä¢º§§u«…L‰W .V >H0¢äƒR«Ø£_AG"(døZ,]§ª“í(Ý.áÞÔmhxÁ4U2ïÚ¼ôÙÒD-§g£ÙRQÝGÉG“,RFlj3£æ‚•'êJª»Öޤq8dU‹"!â ãBV”LTAîZœ’i#˜æÞäÐ3F{••Ú¼1¹H!Ô‹$l÷aÈQHN)M)ðG™>‚Ï#¡È ˆäºeÒ‰]*µ-Ä(¿•.!Óói«0º’N´­kÐÉx¬–;WkÇjCG®‚ç½}J.åÞÃB(Ð@ûZ:|ך/­;š‘ëh «œf°ßÄ•Z4„¤…Ï2*M¡sjñ¡rk¼®y!Ѩ'hSTo´Y¤%a Xþ²TD µp ÜDÜ~Úd`PXÖ3­}F ª'â¨9,. uÂúJ¾A'ƒ%…o´Ws(¥Ý«Êsß…æ¢h+úKÿÞ$§šÜضj„1ÈO 8¥¡šXøNwÁ†6ZÞ± s&ÏvOú%õú¹Ò±2Z =1%-Lr ÛJªSkšI]o!‚îÛ2rR-yÔCh"#’P˜i¿kJ½Åtš†,Ša …˲¡¡MͰ̃¬sAX@9 Öý¥•Úú¤¤”{[C—¢eËa·¶ )½ÐhÊ/àZrpr„x&‘¦B#Nv9E"R™¦¨H@ê D5dBÃKõcª¹O5}N«¸/M°SnzŽ&¢0Eû¶+§‡Ð†ØtHÒ…._E ‘ܯFƶPk:z¦ÙAÕ74nJj[J‘*£E ˆù¥‰éN¢‹T¬t²L¬ë/Lu~[UBM§´Nš ʵ/⸦8bWAmË?!ñÓÉý“ +H°§›2}§åUHëÕ ‰ç2·œÀ…Ÿ?9DSë5â˜4ªÉű†ÄúBJT>¾Ð Ð«LPâ&d+,-Þ@°ÑÀá&¯/¢´69qJ™o ∾AüW&dA ših¤¦¤‰k-]mL:øäj$ǹ™àlXÖ§EÕÓËXÖÓc“Ŭ‡„«;lc­B»å_ uÁ¯àPcÚ46-M·å¦äíHCÂÔ›„1T6LN‚ôerüE²±“'i…GŠ"(Dô]5dÚºJ²®" ¦e&“’Š4ŸrÂå 9µ Œ% MIKáO5#Ö•¼n™NCåÉŽn9š¡u“QšÒ„G ¸‰¨ºDHUS– 2Z!5L0åÈÏ…€0¶æ)šíÊnKY!BÝF: …T%Í@à~…£Yþ«v!y>0-ÊGެ7yPE‘HJ³"c].h/¦G ?'€,¦†‡žp`Ó”=ÑVëØÖ‘:Ð 6È^ÒB 2#šÒH¦vÐj#Çû k¿£ìX+UšBÐD‘#]ßÉ• Á–Ô¨ëi`Ír°§j»Iû•¸9&(%#‡ÆB5ç¯F™Ÿ@@ÑÙ‰¬ñdiÒ9uJ ZHXf§£¶r9’2óy /“T©ÔÚz]!H ­Òr>R¼·å07i2eµ× xd@ bš9Jˆæ|lF¹CÆŠñÖ3Ò ¸·©+éÆyIÄP“ÒU‚ñp×§VþŸbfbRq¸ÃÌXuuÁR¼F‰ÔhÈ”p†Dè@3GhSà7 YR¦¥ß"j}ðxå5‡P$…RtÚo9N¢VžkÙ:¤Œš’;Úyȉ3¦Vž¬4?M`–’;!Y0m”öä–Áp'_:¼Ý8µÖÚÑVÌúŽèéÔëf´RÔ@附p[íTXé’8ç‚ ²ƒd‹BÅʎЗÔi›ê†Â˹T4Má¾Õ“Ö¥‰¼‡(#߯iù$üËú!'…-$ÎL{;-ÝŽ ,ø«}@ùEDS‰<徕½uQZ´,Ȩ†'€&4¥ÖµmhZZ’H ñ/yð¸°Ú4•ºK­SÒŸÑF­ÓÓE˜·6× vë\w DMgÇI 4ˆdòs¤o±´B¨„< ÒphWDM!ù*¼ä”êÆnm¡f…æ%µøµ`óÊß”{Mr ­ ª×:1r8’ü´tH›ã#…F! ߬£e‘Þ‘@YKq…Ú=eÀÐVém(8ä>PQF¿—’¦ðC@ŠI¬äu'a+´“3pA /½Tç–N”t€\“εìJvür–´)0‚nB>·ŒŠ@©æ•òRîdã ° 62hJ ,U„ãÙ@e¡ˆ?ªÆ‘¨…Ô¯‘‹10\=Q`ƒ šJ!uBq.të(ˆH`r(ÐŒRoJ _o'Ðô¤ 5pÜFL°ýHWµ¹€i”e‚!5¢VÈÜ /Q{TS¾§d ËlúBìlM–d«bGŒhLî”*F%ý·¤ÜK¶tX3%Z ´î‰ eK¢„J…z¤’ À¥}n›ÔH×±H×¥@jÇ8V(ꞣƒ©\J­›D G…@aÑÐw©£[U‘‰‘´4$h$“BÀ›Ð¢ -¡Rƾ!3ŽZ©2hK’–Ìk9‰<¨Žd¹´ä„•$ØšæX“ÔÑÑ’²·mŸ¥A—ÀI§^¶T–¸Ö΃á•Ä#Ù3¼Z!žTžl® ÝÀW˜FŽÍ‘Ðjm”PŠ”zÃù.™rê)` µº#QI"=^'¼W¥öB«´%}» ͯ`·ÌfJÙµ|¥\0RªŠmž„ļ=u¿>D=És•UÂDÈEÎh.')Ìøwe‰‚ªa9/²^~SL¤‰»„¶:¥ó°º2ú5¡²^KCuD¡¥ÎH, …þ5çH4#MDÖ¡uГ'˜P%(FÿÀèV‘z-}@â9„k DŸZiÉ£=œGÖ Á1P)D•47R?ZМ$³"æðL.T Aב\sÑjÒ¹ŽÓy@ ´GFR*èI2ŸA“< iYH¶’-tËèK;Å‚…Eà¨Ø„/»¾‡û°LñÏbÕöÉök°5žÂÔ[-[¶bÿj¸ûÚåà þ8¢óZ¯”ÌhÖ‰#7šcè­p8(Ñ…{!È8ËÜÊËÌòÚ5Dpqf JD›&é‹Hª vâó¾–¼}Á/ H^c"Hˆz¡”Vß-€Ó'A{킨“dò}Ìe$xGÿàÊ#­øZP m))U¼¢RbQ ¤€(o–sÄH4V`Ç©vA-ÞÔݰÅ%…0ér‘´uÔÃ9«eV–sßTMŒc¡v)A^i û„/!¹ïàC¡€<ƒñ\H$§Ë–\'BEÒh--ä7A¡@’Ûò)MdÐ÷)EXÚ@ ļ!'ㆠ`uˆ2øa$ka½‰¤ÆX­ ®€T•âiWò Ù‹Ò‰=Í€©&•º£› ç5Õ²µd$L\ÅbMcÀ<Ðû'¡Àårb‰“C ªåS0•ê“A-Ù;rfaôÈv ˆ1’Ç ;O©L´ƒ—IÞ‰ü,ê•e]‹ÊÒ—k¶Æ9±öOW$éÝúi9¥“Û ©5-ÿ%îäÙcx¹ïðÒ1Ó:(ËUÏ2@„•Â¥„ô.÷±•'ÊŽÓ^1-2í¿ ¬ÈæðîqžUN¡p§ðV椄0vƒ­Óh4z|øìÊJjC·Oj£³Ì¥ÜKzRk²É‰«¤põŸ0B)æ»:ì#–é úšAMÀÂ1Õ“÷s%õ.ðCK­‰eOä¹–PÅÐÃ4Dr†B YèˆÔsθŒߘŽ2W™.ÄlȱHОÂ!,a7Œhð“¥Àý —R­í¤K fèš6ãÿ×E¥›4¤­tÔ#h s(X5B,e S¾&+4ê¼ ©É¤ˆBàZŽWC+âª,t‚Â9= é‘ y„jˆƒ¤J&MCRlÉ8à´# h¡&¤¯a岋ÂX‹ägÕŠ«4ptDs/Ê} íã—ML¬ó•Ï+œüdÔìY0…ÒoTK‰® bò/+ø&xjË$&CPZ´fÿF©£_Ÿ¦¼Ì­´¤ ŠAßâë{‚Z=µ!œ'”™îYCÅ(ßDX²LeX¨o`‡•kžÒú9”¤e)ðÖK „F i€ÔtC ƒÜk('\¯¼¤ÄW"qNè¯Ná¥M諊iÞ6¤Lyж•V¬…»`–ÖuP œx1Â3ôi¥P?3öx8’„7zX£ZºÑ@½QLBFXYѹ/wòì…ᣔ¹Lá4$éÛÂך6X©dhÆ¥µôÁ ç,²Æšèʨ@ T]¥ð1g´UJ9Ìi@œ1½$RArWK\„+ üÑÑAÏEWyw6rÈbÜ4"YÚ(äŠHziñ<‡ßKKA£*·\*#’Vtô¾.\®…Ýkz²¶h¿WXšQ´9YÊ„ÛHqͧ@ö6 Ô/ŽÑ¶rÒ!ðÖªl=€4ÃrTúJÈÞ*¹ˆåÀÚaùÚóhé²kIp“J4PµqlMPB‰Å,”äÛ餶hAËŽ–üDZ³% 0È%ìhÉ%Ë ©Ö$·DšNÊLÎÕ–Z4úz~ÐqÐQS ÓF0'sž)õS@"Ac‘H®eÆ)K?EÕ¹†­Œs™q~ÞYŽm#mZoˆf¦:vœ¦Im«ôØ("Õ!½ˆ"vél• •%¤‚wÀ°˜v`q—°Ö"ãU¯ië É Œ˜RÓç¹Ô¦c¹Ô)-„Bz0…Ôž¤“*HiðVôi‘zì›Ò2±Ú®$'‡ºÝŒÞÑù•¾2Òc8Q”´ Ƹ(£®Ò-yÏ©a¹,åoª0"š^R‡5•3pûDò {aÍDË¿{øÖ­¹,ÝŸ1¤fT}DK99"µ¤Œ5}Y‘p—¼§" \†yHûÙõ±qÁšQ®ÀqrK«Ž˜fõDv:Š˜ z-‡d©µß‘!! —8RK¯ê@*\Wç´´Æ[‰rù­l1Ÿ‚ 9¡ iNÕ¨·JÉ›lÛ„¶:i ¬Üñ–sù޶DûBŸ¼Ë^Þ ùì$Ò‘''G®ä¹¨ß B]6K²ºZ 6¨ø†P³ @@1(¼êÎZÉPgÑE=£“M¯­!5geX¡5ꀬ±å¹  ùÊys²TA%¥§îEÏ{’Rï´äQp¢žw4š‹è˶¡9ˆ¨Æ*úfUùÖqïd´Rb# G ú¥–~×°M+.6xQ ÿ‡¤·ÌYÔ®•Žˆ g ºD„ÓÑ[pZö˜†'trJóЛF8“9XyhJ‹7W¸øDð&u èæÌ!1|r.„kiU†7B"˂׹ÓæœÖÇVÎNh ‘Pí#‰u?¸ÿ Gš¸çZ 1õ=þ±v‹°$i¦©–¼NòË 6Êa1‹ãÂÕäQžõŒ1$Õ—¶©µ9ìH¦–­†¶%K¨jȱuK« O{"RPåP-`U4xŠc´%½2‘Š­©8JésÒ’cϬkïQ#Ó ì÷Ò˜1Þƒl¦Q ¢oNIRZ[HkÒ–C֪ȩëì8\éº=€9@È¡à W´ ´„°…Ëêd¤£ãÀŽÃåÑ GËÞe‚Myƒ%K³®ˆ¥É¤*SÎ72D8h7ÇN#e]LÔ ë˚ƤװVWÔ ·Gà燸»O3aÈ´ :*0Òu‚5QXú¡öéÉžÔžç]ð…Tœô’5Qª© \Tð0×JÌq‡;/êæ}“ 5”“R¹À™hcX¡õ$MÅ7Yj™&Þ} ˜F©ƒ“­ŠIÌ­A¬Õ.¹#é,2x“ÆJéÀ¢€e × JÉ¥2‚P«B†,ã$¸¨GÒ~"ß‚öÍ KÅ ! @'qèG›4t‚®„r„‚`ï^¯`7Ôtk Qƒ¯-é:u81 rYš’ ­ke†]yC9Úå ˜`„f¨§DPF È×q¦ÐÐR-Oç¨ýïÈŽÔhS ­5‡”îÐÖ¨¨‰¡aö­ 6ÀNkÏèYµå;|N"K‘ÀŽ˜=ÉOUHN¼ö äS¿%ìf)í‹a`/!mJiŒ(mõ;­!þ(|ç$ky+•TƒÃ!x‡º9([®Mä(Õ&û™Jx‚PšÈY!(uJ‚%YòjÀ2¯äBÒøV¸Z€ ~2ÌŽ¤álcôVZ(E$ä ƒ*14ÝU 3&‘A{+¥tQу,„½›2WÒ%Q  ~*áE-4X§RªÊrˆ3AÞÐÐ5ÀRA{m!f8€†‘ÜhïRÀœÜ2!,#Õ '›JIÓ’D¥ªÖ~%ÚnQÒÂ?*Äæ°FM ±ÈíN化êÖ4fO… {h™­òŒfÖ¬¦§ý#Ìá…ËhY ˆÓ^ Ü)£<çj¡LB¡tg‰Ôu A4fô)ç¼:¡·1„dZÿ‚ì…„”ʯ‹Ží¥ÖFJ?Œ 0 l}}êE(áA„;NÿX™½FÀ¦ oŒð \L—u¨`xt‚N†–ôT–¡ < ià(‚Ñ]!Gìˆ'ê!´¸b8 ju´öèxÐÒ•u¡R¶€:‹ܵ™©gh¥Rq¿á”ʾ%•ÐX·í‹:/(j(umJ bë8@h(˦]¦ÙÈ´ê (ÜSZ\½*SÒ…0“’Õ“ gÚNºJ&‚/ΪêµSµ$¥H!¬·MH!2}L¥ ú\€&JhÓ‚¬å±d.Ç •‡Më9¿$Í»'¹J®•¦´ÃöÁr™ z‘¸E›ƒºuT~J“è•Ð%«Õf«:ü6¹–™´RSÄÐp /†Y©¨” Í$8ý‡Q#¶îÁ“"6:ŒØ¨˜{mDzÅ´F¼K„€âЄ²¦ª‡µÊAUeUÆÇjG.bxÛS©Ï^ —Ô“N6„β4€n«€0°µEéè/TqB+D Ý’–S¨HêœÌb@m!õA«œÎwÂ_pïAÄ(-$Åj|C2õ:±D›ˆÞ!Bd ¡Ÿ¬{z,`îŒÒR9&ŽL«7‹È`‘;£MF9‘õ.ü¬˜†j)®s}¡ÅÌž- `b+¬ŽÉŒ<˜´3 jQâHå®:)"´’G9R¥•"5Õg̤NúEæTHš˜µ¦Ÿnã´P©È°‚'ÙS6¼ Q‰ÖAX—œ cG K9c´DŠ9\®âÆÈ04ÕÝ–ôÂæ9sÚt´iÓ\øÒ(znW@"™GYÐpF’…#»QJp4Ÿ» ?iURûB¯tñä›SBÃA‰ ½cÅ{+(‘ zº¦}ȺÑ\X¿ÔH÷R÷ô™˜t “A_šŒz4˜<éêâäÊtCý¥0£ÊŽW¡ÜWŠ¢áÊ,ª"O5¤oAESmk¤MHú¤YU2È”9Ò"2‚ðdFšñØ$O `ÐC€Â>‡'±ÏD™¼uÍ$™^p0¿ÉJ•ÑJŒ*1¸Ìd3é˜I¬»¶?iÂRA4ŸÕM)^¯’¸¦÷<:ôJzñRúKCÝ:ä<´o4zÑÁâAæ*¤3rÿc)i‘ebqr9#‘wJ^Òœ „NeÂ5£”eD´Eiá³î; ¿<ל§„´51!ô)mÓåÖ¨u±¦•‚{º£rè®ñ—ëªÑ)`k‡á¸—Ê!~ÑO«§Up³ì]ò•ŒÒ}‘’ͬ- OXRÖ+ýÇÒLb¥L[–¢B:‚‚±ëPÙ5‰}D"% €£ÈÚIèV-'—P¨ iQ.VÓÑ„rü€ãÂqÖ£MWTf8¬hèJÚ$mÊ"Ï¥æ#’4¨ÂE2þ Ù–i ÂZÏ Ñ@pÌ$…C*Õ•,á=$<"Ôx@éRë2E'šÔú’b@é³Y‰€‚€´ã”ß+Í ×Ô|dT¥Ål¨ʧ:Ÿ„L!nf­Ê˜PR(II’ ë†ÓŽÐm‡RëA°Ú’þô­ G«hYGù’0’S\[”•Ù-§È²ÏIÇ!™f#ŽiÏPÂ‹Ðø­õZÏ©}Òª’¾Œ¡Ê bh¥çôL ò©+Ú«&Õ\Ð+‘ŽÝÁ˜#A'ÌØ'ºJM?YÇ@YÃ1J\ºDЗZœ1mPaðéB†bÚ06Ô½ëù(ˆ©LUÁJPlS×WcNVK i¬¨u̱§ºÉ–P8EEàšÕÆ™K¢ö%ízehI£±”ó’n]ä °Ò èÞd™Ô Q¹šrRøäoq ÇGHו’ÖR4ú¦µcjô$D"k¨¬4ÓÖ6³–yèãðˆE‘[G¡s0ø°´¸ŽðcKÒ¥ 7Å¡'kr lr,é;¹Ç uR¥š>0*¼;P™5t"ˆ¤iA~A‰4L'+„Ô7jSTÖkÔ+#ÇÁ(åpM÷ xKµt©Ü×ÝN¢³Šã[9>ŽTÁ`9(• mcÅŽÀ:_…1mêrùLôïÓð%[Bn¤û’Úèâ’nh äOäÍäZR9铲>™ í¤Ì"2D:Zî¦c,†p2ʉsúO¦4* ÒBåÀ¶R-‚!!”„l»ÐúTD»ˆ4†­†ÆÐÁȹºè,Ïß*h+bφ$¨Qe(pŸº®!8FÊVMÏ n>ÛÍÕ0¸Ò‰S€£§‰˜ñÔ¤HÒ3Ø.é¶ŠEk©hí#2d"¼>²¸„ã"™$Ȫé@[AO¤EyÔÒ{@«%‘†îËûÂöƒƒI~BG踀¢¼¥~¾¤×M¹SrÞ8C‹e{™åÔØ¶š¿‚ô’¬…Æ-Ú-´•D¿ /8a“”R^Cc˜·¯€g›ê‡–t“ÿœw±ˆ)iŒ-"g>F÷§TXI}†ôcÏʨršË d ݶ´ê;+¤òÑbæò²#… ø$MD“t-ívúžžu)‘ƒÛš–Χ,F*²,#e[¨Jè¹£¼Rz¿„~!—z¡c‘«õ<„…[Ú2%{ñOJöl¢ÚÜ­‘‰i»¤:ÚÇ5©ìtŒ t>‰°áôWØs˜fLµ}%¸ŒnWm¯=®ƒ\f•¤t!Báƒv¦ÇÔ,¡."—G®ÕJ$¡CÝÆ4„äö’U¡a#‹*ìJד‘E¦I ᆨïÈo”ÖÒ…}$GÆ‚8ti2—Ö-]]GHÏH«‡dcˆ©i Z„”‰hIJw-Šž––¯Ð·Fаˆ†d™ëbNÆvD•`¨0^ ƒGÑuE®|‘Ô’ŠT؇ˆvJ¹‚¼Œ ®ƒØåOoM´jXæ!‰§Ï­žµÞ+ݳ§<«  5…!˜¦µÊ3)­P ‰’\yÚ½†¿–+Fk&hŠ0tõv1tI}HÁljIU˜,EK ˜<)WÃ%ßÒ+·€Ú /Ð2:Zš…¬¡¶†²&È?¤ ¡× 5´¨Ø –cJRËò,å…ФšÃQRkBNà!¥]:ѸI)ž#§Œˆ]ã0œËRc_ ä«Ör âd/€Ó& ?LV’kWÁ× ¿jiG£A¢„Ë—â-©¬Îš@¶rÍÈ4NäèFàM9)é’H«ºn©±Ó^¡$«¢¯A„Úµ& ›ªf€Ñ‡™.² O)ÞÐBãAVéÙˆãí¤uôY4×<ÓJ(ç|˜¤D`6)­Ó³YK¦˜ž»Â’Z £ìeX`³HÉ̃YîKh¬î1UømÑfp…¡”V`ç:ôQ-høÛÖàº,v²ôRM4r-àœñp4'G³¡AÒçJJzrØoHÔêñÐÃŽZI¹¥ ÷ä\àô‘Uý§°Ðà±s¼K|K~¤KÐyEkVb²„0›…®¡q|RÐcªqÁ/êxñÃcŠV¢ÜÚˆI· m±-¶qR¾Z» VK¨AI2 ¡†"Ÿú)‰F $-™ r•©¼o+zoë™´ör(äÝÇ£*¡á€vmm\@<’ѤÊ)ÓÐbјv‘sÃñ”AzäÎrH.‡ô(*É1Ð\Êlõúº<2­§ÈOÓ†³TBÙìVêMP£êhQM*… n¹U¹°ßtn4™Ò´qώѯ¥ ÞÕV’–hÉ.©' È1¶ÖààÎÜÈ#„8 5¡éS=G”ñ·{GB9†M%O êS¨,‚NLBÐ9 º?‚ô …ØZè¤|C'cA ›Ö)®„ Bíê ï „ȃk;If\ Iω•¦ê³iÊq*½«Z] ʉ8¥C¿6 h¼Õ*¦ˆ-ðlDŒ Ä#ækêjt’vz³&4ìƒ*\–*m¢II-Ö í­bRkza¥Ø­smEGXéçŒî D~: m¤!¥_¥¿É /bkAabX“?BŸ¤æQ}RèPvvjmHÁý™¬¥¨¦™êZ(N8ë‡K"ầH™$ZF§( êü)wï„M’.s%m塌®¤÷‹6€Š(ÓnÎåa‘Ç“ãxõ%‡ÜB!5yÑòÑäÔhDrМn@F¬ýÑ›¯†$Uh^3m8$õ\Ijìx¬;QxݤÁ´)ÑÑQÄ•°vdݸžœyá1ëg‘È`jš²ž&‘Y%¥­§ïDE”#o9é(´ÈHéAÉqXIçWšP9ªt‘O!õ„VLBáM ².–R•J¯éöÄqº<)q»V™„"êbÿP€:’–&°™„dÔJáÒ@Œ.Yš6*2mPKÓ}³>‡ó°åL'.è‡a )–5D_t¸JSrä;r²èZ—é¤ÐT ý˜Ñ£K¶Bª¹e‚¡×€±LîÓaDMhZÑ:€^°dËa): ж@%éÉ¥¡J] Ž>TXŸ42dY"“™ä)ù ]¨TWÁr&¹›ìG--:­¯:“ N›™®B DgYÃaQ )м¶®¢¹uLÔäè÷p¸Hñµ2=Ú‹$ м2ÖXr\„îÚˆðvmî"øKhR¦MP MÇ>]<Ü,ù¢Î ª‘y§ƒåd¤TIW’Ð"3H§6±CG$' f< ²¢i 4Õ­ `@ñ¼p¤´YÊdA‹Ûõ˜~ìB#Œ-˜TäG4‡h8s0Ö§¦!ì$’%ÍaÞsúe»”ìCE´BJ*B m!²½{†h;½Pù7RÓ!{¥ÒhÐÐ1J²q™¼JЦÔ]/—G.4¯òÒ9ÒÞ($ Y–mêKÉÞ Má -éx0ïd„欱°Œ/ùmhúŠ@n®Æ'4–{ªè¨8’žJRC‹%•Yt/£Ém&‡‡V­yJá”\xQP,Y…¶cm… Ü!YüÖŒ°¢ë‡PX™ÏK:ärZ £©&#“!‘Ð.I« N˜s#1„ñAÿ‡Ï¢"e4º07Öäùj¡Ñhir%Ó#ÿ††ó}x ú&§5- kú-ÄIÀ 6­ƒ¥/J¨±[Î@ž¸§m©Ì@Fóó\× hkB›?|†:¤©JL9¬”R]j ÆiO+x™'¥™É¹FÌk³¡ù"øÐÓIþSÁiŠGR§5U04Nþt]@ ÓÖà0R‚“R^~$é)… ­ç¶¬‘üBmÏ<§*©+ù‘㔼¡Sm‚)‚…nŸªT˜r´”¨H£Sw÷šý޵€š¢Ÿµ#­ˆ4zr!\W H˜Õ4H_v19 Ý•aù¬¯ÓŽÀÙ¬N†¿È)6rK©A¥.˜QM)9µÞ ä#¥IKu] ïF–‘ý¦B,’- ”Èo×Ä4«#K™œFipÚ•A£Q1NÊFà!¥„vŠdº²¢Í¼»Ò¦ô›‘›J»ÏŠ‚ Y‰œ>D°TõºùŠšL2²Iúí]ÖWò aÇ‚7X*ºåGHM ž:Ý=K9§Õf,¶9ii¨×²•BIc]ˆN-¹ã$ÏióW÷1Ž ¯)IŸUFA{ ц|i!dßR°²übY)ÇX^Oflˆ2³9\ñò{ºóÂc" Á1oAx¡ õ–Òm\º„¾èZ¬1›¤,}$$=IÎ>Y[ªKHJ@µWä½:8I ¡n¶‘3³c.Ô%0Î)qq87Czaku¤ÒrðO¿°r[ Ü阱¥ÎKp—H¤Fd3žÓY…Z(⊠m~i³pð4…°¾ÑŠ”dÓ54AHŠó¢§Œ¿­¦„U*ÃA'³Hi.eª2Ø ºE%;ÙÒDÆ0ÉèkIëðMÒBáMr=Ì ±u*¢£§Ôº€²^Q¼Vrd 4=ˆ«Ø÷å¶.˜ççxë¤%5%‘xé»^›)+ë^È +á"´² r.sú§CAײ¨2Œ€Ù IÏ‚±CymÐÍJéIYI}¦²ÔÑј¦ˆ`CjºSŽ4„dÈ­Öÿ#ªAåüçiM‰s쪨!øÐ–‡ú_s j‚/ ó&“£<ˆ£È Ä{M„gioçb«¨¯STa]#ߣƒÑPS¦ ªÿ‘§ÂISYݨn]ŽDìRb+¢pn)lÚ´• è®”Ðs”ebu Qr鄪Š,"#åLS1-3º¼–Bºrk§´yOª¨±ŒsxŸ0™6™¶C@ þCyꎇ®­QÃy47Z÷Ò^Z‰÷TuYXлn+Üd!çšÓå.N\–ËÃkÈ&+³ø‚ëI@ FÓˆ.Ûèƒ\­ÝÆæEÐp¥í{a.i$é`yö=¥T2>(¨xˆÖHMkáQ8LR8MdÊsZ ~ÊjR ]¸–´Ê{ ¤†Ttfd O”DiH#NÀð`½|[Ï?/Å,ÁYgÝš"8Sd¼ÂJšfzÙ6j'¥Ð2Êó'×W.dOâ­Ó°ô¡`^‘ÀdÝ´vÆD½/­j¤I+†ž¹ª ü^Q˜fVTBRrûh¬A§0¾ P s½æTZŒ^ÅÚ´B±2(! øÄ©“…B·†}» íN“WÂÂUÇ8š1-)-~@P&¦j5Ò¨h–”µD¡%—h Ë´$d 6$LË¡£m ¤” ÅÔGË/ÒÝi¾D£ªâBÝ;„©0#߇#E|ø’Ö %œ2­“–À¶RÓ:L¶†ÆAqjz:¢SqBµtÝ›¯§e/¯ŸªâŠPù¹}îhÔ'ÅCÓGýRk´êBh1âZx“ÈQ볈lDšÖJOÖk'PXÙŽÛ3-Å’$TH…ä„rMe›4§Tµ;mȶ$°”hÎ3J#@YÓ“».ñSHµÉqþÈOÒÔw Ù¨©ùkÒÈtí¥å×:k8H[,kËPBD¬vxg”]qx@9\ØÒ+´•Ò–ìª_‹"p-ìn-Ò)ÞWI4ªƒr(jÿÚÆDgÊ,1Özãò©Ê[«á$yJL^/Ì1¥ÔSC—¢Tf6‚‚¥•g zwxª–-­â4ô ŠHZ„Ǫ†â)#°Ëý©Ó6– ×¢¶TÚšá¨$]±i¤Ö%cØ ãt„eÚÆÞ¦U¦­ohȞȚ6¡òÿiHõºL‡\RQln[2H2¦.iž”†ðA«RÈ!Ÿå}”ÔÒ»%o<”ã ø û­tÁ+ÿ÷~ÿ=.pt¾Z^Ý\~\^ýèþãju}syµúÏõ‰ûÍoº‹ãþòâfá¾_ýk»>ºY|X®/qIX´©ùIe¶ eo‘ ÿ\süÓúÐýýõ®»ø]¿\„qþC.â鯿2þŠø«,~øÿÌiñìFâ~×üñûï‹ÅÕ‰¾üA_.HËEòCëÓ©}Ew õý:-¡Þ ]ëÅ¢,¿kn¡k4ß5aà¯r´%þ!Iô¶>.Šø› ŠøÐ÷ö)gŸ:Ö½â¢#Éé†Å"*7å¯b‘êaõ«"{Y7û}´ÈH¢Eð'.ø´þ$<•>=<–Ýí÷¹r¿ëWºUòCœó09·ÊíVW+ù²þÖÓE÷ ö;g£ÆËÐKTþG‹$à!%‰n¨³ìÁÝŒ~[øG;Ñ¥2Æ-ñ”ßal#ðmæÇèTɼ^n—„ßÈCàßýÔäLRÃÓéOºyéÇ!uó_D[oïüñCjGÃír e?LŸxèÓýv?ª1ùÿLÒù@L j­¥ ;&.NiøCÂC-¯ü‡4úÿLç³õÝÿÈýwþ²3 M¸ì‡¼Xš¦è‡<^L´ý ϰ XGú”F2r›åÖýë¸$”1Ã¥L¨VMûoÜðbø]öƒ.EþáÂd±™Ÿo‡é9×ô0ˆn(cLsíÓ…ž0â1õSûE§¿tC€~«måR~í—›õ'ã:úc÷ÕºŸ з¹_]5¥m¶þDáÚ˜IöC3É™¦‚©Õ;™~pþ"f)4Ûßýq€.2‘6§º½Fªt)k7ž=ø?<ù¥rÖ®—ުͳž0´½ÄÏ’1.½ÒáÊl]>c°ã¿ÿøKë_ett‚)ÕÒLüFcèjìmÜÙ€üñ÷È|2U¢Ké*IÎí“áÒ[Z*‘OP0IáÅä 1¬?ÒVaÀ­mŠLï¥1¿’êË*‹]¦¡þaÈã¯?%OúÕÄLÁ ôk?ÎÎ$Çùß$ªÍ›DILÕh½0”)«N¿Œýàž%+ÊØ.Ï ¯í3üí_d¨ê,BDI§Ÿ#…Í­Õ¡AOø]®]ñZÛ§ôZ6€Ä ¯àùåþVüaÒf”òé°4Ìàé®¶5l3Í?À•c²Ø·¦t [.ºibR%™$Š%{†÷QÆÎÿÚ4‰=``ÛÄé¢È¹I_°nòœ Ít +å~¯¦Mò€qÐÇukÙU}5g„fÜöÞ€²™C¶0cÌó¥ùÜþÕÿ*ÕcxmÛ#µýzŠmIë¥./üoÙ¿8é‚è{j†®àÍò‡rXi¶™7¾\DXA{8ìa†æÑò`Ùf‹»ÌÌIâ$e5&³¹˜á=JùÃ0ôÿqOþäðGOe:Á¿zÖwÝc_Úÿ¦{†dÜ+6€“ÏWð÷ã ¾5u“Pèn‹°4,Û )¦Ñôs³ÀPZz‡±K äè|&²¿Át  é©ÌVHy%Ãï„ôw«›ÛOú¡_-on¯V·ø¯ß®®/ÏooÖ—8ÑÇŸÖÛN÷øÅ?-?­®¾[ÿ»¾²”£|½ºù´<]¯~Z­?Ÿ­®Vî?Ÿ.?-þÿcñ»?é->»£, –DÿsñþŸ‹íïü§>ÿ»eâ¿»ðßÕÿ¹XŸè½õÉêüz5<Áxk·yªñ9¸Óß-4;¡‚p,>èŠ š3“é_.þÞÞ¹þ´:Z/qXŠÅߟŸÿâb-1½øUà@¿¹½úEsZòâ×!¹Åß_ý¼^ü½d¾9H{ytûquqów‹ëÿuò¿4Ä—ß|ºv¿ù¿ý黯«ãË«¯£o‚E÷§ïz^èK߯oÎ%êõÑåÍÑ™}þif®ì[¿i®4!—W·ø×YüËêêšéÐz ‹oW?ýÝ"þ]üNpñõbñá×ÅÿçòìbQ_-ÏW¿"ÏåíÅñúâ´¾üåïìÁx&GO2ŒÑµÞÐËQh¢+×燲¹üȯ®·–ËÖкß,®VW?¬®—Wk=¼ðúfy³r¿ãg{¹¸^þ´Z¯Nøø‡Ûõù±ÆüfõñÓåÕRcy¬¹ÑC饓s¼Y_úôùåϺòùêäfqtyu±û‡¸¹Z^\Ÿs#}ìšuy²X”d‹Ð'VÆW æûwy´¾8:Ó.¯Ž¯],›ƒ6PT|Cg‡@c¿<·+IÊõÅjñ[›»ÜoYvë›Åúúâ·7ÃûZj‹ÅâÀêæòôjùëoË‹ãÅo?®®NWŸ®.®«~\-N®.?.~ùù8b2üï§õrñ‹¾òáÐýns›aµ/’árñójñãÅåÏ‹å‡ËÛ›-iþ/·¶Ä.6ÿûÍâW&’__žœ,nÎôŒäo5=ÚÍHÌ×vÿ÷›ÅÅåß-Ƈ¾¼Ð>Òÿ~7{,¾4Êòbñí?Ô_ÿŸ¿_œÜ^ؤ9ß]~8^Þ,«_4Юó—×°žk>ñÃg~;|güÊùêâôæl/ÖÇëŸÆë]|Zÿr~=»ÜìFë‹ã_´‡·~¨×‹á[×7WZò£¿áçÅÍåâìR ‘¹Z]ßžß _Õ*¿.®o?,þãã/Š Ó¯F¡G1†®n‹}¼=÷Oý­ ÷þoHßÛ7dK¦oüÃÕjuqïw¢é;áì;õùíjú à?ÙÆqœÞß/þß‹oÒXü?ßÄá·üõô%MËôzÙñߨ®7åÿ\œ\^¹ÙØ8ÿ[>ï··¿é?߬Ï×7¿.Ø«cÙ¾·˜-õKíMtÚ7þ?[_Ï>}³üqu½¸ùùró»ëqYß^9úÑvœm¸kÞú¨…¦i^J\œž¯6_þÆ ö»ÍÞÔª¶E=<Ìñí§a¿ˆ_‡ ©»ó͆W[ÛüZ bþùÝïk$ÇWWlª£Ÿ~¹s‰Ýïó•§™Òí®~ZÞIpjþ½ÝîÎÏ\çlÚƒÿüK¯_Jmÿöd)s»ˆëgíâøzøôÌ´Ä.6c;¼m7Ø`aFû=×A2Ý(o'©Í¥Ì»›)cö¬Ýìãò“T¦þ׻ܞË,Åòx¡yÜúðÑíÕ• ØÉZËÁ¾'[z|¶úÅ׫T¾ÕÂ:,Žò£œ89G'üqB±'I~e‹““e(¨wròa)lyr²Ê–ùœù‘~ä ·F¤º^ *x¡ ¹ÕJ5ƒ°-‡™ÑóúyYý"DqsmZ ÛùÛŸgEýæãR_ùE“qá÷€ûÝÖQ^¿ûp+É®Pg›!ò\"hmÿúÃù¥¶’\dkH‘žùD¤Õ¾òŸ4ùѯlÿ '»°@g™™™û ÌÖ3<~-~8@¹ñz>0 ·Q8Ã{2Ò‹a%™-ZßüöZÂ\\^|}u{á…šéòÙ·¤Íǵú$‘L,·Y—ç——?²¤l‶®,¬¹ÖdPmq ×õÏ›¢Žy=nÇáÙfw`±À a–Ë뵡íõùyþh‹aôm¤üµ‡[ßU s==Ìn0ÎÜÌœ¿Æ\<¿YÝ0ÒÚ–lÓa´wGú¹Ãyß`nÆò#9›öÿxÊ0 ´5BÁ4>föüWï Π¼LMz‹]¢ß zrfçÜ\õº82À¹(þËù/Rmk!k°<–ÍïœøÿÿšÙ‡ÿ'Õ€|bHýÖwóýî\ mñ%:ëΫˆÿî}w|E»ÒÐm^ÞûêI7qÞ]_*¡{â8<*¡{lŸ*¡{áLÝyåž;Í÷½rÏæûû• q|å^»ï ¶#%ÐÞÓÿ‹ý¯¢ýïÇ@`ÿr!^R5žŒ¿´ÆEl?=ñ&î‘>YB·+âK%tÃÓ%t âS%tÏ›©û_¹çNó}ºçNócƒýâ…8Jè^»wûeÂÙ+ËU3Ñ1Ý R"‘’;²‡÷nÊ{…{ñ.%t»"¾TB÷Ú]rßJˆ^*¡{í.™ö³¦ù> Ýs§ù¾Wîµ q”нv!»ƒí†›½Úô¹·Á`Ûà)|ewoƒÁü^y ¶<½PB÷6Ìö`0‹·Á`û‘ê‹$toƒÁ6ƒ< £ß}–wŸåÝgy÷YÞ}–wŸåÝgy÷YÞ}–wŸåÝgy÷YÞ}–wŸåÝgy÷YÞ}–wŸåOŸ%Úýtk}´õžý<ÀÃt’"õÖÍ~ùW¶Ÿrá­Wîµ’Œ¿s¯•d³¤^)É(ˆ{­$ã+÷ZIFAÜk%?ï^+ÉS;ôwò×ߨù«ôîïtW§4 £c8¾r›—þUÁOϺ´åÞBfß@šmÏáÒðʽ…4&Ñ[HÃ+÷ÒìâÅKÃ+÷i‚gÌ‘½ò—O‹=¹-‘ü¦‹öl’·™£Ç¤™æèµÒ|±,8 ²!á󞛹§Üí)7sïhòMn¡É,ŒôñèevÏèÏ ƒ•m£g^Þ½ ðyŽ|äÝ«€Ï“,à3Ñç¾Góúʯž'_Ôý­á¹0±Åÿ‹¹—à’·q-îFî-ü“§¹O„fîžA~öÅÜÓÀV2©›ù«Q-íwçÕx2 Ew>ä1dXØc=pwï½¹Áî+÷ÜG¸ïñÝ“¾òéÜkøuvtî)Ï´Òû%zå|ù[º*xh}&µ{Ý:Ýüîû<éÜëÖé³íqéÜÓ¦|ðX?ÝüMŒÑa¸`é¼¶õáÁ%òOû…‚E{ã`¯ÂL_4dô$àzoÈïs°ÎŸ50ûfÎh%>Ü)†µó¤ º—F—^e~ö|‘(ó[¯­úeû Ãi¼X>êøfAùÀg¼oÿ´PÐcRºçãÜÿˆî-ÂDc̉©Í^;Üîå² º)} »í%Ãïîê7Œ?ÐÒL\ð„/fÒ®÷|Ö½ÅyÝSóUŸ¸Z_%ÇV Ýðúáv/“`ÀV³iúrG¶o£â9Žz’&N>rýwa¹×I>ÿð AµGæ•¨Ž¾ ²{ ˆ}ó3×7XѰž@ôé=`~ òE‡z¯¯ÎÚ $0õ|ä{%Ìr÷\$¾úaÿÐîÃø¯8/ý +@ÖsO?2}2Û¥- ^oýÝÛäÐì5¤/ƒn2Aù‹¬àtk÷:º‰1¸×Ä>ýüìèú %9Hþ˃dŠ×>á’Î,~hó"ݦ•Pø™9îm’Sï«yÁx¹·INõEB#tzÕ̹×J²]m¬{i&ç癵ÏPME Ó27—¿óÁ}ÛMÒ~B½ÿbQ`H²àIÒ¹·¨¤yJýK …^^볕Do¹v/©y}ÕѾ²œaæ´ðÄåÞfζÙ̶ßþ-ÿn±¯ˆ,±Ë„|fûæùÜÛÅ<m^ÝË+é·¥sŽA÷6þÂ^·tؾ¶m‹añÿ-Ñ|F¿áè!x¸ÿU1œ­†/¥mPýÑ‹_™A¸ÂÿWÄ#h{n}¸Ìmn2€•bþ»YNƒ{%€ËduYM¥3³[Hìbz ž?—nÿ0Ú½bKG)&|óXpvöËØ¬Z¹‰’ {Üm4³7 ° sk_3›Ä×Å“ÅßΆc­ùG3ð€œn:PŒv`ßÄÞÛß«ÖÂfë>:bö›ÆÈV6µlóËcØ¡Ã!àþŽFÝÆw¦y&¡{~Ó¯Ïsp?”Ð>3Òõ0éä8Ýû2ö—Û ÒÝ=ýŸÎï:ÏþË{R{âO:&¿{¨fw‰‡A›§8,ïdv¾˜G¶Üˆ-LKìh³ÜÔ~ÞC+½_Õ?d*Ý”ä´ œvFn€På~â§uë¾;‡¨÷¤;8ÄýÍ m›ÅM /“Ny5 èDÛáQ5¡ÅÝ[¯&wð…é_;9÷Ò,?–éöÀ¤ïžͰÛàŽÞ¿y,^¹‘!Ú ±žˆPÜÓÏ¿³Ýb;59~Û¯¨ƒJÜs®î7 ÛüÀ™÷!÷˜·Ÿo¹má3ìÔ6ø#ËÇõøí Jß½ë¸~ö%ŒÝ±Vî5,Å_º±Šß»«f'œûTx7Åâ§®§bÛ¨1.ôÄÔ¡.Ø{Ñ#ï²<2ƒ¢ØÎ[Šï;þ‰¶œÜü ‡ƒÛŽK÷ vÙ“Ž\æÆ1˜»à¹`òUýP¾H§’dªxò«j8j˜ÇÌÄ/E7K.xÀxLÓ<Ó„Cè;~B«ŠÂ[Æw³DÜÊ Ÿ„³¢)Ÿ2·SÀpÙzw%SbÔ˜{¶7Íè1H9³…OH6JËzO§ƒ`çÔ(› ólè·ŽÛg—‰Ü §=’ãäþêm삵hšÒ)OÒMUáOÈ'’h²}¹0îY‘“»kg‚nZ@Ñ“¼ƒñgZ¹£]pÓ6Û+×võÔ´·£§9AÛé–Ù`¥ÉrÏŒ-Ù€O‰Ïáýö³vO´öhX¹ÑÓÂYîo,Þ1V^ lÕ·Mé5noPhZâsÄ9fˆï·ãÏBs(2j}¿~œ7 OÌ츋†ãqSº;¢îûb2”·>1%Û½Ë=Pã 7SLªÂ2¥‚yº‘{)>xYG·¿fç??¡@û´áj)l:73ô¤Yy3Ý]b©)Ç;yw{{Îlaîhø¢¥šÛ²/¶ª.â}­bÆ{'³ä³}®Üi{ _|f{têó=9*“Æ}0,=àÌ+¦à‘V1áß,ò½/Êæk<¤VLnW1¼q¿ac@óÇÝ‚ùôŽ|Z_Ñ–Ûj0t9ÿÝø•í‰/scö|_zûØî6ƒðûðÃNUñ¬z©°Q‰ =µÀ=aò³Ùž÷Ö*õ+z“ç´·ªØ¤K¶‹Ê§•œ<ã$øo&lù0⊇Uì³Hø7qÓÒ.v–ùÞªKuâ° |´Ú½²Ÿß4{nïÞŠ8æ×r±eö£tû‚Ïš,ÇÝó0ô¨aëÛ3o’1ž™5ï‡)?0ÒA7¯§ð‡·0îþ±2Äç±£-WµðŸ¥\ã¯ÚôÎûÅ9,r7­öý²$wú[²Ü¸CžÈ˜ñØ£æòQòíAy0ÕÖ¶ÓX¹‘?í½e`©É´&£ I=0À›6£ÒHÜd_^Ù×o;> ÂAKd~˜³G†©€hëÑÂøƒ^Ù†ï¯ß2{\¹å´¥»Š;{)“z‡EžÌTw4û÷-z&oSùg*g®îì/àž@Æø}·ƒ;Fá÷ÊWø€q…ÝÓ‡wÑ·ª¢¼Á[ºÙ^x,‹²˜)Ì~úl•Êo}ýÔu:/!ÛH†lÆbXÞ¦«ìÇa<›[úh* ²Ïñó6ŒxYÜi–~&žÒ‚8i¼6YT_ÜÇ.6_ò(~9<¶ßzácˆuÄÓrïiÊp{fmó÷4xUØ@gãô ùåý8HJµ¦Y›s|&bÆ7AËÞ-ÝP˼8ýt)͵DÄâœ^Z º7¿ ƒ§<÷ ÂóêwË<Ž%u»¾×}ŽÇÃ3Tãù"Ù}LÜÓjö±F¿°ã=.Á¾W¹¢‡7ßk½¼ÁÙ” úW©½zìð¤ù6¾ÄçàÙz ´Í'p•ÂÆ¦•^D÷2L¿6ølþ7T“³ôëÃô¦_'@;÷ÔûÛ¥&;`ˆäjœm êØ|ýõ¨dÊME©½s7ŠÁÿÅt\6‚Ob#Ù¨6¾œâ?“IæÁû ™Í'ä.eG´óñÄå™°Û½$\üœÙtªbd~“sj›±)F½·Šs¯?6SŸØcGÇ,¶|iV̨ÜZ'»¥º[õ¤îIxœdЭÓLFÛ»ÙH”Ê]nê§õš »kÿ@˜™m³Ã'êÚóÄŒËݯÔûJ—÷Ö×îÖ®EÛ$ÃÆã`ØìY ÉF¢Ä>ôä;ß·ÒÜk*{“©²×Ÿ× óãv+EŸT§º4Ã^¯^¹a æ%¶p2”¶ ÆÙßS»{k÷`9ê¸#òiùÛ^Ù3éX¨ê?RNkqø×t«'¾+_‘LðtÃs–öåèùì+Eºµ)CoR¦Y»¯Îú©EÃnk³i&üœÜ'ŸÀ”fÌ.ì™þ—,E_¯(Xöû!Veâ3ÒÇ‹g5Ýq0¬a,¦éuÆZ2êF†{VD< Î=câöKcw¶¥aßÏ”à–,;ƒµ]’ *ß!µ/í«.ŽUdŸq[ë,zRY·¸l @„©~ t|ëÕhá¢=‹+D¢x’(Û»_6įØý·‰ÜãS~1õÓ‰RÒ‰(%›àEºÕ8ã1zàhÔ|ÓºòæË»ý©»KÂrÇ)f¸Y¨~M¹Á£ ïšá9íÈNØ,¿xX’ÑØánsïdz¸=æ{0êûée6¼Ã•rËqøïg Ùù]æ³»££Ø12Rxh£µüªÝ?£™*œ¾ê‘ã®ÙC$*óÁÐl(,_Üžñ…q1oêÜ„Fä»Ù,ËÊ™–]zº¨ 3ny¥üFóZ蹩Ý(2.TNðìi1†É–3/§­ð}2…“ÓRnöä»­Š}óö·|¬¹ñ ߢ›K2¤éïÄù…ÙžRPµÑ%ñ<Þ–$ò33÷úxê[„SýºÎ}¸x¹É‹}YÌnŒìIûÂB›ØãüHs (>ñDö^¢æmdô…<Þ}LtŸY ®Ì‰ƒË-(šOÞOùô®úàÑeðŒÓ¸ç—O|–ærdÝ|l!l¶éPÙ*ëqS±Îk³ß.òi«2·}è×å‹Â³> ì†`u°ýô^NÙÛÓÝp¦<–ª9§÷Û·àg—";¡í³ÐÍÖýC±©4Цœ—ÍaêCûÄÌÊÌt ªs7×e’|3kËád ŸB ã±GðÄ ÿVíPpo6Ž——ÓDŒ' Sjøý!æ%ÿßš£±œÿN»ûk$ÕfCô-ójq^*ö̘è”Qr.>'BŒ§Œ­ÝT¿x7­mÈÚ){~¨D?ºÇNFA4k¦’hÐâO ìîdÇ [²1™ç¡àà¸ÊaiÎÿÛBî˜x¿—› ÿì?eo¼Ôí©úî¥H†ÃÔÜþÎÙÀÝBÏóc©åthµÃÇã^¾‚î&¿0žÆÄm•û?ÚD«í°ÜžjðíËx'f'ásêï6u4u¤Œd„û6Û‡yÎëýÿítïdÈèˆï#/pCŠw¾•—¾yЧïd3cn%g&S¢ÎC9·™_N÷O6Ï.ÜÊ´·ÿÃÜX³ü„dÀ)ù¤óï¢ñGؾ(‰-E÷\<4,‰9ç •»Sqv¥wê·÷Tb¹;–n_=û7dsFÕ©:yïùí6ÀÈüûh¥ûЙ·(çå.³&BwˆsîNŽÏåsCªa±ë [#|"À–×Å;ɽÅ~‚îíóÛ|P ñ6;ÔS°¨û‰µ#o„{Vþˆø;ÚÃK40RÝ_…ìgÛ*7sûÈ>†ÙxÈ])¶dá™ÓMß)g.¢mŽh·×ŸJGjQI ÅÙ}K¯[Úï¤\ß›t¢4ÎörVß™þÁ7™Uiojæ‚ÙßñÙÜßBÙDa?z±±$¿¼¿HÊ ¤e{χøðŇÆXî^2oò¸Í6.ö]±#£#ÍàTô ¼{ß-çŠ>­¡ÇðÜœÓð¾Ãò©¬%ºK©3Ô&ϱO²Ûõùo¢c‹§#±]õx‚éCô^ãQì@ùï ôQšƒ–É}ËëèÅê½ÄUF6z]Ü 2çµ±É/úV¯u7c¹¯7ËãÔ« ®ßÉ ya}šû¬dc’'4~ü3ã™sÏä*·+ìÝŒEçè å7ëðNÄèNív¸‰ó®y9Úµeno¸d,ˆÝT"?šBæ^JýôÜæ£ZäÿG~Üó–̈­!w3Ö±G¥ÚhÙùçG‰v{{ÒÕð1Þ$›ÉÜ´Mü{ëS˜¿Fêu#÷c´Ýƒýe½ã·ûÛŽâÝWé=ïj,“‘ŒÑ=~‘ar’ ã¾o¸;÷¼ö° åBÓV#áê¾Ë¹­_ŽñJvïÝwøÃDŸx½¼%Í#àö¾Ü÷ÆÃ£¿5þ|)ȼž$Ì.1xèéâÝÊýrŒCšmÝ4Æ„™Zygú±l7[Ë.qg¶XÌã§.:Ó•âXE÷‹Û=M¡Üë¬L;Ö8̞ʺrçâ#`:vô½T.î;)úÛÂÚ‹‡N}x’]_zi`fçÒî%óõvm?K1Y=$Ü#wÇ~ƒW™=ÏÜgŽîòÝGšnçî¦/{ÌyòÖø`ÉîÝîl€ô¡pÙÃcí¸wν̮¾Î¬æs£â^x‘Ìê3%xج>C‚}fõEì à^*Á®î¥< 1¼d¸—Jð†Øb4ÅîµKp« â%Ü1Ư]‚Û™„/`W÷Ú%¸»>C‚Ƕ닗{©ÛÐ)™ÔäüÕ¨N÷¿»ójäCM†Ô¿à _Ü{÷ø½ž&Ûúå+¤sOyþ×=Ú3¥sÏ×=Ú¤s¯Y;¯{´{¤s¯X;ÁcËð:ã^NØgO¼{Ýâ»w¾\:÷ºÅ÷¤G{žtîu‹ïÙö¸tîujõU¶_ºW­ìw ýŽ¡ß1ô;†~ÇП%ü˜½"føH¶þ³$q¯•d_øñE’Ü!K_Úr¯•d7 =}ymÞ-ø’Œs_.†š¹×œu½|ÍÞø|i\ùA‰^$Ç‹ÿÃcé^'Çݨî[F¾_"ǼHø=fûŽ7ßñæ;Þ|Ç›ïxóoþoŠ7ÿJdÕ{nâžÐÎúIº×³Ó=±ûðS%tsÕ?MB÷™za7 'î¢à ÖÒËú>U÷½HB÷·Ålý¤LâÔ9¾!ýóS ГÐ=6ˆO•н Ñþ~fÞçLó}º×T¤>Lÿ÷B Ýkâî`ÿõ»Ó< Ü‹wÉ(¡{n«–û$t¯Ý%·}„îµ»d>ØÏšæû$|u©ë.ù‹â(¡{íB¼SüWmu³÷&îm0ØÜž¿²%†{ ö-ó3%toƒÁžÖX&|»v“O˽ {È-x¦„îo¦ÁλÏòî³¼û,ï>Ë»Ïòî³¼û,ï>Ë»Ïòî³¼û,ï>Ë»Ïòî³¼û,oæ³<óþ^jvw1ýÓ.¼CóI6j^)É {¹$£ îµ’ìkó"IFAÜk%?ï^+Éû¥Í•ö6ñq/ë¥sï y¹$ãïÜk%yJ‚è9Ük%™z"½V’Q÷úýã?ï^+É“><¿åÒ=M~Üë:íì¶‘y¥4»Y´/–f¿¿B^¹·fÖ)éuÒøBº7fµ½XËVz4/nдG"··?Ñ3ûõ]_,Ïõ½åÍÊñ£½? Ïþæû«¥D¹âewqÜ^Ý~\]ܸÅßëZןVGk}]È`–iºX.úæà»£Ë›£Ãóƒ³Ã4\|8X^þåà|ýaóûãƒì›àpíþùzuõÛëÓƒ¸]¯Ã4Q”‹_}}ð烟/VW Ía”ëZúÚ7åŸÃ$Î]”F)¬úï ½{µ¼ø³&æðë$ÖOG—ëëÃ8Ò«?~füþýàD#Çp}ói¦¿?_~¸:ü·ƒõ7'Wn}2ŽÂ`ñ«Óp·ú¤Õ%>^ëÞ’(J¿Ò µæËÃ0ËB-\é_ª×7WË#=W»8Klj9ø^k\Ïv|yxu`+J}£K¯®®ôxW«k­-{-–£å§å‡õùúf­_þèlE\~âSþÉŸË“ÃXkdÑÿìWàÙaòã/öù4.\œ' ·ÿyZg‡ŸøÀW‡³ÍØ^_žÜH–Ÿõßòj¥Ë~ZéõZ·ÚcÌ:W;ÑgÏî~V—eÇÙs°t/oVǺæÍ%ÖÆZé§ËO_:ɳˆ‹D#zðIÛõ+}bu|ºúZÿúø¥³úåëKmxýæôjùéŒ]óiyu³æ±í‹§Ã®õëëÕáZ7¸¹Zÿ"!>œÛðšø§—W_ûQ(ãLw=^išOdÜÎüµ¯§k}\]Ÿ­®w¦¯þê‡Ùà›Ã¤ÔzûýÍ¡V釃ӵIÉè¸Z¯Nô}?Ÿf“rb³È…5"Ýyy~*MssöñZãžØ.»‘޹>¹:X_|º½ùÝåíþÑ/O.¯ôHú°¦~}¡åt{ä/¿â-ÝäözÅ0ðÞòüÜ÷[$aÄ.ÿteð:¾•Zûêð/ãòû‹ƒŸ¤x”ÉgÞ~Ô_¶¯tÉÿ—ƒÕ/ËŸÎWzzqE±_EÃ:c ­¼ãµ¤[¸õÓ¾äW'W«ÕïXÌÌfÁ8VÌ8w«ƒ3û¬ÝU[ÁFq}zaW¹¾eÏüÆ!ªåælysxtp±úÙÖçf10àWz2ôÊ•ÿùãêæŒÇ?f¸Ž–‡gÎ߇{ÛÂZ_ ÏÏV]Ÿ2ë7Y¿®ýP&aê~ÕÒº¸X]i0ûZ¦”íªLÝÕJßZ¢oýÂ]Žã{#÷áÐéÍc?¯?å«åõ¯ÓÒÿ·Ûõ¸hLvÅž? Ñ‹~ÿs1Þ8e’ÖÓ8Û¸¬g¾Ù"—,èC§ŸÏ¯/õ!/èêàj5›:ö¢ÍÇR_·ô×èÙ¯üXdAnËøRwJÀÏZͶz×WÇ_3!v›Õ®‚Ðúµ©[IýƱ1òpv°¾AÔÕš¡ôÓ¢E}sm{×j‰¬A3å‘ä–!2ÝuË6=^ú•ÇŽÑj ‹ \¤%ks~r+á@Ào~ó'©³¿[D‹È}¿ú×Vaña¥{è7ÒšúT¬—&ý§ƒF;ê\#n˪ÆK½•¾ÕesVÁï/dn´¥®Žý=ŒdaôN~˜d²ã›ð°ÀN}ç5b„‘’Rüd³ŒñÕú íŸ3ýw2ü{:{--üÀ›ÏxÏí¾ÆÅ$q^0Íá7Ñ ®×¯Qî>Œ*öt³Ó hHpÿÏ“dyÍCHN7ÊY”‘É{9™« ›« æÊ¶¨-/p%ºeÛæ:Ã÷J~úVOãG¶`í, /ý≴xô ßK ØzŒøQûøÌô3Kû/+ÁœWû>O†EâlMGãbj7vç0»wÝνæ‘gÿº‡ÙD¦Ó,Eãjª~:ü:Õ“Ëðylc*# Ÿ,ù¾±é68?ÅÉJòÌOVìwú°om¾Æ}{2³ê‡.ÌCÔbéŸ<-B¯€âq²šK]Û÷'rjlÎF-5ædzÍæ_¡5­7ÚcËG¶Øçs.ÆA¾¬HÛ63ÃZ4ÙÚ[)ÜÓƒoWGàéà ¬w,îôà‡{rð9“Q² Âà0K$O^^ ×±œŒÇܬÃ(3·Fcw¶¸4rOјOxÏÝ/®F^º¢FKãu|Ðý¢ÑñÊžG¸6¼ú¸òóü2­âž5p“h.,Ër-–hÍùíõWΦ?Ø;–¬°’iÀKÛ~3j™}8_}s}ì‡{ye¤%xt~<Ì‚Ýó“Ûb’”˜ ñý6îtʒĦïø»öIê×Ô d&dâWü?˜ca2~Ø^Ý'sQã½SzGw¼t úaLMçDq9èœdÐ9Þø:g×øîhŸ8Fû„Þ:Fi0¨ŸdT?2×jR1~[Z& _º‰wßsÏ[ă¸YÐNF;ñGùâ½[bP³•{¾Z&ÞĽT¾ø9¶d͉HÖa±ÿ£9û†…$<}½ò*ÉÝëæÕVöñ‘5 ì¢"LLÚÄKûß~•Ïz¼þwï/îÐ/‹‘bpW¾ÀëÿW£[Qè; Ç0óƒÝ¯Ï%¡w Þš·è™r̦†yŒù"ÿ€¹ÖÜð΢ús&\°РWׯ5>/V–þÑÁ‹1›t÷êzGè4L¨ûðJ¨þjeä÷€ .£Èù?¬.µ]¯~õ‹~ñô¾‘t/ÑåQjº< "?Òƒ.ÿþðëÜÀÚéêf[èü~_ðͽ¦§H†NÂ8t&½!üvŹŽTã嵯¯WHOø/ÊïBP]z³œÜsƒÓÌg^”È‚Áˆœ¯Fµ>ZžŸÿúµ¿Ýƒ…™Âi˜ËÅ‹%ɽ$±Ñôþ/ãŒ>†ÈçR¤ñkBwqNäM\’$©‰6˜ã?@~gk»·£ì®§goéØ[ ýç‡3»!æB§é£73ÆO:K:÷B‹ÀŽAühŸ¯åýn6@–}vç÷qÙ½ÝK M½Ù½ÜÛ½?]]ž^-åD±ý¬ÏÙ3–IæcWùhÝ~jçEDæ<`z8*÷"úb(h{!ö¦" RÐG>FKþùzÚ ›ÓiÁŽi…e_ö9¶d ÓÌdˆþ À‡81 ˜Ê÷óâbýÍÁòèÓù!Î,ËåÃÍ÷^Ô½Åc<E³t5Dýøãá'Iáß”åJ?É;XüŒðÿõ0OŸ¬›?¯5>B’£ÏaÁ#8{ó_LúƒÓ«“CéÒa^‹ä_¹°½ÕNÓ<dOÙo¤Y)_X_äóó§ƒhÏáS¼ˆwŸâEd‡O<äpøTÛc¦‡eÂÃÝœýdšçÞéxÖ㸷ZÅ‚)Ç=‘ùI9ý¸üdöYÇ9±~gǃdmø8ú¢A¦¸ðë§,—4%—>ï=°yÿÊ8!ñ!ò<—qG~ÞvîG¹_ià^°sß\Å'¡ Î†ð‚—£àlÜtÚ¸©Ç/£áIK|po‹‚ÃTR9¤½¼:~ª=z‹èþƒ(ÙK;œJa1Šš¸6¸—»ƒû×^¾Þô„¡¹Û&m4“ööæ)ƒûfø¨¶ÅÌÙ6qc;o2qŸ`q¾¬qL¼ãxÝdÝf66Vüoöò&q6Ê›näÝh4û€Wiî¹Pê5!‹ÇÀ[“0MÂñ²Í-çsË9õÁë°ˆcïWÞ¯üÑ%Yé?FD,,ã!k¶˜"×Ëóóéô“4«³ƒ+é˜õÅŠT;RB\=K…|Ô ½høgñF% ð‘‘Ð_µ˜†u³ç€õó+æQ¾ÐÒ‚‘/Ú’o1É×ûÄåÕÍÕR^zizdýYO1Roã¢(ÏŽ·åm¯7ÃGhÔ‹-*X¼äÈÍ=K¦±+N3çÅJfþz±ü8žxoòa×××·«ÇŽßr%Y8 W*¹þ¸ôQË•ŸNròÐP§„I´ó®¶­Ã«¶´Û3dþHÚ¼çb<'h9ñé0>Õõ0‹þ6‚‰©GQf¾r1¤¤T;X¿?LôÃ<þ2é(£dy> ¥íØáœÈô‰—'Þ²•_.*˜úPTéfò±i7'Bãp%‰çÞ" rÇÂúñóà#*‹dÝ;;ø™ aaÂýås£}/—a E1ÈÅî­g™ì>¡q“ú1H™~Þ,.N`elM¸)Éçjy³:F<â‹Ó®{ÁNx OÏVaæíZ¬iöÛþÅlW'ËÛó›!÷Ûb5=Aâ÷òê-Ž)ýø â$A4ˆ™jŽSøÈ$Æé$Fž–Œ/‘·­qäƒDñLÜMˆÒ‚Þ#áÙós0ܶ^[ÄYb$›3°ÙñÇ–,«™,g“,'Ïß{†ÅCå8'ÂäanŸ!mÆÁm¦êóh[“)÷±Ÿ¸ˆÆ1Ê$Ó?úJ ÛI8Ù3OÙãÙå*OÆ£so€†\º»'Ñ»ç•'gk†ÜÖ@¾z;¯Ôv~î}3Ê{½xã™ÂwÍ?}ßü7|˰üûÿ"3°øAϺ_Ö;ú’áU?šÅx2>Œ&šÁÝ—÷gâþþÂÄ]<,®{‹SþéY¶äâr7Þ;¼zßÍäýÃåòøqyß>Ô0Š'É n²W\ÞŸ‰ûË«¿Êjðê'I’b7Ý»x&îwËŸVÕ0È›¦ñ o¶wxõþ|5|‡çñWX ÅtÚî‡7½/‰æ®ê:ºZyý* &Ý•”/ªZx0Ù­ðÚ>É3Ò]ýåüòþlHëÛõùq`e…þÐå/[ÓAæö~ǪŸ5E–²F{§_ï»Ýû Ä/8[|Y&laøË%e‚î×Z¼?´ùøI1™ôÀégÕ– •eƒ É>`ïï úóÖˆ~¾\5/¨6¤a1Žhºo™Úû3AÿÛÑí‡çíü·‰ØŽâFE:ˆ»WQÙûs³us¾Zžh\¿ÄYš×1Ï  Aó½ €÷g‚â_G?X©o{5Jš”É i±wHyIÝFÒø1IßÔ³.ÌÇpiZ–ƒ å^AygHÿõËnþt+s –d«ËOnž9,’ÌdßÍ0³LGÛ{’O Ý‹¬m™=Ù¼™›^d³:¼#ô¨šÓù*úÞöå]E™_EÓ"š`î,¤íuôýåÕíuôEuH>K0Q7§—Û¢úœmQã/jFòYz€‰šÜ³jùÈ®¨ÿú ñê”ñ—¨øü€bL/½‹/?.­‚}òvO7ˆÑ…®¯Œéì mÅ<'@"öþl(ÛËýÕõÍaX~ɱœå é^àhïoKúýêê£$ýr{©œ§ i¼ÏÛûÛ’úzY;Õ»³™Þöte”ÑŸÿ#ã>'×ÙûÛ2š#öôyµVó“$M÷λ?øŸKúßOÏn¾ä¼’ú#~$ÍöÎ;ïoKÚ®wöÒgV¡e8?ÝGÒ|ï®çýmIÿñöã—T ¥ÏóÔCÛüN‰Ó¤1Of>v0ßç¯.ÇZïÔ%™êûf÷‡±4~ êüüòèKÚÍQÐ2-A£½“ÎûsAëåõê9°éõ“>œáY2º×ó¶÷·µØÄMåpzfãˆîõ¼íý¹ ÍÙêèÇ/:õÃp”ǃ {=o{KÐK*É/f¹>ù|z~1΋Aƽ¿GF&ÿðÒ[yÕëb°{‘R9RÃßçåÛ«3íý=òýqystxypö¸x/ W•Þ׈Ò"ÄÛëZÛûÛâ_^}ÑM3¦gå8ŽåÞMÃûsA-ñã‹F+ÊbH›(³Q³÷øo|ÆmI»^~üÓ¿<'½*-«,‡$… ¥½Ï1¶Ï ž±Ik'Y_È3¶2º0†Ô…`²š{á¼}`>°½1:|™Ë\ÔE†Á(ê^ìi>7s.£‹=/ŸÉ¸ÉÛ¶e\ß|á)2’hD á^(o˜‹jg–_JImËšF£Ý ó½ÃÊþÅmdµÀnú®€Ø¯€,aH¸×HÙæÃj>ç—]ñÔO£º×LÙ¶D½YÞ|é0dWCÂp1p¶¬OϾ>7nÕÕ¹3yVÔÓ]RT7£["7öôàhÃ5‹DåwêlÓÔ¸¸†ŒœrÈ&«z,AÛ.>2·<¤ê+z)`{‰±Ü9ñºˆÝ#²}dGä~ýËêx+Lóô|&÷¼-3D»Ã!q˜<º{䤀w¾M©ÙM3ÔöEÙ8¨‰„ÝD¶ì ëG5Ì>gðktLñr‹‹YÍäΙ9ÙôŸ~:ÿÜ.ѰJ9“!¥˜ò=³ï‹p7«ôÛ•/:/)¤+ýyšƒšß',™ª ë§?žª=ß:Þí¥ˆ“lÈ5F]Þ3õ|d[J‹Î~™˜·_‘`’™Ç…œ¥{Æ”l/€OÓžJóçV«¸'OûÀ“—EaªôÖçðEÿ<³?ÙdÎîrï˜wýI-·‡}#Ò5†tãò^d™Ï«:"·7«Ï¿ú†ð`È1.÷˜! ‚ìHinÚQ ÉÇå½fÇ>²Ï²;žæJÄÓIË_>CQÁ §‡iã™ß·øÈŽœÿ²^ýü…6P±•—‘ø¼Œ-F=ÅN^†´è¾¼Œò^µ›–±1¦^¡ù­W¾q%ïô„ó<Œò~Ë´IÃØ1öäƒÍëò`5Mî±SÏ¢ÔVJ9Ò7Œö Ø›Unùï—ž°ëÜÛŒale]”„ìŽL¹eür;.òGpcº…FÑ4ø®wé6Þå¬Þè×ñPgä£JcŠEìÏÝçýùZyÆ {oã”i¡©¶ýø PÚ7”ñç!ݤŒ·³,Âðž„YšÅf@ýÁÖÓ‰/÷ÝGÇüŠ0¼'dL°p[2î׌oC¿=ˆq¹AÀ½'˜óìŠ}þa­¿‰¿Õ2FQ²R†ûK|N…Û‘ÏPh˜=7öñ‚­í“0§|Š0¼'õc–P±Ó0^˜¹„hžñœ‹¹I¦˜ÙcÙ1ÍØ%勲D> 7åQ„Ñ=é3³D Dõ¶û‹Æ‹ã`;¥"ŒîI ™åT ªç€ø²µkÛYa´×$¹yš¥¢Ï=çx}1޶³-$ðþ´š1ÝÂy}†ÝM ð¢º)ÝB¢î5PöÙØu­_²ðr8ž2.Ü ðþœ›1Ýbx*luÉ©.Kº@à©Vô‹ œL©£Àò?Ã`ïÑâ,ý„ö£…e‘L¹“Ðá}BÏò1LhNÿ*B§cO‡Ò ïwói)Œ˜¹¦«y€þ3º¦Ÿë””Æû]ÓyR²zWÿ %°Z7ó£9æd„‰ͽ¾¾çz6ž³já4yqéÇãl 8Ò1Âd?›§cLêá—8¬ÅS1Âd/öróTŒ˜ÃÁÎÓOÀ^`¸ž1ÿ"¼‡àÀ>°+ !ƒ,øünj\n'i„wx ÜvŠÆ\J³±OËwx—:H9åe„É~Ÿž•1IivêKde ÔºSVFx‰Á,'cKJÒ^ az…àã{fpÌÄ€û°”›çal øýÕê!²çï™$ô½IÆ Œ0õ7˜ÑCÍýÔÙ!ð—hˆ4Èmg_„÷ñ*Œ¹D#Ò¹[Úñ¹óFQÇÜ‹ð>Z…1ó ¢~ùÌ_/ª›0Âûˆfé&ê—OMv²/Â{¨¦Ü‹QÔ§¤V¾q„"Ù¤axY³}j¢$™m¨4ü"ü‰“˜þÔpHÓ³ý˜cž¤aCjéP97æo×jKÀ)C#¼§Î”¸;ú>šÒœWõ­þ¦$åàøpýð™æÓQz’Lin.ÞÏIDwG£ó%F²“›fû‘Æ<3cKÊú–ƒóãG"¤/?A%³2Â{ŠJç9 } ~¶¤d'#Ìî!™%cìpZ…îñeøôÑ˶s0Âl fÊÀØ=ïŽ=½Øà¹§îÃÎ:jhÓ=ùÙ"ÛÉ¿Èé¾ü =_ñD^ŒÇ¬Im”Pî-ñ†IÈ·Ò/$c¹Ÿž(ÝZœâ/q4–[9(û»á·›‡±-è°„í’÷ãå—ËT2&`Ы5¼ÓÓoB¡3Nð/„@Ë-ª‹0ß@g<§’üI$oŒ?ËY# 4z, C‚þÕ"·i0±^¸AÞýô3Ú žÂøî¯$pE£ÀÉcì<”üµŽ¢|8}0Gc<%eë oÎ8Æ=úlǸ‹ýD€î¯7vwr4|¿ðóxÈéШ}JÒÈï9¯Ÿ_là[~ ¿îó`´Mwî/9vwÒ3F¿;º”€7Ÿo}¹Ù&1#ßo#ï$fŒS¼ð3`²“’‘ß{¼á¦´Œ!R3›åËÏÝôBº‰ß"Ìï?Θ'eÌ…¤iÆgw ò›¤ «'Þ4扣ÃlßZŸ//V—·×Þ!š…¿h‹öIÐ-¢‹(¸g©n¥]|ln¯ô€ã€‘ÞT[O\ø^® ·ؘ.²ìK2^‹¶Ü&¼¼ûÏ3ÇŒ ;ƒûøÇå/Oà·$jÆ×g¼Mä’w¯s4O¶¸¸5"»Ë“/{¢ \"#†DÝËÖ>çÀ¸’}¸üøíêzõ¥8â¶eó-$köX¾…—õ»Õñ_ðøkuÌ·¨p`øûÓêêzlnýbpÿ›ùÓÏ)ó‚Ú1®þ¸:ü:LŒ%ôô`ýÝa4Ì8 ×7ëëóõÍáÅ­gÆŽanüôs5‘š„ÞÊÈÂQïþ±ûþ÷ßÙ˧atǧ«l'†ùûƒ½îµËøþ´¡Qì1;#šªEæb»yrÆ?^?MìÏW7:öÚ³5¢©„d{°gÉHýß%¶Tá+tð ãíY<åm¸AÞd¼SÚ†äå”ÂBåÿߟ—¿~™Z¶QJßëÞ¤L·¤t^ÊYÚÆ$å·«£[iŒŸžñrÏ&K¶ó6¢©–d{gi“€ÿbãø%ø²Ôºmú–#tÛ,}·Íß_\ß,í„9ЬËX˜ù\8ßïÉʱçæ÷gW+2aùêÐQpìŽñWl>¼Adëé…¹YîWOIÔ‹Õ²r¢ûeùñÓ¹DŠfŸLÃ%†f ªãcßêbõ³.}²Z)¹ÖÝn.™rëÐzøñàì0L’Ü®SÚ¥&€%hUþ¤‡s=o JHhL3zÁz03H'þ©¿™Êwnά׵ŸPÏÔ4Qiè =JƒÏÞTÒÏcî;㤉¥êY£Ýt˜k2¶Ôw™¦ ë ½®¢y:ë ½t‹ð±ƒ½—æ(djß }&îúhuq=uÒ£Á¯ zºôz #Ñ”ÚÛ¤çZÞ.{Èï¦gëñ-7l™G[,ÙžSê|‘ïœRç‹ÌN©ÙÃ)õOáahÝ;qx~psuyxsp|{dëBŸs) 7ýÕ ? #K ’ž>ò +Gþ.™zúû³•ÄêÏA˜­W‡î€Þ‡«_d‡"Ë©Í1­äÎÏWçz¶OW—§WËtM¾Ð."œ9½ ÓËÑ¡ÔÒÙÁÕêßn×WÖbùæŒî™º‘²ìiÁ|‚’ý¨¾½XIXË5×å¯ÜÁ‘T¯íy›ß°y¼óêàƒæß,¥ŸO/4a'¬¹õpÕÙ%.¯è&§küÅÞãþ¥5Qú¸Ñžg×Ò+ºÖ°r>®/Ö­®;XßðkÒºmiðœ‡GW·ÖuPW]\}cQåƒÿ~“.“dŒpìΖã÷‘ÙZüÚ7´¬MÒúFϰ֌ ûN†Í/™×Wl‘óËS ѹžåxõ‰‡¿8^]hÖniaäåÑÑå­&ñ€KÒô+õ5 ç—Ÿnx¤å¸`3¬í‘$ýp¾úè•kÆûju²ºº‡”!Ö0ôÿvp}¤ñ;—ˆÊüä÷s<=·í²­ç^‚É }Ôõô6ºG|fõ ¬™'2U6ÿçÃhDÖâèÆÇ¢Îõõz”a hqÚ®íÂÓh ëÔbX$°­o¬•1Ó¸ï©zªqc Ïc»ö÷~†qAQÊòã0¬×æ/ø¯Xž/5üV`Ém×noL›&ôÇj}zÆ7`{ÏV7°ØðΛ6".L¬9‘­ã°ðŠl=<éf ¥/þ|t9Ñ“J/l$Ó¨]^ßø1ÚÝp6vÌÛ<;ø‰WŸüW×~%]\{¨©p6&©µ Þ½úúÎþµ!ÚzÀSÔºwyõóë¸AÇý©U”xÅæ«%.ma-õ密Y=Ó¤Ït˜“ %f±=èóc•3ÿ¸~n&õt<®ŽL¸5 €5¹dÏy­Â\^ŒûõbíWœàX¢a6†‰É-çeu¥pl‰’CUzjÂ5³b“¤Ÿ½þJ^ÙŠ<ºÔz¼f/_^LËrkä¹ö¶â×4ïüp{c7¥9 ¾ði½:2Tå×ǩᄯ&®Ç•œôk[Rõéêè[’8õÊÄm´É7^al&Çí±šÅ™•M‹·×KoÐ4îÔË·=qß mäcìYu³uëÕ¿®qÎ=½ó°(ÙëÿõyL^E~ºõ÷ütµ¶%j{sЦx´Ú(ã }ãG;³œŽá€íHôBwʺYªÂ_çtuÈ4 >ùC˜^üO-<ë¨{¶’)»¼ÒìÄ~ƒ^ ÁÂë›Ûãõ8ÛyØXO°ãG¿AWÖ«òhyuµ6[xyk}1–ûiuŽ’¢Hlñ_ß~øÚ°ƒ×¯—çöè×, û–ük)ßfzÀB_y KÉX_ßzg5?¬Ð¡8îòÓG‰ãØÃö6m¸:Zs÷#ÛÓ§—W뛳ì08fµn.Mu‚‹¼>½¾õŠöÔlû„ö¢2AOc‡µË_Ñm]õ m¨¡EQF‘cGÚêhŠAb=—ïät26g¸ÖÈ8âZ&¬} ¶ ®¡ú Å|]¬ˆôž†5²Ù¬ÆÙÒö£sf@{Z3§£Ѱ¬gT¿'“ÎÖhÜ^]˜23®f%$£‚ñIènÞQ;¼¶á*_yû24Ìä›ö:|uá—“ÇÀ†“aa²ãHl¸O¢x÷8_ o¹ƒ4üŸƒúo¾˜Ò‹©-…¹õFá+¿ž~>³ûmørx<]fRrg³Y»žPâ´=6è23¾ö›+Ž3 ÞÅåç«d^>Ü^ƒ¶ùÝj†Ä‡&é,ÝÑxmÖí¯srzÏ"»½¾ÕcX[ñóÕòxÀ-&F’£Ñ½¼×†ü§äÔ6¢ú‹ßôGË[½/7D`[«‡]dÛ~psFÃÛõµñŃ./ d¯~ñîÆ½.Ów.àú5ÆJXxåÑÛq=;ø!ò“|v~—a%ã‚Ã<ï±F£Çú‰Nfñ4 2¿0 cÙ¬}«Ìï¼þqP|¶®˜6¨ŽÑt¯.äO¯Æ*æa!_{衯w#=°3,w2áák/ Ç0€W~óëõ¾o*Î%e|Lëïë ,59Ä4~kKþ9.‹S²Âmñ£IèáʀݕÇe›à„~°é%w9\ß/ÕôíÉ{?BäŸu3{ ¶ËpÙãÙe¿2SjÌ<]›s²qx‡ÅÈ0žŸ½Þ¬ˆãÉSo¹<º‘bö+ç‹ìË0­p²ù®IY‡Þ<2K?=©ðÒµðЊ¥³6›¿¹·D«;zô~¼0Åp± ‡iÒ øyb\y%—Ä–žÁ¹å±mÞå(}åXËñàé3 ±$¼m,‡6ÏÒ‰8ßgöÅË›3¯IOq>N°èãJ[æ×Ñuwsçdˆ¦—¹ù,×7×ß ݘP]xÕ:‹Ä0B?cG–ƒy7³<@ÝòàÉÝwÊñ¸þõ#Yî@w2.ç¿³Ž¤–€j›pè­áŽ«ñ8„•¶rR×Cb-P}4(ÍÂaO[ ö÷œùÌŽ£1po¼¡Õ/Ø.é½³Eÿéà»!pìUCí±}DÌý²c!ÁkCÔ8i37ëbÀÏ£ú¢¦¸ø$Hxfø™Yá&õá ?µEqàï>‚BÛGG#â;“¯‡·y<\Dű$â_Ƴ6¼ìQÀ×(—ësÐÑ`=-Ü8¡×Õñö7j3™¦7÷?‰„hHcì̹—v}eXúß½ˆ. ídßйašëÆ+ï^²Å ¸3¬rÎ.ÏÍ÷òŸ߮¾ñÄÍþžíøàôV“â­ý`[—7˜%vlå••·iô„>ñ ܼ yLÿ¾º2Ž£k)sŽÄË«i›ùyØR;[~ä¨ÊÇYoi ŽØNãñ6¨'ã îÓ*ÃRòê-nçâß±¯9bšWCÃ>9ÙÚ'nΦ1ÁZïqðESÅ£#5€ïS?S^tÝ\÷Þlÿæð1N[ˆ?‘©Õ°MЈj ŒüáÔŸ‡X¸s=à© [t› œÈ±³%û—ƒõ]Îì¨Â+f³ó¦Žffcn0–›x†<S RøZæWfªNç@÷þyýÆ¢çnˆžç{¢çŢ؉ž‹|7zƈŒÑèA§ü­uÁ¹Ð0{æ˜_^ }ôð;ÝŸ‚Ö~ØG®†˜¢v‚×2¶¯C…ÓùiiÙæ  ±˜Kïƒ,/Š[ûãüé°ä“WNXËcmÍ“qM¶,K-¾a›ëÇa›žjk£w½kuy3 tx·`É_Mª•I´öì$0Ï(ÛφY¬ÆéˆÇü‚|¼wnRÄH1®p—r1¢±ÈS‹Ù¶ØõÆ–_¯®ÆUO îÌmA¿./ØñãÚቷSxu†×ßR Ëêd#†‹ø‹­½åÞ\Ìø½»¼ò@ëfåÉ'£»õ¿F¥ã×Ç6·Xü)-œÿoíCÏÉÖ@Íô¶Føx²Ëßf‘÷ô­ˆR;x ßžŽ‹Ô{ýºÉN¸¼:]^h'aÁÀbûK0×Éå8êßø£¬ïdx2² Çêz5Xë!bêN/å×I¨)²t2›ÐÓÁ-<{ÿE×°êpé&( ÐÙA2ž8€v.oo@jSÀÃâ½ÒMõ\Ýx{búÈÇ&n®çþ¹¿7ì© ‡î,bp:8¹0*B;dñGƒæ »WxøÇƒ!‹ô£ þ:·CÖ<˜}9eSÝ~ü¸¼23;¢‘>Æ~ç)œM¼ììéÂØúwÌ•…[½~·”ƒ§ñN¿ ü`ûqÔLý´&I÷döÉ1~>J±3;(2C²ºžL“üP-²ëíÀ•iî0„‰…÷o¯ èIEŸÜULrƒ†;H#Ÿnë>?EîlgŸ-¡ù‘°™ÞyœsT9&FjE¯ã}þrPØ}ÆÇ×Áx !û±Ú,¿h¶4ìðüÜþ|ýa.Á˜ag>Ös9 $»¥ô“–ù`ÿ/ŸÎeL‡Hû™m«Q}]~¸YNÖsCŸ*3ÜûÎî™?ú7~Ÿ÷ë sõmé}å„A3£L¤¹ &MaÕ¬«1›ÂÎ…üYÛ©_ÀÞmc6H= Æ!^™pW·Ãf5õx2>ΙÁÏ÷Ç$;güÃZ.-ô¿žËNwÙÍùÄ„<›éÎã1ö93üfˆã—–=ò“tT8J$¶Ò-ÿãüàl¸V>h!ÿ½¸â ÑtÞÚý4ybѪ´±P¡Ï©2]ºÂÐétYtÛ3=b¦Ë›yÄþÄÎ>è/yózus¹æ_bŒµýæx¥…à:FÓkï°Ìò1 ¿÷‡‹(³Sr¿c×r“ …#ãŸþ°¬¿ýýŸ}2ÒìäóŸ/Ö£Z@³ü9ˆâï-˜²ò‹ùMU£.—·¿ @7ÆÛ™E ÇîõÇËåGÿ½›Õr8®ŽòÉÈ¢flx6ÇN¿ÿÇo/We~‹ïn¿þ§[Y°!¦÷{;F…KþÒŽI×áû™… TüùB¼|oÌmŽ‹lH!Àáþq@:;1 ³Ëù/|(Í*þ”|â!ܵM(Ÿ¿²CGó»ÆHê2yÝr¶Î’¯oÏoÆÅ;*×í°6ÛfµÑ=» Ìþµ˜í¾»×'žødнJ(j¿­5Ó›wêfîÃá&'étE3—>º[¦IÇ䟵3ùؾëÙÁÙêöJši}ÄFø!±¨øWÃéÚ0 S@ÆÍVÓÃzKyر 8*`L4‹¹«wîÉ á.<ÂÉ{ú!ɆÓЫ„‹¯üIÜšù›M«iµÕÝÃyK†ÀúM˜Mž‚Y½h[í„'&7ëd–Œà¶(íšwc,› ÙàžÍüBHŒ“Ò{é|ÎâQ«_äŸϳ ƨôñæHxrzWæ_û žm—}]ý,œMáo?9¿x¥{=ÃêÎò×õ~Hr‹à®’!ÚÂ÷uŽüõí-§Çá}ÓFÕ9׳¥sêüiòzz›•|°rŒÅjÈ"µ~1…OO½÷²uÜés–?Nþôììgt}¶—ýlO]û¼¸0ËÖ¢Kâ[`Ö×–~Yí\·V6:Br2ÛËc¾üC1œ~$ñpüd¤’ždá_¼à ÷¡fˆpÏÈiá¶…6(iÔn>ì;øå–ܺ¾^Ís·Æusæ¶bî‹$°óì±&Œ\7Ë`×M_^mÒ4Í©ŠÊ-§6jEüÖÞNÆY[êþÓ÷_Ÿ?sféþügPç¿‘Y=?¼9àf>ÂmÚߟ] ÆtyléI‡it×þ¿ÿùpÀòÿݲd Éob¹»Îôµ?‚¸>˜0 d/˜aýé&È9z'Gþá+ñJ|÷ŠÙ L4Ìáì1-Èyµ¼¸Ö€€Ë‡}yuyn»b:v>ð¡r3ov;UèÍäN¶±—Rhûëé®ÇS³áºSDhå­ßì|ÏŽÄ7xzJé:›ÌFóžC|’ÐLOr`¦Ð’¨f¡ÚëÕÆÁ›ëdg Y”Ëta‡~‹<“'<$f|»Ò:¸ºlÂà xÍëcNn:ùLR;$Ÿ–°îY²1&4ÜÚaQâwØõÙå­…Im!ûU|ºñ16ó»>ÈØ¯ ÄöŸü퀯yß\ê‡d8Ý÷Éèvj¾»óýzÎØùC…Ó XO–×$»®Ž'ÿ~X&À§ÈŽ£0Lž§/¸X~Ä3¶}?*Á«Õ–~‚ŽcºÃa~µ:½=—²üqw}WÊ•]éÜY˜hÍG×óेŸ½]æ¬n½‰_qâ›!ixm~«ÏäÎÆ/¾Öw.tËÑroÒØO7é Ö§c£‡ô¹¸ÁPÜùÃòÆ+()/{±:¾=_]y¯Q[:½¿ñT¹úéðkVžÄXuÝǃAÚ¢LÍw7ˆÇ*â“'W—·b,Þ­M´§ ÈnÄ|Amv¿²xâÍäŽþֈž;ªÎ«O_v£hïóËŽúÕpä³½Z‡u÷´ÉŸŠ[Τeh“+kÁÂó)+^ƒ¿¼^w2}^o +ËÔóÑeg–Ã^ø(¼›GáËE¹…/ÅnÞ¤µñ=ö'-äÙ ™C6ân¹'# Y}0;}ºµO®V«ßaÔüûè< çlûl“Ë:˜¡4eT«á àçõù@Âaß¼µåopJìÜÄ1¼p¹Ò>)ÓÔìØãƯcÿ=YΛ~%X Ž£/ÚÆÁ@œ¶­ÇŠ©ReØœçX)Â? ªáÈÜ’ N‡93NÆ$‡9üôÇ·c©ÏÕò8Û/–“éJ7hv#WYç¡‹ø¥Ü‹"}5ŽÆA=FôlÈÈYM'ïÇãÝ üA{x´ñ@÷øàèüò)µ0´XW7~ü·Åoæ}×€¦æÎÈéð7s/‡gS‹ç;z®“ÏÌîZËŸýÌ2pÏÆŒ ¡™S‘°¾›Uóû?üáëf3dØÁ ’F)]“nºYâB̛ӆ<2U:FA®—–R9¿öÇ<‰øÇ²æ iþáþôl7À™¸9°Ìè?Yèa´PПn?œ››÷‡5±4r€BËw˜a¥—›jädJФþ¸9”@/fázÐêã>ñán£ß"gÉüøñøe¾}ßO«)tùÐd£‘fb õ£|¯O~exyÁfç‘&G¢ò>¦™”Rr¶‘®7¹@Ö¿ìLÒ6,CúÁ(œ °,Ž·áâ0ž“C6_<§ãºÛÒhËæô}½:?Ö¶G`:·³Ô$°S¡“Õ …t‰Mü´‡äzeäBÿ ¿›‚ÔÃÁëÖ$leŸ$O µëP i®¡T§Åhã!F;d¼Â±… ¹È‰›*ìàroy‘ù†^myL7ꎭܘT7æÎížÛ Yš³ü®m01å9 áÍÄønͳ1 {{±§à;¤‹ÞÒ‹=SÒ¿iÁÞZX×Óõ6¾õ£-“«ñßô¤ŒÇO^_Ï?;à ¯VwsáÏf™‰>¤{ü·9ͦy½[•³É9tsÿ}V7㣊CÁÍP<°û;ÛJ£t·cÔÚ 9§ä¿ÇÓ¯ ²û÷$iÌ®0•œn ü_îÓæ»Yýòµ·|›â†¯ç3y;œü yБ„^Û×Ë›Y‚Ϙþpµð#ãæ'-è<ÑRË7¼Ôl‡TCû+nŽä¦+œ˜$.>nÒxëËQ(½ùò˜`òÝ”e;€”SK°Ðƒìäª]{¿èg=zVl]9&<Õý–úók‡ˆƒ¢ÜþdÏÀâÊã‘[Tááoó½Ç¼—ñýÍ dfƒÒÍ?—¦ùüs‡Þ Ÿ­á õÇ¥å¯MÖc˜=Ù©™š6¶‹e¦äæñ ßŽÏ±ˆJ+Vå[G³Íp x';uµ¥dœÅ|\ßL%£%Þ¬ã¯,€uß±ð«E5åf¹2^;ngönræ!3ï]7µÝÙ§SºO¿ži8 è†Y0Å”'U·6È#Ú5üý”¶±£Ýn,ÇÍÔ«ØÚÍn鶤Šù÷æöjWކ„Õ¾ÙÞS~]e©_‘ZÊ9?ç¹_iß 4Ån|ßïDƒ'ƒ®ò«³”ó7ÿNÉìK¬‡…=gmb“÷› ÍvåÉvšÈµÿº6dœ…[7Š’0Yln´ÙQRdnë“©vÖì“ã†<®\X—©Ül¬}¾(‹=WætOnãüÊÿ?öþ½¹‘#ÉDÿîüرm»à.ÉÎ÷Cº}­õœÑž~èŽ4=sŽÔ6 «@€ €*q´óÝoøÏÝ#< «J,Ì=g­ÆzJÉDd<=<Ü=Ü^¤y–ØšÉs%:0ŠI/ü–Ä^õLÝFÕ%¬ì+×Þ‰k¼/<Ú™Gñ]4¢W‰/¾—Ý(>ì¤{¸]çãk÷tGUÙ@G^…ñ†£€-Eid'÷ãDöcRTÈDñ™@í„ O ­‚öÉ?‚%—LÌnsêËï¾çs6…ì¢ÏôÆÌÞÞ[îù0ø1-J·ôŽýNƒ¦õظ6¶ÓOiýÝ)Á½£ª?a¿Ä¿"Ä.ðw²…°PyçªMSúßäå©OÝçá[=61÷u[ðþr=ÌÝs[ªæ»sßÁ*Ë|9êßAßO¿òrÍ$èáRy~{¢°¨}{ÑÄ}En·§»J‹ÞP¼•»£ïã±=û=ߤÍûÍöЇ3˜Ž åÐ6›ö–*„ÿ4H´q?;¬÷Üd6^t5½yÖÈÓd7:9A¶sŽ*eAYÓzQšFSŸµ£\ô!æ"!iqÈ%]WOLÉ ¾)ý=÷ı¬ËÍŽì(Ê:|0Ž9M{–òÚ‰¶÷Ug>Sú5?ßš³‹#EZäÙz>ävyIF¢Ê°jÂkê ßÒ«x/è)8+`­Õ„y¬ò|ê <3«Ü;.žð<Ön›’®·¿§úï¦ ÿQÛP²µ&_¯ ”/º¬ö}ïL{÷ÓO/°zZ¥_3_“S ^˜/̘F_.ÝŽ ÿOS¾ÃÆbè}µÁ ©†êp<ß×q7]zt±!ˆ?‰‘F°aªï:‘Éû°›”iäÀÊ5-¿³¾[+ËT K2ˆ(€$ß?¬Üãru,èCY%þ-))‚˜ÊõÓÜâE™æ©?ÿò¼˜„\’©_ ý2Ç‹¤„ƒ¾|YÉ›/ ¯#+=è×rz‰Ó@¤÷šVBêÃ$Ó ®*k\Ñh"æñ¿†õ„àsX u>=}”b,Tè³ «Ž~w¾W¦YGŸŽ³P|šŠX¯,ÏÛsÉî°Ž€ ©,x¬Yá*,³Ìª9•©Ž# gŒ¤âñz’~¢Î.F]\1Â㉄fñÂ( º‘¸¡4&Ä< „˜5‰þ®¶ˆ’º Ëáý¾¾ aô¸xØÜŠ]C\)/öt« ÿª âÝ(椧 3®­N H gVŠTVÁãˆå‘ïGÝ{ж »À”òÁÉÞè5#Ñk, ´†Èw¨là0ÜÌî(¢¸’ûëž/œ†íîíÁ„âé…[;—S) Øió6œu¯Ôñ<)ÛŒ”éq8¼ÁÅn4„LÓý#Ëo«~å;,̓Œ´NCX¤û@xdüØÌÄ›ˆwd÷(;8'Ì{Š ¬³+36rœìÕ¥Éú¢Âi`' pëv,ƒâá2o5‘{ɺƒ»šéqT˜ÌŸç}³l/fë¤ÆI¬4Öæ3¼eGh…K~[SqÍ!q=z›Ò¤‹rÀ’ÐeðèÖ¸‰ªF¼ëÔºßQQ±lzMõH?^Œ{Å2í‚™QEìÉ/ø6#Wo Fy#7¡‘Ÿ_öm÷+¼Ìw—rAÒOÙuÜäÒx;Ö;#Uè1‡ÁIÝPØn4\eÑ©¢¨$NVm Ÿ8þÑea™2‹Y¸UFHW¹Ž'#þ¢%ûb‰Í >ÑÂAÒ(hJ|rò‹hÂ8Z°ÑѤ*mNɨÃ||¿vº WM ýÞ‰‹9a‡Õ˜éWÓs%\G8@ˆºîX:IìUE@Ü"%w>ÞSÁ¯èŽ}-##¶Ê^LS˜ÉyãD•"7“C"'rg'v¯,±%ó´ëâ1.ÇçbžgÙñä8RÊN7Q´qgò²H“¨‰{n‚…’{'=™ûKž¸ÂÌ‹it‰éÞuÇ·˜Ìì:sªP çJ·‰w4 ôÃÇÈóK/Ò 6ÊÊzgº3âá°"OC _Yïµ+sy©(†×Ç †7Hà·—kœ}^óÍÿ+tò6nÛ\”òÅ]İûÝé}ÂÌ~8ðèÁßúÙþÑÜd’ÊÜúÃ’¯ó}ÔO²àx0qµ@@íuyç"v*à392Ô#¦ÃuÂ¥ô¦àÝp™E¶S€™°”Cˆ‹ XXÔ‡©rs´Á”׌p)ˆGäkp„Ùò)¢¾È]c¶›³ÊÙÆ6ƒ_v…nbߨ%G™ˆÃ Ç+­¬¥2ø©H¶&#À“ýG'¦lwý•›¸+7×êDy Ü>®Dj'-|Å—àj_ "‡Ý Òjà S¶Q„3ÜËnä†j>ÂY/t™èqàí×zïà*[QR¬îÃÔùO.Ãö‡Ý–MO´&Ûý Ô2°}j­ÖÞQ¢Á. ¿¿(М{zå­ñáÒ€Þ¿&¡UÀ`ð(}Evƒß 5 ÙùSÚs‡šâ ÜE¥Ä¦‡éºÊÙMK®Z©› |ŽÍíÀœ^ï1 |½óG7+¸ý!oP-S‘^©m¾ø—Ï¿"¨™q¾›üvõ(¼ ³eä]6a÷§ÌÍOˆŸþÆV%pö²vÐ4´ ‚’ ˆgF¾–Ä‹O8óéAéT>ŠPb±’ÔB±––#$A   è2r1;BÒ0O˜.ûS@"jS¾Ê3nU®‰sä|-è;î¦_Ñõ€L®HsõdÑ05ú¸Ã,kÚÚUÖˆ…ç²ÎééT" ìk½ ŽKàzPkƒœ:GvoBbw¬Øþ Ƈ øâÖ*ˆÀ`ܱÌÊ «Yíµ f¯ˆÈâñdµ«›®÷²6KüxòÚéâÜ«­Tì‚¢Ò6!mB౺wâm몭T¤ã©Ëé^¯RA SWte’—‘üY¦™ÿògºå+XÛ~5ýÖ‰±}ÔŠùî'÷¢l&Z äÏŠn¥„—?ÿêê&ƒîI´é¨ŠÔßI:Bvë\@Ö¥ÔjÚÛG›¸džæÕÄ”$»IV¥®På¸Ê Ò”ÝÓ ·è y<,*R7fXîtÈž!CFÕV¾„ÖÒŽéû‹N©£ªºÑ¨jµñõ0m¥D2’È„’yZ¾.6¦8‰9á•QµiAèN™.¹£®¶¤ 5ÒŠÃvœ¥Ø+²à©ù îššäm[úÏ\'‹”803YNÓ"÷3ãT”8Zp2±E“3ñ“St¸®½†vº¼kS‚œ·/ÀtÍ‹.¿ˆK$E:*Q¤¦D‰»y¸§ò—«Ñµù¹þ…˜û?¸o诬Påý$+[·?:*åȬL~Ò7 (iK«\åÔ%K8MÅ%•TžÈº(ã’5òÜø’PÎÊx5Çét®Q QYXïˆÊÚh58ÉÈÛv`J7ÙT+7¨e¤Æ¶ôVJ†ª\GÚ®Bqß‘®hSò±æß“Jç©S(ý=¹L´ßVÓ^À}(Q•[‹Öï켨¤Ä覕ÎB*™hÉ‚6Z(I»¥N½wÄ+²6ãSÒø+‘u'—õ&õŸËÝ–¿ÁKsÊ„Ì]K”m7tÌÅôÌïZä5²/ª4‰^z–UüÂÒ3½H,=SÚ¡™#ŒØø›#÷Ê aFDS»#¢ÈÛÚoa‚"*r^¶”-JŒ·poaC1]EU¤­r·<Íèþ:7Ht(k‰h½ê–̈BI·^má¾õìì¹?V•þŸüù!Äí:`îÏ›Ýî€. Y/:>—|j*¬Â)/ô•Ú^!! ÃÆIÜ¥ ˜;ÚŒà .½”5l$¬—åm³½°-ìÕ탥-¬Õ÷pXGãN9 ê 2À¤¨sF'#™™"¨giLnÉ“‚ëò”«Ì‘)P\á·­àx üÐ0·¬…ø™%Û‡SYA”›ù:A TK{Ô´9tß³ 5W(®ó$L­õVÐÅöhä†iq¶Y´Uª2³£÷T:!2sË(V¸^´—¼l‚7Ù†oÍ`%ÇO,<# Ù³èÔçŠt=ÇÑZùÔŠ£ý4@EB½åk™WôÑl³`•°cÈ:¤ ò1tËD;Pð™ö`>¬Y3°=ਾ²‘X\N6 ÇsîÌàm­Ÿ²ÒYv Vae75]WåêE†¾Ô ½R1šŒ6¥7|§ÌâFëŽ ý Ò†8'n[gÁ2ëŽÓ2O ]´û òʹÄè–¹h¸dâ¯×HL%qÒæ2s¬¼³ã•ž,Yž%ai=s7ôÑ,â$´ÓHž¬I™²pO3’4Wä S’“Ö²5ËQ"y§IÉkšc¹8„E7ñݺ¥+ļ޽]¼ÍŽæÈu¢ÅÁýloKz‹îý„‡APçiBkÏWLèLÍÊG—ŽÁ=E**Ò,Mµ~¢Ÿ¡nÕ e´©éV) üê )WDÌbU§9¯]‡Ë’PÝîÐ-"‘øjî'(F§„Ó@½µyY5 ^¿sèU+6-z›e¦1ÅbS,7y&ø øúÏ…øc$¬áîn un¯ÁàîÐ:° tÕóEâúÑØð8&©¬ ÿê8U`“G€åˆØðÁ1ŠG7‚‚‰n.8Ü,¨Ë ºÑ «ãæ$1{*>–«0ã`Mýßiác€ø^šo¢o*B|E &%·É]Ûém²Æ‘á2‚s¾äÚ=‚Ãl´Gá.ïìtsòýAzÚCþAwÞ¢0ìC¤Åýn¸£ˆˆù4DE®B8÷Ãͯ"„=Œ(@‚Ërž=2Ô]²ßýƒ¤  ’pÇIÔaûÛq9»ùûÒ³÷•ëón+ äô`aسٟƒ„9Ìa¾°8¹ç[:Î "8§Z^nþb¼óž‘)øf£¬ 27ÀŒðÈpÅbЭ§\ª¿TLc†~Cž.q½Å$mýwŸ°ŠF€ ÈÞ|@V£~[4-ïœDii–ÒU|Õ]UuÍP}äÑ>×8ˆÁ JÈþD€ |;ªßÛÏༀ]¤v!@*wÙkm`†h´"|H™è÷Šˆ¿p3¾!+;ɇ¦i`"n8Ñ v&!|>ì_m@Ý㎋¿Ùô"Z½…»ñÅù¦…[¾,=è¸h–¯ù2ºéÝóý:FÄN{ÅÿJâuYÓ¸_à ¨wÙD¿*QÇÉhõ–À„!SnúĽ’ÅôŽän:š!†R˜îá/pèX‹/¿ xpÀÅÀê'_¸Ìü8ý’¶Â·ðãO'MFá»þðïYüû·»­uC÷X_~ÊeÚú¨ áSÑìN¿å2-6Ô/eš%]Q?Q'6¥—l¶ÿ2û”JÓERvªúDê×òßjù M twöãôÿþöÿvsðûß»?Rº…v‹@Ñ?½h«îwÿû bà·ä=¡‹nv¯ÉGÓýúüŽ+ÎÑoW1ÐO\Ý_úº3Ôý‹ã–ÄÆ¢j å^‡É¸=ýôKÒ©æÆÕ\—††ß¯Á§ä=njü–9>ß ­ÍÑÃû‰œršLz‹:8§ÃÅJDü'>ÔT˜p â÷¶·ÿn ‚&Í}@ÝB}5šøÑ®Á¸Š¨‚,ã¾ÕSb}Ô®TØ ƒJ+雉S‘f;å+ãpÑ-áÊ/V ÷pÙëªÊPZã¬6]Æó’´ÍŒëWź_ž ßšàÞËžx'/lTP„Gi!ùfŒ ¡< P~ H©hâ¸#‹­SpÅ‘ç3qKqö‚¼¶œŠ$È7ì—–[y.â„IÃcðVZ›‡{¹ZTm9tŽeÈL`ñEå³(𫽠sK”2ÒE²óæ%Ü kwv#÷/Ç€ýI†ä´…‡š‹#†Ãñõ`ÀéÃì÷Ÿpû8ÙØÖ—5Þù&Hq^ xå‡Ý"ŽksÒcCò8"œÏédqZ¶‘4,‘g‡†5^]TNÍÉaœÌ ÆñSî°1NFγ‰í0bËŽO¶å‘ó]щ·Q!–H‘CjèýA€#MT¢\8o¬=ßaë‰0J‘çy4”D‡RDCy=•Ô˜úÅÑÖxB [L¸Œ A=ò±Y‚ïÊÄ|çÈÞ»òÉI_ð»ó§-´M$ÎxÒ(¼ï`¬ÃÅxØw3… à ¢úøøŒT”÷‹;žÖYo<ÖÆ¥"1ÂÈç;êëõ1 ‰ü™K„å jÃÞ>ƒO`#ß¾×ïPŒ®T`´«íÝ–rØÈ¼"q!"ŠÑD-Ìî–F0¶šÈŽ»1=„{a…_ ‡Â’Ô¸ïRVÝ ’tŒr"I꼯T²0³“X›&T®‡½IåR ø ›±hàŒ évAkgO˜VíõþÀB‡ºŒo„‚9n‘ÌfÐÌ##@å!„î4´qsyì ÎccýXPÄ)ùÇ9ËÐ-{“›}ƪۂèà!³Ó„’«@ö þÀˆ–ç)!¦Vãmjs PÊ´RG3öXµÈ4 Æ¿¦@Iñ—‚+aQ"ÅtŸå¥.qsJ¹túÈùAòFùPû;vg61›Q7$Ǹáö³‚p <•H¶ëD8BÞ»¶pr€íp’ªƒ<“m=Ø!Uqf{ŸA4&(ÊPs"5މâ¾ä¦ $ŸY‹ÕÈMþkÍUɾŒüüD­6O‡¹w8á¹þ©ä—.ustÂ-NÆÒ8ZÖA;\™£: gõÒžñYÍž‚¯;\”|‹ñú0³ƒOžÈ;š-_ä}A§^¼®î^óXª˜r p!Y¢ƒ£Z8¡®«ŽŸ2*+ eܾOŽL$¹ûߨD’“•dd"y ãèuvÑ•PHïTú»$õd6J¤Ðû8aÍb,^®£tÄ+›òÌ{.CTYÎ)gtb§àÊäMÀç7NÁ~§{ç¸p¾SñiC§j‹p¡Yù€PMµÍ“c2”tÊ!‰‚g- îE7MÙ$MÞòÍTzAÎMusùÚàÞ²ÃFHub$„»q<ˆ²#º¹¾……,BTÈ¥I§ €zÀ2(Ðd¤¸jÓG|טô2–®ßZöR¡æ„·ÑªÙìÖßÖyˆØ 7ŽÉz”Á+ìZú;ï©°sK“¥mé#:ÈcJ?Gtdd 7ÂàÙ’Ãì¤MD”R€>ˆ]aŠ6µM\\n(‚jð¨+‹$ú=ù‘å“®­|@%ŠâüÌâ–OWr}'ŒÛøJ.£€Ä,c pI>LMùÖÒ7@¹F8 •ªÞ¹Qݹ­®É°Uú*Èg>àé\ÂiÈõ`ñüM)ßKöpËÓIæý3ÉÉ -ãUð¶?]ì¥CyZW -§§‚3Ñ)´õþé€Lðh1ÝØò·5L'uNn~QÃUŸlxfò©¤P(t!ï‘×'TyËcqª@î£ E×k¸ îsä\ù…"Õäìdb%úœ Bpv…q^ªXÖã\ P =zá¯Ê,šòW‘Ã6,·ë^¬œrr!̪, kç„õÌ;‘^ò©Ú ÇfýzX>À‘8sbqÒßÍ^ãÆ±ó ®[ï Îg§½@–ËáN½?”¯P.8s“‰2Ilv±ýŒlZ°©ï—ó$i*hheHš¤þ'þpæð4ÆUØZ÷ä$G×‚Šˆ½04Ëõö†ó?:n>÷~ID!ý7®Õ¸Ðù^q2†IµÌk½°s:åvÇÉJø~uN°Ôƒ8?I쮳·žú¸[ÜÌÉõfq JþJ=¿99›3CѲ‘J$Ë!Êà6Ó¼“!n²ŒsׯlVÓž#…ºõºÃМ”ªš—çÇÙM´€—ŸmQœÀØD`ý ÞyM®m<šÿ‰hïŽÎÙz’Nþ°^ÿÌÿyœ(÷‡‡ÝÏä~9qŽƒfõä»7Ãät¡É_9QësªäË-²H>™ìÿ}ñﻇÙu¿O~û¿}ûÝÕgóíM•_§“¯¾ýîkzp}?ÖN@ÛæÃÆýù¡ÊnwŸLÃ2Ÿ÷?MþÊØt'–M¾nWëþ§~=)nµ°ûñËÙÁUñ¯ý|ò§™ëmËOªâ“œ¼èÝøÛß~M5Þ÷ë~é”ê?õõzv³®»Éôk¶Ã~òíWüãWÿøÏßüù› #0ù|ûó'n.(ÁmIsà~úÓl¹"8áò:uÿçÞµ™áÄ7ú}ò»ÿýëü~q“üQæôàNÊ$¼Æœ›¿wwp³Ì9©&N+H~w»]_e“_Ò‰›fG“ÿ9¹qò3ª¡ßR÷5=±ÿîwË›Q¹,.—=U.×rÙóõq¹'ë+'¿dïÒ¿*.÷d}µ–{Kÿš¸Ü“õµãù«ê“åºq¹º;=ÏG B‚©‚X§$Q‘ì™fy¨‘:÷ô¡ õîé‚e(H½{º`5nú‰ÙqÛmÔôSÓÓŒ›~jz°0a¼O÷+ÆûdÁ+ÆûtÁlÜô£ÎóqÓOŒ:/ÆM?1ê+S¡HöÜæX™Ô“WÏÄÊ4(BBüÓ›°+ÿï©‚m(È OìBAîý{Š—¤¡`Ûê¿§ f¦`ùÄ`ý¼ŸýÔ'›þ ÙAÁ¶‹ÉÝö§þ°§ªáVháþZl7‡¨øÅ^ß.¤î£_Þ`šœäp4†ƒ[oO9Ñ×ÿùÃý„þŸŠúq&“I9¹Ê'NhYã÷lÒÿ|»š8µiRñᇻ‡õÄɺç+Ì[Í}b—~þd¯MÍTAôWÔ.ý:ÚÅ“ß}¹›½ùjí6ß¾Ÿü’üæwn[Ï(÷Êüæwð‡;zû¸›Ííß?þ~Œ~Œês{K„/b2 y…2?;QÙ­!êDCŽÀˆ§8`:£}ín“ßxnüÆ4àŠŸ’ßü'3.!AO~Ɉþñ« EÌ Ž¸ŸPeô%®æòmTTuL mé„lEè™ ×N99$Ädk9/ñß½“º“ß:ýw9ÙÞÀµ`ß«7xýívýH{7iøüX¿I&?dtËñ7÷ÿ“ý<ÙL&–eî »K&U£¬'Žç±¸»Ÿ8¶8ùáon^ݦÖ'êjl]Í‹êÊ;Sþøõu•© üúºJ;_åËæ+/ì‹—õËÎ}ù²¹¯l¿ª—õKé+Tü«êÊ3SþxA]­ëec, SþxA]­«{Q]¥ûòes_Ù¹¯^6÷U3æ9/ /À•®Ž;y¦¾­'‰ž©Œ;êœHèš!ÉUµø‰]s¿¶ñ² c’¥Áè¹=WãyhÔ" Úg”9GãEm/Lãö¹>WãihûW´Ï(sŽÆsCp¹!²èù\—‚Ë ‘EÏç"¸Ìœ¡1ó˜Üp.Ê.çgžhÀ.DÏå™—]ÎÏUh0znÏÕx—ísy®i—]ÎÏ…iÜ>×çj< ËÎf¨ ó|Ž]Î ‚Ë ‘EÏç"¸Ì\fˆ,z>Áe†à ™ÇsìrHå²Ëù™'ºÈÇÏå™—]ÎÏUh0znÏÕx—ísy®i—]ÎÏ…iÜ>×çj< ËÎFƒöù»œ4—"‹žÏEp™!¸ÌYô|.‚Ë Á3çØåЗe—ó³Lt;~.ÏÔ¸ìr~®BƒÑs{®Æóиîìvô\žkÚe—ósa·Ïõ¹OC㺳ÛÑó9v97h.7D=Ÿ‹à2Cp™!²èù\—‚34fϲË^^½¼,ÇÏå™×]nôò²?·çj<ËÎ.ËÑsy®i×]nôò²?×çj< ËÎ.ËÑóYv¹ÑËK£——åøù\—‚Ë ‘EÏç"¸Ìœ¡1óxŽ]^½¼2zy•ŽŸË35.»¼2zy•ŽŸÛs5ž‡ÆegWéè¹<×´Ë.¯Œ^^¥ãçú\§¡qÙÙU:z>Ç.¯Œ^^½¼JÇÏç"¸Ì\fˆ,z>Áe†à ™Ç³ìòÎìòÎììzü\ž©qÝåÙÙõø¹=Wãyh\wv=z.Ï5íºË;³³ëñs}®ÆÓиîìzô|–]Þ™]Þ™]ŸÏEp™!¸ÌYô|.‚Ë Á3g±±›]ž›]ž×ãçòL«Ýìò¼?·çj<«]½=—çšvµ±›]ž×ãçú\§¡qµ«×£ç³ØØÍ.ÏÍ.Ïëñó¹.3—"‹žÏEp™!8Ccæñ×îòß}Oi!®þy{7ÛL òÅ··‹É~‘ðý{ÖPµì/9™~y¡•­\mG•äeTIU¥¸ Å•¤ÏW÷„í/ìIÙîIWòÛ‰ø¯ÑEf‹d˜®ÝÿƒéÄú¸¹Š®Ò·ÌwÕ™{w§X'Ñ=¤ºW'øgþaëÄð¡ç“ê„ÞúÒ:ý6Ì*vQ†\—ÊfÙ0c§%—›ºÑîv6}œ¦ácrªž|â#>j壓-Æ!¿WQ¡O² Q0E¯gÉÒŠ\ÛI9ùå~{ÿŸ“]ßÏÉD Ñ–­.OÏÇnªü/Ê´zkqîŒïâÓÅ™™=9ʼF"ŒLÏüÔ>?J.Dì §Qâé™â€7G!~ªŸ%Bg|õ(Ë2Œ²,t”xÊß²–\k™»QæoY˪ÔéÃÓÛFÉ…†öÅ£ {X}ìNúƒ>óQàVÏ}T†=ú>p¦ç¾ÇùL ¡ŽwÜsáwvP{²®pò¬ÝáMÒAYv£S½“Ý>á08L&è7s ,¤`Ù"ïZZ˜]û ûoá!‹†:0´Ež6]ònQŠ“(J1y¯(Å›QŠ£?F)~ŒRü¥ø1Jññ(Åâ§ìÇ(ÅQŠ£?F)~ŒRü5QŠ)Œ0$Ï¿2d»ÜT…?~}]yi꿾®"5uáÔe§«xá|µv¾ÚÕUÚ¹/_6÷¥íWù²~Ét…zeˆb¨ Ï/¨ª1U½l€0ÉIUx~AU©ª{QU¥™öòeÓ^™i¯^6íU3b5/ «ºB~ XlñLÿ¬Ù=S™­… Óxj´ÏÅ™‡a[/ÊÐ`ôÜœ«ñ,4Ž\®Ò }F™s4{«6ž›Æísu¦Æ3Cp™!²èù\—‚Ë ‘EÏç"8Co†ÄÌ㈠K*{œŸeš»ñsw®Æ Óxj´ÏÅ™—=ÎÏeh0z>×´Ëdzîënô|Ž=Î V¦ñÜ4nŸ«35ž‚Ë ‘EÏç"¸Ì\fˆ,z>Áz3$fÏ@l fÙãüÌÓ ÚŠž»s5^˜ÆSÓ }.ÎÔ¸ìq~.CƒÑó¹¦]ö8že_ã•}>Çç+Óxn·ÏÕ™Ï Áe†È¢çs\f.3D=Ÿ‹à ½3g 6ì$Ùãü,ÓÜŒŸ»s5^˜ÆSÓ }.ÎÔ¸ìq~.CƒÑó¹¦]ö8žu_7£çsìqn°2ç¦qû\©ñÌ\fˆ,z>Áe†à2CdÑó¹ÎЛ!1óxb3úxiôñ²?wçj¼0§¦Aû\œ©qÝãF/‹ñó¹¦]÷¸ÑÇËbô|–=nôñÒèãe1~®ÎÔxf.3D=Ÿ‹à2Cp™!²èù\gè͘y<±UF¯Œ>^vãçî\¦ñÔ4hŸ‹35.{¼2úxÙŸÏ5í²Ç+£—Ýèù{¼2úxeôñ²?Wgj<3—"‹žÏEp™!¸ÌYô|.‚3ôfHÌ<žƒØZ³ÇÛ°¯á²=wçj¼0§¦Aû\œ©qÝãmØ×h0z>×´ëoþFƒöù,{¼5{¼ ûš·ÏÕ™Ï Áe†È¢çs\f.3D=Ÿ‹à ½3ç0ðš=ž›=žWãçî\¦ñÔ4hŸ‹35®vu³Çójü|®iW»ºÙãy5z>‹]ÝìñÜìñ¼?Wgj<3—"‹žÏEp™!¸ÌYô|.‚3ôfHÌ<þJb{K,b®)/‰E,5dë%±ˆõè ÂUNôäÙXD žú±ˆêÖô!ãñÒ”½4>d,¢}ÈXÄ?Ÿè'œ]þ bS᳈ELõ|{·XD@ú›J9ö³±ˆ€žìÌG'[Å"’c8"ºî8J™£»r|?†BŒ D.í ZòL@R ÎÛ6}kqîŒïâ¯_«\GiÓ¦¦GbÜ÷ï×Ç!~„À6@x=doYEbÄåÜ•Ìß¶Š€êAñâFèñm|ÿ~ýýÞU7º“þžÏ|¸Ô;Ç Fßÿvû^‹QþÚ`CTÖT&Ø0ëêÂDÞ\ûôˆŸ-ýŽ“{SŠÐ…Ie¾¤´÷ %lÔ„•sN¯]”m=yÔ\žTÓ4û䢢$_!·hQ%6!*RzsVR“¤8¤ï×Ã]OùY‡9 .òtÏ(Ñv?ã´½®’CÏÝ([J‡êÚ4Éè)ûjOÉ_9Ù¬õ„Õƒ(¬ë÷z  î4ä;ç¬Æóíà Ïõça·|‚tÊÆÎYrûÛÚwB9eÕ6”‘ÖösÁý¤”´ó΋;sI[Úh{”¤µ^E$²õö«š©Õ)wïf¶£%9¸µ¡© íÞ…¾Ô]Γò*L Ñän×#9ú–¶ÁœÖdÀš¥sµ½¹¼HNãÛ»5ºÔéã²=o@šÎía…¢ MGœR–Ý´n&³=hƒ™SÈþL«P%e—fîãoÜ~¨|ÒãÛÙ¾çÖVÓyX]QÎô2°ïû¿?ô›[×I$Ü'Ó7nÁýƲ^×.úiÒï‘üø€)ºtÓ%£ãD¿î$¤A„¡ºi¡ý±{U»î´ßn(:ë¹×y¡ßó¤sŸ„½æ>Úp²b¢!æ]Ë)þa˜’ƒ¹Ê(Ûôô€„÷«cf­ øüËý£+½r“NTœÈ6ÚôHÈÌ˵ „ƒ¯–¼Io„îÂöÅùᆛ?ªrâ`Ò莫#1ƒ¿¾¨hÝþ²áüȲ~ÄTyÁÈ.ùç°x>q8æyƒt7ç©´Jµ<^­™c¬Á#+§?ºNô³y /h‰v~Ö×z^ ÷ / ñPÎ267H›¼:¹'˜§.˜A2KóYjþîªÌ)AµYp$¨¶Ë½šnƒL@\1 Ç«ðK“¨œÙŽaeˆÐL#Kaê®[´öÃrÃüiRU”÷}Ší,YÄ5+xïûïÓl“Pâö<ú ñ䍿’Ûz÷-féHxLïàø‹0SÈ~ÅÝ© âÛ4G”Ú|vÌ[7¤Ig–½²ÉÐ{HU+!—#1j1jO0ëƒEÑÂöà@YÓ¶NmËhJ²üâ~Òoï)è,ĘîÉ÷ý¿™Ð6zçzêJBúq²ØŒŽåўʻä&Z¡KJT¿ê]W¥Ç8U!»ðöœcÓ!W», FPOû5qlÕÍö@Üà%_bb $ôäNðÃàˆ«gñ€Ö‚®ÅEãÄß²®4g}Óv“*kéÏíô‹‹¶®ù{Œ2§f¸ü::@x[ªhSN$;;¤QMF3 {*YI2ôžBü¦œ¨ÒÖÂI78Ê^³<Þ»í[ô·‡O. ’¬¶4`9BèÔsM‚—"Ÿ=1+P;ù½d]gÄ U~GŒX¦— c‹Å2Mš4)maLj™÷æD¥'Øï€ö௖:dX#á,8Œ›7Áa>‚Ã|‡ùóæpG%'Àa5FP±·€ÃÐõá¤hÚà0Áa>‚Ã|‡ùó+ÁaLU!Jª—AºdÒ%{ KaaXŠ—ÕÕÙºº—A§Øù*_8_¯æEuUvî«—Í}eûU½¬_J_¡â_£uáÔÕØº^6Fm® DÌ êêl]Ý‹ê*íÜ—/›ûÊÎ}õ²¹¯š1Ïy}Áõ¬ àð©]Ôn}nÏœ÷ý;ƒWáÒHãù¹0jjÓx1Æ¥±`9çh<55͗Ƃ圣¦4gc\ –sŒCpy5Æ¥±`9çhÜ\Öqi,XÎ90j ÁeŗƂ圿Bö9?W¶"znÏÕxnÐ3º164žŸ §¦6cl ˜sŽÆSƒSÓŒ±i,`Î9pjJÓx6Ʀ±€9çÀ©1—Wcl ˜sŽÆ ÁeÝ›Ææœ§Æ\VŒ±i,`Î0,dŸós +¢çö\çA£ãÓHãù¹°jjÓx1Ƨ± 9çh<5X5͟Ƃ末¦4gc| šs¬Cpy5Ƨ± 9çhÜ\Öñi,hÎ9°j ÁeÅŸÆ‚æœÇBö9?W¾"znÏÕxnP4º1F4žŸ ¯¦6cŒ œsŽÆSƒWÓŒ1j,pÎ9ðjJÓx6ƨ±À9çÀ«1—WcŒ œsŽÆ ÁeÝ£Æçœ¯Æ\VŒ1j,pΰ,tŸý¼,ÆÏí¹Ï ’F7Æ©‘ÆósaÖÔ¦ñbŒScÁsÎÑxj0kš1NÏ9fMiÏÆ85<ç˜5†àòjŒScÁsÎѸ!¸¬ãÔXðœs`Ö‚ËŠ1NÏ9ž…ìóÊèçe7~nÏÕxnÐ4º1V4žŸ ·¦6c¬  sŽÆSƒ[ÓŒ±j,€Î9pkJÓx6ƪ±:çÀ­1—Wc¬  sŽÆ ÁeÝ«Æèœ·Æ\VŒ±j,€Î0-tŸ·aos‚LûÜž«ñÜ jtc¼ihð\SEWÔâ¹À•±û¹¤<æôqW”îœï’k<—x¼¥3/-¨å¢ÀsC--}œS(y™—Ô¥<«¨PÙà¹#ž ïó’zWÕxn©å‡§« ÕÔš«Z®ÑZ‰÷M†ç–zÑ LUtôŒnçUGãiÐZ]¶ôŒ›´òAËm^HE Á/¡º×•TkMi†åxÆ„¡ÛNâ*ehîÊóZ&@²Ðå9>.€:”QWù——ÐS®wnðqMÝËjÔZ7®å Æ7=WÔfn’²”Ÿ[7yi‹1›è2ÅÇ%ÑQ™–ž+WišÓò¸ïZú1ÇsÕ¸ZÌ6è£èªŽ~È«Ì= ž;zŸ¡"7×d‡ŠŽ£hiÜÇ%Å´%>.Ýd-£,;WѨ{®˜Q¢¢ªr75f»$™¢)ibÊ:#X—…j7tÀ¶ÐsSd ,&µ£<79üqC-×Üí¦ ¶€ sÌʵ\¨¨©é}Ž^4 }œµü±£*÷&£¡®ÖÜZCc®Ó’Ÿ ,&•2/IbŽç·œJþÈ•}\•ºwóIE86²ýs–Ñ3oQ×S÷\ñ>vëïþ(x AÇU„8EDàžÝD¹gf]éžþ¸CM5ZèJú F¡®¡Bï]ô+‘§%õ¢à ‘6Ô26¾ÛÓT(“=MÏŽÛÓ® m`ÙÓáÈÐÇNT&ý¯Ã>.èn¡ J…ƒ”ÀØâJKê‘ë#ïãœþà=Z3ϘSÔ4YÁÏ-9QcgåDUÚ,sZÓ*ÅÞ͉:+í锞ÁìòΑpٵؖ)ñº®â­ˆ‹]Η뮎²åB¹k´ly[Ä)Û”÷ºÛŽÔ˜ ”zFcƒ»Z©ôì&©¬ TT;vVV->n¨ÒŠeB&¥­ƒZÇm°¥Üs—g´Õ2<»É+y9Ë”ø{‘3M§-±YÔZf€ó)ù¹i”Ù;Ž”Ñ Ð41XWDRÄ~R´\º17A!°ß”w«Ä5O3L«‰i4ÌhuÌfhÌŽSd¼ÙÝnjy‹:€˜CÇ{Ý•¡-E×%1îRMûµ)ÑZݧÈQQ“Òöëx¯ç´ï…wópÓÉ{”X‹2š>(x7ô̽kZ0sÓå´¹V°–´zbã3³{zß¿h ¢Ú{aoŽ D‘´8ðüâùûTÃŽðù‰jÞ N´V9l\KöëÀÓJÇÛÀG€6»¾XDÄ—ø„ËõiýÉÛÃñÝÞ…ã'™Û'ïŽÿøÿœpüêc8þÇpüáøÃñ?†ãÿ¯Ž_5ñïŽ_Q ¾“`>†ã ÇÿŽÿ1ÿc8þ¯Çoƒ5A'·ß-^uµ¶®öEu©© ¼ ®ÚÖU¿¨®ÒÎWù²ùÊKSW^¾¬_vîË—Í}eûU½¬_J_¡â_B_šºøæW×U¤¦®âecä»l­«~Q] &­ ¼ .;÷åËæ¾²s_½lîëtÌs^@_ÞÝ÷ÎFÄšHùµ ÓÿÀÊ]H{e"bM¤üچ韣ñÂ4žšísq¦Æ%핉ˆ5‘òk¦ŽÆ³Ð¸$NÉêÑó9Ò^…pÜ;k"å×6Lÿ g†à2CdÑó¹.3—"‹žÏ‘öª ûÜxâ™Hùµ Ó?CãšÞΦ´ËÇÏݹ/Lã©iÐ>ŸkÚ5½Mi—Ÿ›s5ž…Æ5¥]>z>Kz»Ê¤·³)íòñó¹.3—"‹žÏEp™!¸ÌYô|‚ á¸w6"ÖDʯm˜þ—}n"bM¤üچ韣ñÂ4žšíó¹¦]ö¹‰ˆ5‘òk¦ŽÆ³Ð¸ìí)¿¶aúgh<7—"‹žÏEp™!¸ÌYô|.‚Ë Áe†È¢çs¤œ/Â>7±&R~mÃôÏиìsk"å×6Lÿ¦ñÔ4hŸÏ5í²ÏMD¬‰”_Û0ýs4ž…Æ5Õ|:z>Ç>á¸w6"ÖDʯm˜þÏ Áe†È¢çs\f.3D=ŸƒàŒ~n"bM¤üچ韡qÝçF?/ëñsw®Æ Óxj´ÏçšvÝçF?/ëñss®Æ³Ð¸îízô|–}nôsk"å×6Lÿ g†à2CdÑó¹.3—"‹žÏ‘zÞèç&"ÖDʯm˜þ—}n"bM¤üچ韣ñÂ4žšíó¹¦]ö¹‰ˆ5‘òk¦ŽÆ³Ð¸ìí*=ŸcŸWF?7±&R~mÃôÏÐxf.3D=Ÿ‹à2Cp™!²èù WgaŸ×™ÙÛíø¹:Sã²ÏëÌìívüÜ«ñÂ4žšíó¹¦]öy™½ÝŽŸ›s5ž…Æuo·£çsìó: û¼ÎÌÞnÇÏç"¸Ì\fˆ,z>Áe†à2CdÑó9 BfŸJ)¿¶aúgh\ípfŸçíø¹;Wã…i<5 ÚçsM»ÚáÌ>ÏÛñss®Æ³Ð¸ÚØÛÑóYìpfŸJ)¿¶aúgh<3—"‹žÏEp™!¸ÌYô\œ-Ÿ³¤UÈN ð ïäœ×—éÇMuúã…›J‡úŽA¹H ÀØš zçW)ÅiUúqSþøÄG¡Å¦Ò ùN‘õˆxA~…Rž|¸:9ÍŇ­³ô9L>X´>¡Rµé¤C45£CTˆïù`j.äXŠ;U]I<=S¼¦ß¹8—|>˜…Ðí߯ ¥~v«*r"‘w%ü(3èä|k=|{#‰sØíâÝçØz:Â8ɯ[¥?,ºþªþð]{eÆõΉw6X™Á¼ wÓ™Ì$„§õí`µùH¦ÿ­ñÉG2aoýˆçR>’‰}ëGÌ43Ë4³wã´:{øèf׫< ^¼·ãIÔ†§óÑU¾ÛÑ¥§>z‡Ó#£ OLØÝ$£ŽáOUõP¢Fs*YÕoõ@÷PœG÷PBg|=¨Ç¯™OlOl–wšO³Ü²=߲܌£LÃr I-陣äÓ–ží‚»ŒcÒ3„OgüCˆé ÏeA˜ ‡Õ0GÉg„|ÐUŒk†Á hù¢C¤žÔBW±‡ !a"¹‡×n<¼“[£g,[Ù5Óz±=«ÔÑÓ€s<·ôÌ` 4dð#Üq]dG+´Û\YË»-ưôÜQlH1WޏéêvåÈŽžQ‘#+ú­¹FÏx_ºÞgmCÓĸÖ*üàfØõ¢L%…ñv 7Gáÿd _™1n}L+u5ãZâcœ A¦d@I*BrÉӔ߻ñçØžîãÚ‘/ƒè‡ŠBÛK.TÓ3Ð=*Âȸ£ª[šTF1qP¡“Q%¥mÇÏôA'ï©LÇÑÐ"y.Óåè0öªœ0{ÉÐèž óL$ ,0xÿœ£ 3>ÂÕ¨è+0uTÊÌÞ-¡{®7 O§J3Æ?Ê ¥%cLB)Rˆ“"ÜIÍ|ï[ÅHª2ÞMy ÜæËeM…@ÓŽwSË|äÐ&¨²œ±UÜñ3ñë²ô?Ð,ë Áºd li -© ¯oNDUÉé@àIî à2<þ"uÔW1ÎHAõUXF]qû¸J™Ù Q•Ö ®B 3¼ËŠÂ-¿ ¹°G£p„¼”‘ˆ,Ë ¡¨ yªc§&#ˆæ 7Rvò1ë”|x´aʶeÖJï[Æ|ê胖™ mó²Þ•::Hý@gQÓKA¬ !#¸—†‰¥Ë•0¾Šx0¾šÁŽy©¬+F["x*A2)‘JÑK Ç5ÊJ[’«j™…@¢*Æ‚`VöSÂ’²€ØBØ/£±¼[Y1¿.é 糫tsB¬Sàœ¨LZ Ü Á×0>Jé†îž¥z*×ê[ÐDÙaô)u¡2é[0Iž¯8-Ý‹aVèdé^вÒ}!î«Nß>¤wkq'CgÐZn®/Ü~C€-ŸïúÙÜB¶4I ÙâD1bWÕäqúõ°|ØõŽîn¦ù'î÷ßo6îËŠJ»2÷ívq±˜Î#˜Õt¶™»·7£¶–¦¡½û}»¹¦‡U±L¦7ÃýlwìÄýʽ(ãy¤ÐòŒÚqó7l.–“¯ïé½JÜ€n.vÓ~½Ý,é³ùô°uÍ£Îéº_î¶h÷†àW.6ÓµºÐG­.¦‡]ß__¸íx3ý×á°â~Tnÿ?&»tÍP­«)ªœ­/úéÝìþžê¦óÙú¿ë—³¾¸ºØ$ÓÞ½í÷î«h+Ú®ÝN~DÅ9uj7,Wn÷½Œ)™®ð½–v`4ª£¢UÙÑ´ÜmÝÓÙííÃnvpï“éÓ/®ÿxMësp+·w‹íÎýûã_<¸lø8ýcïzíºù?^€R’"ugàãhýK» ,&mafÌõh/p{Ãýô†f|p“´¿§É¸¥ân–²žûÃîáöð€A€(\ótÔÊô{hû°s„Ù£uG[³Ý²§¹Zîf÷+š¥7ö·û}OtÔä&à‡²ºØNÿÆÔ_”Þ#í›â:¿..ÜêßL¿X?ìý´IûáæânúxñÊ/qŸ9ß1ýýtq…)Ø ³›uµþõåd5zuë ­†C‘ìyÄ»iw~Çó»sÔ3Lo·7dGïè(† Ôö~·uMÜíi·³ M9Í+x·uó~¯g4¿ÚWžP Õ1äQ+qÛ‡[ÁÖÜðXfTœçq‰îoB÷ÍohîÜh~ÇK´˜òp˜Æº*[ZÞíz»|tK£+IàÓ7«÷é-ÑUå>YMç›ÙÝp;[¯¹sÚn  ll·¥åýìyÏÃ0{‚E¤Õϸ)4ߦÄkÜß__”`iÓÿõâª9Zɼ’•ÜØ•t Àlÿpîý{ã(E;üå?N±^nwŽÚïÜó \p1EœûE²™¾¹Âò@m~œÒš½š¾qǫ̃®O.Jbn  D®·ÇvÜ븒å˜,1ÀKÚÄ-ftmay‘nâì˜íªZTæ½{îI¬´›†iwz~t•¸n î‡Ë‹…›õzDKÛ–.M³¦fÓ¶Ý`­Ýâ¹ql7=³¸EøT¦ˆ@ µs?^\^8Ñ“²ñæÑN’ýáa>±LÈ©ÍQ®›;b?”N!¸$ ÊKª´ÈIAy€:Bën´«íÃÚÑAƒV—åöaNØH8õ˜¹›Cb9u+ÈÈŽV!Ž‚vì4QWbÞKfš`N´7ñ!µŸ‘MóÑN,vªr烛Ç^öÄçw,H»Æç´Á÷bþÀŸK$Õ²$®ÌGOK°w·Š~¾\Ëd "ÒUA—Í3¬õbÒí—þtD옞õÝÀ:‘«úù²G'ý&bÑ'lß+4MöU:­g;7!OU3ÚÞ ,—ä³ÍɤQ+‡|Eª¥£¨‹d1½¾WƒS¯bÉ¢]òL—â½SJÜz OVj#Y¸C‹÷ m”¤ )ù’Îl——É”(çΜ՚…Í«‡ ÖKև뜬d ‰t“A·jJFÐ%,}BÐu*»c¼ï† {çúùŽºZz1,ßI·:FÒý“+õÇi³v’¦Ÿù'iI÷é’î[ÄÉô$Z. Ú7y'°\ù·DËй¡s?Bç~„Îýû_ûÁö#‚íGÛ¶ÿÓ#Øþî~¶ìWýÌ©rnzGˆß$f#~“@ýÌVÏ#~!~—ÍuuñÛéç’ ä+rÕ^ßžÒµ»‡F³ØnM¸HæaÛ’›ELSð(¯û™wx}÷¤ 8hBêË7ƒ“ôè<¯ëëºñž©O›ÝCσ•óÙÛô¸²^¬Õø2ý~5szèûÔSU'{õ/›Û_ׯî;öÛÉgn[ß^^a÷htS’ V•w!#À7‰³¨•ä{ZåâVXSJ§"?g䎔Wò^êYOnï“~K-À¹è®É‰+/® 86^w®ÇM}VM6i‹ëš2Źí»Iâ k™ívÛ7D;L¥ðO6]Ž»à»¦ÉDCîj§ag]AþÍ]íd˜¬PWÕx®ñÜ L;~¦ AY ßÞPO<äšp÷Ûñ‹ë®tmu5 iðÛÆ»™Ä=5-›™‘Ž"•¾0í‹“EOF:U’¥9|ÚÞïûö…í7õËÚ¯¼{ùêæÍ{~^7Ò‚¼rÝ{~ÎPtïù¹wN,Rã”^ÒâÃõóŽœæ*#@NÞ{zW”º±ìjvŸ$¥¢l‹ôÝýëÚ'­’sR³š<4%ÇvÝy4ïdR“`^Â…ñ™&¢aÔ5zÕ!^õÚ68ˆ´nBNïÌWÛ#º·¶g‡Ô ˆ„tî;yfPó& ëL¸øŠk`Ódtwos]3,ù¤%ŸDq5m)jÆAmæ“.'“`yúsÅõJø¼5õ²Ó]k1,ø‡ü­>¯ yÐúYI}ÐtÃxòh¤¡uñ³BdôÖY qÙ†ÜáLSUTêøÛ¦%<ˆ´ìz”uð…´Ï®CäÓ ÏÓPψËÖQŸç N¢£ž3Õ¸c¶¡ÐÃTý8ãÑÑfFÑ®"ͬ†«oK.²Y·vW†žÑ)ûܦî3G,¿—zNNÒx37=Âsbt¶cqC¾~tÏ Œ=ع~Ã÷R“èúø=Z;Î’÷-›Ùûy¨ù½ª%2ÌÊ#9k2ùç~Aý§ª©“üEæü4 RnBú6ýIÖëÝlX“ ûÕ_¾~Öq’}ÝÜ!=SËþrZ|rQ4jÙoNZö“nYâ™pÍ—TßlØCݬٳx©¾%«éZ½üÐ TxÄFQÊ5ÓvM—'DÝta²ëïKèþð7º‹©ï§^øÜë‚]̧Ö-JoPpý¸ÛÞYO1Jd«7/;v’;’AîrŒ÷#{$¦Âélqˆn<åîðýW‡¿;úxqEn©×¸~)(°âqºßÞõ|Ÿ¾ÆÔÎà®ppzÐÌäÂÄ\†Á5w]zû©ýs+C'%—t­}ÆõÝ·É¥ _x@u/Ùáaÿ´Þý0›ïý56Ý)Ë ;ŸÌxQ–tÅO-oøL=\ÄûëﮦA¨pë³:ò‚DGJ\±šaΧp¦ëwn @Jð¿zðøá{‰»¾H*º°ûü‘Q"®sê݇E¨Ó2y<¦üÞ¸²‘·çÖ©Š›àñ²¿åî©k-]rjíV¡žý'%ѹ›´Ü¤äàu7{M-îÙíÖº  w´x§)³ÛÛíƒN1û¯Ãí'Áw0rKÂ- šo3òtó¢t­É¾x¸øu»Ü¶ÌÝþV½·[x„¬¦+ÚÍ˰ }¨ÃƒÐ©~Þoè&t¶÷—‚èý<ŠÙíÓ ‰ù<qsøõÃôs½¸.þÁWè0§®`¢n„G ¼Œî¤gêå‚_ƒûç Uîæ"”%@\j/F÷ó+öÝPÂrªUëËà^¸«ºàïMÓBë³Ùp¾ï׋p] ·>¿y©?7tí,ìýtÕ¯áæ·• w¾Âf*Ë”|Ó”g¿2H »Ê-Ô®íÁñ¯c—<·FLÍ’³ë„ºÙ«[EóòæØºkxÉloƒgב! ‹¦¬ÿù°›ÝàFGƒ¤évô¦wí€GÜŠÄdˆ;sÌÄé³µ”ÙòÊMÎ -£G”Úý‘7Ï Ñ ÎxéyÂZ®·7XŸ¥÷ï"ž ¿öƒxAŠŒÈ $—•÷£MÒ Ç  ê~”%5O1«äˆ×-,ã9º¹M«nÇja$€žkžÙØô€BލßéÞ¦AÿÐþíŽ|‰:ò•§ùHÙ;òUäË7rä{p"¾#m'÷_ýivpÍ?îy1í oàA=“æÃŽd²… ½¾ØS©+ïšï=$É †ÜŒÜÈ^ Ÿss1À3ðTÓ+³·Ñö¨ƒƒDtøìc¿:ã L쀉‹xóJ(Q¡êpJ3!·KàJ §#–¸›”HñsÚüó~1sÛëÒâæ"qg¿Û†³ýŸìV->ûêwçwל#³>­÷êue({Æ„:Û³ÔÇá´n=uÀƒ~Ó“4•pœÉ‡Šœb‘§kÄyðKÁ‹,ü¸Ò6KŒï œàž9ÌÞiQ5 `¶ò²¯WØŸêq¸š†È'¬c,þ$Y&j/Ž[ 8ÓaȱŸ·êYAœ  Ä:é1Zgñ)cv0^ç¢LX£ÅÌ@Å:=xP¿ÿÊíšWâíª&®„˜Ö3’Ø¡±—ÃD„8n` ïÒý–È`Î] ³y¹ Ž‘èZ?×WH/Orª[>ñ–a>WÇá|·3õ.Ϫº`²øêg'IA;SOJ‰tñÚ1œ¾Ÿ?Fa:ËÀ÷ÀßܲۇDçæ†Å½5„N¡Ó‹èƒ;PîlͧPFAΤÙã\À`pœù=.T'sÔn¾ƒc¨Äþ€€­ì‹Ì ïê{‘PÐ&úÐÒv™Þ9ÁS™ü¥ p!‰ø¸*;ÁTÐÕ=ôg Π‰GØLØö0ô?±Ì‚–W~äIÖµ~ä‡QðÃÀ燉qU=y¹?ìT:ŽÙ$OfÙ¥‹Ù°…*t@„(Š6©*–ÝiÜ9Û3ˆ½“2¯Êö ‡ªœ¡3L€D¡˜pš#ÚûÀ%µ¸‰Ûíú僓¯>añf‹£Èfï€xÔþßÒH{/õ‰"ÊiOޱôTî§ÇØ•.ÊC¿žód`¦~‰ÉÙú0, ;,5 cÃÖ„<ÇÖòƦWãh=„2©$€iA$BlXsT­¶ð{¾ÑÕIê|’ä%‚¢þ‘ÃGÒäf &sãP¹y»sGï)ȆÒG7ÜW‰8÷7kåt»šÛ웯BE^µS3MPÖÄFHÝΔ]”Kó.PŒuRsÉD³ÅÖ¿=H7?Ê´‡¡ô?“2~É^—´ÞGÈÑðçs‚r˜ÙÓe©ÛšâL¯ÙBòÆ8®”C›æÃ!½ÜÓ%·Â²3:ДBU¨o0b9mc½Ý‰§5xï8xG,BK!ÒÃZ1ÛKžþDñÃ-díhÃbò èóñ(Ä;åØ'u¾TE‹Vê ·Ú÷eð{Ï1cÆé8¥kâ¾¢p×µ“Äç%äºÍ8è/8¯8¨üD£jg5ƒ/‡†ÕÆÆ(”¹“Æ“V]âkÓ…õ+{)Ôè6O:Qå’Œ3Á/XdaÜíÝ×b0]ê‰wY4 tÞn6léLЋ¬&ÙR˜vÎE^z€¼ï—ï"ÅhÕ¸–’#¤åÄâxV²÷c›?@ìõ•'Dý¸ö¸&,Ú«°qV3/îõPÐN‰;!Ö¢·/*ÄBì€C¾Ò'²ïu}Å¿| EÁñ‰,÷»™†ì«É‘i@• È‚ƒNûˆÈUÂØãÀôù[‡ÄGÈ>ÃD‚å©ÐGÄPæU~ÚzQ:^8sÕH‹02ÐEQfÑ)bÁeAÁŒ—,îVÂsz£Z»U~=ÌÀ÷v|9[Šõ”#žÝ÷K* ü%]¶1H³ ¾’‡+ÿÓ%.…øz94©ÁÆË#õ†É‹‚ØB( F:oÜÙ¶´× ªI3ýÁM–UWG/ÚZ»–‘°¬*áf„¶°Ç~úKúíFM·álŒYQGÃ'é=Gtxªe«Ïç¢Ä]±.Á¨F Æ U[íHØ\²‡Öîc{hM&Q²‡òõ¢6ûÃïR0Nx2èjG¯±gwz±º´Æ˜…örZÍ`–F♲U ½`#‰k#7½ÑÌÓá®'›ã~‹£Òøf ëÆÏê-‡Zïï `úþn `À­4²v5[/"öeWýÚY?ïI•ëY@b&Æ©pt „õWÈâN0pô”Ð"c?šƒ€ýÔR.ýpÍ\©Õi‹‡5kÌl…ÉÙuÆvEÇçW·Œñ3§Óz¿•ûoŽ;±¹âÐðÙÒJ| g9Ó¶ý2Þ&®èF»ß³š1çmš °ÜG9Á˜ðã@×ö½X¨ý÷ëTüv* ]8Nã‰6»3òvY·b•ØÞõÖð|feÀ4ˆY3d).ٿ׳ø¤õÆ®,tP¾F*_ÀÛûH87k{$Û]¥¶ç¸Ý‘ÃÌÜcWñ‘”åÝVÌ$+:kżU+¦õÐXEFL±q+‰¼N3jÌSƒ‡Xô*„Áúñš¿zÖ–)úkš@è°=$ð¤c¥<´—A¥p"+êÞHÀ/ŒA|qd5®ÕE=ç–÷wŒE„ŽE&Õ´]%7^†;pãbïØÍ& Ê²AKÆX…4¸]·88®‘KÔ nKÜš$J½Ke£¸ ¡ÿp4upXxzAþ拤h'X{ û#¡5Y]_ÔdùW²²á2Èšñe]qèö¢.9õ’n"ürê‚i¹ó·ì9sûfµ…×Ìêë=ä6LcÏ<Ü­f2<µÜ=/÷*¬òŠ]1„±&yš×pØ .^"¬ 4‹XV¢kûÙ[šD(åpT@7AŒj/‹än˜XÙ¸Ë7í4Õƒ±Ç2cwËOó^ª‰5|ÍV-Ç!°–fÀaô¶^ïîØ§!ǰnÃl"Ž>^i'` J±:/§|îyÄ^lÆ…°Õa¿¥ ¤ù©Ã`ð[Ëv×^4c2Š2…NÚÏH~~å¦×o¿«Ší^žãÊŸáÌß™ûˆ`³9°oØF†èˆÕ혗¸W7•È?iÁFä ü½û\³\_hùí­ˆï‹ãµcœÆ WÆÉS—Ê ¦í 8lO]&öØ ëYþ7%XZgkÚWäü9Û±*rìX¸ $Ðæ¥?`$¾Q­ÿÍ©Ýn­f›«?›ÑñCQÿÍ­D&ŽN¸gÚ ý^mQƒÞØiö0ñ]Þ¡]°*õª•¯ÌĦ k±â°€"¤ûrÛ œ·\Œ<ÄYFœ7˜rPêkT¤Ei¹1"ˆm†®Žõ„B—G‘ñMà((j´—îŒÛˆ¿ø]{G–·z)ëºRëkA"†gd+029ƒ>d«œÞkð°CÛ+8´/òÕÏæ*[ÝÃp ûØ:q&E^âŒ6kLN 'Õ­×W·k>Xø--xƒÈž˜Å@~·lVv|Í…ŸíŸ…or“¢(éHê>sc¿šó+QOºF$V9‘ã†úŽ"º6b«çV\NØe–j¨‰ Ea ŽŸ—Q rÄz»œ¡¸P1 €6‰8©Ìv;ðM÷¥_xC6C°½štu^NÖ{·ÍæëøŒ8:kŸkv®r¢íNH^¬`ц>¥>NO²KÁöê:Kì*Þ”-ÊPx>ƒ\c J ~´œþýa+V ì3±LýWÀDZM ±¨Ä}jÅ,OIDˤ¸T¯§Ep«dwgR~Âmëa÷葳ˆ›±‘£¨¼%;× R’°ŒÖ5›Tq”°¶…Ü S9W2v1ó§ÉBèN©ù°žùà„…Aº‚HO[eWÀ¶Ëé•óéuéõê»ÙÏ`’ð ™Ý8ñˆ®:–±ÒR°Ò¢ÂZ0׊Ïd8À’èÛpÍŠ¤Üf'e“2/cÂP쟎?dï÷R•t¬Ði÷ëáÖL÷*¡‰šO@wß;H½ËZp¥‡)„cp ö f¯…[íÂX«ßÃnáµ{Û ÙÀ"&".(²Á ã­TÆŸ”ô,5Ôˆ½j)AéaÇFj‡#8ïüæÎµߢ²(,„3c »×ïÌäh]T 0‹90…s³H¸de*+æDŽwàÒð+ã,=Ä:‚¥±duReô÷ìl µË*§»5æR¯¢à•÷jtŸ±8Bxe‹ß€ólQ£vÀ-›=Ýp4[è=XÚrø<‡u&ÌHÜþ¹§¦°Žíc´?FôMø´Å:¨×ˆñ­‹¿tAËyA"ɼå(Úc®|æõÔðßKñGr#?Íg"±$\!¹%y¸ã#¹Å& PÅr/1ïg¼dä©“¤¶ÂÊ%žÖæþ̬£_¤³,bø¼ª‚Ãáýíùèùe&nÕá*à㳇óíãíºßÿ"¿ø5CöÞˆ¢ÞTÂÏÝŠp¿š±Ÿ%q•ÇØ…·>e²nÜÿÆ&놬ÖG&k¥/h·{ ¤™Lÿ±ß’ŸûB."þ8<è-Ñ®gœØw{ºƒBåèèщÔwìÿ›”ÞÙS•l2¶Uχ½8T:¢±ÇÞY«’¤Bà•[N¿î¶õ/ú¡ªì|]×r.óÉú::Ïïø<§UlšÔz'Wö06Ôh®4޼R““G®S g»Çûaïgì¿=ÜÍHþá/Ù‰@ƒ×힣# Œâ?þógß} 8𤠵¿»!]¬§½üÿœüÚþ÷ntBÐñ¼†÷ýw潟z8ràºÎýsK÷jßÒÓ–þÒj¸ÒD2[üà ÌÙ"Òñö=k|? Mq#ž­êX{ñîâÈ=H–z9­N_öü˜qpuûÒOð5°)®Æ$ëÎæðʃú[¡…má³âZ" ,q!•ý HˆèdDZ¸oÊ Ä­˜ãÃYi8@O&‹=¿£n~îOLL“ÌÒb~èÜ»óí7€{ð2É+§î_s°‰áÙ—âéOÃÞ;jçÈVá÷Ÿr8;_0:Êú;{¥ÒØÚ²¡4¶ðùzåöUŽŒ²mÖ1Ï»u/Ú=JŸE>C½¨!¬§¹¼h³J?)(_0"Áµ’X ®íº‰VE¹˜)÷±|H^Ýô;ŸŸƒº¡.(KÐtcø«À['Ý‘ÅÔUË|ÒhµG,æÒž#K×sØÈN™Â\üŸYNTÞÍ£)Š¢`X‹Ü’‰³š±X®½•9è@|ïxÿ°S”¤sB°±dÁ)„cŸÙ¨%ç ¡b?E 3üƒXU=;ðI@ÄêXÑhl8›÷,>ì{źçtJ”úƒsßN~"ÆE¾ÏYŽY”Uãþæ(–~ú¯WtãØ3žoý•¢‰Àå»…~nðWþzÈ„j É)–¥8 ÷GM„Ä’ý]¿_ÁeZ\1%#TÉ‚z²|˜nÁ,p;ÜsÀ ¼@´IŽ8A1KNÈ8Ӟ͚S†[2 Œ ·d¦8N¢Ôÿ<#zVȈÓfˆÀez±M¦#¤:â}U—qì™ç´þN»Øû”‘!vp˜­C(½Ò¦$T¢ø¼ápX‹Ë¡=/±§œô¢¸(½ ÐHšHx8±­úv€Pa\…šÂëSšæìÏlX.ÈÙÉØ”©tÛE Fn±B/mI; NÂü!kÿæcL}¨À¥˜¸‡EÍ­_ˆ¤BÇ ’¢ç5lÁöØC)ˆáwñz¢j§gÆý>FcÍs#ÞÕ¸pˆDôì\ÒUxøüâÀ'ò¬?0Æ"ÚïHðüœuFüœ•I?Ó[¦…:._sÀÙ…ó6Ríšý|? @×ü£ƒô¢®˜¼$ð¹øê¦‚"â¯Ïz±XÈŒÆ%ˆfÎ6Ú&Þ×=8•;"×s#4¬zâ %~^æÓ¥SAØi¿­JR'1€Âå ?›2§}EEO¢½ë´Þ´^Ä:ÃSL}ü%R,Ý« «£æŽÜµÉP"ÅêÃF¹“"!mD˨”¤z DÁ)[³ 7J’è8X ͦõáLZ ~C‰õª¿ív{~H ÓpzÇa¶¯x$5|ì˜$‰5HÖñÉ+ a.R;i›óp'嘾ãL;ÚµN€zرkækïÞ÷ÎÙ~ÀI¯zˆ›eø.WEl Y“3PÞ %®³QRA?’E4’ä¤95hSìÆ)gâ·òâã(Ò.k X¿ƒP EŒŠjõiÐïÈÄäìÑWà‰yà záŸè†žÛÛÅìÔ‡n”þTš}—Û@8ZPñ“^îüVk»ycæú@µC~¼(Ÿ™˜ëÒ2MÉš?T)*x%ƒªô‚/Ø=dÿ7„9ãÆp$‚ÞÆò 2Œ®6ƒ#!ø}t »L{vÃÙ»“<ƒë;,3È^ôeHŸ(¹èTãÙaÛh¦r\3BI#_pˆï+³äBö‡*ã{΄öiž#åê·|~4xa¾ð‰\»b|?• { |oré­˜§èÛÒ4&£«¼±׆{Ú`0º†ÓÜÀØ û×.Œ¹VåÚ'Mv 1Û‰}¹¬Ù¾,ӷݹ-ýÈî ?ä)Ç+-cÙHîA“ Ñg1ª„W7€‘â2Ý|IÊ’Ëgº) )ñOŽY » Ѳ¯Nèx¬Ò JÈzóîò U tGw§0x@”£æ9„ŽY¢u †17éÁULn«á–5Ž|ף쎶VH_5pKbë/Y샩§ƾÕÑÍ–f ˆ;Y³ú"á§œ7ø‚—Ö¯ÒBÏmy±¶§Y®Òa)Òá?=Þ솹6!:Sóú—=Ÿ ;1ì$¦Û‡§Î {ñárÉçÆDT‘Å|ÏéŠïŽ£;<ØBä0Ðë W‘C¹ #B:)·ã02ë‡H©ÂF³ªHÔ÷Óõ7²áŸ–øÅ,½œ¾"¬‰ã„H«ž•oÑ%ÆÁÎÛ‡ûµlíÈc8p*ƒ’pý +Ƨò Ã:EÛ¢u°±j½zކLÊE ÈÕÀ–£¾0º’Ü›-ã3D-ذK–žEB´Ú|¢Û]ŒûU¦E¡âkÃ2Æ8ZDî,Ùy@ÁÕI[@l Qè©4LÐG Sº™sF[¢àµPKä8)&2vÑ3ÿÂ{k±’Åtý©È>™C?o— +7Wu¡hÔ=@2®{wqØîl"Ôd5:€ÖžŸY ]:ÔÄ»ø/€òm\Oî"'£°“äAýåVžHãpU¡¸dDr@‡^fmp‚/Ï^½³Á{ý÷&RUï4>CneT¤·sÞ ¸L^3P Ò•š¬)Î@³–ÁJN1âæ× ³Û“j¢š[ú$‰!:î½tņc8AêNÈá"kh bº‡aN „u2æuLX…ö,fÎe³bû%Ü)é,C¶û?Y‹Pò’ZÍܲw@’i³¤4óÞúfò‰3Ss‹kƒ“5‡†Â¨`,ˆWAæš[}AG‹Ë`xcàæòR…úwá ¤w2×^Ž_ä(8§î¾Ç½’cÝhÔ÷€‰£qBzmù^mú›ÎLâì^ Kö,—)ï —1"‚ÓfN¡YÎîä>1h7ʤղÉâßu]ݬ½S¨'•,pÿÁ8f åÁÔöù?û®@ y6­iù‰;!Jod™ N8KWJ¼†!Z>ÕA'Y*›ñ€·Ãþ4–ˆ«ŸÃ{úŸŠ`*Ô<Ã&ñ Ò‘–ÅÌóÀ!4ú Ñ0z˜<ì9ÕõÖsPO^ÞO4Êoó“… ñH!UV óö‘GG!#þí÷+OfUÔÁºmÔ^Ã¥÷"©Ó©Ï°+r‰æä?ã,9ˆ•ÏxÝxŒjÉ^€û!UÏ«²aç}ð4˜´#Ùºþìã¡1‹½˜Ì„/÷—'–/ž/Ï€œv¼¨ªû)spUÛmÉF Ó8,ž2•Œ£­" ¢ŸíÖÌ÷Ô+ñ«R.úõ~ú¡a¬ŽŒÊí)£rçþ76*wdW>2*[ÜoÂþb˜ 2Éˬz bq¤®ä^Õ¼M xQîðuͶ Èn¼ _à"‡©cwcx¦Èäg‡’A˜¾+ÕõªB´‡ª„ÒçÖΰê3[ç/Õ ã·”±þÅ>q‚p!<ՇĬž¸Ü—¸@Î_ùëùyÔºKý¡a3Ãà9ï"â¼sÍC¢fp̸? ?(â?(ƒ#íD‚l‘ !Uš¼×6ã©&;ÊDfCt{± $0™b(U•(Uñ6äÖG{l1µ)®à?Á3>d±“&³•B†)œ)eøÛ«„r=(ØÒ‚‚]ë±q¥Í"€°½@.4È1<Æ@>ÉÉ™5À’58xtQ˜:ÙŒŒ%ì´ŽÆF@’“k+£¸0GºÃ;õÃe€tU9LI™^Š8™”ÔU»5–qsÕo”AÈž'¢Míœ<³›_UÝrkÌnѣĶì#G¯/nA _Exacp¨ã ³jHd†ju 5Éjh~˜þɈ¯È  €Ÿ‡;êé q¹|©=W1Œ]„˜¹h±3—RÇFëX$§.…íÊ ’´ý›j¼ì'}ž úGBÖ²Vx8ŒÛ|¢É2\Zx €Ž·<î4›ÀSN¹|€ Lˆ‘³Â7n$Ò÷‘D/è¤Y•31~7°{NjÅcIÙ¥H”e¿¥ ö*Øõ*øö ÓÞß>Xçɉ÷U5'p¤DD¢sg&¾Q^€Ü³÷°9Ç› ÎÕ´~}Qg>)SmÐUÅùŒÏïnËOrÕ?šv„¬ ‘C±ú3<"ZFÓŠY0¹å^±´ÄÙfr-Õï¶.$]‰8½N¬TÂaÿ¥ìýoÂuÄ“®@–ƒË%ùwæBX|ù½{¸ô’-*)[@_ùÌI<–-|Ý“ºÎJ%m±‚Ðt¬gO}‚º®"“ÃVüÏWF~XDú…:ìÉØé9U±y¼"o¼òº”@Š‹÷ЪÆ×Ž#ò¥RpùC˜{ Y·»7&¯¥D !‚*4cðÕ+ãC§F‡þ,Í#•Š0NÞ®Jk³;‰Ø.صÕßê`|{d¢ ™>{Ëicì÷…fgØn‚P$© —ž“¬û¯@¢a˜WäL`Ǫ|\«^×Ü3¨Rç0ÊmvÉq}À"»Q•Zf¿‚eö$·ÇLà„=¡læ¿J$àŽ¶ÑÄΌӬ;atÊɃcdtÊɵdlt"£B-F…/O¼·‰Ý‘Þ¼P•m8ËKÆ|BÀ–ì „öúðÄF?Â*_…°OÓ>‚Ë«"NÊÈL4ù2†&/$Ó!—47F±åA²Èò°: L.®ºL£ž50é†mS„%Øè /óg¶:QœÍZ½I‚Û‚£S¬…ó0*Œ—ÎàkYÇÈËÀŸ8íÒš1ÙÅÁÔû "2ÂD{P- sïÛ¸ $ HHûlÒdá½²L•üb8²Þ©JŒÑˆ öïÂæÄã²>DëËc„õ• ¬Ç"ì&’k8KɱÀL¢×ü,Œp×{Y€»ž˜O転÷êÖú"¶À”!RÏcš0×Ùj>¼(†Ãä‚ÂüŠ;Ö"9yÈX¸ýcèõ>º.hÀm9ç_fö÷Ä`7èq—&‚ޱ  ¦·™ÿ<îúBmÉYÑV b× ðÞÇR#~Pug‰4ì1ÕòÄÅJXü4ò:{lvìC*ì]‚9¨h˜&‹ˆ&Ææ.^›5,Dß ¤!†å“†´ˆ½Å¶´·™Ò’¬mÄ”öPcÖ56ýüH½+uð…{:š~ecõ¥E"_ýŒTÎ/m&@ÉKÕ°«ïÙßÓ‹Ø-âðÔ¨ú¹VlÂ&FÞ„ô $o’›x,|P¤™ŒÅõw³Qå1Ëì(iwŒõbäûLÊžcâ‚ñÊãd‹m ^1’`Nˆ¥líç,}ÆPc—zU?àœCm‹Qs¾õù›õ.1™rîIëƒà•}u¸\jš"6€PРM›a?æj˜áh‡æ¡{Ï'.“ gÕI´‹¤(ó(ùºxGŠOLGkºö„þôpQ^6µ™Š§xϺiq t*{Ø)Ú"ÞÌ9$$Gë?3C“F9KëÈÓ¤^tÛð”c-Sˆ#¿YtÄÀÇyÁ<øJ“¤¡ˆŒàñjXöšÅižFb#VãÅAÀv&8HÓFÔ¤ã®+¶j‡hÈàb ä#õ-öhôžIÿ’~ðÝã×,XÎh4Þ‡[1…x¾›(KãMB»0rñÞ½œQï¬=›i„Ý3T¦z„pokªYzë¥>ÏLä÷¢€þN@³X诗âÜËÑò°AT_R3¾‹´8CÈuÐ=/¤Ó™âù) xà;SÚ^;jI/Å“ˆ)&Þ’œÉÛÚ;»-v‚‘ïÐ;qÉhˆ–?[ï·—œÇr 4 ŠÇÇi¢ ¦ò¼WÓžQ¬BÂs´_ÃQb´Ž{¾M`}èv¶îånÂh…ˆÀuýާgcŸVv?! ›vÀÊJ‡ÆÉlEôD;3åéÅ}rdWÊÜÿÆv¥ŒLKGÎL£!]²EFF{ß*Tô\ñ¨8Dzùiñz+¸IØžÚ:šÎ›ÍšÁ—‰`ã­£qR~ ¾ûâ/ßñO®ES4­ãu6íĦ7ÔÆêsw¼Ìs\©SgÅÕìS…­ †cË'’r›‰Égáé ëß1Ò¡¯‚Æ)‡öVžô“¥-Ê—->ÙÙŒ³³÷zS›D èQSB Ø—ÉZ"„apîªûuÏ^aõPü¡T€^§xqž/9Þ¬Ÿ¾ŽR:JrÈå8îJlð Õ(#ŽÛÈŠCW+9 ¾ùówßöÇ?^~>\ÜÒ9#(Wî`ð×+•&+^À¾˜¼lT79v¨1.xVª©øÍ:¬å@Ù‡gï8_ÏþHÛÝAq6al¥ÍN‘“ù—øI:’8˜Œ­iŽrÕ°ç¤{W(ÁQ»gg«iÝÜû §¢€ñÊ\᳟ªŠ’§Ï¾ø–3ÄËñÅuå7ÁbÚ¤æºj|F'yëŽ]4nÏè/¿qþ,‘´€ÚøóW_|ÿÕ—EçìAмÔs×oÁ:“™­rIöº£µúSq•P…fó;H68xä.z¦áÈðÄ"rºÒ%Ö!šP€–«È'04<ñ sàl!hxŸ}û@ÃÅBˆ[¤“׬‚“'§rÍ/™}úÉH°¢¥®¢³öžñ"ñm\qìÈèú$qÈgE²¢óÐ+öA%µk¾A  †)ÃÜI˜öééY&A*<šŸŒ3³0Ýüæç\õuR´Àâ­I1ŽbºqFú«S)ñ‰ÐàŸ¾úþ›ïèrܰ?üõ+'9þåÏ¿¯˜›¸£^œhtT¶[„‰ïÍE‰šÞBòö¢+Ÿ­¦yaœc<ˆ¯ ã¾Ää“™Ù¸8,#Ù7/‡Cå£1åUUâ‡ä¯Ž š1óhgå‡)-S€xìq!8KšœZÓâ­$OiþdIÅö™sÀ™6¶ï-¦M2`vûIÛf*Ѹêyó+.,Zˆ›ÄÒ)®EÊ>ã°—òÜD,fìÀqçó9ùÀâ„ãtbld©à¤#ÈTì÷Àr†®›…†l¢iÀM–¬‚6u$4ï¨Ø‡º¨Ù+hM‚:&"‡Ù·l¿àØ@˜08ù´á±ÝuáO$äÉòH•™” œk>sÔ¹Ø8»*”s/€˜¤1ÉÈzu©!¤bNñ±¥¼+E:æ¬üV4±•·ðÕœ9)tþ¸™q~7åã¯YùxM°E˪´ã*dûü$´…}/ýÇ•*G:/|[Ý—pj^KÞ±x$e›{µ½bšý­ãò s†²a Iž6¶s?pZŸÖ¶%/ {Ó5œÈXþÏÖëí-ow] b)\•²Wû© &d€$Ÿ6êaap ïÀÃùëx½Õ¸Ôåà>“îG(A®|3&’gÃtìîö~ö÷j˜èÒÀ³—‰Ý1 ¶»êí, =Px°OkŽ‹’Üûä`Ûmú~n0yÇ!«À,€îz)L¦æ_e;U±Í~8`zÌÈ‹ÁªÆ@ËlÅÜìÇ$– ²oÇŽŽyÆŽŽIdÎÝÿÆéœlÒ#ƒôOÓZ®¡¾výßsV+¶@ ¯âÊ:=cÔñ}dŠUWŸn&x‘…gAÎÒë9f=³yôã7ÞV7{¡ª¤Òk&ŽA¢Eõ¢.ÓÖÐðXK;ÎýJ»4^LSDÎ^ C‰ÉŸ1–ûmL2×ÏVYŸ»}%Rëýz&úHƒ;¯Ï¾ûâWäEìú9`~&óIŒD,ñ›Ÿ­~ð°”´+š!Ó‹ìðåf]U~ü‘Ì ûà  Ì–n*Y¹UÅiêq=€EI×ÓûK¹^q}ºbF/& ë9†LšŒÝ±þµ¨šâ¦7»yXÏÔ¤æêÃqŠäK¢¬& º†Úµ!(~câX(­Œ‡£÷ ht©—zëM´2?Š[‡1˜À 9¼ƒ /ÞŠ¸þ ˜U·cZ]xC§‰9Õ¾ÔaH9JÄŸP’1Ã_É ÑɘêMŽ)Ü\P=D[qà0æˆ&îa³æXÊ„3Ü j£!ª+ŠõØpÙku?uñ•Û.oÜ«™ûÿǽú*ªM°!Ea¸•è§HJ¼jYÊÍtí“F¨s´$fX3— „í‚eÅpE/F^ û9ú÷ £S$¾_/w ¾ûN9Hö)÷Ó~w+?]Æîs‘øÄw[>´j/)êØ5)pPg"Ý«Ûÿ¸Š.J¤*ô>>V¸³Qè½ Æ–€‰gqt¥©Î­ZÃ-²çM@àvÝü•c~ €fسw:áð&oÑf{Œ¶]æMÏ{¾cÔˆéÐT”˜‘.ÃÍ¥µi˜œ1÷Ÿ\Ôª’– k WsÀjtÔp²dŸpZ.Fúp¥Hž‰Œ :É¤Ææý¶/”èàã%7Öhkflz„úÚŠb„¾ÓK ˜z¼ Óaé´pñR2 WEéEË6´ò„ûÈHJJM—ÛìHnËPŽÂ%xX’^hYäYú1®ÈAðÁ¯1,B“?”8Á¤Žf¨ã}W ¦£f¬"#OìrÁp…´Žs¹céñ§ ¨ñÝÝÒ~¦ÛŸ¼¦\³[œ™ †Ùäh ;S ¬S‘r3`$°é;¼Õ›è¨×ž0m&áÀ2žäåØ2§†dýxŸ®‚%98b’Õ×½Æ|³Œÿg˜ûÅR-t7Wy#ýìÔÍ ÝФ-ݤ æ|?²»ëw½Ïš¥Îí½‡–N¿ñ{Ÿ¢‹]cq(g—5•û!Ðî}Èä®8 žwEf²³d–¹â¨v4°#ÔíT; 1Ë;ðI¾)ßaîV²x.Ýìò]qéŽKÆáD<Ê™Oáùï@†’Ãæfç~Ü6{[iÐãOÅ) "e’7B†ë_œNr·FÚu?:AànΜxCfEâ'È4N¡-‰_Plàç †½äPlîM¦þüוqåh4îÜJn”!Óbœé[Ó%a½— ý¡È[˜&Ö fI©Lɤ g#/Ð% s„uEYÎ騸qÊr6•ûÉus@³¯ìg¥<äÆ«Ù’÷–@X"25¸huu²U\r0tµµÙbi㬸>6“I ˜`VÖ±¯.óCñŸâà×蘠Œ¤^ƒmÑ=´?|—Þiù c[ºdDF®„þF£È¼m5>Œ³.:Œ‹Bkð‘I©¢¢å–ý$‚íÔ)ØÃ½(ß ©4 ST Kº™œ™¤®Ê öã0<–•vÛ¯H*b0D¯=óbÝ­ 6U@¹°ÀwbF®ŠTˆåõ)’ºäøÚìKÊw%|d‹&¯óï@dÊí–M6zÌ©,’LÈ+UöÁòn6ïwôeàËOž½Ë,$ï|Ƈ¿O'¸ˆHVÁä¼i{3ˆ ˆxË^DíYŒuÂ~â”])J¿ÃIŒŒëFÎÝ(žéFa»ApçXÄUÜ•eâsÏÁŽãÆ ž%[/¢^”5÷"{¦YÜ‹àš‡ž$¶+Ç“²ðµŸ°·|Ù%¶+ŸŠµzÁœzaá"È3ïò!EïS†TÛk>»! ~VçoW9óS$„CÅ’îa¶VŒÍBÃü9qË ä/ÙX³{&ÁSñJºd¨LÁY‘¿Ä.Ò6W’ì$Œ}p ßÃ~¸‘?Õr7Û+ »7ÙªüÀÙg>tH.'Ÿ»’@‰pK›Í8uA j¨ Èܾ—“-\-˜¢h—Sô .ëEM`MÃäÀÍŒ™±œ„m!à 9I!üÞôþ£Ä~%H…£Ö8ˆ½¢©^Æaa&Ôʯ#Q„6BÐÉûÙF­•·„¼ã•ÍiÄ>¼Q{{,2v:]×!Ïéx*|îjA ­½¶¿ñ3ÆÈ…GQRßÈ~]~2®•ã{½3pePsM`‡ $gPM\ˆœHÜ_t¿‘Ÿr(ÜÿÆ÷]q9Üb× A?a#¯0°d52!e8½MÒ¼~³°¾¼øIþ®Ä² Ë@f†Å¬iì?ºÁÝÈúr?£´´Ìp$¥\äEަ%[,äʧDx$è¿$9ðÍ…€•ÒæAÍ©²éônV »ËQÝòÙ±Š’vÃ7¥©Óúë6ik¸¬œ°åþœt0ç´Nµ'JÍK¼ÌRÈ)N›¦)Ê‘už†N÷Ó%9à‘ë—Íà)WÀãd ®9Ë™¤(Ž%¥L/üCûpú¡¡|(æ[°$è¾Z¹*Ñx…€<ú„¸†2yð5ìÈôCŽž­ÜüCÛIã…ø…ÔYÚ6×]±’Ë2‚)”Ÿ0gË9ùmË"-ŽL¤% ºP>F¼e\Ô:äFì÷ÇFúI^jFLüž§É5‡˜à¹ØF¿ 6zâïöâdÞ±!~b¬èìòÆí–³z¦å˜ŒÄËyåeæ×±,¤§ P€Âl"ã vœvã¤Uþy£<ø~`áî¼£åõ>¦Ã¸ÉQ‹>m´8q6qÿ„¡,gNñ¡Ÿ+s=aäE·Ôû^Ó·;©×ƒrÌÍøÙ´²ˆœ}L¬î-¤Zß÷Â'æY±îã-Q!ŸI€ÿðI&I>ÚYØØ«>ÂfÄûÙA;èJWú›µõv³$1šèòÏ[&z‘<¥‰½4 IbG?Œƒ×7l>°¨5üÝÊe 7¬Ùö/ÒBX&†MJÓk£gêU˜'e°CÑNWpå/H=X®Ÿú…ÈVÖ“„ 6e€…'ÓVrÝyŸ%n‚° ÁMã7_Sú †F¹Ñ[™YˆÏ›Ý›^ò-.÷&‡ëtòAn¾ÀVæX†h3š!Æ9/#wô'‡eÃ%±RQ@ð=¤™Ã[Äó#FîÂézþŠr‹¬¬fä´èœ%Âûbh€!±Í…±›oæÌXjÝB+‹¶š,C™ A[xEpJÁšÅ/}¨“¦\Wµ€w[_g!÷Œ:7ìõÖ;D‡BMD‡“Z )5 S“!hªÖpiäÍHM胷$¦×L¸#5C–¦8ƒìË¡uÚ6‹ð·Z«$¶ÍÆ 4ö«}Ò2›ŒL³,NÂ{#Xfoéè˼e–Ni=°½ûŠôî9{0+8ð´¥›ù Gó=R°§.^t_¾_rïÍt%yÕá#®M+ëÚt²ô-ÒØ/< Çj|^Ù|v0‰§F©t¸ªÝÍsF•Y§~S#'KÖ6l"#M5xe°psÚŽ½|ö²4f8‰%GL:ÛÜàÄ¡vÌŸúõ·å’óÕ‘â–˜tÌû&ôå(ìzÊ¡ën¶ó¨rE™tÏÜ{Ã/ K¥I…oÓîLѽ&_¯ÅÛ˜õævÜDî§G[YYf<©‰áAh@šHÞ<´Ÿ\{WBÛ3X«Éî[kÐ)ø&¬W™–-jÆX ۯLJ–ŒºÁÔs+þEV"¾ÿ Æ CØÌ*¢×€µgK*ÖM¸Õeb¤´ÙÀ×b[äai©ˆ"j‰-hÐø®wæ‰ öÎElBïrÍj’ÅÑs0g‚ÎWãsx# 6I°ç±œB6sÿ:–"T~ Hm€(ôF£ð׳§³l‘ bg¼‡„W™ª/Ù~ßyN4ú”'É2™Ž€²¢Vùoì-ˆŒb‘pÂòÌhŽ4t>óCc¯LŒ£´Œ¤Îè{Á"ÍË̃ž…Έ<>MV†ÖÐüʳTþà™CìP;x ½>’føvŸ-`åHEk1­‡ÍÑ.JS¸g\ªYŒÓ4 øÈžm<³Ÿ¾ƒñ‰†Ê*_Á;“b”r¦ŠyO¶NÒ´à+[Ú­[š¯‹9åþËk·µäõ†âk¶|ŽõÂ(1 ö8õ{"©Ç*+q‰ –MŒ‹«ö`ñ’xbZsSÉœ. yf¼Tgqµ`#ÕË5må÷‚~QuzÑ:bVì%²LÌo¹äû?É(œs¤Nq•ÃÄ0£9)êàÄ×5uÿ ã^°7PÎ@“8± HÑüÿ9‚Å(NYéJ÷¿±•®$CÝÈJ' ºA[^P˜BeM çŠYJj{]ÏEXÆÁ2à[YÀÁ.`¯_eͱÁ6gÖws>1ÙzC<,{QŠèѬ䂥ýmË‹·³rÄŠWîUD‰Š‹1 +Hçßü-ñ;ÝŸ¸>KÞ÷þìøú,aЋw½=›ðíYò’Û3sO”˜Û3†¾øŸìòL0þç¹<#ô‹ñåÙâÔÍÙJnÎÔëyX$lávr’;¿á™Ô ³HnFÜ$—"†²:ÅDjJ*ã Ž€–ÏÝÚêT~Tyä9?14ö<û§P*øÎÕÜŒ*’ßp¼zîfÔ„V¼Hžr(yÂk%BÞ`° ¬¸A]ÆþºQð„gÑ2aÙèÎÛ%Í ª {V„Íc!}Ï+ãîYW#ñ¨d}™Böˆ_­M`ÿÂsö¥…üÝnbÿ®àÆ¦ŽºÉ Ð{]a8b—|¥Äöèûצî5'ÊHí´Ã#´2Îi±ö¹¥$Á§:õp—àwãFdbYw'éó—z˜J$nµz_ï§Ÿ^dâ=8&‰K¨Þ°ÿö‘¡'¬D\ÂÖ‡<á’€¡B¥‘˜jLTB\BUpeòp»´îq{¤*Þž¹ÖK½ÞâÈþ±xê^ÏcG4ðIëàÃÈÍ—|ò ¶¿õ‹™”¬!£OÂråO»Ë#‹p|­zÕÂXW>|R@BŽ)I²<+d[•Ä#Çd ð\»‹¦®âÁYYf'Ö¯ dMÙë´D\72Ý$…—ñú~8¬*¶?̇ûó aØî>™,†e>ïšü•-Ó“â:Ÿ|;;ܮֽ㔓b®…Ý_:±ò“Éw³ÃäÏÛŸ&ÊÒúIÕ}RæŽá¥¹+ø5Õxï¦réöénvÛõdú5a#l‡ýäÛ¯þøÇ¯þñŸ¿ùó74Br»óóíÏŸ¸ Qî~ùÓl¹žûÉ$»NÝÿ¹÷_mæ_lïhÌûäwÿû×ùýê¤kz2§‡y¿HÂk̳ùûww7µˆ‰úyrÿpH~w»]_e“_Ò‰›\Ç4ÿsrã¤TC¿¥î'jzbÿÝï–7£rY\.{ª\®å²çë+ârOÖWN~ÉÞ¥U\îÉúj-÷–þ5q¹'ëkÇóWÕ'Ëuãr” óÔ<-H›Ÿ.ˆ¡=çŠdÏô0ËCÔ¹§—¸©wO,CAêÝÓ«qÓOÌNV›~jzšqÓOM&Œ÷é>beÂxŸ,˜ceÂxŸ.˜›~bÔy>nú‰QçŸé'Fce*Éž[Â+Sƒz(ËÂÓ±2 Šís›°+ÿï©‚m(È OìBAîý{Š—¤¡`Ûê¿§ f¦`ùÄ`€,°ŸýÔ'›þÍýì°r\›Îª»íOýa &N‰{t¼Ü>S!ùëv½%”9÷ííz¸ŸHEÉU–W×pÖ^—ò€ß¯ÝY“dÇ¡ð›¸nÞO~ñŸÛþ÷‹É/ýváäûv¹›ü²¤¤®NÂŒÞïÝ{…}¹ŸM~¿Û¹‚'¾_O~á±Ø—w“_x¢ ÜÛÝñëÍävÔ×Ãnû:îÖʽ]mßDïÖ·îe NÜÎîãŸ^ùŸ^m‡MüÛÿÛ›a>jÜ-4~uÿuÔ°ÝEÃØÜ8¶R}CÝ ¥‰^ÎQÍ|¶ê_¸Z¸¿ÛÍ!*¾@ñ£×· ©ûè—7˜&'7áàÖÛSNôÃÆõþp?¡ÿçÄ~œÉdRN®ò‰“TÖø=›8ex5Ù?ÜL ">üp÷°žÌæóóææ>±K?²×¦fª ú+j—~mâÉï¾ÜÍÞ|µv»oßO~I~ó;·«g””ûGe~ó;èNGow³¹ýûçÑßÑQ}no‰ì9L$¯Pæg'»5DhȱÇLg´¯³ÝmòÏ ’ߘAñSò›ÿd¾ÅÒ"ÄæÉ/#qÂ?~µ¡ ÐóïˆÊ'T}ÉŸk¹|A“ÆB[IÙòŽRš­)ï}B|µ–#ÿÝß&¿M~;qjþd{œ‡ ìMoðúÛíú‘ök’OÜÖNèÒ$%ã‚;£îSmk24d“5áiʸӺè¹j&yæŽyz.K÷\ðsAÀ/U1q4’€*¯+üQÄ{Sâ™ÈZTJ(]îSš¬œ|;èã¼!X™´À5¹[gh9¯\Üÿñ3¹ \¦¤ÄÕ%·Ì?¸P¨¡øƒº ï|PrËô\4üqG…rOZQËz”¥üÜQïøÙÒ9÷³;†Ü8ùƒ’&©æŠjLLç–žKt»L[BèðqYt4«èRÙPEÜyBä)OY3ó´áçšÞ×üqÕ‘ŠTcœ5ÍvÊ­Õt –òø)â(OKô®vpÏ5>®iÂRž ‚írÏüAMë_¢uCïy):Ó=óR5þÀx(’È=ãƒÃÙb9zÔVB`ô1AÂè]Þù([+êÚF(( P[.Ò¼Ð.iQjW‹”Ç–ã9 Í=7~ÌEZûÉ(›J&© ÷&™¼‚r°Ë¤Y‘ùÙ.²ªÓep´éòŽºtÙ]dºœEN«#ë\Y«P”ç‰ ÃÑN¡Sµ'¤¢hJOa®|¦¤çž[%É¢è<©eZ( %È–i»(ÖÄ“Q…n†‚ÐVd“eØ<î9÷»J~àe(iÓó6,(I‰lO×@«ÛÖµÜùýìþð½((ŠÎ37ÎN†ë9‰›˜ZYLQPW™õ8nÓ)Kr“Z*«*Š4PXA›;ë:ü@›¶^,Oçž ~ï–ØM0/¡k,ke¶iN²¶Áòä%Y#¸{yI…9Ṥg^ó’ÊË„¹Ýíþ(˜(/ùãà¹rÏ)ìæ3kZy&3= >v3™59wÕí¬–!ä”òNZÃûTʸòU#SMUÑùª,´\v…ïQÙÈèò¦®¥Ûn ¥[©c«—Gç¢,x.hŽU•'Œ e©ŸÕ‚—³]Ô_Gx¦Õ)RÙ¤ìS¿¬g–óh³<õëלËh{&L1n·5JIYÆÝ# Ë2pP^–É&Éðœ yÒi¥4œ¥]£´ÉÞ&šÏdÏÓ”di-»Š& å ã®ÊÒ²ÕÝæßç(_KËôG]è¾u-亟]Ë™îóŒøÒš÷?0£0f·q²L€£L7œL9‰®ÆÍ ï°Œž+î6ñ¤,k2åUeÊQ C¼-“½M%¥«8=e8Uyh Ÿ·2fœÃ<|>Ë$áÜ–ÉÃyΓšðI/³  ¨ÂX2"‰A– ’/gÂ2†¬3d&–I„0 «Á@†aBJXº ƒÔ“‰LR€l»T¥$!UHOL ËUBÛ·2‘IhBe3@>“M‚S‡ß',ÑÉ®’êF%@Ù† e{Bbäm›°,)û2&ot–=…@&ÆY•FÂR¬pH·ÌbXêÖiXX¤dfU ‹ÏJaØÛ`nî™6=3=·<™2C@1“¤Ány¶ j–Ùª{v´"ìÖ=—ʆÝs-ì™>®ZåÛÈˆÉ žseôîÙ€ñäƒ>nü‰‘S)%ô\êÃÆG¼ï2ù8׳Š+jXe@ |¸qË|èqp&ÒU>%y­[+­U¥·<8†™$>ŸyòÚ.õ³Ê:Ï6ô¼ YžŽÇp{?YîÉ2åmõ“~1Yî&VGíR´#pN¡pT¡°Z¡°`ÑŽÀšU;ÏJ/ “Êó퇂jG8-dà‘½ãEö ŽÑŽp©vT”a÷áü’]éß7-x¢á Tí'¤ì{œœÂŠ2ð µ¢áVíg³pœÙ‰p˜ ‡Â!/ÚÕŽ %BZ1Bx#Ä ÑŽ v¨vTäA;*ò yÐŽ ؈vGµ£"Ú$$áûä<(ò AÔRí¨ÈƒvÙLNœ"Ú„9ÑŽ@`ªét¦étÖiEtJ8µeœšE´#é*NYNß"Ú‘ŽçµLÎq™$œï2y8÷eR!èlCRe€!˃aɲaßÈrbßè:cã`ãa`ãÁ`ß!aß(…aãéaãIbã©bß cß(mcãÑcãÈfÀÆ‘M‚Wþ}•û]%?íH¶!*—í‰FeÛ¢3ºŸÑKÙèè½0 K†+ Ó œó#,ó&¬*, -¬  †•Á‰\޵y‹*r<[´#jG Ñ@5¢)iÐ Š4hG ?ÕŽ@—¢‹€^EG!‹î턯Úv„hAØ)ª·A;ÂÖí[Nµ#ìEm¡ Ú6¯ô›Z´#lvÕŽÀdly´#° ™ °ÑŽÀfT;ÿ‘Y_’ÙÃ’U#í Nµ#p>ÕvË Uªv\í¬Uµ#ð\Õ³‹ I«^^íL]µ#p{¯áí(σv”çA;Ês£áœÛ`sÚ‘…ÑŽpÂy«FÐŽp$z+HÐŽp„ªv„³Uí)EÐŽp«ý¥ÚoÕŽpª«%§ÚQ^í(/ƒvñBµ#ÈjC*ƒv”—A;‚ü"ÚÕŽ ñ¨õª Ú$$µv•A;‚H¥Úd-µ›•A;‚l¦v¶2hGæT; c‹]´#ý¾2hGÜ€hGÚ2l…eÐŽ¤«l[,ƒvÄCíHÆÌVÊ2hG2IlÕ,ƒvÄ“*Ú‘Ì6ÛGË Éò°=µ Ú/§hG²Îl™-‚v$„Á–Ü"hGLH¢ …±M¸Ú‘¤ØƒvÄ$œ¨Õ9hGy´£Øz´#~Ÿ¨½;hGy´#Ù†b7Úo[ÑŽd?³¾Ú‘0¶ØA;b†!Ú‘p¶ýA;ÖÃweÐŽ˜U‰v¤†½]íH˜VR˜!–˜™¤hGÂ=AÌV™V„Ý‚†„ ƒ¸˜=‹v$|ÔÈ ©T=¨W5 ¢ɉ}ÀG ï9b˜ÂÚ ñ‘$Ú‘œU\Q´#9Üвz膢É)‰!ðñÉc“cc–ãsÁǰhGr>còŠ4hGr c¶å Ç*° ÚKï§•eÐŽÊ2hGe´#×K¯•UÐŽÁDµ#7D¯9µÖkGn¼väž½vTVF;róæµ#× ¯¹ÉõÚQYí¨¬vTÖa÷¹g¯ù÷ >ðÚ‘«(hG®¯¹–½vTÖO¸ÞyíÈu;hGnœ^;rã÷Ú‘›¯•UÐŽÜá´#7«^;*« 92ðÚQYíÈ­NÐŽÊ2hGe´£² Ú‘£!¯¹ç •eÐŽÜ£çûe´£² ÚQYí¨,ƒväž½vT–A;„ hG 0ÕŽôÚ_úí/­ˆö—4€ý¥-cƒ•eÐŽ¤«Ø_2쯲 Ú‘ŽL&ûK& ûK&ûK&ûKgL–ûK–’…,$YNH"ºÎQ„ »a@¦‚¬#„H) Ò‘¤&!IHSBª²„„!})mC.¢‡¼&›rœlÈwþ}•û]%?íH¶!$HÙž,eÛBâÔý YT6:dTa]…1@¦†YW9 ¤`a1Ž…õ@j–iZX¤l¥0ÈßngyíÈ׎Üxíț׎yJµ£2ÚQ™í¨ÌƒQæA;*s£•yÐŽÜì{¥ÌƒvTfA;*3£•YÐŽÊ4hGe´#7™^;*:£]ÐŽŠ.hGE´£¢ ÚQÑí¨0÷bE´£¢ ÚQÑíÈñ´ mÐŽÜšzí¨h‚vähÚkGEc´£¢ÚQQí¨¨ƒvTTA;rÿ´£¢ Ú‘ÛM^;*ª UÐŽÜsÐŽŠ*hGE´£¢ ÚQQí¨(vT”A;ŠmA;òïa£0Ú°e¼U#hG®å,XA‚vTTF;rcðÚQQíÈý¿×ŽÜ¼xí¨¨ŒvTTA;r³êµ£¢ÚQQí¨¨vä–ÇkGîÙkGE´#÷ìµ#×à¹?¼väž½v䞃µ«Ú‘{Ú‘ûÃkGîÙkGŽx¼vxÑŽÜsÐŽ„ÂØbWíH?€…¯Ú7 Ú‘¶ [a´#é*Ûë ñÐD;’1³•²Ú‘L[5ë ñ¤Šv$³ÍöÑ:hG²JX ’#†eÒ4hG|$‰v$g*âCL’ÌeA;’C=âÃP´#9%1>>ylr¬bÌrÜb.øíHÎgL^™íHt̶ôXD;bÉൣþu ;f¯ß¶ä¯;ïäbÚ«Á} &™6¼WÒ‡ ÌW¥±Òâz‚È’ý±zœâ­YÎ6h¤¸A+è¿Ïh€™ü?‘w:±Þ¡üuƒŠ 9¤òÌÙJ“¨Ò0ˆXi˜Y©_Ç=ü]iXô=|^­<ü]i í=ü²>Ãð?D¥¿ûž2]ýóön¶™,tô øíb²_$ð/Ì2'Øß%î; ‘˜LË ©cE•¼¥Ž–êhŽêÈß§ŽÉ£:ª÷í @ã:²÷¨Cdÿ£:ê÷íGy<§Åûô£ÈO®K–¾o%'&5ËÞweNÌHó¾u”ÇÒ¾ïÊœ¨£‹êPïúd·O8ÊSC[“ÉúÍ\â^ÙK¦ ?£C.ò‹¬a¨g’Uo\÷M?%N¥˜è ÈÌ  Fó'P%K`<—Èÿzúãô÷ J\ýxq‘å5#´Ç¿g™+ÐuŒ³QŽ~On¦ ¾—´¼Åñ÷5ýŽn”mÍàN%už>=ÑZJ­µ\Û“½mÞ­·ÙqoKß›ŠSrKo¨êãÚZ;7õñïÝscOdìú{yü}ã{Sè÷™ç&—Z`9æ€û^x"è}Äà„®õ‡t;~ëv9 2@ó›p<ÂùË"/ä´ËÑÛ¦]NÒµ#Øn×ÓJ`»K»±¹ñŽ9J¨þJaú5ò„×—f ¨Î—UÕ"áP„8$¨!_™`ú<ä{á1$'4Ý †þõ, gæ@š!ñ¾‹b Ø,Öc/(8Ÿ€°}žÉ€v/0#dûWŠrag–±O7a d5JÆÏlÐäÓE†l€|‡}¿^ÍðÜ>9ýa ­íz»¤ì뜹™Áƒo{u*oô`óFs*]BÎþQ»£  È‰ä6D-<þ]¿œíæÈ¹ÊÙ–tçáõBÚñŸZØá?$EW°š\DpÀ¦Hó …ñöÇOð•’•Ÿ×•fe4í,m,i€ÒæpZ†­¦Èà( œ‡„0£”N6¥@±èVc¬ä€ùŒÜ3€Q™;)[m¶¾À9¤›±yS¯9qð7ÎÙ Ôm%òLS?”nˆ’ 0p1fÒ¹ug¥iP{ê÷m­8׊9 aFßrÊmˆ‹ãJ€ÔÄ\O“T¡›Â|vQmãyÍ™vÜ3…!?6¶z.™#ÔŠ¶÷òâ5ã™­4³Ìò8‡L”Û¡ ÛxÄ;^[÷3[FnÃ¥Íöp²G jVvcP3{œx‹OÅ:ÅÔkAHžâI9“ôñò"ðRóK4ô«™Éî]uÇó,E€R’yš¼GÉâže/š¶û5@·›þR°Î*h>•“‡Q˜vý ˜ÁG€ïèVì=!Ur”âÇé¿1V¨{¸üïxLxGáÅåÿ`$Ø“|>JV8X Ûõ ôa«§»_ C¿~·&´[™-%FýW’?d…‘!)Îèt22ï…Ë¼Š ­®¾;ý“û,¦_ +%–«Ü¨÷i‹^¡ÍÞBA1„ý»í®Ï“O—¼NIi†¹÷IÏü V|ôô‘È ³Š|*ÉÄ¡_àäšK——K6‰Af¿›ôÑÂe™L‹p çÚ¼>݇>†Ãqeò#ëáè¦EX2`ǾègH{Œ>bÛ­òÃO/)¿èPÔ”_K:ºRlè¼€vµ_ÑÔçUrc‘´ú°Þi ¬ÔçÅñó l…ÅW[,>]@#¸'GX|Å—È#=Æ‘|% ¶€JVªô~X8|7J'¸æäE ´5JŸUàE’7ȵÜÊÏ-¤©TÒi¥×©“wõiÅã«XœÙå2)G—¶¬l»r‰-—EõÑí1çÁ×—Eõ%E†\Ç¥”ËžèyÑVÒnödÿ XÖGõÅýK Îcß‘‚J}¿„SNòÑ"KûlØm"Èã±ÄÅ/ª´ÝG¹ÿ[ßß{L_7]e[ͰaÈWÎ?R'e…üç2漋ÈEÔí0ßCí`u„õ dÀî…Û>j†ðþ0…#ÚRx]R‡Ü Cð¿2¹JÖŸÒµc˜E1C»ÒA5'ÒÜo}–ÐÛÙÃ|üÝQM”Ó›¥ÀK¡õ†ð°ÛË’õÉx¢VVFµ´ÓPÖs5l‰Ž2Lœ€‡±Ü5…XiÄÜÁé¨Dt†ËY¾ÅDÁtl“¬ü¸U2¨ô-Òžoï94¥Ž»å¡‹Ùzß Àì¤JÓ"˜¥ÓX½b'xÍ–‚ê+)öû6Dì·³¼]ShÚ”[én»ì7=%ý8Á:¨ëù—bÝ‚íÚyE‡ Ïš¶Ldë8Ùp¸sÉè%Y AíDlëþà÷7ÒM÷‡Ûkµ&Fl> Â†tܳõÒÕ}XÝqj¤I•Ãì§©ËD}>«ì…:U^¶óÜf”Tš†1S…›²= ëÃ'w‚´ñkγ¨|0—¼lÐÊÈ óÁWBoœ"bÉ`Ž '‹ÌIHn½Kΰ³ù ö…!h©æÒáýÎáR¸g-s"[Kúldq[ _ÒSF:¨îÒ72¢U§Œhäð?6¢ÕdGÑèÄ»Î.::-¾äñ`³æ|®Žþî {ymÏÄěھÍ£©¦Ð$»–K™ÉÔ3Ž7*mÈ™¦ÞÝÆ™ÙâÁž{Ã=6¯íÉBþî42•-¼êmM<œÎK´|(ù¨~I ÁÉ¢ò–NÁG9ƒöH¸Hÿ< ÉÑ'e£ù˜` ³ Ñ$çÄMÕäjÙî¬æP*JIc’ù!ª“³‡Ó£îܬµ@αœ?½’2I˜‚¸|Â]¥sIdql'¿6¦8ÜS”G“@Cðæ©œŽb©mÅöœ™ðZv?ƪÁñl¥¡:?[—6Åè’‚C\1‘‰…Ï$e—„àfܯå”)ؘd12 ÿÉŠ£ùº·–ÇvjHdëÝ÷¸MGbû_Zh}4ûôJxó ŒT@5_œ4¶›ŒRÒ†­yœ#Ž3FÀ|G¬—&7Ÿü ¾¦í ;—ã{w™ì¼}+1.á“æÄ“ä%Û^ùÔ¿²:¹dZ{«'›Šyè9gÍÞIê?c ¤ÔH‰¹, æ[-ãÇžÙ·5ù¤{‘5Lb÷h2ĤÃF;5ê<´÷פÁ`Æv®ñ:}›ƒ“¹%ñÌÜoŸWs\ÀÞbJ²˜ð~ ï8»ëÒÉ N†™IâK“§œEUü›9ß(ùíB¥…äçóë~4¢|Ímìv¾±¶»(¼ôWämìù(É"%gè?Ÿë-ø‘ •Rlß'(‡ÔD|ḡwy¦±€ý_é}-4TI7ÙËJ°[†½µÎ ì ™5vÃl£¹æÃl‰; Ü-èB‹`'5î ƒ¥»"îT/|Z-¤{ ¨ƒK•Å|8Ú«’:S-s¾bß‹K¦š,!%™DÞlGb¥[RÞÇ·’à%0k2T‚}‚/¯"³ µC¹Elæoj¤ —`³sI„…K5ͯfõŒ-ÖCž61ž J^§o¤Uµ8Û«a+ì‡30JÇW‹$˜¬h…™õ½~f;hlŠñ¾ƒÌ‡uä RÁ‘îán×ýº¨Ya¼9ø¤Š|‹Ž\ÇkCijºèqâÃð%#``¤Ä/0ÚP§ŒšÈ·¸ŽË`uì§ ’HœÌDÜ¢„3Ç’µ_¨³FÀ)Bi!«à_>ÿQ÷´&kù|Z %Té³a8*Ÿ¡"ÍÎ织áÕÆÜÀtê/3h …ÏvèïwÃå¬ÏöÞ”âˆ4»{íX »wnºËÉOWäkcqÁ^MŸë%®[Ÿ¶ §uÇF’(çÃ$Îùg•$}ÈRNúUu‰¬É[³>̯_’òá(±Ã¿öóÉÿõ°ž’XóIZB`f]W%vX ÄÞ=µ ÒO4Á½{ùné&ï•ÏáݹObmŸ†å>‰þ´øíú)ˆrŠ;¸Ý®¢óÏù4J·d³øÏ(fÿé2.’=S„€ø'Ù³µ\ä¹Z(WÅ[úRq‘çj¡ oéKÃEžª…Á¯¿»':ùŽS¥û±ˆ«£¿óè·è¯Ç,ú-þk6q/\y÷/~§×5ý_ã1¿¥ŠÙÄÕây|¶ØÏ7×-ª­x¶¶›‰ Õö\1×#×o÷—ëë«ûm¸/qþ„ŸÒú7dÆù¯ÑwøvGî= 6–^€ï'þ‚ºO®êæšÎÂýëaàÝø;ÇO®ø?œH çÔ ?ÄÉXÒQNÆOFCîËä±ëJc¦y×Òí;TÝjGÞ©ê<׺óî*×Bmô~µ·ï3Nýî]+—)+Ô½Cå¡ô»Mcö^ó¢u>]\Ò}XzãÓ½çz¾W¨+iî_¶R)½z~JBµ¤Ï¨¸éà—o£<‚}¾C m¥©f$è·L‡V*ið¾Ì3ý2Ïý—yû._æþËÐÙ¼{§/uzh.ezòîôôÄ‘’ÊÂíZù þ–\ -hM«kâ\ l¡¿WÛ7ï_/MHyªÞæeõf4驊‹V\=Õãú…3žè©)Î_XsÝ=Uó '#Ïžês÷Šó'»üB‚ËÛ§ºÜ¾°âîÉ.§/íòS$W½tùžª¸|aÅÕS»ï…¤üô¿°ÇÍ“›ïhŽ“Y™í‡lR Ÿ_šþÍ?M$cГ1Mü‰³î7?ümâ?žXÙð­æVrù/k5cÝ]«F2ªÿ […ÄTŠ<ö_ÕªHÿ ç×Ëïí!%µV}ÏV;ù‚ŒóÉþÞ/Vñ5où¿w®g£WŽ%B£rkÊ !+þ¯ªðß#›ªˆ‹dòß¼”*êš›(¹‰SUŒŠdÒz^H•þ^?YŨHÖH/¤w¾Êú錊dò_wlÊß:WO÷bTÄÏM«sO÷±#¤Ô »ãÕ”*òÊ/æèM¯ƒŒÂq§&`TBúìü·“ Ξ\ÆQ‰,•úR|ª¿?=£"™|ê¤{©"&Œ“UÄEº˜:£'û0*ÑÆÔ=šã—, Ò™ceø¯[Áñ«Â¦”¿ã5=Ñýq‘"+£ ð¿?½ÆE|/t.º˜ªOT1.rô©ç3OW1*¢t˜×1YéÀNU1*’ë@ÊQOï‰qß ýoWuªŠQ]LߛѢ¿„¦²âˆ¦Æ¯sUÎøVšÉÚrÄ\»·3׸ˆï…g®o¥©qÏ\…¦²ì­45.ÒÆ$Õ¼•¢F%š˜žš·’Ó¨DS÷VZêÆ,5&¥ñZ¿ˆ=å1;'ö4z¥Í„Í ïó'ψq¿9tUo¥ÆqÏS*eWoåñã"ňQé[Žq‘btîø]?=Q‘Àôý[ŽÜ÷YÍ,±h5G¯òÑÉáW¹zz5GE kžÄzŸ‚£Ù*r§a ò¸ôP'IUqö*ø?Ý©3fbv7ÀCLPLf»=Ú86†<ê‹ø§>[~>zŽVÒRŽÚ%Ôl&s‘T5øùAݹ%¸F#Æ( dä(uc” Ú=‰:沇6èÉÿew±þmŒ4ê’[ð$ -©O…–WÖ8´„"cÇ¡%Ÿ,iä×ìý„²rëÁh4Â&„p êx»ÝŸ]pdÜÏÖ—ä[ë}ÔÅÅÏÑF´V”“’7Á­c}4EsöÜÖEU %uàÓ€9à£dˆóä8™œãd>;Ž ÙË3‘ º8JæU9ÚÒL³óÙúކ…(1ò¯\>mÒŸÚ¿%i2’#«ãUiì$Oû$vM ÓŸ…9«äÌ*D.À.Ò€é%»Ïnn[tÃm(z|0žˆÉñÆ?ܰ>¯YÚp,õ¡PE†è9,ç@c¼åÈ ×ï6dª.ÇÂDÂî°3TDÄø€ªáÈY²×É$Œ ƒ(À/·Bk·©ÂËq  !$î#ñÂÛ»ûµc9“¯ÿ>ÝÿÑ_TÈ0\Å+&¡63áy½S'Ê^Öò•¯ƒX+}ñã:ŒËžP@+[ZŒ@8’/Ð-J•ðxìQ‹ÈëT!¹|/擯ï5¼_ËýÉdðø çM þ ÈÚöŠ\»×ÓÙü¢£ü¢M•QÙµk £Ì¨òíß}©,s«Šeî¥S•rŸO¯!R¹ÿ,§ `}\6­ÿxΨ©ÈÀ=¿ç*1ú¶,û‘|¸Í®ÀŠûU Ò,†™EJŽ©jN/Ò"BK 5r]J²Ž¢èŽ ÒâÑ2­ü-“kÔÉ]Ê;>Ñ}LEœ.…‰0>EϲAÄøð¤‰ËSÄØñN4à"ƒ‘jÇ"NÑEâZýÜK¦™Å¡bóáŽ(òv¼2¯±,â||*ŒÕ‡ùçc.U*>ÃMXX?œLv:–a«D>ànbÐ)J@ðhð\4Bzð@_WÌÍä€5´ôûš”ÁöGXÜ’A0S¸ÀއÍh„•ŽY]ÖýlAÑnsô?­77;2 2ùÉén›ÕîìγDvc–§ÙD+ø;…½F9¤¨kr¿k³Š’…¹rɉí˜OüÆÇÇ-®ÉrÙŽÚ°‡xGæä—}ÜzŽÄyG¬’Ñç”·%o³‚¿¾wÌÀéV~Ìò7zäjLrÊ´«ÃAŽ/ùÃ)0œ•Žý¾qûT¿Ÿ»_î´¥ê4›É»LÔKOƒzÊòÌéýP_‰Fòwp†5¡þ¹4·£?éÿ¯ðÎ}—µÌkþ³³“QµI¶Ÿö?(XÒâ®§Jˆ0Ü'WIÅ9'IU‰+¸uÝb‰{ ±ž$è}ï£jøt]X%ŠK.ë}À„X0ã黧 @Žà\vÀΡ½Ç½Ér×Eá™dïñø† é{VuÀ|®Á: r#PÍ6 ƒt± HÇGÿ‰ 礹zõ¹s=¼A”•ûÔh‰Q¿YV[ŠÃTÜGt*x¦È'ÖÅüƒ~àµÐ#Æ^Á$_rØãrôb-ŒUZéÊ©N„$‘Ån¶Y $éɃŠ5ŒŠS©/dj73ò*90`4¡-ìAa> Åx´bŽNd! &.'§‰mp,3Rgjœ¸ŒÕ燘ø1®lܧÆ­<äÚ¡ƒ ‡ïRãÑGʃ í °2ŽèÃf>Û / P\qWšJ"¿ç7Ñ«  r‰ë;µ 8h¤™G-PFÌø™85q—£¸w$COZØ}¸)GÍ{…DÞz;ÛCèçÓO·Ë(º6j3§àImGon&²qú@T}SW“P=#Ñ$j.lN™ øÛŽÍ…¤<ŒÍ…LzÅ—Pœ õ%%³}%¾‚ÁóíùßݦHÇ”âtMJü¬lÙUcÚìq°Ž1dŸ¦ÌÖµS¥ö+ë(·’V;¦ËUâé2OÃgD–nzýg;Î=ú¬H‹*|ö?œ´OÉBõ3-ö,ÍTSÊD˜±¶9ƒFDEÂkŦ¦”¶l(ÓjUM|Õÿê^"e™ØK!öåÄîúF$ž»vâ+p¤žÇ¤ÞQdˆ¶÷ß)¹A¥íÉÄÒlA±L…4ŸMZ&¦VJð)6aD“ÖT$ÔÙ–ÿž Ênü{–jÙóÛ%%>g¬×¤mªÀŒÿ-ì'jßf(ß½m¯Â¦u©ßIC™ˆ/‘Q2‰jÒê=§WÙ¤çúÝBIêZÞ`k!­4{?ÒlÝ‚‘ÒÕµ©â«oú]Ù®k6ˆiÄ-s‘„M¿8! ÐŒgaŸÖ0c±¡,meZ¹b๲;¸l È ïáWÁ8D7º3‰MdiWë|æ”ÍS› ­·*W"‹DJgnŠÎ”Žì!†™¶•ÿê©YuTJá\¶ª40X,Á3ììºë©Í˜ÝJÉaãñ'…£ÊÓÛ»íÜ@ýí÷.ú`9ýÄüÿhÃç´LþkðÈD2Çì!›O8A“%Ï{EÖdÑ@°s©ŠÄlÝ,gð«é·µÛCPMOÎ}Â$*T°Ü¿ÎyI~Ÿ]tU–Ke?¦yzA@UîÀ/"Þà–Íu«È+îÙ±‰Š|7þ¿nR|…ëGšˆ×ŸK˜NdY)r=KéšÚ—pýK!h 7f÷Wî/îJÂ]¡<ÀYÁÆ5TSµi<*×x{ ª(QnDÙµ$] ¡Îä5SÈÁ×ðÇñœÒ­8¥‰ôEê†Tð÷PŽC†rÔpæMÊ=aß×sÚúñÜw¤>aP¤4Õ¡õÑn‰½Ð‡M ¼¤Nî˜wúòpsu¬Ó1îòfK(Olº>]ý=‡òqþz8U%úãg²ÿÊNv]‰¢ÀÚIUÄ0 ²É¼ÞóÞñóW#t4Xs󺫥iæuN–fGøÂ1)d]óößK¬“Y2¾[ÉÊxÕ[·ý²–ŒDëvl3ÍrbKòý縰W j¶úxÝ%®†%\hú§¹NÄú_uVâŸÂŠnw€Š×ÉT‚é)M$]s Cö/íJ•݉•¢ë!œ|„Q„Úa²È œ®ôFa7ÐæYxæê-1¶/æ:´ÔàïŒ.e–‘PxÊåÈñ›3Ï€û3•9Aº¢Ûá…É%#ˆ«Ìó‹‰z+Ixûp¸`3çÏ`„x¹,3¸àY;lxiÜy¢8…ät  §¶¿eÈWî#‰šp–ÓîÒ¿ÆW?b¸ã˪p!F&ULA5›ªˆÝ¥NíjN20H?³Ûƒ½m“D ¶Î*®S)ô’ûP¶Ç Q¯Öýèš½7÷SK®Fº#´í¸²ÉòÐÃè¸A·<£“(ŒN—2ŒNæ¸k £3yFç®Ìÿ}–]÷1N¡@:…Ò‘²‹ayMgòWG«ä’Y\ç“og‡Û•S‚úõ¤šŸÄÙùÓl7¡<û¤j?¡‹«4;ÆÙ¹Ùm×ï²ÓQ0VüöO³åfXˆ‘êäšLLj;2‚±ñþÎ{ÁïO³;Bf!88µÚ÷»åÍ LS"{ª\®å²çë+ârOÖG5ïÒ¿*.÷d}µ–{Kÿš¸Ü“õµãù«ê“åºq¹º;=ÏG Òæ§ bEªE²gz˜å¡FêÜÓK\„‚Ô»§ –¡ õîé‚Õ¸é'fÇ鸣¦ŸšžfÜôSÓƒ… ã}ºX™0Þ' æX™0Þ§ f㦟už›~bÔy1nú‰QçX™ E²ç–0ÇÊÔ JºûtA¬Lƒ"Eû\Á&ìÀÊÿ{ª` rèßS»P;@ÿžâ%i(ضúï©‚™)X>1˜„L’®øS˜aýbòK¿]8‰å]°ÇN•íg“_Æïv®à‰ïß=mçÞîŽ_ŸÆO; µ¶_¹·«í›èÝúÖ½ô±ÈñO¯üO„õÿöÆÿpèG7áøõZØn{pãØUô uƒÀ ¢—sTCÓöõ­b%DÅ(~ôúv!uýòÓäNó£1Üz{<«è‡ÍáI8¹db äèwA&#H°‚à<šÜl>?_a¦x÷‰]úù¯Á›Œ~m&FvÓ4Û„éæv×l³\÷“ ^£Gow³y„Ü6úû1ú1ªÏí-‘ É€äc­9ÉÕ­!êDCŽÀtÏtFûê$çä7ž$¿1 8‚â'Ëö_‰È–üî~¶ìÌÛM/U•ÈvŸ@ìœ0GÀؘ‘@ þ bòg\ºuK6‘ª’«,m® B4¾nŒ[ F,\YóΩ»õàþCðpŽUп· ñÜZŽOüw›ØíCÃYl· 'ä æqÛ’‹.ÌAòÛä·§ÂM¶7¯œ–³ŸÀå ^»ÿ‘/ðž§MÈê*¼wÿV©Ißðùµ~C!w”1;#¼©è'ÈsŠm²£üñüg¥¯?x•è%þù°½ü°U–íyªü°s Òüó¿|óWô3ÄóòGœ8Ê×®вxÀày‰’3©âÐpYIð¥÷Æ?çhc› QIJx ²—$‡R÷ëþN\ke£¯CÍ…@÷G?Éà+øìÑÊÂÑ4wüÙû0wÁ;óv»Ù0D±òºN8½Ïî5'ˆã‚»ÙOÙ=9&¹õp}zeü.å7t£®‘2ü¸¸wn¼g75Aü#zƒäíÃy*4ƒœä¤[šþî~€¾àÑïóqf)»ò—ÏŸŽôO¸ªª£pœ¬"ä7J–Á]vÁ9ù®( (Åü®†åŠ£n©­í†»™)b”®rñÚoM =/k¾w¿>ìó/9Øžk]›TiÕz×µ¶óÅÕÈx("Ž“Y•%#fS§ÂlFŽ“Á³¼~ðÎ,i‘»Š8Þ~“YU£æÓþiÁ ¦éJóá¿È»¬0Š‡Ú¥ÛïÊ¿h–œC³ôf7»Ÿí覄ÏkDÿ’ÿJf¯¾|ÒV'âFNiyM3ïmñü¢t•ÔlrÚo%'C`ø€âX%÷S\LÊ.9r6È'käðUM®m7E™h¡–]‘™âä’˜Õ¨ô”e–eTy–w¡ êVUEf¨lì" ‡Î²ˆ­*²dDh¾ùœ9u^kÕž”Ê$ÆQ²ª‹úÝ<%ÇŽ’Iä(Y—mä)ê}‹«¤ÿP|%Çoq–ôŠ·døÐŸ­—±ïj{Êwµsÿû®R|W麔ò8Ïž½--tÄ·¥ŽPp[š»U‡ÛRJ:âN ñuéyG¤ð{Þ—ÎŽîK¿Þ “ÿëaC™"³ö“´øÄIž"ŸÈKîKiÜ|¼/ýx_úñ¾ôã}éÇûÒ÷¥ïK?Þ—~¼/ýx_zöûRw ß—’@ýAÅÞr_Z–×QÓÿ‡_—ž¼Œ w§“jÂé˜P¦Áÿ6€¹Ÿ'› NyÃwOM­Œîž&?HyÓÔÛ*uŠp¨|€JóÌö4{¦Òço`šæô Ló·8¨£(ŽêÈß·Ž<;®#}ëUÐ;ÐF–½66Êþ†›J7¯¸E”?\„VÏ^„Žoý×TU¥õþšª°¶Ú+Üaþê^…¯©ªæ%½k¯Šú%½ _SUÝKzUV¦Weû’^…¯]UUö¢¹²,óèVû}{å¿~ñ«ÆÌU¾¤ªð5UU¼d®j»›íÁÆîÁæE{0`ý’ _¿x€1“i_Ò«ðõ‹™LTèo~5µãë³q´ª_±‚ÁoÆèóÄ çǫғƳUº_ÞÝ+ûའGЇu:û°G݇ócûðD™6ðòÃÓeõá‰(œ‚nà`5„¾þÁª¬><©×ž.Ã9÷Á^xRo><]6ž_ò!óA‰ˆÖZe8_Xåy<ôê\ôÄ}‹Þ5>O¨iä1Cq¬¹‚¦5œG!_¼,+Ò¼r²T€Ð>ã¿ü1  Qêÿar§‡ƒ2È´ÿ­…,c9ŽšãRYy‡éÍn?¯ézÃ0WY^ó8œ\¼æ‚Ë]ÿx‘¨[ ^†{eT Jan‚Õ D±¸S‹0Ï^2l(iÆ`ä.Û ;Oâ=+Š.À•) —Áäòg[HN6Ñ\z—?v+:¬†ÝÉÚgëý–À¶dYK8_¢9…Ÿ£«G­9º¸¸„®9(ŒßG¯Nq,ú;ø|ôÇ>5 ª=E‰“]ËOú|¸ý> Ÿ× îª`•(”‚ÜCir([_"è:Í#3täæ]Eæ¦e£s»ßƒduu¤k’Ó"nGÙòäŽÑµnÀ»cE‘Ø:³2«}ªÔ¡duVH “ÕõQmZD½„k— ŽCiܳÁZPõoÁ‰Pp¢¬Nìσ‘98u•<Rô ¥.Ül–ïøD]¼¬¨6ý°"ªÂ‚¹c¬°Î½n‰Ë·‚1Ä1XQ^äŬ(w ä¬(/f݃…nXõãy°"Û €¹JˬHK°"êͬˆ»bÀŠ\™,+ŠF%`E\Q+Êkžä|çëøëÅ#¦X•‚ÅŒ8UÇ¥êÈɧkôWMÕP&7lj9–’˜ƒ.o׳ý^óÑ<™Ýcž×2HbšTÀÃÛW}´%6p\ñûÝàÚT" §}¹½°Pä`¼B‹Ï•sÔ ‡plF ¹ÙÈ÷ŽÓäÆã!›„RŒÏ3[ºöDb ý8}`ØÛµx!'’sÀÍ–—@Üx*ª¦·ND¤ÔUŒ¦²šÎ1ŽÓȈ₆£bJnTY7¹95œæE³ŠÜsœÒ…·ë‡ýø($ ò¹d„£zšëâºæ>äD¿,—’PÛ^·×9>k££IÙŒ&D@HÖ[ŠÑD4ppg/öA˜;Ž WzîÀr‚ö‘ü>h¾@n‚ïÔQ»E²ú:§é Ä]þÙž]ª©–xîç h@±¾{ šK&ÒGtÑfˆIl{¡)b®$¤§¤£ßל/ÆÝ,O¤‹IžÂ)_Ù41ý(GÌ<ø3†1(j`3Fæ‰<1pr7ybNc0Õ' ÷}:žéc9J“g)ÚLwrµ!q ð·»»­–¥õºª u©}¯Ý&M¸î5hÞu¿Wœ|šb”m×’ékœæÌö¸èNÎ -¤_vŠÅ ˆeè0”(­ÓDiKI”Ök;ƒM‹¸Šµj·97±ûÛa¶šñò8QºS4š¬Æñ™íÏ¡E4û»±¥—˜p?#M/‘¼ñšútËÁá˜UÅÝJÍ{½ÔïCSX+˦ÐÅpG÷AÞb2S]‚àÈ­*‰W÷ÄžMš1[§¹ [ÃÙ7IÒ¬IÒtSðYÖ=¬¨YøüÜ¡ÌIa“ÑÔUÚì!lÂ2½¦[/l.Ž…MÊàƒdc~KÃs•6 ÎÖïrLv_úýªç\ñ0ÔŒvÉþžÒœCª9ì°¥,‘>9cù±ô9&j‹DäÌÅsBæI“»»Bo¯/b%gØöxü£lÿ?öþµË‘ÛHE?Oþ ¾>gÎTyªJ™@^ÛïœeuK²µ¶diYgÔZ³Ød’Ìj^Ê$«»ËÞï߈H&ëÒ,Ïm·—,‘ÅL\@ "xžyEë©Ãi 1æñr3ßÜîE×òÚ³3„˜ßýs¿ÐøD9ÓÜ]ØKÄùÇ`1ÁÖD㿯½ñ¿ð<õXOý°˜ðÝPkLçË9Q¦³ê2ÙÎ×Ú•Ó¶³7e¥»¶% ù{±»Ü[ëÚ„ÒÆYÒ·¶f4f´õ¡õ+·>NœŠpä!hÒ‹ë{ ™¿hÛ'„k"Ò˜‹q¼÷ꀭûŽ­{âMÂïD\§Šlè/ÈПó¤Â{7îå,é˜qï7çyËü±I5žð…E„4šdô“*ò8IOI\Q÷ÈóŽ(а¢C°1YoÜ&ƒã®ª&¨žëÆ«!Rc+ lB EVÔ ŸÏÂf¹ zB<ë—9XyÓ¸èMÊ×ÐÄñ{™bFB+f…tËáÿ`é_4Sx’ÿ‘ò<Þ¹*kæYÒ;d™¥-™ÅH½^fuUš#c~È»õf ¥µ¾´•†G¢PÚœµ3²ØB[3$)›KqÌ·JĹ¢eÕ÷©fûbá}ª·>U‚†g çÐN¶@hî"éã‰cÕÅŽ• ‘+ °°dgW-Î íP-“Ñþ”ð1øS‰8TÛVmˆðøuÔúYQÅ¥JÐ×—s æ‡OeŠ’"u+óq"ƒi¤ëŪBαq]m‘x ê¬T\ys= ±¥¥pb¾æ`.`imöU3é p£$Äx#vÕ„EUx&‰iÆ¡«òtJl·Y¡=F.˜;”h6Û¹²„ÀÏþjeø1ö¨’¸’’3ÏÍ>4&úbMסT<•ãM˜ÊÍGÖ½³¬éH›™üY²iA›üþ@Ë ·…iÕ®6[ÏZ³ü±ÛVáé¡h¦k°5+gçk8tR»*İÂüºñ;Pÿ1+E÷wÃÚšt¿ä5ÞO¨ØOøéü¶Ú–ÑU‡£ü`QR†N–Ù&”ÈãF÷N°P ‰yé¼7-V~)wg;çàMö¸&:ÈEýå‰4š1HTÅ™I\%´YWÙžùÆß“_Ñâé[9‘A*ÙÙxLjÙ¢ìèè½îøÆŽ¥¹ë|Uï3³ é¨ež8™dW#7+ VqŠº4¯ÌÈ4ó³éðOf_p|œé²Œ‡ÎÕiÚÜzÊÖN›Ý¶v­m9ƒ½ºâä$J|j^RþiêSráóœk ß§DÚIÞÉW»³&›ýdAfD  0€9 ÞqzP_ÍÕA$ wk÷h2§Ì¼–—’-‰ó”BV1áà˳ßÑù E9×Ó%¹!Ò²‹p–ÙL;ñ"TdÝ»~óøjÑT °Ëã|„vKÍl™old!aûó„ñVF‹Ë„M ¤”‚óCóž|‹F¼Õ™©ŽÌýiNèHtbs¬#+ߟ<ä;ÂnµŸÒ‰p³§Œ—¸­Ä0¨¹!`Þ^/~”$Lˆ‡çé@þžQs;=RÑ@Íê_â;8öáì-r ¤»>šø±²è‚ßÒº˜º.Lí{B¶°sƒQ¹Ã$±K•µŽöB´) ð¿9FYµ¶Ã¸ÎzŠäÞnQ‰‡S|x&™G.y ëSG(ùw–~icéÓê³eÂiMHå~GZ»rJ˜"uXp’×DØÚÖï( OÏ…½iªë„·5w8–% ’79» ÂCw¡˜¨¤Ÿä †!ØW€%„|›­\ ð•^„Q[øtº œ¦s㓚”0Þu tEqjI ¹ÃgXîTÊe<ϬÎ|þáœn&æWÒ2dÿ}4ß,Ô|Ãìn–„ÃÉ“¸±ç+îm6ttoÜ?}ë߀Öÿeíf\¾¸öÅö¢{™Éõã`/wwë›Gâ^î§Ýú)ˆ——ãåÍb\à^þxÛŽ¾h'“Ö/lþÂMG8>:÷Äà$ð8ÜËOH—Ÿ.?!]~Bºü„tùtÙƒŒƒ=ë2‹Ð_à± ãLqUjS_ÕÃqŸ 6?Al~‚Øü±ù_bólËSð(3Mß—¤ÁgÑFò¦ v± vŒ!Ø{ÁJÊìc_ϲê¤êéý¯ßœV½9­v|ó2³'¾ÿ±¯Ûê´êùý}ÅnO{=ÿèÆçEUŒê*=åõ¦ùØ×³ô´êéý¯¿Îœ0/Nzß–ý>c˜²‚ó—ãX?÷¿m³Ç¿}€÷š&á½f0Olfú€¯^?—²öõðVWÚ¯¸ùÔy ‰M^V#ú‚wb–£ºHû_ð±þ——¥%}ÉÃ/“›¤Ý@E8!`%¸Q*Fÿ ú%%¤jë,.O£ô ¶ Éy¼ÝnÞ2H:n½n‰n£ÉFo2µèÉ}.ÜëBe©?ã3žÊ2;ÄÍê£NÚP0}áÒ¨ƒÑ—'–mUÑV•l²Þç'–[z­¹âÏ9–UýÏO+U!—KŸ©,Ô°Ñç§•‹mÁWü9ŲðOÑgû´r3Ñ`+þLˆ¨¶énÒ'͉LÌ_¨´¦é~Zɨ®Ié­ä ö™Pàz_ʧÍd¤S@ ‚äK‰«—¨kõç‚ò£J>¢•ªªJýº¦/¬ˆªÚö¿ð"ï}¦°.P¥ÅZ‰ö臂>£¢%ƒƒÎŸËœu€ûSYÓ3%j-žTTŸè0®ýq:,îkÔnÝ£![ʵ؊«Di´åûò’Rq÷ÃÖbÏä-­½Ààµúµ —ÃgË[ö‘/ÝBóÈ–ÁàixExÿ[¬ ù-¥ïÙµú­ E¦ßRêòáâÃÒ@Ò…7P^R ôþš21 Üë°û;Õ¨—”J½÷¥F¿Ô<ò%R·ò–ÒÄ÷¿Fº­Q÷šR³÷¿FŠV^Ój÷!m^6îµë½=#•ÌoE º÷ÚcLMC âÚÔü HMÙ™¹ÖCˆµZä ,½Ðäo ‹iYÕN¥Æ]/uŸžRî«dq„¡oÅG†[€/ 7œ‚,ëþ!(kHdÍFà:îÆà’* I¬JÂsîÑì`D?{åªèÚí@IäÉ0N\Í·³£³"Ú2П+­ø3i“¼÷±îqŇyË»|¹YN[ D~¸«ýnÿØNfHV=ÔËý|ÿ¹“bAEô#&b H>žªÐ}íÿùc…U§à—Jk~ ­XÉØ"´Œ¿Ps2“|ùØÆ‘9кñÆÒÊÕnñ”¡4ö¹£¹ÅQÍDf¹Óg’4Æ÷¢Ï+tÜè‡ÖÜm{B/ €o½¬L¿œ/?ìÛ-ܽ|JYy™›Çª¯CrŒŒÂ ¥Ä¡–4”ê#>ñ1+7I›CÕ:y÷”.Zû|âBÓx@\š`…'¢ Ï¨¢—ó­?ÄÇL0KÁ´ƒÖ­Þþû¯Gn)µ†FO}þè–ÕpËæ´ŒäD3 ?sL ?~ô ³Åà [̰£J0‡õœ›C%øáî/O™YyœU‡6áïÚͪÝoïžTRvë¡åœó¡Ô6CÓÿü±'ÑОx ©p ­ø³Åðªéè3<ó1 CéåAðæçw3,ªÉ‹‡…Ϥ‚ùÔÔ͹zâN‘;y“´ÅßÛyŠÁ•>¾cAöV èÁcMÉô˜”˜è +£‘þ½òß(ŽDÁóþ·â#µ ‡à³CÓf>`3ß+´ Ö]fMzªôqõeæP9`Š~7ÙÝ#¹ºV‚ã/$©Ê~ùX©!óÞ Ð6·÷ZΩ j‚¿n¨«þçÕu3¬'ÆNOÜ禭é%‘!qåÙá—•*ŸaÙ=àvä¹}!Ñ\‰¿|¬ø(<>$¿ÉÍò¾ÖQT3Ug<Ì–¥uÿKþ±Æ¹”ûæø+h‚ÏF_h»Dí}þh µÝÐÞyŸ¶Ól’î ÑKLh9êõÙdÇD¨ÊŽœìÔ)!ã„Ì9«ß8âÞÿ–©ãE]fï¤Á¼O‹4 EÈ)”ø¸c‚ƒ^D­1œvF)Ýã£ËÁeFuô1Ç¢¸@裑¿ê¾—tÐ11É›x¸cQkT ¾ÞûS7DVSR®eÁ_–ò¥ÈQ»âS‡ŸÝž_q4C~ ·£žað¶ €…Wm1^8¢ŽwPµáÁî2Óço:sSŸñ¡áeü˜,ƒÃUüÅx?Í–›÷Xʽ…WÀб.øÒ”´Ðé?þ~¦Éø‹ñ¿®8ÒÀ‰§xÜ¢Š[ÕÚñà t²kœ̨úb©s¹ñ—Œ:×û‚Ú˜ê¥õ{ZkÝ‚_x{Á÷ˆ6?)íq2ˆÛµCµða¤&åÐîvjÓþîvü·®;”ËM°ÒàB Ït6Ko{ pY“@¯åºª}@­Ë©µš´ÿE:}©uÝu~d¤û"]@_¼‘É ~Š â¶ëv4OAªÓlú")D™í‘¢ø‹:W¥õf(9^ø™ü!y]Žå¹°G&EMš‘=p‹À„õDŸiÜk[ô>“LãÏaù…rz}‡ýCúŽŸéPŒÞeí_ÛÇk€¨ÁºöI˶²º ó„¾TïÂiÿKA6UüsË’¿äþ—8‘,œA$:Oñ1SsO£ÏªR{O¯åp†¼:áÌ4.èq½Ž¬p¯G?—é/p§a  €­À4X~¶vºÈlüŸé¯?ÃúC9±0?“@ŸIønVÐþÍ `ô3·;DÔpÝÕÀ' ¶)>KçakП¥óÑg86àú}9‚àùOŸiþã»2ÿ¹ § B7\7D5ð)‚È« XüÌÏkæ²ãÏa B9½TÄ4ÌúL3ß•Á=IQÃuCê›9l¢R|–Îê?Kçõgè‡ÔïË„E¦aFà»2#¸ § "j¸jˆjàƒšÑÔAÑÐgÒ†¦®{ŸIéÄŸƒb åĽ·j?°j?Àw¥÷\У4cÜ`Ý€'ìFyÉF¹ñFyñFùËñgUiqO¯yò[µ໲˜'øõqƒužÐk[ùÀ~¤Ø˜­êè#Ũ¢>ˆåKèu·’0~z\˜,jªáña2̧`ƒˆ>“ÕVT¶÷™Œ£øs0 B9½]³£É-¥Ï|[ R\Q=Þ‚‹¬P=Á‚ËËÆýô™gbö>“ù6ÞGåôv°*äæÐgš¢ô®%oŒ¾<ÎM‰¬ öp¯S÷\³2†€ã>/å³ÁÏôÌá第({Íÿߦ0&yœläË#z§vX6àáv )ËÐ;þŒ…ð3‡Ÿ‹Pi(g`L¥wt èq½‹vXÑãz—[5¬š±yÑû̳4ú¬&Œž±VåRÐgž±¹ž±ùf¬n°n@þ„[èãBŸÑúˆ¦Ð'ñ}"R;ž¡\0«ò‰8pTDg3ÅSŽfzM×ÍxÒ¹Œ«]E ø›M¥úâ “£©þ7ºÒeö#)µï>†Ržri¥ßÔ¸ÊúIá2 »!G³D M^† aüÅ4ÕáʳÏBÄÑÝå€/juÁô±AiaT›nÇà »Pó„¾ðx¢ añÅ_ 5·Ti= Ÿ’qåw7¬½êÚʧÌd\ô¬Qc±’åϨù™ÃÏeЛ¡œ^´V º®¯ £†Vô8MbàRhÔ¸òÅP4¾ …Æ_P¨\µ*­¿@ê%ß-ÍZ8PÛ#{jKWDј3¾ñKUb9¶4ý/ðØá°U딿Ôþ—¨§4h å+>á—SºÃsøJ«uðÚo{ÔŽÐÂG>k}FXëS̺î‘ƒËø‹>W<âùq -êà—\Òjÿ%ñ¥=2·=jÇ +„8íz*(¿y |‡}â¥ó,‹!ìøÍom`5ô¾ù­­÷ͨUfOYØphŠŸ›Š—¾ïÓ1¸¸Çn€qâ¦èfÞ+\gI¶»À’nÆóp·ãnÙn“¿ÿò»¯ÂìÄdô[(á‰k l¥= æe–3åæïzÒÔÉ”êôÉ>îî±5~¾\2×Q ”˜µc¡[ß0eÀ”*"ãd²e¢ÂÞÖéåxI .JT?ê_wòFAk—ÝÝ`÷u;Þzs€ŸÜY3iÝ?}L (˜ì•ÕUÆì•_¯ÏW®i«³ÍùN8¨î3WàÆy£Ágã¾ív0®»ê ½žI0†‘FvÚîº9ãÈ‚¤¶·kØNa%Ð ƒ”‘'…Ð\ œ±ž!YQa3ìöv<Lù„ø\]ƒV7{×b¤›ÚD¼áwÈX°vm¤´X.iØb©lÇ»ny'°õ‚ñ 8MŒk$ÞñT]É L»»Ý¾]!ÝÙkàY"B¯PÁýRn[vv³¹q²Éò„Ÿ]ѳ8S¹ 6‘‘Á‰ø+ A“TØŽhñy3o •œ¸o·ô&$Äm‘"ƒÅÌ„4Wç¥!Ú/Ä’ú¤ÙxÒ-;]b.å Å < °O<‘°H¶íxÅPÆž¢k÷Vð^‰räõYÛa#™h­[3Ï‚©íP© Òù”`‹Ì¯x/áµ™îãÌÃ%C#ËtCê®äñ–ðgopJmP`XñÕyä’›m»ñDÐÄ¢V†ëçT“\ í’”¨†fBš ’E–ԃ>“ñ ïš?%91\h_ï=±¥°Ë!Ä;òóÀ1¨œ´Úqô©¥s$ˆ ØýHóIBœ‡a|øj#=Òk©¯0PŠÁô°“¦?¡?ûÕ·C”s¨u–0{èMi}HòÒëAÜŒˆ’òsÆOßv-²¯IE¸æ¸)}C(ÿ³¨n‡VàèWĦˆÝ™¨é…°ÞA±ÄÈo #¥SÊ¿}¹Iææî c4g{\YÎ5ºI ãìúT³éƒ ѱ–°l«|GÄÈs¤`qK×éN ¶É'ÄsAj“9(™Ïò-QƒÌ=+Œô;ÐYm=Mò-©"³±¸xM6FÊpäK_he>ëQë€ô™{lÇu äÿÀIx3Þ툿ãfì¤Ðr¿<š+!àh·Do¶Ð RÂáå(ž¨ºûRù 3e¤ ÉI ;Ò¦ðÀ‹Æ­´‡x>û Ïd;÷H‡Z5K™‰#C&Ž/¸Pòv·sVı۷Zvi§ˆ‰O ÆÜYš€"ºÙ-h×ðöÃÍr¼Xë°`›Aî…A– ¤k76y£É0ZhP),øæÓÙö#a¡È^©y»œú‘L€g9&" O¨€±Ö÷»….Ü›‚;Žü£™6ÔŽ|uuõÍÆiKÙ‰AÏnÝÆÀÌÍRh’¢¦X(~ÌÕ É“º!|`JP[€}¡C®&&³clýŽæ)Q Q‘ߦDh ƒ:?+/<á2Ì2áåAÚ¸0…v#¹ ÀŸdyè{X}hM·Ä¤éù&®³:Ö“;ZxLýQrÇNȬF„8e‰ÞÌNÃfç?ï<%“nö!ó“b¨ILc™éðÔ<©%“’Ð<Ú¡`eWéUIÔÑZ™cçý>آᰣ]P/ÑÀo¹w[ é7Þ<9F6µÙ¤Òj܃`0™)õ‡ÀüqŽðd`ŸÂU½mÿ|ÛmÛ] ÷ª‹Ã5*¤)ĺàþ|É|±Àu†Ï M¶w&íÝ®4_[nü:4·B‡÷uÜDðç {Ùªº¢®U$ÆÀ_É$uB.N»›Tènl0péû+l•“³¯7ÁŠk e²FÜâ ÄÖOפc«›¸ ŸM8$W¬„SN:2€–]ÂŽì;&}Åf5,ž:yÏCxf<•Ð {¡êÕg?³Ûm8 #Ó̳Cž&ÚŒè–c¯.LÚíÛ¬p‹¥Y s,Ó$’-ó’ð6LH|‰Vîþ|;–cÉ:xÈX›Éc3²¦Çi~,|-µ— 9Œ!»;ê1ô"h®ìBP¶¥·“€á¨„ÙØ¡¤%f Æ‹¡©óÆÅî $OR(Š „â~få±Up…*ÛäUš ÊþŽ9Ö_Ó*ÆÎ6º¿´€l,ëÈyë¶ZÞÈh-™ªj¸ŒŸ|ßoiÞ – »BbsdâŒW¥[d "Ч˜Oš†ÍÕ¸âÉI }Z =ñkÒ[§I¡³6ÃM Úp­…øIx‹ño¼çM&Þ†ÿìÖÁêüš7ÑDm¢p¶“Ò[¼%;£¥·•YŽO$?bØK¡¸_À [)ò¶D#ÍÍJ°Yð7µEœÍf{ŽZ6¼½[·[Ћex1nYÁÕ íòñ&-«Êü@`ð7jY‚e,îB»í‚[r%¿æÚ• µËÙüôD¯]£Áv;nÚÓ[yýÉ7,¡?ü+YÁ--ܰRAÃLœ=™ÑC-¡óŒMÒk*ü-jê 7õ}ë¦þ>õÛø¿eG „pTܱíO|b¸Á³¾a—çE vyIˇó8b‡M)Ò„ü»;M«Ëá ÎmaÇn+ bjŠgâj§;Ì™(¨ã–ĈçݰïÙB¤¸¨C´026^έ±_¬:œÞ]zNö)Y— 2vKs94råX`q`?I2ÉížòÄŒ µ´Ý)ãÕi6¬Ræ`A¡î¸b[Pgßt4ÈH¸ì›ÛI+,z·Ó^'|Þ6“qzBAÉcÂÒïÇÅm¡ÃíÙ’Û¡zå™Å$§D÷€Ò…?†çåÅGØc0ì¡øÙ‚" D¥¾é–§u{1F0h® W¡—„zá]£p%ŒîÄèM Këö=Un«ƒƒG&žòqc‡%u`ØÂ;t^ Kp2¯&4?Ùvrî¯e/ám°£{Îw~yt=ç6º¾ó Çè|ãDÎ÷KÏO‡ôa«ÌRØòÜ3Z›Â6Ž”Æq'§{aU÷‡'™'Ý0?_Ýâʼ|µY¯ÝsíôR–œëΫ» â%ä,p€…T„× aSÄù¡'X?‘r6fûá¼Ä(9ÆóoΖ®¶ßP–¿óúÜ=!ŠðÕ«Wò$šàç<+‡É”żÙ&‡ÍŠïÎþ7¬/ئJÁáçæðœüoÚmÌy†·`J4î6øjV¹ÃZhÕ\Ó"q2gqTQÒxfmO°Ø…*Ӕ¬™ëhÇyeÔWS…ôúWa:Ãk%´Œ£Òÿèt#„³”•ôËqYF¢ˆóaùw ‘ާd98IÔNs”t˜ºjkiÍ@‘ÛXŽé  ÝCnkí»nÈ{0ÎàtUú‚AĦ*Lâ‹þGxðæÌO#8ðIã$h4m×›}Ëa¥´áň'¶oÜÖæ4J‡©>í‡ÉòvGGÙ—ntÛ‰óg·àr®d\à© L¨yŒ"…Zô½ÁÒá¯dÙsâßD¶íjÜ­!Y=ÞFr.&’^p;YvÓ·Åi÷®£õ‚ÊŒjÄ ÊÕÆ½GO5ÃÝV4BžÇÁ ŸøIÎ ­®Ró¤#0€ŠƒÇãÝþ’ã]x‚ønm÷#žc×;pܰ}¬#:ZÊAGÌ{:¢\¤HEäÕèO`3¿úêÇó?û•æ‹•µ“YÜžQW •â»aùÓúìüZQ6¹ g1óÁ×b­Ñ”%pé9Ö7€ôFK&Ò Å“µâ˜©žæÕýôÊÖìw6Gà ¼¿ð/·ür‚/CôĘh‚/ iíúÛF¼+¦£÷Ý‹Ë3ÈámJ®F*¾Öz©½Ô†–.´>3Å€:úÚÌk$–²1…ZhLU÷D‰Î°»CÐíö>ã,(*ÒSó«0~”k¬° ˜í%·Î+ÿ´|),ŠyezÉÚ²·‰7ô/YçQFû·DtŽà bËÝNn圛Ö!Å»LšÜõ䢷 «2Ú³qVb¼•âoJt:6oi¤V;Û±[—8µ/aÃ/oÙ8–Ø“[F>_•Bˤlà¤Î7(ˆ‡13'O#ùŠùýQÑö[6 Cç-Þ@c””n§Lf׺>ú>¸ÑÁ4….B&ÚÌͪ1Æ ç’&åÉ8@媼]î)ÿ D¯"WÆÀ•»¡Q£ã/ìÊNâ±íd|KÉ«ÝaÙîƒ&u¡WúL\š³;“Îms¸;kÉjÛwΪ‘¬ï=‡h)cwr»å­”Õ›î£@æË›³¯×Mi´Àøv^-Œ‘OÈÁ'7¤8a'wä>˜Ö• û1z «˜Îqœñf ‡–”Ý(‰’^¨Q@êoYëµHºÏv T“ðÄO>4q¬ÅÙ=÷SÝ]7dÖC— îîˆóÏ!ĺ‘ÍéZ ¾C² ™;è+s‰ìŸ+‡~ÁëÓgí-xâ…¤WŽ\â!œ[NBk}‡Ù#Á[F1 D¸6„Œ•¹ž|:Éy­RK}¡:†+°As]÷…2¯ár”Ä›; ×ÏZð 'è—¶ÓyË‹É=|žÀêßuoÀ¹D‡.T˜ì r»]ŽÁ¤£3ÔøØ| ¤9s 4φ/L®¶8 ×ߑį{ÊÂá9-ƒ‘DÕ™SUpÇdè<‡„Rhn”«ª"óƒbœ¸i= ž²R…”‡ßR0!Ö¤ãiJûë69ăM •3ŸL^¦\±¤kñ‘lE§xS¶pIX.@½Å&¡L)Ûc®¯ˆt|ž¹Þ¼Aë‚ZKÍÉ[ºÚëJš“5®iT7êH+ÀãÊeJÞøàÈŸå"+9QP`3ŒÑHož³M¹õ©¸JëÆÖ L¬¤·ô[rQ‚”šÌ ¹t•S |  ®7güzÓ˜èu›¾êo I’tC@:W8?ë…áÏ‘ûÓnUE ŠäÏY™/®…¶hÊ0_ª"¡ú†æ g`w>™o,Ñ{›9 Ç-à]ë6ç $•P$ƒ÷á3²PsÀ¡2žÞÎäêßü,+ c³p•ç5š™¿Å\LG¿].?ÐîSdôÛÛíùp·]«Ño·ï»Ñown릷’¿ÿ{$…—;ˆ/F»Ÿýût“]Ýì’¿ÿ_ßÿpùùtó¦½4WéèËïø >À-Æn¿l_Œ®®>ÃÉòÙxûï«úC}µÛNÿøáî/£K÷Ò+82ßl_ŒÜæ5:ûêjô}ë´Ï|Û­»‹Ñ7ã—üúbôVÎøöù<ï†ñ 7/FÿÒNGؼŒs\^dÅ çÈeM“C6·˜ùróáÅðw Ï0HØÚ¹?ÒMËW›tr—|öùè¯#·U{Îr„ÿû?#gåMGÓv–|6q¿:mço&n£Ùö~Ó¯È{zøî7îW¸±ßŒvûíæmýº ¿¼»r¿®6ïŽüºv¿®Û÷°JïÆïÚ$ƒ†Aù“ñ ò WpÑÜØ9# ã£áOàÓ’?Ñ¿a"ɧÉr³k±>¼p›Žæ€$áÞf&âc«|ôMï'ú+~ñ?Ñßø5“–C¿Ñ{eÒ³òb]ýF¯ôJ¥gùE[eC¿ñ‹q©ô,¿˜Àqtð½Ø+•žå [ýƲ‰K¥gùÅ2«‡~£{¥Ò³òcxSÀ¡X£Ih~¬ô³‡r¥¿÷Ëí‰mü+ý·_r<,Aºñ¯ün¯äxd‚€ã_éÝ~ÉñàÇ¿²¨z%ÇãÓù•Þí—,ÃG¿†wÕ Š9þ¥à‡O?{(äÞ¯øj¿ÜÞy!÷~Å¿÷KŽ(¹÷+½Û+9  äÞ¯øV¿äx€‚{¿’¨z%ÇÔÿ+¾Û/ÙþªÞ ƒ2 fý#õ$ Ÿzv@Èѯôj¿ÜÞ!G¿Ò»ý’ãRBŽ~åw{%Ǥ„ýJÿí—rô+‹ªWr<@ý!_éÝ~É2|ôkxW Ê¡˜£©5~øô³‡BŽ¥WûåöÈ 9þ•Þí—Prü+¿Û+9  äøWú{¿äx€‚ã_YT½’ãêßñ­~É2|ô«Ú5àŠ9ú‘J vŠzöPÈñ¯ôj¿ÜÞ³"ú•Þí—²,¢_ùÝ^Éñ)ã"ú•Þí—²/¢_YT½’ãêüJÿí—,ÃGïªA9sô#½ã‡O?{(äøWzµ_no€¼ã_éÝ~Éñ!Ç¿ò»½’ã BŽ¥wû%Ç„ÿÊ¢ê•PäWú{¿d>úoxW Ê¡˜õ÷CAêÒß…¡¿vW?ìþÞïPæ<¨ÿ?i'Çý+!Øè󡇼}ïSÞ”»ÿ)±î}ÊoL÷>åõß½OùevïS~¨=¥ŸzP`Úxø±‡D¦½‚‡{ðд­ÿàcŠMø>õ Ø´Ýþðc‰M[ã÷à!±iûÁÇ[0¬|êa±){ùáÇ›²‚îÁƒbS¶íƒ=(6eÐ>øÔƒbÓvêÃ=$6m}bïíA°ìî{LY÷=¦¶1y,ÅØj¿PUÔúþâê?2 ªƒGTÿÊÊ»§cÚ {ð±Ť¸#bReé 6Êî}ä^1ië1ikꞎiÃéÁÇ“6–ŽˆIýx¤ƒÚlº÷‘{Ť ¨{yPDÚœzð±E¤ ®è±ù¶Ýí7Ûö~¬ÄAórSoÏÆWœÑòòìÕf½Ûooéö[@Õã¸pJÌ@X™=‡’Š4oâ»Gxh‡IÓo–c¼üôöõ9®Ñ=ô³À|j¦Õ”ûø¦Ãt–K(:)2DñƒÜ–ñ²sÛÝb(3Àa=:åI8å=é”Ç|Ô)Ïefzàž¢zaÒOg=ŸÎz>õ|:ëùtÖóé¬çÓYϧ³žÿೞûÏs8±¹÷LæÞ©Ëÿ¼ƒˆûcóÿE£ïèVQ‡ì¯ýX€»÷Äý¡ÿfíÐòcAíþ÷ èh0ûà‘ÿ^ìÐücAìþ÷ŠérðZõòHàºÿÄý¢ú°½<¬î?q¯¨þ'©ÿ+G†ÿ+‡cÿë8³º1*Âùæê¼2NdrágœN,…£›YEÈ–CQ΄Ü:ÊI9ôt“nPYÎ<„7>›ÂmÎ^Çû,Yñ‚OãF¹0«n´Ì„œ#™K•ƒ¦3¬f‡ÁV,f8žÊ €i¸²—Ãî?ÄwÈ¥‰¨U#”&£5Ûbưtÿô‘JSè!)‡yJAšb”§ÂÔ ò´"šU»_lΗgS79Ò¤´–ÃÛ%€âû iQ'áö¾Fm_Kâ/ ãj¢¡|^"26\IþÚŠÀ¬öp£%˨?  3ÿ=ívŒBGÏÃôÁç7ð|Âýça¾¤w—á"(¯¬ÛËÕÒFe–¯aʽ1ºIK°ÅôÚ9,À¦!B’ñš¥×Ôй*Q. µ„LÛ)àr¼´‹ …ÄÆ"ƒˆx? 'Þj¼} ­‰fˆX¶t½ àA™m" ]eõH®AŒ®¤Ò•åt˜@ºl@Àô ]ð„]A É2Íq1G^Œñ°ðoêõ#h™YZY|6ÑxHs€C‚+Fp›µ©}aæ/3†úª²*ª9¬j Ã?&"Aao›2DÌLL–WXic¦ò½Ì¬ÎFøœ_ I¡ ÜDY#ÒO¸ªæ_ÃÕè@Úð¦ ]È-ðö–܃ì븅´Á>X„ñCd(†h¹”U+4*a¹S–‰`X•{§Þ¿Ó ·oLj18§5Ô!6|TÀu礋´x¯s· q}þÐ2¾žÀ/š²M›Ò5¡$PqQäCÂnä»]a_걆DС;…*Hx,÷\Ò^ô`(Ì¡×CÒ,NˆK†ðõb…ý|ëÔþ΃Xßm@{½Ëu­;¨’è’lQ` Æ¿Ü~~§ŸÔ|@T BªH1"úÀ¶‘Lõ¥3¹B ¸[<}£Kþ‰n;6¥A „ÕxÊld„tð¦›k.º-™Ö›)oºùœø±ÌèØ6ûVèD]ž‘ÂY;Ù™à–ù|kÜ€M„èd°* IkÜo×üðæd¸$ŒÎC`8b ÿš|°¬k\îÓ ]ÌÜAÕxã¯.ðî¢Hz¼¼²ò\Ð]Y%Ìi2p›@˜'7] s‡€,0kÍpUúj>ìUDÑÇnã5R¸±¼Á6ë¦íZor÷~‡V^‡f¬Hš¨X}@2Afz‰°»¢uÖ…ñç„[`h.Êè¹çâ^àmaBÈ6Ø6뙵„ ±YÏù®ì†Åá†jOøY2ˆ¥)H¾» š›F«ë.ÝÙúIw €r6@L¿o=Ó•]º#ŸD×k×lŽ"ð–Ù=hò<ŽBë¯7Ÿ‰- kÌ©tž!fXXtµ¶ ë1¯³H»‹©³ 3*àåßîÚÙí’’\™¸;XÐö²ªã{æópÏf6/šº®]ír#ùÆ\£¿[{n¶]|gww€8¸DZƒä4x);]ÂÅd º…͉˜ah^h%ò\oÞì„Go{ Ñeà{ž|‹¹ÁÆ{BñÔ*+TçI5¶í.þ# 5 ObÏá¹wAN¾@p|[íMš¹º}ÀV€Ãˆ<¿wÃ÷6˜Ëdz2Bq›¶ F¹IáòË;JNÄyT‰r™6ð˜¶ïÐpà,¦fêÙ5‹èξGªCÀÝ .g? æ2 ’Ü"µŒñ¹ „…CS7lk3ÙÖ&´ Øå}1Àæìô­ïÉ ª€…c[rÏs0è[zp™ˆaz´®"5¬ämíèž?‹‰[X"òx&(¦y!Ò>t@4"þ‘ ŠßÍi•ú¡Ý‰ç49"8Üî7`<\#ãobå%’¸):ÞNÑi Òõ×` ,Æ(+û¬ÙºFsèMÏ¢cç§CÜÒö[à…½“{;¿&¦h$Ùvb%9Q}Þƒ ñãUcôg1ƒd> ,‚—.x„·kÙe|Üà§ €’(!â´Ï»·O@ö—o^ŸÍÿïÅëóÙ‡8Ïr{#‰t}tZ Œ-@x+Àì$ø;»=֡튘íÝVÔ ìÖM¤>ÊIÂàª`#=Óv6¾E`}ß ݪ ˆqñÎæÃ)®7¢x "E»qQ—hÑ.I`Ü·ˆäŽÆÿ<¡Ù7»]ó¦âûáÕw?¾ú=D%2k¨ÄŸïÙ­±ÅK˜ ©°žµâEÔéûèsÎáMp)8à“æþ€O9ð©Ü?ý€O1ŸÃ€Ïr’8Ávö‚óaï0fƒ`–PÇ?ï}=†9ºo±$‡Eæ ^x25ƒ¿NÕÀ†•q‰Õ“wD¹’¥BüTb²`„®ß`^c¡&nm'•P)AHìZìHMêWÖ8 *’ÜàȶgeA*¨2žˆ˜‡Ò’¦N¹„eÀ¨³z?jlñw´PZiñ×ʃ;iÍÐzÈ•ˆáÁVÆ ÊÉ, ™T®½ø:£•Ku£¬ãþ :¡ÀzŒT&b× »ê>î€ ¡ŠÑÌ3cÓ3D~Z)á ‰&óÌ/„· 2‡Ô‘ÇQè“Ǹzñ­$+ò*Ä·òß6G îTi9@ñâº&@åðä=/øäOøÝÀ‡àe„/ð°DÚƸÉ|!ÙñªÄ¤„ÔxNQ! ®h¤Ÿs&x‘ÝüÉŒÁ¬-… ° 0ìW¹vzçlÑ „×VTɽ1raß ]'e),ŽŸ8ãÆ™zèS¬.8šT"Ûáøƒÿ3Èpôl[R@O­;æt_ W¶Ãp73Om÷lM¼Md$üa$•AŽ|NZn7ãΚ «ÀÈüdÞ ð>4iœ¦Ål*| O¡}è-¸äíƒ)Ë°â ¿âæ“w8CmnŠØ±-3ÖÍðàðzKgxãƒ?Ƈ3_7UEë{šÅzŰ:°¼E¢ÃŒ9¯ÜÚ_ÝY!¡µº')%­+á#¯8ù4 û€ñž5j퀵ó£;Z԰سª4O ¥“ûG£®­‘ä£aÒ”iºx4’§$V×oȤ†»†óû Õã@­3íÚ½, øúMJÜ—ßí8H@þ€)lü2øˆtYøé3ŠzÎú]Ÿ²1^‚ÛZ8þ‚¯Ï’!Ÿ¼¡ÇŽ%’dužà±£p=”•R”ÅHž= p­Ó4üx¿£÷?ycCr¸ç|$~;lÐ|Ès1°këJ—Ç5Gާ´Ä_’a_ãv)ÜÔ£‹ËK.%MõHÃ:…VTø Ô¼™a”ÃWòW¨õ çöƒò,SC• ø]µ å+1̆řÇÑ⢷ÃrCâ´)7h@œn˜¤©C®¦7u,Môáò²9âÕ…ÊBµÓ,ÓጎÁOñ3xmî¿·tâ;Öç?òMBÌ·õàÇDn 1hÈEÜè\£¤G÷voàæŒ*µPÈQ¤”›(ÏÑÖ ‰†zÇl¶.'bQÁœ\Û7ã%Z¦Þèõü¤qôfNgêÌ;ÝÖ‡7g³óÆ©_ÛÔ̈ñ꼩+åg£‚ÈR÷°‡¢LåëmoðpéHM¸j¼máÇ©_` à,NÄ¢à|ìh2†|ïœw»ÄóÅÁ´1ZÏ›8 qSœB¼ Pú\ªOCôÛU¯ãÐrm3è>àØCK GµûÍvwpœoB†—s„ùd™4tbè‡ãÐÎúãÓç\ˆùÜd*÷_y˜wá³Rwøçn¸—"g!”½’x¹ö.3˓ψi1_¯‰ôGÃï_ók“D;óØpïç0?$´œi5!¬ûÎo”‡ÿo΋ SU—ì­•%fyÖ8~¥=ÜÍ3Zú{8éöf8^³V9HDf‚‡N’xÊù-K Ó›"a‘ùbõ亖:eÁ#xFŽOô©ÌÌ£ì¯ÚñÚ9Ð.TÜŠ„IÖ­Çô4ý6·7Ç ÅKn*æÇ8Cz*'ÇŠÓJ¼Ê,Ýá;“Ž¢ÎtýÂì!ÊÚ™‚qU^11ÐwÌDÌÉî·—šÞ1”~Á~­¡cÀÉò§8ñ†¹'õ{3ŸÓ²¤¹I03à® Ì.<‰%µ¿ÆZÃ[>÷eÜk‹… *`Á# û„ /G¥_Ü¢×ôÇýÉËø¨M±3Âüõ^ÑTÔ’WßÎc¶°Hzgu˜…ÚÇnãç} ’§'”ã¢`[Ö„Rĺ-âDi^Ó^ÔÉ>(é, \YrFD¡‡)c¬äž§4ž›E È*~D¦Ù½æJò^Ü4ÜnÄ!D¦&5/i_"~ÉFùª›ÞN&Ýø¯Î[®'èE‡¨‡âÎ6iúqˆBü‹‹öv‹'1D‚0mwÝ|-[­[Ó ×ÕeÇ–Ë)?eýRâì-&Ý¿£ÎHôÜaNWjÌ·m‹ùFáÎ@tòT”2 >Yœý®{óx¾Ç7P€m`»úa‹Ú;Ò¹3]9Þÿ4оv±æ8&ïi"x‰\pæª<ž8w‘œÛêý&cõ—¢¯Uh ñH‹…:å´X2Q¢¬¤9Ò²{ªóˆùxb'ÁŠv?¡ÍÉŸZ³{Äg#h"‚Õ‡Ì7>ÐHœd;£a–€7.=eª Ò¢·çIl‹  fðvkçm§g#ózv ·ïÀ"ôPȺ <ö˜ BThØ(¤Ò·H0öçS€[7Iw4añ¸˜y%_Ž×[7…˜óù–]{K…Ì’˜ƒl6œãÈgÙ`oL$9Ésmâ&Ä#†þ"P¾Šö`®œè"C–U;ƒ\óI8Ta-h<ÆÞu›­PïHÆ’ó=,Yé7dKyCpÞK£á£vÙ}ÎÌH`ˆ/ÿÄYýÒ°e`ÄWH2€¸ŠL1íönåΣŒJ÷IÄ¢Ê ³å¥SÇÌTd¹¼ å pr§J"ýâì (/÷˜_|‡ª²/ƒ½1WDFØ»?Ã1¶ôŽÛPæ™^9Â8ú¾s{嵚÷¸Ð `‹º<ÌŽƒËgÉ5ãºÂº9bá÷º“ƒB”íI=ï.1rû7PÈ‹áÒw|€¤ ÜË;óa±m›êåü>Ñ^;µ Õ.Û}ËDŠ5’k0ȵ̳7*¼Ra‘4ö ‚öõÌ=H¥£#}2Ñ~ñ6yÒ»ì1?Ìc–^·w†âì‚~¤ƒ$“b–-YwpbåÉœ)®,Ó…¼…ý†„ÿÙ´}÷ÙúÖ§Ïæâã;ñ1pr¼[íiòã,#‡VÏ_è7#Ãcìæ[ñ/¸žË¡¼-ëƒs“Ä䕜k`ÀüíAÜ Õµ"BgEÑ~ iØáþö[äLLäׂôߌ“ßî0딣â”bPA^E`HƒË¸ªÄ¦Ìç0{6·;Š·œuÈê`EÆdXcR“'éᎴ=Åý„n<¤ûázB)”À•å¹'ž"¯óD‚l—¯6;Úß–IL]p(UÒÞ(C¥N~pmx˦SHë@ûyŒ¹‰øÙ€0%» «UèÐ>È)“’(ÉîuHا„-›b6©øSÆîë_,¶U¦ý^œe>ÆífMnµj¼¦µ.ìÖ|×àZ|/a…K¸æÍ‰;Wr@ÜZn*ºf: OK7ܶOkÁœ %þ“3ÇóUœ§Ýg^ÄÛ5¡ËvÎ"QK^¥¤šÍ™d-#³§ÜNjÕv‰Q{[`ăÛÀ‰ÿ?@‚‘1*ép'Y¤ÐPÏ9Ï«iîì±õXi“‹°ëi–ypW!؃õ—ìÀLÔJÝ@›a–aß9›õD£lÇèœm>xÄQÐ v‚N6° •†ökWïØhdáÔ%ïpoÂù×Ð<´sMÀe¡-RäSÖç!£w¾©Ùìüs(ú{gÀ;ι[¾• ®?sfðŽvr–$DÍxqoCatvYSìA¢ÎàÁ¡—‰¥Ÿô›èúOy ˜¢Øê¦sK´yA `J„[læ†BK»ñ¬â|ïNXãìg.8‡(#+€2(€Yow Y )€Þê}¯{Î.‘eO¹ºy»9ê\AœˆmJ Èù:}‘Öæ« Á…+@8"ñš†<vòÞà¹IOtØz“€Ú€{·Ó6ߨmzbÆnÞ”½Ûï’ûL pñ•Úç77nx¯½îÒ=Ö)ӞϽ&ÂN#"´ùxÏ+ÂLuk…ê%5 «0\jï±ê©;ã´éœ"s>÷¹J˜ì€$–gÐA Ϩd(•²1ç´K‹Âsc^µœ<̨”0vq]&+ÅÚšBJo0;Ñ’P´ÀP¹ÐퟒvÚí• çÎnÏzñ«ðêÅ!“,gzdèǨ(ø"î iôüŠÂ¿Ä—q‡¢ít.·œÄ#”‰U2 $9­Þ£{Y&Í@t'w«%íEwrH-¸"°ñËâ;˜Êçã«™ê aê32Ôýdõ¶:Z¸·…‰J*NÍÏ× ´tsMcáÖQ‚ÿÛñî-øSh …G¸ÎüŽV\Ìm¼ð6~ˉuˆ[Ð c<mÓmÖ=»±¼~º p*Hï­ 2¡å.¸ö±Ô5rí5àu\§/q¥ ¾ŒI+¾~Ó£÷Ð=a¬GO‡&î¸Ý óöú¦4RÈ”~w´Ôè®ÓAÑ3(æˆ9:®5ÖfO¿¿g§˜ð0n'³Ž%gD\ ¨ª†}Ó·êbæŒ/fBéÖë ¼EUPºb?=od0•²—FçzÁÃyoPþ6˜QúÁ̧,”žòf*e¨Úý{Š£pŒ ÛÖ®9ÐÈæ¦% SœÙêÀãüA6?TEqÀ›“˜ÂèCtIÅ’–ûÝëQƒ¸ 0wP[`Ð-ø^Ñ1@çõþcâ[^ÇV(†¬„”»û#F;)ªu†èì›âi+/yì]=÷S™‚•+>áÉ#XTø„ƒgM9W5¸qñ¾<-}² ”pTø7ÎõZÜùD·i·¢´€$)ã<|éX:!Ü0ƒ’8ÝŒòÄHèT»Ü”jbdáßz°isnÖŸ|»øÿ:œ˜yÉihUe >0ÔС–æÕaKáoQKíc[êþðoרœ?d¹dlzÒoºISnÎ`Ó{ר§@î ¨¡‡¿é¶ß¾1`·Ðè_~ò{êZ¯j‘æøÀ#F/]ÔE1 %æ ²êz¦©©_—§Èm<õ_º©?×Çj€‘“¬ÏÔÅ/9ÿ:¯ÁÀý’,|ŠÙŠî_I†’>›Hψî„ÀÚèFÕ„—ºÏU⳿ ÏD»âœ…—Êwð‚ª~² á*÷h~‚_ˆ€f¢ŒSð”ž; “ñ¶ Yaþ^rGW;CtMˆ}œaí´›/›ÁMDu‚¡ý-ç:¼`C'Ì5ø¿HÊ›ø”.Ø¿•š&ÁÀä8íqŠB¸Á+M^À”ƒ™c±¤˜j€-Ѩ-ÎóáÃ?,º–ÏÆÜ„i×wEñp>Âa{¹›»»}sy{v¡aRFÝ|%çQ¦]ê£dÀ¥9©‚ˆ~¸UStLû^‹ÒõcwëÈÚ‡å´`Mñ[Ž€XË Îgœ k@Ë(Ár”¼NØ}â6(w!ÀÂúÃÔ¾ª=•ÞÞŸD¶,Á›aµO+ˆwÚØá«x»Å=¤1Ò2´þÎnÄ|GàEá·]¿/áòAMbêêdÙx*ª%Ï*ŽÈëJc«%O×£ÂmÌÉ©kôÎ}aŒZ£Z£VتN×#y±áѲD&ÊRyö(~}iéãøDášlUûgáë3*è|")Ȱš.È_“u*ÂmªíY Eèlï\§‚'ƒ|A)Ä»ÚãÛÇKÖj¡‡“˜gC^±›i¦ïpŒÁ+F J^ñ@,­ªÕ-Ûì)iuu‚#à„Ç]§w4D $>„µ0YØ‚–³‡Ã "8jÕ:Š`$±¿d&$ösqÅUJ-¡ソ«×ØVÚO Ur¸šœj½]IôÁ‹§†âAÛÐ#ÂJš÷`ëf ð'ÑkÝc=z%¾ßÐÅŒ~õ¨|ŒOðq7؈;à—GÁ»ràdÙç8÷ÃÔ‘…{¡¸qú‹²óׯÃ@K8}¹d¸üžû”tÚmïm|h{¢Ùpí¡^Û7c Dª…»1ãÖ'¾ù³Þ<Õ!AB_(˜‰a&l QCȬ€3áì) ÈÊw¦Ö[” Áùí|àHg»þ2ïz]L&g“[¸1£|îÝÂ\D›ÝjÂ3¥ƒ5—JO'˜tŽúd†k5Ûèd¯ñ­Œä„Ä9R¤m”â:äUñî;&ŠE¨—»F28mC7«8±W[a)Ê|ªŽxôVá™Òîv2iÛ)ÓH¸-év¿—;Æt·syG¿ØncIOCÌÛ1Ynü-R×»± n<1UU%fáÙêt#FtöºdïsoªÅøÿ¿Qt3ÞÄ8c.ó ^~uò…·“”j›Hà|¼ê物 Ži%°eÛ“`­„àJ˜[æÎòÙíÑt¿Ð)¼ØD2 SHÖîxÅð!.}¸v6”:‹ú™íl<ü^z­×·ÕHÍ5dêqH«&D S¡îHÛÙ§µnÙk÷®aZ¸ÏS”kPàlx¶ ÜÚìv—ý4æ‰ß¦ ö£ÿòŽNÐåã¼(B†¡ ]6 T`˜IuÈÖ£ÄZHÜ„øÖ­ìˆsŸ#•H’Té£)P¶-Â=æ Bß„‹*âcœ©„úoÆ“t€ém kà ¼CàÖã{jPdYPEžrf'Þ‚À¸Á]×"ÝÆ†V4.úuû¢FÇRƯ7Ëo{Úº>H>OMú· Hæ&ÏB°#KÏËÑŽÛ:„9·M3|Ì‹šÓÛðÉc(ÌEAOGXKéG peESû‡V bV)Œ6–ÉPYƒhÌ6/¤,Ó$ ÍËäU6Ô¤£@ÌÌV2µlòB…´hñ¸ Ø" 1ϵ1†ùóãíŽè»!pP‰1¾ rˆÂØž[¼)Þï.°ƒÕ-43ÊŒëÇJèš±?qƒ¦IÀí¢ã´}Æ#5/i¸'#P!p{}³‹×r/¯õ-Ÿ7̃žDó`}ñÝW;Py˜”] xìÝŒQy JBí8·ã0ãž°šPñ/6« d¸lnwxÁ‚W‘4š¶7Œ4Dá85xÁbÊûqA”fNÞS&”zËËní=öÀÄØd‚ÒDÈ6À Ëã„=MiK°yBP±WPÝÜ ôÄüú›í‡E÷Á¢ÐÌx¢‹¨B+ʴ䃥™¦ÞÒ“¥;›'pdüN´ma¹ö÷Ÿw0iÆèî(e>0£êK’]|3„ÿɈ1C±?ëþéÇþ,„ÿ2b`7ÁqŸ,Ç»BfÍÎ~Îz‘²PöVj/7³K7ß.! Ö=“¹G`&Ï4D‡ÂŽ A£2B°ró9‹å80Š@aþe°j&줱´ÁÈYa V\‚¹*‚“޼­ÖÃkÄ€Îr~÷JT„jÐr ˜Gê!Þ˜¢3Å3VÙ ‚ª¢eˆFÿý—>—FÙ¿Ð$ ”¡á°¥L³ éMWÀØ@Ü&:¿Ý‘Ntû±m™LxC¢¬cÓÇâ®$÷¯<w%é¯Xto¼’ܼrw%ywÅ™·x›í^Ü•äð d͈'rú‘˜*+@? õÊgdRk†W1ì;>¯hþ0êÇ<€}`å5ÚùQƒü3lB"Rˆs>œrË„!?ĉ”økùÇLöAW’ »Éq\Ö@ýðꪊÐf¢'´Œî»…¡¯9Ac_”˜£È £#È É# Aœ%·+þ,°åO„!d[ùKœµ"œV³jÞSÊ| ‹hŽâ~Œ…û‘¨Ûж ‰§$†èo^ùìo€ $åEØ:-c Ÿ¨™qø³ÎŒ XØ [ãïYq‰m2ÖœÿBíÝv{¾Ï,Wƒ“nw/$pÛYé^Á²â*r–!R§€ö‹ØŒþ¸]ç²,$ŽÉ­„]’â)a|”1ÇÌ9¾“e°µhìvÀŸíOÚBLoz;9vÏÝlA†Œ§Áñù“+£:ªhé»Þ ·> cÎ%//à¿ÐÑïí–+G€F{–\ý^ßNõŒ¼òsføpR_vÑñ«©/¤­d²r ¬Ùî(ÁK=f$Œè]û˜5šOIçÁ¹µ4¼0àHd±=lA>|Þça'Ça B1XzTÝÁCš•O&ìBXÓƒϔۆ¦mÄ Mè9x¸GG¨íîFŠBÄ¡ù݉ÞËMçÖ2•Ç>ãSU–Rçl2RP™‹u»Æ­\J¡k!ùAѱìâ{ú%æâ¬¼*Hoæ†*Ðê|+øä’Ûjs×SÛûųÛEH…>u%¨Æ~s^¤:wÐÇi1’úŽ•<\ŸÚÍSûšmìªÑÊßÝ’q'È%˜Çè‰ ß¼r>蘶ïc'¶r%¸óèT˜j³,æB‰¡… (¯ÄC ¡Õ eŒ†à…,gÛãkž× I-}Xˆ­+(>„½c˜%Í[«o îG^Ô>5÷pƒÁŸ¢½Ùâÿ1ý=•_{¼¦IQ”æøö2ïo/ÒÈ€roXƵä%ýÚ«å`‡é-–Ect^\fE-Y,ðž²ãx•ÈÅÌú•‰$ÈÀåwO©´oÖ\ItR‚[Ò8‚½¤¿ †7BÏÀÑ+¨è–˜ЉåîŸ~L,‡°Xzê%®+A”¹BØ kÚÑÄ(:c/ÔŸ3tÙÙ´³p”Qœ£¿ ‚ !c^^˜Å£.&Ñ>"1nMõtÐPŸ@ÖŠ[ìY&@PP×on?\á )Šw<Ÿ&•¨J|ôþŠ‹üÈ[Û"lF‰Û %Ä€ÍpÏÏU“5Ú'ÙÚx4”ápÈyÏ  ë¹0,@"Âr³~—^˜Ý(#\kæ÷;l½Ô‡‡lL«_a«* ¬†‹3TÞN‹È²ÂZ¤\ŽmÛ2¹jK9ÑÊ;‹M¦‰”Œ§ ]˜Úª08éæúÚ)¹v á*ZA&.€ÇW²ñ<†Ž·Õf={B!·¡’8fA!éIˆ† Ð=ÇÞ¾UjJGÊZbB£VmÛˆ€;Òa˜^X•Þd¦ù²Ã((%W=%éÁ Œ>%9ŠfÔ_¦ƒB”_EsT‡½ª# :¦ƒP‡[0audu™VÞøÖvª©‹ãÀM·ib0ÕÔŸùfêÌW2Ü-íÕ5’ÔÞ…GM1ÌuÝ@êM‘¡«™ %¸;™âòj%èhyvðз*j˜ËæeT禛ÉÇŠ,y,÷®©L6 Î`|+YÏ`Õå×aíJ޳ìk‚"¿Ÿ6{N¡i®wAélη ‰v/†·©Bƒÿ¥ÝnÄ^þǓݹ×ñt©2‰ ðBÔ–¤3ñr+c=߸¾p€©¹vûp‚DçôÔL’TÑZÎtO¯ÇÌ:óÌ…§çb²†;xÍ3 úÊu÷}=Þj,VH¨Ù/6·óÅ!*‹3ÂÞœÃ>zívBÞ!9IÂÉCùõ\Û>»!û ÝnÃ$ë €íæZ®ÔH ¡×BÃ>Ö&DT€õâ6Z³ ò¯×làw„Ï 4aÑGó˜Ðâò‡œ—pÞAWàg*N@t~—§é´¼ï?š´wˆR AØ Œr2ª>©Œ Y©²™‡¢œ$ë¡Z~Ã&"‡&Éþo( ©į̈ÃpnùÐG•!/7åBõI–£ O±±iï£çO`]$ŠFÔ'< ¨¡ÔÇLð¢³M5°Ú¾ÁW !)Yþ @/¯=ÃÍÁ¤xŒZûöM·cƒ›kе÷`9‘4ʼiðœCÌÉNzaŸeÓ—¯lð~e·Âì‡ížPˆþZÌk~韧ã:šbÉ_ÃÌi60¸ŽÖr ¹ݪ£dK®œl*:T[,ßÇU¸åS‹Æ–zÜ’s¬¼z#©_…¾5ƒq°h$eH¦ý‡¶Qàe¢v xÆÄ*V@vË·çe–»/IJ¼<3çe‘ႆŸ `XÆvgþúœ.F&4‰ÛÆ8ýî‡ÿëõ™¤§ãÔ$ ßäÛÊܵͽ³nœÍò’›~OëèÚ%z<Ëè ­= ð0Õµ7ýÀ®»°ãU«uGEÊ ª$¢Rští”#ì1rÂr åBÚxç¬%„wâ)U9ëÜ€–ýM©ÝM;éÆËQ:úírùa”&î?w£¼*F¿½Ý~wpí£ývû¾ýv×îù-g£½„B¾ØLÇ~ÿb´û÷Ù¿»Å–]Ýì’¿ÿ_ßÿpùùtó¦½4WéèËïø >¸—~ìöËÖ?l®vÛ‰|¹úp÷—Ñ¥{æœìo¶/F¯®Fß·Ëe;wNJw1úfüò__Œ^B h|ûá\žwÓò gϼýxÛŽ¾sæâÈ:Åô"¯^8‡'kšZì4Ä«^n>¼pÝN±îÿlpîÜÝÇ/×ÓW›tj—|öùè¯î9[:3Óµtæ4ìèÿŒÞ8v4mgÉg÷³Êvþf²Yn¶#÷?ýóœ~v#p7âÿ響q?ƒrÚoFnt7oÛøçeøyèí•ûyµywìçµûyݾ‡ÈÈÀÏóÝø]›dÐ:¨ÂÙƒIz•¦•I\äÃn2^¶ÉEµ•e ?Ž–ü‰þ óG>á%G¬p²ì\£¹{¹6NA¨ÉÜ×ñß¾éÿˆ_òÌðoúYy3üJ—_é¿áWUÔá«Ñø…ž•Æo†_u5RiøUuøjô#~©ãŽÊoTz¿Eq±þUýðaƒâ_é[ 0~µŽDT›¡*Õ׃2Õ×^‘sP`›m›Ðµ‘Œ~ë>ÑDPÛª!ô—ñ•Oøœy {Ó·NWWÀm¼ZÏŠ¬ 2îÝtðþÃæ+$/±š$¹~tÒîsåv«&MîÕ¢£a-šD&Û®´#"2Ç˼\Ð …ŒWM¿D4ARÜÀç–3IŸÓ%OèÃ%='.K³jdK¾uˆ\¤¥–‹JÈLï'5u[‰?A¦vÝíªàûïöO0 IYFÈÏ`y (G-1X×VhŠóÖ€rš Ûˆªº® Ežè…›[Ÿx)^ÒLÏ/i²íÉKJzn­9ì~S§åož°ÇÄXiò…óhÍö“cI#\ç^N9€ziÂj¤å™§È }ɰ€÷¬ËQnÒœLËÖÍ—:Yéã&-üBÉaWõ:h è7®U>Ê3‚€]Âazí4$Ô%P¦.*%]ò¥3RË?Ÿý‰mu#ÎÛÜ LO{³›ÉõÆuÀLOÂ<7 õtæ{Êïíry‰LóX@ÜÙ¹Ú|O“¹×µ°Ï£ÁINm\Ñm(nØ%÷ °1ØÌVÏμ,x[¹ ˆH<;­ÚVºhþ>I`Ü0zþÌEµ¨öÕž Ì¡ºâÛc/ÙÏ%v…Ä! ½åó¾Ý=B­L£mšjxOÁ5vlÒ&¢ÞÛáMÆï1yÝk͈!G´ÈR¿§¨F8§Ï7jøÂL°äö¾·—Œ£ŠlÎ{ÉÑ•›Ü·rGGW. }äÑÊ•ºdå+uV.üœ ¯Ü"ÏK½rGÇVnr|åâ¬ûVnò¨•ûÐÂMú —9Ÿï_¸ m9¹t êG.+^Bä’6 Œ\Þg¡ía¬qzM0C ›Yúº¾Á¤Ä±ìpb²8$r“‘âÈbhÐÕa´»uH¥å÷é±1Š1)}‹@oÄó-Pß;QôÃ,°œF–SòQ–SÏpJpÔÿhÃiÀnJ6œF}é)³„¤Ó?Á- 0P¨vl^øš ÂJûGŠ!ùÅžñc…Ì(>£†ÓíñêYYKmrgYýx›o$6_ò›ï 5ɰ͇á&+Àwþ‰A(ÜÖ‡33Ë3Öm߆ëÃØµ?a@X>¿É‹«;“Š™mì5Yr?§Wéo²«ô8XнÅÿ§^Å€wWR*ø·šÙéOxsá1µR¥]2P«7¸ïj­ËÃîÎÎþŒý§T{Ø×$kjîë¿ök5iͧpQ_ÿµß×ä¡ÎƵRœ(-=×cY=×#Á²"CÊ'ÕŸ?*†¸|0ù»zÍ‘^É>0ò+:h4E£Á5ìycIAÏ=¶FU `kŒL#Û=>i˜ý£­ŒÀðä=„ >ð$T‡“šñ0ÜngF…ðÍP¦|x¯>OÍ©÷êNòos¯Þ3– ’Êý½úÕä÷6”TÑ¿VŸ ZTÉY*–úG«ä,ó§Ë]tކ(r¦dX‹ÙoVÇb¶†¯ž»^ÂÉL¢$8@øk3…F!Y-çuñA6ÄV™\?’0夙à¼ß(…¹¾]½Õ-«>>¿GŸÁùÓÒ¸?Ëréù{|nB}gàînåq¢)E~ ’ û9Å´sˆ•‰ôCLLž¾áì½l«™ŠŽ×tó¹¢@Dh¥¾@ÂjkŒV ì%žÓ‰ƒùປ1 «ÏR¼ðε ±j„Ð$–)bµ¤œi·E¨ì»ë)Û…ª«ü î™FÕ™Oº8Å¿À[3)"‚û…-vª2íñ‡~ ÊË` óhË™FeO”1 ÂV‡+Á„•Àj!Ø÷~í¼PÉq^gá0wá×À<>ÌÅ&äõà0¥„ÆÑoq ¢ŽW´#†|œ3еý&¥ðåw»Èµ`hã®ÆÝê­{°vÞ4>âzÎô‡M$†åy¦6‡ûâ‰/¡„h&üMl3ƒ‹&Á´[ý)ò5ÝþuŒÑ™x%£]Ù`ç9w€ë8DdŒM3ònäˆÛ˜`áoÒK,ÜRÊßítø·al%gVX.›DÍn®ö‘@’ÎåÉË#ܙ̓çcsh‹&Eî ÉyOÁŒ~™E<-‘çê,ÍÌÐ3\-þ,-¤*•D4¿Ðž”q¶Pî³N„†|b,gÑÎm­ÎŒ”Ÿû>økB ÓËÔBò—I¤‰Y¬à'à häç;ÆÖŸ‘¶Ó1Þõ“ ">)³/†Rë?è\@ÅœEysOzÉÜ‚h‡.®˜/´4œ©f+áŽäóZEšô9C¢ õF6 Áœxe=¡ ‚µ`“Cõ´peh2ÈCµ‹òâ£Sº‰!t-gswèœ)C£ M"ÎÐ#”¡ Q†£b‘YãjfþP³©µ‡´¡r¼ÇšôIC£ËíG¥!œ¡ €—c°¦ñ§GÈíÆ_Ä'Ñ»Ž+œ¡3â ½{¥Çº ÎÐK&ZDtcI)½>Æõ9â õ,&tMÂéY·öœBº$ˆ<‡ˆˆ]Þò®2zsHpÑ¿º“³‡p—7ÿ@)Ä¡¢"[ù³î^h”°0H™:×0G6àˆå”h1%EoÊD™,eò÷XSòÊ!½¸øð$¦C=ƦԘ·¢‰T¯!FÝö Tt€þ5¡à+º±ê®Ê‘]±ÇÝJÝÅÖ4˜Î2v»ºðŽYbmŸGU9IŸHµU<ª×С¶â¨4×nRÜðøTG†ØLçš#T}Ÿj2̧:2†ƒ˧šô Uð©[éäÜä„K ú„£÷¦8J¨jʬ~¡jB¡öSUfT½—PÕTĪx…ð8¡jÓg%ͳ@ª¶»œCÄÊﶘð„Ø/aïžRìl®ÙSñ@FßOk¾õHöT¸ÑШ´Ê_ðXÉ›Sï{<,R‹ø'ï¹àOöŸáô þž<*{ºö…à†M÷:œ-k_¸y «{R;?}8;à,CvJl=cÿð,NuÅÙd‹@sZò‘¢Ûé;mPÙáR‡2`)K&-þ›þæ<ÁhÈOê €Ÿ£˜of]$fÏ èé®CƒZÓ‹0L¹ª§`¢Rf('ÊÙík9f4e-Gëܺ±Ýë„Û’0GQ/òîˆúV‹|®;Ó:£ 3™[PåúÌÏNpÄ… WHî'æYÁºì&´Öu½¯=®En÷)¿Éo˜³Èa¸¡=%œëmóNrbcŽ-+\h¦´ÌüÐ&wgß¶ç—ä|ö#Lð0œ†¤²n œUú¦“#ÓÙé`0â½\bˆ[n'qFÞXüXÉóÀÆK„u”“‚D]½Ã \‡»ù•­£DTÐ0;böû— ÑÜR|xVK—’C½3 ¶+ø—™of{n·esHOƒÎºÆNåPƒÓ ävË ÍSçrg½‹^y&8Îpw…ž ”¢ä‰WºJ½ñy!pgÁ͜ӹÌTÀ˜éê fˆÀÄ:˜(Ä“TÞhDV æÉHò¹ L7¥É íŸ1V_™L.¬vÄÖý-s^84à[¦VÎéÚ0g)ñ|ôÕ5?AdÖæœºêÊq%ù Jå®UwöŠªEÒ„-ö™†N¥Ì°(|س}eûJÖˆ›5`Û~×[CŠò¯¾ûñÕïF:uÀ'.à¦óžg‘V£Â«é#©ˆO¯c2=ÎÑ”¡æÁ´N{&UuÆm8êJ"ÿDÈLT̸ÜQ\ÅLPþׇ'‚›@çÁw˜Œß^l ü.ð´áQŽ6/t‘ 9è—¹ÿ³3dòGvÛ½x¡°|x*&fæÞ¢4‰P@u[Ðy\Ó'ìOѹD}„ûÓã–;é$"ž¹F}½îö’€Ž‚ƒ¤žÎÓþ:3#€ìÎ=Ù”ÈÉu² ^×’¿ü J¶tàäÏ™gΧör7›cïÛ5ç qüã2߀Mà±h) ì„àvñd­ŠëéRCg½¾ð¾³ÓÄP¥m!Ï,d ýˆ‡ÄO+Ͼm1/aFyÍ´åA€/§«îøK»­ß…,A¿à|qÂÌÁñ'm; jjèãëK.Æ_f¿ål+ÔWÈNÍkÛÂý²Ø€ÚœØ÷ &m@sVkÞßp»^8X8obŸ×k c2{øŽ¾¶ü·±²Å~çr¼8‘³Å.Vp'PŽañkyAdÊLVLÎúÒ3o{>ôÀ‘Ë;ôLΠ_©|BÚ)çQÌ8á 1ÎpòÕΫ øÿØcç9„ þ÷n?í6W‹ÿ?=UãVÿÈüìW6XüÊYeÜ2ªÝt»ººÂ¯EŠF Éó߇úÇÌý4s.éoè±ÌBnÌW_ó%¡aþú¼À<àY·loö[~Êâ¾çffU¾–beÏ7N¯$‚|}öÿã ^Ÿ» û¿þÉý+ugguöH>*rt× ™‹³Ï~íþþ%Ns§¼!Ùžýú3ª·¨§³ÿC_J ìtz —m¨…Î¥ø'„Ìáràõf»Y^Í·³_kû«í¯^Ÿc[þ韜ÔþðÏß|ã¾Í]sÔm˜QE6ý€[Lýè‡^xqò^Pò Ý+Õ©DzEa î ¸OZªn¦;©N)|„ nwÔÎeváåëD½ÀsuB¸Ьù±6I“jŒçb“’N`¨7x¥¥Îu^0b8ˆz–ÈeìrÂBt­|w·Û·+8' juGzU;=hD°s3¥ãÚ`@ðrð›"¬Š,«¹çÐ-ÕV_Èìs4(X¿9O;õß.(:„ÕA¢¨ó‹À”ƒ¯É˜•ª_³ý0 šüK°8ç‹€‰=͈eC! Ù„nöý'2}›Ÿ(&„‡7o5êPr¶ëVÎÒß³jh8ÊÅ6è#¡ØYó{¸Ì±óÆ8:Í«vÒËñ NÔüžaW,tÅ€^eµÜÅh±3ÞÛV7‡ˆÆ*iæÅµ\öáÌQÜŸáÁŸo)øÞñy­ƒê”Þ]ÏPÎШ<Ü’*Θ_‰¬hÓ·¢oE»ÍsY·û­ÛðÕF@à|rYÜ¢y@i -jG‘M ÕìÑIÒV¼ßÌpãM¤n>CR›q%nÈŠ¬}“"…·B Lâ)Ý­Û´I+z:2Íÿ|¶¿ƒ«µíçî_æJpf‹»s‰ñ‹ýö)g߆«' ÑdC;ãå'ünij˜ ³<Ún~bX…BäÔ¾¯è¤ïÇýþK€“yõã×ßýá½(g>ÇxNMt†î,C:=áÏæ¶wë¾›<'© }3v ¦žàG%? –±Ûú.9ЀtËñVrkíVíÚ(ùÒg})úE¼hio멎܆£¤TgÃêÑ+K)*ì—tS* ™}˜« 1-ï˜x Bþâ»~ùÍ—ßÿñËW_ÿ åíf_V’ŠñŸ]÷—ö8Ê't&³°ûÌdßd¿1ƒ;ê*T­šfá.tØþ#`+ç µpB¨ö<Ù2xâÄ6?“Ù*£”Ãç¡'ùÓ ç2QÄ%ÓdÓ–¶J‘),Y¯.|ÒTO@?-»ôÔ ¸KÒ²ÕKsš0t e•¨fw …Šcí!Y–ë?¯ 7ÏÉÕº¡YjÉ–‡€8z´È ƒžÔf=õÁ7¡krFÌœï?Þ‚ã×Ɇ¦äˆæœ¹(L`Ï%ªÔå¨9gÔ6 fEﲣϜMø(:Ú.ÈŠUà¹[˜¥;?K ÷Fß‘OÍkß‘–:B±*¼—X@4e‘Á!2ZÛ¾ Ç (Øë¾4g%šîd„Æ2šëFr< A}ÒñåȵR™Ø aŽý?@á¢Kâì]}Ý7ÅçQÿþk±ËçÃÃDˆô8}vÎY’¦'£[ñâüó_’²ÿú+®‘¯a–-æ³¢ÏD²Ö@–ÒWì·¦µ4^bÌ ¢0²„û«ôÏËU|Š \oæá`ãªÆ†˜DƒûV­êÄ/kžý5]rx«c`0Lõÿêÿü­ÞâsJgþ˜VÀexl «÷Æ£cXMÅ)òMH‘¿'Œ5 c%q¤ 3ÇZôüŠÅÐdf)9ò–W^â™n”Ù¹¬š$¯ä®Þ×xõÍ?ñ%bØHÐjQ+÷Ðk@/ûÖÁ49ûÝ?ÿê‹ÏôQ‘ßoÎþøù÷îß¿ÿÂýëëoºÄ<Ó”íîúì_þøÓçß`# DæÆXúr;Ë›%¸³¡óÀc 0Ÿ1h.ežº*(ª…I>¬PXLWbÂìðÍIM;eL‡ÀÉìfûbÔç$ðÓ€M·—ídÌ;@’§–/>ì8SÙ™|8ÃÀG’œ…¡B†žŠc,[üX ƒðüús׋ YE:A_ãØÑ±CâUy§æò(Èåö1fŽáb/<»>Cì|»[Ÿ¤uäµÛ™+gôØR%cäÖ|;žœ¯àîc«½wß6×¥%˜è!/ »8’¹ƒOUºùì‘PÔžBïú×ÞÕÉÛŽÒõHiª£³hL¬[&Ô ŽbýávåÑ p2ÜqPav8ò|¶0èLK·-# Ê\]„Fêîõžü*jËEp¤:¾H ý‘‡9ô[ˆRƒº–œcDE¤,=HM|Ô±Óå  2VÝè\‘©;?Çì=º<„ÁÆ‚P’®‹-JÕd-ž05¢ó|½ž¶à×Yñ-Z¥žçÓ;Ë«’^†¡IhhZ>Ku‹˜}£Db‹íÄcù%gÖÈáK™Ãq"äUb#‘¤MŽ({\g»yª¸/¾þÃ?|ýo_Zã]Ü‚\\|Ë{òœ«FBeÏ—+Àt¿w$KH£)õ¥À‹I@`Þª4Xá<Á#ßÔ ^6Ÿdü$ddíZYHÜn®¬gY%#0ÑV ìnbŠY¾J»ß{Ì®+¾EÔQ:cƒž~ì+…ÁS­WÎpö–»Ê -}ÂÑ+ž]^ Q=¹‰’äȆÃ;{žÐµ€À*Yðµ¢0vÌÀ‰Šè’ï{âa’‚·Iën©‘s±ï¼Š÷‚ †P ÅSYe¡ ¾VÙ°ÁGÖ.¥ªÖßqX’ªD›Èóœîähfìf’öØ ò®Û6º„¾óµˆ5#:àU$GþI#Ÿnwp»â°÷¾ã†7çM€¶£Î^Å70íP"dMöC°9Da{70_ú}9çÆËF¥‘†ü”<“‹ºÊ+VS¬Sw Ó®ƒ&tþØ-+\Œú¢¥‰:­*³\Ä4À ŒŠ9/¢ Ì®:¦ÆŽî =ˆ ÍÛ–}š/X Fá¯{ %|K“’²±Ijý^ð¥p ÓËit Š9q$ˆÆAûÙž8òÛ5…èÛô@uEj¾:z°[‘<(Ä&žß›¼6K¢)wÝÏrʉ^r¿‰–3¯C  P®gPˆÛ6fh’|5D€úyÇ—>gÎaï·`‚Í,ÂÑ´mç·<Ÿ&ª<´*ÕôÂØ5æ¢[Æðµ|N*€Lùy­Ò :•Ð’ÛàãÞ¼òýQٷθ(šâñÜ®ÁKÞliï8€‰¢"04‰eR[¼9©!|êèE™XUÕæOY(¿öŒT¸_H(Ër„b0³„j#D~˜¸²§7ƒÔ0óC¡)‹¨¥S){¯á‘ ]ÍQ0÷µrÆ5(r›÷;gœ¸l5¯Øì‡6ÉâÃyÆÄ¿¢=~Ð6¸:Oʱ+w› ¼7:m7ýÀç–¯?éë0 F”‚·“‹Ç”"B´ Žò¦ijWºçÁ¸ZZœ÷lí¼¡Öñ®øµk1k>¿¿e¹Å[Ä-\ä×Ér–ã–#^È×r¤Œn%®§69¸±=O I´ó1R³JÛðê‰ÃðZál¹§ð9óGYÑP´3>ý½º­[ˆ´ˆxÂ*Ð9·4«·›ÁÅÚ$—9žN]E;ñ†/üB_ï·p0/7ÀžÃÁ€Dï9û…Ï ª‚ƒˆ¦zI¢”_eÖåž-1"P-˜SÌA̵Áp8þÖ\¾áCé‡È ¡C4‹‚RÁÐ|§—£•›eeAØ]¸Œè®jz/é¾Îé’¦OJW/¶ZgæeMÁ åËÖWx£+éY]¦Je»= r3:º¾Àì 7KDmÒ;Ë”˜XÐg¼FŸ‘RÊ<ÊXý5ûBz¤Á(|ßñ¦Jã€ÞVJ%%€ÕËÙÑ^Êý!BFËmßgñèŸï9J:8Y€Æê“…Ì™¤Wi¦@8sÇûäK43Û¸-]8‡C&=<øçÈb¿ ²'<ЊsX7u±J#µ›“Sþ6lNmïAr,[”æ9 q¦…‹ý»Ü#`NqHÁJƒš)Ç®mOZX‹ÊEÞ!²–k„$~ΙŸ!5ÏVíjCG„¬,zwôÛá(L€gã>ar:ƒŒ'™¿ëŠ£‰1\Ÿ‡ÍñéõsÖÄ­ˆw9€H—ÿˆ*8y¼í21"ë“…·æaû œÔ“Ÿ¡Ø2÷`{ƒ•¡\Lô1xK˜`4øšSù'¤ÐÖˆÕRþøÆŸ|Êå„$ö/$á“ÌKLÑÒ.9¥…˜Aríà…û†„ðβ¢[÷êd0¾ß-·è+g ˜pÎÚöVœ| :¼ÁŒžcjÀÉ äô¯´¶û Êvwc7 G£l¤wK¾ ƒ›¡Ïíó±c¿ üºÈÂë”( "ˆØLjG6ËÈcÇ[ „‚vb4þAA7{°‹(X7„q0Š ›ós@HÝûkŒ1Ú¥wµ_(P¡ÜB0r6ˆ»À|8É ¨lŽ×EÇ;ÇxçÁÕ1¾Ýq|;9 pwœàá­ƒÔjB³%bxðHꀓ#Ë·¡”R€MÂÐûØLMŸ)/—(æC0êi«qƸ+½ˆUÒ:fC­9Ìff9ZÁ§„ÈŠçkmþŽ9çÒâU§å4:¿§@[ ?áôQg”‡§Š3Aë"|´Æ7Ïñ¶(^fWö¤< øùÑ£Œ†õíÙôvµâ•Ù»¥±”[˜ Dÿ˜t|úÕsKvüg!É:Ïvœàò–ñÒèѽ×Í×ÁF†€ÝçBgK¹Æ´8Ëè‚T‚V»öóãJ€ÛŽœ¢ Ï÷Þ•·‚sRPÚ€FÓÉØBÉÈš[†×Ž#»s¹îÍ'eóèP sŠs¼Û ·„ºoóЇL›‹ƒû'z4<†[Jà;“&HS‚h‡WÙxz\¬$&öÝî–0XŸêä-&Þ+ìÂp=‘öghI‚MÁüºÖT·ý!<óιEh¡^ðPAwrÈÒmõcS6SÞ¢ËÊ2ńڥ3½ºÜá*^¶Z:xÓ.3L(ù? ïYbÔö¯Ê}{ÒZ~µNÕ ¬i<ý[×KÈä Á!ÄAb ÄAöÎ:‘…‘+wÒÑ€ÃÏÇ?eNP NfÃ4þÂy:çI§|ñåó-2Š›ˆícvŒ~Âaõ D =W @ÏÍãd‡1y`P-Û}»¼ók“šðÞk^‚µ2ä4NqOÎ8:Ëà‘©Kô-7„qòÖ÷l!(æ®-#ÆVŠ>RŒ¼*“Cn1ÔóS‚JÀU^"–Ü„¤ëC7Œ^¡Ø`}Ãkƒ"Úâé…ñÁ»<ãîŸ~¿€H>„ñ üÃø4¢|û˜Îñˆ%Œãa$ðR>CÉ™%'»â4S{#VwD|4ž^»”B|§Ñ,^I à·Ddm) ,$¾NõÍÿ~ì¡¢ÇÕíbÜ€)ÉÀ)ã±gI¸kà‚B „@L´µì_usžYå1³:°ÐÉ4jGwfMéóÈãüGŽûDé hk­E´–‘À^(„pMsÆúŸ:‘ Ð4‚Å'?›”iEßµÛýú ¡›eVî§ÿAßQêx7ŒIB0G‚‹Ì%çk¹H 5ÇŠd`F¨â¢ðz"_…ã„áåy5ï;¼QU’ ),Ê0[ LïbÐɬ¬%·«=Fo‰˜» ±Œ<;Œ€&B‰c6iBÒ§·Zê™­™GèÁïÝn†mkáísÑä¼Fv{¸c9WѰŽQסPxŸ´ÈÌífzP¯­Ýí›K?¡©&³~ü×Si†1¶ê5cBæ²3\.Çxæ¦b _ø”ÆL¹1×G3?lL!Ø€ @x{¹U@ÀäÝÉNßÑþ8Óë„©LzžŸýïÀ%è%lÒ^+"¿`5$´¼o`ºîÎkú‘»™w`¦ÇÝ`Пvƒ_Ç/g˜ÁÏ’4¤ÓäI£×ë+J«äã¨ü±7RRí,e&—Áç‰bk–pï‹,¬\h?`ÑÁóhv^ë_Öг¨Ÿ7ÜJìç/tTg9ú­¿¥©ß:Ϭ'O‰T=“Ÿ6 ;HÙO“å펂™LÉYâ}=d=š°Ú;6ó–ìp „ޱ*‰Ç)j¹?ÿ XTFl*lH… ,1+Eñ‚A‰§!7ޝ)SÞòU5±´Îå]NÂÖÓPF˜?øgH1Òš.ð-¼šÕÒ¶…»ÖCð`¶<3¯iJÑ¡’^µ¬—k7< Áµ œ7¦œI“¸Š{k^ËŠ4Ã˳¢¡“¿û«šØ“eñN@«$òRúºÉ,Yýÿ„wøh™È;Y©4ÙˆY¥qàÄÖ¾ÞåFT¿ÍBæ;aF V„üŒÏì ZÝ4¿P›å4\òˆóÿÄí‘Ì‘ïù 6©h"ÝÏͯʞ²ÂgÑ‹‰v.¹|ZÊ ¢?)ô|ÌΛŸQÞpKû: ÀTðáÙ@ñÍèyHæÙ8¥½^/Ž0†QúLqœ%ÆõÜ â™ŠÎäžq B2:0rƒôÛ×÷² k aP)ß‘1$Ü@£ƒJĬʸ`0^¸EÌåT•¾–;€,Û5ÞÍ]0·¢Ó!'Hßu¦è M‚uû>‚랇ö I5m&tÓï¶sœÝ€šÌíÙ,—v…ðTBÆ;mÀ‹‚U¢0™I’VþŒ2¢(OZ‰¥‚JŒª‚¢‘ÊôÓ&µ„’!Ð-÷¼Ve˜ Y‰¶4ç^u‹“ä„ɳ9HI‡8±µë¹p”þ#掜ý 4]#…Ùç%왚鱟ç$™ ªæŸyó¹tÛfö ê1©Ì06—hy2CB{•"Påöñü^ oÐí°7[¯nýÁhæ.˜âd„*SIlË·L'ídÛz¤µ ÎYC†šÛ­¬é Fá,¼©8ª¦KäJoË7Z&=äsâzW²$Óµ$ y°=Ñ]n™3æ|=ãð©+["yHð€wXýÁäèÜz¦‹]/aÂØ¦ ¾΀÷Ø©é=á=zÉÓ£ŒûAz©…Û¼ð4k¼X"O¦ŠWÊü匸¶,ˆ˜•eNѼ6ºSãvÔÃóP~)1½·(†Òƒáé~\ú‡qÅJLüÛÝ`þÒ(ýv¹üàîFp½ã··ÛpÅ >ÜœÁP~»}ß~»k÷ü–«ô%òÅÁýö/F»Ÿýû|›]µ7»äïÿ×÷?\~>ݼi/ÍU:úòû¾‚ýÒ5 <×îë+HœÚl_ŒfÝÜLÛw£Ÿè²ÕÈ^™Ñ÷nó_,[gryÖýö…ÛÔ^Œ~¼mGؼòQ–¾°õ 7…LšZ÷àWPà ìÓÛný[Óp[Á¶»šmGg_mÇëɦ۾ÿò›o¾üÝð:·æÜ|{¹ùðÂI$E98¸Ÿ¾Ï×ÝŒïQ¾eWÎ"‚®|¹ž¾Ú¬ ó»ä³ÿïWæf‡rwMáô%áÏ(rõý³ÕÞ y5Þo»£›Û}ò°sg£¿¦#'e7ïþÏèS X ü–ºŸ ê‘þ÷n;Ó{.‹ŸËŽ=gä¹ìþòlüÜÑòòÑ_³Ç´¯ˆŸ;Z^)Ï=о*~îhyu_~E9ø\Ó®l†å|0 p˜<ô ŽHañ‘ìžf&”;>Ä6<­;þ`„Ö°èW}D:ΩíU}L’Ý7„G¦ÄÙcŠûÄ‘©ð[ß÷`V`áÿ=ô`¤À¿‡lÂƒÔø÷.IÃu-ÿz0SæG:ƒðD»ñ»6qîÃÍx¿áÅäÑjó®ÝoP‹M°ûÊ<úñ×ÉrP¯îíɲ»qQÉ¥-¯à ®¼ªFp˜¼ƒüù$9 çSmâÚy3ú«[w þÚnfÝr©ÿ:ߎþ:w¦-Ä:£¿ïÜß¡ú»ñè¯ý¿m݃ï/G¥®è?®F%1D¸¿nÿ¼ý•{µÀ5`¿Ý¼›µp]lÞG[NÜÛ=4b2¾‰ºö?]oºuüÛ{ÿÛûnÚ«Ü4þêþë¦Ãfuc³wýØâ`ô4†&úã‹™ŽwQù37B3÷m¶Yï£ÇgøøÁŸ'3.ûà—÷(&g9ôaïÆÛϜ臵kÿôöfÿŸÜn·Î„~&`Ð\š‘3Z–ø{6j?L£Ý훑…ɇ?¬n—£ñtú·{˜–š{Eýôh«UÉP@ô-ª~í­âÑg_lÇï¿\ºÅ·kGMþî3·¬ÿ°l©}ðÌß}†ÞûÁ_ï¶ã©þþ¡÷ý.ú1*Ï­-6¾ÐãñŸð™Î[vcˆebEn‚Nq @5FÚ:ÞN’¿óÚ ù;U›Pô)ù»ÿCŠ‹ÌE4 GíÙˆ#úñËõ¾Ý¶Ó`– 0x“^—¦ünô(+hWêJ24.W{~Ù¹ÿ8£–(ü{’€’-y¿Äÿî&Éß'?úª›6o¨„‡äïñÏîÈñ%aìÀ€w.Ìb®Ú÷oãŒäÑ÷›å¬ð¤¢]fù>YªÌíj®Ä®Fu)Ÿ—£ `²?×ÿœÐCYŠ?8u‰Öðn䪮a=* yg5ªr÷¹:(6<²T͈ž‰ªKtA÷Tš»J¢>Åï|öjs»íÚíÈ) “î6ݲ›%Nâ£Ú½¶Jܼ͌||ŠËX¸Bt½£Ÿá–¿¸ÿvS׌¬N€$`2ù¼äÏ~¦gðs2r{XÔÂÑÏ¿Àt˜Þ[K(ÙuV÷E©'Q+Ÿ^Ts¶(pô+Ÿ—ü¹¦Ï©ÿü‘}%»«âNkpµòÁ¢Üh­ ªi2ƒL³ôÛÉ“>/ùsî|ø\Àß-}6þïÈN‚’\sr˜ðys‡>×8ø.}N¤ Ãfº‰éZ8Þn7ïWºçëYõê×í máñ EA.ðÈYR ªæ¨j$P› úL¥×&´€ž?”€­‚è3à;ò»ô9‘‚#PϪW¿n×sH ²A•  ÏTzeC èù äJø™U¥õŸ)è1õ¬zõëv=‡ÊSéyZ@ÏH P ^W…7#=À=F¡žU¯~ݮ瀩ƒL$@Ÿ©tSj=? £$€šË`Gé]Cz€ zŒB=«^ýº]O‘Àý–T–˜Rr¢M©û 1éA!’Äñ„BÊÖ,ß,áØíñ…äÃÝyZ!EU uçi… ýÜ/„_ˆ5Ýyr!õ@!tž[Ëè¥@î)û(¿yŒó’Çœ´XË`a—ÁÀn‚}ÝôÌë þ#p¢ißãK`ø/®"«•Ÿ)#>{Z-ŸýØ­ÚÝå7«ñúP¨Ô¤yÚ“ªÉ¹ÒT£šjBS³"4•>¤@°´œkÉåó’?¡Æ¼xNƒKï@ ÷È#´nEŽŒ´´R-ÍŸ¿¥ Zš¥÷4µ Mµih*}.úÍ~¶¦VGšj754o‡¢¡©64U5û¹šjÓ#M-ïiªUM-USKÕTûüMµGšÚÜÓÔR5µQMmTSËçoj9ÜTcP3¹R3¹é/z~æ5„°¢ÿp-ô¹è çÙÒHqÏâÍB¬õ ›aô™¢ôL?Öñ$½›«Z*UK¥jÉO®¥ µØ4ÔbUpEÕø±ƒ«¢CVE‡¬Š»ØôäZ¬ª¥Tµ”ª{r-¥ª¥Qµ4ª–òäZšP .®…>×ý?²–PòŠÖ•ÔR„ZT[K¡j©U-µª¥8¹–:ÔRd¡–"SµÔ§ÖR¨µ_¨µ_¨µ_œ¼ö µö µö µö‹“×~¡Ö~©Ö~©Ö~qòÚ/ÕÚ/ÕÚ/ÕÚ/O^û¥Zû¥Zû¥ZûåÉk¿Tk¿Tk¿Tk¿yígj\Œeñ3'ׂ‹[¢6¨e Tú|Š,µäª–<Ô¢j<Åê“Z*UK¥jÉO­­ ®m®…>—ÁQ:­/•ª%Uµ¤ª/ÕÉ}IU-VÕbU_Ò“k)U-ª¥Qµ”'×Ò„ZÐîâZèsÙ¯ñ«Oj)T-E¨EÕxŠÕ'µÔª–ZÕRœ\‹Zû…Zû…ZûùÉk¿Pk¿Pk¿Pk¿8yíj½”j½”j½'¯—Bi˜BiU²î×)VŸôE­ÊR­ÊòäUY*=V*=V*=Vž¬ÇJµöKµöKµöË“×~©Ö~¥Ö~¥Ö~yòÚ¯ÔÚ¯ÔÚ¯ÔÚ¯N^û•Zû•Zû•ZûÕÉk¿Rk¿Vk¿Vk¿:yí×jí×jí×jí×'¯ýZ­ÊZ­ÊZ­ÊúäUY+ Ó( Ó( SŸ¬aÐÖÂ-—í1üÌÖ‘µÁ£Ï§ØcRK®jÉC-ªÆSì1©¥RµTª–üäZªP þ‡k¡Ï¶_ã)–’ÔbU-6Ô¢j<Ŷ”ZJUK©j±'×RªZUK£j)O«%:ÜÏšp¸Ÿ5ápŸ>ÓÁ9¦ òá:=x¸ÏÐá~"/<æ?”·êÕ£ë–4†´‚è{†i ™åÏKþ ¨ÈûÏjüŒÏÓߣžâ¯‚󇟗ItˆðPê‚/{שۢêL¯?îHÚ¸G8O::‘9­ÿîA¤#Wýˆ‰—¨â×*!ö9 •\Úg,3$ë>w¡6{æÞgƒBCâñ‰…ò!ÕËÍr:päÃÄGá÷"­O)“H³º:¥äA}üÑETÆ5s#?¾X&;èH6TÄ‘Sà †üPœæ)E@*Ú@¦ÔSÊÀ´Ö¬<Ɠʨqæž$,c ×êIeÀˆ˜ü ö)2…éiÓÓÊ(0 þ¤2ÐM3ÅÁ¸¡Œ –H}Ò¨`ÙaêFõÔ2†RwžPfªUsÊì0ÅpO©©‡ËxʳÙpO™b6.ã)2µÕpOÛ<=]¦¹.ã)Ë%/O—GÞœ>Ç súØÅ3´£>}lËìô¹^æÏÐŽêtyTÏ0O+û íx†yZ5§¯—ÚwjÕéeà5P†}êujåéã’7§Ë£0ÏPF}z_Šâôv”Ï0ÇÊgX/euúü¨žažVÏ0O«g˜§Usz;êgЧõ3̱úæ:î/î\þÔýe Œ'ï/§¶£>½ ÜN-#†2ªÇ”ñ‘q“úÁ‰5ò¨¬\ðQ’í.´"`ÔN±Oð “Ñoá†@DšÁÜ–®È¨ìršU/Ãõ‡1ÐÝc™PIßO·ßy’¡GQ ‚=ânMïD˜Á×ê,¸éÄÀˆD ˆyK4ç=øà p5‡ÇŽ™ÿkÁá΄±GÃë24é|n–@%ÕcÎ@îH@´!¤w¤ª(5!*Þi£J ËÂRµˆŠNËž3µˆ`×ç‚ÔŒx¿DC‚ò'DZ|ÅU1q Ѳ5ž…z!ˆÌ}Tù€­Á§ï ¶ g3¦L{$¶~Å»O¨˜FWçE“ò Á•‡ð7GŒ¿YÚ,AüM“ÕŒ¿Ù”Å£ñ7Íþfö"/^äͳâo:9€>áo~Âßü„¿ù óþæüMصñ7A™G_à±ÇàošÂ|Âßü„¿ù óo‡¿ùÿ ,Ê"½Î…1# µ¤ ÷ÃŒ ÷ÃŒF ¸>ÃÅa~!‡Ÿ¹8|æqÅ…"øžŒW„âTч¹Ö\æW *fŠÃgW\£ŠkTq*®y|qÄçËËÒ:H_d4Òâ EªáÍ25¾ôÅùø¦œÒF¥–7 ‹Â(, “>vÂpqø§(:Ç£&ŒW¨âŠ>žÅ£ŠÃÉÀÅá$áâJmRÚGרâU\£Šk_Í.Æ ¤/2iñ„"ÕðÒ‘"3=Àé#üQ±cˆ¹1Ø%@åe ]„~^òçš@%!ñ+klŸ¯‡Á.›€u™º,üçDÊyÖ¥¯fÕ«^7+4åã“Û* ©‚è3•ÞT¡ô|=ŒuÙ¨Ë̒ªüçDÊyÜiW¯›õ¨Ê €ª  ÏT:åvR èùzê² H—˜¦'¯æ„tÉå< ë³ ˆ«×ÍzäJ¹@®jÊU ò#@$Â&]2`½Ê?ùã+ÄÕëf=‡ ¥ ¥ µØ µ‹#:D›€s‰I¸òjA: x¼(”ˆ«×Íz`L}¦Òq;çÐóõ0ÎeÃèÓæÑ Å­zÕèêŸEÙL¬1•ÀÄâç%¶u‰Ÿ!÷Ù”ô¹ö?ÐöÖuÏ—•ð]úœHAÒv¾žU¯~ݮЖ—@––AîK¡ Ü—Ð ~g@ ¹6»1Ex»!¥'e=êRT¨juЈ¨yÏ! ÜMY¸›²(è3•Ž»/·žC¦ä€w;o£ðŸ)èq»B\¿n×sH P(” US¡ZP‘€ 7Aè3&ÜË»•Ò}“@¡$ׯÛõ(•J(•J(ÕÒ+Õ’,¨Ôø"ê5ÙóyøÊÇ«„R©„¸~Ý®ç@ž äi}¦ÒÁž[@ÏHÀ( ¹@"ï–¤ ¸ Gi@\¿n×S$ð¶pö ˆ¾õ3@ ÛâQX¼€g‚~v@ßõá[ÜÊC€@EƒN¹Å-µTª–JÕ’Ÿ\KjÁ]kÁÏRKuj-¡d¾Å-µXäJO®EE—¬Š.Y]²öäZJUK£jiT-婵ä*²•«ÀV®âZyqr-*ØU¨XW¡B]y}j-…Z/…Z/…Z/ÅÉë¥Pë¥Pë¥Pë¥8y½j½”j½”j½'¯—R­—R­jÕ5ž‚Þ"ìG*ô\©ÐsÙœZK¥"Ò•ŠHW*"]™“û¢Ve©V¥j¿ZŸ‚#}Q«²R«²:yUVjUÖjUÖjUV'¯ÊZ­ÊZ­ÊZ­ÊúäUY«UY«UY«UYŸ¼*kµ*µ*µ*ë“We£Ve£V¥:±Ð5~l-j&7j&7j&7'Ïä¦Ñ''FŸœ¨Õßœ¼úUÙ+}^ŸÊDµž„GÓ(<šFá¼kT}s2‚O£|…Ñoú;'!ø4 Á§é·_×x¶N£°u7oúÒ; [§QØ:BŠ7ýOÂÖi¶NÓ? Ó5žb/q-…:ê)ÔIO^Ÿ\‹:¤ÊÕ•*YÏb•I_ÔL.ÔL.NžÉ…šÉ…šÉ…šÉÅÉ3¹Pk¿Tk¿Tk¿8yí—j½”j½¨óL]ã)–ŒÔ¢fr©fryòL.Õ)r¥N‘+uŠ\6§ÖR©ÃåJ.Wêp¹2'×¢ÖK¥ÖK¥ÖKuòz©ÔÚ¯ÕÚ¯ÕÚ¯N^ûµZ•µZ•µZ•õÉ«²V«²V«²V«²>yUÖjU6jU6jUÖ'¯ÊF­ÊF­J• k<Å*“ZÔªlÔªlN^•M£ÓŒNOPë²9y]ª²W:)"N}ˆj= çú™É¯AK5ÓQ=ÀŽR*˜ì`a5½?+WTýÀEº˜m…²L¦×Þg¥‰ªŸD½ä›&øÙÁŒlz ~V†¨úI\V{­±ƒ±¨¬Ógm%Ò ¸}€ªTˆç½¦ÑÏÛJ;ÜÊê²­Ra™÷š¦ÿY‰¶Z™>°Ä­‚€P•Z²å³/s{xÙµ~€»Ê*j€VQÃü(«Óû‚»Ô©eØg(£|†2šÓçzmž¡Œg˜cõ3̱&;½Í3èÚaNlí0¶äÙ`¹òÆd£±Çä$¨¬~APŸO¯Ç“v=¹#X¨Ý~{;Ùß"€";NÔâlGÈ]3†íšÁo )p 3Î:ï’³i·»fD'0U¤`¯Ê ÿ:Cl*Ä«b<¯«s›»F¼Ü¸’ÜÓo4¢EÁÛ×Cj‚u¸¦&U¢€¨nà‰+ ûqÑí°à³ñr¹qU¾ßQÛ2 `a³ÍÖ=Nή®%`‹qg§wëñª›ˆ —‹…ãe6#™½_¸çÖg (f2,³`½6K÷ò¢:Û»IružUu=*š¬q-(J×Þvsƒ° ÿ÷ß»Ñ}1**÷Oòcû'*sýØÜà[g«ŒA,Ø´¯¶mûúìõùyÖ$o ÷‹1Ck-•ÌýwâÐN]S^§Y¾ÝíÎ Æ|;m·îÏøðÌ g„FCÚn×ã% ~I§m·Û¸‚݄ۻBiÊÉõÓxIj³„Ò[9ÛΛYÇ¿cóA°írמ·Xó~˜Ž÷c,Hñv9Et8èHç¦Ðnážð2oÃS€¶V4 W×ÌÛåþÜ@S\?g«vµÙÞÁlÇoÏ/a%8Y_çE1ªÒܵýGWÒæÜ¤ðËæ, Ì­Û÷î“ÇhƒŠ7k×Rñ‚PØ@¢Ëe—ö3OÆËóÍYöËy–ÞÈlh45¡åIl{BÛ/Ý×ð8Jsá'Ýx»‡é)z-À« &^½nÇ~‘ÏÎv·o.=Ì›’þ;7»Â64™umøqÑ®/\Uð`ë‹ëpðqu€”ÐÍŒ}·Ùš]âQîæg^wë&›æÒ͘0Š·7ÅÙ3#)Ž'“Í-)‘.Ì*Á6²4«]£¾ž›Ú NS×±×(÷æu –ÜÂP»±o·Ø«)L©ñÞËD†‚jÇ2{"èîì@0ÚnU_S/`ÔgŒë7Ê2c\«ºõdÛ:=ÌúKÒkuöóùMòÕÍYGªé”9ÍÀåmËú …ÚÒXÜáÄ‹$;WÀ$„)0ãyJ}s¡ý )Œ/ ©kgÊp,MíP(-ÕO¯ Ož$ )â>"ƒAïD“l Jp½Ù;DãíÄýaïêi§ç ŠÎZ{w}žÃŠëDºmOmmn:FTïa{$Å´HdHaci{`„ìHBB º…4×›Ë `>ÿóHË ßÀö®å]4Š#|!Hk]-2Çç¾ÑjrÓ¼ÞJß—€ü ã^ûT•°Ií:Þk›Û]ûF©½QieØôÆ;O‚ºt?N4¬ãì@ ¨þd[hMÚ§ÂøDMF½ã*„¹¾ìöû%LÔÈíÙ vQœI8åœóÔ®QVæ…k"<îvÝ›eËË·.Qš·gõ•¹²ç ìùß¶;×&·ØWcñ„“‚;.!WZXΰZx˜K7žã]»™›žÉÙ›îÔâZ(Û´Ó•›Û­{{*¯vü**¡9ÃŽb×Is$ 3¬?3 Wíx½“µ¤—òÛíÑ;1¨H²^4Š)kØ: nÔF¾íh×Üñúvû)Z,?¼úîÇW¿w“É"‰ÔíF,½¹Oï«eÓ МÆ[ÐÉÞü˜‚²CW•†ÎšŠm³³¬qÃoº–ßÑÜXŒe4½qƒAPí5 ÷é!™æi!Ëb¹rq^Øzd ض }/LjMª´›Ó Ž0ØDK¥&Q]¹‚w4E PÉëÍ”KNLUªäÖ.<·#)| öÈÔ+B*¹¶ÔÛóÖÙ(£=,@™½·îÝíòŽºÎÆ 6¤n¸yPÈ;7€¬‰ÈÕÙ˜oÝàîÑ0‚]ÏÉýÏg¯Ï@[Q­@×ü†mÐOT,¯ÏI 6-ÝÊ–·À,Û¬d1høZAÚ7´d£-¸…9Ðá\ä¬×l®¾†<Ï’ÃP‹¢xD¼}”\¶­ ôªaã[2±Ül_ºfô`rÁŽšË*”Ö‘bÇF¨NÔ˜`yX"ðÙ›GcCÑáP,P}”$³’Œ°<ït÷q'`ÙTËô©—MíL¶CÙØ,aÙŒ·i<‹"¯=ö®…9K8½-j!Ð7`¢u=E-FÈÇa«òÛq‡ g ¨ÀØ–}*Ðòðy 76¡y„௑:˜£{\âø3M})-‘âx÷Á¶“|ò´©dùÓ6 mÊMÊsçsÙ~Œ¡ysMV+ÎB2S;ô:DÄèÐüñYmŸ¼v­BíC¿+&Lõï×49PÃιež§WÜ]dŸHoòªJ¢=ß-j3Š{ƒæ¶p_FvÕ5U—¦1¤ô ™T«èYÔñÝÎÏÙi;'ó§¶êå,êe^²½7 æ0+oÙ‚"ÏëtJÏÐ÷&ø5ÚJÜ®Í4:Õã3³ífˆåþÏ?‹ ƒ¢6ðã/¿¸%A®¹³nÁlÖ³dX@”éîìg/A~w_àKû›Ñ ýâw¡ ÝÜÉòv×ጻÂΙ·é_èVÞº2!çdÙx(qîõœ52 ¦øM·œ«Ÿ‘ùŽzEä)aCLæþ.X3qÈ;V~0—aZcœf{ÀÕ¸ ÓhÞ,ÐAÃ6Xqæ1€£—°`}½F©»"p>MÜ”¦ [Øü¡néäµß²Ñ«m¥¹³•.BTÉwÿ|®—D- åðÏmòxüslR;]aV¨¯(¨Bá,Ø\ 3´ÝÍÝ~2k·4\àI'gã÷å^¿Œü–ö…Î[Œ¿rk…dâÔô-yÃ8XEA{ øˆ£xgël¶{ôÊPhã›DàáH8©'º°Î{æÓ/mù'ŠðÉO‹„#%(—²Ìâ-g¨4áÆ_«!ù&ëK(þ@­)[ QÛ½·Å¢]E!ºQ¢s?×ý] Q:ÑÕnÿÉš4a놭/œvEØú<­¶Þm?„­_µÙlý·î!€­ðâ…I_¸ž='l=ÈÁ‰àlý'ØúO°õŸ`ë?ÁÖÿ÷€­‡]ë¶”yô{ l}žgŸ`ë?ÁÖ‚­ÿÛÁÖ>ûb;~ÿåÒ-¾];úkòwŸ¹e=^Ï—-µžù»Ï0fsð×»íxª¿è}¿‹~ŒÊsk‹/4ĸCü'|想ñÝb™X‘›` S²‘nŒ´u¼$çµAòwª@ÇÇOÉß1zþÿ+ úËÛ@MÞn߬œKR;Ÿ¤rÞÔÒ}®2÷¹1øÙù,Y Ô"îsž»Ï–>;:« ‹ –©Û¾³š ³S°«ê ±©Ñ ¬k(´jü\ãçžo ¹© xC(­ûœü\€—dø3ÞŸ gòÚ}Î-½îc¸Ï|¦Ê*ü½Ârª>;o_nà!CýI ¨¹¡.@‹²”>7£Œ¯~CÆJ¡~ì³- ŸôBB*© ƒèœi Ÿ¡© lWsíögx9³ð†Ã¼¬æ>›Ôý½B!Õ&‡Q¨ès /éeãFÆ}Áá± íŠj³Î’qŸéïк*ÇÖY×÷¹Ä—„Û}Áš-¬Êé…Æ?ÇVØ þNãlxÙtyžáìO]¨,ÝƒÇ C‚,° Æ£¦âCäÓ&ó?”¦ñ/€ /•uå+¨Ò*Ô\뛄oÒÔŠú†]¨T×*êõ¹*ƒ0ªªôBg^ ÃÃBuR ÒvíöÃPchx×V†­.ðp60:<Î $&ðp3¼–‰Ñ¤náð„iÒÒO¤&­r?ÚV‰àà¼Íès㧪û‹•)Üd8min7|À“¾É¬õIYne‘4YX<î³ñ«ŠÀap/ä² ]A•,O÷ïZ–­«¹ñëÙ}ñ ³ôX¸f{ÅàúÙˆÂpý¯½&q‚)EÅ4)4•TO“â„A•䄚‹ª"¼)™a¸¸Ëu.ú²hhxÜË@‘„Ÿ]?Ë”†*+x=ƒL²¢ÂÉи¹’¤ÏšrÓ ?çð™Æ<‡çI`î Ä>œ¿qË?€zN/Ã(ä5†$è¼ ’Ì 5TŒå.À ³\þ=ågj`à—¡$c_ƒÉBÍn }‹Ü¦fCfJYr³]2Õ·LúæjËHo¡,2BDFeNÍÀJ$pðRMiÇ@i§eãG!Í©;0:iÊ î;W… gcå&õƒ_×4Þ®¢VfB“Å©™C5wÃÔªQ³àŒ«ymdðÑð¤l`/“‰ëö™ÏÏT×}Zå8û«’—‘ëqUTþÏaUy-kKþjàÙ’ësŸK+K´ªŒ¬ÜŠWC ­àµjF Pó2wóÎY]8õ.Z¤¦e Ê¥.* 'ûºÊDÕ„ 3ˆ÷.P]´rQ£á‚NHÕ5´2@6¬a]ÃV¤nE49ýÕ5¨)hÚLš"µÛmÜ^I7%éh·?TêÌ­º¶iÞš*•¡Aiá†ÑT¹‡Ín˜L#mèÏ´ïððq°K54~¸}q}°«5¥ßì¸q;B[t$¡=“û[)v›vXl¼,"ØQp mÔ,OØ¿Ioâ¶Î‡Ý^Pq\“q ²xüÀh¨iM‚-Aƒ&M´•pSyÃ.ªo¼ãaŸy'DYà™°xëDáMê¥Ê{-J›÷`Ü›ž’ú €ëþà($`ÇÅ4Áq1Mp\l›ÇŦÊq±ip\l›ÇŦÁq±©r\l›ÇÅfÁq±Yp\l¦›…µf³à¸ø¿Wø‚w\l¦›ÇÅfÁq±YPxS‹›*ÇŦÁq±ip\l›ÇŦÊq±ip\˜ò5œi‚ãbšà¸˜F9.¦ Ž‹i‚ãbšà¸˜&8.¦QŽ‹i‚ãbšà¸˜&8.¦ Ž‹i”ãbšà¸˜&8.¦ Ž‹i‚ã"̸ɰ=É °kIA°™I°Çùšaó“&Áž(M­¨oÞq‘®UԵจ0`#!náÁ¶-B…ÝÜK¶y†»6X72œ°ndœÑ¶à €&O ´Dx Â í™ahÐðÔC;‡§$š?÷Ù{Gþï¾à½#WPðŽ\ Þ;r5{ï(·AOä6xG®ÙÁ;rýôÞ‘ë¿÷Žœ`¼w”›àåFyGNªÞ;_X_y¼£< Þ‘àåYðŽò,xGy¼£< Þ‘û¼£< Þ‘ûìõ>^,çý Ï‚w”gÊ;ʳà¹ÏÞ;ʳà¹ÏÞ; &Þ‘üëK^€õ%Áú’ `}ùšaI“`}IS+ê›÷ޤku-xG" X_"$X_"ïˆgîIôíUòìaRìmT{GR3ì†Ô$Ú%¥©–ºæ½#ê{GÒg؇I´?‹@•‹ð`?'¡²w$Ò €†,Œ§ÚàÑp²w$㌑Y¼#žÉ5Á;¢‰ÄÞÏ0Š ›àñ”ärðŽh 'uÞMú^”£×Á;²™òŽxUñÁ;âeÈqóàѲeïˆ×3EàMðŽXPÄÞïˆ{G¬I(öo‚wĪ­aVIh%“ªbïHf®ímöëû(™#2ýœ9c¶øÅý´›zÄvÅráÉ+ž ÛGÁçŽ~þ’#§º¾ƒZBÉ«D÷E©'Q+?²(ô)VšøŒ?¡ïôù”¾S-‰.î´'Q+Ÿ^Z„Uñ3SÏT6V¶øø¾‡’W‰.î´'Q+,ª‡Ém ˜’0¹kþÌx×eƒ>%bbW©Í›ÿ®1¹‘òy¹˜þº$ߥωô8Ln©gÕ«_·+´åTòTI UHUM©jA:,T^,ü\ÒÞ\¥þs"=J©’@T¿n×sHIÚYHÒÎÀÏ\:’ºs ðù! äJð_âwés"=ŽT>H ®_·ë9$PÔAE$€Ÿ¹ô¢-Àç‡$) Àç²0…¼KŸ)è1õ¬zõëv=‹ %BI P5ªŰL$€ŸKÚ?ñݒ鸠GI Pˆê×íz ä6H ·Aø™KG“„[€ÏI P ^W…¼KŸ)è1õ¬zõëv=‡œ{ç%à|/üÌ¥ã¬æàóC0Jð¹$SžVgèqA‘@¨gÕ«_·ëYö‚FíÚ ¥s¥‹›#»¡U»!Ž»1…¼KŸ)èQ{A£ö‚¨~Ý®ç@m‚j$€Ÿ¹ôÚ„àóC(•Ð`;ßøÏ‰ô „zV½úu»žEJÖJÖJãÔJÕG4aÞ( ว òŸ)èQPš0®_·ë9$Ð(=Ð(=ШõÖ¨uØÑ…Òø¹¤o|·”¼‹ÇëFé¸~Ý®§Hà³W›Ûm×np½1|g“б lD˜É÷Rònùf  /¤( a‘Ç’ç…,7OlI:PÁÂ<¾3І1{|!õPo¡îñedù`CžVˆI[ò´ÞT¦šk}¹~,±Pq,DDáƒTÅ;Rï°*ÞaŸŸ¡ÎB«çé!Á47?sSQÍpSéó%–ÓÃ8Ô€å²ö£ÏäÄÓ3ýPÓÙí¥–\Õ’‡ZTÏF’‡¡•9$2É ”¦Vª©•jj~²@ªP‹MC-V…aTK^¯âHVÅ‘¬ŠÐØôÙÅŽÔtCbO ü“¦–ª©¥jª=Y ¥ª¥Qµ4ª–òùR>}†æ­(ªÈM¥Ï¶ßìH®–¡–¡–~òò/Ôò/Ôò/Ôò/²“ûb”Ä %±BõÅœ\K¡j©U-µª¥8YbJ J J 'k¡Bi¡Ri¡Ri¡âd-T*-T*-T*-T¦'×¢–v©–v©–vYž\‹RS¥RSªdݯ­E­ýJ­ýJ­ýòäµ_©õR©õR©õR¼^*µ^*µ^*µ^ª“×K¥ôX­ôX­ôXu²«•«•«•«OÖcµZûµZûµZûõÉk¿Vk¿Qk_ÕÕ³~b&çÊL΃™¬LægeÇ.Êü~ò¹C»OZZ©–Vª¥ùó·´nis¼¥…’i¡dZ(™Ï/ӌ閚ârln*šÜTú\õü¬äØM½—;UMµª©64U5ûYm塦æØÊÒÔR5µTMµÏßT{¤©å”ãÒÔF5µQM-Ÿ¿©å‘¦ÖÜÜT4¹©ô¹ê7ûÙšÚYV÷8K¡yléJS‹ÐTÕìçjjnŽ4õ7&4Íeij­šZ<S‹#M5÷4U…t ÒQºT7ûÙšZiêãˆÜMZAK³8–?/ù³)s¿ÃÚ?ãóô÷ˆÇÓWšÊù¾–Žn=e¯â:u[TýO:à&f*%(S)A™J ÊŠS#bø/©¥µð=¼¬öŸO©Å¨ø¡QñC£â‡æãã‡Ñ<ÉÔib¦N3uj—©Ó¼ìÈibN’yá1ç%™:5ŒëÑõ?íÄèãÂÏÆ=Âpà ŠÿSÙFÝñ#¨ÒUâ3–²Ÿ±Ð†ùܽîBCÒæswßfƒî?w¡!7õ¹»ŸÛ¿A÷Ÿ§Ð[èéCç>Ͱïõ$Z(£>¥ø°ˆü©ÃY~906äù)„íØsšDù¶ÒAåSÛaëÓHŠ1ÀfN#°/†Ë¨žRF=\FùTâøû’§ÃeäO%Ž?±/Hú~¢Lñ&é@õS ìÊhžJ>?P†y*ùü‰e ùüÐÕSÉçÊxÊš+óÓÛQ¥ÏP†=½/Uù e4§—Q›ÓçGý ó´®OÔÉû\þÔ2ö¨úÉe¤A=ÿ»¥~hƒ„<û“#}Ê& e t {²á2°SWO-#ÏO ºYŸ?C? ¢O¶»h!nÆó6!j$!†JF¿…W˜kŠøtëˆâ_ ³ÝeÍ "5üaŒÌÃh‰‘rƬ²²+ÆÄ¶LR9újw¶ìÞü0Ùì' ô{©x…'g·; {‹ ¸B=F̺M>º#2$¡¹Š¯ÎK Ó ›;â<ƒÙ†Lõš*”¨4çIÄÉ”®(è7…‹~FUÏC½-p™!«­i€&[K¬É£ê·Ž¨‘úÍœõ˜Eû­=žû-"J‹Êa^\¸-*Œ»a 4eiz”›Âøì¹Ä±™‹ˆ$•Øú&g‹ÍéÚÞ&ÌGMjçíÖIe¹#±ðn‡D|“´#‹dçyÓgš7>É‹bdjdÿfðòÍ=!3òv ÂYÄH|ug '¬%Ž&ðˆ!áå~ œ„Â\=Ð4 çš¡™ÈÛq ˜7"‹CNK‹NÅt¤'í±8ÿˆäâ(¿I¤‰F:I=½8Ÿg¬ë¬ ¤"œlÖÀ!Ø6p•¾_t$¢9O0€ ôŒzSaaeêÎÀb*ìžÉ1ÒŠ#·ÒîA¥íävOdXéÄ‚h;Ïv›å-¯]”óìvù:Íòå’•åirGäˆHízr¶â`šî'œ ö§IÚ‚™!‰«WLé3¦0Gì9³ñ3íêfÏlšÇ)árfN&~µaô“­–îBÓI:q.Ňª¹-Çn.àK8‘‘_ÞõkõúÙ'p÷2Ò®ž6‘ù@Ê©hW‘«žhåá´šIUñ¸Úy9ÝöétÑ…ÓŠ¬…'pd2ˆ€q@òˈÍÉ P ÌÍ^†ì `¢>ÇEÂôÎÚˆx·!íÎi ŠŒXÀQ @šœAã¶øw˜tȵy¶nßSsŠ¢‰d³;7(>ß´«ó<£µµkéwªsÆ<£~BÄÃÙu8û;\  )Oeä"Mhp¶íåûm·‚{˜T›eëUØ™Óy·“½[•Àƒ:ÞË­æ…Erg¬9C>f^ÁH0kÜ&äþRúGlßÑL†‰î%²Sݸ/ÒwQC¡%^—¶g[×›n »‹Æ%7ÀµLTö×L¾@ݵپu/nÖak9 W߬ÃVQÂVñÏ;4³`r:©€lÜó㨅·°h¦c%?0`ãu²’a± ’U»Áçíé»c4Ö–n¾Mïpº‘v¹¾îÉrLûTš,?¼úîÇW¿w+ÄÀ !–ƹÆY&2±§‰Ö׋ ¯ÃPM/£¹°qÀ6'ºÿ6@h à[Ùgr€AÛÒ¯ r¶íʵlÇ6O·Ûû©Œ{’0“:bùýMÜÆ`±·gõ•¹ÊϘ¿k7«vt´Óù«1]‘ÖÐ!¿TÀ,NûòYãl%©ÌzöªoÔÆ Q\aø—6ý„¯÷ä$t¤QœC„š|<%›²ð²;œçÐF4h:`!S£/vètsëÌÚK·©O:`Öå]%á]…JPŒÞÿ™êúÚ 9Éî:‹Çó—£™T\iza›º†}½@*fR›~`D_'}µ@¯Ò ];…£fº¢MÍKØ’írº ʹÈÓ µ€ÛNdØ”‚ÅiÜŠÕ!Áo:/¨ÀÃÁm|Ú­Öà³t•ÒdÐî¡4Ü=Ù®AÚ×;; ¾­XŸ´ |/Õ@Àæ8óvv‹ñ"´Dt=DݸútÐ 0B ´1îËcé ëú#è Í$ô·ã»ÑÈ´µ/«;Móg¥ƒvÿDý‰úô':èOtÐÿ=è Ý®õ:hÀ|taÌ':èOtПè ?ÑA¢ƒ~:h„JàláÊÈ1Œà:Æx¦ßÊ)oÙ ,D¼²’žÉ€Äµ$°Û Éá°ºBvš!¤+¸v“ˆ×[e’É!ðkäEÎHn 0Î'O2•j…l¸q Mn‘Òg .føÕ*ê:€1ƒ€¸4GÕ*²bBM«R|xÔó›]6{Ù" n‰ Õð["¹©Í*ü Œ©¦¦k‹Àz gÆørHâ.k$Ó—5¦XPm]S ¼¼¬Ð8%,樃 ÷´DNÜ-/±ÉéÍÔ=`2ÿ×ÔÒ{Îs$tV|¯Føc÷±aIú˜ó_«ÁÑ{Â2ZV ð"ä[å¤M,Ž%ü§*é¯n€«Á—cŠ0§J fÆ?»À{Ê»B¥×g,ؽW6…ÔLØ ÷±®¥qÍMÆ?LO 80~$¶a|‚…QåcÎ ÞªO’g åì>Aþ%òàÒ¸”@v„ã•ÐõWÈ¢ÆÆ®%Ž|‰ŸfÉú TL m]2b3a~f9"—0?³œúš×¹p3–90ÎäUI~HàHÍÎ~†f¸û D¸œÊ¼ðäÂî3xØy\æ@A^ s‰ÔÜM"˜èYA““•\(¬¹’烅uV"´s ¸ÙYIBTë¬Bã®L1A6^ Θ²Ö•‘ Çui`yßsi2¤©Æ—ÁΈù®DUì«îe¤Ž$øß2=ÓÐt&Ê©áA#¸ÁB™ZŠ–wKšÑH'•Ñ H-dè66’Ñ„C¾.8lÅ—Ó\tŠkÀ‰Q0唥ÏHäUɵn¹'Q¦È¹„ ÊeŠ4SÔÏ´ÀÏôÒï ÏA™"SRFÒβðB†,P´4€×Âdy]æ6ßÐ(*Û¤¼” OBšdˆ¥m@¨[Ý( çÖlrŒ( J$lJ‹‚Æ$IJ PÍ ±ý•@'jˆÈÎMäè²<=¡$ĈFÈEÄçÏÀ¬#+,«„»W›û\±@R£’”Dí‡ hÜ –H¹•Ò<¯ª”?ƒÚ©ÓðC­BYd¬,Sõ¹/×Yx¡¶ê!Õ\ÓDÂÕT(M’ÆH`È¥oÌ@î3ÞaY¸ÍKdÛ ÒÀ \†¤VˆÎ]lQN{+¶‚ÈmáÝ0´ueph÷æWž’rq¥´ÃY¤M#ðtØ«d’TšJÊ­²0lÂvWúÆ,¥9yáˆT9ÍBÚ½sà+¢y[å%~ƦæH!…so¹óô¬£Œ‰¼ªævZñµÌ6÷d‘SÍ L„ó¦By¬òª’IRåamW9Τ”þž¢ ª ë¸Ï¨Ü¼¤å&ÖaSáÞVFš¨éŒ8<œð€i¾&i[0kê¼~ÍšK|í Í%“[o.™¼òæ’)Ò\Ì%Cðh.™‚6 4—LKÍ%C”¹h.™Ò”b.™’ä*”E0—LIÀú`.™²ªÄ\2¤ÆÑ\2ΤsÉiìÚ›K¦2Þ\bŽ+4—˜× Í%SUÞ\2ÙZh.boFsÉÔ¤Lˆ¨²¶b.™ÆxsɈÞo$šK6%[ Ì%7Ý1—lƱÌÀæSàZ·ÆVb¹mª‹Éýÿ½©¼Íôÿ°÷ïÝ­Wž úwǧÀÌܾMvóeD¾Ý]3%ÙR•îõk,Ù]3–×, ä9 A $Ú3ßýÆ~EìÈL€IÛÕw©Ö) 2ã{ÿö;Ï#¡È©ÌB¥œj–ñç²Ü”çu€Sž·9åEV tÊ ¢5GÉ+OyAõŠ=åE„Oôá§ð”4†2Ë0„’ž+*ˆ‘ .’¡R1"Ÿ]pW™ Ï¸ü/@)Y¼ ‹LäuS²Ú€¦¸tÒwÙ@S²m€¦h;MÉ> ᪵ˆ¦ƒ@S®!ÖhÊ5$G šr ’.DS®fl¬¦9šòǶ4åjªcƒhÊÕ6 )¾ˆ¦¸à¢)¾0ˆ¦\UE4寘4å*:a–?eL¥Kn®dɇД+ 5šr$µ šra@Sž`4‚¦(f’ÑWÈC4å¨"¢)ÇðДsU@SN„,5ç\DŽÎ9ù‹hÊÒV!‘°Œ,MÙ¦ hÊ6MÙ&¢)K'ªŸVEDS¶Ìš¢ƒAhʺ: )K#£)*ðDhŠª|šÊˆ’ š¢Â†„¦ðøœsÖF4•µÓhÊò­²Äó€¦,¯6=*jFhÊbeBS\F‘Д-"š¢r™„¦¨î ¡)ª?FhŠKÑYµX¢ƒÐÕc$4%7ÌâŽØ€¦,ÏÑ”mŠ€¦x«MYZ *`JçÑ~4%?4ê!\ ‘&3õ¹‰/76¾€hJ>ã"QÏ ¤ˆ¦p¤‚¦,s„(TrÑ„ÉbõSBS–*bš²UЕ #4eˈ¦¸ ¢)<…‚¦,17DSt$ MYу#DS|HMq#4•µy@S ¿ ‚âE@SxTMѹ%4•5MÑ™£)MQ =BStÚMQWBS–°A´º‰hÊòâÝ&4…—žÑDSžHTMyêQ šrŽð )çJ+hÊ_”ZДÄ4å°ݳÑÞ 0½%ZŸêô÷ n7œïªÕÓ~™3d/à `‰U¸X ’ešP'+øKTv´Íˆú¢o2¹ó$º Øê¹¦æÏ€oXø…3ÓoÈ-<_ ‚bB®ÁÝò´^&yÇ? Èû –ËÕ4T Ù¬š“,½ÕKÑNð]¾&®Ê™Œhl™îÇâ/¢Æ‚軪\”,9WÀeˆ¼ûY¹œ•,Y…ÅZ‰¾c}V&Ѱ0Ž©24ª@ŧÂ~–·fø…/;Â. Æ8—Õá3ù«°>­­k~9ÔO®2”:ˆiÇ!X–¹&J×Ë Ç —Æ3aùÁFJ ìmrCe‹WºÀ—ËÏ}E/c±âšXÒªÿ\Ëø3‰)ô3äÏÌ÷ð¡šøÜZ<ÿÙñ¢ÂËÀYhµËÖ6¼ þs¶§l€¼Ó¶• ºmÛPá€÷¹ÄêÖeK¥ ð ‚,‘ŒW5}F@DòJPÑqáڲƚñH4ÊëÁÓœ±¢uƒR—gDpœ]E/cQZv —.@Yc}ÚŠÅó_óç.f¨Zx‘RYÁehñ„•Psòá3”n©Qm\K‡¤„’V9 %&ÉI7QòÊIáQ– AéÆbR‚ +x…½X-z+°Ôê,Kˆ¶É±8'$A L/ç-JØs^cý6< @÷<ÌÆ2@0¸\™cE=ªW‚¾ØEú! eçJ \›®tX^N Æs zÙ•(fÐÐ „^:ÈésR=$ xJª¤Ì‚~ˆ?Ó~nh ŽÿÃ®Ô 5V|Ä¡‚‹e^ —-±¤^Á‰V‚¤[ÿ•!Á{þ3­6H…£ÕƆ,m!¬vAL£,qÇÀÚlHÃÊŠD.:0X9¯áƒ‹J€Ïjž×tž±Œ^MõA@á°ÄïB+·Mª–X;“ Q{ŠÑ„­Â²s9)¶3ªYH„ÑeüÈPžÅrõPQÄÏ¥z¦lÔË•z¡QµUèÙÚP-±²Ô(c×Zæ\¢¹UP‹–猢¯Š´FÀ«°"!Ȫååü ¡fÚ*R—x`¨Ê§Øà 17ðóç#Yi''ËŠöP &‹'¯`[ •yR…§‡õþxxˆÅVxxpG<ëkù¨"ðmäÜ"ðÍ Z˜:¯ä̧b6ŽŽ5¾5žmÇ?4rÚügX âOÁZØÐ¨pI'åTu¼Û^H¯¤ú%Ëè<5<ž2gªþX‡Õf)”Èt,6[,æI ‰²8‹%ÖWl/ÑM5YDSx4U·MQÝFBSuÑTÝ*4U·MÕMDSuÑTÝD4U7 MÕMDSuÑTÝD4U7MÕBSuÑT]G4U×MÕuDSu­ÐT]G4U×MÕuDSžû4UW MaY,)ÝWE4UWMÕeDSu©ÐT]F4U—MùÏMùÏMñß Mù/MÑË„¦ê2¢)úL¥.š¢V ÓÔeDSþt4U—Myá"¢©D)"šª‹ˆ¦ê"¢©ºPhŠ¥깈hª."šª‹ˆ¦ø³(}#šâψ¦ø¡š½MÕ…BSº4UMÕEDSuÑT+4…Ù@eŸóˆ¦ê<¢)/84å)@DSµ‹hŠ´¿„¦jÑTí"šòø)¢©ÚE4Eò+_ÑTí"šòŸ#šªmDSµhª¶MÕ6¢©Ú*4UÛˆ¦jÑŠÚŒ¦ê,¢)ÇCA×,¢©ªhªj#šªÚˆ¦ªV¡©ª‰hªj"šªšˆ¦P‹ ´Qh ÕBq›ˆ¦HïJhªª#šªj…¦ª:¢)Oßšªêˆ¦ª:¢)Å@i䑳D4åGÐTÕD4U5 MUM¥^ˆhʯE@SUÑTÕ*4UµMUmDSUÑTÕF4Ug MÕYDSuÑTm#šªmDSµUh Ï*£)´r0‚¨óˆ¦ê<¢)¼m‚¦ê"¢)TxðVÕEDS~î©K…¦ê2¢)ÿY=ÑT]–ê…¦<éU/4ꡈ¦ê*¢©ºRhª®"šò\" )&šª›ˆ¦êF¡) šªÛˆ¦¨L2¡©ºhŠŠ3šj²ˆ¦š,¢©&‹hªÉ"šj¬BShª±MQ)]BSTŸ·àR M56¢)„šj\DSM-àsDSž”4Õ¸ˆ¦ÑTã"š¢F™K6.¢©ÆÅ»Ý¸ˆ¦üèbm«ÐTc#šjlDShŠ 7š¢êÎŒ¦¨ô3ÐÔ— ®3·ôÑV1Y¼h¦áïXÂgb³`C1FËzgó®‡Nn5s7I/OeºÇwnÁ“ùÑéú̃NfóÔûT3Ê­„-~*UüS©â¿g©âŠö ÿr‰MúL+JϼfßcËRª¸j_?`“Œò²RÅTîÐå-—{D¤9㲕ˆƒ©Ädk+)É•§lŠXž±ƒ”¶tT˜ÊžUžRú¹ô¯ÇÇòŠ"­Xà°ÂÄÃ%>¬,+ë À.iðÐ^ÙÐgþ>.ÔkU¡^*MÈEúhèKõœˆýÜú×ãŠcyE‘Ö,®@‘Å ÏÔ:•Ÿ¦Ðóã 2µV•©¥ô.è¤/ÏZØÏí =®·X:ù´t#hè3µÎ¥‡›XubJµe,ØMïr±7úReÏ.ÒJ+ö¯Çõ+@%Ÿi¨tec¹j–bŠ8z~¼TžÒÆò”eK˜¦Ÿ¹\õóV ös;è_ë-VÀ¹H ‹”йHq¨ð.Q"ç¦)!æ fJH ¢™‹ºðÙHCÏJFî"%Lû×ãz JH™äŠäê¾åêæ'(¡U”ÐÆ2µô.ë¸rsöìbÍL’þõ¸Þâ Ôjjµµê©V#¨O¬@©è}nXÓ>³ êy+P«Hû×ãz‹h7l7l×i7jNpÃRñú\×¥¼KŸ¹TñóV QÜ0í_ë-V€Š  "èD¸˜;ÙYËx¹°ûˆ `:€Ÿë’ð@>ièYx Œt í_ëm‘ZE KEqJE‰Ê”ᆲ'ÏäÝšeˆòù”°T”0í_ëm(a\¢,´\Î['JD#àÒöcTÜ(T ŸëÂ…²õôY(aûqJ%Ñɯ)\ Ÿ…´ÏãqÒþõ¸ÞbEEußu›t Tg€¨Yð¨äðrƒ‡þÞö'qœ0qåO±gôw`2mCd À“G‡Dý.‹Îs `D@Œemð±u9gÿ²å–’˜âY+l#mÿ²#%¢n'¹ S_ Ñ®ÉÏ3&éx¨¡™FÉtß #Œ_d6~&=>ÃbJJ÷ tˆ§aøC†ZÐ. Ô x?Ãß-/^&îÍ–AÒð ".^^´QˆÈ-¯6œuK­bâSMPºp´x°m¹+hÿ+áâ: ¹%ù¥Â£NÚO”œ3–4€Œg,¦èJYe`Ÿæ\zÚᑨ¯‡"ôq -XiáïÍ”¶®¦žAÕBX’àPÊIºDE¬ ‘eÍà ÀóL§¨–«šš4¾ œsþŒ7‰DÓž/ébp+b”:átUøÿ¸’Íà ³2Î|É\6ÇûL« ²+ìU9šg#Ñ*ÏçeÍJ[Ä¢$vƒð⚊µ~¨®bE­Æ‘z¡˜sÔ3@1çH׊J[Gâ(.šY‹®­¤‚hM7$f ùXJ…œy:êl“E­­Y ±þÖÅŠÒ¸?êTÔ“¢`¦eí¯ª —à“IÏ 6d kBZøLšÝÿN½Áf ëšá™–î3ü—E‹ :’Þ,ÏYRrÀèè>#޵,±ðÃnÂj[:ªpü÷œ¶Å²ï?³f°8/RŽ" 5¯ñï´ç5þ½æË0ÇVå‡*¾€#b-Š»@ÉÜs­Ò0ÆŠ‡Z‚ c ¢h‰ª”8¢œ^.±¨œaÂåU…[ÈIò¸ÚˆÜ+yüSð….:˜¬ z ÿ¹òä?ÊqŸm,ÕŠ¶a{êª Šúº‚#É/W"ì!j†ËÀƒ#冨¹Ò ­vLÏj 0®aº ’_Î=ÃÁÈm%$ÖåLnaµsVòxJê`‹ˆz•l‹0OVø £+ ¦ž È3‘„Ý)¡ó|@D4yMyw“G@ЀüÊ€ Ù  /è3-,}ÎËøY­"   ÕsÍ E@€#e@РÔÉ€ i™Ac# €ß4X"uE@ж´ ´6‚¦Ž€à[AÔ €˜"€€s8?…•Àß ŒÇ€Af‡ÏudÑø™AÑœ¥•0Tµ‹€Å4‹½5 4M°xÚB‚¶€ Q€ É" €m@à‘sp4€ 4€å4uA«AkÛÐÒÅ€þ$€ím ZЊ hÛF‡1&+þ²:5Zúx ” ¨AEÁ€åZþs-€À£Ò<¦¬/ü@Pic@àiFµ…3Ï€ FVD€ é‚A 䜦6a@à‰Rµ#IÎM!€ †“É€ÀKÑ‚ôjÔÈ~Ô92þ–Eíê±å„F(^ç k%€ F4E€Àùj … PNg@à?×¢S !°ñLzn ð­Z5è7bX”© €ÀϧºFš§Ì?‚:G]#)¶POÇ€À¯j+€€V›ß…Àekç÷¥mc¶ìHàר a>î!zàï5 €ù~ÿÒªŠøBE5q2êÌEŒñÖZä ¬*" hqD ZìèÙ4¸…Ä4›*¬¶¿çE¨„g@ÐÀa@”$‚F‚ª:pÁä  ¦4á €#$¼&Ànø @M¸‰Ô ¦@«-€@S@†à< £c@€† Ì{ à‚ÇHqm•¶lK^p¿N¶Œ€À–EôÙ„/uü¨/}®ÊøY…†Ø:Æ=¨ž]-€À_“\¥*Plθ?d¹Ë‹ ëd]uE%€À:›@`-³b*­eæèw²t€ÀÚÌ °» °¿àïˆÍ˜wû)úóÖ —m›Jð@[´…4Ð2$ñm5m.X ŒÙΚ""Ææ_·€ËÀºr‚jjÁ¾PB«’ÁÕe@5Û'ýôê&ü_:ñ‡šƒ€ûÃ>ñB5Ä÷ã™õ7M#œŸ]–à“¢w§-kaû-«¼qÇ3LëÛŒ„qàúÖ®o-]€6äa®ïw¹®oYª®oYƒ\ßæ´@ЩE2s}[0¿Íà3 ë{Ðg…ë[f«ÀõmÑF®oËÌ ×·%qàúþ0çÂõ=ß \ß‚­K¸¾¿ ¹p}[2öðÿñ÷Ñ ×·17àúþÎVëÛŠuážY%@³-dœö¹¾…•®oê ø%˜„\ß¶Eàú¶­×·m]®o[b%Àõ=£\?#³%r}¶Ú ×ÏXÍ\Ÿí¶Èõ3¹~ÆL¸>×åB®+¸~V¶ëg €ëg4¢×·Ò3 m¸¾µMàú–Lµdÿ#ûr}±6"×G ó¤•G®Ÿ‘á¹>ñ!âú°¿ëgl0ªŸ‘¹~F¨¹~–G®Ÿ9Åõy‘ëg¶ \?³EàúÕ€ëglmD®~(â 8"j¹>w€\_zF®OC"®Ÿ‰iæ_D®Ÿ•‘ë#O®Ÿ‘ ¹~ÆDaÈõiµ‰ë#®oY€D˜˜GnhóÈõYé‚\ßÚvšëg,?å8Ô*pz!Úø9k×·B¶s¼•p}1!˶õm—'r}ÛF®oYBºj¦±pÛšÈõmãÚÀõý] èÆ²Ï%r³š-Œ@’j&’ˆt`.³ ×Å«p}ÐÎ ƒùD¸>¨ó…냚?p}þRÇØ¡?Weü,‘ësªgW‹]@¸>Ž”¹>Ø×»€p}° ×u‰p}° ×»@äú™\?S\?k#×÷Ï®ïÉEäú°âÂõâú®\ßóƒp|ªÈõ‹ÈõýI®ïG(\X½I¹¾'Âõý”…!ÃGæú¥›äúEäúEäú~pÂõ]¸¾¿`ë{’(ØÈõ=®ï§)\ߟÕÀõ=´b®_G®Ú,¾'°;ÌõAû/\wœ¹>(ÿ…ëƒò_¸>(ÿ…ëWšë·®Êáú  ×å¿p}Pþ®<›¹>*ÿ™ë£òŸ¹>*ÿ™ë£ò_¸>*ÿ™ë£òŸ¹>*ÿ™ë£òŸ¹>*ÿ…ë£òŸ¹>*ÿ™ë£òŸ¹>*ÿ™ë£ò_¸>*ÿ™ë£òŸ¹>*ÿ™ë£Ù6Qù/\•ÿÌõQÍ\•ÿÌõQùÏ\•ÿÂõQùÏ\•ÿÌõIùO\Ÿ”ÿÄõIùÏ\Ÿ”ÿìûžE†FÊÿŒuùøJuQùÏ\Ÿ”ÿÄõIùÏú:Tþ×+ÿ­ôl×'å?q}Rþ×'å?ó!TþmÔ´UPþ3C ³Tþ³ô‰Êæú¤ü'®OÊâú¤ügVŠÊf±¹âú¤üçEBå?1kRþ'å?1wRþ3×'åø¡Š/´>òŸ;(×'å? •ÿ·mTþ®ïé@àúpÛš¨ü\Ès}˜§p}äfµ8fëƒòÿY\ÿE9(ÊìT¿xÁn9’ ý=• ™Þ¡ÏAK«^ŸzŸj •ïíì;ѱü6fâc[Š1d@8Jщ¤Ê$oœKe]*¥J`Ç zJ»é9mÅKãùkß¹Õ¢ŽI:y*_é‹ê­Äæ^t´Ü‰£5û£¿FEù'ÿÿ³Ã2T”T#ÌÕs5ÂüÄgü‚-u£^bËþ46÷‚¦Ô€M2Ê6U¨Ì¸…ÊŒ[¨Ì¸EùÚ¹S/F7÷º›d”/hÊ©Dð¾Å³É_xë]{æt>¯§Ø8,€jð•Ã6éPŸl,Iw›«ÊÙ¹ªœ« Õ¹ª\Ÿ¨œíTõtü\ÓÂwkÆÎùó+gçªrvÚ¿×›ÔV K•ð·T wK•ˆ·<‘ð©(ׯÏm(ïJ Õó—*pÚ¿×[¤<¦}§ ó@+@Ÿ©uÚ=?‘ò¸Œ+€Ÿ«<ž*×g zÞˆ+ö¯Çõ+ÐÖª~|­êÇתN{­ê·×Ó·Àªêéô™x.¾Û0Ï䆞U?¾Võã“þõ¸ÞâЬé ÐjРϴ¾4Úz~âXu ðsåJy—>Ë TÏ[xÒþõ¸Þâ Ôy\:+@Ÿ©u …àÐóã(Õ- Ï­+å]úÌ1Ï[ØÏí =®·XFQÂFQÂFQœFQ¢æ%Äð[Yü܈_´|6ÜгV Q”0í_ë-V ,#À˜X¦ø™ïî)ßC|~‚ ý—úð¹&"¾KŸ4ô,^PF:ö¯ÇõtÀfm\ÿ%®}áü—8 zgj¬ZüŒâ>¿Ý°ì/m=«@ìêv4ˆdxo±E×¢ÈãRàgn½Èãðù)pÔ(pŸk2Àã»ôÙHCÏY…ØÏí =®7YL­@¦V S=ejÙ‰(Õ à%pu)ïÒg# =k2µIÿz\o±µ:µ:µZëZíA}â ” ã纎l> [hŸÇâ ¤ýëq½Å ™¥ 2K+€Ÿ¹u"Ë4|~jÔ BHÚb|—> [hŸÇâ ¤ýëq½ 8RBR«„¤V #­RÚBR©è~Æð`~—>ièYàH Iiÿz\o±UW *â àgnº<|~b ñsM‚;¾[³zzÎ Ä~nýëq½Í DpD«QqRBh%û¹ŸGN#<µY\*Ó+P=o"8Jû×ãzp¤åR Ê¥HK%¨–Ó+PÄ@ô¹ÊêŽè³€£ç Ê¥”“þõ¸ÞDLT‚r«åV ¤­T[ûd$þLJ^|·dÕlû|A¹U‚rÚ¿×[¬aZ´ô™Z'~L# ç'TJDÀÏ•sÐgÁÕóð@\´=®·Xë3ð_@vŠìú/ ›º !¯@FÕ}[fámúbB[ÏÈNñ„á ’á½‘´ ê‚eº0X¦+seºdWv¢6.€¨ð32÷K®dÆmUÏ”TÙ°Á ’á½ }T8©T8©Tx¤T8¥<“Ñ DtX}tá³(Ÿ'<*œ”ö¯Çõ&ÇÁ)É…ƒS¤ˆ%ï„;A$‹J± üLá9ô6} w£zæÝPÇa0ˆdxoB(r%;ù/ŠPäJJñ_ÔÍOÈO¸r&àsM67z»fë¡´õ¬ÅÈ•5D2¼KNÆg?ß=ìûn?Qr1Ôò‰¡2ͬk®k.ë·§™õ4Í<·ªbå×ÂëŸ"òÚ[2ö¡<Û×Ò~özCzÏ4}n#í¯Ú·<>ŽÏTåØ3T… µUCUtôÌ›5¯N µx‚*óP‘¤ñPés©òÛ©ò¥C-ÔPk5ÔZ µxÁPÇTŠ{©Ô1«Ô1+ë×ö[¾%73é%½¨_ÚK®z©T/•ê%u/ê´Wê´Wê´WÕk{©£+*YݸúÜf!ôu½”ª—FõÒ¨^ÊW÷¢|Ëå[Þ(ßòºym/ºÚºÚºÚ}u/êV6êV6êV6¯¾•º•­º•­º•Í«oe«ne«ne«ne›½91l³ÄО&†­ºÚ­ºÚ­ºÚí«¯¶Uʧ”JDϼ-d³'”çÐ¥U’S’mù™ú͇:„ë3ð@ùïÊ}¿P.ñyûöð ½É´:Ô Ó¡™lûöƒmÛËB«Q«‘ž¾o6Ôê± ·/~b;ºXÙû¦˜1Îé1Úx%°a¾ô¹Ž¤Wâ²N(¨'SQH™ŠBÊURþæ÷.w£EÏÏh ¢>øVipM­Ö¿Ù½ËNP³ú‰¡Š *W*¨\m]öö*¨lššåö aGVµU«ÚªU­Þ~U«éU}r¨²ª­ZÕV­jõö«ZXÕsì,sšò–šò*Ä«Éð›]­Ì hç4&™Â´Ö*PË_d¼Íß`¼ÍåøI Æ[èñ*|¬ÿR e ÝS­{ªuOÅÛ¯ ZY/ÝI«°6èŠâx]¦Ç[ÿ Æ{JÙ’Q;ÅJKÅJKeàr¯µøê:ê6ê2¯? u‰Ju‡”†ŸyU/JÈ-”«ZÖózÍŠ ú(ú(•i½½iÂÐ÷Ÿ³‘–ê5ê5ê•oo#-O°°ò‰¡Êª6jUµªåÛ¯jy‚…5g‰Ë4!É5!Éuœò«õ\ªqè©Ò=Uº§× Ä®Ò=µº§V÷ôj}W¥$¯Z ^JÇ¥5l/Uª+.ètŠº·Wÿ:{9ÇvŠ:ÅE•Î_û͆úš«ƒŸ«sŸ«cŸ¿úÔçêÐçêÌ+Ë‚îñMÍÔòh`o5TLamß–—Ž7ñ‰t*ÂÔ©S§"9Šðt'"L] ¢0ü³<@Š$MûÑý¿‰£¼Š&.T4q¡¢v Í[œˆ&Ægd¦Åó£† 5œö£û¿l¦/ó”sþ.OžæöÁY‹™Lñÿ1ŸÉL—3Æ‘5ªù;ª?êÚ·mËp½u£!SÏÛÎ> ¦è7œýÛ7&½õ’¾u£1Ô[Ž4¤lzÓF!ÅYY¼í1 ™ŸÞºÑ·™þËhRöNAwB˘: Ÿo£œn£¼¤fºæ’6P,¬^7ŽrºæÒ¹L´Ñ^ÐFUc] &´Q_Ö zCsAe‹éÔÚ׺˜n#¿d°µy9šKqérL´qÉñh°øå¸ê‚60—¡úâ6²×ï:¶=™‹Ûx%)Úײ¢z=±Î¾E#Åëgc]ý÷?{ýlrûœcöB|Ü<ÉX f[6‚a6¿ˆŸhä"ô’cöâ§tŸOò',dŸŸ×J>Ñ$ÏŸÀ/öêQµnr:Oïêÿë+wøòniösØì~¸Ÿ¯;/ýGÿ§_ì·ÝÝÑÌþ^¹ïý•™žÄdùl~õ¶qí²Ù‡+gvíÅÈW¿ëÞùnú»õµm͇«ÝêzsuÜtþáï×+øËZÞ]_¹ìýµ_ÁW¿î~¸vÖ¸Û]ﯖòûë;sÕíý¢;ø¯›ùõüí Þûàêº;ßì|¹ì–×8.›5³Ç«ùñÚU¾kêÕÝ?î;]ñ°…ý±ûÑÿåððáÝ|¿‡†¯ßÕþ¥›kWÀ ühú«nÛùð?þEÕúï¹ÿt»¦. ýºîïî`phPÓᆑ—3ÚZ5ï¿L Ÿß-i-xÔ~îóMäþ¾}ð˓è‡+dx‰îaIçG?N¿^‹Ån¿ôÛB?þ­÷4ÂÜÖ~„¿æÕw°yóåÇù¢»[<úlû®Âqã'º¹Zì¶K¿w;øö]f øo矼ßú—â~™tÃdÁº+l'nŸ øƒâ8?ˆà½þx¥Vf†+cye6W‡ÝmG/Kk«};b®÷2y<2ûîÝÃǰÚí}Ÿ´Ûq¶Íö= ¤t•È—q³6“ ³Üù/´ûîÏýz¾ÝÁÀ)0kXbO/üÞÀ©“=ßnýŸÂô×ÉÁÃ1T~Âzý˜èõWwó[x¸õÿƒóÜË’ðuò“1 b•P~êñªl¯ïgÝîÈ¿ï¿õ÷þg³ bFÌ·Ý¿ý¢_gàÃßÊvöÁ? §$÷‚ç|öÕñjÝín!(ºÌÈÆcg_}qõ¹ìÞ!ì~ÝãyóÇVŽì·°®ô' ×b§&ìp/~ôËùða Kx¿÷”çÐïîüáÈ9òšÚí×ó»þ/t8œ²… úFýD? Úí¯¾»º¾7_Ý_ýèçï‡üÝõïÌŸ‚%þ2ƒ_þëµ…ñ?^ä $Lþ¡.¾ºú¯~d¹>ÒÃÔëñá~ÛnàTÉuó=wž8øÅ[ö·w  ¯¼§»ûód¡p"uVø‰à…£ëˆŽØú ÏïÚ§{¿~]ä|œïæð—ëOÐvºú×®ñ­À‘÷kW²÷¡cæ—w¾:éwÔ7õ±[ýTòlF½Ò=÷c2M†‹»ÝBË )ï¯KÚSÏ\|ÛþTã|ð ãrœCñk›ww}µÞÏï7¾“Hä6ðfOoú3²¾Šý©…õi¦êÃx{õÇënïRÜiöÕ­§PYv½‚‡z~ï'{ËûµáŸsúYö¦ƒ®ÿËuŸ¼rõ':57´4½¿ž+éãÄrÓjãWƒ_Ëàmf›ËF¿>?úN~E£ßèWV3ú›Çò÷ð÷?á$àýŠ—·ájR»®„øâÊÁ-™#+…IoèŒá<,Ðéñì8u£ç¾¹¯†S¾—)Ó–Ãõ1g7¬Ÿž2oØGýÊ’¦üÑËȤŒù¢ò¹ ·}Ä»D<î“…úšròé ]ƒ[ÔóîÐ/ýÅZ¯ðí3‹#¶¯:3Q¾Wˆ¸6)¢AŒOó†F‹+RäKÉ¡+®?&ïÁjNßÏÍèd›Ñ6§÷Rº›¸—šfv³³÷’Ft<Ðâ–……¹Àý8› B“·smN]ʉ¡¯õÐï }†ž\+úÔ¥ìáR<¡¸ Pvü‘Ï)Àãäv6³x;?º=ãDu;'fŒ°i8iº–æüµøÜIã À¨–\,[ÒÍ\Q¡³êŠVáŠ~LæÍÔêŸüÃ9a3ÛV-ôòpÕ¼wïËë8Ï~n‡«…ŸÅ'’Iüô»=pà0¿[?[x‹0ãA‹áïÆ§k—«€R“kÍ¥'–å7ŒBáªuf]zÀµØ÷ˆÄ–=À…œßHñTÝWÎ!ʃ?^Ý#Š<÷pœVéÔàv¾ì5"¦øæç¿ùöçÿê×Ðb…]hÊϯ˜}?ó˜à‡«_{hˆ[z`Ôé‰ÄÀ逫™ÊVWÎùå€ùõݵ«eAhùPXp9 Ä­¹3é‚yó1••ˆ`¦vW‡ãþaq|œÐ_õû}w¸GAeqìåy„?l:ÿޞĶǰ°‹}‡;XÀõöpwKR(oÊê Q=m 2.?Î.ƒd¡9Ðìþn‰$×/(5ü±±„Ó2aY]€åòcA†)áºzØ¿ î˜I<öúÜçÿ•ÎLÂY=ŽË‡Þ¼øB°p.¸{<0@7yÝ€íá‰Ùw[& €q[žÅQAA¿G„n»ÛÝþ€v`…à€²ôÐuýÁÄÿ³ë¢ˆÈ-¡Ühõ,DL³_5†”0×(j%WDZ¢1þ¥õ|çWÿ‚ðTÈR8Àp~Eè\›x¼–4l¿:žúÞÞ?кÐÁB8€Çô¾  â‘Âá0C6£€ºŒ4úVhèšisÜØ£™Š[f§DØÂ¼gjÞ^0„újÐ͈Zü Nm—Îv£f«ïOÖÓ0[”³ª —Î!OZj¦ÒèÖ ‘ó®×º›Áñ€kü3¼9T¤Evs¦9¦K%ÓÈÚf·E‰¬çf­5ŠØ†µyçg¶ôƒ:îûß_·- =@Ÿ=)sÀú+º]Ÿ®«ÀªpP¨7£Š?ûmÌb{V‚ÅqCz :îŸu>¹¢æØí{/ Ê5<*8‘ñ½•4°¦Q}â–¼‰qZ–rpyä–nð!ÔÐôÈ1¸%¾D(ôÙƒÍcyÖ¼$¡lëññ«Dí ÷HáwGR8åuÖY•>lYcùé¯ï„…ì¨1Äž˜“Ž8›UؤÂêM"™m%“XÜ¡•#Ÿ?ûé´3Þ˜ûáÆàjµ ¾É²,ÒîF ÜÉmä¾Ð’zª/²î:!Lj{»0X¶"k Z¶Å‡í'ÀE¨‚±MCËök­Úˆfûp gZAŽЬïô&ƒ’Y4‹û~þaÛ€zÀµé™éê@ÝÞU¤}ˆù;>À Cê~\lµnü8Qc{ê´¾¿®,¢@æà U÷/¬G[[׬ 4 ´ô/õBLë’É&BÜj&úžù6ð~XNHæ # Z‚\DúÁ¡€éqÜ‹ìä=‰‡¡ø(ÂEOúXÕùŠ;ï¡s“ 5%¶5·…@ǘÑ(ž¬¶qŒìQ5 ÓÞ²Q6)9g>ÄöÏ*d^dލ»¿нëq `mÀ†²ßía&?0ùš•YžïX>¸G¸¸“€œ=8;€¹¾ó±P ‡ÆÃùþ/¢}׋¾€a#­>¯?Ñ‚š¸Hžh PxöñjwÇ©r‡$p.Äf•h¶a2$@­ã`Ø*±B2F Ë[d`µÊ*¤òù-œÒµeÔ{ Vÿ.b”•,ØlÕ—ñµã¾ëäB”eU G°†Í‹în9gõ>ÏEs7Äû“äh-[`•Ýý|??ÂÞ.±ÿ÷Ô;ªÖcúcÿ'?X#üs’ãØjÎB×I¾!š#dWÓcÑv†*#;ƒIì ÖÿÚ,˜ÄΞróÙ?ãObzÌfÿ¼Ýþhð?3HäüÏûAWgyU¸Ù?ïègÿ|èŽü–ïó hD¬™?›þ¯ÕÿµÛxßÝÌüŸ~ûͻϗ»Ý;÷>›}ùÛo¾‚þ¥oûã¶‹¯úµÿãÏAøÜíæS·ì¾ŸýÁcDfù{7ûíü¸Øl»ï»í¬gýo¿ðòÈÏfßnf¿èϲüg™ý–ÎàÁ¯ Á{/å­=ýçín1ßnv‡ãìê+™»þ0ûí—¿üå—ÿò»¯ýõ5Lg÷pèõ‹Ý?› l^±ÐÔ¯æë»~Õ/°ãŸ¡l–‘5÷ç»[˜þÁ|†&_\xp9Y‡e·2ñϸèêûg·G¿ÌÄfà›Ïü¹xgg .ÿÿÏìƒ?KØÌghpþ+X§³™þßÃ~ýaðœMŸ³§žsòœ=ß^ž>w²½böWûœñ•és'Û«ä¹'ÆW§Ïl¯®_YM>ן«ÚéumHã¦Ä)s|Äž¡u±EÜé-Îãƒ0ºÓñAÝéËa×'VÇ‹´ƒ®O-O=ìúÔòàÆÄùž#îLœïÉîLœïéí°ë³vnØõ‰Y»|Øõ‰Y;Ü™±ç¶ÐáÎTxz Nãôƒ¸35>qE§¬ã ,ÃÿN=ØÄið¿S¶ñAüï-ÉâƒM#ÿ;õ U'&ƒÜï0ÿ¾3wÝèåÉ6ð­ÛÝ÷Ýq‡TbÁüG æÉxŒ¿.¶;à²þmˆòšqSæ]^yÞeÛæ}=;zžqUœa' ù¶3~œ÷³¿†·õºÕì¯ÝnÕo·ú¯ëýì¯ë}wð¼®Kþ~ð‡iè?泿ÿ¶÷N¼¿ý•¦¢ÿx;û+-CÒ€ÿë~üç»Ù_yÖÉüŽûݧtXÿ×Íî‡äoÛ…ÿcw„A,æ÷éOÃOwý]úÛá·úå s¿Óø«ÿ¯?»}2ÝÑÏcwô’¼À­Iþ¸Äf–óCÒþÊïÐÊ[íîŽÉã+||ôçÅŠÛýò.“G£9ý~‡““üpçÇ¿|¸ŸÁÿ/ö{!džf6+fïÜl¿Ûnñw;óÂåfvxø0Ëáðá·ÛÙ|¹üÛ=LWÍ¿¢·~yrÔªeh ù–ô ¿¯»GÓw DLž rš}ö»îKÔ–Ý쯳ø¡¨Ïü‰Ÿ^Ì?Í_ó?ÁÁŸÕ_AöýÙ„?SÛú9I£³äùÛùÛÎ f›÷’ßÿÊùåú쫯á)‹ÿ~Éù#3ëþlÔSÜØ£g‹ÝýãLúÍg¼=(Îþygú×Y¿ê¶‡ÎøëìÞøõG/lyñÓÈ»Ÿ}åÿ÷×0c½pÐÐhçÛÝ| Íë9ƒ…@4ßEh(LjÝi|Ÿ½¿Ûaýh\¾g3j”çìfý²ÿþdsƒî»{/=byÏwçé ~¼'?,ÿ<îuð„o1û£iþ—Ìü³Ûþîá0kþÀëž6{Z‹_ìì³ùÂK‹øÅÍ>[ô{/ã¬¶Ýø—|öÙ±ß.;_ ßÊ|±÷¢ |óm~ØwÜL5ûlé)Ô ¥GüCíÿÐwž|÷x×ãÀÏ€jÀo ~¶è–ž]Ìñ«ïuóp·žïn·ó|Ý#¾Ïvk/ÏÂo¾ãÅÜ÷ -y|]m»Ã¡‡=ýl‡ƒðLô³ß| ÏxúºíÁŸ ÿgPXÍo—»pèÌ“ZøžÇnïÉò_…¾ð¶/ñw?ÍÇŽ^«`ÆžCÜ}˜ïñ~’°9ÒŠ”Y:çæéõ¾_o°¯Ò÷»Û/Wß ¿kø'ßýúÁ/Ew sZÑs~ ÛÝÚ‹`[¢°)?ŠÍãý†Rúì=e€qwKüK­·¦‚xI°Ã.¼LüÙýöါü0Ž?ì ¯ÞáL*Øç!ùc¡ÎFGè?ùÞAJGå¶ç;Ç·–°¨2¤:Kv¹ö£ðû©Û¯i9nç‡Å±Ãßôz„…« |ùÏó½oÿRâ_6óí _«xüüôÚëÏ@øýá­‡¸„Ï>—ÓŸÃéÿ§hà›ÏçÉùÏáüŽ¿ùa|.;Œð£ø|O'¬~Ÿ}þ%þÙwüó8÷ÿ—¡S8þ_†Náô™v ‡ÿKÝ œÿ¯ãû¾Ó¯ãû¾×¯ïûî¿ÖïÕù\ëýGßù¯Ã„<Îÿì7Ø04åÁüg¿‘ Ï=bÿì7iÛö›ø²ïù7I7p¶Çþ~ûíÁÍüGìnçïÃ$rßóïC_¹ïù÷±/|Ùwÿ{Ýzî;ÿ?â¾óo7»=njî;^wû[Oe?lña ó01 óð*Üþy:1 ó01 sÝ5Ѐ¹l3P9=ç»]¨m†ûß…ÂíïÂ6ÁÕïÒNáêwº¸ö}|ßwÚÇ÷}¯ýà}ß}¯ß‡kßÑ6ÿ ‚ ¿ «w}V.ù.m®ú.¾ì{Þ%Ý iÿ¾G¦Ã5ß…M†[þ¦ü!ôWû!Ýd¸×ºm¸Öñ ¼Õ¼Ép›åÙ?“"Lòágz3f|‚§$êá‹Ýv9SŸÏ=KúËäÓ³ÏtÐø_Íø U²ë­Â\ÿá3t ýõqïÁ…úþãàûcòcÒž_]Ö£¡N±)ÿ Ÿùqöè…¸¶‰yYÄC;Óƒ‘±Î÷ ó‚`gþƒêÀËôÉü‚¬ùCmèì¯ußì3ŽA&ð ,3h ÞdT"¡"ünò(Ëz00î,öe,ê o{dÕþ?Ry|œÁÿ. ÈË«>𿇅ùæ?ξê׳ÝðC>ÌÐêÿþùɤ2;UaËfP’³ÛAjZ­á3~ò 'ƒÌ7° ^Ð.fõ, ·?dá h2<ù¼Í c?m“gO¿€Rã<ýBÈË3‘•ÈÁòRzE0¨"ÃtåÂQYE Zÿ¥¦/ þÒЗ¶‚‚{”^Þõ_,V ´Óè|Áæ<Â/U«~iêø8/5-ÀÚ…ž€„1äzt@èpÜø¥†^-!¯¡§Œ[h …¬¢/-ô”9Îãè_²mÃ_jø’S …çɹmè%¨pì¹.?);lÅ_`²¶äÇrø¥ xÉñs4g-ñ žµ<ÏG< à_<‹ðkÑr ¾]Z þ©…41Üœ§ÿ¼éKî¿äòKá¿Ø’[ð¤Þ5-7î)½k*«§ò4Qñ‹åù©¹º‘YøN<£E.jpÎâ=+ü˜]Õ4êKÉC­!âMv³ð|Áq%Lÿ¥€,"ú"ÝÂÝ)¨§ÿ⇠þ0Ü|“=ó|Âå2 ¿'p}ñCõ«¢¾xÆH-4à7éx½ ¹jþâÇj+ùâ‡je%ñ‹•Yø øųh€”Òœ]–óÀýzx™‹—«iAáVp ~l[rOï§Íù9?fÛfÜ\ë_jz¬ôøÔšZ€LA¶)ø'¿n¶á)•þ²XÙ@LÿR·4 Ò÷áO.Ï¢ôØÈÖÿT—’vœlÍS/…ìá—üt-Ÿ‡*ƒ—2z©ò×Òß„8ú…¤åÇô+U<µà•àÿÂwŽŒ¸á̤ »äžjÔ}›4‹Úß A:øÅÙ–²’`8ô¦Ÿ©üTh%O,ü”i ß}¿2ü¾“ñ )n=üÔBR¸DøÅŸ]¼­’îï;~%Ad Ãf~#ýI©é'?2OŽªï “-}'g€Æø¥‚ÇlÁ¥eát8:†„dO+è9ç“ută֕üK _ø^8°E[ÇéÂ25ôW¢Å‰ÑØZ[SG¹?º°qÔBËïçŽ?°üžøÒO€ÌÓ—~Éø1mÖò,à:Zˆ³ÅŸüU°YÍ-ÀÏ*ùÒŸ¢/¥§öž•щrxª3º ~žÀ|¬|A¦—ñ—zÖ6¼pøÛšp`.ø³µy?ólJÏŽ8qýÐðºãç* 5¼0ÐA“ÇžÙBS†”Ïj¢†8‹ºæ—ýôøÆ9¸Îu)+ç—¤.ʰVuΟý¡ª]ÍŸí¬–MðtT®¡Âéjhwà³åm« }ö VmöL<ô²o… 7‡­óò+ZñVî¯è‚8\*&!„±ªnù̵ñ34D,ÒÁA–¿ƒê?㉅á5ŸòØh€¤g§Fþj8R¼0uEsÀ«çfaxY¥.–ÔñÊ!YÃËHDN.*|)Ô†?†Ë õ›ÃµÏœlÁ ±@rɈmÛH`<Õ¤ÇóH!JHªs!XH·#)óg#9 «'äÏB´<Fh¡qB4áKÉ©g$‘ÐúÓI°ç„Bœ‘áX!Ü¿˜¤{Ö‰½gj‘ xF) o-Ìod+¨‘0‚Н“Bø CtªX\ÛÀô@3Øaž £DPl…‰ün{ý[`¼ ‹ ,Ùå¬Ú[aä3JEX­EŽ_ZnHÿdA HÂt‘ìe|8š ÌÁÖ@ºB¢`Ìs$œŽ[ðG]´’¹C]!ë5sLCɪL<âñ9T Ê*7FtêoVÓÆ1Ø0<¼sQ•é1S²E‰<®<6Š?9ä –/4j/¹mReZ¾÷ð…©\Nl‡(ržážUü¥BU& à‰–˜Bž¡’“á´?gp˜Êµx Y(ká<°*ÓS¯&pUºQ“É; x9»ž‘CúkÂRä'ä¹AU&’’'L'/eüS†×¬fŠ ªL–Ïj¼ÐÌ<êÑ·pÄ“„œAͤY„NX`U´ö árˆk ×p‹@ 1ól‡E~ 0LòlÁøæ¬cé9ªåæ [Ë› ÿ‡t@Ú| °¡¤-"º ²)²k‘³I‰«¤tdé'hÁE9EW’µù×êK%c@hQfê'ÖûÑ·ÁlÓ´±#Û4j ¶©Š0<ÛHs s6y¦„B­¨#<5UŠ /âA…!Âê6ø"Y‹Èà°µQOâ¿åAƒbë2ªVD&C‹GƒuPÆØZôy ¦ xÒ¢ò˜Ž£(X@Vû.ÈqQKä¿eAdk> ž‡/96G<âô‹(©âs8VnôZÔ+¼ÂŠ0:3‰ _”ìÐ14:.³~kø ŸžsÐ=¾ÄIr§LUšK¾PËÂÅžÑîdpdÅ˲§^‘—ðËÓ/U9O¿ƒŸŸ\º™µE)Uëñ#÷‡ éÏ2|èéjPÎð ðóÓóhŠ8ü<ùJâÇ m’ QÌ i~F‰:N2=>ÙËF Itã… U£†$~ﲆr7jH¢á.k¨™Z¢Ûa;/Mß_ž¼± Òuªn±Su‹ª[ìê×Öy’^ ÕK{Q=¾´—BõR«^jÕKñÚ^°¦÷‚µŽ¸ú\ǺG¯êKÓ9U¾Î©òuN•¯{ÝŠÕj.™šK¦V¬~õŠeª—\õ’«Ë^Û žR«Š…[U,Ü©báξ¶—*vRÅ>ÚØÅëk¢©’hñܶƒÎ^³º¹<>Ü }.ã~Ý\jÕK¦zÉÔ\êWÏ¥UÔÝ)êîEl_@GÞŸã4譛κ?QõÓ©ªŸNUýtõ1½†´þ-J¹¯„ôR¨^ŠØ‹êñ5WBz©U/µê¥xm/Ø(÷’+Ñ„>çñྮ—\õR©^*ÕKþê«U/™ê%S+V¿¶—"²ï2²ï2²ïâµì»Œì»Œì»Œì»|-û.d/d/d/^ ÙKÙKÙKÙËWCöRAöRAöRAö²xÁ@—npW…®Þ’ÔbíÖË*•ëži'CeH=ZŸú-¼×›gñ*[O­yí9ø¢…&x•µ/ji‚}Ú‹„k' ûÅ“k0Ht¢¡KçÖb:»‰†Ü“.ÉÍþ` Kýý|ݪÔ"•jÌìŸá.~¡´?BÉ.ÒŠ%ûS”*C‡k5ºöÝ’¹b…C®;9*ÛH%i©Då¶;beù*ÍÕ²?pvd©O4¿^ùû ¹' ¯Àì1”´Í±˜R…,±ìW(ui®,תúe·:ÞîGª×†wX4›ë;…Jw+üê9aeLsi„ñMîc_á@J×Ǥp™4@U×LZ")T¼í¹ô&8JkñÆ’¥~?ìûã‹1öXŒ ª)o—ï¹Jsµ« ÔåæzEgC‰d¬3f¡­.òT!%U÷kžq±I¬Ø|ä ”†ÿªæ±àRO¸¶º:9–ó¾£â×u†5zù­OWXDlۅʼ)ó4êŠI]4\t÷p¿íP\kVí°Rà]— ‹™†rÉ,q(”ÿHÍÀ±„ ‚DÚ·TØkí—ÌÛ-P¨ÞÚ\Q6l(xÛ7X@ŽÀr‡}náÐ #ea,Ø;äy¤úð8ù-—8[_mû»Oð—P¼öDùACgWlãÏ%–É¢Z*h¶ÝIa¿Ðôï2¬„…iZáÔ´K´ØPcínéS¹¶¡TÛs UÛÛèâb )²÷‘nÛ o–³ƒsTes©Ô³Ãб¸\ÁŒ+Lr­/µx4üPôŠœAݳo:¦8L}ÖžôÀEÇÆæ¸ZLE6WÝsøüžK4[,„¶¿jÞç×@Ï7vô3ïÖ4]*IÁåËÚnη~€xœqa©št¿Û§'öv~OÄŒjp§UÊtÙïýîÁŸ».”ÞÆ÷g_üæøf±;.¸Ú­ÿºŸï¹¨3dy„›‰…é`¿ü Ü÷A:Cäo“Vô>ÈÌ:™Ö͵éuagUŽ‘ÔiåBÀTõuÝs¡idºx„Þ=Ðc˜ãÄ¥WSLn‡'t[ —Ü“¿È÷þòÉ_ÅJÙÐ3TŽþ@¹Á:ÙTh»‡$ªº9.´\×ÀË!“ WaÏßÛë¶ðGæ÷P3–nÙ­æžéZ'ûžCx:îûßôXg0<¸ úC6ŒDæ¡Ç6i'º«Û V¤^,°à=TbƲˆ\ î‘êsBMê°ÄëXÂËçPOÞ3Âq´Ä‘º=:® W{¹Ã*»@¤U¥sß×2ï - ¨s×-eèž,Ì?ñƒó¥ÔX¥A­¡ü¡”õ¥첽ß(iè ß¾›/a{¸l·T® êé UQãyü¡ßBYÍǾÃãBŒäÊ ®‘ ÁÂÈ(x³Jº\~ÙóÊOð@µ)ý$¾x$b±ÜÁ&øUAZÕÒ×Òãáž Lú¿Þºm`HX+ÞøU=¶TaƲ´Ë9"œZOeèó /‡Z‹ˆ›Žé‘h1ò«XÕºçÃà7ê¿âr`ÚP–ÛHÝy0»»66Ö‰H$‡ì\€ó]é1ï·ó=ðM8žte+Ýu?@¹G}ŸùÊ/³¡ÛŒœ«›#›âj Ûwž­cÉÕ¢,M޴Ѐ„ú›ç”æ È ü™öž¸žÙÆ[‡ÕÕ¹ž},/ºÂ³G}õHÛ‚'êÅûÉsåå/iq —œ?ãù¶ÿ ‡%Á“›¾ûp +I¿¹à¼Üí„ÊŽê—CÆ$?ís}ÌŠÙ÷TÄ[þÚwJ\“yÀ ”#½#Úõ/,¹"Y-ÕyFÈÇ#F©¨»)=?§•‚Æyú®<ñY=ì™ÃFæ¥o(õêÜ!Nƒ&gÒ$”šæ‹BänÅ KƒRUc\½°yFɽ¿Dtž½á1šÓáƒÑHÝØü9â4&OœQ^O9Ó,æ0L€:üæŽXÀ¾ópâî&V =±–P=º@¸†ÓÇ…ˆ…•l¬¶ÛG¦¶Bl‰ô…fßý¹¹v¸—þ*îö¸r+„Hc®ðbÞóê"™ÙõÞKø@'{ G48ÈûH“õküÑO ë”t(¨L} Í6 $GZïg»ò¤t£`5X<|X“› …wpO—\û8n mX… n.8 0¦È'H(›¯ü†c“{À/säæ°fr„Ö£Ôã^ÒnÏïôîcß…ã1^+$ù„û»ÃP-Jr:ÿñ(«“"áDÔàò ÷{ñÀ$¤Â-¼änˆ°u)kúÑóíâ=Öd‡"ÐÖ¦ÛÞK-ô€={ {»!Bpqy–ºïýf1S"Žc HAèáØ¾[uPhªb%Û ïC/åD©ÅMí™npd¨Bö¡££]‡Ñ&ÆPBþÊG&ýAÒA4~KÕìa„d¬3xÞüAÑÄÿü…‡NK¢Šßy”Óyªõ ‹ûálõÞyòEÐÏ 9÷ÒàñáÄAOJ[Ô‘?bíÀ<6 ‹Ï1‘øà¹{µ HN¤Ø *JOSצ‰÷ŽFš“BѰˆH>gÀ„·¿“Ë4ÇSÔdÓ ( ¤àyéâDYÖ>߯=ã‡Á6q³`¡p@Pãå‘k…øÐ ò¬}þc”{¡Nç[¨Žýa¾…K(¨Aˆf:!VjއØB9_{äUeæÃçX—Ú£†[.¬-¬y>¿mã)Þm†ú <$º‰3Çs (mÀQ惥öÓF íÞÊ0³Æ€#ÁZØñ.‰n‰ôâÇþÄ-dþç„ïö&‹p;ð%µ'ç’Õ;¾¿~+€~ — _¡×~{ð^ñiÁúØA†¢ÕL†Ym=×|m’"Ö–ŠXÏ’"ÖÎÿ±vPÇZŠXç-±öbÑ¿lw~sidx“¥vx¸°·þªqÌ7ßþîóoñåWŸÿþ—ߢB¡’ââ¿à‹¸ˆÉï‰ßüzG]ºì˜²ú³ä'#lòzbð×?¨¾¿øü—Ÿÿúç_bßma©ï/ï<½Á#ˆ‡xŽ/T<ãêæb‰sOó=$ùÀÚÌm:Ñ?þYàÿýç¿üúÛÿƒ´9fGðÛ}ÿ½?îkßæµý-‰lº+äÕKÒGXH$8Ñ#üY÷øÍç_}IÎ u³¡åÞ•&þ èy£Åî•0nö<$¨”v×fµàu@H‰4íw~Anç ‰xBÂ)Ô†¿¡þ˶ö\OÈ jEp=a[w$­°~üŽ)YïY×¢»gÙUá@g¬€9lÂUöc ¾³If/w:ªÒê è¬À/^ìVGä€+dW›:Oרàß“5þí—_þ‚¦ù{º;whCºÙ¯¨[LN‡Zˆ_±^ïq±Ë} !©j;q&ðÏz¼¿ûòç¿ÿÝ7_ÿ.‚CÁÆü{àÞ-‚8÷ßâi@Ìè“Î{ud©Â—|¦–žI,àçwQZëÔ¤xveÝú#º_âq(LY'-ù†õþ²ß ¾›Û T›Q®!¡ÎñÎ?°žñ°#u"ži\¿çx¸z:¹ sA„o#!å¼;¬€4¤]Ác`ï)¤×Øÿg“nͯ>ÿ--M[¶q[‚^4â°Ê1ûN”‡¹Ÿ¿x?çCI6ì—¨·šŒÖo°~LÈxãÆ£Ä?ëQþâkÿû¯ýåÏ¿ýòzw…GßälɰƒX>]ADÁËïÿ¯ÈpN^*ºóg0…Aeª˜rðÀ+WM þüÇõË/ÿðå/õù¿áæuÎþçûÎ/ìÖóÐz0&=¦¹BT#Zõƒ ¶%m´)i¥l DŽsH’<1Bø³^9á׿Æ%+²¬NFˆ8aG Ô Ç@oã(Gƒ4D{Åâuz”eÍF겄?†tÀ z”’vwîäm’ÎògkϳðÝñ¤ü²³bΊâI|÷ãa¨Â´†å½À°e…%»žÃÇdC´ !8’zèb?Ümƒœúg”$;R£¡ŒÌu¤ôîpëY²J!Œ÷ÿœN÷ó¯¾ùúW¿ý%ÑϪ&á.â­‚™ÒŒút3+”[‘àtsÐïþ- Hà:1,ø³>üß|ùÛÏã°fdzX‰a¥é^Še•á ¼øØ4QSî®[Øé„]JµÑrSB2fÖçÈâ]”TÇþ¶“ÝEÛÚ:F«€ßxfPxƒPôþÒ5EFºs` ÷Ús ¿öGÒ½4ˆÌwAú"Í­V«£ZÄtPñßÏÉBCêïuÇRð¯t;#uÈMËŽÎþÆ$,”Å-Ò íýxÌÝiÓSù;4áµï“ —5fžqãî}ØÏJ,›ÝEµáhîí <,ne¤g NÈqȳ¯þ̃Þ^-¯ýE‡•ø#ÜüÛ«üçÏþ°lýTáx´ü¸&êð'R¨²’ 4 ¨v ,Ø‚¨Ÿg¬~Þ²ì'{”°yÃÂYÁºÔßL‰T‰$ä<9IB¹ÿ7”„r†’ÐÑ/”ÊúSú–6©5 êýuQ£È'F·ð ì (-HkÕya QDªp‰=WV,q°ÇK~wK:×t¿[8(qÝ®ó#XíIÇØGúJ+¡qØR)ßzº<Ñ’b@ÇŠ×f%¶¶(À^>°ò’† CñäÈÄûóIÇP±GciXñÜ-ÿ‰®¾ßy¸÷ÇëÚy’É#©ÿ©.õ-']ŽK¢AFN­á:Âú»tëWjë1]0b·_OŽ¢£X EóË.{Ú•³Œi3“ Ö ÖºídCÖ©Ó´ã{ÅbGþNô+rk^ŒÖ,Ìn®Æ ï÷צbÝ*)à°Ä8Š6‡î ebì¶­ê½DðI>Z‹„¥  éѦÈ'Rì¯úýŒZp¼{!/Ø5TayTþ ê¢õq‘–†çÏœ¹»½Wð Í1ÌÉKŒdiÆë‚ž;·ZûB÷»‡<ä(?<áìÏG”¢*Ðă\OÑPÎíWdˆäFT“,ú¥†”’DêJš=²ý~óé4BÿŸþ/]7i1îÐ H=–§“Á-Ñ=ŒÕÑX7²ØK6=& ?1Ì®Å'ï%]›e‰¬§O(h~ØhZc±`â±p?úãõ»D‡´‚Wr}%XdGNA°•(¬’.ëˆ^A+ÖáÝo=BA+JDZâþ£fEAž±dŠ ‘/ú÷~Åp9ЬŠwܹpãˆ{FÝäp&>÷R¾$ƒ熔ar1æŒD£iˆP¢8…ÒGNݳɷ֚‡Í^2jô•CÓ{\6“ð)ña8¢[c¼ ÷ìÀ¶Ò< Q¡½QfZ‡ºa¹yáÊ/À̘?ðÐØµ ¶•¸V‚Zn‡Š j}õÇ"GEÎB‘Eñ¢§GXë‘Ô~pR|oµùN„Ÿpõ`”`|A¼$â[ÂJ}O×¶½§pþ¼ˆ_þov ÎE¨628c‚"):)‚ª€ZÄSz–$ÑsXð[h³ÆÚëä´˜N[•Á·óÖ½ÄÐóÙŒ'D<ƒá¯¾èsRÎ’-‡/ßšåjp§Pºõ§¡DlIkn?ÀhØËFöÈ÷±zØ’ÒÄSó(n27$ƒ ËØ$vƒF¬Ç`VÞ/ß-ðW”-(\GS!ùˆ~ºîÕ-’±‹µT4´þü"zÀCÁGW?¿ @ƒŒ¨Ða_×ô!µ´_w3@zdDZ%,/’+RjY xºßN[\÷]¼Ð::(Ô½ïnw°ß“_ær@YpÝ\x‘;–üAñbWwCã€ú®ìjÑð$(p KùŠl¹ØFåPvfn‹²ñê»Â©‡ü{0œ.i•Ë…ÂÀQJ÷9Èà(ï"$8Šc^`¤]‡0ÊZþè#]Û>ŠåRº~áGÔÒx$uü?8óYõü½œ“ó„üÈ={DYÏ\w䥱87:Ò`ý9à1Ä‹íOï);ôGº]8 (Àõ<éŽà›ïׄ=©’yŸŠI¥gBŽF MWaMs™„+£¯&x¼m”€ä7LTˆ˜OªKïÐ@Þ¤H¾€Š5Ä&ú³Öˆ A+—³f—œ¢öóÅrõJäH‚w2>ñû-®-!jt² À`r'Öèú#«B½ñ¨¾©ìñÑ¥F×:oð:<ܦÞè<çë%º]€þâá¦Dã"×LŒMÀr ¨LøÈž p€í ŠùGr¶_±î‘ ±XƒÞ=Ü (1É>’º¿òëAn¬x6ÁàñŽ t aõ¨>nûs¯qªCGÓã¾G_ `ú_ß PÁ‹,û&@Š¡û;À^ø=‰W9êÌxMú  Dñ OØM ‰Ï²§‡ÛnÏ÷3Z:*H—O‚”´™€WÏàjÔ9P{'2ÿàš¶4Á–³ø'køóTÁ·ƒÙð#‹YH2½z·<ƒ9¸æ UÒ#Oùví‘þqsëÇÔFZ0€2CÔ°;ôú f“ÉëÛš(° õÕŽpB=zØËÒ¢Ëg$È´èýu ð÷„ðç ¾yð'¢€“Wà Û\å™(KÊ,Ṵ̂c‡þÄp‹Â¶É•\®$:¶#ÆPN,D¨…‚z|ü𘊕e^LS±ZœJ˜Š%~Å`_ëÉesˆõüÒ£40"Vp~0Ð4Gs¤sr¼I iD ™O¹cþßP Y€r¤„\ ªt€¹)ýYY¢¸¾|X,úù»_Íà±÷·×ˆß"†S6)ÃY¢|4ÚRÊGÕ&.âétÂtD¢™NUò}ü0ߎw *z¡=^È&\Håt´rjüaà{„(tP|P¬Â1‹e&ðSè¹kKˆ#ðDÒ|H$1Ý)kü¾»½Ý±Â\´Öx/ðe‚µ¬¿]]e0×û«Ÿ‘:<³7"anÐívÚ¸-z=YÄÅ[˲ðíîûŽ×ŽIÄ€²(ü«¸TËeYÕØôÛí»Å¶gKú½¥`x‚DCzBävX¥ä(¼Ì‰iÕ@sÊ6@Ï~ñ@ž—pî"öÅ ØäY|FØöjò¯‘˜+´ -@Y í‰f‚¡A,Rèùýa /Mˆs¦g»d˜MpXS0èrb`ÕáÈʾ à+6z$ ösBê¸]€z¸=stÄ–üE!j:…DId†È\¤îCñä6—%[íõ sÆí‰ÁÓ_ ÁåjM›.w Mt‹=¸â]˜:ØDØvJ!Óa äj'+‘Aqì«0öôy‘'G͆Ա«ó†…„Ø©À«ÕÕ_º=ü±ñæÛ t2uZëEI‘¢ÿ6bÇX²?ä;E ŒµÓºO©B×ô(Эp@nÙEÏ‹ç%¨^eW6¨ˆ ÄÇt6‚ýÂíæ{Ï ÉUý~3?tÚúj¸ żÛÛcâ?*µkÍ Q‡=ŠRPeöz:¾kÚ«ÓL“5%o9Õtº’“àgeøÅ ‹ÕÞù²}°Nm_gÔþÁ`wl 'ÙHXÀFhè(H;XV…ƒ¶ŒBÂîB˼°’·Až&CG{Žö *µÅÁ|ùÂê‘Z°.'`Ý:Ó+èF]Ž=“Eôõƒcõ’×éîåÀð%8wÆÁ¹ ‹D€¸âHL=ðÌõG‚ôÁë_5Áùµ«°‹Du;b½õmÔQâwpúÖ[<Ä·­”ÊbI EB‰}E¥ä¯’“œšÌxP(ÎSŒ²ÒJôÑ…Hµ=(›3-RÂÀæ‡Å”)‰ÔrãMEDG:kRo¿ 8%õCPÉQh*—žÛ#P†­b…\ô‚ÙhûeB.–\ˆe-™‘Aê^M·“Q°ádIæÄÐv{5ÔÉ^¬ÀɃyS»9B‘;v³»•*å‰~;çžáŽäÊê³{ #cÃÐ÷Ï9m=A2A^¢Þ2F *Ýùó@l g×;šY‘€{àÌ‚èkpÚí­v¨6yÕ`˜ÅBÑÄBå a4kÚ'ÍŠ’æ(`VÿB¶Å,NPFCÊ"pœ×±C ^N»¶”M@E˜±âÃøc_B%—ÙÓNŒs°õá:äÑD˜3§ˆž¡Ê³vi½ü^qEqã+²j§’òl®0Õ ŸzÌ-0öƒñ׃Œ#7 ɨ•ÐÃ7èH±Ž˜ í8Œ±D‚ƒ¾@c}èÉ[â¢P¡q'>Ö1rò#²XRýJrÕ Á®&=óÀà¸ï)Æ•Uˆsv6Cédý˜èDòäeÚ†åF¿õGt˜Yqþ:ñ¼N"µ¼çX=$ßh¥—ÔY+ÏïÄý;õ£_ûrê$póјE·=ÿÈžEبè~ä±sTlŠ!J0§(A>ûn|öW§‚=åi$h0qÔ4°)¢A0HXƒ¢‚H¤ý4axG# ·€í®L”%áYÄÁ ¨e Q‰BrV«~€y¼-ÄwŠl±‡¸]žýES.MéÞ•n nqœ9£´„©"½¶×Ä*ŽWÿwª9wx¦KW¶¤` '—ŽÔßÁLõ8r^W`FÛmŽUicc¼½ÚméÁAäŠ \%ù¦ÄÇRÙUİ”c Ѭ¨"(Ès7] 0á‹#¬qº~ ±‰ ¹"UMJô’£:ДSÚÊÿj*P ´ɶqRµYEË<ûçi¶rzÒF^Káè¡2%+­„ˆ›IÎ\¡v ²‡ôÍ&Hö·!,H/7H=š`‹^g²Ö_ÞŸYbTF~‹©ÑzòefŸg  bˆ:çã)öhzѬ,x&æ »$¬$|ŽlrP9£¢gÔlK¸A»éŸS”`'tãŸuœUbµT P1@¼±ø>é<‚p³=ò{@‰±–h`B—š+LÆÎûÀ‚*Ï g; ñ|ß] ,f (]ü߯I†q}ÿ鈂M!9NâÅNÊ*‡Tàr"1 cm%¸åQ@CË’rÿZ×b¢Ž'E"_ÿõ¶;ÍÈsŠŠÍ»ŸÑô 2Ýa3üõK'm)VငdÕÑ׃™ïáÍÿÊémªVîÚ§ˆBÙ3Y— öûó Í¡”ŠÏÐ+—ª‹¾–snU̸‹Ð¥ñ®™”ËÔ0y÷ ù’‹¹b@à*ºV;ʺ=¸ó%Ñ·ïÀ‰W\ÜàW*È‹ÍÀ]T’WQÏq”ò¹³Û°úéK "i®ç ]êöëÃ~ˆ›©û®eJ¶¬†„ë©Ãš¤ØÅ«Ùyˆ²F…ƒh(÷ :Îî»í<ÄÛû}3CÞ¶Ö?áì4{Þ·ÇÀ‘ {B‹»„bÉ”6¨ád|7£ÆÀ§ û9âÌüw'=99Mþ’çGbŸÂŒ˜ŽŒv'dµ‰GΨ-[Ë5|Àl 蘫”×ñüäÄ3ÒAåC7XšOØÛ×¢¥âÙ–Ä71Ûÿ÷ÔlQ9 gKÙS§P$"5Ý¡i]¦Û±t Ó]“ŽhM±—¢R#ƒ-M:ÖO&Ô³tŠŒ1æ&#‘oœ]Nñ‚ýŸRšDŠ…’mö2C î‘’3ÔFKúj%0NoeÔüzÝ»âõ(f~WóíOfîÈ‚÷„€fø£~2…eLa—ëß îUýM”¤µÐP9ASCáMXkèqø^0ÏÎud6ˆkѤC*?j‰n‚Jy?9›¢ –T«&æZ6TȈö׌Åß »eàJI¬cÏìŒå8lÿ‰8Ë#>óŸnhè%rnþíŸÂo+vRàþWþ1e 7’EŒ#V:Ñõ˜p1ÝšƒÁð2&&éÙF±R©gY+W’AjÙ­Q?š×ee‚VýSˆñû¿îPñ€e6:?¢ò1RÝÙ½pyäžšš}»åº£®ÚÆE>%Œ88ìz¾_ÐDù°C¶èÎÇÂl özð¬O &0†"CÇ—£•ùâ×D»îHK7+\œ•¼Ø­äVÍ„|zãºm·1F9ˆÜ~ ß%ÎéÈ–µ¼5¹ªÕlb@…¨ ¡á •ý{Tшr;Ó^ñ+QX(815¦,ç‹dÖS[œˆ ƒõ¬ŠÜ$ë¹8?öºR$4ô¦jôbN ­Ü;oâýùœµCq:Ë™g«,9„¢.Ê’ƒB®-@L˜vQ2ŒÙþФæÂ'þ¯–‡n© z ]â†ý¢¥Š œd{ ¡ÓGNˆËj¤]¦Sà®(Ûn¬ú¢1ï|s<ìßbºEYôò2’ò=rŸÎ&/’GÔÝ›ÝV,Ï0c>º±çÏI“:NšDRCYbFpr†f ëQhíj¬ J6âtö×DAPM)jÿo¨ ¨AGð?@ª¢Eg¿NRa$É6”–m"+‘ì9e%Â,È›áÊ¿Sª‡ =ãZ´ÎC]IQ4Ó)ŠªTg™:|¦‰%ŒòÞ45¢´éìDÚ¡Ù¤á|«éìD•ÊN´ÑºYo£iVÔ@à†÷Ú°IS<¬8ÅCó',C2 ý/X ߈o3+ìUPÌ:!§žAtxwß)õƒäˆ‘…¸ i‚E­Éä¤9rî6â]îÛ?ªxÛãÐÿd’Âä¯FÓ«ì«ò‰ÆHÈ£ãÈÙˆ=,ßcÈhçYÛžCo$%§à¬av¦ª`¡˜”(9¬¼jKõÓ„CRn΄ÙM$iB…ILÒ4²êÙ¼mN'iêTÌ 1Òf˜œw7‹JR$E:—«‰Ó “¤*2§Iëù$BB“ˆdm²&ÍÚDáT~6it Ùç$F¤úxaÒ¦ø¤¹8iègóú¤MWOûü¤My“6±ÐmVÊS(¦>é&3³H¦¦±‹Ñ™š0Ò‰LM3ÊQ35™ 25Í$S“yM¦¦ëžüƒ355XíDgj ±G'25@[5 Ún8]pÊÆ7’© M*ÅB§LhÎH´N“.½Ó)‰F˜ )*_|º{ônÿ.ür‡DJM…C£uêµ»Ö™šTJ O3°ªÏ#Ô¤.êÉLM+ɼ.îë*ÆHejZ©ù¬y>\fð®;¨ÜDñýúý‰ÙC¼”cS:…L…”N›s)ØòŸ¦tB ˜sXÌ0x.½Ó&fuê8NŸ$ÀÙÌ*¾x=•Ó‰¯X’’Hx\ØÕNf2ð£6èqƒAÉé„c"“ePYJþ.Êë´Š…"UR"¼\è2¤Íg:ÅSÇa‘Î-Ó‘ÈIj§uLí$Ì™R;IصJN¤'ó)Mñ´–Omšâ)':8JI$²ðz"³Ó*ásIb"á‰òù#[¿ Ég¦3 ¡¤?:•)—2¬ƒ‰Ù‘Ì‹³#%ɑ̳³#ÍBv¤ÂsÉ—gGbák“#•µÿ“©òHñ—‰’ýûIŽÔÙùäHœÿh29å&úG&G¢üDÿ äH”£è)o«7LŽÄÙN%Gªòöß]r¤zJíÙøCµgšÏÓÉ‘¾˜Ì)¾[P×’x÷kšÁ¬'[2QÇ Mï ÖŸ¦s Õ*ÛÀ™Hæé$HÏÊdT$Ì[¡’ ÍÎ'A2g“ ÍÎ$A2g“ ÍÚ&›L‚d(i: ÒÌ:çFIÐzÂð3ʃ´RIu’ƒXÆÆ< OÒ®AvrJHÒs$tæç$HN'AZÅ$HëA¤o¥Ü¯)RNé¿uö#\ÿìgÂK.¾©„cUgJ‰´ÎÚÔH (™Ïgœ áxL‹„wÿsÉl9H‹J%±ØsoÈ‹´žH‹´žN-dTô4/Ò삼HæTb¤§ò"™Q^$Ô-^’É$‰‘f/NŒ¤®3k/ÌŒdF©‘ž›ÉHftÎŒ4»<3’¤Fzff¤+QœÌŒ#µõIÀ#¹ÆO'F:‘ÑÇ\˜i˜‰ó˜_i*-’yf^$ÖÔq^$ó²¼HœÉ\”‰µ€ãU4%Fâˆ1óÚÄH”É_—{ab$¬~]b$Éë·ŽÐå_úï~‹tÂàºwß Í tÛ=R‚ämÚ' ˜t©´ý s÷J¿vrïì¼',Cþ^'Ò†å¶R¹ö7'dÃáÿý.Áú4ú§JtRÐs£ÖƒŽÞ!&ñÿ<¦Gé¢jó²Ù“^+kOO¾²ùÓ“±cÿpwrÞòîpÞµ8aÿ;KŽ•·åùäXžt)¸úiX}¥²)­T!p•k%Î"Ьé±6œ‹Å|¿D†´ ž+fÉZ½"KVžd7L¼ûì°…e!eRO*>Δ5(¤ 8¢–P…S\ Å)¤HÏT1ƒÔGîO),9ž™t&“i²ÖÔeH“5+‚­†Òd¬ÃEe«IÙÿ쾚é4Y“Á<ëd–P‹ÝþMódMٜɓU´Uþ÷Ï“Uf/ôÈ“UZHöï+OVéÀ³ó‘'ËûË“Uè9útž¬DIÒL)IZÿo¨$iAOJ¢æ¬$gÙŠ!ch¡W>Þ€•ž Ÿip¤ä¸ã\«ôØc®µœvœzKô4zÖ(„}劒p ú矂5—š¤ßBÝJtÇ*1&vx  %ìà è'ÒJ®ÄI¸ŒlrÃÎçq{?žÌÆ5V5KѨ³Ç”`AŸ‹QàFE¯ƒÞ!šY+Yþ_ú?A¢D¨­ž®bòÇz€¯n·+àM¯u°©òAe…wa1‘Up¾>r C?PLc%Ò¤°2ø£õ¼©µÇ¬“GsvèÖ5ˆsÙ„ø”¤R®¥|\1`}Ç2òБþ¥*£À´aý°º_:ªå£S-åß]óò—äÏN±ÒÅJ{ùT ¤vC1ðYÓ3[çìtÏ95¸…fØÂ:&aÓ š°â'Ù;M8âi%'vm8•iCîÈðÞ“åÑj†Õ ºñ)8½ y¹ ·õS½JÓ¡;|RÑÖ2ÃiQƒ÷í#JŒ¼!šŽ>M„°¡R·Êµ“&3ˆÕ_c”~·çp·-ªÌ¤ö…³»¬‘°¨m^îtò*ý캒ê«hPÀ>ºÄ­-$E@}±ß¡‘¨ëíûCHo€c¼7¡EHË=(\–^Ue(‘2±üyÄwѶ‡3ïp›/õÍ1©²Rô|Ápr倆p õëQ*ò{ä1!Q–òJ’©pöŸ{ÔÞýù!øl£Âà†Ö ‡’ø£óÔÅúDº¤aî(ñ%”-M…Ô{hÖ^‰­RFuE·b~wï(^а ™óGç%v$3Ò~÷aþ¡—ø¸Mt°ßŒµ—«(ŸÇÜ&]jû(§ qF[âbœfj‘›Õ’·gÂVßÔF§ÅζHó\cäÌfy©Œ‘æ¼1r ZcšÙs58ò¾©š}k}V1p¥n€QWÀÚB]ºZÓ·`t Ì nÁŒnÜRѤVø‡b›£VåßÁ)¶J(ƒcl+Ûž<Ƕvųr´+›ç–!ÍQ« ËæY†åÙ“†eó<Ëò™ð.;oXž9ûò9kY~†aÙ$–eç*)ýñ|˲™6-ÏžoZ6.š–gÏ3-›§LË'-ËP-¶e9`2g-ˮʪs˜Œ«mv¹ey`X6Ï·,Ï\cKmY6[–' ËFY–][Ô§-˳<+¶,›Y–òyÚ²œcÀ`YN Ëæ¥†åÄ®l& ˹ÃR"ç ËÁ®l^aXVvesÖ®œSÕA±+ÏNÚ•ÍE†åve£ ËyPõ¬ayÒ®l.6,íÊ&§"„Ϫ¿4Ëë¬Nê/i&•7Vá A?iŽLs6Ñ £×½ð^² ¯™¸[,?ÁÇ¡N8éOt nb‰yPÃi­¶Ì™S¾M¸"ÝdI§P=c|äÎðޤhK“$›$¹ÖI’דI’AÏÓR’d“$IîO&I®uf‘Skø,82g§8ÔId/5H±di’%µ·N^ÌAW”¥öDš s:GmÊ Ä;æDÊáÜ6’á·ûžêØå®Ñ ~3Uçl!MoT­¿æ2 æ2M¬;±–Zè€ýåhq]í¢ô-5b²¹ù1¦EÞÝ1UñAOÓ™€9[v’V9¯ì0ð“i•Íy•/[÷Z*eÞ†üØMQ R='Z@Î}j«»'»lÅ|& ‘gE¦k«b—&DN&m’!LäD.\aß*'r‘£/‘B%^¸PRšD»p?¦éMD²Nûõõ'Fê¬%Ö¾¼4-ðÔøbIЩDÀTþ*ã @Êw¬îh‰n&£{ɪ|²äÙFù‚¤ò1 ¸|uÛ¨®Àµ·S yr]ÉXú@àJyï¢Ï=R óòBòþÜ‘9âCœEÔ.põÃF”„Än&¥1~Û?^m¡þ2 _˜V6iׄÆ9jYAãŽõ~“;l_=7‚p€ôÏœM4 r&Zº9(”Q–Ùe¿Å6Dl¿v„DOe†é¸‹¿[öó5¢e:¯>äàU›ÄdØ ÇXq‰’Ì‚-ÜZ­î*´»IÛ ®+lTºƒ=ÍïÍRÒ+®¼`²ãå7gpRöçî_ƒ†‘È ®ž³Ò¡÷×Q*r¨Å“8z÷Ù O-\—Þ™ƒ®¸¾úú—¿ÿîê“'Îë«?æÙŸnÐAûH–0,Cº1ì=GW0)ÙEy1×wœMè8f5–2VJÞâ­àÎ|ÛÝîöàÃ|¸ŸSiBJ@î—áF\j¥tž ê&ÇØtÛ{Öa/æ{>´;ÀÒúùÖ[%û£C}ËT˺ÔIÐ>¤”A[Ù1©:e4‡îS­ÛÀ8Q€ue¤:qþßPuâ@{2Š3[Üöw¢—çÌq Y„ÞÄ¢kɯ¥ÏyôÝHõÊül±Û>ÜÞ3¤5ùBß<¸Á°Ô§%!H%«Ôî\î¾ã«“8ïÒKÆµå … Qv42M0µûN4@˜tŒ`+vΤ[0Ÿ2¬0$á ªØå”÷,ôßd\¨ÇïšXèn}åÔVq=aÌÆc¡÷˜E‘ †ö±tÞ*¼‚9S‡©¹V‚ñ £·4ÉùŽ™œþïJÈDMYÛŠ!!ç@-ýkÁ}£6n)F»{ßÑs‚àž8/ÉΡ8M•ZØÝv,”¨‚¤+ñàÝð€yI’*s~uÛn¯ŠßõW_üòóo 0 ŽùîÁr3g4ª fÝ¢ã>SòÄ—ÜÓv()*#Uùºtw»‡õFÅ1‘ý‘ÝcXª „”åHIpз°ð‚úËÉDÞemMªh·µÖ¯ÓÝ©“qæÏÑ/ɶ1·iÄjCI¨@EÔëJ'&UôB#ˆÊ¤¬Q?Ö¥;³¤‚}£Ãwt*€—jp6fž^fæ‘ôÞy¬¥>$'ún­Eã±"ÎͤÃ0í` :Mä ëŠýAáœâT«Ž¡ç ÁóWÇåcrÊ…!ά8O^'œ’8“ÚT‹ˆ:T08³èd«tzmêü9‰Ôª¡q>N®~Ö¨§uZà”5C¹«´Ï…I}.\‘+'“†³¤{ÑÂ*R<±>o†6²î€›]¿Ý­RŒ—yÉN<{.'‘S"«Kon­R ±6*#WêFQš’þ½aµS%šýÅý~Ò£ªmc¸½6™1tšblUBÿ8•mÃÝXúêW\pRò§› kê6UðµJNwÃæ"¹Œ@`3r‰äÑpŒ6Œ†Ãp2Ë‚ÓÃݤoYnE!VâãHÉÃÍîÃÌ朗åuXǬï!|ôe&ßÁëùq<ÎêÙa Öt"ƒþüÊÅþr‰ç‰Ï×ÚmœÄ>]DLIS´Õ(5¹BMDëþu¾–÷ù=¹çÿØßBPæêêW• ¥ ø…(3²Q4šœëv£ö)Ÿ€·”ë³ÃЗÔåjØåZº<ÙãÆ¤òýö¦™†õD)² scߟ†}otß›«¯úmâ y3ªàÞ¥D¶ÝR A•ÈóŠsn³¨ÍúóaÅq,à²êöûàÍÓÖ5EñMào(U&Yã¨OWM[+ty/©SìÐw^q²~jôL*ÍЭ §Œú ”­„„™ñuìêdJm•‘Y¬r=¿‡ÒêR›NÙM,]žU2 „>àÃǪ Æe’׬ÊL«[u&¸&bÖ@Ÿò}¿ÛÒáE·óÉeæûyƒ!Y3_0xl´KeÎPJç²l'vi­7iPVW;òhàT%Ês0¤Bc DÛ-‰kr5˜#rö¸ô¡âp\á1÷ØŸvàÀbY(®¤–xÅ:\† Ì0ŠZ2pí1THsI÷žüQ}^p—×[Dq5뫇û{‘Ž€B|§¿‚+ J§×»A£n^+¼êw|#ÕóPz.abÿ•â¼»-¤Œ^ M´ÆëŽ- ’®É _`fEKU×ây#^V†òÌ«IÿÒ2Te²óÆïLtZS~£ ´ÁÍŸ>4²ù]FrVÜñ%îx/W¸$.ņ¶žŠ8 ŸÚzŠÈ¥º¥º Ê¡LEä u’C9Å>Y)ñRÀê°¤pú€ÍÞ+w—A‚`Må1o;Ò÷õ¼å+‚ãÌsOd©ÇÆUÓ O^ÆÝ¬Gyy‚éô@µ›òxÉý¿¡Ú&ÍÍej›'¹Æ)¦ažæ³§¸koÎ0Ù4Ó0—2ižab¡g±ŒiŽažb³I–ašÂæmQÍžÇ0Ì“ã9 Üà3›•öÙÃL³Œçr cmY 8ÆìbŽa¦YÆyŽa]•™'9Æ9†aÎ1ŒÙy†al¾ØÙ2ËÏ0 c«¬2ŒÙÅ cró×O1 ckðb9Ç0Îò 3Í/fOð 3â¶A¯ò3üj³›—ÁÚÒLTMÙä¢IséëŒDl;ãJ‹¨÷ÈÐxòI/éüñcr¶á»¥VæÑ²´X0×È×+­+¹•³;µ¤Ò)G»’Å¢”©É o" dìï†L¹Ða‡ŠEÒŒéÈ:Ps, ;y~beIIùœQÝEFØÓÙ_g®¨O¦¾5ŽSt=‘ýõ©Ì·æ|´©«%Û]ëÄÏß$ŽþG|ø ®Šµš÷[Iœ]€¸ô I]=ì)n–Ö#—D?»Ãôzµ¶|Ys^ÅýôЍùë¨á„ŠPêôÆ'*JÚ Ûœ›Èç&ò¡ªUL¢–qܽÔLŒ{ÇÝé4qÈ3Õ¢™x°­I5«Ü ÒœÃšÁÿT pµq0‡N‹•èc(ð'æ ÅÌ‚\Sá…Ërb;]ºO…+ãáSnSËîrÊiöМH[²‡¹*ÓºÝ} rp¦È3 ô Á¼V\©g# ÙÉâÈHŽi9¤^L ¹Û? _ë]0äÑÀj„‹ƒ(«Ó;ל È=kbH½œQ|' „|B¨´JI–¨ †‡í¤RÀ=ô;#Á =Ÿ}u¸úí·ï¾Y쎋 •x‡n·ÝU?ìç{΢ú»#oÐaÀo]âï>ás6B¼:ìlþ)Me™H!z{à‚Ýâ• ôÇg:ÓÃÄî,: ú-ý¤u},O†KK^=Pe×j7qõáÆÞ\‘éú1ÄEû9¨T•†ô“Å©¨Çe?ª¨ÄîsÌ{6t©ðHº¡ksjCIœ+8Ó'f@©±Fjø–Ý\T€ÂX,¼¡K«M›3uRê3²6ÊÑ )ì“ì:NŽJm`i–95˜ëõ]L Ü#蜃 Yø Ãñm%Vчn뺄㟎C7f=Ç¡Cý§ìAÛ:SœZãõTÈø©n—‰½áÆ5´#¡ÿs9©r]j¬ˆ’is9Él$ËÇÀ¾ïP~cÉiÁ¨ð`h.¨¹S5YÈÛN•J™Ê€ê­BVþ¨’w9J/ <µi&ºþ8Ç$UÑïz‰ÍÃOŸxv—I²ÿ’6ˆá Zn8^?]éIÔá£U²„x—¨`¤·å `T0Æ“F ‘| ) ŒCÂ@ѧBýZQ5  <¦¢šMZ o°ewÙJë05Üj¼lþtÃUsæXÿ„5ëÄëh¥ë}¯9Iœè2,€ÔdPé!‚tæÔá/£¼Ñ½ršÃê‡#…Nª> GTLùÛ_Amˆa¤è˰$l¨zÃà8pKáýã=žVÃ<•‚ôJ’DóÃÝrÒ•‚I¹R¨ú1fŠº¬íMšBo­³pìrÅXw‚vûõähòÜê NÁÅËK[9x]RWéìm ^Yœ¨Y /„‘ïKÒ0ƒ¹,Rršÿb‹þ‚˜Î¼álÓ•hPs™hñ˜BêvöyA¢¨Œ£˜P ã ÉÉH¼¶Z½ÉfÄ\ýÐÉþªßƒañ_¿â:Q\w4 úÎ(>¦óû+”»¹ênïéh N°šfO˜]• \ù‡8eAÐäÎ†ËØÑš÷ŠPq»¹ЛÄlИž7Qð% £ çÔp,CÞ ~ MÖGÊð¯øüVÅÈ…ÜüöjN‡©…2ný~ɲh¯«å-ÚŠ´nuלáM%œ=Q=’s?h…º2·j–@iKÖ:dUntz ˆ\<>‡æ,^!M¨âq'uuAªz(Qj÷ÛùµrÊšÍßÁÒ9+lËn3È£9VRŒ®UxΕ%1ôñ–Æ‚9ðÀ%_’}N«3²ŸÝ úÈPA,Êz'8Ø•SXã¬).ïF!èÂo¬hs¢#/Þƒû£&UE5§²?š·Bœl1Ù—Ëu÷N§«²©¦|Iò¡/‰ Õ’IñYLÞûW§izYÿ»<$.©£c'v¨QÓ›QEeó.RPX.õc• õº6£[ÄŠí=_‘ä9—²p,3ˆÚÔÜz ÛÇ<­ŽË ´’8ÿUj‹ýnuä^HI‡y0ÿ¿óý½§±NÑæjùÀ‘'‘¿x€œ<ÚþÉóàO5åàÐýHl1õ4sÌ[@3 t¤E–Ñ–9U¤K9ppˆÉÈ%âñ¤½K¬…q­?š'«JF•Y¬*Ô®Aw6ð4åÚ±IñH€D;ãŽéŽBD¡)Î$øQÊ^Êù3Sîæ O{§ ˆ!r‡AZ5b84›9¤ ô¢"ÉÇÔxì¥sÔs)`R¢KŽ Tnå”Ê­òÿ†*· ´n£È¬S-ƒ¬:.(B‘FéÉ'=£’ ­¸Á³BŠãáCÿNÕoíj+­<â:Ïk͹1ˆó‹Xp–A°ÚˆÉ5p?$µ™óa@÷s¤ˆU9—æ«v|„tsƒ)òðÐÖyb‘’}ñŒ³&Ó`¤ÃœkD˜YBqQÿÈ+èJôhĵh‰¤G!z²2e®æÇs#!m7Žç‹æøÇ=¤â" Tƒ™ƒ79rê(¶LÙ“xÊÂ<µ2ÅÃñ=ù~át(Ï×Q 60zr܃Ñeô„Ø|§ ÁTI9è%ÉÇœ“Ø[ä¾£bšœ‰2§ßñiÉ,§ALŽ@ñÚÈ1Œ—´5J¥|0¨2{^ ÷&uÕñ”OSÚÉàÐê ‰$ÞäþSaâ.Õ|? =C}d>QÓ7f >_Ó×ܽAM_§ŒùA¨Ø†N³IZ)4R"§¨èÔÚÀP« üâ;ã¤H MIkµF‚Å¿ëA_g]9]àW²Oø¥LÀƒÌü¤5ä¿f2kÒ¨Ä/E2é*›Tß·hT}_«êû®¦êû®ÆÂLžtìã£fCö“Öù]‡™™PèW]U2 Mb$ZöWá~ëПèGÙ”±`)—‡Ã¢£#­‰êÀNÞf&íBïI°üœà®âJ•^+ó¬q5VûFKÁ§óe‚WºÔ®®&êWÆ„òÀ+® ÌÅKŸ® j/×`:‹%Ë ä—?*ê¬F뽄!ÊX„–PÕå$S‡®k—Û<ŸDu Q9T¯UeX'«×Æp:*à“;t_‹%jj­ÔJýIÊ=UÈ–Y‰²e?g…ZAë`QÔ¬¼G‚RÆv°Ê/©­J4Šl»…Ñ^Jqvñ]<± FŠâ vO²‘,¡íÕ;‹Ë€Åk×±x-WdÇ`ÞXÅ3¸È0¨^K4—kG>G W¯M¥Y%¾HöŠÔ[‹É2¶yãê—–±-&ÊØŽ¤ÿúÆ™ ý¿ãÌ<dƪ€ ½§d‚ЧSŽ6.Àlɬ†!«…ÍΔŽvàòb^²ÊëoN„¬yݪ©³ „‡i}ªdªä.nâz˜4ÅÜfN¢§#x‹²ÌÌÉå¨Êâ¹¼FÕÙ|v™Í¢q¥‰e6'V‚¬qCÛG(¦Q ï  ¸šhÏ ,~E›g:¢÷4L,mfÏä,]VQùHÜؖÒM¥³¦,l©Ër¢ûÝu)Ë*A©\ph‡uÁ›Íž*҉넓-mkÄ6êXN¤›» •ÄOì4R°sv²`g¢—¨H/a½Díÿ õ5¨&Fz‰å>­„ª¨–ƒ³RêPW<4¢{eÏDI| ©$ÂÊaRŸÉÅ›þyNP3QT­ó35@E!qß³•5I ÐÉ ª™¨7 Ýý F­¥\â*)—˜ër¿! È*–uâ  Æ¶N ‚"ªEU¿$ YQáÊ, ÊÎYóHruEPJ‚R%å°Ïç”Uê]2{¢0dºëK] t3¬¹×Eé5T3œô‹BnbÐ^û†T\h:†LJu‘IZÍ÷T~ùÏV õY¥É¨8¨‰e¸8¨f­1 "ýr¢8((Üã8$4—û\M$\í4) ‡‘Ú¶œCfªô'Õcö¸³;|rƒ)³.f‰ìôÇñNOÝX.ùÙ™d{»¤n'™Ý%uŒ£äI´Íùyr§×éžÞ`sz‡)çoË*¢c„/žyÝÝvÏ1…O¥M†Ÿg s®J”[æÏx8>m±ØdB Û]w8ŒdíeSL"æÃ¾>²¶Zò%ð"w:‰Lä7h]aŠ´CÖÕ(E5jïXµ…§hˆeïîuh+2>û˜+2,רôCRLÎ`0; Än'¡,{L:æ÷׿¤% Ž92Ci­xN“bK ÊKjÏ-8Á.'h]„h:|yk©´¸ML¥7œÔ ÍÖˆ 5ßìùÇË?%ïo´¼Ï‘ò}(MCj>ê.çãÕ?eT¹fM‘J„&>@'s¤ÃÃÑ%jOä&˜r"o?X•œ€=’J–É´ó§$®Ö0b´Ï&'XE¼ôe͈é_ûúyÌž%–Ltù#¾9æ¢Y1®Ð¤É tL»\ˆå89Að_Ãü6(ªŒ“ 'º‘r½ÉÜFWWT19 Ån-:7Ž%GwíÏéfM¨V#x>ÈK€×9¡’M Ù"¸ S­¼°EJµØ…ýãÈá0Ÿ 2 lÒL?if#Y¶£ãa1•³Ý](bÎB-œf¼£4dwVV’^À€ÛyÓ­OE¬o˜_€*Sn¦ }ÓLUQ½Þ]ê\K L’a`–×mñDмi[“ä˜Þsö/¢$ëq’3•e Ôò:ú³•[DjÚÄ¥Õõ^JÊCž æÍ±:#MÖf:UQØ÷/¿g‡‹1Wp}sªnƒ†Fž‹¦3þˆ˜èL±NŠ)Áö=q1—ÕT€ÂáÝÌÈõb½è)"½ZüaÅ@S3¦Ø¹õkKÖ¬cDZ^"ò®ï¾#Jÿ=OIñµ»úþÿƒg»µìjS̾÷±U…ˆîìR;ïcöz¿\r½€’W*&õHYnÑa  áªÃò²þBKàÄÿãõ^ KΚ¢DWÄœ³OÃýÃ1höuÆ (v‰´=ýòu+§+–ù"ß³û-•4†˜‹”“‚àôù}(~[T4¡X–*À;íÚÞQurCF£Z ƒ.dÝŽH}Юûð°^s WIŸ0E,¸8ã*4¥Ã ¹5æÛÃnh)Âúíöï_ðeê…,u‡#'ÑÿïX'iz4ÆãÅž s@®@é_"ë.Zt˜Ó¾pyR+ý&T~0g²¬-PHéïèª"i 5±€Ãí±" e¸¶’F¢Ç†#jZê6ÃøxÏZXjùK¤ÿ'ÄÉåÍrãr3€·Ú¿œMÎ uœ·¶tKº)7\ì “ÛÇì( ‘7<Ð6rï5¨QNüP"‰ˆ®ïÃ!€ªsÄÀÕÔPD[õRœž -‚ ù2¾bY’¹ê@Û!¾M±¾‰b°žrXjü¿¡b°Ýà xúþªy_\[‹)*¯ßµh”_ƒ¢­L^ຽÚôïmõž/·$-„Ð*ÌþE¹1!§NñÞ^·EZóóß|ûóõÏx4DÚ“bh}ó%9Ê¡8jãøæñnw÷K¿Asþ!õßõKJáÚ´™gjð„ùàAP]ÅÇš,§†ø±Ïýcþ$ÿçë¶¥9nî{ÈBZªv¡a+ø Ë0¡åã»+Ït–»3!´¾?°+òwWÿÙ¿ÝR,ëb³œCþ˜“Í Î4ô Lfxò*تªbäŸ+géjµ„å™ '¶ »òÝ{8*«}Çâ­NoÌ){™ÈÎÉK)´ïêºI:À%Y³&ú65K5‡… žJû9e(éÿ‚%RˆtzGôø·Õ¾ö¯IÙ2,HŽ9Å JÂ#×qTù«¡ûÃVIÃTv»®fslÐz8™.'iXä\'MYH“€ïOŽñ•Ä' #µ:k Ê F 胉þgºJfÊ!’ä=™G53ñ“2´7Y]ù­ž“DJ2dŽŽ¼˜õÇŒzÌPp…»L*¥¶…vF”“ó;}D‚Éõ°Ìš+Bvû;”DÂdàZ k){ÑÃÕï:ÿ绉ɲ‚ÍK‘áy~†öiôs\7} 0zO%º8oi9ÓÕT‡4Ò˃Ž?‡‡À‰ÕˆÔ$ë±×G ÑbšÃË ³}rU¿R‘èä#¢ƒ\R«ùKð¥ökc ÎÑ)šœÓDÇàÃDg†DG?©‰NäÚžPx8 Ft˜¾úú—_FøÏ×yË ¸›ßiâJ-š4¡_øÞH“’&ªê2 M«~»øMOxꥈ×Z®² 2ó)á ¨ŽAÝL»Öÿ»°Ý(E¥¸T%l¤m,>1Äa¸ Å<=ñ£¢Â‡ ZJHŸ+JlHoOJØ\ÈÎüÝ2°ûôÕl}>Êvíd…#üwû”)`‡êºg‘cJj½ :ä3ºqsX‰$°„žW:ÅÓ­õÝŸ4&|çÑ=Lô›àï^½/¾»6gXù»Û{á‹#{=-Cg T£c  IAšþí¿}gù׿ñÐÐH>¤OðËW¿þý¯h•„$õ6¹fDÁõý Ó-ïïïú¥~t̺}²4:¶ã‘¦IÃÖŇhÊ)Ôyœƒdèõ{èÈ?"m ­µ¶[3ðFŒåÊr‚ØâŸ±Å-Ë'Ä*6&uSî”lr<ÈÉ.~ôT—4k6'ûq ÁÙïü:q´6‡4…ݼp²OÈAã6_J‚!¶e£Àa1M§ñ!EV Ún Ó¶Î'ÁaV±†3Ý\læp@þ³BÄ…—uñéaë@´éåE–O@ÑÅ­1Ztv€ïpØ/B‹¹‹úB2½‘; =žc’<øÉ#,y¾@ƒ‘"ᆹû tÚ•TÛk,À¹6kÀÌÍ`æôÈhÉf)À”ƒ¹BƒlHògõ 馸N“#¨9yaaÆW«ßþÐaDÓ\¶“U˜­³‡päˆ)Ý¢ä4Q®b5O€à$eÂâ9 Öc(çæD½ü`ÏÃUeþCʾDM¾ ¾!ÌÝgß±Y ­Á/hôxÊå\|'“ÚS{’Õ>†pys%ø™a±º®Ú‚Ä…|°ò7lT¢" H$TeP„Ç :ZôZ­ÆÃæ|9†·‘nQrB.:* £Ü:B  ÃƇ‡aÑJˆø®c¸‰ÉÑ  Õ–Îrí0"9È}{WdlåýçÐ(2´']-:¶™çeΪÝ.z+RF¦ïÄ.ò®¯~ŽTµrÛp‚FjÅ–y˜+‰Xv t0¯³fË'ì%oŠ*e/Ø þY±¼ÍRœ=²—9ª$ïÞÑÚM-^r%¤ÇFÿ9èça¶|¾ÛÓ[v{ò²XRaÚ..˜éÅf”Bn%ÆÁ™e“•­›)§uø¢jßÌ¿G6 §ØLQåî¬5Èâ1—^Þ0÷¤_!ÍÕ€»ˆXPC€˜ˆÄ‚ 5ÍZ,ðRF¦(ztÀ9‰X`.aBE‹j唩¤r¦?!0´Ë\8å‚vB.h2ÿo ø¿yÑ`R.°íP.¨ÚI¹€vCÓe}æQ#¯R^’±#U<†ŒJõúPp0CÍãŒ3Û'<ŒŠí¢ýÉ E$9Œó׳ˆùƒB/&ö3ï¯ÞïFœ4Ê û×û*<“âþÙ%¸ßLÿÙ¥Àߌ‘ÿìÙÈß$Ðö"èoFØÿ™ÐßL@ÿÙ³ ¿™‚þxh]1AÿMÔ³„Tf¤^Ññ7‰ve}õþ?rÐ'áþ#ê``Ƨ‘gÁ|õ<0ÿ °ÏgùØLY1j'ݯn‡ä7÷k4öØÓiò›Ûô•Iò{Ü#Þ1ÏQ¸ «tÉæf›<ÌÉV´€ˆ$#t/jÔ£L@÷&+fgm/.JrùÀþ ;#ÃÉâܪˆŽÓÛžò¼ B…‡ò@†–,:¤Yv#xŽžvB¡ÅmuŽÞ8˜×ÚPÁd YøTU~o‚X‘¤gªÅ?ŒbÇwwü$Ú;.+?L8½§è.ƒ6Û”Ïm¹Ë§@üY,;[ Éýã<{BÛJJ¨æÕrÚ¼:›2¯Š‹ cÔöÕ¼¶­P ¬TÒ¶Ð/ SMƤ®>C³ûÀ–ŸxÔßM]Oa:ÛdZÅkF˜d‘še‹Ú胆·ÈÊÊ•5ø¡î–UV÷èlÆ¿sCâÎÅDÉÓùUhÈyÓª†f£†àwnH¦Ãj¶•åi‹´Q oÌé6àwÕ Å6 ÐA;¤ÀI•˜Ýåt;þwÙ¬£'®‘ÒMƨ3%ñ†v~í/l9‰%[‚O'ª›å©-iÑÍbô†F¿?cK<"†§÷?¿%³Ò:ˆf9¹”ðûÄ–Ì[bJÌÏw¦ø}bKŒÞåž„¦É¦»õÿ†€ÝfGÀÞ€Ä))e"ý@ 3¾{.ûY½Àí„w`_â;e›à¸%©»âÀãài7õxβõãŠ"¹ðfèz<¸Y28Xß08Óf¹–³0N%)òã€dñ£¥“ÓÁªÇd ?Aõ3†™¬¡‡‰ÎZÄÙÄ"ÚÂ)“÷¹Uœ VÑËÜ^¼Œ¶ByrQ'_Ÿ2±SŽ mG&ö–Òt %JáfÒÖ´™Vª‘óš¨ã£Xh®BFTJŸ‹Á´ ¬•œ«`Xv~ ?.=Bò¬ÝŠ_'©ž8ä-§Ò¶»½çB³ *¿š´ž¢è|;RÕ&G;üH…,èÏõ.fO¢ˆŒ&6fˆÛƒdÑYëyBnNHüDÁ(y’ù‰<¶T½œ åp'ëÆ¶2 f$ú£Ù|z_bL}Ú"eÕÅÚ‹r±Æš`AõÌô?øaôHr/Uо„A„¨\Ü×_ÿþ—¿$DŽYðÔE¢“åŸþâCHäè¿¡úô!~ˆòƒÈ™‰r–±Z:qÃàÛ¹ïǃ{e<*‘%:'B´Ý»o˜È.©#¥AO„µ®F´»‹©- ù¤O¢îƒr¸ÌâOÌþ67¬{¬< s@"òŽÀ…ýSØ·2ú”Y¨¢àÊO¶ã,õ†)Ng#”|Tqå T0H¦àJ‰´Ä hÁ&QÛ4ä”Bâ5Ú͸@} 0¹ËŠi +CÒç­'`YvýŽžåd[ã¡â”Y£ÅúBœ[Çò 2ªu<;¾¥OS-‘àƒÁ+èj9ž…²ä¢ð‘4­›ŽP ÕéüØÎ÷*m‹I**ãttÅËš†r0 Âfi %fRÃ1|½]¹HМ¥;)󼤣ŽYâ:se‹¦$éaŠ$egÌÜš0X%>Üu¯ö:­Ýaº:wƒåma+NU¾ŠËP©‰ü·ïHJeÕUf¢ë_&UÁ 1VþSéÍ6œUå=¸;̯|ëöBκĆý {æþƒß•iNÌ-þ½ƒâ(pd»»Åy‘Q\MSQ¬ÙüÈ•){éæKê?2tOb6rpÙEc}ÔMÞ¢-?z3]É €ÑòäóŠkM[g> àYæîo%Goç÷ó&=€ðݱ0›…ì}O¤™7‚/B~ˆ¦ZÌï2…CIèk– n{PryŽ9u–äU7ÿ~;¿£|ôdúIýj<œa{c Ìvë©Aˆ‘Ƶ"kBL+Ð"·“>iðg¥áÙ`èͦꪊo$£qr —W¡ 9Ü¿O†3Œ‹÷Lˆ2îÿ"Õž   ,Κ¼po)^G4F:ôŽ™$²¿ïû#%$AH®4Ý`º§¸†±½ˆa †¼ˆ‹Ò‰1/ÈZÙ<È=…âPžtO)š|Ê=ÿ<^÷ܦ*‡*g¯éÈ5‰TœW¦Íw'¥î•2;"K$w¦k1>’UÕ^h®²¨t:ᔌš³rÛ ÔG[Vc§Dcçÿ EcÒñH4>¡ñ€ß'å7ÖAÁÃæY*¨¦<«îˆÒçµmvVÙMc§t^Ð>§ê9üœ¦ƒ½!›"›È‹Ïô…™µ-ÊËåâ¬Ì.’‹mY¼T.ve{VÄ-\>-âÚºhfODiÀ#ãÓBº iº.–n×ÊkÒ6ežºMnFn“‰TЇĉ€‹èô YYq}„“ýžs¥ÙK¸Èk|É‘» %C£$•d>Sâ †¢³'Rf>„dK@­’r¾A†Ë*7!d“²§? ²#ª¬u ÀN³ ¿¹ÛöŸ0·ê Áž‰…8Ï,5 •R *þñLvåÛU=*àl½_JFG—cre–‘gçddó„Œ<{RF6JF.PÈ8sfÎˆÈæ”Œ<{¦Œ ÕyòDFž].#› !yö|!ÙÄ¢Ú®"¦ö´lÆBòì%B²*ü8”’¹dÉ¥ªi>Öʘçܽ¥ý‹¤c:þ;‘ŽesL¤cŒË×ÒE)in%BÜú´gN‰p$–΂‡vTìÔ‹p™™áHÛñùZ–£l QœÛˆ¸ "Üú"žú³˜œBñcøw*ÊEb$¸>Hpæ¤ס‡†Ã¢Ìž•ó²i&°2þyˆ•C)×3O,Ç+¨œW­{-TÎ[›G¨œOCe|H…ŸßÞo)€¯Èê‰XÐ)fgçàQ‹ã ÕÏ!ÈýèQ¡Ë³äzÊRµ2Iºžfžçàï¼5€.àò}cdåª)d¹àyž–md«R»ö¼Ï÷LÏCdQ1;/X´m=ôJöø"ä ½jV²/Á`©Ï½T™àüúQ+*†n9ŒLÕºCðgÊBhì8fæS¸qv+IÞ3dÇL@Sú|ɰÉ,:À•äÆùEZWô†œQT®CÊ’ÔD[Qð#åŽèILOW4 Ѓœ,ݯæ÷*j/"¸4‘QY¡·FV’oòf·?.¤Þv+6ä?÷pè4&Ñá-µ¯‡õ[PfêmOÃñ7%ÑæþßP¢ÍA¨Åp| 4D‰ö‰8ÃÒM‘Kø«H»MJZ&Â_”Ü&‰˜îøŠYAˆßY‚É.6ý’øÀÍX€!by"žÅ?c†×íØ2ª—0̾iç¼Rðq“c¯ý`P ”u;R xù²='ÌãïJ/0×y$ZØFéòsâ<ü>”ç{~¼Å2¨ÝvÄzPÙµ³Ë©¯ þ{‘üZ*Ôþlòk©jÕÓ2:ƒ QË«0s†r;[œ ÜTN!˜¡G2zSRÅ…? îÆçI÷@•Ž›1—…;RV¾Uš„SᎤ›ÜøB#l!ÜÜXåoÊq™Ë.`K»-gÁ;TqßwÛ̦S%@LðïkX4œjÜálÃÑ–R‹!°F>ÄUä †¶ Úù (\˲hÚI{ì¹Ëéæn¤|-0&£¢ß9) ±¨ešÞhÈ¡ ÎÒ |Gê“æP«¤bJ‹€r Å©0Aåždžcmà1X†?O·{J±<¡†‚Ìdxä;1<qÀÅÿ4¥¯Œ° Cï†Ø¹ted'âNð!E¼ÿuñðV¯jò n·Mu6î58™ûB?ØÁaÜ7ÌÑ~A¡œ!¼§8h6=«+Ý ¥Ä§±\ì%±fÂÿ¬®:®¡Ëf£‹¾Šõ{§G½>­ $}z™ß±ìQæI¬óÇÎS0O%3¸jò)L\øCL\,¤¨"²P©'r·Ý|ʼnš ±º‘l'HCS$Ono UûgÔs.€Ék[t†8‰ágElSQý„­‰YY‰þ÷‘ѳó€á4º·Z[Ùsî­øû¸ôؼû=—­«Ê³íøßÍhN÷ÝþVÍ)¯³s5ü}rNÐŽB¼¥ÄïmiÃÌ“¦¬‘›¬Ÿþ´ûe4K…}Áçk—’XsÆ,·_m\õìWãêã«T3düje\ixÞeyy˜›QW¼¸òªÍÏÏŒsmy"B¾’²uSÀÜ 0¯lS+í‚4$Ì+[]œ‡Ä°úÜQ§âˆ¦\FS¶ ¥°oç”q˜Ðæqßuï$ƒåòËÈu{!³ ,H=eƒ!^RÏÖË`~”TÓîãÕo¯ñâA %`›¹œÆëÝ쫞”ì~o·ž ÓsM‰ZÅÝUOÿ§Ì_=ÿ.uоåt&¯o¯þHåzÊŠú'r€  TÿR’~c ÄŒÌ<Âlðù]Rœ< ñÄÂÒpš¨èþV‘Xì.V÷02. ÒA‡dQp|‚G6WÿM6¼·dzëÏϰc#ØÉrCÀEÁPxh‹¨ø3ƪJ$œq낼ÿ ðC¸&¹ÔKŒ“”¬•=•991gâª+²5!NAìxy®ì¤^~2,䤡¸Å Ó;)ºŽ\j”~›jP+YŽÌQŸT6±tëŒ(xéuæò׆p‹äRʘ5p2iV×}Óq1É¥³‚˜ZpÆ ec]}CÉw(Içæªûq2KÌÇ@ Ìý]2ÃH²Y^d©ûÎÇî2yYØI{Da'èÔ8úŸµk¡W$ ˜ºÓÓ|quÎß›ul&¯ŠR)Ùºó¶AiÞTJÃVŸƒ‡΄øŽR{aÙÏqÜWnÛó©½rÛŽ[\Œ²qêç´9ÂŒÍN…}%Ù?Ùá0ÏLbŽø1H5Ø*M§š0Ôü>lâ1ʪaRÐ[^ªóa8c•—“ŸâÜÌ}âàñù¦™v“A6ø˜>KÚOŠo¥-²éˆX)ÿM¬ºÈ†â[ …¶*;ÞÙ$1ÀÇ¡õcÀ©ý-×­LåJÜLY? Ù  9sê<;Ï©7j4ƒœû§0žÌøDÕÄÕ.x2iÄ~íØÜ iÝyñƒ9`•ÊÑíª)¦äŸÒÿÊ?%ˆ@+›ßïæ Å_£U¨IqJß6J‰Í ¢Ès¤*±4'mÃ×S8üóL#B54P‹cB5²œ"T©%`L¨à÷'*úÏ*1L*i¢rg­·øû°‰¿$´”þfDëòXoOš¦iÝÀ iÝlDë\†òÇtŸýKú¬mݺh¼ Qawš.š¶å²Æ£ƒt)]Ô­\FY¥þZº˜¿–.Æ ;B—á÷jOBš¯¡dqVž‚´çéÁ™H4³ÔN²¥äÏ"wcjgX~!¹K•Ýí d6PvÃ\þò!œÖvŸ%xCm7µ8&x#]÷GÔiÕcd–êºÇÈÌÿ® i€ü!¸c ´aÛò,4ƒßUÁ£š‰ ÖsHÖ/g‰| žÅ àóeyžñ(åÙª,Ïj×{"a‰nÅy烌·÷œ"e@†Ð9Eµò|çеtÅ@¿¾xZ¹NÅ©ââ’øû.ªÒ—t??NXý°eÔM;"@¯þ÷kЕyÝîcy &ñ2§iÞêå +¸÷Ïà·? ™:ë Ö]Ó%µ¾À¨üJaà© ¡Î(BR7æQ‹ßAhÓÀ‘¤œ•ÿ7àÆ¿%hü7,Ó:™GU%t|b÷z3isx§£’€_lLLà¤Í®! tʵ!+VŠ'¿aSâ4yÖ”8D“ß°%QWC¨f“^%àù„å”%±¨ .>&¥ ªÄ›T×–4ië¤ “âÉDGoÛº9–…þÞ“/ÖC  œhƒ¥´ªj@3JEOž$:T4jéóJCJ^"ÑΟsF•ç¢Mà=^ õÞ)tYÂÌýóf„04ÊÓã¶ÇÓ¤Þ+ÏD˜yi&¼WWw_u»§ñå$a_iÂN8õ©á¬¢8wJη¡Xb¥'7Ñ~ŠU>Ž£€âxrC‹£œªFyl¨xô%—!§][Bé-ƒ>Š<À•ÖUè€ÞZb\i:VvJùVÂ"¨Žãn¿”²=ý]ª»Ç@Ís‰èuqµÝ¾÷Äc.7ç2»½ Ø cä]<Ä0ú.}ä@1ÝÕ~~÷ ‚¬Åç 1'ZûÛßÏ$¿yïF¹®cò} Ø %Ä7S/èhQÀâ;V`9ÞýB26,¯¶ó#„« ŠqC6EÔ³SRb1r/»wI2n -œäuÞsN#‰ÅņLü­¶ØÇ¨–r8¸Û¨€%Åb“.òfÏiv1¸Xø¼.Kµm«wU?ª:gL½¢y38Éoo.²˜úÐ3gë™óàa14÷á·Áš_¸"›ò’/ wÞK¾L7ñÛ){>¨¥ÕsZø{ÉWEuÖK¾ŠÉ‚'MúÐF]ªŒUT]ÚIáGYôóÂMY•Ú²7 úÌ¡Ë,Ñʼnâb·ÑÒfÕyN‚bì³ÝFãäñÕÜVÏ~5ÚÐñÕQö÷(Ž ówUSH¼öÿ†H¼0>BâCo©Z§ŽŸŒ5€'†^-|h/Œ7¨9½ya¸A#ŠTáÐRc‹x~1Éó£Ë”YÃ7#kxw2@ÂöE["y` ZÇù ' á áðTKòsb·~á[1g1‰„VVØ?Ëæ@$„[­àZÁ×1Qù&XÁMš2­ß(Pªä™²~cTm†þàÁ$œ#$𶄝ƒ%|M¬®þ öÁ>Y‡6d•ãSL…™fðdï¶Óp¹Ã~äÑ.gE,áT>°ŸL8Öo\« šÂ“Is4à9S¸Iç€vpÖ/ŒÌß”L8wS5¨Í­Øù8–‘ÁÓÆ2Õ&V¡VõÞñŒDÃ7Á0/Ó:2`ûî8ÍßRuclÄø\±±ñÉ,ª¶h«'ЈrõTneø³BD†¦’++#ÒF»;sºÈÊæd]Htì_Ãóo/ßyq5b 7ü[ÀS Øídóv6+§2+™=«YÅÆMŽóLèµ±º º2;›ƒ~7C7beKªÑùÊžó­Ã߇M¤FoW—­êQëÒä“^F.Ïû«ÅÑãómõ,«7<›cæëÓÙrg«iµj^&NË‘#чŸ÷öB5iærµ¼â,.o`öÆí› ˆ!Á¾Sì;y]ϲ{£‘“s>™´¹Èòb‚âàŸÇ‹žç)Éù$$G˜.Ú­i’æLøó0R„Jæá2L9æ¼)gVäe¡Ä™Iމ3ðÔ>ä$Ï”SúF(:Ýœ—gàq“ceýàÉÈÎ囟M¯¬"—Oœ2³ÍÙ ¼þ÷S$G’ïZçfç“øºQ‰ùÚ •› Zù ÒÚ”yUŸOQ“P-/QÔö9ökl»¬«çدñYÊŒ9Iá†é”¦jA{Y¦Ö‚†¿ÕÏTιð¢vžš ä8^_W³¯¹0¼®q™"‘æb àšBš§Iä,%‘­ãb»B!»Sð“„Ófœvª Æ$áÄ?ÿa´OÎüå„Óƒ×ærÂiËR'³/¦ '>5¤rÿÆY‰íD^zã2—%œøÀ¸É1áÔž ípÖÍK¿Œ,Ê m8מ£œðût Db7.GçÂ!íûñ´ÏÍé¹â€öQ¡¼S´/±íª„ ¬%Á„7Bl¶Öù¸ìPyèé/>2±Ã—X¡@‘jæÙ9‰%eš†a¨—œsg½¶ófB~j¨§JE{*Û KEÃßN•ŠžŠÐš ¯ §"K:SG,;~ˆY²ø|ꚺPñvå§I¹â¹ÜDˆ3RùÉxÓ&R%|è×ëÕqܼ¶+›s•}CÏ!sYÙÜ–8yß’’n}âthL¶e6\º1ÖjE½(V}ä[Ð&ÒóìäX×OFÿ¶YcÆä¬Í’Ø_Ù;„Ò'–½0ܧ›“Àe•!!¢4Ä~uv{.Wf] ‡;Q®ÌºvpÉ¿õ @˜Ö5S5„,æA=碭2¡ê6ÃJñpõÃÃæ Âa©JÉàmȨú4á&¨\ɤñÏ–\2c(¥B‰?L[”#ÚfíÝÕíËh£|ª—Ñ?Ü'¼ð°éyã™TGYZNfRuI&Õé,-ƒLªá eæ)2ó,*Ã$¥”¤¨f“t&¼ÀL§’Ü”UøBÐÂõŸþnÙýH†8^;6LÜ1ê#ÇLœzF-FÝöºÎ¥ª™‘gH5?—r «häüµô¯JNcÎ+• ƒì;2ë|@ËÌ'vÈä)Äô×VÕÌäEVL²"+$ w˜L Df’$Ø) ‹9R #Wƒ~•Ž›Ô¼½% Y̼‰)R'7•Á]²_’±/l÷D(šdxAû Ç¥»B°µBE›ßˆ…¢²«æE¤²>ÐLÅëåÅà†pmRâ´ÎL4×>‘BÐEâ7h5¢Ôé›ÔÄödÌn]Blk¬¥Ö¶§ü»]ÞÒﺻ]lªÌŠÄ!RfÅ Àç×™ÚÈBÆ#Øf6j£JU¤SmØ€MQ—OFÿû‡þÞ/mÄ)Ú½™¶ËksMº46*vB»ñ¥íÏx)‹/•YÕ<ï%«^²u~¡æõÓuªh±g½í°h±ÿ[s¢h1ÅÛj„Z7 BmFGXü ù£\R{¨|ÒÑ…?ÜoûãÛ­X»DR$GX ö¤ ÀBIlKÞ¡ü{øÈZr¡ñ˜ñਓ̀e÷bþf&lVe륉{ (Ì›N_;Œ9®|å4F5Œ:{F•}hÍ´róHUI³9ýª¥ô6ä+ÔtX¥ná©C §Á ‰À¿£_sª18äÑÁ´ÿ»kÊhžÆ‚Åž¨3ëD…–Óykð¡”êJßY´Ö'ÚM)Å6¨ñ;„›ƒrPãW?¢;Big›6C¼hmBÝ[ë[¥|“Ô½(Jú}@Y»iYÐëú¿øÁu/ÄÃm/Äà ¾ÂÃàBCÆ&t8…wÁ¾ž)¼;"\ ?2µ))Øm1ÝšŽQ°ŒòÊè|ßcºE^Û–Åê•.î&„+øÖ  »æzwÐ`7sH¸rí*Ð1J#ºï)×kð¦&¼m‰µÁ“7äô B<*«häO‰çk=ò!± Éz\0©¨|) ªêA‡ nN#öƒêÈÌÕ‘fÿ«A¸iSM>çÜZP5Yy~wƒJɘI©SÆÌß™‹+Dó R9hHçPÇsÚ‚ý‡&Jçõ€'Õð¤Dªô*)Ɇ^ýtÎÂT‡Æ»Úou+£áõ#˜0þ ÎГ>WÅÄucNdcWº¡äuH<øGYk_W1F5‘bðµÁ‡Òùß×F×ÍtF Îz#š >I“±îºÑèÎ&irxØï%«^jOV8« »P"ãòf‹ÂDž©ôL”zC+Ï+~dêT¤Œ M*Ll®ºÃ±¿“Œ\Ú¯W㋸‰Éü ôOŽzWôA+¯×£šÄc­ÆLi5º'^gâM‰^ξ“"›}8Ãüê‚yD1f~$a1óë‘ç­á­vûãf ˜‘tÀ…ÀJt¨fÙ¯œÍ©zk¶ÞgÌOË bqÞ˜÷lMAƃ¢%×Ðí÷XcU(ùt\kÉJÌûÚ…Ãp€Ì1ßoR‚wC`:&áËß;®>Ö”€-¿˜ lgË1±7$hù {Ô%­°xÖ.ƒì*;4jÌ‹(x†Àåð°Å4òs,Ø3Öù¤Z>û.–qB§N(Q{˜P|òð¾:Èx˜?)3¹ÚNÉLðçTfÂ[d«1_\k¾˜–±F)&|T|q›iĨ»)Ƹ¦s1߆ U‘õÐmTj¶qu¼9Ü4Bt¦JTxí ›ß98ñ_st,ÂJbà“8óL”êEÇ5a²ò XRšŒŠÁt±[$’×Bh Wmõ²\ÿ]fónÏåxѨ~×-b­´ÒЯ|¬á–RÒFä]þHÄw(Ïä OFI‘˜U‘±ŸL‘˜Uº ;ENîU1%²}l(ŸÕ^%B~dÔWâœè¬§tò`“rõÔþÒÔXêdâiFÁ߬x=) š¢D}gÊŠ1ÒòbߢB—³õBS1^ª]õ„Cb°°S)¨6›æ¦¥³åª9|d¼ËYjHN*zc¬UŒ)f¤½Ø0AHå—)Õxb-Äi!’LÃRéÞ ÇÔÅ[M) pŒ­-ÈÐ,Í“ ÑýŒ¹f—·R#ÉÆÉ¢# Å õR{Ž…NsPs–…*ÅÑ`sÒdíTIb¹ÚaIbø›ý›åÝJÃÞ'E²n\’$£ÈzV©kíiM™¦mYOŠdF•yÒH‰k&úº³ê:ó<}6˜wW·8=ôrµœ#’Ø58AÖìI5–¼E§ÇÄçÑØ,º.Õ§|ñ!]Ôåóív· Ï%{ÂsÉæS²ü™)< ŽÓól/Ú†õtþû]¿df«æ”8‹G=>2ÑE* `^ƒ˜ƒpïڃζG¤Ý\ 䜋°£ÓóêjÑ3¯¦â·"‰êà`šÂÐi1yÛ´$å$e²±ò|ðØyIè°X,„$ ðû: zˆ}6ý‡l·d <³Úwd‚Æ9ôÉä)¡ ‚ø¤‡¢@¤{‚ä5fð€cëIw×-ÁÔµæ^5ñ•žC`Û<ßÁWÐuZÑyHƒ5¯’„$ˆ÷sD²’ÈdÃ^ÔxÑÅÍi)2ÙŠV×/ÇM þW2ÞD­Hª–Ë!›‘S c=W Êøë;°‚›aÑ{Çž‘O¸`»:ŸJE‚ÖÅóøråC‡†¡Ú©~£¦qqh;9”ýÊ¿†{H›ÎÌèJ8Ę̂×>‰)ÇRÉ+˜½*KÒQù8áù½¦_€ÐBŽRnÊa:/;[¥µ8ÊÔhôst“ú¢*΃þ #»¹NrŽëN ÍCåÜœ×èùÁ ó¦÷tbÅXîÌ'us>±"÷,Ï·;¼Û.ã@Ñ9Ý'lXα,FÉ6 zd´àƒ®`¢m WA¢ÇÐßWRXHn§5H»»ý’ ÈŽQ0©5“1~ßû ÚÁŠÐg‹&³íHÁMª\ªë¿O¯q·LJ¨¶ÔªÙߎ§3_D¾G•—Šü|æ‹xd©ÜRÑœæ{ñhâ³®tÏJ~U$§_ÍËú‚WåRdhe/xUξJ5žùj8f3ZÛóêŸx¤0uXgcv¦¸V/‘8pY¬šÃÔ9 Ä"ktu0WþèÏcdÙîç‡C,ÆØ9x“ „+pý‘38 §”ŠÈ*7©žЏX‡d—hˆÿŽõl© ôDô|XV©7T ¢019½!Q ús%NþêÝ ¿²¡ç;…iöó»ï®IøÓiI%c˜áXiBñ£¨˜ƒŒ”ÈŽ$î*ß_W66 q»yšìeæË^œ¼[b!ëèÑŽ¶ÕŽöJ|J‹ -µx1{u1 nr‰çû “‘Ê&ÌÍô¶~RjZ>S›ñ™rU²™éÐga3 E‹§›I&2þV'2ækɸ>ùROÅàQðQÏ×-rTiú¾wÈyuI¢Ú¹ÒQ¡àŒ­D©N S.P / ÌÞV”ýw¾_?ÜŠÓ ²‘ÒýQZÉ)3mCȇà·ËàAå¢v½Ô…ojq‰fwœÒÔcâÉõlyþ6·ÂQ’Žè¤+Úö·H/Ä*apçnñ ß m m‘B´>¨8Ð>ÄÞs–t…aÈÞˆc¢€x¤Ëß{é²›/Å »Ž©Î螨]\æ|Ñ–©ê#MÆûž¬Yß•%ÿ eRBg噸êÒ-;ÛÄhØ#Ýš»@\pßî0è¬_=©€3ˆ;E!üFQËe‚Ü)sñT\oÃzÕR <™Ã‘D_;ûЦ’žƒk0okð³ü’ÎÝ£¿A~5€/Á‰S!a$Ëúhð¼<}$Ô^bÓpâ²ã°œ²a7t^-üél–4´òS¢;Ë6§þŽH)•ž¿¬`õÌY'NÕƒŽOÈxÌòªc5°ß‰V€&‚ ®ËèA‡õ»î ó-›Ôº‹–tJÖÇrÍlžl ƒjÿ&.è¾{GÊu( ÌŽ¬¶Jæq’]¶$¦VÉÀIˆ*c('–£F1…ÜØ¬Ã4Ÿáºcz­Îßm< ,Bzv„Þß¹»EmbìXР¼¹‰:ê5<12ÏÁ‚óîºævÃ!oÐʼnÍæ¨áë=ø¤îÁ쫃'=¾AI®Yb\¾!:JèØ,¤ö´ŽÒ[sAßùá(gYÏQÖßÝým4œ[ ^ðpôD’±9^Z9“#Ë£õ¨“ÞÒ§òç›nñ)ìmLtµ‹&ülcÖ€FÃsÃÍâ¶•uáÑ)Áƒ:ox´Eš ŽøZw…<ºÙ4 ¥—q=Ø­‹ò)o=Û4ùTº»¦É§èŽ›¯oÉj“Pž'’4 ¥m Éå õ‡ßîûuÈ4Þ`*WXMy%¸ªuçóÃã&ACOÓ~˜v®ŠêR:¡ë‚$z³éK<Ü‹õ¥m‘ŸË —ÛìDtO^äª’Ž«G¹ájzdbRKº£t˜#À¤þ*¡Ç”]3^7öhâ9ÙpîS7äû¹< ¿OÅ;¨"td±—‹Ujªc¸¸ìÈÙ¦ãì”Ù2Zúó ÍâHXÙqF[Î#i`%„§mÐý;/Çu{®Ÿ‚ô68M¸L¬BUˆkt^{'aG’D*’¬žJy¹Q7yƒÌ(ô’8®Ð›•ЛµÐ›è´Ž»DIâÈ€¥É‘ÐKÿ—ý| –hQÎÚŸJalËvŒˆ þY“&¦ÏÅIÒ$×— þ0Òåe¸ Ù47£4ÄM J9¡‚%g7ߺ;ÎC ØŒ\Y›Â>‘‡¸°f²QŠÍP° ž4ÅÀô~«=SƒÔ`å·.š+¨_Ò§ p™ãï#?†…H´–@;%%HR/"K~^¿°G2„Û²Êj£Â$ åDxžñHm ¿m³¬9g@²¶vÓ$[´µ2 µ#R;ÃGFvÿpe‹Tïƒ ‚fè¥T×jàç2ê<9ÕƒÜÍT_"c€¢VÍO›Ë'éT1‚Bg-Я%éù€‰ïÍ‚¦‚| ØfŒŸ‰%áXèÖYs^ .¾¬Î*iªÒÑ~ÒÉ[:ý‚òž®JAÊåàÐP àbÍC5";†Ð „î”Õ¯?ªŒ Ò  xM ›ÁE!t£ŒH y¢Ê+äPi­8%a Øëòjƒô‹à")2)é2çw””†/Z¶‚Vþ@Ì”Rhµi³+nv=ö¦ ÎäƒLêÜH°ßaµ—ŸQ'%ªð£±ç”Á#kƒ2=9!­ºÀñÛù‘œŒïÖþ"±[¡…CZ̨Å*…Щ:*»(• ¹¹:Ô!8ëâ.¢¹ÁÏ· f…ªF¨7=n¼4 šF6_F_) !ÇYvrVÓ)Ö¢¾É’q6‹åªV'ô‹Àåw™-çkÌn„ŒEÊÕC—#»¤@‰ä+§ÿ¾AN>y–Yêž/üÏóùï¾ùò×ìâŠiYý›_}ù»ù2dýA;‚¡nPfÞmIþÔ§’5ó ÝÊòÛn¿îÐÜÀŽüñV©I㛾 î¾èîšžC·ÿžTÈ@ÙÅÑ9m·Ý­µàÆðë†R¯‚f”*W?Ctýš†¡N4#B-*:Úï%ûJ!V Æd@î·»EÐù…ãf¬® ¹éÙFû¡Çp©în÷°ÞˆîIœ­Ñwxë)7—SÚ’”,†\ü$EéHè.jªÉÊDDÿJ–Ô­S Û¨”¼†¿ Î˃è¢!*ýJ0µÉҫ㕬ù‚ÜF1œò†x·aôéa‚YÑûrÉY¹DÈÐÝNH ztMJ¡ÖB¡fš¼2Ãyû=y Sv„¨+`}ù¶#Ý4û¡+»Žý"l·¤áŽùcÑNÓcÉ)ª·å\·ð g7Põy ÚR´ã0Õ‚Sn(°hßá ?­ Þˆè¯Ê&áÜa9*øU§2óKOvªheîEñz:R©á0;UÏIŸ.ö4Ù%õ¿ÔišÚK.1šcÚ¢H9çîÑ$:UߤP€J7ßÊ)á~ÔØ}L5ŠY BzÓNʇpz˜†Ó-7)RÚTÙ“EJÛv*ä ÿœHÈÒ_¥ Ry£«Uð)Y2\ÚŒÔxQ£ab=1/©gi=±1y(¸—tgú0\-öÀJf ÍTþ¸ A³e¿Dc,‘½ÂÆÊSm¿ò‹N`2£”×òAÔ†ýÿ½?[Ž$¹²DÑwý —óR^D\›‡:r’YÉ®”Ã$KÈ,V_iöƒÜÜÜ< äÐ_uOª[swÉÊl‘©Ha9lTSÕ=­½–ã–3š\®i*•=ìVxÜíA¹¸ü·R䥠è²âCÃ%ñ¡aØœ¿¸ ‚$EÖg‘¯ý)ŽzÃØjÛ«àÒ¦´#üýBì×i‹1 þÄ'Â/EÏðL@Ž@!$œÛ çQt­ª¨â°Þ\ëñbuÑÇ3øãÙÛäÂz%4¶¹°¾³ÿ‡õDöW†õí囋m¿IˆßW%ˆÕnÞâÛS Ä7×ÔáׂRÔÿ¶0ÎëÇñ Ãx8;Hd¢ø¢ëW¢øz¬U;¡Éî‰Å²ÅSNÕˆî¦Ãp´:–Ï}jkhº~Ø ç"bÚI)Õ@5çÙµÁ»Ûä#äYÓ›f‚ybÝD¨\ÒѬN$Da-¸ØÊîO9fJhCíRH©–Ëʧ‘ÿÚ{‘Z%R¢Ð ÞgS·Öû¦†ÂOÎóua)‹Ì¢ÌØ…c¥¦µfÿ.ïý‘r7T{ºeOwŠÏ“<»ýÿáv¬*ïƒ{£Ñ)ç#ªÊîˆl\Ø:Ša¾Í¬øÃòó´·¦¨›Ø©œ}èa8ò¤ÖÈããDã{‚°=²õeÀrU´Ð~*ÞÄžzAÑ,aKQ‘cÄ@?¢/ðŸÐkÝM?qL$n¹ýûÀíÇh§Dúÿä±úgA´¤2@ stë 9ø ŒD4Dï_ŽïÙ-ÙËùçwM¯Ôƒ‰ÕRîÃÀ!£ÒZ¨B9"‚V8 íŠú¤>4Ç%°½ÿœî‹}Ê ’CáûxjJuY¦f¡ßbâ’|ÀœNû-ø»$B\Dï7$è9Ú¢õ.ºì*e#O€÷,#]•È ~èWújº=8BŽ´]»Á{ñ£7éï`ÙYíÙź²81¶Øo®)®_^ÏmfmpÉfoEõPHÖÕ&NéDt´®dh8…˜—z¬Ë‰œD´)'»’&¢åÙ>_^´7ÓA£gèË&ó Ô;è„0Â|æÏð™°*ºÛ-„ìDÍgkö—»å-L4#ß)˜}Ü‹BZ?8C³V ²*s—OàÜëΞDÐ1srÀ Î, Nï­%p(W½6˜ÉÁú#u0œËáÌ>•E¹Aˆó!†8Ï)o[ÉÊàdöì8-¬”¿^ËLÁF(ÜFï~˜÷¸¿>éO‘ð5mb¾&GÐ%?úLò#kØDå[§tÊødð¸Ú#˜ÉQNOAÚ;Ìx»$!]Ôä?úRr± JEHÌ}F“‘y™ü±«……çÄD:BKŸáÉäÓþ^,Lçr]9¤¹,–üÝ]9\™øè«êbâ£ÚíÕ^Ü‚,3¸–ëK ‚ætîâÏ™ƒ˜Ê/ßQ®¤IŠÉÕ¿²x&£EŽ»˜aΉ@ÍÄ££D šºí|Ö¡_Sk»#dòî@ôlM[ædÖ›¡ìWÒ†ÓeöêÔ©B=¦Êþ ÒUâã×ÛaëT~QEZî+°ÌS”uy.ß?;ÀkTø•ãüDݽ%בA t¹”Boÿ/N)ôU¸2¥ð²)~vü—¦âûÄ 82 ˜uоž50—s›$k`®Ël¬H «Úq>kà½Ä6€u´Rÿ©£|­³ð‹CGêlŽu¥õkö]kÚ¸zÖ†Ú_WA +ôAWEí°cQÐ}Hš«ÝK rMëW™)€tAÁB¥ú‰@]˜VŽðä mŒÃüL[0©‹¢7ðHáJ=Ÿ:Á”,¡)Dw9‰ZMÆ —ÕøÞ¹|;gbýZÁÂ÷Û» ÊèF,Ð&bæêË ;OäzQeí@€ÁhlRp:U¡V[T¸`r˜…À«‚û¬ îFc fÂ8ûºEëÊ…NPØL{„ðç2¨æ‡ð‚Ѓ#xÌçÁ šVP°J5`Ãpøº½{Ýýߊ/¨ß‚/X”_)ôs<«ý(Ù{¸4OÒë^‰t`ð‡?ÒÛÄ€{×|Šè‚Å£ 'š•³GË?†ò¸eÍy„A§&0ؼ a`Ö çæ<Â@` joŽ!ØéCÁ!æv› …Å,®a›˜‘ÜdÄ‚L¼S~! GIG‡Ñ¦y<Vof}E…ø‰¶y¡è•4b­³u¥Rßk,D¬÷¹Šý|)`e¾2 PÄ#séùl¨PHÔ§p~#PlúxÏ ¼óéQ iݹô(·P Ÿ7.„uoz5#:å„FÀ\ahCpÁ]ZåG÷”‰“ô(jP~ÿ+‘Þà!ñÃȈá¸~r3ñ4½x=^…BXV¤ˆL>Ëwˆr„3WØH»PC´à «\¤÷Y„vá4 L»J—“SLÄóB$œÚQøU'ÙDy ksu=ì@ƒàjûºãüÉÌ”›5†•ýtG\‚²Ô_?R¢ÎQ-+뉚ïëä·AîÁ0‡Ùõ¤ûðDÝo˜5#êçh!ß¶Ÿ`Ô)íCOóƒBƒìM”KÞ0œá{”©â¤ñA/X*ŸÓÑd02¦|ÆØáˆöÑ\ÒÍj‡p TjhÀá%+jÛöø÷³•ø*,ÕÙ7tö·WÙßÝZÚ"I›Ö½•p‰n¡ªˆžÈxÖjZ¢¬£Ô/•6ƒÔ¯ý`Êå%ÂBDwûÍÇsi`c܆ŽÏcQ¢Ô/î™’ý5gÓ¿ž[ˆâ4°É¦1eQõ×p`6M™ãÀÄŸ3#J_ÄÁ®9уQA ‡° ¦ ܈.‹ Ó9ÄJQQB& (ÃÜ‘¾èdW¬ Ñ-ÎÌ¡<"6¼Ez-Õ⊂¦é*òßÅC]2Ø–ÃMEI¦@i¼•dV’LpP87€ó¥¯eC”Y"ŒÅ™Æ8·P—\oŒƒÎ7Æ1!YÛ”U(6ÞôLs1@sŒ&i³mwÚ­ƒ%és‰ŸÁþ_œø ÷s!ñCßê­]qŽÇœEchÊ1j‘œŠÏß´£8%GϨ¤{"î5Ÿé#ƒLOŠð!z2¹TM5 çy¾ ’IÕÀÐEÖâçqµ2Á§Áwz¦…­0Wc+15ÄE.á’æ1Lâ,½S>È{Vº!F\&(½tÌ`ºæÒpl§Ÿ2ð*ꪔ4Âû}~ØÞIä“fNHУ¹`+ºDCü}1E9‘{ÝdÂ9\@΢Cf)ù`º¬†z]qûæ×í3‘iLZÛ—ª‚ˆwƲI[zx¯e(=ÔH=Û›¼ †¿{}f‰ jÈ…ÛÉI»å‰„­*ïÙ!?ÏÓbýþ_øŸ0‹èß>¿¼RG8â 2yáÙqÃ쮎#–®òÉÅn]5 fË3°Égžèÿ° W¾†)R27ä×=q6³a o¢‹y[.ž$]v/ý [uS–  s¿ù=Ý~žI™€¤ƒ5iÌ-¥·ŽÏa¥”I˜MÀíáøÂ ¿EšºÝ?»õPA®p-ÅIê)Á^® ›L]ŠlíH¤Ä~ „l„Q\|b‡³cçm¬²‰¸ü»ÏQÁ6a°»Ë{!1‡é*Nœ§ƒW.`)W€à1ßý‹iç_R@,å9pÝVÜ× ’‘Œ›u › ‘\rrN“–B¯IŸpÎk25ÉN„^ þ¸æõÀÊSç÷õžß×Ãêù¾d‡çM•ž?&çÛ Í&âú5õØôéàÇ3P$¿¦)Úô ðÇ3PŽ#ôŸwéʶ;s€Ö·©y]~\C »òcØ©Jt~r%‡pùÚ` 4èã Àg. H|m Rv)áh.TGs×7}uãm‹(ÌÝOôxêPµçÅkÚ{ÓŒuž{VÓ#òµm´žzÅËî§w0HŽ%Ôþ Ç—uZ„ã§:¶jšü±ÂäæŽµáS†²Øk§•ºnÓÖçe?°jŸ5O@¼*°'1wÖêÞm¶ÚýV.Ñ*z§gK£›íàéÁåþdB&Ñx‘½#x>ÑðXŽOÂ5S6Ù:~‡£pY© 'Ç \1ž㢣y @Xd Ôœ‘™ðÁ‘ 49–uFàýÍ×LØ1#aGÂ><óñø%VµV0=JPV4Vh«„«ëp‘v 9Mz¸œ¨—+ì¬$³)bÅzÐ1qÓ…tÄÕ`2uù# V1ÿ=É"…«XƒÂýèd#2œÇ)IiS¤Ç{vª¬P-'‘ù˜î¡*ÙþFSÐÔ¹)›R-ˉ!Û;ìv>:æXOŒú¹•&#®Ìy2âÕå~_‚`g)f\qXk£º” çq@y<ç|‘q5AÑÓct$Á§‡ÛŠÆvNÆVרB6i;çÆˆyH¸j#!#CE15ÊLë1Ãò`fY¸!Ñ,Ÿ.ÿ#[ÖCDÒ¨¥Ä(žäØ}~b@þ[Mˆz¸n3<»ºWבÒþÔ,.ޏ¹Ö›¡£i‹'ÍÝÌ]Òmãí9¼l]½mB›ü;QÀŒ¬øn¤ó™­N\ Ë1>ïc8ôúéŽñY”"×sÌ}Írc5#Dü«a÷pöƒEß wƒ À;\¡&e%_ý2”@ž\üDØ“KÿF>Ž`kꈺºf;§¶­Ì4Ìnç¬8V<Â_R ™¦ÓÕeTôDÆ€Ô’_9v0Þ­`¢™‡åH¤‰ü T¢'Çãë¥ÁŽOŽâoË7Ë<;M:¦X 0Âq|‡¡Ð#ͽHν eÂì%¾yE·Ê5µ^Ÿ>»×ÇGNÇ¢Ú^“œº´w"õIýˆLÑ;–«Âòö4{xS±±à²¼¹ùñyyy™ž¤#‚V¹¤LôÓLWȦ%[¢ë4 y5ºˆŒøÐdG‘yï°}ZN¢ÏÇé&°+3I¸Á³cùµÀ ž(Á‰û3¹¬Žû. ƒî ááaç%‰“${G8ˆY1}³¥­Ë’tT\&º2û%ÑáGõùЉ2·†jðè#8US†¾ù®S$gͨín÷LïG-Ž ø–wɺ¨•M Ýç§ò*eO4G9m¦·Ðăâ¡I ù Á‚ݳ£¥õ¹]·3Ÿ^ CKIvtEx´ _¬Œ¡ŸíøŠ¿Ï ð*òë§Êk—•¸¡!@Ó 7­øÃÊ^ûìcsL]/«n­cH–õ˜7±¶Ã-Õ{Ä?#›­‘+Ðäs±À-"&‰z"thú´§OrrrÞ‡ÂÝþñgøága‚„1ú+i{ŒÊ4k2ûƒSC¶XNnÈC£Ùsh(7µ'a,gÁ§>1—×}Ú7¸å`Q]v1ZÁ ± #k´ƒ¿Ê`Ûg?²4F¥Ö¶xÞaDÖ&lH6m1Cmöƒu4À¾gÀC"agC‡Š3ÓÓF C^‡è:¿#æy÷~û°ÌЉ³3änÔþDLè-Áúˆ+{¯/G0!‚¢ –ÞwH,ßH8|úÙ®ÔG¤ÀÆòI bwTuá4¹@ZH° VU!' Ú“¿˜wSÜæ;!7ýBüÓ~¿evP‚õ&]"¨kXœ#ïH QY2T³Q[¹vb¬C¶}{´ êb…Ó)ìçWÈàÜ"¾ýÃ÷ßü·oþ¤©¦Áp›@rƒ<°!‘J,÷ѵ¸ÜžOÛ ú Nì"¯\»—À(Ÿ€0-CÚYj_v cžPž&š¾žîØ>”Z‡Àdª¦P•\F…íeÈ'@p_„ÕB ëî$î¾Ã£‹úo 2½Å Û©Ñ€G,}/!e›ÊžîrGXœr ¸¬– WòQÌ%.|óþËrÿédƒƒBkçþ æˆõ+Λ¢˜ßÛf§Ÿ‹{Äöåäü2D¹"ÈmȉÀ¸ÁaÔî=gÿzm¥Î‘Ú ÈFd'ÈŒbÚäÛ=å’Ã\´³Š{“›,·H‚Hÿ/ì£R20ÎϤõf7«G!õ‰ÑÎyRØn<{éÙĶ>† ÿ79ÿ¢ÉGínôã0-øèré'ýÜ©ñî†:7Ïp•<Æž¶®EAݳìÿ½¤ŠmüY—äy}V‘¶ø'Gz<-ÒS~Bº'7nyÆò8óL$Õû¦Tð [ÎG†¼ð%àñ\Ùãÿý»ï¾úïÔ¦¦æÛ?rÐŒMwZÝE)D„¤Ñ³W².ðy¬=xBFE§H`N‚†¾L±˜›Ê‰—£é+­é3©éã´!úæ§å…°uŸ®œ€Ì¬ b1™ð’S"#¬» N@ZðÊœMpÉ‹í¦ÊŒ‰ø@QòlMÄêZÁú¤ãAUû€Â°ÒÃÂiSc…ÔdNBõ+õæ6¦av{}‹˜†ù=ÇÆ(¯€‘:ö½Xޝ'„žè&üƒ& Ræ ¯Ô4uÚÏ>ãP ¯û@NoØi@ª5ÂBAqÓçxÚ¦Ö6Víž;Õ&©ð&åÈ1¹Ç¼ÅÜŠÀÂq«¸ªMÝ!cË49. ÆV I¢ ÞæÒì(Zø‘‡BÌaw8ƒøœ¡¯ÕJªòN$•È !$€éâ~yîÈ_]I&iÇÇKN-?¡2Ú.·’L¼’šá±z%íé)Ï.$“YI æDs+©ǯ¤rŒwn¤CôìÀ WÒ=/£Yð€‘¾‚ðDG‹¨+ÝÕÇL‡1ñŸµîüÌvn9Œˆ·µìé"ùE³b÷û°ÉðŽ˜©îy&’åCñD|³*0C®S:ëŽIı«rq¦vRQJ žQ˜ªú–ï™ßÍ–G¦+IÖ=Ö›3ºVZ…ë W_àÅV÷œ™·5F¶šW0¨+M~EF¸6A¹h„hrçé9´ ÂÝî~öÒÂÁvgfÞï˜Õ‹­{•åJMÛ–²µ¶9ÑŠäIʾsR{%q ™0@*á_ •$a„T>B©N6&3²(_ }û´{½›~o=¿w„êÉÙú¡9Ûv±š>ú¢ê¢Ø!@ì'5õ µ¬Î‹ ÿñyöHÂ~ìl|€Øª¢i‹€2¨ÅIÿƒF™ž†¼0ñyø£:ßÈíùLäç—]z_ü1˜Y Ÿ«±¿xyÚ»­)klšÒ»í#¼Ð ¤ÀFuvIB7½ÐÃiþ;¹’l'Ò¥„&×=”Æ:æn?¿p}•¿.ñU#?ðŽqøEÆ_\H´T´ õ¥#¨âÔ_U]qš¸—«:óQÕà¢òdÐ+OàÄ`³h“…DYOº¦ŸM5TNùîÛ+:÷ª¡ÈqTãÏÚÑP³DtKASá šÑï]Db¿sÝ{©Gªî½žQ6‘ìÐÈë­Yq,á¨t¦ÿÛö÷nSWØq/køÏ¹¦9<`õº›Õí;8ñÂþ½©»Qo¤7Rüñü±]z"ü¨w`xØŠr¿yWR<´ 7läÖø¥9þ˜^¦Âç3=¿ÁŽÄè|üñ † )Mž5Ÿ·ö¿Ïƒ!hª¶z‹!°Á–K6"º{Ѧ CÀíGÏmÐ,æÎí™’ÒŸ=Á4mwÑvlRÛaš®/ÎÙŽfž‡87Ü–MÁvl𘕙?”æ¢íÈ™Óâw¸Âtd,‡¹d96WYCN{˦£Ì‚ßÇfU¯œ4‡Û~Óá,|YQ')ž„š“ÜòŽÉòxîpûÒo5z4Ü•Þ6(ÐÈY_÷ÊZtö‘œ¬ÚïAõa—Ž Ùë{ÿªîLŸÀk“lxwíá¶¢”ä×Ùv1E›p…¶tˆ^8vÚ¯]+(ÛÛp«­‹Ñ]ÅÏ”]œF ¹®q¤!\%‡Å}JÎ=ˆît|}¾S<Èæf§^6Ç'·5,Dá”%<ÉZðÿ¦,Çå”0 ­•ìeC 08fE6,ÀOþ¨ûàÚõ9Qïñصº=M¾Õä`7&G¢®¡ðÝÈNÏúL@}éùÓ|û¦"Ð’|,¥î²Þ±·ü€&Ö/.tGÀ»oÞ>ï@…¬ÅØ„€;t[ÓÈ€èYŠ3Ç ÄV+#‚Q$~=Gɨ]5{î„9î™s&8Vv Ê;–`$vÿøa¨î*Ø–)Æ¥>4G&Wã¶ü·ÿþ;p¸þðGrªí2@Ńßýáß¿£mW¼ó“°î?jFÓb¡T B–!á¢Z·ÿþ´üÄ9øÂõÒNuäFr„h# é8Úvèn^HÈõõiy0C_Y) z@÷sб.ŸÚ7!zlÈÕyñç$Ç€ŽŽ41ë8`öX«}& X"Z¾ƒ‰ã€ík§¡`„ë–Ã0Ž6G«%dĬWCqØ'²@㨡*K] èWÐZe¤ðóçíÅRU—Eka¢ëLÔ€$WôÄy÷&Ê}Ë >$30v_«:|‘èÓã°Ëñ’qØ®2†*ŸèÌÇ·¹óÕXöçÝysé‚ä¬ÝíÚÚÙ|B¹F"3g9«$¹aOfJûpw!Ìøä6®“S¯‰¡aÊ-36¬î’—õ«»:Ø ÖRäé㓦=r|TŒß½ Ö䤽hã¼èY¼hj Bb|ò¦wΛž•7mêùL~=Û¤.›_v›l ¤bÑÛdS•ÅÛdSgy¯ðg âÜ,Çp‡¼“¯ê'JÖ‰KgŒ]X©·Á·x‘V$‰dF¦ò#êp'ôÀ2Ü ‡<¨ –´Åpi(—?i˪<[Å#’Kž¡ÃÒ'œ¥Ãj«*¥R¯£³jë:eRÂ/P9qý±mú@{¢áz+‘RÛÂ6y.#0Ùxg(×3"Ì„=#–ª)ÒäNÿ’@§Á`çt>¹}<Û4B³ÀœI„\ÐÒí„Д†B¼£…æùqÂï©Î µšØ%t§5N„‚b'dÐ÷š«ag$Åò)b† ØãÖ'¢À¸C_:à[˜=ßRÿàŒ~aÕ‚U~w¦^CŠÏë^eòHÎI$Ã:©Ž_ºØC úí,Æq8§„·â{€qì›/fà—_Œ=€[[þ>ì%es‘ºs+âàšÝAS9öÛN/Ιa®ß!(8w‡¨¡hÕB… |R¨(!‹³ÕžÓ‹£*Úì°ªK@Îç¿Ã½þ´<,€Ïœƒîr\”‹24«á5 lo¹7¨åEd9˜¤ùñp|à*)=fªØÞ¡?­®¾DÊÎuMð) $¿4g¯(fBu ú†“̆KÏØ¶k/GêÛf;fËŸ âË–{CÊ"ccµÖšó½!MѦ—T6V‹¿CpüYžîª-‹„g\7±ÇG»˜ý%º²I¨¶áÇó—Øþä uÕãˆ.Ñû–½ÄéõQ]Ý'1WRàT|ìö‡Y=ñˆ$îX»{ð>„ ~r”œöG³öh»i~¨.ë>cüñì%ÔmꪩLþíàØàíêºéVÞŽ ß®iS²KøÑ¬{HÑç¯Û6ejÇÏ^"x»®+LJ{Úg/|þºGª™ÜÁ±á ݸ2@p, t~ —æ‰Vó[ã즬Šó¼²äøj…@“I+q ]Q¬Ï‘gâ`I±ø‰S ÀÁ/¹l[™Cí~ÌËDŽëšú¼wËkB¡ÏðfºÇåÉïxD¦—y\ãæ¾:"‚+ý&<íÅ·.®aÊô¢-»ÎœñÅõ‡hQ­7ó‘ݱîCXCÜ·«oƓ֑‡¢®múf<_90:h²%Dó'‘@‹ÑÀ#>‰VÚÇÑVEÄžÔ… @%LSÔ#­¯w²N5õ—@~Ùkß³ù7ž¾SÙ¡'¼ìö:eÃ$mM¬9qå¥xy¹ŽñËÈý&ÇÙÏÄy ¢ð'_þj¿Ž º'W·µw”n×”LïVÉi©&ì `wšR¸ΗPà ÐìªË«=Û¹IiÑõ%å*¤Ng|븪uýøVø8e ÞÁzÜ!âA¼E¸/Áy\Þ ‚QçeO +Ãñ*'šíût´å19%]áþÏ\W¼LÓ­«_Æãï†R”ÈÌó÷ãX”ƒîÉw~/&žâaªÎܰҕ&;žƳ71¸¦R?GãÉû’ä—(^i¸ Å;‘ÃM¢Ä”üÆ{ g÷¢Ç{/%+šPÂA –›íí¬¤C(¼6®G`”l;Užsâ Hòß•¨¦ùù3lxw”yÑ%Ô*ht°”fçúɨsvÑ+ÎM-î!u/‰p#rQ'¡ë£bZ?ÎŒ-B‘*ö‡ýÿ*9ˆÎãQtüR]¤þô¤(Ûww ²Xtöšº¨¦‚?Ptõ[M®éÉŒ¦ç‰)ØAÎÞL^ã{/³Y3LA• ¦ó‰=? NÒþrgˆîqñIzýá”,'¼–'´N’þF_€§<¡&‘L åŽBS øR¹šI¦ókßu¡±ýŒž äÐ[£ÀCѳ1Šf=Sác]’žq«©Ž$O䡚.‡jGj7õÊGŠW’SñÞ{°#A$Q®&Oa‚vÛG¬¥Œ’³ 8{¸)?Ø€²s\ÈÜ2ÑÌã8t»<:ö/ÔKþ™>/V‰¨)Š Õ/v%Ûˆ•‰S„§ð@ßýÛ··²ŠÕ·Sd\äÛŸ>(Æ–1&«*âÞ¤6Úwð/ í; ï4#µ> ¬°¢$!÷þ„5ûѾ‹Éwæ%&”ÂÞqÚiØ}h>ÔÖTM¬E»%¸çghˆ=J6Ú=шêÀMüg‡°.ZG{æÁÃȼ[Ò+'Ù°pw!‚ ?8«‘7нl _L®Î–­³X_àõùÄ$U ±hŸT嘚uv6hbÜù äæ'Œw™*Rè‰ùÎ.lIƒ™í ¥ÔG*ÃÓ?$ ‹-ûyaq…©Î‚I”ÂÓfÕ…È ¤ Ю’[–9Þ«’í¬_¦¡Ïí¤Ü2.GØ±Õ -7•«—ÖTg£¶o'³§kÂÉõpܹ¡²rÜšx}##Ö8ö»Ö~'B.rsèwÀ…‰ã4OOpøEÆô߆铓W‘5îXßy+ö¯°‹_áÀü;Bˆ"“ÏzŸoØ:+².¬ÛH²’š”CNŸâúXõC™À:ãÅ\Rjö¿yŠö>Ê‚`öýë‡íé„P’Sõ±ç"‹uA-e€,!îýÜp_Ìos”ùÀd=eÓiâ’hòò€mhˆ·®-ÜCTÜs§—Fq…›iA,döÛ9xÍç¡””`!‹.Iin4" @ ¬Öë$K8½`CÖ¢¨–š.\üÄ2‹k¨«[ Õ&˜^î¸ Jƒ‹ù)µÑ#5‹ôqÍù!ÅmUœÓHÌÒoͼY„[ó³uÈ(ä>&d±>sº«ëáå?ß4d™?gü5/k°Eµì Dî n¢‚ùÛ‡­S¯éÀøÏº8Nå“£:>M!L>Üböü¹Í²íNŸåSýU–‰]`'2ÁOð¿û—é ÕPñB³@ ™Ôh‹µj–aw^j`@Ì_´ã…Æ;à`‰xÝ 6Þ•cÈëfɉzÇh2¯U-q‰K;•SdVÀ5ú¶ÞƒÓQ<r¬#Å‹1" Цjö]NkQ£üƒc¸¢¡ÃÖcÍ3nªÑòÌŸ( †ûïtƒ¤åèbMÈšå‘ÁØ#ƒLô`„&@g6„¶rbPÞ2 5"…»Šis ÝS­¥{ª>Ž·ü4í8ç3´ÙœÏ%ÆbX»ªãŽ)CLÉi}æzî§Ér¬Ör?x%øû¥Ü½©+ Îæ~ðB•‡Ó®ç~ð‘šC¤„ þxmî'¡ÿ° b PôEÌæ(~z´«‰5| OêÛþŠ“| OºÒäS@›3) {ª©Ç®;ËâQVctÝ4m{¾£|ƒ‡d'c9„U*±eƒ¤þ„ÏÜÉH24×eƒpû0[2ˆ®kÖ’A]“MÍŠ S‡ïfÖÊ¥â¢K™\*{_(„ÀÍÐ¥ i\eI¶Ù»è!>XL!Ýöœ`å¥(ûÓ×B™ˆ›¾®³ê0Yk«Ìz—m6ȽÙ<<Ë5{ÃPà”JQ–œyšß”vºAõŠ¿=íÓƒ“;ëxcÚ ÏúG§*Q¦D”±òo0†9 °‰sÐT®µé1ñ¸Ý9 ˜»Ix±IVœ¡…ð]nn¿—fnþô‰D¡XÔtÆ$mÌ ÿ‰¶D¹gÇžôFù'\OŽðWºá[¥© Äü…ƒåqÖÄ`<¡&œ”‹œÎgݳoƒˆ¡­ÄjJ¢ÅøLB~.ŠoܱfSÀí{gCNiê“­©M]Ziw:FÜëj>Ëœp¯}3kgø®v >à\Š™»Ó¹æߣékI8õÅvÙLRÿ’LRÙ¤$“$ò˜ù\› ’mŸ·}ñdLsFS0ä_L8‡v2-(“Qœ’kO2DkóG6Õ’Â]| w§fÃ!Ú-ç@ŠŸõ^… 8ó}$f׊v›ÁÜéËJŠUÄ·R¶$çÕ¢œ<ËZÆw ` Q‚¶·ÊüvÕÆëå2¿bäý3él¯hƒ¹lof{k•ím Çí3â1yš&vQÖw–ì\^­0?ýö~ö-˜î¨Œdzë8ÓK‰„CbÊ—(²Y_hrtÙÞ)Lõî)ÕËý®ê›iÝÎôΆS½”æA¥Ïùb«'°Ù¤gØçÙtm®Ï~Nú<³WELRµb’ʆŸ«Ñ§ñá'çZts|,Z8À=nP“ê_êá»@¦t”(ôF¡®nm£ž1 5"IÛõ êdFñ(æ8”ÁR¤X*¦ùg–?Z Eg&ãLZEð;½–™Ç¤U€›L\Jê—Ö6.5i\Ši§]X,7UÙö¹Ö¦+Î7°6]‘^ñ\+Ÿp¹µE†–ÚYŽÎå§„JÍ)7ë`6½ƒT±ƒ j[àXH˜*õ*/:•ÈmµW‘A5Sî%††ìa²ƒé߇*mY–_yŸV2Úª3• üYW2p'w „ãÕÈ%Îy­‚±‡!¢VжF@0û[`rf²T‘ƒZí Iu“ÉÀ÷À‰œ2Nd¾”±ö#JJ0W=ýî­µ 5™ÞZËø>ÀC$3$ü€A|FcøÐ$ångV¾·«‰¬)`´åyŒ¶L¼¹¦ÀˆËC-gÆ^¨ ê!mµÛU+\þÌ¡9®P˜ÁÎ\Âà%ðïtÔAàBe׆”ìv—Ç×ÚÛB´¬K°å±ºw¼±Cõ72?¥õ.p4*|,LÙVÅ%o4¬ÀIÝŠË›x£a NíuK[Nc¬ó5ª*• F]$Þ(h¼•ÃÊü«š°‚qqè˜Î‰cªýR|„ºªhë‘]Qo@&å—~ò„& 硹è—îu hqò~)ébT.U«&;n)1Î’_z¸H…ãüÒ µªE,£Ô>°¶•?€D’ëû¸ü±»Ç ¶tÖ7gVDývø,úç,Ù¬ &¬€|aÄ„UáhôRÄd+ oöM®Â>p5 C~Öµ¨ÀƳÞꇃzÑ®FôοåÛläêú‡Y­\Uþ€Êý”?6o-˜•úÇʦ.‘:-(\Qý0ª—‹&)~l®(~„à\ñc¥öaÎÖ>6×Ö>ÌJñ30‘1¬øtlþþ5‹º-úóE‹ºC2­_ºjQ÷Íøk([ÔCÛ  %¤#‘·À8àÍe‹6.[ÔaÙ¢Re‹fµlQQs9NÙº…Yþ¡u‹†d¨‘ºE£t¨]Ý¢aUØsu‹¦é»ñüÇ— Pé"õ‹2V¿ð¬Ì>ÌŒ%Œý Ê•›)7k޵–÷ÓÊ©ÃDæÞÓÞ^*R,—±r›¦Ã>ûåŒí›árq„i®Ë5£îŽlóe <(ö£ÿøÃE†ÔLŒ–këî¼:"`²”¸Ö½&•Ûà¬UÆ ¿cR7ëÊ ¬Ã 5}P‹CC¼ѹÉ5°^£í»#wHCC{!áyS¹ºÙà—CÄñaÈæFø—äFÌ`1væ^’óh£KüœçÙN"œ]QmÇ ÙI›D—öpRLHƒËµK8§×bËs-–pf?¡%å}‡åØå#K 'ÖZ×mÜ`Ù·tH6e38èCA/&TȲÝ¡{ž$_ª¹TÔIHzô Uø oïÏéK¢ÎÙ\’*ÐȺ²¼s~âæ¬+#W:ÖV>Î’ ‡´}óé"ŽUÙ•“N¨¹Í6S5¹ÏVM\“Qý¡Q€<“4fêô¥/“P‰±ÍpØ. \Íu=šW/)‡Ú¾?oO—âDóåH9ŠËl|K­ãD:ëoª•`˜hÎÆ‰ˆº7£2q“gï&ïW]æO\"á³N-÷P‘îX\ü 7ö½`þ‘'Tù´åØ£7kcUÁDõŸ¦ùõa ¨¬´²Ä8¯5BÚIYð:ÔËû1ré©•©ªP&s»)o@Ãå:2ýMÄÆMãà«$FëÀ¢jÞVD.õ¸5qJ¹$A¦ýNZ•>…“i¬ g : Çò"Ò¬G©˶ÂúCÔ—.{ z6žG"Ø £ùÛ»·=/ë‚4Ræx€f¨OtÏ-Õ*Ä;Üì€Åèéî÷R.¬UD’…óKQt`>­@D÷â¾ÕéÃ;Ó ®²$%/;'ý&â±lèf,äÇŒRPȽ/SÕò2ÿùº…ã-@o’9=ðþâyâLj®œoè{ì(>‘ ЯK¸…z§é®ê(y—#çû壱LŠÜäÊ4”‡ÀLZÉð #†ü®qP“yV|·ìPíõEâg|Õ„3€˜‹ö~P—¾‚WÁ£bíÓô#º¬â Ͼ8ìÅwvn){sïãÌ}D®ÿùa{GÕÄ=Ñg:¹Bôþø,¬…#ò-Ï\ VöRø¶_ÝìØ,ÎÃ8BDËþƒäX\X=É5û„‘æ»\(¼o‰É-¨£ý°ìH¼\K†›xš¬G}z¹•y¼Ó$X$å@vI?uË–A?q­§¬W«Ê«5à¼0J¨ÇAÏ6ay± ý„¥aA/ðà{Õ_.x!ý%Ñöc]O}xY>“x¥×¯Ñã1‡#`ž¦â —eûí4ÞÑG]¾Rµîb=ʼn¡Ü"+¸RsËLšw |˜‡/%)³ÿ¦t†Aõ¿õ+)8(É¿xrS4¹.¸¦ûZ^§nÎ\W!‘?io;õ‰«é~쀑£YKà…àï—Ò;öB›¦mdz²¿”ÞÁët]}Uzîq–¬ßjÐÒ;x¡¯ÖÒ;xøû¥ô^8d,u×Òª£?t¾`ŽÙCÙ‚²ÈÌKÀf—I¶ ÄŒÁÙ‚9剎7ûå'ûß/a¨~õfhßDPçPùG¡-ÉÚf`ò²ê<…öµäemh┼¬X#/;$äegƒÔ‹¤õû¨DþO'B¥å&.ÃK„ˆ%†T/N¬,q…9Ï\áDLÊ2›|¶„*I¾U˜€Ë2W o`®øÓôYhÓþ>´|Á;Má§•m¥OòÞqc’RÏ0V”Lh´%Ua[’½Â:c]B+œÛ†ÙÚ.’uÂM\Ç¥ˆëJ†7­Ö©Úð¦U7æoª²„pÓºoÎ^ÇþÝ$¼ãqO\¨Aª=Eùtðã•tfUÂÌ®=Äæ^c{œÐÜç©ßšvŒÈ,Γm@aªP4õjÞ çÁ­ÆzX•wV @{—ªˆd›Í™»( œZ®€Í žTµÕU[!žZ·ý9Q¼ª•J`ܳU Âï5E"ŠWÐ!¹e½Yï¡vÄb-âò€ØK¶¥â™ƒv,ãÛ±°"bMÔ”GÎ$€&á_‹øé(¯€› ei±ƒƒWºÆ|!^ýJ…¹L¢vªRòºD¹—ª½Ïu˜Í9˜ÞdÎ3ßʼnڼ¶ÃëÝ6—‘Ù›¯à1çZ¸˜gfÝ.é™/Ošêœ©YMš2ÅÀ HÏ\—4½Ò3WeMäiÝ!“Ñ›“¦™œ©ù‚¤iœ355‚{9gJ‰»(mêû5tÚT! [¤Ò¦‡E„Oz]O|!–­Â˜ñ‰‰=†ª”×^¥UgΦ¢T*33òd$SºWíõ¹Tó·@÷ÔÜ3ŠŠà×LµÆõ—H¦6Ö5ûõ&S›ºÿ¥“©Öéú»&S›®üu@÷š¾ú‚d*žõN¦6CWýÂн†Dm~Ð=k…н•Üq1SRsÿ‡C÷Ú¦= Ý‹;{Ê*›.¨á_’.¨1e)UÄ@fšv(APïíÌ‘™<ú/ÿ)’™± 8fôOwFå’œdhÏ}$³4sFLøæÚfÎøgHôTm>…žíæ æ‹ Q.Èô»š$‘3æÙàØMð‰~ç‰/«ÍØgr9óA ×j2È„}þÒƒYÑf³áh_çëÄN@E:ØXº$¾élf/dÿnΤvðOÏ’‘â5š!—e Òxv¬C™¸•ÔÜÃÙ›Âß³7õÙ¼ÎP¬jÓáuàï—R;öB¦ þ£SüñªÔ8VùÔÎÍ ëÊ]C§j¢O×÷¬Ãp]ŠÇoªª«6oOñà©5ZÒK)|*";zkŠO¥ŽÜëSá3PÂGB$ðKy`^œ[Æ×(á3E$?î²iiù»‚Úíjwæ!^Ñœ9ŸÉúx.Y—öÙÔÔw^S/SЉÝ;lÞ’hãp{§‡æ…Ú!âk¯{t‚BŽóÎâòŽæ‘êE&Çt˜gÞdZË1™¦¨»Í¯²”/~M MÕè“ù’S˜b2oÉ1mCæ˜ÌÕI¦<^ÏØþÁë5íXýZRL–DÿËSL ;ÿ:SL#¡ý‚)¦¶(‹¿gŠ©-±áõ—O1µTC{cŠ Ïú§˜Z*ÑýZðzmƒl8¿4^¯m»î'¼^Ûõů¯‚Gêl6¨I6¨ÁŒÐÿÑ-ý?º¥ÿG·ô[ÝR¯ï°†Ѐ·ž| Z²5ñРZ·FU“ö¯]·t§Õ’ÇýaŸöòPúdí"æqqÕýŸNÔ•xt W»[-[ ‰^4Ù\ï$ÕŽ#2ÓäÛ¼«¢Äñ|©^ÌÏßüþøîñæÇ÷ö5툾ëjã¥i4päö]7ªF?Ì’ óîÁ:\ÚZSšcÄ;W#«S~e÷7tÔÆµ?‚f‡›`Ü©vÁ B.ºœ+{»¯/éÛïø 1×t]l2t8lŸÍTMQ"}ÔH59=ºY@rË"Cà[ O  hÏaFF€¡‰GeƒÙ×gÊH$‚¾Ïtÿ]uߺSë?\/KÙ~¸ežŠH]¿æÔªÔÐÕœäèkè?—£‡Ìêu7ëýùúÄsýù›ºÂ`2—5ø#ãŽå“"Fë7v{mx&ªkÔc¿F?ÛÝÎùéºEDžÎOÛ;Ý »}gÈR»×>ÓTn2]åu‡ÌÙ&lCï¥Nê1ظtRй½©‡³P½GмŒlSP½¸4Ú™‡‡¬Í‡!Ìá6M¤ÜV´Îù`„Nh‹ ,þM ɯóòâ±7ž:´EPêô>!qyRn{1“«Ì+q)¦¸¦Ù“œó ÙqL¡÷Ÿ6*óz¯ïéçy?4¼{™oŸ–Š 2@‰ñËœJx•_ìTö*!Iñen¥ ýÊÍõ~¥Q~åfͯl ,q¥Ž%–$ÄË!¶<c¸–Ñ7¶‡,Ç—ýpAÔ´u™ó×ðç¿„ó²$ËHd¾*ROÍÏ·ó2-³çdkì¾9Ð:#š6e8=ÐCÈ¡“ð®†n®jiÛJ µì•óE2-J‹¹ØOÑdCâþ%!q‹aq¦ŸbüP½¡ŸÂ~éo~Z®j¨øá¸ì¢ÚwYXSwTÈ%w«-•õð²-eQ„Ö½¸§BñÉ÷½n¤8gÛÙ$—eQ¥&y†—åå¤À =RVEw)0b¡,Aþí¬$I7¶šžÖ¤ô´xHnŒ+F4¹u]á3M^ !qõ… >˜!uQ„÷‘%‘¢ GôvåT2ÉX4ËÿBÇõcŽÙ¾¨ºZô6hhXmý{tô .}ÚMäù·MN9ÿ¼LXz}²ã¹³«²pÇ´æðõáE¼øª.¼_ç±6pPìmcÈýuäZ‡¾rë½êÆóTxÀù[˜›sÎ}Û4ÁE¼°]ÿzcN{$[Cí_ü1ñîMÆ»§kŒÅ*Ź}ƒ¼ûÙíF{¿© LE{ OÌ $6`¿ÃQ°ÿy½ÊÕ6Ø™|ïzOOªÚöMž>žTwÅ9O¿n«:ïé×C3*O¿K<ýÎà!ù‰òhÄÚ~àØâ†åôÀ Ê?>ÿÁ£FdfsÎ¶ŽžŸM&Ë>ÜÌ–Øé7‰o.NÿÎ;ý1ÉUÕ‘ëÜyÿ˜Ù:Cø4‡~?í€XŒG$L§r&W‘YÕ,ýøº<«qDÃèknûœÖš„\/-ŒÎAdª:¨%”ŠäÞJ¢’«:sRÕi*äú¥«:MÝWÿ[±04ý¯W•µ1†nè.°0  ²~rAôAä|.¦Ø›€^,D%Ôö};€ÑØ3æäX1,Ó—t>‘O–-騤Ãa=\Ä?®rÅì=LŸ² Va®€ Ñü"r|¤!=×Râî:wOTWá¬.çTQØMåúšS¾|k õf´þZÀm’´…o%P7Õí©Š%yÏ‘·i›ò¬6Q„oí>ŸÆyüKâ¼c½/Â+c+ÎH5„ x$c ÄW}(/¾C¨nDõO®±AeNtWщ„H¾0Š^!ÀÄÇ©« ]%BÃ3p‡PðŽZ¡^£VXâ`~6k%)²½¡ÄBúm+ë¬XkÙ bÓ«ù€>*þGðE6;×hÇÖ¬Iô÷ïF3ð‚X« pÇD¬¼}^M›ºÿvGøÒTÂØ×§ø¤ªÈ{ú«¢DxRÙŽo%RZ«µZ¯‰­nì¾8䃄ªokëâ ¡·Á2’›}Që~HÏ©"-uº¿$uZ í@‹AÜyÄQᪿ4WÈ3ƒ.ì k?oÑEd0éb×.Æ+ßÐ(Ü’1ƒ MQæâ 2ÕØA)–üŽÏ»‰+|ªp)…ýòS(Á8@l¯°VE‰PÝ÷²åê0¥.Ð ¿˜£@$5@ÅHnB@›ð}0‹±ÖKog-õòÈKÎ]-¾Q½g©lƒ@e‡Z†÷ô¨y¼œ5ÞO/jŒ¬N$”Ü;œb¼¯Ýi­PÆ>ý»Du!ùwh ïu“ƒtìÂáu…{Ü“SŒîŒsD €ß”MÄ»gJ{|)'°—Ú5ªšĵ0«‹†ß‚ÉpH}:¾÷s»w!Lw¼ã+y”¤˜fØ:øR­G6æÃsòáëQ*ÿq˜X/6Sqs’ÇX-x‚Wì·`u¤¬½å‡ܪ{öM¢s‰÷ÓÆ–±ÿJt X®áR†¼+€ž*Óøiûƒ{¸  îÿ¬ ¥iŠ¾È”kðç¨\ƒ[&ŒŠYoz8ë¬7ÓŒ]êÍà×{3-à~¾ùÝ·¿ÿF|nì)Õ8m9ÓØVÈܹ]Üî¾@ν­Ë\ÕÂĪ¡¯ÁuºÐöï—‡DEp„áÒ™1¯ û•]¶ºÕÿ$êé1òy›°_9ÆîE7Â~É”(›è_.r4BËR[«k/i¢Ôóî|6–Ñ }÷!»8"w®?Émnû¸E Ê6¨ªNÅò€…LݸÞûħ›?㬡mÔ§÷ì 5ì^ø•QŒý¢“×}hí't±3ML×Ôÿ[ÚÀÿvO¥šl#ÜÉ ‚/Õ'­h#BJ©I¿»X§È~‹bcî¥ÄfªæhÝûŒUY~X·YßíõQ¼7$é'í?1Y:÷ä‘|0ʉ=<ú}ÿ~èý'4éL™tŒ3˜±¸½c$¦=Ô,kšôÖÜb‚t¦ÒÔA’]¬ßGÓ”ÒËè!?oíM¢ [Öåˆgˆ![™±÷ì á”ýaQYjk/Å|¤RÐîÊm"YÇïûíG\eS( ¹ØýwÚîXŸŽx?~G’oÇç—ç-gW_OÔÔàšŒ~xÉûᅢ-ôÄA@<ø3)ÿîÿþsľŸ˜ñÉ:!Ýæ²|”bð(q¤,‡›Z~’²?:A;Þ‰¨7í…·DZpa/ÖA7BGʼXçæð+Øl•sT‚}ËG·dHî8Žæ‚vÅy³Ðg0øsä3àשƳD Êg0眆Ðg¨(U&>ƒ5UЈƒ v”M´‘ܲì÷½Ê¸²«¼Ñ­Ô<›4úóö‡‰zŽ;¡• üˆj$=ñU?È^ôœ¡Ïò~5Ô‡ŽÓÄg‡ÒÀ¿G>Å,>IàO˜ºÄRíO”+ò'ê qÀ‘?qÚZ‡ê­þD]õÛý‰º†óþDM­‰?AÚßíŠîKS ¥Ê4$ÀCë†á!¹/)üžÜæ}rYBá÷†hW,ÊàFEÑÀ<øy mhrj0ÚAØsœ±ÈÊÙëU$꺾ÇKù³ö¨‡µÖ!'`b\×.S58WÉØa‚#²w'mï°è§YUØž)å˜Ð´(â36`á€ÖEG÷ÿˆ*Mu½Ùºa=ÄŽá­¨ìØÁÛ±¼K×vtUêYÛE‹="óÅaQWSWl™izd[¸Æ–ÅVõKLYdÉL`Êì*+®3e%3_dÉCF}µãЮZ²¶”…|†PºëX±"„ê/ãj4WZ²7D¿mü)*úýñyyyÁÒ(¸§éÜ%†,ùõÙ0šp†$ 0Ê‚üú·üþ²L?þY“ݳj SˆßŠ- i“Óì~í7 MOT' öäó–Ð0~/²„?y Ò›“ø5FêoKâ—MÙž5„›²Å1kËnhVÈr‹‚Åñ?ÂQåiü`M'=nŸ—ÿ…™Æœ^pµCÀEfƒFEaðíµÞ³ò1¦+¥e=%?hzâ†OÑm&RŒõðŒãó Ì\\?0°ûiZæÿ|ôJ¯UI\Çж#Iz±YÏv ÚçÜÙp_êÞpsúéóöé„T®£œúÔ¡»û™&ìÌZ>¾Ê`@éÄa¨+ôøº' 6¡4;^ýóóÂîÚ¥Ó„ $’T‡ÍÅd-½ÏÓVÔ Y(²’Å9d-ÎOwln947œâfs³_‡˜ªEÒq; »ËÆf¯Â&"Ô ŒÍ"¥Ø¬±¹÷TËvª¼¾|&~{ëícï3z8ÔÚèTCsQk¶ûœÖ,þÌFG–LÜÃxˆañì÷¬DJ ‰7Π}Jù3:Û0qðµÂl«ý×ø(iÈGIxP¢“Š5#„ô°]Àvyõ]»b aìà€sW_AƒÚ¯¬ƒ³WÓ¯Pöª‡n ´CV¼.ýŠ×°Á€ù9¢¦‡/]ãè®™ùqM5ä`³7´~½êÁÛãßU©jÉq°ÁM«aUɯÏô¨™ÄÚ4˜õÊ ŸÞ14S>Ú[¢ÂÞFÚÖ“ßâY]S_ *㓎ꤾÉÓä÷¡.:´ÕÕÅo%{ §Žm…q÷°Z8©-43\Z1o«ªÍWÌÛ¶-Ïë—<$¿ÔPKôiJ¿´Ö]tØ{MÝÌÛLþå¿Ë1î¢;œÃ¼šÀî¯y ’ÃÒ‚#mœ#=déþ%ŽôˆÎtB >#&ªÔcÒ–¼Ûww¸ RCRì XäI~fO›ÃÐ(°Hææ $d’³ä¨¸ªS4Å×™Ú3Vy“¡k‘¬@Y?Ó Ãå]M_¡wq\W“Ð"°ÀÁöÑwéïqTÆ{lq%zïèiLêøÏ”g†èι‰r}ˆQâ?ÈEÈW™KÌUWW™ˆ¹ŠI#®%®2!öwóeÄU&a®RŒWW™ sÕÛ‰« “EüJ‰«Ê #À_’¸ª¬YzçïD\eƒÁêJìòÞ´­:çÛ"3mÀi ï©óc¦¢ ô·ú¦àÒƒ1²aÙ>ìžô’4Ù^à}Ú ¼ÏA‘Ig%øìtª$5ž0‰yT2¡¦W» ž¥K–ît$ß;4ò¸J1SežcfÊÂ’Í[Ó>`SŽC¡˜U§ÓŽ?'Zm®8ªUmŠÖ,aÜ“’i›ªªÆ€Mû¯N"Ù³v`ðp»‰ÁÃäUèáù*ôpÄ¥]Õè ÿ*È´«¶U¨™6m<(¤Óv‚zÇ›¯#ÿVq™Ò˜º(Ûó¼E™‰è‚û˜› Ñݦê¢+éè.hõ+ è{«Š ÕzfñÇ$2˶úá5*,âFר¸!Ã\Šîèu5†[>º£ƒ›ºÎGe†Þ¾©ƒèŽ’ ½Žîè:m½ZÄëÀ߯b ÁÜ`6ºÛ/Ðô¬Û¿(ÐmØT÷Ã=é3+½â˜ÏD1ßœ ù˜F£ÕM”;vPV|Èùʘ6etPž øâÎ$ª òOù-ol¡ô](aœ&L°Þ¥Ý;¯LkÓrúúõE€H¶í}óéìbµÉÇj‹ŽÕÌE p¬qÏ'÷·F¹þ‚è3s´vXã&•Paëb¬6±Úœ ÕxjÁ!êrLƒ3÷cìŸ#D±É‡kLåéZIJÄåÒ¬gøx‚y…<5’ñ¾Ï‘"ôtý­èÈ`µ¸¶©7-®{ÉMgˆK®³u¿ÞÖzÐÏ#„—Ú[÷®½uÚ[gîi¢ø‘‡"3]­{ßÕ¦UÆ\Z¥­Œ"N«À¯°ãÅi•¯¨ÛKQÌb´ÁÑw‚Ö:AwÜrxÔèGìiÅQOëœô´â³=­Æ§`PÀåBø’kiÕ$3GŽcûÆB-5žè;Ѿ]z…Þ—<`ü8` Ѥº ñ›T(ÎôH_˾3¤*½J÷|ñ4:І×:0énµ oV-n‡ ùNrwÂiÒÖØ-øT:(#ÌDaÁP¸æÁ½Dx܃¤*– Ø÷ÏEÑ Bò“¹&¼T]Ù¤„–IÒ¢ÄÄE’´ˆqûæn½ͼ·¯aû̪óK¢ö)‘í÷Â`ºŸ‹!ƒž„_~"±å ×H0¼×eE4“ΆÅÅ”h˜ûÍ(d‡Ù O)^ŸÏë5<¤ÒN‘ZA*Ë2ïâQ‘Á—Î3ˆ"3PJ  iÎ:„x@ö¢çB}ÖY‡°ìs8ýe 9„ø÷’CXHl9„_ÞmV•mó…¡õuÇóaU=bÎ!¬Ú*¯YjªA“ÛÔ Ò~è6xHîSžo9ƒÜŸøJjÂî)é°ÖFðåV¸Ù)[xVô>I¥Ä-·Tñð2Ï2á7F9//gA(bçC‚Oe²näZó¹c)ÌÏJ ]Æì |ÂÉÁÝñuNÚU"·p1ÙŠÃ)iE[”_ˆˆió7ù… æÚõ*åüºi€H<ÎŽzG>eõw¯w˜oòC껓/yA³ÚW™ò¦mzæ'¨(£.™¦0Sã} Yù@{ïÙ¹%¬uL#¸šÝ•z³â®íM‡·¶ßç—9p\¸¹ÄQ˜*ã\²œ¿"].JAÊì7EÇQ!Ï!)vë¤T±÷Ç´5ì÷¿Ž¶@®¤ÿ¢m%š¼‡Ñã‚‹Ñ4”[ŒIqàç¿„þ/µÐ¿ø¶ÎÉ6yÙ¹ð; cy[DyÁî³æ_Dí6b$¨h)•‹)ýë2¼”R=:)¥½g ›Ce¤f,\ÄÍX`0XaÀ ¤\|hU"Ù>,/\$ôÈë¢'Ä þ Ù7ûDO´Àƒ´(…¼J”{Fƒ@ÄÚ&^À‡äC1 hBRG÷\“ÃOCüLD¬²ü?½PöÞ†µ­êAܶ²ø°â¶áQz[þ#Œ.!ó뱋œ6UÅtdUfƒ þ%ÁF…&˜¾s­‹fÈtoÒÃÝ9ÏoÑí/Å€']rüÚÒí*á@A> /¢ËØ‘0ZåÐô›Ö³9¦ÞãôüÈΘ=ßèl广Î^üÙ±ë gŸó\ï>>|òONŽkx6ü¶v¶Ý¨gï²€Ø&:\;ßn“¢Ž$V{ÄGžvoi8m€–<Úë¡JxRàä^"€t Omºá-§.êÔ¶ÏßÚ_ñ\øFOŸéxõýu· >žÚÕÕ§ò·‘S$^g¸,Úb%¨{EAE7AV¸ßà!én„÷1Vë#eòìŽø k³»°GûòÓ§'Üß|â2Uƒ]ÿÇŽéçG.ÏÚÿmm݉ª=ö—Ÿd 67Ûݽõkžî~¦„•kâAÛ­¨ ¢Àµsî4)v+Sµe.ÀŠ 2à‚òУõ¡ å¾£R¤häÀ€1)Ó»Q¡ÎÏaÔˆ±»\öü*Ę8 Ñ=uïPŸ¬©Û2†¸Ç]-¼!‚Oân"Þ8Ï‹~»i{;RAh‚‘¯C7üÛ‚¿ñcÃo¼Ø={Ú1ÙéȽ¬<Ûµ¬X]Ô#²î3wš‚;ñݺÓ$wú¤o >Nk l£áÕÏû¦eƒIFÎfßEÙlž‹jR6ÛÄélN(Qú~Pû¹ìNˆ·»˜Â¦´avyG:Á…Æ¿ÄôgðàŸŸà¹YGP€EJª=}XZþJXùêÉq×Öu+«»á,ï‚Þ³pˆº†¹XcìÇLØ"²÷ûÿÿþ÷a&:'Â6 ÿ‘ô­$mÀ¾l¯˜¦6]ô€ap¾pýÜLŠ aN¤©Ùîšæ-Sî2—'ÿ‰£¥~Ÿ#,)¿cLü5ï]g½“ƒIö3r2<œÜÔ ‘Úú•—w(xZεÒrÆå Ë´Fy,7»ÅZæÆKÚÃàå^¶ž)€ë~FöqØÆIna% ¬{Wùä;äÇ7¿û|³¼[ )`»øõy±.'^aÆßF»€þR‹üÀÞ×ø ?þOZµËë™Àã·@4žÅœ*‡¡í(ƒá÷5‹K98†…Ó¤ÇÁÈ@ÜzÈß‚1º"ࣷ<ð£ÍÉ£ë2oÐû"©ÃÉ#è•gõ|ÿÞ_Ùd^ùàGoçjP-«PaÞIú49I“ Ñ§)W}P&ËgJæ@PÐ1! †š©Ôg KcÿLK'Qä±ðcÃöRÀóá ¤OfŠèps„'ÛÄ$Sh~°ŸÂºfN$óÿ“.8–q F· óñó—ï°ø~³Z°4ry"‚æKÝd {¹Ô¶$bÐ8bCŽHá6ÄJ† éËßñ÷)¼>¥ã°0*ˆBzäÇþWòËáS”GÆõK‡häÀ®Â¦ù7bßELoë³XLÄÀ$ß"²ÑåìXLEqä™|ž­Lå$Nš.™$•ÔóHþˆè'_z2¹f³»ãÃëãSè…Šö'ºçèa:¤ó‘“sš°B Ù=“ïx+ÊÓöîór¸¼ÀŽÛ-I˱!z  z ?õ!xj¦Dƒ]Àñ'f2ćDëÑëÏä.ÛÆLÝ\5ÞJñœÃØmô{úÝFm°Ô7>=í(kévfDRБ2Lp¼»È(«ÏÎïÿ©Ð…H]_"« •…AI›r¯·:#¿G@$ÕÔGH§Ë'¢æ:í¿Õ•ž'÷âê‚rûöåøŒªC°Eoâêzñ8Pw…ÈÚõvÇ“€GB™Å›½$æq.$SÒ`d¤>ŽvÍãçl%2C`&æ©ÂÍqxêÔ“À(ctrò8ï/"©ÈóÙß|›xWCwý¿=L°ßà§BFšXþ< NyøP}h¹_ûãþ|¸y<>OÔeàü0fQkû6H—ưûLòªÊ&¯@Ô²N’W5&°¾@{†"ܲM©Eäq¯¥ˆœ~èúŠk e¿@b#®ˆÏ8ÙRÄg´Œ,BăæQ{à·ÙŒ ΢]⃟’:ÙÖšO Z^3yØä¼†š¼G$² -ÏÒrj|UÐó,¸F®ý”1fl*—‘.9#ýûã»GÎÍrNzs>'m°x^JoÛWBQ¬* û#Wî(ºP¢GÚÓ·/Ø KbÓ5–ö…ðúœëÿ£‹>ѧœ«*Ì9÷cgÊ‘CYÊ"¼Òèe@ÿèwó¬EÄlœI oîìˆÛÿºÇ>+·` @îØŠÍåÌ =:©n:sF9³j˵”áP«”¡¸jJ9³Øà!‰7Tþ2i=¦ ¨ÊŽš"­µsá…ÓzÊDaÖÏO56E–ò¬IYÅjàë\÷)¿E§m (Û²,/ˆ_@ÚeÌpàÏ+CSF0{WêS¹Â!çzá†|7Hðü·®¬¼¹0~VÙuŠGeÖÓ'7CÝUCŽ]m¬‹³dÔx@þÊ×°«©³Ï²«5EÝ&ìjøc¼D¥y*`a)+›â,KYÙ×±”UC·¶ÞÿV–²z,®i^÷KÏ"ãRózHÖtEq¦´`HFæ©ÀŠAÎë>.d‚F²2ã ,æ/®û¸-|¶Ôpï¢.ë¶×>ÕRj(LÒ¢vg›4“s}ùÕéøq}€1±`€tß9’.áàÅV³“ BŒ Ü܇7;ëoto3(µ`vb·¿©vç×À!Á-éÂ%¾ßÎÕIÆÕŸÀÏŠ7qØÃ÷Fi/´ Ô¨êNÑyãÆÕ2QÝe§&ÜlôµÕ$  ²BÌmS±y÷ªI"‰£‰DÏ%["þç!KÿœÁ’mÌ (]ÒÈ#јMÂŒŽ >$̘Ò>«†tëZbŒC,p™Z C-x“e©ÙP»¯&©©Ï‘Ô¬+\0f؇1CLSCÍR‡µf©±”ÓZç1pЪ-<ÞüÞŽ‘ݼÉÅÜ©I„+›r<ï¿ÚÌ«ø{PeäÛ "ޚȄLà^‰Ü'&Ò† =2׉D/¶õªL$\Ä”èÄ®pWP‚Ó¶Ö7Áê8Ø£ÒCt"ü¸†A€ó‰cÏp±m®ÛŒÃ0Ô}h›÷yÛ\ŽHiú°ÍU1 o·ÍU9Vk8Ò„w#IÇWc5¤Á "Ú`AæmŒ U[œGtâa&„Þ£äËÖ”- rv±Ùÿœ^<ƒ—´¡5ç½Cä ÀXtÃø„TåEɦÅþ¬=5ó™bÿ°ÃÌa±¿¦ÞƒÂh^â[‰ëýÌY: ‹ø{PTÃàßÉ(©È¨ôßeJÿQÔBNGw”>Ÿý î©Æà¤gýæqÚ>¹füí»T%rúÉîr0sÿù]Ç4/l$HËuùžêˆØõ2i|fbʃÏáâ;œ ×åeX{ž²¦¾xF=û k ÆgržÍ-Õ¡Œ ü0”¶ß«FEÃï•vÏ1Ö˜Äùc¼õ<  ýÏ/uÉLøßk½HÉ‘c¶ŽYåü2À7Là˜PIõœÚ/Ã(ë{"Ø8RéŒW5W‘ý’;UŸñ…bïÁÄz9`=çDœ}\‚Q,@ȤA“š3vÜEc‚ŽzDZ>RiëÁ%üMö¢pÏÅPDZ„ßÅUeù>‹®ÊpÜðÆmÿ@ÔMïîæÞ‰ÝBN õÂwCÉ*7ó¶ÇdQH ßÝGm>4tûyÂáÛ.œÇàø¼j@/à ¦©VûÛén àp´éÔ¿ê=Øí¸‹ìJ2@‚תëKoVvæ[.Þé}ÍÑÊ6MUyö+˜Rjõ0à¡gÂO±;Òþ¼p‡>²«ž÷‰vJaèÿ ª ËÓÝ ;¶§¦¡h+ÆáЄ?ûõ]Û¿À¡°¹Ù~þüðsTŒ?¸ËíU4ÕtØLí4ÎÚ®ÚxæÝ °¦ JPù£'ì:Óó0l;mz„fÁަá‹PÊjº³&œ²xèáb €óžNjÇ€!hônøðn8Á×pAÂÈUä x½}×Ⱦ‹+¯‡`/!~-iòÊäŠõ&; ª‡°T5£UŽW Ša˜ByeiõÌ{›÷Š¿Ôî`¸"‚Nà’‘Ü ŒdÙô.L㺤O[»§ÕðŠGÔ8yÇæðˆ{èÀùw&H`Õ·‹ª¾œ|  1A¸‰„@†j·‡›Ÿk90OC3w —60+áE4ËèÚÒ–@¦Z»ÿXºÓÙµDoÅÅl4øgšØË aS–rì&÷1Üf`—i,÷¨'”ŸÞ3‡x¶æèb"ÚeÍb c_ËA\ýØ.±_[ñÎìš Á䆑wÄOøN„bî;h÷÷ï„Zî}r*äT›S&gÒ¥&êêz²#Ìì'XzVrâÎÆöÎK„•Ñ»·„$¡šõ­khÒP^ßÖ°f1Ò8%V‚–1Ó ‚Ð ›}ÑÌ z&“šlYº…I2©Å„ÒM2éh\ª¢ŠÊÙØG½D«y¥C¤+F9%Ê1•ÊaÛI b4$Sz‰‰¶ÏÑøœO/-ÿû¥—š7¤—P‘Ýg”ÒŠhSò,øá¸ì¢HYôÍÈ_×7à˜û8£ÎZ-°`94ÌmªDË8{ÚÐÃÁìQR-;ÔÀÉå^¦ŸΪϺŒaµ]Aeß_Tó}ÖEdÈÆz­9ºê*Ÿµ˜‘l ¨ºje°Ûšsÿ®ï®èÀÃóû¡HÏï‡âŠ<<Úôüah¯ìÁk Œçr[§]å¼užïÆM¼u6eÝ^È ˜ET5ÅUùç6èÆÃSë¦}Ë©‹:µiÆ•,ywãÙãmȱn¬Þ*l—„S»v¼úT߇§öG­iÆ5Jl(«S%К:„Ûje­—mÄÒVdXÚ²åâ¤V ``*{ä?9ª¶OÐêÒS ±4ãjÉk‚>Oœ´€»ÔcùD[si¡Y1{6*ŠŠ›¸üË(ž$ýØÕ§ ~+¬—D'‹ÌËl1t_X¸ý "ñvÞ+;Âá 0óBèáŠZ&7›»Ÿ}€Ûäl¦¡ æ=cobðþ¢¡f_8lrØý…#œŸù[Q0GýV$qƒ·Ç†+vÂð§Í†?ÐéÛ%áöÿ¦¨\yߊó$‹Ãù=f)¼ñ¥Ìo]=‡tNÉ¡’üÄ#ŽÎ;¾ß½Òh§€42óKÄr­°U}ÞR„K=ßR*¹‘Ú»þ—p»‡ÞLžcÅ,hø4úC ûdº‚§«ºh¢óH!†l]„ÚÿDâ#îƒÏOE4ò妉R*,¢‡™• ¡&Pb6ÿ R¿Œ6<øÞ^ îœöi{Ý?Jh•–¶˜ˆN˜={Ösn™»kW{~Ø>¹”?Qs·=ÞËrç ·xYÝqæ¶¶Z‚ lÜ..Sf~ÅÀ ‘k¼¦„'l!‘úž‘ê˜y@ä³bý~²FÒWŽ˜#‹±1x`ìñN1¤”jaj» T™ýàPYÿÃÄ·HûÀE}Í_mçL›æi&.èWÌ º¢)éJùðŒZžbÒÉóøÐPâã4¬ÓPÝR=eqõ—¥„ÿ@tëÈ‹dÛzB¶Ï:Å_]s?k#ú!ƒŸÅŸü,NªHá³ZÐØäëà ¦ºöi£S“ƒOuÝëhZš)b´-`üÚ¶[‰ˈ[ _Dè˜]"Š«¶;˾gð€µËžåÔ‹±`ÕE*ÆÆàoˆ«¾o®àá«b%ây8n!½¹»òÄÙ"S(s6äÙD!0a‰[ïyøFéª×xøL]y§’ÀЇ¯éâláØÑ!ùÚ!&ë\âô+.. ”ªƒ ºuncDþ¡J¬3Ûž‡ì\XpŸñÞºž–õ0c«aŽ{o&×u'µ¬z¬ *5ÓN«iø¸­Ý‡Îþ^zk™ÖjÎkÑ7VûÇ(„kiÎbUóe4g!‹j‰+ãe9C²pÿå<á·05mµî™é&Þ*/CvÖ™M<¤_ÙįÜãr…µb•ÚÄ™]U¦ÆÕ¤g£HâÆÞçSûMÖs´ªmÑ—™Ü~[÷çiUñ€µËš•}ƒ»œnì”›wö¶é‡5€%^ÉþÝĹ~5 6x Šh‡jмŠ!©¹³Ë†‘=üKÂÈCÉ„™,g)NÛ¨›àÍeâ;×1‘؉M°ó§f‚9IJl­ƒÔŽb#Q–Cm|=¢Lë%³B¿†Ó¤éB÷¹Å.EÝ*}Á¹ÊÄÁÃÕÂÚÞ•jee—µªMK¨_§Ÿb ×T -0$šJvÓî‡@:ÅÖʺ;lU58ŒÍÅ=›‹½Â±¡µÅâºÈP^þŒÚeWÿÒ”ÚÖgmA9FÝpy[PqCõ鹆8¢¾ü‡Ø‚ªlµCÿãóòò‚LR° MÁ.k ªºo”)VWV÷ìï¶Ÿ¹Í²Î‘lÛ½ö¼º-¿2h–|^o€…6}¶j€E/=h©3ÕXçºáðï¹X»#™¨µnSMìòGgÆ5—Ÿ7òGyżßoÖÁùu56W`ßCl¾uÝÇûîvt<¢E¦å¼"K×­9þã¨öôªL²ý%²>’„~C¿ˆV•4wu‹ªŠøJ¶è cl!Otc§žr!œ¸?ÛhkÔÎ/`ºEQƒ¼-Óæ†&˜¬˜µîË^¶þC²õc¤€ŒÝXqûŠ» H‰kgç ¦X¢UÊR 9H’™h“ÝI¤´ÞÔw¸¥<órv2gf‚\ϳÝνªD,à!É¢¦)¹Rwæc(–&PIÁät`@£ƒ RǰÓâU¦Dlúéƒuiú¯¸ƒ©”抅 ©÷!br{=)äéÞ‡©ó(!uú|´3þÑ…v‹‚'÷êeû„K]UJO¥OVCþ|¡œ“qÖ1½’¤= ûž iW®³Ü'öà¢ý:Ô6¬3þ¢qâˆÌªy6춬ÇKlØmÕwY`[ßåÜ÷¢IôHÖ‘l:qŸë–dˆl´Lš'[\ƒƒ«€]ŠêXŸ gÐON™CBþ€Ñ»óÞ´îîÿãe¼à[Òk´k€]c#¢~-žÔ GáJôˆG´d{d,W} û¶º?™NÖ;ÃCòß±yB‰´çÈ*죱87 xpÅ lÉ—"n° ͺ#àz½ýÈxnìqHé8Š7ãp'.)4%’ðÉè4EDÆ ª1ù=öW¸T¤êðÁ˜CfS’¸Ø2ú“0žÅ*w*Nn[=Ü„õ$¼¦v"àÓ?sÞ cê‰;vßàõ³JCQ´›â;:’®f‡ QJYÁŸQ’óf¸#èòߪ²ßÂ÷˜<±¨j’ …s#Ÿ Œí( †o>#éi¸/'ßeÅüu¤,üŠˆDÌ‚R¹ªÍù3²O€¦ÐóÍ—æn´wÝ–Öc`‚Ü6h~Ó<Ëø(=i y÷âŽëè©–Õ=#’ qîÚIPý[D¾‹Û,~ã²ÍÕ0d„; —Ñ>d=•9î¸c7åÞ¥³çÐMá>UvSöL23R'0vFùbïº)ÑSÙg=•½òT¦ÔSY¦!ñTöä©Ô2äÆRöµ|Ç>pXêªí.9,5R¯¤4rõXäg‡Ë4™±xeŸïQêK0ªèºsñèÊ×(·ý8.ètôÕèÔ*fPûn:HÊã`ÏyÈHxÔÃ࡯՚fÅö£½æWÇ;*%Mõjšºë㆞=SÆgcÐ!iÛÇùûY±ó‚Äk«qE-uhKe/$Þ€¹á2sÔÕ+‚´ 8|Ú- Ž?Ÿmµe@Ç9npÆ$µç,Ôóýq‘m†ê!ÚFè>€Rð…ÝÅca_ø§['‚Bœ–‹¨«°J×ù¥CjÓˆàWžüØv±¼Hx€^`®mØþBü¨LY¶ti7Ä¿ƒ;ß)„©)%µ¡(Œ&^çf¥Ï[Œc„¶<{t<ï°ûã3‡¨·ª9’Ögßm"pê²®èÔ”à«åQSð'5’\¥Á¤¨.*µ •ôй+…ÐhPÙ^‹’óœhR2ñØòÂQ“O¨âà ì0Üw¿h¸"¥¢\.T²¡Òÿ’PiÄp)*Uj³l¨õÛWkZÎ…GíyáëhùÓå ËƯơ¨õa¸ïífUc?œÅê.u³¡Õ-P o]6¼¦Æô•8z?L·'¾BiW‹Y‰¡°Q‡WSt§ãÎ]Ãn ]»9w žáés0êºFŒÔxöU7æŸC]óëg®¡JšÀF~æy„C±aHÎÔ3ñ2ªžé/ƒoô´S—¡Rf9C-PC½É_æá¨.Ó Ã¹oŒÏ^æI]0«³/ÏŽÍÃÇõ4ÃØŸ½Œý»I>Ó´›'÷™ìEyn`ðï¹7‚˸¾w5*‡uñ‘çå‚-Mñ3ÖSAŸÑÙt~ÍàñˆkÏÀü 4ìÖKÈó̱r]„o:|íX7×™;ç:±øv£ç7žÚ÷íN•9§Cñ†Seâ©ãÐ\ê“>µFRÀkOuó•H7Çæü§õs“¼ùqMõÉ$·âù(§"9^¾Ï„ÎÕžvµÀ3Œºƒo« <#’Z‘M ¯¹ S-¢ èdÎõuŒÆ‘Ýj6?LÉôrÌšS€R¹D± È­{ßÊA"µ“FÀEÆ_•¥‚ÔŠ’ë‰ÍKFJâD aiùŧ‡éÑÉåS¶K"Šªv„·Ô¬‡ý;`0OÈ:Á;}ã7bòϼ¨ÕJ®ý–¹™§4i!ÝÿÉC Ö>åiº ’Ï(ˆ˜àö\6ü)¦…ôô€—EÀ2!ï$ÐØÿ'|#†Öq- ö`ýz‡Ÿ×çÅÿC7¹ƒWFbof#€Y÷¢rL§?.Ož-‚÷ˆéÿïw¥|¾3vGàÚ¤… MX¶/(Ó¦'ý ™ìÂyÁŽýÍ×n~” eŸƒâãÜߤ@¼>S¤oš®ñ?“DÀÌUÚc’‹J[RÐ7ö͇=8¬½áÑ>èÑÞóÇÆ æ,ððØ´°¶Çõ [4ùÆŸ°*‰îÛ;BH*•ÌCLŸgýíåĬžnÒDòÓ Â_¼ç@SÖƒ™H4‡rªôÝMĦA½‹7Û=·:ô=ð HB¡D§ãC¨›[jâN0ÚMÆeú Lÿvé¹ãìœxê[ô[ë’e¢, ¬ÓW¡Þè‡åo벇0j¯ŸY/¢æjé&ŸŒÃ/½K3ÁÎ%ŒRŸyÓPÍ™”Ü2>•º ¸wüåéô2¡eT)}ÞEQ>™H—¥Z1W·‹ç%e›Ÿ1GÌf~žHOKºï`5"V’{]ºùæ…¦ÝLsZ¬8Ѹ.ûŸ•ŒeÁžtéR‰¹¸Hì ìsÔ?˜d‰¥p“Ÿ Üž°)‚ØO*!|:D¯‹S }߬`Ä7pC%öPî¶/Aÿ }ú]úô2>÷v| $y&êÍàæ",‹ÜQTSʘªEú"ßyŒ-ŽŽ©_×,„G­l1»Èý‰Ø¤¿ë ºwÁÜ1€¿Ä+‡2¤d˜‰Js(²¹²ƒzæP¾•Pó-æ/qˆº~ÜlõWaN:{æ';‡ßÓ^ê›i¥rŽ„5 ·è>áQõÄb‹ÅëiòurP†u\IRš—úXÑR§ú1éAMvm?O¢˜†Åw/Ó²àBC0&”’¤ßëKZæ»–0 îbС}¶ûáñÕa‰É‹áÚÒf.€•S«Ä–ŒõÜ++ƒÎÔò"6ÌN¨ã£5Ÿ;â÷BNprmðŒ@ævô™ŽŸ•ç ¢=Xçx±vþÖ#Sïpv#)›¾¦³ÔŒ$y— «ssôüÌvôí´š ØK¦]Lx„PtM|¨Ê:|[Ú¢¤¢ÈÙ}~^ŽÏR¯cÄÇÄ”JæÒ Õtf©8U5ÅÅšxÕ6MÙ?'{N,o°x‘Šj“œÖ„õ§ƒ«?Í‘ÆñT0è{Û!“u—²’,O€Â™ÙxëgÙ?t£*g¯ÈàQɦ §°»Õ¤ºnë³å$< 3ÃoÝå0?/' b­f‚ÝûÊ’ê›q ³ëwü´—©‚ÂìzÝÍ9f›œål*´)FÕäZWI=½2 Cº†`vzÑ,¡PÔìû•¼P”É‹Œ¤ ŠïG‰Ëq0¼ ¦Èæ#(Šå%:~W}%'w²»¬ÕÛ}6àÏŸ–»-!dØÆï€æq!í=Û5)›¦FR~ÜUQ¤.îIw;ƒd¬àæïmX†zsÈË͵‚©V ës†#€ÆÀÞÖð4Eš¡Øy)—hNÝÞpîhÃý…™ñ9o=Z,/ÐDm©…HoF‚6´¿Ûäv¥%Ü”L=ç÷$.6UÊ›<ZA¨[6µX†g·c±~ö“>›ú/óá·õ{?<ú³ûqLΆßÖï}Ü©*Q'gÃoÉÙ¿±ÎF¹IêÙE\¼ŠÏÊž‹d”g. *Ù¦,Ë€Á“.P–gŸ (>WHè]~\¿@X½®«*½@]Ug. ëÖ$'™\@iL&ŸÒOîXç¿.ÓóáÇÕðÕA¼@Wg «×Èÿ½=¶.wÚcÜY¼ÆÏ:È<´ÈÐ40 ù:³è2j˜åi÷9áTÒ¶lŸ¹ í‚j`± —íÓL|븈)Gv‡Ø÷P?– ýz·qõä #ì\Æ”+?Rq¸ÍXluEzN_`Êü|ÒŒç¼R%Ô——NqË·T‰6A)úëk¤°*J@óòÞ»“®RÌ3À(bx‘~W Þc ¸ÇÀUç4¢Úîtó5ÓÝψ_N‹Á|eCB(D®àȶ‰\ì³â è¿Ô>øR†?•oh*pÅUO4˜ |àà; ö!f`ÉcÐOîª0\û²©Ý¥ƒM{<å xòkÉ[-FHñ­$j÷™|¥JVfÚ¬Q|#ÕŸ¨Ìˆ2,D!v—juØ!Šêk‰\.Öå€MüÕþ¶3lö°U¶×‰e¬Þq^üVšJ‚‚±i:ÔB LO£ÏtßSþ©DC£ð%î¨hPö›¸”~+LåÚÔô7:H_ïÔ¶ZJ9Ùüç ÀºJ8a¬ô¼$5Ñ·Â…rÂT½ñéN™vªŒn—+AëK´÷{Ê‘3'a™ÐA>¼ëY Oª?¤Ž®ÿ%ĶϜåÖU4÷Á½Ëm±³ÓV‘!#Ö;¡@TëUd8bL—ª¹XnZ¢s™ð[§1OuòÙ¾ßÈ|ºsæÃàÏ<‘³ãú& ª»R‚*UΰŒÑt•÷D3îFÌejˆæü> Kö•ì˕ԘnéŽqÍ}"Xn&»ÜJW¾ÿtvÅùýž‚y“®ò;l#cìöÂ`+¤²}=ð:Ãõïñ3³g" Áä8Àt@`Tå¿ño¤—ÛêáükÐ ä²ðëÎëK@ܽÑ_w\°É€ ö7ø¾”§¶iC”ÀdFï‘ÂÇÊAÜ«ÿµ°)&g¸V§íOâÌP_â‡Ò¦ãøm¢Š0©œ ÷ø|(ID:0*“ck?ÐÐØrá+ð1o9b€ÉO;4ÉÅ ÃŽ©ìíÓrz$·Ã8V ¨0£ÃÓ ¸`©oáH´v1€ñ…ZçXhc c»âtC"¦ Þúrò蓉„úxöÐi­Ÿo ÷ŸÒ];HäAuëÎ,îëN.“›xù À°EðvÏôvÌߨu6Y„¡?svyÒšM^>™,ÜTíU5|¤Ì?#ÅÜë袻Ûw n@À,à3ððQ ¶Bãbb…2x¶C+1«¯`³¡Â71wd‡¤¯ÄMë6­Ø3ÔsVyϼ¦[¢±LÄÅð¨›óx«à`ðuT=ÑtvÉÁrk‡;íGÙ"ÚèѪ7§#1ÛðqN;xE?Ãÿÿ³ü•¤Þ—UJï…Ò6œ ^ñÉÙO(}7y‚kï«j çžðô2K[ÏçéVíyzõø•q¶Îf£åoŸì†Fü;Vãd­ý´%h†Q¥„…bŸiõ"Òàgkˆ¼,"FE®8$#0E hÒ7¹¸—À(ÿy÷~û°ÌOÀvd4o ç#ö%ÕkÐâã?ؾ¾ÁnP&ÀZS0*$r‡QÍãw“ÓÏv™>¢«p™† 7ûosðxÔeÅ1°‹¯D„Öž}‰vÜ@87Ù½”TOáaÏUƒAÐPTëínÿ7å1ó¾ @î¶Èì`öJv5D…-¡MÄÏç‰íN¾G“ ñ,ºwÌG@_/"Þ {ãò@DV¬gjfþ,3z`{ûYÜP|UÞÙ?¼Ã$ùW§ã-µl¡ÓUWPúŽnhí+$u îÖ8.ËËtÇ| Õ@ }3)z,ÙÍ÷NDäžç‰ówž:XÍ£TYŸ§ù²y˜~û‡ï¿ùoßüI–מæä½LȪÆàþGb,A,µÓWÕÒò´íÓžBËÐÁ/•!ÕbÕ#Å”F³F`žâù¥€OŽë5Å­ë‡x¤¶e-Ï äËäÒãî·œN¯‚rè¤ç “í ÊŽŠ+€N¥®êÇ"‡t(Ëö¼J¶¦¤sV†ÅÄEº|Ð6Ôa=eÂG¼Ž´‡"Ix7UcVhº‰ñø·W¥š¹Zƒ‡Äïuíc8A:pû<Ôo6"‰´ñ½¾ÕWsœÝ(z¤4àùëÝïs©v/.!yÝ6ú´\[°:—¡FHôP`xH¡|a \ZA¼ý&Æ#“^ þAHqàÉC _çªÎy™lö%-Ýsc¨ù6³æÛ!Ò|Û‡šoM54j ­ðüãQêY‰ zD›¦©3ÿMßœåþ4x@rE…Š€Bp¼¹²(_Ä…Mƒ?^¬íX—ƒ§ 奨Œ˜?VKqæ×}k#o[bñ¢ £çܳ*]KLJ  ›!üˆy¨Ñr¥19”©ë$&Çâu“ã&‘pù[c˜£"à/v}"ìóÄÁðÌäi b ­o™ù‰PB'MŒìs“°°mÄ n&‡,c§ÑdÍüõÙa´w”ç$”¡òDG%X RýaêÑëRïS**—J=iR¥…é‡[ÀÈPž$m±Âu©^EÚa•¶õ@.kó?r@’ Ï tât ¤†PE@Í÷ÕÌœ»¼¸!°¥ŽŽOX[¨(Bít_ ³©)N@î)Ž»ÙÂ8epÑ^¾'b0nc ÙKùJÖ•ÖSqu¡¹ Ê·&(3* æÞç+p8Éšó9˜î?_'†š›ƒ}I»H‘ö´|Ì2ç6\Bn:Š˜Øc;é ˆ»Ž'i ŠÄ*Á¢ïe¯²£´ßÙw«sÍCCŠ5T_:BƒÎã]´XËYFðYÐ2`‚G<Õrsê~Ö'G´Å¯‡ ¹ìvÜ»ŠYH„|x»dƒDf9ÉéTõ¬¤%¡ÒC§qÌó†ÝžeÝçº=Kò;½EÆq 4Uíu\’i1Ã’% K&,Óq`R!,âŽõV˜D†Åq‡±§³E—XÕ©étUdÌ;x”òœ´_…J$©˜ÓXoýÄâ î´²Â4Vá).§«k#ä6€Ò髬¶M¬²Z“â¤òNøN_ÜTý°®`€GÔúL*£Árdz½"Ó+Ç8µÚtH2Ža©–+˜ªÉU` AâWz&í«5Á]ÈŽ›¸cÝ>ÕM%]!oÓ ·À¶|JäîR­£Ùgu÷±@jh÷ly ›b¬x{k¼iª_ÙÖØÔ¿ðÖØ4ÉÖØ´WmMŸÝñgµ5â¼,£­ñöÁϹÄX¨^gl<ï;5¿ ȳbð5ð-úfžÌ½È†‡ŽÓ+ *îT€I¶À¤cµÉVW€Ó·M¼ø=ù¿©cŸí—èXÕ]£oïXÕ]£oíXe|3ïîCSD›;~­/ÙÜmLk.µ ªÖ¾’BÛµ6À µ¯,Ûf½ ±Áœ +¡ö˜×¹á¸^4õLª©‡‡Äsw ­„Är' q @¢ž„°ŸÚ—ÐÕjõÃ@÷1ê Í1õ׎=A䬴}…¹r„¼š¸äÖ“çù‚›0œ žÓ|A@˜ÇŸ‡å¡ ¥ˆ$ïPá¸Jû«ûwÂc7‡õmðdz—Pdc¾1ù·ƒcƒ·³Ÿ~\y;86|»fHÙ.àÇÕ·{JÞ®E¼pôví0lÎ^"x»n¬WÞî)y;,mfßîɽ].5Þfêþ%Nu‡ŽuâTk—ô—xˆÖ%¾à!Ò“rÁxÖAąćvcsž~Â..*GKî¿\Ä¡E>–Œ„4¯çÈÃ%^œ8üL³²ò°<ÿåÚĨ’yZ㦿JÜ)éçà™/w'†”3Oû¤ŸÉOÌêÓ>…OKä'ù§} Ÿ–„ãÓ§å™,¢•cÑäù êY¾8Ó&hK‡$šÐ£÷ÊÀD“H}0Ï—Ó¢>Û‡ÞyNÛŧªºnLv …éZ')u¿ÄO•ðœg»Kö¨i-1»ûÍ2§;H^Àz;5WpyâúèÅ%8÷1êÂ:Ûeãô#kÖü×e>¼‡NÅGhø¯¥BÌ,gêIZ‡Û'úAiªÃ²ë’á †ùêð0äi+¢…ÂéN=²Hž–K†2R_ía€oLJô01‰/t† ʼn„½£ê6¯’‡0‡mdææGÿ`“CÉ^c,æÐa?ïxY¢ð:#¨¹!I»ㆂ£ÔWPŠŒiØWдÃù¾8 ¹â™¾{|ÚW€ŽR§mwV> ÿÎúóË3p5ËZÜ­ö¤»>uÆ»®Ï9ãHÜùyz~ôôyM¥ô(èûêÜù‹g~k†>ñǵóï>>|òQ\3i ˆ?®ÿ¼}šýýÛbHï?®:²¤³–¤á»lÄTá}1 øÙˆáÈÓï­}”VODÒé:Ëc,®öòÎ\‹!VÎ\ü™RœQƒ/íÅÇÆ±DæÌèoŒ¹íµP#w*^95ˆ:R\iiwq³’6/›[•Ðó¢¶|Q&ž6oaã ÷ÚSëŠuˆ)“”½ˆümÒ%¾×§OOØ|ûÄd÷”/¤ÕE2N??>N/ÏËxðŸ·Ï¨ö¸µ¿üä š¦"‰Sl&!Ð ù’°×’ÜørtxO±”\!fÞ»§=qc=¥º¥]%ôÚL ëœIkþqô ¼D)néu»äÙ }¹µÓàçVft Zð2Û— sNà)M¢—VúÌßL™qXwoÞJ²Þ¸l=’!Sao+ȳb—×±nϩʊÁš¼T ȸh^XVQd'’3÷}3.•fîqÐ7˜~?¹Á]¨7sDìrôç;¤ ¤cÙ;Gíëéß¼‹Tu®CTÔÄ"¹è™Û›˜¼'lÀŠ ÖôVuhAgC ?a±pˆ9äs'Ò < ÛõI›`^è€õ¯'ÖAÙëïÞ”Q#¬?V‹F˜Ë6÷‡e;V»‡¼¾`ÆxÙªàLA‡PyaGá“ÒšÍ>¨ÙtCék6w¾fsð5Ôy %xR¸á˜‘Þ™ôÎÁhí½ÒÞÙr:­hÄP¶è㎜Ÿ\yK ‹°Xùi)#ŠÐ=³¿žözºc¡GB4ÃbZhŸà5!kgçùÛ.7»åöJÚòìaðv®»Jµ‡)cp ÷Ú Ë‹”!>C¦]=øò䄬ªŸošÃjjŸëÊ öƒ@¤Œ3cÆõäÿ–=\9Äþ§ãA·ƒWë¢n…l4@ýÛüÌ“)_yä· Ü"h8Ç(àâì r‚¶$£~K=VøÎSAâÓR˜&í!^.I=éοº×È;ÿ”ÿÞ9ÿêŸòãÈ0Ø®Xëºá}â4 ™‹Ð'p_gX&ô½³ëmG ^Ö¸u½ù˜³°ãùgzˆ+7éd«*õ@‡Ìz¢YÄŒråÓ&¯\)䎌õ ï_%>]‹E!¾´Ñ¢˜›ó¢˜˜à@ž»‚4ÍJ§ÝÅÔ$·‹xK'¨%ž¨5ÉW¸Çh€v Åǰ¤ ¡ì¦îZLì#PéÖ1ò]J69\ªÓ÷Óx&#_·Ê’õ|ŸýÔ¥ã­uˆ€ºï´7íD '|/bôÞ*9*½¬OÀEÅ÷{¾!A•:ÁùJBSB Eê_¡5«ú„smg<ÜBhÌG;éµO¤á…¤8Lm<óÔûPKÍšJÈb«¿µ§*„æã ¥J=Çìåh|³9¡õôBpz FÝf€I~zÑmREú9'”3V ÁÑgÈîb6gÓ`Gœo%8Ή"ö^UHŒÚ-Ýí7âeŠÃ¬½¶9àun¡aö'ß5-"È„N,)ö@²žq "É""Ì힇øCÄ"|ZÊìYÌäîøðúˆM®þ'Á*–¬ §Hëk;ÔCá¹àVmâºÒS8q9!$ÛûMÒ„”dû@¾cÓ´Ø¢wZ{ëOòÜÿÜÆ>ø-y|`€€¯€=|JxÄÓQ‡WñìÐîÉà1[}Ö±J’HoM¹d­U/[uÏ© D·'½ôŲkÈ0á¾îÌã(¹ÝÁþ'<ï¥3Ë×rÿˆ}?ëåRª”_š;(ö(¸ÅÑFídvº3G©ÌGØLô /ÇgÜ[`1,¡”âÅ•À—‹-HÛq3žšKÔ¼Ør.ÿpr V@´±\”^ÒgØÃ˜W|²uÓË„½í¾sýž©äìó/Ï)‘Â"Âl7:Ò¥<-óñwm™-$ví펓æW¡ˆ?$ùUì§¢fE(„MÈ?.Òj…°ŽJ¾6Vg컬:c?\Pgì×.l'½î¦ eöI­±ÚZ}¾ª•VF/VðÃê²hwÚ~ä³Ý\h RÏ?c¹3[>©~‘ ®û¨à*äf–» ?Ûו÷¿´èƒÂ_×Û!)ÿì¢ßèE' Ë¥“|¹NjÈq[Ý)šUº•& [i’²ØaufÆ™p¯¨˜nõ•šª“òX¶:Fš#D­S§®5™SRA ph˜²–6ç}½²ˆ¹ÀT>&ïÁâk’bѪثßIŸ«í¸±ìdn¢¢{9QÛ+ÿα线–ž)U2{8ùÿø„êÉ”™^âûíLP”<õuD늪¾Á5N¹ó’¨ýnZ“+ÚÆÜ j©º§ä3Pëã‹®¹&¾hŠ*_ÀÏÉÞÍ“ÕÔmÈì‚HåõP#ät‰›ÉŸÇú­,êÖåÖüîÞ6[Ô[llñBÜZ]dî®yÎ9<8˜4>ÀÇè0y¤ÌΪºÛ¹Xá°\A¬°_‹ö® F¼G„! Àá_ Œ$DÛ‰âÑ$~pGàËñAd ÝÚZëÖˆ¸‰ü5=T蓉|L>çlÆõUͲÜ`¯ûض㇠ÐõJ\Ô²¨26k²vŠ^|Mfñ—Y´áñ¦¬Šê™ItÜIl¬\—b_¬u)Ž­‚[I—bA‡dG¹äeê9…‘„'À·E“÷®mDø[A_¾‘^BŒ¾ö;%º9ŠYxÐ /ºO{0•Á‹Å¯£¹…»f£ÊH!·0õ"ó‘ ãæšÐ —…ð¸øF¿ ¸z ƒ"‚ÄÈ05ù·CÅ—1kÏ{K5¤×“0ä±,å,„òóp,8p«v­5²a° ;0ü«Ø’<•ž=ÊdÇÝ~5b>½n,ÍY‚ {@þëó{+û)õ™Š§"p{ûòc؇=føc²ò©'¦ºÀíÅ‹ŒE‘^dä™ÇYøzЫÓè08¿.Š&>ßà^¿¨óË"Ô†ûãkç{x ž_•‰Ÿ~\=ßCÇìù6Š)‡äýñǵó=<õºœ·¿Ø¯ûô¥;gÝvãõ;§œÔõÍÕª¶ â §öýð–Suê0\_õ?{¼ F†þº[…@N{jC”š×êA~xj9ög£™º+V¢™nèÎ3ØoðìBw±½“ ‚PžÅø³i3GÄfÐôV„îü^1›mx5÷‹ °³² _{yabìïH^"D‚¨÷#ÌõXà6d¯ñIÇ& ½íÕ<¤ ¬Ð¸€e2v[\죰úRVWb+”kK‘ndªÝ‹Ò¤`ãLãv —ûa‹à*5þl;çÀ>û ¾mŸÁ·‘`ÁÙË¸ŽºhlÖÉ_ ºŽuîE÷G(½_ˆâŒ±ˆ{‡¾RQ\‹ÜNúa—@½T&“+>¤rFU -¨Õ¥©úV$îNªÚ4¤¶¬q;“N¿§Ï‘êdEÏ 3¸P†]—Å—g3‚ BI€B‚äÆÂd=Ðzá!1…–ŃúÝ´„è¯#ëP˜÷Ù"-CµÚ¶íȳɢTüäCºb”Ä=‡ã³ÈÀë›°Ò*Û§Pðä–(}&%Ù#·bW»½Ü –þ°_&@nFB¹^±–¤uöDç-ò5G…¼·Qߘ‹úì¶oÿÅQü îp¬-@õS"Ò„d>ÃBWnšhÎ1Ï;²¿»PxÇÀPPo…fǨ™¯ªõˆÒƒ&'JJ€B¸ˆE3ܽ$!²§ºê-S.‰£²;Ù“,` ïšè)±SSdt¾ùfÜe›£=¤CáÐïc-ñ hcÃß²†.bõŒhˆåóz…;†Íš†ø`„~Ø‹ 1¤’È¥‚ƒLììÞÅ•4ÂA)Ó„r7 ¯râ(.H10*Äå/öÉ“œÅf!®b.û‡Ó °ÆÐTùÈ´fÁ Ù=‹ºçŸAó-ÅLŠ„ƒ98ð?{âÝYDíÀQïc¦chºî/5l ß¶™b þ'ÆÈbŸÂŒ˜nhØ…)Å«K²cïE, ¼Pª ZŠãqý£l‡Òøð¯Í‡pTòm„ŸÐ”}=æÂ¿¢)Ï)ñ€üU…E8 ÿ …êLU£ [Ä0t+iFdk”p¡ÒnüÑ{9a’àªÒ„Êí Ø÷pÚ«ö™`çdß…ÆË\ v6q°co\š ÁÎ&vª®èÖ ñˆ^s*‡„‰•+^'„‰U¡ºçÛ>J–EÑÓ1Ù/Û–a™9Ð5y¢ãÍ‹õ«ÖÈI oh#l½Ë­ªmVqmóS9úo/ì®`OTš8³bO$¤pÁ(µ³2•â}–̸ƒ„¼ÁŠb;—vº/s%^ü9Þupôÿ1»N= }„ì:ÂèÂá€ír PM«UjMõªhêìÄúnû™šT«"'íдÅyÀ¿°]«ŸÏîHÕç¯îHPCmºbXÛ‘ðBð÷+v${-ÓôؘwaGj†v<³# ¤ ñß\lmFÌì¼­ØÚ]Z7u“=ˆý*“k[×ýe©­¦ÈºÃ%üKÜá]â¼ÔVŸHmõëþªLĪˆ4aÓÏlr!Ä‘êEð:´QšWù¾š……Ò”<ê©Õ­i2™ÎÄù[CzÄ»áä„"xA;¥­t‘£¬ß71­,׆÷ëÜîv3ê>´°"”ÿ+.ä4'ˆ®ìŽ["g=­TÓ~AÑ¿H€JÔ‹¹’–ú ·*3+W p“&™%èGã¶/ðtGL²ZG–s:Q9ÜÇøÏM ¦ÕŸDó$¸ÚA“¯ BŸ‡@ñ¥|PÎï÷”÷‘>½­h´“ø°° îEtˆ+,ôÀ(Áv„’$rK>§Á'º÷ËÜôêe; ëfÓ›k°8ö 9Ô¤…DŽ^ÖÜìl{vm† ™¬…NpXB*ê"®€ìźˆ1T*;œ6ŸdåaÂImD¨xK…?xœ]pU¢¬Rþ’aß‘6; Û¢Œëpð9HVÕ¦¦á‚T} óã'X«e×±bׯ:åvK‡õÁßÓàR·뽼¦´Ýh2âOLÏ9 ¸™E>®ìõòýº×ì=,É[R"Þ—õqdÄq8¸ì]¸§(ja-Uc«<‡1(8Êä ü÷ b«hsº™U JçªXuÛnòW “óùÓJVSÖÁÙßQ§K ·†ÚT Î$vÊ|…jº"Ùë÷T7ç0؃[4Üç=êçpóâÞ0ï9˜|LÓÓüP¶\‡°€Ó=½ŽX:ì£w®Q ´›u6u9¬ÐûÖmY_ÂHæO_ã!+_yB¨Z² ¢>Yƒ{j«Ž™é™µªYé=ÐX¦æ8,¼… ÙÚê‡Å‚žµ+‡7›}“ðŒÅvŸBlÑå…Y1IE¢Œk'Éœ¸ pfi§>o§€9íøƒ´+§³Îõ¤Ì[˜¸2ܸÖ:¢õ&)—”=àl$ézý,´%¸Ï“à}±ž‡®yª×\Q +æÿÍV*<øÂ–D¹•ËM;=O³×òÝIXÁ^÷8úÜáQ8q÷†³³Ü¸£…D Ȁ;ÍÖ܎ð¹|EGu6rQÿž–‰¸$Ïj·­¼< º.¯ª]o÷Ý//Œkp,cŽ[MõÿïƒÎ_¸föÿìuj@Hå.Ö`§n¼%Z¡Í™;Üppç` „ô¿&yƒÉ¡c¯wIùPá`Ö {¥p0¥ ‹V8˜ÂÁžt:Ÿ¤éŒh Ĺ´Æ¢º$NÙuN0Îù'h»Ë*„‡cX9(i_Û}£90«¸*T¥ÄF±}˜qSÌ97…½”Ÿ×”¹ž¸* M+ Os <-7ðüY°µ™q W‡l˺Hm¦‘}ºñL"p¿zx8Þáì‹>ë+‹*ó[ÿ àìf´$á8ªæ€‚‚yD^}P¶…ÂRÇÒØÆÆC2·Ä+¥/|(,`)оDÑ/ÜÜŽ"¸>CŽÂá••”û®Œ×Šô­CJ£kD"R´+K2^{Å4÷OØwÈäyÐíðqz:Þ8ödd @ÌGØeÌï„rc?b<öqŸ+ÜÝ@_OªûÉ„È6ëÊ•"C‡kôñwpç°áº†˜í{ÑùpÿÔ4„ýád¿}ºÊ—Æî•þîž Kœ8Ú 6© c\ üzR0;vc‰f6ÁÓc„0ty¹–°Ã¥*s»ø3ïbziÕ›¨ “½ˆ° ¿×©þ€“LJCà' U®ˆô‡<¶d ɨ<¤kàíUŸL+5ÜAª˜ =ÊèAu˜`éú‰‚«º(Cw“p¸ÃÉ%!V™ðte´á$ij½l¥¸[—­ j¨5žò2Ç7€HA™0oÕ¥y+hX²WaoHÚï8¤Üñ¸vÝñ³&˜!îfMÆÿyý kïü,~ÈøáÖôùõØià ęĮ/ NÇÏ[Ãèá„yø¾Ü=‘â\g‘è-—:ÞŸÛÏÄÍHs·‰fŒV 8|£FàL70ýžˆª¦äOÒiQ‡àdOß‚Àf©ûËb¸ô¼Um;Lˆ)sŠLOPc›@l\VŠfZ˜ᮄå»ÿD8çØâfç%3Ôd;îã‚•·7jBP«3Ìáø.ööÊȽ¨¾ž ™y›§Y+Y^D +¼w^0ħTÂçq¢@&¤:§·µ!Ò:ÿvºÛÂþU³îµ¬,77znÞQ“ý@Ï»÷ð&ÌY}ó0ý„{LÄíÃÏÿ ¶È½t,pp‰ïÚ ÿ®ÛÍ!ãë1y ô–?NÕ¸<±5|:>½žè/Ï[ ¾Q‚ÈÄ ÈB»ûë–$˜4l&JBóè€=7pÝ÷„àk‰ÄùAjÍ …«Rãû\¡¯í¨º\Àƒocéõhî²+Ý­šÇe>°f }T|Ž®o} C„ ¤—òð²}š(»¡Dé/ËçZŽ  ‰9 ޵¼¥ÝK^ìúæì#½•+ o?Œsœ»5Ú'؇“J²·eMÎÝëý/)|»~LÏ›Ÿ!0?c=¦fËñp/½38:CúuYM78tl7VYYMøònhèP-«œEžv„‹‚§yŠnõ¬ø“J½uˆðó“׸ÙÛÆÄU[8E%Æz`‰ø;¡€Óo’•ñö[¢»£EYÂéæåhÎï•a‡ÐËÞ‡S?‘ö*ˆ›i·H²ÎüˆVÆÏ_¸Êhjòãhˆ8Dòð¿Ña67Âj=rfšg\õž¡ŠJ Ä`ç £5 ÊÀàŒãiçXcÁÛSˆ#05³}À‡b@R%,vÐhóls¬’ðQ³î€r/ <Æ9ŽÐûQîÀÞ)µxwÄ7:¤Ä´eìÔµŸ&ʯp\rˆöÐ=¾(#Í~Р˜Š°¼=¯çœlZ̦ß[s”Èð§éîõ™éÀ);91‡0ö—¤ÞNc ûBðý\kDøùB <ÝüøžËme˜Èk)l)UßÚn&Š N'þÎ0Îü&GFÒáSC¢æø™l¹ƒ 1ó7Ç}9µã`»;>µÆ#D‚ÏT?ÇD4ß'Êøuƒsý çú¬/ Hv%9ž„ŽTI@(³"ö>«±D‰#ÙÂ=xb´Hˆß>À‰bø'_ÃrŸk¯ß_J{œròjšò·È¦@ÔsÒ m5FuñÿYq ‚8ää(¥`”ÓkLJ+·<`]+弑Å·& ká_¶ þÃ*n«NX5F}mV¸’O „TvK8èRΫoÝJ ®¾á»H'äß­篚¦ JjpgSÐÍ58Å«SF¥Vjqâ~=n?{Ú(s¾•Ú;[ȸGU9웕`Kt10Á¬–é6Q™®Kú»´LçF:i ìRV¤•À÷,Ë)‹À .êFǦâžì\¤¯ö~²Bë¤N#{ÐVÖÖ\•åЦ£u¢üd¥inj;YŸÃp\Eù&ZÎ6JŒàzTF ."‰>oÃ#XB[ЙÚh;CÍL0°•ÞÛY¤âxh®i%ŽÇ¹œ„òWEòæb(&’7T«;ÉçyùÅ…@~S—U¶9~NyœôMÚœ®a&ríH<9=$˜cC>Ü}a¯ÝåöÚMÝ´Úlê`2ÂÈpTnµBøpdê.»ëÖã…]È_Ý^{ñ¥Ú}MUŽíFŸ ­£…‘ÊѬ0x7Ö‰‚¿¯‡ìp Ó”U½9w ø{²[/’îðUñˆ‡QøöáA–ˆ2«û&o 𣠽q„è k\‚³î*ó6¡ïšMÓôãy‚>?öx¿­ì€»WÅkwà À±vƒ/*GöãY•Ýf„¶ÖÚ´å<ê:ŸÁCV&/¹;e¤?PGFÓóZª5ÜpÐ-¤l*"à#EØ8±¼Å˜’"i4˜ Š£GïB¶ bç÷ ·IØ~¢hCéƒ'ò“¸KéqŠMX¤pܺ¼Ë3€R€! BE^8$ç/ÎÌd£hÍ!†öëR „ß_Œc_…¡nS¬d¾éµw«ØÄÐßn³…—þ%þv‡>w†@½Ô­2¯~DÁŽßlˆ‚=ÑEõD‡ɪ*ë•¥p õ&É’Yýœ$®ª‘åæŒÍ8§Å`œÖp^“Ê»19»qhJN!83^Ór„„Ïv—˜2UÊCFdb½ªG¬ dhÓ'Qñ –~GÁf'Ç•-;©B¥µJèÖÙÉ8Œ!hJ[ïz'9i~W“¾¬À;ZÚ…—¸*Òš+»pf¥’ ³LVmÆìLl·À[r+x1¾1Ð1_V³ –,=kÙ›ºîË‹N[d¶È:²tÊ!Üαo-»4ÝÎW‡|P´ŸßŸ©XB3Œyº•g¨›õÕ –6‚s‘OS˜·à€3ûzX° ¶x¦ÞR8[°´±Ä8†{|XmÄ¿Ÿ-X"Ï—9S°Ô<`iôƒË¬<ýôíjôšãJ&*A Eص%HáýºÁµ™î+_‚tÒ~%¥E¢þ2—¨¿º¬³ÛÿÄÙíÑáÍR5IÊÎzö±/ziÂ6½ùk”c›”(ë™É²%ö¹Ì}`ØŒ)²l2>öÀ1U¸j"uGýƺå$±Ñýuá<|µÁÈ«éÌ4Š')†‹JO«ÑFWº°8f ‹`º9í¦¢-Ïñå?×ÎD®&æx»ôœå6$LZndýÂ-_:ŸóÀ#ës7pôâ8Ù¬í6r¦`ÌÔš´6´—Z_®6DX·?ø—c§ ¶Ã_ *ë*‡‡ÇŸÉÖšó–ꊪŽY/ëU"ÜŠË:æ\YÇFm¥ìnŸ'bÀ£“H”Ø„£*‹ CU’§¿ÎTU–õúu#,tWÉ Cœ[Œ‹;c]ï}hÖÎPUÝÕYÃfŽÞ&\Í5Ê !š³Fž¬áZ8g LX}}ÏYõu·BUt:í6&jK#²2à®[Cnã—&Ü\³i]b˜6ƒš-÷ZìÄu`ð­,È7:)(ézæ`Øå¯zÅŽƒÛk/Ûë’ƒqîãêRÆ™ÛV5Œs“ƒïÞåÚ­ºM°—b ĵT@èâ5õ&Ê<õ"À‘+ô sØ/]è!*±·Ç?}´-çâŸ1Þ“)þ«>h¼ÊµROºG¥ž ±/õ4¨–LûïZ_+ôŒè-xȇ>xT~媊Leš¦Ìò ÷ç·b¢î]Ù‚À* x@ôNÎ.T|*»™X×Mq6`iúû™˜Ç^º¡Èï¼~ ø{|‰‡é‡Šyà-²]ópyœipeŸÝµúQÞJ7F[õýµ5{<䧪õˆÇ½,]»úË5<²˵š‹k Ç5}6®?$~Ç_û4C2ûR)7uE”ϵ^\±Cò-BdRŽºmC“†Ö6sÊæáaD‡{Z]œ‰vvA´3ëhÇw-Øž™k‹=¨²§ÄŒLaÎ>PÏ…9sXUºæ,.Ì™nž¦“ÔÊJêÝ-'¡v­’²ÑÌ̼QŒñÈ9miË•@&H¦––šB#MŸÊ‰Èê’¸l¶Û8‹‘\T2äL¥O<ùrOY¡à| ƒ9M°ºKhuA%!âÛÚL݇csà–­û`»Ÿ‹]ºÒé£Áá@Lƒä`=–9ufpê¥þþO_}ÿûoþòÍï¿ûö.Jn@ÈéóÆð¼¯þ;uMËìÄ/@d6“‹c1/ÊÛS‹z›k~' “ØÌ›üä|”# ©ßÝ_Y{㑾í/õuKo¹±®ÙpÆÎ–cÔÞÑxý÷õ\i"Z`\íËúr”tÞÃáLåËݪPø&‘Y…õ©ïœŒBfX >ÑÈ.ˆ¤tC¹z٨શp| Æ#M\°µÙ m¦‘)ƒû6 ØFŠv•UFB`ûìÃÀß ð:k”ê¢î®EãÁáeSœCã¡ôG>V ¹Ê²eE]Fv­*¯†ãEÈy .mÖîYãœÔÄzL+ô³ÖqPù2p¼6…ãQÇ=˜³ã–ÚæÅzˆH;uF€ùX."ñˆ[Ý¿†I Gå!yÌ»EW»{ $ÏüK¢'v“×°áP­)eG~S¨ÖÔ7áMÓŒ9™ª¦‰6a5õdz‘ÚÞ\ :ˆ"5Ê)³aʆiC°é–E&N³ã„‡eWm¦ÙÝ·­.ì¾x@þò˜åà_¥A5CªËR}Êë (=´ke©¶à¿ëøj Ayp‰f,L6¾Â]ÔÅWI±dÈ"ñGø—#g[²#“ðQ÷k½­1{(n̾.F+îÌŽ¯t£ã.{$a=V¡vC;äÙæÊrP nZzBv£ÁC’€)ž•8mÊ(X¦À}>\ÊAîÊjÌBs =ñ IÔ}¸¤5OD"m_»KK?¢<‡èE êÂ{Èq)H#ï&AÞñv˜”‚(F:èÐ(ÓCf'fïzÈ$ë{º¨Øƒ†/—LFý|™‰â"êÏ.ˆb‰b¥âš€ÏÛM®ªs¸TÍ©šª Û¬¸»\Hdʾè8$ZÎáà‚p(PEµÒ˵œ¡ï¯¨åTEÙf;½Ë6¬åØÅ³ãÅ#Uœ(È ß+¹Œ†ÛT%õ2;+u—DZs¤ªÛÁQõLiôߦ£Ÿž™Òh…ŠÛT­$]X¿F”g´H’h¿(R!„ua@³¥”I~>ÌÇg»¤‰Ä ™~ž'œŸ¬Šóûáè)ÍA•úˆG§êy–À> æoÜÁmå=èA í ÆSË#^üùÅqÊ<‘PË1ôã;=,õkÙÿ÷yûÌ«àå.¿!çŠÈz'z¤žøìáI±MÖ¾Õ$^t»Ê¥X%Çç,°eÈÓNÌU¦µ ˆ=%rG;¥¸óý=²7EÞÒ7°çü„›´Ž=ßhG='"K.Çížzç¹æ¥,û"vò~|%Ö³½æÿÁ'ë–v›]àšŠáGÀm× C¡ ùþdï -@2æìdFñ$¤§IT#y¿îu|Ü>-L©µêÑ=Ï;,ÅNÌ4MÛB̶ú+$zXHpÂ…\þYd¼‘.hºEL¹½Ô‘k:´µ¡3»öÀ \úhe…¾z]5#q–;v#Á/¨Ϭ„œx«…b_¬6õÿej¸Åv«Yø@d}»#â,â_c.²º­9:Z^ÇÞÇ:˜µGéý7*½s»Ð  ¯=Å_ ƒ]ç?h–LDUp¢0çxšX¦2œàÀ<jMKzjvNZgDæÙ{7Ë×·L/È6“ì;ì}' ”Á³|=?6ÎǶƒþd 9?!‹~}ö¢<Ûô“ë³efÀ+לݾüDëé4ñNz ~”Ù;§x.ËrSw]ÏJÕ[‡ÜýîøúrÖö *7íâ$ÀöàL9îÆ¸©Œ‹nv",Lŧìx+ø0=vØáVzïéôñpÅ»Io­ß1ü|Zî„ëó‚}Ű0aZü+Nl’/9>="èv+ýǸ.Ó "ûaqÖgILiØìE„¡ û÷>iÝħp¹ï¥ÚÐûÇ>øî§[Õ}ïóõóÝ´ïÀ‡$ íŸDͰC$?uÅïn¦íÉ™¯vp,È­#sàçqÊGî¹E®?²Ùß0égX5 fpÜ&°i Œ‰ìd´Ãàw Õ{ö¤­4Aã%æÅ`"Üó³”l¿uXÿÎix†TÍv¬‚{ô˜Þƒ0ºÈ=>Žç]¡<¦5 V_Ú;´Uº ƒ—(#Õ—”‘B1#;ƒ:¹0 ?›íÍoà ~ƒ[L Œ´°0Òø©¢è?ð¬ô>ä­#]$[®˜Å)NDÔ+Ô÷È´AÂHË„‘6yTŒGýšÞ¥ô_`§Cºä2Ë»Ñ6»±²| _qrz#K„ˆ§Ã î@4gb+Íz#m‹Nf ®dðGUÉ㨤)`÷Û-Oêü'—ñ°*ø›ß¼kÑ„Àì fêym‘uiKø—¸´%ºµkõ<^ÊÛ/s,šz˜uçA©;ã2Úýd_„Ï ˜•¯¨Ü#D0K8<(âqupÙýô®é ÚxÑ5Úýä‹z›+ŠzmabdQl’ªž›*»M ª²8ÝHàw÷¼â”{<>SóÔaEÍûg¸–—‚¥àg68ùÄ¿×&–Jb³Äò¤"—i91½ÓùæœfØ¢§@.5–NÑ:‚HñªÖ‡+öŽÀšÙjÒç¬Yè©n\~„»¶=åäK0Y·xåáPª÷S9P‰„ Y{zºå¯YÒ»`e‡r»¹z ½έˆöoSÛAãd*¯,ôûxÄ–õ›“›ƒ³ˆ1bNF““J7Â'jèm~]ÖLëN$p|–yøP}hx `îæ«'Þ„¥ŠwJÞå”MýÐ< £©#eñ(w½øì÷ÝñÙ¥˜¥Ì¹4<"tšuÍïÅ+EIe ñ?PàôÍx£ó4«QšîÝ+&&¦âÊ$y$øTü Á[f”F8öXÝØÝPJ“ŽAzv&·Y>8ûFô~YܦBŒ0•î®dBež§cD³ŽÐŸµ¸9–Z€È7T¹%‚=-§GÉ‹pùÈ™ '+,!v˜„uî˜í‘Ê"7,x€*¡ö„ôúµ¬".$u±H¨:)EriŸ".D o9ª”Ë%ûÆ^´|râ2[U²TÃý";¨„»Ý3½ñޑʵÈÝí®€ËŒ8ÈÚ«q€RÙeÜ©^‡Éo;É YEƒC wAY·Dc8ò`5™wŠÊÂÍà[§§"ƒ8»xe/ÕT7deè!¯ £UØI:Hå¸ÂW–üç§-›O_(ÙÃwàá¥?ë¯Hófð  »Rš·ÔQÉœP@‘…¯©fÄ;ÌãÏðÿÿü×›ÒÚjo©xvíiÛóðä=å[Ðu8ŽÊ“c„’i¥ø)î&d“¥p@nµ@Ùôcûä+2¸˜ðÁ(í½ÑÏë= sä¶bؾ¾}¢¤)b?8×Àƒ¥£:„aÛO[¦C‘25vAÍîf”™ð{§ï~Ðã€jÖî½¼ÆÖ½{rÆÞ;oì½î´±Ì &K|<1‹®cf¬úÞ†ˆ®åùúr„­˜d‚;‘Ù±Ïu<±(õž~¶ké*¬T{Åî ˜+ÖÒbŒtX(}2tM¾†·¾n„›NÒ²È#÷Â6ŽÛÛ"gaŽ›DVí·øþ›ÿöÍŸ$œÞÓD\hþxà=Ž.$°Ê­²q³«{ (¶è%x'ë>'+¾w¶Û(‰*mõöJ«„I/ ôÓ—ZØq©¡þñHiŒT3§¢Kv°ð¾ãr:½r‡BS–:¹Ý®‰ Û£\c¸µ‰ß·»¯[®´U}.ÕÝ´ª]¯¦ºñݴ㯠òiU9^{YÐ?܇ŠçÌÖ fä#:Ò^0u«pI¥o°¡²2¡a™[GñŒbwªÒ/ßçóé³O„DMæXC£Ûb K·nlÚ| m8’>„ct½ÝµãßæÚHÏš]S–msÑìÚAÓ¬fÌ®)ë$Þœ1»ö£õyMˆrÐð¼\ lʘÑ9ž_ׄ¿q/M³‘Ëž‹MI9ù8Þ\›µøšø×dâ_ÀvTI,´öÕ=ÿuûÌìýo"oãˆÿ|Ý¢«E ´Xü¼üDE0ÇÆÈeAœ’ 7²ZÇSñ/.¡¾jɆ ëº%'ßbÒ\…ö¡ˆz[œR“K½NOwTäçò!“õiÞ¦‡Ÿ™¨vñró§íãä Þ-!¦€š]»XþÄËY“~r™y>r¢ÊÚ{fŸ§Ì<×Ù8çZŠˆ=Éêôn0®ï†^ìäòØÖ]ù¤y…|=n÷â7¥‡iq{†ƒÑ™ÊNº²ûáªx,:wàüõ¯ÅÿEµ…ê/ð5N©zD½Õ»2_’·ÈxW&É[TCÕÿ¢ÞU5"`λª­y¾Â»ªm ›ñ®ðçÄ»ò~ÇßÝ»²á`Æ»zKâb5o¡Û¡ëVz ÐéòNerS9Œ¬š\顨ú³({8`“¿2äÖ_VJê¬ó¥Šò£³áÇkKË_Sz¨›òÊÒÅðW–b\/=œÂ‘zC¢ÂÆ"_¨°»í‰Šf,.$*Z )¼>QAä’Ù^®f¼IÞà!+¨øßUÝ{Õ^*t%’·Œ&˜‡Ž=0ýå‡àžªÚliöÕe Œ°HÔl”såî·þB$ 9ÇþDFº©Ú: 5ð/‰†Œˆ’n*í¾UƒWAàŠ}ŽS¼+'oعñ<ñDSâUF¼¾O¾æ¡[òÅ.D·wÝÂÖMú«u$&̓U÷¡d:‰Ùþïš’-ăä!8$ãüðó_ß©®5ªÄ8g¯=œ… §¾”AF½¯ûĦcí‡lúœµé‡Ð¦‹ÿ{½Ywù‘sÄ-e¸µYÍúœ3ë§Ä®OIgÝà/Úà£K56°K‰åß¡å?é‚Å!ø°ªæd=;z>ÇU_vX ÔkLÁÛ6qÆ–a7¬"¡/ï>ú¦ö9~lC5 ¬Ý*LâVô2÷9×À\ð fö &æò …ŒË¶×ЄòD<*—×À”8£ÓšFAVëü‰Še"º²¼lMÃP)BsTœ­i”M}¶¦¿ª¦Q!‚ïššFÝ^[Ó n¸+kUWÔgk_î*T}Ñ¿ÝU¨†²ºì*TcÙ_¨iÈrsuM£òl’¦n‹ñBMY™Ðä*üCj|[T•«iä SVÈUQž%?9/)ø»d‡Ö5Y•ƒ³µ'.à{=­Õð9çËA, !]mŠÉ6Hp* qÅ>“¶)Zè%¶Ð{ÞÅÐBï/Zæ.°ÌS˜{pH÷½²ÌõØ¿:Óܨµ~½m61VàKŒ³ªg”(Ëþ÷°Î V@Ï[ç¦éûŒu†ŸT·B%·Öý­†™ú ± }µ] "kníʪñ•’ƒ²Ì6«4#G‘1ÍȰÍ%•’'t†[SRª«ÜšÝÚ…Á¾(-gxCpÞwDîÃ&®Â–8kltV%àˆ¬}³ŽÚu'¬œßô¥ -q=V|o_áȶÃ{{¤‰-1‰tÏZù-16Ö NÎèbS“ ¯Zø—„W-†Xk}ðüüƒ%Úî¡€LÇ«8:át–Ûé{æèÿ;ù¬ËP"ë—VœòÛ>^'!äʺ6 ¬ê¸F‚l¥‰ëPvÕ×HðÈ$3Söõšë@¹œÀu(‡~L]‡'˜ÏÁ¼Ís™ÙúR‰$ͨTÅ0\tLUŽÕY×Á¨¥qQKè!›n¥í£ê%-Ù$̸H^:tëÓ¹ Ë#è¤å‘%K¡tÈøè*ð- d6–ÖUÀéÆüš&·£ã4çRÄ‘žWø« ¾‚Ô§Mܶ(´•£B"0Cµ¶ó›• GÌìšJòÆ=_)‰s¹8RýG*ämùuÙöºnª_Ò¶Ûˆ¬ÿÛm;ÚeV>W±ÑV—©ÀÏq€îVkÙEz,¥ù"“ÖHl4W\m’ÓIná¼­@R" E^yù#ÒÕN eŽR¬`൘½u6¸V†þ\T§}4µýìØÏ ³ÍÊL§0S`?‡Ÿ™Ññ»íçÏð@Xöÿæ3,cL‡Fw ùÏmŒ'nE Z;ܯcæ bæàä›8á>?C40=ËSB‘:ÀÿÂ$ä>ŸemíjÅL-pi`ÐÑŸ[ŸÊS°¨Ågá1BeEµ jgÈ\ ¬š:f@Ÿòè&+CN܃b@o$ èPîó è³#ëÝ;t³FÖÚº¥kGè;£™¿C׾˺ö=üK\ûÝûˆk/ó¡Š\ú%Ë >{™0Ç ¾n|»ÓÜâ’Ć&ßï»·Qˆk'}XcW>:Ò?yƒ¼wnoZCÑÆŸùB ±d›Ò%úXuÓ»PÆ l‹µØP+ÂŒ*iêíã ^‘Yß"`óŽ»âfð­æHÇ`Îê”cÍrv¸úh9Ï9)ƒžŽÇê.–3¨¥wº˜ç3j¼–©ô€8/OáåÞíJ5l¡Q¢¢xÎõ¦>¿–©Ç¿l6ù ÄÒt;üÌÖ\OÓz“cò7×Sù£É¿Ï­C|š¦í®§òwº#{¬Ã KÃl—G¶ËßFzó(¡…½i²ºŸøËû‡éi!0Tyž_…>SË‘…LþC_oðZ¼½àPüÛ3¤…ÂØÒçw@ñCN‚SþÃÉHcâ@¾?`xvKQäñirܲÀüýÌ“üÑèCLÁ†I~Xô|ðs=#B'¤¹…=ɨz…jæ¨MÑX‚ÿˆ;–§}EA=¼¯Ò‹ºGõRWÞByXT’ã¶½“rÔË›î^ýôf9¤üó\x§éøz #h“":œõ6ðAhË·O”¬#IÞtÑéÉ"âRbÏ>¾ÚÑPÃC‘Ê"½ÛÓr'kÌõ>³´TQÛ‰Ž£bÙÝ3¯´ÛwªÏÒNdÊ{Ù‹|Øâ—Ö²Žxª'á=©»¹iyÅ´ÏÏ »ïò™ID _Ôj<*|Ë}æíóÎ]w/¨ æg²ƒõì5½[àÔ§TÑóÑñ@³ª)mPï)è«J4ðöë0›çWzÿªèåx÷D¢¨°}ø9EÊ8šJXð;Y¹„˜909rtüˆ_ÂE¹ìslw;Žë’=Ä÷näëþð@Ò,Éž``¦OîvxØÓ'Ö³ÜóTUíIr!u[ Kyµµ§)W¥¼Z}+ŽØ1–xÂmQUçµ.ðˆôš“NN[í2·þ añö„¤Ñ‰þðáƒë²¿\ù³m)[òÛ R¥ÜâÁà!+›©¹9‘ª.q¬ò÷u*[ ÏÊïíä=3UIø~Ö+¹á­ Tg^qì×gc?èÁ’Ø;3(öCm<Žýð»¯@±.•68ÞMF‰Ý }yþÓÃI¯¸óJ Æw5¸ï>¬÷²€žÌ,w‹ûÒwŸ¢2̈7™g ÅI<%îʇ‡lÆÞ¬|xbOC2mÚ)kà]–9üòѲ”/ÊWÝPªåZ¯(_uC<ÀÇ™åœëœ2MUvV+‘\ÒkkÔÚl¬§§=U¯jOunÕL2i=pˆ5czïD|*ý<Ç¢Mv|q—šíÚxrAÃ^(¿û¶ñ®5 |ÖŠ•’¤öl'yeǸ¾½ÓÅe„myý>’‰gö$DÛ1³ÙYèäD!‚ä¸È­/•½â;&\ºæó–•Йœ t³h˜Xõãù剼 5d@?0@mÄiûí %ùµ`‰çœ–C_ÎeÛ9tÅ{níÿø–“~fé áôŒ œbAm­¥ìD›pó‡P²*8”ün9Yø–¼5\Ç:Ž´î0T½ .¨ªXËåâQ>Œÿúõ“©uWfV“Ý5›*“Ÿ9“û-h›„ÅÛÚFotHp¶‡œûA™Ì™ò\½òñΖ*¨ŒÜoJÇI¸jV²À6¨çôÊ’5È â«O†øÜg¡©® RáN_ÿñ»ïþøÈ€TvñÂí›ïþø§ÿæ9»ŽnÅùþO_}ý«*µ[ˆ P³½m™¬…˜²º1“ÁŸ]9GMæ ,E1ôs$ûèÅjqasîƒe pya5 g,kv°§‹P;šdÊ›¾'}¼dAª˜—áà‘Ýá,>>9_ß^ïÙùàsÛÝ ùê¼ëQÖO V.&A;AØ==Тi†eží’U®6íÃ^KQRÔÁe>ÖìðQN*o€öó}éd¯ÁS ý=& 7Óf*¤8¦†ÿBÁ@–íÄÝœH*³¸Ç’nÁ âÝKl¤aplº Sô·$?³÷?mÑqMUF’ˆÁÙëÖ©-7¼OËÑø$Œ\«*@®í°è·¯ËÃÎ1ñ ØšÕ¸#ÙŸ{m·‹ƒ¨ Šº2á Ì7HNàÞ@¤[†¦1† R3vÓïEó:‘¥È¤Ig•&e£!Q<¾ª]Øó¦Þ¥Ræö1jz^¢¿á J 9¨I›2Z›aX/1/‡åy÷ÅãɈœŽûˆˆÈ‰šb+sHGÈ3ÙOа XìœB9qvÂP¤âA•‚d± nj.НfÔ Þ+h‘"§*7c'LB¥¬Ï/6$k`!~m¿‡s ¼VDèùYÏ„‰ç?¢÷Ÿ04à ÁK$ÍljJ;"$$iíìÝóôyût·L.,):Z•î9Ãú™âë½q›À çŠâç'–^¶C`cö€“r¦”á(” ¹Q‚Ã8)JáX“ÐÞ†ìsŽØ„¦a{£$¥<¹W‘ •vÂ=ÍÆ+t6hpXvAI3rߨ=e ê´B÷¤š|8>çéiâ}E$O`—° õ½ k9T÷’÷P#ÞuÜöQªzëÂx£`õóqs[©çRŸ•hɶþ|Ä#¢ î½g‹a£!éE@b|~Q¢ÅcÞS­ê¡îg÷ñè®Sè’âhì€L¬ü}ˆ94dûqŽWÂXÔšô©0ÏsŠå9  Á‘šI€JuÌ#|éyömp``øx1fàäŬup6u7Bµ#ÔA0â& çañ™I8'WAÇé.¶€1¸S@.I¹ Íñäö Ò{}F©•#–'Gq7Â×^˜''näá¯s` C!NÈDØÀûïI‚¦JqiFoe{ÒßÑÈ%)æÆ¦<ï‚€›‘Ïu‡õê¶ké¬(dË68ØÙõN{¸ïäyünû“ÿšø:Mó£îË£0¼í÷âZ2¬¡²^2îQh‹±r­ÊÑŒ¬«Ãu6I0V]¼úË×ÿúÍ×ÿ/å=9̳“Ã23Ñfƒ3Žº¡Ço(u6€6xTøÚ@amÌ8€ùôŸM@+Uõµ4ÜÃû$4Àߊ €~ô‡…Š¥k4(++éUÓž  7h“ÐpÁ|-1gè  ë¶È(0àÏ>€Æ¯S‡½>‡$€¶ƒ¶<ÄÒ®DNséÔ…Ó§¸°Ñý¿hÓZžî^w ruK¶Miüd\Q …£dÔìV°;>þiQxøîU7f ˜Ey>ŸcðˆÌEwÁŒ„Ϧ˜ªé@¿Æ~JÈCÈ%!U½";eƒººT"NXõ’{= ïaK›^Äy$÷„¹Eæÿù4½îŽïé@Žl·_®óÕ=oˆég—iŽÔÀH/ð !ÈQ75L:¯yǺÜè€~OhX"?„OŽ™Ä)È ³(è žQÌË#Sû»` 7x¸=£l¿WˆL²Ï ø›§ T»ijsL†vîËžo˜¿êÚÞÀ¹¹ïâš1“c/ôà°Æ°4~^¨¯Bbzˆ¥¸àJª.§×‡—£ØªNg5WÄöð¨àaþ ßQlMެÞ4}ÓœOlâé5§€Å€=³^Ž>60ÊÀüaû <&CßÅ+æDO‰­œaÿ .™O¾A£WÔ,˜àáêVu{¢†ÞÊàßÓ÷º ×®¦ƒûöòÍo÷)YaYaÚ)çÕ†il\p¸Æ&Z`÷‰·'Þð‰½\¤7Ú>ÌÇg»É")ܯn6I ÷Á>ÑWvÂáVzzýø^;æ Œ€ž-“½£4^YÛ°Oá¨LÏëª!ÜNk v^Oä`¡ R- ôdðñôâ#ª`€ÈIçÚùщÜï®°$u¿Kø—¸ß%ºà‰ûMƳQ°¢vº`¼‹ˆ!G:OùÖWK¹«—–4ulv¹o(ƒ€z8KòñõôòÄ:î\„ ›„ÖË9²Š¶-õÉ]Í·1‡-f:pÎ,Þ‡Ò4À¾óúz—ÞA(Ón¢L뎒K?&Ê'Å)¾(ýb|ºo/OŠQÿÏÊ‹uDtŸ)…G½·¤fK#Ì>O[w0øùý™ƒm}G¥7|ê±V¼î5m‡ÞØ…¿Ù}ßÞ¤‚ªµÕyf x÷g;ÅšPîJ¢E³†­ºóî ãd‚BôPp×í `AàÀ[l7 ‘“vøÌ=«{ªK¨paÎ[xç øá0ðöÎd œó½f-#¢rRÙk,RùÎ,ž±÷°Ý¹ÜYÒé_ $Íúróžâc9¹ý§‚Ï5a=sOʽ¾>°…šr¯¥²Üîü¸]ÈFØÇæÑ [„ ëë ‡í„[¡2’ÆÿÁ¸GôÒU,IòJÍ{vc‹­h{ßí <˜/ˆ¸]ä{´´mÍ7»ŸŸ¶ÀÀ#/};b ¨«Þ1T¥ÀI§wïKøÊßÃkÿ™ð¸Ò@‡våñægõ8†0¦Ag=û%x©Æ_ªbÒÙàjÄÊ®fŽnÆüìëÇVýøƒÞ,îàÀÀ°üfzgêùj˜9×ÃcK‘ðcÕkûq\NhÇâ%n†èÙ_ÙWS-öó[îµ zŸ¿h?m¡±÷–{¿(NSLÎHehלÅÿØ%áϳæ=~:×ìøÓrÂÚ-D˜çviî}@Ž`—§—åÄM_-‡›A0ƘPÚÈóÄw}e¯TwNZéy±Î“fGœÅÁüw]|?fäKŽÞ­~:¨†ŸÜP?)IW¸×À£×Hõ)i|õ‚-ºÿùº¸]Ƶ_béYàž ÂՉƮTê¾br|êµÒÀkÎÆ}Ë?sÅêaû"¥p·\Rr#º‘‰>”$Hš¨_ò“Ã",^ŸÁó;nŒëZÙ±÷”ä£YãoÃ70xƒ;l|¼·²ó˜²Óü§¯¿ÌA]Æè¶+~P¹%ìÿú *G|Ëí 5«m¾û†“ a€iòÐ{É9,ªG œãÔ,yšHæðôB’„‚àXž)ñì?Rhskø=ÇÖýÿ¿¹7mn#K²D¿Ç¯ ÕŒM‚ï‘bC*›1£”J‰™’R&*³ºZÙïYBÄ¢%Õo~û»~Üý.DÕôXÏ)S$qW÷ãÛqÔB˜ -áN¶Q½‚²øµƒÀÏ,ÂðOjå–kv‰tMÎAÙÉiûi,XZ(Òüp¸}ºìþáhPPêŒõ’ˆf¦=!÷pÂÿ3‘hC<Ÿ0ºFRyh¹¼_(§L>v^‡Ø«xõìÝõ %-Œ³3|èw£“ $y6­«×?r>*L‰öyÚv8èÓ RDø@ø¸™_17÷å8ÍðÀÈs9ÔmÌ·"h8HÏòØï+“]Œñ Ø9:ô¹œ~Ðgu>Kå±þ>‹Ì´é‡Õä‹>¹ÿ? m¢SÜ/g‹²ÖÇeE|„¸Ž—¹ê´ÎÇ­I·ü¸Húxn/ò»ä.Žžþÿ…¬zLšS³šûj³Ô1q+ÖC¼*.~HÔz9‡é)ÒbÀïg=Œ;ãq ý9p$p ´ЛD-{Ì5,†³W™³g";›+OÈ1•j²±Ã‹‰ŸhäQâzTF9¯i&󭈻S?è[öØÐ÷‚žíaÑݱ Áq‚0ýçÈkÜ /ŽéC¿(;NߊƒÑC¿¦{̤"9Bü’}”9EјÒQé¡ì¨‚"º=Ζ#%®|/F@sË´ÙjÄlæ;‹É}Îod¨ § ÊS—iÄñF,|„KiŸÙcbóåx‡˜)M«Y¹_ìX…•4:¢ŠS.•êŸn'å'ˆG]H*ñît7…4A†Çóƒf”0§Ý°õMÚ–V²_ãýÌÍÔZ\<ŠÑD#¤[c—"u¼T÷Ö–ãc¾ Tò˜¯²$ÇÝÆD:ð‡ù33£YS›c 3ðât4.d¶pÿñü®b cà|:°89ñ/<ÂÎt¦Á.{«Âïžó»çÁ») &¶ ³ó ¤×ñÎD’ÉšC÷.¾#—³ ÒÑaþ;çÊÅV™k8ä›33GAÆÁ³„À| f¬÷ì@l*ËFRI½âY’ S±\¤Ú™@§[pUä]UôÅ G©ð—»ª7»Ö4×\?‹{ýz=¥Ï†WJŸœŒŒeƒAªZ1Ÿþ›ùøT3¬$³Ú–]ÂäáðKÛ›!˜înÐFS¼`ªÔ‡þîªw×ÝÖ©K âÆÝ…pÚèÑk•òóÎÑKE=É*¨¹ÙÃL›=³Pꡳ¤Î"BgøP¸tpBò¸+.çitá­ÇAg ªäóßFgi‚3}´à÷CgQšÓSx ¿0:K³Óè ¿8:Kó"99QúýÃÑ™9ɇè ?üt–è ?|(:ãª`tB@•ùQ$ÇeeŽËCÕ™T‘\òO ª,F ûû!U†NèÇTY O΃^€*Ê ~0ês¨ÊXdùƒ!¦‡ªŒ5ްb²ì(ªŠUáá¯ÎŠª¢“°êUå1‘%8T¢ª³UEN4Ÿ=Vå ÂVý“°*"BÊÿP\•sŸÜÿÓpUž¯í?Wå9ö÷᪠;ø0é´-Sús`[¦°/äz¶ÑYô`tÖ΢ÓèŒãËmp}œµÁ™yRäG`´34NMÑCð™—3jáYäÃ3PŸ@ggÇÐYô0xv InçÁÙ1l†ÈØK£Œ½¢!ßs6Nr_®þM@ã–ó )Ê£‡Äñèð!æ‡Qð³Ã‡ø(ÏXW™Cy¡<üÈ¡¼O€yÜÅ©IEã%æ½ÆuB-Ñ>‘=JøZV¤ýš=5øb^<ø}r@ðµá(y(44Ÿ§žŃ^@C|“š8<𛲽øÚx<|è×|h˜ÆÃÁ‘´Ôlä¥Fgq f¢%ËClØذö±a`ÃÚGbë™äFbì eH­6ÖŒt^šZl(šêÎC†¶ï4í¬ƒa¹Õ~ôlMBåëÆÆéÁ‰E&`O×Kqâ$SMPМX(LÌ| æØ"Lädݱ¸ÂÝüQ8áAFaDf  RœY¤Èõj€è1Œ1–ˆºÃùù˜m#Eî Á ؆€{¹…`±êÄŠQç E÷/„–é,ú@ì’–wOj¬»^ʺ=êòÀe1Èî‹òNbŸ º¨uˆÇ3*yMù‰ÏêáÄc³Á?*Ç7ó8ëü¦ÝJwÞðyðk>l¥ä„!zƒ 튑§ñ`tXÍhcä$·cgy†âžJ¾ì‚¶k—8¸%7‘díRÙ(µsQí·'ÔBFpûüÐß+ Û¥G»Wi5§0ý‡CoïÌ"ú-óáÒOqw4ÈÆûŸ…↺uw“mýTá:Sq: _s{½ãŒå”$BPTs–òf'‰ËŠ.·®w/WØÝk(Gßß•·\¿äYGë„pZr@!*Ê%³[m ¸2—sÒá§Ž"ÇA<ž5dßý¬ÀK#+†ƒ“O£ßÈwtdŠèY£ÄÎrÄ þø³˜ò‰§9ŽOlì:ztNÓflÙ ÈN=Ž~ÜJ‡3èqñqÇÅ ã?ÎB‘œz­ŒÒ“ƒ£¿NÍÕÃ'4¸0Þ=cÄüÃoå:|\/öËJ“ð]c~øÍlÏ•› Óv²~Ôvå~¼ó.Ü7rˆa<+Òñwæ<àk£,ûîœ|qœ}oÎC.µuþšœþ\KéNæJ¸ãm>¡\î9×b¸.øbä\ ݺ‡OÁÀ7¹æíÄNÚ³†suÛƒÖé˜Q—wuCús`Ô aØ49omÊïq8»hãìô @^š_KP›Ÿd:ÂuÈ®;£Äåq@a{¤IG\ÂsÇc|`w$#}è:ŒS㘶³„ipHØZÇèÖÁ†³ÃkÄ—Þ /äqx=g†G?ó#Ëä›9s+ 7°µà> ^G¾_؇×í,å¿°#Œcܱi+æ­ÆdgsØ ”øæwèc‹d].,®>'F³«„¤~ºŸ¸tXbH¼X5lÅ WH0pOt _õpáèÄMˆCCL!Ç0hÞ»A·XeÚ´¨61'Ïì†IÖ¾UÃeýÀPRÜØï”0‚ÌÊ]µdrŹ’Å^Ú¦ž Z´«]E¥‡Ô¼W¥R È—ÿèÑHî{û¿žá<ßÒ†5‚æfR1] ›¶Ürb'xíŒx J!œGæËÛõg.糿‚Å£oãé›· wèÿ¦Ö¯Dö+kÿ+f`üé8{HIŒþbX+šÛ¶…ÛÉ3šÁ ѧ™#¦­™< êÍÍ\_DzÈɠÀ#ÉB»fÂÏm`L)^_ÓÖ¬·hî„׫9dcñÉ çöˇtÂzœÂWsòµ;…!Ñ8RZøÔÊý¡Š Dæ:hé&óMÐRmd­ õªò)]殂׽ȾζH;EÃêŽÙw˜%¦_.ŽDLÕ2‘;›vò7pŸ!)LÙê´nÖü;B›ÅfÙüé\àÀ›Öræ-¥¸`×AóÔö¹ð2óæ–LwU&Õ†”ËÒ*‹ˆÙVÛInÔ[2ë"ÒO ?7a™¤ŸÒÑf'Ùd³É#Ï&?;m“ÓS¿Ó&ïúŠöˆ‰¿Ç&O]Ê×ÿ›<#ª–ÿlò‚Û>ìÏcÛkæ~.µ÷¹Y…Dü¿³ W0IxöR"¤‘냣uÀ¾s±~'\|µ0—rcQíçɤã[´B¯ªGD‘SYÆzû,Äø„ïÿN6äiõôúåËË§ßø>Q4MªÕ0ìýð߈gËnÕ´'l$ôÀloîî}¨­JÅbØ?Ï_ÿÆL6/Ÿ¿y ‹'÷9³ýòl_3ñ޳[g`O‰z‹õª-ÒÁ Ôà^'¾½†/×m³*7  ›Ï MUʶ ó¼h£ i'Bc©Þ=8ØÖû ºÐúýS/Îï"ö“råµÕ™B ¬ërÊÝ|¨©üÜ-BšÁ“m·^+¡8nÑdÝF±ãîÎw»ûÇ}úô©¿(o7ä²îÏΣuoóÈÜÏA|–¦ˆ>þOó/ä$€Nî¾ZTõ¦Y=b^GÐȌɲ<''‹:ÓaÜp!•›²UF¶˜p{eÚQbFó&y¹\–M»¯üÞà6"<Ü®]Ç{‰a †Lžb¾>±ëVN§®Otû¢KöD³àëM­Þ/Ù±b%”ˆûÝšˆÏ”¢Œ™Ð*K糪> e,D¡¯Ûr%Ýïo-ãš,Õv÷WRÌ#χëУ;¶eÎ,G5Äu–áaê20¡?Öî¼”9ì5€Áˆ¤GÙh¿kGà >Aþò=M_Ÿ@Í &2&¿&Fë sõ¡Ûª¹aÕÆß1ûa¤¤rógýËë§Ï^ß<#'_>"*á†Rž½îï>‹·žkÙ?}ÆÍ |œ v)¸S°°÷Ó[|Iê{°=ø|-4ƒœGBlM»Þõë›wW/_¢A@!Oç¼ß_Ü­DXÄ©2‰ç;!6¶ jp9)¢ÔM4ò%W«&h¢wòNäßZï9ã¿™²CC°ØIW–')säûJ‘÷Îè~D(¤Øn÷Òh™“Ñ®ÍÆ$èLT+´gÐ{Æ´p°|ßüzsý/€ôÀ­övà~!>Iuãz;ñ!fƒÎ›w/Þ>»’Z:i‘„q€Ûʆtk½~ÜäŠ~r=¢·Î¯Þ\Óˆ<ˆ¥‘׊[†~¹-gÀèš¹¶ µöD“ñà»Ôø› HGU“ Y2Yú~³2ø#I#{W¬Ï¤¶Â`æ¹v™Àæ t©ú”¤ã)ÌŽ$,àÜäÇõ¹*øV,­Œ]¼ Ò ÂÛ¤Î^ËË.>ç¾”µ”žìàrǚĭLa/R©ú”Ί¯¶wœÍ¬7´önhµ2­ª6Š/èôZVv2nµÝJœ sÕ°)iX3îWÆ ]öæä¿‚žýdþEÆ÷Ø™ûš6&~ÃÚÄùŠj43 8ñk\y¿áFÔI‰y+MMmKİCRÄã/÷B{øºkÁ˜¿l‘Ðù#o)¹v±7ê¸sDŽ`_ÉÍÁ‰ñ”–Î{v}H<¥ï~pß½~ýîÙógo9Ù'è]%'Ð{Æ7JSáq¥ÒÁTnxP g©´å.٩ܰ‘Žu¼ÅN‘/ºmAÓ <ùl.³Y˜Ã²›dË„R Cc1 –*±àI,HûH¬H8°Ó„²Ô½aF@§ÙqW$ š sn†vºüѬàÍõ¿>Kå>y 9D`ùQõs”&É·pö ²Äõ`*ôpé?Ý2)µØJËH»BÁ{þ»£a Ö°»6[¹ƒ/“uâ\¡læ÷.c qºšðΈÆX ™‘bÄq@½Åu«Ûi(çE ûœBòt^R4ÒHþTÖè§½¹µYîDåà,§då/A2¤Ä@züÌ›Pð­YkD;Egx€²ÅFáBGzLhW»R ({š±Ç~iâN¢jUÃc~ßà*L%!Ò,÷cYÄQäf™IeIÇý;•©µæ?ë]Rì?œ6º0%õ…â~C/~µ0-w%;Å!Ït«‘„̤É`9µM«ã$¥£›ñö‰0)ù˜WNÚqšŠNÍ ²Ïäƒ ñÌé¹ 4Ðr¾ á=–,Z’ˆÑ?·nýúOsÖ/Ùä ¯{¾îý™Àä‰cîŸ&nzpÛà•o_¸³£Ž]ŠÜ Ù «•¶à’¾ ¶³r ‰¯OS@·fg1Qp™Á-zT-œgT1jö|ÈHÿN´.{ql |Ì­5¿¨¡:2 *N˜"~Ñ£k1JR~Âïü¿öË£ñØûò…tœYIõI!l[")êá¥"çÉðìôù'Í”˜§“…Q˜?ÿƒVŒï}òIÅÑbÅòµY×͉GC_Õ½êþMvÕ“Á œkô͹~×¥ONdâ[?ê¼õAÎÌ/ªÝ­¸ôvS»>#–[ Ñ ƒc”¤(?ñ®g’¾w[ÿÆrô¢žµ/jMŠ1r'hÿž¾2áž-f¬ÆL©lÇo¸_n›©ÿ+ ±” :Nõ¦™:O¦k ç H`&ùðRþ‚”ÕÉžý”ÒTM¡YðhÔc×$:¡GÏÒÁ ëXÏzyg.S1–øUþËD}M毹. ÏÔ»GónÁ´}”àÜ[S¤ =Ù7‹©¤)‚Gç×{#½r¤~¬VÔò:Ë3…o!­eßȲ wÕ.‰lÎǬº.OËÅ5®9^YêæÀ¶-ûB3†uµ¦jzŠæPqGí ¸Â®( óMýqÒ c&¡QY©Õ5ü™Ï_þ 6g˜tÝëÚèÌ´xH¢ w{ˆeÏû±‘@ dXƒ xë÷®’ÛÏ,C¹Ÿî·´dY4w/š¬èt»l¨õ·¥@P¿WäNμœ®©y®¨c|î>6Õ'žfž‹:%èd~sƒ6ÆNædáƒäMâÕÑ`Ð)ç ¹¼ –£Ï,ÄH}Üéë¾eXPSô~¸üÒuÙ›ñ™œ\Ì.ü“šòƒùî¿3m‹›T™bƒbØ-9o•TEæiЧ¢.Ÿ®W+ƒëªéåÓ/6Ë[ïÈ º;t¢úÍqÍe‚‡†;i 8HÑÈlã×èhááÞÍ+ŠX’;Š—1@Våé­ Ž6)`M¦P]ˆ+Øì.Ô|Ѧ÷õ7u]t :yšçɨCž–¤ìÎHÙá’|5™PQX g°éä~múÀ7¿M=‹2M¼çòiݯuz—Òþ¼áËüw.ûóTgøÜI‡Í‰ºÏHlÎQ§Í9¦?6çvç¡Íiƒú Ò…0ÛßÃ'Â'§:89³¥¼‹·Ò,ÓÞlÏ­ŠY“O"IB“V#Fœ\zÝ&œ+œ³޽‹(œ·’ûÕ,<ÏùLäë!ì#í‘l7ݦápØ!™ù>A,ÃÝ~aeE¤Ë)–²û[-:õbÕ#{-+ú«é=Ùì›RO[¸úÕ„k¾ÈÁ3Ù©Ó¬ÊÓÌò–¸~ @ý˜Ìæä‚.iFÿ›S‘ãÌ÷Ž1Ô•±ØzFJßîÐÐú_q‚õ£,áø¡ˆý-0ä_ÉiJÀ½êåæ^ÅÀí5p{Náƒ?ÎÙP‰ä†&”އÉ¥‰Œó2´gÕ=òòd¨°a£ ûxÝÑ}|æR-·FMv’„àuVÇÒe ÚãëÓÎ,Ÿ´Ýb»ªgcíªŽ˜ ¬TÉî8õ˜vWui6ã®ê$¶.µCÈ(À"©Ëæô»FH?³J˜xâTÇš«C˜É6"Ììç%Ô®¹:±šXþ†´A }ä7N¬Fƒ‡Þ«{bÙб (/á·€ô–2Ù`Ebs¥M,Óô›¦¾ŸÁ€™SÊà ¥?góTdYu­{†EÅþ˜¨å1Ø­ý&MzPU»ÀØu, ÝNK¸3#‘ø#9˜¹z÷ŠãëpôQQàÜf¸+ôŸ/8½7ÊRnÍðDX,’BÎ}½ÚªUC{¡zk²\¨(]›@­r:…—"åG¬¥¨ ³cvÌWæÊÛ2çÍ…t³ñë:#£*uc!H‚$AscÈk°30ôV=Ê3qb‘«â—X ‡Z´1G–QˆU.jsPvs*ø@â{–u!¶î*ø]R{]ZV†/¨Ä&ô¼çZb¬#ÖGH!ØFXƒÿÂË©=¬9à‚:4 ƒ{sÉÍ Ýzd~¼ÎÁ«öCFIAÖ l»Ððhµ#Ä!²=v¤:]5©1~PX‚jÜQH `ÁžäÇÑ>0J0Òº=Ò©?ÐøŠ€à­l]Ä¡að‰ ŸAÅVÕIœ¥Êm—ˆ¹ëm7:Þ¶¨x,Œ<Ê»V1ªkwIòèF<ª’”ãœf[ ó•zWCüWZ®éX4#.7+’,’Ñq]‘f_±Ê ùdcfá÷œ,Æ×î‹Æ%¹f!ÊSŽRmŒ¨°šÏyÕ`³‘$Ë…Açñ rùôy3#è*ÿeí)­ŽáGÖÔs5Ù<ÎùWp³É™Ùkž[àÊä;RqMp>DË€ÒlùÅ–¨ÊYZ:ëÿa¸—·¤×Oެ—´vérísW„˧°lÊ»¼UM Ú^ ú©±1Z…rOt6С´ü¼¦3íÈŠÂ}/Kî¶áûac¥¾YÕžõ̳êç,$ÃY»ò7Íe—"#J®\Ó£‰e’l"¹_d‰y­a÷–2b¹æž®±¥¬¨VÞneÚí"8b±õ(sÇä1D ¼ -Œ¾ë=ágȰ ‚ÌWý6ØÜÇçyb#!ð0KΨ.´8õ+˜± “M½~T¾×aÅ¥PÛ¦»µÛ•:˹*¹¿²™8 ÎÈÓøE¦Á§OS>Ó¸³Óàžµ^@[€i̽\u0(M±·£Jâ¢cq_£ªX¯ùn“y{e‡neGnHór±>6žÈ­Ò þøŽIÊÃŽeRff¬µ¶¬uò‹ŽØþ•ƒqÆß[Óø=\\©õh‚™|lͲ]7?³gÄ9*ÿ¼p'¶c«Íñz¤5‡gDKǪã"Èh]~£/­æþm•îÅ|}ëŒW½Æ5;<š5=š‹bUúç³x„’,û„?÷—–ó #˜kÙ•Ô¦‘°“(•ÐÓ©MñX˜sãQ÷„ ëÿ6— Ø'‚}Ëý߇ͱ2[xÂ/Ë­‰ EŠMQ7`›@QgÎâB1ñóHc¦J:Àpw ’¢FÕ{KØÅa *CÏ”ÏQç £FbØÜáôÜfÁ…UÚYZYH§˜3ÆJiKÄ 3Deßj]|àèf.ý,ˆfÄ¢ÎÚfÝv_îi?ãÃo‚gõµ"%±)ѪN Í-!M$¹cW3ü‚>§F€K¯‹KKÃEoKo†€îô¼2‡¤¾8q”DŸ›-W@GÁ9dE²ôÁ,]¢ë[ÝšÞêÈèFÌj±®áp¥² Ǥ=€}fñ…/«`Oû‘"j0§C XË’ß |†øj+ˆ¢6&Ï£°žZ€‡sëó?c™®øÆ‰Éé ¢ Ò€ÝŸ¹åDb€ú†ÅB»WrjW¸ Âý¥÷J‡ÄPö:M}¶Š5à EMrï™…2`˜é’¹Ï#JŠRð¯Ž;kL»j± Ë*¤¤ª¡9óÖ„í&ÿÝr+êr»mê•ÐUõÏ ÂÿB/á×í‚KÇ)ÓØÒº¦“’B¨VPI5ýˆ+/˜F“.T4ÂÑÆy+C=†£çF–iÜ`Lþ7õådsåùk‰ž/–Ù[UHœhh3ÄSXˆ!ûÝgá†*Ú Ù=k³Ùò•øÄz¶ƒöÎI­äŠ„ÞŽGëm;vÝãm¢Ô—Tè]5jZ±%~ÔÈßj¹iÊ´_:n†U\ëˆr*ïQFp cƒ¤úóÑJ©x8`³ï!¼bºžÚGÙ[F¯LÆ»rd²Þî%òJv‡/¸¬“ÖFèEay}*„½0cO;†ÞxkK©«5HÒ¾YÜâÊsBS#Õ°ðõØVÅ£Êüš[V(¹“P”±Qj5.q“yG/PžYÀ SB´ë½#¶º–Ô†¾{&HkT¶j- ͈ z­òÒ4•"T›‹E QŸtp`I^ûšžŠB3eV bhuµÀ߯{ Ô´dßOÖûMYÛÞÁ‘+;ƒÀ8¨àNÔó©»IÙL©£à\0‚²>Z¦o±µ:µxÍõ8˜ùû\ytÃ¥óÖ§ƒGEzÃŒü§fºŸLšòò•±.Ì‘ã&këŽÏcÏÇ–ŠMò)Z޵ÏKæì•_ éFžÄ¡ú7v WršI5•sa¯ã꘼h*¿ÏwîªiM.x¡(+mÄ}îwØf"«8ó\ŸíøwÂF”ŃDð~Q6ZðIxÎ.ˆjö=é–ù†ýÊ/UYýæÙu—<ˆ\ºÖ^J±ØUþÔ½O&mšï¢A½ø¼mºÂTÓ³,5BC´ÔbÁÚNÓrº™ÖþLû¡°túcúsàŒá#$ÿ`F•ÁꌟüM¥÷ô¸)˜Ä4BQ‹òk$[4Αá]1jL©4½Èö®>SG6†“Àcb—&Ëþ¸Úe9z„FD¿·cÝ'8Ù‚c…´*£â"³6HtëhÅÄ‹> œ‘'d!T<ÊKM`=U,5ºÉyìÔžÖxë‚Çnò«»$ÝxÂb¦Á´ÆâZÏÌ£–Ç1jÐ!o0u6Å;¥ª…‰˜Ç×uœgæºþ¹1·Óžg›QZï9·hLÊO\wíå¦5»ð‚”«¾þ£9Ó^NÂV+kéæW¾ÎEÛ§raó ¶œEד/[µ+«UøO¡ðR‘\?>{òÛsPžâà¿?{õæE£ŒÇÂ;­n÷JÅÅRTcŽ›u¹…~:¯&wçÉ º ¸òï´RŒ Bjè6³&¡SŠÀŠÀ2PÈþHéß×[î•¡J¤–Qß©^ýÙY;’úÕ˜©gèµ’3 ^r¢ì‹´–’ZfX6ýó±f?e¹ÍØêwèÖE컊žà<‚Oƒà3—äEaõ×Èà1üTËvgŽc:r]BçE†Ïw s žea9œª&ƒBÚî\ ’a5-ƒ>‘{)}ÑÅØÈß¿Èé% &Í@6<5H`ÒÒÙFTà£ÒgÚ)%èï‘öÏG){õ²±¥jéfgôÒ«Êüet溷ž¾#=uOº–‡8ÖdÕŠý3•ÚLö3U‡à¢YU"9vIÉ/òð8Æ€ËsóìÍÕÍ»WÏÞ½ åøw6•\kÂy˜ˆÂ`aÚØ6=K=̤F$éïìi°qÛOJ¦È’ªX ';%Ð ãÑÜ‹R Sªõˆöže›;¾¾Wg“hM‘«%ãK˜ãÿ‹&ÑUŽ"^üýÒ9ñæÑTÆ{;€Ieù;ˆrP\F ðÔh§Ú©´Y¸c+öy8úê)žY¹7/è0}výÀž2(Þ¯4?à,Íá¡‹`Îþ‰–_Ÿ“VÙSª¥r̵®tVµHG¿†Cê¨qçÐM’ -c>2O¾i‘ËŽf¹o™…6˜®Íu¾+Íß·Ò'î‰÷– iê—DtÜp:UûÊ(…&î F8Æ-¿ÃØïbË´6kT^X²±egž?cENéWKÖK7S¤ÒjŽ´wˆ…Jz¶’J­( ­XD‹Ï6ô„i$ÒïÑB•/«z«A†GðÍtN# ¶-8 ¢fQnwRZ-<ˆç€/\Õ>—[Ðu"òÒý-b£÷€jƶYë™ ˆš+kõÇ…t]~ý𨋕Ó[ãKBîVÌðƒ±¬œˆnŸ7sÆîé ™™¿Ë[Qðå”Rb•±FÌø#<|âÓ$½þEÌ9 e¿·œˆ†4µôícÎò` ÀÁµn…ĉÄãV.¥4lD@ÎÃèpÏEóûÑ`|¾—&•€Nò"vth³4/øµ(£îý‹Ó(C!dnĦ3‘Wê0z̶nH¬=õšzf×ãó¡Á˜Y1‡¸äðæÝÛ«wo®Þ^½zzE=78Ç#V@‹ ‘¼Å±È¤*$&•)R)Ÿ2¡9jw~Ó 1›—ê ù‰Ü8o+`|G[ž…®ÈŸµ #¾Œ3ïxÞ·ƒ¤ÜG'Í»£Ü\1èÇÞ'ìhÄË…úè¯XÑ<Î²Ž¤ ·¢?þúÛ“—vMÑžŽÉ£o¬©UÇj‘ÒðÒ(OFÉÙ©—’M¬oÔë~翇)j¿oe9žW)\rÛH^lm„¹"’e—´~¤Úiý˜(;˜‘ýs?AvñÅÆB>x´S¶jך˜Àµ´M붬ä Lsµ-É/xDVL+|s%”刲s¹P©Mu,_Ÿ4Ÿôœ§6ùÆzñGý¸ŸËv “ñÉí0ÿwýúypJ>p'õ?Îi8Þáât3Ö¿ú-V{qøxè±NèÏÇ:ך<ÖtRÅc}jWïl²¢Ü» 3è09Å"Ø%ýT?o“×=©ÊÝn$¶Ò|Óf«AÛ4a >5Ûã e„ít;LaY"å!éd½ãZÃíë6f![s4ÜÅò‚7ÍÀ®‚1{‡b›™n»¹-G I3ƒgϺÄf^¢5Ò;6hì¤ÌhÊ»×E“…= píË}ÂáÉAÀÉ…ëk÷ü€¸ÀŠº©V€é®Ùz¯˜ùpÃ#fbí͸ÊO+Ž`vgaZ±â¦­rðJ™jøõ™ñlîŽtÍ1FÎ~%7ìZ¬Í’¦t¼p5ûGÃ`cɅól8þÅóˆ«?®­4ýÔ­€__Ø:ö–®ž.@,Åý]ü ܳ0wÆyôØÝ0¥N{\箋Îb_ºÎÄDRézÒñϼð²¤ÊÌÄ[ ÎÖWÛæ3 ?3+÷¶Â1‚‰Y§rXu-$m0kA&çýŽ„’‰Ì…»N ¨ÍAè̦KÉ?ý{zçfqÇD^&™uƒf n6‘âÏŽÜF½-ÓBïàÌ“:£ 491ÈŽÄšÖÌ ™Ãì!æÚ$º%·{:¿ˆ’À*ƒŸÛ6§þk-iqÝZˆÈwf¦HwØÂ·ÒXåÐI”déèeµ•öBð-QcH·—昊ÕôŒœÉÀ™,»5þ´7Ïkt¨DYÚVÇ1_[GâØ 'îj‹Ýî²Q=O~ôqߤU»J{Îĵ¶; š¼1ß²’ý{ôÉ`˜*jÕÀ‘9ZÙ)Á-·4ÓŽuæIp‘yÌðY­ ¼² Ȭw’@ûg²ÞZ¤.åd¨§!Çn¥%96‘«úÌæRc›%Y…‹JXÇn#:¹bŸŠ¯]/… qwªƒåº.$ wÞ²égÅ:M&‘Ëe2a73Æ@«ÚU'z°e¶«;`îõ*–v¶^Í}è3æ5müþ^Ÿ9ÕH³™›x5bÚq_¼7‚óg5úªPòYé/Èíàã;ô˜æ>"%­Ì •jÛfyÞêH;D$p©°èu?õ°ò K)â;Á·ÚžZaÏÜ9$,øà*ò ¢Í|ˆVw⻾$[a¯™6™dÚ¼D×ÂFI¤qG‘ýâ²m¶ÒÄ@ºŸK-Ò’ñ7·ì¹ÛJò´Öµ_ÙLè;¿º9xʈaÕ…×rV›ÊÖ½÷C#{ÿ L•õºp1áAPLIõÂôÔêT;ñºæžI×\õo™óM{Æ^ÈúN5%w«„š"7)7›ëÍQ)Ryóƒ$<èQäJ9­Š*k•¯áàÌ|扺£ß6•¬íJHL“yA‰eŒDíª4„ù¦ìåH˜†ºi$QùpÄ'MÆf–|{¾¬ƒÖÂŽ{ÚÁVd÷Ü£mGi ¸Ó!|u™×Z‡<Ô|´ØôûyNz4J©¹w}š¡Ë¼ ß*pâWÓ°Peêy0$JVøîŠ-ß ËÙ¥ª7¥¾Wó ýál'_2µ6–ê‘»±°<¥£µ“¼Óñ@ ®¥}jÀß' õåêNé÷ƒÈÔl½XØÚn?R­Í¹¶4dé1ŽðW¬Þ¡UOïjiT×Ú&Û.˜€hÈ_õ6ZC™õ¡£ð !£ÞÕ=‹ÞÏÍ’3k^5«æRøéÀòäìð™Á—5÷°‰¬æ‡ï³Ñù:‚–‘äÏyiM)¤ W6³|: Z§øê§6ˆ;už9:öÌM‡–Ú¡/Ôƒ¯<§¨éq"jk25&#ãotüS7~°öˆ99s oNÑN›áM2°)ðÌn@§9í'*ä|ÕÞcÄ .yì\^ÑœšãB_xšµì;ÙŠŒùhaìÁ%°Ë/Œ0¨Ìº¨é /Jó¨\:2Q«Ãµ¬#ù@Ž|Ú[j¢PžmÍ„™FÊÏ׳±i@Ùž÷Òß ñ0ÌR‹ x„›VvÙº7½’Í)ÂÍÁ±Ê”ÿ¿ídL:ÓbSúsàdLáhDZ,z–:ŸônÌ‹ÿ$éù%Qu[nw¤Ã`©C‘|&¨~€'ILW+áê4Ù€áèõgï°KÉÍ arI>žÛ[ÂNGû+æ3áÛù$¸ÿ”l²A®£×Lî1mA4ët7äöêc/½|Ø-—ÅJ)«ìêæ‡E‡hûy¿º|A°ý›—º:6t¨&@Ë7*uÐŽ eQÞ[€NÄæƒ}‚Y»á£3âš#Ì|ÃL(Dò4áð)ËÆý ¤¨[TðÒ<ò¾pÚK™¨ÞøJØS‘W.¿›j}Œw$‘%Ê„£‹ÇAÝò€ÿ²ÜS7R:Q?—“ì±eJžÚÒ–®v°øŸÍf½ò¬cí'ÆsgÄî*”ã5¬1P»a £Õ&3ª™Q!/^~Ôj½ºÜTµëĽ«8“À]qmvœÅ]‘OéâLI©á¿ä²i¤©µFÙHP\áÜ€¿"p«‹aÈ $y‡fcÔXÄ™‰„µžDˆz‹ÛKèç¦Ð¦½aóº|õ†„ºuç…o” ²"‰šJ鿀Fw7Ú4ë9Åéi\jÎb.í+*¹_´ôÛ\õ[©*9Å81Ï*;ÏĘQêçy·~†”KNÛë¤áWòø5$¶IVg<ì"¸{¹Ÿ”æÞ˜\®Ö4Ô Q™2?гM¹e³íýTv© øÏ~úGï·Uó‘Þ¾c™ÌÙˆŒ&§Õù¢W/ˆÄûÆ<¢Í¯n.ò’²*U¯'c_\WêwkWé8/…CFÌNã÷›1+û+‘$iW7˜¿K É7ÕdSíÊÕ‘{k'¾¥“ðüoDO#—P¨¼';Þó#—~11zïfn,¼'ÇÆÉ.Ø3z‚¹†[–0æöå‚Ñu2 ¸ÒÛjf$ïŠtNjti2b¦Ø'½÷ñ¿qà†à0aÔj«W ÷é|óˆ¡Y]ãÇpAKß©+ 4´ðGâA+3ççÉq”p=ªWVž‚ ÿ½›ë«W¬»¦u¯‰S´îjE3VÉj°žù—™ÁG£á×ñ ¦x<ö± iœ’¬}ŸÈ I'õj;ŸlÊ%+Ä*,ÏZ ÕTXhéM i6ž Ydcof¢g)ºLÐ\pÀo&Mß,ÊSxÍúÎp‡5ìã8d_…@ÃÌ#—yd1 Ñ÷鿱ú©mvÍó {|Ó7kñ¬ÙVªB#°Ÿé'ë_¾ Ý{ÙìU›N{W}šƒœE³4º+m„¼4ú¿ÙªóóÈcÄïæœnel ýÉÖÚÚsM¡Éª¨è«$g¼²ÍO:Ü’Reу™*„ ^´7#H,LúìÅ»‡ÐXS¬âÓõjÖ×f7oÊÍy´0›p¾ë-*âvwÏ1¸…=­yÌT«4œÉFÐd+*ZòX–¼ ZTcvÉѹ‘\”wtŸ”›U‰ÖßL_‹þ±O"ô¦YÚWWü•Y /Y‡8ó©JÈŠx*'{{´#dˆom‹åOàâ™ÛFÝ©BèµÜ~e#ŠSÖ€\’#.—kg–”ªYiÁ yŒKj„Ü,ôSJÅròÝä[øìó=ýhc–”§ÕP‘9̽„Îó þÇ…»•/­)¤Þç²´oûŒÀ~¢óúdÝlAÓ~K+ EþçÚqtýB?½¢x[±ÈUÛc¿)½Èc–ø»¹¡ ÐÒf ÑñH[ûíc¦·h”Þblí9s\鯯oÞ]¿å_äã4§¾Æ¾™mºÙ핪 2ú‰ƒU–à)XvÞUÊŠH) ÝÀ«Iå‰Ï=y–åäÀPå¼2‘_ßûã§Ï®.Ÿ¾~{syýúíõ•yçK"|h*²_¯ã_$gRXÛHôÊì¤éó¦]2~ˆR6OèŒ30ˆŽ9ó×jFy×èßæ­Í!ÛÒßô—º‚(;{Iþ KwŽé¢‹^ï}ÑVa¸VÔ@nÓØÇs’wF&½]³LÃTáÜhÏߪØI¸˜ì[¸l¤ Ü FÔ³ÏD—Øc)a–ßSèu¿âEàöyÛõ'uÏArryñÈ‹t œT÷t}~IÿŒ%‹Æwƒd°k·¨ØÁøš2Ò›í„\Àl¦N¾sùúyþ8¦_³bxË›À¡Gc^Éœ‹ÀÞþPŸïñÓ¹K ud*n­×®Z,Œ¦3W¢Ï,]×¾m¤ _ô2F(´9$Y;±ì”ìµCa•€f³Œy2Î4o5†l”DÉÖ/gi/H¬Û–amѦÍã"+]/­x%BÓrYI„¤Ï¹É×¼ƒ9*â–ÞÁª<Ûã'F³éÿ#¤âvªÁTÒ×/_?½!V÷8]p¾k {Þhû¯Iž˜º©îwþ%¾ëQG+Ù‹|84Ó~?–S}-üzН"õëJÂö®–]ó¨×·;Éà¯9 zY~vÆ µiº%Д (¡£§¯¤Í„:1,à°°“‡ÎUŸñÏ‘ ŸÊ/Õ§½â^j„zç_ ô¤j:’ÏÒœ¸¸ßò¥ž Œþx‚2xƒßÇ·X5éb…£è›l”Ä´÷œ~óœÂÔ[t#ŸÿTŸ3á‚æÿÙþÀPªÞ7ÓVŽzïE¹ùÄg_„ü>OÀÆDB”Ì¢(gÉš†}Ã|ß5˜å•HzÐà«o+—Cùîí#kWÆÉ£ÑPÀßÓgobA»‘‹ ÇÏ;Ò/ûÅzO’Äçfä4:æ_ ö’ÓW“ IØdàÎ ïc5 ~ê³{¶1ÃÔhÔj)–Ƈréú+¼ÑÄ-|㦜rúõЬÈÜØMºÜÞI~ÙÂÏOã>a‘–ÍýÖ`¼ØL°ˆ6a=ŠˆjXˆHA¹uFïOö;#t=2º}±¼þÑûÙmÒÌ8ÓOop¨-Z$0&ö£‹.z¬¦ÇHŠò "߃I/·t¾ås{Ë-æì„Òø±1àÇpQáX0§a’°,Ét̸'ð(é„Ô+Òö?™/¢@ŽH›®`RóÞZù{[ò1à€Pîê‚Ûn}¬XÝ¥iâõÝj´ÝÑöËÖÀR'2è̾ª®qL³ª/P'_ `•Ô£!楸üµ 8>·Íí-j´Œð©HRº‰V v\/*GÐélTúî/¥;[|¶¬¾h ?ÚÛCŸ›Ô¼{Œì£n5½[óŠOÍ”ò‘TõÍÈ£$»”³W_³ êÍ#Þúw¾ÑâE6æ]NQ¦€‰9é [âÚ)†²ˆŒÞÞ'wÖa>ß5|Á`¼îýRn¾Ü;ó¼÷;~º_–)½Q+PóY„¶HÜÄbd‚…#1”¡“>‘=bÝ‘þÍõïÙ$¬ÄÎ`”åã! õf}?oÊË+*F:àü-´%ÊJ9k°Â‹¯q< ƒÇ ƒžl0"nÖŸ÷JÚ"npþå¼J±¿Jgá*ÍÜ*Õ‘®ßiot™ ™… _î6œýõâî ì„Bˆ¬ÜDm˜y[ Ñš‘•L0Í<׎õ–VMËpcÖÜóÐ}“}“’¯9Œ ƒz1‹RÈ¢0ÖzŸ$¢Ž A>Èßú0É–ËõjÚ·èé•å;÷¦bWö‡¡QñP­G(§å²K¢ÁüXqLBÆŸ ö¬€³Í~Ÿ`È”áÅù¼{”WÇü”o«Õv[-JH63„7ëÅ—5ÿÌ›¬‡ŠÞm‚ ü+¯«O—7°ï[6‚ê$SÝnö”z ‹ÏZtg惼p ˜Ÿ œÞþÂXÜ’É´eÆlÜ5`¾—f”´œwåôû£NsT3‰g-´°°>„¦­¸sb(±s‹ÀÎ5—éêõãôë`Pdt$ D›6dÿYÿ©“M¬ZoPk샟%àthæœÊœ2½O27gˆ¢Öœ%„…“†9q%€þÐ+ï§]Á-pàQçQ_]I9lòC[ÿÈÄé †“ˆ×àƒ[ƒY÷ìQæÍžƒÞ'¹›}Ú1{Ç#;{°ÄUdÜè)2'kΉ .??Tƒg„>uz2Ø~°³ÃR0d“i&i:¾à™isz·{¯gѹÎtâQèUÊ:½JİŸx•rx–½JÉÐ;=ƒèÈécÝÝļv];´(’µ›Y¯Ò×v~AÒ° ëZR\yœ&·®5¦;&ÃqròàDázJÈÅÌy(¦ðL~x`¹Eጹ‡dµ¼o6Ò¶2¾(¥¨#¼³ÈÉ œ ö;ù de<:TÆMïæÅ›§OIaÆòËjýùcÃ’Ù¹#Y÷V½á(ù:ådu°/¡QxîæÁ¯õ>y><˜ÿE¸×þ0Ê÷YÎDš>qÞPâ:c´$ ê Â\I|ö-OÌLcMÌ“ 1OàtPÛÄdÀñ3-¬ïpË pÍÚêû;§tJcð ¶­ R ¼ …Ý4ÆêøHz{¼OƧŶ .@ï·ëÝÜŠƒºÏõŸ×¾ó ..©bãn{ì3ãÍó¨Šm·,Ô¢°Ï,•‚W•òÁZN-# (ëç>¯bM6”¯§2pè3޾f£±øGêÙBqÃût ÇKÉ 5ð‚@tÑVt Ù»Kw"ðnÑ»¬7ß~KÕulFÎ8æÎ/Lî›’zMÂà ØÈê‰=¯€Rš!{›Ú€…Ü/Ö²iVöGԳȊ‹;òÕ3ºl€ÚÚe¶íb$ÍJñÒ‘V6Ch:t¼VHj¿§„ÏÏ”ïØNÛJe »|kql®¿¢p÷%IÒ¡}­ìpux_¤Ý»».‘DòªÅ"o]Øw§ŠÜAÒØ5B‡^³ä¼`«ÿ·›+ëÝó<ý Ò?’Á@ä|2×û4–#ö³ è0ÙЩS ¢Î÷’sÅ|­ÑO÷½Õy<æq9R§½œÎøº÷ßé?‹^rÌ¥ã·a—,dª2yQ©Úgª´EÍ· ãFn@ÛÓ–W8– °:ƒBß×A‡Q±âÝJrAb1Q[Aur8©$Q¥¨}Ÿªçþ¹\)±¿D5¡‘šÃ|‡Rò;xQ‰»ÍÞ1m* lÛO$Cc8? m÷Ž«ìÚ€ô¬ vŽÏÂÓ8¿P²B…¬=A#;Ñ‘œðøªY¡¸&ã#ÈÑÅÀs¢yHt¼ ΧJSç2u­ÓLשÈ'µ{^j¶æW*Ž÷óSêîPïLó'¢d„¤*+Ò T"pß3K󳯭Ü:†`Q~ƒ¥L4#«Gwô`Ñ*ɋВ1 7¼ÅùÁ²ÕÞ²¥qÌË–¹eÃÉÑ•«ºN‚ýÁ±!_È™¹wç[Z»K×T²•´=÷Η¶yrGžœ„Ëp½{Ömœ…& ¥afÏRä¯Kþ+o9f½«}Í5‚Þj¤û¿OswߪÖ! =BÅÀ?D‘wˆX:|E®ð,ðZQ°orW¢3¾ñWk!šú[‡ÿÎÈc³ŒÛcLÈýZIGˆ€¾O}#)WÌ/Õfe$]©X-šsÈèe£‘®+Žt¹dÉ÷ö™!·|ä&.œ«n½öi¥}òìåKÊCà«^Á¥ &}£‹ápƆUµq`? 2(èDÿ$Dü¾j5jb xsd­¥…‹¡MÙUïW%á.ÄAà×çži¾\ÅѪ§ô׳ÅF ‡îÁR¨ª)ªEÍç×ËæOî ZJ“ãÞœ´†hê¶R„= ×qîå24B£BžêKפbªI€lÜÑZþÊÙ|ðÑ¥ì½ØVê›x<á¼zâI¤e…1ÃëG¨ƒœž<û3ËÙ¹—޼è8­Í˪¡d ÏØæ,.I×}Ó¯Ú€Žïe+ªæå›ºf¡P5q 1Tvk6~öݼÙàÖßµ¦È¢Àº¿i4™­ ŸBMæT^ü¡1“²1{ôұ˜p|èes¿ãf•?’Ôädµ_)[õ2 4có²3†ˆÅé–&tº` tP'õ5‡làAc6~ä §¦É5›#º`~ûe«Ú5¹™,¢4~5@K²[®î7Í‚u  ÈæP“bÈ.²„O1$›W¸@¼´B{“F·Ý1±K›…î;öÄ±Ø íf©QL³´ÙiÜéS]áÃ0‘j$RÍ%tBÛÞ•=Ç’›Å_ã<•¡hÄ<㌰Lã7ϯ¹“ú¯Ì4rN¹¥ê㪣cäP_µŠÆ©Ê$^iîz»íokcµ®É°3?"\#6Ö½FáGk*ø6?å©çR¼õÑœßõæ‘j™Ð—wÒˆ éÏn/Ü¡.K¼4¤$º=ÈáiðuÂZEKï*»Sî®åÒƒ¸“ž—d ]æ=vˆRÒ»DšDºÙ¦¶ïèVúÚ“9>í¯ºk¹«4±œ&}6~ÍÈ£©+,ù˜3˼S˜®lž3ËÛw—ZZð~,cÒûíü=vþÖßtœg¡…aäZùäí5¡åßVlG’ÉåÃ9ß5ı¢'dî”{2|®IÈ ç4CâFã逺H‡Y«pßü~ù0Û¨ ˆâ]ÛþçynÔUÌ1ÃûŠ×å‘öQ¿wõûF²±7Ð~‚sš·WÓϨ5YWÿY@4„6\þ¥ê”yÀm×¾öœˆk©É[ÃÀŒÆÂ; v·8®me2Ùìq+ vÐ5—=›¶Q·ŸÆ-î4„ífÁqMÑBÙ¯™ kÂ}Ôê¦ú­ý¢^öroå¼[ɘ›:Û%n6ïË{3^ÙÁÿ—è­?ƒ~wU"ÿ ©‚ùù¤%¶ýÚüý§¿Ñ <Ïf£‡ÞÍDÝ{Í™ùº×”gàS¦0YäŒ`0²7Š„ê‡}.ù—˜Cdõ;”ˆNÐΓ2ëÔä¦w Bi[1̼🠰è@€a TŒrx”‚ª÷d³§ñö ™< ‹ ™Üh£%F°¡–/ I9W%+Ä¡Ð)¸:—?ϼ¤+ºv6ôïq1q+fÏ«,ЙL8;2ámxÂMïw©Î³=]³2Átùù5-ÚÓ9 Ñšá}6:5]ú®›©s~»Œœ´£ðQ&õ⋹MÓæOn4׋}'<ÉÜoI e›£«RÂ)ÑMÜÎ%Ÿ{!ˆ;ZðIÇjGÉ-¯7글{ç‡ñX\Çì\þy_¶kæ½8§Dóid5å˜*(Ç9}„ןrùÇcåâÊyýǺþ6µòA:0â¼këFòBÃS¨nÁ§-鈀>o Ò%¯ò»„ø½ËõXKÉ´Ä^àr½R·J *‘à¶nYUêI ¡¢ÅÜöwÔ%a=3º2k |dC9ÇWÓ{ûör“•–›†ê‘~)δ!ó“|ç@à~zùë¾¢¦Ú¾çŠsÍÉ:ôsjå½%ÖÙoZ¿Y‘bnÊ–ŽNÓ¡ÅKƒ9͹* ¬úÂ:ÍSÄr/) þk¿@^ÜXýËŸÕ…e“Њsoá‹lbù¤êUL—+v0rgµK”,jŠV”r¯#>é}ê¿țª»ÓÑl­æýé ýš&™X–­ÅsÌNœ(•в<ö—Âç   ~A®Nƒ¦jNWñKÿÒÕ@d ¤[ï¥ÖÌ?\VŠØ„_LwQáÊ%–(#«šº²ÆÝz˜‰Y¼Îå•x‰‹‚°­v¼²¸Íö¹p'K_3ªN¢Þì¡á45)[?¸àÞçjš=›»‡Í†ªï]üPyeÉXqþnžTf,,ùÎW°@º'kU…iÀY‚ i˜ ;jm{ÌG½æÍÍÓG£á@hÐ> ÷X O—Z>Mâ2Æœ¶DÆœøh2ÄAÕ²ƒµÓeÜ©¹1í™Sø5MS:=lÙÍ»r²¼àN½ÎØzÂ9µ–25kTú*†Z$¸—”¢Ü+Á9ÿ­‰œ½cEá‚*@ív“¥¹c"Š7{ë;´Éræü0Ni#Žç4`ýœ<ó2œ²HRÞç™·Fé±5Šæ˼Á 7®S’íAÉ¢°J«ê€½Žh5WÒ  ã‹-rЮÙUa`ÞZ˜á&£ˆÂ7¦’…™z¾€.Fg8htÖ®^£øbÒ§B<8 ´2¢êc.Z«z¯¯n¨™p굎57]{{WÅÜf/·1Câóû\íŒZ,i¥³b†¶øÍ´&õHù»unxûíпféDy>ÈØ êt †¶Ê|ólUß*ÊáƒPôc¾ÆÙÈ1:”G;Ù úsàF+àJ;t£å“ø›Ð{ ~÷}¾X©/0¿>³åâN’Ñ¡ä“À]%$%kÒõ¼„ÅeÜÝž?é²×Øò‚ŒB…X>…앩ѬЪ{²PþYB ¾p®9ÙV(äùãxD,£ÁØ/ŒÇÃ"ðå£VUž]‚-ø>]°1„Š–§Ô£”ì‡W}MXÆW£Ú”À/Žr9ì¿p5ß䧬n¥M¦ï=ÓCŠûøßf2Zí(<³Üé˜)ÃÖaAѲ”´ mÎEÕëîµL6¬£ì¬«ÜùÀzÈÝñm÷«Ÿ3a ´[dI¸Pc‰Ù‡d(r> stream xœµW;s$E Î7%!œz«Ø¡Õ’ZÝ>8((|p罈"XÛøQåÆö÷ïQ?fW³ö†”«´j½õIó0ø_þúÿ³ÛÅ·d¸|\< 91U>„¤"qsXFnâiøá~ñ~á‡ËÅÃ|“÷]Ýðf­"y0ë‹E³ŒÃÀÈ#2 ëÛÅîf¹ò# 'ŸÝu¡AÐ胰>Ww7E:!&iîÆSw·D›',ÀJ.2xî¯?a÷O}RŽÙ}mä[ÀÙýTØ>dIî¹é „“z̉ÝùŽm´÷Øp3—ô_,VAFŒÝŠ´$ª³ùã2i0¸y”û”Z0’$*ÀRÐ̹$­§÷Ôò!FüÞWß$j‰C %Ä(¹ß—J$µÞ¼ìoŒ°¥­Ì¥Qn=´†Œ‡†]’°J2fJà hŒZÈ»<Ò\ͧâ¤!ÎèFÑ«öÇÊÏä=Î^>•—´Ä_,)jΡ–£DŸ0”"{Ä;&¹7502Ë  röpë‘-Îó.ô›nòâ¾*¤hg¢ûµ¨ ‚Ù»n½d÷¡h$?מÓ1Ó÷†¸Çõc¨ò… Œî{\ð) ºwVÍIѾwl¬¦J£/9ö¯Ó¥jAõd¤V5ÂVµuiTEÅù®GGÇ-~ }.{eî¶&†¤¦8YûzÿíýrÔl Äÿ©ŽRàdûÎü¾S¶ª-|v¿Uø!¦ðž¹Þ¼#ØÕ1 YCÈažq4þÙ*BsÐc:Ï»Âô<2!‚Âß‹‘ÐÚÏ0`ӰضCwº ¬“ó™ÛŸÛpöd湫S6MîG¡- ¨wÓä8K‡¥ÉÐ~ž²òTljÝ#ÉÛ Üä³÷®Ž‘ÎÖÑò·Æ“ÂtÝ‹)Ev¶+¼í€í`ïÕøÂdÉ"ÝÆðï }fèûýLvþ£¡G#ó÷þTvúæ%]å­Ìå?¯øiùßykËÆxjd^¬™y,•¾x]þµÅËPºTóP~ìKÈàé¦lI>ºÏ»ÑÓIÙÐÛž 4Þ§Ý7Ò˜cÄT½w<æa…º8€úMpTÚ1GjyQTѧÕUï T¤{*'›†%%ürÈÅrÔŒeÑ©m¢v4[MÚcw"['V €¯WŽv¦nÑ8y±®æ„´ã¯ŠCP€÷º¡0+²TDC cnxR%´+ͼÏý€Ï¤!`ÙŽ· E!I{L=Ëz@FmŸMQ*:êjÔÉ Fo“œ`Lo7Eý™vÓé|ïÕz3—,ªO÷µ4+s…mª@8çÉÓ$±NL÷žçIhn‹pÙŲµc½ºÛ†³1fn^$5©2 ¸ÇJ×\“ž«ÖÎÕ+ùi5ž•²/%™.ë•õ ºôÛ‡êf•ÖmSÒ½Z¿ZÓô+ß稃ÑpZÐ÷5ßÙVäªÒºˆ_ë7JeÂv¾˜àg™=ÝÆÖSåòݘ¤Xþçeâ2i±áDWÒì²Ú‘j¿ë§—~&èԅ̺¿;"€&E‡K(—Go×úÙõ~ñëÖíendstream endobj 6 0 obj 1267 endobj 27 0 obj <> stream xœí\Is%ž˄ýt|r ¦ö…Æ&‡MØFàƒ4Ò 6Ò ËhÿzgfUugUWõ{O3Œ4õ²kÉÊåË¥õÝ©˜ä©ÀóÝ|ðúä‡qúää»I?žæÿ<º;ýÃHy*ͤS§OÒ›0$åäN½Ò“ðúôâîäËÝÇgçb2R-wÏðÙ« Þ==Ór²2øÝsU6Z¥v7ø,wÊf £MEñ>[­œ ÿºø3ìDÅÓ8E§œÁ(5YO/þrrñû/wòì<*3YXåS|O«è„Ä™Åutifé¥Õq÷=Q8oƒÁÂâ2ˆ¸»Æaœ´~wÏž¹ˆ±™æßtHØ«ð0 œÝjm ¬9¿Šû†¡Iy\»¸.)"Qhüñ¼üzŽÇ‘¡Ð̇ù È•ö^ØÝ%-‚‹zwG¼XÍwÁ–Þ=ƒ D¶:@µQdŽŠa÷Ÿ¬ ®(µvÄ»¼œŽAuœéâLTÖé½ €[•üVÏµŽ°`ˆ†X+ÙKZ{wF[¯<Þº ƒr÷ÅœUE¸ÅË…îYNÂïÓ¶ó[ŒâŠd NsËHH:^8<p×µŽÂò6&Æ)¼ã­ûc¥s`il¾m©bD™!iú@Ô, Ÿœ9EWvÏn÷){~Än—d;Éc%$Ï–eø« ÞÙIHû«@¼;0•@lHž¥à# 1z%‹°±²—g*ÀBí^ƒ¥Ôf ÒTÀ¯ýš=sÛð _ÕS„GnJ’…qÙ‡yï‚ eî }(sk8jkÁxù«l¼±l´(á° :«ä`/ ;Ñ‹ƒýœ¹ÌìçÀ«š‚BaNÃ^½A'lÐrgù8jã«9¾Ns˜¨UöÃüf:Uu(¸pë¶xTr\RZé]2§•2vwõ9N¢@! ìÕAJc6‹â­y8QhMÚˆŽJtYjAÞájuhc®"à€‹Ã>þ:©f0UpÑÁÏ‹ØP“Y.õZ[þ >ºeωÃ"(òðtK@ÍwÇÑÔuBS^ø &rr~•—‰GCCzÏx•%,x/÷H˜ä‘”=ÀË=x™}ÀëxmÊÚ(³a •‡ežôHV÷Û³s0ÀÖÇÊ×fƒi´•1ÞvÓ¨ý•M='c­ŠCÛý£: Ák×nrRup%:”GgÊCè"³öæ)F;çS@-y!´7ÉIy÷­`ÈÑÿÓ “&G2©‹cÚݶi‡_ðFjÓn+ð×Tþ¼2ÁÊÁ/ ,y¬Å¢£Žá¦9r<é“ì ö©Öûg9.óã96¿4ª©_žñ‡â¤v~ÛLIQß²™2žù‡-3õOÒ$#M­¨L©Ÿ's±ÒÆg à)9-7)×(p ¸â~*ðí—…ïü û.[í»l柘¿É7¬Ôño5 g*÷ú˺øpèÅë#À÷—û3Ex)’s@¬jwÝÊŒ¡(l€í^&´¹ q×=š$±JäuŽXÁºdvs‹hå°uÀʃǮ|@ÈsRÑþ\DŠÀ°An¿+Ù:Ï?ÖÐw m¦—bhìÂ,4£|B&÷ “Âd'/$K¸CW-ÏÔêDÇVÅ!ð¾eI‘ĬÁâÏE°Î¥tÀ£@cCÄYÂ-uÝdÉC Sñd ŠT©lšç¤/P0^!¼¤$Ä"ŽnGM"¶XG1 (î—ÇGüM’B#ƒƒ·®Ì ½¾ µÔ„z9ïz•Q¢†:`1Œ€‚«"ËšW¶2Å<ЉïÓ$@Ž8s;zK¢®]⣙1•éâÒ»¶øZe JÍl(,®ãávràlàký"îZ¦œ@Ùõã’ §ª÷¾O:„-=£µ…åk7&¹±Ú@sØÈ( óuvmÌ0d­Q5ç%G¯^§XÐKˆOf+Ü0`S÷õ^Û|O 0@p7u˜X,„#ØX–¤¨¼ÞŽŠœ06SÐcŽŠ\Œ²§+à?”›3-—‹5`ûÏ™+à`l< ›F‚}³¾Ãc ` …áì*maÀ>h×;Å«û ÿ·é€æ ùM}Ÿ&f Ó&/ „Dû@F'¯C÷;VæàKoyY8$ÜëúÇ®8¾³ƒ»2U„À³PüÍ’Zûé`Ž—‹}å怕;Ëṳ́\A™"„óáWnEMùQŽ®2¹ó{Ì\òÝ]±ÓÞ3•lĘ6bFÉR óy!¶07n fÊ*¤D夤EÆæÀƒÐË"¹ŽmƒV­Ë§#ô`Sº1„cBÅR¢}qfÍDæé²ïr¸h¬ëÛ=¨…yMÛlï8Ðw˜; j_IýãÄn4Â,Ã9—Y~ü5f0¡›4¦Ósú¨„u¨¤F}*©¬Fƒìõ^ÖöŠÌ4qmÍi¢@f••%¦(Y¾seH߸†¿’gRV_­”òÎ Ø\ÓQƒŒÁËz” w ;‡ÇÁdMÒ¯  îÊëšmœ)\N:uÒŽ’òxÌa’וn+Œ&±‚5µÔÀæx°­ÞãïDcPµ>”øZK`F`ÎÕJ>Ì÷ª;£t¼)Ô´Ão*ûË$Óa jÎÚòÁ‹)ÚÈâ«É€ß2›ÌÏÙ‡6¤®ÀZ ¿fj¹Ì^xk-ŸQ$À‚›“Fð9y™gÀ˜Ž‘¤ç÷“™5A79YÀ¡aZgŒ½0\•øþFÕ™lÎeƒ˜Ý¢‰;™Ç®Øš¶zYØì·É Â¼CÑ\ Ù´©Ô¨U©CÃÀ›# PøbÔMIK/EžHk̲`Eòöjß {‰¤Tøk<Æ*ÅPÎV§Ô’bøŒ–Ö.R9“rä&ÄTàRVc‘S.j—Ó”N@€äí0lZ÷v*Ðj! ÑÈÒÙé ­{?ƒóò€|Diþ4ÚÆ^¼… –~k@2–Á´Ôˆ|åÜÝBHâƒ9´ÀŠËÿ€uÊ$½Ö¸ˆ‡á*•èr¸ ÿ”p•†Y@›ÂÕây ¢1˜‹XLƒ·úSý6òÃÙÖ\"„Åß ž $NûV›çÉ¿Ô, ‘˜ÙYÀQ(ý4íÜù1™†Òª¥"¨sÃÓzcÖ7ÁÖó|~ãšl¶ÜŒðè¨Îzdyíu[dJ—®ð¾ÉðÙ²'Õ§Œ¸ÔØwܸÞã{%ç0 Ý­”Ãj ­“`{(cÕr“©¥:ÄÛïÏg œ!¿qÎZZý¶ÞøÁ¡‘Ÿâî²ÓÒÑæ>¾f³4)7œÑÓöÎAížÓÑ”#|ÝyÜ» %òëü:ŠpôòÌ”Ô|N€\”ð¬—Y|PV¢U¶C²LOØNŸ\4>UóÉ»©œûѸÞE‘Ë®[uZ„:ëU9x­Xã$]/ÀFÈÑf¶¹eõÜ¢Ûá’ºæV ø(‘Œ¨Ñ¤xXø0ÎÞ>OÄÂSáÌäõªÚ‡ÃŠ 1Cp†‹g–~–À±ü vÝ8§Mý&µWLÙ\œ[Vj̱vr Ö‡¦Wfá’€qµÄ…uÔPÚŒR:&,"y•Þ„‰ViM¶öÀüêJ?ˆ[¹4@)0G¬VÃÌ^Ç*AÞf7ú7$v. 8<†bp/M®°ÊìÞZ·{åh-"Ú87f‹È™=‚ùú(:|¦r¥Ò¸Çù¨€¼6Ú쥮õ0–Üvç„¡y›,÷ɯKbެjƒ£çî9Š\>ÈÇK>íæŽùÅñ†Óg=–«ï Ï{”ÆëƒÂ¹~¯7”(ÇwäO×-x° æ?rð»y¾L¬«Ô1>†YX_ Chž¿'vd æÑçóc·ûOà' e²ÑUÙÉ—¨¶1vŒ‰¼9‰áŒW ‡¯b$Ý|‰†ŸþÁAÎñø2æ{ÞÂáo—Ñgïøð©|Õæ5fñˆÞQœRX¾ §ž.œº_FïŽã”Ãp;ê7ᕯì©DiHÕ¶ŠRç…Õ˜¦!À² `¾<ÔþX18ÙfP`Û¬/m3Œ{¼×Î1é|9¡m’4ìjoË N“‹ž'äx ïVøaF›Io|ÝH@-(÷ÓÏh­i{BºSÛfhÚ%B´Xñ_*SQmj÷XBÐaà+äƒI7r vbÀ†ÚzÚžv]7ZüÊ›­Nµ”…— 웨J© m„k{1!¯L´=«T†s£ésò5¦ÆƒÖò&òT°ší• Ú,á“ÿW6´–n*­ëªŒÉÑ:d¤+äw…ÇjÚøB]Ñv{#oÃptݵꬪÊfk‡Ð^õ,üc7Û7è´^Ù¦Uƒƒ”“MVW ¤¬inè骂Sê¾ÁÞÊFIÖ½ë¸.Dì±ñ޵¯ó{°‡¯víbž€O·ID ø*ÅZ)H:È8®º‡³ÏùÒ”D¢ÑS¢Ar„KÆWg ^탑ø¬UxK€ûv‘Wíè‘€ûÔÆ„숿ú°ú›P\n¯—¿ês”Zµ†çfä]3~ŦóÆSst´µ·‡àÐøxÐÊC$·°ÙÔU ¼Iiî(>]v5njì©3§.BÉ»ÙJè+µÄ?pŠßµÙ V÷ iþtqòwø÷WkÂñendstream endobj 28 0 obj 4212 endobj 38 0 obj <> stream xœÅ]Io¹¾ ƒÉ%?@˜ÓS`u¸/ƒ\2A É%‰0—8I^KòX¶cÿûT‘ìîâÖ¯û½§ø`ªÅf“¬ª¯VR?³Ÿ3ü—þ¿½;ûí?ìùëÇ3vþúì§3~yžþ»½;ÿá :H~îo„QçW¯Îâ›üœ 3hun…˜•çWwgÿÚýê‚ JJ«ü¿¯þ‚oJúfh:o_½€Î/¡3—Ni»{šÞ8±{=?;ÄÑD6ÁÏÍ8Ø÷—Jé_º„9f™a¡­­viÜ85ì"¥,W»ç»Ð]3Ïäî-¶¥ÔVØÝ@ÚtHúüŽ£åÕîzýÃÅ%˜ÑÞïnãàNh½{͵°D_”ƒñ:ûæ}œ—“v÷* …’Öí>‘|KF!D¤ òeHHÓ!þK"|ß/‹®KKX×ßή~s¸(ÜÏ´{±H0®-'3ÜÀ\õîó…°ðm› !_’zÁÅ´BÜ™/@tî«Töâ=ÙÓØXTÈth—©M·o]j*/¯âSå3ѹû¶ÄY*É qÆÎF‰\œ{ˆK^%(‡xZˆhF1nkŸݟg2½œ›Að”àR·:TÔÅf‹ºÈÛLNÔ}†òÈîÅî³ÈF¥@^cw¶É ~ÈJâôA[s´©ÃÝôtÅJJ-c™„»«°,æ•a$Ð9Q›kQƒ×FäræG¦úbq~—ù0‰Ak w ¨|Iª–çø1>†-–†¦@`íxÛ–3»»Œ [k‘ki"; N˜ú¡B2©Õîk´3 uõ*–g#¿©d8|¥)ÀNFO þinÞMÌÒD2?0fÝ85r>Vø–h‚/ñ9óŽïխܰÁ™t«±èÖûŸo Ù„ÏnÚÁhˆÏJ˜Œî.„8ãYšÚUø­@I UŸ*Æ»€L÷“9ÇÛi›)㺿ätïûä)¬@ÃòÛwÿ!F(®g…†ÏpPB¢ó™ëî3¦§‹ú×j ‡0¹‚¯íµ° o‰b¨%Ñ ™¦)î)|€Ã¢ŒM\ù>Ñò€aøeÍý^%…—ʲà#ì»$Ê` ßÁ±Âéßxü07?6AófÆ÷‹øYkªq!­É<”`hæp»Á£sSÚ¼=aÜ£„ñC‹j }„mNð£DÅ øá=(*gÇÃy°îZk`uеljР.Pô БIW+~‰ÉÜa%=¨Qÿ2öFF{ 3¬Pkœa>>ƇeqKºßƒ&Â8§rþ–ˆ‚/Q¢ ¦Ñé×ó‰ZNÎÛ» "áãÆL¼DÞ{—‹ë%4`….Ч2‰Ù+ˆÊ™ âDeœk8½ûӅヷ¾4JUÍ>‚c镵(=È‹ÔþpC¸iætMz†îlv#hÁ1»d…á¦)˜/|Uó’%ñ©°v¥bo žwux Pªï ™èz:` @Õ诿4üUäóžÑû… ´6!Æ [{º¶']Ûs? [h¥Ž ›:6GZ M/EÊ”‘ W‡(lŸ‡4ˆV½x]Íéu`ð1Ž-lϸI0&™õ½ïб)Ñ>w,ZÊM'A[PfIi^—Š¥óx fj•.qöI«‰oq`é^Xö`U@P'Ý·a >5[|mîÝÜ|hšs×óŽÞlõÑã†I*4D"/gŠjƒKè=:Ñ*ùXYÄ[)X:Õ T…©¬ŒIJ‰ÅÏã§×ÅÏã¾>Ÿ?»h±§°¨BòŠ2@~=7_ÍÍ÷…Ëu@¬¼†î –;ðãÒXD}†V¸Š"¶‘«põÀ½*y Ç’ªkež4KDZȸƒW40‘YÀ„zâtbeåN²Ê¦ÅIê%3»XÁ3™¹îË öœq¡áô‡X'4øeý¤U‘‰©eüÝ,¥-sT-Áž\“¼rn ¢ÈÉ\Ð ¢œ`r…ŒvTý×ǦÅx³Q¸CLØeÕB”c¨™K*‡ªŠ©ºr(¯À’^‡Lv©r½Á"ªEáÃ.ßÇĬ+Ôoè èPÈä4úº¬4Ñ:ôn`:_ŘހùV¤¤N˜”X•߯©z^&¤°/Wz›=ëÀyA•7`L\‰ÝhM†í¢E·G„U78¡bÙ nœ‘ô 5DˆxsÔ`2mGVê¼Gc#¥éƒ,¡yfÇM‘Š1)‹pI‡Wi•Û§š[°û}Î[Ô·”N½@~Æ\+2¬· ÷Ç©øâHÆr@Ü\P¾zG6„ …¤\QDM‡œŸ¸i<“XÒrFc¼Ê·y™ÖÀÜ“*†¥€SœtŽQ%3—í~ßr‚i“h¡Û½!S)(¢ãr™“¥o ŒáD–%‰Õ¬i¥m²ÌMÕLi›MÅHqûŠhÃ%HrO!9K8,nßJʼnе¸C0°õß8Fˆí'Ã袩ò°-…;Æžm«¼/‹*K¨˜žµ4e[ªÝr+ h…ÙRìRdc‚yçæéï\H †fÞ‡¬!LÐq©Dä £U ´2v°FŒ}µˆÏS÷¦P"r}|ÿ‰/$V}ÌÍÖ²ùÙ´s$ЗÙ)X¥æLOŸ×Ú¿JÕ.«ÿ ìÁEXªÿø´T L|–¯é„·T?¡ž#'övÒÓâZŠy*#7U„ºÂäMtldnCئpD&ùZH?àèhÑ)íNµ&U²³3`-£tèq¹G{2#¡ûw)f.Þš@í³PtH„áL7™5CÃcôŒ»n—^Ý!%w¡2SÙ¬¨”W˜ºlê´w¬•¿þ¤|M™Ü…À-v¢øw¡Ú¹4æÁU5r±¤Er´iäéÒÓˆäMŠZ «…a/ƒÀkªèAH–F<ö5~#‚…·¤ï|a]ÔmUé@'k{Vñ‰F]Y0ôQFfú2®ÎŒ! 0š¿šŒ! i&‚ë£yÍ<ªkÝTU¥í\eó„Y$ŨV•bFÞÝN‚aÀZ €^%åu‰{îæc„'&+FLqÝžðU`ž‡´jïc¾¤wbqDaæznP/HN—9XàvmE~”å³—Æ<ÕÖ§§¨ÆSb¼ªP!ø–}ï\fŽ¿ï¨í}q¡¼öø #™A•ÜôUb`^Œ×<-²p•xÀ×V‘`Oª0)0°l7C[5à7¯ûÉK0â©ÏHì)8å0KËä!ÑÒƒr¼~pÄæ/E¼ï+~ñ_WÚ†•æª1”6kóKøAoNV*…«Ù·Ö¸·"ÔûA袀N7éj?•) ü½.;™2Yí}R½O(›ghç)- Ï+Þ*C(BÑKRm¤ºðv#ê¼êæGœkåUîSç°3V«Á3`“UgH=Öªòn)r/Þ˜²x®b/9 Ÿëb´ò09߯Ž:Fã6ø ~࣠Ž\õð‰šÕÏÑ ¯ÍÍæjx|ÏȪ¤»xz4Žì2ûZÀò@3ŽêAîõGýóÅžd7Ép¿™ší#´Ìü¤¸G-Q‚v0Àš[µUútéuÂS@¼˜B‡•ç×$M. uû§®²k’ å"¶>S|AZð™/tÑÌçÒy|€% Ç:·ƒ  Ú(mMd”påI-’QTÉ Q«à ‚R©ô æ>òŽL™û³K`×*%Ð"`V§üâ§8“à–Ñ §öm©\0Ö´ôpú”ÊCùòK)ì–7 jÒTß)ªP¼6CÉíº=ƒº|äàf}=7ÉÁsz?7ß,‡Ÿð¼°t¤XOâi'SXJu Ë%§¢‹¿ÎNÈÞêÜÒaéÞ8¶Ó̈®ûÙ ?Ñվǂc²^'œ5S¹‘4šÕFvÓ h˜ÉIû­çÏŽ=PJêxjbE|k+ x«Þå^ey¬’œD]Í?ÂÄ‹âæ#*‹×tp`iË1+Þδ9â¶xoÞšxÏÒïåן¥´Ž[¿ éUŸ½mHoÚ`ÿ¾„·€ÝÑÇä4a´H’SÑÂi –Uv^"ÂQ˜Ä(o9OŒ÷TYI~U^óÛûdëh:>4éøz+–t·XºL£ÎÒÏb4GÈËÔïC„ñ¶übx’Ö3¤á±d(7ë*Ò'm¡a‹íö‹=ÒŒÊã©ðÔ†ºÈÐÜîD¤aW¥5ÂÇÀ¼ fõ›ä,ëAj]˜ë4v¤ÒÇ@¤¤˜f˲óÛ½TT}uäM’#žcýwa:l½i5æžy£díxîPäy'D2ëNfñîÓ[EŒoÁ†Å£¨Õi79ø…[î³dôô44êRGæ—´4®ÁEøg, #6çÖhHÔ‘kµIÈØýbÚdÖÿ4ENLëåó¤ÕUÇxÀ£¬B¬òÜaÉd#z¡OT ¼+ßJ³5–·úÌ-jì…t sL}ûöðÐT±«e<±Ü‰æ^¸i¡}Jaõ]YÚâu‰ô —Ð@#žqåcÜ©Cª,l’mŸìhÇuÅV8°×be]`Õ…ÎKưMQÕ2®Ä6Ë1(àÝPé>WY5pußõTV¬o°àæV7´ŠÈ²BcD$¨ï¹ŸšVw„«Gbe¯f{MåÛXÝ+×^‚6æ@·¡T½ÒU*åäb~ÅDÏ^]¼ø·dxV¥ÌEW¹éÏœàÇ|-}rÀË̃þ‚CM«S^“?m6ør¼k.m#þ>%y‚¿0ì¦ÀKÊ_—m„ÎΜaÖéÌ|WsYåÕ&:„«®S™¤ž°M@q)‡¶½h])ód™°¼p¶I˜Að‰^2£×¯ÎþÿþµÍ:µendstream endobj 39 0 obj 4825 endobj 47 0 obj <> stream xœÍ=Ër7vY«RÉ/°¼ºÌˆ=70Î,&©qUR®¤"³²‘¼ DJr$Q¶IÉR¦æßsÎÁ£Ð@ßK^J™ñÂp.çý9™'q2ã?éß/Þ=úýwòêæÑ|òêÑ/ýŸ'é_/ÞüË9LâDˆ)#NÎ_>Š¿ÄOb²'NªivêäüÝ£§;yz6OÊ©ýn±Î ‡ß…fò»ïNƒžD0n÷áajwMC­‚ܽÀ¡’N…Ý--æuÐj÷[ì=Û„ýò†¦ÌVyóãù¿Ã©¥8 S°Òj:µŸ‚ŸÃÉù÷Îÿééî{œ-”gWÊ8évoN¥›´²fwuz¦½˜fãwOžŒbwûi¥œ»_áNÓlµsÕlÆsülœñ^îÞ²)WtR;;Ø›NíœVÎáàȆ/þ~Yð[ £2Tû_Ç9J+Ñn„×QÞó_â×y :¯7‡Yí^³}ج¡‚ªž'i,ÐÃù%àÿXY ÛGDe`iBXpð?ܦ|Ž3„Ð:n¨|°*ôp§éçy“2ëe{X>ß"±v÷Û©ô°‹•Ô™2–á8?³KǹÉÒ@^o" HÍzµ 3¹Qò“°&ðPÍÉá=Qk!á°°°“°É™va’N"K€ŽYæ[(£3ÐÒ/ÒoÓ¡¤Ítá•Ré@9a÷†3\Y‚ià¾zú«2‘s&`E©ÔÉ™c” +tÊ58À€’ªmùw`%ôäfßµxñÀ¡_ç0a8˜ëŒ™¬3f÷? q »„ ÙŸÅéðSÍdÔÂÏÄ}MR)™¯Çg\â ä$eM¨ì6œ¬_3&æ¸}_]¾LQ«•ÇÛížàgi¤žól âŽÜ ò¥7ä‚ÞJ5æ Ä‚®8ŒÓ7± 3â)]lÿw›ƒ°’•4$w3“snd„ÎOö÷lÊ'[oÖPG ¤?'Žpo"&8ZGèeÐH7í囫¸ ’ â4áå[âš|¿šk6¤.PÈ$”—+¹D濼H³UOXDÁ §†+|Xƒ?ãZT’ %âGÐÈ€j ¾þËU·ále¨}œ¡´õ}ˆî!¬¡²c€í d$e@±W“Ù‘‹(O›¨–ŒÇc¸`:Çu:‡*$£|8¹©G tsQѵ¦‰eœ .b. Z‡›ÌÀ‰·‘e¼œÀ~É,Ó¥?µƒ‘ƒ¶F yeˆ}ðZÝÉÄ(Œ#nó¡M¥HAF>H‡®ùà¢Bi¹s‘2’×Hl¶êÀx#V§R[Ø‘ÞlEÅAìX|˼ `~›;‰Ø.Òö@¹\Æó£0zýÀ {îl©Ur°êlöû¹áåƒ\‰µ-bIëEbÓ¸EDผ— ¤oâî ¨l¨`"ú†à»ˆìàä$|1¹B`‰mrOÄË7—ç¿Æ V×€a °ØŠ¯ÓbJU(ä û]¼• ºæ–è@5Dj9G[‘Mî¾n¿X™ 4%A‰9»*:8Ó@B)=nîM ¡ò*s¸35Ó€½an”ɨ!ôû'ªr$l+}qùþ±¬—&+>™†09QÏŸÈõÕ·4 –dPùú~¾(z΋´Àúº, gÖ³„SëŠ*“A ¶€:¦zÒ¨-9nº°xÎø]#ƒímÅ„RëýhŸÆâE¯¼¦=©í¤fß³ÑËk=îÐÈ> | 34ú—žßë0EXÍ]5¼Åro”<þäY[?Ÿ‹%>F,,ð€Øýùº^Ëop›Žg†¨à¶s´’a½PTþg&ãn"^a‡ìlÀpŒ\Èb‘Àáêù-³)Ï™AÀ§$ €Nù{Òìàºj1Öì™·çÚ(©¨…,*Í=”B?Œo—÷îÆpŠi«Yþ‹°Eå’( þ”^ÙÐj @*›¤žlðz°,¸˜Ùo2$Õ  Tg×Ä"¢·RžæÇ^@dà+ß9(F´n% ZeZŸ–É=a†êߢƒ…b_„u'¡ÿo‹L¿^„þOË×Û2ìJúy ÂrA¯Íäzѹ•WÔñÊ[ÀìßÿÝO?U^9n`÷5n¢u‘âQB9%I7ô6’ª+f©#À¶»+¯¼Ã•z;siªyòÈìÒün!Â_Ò¼Z¾^Ý4-˜êDF±¿(“®R&Kòкñ¥[JÒ #œÞTÐôCWb8'†‡öÀŸÁô [œº¯àxÝÄš¸(@N×FÎÝ™ª,þƒ¿þ˶ÞpÄ•« m^ÿÇ*‚G²¾rL~.î– :ÓTåµÄS|R?ƒËS hÚ¶q·l^D“"$[‹â{€bêŸo.)(© ?l”iil\Z(‹g¢”¡sÀb~ä”Ão¤Y™C¹ ÷¬5&'RºŽCœµªo¡L­anâlgu“AD™SFùèFÅÚeÜP×Èçx”°{ö¬Ê ”õ8~~®îLf¸é<‚üMº²u»g»¸˜˜ûj ŸÙØ4 o& ž1£ëëDÖí;+ÙÍ) ¸•¾„À`㚬™ƒÂñ 0ÆdzSF ès€KaÁ<ïc‹¡kæ¤Må=b¥ltÖü€[ƒ*\L\7¥` ¸,­ï5*Á_§‡êo ¿Í¦MË8ë(}¶.{‘Öµ~§tD©#Oãçâaøù0Md¾‚A»Ù‡)0ÿÁ¼å_²Äyè›GÍ# *Ò…ŠlöjVÎpAæ~EÏ·&OIÊÃM^ùFyŒ–£~tç­¸ ™œXY»Qºé8”í¹±ÿ%ê­Ð^n”µázÕWpÃJ?®ÒxºgÓ¨Æ1h°c„å÷]ay±|½¼O€úmŸ Øí/EÔˆºsô%»Œët|#/’#{æ~c‘¼K*ÒT^Á%ß øÛäÝ·£¹”_¾3X0v±àñã½£¹uå …ó¤ÌἨñ’oû•‘8°MÿÐu?¶ûï1?uƒï¿Ý]€M°…ZÏŠÏZË1ªV.FZPXÛ/âÂÒÚ»¯ì}ÈÙt„u¶FH‰ƒ¡#}7ú騔º)ÔG墆µÞ¿FVgbhwuºLYÙ©XHÞ*Z‚?S=¯â~N¹*ÉýÙoã­Î&Ÿõ–›!£°t§&ièH§&§õ9¯»Ìöb¾ÙvÓÖ•7èk•u #á8á†ùs!V‡b0!‰Ç¨¸cɯ,ÁÏébJ·±ø:ûnut ÄÀ4ÏKÿ‚!+d¯:o¥IÊ.Ô €y¸Ázà†X¿z ë¥b™èh 5µ…©;"^\˜¯Éz°Ì­'ÜÁv›8 >+Ûr¥ÎðN݃—™Yõ¬áÃvi­œ\6Šâ`ñpt7©xʾ…U¬_IJÆëÚV—T%ww27v‡q6Ê}` “jÒ¶³6i½uB••k€°–3Qs)¿îÁk+)ГÎÊMÖ+Q‹g'•H♆WËðÅ2|S†=ñL™Ž Û–½ãÊ»y©¹ pÙAÿs&KÉÌžQêŸÛÀ£ÂA§XE®@>«^Ã>“ QNèÎõŸbld¬üÒº‹úLj`t,n!Å¥#JF Ôª4Pÿ ¿ §Lt¡ÞÂbEB­‘üZp:öº97© ªêØ6M½×1ŠÔñôÂ[@Î'ü!ì‡]Neî]U+9Þn—åjùÒ¯–Ë ;²ƒÏåùã¬_¢^ûq€#¨P…k\1—HZ°åîylK2ò©éX* ‚œa_1•°Þ.ŸÙŒØ–ຽó —[ØuTŸÉ)k•h›/0„¥f9|XšŽnË}ûVvè/¹ûˆÐë/\Çqp®<,bópaPŽàÐŽ;êj5¯3t¦Y—g3»qœ)%Œ‘‹¤SÛÝw§€$Üý'þÊÏ ÖôîÉ©—Xá'xÜ“¤zæ‰QS´ãí¬Mê a[r¯4{Þ7-Aû¥pS÷î=¸^à ÚOÍRy‹Q'°Ñ‚–å›Fí*­IKÊ~kkä0²¹?ô²û䯢rÑÌ–jh1]æ›yRÀ ŽãWðn·¡»*M-à=è……×’Õ{a^¾‚b±èâ·5bÑòvp÷¬dÇ=CÀlÞyDeqßá’›â_‚ò½xiŸä Ç3O æ97_ÝÄÆÉygÑ(2üP.'ñH÷5\Ƶ]ØÌkâF‹×F>¯\¤®iûüLÔ÷MÍ( à°!ö‰Z›F]¾j’æZ"7Xë|`«!˜ì©6ðM`𘡠ފ;öªDqŒ¯P”ÆF×JD—ª+OkbE¤+§ò‹+ŠçifÎXÙ‰¿µª×fD«wºüx£/èÀ%{nÇY¾kÍ?Ï»9ª›^Ž*e®ÚdäÒ-Ùa•ê¢ðšì陓µå•ír‡™”ØZœe×!dõZeü¡º¡¸’˜v§u:5L鱊^º-"ְη¥LS L‡ÐV‚©ª#m¢B ‹+8ÕŒìÑðp2§D”·#aÐp:e"½s[k¬ZËçQŒ»×U&& ÉNh‰S@_L°Í“ò°¦íÁ$°+=P‹W˼ÅrÕ >lÈLL¥„ηáߦ JD!›ArzH |L%ätÝf 9, DP)©•²!;Á“œdMt‡x2£ðç7x.Ê‹~E²BÊ—øðS] Âý `Á[›Z!€î¬k#hx#X“Cº'Å%L[’Ì·­@^j©À±ëƒàò®äo’M­ÙFB,Óx)?Ô¤Rж'XÜyሠ¿” ð6 ±|ÎM¹ t=zÿíS$L†¶'×Ð׃9+ND†^½ËÐö»H|mÓìsø0J¥Á¶)·ãÉm.ͦm†HV-aø¹—ç s¢ìùI¸=8*~• !M¥ÆÙ*dœ+ÌèU‘ÀÖNѭላi7 Œ4[¿A…( ¢ÙQËHçá†tmJ!Ë& NZ*,¿ïi©¦_ް"ôê„ЬúÏpóñCŸöSS^<[­y*!Á|äQ—óëª&kš:Ê´4*Œ‘ömî-Z½ýC…¢dk|e/vRú¡.¦ïÕ¡‹Ñë$·->$ì>²ñÈÌr“ÜèPiܪÖÒâǹŸÈÉóÊø˜åÙf™lLýjVQ…·å8»<á3¢†rh3Ô## §w °õyƒ©ˆd溄k’¦K+štU¦³\¸ëê÷›]Óå cÀÖ„îŽå„LÒ˜|8[郒—q6"0õ5Š:n’¸ËÉšJ*½<¥ ­ylmPé>2„aT³dDK#¦7 wì¹`³“ßJï«ÈÉéµw”ræî#©0RCùWƒâÚyÊÀˆ¨h˘*ÎïgÈb©“qG3›VŽàg geÙê«ÐGùË%ó%Û «~õ¸¹ªßp̧ë‡4âÝëàÁ§%4Áº~V_YwbÑXb"D4°Âê*©0‰©Ò6B›Êu¨Ëu¹Þmï¨a,'Ÿït9úºáŒK|¾Åœwû#žÍ£(Ó­3Âê?)ê³µíV‹7²ÿlÏ›³©ðÎ,iû¿Û>œ›|…özÞ,‡»Z¾®â\ìU°!à° Aò8WlQ’2‰¦öÀdgæþ(¤º„‹v}}º Ÿ7sãðf²z‡Ý¹o—áeØ­‚À‰m¶lûå-²¦›Wksž@ ;92_;/زâ3ÔÆƒ¦Îv3µ…BûáÛÐÛÏò|¹§~—iŸ6‡³{a–n€H°|ÝúafƒÆÏæã© ½:°±_;’#ßbP&LÞÉ‘ž< Þêca†ÖœÇ®à°ÝçœN_Çt£†U˜ˆï=Lžqem¤ch?ÚÐ/5©F’ç–_Æ_bÓö:cCêx]’ʉb%d/¢"ڧ鶇mûÊ:™«ÆS¦u»C•¿Lvà‹kãÎ6|!ÁÙa'Øe<ÔÜ4&Â,|<2°Ðx2˜ ¬Ê¬¿\‡(ZeŸ¢9¬ÎŽÎ6~ilÿãÝÑYÉ»Þ.ú{Àسn¹Ñf×uKâ4\^‹;Ìe±èøƒßBßJ,ƒ«?Ñx(d¨í^7ÃxÙËMÎÕ9çuc×ET\DÓ>.vqpö<ßÈGÄÜu÷ïö¸Qbå+jOåËfä™§‚lPù¢i?z߯RnL#µR6ËiÔ~;ˆ‡.ãïäF)ü§ï³Z }$ç}X†ï69ÿ䀋¢¹¿ú5˜u“b 4w7ŠøFsh/øçˆDwk\¥)Ki×Z©6ÖTµJ)(CIùè™™¯yº½+*€¬oðkp‡\ZÀ¾Ý>œÆD‚(Ô´jíf²¹y ‹SÓõòu»³¿9ƒ\Lçcj7ü ªrl-Öƒç‡kc².°0ô†ú©oîäŒÆ¸š2>êa{ßv»¡$¾€;÷Ì«?´d£Ã àn±+À¥3üC`äCzäÿ ‡Õ©ÚXZ‹® völ·LøT&|Úóñº|ü°||‡«jú#dÄ¡ ˆ¹Ò„‹ò«›åãUùø±I÷ËðÛ¼^ ƒ±r}X[°êÓâ“âz÷ÏËiï¹.^~ùóþnùʆ˜/!¬‚0þKùŒ¤‚Oz|; KcMЋš: ñ·=²™O„ÊðG¼M Þ3jš– «!ÁñÛêægüêZ‡Ä­&­ü8𴜜iò“y§ ƒâoþ|þè¿àŸÿ^šÁ£endstream endobj 48 0 obj 5841 endobj 54 0 obj <> stream xœí\Ko]·Þ ú.ºº|O9|3»¦H‹(Ð4ÚÅYXK®-É‘ì$î¯ï yCòÜ—dM‘…Š—r¾yrx~\‰V‚þëÿ½¸=ùã¿ÜêúñD¬®O~<øÇUÿÏÅíêë3°Ý)måêìõIú%vtvå¤ê„S«³Û“ï×êt MgÜú»S\Ãj)åúÃéFtÒƒí‡Ø Ò®?Æ!½¾àcX?~uºQÎvƪõ=u;é¶_S·é‚¶ÃBÞ:XßL“\Q7X¯ýáì︟mG«¤Ã-]âÞ¥ÁÖ9³~CmåBXŸÇ¹ƒÖ¯¿»Àɶ´ô‰#„’ ˜úù˜›8[Ö' òu®3›œ Þ*ŸHÐ`ƒ²HQ¦Ë+2”÷\ö ³¨¨1:Ím(˜¼`ÞS!¡AÆ`MûB&¸ÓÂ5Xá6Œ4°—fœS…~Rtí*i+‡ÑzCìg¸\IôªÚ‚ÉTõÇÝöÕ¹p u~X° @Æß?Y°»ÓE’¸%ØTlæ«÷{çNøùÜ}MFÍÀêTcÀU²F^,f*hˆÃp‡{ìàß1ò8ÙÉCÒþyÌ9Ë_0}üÕ4$”ÊSO`Q>¬6R|ªt`¿'è¤øbÓ‡áté4@yò‚bù.¯RïÍØ¬ñ Æx˜ì+r{Q—gGX?oæ’îÌàqÕ#ÿäȪD ÕÒ“ûÇ‘31ÓùèV>ï2E€FÆhSyŽÀÖŠ‘w0¹ÃÊ–Nª•³7GdÒrð”nh©Ogr%:ï°ä ?Ÿà|=üaêeRð~° }˜Lj*bßFS~]Enƒ7ƒJ Õ4Â`pÐVœ7ðÏ'ŸËA»•EmõßNOÅ)¬ƒ=+”•gˋ޴ùfÛ ÈFß^ŸÉ_Ë¥Ûr\e¨Ä BágÌp®OŠ<üÃq~]Uæ3p3½NªzÝvh³CÜçuxq&Í´{X¿\çþ)G¿Nµ’ýÌZŒœBƒÓ„LEêL©‹sRç+)¬é‹-g䳫˦O€²ÂùÞ'ð‡Àèæó¨KKŽžõ{«K<Ä“n¤r¸â¬ÄÖe¶§ˆ×ùŠÂ31ᎅ…h¢¡\¥=;aÚÎk€æ\<­¬di¦ËÜpÈÓúwÛ"lzù¿Äõ¬7j!@ÝŒ‘Ý%kÏ(¡[½~ùr oØð,9$öQ,–üCžC¤D$HSÜ,ío¥)-gú-K\ŠOÂÄ=ÜÎ2ñÁg9îb6J–¾hL"¤ÁÉCò Õò•Ð4€ÔVò©4×í¤˜®¦ÞÇã `K5p\ æ%Ïå0„ÌoEöÑRè,SØõÅÍËa^ÊÛÏë¿M;ÅC²Y2øg ÊñäH³PxŽê8iÀ‚=ؘ»ß6ð§t¾ëØ@ç[ù/̃Eûv6ÞM¬3±žÅo3˜”àù´ „‚ LXÁÎ?iŸRã,ë¿õ*ø¹ªSÒe ,êlª½€3y! É2|ÁLè§Îäy´â”jÞfO€6¯õ1öä¶Š¶÷¥~*ñzWj¸ýáØ2­ÚVl®J¦k6Ttª,×JÇ"ÜRÀÕÌx‘]zöÊqøVUFå‘ö+Ç s5!cæì™X=$ú¦³Ýê¶Ä3Ýý?ó$âaºà¾š\¹,Ù\ ØÏ·|b©gW°CùEº€*˸v¸.¤þ9¢îÁŸýõÈžE9È•y_µÌSy¬jˆ‡eƒÑtswKw®”‰C† ±Ý§å|[d3%áy<©¼Ü„à¼w.$ê>€™$x¨ÿèFEþ—¸ºEΘÌ‹“(T‰Þ§”JÓ§BMÁóë»z]Á@_¦Ð©év÷ë46æX’O(ƒ ±Z¹$ÂðJ x!eŸ_oR‡ø a’iîzí@b‡ Ú™Ýx×?²ÛeÎŽÄ©c ÷OŸ7<=ô²è§±ì£¡o["þËpùÿ+¤™ÿz¯‹xv Àòrú-´»9š¥ÐgÔoÓ0YºohTÊk$í¡¥­iR@dýuè¤Ï=‹¹½.ØI`ÆòYíèqÖRQ–Ò¾“¶ö£(³Æ:Èû˜ºM³ò²J?Gác/byQ°#¡z/BËE(#±\÷‹ì^ áÅóìãò9¤î‡îÀ«vyâ.[BçÌXOÎKþ>¤±c•¾ÏM§n^ Îjbw¡¬³2X…”åàóìY,,*Þ§U˱°Áé™+èRÝæù('$ŽÜJYø‡÷=(e {Áö̦_×FÞÒ£KIÞ·-Ä*ý]¯‘¯®éÛò4L=«¶ChpÙ@d3¯jrª³³·'q¨…Z­|é¡¶J [/DæÇSFwñHTW*õ<§‘Ê_-Új3 úCÏ ++ôe…휕g+¬vHm²g+tTFW•ÌÒÄ!VPþØ›¡ñI–²eر¶’_rÖÂüL9îÿfaÈö´x×2!íœö0bá‘^4þR•t)@ÛÁûzÖlýÉ“DÕ.µÉ]ŸëÑ¢‡.8_bž¦Ó )•ªù.[Õ5/’ŒXÛ‰ñíçö‹ŠeËCA^ëÍýÛY(»ªFÄj׬¨ÏÉÞxô͇©ùjj¾ŸšÑiE:•Ú-N[®MT²óÆãp]›ˆ€ÙÑ#GT(løèDQùÀ(¸8µ.®"PÀ/ú„}M×nïeS ¾jêìßËÒî¤h/º€Ñ,­2òªäkDßüB‰ñµÅÁ´Ñ;»¼ºqQ[%–Z-Ÿ~Æw9EC—^ú¨»•'©çýæìäÛÝ ³úùD¬þzÖ£vw+úvòhu{‚Âb;íÇžw'ß5¿ìQ`aø²‡ƒÎš8g‡Îmú¶£þM‰’zvÓðaN=úðô挑,…õh¢Ž g@Ëœä×,+ÐM`þ~꽨yýòfB(°\Aû‰F o},~CAáÆb»>¢­lk½BÓJj¨ýkÍ_ ~`ôi•åíh¢œÇ€KC‘XjŃœ@ÞæqKÈöu1J`pøjiñ/Å“î‘ÆÔÆ)…ÌJôøÙr·µõP‚÷3¢? :¯UéUncûmù¢%š3Wäï±›ÞV—ÿã)ýà`ÿ»‚øbø »‚ér )£/é,^PÀ õò¤Çôw¤:>ýl;|Ë«eNëß}ˆËhÚû±0k”iÕ?r½ÚüÂpöÕ•¶}i'¦w¼ŠŸ¯«˜£–T:%tЦê|ŒYÍÈ6ŸÕ4üÚñÙ·dÿ€´ƒ\íÕ3Ÿ[“®ÀKÊ_ùÙǸÒu£ÉÎ¥OEX¶ØÒâ±LûsÕŒ^ùÁú衈_¡¯öÛ7™“¨oOþ ñXôendstream endobj 55 0 obj 3823 endobj 59 0 obj <> stream xœÍ=YÇq@7ú ½äc¢ô}8ÈCÛA‚#~°ò sIÊ1—¤¸ÔAÿúTu÷ôT5ßì¥È2 O³=ÝÕÝu_óÝ¥Xä¥ÀÊ¿_Ü\üãûË×·âòõÅw2ýñ²üëÅÍå—Ïa€”—Ò,Ú8uùüÕE~I¹¸K¯ô"¼¾|~sñÇ“yv%¥²‹õ§ßþùÙ•XŒô>øÓ›üÛEíN/ñ·tÞ){º}v¥½[´t§oàÕEâéí3`”R§k`–è-üħÖ¢c?âlÊç%>ÆÙ$,x‹­VΆfȇô[ú ÂéûmÂtL~®õ6ÜIUáÆ;:ýÿ<ÿ8!%/ãrOH)Øl”—Ïÿóâùßÿñô{œ0F¯d~Ñ{ë„ÎMÀu`CÎÆxºÂ§ÚX«âé^!(%lPÏW÷þB¿Þ~’©É€?‘÷Òhm½ò8Z9¿súlo„ƒ#?½Êà øn›šl€úcIDØùm^PYMG9Öõ,^ûRÙVPÖ®'éð&_¤çNxáè,&;€½«°Ø M™%¾Æ…ì÷ÖŒ~›×—°&…ûÛ–4KFØ`ЋÑèäù5ÐÅW°K-ƒETKÈ ánàü`Šèá–©ó)É êŽ3<Ób”ë*ßðÊñíC³ar<G6|›7¬ƒ¦hT&ÔFËõxÐÎäNòä˳+£Ì"àçs˜E [Om˜e]ÓIÚr±@.¾\üðŠN“±Ð©•,‚ÖëJY±8¥/¯¤Z¬q2Å•w”¦”‡ß€‘ô vvèAž.¸QnÈ>ÍïÐ ¼–w‹Ó†ÅÔvB­ÍâÅáÁñ-A„îi=³Ž-Ôç?<³Y¢i9žª ¾®ÜÁ^ã ¹ÑOylíe¼+°IÉ2…êzÈdù÷s–@ö]îVH”-ˆSʺŵÝÀu†.ÊÀÝf‹(’øˆnRm¼K+6±gjkZ¶W3 ø¯2Xã3ì¿}$0XªEI%¾¼Ç÷pˆÓÍšd›I[S2Ô¡ ÇɯòS ó®7àQÂ⟆Bï™>ÿˆY'-`V€3À3ýX•ð‹7žCôoV¾r=§%*MéÕžBÇа¸VN÷hÅ,æ5LåsùHTì]!†e°‹ Uâ´äÙ_!"&«Ÿ$̾Á¢÷Ñ -ЭЭ§ÓÖëèà7„pÞäM镨@z¹I˜L,…†,Äb‹Ð`P ÅÏô.@¿§EUØ“ðQÞ‰j†owŸT»ë<‡ 11>PS?e8œ {$œ@µ-nSÌøÛ}–Ó#áÛJó×¹Íz›in‚ï¦A&&û¦œô6Ï€Z ŧƹ{kjrQ&<µ¦pQé†=š+¢.‚9ô¿Dg˜hD+Y+/á¿äžT§ö\!+òÚ¯÷?ÜóuÁ¢hzI´>¦´Jiî¼ «Ê™T¡£³Ù,¥¯ÈýkR&µŽþôïIdhx%ýŒxy­’N·ñSžð'ŸVÔ°hœ 1Èæ(árŠ5¥˜¬zX©XÕ£°}+“ž º‚k8ï8˜èˆcWó)P„¾ÍÛTArªbpE¥{[ Ö¨˜8Î`ecdaÈ4ŠÉ"ùÓİ۞Bá©„Ÿ_½=æÄd)e˜”ÏË|<ý¸¡Æ·YBÂ[S)­åR> â{Z•H¤XN¡›xÑTƒšÿC3õFVûšZ6‰”ÈúÅA …™’ʆ[J:f…W_ÄHØ&Üi©Ž¡‹G±tÊo…”Ê™Tx¨°°U»…§SŒ`á´#ÞP6À…C¨}œÁPÆ' ´~‘ÚÒoóS0ÖšPäûq³™ïAÊF 2Õ;®éX£–ê°t3o2)™ÜÕ­¤tgÔòL¼­höü=¨Ð¾1v|Ì7০4‚¾HÅZÅ„QYíIkãÐ_lÔYl¨|Ù—`ýp"t»¨³ÁN¶‹D€ê¯qènhÞ{×°6ᘫËf–í\^¸÷EÌŒÍwy0ò%†0W E”2µª;ß²ä©VÌ<¨,ãpÐÒwÜé@õ¬9”ÃÁÀ‡â¯ÚúÓ t8ëåHt4h†Uåü”Nûz´ o9ŸØu^ņÑ;‚‹{Û¨fv‰^KºÊ ¶’b´ÁLèV̬nÕö¾&Ü|Æ]U(8:ʘi7ÁÓoj‚ƒÄ…wß!bÐ)M«³Í§ˆ2úe’´`¹[ô€>Q_MzdtúCZSGaöˆn*;ŠÓLn°|?aõâéö$n$ìeÅËzšoóYJí[ÊÉúz§"Ñ×p¨ïÛ!†|K¶'Ütàl“´×®××q× Ç©ˆ€Áè÷€k,vY¾â;`Š 8LÙÛ³¾[4·¼õ–¤v„Jñ/Nðñû¬‡w›}«5 5±‚Þ3SRJ¢Ûm)lNí­”]ÖÆ!nFJ*ÝÁ‚ñݘøp‡°a½ymf"~>H@wDÅTK4R$Þ¶Vè€õ*ê¤H vp*ÅðÑ!£K¦H”iu¡{ì¢UŠJ‚‰‚‹Eé/oþˆ •”üe´Â£Aš ¦Ì€¹r&*»*rÒK«c3s†Ï ¡%hk"…H[f6[·ðnõ&6§¿¦¿‹à½wžgί٠ÌÌÉ!½^B¨r틌j6ìèt9ј:œ·»sk稴\b"œWWZhôÔ_ffd2 &½V¹)~q#½“þ$K :œ~ý’QFg¥6CqdøØØ+œ_玦N±†Ê¦N±h¼^ ?3‹gäJ ÃÍUÍlmi„s‚Š ¢À¼DH@ìyTSÇáZíXzy>>^Y†¸Ø“ŽP¼S:«nƘ!ô"ßâ¨s')ÉSîWŽu(wÀ8•Üöt9°öìêÁ¼ÞUòíäCÞ#쌋æelÚ#SS„ÄË·Èì•Õ6ˆ^ÐK¸§D¯.š±[ Ÿs1‹d›fI&жceÃ’6úN‰… IƆß“©™!œÂZò ïg«Š^ãÕ_õ6ѨД ‰]0¦N®/)Ô¿Lù$5@Æ3vŠx‰„­4ÔizU«¤nÂI0b/ªŸN¨ßÌü)7Ô±î%ѵl½ ÍÝðrÇ«’¾K=!>†±½+¡P©Žå ¤Ñ~×o’ƒî~â5˜Hwç\-œ/ê^¶¦ks¡EojGP¸;E?AxúšUstÎf¨&xµ­íÀ½gjjFRžttiŽú3i/Fɤ‡^YPt'QLCw”UµÚÏs@ÞKŽ×lû3‘{ОÄûîùl L}«œE xनQÙ,Ÿmìg¹'Íf½Ò²l6ý|±ý|WN,Á€“nÛ ]ùJÃZ t‚Ž’+0|³Æ[¢˜Q^„J 4ªöƒš‚¡Sþbƒ»)8$ÆYFm–à‰2Íaíê¡“¦\ƒ‡.°ùcËv%Þ‘wÙÒï$×sÕ9–ìKѱ¼`¬X^~JXž¬O²<„ÈÌŽ÷¸ÔCz¾—d8uLQø |ÍèƒfçÙ¬µ^“×òÈÛì!Ar·Oß‚§Vû]+“Sü¬€µ¶j~[NõQ’ÍÑInä"ƒ9ýã{±âeY¤ºR±Ï#ƒ«Ð*p!’F¼K˜äžÒ³&Ê.]³cšh ¸Y_?RY¶Yp- ÜCÇÀ«©=¦`Šop¨ÜõzÍ9",•á‘GÙ ŠÕ º¢ö”a„Ù?¬p5 Ùzß3ô*µÅ4ùÐ@EfoXHlg% ÈLòIÑz¼=ÖǬ'õ_iqçªgçê—à«@ûú´A:›Z/ÁŨšL6Àè €EÀ½6©}‹@6—pM"ùîð•ÞQN¨i®hZ^ =ÍK_?[ï2rés}’a·¦¾qY¥]´dªpu©(Ú*PåÖ Ð‚’¹—zš JSžA†/ÚÙ;(ÏëåôèõŽŠ´ìi&NC°÷õ&f»¨°6¤4¿¯ÐZèc#/Ù÷F‡D§×b†d߯!&œ•ГïîePÞYB븨³ _g¸*"ƒdu§¹§lô‹ òÛ<µ¶YC+N2“líÂ\bÄdÑŠ¤z3úˆÝL<¶òŸZN~’tu0Ïbõ{+Å·LxWߢ—6ƒæM‹•8@ë†u2n(B´h›B¡/ȳJ¯›x6Û‚ óŽÒVÖB°<õ¨Tgå¶Tö¢Ç,:Ã%1µ1p<}0oqD:\mzS!çq|=§ïò˜äR£©W£WY¶²¦¸g²†$%Pí Ð2zèñqXàìßàã €LÌYÁ¸%i:ônNEÎ…*‚ôÑ3*B·Q¶—þ¹¢½Z#ªU•¢jQOmÅu¼fD«⿬œaÖ8Oi £7Ú¸YâqY§´Ãȇ–OÎȧ¶vW*mp¾\åxšUÉÕmxdš]ÊMfÂ)?å]hç¸l¨Uwiô}ž:€„®¤i-å§²š^ݱºy.aeÇžñ©’žã ™uÀ+ÙæÿîV'RaŠ)å½ƒŠšØ 5¢—qè˜MÏd'€ÜB—’{ (ûçDÊ dósÊLòQ¥W"7”^@£jИ𩈳`å–¼¬‹³Îc!,Øÿ_1Aç(ÞæJ{™·ÜóÐIu‰x&ÓC[#ûéÐ^@ ·ÜQ{¥ËõDú$-RS¾Æÿ͈n©™8*&“¹ä:é‹c×¹]¾®D ñŸ9pŸôÿs¸ÖD&<ȵž6®›ãè:oM…Õm~Ókáqצ G[³Kgù€ÝÏR¦}D Y­59<íÝ ržj!Ï­ß'êÐ!Q¥Q pÚsæ__ë/a¸•}ò±¼QšÎ¦­C8¶r­—ƒ0F ¾·ƒˆëì>ö<Ù&žÅ„*èâs 9½º öÛr•»]“,zSZ—B[:šŠ@dëHŸp¤„Aƒx%EóVdŽí óóy«ó'í}8‹¼#gAˆÄcvpªÁïôöéJŒ‡D`.ß°"%ßû„º;ë'íÌí89ª/|§¨6Ð.ˆ¾Úy4<†,¯cô×8IJ/Ôú8Õ¯‚ÔvÓ»ÍU­J÷½ ò`Ýαök ®72ëoZCI=]T™{ŸgÇúÆ== Á7FWš¿}FT[‘ŒyÖ˜ÎÄÝÊ®íã!ð¸|Ž¿2”®fWŠqÛa[©žY…ÚB0 N´Ä Ø÷¹V:%;Ù•ÆP¬[Aû”ߊF>’÷qhšQ¶ÚÑn{ˆ«¦éÙ;žiÔàì+ükjÜ`íamÑY1~?‡~¶7zvšÇúlZÞä[DÑ`å´<vçÏqŒÿÌÞÓÚ¡»Ü—uƒÝޱlúQRºf¨bXœo3¹qµÜ)EûeW»“Î~è<ë·2V&p‡=ûF|Œž TÊ`°,:Ö±Èæ5àþb”Œëóe¹ê®mT'µÓ…º§!K=;·0Y®ºMÎf¬gÓ$ÄïÔáNíÄöqš˜ãS)!Ðvi»m]b5L[=s“Þæ0Ý´6rx‹Ó3«Ú# AñÏ‚!3àR_qBjø$ŽYâ²¥¡Üi:r°åž°r°XðXÕ®7«špl®eÁ––4ž©Ñ ̜ԑˆô9Óù õ6Eÿ$›áz@×£ÉjCÛ¸²G>J1v7”Žïý)‹X ²±*i#Kîz«/vên.y@¬Þß$cÕYÙ4üq뿹#ûˆ••sÒÏûoºœttáIw´\~nb.90å€óŽU£:Éætb\—ئoêëèlSŽ[ýß³ØÃr´BÖ»þbnÓÇ•w °±«m;ç2² qÅÅešFÜ8’ÒÎ}FNŸMDÆ•|›GUÌžZ¶©÷[ª+àXì†q¦{߬1A^œYûî©éˆØzé2 ÚGнj/SëÁ†ðwÄ_:&^/N°¥FÔ‰cWÛ§l Žèzüg=…÷óÔ5–è~2÷&ºÖ»•ž‚Œvz©|~7*‹oêÀÆð{g ŽvC5ƒÂî~g½Y]þ|`â1SÐqß 3<œÏêÔëá7øX£l§ôPIƋѱoo[Žæ•G ǵӹ~aÀ¢(0Çô§Þ}Ýã¼7‰Ð~DÛ¨¹î ‹¡Ø”¯:Ê’˜0-úÂÓÝÚˆˆ_º»Ç$ù£•ëï»YìSò5>QŠCv’?€-'·7/1zo®@—Àà*30¾•€zGe1¹–pÇz¹e¸ÕÁl-œ×óÛíäLVÖ)Ú~Èév‚.ƒ ,¸ª5CQ1©ã »lmƒÛüTûÝb±•KïÀ¼£Öô½»Û0¦ýÞ£ŠO÷õôZûÀ{8äNC?ŒÙ’"ï~O¸‡Ä| ™áÜ%ªu^ê±ÔÇ<»{@³ÌÕóóØåP—lç5Ý;l™´Ç¨+cØ»«Ãä"šsxrZ Ïø–\*½äÌî‰gŸÐPÞp+kzyà`ª}€]”Ý,-í>êßEì*Гþ¿S ¶XÛ9ÏÎcßu…mˆ@¼õz×ö̰܎阚Ï,ÇIÿ]tbXéþ 5jîݽÙLIŒx‡zjÑo:K bÞ?®±ÜscïAlÀ\ÞMÑs.6 ”-Ês¸x¤b¯¿Ø$ÆD X¥˜ÌWÊ›¹tÌYvû™ªŽÃ§bm³ß'#M¢Ï”–[þ{E\eù<ß;ðñ“;AØ^³Ó(ŒöòùlÝïAš&Þ¶RÍaMLå®öÙ‚IµrñÊí¶“@ )}$öÿ!¿‰é…V5›‰ÂrCJ83oñ°ib„J îæ¨Â·¬›yû×4l8Xëö“®ÊÊL»6¬àLÒ×ÛFÖiMitòø 2.VøžðÓƾ{b÷Y—ZUåî}Øóæ½¼÷ÎÖÀ—’ä“‚‡ÔÇѸÆ]K¯(æÄµ­!CÒ†eŠ¥ô|ᤥŒ²‡¶Ì1N¥‚Jm²w³70ÓŒ!XŸ¹.Π=‹Õë™Mu’biZ³0U°w $2õåVFëæcª“pŠ1=â F³U™,œ@ –Oì¡Aåyývû©±²Ž N™i«,( R·%¥÷t:?¥§Ûu¾7Ô'·êïÙžÀ.ð›,;¿% –õ¤J¶û"ͱµ¦[ëƒkc÷˜jÔü°«¹Oà’}sÒäÇ‹ºk0µ#¦æ[ 9wõ´÷{l1o‹½½ïµÁ&úqh«€]®eÁÞõ:NCTÚ3æOŠ8ƒí×e·2™ÄŒÆ|'™z Ú½®Kr:+=ïåKyШɦißgøš® õ¹aK޲ûÀæî@3=5¸Ô™ô°¦*Øk_‹>U^³s7gµ²Êç¨äãú¾Œ±ñˆVÕ±²Ø±Ôºjþ9¨í¥{Kú"rûI±Þ„Á$4gïп…~ãX Úù”›¹ÚÖŠç©nÜ·‰'l9’YK“wo+p—ôi~šU pNRGÛúËFÒïAÔÁ­OÙkºÅ±ÍɯóÆ0¿(¯ÔȺhί§¶ŸôàÛ¯H¦4m‡¾ë\ØOŸEðøo+œoi^F„¡‘0NìC_)€OµÝ/ÛÉ)`ÄOùôÝFŸ¤mZ9q³#ý…9§®ê_lÇ`œ‹´\ŠÅÏÚ§M©qᶦ8¹›§5˜„gü\“^ÊÔ4€ñð×ë°˱)«ò8ÿûgõ{°_â`0·ÐĽCª ø!Åz›ÿ´AÅT“ʸ•«ê ¨¡äE9ÌÐÜÏ3øm"ö»lLܳ­¥Ç—C^°V"}±¶ŠÅžÎä=j§R)O?×õ¶Ì¨¶Ñ¸[ëSú=Â8·ÒÚÛŸI:Mù༪Ǖ¿rÂŒ¾Û!"ªRÓ‹«Õ¿}’ÇšMwÇfÅ”8÷"¸˜ý×µÁ^?dq 5bÞró±5­ ›»Ù~þåÙšM‚SüæùÅï.°]êåâòß@8üBü¥Ìšæå <Á@›¯OÞ\|uñÝ…—øOù׋›Ë/Ÿàä!— Ó]uš¨Ç^>¿à^o}Ø~¾j€¾h­ÏÎ}|fÌ &évUW°šCçÌ•˜c ò¢®a&éø~wñ ”ÿ#endstream endobj 60 0 obj 6897 endobj 66 0 obj <> stream xœÅ\Ks9r¾w8¡ç¦cX‹÷c}òDì:b×ݡÃÍ$R"×&¥if5ú÷û%^•@Uuó)IV£D"Ÿ_¢€þe/&¹ô¿ü½¼Ûýáo~ýi'õ$¢ÙÞ‰ýíd”qroCô“Þßí”2nÒ®6Üî~ØIãÄäõÞ‰¨'/ÑI«'köÖ 1…¸ÕKG;)Û‘ê›Ö))-å8%å=Ö¡8¥¡‰ú39{’Ò²×’óqÜ­Qâi¯wZBO|ƒóaàz/=)¯M„ÆÛT„ð4_iiITõôì¢T0ê%‚š\܃8Œ‡z)+¤Lë“å¨üãÞ9+&•, RòANÒ¢— ÁM*´>Ü(œaÒYj…’…¤”§qUŽ¥_=W©Ï㊬ù¸*ÚyœR>ÂOæaUŒÝ°*ªy˜×ÐMìÆe«ì§ËÄ›TšìšT!&±¿Þý²“ɇ÷åÏåÝþû ø± h™Œ·jñn—\îxŽÑBK~²Þí/îvyvñ»sg'ã Ïs«&ímØ_\íž¾RjŠÒؽr“ >¦/4ÿâœãµ8%´ì¾zuêìÜ:®ÜAê³s`VâÙ¹ÁêL@³<;WùÃ!äf«ôAгŸ.þ²‹à^Ôø„6Mh,f ‹¤6³Å·J¥à!ôk•&Gz‡d2!™¨ÿéb÷×Ý«½ƒ%¹¹ÆÉpñS{º‚€ÿ²âÕŠ”MºÛˆÍ¿X¯eè*VÃ:-ƒDµdÞ©ù¿Ö“㡤뵌̵…÷Z„æê–ë}x™ïõ Ò›€ÜdÀ÷,º``‰Å¾NêÁž¬—~RnÏa‚.`ıßKØÛHÂ4ûËÝØBÅ(Aa_a!{µ,t)ð-æŒPš‘Dah¡P®³FZ‰ÂüU­ƒŒ.$­E$P牾…HÀÕ1Ä„‹ÏX˜ol‚¤œ¼m #} ÑPà\77FœËÏ s40&Yô-$ x–ÄJ`¿S€M‰•ÙÖcÔÀåî&*mcþnÑÊ2R¦-=`HøH¼ÑGüEPrB207´ LªM³Fià!=$dé³1ɯàöDch¡là=e'aí°ciÈ`dë!­ˆÉë$¤Dch òÄhA8ÒBH”; § ©5ÛÚˆ¾%ñ!“nŠÑFm°ˆøóÒl0 ™(t $ HÉ–4¦  ›®vOK’cQfh¡Œ‚Èh|[ P˜'M¡'2¹ ä‘üò Êc h0cÈÉU5©Ÿ³5·ÍšÇ¢Qæ-Ö¬(瑇2 ¾Jæ³# ™âØŽVEæJF·WpÐôJeŒâS€ÄÐo(𯔂SyZ Œ ª½‚Kd=8C C hHhU)}#ݶÏÙêˆÙøÇâ#Ï[¥­Á’ñ{²œŠˆ´$»@A#õ‘ÙJ$(Zm=FS(¾í1Êq“[(jxK²i@ër®™ŒŒp\˜ÉŒ-àNÈw¶˜ú±†¿ÒŸ…¿¾…Â_™µ…¿‹ÁTˆ7ÌØÂrA6éá–F·”äSPtè[ȳ5"Êœ4"§›íEjpå¹½Œ-äÛÀaÑ5{™?×`™Gð`Ù·Ï9`h¹e-AÕ̆÷Éj•U&ûx5”¾b/© †ñ…í»"ÆNøY=[ìnêÌUp…ZD}âVŒ¢îÕáê %¡s&ÆÃÛùñ2=F\‡¨» ê`âA´© ¯àfñß»‹E—ÕMPqÍ„ì8ÄÄ·2Dð!÷Í'”§F›n4 Q§†èÅ}jˆ\ 1§†¨cB±«£ã1I¸Õ!aÁ˜?ŘX Y®N­\YǺ¬K¿F7FêÙRî‘ÑjuôIB²yÇq6Ömgk&NóCF‡tœB+‹Ä ×=×ðŒ¤L›">;—Òòð÷³s1¡|òÊ®AËh~‡ß¨ÙzÄ[uøH½…³ÉÕϵC$VyâÒù`‡*c?þØš3?Zs~LD€B…$2D;XŸ‚8r˜ïrn¥ ‚¬ceH6–[× ièÔPÿñ‰œ¢ÔáWZ‰A%ôáõÌ3[[öÛÔ0@8¨S%íÀç,܈ËZp:wÿ0S¹;#œU~>;GºÄHÍ{|¢Þcµ¡Óg¶´éúl!cíÿÂØºeTª–t<¼KÍF8Õù˜{tþ’+ðnt‡ï©³2Þ øñÀXQƒRà²'Àæ ç"ûÿ˜9YÓ0¯ŒÒÔÞzfêÇ36åÍ?ùdâBëè7½"Ò*e¯c®B¦d®“"Y­¼#qÅ€Å<¤B÷Û¬üzèjŒ4Õ)Rß»3¨Ub¾7³‚W¦ÖÖTeÕ$se,P„ÝŸÓN¤ K‚x½°Ð=ÃÀеFv–Ç (S1ÑÛ*ȧ·k3E£Õáó,Ù-+¼¡Þ(À¤íˆü# …|`eÑÆûÃGÛgš\`Œ%$–ºšØ-†“[‘Cò˜Þi)⦓r/yß÷¡¡ÕD©ì·eo ›è¼ñ—Ôî‚Õ]÷·Y°ÀÃCÈl ºdlmDX¾f>g¸t±ò #xÃHü=mVÓBÛê\\òËØGJØ 8Ç‘ë%É;p™]gÛ-ã’k½ËbB=ZX$©•Y ߉H^W%|§Ö"k i—¼PÙëŠh²×¡Jº^H…Œ—ÉŠ‹GŸiŒric ¡Ö©’‚2œI©PnøÃ&¾¢ÉùÏ…(“y‹¼ô>xˆ³õ¸¦Ào§@ìáÉ‘ç" Qȶ%I^½t^uüšÛƒól7Òð9M/Ætr"ç”ì:ÈÍÊé-lš¼òÈ®„|µÀÛÜÙy¤l&AJh*™®ðáð%|'“|›d,DÖýÜÎûd=àÉ…5Ù{zƒG΂A‰©C­‹Úâ Z–¤zzÁå)¸¼Nf`Lˆµ•£¡xF¦]ÜZ>ÛŸ£Š£—çÞN]dÔÑ„*AF Õ¶:ö”Þ©¤–Èao~i-á/Y6p'àćè_ÅWšYćŽJĵuÀIP)Ë:9gºOPZ:àöÐÒŸ ]¤ãÏ„X$ wLë‰,àE ßâr ·,ÞpÜó…&òâèf2X^‰ÌõZ\²&-Ù4>äµA;kòñº‹_µ³¶¼3__ÙBFI‡4ÖåC/žß3«"y ‘d߯ëò67"®ÀÙU3‚ºYXæ‚|Ãôô[ÉI`Ý6“ê2ôŠ—ˆ£`ÂFçÏ5B¬¢—Ç]jT¹&Ûà“­·’!–ðÀU£·¦5‰º0ІíNæøq…vE…Ý­CŽWª꽨3Ò|9`«ØkhÌ”˜%¢:[)8R—ß³žƒ¢™ 5é3 *)§ìlx)G[¤qÐ5ïr+ùÏó… zë/F?¯k€¯æò¬VÎ7e]"l¡‘÷E8¨ø{tC­´!±L25mA‡Öçsª,ûc½iÑa£€"189{â¿Û/½9¦ÇÐðâÿçÙ ^w8Ïbm½¶ŠŒž€ĕ̀‰ë¡…P’!Äɵ¹Ñûg¶þ#¥"Qô°±J#d}aÌbÙ ú(Uè9i;z[”¡ËµO€~¤žµÓ¶9¯çÇôˆ(Tö JëÏóãM{ÜÚüôºm~~7†Y=”**¸=ÅÆj,Ê‹”¿ÞlxçqÔDÑm =5­îTx9ðø|æ§èT mš´ˆòóK…Û¶ò ˜SÉE7DUjµÎlœ~s›zÓ켄á#¹«®+‚µ.ÁùXÌñi¾£Pª±æy¯ ñH5«}Ÿ¹pduF9jévb‹3¦Ýܦ^?ÐVÕÌ8íh¯Š˜ÊãÇùñõüøóüxÓ¼õþÎHÜ•²EMz±ù{Œš‘nÀ̺Z”r)‚¸³9ÆhXTö9c5QĤOsâ<ïÄ0IkÔ~3ö¥+H¸8B¬gßp%¦„|lû ­É¡<ê o˜å€dáä"ÃË©cn”öQ·TœAæ‘—/c•QÙë-£¬\M¥tH1È>•¦×„c*Í­¯çÇE*­ïÓ1kCéð3–t EET!4 ðVïZËí‘£¯åè( ìN&ÞÓÙ‰»‘G–î;Æ$Ó‰šq-x:iõxŽÒQ¿LaæèãÌÆ›ùqšaÉ«ñõìK?G((0élþ= <$ÿ5!JųËDFã¶ ý=÷G4] p/†lédÚbGè+@Ût¼(Î{ÅßÚÊ€oÜW5c1¥ÞLÛ§w—j±9Èö_Þ—)½|ÎJšî²Ø!Ôc^=©&jÎŽõ¿¡Sýª$V$î-OÚJ(¿×•»o„_µ¡£/~áiÄ”%Üš³°&˜^Íéy¬rS¤½îBüß ÀŽiüž–N&Z¤½ÀæÆÕ·Áí½:ÝàÒ~s~¹ºŠG”“‹·C\™\ß[«à›F÷;®£œF§—Ùz§YûÔÔ’4`ú÷™¢õ.úέ6Ä)œhÌqÅÐ.W+C,*DÉ*Ãc°J"ä¿> =Ñ'2,Ô¡Þä(·Ê êtŤ´<}Âä=…à2úú°ÊçÕüøv­ÃÌgº/9ŸžÎ3?šI ¸fN¡@ˆø~­WDÌ­¯æÇDL­?u÷‰Ñ€E‡ç'dú-‹åžS€TÀï‘!Ì@†¯¼ç ¤«ý‹C²G½ ïæÇ·30üt_4H×j‰÷Gƒ†ÙFHñ/g#tAů Ó>ÉsîWÒ"¬\9¸Ø¨¸)ÓÃ\ž„æè†TüV»‘:ÆÉI¹p@ O¾ {(Gç:ì ˆ»[ ùŸ†,Õ¢ÿi÷HkÄr9Ü<º¿3Nïë‘×/óó&N„k»òªØ8¹<Ó1"7È*ìC;±š^g^*Qžnü¤¨uÍà•Gà6裡֬ép›·S Oõ^âPHó qÝV›§QV­_£8 òéÉ!a¸$ì#½tµØG(Ý>>  5¥ñ“×Ö-à­d•tAN«ñMh›õCÇ[Q©ÆÄ–ì3ÈpV‚ºøôæag%h\]è©WFÄfN}]_”µèñäd!¢c±©Ìfhâ+ܸ9Ã7{ŽœÜ'%¹®Ãéñ,Ê6ßÊnŠ£û•-W®¨áHß J¸VvõHdìÀrSå¤VÒS>Yňðܺ•dxŸÃ®‹["eåý>Ë–ñö@ˆ~ÝEɰu?©è´zKÅ[Öñ]>×j–¹MÓÿ˜µ£1õüåjÞ¾ßë{hh¢T5ðK×Qžè$¶z³Zó"~[^¹uÈæMWUo~!ZšP©œE»rH-I‘Yù†Á—Sj.Mžt)¦¿1O¼=ñ!êîZ½aÂY×eß´¦wÐ/~šWiº¸½¸Ð¤è>ݸ}N­tlðÛHÐ/XAd}úµ”‡?Ÿ9EÆ­çðZ¿tŽ¡%–~TË gøiz’°ï½÷]æ0ž–e<:’;ÑEÑvʇ B¤VßðÌ@J7[—©Ñrò:Ä‘FV°¥m÷JcyÍ1K§? ¿‚sÔª=®oŠÌ^O÷(â"QЋ§ÅaÎÒzÂ%èÒS÷Á'vñ² ­®»ç±ºQF¿õ¤Û»¢ïçBã%ß jEŠÌc.L¶>)u̲éækë…»ZÙ–ûæ©Ë-µÍ=„`è×îÔŠ ŽÜ* «1úᇋé–W»LÃÒÛ–¿Ö;E®)(5¯à€4ô¸gÒ¯;ùZr7ø­³wZ¼9­Î*TïÝáõú¨s:£=¿éîö•?;©“oçæVvª‡½‡8þë†~½LtcÙÔ½Â|<9oO!ã.ëtM’CÒÛ‚‰=p¦¹)ÙóTÉç¾Ë]¤ cÜ¡;×G[æC?lã¶·öõ|ü)ÏNGT—Ö±x¥º¼|·pÂqs’~j'.«ZOXìOs*I“¡s›Å¶°‹åÚl¢gCWvóK~*°æHux_>ºCbFÛ08ßI¿¸{”_Ü/¦DÇë(ºùý=—® /Cx@¹Ëô”‹£ñÒO3pJmÒyÏ-§üu¾¥q¿ÑcýÝÞÐD›pˆO?Üj’šŽ¨Øô‹+“”}Ò¶à_wÿS0Ïbendstream endobj 67 0 obj 5298 endobj 72 0 obj <> stream xœ½\IsÇ‘¾#á¿ðbNzÅÚû¦ˆñÄ8|1…±cBÔIpBIƒÔ‚ï̬®î¬êª~ @¶tP«Q]K®_.õþqB$þ;ý÷æîâÅËp¸ýr!·ÿ¸PôÇÃôŸ›»Ã·W0À¦C)H¥Wï.ò—ê T.øCIX}¸º»øþøæR í½Méø–£4Ç›åå§òò‡«?_$‘ŒKöpõ—‹«ÿüþ¨æaÓ­Mºü1^žœQÂ+ÃÆÝÆtrù"òG¾Ž3Ë-lÇÉãÜòGÍ7gö}ÂO§w|Òìzsœçôíºsºá¸ætaß'ütfçnìÎqzç8µót𗎘 ?QÁ {P>§ñpõæb̿ޣ:?àÑ´|âJ{Åø‰+©•jS±¥¾r™-18;‘zÄôk]ëýdêíâ³>Û`øãdô±+7w}êíàÞ>†ŸåòèÐy qöÚø³¤=K§jÀs~v¥ýÎÿøâ¥Váµ·AN*ja{œ‚NêlSÿtyRB™äÔñÿ/ORã‚Ç[˜Êl:þ„¯]p1êã=Ž–ÞT9£…œ65 þÃåÉZ+B2ÇW¯æ×y;ÆðíØ(œ·ˆ‹h‚”‰ÖA°#ëÝ,o?´"x:g~Û;'PÊDËÄÿQöi_ñ$ÖÉøêzÙ3;;ö[ìe?4ƈìs¡Fâ¢vvº ÿ´ÌrÆj©Ÿ/O£á#¾à‡!ÀicžÙé}T!òO?æm%í¿cÛúÀf™¸“>¾£×Vz]MrŸGxŽÿ‹tMÑ&ü–Äd)_ÙNtÃS+9é•È+]!ý—ôe…UIÙ2Ú,{zuÉ–ü7vÒé`¬QÕšÌÓ¼YHø j”Éúò¥ÑÁO|€á0ûûi´1{Þ³E§ÉLß“úä ïTÎ|M’4|x³<~^?Ì]•6& ÜᤴpÖ«<+ߨ(t–“ìÄ ”áb1i‚ ¡¦/ZÝ;uÑä‘:£öÞ‰Ó“Ô^Îöª½QÅmÝ0d«¸Vs%äÊÉEë­ëKÐjkM8>\©­‰i-bN]O]”×øÉƒ2øGØ`ãl9R-ƒE­v'4ûFN@¡hô„¥ÿ‡9i îD[ $lðÓÊ*¢,¬m^> ÑfIj%r0_ˆ¾Ú÷Gö¼1c1Åé®qd¸›éJ_OvÖÅֈϓðç'jD‡¥+ÃÃgYoqeøûÛ<£Oœüïòy|t£©oPÚœ³ ·‡Äšïò[ÃæY`‘¨*án ú¶ç/—(ZÚ0™ºèç6g_£ ´d²À'T Žùazk¶çÃ(RKj¢WŒ9hÄ´x…˜4‡^Ÿ²y329ÉШjÅqò#m 1’Ôn°Ot÷¶«<ŒcŸ}ÞOßÕvù>¿5F[â¢I,Ð-V–Šï•iÔOŒ7Åšy8úc ±¹W#‡œ©f¼í„[¹×lE¾zmQZÊ⦾äH«ÔÚGôI®A®Í`¯3‘”]×>;9tE±9wÖ„\‹‹[k>H š\k'NæÑj DþÐtMÂý‘É<— Ž_Fv´óe¾Ôò›¬<Ó)Iyœ›”'"¯\K­yž<gÿ1©ž}ìgvAIô{' ¸Æ)?$1Ñ@Ö½v·ÂÉ’l=Jr d²a$WÆÀZX¶òñ@Q8çá[Äó‡zL"Ñá~êÛ¼*ć£!ÈÓÿººø+ qí¿\ÈÃŒ’ ä”ð¹?ÜÁ<’›ß|¸øn˜ô®±^Izà B—0ƒÐÖä¬÷Í÷Þ/­VÆð?.¢E‰#þ£^ÆkÈW>ƒ!0ƒHy†–!Ë6òãÛn„òãò(ZŽƒm:Öc–Ú\KáxZ1&ô“:L-O„ÿv nÜ/o¯—ÇÏ­S `…YÔÖ1©d˜µâ&ê¾V A—èâŠÂSøÂÐÌ6˜‹B©¸ë[Q’ýQ®›œf!dŽRiG™âÁ F~÷¶øÝŸÖqŠª¦lþ÷‡¼BC^¶n]ù‡«Ð &É- ¡cPKch ©·\y"x$¼à@lsñëšÐ˜A¨ÎÆn‡aäìkl äøÛw %È£A¡M“N‚™Y%Z6Ç™qL8‚sH$¯E€p÷ç CíÞ˜òt Ìä˜+d;ñN5  '›‹›/^¦*÷¢Áj.Ù©ïà;°­@õl¸(•ŠÎ_ŠàÌίó¥¬Í ß›nš<7м,ÒÄÅÆáe‚r3+0ŽV]ˆ\Ç2áh¯ÂE›tÁ`2Eµ!Ó<àÀO$¤6èabŒU¦6=NqŽBŸ)–sN§ýˆØ'jåáÓsåáßi½ˆ^¨O¯×:H‰AR%e@¼e›‹ã1_eˆ1iáË@Še‚þ¬ºB€^ÈýÜk‹U0ÖA x³Y«bJL/¢#ù°>©E³—¢"Ýd†;1Öÿ¼¤1ž›¥ñȘ°=`‰Â,MP~þßǧhì¾×è ¦Í—n­ôs7µ±Rzûµ7Ã|å¬^â^aBðëùZÀòåÍŽ1`„ú ¿.Ûxh3{ôöûåq•&¤·?l§k€ærI aîOobŠ2‚Ê}!ï ,c¬f1ü¼Ó‡Mû£0­OSÊÍ&E  rcèÕR¡Ð× ˜Vò¨hèȾ{Rhƒ§Ú¨}Z©„ö£œM'nZa^#l&Ç“¹U $a¢u žÞNd°uýxÎå=9ˆò2ÈLI×fJ94ÂÛíûC,kàýÄ*]ZÑcoÝAGà€Yµ²æ˜òâñ&HB`²ƒcï¥DͰw®}^·ÇhÃÓ¯½–c€käÂŽæP@ñôcxt¸®>Æ£æM8úBº;L¼ð5ª×Å®²j® K¨ºõ.ãEŸ‹¥2¡É­!ÁFëq÷.¡o¶`*A€ÍÚ‹UiI™b£1ù­Êø/ã+Îð9°Ü1n~œŽÃ°ÇÆo >¡œ=Û mš¯^U”Њµ ëxçöY˜Aƒ>oT p:€ X‰*­z«C’Ë"BÆUÚ@ðkÙáø]5ú\Ô1IwÞǾà}ÒÍV€©‹Ê!z¯Š¹ ‡"¦¶cß*ƒ*è¾òG~À¹±Æ×—ø~µeaÚz8€k¼HW¯®'ÄôïMÂë詇‘lM©[qç-WnÿÕøEn’_ñáS"¡ é•å¤k*D(9ZUד¸}'1‚È#v/çðph£àIJZLÿ¦–ß|²ÚŒû¬(Œð®ç§V '£>ºÍJ;€sí~C}Å»9R§URŒîÕÔ#z&næ.§^ˆqp\ÚÂvV§Ñ½våjÞãSÙ4w:.F5Ú†Y¹½¯mÓŸÉ6H´W§)­ ÚÎqáÈóPÛ‰Õ«ªø”)¢ª¸¯‰(°“Ù%ad‹j¾[©hÏê™h„Ýè@y‚ÔEìq£LÖÎQûÔëð¥´}Î97ââ›ä]£îŽW™÷øþXßÅEÝDªkn·ñé´ççýR÷ #¡È—»±”²Ù Hß5Ó‘aر‹ßNê¨AyØ\zÙ”kU ¯KÇÐ@ãÒËÅÝAvk ¡ëat¥X±ÊݳÇSoEP¦jôECwQ÷?£x"ʘzăTÏèí4Ûh/tê"÷Bgm;ìl+¨-ò‹—¦¾€Ef†ù¤aZNh¿Ÿçí%mè16ñsÅ`Û^9L ~à>³ ¿ßKuâÝDpÒKwNe²ÄÖRŠï–ˆñšY˜IŽ÷áÉá>N¢¾YÎÝ%8!XØ(\¥ô›üÕ}ß­îè⤘x‘{:mr•¢t˜œLF*ð Ô8Ƕ@‡KþfáÕ§&a™sŒìŠÏ‡Qn·wI=˜ø/æ+„·BÚ¢Hñù|Õ>ÒÝu×­0ƒ®‘ÍÞl#ÐÏ\Þöx\g‡gzöÓ¾× Ïî7¹äJÊsæàÁƒÛgÈil¤_@Q@ê8QÕÄ@ø¡òYc5Aî¾MµßBw|é0ÎBÆ«y=W̤…G³•*k{ t{9xi’Q4™s£²ñ »ÿ¶PÃä]À惪z56nÁÒ—¶ºaÞÞŒI ªÊ„&^]MÙWÃ4û®í€VgÑ(ëѺ) ;6xqÀá]Ú7óqyÙª Z¼·SW^‡7'x íÚ¬+Ü€lùqe •ÞæhpÖᛊ‹  ËoÌk#8Ñ0!ñZÍ×¼#üí¢¶ý 7êü¾B9ÍQGëR×DMƯõtEºñï­4nÂÂ# .û?3^mÝw!ál‡L§;‚™~ª,÷k€ ªÐ¤\§°]ûÇ:º·£‹îËïÛÀ¶&-PÚ̆l;Hr<5 Ôró°—çåý†E~½6wl@7¡F\³àÝVJ8+ï7µ©[á|ÆŠy~˜R»ã,ß®^ò*ÈIvpÕxPõ¦ÙÔ^àÁêÆŸ6ô£+§¦í쿦4³L|•uÍÿ~!ݦ€.‰Ød1oÿQ‘Ð P AAüá©)åŽéâ§§P³ôŒÃk¡M^—šÇs2X8‡L¡#d+ßôš=³.Íá¯b°tË*•“2ìâE“ÊÁǺ1ô]~ëÿ©šlUÀRYc™”sÿyZ›Î!웋֮Eƒ~`£ˆ†6mø`Tä}¦ítÏ埢õ†V—6dé'­šœŠÂn¸Í\þD„iNæÛ¢qçm})öl© »ÖæÍtTÓûUŸ3wh{«»€Ñ›îo½ÌùF$’ª‹sýÒM¹œcæ.‚3¾÷y2gR «øo¹Ì‚aêv5‘xÚŸ.£Â»uНÛzuüÅ·èà„„WåGzcå&¨¯è¯ÿ¯ Ÿendstream endobj 73 0 obj 4983 endobj 77 0 obj <> stream xœÍ=Y¹qï#¿aG†¦ÃûH‡› Öv+Ý}4#í"’F«‘V«þï®"ÙÝÅâ1=×:ÐÃ4ZüÈb±î*Vÿx*y*ð_ùûòíÉßý§?}}}"N_Ÿüx"Óž–?/ßžþæ Pò4.Ñ)gNŸ½:É¿”§R»Å }ê•^„×§ÏÞž|söÓs±hm½ògïðÙz‚:»Ægïöáì#>«¤ŠgÏŸÀ£ÖÞÄjøË<$špv™ðÂ=}rnŒ_¬Ü&Qè³ïÉ/a¸Qf‘ÚVÒY ,.¨z:æ§Ñ l·ièöè4t{tš—ä™.Uæ Æ_U(@à••goá­€%•¨íûêɹÌ)3ì0‹1£ãøîٿñj]k œ¢8}vçø=,/u„ͽÞ?à£QRëtpåíûýqÿ.ñÏÏNþpbaO?}ýë ±h£oOßžh'ôâÃöæÍɇTÈÀ-T3À”¡¦Â+r~¼Ø¡¿ì Ø@ÖÁËÅj gj‰æ>pF€“sË;\~\v8_¦·ð™¬æDe©‚\ÏìS>à á‡#‚¼Îtm­…LʺtÄF?F@ǹ\„ÓÖÞLoß“© Õi“² KTáô\ªÅ'30#Þš%Ì_–5ÞÓ·TRPRÎ,c¢OL//ÍPÆLç&œoƒ´¼Þ‡|Á¹ÍD-'®ðµ^Õ(>¦Ìû~G×zBiól}Ü„cÛ,C4Æu†EjuöÓàt£C¬[vicokyÈÏe?ÒV«s< Úöxpò ¯šÁêm™e—y™˜%è¹Dk%ó9ˆ,˜Hžž«°Ø¨3Ùô#+•)éôgÖ@ÿáì«Kò:ó‹ô  Þ×ÏÓ®ŒV"A'%­1.#»ŒI¼èŒŽ(ñεw‹7åt°Ñ™,Üœ52˜· ²Ã»ê-L§„ gŸó€˜$9.hµR¶ŒÁé0š© °â|RB€Pʪ|•Á€õ›Á{¿¿í`ÁW™ –n é  \D<}öõɳ_sö{„SLñRA°LagÚ[{˜g¬¼?ç2š;«H¥3f圬FdÚvÉ\ÁU˜OA[3 }~—G £˜@Hë¹*‚ úŒÄâ`¡™°¥±L³£@ ïGœOø÷Uú!7°$áe~N° PàÛ'°wáá<¨èb‚6ðg©tÒ:žýOþ¡ˆA®‡š¤ËN ŽéKE \Weön=!ÝÈ^œ®sÌiâ†t¥¶žwu\ÞŠ‹ÆoGj tÈÓŒi­¼Ëú®šô]^\ß! 鰖 Z€ƒÙ™ãkk‚ªeV¬û´q0§`ƒ£Ãb.Î däV"¼ÚÈ"pª¢Ð‰&EpAe˜yäD é®@/4€&þ ¥] &º,ÿ‹‰ý&/ï\¥¥_•·~,2˜½¯…[¤4ík»(QsóÕŠ&È€0–àq‰èYŒ7”èÅ\:&j©ÝƒUγ]‚§æà›†·Yv+€XL@B ŒÀ‘p!Öãn–ýÕ¼r?Á­¼Bòg¿"#Þé¸ziƒO‘Q€Sº’cÅ/ ¬Zý<ïv—” 5#*œÃÆ·Jhý¦^¢ä¶ qDÞXÅæt_ŸQ`*)ó’èÔ¾“p½Æ"˜‘+§M4^dà¤P3Ï0û@R¢‘§u’qèI ‡¨¶7wð$ðIšÐfŠt½;>»>Ð7ûÛ—=Oóì»ÊƒãvŠv‹C³²°X¢‚ˆÚò |ÆSñ^]ÿ§Ü¬­÷®ÑLò›Zûé˜__ñ«Óã÷ۀݯVHž­´„p‚ÚÐ; Æe8òö6ïéco†}#.˜ÅÒ}x‰ªâûàW¸S»ާ»Æú†ÌòÛoödžÌÒÛï¶Ç.™¡µ^p9gjeoõCöÀ-3!´òn—ž˜êŒœxœœòÛ#ašf+àr½­ÑS5²VvŸˆŒ¡z—Z¨¥ h[PÍ¿Iž…ñVx*:F’«ªŽŠùä×EbQ\—}ìÉ3ãUcXª6¤ÞçNêjï3h3´6ä0ø<*Æ«- ç•1þoi”Fg‹@-7Z0¸U:¢Héx"eý'ñph„£y)¢>ûõ6߯ÅJ—ÄÌ l¬¤„7f{3cã~„Y!çÀW+#÷íÇ…€Jñ€n• x èã&Á§í¸—™Jѽ΢Ö-ÖV办—r¾…FwU{&Ô#Cl‚¨;èd%ÔswaUÁT^BMöÛÎÚ¸Mc°_äe” ùµ²T&“†[[rÔ+’“Ê}xb€¾oa ¦iVSPïЊÍ_Næ-Y4±˜è™sôŽÒWúEÚ]4þ±«T~»¿½ì Jåj$àgûÛ/\€³y{Ü9À©ßLž–`Ñ;¥´ÖžB&ˆ›Ã~ãDFŠÊjL\é+cµS/k®xš¹B§bâÐÑ”HÑŽþ^ ôÕðÕÕêTŽ#&•c ê#jÙ8Öin?2ðéšÝ¨Tá}Ä߈W('S<ƒ¸qè ƒQ ÔSNŒÇD¨y™ÝT‹A'·»ìë%nÓd=¨šÛj…f@S`¼b¢hLð‹{©£h¤C‹ÞžÂ Õ ( ~ýâÔöæöŠFây†ÅéZÑ4éªhHžH×bB&2íI›¤<ÝØzIBÆísNÀ¸aØo#¢7»ÊúûùuÉ{Ï ªéÃXN€é˜t¤<û܉42ºŠ©ÈGvA9ÅBl+N‚?î¡Í0Œ|PAø.3ådh@s㪾ÂÄCFŸ¥¬ùŠàf,˜'9ªÐ´EnW·0ä»¶Ÿ¢ô±ÇQŒ;½`î\-‹4ËÈþúáÂTÈÌlÅ…jõ*ÿPZ3„ScF¸[™1l=µUW¸{Ö‡R<"ËX½ö Ij ëñ¨½Õúâ¡ ~Ðî8˜¶¾ õ\2ЀIÞž¼ý¸íE$˜} /$¦ëï¼ ˜`‘y‚}?ïáŒ/ûã¢5ã¬=†Dåf1Y€e•êQN2W¨œ!É‹,´S×1ÉÀ2À› 6kŽ”çoð<¤UÇœL™ |«r*â|zÄæ#–¿ÈÓ¡óÀäyzíÕ/`^Ýß8ØoðÕT/'ŽŠŠÆ˜,à¾*˜2ÓÀŠaºá–T6í¸gkÌl®'×<…ÚÒtçtÁOÓãÛ|LU*¬ºŸï—‰ÀV#Ú˜GR ƒ!» ¶%+”a±˜Ûfˆuˆ“JƒIÐÀXòY?3@â1Eåx fKrŠÄë¼0j0ÒÉÎ#C0D…ž Û]q@ª×÷­8C×Ãt:°–—ºSÿãÔÀK;ÐÀÚeyŸ„>[å»ßeÌ8Û82(Û’ÅÄÊ<KÊÍÅÚl<1וîõ‰Í¸#1dñ»sä$D‚Á·‰pòöŽxߨ(:¬¶šäÇÅYT|Œ 'éßEž:¨4–Ø4Éótd²LCðÕI0­ŠAj,f°·N ¢N—°qò;*שHzSVB¯ùt÷ü¶ß]ì3Ïh¦Q…y Àhá+Æ¥>æE1ÃüÓk«•iëOÕ’Y‰°•ä¯3x`¡Í‚•0C¬öx?m´½Ni“R YÊ‹hÜ \"Ë¢‚òkÞáå©°-Û(Ñ¥¶À'¥žGáh¬LÚÑßó8L{H¨½Ât‹@’ÒÕºáÌ}@שvµxláÀC Ospk>˜dư£¿ô⣑+8!Ū¨gŒT#¦ZäuÎYxSõ*õÞZ°ÿ¾6;ø9žca€³êô\ÁR2Æï½ðôsþ6=þ°x™C*Nû[RDþÃÿUñk‰÷ÜHúïc¹Íôظ·é- Ïs³ÉŽöç%X!¡ü?uÃóÿÑõX¹›W89åÐîrtþ³Æ)~»?þCÅ^âr1f?/qã×=¶‹.~Û}Kè…h4“¥Ç¯Æþúö\;ï0‡ûH"ýHB¨„$_Pw^Qßf÷ÿ‰5%Â&Ù'„HøìA ñ¢;ï«.²>íov¼‘yÞ¿àæÃ‚Fÿ¸âAÓÖÀÊF—¸©¦(y¬R“yìŸG‡ÐæW· Å•Z‹Á¶SƦAs̨iª2 qµ…3(I¸Î£]­¶;¦µ¿ñ"Ï‚u×u*7Ab¹U»).Z˜O5M«Ï–¿Ë„KZ̧4N©®ôÒO£ T<VÈgšÕ€î‘Ú= ‰3*}7#2(ÐáéLáwuÀß*=Ãm¤cÖA] 5—ÔBll¾ˆþ7—? ‡Ö& ïZ4›÷WÖ¬\Γþ´K¦;kÖ©\Á¢fv笙’á=ìN‡AøeTÒ²¹Fy i.ó{3¾æX; yô4ñ˜†øº°›:ÿ[‡/ pVظb'C3‚І31ãÜ­žp~q;f"JsR!ÈK›¿Ûûj{±?Ö™sàiP&̸lj4Qó…ØBä–1_údÍÞö(Ñ:°Û÷»{¡Á²­o‹Xäè4âFÕá[0‹0•̾Îoñî}!,QxZî?*h„ÿX˜çƒÐã(å0¾ƒ§“ã{Ä/=¶3k£[E¥ä ^Þª4>HÕšêY«?6­ÔT”KC+øM¥xΑGöê¤NÀЬHÏîp­XT¯EªÕÆ P0‰°kwß‚4¨¦þ1Ï‘aŸúó½É¿Œ,|t•_gãy(nÓŽŠÛuF– x›§—Ö(ö½<ˆjo"” ¦€Ú…eý>,ŸNÀhÆ1™fé°Ê¢d~QIÕ”‚$°#Ê&‘öSqœ«ª/(Ÿ­©ý¤¶q ú•€^Þ_Í2·º}| Ê^ÈÇ×*¸¿œ65˜YvXSD¦ˆx2âi¹Üe¶ã ‘ùY„)w,Dn¤[|0LŠ ø³ð¶º[CE“ÅÍ) à{T8%´Í͵4‚›k™cP¦o ·ÛàwÍfvúÓ]ïáˆÙfô"…ˆ ³Mñk–ÿì6+wd4Õ­À¦n«nÍJ'uYPM3ŽÔ_ÄË#æÞ©X…åµÜFìß'ŠDoæ÷CLU…BÕK‰½-&ií„#{Jt¶œŠâ´`k†°€Å º¦bîŠöîMˆ”D5yóŽË}†&DJ&cuB–øjÌTü¶X×Û›Ñî>ÆÇÍ^ FÞJ«Úqžk#ÌþÔ‘‰:T–’`^Y®t‘ 'Me;×î®1j‘AwâB[Ä+Öܵ§ö:.cĸIÏÀ ¢¡2*›)ÿ}É jUþ®¼Ü¼Ì`iáÓ;WMà Öá†uT2·×|ÃU‚6çðäòØ@Ó¹cóÍzp·¾=#sæ:hEè´ciL8•Kg©·m)HÖ€«5àlÃ+ôWˆ°ØËzTp©}Á âÌ upt0z Ü*‡d™¦¨û_¦ &^¬ >ÝÏ`}ÒkÉKeÒŠªŽjS?|| ç \’ãt®&Kf¥áMmýàwG ì)v¾}²n¬öA®²=Fà`l!Ö8~pº¹C¸¾Zð72·×è4jâÁÝ6TÂü®F+<ƒíIÏ4|ôS:†^!¡…ª+³FÙÄÖÈ*IG“c2z3a£â’UèX *Œæ›£e{8‹#¸¡§†F^G #/Z—i¯²â^З'oÖû&öXÇø•@Sˆ¬‚Ÿl•…ð­s£ÕIk0z©\ÅEèù툂„Ììhü±ë¹=Þ`Ükäö $Ö7~(o¨óuTü-Á'ÅV‡Ô ô¯{&diÓUÝ€ÕŠöÈ›©Y$…>ès9TƼŒ Å”hÜo|mj™v°²‰i/^ZÒXö‹Ò·âEéQ»$âètÒHŸðòXt/ßAíD£àü=ºF•2ׄ ʼmÎ7A:º$9Š^_g5ƒä*o Û]bà”WVÓ*‚eÝ·¬ÒlÁpµk i+Ê'”4ëµ”Þv¤ÍjQi“)¶^‡ßØ-à×^Gç:ènØö Ü8ö›š}–ž»¹j;ßAÓØÓmDÃcò#n {cR]7Þ“óÄÒE©º ÒÍ7kJ³€5.Q«Ë”Œi'fÝž $Íh¼½]{“îEXŒ1oØã«ÅKz+ÇÚ~Ô‹bÛC¥—(q ;¶·doHrÈiÑŸØb'Eñ •CÓà‚Zk~-”¦Óµ®¾Q B%¢ÒÏ.ίoKæ:Va7¢cF$ÔZŠyuëéA°sd{]²næ<à›r(…Ñ×y€3é¢pŠ$zþ(™Ç"kIôDy”¯Ðt°& ­- à¨Ù k3†Î*O7õðº¡ÿ>îyUöhª´uúÖ²|VèZ·m&T¾|3·õÕÖÞ vO²Žœ¶‚/x¼”zþ†±óRÒ©ÝP*n¨}¥„27-š©nã•db|YL-uÝ‚?ª_£˜Ÿ U[3_½…Ì3¡§i3Œ8[2šÚÕN£\q!åÅ7ápÖçñQ*¼âeÝÍùU^_JÙ8éZz£Ô¢’U±ã4 ÚJ/t*—›yjÒÏþŒ[Â^¾3¿L†®[}I¥þ×þøõžÜüzš…VDÿžˆo¤ÍÝX'|¯'[WÉ¥ópƒî0¥¸ˆÏó*†A4ì§­÷(ãYIcôÑ òŠûŒ N°{áÌžÆ.¥2ðYöUlFá7ök*gÒ8üôÏé$:ÒˆÅÍ}ºÅÅ“Ýîžùý»•š7‘ÿìÅ”€z]žz‰Se=CeóñÓáhÈ$±œy‰éøæ â®çë5Í‹Êp+%ÕcÜ1¢—ºk› \dzM]`GªÓ´Àïè1O÷å3ÏÆ¦f(S³* Ñ¿@_ʵ o"šètÂûv’Ø^¯“É5²èù±¶œ9²³\k§À_ßx”¬öøm,ʧrèhÿK Õ¼xs7‡Rš÷W3ˬ€‰ânn‚czHyX®Ãu¢âß¾€×v±zJ$ B=nw¯f6‡¾—pÀiGqâ ²è‘ͼèÑ ³×7àAM”@/©0J9^ç }Sª”‰Ä¢nåt/º°‚¤ÇßDi³ÆN KxV+Lª_¶ÇIÙáø›W~‰c)bnäáç*¼0G‚€ã;8‰³`óm)?¢¡šÎ87|‰cÛNÝéïo’¾i¯Å4å¶.ôÈN&¬‚]Kë\x»Õð6Ëg?*ÇïÅ^)D'†„?;r‡»®é¸E°d£‘ÊÖëpÅà Q¹Ä“RKt×PþÓÒI7¨L"]‘‰rnà„æØ&ömŠóv’Ø`ˆwvíz݃ËQÔ€«jS?£ºÌîoêcè:ñ×vS 7¤€´7òç(7Âp-Ýè’§7}D¢¬W/œêœßºÍ¬•$œ·ï×]jó—²ãV×›ôÕœ>…²G¬ïkn_Ui.ÊHô9O¾îÆ>©8‰‰Ùª3äº÷™¡—oAÍ“p¹9ü£ë¹´°uІ:ååùžãA¥Âì‡ûp#)ùþa`ì›Ñfn»æè]ó<ÛJÖª± ©&ÙÇ>u×]þé Ø+™x·]Irnã,²7ºjO·ólNvS¸ë=L¡*>ž®#êñäžwõ`a¤¼Õš‘J¦íOßiR²>ðýãÒGÑÅÚgï|.pZý!‹?/¥][G>‚Ï„Ò]Ü¥~(‰`oá]„'û8¶°ñápr«~E“hZÃMÆ w¼šIŸ¬±!»êé>˜Î]9Û7Âu0|SY–¤R¨ÿ¥-û¾µ+uà9Cždô¿Xpî…m" _ÅÕ>d*E?«1‚uì㋳öi–c= »&s3ÊÙe܇–_ÖÀ©¹C‡ Vë-ûø4òÐó‹ïk»ÈèÌ»+³ºšžã—¨ùhUŠ©Ký·úœH¾$°n ÷;±SÞví@ÕJ][ðšÒŠc†©¨|ò¹n¢ïP¶b}üvßãXY`c ¤†ý~¬³x<¬)‚¨:œNþ•Û®æ dñH Qya»ÃòÒïØn$Æ(¤z¸dªA<þzÝ&­¬JŸu˜«R¯7þ±|;kâæ:=x Nnêîr¬±œ—ˆßо·¯ÖéšÑ[ÒäUˆ×(e—*Ç®Óú"˜{•JÜjy»±Þ9­ëܯå®LÇÜ´ÔXzTl`)8ü.y,(›¤ï@üáä/@Ý\endstream endobj 78 0 obj 6643 endobj 82 0 obj <> stream xœ½ZI·¾?èGô±_ i³X\ A€ÀñÜ F³ÊžÍ£‘•ù÷©"{)²›í‘&‰tA‘ÅÚë«ê÷k§èÿÿ=¿;|÷/ß]:¨îúðëÒvã?çwÝŸNé@0Dk¡;½:䛼ƒë¼ÆAyìNï?ööx¢´ Mè^ð|oŽ'Ú¡ÿ#ï‚Gtq¤¥³P.?Š{÷iÛ`Ôýõñ½¼Õýsz%˜h°¿Y.^ò ; âxoÚ%rZ¹ÐÉtÇ{Ú¢ÖvüÃDØFg$áºGâ;ïˆÏDÂS~)[hѸÌì+º(_?ã5çû_ލbC<½K4=ô·yÛm!ÖO§'iè"±¨I& C *v§ÿ8œþáÇþŸ|8(§ÑöWÇÍzt¶?O4œòÊ‘´¤WLì?'ž¼ ÄÉnPÎxßâmï ú0¾žo¾'‚Án2¢õšMGïø!–´½ ñŒ¤÷”´³.UQ%#ðv„Ðàé€MŒhR|ŒMiîh©è ­tÿ˜ŸDƒ0ñ€Ä¹|KV$‹,f¤S[7¥‰EeXúJ8rxkÙùˆ&eIÆä£-êI$51p1êQ!U(la6i«ç…«ZqnäJg‹².„‚Jû°—é@O¡®ºÓ ö‘ ¦e¨ QéQ\KgïE”Þ‹ŽÌÍï°¢)Ï@bu\þ²,/—åÕ²üÈKCšF²ïÆÙ­¸¡8mÝ èÁ¦tÇ o¢èA4$‡Þó‚É–[±”ö“p™µ`¬Ï ctDãòûiYž/–ÝçÍ7óî–œ–9Âăô–ý<`c,⌳âÈÖÒ]d7¥—Ÿ‹ 5IÌF®àÝ—c ƒÐ.Wcìàô§tT+Äè[ú—$&VUáð%wù@˜Bz,SÝoGŠ@cn=Â42e§9£d? SÒI¼ÉD#¸¨T:¯?e*ä¯u„e­Ca£ÇÝ.•Óe{æI’˜ 5¤¨e_9qH¥ca)ɹ,´Ì[%ù-ÊœtvrЗ¤@¤ì_úZ|€ÂŽgœÙÈaT;ߺÌG +…XBp…*W®—ÝM(^z^¢­©0â^h§#¾t€ûÌ”¹[¼þ’ïE•Ê/éÎP-•¯³`7“fýøNuá# áÕ%ÛðΠ)—ïd6 )öÝ\<”[ÒÞìs+' ´²¯)…”-|"ŸÊž¤¯oÖÁ c] Úi‡à%)7—Ùö+Ïãad3: ‘R[vx"ÌþB…‹p᪲ˆc‘T„F+rÚiå” ß0MÓŸòvÀ›žo%È9×^Á, Ù›é9·,8Ø]•UW ¼ûÒA²% ªÜ¼kÈp?±¤å®LÓúÕM“å°ÔË¿sDB~NO1 hV¨‹Æ—!úQ8ï(càçz”Ѻ¯‰ôtuŠtê.Äöûµã'f“ók¨ kO6²6)&´¥«h¤ŽÄ½Mćdóñý¶@šëÒ<-»gËò±…yþ|zøþ`e»/ÔÜþõ@%u)µcäÚ¦»£ ½Î;·‡špÉîÜ{ÚL¨È=°l— o›Ì?-Ζåó²\(Ì"iM7éj„I;(óAˆÂ`KA®6î 6VÝ&û™“õ¸Sò”ÃMh²³H.bšMÛc®¨Ô£¾ðYe†zλ VÀˆ îVÑtDZÒ¾^ظÉl˜é½¨c³öÊh^“'›¯5È­™¯\OR}#”L•2y˜2QIQ_äùæ•FRÇóÒ7™4ÉðAЖ…÷e1Ê. Í€ÆÒj|öœuU0ÑÛBT¹~HÓ€¦":×ä-"5–vÝQ"òÑ·jÔ Uç㣕c€f2–Js•2³bÃWdÍiô"Ãò «Ì ^¾Ì0»Ñ„I‡²‘'S¦Ðm$0Pý*$OGµZA¤t‚eò¨Æé 4»†d"° ”éUÏ ©ë&agPÅD"a‡wÀœ¥Œ-)_†õó™Ã±Ý«t•g7—g¤¾ä7 –B¬qJ~Ï#®·_çYÂÃ’ ®²ð*lJ9¹nÒ”0f„(Œ4%DùÜH.ÕÄåW+¨\}£=ÕħI®;CÙ,'‰ÔÎêRHÆý* Vt[ë# v—FªyÎïCÝg½_ ·ºx(KЕÊ} ºòM ”è* 5.Ta;GÕf€À…¸§Ô;ï|B±ÜצÀî"¡V”2s+–¿j‘#Ñž‚ ݻ7’Læ\Sçã.ÔBr-3GÛÎ4Añ¨ J]Í©F¨µ„ãM¾GпÙáÉãÛs´FI'-7T¤Ê¯šXìõ1U3Ob^÷cµF§ŒÝª—þÉ "PU ͞-Xe~L¥Ó=DJ†­AÅZœ“Êöµå¦”žrW¨M;Ìí³Ÿ‡®œšÉucÐóšbR>xr Ìª#§]cUVÎ_…Ž'‚›9.ðÀÿû9S¥ôSÇ]!AÎ;ßxÖÍÁ9ø?å8ïÑE)ˆo’‚šâPÊðúNÒð0j²Öþði?—9><àØ¨h\stXF~¦mŠyË4¤#p"·«Q0Í1Y JdY_Ï©Vl¬OíQc/i6¹ÎßRŒÉpÞP—a¶Àv"Ç`›²–ÂÍqì T ÿ8`k,…û’©€+TA’µƒ#Eö?‹t¶þH4—&4ì¢m>RMFµÿ}!à•Ÿ‘§¯=‚ ’{ˆ˜E Â+ñuL•5y×ë݇¬d«/ÎRæšsâíœõÈœ`rJ_OÏ—åÃràyóÀͼl|4b·ñ=@›œ'ˆˆ‡â+álÜ Ü`«¾ã=¯ ljüU…týª êh¨òí…&ŸÆWVN»;㊠õóqŒ›»6Òc+^ßg¨ÈÇ6¿œC|fº65vùÅ}~ìÆG¸õ÷ßý_k¬„½ñ²rõXVâ2ÚÉÉ~8rCÈC²ŸF´1ýv‡šxOLöä¼O“µN: â³åÊyœ8=²3ód8¨…Áîá«Ò|­’u<\Ï> /Contents 5 0 R >> endobj 26 0 obj <> /Contents 27 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 46 0 obj <> /Contents 47 0 R >> endobj 53 0 obj <> /Contents 54 0 R >> endobj 58 0 obj <> /Contents 59 0 R >> endobj 65 0 obj <> /Contents 66 0 R >> endobj 71 0 obj <> /Contents 72 0 R >> endobj 76 0 obj <> /Contents 77 0 R >> endobj 81 0 obj <> /Contents 82 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 26 0 R 37 0 R 46 0 R 53 0 R 58 0 R 65 0 R 71 0 R 76 0 R 81 0 R ] /Count 10 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 23 0 obj <> endobj 24 0 obj <> endobj 8 0 obj <>/Length 6107>>stream xœí]ÍË&Gïç´„h^ðˆ^ü‚5ÆC"h4b‚`4(¹¸—õ þ Æ„|xó*9¸—œDI4 Dˆdã®xÈÇFAr_ã"{z홚驩ꮩžéyÞéç­:ìÛû<óTÿº¦ª»ª?ªw·<à<ýç× ¼üÊ+]ùž{’Ï„òo~½ûú'úr©z ¿á?›øw¾äÿøÿ¥Êžg$÷eˆ–×kø ÿYÆ¿ƒ?x¼Ž– ;þÌwyX|>Y>wîµ"õ*ˆßð$þüYÞ~ß îPö (RïÂö~Ã_5þfÜ/â‡x‚û _ Ÿ»6ØŽÿcø ¥ømØðþŠñÛ:°á7üã·u`Ãoø+ÆoëÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñ[ lø Åø-6ü†¿bü~Ã_1þ.êÃ{8L¡ƒÁÏÈ_-¬w²lø ÿãßE}w^Æûù1\ËkO¼³Yü ]Ä™áBlÇÿ1ügÿ]?ú(g¥W¿òþ ⇲ÅÀ†ÿðñëm•“·ÞSÇ/Ô»Å8KÜÞ½ÙþÜz ÿÚø—0øÏ›•ÿ†bà%Rv½ Oÿié½á—ë]C¯¶#ÿÆ…¾üÈ÷>~'|JÊÇÇ |tt1õŒP†…l×nFž's éƒo]Û3~^^X¯á_ÿ<5z ø£Ïw1ðJï  O=SÖt1¯ã6`øSõ*ïoþb›øCù4càI߯{/Ñz•N‘·áÄ`úç·C~¥ ÿykøO9Öˆo2öÐ0€âømAï ÿŒz•¼}ý9uàIñ)çî'!%Ÿ\ü®ßr¹Éå-¯£B^A˜w¨¿Ò…Þ¾þœÂ:ð¤õ‚뫬WxY|f¼€(ŸP>¤uÔI€Å¼Šðk ¸ ýÙw ¬‰{sëŬEöÃð oÐì<«›W/7µÄ0eùÄ\Í•EÇ/1ÈykøSõ:(!6ãÙzx°1p3<ú‘¶õ™ÝØt1-‰Ý8f«%†Q–÷ß sp—¼£äÿëéŸÿ‚òîþg6‹?Uo×®ñü QÈzxà1°w¡£Ž §ÜØ—ƒ“‚øÏZ |òƒÍo¨Þboý„»õv÷îÛÝ¿žÞ|, xƒøSõv3ý\ ¥¶Q0ºMü¼¼ïx’fÄ¡\èâþsÓõž¤ë}ÈàIò8°”ÿÜ ¬^‡ÜZ—Þ‡¼Üný«ßso=ÛYr Þ“ZφWyó÷»þÔ£Øcš]¯ï˜ pÈmÆÁå&ñwó¦h.^ÍÑSÏ` ìԴĆ âǘ‡©rPhïU‚ZúóþÛëÏþ2 ŸWoÔ~†Ú¿õífôó5OÛ›ŽÜfØptYQôCrßc8Žº û¶‡ÉηžÅÆ R”g´ÞÎä…ŽÉ{Þ­hÛExFù?ú°é«>¦°ž»´¿פŒ)õ ”½ ÷Ab€ãã Ÿ{ñ=—CþÚ5e½kàWú ~|ðÿªU |~lKµ€ûæËM÷ÑG#±Éa¼5ÈŸ¼ׯ`òZ™n¤f|ÛȨÈI/>±4ÓZ9Þ»7éwÿ‚›ìMNùÞï~¯ (<›BÃzCì?s>Á'j˜„ßB‡ö¬®œiRþËõv'|—Å bbÃGG]»LÚ³ þ…ù“¢à5ø•» RÄLØäÏûVˆÁRõެw/(ç2\oW˜ä>k il¸³=€;ÓâÛèß]”OèìB¿ bñF .Xèaƒ¬Þùæ/œ(ÿåz»ƒ?x¼Ž– ;þÌwyXxçò¼žÜ &q.Á/» p4Ú¥q(x›rËD`¿ü>ËÊß˹s¯ñ¡¯ Èò—›€ñkô‡È‡“¯®3à0óœ^4§å£|GÑ&ò_®·;ø3û÷¡ì …Õ-³áUíÊ“zLöµ+Ûª ãÔ[ïŒß 6ì(…M¿k¶ü5È1feÆ;MÇÚ&«à[âMDûyÖ ”²aAþ)üÑòéì…Î%y¿ÞBü“lѳršæ¿NX÷šÍg’ƒ÷âr×!5¨4ûŸSò×t—óôG^¿ »åñD4|âÞ®…NÊ ùgÙÝþöBŸŠ Oâ×@tož>åÚ‰CkÚeñ§Ö!çíõ×Ë_c½'ÙK¯A•ª×éNÚE~‚ß…>¯å!¬=ç¦@xfù’fìMµEósðǢؔ¢Àñ˜r͉Sê¼®¼–#“°~#È_)p7W„õÛí"?!º§d(¬íÕ´,¿ýÄ&Ðä:¾¿ÒQÌm ¦lúw¯‘¿†›Þ†³°eÉ_I ¹4ƒ°°Ÿu˜Û|´/Öó¬~/4þœ4;µ/ZþjI ¦÷å佬“¢±«>¦Âm\ûXΪT 6ÃÏTÊ_“@֟ɰEˆsÛEöÕÏöÉ*Ÿ{nخ԰³œîØX-LJ~åð+ïe•™¤°?ªl‹&Ë–¥üžº¬9¹¿S°crXø*vcÿ“'„°G™gáÉÅ¿ÄçÔìCtéØUŸãBÀŸ»D,°7ÿYã<+÷¦Êû³Ú…å)ÌAlÁvû‹!£éu†mtãý·Ñå»\Æã?æCN„ÎÖ§T쪟ÃËÚS-°žqtˆìåŒz=.BiÀnîJOÖ:¿CòÁGbVCá˜ëˆq @òì@‡¾ÑY.¼cVïKçÔc¾K¬CFñ‡X(“G×?''í²Î£Æ] JáwÈÏ$]§æ¬¬\Vú®Yúã}é¬u¬äŽQôÞ¡]øDêÂ9×o¥<ÀÇúx˜+^”øÃyî(]/xž3j.Ö[)箢106`""2Åñkº6§˜w rèö?¥ç#]oÀn–þhäé–¢„Ç€pˆ2Øó’9‡öB` L~ëEœš¾’)üêè¹K“øñ‹$þaÐ0¥/'ÈAðŸùIT (÷L"9¤ရŒ?uØ}‰ÿå™Ê_³Ddù“`¼÷øirb#þ³;ݘó9y:ÙSBFžä·-MÚ0çÏÕ˜ÌÃ/Ç`òäœëÕ(Kþ\5‡múájŸ%[ÆOÓ†ŽÏô¹XÞ²I}ÀÊ10ç±aÐEbÀ1{ѧðûI9ÇèÊù—–àçõBÇÁg×¹V¹¶ûÈ’?¨jö‚ÂíŠâçÆÆ}„,ÿyÔmádZãQx®—S ûð„ˆ ó)‘=Õ Ya>œœX¹1@cÆÁn£þßžˆ cü]ž'„õ è ñkb°è8,à×öw@í{l~r <NšRýË46$êèBàz1p»$}3y¥‘?î4S™ñ`ø=œœX3ü‡.y‚LÌÂw÷?“ôŸ_x0þ[7˜ôþ³Œ Ì#Kþ´k@Y]8sÿñ÷<îã‚|4þs‡mÌhüÚþs÷ÞÛ÷ÎýÄúM>ꪰº}ùÏnk1p¶ “ì ^Þz&ŠÈ¥Òg<‰ŽðWîv¬ùƒ; 7~ë}Y3‡ëŠXÈ8ôêMôM¡®Á€±`™«BâC¡<êY“ëý¥ð 鳊Ûp#|.Ÿàž —‚ç®dù‡¦umAB ñ‹rÁÆÀ¤L‡MEsv|‚'ÈpYü]7Ä:š˜yèåßc&‘ŠÚüL2~IÎÈ=ÉöŸy/0†Ï}è c}÷M–?m—U?YpExf•ø‹W_]=i®PYÃàw™ÄD#„A˜ð‰0ÁÔ3„„ g™Œ„—)Küõ½iÁ¯ä#è· [PŸµR L'>2Z( àKàiWz0€a âøøÑ‡á“£Çžt%ü‡†¡Îâ‹Ù³WVÎçî›~ëÜèçýç«øÏr€”`gøÏ½¹±ôüƒLâþ3gäèɶSŸœ "גּ†B§Ð:Ü4R)ã—®]X„sß]VÿôçMÂÎ6h>¹Š4L V||k°^BãÜ¢jùŒ0QbÔá~G#*“pmBŒ®|æÇ~jÀã~-ùüBª,9MbŸµ–ü‰™1Ú}æI•úvÅ~>¢7_æó…5ÅÀÍ%ˆ¼Õ'ïE‰Fú**«„ÏÉ?~NŸÓuŒqˆÁ®2ÛHëFáó¦Q¡ X ᔾu¼]2%Ò-¨¸Ö†V'Zä€}ò5b`}ÇuÆÅä¯aèûÊRø>ÆÏ‘2¦Ô3÷ ¼ÐŸ{ñ=bÀEòâ²Ã¶“àÿ÷$áÓÀáa|ÓâàEŸÊk=?üƒ3éèë:¤”ÿÝFL¸m˜· ãrˆžÐÞ¶›½mkÀŽéOAùï}T/Ó¦3)ùÓ·™6à"ø 2/Ÿ2€66ÜÒåÿ¶T^ÜF|øeÅôîÛþe>ƒ®G©‘ ègª¬ÄßaNû X‡>˜†î, ³¤0þ0Ú®€?®åŒþø·‡4í¥¤ÔCI‘ú–z…/…ŸPô™òy¡¿øô—áÆ †Ú;AHŽßÙyqGÆÓTøÖ‘ŽSÐõžOª¯‰– þ;žÿ¿ˆÀñWNFËCJ‡¢rpnïDÆ$ôM#n7%5&ø$þ’y¡—ãÝ-ÔÅÀ¸I­a@yÉÝ0Ê©,ì‹ 8M§ònr­)ÆëØzÛr¶ÿüšãåªÅ‡02þQ,í˜#Ý’ï_8¶ÐvrÉ„#‚n‹èÆ™’È­Í#;òŸÝHΤ¯‡ÿ‚§øuÆl±ÿðôWß ûX׺©à:pw\÷ÖÅ0º|,2!Ĉ̵ sÄ wdõ7 Fqfgv1}ùºò·yorôØ“rxÍlw…Û‰N®ÃðR][  ØÅÞt^äÑ:ÕzþÕÄ0€ø“ùBÀï >Á9¶»Ül4Û@W6*s2ÉõÒí~ƒ‡…Šè^èÑÜÞJéF[ æ­cæçHéüÙ€ùvbÀrøÆxofTˆ­€ŸÆÒ}Ÿ;Âéùüà!Ž-Õvº.•&è¶r׈c<¡ÜpjêÉV¤ød݇¦_Ç^xuõäýr8Í2é°€xÚêT (äÜ—õ§Ôå\þ|²@®¥Ê»‘”ׯhêÕ\i§Ä¿P_g×ËãÆÃ(½ó¯ÉÃ$ÄY¤ñ?—_‰Ç ëÕäÇŒ¿¢“€y­Xxßx§ ¡ƒÒ\`ïDÓpÐÌ9aüJTzØYrSök3l ¼˜ÈèW³ LŸû¾” ‡%Œ@‚ügÈY~p>gfYþ“õBY¶»]4öàe¼O5õ ¡RÖ’"~ç­Pø—£šW¯K¬?-'®Ü ö.\ôÛ6œÕöRíM50U¯²ëWâ×óä˜'å¿ÜîvÑõ·,»l˜OB!/e៭RÑq`†Ü :nJþ.­@.Süþ^¥üg·7Ü-”z Z¯¦:e[fôûXI&å¿Üîzù8î¦ü„,”{Ž€?kðI™î¹-éGfÈ?…ù=·kÄ/¡ošÄOêU¾Vå|A.~¢'3ðózeœkÅÀrftüB–à—ßwP\¡iËßA›aÀ“^ýÊû5ø³ä 76Ë¢õ ¯‡ÞDV½)œ+ÆÀn/1@A>†ßðW‡õXh@Áz ¿á?›øúò#oÜûøð))_€òÑÑÅÔ3B6¸v3PÖoÖkø ÿÁßÅÀ+µ! ß¿ì ¿á? ø-6ü†¿bü~Ã_1þý­G¡/¯W.~ÃØøOgµ‘w`ø ø-6ü†¿bü~Ã_1~‹ ¿á¯ÿ*÷ëË¥ê5ü†ÿlâoú†"¹yÖ¸ßUS¯á7ügÿ®TûõwÛ@¹TN ÃoøÏ2þUrb)Ëæÿ~ÿ°^‹ ¿á¯¿ÅÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñ7Ã:¯ISê({ïÿ‚2ÄÇÇÈ箊Ôkø ÿYÆ¿+ÕˆHŽŽ.º6àmƒ`;ïÀðþñï௣eÂŽ?sãÆ]ÞÃ)—Ï{­H½Ê²á7ü‰–·ß7@ƒ;”}ŠÔ»°ý†ßðWßÖ ¿á¯¿­~Ã_1~[6ü†¿bü¶lø Åø-6ü†¿bü~Ã_1~‹ ¿á¯¿ÅÀ†ßðWŒßb`Ãoø+Æo1°á7üã·ØðþŠñÿ.¨. endstream endobj 25 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 44 0 obj <> endobj 45 0 obj <> endobj 51 0 obj <> endobj 52 0 obj <> endobj 56 0 obj <> endobj 57 0 obj <> endobj 63 0 obj <> endobj 64 0 obj <> endobj 69 0 obj <> endobj 70 0 obj <> endobj 74 0 obj <> endobj 75 0 obj <> endobj 79 0 obj <> endobj 80 0 obj <> endobj 84 0 obj <> endobj 85 0 obj <> endobj 29 0 obj <> endobj 21 0 obj <> endobj 100 0 obj <> endobj 19 0 obj <> endobj 17 0 obj <> endobj 61 0 obj <> endobj 15 0 obj <> endobj 13 0 obj <> endobj 101 0 obj <> endobj 49 0 obj <> endobj 11 0 obj <> endobj 102 0 obj <> endobj 42 0 obj <> endobj 9 0 obj <> endobj 40 0 obj <> endobj 103 0 obj <> endobj 68 0 obj <> endobj 33 0 obj <> endobj 31 0 obj <> endobj 104 0 obj <> endobj 30 0 obj <> endobj 86 0 obj <>stream xœ¥W Tg¶®¶éªR¡U:Ä¥7Ü͸¯ qßEmHfSTÁî¾Ýì ®4› V¡À FɉÑ1z’É—dÔ˜Ña4·ðç¼÷þ†˜åÌ›óÞ9ïÔé®^nÕýïw¿ÿ»_É»^ŒL&ã¯Zä5ÅÍöÑU,“†ô’†Êx¿Ý¹Vör°·«Ò¿Ú/ÀÄ~¸µ?#—É"b-ŽØ¬s³s¬Ë”™3?˜à2ÕÍm¦Ë°À¨~á.«ütÁa~:úåc— ;Cu .cæët»gMž7É/,zRDTм±\âBtÁ.룣b\<#Âu.«ýÂ]zV7©ç´8"lwŒ.0ÊeUD@`T8Ã0ÆGDyFëb>ŒóóOع'`uàGAÁ!>›2ušûô0Ìpf ³–ÙÀŒf62›˜ÍÌ8f ãÅ,b3Û˜%Ìvƃ™Ìx2K™ėÌrÆYŬfó£fÞgœ˜ÌpŠcÇ$2/eʬ½zëEäÞòB;…]¹bºâ,;‘5³å|¸NÞŸoï}´]¯¾}úÎïû½½›}‰Ã2‡ãʹÊÛýfIzeg'ˆè*JË e §åRx§»:©ìì8œr(˜ºþ>05QŸ2øX-[kj5WB\OôçíGˆœÁ Léy&“æ<:(ÐÂ^'®Š 40ý94A=<†šîÀqy&…ª‘%• Ï*;iÞWíAVGdéዬ“ª™~Ô䆧–+7]7×Ò<× åFÛåžÈ¡ìaÛÍjKì|ÿ!G¸×›êFß¼Þ+RPÝG†# RZNÕ|#4JéNj½¤²Êªð=ÌÆ÷äR†«qÐäWäò·QÄ™ô<gãœG¯°Ÿ@rÈJ5Q2šá‰jÍ©O-mÐ{‹‚-!°¶óî@¢”R-¦Gllw|ƒÌTÚjÙß©QÁ‘Y¶5t¯ »²S³¹jáX»qÇÅœêþíRT¾ŒÆ„½ÎûWÅUTTYê/mªØ"¨š=`çVÝJ^ÙD³‹XtI†£q8Nq¨(ïØ9GÝõ-2]߯ü+8m€28×€ Æâóܹ¾ 5"VkÙ…)¾ã„­X„.,N‡âyÇHo^d•ÒÖT«4¸Ê±¶ÑïK<@ßœ(„A(ª?Ê^ž"ã)œºW¾1S0%šÒ,À—@f±ækîä&6@|€Yœµø02 ˆÓÎÂÝ…{4õÁµ©÷÷ñª'ÖÔ{û×Z0b†EÞm: ¤Mƒ}ÀGCªNCd\<$ŸÌ6Ã1‹`‚¢céæ–Ð‹P|%NtmŠ« .רîT„fÍ-à•Ò†Ôzü/çÊ:(cúˆòi˜šœæ\Å|ùUóÕ»Â%­·44:bÜ*°‚ò›¸â-g½mÌ=ÄQú¥Zƒ.Qþ†~ñÒò;ê¹zd)DnÕ!¨Ó¨š%J¢¿6p7Ókó¢yúÒË>ûÝ?û8—obþ.¨âËà´< «\¢ôDìn•;U”û"ë¯ Þô þé´9Zd»žVË5¤ÿ-ôøzšÆrJ©ã°Eê/Êʤ r)]²WgÍȾ¼ÈEÂQ>æX“í.Ü© }ŠÑh8œ¬!fÿî°[.î²?Uà|òÒó,”U_öd)í´È;ch–Ì‚Œœk¶,:C˜1vƒÖÓ“%·Í˜¤×§õšá$—°xVqEdC[ aà~æ½ÝQ×8ËV0€Û"ç‡c¾-Ðßàoô‡a‡9äç@œØÕ'{OÆÁRp.…Œ¼ìoðÈÀ7äÈï~£H^Iµ†‰¸æ N´:Vaïy8Ým ‹•úÜW ÞÿZÙÂ#PR¼ökV›huÅ<†rO–ü‘Œ]O”‡§í¨‰?]Yei<BoʳªLG€¿Wã7_©Ä%z’LF ý¾T±_ƒØPÔÈïÁ)ê ÜøÉû£¼vÖœC§=Ÿ.t3'Ì" µâ:Ûng1ßsR%â.i”[8âñ 'º^ˆ\Û…ª-%§mÓ“Á8¶ã;Ô óÄgd”F•¸¶†GÇñY¤]ÜéšÖŠvàQ ÄÁC #4áþÞI¡à—£ t­UúT”!ׯì£é=lˆ¦}úÌÍpÀxø Ñ¨!1R6ÿ6¬é¦Û³=tépÞSJznFñQ¨áÏF—„D„Çx‰þ×ïzãêiªq9T=ûÕËj©z.Ârì’Æ«öb!™‡ïCÂg­#KÒ´ #ÿ6ÇЖ}­%•¥<Þ´#éÜþÿt&% ÃíV¸\V§©hó*á*Ô‡…óÊ·ß À%éð%9^N:b4ÅÒ‹lr}…£1B­7жðQ6í¾JZ#\üY¢¸ØcJ0‡§©.òR!'¥u}›wÀd<Χ!·X#Ýã Èd*O/I7C9ð¥"¨_tCnùYbJ¹“pÂxÒP¡7!†ïK•¥„*èʳ8«g¦<—KþtåÁéÊÔ»[Ïk>²n>éI×éî>’ ƒ^ŽÃé8µé͉“ñ¶Ç¶7U»}}èr1̈Î4gíÌu¦FËÙ²úú#€½ÁLœLÁ¼ÿIGV‡ˆ»­2ìÌì'ÇÞÒZõí=Òá©eÿuv '‡Wöú*·43 ÙBbRJ<Äó¾5ñegª, AÍsÇÆ(()ïo+NøáK+꫞y — {on†Ï?†e>>°lš†(ª[¢/Jé~Ùþà¶u6ñ¸æÌq‹9ßdH3$C*u"¡¬ìÄ©’â=5Þ‰Z}ð!ሟe!­w䯹þ…þU:ª“‰NÝ;3¶Õ‡î×/Š…•¼WûԢǃk·Ï¤Ü\V-l(_ã!’J~šiGvR-œ„¼ŒcY9ü ²I½ÙJTÀª €Mä}b¿­¥åúM8ªé6G=´•½Or:=Ô±ÿ1òZ·S'àóß’]‰wº}Øts|€n¤2Nª§¨“6«É"[Ôµ_ŒK¥©ÍÜgà‚ÁÚ}ÛUœêUžô¹ú\PµŸop°¯oMpS£µúœM"“Dé?›o5û¼À/^ÌkvRÝ•\¥©j2ªrgî†jøÌ¹©üÆË¯_…!ÅBF4ÞÙ \Ñí'è,;˜$øìXײùtSþa“PS~.§øoÓWìÚo$N#R5þƒ1ÍxÐh8H·»ª+)!N çXêšÇziaÔˆÈ-g¶kÎæ––BßZ¹Ã/x·×”kPKï¾ü^ ‰¡=ü!e4ß0ÊDɃB|—ŽFiº©_ˆã¤™ìiCfD¬Ñ˜x@ ÿèúP¡Å"#vZ®6ýûîÇ£G¿>±ô",ÞTt×ýÁ‘Öï°¿ãUô‡K¸ ‡SQ£€{«‘›ó”Œ ߬Õ 8+OË7TS5sý*J³ ùôÔ~%iÖÇlNõ…ù°ùTdn2!zà÷AÒ^ i¦seQ9#'[¨k¹œ×ü˜6[£z»Fûè•™Wý«¹¢„Ö~É÷Xtâ–äÕ3ÌÀþ‚ê'tÿñ;TjºWˆÖVì_fk‹€«q€ qRuáJ|®>Ų–¦ìc%âeëgTõªõź ´„ÝƇGÔÕ•”ÕÞð»9Œ !3§“LAõæäÎnðç}›–¢ùá/8]\ïª+6€ß|þ5¹©Þ»ëRŽï­‚»p’Ç—Åöç°`´+,tµƒ$‹”…d·Ä¿ØúÐ,=Uç僙:âËꀌÎÜ—›aÌ5äñZ6˜dSG‘÷UAA†9?ë8AÓÎe7.Oì“Á@Æ8{\¬ãb柄ZÓ[³ÅÜÏ-×jxeR¾´6},yù,ñÎæÄ>ÈöúØ}Phß»>ÛÞÙr{“½’aþ›%÷ endstream endobj 22 0 obj <> endobj 87 0 obj <>stream xœµz xSÕÖö ¡9‡©@ã‘ð¤ ÊŒ "TAdE(3¥óDç)tnÓ!Ͱ’tž‡$m:–¶PÊP‚€ ˆ"ʨ€ ÓUDpŸ²{ýþ¤Eïÿy?ýïóýOŸ'IÎ9{¯µÞw½ïÚA@õíC Ñ•k¦O³üë~„€Ù‡IèƒuÏä]év0Pûî9nŒ¿p(2FnC¨¾AXtºbaxD|Ô¶€Àçñ>œ§»¸ÌšìüÚ´i.ÎóCý¢¶ùx…9¯ôŠ ô õŠ!oBœ]Ã}¶ùÅÄ;Ÿñæ«¯ÆÆÆNõ žðö„ÉαÛb×øEûEm÷óu^ãü¾W¨Ÿ³uwS­¯ ÃC#¤1~QÎ+Ã}ý¢ÂÖúÅxQµb~Ø‚ðM #E¾µ8:f‰téöX¯8ïñ>+|ß÷[åÿA@àšm®Akƒ×…¬Ýðê´é¯Íx}æè7fÍvyó­¹ãÜÆO˜¸eÒÀɃ¦Líc?€¢FS«¨1ÔÔ›ÔXj5õ2µ†z…r¥ÆQk©uÔj=5‘Ú@m¤P›¨…Ôj3µˆšJm¡Þ¥^¥SÓ¨÷¨éÔj)5ƒZF½N-§fR+¨7¨•Ô,ê}j65„J9Pbꊥ^¤b©a”#åD §FP#)Žb¨mT?ª?5€šC ¤B©ATeO ¨ý©•¤ZT_J#.(üÖG#ì',ï+ì›ÕÛ…Ú]iE_Òqôf2SÓÏ£ßoý;,P=Ðe aÐ[ƒ ìGÛïì88xð…! †NÚæépFœ)¾÷–þÉ&°û^|õE~ØÞaƒ÷:Mrútø+Ã/ðñh云7^ŠyÉÌõã–s%’Ñ’dÉ%ç8ç"監`Ô—£#Gg6q;dìE^iß•f´ÉÌ/Õ »æ ùÑ]+جU^"$‚Rž•Œ}º¿wŒßè“´NÍ„ÐÕš½Ú0C§ªQ}hà3½)ÊT«Ój´’h˜Ñ jŸºdÑ—±{^)3ñÓŒ‚úëhÇu!Œ‚Xô¸§x: ðPÌþ2 õCƒýˆÄŽÄn¬'x"DíƒSлáh;º†6Ø{¥µžµž°ü ÖI=¤îa›€±V¾K` 7…ü¯ü ¶õÔÇÙÀ˜é•:B`µ6RC²Bï)‹•ÉSr vÁ¼}˜YZÈq2˜²÷sf:@¹|Á ¶j¼´–*éÏ!_V‰üñ÷ŽxÝ¿¨Ewžìm7œ‡¥¥,1ôÛÊÂÝ´Ž¶ïò—š»¦˜Ž=惛£LÃÄ÷¡ïYìƒÞÀÓÑûhÖH‚˜BÈK‘Øp˜¯NÍÀvxл³æûøé÷DH’  =)NvOq¸›¼ø¡°¹kRC÷"ªO}DhâÐxôZƒG éxž¿ðOgÖ )~— ¨EŸÀ9éáE{?(˜ s ãVlŽX³ú¾¦'ò‰¦X½ÃÎ먜0ï~È)¿÷?GÊ—Ò~ÓìÄêS¼O¿53£'âñЯ †äé Ø³×ØÀèP‹GÑ.NIŽpfÁû·|qýÂ×í¯¯'\›C¸vÒŒšv ÐÈÛh³ M2éLB4ò ÛçQ;*²‹Eá©1 ð;À`§ÚèïЊ‚ߘPe”h¦,d"7eŠleEh Ô­-ÇÆ$ GR»î“½¬´çGô¶›§gŸÞ&¾ŒÞBß²¨%–j[»€xÿïÍg·¦C[mÐmVän§ç«ŠZ$h*!ííKyZPk9¥:6"™pC’±ÒTÜØÒàɉ//€€%Éž¤¢Î$Ì3:` s­ 1 ù«]sØîÏ›…á9UšuWQöÀݪѓ¡¤Y‚Ô7é {ž•4‰›‰r{(BÁäZŽ9°=ÏÉŒüUM¦¨Q¼)æÃaâÛÈ­gŠk‰°Ùè3wVÀñoã8e‰:; ˜ÈŒ—`G:2‹r4šª*N«meÕ>¯ýj3}à³/„îH-–5úæ{哾éZ´¤äÄðæÚ=7QŸœé!ZN“^@S9U’GVÚe© 5…S*ÒÒJ¿zoH"Õ³÷[âX^'•ˆo7FÖË¿L&Ht”™Ð8= 7£ÙzÁ/çÐp‚ùüX1ã1hE”Híê Ùò’4#ÇÜdmV ”@vAv!a¿mÙJ‹7ù/t›­«˜ì3»÷Û>°^`»ã+‹ƒ‘þÕ1'Y—aÙ§67§ôjqü·fË,9•€Îºw"âÆ3 6ÖÞ™~ï€Ñ¡ýò–{hÖ¹¯ˆ¸…A7/±Ù>u^ÀN•~#9åJ¯Ž’Ë‚ûs8äFC;ìhõݽ©| 0.‹Ý–†êjë+õµÅYM[5’ºæƒED«÷}MâO‹÷Ù¨|W¹"ômQÀƒyóAÔiŽ,r´Uu0™h6;Žž¼p›ûfïæCµ_G.¹©¨¥šżFˆÚP*»c×®ƒ5µæ–=e–GªBÕ‘$]ëµ)¶Tù)Ä&¦¥dÉWÎuœû(Ýbr ¬¬@o½C½T•ÛÁMaK× Qw¬ú ³ŽSð€-«?Pm§ºVkÖÔB´«jlz"Õe–@šN}yiœc¾¬$‘”1==)Ââ9whŽiD~v«wX $½âµ1 Œ•FcŒÈ¿½W´“ˆhbÑ=ªm¥N÷}­Ñä—Öu0âƒ1eí›.Œè•æ ?a‘Dœ4<Ýã‰4—³È›†*Еï>öQ~ 쇖È¿ZoÝðÕª0÷í!~AëÀj¢[‰Zë ’ ÔŽt=Ïٺη–ÆŽŠØ(‘ìådbÖ‘ ÚôŠßAï„Òï¹&³(@9<Ò—(ò¿i2|¥È"Ï^ÆÊ¼”AP{ú°¦žó.Ü´R[}ÌêòbsÓÔª¬ÔW°Ú ‘QQ¨Ê&x®m…*ÎV „?òîCki šØ-pÌJI’§H׆/^Y@\iÎÎ7B9SW+M uo8tzÏñã5:^Ýt¯Õdq î%›,æ¸ cѬkíG N«š9o¥<R˜ÈÊØúZ}ÅŽÏçí~}Sx'~‚_øi×L%nc­¦ÿ ¶ šà`¯O u¾EC#ù?ûä¤ä¼:.?»©»9jºÏ‹z[u«îs«3ý Zÿتùš^QÀsE‘êÌxÞ}Ò‘dLü FA» }Bª=œ™-(²´¦$â9ü•H†gÚ™D¹?Wµ¢>DæÕ±x¨„`nø“‰ÄxÚïGª mVºJž¡âÇN‡4Ø>;bZC?„³ÐB¢®”ÖvͪYÄã±°ËÝc‘'žDF‘eø=<¿Ž½±šŠ§¡Åhš„f w‹¿c'ááß¡RTŒ^ùüú-4f.À•ø¥Y¯JìÑ k³E¯ßÈ7 Pß³÷n ÑB~!‹ú»?ܧ+ƒÌ2.UŸQLLyl]C™¾¦Õ¿iý»o¬ÅazNÈU|ù¯¼èE$2Ó6;½«¶ ·QÇc!ŠEçX4W„"ꛇ?Žÿ¿$ÁOÿ0 þ…_Q¢ UÛ†‰Û"4FmvBä–9{W£5'nT#¨v¨ïŒ½ˆ\lîô81Lü« E¡wØ×áau¦±Ì$É/®®o挋‰P'EI2RcÂ}_²¡ºB¿;|² ˜ûçÎ]nMlª–´ìlÉ©´ š SËY2HeJRË «òª+R}c=äÞ^œW“—N ÌÔÅ‹ßö0ú™¶KR’⃠wQRâgŽ]•ì >ÌŸÖ"{Ôÿ—ÃWš“o¬çÖׯ†÷I¿ô„LMpöv3šŒÅçØW>r`Wë>äcÑMÔf®[´i‚Äv@a¥¥ÀæÚ„¨Ï%öÿßÙÄ,ðX•àÇ Çä¹}WŒÔHê{Ĉ:Íd8Djd7ïñµÃÄÏP zÊ¢bª¡Ø¨+Ô6€˜;¨¯¿¼8úM<^ò0…}Pså\a~À¢x‡?ûüß3z¯µÍE4-þg9ñ%ÍÛv@,eà³ÇoOÀGòÀ\©¸VŸ EdsyV ”DreÙúR¨cjãõááñ±‘Ž…¿øÉ™»DW»¦ömˆ® ‹Ž «‰nh¨©i 3‘?ɺ‹Ío´˜Pþm”ovMíra»‘(K‰J•¢™eMhTXª A C0± ’Gs>!¢=ºŸáù{ {¬˜ð¡GCéN‹:Œ•Vf@Wy@YP)ži>mæE¶ žž>}N”&Ò»`´©ÛT¿å1}æ£Ë£Ú]!Þ).AG®«×|¬5Ø n°]çRð;‚Åè=Gµ6+—ø®ìó' óOn×,Þ3L™á+µÉ6á¨RÊ b“S32ñ(lïÈÇü+“Ò b†Ù [—ÙbØY‚Lyzò¨ÎZ¦»Œä'u:lq#·ˆÉiƒ[=n$˜ž®,jµx¸Œž19´£¾oüŒÞº7ïñ01¦Ð^ô„½Vwâ ’¡k3ŽMzeÞªyAƸ³ÞØpÈ ’8óÁ³%-ÀìùH:=Uµ:ÒCºe›2J¡ŽVeB†:S iŒ¸[&˃ nŸèZë{ðÈÅažïT|(iÎ2aÓ¡‹Nö˜v) û»wæÈÒpmÅ•1[‚Ñp3ïE2Üq™d¹°¯[D}>·ÝÒÀ;‰p·Ã‘žÞco=4ã·Üç&¦+-§ãød÷6Bd2³X)BJ¾Ÿ5tÔçG´Âˆ†]w8ôÓ3Š»Mü¿meÑ—‡˜Úâ™À¡ ´^Þ”ÙHTnðwKr•9™j(³$±é›c—€lÍs3dèT$ÓLd$JðA:2Jó´ºÜl®¨¼õè7Ð ¦­ùñåþZ_ØÄˆŸ‘ι*Ú+Ú×?r+¡óš# 뙈r7U˜jjLAÉ™[gž›ˆúJÄ¿"æçØ^bØŽ:G=uhB¥Æ –—aâßÐþ&{2z¿g`|DddED‹¾´0—x­F£F ÉŠàÌ…+VJRSÉ•LfŽ"§èú%ÔŸCë_üOn³fŽ]}ýnÌä{oÙaân䈾akhb¨†´®i—o3rI>àR“d,ßQ°û¤Ç‡³ñ xâ"%âgX˜E÷‘ðûûįý€…œ¸û=ðß»…AðEv„ž”—ÅwÀ×PÉ\i|x§ü¬4s•þ°‘°-°)! tÕVb¬ 6ðŸ^3}OÈGðOÙËq—Á ¶U‰¢Š‰aob tå§KŠór¯@ ©§H–8 ¤AÓñˆ ,—IÝ€ý…Üa>Ò}”4»ºôæ¾OlLAŸG$æC1ûPí¾˜C–Sfñ[Ù­;;¡‚9õiûù¯ÎlX¸Æw˪@ΘÄ~Ùz°Î2÷^;>mÜ›ó§ÆkÝÛݸ¢ÔÖ(±]W‡Ít?|ÔÏKž »ï¯ÿÚ"Ûï×ÎÅ —·1ã¼X4xn}\G(¼ï4ÿ .3~rýDã™o;léo¹w£škIÿ²{È÷޶Btž ¦qʘ­«ÖiwFpûò*ÌÑeÒÄÐtß%G½¿E,™F¢`’}dÄô篭ÝïîÉy»ÇxÁ; úÝÔ—ÿz ö´WŸ`ð·ÙDØ !§ã[áXúe‡¡µîЮ’f☚¶U¸g¯€­ÌìmgpåŠÂŸ n>¢µ¼=ûßì¾ò'íÀë èË7ŸÆ4?úó»Å÷㺅,qBs—ÏÏÌø_~˜Õ…u½ÎÑ‚FÃåiŠ´ùy–9µ¡©m‚c]S„] Ñ×lYèõq,éþA”±±UP&á¿ÇëÙRÛ7I’lß”Z ÍsÎÝ´ÑGÞÿ!Ý,枎B±z4Ù(E/X^, 6ñ®lmB]@lrš\ΩUjµ”f7æ}yúI±Î:&/+;K6{Æ}ose]­…ÁÿÉmö¼cÖþtBˆnàLÖ"´ x(rF«M´`Z€£¡%=QèäiÓßÃ⸸O*K2·úÛăo.+&7[—'ùýÑ(‘<»éX¸"CƒÖ"»UhðÌOÓ€‘+r"áUñ’ÇÇ3ûžçá!Ø!Å–4y¶"·ðÎçHü1wõ)FB¸aa úÒ°_ˆïì9Iþ.è>åíðÆêaâÿB¥|{(à¢kŽ2G©SæS^TVR¤ÈOÈ—àQg‘älUAv;•ÈÊ3UÉa¡KzÛ®,¥0%Q–š’V‚9­”ÃCî$©@N‰²¤YvFE†ZŠ%Kãҙ꤂È&9?JÂoÛ%•¤•”—¦ Ne´¢Y×ölr›õo¢|¬cÛ&>›ü  ¿ô[MÀ8Û€ö·¡zo×&ä§ ËNi/"q#j•BUl,Ä%s¸ 7Ñɽ8Dä(âôz¨*åzþS9d/¢o·X~êC+îYÆ«Cè:?–=—â-ÁÕÿ³Ûæ…4vHOT[ ã$¾®V© yîìD?ÝlûdGKZŒžóVÉÃ!‘ ªM©ª®.ßññÚöùSñ€XÀaÑ¿œÜüùè2m#¸…?Ÿ~6þxhØ3Ñ{|zéS^œ›_Èiµv:yyøûn¹œìJa¥NñÕ«ˆ~1RèeÖxH´x1‰ö¯vÁÿFÈíÄß(@­QhƒK½ÉÈŒÆ×1’¿ ¶!ˆ¤æþ¥ ê ½žKW$¦A$Äç'UÈɰ{­:!(B•BÔ€V±'påjÚÚmíðÈïg–³¸jtìú¨ZpìÁq:i:þàïÉÝeÇã—n¢Tˆ$·~x„FLù8š=E‚óÓÙ¨møäÎ(<Ö´ÜFÆVÛˆc̽¦žö`æ°Œÿåÿ4¾ÊÍŠ Ø¢pß þ.hf¬ñIŠçbš½ô›€™‚ûýÝÜ£€¿QŸ¥=åyxk÷Ç5ÍYáuœ¯*=bAZœX™EÇ×6ðäÉÐŽüÏÞ¿%ä×Z~¥ÍdóŒèö‡ûÿô¤²%p§ë~Š,.¬Õ5'˜É˜Ù€©¿½yÿ¿<Ü$¤Ê";úÁµöOÖdžSÓ ªXËÌ/×DÕ¥“é?RLÓöR#¿°…åEØ»˜6÷?7€ëßw–~`?cÁÀçôQÔÿO¼X endstream endobj 20 0 obj <> endobj 88 0 obj <>stream xœ•{PSùÇoɽ«YX·h»{“ñ¨»¬Õé(ëîŽJEÁç *"#„$’y@E" $9‰ËSIHˆF@H]ª­¶n«¥]wwv×µ:vk§ÎZý]æÚ™Þ@ÝúGk3™›{g’sßÏùžïá`áa‡ÃáÅoÞº‰¦Ä¡_£ßà#™ŸØÁáþ×_qÎDÇg y$J~ ãr8*­)^“_¬SÈäqLö"ñãâV¼)^¶tiœxJªSdKÔâ̓\ª’Ø¥8Y“­ŠÅ1ïÊ †üwÞ~Ûh4ÆJTúXNöþ¢7ÅF…A.Þ.ÕKu…Òq‚Fmo‘¨¤âÐÙbC—x*¿À Õ‰7kr¤:5†aBµF§7HögçHs劥*öbÛ°d,ÛíÄÖbñXöSl–€­Ç±$ì'Øfl ‰Íb•cáØqì;NF/,1ÌÏMà~¾+¼Ÿ·’×ÄÇøþ=<¯'Ò‰ƒ´9‚¾>šç+uÍDáã(w½Òš€ŠÉ´ñ)+n±(=‘ï(éttžè>¥êÎÜ*‘l6P!1qfî¿3jo²@?8­×&Åñµæ†^VÍ"“‹^ÚÁñ C#\ô~‡< ue•(;DY,åå•Êeföþµ©yÍÚΑ_Ùwt¤|äðIsGIýWH‰åÑPº@ûõ¥2Ê\o­)¢Ž‹˜Yx ”7ÖØlm­Ôñš†¦êêÀ¾!³ ¼ucÐØUÐ)Rœ–Õ®iÖV¯m‚1âTgà>ÂjWêì”­ *š€h†Ú6öœóXêBZÙÎy2Ž~èá¢Ûô|ÒÇ,@›4¸u…|þb3¡û†ñâLø†Ñg®ß¤Æ4;ð5J™lÜm¥P7ΚÈä*eÁþi"ZŒV‘ËvoŒ_Y¼D¡¯pfIÞ§`^&bã’!¹×8p´.Âp§÷*!,²­ä£˜ž__^;,Bèÿ™r‡ËxÉ\Þ?žqÍ ÞÞó­¿å‰î1¡oo‘Õ¯,„ëÚ‰ÏEkRpì–Éà| …âqÖþÌÜÓ{NìbÅ:ÉF¥£ÄÝÕÖîfU[E]îóu^ FƤËEûq¡ÛaY]¹!/^^° ²‰¸‡ù7(ö_BßåfQþkrñjUVz–ÿ¯Æ~ƒÞª¡¦Ä;h± åX[!×(ái”ˆn‘ж†ÿÐpK¡_ï–¸÷Ú·A¤WìÔfäíSî„L:õ½¥°AQžBú².h.±]œŽÂþ„¢ÐŒ˜GŒ`}º<_/¦£8ó=‘g<,ù³ŒÄÕòmðqÚ¿æ¢$ô„¬h†j°n?8(žf1Z%`†ísŒµ§„6Kc>Zö Ÿ­ÛV°S½> æè ¤ÉlÿÐæùü„»¨Å +>ŸȽøËàÏ.;)”H¯jp·\·Ïñáyf% (mûdÁ! È  LU‡«ŽD3å³#èt“õÜ÷z8þ;(ë—Æè7ÈÂ*c)¨ m»Ñívœôýb]ßrfÖ13ƒ!/BÓèzµ®ÑfXJ*(CB²6ˆqQ Zúù¹«M—,ºÐTM9í“°Ùò®›,lzP 情ÊÌŒ¢lØ ÙNm@´\Sp®fÔÝßqjÀ7 è/ì’6+Ç~NVÖd޾Ç`¤xC23þ¦ÿv0èheYoÄÑ’ï­H?~|Á ”;Ñû“Yeþ„KÏgS¤£ß%Ë•à­yÌkLÔ_¢1ü´³¶²¦ü°ùh•U¤X°ÌröÀ¾.ƒÿ°õ*›“¬C±÷Z•ý“(9SsËE'’È=ÖòòÌFIøÿ¿(6@š\™Ì.ŠÔ@„Íü akئ>@›è-$3?t”ëulâ:ž—´;lA ÛÍaódù¤ªê³"á£ctÙ­wª”ZÝ©óu;ÝTÄD [›éåôúPÃ=TïãN¬žˆ#ÿ†óLÏÃoFqí^´˜U/Ô[Z«l‡Y¦Ï:pœKå(ù=ÇP;¼A`¿z&_—ƒÏ…~݃ÛV×~¼ÞÞ­À–hW73q„gJÎ'jmzÑ!8'­Ã/nÁ‰‡/.dYè%žÜÉ»}áêåÖœu/cý¼/ÿÕ_hÌ7àÙß[èÌnÌ€xH“hv–]ÉîY« mWa!üÂúgþÿ²ÌYãÜE¥^"½z—J¥×©UN}÷T[ :èø“HÝPÓÁgö5â¾iãÓ©iá+Ú¯¸j‚ñÁ«öwØ[›) endstream endobj 18 0 obj <> endobj 89 0 obj <>stream xœ=’{LSwÇï¥Ð{«]‡º*ÌíöÊcC‘Çž$[´>2&RK•ÒÖ¶PÊc±PzJ ב2œPž!Ð!S óí1þ±lÉb¦‹[æÛ¹ðsÉ:²,'99'9É÷{ÎçÐTxEÓ´X™¹_•öo'l§…ç„çEà\½¿šRHÃÇÖê6£~žxs#)M,ç”F“ݬ+)µò šüKii{vó/§¦¦ñûʵfFmà3ÕÖRm¹Újô|ŽQ£ÓZí|BF©ÕjJOI±ÙlÉêrK²Ñ\òæÎݼMg-å³µ­¹R[Ì2¬ü1u¹–_·–¼ž•ÆrS…Ukæ3ÅZ³¢(fŸÙbUŸÒPT •CåRïQû)%u€bCkQáT5u—.£¯…%†µ‡ý-¸dk‘ÄØ pÔG ¯¾&w Ô‚=µà0‘¶'¿E¯·ÙUÝ\å®¶2_|«¥Û3c€;®¯¤±AÆ:0^º‰QQxU¼Hb#’òÅ#Þ?`&á']ÚÅÇ‚^Ž2AΊeBmHõÑ4ŠÂ-"4¡AËÈ>ò:ÕPÞ±] ú&çò†²©ŽWpn¤ÅdoCD>³xŠäöá|fÅ۳зa~]éuF&|ä¶\£ÇVðüŠHØ!dÈ/Ã%[}MC½+ë)n= ¬ž¼$*·UŒ8?Ô}ë€lV™ª#Ý¿¸Æ^··Ø3à´(v0vpøÚ[ §èÑσ¢¯â«€/ÌöO…£e2º .¾Ó ÓìâèÃðÖ,S ç©ëN`û=ü ™PäœÂµ ¾å£ÿD nœ¡EPÈ11H1G%v'}ïb5?’~†ˆ¯½soöÖ27¯ú€9Pb7‡E?'–œã˜?Œ/ŽÓ˸ß@‰H¨Â9ùÏÊïHr6y¦9¥p¸rpxÐ?ñeu¯ËËu¶ø[¯»4Q’¡(cH:É("¢ÜTµt÷ÆÐÌ€â üÅÅŸõ@¿¿êG=!¿~–HnÊc M*õÐôÐå{˜×ÁÉVãC7•Žã»ÿ1ëÅè³Õ#rrøO~cfeAý÷©⳸}×’°÷}]]•¢-GÞ˜ |,F‘¾­†¼ÊÅéœcM6ÈÍhe€• }Î)A2Ea4Ä­"Á¬üÓÐ/ÚÀmoàl…Æ,`I `Üô¢#q[û×îFw³ËíVœs4Õ@{jÐ2<8üùôCÂC1É=Dd„&›ïÇcúõ`Û“ÜÂH× ð²²³]BVžôuv‰É‰v&¸%¹ á{|RÉx‡TŠ’+Ò§> endobj 90 0 obj <>stream xœ\£þCMR7$øøø‹‹øù,‹ ‹ ­÷Ì÷W÷T÷Qmq€Copyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMR7.CMR7Computer Modern2pøˆøÍ‹à÷ìõè¯Êõ÷ƒìø÷JiˆuP~ƒ…>‹}‹ûLôè®§ÇºÕÆÐÉ‹ê÷ !Õûû74/X¶†•£¨œ¯„®WªÒÏ¡º‹ï¿=:4MFkgû…û‚‚‹‰‹oø0wŸøCš÷n•”Ÿûa–¯ Ú  7Ÿ §“ Ú› ¡†} endstream endobj 16 0 obj <> endobj 91 0 obj <>stream xœu“}PwÇw „U#¨ízSwÓ;F@-Ez Ú^QPlªBÚ)­AŒ”¼°C,øÎ낦€òÀ¡R±têõj\§j4jϱŽs§wíµhÏÖNGŸùÙ™‹ …δÿìî3³ûü¾ßÏ÷»4DÑ4š¬R«Æ=~œ+Í¢¥ÙAÒ‡tPú92P1+§£13§Q2š¶îM¶X‚!'צŒÊŽV.\²$~2.6v‰r¹I/²µf¥JkËÕ›´¶À§Ì°dô6‡2ê•\›ÍºôÅív{ŒÖTcr^^ ´l¹Êt}^ت߬\e1Û”¯kMz嘺˜±[²Åd-´é¥Ê²Y/˜)Š 7[¬BV—­ß’cÈ[CQk©uÔz*ƒRSIT2µ‚ZE¥P«©4JE=O…SÓž©`ÊF #èò ™A‡ƒÉÞ’}<3ørHdˆ!ä®|Št0L:"^éï|¨öɤÅ8ÌÞÓ /IÙ¨/ÚÆ @S6—*/ɳ¹šøAâ×O)oê·;Jx¦ÊÿçúLtÓ9òž.ô·ß’Î+ñ_"-ú°=pÞÌcqzì÷„"Tl™Nf|;ÿáÃo¿Ãy‡$°ÉªëwG.\¼råBjÌ|Õ²d>°€"Æ=]ë“aØ JŒr—uÀìæÁÈ]|Ããïý9I³q×nÞÍ¿¶ó¨‚R1{Æëõ}!&-œŸ’²bÙ–Û§¸1>~‘Æù>|í† óp=‹Sn]½]WUuܾœ#ûél9Ô1¤mÉ\nÊÐðÇC{K¸¹ã»¯âpUãHþ4ŽäªˆÍ¢LJæ²-Ða)(µUqÙ. Ø!ñ… ËÒ_Ä÷9ÜeÿÜ~|ïÍí f¶rcÖh»¾ØÊ•5U€1B‘} 8a°™ÖZÑ ª~"ÓÚßÙϿԼöœ`zzûîÜ­Íʯájì‡+œÀxàp?&g©ø@¤½>, d‡ìõô›d–v¬²¶wÔ{jNTsPW]Ý^ã¬~œÐ ýàŽYÀæu•ëËUöÌmkr …Yq~íHß¹ºcŸrmÆS•ãrÏ·×Ô—ðiY°ÁV]Qî¶ P̺M}ƒgöãÔ'2nŠÈüó"é; öW6Ê`óôA»›ûØÉ¤àßÊu úµ€Ç{H³Ý챕ï))ã Õo—³8ùêÈßÜŠèi¯¬jä÷WVWAÙ>]oU=0­Í=—çÂF’¨&Êx6‰ üãß·<‘®<³ýØzQ&ýÕl{+ à¤Ô;’31‘$ŒÌ¸áÈ~üuw}eG^QéÞâR^XŸVV z~ç—LõiöýÛ¾Sçáh_\›É<-#>ècšïÇ›2i‹SÇëD¦ž’߸}\eÃOK§óÈ™D(N|yS÷FTh‰õ µˆÁ„:6Œ¿àq‰Ã‹«¼¢u^Úïà ßñ32LÿœÝ¡ÏZ÷ÕÖ6ðm%žíÇ€ùæÊ?þÝUÚ»ÕÃw7¹ö5W×繫ªqv5m-öd8²ÊZÞØih°»2iQaþH_d©0ÁÈ=diØ­6Ù߀ÍLÂýב=sÿÜ-Œ +ÁÈm@9›™uòìÙᓟü}H“ž¾Ió&ï&÷Ù褓ÃÍu tòÍà20_a¼¤IÚÍ?ÅóÍiÜèËiéÛeo»]Úì]]mm]YFf³¿XHüD.åÒó˜Dï8‰(¼-mÛèZiOya`éÐÓ’È Ãí!aæs ûÃO‹Ø¸ÐCÞÿxq¹W&Í‘ììöƧ˜WÖ,"Ád²éµOî aâ%@YNž#ád&I%«QAžÃ9w¾üܨè®ârؽ‹7õ;sQ¾€4Fà¼{?ýè>±3­“_C®²ݹ·>:38<¨úk|Vºn” †Ð¨Á^ò²«Ëü® ¼kêÎ?êqõ¸¹°N)¹râØ*NöMá&;,ŠI¢BáSL¥¨ÿP†~i endstream endobj 14 0 obj <> endobj 92 0 obj <>stream xœµXiTgÚ­¶¥«ÜH+ÁÄ©Â$šà†€F£‚KPÁˆâ‚Ê"»B³¯‚ЬÝýÐìûÒ k " ¨ ¢âJÔÄ(ƨ“h4jŒ1ËÌ[=/óïmÐ$“™ùóó†>ô9]UïsŸûÜ{DÔÈ”H$’88¹XÛÿš&¼-&þ"ìexlð0±b;òÀä7ÅЃñ(ã5´ùuJ,I#RBBãÂý"->ð¶´°¶³[0ÓÂfÎ;‹åÁ¾áÞ^R '¯Èß`¯Hò!Èbcˆw odœÅ‹"#CYYÅÄÄÌö Ž˜îÿ‘åL‹˜ÀÈ ßßðh_‹U!ÒH g¯`_‹¡ÃÍzw Šô ·p ññ —R5{¹Ô>ÄaeøªˆÈ(Çh¯Ø]ëâ¼|œ}×âï¸q“kPðkÛ¹óÚ™M›9Ëœ¢Þ¡ÖSïRŸPïQÓ¨ÔûÔ&Ê•ÚLM§¶PöÔ6ÊšE¹Q+¨ÙÔJÊŠZEÍ¡¬©)[j 5—šGͧœ(gj<52£&R,õ5‰z‹J¤hjeJ¥SVMj$¥¥ŠpÑ'ž!.¹ldêȇ& MZ%¶ôH:†¾Ä¸3GF¹Œê½atËÑéØ ãÌÆ˜š›¦™¢×æ¾öËëa¯wŸ1þø„ñ:Íf›µ›=˜x–Íò¬‹ 75„ƒyê…‘ð¦a›Y¢ÈK„DPÈ3öbßÁ§æ‰»BÂÖ*)}A¥‚ýÐÇ¡NÑ3ö]=í•®%Ÿó@•[zM2G¹’ÓØ:7  Ÿ¼Â9)]­ºM¾Òסzø¢5‰ V :1øœ 1ÚA/LÖˆÕ¼ûÅ”ÉÂchˆl–Ú‘ÓÁwaj £üY‚''›Hé«in<®¡Ý“a yHª—Ûbfåt`V⨠u¢OŽ\ÿõ;<]ë’@^LdkxSÃl‚ã%=:Ø$B“ï 7Ø0²Q’<'b^ ž,†¢úý}qÐ<^‡*¢$ó’ƒfps\2 Þ$ zš¶•ã÷$ E˜ vH5’á^ÔýÖ‹^Âׇ¹óË¥¿ß£Q"û¬ýÑ­(s¸Ô̽éÊH«“+4šÒúÆÐÏùR«ØtN‰ÄüÖ Rƒê44B=|þ’¯1´½¢¸•TeFªê!?ÃUmÒ‰…«ÈÁú?”¤Fõ-¹G <ýÐ=‚鹊’V©ÐOŠv/.wl÷,ν,w¼½úÍex )×TxC¦æW‰öw¡¸.1º#|8Ô²ÔØ¨”4.¨6(oAqœ¿ã¦dh à›C¤M9\*¯©J(‚Æ3|»­ãö¶£¸Ì*ÈRf)r2AL2dÄñx2E¹YYÚJ.7Tåm;z¡˜_OöÝîÝÝœRÈû7…æ9–çÙ—Áy¦I{ô!åÍRqY©ù L1äVò¾NÈû–-Ôˆ~îG“ub´X˜Æ¢)z<­‹’(gùϘ#gb¾ÆM4߈t˜HŸ z†<";³Ê "¿ ¨´\»¿£¦é®…ye¹c:¤¦î 5^T§ê&²¿Ÿ\t~ø¢Í§Šhf† h¥AíDAPÕ‘Ãó¿iÃàSSÐГ“_íwØ÷20ˆ~ñ ±ÈlÖX¼iG¸W ¯re¡ TÅ5­GôÝÀ4þš„7},óŠðçc‚¼ƒ¶+´Ä×ïÓBûˆ~g¤peHeïïÃfؘ¹ÃÒ( [U%÷¹F½Dª°%z 6/iúï†D0J±§¦j@HÖ‹Ô7Å‚%ºÏÖ_9–¥†—œÜCZ €ÃTF&œÌ”MŹæXŒjÓˈgMªk ád˜Â B†ºè2|Id”!ËÁæS@‘™êëLPlðÐ’ÓR[-“úô;u¦£ûR™’Õ2ÒßíÕ‰Zû=1úAÂ&ùÁ®ˆÊøšju™þÊÊã‹ð¨Ùïmî{Kd‚ÌÑØÂÂ4§(åIr>j…k°+0΋N¡™hÑ×=m§|ªyÓ°/ñãk„Êbo˜É¦©•¤D[ý¦ÇYt(ì˜9äø§†"È©WŽ?ŽÕóÂá,¥ÿstNrvjL*$!&¯eLͳoJ^Iyµê+’ôðÕovà`T¡&*rÓ豕$ ”ÊÔX,üÔül"EW]£SÆñRÐÂèh½g‹39&ó¾%žˆÍžZ¢GzÔeü*MùM¶„¿Ñko°¤GòĨˆ€]ÒmÀ„aªm¾^Ò®ÛÏkšÚ›zà"´¸í-‰']Šc†rÜ0©jë1Š6X³)¥Ê¬(ò´YRÉa¨…ú4fð-ýï¨èy¡š.HEa’ðÖà#ó¢Ä,e>hr²TŒpÖñ§CìØLØ›!l˜Oa‡”t¤‡[ªFC&õ¢X0C ¬Nê®Oð8,±}¿ŽÍšŽÄhL¢´y9é©D|Ø‚#½€ñšÖ€–ój:KÍ ëU ðwÈÃS²I…ªèjÃb1Çø?¶ ïXäg"lOr—%ž‹½°š­‘Z>@¶h'‡oã‡ìTlþ=*D Äß{ò½=gàR<ÙjúˬÒYƒú n¹N?#)" n‰úûíϦ?ÀoóøáoœjøƒÇß%´h„»/­á%1HÍ¢Úáü÷D‚æ6ñô,Á ŒQ{i‘ëéo´H¥]¸†®ê&8 GöXP;óðÊÕ[õ©m{šùCíÇ —¨ùUÈ23dÌ$%UTåꪶøìIHä‚«JIÀ³þxõG.-~E)|RBœ”¨ï†–ð‚ŒûvúÃfÕôóüÔÍÚ´s뛸­uÛ`8CÄ©eE)jÐBe^eQó\ÆÚ‹ê*訬çÕúÆ"-0`ZdìŠåc¥Á²h`ê1bgØwŸ-Pj«ãue…ð0÷ Ìýdé+‚§O´– zFƒN#Úùø­XX„³Ï«o]‚[Ì3lr¿Çá“ÿÓê!Lõpï_‡´Ž¡ÁÁäú¾Ä[WÁb;âYžÐy˜/Kïkó 0Yé2%Ÿ±^ºv‚ìXê)e~úaymZOfspSrqXý¦rfV K ¸\ÕP¢Í)Ìj 0wÐDÀ3æîX‹ßàMQ ñ7¦™=!_{a­‹® ‹Š ®‰­iªªÓq˜ÃÎd¨/¦“¡®ý=:'‡/†>8ðrÕÉÌ=Ä #ÉX´“n]/êíC×ûÄÈG˜Çn-uïËÌgg.}‰êð|Ï<ޤèÌ¢—Ñ ¹ÓÆÀ'Ï„}iÜnçíKEÆh u@„>½#6L1,bŸIâp„‰NR†l [‘ q»(PhäYIÉ êé@H´äü¥’fÕÏd9¿@óþ´%”à= µªÂŠœ•Ô@nPè_†mŒQ×N°ykÈ Ñßê~Ïb‹™v³Ö¿ÛŽ8aâ+¥%yͤÄíþd„¦4žŠ˜wâo£É?r‚)}áÖP´ S¸™’ûý]¨B‡{l0inð²?¹½ö÷vv…¿høÃRij8óÇUÕ˜Y ^ÚV‚×ú½>‰·\uëþ_7×ÿË–+$Fk oiD¨€ì››Ð,Ü˸ã?°ëžƒÎ 6À ©ßÂu2'ÀLÏ·o]qh鵈“$÷œÔ÷µÞTý} Ùo°{`MU,%Ÿ‡¢wáFŹÊ+'šŒÉ¬/R=¯Ô…Œéjø–&;ÇâëbÀøt^»þ/äšuX¶²b¸ˆÐm~ï‰iÕîÓuÌ`í/O²å‚¤’zÕ3ÛöÃ÷P?TIm+'Ë”ñVŸ£$0 |gØ!hÑTÒuwä(ĆרŠRb:¹LU|y|bzZ2éþ<37=7#/c’14éN*#䚤CçkÅ_¢P6>6f7x3sï9=¹r^üWuqÓ×p.žU}ÍDIKüÜÀ Ü;¼ºõ8wòAËíÁûÆ•m·’¼ÈÒ¶"_n¹ {C2!=3•ñ ußå¿!È73#^;½±­køî9ÜdŠ”ˆ±s^éúÎŽÂÕµ«8UZ¶ÑŸä$ü)˜³—Ùè¾”«p„¹ÓÖÒz:gnÌ;ëèn×R¶}Χ–—W8mpN“’å6äá…ºœÎúƒ|Vöɳ… sìªEˈ];hÄhK&{1ú46*,TÕX^œŸ›ÇeggA0*HÌX¶Þc'Ÿ)Wö2¹¹…7Í™¢ÛhC¯¨•ŠQ ÚÀöâRWcšÅ;5hDôWô‹Qc4»ÆMÒ­lŽ‚=LPd8ÁÇtJH„¯> endobj 93 0 obj <>stream xœ•VkTSW¾1ps ¨ÃØ«¥Õ{™j[H}NQªXK->ë£@‚¼B0 ïgBÂ"ò”gä!ˆ‚Zu¬âƒZµ¤V‹¤uÆVv°¥ÎtÖŽs:kæ$¨0Óù3ke%÷¬{rö÷íýío c7Š‘H$¬·_@ÀBëÓ«–—$–‰£,“¤YD´4<^mNRp²kž8öÀoñ²3¦ŒÅ ¿a¤I”Fï­ŠNP‡í ÕºN žæ:gÑ¢3\=Üݹ.S*ÔaÁQ®~ÚP…2PK‘®ïª‚ÃÚש‹CµÚèßÏž7+P©™¥Rïôœ6Ã5.LêºN¡Q¨crוª(­ëÚ@¥ÂÕn–íÛ[¥ŒŽÑ*Ô®~*¹BÅ0Ì+Q*µF,W„D*Ý“æx¤¼>wÞü ½±xÉÔiï¹m›Å0o3þÌ»L³žÙÀld–3›oæMf³’ñaü˜µŒ3³•ù-3ŽÙÎ<ÏðÌxfóã¼ÈLd&1óãÀ,fœOf,ó*McÇh™’ñ’úQÒQa£.I—K/Ù½f§·ûÁ~¥}«ý,°½²­²VnWóÜœçJ8½ÃWŽ«»œÆ;…;µ8ý<ÚstâèOÆ0c~giciv™$1£¿YjñÁüàæ“‹–½¬Ó Í– ËØ¤ho€ ñé ^¡[Ñ­­Ñ$¡;Ð{øÌ©òhÂeÉ*º«ÊEœ>bKãe™°Û$¹`F#§ÂHÇÌü‰p„›ù*CœÜEv`BfóÞ~7|sõêW}çºû½é-Aî4Ipº½ÿ,ÅX\㤯ï¡'ǫ®ÞXÕTŸplÉìõÔj±YvHW. ›¢¤˜šaŸh&K‡WX2ŒðwÃ{LXb’ZVX\ùrh ×f¥e~(Uƒ8â³ tÖÏIߦˆçõ½i°…Û©PÎõ 6~+dUd—F§u‚è!KUkqÕîæbáløE¨=÷¤.ã°¢I n–¬(õ)Y[ ‡¹šºÖÁû»# B^D=”×uÕâš.Ó_k$8ÃLK1Þ"áq.[ÞH!« Y$sûÙj¨SX o,”%G=ÉüIqxŸÇ—[*Å‘ØÙ°Suüìd:»ípàžhÚxÒ©3É82æÁ4uîx]c“¨‚ø„ÿÛRœÀ¯Û¶ØkÕZÓ·÷L¦žKg7C“5º,%pIQFsZ*"Ÿ ÛAkÛ?SvªoBpô”–hMôø<耺!UX¤×©ogQ7,·lS$63U—%옵-;2'%79K+ˆm>}¼©¤LøÅÍC6\¾½ÃåóxRÿªÝ‡˜o–~Ùͧ¦gfAÞåÞg[‹ ÛÄÙÐ Ðjè f{®ô_imêê¼Ø ÷8tx­8‡ß{Îÿ¾ÜØPÑZšµO_(T9Öx¸þžm –­ó_»é¥oû¡òPymÑ‘‚ƒ”-Õ%'))ïÊÂÄr¨‚ý¶œÖ@çšæõ^nËYxDC.%2>ä ±å,6œW­WÂFH´­5 'r¸4«Èš ¢ùúîúSâŃpj8›&0ó®3In>Ä Š¤Ïð;ñæÿõ~î© à Ñ`ƒÁPP yyÅô9ò¹úøÚ¨]ÚÄ0 èŒÿôÝw”Ý‹;„ÍmçàS®Ï³›°ÄÑ{ûòˆÚ„ FcCeöžì¡åÀU(î‹“ yrvHh¤¥VåD伓˜ ‘œU°‚­LŽõÖix}*ä@,¹'µ]À¼WÞq;Z=ìIo?êöƒåøˆ=¤/ "Y5dæ¦Ærdî/,‘øÀž< Ñ®6á“ä®ÙF{¾å8é#e?®ËI,vµUä û*¶}\ßÉ•¾ËV¾½0hSeG¼˜Ÿ_XåÜAM•F»+yç¼»oá(÷Ó=”>zc€8DfÇì†"Ö›p5‡»XM#òø=_¯ýðy/­iUV‰>+3+ Ò8u•¶¹¹ÚØtN~ÁL$“¨a¾G²ÐÑç!Ú ÞA'”zÜ'ìÜ [3?ŠÉë¼!ÏùP”]@Qt]þ¸§çÒ;K¯YçíÒ}9ÉÙh9h’œ0L»ž£<©¹‹K‰.íG m‚áaí_:î]À1}·Z[‹ w@)gM„@úÙ*â!ÃzÛÒÄ‹ïËâAC'\mÝN™& 0I.™±Œrįù+5WN‚‰ûjA?E>zþâEsPR–-,{ëXÊÍ|àŽãqüƒß÷®êò®â½Nž=sáÔ­[¶mÞ°ÝK$ŸÚ-XûÉS÷…þþîõ«|ýÖ-²/š>šDÉY3Vß•Z^ÁZ>•Œ]âîÙ ±åCa)Tpõ µJe|lTÀ± GÇÒQ¸3ˆÝ©Ä~ò"z Þ›ƒì7çþP°W /—ñ^ë>½uç‹ó_þPGÒu“—.²! ²¹µ«·­´ò$¢ð%œ‡/Ip ºJñ.þ‹?Ñ¬Š nQµmliÞ"ÿâÓäj­*5óä¨ï$–'V× ^D®K}ò=¹*Jž\¸ùrŽõijFKh¤Ë2WŠoX¸ W•ì-+£Km|E|zVvFª@n“`}fŠâ\ ¶,£øì#Á/ìÓïÎ-¦³Ÿv%pÕÕµÆÔÂô½Öü໽·z%í–-R‹?ðÅíÐÞlL?²)Á W´C±ˆ?“ü¾£ÐÑ®HþÁê ¥fhõ$ãc-í;/ª¿ÔÎÓ÷f擃œýp´àæ1ó‘/Ntœ=TZ˜W \™¾JNvÉ^Rˆô·µ®¨ªL>ˆŽü‡•]!Ù/†ku‰)麢L¡]Ý©8¾ä ù*ð·P*òÜR3¬f›RœXÛŠt;îµdzìB=RE!­{ÌñÃýé;ÔŸÿô‘…ë[ôÑ»n]¬nÞgÄŽ¸„‰ë•bÖð(°%4+ H‰€"[ 9(Ò"Q–NåíÖDWl:ÈÛéæÒ0Ò(¡Ï‹O.¾Ã·ftû§ q±öšV;ÒÌKT3ŸÿZ2ctÅïBô*fI|Ìä`vìTNÏ™œœÌN£æßõØ¿Y endstream endobj 12 0 obj <> endobj 94 0 obj <>stream xœX TS׺>1sDD¥= ­&Xç q¸U»´VQ±(*( ‚€L2™§$†y& "`QнHµµ·j­Zõµ¾Zû¬Ö{[ª­>úŸ¸ézo𶯷÷­»î:° ä?Ùgÿ÷ß·1VÑHĺº¯ôž7ßòë4áu‘0~˜0A d÷x«(³‡5ØŠÁÖêÔøWóìñ«1˜= wŽfÄ"QxL†køÁ¸È €Àh§éûf8Í[²dÑl§ù..KœV„úGíS„9¹+¢ýCÑôEˆ“gø¾ ÿè8§éK££¾5wnll¬³"4Ê9<2àí³bƒ¢¶øGùG*ýýœÜÂâ6)BýÏyð‡kxèÁ˜hÿH'÷p?ÿÈ0†af­ w=¸*Ò-jMtÌ:e¬âoÜ>w¿Mþûƒ<ƒC¶‡zÍ›¿`៦ÙÎqf˜7˜wf2³™™Âx2Ó˜­Ìtf³™Éx1ÞÌJfãÊìdV1ÎÌjf.ãÆ¬aÖ2ë˜õÌBf#ãÎ,b61‹{ææU†gÆ2ÊØ1£˜ÙHÆŠIa¾­}8lñ0ݰÇâwÄÿe•hÕc=ÖÚÛºK²Wr—fïq¾ÜGÃw¿fhs}„óˆ>Û}¶'FnùÌnªjÔ´QïfGÇ=F>Ælÿ'ûNû«ö½‚ÊÎüLèbÖW‹„=æ%|F¥úHD‚:+#ŽhûvÈHu¸*R• 1ÀÅÉ%GuA#4À-¨UÿÙv’‰/Ê).·Ç: Ar™¸XÏ‘KŽëz¡ ŽÃOP?P:›%„9ÒnM%vfk0 6FŠQ„{P$Žá%þ;ß÷È0W÷Àw‚¤&!ËÒ­åìÇyà'#7Üäl­î38F¯—ë»a‹Ìö\9iˆZ.% TÂÚ —2[…׌¢f´Åb´ ÎãësŸydÑÂId,÷xÎÃEž ½”èÈfžŒ~¯ þ\Õ*«9}¦Ò@ëÁŠðêðn1ŽðR;sO² ½ªq½}M¢q¢ í›SÍ ùZȉ‘¾ãêynmÝ p$éÄ™L!û‰/Î 3PnÈ¢ÚTdj§¦BŠF–FfÞk¬‡•ž—Û‚/Jᇲ[]¯ÜyZxîŽT4‘Uº´(®tu2 "ÙnÂ)Fa\«è9ÅQOw‡'È,Þ ·Jêc:#?'üüNE©óCòº‡wlð>Ùy–¬ø;®ýùÿš›ÐΟ<×S~ ¸«—<ˆ™âê½A.¯é ¡K>£}ë5‰p2¾"ŒÇñâ6óJ^Þ×ß;Q.,aq+NÇQx•d6Ž"2âñË8^èÅ™ì¸tÒ«Ñ·j'ÈðÃ^»w¯=08;aï ž?†œý0†7æá.MLɈ‡8Î×__o¬hïö:æ³4ÈM‘Hé!–Å¿§Çº‰Føêz¿µ3{QŠ7Ò¯s–'vÀ´?6æe|ÿCúÌ'Ê%:”ÀIè‡ðÞÀMÄ/°ßçï])ëÀ&…deúÞYҭ؈“$¸êW–’‘\‡ÄNx7Ó(85‰Ú>Å„OÅÂHa9_y‡3ÕvXš­JÉÈR…—ï×JfûŽŽiÎ’5d3sátÚéHPpo»€Ò{cyo¸4³Z£N ªhaÙCQ–§ƒòjéѪ3ïC%8^À1Åèx.Â[)óm Òo+ÜPônœã®>Šõ«#uRmR¾…È©•Ù½à(7}L‚ý 1ç£e&Æó_˜$Qj'†M°6éè–å8q Jß›’ª€-0½Ôý–ß™¨¿Ú³Šgzþ9 1ŒýÿÉ~ínYO»¬%øƒ¨àŠ¡°\f'¬£Éšpyµè'JÛ‘b ¦ð8ÙD&£§B¢™î3}ºŠ;ð%if'Þ‹þìvçÅÛÒ…».4,ä]¸VKGÏšâÏuÿªØ'lâ_²Á›]¾gÓ²w²ë/Hñ{–¸ýÊ“TvÚµ°Ÿën×&©ö- ®Ð[›X÷ 8%¬¨T¼9ÄîI.áQ–AàM"!]°ãóÊró/gbÔjð…ƒ †-ŸÀ6Ôdeh@“•*#ÃI!á±Åú‚I­^M‹Â`3D ”]fqU¿}Á!]V-8–C¾® š£¢3¸‚ÙOÉçUää}hY!Lt¤¡gd Þƒ$ºBvªì RBXl³þÀÒyº€7}ŽU—Øœô#I¹i9™…QjU†Fµœlv VYê£Õkh}0ø@èP=Îé“—›QŽE”ùÕ}XéÐGÊ b,/k GŸWI'Ú”iDß\hµÐùZ^ŽçùÇ+?&=‰MÖ"Åñ¸†¦FC[UFe|‘ÔXPUÀ}Úî¿D¶%óÉ‚½Dì‚\ìõÏßë謖íùÒn‰!j i(Û¨…r¨åˆè"?gQ\ðN_ãÙo‘iþሔv€Žü ÚÃGÔoб¨¤ ÿ+p4±ž´ A^9„bTeÈÊ f§VËΘŽ#­;^î8¶ ÕÜdÑ…l¡1-91#c18ÊÙt:h¦2ÓÇ]ðòHž´yù²§hbòºµB.©Ó]£bÔD•e°j5;ÈÙ׌¸­›*YÄÚϼžÿ­ÿØÁVTUT•Wwo¿ršª·´ï>NÁ s‘ »ûÊŽøð'ίì ïòʺ=°%j¿,ÄgWj0¬ýçk(úÈ.£pÕ$ª±àž.Œâõ¥¹ùW,< Rgÿ_&j» I¥ÊÔ¨,LµH£¥7Eü[Y!½ÿ¯EÉZM 8Ö¾V&|ÉBV{4·RW­­¤êo–e”%á°¢XRË6€êTÙZ ÄpýoR=,ÌlEÏF|{0¥= ÞÁ×꡾)ãÎî.™¢Ã³d3}L—7§{âôÌgá¬3}e‡!3A£JÊ”E¬_§ô¡S4øúEY£•®]{ÊÐZuüD ~†b«ÝÁÙá÷SQ4RZ?h‰¡K‘˜Èˆg’矔‹tµ^z85-”ܾãqGkZË:Û:V¹±?á¤SVÈo“#„Kd÷qœÿøÎqLj5ßè>ý=1ŽÅõü¹ˆ‹PfÔ ŸßèkM.”5–×åVèTY46'qÊÒCG–VêâŽ+ä¾Ê8¥Ô·Î¯À›nGºõíÕ!…¾A²øCqT¼åµû Q™îѰ…ó¸º7â[÷ß¿óÍæÆÈb©OÝX@£ù^ÈÒÊó’Û¨XækËŠJ8¡çÂõ³gáúƒà¶{7¸-”]$>ü­I^›izs¸Øvå2”É^†n /ÿ wOݹ*Ô¬~üV‘>ü·s7^¥-ºÄÉ––ˆ1Ê,æÛ4ûù†ùû7µŸ26·KÉ*²ŽÎť߄¸ëô„q ® ¡ï.̲(g²ÉÌž}üo=cž°‘Ÿ^£ú J¹nã¥ÞÞ»È8ƒ4G šª¡øƒ¬%Že¨4©iRùÎHÃŽS3©LZ>ˆÖ¶î*M”÷:–ù<úiL±ºFY’ÔÞœ\¹”X- ²&œš.ÕTBNìËHæ1É´Ú‚BiQQAI}ý‡»ï%YÒµË'}}sDDõ²—΃>}ã×häÑþ§â¢‚ëû‰PÇÂ~ˆÏ¡ia‹ëTéÙ™ÙÔ~Èz2ÕZ³ÿ¼Œ¸þwà_cË‹ËJj*q$qqÈK§3«áRc!Q*gëtŸÐÒn(…ŽA_J€XHÑ&æd礔ríz»{ú;ß\ìæÀb7m¡ùQšÁ<‚f@3ÃëKr oWa’„¨]!Îýª—;©¡úXJV¢Qô’!Õú¯&I°z=Ãtˆ¨zÄbã/# b 4å–4Sª\Ë~sÜ;ø-6M9ùØï<±šºkMp‚4áë5e`x¹+}¸ù`(úòüå“51Ëþ Aÿ…Ön¼•fÍÂÿðy•:ý}‹‹î Ib µÇ•5ÔÊo Qêì4YÚ¿…¬B¬¿³ àL™Ce÷Ùv ý q£3IÂÔ3èàÃì!ˆî³˜ö §Ï±ä+š¥òôå¸RP8 k¿BŸ0ð×*8’›WE=þ.ÇÔY-ÂD´ã3Ë7ª!Xºb[Îë‡äU’У?]Âõ×™œíÐý7tÑ«oˆd‚EØmð :v›DÑ=ðU± Ã`^!Q)3<§¦g,ƒÃT­æJÚŽûeE(þêÓnøžC§›T[¬gn˜½Ýt¸¶¹Õp¶#Ä’+=}¶'×ÜãÎw\—mwõ•ËH(‰MM£DsŒ[–L>} ¥hâ>¾ÚÑ*ú‡¡;Nc)Þ§q&ù쉄Q®Ëiñ‘™ Êš¡‰kkôU„…)æ>ÝF—Kî~ûô½ÈïÈÜé7 ùîrw\/±ZâñÖŽS GOT­MmÙ•'íhÿôÀ=·ÐÐìÝ4=EE¨ýÕÉšXM¶:SÍÅëÁ’V(œÔ,,ÿ ÁÏ-²¸çñ½¦™Â I½&72N ‡“¥¤·ÿ]k9ž$"’³º'ÐJSÀ“¡0“šµΓ›wyÇàãh]L?”9‹á–C…³Pη¤7PϨƒàZ{sÕù34Éâd²R¥»v¦xRvùíªÈЩt*à’!5^F:©¥Tê´…ùÒâÒÖί)Ê0g©+L"£öo,ý HÖSrº¦5¢aè¸] ï.ÂèÜûG£ÝâdÂ>Ÿô`¹ŒÊ \AEù>.´œ»nðêeÜ=÷¤¥k4Ž´âT}éO÷Ññ“<÷<àPÐÕXY–Ÿ/ð|qþÚ,‡uô£JòTØÊg“ÉOY}m OµBl“4$5) "¸ý Q-Æcµmö|8•b6;ˆŒ”NýÕf'7øW³õzM ŒÜù£÷g ë\õXTŒ=bºUücÒ3wÀh¶3YŒ‡>°¿!¾¾ÆSc—\,xàÞêÂb ÙÇšlP4Bjcµ¨ÚvxK­-ŠjmGjmíæ6}0· endstream endobj 43 0 obj <> endobj 95 0 obj <>stream xœ•’[LÛuÇÿmYùs±nÔf©è¿'Á²13:[²e D”ÚR ë µ”[»Ö^ù[Kr¿ttÝ` J¸¨°%’¡Ë2—‘¢Oꃗè~øó`|ðŧsÎË÷û9ç|YXc±X‘’¼‚œ´Ô¿Û:žE?ǦŸç€‘¾µyfÄr 6bxëç8¤Þ‡JŸFE{1‹¥®µHÔšF­²¢RGŠåIdZffF2y455“M?%(¶‚ šqƒ×p-0ä ΗŽç2{s€I¯äü€žùî—n·Ùk¶S”ÉLœ8|Ô®¼PZþ"ðÇõ9ÑØêÂh¼jî–ýc¡ñ¡¬°÷kd rÃpÏ5×ÿø¬‚Ÿ-ŸÈ=À¼˜Èd§Í¥ÿôßúgŒ÷'‚í!O@ÔâL£W~wµ>yM£|É„‹" ¿~S0ÅúñÎÿ»(³oÛAÙmõpYøöXù\p àï$zG»¾×NHlV°9‹VŸÝ Uƒp7&Ý-C"^­–xQ³ÇÇe¤ÞÈ‘èµ":"c 6Ê׋azZÏ endstream endobj 10 0 obj <> endobj 96 0 obj <>stream xœ}” PwÇ7vWĨÕ=åjw£öTPÑóQ­p§à£¥ Šà¡ÂÉ#|ðÒ„@òKbA^cÂSAê¡ã[ñZZ±ˆíi;õÑR¯Öëùèx¿¥zs+honî¦ó›ÙMfþÿý½>߯Œrw£d2¸*0,p¶ßóßoˆ¯ÊÄInâkrÈH÷/9x¹7Mò÷ VÅôѸq %—ÉÒ² ©iÛ5I ‰ZåÔ¸iÊÙ .ðUÎñó[¨\’¢Ò$ÅŨ•«b´‰ª”­ô'Y–—¤ÒnWN]œ¨Õ¦-š5+;;{fLJÆÌTMBÀ4_ev’6Q¹V•¡Òd©â•ËSÕZåꘕòEu3_¼SSÒ2µ*rUj¼J£¦(j¼ziêò í¶Ø8UhbRغd¿ù3fRTõ:Jý†ZG…S‘T D-§fSïPïRs©yÔ*j,5RP£)NåN騟d¡²³nénWååî#ܳܿöXãñˆ ¿eÖ1NVÉa/°wÄb…8.1Þ%C¦¿hc¸hävWa°ÄKC;¡ìzvp,£…ˆ@^Ã4wZìP 'M.ã¯×]L œ?$àLy>ö ®,+°B xWAéAœÀ‚ó}¼‹É2E³!¢Ì‹tIÃôA„V gÅ@4ãU¶5ËpÞmüç#¹Xˆ?rjo}7Ùþ©__óƒŠd'}ÓR :™cAŸ‘,N§‘Øÿà΢›Ä«R %XƱ”žâqý¤caزPâ!?£2¹§gæ- Y¬Oo2–°NÊ<:·NÌ«“½‡ÿº'¿”>€ÓÈHC¦’iÄ“Œ‘ž>8Šxâ›RŒBOôá‰qAÄí2Fb(Ò§{®¡G$ !‘Ämm Ø$5sªO¶ÈpN?nvÉ<sƒ=?×ðeýt«õ´A܇£ÅÒHš·2¾PÙ* éóý¾äy‚ ÷kèyùÉÓøXB·æMã,h¯!JÖE+Ĩ\—¨sÈΞÅÒ³rq¼hæj lW¡É”™Ã »rŠ UÇ¢öÅë÷Î ÿ°Ã[÷å M)ö¢¿e]È+7ʲÕ§ÁÙÈøðåéá{Z7óѭŧMõ¦2¹Ø<ÐoÈ«ÌNЕ—˜ÍŽjÞf+¯ÞSÒ˜~Nû1°ÿðæçÝñí`¶ßioϲ%–Z"í;Û ‰=Ù~ºÇí'#þ´‡·è¡°ØJ°â×lÑÒª+ûäâqÑÆ æÓ¹ÄßÃEïÅWìûQì%+l)&®HšS–†n³^v)®@Ûó9¹²˜€¢ŠvA¤˜V¸„”c·—>Ž ‹>½ÜƒÕ:ж§Y Ó`î²8À í¦æafÕ …m5¹•d¦Ô<Á×&¶þ¹­¶Ó̺1Ù¤4ˆ¶d›‡P­1Vé@;tùzÝâÉ}‘Û½l°Çj«Ê ]1­6fIWâÍ)ÃtwAYaC<òdíDÂYjÕÖ¤wŒÞÆei2×Áa8i¬2 Õ‘m)¨;Ô–UÔ8š;šÞ?ÜÎ*Ä›àÂL4éy«oËűxˆ»Vu¹ºØîeOZ4t­0V¤™XCáJ^ƒ”÷^ëý8øâ‚ Dâ2®ÝfmåÒ÷«ý3Ò—¾.w§grwë½u…Ÿ0N4XÛ e¤½H(¸$-ˆ£r1MTqYŽ ¿—<À‡pd$ñ%Rß’8|ðWŸÿðÕ^(Í+€Â]&A?y^È`#‰O=¦¢g9;oÜ]OÆ,zsaù‹½£?3L¦q—ŽWˆ¤·¹0¾A2>ôsÉűŒ\ó²'ù‹žÄ(¦#<4ô2*c#/UC½¨yU/óé¾ì•’J6jè•ùÙKøe¸êø ,Ô%VÙs‘ l—$y¼»%èæÞÃOåâRü„Cޏõô“¿"“…AÙÿÚ‹$ÏOḟAë<3˜cÅQw3ÅxzØiÓÄ-z3w éà âª\C­é$ÊðGt8Ÿî°•ôHV¨6­5fB&„YR†ùúï=2æË«¸dlfd¥¡¤CÀ`Ô‘à_>#ÒÌ/æPàÅ—Vß'ÇqwÂf».O2­7¦C:¬·$ ¿n3Htg6 ARºó9KÔÁ9cËpº ƒí„$fÌlðkõ}„÷?’c±ø7÷`Ö'p”½v¹û.òçß|£Š·äá¥ü1Š©…Ò=˜òuü–дú¨Nð&ìœßNn‰®ÌNmhÒßή)ª-®)º’k74'•è›’ œ Šô‹YYvbÿîÙâ¦Si¡ÅðÒ£61;@_Qj±î-áý¥Aýñæ§àc¿|üì‹ß·zÉ—ë¡Y$Çdø¸_>=°ûi½dJ¶S…‹íu8@#”ÅZV r§ðqÉt‡õ œ”â)t aÇLªAt2pö9¬å–Fé.úÁÁô*²xÈ•Ëÿ3d1#8 ­{{×¢ö½axE†9S Ÿ í)ؘ"yK¤%áÿ± Î’”y:Ó10Ñ!»|]’èðßïþtK¯êƲæwa,KÚ¨^“³È(Xnñ~Àyß~ýa8Ÿï?õuÛg{ú¡%©äï9²æ}ýРס§â²ýQïþV©ñÞ¼C¾U°‚ ÞÊÕO½ØçÉÄ)Ž;ßt¸d]ßàÞoä8oq´ãä†S®NC¢“Ï‹…èdgŽ£¦ioÛ¥Øs3ÉkD I ©BÖÿd‹ÞG‹º×v iuª¶ð6Äçna%;éã‚ ¹»°&§Íðt°=þä;{'¼×ÊÜàÓã¶¥¦¦G<¯e†tÉêð°»0„ë"‡×0 ìƒg²gÏä˜xžkÌpªÕjµ3£±Ñélä™±¢ ùŠÝìÙ7’÷t_`÷á*ñòê«õEQÿ §ÚÙ endstream endobj 41 0 obj <> endobj 97 0 obj <>stream xœ%‘oLuÇïh·Y»Í¤ºEwwFAHëÌ´2§“Ô™¡pD3Ât4ôF[Vz”ƒ¶(¥Îrì¹–¶´×Öu–2,A‰‹ºdÆøb&f‰qoŒ›{µ%’h|aÌïÎkŒ¼z¾Ï“<É÷óý☶Ãq¼Ál±t6>òã¸üD|@3¬ÆŸ®tÚŠ¢<‚\{ÑÀntz¦Áq÷8ov³~cÈÎÑ̓-ôáövS+ý¬ÑØNw¸cÐ:B[¬œqY¹Úržîu:ÎO7³s{ôÐ!¯×Ûfuµ¹=C/·´Ò^g§O1cŒg‚±Ñ¯¹G8ºËêbèmsmÛÃìv±ãã¡-nãÁ0lÛíx騋öfÄ^Çö`°‡±†¦Å6q_Ãïש›”½ ê;«¨µ$,áòó·4WU½!â˜åÏ1_$13O•a%¾ k°.| ×uO%rP”B0Õ©töKdJ-Q¹‘eû&ˆ@{QzfëÔÍã}ýC6'úv`á¼ >[ØïwºA BˆeD±”$ ?¯}D!a8!83Iý4¤ÊååK}¶º’*qå²½§Ç©6øÊq¢ßyˆÎÀÝd bñ,¥WâãŸ(/,áדçîiŸ|Ò€ž{aj‹z^eU¯:¥EÚ&ô4²£1äF²ÚQ}ÕÐ|âÚ÷u5ýŒvR?þõÇ7¿ñëý^µÅ̪Æfu7ÕßÕÞcB~>H=z¿}ã«´¡ÔŠS9–e}ùÉË‹•Å y¼ª3dWjDåùb"W‡7ú2jcx›3v1A–·®TÖ˜/Àð?1¢"£ï©Äû¡Ñ€&ˆ3ëök[¨1 ƒáƒ(éÓÙuˆI>³¸”Ì/~OéeA/üÓ[Ä¿“ÓÈo(g µæ@$¤p:Èó‡©þù¯%€¸°?˜K¹xª$õÊ%Û‚¼^ÄïÊH£˜ä¨!›L%@úÿO˜>@V7Õ|0‰Âô~˜žJQ¹vØ—ãcBJ§%‰OL'©j ‰õzTQß^@¯ü£Î’ 7=_Øœ^›-Ž®essé ‰¢„(^˜ê°w;T0³µâùÄLBº]‹Ô—d³$å«´CµJ «»n=DîÒšŠºKIÃþÞ1˜¤ endstream endobj 34 0 obj <> endobj 98 0 obj <>stream xœX TS׺>!ää¨(…xª¨ïZ+ÎóÐJ­óP¨X[Q@d&ÂLMvQ™„YêXÅáj•8¼6VꫯÚ×*ÞÚj«ÞêýnîZo$½õ¾ûÖÊZÉÎÞgßÿ}ÿÿí#¡ìí(‰D"_äåí=uŠøÓM.FØ ÿ!ÍÁ ‚ᥧ 9H‘ƒ}È!íÎð raí”T"QÆd.RnKP…‡¨]ÇŽu:{ö»\§M™2ÛuAd*4Ð?ÊÕË_é¯&×UÊÀÐ u‚ë˜9!jõ6÷É“ãââ&ùGFORª‚çŽàªqý4(:H´Åu©2JíºÂ?2ÈÕ²»I–¯EÊÈm1ê •«—rK*Š¢¨é ¢Ö,T.Ú¶x‰jiô2uŒGlœÿGñ˽¶¬Úº28$t•wøêŸÈ)IS§iÞÿ`ýÆIõ6õ15›I­¤Þ¡>¡FQnÔ*j4åM¡VS>Ô8Ê—ZC-¤&Pk©EÔDjµ˜šD-¡&SK©eÔTêCʃò¤fP3©åÔ,Ê‹z—ZA9Q(gJAùQ#(ŽšCÍ¥©_ÊžJ ^H’$ÏíÞµ3J‡I£¤í?µ¿ Û û‘žK¦¹¯üW&©Ÿ]?]?¡¿GÿŽc\s˜ïÐ:°ÿ@åÀëƒê9Ǥ7ÜÞHwbœBœœ+¤ ½âÎàeƒ¯²o±l9{›}%T*‘éw˜ïHj…0)˜…;lz«F¢PJ» C5H²´iYY;P YƒJ¹gtY5jhŒCÁ|Õï2˜EW”Ç¡ˆÈjTÆ?£KkPÃì}©»ù¬Ü”Œ¼Hˆaõôul–á¡t÷¢pÅämr~loóÅ·à. f›Pq ·NR‘‰jP_ÙdmÁtºˆÌÛ¨BIü&XB+N>ù¦õìù"åÇŽÛ"ïW+Ž›h;.™~ºæøNñí‡È/4>žé^[И$­‚ŸNÀ³ µ¬’.ŸÙŽ’ù‘t² EFT¡*~1v› n²Š*ÔØ ²tm']5¨˜¯¢ÁÇ`\*‹¡“¢ÉÚFòïï–i¢‘šÿ |~Ã>2uÌ»ÄÔ=ÄšÀÏäüW3$›×˜!œbÁ‰þ¡Ò+, Ücÿ «•ìµÊçЦcÅ],åp,­÷`D%|m—†V<ßf‘ŽY{çmóúëîå¼.d±b£hXè·nËʹšÃnöGý§7!$8Nûõ­õ~ ¡¼âq½¶(èäêªûWä¢ûHr× efi»lÏÈb¾²KC÷µ €†!÷ÁfÂŒ™0»ðXÞuŠ4ä »HèÁà~Ÿ`G,å-!1Á¦îc 1Ÿ4o GyõØÄFZçxúàž‚&¾S^Ž*CCPl·WÈ]Cä(©ùª,çöt'pxl­b‰qòƬ}¡\W?+Yl%ͰôÞÅIPÁ öçË` §.3"¦²¢¤¶"õØ{k>JXîÍ+¾=d™ ÛY$QM8w_q·¶ ÈÊj,íY%LüHž™a9£æA #è×î}„AîköîdEä`—&ÌïIt±±[aI¼/ÝËfç›&H5E˜†(žÂYØËªóârU»£ò–¢Ï˜š¦Æ_¾/ŠÜžËéw%6öË,9£ÉÔr› ›PˆqŸŒ†‰ßýívóU5¦Jù]‰ù©5=[¾{ϱÙi¡É\HC`±?Ù³Ã;x8öÀËÇ.0à‹c U| г mç+Óß*$bЧ‘`¨š…÷¬â÷îÒ}L›=Ã’EÅtuï¤ÇÜñÍãeȦ‹Mät^ŸîP#f.:g´do‘S½I<^5±úp*CL]bì>ª†÷ƒ»twTÿÙCIþžêž>lâ Jþçôxst§ˆ?ŠŽîk©³fnˆ'9#¦Jʆ}­VºÕ¥Á”M»Õf%²&çÜ2Iª…mRa!A¤Á~ÖÀÔÑX‚oa Ü’ÕýaD_¾o AކV r)GUhÿAqŸ9X`©IR"¤I…â ‚F4J éNˆî./å|½Ÿ•é蜚”ÏS&\ݹ?í LL‹Ù™ˆ¹œ8FGûÂYY›¥ÚªQ|ßãÔÀ·ã·b‰Æ+Œœ¢Íÿ()yÃm*¯H^üB#¼Ö¾Cþ§2i’Ä YDKK‰–.Úœy–•à-]š­Ö–àÐ[áIΈ‹%Õ)K.éx“pÈ$9~ïßjMÙš•ᢣ³ËÓ ™å“ s¨ñõêj¤ámü2oÒ" Òªf§¨¢¼ƒµÉ:¤ß½`Œ eªm‰ Ûý¶=9 C÷çq}þ¦Ã ÑRa+Hغ(”•´C—Ée¥ÄoX€˜Y‹nüõtÈa¸á3”ÎëCÊ5Õˆ©6”ÖwŒD~xþÇxÄtìðó(pþЯ¥=¥{¤L’ÁH8{\±©ÁéQYQD£;NM‡BmþŽjÒ f•å¼ÔÄwiäá±=‡¹ÛK†p^Ø®—ïßx {ç¥ìUÚ™ŸQ˜Yˆ ¢½{‹ró€üÂóŒ¾k;ýÚ‡5ò&CW‘ªš£Ißާ t¸—@¯Î°ÁHs„³ÍÆBþk²ñ4ZÑVP²y8–ŒŸ€øã^]DÇjëê·_,_å÷ÞÜÅÝùèÆõ×ÚVy[yôð"ÄL>n²©“s·!f™5æÆ.ÊÚza´JPêiXÞµó@H‰®¹4æ¶òB¾QÞ7â-+Œ]J]O¹ÑƒM’ f¨&Eu¬b å¨è~ÅoâãG³5è©°0ôÔ£ú„Œñ™|ÌšÕéJ4Í?“ô#£og‹:._¸ˆ¯V¼Ó—À‰ˆb¹ùñ=)ä‹…r /¢o‰¸œ‚-ÍU%uí÷çnœÁùŒ¶VͧøŠ›MÝ©¶Ö·s´Ü;M"q-ž;hE¿Lǃ‡<Àr«m\[—ÆÆk,’4ö/èGÇ—úøl^:ž%J0¡|q¡6¶;×_Škòg—>¹9Dñ÷4ÐÀbvµÿ©ó_œ8qî/Ç6ø|ºi“/?5„ÍÕ¶ªÛóSÇÍΆôúÄ:ÞPXw@Ÿ¿­*sbJ« ë«âW§­Ó…nä“ö‡”oDÌÄÅógm. +Žç˜JKJ‰†BŠT© üÐ2”ÆÌ|¾ÃàçW~hI8³¦–KÙã_91Kè ”‚2v%£,”Z”V¤«@»PÞ®¢¼} ÀWÙÑóŸ(+hjªà%¨1 C37Íß<ºG~ÝÔ–t[ ©0>gÅ{݇⎃¯É‘šÿãêøÿ¸8ö9æ;Oœ!èÉR¢§‡pEÆZñÛ6Q–á+x M N[õ6­x*híëb*•ʘ¥²2¦®®²²Žë½C9Ÿ»%׃®‹“·A-[—õ}šÁøn^9G¹.¯6ó¯Í9¦+Ó•êÊÂ{Ì'Úí>+ó‹š ¸#‘¦¤kÄ}27ïw^ >–z€8²mÏeŒâ©{™aP3:år¶íô×пxbD>—³?«¢×Mµ8àìÄÈ . yu¡q“Òùsf}ø¹Ç÷ÑÄçé«‹vZmW\Ì0´×{ }mN‡ed„ñ å}=çÁ¥Kã+·^ü“·ènÑÝE±ïeÁä²fÇ6ɦÑxž ƒç–=­‰¥­K³Îæ^bsMXw‡þî±ɖ7ÝÕ·¿uúÚ ¢Ê[fH:9^CoÆ$ë³6’Ä?Ó®¾¾>žçþÎÁÏ ¢+yݨßhìxoò“'÷~GîŸë—=šfCÐ7‰cemÚwm2Ï›â3 b}-’-ûë¶J⺣,ËP3?_Nñ‰Ÿ—¹Y¬­Í9¥é-ã—¡Íy˜Ä¾«t_P ªG.µ¨´06÷Ãóa€ø¯Ùa«mˆC ˆ ·>Ž¯Èƒc{Dsß‚d, æa™\ÑÖyôÔѪ¢DOkäñ½Êºõ‡AÿvH6±@O‹ HÙ¢ä’)Ë£¸Ž"5Ñ1Lßë‡3føŒD+ .±°b ÁvØ~t÷Û†ÏÈ¥ØìŸÀ0 «„à½ìžÐÆ€›ù·o:nŒÅ£ñOÜÿ1µ¼g‚3â§7:¥,2¢#¹{ËZïïjFL~E~5 CÂ,I™žÈë²ÐZ¤d¦ÊQ0JN N^«#¢¬¸¬èÈjÝ>¾F’»V3Ø]Ž"‘ß¹¨cê ™§Cü{c½JŸÎã¹è0jd`¦wõn8f,>¨7ö¨l鹪e“}\ëy©Ÿ•ššÍÍòM‹×&ébµdmUYvqùÑüÖ\—ûyŸ4 ÏJ™)=o0§ÏÝ‚z³ôËKlzFV6Ò0¢æà'‹«é¹ŠÇ+9œN_>ûèÖñ#W/~~ }Ç€ƒÛ-<÷Ÿ3{ÖÖº´RCUi]aöô=\ñç§/ æî·§/Y÷‰‡÷ë0¼Ì¢:tÒ·~}Íò¼Ä$’ o/Ï!´æ´·0“Ó‡W¯ ×n@9 ^*GQ(ÒvCIöXzï—Š;ż>AuÌ9­øpÉáâÓújKL¢õ;øh=¶Û¥½(¢‡y‰°x€“3l§•—Å—·{¶%²&> endobj 99 0 obj <>stream xœcd`ab`dddwö Ž441UH3þaú!ËÜý[ö§×OÖnæn–•? „¾ç ~Oçÿž$ÀÀÂȘ_ÚÒëœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*@\§¡œós JKR‹|óSR‹òrR‹‹S Ks˜ùDJ–1v\È¢é·ûGߎà ¾¿ŸÏxø‡8ó€ï}¢ßŒ)ýf01RR|düáË“Gßäø~Îý^µ™ñÞïÌ?Õ¿W‰Î™Û=~ew•üŸlU•Ýåås»çÈý–Ýü]oÁuó!JÍ<6aò„îéÓš§Ô·5µw¶ËýÙû{fUsGKw³dwÓÄ–™­?öþž!1£¥·»¯›cÚ”)Ó¦´O¬š,ÿgþ÷.Öÿ”C,+뮑ÿ³ž­¦ fYñâŸö Ù~KOcß̵™[Ž‹E,­ž‡sól æe`õ´[ endstream endobj 105 0 obj <>stream 2019-05-19T02:18:30+02:00 2019-05-19T02:18:30+02:00 dvips(k) 5.996 Copyright 2016 Radical Eye Software m.dvi endstream endobj 2 0 obj <>endobj xref 0 106 0000000000 65535 f 0000048971 00000 n 0000106390 00000 n 0000048848 00000 n 0000047206 00000 n 0000000015 00000 n 0000001352 00000 n 0000049037 00000 n 0000049138 00000 n 0000060379 00000 n 0000095437 00000 n 0000059622 00000 n 0000089393 00000 n 0000058685 00000 n 0000080298 00000 n 0000058363 00000 n 0000078369 00000 n 0000057941 00000 n 0000076377 00000 n 0000057601 00000 n 0000074022 00000 n 0000056914 00000 n 0000065851 00000 n 0000049078 00000 n 0000049108 00000 n 0000055446 00000 n 0000047390 00000 n 0000001372 00000 n 0000005656 00000 n 0000056548 00000 n 0000061865 00000 n 0000061565 00000 n 0000104187 00000 n 0000061151 00000 n 0000099289 00000 n 0000055542 00000 n 0000055572 00000 n 0000047552 00000 n 0000005677 00000 n 0000010574 00000 n 0000060723 00000 n 0000098060 00000 n 0000060173 00000 n 0000094057 00000 n 0000055657 00000 n 0000055687 00000 n 0000047714 00000 n 0000010595 00000 n 0000016508 00000 n 0000059225 00000 n 0000085656 00000 n 0000055763 00000 n 0000055793 00000 n 0000047876 00000 n 0000016529 00000 n 0000020424 00000 n 0000055878 00000 n 0000055908 00000 n 0000048038 00000 n 0000020445 00000 n 0000027414 00000 n 0000058210 00000 n 0000077717 00000 n 0000055982 00000 n 0000056012 00000 n 0000048200 00000 n 0000027435 00000 n 0000032805 00000 n 0000061084 00000 n 0000056108 00000 n 0000056138 00000 n 0000048362 00000 n 0000032826 00000 n 0000037881 00000 n 0000056245 00000 n 0000056275 00000 n 0000048524 00000 n 0000037902 00000 n 0000044617 00000 n 0000056371 00000 n 0000056401 00000 n 0000048686 00000 n 0000044638 00000 n 0000047185 00000 n 0000056455 00000 n 0000056485 00000 n 0000062175 00000 n 0000066357 00000 n 0000074287 00000 n 0000076614 00000 n 0000077926 00000 n 0000078656 00000 n 0000080663 00000 n 0000086093 00000 n 0000089737 00000 n 0000094296 00000 n 0000095719 00000 n 0000098313 00000 n 0000099706 00000 n 0000104420 00000 n 0000057451 00000 n 0000059126 00000 n 0000060074 00000 n 0000060987 00000 n 0000061755 00000 n 0000104939 00000 n trailer << /Size 106 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 106590 %%EOF scotch_6.0.9/doc/scotch_maint6.0.ps.gz0000644000302600021200000061660613560004730017721 0ustar pelegrinpelegrin‹Ö à\ìý³Éu¦‹ý_ŸâÜp(B ‰üQ•YÉðu(«*+‚7D/›WÃ1­p€Ýh6Lt£@“ìùÝý¤ü£­ñÿb+7þìéož½þÑC ï~þ¯>{Æ=ôן>ûê3^;^~óÕgÏ¿úÍñò?zü¿[Ú×ÄŸ®—Ÿ~ó峯ÞÜ/¿zÃ%ΟœŸœ1ðïñ˘øççó¿¿øÅüçøeó¥ùŸ÷oò;ÿÏüøÉž¯ðNÿùÉ{÷Ï/v?R?ú¾Ÿ=ýúÙ«OžÿWïûéÊÆWŸ/¿ôO¯—¿ºþþÇ?ûä?=ûµ󣇿þýïÿÃWCöìÛg?üôå—óî=~äéWŸýÝ󯞽ó‡¼þYÿÙøù'?þ¿ÿùéú~0ç»öôÕÓ/Ÿ½yöŠ/ýìëçÿs áÝ_>yùÍ«O¹ÄÃ/žýòáå7o¾þfÎTûaØ~ÛBŠûòä“§Ÿ?{óíøêÓ/_óêÙÃë§¿{öðÙ³Ïág¿yþÕÏ^½üô“go~ôðæÙ~øõ«—õòWÿÓò„‹^Ï?}óCxøÌøÐÃûíGŸüô-¯ý‘ÿ=9ÞþúùWŸù–?þôÉ'oŸýáÓ/øá—o?Y~úÇãIûÙ7_óï/~þöÍ«§_½~mðçç¯_¼~øüé‹×Ï~úäw¯ׇjzøò›¼òÅ|eÿáÆKËãK/¶¯_|óº…·ósó»ÿ}þÕ[¯ööWáá£÷ćÄ?¾ýA|ˆ|þù3¿',<Þ?|úò«OŸ¾á5¿ìçÏ^¿|ñ&ËcþÎWþþO^úêÙo^;ó;–¾áã·òIßýø Þox˜ãðö£÷üàÝ›æ³Í‡ ïoí?÷†>zïÇ×~¼èûOLJ§Ÿ}6¿â?ÿÕòåÓ7¯žÿááÓo^½Â{ÛúÃ+WÐÃëo~ýðôׯÂÿ^¼y;ÿÀ·ýñ󗯞¾xñøÆÅ›}÷ü‡×ÏÞ]Œ©ú[Ÿ™1øúÙÛÇi{óêf9ý[Lù›§/>öì³·Ëë7Oß|óZkyòáåÇ÷bœ¾ûÓ—_?öúí“ÿÓã¿äÅû'Oßü*Î5þƒùÏ?,?}rǯÂ|-üÃOŸ|õ?üôÉÇ㿟¾y5ÿýìó¼yúüÅ[ÿ¾?ZéOøyšçòDÿð‹o¿~öy¯¿üäq¨>ÿêÍ«?¼{éÀ¿<ðe|ð5üê7O~ý”ÙøåÃÓW¯ž~»<9žó)Vè/Ÿß<ñÙùÅÓWoýÏüíÙ+ƆµõRGõàÝýôïõÐß>ùüåËFðs¾âi™{à™ùÏïøê‡/Ÿ~Æ#p¯ ÌûçùƒñúówOöÖ#?>Þ­ƒôðÓåÝóÆÏ>ýcð]¿||ϯægÃÿh²sä>|`¼ýúå×~c_X68ïí»{<žœ¿{rë/ž}õ›7_˜ù~ýÌüè·?œûoÏç|þ%ñã˧¯»¼zöš°üŒ¹Þ>ùôSîáÏÁ?è7¾úêÃóðVoÔpðÕWú<þ哇iZ|¶ÿé€÷ïFã“Ç ü|z®µø5ïÕÿ½êãÉßò•¿^üúë—_¿ýæõ³WÓð˾xùò·¿ýêåï¿z»¼ÿ«=ùäÇáè§>|ŽÍ—/÷ìÍË'ÿðçü÷ç}õé<§Ë /Lè-€]trOþ׿ÿãÛ'?ÿû÷þu®8c˜«€ÿ±rŸq£ 7ñn ¾»égß¿égîùáõ/ÿ53¤SÄݽzóvùîcó÷?øá…9xXÐÇNý—O>þe‰aFÚß=!¸cüY‡’¶ò芥ôÎEñÈà©m{ë0å‡\Â|ô\Öåqú>ýÝ«×ügúýü|ì²Õ=þ°–ù51å—ßñ1èþò?]ž|ö\c7Â~öí·o?üªïùöÍã ñý oÞ½#}÷»wäåñ…¯ß>þùÙyûƒX…„Šgs4¾ûõó=ùÏ¿gyÿ7©ïÿù铟ÿ£òÓ'Çõ’ÅÍм5ÞŲ%¶üüÛécÿþ-÷õó¿ò»·¾òKÿúˇ¿ÿãñð!Œ½:à¢Ï¾á·ßñìÕ3Ýè2áǯþúzþúëO¿ý›¿þé³_þâoþúïX‚¯þÓ«ç µ‡XžÕþæÞ~·ÂÞ_åݯ/X~ËŸüéAϰêç_q¥ß¹çoFÒgx.vù£¯¼€å1’ÿñ,zgò„¢·o3—Ø/~>=ÿŸŸ¢‹}™GÄ`áÛÅAûàƒ~óÞ ýñÏ^éñó×òª®´¼ý‹Wzww+ôÝ5¿zÆšz£‹ò(_~„C–?><ÿð†G7á `(/ˆfo„®ÜŒ¡ïý üuFÂåý Ÿ?Çùÿæƒc}úöñ:Zì³ožN»˜¢¿{á—^ÿý›–'?yûÉÃ×rŽ‹­¿ž/¿ûåÓ·?X~â%ßþ Ïž½ýAš?|.ý‰ñî7oÃ|å‹·qþûüíã;þŸo?òÛ·×øýÛ¾ÿÉ‹·_?pñßóã—o¿^¸¼?~å«iþøÒãü“yxüé?=þù5?=~æ ?=^èoÅŸ|ô%ßr é1N~ýðt:tÛ'Ÿ¼sÖ>/ðûw㨥-|èŸøsôâë׌ïS‰WŸ¿’|6! dáCPr?¬Dkº·'÷/¦ö!=z»'ÿÛWÏÿË7Ï_©N^òö½£·F—ȯÞ]Û(Ž” ô…£¾[vÛûW¿Àÿ„kÞc¬ïPfXˆ¨O~ò oóéëÇ‹o>ÜýÃ{¨øöñ<çŒç.óß<{õ> /ïnü]HömAoá³¼ýÕûÇyû } ÞØûoŸ¯,¾âP|oÞ¿ç»;}aç}>{ÇâÞ¾éy‡Ë“¯ä Þžèz|BoêÅËïFùWïáß\ôcÈ™¿á/Ÿþv¾ôä ÿƒù=¯ü¿~áÄ~ýx#‰\^?7â}úòõ{f†5ο:,™Ç/æ%ÆÞðýóÏß}ñwàa¾ãçÏæ¼<›ï3~2ãÅë‡W@¸OûöÂtosR¿ùúW“1yWhŽÊ ÿ_½|ã¤=ù!?Ì[yéÇ'æ½ëþ`ÿðݸ¾ýôÅ3ÄË/Ÿ¾ú퇈÷á2ïM̧Xþ÷—à믟}úüé‹¿¼?™?§÷„ÿ§Ÿ|ôÇ¿ýäñã׳ϟ~óâ á‹×%&H Pâ¡¶$g9=èïÿùâõ§“ÁüîÝ¿O'tùé“óï~ü³ùëß?ÿäÙ³¯Þo,O^}ñ½ž¼xö†ø–Ï>óß§«ÿ}ñì7O_ðƒ”rFŸo¾zàιÈß~1_zûÑ_¡Í§“nþíïþìŸ÷þϽ]|¼_>Þj|dº0½õa¿ÿú§/žýöñ•ôøÊ/?ÿ“fˆ^._ùþFf¾ÀPp sDæïŒÄÛøÿø‘/x?4ï‰6Åà|÷ž/æ{¾øþ{ é/þðö ÿy¼è‹ßúÛ·¿}ó Oÿ„ÿ¾ÿ•?òŸùQú1ˆ¿·L×ì“¿ýÉS-çûÎùÙ£m/ß{Iï3=™/¼wïßðÎ÷ñ¶÷Ný¬~ùÙòåÓ?¼{í7 Æ—¾ö±÷OáƒûŸÜùqÉL'Å;ß±ül#ï­ãÉËÏÞ¾ùÃ×/_ N`o¦cÑzß±‰Ï>à‰O–§ož‚ôŒøïáˆ;p¾ýî½oÿ }øëòÑŸa.èéó>üñŸ|mù³_WÞææk nøÝ ¾uð™óÇ?úßwnç»ge½yt5ïøÆÓÜŸüæÓ‡?|öùŒIî6RfÉ$~þ_ùùó×|Õýäÿõÿ˜ÿw¾üæÕsÀïçøòç_ýŽ˜öù‹§¿yû³§„¸ãÅÓOûÇå¹[„³òöë?¼~øúÛ×ïä×_¿zx:iÚc|õö«—Ÿ3¯g$ÿdÜOD36.?xbµˆ?ø¾‡oçÿò¸Ç&Üüèûò¢íúÓ#¯œ{}]ÿõÕôðþïáýýqÇn~õòøÕàŸûúy¿na~ïßýÞåT<^ùñšøþ•¿÷‰ïß×üÔß.ïGíÝ7û¿TÿÌü¹ûð™¥ýÅ1{øÙòÆìáûcöÑݶ??TË?þºj¨þüã{jRÜ2òM™Ïýëo[yû}û\—÷(Fõ¸1ûÝþÒ‡—Ò£çâf~ØÊtnùhó¿Ëã÷ýôɧ_¿Ç¬ßm3<|ýåw0{î->ÞÙtv¯¾$JÎP¶üãmè?³3ýaû½»ûn«á»Ûš›<ÁMÁßàÜã˜Nörxû1x>‘¼ÛÅ™dnùèÆÞ£À¯_²þƒ?nçÉËùí³ùÃ2ÿ«Û‡‰ú[B››-ÏÞ¼¿wÁ—óÞ{}Ø8zøâõF±!Z¿'üåq†ß¿ðGœžÞG¿¡¹QÁ‚ˆàqT Óïìç]\~k”6–l'Jg€ßÅã·Fg#«¡÷Ýßþ8@–mj~ÔòmïÖÆÛâÍÒŸùäƒ}D>ßî[ßÐãm»¼_õø«oþè×4FOÞ›æ[7‰ž½zêŸço¢x|Üõ|û¸Ç¦õ¿ûûûXãlbÉïgóq¶ÞÙ;?ùêÙ×Ïž¾yøKøìÛ\ oZÞú‡mòýk¾/$ðÿ+öþöógßÝ‹o†e?û.pÃ_¼}õá—Oß¾zQ¡Ý >¿ê—ËÇf>_úÏ ˆŸÊßž½ñß>ýú£‡ýæíë7¯^þ–ûõÓó¿ÿyy‡$~úäóç/ÞÎ}ŠþúðÝ_Ÿ½Ð·ƒ–¸Õ "Y5s›ñÝ/Ë“o_á¡~ùäÿ¸$ß¡?»¡úS­}¾w~îÑ2eñá£Ë~÷eO_}úðÑ%?:#úË{òª½;KýîìÙÿðBþaéÃyòãÛÿþÙ«×x°}ô÷ï0ÿ÷ö¿@æ"®·ü(ÖA 0íãcíëéïžöð“>ü//¿zözù«ïεôÑ÷_ú7±µúæÇú—ÏàÆO¿z€aáÓΣïO^~úü½Küõÿå‹7o¾þÑ“'ø>ýòõ_¾úÍÿõoþÃÃfpÂÏ0—Ï|܇ŸB¢çƒýpù«‡_|ñüõãËïÓxá+ç«×|àˆì«¾ûá“ÿÝÃü˜?ßüwoøï†æ!þ0~w¹wŸöB n?üôÓO_~ùõÓ¯¾ôõ93øï¿ûá›?¼ùÆH߈«~ÉçŸþîéóOÍæ?}¸ûÿúð”ç{÷t¯?}õüë7¯øúù Ÿð‰—ù“pïïzþêÙ§Œú·Oæ´>nƒ?þüñþ· ›ÇwHí?¼fLÞB ðì¿Lšûá,ožù2÷ÿ¸ÇóñžçòxÐ#ùþfè÷[büh_棓¹¡½||Xø+Nw–?üôØÖg/¿zñ퇷ÏÉ}|Òï^›‡‹o*¨~ 1¦ôPùáßÿø„Ç[H>ûã¯>ùÐÞ½ãùßÝéïÞMû_¿[óðýkýôåœþúƒeÿßÃ>å?ñŸmßó#ά½ÊÿŽeÿéýÜß¼x1ÿú×þùýõé—Ï_|ûîïê7îœÿä%¦ÿÕŸ¾õ?={\§?yöÙóo¾üÓ¿þøÍSŒ¿OõnŸ¿¾ŸÿáÙg?{þæÓ/>ìÜhf\^¯ü³—¯Ÿ?žÊ»qðý¿±œ>ý-Þâ5†øðn{åO¾ò»m˜ïŽh–wç2ßmžÍš÷û?ó(æÞµ8Ÿ\÷ɛ߿œGkß»ðŸîœ½û}.ÞgîT.W»J¹KÎǾ–~¤}=Î{?ÂãQkºÆvŽ|]9mcÛjÛSKW=®VÓqÕíîK¬­-µ~·sO×]Ó]ÖØ¶³)†‹O¯[Úïm W÷͇Çq´c u¯GoyÙâqÜG=ïs»[ÜÒÇv¡_ûb9Ëy÷uk<ò¹Å+´x¦k[×0 Ÿ¹j\깕=–#䣅xÜkO[5Ö-ïal¡§˜ï½Ös]kݽLï×qž{¹ —QúËz„ã>ùSJ|õ¶íçvî±×kår±¤v][ÜS ¥®ÜäöÔcºyŽ%Ü×zow¹rLí>ïûŽÜE‹‰Ç¨×8÷+ç¾Õcë#ä´»][í×ÕÏmÍ©æå ±%G­Ç+ç{ ÈGe0BÙîýjé)×¶^é:7vôÔϳõÄ¥—<¹­ñ LÅž·5Þ<Þ¾q7¡¬=0‡Û}–²Ö3ŸýØsçŽsäòÆwŸËÉEçDßã¸Ö3¹=Ÿwå¬Wß·‘¶kï9övô+·ãâã÷®ˆg­¡.íbŒ±÷5´ Ca@¨{mÜçÊíôs_óžp¯'ïõL©_[ßÛޙƫœGæéÎ ×Vʹîå¨Û¨[/íŒë™€v{ÜZØ÷ÖkeŽÇV ¦‹å-ÇÕ·cà{޽3õë`œ÷{­aðP<̺ö8â;w¦)Ì<¤-¯÷Ù–{ q?1§:ö°ÕpaÊÜQÛ±]Û8ËÕ˜—·z‡ÑÛÚ3·zŒp¬Gm-s=1S5ÇŒ)ä¬Å5, û WÃdFˆ÷QJa»s^ÏqŒ±¥œZK­ƨnm=övç±l)p û1ʱò˜'3½…³·;L]¡äpO¬ô<1ÐÂaÔ™U´Ô±&Íõ¨7·Ï£%¾vÛÇz2ûÇZqÌsõ`e–qœ‘ ì­Œ0R«u,ßYÇë–˽ÍyÆ#Ô;a먵ñ¬'cº…t¶´cÙqÚÄu”T—³Žs=ëq§pä¶F¦ó»êÍì3ìý¾öŠá2T7 uq?/³>×å{Ã;¤ÓìÀ^X6;v½Õ½ß+ËcÃõûG»{/ÜïÝï¼õTîZÎ¥T~Y÷‹Út&ç`5ì<üÝêè,ês½êFݱõø½Ìh°„ÓÉÒ>—ˆSÜJÛVîˆAywxf¥àˆr¸±­rÜÌ–€1×u‹wºï1øâ}½—ëî~Å}­øåcÇà6|PqµÆtp38í\¯Înîü)q—Ì×2°»yدˆs,x‹Õkf@¾yÐÀB*ë(eÇëñ/²å±ïw!‚ +vûÀÏëq@ Nó:s`$0Ê=ò·ƒc=k‡³fþ˜ÛM̸™Æ}{¼åc™»];1!ñ¶1Òz×qï÷©ñDzå-®)¦‚GÙÖ»é­Îe´AL)£5æfeÌ -mœwåY‹Þy§“5“CÜv¾,í–|ö«.¬Ò>®0»ÄúŶ±oéæ9G¼N«Š£ºˆÏÁD§LùÚG]—ÔBÂÞŽ³2yç†Ë"”]WÁmÔˆo%DårîãØCƒ­òÉ/Ž­W—x3ÏÛQ¶}?qd+«-F\éq½p+N·×µ°¤Fºp‰8üJàYüXb8YV,ÿö tFn¨^_bÀ‰k{ÁW2ì%Bî2bc!^–c(Xü+6â¯tƒeÏKx¤Þ´2Vàx<ÁÁMm™«%µ×…•?þx ¬¶XV„·È=à±?|K÷Z ›¬á ï§ [Nk¼™Æ{Ýùð3±®­åD°O1ÃikG:Yjëà>ñ¸'¾û¨×ö¾ôH˜×zK‚Ewâ‹¶q³pâ(ø6"5>ðÂ(ÚÆÜøÂÐ(úÚ…‡ë„&<ÀºF\üJhßq‘D; ™Åµ•x‰ ²XΈ7#˸P—‘3±œ¥½í5Aúgq…ðË}'fGÞSq†#žGß.†åHë<Ž‘–Ûé`ì1,fÆõ™Vn|cœ{l<ÕÍz"Ê•ó*ébñˆL8þtÙ´}L‡h{ä›È±‡ºâ-Ö+ <ß™ùF.#ÇPbבώ¿<ËX0–’G x-¢g$vóÜ©àíJ`C x6fâr¹ò`±“P»‡°ð'€Çqœ ÛNì¾ó (GêüxçNð )Dà ìG;u°]žó¼àÒïLüÛ€…×}4ÏóØqf˜ &[2Ά ¼Xzƒ¯Äüc;ý‚±ßâ<Ú…C àð¶&Ú¯ç òŒÐMáŠ}džֈ@þVˆLGÂê0¶^a½†Ÿ\Nº¸ÛQ¶DmèÇc V°WÂå²â]€Ÿ;áø.¿:€€` ž<±³¸þâ¼} ý׎ƒeQŒp¹s B^wƸ !ÇZ½|Êø£ÔWƒ'vã­Ê8}ͤßqa‘²þV0xT‰Qñ. 4ÆÊ=. ±H ‚_½¯²ãQ¬.˜~g¡œ„bl„w|8r · ª „]á¾¥Ÿ}è!tŠÄ<ÖB¿ ‘º­àù„ó Y‘}p熬šÇ æ 8÷»8v‘öV€\,x{]~ÄÁ0dûpº#« Ô=…¼.A»»æFpá×3H V˜r#è­w9a OF7â(p©xûu€õ°ê”‘ï’gˆCë<ÕY_L°ŠÖû†É¯íØÄcm÷¶1§§ð”°¶fì‡Iå0Ú•nž&Bõ åY#žšõ;Ž­&°ÃÑ Ÿ¼ç¾qL.£Lļļ5v¹.1Íu/r…ߥmK‚ØÎ  [XáÐÝ@µ;¨¯ÒpÍ+,ŸÇ>q™˜Ð`”ÁkL\Ž;ØË–Í!A‚7nØ&ÑžQ=‹å™‡tT»`Z„dsÁmÀ”˜‰ï‘Á>Ð( ã…LèX+A`ê"Îl¬É<ô.Ug¨3KIÿÉ [“ƒˆ¯f>.¨[ä+n ×^õy0Ý 6÷•õ$ÂÅc‚„qè„}PvˆëäÝýÀva¬€®îhØ!\,ž8|ÀËÆ¡}a%¤ßä‰+ZYB7ß}g(‰ïR?\|²lÆû70ó¼»³.GcBâ?Ðg À‚Ì}_VHM9X†+ž’˜‡#'FßÈ åN°/à.AÇ<ãåõq!á‰qE;‹¹_s¯¡®J zoÉ%&?î¯ã¬äð”p!b21/mU¨ÜôæM»Ž*'€p¼ mwÈÍÕøB`VÇLVÂÎç¿ó¿n±0 J¸ÖcÅöÌ|€Tè@MÉZÒ ,Âb€³L,V ð"‚µ`HA5C ;S„¾üxêê'žW¨œkzù[€°oCÏC@LP·d¸öjYqúÓw^΃¥>.†+âA¤ ²¦ŸËim;‡ NæFv‚¾þÚ/€VàÙØW|æ}åk›¼7Àž…ÿ™€ÉbeáÈŽ“¼~gaQÄ6iT2AÒÁ¡ÐÍÕ‡·:Y+x6eÍÅÝqÄìÁ yé÷]ðÝð¦VÇÌ(n ¾ ×ôï5âõÎ`) Œv[áNý^œÎÊCíù+«±îps§;ÀžPxþ•QÚÀ‘ƒH3L¸H`"EÀ¶6w :Fc!eÁBb¥óÞ#BC2t|>÷*}XP- ä:NpÝê†Ðê¶?rsÓ|jçKw0 äš•7}(®L´¿1‘ƒ°8`\gs£DÚ´í'Aqðd®u]Ý`€Pð“võ0ÊL€ (ŽY£ÃÜR^.Üp¢µzœW;AþÄ— $‚`sK+t’©hÆAÓ˜õ~&êL)³\z‰© —8Ýa¾/ ä#$+Þ½uØÚÄåØ:öгÉgj‹,˜×rl­ß ÿÀJâ¬L §f4®XA,RWðXî3Ìý¦_”‚€„qk…7õzÖ2qv ®’¹;Å}°²%S ßRñÖÜ*ô®ãd@r´ .YqØ@1–:‘˜‹Eƒî4 ±$ˆÈÄõm¸*ì82ig5ÖuaÑiD­7n¼³]`÷>zƤ€/]„a8ºC*t³º‹y $Àý„n‚í¹E\ÆÙJµ3K,Í ßÌìã^€>«ƒ&8ºÂ¡ãm­ "þ‚ L ªqÂ]°.æzmÜt—A߬Æ60$0ó^÷µ&wXŽ ÒïÔ tÞ·°%€H7ý+ˆ%°>Jæv!¥×UY&p Ð+ÖÎJ&|Aøq¸;q=bchª@ ЊÑ:¶y,ã:å—»FL¥æÃÍ_À,+¨»Ùš!è] 4Ž®,1tâäWœ´ø<ƒP±<ðž˜Ö=2žõîî%á]/V,4Y™î¹C= d ÷+ŸDz¾YÍø n _ˆ=0÷˜ 1Ü+ t^½u˜+«ƒe|¬Ä-ÃAði[jÁ}Αõ˜èŠnãk¸Ûp ·îÁ6*« k“µòZñ/–Œ×€hnɽbn—S‚©ä,bé#¾¬ˆƒ Aøvw…°œ„u8¥.78 2ŽCâö@­M387½ã±éPÜõõÉ"ŽXVˆéN%/+Äâ#OÔ¼]÷ ¤ kϲ=tX.žuÅ8a9©œî‹ÂúOØ_ȸnZŒÇ@z$¬ëfÈðˆGƒ/ñ“Ú%gºË}€†™Ú+ضm[½Ý…Ã Ö 8˜;ø[ n³ ƙ ôÄĸÃ}ÞdÉ\ñÞô«³`zÌAóŒ«]7] uF^ÐÆ ^‰û°Í‹µÚ®#zÈ ^^xeeÂ{u¹IJ¼Ü jö©¸K+«ŸA¸žGqÜAã!=z«°ˆ‘hsß\”Øëòðžé„w¦¨…3`U\î6bYÜ)F¤ÉÑpü ©8ð5x žb¹±YèO0³]|V³ß­ßr‰½À:Øža`ø »‘(»=WŽR†Ÿ`;nšø„qGѸ‰)+~pUŠŒ.xâŽÛÍÝÚvß»4e,°œb=/ûv»XY»$ÿÅwȨ~Ûi)4pþÆ „‚t@:Yø¤¹+÷‚¹[0i,®ÀE×G¯° ÜòDp¶„#ª ÷¶€¢ÁXxù\ë#†,¿ñ$”H›‡À OP[©€¡Á/±mÃó‚%àXš Š×áÊçüºÈ ¯¯²7Üve ƒ Ã! ÁŒÈt•7ÖÈyx‡gmzD€.îwn¼´»S×Lý}">€Ô$ôµ-„€Ç&õLL@sf{Öj˜eWåÜôM"þ•)^dŒ¸ÀÖkÃi¤ðcoƒp|Á´*@ܘ\<»Ìx׌îºbµðF «È(cMPóêÜ‚øˆ5Ⱥöø :XT;þˆ_Çsóx L`R ˆ7xšøDPJH©f[FÓ`…WßdëÚpv•Y  Èâ"Bl=Ξ`„ëØäØRUö«ì<Ãöà;ä&'T3yÀ<7EdoÐQLjaaÃý©*íãJPý…jAlã8ÕL`¼<$˜¤WÁÖæÞiÉ«à4oØ>\bÇ5Nܤá+N5úX¹<Ð N…ï[œ-÷«‡Op®°ÙCðzKÃ;4‹sK`Òw&Ì*X÷œ$¡» ¿Î¼ %ä1q¹KÊ7ø,dw䡚€¹½y€ ˜&q͈Á‡á§Æåäð×µÄs,„A"yì<LˆîE¸€©àö¤+OELfmL5´|éÑ^‡gžáÀZÀãàòŽ'r3ëô¸Dhö{dÐtpÓôZT¸ž{vRN<îôV`dþ:K÷øgÇÞElD»LwIP«e󀉪€ÔŒC÷Õmì#°žO<0´–o†üÖZ<Èv´¶Ã} ÖP] ô<ž)Úü¦±7@@ª8ÝÖjh OÅrP†ÈD„=³1‡c¾’øð¶ÐÄiä=•1¡1îü@_d êá‘÷BTĘ ã–NÄhò\ 6nÜ×X´ùä] ‰‚EâXÜô>R3½` U€ƒ·9²+#6 ± ª«ò°Ôós¾æ^º‹~ŲEGг:@zžÉŒ{n¯ƒ êµ{.F@9¶ä{¼ÏíŽ K‚;’/wåç™Ñ]YH,ͽâ"œG™Ç€ @·œ`Áüy`úø`Lwñ´†¿Â2¢;P<Kj}¡;g—ØÏ­š†“®Dè„Q1ÛxO0¤j‡•TÜñÑ!è,s aïêðaA8 Ù{e ËIÃ96¶²†màO¦¹:7ŒkňA(&Hx~ܾ€H½ƒƒ R,N†ˆ¸• Ná8PGĸ ù8îô^qìî£^Ì”;¥òG&²à‹Œ'@ÜÓ ðòçLåJ8€Ç–žô¤™‡Æœev–á)ŠÛoœ@Ÿ×%æ»%&0—˜rÇka‘¨ÁC­ãšïÊâÐ^á~*X±¯Œ?+”±2é€ýñ£™Xm4¥ŽÐxöuc;â×ÄJXaÉIhÊÄätáÒ „=ƒ­jf‘s2FÔûBÃux´¾DbI6Aóžkð*³ˆ-dv\¤Ñä­·XfOX"6‰Ù„¹†1ÞŒ·±÷•ƒq6Óï[X!OÑšrWK, K=jX€&-FÖ7~íª ÉR°0éj,°¤Ìì5Ér2Íè!œLœ9¦‹…jº·ßŽ3|Ü?ª§i'‡‡â`aؽJO¢\{Æ«Æ öx샸û}>xEÂOU ÞØV =àך«Û›{Z[ ¼ÓêÒAE¬L–;Q ²‡³d½·^v³òb'Xtó¸cìXSª.ɧ/,‘û½”D añà»4Ê"%íD ÊÌÖÓ¤ ¹wÏÓBˆáÛ”†­&¶ör¬n}ì3RÎ,wO„ ·„åUÓKXÞQ éŽƒIL;ÎÃ…»°¢^›ÈÍÂ$Tênoæjkð˜JÈÃNåk°7ØRU°DVœxjŸgäЛSf›O¾“À†ÿž0yÜÿ•×…èRŒ4ãFgÌÌqŸ ï2 ³Ož Ã„âÉ3àT . ü•ð-xm|Vë©h*¸ˆfú.¢ß;‘  *¯àý ¶‡×s[Ü _qd¼å†¢šsÀ/îà³á®3Q¶ßØaÖ[sï çv ¨ï}éJá6à‚ê4áå0&àoAÃnC§M&Ђ<Íp7!𵬖Wº7o@êÅト™¬§îð»â‰þ9"@üFŠb-\Ä@ûrzô±ztwH²VŒ¢{B¸Áz®¼8˜uâ°@fÝÍYÜû€Ðyô»è§¸½Ýsó!>?³+ÃŒM\4–È‹ûj'0úæ6kÇŒ½Íl Ï[;¼ã6·NÀ/HóÄ…mÙE­c°Œâ vÎ^0ú yIáXLOZÄÑåzŽHàd=ÂÙÎSƒÁ$ð¼tÌÍ¢bÔ]N'ð¸–ÐÀȘ¾ccYSò¸ïIŒ³X¦Ã$¤Ý\O˜(þÔ?ƲyFÒÍ$æ‰`±M-éʸ÷-xF‰‘  ÷×^âó½XðF@—lÄž…[?v“I••s̓«Îü,®E|Kž»æÁÌUá~p‰‚ÖÇKm8Íb©nK@HhêZ \M7[]KÏŰÊañéÙçiŽuUè¤À̈r9¦Ø+,ãj ð‰ï%ôãk˹Þ0«U·n>æ7ç¡¶€Y‚ALÝMíâÿÖ²')°\b°¼ð”XSs­o8ssô¢ÅlÔFˆñ¨TÄ2;àü‰%t€Íò‹˜#³= p÷µàšÀµñeŒ Þf ÿÿïß/ðoã)q,oßä>ÿü±j–ÀüiµÛÔ$ý oz¥¦æí݇þM–½Ígû£òíq~¿+~{üõ_Zÿyé__ýÛãÃþI \\ßUÀ…Zÿep1üë*{´òª n¾ã_o!Ü“§*4¿™³øß¥0nÝž|ñí×_<›Ú…/•‡'_3[/?ûðÒþðä¿>{õò»¶õáÉkìõýï…ÏßýVÃÓû»ßv~ûÙ‡ßòÓO>üÆu~ñÝo¯ùõ‡ßÚÓO¿û-²ž<ûèW>ùÅG¿òÏ?ú•+½øð+výä«~åR/?ú•ϾþèWžå͇_Ÿý÷ÂÁ–pÃ2÷mÏ  ­á dëv%7—ZÚ²gŠW_­°8®ðýPïÇmÊh…Ã6°óå™ï1àëñ>Ö¥6ó€Óï¹ÏλŠçÉå¾ï"X—7îO¾¸„ÛÓÖ7IS ·Ô`mzn%V -ße-õܶœÌ‚}î†ì\ªzîà‰˜©ãûÌ‹\Žq¸ã3šJ ñ ñ-Õõ˜UE`á-o ›¹1tì†OæY\Š­ëhÝ=ž|BÁ›[òµöÛ"7¥N ‘öcçjÙ“‰¨Ð‰RW|/¬ý óW¸_ î&˜ï[7¯ü†Ö “üŽcçþJoÇ5NhÓ±Þi ëÞ‹U²wB@.¨8@zäj’4¹ŽªX! å¼Ã‰!"É| ¬]NFrÃn€úµ†Í"7cà’õ eÜó ­¹Et›’Mf’ÌIéÜAM¹›ln~roU5D†0 ã Å9~‰[7—3hFÈnq"¬Ú¢9÷'= èft{œ|&˜Þ°b¬ž†˜/l7Ç4ÓOk½ÂzA`ó‡â¸×fñ`oÔÕ’ží²üÓÔ¤p3‘Ü}±2Ã?ÝÏö„:Ta³z1“`ìÉ ‰ª[âé`óÐ j£?áÍÕ=ÀZΚaÙ÷²ÊDÒ,/=nþT D D×½§ræÊÝÀ¨±åxx¶6 a[‹—ûd‘é]Ò±1"k7WÖz¦sÛ™SËmCÇòo¦zõ¢·Õ…k±üòÎ'\Qú]®pF;|ÆBu›¯U:Õ%æÍÊÇ}M𜳭XYà"°ÉÐ.³:"cpiÂõ¼XgÌÒzZb6O0amgðY³=Se)šu¸ìÍ«˜£™Ä¸‘ ×c‚­nÛ¶ã6 ç“Vnf?0Ýe»V¼·}Ï<»œgº—ë0s¸G/Vì)Aò°¡xÀ°177ÃS$•LpÀ(bƒÔCü0‰ÅÐl‚5,MŸó>×k–<Ö|Z³†æVÂaÊ_g¸Î*ØRÆOóÂ6“îŽ0>×aÛ¡_8`–f¤µ¸x1A8›;6k[°S?˜¶õ,Ì@Yw³è±çV §åé¯ãªç¸LNßÜè¨ûå÷‹÷½ÔbŠâjÆq̘-î_s¯wº¯Ëm‡׈÷-ç<¸,VçÇrôóä¶Wó0»\ÒšËÀèïqMWÅÍã/·5ã*jƒÔŸžS±vܽÓXòHÌ› ¡%wt‹E±iX޶ÿæ_ÌÇ(›y ë¦To&úöûX2VY`–¤¶ñ!ž[Ô=ÌT²Û’3æ6¹ÀzÈëéä½n¬pq\ªåy•p7õ /âÚ‚éêÑ"TžÞÑè¬Ü`ò$Ž{Ûh±íË`Þwwpì~tn÷¾=œ6‰xës‹—`cøîNÎÆ3Ôûnž÷4œ^¹2ƒ­•;fÂΕƈ¬qµ†çÛÂLŠ(wr6lG'W`–‰/ó03XöÇÜÑ™¸¼žó<Çt3ŒÖÜ2Ÿ¾Ž‘-¦?D5¢N1b‰¥Ö#{œƒIÝL(Ƨ½M§?ç nËýâ©ïâîÞÀôëP­ÿ[²›ôàŽá–Íáøôº{LQõ¤Ñ⛈•õpmM+˜2cr±_U*vàòÄ^¼—»û—;ê½t ±qs ý±¶‡w6“üÖ«å+ýŒ‹åæ–M›Ë„vÓaÍ@ ·;^ýÆÑ ¢ «}îÃ9ì"ÄÂÖm)Ö~ïÅâãì9ëO¯@>ì3± K:ó\¥Rpª3óf?­—X,½ö4ÝTÀ‚mŠÅ"n•Y–ýaו5Æ<1Wo1ƒœa£ÜËyšÅë9•>âøÌÝÌq^e½=64ûXOHlØ=,Ü{O8‹h»0;w"ö™?nz,>°áñ¸Ü¨sר'Ý‘Ëb½=¹‹Ç߃et¸Ñº¦$7òFZ¯Â§µ+³”â°2k߈B[çQ± “ÇQÒ]ù‹H½˜C=±(Öt0 "=ƒ!™ÝļެÜ%þšÅ›™ÒC€'˜ðrf™Ç®Xc]W Ó©ùÞXáÑÓæh®&¹v¦ÿNp1Ãmóa.Á}ßUužz&Ö³t<š¾*öcÕI^VIØ àa¿î*À¸Ä¹ÃÁ›&sT….S*pJÙ wûÌ ;˜NSÚÎ,Yª‡í­´ø–~ZrVœÕfFQÁñ ^&°\AzR+n(·ü±.Â7kè¡©ò\Z0ùû\‰s%RŽ4JhoNÌYÝ,=ŠÅ­åXX†%›÷j¥¿@oK -Œ€Á D/ð‡‰ Ñ4÷kópxLÝÁ¯ž,éŽþ¦nÀ‘V³½à î“­f¥s}¨¿`á{`èr‹³LÌóYSÏÛ ¶]gaúêÜ™]Ì1#eä,RóbLÕº†â çrˆä­:´~~XG¿c¢˜f!2SÕŒ3~2[˜§+y5€.o±íW´f8åÀÂmS‘$nÂ*îM»³T<=,5&ün [¢1ïXçÚ É³ 3 ·×Ü1x;vϪͮ°|’P7LÜÞ—Õëµ¥£ž«[çY=쟂™ßýè{8/ÜáÎàT0ìÖÓ‚÷¸@op!/óÅôôf&à­V±®¹ÏŠ@Ó£³gTµ°núf†_&¸Btš©7Ø ®‚©å…Ã~EÀÔW¿ÿò:+ÏCÎ`$l³òÖ¾ì»þ_÷Üö3u‹Xü0³j‹@=ô'°ð¸b­™Uªeõ .X>׈xæ‘\–x7gð ‚W^ø„âSƒ›¬ÐÅ9 ímÊJTU„ (^³ÖÁð>“×hiŽiÑXl¤‚nŸ {÷ô"ev¯°sçÀ žå þ‘µq(ë™`u5 Ú·ò@ËDÅ¢âb–é”={¶\ʃx|HÙ,ß'^›Ù6Ï>¹Ogb%á»8léVxõ™ñë8­úJQýµ¸Ð3²²3§¨ÐDìÂÛã«/.D÷Fè¶xüºNù/‹.ZB…S"lƒ^"ë8kĽ@É Ç„á ›B 8nÖ ”µôJ^±³Nh'1ð`®UìZñßdyÄnu0žW‡QA0”‰9À½àáWeq™ ›ïèyßÀ‚ÛìfkY„´ƒWœ†eô8+\HµLù™ô‹½0!x÷è™–òX âøåk]°qÆŽÉ#BNàæ™&»Ye™=âƒK¶ÚSæYÆaÕë-Q9Yr€`Äʪ2Ãeñ:`¸‚»{Y]"b¡|dÀX†° ì @bájêÖoñ°Ü$<­×LžJŒ¡Èêv|´éûÓÍ%™¡Íj ?Œ ¼ŸYXÝ|‰Í"ÄT 6{ì—gÝáfžÿÌsÃÛ™— ÿO9v°Ö1ÃeMæÃˆvи|° ¦6$ SyZß¶–°ÔÀÝ8a³Ðk‚…˜ œ"c„‹Äâ­ƒ-Æ1=’†z®‡µ%‹…Q¨Að6I“忚pbÕåefÎqZ¹ñ*Øà3”>c¹wË{{׃» Lôd–ôÝÄ^ÝÄ#]õd€ÞÖë˜È·k8 ¬äÚÜ7ßø¹ºÆNÈ^ÂC@kãG“EPÞ*sïeçöînåQ´2°{dN3ý¡Œt YL=ÃL ¤ëôâêá ó’¯uÔNtd¹Bx14+îJRRÜÀ¸q½zí Nu1h'®?`Á¢²?ë¹Æ0eÝ?u |-˜OŽz`uAPÆ“˜O}5oì'@ë2ë­Âù³ ˜%øœ]aõÔÎêPTe0ß°MìlÄm9Ri¦“m&á2ï7£{Gu­™Y6D.ÌeTãçÀ=ò¨ý¶`‡1á€þÍß5—Tš6ãò®TˆÛ›J<‡éV„(€;ücŽÞLÁ˜q< O 3J)²Â÷[þ”Íïólž¿oVîàY¦‡I°€¢ûÀío8`nmåÁgSm‚˜¿[åpãµ°ª´š¼é6H-¹Nh[fŠ…5ôÞø¶Ï9ù¨RMyïG³WÝpº¶lŽ/| Öó) ont™¢·™ŒyV8$èìŠÏ@•:—=-YÁ³šÇšÆD–AäSf,–Ö.Õ*ÔÕP‰ 2ÃòåÂv%€ªÞ0kH½/ÌבN7ƒ,}§ ü=|.X9[­gãg s´š¯wX¥³QƒIr;èB°Í=¿®8H-ZÔ…ëÀÿ w8üHf•±¬ªú0@Œ`²“;6•ÛÞ¡}€CÌ8·PÆT<ÜyL"ƒøÖND•ê‚ øæÔþ¿ámÌU2k9ê‰ÖÀ×ÂûX6f/gf¬°»¡à¢¥¹/¥iàùWn!PŒ¦ÈÖ09 ¹éÃLà¦ÔE2ç9+MÞ h»älìšá¢@¸ªšînzðѬ(U/sàÚX*ÈwbJù¾áE÷%¹u¬á††Ø6¥´ Õdx† Œ ûHm ¸˜êz©Ä- R˜=x©±ö»0Æ=à¼$ësô“rx[› À{,Ì9ª p ð¡üäcñÖ›y•å”Íi°>è"zeÍñ Ö™B3À'¬w †q¡»ÝZÅ÷cNò<œ[IXDË@çzT Ân…[+ ~W“æLU^ü3‹¨ÂŠú¦°Öyœ–¿C@µ» ŠñU.…¡ðlÙíR•ËX²cÁ3fĦt0HWŒ.=/¾A„Ziu¢0±BæŒ{ˆ–&è±XÀÙ ¯ÞpafZCPv1ƒ[RY1BˆˆyÓL¤†µ;Žb †tPO•’ÂUL ²žûb^ïËPxÔ£î 0Å\òÍ]a=wS`¹H™¯Wtâ<ë}ôë&¬ß¢®ˆ„) ¥Š"xÍMÑÝtqLS¶áV`Ozðx|'¦Ï×5%ÜŸãÆ@LÂ>üÃ+pgOœØ°M”ø°Ê~n31ÞÆµÄÔiÝѰ&*_ÓÖ¼ª¼5†j-ø"K¶.x³V>q|0¯Òû6 0YÕñ¦+¡hwÿt ÀQÜV_XÊêB8Á‹VÓ"À8A\¸R«2cë,¨nVV¹5“c!/êb-ÐéÌk Õ–Ú®‘€[-Ìó¦4qÖ ‚M/†©‰²àÿRW'/*NÓ¶LØÊ)÷j`•VüYTÀè‡qÜÒ1î~JŒ‰C10Š {í–j±*å$GmN¤d™øE̼\ɦqšR;Üy½Œx ¢Uó|”yMbÅìjᮀßnŒ7`שjØfÉ>è=w·-š…±\7.Ç›AüUÁ¬µ¶™c¹™Ï}©[C HŒ`ÉVW¯ÖæÆÀÕ0¤t{ìÐaäÛm5°Ãƒñ—[Ę/¼…L[Ý”`Ú3 Ÿµ±Å´\ KdUc-ÚnáO–"BÝÜSÝá´8õù O§5<ÁÝ¢ïõ%¤¦¦`c+VBmÄÓÚï>o_d-ˆq8 Ñ(¨[wˆQ¤Â¶ˆwY™Šš™"0ËÏR øõ˜ŽÝmSƒ©u8^mó-D&‹w3»‰Ù&î‰-Ÿ» l1ÌÄ~†Ïg NÉmžÍ<ÞÐä£]_ÂÚ·D–…ªv®þ;ÁÒSÕÁÓЮfAÂLåëD&&»^æ NXëÑÍ„´r°¹`Æ5sۡ&.·èq ^y³* ¯^/`g7$»a7©ãªÄQ†Á0Âø€ Mý¾A:p&ì¹Ï„nˆúª&’¥^`Õ¢ÈÆƒmJ—›š:·’‘¸]B…øƒg¦a€£dO=ˆ¦xáá)s€ùõŽfꧺwad)¼`y…B.3»>¸À0yãÛ¾xppÓdµ‹R1I5SÚ¶œRõòæUN–õžÜ¬q=jûPL…ëV!4Ç1`¹[ëdrÔÚÏQ˜Š{¦XëY,¯Ä3ïw9¡sî&bÏ—¹ˆ<þtµ ¸…¬YÕÛdb0†¸ÙäiŒbðòn¦sn˜‚ G,?ËlUU¸ê’M1:ɬ<ö&”LÜ[»xï# {>Ê‘Ê|"Κ²õG±«ÄχÚ±ÈÔˆ &Àƒˆ¶qЏî1%ù0ç“å 23“й慀†Ó1½ù'aŸQ$TEÑS6%?͌׬N*ÑϪg¾LËkÄÅ“/V Ôð« æ ­%7ÂGµÛ Ô]õª{ig¾x Ã:Ä+£¾åváFÞ.x; è±5ÏS£\ÕòÃ3¢dýCŽ]l}ñdnL—+ן®ì€_¬YÕN¨äzW"ÎU{SÎÚsl*Wq–Í&°Ó¾Ë¡A mïsî^æÞÖ]Ï®)g+<€òƒäzÅó„ÅÂÀPržz¿…×ä90m9­À3صCüc<Úî‹ 2tM·Y~jIÂîf°LøvsiËD4‹¢µÕX°˜'œWuDS]•ÕjÂ|„)^ ’Š˜}´ÃÏ šY»Â•|+ºìJ.°² ³Ñäf€•°žájᬖî>bëDwº=#1v îG{¬j¾«™Ç„A[U XÄÊdL“ꎪZ¢Íþ…hC!jɳ:“•ùŸ%\"7\(ž³BN Ü1r…#^¶:§hzóª¶1¼ƒ5¨˜­º«ö<Ÿ<À÷T›€x:V&Ä“?\–*Ÿ[I7!¿ÎÔ‚àJ›áî>•ØÄ5OÀ ÝâQ|¼44Y—º°Rww†`Ù½Š¨Dþi.·‹Å©ÌO÷›Ó­xDq @Õ°£À ¶åcÜñ€DUŠwK&X’úÚ£ÆËBãîΦ„a¨Ÿ‹zb;pAš kßõpƒŽ-šÃ}ºÝ9QJ¯”ê%ÏdurÞ{̽*EÝãù€ÓÁŠú2½î=™šm82Åï3¹¥q{\6ð=7À×ë´j2\Vó)EB¦Gq;¨LôH–ubž¾ +z‰WpZ•ÃÎ ‡&óÆ#ÃRâØÁÒO'v^£z\,šoææšêMÇaeÃZ‰S'`V2þZ$:EÍ.î*:2KÆ7ŽúkÓ‰úª¬ôÊÂÚh6“ÌáÀ&TÀ;Þ²ƒëÄ9&F’ØH\ãšûE­ìûV)Ï¢SÐ땎Æós†åŽ–ô;0–¬äS³pÀ·ÍigŽÀ7mòɱ–C-&·H˜A“¬à —Å*|IÝSøñ¨–ÎGZª’{+nÙYÃÚ.u‡€‹y·|Ë•ù2å(µj"Æ1NXQ_†…ck>«E‡øÖpí-öÍ$Å– æÖ±¨œbÀQÜjÄ*².,!–íŽ}­àÿêI@€éÚLÊHuÙJ£T« §X Ëöö̌Ц®a ïÙ†'«5lJQ[ôo϶¥Ïìq‹ºZkµø­OY%î*¤W‡ê¾‡‚O€4‚#{˜f1ÖÚvEö4DœË¹ícØ+€¹3<$ÙÍv·œïÛYò™J(㥨)×vwcm–Rkãkħ)‘ ¨<®ÕOVÕ“ÝtLáDYÿ]+j8öˆeIW÷ǘþåÂIãLä˜*ëOµ©î‚Ä÷¯¿u÷.»‡³Ë“àÕk gq]²ç^ÐÅlÿ€0óIî™ÁŒ@ÀƒÛ :£1犛] 2¯·%Ú\€ð@“N³A!övÛ˜?€/zÚ¸Gè&iÔ©º‹j©Ý"Ï…`ÇØ˜ÓZÌ䀉™Çg~Á¦FÛeê^ç*ЗÑÛe!ëbÍÛVYìº"0§)£TpU—Ì„uÞ£› YS²Rmæ;dON&“{_ €Ìó®îö­^8¼W CËØñ@«ª¸–b¯OSÉÄPȺCªÖ+ÒJ€†·ÄMt7ô=¬»f‰5ñd®¤’[Êà’;»œ6õ ÷eœ˜D YV¨`ÈÖÏîfT‚kê¤u¦/bä«ÛmÄ ’ÏDœ\Üþº½ôéŠ"+-Zt×tçÖŽóDñ-%c=Üöž[çªDœ`ËcÁÝYOyÇM=B“ì‚; Ä €R;Ø= ÷d9±Y[7(^=êÀ‹Iwà @â"tÉãõ®îöeÅ¡+wÌÂÜaiWqÕÀ«÷sälŠpöw<Òpáœ,Ù4 úØ.7âÔä2éÞîFÀC“sSò[6‘,Åoã¶Ü¼)›]}™sÄ·[CÁ]xˆ\Т%´ê׺ý”Vs¢BŠ †¹5¸W‘{î,¨=Ø{.„E#j^SQhÝӼ̒ª£¶ÅŒì°¡˜:$‹Å’¾(kúèv˜m­õŽ\®>¬Æ¶SLûÂW1U\½€DbFšj0Ê·^&Ré¹-³Þ5ê+x<6Ó[—s3ïYYžè¶Îi/5´¹Ró¼Î¢rÈ+ëw÷Èc¦¨Hµ›_ -8ìÆ"bõ‡5¦s·ÍÉ_&ÔviÊ–Ró|—2/m퇉 ¹J^.‚ œ ê{¹á2B°ÙËs”€Àux“Ùø2´6+±{UU¶½1¤´â°$–/ ¸;›Š+ƒÑ¼YJ¸ã¦þ@<%J˜¢œÑ°¡OŒpXUj6Å53VfJ^¢y›:°™¬Î&öÜ ;AÍÜ7B´\Á6ódMó ÈÆâ³}„ºªØ'³dq—§»»á¥¶˜aðA:`Ô”Ô(®=™gÔyƬL:W¨™ØUåk-]U×Õ‡°.ÑžCQasw]0sVà–¢­«ÂmæA¶Ú'lÂÔGº8Ôò°&Él )ã«‚DÕñ»Ÿ¤ØLÛ©˜kô€òl«Óo…Öœ‚KãYxX¸ŠlÇ<0%dÌN bÉ‹4¯ûÃ9 clp˜©pyDéPUÙÚ…ôÄí0J€RµÛ äNéÓ®9«{”Ž’t¬nó ø€1ߤŠ#Ù›®,`žR¿XHÉê.– ~À’¡®f¨Î^Q8½e+`ýž¢ Ü ŒKUuÛ¦˜>oÅrÊïÃâáÙg ÖhÝg»¶™E¯ªé–©ïH¤8Ìj稷 ‹*J9y°}B´ºµ\âÄ æöŠšx»K»®{Ž$Уy°5Ì7«Z‹UÙ¤gáVýÿ’L+.ØÛ£øÆj¢ ïìËäÁ\WÖ‘Í*˜®uXÄÔÜÒ—€Âe÷¬_íJó(™žB4”¶Ïw^eö|Sd˜üWm³É0Ç«#ºœ,k;h0Í7¾nÍå:×ÊDL³À¤@ÉÖlÈy…þ'õÉ0bFrs×{›i•EÄVÄ–±”¨lK*öü2õxxÖ¶(½½­›µ7PýHî~Ú²?go$G«Xñe{‰­©“í› lu‡j9\áó8Ž‘h*ö]nô\óVLn«²vÜTáêzGW2—>ê¢ið`X¡ôyФ³ŒÑd>†¯D-Ã#õ)¬sZˆ‰Åb¬Ë5¨P™žM)«ÝXjöç°1—þ¸XŽ®Ûã"õEu“\€,nvÆ¢‰¢;k€;›{Ì|µ £U‹¥FuC¶xÄb3³iWšˆ!º›í0:!+!òÌ“l@®'ÒnNãÁ-ƒ<àPBË&V3g–Q•p Êü^6ÌŽÊýœïjJ`߯YÊJØê–#å+2‘‚ÀU®(*_ ¿1ÁoÅ“v’YÕÆeuSéXø&¼Û욇?Pö Ó[•cÎxØÒâæx°”,"`šRwkŸ]Àqãf9øf^—ƒ/Æu›1g+>³v5øïn/;°v>ͤñ«½¥:,Ÿ;¡ â•kƒö6¬}ÒxëˆÔº÷C›:37¤ÉB¡Ë|dý2ÿß^Iণ\¢GîÍú€dÅ@šªåÖá™LMŒ‰1ßân+¥­ 4¥+t…[Wf¯Þ¦º¹#Hœ¿=µ‚ÄeOß§ kyTü·ÅG±Ú«ËµÕr†vÞÍÍú`_·ÈÚ´æ,E½¤·,hê5{ UÓÌâÔM¯· ®ª¸ä‘ƒšS«ÉÜá 0ëâÉËîT€É îkó1ˆàûa —ÍZa[îhºZòÅLãÀ"º.÷é!¿ýxìŒuÙº$/#tBÐf+·¨ôè òÚ4µ`nÕE$pgMÅ;&nq˜'”aõ^¼HUÀôŬ\0¬’ò¸iVÔ?§²d±ª C…Ò)ÏorŸÛvû:nHa“³)Ú‰W¶e·è²LÚÎ *íö*Åeus·+/À‡‡;• ÇÛb_ûª¬ÑfSG(û0Ê ug ø„IUù²Ù”d±¼D ¡3¥øªSÁ?\zòTÝÓØ)ßëdˆ×P_EkÇ È2;#A­0»r^ÆrÐífBô&Í2½-U|ñ¶v¢d"K(vWíë¢Ö¢g¦@³qÒ­ÂÀÇT×cÌÁ1²¹c˜«gÀÖnG!Z.°z·©Ê=ó"ô4<Ëv· À&pJ;ÄÀ©äVr|µžÍUЍUÆ@S’.ÉRX±èhI+&Bu`AäjÜŸS¹Yù(>¸4¥ÊÆ ¾ê,﬩¡ø¶=Ì -mõØÖŽG ¨Áí«‡XÄ i>xð›ú‹,mLܽL|‘UÝ«É%)Ÿ¦Ñ¨UŽúœŸYBe&d/,¤û&"b`61)Û¡Ž¸bãɆé»?h6·£÷e‹X³•笔} æÁhbî7@ª=ôNP†é_³×mó)Ùe"Oe¥«¥?6w€‰eÃu³«=³lŒ\›åi:¯ H²FH—èûÙ*סÏ|›^yÛmd’©ù¦ÛMĹx0Ûü}IŠˆ0786l¸} žîÓR»›ñ§žü?﬑æâP¥OפGžj¢ qèÚ[IY,aÇÃ]³áœVñ¬^Ï+ãX›uû\¿*$n:—ås#˜z2âv»Â…`NÅz“0™ßl ÝÔ¸‹hj´röâò p-v¿µI\.sçqUü̪0¼íûÀÅìÕ͵êÖ‹ž°¸êdmQ0ºGwðT¦7cV;Ï6@W‰ñ21Àîa„H€éª>¼«T³@ÜÂe+Q—|NõžÅÚw»Å-îÿP“5@%ìX¼p3¤.Ŧƒ›©z[ú¦w(Í áB‡[u ÚªÉAoà†'Î*B( <ž@a(aÝqj†ÜÁ¤â¶êc;ÄÍîU¸R\G·E!³ã Á§Ô_6qû9Õ¼ÅåW³q†£Yf[ôv&Þ[übcÔØ'èÊÐÛ¥ØËFÔ,uCg;¬m÷€ÊB"¢šý^¦æW “m”á i6G'²ÂÄæöóa%.&O0µeÄÜ†Ý 'f<_ʾ[¶[1,ìÄ$ï ŒÅi‚£nbUýÐl[Q‹zµ÷f«¢á=yÄ7ChJ¬²[¦l¡ÚËêKø”«-}s{¬ 8-ÃŽQÀMõžðcM9XFŽ÷ã¬ñ¶î0¨Æ:f`qàXs†àô÷¬pnq…è—ƒ3áiX󈿫}y¤Áìk‘-þ‹;íy“ ê<†'R“ …HC»éN Q²‰’Û´îËH´ÅÙÙr¦D¢´mv·Ýs¶?fXx¦efˆ™u}L•ît˜™3÷¹ó*|tïkîæÞ¼Äö:³Š;R»Jxºeê’§ÜX<ëø4SË¢Õ jnÎ!ªøU ž¤÷™:Kðµ ¥Ú Þ¶Í”°8´ìÏ™îÂèx,•7ÃWz±öpîd\bå™`Á,æ[v{R€ˆ£<ÆÓ+[zÖ.·R,)Ùm°•í:f…|ÃfX {xì8~¹i³àâžu削n±ì¤fiľ؃ž¤u«´³iN0Þ,¤JÍದ­”½¹éž++™Àèßp(DrÓ­QV1>ª&l…ÑÞ[³ÅΡ­§šÜñR"ùÆëW;Ú”å ïnÊs¡NçQw˜ližì†Ì˜…Óº‰äùÍØ3PBÉݵ[äTìO‘=´6­ÜƸ++Å6¯ð}{Ýu¤CÌÀ#FGpÒ® HNŒA°†PAü`Rb0á.F¾DR ·‡Ö²[‘³Š7\«ÇÄ«M¢ÝH†~v•£LósC?jÚ㉘‰oš,¢ÓõšÄsUØØNž»~Ã#náäÞ£}GôY¢ìveª¶ç»Xætp[ë½KºAPÙ±àÖ펽Fëp%ßI/ævõÅŽÄømú€K·:;‹¢í©Øl'ƒO3U¾–•ðm;0“Íy·j:Á1û0xn_xÏÄÏņ‰jéÛ¯0Õhë‹;_x„ÂØ(*lŒ´ÕPõO4C°=ü åô°­ÛöŸ/Úþu)†jÛÿ”^(ÿÿ™Z¨ñD,ôÿóâ ááÉ׬û¯^<ûüƒ"æß½ú8yß½œyùÅ7¯ÿE:¢k{x‚Óû +Ê7¾ùýG:£|×›/^=ûèéáÉç/¿yõá¾÷óç¿{öµI7å=Ÿýî#…SãɳïÝüVž|õüãi~èË矾|ñòà ·÷ÂÿîEIÿË7O?h6^ùõ«§ŸþöÙ›ïZËß½þýqk|õÓ¦*_ÿÙ_VDudþ¢*+êÉ—ÿlET†ðÕ?W 5òß|ô+ßû»?'Ÿúøë»axö½Áö¿{ùÃØü÷P[MÙ:VØÁRWãg¬ë›­ªµ%Wô›‰ž=Ûvy§Õ´©Ø5Ž©KpµëY_°ÓJ[àQVh+—ˆ‡ãÛ;LI({¶^*õÔ¼ž°=Êzȶ6Û¥gO àÙe‘µm¦·˜én×[HŸ]Áoû@oíöd=“ŠPã¶[Íñ9㵚§vEÓʹ´¸†Ùj8³‹Ëž•0M—I™Í,¶2q˜$[k©–öf³L-w¯£—¥Zsª<"OTÄIIí8ûXØ+1r«Jo=óßqw{l°Vîb¿FLzI–úצ&§…îxVö^aöË©nú…æ¾Öéñ¥EÐÛhËûv.jªm¹Ý»ù€F¬ÔÎS‚ÇÕ¶‚ÚN®µ—öXç¥T\1°Ûn¿ÏãH¥C¹%ÕûÂÑl9·º7ª L¶gº²Dv”/Õcô;‡P=wiqQMò1QQ`ƣ͙̇œgî[ME6V¤Ù.žé0©ê%b-i<òlÌ™:¦ÊÀðèÝ­K{(«…ÿöÉå<Ì„Z+o¢¨*&ÜÇ’¹ÂÌ #ì÷v(qa]û~õÛÊV’Yî X²a×F¨þ9sBKË¥zéÁ¤=ö9ÂAZÀÉšµV¦µWî–fˆ=f“;³û]‚ÊPq=Þ³«½¤¦rÆ~³WsŒ`ïQ!Òu¤)WeÊZÃéâq< d)žn]mùðpyÌÒæÝrf€êxKî˜#"7nç8,áhcñL/ì–Í›üwêXÆÂÏ}†ÊjÌ6ß»LÈÎÌ¡bS¥aK,зãÆðëj^àðgµê|¹•¤’Z0ß|c‰ûÚŽÍ͈pYXøÞð‰Î…ûkÝÑQÜÖJµÖª¾A%éÛD [›o„«"q{Á€cXÂj|ïÖ±€Í2"{âX(¤f[÷©"3{Lù££Ÿm÷Z§‘æ Çr(£ÉîQÁ\W¾Â~D—›Œ8ËhÒ–­›-v¢ÎÙRUpÒ2ç´¸‚îÍŠ3¼Q4ÿÏFÂwaâ<á«­­6ÝÜö´/`Ý•}å±ó~ÞP‘-à€0sBGÚ›'J‰žéJS–ÂÂöû¶_lZWÏëOl!Ú©ƒKó€ê°%”S¹:ìá>“}†îӚݩ^ :TC3?Ö¦|c¦;Ù=úäÛ-JÅé7˜Tç;<©_ç(=yÊ=»y&«rF¶¦Ï#\…>Óê¸^ÝÌj9m …·ÏEÕ»L´UÑËèp®ðÍb²ýq¦ãl§­;Ug;ˆuóœ ç3Ôº&\ ̃ã<™Ž#¶â6ŒcÁÚ‰–ø„¶[>Ó6â”ûß—Ý_=ãb¹+k×MW˜bBt(‹E„d³#/ÞÔûÝæfHæ6%þ˜Ï|ð2–n‘gæés³2b Ÿ{(`Y75‰íF|Ãйšg¯€ ÕO§Í¾Ú ÙFcyÙõBÑW¬œp(ÇgF¶-<Ç¡¶ÓÔV´ƒ”¥ ›M«²N·k‰;!£ó,/Án”Ë>\Ц[ÓFk;†‘­µRÆÖ>ÉX1¾Œå²ÎzJ[™Ü>”ªŒÜ~^¥×B(ïSáÊŽà—iÞ-ÙšýVèábmæ›ld•t؉uÅb§j¼ÜÒ©,fšŠa?uKæmÉŽ”Üå1û0¸)Bec¾s<=½K´é¡X.©ä¢ì 2®<ñZ#š8 i·øm»¢¸ÛÕžêž”H´UÜ'<³ûÁúÛЋàÜÅQ®?ESþÔŽ à!¦AÅH;v?.Û¦6̯<ûu[[vqÿVž-ê$¦UÀ±•dY9x »ˆöﳯ¡ðÈZA¼µš "…–•±ê‘P¶hw•½p«Å)U¶l¶ÔųlÊ ]á±–Ùÿ€ Ä$Bl&™lg¿]ÊQ6b¬öÍþ`¬ä=èлÍC°£ÚÄàö¨+A³[Šmö‚‡À÷„¸Û ËBß>›\{,¼Sª6y(9< óŽ=Ç»âGøC³4vO.»ýÉâá¹EÝRùõàø®K±¶¨ì1P`+ 0016nnsd‚XžO¹I` Sb¿i¨ð„`Us5A}¤¥{LÏå‰ÝÕ¾Ÿ5yäD ¶¯¶ë²ôRöwb'ÁpbNQi`flQjo»ª…dÑc{U‹k³Z~JlãEUýÜ=èJf¦_fFáÊë¹ØTlà+7³ÈÒfrI4Ÿ„øMTmú ØáÑ÷¦&TIªyÞn»‹œ®ºT¥F¬8óæñX÷h’Û¹­µmqŠ=—½Î”Iëå3׃¿‡+. «ËaÚ«îfœLâ:Õ*̶w¶0ƒ»7žv\/¶aëfÌ€ý~.ê ò!O޹3(íNF0°É³DCWLË 1`û=s”w…aj¥ö$7›r÷­&µíÔŽ­—¥"ªÿÕÛßËfÖ÷¬‡_ÑUPY WcxÁ±ó¸0ðT½¾ÞVöï…z™9d¢ ëHX\y÷Å>áܾÇ޲õšÒèÙüÇÖu,LëÕ-9WâzYªèT mÊ-Jôž¥æ`à©3ÀYZu°ç€{·‚XM»Wïߦ6ýVƒÈctî`UB|àŠ÷)G´Š.ê(W¶éƒ ?‡R@³Æ¡?6VMÜ|OZê"æÇX0Ù„à6y\í#nµ;OqZÓ®ôÍ£Mù@cÅ~ÁJ=ÝËžËDçØ@l–.uÖÁÔ ?VgcèSL£ú@µª"<߸œŠ"° A%®·Õ+ö¼UµÛZåÄöaCöZÈøU¬¯TTΉëò¶ºº×ZU¬«ÃSóÖ•‹P*o¦w)«§ÝÉN™&¤©²ÂSÀˆeóXkÑó¶ÚµÞÖ±Ö}sáb]Øl˜eaw› »*ݓŹI†ÁÜZȇyg‡/4ÂÕe«@;Ã^³;¤ªéšˆóÖº0 K‡E›7dýòzKSbn”–x$&(Ïîɱswê÷ùKØyêT‰ž%ú™ØÔo"xFżª9cªØïaS7Y¸k u”-à n %ãœ=W|u·º¯—Ôk´Äc·=¦ñV×u«ÿï›2€IWˆ)XEnpÓÝz³söý¹Mݾ3~@¾Ê06û® ‚Þ¦3l•Øx*f9ÌìU)Y•ŸÓf÷l«jKžjCk¹³9³ë?¬÷Æ©W‘’9tûר¾ ËNÔ0…‘ìbc.ƒˆ {Ir]b®Â2}YMŽÀò»I^Ù¶–³M»õF…ÚkÝ}ЛªìlqëtU+{W´‚o´ÿtµt›¥ ™µ !]@+uÔã ¤`\Àþ¬{wÔò±l&žXÔÐÕh³5oYqºê©ËmÅ£ ˜ª¾§²`Ö9…=p þ¢œáìgsœã]ì‚5+ƒ-܇3!Ä$Ç+ôNuX”I \mZ´(:wœJrÙÉÊŽ(:Í¹Ê ÀÃPëjÖdm3³¿u¡¾Û@SeÓú»Õ¾öìþÚêÌGSñ°ÕFÐΰø‘¼íH‚̓áÛq k†* k¹r³Y‡i]—ÅìQ ‹akõ¹¥h9̼ݬn°çÈÌĆ2)œ«E&Š»Ù›û;MH÷ë|Ñör°LÌÎRSì±DaÌ ˆ*,QBmU$ s‚; §ÔD½ó:† ~G`®²Ú öJᣠà8‡Â_4;ÕvÎþ‘SµûÚÜÞtãqX+µ2£+#Û#ndQÒî2pá?w¬H Ð6A £vïÙÀT¬ (ª{>*g¦´ÙRð½D©ËmjSy¬»ÄWßî†ÚØÁN!óæü^Qª&‡‰,%¾Á&º3Ìã$eÓAÍusûï)¬t¹[cºqEK´ˆ4êo,&sÊ\è*€GëK†+…6p€ÛV›Ý@F`„•è‰'‰x¼´ Ê™bëÉävÛÔy"c\õ,§i àáVpÄ0ËCÛ<+«Bs'u{ì•1\Ê8ã táiêß±'”2Åß(¸Ýa6×zNي¡x$&MÑh;œÇ|)Ím±€ï6öV[ލ|¿íÒŠí©.«ü !j•Ôëž{Ìí8 ”Vû–8IÚF±H›ûû ‚úæ„Y*®2X<šƒ€Ÿ;‰ˆvð¾³ ’ ¯Í¤†ƒ!RõqÓ& ÍfFˆ‹KŒò„#À‡nÌÓFYvj7 Ò~WáV ße?,ÒM2áN£q€q—‰¹Øó°w·K*êªñ”*ë¬Kä¹K·Ê­Þ?U˜U(rÃ~qËlBài¶" ¬¡~3…Ö!€Q «É iž˜@pÁ€Dï êðA$Û–¶l Fˆ:Þö®^WXâfå Ê& ¢¶ ñ(¡{dÚñYî§2²ùØf%Åm'&Óס&Æyà,RÈj„`àe«oÔK_¦`}ÍXù”«S½-Ù,Üÿ«ø¬ðI ¸ãt¬îØÂà‰ø vŸ7vE SZCMzsmº‡ÿoÚ4´d×&è´Lõ¶FP5ÝøÝf蛎˜¢]ÐÔgöµº[¼ƒ=†¾¸M’,†‚AÊÛòˆºU/Šn” ²M2V´2Úo7À­¡ÚÆž¶K—­FöY¿½ÁÔþk‚DÕq“û»‚,jqãrz}œJLDq»GâÉCè«<ä'Æ:ðÛp\mXr®œ’i2É)‘ßÝlwKœÈxÉC¸á^¢Xd˜)÷!DÕç‰^Ýþ&XD»Â¥ ¾½]LDW›É¯pIŽÆÚvk  %fH]Ë~µ}¬Œ c”)Sw[,wÌH…}ò”àãåðP#T-Åb$'k–bXö¶Iƒ`þp¢ªÒ$ˆÍ ‰l)0qoQ%W@p”NZùiå“â nµFƒ»ÈbÃg$[mJé¡y$¹ç²ž’/bmÏ6wé3U§iÉy.wëÛÍÒUrù¨Ýö\'cÚÿ²7kÆíÈȇÕ)y²¼ \»-éî 2Ô³°¿–Ñ@Á»›<2po‰–³'bz9Ò6wj b¡Å)Ǩ+»I,UÎø-->ò Å¢1@VVÁ× ÀL‡ LwÍŠÕ±DmXº9â¹Û‘´¥ ädz’ÌÚ­ˆâeÃ|%Õ—n¸"Ü¢\ ”X…–ÖáØ³-´hÀ2°b¸wt©Û`K=æI%gßévÛy-vçTÌcíÕBG+©nÖ| ž”…’<«Rjž„e~=dž`í\¹<ã»Á®–qô[m`Ó¾Ÿ™(Q7+j=Ãñ¦Ûx’+k—âí6Ð¥6D‘ƒ”xäglU2gÏA?”=Ú/v[§:S!Žzzèá½[,ÁvŒQ´©6Ê:¶ ŸJ7\SoÏîNºq»)… =É “ ÒüªN£rÍ5§Çu—r·ZHpÏŠ½²N×6[ö© »q˜–0ÿQ'íð`]ù;¸mÕ=¦TÔ²sžhµ©Èe“° ×ßÞ@~8®Ó†kl¶Y©JLD(v KF^Kš•á´ç˜½¼lšq×·.©Xm¸¦ÅòxDv†Òä‚Õ3ó,Ãv­”ÀúSbßú}œ_kí!ˆ)Ú™æp3ìÞ*¦ÛÁújpØaÒ¶ÃÃãK°OaL?YMƨKZm”C´²rüVèÐJÿ-6—§Âb‰Ñ6öºTÄPVÛèØ¸v]¦ög²±ãÔb;L~·ÔÐgaƒÕê7ÍÜç-Ƕ¶Î.^·JÎëÜÊQlÃcµ0µ˜ïlT€ðó´€âž¶Ñ”ó̇•€Åz¾rѨ‰9™ÐzÔ}êmãijÝp³ãTIƲ°Î#ZÌhÚ6YçÅÜ+o¹c4#º#u°,AãÍvI"£Û_›-†§ný~/fÊ䨞P´¥žjó,ž½ðíÂn•/À¦ 3 ìö–Ò–ä-·ºÌÝͶi?žjá Müˆ\Ì#` BN7]¹K6Ar¦nÙ€Š^á§5èÉóɱ6[£šæLž™Uf^x®q»³ k³ïçÂý¾{v ¸ѪZq¦yõÍÙ¹¼Ã‡C‘uù?ofjàfžñ†%HcAGæ”ÅæQÎì’—+¼T`U¹†f÷ꑾúÛ§ªãÒ.Êo¨Š¦l0ìVÍ‹i×# 7ïmvîÀC­Jî«hqxÚûµ\Y~ÑT“›ïfrmö™2 ÔŽ‹ðü° †{ä®×+ì€rB çEHáªÓ»*ˆ ä¶½œǶÙ\ ²\ÓéHÃ]ÝÕö& _ÔX½ýû“ˆ+k€n ÝÅžÚGÍÜC±ò]ý©ŒÓè-II?E®n¢nt«›cf»j€³œwXASÙ­ýËC`Cìi±âÆ^{ ÀõN¯K4°#Îõd¥Zäì¤+¡‡ ¬©\Jd ¾N°ìî\œã0‰ç8;3 ´1Å VîñJ½•><¶&°ªóÚ—h‘ °')ßé&æ¨êž[¤ò÷ðÈ 0ao´h[AKà‰¸»Èz^º n£Š…m@@¨Q¹ÔÓî x¯Ê3;añîË~¸uu}VEý¸œcÃäÞÖ¯çÙ&ÔFGV¥Jô ÙÙA´º4µ-¢ýaÏCí¤d#°µòrÜOç2²EÕ…ÕakšªZ-ÑN½*ÔþgPãÆXE¢íß¶‹ÚÖÙäÃMu®­ö…¢Šj!B]`ú:ûZº¾ß ¨mÅ¢Ü]´£~ÁœTãŽ- àö~ëôfgµ{ñ;æ_úd–(~iÇòG\ ÒÊøåÙ>#7ÇjÞÇnª©ð¼(+aÛ§†K!\Ú´¯¶@UaX ª Ü™úÄ+N&ÚÿonDš²`=£€aâ—uíÆ{;ÜÁHO“=W¹Ü§ÜÇl‚¥yáÌï2ÜöUÕrì³µ'qrö˜í¦úxpj[—ê;w>aíØLA›;Ò8U3ãeÚÕí—’í°ø¾Ôó×Ó3›kq\—§&vƒ‹ask<ë&m>ëfiÔáìñ¦î©r³…ß À9q>ÍìÐk&rÊLœbÝîÿyBpÞÝ6 ED“f°:'ø´Tì—mcÂÒ.J»Ìðr~¯qÍ3£´ÊŽðD`ß½ª—‰’¸Eõ° 5ïËØ‡Û4D‚—Z´ÐZü-÷ëV¸ý$”?¹ÅÞXñÍmšK Ÿî =ôÿT.>Þ+èIÙõ1ã€)¤×4Rn‹P¡(C³ÿ›EëÄ4ØŒ£_¸õVÚH6ÀæÙa=­Ê>ñ׿tþûþÛŠZÃ_ªjåO¶¬u~äßf]+ö?Ha«“û¡²ÕßþJ[Óþ¯°´ÕgýÓÚÖlqëbLëœðßnu«þO–·ò†ÿ¯Ô·þ ®? ëŸ)rvðÿWU®ÿ’Ì?©¸ü~‰å_,“ü÷RÆû¥Œàä+µ z14mê$«–=JÎ:/IAÍZÓF6÷ul£x}7Ãm®µ/c˜ô«Øã°*MµSçœí߯°7ÀõÍq—PljÊ~Ù±rëó0 – ‚õ2´Ç>¶{7k\ …ܧÂÅ×yÕÄýÒº»ív¹ßämû¥"ç=·LÝ©4QN^œ@Ê*a殹¹Yí!šªýÍ&\­Õ<®¥Þ<ç ªÝMꉡ˜—,bñDªc\æmÎƒí¨šVHءɩ¶Åî/3RõÈ5Ÿµ†^™óv$ëÀ‚íå˜ô¤RxbôN[ç‚®µùÍc QÕp5s÷`ÖX7<ÁÓ¬–”Vì<ÊiòfIçÍóI«y*s“‹Ñ¹-6en–s=¼mŸ)û T)’ªLg¸êÔ)dñ0§ Í2u9à!¡òõ¿À»¯¶+Ôe«R[•5EéÆMßK²SK±)#lSE÷ÛÆÝ|­mk÷Ŧ©ëî^¡­Š ÜÞÅ É?-þð¼/ãp­’c0l±ÞarY´ÇjÚ€Ým„]g_ßóêG+,«­ç,)j¶»T¸±o ®y%Æ£Ly©«-¹}űvJ4;­ÛO9ô˜ê•ÎÃ]’^*s•·#æ“õn—9˜Äs7fáÊ¿ ñl,TûÛs´ÌÓçØg£ÖÇÔ{SG:Ì4±½ØX`áv”äÛúÁ-•™QZÌá6©–aϪRzŒ†#¨w¼7›î¸‡©z ËÙ¸Ó|Œ4ÉL·GÕÉkÉ.¶6ª_õÊ}U×É>”yÍ™WfÁ.õ,«:¤0y›@‡³õÓS¶[¹fÄ1ÉÜïhk“±-R åZ¯¥ '‹­jXO·Ee×h*e5ÆPOëæ,t3£‚€ÜìBvÕ­.{H…‘3§rX¨”»¥Eäcœ}f®«§81ü²9ˆ˜ày›$`Xn›9yøÂë¬fÓ†Uë±ÍŽÐV|¸±%ü]Í6»vÕd &Ý_,¦Ý^„œ,žŸÅcZŒŠÛjü­çuÏ"®æ5ö4lÙÌŠ^U1í*Ü-¦-D@ÀLš›4{£-–ÌSµXo¶Ú«±Ÿ8ÓR6ëÍV²ìå²wýng_°N€—§^~Uhš›ÁQ3oùdÄg‰U²x³Í€…:Äî~-ÝsTO šò±çj5Ä©Ø>qé4[Õ=>Vk²ßÍßÁ£2+L˜Æ–}+ØÍ+±]nâDë[ñ,"ݘó~Û‰ÛŽÇ>ÕVq /Äj0Û=[œÍ.•{­ÑÜwñ„žÓoã4¿h¨êj=<+ÈÓŽeµBØDA3 &ÏYãpÍZ¾Íôå)¯&«aS´8†q{ð\AvÄ…›Ø\LÙ¬U·ú»á7í—¹{ÉÛªC¯ùP©¹á%ÍÎì¬Tµ3ßµŽÜ²¨­˜5ÐcO3åÏÓÞê®W!îïw¹.Ó¸‹ l† /|*).›ÕÖ½S3Gqlžð­ °hmâ¬Cmí&ïu@àegæ’'Â!ÜËšl±i…$Á]QË“XbïØª (6»Ù£Ú*#ˆVÛ Í1cÚ*0­˜1g^wcU0æø‘Š£fê5‰Ó0|fª…˜žØpÔaéÞÖ–ž{3ƒ1ÚÞÙMêU{fíÆÙf·ÙgÏmyÏø˜`Бç˪Y—{©{æûÍ2 ºóhu¡gäfã¯[PÝj]…ùIÇYÁzÝläKÜuY;VBöðÙÙ|Ùö0 ÇÁÿáðx>pçÉHE‡õÂ+³\Ð}ðÓ2KA?8ÜÄ'4M­ïöØ/KsË™P™£MϱÓMìÝÔU{ñÜke¸¢M`×u·KKõ€Î^?7fw87E=›n62!b/ç8)€ˆU²ŠHÛjQ݋Ô”`Ð1µO)† SÞKQ²ÜŒ{;ëíÛŠã×eq½g<Å¡¬H˜è6ñ"ršæ€Û¸XÝÕŽvÖ)¬€x`å²3}j¿ŸÖUo] L;Ôü(6/H °–æÑìU@ŠP<ÀŽ‚»I/º‹yQ»](î[mÐ+œ¬˜Caàsç:ýÂìVE•ම’°û²›”@Ø5§Ûòïã0q dë~½e=:Ô¸woœ±À·îpÅF>µzÛàw`5ž{¾’÷ƒ‡ë#ªv:g¢Y°<®ñ¶Ó.¥RÂ7(ÿ\»±+ë¯l·J;îbkFŒA-ó~Xm‚©Á.3}’iNì»GdÒÔ7e?Ý÷›uˆsl[$(ÝlÏut(Zp±îTÍ‚±_©)×`¯Å†smëÚ¬]ÅüîY‡tŸÖœ£\NÌi®Ê°óúºY0d驺ºÛ½xÞ¿MÝ Ët$õg¼¶™4ãt^¶ #:*†Ì Lv÷:ˆz%Xu“TO`¸8«ÂY&„mÓòTTÙµŽ³=m´›'sÙd0(âÍb¶`Û£I p¸¼ÂØfÏNí—fŸ …N±Òæ HÛ§ ûÏÛ×­Þˬ®3Õ.TL‚Aà ÏxksÇ'›µG$¨k;ÏÙ·âšš?`1³öEëUÔD°Ñ® ˆ’·Ås¹ d·=£sÇ—rˆÃVq#¨,¼PX†Ì0!U}jûð ½í=ÅlЧR ½‡)ËÉÊNK8òÕš(\èLx>×Zg)-´(ώͲ#¢˜q‘”Úî \o.n77ê­0<…ùVÃ2ðæØµýI‡I.f Ÿ¸ÑÅÚ_Æó²¦ÊmM[¼À¤+È4ċՀ&Ä­SÇü5à‘a- øV^Í>O=§bqÚÀc]6'®E­ÓÒV;$A_ìjGà87+dpHÍàË‹§ <¯M ,@^ÛO>XöÛÜG¨ÐÀ¦ÊlãÉJ2?ó¬ðVÄÂ’·ƒd½.UÕ-t7g7S¥‚”Ôô@Ü¢éΊ€HÓŠ@qÁͶ¿™Ù´ÞÁD¦6õg.05L ï½ëÏœ|Ÿ-ÕÜ{†Y²60$lФ¥ÕÌÞáRûΣਜ਼M¾,á0w> lâ›ÔݰæÐ‚„c‘óuƒÊ;Íž˜€Û´øHàá1+‹ƒùDÛ!^wÂD¬E»äÙm1ÆÞÀŠl(.Í4;bÓeFCž¹gûLë Yl‰èšÌ Bç¡–¬ž;ØÕô{hªJ^–rÚÿBQ Eþ[©*™Øï¯Ï“Œu,„Ú1³~wжÏ9†3înæàj‡Ýq&æT͘l>W ÙîPwX dö•°Ô ò¸Úû:|¶¹…ø;SóÝô´f—² †\=ºÉw¸œÍ¬Èv©ñwûáóTðräLÙÖ¨X»uw"J˜ñÑÏ­}Áæ•3&CÚKP@Á.¹ÝÛò›lÃÚfUwˉUJ ¿:YLÆY<Ó ­+î‚D9 Ðòt,Á¯5û$÷,<-vÅÙQ® `m?2Ù­™TœÆ4ì¯yïfóZnOtÆ÷gw1F·ÚTn©ö\]xá¬C.oÅçàã7ê3[p[Íwo·í˜•Ðìk;;øÙ ¬Û筫άf« ,µvÀWV\Ø%ñ³rš¡¯j•aÔØÇ±'«67±¿Ånœ`BuÏ.CìrÃíݦÌnªÛ;a §ø£BWQU£Qî÷Ãb7”ô(„œ7Ci]µ%@÷ÑUƒr3jUÃQäƒ/#øô°'íî!U©^°Yçˆ-ÕÛÝ&“)=¦Áb¬­Ž=•¬>#Th±zžü}øQßÌ3\Ö7Õ„în°Ø/PÈeãÓXŽ™÷ØŸ¹§ ƒgw$bo2ït¤„Äš§²ÜѶ„vdzâ¹éˆÎc7V•Ç!œG»ý¸#ó¹í"G²£ ÄQÏœA³&éZ§)cD°ƒlW9όx=›ài«G I9Dë#›19‡µä’½ÂâXÕp¦àΊéýÛl‹‘¤j±YÓáv«wÉ´â=ìúUU L8u0™`ÌÑ·ÀuˆŒ ዹÍ+NžÈ‚#ضmvxÔ$¹D`ñÓ~–Ä;àÄlá @;­-Æ©ƒyÞ³ÇÎàl©¨x†·U2fÔ¸œ¶¡P0$«ñig“cÊ÷úíQdAcvšíw6‹ñ ÆÉlØXŽ6m§Î„B†sUæ$ØŸ&¸ßÀ~ë{œFö˜óD¤@|·¨òåþ’;•¸ñU=ÓbwHhiŠÇÓ®~lF‰S·L°{ұ܊©–ʲ%ZÆÙ¢½qñp6ñ8Ýdp×%>ë¶]ìšÌ^&þŒe·NŒ;cœÝW̆Þ~?Ü/†Ã*£&õ5Çêz5›‡SU„È»ý÷Àé;­·Õ#éaÔÕ²Áz£ :Úà87õglp^”¨Â{Ø-;*ŠlåþiVePÏc_F@§,ˆ½¦±} µem=1жY†ßyZ[JÖX¼gëÇ®óq;¤_ yÖ*Ÿ:ÏÝbµvÛš–}é³ml@R[vÚ4†»¶vÁ„¦Óš=ƒ9穊Íqö¤€œ Œñ cé=$Sb=Ÿe0™¥ÁD&Y% qÕÊ™>ÅÅþ÷®¢*·[S¸4ºà™ª´¶AtR&$4aR2 Âvkbì«_Sб*qÚ¯kµIÑjZíH Kèµ)SwÎ=gm?¦¸1æÔÕÔÂì,­»GÑ[¯Ë>¹®ö³¾ŽÍÞo[ÝoꕸxI§z›úZSf[§x!nñØÔ Žh3ªÝø‡~0 —$×Cš®«^,<Þ-˜îÊðØéÇVNvsß 3õZlpÄ*ŠS¬Ð‹ÊËžÁ½‚>L̺•”ìC¦8ž žµGÞË¢,/ îØô>«*:6Þž#l#0gõTef˜GÀ7¹ì<<«…Amy¶ýeuaVò'–7ø¶Í$nq»açRõì„Ï Üš’ŽW¾#“\‚¿¨(£TÌ w>wë %c8ö¢Ô¤ýS~òÄÃnR ¨ ”Nͺ6¤6Cµ‡kVZÀnÆá`Ô“ÍæÁ0á^wk@ =ùÁ^×sI6s ¨rnÕ<£ËZU¾Ñ3› ×l–8q"¨³bqrUÖÙºH¼2Æ^-ðÛ,ˆæö knóD€Pr`'w$þ­7ÄÆ£8eÝGQ °õÞF2ÇøkEðS–ë nQnDœÛ¬%V¡=o•Ę@AYq †Ü“sï5BÄêøÏÕœÿ1å†ÍL¸¬µˆÖž_éÀýß@&ì–’l¯Ìåñ˜ºÙ+j¿• ¤æ1eU9m°•<¨«ª§›ÇžÌ‚Ç!ó9ÜŸ nW:qÝìÝ<#iXïZ¹N!®vÚL–Ø,li±5:á°ÂÀ&E1 õnσÒWxÀ,%3ejeàÔ wAŽÃ>dÇÅV &‹z3µvÁ‹MéC)€!Ø8?R³² »«¬Ù_‚Ôu\o+vžk­ °±—‹Ê›U㘉4묲H̬# a,‰H ZQ Eœ} ÔÃÛ)Ø£§Ž1ßpÌ–Ós“‡®2ìÑk³G»5V€ÅFéÀM¢Ä z·ªÏeçºX8‰cg ôY÷ ¯h%Q(’Ioª9_‡‡’¶°m¦Èý¦¼41vQ¿)ªä¯ð…gPª'C*l €ßjŠ\]ùc³,=/y¶,ù´"ÕÊlÕ-³Õæ±h¤Ö>ݰ* ü‹{ûÙ¢­·w=­‡‘µ–•áÁÚ—!Î|+»ËÔå»ÝsŸÒ>GÜ-À7)Du{ŸÂ¥êŽCaõx(†µlž; P°xM`‹Åí³¥ ‘œ–mz2¦¬w[°¿ 6{ªÝEðËæŒ“Äâmá¡Öƒ+Urç™.Um=ðÇ],IMVqé¥Aªš`è<áqXPà j´ŒØp]©¶Ãô¡».v`&!|ÃvèÙ^ÏC( PרÅcSë?¡ÿ°*$‡jÌ‘¨ }S_JUâÑ¡˜ª^Ü,ÛTm!tŸ&“(ða_Ó›ÉZíYp®l‡S,Ú&·«JnAÜ7e5M­%³8à *¸dg.á\—d†¬\Ç|7•~Í{àÊÑì PÚpvûT±˜L vNXƇ{¬¹/ «¸®4ŒýrÌþ\±bü´;϶tÎz‰ ¯VEx’[œº‡u.ÃØ{™Œ Ê@@—6…HL¹‡> `F%ÄÖ¦ª†DšØÅÊ\òˆªî»œYÕÅ3¾] ²«…®®î”9¿ÔeZ¡Ÿ€¬äáÉzísñÚz^åZæ{v9Ì×.n‘Êc„™¹=u¸6{/©Z?pÅ»=ufüÕ·ä<Þ`5(Z1C–9ùC×c»[ǘnÉøºÿ¹™5­<‡±sëâ(JV¶YƒâBXëÔÀ%²»1ìº> åž¡82ñ;+l2¬*˜ÌÁð žP èò(“€7lö Ú´Í‰ÏÙ`ùè¦ßÝŒiS…Ö5‚àT¹`nSknõzñ·¤€Ó;M^µ–ž˜pằp»«Ø‚j[YAÕžÝMí†ä½yàeé‹Ý.<(&.mi‘mèsìÀ¯s)g(§¾âœÏÖÝð´fn›ê÷9€¤Ìp`ÅÎ^×ð­LhÃò·ƒå;ñ|j)츩s›'‰ÝII¦É˜î?ó[×ß…ÉÜ@{_/L£Z0ùó¶ç bt›êAÔV–}4 Q˜r ‡yù=ÝóØö›ìÕ|™Êÿ˜Ú#O½Y ä„6å¬8£b¬r¢M)}F¬íZ`ÛŸ;|÷Çè9hÖÃh®ŠKwO¯ïžaóJÍÖÓ8¥l¼ÅÅœGõíÀ#EâIÕ@8¢½Ò/Ù†Ä ©¼=›j3ïô|TG?¯å´Iðg¿‰Wî®jÒ™qêöKÑi(Ô¡À‚bØy“^d¹¢ÂX .ÓxnT¥…=ÁÆñâ@Yݬ'LÑ~R;Üñ6  ŠÅ÷ÔeÅ2p( áq¨>Óêo¢³ÚPܳ6<v“Ò‘ÉœÖÈÅMÌŽÙö¼`÷±ÎÆI‡r_˜äXl[A4nšô;iw¬Š¦·ýôÚZòÔWÊó5û4\'÷n‘ ±·Ø4ƒÿºí/¯'~ª· ÞŸëÅ=Â;†mÓÅž¦MMÅ­¤©Èh[¯Ë õÈMzVîwjëÚn»ØNb“®+šìþÛžÍD4vWÆld‹À4®¢*™§¨v˜À –Òf~µâ ÓnÉ6 ¬,Óa.Oñw ttO„I0ÕÂÓ&žÕpŒu\ËÐ8·ëÄÀÓÝŸÎGOÃyøì†;ä äÎÊ¢_J&Å™DÌhBrÌ„a™*N¶«¾»¦Y)”Áù4I)Ú4„HádªzhñŠ[÷Sj©ÛøD}áh€Ñ4°2*1‚²v†Éδ‹ž6s¸Í:Ûçyå~-Ñ2·;\N³Ÿ0xTóJÌ|O§5E¥„bU ኵrÛÞÆh̘>ŠlÍgÜ­ž±Kp÷:[Z%g²±Û¬œsÚ§€"þk¶ 8lvå3‰Ø˜^–ÜÙ {é•!™CuJÌ–‰~¯§lG‘3€ÝFiÏ`Pî(‰€†›gΗÆrÝ$µ,ÜÙÞk6n',fSXº}².ûOp®Ö´]1Úko#J*— €Mhó<éÄGgõ†ÏÈJöÀ¸+SsåjǶ„éîý°É—+¢.(X uÙ>d…{ÅFÌk]í“ssMÌ´ñŸG>*sXr%¢†Ád,«;Ŷúb%\+ 2`c¬Œ=³ê\ÚíI¦€Õ$PÛ.E®ýòÒ"²ãÍRœžKoˆÌd¬aÅ%Æ6^öØnïr¦AÎ=ª]¼ŠíeLv^¶öÊÒ«`»Ù§:§Í"ê^wPàµ1k@TÛL6»Õò£‚ÌËîɘnånÕaɳW¥…¬^gæÞòDñ\êáö•ìéôáòåaÎeG¥/¹bq—^Å’`á@6ÐãiÈWd ê±ÌF‘- ‡1OƒÖ=äïV^ùå `ÀûöÖG=*è{[‰Û2®K .aËž0³]AØçÞó: ÊMhÚ \J^Ú+&{ªÂ<<·XVoÍÝ`FÞâáöƒ…Cåð™dó6·Ëf=Zê>Ò”å9Î V¶xt®³Pûêjÿ[ÖYzÛ’åÁ›¡«lo'6ûÖ.wîªg”÷b¶‚•&ðeh+_ $Ñ‘²Z,2Ë…mráŸÖóX~x«~ Ù\Ó9Æb6]|ðC% Z*ŒAjx*r`ÅÝÍ$–Ë5Õ+mW/»g-šªý“,%îǸ»3Pϵͤh»%Z¯gW¿;MÞ®t’4—)ÚïsÁ¢¤ûãh-«RÂf_H¡ÝÞaÏk±…ãvš—hÏRpžaCª9ôÇn[·!ƒ©h§ÍÓÆÁeYß ]åq&äô©™úÖ1¡°X>g2H¯½zíµÈº¾‚ÙbªŽ¶u5YqX͹©Z†»y`±ªÃ±²˜TÜötΦae½€¶ÅƒD{=`å¦ÔÙ»c«Š-…ÌÝ¿¬Á¨–-f«›Et;–­þ¥ZQ\~»-O±øÀ._Í,a>^”º6ÝßÂêýlk Lã,ïö¼±% ©è®øÁæÖ¢›_Å.y·‚+¥('mkT¨6Nõ˜m4×Ë–|îÏšaÈ:ˆn­,ö´îË»d¿Ü_UK´Ý¶^°y¶‘ƒò ­Ûxdö€wÓo³Ûº‰ÐÖMO˜ ’x,;¥Ú»×ÓÂF÷DÕ¯V½hÃO,ü²—ÙHç•ã¥fŠÍþÖ\Íòuû&Øê >ÊÔÜ‹ºH®O Ì"%3°ÎCÕèMÍóÆ—WÙÕQïî<ØáM…ÞgcÌc9íš(áµÕÜ1¬,ļx  ÒnÛvO±æX Tí3šáâ—ý ðƒ[£ è¶jq£§ /ÛfRMäØMU<Çu¦â1ˆ™¯ÜªíØŠy­{:˜ìí´°ÚF n¬ÛìÞJÏSµòØl0ÆÆ³¥«/ɲ nú„äû-Äc©µÜ:©§GWbàš•‡»‡Š’),b]S)‹y^sîŒÓ‘ÔmŽv[0ã*Ï å†u{Z¸Ù«Ñúþ:®úq­çé&ÚÊoyWö‰ugKÑÀ‚Om³&EÄ´V·07žËÜõn.ÚvÖ*‰-¼?®wõ<€û`n¦\ÏŽaŠ$†]îUàßÝ6ÙÌ ÇÎí`Ñëc¡3ƇÓãKÒЉlb‡ĘÀbñv›1é:lÑvqsüp¸¦*{L=[~Ñg>ƒ),WTÌ*•ýÙŽ:¦®·ÕÛýÆŸØ`,î£î[h¶tû„ˆ`{šâ. áÓcÞÓ\¸³¨®}¶}v%ä‰Ödi±q-R°Üq>XÞ`p÷:{¦¬Œ]ž9(D¼ÃU[ ñ1ìæ¹±Ñ-î™ËÁfØFP`wl§ïÝ)ö°÷àè°5oD`á˜Ii60ÚU¹Ã£¦Ñ­9Š6@µé÷uñÐ ‘ª¿ØWz·äYå àv_—1Ow\ PãÖu2Ù6Þ=( ,uZÝ[fÐ0pÌcîk¦N.êoÜ+ë%_vªn}½Îy ‚;™¹£žÈU7 îv ¿¸Aû pµÝãO”Œ;Ý«¶4-XVg*[;ª§ô)dÜE$Nïvõ½XC•'a1„^ÌJ"áðo’à©-³ïY_n皉¦œœù ¶bc½µÄ˜FË)ñ' NÜo7Mùð|@Ø¢2¼}ÑÜ—=†ù×q›UÍ0xN¨ô±dµiêÙ¬&*…gl™¡²Sõ†ÝäjIxC´nó¬FüÃ,£‰°<:vt«¿nÝyñˆô}·}hdº7+‹*nbµ­6ƒýJ ®àSÛÀJ¨ïr™1•Íðù*Ñ}ýÛF„6qQ&¯,¬IÝÚï´› #X]’ŠmŠÓ˜«hßA0Wîö{Üv\ØbW° DÓô­$´àÌlâyU ºé¬ÊÁËÆ5WˆÙ;‡y°Z¼ÅÌá¿a·g¼í6`jo7çU‘pT+/&@‹mæü¶0,ÑìOë0›[éA–.íV1ý2µ¸qo›H1‚xïMUó`[9æ Ø@(»Ýe²ýã÷)e¿=îÞQáê.ØdÍ.Ϋ]¡¼Û—¢$7TÛrLãp´¬6 íÔiF+ć õ2ƒ›‰u?VEþí^¶MížSé»9l2\,8>,ˈfÜßFÂd³7ûfµ ñÜþîûb²¤íz @9V0¢/3¿W×VYÿÀÐ~_JÍ{ˆª…Œ£ÄözH˯öÏ›I‹ÑbÒ1Tž´ 2PAlÖÄ¥M4Ù˜0l™!°Ãn\pýY]B`¾FíaßìØ«"WŸ¢gÞ‡©à¶ïö¤jká2KÆmª2¹Lͺ¡_Îø\絚¼®¸¿Wª e Œ¬8Ʋ»Þ•]e:!Œ*ì]¸ÝÎ-åR«<\JŒY†½Ö“¥ pÐ,BmcQKUÄ$Üi*‡µë*— 3ñ`Ì›{T=ÎÌG®ÁElÒÐøAH„Å›:p_GC3éܶÖZé˜ò„àlN¦©•¸Qûæyñ˜ªê–¸$ÒQÛvø8ùj5ŸÔÙ„û4ÏýYúƒé| ¨™)+cñõ†r³QŠY–e1>+zT›œ)êñC­a©-f`;`»Î®*JÄ"Ärõj“%ÏÒ²-äðŽ»’L«gWfS{à˜,°d-å#CËâQÆ'†[ô ¹]U)à ½sq‹Úx=Z­KÍ‹‰Öë·GÓàñ£Añúy¸–²º£ê’x’¢N_x@Ù–h¿ZÂzˆ‡Ùæ¦m³Q™kÖ“a5 ® ~«–èA¼ àJËa¶ûÊ2~Ù‘Ð\/\M<Z@Ó6‹xTŲè°Ù˜;¹(<ÙAÄÐkÅĈÕBbÌœ˜©¿¢…Ñ¢n5ž j¬w(â®¶êÑÁÊjÒ¹êvx¾Ì}ÜÛ]L§°9 ®ÖêîùëP7›üOsl1k¾ñ´u-«‡‡ß wg·ìÇ>xMÀ‡O[gªÉ i£fS¾ÖÊbºÍí´Ñj6?Ž «D„d÷xî.íjÐæÃÔý˜êÄÝ$WÇ…ˆGÄnÌa‘e[Àñ«kxüßmO@r»M¬¢§®ÜÕfýµ¨Ud;T~µ–B¡XBOçóècÌõ0¬ ùV°)Á¦’Æ©ŒF`o5I²°$¨+÷gׯxç=˜fz¦0ÆÏ;¨„›6/Ï]šç}sJVëÔ§ðšm ¬†NÊ{Ù»q¶<›Ù5غ=öb¹m·ŽZ zv{wuäjþ΋5ŽVš†svìŽöœªEÕd)æçãÚYJ®A#²õ><“E"&·ù³ŒUU¢`s!ûœ1Mɼ]ŽÄ¢p•ÅΤ"xcè}]!§­akzÂIÕ.°±)~3% â½É´ÇuWƒöP5À&MjJ43[­Ý°óމâ[•eeQšÂl¦¤»bÂh\êëY¹õ<õÎŒ2«‘X B³Ð§Kx×f)6qÍžÎ`PŒ"ºíÀ˜Õ-HÍÔ(Ä(ûoO Œ¤>—-eÖä^à˜ŸpH 7×ã¾=­ #´-Á¢¢i`ê”hiåÊãàÜWf~31›¿ÍƒsUÆ¢„ÙiŸä5IQ€Ÿ—-޵ÆÛúžãn¶@c}dµÛ™oë’RiçXJÙà;É|®¬¶Š½’!ÜBB LØìú[¬¦Pp¥*‘Vs“¸uÓ³TÔTòo»g[ìcØö¦›A„SÃÔÉIX€›þX‹xÊælç BQ]Ež!åo´\x¬ #Ô²Ê6]¶-ÕŽGäÛÝy‰ 4Í÷jR{q[ÕbŒXŽÊ®›ÂÁá~PTÃôŸdGÎmvD‰aÁçu{¥@*6;zün@Ü#¾?Ú4^cAø¥æŒý /‚;>–]ZwÎPËÙƒæMô¯FÃÕÈYñac’íºëÙLŒ•ûuc6Œ^“¢\ê€fÑ\Âä¬Q ³šÏ‘€í6ü VÙˆ«Vû ,LEVÀÖÝâÈà6ÕΣº µYe,ÊC3* ÉÕ–>jw™†¸˜7îhÃ2YPqäŠû%Z`]\J³1ŽSê¶¶„ãtocx#‹íîqRø}~/"úÒ {D<èôì‰}Bül­mS&°Í‹âH² &µ¨_±JÌ áxnÍA«P§V€¢ÜP9 Ž \sRòÁiÌÓÅ’K;š¥×¦Ì fÁ>b´[(<Ð’¢°=¶7»¿™¥[´•F³W1<ðžÀˆLêáÉ1ì¬Èô¤¦"gÞ—ËTZK«m›}âq­Ãm¶Ó0ôYסüÕ]¾ç²šÿVÙ´Û2ÚšÑòP#ÍJ@½6W¸N–6«ÝãªÙM–É'¤WOL§ž%ø¬™!«8Ôm9ÒªÚ_>‰$3KRq“0gÓ]ÜÖ`ll‘«„°Ûÿj¥0,ôp6Õo£˜p{u?eã-¬^Ht²k‡@íIûÕž0UÙBÛ~WVý-˜“` ƒ ZÇ¥Üb÷H5Ÿ–bp_'hW ÝU"õņ‚aè áõˆ¶OnÅp¦Û® ¡Zó²c Ñ3䜲ý…a’žÀ,·ýð¼à,;túÂÉc €4 ö £Í²¥ÛœõŲfüóB®*ËÀ‘‹â€¶f¬-Žû±ù.è㘕ð¸  |öê‹D‚ͺCC]­,VÏCO\h#ÌžC„J€k°âò¶@0¸ßªO‚ `ý’¢so«²q Æ5}»wplV̪Î7~1›Þ±ïâïåèÜûUû…Ü(œ2{'AûMÈ‚†X}{îŠaÕÔ¡eÁ:Ss‚r]S›pÀ¸óT§Bmå¡ λûXH±ßô9yÃ’í°Š½C·ÿ›»»ÿZ—¥–îg‹@ßí¾VÕÙ 6ë)›ĸmKcÙªò¾MÏôÖ¹óÌ|P²Ë"YÀ¥–¾ŠgÙ&  Œ¸ÜÅ2“Õó‡¡j~8 §ê,ܪ¢Màºkµzz¸ÁÖ•Dip‚¦J!këiOG³Õèõ4»ÝžäQê œèÉŠi¶º°ÕŠ¼ÎæÁÆ¢^Ï}¸ü6 ×UXÀ´`u7šRÜêZØb€°tÛu–=Õ½µa¸«mæ‹\J m ]O´^º¦ÖßaqéžeñÚp½¥¾0ZÖ-7C2K£‹À ¡0e— Þ—tzƒ¸w»™(¯uªÔ ˆ£Z9èÁÎX{òÕ02Ó£NÕÂn½ŸÇÀ͆Õ%)_Öæ£³M]èØÕ”Ê™™6l Ìݺ/ÛUÓy¬ç’Ø­n®¹b`Œe·æ‘§­Æâá|P¹ÙfW`9P>×ÂæÖ¨ÆèÕL—B¾¡2 ¬[ŽPܧ»Þ`¸*÷s»f[¡0öÔüp\AëÍRÁuj1€µªÍ-À»kqíIy¥‹–¶Z·ÛM†I½gG Á«‡ »nÊ û(%%±w4|2¦¦‡_F™ÂÒPvÕ¦¯Qw+¶0Oز‹Ò& ®â %•ÒH™¢…n\¨¯mŒ»MÞnå Œ§Â°»)3°½ÍäUUЉtí:GÜ0ÒÞ 0Z¨¦l`àÊÄTyËnY}ÙÜÛמ`_k0ÿPœÝ©r,«0wÛ±jH.LUT/ënAò–ë6£íÆd“Á Ø(S<ã­†dfWÅÞChn9Á>ó™ÓÐtÜÜìA±ÏÇÒ£G¶«I >õ(¬‡Ÿg¿ë0é6šr9,¼”›VDl’“®™¡¨‹½„|Tž-·X÷£'ëÙ&ö…HƒÅÁÿßYgj>ãY•a-lIiõGš"sݢʵrÝÌöq÷]´—Ñ ^€ñ¤}jtòú¢òŠGR‘g¯ž á==P£ÍVe¸pKnº¥.ñ)ØÝÙEÿ ŠË˜‡ºÖ£Xí*è.ÊT¿­Js72Þɪq÷Elà½ož¯ ©êižênã4è°ÍàTÆ/è6c¼éO×,­…‹øA±ª4hépã€áÎܦšAq“àtšÞÐ2å”jÊœžÆ_ $¬w²TZÁLÖ ÐêZ”ºå`À°.”½°ÐLœŽJGÎÌË ³Öî¾ãc~lrÿ€SÊjÃ==…]‘ñÞÕ.öÖNx =ˆY(pÐb¶|¶–Ë[~u%Oç=.¦f6Гp „¤åX”5H‘÷­`)Uði+€w~¨å¿ëIR%:»óÕ@Á[Ù†iT¶´¯§=rWƒî’ý\À‡·ú¾,ˆ×3÷Ƈ8JK€µw?2Y·/(E'¹"ø‚ã©ùQ#o0KVPáÔާ¿ŠÝ W²ï=[æéö%ë{RvÏÂaï±x`n”QŽá¸ÙÙA=ár¢,ä$K, òëÙU«vƒ‚•ùª@amCN)éCV—¿÷\ÈäÓêøOtÂRøðHi7žNë•¢PÔ¤ç¨ÝIlw ›Éê’WpRvLG$ì¡ZohèÂMsÍ’ƒâà_o}7úQva¾5îâöbU:¾Q–_šf¸+lTS œldG4œÏLäÖK#˜3ºáhXñêÓAYzoï°tÖ–ÝÈo}3v~CyþÍüѾÿøÿQÚ·õѾ?þ“•´ooí¿ Ú÷~¹?Ò¾÷Oÿwiß”xýË£}ï{ýû´ïûÃï\1~ Îý@­ýŸOúnÿ²8ß{}ÿSœoáÿ'œïðн]ÿ5lïÿÇÙÝwþðÅ/xßþôGzö]?|ñ|õÝ·Ÿþ }ø‚àõãÏ\ËßÿÕ§¿—!þ˯~þõO¾ý·ñ9)ü«¿ø¯ôÇ?I¾x>ýÄ7÷O?î§Ÿ¸„÷ÓO|þüD-çÛ×§Ÿø–ÿáÓOñÿÿé'¾ïúôß÷o?ýÄ÷ýÁ§Ÿø¾÷ãO•oøÃO?ñ™ôé§ûÃüé'¾áßú‰oøŸ~â3ÿ×j\çŸ|÷åOþü+RÌŸ~ÿéÏãþq«üø\à'Ê}ãÃþäÓORò?c×s½?ýìGüg?^¾øÓÏ~ä ÿãg?r?öõñçŸýÈUüì³¹ŒŸÆêç2¾ùìG.ãÛˆóÿñG¾÷»Ï~ä{ùÙ<Éï?û‘ËøÕg?rùÙ\Æ_}úñâ2þú³¹Œ¿ùìÇž÷W¿öÀÄ?üñ§—ðÏ!M@yO…RQk*Ò¡Õ«¿!Ši¶tµmwí"”ª²¥ak=Hõ½·á5%Ì£©eés´éå©ã‘N…ø(*Gò€ôz)6)âv5rf…ß=©º) ‡ÌøvÚî»oêBÏШ‡ÊHºKwÙ^š€;íóè•bUûñ¹Î­V<ìb8y—Šª1j~37åá‚®\VkØÏ»ÔËK[vÀÒ[‰¬6U²¢ ޽¶·å)OʬÒümmìUÊNÚÃ%°s8ò8®+R«©mêM¯Qìs-yEj1èÃõðèF›^dÛKïñPyÕ7w=8c¦€êºÚlªSÿ ò^æðN¹ÐÔ×K-íĞΫy“™ÊT«Í'ªRi%Öv©&ƃã±Ïú5®­ šÜkåˆKkX®ƒ'xÞú2ß±y6-7Âáý¥u¼.ü@ ¾î˜Úí,ÅX÷áaüpÎ'©¥©WïõR$Ì¡ú®^DN³öîûôÄ€Qßr?Ž÷èT£®p­5kŸB1y_çó<-¥ÇV­²êçpÒ0‡÷îiÙºáÆÚMõú¾á Úæß*R[·­-Õ¦†©_Eƒs†¡4›Ñ¢ÚÃÍWÂù6Û¿¯®ÏYCé Ú²Â ‘¥¨ŸJuZѦrX‹*\¥Ö³8:ÉzpŠ=gý±ªz¿Ú;/ ˜ÙTÜóLæœtÊ‹ëT¥²:w©]f¥†¿ßmRè•r;Ïw«çËá…²ìZU[´mäwSFÞ;9ÁýM(Ö×ßàº2|°dê·‡ôèÀÇ:™ËÇn²yX´ÚÖŸÏžû]«¥’{f3ZÀ¯ ofWÛ¦Í÷r¦­b+-g›s{,m+‰ãPЍt»jô%ëÒÁý·GªÆz#ÅÌE*ñpÙÀ_·*,UáÕÌ{ZÇ™fpƒØÀRq|Hqéäæ\-›®-gôÎsî;åÍÝòþ¯Ì!L¤ãbÚjzªƒóÈ~Ž×³å}#Û’€Œ±Š^ƒÛsL—1Ûa³F§œz'Þ‡¶.Õ“–«ØúR±Ô‰ü¤9G‘-Õk'¦ÇfH«¬Y ƒN\¶Áb—&|Ù‚äÝ©" ×™ÔFþ²4)±…E­g©ö®¿DÚÙØQqÊE$2fBvÐLLxeÇ›žÆ‘š\W<Ö‹ÝuÕc™’…YºCuiSŽòg‰nî¬wï7y‘|MÏG÷›njš*=¤öµq·y½@|ÖíSÕŠ&n2){WH9ñîë½TÞU‹úæÏžC† úÐèÕªÿSä®" ز¥ ÕH™gÃ^N#¾i ‡ùŸî©õ“Ù“à®Ð.Ït¦;GPbW(£‘Žc e¨!y>y²ÉÈEìÆ|'4GŒÚ8©ÑË{9µÙžç jºåfwåÌ lKoS‘V/æãº÷òžô—¼»3 ºÔë1’ßqv‚!› Týì›ö{ý®Iïз¥³¼‡ãÙWZYxí%Èç±c´X3{ ¿^ú`¶¯±E-·#°¡*>zÓQÒøðú•%zÜ—.—VÙa+mCÔ“•ºsÜPaÏOèm{‘Èt†–cYÛ¤ÄÅ~: !ÉÙÉRë²C•¹K6ÄÍV$£'ö}h-ýåeKœÀ–­6­ø¸¦¨d,çCuDjo¼OU:ôN%:iÄAU÷<Ù¥.L] U«Ð—ˆÃRº$©ÄM(p¦hÜCMrŸà"Ÿyäì ¦gÖ0”X°­,´Ýdt>œ„ò¬!:ÚTи:ËV ͇dr>Õñd;‘6GX÷Ú 2œýAmă~•l[ ©RÿôåÜY:‰‰)Ì¥ÎðNûDq£†ªÓJ¬WþûН¿ïs©üQH£ŠôÞjžüA½µ -ÃöËmƒè±e5.›ÆÀ­Ö=”Τ®óÙCtn€ôò;‹½ÞG_¤=œÕ$#…8ÉŒW¼oû™¢­b{UëÀ ^|âÙ_mb§â¿>ÁÓá9.(p©Zæù~e”€mc±_<5•P\Ki'R¢¦që(}»ªw›=*í€6k# ì,g…ÕcV „·ÈGϯuîP™²Œ¶ÈD%͹«ý³¨+ÈÌp9³*© w­·Û¢wÄ£[ ‹J’4!ÊfÓioñTXö9.qãhà*¢¬º¦ ì]N•}ì·mé$'/ƒóžßun»ëœŽf¨"du§'ƒ3]MÉò¦[[„>¬.€eDÖ§ܬ묕Øq²‹¾õWãÊý¬7¥£Hšz`±Y%0Ân}9pš;ìØ&ï<™täA­ËA+&†tõ¶$L·nß —ÙÊ·´#JbcǦ(ŠcÖ¬ErÊTU®ú5tw•ýŸ¬$õô´o§6ò±\YoÒhY.èp¿ÞNçPð6 eà¢!BâuG•—’þ‡Dw-Fì'^qÚª‘ý¶-ïß«Å!"â†g½)='cº¯¾Û9Jkz¿ K«u(´ípI·(–Æ ÊùF½Yú«ƒY Ž$t’=,";p ÒS…ª:nç.Á¨Yý!íÊìÇ&Þñ^ ñkT_ŽuÉz=MzÔ#¯ÖŽ59­}IóqDƒå™oR Øam{9Ÿ«£MbŒ©¶YçÓìølWÕÓɦS¦SE3õvhñ¶¢H &vÊ-'BkBV¿blË™ÊÛzcvy‡ Ém ¡é(eG™ ¥è†~§+Ö½2Ù 3M,Ð1¶êµLvP­hTÆ¡gÂÃr‹¯NQ`S””Ió7Ÿú¡wí÷*žp«\qÊ…sèáq‰B7dX.ò©/*ÿÀRÊ ¹Â˦® Ieúy;ÅÏâbih·BÔ9L¿HT‡Š¾">cÛVÞèýq1ŸªžÜ¤Ê ï%“‰’+îQâGSß©+iˆšã²Q¶]® 8­Ó¢nÈÊ>]ºÊÙW$ÃëFö=X˜-€pO1X_7¦³/ß“½ûÈcj"<òAȳzAÛeV3b¢^MƒçŠ$Ìkí¬˜KQû¾ôôã=7(;ªQºÜãÏ Qß Ç¥$8Áætœ·ª^µ%À1Tj2ÁÉŤL¾Bf2‚ä«q9JܹCÕ¨)¾û”( Xu>ϘåWlfÇMXΞdÞ¥ ô$Á¬U ¶#ì";…?I +:dsð \£È\àaâ¼Ê ·;®Zˆm˜éÜt{ŽW8ê»v):¨ý'ÛsQ”9oºˆiä|ö(ð™Òtê–¸-ò™Œ N<¢t;jI¦ïxõf¸°6ˆ&›(_dóVKªƒ¿/I>Å&1ITiÄu•ùÎ×!ÞA íÚ%èÕ(=/)½‡x[SCB7“ÐÈr³ã¤mÏây@aq†“>dÈ¥:•%  H€Z¬Ëc{(ÿ“¶›Ivµ [tzy[ÔÏeª¸ÕµÜ–åQeªx¦”È‚‡þ*´mÝPc›i)ᾋÅ*5ð LÙ“Z@ 3éG£°É+}çæk…¨7˜ô¬w¢ç$ïý^–'ì¾Þ0AÜwüâ‘I¼´/z¨ÚT4âRLžÅ‘Ux<]ɰh«³¤›fÁmC—°\pé"‡¾CTù`¸k»ÄS ÉowñèüÊ©ñkezÕ²ž×ù,þ" åУê2žÎ¾ñ£»<‘˜GÛ(Iq"^ÛÀ~êŠH®ÔûI2f,‡ƒ"½#…£*^‹ÿy´ ?¼ç–bì¯ç"óÒŒüUítω’î÷––¨î†+¤!C¥[bîñ) Žç>•R€† E]0í{#aª£·ÖŠG‚ÍÁ»Qç.Ÿe Ìœ†5‡³C2EH~‡×¸+ˆÄÈ9Z- Íü3j}.)ÊQ-• ÂRTKŠÂ½xræ(£­E!Á_Ø5|ÎFQ¾¥ëâezéI”l0%³‚˜nŠÏû `C96ÇÆ»jˆ½ͳ[•ß´ÌŠ²÷Ò¸˜Vå„uátaP/,™¨WïäÞ‚kQÿ7MJe•KáSB¯³j–Ë£°AñЗwÌètHP_âR˜éñÌDFÙ«ô!õÊœ2¦ºÞîžarË[`lDB‘,™¤K/HɱÍG¦“ã/ŠôË­éÈUʈ5®Rn-Ûî1ôpÕž,‚î CWJJC†YŠìФa¡Ì6åʲǃ¤˜$$ócç&_ƒÖŸí£³§–%%ö&>N~ä‹VuÚ¤ôU À[{HSwèêøâI˜¥øP R&ˆÀl¤V~ðçì\ý»õ:=`;,®z4]a%8÷Fù½ýk¯­&éèwt®*9úú°KóEþMê FU† ú õÁ¢çÆLí§| ­6#Ð1çQ]qÅ™û(@»²Å*­°€ÒC´anôlçyxÌ“»ûÙÒA-zÇ»deq+fº)®àE©§ò¬ލ p“yû®ÊægãHÛ›×-‰Ê].+zQXZ[øÖÈÛQ%%+‘—¼fty³÷j@‰ô}£g¤][Ïî×Ć Ä“Fø|B(M¦kOŽ–'‰Õ˜ú¶©~Âñ뢛u‚Kb€^”îz¹pµ“RÕfëqZP&·Bñn È€¥ú»ùc è‘R¡*͉zþ1/Þ¬Žâ¤Ç.§Ãb ЩÁõhAIà–ÀN‹%9I~(e=½UšÁR#s”ÎMjŽZ<¦jG§À—Á_È•}Ê~ Ñ6ŠÅÎhÍÍ_g35¨¦ÐmäIvãëÜn–Ò”@á¶zº"”!‹å¢É«B§ž™‰«o„ªK1w/i<•ùnb%+›!U)@Ož(Õ.ñ“®uÊ;”­&õÌ¿Ga²®k17«Ê¡ouM¬ÛNÛçí–e ¦´Õþ6É"¡È»É6G©honØ¥!ò*Á7rV<<´-ßë¸=„~ˆ¬²˜te;ùCmÞîªÒˆg™–ÛêaŠ›îãž›Vq'7F!hJÚñDÁ޲ÞΙàÃJ1±Çf£–Hþ±§ú“ç8µ)éÞŦ¥Qj¬¡yï —wìse0©B*KÓÇ×Î)™FÍmÐùè•Øô1\Ê[J=Ñ tÚ¾v‘mâwk¤ÉJz ;[¬ÎV8xÁ}ÕNRîP±_–Ö<©Ð(­&y#­NV¹Ñ{-)d<þ¢ø|[Lu»Ê)V¶ÒuLjøÅÒdÆŒ¬¼lƒ¼\Qõ3úÅKR[5ʽW‚£TÉE>EBÞñ´Y¶ÀÔw:ä¯25/ˆºðàQ½ Êj÷›²ÐÍÍ+Úš>ø{¢þí8ºÇc*l“y×Óeàñʪ @ÔôçbI)|"Dk+åëɈǫ Ï”¼—ŠD,zM×*A—IUÁ>é‚ASC¿[/Q"Ai·SÝàF]#GŠp1:wÄ3ºš'ÌÒNÞ6›¥U`òtà¢o%“÷:Ê® ;:¼L¹x ˜ìÐù¥MÇ‹¤p¾Qƒ5åÀXLöÚ$>tE8÷¡¬¼(%$½7™¸li^´ 7ÏPÕKñ½*ŽeTÛ=q¨)Æ>u!^Œå’†¶JÚÈ- êònµ5<<þhw$»õ°2ÈO9Ì®š‰Ñ†úƒŠKæîPäT?E£'k~ÈL:R ëæh£XTSX”qñH¤ïeIÔƒœÞ炜X- ¸åÂÞ’3{›OäUªå­O#1³FK+mV‰§:ÚÐsÛzò-Ý÷AšÓ?¹¾¶ù=‡Ï.q6+9è ðÒÈ0ŒÞÄSê"ó=QÔðñ€ØCý*WÛÜqÙnOªÓU©–.òäØÄ?¾MR^æR5‘Z6` ñCˆ0ŒË© 7–"V2FlÞ°èÉÐíÖ½ûÒHSdqØr=YóŠLEØÍ³ðFdÀ?A¥5mO¶Ôçv{+Á3˜ó­×¡m:DÈCiq{ÚiçŸe êR%@²¶|<*¾ÍcQm.µY:]œ®/úèŠÆõôN¹U¬i•e#S›*ÍNŽ.}.îŠ%J:º‘þ¶ƒIQM¶TÏA¾-o4;üòª‹õÊ3â÷ÙóÁ£¼n)êi](ñD‰¢®Ü+CÖåG¹^êÒº˜r£ÕA½Çÿ2Ûõ¤ˆ.‘«àÊŽA&~'Ÿ <—º#`5Å‹.ýé×ÐY€3*-<°Ð˰ŒÊv8ìϼö_/©4úgd@èÜ“™ã¹=€qðh8_Ò<=>aÅPœG‘}rµ;HÿòDK`¾”2ÓbC˜ÂE­¹Ëòy5¥y )>у<`buM2 ©šw^ÑÔç¯MâKYÍ×ñ"tùÏÓsäÜujÅ,ñïõœÅFxj£ª«ÏK/êÎ+nKH©u*ÉV½ÅBà¨$’ž¶GòL¿ ¸ûˆšŽR4Þé:­€$,ÝIµD¡Ùk±Æ"1Æ¡z^õh\&r–XÉë¼ü:Ê7®‡Š‰¸üŽDZRÄì´ÈÛ6!ôÖ'ÙN®º€žú&ó¥}Às‡‚²6ÄÚ­ nKB†´R—Íh¸s‡"…«G`^pA:§jÚ¬¨K"©'€,K:ËÒ„ ÛN:z¬j×uÎ½í½³[° (r’Is®ÜÇýQTd"ïk9#j:ν6 ø¹=3`;ÄfVä´T0—òy¤ŽL²êK|ȃ ÉjCA¤êüM`-…¹–¡¾ÁS|CІ‚54r 4†“à8 ª.½é¸ VŰzÜË.ƒ-VÁ¦É@1¿§Uˆˆ×õ¨e}´`ÝÃŽþQ[:Ènæ©ê+ò\ª¨Ze×ë.RAÒvÜËS9ØìÅrZ©m’d•ê S~±o‘Ö©1Q–%ÙµŸµãÃÎÑmâ{ %}ô‘-¬ÒZ­Xõ±¿/¬Óà§«$N=ðTyÔEQPuMTWØâJ”Mê¿\„J­þï¯ÞU·Q)Hö”mqs4Âʉ3Ä7ØÒ¸ª~&i«ðŽ9oQÿ•%F£z¿Ô(£&ºu*á»…gÓÆÛõ²šöd¹‡Ž ¯Bõ&Q^ŠÒ²A„^§ca‘™íâ³ÕíA?N$¾ ”«>¯2Öµ¶ËüôtåMujo Â.0’~«QCR>dž.`ChÞØþz>ß $Š.ɚϺöd¾ç¡Û+ëu¶@†Ç“Ü î=ƒîSÎØ(×!±‡®EÎPÈËZ®P±<*Äé¸çáte!lR™¾"©JöSƒÌ=¤z·1}ÎIô{$×*©šº•q½íN3¹W_¹mÔB$±;ð´Ò œeù{'ád½*‹ä|ÈœÏì=ÒHw¹“lÚ°VcõÌrjT}ß9•ZåÎôõ\j&ÏB;(qå 6¾ˆ‡­Ï¬ÆJ@(UX´ï:Ũӭ¯QÅ’X^0Á§‚…c><ÎP9ìŠD£®è,ð’zÿ"ÿƒxÿ%òTQ ;ZòÚø,Ø ÐTx°ûœÛ!ƒß¦â×Íãš º(}´áeSâ4äÜEH4 ±8Ãy4½¶¨»LE £¨-sWC¬<:ïÓ¶e]¡è9Nëð y1D'¥eH$䓱‰Û¬~þÀž÷µÇaëó$Œ“KŽ¢F ç"Tu'‘¨øRíTOÍhžÒ Nˆ¼Ïz µ£||æ£õJ¸wL㯧]¨¦’Ê<º¥ÜȼËež ´PSµ(áÂíïñvý¯¢Ú»ÔZвúП!¨->àX)»]d«¨lKªÛºÄw(¯0”5МÄ;sÆÞvægõl= ò½ÓÊú±‹OÞ\GPS¡}gŒÞ”õ/Ø^×s–¸Ò£TzÙ¿]íþÌòKž’µáhÊQY Ví_Š“øMñ<¢7Àƒg8T’ Šʱx²B¦ƒ8ÄÎŽ9.…nij‰”4NßéVZøU´2|=šš(9_©ö[W»%h|P”gè+¹ÙUGÝÄ““D¦Êh‹„°”†(¤ˆk Ë[÷³_ˆDú'ñMÚÉ©Xª:¨ ÜÅ&È”—éQ5Í»&n+¯VËýïŪ¼í(Q8öÞû … šÔ>tTq*&ž[²å–<‡bfl*ÿïxnùšv¨9Â"ÄAøœdu”®&F¿Vx Ø—Úm¼AÏ=ò¦ 8N¸V~TX·Ê&Ä&̱O€tƒ¦T8Xë§§©‡©:åõ¼˜¥î‘ày³rôÕa›R £yÉÔ'*yÆ‘=°KäZº1•Êß@ÚS¥’1ì²P1¯²[±°>+¥£µ6oÉÄEoðs×=BAøbÓ7=drÕþþ¨“,ª—–={ql1E"g$Œ°M©åˆ8ç}°”ìMšY(¾ b2ªÕ},|G®[…k:[#/ÃÑ«Û9>&¹ /=»,³æ’KM j‚©»¤negPÊŸpË®ZÕ¸ÅVxÕ>›¥{HóµOôÈ‘ µ( t:üR!|YR&´¢3ÃÇNi=DCÛÝŠ kZI•4¡ !L¨#ñÚ ¼tÅ€`ïæGÃS§MÙL‰‡•Òåi®rÍs#–†Gož4ûŸlý\u¯ŠÓ£y­"ÔG¬‰Åk[JC öÒ©ØOÛl‹a­Ì;bººsNvz¦ gùÍ÷XAXHtzd‡BŠv–¾i”Oö€¤ZØIJeò£bŽ!4Þ¯QY«ž*9è>Rb¼¯¥DXÄm²€ Ú3¾´Št:ݾV¢fºØ§çÄ8Æ<›ær  ^ e3齜v¨j^Ãù#"²zÕüjÎêªA âÓJ ˜It¥*& ’X.…Ì/¡Í{Ú¥ž{Äõ·XC'ƒç:²sšgÒÓxAÀ¨¡½]õ@¬G®zôP–òË‹— "ê`$-E¦rn><Ï‚S=ÅYyþshá"Ðé9ª•Éò,ïÔcð‰±Px.MÛ|Šd|çÔõæ §zSw2Ы=Õo£âm5FMËò°Føéãi¸ÝÕÜfóÖ’©ÆØ·Ï:B«•¢šXÙS¤¦æ3Y¤]ß–©8©'MªÑù< Û!è§þÕ:ÒîѽÛËñyIp| za>ÅMõìe[Ô’À…ÖÁ¼ˆ¹‘Ž®)j ÆûkJ’M%J÷œ¦ýàC#Ev³  3É.ñ€v§w©¾œÛ¥BÏܶ§#€@Ý:ÉŠ{æ±[Í˶½Àø®ˆUyhµ;tÕݪPݺ8±h¢.XK­Ô¡é”¿Zº>à-'<´z¤Š^|,a«œÛÜÅ:f{1Ùâ¦c ÈLr?Og‚n¡ý¶ ×zÚ o€Ótl©g ©_.åà¯Õ& äÕFï¢ÛÊéíÝæWA)¸'P*NW 5<ðçî'Ë*­åÜ}ô}PQÒ'Ÿ ]Ùßš‘¦.%«þøåK· @(å01³“NÙoÒ@ì¶Y©²€¢Sš6åÈ{z_R¯=ŠÐ²1§‚þee°Ðl'”÷ÙÕÂ1PŠÍAK!@%ƒ‹Ê…ˆb£hœ2â"p]ÅÚ‹œ „=ß­º|IÈ óª‘yûdt¯m+éå[]-UÒ«H7¥ Á¼]Y`#‡ìI6v»o  ÝÝD.iŽ!òÖúVþ”RÔX{z3*ùÙH,¾q*WÄŠnñžï`«("›öDMW[ÝæÉ ÷:ä`_ô ì˜ü³„Gz!I›©¾[D‡b©;וï3`’%ç8x‹ÎÁ’¢ÉÎ܇*g7ܾžìg]ƒ¢&T%ÑXäêkÃ6ëîÇ>)0íQåzl«Mœ“qy)€oþ Nv{íêö霶£kml™ôÄñ¬ÈórëÚ`>’6ÕI¢næÆ†ó$ì<{”Mø3.²•:Ô¢ö Y³K‘ƒ§w¸²lY"®æ<,XV®&IN]Ù±QÕã2¥ —ƒÇ²¬t†Ì£áHlØ~¯A,ýEfk[F²ª ù>¶1ë!6¦Ì}ìú:k ÿæ «RàÆ®ßQ?ŽcŒà±a‚ˆsžâƒ“{Î ¬½j ©u»€HhuÙK{ìÀ^ކÞYIJ5×¢¾õèΤ>šý©Ž§!ÊË3•ÀÅ»³Çâ‘7{ðÖÑE¡ÀÈ‹® M¾ñ­/%PCßx¾•(/5¨xÃúò0e³MmïÝŠ©Q ‚tQ]ýw`^{ëy(¦¥V o h.[©]¨uøôÕ>JŒ½êñ ÌÕF,J­6!©M<ŽU‡œ öpM&ò$/ØQçŠ|V[)PŸé(ŠÄ_ 0ëÆ)¡U.5±ËiÄI>¯þ½µ:Gl¶£ »Ž·f&Ù'·g„yA}¢¶íQ£Ñ!lðt¤_rÆxÃŒc[XZD²¢J½vA´öB<Ìd[òdåZ?O¹½ŽÖ<à Lk‘ñ­©ˆ’mñСvÓ±GŠz¬y¸J$X âòôTl£àí0F‰ÏÝ6I6ª®ƒÍ8¯­SLq¶Ë-– §õ¡ UN’„¥Gåû°M¤X\“xï™jhŽêËO%»ðd&Ñžb)”-ãÎ9jTõÇ*û™Òúц,—,$‹ÇC™ìô4QœÜà[vÑ¿¥Üº5«jÃfßF._:;J$óážÛ"cóõeN±¦½éw;•´m¢§z:7³Õ4‰ôl¿KÕÛ¸ul‹ß¢”¯7îŒ õÀhŽ©j¢L(!QÎD6TrÉà+…ë¶n¡ðdÏÙqŒ¨8FÄyÜP.Ç‹~@Ã1Òzƒ T@j_Yv^2U£ ¹^Ú”+›Ý¥-±ùktüô’ÙuMnZÕùøÖ@‚PEz™¤™åÑe“4³ÏìŸ=˶9bºýòøÎmÎ5EËÄ(êxváÛI{׎¯óí³E•´Ô0^DÿW÷š¼G/›eió1¸q#ª>õÔ›I& °1ÙÐÝgòöîœß4@ÍCÁ¤†lå¯Fùui+Ôº˜Dž‚\Š®‹½gø=E‘öPŒ5IÒ6ô=ÇÔÒÅɬWBKÊò½‡BsN?`¡â¨“§|§c/ãtûÞc®­l:UC#YSO)Á÷b(±íaÚº{E@xá=õ/‰1XŠk›¦•Å6¢-BÞ5ÉÜ)}5âYè2½iã«{«κr“ZOHؼµEp±ÛÁ—‚R´|Ÿá°Ž)ö`xP,¿éä¶Î»·’¬˜¡¥˜r,àt{2æ¥:“úî5eåŸA¸ªþrÎâÙŠi·ÆJ%UeÉ Å´ÕÊÔ 2‚aUHÑAü\jbú8M0À–A/Þ1™W%ªís±ƒ3,à)Ð%¥ê­_…å“úŒÈ®¶óäcŠ©­ZA§ ãx ô(À6ı¥Ôô)”˜×p‚7G…‚ÞVÞÁIy-ð²ôgJÌôj~lõ^AÊÞ¥÷»‡Ö5áݪÃqO*Û~i@.gôl*:ÈK;£<GÆô¢’[- ú`胻ÉBš¿šxžXÖMµ§Û»/°ryÕ¼=C¥¶sÂ?-J-NJF«.½¶D^¹_Î {Á,ªŒ»ÿÀlêKx»t>tZ¥Ôà‰eUÒí&;šBN¡Êå±Á¼T)™”L ËgÍ9Ïåyݯ“?V%B+ïi¯tIL£Äñ \ެ2ÙeG&áú+un¨|Pè’Üzt6P¡ r€X£/Š€¢±ÚóæAIÞXÈf/™W!«—%u`ïKµ˜’"‰]%Š5A- 0[¸í}¢L=»ÙßaÖªŽ ‘E! "òÒVª*Ì#J>Šª/M¢I©K'l½´ºú‰ºxÓÁ”@䣓¸¯wKŒKšº“î#•GË›É3K“µ5­z™Û’pøëvÈÛ./1ñ½üÛ¡‡¢ýM%Ù¥à¤<²£|j®C¼™“P5gà6aø¡„ÐÉ.=¥³iÕ¤ÿµŽ9Û©Ûñ’—¬©[ktR2yë¬4¶ˆ®€íå™ÚÑ!Š7{8O®;Û_ Z²¼_Þ¹ÖX<£äEqœWf=?j†ËÛ£ª,úMP PjÙÎó`50•GHrN—±ÞnUG²tèû\M̹=TÈMEt¯F/i»4|Àͺ뚎wgªÚ¦œé‡RÍl~R¬jË€ Ûà=¾SÇ0%ÜaÒt WçáŠKŬ©ÑI-‡-Î]‘sÀ×ý°ººsv “™íÙÕ0Šgn:Ÿ·‰.0¹—d-ª¨Qx™Ï­D8Êù) urG‹DcO“ì!RßNOËJÌq¬L#ר&8xbî$5ÙØf‹nM2>FÖ’T£‹gÇãxº£É«ý‘(®7QX¦3uEÞ–2ÒÊߦ*»VÞû(Ï ©´‹ÈE…ÿûއÐ… ÕuPÿǦU̽»#§ÓýIØäýëÁ9AidPâ+‹Â“B<ÜnŸ(_]Ûë=†ÌcÓ„ac¥Ö]tú·‘c‰ y“¡Ë؃Šò=j±&”¿´H¤ê!œSŒB¬eSußp¸9y?E䬙É\ZaÉYÐv š){^þH] Â5éClj•[B7Õù)«g£¨±®D‰ÀVß…Æ¥!Oˆ,››}zaÕ1¸ó’ ¶Ýo²«:é0¡ÛµQur±@Ó“2HjpV›œÈµ ]Nš‚A)kˆ!¬šX§ênu´I{™0w&›v{ à™žÝ¸%˜Hyõ{·;Bµî£¶¥íÀ?Úÿ%Bd.±šo2#qs:\¼ZRmàõh]zªÌЧfnd­©•èÐ6¶9·Ðl÷¿7CÇ9e yQh*=¯€+<*µžiéÚÆÖ¯\SÊDž…ŽtEæ°dmö ߺMÕ#ÁËaû&G°Çc*«§ÉÜyjYúzŒÔäWws僳NÅj(5H‚«/UlÂuh“æäçP…:܃d¶¤2ÞU 6ƒ·jÛ°§xj¡':ÙCÉ»Ž&?”¬®±PЧQïZC¬€Hðþñ€ŽM¹XÙÍGл=:>äF­æ3û»¨,-ïÞD[ãå7X—‰}‚Áuç »ÀÜqSúR'Ú®¯Í­èhd"Þ´Wf¤ö‚Û´™{Tš?>cÕ¬RÙÒÝ›“<BâÒ«ÿÞò•´7Eõ`üÕ…”’K«Q²½SÆ”ÿ'ørÙ3??^€„±Õ4ÿò|qŸ§=<{9³wR ‡ 9òhJ7 i%=óÀ3J3Îvéà­KvÔyÄ^ÔF(éüé}9©6ÆÜOiñMª¥jg*; íÏK±) N?u%b‘ÂõùøÔy~¡€½=é[.P¹ÓבÿSö¨cýž³j½Ù÷àz ‡ûÃÖµ¹î5è£î”RUÇ[I˜Z5•:ª¶žìTÙGÝÓŸª‡gPš’@FâUêµJÉ£ïâN5œÜV”€ð[ŸíòRBؼ ›õHˆ—Z¸lZx.ÙÆÀwCG´3]„B¾ûЋ"ÎÈI@Å_Úoò°@Dì°Ke@l:6ÊqÞ»µÌ&\L’-ôš8EÔ"ÏúQž¼ó>+±fÃGáFâ©Ƶ¹»ê³xˆr:ªv²´¹‚lw}HˆÑ†´¡e×½VÒ¡–Bi8ä²Ôޤ¯ê^ÊÈŠl£‘Ìs›©aè8QrY I.K³®¡¼‰åQCzÊ}J1©Pe gð\z­j=Æî]ÇPƒ÷¾[\I3 DZÊké䮿ÀË 8—'=|à§Wq&F]ž©:z*ÏC5m'“ª¢[Ì?•"íó™Ô*¯‰†m”û5·kõõÐq»¢“fWŽ}ð¼ˆÜ»)ø¨&c²z¼¤+û0å¥ë«ž=¡ª ï9îípþÒQU öê“Jwm׮Ĥê&”‹j†ª®ó<*íýÁ nÕ²›â¬¢É/áŠH\ÔJ øÇ]©GWDb’¥Î^H}ˆÙðÒm§Â%—ÖöÔëÔ‰LŸM0ìÊ›ÿù›÷Ê{|`ÿ*6Œ=’½™äó~ƒŽ^x±¾y(=¤Ä“¯¼ö÷ÝàèÐ ¬¿·GF·.ÑHÎý&m£<°ºôŒ¤/f ‹-t"º†zwñ`5[.µ2¤¶r¤–²Ìƒ=KÞNlÂKù¼Óâ–b÷R U‹ú|ðZu:LZ…kqU´}Ž*Š.&%6ï×rˆÊJ¥Åi÷ÑxjìÄ£øæÈ)”JªÔô%Šï:ŽÜuØÓŠùIÏ–ñ\‹› ò9©R•kèÀ¼¦ŒØ—…,Á‚s×M{뛈êXb¨á“WS‚¤=ôÍ2&™ Ö´çœÙÎÚjÞTÞ«Uÿ9˜ú*é?mï_*¸s£{XfQ|Sâ’ëµØNÚl:4¥å¹x©Ü“­ª4Õ(” ºcM}È<Ä'‚ª¦:5lb¶½:GWpO‰»nÍ›ªó« ÀySÛ׿TIÞÌé¼Ýáy.(5 `Å=UlU~ù áQ ½àx‰#<ìí¥ žF¢:uót@MWãR-1äÞE¹G:f#‹+§Ó<ï®"¢¦óë°˜Sr’Zî¢ñàHbÁnbJ€¤H?œiS_îLê=Ææ0…êÙ¤.'^·YhŸçtml@i.šBèuÆ:™Ô3ÛÝM‚«êl@û[m¦á!â 0|œ*ÓdË‚aÜ ô@Vv ó8åO¾6mÙdößÇ^cP?à£î¡çA‹f^ç«9˜e(ïi°çîá‡êÐ=ï$Êzê­œAVšå½^B·íBÕÉ»ø”é‘wI–{Ó%׳¥€Y×e¶]ÏÔ×p4¬¨®1›ÇÖljéŒ*7½ZAù¬ uÃÕZ•]z¨[äS‰³!‚]L^þÉ“ÚY:E¸HF <Ç÷ÎòDãæ¼V£¼Ý„`Ýë²”–·Ú=Ò|q8„ î¿)r©éÅ-©¿íe=ž»_Êl°56ÃÌfH+–TÿU~ÆÓÞ¾m¯Ãj­§,ºN^J,?vÇ«ÆÒýnÞ 0x)u¬K!(Q[9=‰YGõ‡DQµ‹’¡ÐœÛ¢^Ýè® {æh¥ OWuè«m_Þ)‘r)+#'FõógjQ[_Ψ«×sRl$–· ‰É;%½=´PžÊQ LóÑRŠï|Åö¼{_aP‰ó/ˆó9°{êÌËÕ­JÍ}ž7!˜2á[ArNßg¯›¨D„äMjc@òá6±{‰t‡£zCª^ „z;°MûWOq®ôVM(IøjYP`Füg—Z¡`'0•<¸âµô,é<±ÛÝvízÈÈz”ì ˜øôŠ#¶$CÏÊ”]åú†¦ºÄà=‚§Þ%˜°,·¯Kˆ$5"Šò̱±(ô+⩚˜“[·jý³ÅÖæØOôr¼QBA/*´Þ¤†ò(G²¼•±]Ý¢Ë:pÖG+ù‘†£{¶[lÀñƒÝlö–Q• bD T0—sEíÛî„-±Ä®÷ËÓ\¯¦’ t«n«JÑÀûÙµ ÖÁœI®„õ¬£öÕ²Œ_g€}úüâ±`ˆ¢„IJKÛ&ÿ{?ƒSâ©màWá寯SÞo˜™¸å!B*SKßÄQuÛ’Í—» Ê:œ+Wr>9°sþl¿îV*©ô`i±͉G†òn½«¼‡eY‡öê„4ÂXq“ð¹ÜÂE1MxîÎ/…BÚ­îƒ'ÿT1UŠzO‰Kz=K«@ÞÊsT™(¬UÂI‘¡…mQZÉ©N­‘"C9Ç“,Þ(«Ç?TË|öìÊ“µVÌrǾf=y€¢pávvVG—ˆ|¢‰}ð4¦ @ip\ç&UÒÙó”ÎY^”gæ[ŪÁÞoŽît9p휇’ÙzKŠïæ )/®˜ÐWÏÚæ„ÂGÁ=.¤TIJÏ×½GÖûÑÁhöþ ?¯çQßYý,Ò30»æwuŒƒÏ8Ù¬{jƒÛÔÆCQƉJ@E>O–/Å–±‹jë€þ²ÀylDä¤OèJIŠÏuÜ m+…F†Üô‡Dúh½ð.,W3—eÆ}yN<þ-‹q- QaŠky©M.ë†Ô«Î]òÄY¿ 9eM{”áIZÐÑ^½1êP XÄF`Pºõ‘Œ!ùV!ôʃrÝŽ$d@¸ÄÑæäàœúLgéñ·9ë¹y~¢'Í«NARÊÏÜq)_<ÔÏ% ¢G¹_mìÙÛ$J ]eÖ©ÊætF.'…ªÍ<ç?Yè÷³¯ñ¶¾.²\í¼›á¢´Z 'UYÈ<ÑÉ,©¤5iH¶uó TÀªs;Æw׸lcnâUS›\Ï©Øöì71€ç¬\áòyã~Ü˃Ûnï,«³p!5hÜ|²VA¶¢”²!mž%6O“¹ JN.õX% œ¢åÒX‰Z'{ø% j¦™¦˜·¤h®—Çѧ­ –)qHÞ¨6¯àŠü'ŸZ|±Qç[y•ñr–+óÐ#^\Æt•ƒÖå^^ž=±P¸k O]VµÚ¶ÃrZ5jÚø6­Ƭ § ›"¦"¥Ñæ5Îã´ÅDj,—V§Jã^«ìçHŸ{ó”‡!S/Í tÔ$ÅÆ„¼Yž6iá•Q¥´ó-WݲrU»pÒÔóÂ%ŠJ‰Av2÷H'±~-µí¡RC6g¥A(Y{èÀséŠù€Ö‡<1¨ò¼²Â†,cÙîûÁs©Wrþ§³Ï©0†–8Ùó Ê%¢X-6yÚ¼À¨mÊTmªxu­Ík§”,îCR²ý%eeåIà<¶pÓÒ„RCæy{#4ÍrŽq4ÅÍ";¢oñ %ÂGjZ$gŠCfi8-1ôQÏŽ²ù.ÇÖ¤fygR OŠ‚šžwówìS@I:Õ z1—W~üØÖ å -³Æ<"º´s·‚ ”ź÷P9qãÑ·.TYÇlårK¥·öe!£IÍuw«7Yt;Ù”š”Ûnݦ–Zw'Úc¡PítÔ#òr×¹emC]ÀÿŸL16­|(GåÒîà@Âü£ð¤ïÄñ¬£h8•zïÎÁ€m^KDUë5v®$覶ÓRYçëu…± )­Ú¶gRɯ†Šõz®¬NŒ~D@§¥Ž‚óœê¼%ˆÁå¶;«JópÓ_âÙôŽ:[½ç9¡T–bwÕ6±Z'NR(0­`™…þ}ð÷X¤b—\¹4›ÉÍ<ÀWâA­ç ¿«O F òuÝGb¥kÛ½4¸wÃáÿûãÊz”)ÝJPƒªD½ï´Ó¬Åë!²@•™Ü7ù‘õáY{XP¾`dg$Û|dLù|,¿‹-‰Kïµs³ø%×°‰äCÍ,€Ý£,<ÏüÞlÓåd¶‚mö³ôzŸN5zŽÄ]i¸£g“êü,õ¥3ÀB{ GÀoе§6ãr¼6ª”à‰ËpàœhWÎŒ@Å éi=Zšôóõè]¹j6&‹ŠÇÓTëÜbiQQÖÇC=KˆM"1E5ñXŽ'®´Ó€Nì§R«Îñ:U®Å!8¢Á€.Ùû –梓&5`ÇóQu̕ԣ”²Ìí6Š¢Uæ½Dq"˦.Ä‹Uœf?Š€ü¤" ¡…­A.¶é%ÀW]j óU \·GF\©ænÕ×–IõOÖíR“E]n…›gc²ÐöÜz6ó?ZߊãS©.[)ÌÎZÙ¤ë:§­p=ÓêÖŸ§„=ò‚.zu ÍÑ«#™ /.,¶¶í½ÌGeZ»ºéI%Â=‰¥:Y¾ØñŒÚ%=rKL[K VáÔU,“Ôè£ ˜ínÙÄʺ˶s`0]G5ÄÊږᚰس–ž<L·Ç±øJ^Õ-ÍÉ¿>ïópÌLÕ¹ŒÎh,1æ«^RâHÚcR‘¢S…¨k¹z!uñ.”Ì.‡csòºVT«±[N8)Ì+ã7‚aöÍÍÆ/À£ —†bz$'G ™Iñm{WPòó6"Jœ‰+ˆïº\\‡,©m¾½#fnŠ0ƒQÏ;nàÕ"Ç­”»ì´Æôò»X¦E«ÐìêVa“í5;SÙÊó0 •åíÉk¼€1Tb)jK7iY7€Ó©c_¸&B©^‡ª<ìVÛ“³)aÓHš g~<¬Õ¯T•‹ò$ß Z{Ô„þôpPþzpuJ68½\ì°¤šªZ,²«Ôæ"Dú2=k’M.ùÔ¬NÖPãÔù@1”jv •âÕdHûMû@§ †vNwßäóGN:• »ó µËóC !põ¦˜?Ïw3¹YF¶ž”eŽZ$¥AlCÖO»îŠ.>Ò)• ÜI³'¨‘â¡ Åls€€ä°ÅHäºÎË)p' lêj†§€ +A7Ã:m%È¡¿õ¶ø“<µŸ#±JŸp–µŒƒÂáÚâ‚Ó©ïæTn÷”IuŠKa¨õÇŒn2ÿ§2Pzîªö£Ä¨:‹\—CÓMVކ4M–ÔRð’%â¹W~SæUÇIɘ©º±µ”zŒzKÊíO6ÚxD(•u>nršËqBBÒÔk3‘ÔõvÌ­+Ž,‡ŒLÜ*ßÃÕXм­æZs|‚¥ÆpR$u'^±Õ©ÊÛAô;–‹¥XËÝF*pÇ×Ùÿ3i2ùèÓ×õÃpJ–bA)Ggš vωò¹ê’I.‘üY&J³žž`ßÀ/UÆQ€ºgO„üÞFê¥ÉMU™™÷¨@7½7Võ©#üWþÏo>à_Çüäg_}ùÝ÷ßþüËïþüøÛï¾úå÷ß~§Ñüñ[¿5¿ùéöGç?»þíþð{ÆüÑÿ›Äý[ÿÝþÑïüñŸ}ýËñGßþé÷õåw_}à~öõO¾úæ—ü“_éÌþoÿðG¿ÿo?üÏ¿øê›¿üo?þÂÿᇇóáüÝóÇûá_ûA_³ÿñ—?ùÉ·?ÿÅ—ßüÆíÛDú^ÿöw¿ÿëïÿû_~óSñËŸýò[þý—ùå×?ûòOø…}é_~XÏÿë×Üá÷÷ËŸ|÷õ/¾ÿåïþòëŸy_ø1ßùøöç?ÿê›ïyx}ï×ß}õžûß|ñÃËýóo¾ý«oþöï~úÓ¯¿ùéŸz?ýÕ/¾ø÷ß|ý¿úê÷ß~‡?:>ýÙüêûɱât~øê/¶±ü~ÁÿÍ/¾Ú¹ÿ˜{øOû‹oñáO¹ —áWüŸãoùå_~õáûï~õÕúÛÏÿâ×:ÎóöÙþëñéÓÏ~÷þÌûÿîë¿þðÿ ,¿óCðÿýø_ÿû¯ùvï_߯øïîõÇ?íýÛ¿þð·¿sµ¿ÓrЯ<(%}øO¿þøå×?\Àgÿö÷¿ùÓo?´×©ø×ú—?¼üßþagü›¿þYÿî[–ìW~ûÓ ÿßB ?áÿÙë|ÿ“hyû)ÿ—+üï_ÑúÕÏ~¶ÿþ·?þÂÿéï¿üù×?û›~ƒ%û«ïYþð-›à›¿ÿ«ÿËW÷ì|õÓ¯õó¿ÿ·¿ÿý—lƒç›ÿÈRþóþÝpü󯹾þë¯~ú‡_ÿ“?û¸\>þù¿w£ýìëo¾úÃoùµ¡…Âßû;v×OþœðñKÖäþ«¯Ø<¿þ½ó›Ÿ|ûSwÙ•ò‡/¿ûîË¿9x×ü”>üíÉvüéW½Wñ‡/~÷›o¿çŸèýþŸ>üé·ßmcøðዟýͯ>³¦×(ž‡öÕ'óx çÆE|õ¿â5ýóXÇ¿!¿ @3«ž½ [)ª†QMàVÖè[îºdaO¬hŠ%ŽÞ©ÚÒ:?ZxTÙ½ jCq¿ó ÈÚS¹ƒq·6›ú<Ž œÃV¹“Ý…-?/?‹}_k›QÖJ;;ŠÚ|O[º1•^“>N…©&å]éY¨lÕ¡å®<É^ ^9üç‰X}¥*öé„[í*}\”ý ¥GÙu‘©å.Kñ¢ö“\@j¶Ã_Î:)ñTú¨ÜØRÌCgï)zùŸQ•¡Ì¢JXªiHwZ‘»rñlÛä幤ÎhÞæÙ)Wᜅ†¬w jNòN º‘Špv Žøê.©”xóÐÙN?MʬS²J¥¡’r,bäü‰+ÈÝã…Ã9Z}x¿Ï³BѺ¼ß Ùò!@Ä%C'Û#zò”é%Ù l‹Çg»îl•.ÂÒи}f¶»‚¨»-¢ëméN¾´YìuÜï àP,_‡;f¼«¨ŒA-MÅ^dÊgŽv¼ü—J=¶(rXïöjWH¸+ët©WcÚ·ò‚—Gï¼IÞðv.—‚ÖuóѹêUâ&ëÞ£ût¦|Ô·\ù`íÝÏÙeM$öá¼_œü×äys°švb“>51rèòrÆþÎ{”“õ¾øà¼ÖÖ Õ,ޝ¾G_ª‰TÇÁíA€ï-7¸œ–&¤‘¸ƒCuÎʪYÕkñAö,bBåÐC>ƒÃJ*ú(¦«ÝVî)Ï×!W¿)ïcÇ'¶-Ï­hÌ–Xy4´SÍx ÷÷Äçú¾+ÌrÈÝYêM{tjÿù(ĺ7X±µžÛáñìÃÖô'>5ñeEªŸ§h8{Ô)È¥ ®Þ5¥“ÇxkIONK ÇþUá”ÚžHë\·3kw<žWK“‘÷I°úÓ#*vöè¶×”ÒÃvº_­xûrE¶ž¶òg=¡4µ*‹`F"$uùO¯ó­‚E˜òs•ˆ ó"ž… !]˜ƒ%{é °Ý±xýßÕfQ˜8¸lÍpçÇ0Õ‡ÍOVSyÛ¥¹gç‰kl/’²£MÕáôH<}{?»Ä­÷ö¡©¶EŽ"{-GR[XÏùÂ:`Sy¸îèåS—#=EÀœìq°Žq2O vÂhS¹”—Ð_Çí)>·òd½ÔåŠ+¸(£))ýëY¸ŠþR^´ s8ýá î=í_û¶æ*O̧F$,ÛÓ™/‡®‡0« )pÑ.Oû/=ÃkP 7Ê“_*:‚´pœN­!>göxÒ¤õ¾Ë¾‚áÈûÊDÇ~žˆÜ6mÝo“0ßúRh¥ßÕ#ý-Áà Fªt+­E¼~¯ò Tò䘶ËBÞ.o’úSödp~åLò2eØÙ JÛké‘¡yÜŠ×ÇøC}A*biÚÆ¥ƒK¥ÈØ—Œ•»úÛĘD:‹Æ£÷¡zoN•³€yVUz~ý*®Ó#ßu"Oi£©z?žì²¡m²é!x=Î,è*wÊa¯gsáL|Îxt0­;qìâWu¸>ƒìvÊs!±Œ _2®=žæl;Q!hÃ}ibñžN[jÆXÏ3it«Iðë‡tÇÆ‹éW“†Uá•9ÉèF(ã&=ð€‹–Ð™«ßÓH;C†B$ DþNG˜,C<Ñ·áó:lV‰So-5#¡ÐpV›˜ AU£öãZ\‰Æ>À’,{e 7ŒG“½7:±¬4º2µ’³{Ò˜äNɾþ|¯÷“¬B¼ò;6ï’4>6“Z>tÉ­k¯*‘•X[øÔâøÊ$v|˜@ƒ¥´ÀôS=A­ÌÙ»Ò3jvò|Ýækåå±ê‡Ø®óXj秉ÎÚ4ÅI‡¥ÉÕŒnÊGñæR þv5˜‰á,âqæKW¥¥êöc·,ƒWäÖÆv0-Åä .¾ÍôL1ÈÃwî™i ›ªO¹øëNAO¥çô~ÕáóÕø(:/<·VG_NK²sÔîM,›®ÜY?ŒšIð ÆPºþ¶V—4)D îŠ.£Ýz@VêmK·9tÀ£ºlÛǩԒßü\~îïS‰7ÈO?AµmB¯;(Ár“ü1ŽáÕØ6VsŒpw¥µgJY°ªZïéÉGƒ¤l1Ͻ…ò‘´Gq÷Ä[5Iàã pÎŽÏ8pK‚ uO.S|Í»(vÁ‚¥>ˆš~ß`uutä”ìì Á“+N¢†bÔ‰ÿ4 •ÜÍ_Rnkb£“±ºDƒYß!c¨s2WÞ*\RBÔ3בޱ‹Lf³üž%ñóEíìŠkJF«=÷hOXÈÕM!°%Õ™' SU=-׮̯¬Ãâ;°Ä ‹êey¶ä„¿UÖ(‚ˆÉã2Op.øÐ²08Ý¡ Ë.›ZÒ#äPžK‡ÈbwA‘™·M¹ÜXR)ªð6'Æ+Ù ¼L©­³ á ï»F&ÅL%Ûªe‹îÛ¯zk¯ÓðÔF²¿67Í : ö2qdºI•³æ8È„µë6Ü´Wçí²§l¥_×ÅM)¦u¬ZÏAø^2¿È[§¢p<ù$NVW¨æÙ‹çù’ÄAV Ö¥B4Ž‹é~B‰KÕ(ç¹X¦  ˜lö»¸ÝÆjqK3:îL­©"m¢ŽS2–¨s+ê¡©¯¦ õ+z‹ZP~vùŽ=o¡µªÞ™¦v{»u[t¤îЦ¶QĦ9ê)ÿL?þ1Š*pÑgá&d`K—¾£-ƒQò9†¢¼h>º·p—ãG¤Ç[åÓ‹Íú˜ÔGÝ8ØÕ š®ËÊy€?%WÞî/u$W'Ç‘œÍ{È–dA.yõÍ QWÀœ-iVçàƒÝCªåíË\¿<šsH>•A/2ðjIŠ;à¬éJ Å‘ïʰ*P5+>Žç‰³êø uJLάõa']]ô-J]òiüÆ©\ñÐ9œ _=oÜRÆaÌõ)<†%>mdË:I¼‡Zý`ÃÂk1Ò,­œDe„ýl‰áz‡ä©éÍÒ¼|OS‡YÓÁ-ÞA?¨L%E{2Áƒq´þu¾¨óêCôf[ûC^죿föÕR±T¿àô¤f8›¥‡.Ïÿ¦<$¦$%?@FduF^ÕÃ笹´ÛI”“äzWȆÓVoÝ’A)¼NN¿@ÀÎ:¾ôÔÓ€\ÛR¿*çÖúä õý£)…RÒ‹½¨‚r¦rk³z:Z¯/«QÞ|ËÄ}¤•2åÍqõ}êªÙKrcð³²êT®ù¤ÖJê²³ÖÛDŠÛ4$z€!w´®OÊõê DÕ´±ÌÐu]; 4jRA[º†ð¢¶E‹hL6á{…ûàq*þÞ•&™rd»&Jö"œã©fÛ^gÞšŠD°¯°…Ê/S8ºÄoŠ×W+y]NOìR„¸<Ž^Êcï~Ù ×i E‡ƒÆc«]ïKž¾ÖS£îkJÊø>j½9Ëgáuʽ=nÏÔóé-*nWõ÷†$íL®ÖV-5ªY–OÝóh¥ {ÍM:õÝSÙŒyxß:yÜ{/‡ôÚkŽn2˜[wEOð¡ôÖ²:OEŃB׫)¶·›dT„4 ‡xˆ Ò?J³²¨<îýnÒ«þ41Wv•Â7òÏu¹"zòm<ö¾6óK%#2ƒ‚ôº¯ó6Ìd@K ´ÏÄ.Y„†Î¦ ‹=ëÐáf×ê@á|ªA¥ÉxW¡/’ÛÐqºDJBr#`8>¤9Šƒ-æU‘†8 Dà}5GzÖˆÁjˆåˆs’³Â([ÚÙI\‡¬Ù7Ã1ؤw´HÐÃÄ¥†‘M/µ¼üû·Ü5 £%'‹@aËs¬Ë:T‘·P[ô¨ŸM:£ÐLË<±B0›qsƒ”ËÛxY˜kpG6¤ˆ³¾Ðç|ŠRàEŒé…O»‰D~ï¡\Õ婯$š¢_¬)5r¾þPX>¨ t+Ò/THQÊ™_ ª†Íº¥›èQš‡†æ7¿6%Ð{HÄÖÁ®ñR“Züm6¦,ç¡8Yì[Ó}F Á%ÜS|EEI``·¡Ö y(ÁL#<ÊÄáRÙFGtŒº‡ívRþ*757¦&àIêGF`…ª£êÃü]‚;1®¤ƒ˜C&óxØ¥jƒƒn·Û?n1à.rˆÏБÚó •K`ÕûZêÓpÿ·Òg™¯“ò l•1ãÈi£P?&S;m{QøàŠ>¤iÍÝáRüÿo6®ªý¢Zx‰ðS‰ŠéQ-h'*c¥Ç$®Î‡–-R²–[ap¹“_S]II¾ìs ?*!L>FZpTù®iÀçEW¥š¿hARSO1KÛXI\¥&«m^ìæÎ'„xPL^¥Ä5ŽUš½«;³½®”Ô5T ‚GPÛÜwŒ”Ú‹²ÜRý> pµAÙyFEså ¯WU™¦Ø¯ÇìÚçQ:kÊ¡8Eá­„â6•RòÀ(¨„_ö"œäc-(M'Gh©"É£8š2Ž3°J½‚ëUÁ€Â›·÷Øb`K\· fÂÆIÁÅ?O¬ò3YùR¶ôJ^ SÍÃGí´€uBN²…ÊÇz‘)Vðè*¥œÀ¥ Û©jWåX8h8¡õ$SB€¼¯S ë›â½碛© ž#Ä,R»Â-ix U¢ö¸[$ƒÉ;ÑæR|LjšõªI¾œ¤öЬÍýë¡+›ºÿèÖ”"±J¹-ÙB½Ü7Kn„ ðг›¨oÕ-ŒzRM [^ªOü ]A |€cIÞÚòðNYõ$”–ƺ½)>½zzf³ƒá~×KÑ•ÛTɆg¿ôQ•ìÉjNKÚáoSÂ@Þ–æÃCÛÇ)èβ°ïpQ´sG©L+ÍÉSN ØP!YÇ» EcX‡h¤“uêc‡R;ÊxÜžt»•Ì£vr; ­Ô“P˜ wiÈÇFÙ]G*óSbhÇv b7-ñ¨¸–´ÒóÉ'OÀmjóüSSÀ-“x¢ŽqIžÃà7­(àù”% úûr„S?y'rÿ縷´>©d»¶³×z>H[Õ“¢WåF4QêCÛ“®(æ¥ÔÙ £bScU5(ÊêB‹ ÅúS'À–)**٦Ǵnt bõݺº”(t²ÕþºÜŸ#©ÏÉ¿¿À¶š©¿€{ Í"‹}QãÛ̾òåù®²`Y5"Ó‹ñžÝBÁÓµi¯ÅWéäxÝ–7CÍò~ôóëÛT^)½zžl`þÉ|û±a/¼k2>ø¤ÄŒ[­÷±×žljJ°yD Ç£ÐüJ^@<À Å ÜsljMŽQé\?7­ƒi”(s«WBš‘ÿjš·JQ*T\„éÓí$Q…˜÷<ª^ó*Àü™*Cª&éüjWÄc9 -_ÓŒü²»ï£—.»ÐîØÕ•ý›”º¾µŠvÚn{v¾õpA=ŠóEÖÙ9夑¬9\LT_ªl±ïÔwûçPvãq¦zêÄòK²Íú¡¬*îN zÚ Û®G’M4/_9ë–Èx¢=Â!)#(WÝ N@eÊauN´Œ¯wâO(Ô§"šdòÓ£A¾ìœX§ê”®©lêÓ²Õv=îûˆý@näcÚ{ovöää9\þÊ$vØ¥Z¬Ð{AgyÙgΖ»ˆeâŽÑ´Ê-Êj–ßi+ß'èN[ 9-5¿[‚ô)ÁÄzÍ"Ó7eÚ)](üU_—éÆB’ø—ž¼g¢ê±ýDtžÆ5Õæ» "}‚H V´ñmKÃ6 ÁìM—Õ׽ñ6©èÙô HØEÅ6cÊÊ Ö5[•D··Evm¿Â£ê*Ð<ì|ÔùѦi˳ƒØØA|`kê¹ÚdáœC̤j%Ký¡t—6ïˆÎǾ®®[2!y”¼Vœ¸ÑTã1”*”’ìÏŽ””°Uë©WŇgZ¯²ÛYëEU 'ëdkÛVMC(¬Ž/0ü&i°­½¤Ì…úòzL°ò!¹<-NSüž·ã!š$À¶Äì^%á|s?²¥ñ‡†Äo êI¸ë$45u<WóL} å”íDmj×[2ä1H¨«5vH”ÞI™Â 7ÙÌJ(È–<ÞmºZ†&PQ‹L9;d¦´ú]¨ü³ºICw`¾-«ØÙ™õ )³óC”IáÓ°–se¨íERNªÞׯ+µ¥žæAÝS¤nª ò±º$â&öåO™wžGÓØÊC4ëÍ£-­-’’¨gkÓvIÏÐ+Ožf1¢ÚŽ×w‚2?\Çn °e¶“:/|)HÆŽ‘ UA&¾î¹ÝýxEpS9ÂíÐCÊæ¢šÙͶSMZ‡œ©À—`ò"9h(Us\I½’j»ó`ËÊ<:õtx’ÀÂŽÕÚÄfðËk™¼9…°«Ö¡?à[K£EBúñ:ød›$h#–žGúM·»ÿ¶U7ËÔ7q»7["¯(S“â€ôþzzºÃžG° Ø(§…ôm+ü)šiè·%zÖ“}6*„éÝæAÔ4<:3p6ð‚Š’[’v¦ï­š©2d¥{dT’æïtj7âppà‘€Í+{=ü8=ÀóÐ{é"J!¬vì4$Íâ\Lž6“é¼ï³š•8Ð¥áQ€¢€}C^[6+)g¢¶mk ª­wïa,¨ÑÓõB}G/áÓ¹V·”T>Zru ú•*¦–KR|]—=öÌñ"V^¯¤¨S»A9 Dãœü±§B#ÿpgaxhAH‘Š*Ð$‚fë¦dtHe*Ä"ê`§nÂzÐQE½ »ÄÂçJâõ‡"â(±r5 e6åƒó¤m»Û\úÛ8|WØ vGÔ ©(b¡2˜Ã`§ÊÖË¡U]•?}B7 ÿ©cq÷ñ°µy`öÖÅE$ªBSqÍ åÎ,¤ûm/8\gÊ´‹8§Mº8㱑¤×5ïQ3“3-´ƒÊUêŽ4UGìºuOV 0Õ±ÑîÜ6w÷êjx’XˆàT»Ú@GO¢yÆê$Õ®gÜzU±ªõ+“þ ±,¢ÆöDZ¢— ˜Ó*ö¢Xz¹›pÁ÷À‰¡•'W}yP4”SÞ†x¹2® O°¶ªŸ€.ÒVá>“ßSä[¹…AX9öu(ÐŧÇ8•W¼U:Íî|•«³WÙYšH¸!Å’K )/4ϔˮ'aËÇí½ha¥b­×›.* …òg›NëÈ”=«²¼\ާ„ZBÀÁsv«ði¸ädfíjš×A¬UÞ{©8ÇÅðîíw+*²´*¢àh x 'â ~›2°¼Jà²m¿¡+ãý‡:^ ȼGŒ¹ÜòjÃCÐJŒ}p¨Žù8ú.kYàŽÒ]QE¥5+uÓUÖË$S9^”ÆÒ:£;%À?ø Añ7ð_HÒìÿëyý#$Mÿê"i~ü'ÿ*IšÞÚ$Íýr$iîŸþï’4ƒâTÿòHšû^ÿ>I3Å¿sI’ùùϾûê³ßðÛ¿ýÕwŸþ z9ùé72ßü|ú©°¾?ýT?|ñþøSáÛÖ§Ÿø®ÿáÓO|ìïú‰OùƒO?ñ)ÿîÇŸ*¿ùGŸ~â&ÿçŸøwÿË?5~úòÓO|ÊŸ|ú‰'ñ“O„WÞë?ýìG®í«Ï~ô!|ö#Wð?ûñæÑö#ÏãëÏ~ä"þü³¹ŠŸ}ö#—ñóO?ž\Æ7ŸýÈe|ûÙ\Æ/>û‘ïýî³ùÞÏ(¼'æûÏ~ä2~õÙ\Æ_~ö#—ñWŸ~”ìûןýÈeüÍ?ç×£÷x9d¤dY£FVFþêÔÊ L Œ³¶Ç~Ä%Åjåû¤âÞ¬±—}{l XdOèrÔ[¿Cx?”öÚ¨´¨‰(ÆÏä Œ#ý7(Ü7Ö£P¦Îމ²Õ#_j¥;Lé¿o92¨DÏÜ÷ñøÙe$Û2%E€vÒ£%®ªW»žD~ÌóØÖRÌ…›:mêb¾»þ zÔ^NhêÑ;ôÉ~¥¸8#ÿ¾ž¨P®;&©(®"K‹û8¼wå•ö¶†Ž\• ·¡V°sfZykré¸ÓRÒG!¼¡ì{¡~tÂïÞô6åv#…6°=û=9­ æ×¿œâïU¡åqè Ï÷奨§AŠKǨÜmV²F‹—ª›ú¦ÃâÔRå|{®%:YWÑZ0OU÷îù¡x|˜ÖÃ3‘±¶Pôœ‹»ÓèuH¸®=hð²Dfy¬©ˆë¡EɾµÙl6TŠ2À§Ì+åúCr‚`mî¬ü°šÃ3ž—â³½aÞã¸/åu=Ø­ þØ|}()ïqÅÕßz_%%ç'ëmqžE>ë1v¹Ž©ËQ‹Àqé ¨£^ˆqzàì‰H¼V¼WÛÁ+Ü/µ7¿PfÝ¡òùÌ£hþAéÚÔáÕÍòá=øJþZÓXš.V{±Y«Z¨Žåõ¸ÔÛÖÍÃ7ŽYly­«R|Rð{ÒÓã³ÒuÜ¡^cn7#Ÿ.mðÂv5]›2~ëÓÂnìICIO¶ÔF»C|Š3Äh‹l›–Åq·zžÇ­PéЋ°Æv©È¤IŸ6õɶ÷™ß[ f•y·µŠòb· qý‘xÜO‘•Æ¥>³­Qfm«d`Ú–s±ekoÍøÚ|åò­F7‹I£½r4OB†VÝYÛy-»÷Zo¬§V„+4PoŸŽ|óX"[ⲕ½µ¶Ú&ÜVGï²Øz³]¼HbƒÇÄž¾qn‹™¬ŽüeöçIßq¨Âûj‰ú¨ˆºF ]q¤R4®Ñé¸\ îÞó}RRŸ³fš×¯£é¸dÐ&Œ_HMó³{Î!Cú™¯j’JŸKʽ4éÚ_,çæqÐÒn¨¶ÐŸû¹ëÔh·ÔÑò¤ÁSBÝŠ\eÕB,ZòޙΣϙ4<)Õ^’’Ó|ïµøP}}ô?!2y&ÛuÎRgê|'÷Ñy_º³¿t¦e°/«fi9±ÔÆÓäuzʲ/}<±­F®šÐ9$Gp‰—³#9nw(‡±j×u2LõØn;’’RNoŸBœt¦·=$¶ÇÉ®Pä‹ï ÷È{|9³udc)žq“éX?¯TxM'q¨ë1kêÐË]Ë£¶‡õ¸ñ‹¬à®¼}¼õNhÊûø^g§W&ÇÖü]¶‹Ê“ˆƒžï—õ:cšŠ†Çãå}ñ­›Ul«ò—^cÅ£ÏGË~„“/é*…µ%€“ô*ëöp{¿¼‘â#›º±f¢žá‘¤8z>îéFÈöYòä$–îÒΰÝç[×H=Q²ä%Ûð$R;ѵëõ[n’ñ<_ /GÏÕúŠüYº[º¥O²{ÇH¡kAÞ÷Uìe±“ÉŽ-äyfíý4Žs öt†"Žë^š`¯"í×Y4=ªÄ« ¦Øæ}ó†²@P ŒNú³)AfN¡’\{Pì¤#Yx/OFªJcqd¥€ÏûxIÇ—‡ÁWÓu‹j°»£’­ ºê«©¹Ò"¤ ®÷ˆýOÓÅ*\¤Ì?¾šÊnJ,õ}UKÕ•,¥*æcðÞÛÛŒå~é$QÉœQf ‹hÉÆs~+Ü·¶/ËFé«m¨¾:Ú»„¶©òX'§fá&–Ôul|ÝËz²‹ÏKëy‚š*AÙø¬GŒ´%^K5¼ÈîÀ¢÷`—u~c¢‰uÞÐC”-íSΠ`˜½±y2+e2rÑ͸KLÌGQttiÛËï91&Ù,F€Î×doU’nï@¾CÛ*eFØ{ ¦îÄö!30ÚÎÍ[;„'"q»Ä °Rn©ü³ ÐÊJì¨êc‘£^O^&ã¸*½u·OäÃ>yuÒÛMd‰C*B;£®ÉºÅ EI²QÑaÊ&ywÖŽ ÕäëSçåXò­Í%~äβÒÏ•@$Ü©ùü_–Ãì4bíÜ’ëöÙäÅF’†’ôÎÃ'aÁ‘ŽÉ&^|}ŽQxEEeû]¯‚íjP+œE©ðuKá}òp.ûÌm[‚xñ¯” - QÈá*Ö„;Z½¶ì“=Û³ÂlÌ¢e ®×Aëôì1âã¹¶Ù* ‘dÁ¦–ôÒeÞ—Î0µ®[µ¦ ò_S•ºö€f;l%I9—~ç#ðª^ë…’ž¬ ‡Ãÿ½ð‚¾®–LÀ=à-8#¦½wó+ŠÂ“dAÔ}õf‹ ’×¥¨½*a$²fÛh¯Ü‹b%žƒ%È’$Êqyf¡pΣæ[X0¹SýSBÊæ:>¢hU¤ÍþRŽ\16X:ÌÒ‰‰´u#ê³%-X‰Î´°:ù¡8þMÔ£öDi1aY\ÎRvKl|9l†¥Göy«)O®~ˆJKÎ2Y›»8Ù ë"’MMƒºÍ[«ûz±ð.]òz¶O `béÔ8nÔó Ú§ä’ë Ê±vƒ¾²ÌÓ8Ô£¿œQ;-…»vs,uÍvâ§ànzÜ-™O¬òDYƱV8j*Òø¦ËíÖH6yM_ƒü`¬i8ÊuRŠHgÙâ!’ƒÞzA3•&»ßIºÒ<à²R“Y§ Þ­ýwWÎéN.PŸ°(ð7ȵ;§Ie3±UÓÔ\ív®Æ£ø€ þWÞÁù扟j”ûÑI0]BÇ–ÇîʸõY(zeý4Ý#—ê!…Z†¢o œâÀG Ž|´A±‘µV|Xžá"¨kºúÒÙƒ7–[P>gº‡0Ù”ÜÁµœ”ö „¡sqÊ>>q8£¦±«£ãj’\oÖ JÈ*Ià”Y14øÕ7 P#­é”ë›Ä?mŠº‚DwJ8ÊéHJ·Àµ .`˜Åâ‘$s¹\IŸ°ý¶.B¤jèJÈðDÚÍB6$²tè8”8dYø®*<uŸädWPØv4Àñ@¡*5Ò0§ôüx~0,ªª’,§ãu³‡€' îpéQç„?Á´ ´íøçp¢sýÔÝOòá™­nòrTȤAl•¬¡ÛEorò-o‚¸YTuÙád…6:)÷p O¹ƒ¢N¤E›}¨ ½$+ÒÍ5¶G²¦oúæž>š°¬–ä¼ÕE“¾®€ÚŒyûÍ36ÍNƒùàN5‰>c„N\8¢*E–éÞ1u I”OfƒŸ“ÓÎ$.º¯µ/§™©Àk"³FëA¹u&êÛù¬\MÍo}F´8—]Ï÷Q€ÚNÇ6—Cgò£Õ"¬{ ¬1º®‹-I”C&ã’Àù ,™RhÝáMÔ®‰J%¹RŸrKSTuªT/Çl[9”í& ]E3msê– ì"\–0ÀDêë' HŠr€²T‚Ví‹“ú‚‚¡¸ï퀸”2ˆZÁ$3x©IÎNtŒ©(î€dXüöuûŸ©#rnÍ>óvF Î"‘þ¨®z¸õÖÊÿ¢æòØ0ÊnWñõ¨²Ù«ý'¯çu^šô  ìt)'I‰Ï«:N-©äÅå8 Y¦Þ[•h‹°JµLúz¦“¼6¥àröPÝôPÊÒ“òuÙÑLΦh-Jgד›r:˜äJÔ( C’ªT—\’(+»ÑÁt [zž%‹® “^1óÜ×lÈÞ¸øÙFÒ‹ˆÈ½¾žÒRŠØh€Z4@+É8ÓÈA¯…ð°l_Ç¢§•I¤¼=çÔ |Æ&·¤xv,É1<º ää»Ðes@"¼NæzìazJÍ%ã@{©–Ô ¢+G¦7;rkq[´& )w®³÷}Èè¸È¹½¹‚ÕÂáS¨“ƒ±O* |ûÙ…,æ(¯ŸB㉊ů“—¥{Q—4­K»ðû¥ä—ÉJÛê9iËSR8PRŽl»¯~(ÃeKf…Nä¥T—½Õ´,"äÎËÊ]Ô%g›5í)JãêÅH-Dð㳋ïyØÁªïk_-Ámº®¨½ûAKºh;B9é‚5ÒIWü¦Þ8%J3Eg-vQU7Ûdª%¬¤ËpowÑ[³U  ±vFÏ#¡]¦¡#Rów ±I€è§ìrÀ(iVÏuK4qÿ¹y;©¯>i •rxœ¹ìCˆŒW¯¯»‰=„†ú˜@BÊœ®S‘±lËA†‘]sïÕ­?r°G1ɘÄ:ÍG‹6Íß=7¯ƒ˜$ë©*G/Mûiñµç"¥³Æ/×s§Þ^M¿ÊÇlZ{ÞËþéI xxýE™$4Ø äe<„«Èö;è¼(…“žg³­=˜ßÒyÄi"´-¶ßð5;\Ízz pA£yÂCT÷ñv4¨ÂRhD˜[õ3¢¯Öäö¥ÀÙúi’Qîe†ïGH)z«;ÒÏ;a*I8w}±œ!P„iZ®½ $´Þ ÿ¥÷ôÔ["œ!`4õ6åŸãû, ¢–“ºA‹—±5Úœ˜ÎžSƳù‰[TQlò‹oâýéâ°ª#2é ~M•’§å>œ,çºë?óžä»Ý¥:Ç^ÔÌ ¢´‚=ļ¹z}/Mmy°-> Á^ê…5^7k沗σ|4:&NSGtJIÊÕ»&±‹Îz–ééþ;/æEÜú]—ðÇn4ê. ¤@G0”T)9±Ú&ŽG¡/P,qhEõ°ì>ÉI­ZÝÞ÷V¤!ª‘Þ»Tw¶ØÖc¬TsÓ¦kÙö`< pçu’°(oZQ¢Î~ ¡²FùðyðRlwݶ4ÈØ~ô29&QUò+l´ nÊÛ/°‹V±aÛÇvˆ·Ô„L¤$é4ƒ'‘¶ø´¤IY¯qž,•{k°%æ} M*ÅdK rÕH‡Úê¬'ðÛãE!MvG³«¿}ÖŸ ¤ŠÊG’5ÝÚ^ùæÜŽç.Ês5<Ý#çPµ½ ,JÂ~&P¡"tYGê++€¿ùÐ`¡W+¸©ÖÔG0Ý„ê!’UH± vzÂî%ŒŽ¡èþ%½ ìIü!5:b±:Ž ¤çe*(äwªÓÌ|ÞÊ æ?+@MÁ¼1ï”OÈ“°,õƒŽ¤EzVö8U7‘½§²$`ù:ô´æ‹–³Š²(Yœûé’Ff•œî!À3°è [«:·ÈA ÑYcª:G„ºƒ,ÒbT puòÞªöƒlxVáMÍõq[GR¾di­wYî¼s` 6I‚+5ƒì†þx¼¬‘kS<_ãº=[yÕ¤¾ê!©‚ÒŠð=©§º¼'ÅÞ ?A14v™j)7‘àb»úe…Ìê]_ aL’ž«ûb5óT3åfäÆk,){AÄåÞ)à^¥äÉzÜAP£&õªÚ^kã¤]EÛ9j­x0%EýµÙ³à9b-7£¤þÉ,ÛÅ;Œ ŒA,#&h^Oê;©²’RÊ•p“d«C›?﮽Â7á¤Jܨ¾ØLCOLGH„»NäÛÖ›}§÷™´D"ø¢>¿¶’£îtÂè'9HW¤'^úŽÙ£U$TÚÒ«P¯QfVžTÁRPÜ1ÙDÃ‚ÂÆ)eÈ.x¥ZòɆڤÛ¦J½þ(îO1ÒPïãØ¢ ®=Ú“ˆÇRíz̓@³­X–o_ýÊ’3‚F×RkÙCÃv6©|{ß%$Ïø!Sµ~AÃ]åw—!½o6êY=ryÃ1Ém”%wÐ9mÕZµ‹ä²æ0"O\Ö¦žË¼1p)%³ªÝþxŠ*PIAÂò eå4"´M;Ü<2ÒÒG7æÉ•/yîÛ …cOv@ÂVB+;sjÿ½¹·U­×|ii›lIt•ýyQ °GHdò©éó¥<¾úbšÆÛ}Vü€0"çO­_g"lI%Á8!“¢žò…²OKHBÏ –ºÔPQ_‹G 8½¶/e¦Xš„Eó4qy,º6ŸƒÍ£)œt¯Hú6¦Ý«+QÆ­fv¾¥xÓÓž{½Ž¥‰ÉÇÇ èÄcJÊç=³£’i¯—‹íÀRÈjgçÁû´!ݽœáÔŸV7IpzL­Ü»ú /q©°_)G*êýóÇüG¼µv“‚»8Õ)Yà©*´ª»7¹¨Ìn§Â³×t‚Žï¾½d(<¹ƒk™ºÇL)­n©ž˜XÊKh"¯EÁ¨ä6(ZÉ"w຀ ¢«êÕnM|°¥œ? Ý7ݲµx1Ð)ýwù^¹ ¯É›\V¼‡^ ÝóËz<ì*Á[i2ʆ¡¨Âtì…Zìvž:n}­ö!”"`};r;–¸ûÑb˜Àµ ¤ P8)«d›3…êöEçIœ6É,Kn"d­ã#™û:µžgѪßév²L£jM_•p  -WX¸GädÀq${”—®Žù¨IehvçÁ¤¨*!¨ˆ» ò 9œž§ä¦f5é?8XsŠF÷qÕj,Ê'm™u°î«:É«‹wÖr»oÄWý$G .}U•Ÿ7Hº6•›Ô¿)Ú”ª?ž_P_éy³û)¼Þ@)sÜýËNÞ™6âDÞû-+Zef ŨŽ'¯ÀÏ<.)å¾yªÊ ÷nˆ]‘€á)ÛKÑ»#rYñWOõ«SÏ,#ÀÚ}ªM0ììó—grtÝêIZ$‡^i { soåÕ•JÉd=OsÏ %z 7u׼޹íàµmLßΖ!¢«gòð%Š:7§ °N; Ͻ…*?ú÷mïÝy÷qË&oÛ€y9¤¥‰­ “ôÍúpZ•ç'ðïáí;ÛY—\² (‹<¦owT'yí¡§¤aû«)«­’]+Þ=¤1" ±r*ÿ‘ß;câÓÔèfÝÙ…ÝO(×Y1]«©ã6˜)æ(E·š»LUï<ç*5¾kãöð˜¸oÝ8Ö*$Hµ ]Šm<šIMï/…¢W™Z•䀽[$Ðýë$,©,‚9X¶,>Wy/³ëÙâÎTá8ÉrýÝ; 9áØ)+´%×Õ]¦òÆå)šÅ\v ÄH:ð>Ž`«qÞ©./åêÔ1ȽixüRÞ:³D”±)´J­jÑñK<(öU@´‚|1µhŒ¢t€S÷U»“‡¶N®¯ª$ˆZ1§¢;/¤jž!ÏÒæ'¥8‘hgš¥úE&ÑãÜdu˶ډ‰ ¼©ÿКò^àäxç­‰LÇO©2£„rêÅåù°àêDÁ+ÛƒÑL7f5—¼àAç"ú“30œG êÏö¢z’‡ìYúyæÃÓÉ’kºÈH B\㞸 "©V»èƤ~lZ’Z(÷CØÊë?uÍÖëϤp·jSlvO§sx×”M”òz•¼j±vm×È«Cí¦Â®–ô0÷Hƒ×“·%HÉVl+rb"ÉDÓzðò­eØ8¨pÔíP·„uØì?O?uW$yF]|Hê©Òg¿°[-Û#¤=Ûryl^À`“´°…¥_Ïa(ðY ,Ï5‹O‹ §ð/ÿì˜Ä^hWÕVbwQöÂù{P}=¼M%õÌéO #WØlH²Ó-yØ&Iù%n­œÚ—éÙÏ% ðë[É]Eгæagž2<§Ï3)öØýñK#‹³:Ôâ0†ÖÃ`D’$ýì¿øÌáØ®Z>ì'çT c÷±œ®Ô8>KE¡¦\€(Jdî¢P‚Iù{”Ôí¶’»¼¶òd(Ä-?î‘Hw8ד°D›ÅD÷ÖáS³ÊÓà¬2‘زhbàY-Åc‡eèù­Ðq«¶ÕMàõòŽÕ‘bkT»à›“?$ûðA·‚Ŷ ^Êzþ€k©–ЧŒÍ9¾qzT«z££!DäÂ!öhn#yÇsr&¯¦48Ô¼hÁ[}H–“NïIð¶>‰vÄž³ïÔUHy¤'¨çM)B NˆªíWgfÆB…Õ”åVB=Y@<ÿ¤uµ²Ñ_þtÖß™ZIYà¦6/‚‰fq¨ÇÙ·î=)üÔµG·Ãu¹Y*ß2·r [õaÝž¹eÚŸäPf˨8”Y‡ ‹¼dYm6¸ò² 65í+S}’¡?¤,•Ë~óÚ­ S–Ý]×áñ«gÛ\!0• Ü(l×®uƒ5ê3’2-y ¹‹Gªú©µÛ¤Æ“¿<¥-5)€,ç#Çîs î³}ê¥äLQÿhn?…¤n#È&”ëpZ[ úPeØ0•Rt­u„OD2ÐŽ2lFÛ”ÐÐ|¤Äwh*ÙüÖÇ/Ûù›rû|ó¾LE‹».vÝQÕFIg]K¦}øÔwÙÔ”,ÞtoW+*:D—w·ej¥àGUlùq:Œ€dc@ÑrnM׎Qɶs€ÜeÞnrDd"ÀÂ9ÉS¯'þis¨²ª ‰S ÀLmí<$y†óâÎV/·¼JuMy—.+¬9Üo“8hA—¯š5% ½W–f±ÈÛ!‰¶­æš¯‹`pë<âV£eªóme¿:O…’­uQ7‚&,ËXgkÚ¨_Á}Y'ݪ–Hì„ù’)Æž”Õërfü£,+¯è€WÊV4›²[3™L{G¥T0Ùý§]$`6ÚÐmÁFÁ}¼'YòÙÜhÑ%‹"øt²l±œƒQª¾ùxуNH¼Uö·cíé(õqÊ4þ$ì• ‰€úã°”x{Ô^÷µë‘DDØäñtkë•ø»¤ Æ,[È~é¥IZZs‹mOõŸ?óê¿QÛ9ð 'üvY/Aë3E/ÕWò@½^Í“:–èTKTx 8³Ë°²¤EÊ*–òé9Ñœ°Hž84î$³VCÙmªQçÂUm½YµL͵XD|8Òp¤fÚyoÕª‹¦'2¶†¸Ÿâé´GêÄ®Ĩg›Ÿ}l û<ú.$o…éKu¬ø*ÙÔøâDyÔ¸„ÌûÞ1R¸žá<=#*ê&ó2ò•”·K ~;ûTš²˜n’š„ÚçVƒÖ1$iœÿK°sbDêŸÒ·<>tÔ¥JR©)² "Ù¼Ô§&$r]2®²ç•3×"² û¹ˆÉ& Üj1? OÊÕÜK¹çàˆ–ÑR–8¬ bé]¦M¾”㪦jõ£Tç+ófAð:€&ÊÕÉ“s¤­Tø:º}ˆ/©‘°V”{d+¾ÒGd¶Ñ¥!êŒÍIr½m‚Vøè£j@F‘j{÷¼¦CꉙŒ=Ü#T )e£sc”2N4Dv=ìU»» Í3­¡R–*áø›ÄáÞ¥ª+ÈFqu<Þ8„"åÔƒª˜¸¡W)¯lû»º«Á³wQ’×ÍÑà‚¼~­[9¨àùAÙàµÍ|KÀA ÂóûêåÎÚÔ(Zæ@/ßvOátd§ëµâ™¨ëNm÷ÑvhÐ/Fëšë£Ê|wš•}{Ûü6ViçâϬuø´*L@à;50ðÁÙÄs~ô0™—sdNAÏ'TÁ`Ežú%‘YÏÔ9ØÂ8d=8&NST‰c¢ùϹoçyÙ<ÕWI=òÀ+IØÙ®JrÕþò˜1³]e£§¸¹v™E_=¿ÙéJƒYõØWŠÅsÒ+€×¸Z稕ãa Y&·@’ɺôb‹ç´ÃرÚòÈCN6¿lb]¶Ûasu¨çJH¯žÎž—¥Úƒ¡DRCW^­Û‹{ˆÎ-|x»ÔDC™ñ®õñ³-Õ¤Xž»ue»x{„hHe%š$Ë:(Ûô´T°h\ê_´Re gµ×‚ÌIÖ©Øå4ôi³ÿºÁq¼”m§³‹(¢ž¦³í¹iMs8Ú!íTɽV$Ò,•O5CQ@œÌD€¾<È–ÿ«Õß«½öl§±Ÿ‚£©¢ølØAºL>m7{Bu¾^µÄ’ävîÓIåŠëæyj}øµÎëÛs¥TIÅcîÍÓà­ðbå(wÊA=)}¸GéÉ8’äËÖ¹žÚ–D-Þ¤sõC5RÃö+)áùÝp8“ÿ{òÔ) Ðp¼cR+«Dë•1Ï»'¿K#—“õ µp­¸—€O+¦ ŒM,EÓuýI<\Trþù"U"ä„H¬ÑRèQ†Q»Ì®Ïécó{¼¼[þ¢2ýãaÇ"ZÇ«¤¯ŽM6eyÓ»êqO÷ž¼Ž7o–¨f®`Ík(})»,Ã=Ë@7q&8¢æìRhVíÄëÑ!Hð\$Ïåë’dÄ6 ¡YJ1Žà9ÔIù6*…›˜lPjðà“ž ƒ$ßžöQ®ï8I-ž(Éÿ°„|m™r÷Ák¬/ÁNÒ @ô]N ÕÝ!S|`'³§j<•Mí© í¥xS/°5 ;3KˆAöÑXÕ¥Í`¤Û0l†Ûj,jÝ:ØÑUûÓ±s6ï6* HJ!óž"ᨤÌÀJÚáQŒM^»zEö¤šz†’'Ÿcö¦ÌºgÏ,‡Ôad!,³¬ït½©Q ÚXL.G÷'8ø¼ê…Դ˳œ3K`+NqžVÖÄ‚…½?PVç1™sÍpÖúA¾-6?³ÃsÅž8Áfh•çNàu,ÙЖôZžòòj&s7ÕžOž0¸?´–/’ëÁÍŽ ß踮fÛï©§ÊäµìÄíÙ;j=,ì4G‚gJ­ºÛ¸@¹9N>Ú´äðïðMÛkbe^·Ì{'ûš#$J|ºÕøS«Å}ïðä-Ä0­é¸aU}D6äš½¤!(µÏÈ“½Ê}9:¬I•¢ÞW»eºÑ"Y•²Ž¢Âœ¨¤-<7—¶»†¡ïë’šGð~õ¥‘€À½oâ¾îÁ¹O-´~b%Êš”ÿzx&«Ü­pˆÓ$ƒ)»BÜ\dòÙkœRŠÔôä9nU_rÌ bòì!Öz5n¡*¹Þz€™Z&5ê©áõÑ\ËBúe3*ãü9o NÁARUÓ”Ê@²UYWxëµLB ……sŠ]ÑV-°]ÒòDå9$£ÝúQiýrnK9…ÿ×¶¸òdvR®ó0Ц¦Y¿æêìF<5Iý>ô|,÷žTº£ö¢Á#Ú÷‰ëk1øèxþÈ^™êòpìOìYA<Ä HSûxºº/ÒŒã’}³dyJƒ}µW½u±½s7àù …VÖ«c' qOøT÷‹ÇzM’))()û=<'竎šO0΃hè¡TÒ|æôòî€C2€¸`’Ñ=W¤Ð|µŸae¨ ¢ˆÀCXúH­ŒœÀÕÛ›²Q[¨kɼÔ<%ª­{§Bà­ýÖýç£o—p|8»TU©ÉˆÅ`–î5”d¡&:¯Ö)®5¸ºL*2fç'”d£ËZ’a#7ÇEY=Y ¼ÙZu\ :,+Ÿ…*Vèc+*M}ÓÆúñš•åzùužA`k(ýEÞô0ç~wûû£œ@S"t³rÏe_{ìÀ/õ‘ÔuÐ:ÙPw‰lF:bæävó\‚kQÉ€®¬¦ÆZ_‹¬{¨'ÀcsІg ¾Í·ÃR¦XJ{jî…ÝtDýz”ÀP%ˆ,JC‘¼@Õª{# 4³ ÔA²‘ì¡ö(‰e@…æ÷HÌYcyöz%ÝÓY]BÙf5EâÞqÞúvI{¿—g!”Ñs©U\–’.™Údz-”T­ÔB%¸1'0ÈÍ>Žº£ÛCJ̈y›l€rX:¸“-vU݈öÐBÐ"Ö¾Ð{:µcw^\¢vgjêKeg‘Ïu;1Ñ¡“ªö!Ø\=€×›¸W¾L ‚dUû o@œCºBœÑÒ©qîâ(È%k°@…d}IRcÁW‰7²Ú¼_ê±(Înr"»……Jš;$Ø{ð$¿Þþ"º^t"dq¿6µ§íT½žx—|E‰ |Î!É' Q_Qê PÙÐÏ«jþ¶¸«2´³«`jÜùJXçÁk_ R½^ “$m^Óá*÷÷]ÎÒ4I\×I0šu8ì1<<£#íॾxÉê€ÜΞüªlróRôB©6ûn'…ˆ{vÂä;C¯ϲz§0ä©ò!U 2–Ó©—°SL:Çu9=â Ÿb‰ÌoNÄÊà>ö“4!Ö¢|fb¬gvÁyB;”ŒT3¶ÚìÔR\ïE]®í›î.ÆÎi1VôÚQå¢KuÎÒ]Ð)ZB°V4}Aûä¹C‹§æ”œã6“—Ž1Y#BeªíÏÛQ cÒëH‹%‚²åÜF=¨OîPåÖËÙ–­RoàŽü‰,‡Gg±2©Œûàjµ­w¼››>ÔÞêàw?—Ɔ‰OpB ø¡]Ü ñh“Bþ’S(W-â”eX™Bž•ÞÔ9šåi «SùJy&ׯ y¯)U–;¸í•Œ¢Më UoEe…l÷wÍ´¶ã•n!3Iƒñ¤K))r2QLíҢ陡“@·HH»Ô–ØóY»T½¶„í`;zT d^Ø#Øï"½w±;^+Æîd#јMÞ^î¦sÏû’ [+v…ÕïÓP)¥£züYI¾UÝ# iš!ùNr×Ô^r£lkka’ú«Ù4ΆÏÏ!4¤×/'»´_\ ÙÂb¥ú¸veVx0 8Ÿ:ñHÂæãÛèÇrŽÏæ5èÀ¡C.bH­Ô˜­†ö úÄMÌxË`·úMej¦fFézº»xU<9³Ál›^»Ø·"xž€ð¨š–Õ ´ÞlR±¥•ÕRꊷ®âJIî1tGª¨Éœ¢ ±8î ºÀ'»‘w!iÕcYš¬~ ›ZÙxa•»ƒ&¥dÜj÷Ù¿9]ÚžÄòd/—F¨ÎMÈ3ZºÓ³¨_o¯Ç#¤l[ºP*”›BožÇ­t±Šm<¿^,=ù>ƒØÙé~‹lÒ="éü'`J籤)Qꇇ ,öVKÊüI¤ôôŽ ¥‘¸% /@0RÆMÕåùP»bÌGt6É¡4‰g]Sh$²ÓtÔOž›"-l5ˆ”Y,ªžòÏA€Ç+%Ï£ÌÇcؘUµ‰êh•·®Ë¢³t„5ân­ÒµEçÞ,9);x÷èâ­•þð·jN x½Åz®ŽéX“ò^º™®‚ìÄCìVÙqÊÄ9ÛRC´ïô¨»¤E ÅYç6¬Êä9€Âì®ó\‰–o óÐ?]™%Z¦îôžÙ,Å1wMM¹‰«¬(ÉÝ<øm¹>N£HË7µóc«Zm1 ËšSì€H +"Ù’_Ñ_ýl=øv²ÝõøHÚ¸[à›Õ¿XJúG ÛÔ‚œÛ']½XÑøe›c;·ð¢(¹ðë=X²ͰÞo'(œ`ÚsÏÔž$•áLÚiÅ–½m4ïõ6M¼ïç!§ï»ŒªàlïEJ¢^«ÎN9E®‘­²11J"÷øÔšõÑKï0é÷á=±Àù4Ç®.5)±z¨ÙÛÄd¨¨û ,u=·Šµ™¾m—†,¾Ò ê¯(Äù@L`ºl÷wÁðóؽfg9˜uñ"x”Aš,Gu¸‰“Ú×zø”9"æ{ª)YukcÎ×Áª*j¡«ê¥m½ç€+ý®Èët–@½,–è×ù9å;ÕòÊkkÙiú¤@³@ÒœmïΪä'Ö÷zHH7™ŸÒAœ¢PTi<Ú'm•uð¦OÅ)¶!«î¹¬ÂK׉.+¶%/ñ¨ ‚kŒ…B ÌÎIùØÊ¾uxzòL— ‰AãèÓ2pHÓb‰zÞ¸Ç=o£À&Dge²y½‡k¼(±3jâ:½$KÝí5?TÀÎʇ´6¿ˆÕÓ‰÷¶ùOre!^}< SbƒXáYºÇ´§6Îs¿ãŠ tk‹ªšÈÀ^+Û»ª*éæ­®¡_¬÷«™áîÉG`À$%îô 7+F°L_,©Š.j2gÁoÛ¥JÕí}P×¶e¯Ý§íhmÝŒùE ôÊ+1õ,c¨î·ü—ž¯Ô¬—l›Ë&#©P(%Y¢mˆ…·w9yQÕî žc¥ƒåˆÂ6âþX×ø|€vTIS޲sËÆÆÓAé‡Ð/GઓXQ‰’ÅØÊã”ü£ô<’Ò%µ±I$Co`+Ð÷Ýê÷*äì1dÎYVøàèn·ê>YCÇ븷ÔÖŸÂL™ DéMK¿AÓ~~‚.º£:RÊó•€N²EòºÕÝž=Ø}.§HŠ4^€(ëÓÊ,«#dªmÒÖº2” ¹áÂ9ª”¬C ÕÆŽ3²«â[*Í±Ú gR]á BT Žô=”Ð¥~—ø0n;—Ù¨G.•Ÿâîþ§ªúv@ÒâÇcOàÎWÊMV…SÆF¥>Ÿ\Ê/±=&³ËﳞÀËÓÃܳoOq}T—4OUÅÕî`o#ŸÄ{Œ<ÂE\ÍÏÔå-y‰öx€ã`ìñR;Øæ–#^<“8¥fuû:ª¶a/ÁIrÙ4ÇŠêÙyXtÙ¥Üî:Pƒ5é¼c…lGïn®+c¢edôe]dzÇEj½÷<ºÖök¨ ¦‹kà;Ϊ €öíÝnPÀ3".X9‚¡9.‹Šw;Qíæ¡¶®˜ÝÁŒ“ E8n:X²› 'áùTxÏ™b"&o2ÖU<èè`§aò Nꆻ¨êÃu„Ø)ÝÊU).ê'‡áŽKr¸\ë,ñ×F’wPÐPúëí¹œ #ÛYj2Щî§,jûGrðÀµr<ÙÅÌ y¬`C‚£ö¯£<Ô¿TÙYs]je;8í÷(ʺm\âƒæ7)ÇYñ¤;ÁyðhÀ1[l&÷}ø8v“½¤÷K&¿4[›œ|—G<Ðá€ØÃSP“ð#Ï ×‰×¯Ï3‡ë•‚Ѩuôu(ùP¤Z±¢f¹§Í]]×;µ¾Bê'Ùvê„(ûÐ3·¨<0zÁ¼sñ^%»m“I=†3 MmWbË”®@H^åaâeDzœ€óº¶œï0 lŸã¶Ôxê$tÖ=ÉEâLê×D1Ò Ñ÷`ƒ¸I^ÊqÜ÷8­¸/ÏN§¢e¬bŠ²Ç’†   •,¬:o=Xjìã†óQ~¹í²Tyt¬IO:š i‚À^•~õ‚³cƒZe{Rê¾üfݧ³e+øT8@½”©$Õ+¢ÚbA8ìOR_¹«VSö°•ß©IuÑàI’AØöWÓ@bîÔ|êè7žØ9L®+,âÅÒÖàƒ?ÔÃrDY%a·CæÎÔçÐ=Z®R3Þ28ªR’ý8 •¸•Eô@m™Db» ìÌöRþ„ä"›C¦3[·uGÎf9(—»H ¶µŠÎ<Ö¨`Iùh|°ÅK$óÔÀ!úˆ¨·sÝ'Ù9¨jõÖKzfÛpIqŠåÂ>Tæ† +z»®×ÉÔê ~ÜOÁ)èç°FRíR,Bßm`£ÄB/éö‡Äz:—ía¡…2sxÎÚï "=šÔ$gúz÷|K¦c±©ÖÅk÷`,èœRfi}çd,‡g8Â^òm^›Hñîhâð ´¯vSôËq*Ç3åÒÛ˜ ¨ÞƒKšsË饿ãRe÷UÇê¦ ¥èÎö“n’‚5]É‘m®®§&A¸8ÄÃJDwÙÕX6‘ Ø(×Ò)=ÐþrÔ¼<²¶†¶Êµ¬_ÏNžzDçhHõ¶ìÞ;‹n âÿ=ŠA§! ˜Ú⻲ì”ÐVtŒ¨l ç;@#ÐÌF-‰›÷¢®‹CY|j%‚“:=uE‰¹ö·‡õìÄbnNcQJ»i[ב¾€ Î&Xó‘p¶Õ£NŸ³·ù`{{¸s‘*º$¤·_M”©«®CWa/sݱñ Ç¸“Mçh¹Þ?­ŸzÏ4ó¦Ê^åˆ9ÎKö9¥ Û®H[Yj GaŸuª½,4¢Gœ'+„´¼ÔašjVÝGžcH¹œä¿TÓ†+ añ¨^f¾>jy ãUž£z$êqYÛÑžSLŬß(k$¨ œ®¨Z’Ã÷r›Ç$Š'Ç8ÁÇnu«°ázî¤ÐQ?tä¤W Ÿ %{é *®R/H»‘fªdz”$÷*ÂÖnÁÇ5†~‚rÄ\BÙoÌbóÿ冹á7Ì ÿˆanø×k˜þ›1Ì ¿f˜þ‹ së¿HÃÜð6ÌÍæ½.ï톹áÿÊ07üÆ0÷ÃÜ“Ûtøâ—_òDMš­~õ—Ÿ¹íþº îß³ºýusÛÂÎöÿ?,kÿkŠgs¦q?*]'0KOµ’(pì_߯f”i)JѲ¦ô@êü@µÎg Ù|Þ牫ÊWo¼M’Íí’Æ¨ÝkRvW_‰»;™Vž¦%¬m®—Êãã…þåih»•BðéÜkžƒP·©ÈTšþvz)èÙO{'v~C÷†sOi¾åq¾—÷DÚ¯g™ñ¹(3å÷´}–Æ{Ýc¨¡0å£oåï=}Ñ}¦: d]vT„b:õ©'ŠjeïVUNgʱUª¢N–k'Ø5f ý”Êz]ª©Q£©µ2¥—*?zh§TRO”Ý÷ë´%Q‚Ó‘ãô•ØKÌÔR<‰Ø;%h û³EOùPE«8Þc>×;”¨ ͈æœ|9oUüÃV*| ös Ï[Ù²ëv°'¸UÂRÄâÜtŒ¾©ä¼­šbW’s°¿KTÏCY`iNƒ'¾Èž åm±Ñïg[xòöÕ[ßZæúéJ3ï2ÚQW•c!›Ï¡þôªNß—Å—Ô› ƒ¢R›Ç©ðazt/Žú ‡Y¹½ô¤R¿W/ñÈõØ`§ZÏŽ-ññP†š3…BøòdÓáÙ[»¸c°ºkßvrªž¿Q§ÍÝž t.U¤.;ÚÔàyÈ$¹âù–pËa™!ò²lÔ¬3jy±ëôöO°ÏïÈ€ù,–°Êlò«ª<5Ú®£äÒÛV·¹^«<—ʶ¤„Û¾Iã%/v¯;óêÇ>îË2KCZHT­{ }kÑJÿ=T5jÏîr·{äÝ—Q^GX寈2åHì9‹% Ç}²<4f –)Ï_Ù¤Ëa3™î{dYä2{uâ#â>Gô˜¸¤YÛíabPôgÖÕô¬Õ `Òò4׫ÄͼÚ,ä‚gË^‡Ç=ÝΙýÇ®ÛT!0Æô*ž¡ôh&šT%rŸ÷,ë¼›D¼Î]lØ ;ßÁD§Ï4IäÙåÊ3aáò˦ˆíìæ˜E¹·¢ynÎ#Œz§ŽìFe—«¦™ÿ&ÒÚ4ÁI½ú–N™Š‹9ÄX:WZ:VóJ¸µj2Ù!d{#)qœÌtR“&Ñ7ið܃Éé²crùÔùŽ6×zSA°±Òî±xFËÍf§Qz?¶ß©!DL-ïñ»Wi7^ÛëÀ@³O°f{]²ÞËuÎ%3ÖÜùÊ+kžC²å5˜{î} ­ç“‹.ÍÚ/¨ÝöĦ:‘#üîò¢vîTÐÄqÝ‘UÈ\$Wåëä²±Á9žʯ¸¶„òiSœwqVªÀ%mº€58½€’šƒƒöÍQ‚ÇØI%œˆ) |9·äx»®¢×84Þœì»8²ÏeœU÷u»fúÐ UÃ-L“y¸±\5¤Ð÷ôh¼þÿôLù)Ʊk¬úþ­L6Müî]L7å&¸û+D[)™{M}eÈô×âõ«oS´«s@$)Ž€<‡²EÙƒÃÎ˹þXRè ~óh>z|€ñ‚GÝžÀÃÓpk—†Ö•ºV‘PÃÆç}¨ßåÖ¼špÉþÈ8ÁLÜg[zW¢î¹Ýe<÷øÈ«O éƒCÖ½ææÏ_ª ßUEŸÉ6'ß»®Bñ³zHJF.ì¸$„¤fáôàHæ©'«$ì‡?¾ìØœ1¾w;»úŒ¬L’,;V±BBÌÑçët3—ìÕ÷¬x°ñºAw¬®Ä—¦îOR¬WÁ{éÚ»²%Ï#9}IøL]ÙÁçѰV£íèúv<æÙ<±|“i~Às°g=´$‘»ÉÙÉ“»«ÝêD×åP…éÇÙ»¹Õ ËS‚«¹`ë4¨ŒÓ–dÑj3™•bªK·®¨á¯KkT·KY|b(„gîb»¶p˜ŸSŸÒꌜm«u÷*€ŸK£&SwÉiñ*áròºQ?¼Ó‰$C“Í9ª¯G‘‡Þž5‹â4º«Ž“â2ë"ïØ “ù/ûŠwzÈ!K‘×f4R‰õÑt"ºÉêd\EìÇê#W%[ãn}óRªêt娥E§aõ¬ÍvºÖ-õL|®®ß,ø/ŽÍÍ9•˜m>uOµûú‘ÝŒ<¡‹ýûhÎÜbQ¸—×x©éÞN·áüÖõÈ„xÞT~—æ{q4µi¤’pde½¼¡ðµêœ§À->JÜÅÑjUD{ÏdUÑE…ŠvºWÔ¥o9¬ÁÏ Ð¼®Ñà{U¨%Ê2Ô°B'zUOœ()Ç­Ý}‹s6ER/1.`£Šá’*í5l†wS"Ë„jÏ5JL=×±,/L¸OÀX~õÎ[FEýÒ\çVIwwÀWfU«Íg¹y/G“…Ü×¶­ÌlC"¡SÏGñbykjí«\Qˆ ¾§G%´GË6 ãëup;Ê¥ö@ÔõO!XGe•ÐfjžÉKŠ&ólÄ´‹ËM< A¨¥Ý© @äp^Þòc^¿mûsëÅÅý0ø9u±+#sJž{s!¸+ƒÖ.5žµ˜>·È‘\÷¥Î`ýö—²ž×S9l‚1Ë&ÎeL²M|çÊÿä¹7þŒ”sD‡pVÖÎ}Db•.ú3j~šÙM:ˆÅ Ôþb‰ %Ô½QF¡ö|Ì=ïI¤TÕ%rKþ2õ5EM{Ȉìï¬îƒ%^©ZúckºK¸ g¢” ¶ ^ÏY%ÜÏW­œÆ:t4‹’Ha2´^z”Þi%p¡Θó}„´¨Ñ—þ€ø«^îIÀà+Ž­Q²ãp°<¬ùpj\T@í’çN•\/[€7ð­ëS¼´‚$ßÿ*ªŽZuc]žš‘ò ¼@IJÚ–™EINPæ¸UØJÐFÖîúÒDPÍÌÂ÷*áäÞ“¿e´ŸJLu1Ù0S‰R†D@Í ¶±Àrx‹Ãyb~²(UÂá@Ä«ðŠ„rà@žü¨’”2Wãg}ã”&È–9Jhµ.J;e_ì®ÈéI6‘(wm ,ê‘ólS;ð¯°çÒß$ÓlfÂ#¥¥ï%-†B gq4‘(ŒeÇÊ2ØC©†.r(§Ä»Svf-€8ãŸu’ ¤šòEG‹©Šå;‰`•³øÔ­»jÒs2Ôc>ÃF*òèC˜Tês=J8W2³°”£v2œ¢ô¨=Ä›­xK(?¨´YïKÖ ³Ü•Ý£TS?ýBÂQÉÖÑÙÜÌ;Ó!Ä%;V•ӗט€v¬8§bÎpä—Ò'TƒÔ[ JYè];Å ·Sæêóè[¥ú>€^¬uy>/舮ƒÏžU×ÿXm)‡>¯©I‡”Ý5Us|›ænG‰s;Õr!p0ñ—|é©÷²³ìT§ë‘G+A†¼JMOM[óô$±¨ãL©PjT†qŽVØ>ŒúˆÈnÑJ€¢ÒXWsà<0÷yD@½úõ¡±y$P¹·xá·c‚F»g¬Ú§,KtM˜O‹E‚ç¡mwIªi€<ËÚÌC2ms~+Æ}z”•TÝ0gЩÕ\Ǿ>…¿å`ÔÀxÔ¤ö$Å6¹pÂSµHÞîåè+Û~ìê<¦nʳ³Y•Ôañkmç0ÑÒ¾U×ÁÉæ!oEë"JIá2w–5Óä­8CÍG“ç½$ R±ú6IÁ˜ª(Éqü‚Æíó´g’؆ˆD9yª„ ¡·^qs ê‘ìU£žZÞåå±¹¶žø„æ\¨úÀé4D¨ ž%JÚ§t¿UÌp8;ÝzÃë~IJ ÊvD%‡ïÇñ‘3HPlÀ'-µ›ªoT@ʦø$TLˆ—ªâA‚³ÎtËI¢-…³+@:)¯>~©TÏud8I[¢Öf£k.Öd“7Õö¢ºãèM¹ÒûUÔåÑ¢‡ÜüÃê1 8?èB 2Š—“üJÓhSBÙüÏáh­™_ 4ÖA:[ÞjÒ”o½QßmõöÛ‡vÒô‰<õJZíV§ Ëì#õxˆÇGœýB˜z”Å¢g˜öÔ]] ÊÖ0à›¸ò$ýgÜÿ÷½yÆJÃR|òxÆMÙpž]Ò=ƒ?•…îÚÄ‚²ö¤ŒP³þßGÛþ 8“ÄÖZAvPÜ×E±ã|®ó¿„ŒWõ¥ÎZ&tñ§½¹™ØMÎ_÷¡Ù­}>* ¶é‘• `-òNÏD©bóªo³1ŠžÔ¥0ùØ.kŒœTØóõ’Ú@Ƥ/«£AžzáÉ'‹l&IœÔ!M¿ÎH Àvÿz/ÊÍëöLZ–bÏ×KÁÈ­©Ø{x´£&ó¼o;Uúé°úêãüó{)èpKÌÒPT;Z²®@\쮬h¸8S œ£D—º£ãlWcT_;²‘£ëç’®©#oþŒ©êpäžô¾Êh‚ZÞ±;@îå'¨ŽödÕõáûóæKñQÉŽ¸_›ØSµ.ªœä‰’ðB©ÂßWW ÕÜ}XYZ¤[{.³”$E=çm\&µ–¬ºmlIZù>,(…rõ!*' Ð¨¼ ®ô“á; º,(‡Ša¦j0uNq€ò*kd?Z=)£ölº®j¼‹¡«„&#Å>e¹UCô¦]0!’õ>ˆtõ™d̶ù9ªÇëÍÂÙRÌ}š×@_»…A%1“G§|—ƒÀ²ú&PR)d¥GÈ·äU¼ÆðQ*Û¡‚ä+¼K|'l¿»RµøöðA ‰‡K9ÛÕVó£q(ЗîU î*ÉsyBC¦:ðHîwgï’ÞJº¯2xßlòD»ðo»2Õ§Ö<é ¸¨” Ò~áyªÂæÏšn(ÝT¢dá×6Mõôð‘Psøð‰ÊÛcæ*‚ûœŽÜJÚ¹$V²ÃHM£–7*Um%ZæA~Ñ»¢vj‚ª˜#È_ ËA›úoÎ۵ƸHdÌôãÓ½/´#±B”£.Va X—=ß”oåcl jŽ$ßHø«6AÁ^uÄr¥Ç."­·™=*jº+-¶eäÖ’ž*FzÖnn‰Ü$—€¥ØÉž=ˆG—CFº³n‚ÆÐbRNj¦Ë“§HÑ{m±”òºFÈÈמô`ÛS  ò½}ÿÈ+DܡÛ#Rj½¨«aE·a¶–FDdªík§C\ú*e ؤj¢Ëi¡^Õ׋·@T9>z}ù‹€MÅëx ¬çÚþ¿ìýmÏ.Iv‰}Ï_qüH¬Œ—ŒÈ ™ñk Žä53†íÅîÓì2««šUÕ"9„þ»¯+ž&«š#z²`[’3bsžç¾ó%bïµc¯½ÖáxM|u›pž¼°,ºÙ…ÿß‘e0<õL!ì…ü¾l> _Ô…$°=?´y¥°°ôÇgX”@µa/èTIs)¶å¤”jàyöϹËòÁ^PTRܨ] ¼J¹"ä œI‚?½Xµ’Úô?"éè2†ºu'HUCä-¸¸øx6(/QäBuDi¡kj±5¡¦:†TúÛpêS µå!GX^"A6Ü‘H#zokY»@ÓÎÛvÏý'&½om3x_NìzôIºÈÁ€„7Ö>×Ô÷q58}j¨Ñ˜NÀÔèy¬*–á.e.½ãfÚn>N‡½KÅÆX9¨ô1½º2ÈÊ\7Ð=î|¡Sµ¥ð~rÌFÌ¥¬Y¾9b§øN3¾{>]ý¯¬ QÞr7åì„ÂM•qHCHŠÚÜ„ëâØ±d »k65‚^1l‡¦¶Œ¡r¤I>¨îÞŠæî*ô±­Èê¡j=Oß(//>›ðÙ¶¹¨ÌÆÆ¹žóxw”VÒ% ~ÖjÃãŒZ‡‡ßö—šÃ„vtSŒBeÔ×? Žª'JåPx,éSÙlàKå]jY¦W©×ã#¹¯YH¶™Jå`·©™>‚½T‹·z£,Åó%µÕÐ%•»)¼QåáÖílU ·K`ÒöÎisî$²«&8¾}r­}êJ\"†ñ®µ{ŽªoAކVíT·úè„/â)@^àæAE±Ùü°Ó|bc,F3{7ò„²ÒU=ø+]}ÊÈSûhý†=´gkÏEn#Do{Ÿªh¶Ó@Á£Tª-΢¤úÑõ{4†ÏýQìSíêà¨YS}Û¤þS×)jèui\¥3XžòY—kgd‰3{î™XÄÀ¦zƒéyÕ~™‹Ž_[c^ò—œÓÿ¤†=tÉÐÖ3+ÕõÜys/[Ì7ö:Ñsr*K¾K™Ž*»jè:dÿuàGžÛÀËùxÔð¾·îÞJ–±CÔ ½E™iÍU_.y()Báy© Ê5d{_‹“[Ù5§â•¶:¼8’£mc"ôCå-XåPZ””1´!òÜ:¥4Ä©ŸÌÅ©D;AËÊZM)ñ¤ÚÌë@eÔLÚ†¹Zþ¸T½<-Á“–ÀÙÈ@$£·Vòë›Môú¿ð±iªé]š>ê—xin7žwö,Ðätú>]§* Iý[€ì÷Žì_2kùÿHëRÊ¿¹tmJ÷ÐwݨQ{ß­)©aãÃÕÜ·Ù¶ä¸ÉëÓ=-ÌvÈ^׸{s5(˜Ç¹Q0ALDÑ%kÚ³ åÊ%GP“7 ”Z}ÀxcÉñMò%oš )íÚœÄ$k7O-ñˆ?–Þ’²yš€¢¬!%ØâÙMcª÷ªý®VšÏTw@ßÖh}TpA€¿U~Nµ/•%½u-qúÖs§öy•úóP6G¾p{Z)ÖC¬GUÌ^bè\í‚ÕÓÔL()*(̨jµÉ0.E Yá¤0ý!/OqØK¦ÄT?\&¡‹EÿžC¾Š_°Þ¶«4Ê! *AîR ž*ÉÏ[2öÑã=M_¶ìø¤fÒèµçîw˜‚i*Å7ù‰oYN*“ØUfrVÝ^í£Ø·FÞ••$¥ý’<®1ô°# Ú2yK᳎µ@quƒ‡^P·÷Á»^v’È$€ÉS€~jÔì^€oá&UK5ãÅh͔̕!òòÅäd{Òg´£êaÉXO¬`•ë©£Á{ú¯â@O†Ýºî}Òl£v7–Fî€ÔLoóÔš/·Cë9’¢Qù] «¼¼LÀdOìCmëy¼¬,ŠA’#IïVñIº|¤“éÖ§}Ú­Îæ°U*Ñԭ7vªñ·ا…Èq{· $ ùç¯~Ôп˜À^/Ø(¶)zý¨(½½Â¦–èÃ÷»ßJ•OŠœG»Ã+¾;áå‚,WÝXÍÑiî—œxðº£IÊ,…ÛAûÕÕ‰k况mAq¶ƒò ¡±”Ï,ïˆmW áUlµtP{ÒP$½œD™””Ž*ÂoþŸ, ¹‘¢C–arú_¢cP=(¾xüYMBJ€R­p„tu&¨Dˆû‡˜DânÚFåv¥»ãúÀ=¥¢uªÚQ·=ö¯=Žˆ€p#áàW9@.yÓd¤VÆÓs'YU`»ûáܤMÜ^R^ê¢çò±¹†Mã“¥xÒ™·¾3ñ2Ìö‰S”œÑ\+Ž]²Ôc÷–Ý"Rd…UyÒfóãŽõÞ`ÁP|‘Ήd§Êº–º78Aró^¢½¤¦ꪄþcí!³¦Z–="åÕ …2‹C‘õ(T&á;ÿ`UnÃ'pMç\ì Íáb“wî‹ Š¡*’¬±²+Aáóu} …“¤¨Þ6»QGËC».-ïù7Vž\Z£-¯®èÆSy¡ÉSGq<óvL‡ð>$òÚ¹ýTªÞS¯a»*€Œ¥ »´ÙYA“Ôc4åBïLIцšÎžÒQh®œ}ðÛÜ>q#øU¯¢Âæºï®qPée/ÈÎÍì#8@Ç+­#7 7-?åÔÒ¼T€TæyäÎÊMÜëhzR“\g៶³¦‹O£'j‹Ùø_çôÆq[±œÙ©’=mTIT3çu$g]Ø[g%н”œ‘ˆ®¯Ñé±Ê§z“´o¡ëÕvO6ý]=–÷µ@ÕO!ë”äp¦ç"©”bâÕ¥{h?þFûmz¶“TÓ—[ˆ*Çb««É†¸|n [•ÓsIŠW„ó r­=´½¬Ý¥LY’¸6mq²Ù™Œ'Ášæ~xàÓ¶k_±Uâ±DN^BZŠqùС™xfUY0â¥(H2ÐA¹³m‘$ÑT'‡Dù$yCf{çA"°‘žÀ¦‰JTë’ö¹êç‘2véëY䆢D„û¹);^kÏÚNøÃfC*Þ3‘;Ê|ü˜Øõ4ïŸüé´˜¿Ÿ÷xDÚDIk[ÙN=ɵe! · {$À§X„$Yu¬1§9Á ·GaS-|ÇeRs”!MH3¥â Eí'%è‡~ᙚ÷¢´ÝïÂ6SPvÝÒØÌ’s ºú{îþÓ£ÃúI—XPšÓk¿º$; •ÏòÒ°uItåýrÕÁE±xW–ÅD%ÇúuÊõ#<6ù”ZuÝQ—ÖGK^ ï°3CôZ¯¡V¯‡K9L“Ó ¦!QýuàìÝv$Ÿ{ÛVÖ¦¹oMûÃ9D5‹I@ pµ•¸tÆ²Ö 9ÜFž ­ÚU±¹Ø$ƒ‚Ñ™RøHü§ ´Ù‘~ækÝØÞ]t %Ò{/‰×B¥M&µPƒ•@ç‘ Æ–ôè×®ª¶åÃÃF¦z¨61¹vVe;IĬ<âv‘:Ǩn¡'ÛšêIv PÊ«úï\ŸªªZKÔ=Ô²kƒ‡³ÖœíqéF-~ˆfvP¹ŒvjôÃ7Í­öø™Õân êZ/\Úì…¢åÝÇŽœ¼qÊM—ß±= /òmÜhûX—/!“\؃êyåÕ"B~÷Õ_" â‘Žkà ¢¯ÂÔ€× u=”ÿ}ÏÜPÛgõ*ªzžçdÛYí=íç‡R²$mWõb­ØÁ„À< Ñ´Œðl§(¿yR À SrÓ)Æí!Å«¹)ƒ_Õú_’·®0`ºjv8x8ÍÇnã]OÂÅ”cW”KÖL•“›Ei1ÿÇAõá 8š­Ë™šKâûtl¯$ÇeËÿí.ߎÀ+Rö9»†~<Ôƒº!Xű\uêcEVÀ¹±ò°ùvÖ®«œzËhuPW¦§¸5²ùtÑU+mþ€wÁ<š–Á¤tõãµ1|ÀÕéܸLS@Åû÷ÖIkÖ¸å¼Ó­=Ge_èS%]”ê‚U 4ÖÜ”ìáèyЂ1‘CœsM÷þÉó˜ª52 Œes!ÀSTÑAI÷JœSá6øöŸ½+਄brq@ a¨ú#É1º³o·ßGKð—nó%Œ¡vgÐ>Ã*ñÐ ³È"?õªDó’Ä­«‡Ç{ê*óh/¯.»ÖRjžªÃÖÛi[Ñý®}mà‘I_óEg|Œ5»[œÖiYÛÏS9ŽçHö>Y Ü}¢Ù­ç¢Ñ™ïT!Ènûš—b¬\’H‚Z‰Wõ¤VYr÷EASÏÞtpÈSFmµ¦v+?3;ôUÓbÄÄïdˆþ“SLEB­ØÔˆ—6¬[Ѩ)*hI¹o‹dŠ•{¾‚ÖY.c@KCN8JŽ£$÷HX×Q§—§ì»¬„èͺIÃmÏÔ ¬CôíÜ›)ç ßvÌÓÊSڸə¨By\¾”ZüܳËÈP(LB°ŽKžæªóÊG¥6'K¶uª$>«zÅÖCX%EŠÛîU$NeØóÝ×Ù£´ÙJÝèùí|í͇4Ú;m}Q—–Ù:jÉ6…/«A;gIqfˆ×ßÂA3TVòˆÇÕŠ¶ÒžÀ×Q«Íêg¹W€pÆ[ÞÝi †°.5/Zèî½v\^õ§öɼÂ`gmJŸWÎâN6A<áŽÖ6w><SE¥If¢¸¡¼â:òI4JjL^´^ÕçæÅÛ/)ÚQ™¦v&·¡T5|ycÎÞ;®ç %¾Ö1'1–Hk·J%Ú=¼IáÔm9ª¥kV-!µÁ-Ñhöõ‚ÒYéÎ;T½Ý~%³ÄÄX }pSgnã£(,ª9P|LjNó)(gy–¯Qä?â)¹_˃­áL²²^MA;µ(¼‹gU3”äaPçW»Š‚Ç7°öPb"$íQóî9’ %œòS Ùñ|ˆ6«úοäÝÝžv>vP+³˜ˆ$Z«ŒµèÐ=KäU%k‰Eô[òŸeÁÐÔÙô­Mn¸PËgmʆGêÌ‹AN“fQ¥SQéÍ!'‹\QÅŽI£, _²–9ܵ&nÙÑ.tâý°OµÄxƒ,qž Êᄺ[}ò¸á¯zF¤Mî×n¹bó¯íޱöà«nËó ³*RCþvÜÖ„Â}ÌŠä ¯ÓQöì’X­RáVZÓsxø7/Æ)¾¶ìÄ'ƒ‡ Eô(Ùƒë>/)IÏ£Â*Û‚\͆züt=ïSSî³–í£¥ïüÍýâKw$…K Ýé1n×ÓMÀ-\R¹»$UžêØ*üš±’î4dÖ´wµX`åË“âò‚?5‘ä‘Á=³.OéçÇ3Y‡BÖ‰uò•üWú¢†Q¯:XˆgˆÇjè³ãŒE¹“ÃET<÷º…?ºÖÝ·gÆQñò¿zy"‚îg‡þÕI2öû—û›<¡'k¿loíõçê9¼à€@0ÚêkNeC@!’'lúZVÃÍsMiŽjw9¹–l²”©¸:Oìh‘x’2Aë—ÁË6Rô(ºT4•˜ m­ëfÓòSÕŠ{ˆ¹ÔØŽÖêé9mêå©;mS5z’z^QG m v«ÂşˇgXôL[wG ÔFàʶ1Ïw©ëÕ¸BÁéôQêÎH–³³ÑŠgEKÄk«$;“ËOuÏPΠ㒦õ+»mŽ?ݪ›µ3¦eü×aV‡ÉÌã{÷´çØJ2é`¹Ù¨4{=ªú® ‘‡ßÉÜØÔ!§ò‹Gª«²B;+S¯r ½OHkZgÜ7¹™¤ÕòÕ^'–ão—‚€9ç¢iuÎ’ª tÚv§9”l÷X’otYÖˆ™dÒ>¹;Á¦ÀEg[Û8­ÈM'‘ks芜’ ÿé}1tkÓFÖAܵæMÙ3ÒžÌPï#ã œ|Xð=ŽîêíVmé;›cEÁ…Ë’hIÎ|à žÜñN¨ñ„›f7ý½Õ»dd`ƒ>šÎ°Ü|~‹ Ïèäw¾ŽvS&«ì_ŸL,{¢$Þ"˜©*Y·J¥éćåÛÝo™¶É¶ÏZ/䃤B„ܪy‡?¦SÁ÷M°”í©¼WÚvØ]U¦xÚæ/sû¬§#‚%ò”OÞ´:Ûdñz¨¨N^.6í&[âHnwR¾BƒÓ(·ßjÉ^ôÃäZ‹­X Ž,ë] £‰§®¡õÙ’mKŸò¢x¢óЏ ÖäÿQ¤Ò9…2ÄŒìFk³(9Èb:O%yÁdV¨4V¹ÝT*#Í#©j+¡V‚IÞ›ëha³ÔݱäÓ›b]×Ç.ª*Pj„HàP×Äâ*E"7·öÐ4ûäÐ žªN¤üÞPzFy@¤tA”ÒQGòé‘YØŒtö£œ‡*Õ?¨HD/øœðCîum/+>•‡£yª@í¨ma{J±e‹#z§R…¥_&Yð³-¦v»–ñ&^>¦Z ަ<‰~å—CêÇò±¨ãuÇ-¬)Tz4*ë/µ*û­=¨‚$`óáÊ ¡7{_ãy(Ùa zh£xKð²/0»G6çÚôMò( 4׸½ÙòÚâ¶¡%9eQÙRè¸[ž²±©w§Î_6Ž@’Ï£)ð™&X³ÌyP+Nµu\g=ÜèGÄGeù0ÚÕuVÖ”ƒÃ)6ä‘©ë3\çѵ¨nuoAí«N:£Ž|¤‘¿Uç‘h¨;”³žj XùÞƒ0ó¼í +r«PU jGRâ$²ês:Ëæ\"k‘3ž`«yb{­;ý{åìÄBa÷Ï©ª·¨¬e–>‰“†}¶¦¾×A: N?»õ£‚{‚JÆXÝ‚€^gz÷¼wZœD$~_3âJ’Þ=Ná­ 6F.G¶¾¸)="Kpx@lUg×b˜²”ØdS: Ëóò„ÍùžV£èzÌ¢:“Ñî@€¹°4· td“HœËÝÁ[¿Æ¡S xòâÝ mûi¿õ'ik)ÒׇZ„%ÂVÙZÎôôÚI×OGÖJ¨ï#[¥æìóf qíÒ§uÉʧj'Iê mçYò·„)¥ÿš>©¼‡ýì9Ñ^mÕ—4TŽ’¬®ï§zÇ–‚”DZà‚Pyë—‘H  \yõþÙçìíG7ø5P5Ë‚­ûŸ¯:‚޹Á€Í ³cd…ûá"x:“ N–»ç+rt±"ï¾¶ +ѪpìŃuà€0Nd·±!*„ס¬ð5«kå3ô­%Ǹëá`”꘥ýÔ<÷°øYRÐüöe­Ø•OJRXRd@‘æ•F”J>œïyY7ÍVwôIÕ?'è<íÉÀ.^ ÀpËRëÉÜ;#P¹Ö€â‡ª;ûṮi’eq5¤æNØɧ Ô_}·Ijã{¤6gTn±¡yc5†·˜XY.bm¾\¹N ùe¥Í]ÞÓâ›RH‘’OÄN6¾U"y<ýsÀü wò¹9TMV"»–}E:lgçˆöi"¹6ɯ°`×ɫ̨ßÛ’é­æÍÁ^Ï÷•/H&Ví#9PÛÏMÍ£–S!ÍnÕÕSQMéʉÞFÂÎ"†uÄ:^Ç ù0åZÎ;;ew%5U(à=BÙl²ÉOr€œÉï·©”:ã xSåduۀ̷؂X•û݉èZÇ;’FÅ÷Êh:Ól3UŸn x9nKÒ'åÎÞ¢Xœ.i¾ýÑVÛ@{öü0?ýŠ¢ekÝLƒ¢±óy8;~]*jOýÔíš6Y®,b=¯¦Ššz×y%Ê–¨³íº†³?¥l8óáeZX+ÆËáž­$+ëMàQ ì:6¯ÊþóìŃþ\‘ —DÅK½`~‚¬þjF¸P‹2xªÌÿ³J@¶RoNºçÔ–NàÜå8eÆx-ªù15Ÿ¥]Ý'ïKQ'•œ2uã³n‹¢pv0Õcî“Z¢¤œÜò°P†Eê˜óé–EܪÐxö­H @Ò±À—Ԩ賂H–í9nOÍÉ#7Å“èÁîáê¤ͪ˃=TÙº‹[È«lg­ù¨ÍÀ…ÿ•”¸…©ùh¯“{”ÉàÞ ¤¹ªÌ–(gÀ?³âÔœªÑôÂÊês'ÚA>‡6ñM¹§Ã )„`È’`µÄ¹o¥$Ñ^ƒ3 ƨ٩ ý‡†*ãÑå.ån³—ªþ»Îž<øºuu än…zS}κ×qC©â®j?NþHá×Íy«®¨äbËAcUû(á”Tµ˜.Y¤#=L&TKYmت´“îˆòàa¼²z‡âi|ܺ®¾ª×eª¶©ÿ¼‡¹¶L=xä£ÙAnüGpœ V¶®]oy<<î¬%ãh'Õ‘qÛ!dÝ¿Y*žâšŸß~”¤7UúåaÐxX^6ùeGu›ÅŸ³;¦¥=ÁM¼,Yƒ;µÅXR2 älRWóÃåHÀI”TZ<47~ñ´ÀbJÄm‚‡­Ç ïìN§+ö’DÃ7Upblê`eñúdÅTm—õ’U4¸Wj½´š¿K ºšÔÏKæzñ˜Ï-¸U…5¼ÕÇâ̦7ï« ;[¯}=þ3)ï튯C;{#¬Íjuú‚Nê?Û4AÖµ_IØÖùµëJ©ñBÖ¯»=±ÔìÔþ)Æ¢HŒ©9Þp8A{Ûí(šlö`•zª‚LEÄO'ÆMÑÉCZ·¶ÌÚMNUhjR?œ,G’& ÛyÍýÙµŒóܬš½Ü×Á›#ÂŒ ŠsÒ÷2-œ™nUuøc7xÍûJ%ãÉåÇÚÛ+'\Eª™bÛ”Ýj-©Ž²%(lQ“NF1»:9I¦Ÿjª:ñ½4&ì<ٸܞ³íf±,€Û9A“uU&èõE_e³y¦FLä „ Íégb÷£ƒ¶t'6æÅ* ’2çdu•†Ðbjý@qïí±ÕlŸKí&‡$=NÍÛÇU„ωÀÖ–Mí~ï¹tlÐ+5=鸤·2X¦ÎU;² ®¦XüªpIpÁ™{jr#n±÷ËG¼×¡:*[»R­4£6“÷îpo¨—ëî’ëL¹Ç`]ƒ<ŠÍ|§ÀÞÞ½âõK?mri~à`Ãñ2l#ƒgÔikÔo§‡`ù,šûPæGà i8‰×ÎRÓ¯\~©ÖoV¬X€@S1WJ†Æ:UQé®áÈŠ\Ý֩䯍ÂÜ0î9VåŒ÷©WðIl ÎY³–^½ Τ>û:¾E(Șm*jSe)ü}ÆK\V†WØÁ‡v··ÜH£{(Òö͊ɲàΰ•¹š©Ž¢!õyV©5LjñÌGšÊsnSa2 ·ì~IK! ">µ(Èï•Êoç+oÍC€\Vº·¤KWj56_îØFÃ>ð½ƒCOSëy®G zêÍá4ÃKš'Æ+HGí\»f“™©­5(î_G*‰ê¬I­šR’DS& 8‘À9=.¡ð*TÕqdGÝ¢áwÙD­,øúU¹u dðÔ5¡ˆ¤®°Y»g¾)aƒ6M&ûeŠ¥/g÷ô…¼î†m/¥^ø0·¶„ßËø´[!¤ô1¹w*-õ%Ô¾l÷šA¶è» VšŒÏ·nU¼mó²ý£@7ôY™úòvYÒ ‹y®IéBåÈ®z­ÅÐÏ©‘½þ”éºbåui@æ°Ã0‹»q†+P,ŃOzäÛJÕ7/½*0Ìf’.œõ1F€–À—*\&ÑwCmO:‡íÔmF¯˜r|(ž‰:D$%/eVßCm"Íy õrºwIf ñ‡@©ƒ awxf1Ùb•MZÉ7¹¼áá­îíqO‡Pu)‡¨žIƒnò½UF·9°^ |]Ï­Ö†Xq”Æó †òs*¼y©*ùð…¶â2QŽCøà¡ìyß °è©aº¨@Y/•>¶øUÜ2½AÏÊF©SÍt;ºêmðÑíð(”Ðé`jÞÕµÐJ4©ñ‹_ÙÎÏ^ 39žýÚFMÊ1]‡•¼Ó O¯=04Ê¥\§xÕ¾ín’S÷±Ÿ•·O›Ã²~wãæÐ–›EF˜v¾ÏsaE³ prõD½I½¹gºíÍ²àž²•©®ÞÖ}áOE‚'/{]-éËÀ‚×ói¯RÑ“ºžRë½·Õ•'(r”>2“œ/‡f{V<ÔЩC*P ÉÈqx³~ <ÃSußþ„ìôJ÷¡â„æY•W¹èž±¦&Á/=Ž,‡‰‹m °2)›¿s2Ëke‹O[;Z ß|&ßâqv]í´`«Q|ð ìyµšSÆD–UÔ¹P¤:²¦‡3Þjüp‡™ü›ì°ÛãA«¦J"}å$ñ@Å™ù8dç¼óKêˆS=K’¶­‡Žƒž–é×Axf“¶EfØ—Rã^vû‚]³k¶3>=ÃU×ÁžŒ”¤s[d8iD^°I¤apü³1ê?À¡9ìÏþQoØŸýç­aöOÖögÿ{1†ýÙO}aö_f ÛÒ{¶°?ûÏ¸Âæów®°®®Ê®°?û_1…ýÙOØ?ùü‹¯~ûëÿö]aã§/þôWŸøò'þ¢Ÿ¾øåO,R5Lý‰ ª°?1AÍþðÿœøó_þöÛ>ÿâϾþxñÿ/íwÿòûͪüâ7Džo¾þüËŸümøÝßþƒæZ¾üÞøþ/~üK®è7_ÿöG7ÕÌ5r~ýã-åëÓ¿ú›ßüê'¶´¹ð[|з?ZÅæúé‹ï¿þòû `óýé‹ÿùów?Ú¸þÿÆB—÷úÅçß{—úÍW?½Û{þúÛŸüRóc~ýÕïÿmÑ ÷/ûå×ÿˆ?oá«ÞÿÄ×ôÿÄwŒÿÄçÏÌ×—›þ?ÿc.¿|ÿùñO|ßü#À•oø·?úó ÿîÇ?ñ ?ûG¼‚oèŸþø'îï?üø'¾ýøñO|ûÿøãŸø¾ÿë®Â<©?ûîËŸÿÅç~oi¶øã ÿýøÿ ‹bîïÿù“?rMñ_ÉÀ˜«úÍOþÈUýåÿW칪¿þg·ãv;q¼z!5þI¥*EN«´R#o®¼< ô1ò)‰­•B,*å¿T™}.ªÖî̇NoUÎ1Ï¥%è9äɼÛâ+½ž™d§ès~j~×½–Æí¤§ðsD­àòËtDd ¾§V)OhpžÛÕ¹Ô»)aX¯Suý©j>n;ëQ189=j5šâÛ)Äû½ª‹N—Þ® ™òG’}ZšÊRz¶ú E–¯"û¨ÖSõ.G%òK”ÕT¯´Øûs÷-Öîð«-RŽóŠª>º2É—SÉ­O6€‹ÚãzmGºHÒnžmUä«w_ªº×:ß­Y×Õ³B:Õ»8yp©ÊÉT9Q%éÕåJ,zo+/6Ø<µÉãµ%²šçbõäð‡/§sžíåÿT®™õé!«û`º–ûÒ&W‡3•3Ï“(ù„^mm«“­‚yŒׯ£.'г³Ïa_˜5yHqc%œói÷äÓcíSr ×4ïpPzŽ=~Ä{RT{ÕÿŸ‡Å‡´7[óíçÝ=–㑦×1,u¢GyƒV‘¡h¸]X>‹orBTºæáð·³Þ”ejÕ¦ïÆSÈ·nºž(…®V¯ãójEéAõ’¶eV¢"» xe·hÑZ+/»6'ØYc}›Æ©‘lhi@šÙ¾l¹Ã¦V1Í$ ÌåªKQ*©JlžêËÚn®m¼åñ 4½\7Ù=Ý<úbÇÞQE»§«Ì=έ™Ó”õðÒ0 2%<, ¢%¥åî•&Ô˜è×ü̉×?ù0™(Ä<Í×¥Ûr#à#Jηô©ç~¢Y¾_6-wÒØDrÎ2óéJá_ŽŽ…Ǩ$Õè’¯ ;¨asÝgse¨²íP§2ZæƒÆêÈ9È;q|l;uܼÙs:åa´Ó~š)¤/ŸPÃ7…|oÒÜ,N9äp)P®'41šçI©rRc¿BuËzšïÙ—®Ómr?éT,´òr”Bóøyû©¶ŒJÜïKª84&|æ$\zšNµ¨ÌáZÙÓï;o/´û¾ ÖïÔ<œø”§GÌA]Õx¼mõ«íÿ¯–õ% ’˜¶äФA£|ôL_'Â.ŸúÔV˰VåÎö¨¨ä’™T†}§–@²_nGô“]V¢JËU¿ÉÞxÆòtl+ñÈsÏ WtQòÒŠRíäèLkpf•×ÚgxšMm#$I£§­å|PÖÒÇQþˆªÛIíÊ©[òå­3¬m’È?ãRgíé]÷ó%cr>§]VXÛGÊÁ™Ê¬¸©ÍØæ £;Ê`;Ö¡‡×t]δG¿w“çHX·óîOÑŠ@á½ÈN`eØèmzH.&Âvî¡Ï‘ïpjMDı“J¶ïªÈÙ»f)é NÚ¼¢&‡éžN,’erŸ‡ë«ÝÝ3ÔË‘„$Mó%©ŸÇ3=3±`Ù~ô¡gw€:âÕ«üÎu—ì(Q®hå’é,QUB—é2¶Ú…\6¸ŒÙ‡ührH3)äU@O¡)z’Õ,Sú\ùÔH”iº”š÷òÍò¼Œ³BÞJæ¡÷›m'‹âU[•(ûRan=±'Å8g”„zMGN¯‘§Ú›šŸ±ñHËY™ËGÃ÷Wýç¨È‰•)Í Õù£üÇUÂ7ÝÞ“àqè¦Ê»4eμ¹ùÞÄt½0Åm[òIÍ.~²íXšÛ™Èû^õån§–[*.ð6²TÓ¢Ò’”UÅœ6’ºÁ4ÅØ¡ºè¯h0|TðêøñùÓÙgâc’W»GÎÊÖ£è‹˾·Å×囩±ÔÃT˨ꌖ·Šë*:Í.Í'Yò ‰;_J°]šÒ_:095.ùñ:¸Ú!c•lFŽ±æƒŽ?§¦ƒ<­ZM^¼WÖúð$H{^Ž~«Ù ZÏ97݈ͭ8ì£ÂëÒ›•¿T€x°ô·Ón$èÔ8Õ¿–SQ/ÓA²,5Åà†,jD§ÈåW_ûÿ¢Vím„ÔÞDw’A´+g€*bqÔëzê)Á«QEëuTµh¥Ú®d»d2.škÕ{lãH 6ð´¡“BOΊ–LÞÜj[^Ò7 ™(%GoK ) ·Òáœò£(ñÔˆº4=l“t™S‰£-tuëওn×BÈ)åÛÁ±«õƒ” án*ÍŠ9­÷‘j÷"ƒ âßóè¡Ú¼(â~ŽŒp¼"³s7fëf–‹ö¢§fðLør“â@Œ¯˜Õ¿p\4ËÿÈ/4I84¤n–ÔÉùÓ}©\DURåªj÷€T¸N;é‰.í`ÛKú¾y Ä Ó™ƒ¯št';yÒlžË£¹vú€ŸIêN?ã ¹K)(ÊpHõV‰='µ€(aœ'ßr¯,}åöºÓ"P6–žG0ãW‚ ýê®àEAŒ(Q­¯äxŠ“·*‹,StÐ\XÉV=nRõ|‡y”G|i5þ˜C®¨£ÝR@Á”ImE™1sv¦árh…ew,~À’—Ö %X;‰"AS¹ÛìÄ Û%Ývä'¨µ|¾JtÈã!dY!)QŽ>ZÌT}™…ƒ»:øIÍY'kô(I`¥Â-8âHÌ—s÷à¿7n‹¡AŠPdÅSÛª‡ŸMKÖž£Ä2è¸evïU¦}»y÷UÝGqªÂ¦î;"êdKN¼ÕòI$³4±ÈFçEnõMÕØÛ9]Ñá à‡c)²f ¶›Ãü<)«2ø»Tu5Ĵꓱ÷Ró}ë¾]§ÈÎx f†*ã‰m®ºÆbE=aS1$\}Å7PX«×OÚ;².O®¬€“Ôk õƒb— R;¹os¿ëÙ XÁåÁ¹rV>©#)ëK¶\Ûma’‚ƒÓh@Ë_.¶y;J IÄ3çSäDœóÁw$Åx+J¹¾·ÔöL¹Í àTŽ¥N-…-¯z3›‘/|Àãv'ðQgM¿2ØiÛ÷ê¹90åšõ¨z›v”u»X©¨æ¨XÔïy@ŽÚqPÓ0]ôP¤ÇGÙãê=¬I¨ÛòÆr¢•zºŸzx)×ÖNÔà#9¡]{¶yþ„S©Gj!n!kiD©8)PöÔfPàë¾ Õ;/l Û°Ú»ÓÕ„µ“/%ii £@q{&¢Mˆ]dÓŽºª¬9ÞG™6-’/¥ó*h­pONê”%c¥k ²Ù¦¾$ñÉ,÷CK$œ*giæ`¥V¯2Œ€™¤ØGMJƒ€jÁߥ)Â-pí ±ÙK! :¤ˆ^»ÿ½EÜs^úq²`›Ã‡$Q.’bÖ ãã®>c Fq Ôl%£ª/Æê¡é†²¸(_ogêõëaíßž#<2½r"T’ŽÔÜ Ç$Ù oÁLYRø)Õ¸|¤y¤=B¬ ƒ:ylÉ£;[¡ídIñÖ= Ø_¦»ÕUS2ßD+Ä]h½)Œ 1ñ`ݬ$rTSäNŽm©‹Râeù&=ì"i;8ê¤6ÏàÔÃâ-ù œ¿´áâ’Ód¯ÞÐ<'‰ÊÇß^yû)è5¡¾µNåÇnlHÄÑ»oÓ9 Ï XIªHf•‹µt> ËüwR¨G`M!Ž$š™û­©’ŽS޵¶(¼ÝœH¬! MTødãÞŠgé5;A¤M¹–‚‚ŸUºø±®ZqH‹¦–蚘ÉÓÑZ£é8RÓBB“CÂBwƽLß'u^<,4å8CJ_Ó™›â¿Å®Q¦.ÜÞÀ©L)Åz– G±],Äx ý<Šrû;ZG•p ÕÙE¯KO¿•L[¯¤3%ñ©,ºzÉÄ)FN Oá÷5e‹::xíÅ>µá;·ô6•†j¹<ÛUµz˜9:Jc¥˜iëà9‘%‰|å•5ÁŠ÷ô°Ó.Éõä¥OGý…©CÝgÊwÝÅQù´œI*ÂV†'/Üsc¢:Ç `û°buºwÂwÜשWHU'Ì^qÊÝ¥U¸;%%ÏÉi®DVÚž_ ªIZù½‹ÜÄ•'²37JÁ[d£±îŸpéØ|%:d`-ÝbøB~Å' {žWQFùPMIy×ÒI}–înº]W›æ¥&‘÷$Íòë‘52U8ì*ñgÉ…¬JG²4M« 2]úœÜ ÑH•91ÀiUòlƵʜ¬:ð1A5yùèq=RÜ•(ͪº¿¾„¥¨˜‹Š®ë6¢±FC(Ãxôìì—ZÌTRøq: ž=ª©i«Õ(€”ˉÀ~¶Ê'A6§¤Õ7.|Òùì=ÜõêŒFêîÌL,¢*™{DG+á3-›ú1Ö©dÌzú^ðbaò7!D¹>q:úËšöÐáôÊ·.©g$z :R`âSéÐ#O@ÐÒä—ÝaVWlTK5…›ÞCÙÍ‘÷‘E;”ÊWÝ›í¢wƒ2¯vUÙ k»-™(?NVYcÅV‚ªúró¼t'SÐ@Ð(ÙV <Öi‰øýRå&ঠ~ª¹”2‰ºN"%s¨ëqléÅ-ÊI2‡Yö€ŸEÉ”ŽæÜšy…Ušá¹æk¨ƒdè GÓÇTá@œãØ„Ïp~dbÐ?ÛYÈA¡«¯“Gòªêï&ì]Tm;…oÉãj¦Ù'b×êÂ'’àȼȰ”wé§:¿+iè Yp(¶Ñݹõƨ}^-@»ƒýÑ;à̓¥Ÿ¿,æ>Ô]lŒë=ªþÔv{˜H¯¸Á«´~8)H÷OwäV!ú¬¯’žLa²é䨇k•“úCJLÝ<|®Ž²¨yó”½Û“|É{Ó0…ÊzèÊ8—{Ðq¸¹N‚W~vëá}Ô™¹ë¢Ÿê™ÞL”ÉÎ¤ÔÆ“85w;p¦°mNÅ„@«|–ÃM¢Z§ÑlÒʈo¡0q`Äá(ªã$þ,ÅTŠ$Á4êéÜü$³Q‡“|‰Dx*R;ŒM§Q‘¨ŽGOxPgÖ¤IÝ´C¦`a`°¨yYJdìuH|U2ÑŸ²ßU«Õ aöè[ËžÎOW'Ë?Ú0“ñÚôè ¬TqìNžžö ÆJ#ûÁ²I*fo’®–Ž”SΧE6;?·Q”ÚO'4§:§º„td¿x½JŸ?QߌÀw, ´²u¡¯’ÁöƒU¨Úæ“|öùìí4ß>iU;4»ˆL¨,ñV©ÙÞåÉ­Æ>YwÛ’Ru±×Wõ8=î^þ\ ºóÚ5N$8¼lY{ŸzK%Ç1tuå¥ I-¤Ï¢eµ†ô”ߦgà‡®B4«šL‰}•JfSäëP¼·+4ÁÃWÄgêH>®=¹×T+¿Õ‘"Çð³'‘d*Õ(õä¡€SëJ"¿vb’pÔReÝØ]çAÜ]Áy=E±<&hζ°õÑsFúêžß§>ŠÚV’ÂÔTÄŠG+o 5µ¦h—jIZÍ3¹[QHU´"[Q"õÍøNÊ:…–ÂÄÅtîqG‹™(×t»Ôþ!¥Ã1¤é™bÀ@r£½—ÊëbAb€W|àɤÜধ3IÏ™xhDÚN…ªÀqŽCJ"P½’[]ÖJÖMÛt:DÝ+oÒÇs/ÈûJlÙ&ÛÊO€Õì¼³Êã–Å.bòˆê˜Ÿ„v¹;ÈbYŽŠCÍ—¤UûY0¶¦.ŠT.…¹vî|8Áüªh¯Z'%§} [åÁ$éÁc®<£Óò‰é U¨öÏË!J%UÔm̤Ãô¥9·@vRJ­¯7z =J\}· †::Xá1}oÚhlDŒ:O.§®>òý© üzÇëñ,už–ÇϹêP÷ÝAÕĪdö[¦v&ÂÍ.¥Ê59wè¾móùKpnŸ$}O–DÉZ¹½A§‡,:7Ç½å“ ûÊÜÝãâ™Mý_Ÿ‹Ó÷£Yì09ª½tu°T­O1’“űñ&ô/4/°J¨•ÎÇÖÜcM{&†—r´ÕrvËÀ9bNÝuXL°ÁžÝ4¢Î±J/¡r¹ËƒV[uKϵÛÉüœ¨º•;xuîjëÜB¤¯Wö^ΙRúÛK,ÍS5ö./]ƒœÍuZ:Ó€ys„±ˆ‰𠟢:@!‰Ü»¹´Ç"Iž[z‰ŸôØðVåñ“ž6®µÈ¡è¿W«*µü ¤j jßR·-vĹ=Ø'7¨a™C}'Eà‘Dq¼ú?hÙË `µ? ܼO^²,›à0×¾<×@…JÝá_©TXȇտcjãÒ©NÝRÐŽ½#Õ–Ëé!Ñ'Q5h¹v7\q€‹ý®9­†pÙ)º=¤%>Éu ç‰3m=¥îö• Ngî ½ÚÁö]çvgˆJuT‹…SW>ñÐ4¥ß­ä•‚>Îÿ4{㘠¢U›Ñç•ì83éöuÅÂõô`ì$39kÉx#¬ñn ž,÷ãR^N7BÈ«ZÞCŸs»=24OTÕPç{UˆrúU¯ªp HbóÙÉSÝc#,#UKâ¿r/ìm€=»¾ íVÊh‹Âk0^›J›Ä•Kã®E; „ë>DqÁ«_cT±T/}QŽ}3—Ç`ž“é0jY7xÚ” xÉJí,³! Û§(P èÏÁ^ÕÁÍö‡þlƒ­wª¥ˆ¦fïö$6ïé~êr êgéá¾t,#¬?ɨ݋çë–t`Ö¼’k]Ní”÷ <ÔŒŽêkHNyªÍø¢³ëYj1Ùz3 Ox+šg€ÙGѹ´<ü71õéT£î]ÛåŽÇЀb3h…†Aaxm£Ä§÷šÜïò„º¼[»à«^±eIc­θPØbñ«ÚÉfIì¿!³'4;j%žaœvçÁ¤²bY~ä•vÕõ…U<Û=´-9N‰@uɵ¹ÛÜH´XòëÂmS¾P7ºd„Ë¥Ôž«Úu¿@×$IR³’½àE õ–n–xZzgvÙdºÜ¸NU\U¡¯]Ç$®²¥”“j£ÆD6¹6(7剪Vr=Õšºû÷é !»g“Ãlüs¢·n{ˆ–eS§Ž¨›WíÙÛ:â¼AQb&YG%¾×T)d¹5Ý-›ØEäLT©#8gRþ¡°ÿAvS±I³iÒ:x²U¹¿¢ŸöƆ^H{>*òºù-÷8´GŠ:5Tm³nÖ€Þ—Ä"|´ú Hl²›zBŠ|Ù†·üƳH#Â-€'uÚƒUSu’­¢uIéòbNn“‹]·GOª¾x<Û&¼´5¥§ýX­’^ß~NÊÎ_ÃêÂϺ·D¹GrVm®XÏØlœÉ—çkxc;»&ÖUõ˜QV7àïÞÒožá^‰Ê‡ú#C“œ¤)íVÂpR=µƒ ÄS±âLF%Õ¥Ö9_§Zª«<–; Euæå¿“ dËÚÙˆ*´Å¶ÐÁâl:ÄÐn ŽYß³uŸú 2 E|@Q¹+ѲÙúN&YÂG8¸<5dÛå,Ȥ‰þk±ðÒØer)<òéøÐkCó©v)Ä$ÕƒÒzæÏÖŒÒ UÌ\„KUš”™éVè© "U•ÑaŸ zãBÀS_C­t PXßÜI@bý¯‘Ñ?Å{€žÔy/-yN§i§¾ST”+Ùïœ6m›–ìžéI–]xPö¡ñéaÄÐ|-êöKF×Äó4 KKX¥z–fÃÈæªºN²-ª •ʪ x„Ö¶5Éi'òVØUuÅ;zaØ:É †H‹‘äi…¡é¬‹Yi‹²˜J™ ×59ä>KÙSzÏÚ°¤º,–_—ሧAArí)\X¼îšòŠ#/É1]`öP¨û*„´[N?_¤Ë‘ÎÖO´­=ååwk¢‚t\òÆÚ"KMRÚŠ ¼r°œKwNxœ>`®ðÅÑvôÌ7Kl®€às—Ä«ž›†MÞ\‡ÝÃÑš'+¬ñM\|¬w–¸öüÕC{ˉ[Vs^²¬¤˜°õÏ¥-ÿ¢ÛBpZE¤æ«²{D{V-”×ã䬔ö$ïHh&YZhía+P–ù\›ËÌ©ÇfO Ó ³ÏY,r¬B7Ûѧ1‹$ó*"©ÃDÜì7ÊJ`%…QJbdIP–Ö”OQ´EDLÎV45`Îr]5ÑÝ}—ª2s¼6¿ƒ{ú&Êqà}{ôQOMè^¥²-­öˆÅô=x@~ZÌÈxeAS'JlR„WÈÊWH6ä‰êQnÛiiS ¹J‚W=”¿'Q_P!ðØ ü¶²£ÙE&#Á˜Àñ0ô’MKd©9Üš:‘˜H¬R*%«Ûsp Ò~*K{<*ó“pw‡©Õ7@§$£^ðÜÇyZÃÓMÁ§¯ÕWW¾.ëÍWO!'€Œ}V.®€o”7¸l먾9¶É¹‡둆âàJ¶\ö›–U»Î Õ ëPk_†·H.¸¾ÑìÈGßj‚•½ ¶e°šZÛS@)+?6(æ ì©Ø£Ž}ñÑïä¢EaR:Î)‡%‘†,«Ë#ªóáñé]…½h[L`:}=óÖёԩ|§ÎdMî†Ù éÄíЩ¬î.ûñ‘%¥êPÇx\Úi(Ü<“ØCš÷˜mHõ§Ýn‡§|–¢ÿLÂxÊL¬es¿†zÇd*'çF0NuÙy_F:`é!è’Ä3àÆÉ8/™,•¥ iÞs¯üO þºX¿êÅž¸+Ué·ûô¦¤ôñö±ÉEB¬â7Y`žî†M²SŸS{' ÖÊ<·{)âíLÉ´ίêp§r¦d‘sÕ]üÊ:«šC ™²KW¦ÓƒánXro^ ñáÖ9Ì^&G Rµúÿsx\D:³$½Î#èP¶9+@DÅÉÇg PôDÀhñ®/˲í¯G Ô® ØÚ3•V´8 òÔ–$ ãí>Ê4XFª¤eËÔL)­ †hüä»çï/‘h;Uô¾o%Žnå¨Äy ]û+ý¼òtèÚ1bì½ý¥­*¾šy4¹‹ÅεÞÄ]ð´'â)EN™á€–É2Ž©@¦J°Îçì¾`µ|í ýªß}²ø8C‘tµd…ª'Èã&A>€G*–ûÖÁûy=œÒ,t`@r úÒpB›»t*ݼîFÓgªìög=¢D ·ˆdÎ{ë!B¥ý>VICë4 ûKõΤLÃöíõÖa™che!ãI£qL¸”–|-áõ?,å>OÉ窔 Qç<¾KK‘~È%Ó·ÇûT‹@ßnöÕîÌ ™Yó¬ñ<÷O¼`½#õ<8 rGÕ¹j©DlKv"À!~_M审!× „­ýQDŽ;‰ ãðŒYÝujÜ®õzSáX»xŸZ²Š¸3Qj‚L# ö6ÇkÜKM}9™ ýÃJÞáêÊþÞ,O"šž¨]n7 {è3Ù]yB <œŒ—í)ý‰lêàµÜŒì§C,´³óF¶»kÝ4KðåNç¹ãÂ+rƒ(‹“¡þÒà¦Z –Ĥ#Õ´RàÒ8Œ[ÔÊ#âr¸¸.CøªÈ@°üw‚gR©>Ñ”áó‹D²÷¬Á1™G2×{üdrEr—šúÔVû 7²Î ™e²M²Í˜®‰N–º¨UÄ8œ=ÐÜl€Ö˜Ò^l­í±Å¬ %è­o÷LªajàÜÛ£jæxVº“x`ÍÌT̳EÍØ‹„¾pYDi A)ì¼øEysY«ñ¿Œ¤ÇrHr¡6oÎ ó¤¢cO”¸fCP„Pê‰ËºÚ°·QÈQ Òp9ŒQ,Qé»üìþ*(-ëdª‚3"ѵìãC6¦°‚¥oÁ®±(»æàZ_§+"X·8ñF´áb_"Qbw®ÜØÔOEýÙ[‘yU“«›˜HÕFÎêêN³ã^YI™:›e«u7 è>+Ùˆ °1öñÎ_)©J™k9Û©*xËOˆ £ÄkÞBzb²5êÜDJÐADé·-…¼p«†ãy%…P ®E[µ”ª]6릜ÍjäqÙjõ)N#ZL¨—{œž¬EÕ[H³ \Y“Mšê¤¡¶gìtoƒÀEÞß“«ä”áüåm"Žõ´ÉaªºTI òˆ’W¾Ï‰«ã´Ç2p/¤ÍŽ„“*' ,G.ÏÁyÿ.™„ü¾$ 0éè¿+¥÷žM“ ¢V{„Ñxx¨5i|o{G1„íâ÷Ü]+¹îÜãq¬œ²ª^+H®èVÖ­Î¢Þ  a ‹ŽÝXçyÝÚšÝo»¨ºF†Û"Äñ ¹ZRJvu‡L‚jÃÀþ{ªé{µçZµoõR^Ýó³N[ÇKÍw–óüø‚Ö b=´0f­kTË÷ŒBQ¥" ºfão–|×ýT¡&U’ÈwhO÷„jC(d‚ª—·»ÕÛžB™Uñ€n¥ÄÕ£bSÁ°²VGÞF'RKjñü0é¦0ÎM‡YŠÅÜŠqÖu2ÉÅSm çÍVÁWã1èˆñº…ÂÉÕƒ4¦ÍAa8Åo”WáÊnJ_ŽÄ4‚¦†ÛÏÚŽãb•„ª¦:,¿É*,M@aˆ7v×(³÷ ¯µ+ÔîüÔ+iR!M1U–M\×Çí …¾y¼>vÂë܉$A*Ü#PfKe”E('•jätÚa†ÄÚ*¶ßH™ÜI&ÒYÍl­§ .éû£ìHp¡±Yá€Bµ¢^ó²þ-sXJð2ö1.Ÿ[Áý‰<ñNÙG‘éXÍ–NïÒ²úÐ~È_ x„¨SaÞÆåvÐlÿºCô'4û¸L÷ ÞÌ£DQ~·×Žjý6[âÂc–‹ua“üåm˜SØM߀ˆèsiÀô*·ÏÛlz1ÿµTcœ¦z¥‹îJù"sÞ3™{v+ÛâýPšmõ×δÆûU©PvO‰ZUh¡ê·&á’|ð†×ÒñLãJC-q_VCtúѳmM"ÄYXÞVŽ’ä‚äq€êÈÏa¹+õYMü£Ñ”¤} a,ŒÉSÔã-X1›8a³¨ €ƒY¥¶ÈµÅº€éttjår@Hë$W³pÓü²ÛÓ×Ò&+Àé™›V)Ä̲”t{‘ŒC@;—¦pü’,pOi÷áð²i«P9ÛÍ8ãŒE¦zgÒê;[»:EW½S.©ºRuÈH‡4í—¨±ÝåÜ2°œµ#q±4ôLïIÆß´ªVu-ï€}·Û¡™Ã Ñý[~€Ê@—ÎN·ú’2(5 ÀEÐKù)‡G×ë1¥Éƒ„õÔm*&$ LJŽÒW§¦,ļó¶CÌ{ÐóOó±Ä“–°qÇC§ïkT]O»*WTžWLú©WYy¿«J,o †=í;ž”Û,eÀµýÓ&mŸRbæzœIB¦<óÒ׈e‰Ó—ƒ£¥þT!ó4÷iªdôõÊì±>¤}ó ØW«Ä»¨rnr³ýΡ™v>:…SFP»ý™ ±^V0^ÏGÖÁ}ʦ·a£!°ÂG›ús;#Ý›øõù 3‰™â·ÉÅeKTGöœ‘]¼–ý”;¬¬Œ[ç ÍÇ~’L‚û‰M™ìÒv½u6s#{ŽšI§nšþZqv}§uÖÈLòÃ^-‹:+X€°òRƞǣÐýªa—çYÉ@|]Ó•“DN”æ ž©Ìû³})z½îÁïn©têï{Ÿªä„Ú" ³Qk7›g¡•ñëAÔàZÔÅÒ¨Y%¶kIar¨ÑSûy‰•Z¬è®ÍBpl±›ÎJWHŸŠñŒ]¤ÃÑœÚÊ:Æ­Á¨ìín k©Q0KÏÖßvÀJ&¨^lÂ6 •X–¸7K± ĘÄù¤©´ª‰@9Ri÷z†›ËðÈ"hðû+óþшßã/Ç¢tkÒ›d&ðs/†”{x.ÐîÃ!(ç%3X[ é­BÍ­½÷EH‘¦+xñ¬ä%ȶÞÈ™8q8‚*§DŽ~€g2 î]‚³© ‡Úr,æê™Ìýá0,wy½\.W®rŸI™ÂD3”Ùí'Ÿ™K½=ÃÔQ@kp­#Ù”§OÏo ¥Ž~ŠÅ±‚dù+I Þu͓ڧŒ¼jÍ#ç2o‡²4êc£ ÏqÖeKk+hNýî8•¼™"MéìXæûÈ ¥”Xj'ÿã&Þè^${òÖò‡Ýdüµ²w¤ò5eo2õ¹†ß ûˆŠººÞj…7`T,¨ÍSÊE[-íµBrn1KÖ% C@ÂÕ•äéƒÒ<º=ðèz™'åòàPf²aÔ˜·´M¶qØ5ÉC ÷(±¡®¢Ôº4óU d°(ŸÛ2÷‘C)[¸'öÈ6Í ¤ú<¬%ÏyÜ/»Ñé,jQ7Ú­’Åt…͘=tm‰º^É{­G†Tì`Ë{øs-I`Òa^‚­z_™KÙ©%„ýu¥ØSRΞ¡M*ù=òÞ‹U5‹„ЭÒàzÞ¢…Ų©±g’C–]úß´JëhÓ…<›ûȲ ¨Ž¢¿iÔfÛzƒû˜ÕBUwZõ(ùþæ`v½”…lqg>•ݦÃâTÏ‹AO÷ÇøÝã4løHz+&Š˜NH Ø_Ýs}åÊN ·¨&ŒeaSü òNÒ ÷p€0f|˜¦ ‹ëÖY^§Ü5”7NÌÃÄÞFÒ EÖqW¶Š_½€XÃÉn™Ã*£: ?fvdw=ºO ÎMÚÈTHZâUTg׋°( Tí—¨ÙcNÆ-­·.}¢tâŽ`LòýÎþÜÊU¬6G#%P¼Ø¼Pÿji£¥Ö+h„µ9$Z(<ïâY€R”·olO|.KI& ܽ²j *ž} ýêåÇVVæ²—mÎÌn>u@x§ö9Ó&BIS8%ÞeË£""Q¾T ¥HóœG~å(«F¶ýCçŽÀA•n'µür,hÌv—ò>«?¬D½L¦ ™00»žà< k†ñ4[Dl5V7É3Ke{ÓïØsŸžj±G­V‰Ý|xÔÑw靨Á”`4å– †®œgí1ßK¨­,™in‡5²%E« kG“ˆ1DJ…Väu8µÓ÷1Ó …x^=:æq×NX.u3uOŽÞ*”§xÊüÀpT…$+u!8÷àý¬g!ßS’ç‹ñx‡²6‹›SðÅiè1”KH©Ú öéYŽ7> éGn´.67eÑ•'D^Ýdxù\ÛVKPø÷ñ4W§¬‹89¡AÐp"½{\ ‚T# |PãòLÓTÔPùclÛ{¶k¥ ÅF÷*Ó¥–¿]NvÀÕYŽAX‘aÜø; ;>ÈØ&¥ñ1<¯ËN ×=Í^!_£§Fª¨Åùp}bÝ&›Ai`öà­8îÏóð¨z³<q¤m)žH/Bi/ÜBÒ2lªËúÒ':±•ªÙ·Øœ§\ÈMq%hM“Xn÷Q·V‡8¥Wþ†jSm[™Yμ¶e— Òíg£iY¨0'ʼnk7„$Lô¬â¨F §°Çe×ÕíÊgêÛÉrTy˜M¬Ç)1Å㪼VöÀÀ6#?‹fƒbl¯æÕ…\íQ¼—iÜ¿€)Á U¦L\w¿Ü¾ÚcéHkekÛÎ}[Ö™ÆØhãaM¥ƒRÝpeÒš²JÖ­Õ­îqÉã*¤Š‘¢bU2ä¼$mŸ,ÖyŒ$Öz^ÃI¦Ã“ª~I™Ý$§†,þ‡¦  ‘œ§ut¬ç~°Ñu\}Ôïð5®ªDd LHRê=¾š aÏ”6{è‚Îhle=¥y§úË.1j#,›uªöÞöŒ*‰€igOØ^w6æ©Íó¨§PɪÜ t™ªt[Gm•hÇ;Ø£¯Ãýsäžëm$ÈXÝkÙyûûS×™<ò‰j6ä®<,Á¢K ¬7X7–ë•QJºQæì: ahO¾¹˜€h—âxϤ՛[C¶[ —p0Û]§ªJ¤5µ“×{Xº·VÆäiª5©ÍIkM­ˆsl½>”´¯Ýkm¼ù©CÊDtÐM¶>c?’)‹®N…Þ½$`ÊÒ(»*x¤ç‘ Hüj™ÊŒ dz¨ÅÔsKàV¥Xr¶‘ñzÎÅ7@=¶•b=»²Ê4MѾC£°=XCL<å.LŒ$%0饂äé™CÍö!XÉK ø Z¶‹u{~@-êEeY ìÞ|—Y·fÁµyp„IˆM‰œÄÆài&JW‚p?.iDþ”S¡;@æëEqÿ4K2;ÁC…®¿©Ø¤c¦Ç»ÙÌÕ¢’X‡Ã.²…óðHøÔÏ[yÙ@Ñ´§F…ß9/}—Õxu-š·¸žóð¤´s®[±kë÷tª|Åå(Ÿ¡½½¯R¶,4RµÉº°¨çïÁàGÝ4Ôé¡]ÆMjÊVãÅKr$ëQ|Zv—ŒZJßÔA;ÀGEñÀØ£5C«ƒoTÚD9nÓ;<­¸m¶j ~>Êg‘¿ß °ýð÷¬±KšŶ=’VùãвÏé’ h SÐ:ô’âÁ\ ä²ÔŽKÿN'EUŽ›@æK².˵•©ü^~ÑÒºP×¹‡1’)"éÑ™.½§ú@KbøV|(5•ÒTŽŽp²¢ãiYô „Uzn¨ >aLVÞT‹Yâ±£1Y\“e..‰€%>­O§TÝüGåiÍ(K”•œÐ¥'ªðZyWá•ýGm·Î2•Á˜ ¥xºËš¾¶8Çó¢Ë±™ s@woåì¨Ó >ÑA|þ»båN©ð‚¦ä7'¾véä„:AF!n—¨³¿¦âôÑh™íɽêrÏ"öº_+9TB¤J¼CßUÅûzž;v­¯–мp'–¢EC­O*"6zs²ÆË' [ Ù,òÂ|fÊú£+a&q‘Ъ nÙä>ògâFФ­ì„íàïI?k/gàŠ˜ ƒ´*HdSlš¤²ÛÑ›mE¹x4ÍÔ)“„ª©¥ª¨ÓÖˆÃ@ÁÇðÈÛ;H«Ûz+úÛjêo;Þ²ñgýyÜ@Ò+©4¡¬hx?kìá‘ç»8ËÔ4úØo•1ŠÓ© œf7l=JÈï`÷ „ÝúƒåG‚|šŒJ-É#§†-_ øl·9LÈÚ zå\©lyãчéZòUªÄÿxn©dÎEù²B=¶„Z“»$¦†ÍÒtC¢ö×ûv;\ •à fj_ìI îéÔ„ò½òñ6r¬åÌZÚˆQR(»JƒÖ^R°c.M±"½é5¢>‹$s^IppÀyµBIeIæ†î-û^oasQ.ˆ%¨A‚üK+dEžØLñ´o®Cô#·yÙkdGÝBÌÛ¿€ Õ$ú½/wš¨ê; ‚€»Ž¦Bh±J¦§T¨†Ô(4æ²H@º×Ú.X|¼[ t‰½¬Èû`yß6§ZàÊ!nñU’„pzH ÅÑqmÉ—Úd¿ZžnË4}Ü#f•§ùÛxöC¶›¾ª’L5»¹“röˆ¿Au®H˜Õ.å‰:lcR™Cã`F8¤mQÖ©ß\=û k¨`æÍÅ^ ³9«ä77Î\¹6Õü§6›â£2Jáä¨qàf³ïs(aeÓ’|Y RäOqrJq4ù‘ÛtW™"‡°žÏb_Û­yë»]ôHé5}hb_Û”Æc}~•{XjjR°(z¶•RØÜD¨M!­åf;“àÒ·#ë>žžm%ÑYp—‡¹Õ *r¼vØQzù‰¬®»ú}låmÌ õÔ¦vt0jUÄ*¨*êÊ|>ÊÅ9=ê¤ç[Vnlš#6™ƒå7ˆ£¨í û¯5²g(Ï}ÂïÈù„d–£d³SuÅòÓ‘âU§r|Y—BHs[-šÁð‘$/Ü0Ê»Qå‘á,& û LQ 4ªˆ¥U<‘ ã=häû3{PæéÔ‹f‹ëI³¥|÷X€Bå>!Óm½*wÍÎ3©Sñy†Ž­¢Q@v½*Ú»–‘RšùÛ¨–ÕRRÈX$àÔ;+ÓèPã’¡ ïbeâ%O˜vÕ›ôR2›¸pV}²tÏŠÔkÍÿK %TõW<3¾Õ1iǶ˜<æ©p6”XÚœGS¿‡€áùù(Ü/GVóV6%ð¥Î.¯ÃamB”=½6T·w.Ê|I? Û_l†mÔE¨~v‚kõÒ®réQÅjïvï–-×¢»ÆmûSâ˜ÓVzæ»óã) ¶ï¾çZ6±x¼éØCàw^”lÓùKÇO¦ÃÉmß›¦À¥]6€çá9É *â€B:Pá<(T¤ ØÔTZkOã 1ÉDªT9ÄK2—öåú³·â4)ȳ[t½ZÇñªÕV¨ït‰GyªèÓ‡Ö¹´Kê|CÑΓÃÎúN»´k÷V)÷§©¨›Ã_)Éš„QšÓ GÁÌm#au¥5„×ßó4¢ï®Y?NpQ|> õTÆ´«%F4´ó=ѹü Â)|¹_»)“2P>÷3/4_´ò¸)ÊØD¦v]ð„'ÜR^·qµºÂ÷ý€©EŠºòàÓJñÁJÑE==Ýžw9ëYÔ¸Tqgó$%7ƒ²÷²ÉQ—”îì$G,ëýƒÇÉm+„&rj¡¨»$W‚ÙÙ÷\ÝUT<³‰WU»Ð7‡ N5M¸?  ³‡jlþb9Œö–›^†¬¬-€=ݲCrîŠöJsÕ_o§,¶“O[[ãúHyT áwß ”ÛWâ<¬e¹o+ µÈú lg“úÊýðÃÙ ‘l©{šÑA2uÊÄÓÝ165*Mt ù•ºÂZ„#›Ç@‹ÇÓAð àÖÏêQó½‰d{ f+ºEð¹5´ QÎÎ¥4·­wý¦ˆé•ŠhÒ˜MÀP‡pæƒÜ­êÒÎôÙÝ{î¹åÂÈsíuõj*•íÏ[9m>ð\GªšIP-È@hê¨.Õ(5RíbKd›þtÜk· ž /iå$[Þ)eT~?}„myª:•·æù½×]á]I*%²û£oŽxe¼…“£„üµý׺…ÃSiÏœOo|oV°^âv$mŽ5$.ë9ošÜI[Ý)›œÓØl~OÊáÅ©‰ªV(Ä’6§“ÑY¿Ê[Ã>G&¡ÝiËVR¹Ï„É'k‚Š˜dÝ/ŒvCÞÝ-æ©]ƒ.  “Kqô¡ð°¶k¼ÈÜxžÆÀà›P›ò.ëNÝÇî®ô‘=qž©tÇawüÖG½î‹up*ÔØ¶ˆÎ:ª'}m 4µ0›Œ@IØvÓX t¹Â÷ž“.ó¨ŽÈ‰€ö5ùìaÙ®‚s7¯€²êÈð®¨D·Su“Í Yüù¸ö\#åê«ãë”{bW®MDÉÎ|Ô­` +ƒ4ðîªd)±ð ±,K¾î°OP±ì©žè¦V‹öH>üqŠÝ‚²+{6ï‰ÈyƒP¶DF«Î 5,gHêÚ‘9z&[U‰‚#`cž‡0ÑÞ”ôM[»ìó•GqfY÷^?K$äèv ¥ÿÁå+ -,)@I@l€ž5*+T@§²´–9GIê±Ü:0q9T›Ï<(ÑÁN±Cv ÀGûªyuqÃ}nûÝ¡`»²•¬qŠRTªÇö ŒÚÎáÔ2.JÒW¹)õYå³)ÂEuf­4/ HŠüؤx]” ·ÜOã•,ñ6Rn©ÇžØ±úoÝbU,¢:¨Ë.²îSv@€E€Šu¼ò+AxºdÍd–‰‡òÉv:iE+ÏáõªIaXT–섽æ=…CÁeʅǤ’”Vïòüd¾;õbÓ)LÍw²·´ˆAJÑ ®ÈåÈÁÕ߯ùq@_¢Óe»àW Š'™Še°Ãž˜¢é‘•~«äiGÆ„LW¥x:áÍÆ­Ü­‡K´ä‰zjkà‘S©è¦fÍÀlÇK$ÅrðlþT–›4¬wÂHÐLZé§Ìn'Ø–®­”OAŠmcçßxŽÍô­À’_¥¾ÖíèíÖbèÆìµc‰ý3…ì©ªš­ø£µ ‹GF„N…ç°üÊÒJÑfÖƒ=8ùòf‘<_0!™JǸæHúuÙ]ç»I¤VZÜy»Û”s©¯¾”Ð{‚ú0Ô1ZÄq±ÇR¥hU…P®G×t›„S3µ6ËžÂVÉ´^øQî)5¦†ÔŒp¶ó}S€©Rhƒ‹à[ Ò­¹Ù—ìT`#ÏÆ ˆrjÃbV\v_yb‡ê{9œ®~_ —Ùbüû—ÎlÏ ²./Ê0ðˆ]çñ*õ˜ÉÞ·#¶÷ö/tX"DmªÕ*K/°ì ƒ…ú¦|¾‚Ð|@U§“[O­†ãÛMê»(e?‹^¶C™zm8Sòx&èU¬¹0©Íö·Ju¡*Iì0ÙÔ{Šœ“ÔÔxõÈ"a[„(tWœ°‰š–“0õÊ¥ñMÔ³¶2üQM–¤„^TŠ*–À‰‰ºBÂ\S3ŒœUˆî ú4b'gä/²â½ëú›XÄ­±ñ¾nmÔöÀW‘ÚâQ…ÐM<È\8Y·sÈeå Àý¥¤ÑÖ²aç°°š`•Úù&ºP_fZ$ò›”k[^'…ÇÎ'+ºÍöyGô–¡Ïzë«ä›ì§uÅ4?(Ö&fò5e©l†®ÝÍk{-¤šãRŸ˜ÊÖ¡òêBâZ“¼O'ù|É%»Ñ"6G¦ö1lÉáä‰,q{pXR‘Ûc†¢ $aÀuS8n{ðhë«qâô€ïœÔ‹ü:É`s_Ê©Ê&zäD,a8‘•ß•ÀJx!¬ƒcõŒ.ze¶-! ~‰ š9G´$77ÍäOçÉ(¼5 $N܇4ÌüÎýý¯úqb…œ|'ϨÐ)×oÞ i†K.W‚G#ñ›¨ì3 A¥ÂõSO§2-÷«€OKiïÆax…ªEÐ 8†ƒåwjãE6ø8™]@=¾ÊQ…âèS÷ˆŠ¢ú¢·w;€¿:pZ®:0M†%Ýǵ_{PÚÂZh¸ÇÞd©d’*,!’Ÿhê*N´TêÏ‘µ ‘B•llá]>^št}{ŸäŠ.òZÍ:1oow"êœéDîœs•û¤á|A‚C ÌI+ÒrO/ÌIÜNŒ¿DΩDà¤d)“I›jƒÄï©Yd£¬b—ð€t?xóN¥Ðµu–šÏ¸‡ï™—¬Ó8ûóW' !Œ¢#KÛ¾U"x‹FvÖ·»ÌXN0ÕÞ¥±ÂÉb8<©”wêÌ…”F‘@0ähs‘²)ÜÉ:à*5µ®$SßFâGe ¬V/õp²´/í4±Y!?¹jÇÍTÇ¡ÝW´PÐ (f©tdÅ$Ý»Gh‘‡ ¬^NM}5«B ¼xUÑ_ËKØt>ÞªíJí`©©%óÜÔ,üµí4¥¤øqƒûåüñ½SRÒK1p´ËQëJ‚ º?¶Ó‡¾©í4$+etk§6U¥Hå)ÎäeÛ.}7õŒÔÁ ýð˜„Æ8¥d^ê! ¼bƒËÓ¼Ní_¶Ô³|P–\"¡eHŽì9ÖR”Jû$Ò¸0ã–Õ¡hŸ¾‰+Ha=—‡TJrµ=Xµ´c„-Í ÕS]`ó’F< éfñ!µ¹¯”„ö|…€iU¢©˜>V‰ÝŽ“NGeça”.cs“j ¼ŒþœÔb²-™_I$^]ŽiëŠ+Šàu”nui< ™_zŽ­!ª¢GRN’ùáX^žùLÕcÒµî F’ÁjSˆ¯¨Z«(~2¦Œ2‘Š@|i8I6Q‹.Á#d[÷'¹Ñ©‚Ipœ^Áú¦ù‘êzè8“•Ùº†íÕV5v84e]› Ãý:¬FÀ÷H5u2`+úsV¡ö‹Û#ýÝD ]& SqâýrÙÿl§;u£ÂŠ:Y>‹Ø¡-4Ϻêùà ’ü ]Y¢ÚZ óª‹q¾jE‘ŒuV`GÞó½êµ¡°q÷Ü««û:Ö4!¿õQ:ël H…ô÷YæŠì¢S΄ìxª{›p9­Ám áµÎ}äõÜØâTì|ñè-ÏG+A6!€ A•µ$máäç+T—åM_ãPH­jåº&W鬗•°ƒ§9“;ÎHru«#0ªT’/[Äâ4ûÉ:м7YÖo9íO×öO²ºÑÆrÀz÷©àQVt%!Ê…âÛqJÙÊC…Í¡Âdš\5:âkcOÊjf=ËUü)B‚óî:ÂX”ês+¸£MaQ6†s£‚*3ÔYÖ!:Sª•Ú9<Ê>°,4U8°ÈÁ) %zv˲š¹€%}s$¯U2š•˜íÞÛŽùŸUŸÔ݃«ìVŸ«[e>iòɾЙ?¤8{ÒqO¡£Ûyê@¶NQ6BÒ#£JÅ&ù¥9Tui_¶‰ëÝ= jÛ´œ‡"-ªøúrAd: +þYùp:¯iÄ’Ê,§JÕt^§£Á¢ÊÚ‡ýasÚ²t.ÓÃKê19 ŽûD~GÃ>0MÓ/ðòí?YÖç|ˆ…ÇÔø„чÀª‹úX9ƒ¦_­¦Ööß“zÒ9È“¼ÛS0`kiý¸•ì”Ûu|”T†óÙ+ØGö¼/xd®ÅÃEЕ‡¨åÖÍuw'Žï£Q_(—–v‹Jóž^µ7+ÏW;«rÌ_‹ÅG7ȺGÌ^– ©­’ §BÆÀ›¾Õ+AÛReâ³~`–'ªÉjïìá?Ô’¯âB<å¬Yùî£fÓÃÈ\'•"ÑöuÆ œ3hö«=sÒjIVjÊÚÖ#&’®T+S:qXŽÜN}¨V£̦•’ÿH¬ÜxRO±9«MPå!‘¯ÔvÄ;«’%³Èæž·æe•¤á¬ššî[ˆŠâŽLW^ìÁ†õ#A©Óæ$k KMÎçeøŽ¤Y u«(e‰Å‹ZÚÁÞá­(YznÏ^`)]æØÉï{ž`Ù.õòõ»Õc:n4yöŽh6ßNe×o)Å*Áh‰@Žg$ PaCuÒ­I/Ý”rÊ|E¡«y¡{H­ÑÎb5Yð¾÷4•—b{Ñ»›†Ûr:©Dq‘ùÂ,VžñA^V¦ŽT™ø%Í­Õ¾6Ù6}ÈÚi‘hú‚•M›úi € ©÷o7: ð:K%M]|Ii®ã6= ™‹@xˆT»àÚäž°uJß÷½€N¬t¶+¥H&ýÙmPÀTiXöÙ£%ŠGøò¹¼_¨–®cGU;€c„w[ª©ùNuHé­ÓˆºÇÚx50æp®y„–œ #ïèJ@ÑÆí´}‘·¤]ž5ÊI×é¯6Y Ô†ûìœ$æT»@¼ËŸçr)ûô)÷–WÅ$*è—m‹ÚÉÎØ+¶2o·=•%…ôÒ/pE9BÇ/Ye»¡Æ^ÌÛf€]¤V”#G-¸SŠÖ»#€ þÇm˜£œx7a5;ú¥ã½Ò1+®O¦oê˧{eDZ‹sº,¥šØjGß…º_Ô½ö¸.›G\xIx"®Z7=h êKÇ×Þ¦ÏRÕ{´}øòßnð4˜Š`*Ü~D4úˆœÃ$w^ŠŠX G3ÀAÄ :õž€ÊaÛŒ‚žÜ®^ÆåÀ—îÇÖ9[~‚uøîÈÖã=¤|¨9îh©zۼΩ ÓRÈŽB7޲MÈ’²ð’è¡6t#«ÚU!»ï©NäiéÔËéóy«Ü¥íɨKÌtôT´¼6?œ£«B‘¡G‘ŽÐ^íÉ«§dI9 û÷ o©2JµÛ7ïòÖp°€:‡=â Ÿw* NeC&=U'”Fu —G¿IÜ æc©`åÜíyP[æä´=Õ†åк’+ˆ¼ù‡ÿX6Á–x·Bç@gÏLÞ ÔA¤Z+ë}FU›KGËl·XÔÅäõ5y(¤bqƒQ˜õ•¬ª]Iª)üˆXÚhðQ›a?¤pÜŸ–IäKYPÅ¢ÏíUÜÿÖÝ@~aÝËS´þ¾êv®Ðn¤úõ-€á¿ Ø®ôÇ‘Ñ …ØÐrÁ±âCzœ®ÄÊÙ¹ÝyQlÝ9”Ç3½•»žý,("ôP‹œ”qhhXIgl¿*UÒÿ)æÚí¢©ô)ÛÛQÒ—ª/•ªƒ¤µã±T\†få[´þ«Î8IÒÊó šL»¢ ®²`Jye‹@*ýÞà1X1Ü;¥²Øòz êT 7€!zܶž®ÑáÈ8®Jö£~ߣ8ÙÅÁ=sÏ®…á>mÆ£Cº׫H0Õvœf lž?¤*lSDslg·YœèžítÕ9»-\ϰ«,K’Êóx4¦¹¢K÷xíÑmõãÒÍn}qújR4éEÝñ¦ekß_åá‰>¼—i3éи@ÿ6E )‡âˆ &h×Íw••Þ*Œ*à ˜š˜ê$0‚Ò²Òz¼âMôÖö>¦'kŒE5§Ã0C§¾NQ˜7òÝ*'T–AÝöc‘•µ~‰¤Þ'J.´ò4H»(bŸ`‹Òâ0uI“äj£‘LÂ÷™(4²F“mJµH[wûQê’ÝyË·RÚZ_5²;î—¸lÓö‡ ÿ9än~§}ËÛ“Ÿ@§6%¼-Ý(ª§Fh µ9`Ñ÷ÙKrzF1‹Ã™Z“[›ˆatÑ…~–F££´£ š]-²«»•lãC[ðª~‘Ö©Ÿý%ûÝS2j¾-ôꙤ$=E×Ã¥êF°ûé¬õTzYºeUS”œÿ^Ôú[&·~(_j=Ü«¦–¼{Ô¼0’ÖÝŽN±³ÄE6:è‰*(L%Rƒ×¿ø¡Ó¹FR¦.vLß0J@òµá¼NÛÕ/ŸHò«Š(†%PÊüù¼V*ÒÿC]ŒÞThÚ.Ÿ„G[ru?=Ьš.iÜsž¯-·Í=YN!J¼•aPœ•wr°Ÿs*2"½ÍhíÄu±auHI‘‘î¸{ÙÖz“Ò8m%Sʸý#õîê4Bˆ •Oâ s¿gض™2r4âkë|·±L[·òÌQ.qÿ8=ãîËMxkÏ­ÓdSݺ|•œ^rPøãQ›W± U4©Fãʇ#Q‚ð»Ø¾ç›%G;«jw©¾NJ«`t¹‰+ï¦r®ò2Â1'ø’"NM÷=¨Þ>ü–’-ÕÓAÂçl”Wµµ3ßÇ«–—®¹Íy[„ƒ¦(Ä@8äkÑ¢ÇILìÒ&^{‰J£mŸo¥†›§c–Lñ*÷Ðõ›gý+ x/ E#4H†5” ‰PÓ(ð¯|xô"°¥H šT;6¬ ª§,Ù¼¨,=­Ïq;jÏLtõÛAvOº]³WbÔF÷t¦”—J%8+1²Y/’¼Ùã{…‘ Ô1©çØ " An¸DPOÔÐoi6!ßk:­_ïSÉ#g“Æp¼QõÜ$gì=Ôa¸x/—<Å[=jQTëºZÍÁS”YÔ(\ÿ½#ý–N…8¤ÒjzO(„X^¾”¶|1fåꃣW/Å « É9Oz%¯Ÿ··‚-Ú-.œp]¶Ã,ÍïÌk—œMVÒ”;º¤ ¯T\‹¢¼ ®–4ˆàÜþkйn6ßú£¼CØUháUæRAuçwÌû¶ãbÑ9j¼…ŸXNpÓVç)““<¤ú–ni-^—BT×]ó¡Ñœ´ ÖOŽ×n!L¦¬Ç+kÀÎ <ï-h¦ãyrn‡?Š(ÊÊFMºc¡È(žJÝ$'é{Ø¡{ž{˜ —e×Õ–UV-×} ÝÐ4r"þL½†« êçT˜BÁÙ=¾šŠœzÝ%hh8àÑe"½‡—ÇÒ}è–Gþ#­ ÁÇd(’ ÿ‡ m\iöOõm}i«cÒ⋌3Ikë¸ó>”byñ;%COj~v Q½ÂÖLd‰.^#¡ÁEÒ»(‚WdßJ5e‘£¯n⟶™›ÃÓKñ %úK©ÒðN$Ö¾mŽ–:£—T¡êD¯”çV“tºÿ¡®²QˆaÁ1(é‚íÃóœæ6—Eøà D;aúª® s^Qݪ2Ñr­ä£TG1@õ¾"eÕª•4èWm1<øò´×"r‘8{Êæ™Zhóê& -uÜ×Ô/†ßéZÒdÞaÙZßé‘n¾¨MÚ¹w6ëJK™Ñ£3MõÿÒ {9Æ}@é$ w°É”ê¿+Á!àHMe›Œ…d¥Uoí;¼Dp“䫇÷• ’×¶Kk’l£-DYr‹<Š­1ù}ðK¹Ø"Ékµñ<Ú&'Îú8LÅrÈŠLβe“z^¨ÿúâHR""«ŒHJªÅ´ªr·¼1Y@§Ð@–Höl~ˆÔEhNƒÝ¨2Á äyÙªwe×ë𣿙ó ï­C‰¢g°»…ào½í†Rlùhzkmt G—ýªBøsàüR†ãRïÐñǵýö™”½¼«®¤ò¢NbHâǨ܀/²Xo ãw ;¹ú”&!ÎPñ î5‘Fp`úqØËÃW©j 8¾„ó¥Œé]÷(XU'ÈþØ&Õ’¢D\÷‡3ÁQ#EuC¤~$ž¾Î\¨ÀÄNv{9º×L¬YÛ)º”ËP…¹¾íÖœÈw?u}| 8£ØÅ£“ÑU•H/Á) WŠÃ鸣Q¢ÂïMæÔQp)Þpi³Û¨´/™ªQA²–V*•ÐãÑS4NI®Ô¥E¡0½æ´Ì¤¢ÛU•¡y·,N²êLm#S¦Ñ²ãÒ‰DãpÔD‡4öjPª¯ià¢Å ê›Q<ðT·Ô\)­œ#Òê›÷ÍdбÎ:¸Ô41FëXšÕ\ ,.‚A½mS6©¬”JÏ•·›f·jÛ§Qux[ÊWµéT-Ú/:s«ÐáË«LM†læÕ¾¤—%7tu‘ÞUšuÌbmùq*Ÿø¨úÛ/tÓ;©øð¦ysDÆÓ7ÑU#¤TÐüP½ƒö~’¢L¤aEaï“qä`qÔrýêŠ$Åð,_‚ªb„”‹E¶xµ‡ëáØ«»‘Ç{:£=Ë6p]Ù6øÍÂiâóu€ÐJŸy{¨&¼ ±)\§s Ž-xúbKÖ€#ÿÜYDÅšd¥:u’¨wQÆ8_ÊÞtŒŸÐxAÂ=>¸Ê/誊õuÁMi-åûxÌVõ:ˆð0Ù7R¹W6Õ?èsnä{Ð+-›ûÅâ;x‡²?{zžätJZ·„<Þ|dÇm›&âtAÛ”h8;c Ò®ÝÑÞ¤Ð,pnð&JÉ)|í½ `:ÂF V¶ŽßÜŽ±'ê…ºç£wkSR«ªGIìçM>_ÇÖ€%Ê»ŽB¬œ¤r¤“K¼äÐû΀,µ‡ãë/5ǰ­£cpYªÛyÙ¨êÖôÐY, XÒ†ûž°;@Ášrs3¬Š{3ŸRŸuß’J0áá+pµEweŠ)j¦7Ý%ƒ‡²&yn?V¡g*ÇùÿáÿüóüÓø€ŸýùËï~øö×_~÷Çß~÷ùû¾ýîóúê—ÇüÁüæëÛo~øÄ¾Ÿÿü«oüÃêò³vüÁÿáßýûõüâÛ?ûì_þ«ðGçÇ?|"ÕþU ¿ò§_ýðõç¿ûñÿáówßõí7ü“ïß}þòþn|ù?ö'ß~óé¿ûíןBúʇúÇçù‰ ¤ýÝ~ûÝ_þǯ~ñéOþèÓ÷í7Ÿ¿?þ û›¿ùî«?ÿ•õwÿùéþ/>Œë¿Ü¿þéùõçï¾úù—ß|ú“/øÕç_ó?ÿòëOÿþÛŸõù‡¿ù½øÃÿã¯~øá7üÅõWõG_þúû?úö»?ÿ?ý‹ù鯾úáWŸ~öùûÏßýÇÏ¿ø´Èÿå¯?ïû£ã>ý鯾úþã¯ÿý·¿ü᯾üîó'þâë¯~þù›ïù…ß~ó‹Ïß}â»?ýûýo>ýÛß|þæã‡ÿÍÇüËO¿{4ŸÂ…¿ÿ¸ßý¶ôÕ7û—¿üùÏ¿ýõo¾üæo¾úæÏ?ýò«¯?ú·ëßüÑýÿüôå7¿ð¿üúûoùý/ÿã—_}ýåŸñû¿ü´žÿ˧/¹¿ßÝÝ÷?ÿî«ßüðý}ÿÕ×Þá~ÌÇ»îßþúן¿ùáûÃë_}÷ùç<õ¿ùb¿Ö¿øæÛ¿úæo?þû—_}ó‹_z ¿øío¾øß|õ—¿ýü¯Çï~‚¿:~ü»?ÿüÃ'ð%Süôù/?}þëŸÿê ?üOÿæ7Ÿ÷?ÿšëÿOû›oóé—Ü‚Kï3ÿçøÛï¿üŸ?ýðÝo?ÿ§¿ýé?üþŸŽ>ý⫟ÿðéÏ\ ÇŸÎ_þåÇŸyóß}õןþo' /|:ýß¿ÿ¯ÿkëß~óõßüøãûå~ÜéßÿÝû~ûןþö_¥öé_Åëü¤òѧÊü§ßÿõ÷åW¿ûúóÇßý×ßüòÛOíã*y<w¥ÿñw¯ý·#þŧßÿ¬ÿþ[–êçOøãÊþ¿ƒN~Îÿþ7¯ïý+ÿ¹eí§ü¯¬ìx=ë·_½ÿõýçÿÅ¿~ù믾þ›ßý; õ·?°èÿä[–þ7ÿðGÿÇÏûôO>ÿâ«ßþúþë¿þáKÿóÍŸý÷ñ«ï×Wýùÿî«~þ«5òñ÷ÿÁõõWß|þwß~ÿ•‘äÓ¿ çùþíôó¿ Z|ÏBÜÿô™Ýòû_9¿ùù·¿p[Å«|úò»ï¾ü›ƒWÌŸ®OØ¿øü×{é~úâ¾ùö~å·÷Ÿ>ýòÛïßg.Ÿ¾ø /áÛ_ø÷û¯îüé‹?ýû?µúé‹/üÓýé‹?ûñOíÓ?ÿû?yù_üâ' Ÿ¾øü“?ÆO_üò'ä[~õ“?^Ÿ¾øê'ä{¾þÉù¢_ÿøÇÀ}ó“?òEßþä|òw?ù#ŸüýOþÈ ÿð“?r{¿ýñ‘ú›ýÇß{Ê?ÿíwß\ö.àüÝŸw$ûüù¯?ÿügí lR*ijYËÐÛ±Êàò˜ytᤠ£n¼£F9ïpðlT*Ê㜚+6§LËÑ%/üêò@Î! Èóú+Sô­ÞAd ÜÞëû´t\AEði÷(Š%xF+ÏFò»µ9¥á+…R1ý³…®æŽ.ÕÙßpÔ®ÿlù8±¯ÀüzΤĜóò(RY Ê"U½üOÇ•6…› Ç,ç3Ô_öY©Ë†,R ¥Ä=Õ¼3ÇØ*€€ÒìáÂyGA"÷q8[J1f7›š@˸ÀU´@±Íïkë¥Yuo1¹š2Ò¦ôàét8óné}§ÙÅ$­™®S«Ñâ²» ¢ŒãåiS¦¥Ò=ANY‡à'SßR9yÄÃólºW¿=WÖï©îíLÉÑBgO£Ü=-R@î5DÛT ¨qÓq²@•¿?ß[qÓ¥@2Px>šß¶®;µ jœŽá) q¼bcžèC¥Ø•‚ÊÞ£lõ#®II%VNšjÍZ• ßÕN¢†]·Þ‹ŠÂÔéä1UʈÔùúmSóyÈ‘ vmè9{à¸F»TŽ+u^–.ºÂßy‹ [·¿Ž!]êe,Í>bÙ\”{w’Ò,××ʨ°D¤ŽK1€œ*K¶6yS«zG¢îpëÒCFå¡©´¼® -·7µ`†\Ë-Nþ:û¢Uºœs»æjðÙj¸õèûkí^<6®ÒFeûä\Ç+—œç4µ}n)bÅæðµiÄ“ÌAZ'^/eµ;wvæ+»+=õ`}/;Ö*N.»Îž4SÛȬOwI «­™ ¨5EÙ½ÅDݤºàUöBL%tê}µ¡t¶æx”ôIIº®Y@œÒö¸:ûåŠ_åÚÊ3YrPñè÷Uô’/ j¡zª}ž]»©&'H³^9³p½U9Ä«F(ž^çoj lò3HöŽÜmÉ#KÝ›]µWâ« ?½‡.ÍÞÊYãálëy«bl< °›ºœ0mláµã%:Mmƒ ¯DAƒ­úûx0õ&²y‚s«Ö»Ó²F8Fr\>e¹¢çpÀV¦6ûâ¸×½Ïdô߆Ÿw•Ù©e›ŽYù~eûUulØJ-Ü;¨ÊnÚëžâòCÅ ‹õÖl’¥¸!§1JÞ礉ýq©3l©O˜}Ò\ù`ñë=©‘ðÊ6v©YmM?wTØ^w4bþHþ.ê{M…,d•O½Gò¡Æ%§€×ôö¦ ð–_¬ì%š)±ƒDÊrA¼¢Þ•Û[Û*ïx“ºd1êÃÞÉ$³|½ä„¥}–J² ú&½yUùnKÙíU×uO®ñà‹Kû-Ïón÷ùÔËÅîO×üâ8üxsÒ'‘•í¡Üð€(r½g`%©ío”PM€ÕÌWùT6Ö97?°:þç¨S+¯¤ô®8ªgšH)ñ›•ü¾|ÁaS¶…„ŠåOhª?jY«~•\’¶Õ÷"ì)ãw}\‰;èäª>cȦ‘K#N§¸»f×ŦÁ*Ϻ‡g¢ÚféÇR)¼•¼~õRm×Úº˜¤ÖSkË8J—b®u±~DiÖ>qM!Å4½`õ^ÑX—Íß‘’]Oûçö8 :j4ã“-¶›Ó1Hæ7Aô‘²ªXKæ?VP‡œAð|y… «±O¹ØXòßmL‘ÌŽžœYð&‡bK2îÖ¶¢ÝcŽ=ÁM¢ Y <ÉBÐê瀠cÜr—óV[aQ7èÉǧ†Ç£š Íöä%‹‡K¬KÁkR;Ú+AD†÷ý±âU­Ü=8â‹ü2™ÊûˆJ¾³¢ b²R©5»ÔTÓô´év*ÌΫѧýž*à+íÂó"‰v÷òŒ$µç Ðìg0ˆ²¦q©ÅC{ñgÉ´à/=©Ëšt°†«ç¹ÝMŠìpÛÍÆpLÎí¥®¨ÏÕv|:•Swè5Ûb–<çg=hMÒƒ­pC•Ñ0û9óª:˜Þgö8O›VÞPðN¤8Üâ9àAr(ÿP²êY¬à’òS®·‡^çÎ}®_ÄØ•À&gdƒ.×4c(Ø:½vù:É_uÓÙG’Z;¸ÁY(]Å:$'t,[+‘b¢¤#JRS÷ ÷x·ÙEt¶‰ï3ûØÊ,™onF»““riTóåv—lIJ­\K=ˆ¶«–ôÚwª Ñ–8"êרd¯£3ä¤RQÂv¿5+§Ž÷Ü xöæØE–,QÕ©ÇÀËÉ÷>³%z³ŸóR/t³ØMzU¾2Ù¹ÍS’ ’óžŠsmþñ8(”ÁsYŠa$ >Iq]NQfÅ™%@¶qU#»«øTd&‡ä5N%ûÄvj&± œ¿_šQlIÂù; á$ŒÉ6M¯+6d—l7eð‰Ë6´,ç=ï~É„-ŠÏÇDA:*Ë\Ù¶*´ªµ"¹x‘í3K©h†¬È«dÆ[²{`ð™Ê—è²#…ÒÊA 6ØCænu]âíj’ lbÉ/Ù®ZM×mˆXeö(‹â@ª°Õ­-ÔT/ì¤WI ØÉ„Òœu2Ž ,O'“ä¸+²^ÈŠ«»¶Ù‚JÅ:|³n¥ è|ÇJŠ[æœõ\Ro¿ASšèÂ'g_l ’;€››¡}/vö3uΓ¥ç” aôL5Û—šE:?4leCï°ä<Ü;”…8¼ä…wv§%#¼Ú le ží¹É=Rä=®Éw¶ÈÖIY’þë¨W·$Øž·dkûÚÇRŽßv2ø¹?ÚnR­ªáUEDöÒjZ5ɪuzÙî9  õ4[ÞY˶·%@uÀ" ²±}T$%š¦ÃýlÇäÌT:¸U °€²ÃõºîŸ¤/{ÎÝ©ÌVŒN(„sëDA]Yûž#Ì£ Vbt póœÇQc±ñ¡º›7ðt&‘!U_QEû—D.p“$ –r¶Ð¸ìØ\Ê“L¯1J´šÙ^›ÔM´ä0>üË+0©Rí–OÏAºo:191uïšjÆ7›2ñ$Ç¥^­Kµ!°œÏ(Mù»–L°ù\N‹ªFE'¹h#tœNiÛª¦i‹z‚V(›‡N„Û±•‡˜‰ {Û•ÕÔæ±lË;.ðPµF¹Y¸ŽBfngJ^ r<ÄHO籫¥X¨[œÇq± Þr¿jií“<ÛKÏwG‡-ý#/};µ!ØÆ×†gÝŠÉÒ…§8Q9u¤c×í+ynG˜›_Qáë¤Ì¸§ÈLW·’E»30%°åéÚ—Øw«Ãpo#lýj4Þíhðr©ñc9w)Zú4ÊÝuØé‰r±9ðô(e@@½‹Da¡¢*Ùs©|êã¤~_&P6e ki—7%DžèpªŽ»)NŠöjå¡Ë¡HÇõ‘FõUÀ $¦wk$]ãƒø®K‰®P*š¼bÍ“‡z(Þ²†O~-þ{O´´J1=$Y5=¯'û3P;Á‘DaRT´¸êùS6xøpE½}CìŸèO³vK7q)©iõ©–‡4ºõ€²Ö|M³z*E¦Qß(O±4Rº¯k·ÅêK)*( щhæQ•: Ü©2¹xŠ•¥¢fÛ5wsUk~†g"ññ‰•À¢!ƒo¦×1õR²MNâ›N;Î 0wš+l+7!Ñ*MF\ì•ò¥'7=H5ÝÓb€J ÌL~DkBÉ­81 84µÖ6Û*ø<È0~Se”S¿3.is’m+¦@é84<¦džOä ³vNGjZSqœÇJ‰Ú¹Û.PèD‚-‹Ë|÷½ ·þYU“T¾géõoO²¢E[SFb£”ýù[+ä)…tèÄ>šž¤—#”ʸy  ŸÚ3ÉLð>¤üV“•p«®s$¦U©vIü¸ªûlhM£ЉÝèXV<.o.²JÜTY…÷*oŸ ¯Ú Y`™×VC¡˜øœ@Å¿; Û:SÏz•ÏJrHê¤7}"ú•$e춬.]æêÃßîSœûä›®>¢Ž<È¥·Ò嘰ÔwV=¿’^¹OmuÖ¶GÆŽÖ`º£Ëªæ¢XÚ{Ù*ÈßÎü Î!=eDX®N£«æLäÔ¹Sé¬ãVLéÒt±ísÀ¡FÞ…J qÞ_‚¿L*°Á–•áÑMiònÅÉ¨× 0 ëdÆO ¬d=ÓOUWÕ˜+³{'UFdÜèK$)ûxúǰ˜ᯊè¼iº$hö¾>å uLr·Æœ'ÑÙuF\Êž\AÕpÓÂNG]Âlj»$9\6M¹ÇflJȥϚ lUµÜØzùˆ·£™-í~ª¬Dâ¬iÒyÜôì dõÈ+Ócá-ªÝ’A¸‡&Â„ß Hâ?)Î-ÙÖQ§0;(âëŠÎ¨„ío6eCoYžLáI™&o®¸ô¨Bz2’ÂÝÂM%=Šrv%Ï ÌF}Pßón˼¨ à(xÜë‰1H ÔO½Wî Dõ0©ý+IÚñ¥!™‘ÔezÉ7GR¨ŽýX^½Ñ´¥;Öãœ3îò|oö\1Ã|:±¯8Àqëe ´® †W%ú§Y|g b¦g0š¤)îÑHC® ÛØÒ‹²Iü]ežØC\æÅ¤]ky ²ÇÃHˆ£èÓêQ×%eù Ca„ÙŽ¨n•G>ž"H…­/å;ÛŒ€­Ðµ`ÕÏFB ‹ÒʸÏþ8‚˜öTõÃdDeiª'g“…ÇOGA]@]™Ž^<Ÿ¼ªgLT7l㣠ÙäžÆ/IœMÅ.çïÖßí~³ÓýÜ_sP”¨1èÍBÀÀN†êjT.Š,Š•Þ%½*œMß_ÈŠÂÿ©>èKlà.kîú™«³ ÔïW{€.¼>¡Ðz(;ÆÎÜøNA†À;¤‘T¢ûÚtÃÉBȪŽñóëΨæ“‡«Ÿ@Usô”oe«l ogYLzH>Jq½Ù–ïYÆ¡M¨‹–º=M1û)‘¾;Ëo9«VaU Ö‘Ûå €„n^:ÌÖ‹L¬;1ZWpYNÕ¹2‘çeuIúÔ‚ûÑ.òÐÂkóf6ÿMÉZð’v×áTIxõçT>Æå,nL…r”e'û²_‡¥ëv²R]Šn©l³«ãHx.zW=IiOðc¥„÷b sv»8¿~úqDïÓÍ®ð{é>r¸yûŽÇ8^çm2Ï‚µIjÚ¡‹Ít)í:R=í §lAy¶*¨->ôcõBÔéºm.u¥n©½xÓsE bM°÷ü5‘(n/¬âf#Ï{¼jtAjäìÛLÒ”¹ V,ÊØÞòØXÒÙ´a½O…{ :.*H9œ 8)ƒÛÍï~ôHîR ƒ@ûÕßäd£…€ªI@]{¤KÞt S}€|”y–MM­ÛykÈa¼¤ ¨{R» ¹kšœ[•ÏÊÿ²5÷uÔÓ€8I‚#*œ¢¹YÔÌD85­(W–§Ú™ìå(úsÊáSAhEˆ]óO6§‡qhe¤À¾–Ý66œSTøìÈ­§ˆÒ±ª‚byétw;ë,ê­%•U©¸¨»³ÇÐÚ>lU‹‡&ºÖDi€@釧2hè}ÍÙà%˧Õï‰Í6#ǪW¡Z>!Ä©Auwïíõyv=‘"¥ð6§i›æÐªã6Û>‡ÂÒƒZ[ ,ënæ\eÛâ²¶ATRÙ}×õ>`¿Pñz’CÈÚÑb$§›ôMä­Rô(;ÄcÒJQ±L¾ÄFJÒ©5¸ŽÚ§zS3ñ]_>\‚J,Öi‚¤ªúë5¬NÛ.¦žGÒªèrØÆÓ >aèܲ—9•¢Jœ\÷m‘œ¯Ð‘E:ôÖk=*»WµmV4O§?¼fµ £Æ¿AIÐ"¡IQ>^»§› *’ï´®3»ž]ñ©¡}T(+Íf+ûÁùKUcGÎ7˜•ŠåRéVéѦm.p“ûÏP›ô<’•WA™å™îm¢Q…w½—ºÆ¹µîš ÏüUÓƒ¯õ@a²Uˆ¢Ê…j²Ì"Ör—dI–:ÁfN\µê´‘ÖO׫­:Èé°‹Ê;íÁŠÕ=s«óE(%€ø§%^¼d²w~5í‘7Iƒ”ùi· ‡ØžË}ÈøJˆuý„y,Œê[ÛÖ¼ ¥°¨ä«úäɇœÃ +ÚQlI+Aq@â|PÿŒÅ»¦Ö¾Î›J$ÎêyˆæRdX9ÞiÅʵ¨€A¹6cg{¼²ÖŸýuõÌr¬×Ù‚õ žQbúÚ<‹ònêK»×ó4S9ŽãFdm'X>^>jK&Ü<jŵ_Ò†çÔ7w Ä|T\ˆ¸BÚ%¶«t~"µçy8dªŠÌܕƫ0ܽûÝË®_Q§ÌL–‡ n=!úžfo:àÞøU–‘tJVÚEÇ?"IºœÈà!È"²\!¶ JËg½¢°Ë¬Ñ$>ß–y’Í‘”×Á­k<ÔÈ”`^£UdT”dådÐ Àƒ˜IXQÛ%+Š–HêKƒßZö@€5|½€ ØÖû·eO/S#-BïuÍ|ÜKQ5µz}ÁsÖ|hï Ç匊&[ÊäQ7;M åTœg`˜R,w·ëLcgÞ[©Ÿä9 à±%×KççTÖ‘·KPoÃn™ø€Çó²5OåƒyÂQOqìKšV]Àª\ŠI>ýäZomµê:=E“ ^ ¯6e"joÅ©éJø¤ANÔ½ÆkÀ£Òä±Ne¼*‚“Ù’^ñ”+ÔÆ|ö}±Ñ–iî‘wïm7ˆPÔÅÓn­:u-¿jòNTRp(T¬ £"XoI॒<:ûÜb>§ƒ.½wª+A™n»k]ôÿ:âÑOt…>:þxî´#uhçj»§b×vÉÍg}âh¢VN“%÷Hw¤UšפΔçŒtjŽ{ñVü€³+l¦Ö@í*Ý<¡vÍ NÙ ]¯‚Ñ^WÝ,NCT-?·þo­J‡‡ïĺå=M@°ÍqK”Ù¸Ñǰeó4¼Š5‘÷¸& 5«MuJvPqM)~%ìûÁKש’°]’ûØcc—žÕ~jH<º¡”Í•—tÚF¿€¤³ØáÐz®)h&ËÅÓ e ïˆUt¦ÆúÙÏçiªEÊî{œz©ç¿|ˆ÷.r³é‹8Üñkò_ª7Î]êT˽ÊkQávýèUµâ”èø¹&Kµú¹R’¢jwɶîZaO ±jÎ~–¥[GöŽs’»FŒhÇtØYµ[2ŽNÖ—vz„Sù ÙH.TY¾_ÛÝVá_¨Bú,]±ï4ÏÂ’Z–á«–œEEƒýßúÐKÓ`ȺÌS2­yCÇ©ƒÄ-@Ÿ2ÅxƽûSªó6ò¨\ßú¬Ñ@桱c)+XjÓר³§MQœG_.À•S°ÈOÿ¢šÀS8»øêѸ nty9J"U·æ&ݷίÑsD¶Ð+\*3)kL´¤À!ê4ÂÁó%0‹MH@=È-,OçãëéD^h.ñ­õ þì?èb6Lšª¬JÉ`ê\¢‘}%©"ÈãíZݲÄ Õ½Ï]tö ô®ã¨*¨ñs±WW êR2MÅÂ,1¼`Ý‹W¨Ô XÅZ3”Š…‡rY<ÍK›Fja ¿B ÖDêL5•ÇÚ²Gä¦"LØ­1G³ÞXá¶KuÔ2·Ô—œ94 ¹ntOTC´ÜJÏšàN÷ë¥éõ¸Ëq-› ²¤)VòmgÇ>¡Ò¬§ŠYÄ'*¦-×”RÁ€¾]Ää¤Ð2µ’²Jç ’fêäoVPÕzÙhc]žéŒtÕð÷ð1J8óõ–Tò£œleÑž7»ŸÇXø èS x,Ô§½=ФÃ#cÏ@<æV<¥lSW8Ϻ.G†Š1`ÅáÉ—šˆs’¿€j`åQþZ’„Jg¼VsV;´jížI…s6¶KŠúÇŽÔ©B`áоI  æõz‚t·%‚± „×,ËvŒô»Õ’ÜÙĵé¨Ìq<õíTz ¬ à®øä”(ê"‡z'1¼;é-ôaåèÃx§=ÖÇÊúV]ØíÄs˶ëÂkS7x°ÆÇ”-‰Ð5Ú<Õk%¹–Õˆ#Feö3݋ǭO… øÌÏl4Ïÿ:?†“(à‘H”iáÆW›y•ÜÃýðM¢ÕÌä(–'Û.IÑáÌHåú×Ã›Ššg¥Rwo<:úééyÙ3DÜGÕº5Ê¥:mÝØ¡)ê ?õ ì¡L¢VÎ&ÿáž²éÏ ¶“¿²>YÎ.WcK’OMŽ˜‘Çu̬à¤me5ìŽ ÍÕúKÁJÕÑ1›£úPUF¯jç*«"C‚ hS±¦íH@íø*áF¤W’„˜P–MN,OÝGæ°ã”Û|­Fâ©Á,RÅ´b½£Ü†¾46óÆØÆqÕ_ƒôÞ‰%Ò’Û»Åé’ýE¢ŒÔœ‹KZÜžÑC~Û–®º¶pP9èðýåŽÕ@T‹¨nµÊG“w9ô‚€ÅR;­gº´' —¬ÂvP#æ=Τf 5îí Í<&Ñ è¾}©\^<Ã+Š?NÝ œÌaëUôƒÅžW‘·{Q®•÷ÍfVàK»œ,SÖA.Hô­”î­û1´Yé" äŸ(?A!›Gò{v°Xn%¨M;¬[µ^Í–çh(\És9¢+s•µò€`+ÓA(Ä.MÀJÞ:åÏÅ›¹é}“‘ÇAM2µ ½¨Rl«ŒFy|šu¦óÛÕÆÝY‡Á•eȧdx`Ö(@ÝW½s5§¨µDí„Wõxˆmr(Ù+Z{¨âLh¥>#Pëâeew¨ èÈ6sUÜàZz‡)ù¤®Sís¼j¶9Dj”kSyÇX%>zÒPÎ% %ÈFÑr|jÙÝ`§‚]WѦӋ¶dŽ%©nt«TRâr•?<Ïíô”懜 ‡ƒÆ­–¿‚Ưýg‰Ñ!‰WÛÖ`&’z¡’'C»Ñæqë2eO[Ò3{Vþ)K\ô ©h®9›bãV·C[#·Œ®DÔ«I JñX pkMR£~jZð‚¨µÝb¸d$rCrÀ;¡¹{ïv/%ë4c»æŠDu²~•éÝUM7@¥Š‹òzߎ'‰ïÚzP„išÙ „cöëÛ©Mœq:·±ÜŽЂ‚<–¯Å40RxVj3;8‰<ÚÕ?¢ñºÀØ] 0Y#À,_Üúè¼ëðº( ›ö§- ö!Æ?TÔYÆ7ëFw–}–³ä««¦`iÉÍgYz*vX(iÄ$Zb‘«•³–§Q—VóÕîr´C«PÕÑA¾š²êªqð<)x>Œkxwô½õ+4J¦‹OS®eÇ’ÝTucÂyè_ª²zvÛȆìKGÌ¢Lêr*®£Õ¢¥ŠÚüÏ©°›µÿ÷°x™Ö &¢sè"tß&ðÌ[kéÃSt[šó*Û™äsòïŠ*éfâ(ï@¬£ÎÖ-‰âEÚ‹Œ­ ™† öVˆtG6'«¤³.¬ñ‹Ý>­væ±EâISVUç3 Ø©YhN.ö?u0öÄúÖ—‡Âs±.vܲ…È–^üšuÁÝŸº\©¨[Ëm%Óµöt:ß 9§øuŽ|¾l!R û/í¾¿6E|:€Ÿº+Øaºœ‘°-]œºqö´Öx »1‹£ô€MÇ/O3ˆˆ\…°O §x¨Æ¦#À<0f[o—”*A†×rzÖ¢jàØ6㓚]×uÞµÀßz[]vj ¯”O[‡nžìñ`Ç‚úØ)½A.eL)ǵ%·vòDT/x`!©gRÒêç°PMJ… Xƒ!ÔS;šQ™8we­^c7ØPåIR64…Éq}øˆk[u•½‰,+½wåu5ÿù8µ=CfA)ÒsîÍ>y)¾×Ö>X¤\ö¬˜ä¨X”GË_Ù^Õ!ƒgG2oQÑÀWÍ/^íåC~$²’8}|ßä” Œµà ×y´öè|ÂòPOp»ä±¸©¶¡(|৤V¥­HIZJzXÇ…=ΔEÒb;ƒ‰¸…æ.í““Ç0N࿼zý8ó{xôó¨ª Š—gotdƒ"€¬«÷nj䞬(º/M ~‡ “œ—§½RÁ¸Ëù„´ùZÔ5Ó²KJ^ÊѬƒ]ªµ9åÁã\’À/{‰ÃTJ†ÚÓt÷žÿÝs%¤#‚{(¤Èâàºygç±^ à‰µÎŽBŠšù^Q'6; 5Ù jì¨Òr{§P,Ëñàa+Œ@ö`ä-÷0(}¨®_i¹Û¨]<^ám<½—G}QxFYiâð†3>:€5I_«õFîùOÒtFÿ¬aà «5»L•Cûæî%²¸“ÁÒC†C©Ú²²%)$n O¤ÊSV=÷ àøGë¼XÒi0QÊÞfÿKÌ¢< Š!¸l éYo‘óaüoõf‡tÏ•Öák‹Ël8Ü<¤´d]’'éÊ骹eÓ§«˜žëku=!VB–×Wô‹¼ì-…‹õN’Aó¨q f—vä9 Hå `dêçA¼],d­LTùé嬄å n=ú¬kåÎj~¶!…±öW‹šÅuPÿv;ˆvò/W˜z{–úÜÙ’Æ Òé[·£§gÀºüùWÚfW:;ª4š¿¥ZtÓ½˜iÌË <ð㠌РŽÅ74é‰ò¹Órœ±y ¹m`)µš]:°ËpN…[ëK³çŠâålÏ<Ûá”{óð'Hu:b»5œx­EVoIAÞ€ïÎë ¸Y‰TÍlÓ¡+åØ7é[ÈÅð;lËNÙ”šÖòTJ íl"ÞÙZ/ÁÇŽ}`3©Êö²YmCÈP$M‰ãʱX§±¶'èÈn®Ô|º§ÜD±8Ž(Zh] &_:F%RX6w”UtEÎÝ6&kôôe|ÈûRóÄ+§jº¶û²#0©ò<à–óŠõ¢°[·YЖ­—WDxÎN ‘À&œ¿m$²t}÷0Œ ÌZxyæ¤Yî-ôk¶` µ‘‚£4#*…j%ìv[ð¬#ñÎÞÀÛPO}ròæÜì0ШNá–:Ì{†æu[´7uoË.g<ªåÿ€“¯ Ü-3^íOL=¬v_óÃÞ™T™ÑÖHQ£ŒÀ›¥ #QÊX"üM¸H•ÄSR?„ÚJ£C|ÂÖ{¡·m¼úT9Ö¬ÞÃERÿ·.6!5°IXZÈ"Ò£îˆÍTOT¥¦šZ5(”AžNŽÉy†f¤HÜ«óà+‹Z1`Û„]•|‘¥GÒVÒø—¶m¤J©¬©£Ò³©¥—%1w! `½åתKߪ"±.LS«RÝé(Ú>ôÓІ²%èÝ“ÒÜ ï3˜î+ÅOY\ïéÈ-ÉŒò€È¡êüRk`F—Ì þ †–zƒ Ó‡¨¿]ÔêÄWycÉ"ÔÖ ä¿}±ö”ƹM…"µîxw™}yÒ`5 qȈbý>W+Q0â"[‘ QO ¿l>r%—ç¼ÙM’oò I7Ìêªí¯é‘¼½dežÍUË×µtV÷)yü ‚Ð}óÜÓèQ«j²dµÑo&ÑáüÙ9e)­qÛFzðž»ýu€ô›ñ¨Z’\ÎïÀ¼êBQÍ~ÉÔV¯Wxù¡Ämùk&k,òÝIÊH‚&KTpE•Í)“Œ|ƒµðð,€ŸŠd¸K%6vô¡6‹x‡‚T¬¼(ñGP¦Çþ# ¶Ú$ÕÌ`ëåQkÄóRKÂ]D᩺@õpøy”ˆVs|©Ô¹H‘*Q‹¶'àN´ð|*6¥ðQº’ƒ×û¹ïîÔç­á³8ÊY×®A¯¡X»•œ—›v´V"$We€V”¿êôÄ«÷N¾Ÿÿ¬üÏð_¨“üþOÿ˜P2ÿòŸSJÞ¿ðOR*™;û߇V²oöïÅ’ýÃZr©ÿí©%{«ÿP.ùº'—ÚõOZ.ÙÕýÿN/™ÿ¯ ˜ü~ûõ/þÛ—K.×§/žÿmäÿ­¢Äÿ,;üO_v˜‚®NËÚÇ¡®ôª€uÆdŸÚÙzý*UrÆæ~)¨Aé·M»gj~;ÓŸxzv:et§xøÅB Ø:» AÒ¿%…ž— M'(‚j&W<›á’r2Ã1â‘Mj¯)åg©+V)P/}ÕËÌ÷éoÛ½³•èýÒÖ†þiœqT€A«ÊM­ZœtåëgÑSœ:s8AžªS¼j&žŽÍÒ sä]®WÓØ½ÌÖ­y¦C9‰Eª¡œÙ°wÞš=Qµõìª ÖLÎÖÃáàtÑñªe=ÇK£@âò.6JÌyQ]eùsúõé¸hAQOORês¬¢/iÑ§åæ¡8»µdâêpIqîéâ&Ú9|¬úÙÓX×8ñÒÌ™ú+©Pùå;Äj!pKk »+¤ë£Öš_Dþĵ½W;’Cô]¤öàIóú“Àz»©!ËŠ™ÍDÙuËjþ]¹¨öªTsŒr•ÕE»´ïÛ©?Î^oŸ(oëÉÙ»ö‘“.†ŽÆ÷˜:„-‡^ÊVVñP¢šbêXZ¿Z×îQËQy_þš…ÙG.í‰g<…æn©o…gÙ§ü´®7`ˆguÎÿ’ CÉ>¬0¥tQeQ%[ªþÄJYg~ƒ#óm•­‚Æï§ÇÉ Q}:½°qNý}Tò ïÙ§`>îä Û*Xº:®B•´TÒëYNÂ5Þ錡²¿ÁCeÑ«&ŽK¢Ù}Èè’–ïìîò×-}SzA*ɡݞª-(²šž‡Õ¯³-ú¤_wmgq¥:y5±KRAãrü~~±”J”mØ¥]u§´:jT?þ¯§õ·‡ÕÎs[¬••ú¦¥´2ß½ÖT,­æ¢Š×i7 ÏÅ N‰|VP˜–ú½T>20ª§æN™¶5[GeÝçÔRnŠˆà™óܦ“AW¦òÿbïÏ›#IŽ,_ôï¶O·åñ1s&+Ë÷…=3—¾Žð¾îJ‘Ãé+U-#H °T!lɪJ÷w~jæÀždszPK&‹»¹™šêQ5Õ£ò¶e'aܬ`BìK׿•Ôv:]=™g$YYCXéî"!§/²¨JÑÐø ríT;k( ß‘B‘QÐC¤°k‚DZiЍ”=Sú$÷pÖ´}Ñ6„ø„Û>&ØVhï9'‰úbS{ÏžB¦Ö:cæ]RBÕÑø¯"Å~HÊJÓGh' i'Qêݺ!W°£q$¥,q’Šaâ­8N‰%ÖtµkiÓZ?Ž$ŽT„P¥ò.OÖsò®9 ê4 ²fó {Úr()½-`!mÉ®ÒB¸V,•#Y̤]…Fcr|8š«¥0ep…i„žÛN ¥1~`Lo‘EF\^´äË jà¹4YÖSà—¥ŒØ•<“0Ö„p;gMwÇšæái44Biúgh…±éx³2N›®’˜Óñ‘|Ԛ’Ñe‘¬½ ¼ìR}ô¢ÖönkÐGW‘lï®®kSÚ£OÌž¥”³N+×hXl1gZÆQV6«$sE§óÓTŽzqÊêHÈKáVÏ;°þÄLaÕònIÖ ò¬‡B)ª!]Ób²$µ·ŽÒ÷œ³ÈÊW9ç×¹ƒ .3^^¼ª´”ôFf2¢@¬àD8ê¤w¡,Á÷ÐR Tp6ÇÃ+ÃfÚu)Å --<(Ò¬§ºg •4¤D02¤†;H;ÓØe,ŠÔ•±m¡ÙµAôEºUs°_é’=ùŸƒ<›¾ë82ÉhôN"j§uéRÈÒ²2ƒeD‚îÀ¥î¯¹‚)`БMòØh=ÜŒkg,˜zÊLð’tBÜ´°Ìdi,ýa€¦²äVÊ3—Õ¢ƒÌ°¤%†ù(ŒŒeCµ$é%¦•ró‘"áC=Y®ûI¢í¬”ä,β‡¸7.œp"ܳ‰©×(ÉÁë™…Žüvš¤³D°:–zIžJY±¼2F˜jíFkE_L:઴Ô4±6{]’œ”ÕV« ;¦‘j£¡ù(‚¥IÈ(Ï8•«šsëëžXCbT2L†äåËb7VÀšpÀ@†˜¦YnŠÙ ƒî''Nª )•Ii®QH¤5`íZ¥ÉiCH·™Ã„ò6è‘îGo­\#|JsÁE]´1Ò$5RÅ¢Pfk¹)¥(é°QHµÖ¦DD³ g¥›³””‘(Ïf˜²SÐiâ 3SôI¤æF0ð¥1Íh-;9¸ ý5­ŠŠÈ§“^Ð ^g]”jÂHÎъę㤽ÀƒçðGúQj&¯¦B}'? ׺oÈÁ#3a€y@Ž–@š°’Ó³ÃÞÛk"!?”£›6ë?÷th]…%͹|_Z˶6NŽ«œHÒZ™âÛÐÒ'ƒ½êäÇ•ôrH¬cŠŽP$[5¶9µÄ1 &­åÀÅIQÉCé)­ŒŒ¢¹q2(‚ÅšÃZ:3²òMŸè6M¥ƒ.&×9 dª•ÔuUíБe,ÿ¾uPTi;²öù(KaR¨ÿ¦¾ ¥ˆbÔ0sLÙÖ–02ï5)3ïiÌ%T—ŽIC›”šæVÒ© ù ä{QB[­Dh*‹P€T°VM%SWJ¿CÚÁ!¹Œ)kŠÈY„–|ˆÛ<ÉdªA(¸*UPjÓY‹pö¨!hêÒ(‚ö2kÑWX\QÃÓŠ|4ÙïÖ¨},G3œ¶‚Ô$€FGD5“ðÂדw´ê¬Ó/4¹£:Ðw@É)Ÿ,Êà-ÖÚ[Û‰†Ê÷lhåÄÉ “ذ®äxÁ¬Ÿ œa´+B¤\ F×!,5}0rÜä8CÔ=AoBç¯A`:îaîÖµbR|ô9‡Q¢ö‰ÕœŽ¥,2ˆ&uºÛH‰CóÕq\Þ “,¸´±$‘"EØï£ÛTp2_ÑnÈQMÜfäÇ‚&¾¢›<«GE¾Õ«¨6¨·&¼®…ßKØxì'ÐVÊÁls’X}% ÒÆò³dðI•<áô’m'Í\v›"ÕØ¤ƒ ”‰guTh‚ £/áΦ6AÎ@íBÂ*K·ÄcŒ;IÕ “HÏ1†8^îÆHIÃqˆ¸iÛ&8ÕBõ%„¢Õ×%iN’F;’ž¼ùZ¤jE);M9^m"%ßÑ#·þ?e$CÅfñŸ–´¤•p,Ј(A4]½]mÈãŽb]áÚDžN¤‘’>'€!É•?(³*óPÂÐ*`F+jØ05†BF.¨l¶Üšõ¾!Z(M ”(³Ð{´Éb: b©eC—›ë‡ ^ª ‚ÄOO1Èä´d]É‘épàáÀ`ÔäÂbž¦v|\.)…Oôw@Š+ #—e[ $Å@¿k­/$}G0ÇÝŽMð‰•T”’ ¤9îŒKž2ø„x•ðS‰‹9ù¿Z5¸¡ €(Uî—àÉÐÂ?"¡„±ˆ¾ % OSC_—QŠ¿•­½päNI{ÀEW°÷à$¡ß8Ð&‚]2ê„®`Y•Íî-"fjº ÛÎQ[Q¤¨z:ü¥Új…Ð:ß ü¿š¡’Ó#èð4+rfd)J 2ÁRŠN‹E)"ewéˆ§Þ Y »Jà°h¥;x (ëô Â#84ò(µÏ]3V4›‡¨[³‚¡ŽD• tѧ$…¾"x$ÀqC¦!Cá–$Žà?„ïdëEä*k’­í)Í=¥)̱P;ÚZŠ@s)¡ýßMãrG5¤Õ$Âæ:J6rV#†è¶CâØÐt@K͵¥õh Ò;è™a1ò¶¢ÀJÓ$ÓUÓŸnÉJ€”÷D¡$.¦g¥h@ÖKZ7§!Q5rê ã,1.m&ùdÖÜoÙ4„Ó!.r­’ô „ÒU\Ã7IÕH Ï5 äRÁL"U iC6ŸœÒÌ7ØúäâÍö”fXX»“ÍÙ´Ò¤‘±˜rDYú¡¯±òr²:;@D,×Ó”!½ªht:{µâÐCtºqeÌb™¾&ÕJ`’Õ€©U¥C]]Rf[X(H/SÏxœ:¾zJq¤=¡T€DfQˆ …{*` *ÒƒrmÁh)­œÿú:'+]àr4Æñ3‰Ps%ë–´sÖÀì: ãÈP%Y_FSk‰Ø8ô®Á‰`€„RM¦‹‚n„p\k½é«=HÖÅHG_­ ÏаMÚ:ˆÚ¤.åed± ă¥Ÿvjd‰™¥ÛóU:LQ~eD³£<ºÇÉfÐÍCšµlKx$å Š $ûÚ}‰VŽƒc¤òQ¨ß Òò4T*TÚ#@1ÈDȶkµ™Ìœ)•pèfZ"mT)Ê·ÊL ‘ƒ>­èßѽ’˜Q®paB’éL¥53¢ç=(-Ê$)N–·eÑù4)´Ëã"ŽåR »”DQP™,#Ú²UœoÑä‚É\(­•2Rdëj]9xáœÖìH(…‚7 1ùìdré\(.‰‘6§õƒwDŠÚÿT×¥-!MHôÁ æ p8ÒKËKó% úw£¦M`× Â@òÊdŽ3©º’Y&’SQfßò@pÐÓŒ´¬ 8Ì©²oh­:tŽhñEYšíTK ª­KJ()lK¨«¨€*i¡\T„Ý3KдN\—PH_ABÖd± ®ò>•ÏOorwlëËêè‰Gõ {¼$ÀB ª¦Ð¦÷²þ©¼ÝA»#²žë•TlkÝæF|ªJ`·±¾UÒI%´fÈëAK‘Ð)&ÎtPúéJ·Â#•ZkïTHLs!\J¾£M8Œ3hUÛ‚”b(°Ž@a!?ÊÙ)­"E7-à~†#v‘ Ì€²:! =¢…ë¢J/ð„Óë\J4ñ¢§‹B ⨰äyÖ}]@þN'÷R«ËŒ–„–rÊ«,;ŠÆ™] mogtÉ«(Kªé1/l¨I—}%ÓðÄ0cÓ\XÐ@ø+¡ð™<9©vÚBä_AÐ+¾ô ] @…ËÓ7ôPЄC¸E“WYÉš!A"*Ôôìòת  »p1BQj¦yqI}묇SœnЦ§“Ž!;‹£”hRJ ôJ`éÜT>!t N‚çHz]!íeΨ;êÉ=“2£“а¸õË)äí¹‘žP4'¥·t , 9trâÚcœºÅ ™aš{B¬#dDÛ|²3p]ªËHǺ'iëF4mÌhÚRSøl= $œ~?à¬Òs Ò§3bBaëˆ2Ç¡„UDûRZí½u[AÎËo¤1cM2–`,ŒÂ‚¹Y¯Í™“0K» vâÚØ§$WTÏUŒEN–ÌCR aEÖæ´³Ë ·²,6#¥¯0žÕ O¾âüº,;g|jÎ(Íä<1¢§|J볺«¡û ¹3&6)$Lj>ˆôËÈ”“ë+‡RN½'eä&æ8W`›‚ èBiç]jÂq­¶"Á¶QZБ –P¸$ÚÛ %8L’†¿•Th Ô4Ÿ©R>µ‰åi=H†WnئiÌÙ"àY“í×uSâÒsÜ Å•@¸¤“L ùôvp(8@ó‡=²- kœ’$«Jk æØõ¤á&Àx„ÆÌ¦{Â×@¨Ôsˆd©¥yzR… ¯¢`à°¢ËR’Óñ6R†{¸Ô fËü8ˆÒ²D>»ä’ÐTûJÛ7&K«F>û#¯¢’ y„zj„$¶l 7â Õi õ: óNƒØŠt8 |E#ÕÀã7%¤s°mÊCÊæÿ¥×t÷_ #<1F[¦ TUÇE•ѨJ8ŠüBrg-Š3ÒTPn(;‹Û4ý–0VÔtJe6äNÊÃ,¥ð$ ô¬÷GJßÙD\– “’ÉKMJ}I­â(öÖÞS¨½Ìj’CiRö=Yš ú½Ê2ÚW®‘Æ‘®†ÚŸüLÚáuÐêÈ®u„ñÒÅĽ:lc)©}ÉZçÒ2NB6yÒ©ÇZ½¤ÒmyÞ“ÂG»Ë2ÃirÂó5ÄIM²€"´=ÚMŽ#s;LÔxåæIå—Â"£Ü‘¤ƒ>y”cE âG¾·Ì/¾sNÁGokøF('kG°ÎáJJ N)ô¬Ð«mÄ€!c”ÆØ T8ò£­Ml%šµ„jˆEtõHHœ©»ŒÉqÕÚÄüñ¡¦—Ep<[Êð ‹W ¿A×A¨Bp‘P:?°ê ¨ÖwѵY¢ªmZ¹SÞÁ·"Ä -/i¥ :ºCΗÂ@YÅK+-DÔè~!q—Ia 2äÔÃm.‡˜šÖ¯—2ÂrêAôÔOHóSÑÜÑîÑBƒr$qh#9¯öiSëe-ÁkéRÎêIU‹ÉÒ¸¤S%òy”ÈC†¿QB§9€ŒB°Z·¯¨}–#_•¤UÄtÓ¤€)²ülN8»¬¡©¸Œ¥tÉ ¼Ü'=H´çÜEH€¦Xý@¯ÉÎ¥MGeÆøõQ´"®¸Žp5ЮS[,ù%eCV’üy¹š:´POOØ>åD§´k5$yï9™'wÉO ¾YеDv{JüñGJ!Ôv„å––Ä45‘1\l…좄ÃÂtH![•3Va/ƒ]h¤ƒ^G',𩔆%)uåÚD¾³ˆ_SÃ'OëxYw.'SÓjPúWN -vHH€¢ "ÅÁƒ#U/Ê[;˜“Ó4IÎ9HËŽIu•ù¥¾¿–ã@’Z= O<ä„ÂbŠÿkðL5ÝpÆËüWŽ“¦¨<ý¼µáë^“M’7âH •ãÐQ2Ò7Ò>B"Ÿ²ßY^¦%ÅØÙ#ÚTTðSêá„¶àýÒô:<ß«K9ô¡Ñ½)±²#Ä*¡m¨YO¤°$™rÙ#=úÆIúä'r<76JɵÈÉQ*t‹Ž4º1Èôµ¹,ºÌtœBJ1<8rûhP£Q%ÒÑð”è=ý¸´b4‘…4óÄø"ä]ãöÊ>I#ÑÖÕ¤R'1¥HL„QÃU¥”dÜÓf”ô òéûLczùšq©«ŠØ‰,“| òí|pÞq¡Ì_LvåØv¾aƒPx¥Æ‹„ •´ª,tÙ;”4+‹HiM€ñtÈškLtÊ&W{kÚä4¦Nä¸BàÙÃåkI‚Uª]S@‡%ÙÊ’ìäÛÆ[2ǰZârœËÑ’ÚeœägÄÒ…Q¢ 8ü*[Œ¨c+ãF7GåéhŒ?EªU¡šdpdSôDÊ^‘¾Vp¿^à™Uì¿ÿ}œÜQÆÎ[ûêØýWþ]²óhÿgT²ÛâÎ¥ìöÛÓkÙ«4ý߯–Ýžu·˜=^}%ou•'ÙJèþßm)»É÷}µì|à ³ÿÃúèìóǧ–³#UÕìY±úú“Öáòh.E/²Õ×7Ï©p—d~½^üš¬¾>^üš®¾>Yüš¯¾>[üª Ÿ/Êá£Õ׋_uåËůºò§GTÖÿ9J鵉ÿ Næ(’"PœY¡t”—ÓǶ4å\‘fd]ÔËî ]‡³¯…ø{ÄYisŽç#ý=ô¤5Ö®":Yp¦ÓvÂbEÃ’„ÆÔøÉ!'Éy¨‹J›“sˆÚK©õÒú ÄmÕÎ…b?u¤“¤JôuÀ¹Oé"Ð’N×$48*º¸"­}èZú€ÖvBF‡îÑò¦Ç´É_’²‚¾>Ë[™ÂÁDŸtú ‡tœFJf„:Ž>=rô9k“Ó¥mDŸ’†\ÍšßtQ.%^ônÇB†±ÓßEBœŒÆ®ã ý7Ʊ+ÒŠÖR‚S-u™GY”é&ZóD_ò¼É·K ô2P5û¦`.]UcÚÓÞ¨KïúL¼¡‚²ŠµU¡û£i@ã«pH…ÿ’9ÝM\­ån«4‘ù º¢+{êØ x=¡Ó¤Ò´•¨µ RdðÔÒ|MU§´î¡r”¶Õ”‘ÕIQ2F À8í¤ócóŽò VN"]›–p¸7IQ/XJÚL|BáPžA{œ‘½ ï¶,=…1RA¦ua‡aÙé¤RÊõ¥4#’%ÊœºÐTªÆHV­ì‰e]¥¥¶DÙH±e('IfÊI’–¢çìž¶™ «ëµãÃBî‘4N)yK k@Q—¥ BÖK P94 DÄËŽz.íû&—J“Ý‹ ©óB{¼´â¡HP°_C6*yÁ‰1ÇГ‚ÔLÊ‹&À]D-lÓç²emVÓò2_1’»%}ié¨5Æ1Ž Î婚‘ÌÖ@–žÏ\2$<ÒÒlTpAcŠhÞÝ´0mç´¾©*bõt’bKI]ŽМ@Â/hT9ý<õ42ÕRitáè£2Óå”4IPÞ'‰·†½¬”‹áw•2n–Þéš1— ‰¥1”ŠT€²…èN§ÝDײ˜¶mI¬UÐRS€GëŠûb°EFóoé4h[+)’ÌzÐÀ;#ÔS\ö༮. >•~kµ‘cJÎNcí“c¦‚ yª‘ºÎ„Š)ýS“h#Fí¬ÄÿWީ֥'s#¥¢)®J¤)"ÆuQÓ%‡´QYÑÕz›–ÍlAžšºÚP9€%=Sj”_3ö™®¤LÂûÔèczýQ O\¾j€®’ÅÖèå…?àfÈíHY5ZÈ¥1µÞ²·ÅÀ¢r"¥R``Ì@ª©„«¬„Q]%T×ÛĦEWetë’8V’äÇBiš š–czOT‰ôzö"jìüjZ!ù‘^¢yA›/¥™Ñ¤~lb¨Ñ5ùœQX¯ôE,NUM‹`[ËjàD¸ìj«F•jeã(ʆoZ¨¤³4ÙôŒòT áHJ•p=dü}§«6tÇÉ´ HK¤°ÎSæXª’Œï#bò{™E+õ•h±^th¨“Q3jÕÉвìâidØADB¢nFUL@1|lê$nýζ%cdD½KÌÓ$'­°¬)åáD¤³P`QÐX¡ä Ω@él‰’$7ÀÑcv d€#·j꼃¡;. `ȰI¯¶ÐäÊ‘Ÿ$¤E!ÿ £‘^ªIÌhCD^cWä£å¶Õ´!„Eµ¦Ó©À:56¹ä¢ÒZæ§ZpuΘ¡`·Åì’SÒ‘€%&‡Cšm´®Äò0ÀP‚ßäßQãÃÎkÙ”‚ oU@ôÄjR8.êZ²|„Rb[etŒ×ÃJà›Új’;=Â@zì©6Bž%ⵟ¡ªÊmhàƒ_!§kbß–¯;F™´–t%á°ŠUPÑHDè­™Ñò¡X펴ˆžËÁá‹-%­£Àu/dz¡L&Í´vCÒX¡¶a9UVVÉîÕ2§°™¡`¢‘fŠ)ùE58‘t#ZDÆz]P,–3G›’FØR3&lÛsaþc$Y8’%à2ÜÆÌEÚZèHJ€&xœÈ“y/_‰ž¯‡Ì²Œ5ûr FŒtðÐvZGUálM^-„‰Í£éqÙéñ"šžÕ Í"èÉ[€@à πÖ8µ¯yá*¥l Ê4¦ÿp;¾ 9Ë”3jJÈ—º¶}>ê~Ò¼4­[ë&Mí‰Ä¯”>‹‹˜N °€0ƒšÀŽD…‘ºáí.î§6¬i©.NúBë˜Uô´#“\N­æj˜y>*½›HjËd¤gäщ6nh`—I;J§K9À;,é£é4>RI_{ÒŒHÎåÁSÔ@ÝÔÉd^WܺBà(…»¯õ$lœVÚÃæÐĘú ¢ íh›Ä _­Œo ­D'…’y(ÕeÇ4 5­kÀ‰tiFJ·¼Fm!ò!—+e´ gGwê2² H2H–cE[gRp0Š|éÀVú´²f<Â×õ@{íF*èöHé3E÷4ÃÕ@jø¥¥7;äÙô5yF2©ä`«å¸v¬­†þ(`ŒéZH ! 1¤›!¢\¼Ž‘ƒ¹ÄØ ÇZ+éä{@+UbHàéRú  AJ\Q¥8MR¤R SAi+Vô‰ôÌe²‰TgGcõjqH´©ª“×!—^BÓÒB.o2¸Rð(ÈcI(Ñö³óþ§HÎ:ݶFÍ$ÉôXJi ô'rÔãªCýò–AX*Ép“Fz–”ÅP_÷$ÑÐ׊š*íü8¦?OM×=2òhâ#áK`‰K‘¦±6ö#Ñp­Ly¬qi”’ô’–û"oAšRþ‚ù…BªU ‡ÀIk gäuNFù\½ÔZO J*†e%% 8)%ÅÀI!EZ&Aù6†ÓÎO„ÍÈÖ.ašÔï9=Ö±Ök›GÁ9¢ˆeJ$£B/M %ü]U /f‰ÅÒ•F%ã¨Ý¨!_«¢~ `ML¡¤Ë‚V!Ño$N-\Œ Ùþ]N´£ktÒå¥4%Q«¼ÒF­Zt­”%™Ž¸¾ÜtI9 ^$.£ž¢µ¶näLõ 9QœÎq‚º¾6×îKäÒMz„¢mèYrƒFN.ùt°'§½®àÅ@3¤–|çòƒNjZ |t>%cÝž,&2*ÕšÃ'Ä.sJÃ,Ò¥ÒNhX —v‘VAº·—†írÁZvIz‘®!{F³Ri ‚ôÁ)Z©ŽÆ,Ð6àòˆ¾#±œÉøõd3tåµÅŒ”³Ó›bx`:¿µ–ëG·y""G\3®¢–fœ•õñ“–-;½šñIm½Íç²|õõéÏŸN×›”L_ý_ë«M J¦;J οëɾ¾ùqó¾däë›Ó«õâdÃ\~Þä©ä©^8ûãâÅêk¿0ó+åê닳Åm¶›OúB»ùMî6¿i€Ãü[©á›ßtçßl~ÓUþ~ó›®ò›ßôÜÿ¸ùM×üoóo•®ùÛÍoz¼o6¿é¿Ûü¦)þýæ7=ÃVz‘nxtw¶ÑSÒ‹´o¿þøèl£G6îð¿êy>/~Õ}ÿ¸ù5Ñ~ZüªýüÚôãÿ¦mÝå0ÂyMNìÆ‚cNÂ(”@ãJÖ ʛТП˜š©>Õ4FE5cw($CYO'<7j.:QVmÿôXž»²!„?râÞôc‘Œe1¶šVÎ D”„Ú˜nßU;&¹.ÅŠœrj`zKÊ:¢ÍA.+oÒ¡­ ø´cëß@‡ƒ¸lKj®]+ÿµ‹åûrâ?FP)C+ÝY“òä^Ë«ÊáÜ‘/¤gh9÷—[˜B;ݸº(ºj(ÇvY–bí* ìÄ0#æ´  Æ‹D½É|,o¼|Du‘r²˜UrÜ­UG“ DßÊåÊ47DB~3 pJPé›p¥ÕÌ\"G¸¨É¤Š2¹ú@vIJü±†h`ÚwGCV7ƒ&þxÛRqà—w¹†J¢¥ìò²‡&§}©¶¤V2å;'4dâ=M25FÉØX¶U,¹#7¨Í|Ÿª"Ú¤ÌéL­•KªºëÉëèë¶„¥ôœðœÙ6…|Ë.)K7À7ÚhÂzhCJ˪’#œX×N¢ÌtߦñºGð.Á±QfMšÚÎy5Æm"å.qŠ KÇX)éè`Ó`GeTä Uc$½”çô·.NгJ;1ë:ÚÒD4¬$¶È¤BdZ$Ô³v9$6iîXÅ‘DB+Ò¤yNEO×¶ 9M3ãHnNOÐ:jRM¼ÀO;ø¤>8ƒNa9I_£w7À9Q·Úº‘ĺ€ÊkS†U,‰Ò¥q=\IœG”ÌÒH¼ïõ¤IœÁÃUô•†Mþì÷4ŽI)ªdŽªQóeôTMbÍ|°@b:ꙡˆ ›Mà¡¡ÝÉHQ(Uáñ)ó†ÚÙù¢(aÿ’îè[¢¡Ú´ª–n ÅîõÒbÐásÕÁê$mÃu”‘âäÈŸƒ#JRQÀ@LšPô˜Ã‡˜j±èI+[¦ }™ëb9©LO]5®§· æ+’dvå©EcGa”¶ÚÆu/ð@FcÐO¨·Ž41Ò¡©K'õ[7ІdQ1ÂmÇYdQw±~h«´m«*--w²Ìˆ:É8ëH† ¸“u{/Û¸¢qD–Y÷­žKjÐËÔÆ191=¥ ço£¤G;T¶P‚DëÒ1’7h2"ëOî×0êÆä0>pÔNÄ–@yªTeErC 9-°5­y;BAÓFp-ÁzÞU™Úä«e¶CÕ•T¼s„¢’KŠ]Á¹uÂ1_+í)°‘pÈ’ÑaúÎÁ¥Ye\†s­­>d²ãšÃqÀ$; ¥]é-kÝ6‰~2~:ƒÐ2’â‘¡ÉdY§èà1䩆X' [äÚ,ºÂpItv¿Š<òŽfIÙ7"á}ÜAQõdRÄCïÁy] ’zîHñÔœ@j&0ÒöAB:À»)õ•!Âj‚%zT—ÀÒCâ“§4’îi.TÓµ¶´yiÙ?°J®¥á ÒÊdd+д}p)õ2‘p’¥VsXDôî„߇ ŽI­U~´xB•äŒÕ\¸ŽѬ•%ìáPؘ´Þ}_Kl鋜Ô]­g£õ( !“˜gäJfðæ #Á[G#r¦Å´æŠàa”jæXªÐöκTˆ)­"kô ×שFµ±üÖg I)s=YE?‹¤Á æÁ5Ñ0^ë OÄ3²¢Ã@3c—pÈ[å ¦GÕeqä7T6аªÐ4G´í*j:”µ€¢ƒÒ#¦nœöl4}’5ªà§ 0ͳ´A¥ 2i:²ÉF J iå-9öQâšH ºJ9̼«t¯^ºdèˆdærè¦7Èÿ…`9êØæCJ¡ü@ÆÚˆ줰jŠí9êÉdè…ÔrÂ"üQgвŽÔó’=ÁÆ¢E›ü†T{ARPhM¡ºméô ™,©nÚ)•½ô>ý±Ûº&‡DžG×Òʼ"›•žë }ìX{:’×#õý-éa¥Ij”äÏ¡T7„TP†F;B)9<ü9S *'äDtiÙƒž…Š"mÚ8­…¤(²¨í¸JäÈÒ|r±(Mw=§Bx±&ˆ¦.1É&t»ÎÔÎŽå¸Ô£d&àJn%P…vS ÷)Š^‚$o¥#-¿îÒÂê®É5Ë]š³X¢á£žHæ]ïÐϺ’ú†›R°JKê £m:mLàÚ¢òU{’}J­…zeÞ$Á¨ò@dûd}´~Ò¿Úª2mrdb¨Ò"Ⱦä™ôÖ5‡;Žô‡îòŸ®õZÏAŽã(ˆ&[*åD*õñu…ë# SqöY–MÓqð=\=@VC»j‡{²£#E¼šÆImµœ(æœÑ—Z?ùÝ#E䜌²izH‘¡¡…˜üiýÜEiÑâ'–eJ[í/驎ôLHŽ"¼½¶,:­«¼ÆÒÒ¶‚™„Î[°Õj¿Bu›áƒºœMø±Òd<‘\=Ê’­s@9ÂËÖdtø¡éûòpRÉî­œ-šÝÕ™Öh‹ÔR£0Žôë ð«àt-i«S’*A[”®.>s’Sk ’Ó=fçFv‰œªŒ~@=UõšoV4†K½”N%ÕÉ©:'U:N ÑÀí9BHÐ'°ÿéY´˜¨A#9.5zø&¯8?nRG{”–¬b8f$žZ|¨Ùä\iªG‰ôÖ9ÍÐéýSwÀ-a+Uè,Q “›*?–ÿ´;*‘è¬Ã¨5‘|ôÂß0µ”KUX8a='(ÝÒR€rÿV<–Àõt‡A|}&€ã—NWR7 ƒÂù_¹“NÕdÑ<’|4za>ÉǕԥOG&C 1–»CK"iY<5‡œ.'SºVkE¿ ˆÉHª³òbrD*ÙXáØ» ý€{³°úšÃiWqÔ-³%– å}WubBÏÊœsA4b¨Âä q޲DÂëòÀk]‘ÃÅ®5—SÖÔzK-“çš  ¸üÎw*6Žv©{˜dÚ`jêI¢P¥…­ˆ¶@º­1™OiÓY®CemH˜/„SÜÿ‚ÞŒ#2MY_B¨)\¥+2‡òå“u5Z_û§1ë”™O­¥ˆ¥6!:Ó-ð$Ø¡MY¹,tø1Y£¹– »XuÚ­Æê¤:è#å÷¦ i'5퀔ö!Í>‚Ü!àç@C¯:á cÇ%§~Èq¡I’|ë„ÏU6–q+ÿ:µÒ2k3Ú7À9,Û2æÐ“…kk’æ îh#PAjÝhše%qz´HXÒvŒÈÙ"Œ HM_=ÀF™º´‡…BJB NúCò'Mš‚B¸( Ðl"ù²1à:’ð°)Ȩˆ`45ý?¬œ§Ša³'Ÿ 4®ÍɤÓÞ"½¡ª ©©NТ¨8†#Ùz5 6t5`º¢í„L!-iB¼ ÌS#=/÷_YN/HAèÖ84%œÛ=;I7* V’¤Ã˜D½õ1dÓT°„_NÆNÒ4˜<£_$I hE…°eŒHZRÛFóm%CUYŒ ÎÔ(o†æi-…—Cu!)À?†#=×-ûªýº€•6‘ÏVGEt…à>”&Â?MB)˜>ªE­ J ’×x:°c)Åd2+ä®hq!f§‹®¡—d/cÕÈ¢r³§~‡¤$ÍAÓIKŠàd•*²¯"Ùî„Àª¦5ÉKG©e«Ïr¤þLÛºL¥ç¢˜Ì—J$e(i¸Qt ^%=…¤«÷å4¸ =øAÊ?ÖÓ”)Ýå~æ‚§ <ñ%ñÓ†¤bùxÚßR­™eZ:iÀö-9QÖ^ %õ«ÖøÙô‚h“ ÜøRÉz"¸eG~…\ \UÃ%€ Yj$ß 'C&j`‹W$ v$#ÒApRþ'À‘ö͉š=¡¼@ƒô»Ü¡Gì »­UÊah•VÕ” [šÎ¸#!^¨N¾à-jN?Uè¨rÀ¨sÆÀ!‹àw#³©¥b’ò”§/ïM&Hv| uJñofmvªcIû•wêzkl;èši$ÕUr¿[õ’ÓX*‹^¹Ä¤å0Or"sjnh’,Û] NVDÊ‚ÊUÖœè}™S+…ኑþzAõ‚ Ö—4¡ð~À)p4 ×Az‘+ k05  Ú#„•ñqZb ›ÈgÉY¤jÈh*ÐT;éÛŠæ2‰1¿ÊìŒÂ©`IEÏ %Aš~ë$)Œ+³”Ð@©wMë@:]ƒ8 »ÍÚäø´T6±N¸¥ƒ$…5l¨òvEGÝJD+q~#ó’%²Ò’4#¿3&t¨-}¤N‹®Í.Eb¬à Ô»òµ^”–´… @:ᮢ']à5ÁtÎÕ„SŸÃ%wtZÔæ-S]Ÿ·T+gn­mu4o.І0äVÐÉR­M­Ç‹„LjuåÄÐ8*’{œÊÛ/ÄÐYR–ZGÊ¥Ö~–Û#“Kba¸ò?ïÌô™!1šeÍtnNyxý+TS¦ð \c ! °¤g:n5¸÷2,²u8ÅšÝÕ@‹ä×_ÂP£< tÙHˆ %Ç4P¬­+ÆL‹Û¸q'J˜v}4J!8aº®è’ÕÒÝ´ksHÁ*Âï-‰‹R²áeÑ* ¥1«£ÖÌ)ïšv1¥ˆ,íÒdR{#/RA7¡"aeÚeHBè°S~Óè¡)£(¢AnžÞÒòX›¡œº¨à ö4¶›-碘®tÁ’³Öx¿’´V&Ë2œFêJ‡÷¤%tV >õt5j7¤DóZ¢Ö”Ôòw4)Àer ]΄‡VõMÚúH ¾äAÎ7üXˆÂVanXÄ;j+4&a¾Aþgºc?Ê«„¿V¡õ¥¬g_Ær8ršåQ±<Èö×C)ƒ˜pÂ%+$4–Q¶- ÓÀñIÅáÐÚf…‚\rc½áõgJs½<ï°‡~¹µòžÞ[%‘ÌÁééVL} ƒÁrE^NÏD7áÈŒiMÝ“;â6Ò‘@3Ѓñi” ½§œÿ^Z¯h:KŸIÚ Z'Q—ûÜHåà‘/÷i©'áÈ “¶Œ„—Óœæ}Ò³Ôa¦Në.=_Z ¨m"P ,¬²©°«Cn$†Ô±ÐbYÓÓg'\Û#ÈnŒ‚½P~öÒRÅúVÃãtóè d áÞ44m«éi*0(À]Ad,é‹­n–¡Âs4"ØËY¡aí^#Ý  `×Ñ‹Ef@´—F‚$‡AY›³ {<Õhu×z€YDšåÔ–Ô]ècJyËØkýAl=Éé–ƒã'P“.ýI©P˜±HÔŠvWI’¦ |½ô=–X8¹T#™œŸP2Nc¦æÆQèZ6` ·Y {æO^£“¨œñ‘›\:Ë ]A*[¦!#œ~Ñ-VÒ&7µZRX;h@ÖëªABâ=9õ$P<¸Ühð”lSÐHïWºëáïÞ“»ËÉØÐ$[ Áªæ–~‹ÂJÚe ¡G%~—qÐ@ì-m,mƒÂ‡’&·eåˆlE9íLÓ˜îgq, ¨%¦ï®ð%™îtê‹¡Ž¤•t¨•MîÐ0Ž îtΙ#½å¤èÔGw¥…IV…L´ï:.ðÓ ´r–g$ë^'“-Ç«‰‰¼¥Uœ' ¶Ršº‹ÀaÒpÈ­y¶Æ£ufÙÙQ™Ì`G;ª>²Ž…¼ìÔåE$6pLC-k‘M—¶6'p¡›û°Bâ¢V–ÓYÑk'æØ_ê,¡øžÓ5šÑP]n£DPjµHýM?ÖvX4kè"‰R“lι¨<ˆýå)âTÉ·«„#¹iœÃÂJ_ ¶Ü *Á m''£­§£ BÛSªØAŽ-¢¦Ê^ž‘´‰´AZÔq!L#(86òÄkEœ R8í݈Sœælz‡Jñ] ; §ÉtúÍ\ ÍÚè²RQ©UÓlÑ¥šûš£˜Zˆ[@ÞŸÙÑŽ0§à¥Jh«”À–¯y¯«BO×rle¡-zÃìB'žiKD¤Ô”M¥ÓhÊI“~j{ýФiB^iAG…ë "he´4A¤ÁÑß2Õ>•þ¶êX+Y;éì¼òÔZrÎÑf‘mYW'¤YhiÙ X’²ŽYnŠ«©{o\Óª…Í$ŸAMÈ!éRÒi\ÛjnHU“G[ë šx¿„ÛA<2q©dºµV+”ÝêŠë­äÃÊÉ{§‡Fƒj œK¶CJKM8$I ìPtùÖÖ­r8Zdf$)Bo´·â@¨d/¤&“¾“ÿÖQä h”;!RÀÄÐÆ–¾Â)ÈØ«eÇbGù¬”CWZÙ' ÌÑ=v÷.™mBâL&`&+$óÕfI´K §•“ Žc©6ªûKŠ®G”<%°çGhð¦Êhª«QÖ[ÐHçP:Ú>ég„£@(@[¾®`>Ÿ’f©Uiqè62]¸'<¶žYžk¡Ms¢$»Bò$'"(ŨèiÖWœ@ EdBq4nˆýKë´µ3–piø°c9ÉuÚ”DgµQèÁÍ-@*ÏEvÑz³C!¹qrD9zèˆ:Ã]. †@‹Ð%ÅqÇùª»êáSÎc éê”Ñ‹´H]¥-“ÈZÑ3¸Ðæ—©£sËÐ3ë ÍRJ½ÔÞ@8/“4GZOè„£ ËS¥ƒXB¶Í?ó†¾/%´yDæ{B`Q’ Y]SKã§òDÝ(¥_4½+‚‘9¬ìÚ2¨G)6 &‡ˆ¥<¹µyGBgÛöZ^ADG49¹ZiVë) Ôhë·MÓFIQMÓ2²-!Ò‚XÃu!¹TJD:11ô­÷²5=lƒÙ G­Ð†ÕÒ d”I¹yÅA¶0’4sý½nD^1‰JšÆºÎHàþnà,½Mi9 1{” —Èܦdþ´£œ¼nªÈ(ÈKÂqÒ4æ‘5”§!lWBiÃyH‘յŧ),–K[Fiý˜È.°½ú^¯Tlƒ4POMiÃÖc«­±T=-^e —‰åF÷呆Á8< ¤5†&f4ÿ“¢O`EO%xzôò²Sjçå0H¶¡%”Å š4tFÒÐK*ˆ…[ã¸i`ZÌ!„KjáðŠ6,ôÞ¤ž©-§]Ôã!ÚE+š)H¢<_Dô,‹iæ0âýÁ_‘òÝ‚èp?b§mB1Y×q…I­´ ô/¡XWº¦%I˜$¤”N CN~ üªQ›¿È…uДeô¹€ ö”1‡¸O®]_qKÕnÉ ÈѲüpZ§K÷y꤈ä 49]V%ui­íˆ][F3QÛ_FSó^PEÙK€…üWèIØWNrHlFÛ-’þªè Úvt–G\êÑŠ@S”ȤœCjºÁé)¥€¤2‡—[ÃwO/Á ¹IOúA.×]p>¢±„þìɈ¬y¤æM޵4ìètOÊý9¡Ï%N¥P¦°K6¶–"Ag̲!`ŠJiš˜nWt<*cë“åRªAúGôDÐ6ç=¢\0^jÊ75L„J¥a<@‘æK¥Xå®Ç®w-lTuœ.ƒêR8Z.|ϹC¢JEJÕÐË©:•‰!Þ «$8K—ˆÒL¦I‹‚åiæÒ~@¦6§ ÔžF| 4 xA³æ¤ïµiè9ö>*´j~ršDѹx¤?eÖ[ûÖZ¦ÂRÿ9@€[“íJs/¨Õ¥Ú\¸§1FìsFp –’mhÿ5ȺKBY¤¡‚ÞUˆ9c‘!€>îˆNde?$šfÍGE·!°N[%]4ÆQ›µ–ÕŽê{m÷Ú%´½Ö¥?¶LQJo QXF"މ³.ÐÐ À:'Ï5á<ƒ:ì$«Ii”¿0À4!àÁ‡æð†5q&ÓÐÑÛ¯"°^¤±˜ŒPêÈy£³hÓ9ºdµBpQ {Œ,N^æ=“ÎÜÔÆ[ÛTü÷¾¤#íò8ððd÷p¬ -†DÛIrr¸nhØTð;´Â´æîÚ•Pª!×RwìHæi>àB¤ |€Ñ”uo¥M 2ì 9­äBàO8”öÁ® ”Žõ€&/¡{Þ8Àò*aO%ÄyŠº$=CZ¦§/ò0f5MèhËUª$‹ëè.Ñʼ5<íb ïI‘ Ž ;9‰Ò¨2æ”y`¤3jÞ‡ÑZIó¤£SYFë„æ·Zr3%p„}J\&ŒÆªtÊìО¥=e[Ó­ÏHåµ8æ]EÏHm|BŒr„ct$^Èzd”…mq©»·5"ÂæFNrµcz„©&W››sçο*a[A€óA^%é»$(è) §å€Öµ|/ˆrZ°BÚxô¢84š 5B6µç|•š¥°cÓÊ@d†-9iî3ºäB(t­iÙ¾ ÂiÚ±‘vÀH‡ò”Θu¬e¤s4QAì’¬¨‰€Ê½Ã-—- ;N…LäP:Á0 ‘,²÷è¥)è•çÄâäÑ ÍÔô=û–IJá`ÓŒƒ/PîÒ0h¤•Ëj¤¨‰lÃFòCƒ>ÊR)”Û¿J–qL7Óš4š•ô¦9—3Öä2àj÷É5²:$yÏÈuÐ¥¥D n ýðPÑ|1£³±B+×7gJAFY®rFœÆ¢ÃiïÀNÔÅO„‡®¤ „fQ­Khšº¢39I9°VHyi FxIªÇå$ÍCª'/!¯µŒé]ІêGK4TqÊ%å¬DØ.‘Ík2ÒÀ83P?úò(+ªg½;°1„áÈØ¥ýGº:­Œ‰éÒEFâF'mNâÈSïêA³E£;ðV´D÷£\6‰>22c‚ÌÈ—ò ÍOf,dßÐ¥GMiŽžZ>Ü~¥„&×^ŠÙÎÜÒ¡Ó†å`@Z8NI´¯\´Rô’ù¨4‰ÆÙàä<Ť™Câ }Lì’>·Âl¡A’ž®pd¼s¢IšD°Yé$']¸šÒO4Åëò õJk$¹ž5t„ÒsT~ôu–Òå¼äàB¨ ?­Ç8+WQ.½Zëò1"‚€WúOÈ<¯"hY±ŠLNäfÚ2³ vMTÁÉùLŒ z›¼Ç ־ї‡$8­áW%‘j„ïF/ÏI±-s§=*(my}3ÐU\Æ’¤QÖ,«`Ô:{ÔFD\0_Ö¬¦­ËkŽäÏ6’6¡¦”d¿±à 2B±¤å(°<¤YSQ ^Ê~SA5æ‘fÞByÜãHR³LiFÛè2¥'I±%Ú/u [O¥¯çk@Ö@#Á:šJVºæR Xƒ³—¶š.¢U_)Œ4ä­Å_ï Ôõ¥”§„´Q©F+þãC´,–ìæ9ŸR% ~þGÐÎÉ6Ò­>Jåé₺vö"¸!(×ј “š—‚•ç@‰mKþä}Z2mà—ao¨ÉÈ G Ï•rw:[S¢'ÒúÃòMŽ:jÎ¥ƒ.±CÔZC»u]GÊ+d3å)qלH÷Ú T‰Òª<~¬h·­´òiåQËäS<=VýYù-8ÉG«8:‡% @•ç1Ù%àV×iÌA[bINX’›“ƒÑ2¤§*ÅL2òZKzR”˜FX©²Sz;¢'à˜‘ÝÝHÿÊc‘ni Òp„ÚÑTpRЇÖ}–©ÖŽ”U6ÒüR£Df@PWè²Z¢A +VEefÄÓÔÓDR¶£‰('ÕsÊâP&Ejf9úÉp4' ºÀâ³1!â*ø,·~Î"GLzY(ª¡â$¶æ¦2Lòc}MpŸ % §p9•†BÀxí)äv= ‰ÆS)¤_!äV~ĪЩÀU2ÁZvkÓut–j ”}è‡Á:ËìÊQk Êî4õØþz¬ êÕFÁoDåBGÔqrSð—IôÆÅçºÜÓK[à…öW凞$‘ÝÑ7ëšÖfZ;D ¸Sp Ž ’xz=ôq*ÍÛ“: ^ä·uåð\2úw‚>4dŽ}¥‹Éfµ+¤ÜIÛçTóÜUV7F³õ ÀÛÆ‚û(7Ú,CÓN# cÍŸ´ñí˜^ò-§M²5)ÔòÍ;3CWŒ¥Ó£“º—E] SuP¼fÄùc9Z5 “†‰5Ü… ¶0Ç k+}ÐR¼TÁ)3Ù)¤%õ¢m—6ä°ÊУ—£3‰sjËœS¥Ž:ÉTºƒRR•©f12Röª4À>Tæ¼"[šƒ[‚¿2ÑzÈ´`¹:'ÏZÊŸlz}2Ke&©v—¤NÉŽR.!d¡õj*© qŠ>FIãJ ed)åÆDÆð‡PÏ'¡+ÈP‘Œ¥÷{z[ ÌËe!±73ÂwhJó2ÎI]ç¬b{¡Â.šAÁ]ù5ÐFk#KTj=äºS \‘ ÓWòÕ܈Aêt}é)ÁN8±&ÑXØ@àâGØgKRCõ„BÉiªí%ß”<6 ÝIÙç6KÍ"¥ùëi¢ZÀèI)Ä(«˹€d éG «/ žžå‚8ÐsøÎFQœ†Á¶†&'¯”ÃU¸_ɲ•ÓÙtøËèÊ9Œ-E-adŽÄ–mæ-®`UFY-W›2’2àúHHf¡4Ý5rõ†´…¤e$7B K Œ&ÉrL–@1Ê= sÂa üž¨®JΙóH>SMf@f¥eó’IÁUØœ6ƒa¾™±#Ñk”ÙÕ6’K.à"/@Îwezm5˜p…N% TE ¾QÌNë…ŠÓSÜãâ~Ù]Rvb¡AGY „ÀšY­R/s™’ŒÑ„<.§)Œ|^èr¡vÌ;ýÅ5q •¬«lÑãæù’ЃœÎ2äÐh Co9ø«c lõpRØ4‘bFÒÎ8 NI$ c#Y¢­`ôÈ)Ò„;•DP3ǹᘘðÞØ;Í~æëHÝèà÷•ú”qa@§ér™U¦QŽ$eP%RdÔ7¥8U–ɘu]NP[^š@rBÙLIiä´ÔH¨,—×Â}%ÝË5Ú§N~¤L?'9$lÀ¨+wüšª^o&‡¼ê„•<ÔH…ßS¥#A)ëSA¨ $–’eTZTJ³JÒÜ„ 8UãrZ ¼&±‹6ïr<ί9ͬkšŠ¤uÖä¢QüªI…Z€äÌœs€Qv…ž!ÌPÖŒNj¸¢ÍB©#ߺ ª.=pà*YÎÉNr ÊÎ8Ä%šrXZ7T-å#—µf²ÜqÛ÷Ø !ÌRmyR‹´Ï„th&Ò‘ÀVŽLEɯä8³Æ>TÄéY͈ÚFAšJŸŠc€wP.eàδMGO2;ïi$4Æ “Á­ N—”JŸc×à*2*$Gê]Èî’ãIk²‚Ã-òžˆâr@W0bëç–RÒX3¯ç5èÒ u#ýPà ‰3—vƒ,œ|Õ†Sd++“¢ß0ˆ7t¾Î! ÐÄæ˜( ´áŽ—‘­;‡»Oñw…—AQC /«N9Ù^Ž„Í„Åœ÷ÌFrºG*¼k,!?jWÅ FmTûh`´ž¢ ILkyZIÀF!„^VÌH ¼ö¼À9iq$Ò•‰SØÞZG§)‘Ã!`1’€ª9kdó 7Š`Ñ’½T•BÓ~Ρ¬—èDhKrôå’³ŒJ3¥bJ©E)ÆRHÕçꙄ¬¶.ÒcJˆ*R­r¶RcˆM‚[Aô"Oe=‚ȺL“d»2¤ÚÀ$ÈÍ^朒EDy‰Üÿör¡“!&¹PQƒ½6rhÏ1‡l÷hbœ!ÕìrÂ4ÐÞç…uJ Ÿ‘ðV@š–4½N{¹²ia)Mõ{2‘±§zZî~Ý3ÌëZš‘âÔ(2Þ J)ÊÙ Ú}ƒœ<Ð’0»`iÒ;‰f™4Pº ‡,î­íé Õ:5 ådq²ºÃÁ“'fUó21Ñp—pœß1Ô,–Y\ȘÈhì!Ä?Fá(·J^sgÄù#(\Ï¥©#1Õ¶ÖDQ‘„¹'ÝM‚ [Ð —“æly['ôÁ¢,GÞy¹†X¬W.Aö“ã0ÙxnÁ…‘F½t|Y#'´Ëãƒ6ŠðNÂ#äR9(ÉHâ{Îá]]–‰p›¬9bÁ@8ÈõÓœh 1é|£±‹µï{ bF«’Ä=¢³\[/ÚdâˤUä4ÔÒk³”zú¡%;­‘â¨9«"GÂ4=]É,s }ë)`´Ésòo2¼xéÚÇÊÚ|*¥¥Y¤­Mâ¨fò‡Ä ï3J¶‡DhªfNË BaO=i&%'K¡©ÄX¦”­'‘´”–^8\^¨`¤êˆô&¸ÿˆ­ÇrþÒWã’ 7|·N“¨Ñi6r³3à’T~û[ÄÙ}0òkóôSô´¾KTakËtiœ.]•DºŽk™T"ÏB–¤ÛtEØŒÁÌLÀ¦•c%Å »G¦ÙÑãTš v§!§Â·”ò!š¦=¡W$¨Â]% §Dzzé{-¥lgïèµT‘ž)oA ƒB‘$yý5YŸº Ù¿R•ZDŽ›‰¶ûr`£8âu “Ù“L&µI¥yK'Ž–¤ÕJ¿ÁÙÒž7JFBT¥zÝInô™T5qÓHÿS£)ñuö¹Ôn€h`ŒŒN®je¬¤u%ù¶ŽNeµmù+­|Ò†ú—f„¤”³–A\ØÀeFÂ2lxœPÐÛ ™Ë¥t%çB ÙS¤ŽteZ ú”+Èø u·Í)™M´Ã9U‚)9wt®''²¦)£¶š¬šÌ‰`¢´=uJrþ ð3Tu:è‹òsZ¼Kƒ9)*)ùâ±Fƒ ‚%òJY[ú7ÉôSªRs*@)UB3½àEZ9zèéêé Ñy›LHIÇÒfÈrá¡]J½u#©d,vWpê Ý¨} >A\"•"½Ö‰¡#zVJ hÖ$ 1zÁþ8ªÈkkZ¸@“ÂU´Ñ•%Ž ²îÑøÁ¥_$Pòh(éÉFëT$ÄÍ_RÀFwª(ïzbMòzÖ½–U¥N·£¢µ®ë™“²O_ë— ƒ§ ÞIáŒ$ôCb–| ø€°ép<_È×’áieBÉèiœ –ìTÂupÑP ¼Ñ¬H$S»Ìè~šâë¡4™ãÒñ”1¼’P…e”æYÍÁ8¬ÕPb“!º .K!›ÕÉÐâ+uÂüzÆLÞp‚¥Rf€£‰ÛÊ&‚ª¤èéµ–kêg²NïÁYi_(bŠKàl–à¶&F”þ'‘`äШÁy€4Í@™ÆÓȺȜ Řƒe é£à7Ó² ê\DZëh&×ÐÍNW´Çõ †¬¶«Œ•“ÔVqG‚ ÍØäfIßëû‘æS^¢\c™‚Ž5ò_P •ãiçÒ¶&éB•ð,ì©À¬T”\ÃQ ¦—v¯2L ´ZQéí‘&~™1†8¹jÐöÇäÖœq¤Xn;úí­.f”1”véé€Ö¤C·ü&=–²Ñ€¤1ÚKK¶ŒÈ \¾|UQ-GOA«YSÊØ“ØMë>×ü;­uƒeÏZ@C~Ïȱ¶Ì C1 T‚EȰð.ÝÐÁ^YE'ìî ^T:€r4¡÷;j4*Úô<ƒñöAí i3©ûºD±ÔÐ¥k^©í¯¼’ñ"=³‡#IsÑSÕÔrÔ!I§^=iÛD& á!¡!s08K¡ÒY–{„ä˜2a-»%'‹ÎÕð@¤ §*i>—Q ÿLZYú›FºdaÊÊWÄÈ -‰WÈi‘tæÐKQ· i#[˜’»Q÷—™¤4lލF¥a•Ãc#'‘tY˜jBcÒ…bö4§ˆ '@:( —÷MlØ×Xc:G NT#a9nèd{ÉäMt÷VØ ƒÖ£GgNc‡†v¬RŸ¬Þ¤ePöä4|O…Ôõz® JSÚƒC¢{&´ŽîéRQ“"•½W,|UÓÕTÒÉ*Zahmáô£;ýÀaÀH+Œ­Å@ïFÚD¨kw•¥€u °M ª8ÚR°)a+öäýf}êzònédŸPræÌo©ÃH‡V9J]ÓÑs$PW×(•‘׫]äp[½ ó èŽõ,ú"•¸iJ–¬Ó¹V¬È4€|R¥á9©.IÜ1Ú±ÆÍB@‘,ÁR ]ŠOhŸŒ¾Þ}ÚŠÈÚ˫ɨ厤¶éJˆmdßJ4½ö­æ‡’úÊZ¶n9Í—d®q-ܱ’§µeþÊÎK¾åj4ò÷{Xá»ÈëÈj*ïG &iµ`‹0½ N˧‚¦°ÿC`†%Nµ£ :ÑÛzœ˜†°ÛaÄHÛM©hDKzBŸ™zdt½Œ@I„?åÜ@ØÃÞÇ_$ó“Ktu3ù—À}YµVNsÜi›u6§ÚZúЦ"øÔÚV²Ñ¸¯BQËÉ21¥“ Å™ÕaÊci"Yú0<€Á{Y>n« Öö-qÖ©ñ-\Ãý›“ù%T‘Ë jwÓ¥BóJ®u\AÍ”œõ½V‹Pܰ jGµrÉ‚ü¾#´ŒÏ´±Æ–½-; gÔjA7Ö"§mÝŒdäÁ—¹Bœ‘8´4îi‰ø)*"QäåG¤ ëÙÈkPŽ<ü8íp} LOO+‘24É A9c6Ê) e‡û¡éeM"z©ú‚É2Ö.zZT‘”/‰/„Nv´™åÎG–ÚEmåw£Ùw•Åv‚ç$Â"ØÕ Ôü ÞÚY!¥È1Õ9•–eZgÆLK97N¬¤ké©AŒþR0Iw1XrŸ%|´I¡­¼•1$Ô¤ñÈqn-åtu¥D\ë‘ £P–\I²EÇÊân5Ædàâ(hðUs¢©Ì-fΑ¢ã\ŒóI© ¦„f䯯§[‚'𰆼{ÌT ©jƒ§Lâ‰,¤¦zèà„‘c'ˆ%šJËýéål–$Á– u ‹GȾ l /W¦äkäˆÉ’Ò¯IŒ&I=GB‘QÕk;Dä¤KésžB–=ùo#4nÚº4ŽrZßTæ^7Ä/fÿI±5¼ “Û)‘¦ˆvF[D#/kÊRCì Ž‡Ó‡Fl1‡ RÝEE×1TæÞ dP üVp¯É™*¡D’–â<ߥ…Ï’’Ë%íÈ'µJEH¹3e×!CÉNÒÇiûÚ'øõî•üûõ?õs+Ú™ŸðÑÊáeºé ­Šðÿ›ïþxöÖýúúF×]}=¬„S¿MÓU}û§Wyõ>–“mhËÕÕ±>òa§õ·¥€â·e±J¾-bý‘4ÔÔ+1M7cý®ªT—¨Vq\¿ÏiüÙýC÷».Žœ]åPW‰¾MóUÌÉüÓò¿dù‚Ëwßæ¿ÍêÍÛ› ¹=_ÙwËŒ§MËUQ¼Ï´ÆúûßWþyìy“j•f«âÛDømZñÍŠfªY²ªK}¹Ô㾒ľú›8òß]k*Òoõ}±^%ù·EºŠK{A#Ð,×új±øê?Ì_=¶ Ê2Ýiúcßnß;w~šÿ4žð­äö•÷¼4ßßí¿–ÿ@õíÎÝ =Y/gå÷Ó£èÑ5švfBÂRäšýðQääwÿ¯}Ô}=žj²oóZ3µªb]ºH¦»þ·¼XéÏ:]¥1ÒºÄο«ûócdf«ú[•VZöüÛ2ÒûòËïúháô•ù?IG¼’@¤ ÷ˆÄC¨ß5`ˆí?ʼn♆˜s+MFH¤ßæ)½o5©.”äü¢‰eDúDV¹8åéíUÆÎóéÍ~Äm³œ­W.æc±o¾×ÝL¢r@{Mëv Uw®¹OÅ ÚòIÉÝiOAë^ÉŸfŸûS£±j«²©måˆ_‘©ïìþ‡´¦Ë…Ò,„5ýÁJZ!Aè’¹Ý&g£%/Äš°”!¥ö«^Ì´<öY2ûr¶„†d£¡s­–=òË“|[—zXÁJVJ_œþs\Ä-ÕLXêÜfK7ô2ÃóIŒ -ëJÏ¡ÿ¼ iJô§&3±WÛ›þuýÌ× gÚ'™}½oÒ3>ýÍ‘]„uÏKF¸Q RCÒ#›êŒvÆRú°]¯™$Äßêz‰-M&>YÝõ«ø“Í“ØcØ‹ŒÉÅ5òÀ V«âÊnY,Vì›iÁ>šZc:¾ÍlU*¤Å?¶mà”™“/³÷ÂÀÕŽ8^زg&üšÐ(üg—Ó È4R®?¸ž®ïR»tø³bkåL±}×Ë[}SûÑ^BÛü­¾…¾.™dÍľ7‘ÈM /¾ÚþSíÇøIØ ¶'ýßÓÉ··_tþÇÔ¿Wò§Y¾TRgAÈþÅë(ûž¿T¶òÆÁæT£Ô R^a?z-`Ê!gÖH¶l¦Ô’~-‘•¢ +5v´^yk{)£ãµ>9-6ß0Rûíü—`ÉuÇK³D¬¶îÅžÑÒ.ç›éi®ôÁêÛ:2)µ›¥úïanK)A–·¬¸HÌÿ6Ö´¼ÏucTzú>+Lëoöâµ \ÅÆ®yœÒ¬O’ÂË• \U¹¤ú¶¬³ÍR&?ž®:K —¥3´Ÿß^]ž_žèçÜó»õÍçOúe\Ü|¾Zÿjõ¾Y__ž¶îì>GŸÎ¶ÒôÅß|Z_ýîìé+™ûúz}óéàd}´þãÙázõãéújíþ´útùiõŸþÓêëßê->»’×ø³äŸWÿ忬¶¿ó¯úü×™ÿîÊW¿þëêìXï¯Ï¯×á ¦[»ÍSMÏÁ~µÒìÀ»x­>\Ò‰]b%ßau°úµ½sýi}xv€ú«V¿>?ÿIŽGÌ?˺è•ÏW?IEÔüð³]Hð×W?ž­~­±‡oNÒ_~þ¸¾¸ùÕêúÿOMñåûO×îÿ×o÷UstùaýUò>Z ¿ýÝÈúÒïÏnÎ5ÔëÃË›ÃSûüÿ<ÔÊ\Ù·~Ñ]iA.¯~µú§?¬þ°¾ºf9¤š¢Õê›õµJ¿N£¯eÊW_­V~^ý?—§«öêàè|ý3ã¹ü|qtvqÒ^þô+{0ž‰ÇÑ“„9ºÖúq4ˆøúW~*»Ë¼t½%.[Së~±ºZ\ü°¾Z]^éá5Æ7k÷5¿Û«ëƒ?®­A¹>þáóÙù‘æüfýñÓåÕæ’våz(ýè’È~ ò¥OŸ_þ¨+Ÿ¯oV‡—Wë+7=ÄÍÕÁÅõ97ÒÇ®‘¨ËãÕÙGlõF3ô Éx·b½¿.“³‹ÃS]àòêèú­Keõ,/EZ½'Q+Òܜە4ʳ‹õê—¶v¹_"vg7«³ë‹_Þ„÷%j«ÕêÿÔÍåÉÕÁÏ¿\\­~ùq}u²þtuyxýKÝðãzu|uùqõÓG ‹¹âŸ?ž¬~ÒW>¼u_on¤}µÒ.W?®W?\\þ¸:øpùùfk4ÿ·[…-ñ¯«Í?¿XýÌBòòåññêæTÀLþRË£Ý̈ùÚî?¿X]\þj5=ôå…ö‘þùzñX|iž•ƒ‹Õ7ÿµýê¿üfuüùÂÍùë|}uòáèàæ`µþIm.–¿¼¦õ\‹ð‰‡ŸùeøÎô•óõÅÉÍé*]ýqºÞŧ³ŸÎ¯—[Üèìâè'íá­—êõ*|ëúæJ"? ãü¾º¹\^Jð˜9ŸÏoÂW%Ó÷âÕõç«?¹ivüEÃüÒ4èiáƒëáÐÕÇÏçþ©¿±éÞÿ 難#û†`Èüÿzµ^_ÜùdþN¼øN{þy=…ð¿Ìó8-ïoVÿyõ>ÿ¯«ÿ¸zŸÆßðW\µó—´,óÏóÌN§v½å,ÿëêøòÊ-æÆùWù¼ßÞþ¦ÿýæìüìæçÛ`}$[Â÷V Q¿ÔÞD§½_øýéÙõâÓ7?¬¯W7?^n^»žÄ:|CzåðÛq¶á®yë£MË| mpqr¾Þ|ù½Ø×›½)©6¡sôùSÃðBºú*^IÝo>~ÚúØæeáÑåçw¿¯™œ~ºbSþñ§[—ØýN´”<­”n}õǃÛC&X~o÷£»ë³Ô9ÛÓ€öà?ÅÒë—RÛ¿<>¹]¥¿ô«vqt>ý§…–ø×ÕfnÃÛvƒÝ¬Ìˆc¿—:H¦åíï$µy óîʘ=k7ûxðI*S‚gÃ.·ç2Kqp´Ò:n}øðóÕ• Øñ™ÄÁ¾'[ztºþÉ×EkêÀV>P´:,Kþ"Ú¯ùwuF„ÇYy”«ããƒX>Äññ‡AÎããuqP®ÜññQTêWþY¹Í42ªëuPÁ+-ÈgIª„íq˜=_3B¿.럄(n®Mka;ùãêT³¨W>è+?i1.üp_o}åõõ‡ÏÙêl3E~ƒk’³í—?œ_j+ wg[SÊèYOÆÀhµ¯ü'müÌè;ÛáádVè,33ËiƒÙz`¦ÇËâ‡C”¯ç#Óp…Þ“‘^I2[tvóËk æâòâ««Ï~P ]¾ø–´ù$«’ ËmäòüòòDÊ(arµB°–Z“I5á ×õÏ‘š¢NùyÚŽáÙw`±À a–Ëë3CÛgÿ!å÷壭ÂìÛLùk‡[ßV K=V7ZLgifÎ_c9<¿Y]˜imK¶i˜íÝ™~êtÞ5™›¹|ÁL.–ýO™¦0A[3ÍócfÏõÖäåezlÖ[ì½ôäÂι¥êurL*«¿ù›¿‘j;²ËcÙüÎù–OðïW|Ì>üÏ|Tò‰)õ[ß-÷»s‘´“è¬[?%üç»ÓO)?¹Íwþô¨›¸ï÷ȺÝ!>w„î‘óðàÝC“øØºg®Ô­ŸÜS—ù®ŸÜS—ùîÉ~¡ N?¹— â­É†‘ß¿§«ý?%ûßåtØîos!~Ìh<½hä9}üMÜ|ôÝîŸ;Bwÿ<<~„î¡I|ìÝÓVêîŸÜS—ù®º§.óC“ýlAœFè^*ˆ»“ý¼ÁÙO‰ýÄÐÂ0]R¦!e·Æß¹)ïܳwÉ4B·;ÄçŽÐ½t—Ü% ÉsGè^ºK–“ý¤e¾k„î©Ë|×O8нT«ÝÉváf/6}îË`°mð¿Ä²»/ƒÁü^ùlxzæÝ—Á`~²¿°ø2l?R}ÖÝ—Á`›ÉŽî‡Ñ¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«ÏòïÓgIv?MçP~^¼g¿x˜Ï£È=€u‹ÿ“mÄÇ\xë'÷Ò‘L¯¹—Žd#R/É4÷Ò‘L?¹—Ždˆ{éH¦Ï»—Žä1“û;ùëoìÀò§üökº«¿Ô¹YûÉm~ô?Uüö¤KûŸÜ—³_`4۞à FÃOîKŒÆFô%FÃOîKŒf/>{4üäž1šè kd?ùËçÕž¹­!ùM—ìÙ$_fͼF/Í£Öè1£±5ú£1íó%FãµÏÍFû¼p4 Æ=g4îi-›m `ÐËm™Š Ø<ÃRº—Ždzͽt$;ˆæù#™â^:’éóî¥#™â¾ zX˜ýçŽä‘“ý§Ó¿Æé_ãô¯qú×8ýkœþ5Nÿ§Ó¿Æé_ãô¯¹E¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïò׿³ìŸŒMnËî»ÓF΃e+|FÅs.õ¬ù„ql†á^6Ž}#zÖ8ö‰Ô³Æ±ù®{Ù8–#zÑ86ßu/Ç2ssÿÜ2·Êïx·´ß2þöÈó9¹õ“{îv/çž;‚ÝŸÜsG°;÷ÜìÀ=wûíY#Ø€{îÂO;õté)Â4Tw?Ô“À=w»ï¹—Šàô]÷ÜìÀ½T÷o×'Œà¡íºü©°K?rúÝó¥h z<ÃÀ…K½ìÎó/ö\«½g$Ó@ÜKGò c»$wù϶˜î¥#Ù‚÷_¬ˆ£"$|Þq3÷˜»=æfîM¾¢É-4Yĉ>ž<ïÂî©ý焇ÑÚ¶Ñ/ï¾ ðyŠ|àÝ‹€Ï£,àÑç¾GóúÊKÏ£/êþÚð\œ™ð?óbî9¸ä˸w#÷%ü“ǹ„fîŽI~òÅÜãÀV6«›åO“ZÚÿîÎOÓÉ@Š*n}Ècȸ²ÇºçîÎ{=pƒÝŸÜSá®ÇwúÊ#Fç^2Á/{´;Fçóüþµ86¥•ß=¢®—¿¥»÷¡¢ûäã‰Sʲ&vè¶gÄGö´ºèΈî¾èC£v/“ÓÍk÷HìÓFç^&§O~´‡Gç·äÁcý tóW1G_ÃE.൭—È?í_(X´7ö"Ìô = ¸Þ2Âû ÖùϘýbÎh%>Ü )‚ì<ê‚î¹Ñ¥—D™ï…=‘(ó—^[õ/3Ù_0œÆ:¾ETßóïÛ?.ôÐ(ÝÓŽqî~D÷%ÂDS̉¥-^:Ýîùc º)¿'»í9Óïîœê/3~ 3qÑ#¾XH»ÞñY÷%Î뛯úHi}Ñ8¶H膗O·{Þ¶Z,Ó_îÈöKà¨t‰£¥IÃÉG©ÿo!,÷ò#ɧ>"¨öìÈ\°Qêä/ˆìb¿ø™ëXɰž€@ôé=`~ òY‡z/¯.Ú3F`êùÈ÷B˜åî¸H¾úaÿÔîÃø/8/ý3€¬$€¬§ž~úd±K[½Üú»/“C³×>ºÙ•ϲ‚ó­ÝË è&Æà^~ûøó³[ ëÏP’€äÿ2Êæxí#.éÌâǶ.ÒmÚQe€ÂOÌ t_&9õ®*‘gÌ—û2É©¾Hh‚N/Z9÷Ò‘lW%Ñ ëž›ÉùçYµ?C5MŠf17—?Ëà¾í&i?"‰Þ±ª0$Eô¨Ñ¹/QIó˜$úç =¿Ög+‰ÞrížS)òòª£}e9aåZx¤D¹/³fÛlfÛoÿyÊb²PP˜'S.Tt9‹ÿ=·ØWD–Ùå*B>‹}óÀøÜ—)йŽž$fîËÅì–%^´ž³’îeãxŒjXŽíå¾ÄŠ=P^õg«o)LAhÕ8ª«<ül%ÜöQÂ?»gÚ9Ñc±Ñ€ÿê k[î.ÝyÆÝbf’`TSMnöT˜ã¾Ìx–Ðx÷.ÌÉLa•á§',ÿÑîO>dŸyõødÑJf)~ÂÊL™< /º/³ žVxö—ºiz«*™cÔËiñtRîã%hJï.§1ÛkÉÓ˜  ú<ìË{¹á¶Òà¥`ŽïÓ+…ÃT&OÁ“~^¾žüó@¢—"oWeO×ëÊ„Íþ~ܺºçWÒoÎ=8é4â 7ÇóÖØƒöž]ëïž_Iÿð¼:8xX¼ô'=òì*ê©mÈ‹«¨C„ñèºçâ`3 ~/h78þ¨ˆ é%¿ž7>÷eü…½niؾ¶m« üMôF¿áð>x¸ÿ§*œ­ÆÏ¥mPýÑ‹—ŒÂ \åÿ¯Ò ´=µÀ>Þ æ67 `¥Z¾¶Èip/p…¬.ÒT;3»•†]-BoÑÓ×ÒíŸF»Wjé(ÕŒo Î.^LÍJ¡õ6Q’p±‡ÝF3{‹KX»èisæþ­½†P!ò¤ °Oäž´,¿aš¹šrÂÚ&ò@9؆¦O•Û`]Ó¹µéÛJYû;MæýžÃ =Š"öÇov♄¿?©­{m2ˆÙì`áŸ~rK ˜­AÈŽKC„d*º·s… a¯ ƒ¹DËðz½wd¾W‹åA&][W±ÁÔÆv0iû°öÏQ…M2ðâ¿Åö òæ ~.&bŸ3Q¬g‘¬`È©,“ãQ];î·Ûµãeê9‹èøËÔt'_+Ì-Ï‘_Buèþ¢!©y™Ùöœ§Î¸Ë+ Ó–ìñég“gd¶=÷¸Zn1Ž÷xˆ»2ÝÕÓ¸½™õþøÕ¾Ny‚n¾ö‡{|èg’/þ™iÈÃså³suô@ÀèfìiSÝu£z$É“ËÉ»ç‘Âüß{êwûrXͅݽõ]ûj™<8=fB~ìrÜþð—cXÿ PoÏ¥†­ÂßOá^Þ£“íÉ÷Z%ö›×Û[èbúòáνï‚6›ÚÏ;h¥÷«úûL¥›“œ¶ÓÎÌUïÇ!~Y·î»sˆz·Aº…CÜ_Ý Ú¶YÜúò)锟d#<¢f´¸{«é§Ù|fú×NAÎ4ËeºÝ³è»§C ìÜÑ»7Å+7cHöB¬G"÷øsÄ¿³Ýb;5¹ ¿íŸ¨ƒÊÜS®î6 ÛüÀ…÷!÷˜·Ÿo¹{máìÔ6øš"êüí Jß¾ë$?ûÆnY+÷–â¿tc¿ v¥f'\úTx7ÇÒÇÊÓF±mÔzäaJ(„‹ö^ôл,ÌGPÛyKé]Ç?É–“[>âpp;ÃñÀÝ‹]¶Àä½3W¸ics=L¾¨Ê_¤SI6WmøžZ [ÎÍ =jUÄL·E,7åx+ïnoÏ™-Ì„/Zª¹‰}µUu‘îk3Ý;[$Ÿí+ظWrçí¾øÄ*÷àÒ—{rRf{o2X¾xÀ…W–àV1ñ_-ò½+Êæ…5 ©³ÛU…7î6lLhùP¢ûÃA0ŸÞQÎò•l9©Iû½¡ËåkÓW¶¾ æÆìù¾ôöØw[@ø}øa§ªxQ½TÙ¬¤('-pXüb±ç½µÊ½DoòœöVÛè²í¢òY’³'œÿÕ„-ïG\ibŸEÂß™›E»Úó½U1–84éİ |´Ú½°Ÿß¼znïÞJî9æd¹Ú2ûQº}ÁgMÖÓî¹ú@TØúöÌ›dŒ'fÍ»ûçaÎ,C:èæç9üá-Œ»{nB†ø2v´åªV>£ñÏR®ñoÚôÎûUÈ Bîfiß?–ŠäNÿqK–›vÈ#3zÔR>J¹=)÷¦ÚÚvš*7ÊðÛÞ[F–Ú™Í2™ÌHêž ÞØ‚J#s³}ya_¿í ø<Šƒ–(ü4‡1 †©€dëÑâ{øƒ^؆ïß¾eö$¹õ,ŠÒ]Õ­½”LI½Aȳ…êN‰žÉAãm*ÿLå,µÓíâýÜ3Ș¾ïvpÇ4ø½ã«|À8+±æÿѦåƒ!àà&WÅüÕbK²±Ê_ à¿²tÝÍ“æ³ðoq˽E3»·÷¯µKþ‚'ŽÍý5#ìíŸ΄(Ý¢¬¼ÊþMž^ÔêvðO²QI³¦³ÝóÐSj '…Ýš…}{çhý„šÜc‡IP¹-ðûè 7ø^ØÁtžt¯mîï—T錚/žï¿NºéÜáÀ…zˆG·°ZjjuInïÄØô Ô„úžG D÷à]ƒJ¶íp¿´.ž¹ ©ne}xéñï¸k¡o§ÏòH Ä–;~ »ÇOï¢oUEyƒwà{á¡,Êj¡@ ûíÏV©üE ¯_º©Nç9dYÈf¬‚x›®²_Ã4x¶´ôÉ\dŸã÷mñ²¸iüJ<¦q€ÑxmrPmP}uG»Ú|É£øƒðØ~ëÅ!Ö gÌâ2ÝÓ”áöÊ>Øæïq𪲉.¦å ˜xñ~$„R­yÕ–óÄG&bÆ/‚–½Z»PË=;ýô@šë€!V·àôÚ©{ó=à¹{žW¿[æq*©Ûõ½îr<0<¡ÏÉîc➥Ùǽ`§{\‚}?mƕܿù^êåwdS2èÊí§‡Oª‰OaãKü9x¶^mË\Ó`SÓJÏ¢{ ˯ ¾XÿMÕÆY{ù0½éåähç{»Ôl ‘ÜC³mA=›¯¿ž”L½©(µwîâF1X࿘OÒa3ø(6’jãËyþ™dî °ßÚÅrAnSv$;ÏìQž»ÝsÂÅO)‘Íç*FÖ'³qÎm36ŨwVq†Yñúc³ô™=v²qÌ’°åk³bþCõ–œì–ênÕ“ºFÂãdA·Î72=˜lØ-f¢{°©wžå5 »kÿD˜Y~m³ãGuíyb&q÷’zWéòÞúÚÝÚµd{£,<`:Mvæd€d›eö¡Gßù.Is/©ìÍæÊ^^ÖÇíVŠ>ªNõÀ {~ÊøÉ…‰X–ØÂÉPÛ.˜VOaìî­Ý½å¨ÓŽ(gñ·½²g:ò©PÕ¤že1ümºÕ¿“Þ_•ÍÓpàÂsÖöåäñÙWª|kSÆÞ¤Ì«vWõc‹†ÝÖ$óJø5¹k|>S›0»°gùŸS°<}½ `Ùï‡2Heæ3ò‡‹5Ýid#Ìż¼ÎXK&ÝhÓp‡D¤ar4vg+Q û~¡·Æ²3YÛ%ÉIPùþ ¹}i_uqT‘}ÆmÉYò¨²n#pÙš€S}OéøÖO“…KöẄÒyDÅÞý²Ñ ^b÷ß&q/ùÝÅÔ'JÉg¢”b†ùV㌇è5¢ÃIóÍråÍ—wûsw›„å.þŽ-RÌx#¨^¦\ð¨âÛfxI;2‡6â—‘L¦w›{góÃí1ßÁ¨ï§—ÙðZ„5ªåÖÓôßÍ@³óZá³»“£Ø)2R<´ÑZ^j÷/‡æh¡ ç¯zä¸;Žâ>÷ä|‰`h «à‹Û3>3.æM @hBîI´›Ír0A9Ó²ž.jÆŒ[ÞÄC)¿É²zij7ŠŒ Õ3<{ÜCLa²ƒ…—SOVø®1ųÓRoöä»­Š}óö·|¬¥q/ߢ[Ž$¤éïÄå…ÃØSPµÑ%é<ÞIò3 ÷òxê—§z¹.}¸ø`“û¼0˜?ܘؓö……6±Ç呿P|ä‰ìDÍÛÉä y¼ûÐÐ}vf\™{¶ h9{?õtÒS¸êƒG—Ñ"LÓ^^>óYšëæC‚°Ù¦! ²UÖãæb—f!~¹È§IeiûÐËå³Â³> ìB°:Ú‰~ú ÌÙÛó]8Ó‹JÕ\ÒûíøÅ%Cd'¶}»…Üß÷›J£dÎyÙ¦Þ·O̬,LGP»¹.óÈ7«vNÊ9”0{D òoÕEwF`Óp¼|0/Ät¢0§†ßb>àß­5šÊùo%±»‹¤Ú"Dß ¯—¥bOŒ‰Î…1çâK"ÄtÎØÚMõKwÓÚB¦ÐNÙó}%úÉv2‰’ùX3׈‚L`w';64l)¦džû‚ƒÓþ©ƒh.ÿßBî˜x/‚› ÿâ? ²7^êöTý'wÒ dá0µô‡¿K6p÷ˆÐóòXê`>´ÚáãqÏ— Û‰Ç_Ïsâ¶Êým’™Õ6H‚ÛS ¾}ïÄì$|ÎýÝæŽ¦î4‚‰Œpßfû°Ìy½;ð¿î…ŒŽô.òR¼Ë­¼ô̓>Žx?ò «Z«x+93›uî˹-¼8ݽüÅ2»p+ÓvÚþ÷sc-ò²€SÊYçßFã°1üEI LÝSñP‰%ç Í•»Uqvå·ê·÷Tb¹[–n_=û7KFÕ¹:yïùí6ÀÄüû`¥{èÌ[ÕËr—E¡[Ä9·Ççò¹jXíºakÄB䩸Áòºt'¹·ÚOн}~[•n³C=‹º¿@bíÄáž”ÿ²!þNöðFŠÃ»«ð¢ýŒc[åfnÙGXûÜ•j‹@æN‘%Ýô­ræ*Ùæˆv{ý©|¢Ö˜”T(®(î½jji¿“r}{mò™Ò¸ØËY}kùƒo²¨ÒÞÔÌE‹¾å³¹¿†"²™Â&}ðbSI~}w‘” ¤e{σÞñÐËÝI¦ãMþ=·ÙÆÅ¾+vbt¤Å=œŠ^W¡±÷ír®4 ðY†ÂsKNûËç²–ä6¥N¨M^bŸl·ëó_EÇOGb»êáÓû车£Ø@ùŸî üAšƒ–É}âux‹bõNâ*#½»..¨Ìeml¶Ã‹¾ÕkÝ-ØAîêÍò0õj Áõ›# ÑgÖ§¹?+YÀÔ…ä͆þÌtæ\ÄÕ9êí {·`Ñ9|DùMø)¾1ºU»ïcâ¼m^wm™Û.™ b7•Ȧ¹çR?=µù¤ù÷Ðï‘»`ÞÁ bkHàÝ‚uìÁQm´ìòóÓˆv{{ÒÕø!Þ$[ÉÒ´Mz{ëc˜¿&êu#÷s´Ýƒýy½ã·ûÛŽâíŸò;ÞÕ\ÄÇ£{ø"aq² ã¾o¸[÷ ^{\‡B¹Ø´ÕDA¸¾ërnëÅé"^Éî½û?`¼“H¸óác¯—·FóÀ¸½oGw½qÿìo­ƒ?_Š™×£³K {z t7†r÷8¦)-¶nZ„9a¥ÖÞ™~HÀ¢íãæ°µì·Va‹Å<}¬Ð™®ôÇ*ºŸ=Ùîq åNgeÞ±6ÁqñXÖ•[ŸÓ‘ ËöÜqÙtßJÑ߬‰XnðÝíÞ\ÿíÆGóÞñ—¾5öépêãìêòÒfv.íž³^_®Móg)&ëǃ„»oänÙ*x•ÅÓLÁ]æè®)ß}¤ùvîI`þ¼Ç\&oM–íÞíÖÈï —Ý?ÉŽ;pëáÜóìêËÌj¹4*Ǭ>q÷›Õ'Œ`ŸY}Övàž;‚ݸçŽàQˆá9bàž;‚/ˆ-&Sì^*‚[eÏÁ-cüRÜÎ$|Ævà^*‚û·ëFðÐv}¶¸çŽ`:e³š\þ4©Óýïîü4ñ¡f!õ/zÄ÷ÞÀ=|¯ÇÎm½ø‚ѹÇ<ÿË퉣sO]—=Ú#Fç^";/{´;Fç^ ;ÑCbø„:ã^ÎîÙg¼{™ðÝ)†Ï{™ð=êÑž6:÷2á{ò£=<:÷2µú¢GÛ?ºIö+†~ÅЯúC¿bè?Kø±xAÌðlý'dˆ{éHö…Ÿ5’»"dùsC[î¥#ÙMBÏŸd[v ~ÁH¦‹¹¿\ µp/9ëz¾ÌÞø|n\ùÞ=kÏþûçÒ½l·£º_2òýœq,‹„_c¶¯xóo¾âÍW¼ùŠ7_ñæ¿S¼ùoDV½ç&îí¬5B÷rvºGv~ìÝÃ\õ¡{æJ=³Ð#wQôdéyý «ûž5B÷×Ålý¨LâgÔ9~AúçÇ =4B÷Ð$>v„î‰öw3ó>e™ï¡{IEêýôÏ¡{© îNö¿}wš{÷ì]2Ð=µUË]#t/Ý%÷·}ÆÝKwÉr²Ÿ´ÌwðÅ¥®»4æÏÄi„x«øß´ÕÍÞ›¸/ƒÁ–öü…-1Ü—Á`÷Ñ2?q„îË`°Ç5–‰¿\»ÉGŒË} vŸ[ðĺ¿š;¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³|1Ÿåñœ÷wR³»»ˆéwázœ—ŒdÓ¨æ…#ÙAaÏÉ4÷Ò‘ìkó¬‘Lq/Éôy÷Ò‘<½åÒM~ÜË:íì¶‘yáhv³hŸ=šmüþ‚Ñð“û£YtJzÙh|!ÝÍ.j{öh,[é£yvƒ¦=#r{û=±_Ï£×è¡ÑÌkôÒÑË«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïòê³¼ú,¯>Ë«Ïò¿‰Ïâ~á~±ê.?~ºZ__Ÿ]^¬>­W7§g׫ã³óõ*Íß×Ù/V—Çzm½ú|q>º>Z]Ÿý¯õ{}ß¹ëÓË?œ¬uµÕõÍå§Õç볋“ÕÍúã§Ë«ƒ«ŸWGg‡7º¸~të‹#>¦kÜ\^­W—Wg'gçúÞÁÍÚñ«ý4}@ŸýÅï¯4”+~.ŽúËÃÏ×7nõk]ëúÓúðL_/Òx×y¾:X×oÎÏ>üîðòæðômž­>¼)ÞGoOVãÕ›88»x{þæF­¯~yývíÞü×ÏgGë·q––«$MÓÕÏ«ñ_ÞŒo¿ªô½«ƒ‹ï4Ío¿ÊRývxyvý6MôÓoß~|³>?_Ÿ\]œ½-¥Æ’L·þùÍ¿8û#ï]]ŸÝèïï¢$Õ— }eý6Íõ—nµ~Ó^^­>ÿôöäÍÿWÿÿýAûÍoÞ½=voþû?|óöôM÷ßüN/çU½­Ê|•äe©kÿÞéà¨iþámÊ€nÖßé“¿ùÇo~Ó¼=qË ÿîóÑWÿí³æðm‘F«¤¨k]"Íã·ÇzŽÏW׺Æròæü€œ}XŒÖi´W¬×;Ÿ4Í¢\ã#hþ~øÇnÐ{LíøM£_ÞÆqœ¸¤JbæïÓ›cÍÓõþÓ?øpõö_Þœ½?¾zçY¶’ž×s9M÷?èö?k qýN÷‘àÖo㢈WišD\ñòMóáúæêàP“§«T³íôòÅ›ßKPß&LðÑåÛ«7&o/ÞÜè1ÖׇWz°«7ëë·go®/?®õ꙽½¾’È]3e—Çš ‰öÛõjü¸›S®®_ß·_qƒ÷oã*ªWy×ÜûüMüöÓj-aG¢ñ‹ßJþµJV‰ûýúŸzÉûêÃZ’­WâÕ}*Õ2¤u„|þð¦»41\ÛŸª4ryYñ¤ßë²Zîo~s¡9¹¹º|{ýæè³íž·‰fLï$|~U\¢k½þñà£6Ü[½Œ˜òMC»„¾yý6®«Ì¾ŠœVeļŸ¿IÞÇo+Vøo¿âžWgÎ5]Ubœù¿Žõÿéž¿OøÙÝ÷æÞsw½§Õ<òº´‡~Ÿøak›òôÒJþ)‹ìÑÃÞ}Ï=sØ»ï¹íag6ì8*kwêÇÝ\]H ö’{vq´þIúá­©/8FøÒ¹'|q,‚'Eé%1õ’ø»›+ à竵×Ú1kÛ1Ú"g‹sìô•iÇÄiÍgsÕØ+ÇÌ_n×Ò$°ð³—çõÊv\6Ék¿Æik_JÑjé¿:ZÅÙÅúè­´Iò¡&øôìfíG¾~ÃûܸȽŒÄöדâ5c…¾2 3–ûíØÙväz´7×7§¶‘õ՛ˠpŽ·§ïtkú¢œù)ýóWyìŸ?ŸžÿœܼµÕåNdŽÞ–…»GöŸ"Eî¹_Ôœ¸yÐu^hÍói«þÓµ–aò± 9óÛu½O¼t>a+pÉÞ0`ö¨3;—>Ô2&H­ ü›‹õºˆ_Î+-ç‰ÿ槃«ëõÕÛ¼t°GÍe퇛®ÏßgA}xñò“yŠß;®ÿ¦{óñàm†µß³’|âøvÕIͬđm€$óà¯ØpÎo̲ÉzÝÌÖ Ý’ &Êf¸ Aìî“7zC"­›^Ýð¤'ol¯{Ûª8¾¼ÚL;þêý¿1ï>Ò§ü~òÆÐ(úéìÍÆºŸ¿9¸öƒ/S”óA˜O}Ó0ßžosv5M²c™oLéø‘Í“~ýNßFûZ_:zóãÙù98ó£¬ |¾Y;õêÙ›3pʳ6’J8óg–ËÆË¯×³úàl}üo¿ÂHc®ƒ€N ~ú†§×'ghsòæúðÌOïBph ðãÇ·N¶Sƒ`Þ{y«3a‘7ÿðÙt¨‡¼gšŒ† §%úxvÍľ›'Ìo޽yøYß¹ü¬M}±^£Ý¯m}ÃO–»~:_\Ì®£Øö&)‡y¢1¬¿ú¨§|çñÚ?¢TÏx¾fÌŠ˜X$ì;©[›ƒóí[é·Ãþ´µe¡ŽŽÖ ul„$º(¾÷I%Ð&ÛIí¶ Öû£þ÷XÎ`’žæIPÚÍùùÛ$÷†s’ÙÉ,^\mÄópöI»‡¯}/ö6a§œúµ×V6±Ñƒè¦go~¼:»J΂Ž%EXMnxu’AûþÅWþÙŠ%m£~çM²‰QX’xK’]\p~íÅ[¯¾Òˆ¯ôûú'½wíç×Ëñ±½¼žîè‚Ø_^]óô{lAA™¢uµNëàP,wо"Aòr*‘>ÓçÎÏ/õöóî8¹óMÜYŽ#çŒí~âÏ7í–Ø«t£Ëc?¦ŠÛþpqÏ ôŒI…Ë¢Ò\ÅSÃÐr~<ˆ®— ške‰v‰ÁÂü²ºÜŸëùF¬‰;^íhªëËã›0‚3üyêl_^œã9}ø|vξ8¾ºüÔçÕÜn]ÎÆ‘¦¬4ëwdäú³d°øé½7W²ÎÚvÅfúµˆŸÎÏþ—ß»Z½Ó£¬ßŸ¼æPw çJ^Š ½iB=íNÿÌ~YÆj|2pp¥}áP-ÌCx>ÌéÊ"•Œ}ÿæòü$§ö%žáÓ•Ù´ŸÐû×Óž~ïŸCpÍLþö÷_…Éüľz7YaÈ LåÖ<åk†Ç¸˜ÝÏ×\¯3+„Ì~–Ç{›/›f¾ZÿÊôgüàö¹àPì4MÈúêF.£†ð+ 09½Ò\{µ›Õu²÷k¿½_óîÃùåÛ*‹Çn¾ÀÊ_àâóÇéy¼uÛq̲>qáUÊÕ»·ß;{`‰ýw€’ñNÊqÀ›‡‡ëk³Ò—¦ Ž×\"y‰— VžØï«×Wñ3~bËþó'~Ñ<›V?ö÷ñÆ@Ë:yKk¯üÏ&!•zºžUêf ]}ýÎÆýÖÙÒ{bQ€ÄܘxÒ N®>¾3õq%ÛiXãÂ4Êšq|ï…ÜM·àÒÞ¼ž™ ­¯Îì-fÌ®¥k~vÈÏ ¸<³(ކöùPŸüÞò»·a銬ÚZû°tçνԆµ×º\-œ3‹Ë' `ÏußïÞÜLоÇm~û‚>kûÎ9wŸƒM¸ÑHWéND#]%Ñ`Ü!¢±3ìõÑÉzkØö‚ ö»7gï×ï *]^í9C¼ŽoÂ\0S{¦b}´³ –×Ôµ¾{˃M{Á•Q¶ç"šóã­‹Ø"ø%¨²ÒÍÛã Ó‘‡f§çÍ]×ÑÎ…£“& ×ÍêÛ[l}áÁ({(Ø|m{IÖ,-“ž˜¯Ç ýx%,’W«Y‹Ø†fz™²5öÔn³ AÞã¨Î½á šÞ?’דÜòú󇯵ÙN.¯~ö¶ÏËù WáëÅ—ý ʼnÞíI½øp5«—è¶>ÑÐ&c§ýz’¸žÐéR±û™²—ÙU'gÁŒo´Fíõ…a¸³Û³6䟃Ԝߜö\œÇéb)˜<›†·^ïûyxÇ.ˆýõ¤|Þ!ºÞäͯÍCΣrÏÜÎ[æW^;\­К¢ü¥äLÜ íÙ<Í ‚¦Þ7…RƒáÇ‹[™ðš01zãj-xa’ê½C¯ÚÃ}¥:ð¬p¹'ýêòóÍÙÅz‰Ÿx8}A^ôåá¬Þ³ð}¾Ž:r^ìíþe\xïïæ€ÿæ¯*Ó½ó÷“9v üh¦¾ã†GÌí9ò¤Ëœ¿áô]éì³ûÝ[™½r{ÆçxŒY€yç­Lpˆmf‚à&ªgXÞž¡æDhÖóYðó½÷ ·hÚƒ§›=˜Æ>n±#Ú7ÚÑ8Pa·÷`±—&B&Žõ¯Ö“‹wâvžoí114„6¼ìÿ4}{àiqM©§Iy-jŠ‚=H»éªÝ“©iž… ›ñ9`HõåõÍì´!q×!Z"ÅytmfZ¯šà\~ºöh1MëbüFqny^óf÷á&{ÄY+iÈÕ¶zݶӧÓcrÝ#ç-t@]Þ XìóÂ&Ï6ÙIeÅ%´9?YF…N種”]oŽœ„ Sxà"Ë–nìäJ¯·Ù´¬öéšë«ÃiZŠÄârŸ¯x>;%7°j=‚ôàYGu—Þ/&åí(\bá?… °œüs¢P¦Âÿ«½ÇÞH«:„UfWóm›9ßã š/-ç¯}*é6‘?¿< šíÝÛ$±ØÇÇOzö<2»:3]g;3|Ûùó*EÔ,Ï­~˜€(O0 mr²õÑ›OŸo| £ãõê©÷º?œ-Í!BçéαxX³Í¬¿óšßÖ#ã0ÁÏ1ÑûæÂ¿7vžøcÍ­å1O¬½¶œ‘©±¿Y’W†=6ñÖ£9Z´5n1[€ˆ›RÈü¡YÜÖ+Dn 7óòÿ/ —§¶‹ûÉÒ"`²?ø¬ùÞ¼®§~]øÞ$N6qazó¸Þ#îgßδ@páßù›ß´\D¦@QYìz‹ãqEØ8¦Ãý…@›eI‚"‘þ<¸:Yß„qViºÇ½¼:™¯ž,ÆóÎo ýlóœåH’Ä-¢!Gó.™\ÅyKUòãéÙ,¨Í7Ñ ´duŠ,ø/™4kw¬ÝIXuæï᏿àsOñ"”ÞyüÙg¾9Ù©-§)OòdR?¼<¸šÑ]lÛžƒ»woãzk–|ŒÅ@ýd°ðd§KÌ~¸l±i<¿wNvcŸqí>L¶ÿôòühµºå_Z¨ÊŽNe ü‘†ÍC\:*ï FÈ^Löâ8|Ƛ˳×>bJÍǶ¿;ÍÇ1€k9‡þÁo7Kå¿ÙÎ<™^;»°ý:l¬¶­B¹„J÷¡²U¶„ÊVénZÍ©%†øXüècñsfˆeØøÛù›¿?³óзi½°é`¼óGˆrx° Ó/÷„ååàx ®x²öx`s€ÀŽñáQŽgŽß\„´=iM2%^¹~d¦w”£Û츌Ëâ}Ûßp<=+';,:ãŒl:™òrs¶5I`8¸ö Ìÿ h‘äÆL!ÀjŸ“4^­g•˜s×c½`;µ\mÍû|Öy¼D'»# ÷×8–2r½Aík!£€YQøÃѬj÷óÖÙ·gÜ}ƒ]=يɽÓ.ýðù†»Iq μ¸>“™ž§A>Ýúã'óÈpë&WÛà»–üðÍô®»•u6tlÉ‘ ÑOür¶«ÍàŽçA]­¿2¼vÞ{´8–'›µô#;\ËRù 6ü´Ó{aY’lãî$y.õÁ5¾öbõꞬØ}2ÖÏ,™EM, ÐÞ ÌÖ,h1§c±ÙŽœLp2ö‡ç±0ûF1ÉŸ»^iΧÓÇ$xË;òÚ]~úy ú…ŒüЉǟýÛ¥Çà>½hxb=ÓÖúÛæí9PŸl%7Óº#ʦPσ%]{ó»ÃóË‹õßúiIí$õ8˜`¯5ÎvÙ¶)³Ó̃‹“Ï2×S´+.öx<³¼Ä,æ=ß–IðS° ½JÖÃÅ‹jßIÓïþ¸}zµØ«·…ƒ{†[˜EZÜÀ%U¾OÿÿálýãÖèήåæúŒÐÒOÓ~ù=YRäϤÍoòîÕÑúÃç“KJ’žû|åÓ#§‰L£¤Þ'9§ëÃæ±`V=ñº;ñîÎr0¦L®o,Ì—žóßcRÞÍIT‹ÑmÎB1iaoË Ú ëxwkL›p£_5Ù wa‚É:¶l­3o íÄß2W»'±<]Vó\ü%§Hë3£=²CHo÷¤Çlœ¿@fÖìÞYá¿\]~’Ý»Yû¯N»yš¥ÎÌ>üñÔNÀð™ÎÎ-2a€ßf“HªÇÕïCÊQO9)iÀÁ–iLn}ZÞÎ4¶/Yö›ÏÈ[öØÉêå­)-õØN‚Î,^ùéfF\nÛøGçÐ;%y»9ݤ¦Œš›ÿöýþ›æß…¤ Hýhi¢>81Ÿ:LQOá-;ð@Ýp‡ø?`Z:sˆìÛkB϶?…ðµ–"èÓ»Ó¤ ?Þ›È,0ÜþÚÛѳ ‡§µt!0º}ð·ïüDÏ©#DŸ/¯¦TDðÿzÿŸË{ù`òõù‘È…ûYVJ”§ÛGMá8'…ÛßL`èêÈ[B¸Bp¸!þ{áÚfò”ÿ‰ÓioŸoÂ`üE•ÈíϾžOúæ)ñHgá²–•:ûL©óóàŽÌ6õ»ï| }ŠwÿíòìÀ–2„r—@Å 7%õ·drÛÁÓÙô>!ë»·ïüB ›ó#|ê“v²=§„Ù³E°~½t$>˜u”š ÉS|w+Èm á #ÌåÍGÓ”Ÿ¯§ôø7·å#dAY*Êw>~fv1d ;CJñvPž£|ùµTþòHðÚpKl[_}œÏÕÍÓºY›u¸9ûh \%¡­en¨­]^ ‰ÁP­àäó-ÏÕ,2ÏSw²sÚšDÈM2”ÿd£nG ?ž^^Ï‘êÍL[´ÉÀÉôÔsvõ&A6+¼†;~ó“þ™¼Þ½-Tbà‹€øzóÙŸÞ~Ïgÿ3m¾á³¥¢èí¿,·×ÇÕæ´t÷9q¨Üæ²ßNß¹|óÏ~e2/¶¼.3ìWkŠçü¥¦59›OäŽý¤‡ eGpÎf×bŽZþp9Û–>§q눢¶Œ².õÝÿvì_°ò¯µ×ºYE6Ë$ÌÁUœ\:o,GnBÚèɵ·ÀÊz¶ußo?ïÑ" 1|&ÝlÊ–€›Ïtq¾•…œÕDüÐkîå;lÉ9Á+·ÜäcáÔ]ñžb ›ëLO«¿ÈùÞ(faátþ/,7Šêz#u|o:Äþþr[R#er•mÖÃN—åìÈûY“">ž¯;¥ÜlÍâiPIÂÕ!—|Š^ ({}’'ä:½ùÖ«Êy0Xˆ¿{g‹Ü=—ñÛ;¶ð$c¥!j@fS~cžÈMð*¦!íÿÕÛ,Š]žzuè­¨iûù©N5ó¸þN¿nÞøO“0ãGÚáôÎñ›ÿø-[äOšÍx•g–Û0í¸ð©øÏÔI½ÿw~¿ó¯Ëœ6+ÚQÌWùNDQw»P/ 9ß›¨,d3ME<hé„ïLhÉÖ¦,Cøµs_¯×Ago°ÄRâÎϽðOfjrCêc85º:»^/ÓÆ·°“9Ž•Ùæ«uHø<ø¸9¿ñ1þ9•v†o“½ž’|·’¯BþE°;Á /§sTðÌ2FRVEˆã…â·;MÞB€ä'ÛœsÆÒ¹™!™¥¥´?ERý´Zü•i”꜅ëØÒ›, Õ±ñ ®}Êøñ²ú"8<†òÑ>¨” Ÿây|·[[úPÚÅt’^s!öŒC›ƒ‹)šµöHÓ&"×ul•fcp²y:SÊnNÖöd+¸±‰k_~¾öf#²Z‘_¡øC”Þå–¦;çþŸãóù&eoŽ„ßé#Xrú¬"ÂÜkÜuqZî;j?¸:<Ýs’ãgo§šÏ¢Zát;vm~ñ¡ ÿÓ§Ýúï“ÇûÓK?œlNCtiq„eyšgnçPvK8Ø¿§†(çœ; o…Û–qµ?!uç®øf‡S^«_1sü'çýGç{ŸmWÕ>'ÿtq†RÀý+6Ñæ0ܾ^‘zì.Mãè®–~Äå|0a% Göâwßœ_þmÈŽ«S·u 8+‰w¶\*Ÿn•rmÍXû"ÂÁ×Û3f/˜€Ï²^æ§HRº7æ‡Û+ðÃW³ö]ÓèÖÚŸÞšý$Š=QËic,oA¶-ñ&> ³w.ïÞ^Ë2­¢Ü—1‰þò~A™Ÿ…HÜv1Òô…ã­Ä}Ÿ+•í“§­À•]Ȭ½wºÒã[ÓD¢=U Þo}pÐsQãb­wFÆu¼gÔ¡›œ)ì`8Â$H³š2 @Ä×Sì(ª¬ˆlQ¨u4W¤šÍ·Äã·¨3: •_~¯× ÝX¦ÿÞ™wü?K¹]]ZÚñŒÂÐd~”<ò’ãvžìÈ2:Lez—àì3?9`úIlMÈ”·e}“GÒ%¦<ªIl¦ïô¶]³Ä”¨Êî4€ïOÍ_-sÓ°ƒ#;Ϋª ˜!Ú„7ç!gǼ_Ü¿Tþ6†$Ïï3ÂUT®ì3zÈlõG)¢ÕAµc2{û+¹´?¾9þøþÛÃÓ¶ FÛ“œÚ.µ<ÞÄ%}Qâ®ûgGŸÏ¾ú‡ƒ°ªÐÝWSB8i:ç0'~Ê”ÚÙ§ËÈ­O'J÷•m?$Ÿùƒ¾C‚Áïý¼-2äŸ,\€MvÛkZÆå—A|¿s§ÄZBÍYá-á4„NR?wHÑ»«¸‰ï¾ó£*šÊ ¿÷e¹–}€þ˜•A(ÙÝÑv¼µöyDI7Ø5™¶­À3øç 0×Cëôï‡RDZßfÇa¾ƒ;öG‹ÙÚ¢py“ïq ‹U±ãr o¹…Yp =—E–Gæd—Å–øß©ßòQÙnôóo|úÜ^=ÙR3Á8ÛpGLE\—ú®_"ä'н÷fÙ»EÀ½ëõ\ƒ¿òÎàR†‚&YKûííBrľbḵ/Ž´øéQ() AŸëP(nÇîï|yžSh+i¹q›bíëÓºô:NwëUqe/µy>^‡º*wkÍn»éI²š0vß#_½x2`‘uk~×ýFŸø BèÛJ®Ï?_ûMÍ$´9—Nú|‚ZÇlXný|JïƒÎšð`’¿ûîóó·æ¼¯ýAÓ¼ÿæ=ìÌÔøúíàG"µ–è£ñ|ååèÆïYÓD07y¡˜²\ ,±þñ<`ï|ø|b‹§aBü‰ûG’nn|ÐÝÂTvï³²ÖI½šÒRøÂÙ®º˜BµR( A ÂSnVØ©zï•Oä"Pʬ§(åœ[NœÃÙB^¼ù##óÔ˜|  ›©|®÷PùØàû\0ùÍ«eqŒ*޼f½‡èôÐñ|?—nI0_n6@zgWWëÉçoû…¢ŽM wþ–"¤¤\øÙؤÆlÎü ¶…›æ¼MŸöÕ¬ Nn]?øÉæO½ù½Gµ¦ICðfBk »bW[ÿ$¤ —"ë§áÄu:m;ÒTú4Èh:uóTFG¡*Æm}*ÙúT¸ÙûP+¹¼¦ù^ë¹Nâ$³ÜùŠ2,Šç#ß}wt÷J†9p›IøÛwË(ÓT…½ò#B‘,vY0^*“„Ôˆå9åî4ÄÓZ*P¸Ü醨f>ž÷S½ˆÛž¯x9«I1ÏWˆdþ¯¼×‹ÌéEÔ×Âzgˆ#ïà­gižãtç!8žÜ<ÄsÌ“ƒ¥¼þ|nHlª±#›õ›ÿööÊWEqµ,²Ö®ÒÝ" hhù“¸(ÂíC–U” ©îZ_^’¥Ss¬A”Î=AÀyèwþÓ3¨p*÷a1ï«;潚çÝVo…N<2=:›+õ™«³Ÿü´„ƒbŸÄ âŒÒŸ›Yˆèìjrßü™là8ºdS^ûœŽ_{ :Ü9… 9üá8›L63å'Åuå4óioeáCšë7ÿÙ?aÂiøæ|7)KgkBÎ6ò`tƒÛÜ g‹ù8žæãäö4,Î{™†‰"a~roo-1γå¡Fïg/ûÞ¨ÍsFlÜÛò÷o øwgV\çuêúj=W|]plâ’i¢Œ6åBºc³nÉtürà‡QïW´Ó=bæIœ]×€Û¾e Ú‡ŸíhÆ#Êé†A-{áššŽ‡Ò¨°9¸²„4~üæ|=Ÿ`O˜dR&{'œ_Ê0Þ–Ú)ƒÁôêbõ!êZ(ã4&’ Q€ÁO/óÌjº\û4D$°®«ð}¿õßmÎoÎBvÚg lÎiöž¯œ¶Ú£ûÔƒùà‹Z¶Uš+ds~}ù΋Ǧ Ž÷ª$i£j²ÕBŸŸkþæz±IQ-¬O¹ó5ßïlïÀg”Ó£_v¯h½°m_ÛŽ9('1eõÎîÚ'³Ü¥(ç¥[ª±“ Gv×ë9¼Ž8Z¶WFìg#9‡8ï!CÛP¤÷ÖG_}þ4ÏÀÕZ²´ž²–ν«²H åÌýÝÖS™äý¯–žÎÉ4zhà•Dˆàå\ÌêÁKà/Â_/çÙB\¦|#uæfñŽöèûÅ3ö¬)¾pæ£í3dp;˜a! ù 'üÚÅá[ºüØ-öéÉm 㺪+©0´eÖÑŒãåì.ŸM[âud)!óÃß.:žÜE¾HOnFOï}ç ¾ÀQóÙ[†YîÃpû¦aÅ#!ÀéÌV6 ß—q/tÿ-¹þUȪ›ëØÏ6[éd@¿eŒ–éa‘€!hg>Qv:õŸ9ïì;LÙ,Ëa‹Ìéa)tV›Û.æÛo.åk˜?’¿x`·ÛÜ%ÊXžqÛ¿ *Ð+˜µO걑dÉTWÏÜ—“™´¨uGmðød77þ½×£“žn¦qqò¾LF½ž":ž0,¬ôÕN]–Ê û¸É&Øk选/¯®wrùæ{¯ßÄ¡vÞ"¾¢`½Á–{à³â&¾:oÏc]Å{|ïGtýÙ¼‰zñˆèúp=_…‘ÜÖ:'þèí]Æ;c!ïÍx4íqLáz…´T§vÛù f ­µÕ/9‹Õœn‰ÑmEz 9 Go>:´ãÔ™F påÌžzÁ˜_‹£)}ëÄæ™ Ÿ~l³¦—>3e{á J-èY׫3j ƒ”N¨¬øÊ,3\>›Â¡R áwµ@ÛW!myÇÁ™V¹…°§ !ïe„ Ó¸³,SxYÝ>%úþÍxvâÃ(ñÌç^b†Žß\Ÿ^²¦?nôàž$“)¿ãRD29´+[äÛg'ßFŸ øVtƽÙ,‚t¦ùïíŒJ}š·NÑ!ìbY‘kscýÖ^}>ûþb.iöÉsEâ~žŠ ªg³<~“¾›lÌT¯<'›OÇÀÒ8)žˆK¡.4WI„~Ô=ŽýáIˆoW¹{ÊU¹søP® OµV¥º‹Öò`õk{gj{­~}~þ“³¿~^%q¾úõ竟ôCÄ?¯â¼ÈV¿¾úñlõëëõMø–nØr‘©“¯V×ÿóø½ÿtí~ñýöw_5G—Ö_%ï£ÕðÛßü@†³›sñúFúA¿vTI\^ýju|v’­ÿ8½¤Ùëeh~µúë£Õÿóù|¥§Ë_Eů24Ô¹>8ò½Okßà×ÇgXÕ›1ô Xývøû¿þë7¿ùÇß¼e¤ÐvH%µ—?ýJÙCêù¬]ëEߢ³Ó¤›k÷õÿgL>]Û,&r—é=±:Z¯Üæu›ÃÅï_¼Ñ¬ù½ºÒj»¯ÏWÂTß\þëJ2tÄÜ×WúxùǯWº¾¹ºüa½|ñbõ§‹õŸnN—¯žè³'×ÜúèÉ•^ Ý.–¯žZýéðü’“éË\ü|x©}þ´âÿÃÏr .n®N>èåË+ÉàWÉêJkõQ+°õ›Û~OB1}këÞ—ç_Å«?ýëü[´úSd³÷bÿ‘øž$|$¾÷*©ÿÈ}WÉVŠKî?rßU >rÿXJÿ‘»®²úº¿:øñwŸ“ʹú“û›¯NWëŸOí3óõO[¿ýœl½·õÛÏñÖ{Û¿¬ô‚>¯?eEWÑû‚J[ă££é+]E7ùùÞýôa¥aqµôÞ«}XéY¸Ú}Óˆt7¿Yô›F ±ê›v}SÂùG{ËK“ûTžß£¦…VÚÙ—+ÿæp÷Ñï¬ ›†¯‰ 8 ßÝúèÔYF·ñŸ6íðÛ+ø^œÛÜ×ÙÒ3îÃO«ù—ï/õÖWEùž@[ª?o¤—®¡%Õó×Ò'_ù¿®Î×Nº1š¿úãÙÑÍ©ûÅê·—ç?ó»»XÅE½Jd×?‰f?¯¤üþº^\m¼®ís¥·õSùØOW¸t5 äQ—&$î¯Ô¸øô!}¼zÚÕ«§<çô½Ç^ü1S¾Y¡úß|úqÓ?i^¦kÞýñè}¾+oþ‰ãjš ~ºÿ.úPñú³ÌôáU’ÛK÷¯B¶¢Ló£}?Ží{¤hòâC’—|‘+äö½Ú¿ôàdøïÙ]òpÃG|3‰§o&ÉüͤzÌ7“ù››Á&õ£¾9Ms¦'©÷OÏ׿'úÕ7BîPGÇ—7z¶÷“^±ßµÊüíXЂÕuºJ¼â"|f%=]ôôòǧ_— Éö]·|Ùu9Ù‹£}N_xáü®/¼°œ?¿nMqòÂ+õ]W~ád$ñ]c®_xáäÎ!¿Pà’ê®!W/¼p}磗ù.‘Ë_º|w]8{á…ó»vß Eùî9~áˆË;7ß­9þ›x‰Ù¾Wé{ßÇðŸçŸøÀÑÁõ醘‰ßcëþæÛ^Í_^-±á îš,‘Ë_ì®0Vÿåîº@FÅ_𮆘²€ÇþRwé_p~gü^ý%©ZâÑ'Þõ«ŽàÅÑêúÓ¼X±ÁפòÔÈv^’J4Jkj ‚ùßsÿú-›Kl$'Y¸DQø[dþû.±ó‘8Ü=IÃ%ËéýâÎKì|$.Ã(ÂèæKw?ÈÎGâð·Ìfø}š«»G±ó‘ynªin¶§ûvc8Ý»»«.‘äóbî¼Rn¯Cx i»&`çaÌ:öw&8¾sw>GázQxøhzÿîùÛùH¾*t.±-{/±ý‘z[êiŽîÃÎ'ªméÞ™ã—,à$gReö·Vp÷¥t~˜,ü¾½¦{†¿û‘4ζ&`~ÿî°û‘yÓ\ÔÛR½ç»¹õÕYÏÜ}‰Lr˜Ûb5=ؾKì|$™$Û¹ÄÝ{b÷#ó(¦¿“íKí»ÄÎG¦ÅœG³³è/‘©8½%S»/m”뤔©ÝÄU¶£\뇕ëöGæQÌÊõA™ÚýȬ\ƒLÅñƒ2µû‘j[¤Ê%jçå¶<•ŠÓÎ'ªmaª”¥zW¥n‹ÒîZ¿H=%Ûêõ´óÒt›Íf¯'wÚˆÝÌ›cÚ_ùƒÒ¸û‘Y§ä“ºzPÇï~$ÝQiô àØýHºcwæ]Üý ;Ù(†éõLîSV3Þ†X¬æÎKÉŽå˜W9¿{5w>2 ¼DÛpò^5¿cd&ËQ?ˆºv?’Ô»Fçac³ó‘ÍxP¦v?²YÕi“<€ƒï\Íé´Åù£”騨­~½¾8šN¢“,Vy”Q wèÏù-3zëßjñMõö¯žWœQHëíËD¯®|ª2mêíÕÌ¿ê;2&Ó«©¿Bm}’ÒéÕØ6ެ?B6½œL/[êc^®ý%âØÈÁŠðj>›X*F9]"~¾²ê8gu…;u»g[ÙtsQöM2Ù¿E ¾­Ñ’"_ÿ:1[#ëM£ï›©sHÊt÷s%em(§®•‹/Ørj¹(+,ì€WkOêjõ!g'¾ÍÎõåÔñÄ·QšÛ¥º[}Y·z¬êÓ>'ß6 ͹§’̳«©ïõNëãµ'Çœy¶ÉP¾·  PDe9ñn§üñà:ô%Y´\ö ù– ŒX«×ÇÀn™$¥¯Ë玫Ö=Ýê)î“°«bžÐ«õ”jÙÜ–)1Z\ûÔ¬¹p®¼ß"ýY&ùîé"z¥äùm^™óm2‘|®?ÛËP3'â-8–$%¾ †g^Hª=w ,Ý=¤oÝÙœÊôq}p1§’ÍÍÉÄ…`ù‰Fwøýb@Ö­jÉ*ð.td1Ýh ɖ޼̕Ú<íñ’1ýd¦?8úl¹“›ê[o=‚MÎÇOs§ªõ‘'N­SßWÓræ¶(]ê(]ÙÛ‹\‰Q™ïBNzùꃧä‰5£êVýþù’¥c/uNè:ºµˆnÁ³¸±µ;±4¶0[ _“½XÀ;ÖoÑVÏ=°Š»$ï<5€–qZE/EÛ­|[u:ô^_Ï-§æY8Z.eù´'K>"š|ke¸'DîÇ™F»¸˜Þ0†¬ªVo.Žn/R‘×îöz>“r¹FÇY£ 1Ê»©ÕJ´ºãò&æ‹Z»í%2ƒu²Õžu¹&!ëyg\Žàx›å*´W™’}}q°_’“å’¸ã½O-¸{Iüm]‚^±{„}1­ˆu# oØ>ÚZ ¯¢óØX!fˆ¸Üê¹p6gŽZe º÷xK÷ž,èɽ*¾Øj2Ë>Ÿ,a¢ãئ\p99S:ò¢³uÈ÷l¼¡[üÄ4š)„ ÞøÑl÷‰Ê&ºï³Ð¬8¹©fc`¦rj?l£›ËÓxZ<+º›ÕÛTý¾äÓ+¨©M¶šÚ7MÅn³ú8ºt¶äÓÆ“Yéð‚¨Ó7ª¿˜zNÌ<×›\m·hÊ4Ié¦@÷{«Ûâ“ Ÿ: l!Þ˜:ßYc«Ö0‡¡å¾>8Ðü` Æ¾Ö¶÷hÓ—§þa9ókÏjwXñ¡‡ó˜é‘Ó®.øX™?Ïx’I …µä|柷Éuÿaêávýùã6ÉÑágcÀ¼š2^ßn7^.÷dW«j'¸Z•žŠ¤ºåiU“‡ósð­*O( ׊÷½g…¿U™§ÃkÞ¯ÂÈôZfßõ^U´|mò©òÙ»ð/XL—/NU²ýIïOEÛ/zoª˜}ûºwªòå‹“_Un¿èݪtûëޣʶ?99R[/zß)Þþz'aœþŸ Níò‰NæK%³çÆ_t~óöE¿õ‹Ü_¤ÊÞÜnÙ›1àÌ ,Œ!¤‡)8žªl’¼ŒU}´KU¿¡B™kË=óùÔêà"ô¶0K·iϴÔ¶öíÕ¶€ÓÜ¡[ÐÁÛ$ÖïÍÇm–ÖÉò{"5Ïd¸`.;¾å8»“àZ·ÍMÅL ÐÛ² ‚._”׿ËÔe {C?øý›E¥õ›³e .ýE¨0ÓŸ¨®ˆ}0!ø;EµúÑ,V û~²×“U]û®HK‡.eÓÛEΛ¾ÂÚüØè|wº;ɦšP|»t—á*ð©œS:|/8|µaü‚bT~a ÐómÉÈøŠ6}ɬÆ„´¯çžî2.™ ­¬Èž¯@Ñpu0Mþ{ÏÌmŒ?i4Ó1Q¸þ«÷ù£Ÿl,YD"²ÆH¡îÚ þÑ› âéúüÓñç󀉦jÅ™'kj¸ì¦Riâ žHÎ$œ˜Ë6ɨmxFG I Ðù¾iÆí8HV]ô÷ëДå³/ճ̄r'lZíªÏ¡jò`B¯†ˆ6²|àÙšf*Úã-ïÔMkˆLþ߀W?_y€4Ðùjoã±2v‹F.h Ú bºxm‰•õŒµÂµ‰Ef‰eKåã©ëF`zØð;MM<–î¯3oÓõOóVF‘¼Í‰R»‚FAöêVe¢MñÓÏÁùñ™©óˆ'—ÿ9´vŸúgÎ_{†ºøHÛ‘«¹³ù‚ 3h 4)³ç¾šˆ.™8£z¯Yø{SÛ?øÀÒ†ãê.^ð@Æ·–º¾’«è{pûnwçh°ŸFÏ*5-¼õ´›ŠkCñ¸µ»:ó-‚La„¶z42cQ¥åíÍCߘÀ?•uÏíð¿C…ª'…¸ð|'æoºûdá %mH‡}w#· #õq“Ï“u@ÁmÅ:„@rÿ• à6Ë 7t1¿WÙ:ó¢H¦W­²ïúón8' šš±Ä¡Kˆ‹Lûh½œ…«™åÍâZ?øv[ÎúmmZB,H·dÝœ÷ÐÊh³bGžÎiêç“ùøù²Ó¡ß+Ÿ¯;ÁÇ)B|`D-HäÅýðÜóéøàpn§°ºo­4ß‚õžÚ,†zñj9„k©X¬ûqèhøÉw!óÔʾ/ßÄ¡¸l*ijòg_îëú[Z{å©ÝçþÏFªÅ â›ñ™çi+”vê÷Œ9°G³µö”±&–njþ··3²ë›©Eô¾Keî¥ uŹE'mn~Ø¾í¡±ÆO‘äÐ>îx3¶DÆ÷yõÙ ÑÏL9@;ž»,c L½D³"‹ÝÏ…=,påCÓålßÏyÍêL]AÃ-Ãâ‹ö»f}Ä9Û_º¬Š“=Á³M«ß™\ã$°K— dDjsᎫ«ô®+zV˜üò€5þjÑ^ÄZ {ùÖÍO«;nàòx1­¿âµögVë«ÐðrºîáéÔSغVl5J˜øìŒ3Ùš­‰ia‹MðãÜeƒ%Óc—g¶ >^z>ÀUã׌¸mNÑÉÏ“æôÀ‚·ÆÏ}a®C™m% Øwö0?_Ÿ$,ôoBsGª)ìã@h8±Ò^øÂv*tæ›JÙºúvÆ…©ç0sÐÚíŒÇ_Þ ËBo¹ ¼Pæ°=û6ÆéÞ%ò“;ï/RÛ‡NÇôñ`Ã\´4Ò.Dؾ¹ìf'[G>'›zà ¾ZÜ1-ÙŠƆ07fý~KÔN—dÛ×g³O ÈB¹[áÎMtráöÐTnb„ÙÜ…ÕÛ.NÕž€S½ªwNõª²€“ovoÜ·ç‹ÐãDŵ8pË8ôñVðw ÎÑÿ®$.«½;ÏÌñæ"ñ÷Ü„›ýºi³lw&·ƒ C” @:µ˜–&€Y+å·&¤×[¡ùõò¼Ä#ír´§nzýúP¾Š©Ùjñè?ÎOzíìQu³õ´6žu~æ•å þ›ñ˜E3IGÕ ‘s·›€Èwaìëm½é88A`]㇠3YÈÓ.Õ5Nðõ¥÷ &Ö®›`œÖQCôùzÓ{pžÔ£`s®äo0´ù†¦ßSˆ™£zä‘Ý‚]gqµ¹â’Qvžõ”kpýnf9ZåÅNÚis¼¾r÷É%¸µvé?¬òÌ»Å×7[§I뉢ØX¶„¤–8…oï`F†rzof¤=˜/~ê‚·|¶áGÿã«™ç!(Ûörê ·€XêrÙìwjIy:¤vÚ!Üy45H¸EÚþæ?ü•^²O'¹çªà”G£=}Úz¿óÌšÁÊ19³ ÊÕVSËIWMÝ7O¶ºxìŠó†©&ÐÐÄõÚøøÔÑïþ´ž È6–¼Qœî‘5²Þ}W²>Ä >Kþ7íÏ?zš¢›`gLŸL_LõÑP,Z2`2-¥•˜êý?ÌrˆõŒ,%4 _‡ó]:ÜúÚo÷“ÍŠ¼[zjð«ë›w>5äì"ûÓƒs›õ¸H¦™1Űl‚09?6 ;ï‹ÅÁÚíÙ·ãþ$YU;»ÛòP|!ÏIU†áÌ>ÐûØ ôãgz×R„ªðKÂ9È®:ö)3åâÎúL}<–ghÛOÞÏ?û+,}š0žØÈP·[ù¤AÔ ;ê=ÞhŽí¨J [v·ƒ4óé×ÖÒlÜ JEÖ>}Ó ëøÖž™;Ö¾[6È:™ÂpFaó§XÑñÁçó­öq†–ʹÁâΈ‚Éÿ}X"Ò!-7b¦x‡<çÀšLxcüù µÛޝœ.ÑŲ…“'†ûèQ­E}W£ã©ó’‰ýEOiÞ—’¸„Yñ¡œßAû§ŸûöR»Š?>¾uIO¾Éßù/å‰ùMX†¼÷ôXsŸÏúC³y‰Woºö?ëÚ®?ÙPé#§?ÿU¿ýëß…ö7Qâ-¶ïL{øèÒH¯O/?ŸÍ]C=¥³WGÇ;=6hýxgUÝ´ª¦“ûxë44©/Oo¯§\Ç»3ªûù·LÐÿ¿¯«émÛ¢÷ý>:€Òš²$K? Aq¶·\›É*:(Œ¢ÿ½œ÷ffgI&—Ö—ÜÙ™7oç]åŸÐFpìFÚÑ}¹¼XH‡?/ šÃeyþ x¢Æï¾­ ×] DY:§³­vzDðô­¶„«Ð}@;—9Öõ‡D7ð-Â0§S,í¶,,¿‚ÖÃèXOA»díœ[„³Ã]»ñ-׌¸øF¢f8$º…Ót®—°KÛ‚êÂfôpk‹<;¹s Ï 9I‡g‚1Ø—¿>^ÕHY öQ4­êá›, þC¬vÉ Q›W6´ÃNÆ€Iúþ»ŒÖ—T±CLï[˜0šUSav¦aVDÂTß.Pê ´ª1¶É‚µ–¹£–ê4%T:ç¥.€#Å86R¤ÆâËs½…·um§¦ë»e2Aíá\ÙÊ3XcÞJË `õ€²tˆdYý /!'ýI÷- íœóÏ7E4ñqÁ‰ˆÀz€Ä/ô¹€‡]‡¨»*»Ó熰"´cÆ| £äÐ) ËÎ_©ú¦­D†)‚Ý»šŠx6Uðü™{z¤¢(!;²f›¨}’ñXÞKõƒ=y®`R@/{ )u…Gш@“$ìßnëÍtg¬þÀjB:¨dð^D¬äF¾§ê+u°AC…6¡.˜bZ ¡}.à´Þ8˜mÛÛÐ*.Œ“¸™×†šÃZ|8÷%Dݧ,f4 ¾°Lüd äÉ™¾6+ÈÙ^¾‰{U =&ÛJC­JÉm²h¾NŠD.ðàWòÈdŒøönß®„Ò6B¸‡×vcy7A|WŠøêŸûmš…{oÝGš”êñÝËm­±5øJEQ–A‡°ôÚ× ‹ž øÃ½£’·ðLSŒxZ`XV´7AöX7‡s³¡Nû =´ÃV™Úž…)€ºÀ1ЬþGÑíÚèm$Êôz4‹¸Ž¢cíƒþ""…Ⱥpä6’â%nBt Î\°ug…‘‘Rh,Áz_ŸØ™(ÿaç:µJ®a¹àŽô¸C_¿µ¾ÖþÅÚ5ßvæpp{œ˜³Š}+Ñ]ê€È#²ÊÜRNÌI% €ð¶k|î^µ\o’¼¯ø]ób±e§aظ1h,¸ý’uL?ˆÅñ8åcaRÇ ,ðË;0û ¬hùàÌÏpÙ›ªBDC°®™CŽˆ"ÑH tNQî°c¾õ&9aÆaµY‚÷ˆa®æG{x‹ƒîǰjµò|{Z!¨ä’¼—tFd ¶K6®.ŠW¥Ò.RºõÕÔåÞìz!›_S€‚°Õ§ïêó cÐ%s2¥A-«MÅß~¹^-“½§æd\:QÍ­©xÜr8Bý»»ô†ÌZg™¤¯q¶e½çÌäB»dʈÛÈ4 Æj Ù³étzÛ%§rcS–l<|YmŸD=™Á¬†¡?ò܃û`(PÝ&n­¤s\kÝ»)]œwÌÌV$§ÚBŠï#j‚Ji0œ‚H£eøùœkðÛ­i›Vw…üóºÆtMItBÑû×á÷íår¼9ž/ÿœÿµ?ÿëšôǾ©_ß~; ×e0 ë¨+§¿?¤ÿT{&®ö2scotch_6.0.9/doc/ptscotch_user6.0.pdf0000644000302600021200000247536213560004725017653 0ustar pelegrinpelegrin%PDF-1.7 %Çì¢ 5 0 obj <> stream xœµZIs·¾óšKŽï” «Ä1;n‘'•TâØ}ŠsD‰r‰¤SÛ¿Ï× Ì›Æ,+%•‚AL¯_oÀ{s0# ÿ×þ}z}òÍOépùÛÉ›ƒ Ù9É>ëGr"ükèJIcõ|>üåÕÉ'æpyòæ„Lû Ñ;|{Ž#å@i´„/ΟŸTVt `Fã!D3Ÿç×'ÿ~8=3cvÖ;œóÚÆâ}Îx]’ !xM.æ@ÃS9“ …4¼âu2)†0ܶýãñ ¯_ÈÚ‚ƒýïù? Q'›¡1+}~iWi\NÃ|¬wÃE]âl£Ñ©çÒèr(‰+>ì’w…†_Ep›òðä”å(Éo¨\EÔ$o› ÕMÍb’kjÖý…šà9†ÈÛ!{›Ò0òÚ[M̼¿e‰³`Ç`]>œY—ÛRÕù™¿Š9ºì†ßDp£óÃ3¥æ[¡ls‰eø£œ·Á9ïRÀ×4ü· ÔÏDûٞÕDÑÆli²3›\‘oºC z"fëg.©ä\Eýem,å†÷§6ÞÇFÊG“LdI œ«2 à^g?½‚Ÿ¼ëÂpΰéqs¬gC² &]n ‰2oÿr:ËÔ ˆª±„@buŠ#ùH°zC±¶ªò×ÓL#ªm‹ &çŠNgsÊže£ÑfëãðûSïÂhŒ¯ˆ #¹ŠšvXôC˜dcÅ)–™f‹±ùL}x¥ëµ>s©ˆk 5#%¡Úf#œeˆKJ“£w iíç{:ïYJà#v4®Î€¼¸’Š7ð»þò–¿$^ýî6 X}„ßð­(áɸÔYK+tQeò¡c®ñnVóc¥íMˆ—i4.h­þ)ð0¨#Ñq&•á'Á‹'dàáï4v0™eë—è=’“ œU'[Áš c®)­™{ÏÈ×b8Ÿ¢­v@1Ü;ûL*;ò‹¿<¬¼ůäò„P-læöúûLL Z²&§0ü»&Òàçà v ÒT"iIô8+AÓSâi'+î%‡wsØ53xÓä¡B½AxÐè2ÃãÆ%Y!\GⓊêqÌ«$w«‚¼‘öŸÄÉÓ ¤kÈð%væÐk¯Ö¦7Šø;çÌ ²•&ßI]ò¦$;|/Q†°‚õþ‘yFò–:žs ƒåÃo[]Hº.#WƒÎɯ—‘ÒLsµÞ—õ¥Z¿]š²íߨõŸvh>Vë'÷ 9ªõsuF¹y«Zô".&i@Ž™æÑfx¼ž#l/}\sú1¡$éÏ¡—\‚NRº0»=SÎw»ƒRë2¯›~å‘Ñ<‰~eDûÃ] ò5—?Qð!«âeµ-²B¢ÐÚtÈT·Ü:"z›ÊXr¨^!_ÂNb»€OÎí´ñ¡5–´gd¹¯F›ÇGœ¤8oÝ û‚"Nœ¿Ö,$#y4Cd[†”DheLik2ÁRª)…ÂëšÈr ¬ÉŠåF즇$ÙMè§èÖ“SBsI Y»ãQ›Nè,¨EßÄÝmä’ 7IZRñÕº>«b8ÛsiÐ7*èä°Þ}²m®+-R÷Í¿ûÃRÜ(âj^7G^|ÀÉ•š gYwKQSÓ¦ªä(q ¼+É«MžGÚîÀóÓi(ÒX÷èÙÊq(ú¡ÂËŒ*ç§3#)ŠÞðPRÇŸó:ÚÆ‘ÆË%ƒö¨?u¿žA‘wÓ”'Ún‚7=K¦¨i¯Pæ"{3Cöà ½00‘ÓÃtAEâŠX‡=›xÄ“H&Ô'8¿é…xL“ÌÙ–<éåÌ4ÕÕí µ8b¶Ôòh£sÉ“0ÈV6avKŒ`#JP?¯”ó%1·TrËÃRĬ?|à• ÔÁ®á‡xÄxƔрÀdÛñðT/$òáåiHBðNþC'˜'iɧޚz¿sÄÓJ'Ã÷Í9ÅÜÉ3«úzŽêŽÈŒ0 Gny àâ>‰#ú‡]snccËB«¤U©C¡áKNUV6}š[toú´ažÎ´*ZåúØ„ IA¿“¼Õ~}‹yôµˆùöu ÕvÑU^Àç¸Ý;f1}ôNŸUÊ“Ï\Z%Ùv:¯ú6s ™À—»üŸ,ƒÍ¦E¬=ÙU³IÁ¾ø\*À6žªÙ^ù…®Â,7[¹tBYS‰m¤Ì·|mŽAê˜tʼ?E_ åó¢ëàû®$·•‹t·FˆúðyýÐ#û|™®)¼ëL|¿&Et˜¦D…ØÄ›´ßÿñâãVàV©4îöнÛêͬt\êTÈÓš> %ÛVÔÔ×ÐAzCSèt&ìbU¬0~ÜCý [Õšü¿Ù1Îê´DÙg¨Õ¸iÚÕ¸¡6·"ï¡åTüu –ö ƒÖ}iùèyNßÓ~¯déÈ5ÑÿL“]³yßPF~êXkz„› yÌV³ìkÀ3“fvׯš5„Ý]¾*Ê6êŠÖ´ZDª‹ÄæSо›FÊ:3®³+'‡wK­¡ÛÌ<“-(Ǹ˜Â§¯óp‚eWH¾ô+ކ÷¦J´E^eŸJOà"÷VÔ&àu„\3Ù NC¬w~cc%[„TºÎL§=´—:P|Ô1¡ceVv¯‹ÓhÕ™­QIÞh–e¯M‚rm¬<Ú$XRÎÿçÄ$ë61¡å [Š¥w6/æ|Á{š>Ó2¬Be·DÞÑ2ȇ=¨™{¢¾q¡˜`êÒæ¨ˆ¨¥NÇ[SÍñ®dÂëb"b®6Û/?kéÔäùýÎÞuÇ)ŠË\¨¶Œ“öâE-oø¬1º³E‘v°óáå¦lSëŠp5Ç×ã¾íãþÓDß§†®l6ļãÓù®Ì¼˜ç˜E=sY$•N´c´~¨Ô`áÏ+»uê¾i}+bºž J!ZÖ²ø&ð^óÂÛ÷œXyoB—ãvªa­y*ŠõoU|~±Þ»¼i®3¾G£¸ˆ· åk4^4Z–M.H |­—T©bq"d|\º\î5Òh!6pNFâ;F•í/דH}~¿O{V³ÄrØÑ­ÔEm…ùUs¯—›­®îv.=eNâÁ†VsR¨îô)ÿ¾£Äݾy“a?íuq:ß²º%¥%tx7ÛÏ÷yb0~ä(Ë )*¦úH‡%eÚ+A{å­‰äÂrÆu®Œüó‰»U(î¸s…pE¹Çâº_ãÌš…ûT•µqå,Õ¿±Û ö›wÛ™©¥\P{yÚà\ywézq '÷n÷J¡Ë=ž€ß·0Û.™½¼¨§.Ñï´Z»·a –aô‹Äü¼òáyXCgQ{¤Âxtl1ÆU)w¨äù}ä‹dSÝ•£%ƒ‘éŽ6œ“±‹\¹-3þTE›WnµT-º1T\t ²kcÙ ä{5…‚âˆ!ž÷Y›ïTÓ•íý/”&sÅE=Q©¿¢¹Ê°z﨨Üìk¾ºøY]Jõ÷Ü™1ÆåA{Ú¿~µ)ð†¾)ï,µ@Ÿips¶ûˆZÈä‰ô·«Ò݆â\šоB[,”ïÙ+­s6›À`:Ý»â})×{ü{¢Å£"—Ün=©1¶ø¬/èGüæè¤Qû >¤ÆÒø×bõt õiÞÿ $¯²8†Þ忊„&wËën=$k w±°{{z³é—«:l;Ÿ–ä· ìçùjÆ+w´ÜàõkøÞ%Ë¢ó _3þ] ‡¾ “G$€Q ¸õ»Kâw2ÃÆô1QmIÇŸ;ò'ߟüˆÿþW¯=Þendstream endobj 6 0 obj 3057 endobj 27 0 obj <> stream xœí\Ér$·½3ô}l:¢KHì8jñ„íGÈuRøÀÎb›Ëì¶ôõÎjIT]Õì&‡[Ìa*@4€^¾\QïW¢• íÿ//޾ýÙ­Þ|<«7Gï þqÕþ÷òbõý vXn”¶ruòú(ý›»rR5©ÕÉÅÑoëŽ7¢Ñ^ÁúŠžôʪõ层ƀwëOÔ*M0R®_Ñ3Xg¥i{h¥³éÙ(iÿçÉßp%2¬B¬´šV"ecDXLd‘~]À7Å­¿#ªüÁÊŸvƒ®ÿ.Š@pÖ_ŽÑø4Ê®¯ù¡ž³gÖåE…|ywÞþ‰(Ô ù;BC!…âã9îGeÔ¬jþ/o÷…y2Œ¹¯Ã} Nê‘9¼@]ùG4 }ÁÚ… {HÍ1áOBG¯6µj‰ðXëyÓÜ,8'CâÌænÔé`ÍyWuó¹à]Ese‹w r°(¦ÑSžÄŽŒ(æO«4jÀÏeKÿ<`ƒ_ÿœüm©…ïÔ‡GeR²¡â('¯õK\”´®síßÇy´3¢®x¦§Fl76â1§œ‰šŠÓçjŠífÔÈPrz¥?ÚV`@ÍD‹÷©UívÐUœƒ¶·qöÝáh¼n„v·Êš÷®ÝD“ï9 ì–q›ïSâ‡çü:Ž¡…•>e~ˆ\Ü— Vd$Ó²¸µ="†¤G…c|ͱç ,G¦Pµ2‹ðõ¿ø±`ùŽ# 5¶Òý”¢…¶±F~MxE* ··W©U mºŽI›jwòQöNìq½Ûuܺ… H7ö1©Ÿ-ÊÜ¢}¦kæÉ›¡¹,…UÅÕ¾ÍBg(bÂʤó Îóc(¦ß,4ìŠÍz€âœÁWS‚c$4Zsa;=²ý"nà ‘ª´üá=§{¥'Ã$Ð-¦ç×P™f9V®ã n‚äʤrjQEL¼mõ¢®ºØ‹)i‚¥íiÌ9BÒª/­EiÛ¬EfQ€òÜJëŸ;cQ™Êº^Æð’†PÍ Ô̸Œ -þÓ”Å$Wiÿd@ ‹^RŽº¬>9+N 9B•0hÚ¨e¢„7AˆQ»gsq®1‚…,6ic*h¿\£ 5ƒi¿\#-Ð =н‹ƒàdMô¦Xa×q!QÏn΢½ ÚtÆ4NÜVŒð~8íÉs̨0qŒIã…®düÐAcVÏeüXœ;Ó˜tËB}s^)‘ê‰2`r’éàˆqpª 3*jð­Å' ath«l&o*ð¼,Ú6æFyó¾J@çUDV°# và ;‹±³½v‚ŠÌ‰ŽÌÀžÏ"M é•Ï*#xIE¢Iáet{”×tä©^2²%ÛÚ«h"-áàÓÔ]*×q°46ï‹ÜÛjvOf¥`-«xO¿uB¨¬ÖMu@ºïܱ:§¥nŸƒWgl‹p/‡¶z=”Ê × õ~Ãf©™ßmBÔÁá œ,ÃËëžì »?‘UkÑh ½Œ¤JOÑeÎX1ëÀEqZédÌÈD¸Ž dçd"]v1hÈuá_ä›/}ùu“76w»+µz¹§–Ta?œÉW¨µ¼@ßš« d0tžS &gÍ%ß-r륜 BôË€ rOظ Ø@Ê TÔ¾ˆDæãœ¼ÐŒŸúûÔÃÛŸ§}˜îV…†z¾²†Ïµé%Ó¦}à´”S°²¢ypt&ðeðq‹¢Nyÿ,ÝÖU6‰ÜŽç«Þ’eÅ­iÔ-Ð6¼™C¯ÞÜ {,¼ùëcç…m3Qì®t†œ³‰¹Hv JFûB œë@FÞ½â¬!>I±g¤Õy਒7ðtñåAãê:®/¦®Â¥¢ãD[5›lqÙý3Àmr=å¡ÿnR1šRH ‘NÚÖÓáñ]ß¡däSZÚö%›ßök+-£î„Êgf‹ˆÓi Jµ‹ˆ­†ÇO[׃:M9©AxÂã.xD>B¿ä2Å·5Ÿ³ ¯†ÖÃãÙvÐ-}_  8£„°5ŸÛ8jà¼+2ÙbA;VJ?­dº3hyÀÉ?þ°qhÿÀø~Ün¸ÑûãæãÐúr ¡'ÜÜyÜÌÚÅf³?n> ­ B3–Ê“¢ºMÜÌ}õA(”]ÈÓcn±?'Ào@Ú,=öb’bšDÖYóïÉeóZër¬›ëÖÝ\`=]MÂì>•ßðàφkE¸¦¼½+Õnuï"JÜe¥È…@“Òã„1lÀUKò+¥Íl!g}¹µøÒe5s2¶û\„»gâ‘`HEÎÙEvK\„´b%»P^«ÙÛ3ÕPECÆÌÒ— hük9µ¨í%ë3 nÅúÈFdu…½ò…€žÕãk  [Ú°JJmÖ/â`$n—n¿ï uá 0±9õP&èÉ`rf0®‘¦pƒíá¶çóNÁøF³¨si‚ƒ¸PM3BêEâ>é$}vÐA@óbr”FÜíðËwÑ¿Âá?;ö€àm¥„µR«YµótÝà õ²:rž_&ªöÉ‚”“A…4ºWHTGå3Y*à} G®Øâxÿ‰ÏÖ›ºî£\âæûÈáâ÷¤vŸ»r92Ýþ3BWoÿñ£ëkÖÿ=F«PÝ×/4¤ë,véÅô]‰bõÏÆgnKí$ᯑá\K—Ë*ø)fþ*…L§tášCdž­×&ãá¡¡§¯Êݺñ 2Ü{%‡Ëɾ*Bæ,ÕƒVFÑ^\Ašˆæš¤×¹«ÓØ£b»³qü0ð*4Ö¨ÕFC£µãjRŸ?Ÿýÿýø›¬7endstream endobj 28 0 obj 3078 endobj 36 0 obj <> stream xœíKsܸÇïó)æ8:ÆûqŒw7Φ’²×V*‡T^I+»lÉ^[Nv÷Óoƒ$†Mø‚#h4,µ0 ‡üñF þº¦„­©ÿ©~_Þ®ž½6뛯+º¾YýºbÅ?×Õ¯ËÛõó ¨ÀÄÚ§¹–ë‹_Vå'ÙšIG¤’káF¬/nWÿÙ˜3J¤Fº 9;§De¸Ùˆ¸™Ÿ3&5±zóÜ›¹TTéÍGTåÓÙ97D&6—g¾¤™Ú|8;B ÆOuË_ 5Bµrnså[PFHÁ6×¾,55Tã*ïÑAîÊêÊZ¾¹ñm hÛn~)ªHª¹í8Î-X)|ŠS¾y[׸?;7”ÁA™ÿºŠRb¬K(J爵vžÆF;EÆ4\6WÝkÆáò¨mñ¿_sN“l}Î8QpqÖWÝÈHh‘ZlóÝûâf*ê¨À÷¡yí·5ð­¿©«üîo±"†ªÍW_Ã)Œ Ÿäp¾¡miL(Û¡ „Ãô GºÁQ#¥†0ŠšY­<ÿ‚Ì9ÃY Ai`g@ŒÓAe s‰š²\© ‚š™ß(UgYÉW3Cm8m¹íG]o8EÙ8zt6¦áqœ+n‰P=ºvdŒy 3„)½ZAR“¶óðß7i¦à†:ºW¾ƒ+k0Hn÷ƒ¸Œeícy‹¥ã]Ñgt/?#ß#ïý¦Â‘™ƒàÝö8ÐGꮃJÎ y%nœ0hC2gÚàõRdN<w7;íµºdLÝ»Š¹ùÝS|¯1¯»§êñÂÀ`Š»ìŸ£w»‡Œã¯Á?Ç€¿57cˆ-ºN ,ØKï™mËëÚOaV>³‡66Z1ðyÄ£VÍ‚Wg\Äk`PÖ ²ƒÕgFŽ2¢fõ âÛƒ†¹-¯² Š6Å7ˆÅu÷ {G˜ô8ÜŸ‘ÈpD"¬8 œ†–ÁÝ lFàM8U„K1N Õvü½¿.p9k\—Èèµï2â÷[Ç £uUÝ0Oìãßíôå­^ÃŽ™ÞÞÙËlC”¾xÕåàñ÷õý)¸“šõðô¸ä2¸“α8œ"u[.aÔ`FoT×hÚ›¥3Ê7ùìµ`8`(\1³=Á7~¼-¬Tfó]Qt ›—µõ"ZáoÛ¢?Æ«ŸV’PµþÿŠ®_¬8*¤ZkãS%×·`Ñ€ ÞZ>®Þt8›çœÐ‘e DûGÕ8¯ê3º©‹_|Qú“(0¯¬Ÿë⻺ø—ºø±U,[øT[/_º‰Õp¸Ù¹ñ§,êæ›A¿*”«¸Ã÷,|o¡†^€8‹¡®, P3xìž êçuÕ½«[¸ZHž•ä!Ƕƒd‘—då x¹‘,ÓI†àÁ>Èßêâûº¤Ù Óû3mz˜ž¨Î23ÓÓ u–¦­Ÿn6¨¿‹Z¯ëj?cóazo¨ÝüP«ÌP$ ueI€Úp"å˜FóÛº…/µõk zät’nT+òt L×öÚbZrbÇ΂u0­33­á Û†PW–¦•¿»³ õ÷Q7ú>Ö¢ÎcInŇçPg“™d ê$nteI YÂesüC]ü-êFß/ ï ²èyâxÐfíñE W–ýâ;›Ÿñ×ÖÇv|çë…äYIž(É.3ɜ˖$W–’9'œ»¹H~1ä\´Ç†mê£|[BÞ]QpŠTËÕBFG.àœY©r_#àÔYb ¼²$NÑf6©þ16¶+Û-[@½Ë(믢:‡~·Å1xàÅ>ÏÂSA]ùU¡j¦IĪ˜ u8A8C¨ËtÔ¡ÂØlZG}ñ¯“ >À| ‚šg†ÚJ¿Ž C]Y ¶Ò¯£˜ ê×QMFúý¾¶¢Þê‹ƒÒ ø¼ŠÈ ¸ñîrCµ+Kà†Êì\€¿‰ú(f}£z¼3~ê1ëöäb#fÌ·ÌÌ·ršh+ –¾•#RÏ&àˆo$ÕÔ-,±’ý¡n-±gŠnÄ8W[ý Ò‹£+*ÅæY]÷eù@é0Ë@µSð×S§­X= >u2ÙHzHKó¨Ê¯BZY(j6ýG]ŒOj/KŽöоÕCú’3/•œûÕ›˜äÊ’@2‡³¦æ®ªû¿ÅØ›äzж³&£á h²‰¹©AoC p,ƒ#d ÍáèN•Ó‘‹Þxë64úåßÊÔYöþ0Å9×á{ñø ¾;ñ‡<>ð W$Äœå4Œ`#ÙnÁÇè€+iñçt~Hæf“ÑQë×XÄ`‘Ñ©2Ú˜}Qu˜3;P·ø0®, $[é!›‹äúìqÝhÚÓBòX’û–¶ ¹¶½[uå#Ù0Ó\M, $FÔ|¹N{Œ“ýÐŒÅïuÍÞ]n[ˆ=Vx§ÃN|Žp¾ëñjª“ÜÌé"ð|òæÊú`I\9Bålªûþïh]ýíwPNrÆñÝ^§1fäÖfö胻sîX5r@¹»»n çÜ[(>òUD‹í^ %`#ZãÏb # —½ÇhæŠÁI˱4?ÊÁ¡ðð~Á’ Öд³©õ?£ ü¹×™PpCŒÝÝ3b~©|*ÂÌÑaçRÕ?Dì 9÷‘3ÕÌ~ –’9< óe? ‘Ü‘ówm­õDKœû£ÎO|ý&»wýæ4¥Î=p¤~'H¼?Xø¦–ØÙ&÷ñîIšZ|éa¦[»Mïµú§ƒéÌcEî´ÏeBLËt¦¡ÂÍÃivÏJåê,PgÞZ€[áÇ`I€Ú bf U2Ý3¹]ûÝŒSgº½ yŸ­:˜Î¼µ7LÝêÊ’À´a„éÙ„:1µi™C2^14ÿâŽ>|w˜M”ýÛƒ{C”÷R–G€d±(£Ø0¶cwÏ~8[«áËMlGº.nÎãRóæø`IY©ýNÎsÉìËÖÇÊ"ÊaŠ&sàïÿs]D{Í}¨[@›ÄLIˆbTÃCßû{ÔOâvæ<èV\×Ázæx‡3" Ç3‚%uhóñ°ÞÅÛÉØŽ&DE£xŽPÃvwë~„ ? ëZFGβt°ž9vÇ9cÐecÖ+K뜧rëú¸Þ²è£x$ãi»èchò¥ðÜ.¼·>ð‰ ž9¨Çœ¦Íܪ`™8sªpâò>.Ö·Þ¼r5à™#|ÌŠÝþÏ´ îrk÷h÷ÅÄOÖoS>ƒ#žycQf¨ßƒ^YX7p åÉxuÙÚ-\ÇŠO;ÀR4wrff°dÞ{”)a‡}ò`I`]YÂln]…U¸]\–ÀÛ©43 :3oIÊ$ÐØH –À¥"z¾¤°‰€è%Z>–u§‰Ñ#g†ê½¡O8WÄ‚»‚HN…sõöG'ýT7Drãºæ/;^ž‰çÿ¨›Û™½ÔDswÐiÈüÀ°|»öA¦8•)oHFP‹„ëÀé“;Ídd[‰`勆'¹£F¡æÔ4“ ‚%A¨9õ© ‡}Û jbïHø²µné{-ÍF=ó.¤ŒZ8&½4$€OŠ3³m¸zâÖ¼§z;Ń>´xjôÌ»‘:¥áLp$%X¦£î7¥Ù§ï{^#€ÑÓÂÉ„ ë­|ÿ*5åwÞ жüÖMd œ~Zý lHp'endstream endobj 37 0 obj 2851 endobj 41 0 obj <> stream xœí]Év·Ýs‘oxËÇ?ó°ŒcÇqǶÄ/’,dR¦t"R²(Ù²¿>Uº»€šoà YQáQ¯ZnT±æœ4«…ÑñÃ4ëçSò¼úŒèÛTë)÷Ù”üº©›_SQ+dg`iÍáúø½ý5ê¶‚:ª[oÜÎ^_ê÷Í‹µB¤)ÔsÎP׎9œ˜÷êëϦÞ6©÷‹)y¶(!‚[‘eù½ÀÞA£nJÃß7s~Qiøœsì”Hnïöß4?›ðKØ7)ÐBu@¤vÑû*Ô]uã™2fg'±u}ÏP—Òc¨œ@=çu)™5÷­á÷ƒzÒû)¹ ÷Óg×è}¡Á‡ ò¡ €¯Ø<‡q »³®W“Gù –ðÜJe Œn<-=CÜßТØé8OòfˆTè¯ÁÀ,ïy®Ô¤Î(-þ–4š?Eô)6$Yàáv\M,}4NeXv*kF§ÒìÌ´Õ{éTšàˆÑÃCÎþzjMj˜è½‹ë”蟚$—$_NÉÓ±†‡hÝ èÖ=wU:˜¾gïÑx#XðÓ9çL{ÍB˜ƒš@’p‹ÚÚÏèÀÔS 5Ô»Ö8ÒÝÒ?Tx‡š;s&Ýîn¢ž¨ÃXBj"Ïìo”…6€>üÐELÓò·}è"€QÔBÜÑš`‹¬AsÆG‘« ¦„cÂØÝ4ý~Ò “à UšsP¥W<«Ò¶z|ÝT„¤À·Í\â-]N5¼yПëOé˜2aýù^òí ,:uÎ9ÔfHݦ×ß?À{;xO”wÍགྷK×÷=G‘ ôAMàs€7¯oߤìùƒOw£¨Þó†™Hï×X"HÃ}IGs|K+`’4xE™$¥²4ýdšLBñgþÔíT6òÞ«tÂ"è[:`!¡n¡îtÕ?¸EÚ«ð°Á¸õÒ¤˜p»³ó~R`<`ªÓœs€:åY—Õ)‰‹Íz1©SÒÏ·-ÚÒ–Ê1îù]hËÔÛèP®™rgo®å{&¾ÐŤ Prö‡2Ô3¶„rûøÃ»(ߔŔw ¹(ß3ÉÕóГóCÎPö¸qš¸zËw悵ƒÀDønªá!°{8¨÷ Lt@}χ"´“²ÒÏ9çP;ɸð7êGM 5Õ@ro»ã[Þ*¾Í=ãOX™rÀ· àÄݘÒ~ÜÄ÷ÓV  ÞÔÅnÜö¤ÚŽ NSè̃ž BàýöØ[Œ6x,* 2–ïßå,†6A[«+¬a^!¢…µLq™‚V ž ¡„fÐ KqHÛñ^†Ø"Œ{/%ÇþS ¢s”ˆ†,~ Åi~ï~ö›cÐƪ|ÝÅ3Ý¿ËýCû€é µ@u{ÜGƒ[UâvXê]•±m+ãâßNº–h¶×Sî×S’\I>™’_µ”ܤ¢% …«ôÓàáPÑÒ‚fÕcÎ*Z‚¦Àˆeý¯©ªÑ åQƒÒnh!˜S‡tCƒ §¦nü³iΚ<†”ý|Qû+*#øõ¿(Fûî¶tÄh§˜Ê‰hú|’£œs€IËpWkK1šº1ˆÑþÝĈvƒø¸õ|Î6*¿lR«6 ûûTÃ/Í&~]¦a@*b¿×[D¸êçŠ[Û¨¢%÷Í+·“Àü¾Ä¨¼½þé#Y8Kî„XmÀÍ0MI;`› aÁ¡Ò¯¢ÌÈ`¹H{ŒÖ[aòF©† •¾p\ œá½ *‘sŒänH[/¨Leè·ÏIùèb¤{é¤ÙtH oÓ”»uɹˆ¢nŒçº…p³¼>+é{d.’b"J±äJWœy¼þnýY:Îèew‡9§­®D4®-„»ÀÛGNçÊ+˜‘Ä ÿ8:ùc'rÄÉ_¢ß­‚ÅzSõépÀUìàN/¡­¦˜¦®pý”C‘ïôÐ4=vP?_æ¿{€Ö5Кª­®ùæ_n¥’Ô5zz…(œÓ 1\ŠªwÚš€ñ—cé™NS°É¨ÉJ€Ðš+Ë ®õBŒ³•³àºFoµM»fö´‡É´§ƒÿRÀ2¬ß¥Åöº´àq9ùÖè<ët&F(°÷EþsRÉ)j_˜œ‹Ôo%¥)>}5Õž’ Ðb¨Ú£ÁçSg›wn=Pp«óÐ:dÄVÃÀ¸6…ÿX³ÓéU ´ø%ê/-x|¬x—šäÁ—š‚SÊ£‘çÆëF<%0­4÷GÌñÁ86¤̲.ìqÒº¶x‰hâpvuŒLj"×°ôH|I‡Î›zù %±ÇÚëÙè HóÝŒƒ²—Â.!²$x Vƒ:ØÒDaÕ ˜Õ-á±ñŸˆíÈ+ïÁö 5*élïÓ«7‘R„îaØF}fÈ£o_ɘ ’éêjølÚP»\„w‡ðIoüÔ-Ù`*3Z}^HY“Àœ¥ëåx™›Ô²x”`Ö`o)€#Ã^KžeÓãŒé—•ìcmãR #øÇ¥Ò]Q! &ùÈã(士 âΞ0[WÜ*gƒ·Þål)• Ål [xSô©×$]ø^ùšc]Y„¾¶7tÌ¢94BÃúçhл걆ÎVÖš[óºPã”VÓ±P´.=ÓcTw÷–Ní,òh|K¬¿<éî;—©!Y˵øN>ËäOí£‹ðJ¸áíÅ“¸ØJ^‚¸{§Xq|#ÎÇxú?Zje°È»ÖØ8´>ÍS”ʳ©õ,0i\åÙz…¶ñhÆÂK‘}¾ƒ!YŠÍpŠ3,ÆÍ-êåqBi;¯Ó§Øæ‹vóDkÒIê±XŸvꋉÈ7*¼ù*©rgkXXž9/s:PìW…œp¦sŒ K…בT©ÛÚ<µs¿#sàÒ4TF%. C­ û)}Çoÿ$I ¸SÞ›·½E­\õ8VR3=ßÑ{8´'¿ÍV¸¦U…4ã‹ÌV ˆ;#±0=Sò¢³¤‹Iòòü”Û¶Õt(‘pØ Äѵ ~ÈZt>DŽŽ$tsfŸ E®j[†Ýw¯¼§„ yTOF{Zd»¿„@ƒQ®@Kn©ÚaF¥ºv 3ˆqW.ã\J· Ç£óÓ³qg©FaÌ|Ñ$Ò¶Ê:Ƨ«òx­ï{µ½xÙ›Ôb¨6JÝ Gˆš«òM'*`-GÅŠÖ˜Ú·A;[ˆØ¯±Œõ&Û³<ö’ÎuÖø®„†òzÙÀƒ2µ¢Öº"¦•M¢@ÐEóVì*Ž@[Uû8ТZ~•+vÊÞŒ‹3ö¬8° j šæ@Í4d;[OØ‚†+È)ö´ó%J (p@ìLZpAÝLÇA®w•¯ÄÉ3.Æ]y:_Ô4m©É¼bTtÚàÔ.$!É@Ńö£#…¢DïU‚„µ¶÷PG–“4¨RNèùÅy<†\7Ñ·•i;þ`ôÌ2,±ˆ6»nUõp[œ}9R}–ƒM\DøæM Û§£dÁŸÅBéÄEÐègÁÏœË3âÀílîÌÝp´%T÷$»3MêF§#¹J’ì<ÝàXö +8¦¬š…pÒ›Z¿Vóý²›Š*ŒÃÕ mÂoÒ™“FÀ{a‡ÜwfüákŠJžf…>æ‚ÜÂÌ2çýJa˜ëI-]©7©¬ u\‡€ý>4X9SÇy zn;ÿ n–tc”e)ÀÃÿ¯9¡é¾‰H²ó:¬;¦¦Z‹èœiÝõÎ.gDiNÔ~uQãUJ!ѶR^ë‰Û$³¦€fÁIãیǶ<Ô§Ñh·iº éE„¤’šO3Dwk[õªðjðì`Ðk.:aWÒ§„E¥Ó• PT7oÚÎ=-Í&ðÄ£+ÃÎo¡&Ó1\«ÄVãžgϰTzBit÷to}iéÞˆ>Im†¶¶Ÿ¸04ddW›ô¢9d¢çNÉÜ·ª‡Á³ Õ¡;N·Fu ”À]<ºð ÀÌsQKU­V"âˆÆ`Ó²-n-¦³£ñ§Ž)MW:1AÆmú9Ÿ’©€ñV÷ˆ<æ¨ÅÌ[­Ü-C”ßßx…Z:ºjð2—°fÜ‚J”’Öéü²{œ7§]½oÞ¶l½õÊtÍŒ(Fo+°hT/Û ´åáúZWàDú`Ò¦4Ì©µ×»¶TײַQ¥¡½-h[>-¥Suqáìõ0=KVêô($„DÊAH®R#èaÏ—™ –zÒdËšPîzIo[8”ý8K¸r¶R•îgîe üC-p<Ѻ`¤Ôx¸kJŠïçópÐßyÅØ¥eN‰xR®ÞcAl*“7Ò•ò×?f…W4\µý:×’4&¶èõžçÛû¯Õë¿òñU³ùi (ÿ©>)‚ ÄÞo·½8ŸŸÚp`CLa"(*ÏÚ£Ù5s– ΕngB¹Ü÷ÐÈÒ6<®NØÙ©H®43J´…w£EC)áPy œj>‰€–‡þUœøå€´šPÎ$ öà_AæHÐS.t>ÁZ>e/.}wôئiendstream endobj 42 0 obj 4387 endobj 46 0 obj <> stream xœÍ=Ù’7rïô†¿aÞÜtpJ¸Ø§]Ÿë°¶Ä ?(ôÀ[²Ä‰=¤D½3*qdu÷pÆkñA5(‰¼¯úåJ,òJà¿õÿ¯Þ?ùêkõîøD\½{òË™þxµþïÕû«?>‡R_Å%:åÌÕó·Oò›òJJ¹¸+¯ô"¼¾zþþÉ·‡OO•_ŒöþðæéµXŒ^¸Ã‡§×rÎÀã»ôØ*©âáü­µ±B^‘áôÕãÓk#¼l·Oá©ÖÞÄÃÛ§×:ÆÅÉX&QèÃ÷øÛz‚ÂIpˆ7þðn{‘ìäÅöôgòã,.ݤÄ}ˆÅ{T€ÀÔa Ʊ«“Éïò œmžþ”Ïn½òøGX雬{ÕÖàŠWkãœpúÐ쵃ûV6ÐÐÑt–õv‚„ß‚7y‡ÚhÙLþ:Ã;¸(V6t ¬¾‡ŸΫ^ÚwÏÿå‰òbQÊŽ= 8õ0‰ÊÇuq—fÃÍYmW€VFºFA"WîK+ø}»%¯½ÎÛ 0¨Lyއ».§»–j±ÆÉ|È„ÓyáeØþС¨û1ðRx gY"àèm3GzÖÿ`½™åéµ·iñð§4Ä £ë‹0Ý‹<³òð ÙÒàoe„´öðoø;*8ü}~Ó:ß\H³©Ä€”é>(¬~ËëˆkÒ1HˆÎÂÜš¥8zLd:,Bêñ±_¤0Í¢¿E?ì¦ðé©5‹Ýn| a:a>§É›5:.V DñÒ챯4¤ Ï쌕šî2ÙDØbô…lÓ“¼$'üHP–nä‡9²ßd°â¶ ÞÓËnÈ³Ž˜Ð!þÎÔ°n:Qƒµ’%yc%y˜g¤yMÞ:8]öv*Ž86­;ᢂ\Tð{·ƒC @‚ÞOËõë›/ÖѦ»´m9#Å@zH:üãœ#v¼O‘Çìh¡ñ ÂË>Fæó"-P¢;÷¼‰ú8ì¿í˜$ζlk¯¤ePuÒìOÓ\+EmÆ¡¿ùë†-ðñ‘ŸÁB Ä@½µdrM0SK›o¸EwVO+Ѧ÷I÷ò*Ï"C«¾Í;—^öŠi:è”ÃìâDàtJ ПGÕ&Akå`vÍË,Š[³€Côgðkow<§S¬Þ»j3aAýq#²P‰l}²ÙÌ–ðT”½üÀ[ÐÓÛ.ïÔó¤Tç{×[O6¸FI¤×4˜©žh¾a.pD=êK(¨—,nPÀŽÞòŒ¾GO4%H¸‡ÉeŒ^Éb )—vF ¦Ã¼+8:lC ì"Ùo=Ùâa³{ÄRÙÑZ1 2ô:þ¨#&†‰gªRÉ+àÜá[²o¹¸ :È¿ïÈÀgÔâ@V>‡ÁJh}0²ÕìN0hh’¡ÞæëÑÂlj‰ÐëÔÉd—(f||µ’$Fÿ9ÃñKNÕ2j}Q-n¢"Áä$®Ò ž«u$´Ê‰ pùÀk¿œPMAø» -~k >gÙK%Æùùƒº¯Ë|5@-ž»uwzPuÒ‹NN®ÉnΗ²â|ÒÈÁ7èøq‡ßxQ”/{u­ÕF7û’¼J ýv`4ål¸MK:ã¢lrq:+圼£ µzU~Ì 9‹£3Á$•± ~«wáÔD_*Žƒ™ò’<¦þµ‚¢†÷Jt&%ÑN¶ä£´²…cóÉ9àrþ˜^=C¿¢çÝU(^£_\pÍŒô,™fM íîBM…cE´ä䀓¹“4É뤺üÇGÌÊ1ŸŸ3›pÎBEñ» é”Îsf2>sÊž¸/Q]¥s ‹ _¸»p£©‡npÖOI§£¿úI„â,ZŒ3e¬å*!ƒãˆwp$òØ‘xyη2•Š“WxÓV™$ñ|ô”òŽùiŒS¥\WÌ”´žµõ|ŸqT9xø.ÊÕ+=ÓPB´Ší†0«Hò&ë½Ë²ÑQúžá…hOUGèNw°0yêð_i'%9§; å$ûý ñQr*ÁcF˺ËGðÒrr ߥƒœë¦ß“^OzM–‘ÚOT²!ôCo„c&¯WøèA²âc Ϭ\KœTy%“S‚9æ7el‰aUÔèï€ý‡iœ‘"ù„­Í2Æ"zÊàLý UÝ=…Í;ÞÃ\Õ¬—DÍŸŒ&ŠˆœôØõ¯ssµÅ°äš4 Á“WH~êl>æ¿£nÈèU]¾ŽFW\1ùl˜Ø|UðáhM.¢ÒÒy½P¶MÈgyˆ€åÁåŒPÛ;Žˆ`©¨M\8rà:‡<˜m„ #¾#d*ŠQÀ?'’ó^Pv"ñeÑTÇz.¶ œ¿I£9»ft2Ô¦¤vÄ"këÐŒBÐÇø; -õ#¨×2ÒXýqL-ôžµË/ÖÇ*¶ó®ý‰¬%«íì+Ö8IêLM56*b¨èyE¶2Ê»Á-±u²/M|€Á‹R³°_žú®ÂgUwœ¢º‘;?fXã­o¡úÅw.âÓðL|dD#¹†„ƒõ@¼îvÛÀF½òYø ¯[¤˜ž& 1E๠ÛÏ™›`×vë¯6rÝeëUOÄòŽº¡ðDP`xË·$ã®.•víÍš»éçgœÙ.FøNE°›¹Ž±·¥‹Í0œ#ºKɾ8Ì´r„HÚÍÐC˜¡ µ¶Ò»d­BÎ[uÒõN³ê!³ÒÒäÇüf½WFW—¦5ôO™.÷ñÌÞ-Êj:¢KZëÙÕIÙªÂæA5>ÎN¥F¢u,ðŠãæþØB‘fW¦}9>JfxGÔ¥×3ÇHqg˜¶9Gëôùd|Zõæg=O¥Ö˜7¼ØMÞ®î‚7ÕÌÞCtµžÙO¥ÜÌ#7ËÚDp†6ð™{eR!LUØb õ™/‰Ð>Õ,Fòf5nð\­ha8“½Aã'RÿH@)FL)# 2Éú‹Õ º«û©-²˜ãTL4ÐmÑ@¤a/¸èU¡N4Yœúü~bŒv1Í©&ôö Ú«´«‡s¤mùêpáA|8±²G*<€ ‰šH’Ö°Ñ ÷üÝ ’t‚Jm„biZÁ`ά§mý™ãÍ}­Ÿ¥·ö).+1ËvŽPLô׿¾mFPšÃÑbpšat8tÞà>©_T¬òœÄ¬ê,òù5V59'ƒÿt0©BÆ?‚M…û÷áql*ܵêË/6wsVÐ$pfCRÒ=äwi“_üDnn—ñÒbz¯´E-T­Ù!ÉšÿófÓÐìù?ÔÇ«–7ÜŠ’9žgà™ÎãÎyÉ8mçD~ñòEA‚{üêk‰%@KLÛ{û$Q¸¹zþ¯Ožÿí·À¼qy+H”ð pÒL'ÑÅqøaâÀrCñæpi£$(Ìð·‚?õ Î&BQÐåû> ±£äôÕtPvc.œÀiœ-CîÞÆ¤à4˜KrKvKW}6/š„ 8œù<¿ÙŽôn›qV[B–b(ÐZ1ÁŠÖ\ &dVú“qk çb°“j„.)m'b‹ é8uâõº•©æ´Š®ú"'Ý8ç#øù‰´å²ö.ˆMôý/Á¨=Í6ÝDoCà{¦‹O­Ù¦ÈØÆ(f`\œ¤€Ù„6?8/®vµj`‰„ÍU3·{ëEÀö¢mø'Ð óCöâÙÚZŸÉmsPtÆ1å?e:M2:ò)[Îx¾wÝêê]— CÅxh.Ú±ê•V{@ ×—¼èÁqe>ƒ ¦“=Ä.K‚vÅfGP › nÎcô©.ó&ûçEÔÍ‹GÁ§Â0YBÔ@¸Ë³(ÏîxVšÂX'ݽ©äF7K”˜%RjMüÆc«x”¤Z¹er4ñ¦ËLÙÓGü59Ö„M>Êi1ÈçŽqÔJg¡õý6šK)Tíõð-AµäÀi y6Üû•fïðÙZª g5#à_‚͆ªðÁ²>¶»u¬qâ>I[ ‹ß©~³í€ÊÛ®d¨®Jý}2LÊ+ Ïô§4¬ §ô=Á‡ øSg1ã©f\Áªå ¤X¨ë~.¨>ŸÞVš©5)x7bpÌwzZ¹ˆ!‘þ&äÒ£Kw%ÜfÔv®&-‚!›´Öί]šü7=ùY$u¶6âœ€ì¤øu– Õ9“6¬·À]ãPchMÊ Ø£‹˜KúÛIçÅEtQÀ|F]eÇ×ÎÚ(aû‘>ÏQ[ôû“=u7‚s;9ä`&èí–#À D-iˆÚÙŽÀ(S´ÎVñ'`Mµ‰Î—ëo0þf:åxe3¶h’&Oó¶(£ýAùˆ­š'°3¢‹RZ.ÁìX9™ÿñù&‰Ô#l¹­ø«4Kq¤wH·†ŒÆ^ÅÜ´ÔšI‘Xçh͸$|°±†Ú2·sFü}Þ(•LÒÚ5ÛjŸ©‹ð³±'‡Ùæ|ê!ã¢#Ë|^÷êzÓd“”èvÔ5Ó}¾ûUž EõLq.ŸrˆWãüÌS?TÕwEá2ùªë©%Æx?)…ÊÇþ#ŽRðºÖ$3Á°™XÉŠðnÕÑ +ê›l:Sö‹ÊT?øªŽ…C%Î{̶ŠÓOÂ7OÈfŽ—'|Êcø8ozš7vϤ= ƒXyÿlÈc¶rlMž¸$áÌ„wÜuÁ6¡!Ó¬¹I R`&T×½[!6úr²ÛÔq^‹Ѭú¦Ð "ÑVO&ÚôXºÜq©“êSÊzÕ§5S*ù ë~kQ&7Ò…Õ‚çÔ»¶n <šžg0B'šÙJÇ€p>;S ›y!™ß8]±ÖV/¶KYË8WC߀<ƒ<Ÿà„à9Õ²TGÈwaz»ž´e(™ ŒgÒ@ªîu¢Ð~ãÌÕ©Ïëýˆä@Ué1ßdV£EFßå©}œvÄžI‡mÓDNgòòí2Ø|<¸ Ó‹Ûx%ð虉ïqUWgz W\f±}zHzÃ]ôW_Ç&> qÕfN%ÅÎEË ‰ ÷äeÉu^Já­@¦£Â€Ñ&‰¹º)°½EØÝö8И̖Ø,˜p"ÎâXäÉ>\I KŒµÍ¥-êc¾[â9J,›B&º¦qHÐùÂ~4«Dù‹iÃ\×`Úƒ¬;¾¼6\¸K×p×ß%% ôëܲ¤Ž¾y Wí])ÕÖÁ`616塜jqÌI.(œètosFRÔu>ÞrLÑ€Õ1‡À„7k¨+@öÉl€§Z¸ˆù[uº;-¦k^z†UòbÊ·‡ö<:…í) ­tæUßa²_¹v ëo‘Jî¡ç4ÐÆ¤ JO1TÌnZžSIVå¦êyü’u$žcûc»]©Ó p»Z÷•Îéø"rì´JêóR‚6$ïN£›M¸&ú1¬3Ë5Sÿ×ëÊmpR³(E*wS tŒ~Û¨+k«š-‘šu­€'ÑŒñ8¸«¦jCî…˜Mî´ln¾µx`æpFÍ2ãEèCœØ®ÆŠžQ`¼Ïš”íØDç¦÷Cãè÷ÍöZñ€Ù^iF»§ÃˆÐUË0œa'âk€µÅm|’ù’U¡bæ§ ^ÿ¶ÞŸaÍ[ÿÞR|~,'aÔO®‘æØ—g’sV'Ä €W)éèOY_ð1Û)ˆ[Òô^û®H ´UnO& ÛÇÑËp²QfJm+tz7MÊÎ9nªl»É‰ê¶Ïi+šÖLIã/•Á¦,æª_®¼þ+¼4=&Ü6óÒž2SM¤¢$ÌTG‡É2´$£CòÎ>íJïD7f]I)¡v:^‡ï+ìf + ܹƒOœ¼¥L`jÜ®Ö1ˆ•I+³Ã¤S•ÇŒIgm÷SíOJpIcY†íL„}˜¥#›®í [cM݉î$v ó}Ú烘ÕW±“’‹æb«ÒˆŒq; {…\œç•PŠ8eBÿoœçÂK¼fg¬­qpÓ¾ÏBºP¥–ZšM eEÑv„ßp“Ê xTr£l ½ ‰0Jgqnâ' ¡È/—F ôúÆÞCŠS×SóŸð$\$ŒÞÁ*Té€EÀ`ê­ð‹êú$2MZfüqIÞþôK´: ½a¦ÏèNúbg?¹R%'r\ gc]1ñ$ê‡Ø21É]ò7ÀÂû¾n3ë?gÆÏ¶ä…«I¢Æ@o"f£Œ|)ÙEç›H8̼ἃ WšC &&³ôÚöfú–Óû=Ë­æØQëêÂINu¦XyOƒ”‚¶Ü|èHÃL‘Á½Jɦ+>›ÎÇeô–BgÝ+“©´z¿+áîÊÔò &¸&.)¥­ñ$ ˆ÷ò‘\¡¶.b³úÊ(L¨"2bÎ ?¯ÐÊî—Ü×<œ’|‘ØÖP´ÿûж“lu(ѡª\°iºŠmr¶þêÝ—¦ê¦•‚0(µMë*.(5mXÙ©uœ¾{ÌScãF6;8÷Ü43S7°üzGÁNGô¶s€eMÓf! zÉJÉóZAã2Úî¤Íß÷##sÍéY®ñr—ï¥{´²ØJÒ7mòžSm^Vã€í¬“g— }^ .¥÷•‚1ocLÐàÒá+ÒĆLÖ2$€èNÑh>R›ˆ–­K8ùù‡¡ôœÖ†w¥ TîårôôƒWú7í°ŽPV¿©Íáè24û¨rMìÍæÀ dú+«P]eRÖNÄîðbËî\Ÿ­tª‹ “¼ÎeÛô¦2ºœìðu‚òø²Ô/pddoÀj¾YZ`§x>eñåqµI¬9•ö_/Ø }‚‚ê ¬Wé2õÓÅ(gÒ”ÀÔ ¡Nœ!Ãôß  öuI[ð´¨Ðá›Ô¶9²i†p{Íw¸Ÿº4üöÁÝsp7Ô=‡ŸGRÕ øsÚ’Çž`G„‚Ò"ÕH Þ§}\«ñ‚÷˜î“ØÉšx†¨b±*Nþ)=Qº•sÀ)Tɳ^‡' L$×Ù¥6jvÓH®Öv´Ý ê¥æ¦NÁc¾_×3’¢êµÄ¬BÓ[ß|+jÐÆ‘,8Œè«Šq´ï¿tf0Áñ•XÀIŒ`ëÐojŠ?Ç”ÁÚNdfóêÈel­ƒØÝóMv•&kwIIÇ übÓ¶† üô³Òu¡~oÏlÚÍsÉ:ç•%àDÀ†`iß`´p WùÚSVâ¤pãhTÄ;vù'¼Šžêûóo˜QÇÓ‰€W¾ozÙÙw?uViÛÌ7½#ÏùVäœ?=&#öÍ8ƒY ^í$µ¬•ÁÜ|tÒý÷œksˆQšÄïÅñJHМ¬ï åÄí3°ã1 ŒÆŸ˜µ¾×`½ÎÇ™°;f}ú£ß•HùÓˆ†óªua×ô‚iËë1ë¤t“ –añTÔPÁiRú§9%8òáëÒuºR„Úz~ÁZ¸7±É{ݪvÈD@´–ö®gt&ZG ˜3U-Œ±tÌóYÑW{áSáv;BbˆKY¾ntàјµ|–i_}OƒÅZ^¹aáž”×ùÜÔ!ËÊ€M'åC V„%šn½…iâð˜CzF¡Ÿ.ˆ7âÂn1DBM'ÿì|™é˜O GÛ1ׯÁÀF¢W÷uéÃ9¶Od\ôCd\2mŽ—„Œgû.Ó 1Ïy+Q¾ÔéÆ_qæœp SÞœ 佂ÓÊJ4Ú”zHgÔ ;"—lwõ'ßЙ‘GJö>ñ=…TZÑ;·/ðÙQ¬þ&ÃÓʽ ×äÊi*‰~žìP±Ööá΄Tw÷€þŒ”êðÃ+% Åe"rß ûæ.ž‰ ÜÖʯٌ‹cp½DãÁÐ/K1)iŒÁ›%v3½«c§ÖÊ|wwªagGmÈ ô~ÏãÕÜ ñ%Ž”³3±Õöå–ó>T¾çq…æR¾žæÿˆ Ò:6˜1C®!K¦2ãU‘Ç:´Š&S¤ù&£(œðŒž*çTò—=qÄÉ$<óÍ–"•WŒ¸Jn/Õù€Õ§Ò©¼Oh€];UÌ –’õ´kBÆn®–rÆÍ `NUú‡¸=]¶Á¸‰%WÂ_]‰A¹ÐÛ:ÇüÃó'ÿ ÿþ5Æñendstream endobj 47 0 obj 6855 endobj 53 0 obj <> stream xœÍ=É’·‘wÎÜæ:|z=Á.c_æfY3;4^äö\,Ä&Õ䈋ĦhößO.@½ ¨~M6å *BÕ( ‘{&ù~:S‹>Sø¯üÿêÕ£_Ï®o©³ëG?=Òôdzò¿«Wg_\­ϴ[¬ æìòûGü%¼Òz gÑØEE{vùêÑßæüBkã—çj19…`ÏÏa½àŒ1‡gøZ‡Œÿöò0w–Sû¸h‡ó_>…Ùþzß)§C¶áð?ôJYãïÄ{£’3 ÖÁ1ðOÞ³{­LþG‚Êð‡·¬Ž &…‚]à“tø_|S0ÆVÀCŒþpõŽÆû¢>.¤—ì½Æ… n ð|aÀy=ƒY¯K‡ŸŽAǃ.HK‡/Ÿ‰×7ô¬"üG›ÔVG*¨Á…xx!†—Ý8mM.;Û y#xMí­ÈgyÉÁGNKN9]~õèòß0ÖêäQH66dž-G_ R^‹D›ÊIV.ba‘ r¥j­†¶nbZ´Ê‡ïð1,)ᑺѧd zQÁg‚ö³rL/ëÒŽQé3ìõŠƒŠ* npê€T¯¿¨`Ãå:µõN®RÀKÀ#ejþð)Η”‘C×9~fP­³z]1Y¹Jy•gr9¯²²…ƒybÆŸK ‘ |žVaùêÜëŇŒ{APUŠQžàÛL%>¿}{îÕ€‡š± ‡³Þ›f4mÝ€>Ô/mF謂¿ 1±Ê„Ñ2ÆFÄÒúö2HÒÖ™ÃK| é=Ž'a¡ø©ÐaѾŽZâý¹‰€ í2K‚ÌJù}‡zàôÿ»h– ––΀6S·AqKø…^x:–R‰'©>”m¥,Ñô˜ß†,?{->+ª%›Ô àÍ9¾óÉþÁ¹ƒGYY›c·Ó1¢%_ó,i_±²Š ýnm2Êò— À\yUIW„gÀ$LVIU𒬵UÍ«ì«n§×ÑU·ëPt{£€} ÓØ(÷ ?‰Jk(’åB‘¬ž%1' óGb½AÚ&þü΂3ÑÊÖY ÷™4ˆ¯H¡!&æâ¯âµ"g¼`“:;þDZ¬Ÿõ ÿÉU‹Lôt$¹Á!q胘rÄ †Rq}ܨس`ã—8f‹fk×qŠ–ÕÞðk d˜'·#·[°ó>óúEKø~ÓI·â¥`2 xë*TVW°²º\\~øf#Ú´Î ‹¶1¾Œ !ZÙÑ Ó[!Bà¤À<çïи Y€$æÍpî[’gÑ©ûk­RG5X|IZ7ŠV¢JbB2ákVÑOñö¯YW¸[z:Ծ†ÐÞ’œRhf+I²¾~Œ‹ô¢›Yf&Eêí낃†ÛZ°/ ¾¾ùæ8÷S1XNòžß«œtb§Aà-h5³c6pù¬Ó ]rôObÍŸÛu]àQx©Ì~Uö¦ì)âÔxéBO°A˜è]k+|nDw9"™’œO×1e«¯l è±+VbR00©Ë Jf„íü{›+Š9"Æ*@ÀÙè¥÷n³ÙcbÚL½¾Äh‚LÓDOÅóm™=šNp*ÖX* Ô­¯?Óê%t´i:"›··>`¶O"|[ÆÍýÀ³;t³{aÄF𖜛†ë¸.øã§9*88š6†:›uC¾O0ìyàD#;O²IÏËÊÖ-¼99ÕUk‹!œ¾ ‰(‰áœÓæYaëÖÀ }­ÃTÔ>ÄTòšÐEE&ØgaÖÆ$6˜!9²XrÁ¼×6ãpz˜{fl–8B‰ Õo)ÀÁü*1" •ÕùJÑ@¤œýßäS µ`Û6O…Ç9L³W2„xÙ¹=,‘£Ûó„1)į¾7`1ì—M—ô™ÌÍ flRû0±]³øuv\2¹Ö$±a†#U1{è£@ÂG3 $À{q5ˆXÀDPΗôX‰³žDÎm¢?2:%ú'©øYÁ3íðÜÛ¯J5Ù‘R-™Áu6v 5ð_—¿x û$† sn2Ömsp¹ä„´tI¥x.š°Tn0 I¥CùÄa¶S?Cð´ <&G¾£dz733*´›G$“\ø‚7ÝV,I€I—ä­Rs”&Äl\^'ÕÁ¹[OƇL¶d ^sýpÉ*¥Êm+†eH¿§Z¿`V³:f|f ]È`צÍCÇ]ºÉ̦Ý&ˆ»;²aõïj_3øÉîŸ!aÙFW7.9¬ ¤!Sor&Ä­›0ÌiwAHKšm½d3»T¯T%¬:ß&ZØ S‰¸ºN¹N©¹ìóR<—1\!@ùzOh6\¾wnÁ5ÇŠ[v¸”Òa¨ÔñζÇ;CGäO ÝN(sØD4\£FéëÖxC4Hü Åì—`€û8§Y£°ÚDŠ2¡Þ³h6ãN•"†eï¤X XÏûÚ9Jo¤…á±d=’u½é& ïìÑÛlkóéZˆ,ÅjkófÂýi—",+„ݺ<\(_™L‹ôÏsÌ4J#"^KóÞŸk•AÕ…ÎÉ”«oŽƒ?ÔÔZ›ˆø”Ks+ ×È¿„_ tÃÌëäæ æ1cÞ§¶c–Æ>Õ8!¨mixW(7¬ÇxË„QfÂcÀ{ZÍh™çìŠÐàC,B]ÔX …xX²±§guÚ4y©Bú96!%&-Π奔×L ‡É§UªP£¤4ÉZðˆÜÑåã÷§ZCùÞØ§IÚ2^~±]Ê¢g-ÐG9øî”ò_±Q7Ÿ](¢™ª¯ŸL&!(<Í>ÕîºK•Q†‰ƒ÷ï{ÊB¯y„ÖõÚ¦ìLœ­K]"&´‚ó¤èc7ÉQt¥U0ÔÛùhD=€}€´Þé“Ï¿g0%ëKMÑÎÈè.ßÙåÁ&ehaV*í/15¸ãÞmFh&TY…ÞbV½ï-×:s¥Ê.pÔ_`n£þÿ§HÄ š»cfë1ÞÝ•Fw\¡Srµ "R¶x†%}¯,:†ÅãðÝëÐ8$Ʀ ñKþàstÈÜåÞ$Ô¹N[Åmå. >„4+çx½^l‚õ(C{ÖŸÈÁSWÆ@Äá¤:?)FÛ3ÝÕܦÝwÍGBpÙrýƒ÷Øš’{¾Aî†á¦h¶ì»Í@´[&wÑm½Oʪ¶…üÛHˆâœBwVy¯•J«óõ˜'ô{]€ÖùäíBaˆf—ÑïÎNÞ–´³ñŸÏïrÅÚ-˜5<,ÏÊóó`ºððmncBñ~h³qÝZЃqKHm¡éæ‚ÞG çºä«÷7Ýã“5ø©‹îÞ9Øl±Qi‰Á=@LMPŽkKîŸp`àõ´ÿî\碩ÇÝ¥é¢Åi`Ä\ç4ï˜k`A+øí‘œBÄ[‘O–}ʳ‹iÍÖ,æø-NñXe*G[¾ÝTlvlKÀ—²ŒÈ ‹Ú] €¬¾/«"à…L ðï&Øûåe Ö ‡ã·¸L^½›xmA˜»‹ì¾÷5G~ñyT3ÙTrÖc Ò{ëÛawÍqòfòáw4µÅ+<ž ü­œÖ¹•ŒY¦1YþŒ¯Ó6áØ,yÍ-wÑ‹dÔXÎi`ˆ´&äJc¹T›‰Q±ºoßç®bÀ[æHzíwQÊ:4#¸mšÂüÖÆ\;³[»žqÿ´—<^î¢ýó•>g¦æSMž¡4•Ál[É]áð)pÓWÈ+ÀWÚúnf¤¸ÀNt}[áä­Z¥“yx˜g¶Ž©(üÕ‘Ù°Q@ÐŒz{ÿÙ‡ðu†íýçÿ8¿ÈÛÍ)^LÄ«=ü¢›‚Àd· ˆ±¡÷݂““éRgý€£Áƒ6Ãh¹r;MhtKðS#³Žî… — A¾åbB¸Lç¢ÞÓ›W!‚°{ÏÆ…$DÇ6xªŽ_=¤/vGšWLý½1|éU»àû5èœ'¬Œ¹×¶-Wœ8àŸä^ÆìçM“G…õf.<õÊoŠ] w‡Qoª)“H»TxoÁÍ+™Q¤É-™±“›Ã0ü­¥ˆ]H›v8À*`èGýjÎÄM×¾ñMù0êϲ2ìäûíÄ2ˆ†æ”¤M—¥§}tõò]ÚO÷ѵ*ù=Ÿ‡>ˆÀ˜í–ïõ»§mF±‰ÃþöS+Y2 ñ˜?ýN6’Ž'F¢tà¾WºÀâ¹·§ ‡6(Ä“âŸÍí~@ÀvÂ’O;&‘’…yO£ýÇd:IU¤y9̳ҕ€¸š:äêjšÀ¡‘ÁVªÛî+çÏÊädT 5}mI Ñî$ñÑ©×AÌØ\DùxAaÜÚ©à?-maHÛŸµø§ïŽm-ªhŸkͱúr=”¯dŠaà$îQ˜d›2}€ XlXRc·ä-ÇI™8áDy9°ÞæÏØ3Óc ;•#*Dè³­Ú$'k[´Y³Žl7ì̈mÃHšï-~ˆ7Ë6>t5Ц·Ú·—”N3d}!ÀK¼¦ÝÙÒë°é/!½M«»ÁÕ4Æn>õ›±ó$w0)²¢äEû]Ã6xXâùÙj4ˆôÕ)ÇþÔ³«K‹}®¤×ü–‘{í =êyÖ™Ï ‹Ý}Bö™JððlæØé¹kÔÙÿðÂE~AîlMgÛã¯EPm³3(Uµ™~ÝášPn’ –a.ÏÔPÝè kt§c¬‡EÆgoŒüÕ‰WüÚby¢"l<øqUvùÅ.c¦^d»¿ÙðçsªÔÃ9¹»‚†îƒ|/+¬å3ó±NÕvÄ.,ªþüíªü C™Rë°¾÷XñBLsUZ‹û¸îÜß|*~.‚Azt$#”_ˆ ×,…i@ˆkbà@—Ú“ÃÐ/>Ž•‹”í`¥ä× jR«äVPѳP!cßúu‰Ã‚ì›M¾?·˜çQŽM`¢ûSÔ“ÑÁ2Ýf~ÜHÅð¼ŽQ@ûŠL`yS?E7vôž¦ÿšFó)Ÿ¿ã!½YÛò\?ßäÑëopàGÿuŽ×Ébî›B`»*®¥Ç8?̘„᳊¨þð1›%¸y/óYèI,'‘Ó*Ul®³],/‘þ{uˆ•®ºAÎ=·°ëõ û±¼6ÜW:IEßÕéfl…ÙºÁìèùˆl.½®¬xõîhé×·îwi(ž-Ÿc ÆšÙ%¼zÐÒùžˆíËba¸r£¶Ä›Våòyv¥òšg îž­ú8¬î¶µ‡–”…Tr«¯J­„Û¯€‚W¥nØ;øœÚÃCú¨ƒžå6V¬ëé¯HLŽ_d3ŠY8$Ê#úâ”yoÙú‘Y›\ô7L„÷5o÷VGlyª+”šS‰§ßQ˜]™8í:•qMâè q°"úÚ‰šª"¬é˜Ô‚l;C[j™Á![KÀB‚X¥ëàu^b®?æà"7v¡v¯yX>N'–ݶ"´½X7äîz±îŽ–oóô¥BOµ¸Äÿ¬¼Ì'ßs„Á³ú¦¾E„õ´¯ùï=­ÂpÇÊzã¡ü¼Áî¥FÜMê’“=Ï®]ptÚµAT–üDì&楱…ˆ‡ÐÞGíú Rñ¬¶Õ×¾O~är7 >ªÅNë`PÜmU¯~þR-gú¼6Àw6Ÿ]$¼2ï.4Ç­ÿyùè/ðïÿâdHendstream endobj 54 0 obj 6244 endobj 58 0 obj <> stream xœÝ=G¯Gr>ÓÆ}0|x¾}ÏÐwZøà´0Œ5à@/ È:HŒ |”D…¥½«ª{fªÓ„Ç’ÖàæÍt¨®œúÛ1ÉÿòÿO^=ú‡ÿð7/Þ<7/}ûHÒoòO^Ýüî1¼ âMœ¢SÎÜ<~þ(})o¤”“»ñJOÂë›Ç¯}rÑ·b2Vkk.Óí˜|´Jø‹=¾“ÒŸÜå?ñ± NZùK/´4—ÏèwˆQÆâùl˜'·w:èI+y…M€Wæ/ƒ‹úò ÿΣ8£õåž=±¬÷ÓÇÿû—ºØ˜bñæñ=þûO.áe%´Žþòǰކ .Ïn“‚¥|ÆCkíM¼|ÛŸ„3Þó§_ãË0µ‡íðßÏhkNxáð9ŽC,ÆÎÚ/¯i@½M›)fÄØŒ¯p43¹ ycEF §Z›Ëçð3L6ØvO¥‚ÏÄ$`Z%Š]ñ}“>tRËš–¯Éë¤ïo•ŸŒ e ]ñ¸i%‹WZHã¾4ø’¾Ç1Ü$ágÿ»'¸:k ùÔ_°âsó¡Ÿ”Ó,ïüp‹È85ù€$õø)Pž)…!ŸæM>-åŠ@8ÁŽ^\`ÐZ×Xƒ£¸ù¹…¿¤ãp?'Mgö6Ÿ‘FTŸz2°æoaj«ü‘ø“{G¿>âîîæíÝI5YkeÚå}‚AðiÚ²¡øòžý~Ý=´/ú±Ñ„ŒiÊï̈»ò©–#<ÃÄ9œ(8‡Ð€bf>lbz:*{l&Wf7¿ÌÑh›]éC~ {€ãyTà0Ë`…ƒ“%Ò¯ƒ<ËX°ÏO¾aƒ½œ§®ŸFe{ü ‘?£³mÖ°üÎ;16K4¡¦Þam¯m™úœÞ–´ÉfõE D J–ÏÇø‚‘ÇFvÕfˆ¨õ|*DXÏÓSÕå'2"‚¨|ɶð;ñÄ¡€EÍo  "”@|ZÖDȰ™/e PùdÈÃ&tKUÚjb¦ÑMÞlóìèQÞŽ%XÂÚYÍ:86Ô€…yÄ" ž§§ˆ^» 4ñíÔ½8n ï'm»[OÈ¿ x@x¯2X BÀò7î¾]Þ̿֟“unRI$ãÈZ¬0ÕQâÀÎÿâj}ei¾,‰óuZk²ZšP’Dß`îh¨„^|—||Ä w!laò5f⪢Ûg 2†MÛÏ©Ë/AøëŒæHåaFóÒhømÓ!ñì°¥}ÄÝVi/ð‡ N?.hÖ±Fé··]Y™‚@ÉxÈ^b°¡l¨(aXÑJM1˜_lÜýdTî~ÆïŸÇÈ×dü¡ˆFZÿy7ˆÆXpU<‡Ó>¾[D‘Ñnâ*¼"¼z1ܘ7æ:±D¨ùÚžB½ÌÌßÊö¤mƒ$¼^¸¥À$BíhÊ‘P"1cðgM‘øi}Ì6¼–r x@ŒÅhøàç ±Ð„ç# ›!àÖùàÓŒÎ@öí.§¤ˆWбàvœ;Ì•ºAHÃy>Èß¡S¨ ²ÀSézAç÷Òì’ï³¼/¸sнÀèëbÜà "L8¹°ír{`ôe˺½“5xU9®öÍIEOn:}xé»™0 ­]ÿ/ œ‰ð¾èzS²k´B³:lÒÛ­‰`HÊøóîÌ6Øó¬èhú+„SˆÒ„ƒ$o æ‡é“Ú*¸{´$©‡\&pµçEs:s@‚I:){5ÇŽ‰€‰â]lºeB¶É>?…¿*[¹v¶œèP衃UJ†Þ 9 fЂ~nßÎþª¼ç"J ~Ã;º%ŸˆœxÊS6'z¸»Ôu pq§Ž¨þܺn*‚­bÝPé~§x7©×‹a=ûÏ®ëüY ]Ö›qdÝ$u/29rÑ—Ws-Ð+UÃäEœM4¤_#;1˜óÓg,ß¥ÍøÆ„O…ÔÛPHY\¿¸/h}C‡ÑLÚ ¦l-í1ïn ±Ü#B!¨¸á"Â7t?1a–,„PFBÝràïÊœX2$Ûßi[cOT¡„"’ L²ÉﻊÆøJ*äCŸDt h›.Åä/‰'%)[~Žó[«J%º“zr>`\¶ƒ@•!ù.ÒÖ¾¢ßþ y“ÐMwÂeS‘êHEçpÛtÙÐËŸ"Ê * ¤Â˜Â3 Ûƒ®ˆ]¿Ê‹”s`x°#XŸvCTD“RÇÂq„Ò‹†Yzo檩æ¨f*0EJöŒÏSã¨V¹4–ç•n‡1ÿP:‡ŸçL²”Ñ¥g ÿu†y÷ähüä¸=|µ„˜eô=åT}»†Mÿ6Ù*€¯9¬ož ºi-°/e›PŤºü–ôéÛ“*#ÁJéã‡T3e|êÃ’@ê¥Â)D³*X,U–6ö,(˜'¤½m#·›\`±f®å±]ù:Œ—@û_Ü€€Ù†ËßÝvÌGb¹O0…õ Æ.$ØrÜg¦/ÐźôåAƒ «'œ³€Ø:lHßݸ¬Õ¾òü ªª.jõ΂¤¢Í<¨8Û.ÒÁäÈ”Šv°ÎOZ9¹ÞÇø¶àÆI ±¨Âjü’h‡ttíîŒ%Ãèòot^H¶»`h˜ó°ÍdP8G{}PíH†æ.\³¶˜Àzœ„7£XÂÀEÖf×Ð7ÀàœZ`G€vBèÐ5•=ȱ°žÕÿ'Hô Vn5s8ÈGz(‰Ñ¿i)á@DÃLDŒÈ9éFªã‡ —6\×øMoyH;¶(qÆ*–A+Tåã¬4‡`¸¥±1È–2½ä JÐ?å q=sPP5‚)ªAARªÓÙÌÄÂH›¹Ÿ_ðe~­öq `>|Φà%Üà'ô}Z(œxOá]뺎(¼Rƒ„QáWOeSi‹v4jãVgïϵ©ePñ$üñÏ%áŒô}ùG\_¤™¹&z|Þ£ÏT"ŠiY®ÓÖóD0.Ù­WMÖîÆ2Ìä£>¾ß6`³}ÔÀ¨vCÜ–pV>ÓŸ$À/‡Ç¹ö›U%;fwÃ…gA? wõ¡¢…¯BåCm“¼m’0?úë×õ´ÞBã»Z¯sÈ‹Ây<_Œ¹pw2[ŠoN°$ ‚£¬Šy¢wÈa@xhÂÂï•£ž0_ÞÍf†êÅ5rM7À×É5Õ`o9e;,µÐ”Q¬§ó|Ó=€õêñvB/Ê¢'0áb¦@‰ßH儊=€pÀÆÖÚôŠ_W„„*A (Pà‘oÓ p¤(ý°; ŒV£Ëõ©íõ[Tðs´¨‡?=¶ˆÛ(V£0–QøY¨÷B&ÞÒ_°Û…â‹ j¿‡Õj­í­E$Ú·Q¾¯|L®Æž¨ëÑNP ;ëÇ‘‡ÝF•NHœ²/˜)Ðõ´(ƒ°:5ö=¤šƒT•ÑÅsr…õxP‚S@ì:Ù…$øÈ»Ý ÎÈYlbš(<@{CC¨ŸRÇÇ.ÒhMQJ]ÿƒA阼¶gÃ*{¾dïÍ›3¼ÙÚS¼¹ËJú1rd%è-ž%þ¶ÏlËÈ}¡ò¦ÝÏ–¨n<<‰ÔöE:X©ýÜÙ$ —¬sŠÀiÆÞh„Tå¦NT€•Ì᜷ºJ‘nÔÀj±¦9~¹ÍOa°ÆxU•õ¼ @%MOdDÇø¾u¾‡ÔµeO;éjY ÄË)’¤êiëF\j«Oº5è.{¥ é»ÐM…hº ¯YW‘:ÂTqE˜ÒV…²«ïÄШ²?·æÖ¨7z£AB *|Û„q8–æµÙp!ÔÃË4q`ƒ5‡v°u'#!ÈýXî&¯Ã õ5÷kó6"(lEaû¨eÕB?l‹6¥¬4Ji½|d^"ô޾¦‹é>s"ÅS|PÖíq¦·|ReuÔÞîÐéÛ»¹CTÂrkúê\—7µvyûˆ¶•Òú^¯oÓIÀð9ƒLÐbEvãôÙyž›³ñFm¤Gjcts{8iu,ÚÃ¥‰,èvÉ_À#óçni—G N^!¥Æ’ADÅ&úŽft@šf^ ü³|;é/訃†tí¤ÄþeÏÒìK -‚÷²1o pF[¬‘·¸c+èJëDvìn_;$_EEÞ[BcWö8ôc7ìŽÍ–rõ7l)£Ö¥¦L2•8»¥HÌ(¹æÀ²ŸäQÜ™„¨ÆX*S—Og>Â(MìÛÕøá°ç+'˜!8åÈǘÐÇ„BÉ4ØÔh€lž‘7ÉQ~i‘7©n–‡{ïôpkD™œÌ=/0ÆÉÁ–[¥á‰Å£x$/è*›©$ 9ß_o+a“Kán Öoh†oÓoÀ•R3ÔýVg@sRzÐð§Td(`Ù ‡|™0©K¾ ULÖ1g…ÁêÍ®iFÌÏ¡º(œFË!®Ö$ Óé Óý¾L³×é‡öÐtL‰tµŠAÍvr@f]¡Üä &aR8X3éÊFžoÒf‘cMÁ' ™Â8N8¹›W›ôžY³`ί̱<8¡ÓGjØ·©]AÒLz\³jp¿ID9’fµNbQ¥ùHC™(Çg£$p k F¶ÒÝÙKóveṎ¿Ïi‹rT¯ô¿ìžÈò4ÓÈšlòÉ~‚Â:üUâ9Ž‡ä© #çàNºòVUz™´A– _!x7± ¶š€pUÒt+ó…'Ýëô%*σ”‚ŸŠàÞ­xe^ý1ÇÁNÂ;ÒHTÜ3+£¯À_¦¸Ù»Ñ( }»ýŽuý–©£Ó¤ìIuy—ߤÅÖíñ¼±½Ç09£†©_dlš½ÏôˆÀ`D_¬„«|#ç÷@äa6—F5ÿ n™ÊWö­";J&ïzç5V¨Ú7U ¹âĈ¤,¸O‡P«Sé©×+xséJÚRI.×+?PÎa¸|”SÇ@ÅZnpw„lØ€Ûj`]wzv˜×Óè ´(ÛÕ›ÃäÏG¬  XŒ)`ß=›ókë£\œ¼;*ªhÚW¢*‘LDmx&™ëÉ,ä¤ü¡JÇÊP¡ãŸ_- Á³òüfs£Èûá]¢] 5ÓSÚïñ¦D”'a ª`»f7÷ ´¦HŒPÖ ì½ÊÂmOß$¸ŠÞ±]›uäÑ ™VôŠ ·Tz>à_ DõÓ+@ºAAQG‘LÈ¿ÙȈA%½ÍçÄ® ƒ=z˃'¨Õû&àDMab™âA)UUõ9U2íìD–yWHŽù;ô;hm:ªñ¨­]]iûš¾7ø`ëôJòš(¤ì4Üi«'-8ÑÑ«¶i³ŠSxC&l®óò&å)ƒð4µòFå^–åô½õ©pÖ*Ä…ÓaëéºO˜¶˜Œ×¨-dɪë.Øxˆ“;¯J3=:IêªTà £¡w>zRÄ~ÀÌÅðvåªôhÌnwYËwiYÜ êâ/þ˜Îf¢dÑa:( «Ö‰Ü jAîUÆzWîòþ9mUM‘hÒê ”óÝ(g“Sćn”Ä´ÃR¨¤Ð…7ë–›gØr-;åW›òÔÓfÎ}s†¦çg¦‡Ñ™w‰³¿ÇâÉ&ûµM `9{ÛÙ Àe!âµRCœÐdxÁ§whÂôÔílœS™06EadÀ.Ïk€–Ó‹)HÌå¿+†j²M½*‹:&!¼Á&ÕKbË'ÜÀðY¡îÀè´˜y{§$ÕÒÀG°ÎÇ_6°ÅŠB€-%°u?fPó¬68³ì÷÷†oaIÄ>Š0êôuwMvÒ”.ÄÃÅÁÀ¹Î¸ʤVÅ»#'ÄÆªtÕK‚峜¼"*Zm1o‰•®ÝÖCWÑZ pj7XçíÜÌFüÇZâ¼SRò¯"o¦›+]-Ë•Y^‚úå6Ç<©ä]»‡ò‚øç“œ¾ð~¢Ò8{˜ÃzÿT#Ð* ;ubUZD@îs>Æß:+EŒ{îàÆÊ;Ù2`N¸1ö|±ŸábG‹N†þc]¥q*-àEuy› âã(¯§Vž•¦vËïÐ&bäDn¯ù™C4©‹³R¦CZ6€)–62îÇ¥ÏØ`’¦_/W t:´qŸë°\ì·¥\ðͦ 3ç¾Ko ™ð’«œËÀÙì÷Úõö¡×¶Ö¤}ò¥æE½¹ {彎Ý+gûØ*‡³j!wyÒZLèxj:b³Œ2$È) z„³—OØ+!ÍN9éèܲÓÁRJPÛ1ÌZÞ° ',oöƧllº› Kg½‘ߤÑ0—æ(™—öðC'õZRáô˜Þ¾ß 7;õurìö¤Ü;²q¶ ô>Lã½m\Ø„pªiBLG íˆõq@¼MoÝ4÷Æ+b¸³Õ¨<½M¾kèƒÕXLu÷ l÷øþ/q3X.#»eãýNŒX¹3º}ðÈmn(ÞV?¯ioö'(¨¨•suÊÓçK{½·)ƒß5²ŒÐ^¡›vZ ªkÔÎoÿ9¦Ñ¨‘xb±ŸáÁ…̨Ùu8Êc©k]i€OßôcšL¼ƒ]ÖÝ)÷sÖzeº†óí]”ƒqK܈;ºe€&ñ¥XH´d½[Û!Ѐ£@ß¶°E×(%<`X“!‡ËÂÜ”DAX¡d¹Þ¨¨r¨ek``½k5¹»ÅÃ#A5C”ûb2¹h|ÏìÙÈ<ì\ò™`0¼’°ê¸¾üæ]D·5 $ŒiˆaL88ÞæP…©à–Êã(ž/‰—s5d×;ÀˇM×1!°„½VIp½ZÔ×ÝÍ!ÃQ*§‡7 Vn·Å‰dɧûº`U€cË+*!è«Í,æyÆ#ò6e!JPگƾàåbut¹ëÎE<½ªý@uˆCÑ•ø§+Z>÷éè«Z±ËPíÐeH²ó«‹Ýߤ¸b;B:߆Å訓(H²í«ù*&_É€¹áð#9ï=é©<ÔRwœ¶aÆkz"û~ZéÂöjn5óŠw;êé(æËÚ #áÒêÌäÆùWûí¾O²ùqn8ù‘cõä¥Ç4š ó;jèÿý¡<ŸBׄ³’±Æ>|ŠéGÒ”Þ¤…ˆ`æS'%ÙS£ÚNãq’í7X.µ«&©¸ntóMþ%½B^‹¨ü‘$›qæ·×*Å]Úëäÿ'¦õ²³Fs#åå£úHQ›…HÆA*Λ$Iܸž·öûS=àpÏ3åêRÑø)¶L]] w௷Y¹õñv’Üsða«˜J_@¹¦P{0±p.–6k÷FÄR¥z ºßjäÞìÒm-'Ø”ñè“ÆeÈRBÞç÷µ‡¥e?®_ÉËG·K¶ç¿â©w¬»¡‘¢f^÷Á òL i½GuÕYÞ7‰¡À Òd8F¯do]uwpŠY›¦(˜Ø÷óì[÷Jç5ÿKHEÕDŸæi€Uñ#eqjÓF>&t~šu€ ›¥¾º‘ÏþÑ*®ÿkEÕßáÊx ,åãô¡:aké ð {Kíèxé£åô[v ípØétÍÉR¤¢OXÊ]l æ@Eô凜•.ì“®–yéqÉÛòõõâšWßÁÖàݱr@²´ÅËÑ¢¬ŒÙtªjÓšMöNtaà£vÓw¢Eü»ÏfŠëXº³‘€ Q°ƒoÙó¨Ìà¦E®¬jÙ‚ã[PúÝ˲]b'åÚÛ³Y²ŸQè«©Óe»y¯ó«ï’÷º¼þáíÓ"û­†gJSÕI’wª£7|´r Òp¶ö~áSg7k Ad=soÑ•/®Æ»²œ:VY@µU¾* np»  V¼á†1U¾W[«Q¢¬µµhRËä¡+\ÛüïèZ1HJ[—ÇãÙ×-Tœ§Õ—šÃN]`c):ÝÊÁàõ$®öÿ‚-€¡Ô-Ü´ ôƒ‡?¶oþ UµÁ‘èBU+;öxågêœg õ‹8X¿‹0®š μ9yÜDzm^Ç«WWBZ°‡«°/‚LóK”n`C†Ï”nœOЦKþÊL¾ªÇ[ê¦ëÎc­Ot‚>ÏÒå>3F®œcªG3Œï0M“î½Ô½4Dl÷9ÀM„0tsrıŠ™h&ß(»8?vA¸JF‚Á–¡Í{³G†ú+ÅIrEƒÎ¡ïì­ãtˆã¶óaŽîÁæëˆd~8Ÿ÷Í­ÙyOõ­Ù½¦'möNÕÁá'ö÷·²„ë|#ÞãuLM±ö¬íõ g€wg…>„‘ûÎXe†—sݧÍ(O“{§[óa‘,IàM_Z©}·%»›°ÓU]÷Š<1N†ÜJ T)ò•ñ&8×g¼’:Ù•]ÏVT°Í"*!Ÿ-wbî:¸š.cõØ$‘í È8ñŠðM]-Gn;»gC’l:¢N‘äueƒñ(CuѨoÜ—ZhÊ¥ˆ×‘Gx]ÀëE ø0§Cg&€ ì­v¼Sð!fV\ß[SÇ‚5V£†­¶y¦nÅj™ëýÜ¿YAÑW¾Œj•¯wa ¦m*ÐÛ¾Ì6Ú—Ñosñ4–ª/ZÂ̪ô, ¶¼$K°c¡,&_Ä ‘…j @·´9¿œ¾ôñãGÿÿþz’ªãendstream endobj 59 0 obj 7605 endobj 79 0 obj <> stream xœÝ=K&·q9ŒsrøŽßþZ|?"ˆl)‰ƒ^Kƒ\,ÃXí[Ñì®v$9Š“ÿžªb“]d“=ýÍì®×úÄa‹õ~uëûƒ˜äAà?ó¿]_|ü¥?<»¹‡gß_Húãaþ×£ëï®`ƒÔ‡8E§œ9\=½HOʃ”rr¯ô$¼>\]_üþøæò$'áŒ÷LJ—b2Z{?\žà·URÅã ü­µõÊ_ѽ=þòò‹“ ’?xƒ›½7Ú‡?\ý âD…ˆPSÔúpÒjF¨ÃÕcÀáïð!k¥ön~Hܽr“Zª j¢ö6=tˆk'é|ÂÖJaޝéwpNªË‹ƒ™bZaòΪƒŸà4)¨Ç€¿ŒN{|?µ ÖëãS„¤´UÖ$H5MÅ”÷ÚNvrp{—`}ŠOáàÁù|ÅŸRf2 ®,0À‡ôÌ|F%µîÝÿ$bH7ÒC?¥¥p.?døE5üÄ Â¦£’1=õ13º匞áGÙIHâ¡~H!© о‹ž´×‚€ÑæÿÀ¢UJf 53ôxÞýõ‘x¯lfW [ORáòî¯HX­P¦ÚN ~êú²]‰¢A€;ÂȪœ9ñ'’¯¢ =t@jTÈ’h¤écUˉu@øÕ#éÚÆŠ(t9=BN^K „²]ý0SЀֹX¹[k¬.k¬¾¸ºø@Þþ ŒÍ¿\(«ÜdýÁEP|%×ZÆ0¹XV¾»øjh’jEÈ& þL“›Ò­ šhß]!BPóSW$®R:û a°ïP?ôÁ(ÄÕ6ì,{»5Âû64b…V-|ônUBŸUî•ÐzÒpPÐ1Ì;˜ó{I䟠%øúmAhz·9ɸ€Ó8y=¹ìÿ–s‹Á­ÌBì G肵Ù‚+Ì–~íAu€p`äŽ0˜è:ŽP…̘µ#¬,9B«´ÙçAÑÁ` €B·ÏÂEQßIïÁíÕ{gŸ«÷„Mý?ÕûšYï>º9&ú T)¢àNÅÿýâê£Õ_÷-ŒqæÆÙ'€&* ’‹A(x„¶ =F’:é'‹b`þªþ£aÁå¿þSý×–¦ 0DD+(Œ2è8I«@cq˜ Âc èÁ˜ið’Ê»jeËKÖl/^ÒD4¸[ÐK‚e¾úv%íè×…tmØ·’öV^¬„•ú™ó$ònáè­x ¹nÛg°, cXˆš#øî–®cÂù–¥QÜb{p3(uçX?9­„ÞoYjÒ_"Ä®©jÐØx8pPè¼é© ‡t”匆¬ÎKdE›¹H$ƒQÇO’Ð8+o“ðÛûì•´tìåYHN­@…KîÓ:íTì! òŠéËÛÖ>Qçb ¬Û BNü2‘w Þž´áE6cÁÖð¿ ë+REæ"Fé×›鳕GrU 5Û,àa:êoÚ«)¾(`h1 ç] v]ê\|{ÔàÄÀ 뿚ø"9sž['#ü;‚37hÐòÞ!ß `ßB€xÂïLwï[ÿÙíœÀ.Sñï6ìM õPÿñQ¿òÏ{0ow(ÿtŠR+ûVcå=d¬àM1ý%+…ýcªk•ÍH}ÐI Ìh-U|Mˆ³Dý+%šÑ+y|u©—T@}ø%£7|–<.¯<4ÖV«¬l…hxP9Ï«ÏUÙúå’Œ1(OðQ*æŠ7Þýøœm’\²‹w H XSBñ¬ÿ¿ÒnHduè5]ÀýÈÀ]#8`ž6ÇïVuuÇ ?Ng÷àúø œs*ƒ h0¨M¬H>)SÔÆØiYêFÀL¹zù&a,ÂìfäfØÚš™ÝZšdÀ:t{\S¿`úø T|ÂÒǬßtŽ?ϱS´Û¼¤l7ó]IM#cQ[—ñC)GJ"”° — Ä×ì7?)!à™¤S¾Ì \³59õfÂðôò¤"DfS@U4“Ðq$ œü÷HCž-¢naËÆ«íó5¶S†Ÿ&Ç Ià—c7À¼#}$ׯ²°¿ÄÃѳŽ5Ç#™ij£ò2M:YKÞÆÖe ŒFlˆ^V.JÙW.~k™ŸÞ1zå&h¬jôtÄA i‹Ž¬å Üse~8mùáü7·+³Ì•oT€h­n»Ú%ù£³ô `HDz¯´®1käwà¿’¦Í$!Mƒ 5û{1A^­£¯¸\K ÝG·GFyÛ4a`£ ß D~RÆÖnâ1Jé-Ñ3ÿEU!Â9ÇM<_ïì§Cÿ›Ñk—Éç΢U$d#\ˆ¡æÖKÀõ9·^õubö p w¡£k&€6`¨°¾ŽF¡ÛºŽ˜œ‘#¬ E^Aø7N. üq‰hG¨rÈÛv ¤'á$= ܃pyÌ 3yGqC";Ñõ„+º¥»¹hRwš¯“4ÅÌ¥°}ÁŠÆâhèÄ%´ƒÃXG&ÝàLCä%íˆ+üÉ‘ é[ÞÚS¡ÕÒ®¦Ö´PˆÒv°v:†Æ~üóeà|víÖÀ×MÞê{ËøÊMs€g«lˆvÕ€=Tn3T2˜@dÂ:dì&a]m˜?~žBxÐ9€Û£JÀ>WúÌþŽ"g :1æ{]<ÅêýW‰ÍR Ù̵ŸSñE²RO²ÙE½o#œYÚ[s6@oÀ¹Ø$"µƒhÓ˜Aé×y-Õ¦L2çÏm»ÔCzê´ŒÜÓØë#‰ ‘JÄŽgk‡·”š’àºÅü†Ñ,“ÆŠ•¹rÉ^ËfˆÏ݉€V~±N@À®ÆÉkwÆÄ“â:ïUu{B)f0^F³îë6£^j ÑÅš- ðFƒ¸¿í™ÃäAœ¦ Š<ëGahQ5¦íO™œYQ¯hC»έ#BžS¿fÜF':dþt¥ŒHGaß ¬m.æÇ‚ƒçYìȯŠÛî˜"†-ó²N™Š bç,”N5Ö)?Ø5SW ¥ Q …ÛúµP?ᢠüó‹¤JF »B ·Ã©·V(yåèÔž”öM2¼å ´†`Ó¯åT~P+b¬ªe"¶Þ°œÖn6“—¦ÚÁ%fèœé¥?Áƒ°\ºé¥Géh"ŽxÎyC¡ãxRý‹A8Â÷˜Ä×䀌C¡9wâϬ˜ª/nϵæNDÝS+Œ-ÌfKù¤Ö?À­ilïé{ŒJŸ0‚•ÇñR|Sç‡ï1Jt±ô¢D{»FÌãñ²(;hßÏöK»ª)z–è`,D‘_ë¼qËʦЋnôh< ¬3f¡¿Sñcv«€ÑâV!rì+ŒT2‘¦%éñ¶;m5l«liGyˆÿn«sNã–a@úŽã?8†¨¸q ¢iWâƒ^nla‹—»š60'œ\—:­ÅÉŒª`ù# ¤x£ÓpëÍx/-¼i[ÅùvG~ê¨)ÙiÍù:]Ä„B$*§pÄ–¹“ŸØA¼·øûýséô¸Pâ»ö>Ouµ$¥ùÆ7uÍ¿tó ¡' ˜¸Þ\‡¥ȉÊd¥ÇEº \å¸t5E š&¡j(ƒîÓÊ„ ±4mÅÛ¦œÉHQ•úX~àž:L>|§AH§ÔãJ?¤eÛTgfûFigš­[*©Ëà!45Yb r£îÿªk£›ÃÇ~NRaº:*Zv„Uû™\}‚ެ®ÆžU¥ÏS¦@Ýϼ¯['ƃC|ªxÎÙ}ÒóóÜEíö¼L*l¦Ê]-Äß'xT0熳ögÚÆÚ*ilX#¸4L@úhPNö—5ðMZÄ+åYpS§c"†ƒÌ&~0 |ŸÓr„ð&&Î[hÒZˆ«Iýt€«+yü’R ò¸Œ2Í`Ú{™¡'hÖGºMT6ïA¾D~h д+hŸÞšš ¾ófó(Ù œ£È"BK/­ŽÕAiÝEêõW _2 ð-|ýYÂOjˆT¶?[ 2àÇ^ÏÙý®‰ß÷{nÒmM2ò[Üœ"ûÊ/çy°7DÛ1©GÓ¤N´ŠÞöífñ¿Ó5PyhUúê>æï‰/<œg%‡­’C x¼uq£ºGƒ²BíéÅwl媳ñ&©b‡=dè@Êîu\A2E ‹m·. ¦’öÛ AÖT”*èNXþ¸F¥{4,÷SŽQ9¼Æ¡§ZÏ.ƒùïè^h¹r×m3?_±z9êüvóH‘—Â原v“ܤUxöu aï<H§Ç›ÑwK9L¯øèÔ9÷”Ýkêñöi–ÈQ7ŠÖû“:7)ÊÁ`ñ÷L‹õ²YÓ›C!üÛ±kÌ*’Xat¾““ñõH(¼|صs ÑH(ÿŠ/ƒ‡*wî´ÙžÙõÁml¹Á;ÙòtÉ(‡)ÎËîvÂû`ß#ãËn«PmÓÈÕðæKö‚ýQ&Oó ”Ø&ÛTI¤¹”ëy ä*–Z~w^­­Ý¾y`©—1Ó7ÊNÆY \DÃ_äÓ;ÏiÆô š—È]¤­ùei2å­›¾þÔÕM:QÛØŠ(½Ó²9dŸQ]·ÀAæú·Á÷S±VòÉ8]:üM= tX¬ÙÙxl `È‹{£!ûçis¤tæÌi$|άGÉ1r ŸæÕ¬;exæWz^¬Ë§ƒšQ«Žˆ“í–?ò¤2q×l:¸$Š«ÜÓÛÛ34$Ý¥ö&[Ô`±¦ÿ€óëà2»}¯ñ€Û´1ЫIŸ¥!Ù¤OxÆSŒÊ[¸Õ46yÄVøâðpôSPÛïÌáUüМ¯Ò’V­;i %n\’0- /T…MüÑõX0?ŽªÉãýäP;YKšÐ2< ³f–bdÝ›¤Ì‹jXã¤_ûñ8~í¥çÈW²øx9i~M&ݫ֘µg]•d†³õ'-"¸çÞÈ=¾”Õj€ð““(Y$©Ò³—BéÏ8Ô4Î&ù5Sçq5^>Dñ4›9sj3 4Ö»’;mÄüÔ'üšCÜÌn.%üQ¤t“HR…F °žÊråëOÈs™{ž@8HeÎV²¤)àìmiŸ¯n3);MYŸe.ꑇXjÃܳ0½âáYǼ‘J^§c¬ë‰ÛS¾÷8½åd¢c'Â<»=¸[\Ý!w¦æ–÷M°†°±v‹K.>/~‰Ôä!>}°üýë˼Q œÓPtBé«eß“ç‡eñeñ·ËâÓ²øÇe‘ø¦üýÕ²ø¨,>YoÊâͲøª ¤ l*–µæ Óß?áW‹ò¥ª¿Ÿ¤ji{0¸JÃ¥?—mé†>sr*»ÒdÙ‡wé38)–ŸYŒEädKª<ùWËñþ•ì¸2¾öŠt¼àW8’ªÑÜDüOÁï_„½‡ÕŽŸ.«Ÿ.~8‰˜—ßÜBëË"Û¹X±OýÎAR{üxùûG üßt¯ó²+U?²€#(«+ëI?‹ù4ÛW3åiÜp}xˆ.Ö¯?ZVÄ;Êz;>?ƒ²ÏŽ?SGb@w=_uiôd‘Cæ—Þ´¤!‚?ˆzï'{ì áh8¥âSÁìóôçå6HnèMŠÚv%“a±Hæw\„Ý¿£W¥±¯ <0àÁr¡œ:eÃ*.`ÑÑìu—ÔÛÍ€›L;²˜+Éq`z0‘ZâWNÆTGé¾·ös€§>ÿ·ÚT»>:¦T­îLª“Øù阕´¿]ŸÇÌ7­j9ü°вŠ=¶ZmQ@½2r‚ø¸C9.È®æNc×øó¶)¿òaï…ò+"7‘ôŠÆ³=Óxƒò5Á»ãk>mD4ç„}e˜˜ô°»˜ü¬4ˆcötš]„q›6ò]³CÞÂ9`ǼZ,ï:‰¨-o;{¥ðŘb®pow–¿`e¯'¶*ï.0Qú¾ý¿Ê)_0ø>تªé0jøã—½•9¾Ëú3çäÞ‚¡¬ëBÝOåK.ƒé†ŸÓMðíø·5€ð¢²÷zQ}ƒ]2Fëºpæ®<ÿ(Ë`~„w‘>*Ñí8SÑ‹ØÿÞ @©UUEíi]Þ9e”÷6›(¿µ&'ö&b·­Ð|qÈqÂÆ€ ÷?»,ßͽ ißkwï¬vCUz”à@L‘üÁêmùüîÍüaž÷½Äæƒ íÒXÚü[’רüêþ¯²Ê—6ïo€R/°¶¶\ú;_ÞÉ­L’2©«:óz,²| ß ÎTP˜*ŽÚ mÍ9àÑÆN*N!äÿÉD(<)ïÐýîâÿŽendstream endobj 80 0 obj 5507 endobj 86 0 obj <> stream xœÍ]I“\Çq¾Ã ûîð¡=öSí‹>Ø) ly¼DH:€À´Ì€˜$üë™Uõ^Öö¦{0Cƒ< £§–¬¬\¿Êªþþ yøþ÷Õû¿ü?¼½!o_|ÿBÒùŸWïÿx ¤>Ä%:åÌáúÍ‹ÔS¤”‹;x¥áõáúý‹ßÿçê$ëmêøáꤵ^¢ÒÇøµ±" }¼K_)o¯à[­½‰ÇÿÆZ[¯üñ‡+å#9Þ`[³¸x|Yz…ã+Ì / ¶Žð> ˜W šz%ãù&ÑM($)©bšÆ.Nšj”—Ûàêuágm´,déÃñ–}ÿ¶ëŽ?Â(Jhýñ[6Ê [ÅmZfОÏÉ —ZXŽ÷øµ÷.¨PØMS~suRa±A›ãk6OâSyeÖ»Xf/gôß'ŽøÈ(úóÕI.ÂÙ˜Y ïÁ›L¦×™|sÿ—­ûf…»«?^ÿæ… °Ù>‚t]¿iâq~-ÕØë¤\\¼Ž‡“²‹R¥Þ×SÆ#(gK+ÜSH |‚¯cDí}%ˆÃ b¢œøa¢·œaœ\8iï×£7ÕØ|“8Ê&Í÷à6«ÓyÖÕ´,ÊõŒ”È«=~Âñèï5]%±’Ȭ„AY{üûþ¶¥0‰o’6D¶„™Ær~3ýº«ÖkAé=°ïOÔØ§Ã$‰ö!Ø"‰Üæð%&)wÑxwü»Z*ù;ç¸Õ<•!O Ö£BL#ÿÕJPêT›ZúV…@+è5pà t¼³‚;ÜR ð.+)ˆxm³Ü|nÑg\àmrWmM%«_Á¤ Ü¸çƒÈI|E¢eİ0|®±>ëÈÜOšðeÖv—ôÛÙvO‘ÉÁiÎonÏnj>P“UñWCdk éØ9 ´ÆXquF5Ÿýnh‰jP6 µÛlàŸEJI°[bÔE¢Z³m­w7‰ˆE™Ïg²Á£o3ÑÈNì0ÈÔ¾­;m­Ž¦L@Ñ ÉZù§¤ŒZø˜­{¢ø$°ÙÉD8§síÝÄ„"‚¯7¶ õ?k>S¡í"ýÈG_ ¿F££sÅdwúÃe®÷߸ œ5µQ¿†·ý”£è) ‘aµ¬| xóÙ–õó·v³›·(s¹YY[¬cè³RµÑ>HŸöU-Ê«'ˆ½ñ¹ñÍþ&õ‹Þ"¤L‡Æú–  UiÙ€ÑôýÝ6Ê-üWèl; „:°¶zÖs ÐÀŒu*LÛüûC.‰qÏ]ŽÎjFòÍàf‘ûí»™¶”½û˜£|`ƒKåSÇЫÍþúØàil‹ &ñŸg[TÐ rÿyÌðr¬¡wÃÑÄûÏoT„ˆ"ÅKíBZ¿¿Ì𽦹!—¶g­‚®v/.§-lšŒ30F_à dÝ‚õë³ZâØ·É¼Ø°8£ŠL•¥è$]:ÚJŒøÌÌþ ô‹¬HÒZ…å&çM¢^„8bO1ÚH¶…H–ɶ€5I”¾ô²ˆ—Â"ØA²º%‹¾á|‰l6svSKë6%lì SHŒyh$p—ZA<ØðÄ&nAW ÈtüÛ„èg) ¼ÉëmÅGÓ„¼Åqkƒ‡Y=ìô§ô÷¨ë΄ ‹—¦ÈÿÇL˜vëž]È ¦=•='%ÒÁÙJ~Ê4ØÊUò6MÉ4Ñ•¨õ}VÚÂQR]p`Z VšðÀìÍ H‰¦¦«‘MmÈ…>K|'¦nljhãgº¿øwÌ]ËžÙzYT´©Ý¸¢uâ6g _2êDÀìKÿzÊLt`2R1•ç#d”ÃÕæ…™ð²¶fêÇ”|XxˆÖ¸s­_‚9H·/ò>IÞy¿‰§.¸QÚµæ€ÈkcF¹-5™¨Ì…솓™êÚäsqœD=ìëÎ}Ã}룙Ç;4šˆaíB4ØÆ ·äå¿Ö¦W½,Ñg¾˜qÓèa"$œqÕx—Ø73ÿ*¤Eu#þ­ùJkÈ{ë1o­âb*âxƒ3_µˆµÏ¡P" Íøõ!]YéCÕ çà‡ˆòñÞvt‘úÁ¤ð±þF=ORRho]$VÍ tãS°9 Î7äŒd}€¯à>v~ì'Ã¥É ­”†ùÒÁ ¸µú .œ?1ñ ‰LJI­•àym6ÇèÌ‚ ÍQ0“¬ïùÇ—´\<S§”]0ŠØK'qRÏ™”B)¬Š>q¾÷ÆXã¶sÖÕ¡@„µy.ÙÌøÏ×ê”}˜obïjW7—’W’\Šñý‚¶¶nÑÑNeç/èûI™%mè• •O-Xú0ŠŸ&Àîù˜¥5ÿ}KOg•\Þfšü¼¥N= ± ©Œ?йŽ}f(‡».ü™B9+Ý™$<œT')G¤ØŒ”ä.ó8ê9Ì´¹™‹áiÉ@ì˜Ñ¤uµdRëÀê<ó †Õ̰w©æÆLzvò(ˆðª¹|òÄÇÖà4ÙQÀ¬Àe¥DíæbLië´››¦qæ;CŒ‰ÇùES80t6|ÆûD”i@LÎC×›<û¼ÄI¿d ŒŒ b˜ä_‚‘fÜœêxfeç¦.v$ è”(­Å¿±\ÆÀLÀÌ‹Â8Ì’üQƒ&¨¼«d•ŸN!ozè8¿ÉãÞM$»q8ö<ŒKlpÒNAÞ°LÉÀ}1ƒwfU«ŒÏVð ê¡Íè€ÓØê!ÕŽ!ÿó*(4"$ ÀÁÅAšT['Ú“`ê†nÛ˜‰ŽN:{@[mUϪªmGʦý­eeŽ8˜ÓóC/î¹PUô2V„œ§ÙjÁÝ,) ~1ÀrEEJQà6ßGD3°h8¸JŠî˜ÓJ‘A™OQ‰¦4#x²ÌQ¡ @'ì14Ëõ,èã*,ɨBŽÚ` gÞ&½üÂu Ùf øc“ñbµM4[éÁ0$”ïlÉ“T®_¥ ©óXÞõe»ñ|½"C™ê³sÝu'8‡þœÊH´ ³x‡ 5—ÃAn5 ¬±þeTJ›*¥w‹zõâ£ûÒ„HƒìÈ:QøD¹ÐÄP3÷ÿ>qE:×$иbçϪtþœø†Æ 3õ–E)¢tMeå.tɧùzk3.ưÔÇÏ-?ăY3·þ©(Õ‡AZNdy·@SM 'u]VÑTág/EÁZ9ÀŠr3Á޾M~Ûk;Fww>jÌCEƒÅ²`ñ.­J|PZú|EÊÄ{µ[MD¡š¦è¼¼°÷öÝî¬åÃÖ3!G2ÂŽŒó”G)3ÜçuÞyëËYXûOEdæ}bZˆÃ‚2¯ßT<^ãóNdè[~†Ëã–û´t±fãzœ¼”—wCò*ÃyõÅ×wãØ®Ng•4;çÚP¡NcqÕ ¬,,ª+Fjc9“Ýy¢C9“ó }"€ú!V°šylâ̬¸”þÜ^\ð´WI¯ˆû§Ð$øòa½ qEÑ .×;ew8 ¡g‡N{\Nœ§®+-?ﶤ‹^ÊGZ½Ê°§²Àè»­ÑÏm»{»f‰T¯DÎ8êÄë £¨è•ì®@ Ȍٓü6œ&{“º"’ñ4Ç ­½€Áè7/Ÿêa!å4¤ãêmj.ûB3œEÔŽœ3hß~‡ý,ÅTÌlmWœJƒ~6\•l*Ž>ïnAbõT9s•FŒ2ÎÑÀuð·9WàbÚªÖ½ÜÈCäIJ๹øŒ 1¤¾[ãaÔBµE *·Gx¯J˨MÑnÑd¹©Ð&žE²¶TƒU´»>ßâÆÔàÔ`/¥6ì _íÅ¡¯ó=óúRõ$Mºp±¸ÎÌáì@ily;4ƒƒ·¸t.Ȭú‹¾8žz¦€=ž<¢ijùžÓotùþå—W-[ó”«©XÃdyu'å æ(x€ÆPIøh±j[Ž¿6ÀJ‰'Mîø/WZæ‡àï·ºäD€BVjé¥ÕÙ[ä!xsô\òZ“­„1–&xÆâ{ +[%ïù&‰ÄvY†Uç§µ\×÷¸çØ<ܳ|Î0°ànÎ@„åÔÊQº¯ª£þõæà–èu°ØØ¿„ôý€†›|#vØ%c #Gê ™ˆQNU¯Ús!C£zD!d#°ÃaFaãµQ¡¶Æœ›“Kq{¥ˆV˜)ž5ÅÞF±~{‹O‚U]ÔÈb_§ØÒ5‡Tá3 Cé7?«<ç^ëm!j{ËçÍçÜëa‚œˆµ*V¦+c†ˆÍ®›¿`ºÙÂc”§Ô{Åt¶.¹H‰D÷".‡N >f·=¿Ú†&#@”˜¶"i^AQ2¬ÁÕÎÎîðï»7èÁ“gœë=>÷j˰°×Ÿdþ?TjL¨jªóûkÏ‹Žl£ÿ¹ošŒ¹fd½ñLGÖÛCªVfP¼î¦þpr`…uÌúODyRª±É‡4ÄÅ88c¢Z_Р•¦xŸ~;oà­mŠ˜ »i£–O'é!,C=SX;cÂù Sê€äz@Ú»»Ã$Ø àƒ 8fEŽ@êó‡ã& £UáËlèYóöÿ ¶†Ä$¬­ ƒÔŠ<=^‡çcé—4ÅJvÜäóâ(Ä/×é£tÅÉv9ŸÕ@Ð]:Gp×_£cÄÑ©"U/ã£èhœ=ÐT5ЮZ¦yÁ§wøª Loñ߸j Ðî„ÁWl¬x“j•5£éér%¨æáTõ÷Ø+€Ð6ϯ*¢a«Á_ÀWÆùÒç¿’t ê1–)30VÄË ³|PáÈšsz­™ÄZ[«Ð2ƒ:êá_Ž«,ýqÞ*%‹>…fh‰{(¸ ŸŠp×ck„“…c>'Tæj|좀§¬”Z¦tÁ ̈°3^²I E5kN:B„¯pA#¡<3 6J 5÷²[©ç˜wcÝs$ÙvÑôbE³'õêÀÍCÈiu¨ŒãÕÕÄ"~€[sª:½Í5©Xìï¬ÔøÖæºW¿Ê“É1+<†øO²³õд³aÅ>º-jL¶_"D:¥AÖ²½þ‘ÔÄ«hÃX†ÁLƒjµ–¥&ªVbˆðá?ÝØÞðºÃû¦©™i2,|‰2Z.6_ªpÜdþ€D‚o°n$Ò` –:"î¹+"A)bvŸª^oZkn4´ö¶´žÂÂöA&Qšÿi §†ÁÊâyñо—°à®Ñx=——ø"wX^ºÃAõœܰá öî…MÁ»´š”T_Á©ƒ·RbÑñs ’lÆ>ÃÒ„ø“ÃÀIÒŸSwQg¾„óF™Ôà6C^pn°F»é’CQx–{Ôßþq¦;À<ºG3F8y‡kWÏÀ5&‰;Ïsš$ˆŠº{‚˜cw«oFàð~U.$Ò¾-=ŸåOoúÊóÁ/§5¦Or Üzmãz9‰%ðkëÕT38´'O`5WÀˆ“Š×þn[W´ö>÷*©ÃëõÓÚŸ(Ú "“—Õò!˜ýžgtEÍ£=­+B±£4—Ôžc6‘ÝwïîúMT‰QDc´Øÿ]9æÛ`†˜ÐÞ\¢ã?j,!ÝúHÅ&¨hÎÎ--[‹5æfÂTï.iHO@j‘ƸB(Ýà¹_%ï„w²>ƒ¨ïSý«öºœpšîÝÐtÒ%¿&ojðÅŸI©öNî¤ÔéÈ;iÞþWâöѽzZ!{ßõÓþ§Ý2ªi²§°Æ¤lBƒ·§dOãДGÀc÷ZÞfW1<€èáÑØ¬ ¬6ö8e<» ôœª'¢ÐïÉN^2ÛHl|;LºP¯‚‹èÌ#5–ŒÎ7ƒ­ ÃZíÕ¬ †1»³9ÙÙû48VÍžWSŠ\œ=løÌÕìÜ €*€Œ®e½ zŸd Û·P ‚__ ÓkÆÝ‰tæF­kƒ'#ˆ›³Cªí‹Ý Æè&D kÀ/?2©ÛFDSÂ_Œm<yHÕuk`T¨8»¥¾nX‹«½a4†‘?TÙ =Ð<{Fêm™ýÛª0zMµƒßgf'ÝÄmQIÕÄ›÷‡d]kîd?¥zG­Íøx­}ûUâéǪYÛ{v؈»ö÷˜VŸ•ÉÌ+¦‡ÇïEb´?ïeŸÂRVÑIo£x©|Þ¿[ç9z^W>õXûoÁ07Õ¿sÒÊ"ÒÖi–RX‘5eÐ䨆¹¯¼ìwÔ ~[ µÃÊ R二”'[ƒ¬ofa÷¢ÒFçñU77=1›½p4¹0º{ =úA> stream xœÝ=Ùr]·‘ïL>â>’)ñû2oãJ&3SyHbU¥¦?Ø%9&)›”ì8_?ÝX8èÃKYvf”¤"¥»Ñ¸ßÄQþ·ü{u{öÛ¿øÃ뇳ïΤþèÂÁIŽF¤’ÿOî¯=ܽ8è#”ˆc8|‘ÿyy&áÿ8‡?œIg5‚{øí™rNÒ’›³Ï{+iÌÔª”ÐV.X7¶ª%C+/ÕÔª” ­¬›æUK†y !¦y•’¡/£¦Ù×’¡• S_µd±ák†K­|ôS«R2´ŠFN­J m¥D°…JÉÐJ©8µ*%C+ígj—’¡••ÓìkÉÐjâ_‡×€¡ yŧÿÝ_Ÿ½ú _÷y¯Òy€%Ø\GÀ¬V,Ø\GÀœw,Ø\GÀ‚,Ø\GÀ¢ãQ2×u0/‹’MS–Eɦ¹¸ÒsA7®Ž€­èÆÕ°ݸ:¶¢WGÀVtãêØŠn\][Ò«#`+ºqu(1LäèÆÖ°ÝØ:¶ ÀtcëØ‚nl[Эë`+º±ulA7¶ÀdÔ,ݸ:¶¢WGÀVtãêØŠn\[Ñ«#`+ºqulI7®Ž€­èÆÕ¡VÕ¬~cëØŠn\[Ñ«#`+ºqulE7®Ž€­èÆÕu°%ݸ:¶¢W`&°ú­#`+ºqulE7®Ž€­èÆÕ°ݸ:¶¢W×Á–tãêØŠn\ZžÊ²tãêØŠn\[Ñ«#`+ºqulE7®Ž€­èÆÕu°%ݸ:¶¢W‡þŽ`éÆÖ°•=ÉÕ°•=ÉÕ°•=ÉÕ°•=ÉÕ°•=ÉÕu°¥=ÉÕ°•=ÉÕ}~&À‡ûîL¦Ä¡üsu{øìùÙoÿíÁÕáù«³šôQã´%èKèèùíÙùï.žÿ=7¶Gï°µ=šÃ%†!ž¿<;­ºôSP‡Zû°Äêß??û3˜Ä¦˜¦xð½DCI8H¯a‘ ¾UZ¤ôu#æï+€0Š!-Jx¥õP¿óQK¬€…z6Œcäo„¨³¨-ê,kã:®>/_z_~‹|“8Ô£ºšz‰6inÑJì×K•ö` ¢”o9j‰së-”{¨ßy „¨%Ö¤¹µœÇpƒmµEeía\ÇUÞbŸêâéB(&«-q½^bTš[ð1±„Ö NWœJ]ç gd«ÖÂʱ‡úmUƒ(%0Wœ[ëÁ‹q _Y¹Í¢¶¨³¬=ŒëȤûd÷&Ùa®„Q} ɶ—榌M»Ù ›æZ:k‹ò}:I„ÞBù±‡úíU…¨%!Í­÷Å8F¢Î¢¶¨³¬=Œë¸Ê†ä§º¸D:7Šê[R’…¹²1Ru lˆ£:PÖGªà[Ž=Ôï*ª{I潇,ìûUôY”nT(ó:2é>ÙÅ ÓD7ÉÜ SŒÃ~/ßD¦´Eb´êwt ¢¸šÂ 2ÅÊQn•o"SZ‹2ËÖøŽQ`~r‹CÒ½8(§Xdx¼öÙ’67ô¦‡ÔÕȪ§¤ŽskoiI:b©­T;v«­=vSæÒUTO%7åÇèZ‰L‹-@èHC¾ÁP 1µDecà†”hô`è×>U1Eꨪ+ÊÅ´ÇjÉÍ™òLˆØJÚ‘¤ÏþG…>jI™Ù )Éso}–µµQËwµ,¥ÂÙyÛaÛX+ 𬨖Tâ{à’„¥öíuÁR+‘¶`©•™°Tû,b½Ú¿Œ>Í·–@1¤u˜h‡>Ûwû¨%yf7¤¤Ì½öY×VG-ßEhcF,Í%7QKJËHGêßKµÄE_x©—ØL÷Ò§‹&Ó°ŒZ¿QÆš´ék ôaHt¯0Un×>Û·¯¼TJ:–zI™{é³­­Œ:b©‹ª&ÜšMöå¦UWú¾t‹t¿hÜÔŒi§©ù,¿ÈžôÏËÕdšYh?™î²õþŸàå[¤W’ÖÇ`ˆ—Ÿ<ñ?ïÆ T†«l³¨-ê,kã:®òûT—Hgc1Ym‰ëõ“ÒN´ !±„Ö N[_œJ]çŠ×¶­Z 'Æêw=tï%.¥ôrô¼QÄû,j‹:ËÚøŽLºOvqo’æKÕ×l+qinYYBä;z³|R½-«3x¨lÕZh7öP¿½©µ$¤¹õ¢LjªBÔYÔu–µ‡qWÙüT—H§GQ}KJ²07ZªŒŠaT/çu`ðjí¡}WQÝK²0ï=daßǨê Ï¢´Ð£B™×‘I÷É.Žî:gê1j/ÁDåΘð-(ÓÔïΘ½Ef»ÞCý®G“­Äœ c:+æ¯ß1{‹2ËÖøŽa×}z‹cR;tpyhoëL-Qýˆ¬YqÁ„¹u0´$êÔVª µéS£Ç%²Þ‚žKn0ÊG¤­D'ŽM£¥#íþmÊq|+Qxs9÷QKtÄ£óÖ§*¦HUUcÅhLé%7gÆ`·l%íHÒgÿΣBµ¤Ì솔乷>ËÚÚ¨å»Z–à| ôoê-ð¹Vè`…2´’ª-½ 1a©}{[°ÔJð‚l꣕°Tû,b½Ú¿v>Í·–àëÚê¨å»È$Ì]°4—Ü`DMP,¡©W,Õ}á¥^b3ÝKŸ.æÄ¦:jýF©Œ™½úP˜­ ;L•ÛµÏöí+/•’Ž¥^Ræ^úlk+£NXj¢ª ·nD÷}¹mÕ•¾ï 9µcÑes©Œâ»ì& %ùcÛÅdšëý?Áˇ~C–ÅGa¶©OKëЭTcZÇW˜ïà‚“Ö×´g´fÒ:¢÷5«ãß/€—b0Ñ¿J9F8jº…L_ç¿÷ü>§oheiÒͼ¸Æú„<ÿþByhbé °± y¦?$uÐ&ÿÀ>€Ò¹¹Xy~ ƒ‹” &’䣳u@ø‹öö2Ï.À´j^ˆVÞ!n.•ˆ‰4— h¬ 'ÿ3”:Z9 ÿº/ø=I€!ëQ ìMü¹ìÿíâjÓj~p dp¨³J]ž ²a›âr &AÁrIÍYÙUoLò`ÞjÜ%ŒHÅ¢úeÄ(5П÷>·ˆzÌõ¹+€bÌÍyC–UÐò s}Zq^ŒS'|Ýsw¦Ì!jMˆ0à€Ì”2Å-2…À²”V”Qé0W„ÅÉtl“Ž*ëcðF*ìY …¤°ºî/&µé]Æž.HϳxOõŽüM—»@2ó”jö¨:ÿJAGã*aêÅÁcöt ¼#Êü/%ìâ=-ã+&ãkK×Ê3;”=!¡‹Š•Í ´üõÅeRCQí±¡ë‘@I@ùâ«¡ÇyH~²8ºæ7Ø·‡6´AņßBcÝ64%)“)·³cqHPÜ…¼ZG?pó„ˆÔÚÇAâ¼­{0ïëAñ÷I;#[&k'¨6QÊ|åöߥ‘£R-UˆUemýUI´aXà;”YVGëÃM àC=ýû®,/ÈÇÉoKÏVzÒóÛÜCðrÅiÿÕyj3è²å¨äù²Ó J74h…ÓKž™²y ÂtÜJ K«ƒE z\8Œõ›ˆ$ ‘Ò=•*®80&âñùr½ û¬&-ÁŽTANœ°7[íí4[ù³%ò¢ÈÒh„^ÎP=;½y$«´°µ5X @†¤ë~‡"ÔD”tdÊ{[Ó©í[ÌùÛâ&—7v@n‚vÈ8m#c¯s!Ä,®¶>77UëÔ‰ZO{0jÁÒú'³3‰ì$€Ï…—ÝÛ¯KÑxŸñg“îXîc\mtq ½ §ÎµíôjìY¢ÆÑY1pÛþ[²Õ¿ÍF¬j*?1ÖiÒ¿œ#pø¦Í?àM:ãG ¾Í¶±—»z-sý é¾\P׵å\¬Z3!θ…nÙtø˜vÁ]†éüà^ž?ïŠí úwÝGø€í„n„ÜÙMɃ™ ͤ½]‹Ì TAÔŒ¤[«àrbÍÓ¦Ú,‰c_|Y£{ˆ—ïÀÁ<<ÿãÙóß¼8×m“4ÿì–l‹-¬/ %ÿt¡Áçˆa¸)pŸÆ†¥Ë¡ø†tAÿ¾¾À™Š \Ê÷êL¯ûØLiã/ö βþmÅ_çaйšçn¢ Q{ž1y3àåz+¬ŽA­ÊSŸoû$ï˜ai9 ƒ FºMt "Ù×MíÓqÞ@ܯ` ù`3”⇬—¬kß=€©‘™m‚~ø³`®0ŽRavã}kkݤ:°T‰AxO^/¶@yßÀAF/®m‹²)×£§§ xzrÚ–³ã›6ã‹/.’¤AsŒ@æ½hº¾r!§6–þ·d·î¨£4˜r±ä9†°¥‡í&#u‘3R÷í6ƒÞ]<]ñ$DpÞšaA÷E3šq¶»«ÙEã ‘”Fi=W–Ô߯kÚ(Å7™yÚ.Å_>ÖÇ ±§éßóЛ?—uÿüY¼gƒ’qÒÆËÝö…vAéÙÒ1ड¥3ú¨é©VðŠ(.(¯A§¤ú@ˆ“{“–zo9r#wMr\ŠÇKwô@qr§ì]žÔŽÛ;Tt”˜ŸtÔ~ȸS–ÇÑuEŸ¸çq‰NêÉ´Í;Çk6ÝdŒ¥QÀD$œ3…w°…2Žòw1íœF«"£YWc×Èjj$P¦æµkkR‘º¤¯6û Ow´+·ÁŽI^ÏÁ øZü_Þ? / èß?2y Ì´=%ÖHUÀ¡ã+Ò|²ëÔO ìàGŸÆ~ï3¹º¾ÜÄß9ü3áú1P•:—C˜i;àýUoqÏ6xþï×X£ç—¢BvØ“Åþ1« sø [*˜¾uCÔåqõ’× ‹jë¡|hms¡ž®ó.,Xwáß0¼›è›`öR$Ù†¡6Ä#¸Æ‘Œc²²/ñ„…éúIO hyBÏ Ãܱ$r~Œ/,C‘£c„`“Qú*#FÅÝs\Š ãnžöJ4cræ…k™äލƒû@1ØÙn+¸ò°¥ÂîYÞy&À¨Œ\ˆbäá5™»‰ J/ÎŽê>C̋ɆÌ6¸’aÅ8ˆ3Šm?DœÎôLN‡ˆ4p}YÐÄÆU‘@ìhˆ$¡#X.rgËb'МÊðmx+Ù•ajn.†tqÜhKÇ©±ø!‹Éõû œÞð@åòe•*L&åò؃²Ïë6§Rí|K7ñ­„z³8L8Ñêüפ˜° á»Ò¡´³®r §ž5Ô8O‚{™I†á8ï•1oÂ/w*q,N?ðQ¶Ëƒ@*,¯6ï#ã·R™PâÝ0aÚüY4 \à(0ôèCÜ£TÁþ†ÙfNÒ¶‘Úpér5ÊgOªíèý9žø¾™þ ršF¼É³ˆ*°2ýW„ª»¸¦Åñ»²Â)¶ýtë™zŸ¸ôów#)Í¡*1a–òl4º"ð=ÃDT–p‹g¸¥,X_#â7^.zZoÊôXs¯qß§Fãž¹¹=¿ß³ jÆÝ!d[ .Ê¥F»Ûn‡áHï)t1Y¶ÖÒq¿Ý.UÁGåâ¤O±o5-z3¼O†Ù™jè·Èesq ‡áø.º…Ýh<˜r:½K³=ÿ¬§GØŸíG|íàQ-»·¹8ç”בP±ŸÇ±¥>Þæ¬ Ûþi¾'ÎÜŽV”mj%¸ÕêSÊ»‚Dç8Ü.V6§²´0.æTË(°¬".Š·GÃÙ\jÎBê"ä¤&E0s½’ 㜢ôYÎ… ~&yÉöšö.+Vd’qÁÀÝ·LqÄyP7ç¼oó\PÄR>¤†Ôt»Û$P½:výðh=NÆÍ†a›ï Ó^qcSÐo“&IÌ\:ú^DTX g9ÑY%le,ë•]Ÿ”و̞,jÞù•]Ÿ” 0æÍTV;n¦­Ï>„Á6¬CçÀ ®Çà (~5ˆsž´ÄÓܨã¿Ú[ßK(€•Y£?¢Ñ…YºBE&Kޏ¹MÎm‰ Mð žK増C‰i]Ùm Gç$ɱ¡ñêùxû²6¿±"ˆê3²éèI2=£%ç««3U¼œ+6?¦Î´SÊ74Qõw.°EÌé¨O{©”œŒ¨¥ ¸ÌªËáñ·«Šó ÍŒ|ü©–ŸÊU‰Â‚gŒêŠÐ 8Ê_ÓÉN}pd¤”¯"«,(“žã&.ó†ADÈðT>n+{–W`2+ L³¯Ì½LÃiáÃ9:M}JmŸBÆ ÈdÔv“dTf·ïÃ[˜¤’9Ò¯æ¤ñ‰¸)Œkí(…N> Ÿí%ΤÓBÏkp˶nX‚•»ž>æ edÍx*³§6é'>"/ ÆÀªJ¯>ØM@/¯¦\ªDC?@>ä!ƒ°ƒ†ij§7ƒ4s…Ë q‹W¥¡N;ËbÝelç@TÜMj$¯÷ÃŽhznÍ£¹ð­óÉ€ÆÄ4†è&¤µ¾òÂF7|m€ìGvS„ë>;œZ864F· µQ2¨0lêN°- *ÃßÈø“guJ‹—ì­Ö$NO”éÜù‡ ¶?Á*±c("úaJÙŒ¡4r¢ªÃ ën½¼4Þ÷Í—™o*à9éjZ:§=¥¬‚9 ©™ÍÜ0¶ êèL¨~¶‰ÐN“›"ÛõÍç%@ +Ÿž‰–à•ÃKÒ¯r© žöF·Ý÷5Ò²0º•U1nŒ­=œKµþk‹i>ÿÛ9)>™ïò½Å…B§Ó ]:rd´þ]s‚öÓ 6®îCžlú…ß9es°’`ÓæyÒ¥R.–6§ƒãîöTó [K£w\k˜*Ð~¦G»=¯ªþvj­¦|¢­0-·J;£ªoråÓ N '5òØ!ÆâFbR —%›'8rýIÇøƒîµ¤Š[¥«,Ó98`¾;g`6Mß»ˆ1éMP!‡R°f³È?¢¡WOÕR,~<–¸+Ë•¦Ìí ~Š–ir´„YóG|¡€¶>í €Lúýb}¢°qòh†ù»ðû&[Ò¨x ^Ÿv3Åk¾{q²´˜½WúR û””œ×p6:^Øk‘Þy½ dBL¨aÇX‚ ¤WH4y°µy™‘íB¤ÆH¥h:i˺OÔÁ1 /.ärêl}Œ½s?н’³µ2‹QìçÍw¥hk4”ñb•›“²Óq†› j|ÂͬnlëAOþÏê*Ñ^">øjõÄ19Æàv¬k„ #wQÕCÖ\ú"Õ? ¿<ù=@žÜýI¡¯m&Ïe8„M¸â¯Ës'èY'ེ3xêY:Þ8Û7ˆ”<ÊÐÈo*¥Ò)·;c¨Ê†eë÷À>çYÄ^ Ÿ¤ZŸ Ò~ÉW†½YòÒF Ò­À5¦~yHiö °»Ÿ>˜Årmcôßç”?ɧÎO#Åód9ŽðĤüќ͖Z Ê͘HÞ^sQÊë»:éÕ _¥§ÕDÅÉÙ>‰34_¿Ôóh†gËÜ9á©äM§ÔŽŸ¤ÍRàdLÖy*}<á„íÍK_‰ž˜hü¬Äªõ>ÃE³‘K¬;é‚×êÄ™be‹r¡ÜI‰ «¯Ê¹”]21¥7ù†[8ªÉ à]›Âhy—{ºÅ˜>nrÌÀø>b~'„FìÒ½@Áß…œ²¾nö=YÄ †õç~(÷=c]`¡ËE›b |.ZêÎøSDY·§ † ‘zg¤fÿAò€ê䔋É9ËÓ¨'j2âØÔý§&ñUÄ=ªë(½òЯ}×uÃrr ècØ(cékw[JK*î wÓ¸i ¾§¶Í «WñÓïuðZ?œ‰ÃΤ”î eðÇ€¿2£îþDˆ;àC@?úÃüyô ð¡ëüÃ)‡GªkßsR"¬Á0Ôá•“—ÅÁú+žùx'uõàƒÂ_MøùÇô©núŸÌ’I’(«œ3±¦ AÇÒ ßìSÑ¡–î/ðU¢L1€Všn]{:… þ¦ Æ ÅC½‡ ¤±X"¥1íäîb¹nŒA Õ%g[ÏC]$ëIG?Ÿ+J«ÉŒoÃK0•Ñ£œ²¥çôçL3Wt§MÞN#´—‡ÆoóD²ÍË=ÐÑÉ0W•:QÓ¾_åRï *ÅÔ ³Y!Îñ‘VéSÒÝË #$˜ôh­øfÎõiòÀ.ª5Áü ` ̆|„qðשu6=Î8Ii!•#/¼&:-]÷ ßb_1’•)7ë²<Û«F²0sr¡;9F)4@¯_¥€„Ôè唊ʳH ¢N”E$€ü¶9© ˆ!…9\bÒØi=u£ãýCï¶Z‘ôo²a ¯/8ÒæDÖ$Ï*ÇÃë3?bîWÌOú¥?‘ütì‰ÑáW~ĥතÀI<ôº7~C6Ýõ}†Ä6?>‡¢ŠH¿H'Ïÿç´WÄñ5]ý³ºd5 ….⺬mjrM9å¶$ÐùQŒÐ&€g44ù;a««Ò§—É›VmÍQ„U_Cøn}¿[úÐ'H(EäÂÃÛÜC²HdzäÏqd\KÀg0sé “Vð6esN A®_Ž®çëQ§?nŒ‚+ƒ·êÆ3°Ã2‡àSs§‰›5üž0ë ADNÙB~6s6^‡öòíz „¾niW MGqX%fzA&½í›uÆ~x—gÜ´½*à ,˜8æG”ëÔ}®õ>O } q‡jÃG?qú?ÒðøŸä•¤kÁ›ÝoÓÍ´Žè[¤ƒpÎ> stream xœÍ=Ûrd·qïŒ?b‡.òøà8oÊ­œrªb‰¶d?ì’Ôî*Krµ¤,3_Ÿn4€ÓÀÎÌ,—IJUÚ—¾£»ÑÀü´›'±›ñ¿ôïõÝÙo¾u»wgóîÝÙOg"þq—þ¹¾Û}s„Ú…)Xiõîê‡3)vBÙÉÌj礚f§vWwgßïߜϓVÊé°¿9¿œ'ãŒ÷?Cãd¤ÝÄf¥Œ“nÿ°ô ¼Œ½µ12ìß²vÖOÈšïYïkü¬íìf»ÿ@ݽp>÷QZ‰ý;1LRêªûÃjÆØû?;g½ôû§ØÝÌaVûÏç—bš­ Fˆ÷çÒA»5Õ¸G\ÝOÖ¨ªù›ÌÂVÍïn·©Ë,FDy·43l¤¼´ |Óy™ˆðŒœa=9Ëý,©çÉKÂêf²R¾„jÛþzõïgÒrvuRõDÔQsÅa-($`ó3-è•R™ØD>šÂð¾?\*a2Å”tEFâçŸü|jÞçfiGè/3ø—BNF[AXp¹æ$OTÑÊyŽÞ'Ö>K?¯-ò»ùÍŠÚÅù”“2ñCõ™-œõxàD¤ÎÞW3ÿ-NZWµ2™y¦qBªÔWù0êËYÍ»üç´füŒoç@As é#5¸Hqu~"˜‚ÒèÕËZ‡ø@.I|ý(èz2*T¢û@` 3TJƘ'BÒ‹Ú$å9´©ä‚à¶2dœ (óQ'œœY'¸üÝÓÁÚJ ß,‚~ŸØ¥T%nŸ˜@ÃŒ·:ÓÀØ¢pq’•˜'ˆ¢˜“Äœá~½–‡Fü80dÉQkÕn…<›=y€{Ü~À¬{±?2YH&AzÕ ,§3Ä'i7œ`|(—¾éüìóäµÜƒÍR;3×zJÓvˆ³ƒëŸ1A®ƒm›ËŒ|?Y¯DŸGHq±—Ùæ7è¥ÝŠÉѤ½V¿£V~¯™üAÉF ·Þ[pÃë`õ«™³…$¶êÍdšÔ$¡Bj¢aÔaoÖ‚ò™÷¡­L7¤s½ýK§¡u'¤S“tc­¹Å.rR¡ÚÄß2‹Ë=„¡³L¸¶­$—„Q¤3`½L£q«p¢'·+òðŽ÷ÿ˜¦ÑŽë߈øÍÈÖ+Ê®ZÅ Ü·ôæ1A›±b¸ãŒf‰œƒ R´Â8‰Y|Ÿœ%ØCCȪR¬ZZ 4ù×Û_¹¿'ÆëPŽZŬ(S”&ÉEç,TŠ’@6Zð£Zí7&õ†Â„Ûf€?ª£÷Þ¤RaÓjÇ.¨ý^áö¿œµDpšÖƒ?ƒÀn› H &a%WAÛå«ì  «•±õH1­Ó@­i`%§Ák‚ßì¶3hóP•XPÓ R,Ìcr›@Ó$‚Ža@ã@åÂÚÙVŠÃÅìè% S{6£¥S&ç*Â]«Bcd•GEŠMÆB]Á3·Ô7iB^hž ˜OsséZß ®0²ì-Hå(w°Œ:z%\Ù Œægßί$웢þëÉY©à†N€¢ù|Ÿ£F[ا¾ ª×&ep«—¸º¶ÿ,/©ì·þ<>þHùÐÆÒ±±kš#lk'pê8¹öò uLÆ ¶œbP›¾7ä˜YiØ X Hdúèr“‹ ÜPª6@0øâ£½æ§Ò“Ÿ}ä¿a2Ø1tüu˜dðû«¾ø ÜÚŽŸwëudÕö¾HXyw¬I#ÔK-ÌâÐK6ÏΛ¡ ø”òO`ß(jàêi&ßHh > F>äMâK•NºOЀù¶ïu6”öäû@µ·"< â ÷ó¾F™kÙãFœ{­Ïç^bࣈÉÛ0[õÜΘ€O[çëRŠÆÚšŸÔj\ûW ¦uNb•£¬Á&Š+ÙK ,©U€„Kó(ËT¸j:toµÜ¾ˆÜD b²Yü›oeàéñK‰ñ€‚[ÂpÞldùà(°¨Q­·ÌEÄ]0rN*æ›>°öËÔÉêè?ãêr6˜fP3ºÂ’7² ¼:{_ «r`OÝÖÆBHÙšã<³` ·óÌ+;Ð䙵0ØŸ¼_‚³:y°ÝtOFÅêQ ¼¡7PÍÖI@ŽFYÞF$#€`—ÞÆí ¼ {j&ah+ÓVžÐ¹l7ÿ³ŠâùÝ?!ÈÇë{†“*N…”.Ý‹´6Döb1’¾ÞUr¹ô0¬Ç_—Û†–å" ˆ:ÉÂõvíî­’b\š1Ìø—P„$2Q‚DšƒÇ+«ñ¡žzkË^\7ŠcnhQk«žGjõ÷Pæ„c)++ àË15~N4Ðb`/8z+ Ñï¼€Ö®:-©"ûÂJBŒ“¬¯rô¨Eq˜Ÿ0Bbë0ñ‰¦ÖRåsdÌLåtá@3—­Ä‹imØ¿”FRURŠPZ;/Z®Xðk?vû9¨^4Á¶taÂÉÇqQT\¥GNù†ÓPˆÎOž‰¢ÞØF#¹mY‡9K3‚kv ' tÒúß`bwcÛ|ªEß|+ó^Ö©<%J2úIµIƞτ3àáI›wNqš« ?‰êçiBÀq–­ÂµQxlèn)ÏHÈÔº’¶bi#—€¸AT~l“,énó©3:Dà ‚nϦùø‘ÿ"Ã8çU¤Tjh$,3öªê%7px;XÇ-¢?`yã¬ÐÜúU’'ÒÌSz”Ù¹¡àû’Qmt¼†VÅ:ˆ÷†â¼ä”ø9… à©Zžpì˜G"UˆeQLÀ¿u-@9±R§¸‰øúÐ['¯„JžÙ²"&¯¹ªñi£‚‘‡ù,y;#L˜Œü:§Y_VÚ/ˆ¶*¨-éDP„ª d¬]ë ãÏj¾Æ(<>Ì›üàå1§`8Ë,\'l%K­þWBv6Í>@[ x²§ »ZIù»¥Ç(×^§2‘^Ö >MÍúräžØÅ¡´¥D¤†¥äC¿”Ĥ&ø“,Ú½§qZ›V&):Ùÿ+‚-T0bt>òs_Ün“£jTŠÂbgL2*¡ÔV’!RZòs£ƒS^qÃëúFµ)ܵó†Ì j¸^pÝU3ÐÐ ÓòM: Qþ˜céh4ÜY&†‘9²ÒgUù‘°®r[>(Èèí +²ÐÍAÛÎÆB;FðþåêìX4ªÁUa§<è«“;éݼZšÝçÛÝŸw÷úÒ`v´W5¥Ú‚Ƈ0} 0ÕÕÝÙþŸÞ|~¼½ÿpÿîüêÇ3;9³»Œÿšì?½óx‹í„ÚÊþx] Ó݉Ch€Íšé"Ðó;,QԓƯ&/w±EµÓó,rË æû‡£ú-*Ð<¨T©OµÖdz÷gþ5ÐQ" ¿œÍ»C`öéðÄàa$´Àè wñûìw:`ر︫«ÝõYiÑf† '“ˆA„cwRcŘ)߯Ï$lµ“K#~÷“ððü¨À„Ðÿ»ãäƒáÕ£s‡> ¯s¦…Ÿ9 ‡@òÜA‹ã…$T’¦ÑHC-`qS‹,£æaK€PF —ç©×ê10Žªð€{« á;ˆtá_ùšÙ—÷”S†¨B¼Q¨cãžV$n¥Ò À™{jö’ ûzT^S§¥àwgùBÈöÔÞˆµØI!<ÒI{{ˆ èïé;ˆ³Ã„»[zSÍ¿ç5`DnÒ"©ò ˜;çkäï  ŠÜRàN3´x\ç;=”xYMf:ƒåÿüüðãíõÓíÍÒ ûÀœ&ÇÓßÞþðá¾í°ÄÖ§Ü+…­vV‹© M·J¿(Ç•2œ2à!OqýöüRã± ).6[Y‚+¶§—ÅÊæ“\ d8uRu`s®Û^ª\yJ{ëªì¯Ò‡qš*üWÕîݬr{‡I)œfÿ»¸¼Áò€{â– ›G”Ȇë„å›Áâ[ß9º<ââHJE¸gÓK·ÙgZÉíê:ò˜†´“±›õ³„ýøº*Kh¿/w8Ù|)YM©‹eÆeáàÁ€meu0ƒãÂÔv²ªyû0¥HŠk|U›Û)rî¨8ât‘0 ¦jxÈJ›qk뫱uÑ¢ ëÓ‘QoÄV¸ÞÞ8Ãê,ŒgìæeBÔ-"õÕN‹ÚB44·ò%¶†N=%¿®72:N˜ã㬬æâ(qÝIx˜`«£Í¹¢^ÜßIýBõ„^}úUŽ9s.ˆá—çòÞ°¡Ã±¦w»øƒj¥O+J?uÛ¡Zjý:DZqòú&$Wóú"©–Kòíé诈# vÔEDzþEÚš 0EmŽ8›=¢ {ä’ü­<†Ð¹Ù›ª›bÁ8¸YÓ²¥€h(ƒEÍ f³;xt «ÄBƒã®uéyC³83¬µù‡ØîÁ?SûͼS䤵=¾tSAlj·þjX˜¶!O }ê—õ"qåkï ‘@.¼¦9 ­ÃÁÊoz+áíÕ þ§„µèí¯¨[ƒ«/ωCºr˜øÖ1Ü¢ ¼­.$€ë³þÑipjalgغüJó·0s¾¤ÄfyË&ÿ0˜‘ßijʹ…ÁUgàTzïd^Tãë¢ÿHœº¦C$ ú¯þÎdæxKççð2KpF´¹¬åçXŒ±yýtŸ 8–èsÇÐPÌjt…à3­¬ÂꚘ§ ¹Z{óEn˜'kÂ…WA–‹]¶² „ü Ÿû<\E›»‡@@¯ødêƒåÊS¢VƒnGÏÎl¸B#ýi#i<Í1º´Qˆ:9*âì<ÔcŰ‚yZ¦>p}3=&mµê¼¸Eq‚t3Hô›-,' ®^Ý;zƒŸ…÷x.î ñÏüÞÑ=kÇl€Wñu“‡eÑ{¼t¾ë›î.=P_íðŠ’Å×Á¤­ÿi`ªAZ0Þmâ}ÞÒâÞÎ>ßiRÁç«NÑŒ_F®ê K ~êÍœïF³þñj2ÈšôCh®Ï•ÀÛáéVyMK7äDÙÜQEÕìÁW]ø]/ZÈ•5|(âwc 6C°Åjwõû³«_¿ÿnà.¥d’Þs­•Gã®ì©×XN}묅5Æé1ZsSý;õFŽ›×çÿ"3¦ÑE9ÆãðÈNq»òH8JÑ{Ê)³&RA¹fëA–΢¹'·> úò‚«/€SœÂwõUŽÀÅûÎu=#®§šÇš•“üó¨@ó­ã»U¬ƒëã„L½Ó òD}¯iÍ“(¢wÉ!’ê䨷KÐ×Z›¢nº¶6öµÞÄgôÐÛ¨·Ÿ©8ìO± £‡@Ru®¨ÌÝÉ<Æå––îôÞÆ¡7*°ÂI~}G ëì1WH5ðͼ&ƒuø=1… :±m¾¥½§ÐÞ‡áZ‚H9U•eò`…5³äî3í±v®:°äWÒˆSç=þ.­‰¬RÚý0NϬnÍVÙ'à/õÕÇgú v£î>¸)6âÈ 0iƒ*|¥´¾ùyŸPs›uó98Ç\­äáÒé:Ò«Wç$>¸ ¡Äkõµa ߂֯¬É´uRŒùšhcÎ:«Ë<{¬dÞ„jÛ¿ùå%%¸t¦M udïUŽØcõ »QLŽ£âÛ;>±í%yû|ã¤XÖ j3çŸÎA“e˜Ã ì<òvŒkÁëìGבGI˜P…^õª ®D»y|cívD‰‡„£ýñ–:,GmkèDlaõ4Æ¡×K‘éÅÒ9©åí‹" ë(A²¢qÇŠ´ÞÒ@gVO¯;,í톆ew‰fFm©Vé¾Þ=þ:úY¿¶½Š4ŽÈfqxþrΔá‚üP¯Ç—ñ›#³™ÍîØë‚’¿` à$A‡#¿¡C.0ß_­R çÃydÞV·D 0<‰q} ï x<ÿP™ N:¥[ºÖØVÆÙÕ;êóvIIó€’x¹ Ù’ÊSìË3Šù¬ToP Öð­U7U 2ß¿ÊëÕÍ.BX ï07ϯk=YÕ&»ïXŠ6G•74¹s­ÌÑšÛ/¥”Yš“G‚&©·t Ç"iq<¾ûô¿"ˆÿë°|ªF‰‹Ôè‘°ø›Lƒ\yX€Žg^ðQMN¡Lüy9ÚoN<#™¢¾–WctIª}mzábÖ º7•–(0A·&îÇ=çùFOÇp2/ÏÈhÓ„''=8ÊÒøkñ^”:eoWë‡OñY‘`öGåŸaAçÛSüË%¢07‰÷?oÓ,àMl„³ø.‹nϼ_°=Ž2¨/ÙžVá6·'#ãO!ûà©ÁÄ¢ûJv!*  ˆÐ«¥ä6"òÆÃØö‡>ªìs†Í#ìâ݉¿ŽÀ»ü}™Ô"Á¿Ž(ý¯´{à{ŸbõÛX‰e[£ Us4ßOÖm\ˆ5_r?øñ’QYª4ôð2x X ºùE4Ñs4àŽ¯1*Õž§©<êˆr³ õè l> stream xœÍ=ÉŽGrwÂð7ôñÑP—s_>xl¶aÃò 4:PìIˆlRj‰#êë™U/r‰zÕêæ`@z¨ÎÊ%2ö­~¼R‹¾Rø¯þÿÕûgÿøÇxõúþ™ºzýìÇgšþxUÿ÷êýÕ^Àm¯ò’ƒ îêÅ÷ÏÊ›úJk½„«h좢½zñþÙ7§—ÏÕâ¬.Ÿ~~~íœ[²6§Ûç×ð8¨¨ñ깉‹÷NŸÞàX¿d“NßáX}Jæô[룉§ì9›ã§ç×zQÁgZ{••mÞ”ž8Ïr',ÊŸ¿Æ=†%šÓ=>1$Ø.Ÿœ³n×:«O_Á›Ñ,1G¾ó;6â¦ÀJ[z#¬gTsN~üû-ã<ñŽíû]Rà§ü¾>ͺÙö6õmÙˆÒí)a{ý®IÖ;iÛõ’•ɧOxóΦÜÀì§çß¾øÏg&ÆÅèöâ0Jº½WìE>É %õC=ØvïÚäí’µv=zÖ™Xa–ò fºº‡õqÿ×뮵Y¼ ºœ£‚ÓÙ¸“ à4iñÉÄ‚í1»6#$<……à)ù/0Ú(kñºKƃd—ðE8û’mêIÆZG§^÷çSf~a¯u™d¼/›¼úžÖq*^è›4À‡ÃŠ/ºœÇ ¤/!Z²÷ùî3#ú¯g/þᛓ¥Á^8&½èt :ž ª6~I§¯ŸÃí½$À8£SB€éàBlž¿c¯óßeo:Kc`“‹Î¶lß©ÿ§ Àãì:£5*7+Õá0‰Çi–ˆ Ä!Þã×Wµ•ÁØÜ:M¤,÷ç`­N¿–i¢CD:ƒ¯zCØëæ|È[öüî|Ž×8yXl€V/1Dú\挴Áª%G¥4Ý&Ö¸)sø›Ã”¥£4z…?­ 96çâ úx>×;6É-û]!h³1ü9¢”U °° ´ Øïl!]vv*~ÍuJ—];Žd£_\Nà4Ë[†C|–ú;9“šYرùís qpÜm ¨TÒHïëóÓ’SNåÿGüÛi E™WÀÅ+Ó臹úT&NvEj€¿(ݼ:Šw#—5·å=“Z)Åeî\Eà£qŸÛÅß2>t7‚¸Y;9n%åØLN˜ïCòö¶ÀÙæ}sȃì†u´ŸÊ¡MvT\Ãc?L!ÁV,HGƒ‚ZmBøŸ£2 7±8®õÁ™vN)Ö÷þ‰Ã6¬Ÿ­2¬CI­Ð µŒ›Íëý:ª <®®“Z€¸Ý¢51lM3©EBžƒŸÿn5å‹êmÕŠuDý°åNðsˆ]#,I•¹i/.ÊîýÛª0ý;Ò¯œ ª1 çUïÚˆLÒ°ZAmÜ2<D9qV‰|ÉßæKNt@¢ÏVƒ·ŽPc¡Ã[¢B„ +JP‚Ÿ1JHp;žÆ¢–Ë^¾§W<xÐpÛñBƒ ÝU÷*1`uô5NXñ<Æ!AáñhP€÷b®r°ß8ùàù©Æ=%°7­úÜ# "×¶_¯÷á{Z]K!¨zr")RóÅp Ú7'bØ )wÕ±º—Id~ú ªéeIãb1c´ b2ت6hŸ:G|¿`‘‹¦µ²½ÕÛËh_Ú†eð}V³Éñ£J´Ñ"m$K“ w ¦7VX˜}AƒÓé–Eñ²s1¬-î^V¿+@ÊK4g"7lºñ†‚ÅÓ)e0Ý& ¶Óº=ónµ â˜à áø;†Ø“kšÐD+LêV[ÜÿXí±(±ð÷x«*æ%ÍÔœ—“dgò7¶ýkYHå¤gb>&ü£]aþ5Lb3²@®W|M:<è£!×9ÌØt]RH,P-èªv¥9Ç2Ó ²/¼ hª‹À„ A_]7/Mä1^((Ðäjy1w|ìx„ú {0äFÞáB"Þ¡£¥Fçœ I§uf˜ãïØ|§g#ùë"޽7ƒw€Va ûŸ `‹•‘#PÚuh:ÂÓÖ•i^)p2:F:´Pˆæ°›½—ɛ޼F•Æåè¨Òà½%0d­íTxÜ{vÊΨxLrѶ*wŽfjÄÁÞ-ÐÃYy^õ½Ïei“Ã%)ÒšňM€ß6#¸»#ûnëVuúbwãàÎ¥Mé}%ºn겺Êö$™¸ý¦"°Z‰´v„pA²1ÿ|bûžœaUÅÊìÊ6qÄ_We#阸qcl¯«–›ã4g»XEšóqtvÚ6:'c6¡+ ݘ Ìžb ý€ƒ È÷ØéDÊ‘nlæÕi¥ûž6Xª.;=ÚÒ‚ÌŠYϜ߲ڈ[ùú8W-M5GÞÍRá¹”/ QGšp)ÂŠÉÆ]R¤ë"C³W{pyó4ZÏéÏÏÙøåL$åŠMnpZ™Å€ZÖ `Æê'°Ï7Ó’&ˆ Ø(tWOkôb{<Ïéß‘ëÚ9\q§É¹âO Œ¤X®`á!~Ë&A($ÐŽW]}|Ç^%[•óêŽ*[!«KhH},£SPU©‰5¼¾VùÕ€]6æ ™JÍ:e´J¦j@.l÷æ6áºñUtÔIê!Üa3 ÿͪgKèGâ ½e§`g¾;Tð|oj ?f7Z %SëpÄ>Wìá&0 åe'Â¥C; ]¡h {JØ7œ^ôŠqtÞ”…rŠ¢Ìïà©d_v9:«éåñL’_ûÜ Ä¥]ïÅ…kɦ÷3nT@>µ<+pI0' ª; d¦èØhê©RÜ—?¯£ífL&îÉq®4¼œ9„ŠÙZ÷ÛêÕâÀÆ5¢VQë;›qÝ6FQ-0XpŒmŒøÁ¸!WÍ©NBÌ›2ÜûÞML]{ˆ‰¯—ð¨µ*¥Y€0i‚‚á÷]sFø&IbEÕGí·½\õN!rÊEYÃK ·½ï6U[¦ÙŒ‘þ îÍõG7xü=ÃãWgeµ^mÉè cwá#˜×´ú8éTrºÀã"l«bÇg¼œLÓ!8ªp©c/Ó–^éXrw,çážU¨×Æ/t¦Õç#]µ¥8\~:¹jƒ…‰†8ÌŽ\í©ºîJ©/-xÊ^C:}Æ»ó„¦èk1q~[6—;4%μ¬Ûn#£ÕCÖ…ÑúÈiÐã7CX8¤¤F A½¤¹<3‘`t$ŸHI12˜µ2›q61çÀ·Ë kàÛ[!|öð?àëoF7N26G•°q v•°î‚-9AÖŒî$Ň³ŒØ'Зq½³)/ÊͰtÐý˜€Yǰö§mé0Ÿ‹¬nˆë<»¨?NÙhý^ëÆmÌ\fXTL˜úEÎ^&TH%&2¦Ð¡¿)ïe2ƒ‹3Nõ&;iÔvゃGŸF…,¤Ø„±—KFþ¼pϤæ™ÑžJbŒðõ”¢:æ¹Éc Õiýå_ÿ\÷ŸZšƒˆåT­FúŸ-)~gBóhµë^¯ƒ_°›Í÷K^ æâPYùóætb؃…^ÃX1C®cŒ8Ú·g°Ñ|¹Ëœá‘änœ á»2’)׸’Æ^¬ºb°Î7¤ßà•ýõl2LItù]+·m”%™|‰!ÆÅ†Íù. /W'ùó‘Ý£³¹7’q$aº€ÑQ5g\ãö­1òµV™45Îz›zI2­;èȽEô®–j¹×ñ%:C 0š„·eF¸ðFMÔŒt¾*ÛÂ|R}žÜnÂ!eË“°42ÖX\—e¨f ü–-²:HWGfDhðä¼Ô9(ç+þ8m˜gƒŸ|N,ì†qGÎPêá\íz¦V4eH¤í3¤#A4z•0"Ðk½^aRK§ƒ)ºCqŠ. |#“c9]SÂgÜU^´—ùGZ•2¨¸0‰¶/êóÂVàBáN–’<-1l›rMÁ«ÏulÈbÂç„;ÒðµÓ4«³Âc*3 ÑòàŒÇê}F8s‰ìLŠû#}klo;5öI“$A,^»ÚÁϼXgqTa ’× `I£çgM\)Œ!׳±«°â¡Ó0ÿž±Df쌡½F¼nŸŸ'”¥.îú'”J—üÎ8À;ñŸiD‚h¾)³9ñŠOR³³|’ßá<Ç5}ar{ `h'œ¶ ½¹ù0pSJ§þôøŒÒ½…m;¾¿ÖŸÁÑPˆØs^ä ¿ ’³ç}‚Ÿc– Ü…štÈ«Ï?ht´¬¼ã÷ySz[hMÜL—`ÆÚeo¨”–Ð¥œƒŠÉ½Y&¸r[!F!OÓ NgE¹'vËnnÜ}™=XÂ&“y/ZrÒt¿ÖÍZ# ÓÎÓ3æË#íoØŸ&Ù¨<‹Gf  ÷‡¥à1=FÚàå ÁÖથï¦áàRnô0 ÁXÇzÔ‡ºq¥iTÀagŧmúv'¸÷a¸Ãf{_Yú¯”ÁÈ•Ç Ê â¢)X'ùŽN6©<-àHˆÅ*0-ßdرöå×(“U±d­ZÐÀµ UËùíÓÒƒÖ÷¶Þô´P%cH>J º¤$«ÙÑÜÁJÁÚ“]T…!Ú‘a1–XyçÜ¡½•DÍKBwÜš´ |IÍØÉ…ÝÄÍR\ø]ñÙyål9œ£*•#ÊïÝzúrâ®´))Ί|(Ø%1*{H¤eßK~â8å²ýÿ<Nc–ÈFØú…›› —öc$*‡%«]²Ý.ƒ¿úSyS´%#ZÊz»/!íàÂ#Sñ`}Ýñâ%ó–õDáP zâ`òïí¶ é]p|ò±Š'˜æ87寢È;ÀÈÖñÍÁ y!–s„Ú­Šµ¦² 1Âé÷¾¬íZê|ª*¨uÂ";1…]å.°Ç¤Ç/ó;›GÖªÒãe´w`º@FÀ1Uq³O©½ÜIË™°H¨½ö½öè<}Do. ¶6‘ZK!˜LÍ­ˆ¡æîbp³”ÖÒh›dÿP­ ›µÊ SÕð úxàýTæB˜J) %VÛ É"÷ô 1¿±7Ù„|>|Þ‘£4hÿ‡JjWM ÎJj×üíÍ#r_Ò‹Q³m‚wÌÃÙ€£³â¾‘zÎm40›Ùw‚êü{n¤«®.µ”ºp#wåïVã"cAƒ©¬µ”³ñ÷œóœ0ì¢Óìˆ4¤‘B_þˆØe%œ+ùª:!Õ¥wfMçÊ»F:¦ëôœÿÆQÙx•&Œ“4°ëH|»#Z/g;N<Âyevüö!ϧ ÁJõ¬\bvÖkÈ ÇбþµÆ§q³ãá ðPAÝéù€™™ÑOo„&Ü3xÀ¨á*ÎMƒ‰¶ó\Òíxñ½ƒ)Ë´ñpÑé:IY.,XaÓŒõ$®*3Ä‚bP?]yL­é°}ÇJ¬…Û7žYߪ8Ó#X,P1HóX ŒhÙôz'7$p:oD»ÑTQñR>1nÄŸw®\;ïì˜ÊVÝþ‘-9ª¡›6Ž;Wªm/2M’+Ö]g±[ØÓXØ 434{*ÓIº†äµn“±Jû”3[þÐe»u?*E¿%«y¢oô®ïØú“)×Ì¢õù¦ƒãZ|'ªãì¢Å2¢A7s`Y‹ØüÒ¯J¥N@R¼;í•” jýXˆÓ ýõW.Û ®x¯—¨E¦zØJ橦µ)-÷®è®no,7Ó—ÐXÛšÚêIL[ìÙù‡qˆÕm^Àˆ²{tXC6eû­:~4"ÒG3Åð¾¢.eÆì'ªï¤’Î4îËŠÊÊÓš+˜~à»®”«æÜH‚‹Od›4ÂfÒ(è©ý¾´ÐêòȬÞeà>} ®žI_)NæXiâÓæÝ“’ûœÄ!íùÍ­÷l²Pâ4aº\¼ò_Õ©´m¥¦fÓQZŪ´¶pÚ&ޏµl.{RÈAJ¿PEäŒi\G»ÊØ’ÐÕp´ë5Þµþ,ê-ŽÅ¾:“iv‚œ4‡ÑOCœ'ÂÜ—“ÎÂl(m‚c‰}Ñ$ƒ–Ë:t4…gض¸2¶B¼ê"4Еm»àÂSI݉ÁQ–s†¾X6rèvsÁÓ3éÖ2+œãJ0‰Q7Ã'V|(…*÷µŠMè¬mhÁh:žÑP\¡ ÊE³`Á3°…¦«ÕOZ[¥óë²­`EÝŸAçtÔKæ±-i¨¡Ó^ âÚù÷Ö Ú9ÎŽ°,fòÈÎB4Á4É×w[<tõC§™¡¸Ûêfn±ÓUò(çØëVCò¤©5˜cx›7½C I&` „l,óÙ„A˜#€%I*—nÛ€í±Ì?؈oqܬ ,L ˜®°Ÿ*\wÚÑ{° îËh—qCáäÑûInÁ`úf}! ¦œmRÕø»êrp¾|–,wÛ•³*nÄK¢ÿDr‚01«-i†Ûó„%åh³º™hHoÙ¯‡m›ÏpïeÿlQÚ@—»lô|…)ã’Ýn šzEº6°0ÉN®…ª— [÷»fΊ°‘kué-ò…s:*-#¥Ži£††Æ‚M}Oxøè®gäNSS¤J ˆ_¢Ýh©ƒ2B*¶¾-0›•3ä&¹¡;#¶‰„|ZmMb¡rí±8… ´éS§äÊõ­ñS!p4YÄeC%•Røí¼Í8술fúàÒv"Ä ;å*2{êJ=ΑHq¹oómY'©V¬ñª )‘á;áùψǺÂÀÖsta›b΋ä%iÓ¬Ö(ÖuÕv=o’³÷©Ut—}WO2¯ÛÚ~fL,°’BÇ]l}„¥î¹¥„›y³ÿ)=}N}÷oì„ëꛨåCÝû²¢;ýËÜNºOŒQuâ<ü¹ÌLþëY®Õl Óú¾ªÐÖÂË+Ûæ#ÌŽN\G:1á %€áÏ-"û‰€‰L2‡*Ý”‡FlS‘Rª$™Ã¦ßen!˵‚µ§Cýܵî°S§o«,ÒrõN'W{hÈkÀµQâ‰y «\†o¬•4¬€-hÅê¹Mv¬~ Û<Ýé*U¦Ž.ÉúE“¡ÜÙ7ox·ŽMÌLÔÌ>_Ò”»|9$¥öó_hˆ]ªX‘E,©uA³o‚¡L¥nµ÷eFz¿Ñ€+®‹ìJU m6üï±å«u€ì¸ØÖÀºf©{ùÿàãòå‹>sç‹NOL;ñ/ûô¿æóB— HgÊHÖ % ê¹++²›†Å*g‡gx1˜Yܹ›ñ)ÍPêм\ªÆ\ ofYàÕÐ/ûí?0å¼ür¸n%á}[m'yk°Ã%í zqj׎‰[r5(.dì—2k%ôÀ½k»W”]F¤'óZY€›5ëİÒÓŽ ø—ró¹Žôá—€ö¸ÎÃçéø«m!™Í‘}uNá7Š÷‘ÒÚï+ðì,•¸¦ù’P͆{jw„r֖潘èDïkûd?|›SKSg;ùLTkNߥkB})Ju€QºÅM)JÓ· r0ƒ…³sÊýÆnÏÝŠ%vñ ¯2gÚ%F.ÞŠÍ%óè7"0»Y÷ž9ÊÞoðN·…;-“Y”±—JR;åçp:IîßLÒ<ë|Áû@O}|±´Á.ûcû‘.Ý»æ%x?S^W‡¯A/càø²’&”ó¾…°ß5aªôl„¿œåÍ;o2ƒ€#>ÞÛ<6ÁÄOÿÆs!]j¨·RL9–H1KÁêÌ`ÒDCך–šCaócý -:ªä–ǬÐjéÈ‘` ä¯‚V½¥kr·«f }Î&ÎY±»|Å¢ ¿N%Ãï1E8œ^ºnÒ?eum ïÎnØ#)„Âv¡QSoId³¸è¯®ˆ …5³Msö$âð{ñìáßÿ~j0Lendstream endobj 111 0 obj 6654 endobj 115 0 obj <> stream xœ½=ɲÇqwXáoxÇh×¾ø&‡%…mÙ!YˆðAâÄJ“(>ôõÎ̪îÉZ²§ç-øÔ¨©%+÷­þz£}£ðõ¿/ß?ùçÿ‰7ooŸ¨›·OþúDÓ?ÞÔÿ¼|ó¯/`€É7yÉÁwóâÍ“òK}£µ^ÂM4vQÑÞ¼xÿäÏ'ûT-Î[ëÝiyú\-1{£âÉHŸŸkíáŸÂéO-L–ÓéküwRÈöô#þmCJºùü=›‚ÿýV±V%ð³MfÉÚŸ>ž×fó½Â?C Ú¯¿³&†uDôɾ-Sgíéþv›ð«ÿÀѶNZrRùæÅø§?Ÿ^À`£¬Íñôçð0u2°äs“a§O?°Ï_ãÔÖF—q'zQÁÅÈ¿Òqaéhbó÷küÛÝd³hwzɾ~ÿümY?é˜øìpy»€7ûú¿êŸȿÖCúœË…øhÕÍiØoÙ?°½¾=Ox[à‘F—;kñ9F@½8ýâàðè®CVpF¼>lÔ€¢Ï黆þ„c´2cÀˬµÃ〽…ϟΟËë³+(`³Qy†:>!ÅuíþM\Nö3ýeSæ`ä˜ðó6”Cñ¶à„¶¹BŽ’ÐH'ü—+¦Z½^QZYwGDóô=YcÝìêúëaaÓ:÷÷l¾:ØÃðõ¼Á÷(¾¡Þ-‘iÈ.êscý=×p^ïuf‹Š@ŽKÒA"Ž\e\^j胡%£Ôö˜ý$åûç§À˜¼V÷ìés›4Y¤T6µ°J9} É$¤e“Ÿ½‡±ìiOœ|ù˜·<ÊûU>Î?à ú¥;}·!ïë ðï€ú!7§á«ðá?°½Þ–©¶¦Å­ž÷ô¡ýŠ£“C¶[AÌ2+¯ôÉ÷ôªL§M' &ºäóÕ¿Ðói^2Ä/;‡P¦!¶rNm2Ý,.‡ (DšìàÒâÀó²½m¾þ÷¿œ—,TUßRÕx½Ã MàÛ .-V§1pªõÞªÞ.IM—C•oŽeù,üäñEÓ´ä‚[Y”»LÜÌEŸ¹®HêÇ;†¹ïq¿$oÅá–pæ÷†þv*b'@KÊîò½DØ€Aq“|ÃÖ¾÷2ÈúçeMïMu¶A õ;·>,–o‘—³+ijƒQЄÑX'L­ª„Jnçè­‰±å9NàK¤·Ýª^¡JŸ¥›¬sìXíº~!=× ³ÒëP´½x#ãÚUÊ)'ã²-Ú§ TCèH Mµ¿£}tšñò)±1Жߕ±Á¹£ÂŒ&õÊ(|õjW@à`ÍA 1_ÿU]̆ ›©à$ßZ` ’ó ^Én"#VÍwû ¥‹·1:}£Ê’V]¿:Júï%}`ó1õ¹x+º¦ÑÍ ªªg'Êra®&Zä•f—ÚB¿ì‡ßäÆ`$Y2=s@U¶“rw¡Nbe#‡Ùc°`¦;‡«Ÿ~ƒ_ƒKš$ATR=ðɇ„cXõBø©Ñ¶§1ÜŒv­&!Q3'A®StíÔ™<¯ª¦¨Aø•®Ö±~*Ç«#àîôËÙa°œ©»˜‹­æùº ü±¸ìcYí¿q£òÕ±a”¯€tÀ[©£#„Èx¥A‰uw¤ºAÈÃÂg©ÃO,Ÿ…`gµ6€u!…çâÓ0— s¬ÌLbPoA¹Ùƒ_“)\&„ùÿÚ"‰@d¯Êh£šëŨ¼^@äç©‘‚¶€[¹]å ×È ýjÎu;lÆÑ ]P¢&¶¯C¾0øWpºò£–È„™XµÕW¶âý¾U[ÈçsY_g/±q®¶–;ƒ:ÂÙNgsèø]©¼'OVîO|~Å Vƒz §Ûö#ÞßË6Ñ4¥Ñ!­ e8\¿5¶×\ Âe ±€ÕúÞš L•ûÒš œ±n"Ò‡Yø¹«­›tQ;`–p6¸2.®Ã8ô»ÂîmŽ›gŽ»Vqìé¶€9ùV%ntÃÁÇ,—wEÝ ­^[ÏaU”l›_û™MÀ÷ÿLðô‹×Sß‘û!×Ѿkeó òê¨+`“] Hî&“ÿb—鿤(8LHJÇ‹ö"Ï8r€5;4‹Mö±Ù1ÙÙÅ­K€èÜ—=§%äÿ‰­ÝN\`Ù³üjeÊÛ~çÙerf E úÛɧMýŽ»ïMà«È…r°l^ÐØQÚ¿/ÈšÍÔ^XeS™¯q&pz‘œ ü;#5æ5¯^ºrò–¤Þ^p\ò‹}VÜ6jAHrSgr…$ßæK²¯ü‡ Yo–”Í!÷ßBçÛå4°#­×ÀôMkùœG ¨°F¡zÁˆ7¨&öPCÞ\º `ê)ë™: ʪò*5£gÆýŽ×w×¢Ÿ'ZO.}ç=Z¯`£^Ú_ž“ëkµô©òóz;íã ç ž$¯ø«óÔ¥âgeÅ•˜ó«^öé–Ó®÷fù˜V3  ü0šh“ð[sèöÑ®I°O»k¦;8µi­«]öÞûýzÄq™Ð9/¯ÂëŽx¹ê‚‘l¦¯2EØë„ÞðSrÉ|®Æ̵p´I¿Ïú-Φ+èÛ9¸[m¡øô@«ÊšE©p6ëâÉ 8ç1ºb\’ïCS•d›å{CÖøy(j®NN©嚪¦ÕWWÎTÄš«ŽŽ£Ý­¢Ôf³ïãIÈ$ûPÆšô`¹‚f¶h=^p0˜Ì21Cƒ¸ „•’Š„Avg ` %XÉç²4X/¢y%xroË/Ñðì¸À/K˜ Též–Á&§/㨅Û;ê’mÂÞQ§0–A°v‹‹nJBèbºLú]G÷7ç ¾×m¶®KN5Œ¸dÐàZ #)­ÃÔáèuÞÑ0À+'ŽiЉ²x0–sŠyrb—V êI‡’Ü|'„÷\OÚ-Þøjñ:ô®œÔv±…ñLÕ$¾]N¬’~Û#°gLO°¨N»¡,úáÅ(úž4»Ÿ]“_´Ÿg7ç{5Î-ijÅkQ­@â?ý†mñí%Ä¥‹ì²LÈ:{²¼oêí·¤î€ôRÒAS.±'Ͼöq,áÃAÏ5–#ò<"3Òp'ØöŒ/ç(tzIL~*C ýËI˜®jÑ}*ZY#¶þ¦|öijÁ뺺½Vo]“ŠüY]»ƒaÄo[Bn(·„;µ ´¹38xúÂ×$Üp£Mè¡ÀÖ´FÔêwú|¾ë-QÈç>®z• ÃÄÈßžR>HÌÞ nHª4³,èêÿò”M¸T&’”Û»dÑ·ì5\jÈóëéx Ûª/œyr¦::llk¹tšÛÇé)\:¢8ãvغºÆ$S’]R²îzN×±1B–4°%¼D³ïÜÅé™/’¹¶L]™A­ÓU…(4 ‘[Î*ß«Ay27äæOžRr—`¼Í7‘Wóà‘K!hÊ&þÍ‹'|sú›_ž¨›ß=±Y+×7@]ÈCnÞÃ4>Ýöåû'SíCâ믩ö0'hqf°¨™”d{Cªœ‹9ÏÎéÁdÏöÆâÖS’gÚ_Xbˆ9ÞÇ¿´›Uø±cÞ}$£,Þ‚­' ó¢Hcù ³ôìlD ³ZùcuFŸÉ®|5Ú_Y$‹Ë,­Áúu]îL¦uúSbžVÀÛ„¼qÒ¦Ò¿)_­Ø­¸ìè!ÆÑ)*8utqM1žn).ƉöI¢kÚÀÿ1®ÇÍYz†Ã³ø&n”ª°¹ ”šLÇi:Õ¥ÉdŸj3È•–gþ#S%x0w<¶)Mç½òñŸëÉBãv¹-7“¢‘b Uj—㶪í@W±‡ün‹çþ‚QBãØÄ%mµZÑ7Ø=—ÉCn|MîÛ§¤o3e¥¬Sž1j¹C¸IÐöoKf¨V¹õÞû™âlä’×)R($_Ý_Ë…%?µ·³¢I¡C°©†µqH}äETÑq·yÊTV‡2•Ám÷÷§šÖCÔÛà#©À%Ęr7xå|úm–gç!…@êIZ,;¾ÍYèqPzI!]w)¤V¾¤Ú ƒ6zÊéßpÛp·YK5-{ô”A—ÙU*ñ0ÞåkÉ‚šÑ‡‡.T‚ZO6"6éZ£äS}µIšhý$ZÍó–”Ã!Ä"[¢=ª->‚=aXâ±ã† $üZãíÜ ÊOÖÅÒZ=­ž·¥¤o6]èóš¿ëië”öFñµ ‚ͼºU|TðaHn|Pñõ¦àk—<È‘¸´Z½ö°em¶/×kõ0碆Ðmèkõ ìkPë鿽j¦Ö“8噓AÊí½ïgM·K—\Ã|F]"{Á•ôºŠ’仯Ü*2™ãÙ4œû†¨|I›ÁGû=d˜O XÀDåÓ5&ì¿ö¨¥~[°œ{à7žÓƒ zoü¾`¶vø- ×Ìøw~Ç?o tÒ[ÊFýR&ñŠóíPÒÿR›4¤Õy·èÐùßz´ˆ—­RÞ‡ó„>ùó;ES°F8s—á„Qïšáý¥Ñì?–J °~:Ód[T0%º‚‡õ—Fí§rêÜ r5¿Ë ²šÛtäu¬rw®Õ3D­¢¤ÀÑ2Èe†B\][7Kg˜¨á,¹Ó$?–ÏIÙ{Eº@ùò˜”o:Uw˜¬\g|= #ƒ»FüŸ[K(¦üÑÁ¥€°÷´‹ŒìÑ…„§õËØ£3¨yÞ8—(®t=«C¯ í!ñÎ-“ôöx¥Ñ²¦Dün ´/å=ôEÕñêƒ5NCuÀh¸PBÓ‰[Êáp|ÐØbÝ©æü§ß°Í¼&`íÄpn/Zž—S¥F‘´Š?p³Ê_¨Ú„!Î6Û’´9ÔZ ~$ðÈÍkg0@ìALÃŽâò+Ù¬|+ûG~KT› ä|ƒY!§E>ƒ c_½õ)¸Y„ýŠæ³•ª‰WNÞ›x³l¬=Oƒ²‹èÊÔ¬1;ŠHSˆ0öJÒ>.ÚD«S\MK¥´ó÷û‚ tnkuÑ àɹ/¥ßÏ®éru—ŸmFTWЋꃴVîpè ¶[å¥Q­¥‚>{w™ê,±±Í”åþÓGI) Ë!å6z~1ºGÊ!eýý¨JìóÒ'[f<øC#WhÆÜ9g[ÍG lH?b¨^Ž­ìTp²cjá–Kk}ºӞz-&ØO³À2ÕÒ¢ÐÏr$[ðÖò(ò¿ßH95fï ÷#) DOÄûJ>°GÅK HVû™¼ï Âþs©jùò˜éO‚äj|¹.Ï¿¾YûšH4T馜®•9 cÀ Tž;$×ߣ }}¦,4š€oÙpFùÁ€«¨8ͺhÞÅ‹†¾6œñé«ÍÊí%ƒàÝ~N!œ›¼=ŽßÜQˆ¶KtTèÙØ¯ÄÛó²öwefZ‰aô‚Í»>ÑEK3v|‹®€(¿k裥 :H˜Õƒc$n¢fÐÌܧ?$f•s´+ «zZ¹Êõ ¦smš„¡p1˜Á «V¤7‰ÂY{Ö¬‚}e¾\¥T“˒üìçíóµà8Ùi±ã2ι‰¹Ht!hTy/,Å;”iu ì c¸­3ÃzWÔ¥µxÙ&ÐEÝ üü‡ÌÄ–dã4PVýZØw¦§”ñ…‡˜OckÃæ–¬úŠšõw{d@?ôc+V숔êw§”‚³³ fÉêšK:^<ÈÃx Å$ëÚI>šº+evM-’”ï¡­fÍvò( È)_rW>l'Â5äè܃7\ÂóXã'ÚÀjE#à\;(ñ`ý¤›[ŸÃu°ŸWK²•ÆŠÞƒÖp¿sòZïAטñ)çÜ-è¾ûÓ[¦#ǃX µíX}5VRZ÷ Ú¦žæ<ø‡ 5«;vµr˜Yž›Î 9”DàýJV«p¤¿±ŠüU˜é¦Ñ‹™¶/wÈtS¿‹7&x¢2݆¬µµkëW›òþƒuÍ™{¨ Å#@q1a4Š×Èá>@qÀÔáÌ PÜ>Pf5½ÏΔ3;"Ö-Åœ1hüûò>G,˜Ú#¦ËG¬ àÍ©éqÒ½A±ag7,™—:0ƒ‹wâß÷MIDw4öÅãñ…yÚçÒCgGìžâú@Â6d€œñaµ»'ÊlïŸgéYð9§$y„Žg@nÉ8cì¬ÓåsyÓƒbm€æ ·=ð`X—ßÀò)©hÅRлŠÿöi†ƒ)_N{0=þà ²Y’#IŸgÕÜ%,[õ›=MŽ .irC¶a¯ÉÕ‹<â!º ÉÝ!Sq3ìÐ)à¡:]±+;ØÐKÒ®í sd`‚®÷þ€=evZWïórսϒ ¼_ó½jG% ÐTe‡³¾;ûF6ýÎ|±(=”X±À‹±½«x}J%&‡ÀCi7{ë*Ó—”þƒx©û¼ýmeÌçµ½«‡Ü_É¿¹ó:˜Ý,ö®5yÑáŠÊÐæÅ ª©ÚèGÐéYžh4 pžÆGé3±ÿˆ#\vPZ™¼ À‹ {TŸ»SË“xKˆºKðÝ"kÊí7pq´?Hì!M½ˆRNÿ4wKï4Qji€d®Ä„oný™ÁÙž¯%Ó„)Û9}ņ<[ƒ ]â ½ÄÓ©3¿OƒÏçуXÂ?û5Òq —õÏLê ‘›>˜àÔr÷<^¡r¼maù…ƒè Äò6ñïp´›ÊΩÉSË€úº4rÐ*‡Á¨Ï¹hÙaýeÎz›0b t|*ˆ½ýÓ<Ä¿ï?¶œ3·›úºSž‰ý‹ìœ4…¹\„³$/æ„Ëïõ «Àô² ¿:9Æøøïõ`gX#¶ÀÙé=#ɾY0®Ï˜Ý‰™=ñe{½”g‚*&í¾\Ÿƒ“Ô¬‡,q[ E‡Ïì’SlU‰Ù¢…³]™¿îv.ÍYër,„Ä·uè<¸»¹P$ÚüPw0{Ó­„y/ò[-üã¶Í_Ê€ìÛÀ¼Pº>‰2 n†—լƾí³÷L¿/»v1ï¿Àºû3ï?œ={ÕÆÅ ¤pÆ"·J{𨖸ßÇÎH嬭9mÎG6ŒíÐ3j°>”ˆl× ë“óKÊþôïôÙ×ÛÆ9@š\Û.éH†ûm™}Teñk°Ib´?ÌÕcn7탦´âB×–øíuX ÔT­´qKÐY¤Ç 7i7;&Ný{‡Ži·•’ðÕ¾’äL !HY+ÌÎsW%ÿc9¤n~Ç)°*£Ñ¶rr´3X^l=áÞ3XœŸÓünóï5CæÍ½ßSVäƒðZ¤¥‰4LÓ DdBúü¶‰œ+9fvJQQ(Øþ «ÂtwkEˆñ]`ˆ¿ŠnlñS3Œ¨iÎ9È @s¡éXüQˆU›ÉÈÛzßÅtÇÓØYÖÖð´lmÐ †¯ƒ•,gfõÞ¬ÀeXW1ž Ð¶Yd!ŽÖ½[OÞZíJÕ®¶rµ‰ûz_—7 ð-õÇx¡çÎföÇf¨L©%’,’ðúöwèçp¡K^$wRWÙµtÁ ºýÇ‘qHèR/æê¦ÐÉYÚ÷§rúp}>0þ,©Ù{Íü Ûùâ¾eÏeoÉS’c— E|‡-ô «:Zeöfe#FæR‰K/”`==tò:#n#žÅ^Äî©ÆÜbŠz æœ"y¦ßMÛK‰û=Ú6I ‹×CsPX1åp'z»T9ÑЄÒR™Y¤Í¦D©"¯¥áJŠÊª Z=X¥ëTÛø±¬†W)pq³“ùÕâ}Ñã,˜Y³¬òû2„­N'• ó]êõjD´\¼_3rÐˡ䧅3{Hú¬–·œ÷ˆbÙïVb¶*"Ádû® ÕJNî#øè+wSW‡ÕþÁ°k½z]7Sªòä¡ÍI$ øð@‚åÇ2_4C•‹¡Ì~+jOÃ,˜ 1Kæ:\£RČƚå•VVØt~‚Êöð¥{a×{Á|DœÆ ÀàÄu5FL’ ×ZB83>§rg*ì\ØÏWh´î…ÿÂQÙx•ÄúðO5=¤ïü³gw†O߈7=yF (˜RLü‚]“Zú-Q·gWaîªæç( 9ù'f …¿3eãêã–d›ú{ð—z „è-hm¡¶I{ÓóxRn KjFاÿÄŸ%`vZ?×;¢9Ôšg²×—µÑ'g³Õ׿±â÷ø·Æ\À¡Í eYæÁcdÌÃE9o.ƒògÐÃEùp[~–ó›Ñ3¶>ûh{Ç×í¥Æ]“Êù^¡ö ­½Ä L`åœ~„b«šJL冒O…Býøæ‡m€—Ùì_•!pŽ&ÿ³>‰Áp¾Ýõ韭ÐÔ` æ âhÑ.Uf§&G ¢×ØÈe߯`° –›iÇCpeWˆõþ)デ½t¯ì†Âàíf§èýø9õ ™·mýjË2SY°›påAðª¢s齋½¬㥾̽5«BQýó=Æ)lQ4*ßKCì1Ÿ2öZˆ[Bŧ{¾†.màPΦãõÒ&g@Ûã ‡¤öKZÖufçÚµëÊý†>õ.VÉ$z3ñxÎå'ÅÖÆƒ™Â{7ÙÄzu½©Bt¿ ;“PðAÔ†f˜‹u£ ÜŸž Xqz¯b¾B]9­¨°É£±‘×<{1…#N´˜¾yÑ[«à…Åæ Št!ÞŽÉ–¼“îÜã.˜²}çêßÇpæ‘YÙ»[N}÷îˆK€C˜¯©l-"ÐçyÎéK[ùßü?ôåþ¯endstream endobj 116 0 obj 7647 endobj 120 0 obj <> stream xœÍ}I“%Ǒ޽4?¢LU¡ßľÌM#d’ÉL"Ñfsò A`È0¿^þ¹{Dz®õªÑ ‰< žwf¬¾|¾DäÝÍ?:ü_ÿûÕû‡øu}üæO|ð>¶›O%UËí1¶î[n·šÓã_?þË㇫®ù¯ÜÊã¯ÿûC*­Ü\x¬¾Fü÷ýBq(õ1åo¿C»…ü˜"~×ùû«‡äC’7„{ñ·g ó·öñÕä„n½=΢¯·¶t!?©‡1ý÷1Äñúf_=|ûðùƒÄÿø†zËDNôx¨·ÐcuÔy{ìýVbh´:¿ûûå)çûÍÇÕS¡õíSÞ¹[%Þb£6|Êú„,-uK{"ë¾zÿøOohÃz~¬7ß|‰o~÷ ;I#MñV}{,=ßb}|óþáéÿ¼zó{y>ÝRʵâùH£É¯Ý­µîÐÄÛ‡'?4 Óƒ.ÄôøÚGâ‡&O^7Ù½¯¾óƒá¨É×1ÜrÅÆ`›ïi/x'í¹£öR½õÒÚãêÉ»›ŒxðŸß<üêÁ7ðüci´W)Ome¢Í!N¼%ÿXHn¥<úŒßeþþêÁG¢dó„§±áÑÂü-]ЃÒk¿Åþ8Z¨.¥[ð³ñ›ÞÐQÌ't£õ$„‡ÿõ1Ò+½b"ZsZ”ßοÞ>„Çß?ÐR–[€ðEbðŠBkõ”|딄(%ƒÙ#³³R\ÅctLI7¯‚NkÀz‚2‰)ëE?[v7 ‰ª“·è}‡yû€aJ¾U´ãè™,”(cv¬½˜Bó¤=ê½Ü¼´ìË­%PHÊ3ÔbÇ3-#Aq„‹ÚÆÜ]Äò…Ô·“{åÝï%ÝZŠ#ƒì5Ì”ðoDq)(¤[*¶‹UÖ'“ðwPhå ÷•sÆ|JÄ òV¢Ñ£/š_J¬h±tßn´¯ ÐÓܲOc„!Ü t÷P  ÐÜ¡n:Í/J;ø7¼åh·y52þ˜]ÂÛL Ò;­AåvR'‹„½Pˆ²PdÅR§¹û5Åa/í[­ÞâºÚƒ¸yÆß|_µS+¸Ž(»Äbp¬í{åÕ e~KC" K¥4/I\Ò—<fŠöíxÕˆBás™¨(bzh½…ÁẉµɃ¬'€Gò¥ËG”Äè‹4ÆÀZ†(ÚO)ž5šŸíä[‚f¤5Í}Pœê/ƺgÖ_R`v¢cÁüêÌ=švH[åÙ²j’‹ÐǘY_7ö/ª®$<$¶H¬­’JQ$½“WÚ*/‚W:­“ri« BÚ<Ê,²]Iº©'Ë·ÖLz'07ôN’¾ ë$¶e­[˜k)"‰õÒ0Ô…lUAËÂËô_•èi´Ûæ<ÁŸü–«C}z¿jâ0pO£.Ån$bTŒ¸Õ¤«œœ¬N«Qug"MÛ½¨‚®ÏBN‡Úâs/&‰tA_Â’®‹º^‹m‰ÊߙijÀþ©vÇܣ؟^„Òx^=uUq™D‘µ2iÙ­ÜÖŽw½©­ksÇV‹™‡ü¡aR$EMfeõÚ…O`SÙ®e÷qewCV–ø£±U ÊKRSŪé[Q¹ š$¥²’îP2˜Ôf íOî [b0ŠZ}Z“¦Š\‘Jn¢ÑCpPÃWj»´D¼Eÿ"ÒWªL¼ÂÓ·ˆ2¸€¸^±)ò Jl£wÚ+攩“éqfSqQ˜ÀE*·¢K¦T¨t¢8¨¥t4ãòlPí{!0|#xÔDÁ›‰ñ.S‚ÄBˆ¢ ÆK˜ƒ,¸hW ˜È ûa§D81|eJÅæHe É”Œ#JѹêDoÁ.ÜÒÔÚŠ™ø‘ÐLSàgÖ­ m&kV-¸…̸ÞgøˆQ4‰Kl1‘AÈ€*JÃ÷¡rAè4†žGì¹iGÅÆN(F;1ºjbÈ!âÌ £ÀÔƒ„š“t‡ ›dÈx7veøLüÈ®>­WÎcoX©ô±Ÿ>ˆ:PœJóó—I*pÚÃJC2…!c–ݲ•1:£@Wp¤9ëD ýŵ$€Ä!‹ýQDÜYߺa-áü³ýĸE全ɑ¬œƒ¿X–akJ¨+¡U×)„¦Vch{¤Ð7”ŠN:²ˆRQ€®b¥tµð~™Í°§¬"ºvvÑ“"btž‚Åkˆ`ѪÚï다s`@m€mº6½[ …åÞ·Ó]à=c1úŒXšJxÃ+E¬Q%v 2'ñ‹ŠØšJyhˆœn\Á„¢œ]`-ÙËΊ AaôHë×&s-Ž8”ÎËò”>zp'sÚ¹«De®Xó¾<`Ž´Ô÷ä©Ñx”Üç*IgeÚ-(‚@²w•[$\ºÍ.æT9•JŒôæ¡­ÿt4¼\ˆ %=›r\r©’¨œ øØ½àqH ‰âû…’ "I¿‘B!Ïž§2Këï¯bäõ_žðÅT_Ö_Ú8=®„ê7ç˰Ð4³Ù¼þ¦ç¹÷ñÏcdúöfè7q¿§·ªè—eR5²Í.l˜Ý&É<¤¯-=Ÿ÷Œž0³6›´÷k +¦pŒÉ‹x2Z¨ÈSBóžŠ8‘i(ñJ †…ˆ) %b›Íd‘ÅEÊ™1VfDa]S€ÜмäÕX-°·4šA˜¥Ž~¤ç‚¸®?â‰^GúÁP„.å‚9ÈR¢'ˆR¹Zñ› ¤ ,€jÒJ—ô"¯ìÖÅä8`_’ÌE„ÂÖybÖ˜1¶zPœI¢¶\Ð¥Œ#\+¬&«N!dfµâ›Ø¿ˆ¼ $L‘—¾‘œÁ‹b‹)±óQØÆI»db¡õ¡¥ëÄ[Í*P:¢MïüD¸É² ";– 61祱õ.Ö‡ ð´Œt ™C…La»¶`6g˜²z+:3%ìêEàˆLÒòÐxm>ôqJ¼úÿ³R¦Í÷è ˵Ü׿su.ä[ ¬¯!V9\Ö¹ÌÉ›Fí<›Ù˜Aq0‰µ"áZ£?”æø½èäù„(Ýñ²þÒÆ§N®ÜTRAóm©qšÍ(é\ÿqŒk¼»ù½Å#±HéA ¨Ü„A@†¥R Ó"¤àv"gv@(‚Ÿ#ÊB f4ô¹à„¨š¡gcr‘ i…¤ àÆ—L4kðEâp±d ïÝ»Nå¥Ì¢ GRY7Ôz‘þêJP»'o†òHºj„(2¬=ñŒø% 4ŽcEÕ|W´ÄEÜšÈZ™wTC#‘‘Z)Q5<,f‚¨ÓÀùJÀÍBÑÊ#^rÉý&„ìÑ.ö" …]W¢x7¼ÿ‚†½z2¢ÔAw2"Àu|]­K%ˆÜ¤,Olì4‘CÂJÆGn 'UŒÕ—2‚ŠÕÁ¹ÍBÑú"ZØ^ãs%«Y>`qâY³Õ÷¨Ý6(ÍËIÍêB™Óœ7‡£dò†òªÑ_š"fL’áï(¼{®JŽv8gÊ×0ZÚø%Um‡:îµGm øk‘Ú3h–Ëþž×ð@‡˜ñÅЯ Ú\êï† ÌHD¡ºhB»I\šZ–8¥¢ÖTX.X›ì„ã=]òúþø9¡ç¤6ï+tL`;G ”9@y;Q¤¿z¾¾öTR¯³±¼¼ =Vgý‚„åe‰Ù·®(žX½,yÊw»¾ÞÑ(ÿåï?<@!wzÔø’gÓg-†äj=4d5íÝ5C® vßÎôt„ûy™1£žvFºæˆ?]û÷í\òdxÔvæü{b*’7ä4”òÎPšàÍå¥S,PN³(ùÝ®£«mKr¡ør©Ë†]ŒÅ´÷²m;šæùw³Z†|¼kŸ¬ù—mZA0ÅW³iƒòÎP¢¦‰—·.(:ì¡Þíúºgß8ömiïãöÍÎô|„ûy-c¾Þ¸Ÿßþsˆs‰~{&$t»ñß-Ýw& múïLábAõßêG¹VpøïLAUÔô߉8á2ý÷”¤Bañß™Âu4ÃOH 5ã¾3 Ýé¿ÏG†û¾´2º‘އûÎcC¼pºïDáÒá½ÓïΙ–é½'d»Þ;¤Öuzï »ìdï(fozï •Àìdï(œ{žÎ;ùËAbÃy'JU>ç=¡.9gã¼Eꀧóž2LÞðÞ‰"•齓'.ë4¼÷ó­ûNsN÷ »¿Mï~éª ï=¡öšƒHÃ}gJKÆ}O¨q@Á¸ï)KZ”60|˜+›ïU^=¦Dé­2Ò7„RØ@€"Ü‹‹Â”$0>Á¥cWªj Oª+%ä±Yß.Ê‘K¶‰Å/" gVˆÆfÎd1%I_žkDñÊ8à…à”'<(+ÇlÃî$9}HSËÒ êé”C+ =QŠdNS*œ†&J†(;N”4D…ö‹ü”  –'‹‰âtZI2¦äÔ6É &¤ÔQ°oÂØk”ˆ’$ï˜abÏ2sŸ ÐÔá±RMFè%CR½‰Äx'ncÊ’2KI ~ˆUVÁ›Lðâ6&T‡ØÇ<%%OiU €ègâ-e:D™²:)A` S–OröI[(%'ñÓeJçséò«}%qÊS£…ßB^ >h&jE‰*Ú{¡ðæJ9•.L âîÙ&LJcˆTôç“ØÿÏò’—eŠîO›ÔNOco¹Ò.Eæ@²0H&‹)l’ˆâGD*¹ÑÊV]6ß ùAð2†ŒºÀžÇè2'&‰¢yiæi p^’)…¥ù:4N’¢A<©²ÜTOÏê3…–(\³ÍáWO<­ÛÝ:ôQÜCî(•©ñ#—âÔ˜š²1(ô¨’”F¤(†(Nm  _3Ò—¡éG‚™(Ã’Ž_Ʊ’[%ŠÍ¥¤‘-bEU>¤•¡|ø8y"‡/ OF"¤aŽ˜â4E7ô•£!©IÐØ‰k]ò™ g`<ûîa(9É WW«¤Š>q;| ±4P0IGú*¾3¦MW[ˆƒEx$7Éíòˆ{‘ˆFè‹Iå€F¿âb¬Ì,AáB‹™P…äiÙ~;ÿz‹ÈTc¡ÀIŠ\9Dg(ìú0G·¢‹²±¨’ŽNËR˜Â1º®:…)ð0‚¬0¥€%‰’f\,‹ì XÛ‰ $¦Já"n¢ +¼°.¥ô­RŰ ûÄa:QÿeÊ!á°UÃúiŒ°ªj/š@Ñ1ÅY@ûFѹQâ}QŒµ$œA -Ú*> DÓl4 †UO ‘r/ªhŠÌʱ1ãࣤZ¸bBuì ª!ú¢j"×pìQëI#Ž€×ŒòJ`²(ÉÏ’4 OFùÍûÊŽT’' ï+«'®4 Jùç’&TQ@”iPXè3Ò ãÔ,û'y9XèQíEü2þ+§]i ß nó1²ã§¬]+Ï´ºd²¯ÛZr¡•±SDm+)ˆÍ9ÝñzùÕSæÌ/FÏž,PLAÆd9ͱ|t´pLá¡–ÃnL²G&;K)¦IàµfÈ]ý,µ–Qƒ‚”s’¢P´%)AñÕeˆZ Q•Ënihɱ¦·$h_´98Á×A‹Cb&ŽKl „’9¬–3B±óª/-Âb`È~ι<Ћ Š&u¶ùL‰ú J]6„ÒVYÁñH× «!¤:)¯(z2ÏtMòÁÍÖ‘„¥! XŒpÀxPøÍ$ÇyCµóû¤Qà”Ô>UMGJBuC¢“ÔƒpwJ”33¹Ö±trЬÀ»š?íœEfv’f<7?fäØÏ(peDç$[8>Y«žcD( %À ’ñmœß(p¼êL#P ç¬jzš3¨ì¿e!D>æaT#©l?Žã‹Ú!ýË+áGŽ”"Ë0üYò˜«È˜×ÊO¢dæa˜æ"#Î\“W`ˆ´“ƒŽ àT ,qÒg¸Jš)AÔWäâÇ"ÅÇ~¥B\m¡Ö´tíïn¨Ûg¤!ó )áí3Þ!±ÂÚƒÖ , ÉC‰ílœ÷ kµ W¥Vá ¤R fZt $oÎÔi@ŠÔÄ¢ÓR:ñ©ÓŽG¤`¶@ ø"šÈ r!˜p + EÀ…k5A1éÂàH}J¯[«É^fÓÍW*¢«åp;³Z-„Ç=8å¯b•Ër6{[êwg ÷!òÁ™Êù@,$) \ƤDeJW”KzµŒ?º¬w¯„¬»w@érs¨fº««uÀAG¤èpˆ«$–xŒì«¼Ã9ÖäH¹Ø-íÖ¢(2lS¶·éëž}ãÓW!š}[ _ºo»™Œp?‹ý˜Ï6îSµÿ¹Ô ¬/|/„šgJÖ«Å7‹ÈBD1à’.ÏÕ3%Á±R…E—ä(0Cç‚Û(GÒS”ã‡lѽ²â½SÏ3œ@j  EîGƒI—lnæ{ä×Ä:÷6Æ'§’`Óå§\—6£ðLáBX¹O)I#ìzð™)±Ú 0(œ§“˨´Î?g=½—0tɃ–ÙW“Ô-íSÒµqR5,­˜n6žÎkãšÍå1 âðy¸é#]2N#¼-¼È9ö±™\$ìüX¬  b5Máø=vQ'J×ø¹ôŒ0(~iì+ár$Nʵ>æ³äÓF<=áº$®nqôGp×ìn”{¸êZ bŠ’YD L)8¤E=9K„*#§1Ô% ŸŠ˜Ã„›À¸ó(+,© 6IEƒÂÑ~?Ç;(Nq>S¼+î‡VMÃeDibS›[›8¬¸ˆ^Âd•³ez¢-áüBJ’sºNVŽªëò•,…»¹%棣|â A2jÉ+CDQ©°ÞM¢©±NšŽÄmX•›³D¹¶msÖ·’†È0%˜«U¶w˜r¦{]*ú^É$˜’ H$®ÁÉ& A”¨ù H$\`š H$ÔµóIäHðw]3‰„LŸÜÓˆ²”>ˆQ¢\û0" õ>|PkD$<à^–ˆD*|Äd H¤"Éß% ‘à$#$>LáxÉH0EÎ;i@‚)|&j$¸ežæHðh8M2 ÷¶pAïH¤¢—ŒÌ€DbO?,‰ÄÁ[#E^ÇÖg<‚—˜kŽF<‚·A=i<‚·!”Hø7WL@"!)É“HäûK߈H¤"åþKD"a1‰„(GL4"‘p*ʈD*(3‰„T«$d4 ‘8kâ#¶lʯ f89â ÑblçR…«|²¡?,6ÇNG<‚)£ÍxÄBñn§ Š\X3Ü;Xg$x„’Vš Ë –‘H8¡á‹ Iðêp†`±‚«Q䲓HÈ2nϘDB$mÆ$X$d“H¸o(E“`Æ@HsÆ$ˆÂÙ“`vêÁÄ$6ÕíλÎN(ÐNBZÉá^Ý ñˆâ¹ìøh׿>ý·W¯qwDÏþéß^½F²=“™úæíNö§?ƒL.gkáé<íP÷ôõ«×8fä]}ŠËÃÿøêub8<ýW˜!~¿y—9?ý ×JÌÕž~:9 QŸ!¾¦wßJÁ{ü9›±C¶Íèß)Ö¶jæ+ó·íJÛižž7s #½åÝ}ƒü^æJ8³Ç¥ ®„Uƒ?È4ȌۅùÍ“iÐv¤›ŠTâÓ—fÚ¯¥õœCúÍ+óò7«®–½úí›ÿ‰KQ™5b±7o‰¥¾7m«óŒõ®Õ•ùÓ¤Ý䵘Ój¿4­ë,¡°g÷—ZÎòn·ËtôÝò„Ýhó7æûzLø5H9{™÷~g˜µu’‚]‚á#™øþX¬¾{õ9RšÔjŒÊÕÔéL.Ë–ò ¿ÛíPªuõô„F[|úß 7jÌ+éÙô EÐwµ¸ß®… óq4»ÖûõÅ MªígÃÜ€x>o9$…óôéÅõæÇ|¸Çï^q™£OO¥æ‚#ä]WþLš®½Ü3É_ñæøJÍ¡Ú4,v,²¡M«ÁÙN,ë[É[¯¶ˆR“£’ôVz&_è.áÝË(xÚpý÷F^¾5ëBæìÓ¦ ]¨«/Í{VþtîäB•§wæo³ª*;Ü®/+MñÅhâX~ÞEi—Æ ä;´ŒŠ¹zaK0kïüœS^=°‘^^èÏåQ¦ÚÙ~k±¯,Óg"8ÁŠ8$ç'£þí|!æb½5=YkcuÉ72ÓØÛÐɯõþ9mÔ²•‘/W­ Ú}Â:ÿl4.]…µaúú˜u¿š“€•†_ìv8 DZë•fœ ¿—6<Á®g,=ÜJŸ1WöqË6„^YzÌ"Öõ,/,=?±w<‹Îu=‚Gæ[šóݬ·ü}€+¸ç½ùÎr[ø›82ñâãkdÃB ²×o3·Ù)Ü“˜b£Â ü-ì:m”î-Lk atê‰ÉÞ@±©›éó1 Ò—kVÃðâÚì[òƒ<á7#•ÉäZh¾iXÙ¶¼Ölvòi uN¦yŽéq¦ ¤rtÆ&¤³Ij'œdÕ÷™FÚp?ïYÞï$¾HQÕÓK~chVžkR”w“W®štø~KòÓ¢§ˆ-+W–*‰YÓ'«,•¡u6²Lת;-<.Z­£N+o0à ÛFEÚñ™·–øÀcs¶##d̯ÕÃLœ­Þé;4ýÚ=4›oçp;{ÏÒÒÉ Æ®¶m^i”øp6˜=ÓbÓÏpý"þ>f=˜ƒíÈ8ìŒ÷8<`áyœ ñƒç•\ȧpä9NÈŠ„Åå¬i²;µˆ¨lŠ+»oô‰÷j„eXˆè´XpRQ8ð?ø©ìc`ÜàTb¸À·x¢¦¶Æ·üZàtë~qÌîglmô¥Ý§_ŒÏÖæãòÄ”6Æô5>ðPãfŸøºª´q3e.)iîÚ £ø“$ú¯xFÄ °R!‹{Ú¡è'¸µVRCTÏPÊ×2ë›èëE±'^¾ÞsÍd^ÃPO0K.ÿmeHÈw;5A‰ßì­$ó®]¡ ºÁwšYÏ9$,iÝÊÕÆ½ÚÉ,Jdš { ˆÏ7ñWOõõ‡˳˜à>,iT$ÀØÓ_XÄ F2Âca².À]¡K4]B»À 8Êí‡&Š­ŸÆk~Ô‡·(ƒ÷á.·ÀÊðòj_dŠÉÊï­œé w¢T‹CØøhnÝÆ $HÃ×ñ Y8? 7…Í"ØÎa¶ù¦ð¼’¢{'Æ:ÿ$N¹Ö¶÷ßÕpŒ]cIÝGndÚkYZk®C¹¿£TÁ—íúà38%ž†*Œ¸Ù8æx³åÕ;ÁŽCyZÝzÈ}Ôv‰’pÃ_Y¥e‘ÄŸ¤E×vÞ ?¸§›_Œ¡ŸV¶äM‚;:—£pËëĹôº±­˜²÷ë1ZÎÒP,m÷*Ë…cË! Ú:0¨qñÊ]à#á®?ýݱÉpûz橼$ûx„X.+^V.M3":ìµ@l3Uåh?/ÏVnd Õé⇶.ø„f°«yæåh¤'óºá€ÁÛ5?Î?˜è8Žtó™íØBβå+!ˆœúTïÁ »ï‚¸x†q~¹¸uÐ`®yÖucàÌœœz]¯S#‚ ÷ÈÜûYba—ƒBP ¹Œ©þ¤KÊ_cÿu¦Ðdä¡âŒ|¾YËN¼_™ëØ¿]þV‡C“b)«—nþ^ö±l´Ñ:V?HöM›–´,‚¼(ê×6yѳhá…ˆ¡.®ºÆg~úYG/†¹!ä83îv™^…°^EkC·¾.Õ 'ã—65\kH>óY®xë2Œ ±5§hÇ´”øqÚlºèsZñ,‹qÞ?´Ë)¨ÁácZ†ÙWQý³Àu]öÈv ±Ž 47¿ñËBœº4œ´Âááµ ­Ú¡-æ÷zòûLN½\æ8óO5àÿ:çc~ÄÓ•LúšÉ.j¬tðÔÒoZéÅ{‚œ; ±MTߘY¾=‰–ï~3+ ^ʸ‹«fÚwfV‚Õ{3»“Æ?ɰcºL_óæ„s;+N .Š™òunsùN%²þ6l0¹Ü,óÌfZù°"÷nE8RǻԘmåĺ©÷"ó»k( —Ž-iG*nêÚÄ ùð9h™‘èæ'êUž™ŸØeã8o±NAâQ:ÃoVþù„'1WÜÊ›î2ŠŠÕr^µ÷a¿Û¬¿:fr›þ°b³©›Â‡ ª?XÊឥüED€Czâ¹xTÿDÆ£„j¬WbÝ‚wÊ|ä"ÿq¿9OOž_ÈFÔø jÅæw˨ÿƒ_KÄe .ª§˜ÿE±`Ù2×¹Olå*÷¹ú~…j¥Žj èE\Õ¹N·Ÿ!ñqGÊÈËSè=|+í>9àÖ‰R¶8+ „aÁ÷ë¹jÿD…S<ì—g >²åÛéòipÝ(ÒãPœb« lÀNb QD[¼Ï|œZ6"ÍgSR<Ù„¯…½€fŽ‚š-a¿wÒ2¼¡³`¶ÿ}9$‹üAM…Ýø¼¬Aº(äwÙý‚1d¢Õø‹<L¨“ƒÔv= p¯‰ÕYàAÝúËN¬Ì$¾=ž¶i|Ë>åÃŒò¢¼Ú-’ þÑ Q›8<©¢Z³«W3™´ça.“°2Ž¿3†%Y Ø‹1Ë)8³äÃ¥ÙÕmÆIâø¬b:—ƒ‡2 É*Vƒ¾ ºí²e‡göÇ,˜4—ÊA…Ÿ5s=m-(ž–0 ‘J™ÇýößJ8ïÜüyýê°;‚Ø7Ä“rz`œ wä•ì. n}ªeÃäÃÎaQþá×}uÐÀá‹—}NïE߈EˆÝa›#M ªøŒþ‡iM²<áQƒÃëH¼Pb—NÖÇpK½2z9Ûµ©âÍå̘Ùâ‹,pÜäRï Ö¥|+ÕŸÚÌMfœ»¹.»æ‹íú™Ÿ¶q¬åét€Ð¶ÚAw—{µôuf§qöômg¶O«Ã7È,g¸¢ßíŠw©éÊœ„/Ryw”ƒßÙ—BÃeg9®˜Û•œðÉolÕ nÖö+Tx\|ˆ²I|}9Ÿ%ß¹)Gã,ÀyVªðÓÅ=eéÖùQCŒrÐ{’`û:º ^*öÆöbçÐ!p6î3±°qß³$¡ªzŸ¶áPÜTWZñC¾ËlZ!kúíšlã¯rmÚÖ½ÞV÷nS§uØ,-?É¢@E[!:áûpþˆØ©n/ù,b¨á™î6Ü1²ÏZˆ‹ œ­îé¯ã½3Î8ôÛm‡ u=Ön“q8íä6²4έkëøjUVB}R“mìäÅ·ÒtÜ'~·îÙTËñáªþô›ßâ¿{øôœ“–g,ýG=LåêVKDþÄulVOiÝ1Ƶ«Îެ{v%`(‹àÓHþAOm]ÊýëßòÊáIë¨a1@—_{®>íc¼Ç‹`<3GXÙ1h?¶Gv±mùÅ8oWNÑ iEÅKamÉ.ÂäüňƒS+ûºSWvðwÀ}µ©ŸûúÛ“ŠøèÊ:Šd=ïÓã G{kUÚmiWÕΫ°i÷Ó›ôÏ4f½IDßåat›üßË*Ä÷'(fA·½uZA% @DØ!œqø¹•„»‚;tüyõÒ:ùæß¶2BFN¬ ¾{ŸMŠýdvk‰±nÓpûƒ\W0.ÍÜœ]]U³6 ƒý“<›ó.HVpÙÑu°Ž;é/^q‡éÌ)¾œUbgp÷ŽÎcÈðvFmx?ݧ}êtLàüÜåxn!îu«;å–Qž ó½³½KaÙA[ë|š4>͵=á©C7éüÈ_¨o§vÆV<…‘q;0]—¯ª/êWsÖÄ—Lg- å¦2]×±Ô͹-ƒÎÔKÝÎàHéi<øÌt}\~Æàë]1þgr~5´µZÓmÜ”Ó!uÑÎý–™xºŒ…s℺~¶Pï§‘…)ç€iÅâ’ñËÏ @ Fûù¢¥Üƒ…×h.†í9rNG®×öä@ÑyÖ¸¸©"dâ;;¡“Ú^ñ²sÉ'.×¾:ö$³¤Ks×…?¬&ɽÐ wäßu!ËIpð­¤´{¸ª#Ç/¯þ‘ãÔmq¶8ùŸÇ<æX6¥¤ z/ae¾8K•9ó|tÖûŽ5o¿l›l#pVÛTÎHZ F8¯îʈ|zs{ŒËŽ!1ßîÍx½eãΟŸ«ÆÇ.€ª.<3¶.W·ž˜ Ø}\ îÛYa³=xº_x!c€%b×}Âm@ùô~ µëêþÂ^{s>ôpÛ r>…>àh‰«Ûc™|ïaë00y]ótæh{ ?êºÖô' +ó̺;­[WÇ× {1·°ðkµžÐ ¦ÇÓÞù–£>•Ýû3ícÉîÌH»>ªã½* Å')QMø‹œÕ¤mÚl¯éñòôm{>r¯ëPñÞfr‡üŽiqea{©–´ºöŽ\¶·2> ~¦¸êÅ50ÓTĘ@ÞT„xVcE×ô™4¬÷pYåé. x/üó9K¯kÐݺ|Yb¦÷ƒ, ÁE”(,{³ä}¾=™À®NZgp_•˪ë΢¨*ogq}¸^ŽàO‚íÆœ¯„â*ζ;‹Ïä¾¾†qÇ HíˆÂÓ%^Ûî}säd¼hÆ÷¤åRO«8^xŠŸ¿.÷ÌáV^„—»ÅhzWíÆÄ\Ÿ u¾Ðùànȳ„ÂÙQÌ“$Á6 ‹)ÖÞ7HJÆzxñäÎöúæŒû )ÖÁ«ãBŠËW)Ɉq{læ:_>Bµ¯£Àm¶a S.ª'HÄ`…^ì1óçÁÛé‘…ƒÐÅÑäÑ{)Gu7¯ã½<ëݵ¸ ¹º­{=rl7•7<›6tœ³™§lv—áòŸ[;†/<¹Ý s|€'æð§ÎáÑW[÷ýP^‰®öý$ð3O×øÍMŸü†S>ôì^Yy¾''xruÜÚÊáÓë”ÚY1Óu½üæZÈ«\NÀÿ‰*™GÌg’qX_î¶­ðÅ'ûŽOâoNtŸ\úsrï™V¹ú2e$á*ƒËfÌéîû}âuNî'ÙIB‡»néï[ß©uífœùÀû*,™ÈLíŠ$žwG°ó“‹Ô]çjî¼,•%ñ߬sH ÔO•ŠDsùüжÅVÞv>˜»õ¶÷Á_{éƒQ÷é4Œôé*ù{¿µÒ~V%?O²^˜yó^\†¶)Vw[¯@¸¸E4…îO.ø8ÌäÙDá_ö;¹³ZçGå¾­ž..J˜˧ ׉nÏŒ~ò{¹¡zS¸Õp­ð!„sñÚ¤Ú§»§ðág\_×¶€uÑÏË‹'ýŸd¨¤¦9ŠQÇð‰j€~ìøö¬§íY ¤óë6‚rdfÏ„ú3Yβ6ç*Kø°Ç¼°Ø®ÄA±ñÏ b¾þêi{ÿ6§_ÞÃÉOäbMâ:n=_´^›yä½ô]Ú8dcÕ5?(‹±v·~Î9¸›§¥dóÿ£ÜÜuNºÉmFVO’Vñ¾ËcHã´Âþò|.äù1aÿÒr|†ûáÙßÇýlùTZ˜”ùC>.-wBU¹ç€Í¢›2Zë–. !¯u,GBx÷ð8s{è_` k%ú—™û8HËè ß¿ñ·¸ NÏ,×ç¶ ‘áK^ñôª²û«+ÙNnNX'|8ìý&|Þ6œ–œ}Ô¥Œg鎉-1çô ÜóÍWõâÛRq³—É+´Æœ„ZËùg)žqNΦ$¹éç]àQe–ƒí ó’á`­­tÜGlXKw€<ö8=&+º\ßrò) ™ß~¹[›Ûv|ŠÜÝUw¹tö¯Û™_ú¬Û½–¹ã+®ïûçÈá!‡½‹·1'¾ß ?SÝÿ¾ÇÑ®ÀAFà?…g¥ñŒ—™â½pÎöߤw–ÎI ôrà,þZö3§[—XËǨ¨_z{õ:ó·:O“Jg¡ú]-˜LïþSÔ ©{n9d×…»\˜ÐoÅŸõê,ÀÏ—·¬oÞvxuç[™{>Ð(3šz`}ÂÏmãJüÊ_âû1XŸ÷ñ3^”Ë€ºlf^Uqž èÒ¢ïWßÇdÕỈÿ{v{üÅ}lc5?æ»-»Ë®?kxŽSβcg7Êìbº(÷e°F |¸>tÎUòu}ZíÔ„ðù˜ø‹Ëm,øäcþT7¡£µx}i©ž8;¯Ããj 9j‹O»Æõ¥†g·^Øå„Êß¹¯ª.±œŠç•Õ€s9äå# ÛÉ• ñjø=¤Ñ³_ ¾;OŸæ¤Ñ4®ÎþëóöèØ O—Ãöã"/üÜØµ’üñŠ´¾í]20>q,aÆ‹ú Ï¦y­j;=puÏq“ãrF;¢Æ•b±œÃ}û$– å}Œž>ÎæõÎNÜGZé».Á‘É·ºÜÿA¾òÈÀ§ò+qÅ|^€õ¸ ¼‘– ·ðóûã긗ÝLªâ#3\ùõ%€æJˆC}þNJÒá-™¡¯µp»­ÐÔËoè@Ë•3’RÊ轞X¤Jár‡i3n-|æHpä³àÏ߃¶W½;ƒ¾‰eã«ÛÝ| i›'¬ùæB||è~Oºë~ig »âñ~óð+úÿÿ…(endstream endobj 121 0 obj 13869 endobj 125 0 obj <> stream xœÅ½[³eÉqöÞVø7œÇCsT÷‹Þ,[VXa‡MÎDèÁr‚¤¦ HA¿Þõå—Y«jíµö9§§ !ö¬<µëš·ÊÊË?½¸Wÿâð?ý÷Ç/ŸþÝ_Ô—_ÿþÓ?}ò>¶WŸ^rkþ5–—˜{zñ)õ—ßýê忼üæ“üðåw¿F[þ·þóã——ÿðÃè¨ç—üêãËû‰Ýûßêk®á¥¸ðšszùá˧Ïÿß/~ø¶¯½¢ux-Þùòò{-©–\^~øå§Ïq¶Ë¯ ; á5ÆÚÇïFk¤Õeo®×*½•‚~Ñ. ÝüáÓŸ«Ë/ÿªËù‹ÿôÉ÷–^SsLù5¦—/ Ä¥×Ò^|wþµ­éÕ¿ŽÕøÚûk?¾üäKo¯.-ŠÏ[ó›càiåÅ~^¼o¯½Ìì{4×)ÌsŠmý°ÞÿîÓ÷ŸþrìH}gúòWòù)¼üÃ'ßJz ¥ü²âkM/?üŽ:vxõp¯™ßã|чk˜€@<> ùµéoÜkB·:Ûäþ:ŽgW3À@¬£—×TɯYš„צø*ëî¯AnüzÆ~6¤Š_ˆÍ:E™Œ«K$Ž¡2úUÈX> ¥Y›PuzA·¸1oÝ©qˆMríÄqÂcš:?ì:óìœÎ8ËŽ~R»8u¿Ì/µ× ¤r‡kKHDmâ9½2ö¤ ¯NòêÚ‘s×P›Ó~ N ±q¡Á²B"pa@âkÀØ7vì± è°¸ÁXxvuœ¦L9 î2øËø”•ÈçÀrp‹ªhTGKé#ÄWÇCtuƒxr5$¢Ñ8 /ß àm^æ=ȱêlÇŸªÑ'‡¨›ð¶f'“Ì}NÔ&?<4p€4ø‰| dpŸ@HÁå>Ž¢)$£Ã1l,=áp¤!ðøÎ¯Uû@düæû±áÑ]ˆUmîclØS6ì&þËÁ–˜’Ë^x]ø×À~È8-ö[:С ôy NR…Ýé÷@µ±-ùhQZØz˜ßì× Ç>;ˆƒÄï˜Cè7°NB!Ç$¥ƒó*îX°ï×Á ¢h!²fÁy@*™lß2òàØÄ©Ý«ü$Ú—“O‡¡ än옿–Q^Eh1¤Ö&ùÕa½)2w]$+ô0x^ñ²*^ Tî€$1 ‘D‚íƒÔ0™P»lwEØ]¨Y Ò-Ä;c‚¨C)*„Àð1Ôà*ܧ6ø|È ÔH%» Ùè¦ 6n 5T uC!ƒÕ p~#Sº%BL”y9Ún¢L× ©Ø¢ BɵB¢Éâ±è RÓ~š ‹”°8…oÁž)º²vœ°|‘TÒá€x=¹6ÎR¦«Ißpáž"– ŽèŠFm †ô&×Ì ÈðäL ?„¥ H®0´‡6ŒÃ|½ã|ëÀ„`ÔÉÉ ]Ô5×jäëLr ÄÀO†ªc?)`åUU WiUK©CŒ(hr ˆQ|3\4!åÁž  âw(½¥‰€û(ëûí¡4 9ê-çÍcñ^xeèeÌìÌyÙéhçÆ‚_¾5Yêewl6º‹CäµCÞº'ÏõÝ»Øý;z;&çzú“Ϲ¿lÍÞÛ]| ¾ $ˆ`Y㄃°Ê Ê[ï/>RXxÅàò)(æ÷`Úa ^)G‹!÷…(­‡ùÍ1Æ/ ’7Èñeöº¨Ös ý¿°YX ›¥õpZÇ­dÈŽŒ)5Q—¾ìQ$°ÛBˆhAR¡3UðÉDשÂ/D^ ¤ˆž†¢ç!BFû¯ú#áß —€ 9ù§@H“i^¥N0-áüdS 29\ê¶=ÞÚŒå … Ñ©ýà>€±ú48†LxP™ æu=Aw$d0P{‚‹JƒMËY©¥禑 Z H…kBJçyõJc×È{8$†[B!— _¥MPæ“‚hpâT5Ä MP«“ë%Ïcˆ]O3AT ÀN3y^£Ñùy^šÈ8_ÑLŽ_Ó m‡ñ­ájG7˜E'€§ ôLÒKQf»êD\@šê =êºã¸cxj®±RþÇÖôìb‰3 IÂà]¤ºfì=B)± Vâs2L®Ê€X9•!«µˆ«ç½´Ä —Ö8±¶ª‰ì7Ä.”¿1uÇq’*Õ@a“*ÑQÓŠTÆ~ Jº¡c4IºèCQlÜhˆNY·$@‹ èDÀe²4q:NãU‹ q q´HUAÿˆ¸c½¼ZNÆ¿…S€J]$Àž!sSûÌ8H•Рш›Ø‰ úÿÊ:…´@ë*˜‡Üíu@” ̈`) " À)¤Çòqc ‡ÐUÁL,Äl… ^Q·ÅÆ^|©ŠÛd~ú­è ±À_·ô0¿9†b¸@pè/³‡àp«˜CðSpœs°¿Ûíçû"v$ßúúr  † ]x* IOŸ7 @ e?ãÈ CDkDN,¤ö‰:!€@~œ!I»Œ,%ÚØ´V„¶NÅëP8_VkE€a/ ÄQ; 0Фuë6šý¢NŠ3Gæ]i@äÉÄ7o„«€ª ’œ@²â#z‰rØÁh2ªdhåJíQ^^ü6uîxŒisï «šØŠ¡ÂÀ\Z9X¯ËIpAÙŸ¾Apûôca½ögå­úcûbßëuUî8ǯ‡VÔŒõêÇÂzçŸuföëmæ;VzaÖöôô…Ü0£Dšš·3ôT®ÝPZz36$aÍQqŸœÊAë/ÆÊß´údvÒMÍ¥x§s¸Ä§íG~éW~ãøå¸´nhêåÕâx¹‚H1öíe¼I¯+ËtE ¿º@y,ÊM¥¯<®ÉðmœLµjÎVÚɪ«>£[JÖG3[náÓPª &E“,ŠGg~‰3Íh«"A‡"1¦)öq`ãü3ÑÍ~l_ì{bcF§‹"ûPÑL°?ëÌì×ÛÌwl„¡?t¦$±&DHX ¡£·nšAl|öÊݘ[.= m l±/D)Ì0Tã]äo,Þ•=$MÜ“gY,ÅNØI?1Úñí,›Øô]{u6]"Ž@ÊD%ÙÁ"׃Ä鯢ah’mì†L>óŸw¡‰Ö —´Œÿϳ¨Aå@ôŒM­m›oyeŽ^ßËð’ Ê^Ä¥\<ºZ "d]j’u3.tDç@•6¾Âgm¯kþIÏ0Pàè™ÑԼ傭ž8Žƒ—¬ž8üIIÚUˆ¤›f"Ï“} $(`ñä9ˆO#I 3^ˆrBà%%D9npÈÊ‚¾rÞòw~ QŽÛb?ZÍYó›c,T ËL¯/³éû‚ŸB”œƒþݦh??-b¥É­¯L®£Ë΋øò.Éò£Óª0?1M±\8ˆþ¨pÏ}ѓދÊë¾@E¼á^WÇðFüˆ\¶_LåýÓÐ¥®[s.0Q)ûð•æe8ºBèD“hŠ؃` ©¨¯KžžÀx¦jFû0BÀf¥ã:e‰w¸ö“h.ñB2-VÁ>©{Õªü"dÚÏjXšx5>…f½ÒÄ™'c’g°"˜ž¶ÙgÓÇ0¹ òÎìs±c×=È4‹Ÿ1û§ ÙÃÈ.»Äûv‘].ÆM²è÷!»¬Ñ€u0¿9ÄB%®…UvÁ¥z¡—“ìš-lŽÚÁiÈ ª{6å–øMµ –×é5ÝÕáC¥xDüªóݤ̔†Y@Œ'Óþèº3<¢ó®ø‚…¨9´‰ƒCubz™Ìr!† Ê«WX)K,í ¬ ûk=ðÞ¾'eÍJ7³ƒù&)¤Ó›Ô´P笅ÍQ;8­b—@±Ñ6FIÿ…Q)Àíˆr<ÙÞ _e=›˜ø©çKOûi“Ïv½yÖÉÓ ×QêÎ5$›.*\qÒ":œš-ûBT²VЧ5¾³oä7¹*+¨ÕÕf¨<oéäIò‚ñ“-t5+ö‰Ä´i®¿µñ]ÂGR&ïüÌWãb¤^¬cp»(›qqB¦ulþê þpa³²Æº½X㎳˜1'ßWsãÇ.ÖK¼ŸÚゞ¿Yß9«Ã:f's r(˜ö«g›ôae;õæYÆE;«¯2.^,ñvj zn\üf}à¬똞Ìb\œi›¿zÑI/V¶ÓXoÕb\Ô³ú:ãâÅï§ö¸ §ÆÅoÖ÷Gèê°ŽÆÅ ™Ö±ù«'C°ÃÊvëMº:Œ‹FW_e\¼XâýÔôÔ¸øÍú~ÇYDdn 7 žg“WÄîñ«'–üθÏcÝU¨¹íòjÌ |µ¼ºZâýÔôL^}»¾?rV“áΓ™ÌtB&ÿz±IOÆ}ëͳšòjžÕ×È««%ÞNíqAOåÕ·ëûgu0\;™ƒ™c¸Ç¯ž@tÒã>õÖYòÊÎê«äÕÕï§ö¸ gòêÛõýºš wRÑd¦Äîñ«'C°É¸Ïc½IWS^MºúyuµÄû©=.虼úv}f„›‹GVÀ9²Í/ÓÿQÞ#דõÕÎ)æW_ ðr@zÝOÄ;‘ê¸á~"kU+³kj_ÊUJÝD³š4´ëOdŸá8ï²ÏÝÉäö«“ƒÒžìó ûÙ¤=ͨ!³ú9¸O=È^ÒN¸Iööyýl`3Óßï3ß œÅ5Í¡Óô–ˆˆ£Ö|¿3 {Õ áÅEúV†1 €ÓL=Å“!㟬¦±Ü-}•þªàh_«öžÄ> fNÏ-hÇf}ÍUÞÍÄ–ªTÍSÓì¤Jñb¯ç Þ¸ÙEA­}u¯HÙ§aÔ+Ä,ú <ÎjãTê Ó &ògs35z«…sp>~)>¦ªæ×âbô­^‘97m…6R¿éáj)”,‡–ê$Ä.{2º*+ùHxݱ-ü@,¸1Njj¯ï³,-fQÌ_Έ;©ÿ¨/jlž‰þäƒ1¹œi'um2 L×L[íËNá…cWZ¯6»"²c@’®ºHʈð“!È#I–Ä͘†tÓ&OF>Œ%“e!+2o´þÈ5НmãÅg·râC[¸†}.Ê‚5…À~ÍömÊ‚< -ÊBmáö¹( Ö@gf¿ßg¾q¥«DO¨ ¢Ö®t$ñFÐnˆFЇªdºÐ=ÙùÄDª[ F^U|FäåzJnË„¡ÈV4)ˆïQ|¼ö"¾I>-:!njÔ`äs¬Êp–ÙÌd2Ý¢Oõ:›ÊËãeÞvAÞc ÐÕ‚ü@~ЦÖSÕA eSª (Ïô¤Íäá[°QšS?T{·ÍÍkàQ3¶ÒÄÁ&Ê#Z|ÕÈÝþ–Kµ‘ãëñpo,ZÂÉBVÛk“Íšfݤ6›p ”f/œJòFƒÍó^;XžGÕÿ8• ‹€É'«&$Š‘9 ÎvŠ^>˜» âóÚFËFo´ðV´Òr¨aSü5µÌ$~.´l H¯úk~°o£ex„­Š¿Í[Ïú¹Ð²5ЙÙï÷™ï@¤‡ˆd*ý€0ü^³² D¼·’{‰ ·ý K%;~ºçQT—@+ˆ“E Þ1($M‡»¤Á V3GB´×9t ³`ÆqŒŒÙúqE½ 5 ¹[(ÚÏ÷í)Ju’ A…^1Sl/â—6\=<Ù€ˆâè̛Ȉ65·J™I §ƒ_[˜¬Žîaj(tl$oœÍ’G‰NL?v¯ª$ _ÝãTH"#ͼÈxu†3‡9¨ã’ª»¯e !ìÉØRªLéÔ½éKz}€{œÝ%ÁBhÅ6ᧉHA¼)‘U¿ðS A™‡æŒƒÛ(uÏÔ0¡&[Ý9’4Ù•9© >\’Òc©WŠŽ¢ùNbbzšɺ{È’"‰kŠi©ÓÕ*”¨ìáêâ’V4D/&º „¸‡L1"‚,k–@’¶Q{‰A!ÓA;2J|9 âgØ^2rÈ.•Âouqòýã§! y·C?—í}´åg’•ÎÆ"N=³kýÍmpk1§«=œ¦O^󾬥iMÙ5!5¬O²å=Ío7§™ì¶ÝôEþ ‚8jËnê÷²›ÖBvÌ~Îön» uÄ/»’„fÅïe7­Å8Çùð{ÙDk1'§=œ¦ÿµ›8îŽCõùØ&9ˆËfδ!@Æm÷eð^ïÏ9Îä2ŒThãß>ÄÍè¬×qË8gÒ´ÎFW®„üòÒÇ õ÷¾»V[?uçÏü:°zH¥ú´»cvCùϧ„nÖÝØî4„ðÖê½½ùÜ$¯$4dã+AR^*¤ŒC{À@ƒîŠ“›°‡bU¿Dò›!¾òÑ=õ`ß:ò¸)ÙÒðiˆ EþdC¿‘CTga-l–ÖÃi·yÜï­HÏjË> β’ `ž[Kך¥Äs‚LaªÈ{¤—м±Ô2Dݵ†h`¼}'- „¦ßFç5дYk‹¤ÉhGŠÚ"ðÖh½ß4¤¶j‰*Kîø´4X%3Ÿ²kê(ˆNÀ2#•ÌØx$Ïd’Û$6ºÒÔ5Ì’$˜ÌÝRb• AK–ˆªDQ¢K‹z;7Â"Eg?â¼ å%óä/?/ÍK6£ÂD“¥yÛ$˜2þÂS™×àRͤãqëÃükWg^/š2Ú˜½ÆgØ=ˆÖqCM©µ[z „Ø›(6 Yè¥ZF!ø™â[ø`w `ê<4jé6j”m)˜»&bjT@²¶§@ØÄ3Wê ‹ýòI.fœÊ’ï{hjÁå7šýèèÖ‰#bA¾Î¢Y™B©K”è^$ ¯fkbr—ZÔò(d› _$1ZdËq‹”aM íXr®ÆënuEÑéµ€uÕYj«XIH­Éó$MÒ`&–²ŽvãAÕ–‘*ŠM¸ ¡qT€ØÀs´ †–á«TÛMèÌ0_@‡ÔV Éþ¢O@úš¥,òRÆ®2+XàU¢ädùÐmo%«ïª¤6Ãn–d‰[qëÅ|S¶Ìf^^D R¤êH4ÏÈLèÅo¾$gY½<Ê”hÔò¬•¨‰\-Ý_‰ÆRI½ùD2á—ÌýoÖ»%‚³´Ò¶y1 aÜF7|…xiç!8²»ît‚š›­5Kj ‹…°]KJƒ0¯éˆp9oŒSˆF«F®y”HÊ_wˆ=(ȯ‚ˆGK䙢`°ZËÙà¼%W~ÚƒT dœaž&?˜ëÜv±ü ·m3Uœ_™m¤Ãw©Ì!¸ 9RÚ{$÷QE7v‡˜"©éÙKeÚ%dÖciŽŒ‡ù["a—h”¢¡)5w˅דrŒlãÐS|@‚J6Ë®YS7ŽÆW¾)–!ÔÓÈRSšLDÂj² ‰‘E`<Ê¿48©Fͺ— ßÕÔ…*â%Zº·Ä§N@Œuer.MfzæeßC&ÊáèC"‘©!è6Ò P‘Џ‚Ò‚“ ë‚ezÅEO°ÅO%'LTGm.è"¼Ÿ}R¥€Ù§À›jæŠôÔ®™V ”Û$u‹DS]s–àÊ…”Ò|9Sÿ¨Ý²}‚oÉîtÍöYrg“VMs(‘MšÑô)“µY›Ê$S€ƒñöE‚5SöZþ¿¢f™š-ÙjéŒCRéwÉŽ-Ã|ÜUk€’ ²D$¨V£À3S£Ô@௘ü³HÉ$ºgˆÕîªÚ¾0"ɺŠzÞYM!H¢™±î¤¿§eS”oª50UvÂkTÜJ±´à¦ÓRL“«„,ÒD3zÑĸK¥ËGIšu²2¿ H -À Áà&ÚE‰–*ö€$K .·h ˆõÓY’sù sÿøÙ´p„}UZè-•`Âc ¶Û2z@¼<(&hèÈÇ’±ÿCePs¿üûLâ!Ø,É{8¾9ÆøÅ„tA÷Ù’ÏŽ#cè÷Ÿæ,¬Åœ%{8¯ãîš“ŸéÅŽ:2 è@ áˆ6OŽïö2´ŸHÐÌo^  GDíƒ ´èú5Ô{Õvü©$“¢†›'„׉5Úð%¸Âä²D'q|Y|M“Ä7Ò`-Ø—àÕÂÈìJÌH.WÚ`»æêIÈWåÕ@ÚIjnÉÚ¨r€„½œ^dì*êèNj˜Ó< úŠYºÍÏë‹#¯oÉ4jËõMAmĉ219ÇŒl¡DÝaz} j“¬¦æB¦·B-õ „ V'dÈI¦z„ÆðÞ“öcæèÞ™.‘q4£ŠÄ­ÖÛ ì8Û[:|9$‘M¶HK´É”³…Qö‚÷ܤl;ÂO¢Ñ¶Égäu’>΀'­ “¾5ÁÛ€%˜ 2Jš¼Æwc]#oòÌÙFCJ 4‡rµ?Þ|»ï§7_xȼ·yqKBWW@Ð šÍ0œP4|áhb=м„|%…õ€^ÎêÞ€_ƒ¾aM”qÞêÈÌd¨ò*·p PíäQ.èÖ äà)Šw’©US^'TÞ‘,àÑü ŠšíÈ4‘ý-„ö}1\e2 ½Ú$8G‘Ç8#.§iË-ùDBIŸ¬ÏÖ&ýôÞè ÙíÓËLœy4±'.Tå‹s$Öð¯É&Ã7¥9fOð“F:óŽT›¾×z5ë2Š­ø<÷%|æÐÇ{QÑ_ñ V`GÒ”ÏUØEÖ—ŸJuµÑ<¿ np’i"×Ɉ´`BN¶ˆ Vµd@4•@JºyÕ¡$fuB„íÄyrAŸ¦B6ÎÚô—ГÓûäÌs Ce% Xbƒ$4*Óßçæ„µYW¾¹pTIss¤¢PwÚ¯g5«ñ![,¹Z^¸ml‡óC‚C ¸¨¶hÜÖkÁ‘ Éw¿¼¶¥ I“!$íúq’˜fÜ<¶ŠÜõMüØ7†Ì:QÄVó,²ƒã›C@_0òŒì x/lf 8ý†ºÀ9ÌsŽì༊[uÁ[2 -;·4«ª@êË,;'ßrHVvn@$Ÿ†•“oñP±²sÉkš‹Yv.y­²0ËÎ%o±èê7œ<9²sÉ{uè´²sÉKå°£ì\òÉoeç€+êÁ³ì\‚®LØÊÎ ˆcFó²MhÍÜ]X•—Yv.¡±¤BвsÉÑ{dHðÑõe‡ðB¹B=”ˆÓd¢ˆYvNÔ"öSŒFϬ VvNX„ø$kÙ¹Ií³ìœP.3 LUOsòϲs¢áÀÃ;NÌj³ðÜPCXAiž¨ŽÁÍ­·`…ç"HÅÁÛ ÏE¸‹J¶T-<Aª¤ñdCCu™eç"âãûZv. 4¬eç„jáºiüسU¦s¦.dO/F³é‹ ÔÖ²s¦ͲsQr]¾eçö²s'uÁkòøýWÑ<Ãú ¢´ËŒ H±ð¯Ä#æ<UIFMU Ù1I|ÁT«µ`‰w“«w)œJç)7Mê缡X›ñŒ!HÈðÖp¹^TM‡b UØCWoÝ–wD()/‘É%­èØœ*j웾ÿ :þ'£†ôr¤ š5›H3é(Yt5`ŠsY‚6¡=¢6¥£E ˜zÑÔñÿ€TrŠ¢i@,U°¿HFV7­7­2õf«)SYãýä`vŽy±Á¾t$½±€}Í+ Î#û¥…_¢ ûœìhÅ 0¯Á8¡/²ZXIHsI‚¦Ðܼƒ±Ôd2Å+˜£7m3hH”3=ʃ8»é]QÉ{2=0jÒ>u3Z‡'q ¾H¶LƒJÇC¹ò>¦¯gwe³90n Ö11óðdOÍ~ÊTès¡w™ú{¦/¾%9+#ïJ@‰¢¦Ò™éË€d->âÔàaœÔP t¦ÓW[õÄG­gàÕÄvê6¢L¤âá<ö…øê¨Ú‹>Líbú“½ˆ(ûf}¿ç¨Àîº:ÛQu ÖW¯€$X̰Ÿ9vÓB‘Õ˜¯$ËêÊøÏü}L®Žé«j/Vw1µ‡å<Ìõ┾U×ï:¤¦ G²ÄXÉÏøA–A@M£Î” šW1Ñ´>Å#ÄÚ– [˜“þ4ÖýIi­ Çêk²þúÕùJ¯–x1µÇ=Lö꨾Ußï;+¯ÙŸŸåd,-sãô¥ü;à~!ÊŸi`´0çã„—±îÎÊC;¤²Œª¢f÷)ùkÎêa‰S{\ÐÃd/Ïêõý>ŸP˜«6/2ØÆÆTZÆÆì^dâü—©±¿ßÉwø²Þäï(ìtö¦ºî PA ̸W½½6 œ6À„AX6rÈ,Bçò a-k¿,í¹A’ýÈŽtt#u/À:5Î ƦÁd¶X¦@S{}˜½8y‡1 yÕªÎlÇAê3 /Îæß€ÕdB[¤iLi€ƒ>Ї¿á%§Êó&!Iž+.æz3eÅ+dS LLÇÕåf? °âjX ˆÚ%}à 0€ŽÄº6U }ü0>ŽýÅ=•ŠË7Xîý$,Ü£@Ôúœ¼ÁWGŠ€“É€%Êw¤¥–4ª´Z± WÚJ€˜gºYLƒÓ²@®}aíÔ®6€G8ÊÂûQ|ð‡~BçP ZnÈã•*[ÏÅÚ4Úµa'ÓJö-r$³}zÌBf“¬X*¡9w3#@ìŒOËj:>‘¹ u#ýqð0)s‰塜ÀbÐÍÌà1s¼iH6G…0û1ª¹èÈ…“=d[Sa@PæP$ù]°ªéÈ‚ZÔ=¶DÎ$D»"™z.Òƒòû€TÃ"ÈW›± ynÅÎßyʲfäH”_ñõQÎJÕä ñBôÍ€MDxú,õ »gÃlJµO°&¼Wm Þ?C™¯ "ÿ²â‘àD† R1ïŠR?:EšŠ·Þœ¶&!Ù±°Ÿh .Ù@"’œn p –ÞVˆBo}Ý8ÙêÞ ÿ@Ú÷¬{"^9ÝuûY3LÄAÄ1n?°Ú‰@J&TÔ:¬¢À“ YxÔ‚YŽ…«· f¡á*£*3ë¾@¬‚¸°g+¢'9\ù¨*ÙE4“Š *N!Òau³º˜Žð˜ÖtªdŒ ©c¦‰–^Xd³évñó¨°ˆÁ:·N:WŽ(6fÉN€xÛVÌȸ¨#Ó,ÊcðBôÔEy±¡ ÈAzqÚmÐEø)Z®¼*‚¼ óf-+@j!„|øÁíDµið€@d»«Ú¬Ò!•0VùVEƒµn+B®U£iò.,ZOÔ6…ØPõ3D¾mUo¯Ó¢ âû×YöD]„¯Õ]Eê&¼qv}éçDfÁ¥¨%ˆHô Š/r†¸¶ˆÌbu:Á»ê´Ñ\–5¥óÝxƒDÛÍ ñK?„8[Ñ!†¬5­LïA¸`Âe”¯v_&@"sâK’¼+cýý'Ø…Ê ß?òå»ä ‰Q±ÖÃüÖ!à< „ÒŒ¾gÝÉ3øC¿Ç6 k¡“´öEܺ€š|›I_v2’º¹·¤B‡¼õÚâ_Ÿþõ¬uÅMˆŸ~Ó¥B $TáKGb]l1E$mãÕÅÞÞºp%ÇP•%Æ·|©º9>™J«•bgôý »´l/Û‰™´¦ûýÐWî÷]!´Û·¤7»„›u—Ø'½¥ÄZ?¥Yœq *ÑvJj‹ÏµþH‚áχ$”*—ø§±å …ɱ µÛFA:âøéél«2Tî$Bxj¸Fwlâšb®Œ(êÖkf‚6ÄqQ¸;œôå+V vÒ¤ Ù:Ã~d³ás†¹Zduâ[í²Äpêç#/BNÄo>Ûs ˜œ tbX! Ø„NRÏiäý“*ù ¼kJR'€MDmÂê 5+kKк“Æ pkÓ«Hdßã•€ŒÎIAJîJÏ~_âÝž´®PÂ(†.1оSÄÞ&&99<Ìdé&¨ÿt‚‰F¦ç^ƒ¼Ú8£³_yú Ë9ß%½u{+öÝUºFÎ%ÏgîWyõÛaÅÙ‰ÖkñtCçr|6Çôh~¬€Ÿ}uãI™‘P%Y^îôkÝD–ÊÔá€!AˆjÒ©ˆŒÇt"¶—èÔd¾ PÅý=©8˜îNѨŽItU‚[zQ¯#ú²•h^Àæ™çt?=“ =Уú!ÑÏ‘]Ý-ø|ˆ›œj ‡³’¸3৆a}’þž!lJ_VH±9K>>ø¹{90v´Í&¾Lk¯@2C:š³Sà»ü8ìj3Œ”RÕ3ÀK*ý¸å“!ŽÍ*ä˜$ÉªÛ $Ü4KÚ<É–ö¶¢ù‹Å@1b¹Çd$5qú¡Efùhaz™Ùм¹xZ J³Äb jª°o77=Å%Â4y)Kl¸[CžÊ†ßµfê"®)34¡ÊW×'â.=6„_’µ£lV&¿Qß›ªQ/z’<Ÿ %žI)­±–:‚Qt¤N·àU–È j‰æÕƒk±°¿h.:°Ý sŽn2ñjA|WP³ %ʵ,N5ðž˜àj{Ib„í/ ¬Ð¢_åVF–Å/Ÿ.9Ø÷ò—µ¡”8V¾kÎ\þIK RJRšn4SÜ0ELs檛˜¿Gb•TµñdAÍ™óGòUÇVÏù„Ø0Æ#;ÓQV• FQñL¢ È!u&…!hþ(9F/µlj“*@3]fR|¨êÍ }†’Ý¢2’æ­ÕM …‚«m 9 D7»a’µCž¦J¿a I$5•—)Z¿ÌÄ(HE†‡`aQdC·‘:ö!‘²S‰ïM;Ì.3šÊiˆá€4òèN›PB~Ÿ6ãžÆ'w¼4Ó^²g0nUçȬé $0ŸÞbfmÂML˜<à  ÆV²:0 áU‰Q ±Ûu‰qJ¸»…tD¶  PpDûîe•9Ð " OHþnÄ\ŽÁú¼¡Øh€ê˜›xÎßîÎ'ÁÓ¥â !z§ªá‘ñuGK²óP[@(Bj„PÓ¤ØÍå QØ‘™!Eú—îÔ”‘PѲ†%ÐWôD&FÐO§!¼Ù´UÚäÒÁM„H»î¦jÉÐÉVuj^åÔ¼`@±Ôû….XÊøI6k¡¡ÂeªÒžéÀfLï±ÚHa²„:ûaÀ`c԰Η«-$ÓÍiI– KqmAšS[nÏ Í°àŒ¼"Ó .ìɶ·vZÕäêÊ‹¢X  Ì3â±Î ߉-µ¹‰‘<£šZˆš©" ¦TDR7ò«¨˜™0 æ3Õ¼pˆÎ¨¦\Eº^EHxÈø¡ú¼E•o“ÓVsµ{%Ž€áqÉñ¬ª¹¼&jât¯C¿pê¨î®‰–~ƒé‹1SŸ÷æE-ZÕ{»èÇ%¸`8\¥`i¦C`êЈæ]ç"3£¢‘'DûÍŒ+*¹ÙçzR‰% AYâú$‘ Ån˦gûd\vûC°¥Î†Ö>QCƒn0³:HV…Dj¼ÞâÒ£´ñóÀ;ççš”ØÅ Ùéªåª8|1*ÇwÎoC¹·åö‰‘UX祤OˆŒ„%Ɔڬ5k‚q¥¨mUƒïìê/I²•d&C‹¤Ím~ÿHRƒ;…µ@!BFH²‡ùÍ1~ü4!H­âËì!UAÈ9†~_Ø,¬…ÍÒz8­ãÖøƒ|~è¦dî;jn˜, ¼M!“1øfåƒAdþÅ«XÍÌ„SŠÀÄÈXØwÉ:gu† ''FpAãI ݼÀnœôWL‹sLÔ6BBP®(ľ €9æÂL œ…1Æš0Œ&cmHÚ‚Û”¿:u…€¦‰LÈÈ"ëveê5Ós¦qÐ#¥Än¦ÔYž¹«KDJ|è+0øÕ©x;-˜L³“Fæ:ˆ£gi­¦ªÅ iT™,<©X™] eRĹFÓ5^¯›ê’€¨ÖšåYx0Ióú£Ä2£+$‹“ðŒ/\ºqü j*ÓÐâjáyIë(ÊþDã™lLi¶è@8ÒOtµžeT,4È®ѼdŽaÍYãr%Œ´0uÉ`d3“Ý›±Ñ²jšýâXð›&bNÚ·¾re‘£m•+ gÕFRSfrˆ9 ŸÖ`i“„VŠ[ħ„\;3±©Ì9DM#›Ù>E–f*O1Ã5 +W€–ŒëqªqLƒWžŠ…úb+çô‰<-¼Z’Å4BüÔN¤Vs«Æüùœ)¤¶ ,J¸J–ìÊ_vˆ zÀ¿ª¯"hœ¦ÐƓӔT?Rö“ÛK 9L¼*°ôÕHmCÛÊR€g®ZãèU.j Üúf ÜðNfp\ß–© ÿðSØkæŒäª-o,ÉYø”äÞ] PTBc›J˜†ƒGÅ0Ü¢«²—b³5ÑbÑ^úSdÖ±X,ô&eEœ%0&µH›XݵE—Ý4_mÖl<¨I+C@!me‹Žš;5f»rGV[/1Sä4%GÌÐÅ«LŠ{gÂþþ¸7Ju2±šR p“±‡Äc(ój)Èx°zÊ…Ñœäóv‰V»]òE)¹°ßØà§WC¥VAID% ì¢y˜{P¡•·f“Iò¢®¥¢)1Qol¦ÁB$ËŽÖª·Ô,’S ª ÀÂ%»d–³Ì7q¾˜;)9‹û|?ÔB6 kU]ЍÚP ÕBÇ×PÐyPK a¦iÅjkóÍÑr·i£«¬±Û<{­G€ wº(–\ûÖWS­~ë<µZ˜à¼4[‚ðIø¬DãÚóDsÒk§]¹Mj’‚M‘IÛUr&ª½’¹FYƒ”‰uÀ Žn™UÂ"çÐî°gê=˹¹š¡ã´EÎ,¶‡ú"¾%„îævŠvÕ&>kIˆZç˶&€¨jK¬@"¹&Üv¸¡úyÜIS¿ô‰4D‰P¦»ÐÎÊ4rïÐõ6ëa}Ä\û#LgKpÀÌ|?ƒ"\á—à€èòÞƒ~Žû¢®ýÖƒ¹þÛGp€Í sÞÚÃyw·Ùˆ×ï-0`ƒ0ÊZ^È×Àl±Òõ Èa[Àïf²%0 ÊSüa6Û"Ìf[`@³Ù«ø¹Q2€®Qð—À€ˆ¨-0 "ËÞñ°D¸Žl6³-0 J½50 J>¼50 âyi ˆxZ†š·À€qÛª{`@D>´-0 jG`@,µìQÒë ÎÖÀ€(éÌÖÀ€Ëþ0 n Rk`€ÔØ´XÖ [`€Á`e¯ŽÀ){µHy”-0Àª^ÞùZä[`€•Æ9øµ:Ĉ{`€”YÚ¤:„ßq Ok`€…Ú¤&à Å"¶À©±ÄLÉpHyˆ50@ŠA¬ã–ÔöÀ©Ø°DHŒ-0 &–‰˜Q.£k`ÀÐ{Ëî$V°D¼nêÅ÷è ˆÐÖÀ€éwrÄHgÜ#0 F™è£¸ÑÎÀ€ˆ[Øcv[`@„&¿DÜJ·À€Õ Å"^|ÖÀ€é/zÄèûñرDˆó-0 F¦­8bÔWìóG9K`@^"xô޽D°í-0 B'Ø"®[`À€ä=0@ k`€¶À€p °RàG`À± E¢Æ -0 Âð³d ³Ú²D)–³D¹©ÍÀùÜ"ÌI[`€@¶ÀÁ‰%0@¾×ÀCš#0àhbÙd 50@f·Ø -0`nœD\M×À€ýt ˆ°ðlQoâ'¦¸ÄȰ> ˆ°y¬1j„á Þ"l3[`@„Õw ˆbüY"ì[`@ŒäŽG`€050 Âv±Ä$ÒhašÞï1Q ÎÀ€˜hY<"r鮩q·À€˜hb›1Ñ“yÄDkÙ g`@ÄÕð ˆ0ù­¼·Àl þ{h'q È 50 ÂÝn ˆâý°ˆÖ³ Hß"r˜o¢‹eòFŠ /?#Eªš¯¤r]+T=´”7 Q5´YNÊiWÔpÓÒØ•ʉ½ÊMDt‘’–ÊuAôˆ:¯"r[ ©[/Ô‹ƒ•ÌEo©ÑTM­ëYá­h5ó„O×à½AªÞvºzºFoodsŽ{j¦Mi¹§f^æEQ8ÊZJ?%Ù•¦ár˜Û,s©Q×9Z¹r>ï[Õ¡iWX4 ­œ\}šõ¾{Q]bA×U.¢ÒM4 ƒ/tmoPàJº™U\‹Ó»·å •ŠÒßT'ézÕ&¢W/éêP8™©µÀDzqVawk™ÍT[à#'¬µg+óÄ E”2¼Œ‰ÛžË•ÝͦH/Þ¨*Øß#/y–“¤›@EºD¯?bœ'îdº3Qã½] ý*2¥ùÙFÜáºÉp+­Ù›•Ô±JŸ…åu>¥[7òr_Â’ Š?“Âé\%h´}Ìv&ø)ì׊ozÞit NðÓ”!•Y'OV$L4;ú¨Nƒe¢‡ ì¬l³¢åÐ~œVèVCQm"¥u¯%p{§£]ëF· /gQ) .¥šª…YÝMáá®<¤³®ê]­ðbj z˜ìÕI}«¾ßuTLt({*ˉÅ&’yŽMHuö k¿zi,¬lIÛzëͳšéÞccLèÑׇÎêq‰÷S{\Ð1Ù«³úV}¿ç¬£è3¬é-È`Õ3_¹Ù€å)SrË»ho¤^†mXÒåÀó•2>JûHoTîÑ|ôáÑÒ¿ì¤.x1µ‡å<Ìõâ ¾U×ïQËEÌ5–î)ËgÍ­„;3Ó‰fÍÈV†!|©áLY¯ÕJ}5-Æ|étNH4¾h½ZV Q™Ú¹fõ„Eçòjum“æšeD­Pý,&èá<ÚœTË|Òjh¡XòÔÄ4ÕR0 ^ìæqaµ«Cò/Z¸£F}(²ÂÕÈÒÌ¢¼ˆZ“¨=߬dvÔ¢¨ÞÊË'MøÌ™ÓK4œ£¬v|Ò:Þœ)<pŠˆ u²ôIS<©ðÐ;ÖìÍÁB.rZUC»|bá´â #ð<C¤"G‰ÖMfx«pÝ…‘—‡Å‚PGLŸXû¨àUU—Y™âسpž@"G²g@ŸX0®ø¨%n}bÎÏ‚WUf§EzIøåûhE¥“æèK \§NO}ŠâmêZ®+hPˆÏ,ŸU¼§æqûúãUJg±ó[>0å¸ÔÜóÈ$ÉR]°í3ýÔD=È=’3}bá ÑØR‰ÐŠh]ÔÊ[Í }gñª:jìyyxo|™ÑŽy‚…¼ªB²Ö¼RÇ.Ÿ%5§Òâ=Á`‹Ùïc7Ý †ñHêÜà‘ö/îºßªëwñ½®U<é³Q–âh(ª«åÚ…7aIrü¦“á´t \éå(ù{ç)×Ëô]³)ÂYÊê8!ϼ>š.ök¨ý‚LQü pþÂböm:~—]31Ô´zÌÀÚ Üô&iæê ÌP1 Y?ø|ôÓÃ0ÏIÝ¥¤~)4VùLE_¢M!D½!‡éžÓŠa¸hhVvØ0\* °Iת¾9M gD.j¬SþG{ÅLOŸ]xåð7´ -H5-ÜQmR ¯ZF;K…«ªêS–¦3ÓÅTR¯´UyM‘²Ò|ˆÂpžYfÚ${gáú±VÁ%»ˆ ï-H骀Ä{€3 ³VÀžYU:ëýyo9Íô탕²Gò0c)˜Æ ^F(ËUAMß’ÁGÆY»¬· ;SËqƒ Fº÷Ìøæ“å_…^´þd9Zqq3W¶$Ѹ8ʯòÌH¨áùbÜ#±òg;«N—‘Ú.¯ šÔçf)Ê„»bR¼·Ûryð{"™.E88K@“’ò ?¶33¨‹«”ÌÂîÂLÕN…Rö±_(ýƒeÙ±pü?^FïŠ<ñ™?Rõ•ùÿÛôüý'ÿ‚ÿýî×TåJ.…ݾ4ÿ|mLÃ#v;·YªÑ ƒ6Ï­ £RÄQ¨Üt%…ˆä–[DnÜtåÕ¥>1=RjuT–äêÆ¹Ú€T”í¾aµÖ:¢¯ê|¥‰á_‡@ò½1\ç¼’&¥Žl<5²®‚¦ÝyÞ•—ÑžväY7ãŽÍ5O»ÊïxsN¹õ~Ó‘àöƧ¼Xóü×PAâ®KfáüqðS£iî‡öq‡T’8+¸Eª\ñ ?E±toâ'bœúíàchûƒÄ—’Ü™ ª×¿ÅÿƂדªwó½ðz[˜éDÓñ>Sk”›GGÌ5§z”ýÕZë¤\òw‹ùsaCwÅ1GWHß2®‹k}Lñ°ÁÅe$¿|úËÏÿç/¾"…è?ÿý/¾s¯áõó¯1š x°þo+tkáóïÐÚ->ÿêß%IdY>§£ñ¿ÿÅw8Óçÿm‡¶Ù÷žÿúhÌAR¯yíxiðcŒ…ÇÏ¿=€K +þó?£_¤Ûsñóß-Ó´¹µôù0{.áf´Ÿ8Ëæk³ÿ–ÿJFÁ[C\2æäüùÇüÛuÎH-ÓÂÀ<-hÛÆuÞËVðß/“Yzÿ ÆTàú×l "Êçß\ki¡mk[g»Ìêz³þùõÃA]n·~øå@¦ßn¿Ãkyœè`x ÿ9´rŃ¡åÌÁbN:˜@uf-FY”ñlýó/°îW u.pÐdûüÀQ¢cÂßÙŒ¿ƒøÈÙsâë®-ë]ñöo–ͼ;Ëu7Çä‚Dql›¹"”j]·hüïÑ4ÕŠÃ:Ü‚ÚZèFg‚ìè#f·cý²¥¿E‹±ì}ë¬O£O<ùí%>¬­ÿíèÉqÆFX¼bûüNÈùþG CÜãG‡wdøˆÀØ€;ÔÿÍ‚ú+åýf™ö¯1&4îúù_Gç(¥Øëh-t“hÏF'"ÄTÛÅ >,÷—ϧ!ð…3+nçºNÉõT6R¸`Ò‹þtÈÃmÐÿ¶PÔJt?-]®Ýëæç±‹+½rÔ±·ƒ>22i²,‰t©;¸ÓåJ€ã¶âò3&'~Ä+‘³bì?£õ@"Ï`tÆ4õ—Bi˾ßÌ „cbHDaÕ–7^±NêŽÙ¯‡ºv¾úOìÓõ¶Ë•¥… }ºi§9d!êÁÿ4±&)»B=I çÀÒ3"Ì!×þ.ÆÑã7uã2§$Š#,ÖÅ7yÓÝüŸ¯kô±Nô÷olÚ-MîDÔÜ  #3L÷}£Meðm(>ë9.}\pWùå.èÛµÓã…\Á-iEñý€FzIIƒE˜e†jõ7'¢ÂS¤×oÿmóÐû7D[‘ÞÆ¥9דÒ:Çû7ËÖ¯¿|˜\Ï‹!tkû/Bp¡ì’jü:éÔÿTòy0$qHÈåb›dá¿´ìϘê*'eå僊5uEàkZðN´ ÜøÏ•·üf‘F,JPûšRîxèÚá*ÒVø¯¹\ÍìüoR•’ Rw©l2 i’º¨”ÈÔêíÿ³5û½ž6”ÈUp­üïŽ/ž0!Ì©\푌y#ö3D_n•âR\U×}wÿÝ_„¾ÞdüRxùáÿþôßýåçÿÀ¸Æ_ã¿}wûÈ™£¶ß àx+&|‘Ú™¿ú†@Ñ\rm¸þhiòEÆh.n?üÍ/{¢.Ö#H¿sÆûݻìݽáý‡îxB‹ ’Km•urvËFþ’¿Œ‡.ù@SdM±ä%Nn5„®@û­*°òµÉ…¡”ssæ¸ÅSÄ¥~#¾~tüD[›ãB…Ì£ééEYÂßbë…àn±¶YÕ%…‹’L ^H[2mùlÃ?t²jãˆê•å.³Q´zvçRãä,ËïØÂº¥ÐZy)¯Wž;œTñœe?%9¿å«úû ~×ïx5(X’yìÇö[‚¹'Ç<¸÷¹–1×UUݼ9ÅÖŒ4ZçœúPzêSÞ-5³ý½¿¼ØÝ`ïMH¶¯}+[ͺgoÝ‹Î) †–>ÿoØ&:A'W¦å'By6ô»Ù¥§—óÞ#§Ïâ=BZuוÀnYÝ<‹‰Óù¹PçúH3ém¡.ooC5ýª›ŸÀ•lQóï‚“çž [“ çÕá‹~´£œÍ¹‹®~c麻Ÿ¬< š%žÑb¸ã '^/n°îJwûÓ\/WwÛîÚ áÈYÖ×VoE×…µàÆr(Y¥›|(Ó4ýjiðKÝ*ßÎ¬Ž“*·Wá_>²e¡ŽY¿ÂWëé*iöË"öjàÞf zïEò©1V÷aLë/ÞewŒ™öœkçÑÍ›•~å "¤§Êí¥9åleú‰ÜÒ|_AeÝÏÿ éµ_š;¯Éô¼ð 28†LÉßêÙ–bÖG*©›V T!CÈï¡æú!BA¯C·íxÇYº©ãÿa&˜-¼O:!K˵&‡Æçp]Ëï)Éqÿx§>0ÛÌóOW&zÙ‘6ˆïÒ­m2yçVÏ-Š":í—1žD‹ÔJñv¡ÄåýcùÙ¦ñ/V D¹rPΩôT é % ÊY\wQ鸆|ætR'ÄÕüvã¾RÑÆûwÜPoÐþ‰)`Â×úUÊm:‹Å÷_!x=ÈÆó8”_8¶¡©±ë³ÐÐ3ŸÞÕNȯÿÔ.]NÆ1EPy­¹‘ðxò„‡¢¼ùˆ„ÔµOB–ÀgZücf'ªJRÁñAÆÈxV˜½¯Ëfÿ–ƒüà_S¿ŽÝìŠbª^Éùßÿâ;¤Ýomoh!zÅï8vËiuâþì|b²ªFµ{t[öíoNþô6„­óO "á%ßäuϱB× øo²>é¹2JÜl]ët‘é¼ù‰‰;´ØuÑÿëÂ6~<Ððï°s}UðŽ÷W¸™å³Í—èTïð÷'þ°¤t·Ëwveqüàa U@ÞÛ½`èί!ßZ$Ÿy3©o¦e´:uíIùü’áý”O4I:çWK‰OÚ”Ž¿Y&·rÅ_顦rÖ>¥“’†\¥‹š•ýÊøð+ð©…ª@öÛ þûÂ)NvnØf\m¥ûùP÷ž<1ýlÌ\½&dUl¹?»À]|m†.(å‚âûuÁ^Ùd«!MP™À§Ö‹/äY*ê³G xR¶Öî ¥ñnÏÀÈyª7Oìë…oýz|C^7øêþóÿ%óÈ.E®³ËŸÿr™]Yèð¯¸Øö™&ˆßóïCA¹#­óMÖ÷X€þQû‹ôѤsÜüp*•¾1ãjÔr™âªsÞýlDÈŠÊï{‚G°äXÀê=°ò­ý+²?ùUë$²ëävd¿³õ>r¡É¢‰z56¥Çåµä·<Þmáòˆ\2ÈÛÚãkc)êOìÄÊ¥œ{«']m}j“éõö¨@…/^=K¸À–EYC ~¦lŒÑž;‚!óÓÀ—wx¤ì¢J]òa÷9ï¦ÍïàÕ ÷®+Ê嫯EX@ Û/Þû/ÄÜœþàÈ7Û‚÷؃ îÄÅÉn!{Sv¢ÿ—i´¿`’ ù‡ÇsοLìæïÙÍ¿YVq÷ }ñš°È(}M@ˆx(|F.ù2™Ñ%§Ç¤n°aiñ8ƒs on'5\²¡\ýîêR³[è0év2`J“ñb—ªgy¢y"úÁ•Û›è7×ö`'E4Kºµ“^¼ Çbª1àZ)$@ò“ÅðAX¯4óxô7çöòºüè™õpûøƒNédFüž³Ï‹BD*à”w±pw§¿ÓퟸW¢GKÙ®5í×NDDôøÔ,(e@|ZhãÆóçô+/]ŒžÊƒ%ò﩯štÿÄ…ó’Oø‰»ãoåË7~`  xO'YÔÎß‘P Ö+BxCÏû8© E¸»©ÿñÍuºÆýÖ~·¤óË!H _a㞇¤8¾N•¿ÕNvÿ€@ 7V¾ Ǥ\iV:n@)þ§Ûïw«ÕvU‡¯‡‡øƒ–‡×g¼M¹{Úßq­C¿uqùÍ|R¼yºÓÄzꇜzJð²±-ï/Ñoq÷»û³ñå“ÄXCµ þêÍö´!èéé†ðÅ~ãØßë×Ö]3’pîÒ–~¾‘,„°ŽòÈ^£Kºwm¸ñ½úc{2¢&½/·ˆÙÊßf¯'§©Íš=wåÞóÑ„.}$¤åiÄóÇÙ‹ M’™Â?»9án•Û³×!YDÉg‰‹5õ8úÔ¸ôþ {aºÕR0ózåÓzòžm¯ØÝû-&èîœçkÀƒñ>ºî­ ]öBESÖfw³/5QYL) ¢¬«šl±WJÇ‹@]ç´»;óx?ç£íë1ˆÚ!"vútíúOÒË`%»UñšÛÊ[Ÿ£\2*’_´·ç!j`¡âDÉOÏÛ‰¤SÙ! kùüŒžd•áÔ‚?»¿e¿ÏÛ~SÞjô§S3³Cq¢øñëvääÇ ‘’ªj5GHÛPÞßÂØÓ]zt›Êî|v;ÇÍü’8R[¡1c'ä å ÿ­’³¿÷±x4uàþ~c%8ëæx/Œ÷Ò”Þ!Ó fUR̾7UÅç~|m…”Joo±¿BsÂÊêgÜ-òSø+QnE±¿f_n žÚ‡ÇÎ1Œso3ìüNd2zÀvO¦þƒÄ7ÝxÊN´…aÿs„,N—=´N»Ú°¶¸¹í=>íȺ÷»Ù{œV–mYc¼ߨßo#p”§®Ê¨›°™å øW´0çrLihZ›í>®òγc=ÿgº,ÜýôjfïuÌ7ßcãûÂ,ekkÉÖo¤î•¡¹ú“¬¥‰ùd¦ïÀs»l>áù»#çêYøÕÿõFÈ|áÖ»[7¦ŸØ ¥ÍœøàX««{÷m\Æ^ÏBîç^¥„ögU ƒ`í§Âä&ÌfL<<ãiÛ+QDþ±~Ë2ž!$*†p§Ãë"Ü— s¿t‡$£!Ü¿ÁS;*C¡¹c¿7÷`騧ÇkõÝ­ãC×u¯ÓÃÓNÄõf¿Ëš’–Rº’GkovùòÌ”vas‘½K0°>´>Úe9«Íýñö’óí¬º¶ýbs$y‚„ÿnj7ˆeœ-hâ÷Ï àâÓ•Nz~غáDÏü8‘m\J6v¥¾d½ãßÌùŠt0o<¦\ÄûÝxõ®0N‰U¾|Oþ–aœc˜;—;YÏÃým‘5øUêa£]{\•T3F)¿ãÃIák,iî–içꇽ ˆ[FÝ6`*µp}»€yKv£e‰t¡«,Wui:C‚s¶U~+=‘žY$Ç/Kõwî5çøi]O­åa>¢ÿÆ þž=¸Ý‰÷o ÍíëpàM+´ŒxNc#ÞðŒš{mõ®‡§› ƒòÕ«Å}Œÿ E žµñíN9ö|³w ñ¿ëR»¿qg¾1›ý9f‰D‘øõ %Œ z¿ÙÙ•Kº¿6XdþÎo6n&ÙåÊEÁŠ’Õ'=H+xDŸ8ùEîŒóÅø'þ²åóm˜Ûp2~]îÔŽEë8Ï@–žx~´Ç7ûîåƒOEgüªÈUý~!6üZ Ø ë¶‰xæåæ"û˜N›»:äKƒxÅ#ô>mîs{û êg-•'\Ô»#gOò¾ÚÇÝ-ÝéH+[ºáÿ7†3ˆÓ4®}¾>àèÐoã­¯Ûíífï6s`DòÎø<ûêN»zýرÞ?ÞwG–îÂ9<PžËTìœ$ .à×gkúžä$§(¬É3Ÿ;,"èúÙû JGÄF‡é Ï‹?zbBóU¼Åðñ«“_Ý}„²ÒÇ–nl?&|e˜;†ü€ ÷±ç×¼7œD%ƒø£ôÛ›Í7ŠÞÚÉ‘õÞ_¹ðšZÜúö©AR„]:–¯LUs½Í®Õs„«Û¯È¿¾dïÌ~peS/û±oçÀ@ÖËÇ®|i’ O_/òÕßÇÚ<Ü|ñQ-èÁÛK )Zÿø"»ô‘0_¨zÂjH[ý)m^œâÃ{Ý7»xÍ7º†ÍÀxöñJ†>wÁ£n{’3â9Œ Õ½ê·;€Ád,·‹4û=×ݼÓä¿?>‡J)¼‡'Æù¾º8,-iC¯µönßö Zì9“ï”®ú«Û°E1džàrëÝõ¿¼Åp’a7vµÄ”mwfpZ~È!zãæ¾®îîîóÈÀL„IñÀt{pæˆïA±ËÈp˜>Ÿ\¦­ÿ¡älFx@ ©(þˆ@R{7NÿŒô½ð~Œññ öþ×™»»n‚qRx§+Á$¹ó€àÅcÞ@»!2Q¹ŒUÝ[Ì=õ-ã/"»:‡1R¥i cxãY5Ó‘qåDág$´Þ“ |Ô,wvxì ¡8CòŒýƒ¹R¬4ÏÿDûÿøÃ§?ÿûÿh=r@endstream endobj 126 0 obj 24403 endobj 130 0 obj <> stream xœÜ½MÏfIr¶/øGÔr†Ð¼ºùé¥ Û€7¶Ôh!p!5)RTÕP$eö¯wž'"ó¾Ý=Y4 4jQõDÝ›7?ããDdÄß}}>Ò×ô÷ß¿üË=¾þÕ?|ù»/)çôQÖ×¾Rþ(ék)s}­i~rÙ”>?š}ªï9ÃÇ{þh6¤¾Gƒ·¾'È(»;˜Ï†ÍÂþ¯Š%ªKÊ^$4\ì;µ,t¥<ÅúR&qä\Ð:(¥~Tô.µeÍæÁü̵³÷èÂ[Ï£Ù{ÖGßßI+köÒžÇý¥´§Á&&͹{9ÒžÅwÒž)LCêKÓö û%tv&5QöÈD©›iSöꥬìÔ:lRI_ªE•rýè¤ìi¶gö ¾­Îîó‡“JÇFåèæ¦4,'){ñ™ªgž=Ä…/ïý<¦Qöä7¥àd¿('Ææÿ™ããY×ÏýX}{®œFçD{­…­qKágï6«˜û`OÜ©<üÙ*wMÚ«:약+:^ÙÓd„2?r!a‚’§Íé>ʉÛñÙ3ˆGöÌe{dÏ:öp~ûRÖ>ÞÚ›$wRöfÀd`Rf&e¦ŽXY{O7p²}XÊ"¥.öwÓTY{Á±ÍŸÞ°éHy¸‹Ÿ6±" ì®c?ûŒFJ*è0Ë}SÖæ‹”ÌaS&ö,^â ÷ÏÌ<›?U£ì~¥bJII\¿'íMÌÞͽÁ±„ÏþÞe󨽉Ÿ}~& {2†½TªFájõµ°—AØßí£ÚK{Ý6Ø””ç‹ó;÷Ùà#³5“Ò°È›¢s¹)›é@ì}e¢4°¾=ÒQŒR9¥yTÚ6³GúØŽboíQt½•í-l¥ì¾µWdè[ÉÞÚñP ˜æ^€V‚—êüH¯ßÉíy¥Ä>ñíSçû¤Ø3{çäêÃ|Èy“©MöÌæ==v€Ã¼ªÏ„í~Y„ ^y8íÞÈb]›¿>ÓwzÃ[ûÀÌî§{|µØQÜÝxp~÷Ž©vÌöé‡ÈOàöLfÇȺÞ2Êh³–7 … ÚÚ·Nô>`ûŽ„n„Š=Â>µÔ>Ò£3´vGÉÄ6—iöL/8•›RíȬ-< ¾ódM¸ Ä>µ^<ý›Í@*Pzp©­€/,ê¤Lñ³(E˜Ã(úÔgÖö¤d¶)Å¡NTTR¶iß¶D å Xd+µ‚M™’­©I¶ŽxiPÕJ»ÏÒCò£OU×^öÊPÂícåϘO[Wi&éÞáMé¶À{|½„“²Fé¶—lŒaïz=Ó$Qz·íU¡Çäj¢=-×p7% µ ­„[pÙ öWw—à†Z…#|D9صȰPØ:ÅW7yVžl'b5“gåÑIì:({Úk²ÝÃu({J¡½ÆŠnŠÆîÃcÍìÄ|=`>ö©½Ù›‰¦4À…Ý‚hO2 •¬x‹=DJãŒB%# °ø-‡24PRv'ÕólÍlæ?±á ÉT£dH“MIvŒ6¥ðä=8ÛÍ)+›œyÔNÅIØ”bûSx^·„ض¢ÔiRd§ )^bÃ{&ÊzS’öRÙS°;ØqP{~S$W.Šï®CÙ+ß>SÈØa5üù6Žþâ‹l‡üò2GöÃß‚Q•`ª}¶   'd=bžSbÿùÅ&Oî)I/“æ[U\¢$)Ì`[|kÿS8œMé²Y°ópÎÙÍ©ÊH±i~6SH›PVSåÌ!aI¨”Ç$y¤Çàì7Il2k˜˜?ž×ÙÝÀØ39ɼ¤ÙÄ:€UååkÕ’±*ÙPÓšÉFûTêÆ&÷îJzišù°•4{d³š mºU9ØÌN‘ÉÑxìS£BOÊ0º%ñ;ؽ Í@m“éBfM‘k "~7m»m=óËV)¹[ 6# UêˆÔèmÚa Óß›š!ØÝÒ2À~¦­k_W©ÙëñU@×!÷ Ûép–³5\Mç¦LSÄk<(_z7iän͇Ôȱ6wënlmîV¨D¼-»¯]Jt…L Ü[ÃXfÍY™: ^;Œ•™è4c±CÆëŒ•ÉÛlj/ؼ¦|³—eú§[” ÂÒ>iË­ÙÝ÷ŽgÀõ U´MIf”Th@ _¯Òº¸“Uß7{¯Mtg¯×{èÆ¦dH5Q4\ÃN]oÅÞz#>à‘ê$eÙm7"Æbq­jS&APȨ6eÑ⣢8ØŠú£gšIÆMÉBS¤!e(†ö–ôüMÙÖ庘٦tªÍû”ÂZ†¸4#XÁÝÊzQæº(ù\6¥IÍŸ¶8ü6Ù ™[†yÈGpá0Ùp§"÷Í&'çËØ” c³@‰îLà®StÊchÏ–«u| „lff†ªm¸M²s¿)ŰºìÜoе Ukœ¡²¥šR°)C”'(ô›7ã›B“ˆ-‘ c‡ "uk>ƒÃ–ý°±•Ì¡1¿)†?™tVêoù©¾wö(ÖÀZñgºžÉñÌ2ìëɱ¿ÊûgÓÉ·Þó˜2Î¥£¾·GŸ‡ï5ê„Kê wA“ÙM\Äž€ûô×30 ›ïX[¡µr_·fœ¿ßû42\k3Fç§q〉i}µMÀcyb9@üÀ†Kö¹²gJPŠ!55i}1ç´‹6+Å÷ÀJ& |ÅÙv@H\q£ßÐHÐgmÌ- Ì`¶Ø Y ªEÖÎæ.´ ¦oîNcSšïT€Chfç J2Uç¼5‚ î†i›lž§ýÝ©í †Ë:¸U9h6ÏhÂÚ3²_2ð7k'ÔÂaA‘†ŒÝÂÃÚ*“NÎV{8`žFhP› y6ût@]s3ˆ3 Ó<Ðæ|pÎa‰P kÛünt_¨AÀ®˜$Ü‹9Ìß”jÍî]¿æû™ÌS Õ ˆ¢¿ÛÑÆyjö³—åQ)Á‘%¿ ¶äO>˜³·c”jFY2IÀÛwz 1lËÑùH¶C)n„Ç”5nHR¤üd‚¢T~†ŽbLð#½zSÈÂøÓ#Ýü1;ž]ö«]3±×ˆÌ0ߨ¡@$Øjº„½4šé>{k[c‹Á†l0ý-êP@匼oëT#¶ç²Vz0ä½ñ©è´iª8‡@E§—ÉeÇ„ˆC7b,sæûf`j¨Aikíáîße^û¯”æìÙ6MÇß¾ü\ÚŽõÅ®öLžAIÖzL®e”æ,|+X ÙoÏ ½¥›ªN¿œà„“ƒE 36(Ø»é„IZ3^O{óá,ûï¿l²?p€à§F®ü·>ñã— äL$M ¸Þè_ðßûõÁ)ÑG5ðy‚§oKn) ‹;éû›BVIŠ©‡†”(µ™ÂHU`S¦élàÁÓ)ôÐm»†¬rS¤éÍa 6¡7/^1¨bSª I^¼MȦÛ`c‹"¨/S3Ó§—R¹)Í”Ái;m4×M¬'ͽ•©|UYC›ÒMA+ËöLf_äJÍö©Bó-ï­×l…:ñåjÃÌf9s,¢<´.óÓ ÇÜ U ôuíj[ÓÕàÇ©£¼U¨f(沓Æ4五|ìc¾ÖeE§Ñ‰ÏÍi[åÅ´™- xÓ¾ç4J5Þý…ö!˶ä‡YçnýnÊC×”;¸ö†­†ìwÉ–ÓfUov»MWÇŽ‘dÓÕ§|š9ù3S­M¡lSèž½)Ãüž¡Ûܸ3mS -–‹‚­=ß”nºèE‘.šÊÔ›íc² {)²NÕ~Ïþex3Ðvšíz¦äiuÔþSc£²3Mrlõ·æà*Rê¹THQ,¤¶'°eÃK©·¤6iøÒ»gdz sf@°½Ô™'õ ŠÔ*uÒãÝÛŠu³Ø„&c-µL8ŽÚC·–S7€Ôµ…½©l_À™i«®%JÖfªË8€Ûu/1Åh–ìÝ*û´QÀø[Fɦc<~²*È%X7!™´ØÓC½sëù´m8±)ìÆÞŠK‡¯VšÎãpb™·Î&µVºîãÜù¡dÍâUF3£Y;%™¯j6åÁ=˜FªÊE‡–¨G`kãã=™M ‡BÂ6¡Û;O4Bõƒa³{2²ÜwÂûû›¢ù2% Þ»QœBœ Hç”Bk «~Sƒ  l4§°™=½Õܬ§@Ê´·zOÅ|]{§6¡ í›…(ÃÞ_é^P„V˜wø¢ÄÞiÃFrñÒôS;ew {pÅ–›¼›"†±5®a+ììafSå÷¦|Ä‚‹IÝ‚‰¼)Xpâh­‰ûv˜f,¸.Sáã›6…K~#;E ÆU5fj£l»ëFyÄAZªæ5rÞ>±ò#mÞl¤e‹EI õ}γyÜÈÚ”i¼` 3©6w üøâ6e™>´’¹¾öè*•XYz¦MÓË7'2©Öz6ýÞS{«›“ùÁ´oÁCÕÍî²ãØö*@ŭΉþ”Åý©`óÔÅpü4¥ý’bbvèó*x5 ÝM[›§¾Þ%JÅ9Æ|š¾åÜ`>ËDºãâ[n+Üe ¶éžÝQ]uÉŠ¢q¤œêC7 Ü6Øô@›^‚2 ‰Þ›úy)*{™Ä©gb±×ÍNT *ÔÛ¶ÜlËÄÖûÍÚ z /_BTE“˜oÖÎ82ÓdïœÆV°mgÂ9nƾ<<‰è— 2ãÂY.©"Á»Ùn±EÄBF1 çMéÔ(ÂäM°hn#LÃÞÊÔSif&#Ló–b(_‚y1’9úŒ«¬ýŒmIÃ,ÈD·˜ozÜ*݆Øz‹'f‹›®³kg˜´1ùƒ0Âåˆ9²îT¢-Œû°=H“ÛD‹)ưMÍ÷æ‚bìÝu?âÒË̶ϔö„I´\‘^å1ðíPÜ´»(ó'ÏÈó3®ÀÏöÊw£´táÞ›R,VÑqo*O¿pïMi\ÐÀ½7Å=pïM™z˵ ñ˜Ö¸7õÓ‘/à{SÈaøÞZ+ø>¾ùÒ,ðíŠï‘èÍ(ðÍ· ÷Ýø˜(ã¡}pï­Ãæ9°÷&Þ°÷¦Ð :°÷¦X¬CàÞ›b+pï­>óL:îM›~Hǽ7¥ˆ"Ü{S’(S¶`£'ÒqïM™äÝ{“RÒ…{“Â@#ǽwËœ“É5ß™Íé¸7{HÿªãÞ›2?Ê{ï&JÕ€½9=œ ǹ7…QIe<ØòÍMÙó­ `ù,ÎÃÍ3,q»°onc÷¾Ãrèû<âÐ7[1/¨ ïM‘Ôwè›;…ÏNÇ( oîZQ}ÇV èûXZ}scØ3Å)“þÃ}sÚóm†éåÈ7WO±”Èp…"ä›ÖX«ò½)„ù>”c4 ê÷|džsà;vée!iom'â¹AmNí¾¹ ¸ÀñL¯|s±À ø&s øvà{SºùŸøÞký0"2€ïM‘–}Þü†>Õ¾i€ß¸÷&,óÃ:îíF{ÀÞ›À Ñ{oÊ2ŠãÞÛö·ØåÀ½IYì}B½Ï;#X DøPïM‘Æè¨7{T&PïM‘…é¨÷¦ÈÂtÔ{S,Ú:Po“cpÔ{S’M…PïMx Y `l¡ËÁÞœOh½Ž{oB27¶pï½ÓdyX²€<ÊioJ¶èVǽ÷z¯þz$u邽7¥Z$ÒõŒm›€½ÉèjpØ;ÄWÀÞÎNõf3í½7¡1Œ!@ïM±øa½9vF ÷&È€wÐ{ÏÌcÞœ; gè}¦×Aï½Ù–ÀQo®í zŸMã ÷ÞX™´Â¼÷ïnµcÞ›2Á@æF"ÖV[áøí¼÷[K¶z‘X߬3å ôÞEõö`Å@Ãæzs¿2²ÖAoå¥2L/sÔ{S²6õæ ¯öÞ”dJ¢ãÞ¾kî­Å=°·‹Š{S(¦wØÛu§{STŒrÁÞŸqêì]Êê2{E¨u}SªýEÿñKîXÕqž¨ÅbþÕBüP:([«…€µ?PüøÅ{á”è¥Zø<Ž?ø.àˆ8|¿(  ÊS/à»ÀŽù¾IIý¾ X+ov8ð]`ëö ÷.`¶|Äqïf»êÁ½Ëc1÷.൤8î½)TJå¦$S_øÞjµ&Ûï΍ßW¨¿:ð½Uïaz¦ß›RL«t什•bÙù.Oµ¸4¾ ¸ÕC¾ n8ðb…kV›ò\¨wÁ¶Yè]DJ ôΰ­Ê:–Á Ðuº4-½Ão¨7½{ÄÂÍ;l ö¦‡jÍ ö>!Ž{Ÿ¹ãÞŒ`1̸¸kÑ÷fxÊ“.Ü›Á(ôá»a}Â.Jµà€‹’l~ÂÎ0¾ÛzSÚû¦IÆ…Š÷K[÷âî8OEÆqï N™îᜱ³Á ˆË*îq["ÝÀ÷ÞôŠ;tà{Sì²N„Ì=¥ô;îçcWÀ÷΀{J»pï ÿȼðƒ ÷H¿Pï<ºD±£Þ™êO»Pï õ‚^vG½3”ú…ÃG¹J<ÊQï ±o~k¡Þª=Ã-õÎC±µ''µìeOeìtf'ÞÚ)¸Ú°b…€ÙOÛSðÑç© » zÊ‘’ ÄþÕ?ÛèKA|ï(âÂºßÆ´°R¾]„*ó¼óÇ(p[Ÿ¬Bß>éÛ—¿þòoþìël[Ø^©•J…Ã<Þe§tÄ[ûáO37=_ÿêçFùËÝû頢ðé=žáôöŸ©ñ?iH_ri67úX®YñIjèü[ñÊ/jJ&­¼ÇïÏü±ÅÚÛ}Y™¯–ƒ#ÿoWë§CüÅÞýdD|©þYZ¾ïÌ¢kÔüñX`U¤‚r…„ù¦À¦¨S&¸|¯(ž!ÞSÛ°¯¦¿ç4Kòú^ DÏ80ûƒa'ëDÞ]ß;7bâ‡î÷ï^ß»Þk¡p ÷ÃE30éç¾÷ƒA÷ º÷Ù+ÉÒ(\fs|ä×ì÷̳ðsïÅ3×ì…ÈÙ‹÷bÌT%¨ÂœÙ£&æQŠã—Þ“>wÍÞyÏg¯ðÎpú™÷îÙó~ÒÓøÌŸýÞÀ¡-g‰t©ï‡¢,&AIêØÞ¯\;î ûý#pjPøYQòÞ‚~ë|Ã)Ë¢9uâú7Ô‹x"ú­Þãø‘øê¯vp}/Ô·­^£ÃÒï­íÂ,í|Y¿¯ÑÅê{´à¿í×èd*ž,„à|Ã~_£‹'¢ßjá=Ž÷Òýꇥ+ÉÀ]ZÁÏâÙtŠ?%é>ÌÚ­êóÌ3Ú~Ã],;ƒ?ð,åfPþÛ>‚2!Ú£ÎØ¾óû¼þDôZ ¼GÁ…ûµíµlsÞcƒ–ó›P½ø²~Ÿ±ÅgPþÛ>qÞöcÞw¾`¿¯±ÅÑk5ðÅ{Ù~eC#£DÜú<¡ßo —ŸÎâGY&öò»'Éÿh. ê_þ„œ;ÑBüæ7~<Ú{Z°Èó ûýã—Ó Â{é-¼ÇaŒòW;8[º¬„‚¾-Åvqg&!´]weß–t(²¢'ž¸ [ðß¾i. ·ÕiÁ¶Ýù†oÌÓ "ú­ÞãÐÒýZ÷^:‹C¸G—˜Mì´›˜yè|Ù~ߣó'¼ïÞ‚ÿ¶oÜ£³äj§…Ì[(çöû?ýV ïq|Zº_Ûà^ S(í÷›BÇ]œf¸öæÅSôûâ)ñ„8F´¿ù‹§ ^O|¾a¿/žOx/½…÷8Þ óW7¸÷Ò5ÚÜ÷èÌ+|Ú5¿ñù²ý¾GçOxß½ÿm߸GgIÔN †gžoØï{tþDô[-¼Çñié~mƒ{/¹ˆîÑÁT®ÑY¢æóeû}Οð¾{ þÛ¾qÎÜP§³Î7<±ûé…?ýV ïq|Zº_Ûà^K§@•ï7…”há.ë~_£‹'<|È[ˆßüÆ5:ÜÍx®ÑÉgp¾a¿¯ÑÅÞKoá=Ž÷Òýê÷^:·WÅÌÍÓ®™£çËn¯ž¾ùÞwoÁ»5yQ\ãV Ýuv}Ã-ÖÓ "ú­Þãø´t¿¶Á½—.0¢ á‰v…Å—#оù´§üw`D‡bO´ (¾QôŸˆ~«…÷8>-ݯmp¶tmñ&Šåòü~²YƒáÍû7ZiÉÂxí7¾[;ëOTFîŸâ÷’”%}Û[°›Açöox/â ë¤7ð„–í×8°×’5^#CDO½Ff·–ÎWí÷=2Âûí-øoûÄ=2ä|h×Èì~úù†ý¾GO¨×jà5ˆ÷’ýªö׿âZVxƱ¡‹b¸'®ÖµƒüÐáÅ|U ! :·ƒ aÔ :¿ ŠhÁŸó džN/â õÒZø<C,µƒãiÃwÆ 9A¸â××…û ´9 ôt=aiüN þ;¡C1\'Zîßd(záOx¯ÕÀkvÚ~•{Ÿ6DŽų ñ9›%0¡ØN„b» Šß Š!:Ñ‚!>çŽ ^ÄÞo¶ðyŸNÛ¯mp¯¥ Lè¢щv…øÄ—&ä}sLÈûî˜Ðùí˜PP„èD †øœo8&tzO¨—ÖÂçq¼—îW78[º|BúiXÃüjXODxT ¯ëÇrDþÛš‹B('0¤ç|Á± Ó"÷ëí«óZ¬_Ïp®åqÐG? ¯9mžs¾æˆOtÇðÞzþÛÁ˜‹B¸&04ç|!*!Fü‰Ü¯·¯ÎßËó«Ž-Oµj:í\"3~ãÁ‘›‚ ¼åØŽß­8O(Æ;ZˆßÂ]řӂ!7çŽíœ^øÞKoá=-Ö¯up屢@‹ (N"ÚUE|9-¢oþ„÷Ý[ðßiq(Ò©½RÄ7"Ô"záOD¿ÕÂ{Ÿ–î×6¸÷Ò9¶s(†Ìœv ¹9_vlçôÍŸð¾{ þÛq—‹Bdæ´`ÈÍù†c;§þDô[-¼Çñié~mƒ»—î<%›=çWÄ ¿ñ/„ç\Fó'ü‚›·¿…¿Ê’ní-~s¾áÏé…?á½ôÞãx-ݯop¡Š”G? ¡q¹éŽKÖƒñHôžL2Ÿü·0…M4`øÍù‚#<§þDî×ÛWç*ò+Ž][@Ôþ/ÝqÙ_Fq¦¼Wõºã‚ w»äwϼáòoó?ÿöwÈY²ZúÍüíïPߥ<~óW¿Åæ2êúÍÿrmÎü›¿ÇÓOokýæ/û»£ÿi¿içáÿþ·¿k¸)ÊoþÇMÍO)køku ¼†DfÏ–¿ùwç½ÿBr{ÖS^ýøÛóÈöqŹÝÄÿ€^¬ÍèvkìжŠ~óW—ïÖþÿ£Ï<__¼†u?þï¯f4 ¥–ôzõÏ_¨‡»õûUfÏAÿÂ:¾ýžë«#×äüçëÛ}µññÛßu\¥Hí7ÿÈsKÕÒ^Ÿùv çÿ²O®Ý½ÿó·,ú1׫ÿ××i=~¼ÿËßþùïÿ×/¼&]°Ã~ÿ{?ýƒÍAªïg¿ýüšÞ r÷DôZŠK¼ú«W«ýWÞKù××\ùÍëÕàý!Mí,¥üæwìcEÖ' ìw>²ßáfpkÉøï~²ZØÖ¿°•ÿöõpAƒ½þBè-Š%ïòŸly>—ÿ|­ëý‘œ9ÄqÎ×6ø™Yá«j²¤Ö­SiÿJÿ\[ⵆh;õõ3v§OÔÏ#æbjÍ´WðjϾÞfní'gq7¾jÝg#ÛCã ñ½¸¾ò#žmuå×”ý­Ÿ`_ÄQþkç‹G¥#íð£ò'LÜ'N‡ú”ù=οc7ûlÅY÷²¨äÑwOqw|¿gcÞ¦îòÙäÿ«¹¶ÜsÁ¹ê…ÇÙ…Zþ™Í6Œ¼ûñä_hÚŽ‘FÍc´wš þ›qUzÔ×h~*‚êm¯{ÕÞ¬÷_ì"ãÙ|ïnãf…ÿ)¶Áç}‚´Î¥þ„» "m.?ÃÊï]ÌWÚkÿÿæ!Ëôå§ÝÀ„›ås¡Î×ôü»Ÿç¾ÿÅ>ó¤ÏO35\ôø'¶ÙPEQÚ½£~DÿÏpžûÅÒjt4Í?Â(PI8aöì ñáóÚJ=Ûª¡"æÏ­Ô?y¾¹{ÿÞ:3r,eo¿ÔñŸYJ¨¯õsK™)Ò3î*Íò ëèpœot‹k’öØ1´}þf+µµw–{w«¼äáßþ¬8Ú§«"\¶·Ÿ ä¿k¿¨ÕÝÊ×­;~êZyJ‘¯ž|ÿ-òeÏœ7sùÎ~6‡¿Û»—õ?^Âá–?Ë ÷ËæK·*P–Ê/êVŸD§e«=ì<ò‘ü‹jÏ-ï~þ(üizÆÚ[k˸ûë¡„þƒ´6؈Ùп×vlïþÜÿþƒu?mvü>»ñÄwÉŸ?\ÿþ‰Š¼[ió>t°>¯O þ“.çgJÊ™ ÀÎF1Ž?WÃ+ -ø§Š÷'Uî>jmï=»/÷.¼ÒÏH$=ÙßùòM¬öKÇîÞìiß™5}Ršy¼çûÀ\}ý†÷P­0ß-ß;ê—NÀýõû ýßÿ-)³bMýÔß³/Ê~>Ûa÷ï=qwü_`~Oí?Nì^ø?¼É1Ê”tAÐzY4ÿ_VÓ&é O/éñ¶i ±Û:¹Ýurn=î} âÅ¿:äŸaÓxD²ÆFý6¿p LŒ¶§n­jËæº þŸêOÙ×öD?DºÁ5~AýñKúÝ{§•‚\™ÿ"˜•2þ›¬{ÿ>ˆÉEΡ°˜SÌ’×W<ð5Ëxªt¨]»V¹s0$VDÍ_[NÌXðýPV·å¯,°Óë×öX)ÊÔhñµ­.s<‘ ݘтÿÖ7PLÑ)‹Ùø¢…ÒX·(¾¡ß?~‰^øÑoµðižTµ’Ûì]¹Zûúçñ¯¿ø’¿þe–Oí>Õ¾(ųÏïŸ5Ê ê%:W§jØ ËY¹)ã$nŸ$(Ý)©RT÷ì(éª=Ðp‰Ìý™õ[)ÕsšgæŒÞ”'jý!/P+¹«j Šÿ5<’£Ô@BåÙV¼Ðý&€Ê›’½´…ÕÍiå™Q£eØ–H(üŠ×…µDò›’Ää½ÉǬGØ©- ½Z7Jh//RšmË+.JŠ ²’¼²Ôh ð-(LJµ9L€'Ø”fS÷LUhjÓ4–¤°–§V ,z8%Ë­.ƒ”¾LöÎh‡–ÈìÑr7Á5½æ1zØdIý^éÉó‘¸ÃÐ)Ÿ½:)f"”3óMXÆ…Qp«û²@É<‚¿[±…Ë{¤PŒìõ‰ðî*ZØ<¨A]^ÏxÎ\¶Cže/?ˆº9äÔ^¿´ÛL³³“«W=m–§›v›ÛIÜ&@ T©ØM©â•\±+(³JÃÂ| FU¤Q}Îëmë…qU¼2#–Žru}uM$™zÙ-“™l†ÓrË$(aÍlÃNÉw­v¬ |oÑËÒÆÍ;‚úØ“½Šó2»îÉ^`ÞÊ&^„mêUêMáD£ªÿø+5f­4®Áð늴«/@ŠXObA «»=g3í‘ìß6 òHõk=Kƒ{’$·ÛäȨ}UXž`SºŽFßË<¦©^&Izf¾XUQR&íYhZªŽ¯boíuN Í3›³µÂTÛ Å£¥Cj€¤ˆÅZ­áv ƒB1†*¬ê ³ER–›VŒR\Õ~Ø^Nl¨ô`º¦¼ùÈûž§i =dIf”;5•Mݶó™ì\fñ€c®b±¨DMYXðÙ(Ú&©š¥y=“M€7‡¾:ÊĽÑÖÑÍqvxK­\a’Rt|—¤ªš%›Â:¬TQ´VI“SSlJ®~Cö3ªäE•${2ÖÁ’`Å÷d3ƒÚ§¸‘ù¥âèXL1 GùºÐ*b·Qi»ŒðØ8pƒkS°>YCué•^Ú–¬:)4ÜßGµÉNoÒ÷@! €ºjþ ûÿ¨[b¶njUQ5·>ÐÂ:OÞ;°Gäã÷ÍÇbX õ^$ômGêÙT ÔÑk±¯&ŸÉÒ1¿‹vù àŒ=#ä„6 J‹ú±µE< SrâQ) J$HUTÄK/釜€n”YP≶j‰q3[.ù«#ÛA.½eÛCY©÷·}ñØ7ÙÞ†ÁcÕ(U°ÖiÁê|(†KG ÒãlG/ü‰è·Zø4Ž? Ù†ÀléBµ_«iC¡Z/`›”4/`;Cº`ÎØ&! ØÎÐIn\;C6÷~áÚR«Î ×ÎÍŒ®!êz¹píܬlÊQ'3Äõ*°!CG»íL9».d; u=/‰Òm ÙÞ”b’Ë¡ím ¤ h;ú$ ìÐvFbñ§}=ØvøI VŠUö™d¢«75É"÷ÒP­ÓÛÞÚS5XÝ1–Ü-¹Ò´ÿçèHV=ª=¦¶ë’êúÎV¦ÁÂŽmoJ6cÛ±í½A»ïŽmgà'TyÛ΀G¹ÉÛε›%íÐö&$ÓÚÞ]Ÿ†3¸%k“‰~QŠó¢|– ß2oøaS&‚‡øÉAÊì±)æÝ "Ã3B?¡Cd´£‚È@SŸ~A¤Ðúnú9Éò‚¸(¾½ðʺˆ`C@°/†I‚Ø”bйCÁªŽÌÀÜPÊ9 ‘ß Ä&°\ÐA!ÈÍÖ¸PˆM)ŽB¿Õz¡à4D äx°…Ø”n¾G!ÈŸ~¡ä&¯š3×f›)PR ïïÎÚ›pJG!6¥š9é(¿µ.b†™yBdø¹Ò…AlBÈa«¿!JƒÔÞ”%ÈA 7$A!¸xã•X^ÚâŽAp ´~aG69qžq ‚íИu ‚Ûš-;ÁmryŠãÁM2Ë…AÄ. "džcœ+Ê<Ç ¸' rÁ)7te—‚Bp-ç< —»Œ „Ø”ô‘/ ‚r’ìÄE á…‚l[Í!ˆØŸGRù®v žƒ$ôâøgÆœ·Â ¸þi¼žqâ‰EÊé Èžqa>™<. bSä[v bS†ÀŽèï’/Ü1ˆ ŸLN÷–ùØ‚Õ) ˆM©†»;±)Tx‘Q3Æ(‚ H©ã‚ .Š ˆó– 6\ûAlŠ\³AbH† v®o‡ 6¥¸ÁaÑ w"Ó‹´."Ã÷D/µCþ)ƒ)Adø°(ïzwò:±)“±) WW) {Rò;váb£+Ã!ˆ ×ÁÃ;7YmmSаþ¾Áž“åhâdiùMq·\å¯ì]¡V¡¸â™Þp¬úº)Å öNܯN‹j¥ý¨¨Ýd®‰wî&Ô×+möMy d„AbˆE5€‰BWtÆÐh¡|ü´×Æ$Ê—0ê<åcŒGeRó¯ÿ3^ÚúÇ#JÖŽ«¾jmê40ú Á¤¸3’Øë‹Rl‚¯·àºr½(”¡W3ÀœªÞJò%u0+†î•ÖcßNi¹'ü#2Üõ4èD¯ÓÐqPz³a¥¤ÔÐ:Ÿá! ¡:uš¯ THÝ/¥:Ê[uà+›R=ÚÎr„n>µÜa´aÒ<$‘¹Ö1kÞR¯Â‡/ÿÙc'jŒp¼>Üó›òÈ­ x’ÍA†|aЊ09Pä•Axô)2ì‹Ñ†æ Œc4ÇÛ«at›’5,hm ]®îÆ„ÅQËQÜÌL6ÐÚ?" çAÿˆ[°ÍæõœÁZ=†hSžj;"Ð ¦žQù.Fàà”€Yl-õûM)vú@À&AÑ?†„’Ÿ(69N¨…¼Š‚¥˜ÆDáIÚ3×4‡<òd1e:…{%xLå1ŸÅ#ùs,Ê[ —%ƒ©AiÆ_ñäŸE¸ND<Ó“‚¿MŸÍMúGJ>ÕØ‹\æO±óüúÅ"óXî´¶€ËÊìµÅwß;‘OP¬ñó7n{ÿâI4ö|“ŸJË·,,ôÏK+ï㑌ÿ¡ª¶½UÿQQÅ\Þ2mM ^ì™­¨qœÏT¸U³íRQÞ[±¦#Ât3úfªèãamO˳ì›”1ŒâϼÏ8"²:W‘ÓÌJª›RmùšfAè"ÈýÔµGïÇ¡d35(ËæV¾DH2.Ô<ªV±^{U–™q\`³gÛPh»-²ù±¦Ö§G†më=¹CâV{e/@ˆRÊVذÃe4×/{PÛØlõ[@Œ§Ùä·%ƒ¹ÆŠÐ*&‘wv"–l<8éÈr÷Q’zÃê oJÒt ˾¼¹dgäR ªÊÔ=*‚ œ_hÿoŠ<€#+Æ«æ0îh‘Bæ•©ˆÙRœR)Æ|€™ŠRe/dÝ3²5±eÇdŒÎB&@1&V|.K3L~ (e”²›ÇÊE¾ïô;‰ñk›Ò< Ó_j„ƒ$3¦]Ðrò¬ZÀÄ7Ó¥HV=²L1²Ð‡ob@Õ2GøYIá@&^Q‘ý\kn÷-(ÔeûU7™Ò ¤,câˆé”?[CO«ÐMB&üBçJw˜9…Â+L’mÖP?Þ„D† éæðDÃf~µ5±] ¤ŽÓš"îÛQ ªÕ@¡zOÆQi®À“®*Óƒ+âPgÄ8`)À9´{À$yÔ³ÇA$V©¯`uúº­1B^µ¢ˆ³F3yx”ƒ6ìNßr !¥å²MßÖonNKn<¤Wak(óþ;€~TK²˜lÿ¨|§äaÁ Þ‚ÿÖ'XJÒÀNö”yÊíŸðß?~ñNÄÞkµðiÊ,,ósƒßb‘áÍf»À{T²Q¬æ4(Œ%X:RX Cy=FxSªAŽÔȰð 8'e˜×P¿çG¾àÅC‘oL&)žß!4JtÖnN\F°h‘Ôå+âx, )Ç—»7ƒ³‡uÏ‹3ÃÎI÷‹@Wë¦v–g)Þª5Uð~lJ6EÆS¤ÄȤ¬þ!ð×"“’!hå1vSS 0ùBxÃ2J3³VãO›¢àªšŒ¥–Ç0WB~k:¥]x^Â&Ûª T1Á²¬ ~‡ó eH¯ ‹’‚;ZÃ~,&*uªË³t§(uãhœzaSó¾˜ùEY‚÷¨0qçÁ•á‘Ú\:^[HRT¸ºåö”rp½ÙV±'"T;žÁòôØ%ÄÆöj¨áÊÃȉ¾KàÃ~f2 =Nr…Îæ»„Á@ý£Ý{äH>Œ‡WÓçê†ååå;b*Üg5Ÿs†<õ ×ì’ÑÞÄ5ûú3j+î±üuäýEϱϑ¬²ëSä¿›Ò }¸(ÉkMPßXÁõÞjO•¢ôæ×ïmý”å__Ô’ùÅJ"”á;N‡xÄOæÃô)¾PØ¢ Ð¬$W 7šiOHI”iìM±3Ÿª{ÕäìÇ*v_=NFÑÆÉvßîŒö$E71J2ÿئ4ß\ÐÙì〿 .½5à¾|òp¶[†]ȺÆsQªóPIzÛµG’X[±Ë@ <Ý)pí"©¥¸l±«6(©®aBÿaˆ•`Lˆ/aöM5l×zž$+©@äÀµòì¹®ö òjnÄ6ÅšyB”XbâM‘æÅ¯°€Öš¦¢àýîÈnX$LEòGÍyj¼®æƒU¯G¸ÐlåÑ ç"ÞÏØÆÙ””NCy%gpŠÊôæÜ¤¢†À ±kÍä+…KÊxkŒØ’4ˆ7Åù51ÐüÈÉ:–) ’o{¡Í®¾b’Í,_}zl–7ebÇ¥áHí ŽV†ðÚŠ oÀn`5Ì|í r™¾‘œžý»-ç¬0ôÐnë¾—*†6Eñ.¤°u˜NÌ·`N¯šM'.Œ»Á¼—i±IûÛ˾mF¦ö:Ñö½ñ| V›Á<|v|œ˜“ês@båäßÐJ+q™R\’…~ÑJ¬ÉW‚s‘BbøîÙkµ|Óã#5‰ôß׎[šw¥¸üZëòPbp»#Œ'(—ù j)R®[/m%1J*T¼ÏL(xøq4Rþ mS/žßÖô¥ÒsT> @kµÓº~_ú¨?áS Ÿ»ÿ‹ ©Þ¿RPÆòI„B ŠvªR^ÆN.& É4E:·l¶ü i+9(¦¶ò87•B x»:aà·Ðr×?[nÁSDȆe„B ø»¤[ù€«ò¨,P>R>Ó7D7€LW…MîìôO™FÚlQ¾˜iziZ{¨]ÐH‰æÁR€æÒ6L!¥ó2Ý’›(ºä½IX¸Ês¿å=œÈO($PH«…À]ZBµ¸oG!E•´jSH«Å»}“BŠ@¬/›BŠôTÿæñ3”#(¤ˆX™µ)¤ˆ™Åu(¤ ”ì33ôŒkø¦Þ*¤|‘ —BŠ¥K‘/yùòB#EøçŠ­†¯µZ›¢–©©‰gJq..´fùðB%Åeg·ªL%­9É.ðóƒ»âOñm‚fR7ÿì’TC7÷ñ×K)EŒh¾+ ”Ö¤PÚPJqgßÏ”Òúˆ:)K[X äO KÆ”RÜÙwKÆTP\ÑoéMúJ)ÂQSè¿ 7œ£c“(ìõÞÚð:ëëRJ Tø˜ž$Jk¾ ˜î$žñã‰vJ¬:CÒçãš—ÔRP– •¬îHù‘V Šx´ÒÓe×JAÑæ‘VzáZ):(‹VZiÍ7˜´RäÄtñiZ)¢uSu¡‹‘÷á¼W:héÍu Tg¤þRq+­´ôìüMj)¢€su #ûóJs®W ¨k¥õZ)b<‹ÔÓJãYº«…1§I檴RÄtê\I+˜ÎÐJÔ)MÇ´R^¹`ZiCH²ö€©¥¤hÒM-e6¦ØÀ¯g’26ô0höžñSZPºõ¹”Ð>ºH]<%²:¸ÎÂR­•é¥êj)cA]õiŠͲ¥–2TRÎÔÒ-:W̲îRxtè™f»grÔ5RRM$|jï *κ\ñí11šq-g¯¦–2ÆÔ© cúäô.®D¸RÚP÷M qUždùÑ^Z¦YAeãÀH?ø´†o[Fnuü¹•ï“À•RæзL)mH“–Å t‹£)FÓ•ÒM ¡¡­ƒ€Ñç6ji<ý¶>ã—ÔRÿ¨¥¤ÔPJ6Jî×ü2Nop4‹Qƒ¬WØžë¥ âyBHëŠÄt½”|Ï…˜ž8>©¡ ãëãEH© «±¹<\ƒ;Þ[ÆYîN1½”Þó'zÓSÆñ9ª5-ª09À!¥ƒñœ9ü³G-ôÓÓMñSLà9B ±¸Ÿ8—ù–!xƒQŒ½vol³èIru¡"‡ðÁG1ÎÁì9ß\/­c¹p~ú<•^Z‘ LpŸé¥yÑêr ‰{c„îM½”‘†5t …µ#Å””ÛÕ?.ë'Yt¥pýj)c”NxFÑ‘vëœ aœãÞ£)3ÂyfoØ{„ÑF#û-ôRÆ(ͰÆz¿âãô ÔPá ÔK7áŶE$é‘û³äji¥1:c¨ò ÅoXüdž±rT#O@’«¥ê¢ÙøAÖÕWKëHó ŽV¨U©½)É#SL3­P£F@³œ¯§†Ud;Q™÷¶î– ò[¨¦ P‹éI¢¤åÛ·Î3~6ÑΫŽm JðÆÈ?kMIi–cò[h¦¤ˆ™fzuYš)Û™¡I!êü BšiíK¡í®™ÖnAìßB5­ýØO¦šÖÎZ^.x1ò9.(ŽDhqm½)õ’Ö|);²(OlŸÉ™›©¦AÐ3TÄ›v»Ið-TÓ mÐöPM+”AIUSM+U?i¯v™¢[/­ Ñ–F ½´ö;—¡ÁI–˜bZ¡ÂIY” *œP1¹ð{ë¾äÇR§)—Ÿù±ÃEÎa_Ϙ× Ì‰=£Óq³#ôìsË4 Ñåðö¿TètãåßE.$-”|øÈQä;Ò|ø½ìÒ'R©+>бLi€“a•>Ëæ#ïn&Æ,ãï—kq–¾ÙÌ…8K¡¾qr8=åÂGœ¥lóá÷cʇßS ÍòáC}œAaÿžˆŸÉŽŒ`.|$¿ÕRê «Ç<ø¸àäÛÏ<øTüÚ=Ì6«ƒ òà#1Ý•ÖvÌ9ð‘ç˜ dÇ™¯Óì:ÿµÀí²NLbl+üõtà·µ§Ö{¸sÍ%qåR$?)¦ˆ2 )øA‘X‚ sà#1åÏaÑN¤ªXÉû+™;K/Æow®ÅÝïþº»ç½õãÀ÷ûÞ9oáS÷¢"µM‚ÂÍýÝ(°F@1Ó¢)·nÁ˜JÍFézÆR©€âo1ÖxS†Ô‹àï.]£™Ëœþ¦9¶Æ}úýÍîo–I—tª^büÆqòãN Á躟ÃiÝtã¹>Ë{‡h«r¹¨Û°3¬òM/5ót?ïϳ\!W3¹îeÒ~ɼ©³©ái‰>\޹YÐ#Ømp8S—Zéª2|Ùæ°œd5N²Ó9©ë—åo#‹­–Ì€æ${yúðõuWÒ`éé{bóM¦`÷¹|œÌ?æÂŽ)ïqiž#ó³”fðSdQá´[&WAðàÔóN¢RÄ©éIK±Þ–¹û‘TlžÒÃó¾¤?ëô’5?vJ‰™»¹Û˜ÿdop“MYràI‹-ÊaV%D#¥¡•{ƒR~â(ç¼ §8"!Þˆ„¸óA$œÌÂø{´à¿-8á Þ‚ã þƒHx/ü‰è·Zø4•Öv¹×%ü1¿.áÍúu ÿp\—ˆ®Å… uÝ[paæw‚à—\ºùe—n纄K7Â{í-¼GñihÇÃé÷p†Ð”‡3Ī{8àu¨ºî-øïð>Åý“Þ‚û/ýÇÃé½ð'¼—Þ§qxÑí²“ݯéÅ"\S²›u¤œ°g^m¯ãg(þ–n·1h8W¿ÅônùÛîÓ¿ù³¯ø‚xºÍœîzOzÙI¿_Íy¤õŸ4+(õ3CúIç~f?íîø³Ký¹zûÏÕþ¬ö¼ehséU ˆ[+ãÑÓzc+·Ä®EÙ6ªÎ1•9 çt«Q¸ã·’Kyîµð&C@.ZÜÓ¶ðoh H_4Y,Ý(¼Ò€ÖP¤€)O¿6F­„^õZB+)î+¾Õ(xxÕߚ̑ŸÇ¥FÅE‡ô!ܺ[ëÕê³B#zßp™ZJˆÔ<€m-TA:Q—ë}í1.Ž4Ÿ:H×ô‰JJ_÷„ŽbΟǵå˜%äMz=!­–ê’íø]ÿ–ï@ {<»P&ØD—nSª×¶ˆœÒÉ&½‰¦èôó¨_L)4•Þ{L»-¯ðÇbaùz£hi ß­)]7ÅGû"§7…™ïnB&%Ç~CʨNåHJ[¢÷Nå,¸Iéøjq€¥È²q…¬ÈŸJ¥T4äŽÑjŠ%'[cT¸ÔŠ+§bw@Vüxsáf]·’yÒ™ õþ]„Çá sž šlÖñÆ|ôõõ™'»ÆÛìÀ°rD¾;÷Y~M«wßún/†`I€æšÓs…ª*“ÉÛL  [ Ö¥h¥Æñ²N½Ni[ ÏGΖreŽ#Áî‚Vç¹Úý»åq›}¯Êìªî 0Å' Ö°ln2۴rHêó•™^es+‹ƒDmS«ü—´_Çv»l©M^ºÝ1ôL¯àAVnvu®Ú쥪dÍ!+€¨vYÊVÞ0*È„$N—Ã6¶ìd),á'²“µäXŸo ïNæšÍrr|ÙØ‘1vS,e&žq¡cy!|•Ø€Ì$—ЮˆThX¯í-wµ¸ù ×Dw™§ÝÓ yÒ™ -,·ÙL{%ŒuK’øt‡îÅ/Kº•®yrGqv˜Ü*…ôÌIq Žgâÿ¤ ¢(÷¤T:÷¹[‚¯ä—O€‰[š¹øxQæÁ'4qèä QÈ—8­Ã >IœÎlø‘TêÊL? RP#¸,uå†s“é$3q¥‹¹á´)L}bn8MŸ©¡L~¸œo‘ï„6S*K ®ÄX´ ˦„ˆ³ˆ”(Òïû0gysÇ\DF鮚œdB9=Keδ)+Ôe†-ÔÆØI¢$mÓÄ"C‚«#‘V ®LSR˜U%R™kµÂh§E· ±á‚y9ë„ë5ä Ø"É:‹k ÷]Hinc¿ÛÔ-)re)#Ь(êTô’帡µS2mT¦aÁ`¡“6ûUõžäB¶¹“‡—îa;AHÃÄØˆäyEâ™ä·Ò‘Ù ûæxƒ»eï­ýq)ȬUð“®îíXèmÕ$^ÓÐ"èÕ'¯yÐ+Æ‚P]±‘ ÝÁO(j&^›¥æ—à^ùö˃SqÜÄ,=.=ÄâAÌ®9ˆe•VùŒH)6ªpƒãŒi‡`,Ýžì^QèŒf³?|I_ñçïÿêK†N½˜‘—1.¸ÒT&n@SÐ+ÐE0Ǻ⩌p“™>=•Š”+»Žž·xçß{‘ô€7†.Wøù§2ðfZµÜ´ìÖXú *ÈßM‘lY¯Úû!o‰™æ÷iø£-ùC¼%èm{ÿñ–ôÐm© ƒûã£ÓC?ÛÒ玿—ÏÂ~ʧѥ?þ¹?ÚÒ»O¿ÔÒ½v¿ØÒkí~¡¥×Œÿâè^3þ©¥«².ù»ëû‹@±@ÝCeR–òa+Ùú“#ËŽòë?ÅrÔx&V®±Ü<ÍëW1‚GXÁ“}LJ•£(ú-kº*FØß”_¯*1$$Š_φVùϦ2‹Ù‡då½0(ÄU–b}Iá(½àö™m$°.VTnÀ|’wDÕP bªs¬J„ûÇ—•O Â&eœ:nZMVîJÃsôk}QacÄ3¬Gqªp¥y„ Lõ'(åñtöÞò©â_‡ÞÒ_=,Ë+2ù¸ªB)9ö¥Òª¥¼æ§ÎتíµÅ@IæÆå^\š­Ù”E@šî¸ÅÀåÛ»Ë ‹ë‚î¦]âõ¤üÅî30:A$«Q3œ "Š‘ZC5™s™Ë(3©|‚×ÊBm{Ëä_´ ÏéÛßîGÿ”:ˆz¢Ëâ@Yn$/eb·^éÊèÉ'‹)9‡¬.R¬äMÑA# Ìk¢åõ9_×)é.hªWWìÆÌà²Ë)*¥æëÛÖ-W7—L® '°6sJ^Ô0I5!R³SÈÓðÕ²ðî«–"-˜NÃ)YUUþ±©j2z¿wm¶`eQùU/j¹÷:Ë|×â…ŽìV0ÓرnæwŽ-†ÍôS5 ö…Õzœ˜f·¢Q—k©pãÞ¼²¨4ò9híZ²L TËðê0]¨~¤ìî1E¶I]–@az!4Äà¥éºgTܜݿm…M´j•S² ËWmÏj÷€!4¿µY¹È Vµl: äÎ*¢ªU«²l4øj7­¯Ò£µªx½K‹Cq&~(.©¢áSæÔ?5ëп<¬ÐVeSVµbxuÜ/åñ™JâÕI9(º§£Š¢ ãÊáë„”b’`Ïdâ !Ýßß]Œ)òÀ*XNYÊ*gw‚ Ã#NªñM)ÊO>üzx¡ó)í” ´ÈÝ“ö˜n_Wyt#,ËRìyD<(…¡ô eX*ºêxê¡ø¥ªÇêanŠÇ¿G3ÕÃâSÍo7£;Li×<Î]FAxItÙ¨j·zä¸-ÕòòõHDfu¨è‘QÊ)K\KÇN‰YÎÊ¢¨ûnE^›á^`¤Ý4Šçz2Á£º¦§ƒƒ‡ŒO ôdy•¦Ç¨#5'] +yÞ¬,ïÔŠ|ÙR×/mÛ2`¾´â¹$²Ü§#uç™å÷ñœ’r|¼ZåÎäW ñq(UÈì©$ Ù½}Ùµf Ä=yFŸì>Âé7ý̾lܯóÌ"ïü׺s >YžÈÈÀ Ê ‹³øÝ6[„Mi~-/Ë“Z§ß½´’aŠÇÔZ2qj+~SÑV^YÿI?éÉhë”î±å‡7Ý‚2ü.ž7{Rîú§Gö|ÏÞ»ái7bLÃåœÄdŠœ¯¿æfÆ×³E“ãFàÓ˲ŽUœE Ç÷“UÌ•½³|Ìk èBùG²…~LÈØÌÂýŒØIÀ„xà6‚Ga;¥a ŸuÔŠÙ°¢<ö ™Ð¸S·òrYΙÇrA³tœr[¢gV Ó5ŤJ¸Åo=TJ¯¨Õòñ‰àÅo=y+-Ž»¨ù]Õ')8¢yæFt¸Nƒ*ÚkÝó?b")Ò#/‡OßpŒ3̸áW¹°.,¡<㚯N.j+–×!Ñ HD “¼›–ÊýÁÁ“JFF6㘧ˆäF<òì¦èz<Ýr&¥(“jòôkÓÜmð$ë.£]  @SÎÂÙÍÕ“_2œ¼|K¦œ ë±èñâñ65ó¯–î÷&W5V[Ýß–L+¢´R>X˜‡&štÍê¦oJ¤±XËŠ{´¸_¶–%æí¾[òóÈíïII³iWW„A6Sœ‚È\D’ ¢Ê{ÜesÂ’zÖë‘D‡âª¢áÈR åâêñ) „ØÉ÷ 6Åû’¥PÛ …Œ1yžÅä>‹äžîdš&¥Œná.j{ ûZkÌyoØÄº^ÉÜlWd Ñ3F¼ÄÒQ,•á[iU]'«÷²j³)¾R{‹ÌäÊóBM™D)W6;ºU¿Ù»,–ùiqûw=Ê¥·ˆ—â§G’iñÎÈÀ®!Ù®¥€Ðn›Jý®Û„Ó¢sO R2]¿áîµîÎN ‘ÆÝki2àñ˜ù%EÜ©K:ª œö¸ŠêG91 8¬ËÜî)EYU·…ƒXÿTïµâq¯çIÍâÊ÷.àÅ´ú™2$B8L&”úþ¦¸ù’”ïò =?éÂ^ö̼2qÚòÔŠnâ´°¶lœs]ÐmœþøIrѶíew mk¥3õg$q“Eƒ2š«½)%ÄàPRQOøíäã«Ò·ŠŸ%·qëj„]‡ù°–S’nd*ù¶lœ^ýFŠÛ8ȧê–Ù8½®ðØØÌ÷E^¤ª";‡ `”:9½çÀU©Ç#WÙzY9ý8g&¯×:2à&NQ´F&N[ËÂAêµMcjÞʤ™8JŸéýÌ _(«ÄÇM¹í«_î^Á]G2y‹»†×·#ý±ëѨR]B³æ ô”CïâÔ E Œu3qNrf׺Njh·qP¶ºßk€k)Œ&pÎÇI¦{â%°m#âÖ}u™cñ对rm;¥úí”C‰ú.A9h·Z>ÙÀýë…s÷0n²Ç¸Úºì½¥ûï/ð}ôø¸,VÞŽ9fzkÀ¯…QVGRdöqo\Ï/±½˜£;î3¸…sò´»…3渔oKUð„Ï“ÔPôÍÂAöy·2Ì™'å£T$% ë샕ê‡SRµD#=¼)`^È™*4AvÇL^C¦ îG=/ë…ןö¦¸þ{(^ìÛ‰üñ¥Ò.늅NNOY8,ß_ì®#»…3㲎O ëX7ŸdhQ¸©æö²Y8HŒÑ‚¥xòŒ.WK°fšvÊ@¤°²qNq ·pæ—=cÙ=ü…3Îé©]/ ç¶›2ìù•¤Y6N[QSX[‘!XF®*y·Œ\Ñ#¦0ö§_Ø:ŒÞ+ŬœžB”•Óy3ðÛ1rºëðvE¿DÕY8¸ÓBÍøÌº& ¯ùòÙX>eN°d&ߎ…ƒÜ‘aªôdÙÈo ‘!nßœl ñLH¢C‘Òízöt7o­s®Wï¦hÄNºD™7}Îp™yƒkUnw(M ð]N·+9ߎ…ƒŒùZ[›tä¸HaòTËÌ?c•ÈS(c²pNò ·p®‚2q˜ãv8…TNöK3qÉCéñeâ ÿ‡›mfâ q¯,™8'³ˆ›8¸mçV¹™8¸‘—^VùhþÓ$ƒ£åJ°Ò£zªì\(áÏ„}A ɾPø-ì^f¼¥ —{œ@fwëR[™ÐdæðÙI† p)ÄcÎø¸)ÍÈ Sœ‡É7(hß@ È^”2>Oò]Ù7(orTxò¬'ÊfJÍG’}[ö .™jzeßÉàö rp¿,Œ™ŸË_¹‰TÞbO²o +ÞÖÌ‘‡rÌ-QJTð–KêëQ™Æí›YV8lhàœ¤E1òÚÿÈÀArt7¥4§í8¯ì¬âæsÉ÷ZAzÌ—Onözí&7êqzµ @q'û¡LÉŒÒÅ´ïoŠ»6’ò¦úÕWQC¸¬›£¦ËúßÂÀ©ÌŠjWÒVwµXŒ“(ˆb1j[æØÏ¡²Æ¡À2H—F‰]3|ÓvJ L{(1í ³vtIñúDP¾tRj„æY€…R¸t’Rç.$odæ€%Ÿ†”¼n}Y|,«Sœ•!øVQy±3ŠŒº¯¢Ó ºrD\‘ÐB×´è4”²pß‚E§Ûª†4;-싇–Ç¥l2Ïp08Ù)›r"·ªµdc¼ŸYîÊrÊÈñuKåÓªGxWv¬Ë¥Ã|Ô3‡™gÉ Nm)Ñn„UÇ‘®ä~›Ú'›ë³®+»¸Œ› ÷ÜÖͦ´peQ)ÛwVšé๿…yQ‘ªÜË KkÆ#¼·~¶;%§p:¥¾í^ñ>ö[>)åýãGö–ž5 9\}àÌçXSìMN=abC—ÒûG;n²»lË2"Û›l›Mia˜ÚmÄÂTËòÞÃÏa¶Í•ì_¶ oõû¦HVÓ`<ál{DqœJ¶Í•A@¶MÓ“¢J鯟º7•vT8t .xV!7òSxŽ™uXB¿on•TÈO7µªed@ªü¦xõÊC ‡¦šIqîõ%d¶KáÐa¹4#<ÏòÀ²*·›ªBZ;¯³8FÔ4Õ Â:‘€HBIèNãb¹1êsÙ¯LZ«Ô#Ì&1l;ÁljÁápŽN‰7LùáŒ<)ŸÇ¼"×À9•9ä§v„ÚM)!0)ŒN¢oÅ©A¨y\„Å©)¯Í·0n(Ô<âÇâÔ Ô\µ²85æ “)\W èÝâÔÚ©¥85]úÿæ …–«ñŒSë—nmqj¬ò#ŠÅ©õ(æqjH9ìËß.¯³ìãÔ‡Ac™Üýíád'Õ€‡œ!?Áñê¬jY Vz=2éP<8ZŽLü¨`Ï¿¥vO†£èåŠÈ³g<‘¬–.ðP?Z9WÒY9”7n7Ë¡?£Ì&~FÙMZ9[t„k¬&®p‡›¤èaaÑʹ‹W˜•Cñâ«E+‡8ž0j† “ãÙ!/Lž][VN¡,›‘CÑ‘’ä„9Šœ˜ÃB#“ö-ä„Û#*q¢4÷fæÔqTÞ)ÆxÊ<š™C™àA³Ä)5*±ÒÌaQ÷­(ýJ‹cfΦ„Eƒ¤ÚfúÌmÒk`–ta„IƒÝ0"Š©`†c²f䰢ͦqà?);Q`Gvˆ2Į̂Þkj~…qåVG·B/Ë3_ÈÀ¹¤ƒ –ìñ¹jâtybÙ!,ôs\:YÅ€Òm½\ãPæÛËÃ>ÏxµI†üë§Ä‘,FrWcf¢œÝ&³‘ú:|Ð,`]iŸiBQ¦i…]ÉÒI%êGk¡¼•Û`EE(_í¬MÿOqW¶dGV]ß+üõXEP"Ï'3ñ“m"A„IÝ44RÓ¸ýõ>kÏ9ݺÕ-hx@µÉ{æak¯£!Ea4¨-€ØT¢´RU2U=Ž%4•²j V5‰ÖÐi•ß è´ ’š% Ó+[ӵțV—AxÌ54 e¼6­Zò°bÓ ¡<9æ¹D±iPžaÓ¬æY]†M«š–lØ´Ê<‘›V%× iè7=mд*YÉM«š÷«Ð´jÉÂ÷#¬J‰Ð4()ãÊ i}ÑñÓÑMæe‰`RL.ˆ|òãÛº]ê43w½aÓ ¡,_æAB€;æA’rÀ¦!ÈJ¯K6Í?QlšI ›‰¦&¡5æ¡ÉšP<š„“ŽÕZ„„:aØ4t{7lšŽÓ0‚ô €¡Ó ¡L7…`Ø)­ÍÐi6†NÃdÑö†Nƒ„~eè4HèUoC§Ù:­Ò0hýé¸4ù³Úì׈HÓÒ‘¦5:"M[åˆ4í‹#Ò !@!ÒtH‘II‘†¡¥÷$ ‘¦bˆ4è¥ C¤éÜ;" kž\G¤Õ©‰D#·x©î_G¤!àOC¤Õ‰ßåtDZ¿Â@`ˆ4@=ÓÒ" ­Nüž¦Ò? TÒ0FоžR¤ARVˆ4*±FDšKT%p‰†:¬ƒ¤Y]IC{Êêô-tHšöÔ!i\#$MGÐ!iwŠé$ s£˜‚²Ú»IÓ]è4]NIÓíã4œ‡,Q76$mŠ4=3#$̓ì*‹&Ü*íYD¤áïyŠˆ4å§iP݉ŠÉiˆÒrÌiä_ª‘Ö$¡×iM2s‘ê3BÇ"­±/= ÒÀâLxmƒ¤5æ41 $­ O‚CÒA‚ &~¬€GCPfH \þŽGkB­àx4yq,àÑ콂\ !u+ØðhMòÍf 4<÷ÀÀhèâ±hh2´éšg¬H–¦ùÊD£÷nk¢éX;­i&´AÑøÙ³€Dkü4v@¢Ñ“¸9\!M’щ†°Ý•†Dƒ$¯ hX/-"ÑèÑÜ‘hMR͉°|†Dƒd˜#M—ª#Ñ`‰rÊÀhXàKÄ¢A@g¡aÑàc¥³Ð°hâu X4ì}ãHhôds ‚±hôÌo‰X4ÝÃŽEó:`ÑG³M¸ý E%'©+ *y°ÚùÙq£5Žœ0$t >êV#M¼Öá^hŒë`4~³.`ÑðfÝ™ŠEƒ`ŽP4yÕ.\.Ñ£Û$E³r ЦU ‚9Ñ„ø0 Ѵ׎D£ rŽH4OG¢a̱‰¦3åH4MG¢A2·ˆD3¶4C¢E‰ Ñèí;Âó[so]’ø½õ¾¨8„Œ5°s‚“·‘üýâ¦Ü.•t-O½¸û[êxqãdvãJK€& ƒ\ë¿{Ú ýÂÚ-%lúÁïÍ|v«¯¥à5”¥/ˆßÙ¿^ÞTœ„d 0ÃÛµ„p’ÐSVEC$©‚&AF‡.Ÿe°Å þ׊fO’ßBgS1hYH¡+Nj¢È¢šTX (Îò²CÁá…ÓÌ&wÅqOÙ6©òÁSñøLätão ™ DÏ´pɈ¢-Á ë’ÈìÑuPÉVZí”Y²åM„ V ¢™™y® s“““tIb+·In`eÖ.àEÍ‚€ªÀ-99J&÷ V”òÄOCB25VŠDž+8SȆ’Ä~ËÎ(Ū<ÁÕ%…Ï“®Ÿ7æhI‹ ¹‡uÉ(CžåMöœÄmWQ"êI’C+J$â–afí´æ¤k~â¼¶Š™,GâûÄj•3Í Q«Jüly-!Ú¬(È„€„tåJËi-r— a J’P÷ïz…çN›CÆO…G­m\å?©:³â^å‘…1bÅõ rá´E¡§ëzÉ„ž~H\ê82£“æ–WäAR¦å¬ã)–”](­+ƒä$.|ÿפü“¼«Z…qD#27pgºZ‘Y¥ÁœCê}ÅëÙ”£O" =Q…ï¥Ûò4…RVdæRj¨]P$YTnŠã‘ˆ•¦ªK2ÓKe1+*Ø(ª<¿ÀûTþƒð$.§²ÓY±‰+gžþïÓÒýU ¦N)óVE¤JN.ù¤*‚'ôÀ²Èô"äBúJ̹xúovJ–n%æO}—’h=ÃDåö%Ö”‘gÌ[±&"!S‚±.)˜©g$# Ê¢â2S2‹_ó`Œ£¹kÞ®%uÖ£,†,lû$¡l¾ÌþÙ>^ §>d ’¤L¬§óbÂó³ä–,Y%”éš6±ˆ/Km‚*9åDnTl¶Ø»U8ŽKÊÅYfÙ:£…´’ÌJ%A“|Rm²8ÕÓG Š›TÖ+pNÉ:Å“Ãä‡ÒŠ wb²ÊÚ©Ú$ûV»DNI;~…#¥K’þJ–{ÎÜ\¼(•ù¨•UÛˆ–Ö…kžH%J>aÀvB†ÚPYã«x]œ:9ˆÚ_eÅíDæªç…óÆáÅ®X¿üD [lÈD+2‹«ÊÆ le9aœ!hä8„ S a{° ÿHM' Ôi’ó.Ñ»^pjól'#é·”«<¶B’l’Y2°—zx¸ý7%#¿…‚ò-KèÈ…f$³|3ð…±0 oTŽ"á$®®÷O|á. 5¶ËZü‡U!z@á3ûƪW;_Ó³ê ¸É—Ðd±1”mM´ˆ$sVyV³Ò£«\ðÅl]DÙYÄ¡æúIIìí­ w$æÊ,ð’*Ý÷M*rÆÒ"l¢PU.9ªÕ…³é’ä]TÐ;ò­§wnÁjrÍñ´ÃÓJIôK•#¸´I²ßg9ÜË”äKÚž‰J¿±`Óu©ì³60±ÆŽòÀH… Ü„q‹YØ 7šÂ Q:ÿ•ܰÂ*ž+ßGY¾iòdsrUøQ!Ö™¥`>íS’—*‘°’D¸?IB\1´[Hø±¤A°ÁÐ"V$I*ó -&`V"¹D X£rÙð@÷C–Ñ%ì˜"”B£j’&LJK„Fi%)y+¡öÂ’øÝíÐm}qk£¼e YUn¢/œ‚ƒ¿KÄ¡^›œUP† xòLs4âÑ*¼ˆ8àU’S“LCñïW°)’aP9Lq¬’aƒüŠ'¶ ï´³$Ùó'…œ°—X%m•nS>ò° Jf g¢iÍüjzˆ3-M o"%µÉ½¨º®D  ΚD,‘A¢ %Ó2«œu Xã¤MV›Cía’×}…MË5í±É‹ÁÉbud@¢¥´ÃK9פó™sLØQ•“p —ª§+Ï0N*µxåd £XP¸ŸüüP¾Â(_ޝĽÃMá’y? _+Ø@¾R·c|96 ¾wŒ¯vÛ1¾_MÇøJl<`|ušã«S)_ ŒŒ¯=Hfß(Ù`|)q”¨•2F†}5cŒa_­gØW+ÆöÅŠq‚}±bœ__­ç×WëÂùõÕ1~}5[œ_ß%ʯ¯†Œóë[1ƯoU¿¾2ί¯†Œóë‹!ãôújÉ8½¾Z2N¯¯–ŒÓëÛˆ½¾ª¦N¯¯j§Óë«-ãôúª¬;­±Ú2ί¯¶Œóë«-ãüújË8¿¾¢|__ñºÎ¯¯(_ç×÷o”_ß$Ư¯HOç×W¤ óë+Ê×ùõåëüú *u~}Å:¿¾¢|…`_!¾Î°¯DgCVŒ¯3ì+.Öö¤è ûЦ5†}Ü:þ‚r…aŸ »N¯Ï·¾üi8WþSo?+ÊXõ­:cÕ·«¾õÃXõßë¬ú6s kŽÜ&ƪ¯ø^gÕ·©0V}ø:«¾M»*Áâé7V}E÷:«¾¢{U_ѽƪ¯ÐTgÕWp¯³ê ¸×Iõóê¤úŠî5R}÷:©¾‚{4Y·Nª¯ \gÕWà®±ê»@u[—*V‹1Z}«ÊhõÛë´úŠí5Z}ë¦Ñê+´×iõmü&‡Ó3´×iõÚë´úºaV_·žÓêëJrZ}Ý5N«¯Ð^§ÕWh¯Óê+´7Òêë­æ7X”Œ†å]±ê«ã¬úª^9«¾Z0Ϊ¯Œ³ê«Fè¬újÁ8«¾Z0Ϊ¯Œ³ê«ã¬úªQ;­¾Z0N«¯ŒÓê«ã´ú¤þ;§¾ÚΩ¯Œsê«áœúj‹§¾0ΩoŸØåãS´`ãÔWÆ9õßëœúi©Â}Â÷:™¾B|L_!¾N¦¯_'ÓWˆ¯³é+Ä×éôâ;¨aÊø^gÓW|¯ß ðu6}ø:›¾|N_¾Î¦¯_gÓW€¯³é+À×Ùôàëlú ðu6}ø:¡¾|O_¾Î§¯_çÓW€¯óé+À×õßë„úðu>}ø:Ÿ¾B9O_!¡Î§¯°QçÓW€¯óé+À× õê„ú ðuB}ø:¡¾B]P_¾N¨¯_¿àë„ú‚²u>}â:Ÿ¾ |N_Ñ»~Y¸dÞ`~Nß 6:}­ÛØôáëdú ñu6}ë·±é+Ä×ÙômD•M_¾Î¦oSelú6Ʀ¯_gÓ·E`lúQ¢lú–õa”\Q¢Jô‰&5[щ&5[щ&5[щ&%]Ñy&%]Ñi&5]Ñi&5…Ði&5ÍÐi&59Ñi&]¢4“š®è4“VŽÑLZ]F3©éŠN3©éŠN3)éŠÎ2©éŠÎ2©éŠÎ2©éŠÎ2©cî,“ªž:ˤªžÎ2©ùŠÎ2©ºº“{iÂbS…q~N3©ÙŠN3©ÙŠF3©fŒÓLªEâ4“jÇ8ͤ£4“&1šIUhfRÕ"§™T;Æi&ÕŽqšIUžfR•)§™Ô±qžI5eœhR.§SSƈ&uœhRu2'šT»Á‰&Õ¶p¢I`'š$e A·)&åÏjs_#¹¤•fä’V£‘KZ«Œ\Òúbä’j͹¤H«aÕ•É%Õ˜1rI›#—T[ÆÉ%uê\RÍ'—TsÆÉ%ÕœqrI5gœ\Rõq'—T{ÆÉ%ÅžqnIUô[RÍç–T{ƹ%Õžq152œ[R '—TcÅÉ%]bA6“¨gÓÊñ ›Öeì’jÐ8»¤4Î.i5vIµhœ]RGÐÙ%Õ¢qvIµhœ]R·®³Kê&tvI]NÎ.©»ÇÙ%Õ¢qvIµhœ]RÌÈ.i ,v•EÉlºÒŠ\RÓ\R5.'—Ô|E'—Ô|E#—TÑÉ%5_ÑÉ%5aÑÉ%5aÑÈ%5_±åì’š¬èì’š¬èì’š¬èì’d 8µ¤Ú N-©ÉŠF-©)…F-©Y‡N-©©ŠN-iߨíãMƒÒr•ZR3ZÒZgÔ’Ü|ã•KÆi%É’qNIµdœSR-ç”TKÆ9%u¬TR-g•KÆI%Õ˜qRI5füQcÆI%Õ˜qRI5fœURŒ'•TcÆI%Õ˜qRI5fœTR'•Ô•*¤’jÉ8¯¤X2N+©–ŒÓJª%ã´’jÉ8­¤Z2Î+©Ëy%Å”qZI5eœVR·°ÓJªîë´’ª­¤Z2N+©–ŒóJªÞí¼’jÉ8¯¤Z2Î+©½óJª%ã¼’jÉø­ –ŒñJŠ1á´’jo8­¤2Î*©FŠ_.ñ¼I‘«¤l¬’Z·‘JŠ!㜒jÈ8©¤uÛH%ÕqRIP#•TKÆI%u¦œTRgÓI%Õ’qRI]N*%B*9Üþñ&©/z/ÈWÏ%~/Þm“ùWú»øŽÊÑÒÜ÷L‡Å¼r£™Ì¿Òß…¯†[ü÷×7¾IüoùŸooÿùùÍO~ÕOøØúz½}þÅMâOn3%ÜzµMåöùÛ›»_Ü?ÿ#ÿI{]+Ãà›\úó@@»®=ys7Ø—¡h@<û)¿;/±o¡U‰_þëó›_ö⿽CóŸ=K’²R»zAÿÛ[ôáÕÍ?º©ã4òûŽÈ…¬öÿê×üÕ/1<0"b$t)}¹%ä,öÔ?˃> à Õ>Þ0Ú‰\Ga«.Ñ|ÿÕ ¢œÿWYaÞÖõææõÍo~tûŽgºý«Ìë¯~Þ?å¤Aý1šU—(Á2¸¢ƒ·¿éåuò¼qû.ysû¨:&=´öS•UŸnò’ÙÀ¥ÖOÆ^ßÒè8›¢1ó"IC¸£–$N'l£> ÁLå_¶®K“ƒÞŒ\2S³Æ‘9ÂáìxÚœôqß¶}û÷­=™³OVþµs–„f¢Ñ•Bs–9un)òüü"ŠàÈ™I0°y*ºŽ$ýágå$ä¾­êâ”-‰S8ƒ.LMèrxÊœíû¸oܾûæžÍÙ§*ÿÚ9“²ó. Ž@¸‹¤9Û,£XâVç± ¤ÕĦ1¶ZjºfÊRiºpeÊä6xÚ”í»¸oÜ®ýûÖžÍØ'*þêMF¶Ây1Î\ƒŽpÕ£²ßÌ¡›š@m>‘ðáÐ%ɧۺ®9˜â”Õ ìsí©»lßÉ]ãöØ7÷t—}¢ò¯›´þ·û á/O‰PîET ›@oô'§.³øg¶_b æ© Ï‰½Áј%ÕKº~–¶½:iÓ¦ ÞÄã¹ù¾¥>eFæØjœ‘„Ñ‹Šqö—4Òn”Uù×̇ü2LÈw¸¶½:iÖº¡‘—fä»—ú”ˆP˜‘RI?P¯÷üOi§Ý«*®™ùe˜”ïpÿl;vÖ¬M7¼•—få{û„i!¼ožÃ´¨äM hñONÿä†Ö)+áS¬âŠiÑ_ú´xYOœ–б³fmºá­¼0-ß§Ø+§en3¿€™(TØkšvH”ÆY”Ê´…Sœ$óÜXñeëåX²Œòô(îªMU—fˆ–9Ü.K?#èÝÓI8ž0AG]ܵmßþ}kOfê“•í”!Õ˜xD*ü½¨¯ŽÌh¡œHERHQ-0Ð$µžH*»øñ+¾½6u]3g~©ƒ&/Izʤtr׸}öÍ=›´OUþµ“Z‚ĸSãÑ™˜Q'ÙUæT²à!&<Ë ±½ Ûá%Ù}¿©éš)óûI§ šñ‰÷ÓA÷ÛµßÚ³ûDÅ_;a3åT×e*lîÓ98 (ãE3Ð#ÎØÃ=¸o–€ýæ¯edZ$GòrZ×qÅT…;KD±”ž6U»Î4nÝø}SÏæéS”-}9ôX÷‘†E•ÛÊc Þ^(ÈÒõgwÿvÿú¼,cºûÃýC·‚¸×Ý—÷ˆ”næÞýâ±[–s¾û€¯‡6.ËÝ«û‡LÏS,wÍ?þéýŽï~*ÜýË=y§Çe]òçþ1W@f,8|ð–ë¨9ß½wé"¡3Ý}‚+zåîuh§6®Ì½ PÈMó¸êțТXˆ´tNÓ|÷@ÿ®àò½ûˆOS-]þоoÃ4´»?s™Ã2§Uùñ›w÷ÔTOk ]~ƒ–#AaÜ ¶÷\M©%õ¢«|{Ü9çAåãܧBš’ÓŒ¦ÐÕÝÈ"´ö&Ñ §qÖ¾·9¯ûþÕýïžÿûM†ÿ£_ÒbŸÅ®Ïiƒ÷«QuC±Ô§¹”¢E”Q›™ú=©“WòÔ¢ø]øá—.ŽM~‰ZúF[¦»ß‡¯?÷¯_`„@9}÷'gôóA;úßæ8&îï¼H†ÖGZ[§)ö ‹¸ÎXH4¨¸¿æ¹×ã­ ~¸%ÎVß.¯-sܰ¡aÜ¿ Kå5~Þ¸‚1qܦqÒã”…VÅÏŠùKX ñ§Û‰@ †ÕÚx±îÛzê鋨¬ÜûÒç*ÎÂûÓ£ ÓÐ _ Ūš‡L£«vÄVÇyˆ-y¸èµ}óvÑË"èHh“FÒ $Ÿ´è#RFÝõÔæwa€–C?‹®ŸV°e¬†!L¿5ý%l˜Ç¦5¥¸Cáa§Å}þ:ÔóÌëç}'ãCû®6Ùwÿ¯æ>áe\‚›©ÏYZ¦K˜üp <2d4éRLîˆÛì‘@ÿŽ?Ý Z–¶ú)TË«ÎÙ·å`¿oÎٯ¾ÖßÍÛža|ÆÓÝ—ÂæÆDy}ÐŽ?´c}üQ%%?> W/s”8Ë“GÁÊþ1o=ä‡ÏÅï®^0’¡ÆÓ€/PLÀÁ¡¸YàoÂèý!\Yÿ·/{ıD³ ›i¼û†ª)mÜv\«‰‹2–}|ò>’ήï¯õíÏ8­WÉ×,n}nÄiX)‹'ýf¶·=ÂÚì‰Jd¼clß;®±›+«y¬r›ŽJÆrøVJ›Úêä·>=SÐârˆƒ°/o×õøyÜË_öVÁi”Úßë>ê+€~Sïþ‰‡¤…§Úk¶mËÅ–@Є͛ûë]¯}ÊØü¨8ýþ“ÛTÚWq¼%â…‹ŽÚîÙF ûò …îé#ï:qW_ìÊ×u \íE^³èóFjL?‡ÁÊ0ÓRÆ› µ®´J™ˆ ›îÑgèt‰½<©ñ+©fX¶ ±³òì§ïl³Å®Å“î[´ ä™m³wiLZyòÞå±ê?î?BWÛNKì;_¼“À)9N6+ã|´ùT•â¯×ûæ8µeZÝDxã È-§÷0Tk7ôõôŸ÷ŠÖÉ<Úq³|þ˜þwÓûÕǨ&hA´9B•¼#¤ñëÛäÚõNœó©ráñ¯2¨\bˆÐÉÛ­ã?É·©l•xtwÑ¥„Ç­»Òu­V@æ÷Ñjžù `’ðäY®ùöùÜ<ÿÑgg}Ýœ•ÞMš[cÛRŽÎ8ïW¦-ó¿Ž{•¢·¹Ÿ„WâF¯ŒgÎûã]Æq§] ýk>Ö¸W.PÙŽ­m'Ÿirë¥É§OzÕ?œ…Mm_Ò÷Ñ’ûE$L*+ÌÈ2´»~s¤R}S¹fP¢1ý6ûSž¥ãÃìl‰Æãvì å˜;¶¾àOW!+fÅPmKµÍÓÕúBVh›Ó'BËHÓöRÁ¡‘r9XÔG{ü'¿ÊKtõâY€yJºç˽9è‡ÓnØ»|,.½ ˆñv÷‹{`Ô ,ªËÈk U÷Ã!±ÝWûðÉÝÁeɽ¡v_—ÏC_ŸãŸi^–$]isK£\éeX–…muøº»:,â¹ë9Râ4 EŽŠi)‹íiJcY¤…4ñòy«tR æ¶´yKƒ”Ï{y(¥ßÚÛå j¸dnß®q¶ÕÜwÑ^^›S˜÷~õÀ,™øÜahô”x®gŠÙÉ©±¶8¬ÀÜ•š¦ÝLOým-,äüä!m”xûÝ~vfÐöhš …þêC5úÍ ‚¸TÏâñÕ¶µõèÄmú5wrXêîPŸØ[NM"Ö˶:ìêHU¯B×Ðõ|ÃõͧïɄىƒ.Œ}##\ O /àÞöò¬éÎI5’­“{Þ–íbþtk}DžœR±éPÇ[Wއñî¿îA·µL½üϹö½ÿ?ôÃÖ†™¿¯ÛÎQ5‚ú²#i²ó¤ñ–¼ÞšJýW'êü®c^›_P±«®½?òÌÅXÑg;ãPA©›òcޝ£}û‘û6ŒîóBi<U¡¶òÚ¸ßÏÃ4G[ð%—‡ùì 5±}^ÜUSÙ#œjXš»êú¯FæÄÂç"À´Ú8ÿöEß9ýtë·Ýxaç ⦓½ÀÍ_[?gúȉéºQ¼Á¿œßû›E¼Ìeåÿþkê»çgÔ”Ô¦nDê×;ÿ¸ÊS¹¸§ˆ÷¾Œk‹ûÐ{°Ó,›­íN-ª{ÝEPÝOã©…•Ýc÷+uY]ãiWÖ·õjHûñCËå¨rA²iÑ3¦ôÏÔQÒæÊW7ZÓå8êÙMñzÕˆmì7îè½÷ì$˼ñ»QJ=ÛßÙ£¶÷%H×מßð™ê‡æÜ­Œ—^æÕ„Ê ËÁÁHºÜu#.9Ü­—`ÔSÚÁ¹µS˜Nf]Î-àÜ*¨s¹ ²r×þ¶;WvKOßÁø]]ÎCë¡Á×cßµ¥]¶4ï^ž6?ã+<òf«®œjTT>ŠÂû½¾]ª«•ý2|sù²ÐÒ³7Û6l¡?QóÆ´Þ³»"}Zß;kE€Æ·î”[¼¨ØÎý¨ñª9è4•ýÈ-}ìûÙA6‡?ž”nã™eñ†þ·]¾±ãhÏÜ/¼ßÞíæ‰>cð2¬ë3ëåºZm¸q••°›¾Ñ ‰;(:‚NŒNÇèŸóÑ ýDeݸvŽˆ ð﬊ )ýö$¶òÝon9èHÒj÷ÆR¾ÙOèÖùýÔZ{ï×.oaæõþÛÜu`ÏY°`Ôú–#ç½w?;¾/öþUªãijõ§p}ËÁkÄð?‰u»¸ã­…KÞ`˜– Áž×/Ô¸YÎ|Þ_+Xar= —«q¯h0O£®!ÄÞ÷2VøèN~¶ “âˆ*ý8Äa©ó æã# ÙúP.D`x„àS7êO~5åèWÕDª· GŠ,u2RÞçW\Ë·íÙ2•y$W\¯¼+Q}ðLX¤FÜ”«üfXUÓ/Ön Ý"—¶‚}ò¾=@¡í¾‰¿ý©ó‘:ÊO Ûæ õYÆ<ÏéØàšjšÙÚ(Ó¨‹í÷ipÇ’»]HÃsU)*¶¸Ö¶A¬ _n**ÏiùDMe0 ™‰¬ˆvceÌÇÀ’FÞ¾±yÔó†§G€þûpä‘'7OOèN·ýùü‘¬n ð¥Ôu°!g ”Ö&ð®?ÝÞôçÌ{N¬“M@gRÁ[4ikÈ^Ô§¯º-ÖÈ\r^.Ûø—ìxä»®}b§D#dW6¢€‹ž ÿ~ŽO&­—¡‚Ër‚ >:´Ö¸G´ ùô:—îêö§êRÛžÚ(¯ä-J¢â©«åâå_éqÒñ‰ çÑ’Î#R1yo¦e:ñÞ;dV?¢©è;dNgMy:ºèÐ)ù çò#ÀyºÁÆÄ ïáÒù0ãY‘q|ÊqWÓÆôÒÎ`näÒ[¡h¼t‘ù¡€­ 0Œå°+N#Fü²¢8:Ÿ‘g¸}µõ+ÿBB ý›F˜ÙõtÇM}ÿ¼&g‡V©Aå3…äÚóLygèg»ïZû™ú±s}è©Pð¶ê2nv±ì‡î'¼g:Ö§Ü:äÀˆ«jsëðÅù襅­× .l¯ãݯOÎøý*°QÃò‡q5e'§üÖÄcÄ4žNvŒmí×ìÕ)G»eÉ'îà#mœÎˆ˜$ÿµl(Ç@mYlôºÒ§S¬àÊ1¢ÇFšé[?òO‚úg³õ‘ËkÈS¦ÔE ~™Úçbé è‹w>õcž9VÑañlQmó°ýú‚oyYo¿3ÙIò}ÿ—’ Ö–³%´Ne¤9Ïó¹ÇäÌí{2æg·ul¥u%î\-øí‡ÐëƒâÉWõµ4~<\°úSú¤oÍ?qÜÉû”bÚ½q'‹¼Ô­{ŒèÀéÐÏüü&¥ÔnSšéÍÑ·]‘ýO°ãœ2 ·[Œú ¯ødr&8 xeÆedFÒúa8²Ž»±Öσ 9ü¤‡%„õ2Hbf^M¿¹Çc…¥â%–*Ó:L§ÑÅì,x·÷šZQ©½]_yÄñ뀼+;ã´*üÕ®´VkùéG.15øaßýòè 9(`k†J‡@PôWö­LtMCë3L@ëÙ io,þƒýQÞN5Ðù›øïW/b¯^rÅÐ-Bshm"©v´öL‰0 VÙ n3†:Ÿ¶ùóÍøâe¡¥\QîeòÑ‹1( ðà2VŸ||õ­œG0¨DÂ`X»Þ± Ã<’ù]úíçõ´•ðãë{Nyë¶q±¨×«Pój¥VÉüãeÒ9 Å=Ÿx»zšnÀÄ6.5ŸGóù-kmmÞ/Õ.õÂR…æ7¨A=Ïëa틹¬ê øEø÷W»)›ûᨀh˜-Å2Þ±Z &ÞÉ¢Åï6³öÃ7Äò„ÿlfÑÊø’Ë€òl]ù°ôC¶›ã}]~|fÞGx ~KzQ§ B ùUâtTvþòæÿ<{Ùendstream endobj 131 0 obj 38129 endobj 135 0 obj <> stream xœå=É’Çq÷‘>b½QpÚµ/G‰Öæp„-q>:˜@a+á¯wfVUwÖÖóXŠ0y`³§:+++÷̪÷ã¹Xä¹ÀóŸÝýë_üù‹7gâüÅÙg’þxžÿóìîü·W0@êó¸D§œ9¿z~–¾”çRÊÅ{¥áõùÕÝÙ·‡‡ ±­½‰‡ç—Z›Åzuxsq)ïöápƒÏÆ /Üá|¶Þ† ßm_¾¾¸”‹pÆ{þö-}h•T1Oc¢·e°±šfÁg­avÿ·«Ç%¾fÑÆ)\‚ÖK0ÿãìê×ß ‘Ê.‡¿Ò4A:a?-%t<\ÌҥSœÑ˜qR6ZxM “Î;e&V+gÃ6»\¢µgW@á›pµR™Œ·‘ÞI«pøšæ 6À*_&ÖH˜À4F+÷Ûë ^"· NÄJ{·XÙsZƒÆ·¯ 6¬Íy ëöå޶‹4öðþB‹Å£+pùÃ`E&½ðÚ¾Oc`K\ð>M¯Œ;Ø~ÅRlïÝbÅwa‰qÛ´ÿÂÁ΂æp«މtIï¥ñð ¼Ö€¡×‡gHŸ(¥1 )à­ ì ¾VÚÅ<‚_èš·¯âào2€ \]Ïß3.~¸P˜ÔËÃX-쳈¶bsÆ®i¬–èKD 2Q/1.0Ýö!—›7 ¶Œ¶†·ÊÊ»ô¡èEnDºÒ‡‚6é€ëEÅP}ú^‡(PÛh6éî ª„*K&àïØ*8Ä› ѹjÑ÷éuéïõƒ«(È´Ã-[Ù-ƒÆWv›Èœþ(äÑfï Î DI aòßAu%½ëC¤¯/½@†²°S«•w•FKSÃRÄŠ©ÎçX<í©RKõ• ×ÛD”_‚Õç—R-–t"ôâ1Í̉ù²^?boLÛècPÅ «!Ïd|šé7@k– +2rŒ?äÊ4<£<èc¦Ke‹à¯_#<¿ˆm; ®Ó÷Bhƒ²öð~ &ƒÌLôò‡L’, à  H¾p¬½ðrÄyoÒßƒð¸‡øèú Qþ|Ÿˆ€€ŸÕk)ìËñìM¨F¾áC®ÓôNÈNñµ¬ùþeM´°pøýE çC¥&"ÕÉp’œDÏS·öu’"ïQ¿)zN À"©§ á{Ö“ØÓ¾‚É\¼ÐÒÃåEÍ0±©žÓªlp¦‚Í…8=»h¼#‰SQ-RË$¨ù±/T M,ÎØ£xÿò1RýìW¤cœæbe‚DM9‡Á»Ïk~Ïpˆõ¦23 ÈOz‡¤’Ž›¡»„_Wòýˆ¹½5!ïh€«ôFƒg¨£¯­)LjÁÐã|ÀÙ[€LÇFàKçla"Tk–Ù¶D`c¿ÊA£î¯¨ÊÈò“R‡G°M›c±© ®GI ¸…¹eð˜¤l@2·'Üjûò¹yáI05`&—DñÈ%°Ñ¾ÜXݤÐÅoš áòé¸zaðМ@haÀómÕF °¿™XÎûNFaÄ>=„í-3²]Ö`+dkÝŒ#Œ’•Lµ÷MYÂÜPΧ)@&¢{’SµlzG¢°:^‚Ø«]O£Ão¦áéÛ4$@ÔÄµÛÆ`ÌÑ;ßÜߥ u@·¡óˆ{5wèïG; °€â4ób¸^á´1¢ýÀw¤ õ sÙÞz"ý\-Á½ÐÊÓè&di½ X=DýœÆ-¡šöÃ-³{  ‚ƒÈSa©/J•´‰„ v’ˆˆü4Å›ÚÁö¥hÒ bžË&Þ¤×,"}$ÞD¬ËäL½²•'ÿÝ;ÆFP§KŒçlÅÙSYtÕ³ÝáâÚxFB\#kyÊ vÎ^›·ùxäµÊQ”àÀN P”WcûÚí8O])žöàÊ÷©X’²!D"¸â :óo^$L„ {æ§5Åi1âH¡?Q¯Ç`‚áóë5°U Ÿ[‹\ƒ2#¬`âõÍéÊ Í¸"ŒÒe¿Þ°øÍöx»a|;T`ÏvʦsSÖE)<…ÖD@ë˜>r§h|ë>N ýD4®l!)0Î’UèW ´Š°“Nñ.*¢­‰ï?è8:PÔ’òÀd%¼ƒÊ¦à>‰ñŸN&Aqè«ØVNpîGBxZL0XÎÀÇ>ëöxªgÝâ>ÁCx7Y à Í-‰¨bžéTg6ûFe÷ *eE ùKXÚëÞMsÁê¹—Fa¿s°Í¶I"w‰ž#2æÓ›£I\ø3ø¶Èé^æ!lSþÈ=ÁNSÛLt;]NoY‚Éj’­L„Úæ3M,gË5:,è¡÷mq]•Ž”ŒÚã ­ä’;™ýÇôšRWïÆ@HgÆ€‰…œÕPpý!h…Ñ£røÂ ¹¸Í¨jaÚÆµÿ”Ø„^w±IˆNƒ)n½Ãfy*&¹Ü雥=8&®Ÿ „GrÀW§æåp'›„ÎÄqm&Ç­iÜ ^õâ{ÍEíÉè^Ûî{ˆºLÄ2ÐDª‡¡Ä°5)®ÌÞ$’ £öœ¡=†Ì>LÞª 'Õò·ë¶ƒó!â4ÉÐf/±á@É6É@PÀ¥®œÐZVÒÏcÞ^ÿôææÄ|U¿Ní©Y ´jÓl+ˆ.¥iöˬ‡ÏÂ’ë” 03;5aH.±\ì2™SouÐ¥†Ó°Ä,ã¥ÌÛláìb·ªûMŠ u,±Ž“vœ3ë ®S­›‡üM–'åjŠHœ*×I£KüÐcNü¸åH¹¦¹PMü7à]Ê02ב+Д,OõŠa´Lüõ?sµ¸ßÃz`È3õÀ¨ÿw=0r{?b l‚ 1ºý•x)zЊ³¸€oÜ+r±8í²Œ‹®SÎH*˜Í»yŒû#S¨ç"rI$9õzèI·A5hÀzTœõ˜pM”Ã…8ïo`LÍMó81À 3®€Wa;~fF‰Gl8ù°­ ,Õ–ßu888ø.t<8TêJï‡|áa/Ūj}\\›Ñìr‘a«¦¦*ENU;{ Üš›ªà£¤ë”Êìë:zÍ\ÍÇ›ªŒ[ñç1P‰1¤n•MnXiZ°xè ¿Ø“ÖKše^$Ø r'àÂi‡jþïÝV+ž¦aísAeÑà¸Áq&©Üìí$í•Í£jM>ó&ú>µ°ÊBS mBáõý8œ“ð°k…\õY9è˜À˜¦“›èÍŠsjêÕ`ô¯Uï/RiMXí†tÂÔYÊdÖ]3 ‰Fe&EÙÖ"v¢ äïÕ¾¶[æ¥WƒÔÙ »Ý¥‹ç<"¢ úAºi9,¾ñ h‰ã[WË/Û>§ÊP?ÏAxR LôAŸ•Ïa** 4þ,W<T¹}¶ÏÊÆYÛbôdý-¬´ò—™×6kø|>¾ï+ðÀ’ÇîNìöX§ ÙÄÔ>PoRÊ•mûÚ¸]@¸ëÏ‘ë³!ÙÅ¿ä as3 Ñ«ÁYCæ0qOËÒ¥Ž¡CSÇh5X’ÜÉœ³8 "]"=ŒUýûâMŠò ³·zTfw€©i-AZ^ì'FݲkñeT˜ªì*ÀsN¶æùÇÚX½nt{U†i‰ªí'ý™)_Ð;É;ðá!ðT÷†ÔÜ^FN»ä޵fuïYé´ È_ôûû6Û¦Å™Ë 6”9·øÇ#^¾°Y«º ²“®ö†.ø©½å_mc†U.ܾ@•ËGœxn”Hb• „0Yß|B•+¨%$…¤2×õ†Æ‹aÉþ»ííÛãËmÀ_è­WD¹õñz{ü~{|³=¾]GÆÏ©Åo¶vÁ ¹¸§yœ¿OVL| m߀ñgY©îhCqä6+ãÃ8{Öy÷ˆ RÿÞ ñ|„ z)üž "ލOÔôÝ4Å\¥öppÓš>#åÞ5»Î²ï{–‘œGà^Bÿg*À´@ȤÓŒhx¦S¸&Ü:¢Ìa|•,ö©NkÄræ÷1¥b¼­ÚÂ;YJÀÙ릧ñ²Ð ŽûÖÑÕæ¥ÖL?òHwé ººKÝÁooyw©¿–[ت†#¦gñšѲÛY¼ßç4š÷!kdÑ9縵#OT:~2/¥é¼Þur\"m %…׃S|;HR@èÆÏñUCrÎÏ£D¼Û>ãcÒ{Xþ:s'ï`Êٞꌠ®cA´*²P%Ÿ®ˆmä ±”mv«î8{X¹+Ã$%¥•LŽwŒ‹×mü†Ðúa-°ŒÃî õ½]“ÄÌy»æó±H‚–Ê™=Ù좜i¥)wP:‹ˆó\תÀ5óMÕÔ8½h¥ÚJ`wŽÁì÷G, ý…KøØüjr¤Ie_Ê}Fàà¿3OfÇÌ ©cÊ…Ú㤔êu!L;Ö¯ów!´nMy=(½·¹ºîKLÁº,¸%ýzËBü‰4 ¿qs…uSç†Çà…a:"ÓJ’¼Å†w° Š 4æ=¯ë´ù;R[YY§×¦­¤Æ~Ýþ,æZXâ4ä*žóñäü" Yñ¤+Üœ\ò$ã°­à2é&ÏNçÛ¨[“>jÒ%ÑÜ@Õg«¢WØ $`Ïž<+ê#H¯ªó_ò æ­'͉ mƒ<êDÆäxçÌáÞqó‘ÖÇk‘‡¸ÏsŽ''°æ¥ (†…X³·^\mbNÂ3VÁž…Ðq'ø öèñckÇØ.?cKT}Æâ~"XÓIÕÜбsœ÷GüpáÅÎÝÆÓn9)g˜Ùq»I³ÚL¡7Jñ ­h4ûÒëg¯y¥Û î¢u1I^@“ÔE2¹PI¬.°ù¨åýNûŒ ‡£>•‰>>æÚ€Iû:°²Ò綪(Ìž44#ï×h²ÝC…-ÏE‘ôå»|ÄÂ(5V˜ºI·úè3>FbÈÞk6„bä,þxZÝ Âvä­ªªêÓìK¹Å»U(ŽŒÁ˜CvÉϲ±ˆß;†Ö°½æC8ÿÏ2ú‚`ZCm*f™íY7k¡žµÇÌZ0e¡±Ø0:À³X”à¯g‰¯6è)ÐVU8àbÝÁ{ì(ŒÊçFLf¤Å†-i¢DÑ ã}*eJS6Q;¿^“â£3eg2Ë”'Â|:®J¦FI]Ì{—¿ü€4]ßÑ“Ñtê%Ïål˜É;k¢².+\é¥Õ±‚œðóBh¢˜§\ºÁÆNJ¾„‡ Õ»4Ú¤æR-‚÷²_y‚¼}6n…x¹‹.¢ £>±äæÑM RÍÌ&ßî&Wß¶µ¦Ü}´çIÖ³²{ÃÛ¿}Ï^çNRoJA LzTªjSåãŸ^¬}¯)ñl`xõ%ïY½Î=¨ºî’åÀySíð—ùK«ÀmZßÞ2ØM«­Èý°G4²þ–¦‰µnªÏú–ô‘vFÕ¦„X ¯ÛhÜ€ÿ¥Í¤µÅ`óXåf:™‘ú’ü]ÔS ‡U$cÐ÷…–Ålá$JÏ®òhÊx8ZÄö,îjPfڳ̴ðÆ1ÎÐãº.„ìówøZî^ÿö669ŠdAî6Ÿ±ÊV$ê™¶½Ÿl`ÐÓK¡rpáFwWµGhG|Hk :å v{λ _[Æ#ƒ“•ûé«€Fe·ÊàÝã÷åz^º»OÚò£Þ‰ÓKé˜Mß|6úgç¾"`Ä>_« bdW@£»Å>ùöp1Átþ3´hƒ9¬¬ámî”óóª¹Xkrx³ôáµ-AWƒß¤ý‘:²vÄY~û6 |önHÁ[â`ÕÝ)ëfµ5;Ój5;¹9Îî50†RK°#ÄI;m׫ëyj) ±¶öô;Êð;€÷éMe7 †ÚÀÿƒ~\…;‚j;æ¶Ò¨ù†Š™éM]+è^¬ÖgRün»\‘TÖ·¡£6ŽzHv3I%c¡Çþß –i’ÖÚí¡xŽGçå,ªØéx|íâ°¿í… Qª‘áKW]%–ïG÷UžZt¡Kƒv[$ˆ¨ªKÝ•¤>ÌJNÃÖƒT›õxÿÔn‡Ã:ü.Mm›¿Ç·^ì­ÇåàÙÞ'¯7D=ízÕZ5¨ 5g˜›|1TUfÇ“ ®³(_ð ¡“zn8.ËÝ?½Z ô7ï•äËwõ Q(‡ªOŒ*{$-©àŸÅÕÒ/²;YŒ1ZÝ^:>8Öÿ³*W¯ðÖ΃²È¡—f ’üÒ×-̆Õ<ÕÆ!ùìñUÎ2kåNjz-«û£§!ÉD›³Þ”,Ñ] ØØ¼yµ­À¶1¤Æ«îvcÈÅÇ¢@V§{H—ß~}¼ M»ór$ýà€wNST-12Ž.5©MNûo‚•‡_ásN“`Z|ìqü½† Îå~0¡ð¿‰:y8Ñ“åÕôa»8æ³Üzâê[Fb½±6j"§‚ûñ76âÉ3X€¨;I©-?5פš‘jâ×çl&cÁ¿Jm!Êu·•ýk^¤mK BÒÎ#pbê‹qx³÷7 ¶jîSfhRƒÚ9›Š·Ò‰ñé'>;’‰tsÔ9Ë&ÍM@ö²‘­\‚€·hw²÷H'~b›Z©£ O:@4¿©qjZmjóeÎ,QÍÛÙ>׬›/CÝ›ô¦÷;.Ùhéû7-:¼AÚNyã•M(7³³«2&¢t¿¶!¿-“øb¦Fõ¦‚Çä’šqÎaÿ¨2*œIÉlMàBj!9>ȶzm‚#›¿ÍÄõ.Ùjsß–®tøGžft½×ɧ٨+NÝŽa±og÷6uC#¥¥Ùðˆ.Ô¬Ø'©sûÞgùm’$ø«xÜ–¶Ò½x‘p¬àô¶¸ù¯†Œ›åš—mùЮÝ'ã[‡ùµi£$˜½»ç`ìòxšˆÖð*)×6a±Nª¶XGÇÒöU~èšëeËÝÊîihÞ6’¦·¢ƒ$ ”ì‹þ¿WT²¢ýI º¶]ÌN¢5½5t’GÖŽøì÷ fɹI+~{;QÇã¾À‡x9vâ ¹!¹&ZOfþùì£ Å£endstream endobj 136 0 obj 5983 endobj 140 0 obj <> stream xœÅ=É’ÝFr>Óó>½Ž`è½jæ$g"ì›mÞFs Ù$%›ì–Ø-ùë™U²–ÄÃë&ÅкPKVîÛûùjžÔÕŒÿ•_xöÏÿ®Þ=<›¯Þ=ûù™¢?^•^¸ú—0@™«4%¯½½zñöYþR])í'g¯‚6ÓÌÕ‹Ïþvú×ë5iç’:ýx}3OƸ ÃéŸC°&ÄÓ'|¶nN³9}Äá³w)UÃ_á³ .F}ú…=óOßгŸÃìO·×7F‡É+{zw o 6-“ÛN/··?±ù~Èß¹N`¯ß³­ðeÊ)|Ôñô?M“òéô¿0¹žI'\gáz}Ë8«Ö%“­NÆÄß³ó]•ç¨`øo8cœlôÕfïò,Æ•áã'ßìên9¾=}ÿýºÐß_ü;\¹QüÊõ¬&o<\û‹[¸å +“p¾ÛíA¯¬Vïuy›g«HÏSRëdÿ´jf¸³„[^å"àUu¯ÙqeLظh,Îb´›|Ч·4ÂÎ&af`+ ï¶Çð8Ã6ô¬ì¬ö¡Bˇ|>¦Óý6ÇÛ iãüé󵳓Óõrå>aŒ?ÝäÍ™9ÐUÜhË$uu£4›Wj’ìPˆjRÎ\L!-Ž:sÃM9¦äÔè‹ÿPöçä·ÇV¿+#¢Y/ÏE<‹€S+¶q<4XX¨N^`cœ…‹¼¡ý§jÏÎ@ä Ï6$ÜöÔšqP‘6 ÆãÚX#×}†ÍÐpT.ô§kD*Bk!Á¦$Í8#»õFØËð:ŸÚEo9E•å‘–ãÁÚ³ÎØ^vFØî\Áö—CœÍhd,"žtçüù˜_zpë†gÇ– 1. Z6h´Bõ$RÃ9,0¼ny×s„!){Æe¼«Žþ#)\v¼Ë[Q@é|8ßí›2$(~¶[6Éo<éÉ)3ù;69C¢´ `®\Å/l¯3Ú[ÔXVÉsææ‘ôx]@rì¶ßæ³'$êëwGôÀá=`+D´¢žLð-Ù¼ÃÜ·´F».  Qª°!Ó&qŠ” ?ûBw6dýr³5üN²LO•N¨§8‡°ÿ»2°½`àh3òãQ )ëþ´½f#©LÒs© ÆÃ‘“ZAê>Flö2ói2>8L!'\ûöëÑa«×úú42|bÀ&ë{•$-ª&µ8]÷÷¿Ôδ g„Y~ê…å ?ל$ªæ ü#ª€ Amx½6-’Â2C€ý'_PêŽ þ‘©d>Iï+¹~Jôd *)©‘c5ØmLÀ œtu•Ñ€cu2 ýÒ„0"lDû²W »ârë×<…™;ÃÌFR¥›åÏlûõ8 ô¨× åVÛHÀÊfWcx>®ß9¸oÒQ\² 7Üb~¾¿cgåJøn ld¯yèÈ8™ð½2öC¾`幎wŸ±5œqÁVÆn8} jS$í*\e ¿’1ð>) J«%ƒd‚mMš +’ ÛU–1eÿ¢nǾÂtÈFËC,ÈQ¿[Á;0I‘V&©cÞ ðÊL÷blÓ0zx=·,ï»Õ[®ÊÎæ]Ý 0ñëþÍ|ØÔÂb1ÍÄðºr¼Ï€0.꼩 p5·†_'0ª¥Ü¡od ½ñ<€6q¶Õm¯æDô²œ]™†geÖ lC1]Ž˜%гGwt,BRDd‚k`©ÕcCò¡Vìt-œÀÎ-Õ,;Ê$QNQ÷8”j8ŽLÄáv«Ü7tÅ![P#ëç¸õk€¹›Z6jY—œ¨1œ'¾Û¼ŠªüËÒÆöÁ"jcd´ŸâS=«Ð|Óa¯"- »Ø“ˆ6¶‘Ñ™:,ú 6Åf¤j²s7ÖNœ”h&„ÅÅðNzÛ„ßàåFÞL¢™Wµ2ÚjÅc‡@9Éž"e\dH—;á;Z—)UTC½ç2.Mv¨‹Óê·eõyWÇY'ä(ð1OÞh‹_Aa—”6NjãqŠ1ìMÜîœ|~n3Òþ)sSo*’j¶4éÕúaAa9l ÙÜ®ñ׿=oc›¤=äëuºsàákÕ¨lË¡>' nÇ0qÆŸ¶1™tÊk›~OÓ°Ñ«bÀ4µ&¤À¤`–viÿ /IÍq`Ž~Îcâ¾¢ºvÜuè¼2ð6YSe,Mí„`0r“_ ½`PŽ%~Þ„i>ÂhÔ(’o½‰ËÚÿCSøèöu´µƒÐ8"8]•`Ù½)Wˆ²5‹0ËŒ]ˆ†ocø™+ ˜“õ3¸|fÄ8Êíjct˪A•U$ ®"Bò®kRÔ:íG:°Ú\ìP@ ޵5ÌdÐ †€—·Ä†Þ¾Nã‡ì‘%ýG´nõäý¾‹™pô"éð¨žQ éªöCØÖ—‡EòwñK²%À¥9Ö÷³N"¦&:"ÄX…f{E0BߎŽéP”7š”ÄãavŽ©g¸£#$ckØ#¸Eôd*'­í”ß×ᯓҪ¦ø:€Ï δÛ<8ήE °‚A—ÒÕaVstŒŸï…+åk£×ĤÉ%…›+žKÛ˜ ò4xôSˆJÄædº€àªUvƒÁ2Œï#– èvÁaÔZþ¼áóýX˜K^îŸó˜9Á8£}SŠž‚uµR¶º^tíƒ&ç‰wŽÙAâ|\ÿx'ЫÛP°áójñrÐôø‹Ò>oe 1¥´O8¸¼ µhÒfž¢ö‡€^ã0®íbj‰Š&´C°.²¿ Æ=Þ„'1ªÕÙ(¥¾X~¤ÝÔNS<*òÔš%à™”µÌÍv?fПס¤ÓÆ8nX ž/š¡šÃiÂ[¥üò| wgóã(”Á$ ·:¸úÆ%ï :hn,ÇŠÙ“²N˜oÅ'Û{¡ëp$h{ðþ `RŠ;¦EÇ­¯¨Nð£Áf5ÜÃ0tЩ ËäVw†ž²QQæû¦ªl1ºG¨Vô]ÜãVt8WÛ8÷#ÿ2?=AvšíPÅØ‹S›ßn™ÄàûÕ;v~„À Ž7ð£×œ¬Ø!?¯>8!$Ï‘ô`”þ J×2lêyí$ï.OîB¯W²í-ZP#P¸rÆ-d\ì*1%¾#h7Å<e0*`$n^ }½— èÐÜØ2 €9Eôqö s rï©Z÷ŸOžým‚u›'q^ŽiÞ ÖôþbÒÄïÂ8~^M/à›Úˆ!ZrráœÐ&˜Ú¶ÒÎ}+b*%`@*ƒ!Û˜1—"9Rtò{b†¨)="٧Ƹrër‰^–ULj© 'Áœ‘o)ŽBp-ߟÆÓK!SÁšÙ‰à”ï¬ðzÖ®‰ì,‡f8kü)]kZó–ËLXV2œ__×yÏùñýöøj{¼kÞÉ‘vŒR¥O[«Œ2±@[¾"ÒRÊaº-ÍàÖÖ^å-ƒ¹Ð9ý LB7HТ×y„B5w?A‹œ½ve›Â{ðè¨ÃÖÍ@÷6ëF õ®LJX]qITÞÁNŠáé¤ÑCñ¦xêC:ý±nÊÕú<#m9mç@ÇfÜcÞhøVù±j߸£‹×ÎloM3—ëÜó÷MsVTÑœoBï<TGß×Iø±%»â6»¥0üÇ_ÿšW"K”Í(¥q¡Å7öý5ÛÚSвpêÚZ]uz¥§ìN³J3¯ûè4ªI¼ÃëLÃ0ÓꧦX—zBÖ]—Ûõ8”ÃÔdr,öucQ¦]•‡ØhzO|÷“²èËpÎD!_z$L6ŠÑHœ]'ø‹,V„¼Çw&'ð°¶tÐ[;IZŸæ²)ßeè$¼ªö*•Ö$¯¾¡àñ¾<Êo¶Ñ?àî#øËWÁ´æOª F Á8Р€y½ÒÝìò•±ÅÝ Br£VaÀÞrê#ì’I£\=º íÉÉÜ„QóEEPQ»‹Êo_oïÏ `õËööÃ9 Á«í¢ÚÂ.c(5äI `•@LEáZÁ.²ÖQ­ÓŽg'™‡‰VwbËß–#hÔÂáM~÷!7|†A©=eŽSU[(„¢¸ª\ûå(8˜'dÞJžlP°µà+ÜgÊòŽß‚Ћ©²Þc2ܨˆÍ&eA¿Þ”8É¢Á,YJ{Vã븉`’‡4©ÆÕ:èŠ~šm9Â×ÑÄ…°ì·åÞÀÍš0òy£Ó7-Ϧ·Ÿ¶Ç¯c!hÌY÷Ó2\Ð7`iH™Ï*F°êä®5#„'š¢{Aƒ(¹ö)d¤1Y}ÖOÏ / -KÀ‚ä:fŒ£¨˜ u¼ Î—º3ŽÖµ…&då­S«‘ÖÌÃym±Åû¼zŠ®ó…Í—gHÃFRÜ÷ßÃÔ*Š9†R}ÏNÇUbLO‘‹ Ÿ®ék~ÂÂw~)´ZGs‚áá©^Õ±”ö“UÊhú¡HO‡~Fzn> PÔŽù4Êლ—nÍhÌqGÃWd-*7ÐŒ:ÜèFÚcÙnVMþµ‚Ò¦áÇÃî|¡Ã@')þÚ —¹N‚s«S+üe©ÒmÊÌ*%vÁvƒðJúh¢j¾Û´µÈþ †öÏ#|´ “P؇lC=poXeSIÂÞzcœŠ[oqKÙ\^gl·º˜¨@NnÝ.u‚Ù”zŒ:w‰9÷XyÔÙÏ3¶¥uߤUç`G“ö­£+µac+÷V »„¥ïªYŽR4¢ØÝá}þNë'Õ Yª/ik`ZuL‡3 :;ÄÜÎ',äæÝéFÈ"|ÈPcùSiJBd¬ šœ%ëã»í‘ x¿=vž#z{·=¾Ú?®—"h›¾a€81™'; ´SÔ††û$9¦wò/ËüÃPM£ éYñß%Òc6ÍiKÑΛnŠ|Þ- m·“DŸ­„)¼³™´ÝuDÐA†MŽö³<2¼ÜÀ®òºXçSÉ!)tðkY†òö/èв ž³®Rç'˜kÁ@f?¿Ü6„gŒüópìÆÈ…~~6Š#¼"°AôQÞ–³$ ¶`SHrîáXÄ Ös²”>)zJ¡MÈýþã˜s1„™¶{À‰”E³=¦T*£N—¶© ;ŽP°õ½Ð*8znóò!a®W#!,ˆI´BþFí±¬r,"fžšÝ` lUÅÇou\’¾·`©—záÉü~†¡ä(©žN“P ϵê UDµ%öVT²>7¡BÜ °WIñkU„±õŽ3ÿÆÌ`{·ÆW>=G$š †š‹Ùl/+,[ÚM›Åö1µóý²~%Q×Yëj8³ïü ̨`Ä”âÇtšƒÿó ã^8¹3ÄÚ'lý¾3Ž0*â<“ˆS׋sÙF0p^Ò'‡û4’"÷i-®u:4 º4 )‘¦3¦,"à·²ú?çG{À!Ø9ø©‰PÕ´ƒ¨3kËæk»I®ÐÓ6b ŸÂ'lÀ3êq°¤càX—ôé¯×4§PGM…rÚ1 ¥l*ôbɺðY„‘@ƒNå©ktÔt°ÀmàÅ}©ÚUœoë0/Ó‡)pt±²Ỗ÷÷aHòb¯*©e‹tø’[áf, |’{¦Î€Ìzc벘ûwyd‹]8‡Yë0Ï!®³žRS›Ï*7l:ø`0Î]Ñ2V ìòÅV:QÑT‰w†Ô'Áf¯¯Å”üA ílG…µmüµÏQ% î;†0ElÐfm˜ 5èšGò-›< |'W†PgµžŒ<å|¾£…¸Žr’oð@Ó#©`·>¨+—ì$³õWåòýz“Ht,”dYj’œ=ÜÓ}Wr\ÒÖV'ïk5ÀØOþ° aâLq)O}×.ju°×Ë|GlŸçÙõcbmõòùøòRåf­&ÃßA íÃ.!M1îWäâÆ}”híM™$(Qk]y0C6M³8|¹›ì½Ì1H'Õ Õ†­‘ÖÍe‹CØ+âæËk­‘÷hž-ÊòI‡öµôÛ"‚ë}=àé<9Nh‡Ø »%jŠwÜ÷oL(¨m@"ȤY)}ú;RÐÈε‰Þy¨=&†µí®É{Û¢\¼±­°ÀÈû8ýpÏѴ̧G‰ŸÜ¼­Ú~P°7ïÖ´m¡ÙÒóIâ¬}ÒÝȉ\7ßÒSP—·«L­¬±þ²´Âp4ÉÿÔúº2{í$’—ÝA[éArô®Õa_s9Nç5·¯¤'Y©6 œm0©`X Óð7¼”º¿,9·j#9Ÿ ¤ÅMÒŠ¿¶úU9WM4›jÿíÑìÜAÏ6 kÑ%3;rnàæ(…ã œLÑ û@gì!5C{±3I¹ ßÖiHë|ˆèv&bü.¯¨Rø*ˆŽ‡ ærDÇïLç{3 åÙ~ž~i廾[£¹Ò$å’°ü×ß!LÏ Ri%¸-KF9E±&éOÇR &ÞYß’¾ûaØm›%'¬ò•M×[ò rƒáoýNƒ’/ƒÜÎg "w0Øx€Ü±ùôÆãDw9z‡n«»áí9ç}–Ëiâ–M2óÈJ’¥öˆ¼l²|A¶<³6zq«A/Ó~ÚÜ~žÆöO U®“1ÅÔ ¦Æn>ä9|¨„Óð›bÖökøšdñ'LÇô“oÒAÐËâÎ7Þ OùuHõè‡üZÏû¸¬0@2ž—ÔJuæ.›sƒ×â®îòˆY«Æ´ÅÓ€ñ´.ËÔm&¾žm½"m° ~ËOZíG{Š¡–mxàC[/éy÷®/£¡‰ç]•1ßâ±.-+r¹= v]Xn}^{¶Y«ÜEƃ2cW£á’£“A"öndJ²L>fG…U}t^+“$ô:ˆF{CG¯Ï‹_.Û¥² ÂÅñ}a¨,»™ŽUÑ)Ãn1{e*yRX¯ìõiµÀáC'sDs³Ó´é³tp€;itûØx8î¿þÓ»Æ<²Òc®±½½%ƒSrË΃¥?æêPUCx§œÜÎ÷±ß¡šA…†{-vÂ~BÝÖ|Zmï.§Ú\ªŽÈbafÕ2à2*ཀ­2“Sú/øZñc£sVš¥Ðu¥8&kkDÄÖø'àŠ·u:wüÔù EVgfÓj€~©-؃áF:~"ÝBOt ›¾œwM¹4Üö?b‹éÕôç£QQ²ù÷1û?90Ê{˜÷gF¢RcȱW#76oài÷=±°)ॗ™8­¹Š¯ÁKZ •@YßÊ!O‘óL¯;"¼}Há2¤òO–QOר_ÜyAG<º"H†¥~“]Ú©=TIdž¤ØæŠ Rl¨ùu6ä¼bãd’ª3zjvƱæ Kø †‘ü¨¬4.@¹Å"ç_à0t×64VØÖòüέ€sMÒ}%&@7@·÷w,Œ6ùesýlK™ŽÖ‹äÅ×z{¸-‘Ùí²|óCD›ýž m!„ÀŒÃrøî¸Ö{«,º¨*¯6®ÜýJÈFÎSc(.•–ÕMÊ<àÕ{ÞR[n&£ ªm¤r*ñWÚ–ñ˜'¯Ö_DÓù‡ÅðgtÔ¾• ßÍ)\.ípîÐé)fÆ&`Ãàæ½ƒuª‚¸üÒÅ6zR3iX'Š,›K;y¤H°Ñ ñNÚìiž¥&úm… ìÎÍ®ƒ™!N÷2?*%†‰ÇUïÊEkñÔkzæÖSxOì֌ܒ9ú¶¡oÖ“IÎÙlr‘xŒ×06Õ‘{¿ejv}…ÛÀ…3d¬õÖ-p2â_–´—;ݰ„'uÎËe½=´wXŸ¥DÕOÈ~øŒoKiUã å ¾äðÔì&¯Y¢çÛÌýÖ›óq !AØ>A‹~È`Miäª[‰eä2à–D³ó„D6ˆr0`è_(gí©n)¨É !»îO—g}·ÔZf-"f”J®Ý:§y¤l–æ4˜FÒ•úcN]Éÿ®ìc|à†¢3Âz¼Ã;¾/ïåâ 'µ¢ŸÖ§°<Öf^]£G(í«SxÈßµ?ŒÝ•hÒä.*ñ>Ÿ©ðg^Óʵò ÀB¡àrÒ ³Jû^xùÓ}—ôNåzeÒ/)ão±~ƒæËnJš§.!T1ÆÑ›ygºiTüíÑv²„9¾ö —Šetl ?±T”ÔÓ8Jú^8E§É¼†G¬^ªã¦œrÉ‘øà)¤ïÝщ` uÀ_´e(t÷œ‘dñ·òáü4­ˆ ±;ÑñTÁ‚!ÍRRó®61H¡1¥ÍßùÝ©–ű:`Àu¶çŠ˜Ã$“ÖÒu ð{¤§~ÁN¼Øý%Uy¯·PFÜ…baoVu?Uµ–Û-g:˜[ñõ~©•dØ£E#ý*ü¡úÐõ+ÜzÜáð¿¼xöðßÿ{Ôhvendstream endobj 141 0 obj 6732 endobj 145 0 obj <> stream xœÍ=ÉŽ9rwy>¢`ÀÀ+C•Ã}±Occnc ðÁíƒF¥Í-•Ô*Imùë\2È$³òUÜÝ:tŠK0{©Ÿ.Ä"/þÉÿþîÉoÿì/^Ý=¯žüôDÒùÏß]üÓ5tòÂ/Ñ )/®_>I#å…4zQÆ\xéüÅõ»'ÿyR—bQΙÿëú_ŸÄ%j§õÅõž\ÿ=þx¥½Œ‹9‰¦þêoë'CŸAè<™1Q•ÉL ת m4e€¬ž?aÀ$]~…Ey¶ìv€­_z°·‚cÀÕzg€gÛ¯ZìË ­àì Wôp 7›jOe»£Sag|ðX8U;ö­S[,ˆ„»3@v¤fg€êˆ€ø=Ð× øíŸ¥¾,8å rÔ•’þf/®”_‚q2Õw—Wr‘:Zyzsy%­­‡¹^Á\Fkoâé36[oCP§Ø[8 {qye)…Œiîü—WA˜0œ®¡uô§Ÿ/‘}”Óû4*:yzŽó'¼pÐ\gxŸÖRB>¤¥µÑòô6A¤¸vÊûóöÛKاÑΞ>Q«ðÙºÛËW€J‹%øÓ Û,ÇÇ~{ï‚ Í|lÞý/lšÏl|(öÑa8âÙÜ lŽ“×e˜:ý†­ø–AÂW¹KÈ×0²=ÈÚƒO>é’1a4Rš Oä5QÔñoØñݦU‚Öö›ÈÈzØ$|úEª–6>³Þ€Wè ±•þ´*‡F=ò:ZùÔ+j7ZxWè+©kO°?ìhé{çh5pD ññ æ…Œ÷œ8ðwiÄÌ'Ä®µ²2•7ÈTø³¯ ÃyU[ê@£Úug§Êiýýyïe=Ø,vPkªB±£å”©’$¨”ÊŒ§?ÑòÑEd…tR¡(À¹UŽÄQ¿yŸgŠ1Å6ÝH›À²Z9Ë@‘Kt!(Ê,Vx Àm¥2yFz'Qã&Ãé{\EK®@±°@‰?}¹AáŒÑ„u˜<@*˜:©ã3Á(²œÐÁD“É2¯ðž­|‹C5Rd6Èõb( ÿ;Çè•lXü-? T~\/S«ñº!Í׌B^¤.NÈáàA§ù@±ÛûÄwiæÌy¦˜ßr‰ŒVêtÜeo|ä·¹Yǽ͗Yêcƒyggm‘iÿÐjÆtØd[¤ƒŒþ3°LmN=¤4&-¨Ct:ŽÎWG W/Ë* ™· %L' ‹ö¾LALå\°[TÀÀÿ^—ÄòŽI{QR¨Ò¼àž²jf»M{‰J ·bA,˪Ž«Q8ÑÈ*~êaXàj` XHà'ú’*ÆFÇ5º%T Ög(? Å/UcuDZB•ú¬%l¶™² ­vM߀)RpÆb@MÝŒI®!è‰áu;zƒ³ƒ[Z û>-šeeÑ(m^ ŸÀR‹ªgl2=¬üû~‚-zׂÒ­=P6 gQ7+e æä£ˆ ‡øójnò¹gìŸvç6:œw®Ý’‡ãþš1”Ò"; »ÌŒ€Fb&›É/BU¶åxŸw¢RébÁ¨†":‰ …_a&hgË´ÆYæéÚ%sFÚqFõ&8U=Ð.vz ɈzƒêvW]U$ÑIDR]w-AcAž5üŠ0%)=Ö)Ö¡Ëq“`5²|–wÓ,|ö¯À€º™D8øÞhßÌ´ß`o=‚©i±ËÖ:¬ž«äqf¯QP‹ÀW9§žÙDjÜ%ƈä=Æ`„ü2ͬFø¡6']¤e£=°hŒeŽ;2ϼ‚5¾®Ÿ¬õÓúùbý”Kçq?œÖæ.ë÷H zЪ²öß6€^ikktçu´F6hp]6‰Í“M‚–¯ˆú@Pc“=(YÞúbý¼Í;‹ugÔœw†‡Æ ¼^wÚ¥7ξ¦…CouÜL2"a °µ”=—#ùì ˜÷Qù 2‹°ÄÉ8Xèœ!¸@ÿzGá7|óÉ ;Å;â>pŸOmPÖ&`=I©÷ ƒà’ŠB=ÂÉŒê4yûÕƒ/Ò„ÂÉf–׌9äáoìœ¨š­™°1Ën²&´¨× Y½eªh¦–2€(îgÕK3˜ýÅö}r¹xb·‰T”±ç-¦™Åö1 ycvA³4­¶zN[o¶ÄÌÍ!úžÄ«:2 qÑí™ÑÖÌìFV1@gJq“i¦=n't‘‘¸1s ¸Îàµ"Z¬=;ãŒÐh˜D£ùÚö³b»%"³ÞÅDØ ©Óô[G8ŒýL ýH[QfkdÃtÒâ±z»„ÕÑêÄ F@q:sœ”'ÆÉºÇdëÔPëñnxƒ„[—‰¼­d¿åí´|ÒíJƒ>hØdðâ‚”{¼¨—õ/H…p¦çLѸl–E>¦îÊõ²½<“a"PÔŒ -&1­¨c"_0^}¬°Õˆöx¿6(}ÕæW»šØ.J…(¹&F°Û &؂݄F*Ø37}¢‰{ „Þfœ²÷çp¿IûqÞLß¡òr‚Œm )Ï['Üq„ƒú çfÁ¼è½¡?b¯¨¬½YRt 'à÷‰R,ñˆîw6 ¸GÛ@~ê7ÜYp¨…Åÿ«ðÅЛ•ÿ:ä‡ð£ü˜VÑQßwÂ#Å¡Î÷.84+hfì&lC²D”Þad&d*jÆi ‰²S8¶æ˜:L(3ˆ¾Kk(9Ò‹S¬ ;ÞóÞ̬ûÜûÄ!†v2JV/ öV½ôQ'ÌÈÝÃ.JÚ‡¦ˆüo™:BÉ"-f¦Æ×,èïÀREÄ1còSðÇ’9:3Ë é Ë}nÂê/I¤ÿ¬—˜ˆwGØ6á==VÀØ8Ôƒ°•ó®Ú )íYê+“koü#Ôm\9‚v­¢\ö¢YÜ˨Të&<Í}1¿%ú϶Ž~cŒ˜µmß'ªFJ©Ž{ò<  ¢¹ä 6°Ã0;Ê:{K”Þ|$ߨ†DO×|Ö4b…Œ„¢ãKê bhëfN\ÍÆŒIR^U‹Iv–iBùÈàÙ2öÚCy® P‚8…r³°Á1¥4 7iæ(Í@rŠmFScg.ë¾^…vXØxè ¼OØb§~ €«†m“aŸ$áY®åeèmèâ&GS#±3†0?j>͇Ô=ºã©Ñ;YùÇP1.ަ=’àåŽ<ÁÎÌó%„i~‡)Ga°C&'/&0V‰~}I•e©ºW¶~^KæÓkäõ`\„Î(Nýp®(8‹ ŒRI°ñz€p»¡å,ŠÊ$'Uì‚u-kÜã:8më:R@÷õ®)¤Õå/R»F[ÃGü¬#ÂbËvŽA˜ÆJê]G³ RR:Œ‹?¦v?@š¡Ós>Òl:ÚC¡¥ µV`­#/pÁi§ížJ¶hG¡æøŽƒ³àÊS³Œùä,¢qÓ‚0Žj>ãD¾ßeœ×qQb?pÙƒY«ÀV®`JäSÞ®œ›lÌLã“ð.¿aí[ç¡è¥ß*úM3ÚEÊÐùí|ûÿÃDó¬xªc°ðŠýèj-€¾ÎsMQÎÓ{¤‰q»":/ý¶¡Ô2€eV…¹‰›¡xÝKç˜V6¶)'ÇM]^;·\dWð6gnK%–ÐFé_¦ùtΆàfíc‰7/Àùjm@* ¦„bBJºCWéÓ°Ùßd'E,nÎMxi[ªŠ™ýB= ö³§»ì1qzU{ŒЭæùTg‡ç7'aeÌbÚ\Ú䀹—3¤Ò„:ÆÙŒÌù˜Çn†T0±ˆïÒ’Îoâ§ÊXÌyîqûWÒHc›d–rh«»)þŠ 9€z·: C}vd ÇÅ^S!–$È—¶99*~a&FY؆ótî]Z+Iºò^œݳ_B—ücÏBy³ÓÜþù¶h®y¹‹¶ŽmË]0NŒ§^Áq"Èv6VòTõß¾F+Ylî¶ÂÌrSlFpªyUP†Z†Q¢ùõhÚXÇKÐê~ÐÎw ¢œíb†µtò|+]–œÇÛÕ«ù=öUF¹Õ4¡9&¡_î²t1/®jmIn¨½L‡£ßspÊ$Ù{I NSŠ/S<0x$T5ײØ4Ël•«Jª€Â9ߤØ«óãp³‡‚G£Â^ƒ¥áîWQÙ+âZg4QtWÖ áNÿM³¥`.?ˆ®Æ1EÖìý1¯oÜ”Œë%êy±yÞÅ~yx˜ ’ZWz[£öW¶êí.JjÛ9 ™Ëñ£ê1©¢ç°XÉî%}zŒ¾ê'‘•»4¹Þ MOñšo‘®½9†ÿ—‰çîXëŒX^ ÐX×{W±pk±+Täõ`öƒkÐjâz¾y|HÛâ2Dˆ”ºIjp;Ëå1;s@g÷á'gK^ô u¸-\c@@Š4‘['@‹þ…d…ä‘;)ÕÄL&S&ŽÏÓî¬5"ø>ºÓmí÷Лø„X»¸·FúzûfbýŒŸ»™ö˜òw8§TPZRõm• .aæ•(8>)§MôªxÜêHùûŒ=¯è›TðpJ¼)0«Žœ3/àsÌKE8“Ò2rSDG‡ØÙ¹È˜ÎM5œÕ˜W‰ôÁŸµNkbòÅ»ê85p½ž9ÚeÚ7U¾ ¨²¼„¾æ(Á‚ÄiÁcΨ§}uųbÃË^jl˜·þárTEülm½©ŸÃa·8%yappcs#e¿œŒÃGò]4ÃbU]¥'ü¸È ¬Oxv0ß™Áª§IrcÁÒ™·ÝæZÕ£-í‹| q€¶r_¡¶a”¬$a^,Gš²Pâã$Œé£i(èã02Q[sv#hì×ô2An}šðÌžF¸¸WdI!{½ë±·ŽLW܈W¢Y/VÉòjý$× :ˆ¶ušÂRíku¯orN®¦…:_ÎãMä‡úr0¥ Bþ|¹`¥ê®iî^œÿæ×4aëKp½=Pzäè´[Ð9j9ñùe¹8KÓ§ÊÅçۯ̡‡‰¿pÈ Ô~S`ÓÆÌë4|¥¯F¥'q„CÊú°¾¹‡,’×Û®4‡·,ÚåÖÈù—áìç0†çÓUëâ;(àÞ\\a)½nÈ(õrý󆄆¤0¹/²“ÕÐÂQ¼£3{©Yú©#Ášž\Ú\WìÐ&Q¢ŒÀ‹ß§él—…ËrH7”ŒkØe¥wIPïHMe€3šÅ½x9w½ñçyáÁ‹8 ÈŽ7Kã…¦ý;§éàô\»Ô7Pd Ö±¼ó¬'AÚ»(Fžfy’8œ¤…XÃÔw´v÷*¢vôTÐÔáÛ˜ žj’©TßUµcuƒÔ›„Í`ÝÄëý2â‘t}Ç(·*Çèã]ZÎR‡]_EД½/;¸¾š¦3£B‘žÑÎQù¯˜Öˆ`4µÁ7NáI*Cg‚àiÛ—¥—q#à Kª˜Ùòî²»XJŸoVÃíãÚúyý¼­†>£\´_/ü¢+gÜ‚Á‡&ŸB`ˤhªìXüÇ|p®Ædœå†·KVnJv¾Pà$Úκhk(’so¦Wcò,ðÅ/}dáŒqÜï“NsÂÈ3ûîú+ü~àjöüRç6 Ó.7!¥¤€Û_½èhÕ½ªP '~N†€°[ÌœëGœëí·±øçÞk±šÄ~í"YviÈé-Š1”)úkÂ*ÓÕ}¬1hÿzNÒ ŒÚ¸Þ|ÀLù…ìÈwuXøˆì/"@ü<æN‰s¬©VÓhÊ ·)‰É!Î_ÁBÅ+‰/ë9qÂT‡¾ï'Uqú…›º}ƒé-û¦¨ƒ[„×ì9¦æ%§üÈ”Æ|o‚[‚Ç’ ÈP›`Uqó|“ˆ+°5C°úh•Hï)šé*¬4tà B³ àé¤kü ÄÈñŸîhÆÏã·øXUT1³†ôoƽa«Ð.a‹.R‚X8V­›æÛ4wp‚ìÌâJZ./™º'_”ÞéUƒB ›WuF×o0ÂU—¬œ€Éá<;IùöX¶'Þ¨{Ñ@ñ|:ø¶"oU'™½¿E}¼l§àÓ¢¡9¬ô~ôm<|XÉõ‚Ö“öСA4"b¹¼úU¼‚éü7£í±îhC¬X‰ûU6 @7Fœš^­íÒT’#£$ÞÏ”Ñló†¬8‚ŸÓ×k&‰·—ù6ê°B–ì4fí_b”x[róÆÖä¤'8úr~#-“ôð€%À˽Z¡›÷ÞXÚz§fÖcŸÞñZq§¤‘ “×9­ú2»†²zk¢>ø 0?ØßdÅ ñNÌa†\™_0š´sfRzúcx)!ìœë~Ȫ;×{kµ »’m¨`fH^ÄnG·ºØì¹¸+º`Á°|fsnhÍLiä‹,¥ÁÌCzüyÛÜ„ø¶& EðW`8ý@õ±…1÷WlU¤lûGXî¹>Ô>a¿Å3_ød³oÅÊùõ á‡.(cÏ.K9»¼JoЍîÒLÁ h†éÉ+£›'vàD*÷˰°Ä2—®*@Z çünˆEúè+ÉôôI<"r8Ïãƒ^ bìˆa£Ò›QÝÓTôÒ,EÒ?vGÏ錊Ø×Û+† ÉÿŸ^1¦—0ø1zÌG÷¥Rõ•' ¼ê2£õ™©¹óœ9=]dç•gV×í WÒ®w(psbBI9x‰¹_–ƒÇ0|ì‚¶B.ö/!qÉÎÒäÎ"=ùÖÖ±½\Ñš«fôsãrsÉU,j§D8‘`§[YrßqÙÆqz-Ã{Ó•R¹ÄÍÃdZFª 8…ÇlkÄp ³M¹Eöå¼xÏË…£Ö)iîõ=´Â÷,ÜÞĬRßMɵÂXó¾S¤èŸIxŒ”!¾@?Ð×Túy¦×³¦Ø =# J>×)7¦ð²ƒÙf¡\ªª­ìëbåe×-?MÞO kFGsèÉdÀ ï ygÒýü'“ym°ŽÜ;;³½Ú§°8ÍÁn¶ù~l¡ñnª53‹Ÿß¤ýâ# îÉHtÕýoŠEA±ÒL¡w¹WJ³}SŒVþÛ´™DŠ›'ûÊ+AHK¬¹/Ô¨(› 3oaz[æÊTæúôÝeÀg©‚Ø¥%ÿƒ€™õ1&¢)Þ¥MœÑAÉ)1r®d¬Ó¢¢µÖµø¯Oh @!bD:ógbs²¿¿~òoðçÿ…endstream endobj 146 0 obj 5662 endobj 150 0 obj <> stream xœÝ=ÉŽGrwZÑ0 àµÁ®É}9z``c Œ¥ø0ô¡É&)AdSê&)qàwDdVUäV¯^/”añ b1+—ÈØ·÷Ë™˜ä™À?ùÿ¯Þ?ûÃwþìíÝ3qööÙ/Ï$ýãYþß«÷g¼„RŸÅ):åÌÙå›géKy&¥œÜ™Wz^Ÿ]¾ö·ÃÝù…˜¼7Ú‡Ãk|6Nxá¿à³õJÁó§ôlCPyŒ&nØëWìS> L¯¬¬q‡«sx«µ7ñp{~!'áŒ÷8XY7‰è×Í2iŽoØû›Áþís˜Ò«IÙï°¤ZÃä?°?â³Öp:W~²ÖH¡¬Ÿ¤¶­Ú×­ºb†œÁHclDºØ›ãç´ m´¬¦^Ff¹Îû3¶Z~=X Aü¸ª “ ¢\é†mfüt:å|±¯wiAÖ|9ÿï˦¬™¬€f—×€VVÞÌp-æý¼Ì;€Ô—m¥Ý ´ µžGhk` º»ØÃ> +›?§Ý9Åg#¬‘“6Ãõ2Ôµò.Ï UŒlÂábÄ…Tˆö2Áƒö “Lnƒ£ö;v©¯Ó‡ä|Jö®±Amþþí:Ët~aŒ\ˆ‡?âÛ²áM»Ú Ä74¹ÑÂGN"ŸqÄàg~޳`‚eu"€ó5r Ú–f X]”f[|¾SB%Øê)(]@ë.½VóíÓ2¶ìaZ¨KD ²˜a¶k¶§çi_|ø1¿„éîè*Q˜×8ËLaŸ]P%nsf]›ïgºä6?4À#ÏÛ BG¿^‡|È磶~¢“|¢k3Ôçíò‰D[‡—™ ÁàKeN$˜,0‰3¦â_¸ «cõ¶‹ôHFÑÀ^Gƒ_§éŒ|Ä›ôV‹Ðƒñ¼Óô¡£èCœÅqÍ >t ˆk„¢/e=£1N’" „:Fí9&ÛJ>Z’ïõã< B$àöÔ"„ š-Ya„›‚U™›‰ØÈ âG€BÅHÇ÷…0aË%ÒÈÇH¤a|: 'ìÁ{ /]‡‰Þö®ƒžAA DFÖA#kK[¯Eš_^d¬&*Ø©?|ŒxfKP^ƒÙ¼r`ãë}è³ï÷ȇ¥­†äfûU º*_ë„ëk©ü Åg ’º_XåTõ“¾SÛ¤‘à4dË ßrŠ&ÚpÀ …i£Žtm0[Ã~a5'_âcïè¨Uh79'…©etx`Bw ù—o3Ö€‚È„NÒ;Óˆ°óØDù ¥à¨0Έ)‚€ß‚¤#YYhÞ÷1M(õxÂ.ÿ:iü× ¸é,º‚^')Xvk¬¹`uÇVk£ È ’N/’Õ– qF²*D¿&h»ÝT¼Ãû¡²ÊÉ΀üipœùb…½ØÛ—]Y9Ð]ZCW߇|MJ÷Tm £uÃ%ÁMšZZ]!Œ.ØIØ[®h ”..“³¡’[ÒêÛ6Lª²»kã¾ÁÖT‡oAäw¹¡„Ãh›=¯©ÖŸú³¼K_† èÃ뮊º<í:ü^Ö»&€oÂõD;fŽf…óÎJsuÈ·ÊÁ{Lo‚e §jšÉNñ¬^Ù)GTNĹ »ú&CLëÓ•,:uÜ2WA#^òöKû}è¼JfOñ–+dœ¦õ®q¥?|§eá¤CÍ)†³Ë??»ü§¿¾E)ªƒ±.Ž`Kß•Î=e€èô´¾ÃU”‰Ñ–÷ûóëØÉ^­^íx  €ö2IeEîåAiPv‹âpˆ“j–æº6OI•J›Û´°,½ oÒ´&t؇ÙAµëÖ•Ÿà&|“ÓйE!aJѹ¼~9är*€H á+êĉzá››J?&!†Zd%xœn V©®]P“i&Í´·Rb ­˜ÅzÛ/¨4`m@Ãr­ÆNÂÈämŒ.fÆ×RJÇ[’;…fGOeüÈÜE–úþUeVgá¦÷Hº¼K³%Fíðuxî^äjFÍå.fvu!Q‹|‰ŒÛÝþîÜNk4²jŽVqÒQ.´@4Ö?ƒÒp1^Ä‘ÌÑpßuÑŒFøMu ¡ÂÆ!úŠôˆÀ`6&Btr•ÁK#¶-Þ¼‹þÄüT?åùj­n(·ZcvI³à‡Ö]šËÆÇ‹>¤;45óœç^+V¨ü'¤<˜^á¬ø‚ÀD¿Jád%(\§Å]ã…™×Ì*cÚÑ8ÊÔq<ÍN?œTÁTí¯Iz@¤Eo©è:gOWH w“‘ŒÌ©ˆÔ°óhsu _¢â~ªwFÞÇ¡p{ Ì«ù¨~Ëw’À_K|kvjû¹¥D›#±ÚÛš#?LSAXÎFŒ<8@íÎ[tò^ö­¨ÖJ›ºÁO~Âþ÷8¨Ð:Ž@û>ŽÃÍ<¡Ù÷èµv¬jõò4b ’0\ãw9N~ ˜¸+ùàˆ5ºx&`Féº>¦Å €‹‚ÏÈoñóâz¬î‡À6ÒV¸ö„–†€!kFÎ ’2]Ÿ­˜JÂo ûv+~ÃX?¹Rø¡ßéjlp¦Ð…¯Óz˜trÍ>äb]êëh– N (™ÒFKhÅAÍiÑòŽ¢í•2Ø)ª†Ñ‚BæÜ×W0•¯ZœÒ•ÝÔ&5ó»´U»ág+UkÁÖažQÕfBŠ®»-¿Kó ßjÖ4›á\iÃX£ž\lÌgEöx[‡^ªÌ›Ú&´À¨´™q¿"zÂ! ¶²c`ˆV’©'‘¡.yð÷o+%'ïy3"ªä„"…,8áCiÁ½À„Ã*ßù½òx•mt0¯ê¬ÈãjÕÀŽß O*5i×Xøp6aºœ{õ"(8uZÜMáhcw Âçéø¾LºM“8ߺô`³2lzÍiˆ—fRä5›„#B ?dkw9oeXÒÎFØÑ¹@bÙ ¢‹{2ÃÒKüødoréHÉ»NŽ›­c~ÍW¾VIŸE=Xís퀘Šã\®,Étí4)öð0¢0VWþÁf ww4UIØ…;òn¨,¥±Ú•(×ΦC©Ì ¥ŽŽP§G»àtÔ9Õ“ÞbÕêAZvÃÕsΞË›¥ãA ™k%ÃEŒ‰¯¶na¸”¸—94âUGëç³¥g8êßÜ&+NFÓ‘±4KeèÒBkù˜ ¡h‹×MþXÚh)úŒ?¡¶±–ä³6u,st—Cÿ`ߺé$©7:õuÞ€iÕ¯ì½{.g1 §’ Z[°÷ñúÙ¿¨b寯}K=<þ@ÐÍÓYsfL•öÛéK˜0ÝáÅ‹åËž›PiTXüŒ´ß.>Á#a´šÍßýcÚS%@·½K /ã |Ì‹sväiÅñ¾ ÔcÒQ‡’¾Ý<ã× œ¹u•ó¤m VÁs§ÿŽþ Aq u"`:œ®E†t@¥…i%Ãܶ[Ä¡“¶c… ½©#A0vS>°?á[ ‘ªì¦J1¦ÍéXlÙR¢Kë]œ¯6%îèÐ e×nhUtw»e n0Ù DLƒ`I™H§Tjèý…íðdH'’®µçk«œÄŒð/ªö@ñ (Sµ0“rĆ‘ۇë$úˆ…¢ªÎõ+/£Àr8÷¡8°t§Ç/³ jZ²z‡k3ð”çe#_ÞTU¬€àѶ 4ë†âàó’¾; ðÂïÒd˜æ•½OO¶xŸÞäWÝôëu— þeì¼kÑxÆùt>8Ø•6VW}åM—)û#ey_Îo. zú ͤӨ —%¹… ð(avÅ,ÕU7ψv,’Êf©B¢E¯.ýOçAbD´¶Çñ¢£‹×ý^ ÏFæi*B×ò<¤Êç G廤%.ñ²§ìP$p2Â7Õ#š£còŸvá÷&ycµpr§cç®A>dât›Y*´+Û-ûºŸ³„Öô•FžXùfÁfb$GïÈ"Ã5'Þ‘W);uçEÎÍnúÐmhbó­?6h;`ŽD„€ˆ»“òN,-ªÊ°fZF WuÅVs3_ÎÖ:rh¨€,ã¤RÒ.iFá¼Hz§W“†GIþ¢mÇ[Ó42¤k¯‘!=n¬ä5·Ù(>ªMá4©!©à8²#¼ëðM»óæØa-ìòúv=ëÅcœu9ZEeg§¢fn'£ÂÁ¶eT”šºÍ¨è2¬)òÉ«°#AN /4á4\ÁÖu‡QU %RV]ÈêÈCº×£“X7TŠx¨a4ËuŠôÈ£Ü7h p«5«¬ÓHH<¹¬|©ª ï® €‹6ñ+FË(WÂã2×ù,n_†ÀÎR|¸7›:Æ?°Y£î¡Úp^ûsÍtP®æôx»)m lÕ‰X\8¾*b?(ö]& Ñ ~MÁèž9I“”• ¼ª#M%@öH2- ±k‘Þ«©D^³á¹l/ãIÁpT†šiuׂª+nŶ„qÀ*4÷áY£”[äuGGÕt0dX«Ô~yÚA¸A»xeÿDxHK³rÞ”(Õ ”mñ"ä8FT©üKRÑ“†o2îéaxKü9à÷+%<ÇB´&YIùtñ몽³k.‘ Œ°kЦ9u*ϭ摟“+Öé»Ð€‰ö3ê s=]6ÊÒAâÜþÄìc•!ä:Ÿ“.ó­%‹e O3ýÇ:‘-b.lÓ㊤m9 ß¾?G×¶ ƒXà&%õ`¿k*‰Z^§€š9欣±ë±êœ71J²j)T9ÈDzÉn…û“;„^·EâŠfÈQüȆŒöìB¡v¡2-9œ+¥LÑ÷>ZBR^_Hiñ’¥Í »Nç5Ñ ™7š‡Óî\0Q'1Š!Q§1Æ|–´Ð{š%ˆ¹ó‚ Á ²•1>(‚Ú] c`EÖ•ë³!×)#ˆï›4Ÿ“6‡4|tFëÁ|ÝPpð°Ö~ÏЖ_Sß¹w$cóŒÆ,÷¢3~TDƒ)×þRæBÔJnfc]/•¤ k  »¾e•´$ÅÛ’‰„=‹˜›GwˆW*;·‘¦ –êaÂˤ ÿͤI¯ñ&Ò Ñé.mb­¿ eî@ãGåL2uWPpnƓŽ%©£xÕÀž¸Ë×Òä®aLI¬®W)maò¾Nûˆ@1; èÍ×ZK ]s¯s–Mt÷kò4ûšSD†Yv)ÆåÀ¢“ºR¼wdBtàYG§:öɦ¨q+}'€E¥ Š|yŒŸ‚<€ós~0¢p{$w?~96$šÙ09[&V (|ÆO-„–p¬/;yµ›…,›¹,Ö÷q®`•L«#hYÛ&nVØp"¤R¬KóѽlÓQ7.žkå/PzmKzD×ëN£\k&ÊÇgèÕønS>p©6ïFÂîõHªñI~J»¤ØU)a‹á„XUqã+›à½î×, [ÁˆXÜ×F$Gˮܥí W¦:f:NYW×­¸Ê3親/M1ìb²Ìv=ƒFV¦Î+$NlªQϬqâŠTè‡rq’¾é‘HG©Ü„DDQMkc«QìH­kÎòè—EôOm BÌVgEäÝ”>ÔŠP-Fve±_JŒ­#‘ Èê†D0¥îtÃÏÔf‡$.Ÿ@¨ô]ˆÈ01¼eï™fNø’9†µj\[3ˆ&j]¶ÜWKŸC ù Èc¦Ó‡†»yó Ë0Œcßÿi»å7± ¼YG:vð·5+ë6­®Â#üH­»é&ço¶Ú—0¤“Å:£—Ô9Õéú–^'µîM¸œa;7ô(íÜb4B÷Üuجlmðf °`Õíúö§åqs¨ÌZ!û0œ@®—Q¼i[Ô(VÔ«¥ta1ñ®éÑzyÖ²VV^D3 7LÌ:’ꇒ˜ßa‡TIB¿N EW ²7éu0>©éIÚ2Ö1hÇ3¢Jÿ·JF7µñ.ý»v®6£ÒÚ²ªt$àøþ\”èM?9UÐYjñU·#‚U¤ßÕ(hG³‘ÞÙìiu=«äùyÏ{æVI ðoŒúK¾Z³oÌÅØÝ€"/Õ¢hg‹*ÆRÆ lÉŸÈêD{tMZ[‡£ú2Dç§Ê8ú-MOf5Ï:dqq;±Õ”É"ätƒf °ÆÔ¿Ñh+ åB*‡…޲Þ,–ÍDÝtAJÕ4G“Í#æ}-ŠØ´²Ç·ëãß—¸F×—…}É}‘tŒ;r¾Ýà%uÍÕ+¦Ç× Ê‘žjØ›Z2¦ –ìÝ"µýyj¦……`G€j4P‡¨¾ìA•…ˆv…¬¾ÁÜ_Ñ‹¿ï±  <<: ‘Ò‚©U<¬3K°yæ4ù+p1@%È)>¼fcåsÓãûõñjyìÖ|LlÐ;žŠÞÜù5DÓ<à4ÓN4ÇlHÙOª]}†?ÙÕ~c ä½O“`²KSÂ¥¨N¦uÜ·s>fÊ™ØIU„C8WiôÖ˜¯+›†iŸº©Âœ3Øé À¦Ö ºnÞ}J¿n7UgEmz›R‹éd¡:14ÖGa±­âê|”Ò RÁ?q%þ=ûX‰2NÞP¥ Õ+‡ž1mvgÇ%úݬWæ~¬K°6Ôd Ð‡wE-®Ópg%ç6æñ~þ!Ž VígÂ"sõää“JJ#îgeëëà/óE©Úä¡üòÍ\^„“žk^¸«¸¦©Iç@ a;Îe¦ióãÞJ£€ÈÈÆ—kÒLÎmî­ w^´cyPÎæêLi,¥©cRmyœúÃŽê2öšŠ×ÙC˜ó ëBˆuûòå`Îõ´²ö>æ"Û/KÕ÷ gã6Å>l\ð$?…_F–öèN뎈 ‚© ¨Â¿`ŒV :¾î†ÖeÞa`pÏ—Wó:väJ¹I#¼®›Ñwrø¥#ÜŠ[¡QaÔãyÕçi›4Q·¡VHF¯ékàélj`kk(DVä¡&žš2ñšb1®‹,XäsWÊÈ|?ƒ–m{P°åk†»]”•³È.4þÜRÕO&áK3,Ÿ,=Ô8[uÕ?vB¯7Üež°›‘ rª2lÈ‘Ê.õýz©WÛ—jY¨G5'iY‡9"ñ^±tñvÙª]|Za#nŒ7è;Õ™ (JSÚxÝUfx—·xô¹ò²k ÞoM——ÝWù{?†JÛŸØá˜š"‰º G›£ˆTW.ÈÁeî~Ûå¨îñ¡×IXRÔ·é;° KÚ_f(™ÛÙqŠdÉÒqôÑ.G©%ÓÆï¤ÑˆºoÁáá±D–Å®ˆr?¡6†bXúˆž³†óÚ¢££m‡Yï$l™ðCê`%ÂÆŸR)cF†ó(F‡•C‡(”ªý¨c7<>Ÿãoj*ËE㨆býݨºP[¡Èè·«›¨-z'|4¤ò;k—F&ní#K-Ê7ÓL¶d¨Çdêë7dhz{T†òò„‡ÈÐÔ»½ýUK‚š¤änå¨iëçÅÙ(ˆÂ»‰E;ÍÙä—KCë’å“ð÷{•,]ÇÛnå‹ÓWÓ[.\BÈû÷Ž6ç·'A…D¿¬pul-ç –¿í— òœîhàÈ]%x_Ä8…ëÆœeàØXÀ 3¤ ŸCa§òêæVk¿¦9¬jrZij¿«šwÃVÆ‘ûºaU82öâߓڕ ø€ðòVo:ü0'¼ÆµÊ›±Võ8yÔ·µ:S0Œæ°9È>ÿÒ˜5ÓyãðöF©­·éÆbã_pð{F=£TKž—<®¦À-b@:¬ok²£n_1œ]€q+ÅÜã¿èL`ˆÆŽP™#Ì,Q7Í8g"©c÷Ë~Þjý±A´¯à$†pãqؽdOÖ½ÃL˜ØxŠj<ôÄ—©#ž:ÚÝMép¸~Ãy… b«œWø¦ÎÓ¾«´åk±Ù>3>Áqu”RŒWh±cÂ(3—·Æ©ŽFn`b’,VŽ7ãœ[mTœ^ä9,QË©Ÿe6¸¤u$HAÝ'G=›¾*aáfbS@ˆ›ÞŠ{{xqËÞ§òMÅÀ’dðK›r#žP‡IpíÇ¿ 1ªQ¸ÑF­S²‘FÆîÜF$²Û]þ¬4N쀙6Ü$å ßÏPŽ7ÒP[±¨â¯z*< l£ ¾ÙêgÞ2K?=‡}ö¦›ÌÓ¤†…Þô)%ÌlÝßÖÇ/]³øØºÿƒO vˆâ ,/óÓ:Á &éxét …4öïûëãMÞ¤2˜j›ök2Ȫ¦yëuª K@aŽ‚Ï›Î1Mqu³¦šÌ´“ÐÛÚIˆ:ð²£1ëzÕú·׎¦V ’rÕ¶¼F!¬—ê÷ž!Ãõ¥[rð“X̤~ÀeØàê –RŸqöÝëãaGqÛ—47¶‡Ü£ø D¬üb8ƒ²àÿã-á”›£5ÓܶawÑÏxöÔÞV~lå}ëQækááîס° ßì°|Ê€–ÊpdéAÁÆ_ Ž™nÔ ­ÕñŠãÿõòÙŸÿÇ»éendstream endobj 151 0 obj 6700 endobj 155 0 obj <> stream xœÅ]Yo$¹‘~æGüTZ´rx¯k/ öûâñÃô¥žE«ÕÓ’=nÿzG™™Á+•U¥ñÀ\Îf2ƒq~ŒR?Ä$ÿ“ÿ÷ÍýÕ·ñ‡»Ç+q¸»úéJÒ?òÿ¼¹?ü÷- ú§è”3‡Û÷WéMyRNîà•ž„ׇÛû«¿¸“ÑÚ›x|¼¾1BMÞIx ?åd½Ä§bòÞhŽ?âo­­Wþø [oCPÇ»u’lÈ»4¡±úø'¼pLJuô=ü0ƒêø™MøåúFNÂO“,orZòoë„.ƼMµÎÌC\PáøDC¬ˆ0<ÏncÌoÚ ¬å¬¸OëÚ/>d¶¸òñFù²f9ü<ûNf¢6Z"áË,l#v^ZCIp&þMþ„¯êI[ÍÙÿ>M¨•ëq_[Ãßuiúáúo·¼RÞOΠšÝ¾¥bbÅýö/Z꟔2Ì£qb©#ð‰>'5(¨ê—ŸOËÏ4[©ÜJLQºy²W°$'+ü,– u©!ŸØs®—³èœëI—ؘ§¥óHÊ–b .n`IÖ8™høÍ©Þêͽ‹v&ø†ŒõÇieÄÝúô_ËÏçWÿ›ë­ÍäU­¶°Ö)ȱÞpåãc8˜RòÙßåo¢ÓHŸ '˜;±µ1ÈÂÜÉ€¸éWæŽ"þ"öFs+w‘+Y×<%ÎéC–%úä)Z+Q–7ÊN!êà “‘*&™:zÉJeBšÀHpÑþ¨áÓß8þî{L”áá¿ TéA"_ð±’Î8Ÿœ‡Æ!ΩӺ@Ñ¢ÑÅFÀ'+˦DrÃSŒBnÿtuû_H92D£!Â}´J áÝÇryܳm'!aê¬èoWû`îã~}úÃúóó2 G³Âß1λI8‚Þ¦âsM=ý²þ|Ú$èÆáW@ ›!†ô©ïS.8 ³~MJŒI ?¬|ýÌ'…ˆ`89€g~ççVHÝuÒð[zÊ®MÄËÙ^ú-ðÎ-!௫ËIƒM(d D…EF´ et+&…Âx­EŒÑ¥Øç„…·²½a'ÿŸÛ«?ƒöð3@¨ßÃBáÆœ†+¸Ÿ*Àf×'¯¾­’Ðh)œ Í09eÔ"Ž{ ürm‘<‡N•ˆ Ögö›¢DI¥äB´RF‚oç”*áûJ•ŸTša¥ô›•©„çÀ? ŸGò¥6]yÂëJÇËj…u?:ÕÖª•7Þ@èœ7ÞÎ —ðPN3¬¼É—RÈ,<éݨÌ3í£ê­…4ÀhÖÂÚÉ^@2LÎC¾ˆ8ÁÓ'·çåv’lá»nrŸ øO*^Â('²)­|º'D`uP¾c—IÌœîÚÞœM+ˆ>Bhg+€}zß V€;‘fØ%js¿åjåÝy¢VA‡ÂJ:¢®Ç¬~ÙjX 7ccšÔ%f 3ò©•¹ã“­D/ ÉøRxù¬ð] ˆ¹Œà=Ì dKÅy…… x˜µ,xvÇèà§áÿMšë˜–VMÑ_@(ÌÔ„žIŸ)ÂÇ “Yš³ÉƒŽÅKlf€èc 6½(N˜Ãr 6ñ_Áx!/YÌ09š¡´ŠÊð Ðõ¯…(*GÎ(Ë“ˆ0jŽÌÖËɈ'Q‚‹l·à€ÁWFõû+i „õÉäÀçBša%ç?‚ºè±S‡_ @ÔÝLˆ°@@Y7 Þ—¾ý;ZxÔVDZ:è ˜Óí)Ÿ‘òùs›´ sÖ<§?xŠ„¨–^Z‹1,£’-&ê>“çl‰©#ÉDé-¼¯„ô_×pÞhB!Çäß dºªpKÄ,w2þ˜ÆLéZ½füË2 ì‘m‘3~ÌO…Ý®’ø)ÎV_¤a|.×–0}Z×™–|ðGœ9pÛ“櫬7Nâƒ+Ò·ìMN5üV–,Ë l ÓõsnU<þ>c…Ñ©&ãP>s©†¦eº3[Up©<n¥L‹gÛsb!Ô¨»HtÚë"Cg‘ôf^$JøïsÍGOr)cð¢ÊÝ2E*’@àg™Š$”êÆZÊ-ª=/ý  S˜Š~Ål½˜?ª}œX”à2éÕ;TQñا'Ëä?2UæE‰»<¹ôUŸÂ˜-‹BR|,x•ú×°ß2Ò˜ºF\Sª0öq^Fd:]UÎf><ë38>ä‹#™ q¤‚iĺ«[õ®Pô¼pÕ_·ï8š"‘oì ÙĬÈ Ž}&§¬¶µ%Ôí7H”+.¤Èå5RyÎx>†ëk[–Š©zæcÌFdÒÂP5“’”Ûz}!?îyù‹CÉôYG‹Ã’89¯:~ŸHaúõÐUµ )€síáô=â!h«¢jW®þÓª€¡*¤Á^jT°äÖÎÀ ìHшË.é™mK%Ì´÷ SÙ,`À•\©YÁàþ?$Da²9ig{ѧ¸¡¥còÿ3ñ¥ÿ߈½Ü¯ðð§âÜÖWxÜrƒ<Ó»Ûð©Q”˜Ÿ™â(”ŸC6ÌQ›K;Õä ”!SÄÁ‘S¥H¶—ÅÓ”ó£%|M,“Þíf=í± ŸÄ2>äŸiŽº8hxÃ| žˆ5°½XðlÝi±:RŠT%ø!ÆzJCâ ÈÞ§‡A—ï±û oþJ2ŠL|2 ãù´ïÊÃGJYý€³jKýhÿ¯UÝ÷#1«nŠñ’\¤‹qFHQ8/šÞ œv\ÇŸ¯K„²¥œºŽû­Ò¸¥Á¾„ Hgm®d›Ë­Mécb“t¶v.¸@£¶w28dØÄƒ×öÖƒ|á]‘&p×»¸›Â ³´'tøl*ŦU‡n;ÛÜð”–g_&e*Ëxp’ê3Pƒ^DHÂwUs>ÖQmBf!È5\ä…"_Ú/ã<Iœ‡†Â_}•0 hÔFóSâšÙ–€Q»ƒL¬¬ßæ; ‰jÏ–ìžt_@à /¡SÒ} [Ò“‡Ø:"RìèJ¤E94š3Ïòu}žã*Zšoë_)-Ÿ2 ¶ëÎ_ŒMÎ饛:À„Éõba£?üùžØy)ØŒàk£6«äL½Q‚ÞÈ j*¸ã„çÞÙQJ™OÂ#Ë b™ýU®‚P¥»èJɘò)¯X÷JdÒË!Âó ;Y RøÇÄ•"²&ÍÏÄ•ªßVÜêäô ÷ºQsÓBO¸·ŽXšiNËïØKWPE¸)¨¯ê*°{nMÁÚD´…Û瞪äVšÐíIi 2ö£Ìq®c¸˜ˆRت1»îÆÙl YWQ±rúÜtjdFcSF¥øÝ‚Uj>3úuJº²©ZLd1÷é3ð‹õ¥dôMóiz‘60s« ¡­2æg%Ç”LÉòbKCÊiojkàcr«:h‰½oÝê6OØP§íð©ÛNGiÌì5i¡ï'î‚-S ­Åéê;\ÄUî ×hË-Ö%w˜Ezó‚¥Ô4£z–$bî Üèg¹¹«`ÁJÃŽØ!À¢L¨Á×D•^³Ø>b<›í¨ÂÕé{zøŸØ‚yΡ#MÙÝU´»©¹­ëf&/%%¬ßÜü”(ˆ¼U,KÖƒAë­f4ÖÉíöšf¬Hï9Í-1©Q†zfØa¬íF™æD)߃n6¹Hý:'¦mÚŒ€ÈBð{U„ àÒÕÁŠÎ4ÊarŽ»ý¶ä¾òËá[€Ç´2©Má|fíw{€R³šÔKðüjN?KžN™wmD´m8Jª³:Ž+fãÿ>•Ñt±{ˆn”͆}6ƈ—lboÎÌEãbr—Ý®ÌM)ÖSÝ`tv2ãnõ¦4µÀ-O­+q>Wæg†Í7bLÇê|FDWYà<º{~QúIˆªŽ­^Û茒ZŸà¼²–Ñ=`o¸‡Ÿ¯»Me˜#-5©÷$¦¢Y [6ìaR¿öU·4 2½»g)òÃ{ì:zÜ{|,2w BgØY/Ù:d£‡LbÁZÔ­5#2ê-ce#ÆÒb7YYƒ-|ª*oÀ§c‘ªS—aÍlŒ/ŸÏd±/×èãoWÕlWŸA”jñ`Ú¨$ƒV²Du|{ýõ: `¼Jöhy3 ­ ¼6JPw}fPïz›fÄõiAZe5›5º ÕKÙ(.û÷/IêØŽ^%Iô‰†ñ˜ókà­_Ì#‚¨¯l(7ò™Êrÿ1/Æ/Ý!öâcj륬¦rsVôpI˜R A–…—K· ѫ୨ý}nãsÃÂ¥õ÷ʃ¾ Çñ¢‚-,Á©Ñ¥¿JÁ¶ºóôçõާcçíÕ"¯7Cµ¨²¶Ò8¦Ýx¦eçÓoNøôCãçÛkÄÜÇ·#3÷ˆvá1°?“ÉÊy ´ lAù9½ÃæþZKñ=øþKîšM¢Ýp“þ”‡È!àå£9< ˆÎ8@ÆBÙÊJZ)§9GÍó!G7ET[ «ÕÝçô…ß[QÚ“2œO_ì¸ði9­Ä¥Ïõ½°WÄÇànêêü ¡¾:`‰÷FɲðtÙ82H39ÿ ÜTxˆ8Þr0?9ãc0˜”€à¶øüE8͉ÂîE8>Àá•R:„oÕ” ԕXPzÎqK ƒÝ4À­aTøâ*8¸9 óú%nFI9¬À‚މq7õJ0xìÝ•ÑfyN7Mƒ/6-´Ø¶O5Zƒ0aˆ:úIãÍÓ€ÍV£í KÖø6Ñc)(çšc5ÙK°É[p_U7õE5yÛ4»VÇYÎ3¼GÑÊ=0Øoì%„+€ÑI/û;‹‡)Ü(7Hü3\:ºI°FFVO-ϵUt q3u/z;DÎm(ps1‹¸£‚¯Ë>¦¯Ä0†2AŽ+®'´§âìXо¬ß0¥/ðt÷ryϧ¤^˜tù^Òq–Á>ªâ1ìäÁ[©dÔhÙ;\mŽµí¬‰´2e·8#<ØržÔXmÊììzHƒÃ P3@#ÿA¿Déew‹ ?4gæ×{ûðn/Õù_Š^ ĺ\ˆGÙÓrv|¯ïÜ<_8»s:#ž–ÞÎE¼c#ßµàÄ=ÇØuÄ>Íæ;Ò!äRK† ÒßòÐ@´ª†<äåÚ²¶ÂûöØÉ—Áö~TÝéÔCùùª{r|w1ß«<}•FXæ¡«y%J¨°Ew™q[|÷c.“ú1ËþmàröWÚŽ"³mí¹¿ÚÕz\³A<Ñ6öt϶YíéPˆžû:J¾ˆt»;¨òцa¼]oœé¬´1˜=XÄØä˜Aju°3®(Å;†Æ0 ”#4èaJ¥.Yîs|Ý®Ò`] ó×/ ŠÃæ¹Q¯Í²â ѤènðB^ÖB’ñ~λdEÇ•¬ü¦„LajÌL¥‰FÓð~ìÿÎa?Ñ\Æ€=wP^^˲¬QëÜÒ±°ë¦ø¼N*lp‰Ô-ì0£R¶­l¤RE©&ËjjS ~9Ú¤mÜíÁ•ª ðMŠ?…õÔο‘ã¯ö¹¸VÖBn¼µÒÅÆ»J 4ñ»™\åçZ[ž¥µã>«wiHºz¯›Áá†_Ƹ\Ð+«|tD\ÉXõ³,ÓUU_<}];±À”5߀-Áˆçèg^j(ƒ[ë`ÐcÜsœ˜j¬0¿Ù1^Båe%bY^Õ—E<_œÖ¹- ¶Ižw7„ˆ—ªœœfFæú2‘Æ÷ƒF8ƒ³ˆ„×U)”Ɔt¢ÛSlŠ=ª<]ÄýÔ ;.ù,<:+ös'|vüÍŠ EŽb/ÖI0§ùºßÿñDìÔqtþ·J!QaÜ€ÀŸf’f¤ ó—ªÎ¡áÉ£†—ƒT«ê”‡NO‰'¢ãFR‹HÕõÞ ŸâE_;Q2œfíÛ“F‚æ<û¦–{Îv>­ÃûCçp@‰2‘ ÑÉQ¼åP•UÏ2øLß(u·Ê={˜´º‡_ Ë<£Î[†ŸW)ÞºÐËsÍú“¶íºÙ”aÒߌÿ–ʼn÷<í8HÀilòxi`äîqÔLÿ!·G–w1œ_çîVá ÞfO/s•âyƒÜ(…•>IMþ>§ ›Xäûä:£s3I©V'¨oÞKn‘keUÕ–\ÀŽÁmŸU7`›èÔ_®ªI3î¾[nOÕÊ€#³q×_<:­jE´ÚðËçƒi¾ÉŒÐã°y<'½ižÙb4·áÂðoG Î]ÍŒ)À`‹ç)ÞZ> stream xœÕÉr·õÎòGLå4Ly`ìË1©Ø©¤’Jl1¹Ø:È¢D;5²HÑV¾>ïaé~@=3âÈv¤› xxû†þqÙØpüŸ>¿½øì+·¹¹»à››‹/Düã&ÿx~»ùãLjX°ÒêÍÕË‹ô¦Øã™–nã¤bÜ©ÍÕíÅ×ÛoÞ^î83Îx/·Ï.9ÓJ9¶7óãÎpN+ç·ìr§¥fœ›íòâ~ž} Æ$—Û—;i³–Nx ƒ~ƒÑ{\B¸Ú~G–{Ç-wÜV»ÇõÇ•¥†ù^VAÃÑû¼LY+#Ä Õœvz‘pÃ5N6Ìɉص­¡<ö¬o {kæ„¡³ïÒ(¨Ã¤¹ó¦H@Üî9ò7(4”Å©žûÁoÐv0ãM%ÖÔQ[Jø[scS&ø‰*ë‘vW赚i|"Û§ÐøŸ33µ«Ùî! ŠÉö a|¦@Ö|‘Èi§L«ðàE¥mZ)èF÷‘ÊE­‚ÜäÜ­•‘­}Å©JV´ÈÔB÷£±L­½‹°EuŠÔ#uJÁ¼K[r)–ÃÀ,ZÖÓöÄ2/Á¾e]¢Ð„”½0Ñ}F{ÓN(2w35Sô—MôA‘HÒX?Í%CÃ9("âlãõÇ#¢ƒðOÕ!âí)DMaµ‡?¯¹ñäVŒ"X*ïøEÞT®np'„‘ç·°²xÕ1+Ò>ά“+z,Ò=æ–¨‹çÒºJ51¡ò5 ÌŸM!íûdy¬iõ_<$îS€BãÁ ËEðš_’L“Œ¼„eP8{Y¬ÉŠâ(`혜]£ °aСÃÑócô|µJu™;0.œ,KœEøú~Q&ÔÆu7¹€‚5y”àXH5ÉãŸ}Ã"ðid!c‰AŒ”³¿¨‡Iõz$ !Ø ¢´Àœ3Ïq™­,±ŸõFU…¾ÙIA—ôýZ~fW°¹+™š†­nÔ~E7ÞEZHŠ×RIŒF G7S) ¡žÑåLƒFðþ0”ùÙaN„Ði8Â/«éËêš©AD4 é^¥µ½+ßõDj©à*¼òA ¶sÎ…§[çæòŠÃ(”P²Ë sÚ²æð¡ËÞZ. /(WxÁÙÊ ¦l ¥´×Ô 'PÇ68"â¿É}¿(®1åã(,§Q 3ò§ˆF £Ô05ÙcÊRTVwÀéÌ)×T8Žç“EtÒg©ãVé‹3ð åÌÆí‘:J[«©%PS€áåŸ>!ã¯s®Óy‚Y¤­Óp-˺OZå8K‡ðzjÝGVÃZøƒ{ræq±ï®*Ðb‰¼&2˜cÐÕWj*ÔñÙXkkp\` »‹Ç{Át×%sÌ z Ž…ó¡®:-bm"ÝZ Ķ·÷óã›õäTè¶ †·§8 ¯q2çÚ©Y®Q=ÜÆƒÃ怸°Úzá7FÔÀ«•qÅM Ës/€´U\–ë×j”Í~›0R´þ=ŒZ·žì‹;W¡"É)Öu}œ»êÆ÷Ì¢Ö <ï^}DßA*J-¢DAˆQv¦)1bJJ»EžJAìr|šÊ€-_-—sàFi{'7ð[&¬°¡1pQ:à#.;%ßNf<ª§ÿv¹N€xU,ÖaÅ–÷®‘z l¨‚^ØUJUš2/Óép®+9ß넘¬`Œu¡Ù—bªØr|”À¶ϪʺŸ¯’4í~H1ŠdîNQLûäœÆ@%ªn8”–)Û)á¬JTLÅ_û;¾À‚ù*Æ TûdÃ8\5º_à‡J|§Ò½b¥¢XW¡Òl±blp†Ôf\c*pP2Ñ)?—5PW  My‹ªÝw‰¥¬ªV¦þ[ìJ˜”=Ö2Èö‘˜w°PqÑœ•*täƒhɇ8현H!ŒÄÔ`ê¶ÂŒ> ±»Zòmb!"—éüæ›Y±Ñ”3õðùß¼yëwEZ:}€–±á$ÓÒÔèß]FÕ§ÜÑ‹­0FÃïÒ)¦›°|)Km·Q+K±³NÎäP.¢üw—Öð€‚JCJ'˜±Ãß+–΄.õæXÅ] è\T@g6ģ妲º•›B³YxÖ CO÷DκÉÌl™Ó’´N¶3ã+PûKYó:£ŒèC7K<¡%§mÇMT£îÌÆÎÆœpMf'lÍqFÇæ±A@vc“¨\Fùç…‰¬m\ÀV20KÎw?/¨÷s÷gˆ:/ÐV™a ±p0kÒ[©/Ë cø‡‰‰&Š‘щ±®mQNÉxµê¬ç>™:J¶½u›:œÃ »´¸×«½ EȗŵâËjŸÉë£É~êÞO^7ý|Þ´íë ÏG:‰e“±“˜-á•ASÞ± œ.L[YŽAkSĬ»Üš.r*lmWš.òä}Æž[@ÖjBãîG·^€®°Î7WÛNº]EÄé€×ÑÏKkæÆ3~%¿SV¶gg ï°ÓDÛÎmq¥TÞ‹ï»`$w[Õ–Óp¨kHÀ{=g7ìçÑ·óãuà è û6c³0¹ÌQÏ[ÁzTˆKÖñ5ÞÏçxC†#ãë|ŸÌ|¾Œž´Õ!6W¸Ì™ñdOÖP<¹ø­ÇàÉž@KWˆ¢€'’ ›=ƒ<ºLÆìWæ`,¯Q¾©pÏë&ÉQ€' ó8 ,ÀŒ? ŵýP\À·M û˜µÁ“Å[U®FÔŒý%:§ŽË.ÕœÂáPxœ Æ<î“:á€ÒN–ë)±ãO‰Ù}ºNP`" ¨è”Žvýg¦çØ]œæ …×Â’È 5¹/Ð5ÒƒëÁѬsl«Óå88Ž<Ä£ƒ#ŠÍ!ö-eÚ²iˆr¨¬/]ÙR“¡Nª9ÄÂfà vutY!YOˆO9·jõîðÜ£×Mb¦E˜Dç|&Xa–˜O Ÿ'y¡Á°sµ‰´Dg¦›µž2Qà|ƒpœ¾yEGÃI•QÃЬÿ¡°&‹ÁsÇ8¯ƒœÂÏ 9ÖŽïË’ŠLJ†ãÓ {ÎŒüiZT-2àÛþ%¹íØY|Ÿ6´º¾•<  î¦þY^Ô²–D„1 TRcµ*§Î´[\:$‘ß(È=îÞ)@Š7?Nˆéј/[cqKFå¤Î-‰H6¨6ûãFH•Sy&èGŸG:‚gƈ¥EFå“Ë6uzñq“Ó$.âÒ ïÄuz¸­eBL6é@;Wi8õo ¾¿U%:S:’AúÍÛdê 9nêQÃÔ)’ºaà<ÿ°.áÒ6¿€èTG£7Â@•qÓØ8m?^¨â'ßÕÙq]º|»ðQÝű#ð\ÝÅQ‘ññgôFy¿#Šy/r¿«Yµƒ±3z%uâ5\ÜLÀz ŤŸÒK/ÓßÁÿ)—¦Á‰ßþ#Æ&ˆ¢·_à°—ÃNß… júʘ_$D‘„ÒÉ*ó—•’S®êÿl/>`{™À¦°‹Þ‡ÌîäŠÜü8¹Ö_^üK­ßHendstream endobj 161 0 obj 4327 endobj 165 0 obj <> stream xœÍ]I“Çq¾OèGÌMoœfíËÑËŠp8 [’ c#.ЯWfVuwÖ’=ï ²¥_ôTWgeåž_~ºV‹¾Vøÿúßg¯¯¾ü*^¿x¥®_\ýt¥é×õ?Ï^_ÿË íu^r0Á]?ù᪼©¯µ ‹Wö:»¨h¯Ÿ¼¾úæôíéæV-Ϋ¬ìéGüm­&ž~¸¹5Þ/9ÙÓ6ä%þöѧdšáïËpoÝé͉‹s&œ~aƒ_ߘ´h¥Óé{šŸâé9MTTáôs™ )7~¾a³½½m0øÿnkHÛþþ~¨äcÈqø‚~ØèrCÿþv^WdÕHšZb ɤӷ7HG\Ðùtþ† ¿Û)ý Fe-Ð4M/Ö¹ IÁj©½cs Ú6Ås¢€ÓzQÁç\¦v‹É¦Ù«²ƒ&k w D©™÷Ç›ïžüû•‰… dëÉHR¡A˜öe‘€ÐŠÎ„ød­=}DD»hŸ×·&†mg«Œ¡©+ñÖ»fŽN’ê¤òv%óV›Å»  µœ°·7·0Ç’´®â’ŒQ­x¿Ä^ÿ7FÏsœ>,¨ÿ›æÎßÒoç½É= Öº%¹£ ½«ÊÖ “§«VT–Xä-ÿðÛæsô Ðâg÷+H#[1XÊÔIÇ„û£Á(9®ŸüÇÕ“úæôµÀh¾ÏZæz§–R3œð}¢rh¶‹q±ûгD°CïØ7ùºó*{ƒí%Ë€Ú´¤z»†DiXB'ŠÞfx×7_gRÿ5¨p§_Ë•“n¦¾kÍXaçô±p+"ˆ´ /š‹£c÷‡ÂbZ™ü­ç%#ëÇ]`ÐwLŸ¨ë^ã”Übõj›¸]i콕´Ÿˆ3xÃlLâaÐLpsªîZs±=… 2=ÞWÓSÇ»Eïéù:§š0ôÉ8½ W…H—AR~Æ n+²£ÉÇO²§’âT½Â¹AEÁ}/¯·h¿a7‰‹ë¯ÿ-4%ªÙ×ù[˜É©d\[±ê#’·ss nÇp .ö– ÚJ&Ž‘ws³À?ß¹rîœñCÚâNÁO»d›'Lk­Iº]¯ìWñ~Å>wÆFŽqŽOàjJ7I£k}8W0>´x®KåSð‡Ý‡ÒBÆÅ‚ü]áDpé ˆq `j)áKTžóŠÇPLs¹%âCZ) 4¨MÁ¤¹çQ5î·Ö°æ¼ò„äÙîòœi¾¬´f< ³hr …§šF9•ŠàÜa#Ø,UYÊZÚøN³S¯ÁG`< LÙKܶûlŽÖMͬ¹¤œh+ÄÞɉŒ ²G; ÏKöÇM57˜ÜJ¤F²à`ì"P¼î Y¥2©‰ &¢Ð9E~c‡L¥²~Í¢}ÚoZã!ÙÞ»2ÔÕçià”=zç#R­ØÛÏž™Ñ ìÅÓcwX·,;eÏRp^ü •ù¾ñ_úNmâvŒ·Øz'%@]ãK\è1*Á¬÷Ä:²ÄÀnê ¥më•G»òm³TøìêÄýçY}œÞ”Є~[QBµpcüŠj1oˆˆëpfk +ÄŽnih^M€ƒ¦H¨9ŒkÈ¢—Îð;„.7´`‚3K[¬]xvTˆC¦¥h{p²ÒÍ ÿ$]õdOD„p‰r-È¥›a¯¹4KÇA0¹±€N|- gzSc×òŶV5Ö( ¥°V%îO™ƒ;¹á1m›./&Àí­×‚¦§Ã—ÌÍ;Õ42ÄHN4‚ògÖI„焚¼¹ Ç:H(ÆÞBAwØH ‰¤¡—1b}|·U¬xÀäj•ä]/¦e2<¦lžGáTî ëàj­ Er¨Kþ7‚ß äÞüXRë.Ý*;¦mþ—s@öÝ|S»¾ûOãÛÿ14vÒ1ÿuÿù:£ ÒbRøQj. pßjÈ,"Ÿð”1åÓßoñð”ΆÚ5Â/ã'¶ ôÿæ¶ /WQùÐ6ÂÁ^dûyWÒœØ Ùô‹û.A †o»%jße$(„:œUGKÖ…D=X”ÆÌ&x·»3!ë™À?‡óF#hX(fö[\÷ëV;¬ÃUïôÓ%{ü_û³\±Q‰PPÃ0‹#†šV{b”²Vmê1„R¢àyÈX .´0Ü2#E:´_ϪÙ\Ch,Ûuá µ¦Ù‹õL]•žÄ D¹#Ü}kÓ×Cá“Êèñq1KGåZÊ׃XV¹<£#Æ3“ Šƒ¤ýæ’–›3¤ÒéÕÅý?”ÊË…7JÑÙsðq$Ûȸ—™·aü.`þãàœ£ÙjnÛÍ«Ü?•@æÇ9“Ÿ6ž™÷ÞמÖCອ¸oÚ89êl‡d~ÐÆÒ{ôÐwÑÿ@Ãþû%»øo7ŽˆDb'ªq€eÙRçëƒIÙÿJgg¥^_‘kPµ ›pß6wñ «ï½¼9Â/"LÈØ-ûW*ÞyŸc݇µCúPØé!jÝdü¸9O¦=ɧ®gE¹G¾¤-‰8ño²ÂÌÉ1¼á4iwøcØŒ•›´Ö¤a3^_Rl}K_;gÍ\`:³a¡tô¸’k“S‚hQ[”ÁîO€ÚŠiѰP˜a !,Ôkb«·‰Äâv«sb9pK§•¢òŠž*p.íÁJñ%Â}Ê`d{»„À¹n®P¬OÿŠª 2m$—Í€ÞÒKë1F«ÈÎÄOö»GVÅ&Aæ9‹GÞÝ?fç¹IjIÀŸì¢òÜbòž[*3,Z;Il ïF¢çUl¼òá>± q| ± ?a Q£/k—ð0`°ySú£0ÏÉ%%nHÏ;@TfìËÉôÁƒa¾×ìò¼,“eãäÀÖí MMó#ê]ñ iBØF¼Cúí¬£Á;î´rbröݵÅK-z%¾ô&†-'Ó~ɰ¼ÞcÉî@*´W!u{Rë?n~á ýж“8ùnÍkø—´B¢¼\q¸+#lòböñ”]­2š÷eY.9L(G=såòÍ–ÀYDžCo[f#šã=¬ö‹ 2š¯-[®§¢|ÞêšȦ|jôsÝïP |Ìû,,+ĉ°Õ¶;þ¯/;>v(g³›wfÖ¦ÍÁžÇ¡î”¤x_U÷°ï$ÁÒ°ä€"ìÅ œ$¸Gg¥pï.¿fK²{ÄÃcáœÖX{ø鈽B=6ÁSìOÒÖ›~[Ç$Ÿ:k~¸o¤%´ áÒŸAxë7JKÕDZy %-³{hìfL½ (ÀÃÃö½g¤²ï'žÃÑx^^?f¤¼\wkýŽf¦ÆkŒ˜f¥È`Âú¡ Ó“ã#¼ aÏêW4Ì¢r%BÈýšÞºEûÚÚΧ x,˜á¦{ß²]bÕ~»Q•l‚2Èh|†˜7’+>ªÑÚç_ü¸Za ­2[÷c¯h{“9-ä¯Þصn—oõwÉÜ¢¢Ü8u—qp#íÜ…ÛwóUf. @ð}>Ôqbƒï¨:ÓŠRÝ£YqBåw€ŽÐ+“ËÚÓ‚7CÔ˜OòÄ­×V¾7™üPhð%ܦíà€:ñ#ɪóˆfꯂ„yQt„~bÁ4^ÌSç-ÕŒ:W߃ß"“®•1ZñâÇvƒpbµAñ€dÔ†¡PúsYk<èÔvg»`´I‡m\¢™¶P'µ2¤=eºm€•2Vl$qÁ4øiu%PŸUQM Dz>K±ñ¼5Z&>ÆQ6’…>À!iÕw—…¯H9ú$þïå¿£ð²ÛÙ$¬Kª±BVÖ#ß#ÜcòaxèŒâúX_.ÏòÏÙÁž»Â?$¦Èëµøy®}Â%½t™%ü®d÷¦Š¹uÉ%ÌíŒ ²S{É H€rDÄl5*~j§½óºJ{¡GÎ?ˆ™Èˆ§²Xî8NÕÀŠcØïùúù”žEøülAKe?GøŸ+­ëò¸ŒÐz½‘ݦì´S€Ã:ÚHRŒ)TÔ¾Ut‚ËÕ¶“ÀÒ„ç§?âïZm_Îz€ç<ý™§¬CÛ¤âÅy’»Z´?.†c Åo— ÷[z¤éÚ{A»æÜ­žúº–ÿ_Iòœvy²;dçèž*½¤Ã­´Ñ@oOÂ=ð2„{*jL°àUX:ñŠÔ>&ÊÒµ¨—VîqêèÇcŒð8ûÔ4Ê'Gµ$µÐ—tKRɃlÈKœÑÄ;Æ/°öäa_TÆíñpÆéù–8±køåBXDƒ Ñ¥u*ù àC®5$\Êáe”/÷¼4xl¾=N?¾¹µo“Cügƒjþƒáâ(°%+r´¢tDƒãÕ™áî6ø«–v@§©r¼.Ýçüñ5AÀHäéE}0>ä÷ºº…3¿¾E”>˜Â²-f¿'SDê/WñpÚ˜endstream endobj 166 0 obj 5720 endobj 170 0 obj <> stream xœÍ\Ks·Ιå±ÇeÊDð~ä˜G¥’Jªâ˜•l$Ñ¢TEZ”;¿>ÝxMÌîré8åƒÆCL£ÑhtýÀ~¿ãLì8þ—ÿ}uwñ›¸ÝíãßÝ^|!âwùŸWw»ß]Ã%v+­Þ]¿¾H_ŠP–®vN*ÆÚ]ß]|µ¿ºÒÊkãöâc°^~sý ¢}C…3äÒõ |÷s®ÚÿpyÅ™åš[½¿Ãgc 7™ˆP Á´µ»+!™ÑV$R_Æoœñ^î¿Ågm¹ãvÿñòJqÍ|À'œ®öoÚÑŠæ¹~¤cZK›ØÉî.¥6Õþåå<o|3ŇDÀH±¿‡i¥œû×é­uöðÌiÆ­ h\Æ‹†ÜÇ4Ö¿ $òwÊèò ûW„9Êè#>;§•óøŒrQÀô¿aÉ• ®áî->+eœt@1’ÖG A4ßå±^åwä»w8Dê:Ù)®,•J™2G™¾IrE ”AE¤§¢‰ò· ·m°rÿ—7VØV >\¢zIzÄeÑÉ‘°ÀÞ;²ª¼B%a?ÿ3™å&1âÕþ³´0*ñK²0œúªÌuÙAYˆk£ JÏ&h¿µ«ø ܨ<&§¯Ùå•Öš9ïgÆxiLÔ5¥`H+®ûô“ã£-°°±ñÌ(¿ÿ _ÂQ %1¤œwt"ÐUf=€?ˆFètv¶¨U2 ­}º’‚©<ˆ ”>‰’X¦§X¦û8!ØbšŒ¬òÐR²=¬ÇDóEÆàL¼¾øâB3nvÿ{û§ á nÆÎzàTÉݼñ‚©åÍ»‹/§V¹ãºXeJz¤2MF™²úáæ´R VFÉixyÀ®XW¹Aù”µà43âÖ¨G¢PYûl±ûq»­Ñ*ó#”ý+—º?*ÿºôí_µ„Ú¹Ære’p Qµp t²U뢇#½Ð‚\§Þ91Ò eŒ,z±5¦J\J ¨†µ!*ÅÝ…Tàßìòæt‰&4¨“õÌ;ÓhƒÑÙ 6ïWÚP¤ŸxÓ°÷‚²fÀc¸s8ƒy{Æž  °‡VûzV7Ü+ØH¥@8û¾óÕíRD­.Nýñ¼E¯”íNo‚?•CjÝ[/ŸWÑ€„Zã`-Ø]3Z|^Aõbtv0º6°§r½=Ú–%DžÊ”+F?:=âE³æYkyÝŸàÙ ;(7“V»PÍaÖö¬?âÛÚä(6Y†•o¡ÏtùïA'…|æ|éûˆ¹0ö’¬€B£Ž .G“?tÞ4Ê–ð—¶‚CƒP›ZC|«ï»MXæ­ë¾³°”y€G0Îa!^JÞì¡TG©ˆé”·yÇp´)‘ß^^raΪJ¯'û×¢ñê<à° P³[`=š‘6ÒÝâõ„Ò2±ÖõPÖ©¾o·B:ŤŸïV«Õq´Uj6Á–²íA&$fâDÒàɹÛR›8{°%Lwb„x68ßi’NŒ$F]¡ÅÇô)„B=ÅyÀâL !éœ÷¸ð’š‡Ïq1àP¶]$1š‘8µcË\ØÞD 5Z5;>¦½vtøâˆ¼?B#æF)gš8ƒF+ï‰ÂS;OLWÒòÌPÒrpÓð4m0 àÿñ6aIÒ½¾E‚– ÓÆ´‰¢•ޱR›û9ºŸæœÆÂÔR7þ“:a:K ­u (é‰þ6/Q6Þû}’$À›N61JÕzjÜn}fqV<ýè"C¾ãÚ]&/^„JG‰|ŠSK¤S` Ê¢+L#'ç§¼~x¼]´š ºþ@Ô—>§ZÜøPÎ.€.&(Qò¨K†Ie¦»ŽkñÓ{ÀT!fòàF÷ëÃ*ù˜&Õ*<›*hÕΰá0+sa¬K)·±,ZsÎÔ&Ê­GÑš…Íü]™xí5Wy ó©{ŸT6à†™¢²/‰îQóšíU¡˜”°ÿ®×ÍLªÅ¶Ç)W©µaAúÕfÀk»XüÏ®Xܪtù<«ôßq6©áÓY2V©ú}÷¶hUŒÀ§&£ è ó»+žÍÆôˆ¬-Ã,°Äß¡ºÓUwFÎ1[Û&ý”¾‹I²<:5Yß›dã|+9¶ >¼ÑpDWýé”®€OµdN*”È;G3Ì£%¦Eõ­Î¥jÇ6:—´†Åw8£EPu‡{‘š­$.³ËmŒ`ª3Û¥rL Š¥‘æÓ"¡$,åB–O’…µQå ˜7Yü†¶Ž)Oâ%,%tþ?Úà€ZˆKÅÔÖ3]âtJ?ÈFÞ„_ÕéâÛ-š6»©˜­3b1™µöLK…$–{gÅ„%ÓŠ¹>…ÙŠ½Ö©eÚ¢W‘÷ÍùiD 0óõÌÿõâúשĒNýPÝBxó7$¤á¾=tíáé­oIn£ ”ö8, ÷³`ŽŠ‡Š­7Ë@¥ k(’Ÿ÷έ› ãÁôD›¬lf9dŽ‹Û@åñ”¡ær‚ 浘*_âXb1B"=/ãþÏ„gíqdá‹0˜Æ:”âmðÀÂgçl†rŠ…!ǬmýCÇH5sôQ-OÖÎlãô“ä¥>ò³¨MdNY|ÝÌSMÜd85wSPo%˜Ç𑤡1®H ŒgßÜIŸB˜<ß´¸Jœù¬ÈDvt«¢šû2hy†¬´ßPN'ŽnÚÈcŠÄ¦eë‡Öl‚ö¡lÉMf‘üˆ:Åæúv;Dë ?ZW‡baÃçÖF}<ÅF‘ãKwŠ¾Í„ø`>â²ä24R²‘ñ›éPª[ö²ªQüÞƒi\uèõhö|/hòfìD–·‹w§šÑo[· ÅKS©gÁO\ŒõŠ£½B±z­“xòëûeIäu<:(WRšy©ù½áB Už…6$¶ƒ‡g]q«¨Ê3ì6.Rýª? -¢—Ì–Õ“søºœöØP*Ô @BÌ¿4—ò¹²v— …ÚWß<¡½T€Éø (`q)õ—ÒŽÝ×)PN—Îl)a異ŒHí™Wç0"!FNFP4"8Œ–hvMõ;w¯a|¢®·hÓ0Êé4ðaÏYP¹Ük‹ªi·AjÃ3;ÞíRÃ9}·¥Wµ-+¶õv»³ÜG1JPÁ€¨ l–Ê+ÑŒ'‡!{ ìæh8Z¤•pòP«â܈ G”è"7‚b•”’ÈÓEO¥¬÷¢6þD®…¦t³å1-eifÂë>FÈž^§…°woX¯ÂÜ©®çíçSšYÙG‘4_oÚn¶£òõÒà]®U°¯ƒß¾L öÚ¹I3íx¾Y«tË‚•bʈӋíÀ4¶üâhšœ²LbåxáQ±ÀÍþÏ‘„á)á€ÌÙAV^s¯ûø+-e–mèÊùplV °F‚[µ¢ •ßtÃ}m2Ћ•Iìou—]VHóý…@X»¾`ºk "+sTÊ0TI}Ç'ínxÒ¶#÷À¬XºÌž¥¶„ÆØ~b4 jVQØè¿Ñ ÝöiÄ!öŒF\$€Yi+s·æ¨0ѪE´ï嘎¯.S{%d-§}Ùlæ÷ M©ZK,¬Š σ#„Ùì'o=O ¥cT7~O$†»4âÌ *.&¨°Ù»où!¼™Íäòæ)7³‘¤E yT~Jy8ØŠònƒ:‡-â…FÊdz¦§ðB‹¹íç/O :Ý ‰X0tÍ+Y•Ùü{±RÒ›FŒc¶¯ l©µÀŽb;MØñ๔æ@ÀR^‚kLiò@” ÞQ:C‰¢OªÑtD«F1wh>œ¿Ã“Á‚2l,l´8‡acV(Ã)! ƒÔ§drÚ”@µ+p-t`cËùcv·m`“'Òè…SòZ=Âø^ÁšÚmVç–êÜ‹åí*šžÁ}…¿+´Àýé¥Zm ^(iÎö¬hšð”´nKÒcÜFưwð‡5œÀé·ï£ágöóNÎÆXà^¸¾Ågk3âá·7ãn¸®U©Ô‹x(J#ÆL8A8ô:}Ñpïº ª Õ”à2¼þZ’mÀ÷åB±šóÒ6¡¦íàãk5IeÆ®mr33^U–ñÖlŸZÀÎ9¦¿Ç4kFÞhÒ bO— ²é-s©òÚ¼Ž4Äò:2«€ÆÖnÅ+Ç*]ù1L?ýÝ'ŠÙéj&- T¬G¶?eö×Õád 5Hxå>¬Ô ‚…«jÙF†ø´6e£Æi•10¶L~º4šY¡M<ÛÓD†Ì®›®úá3ÇÓ»{§Ë¯ïè(?†Ãác9L+KÍ€ª8« @Ÿß°´nuI¦Ó›Jùý—m(-éÏ´âUÖÚqU­ü“ªÇ±±®oý`ù™1°À. LDƒ! ç¨õÍB 3"f•’êqì×~ZõX‚^0á(§Ñ ¹s8÷"­o9}Ja , ~Ùê±tRMåð· õ9‚‚!êméY اLUñ >ñw4±Qýì =Xi\º±ZNð—ö}Qq%º¹4¦¤ãWEE׸Lòn3üÿ1“£Üî ñ¼Ó¹¨(¨ëcU“/.þ •K@±endstream endobj 171 0 obj 4596 endobj 175 0 obj <> stream xœí\[o·~ô/œG©°6¼_Ú§¶)ŠÚ$B_’<Ø‘#±,Årì(¿¾ß{rÉ=çHn N¼^sÉ™áÌ77òü´ƒÜ úüó»ë“O¿ô»«»±»:ùéD¦Ü|w½ûëH½‹CtÊ™ÝÅ÷'ùK¹“Ú VèWz^ï.®O¾>½8ƒZGúâì\ ÖÛÔész66šðíÅ¿0£–|F%ç Í{q‰9.1‡ÔÁXz•£ÃwËÛï–ǧˀ7óÛ¼FIµ6CðvZâ–Ñöúì\ÂÙOo0…ÑÚ›˜VÙ€§ËÛë³smÕ ”=Ä^8>xd:(kù‡oòk­­)†Üb,䢆(: g|å•§±bðl‡i>…æ«óáÏØ4?çgm´,>}Θ¸ÌD¯Š•˜xø,lQ.‰ç#`s¯0oÙt\ožÐ~Þü¼Zèã,¬5.Q’Õ!§Ì …ŸÔá+P¢eY·¢”Æ€]L½ÕÊdåŠN;ŽHiAh_Œ²©sqp1„E¯yAk=q£•w“ˆöáô<½7 -ÒŒçZÆÁ»;— :™gzØ–§ç­-'‘º±[ÆûÆn¥ù^Œßyú}¦]¸RU×x+ð•ªa‰&ÚqmZ‘Ï×6Ò뼸ľmèÄ<øè8_\RoÏ” m8—Ç«L‡¯Ì»’>Œº·ŒÅ—lÁqñ ±ß¿®æÎ`0m‡²´@ðd(÷”4KÙ@ 4éfßi†¨Ãé'L{_2íåÎ’öN‹œK7è Fí=ÐG˜PX¬Ä^85Ñ›d¨Œ ò¤Zh×"FlwV…IÃŒÒ*¡Áß/N¾81ƒ°»wp|ÿ8‘æeÔÎE£»»Æ <ˆùÅË“¯ºÎ±$svŽ&M0Hã³sLÞ [ê<6ÁqÎÚÏ$gò¥Tj„Áü<“¬¦u~¡SIiåN'&¬ %Ÿ,M;í¬!° â¥6ªuÒ*ÎH÷ ÛV®ù•ÍjV¸Õ"0ƒÁ_é†^°/×±Z¦­*œéøŠÉ”çœ_ïÇ6"6©»YÇë9ª%‰@J‡|3N)zÈN?Œlpf”±Tq£@Ü­ÁÈYü-Iû`¤q$ÍÂ$Åæ¾e0Á7êI QA¹µ›õYqÞµ¡ÃõZŸºá!m5CÆÍ~lháöË4ñQü»Ü9àë ¡F„Q«åÍ`#ÚA ¦Æ XZî‡à½œ¨NÏMØ©ƒ ŒRD­ˆ4Ã#(MÈXRú0à@ܧMº>S È[˜3Þ2BÕcm}Ù™sÀ)»²3¼vR&;spúÒÀÈ›¸s:<*h¶DÆ"hãÀÁŸoš}Éææñ Gí«L«¡'Ïà¦/¸$0Þ6ŽQ®µcœÀw˨EfÕîòÍàlßåø.‚x¾Õ|îÅ^uÆ\Ž’‘«%ÅM¹Å*ÄI'¦Ap’ö çnÝòv`kªÕë l?ýRÙÏ9€+J¯vç*¥2£¼ÿLVa‹LÖ-LÔcÊ ½´zÔm­‚[HÔå<öUî¤-úÐLö—µ6–ŸÖ>¯³{Jé[x80*=GÛKb:¨…:žþzdtÎnf lÃD¦m˜µ˜CÁ!ш~Ò¢|©û‘F_„6ßç·^mç9D¹ ²h@¤R<©s úÎÊ*'Ô1¿ ›,;¨†é–—ËÜ çfq3)òf°³ª*+„~pè“3¡¼B p<”a»Í¤ÐÛJ®>W$WyùüÌ&ä:ÐÈÜhò–ÑžOfG™œZ™ì‹cLö30Ê–v&´çŒp!=¥èÀXää÷S¹ÂìÏüC«ÜG{wl¹J Æ2¼O3;Ò¾'7mUo FÂyÎû »·vB¬áóuµUøF¢òó^°Ô™‡»×‰fk 7c6 µq•2¯ýÜìÛ´ÀNm¦_ZØ!5úp£\þ¥ 1Ažl°«ÀŽ&°jšxë¼Û¿², Lçä2‚,¦{“ÇnªSúήŠ0<è˜÷ù.ËEƒè²žìŬÉp :¢,¾ãÚÄ-æ%†H}%;ˆ+Æn]ã:2ndÁZ¸¶­ÁyJ!ÇôÔÅÊódô…‰9O{\¢J„}HµjÄå¼vY_Ý ›ST±±«ô j4Bøk¸1Àë໱᛺*£¹™êyòTУ‚8ll²PÔ˜6Ï<î Õ—9—Ü¿s¡óÕr `úï1Nâ?´˜2ø”× KHlëË$¸ßø÷ì réX‡XÃÑôW=½,s™2†¡\B†^Pz›É@\›Ý‘1HÎ_šñ÷"kNð­}î&¦<âw7h;ÆnI–!èök;¿n)’&¬Yà Ý \š}¼1ø¦R±Šr¼Q2ö0Ä0©èW,w¹Ï2 ¦LiX¦sÛÎtŠÄh|o…Ôû2 ª½>šÍÊ’"à~ît~][mU#<À|}ßCY]‚7@éÎ ¼°•Å Ü÷òæ!e±êa „qï­,"¶ŒQª”¢~Þ#(¥²˜Ð%¡©Š¹AØ%#9noßÝÒÖªB61‹œää,—“‡œ”}Œœàw…t¥ .Q|#9áìýB`”ÔˆçF£€R!*G¯½“ªè[}Ë<Ø·5Ж”„!8LkWo;ÂÍq»+Æ3S¾KÙ—²WŠ`;V•¡Ï³QÃA$vz+9Îe×4BÄëôìB,rè<¼¦D%¨¦`'ÕÔ½E-Dã¶~˜èí!À\€lá»£Š¸Ýsœ%a¸QRëÙÞ÷ü—²ë%{ÖÐXgšE×BÚ=²¥Œu´ôÇy°86¦[?:¤lÆbNùTÍÿg„&•Ç2“qL™ m­ÊàX‚M¥Ad`?²¸i¥ÞÎGQvJé¯XþÑWç>öÔ ÓTA‰žª+È©Ž¬®=6•µr¾nÝs„9S¦¦|‰HÇhŽd ãV¤$¾ÂZ[A™ž¶‹ªúL\Vy3ö•«z“õ,ÊN¶žÎ#aƒK–ÊÍ]Þó~Ì7glÐ4o¥y‰JóHü"wPé.ç¥îÁzu¤‚F“ìYKG‡é$ð<³n¶!-Wìõl3ËNu”ûÐ:8•‡ÅªCÇ:–|»5å黤þð±ÅW|‘«ñÀ”¢šï˜;»²#SmyDrx”]ð!¿dÁÄ]›t²Ì>YÈu.X\}cb¯tºšš‘gÞ·8£’͸¾YÜÄ~™ªýöëÚ Ô‡rzE¸ª‚A‡Ï¼GŸŸ\üñë:ZpøW¡ûaa®éú’NŽŸÅ^M‡ ¶{v´¼);ýÓPi´T=#â2膪ô!SX·ˆhg7CI^E]8lr(“©¬êËyîï©gDqbÎnßSø¡î8r3î+ù.’'¡gjf{u¨XCó§CÅøïᇊƒž³Â^Ñþ'†z?3w¹>2¦eóüArËëR<½ÎxØ2ø .ötžy¤›¡SÚÝsv9}Êǯûóiøª`½u "8ÿaNAÐÚ^~l©~l©~l©~l©þÞZª­HòcKõA-Õ ÕßKC¹ˆL§Š†*ITLöⱘT@`úyr#Vˆ©žn¤'UFûï Ý@Lw%­òé²È„‚˜âõ}fÕÇØÔ…YC˜r¤¿¤p4Ò ¹ú¬!oR{«»}†ãXŸÎNæÜ©:ŒVä¥ð\oë< s‹ªc¶Ïs¡^ÖS–ñµ…"°.˼¤PjÁ‡åœgð08W'šŸËN°I'»Ü­oçcÌEü7ÎÍ“°¯‚}ÿîö2®W–,£”νÇFèÑ.â)zûŒva·%°ÿv7Ý9þÜ¿±´ñ »šãùóĆd‹0l*»Q—²²;ý»0-W( Ú9FL»#¥•~¬*:ðiìé³C-Õ1Òˆ=–ŽÕC”Åê£ýq[|Æìµ}êš½½? °:eçÛfsµ‚ ÃÑnT7™oÉyöµ›9¼#¥ÊW€·A;]k·r:]h>äZ$3Åfo™î ³ˆmŽXJkÏ–··­SC¼ã¼Ü¶HЏîN³KM1Íü¸üCkŸ=9Œå·ú!Ù$™fµnÁú’é´vÍt&ù¶_p|ÓÏ—Ç×ÍÇa™a[*A¿x1Œ=:D¤9ò &º/_få’ÂT~ŸtKÉM¿OC0¾n,LE–uÕ$wzî‘wß®ÆÙÝœ¤×mólW»—ÉûÙµ5¬ÒJf·ns¯hØ»Ñ5^ £Ü¼pÛ5]¬ò˜N¼b‘êÕ˜Uê^®¹ÎúÓUç™Ò¨ÐÑzzlVÞˆ¦w±¼êT–yO`^i}…dÝtþS¹wŸ~é\aÏfˆ:R^éjÍXqûü^ËdÒãrÈí7,5× O§E¹Ò¡'æúŠBÒ'C«Éµ}ÔAÄ—"&þtêV-º¦¯Ù¸ÌIsSàÕ™zWÀzöŽöϵRÝ®Ï(u¨Î±QïW÷Ögí’’ôªc”I¸SI]|ıTÍHRf?Ä` K—¾8ù³Çeendstream endobj 176 0 obj 3989 endobj 180 0 obj <> stream xœÅ][·‘~,vÿÂ÷aÏž^Þ/›E€¬£Ä ر&OV°f4’²’FÖÈv´¿>UÅn²È&ûœ¹ÈNÜ xÈ"Y—¯.ä|¿“Ü üÿüß‹7'ÿù­ß½¸9»'ߟHúÇÝüŸ‹7»ÿ9‡Îíârfw~u’~)wR¹ÉšWz^ïÎßœ|·ÿ·S1­½‰;ÿüRjþKú ~}~ ßž‰Éz‚Ú?Í?Ü¿?=““pÆ{Þú;km½òÕ÷sü6Nxá°]5Þ¨ý‹CãñÉ_âïÔ$¡Çš&§–lŒû4Qèý«DF> Û¯—1Þ²_1úyû‹Dð†S:÷ÐFËýåLi´ûlöÞUÏÎ~Ù!Šæ¼˜ç±qÿz ˜[ 5Úwl~¾4N׋D—°šoÖuðÖy´W|@~¬|¥ŸãDv²Ví:ESVÃXaá©—ƒm¾8U~ed>ì°l•T1³—VÞUß×§*LF:ÓÁïÌ$¢¯ð²&švøh^o€aú†5òuÍ;¥­Á…œ¥•øÝ™T WN¦ñ¹®OÏ#áó’­“yQ‹®~Ü“/< ôK m¬2ÈôÕì9«pžø‘©ådáèz9¿ÁÙ¸6%euÞOiÿ­¶ûñD5mƒªvŸöH6ØÒy÷gl˜£òÕ,´Âè÷“B¥â$`&…ù§7ipèG˜äDMNgÝ{•– VÚÞDX¾PŒm+Bž­Y‚¸ÿÐ&jY Èu‘I>JšÔgö´0 p–¡´J’!kgº­1Èß3a0•ÞÿºlM²mµU<Ão­ÂîLÁÏÑÊÑÔ¿¼A”ðÛ¼¯íx#52”ÖX‰€KýT¾4“‡.?ÁèJh :ø8E/âde8°m³¡FE£¤#E/QWÅž¢_¶ ‡6"TÚoCÑãV)eZuN£¨ž:·AYÛSçDíš;PŸ'I7 T€9g¦Z¶vònŠ}SŠ—ÑAm3kú–ýòr>†ÚÎz].jÝÙµ,Ïë¨íámEƒÏÄ* …3û•Ï ý´ÑV`I§ ý§$®¶¡¨åJ’®°UOÎË_Ðâ-Ëç3 ¤MÊYîyZF\kdì¼ÖÈ4\G#Ó1OE f†™€nÙhàGØK©?®•Ê2Ñ[T¼êký²†,ÔÌÏ‚«•- £‡àÚ£Ãfиj üˆ…®èwF8ÕÓèØƒ 3×$—iÕPem{¦¶".͹Šò¤."y·Ú¹¨«Ÿò©¾§î.€žù¡&,wy›UÍÈÕvB19‡l“2Fv4ÎÐá42ràs•6¥mÃÕX@P‘ã gÀØh¿Ðú†Ö2ÀOAq2)Aó#&àzMf ›0vîAŸ4¡Ž.FÙC/ɉê—Óмÿu_HÁ@Á‘OΆ[ K› nß„³ }'–O†žîO2Çy•+±R&éצս8‘Ö®•#턈eC*¹Em˜D"ßÉ1“hð &ÿ-LBÍŒ“¿3Ä5Ïb€‘î_‰"ïq¾ô/$ʱ@ÜGr.ļ‡öý$Ím…¥ÞFƒ×nüþÔ¢eCŒájû´9sw:ШÞËyt©ê1±“ø{¹øÛa]ÎÝÝÁ;§öc]À¹àAÌþœ¸KDãF‚ºÞ§ãóðËX¼¦ú%ë’Ì^PèEÍ>ñi!LªFñ£ ,@¬ õÜùx wùœ#m_K/b ¬¾´N¬³,ÍfÕc°sQÇи‚¿%Æ^ÉžDh063ë7§ÁMÑ‚"|š¡11( §á$þŒ{,áļJgIcŸÃ—Þ›‹_B1áêñ Õ“rEo Ó·C +ßœ·wPËÍD5½ÿxzF0[âðÁ騙3ÒךO[-²1(f§Ôä]¼SÒ„r\V–v¡:QÐ^&K÷k<}0h¤õóç3ü×Äï]iýP>oÊçEù¼nú¦X‡—å“û´|¾/ŸoÊÏ[¼¢cËnJëT>ŸæÏ‹IpÁBÑôù4±jU‹ì`¢ÅFû¡ÒCúÔ­À%GŒ.xzÖ€(+Ž}µ>cúf]8 tˆ¾C£Âÿ‘zXaÈgêÀÆ¥êx ã„›äÞ*­uôF¿IQ§†Q‹ë™<?áܺ†®ãóÈa¢ßŠÿáؽƬ|5SøŽ|ÄI5pÝ<†:êUiY…y#¡-kýZËšUÖ²É+iY=À’jè¶"#øÖŠÁY(«AÜ­!ÇŸúqój¥YmdGÎ$­>OÜ|¡›Q%rÊ{ Ù4"7ˆCÿ¹?gAÈ E%eÃ&IUBÖž/þÜx;Ÿùô4`c­›0† ÀÄ¡ëÖ,°h“µù¯ÌôqcÁpíéÍú˜Æ3-‹ÝFçÉžÈ^.b¤!œŽ—€ñΨ]Â×)0ófÛ½¢f†­_f~ïr«‡_‡LS"£¼c­\DÊ;6®“ ЖëðÅâ‚*ŽÆ§#R¾ fâáhæ@›JH»pÁ\.@\<>& µì†É!Ò%tƒŸh~¯}5?g–© ’„JÈÉÊØxµç}%¾Ä´„;d‰Ïû ;ã·³tgfí&An©{J?…®È¸*×™ò~ó¢½]0C?Kr­ió ÊK9d«6n…±Jèþ@Ð0Ó4ô¸Ó^‡OïqãDBÞÂÕYÇëk0žBH`é¤é„²ÏãðyÜÐç"w€"Ù‚+̇¥i™Q§y}‚HR™9†j¤÷¦8“PaØK=‚‹Á‚…å@#j ? ¨¬ù“Z_±!X3Åì¥7Ÿ&k®d …EÍ ÉïJg²÷ðï–ß…¼wh;Å"R2¸ÈÕÞ’}ùHµÑ™¸«q ߃d„…‰ ýËD bç×ll>ϧà?8“C©©•õîBm •Ô>ÿêäüWßU¬2Ò©kùm;gBmÀ Y3['No\¬“=zlðOiòÄòçëÁ‚:ÙÃRª‘ÐUÕòŸ«iF\ŠsaÔ34’£ù.0[äžBEX•Ÿ[¥­QFHKNvqÂ΀`¢[z(“3·#† —7ܤÉD;Bã³Ù±«üfk1Ú‘›D6xu`S1[ïIûXüC"Ê)Óñ§ª<è×i‰F˜fmÒ42øpOÞ3#:ãY Ñ”·ÊŒÔ¦æW°LG#tוGȪ3Çý™ÜÝ`Àoø¦8ÌÌ­8Ä£ó“¿œ˜IØÝO'b÷€v0þXHNz÷¡ž)Y^Ÿ<–À5´,%p€5 2¯|ª+4$uÈã Ôú¡"²•,eP™ªeϺ)!¶Wƒ<K+§àÝò=øÓè:ø?$¿Ðª)„Ìüã€`AÚ¬'áÍf€›~ÚáÁ LÃxÊ:Ú¦-0PÉÛÙa8àv‰»›´.;±@W— ‘bÀŠ0E~›à†‡ÝkU4a嵂 ‰íœÕ\—»ðÌ~ œá™¢‘ð àŒük®êÔ8½”®½Lc˜¦¶€óû;†çSб'3Ïñ@¨Ð 4-¡•N¹% ŸD\¥íj=³e˜pF­:<–L%þ³_ûZ´wÀÇÏ*Î#êÇ9Òe}z•i¥m¬¤‚³È ÍÄé²/!\ÈÛJ\€¶£u}H<˜Õ+îÌ« U|’{‡Ïj>ûžQÍ¥ªñ6{?e>望I ¨s3³Ën[v¹Ô¦Ž·ÈÅ8,2èè¸RN±64x§¹{±J˜d¿—£í¸ á~yd êл.Ï0ÎDÉH`lD¨ ÖÞ¦Þ&ØÛ&gFÙ–ÖÝD`ÌCEy(Mèîn³&vŠÆ.[xVPÌïÊçã’ø¢´~]>ÏË'ëðeþÌMÆnÝOe~ÌÀ¹‹à"æ–Û#3tAªp„ ì`Bfßt‰û²,äÛÒú¨|þ¶Y?õí±žX6­AÊÙ€¾(ŸŸ§²@±1P=²Í |G†^î7‚Ãȸãàp«f"x_Æö0"ñl‡ÇI™!gôšná%PSïŒ q’¡{ ücn¹v  %¹‡Âî鞇CÇ<`¯Fê¡ñM±·kêèù¤£hzS׉µð@?’¶|¢‡ÙS´õU˜ë¹Y÷ î&†à*Yãjœ½—²‚8£ÙFeÐ%È^jº'<=Š»~á|VTÂCsÑ„ÎJ„¼ÉA·"tõ”mÄx³R±ì¶Ã=Ö•‚%#¨ì½*ÔèÌC¡<Þ§­Ç ÛÈ¥”â=|#¸L2–)˜ÍØÂSŸ¯{•Ô6—_º•3ª”²€ u­NIcµê4›¬dp­v“Ü¡8ého- b[Zî`o­›¼Å&é$W¦DD«L“¹-% :žÓ°ø-܇6ÌK¥ q¬¼ƒÕi¼/ı2 V²q¹ €Ñ¨÷\nî8óö‘Ï=¨¿àìÿÿ}ÝÄï꬯"r/~á+€ t•ot ÓƒÊQ-æÛšŸ‚±6°8öÐaQÄ ¿´uL_ᨂ .Xx-8˜Õ-Œeší8¢´¸ ĆüwÆßNQ]ímåZEá Á¾˜„GEÜr{áQ‘.Šî(T*f˜Ô¢çôùmž ôÜÈ»øå4#YÃ*&aîA²¦[uº&™mâ_ËçW…äófkWþUÏ9èic0âTjÎú^ß0:‘{Âý©¢í¥IEÊ] µØEbo‘sì>Ýœ« $²ÌéÒeÎWÑ'§¸$έßv8Ž ïá¥Ñ Üƒ…÷ðN ÝúPÒíÕ\ĦÌ(7ÔhüCÕÂ7gpƒæíJoä ¸üe•ÂÇÆ°À^ˆ’êá x\Ž »:¯¯‚ˆ¦Ò¥Zäe ‚&T.Ô:ÕŽ]µ’saÓ|3˜3'‘{.õúæÜYòzþ]O5c¨£‡…¤°™ñ`®fîAÐÛI“­o¹–áóêk³<{-V¿x-x¹ fTÓ§ò>NûÐ+˜KªL­iÖµÇ PJíÊü†ã¯ïN-5:R·6Ué8©ÂnuÌëCúw¼s4ÌÂ6šmUØÔoo;Õ¼i·h–úÂãḑ0/œ(ÈÚ@©$aÞ¹å6+KUÄ&+샛mc€@ÍI6^MÞ܇dã'tMòÏk¶K¼ÞÉn“Ò Ç"Ùí‘Ä#£Eª=&H  †Ìó½’aò}uƒÖÃ,ñ? ¾hLês]d;Ú½ªoé—jwoF˦àòA·,¸Œ˜G}è‚Kѵڼ9¹¥R,¦¸JÝþ'Å+‡é“´ÊɪÇ#˜éÜr78iðíƒFâDz,ð’I‹¯“«¬^yš¯C„»‰@a9¿ŽŸNßÏú¸»_÷ÁhÐÞ!öXß Á ¡ ÖOЕ‡ƒƒ·Òëöœmã@ýÄ*ø¸}ašÐ:»uý&©‡Ñ½ôúŠ<õ«r:lÆú¼­`Ñ:Œ5w +lf9ðåjá‚!Ó5(Òì±”Îu7JR©qÀþÙ`ó?2T3ºR=ÂvÀ·°±ó Ð:¦Á·àõœš¦·9ÝuÀQ Þ‘öß6‘®åäŒ{¨½ô{†I[ãœOtÖRЩ nø–¯~ ¯{”çaêJ\òuÌR:ªÀU¹÷ RCàQý,—Ͼf½yÕêv®·n)”5Ñh^(û<•ÒÎ;žkfynª†m‘Ë `CÕ2%Mÿ¶PÌÕ¶7iö d5Þm8¡4À6J¢„6(,¯&QÂPN 7[˜äqÚ) p`‘¦ñÚS ;Æ‘àü±š%!þ¦IU…AΖiÏrõnª”ÎÒKÇΤxLÝfªŸ¶Èóñ%`GÇgçâìCúèŒÎßôÓWì›DÆp‚=z—s™ŸïHkÂ\.—(yƒ]Ápð¹‡åÉ1,¬X.Į҈.ҽ϶¢ Z·«U Þ1ø?ÃÄл$™‹žö°LºômXã­úò2°Ù®â>8S¹Xt§•B3õ‰®üh̺õ{U4zÑOÀá–á5ü#nþ ë’’\o«Y¦@푚è3û'O2}]ßZ:ÐëY/äM_¿(Ÿ_—Ïón‡‚0K}0¾¿aò pÖ€o‹5 ¹e ò6²5C^ôŽ1Ÿ# O˜÷³b¤@kXKõÌG<0×Vbžx#C3²óƒ»¶£wlšl2Fÿ½oe […Ùôi° Ö­ó4tG­n?ÌÉ«€5ëäUŽ"E|x£Ž e\ŸVo½‹¾ Þ$ªLX]c¥ Öy´mmŒWfLoKìáqGÑŒëÃXn?>a–[¦ÒWq£mœ_ Ã{|6»IëÙ°Zƒ¯gÈ¶à›ƒÒý;;Ü'½YÁ:UBËJ'wÞr\ÅaQY+l÷Oö Ïï„Õ¬1´•?¬HÁÑ-7w.‹Ký¢|²<8K~³W Jμ›—Âr$ô³B'½ß ÖÁ¦ÓN±Ô602¯»d²Ï›÷#s”®¹Ê“ÓÔ‰@Ygx ãͳçðsÿqz ¥¡¹Á LŽ9M9p îä¢%@´>2á[´„vYf|¾¼J#˜:„q@`6î0ˈÝ´OI}Ú*'=]imKÀ¢šc¯Àâ Ÿù ‹š›ówFß(®Ê'ú/¼˜éõA12C–[ÖÚ¬ ·JW–åÜÖc\PúM Mƒ3Ðná¢Â»¬ë`6ßÝm®Ý OWÆ/ ’O×—l÷o,îgºªbrRÃ&ÇÖùË?ܺ¿Ä®zòf9ôDÆ(iyQTÎOFÍ•1eÁàŸÐ»Xjêð“Ú@(µ J@DïYd°@4†æqh5Ö«þ"õF`\Å4Y˜ôPLX=‡ZÇ ¡¹N¦'%Sxîå‰È«4Zt›ÏÕ6 «‰¸¸=vFRõr4«ÏCjá—G£°®RndD˜áÓò—ñ??Ÿ§¶GˆøÓÓüôºªgõÙvkA8º\&éAœÛê¥;–£÷^YÑF1ã~0Ÿ_î¾­,Žº¥ùûÓÄ×–±RœãÐßHßÎñ¢Ï˜Kû7.s(sÀPŽn‚»m¹Âׇ]Ï 07ïÝN ,¡qXJŸ[îPm > #»ùÝ;Œr_Îz¼H¸ìà¸^x9‘î} |‚SæÆ˜;àD7…ûœŒî׃ŸÂ‘xäNá)„üÀS?…½þ³ Õ]Õm^Mòê¢ñEê„h·ª]ãÛ§‚¹$Æ;f!\mRôhÖÊ[kþrÀ ÆÞå}`C…®ƒ·²lÈÓv²¢WNS†CÛ´zLZ}¸ïë´éÍdw¤£€¯½yM©S Ã´Ï³¥÷Ñîò¢ ÚÅþ³zµ ·T&„OQæäå õ·"Êá‹°€à¡ûZq¶Ð’þ„˜Ÿ=ûw’\ºÅûªÕµÔzQ>ÙCÁ?”ÖËò äX J¿ÿïÒÊ þÐýÙ«V½PëT>™*úM¥H³Ä¦´ýϰ˜7­®d³1²™¥ÖßäO$ûSÒúYi]½ÛÌŽƒMÑnü‡nv«%ÒçgõÉ <ùÖû4­6çq鷪ݤÖón‡/Këÿ–OVú¢´²g¦Ÿ¶[63^5À—åVfseÿ®Jëe;.ÛúüõŠƒ °&þ}™ŸAŸ¯Jë£å¤ÝþWXŸAÄ#ŸŸ1ÓëB Ëþô_ó~?"p•ÍwàA8P#&UZ§ƒUE#–‡3ÔùËÉ?Lš²endstream endobj 181 0 obj 6260 endobj 185 0 obj <> stream xœå=ÙnÇ•ïD>âN‚Ë@lÕ¾<äÁv¤ØÅr$fàÁx0 HSV"в(ÙÖ æß眪ê®S[ߦD†ár±º–³oU÷Ç›øŽá?é¿çWG÷ŸØÝó›#¶{~ôãÜ¥ÿœ_í>?…’ïüä0jwzy¿ä;.ÄÄ´ÛY!'fåîôêè?ö/Žajé”¶ûËã-ôd¤Ú·ÏÝOCÓ'ö_äÞǹyÚðenþWp‘{ŸçÞ7¹÷,7_ç?äæWØT‚K¹•{_äæ[<†”ZŽº—›ÏóorïYn^Ö®¼Í3|w<ƒÍíÿ%øÃÜ+÷,÷ÆÁj²’ïÿgéþÏÓDNÊX±;ábÒÊðÝé`gÊИò,SšD¨ýý<à÷}rï›.”¯é€ø3Ê䬯òY 0^vaÿŠ9ÎË ìlé½_ú¤8µÖéÔÿ»ì.@ÿ¤ìîôÑÑéï·,Åúeî&’Í_Ó[h¾¥PKðñ N²…\çæë ªï)P"ºXI¿ÍÍg]‚¼îB{¢ .qg¸ì.q7a&]t¾©†.]l$?t©ûëÜû×Ü|”§{ÔŸ­$Äì ±Ã'Â4ÄŽ|$?ŽØ‰Ì© øÖÄÐånLìxÄ–²«o¥ì0QLLhõŒ.ñ«Šâ{Y“ÏÆ^vùóu5YÃ÷2vOr/¯ @­°\Rk†¨ƒ#k€šæfXdä?—f@ñ?Ð záŸHè'÷ŸpIm#5)'˜Üøõ>.óôøþ×jÎm)µ%ùÒŽme˜ð||"µH¿ƒõ””Vù¸^i‹I>q¯Ð" õUÎMî=¯1CÈ´ðCïФ·w~-&á¼›÷óÛxíýþ9ë ¶­UÒ:<ërî›0|þ3,Qþù§ãÀüF½@V|b×8 °2H30‘Dl“½{0NË¢ûm˜M3ÏÊ™¯âî™ÒifÄÂŒ4©€á.â:ÖÛ×yô4œY.¯Ž…›8ƒMQ`Ðùq8€‰j't±|Ú¬D@QZº.v}“ôEï3`à€úþoá;ÅL°†g @ xÑ“uvÿ3L(ó ™x´q@ðÇŽÝŒ.K axíÀ¥ÞMJHWɦ -ŠºÝ—q°aA¡Eˆ#~©½r8¡°¶fEa `ç ËÁ¬• ‰ßtYŽ(Ã]–k8j$Q¤9 9á(ܧsv…&ápç°ð4Ï|ÕÕ`/²L&Bp]€nãJù¼åeŸ Ø@3¥ ŠèJ7†)Á,\mŠÃQE²D¢“ÙZy«ûÀR¹-.µ(‡Ñ%i?¥ýç°†@1Ÿá¢vr`P[ƒD²>fã§ †#€KîœDW‘’{i¸w¿³r•• Í äÊ®²U€vy®Å/öt…†¯×‹î|9ieô#Á¤lᨛšÎq£ðe¥4¨eL-Ý›J€™ñ2ö½lå—ûOÞHÇ64m:áe\‘¾Åþë;ga—¥H/dœdwr`è4‹",­r¡;Ž><(ä@où!¸¤#äÅýHãûÅÄHˆ¼šGè­B FKp±æ ‰v ¦Ým%ÅèEÄ(’ µwúâÉ]Dmýð؇oKŽ|E)¡WíY!G+%'àˆ;^èÓ7qaï\9ÜxO!™ iÊ(Rä Õ¹®ô(=j'ߨ–Û‚4 ¶ã|) «+›… æá= €³3>Í/²?°–² Í/‹ÀƒÓ£¿#«w?±ÝŸŽ7’Ø)m¸/»+èñäÕÒóòèé°:H¹^u@K1ÎþFªJæç ?ÞGFV0þ4 ¢SÕq©Äþ3ìd\'£&vÒ*àE›($sÖò˜dLYÙ¨Òö[\4šH&• ] ¬àDj1ˆnm;ú(þ~{9hꧤðˆå¥BÕùˆšúDEoa'´Jæ+PÄ k‡b¼·s-«°OÍž ´¨MP¯¬AÐC€í®©-æµGÕ_q<À/qÒ¨ŽTG=‚fÄ£J?9N¯n\lvæÄ-Yµ@ª+.͸\ÉiUfè4lÙ õÿ{lLÑÚQ=ˆmƒÌ%0ümT´›Òwtޝ8Æ%k4º¢_Ç! úáZïÔ‡ñ‰¶~€z)ò¿¯"ʰÈjà¤S^Š”Ê«xõ ÇL=ú¾ú§“ ]0oM“øW ™4L}k)‚çâjMpˆfn蘿îóc_Ow<âN¤bYPƒ±"l•g)ÚQv—@”¤Ågíc"´›Ð‹z”*"62ééþ&ŒÊ&’¶–‹Ð­‡ NJ?m(š,S8µäЪ`á*C ”¾Ž¡†^Ð7"–|¯ç­¦ @•ƒ‰ÓÉìNqA%©™’a¸c_j ‡UÎ!Ì0[¶jZf¹ùVwyd ;!B³–45'Pò²ñŒŸ&¼ç2Dyä,çЋ¬¢ª%mcL‡9‡bcLShÀ¢êÁ Ä_&Ï£±àVSæ¸(“ejcl‡ÑÊn4©7ˆñ›x¡eE_¸ ©º§ò\5§-*½<äQn?àQ)Pz˧5}+œÚ/«äÙŒø6šä_ˆª:‰”2³u%G`^8^4íß)ÈV¦££«µ3uã+FRª›Z Ì§)-À¯²YEJŒ‰ FJÿ”Þ'•5Ö¤‹-8©CBó”JóQ4j„iKx^c7ÖšZ’!õF’Õ>ônÐÃ%UF¿¤ö޵ê\‚Û„ò+1N3ˆQ¼«‡ó‚v¥É<ªi;…=‚HñIM‘8¥r•öÄCb&zî€Ë1— æ¸+]–ÖE¶Ä<ÓLQT/¤¯àßí 9É;™kB›Ì÷§ÊcÏÃ_¥Â‰&b°O¹-Ú©z £EßDZÖù:pˆ»ªD‡=¤0šiõ‰„m¨b®¶æB<š2«áî®mf¨±Kpñ§,VH²—TØåªçnYø`|‰“VÑuð{ÕÚîÅ5ãâƒ+Áù«Ö®DqD]»TaMxÖAaÛŠžÎÒ`3aDž¼Û€âÁV‚PB‹Jç6e2/â™Y1)w¾Æ=ã² k“˜9u'„ÒŸ0¬Í„ãcm”dy½.,òƒû#ãìæô˜ê)»;Ÿ6 ñ¨„÷£Q)þæÈ/–7z3aQóÈ9'Ò z¾'QÌHf£[+Дrµñ½-6LIL€ãÕJ}ÀÒÕ[T£ÂébU'P«ªŒ¨0'œ"ñ#Y ÜŸPþU£6<õ6ž H¿JdÄmóqqC¨ì5~£ ÂE\Ñ*]³.nÚÞA¨iYyŠ¥ ÌWÒsrAÉk;%‰–Çaů+‡Òn¬(ÆŠM¶ÇhɆ¹Ɖša°Gjõ”eA±Ô|B7cD´þg”î¼ˆÓø28tï|0'F~!MBdeÅÎ3XU™CóY»¶„“È>Úëˆr¾1m‰Ïs/¹1ù 7¿ÉÍ'Õ€8‰I•›O»½d_/3ô“EFÖK¸©rl%È߉€_£Ê² ÊÌÿ]Ú/”ªñS^V'··P±–^×r©§.‡éœÝT¥ßC¡ÇªK[Öbá^ª÷ Í›Ü<ÏÍëj,- ½¹ 0]U Í©7 k.X,Â\Ì…{YMFßþ.xSÙ¹ÖAгìóèÌã{ž,~ÝÃËl¸I¯&Æ»—#K3/mØrf`µØEœ[™CŽVØ6Õ¹Õœ ÓELðz>sá6õ6ßTÅW´OØPˆ)A?ïoå1mkÉÞ]»!šo±Eí‘ý xoâA¸(êaË@(Pª¸kœ¦N6á¨nmÐ .eæ|6Ws˜qyy!í|Û{*ôí…³>%Ž^5k2c,_Ï Ä°=Xñ’.÷Vu¢%u•áŒPê"&æù†Û˜[/«ãu==¶ÝJ…o ú¡Ì×ËÀÃŒGæ{xìÕ%àÝN/?$„°7Ã'3Õ’-‰ü’pov »Ég F‡p‡bƒ$ï‡Û/MåS¸'P×ß…[©·j”ú£S@£$J“óÃ'Ba¹¾¬‚ Ÿèš Ç Qçí—^5œxaTÅ^|ÛšúVÌ6•~×i–R©<#Ð*£dµ·³TAãaØz¥&Á2=t»Ã›Z²J(Ri‚È2¿w™tÿjõÓ¼pë}7nÑ/q4ÐÃêÅr€Øø±–Ò jT mGðÖ]Þ¶@ ;«Óøe¿^õ*ž…«MW1"ù§–j&!L˜¸<„{¬õ:^‚¥–xaµ0Ü4Æ›nò2OxP¨ò¹E¸*´ÕêYv…ÊcîBŒÒÀÍM5¥g:?AaS(àT¦]Œù±·©µÑ( pWtñQˆÚù67f ´Ùn"‘$€ùx™¡›Úâ“È!ÐæÆ“ \±v™À$¤-̰~,zpjTÑÚI[ÒdzrÀ¼lÇêrÖp«G( ·s P>­÷"uøßÆL¶àvÕkG›kP-R]^Å›y`~‘·£È†ÈÂ÷âXôxמPÄ×¢6?~†Ã%»ýÛ!{ëäšÚƒMå4ϤZ*¡)• ¼6z„¥”àN“—qc·¸w]ñ§ÅÊ×ÅB$Ï-?¥<—ÞK–‰)C:ùan~“›sóin’Ö¿]z{¬j8­-û™mƒŠZçU£±ˆÓð::²·Rפ 9ƒõUëYá <¨×OºÓl®y¬gFs”.msÂa>Zñu«”0*H2™˜v¶g°°Ñ»aQ65㪴©ñxO]û? âšåÉ—šÚyOfðw²r+qéþ›'øF…"´b<ìˆÅ¬Ýéˆ8À^vˆn¯–ýÎßµªˆ5²¥,üe`‹[Cµ/…‹r¯ ~"D°-^Ý"Jõô׬VlæPpÁÅÿ›p¸´àfökØ?èI„Õp¸”“ñ|MmÆr•¦^]ÛýšuàJÖ«G¨ßîBÿÏë…Õªv˜`®~¶{dÃhÎá c»ºmPNƒJ€¡O^~°â‘,euO¼~±![µÛŸtÁ'7;îðe@Žï8à5cn—žµwú¿ò3L,Î~í%¼ã@žgïÿhyÕ}ågWš§ÜÉ]ˆ·«Tž·–òöA¤·KÇøXU©ù @‰ ë? XgÜcøVõ/.Ð)+eƒ2ßöÿ¤×_®cz?ª^h¬>&ñÚV¥šÔ8Ôo¦(…×Í€w•Uua(Ü»3Ë5ïDwͺÛ_ÀÙu|$k¹x½|¦›î Ûyîæ8ƒÀgWV_ÜDËV1W W°ñÊÜ?Ø3ß ó%Vtã«§õõ„p+ÝÚ9,‡´½»5•kÀÀ¡âŒ%‡&„¸›J¸@›ø˜Ö8a”7~»¡“˜ Š6¸?ÏÓ3z|õ’Ø|µoÛé@31GN+->ÙJ”X¯ð‘og7¯çÏ›†:_+°#¿œó(7‰·ýÇÜ»xÛ6ý®Rýs9¤üû&÷ÞúÙæ§ºÏb“ßvêü> Ùv}!ö~^¼¾QýMnÖWšgqnw!þN,êÉŸe<¬ñÐ+âñ ›}µ‰æ¢Äãîw]{!þvRœ¬¼²a’½‹Ÿ}ÙÝ;ÉŸÉÞË÷wªßŠº‹Ûñ å>©?«ëLÿ­{°GÍ?òÇx`)¼ý±;¿M0˜TdyÜb¼ýåèÿ@3¤éendstream endobj 186 0 obj 6008 endobj 190 0 obj <> stream xœí=Isf·qw–Ë—pRÃ'ìKªr%Ùž”¬È#–“*+‡q•Dr4ÙžŸîÆ[ àñã&9U±€xX½w£¿ŸŽÕ¤þþïwGŸ<Ço®Ôñ›£ŸŽ4ýñxþÏwÇ¿;ƒVç)ÜñÙë£ò¥>ÖÞNÎéãh줢=>»8úëÉgO`j›œ'ŸR3‡dN¾Üz¿|rꟂ'ßl½Ÿmcÿsë=ëøãÖüýÖü|kþ›ÎhkOžo½l;_w'{¶5¿Úf`½g¸õ89íO¾=Ë•æóí»OoÚå§bâ>±Þšß>Ùf~ºfÇû‚O·ŽýKw½/åÄÔþŸ³ÿ8Òfò.èã³/Îþõ¯óáé~?¯jݲGênv /®ÙA…&œLìl²r†i;¯ª6ÝnŠVÏËÉûdS|ÕÒûõÓ¶-¶—­?Áq 1¿îžú«æ©›]£ÚzÙ-2üx&.©lŸÝí¿oÍÙš/·æû­yµÍð£<5ßt?{-–(3DA€ü¦õ/ÅšýüŸŽÖÙAþ[¬WÆî QÃ"¾âç/K¨Þ†€·ëk©9cµŸnê¶×þÝÓ'ˆ4V¥Ég”gç +žoÿbkžmÍ¿lÍO·&# ¶œÿtYàt%ñóZ&É{/½ 9¿h ±CÃÿÏ<bžŸ<×–+§&LYis|jÔäuÎåšè„9G£]ªÉZM<ù€mç6ùä-¶}ôiænÎÚèòÉϬûÍÖ £mŠ“Ù&QYÙj’W8ÄM6Âe~»~Y6]k=!ëàrÏËù\N7ÏÚ)Ä—©ßuOr½aÅ}N½ fg@ïÔ>"–èΩî’ãÌ+ºî "ñuATùä–Q0Ö(3ir€Sç鲫¦¸zr üß§Àíëá³xò·'(lðÕbj¸"ë]™×O6{Ü‚šbt6¦“ïËÖÄPí‡÷ÏûHÆ—‹äÏ89î4i=ï‰zçëN¶ Ì)Ì6YüX¶ãˆn`r‡CBµÛeÌY÷szâçç'Ià\ž¬rË’[‡ º%ËVtB•Ñ^^ð»b„óÅh÷øÀð ^M÷˜Âò³PÑ Ç¤¿#¦ øWpÎÚ¼ÀUå¤ñ,ú4ù…ð#Ò <,öN€ûH0ù ”nàRL2¿8¥“ð~[ ì›).îð7–/À%RY c#§”ëò!0ì¼èÞæ÷pç³êÀS‹êàbÙÁ÷ì9Çð…ß5¿Às!gbžRŽ{< ®a Ãn§‚I3¹º=Ñ?Lâsµ<£g޹ïØ2ü|INQ§ß £Q$(Ú•J”˜¤§kŽ83<@çfÝåZàT—eûH|sŒe²yßt—xÁÏJszLÔlô‡r"d;4VÉ ˜Ü¦¼«9Ðuùê4ëiß“Æk¢›tX¥jË!ö#ÑõcÙu(w_C‰ðügFe£ð¥&L>p¤/gDN`ùŒ¯Ko´Ý“÷(ç“ç¹Vîæ#×ò‡Ž¨u Ú«a£/Qõ¶&N…dcCFá«Õ¼5®0šÒÍFІl6*wùˆmWe­ƒóÔ~Ù¢á†e É-½Ÿ$8 d”Yë@7ÐÀÛA8(àèq(Nnã"ñpF§Sµ¿¥;ä‘h™ñØ-2 l§dlÅ_rôCL°~R6Uò þDÉ×ôÇ\®ò–Ÿ˜³˜z+¸¤Ëy·ª Aj4ßåšËyŒœŠ` j#çäW ÁΫX$±iƒTÀh’(=°W mBFÂW½i Aïq‚£gV[ƒd”‹µMĺk'KÙ>€ñˆ*šîÍ!jV‡uhgAOŠÕjíi,,Ãçgž 0‡Â´v®Ã3¨»Œ°Ôûx†AÄ7;<ƒ`Òáˆ1/ºòêã| Á,w*Êãàã÷Ä×¾._§1!¾ëï8%Q£»KÊt؉!™™û&´•Üy_>µ ³~FTÙ…b¡h¸(k 9‘Ã>Ði8»),nsh0жRYrt>ÉTÔçèÌÉѧ]î³Q¢ð c˜”{ø§xo1"žãAï÷É'~à–ûd¼/ËTAð/êKâ­Š#ÐH鸘×Vßê¡ þâ‰a–]^F@1C}ëçæ~É€Ë'8q­|ÓÕ;7¼ú7Eá ÈÂBÅ7òhmŽm9ܵr^¸«p½d_ršyUNS\n„†³á»âh?²p9YíYþóÙk1uÞ‡sm5ŸšŒÿB&FØÉMÿSÁl“r`ÝãSœ£;ïX'£¬ÑO1¢{Žãß¾ÿ–èºL@·ù|ðïÎ¥ÅÏãC½Þæ,ø}¶˜t{ ËŒ¦ã7.™J6äw„‡‹C/cc|{—e„t—é]CMk¯Ë$}X‹“•_hj D¼/se Ü?‘(UYcüÚ´.è†h”ÑHºÁ8Å;•2âLݾ=-¬Ëª˜ mÌg¨Íû눫WóFaè È «Á*›¢ñFêÛÑ=WF„ÈE¡ãst¸û¬Aà^³KCk¶ÒÌ­3SÒ»~¤ZEÁ ø—V\øÓæïañ©g•û‹³£?ÁáýñßÔñŽ N œƒR__Ó†[qvíùñè›[æ"À €d8úGy*‚ô[]ln©‹]¯³qH«¯½aŒä»[£&=ˆnÐeé5Âîè÷ƒø¥¯ ºCÖ x=EAžE£Ê³È:…èFÛø¬L ¢ãZ'žóypÌÒ“@Ýa¶O„#š 8î‹h”äf¹i[ƒhUG‹Æc3#Ѷç/!üg›áì‚$–EH‹´Zëeî }ýx·JKºÇù :N •«h—o~ Çz×Bõeh󝿣æ±%OÐÆbƒïpwæ ÀüÍ&%6ââæïïþ1 1”]Âé’EXE»ë’%ÌÑR>âÅ¢R~GX’i³N5%ÿø×[óYå*/\}÷`!{P„a)`Î$X4­=·g{pgÀ#qÞIÛ¸Úš½æ€wj@¼å|çŒØà\bë.Gæ¾0QN­öÀå›Ëê€2õÞÂuá(K÷,[ýØ$Ef  Í dÕ Š¶G¡Û.‰á šêF +]ŠÀÌ0‚ Ð )®Ä„f¯­xã3˜Gåuchœ‘°cdž]Øîªt+F<“#Í=­:ƒ±|¥ kY“sBmÎÎË,)ßg1Ö_•M^zgä‹û–8áþŽñÈ-qœPÇÆ¡_6e+std0rIû¦¦2 ‚µ¦ZÐî]£Å#LJñOâdÙUúîàJ:úxÃþ{`…’Üö‡…{þI”µI8RHBÈ &Á$¸ã¨Á´!Ó4Zà6ä©<|`7%…6bŽïOž›:¸SOÍ(À—ýlFÅ'µçRäw™ü NóٻĜæ QáBÒnŠìÅã Ü‹bÆÅMkPŒÜt“?æ YâÁçE<{m¾k<8xPñbA60‹;y¹qÍY4°a©–hqBþ€ÑbP€²5->µèEC•ó'¦Âþ<ÀÀFeé dˆ˜úã¤C¨æªÝ¡º•ÏÝœ"  ð}윢i›á†”AÐH­ëPÈMÇL}Š»ä@¢+˜•Œ„6 ˜†&ÈHíë˜ÆÄ 8»à6g çlÌÓ’€¨²E3·+:lnWÎ7gë Dv',B&ÖH`͘:Hn¹Ž˜õÐÓAÿè‹¿ÐÚÈ—€ðÍ~2ÆØ Ñ®Q=¡WëÝè?}hÃ#È@«IÕáÑ̵€m{©*pÜMÛX¸YeŽ¥L7)Ô°—ØGÇÇ)’3)*·èp‰ ‚Œ¬· *˜•Γ•+,#½¤-î4öÀ“ªp¸*>Ço¼J‘»]ŸÁL0鵔Πæ’!ü†úæÚEº[¯¨Ý¬çš¸mOÜÉ€ÈÍß"ê ÎÞø- ÃR­Yö!¸ÇùuQØaÂUùZƒº*ÝhÅ?h’)žt/Wn0ïø<‹Šé§¤WÊNÜug‚g’=Àõ[œ‡çØ+>1­ä¸ ­ʬ÷C˽ۚl?¯Ç[:Ò,(ÀÃ9£}gf'±¶§…Õžµ,’ƒòzl%ß9[ú<­³¥5!w˜I¹Ëê$¶%mÎÖ’MWó¼25t "Zå<'£‘.À¿•ÙÁ ˆ©´¼:]}cßžu˜ÿð((†S'îïSïÞ¡Ã'™ÖŒ¡:ÐïìS·`©ÿZоÅl@ýH¾ô§%Ù&t-¶ŽËu]ãÍ‚"‰{)ùެqåê+(!@ž¯2X}`ÍŸÏSƒ.rãsÇÛå+tB!`öØ7æ8w²¶dÒivSgB|nm@·›?'s60W,ëàìý ®Ī·&ÇüO®üàÝÔ€/¢5yyíìO v#½˜× E3eAÁ‹›„H°IbÅG¯[ê“uDbê?÷6›e+±Qœv;~ÁÆí'ý‚Üq( n{¼Ø5‹B®«¾2(HŸ#L È ÜSæå{bî๖B»>µß IOC‡ ö7X·xÆЦü¢©G)Î+·ã‡'µ¦ê0SŸ!Ö* Ë;ÇU´¶µMB½FX] }%†d”Îz€›Qû«Ñö¸‡—¶jëü”0ñ ü&4¡ÚQÚh€±c¥²5оHçed«›­¼ˆ6m7I{7]mQ^@ºÐ‘ÿ»~1 ÙÅÐeÌG5z/³˜þ‡½‡|´H?ý`‘,ëÐtˆ½Ùã¯_ÏñøÚ/Ä_eÜåÕÖ|ßm²ðÒ‹ÝhL²`Ù;žEUÚ‡).10Ýcà$9ȳ̪BД§²§'2…¡ú‚pNûµééçÎ{qÀl¬‡"lìUµ˜æ¯:i±4÷è‰Ç ]vœÅÀ#õ=r;)›õäå[›æ{ > e÷`qJI&<,Š„Õ+"¾*§Àÿiô£˜éÕj1Ü¢¬´q&%á–ϑۯÜõÙ©Ç@K¶1‘Ãáßjât9b­BÜPæ aÐgV/ø) 4*XÅð»­÷ÃÖlD-õ^ɱrÀ[,*@âÝo±›ò)dþÇP®—Ýh=o‡zÙvØK *Lµ€»é³n‚_<µ¬‚ÍŠvÓRÉî¹-.}c §À4ªÛoO±€ë¯ ŒáŽŒXé ¶ÌnêÈakÃl–l‰œÂ®~£ÉÈCÆÄaoôÀ_4Ì¿¿,ëDk*î‡# ¹9Ü­|G;²>Û(qó^`?HŒâdö¦òŽ6âõV^Czív Ò˜àéeê8~o‚%=äáªxPª‚¼Ø²×JÆtâVÈÆ®5RõnéZk1 ³:옌o¾èÈNm•ñ%l€°°… I+TùÜêkeÛ]ΠMz´Ù^7uäv™ ø%ŽÄdoç}ʼn˜ø¾šl°ùðµ]4¸ö‘&´ð U×Õã:EÄ´VÚ ì»n©Ç\zKºØdUÃGYHQ òî*ÍF {¯¢Ì¨ßå8UŠ^‚¶wè–§¡±@/Ià82‹Z-WeõÈ4:D?}U&WiX›c¨³¼°vé«Ð „Ñ.ÇOC×ö Gh”{ÀUE¬ùgÐA˜†Ë(ÛjêÛ?-*³ÔùG¼1v­t®"/V:Á&„…Ñ€@<ÉLR®ªµÊqh½dÜâD·rGa¯dßž·èÔä8e•„øãFdÒkÄiSª§MV¦Ê2íRr}»õ¾Úš×ˆÕ½¥æ­¼FˆgÙLh—s±+ )FI ­]ÜÈÆâb ’ÀßÚO;{8Æ·t³°hyEÁo6èÉàEK=ëøcSzk­ÆÔšc¢dÑñôP*ÒÚsûg°E¦à fJÆ•g°;òå«î€¯»½ò¹f™á*/¿-JKw"@Ö¤ N'4kÎð©p¨:ÍüsN{X2\‚ÃMéBî+ÄÇpx­%Ÿ¶ÇS Ìn¡Íë݇FqFÂsV´bFêvepH¾2NëÌÕ‚zd÷ö³1¶OVV"¼Ž ÁÝÒäêYõ®éu˜´{ëø0êé ³?–Hê]òKèY~NÂas?VÝæXˆd-Õ¥üøÎ3+Y§³’ö‚ ˜å”怮úw÷¶L´jÁQÙÎk¢ï˜ [MzÌ‹rñÒ׮ØĘJrhÅYH¬¢ fŠ[©í&èK9js$þ׉ÄPsŽÄ„œ»é N¡5¼ê•‘Ο0,¯ºèRõØ“ÉE=KÇ-Q¡ªÉ­O”qX„q±ðdò¨™FUhÀhÅn:3SGzBjÿ ìnè10Ócýï5“.å‘ED›E7¸hý~Åj:{(÷Ït$o•^\Ïåú~>P(bÅ%†µºI ²¾1!ÕÐ%ÖçSlG2_“aKn .Ô@X­Ô²éøÄ{•`–OgwX9xmèþmõì $h?zøÁŠv^èÅ^³K.cm¢(eŽwN¡ìˆ —§TzEýË?ÃïT]€Ã;å…*¾Î·2‚/°kQ“—Ø›.Îúûî“™ráö{qû˜-¡úPѽ$2•»­.ÿåæñìhUô=Gª;Ÿd\Í”Ÿ~Taí–©$Ré7ФÁR='¿[ý– Ý-Çÿ&AÂ}Æ2›`¥ãZ ê×|ùdÛä{G›J­:Ðx=I N<ŠïÚýƒ€” µry»’tñã\©~·*lym§ljOô&oSØãÛjjb¡±$©)Æ[¹°âDÊ]³{JGøS–‰lõ3x*EŒ_Š~*P' –*ˆ‹Î'¥"ïÊ^ûî«`%àƒI5Xµ«ëÅæAz,/ª÷h–Ê(ôÞ~Ý[÷£ªÒu÷åú\sätí D.ìÆ•p{Õ²ñ·ààBñÚ"°y žŒáñÃ2jüLò]—Ò#Te¹¤ê »Û CeÛþ6 EèU3ïVjH/$—NëÍÚ%­bTÒ.;9 ¾—ÓÆj —cÕ’ê—{ƒ²vÿ.Xam}3ð\Ü3ËÞ+=shÕÚʰäße òæy2ú\¬Õæ›]Bu|Y8w²øÄÏ|¼(c•‰>´B(wÜ-£äüÒï`JrädK…'å»Uì;• Q<ò6ƒ°;IÚ‰CE®MŸt¢jg¯Þ %ß—,ô»³&œßá( õ½’0#9Þu”6{›‚¶õ“Ü€{Ú)\u»'¹¤5ݪIÜ’Ád:l¨‘b 9ëßTùpQɸ÷<ðº,jü°ìým-r§éÛ#–0Ô`#}¹·‘Ý#á9². 㢘üÐó6ÿÌahæ³9ÿÆ?ù2$õm~õ5MÇš±ÁÈhúÞÏ—ÊÍ~XœE½÷+Wa•|Ç~7õ—’Šô† ´ºŠAH¶óÆE ,' IÇ}ß8Bí+¢5Wñj§0ˆø«?¦a•Ëö³bõ¸òj#<£N•ævôV!Å«4eWI¹ë²žéWóïþ°¤ñXR†ìÚâœ6±Ã‡œÉ“‰ãw|ïö,ᦈL“WpÄŸÞ²Vîðp½&Iô¹A áy ·ü4è/*ðègESSʉ~zÕKõF=ºl¶ÁZ­¯:½Tƒå²ŒŽûué lNþ¨ÁÈJçµ'áž„‘ø;/Ó¤Ôd¡–î®7´KK˜Q”ÝŽ;âqE  I5?¬q/‘â]ƒ48¤”º°¢LöÏ6seüâm*Ä&:P¡‰£k¬«“©‘O‚<$>‰µZýA?†yYNlÜø·Ž÷¡¶idÂÁ:Bd{“y©üMËÅ=·|µû„ÀñYu*Ø<ŒcUr4×y&­Jqüák4c è¾Íl›MksM¯ûóÑÿAeˆendstream endobj 191 0 obj 6726 endobj 195 0 obj <> stream xœÅ=É–Çq÷±?¢Ÿ.îÑã”s_>XMIÏ-Ï›è€ Ÿ€I\ôõŽˆ¬%2*³ºº{”¬Idçû–ßÔ  ÿ?þ÷Ùë›þ,^¾½Q‡—7ßÝhúÇÃøŸg¯¿y´=ä!ÜáÉW7å—ú µÂ!;¨hO^ßüõøööN 1:Óñ~» ¢ ÇïðÛGcàû}ùö)™±Ï.ïoMœuÇw¥Meeßà·µðËx|z ÍÖF—¯nïœ0Q>~ËFûþöN*øœo¨³ËÑ_.¿cØh¯áSÁï2Ç`dèRÍ}ÏfyÆöõŠõáûz^ïÑi?hèηöõêhÈÿ{òG8p««wnÐ&À¡?yN‡ ·gs µÌŸ¸c팶¦iuøzùZ­eæúªrÔyšùÙšùÖ_”ûPÚOç:šuVO½“Àø¹ôÖÖð[ཟ—#36UÓ|Ãá7ò·q@ã·N˜.VØ€ëݸpm6^.Ÿ¥ƒOÁk¥Ö×e4oe?c­ã¢­‰aZt‚?+T)«Pt w:Dæt¸Ófð.èrú[{ fÈY@ü›š[ðÂ``ü j^ˆ%çñgÀûri}»|J€.Ÿ] žôÓM€†sÒÖçeimèú² #O›¤á9¸A©¸ú\*BÃp{—¬¬ÓÇÿ¢ÑlV®Gp<,‘šÒðoàMÿ²ˆÖf/zŽÛá¨RöL‡ˆòiàÔGAwï=Æ]÷0üx!;èƒT<~œo$.ãœÉLœ6ɼ‘ìGèo”µ96nbD”;›Â`>uœuD¼¸—å§Èhžâ'¸\óþËŸ°K*Èoí«2DÎnš ½…ì!yÛÀõ ˜Ùƒoa;Ýa}µ¸ŽZôšŽ6ðð Csç5s§1Þ³Uô¶ÂWÊÇæçcs‚n^Þ|AËà4!NDæEÙƒÖ—ò\Ø3÷­$Œ ‚鑈Òç³åóÍòùn!—¬Ã×ËçÐjmQ¼Ök#¤ÂÈW SÅ®î¬`ŽnD8˯×i%^E²Ðøû'y Pp2·Húê*ÿ6èÓÖ•`íHÄ„õ¥!äjìg¬µ·h!0ÛԶăGb…Œoq£<ð4Ws‚VÉý 0®À™>7„\Ö—ƒó†»-D=ØN&ÀÖd+tßÁ”Q&ðˆƒÀ"qÔ 8Ï›d‚©0 Æ¢v‚¥]Â¥¬’Î{‘Ó:èí> ô ƒËÄp;Z¯‘vi#qnÛ²Áì`c^…m%E]jm1ö±ÑÁûÏâgHëÂ}V‡kqiü´:`ó¶¬"“åÌt>¹ûqbæU&[™bÖ•|ضç¬Ï°àXA|“9âߕݙÀ4iYñvÞýY>Y‡ßÏB Îññ“›¿Ü€¦í?Þ¨Ã'7éœÏ‡`¢uëðúagþóÕÍç] ­Xìh¡ES&ý®Ù ퟗż_>_oÊûÚˆzÚ;Ê(@ÆÑúú¢ypÓ>L犌a÷áÏ…0ò¼s_•KÎNY~÷ü¾9Œf@¬"æ'd\_Áâ`Š ÐÄÛ Q& 0…÷@_à -†@ˆ¯ði›¡J@ÅÙ…hòfœÈ»ËÄ tÆ]™¬}ßš›÷ŒÔ â¿Å%ÁÍ“’´yÊu8ØŠín¥>'àf¤¦ˆKªtsPhx`Îù‡£A0^6v×n Tx.ÜUZ$[R6Éù¯¹ Ò„,’®¸´Ã ÊLq(v¬àP°x&ËeG6-ĺ2ÿ‹q( ,4æ Ôc#s‰”]å3:o3º(+×ã%àB4@/_ãÐÏÙY"ÍÊ ûÄ‘çüm€nl‹ßÆM&D *ÓšÔÝPK,ï¦=7äÜzáÜ ˆ·‘‚‹Ù×Htg!Õ“ã¿»Tt7‚ê,é'à–jö4í E„80FðZ˜i Í <$ˆn —'4ÐbœeFC[Ëyâ^MxÜH ^^9Û*ù  µ‚ú yiOÜ$ÖW(ywUnA °K'¥l4q¥žíæ Ø¢÷]¡…>?] )Oš~_YOHh1.%”T|ÊÅ$šÌüçù’ ü=DÃÅšþýòùz“}¢2Œ> [À{Ì&ïb tçH÷éÅ0%|¼z›k¥h6QÅ”z´§ôö .XBªÙ»&0‚˜]0ÏL^8Jp# €7,­n·,æLéù|Ì3²)ø§(\š_RdHz´1Y¿Ì«#P±Mt„TÂñ‹/æiú.-Pó4Ûîï×äï8üÃÒúçå“aÏç²/}þïòùñ‚tvi5›vJðªÛ´´_{JQð?l @òOìÔ€ðS®wJË;-ëd(yáNÃÒêÎÞi( iÚº8çä?®>tuÞ½ƒ mˆ€¢_|¿cAf`ÄC ®@ÓüŽÙðz,|¤$!ÕŒgÜ1ù8>QZk‘S¬®Ùð:“&O0X½á5 Ç„§¦ãrˆõ®*Üö†îïÜÆñò¶£FG;Ç ˆ‡; .íAmúlü¿lB.šú¢Mrqm°üµQH7©áB‰'÷À¨G£ýñ‹ãŠ ¯}Äó=%ÀàöÂ8ª±Í´´lvœ3æQÛw*˜$‰Œ¼ct[¼Ÿî½ï1ëÏ2áâZ#!thl—ø[íʆ8YgY+BzSâÎÄçµ”‘ê[O¶ç£rHï^¿ET« kAÚ%ák3cü”xÎ×Qb ÌÎñ,JüÅ-[è Ú ÙNÁVó Æ7â@¤!){øMp„J¥ÉÍ –óëj°¢~‚ì8©Ÿ±æ£ú)ä»Zý¤q‹“ºáÖèo³…ÎäÁÂ/"ކànÏžã ÝÛÙ (¬²ø~‡Ò¿”QiÎÅg’áˆ@Qüü6NiXSÔ>*cël69tA{ÌyB?;JN+*ÛDM33ÚƒÄ%˜Üà%nRÏ€£>?g³v;‡«cߎgjS%n3*µÃV ± (Œ—¢·À*гڤV #®ç&a˜×3Ú6=0!œ‡~³pjiˤ֎*ÚźméLÆ´Þ›uNó؆•*ú3 PÔ"wÔ®áGÅAc´2•ûetзãÝÒÌ\8ÅA“júg|ŒÑZZMß–kCQ«œMÇ)‡ž*ÚbžO¤+’ó¦8v°Yº…#J+%ήýHBˆL’mªÌ’Éiæw}¦Áˆ‹Õœz7Á|­ðr³ìKùË9þ°²Féê©â4'¬c`Z“ñ¦ôÈ Ø9Ħ%Q±b‡åwH2ÄÁ2ì¡ûÃvDk}‹CD„뛣)P:Øa¨ÜpèЮrRÜðx]:+Ów1¼˜NQ²0ƒ¢™t²sèÙÖ4´œ‚ÌWD÷*×&Ž‘¢ŸŒ´h{T3ics<-WBWÆb›ÚrÆÂ5?=ÏEŸiÐ-jè¸ÑZ2;Íâ— hǧ€âõUÌ¥vˆÎ1Czgø0EפžK¬gš>‘ 1…z“¼¯ãý5‰ 8>>^-²,-¶Ÿ"±]§Õ£‰þ¾“ŠÉVœåûr\ȹ0&dÆæ•ßX²7V€Üo—[e4’Û)N„¾­<Åkѵ”\ÇØ¡&á\$‰¿ Û®4Cdôà: ËRá±åbh—¤oúa3„¤‚¦íŌس= Ø #«"F¸£þÙ æÌ€’2¬A©A:xà¦LÞÎ}Ί­8ãÑÌÀ)ŽáX0ø:„•†û– 7\u¹+·ó„&µ=&Í`‡º/C¢@ñÁ`Ð^àèSŽ„deôÍHÏU¨og4yÒäChë(Eõ#í©óÉ…ÞžÉíy#Ô§Àz·£: *]àÁK d©tq5à у—ðÔóÜr/e´Eà€Þåž¼5å6u§Š£Ãk–&b_“•ÀÔ×U°—²exs:9û‘Â{# “×¾ÅE‘KÈcƹ"Œ²MD·änê^lÆ•ˆK„Iç:JИŽ Øa@ØHÅp®pz û£óª“Ä"œ3·Mi¯j (ñb¦9DìÝ%¿4.º°î(èD L^ʈ Iî vŠñQŽe\Bg­9œ?Ô;üò‘,”,0+$Ÿ©E;zÍA&±Í'O b0äw44hW©$t[ªøaÇLÀfÜ'\&X0¸%IéAè IØ FI‘RïdàÂp´-ÁÏytgÃv"ã6ä+DGÝ‚­j|PëðS'lÒºséT®môøB-+¥ËŽV Ì»“ñn´hÿ`™Ã8œñ2àýòhƒ6ã°K:¥³ µÀ² Ô%ÇJºöÜ;…óhai4£ÓEïUÏwaæÝtõA. °+r…#»ÂÅ¯Ø qNøªLC†2&T ¯ã­[g[øÓéë³­0˜ÊªM[–ÊÀþí6i Õ5ie‚*vY³ˆBÂùÒ£;KpÍ9û3¸h)y‰>|¬¼†€ÌcK€`ð•jF J³y刧›ˆu@àh!z%Šá €Ý÷UçQi˜˩ØÓ ‹…ù»“DIhÏ`)±?#”늭µSñy¨IÕ<¹„ ¯ÆóµÈ” ©ì…Ly™'!¼[ÜS ;AγyeK^EÝuík\†ÙÎЯ¬B+™§ip•u°|Dr‡óÐkœÎ‡ .öa`Ûç ÖøªW¶ MÔ¥qLÇà¸XUÚ̱g†”•-(ä!žƒ’_2‹ÛoÞÞÞB2x¤¹rC ÍáLø £D0Šóm%Dla}Íà¥f4È´þš§t€û~ްê$¡`Á˜Ahå€Ë,ÒÚ85€F ÍUg»É©¦iÐ÷ 2µ³¿”’ↄtæC))^£J6sì„KÆè®R$KR,ÚS°hÊé`¶d¢ÚÁíµUÐøVÆä¨_á‚ÐèÁ„&¶žuDpa#=Áâ¾ÀЇn‚ï^¦â‘ôd¡<õ€µ£æ¿3’Ü®ô°JmÄ­×¥µ5Z2fÍyWÌ‚©õãåó“¥ÃÇËçg•¥¯!úe›v5 _p`C¸ø×Û9Aæm9 €…ˆ=èÌvèŒv¶¤”É:Ûà}¶ì9T‚ÃÑݶcx9!cÃ{ͪåTÉÿMk.94u}ÝÍXÓbÍe+¯»t(×ÝËÛ¤ä/B`6ݯt¶Æ· œï¢çvô^¸L]ƒÓv€ñSÖWÃsì[—MÛe£ ×Í™ AÄ7òàb¢o[vÚò¸ªl2òÚÐ\KRÌ0k°î‘ B+Á)·¬¯øC¤N͈  l¯8%JýâO´Tè±·]‚’9.ó€çz¥‹¬gÐY;Á÷÷ô›5š®¯(øa²+§î:i‚¢¶¹AfX‘CpSÄFþ¸·Z=ê8ظÒÏŒu§8b},ã:K»4¶·ž¹%B?Xø/hº,üp¦ël€¸K|W‰ê…\š ˜<=ç‘‚Æñ×Bæp©bB¨ØŒ¤d½VÊÅ©¾ˆò€.Ðñ6™¦)Û`HýbÊÞÅÉฒªÙ/£´®:¸*„ø¼¤¡+©.GÃÏ™ ®i¿¿'Ö 'Ö1†°ÁAfK¶‡«¯J ¥\׆?®=pÀáòÁ<øtaseÔ[E–}”°áÜ—Í[çz‚`‡Ù0]…³À’%Niì*·o–µéËÀ_:·ÓÞ^,è`{ᇠ{¿85Ø ëò°‚n55´,ª¿”ì ÖeñsËUL0b¯Œ0sEdÀ^†„ï &ôªÍŽr §²úçF.L ò¥¹rÎA÷M# vÁÂ'Þ0ÛÊ.…¯Jf¥VÖ·™âÙd;¼„«þ„ÈïCSeàKÏ|êWãVݹñq?õÎË6Š…ÄÁ'Ó¥9ká ÁæCÁ¡&zy©p4_.Ù'¿Ÿÿ¦Hÿä:&;Ö Û¾} ²›±Ñbò„¦áõã54¤—£Çfj__«r—ÌiGßa 2@Y8Û2Ì›ÎÁ‹ã•\àÓÆ©ÉW%Œ¸Ðš<šé4­½.àÉ]µÇ—Qç'×ÁL+)`íø@©è]Ù-æ ËJãBNzLmÏ53û'[‡Ã•î&ótøË~1°‹£ò´‚ÀyF‚Îo`ŸÐf°in9Ÿ}bíáèŽCaŸŒ.<_>t|3ž„ü¦X°CêÊx‚ æl±½—ib{%ü¯Z«¦Ùv• hXYìôGtpº!ûÝñwËçŸËYdÎŽèÚÇ¾æˆÆ`½¬_.×X4òœ™‹kW'“ým¹97á. XG4δRa_Œ ¤ºñâoÚD¨5&dpÍ« óoöN #Eœ(úB°Â (ûÒŠ0ÝðgÕ KãÖ·DP3Såíè•M2¶?§I«­œ&*í*ˆiK8—ÞÀªò U¦HY‚!UÕ&{¾ý­2ãõùžžØá¢½p‘%"†÷Þ¬L1™ê"v@à¨ÀP‡ 27׉z.›Ä ŽòE|ØÎpœúê· þ°fr¬Ô/«šÅàÞ–SKÙ>”UA0y8 ‡­ÊEÑÃ/Ñ“1~,ÄFÌòɳJ6XNbs/¹·ÐoľGá{¼½&Ü÷[+ÓÑ£‰D5h—!o™Ë0\Ãx)Á A =Dß~]@g3S±:: wöyNs6Ã4€l/†C&ýKuÛÎd‡V–F¥Ê@·óc–FåÀÍ-$aiGc¨/â3”„‡?`9ø“Ïpüùº\gr+Cþ5b Ðv Lu´%Wמ¼•Çûù´°$ÂÍ ú^¿Y$k"½ ‚NДVêÏ[é!@û°ømÞ#Ó73ˆ³Òã/ŸŸˆV@2š÷è3mÚÑ…úúÑ¢9ñÞ“Ê$Äûýω¢äví£Íºø;çCOsØç,X•+\W‚ÑWÂ%Œ’b=J}‹@üip²Ú(n ?¤aðd¹:‰X¡vL›¯ +F)Jd8iëÞ… M°7U3ÍVUÙã:7w2×%å CN,Üœ‘V©aÖ˜ÁHcóU!ƒÔúÙò¹XøÇ½Ü2A°¼šÃŠKæb¥@9PXá§ØœT0–*.8¼˜^XÁ7?±òxSŒZx,HÐÀÈ63òXØüܲÅcÛ/ßÂC*# fJt¾JúI #]>´4'C‰…Ìõ~eîÒÚt±Uîg*K§ò®eñ‰*Õ¯=éU8ºÆ*Ô-Í~•¼ÕCQÞ§ŽÁZó^zœ£åû= aà@]Ôat¶%Àò.³1žJ40ùp\Êgä7\¯Žž$vÈ)wú^­SÁDp,‡².“Г‹°²6X»áö,D±+0{ Ëjf¸»ÆÃ`Mzôŧsßóê5ËznƒfoÄÇ¥‚ÎH0p€/VI$m:æÎER“ˆù´ gMOó€¨ç†KçÁÄ¥\#*“èŸ/Ÿ?m &FzLή²…ïôäùýVÐJÇZº!´z™COðIBš*܉ o‚¤ZÊú¢ÑÐ]÷З¹T!”MÐ\³";~™']iPÀøØwŸ‰JS‚éò~4z`=ÞûA¡µUwâÊVe-¡aÌä†y±æI)\c™GHi¸F#õ „ÆÕ;‚RþÕ×ù «²£ ƒtdæ·é<ªu®|¶«-ÊL, ËÎw­"ëªi+=¹a˜¥aÖ•9õç ÒÂä5E›{Ñð2µËc•ßµ„Ÿ.ô±ŸIãPÉ÷á§³C&íeå ]Ì%Eo`žë-£µ¦ž(ÿ¢œ/VA¨ZKBp”—ê  ¦b€y̘-眈ÂÀërâáùs$}Vżç1•¡ìª¶=˜š·ä³ïÕë&Õ“¤«y&È6Ý«ƒU…oQ9‡®™Ë›2zùú;NµÀ.$§T4[LB¶W›Ö-©új¹ËV•cZ·þú¬ªƒùaƒ¡»QÜW:iœÆ,k_B·H.Å·«Í2^.ßh±K| )(QÚšXÜýòùn“Ûõ ûŒö×p"îö8p×>LbTˆ æJGBŸœ¬„ry$äÄáEHXÃ[á'ŨØÏ—°‡â~ë™b©J“‰Ñ í|X¡6¼8Œë «gi%Ñ®HNŸöÅ\ í´ýu%ιñäÒ¸,E)u¥º½‡i甄º°CBævi e³Fàv©¢b›µªñ”¸Ø¶3%|Zð¾WH/|Œe‹à‹Z[³O´>­€-n½6±Èe- :ÊRÇæOxL:M ®!R=¹Å”c;=,X.´¼™#n‡à–ò±ð ©eß½sCRú\š¼#ÆðË$|­¥º–¬Ôý"çVårx~Î,ËSa"­æØW›xôa«(RÀ:ÿ.ôåÝ¢ìrÜÊ«RŠÜl4U±YÎcÇñ”ªJÝO‡Ä(£(‰A2×î:¦©xaǦ9ÞUxLû\D°*p8þÏ)Ûð`ÒpÈqT”KR¶s —gŠmm¼ ð¾l\uqI4¦ Ó{ÑE¤!Îí/ÑY‹Ü–7e"eÌ&¬2ñ¼Ëtyª_ [²R˜È]UšŠé9(¶6°(Ì}÷'N1ðJ(œ1½ª¿±7Úpj!=äg$øùô›uí6вwÕ`Þáy•OÝàki±ë÷fßÍ8{Œ¹sYdÿŸê»´(ÐèÝOL§R|»_1³«Å?»º3 D¿7ÓЗÖLÒh•\,Ú»¸¼É1»SlÞ ?mÖï%ñAHeS³:zI1ùë¨v¹O-pñ [^?1ªúðhn?¸àŒ³£ÛoúóR·È”@Ân?L°X0÷;M)fêX Þg¤xF¯è—fgˆúÕàúí\O¼Ja¢ÇôÌ=µü¸j°~ëJéÎOª‰øLÓÃäËO¯ÝÑæ1ñÆ 4úå󩤋ÌeÁ»#CH ÍÜij••¿óº•fš±è¤Ò2< ?Ïì³®í€ãZµ—E#D¤à+•Rð]|æ'Ûþåœò¨Á±Þ<ÎÈþ—›ÿ°Ç$Šendstream endobj 196 0 obj 7600 endobj 200 0 obj <> stream xœÕ]IsÉq¾Ãþ/tz°‰žÚëdylÉ˲$Dø ñ$0äxC3¢~½2³ª»³¶~ €°bB‡yjVgWeåòåR…b’ÿËÿ}}{öÕüáÍý™8¼9ûáLÒ?ò^ß~u ¤>Ä):åÌáòÛ³ô¦¾ÆÇÆFŽÎ/TÔ“·öø ~†Éÿ®¢œ´3Ç—ë[¯1þ½ëDBºpü˜‹(4L#1¾ýûͧ÷}¢¢Œãßd“fOG4îñ·÷F{šŠŠfV³zˆÓÄÕ¤´™ßtA…Ì'¼pÈ9 §­9þ˜Þ1Èb¯ÙpF1¿icäò)ÑFËbZ™`0ó;6†Ïå>·6pŠß¦§~îXg#‰ôÝùÿ^þÇ™²~’Þ‚Œ]^L}b$FÏ’”µHá«?D.°J=?Óû-rDÆ$`ÒÙ)s¼„_nÊ p VmŽ„Ij€‰f©*N¤d¦ú­Hª;0Sô..+úïóà¦h­aÂõD%"n,ÇêKk§¨3Å ˜Ï¤­>\À­q2}>KRÀq}~¡µžlÕH;¸¾1iJz`¢·üéçóŸRN_ ez,¹Êܧ§>½!&‹@|NöœHþžñ¤ô4);ö†D÷†‰ôLNj F†G`‡…ijeFªÍ)´v¨ùMÉMV¸îÂiÓµVS”Èþe€Z^5c­*­ŸÔG$b'`Sñø¨ýñýx‚³²äñdAUš¨üd$ˆߦ—I?Ó³4ìÇ`?¦uH–Yô$¨’dv¦NN êô O/Y©ÀU#½“ÅWJúqüšTÉ%C¶ÿ:€b)â¶w MmÈv'·$ÍSÒ‡üÃßøaŽ™¢FíÌmtÙH°ÆÁö´N†)—ÿyvù:þ3°AÆè•,4ì&ÛK»VÔo[Qðg`®Øc&jåŽ%›ë 3Êßõ+V¨±´HˆïQÚŽý“ÒM"ÊYbˆRZØÃlÍ´R7¢á#ç´„¹nቷ`—–'7g‚Ój¾œ0Á(€¥µžþ×:£OëÏÛågWÁȆ•`}ÀŠˆ•=¡L¾+\ÿ…60åè’Ó%«†ïqeá{|U*‘v…uKÏ@â55‚}€ß5fƒ¼8·Nè­®²SÐ%±ÀÄä b»(„&¡{é% jrnNÂKÇgR÷a„êy§w‰y²PY¦§•}®fƒÄ9XG´ã<9µA?¢¯XŠO#¸ß[Á¯µß-ïiœÒË,AR³ã¤™ ð(€³„çnƒ­½ 40ÝD'…ªP N|_5e'Ðë6%>½ü=‹xçEâªVž,Ö…´ˆ‡M¥p#v–ŽÒx×êB™¸w„o°`jM]–Ï9—7>«Æ`Žy Ž `‚±J€jùäu×0ƒºö[€aX¢”÷«ùþ¸þ¼_¬sÒ²ôô]w,ðvý9­Ö§]åt“ZC± 3$`RÎh.«Þ"|À¹Ïi½1œÉaÂüÊÙÂÎ_n\2>²|:ïf¥ãj±‘@~Aâ[JÄ¥ˆ£h.Œß­‚ÏUé.ËŒH±ŒZÂ3ú÷öÚ'¦v•s™/õËéÉk_éGCïŠXÐ p€›é ;ßü«l÷¾'oH~«]µ7ø4ÈžEìAàDcd™9» ºˆ^&ã-¾ô{ ' ýË®0cw¸Wˆ6.Ç=Sj‡{4ˆ}¦Ê{t7Òt …SE,ÊcÎûEP`³äDzÛ³]pÃ[6g¾–× à‰#Pô¢ Õ­"•†ã ebCHâç¹¥¼‰õiŠß|³Ì±gi«$OBÊÞ†O-†ò/ëÓëåg7½$0A0ûEÊøBÈ9Ó¯R$‚Jœ˜¦V€ÊgÊ_¯zY|ötï4—ɽHù Sjöa½K–Y:Øqz"í/‡Ò(ñ¢}ƒsâ¨ñÎ- bô¾|òGn´ð‹nœ nmgíµ¸Áص6×:w—’ON›â#}Sq›Yã5ÊÓFìÓ?0—Y!3M˜Q•÷†W7¢pyÜÿ”3e~A8›Ì/ cÏå“Så·´ô`<@‹•$D‰è¿Ó(+Œ&fyIvz´{ Ûªjlà)͹ ÚaBË£ìˆq.› *@ð-(lŒ÷›Rá,Ð {q”Xy€$ÅgÕê„lP~”ÖØ²€Ânàbb˜3 üÆß³çƒäñ.q L…°Å?qo7*¼\1>½ÈÙO ákÂrž^¥åxo9ë@ŠhN@€^žnQŒy•¾ti3?*3ŠÙÓaº¯Æv%.ïN'ë¦Ç„v‹ŽæøF97É`wc8:ÚÍärB˜Õ•7 (ª­úòüD&\-4usBÇ»§ Qí(-G»'hNI‡&€M‡¾÷'$§¤ˆ¬ÒëJ;UV?:Dìx€E.:R§˜1Qâ;B†Ú׃, |”3 dyµâYîׄÞõúóÇõçË5F½ÙÌø¡ÿzÉø½À•ÊIE;‚£<9ÁýÞ[¦¦|̺¯½Õ‚ߊˆ:+|Õj÷=<™WÍ8DOo6‘œŽ©DØÉ’ß§¶N‚ѵH¹ÌZS|OÕo‘ºã7G6b …TthH(œ½/Œ•ù-ŠJnz°ÒŸ jË¿9Ï«µÍ”ö°]뿃¤EÜy‹Kãnñ³ªŠ@Ã-C–îAÜJª©ÙEõk¶-™Ê¦ XŒÌ`¶e.ÙKcÍf.™*á9Sì%t`@ B)›sÉô˜ØÎ%_h3QU øœ™wþûó9ùg'Â(h Öí*Ìß'rA¸ùFå#àú2ÁÕEO(0>@Ä£ûÕt¾(ž9«ÛJ€FŒnSሠ¨Ã´ ˜P.z…²q¥³™QïÙÌûDYHS¥jà±.‡ÒÃ%ìˆbµ \œ‡Hc-¤dåvfžTÝšmã¶j\‚SYD­ÎçoK¢Ü Ì¼î!Êl1Ilk±çãŠAÏQ„ý¦>Êɧögóƒï%½Weǘãˆý2©†ïÏK»å£U§îö±Ä¦‹ë9~M*B¸™-I-Ñ ™EMBü,MjEÐ.̽]y8)  NÚ¬?ù7Ý¿Ö"(ÂXàæÁ0æF«4ÅLø“[d¨±ïÁ€fæm "­¶ÉYa[òâ-j–0A¸Z æYI«»6•ú#b˜y[Æãe)£ô >ú Ç>ÁDãìlrãõE¥]Ì#èç‰ú"Ù12xˆNP^|Ž JYè—éQÃÕ(›Ûtm¸)]¢nN˜Y°¦s’+šóŒÑdˆx sŸ&‚)ˆîLî™êé2÷ý™n„PU ¦Ýf”¿7áNÓ©F‹‰ªE´¸×Ûî:Æ¥Áx>çUÆMCÕ^ê«ZŽŠ~rÖæmªm3³Ø¼ÄÊì~ÎAüç]Õ¸¯šB}gÊ>´hÙÊ#=þ˜Ûå¤)ý>V¼M={vòÒý­Ò©ûaU’{ëQU©ÍdWu{¾²²oNc‹Ò£œ^ÙÌ*!‰gÅ—çЯò‹Jí©7Ù±ëŒp4zøYŒ?$z m…Æuù±£Í’k^&¾–XZQ-µP/Lw\#x’jÉ»yŠÊ/¢2¨“áMZt oövçaå!ûk6Çâô¸)6‰úimfGBÛ4”æß׈™“J‚q….–`?KœëÏó{ñËÁa`‰p£ö:o…mû1AÿL{Lu¾eα¿Ôþè¹±Uå°ç.[Ä Ži²WƦªD| 'F1îáåjî_¨—BÂ[óÉ‹ÐÄ<ôi¹r̬±¥£)vhœsZø˜5&-®Ô˜v#ç¸Ùm]Ubª{xkÙ‹— )ŒDža’Sûˆ]P¼±·-/Ôn½œ€÷@½÷Õåp1zó,ÅI@„ÈTbŸù8ÿ~¾ÄŠw$Ôe×MšŒw£€­Ùò:§›vÇS*~£Ð†JÞMÙ‹Í\­Õ‡S|ë0ä+°8'CÇžnWåè=%÷„ŠãÞùuV§[æS¤(Í¥ªG<3É æF]§¡Ê(hǹ}×ùÌðµjÖÀ¹ëª0÷k\-Øë*wµßgìñݽ7BQ>¸´1Ëú:hpÄå]çc¨þ©ÞÛä–7ÆÙÃöúQnÌ)²Ú´ A:0`†’tFS0uYBáûôfˆ-°”`ú‹0–»ïÿ[ÒÆU ËÒó½Cÿq)ÁóÁŸó6;W$ƒ·s=IZª*è°™y£‰K³ë1ˆæ¨fãlØ>Q7Wr€Y³\QOÕ^‡Œ·9æLÛtë úÓÿŸPuß&»É>\©f“<è?I¡\°åáx>×qç 2%¬íÄM¦(á8ã†]‡= Øí™ÇËÙÌMš{;è'ÝÛ‘Zâ/»~³ü\îíî(ÀX BÏÃ-< Vâòäá—uàõhÑ1¿°Ëv½¬ƒ¦ñiýy»L¹Û[wêÐ+þ<¤ç ÄA(>•½êL)IŒ|Ä#Û%¾Âÿç9µ¶¡¶È /;o(îä1®#ÐhkZ JÄyšE¨:嬱ˠ9"„d—^χ•siÎZuªz»?¨ûnÔ=³¼tõ¹Û *ìdî¥òf®ØæhGb§¬úæ ³þ4î3YùŠiÑྂ::ÏsØIÜŠF|:î“¡£«Röº»è÷ó4ÊÐ][_YGs5o”IWÚ}±  –ãp«Š'é:SÙ›Žyå¾Oï û'3Ëz}¢V(¼ZÐo*TzmŒ>R¢&NàÉ{õ§/Ò¾>º_óøË$0:îkåç ´¸=áø‹tƒStãC¬uI—¶jš.qÝìJ[fUAgªr=â(±Á¹^Ž0.$죖ëÿŽž­ª˜vžÐ>™ MéaÀ¸Õå…A¼[æÈÞäzÆ<5‰%cÞÖxf\5j–ûe¾ ßÐprKÐp(·m*z7½Ð›Ú‘ûMû­©˜&5ÄèÂo_–_Ä“}'L…ô¡íz'eïâ«×5\Õ§7‰{''¤ð¨üÚ‘Äl×ýúóã#'ôÛ…'˜ øu*'a÷çM#ü®w8pÖSü6fnö•øiÛ´-M'íEìRÔ7ph4]!èVû¶éÈ:Còïåè?K‡ô^›ö,êù§uHWŒp[®Ÿ}îcãÊLË—¼ýÎQÁÖØúäÅ8]Ï·ä¨ÙÐK¹×ÐkPÝ·âVe7<5(‰ž2Á¹«°Szú¡È í“ „òU3ö­¸½X¿ÛÛ Ö|÷ÑÈúû9¨xŽ&ÃU5#Ýn¾ “HÚãV$sñܵ­<ÉGW''ÃÌ2]­ø¦kº~†2l ìz¼ ±–a¼Jy”ªº•p,Ö"j™4xeòv8fÒßêøʤÁT±}’L¯`#U‘×YvκëÄ£`d=«ž1ïQ“_/˜égç¨úéBlpìæÄÑÊì:+;Ï©ƒ4çúRšYx±Bæüä$ïª`¢Y “r¶¹û)èmt?ŠP f­ª6'žÛ­³ÖK[]ŒX ßlô‰™¸K}D{áðº7­·) ¤G[éve‚i¬j€ m‘Þ ç¥>T±ˆ´hNB¼2‹.4Ÿ£ÜŸHðÌ|ôu™ު»1‚ìßÝïíË”KI}T@(Ù ¼°¾·o5ZoCó' º÷=Ï•ãUzúúgíŸÕ=w‡?þM-vgÐrÞœäR=Nö៎ægs¼4_ó¡qQÑkv|.ÃmÕ»A$<¨½~‚ư«Íﺻýe­RÓvv´:“–PÉ–®¬ÉQg¯ÆÒ¨ÑH*šäfÜ·ÿÌD;¸V î´;d!Óe”Dî Ƕ•û¡©ozoÇ)·GEzxZ0ò¥ô[,«;Xé:be˾©t©óz»BÄ¿-³ Ü(¢ú,ÌøŒö†õkn†ÚºmÀÞ6u¸0Ô}ÒÙ¸Eö“zI~öWÅN¦ýendstream endobj 201 0 obj 5910 endobj 205 0 obj <> stream xœí]Ks$¹qöyÎÖ¡SÓ–ð~ØÒAްV(¤°Ìv÷03䎴Áá̹k­~½2z$@uW³›CG8ö°5E™_¾Ðß_ˆA^üoüÿ»¯~ñ'ñþᕸxÿêûW2ýñbüß»ÿq ´¼ˆCtÊ™‹ëo_å/å…”rp^éAx}qýáÕW»O—бÆúÝçô]P»ËÛwËãKƒÏËÛGþ˜¼YÞ¾ß~sý; MjJ›2C@î•Tƒ5N^\ßY¿ÆobôJÂPWrÎÆ8=ï¡£…Úýty¥„Š»¿\^‰ÁzÆ)­½‰»;|­µõÊïnH“¿’÷÷äýûÜcH3‚ׯ ±èý›È!Z ­›‘ñß’ß­µÑƒÓ]BzľKT9á…CJæç‡L¸‚.¿MÍp*Ð$T}ÈSÐ!ìþÞ*¡uôÅ$Ë!•¬5[à 9`u~Ä ”PDûØ2G­éd¾Ío=ÌööÙL9;i€í?e2”ó-2´5™‹ä ¡ƒOy&AäÅÇË«´±Eš…!ibðÞh2™°ºÀ•yË¥Z»#t ½WÁéX;žƒûD7¾û¬ïd~)d@Ö‚GšóÂsB_Sv.¯Bp0’Þýæ2À^ù’;  `6.зãÒÛÊiã4N†nÜh.`%f Väï¹}PÖÒSÐ놌z´è!Ìã§ü@h!üô)¯ˆÓEãÖ€ ã’dBèû×—WVz²ËØ”À¤ vØG:ZZáIJ´‚-F>ï`ëh¿¹§æNÓ7åÀGåvþ-w b( þœ€Cÿ¿ÉÛ)áÐR.–VÞ«•Øô1µEƒˆÆM§§[ˆ†éädžÎ4d–6>“BÇÉV0ê8¾‰ÞÒEdGßX;ÈÄ@ð¨A˜㈱OÚfé‡4„`óÂØM ÚÌTØÄé­sTwTs^=)´ÉçL’ñ±Ë·Œ—`ôÓEódïrÎX&añ;ošØOóšvM]ÊBï úfé[ ¯ÄÕ4™Ùúý³V~Kº{S´6Ä øWò!ü*kP-|ÌÌ<] èÃU´f^P:‰`7øeW[?¨¼²sodi[EYÈÈCÕ×t¼¨úš6-ƒ6' @)á¯2LÛ†„} Q¶ *6âÔú5J—d¹bÅó pÏ' ‡ê`ÁA€ÓyݹE™ñ‡öB1‰lâ½:äh‘&y W g`eæEchzAÞšéy§·òNì1–‘7€|9"ïôøÕüØÚO\5í%ÛOgLk;ak`yæíüW@:ÂÊøœXsþvðvþìN+Ú†pj&ègHP°óMŠ®àðÂQ ìl~½[߀.FUnÈ3™Bã†àÛÞ† 1TlHRºÖDØûfÕàòhØM¶—Ö)m››çÓûcx–<Þ÷y–,Qî¡Z¢e‡ðì"ƒž°DÀÍÐvîúëKröQzI ›q¶…&€+@oxŽ)ì46»±Cj)~ÄצäN&ÿ±?ãTÑœhÐûL"JûF¤‹ÃŒ–Lëv¤Y—ÆÑÒ+v‘´ Ñó”–všY0¾Aë„n ú#ŽTù®ÁD!é¸e°#jmÕ°oÀe‡¢/¥AV™ô5âÙl0*ÂY`ÐJ=)„éI X‡d`=jA6“vÁãC&Â:OQgIå¬1 4»Í]K80„Þ$ÀOq…¨Zö2GøBfn¤åáÌ"æýóh¥gÉO˜!£rCkoÓòLk¢Ã“ÀèÔz4›2u'v¬¹»„K¾æQ·Öï93ÇúpXÚÊp©ˆC"'Ñ/ OÀ$SC¦#“[(£ŠUú8Ù× <9 a D,.ðôì Õ ÎÅŨGº¬’ö€V3è pÐZc@hóZýª­ ¤Nîÿ©m ’na»= 5=†øRQª ÏŽR‡E$fåA” ä½" àTúä÷‰íD’²I"¹VP`!Ð0±PÆm=t Ò€z %|èe©U@ N÷¯·¹7D=ùLqS >p@@ØÔÏWj v`X)x¤Hµ#ðé—ýçæÿVîI%i`g$ˆ‡ëß¿ºþ—¯ÆÃ›äí¾s|·OÖ~Û {s3 ùÃå˜kÀ¨ú0,X ‘a awÜv<Ÿ¾Óñ,ñ%ì; O]K%˜ú¦}‹ßùÁy[‚q|¹ê2ÅÑl(|Á”ÎïDŠIÑW#v0°ß”MŽh­ŒÓ•zV ì`<üëO}dgSñÃ:û\)0P°ù•Œxtâv6z¿4xh6x šDc„4Jn­úûE¾"fâWµµŽ[ƒ?0°uÜ¡33ùM&"‚2"œz :éÇL,Àyò%€lâf}’pˆÑ”ú a=÷þn»FK]/¬Zœ'E4¨½ùHl”ìx„lPiZ¿M]k ¤pMª†‘„ÊNš‘ŽÒ/y÷"JKtðÔYfÏÙs±D%8Ùֻ藬„ÒÈi‹²JÅÑim /XwB¿É‹'Ý~N]óeÁ¤¼°ç9I¨ò¤ß&8è8Ì{‹Ë畚XÛb†Æì£¸Ï …ì:?™™´ôÓO™O£™ur¸´æw¥ŽÍZ_yàlç³¾Òâ}µö|©”Ä6Žü`¤œ+‚%K„¼o<æqŠkÛSzÇ‘–B¯Ë¦‰*Ï ŒlÎÍòø~P¤AµOšís³4ÑØ#ƧžV^›“‚?Æã&U¥­¾£&Õâµ.Ûð,÷dÎß2+y!©Œ¸!á;"›I“žH +ý޼ÿiyŸÕ% xË =Ža€1 &ÝJ³ÃcW„°’¯þ>¯T["õô|ô÷#èûåíÍsJ¤yý6J$@eÚW¡;x+u‘g–í{Ð…p"iLd8ºAwï8Åu¨Œ9©$ƒ.Õ6I2„LÞ¾Qæa9…z²(ƒ¥A¢¬œÖ3ã™2M`«(C–6v£(«û\ÀP;\¾{"›Þ-¯ÊléÜ3Hµä]©âÛ>S&ap 8cˆ>h_rV2낟©·›-âœVá·í:‰Ù«›y†ÞJÈÂ%ƒSF·øMƒÈ&ÞL¬10az®ÿŽ Û Ãaüiöñ¼e§œœêhýØl{ÇNN™þf`4¿Dþi£á/¶J +Y%£@ȆÝ/ów½´9Ðq^†ù»‘H§%ÑÛ‡åñvyü‘µÍ‹t7¿mîfLÛÉB€Ë\˜æÎÑU?‚vë_Š U hB3H·ÇÌ¢š+ $/çM‹»ŽÔQÛrïªsɧ8—ÜåY²>‹üþgýÖ(M€o7M9ø¿·F<ÑÀÚ=NùÕ@ª\ Ò¢Þ™µ¢„Y&Ÿ“”L©'Ç ORêÔlàkAbiÓÌ‘~´B£Ä1êÜèωF#MäËF€EµõLÒ>lúb›?-D¥€æ7 ~·À˜^Žî*ÅØ´ÍO8Pl U“µ—)oÜC¦‘%3–<ƒ Díîn„}Vrð-,¢²ÀO ¤{.BºVlññC'7¹>¶X½['·¨¹:B•Þî˃ê`ë„UGzH™­g¡>Aêãæð`ÏŸ'ëJ,têÀÔV7ФO%nøwËÓO*>Ý%¯£ˇ¦`ZtØgt‡ù^íÊz¹EŒÚN*- E$:¼Y£Í‰JwQÂZVÙ·iɼäòÚ³AOe‹Ìã}HíÔ[²<Ô¿Í+ÙËKÊÞǼÍüæ™jÝ͆éæs#[¡€•‹¦·W 9E”¤©üDÓ7¥ïµLu§žukbJXϦ¦öÌJ†S/"À" p@+Wu,’åK>ÏÑ e׌+‹*{&Wš±ð¶„KFùFÕkÉ®cãv¦’þQë ëLÀ´ƒ±AϢ祀CX%°XÀXmš}U×C^#¼U SÑ€$Ï'Š¡†|!Šïêç4ÐD,ç.¡Må¥Ð˜\Ä“Â˺ßV.ÿJôÉC‚IÇY=½»ß`w°è¶”YïÛJ¡ÔúX•œÜ…¥ñc'ø!óEp|Ç ‹ÜË|Á’ÁTUnðVb•~ø÷¶ºi¦»h°è—RÁ“.·bs{¤¦ÉÓ E}™=GÑvëGˆC®9SŽS9Sî>¸_oÎŒ«`fjð‘gije•”ç&%5DÍrªXgú{rÌ`ÅížäÂ8ÉY€­&ô¤zOTÎrLOkÅÌ€À’}$Èià‰ƒ0®XëÂ¥cšΣX‘öýû@Ûâu¾MÂMÔW²Ír¬ª2Ø h|}ýu”w­TØ—ÀY`K*ä1³gö3õm“b£i} ?81¦z÷P¸+âM ‚«—z½sX‰¯÷pŠõžëÜ^(Ôª&ðBw+L <}-[©¨V„d­<…{fnü9ögq§VÀN‡Y14°Ž‹üõÂvm†`üËQ—†²£.q½¼-í¶Ýß+é@Üä%5^˜ê~|mC˜¶¦ÇªB]Æ¡ƒ‰™#+¶Á,÷æüðäÔ.·*P²'ø—fñÙ¨Næð2Hv}ÒÈo§½`ʲªnÁº“÷Œš’6–`OMA‘EüæÙNóXc‡{ ²?ž=¢ýÀ.Ž8 ¢ÃRÏÑ9s)€cE…è͈„1•Ïšf_( « ƒz.&Õ ,´UlÝWB*–Èò“¦Fe{¬DÐê27Ð4!”.ýÿ!B·'¹;Ù%mO0`dz”hT™A„1WÀ¹²ò‰‰#2‚,ñ—wèÀ¤ªÄ‘jRšÏ…VØÁ’´De´à’;Ur™°‚ð°d©í_\Í—8UÙZ1UÙæÛ°äßÚÜäx£}]^û–&n'h;ÝBѰ*Æ»90å%2tT×>p¿-KÕ#uú,Éóó8höaM¾ëßÛ’î)Q©ú³qOTb¼43‚uëlÓŠ„êž#?õQ†ö˜Ñ‰k¢Åéï¨2Ú#†;¹+ —Á°:¾Vêo×<ûþ¹\P£¨`tìs$š”;ÒžIS¡° Ƶöº:q´^ðj"¹tõ#xC„[± F—“¯bS4UoÞÂRDæ·ë·×B®SØN‡V–îEÓ>gòñж® GÔ?ájD}–ªyœÇ[>,¿qwÝVÉãm$GT8â:Dϼ~yÕ¥màCv£ÞçH½¢èŠ—Ê6kLA¨iâ;¯àK¡€S†7tk+VDì51N_CLœQëÜÔ¢á¿áâ0_˜(ê®% âýUG$°¥,¹1‘/àl+º™¤Òí"=¸ãʪç*œ2Š7ÝÁa‚Çmé¾#>¶™çÓ’!¹ù1·/¤15¿¸ß:_&vî½á=6["L;&cu ÝO:$7™T]8‚:Ø\`1´ ·FHƒKsý]#ãS+)âi¸9¯ýY½_.‡Ø 8,¶Üj­´lû¦5°--»rpžºTXWªâ&,9è”k•Nž´ ½"š˜³ ÒBâåÔL®®…‚4þ:@ÿV×Û±ILáÌ-Æ_rÓN* î™:+)¾F«A—N‹C~©È3®*b†·Š¥O®þ¾Æ˜s–{“›}fH;°Á)jŒR¥”†^‚é§)™"2s€VJKyü4’ƒÃcÑ™lý§§É+ ZŠ#Óä_B>êŽ@nbg†„Zx¼£ÒìU¼ƒè{r/aY=…øt¶‡÷Oy/©ˆÅpµ sõÔò!ƒp ôây?ªzêŒ1¬”88æ#áŽga}a£#†nÕ”Ý#«’Õ#ïš§]I †^usÊReAUúçÛL¬ðMÝ|ÉpšOÿç1è%¹AkIÿ2 Ç•+´æýIÞb>‡ hx1µ0ÕŒ·(èè´>P %‡c4˜Vyï ÒE5nÓØP["S5À–Zd.èæ%·x˜ù鯆w"œš$5<ëü ^C¤3ÇÓã;.²Ž¾lXJ;ž‚ÄÓ(ë7£sšDskfî]S|¥Aç+ÃÕgµ¡ÉmÁ«7f,y¼tëÎgD¥­óæ4FÔ¶bU–ÿRZEKöl3Ñ °©‹ö(cîõX‰äA T1ö.H¯/pCÃ`Å÷|%1uNé)ÃŒ‘<No+ç÷aS¾E,SorzxÝû95§õÚ2»t,½ ¦´p²CæüÕŸè¾aT˜†Í¦ÉØvüg™æñ:æuV±ØFZ1ã¦+Ò<œ‹åTP4Díøù®^Nô;¾›ùUÔªùР(©C‘PŒ?"PkÐ3½ñƃØImgƺ¢Dt kjîÊ¿Z\Õ¼ß侃 ¥Ý¿¬ÈM&ÏûØ=Üiitÿ§Â¦ ”ÔѤóOKòÃrÙHg/j“¼ö "0!]Y¸b[$ºÎ%y®å—òSÕ)l[r"„g B½r>dµ¥ªKÂÓ=•+¿Á6_jõž\‡c þc‡yLÍÎi«.¤éMÞ ÿrL„ò&çãe}º_Bwͪ…¿ŒÀôf[¸º”Ò6A!+ç8GÆ^;@ø›'ˆÓR+½Ì§DUÿyýê¿á¿K*þCendstream endobj 206 0 obj 5480 endobj 210 0 obj <> stream xœÕ]Is%7rö™¡£À;²ífûá“f<šqÈ!ÅÆ:¨uKêMbK-ú×;¨*$@½z|$5ºâaG®_&~:ˆIþ7ÿûüíÅ¿ü—?¼º¹‡W?]ÈôÇÃüÏó·‡Ï¯¡‚–‡8E§œ9\w‘)RÊɼғðúpýöâo—/Ÿ@Ã:ë/_¤Ï肺|UJI…W¥ÂM)ýÈ?S…oKé³µô›ë‡±IMǦÌ ÷JªÉ'×/`X_=¹SNi{ù¿­·šýˆßÆ øÉå÷ø­µõÊ_¾‡>ŒÖÞÄËw¤ú·¥øÍ“+íýµ¦¥??¹’“pÆûåÓÆT˜Œ‚Â[ü•Œ7—¯I»¹;§°UC>Àú• tlt@¯r{ÚU3¡M¿ÄnR6.ϼR~²Á]>O?t ×ÌÏMÒJZ:÷­–8¾4—6r®ðšT ‹xƒÅÞÞi¦5š:ëKò}“‡â\¤~7OA›ªñüC”µKãi½«YÀâÀ6N:^þéISô1²UÀ»à«Ï Ûx›O}œDw8ƒqòpvç5±·xÇèôh•ßÒλ`u¦NT”L!-Yw6­‹ NÝ£-.qˆr©ý†`xòòŒY ­£¯NÔàNæ¦k’ª ½ÍM?㔯PI£¤Ö3M¥¿vë¾aTÒ9Ú?Â1[ºûÇB»«$‘~EÒ¿ð—ÿÊW¯— °˜e½þ粬Go ô\ŒêáÖ€ífœ¤ZWüŸóTà´›ÞØ$l°ëØrÀùä<ŠôùsùüX>ß”Ï÷eðÏKé»òù¬×XoðVM*†°.írÔžB“ÈFîcíLŒoécÊiø}Ÿa¿q[•³“ЪÃ1²®Žá,æ 4í^YNÓÎ2°TIu|}ü9\å öÄXˆ–™ 5[Fç5Òy¸o¡{M#Ðà¨w37 „]j·B Žc™¬åÛ±.MŸÒ•^w]6¯wá,ð>hk¹ë\ɯ!)%Ôâc÷r~Û»{Ý r¥\ïÛwd‡É´ ã Ÿæ¦DwzWZ w–1éGŸ/ÿVJå]¤ œ å•,d5´üù¼|òŽóÏšŽ sbì©HžcÎ5*¦üMéåÖ cNÀn¤Y{éŸé.+P“ô~ÇÁl¸T³c|µNX8ÊòHïØpþ_íXOR±@õIåàlºÞT €&„•jÈõ>öÆ7Ú»hëq ï=”ý4Š7«Ä—äú™¨8|¡T¯û…ð;*dS®‘Å]ãjYv*5²œHF !n²0€<´/Óêk'Īg¸¶dl-'X´EÆö¾'c£J;ßàŽ+†£6Õ2­&Ø€1{ÑEg¹h z]ŸÄUߢæ,…¦s Pü"O 1g9©XS®\ 9kñ³±Ú¯‘1˳T’4 1âþ/È ´ý4¯(#ÆÜ®8r¨¹†Æïzi’ž \εàUÞ?!,=è0ö3<ÉÐQ“ ®³‹\¡MÅÞ]}…<\ÇG\}_ý‘Áª»úû VGõç}+ÆÔd|ˆ;åxàÊnI`\y‹ht«Èû`T§ÌÀÊž4Ž5p « þåÅõ?Õ':Ú÷m.‘ÉuÏ—ýBÕŠæ>Ó@sRéó Ó@¹Jãûʆë‰zÝP\—VPGhDZ~§t¤ûZO¥ÒU>¹Êž‚¦ËL½SC½Å#âû"$èpQ,n³½>¹é-Ã!)3<ÏNCC© OÝj0Tgëͤ,yÙâäÍœבFŒŸªÁµOkmŽ~ß}gÖkÕ„”ºè ®ØåªwTLjîßhÈpJ Þ²dKÇD¹öVÆÊl*aHqå"ÿ‰•‹Z¾Æ‘8í¥qÙ%ç$üèòk(ÖJ eò ŒR<ÚW(Z­LÞÀ\œkh<ò¹ÔQ‰ØÝ@tÇ­ûGP¯7‚ºniy&nÐ'ßL£@ɱcß)[ÈÑ5\;" 4tòÚ›:ÒC¿Â;¬a@Ò—Œx"•ª;üЉ¤sj€ Õô´NÌírbªƒMéÃi=• íIƒI8YÙŽ‰þ\®O„ËÕÒê”8‹Zlz*° Ú¨v3øB£t¿›±i]ÍÑ*3È‚qj’•$LÇG*í³£‘5äð„>6 ¹¬w÷ëB7ÿP>¿*$ôº[áÏ—ü·ë‹¿^˜IØÃ§ qøâ6½öë=È›úðJ,šàÖ’7_Ÿˆ³&ïR›“P2#m!€ËÓ„±(Ÿ¯ËçÝÒFäÛ’§C¡„ÀL=æeë#z nò±‚ÍØ©È猞q¶Æ!jâÝR#ãÙØòLú\¥Šg¤‘ÌoA(P¤1 nËø¤ˆâoù§ÑéS…Œè#‹ÃÖ?k¯RCºQ:2@ÜÀd0Zý•´¢Œ`4œsËü“81ú'R™¼[|ˆÓÛ=²„pë\kÔÔzU Ä%ˆF1 1íLå·­\k)å.¯çßY74ïd‘Eé³g”ìð¤d6!rPãA‘Htæý"‚ÔA]ét!Ÿã @’šGªÓ±_¡Ê"³ ºÔ-kFs˜´õCFœ»wÊw”†$@ž3P 7Û}S/$§OÉD„ªú;†pÐÆ= ‹¢½N›±Ú“¼66îgQë«cLÉjD!û~¬o:®”3Ž“¿´ëfKú $µQn,ž‹5/Nv„?”ϯÊçu·ÂŸWfUx±ö°Àn-Úg#Ðe»–œÎ€¡…I¥€b(ʹÁ„XTˆ_ãCù|]øJ =ÂÀÍŸ‹¦Þ˜‡RiÑêX…7u^[b«$'µ£QÇ^sl“¯Îq×ë™Ïªgò;¥ùTC«/á‚kÜÐϰÏÐó㙤3|=¸¾§ Ž©Ee/})%:}§8µ¡ºµ»ˆaãáô\doeŒ[fîVßÁ¬s*`z=˜FÌ…ê €éÃR.Ûø@vÂp‘à!Àà4öêüoMNñ—JÕ”u‡à’f‚nÑ@K?Îí‰Z%¢m“Ú ­ s µDW׉´HîlUǽ6m3Ð@#p›'µ·¸Í°6×?tP®h­ˆRñdè8%«ÍY8p j_Úצ®Á) MŒÚÔ&ݳ;Ø7]4¦Æ^$}æ^x@¹C{•¤sq˨(wJnPzv†4˜`&ç7cL¾éy+I3fÈO²%Z>ì%ð{‘ܳy|¡¾}ô>SálåŒì™šR75 Ú)¡OìN¨yªÍ²f¢\׊T÷6/+:tûjásÂ`QݸMáò?°8–Ä@&³ú‡æ€}âYŠ>É»l©zBÄdº 7¹²ô¾Zþ×E™¡¶6JØ;!7Å=¨æãWÒ:fËKr[èHmÉ 妵0Â"Óm*€¢ì¡FqÄÅ]¾ŽwëÆŽ$ºqÌ„n³ç¾‹š`bÏ’ LÌù#ntÔ„Ú²eqL3ÖQŠýeˆV?OM¿®ÇžÜ&nœ³ïÈ6Þª²h軾F–Ÿ‘0°z¨ê«>ªþª»)ïVkÝzz¤Ñ¤Õ„Êwmç˜û>âÿLmPÝðÕì!ñΚ(¥BÝ·¨Ð8©÷#»šÈWÆ×7…,[º˜EM1"\'E>¢¾/ŸÏ«!Á5Œ“ð N[ \‹ƒ½7îJÞÇiÁ‹”˜Ñè0çÑD.ÿ’Np°ÐÄ"лkö‘ ”£q‚ 4hϳÈÈ<(Œïº1Ùðg¤ƒÏœõwîÿ@oûwÜœe@AqÌ_Æìâ]0çÀ¬DQO”§mɰ´AØ“í›]"ñtæÛ0©‚ƒyß¿@/çýsáò²ÄZÆs8TWóð¾Ïm¶¤€x¹Û(Tmô¨Ìj!i–¢„æIÛçÜ#±Þ ˜×ƒèMnÃ_Ó¾äV·¡ZñpRJãV¢:f+O@¶+œŒ°Õí ´[ÁWϨÁ´MÖ³Ÿr?þ¡à”󺾟­öz²Eµ}W¦>Ðíkk;¬5nîrŠ÷šz“ cê]=)zÕo°¬4R¦X0üó2½Ú¾¿íॱ2ÔU»ò=eÎøÄ(Æ|›Ok·‰UƒO/ãïbüèŽX¼ó=Ïâ÷·ðàÜ*‚ ?±ôÈ“:Õq ”#0£óÀ)òq&Eµýa«Ás"ÌõÕW¥t¡q}"Ih„lÈY4Ù)IàÀ??é±½å“`~>/¥¿”Ïï9Eg^ªA˜´×>*}¥ŒÆ1ǽÕ9\£Lêh@hÍ ¶Øzï.¨ŒI‰HXﱉJšž$ýÎ>Œº*‚G¤i#FáÛ l7‰“™SƒÍس,(Lje]чΧÃ6¯;èšÛG¸W4å.+óL]× qàè’ø"ô™Ñ£#ö#pâËy©ÜYq]Ðòmž˜3jdT™¯¦—µú¿eå‡ÙÀ6Ü[ ö1Ȥ£æAŽÝV¸Ÿ-£]ÞÖl¢v ØÔÛÜ\ÔÍ|+¸&¿xðIìXãÁW%åÆ|VéºÍÙQ=Éß8º¡g¥ÝØ6ÂŒ}-±O''NZS)0‹36ãзû0&êð"3 è¥sZ:ìØi=íúè£D“o(¸K[P›c‘cü"áJ‹a|.’bþYÝhj.¯lÍïDhpCP7ýi¹Æ8 gIxÁÓE¥ÔÌ1L%¥eHq=³'¤'Ä-n`ìØ²Ä4©O&vï0ZNHÏl×Ob“¬Êvf›¨êÀ’OÕ9ŠP(æaGÃu ®Ñ»ÅÌîFN¬¨²5¦Ä?OÞdŠ]8Á÷--N¬Nå²:BÆîœQÁBHfTª:M`°?›6JÉðq®nú>÷›üçh;nø•îåy)G¡aÍÍmBÝúÔÐÑÄk§Ë°Éï™wÞ'ú-ÀA!ÌónŽó$ÁÄ&Ô¦ïxÇÍçyàh8Ð4I„6º³–päŒGx>YÂÜ•®5£ÞÚaB•Mvá€4k¤w˜ÐCL²ï/ ‘(B¸CQJD•°žyPH´;î¨Ê<éxø¿­Ôh\ï;]‰l §Ûo¤ÄH?žì`#ãtb­]’ìNZ6’›Øñj×Ð×øæ8┤„ w¦n”ì\iá'ÏèC“ºœ3bþä׿«oLÓH) è“…êO×ó´h$ˆï”vÌ%gЋñ•.ŸÕ?žK;ÁoÒÃ,“aVK10P¡`d ëÂ8°íi9]ÕÖÔê!,1bò¹²]Ê¥wÎØ.ŒØÝ®óIËŸø.s>ÑÂN 'ÎUé†~DS^wîGôIôå –Ú-ïl]ÄAÐ%f„ÿ¬|(®ùcî3Z.•`¨ÚömoÄ²ß ¡9×{Ê©€®%¨Û:¨¥ :%.Ù2¿\%(8–Á¡ÍæFv2IãorÓB˜G¼Þ7yÊVUF™O E}n_Rúm¿l–6%Œt…T÷8ý w<ÔXŒËªˆÆi™–)2#9ôã¦4Aé6u’t_hˆå´èªˆ&™™:~4TzE—.ûo±rÞ= 5Í7o^œúæµAÍñø6#¼‚RK¼nBO2ÛWÄ#ެ‚'¼rê‹ûUÒ±#$9Ž׆N.‰Y¸@ë.)üÚá÷Òväá侎žÖ¬ÁÏ ÞrÉ56²ÕX£Þi»]ò˜Ù¡-ƒìèÙko*Z2ˆæIèMFõn§,Œv˜Ùƒ<ÓñíZ·õ4åÎ?esž‘ûߎÚxŸ5?éb§ò^=4?£2ä㘕06¡4¨úÙ`÷ÉqÅXDñ0(õó}ãȆ܆ã#^•OY~väÕ< 'Iž(°úØÛŽ(stGLAãããáWW¥T–Òm_>(ï¦(vâ‚ði"¿Éß504½ñšçyXtlÜôò¬U¨aX¢Ø^mïÓ]†MbþR†»Œ ÉíÔyµ!p›Ç¢­ê¹iÓ}zFz½jz= ½EÝíl2U ¯èC×§ŸV¤Ÿ×§gzH,MIËL [Ìx„×ò¯>6ÐLÙ‚=Ý ˆ/ç‰mk½Vã€~?pÀ‰&½6¦s=" —7èñwJw¶áÜ¼ÆØw<ñ%ö½74MƒDs „}=¤[ÞN…Ô!¿k†wA*æ¢ÊmT×mÁBi_iÐMpböP©þEnÏÊíüy‚ôrgøª’¯W© _ÖPF 9 Þ,ïA^ÔÌáƒL˜é`Ÿ E&©z²3Hi{Ø“lúMU>î4Ö¦ÚVíQ ú×Ñ‹)^Ose={Û7m8&w„"që¤×·¸“LsÈ”]'cœX¼ªUÆw“‚Äx[ ¼‚ã,NÉÆŽDQUbаjV–ŸG_-Sª•™A¦áÙ*×ôRÃÀ‚•x`õ0„8­6Á6¶`¶ îyjlGxJÍ(på0çcî>¸;çÙÁxz씼W8öE%Œ4‚ä;ü>[ƒÙR˜\UyOVU<0ÒßÃ[£kÔ äAX¹pÃ%>Èñ«­ÜR°"TÉn^Ô5¨˜ã•7jm¾]b]ا 0‹þ‚`P (•v¤1÷¹!Ä+Æè‹s²Â,Ø0@eêûÈsN"á6øFšzà|#O}“”,m?¸²“g/{ÊNꉂAèƒ7£ŒO‰ûE g™äðLj¦Èóô>šÁf©Æ`"†ïò~ö= Ì+‡hv–yØ<°añޤ›F£H¿‘­–H‚åû}}¸ÜH£äw[tÀÇv;ö¸.; eöz°¿õå7‡¸Ä1¶˜{Øad.62*ÎBÇAÞ›ü³Ö‡‡ëg%÷á-“d¢¢*¥Ï܉m3‘r¤‚Ô„äèƒ} Ò‹ :Òyˆ)Zí‘ïæC"ºë9ÆE a=Çu~²Ô¡Ò{m 9¼—„yÔ¢Ü<Þ¡ÆÃéACBky9®õqî¡®_]S3Ú£¤dA…[ЙA…wŽúÚ™þÏ÷¸9 ÿî–näΪ‹<ç”.ü¦úábWºãÌcܸªédz(wÓH@‰Ø Ðг~–4–%]kPU€‡Z|Û§¦AH¬ã:w³¼$&ÔdD`ôèòè]Wæ@ÄN(K ^ŸØóÀÞ½g©ùpî>™ç!&\25+¢ý[À_<èb)lj% ¶ˆ:T¾ªUرÉ7ò..Üæ¹iÈÍCkì@¬Ù±²ë…l¤ÞLGÇ'z]L¨ýç¤ï^’óš’®àŒ¬ ñ„½¬‡Ùþ·ñÞ}ÖÃúÂÌ“« ;AÉi-¹ECÛôn½D£F¨ôÇ/4ã”êP±-HB›“CÌÉÛá&3@_Ó°µu“'ŽòC׎=‚äP’Håù|‹ûÝ=¬«Ò|äˉ òNéÒoy'l…æýõâÿž B~endstream endobj 211 0 obj 7250 endobj 215 0 obj <> stream xœÝ}K“Inæ½~EÞº8+†üýÐQ¶Òš­Éd6"Íthé@9lÍ’ìIõhõëÀñðÈŒŒHVWëPÆ3Pp8à‡Ã?ÄãßOnñ'‡ÿøÿ‡OwýOõôáëÝ¿ßyïË)tï—~Š%ÕSìÎ-µŸ¾¼?ýóéó[òéÃ]ðµ,5žrÊqqùÔÒ’{­úÿ—÷wúÃ]ôÝ/­p¥àêâÂèÕ—ÐO¥P­n±.åŒ),Þ'èð/wdÞéŸþÏ í^ÝÅÔêÒË©¤Ò–pútCL‹o§|Z’?}¦Ð›[bßc–Ü‹[JDJ z»da)[mDn®®,-M#O­jòKÍ<ÚÕF£‹®ÀÎTÃÒÂ)å`®?Ý…#èâ)U˜sÉÊ’]t‹«HažZ\Z™(ÖÊ÷’—v[Ù0 ÍÆyjÇ<&[xXéÄúF¯.š}²A›tŒ½ç%G¢R_b˜e3‹õ/<&è²UvpáÝV¯î|…Õ™h•æÅwè_(²„h ‡ëfqcÊÌ%KHh›Kï˜ ðß—fÆåÿ>þö5Ä «¢ärzý§»œ ‰çŒàÈæ&¥ÓëOw÷ÿû?~ùøoo¾½wz÷æÛ›¯ÿ|÷w¯ïþx÷ã)-!`>,¥õxúWýõî.œþ|cìK§’£_JB›‘¿€â–†“‡þ£¾ä4(à) #Q þ­d°;‡Ac RÂ’ê „%Á¥ÅÑ’Œ¡/ [I=-ƒ#Ô%{ À@µ8(°J §Té¢D\Äy)e\ú%b“\–8@ )©.­BÝ€utì+@#%à˜‚ƒ!ëLñm}é—W2À¶û‰½²9 I H‹cma÷€aŠ­Àä ¨‘â–À£iàÀùtœÒÒQp“˜Rhbñ¸ˆÒhÖb†aã€ó *O@C9É-lVO‡ñ¤¿èÔÂpÒ¸G™}´í-£+XyÀ_é2©7œAÉ(­˜W¶)‘æ%€Ý¬/¬dŒÏµñXeX¼§Ë´%âZ$JB÷ 9/C1ø‘² ·ÈQ‘âÄ2XƒbÁ¾š„Rpó@×]S`úbJ§}ÊÃz]Q`²[˜[yœì*”„·¤$êà0øe`XAÞœÅpÉâ †6[ñ¹Ë¸$L€à1‚Ä¡w±ü ;‚%Ç.?FÓƒ›$nD!´xœÅÁ’ÚÒ±‘ë2ÓØjæCŽ)îþͶ4 ÁFÉÛž‰Qì»côu¨kÜCçM’žÌ'7ŠLŒ0Šó’1Å-ì&›!é‰Ú†vHq$X¢û!ä6J„¥M(W GµŽ<¸j$°cT£œGüš6UÈy{/Èy*›À1 (^bÂX?öȱ—ƒ¤=Ÿ¸êpp*†±"‡r0/ŸÃXFL…[Áz¯´Ú° ÎC!°!nVS9ê Òý( +¤BAbüˆ ­Ã!¤B™“$$?¥BFœ sLšR!£H*d”¤Q(š <”cª‹§'ïOH)´ö(E#ô/¸"SŽÖ…2ÚŒ)Å¡@é%Ø…HJ²cáAžy ;ǹ@ˆ ¦A‰4bÖ…ñ€É#útMZ%ZQ@q¢8pC#;˜+6ÂÕÊ2äÂl£‡Øv‹»¹GäÆ=1¥ ¼F „A)èï¡ð²'†<´]`ù ÷”„Q(qìDA+Cä\€(ûŽ~ÌŸQ öÔº¢ uF‰cŸ4ɰü\œ)V]¨³>ˆÖ÷(:ã¢õ°Õ•Ùé¤4b •C /aUu,|N#œ]§ $n•1®(°ØÂš'pêo0½æ•dÏÛ¿éƒ;×Zgç¦CÓ)t¬†¶g–i©;Xí ¸î G/j©€8ŒFf}-ZÙµ«BÁ¥ä2'Y!"^ê§+$P—ÙáZfâ‘‚@ä2Òï€0áÓxîCŠ»¢êŸy/r¸B!+1¢G¡  BÀVr™„¸uì+ 6¿¦„ÝR9„Æ/!h`’¡W „qüS‡5ÒÕpüÔgYd(ÌlB¡ÎÓ:ÂyøpÀÀ‡ zÂMW¦œŽ q…ª+ LOÝu1”Ö0¼6j˜’¤^Á6`ÐD ö.ÐËr(ž½q J ïsŠ—Hæ‘`Œac¸2a? ±^˜_ÃP Ö0Δ0$„8Þá_àÚsM)â¾à®ËNi;`{æàë1„¥ŠÉ`Ÿ‚/PÜ8‚<ÿ£ÏKA(e.³r‚TñÀTÖ/aSZa¦¨­@ÓT\kÒ;š]Ð>ë+‰#4‚L0u5hVUoc5 ¯NǪb‚— 7ŽÇ™²S Px' Àn°eô„›$òTݬMD9…Ñ[š:è7ØæÙ…ƒùÒÄ YI¸Uzv JMà€¹(†»¸j*ˆøiÛŠEÍŽ‰M‚†Æ?Úväð²Àeq½@=’‰m 2Y¬tlL;²ðZ€ŒNg„-8ïücAŠ2à [)ã´VYw»ÊEÌ©('u™r^¬˜&±,c«yOÁ-!:–JRF`Šv ÑÞvztJèÇyŽ©D x £”®'p@‰ûB)m:4&ÁôÉà(ÅKz"”,#:¤¤&è‘fGR^²ìHêK”q¹`Ô—2ºƒ€¸eä91ké‚êK™Æ–+X_ÊTuárÕ—2bq.0i*$õ%H…œ ÓJ°VW!{3¢ JR})cab€@\÷¡$'jµ­F,`UNʤ¸¢Ä(ê ‹;+1Á‰‰Ò•—ãט2‚ ¤P<—RF‰ 2š,ÕºQb‚Œ¦ =JLk\Í%¦Œ÷6Œ£>—˜€âF¾'%&ðÐ(0ï(1A’“µ D%&Hiš–¡°ÄD9CÕ£Äd9Ž"•„j {R†Í±€ÁfFÆÓ?CÞ$ׄ† #™L :SÆãÓ ¦UÎ;Ùbò"ÂÌ(yð M­´e®*Á‰ÙB‰ij„Åt^òš¢%i3žT2%+eª*áöÑ{ÓRé?¶l)4A¤ˆŠUS¥‰’•¨‡iäóRr£y…Ô¤«Ê˜â¤ÌH# ™I[¿”š Q¥&HD´>5fŠA¸©Ô”ðø/wÉ@o ‹ré(V Š#…€ÝËiñ hpL‘R•š ñÈRÞ‰ÃÁ\Û¼£ky’€q b9€qHD¢@û#´AæQ–°" bÓ×§F )ˆD!`ÐÄã¾øõP¦¶Ìà/š(óhYlªidRž¢Bä]æG«f­†òˆâ] bfùJÔè6* gYö´† ψR9å È3¼åZ¤™Q+®5ÁŽ"±l”š «hê’Tj‚¬¢Kilø:P¼†5 kR…¡à“ð˜ÎrF­)á-VZB–(A~”š «ˆZº‰#]ñEà¨AÑ¥J8JD@‰ëÂe~Eh]ëJBñŒÌˆ˜ Û­”–FWÖYL¢Ž_ƪo˜LÈYkê£Ø)DɉŽMÆ\gª@C ¡ª¹ …¨Z+:;ÁYe61‰h+H]nÅ&Ê!ÔµP®¦ê˜Bô¹žk)„®)M!d5H¡ëeÎ ¸Ö4e\kš2.6¾"Å&ÃWqT|EŠM†¯P±ÉÀ)6¸"Å&WÔŒ‚kM®H±IÁE\‘Z“+ *¸"е¡+RQtEqAEW¤Úaè â­HõࣴbV&JÔbL™p•q© Šª¡ Š›TQÝT1Š€*Rß1PE‡@A£¨Â…#ÃT” é†QQ‚*&Õk=Et@ÅôuV²f[þ!§€ŠT› P‘j“*ŠÜ* ¢È­*ŠÜ* "å&ÃT§ULEQYÅTƒULEðU…THEj>©PµÉð©žbÁS& ã)F©ÉRµÉðéÚðÑÎðŒ O‘r“á)24ЧHµÉðsÃSc7<…üÞÀY³†¦H¹ÉÐ)7š"õ&ƒS¤ÞdpŠÄƒS¤Þdp ×› M‘z“¢)RnR4EªM§HÍÅà©Ë(ž"Å&ÃS$Øž"Å&ÃS¤l4Ý%Ê¥%ÃS&ŠŸ RÔJð)6žÂÅ&ƒSLS¤ÚdpŠZ¥xŠZ.xŠ› O‘b“á)Rl2¾ýüöËO9¹ÓŸï “ @:ÞJÖ·ª|u ]¢C&„½OÍè~¦M\Ünæ’çäV÷úAË\)Ú›¨óf³¨‰‹ÛmªåÑcÚÚBhµ¶ïZÍu²Pš­D—´›¸T­¹ÃØÖª…*ê¼ÙJ”qI»‰ ¢b2»BDÄ  :k4Ë1ntɳë.ÒL§å¬ÑÜ—ñŒF3Ï#×D‚ÿ!‹Ö5ññç‡yMüqÿáå;À©*†Np姉‚7U/——) ÎÑù)†ÂÇÄs™ï~ºûç?œ>o>ˆÜ•ß#ž¾b¡þ™‚¸ö¸Ë@z¸¤ðäáøX:Ó>}ذøÒ‚3· ºò\õÓ?´æĵ±„¥#£ÈDEºÙ=nR¤¯*%í¦Þ¹ä½Ù x«/ìÃ6{JÁç(/=\R1{[v_Zpiå¥MÛøtòo˜C8n.³¯(Aç+G:ºnQ´o|Ô&”Y¿µÜ½ ŒæB’d¨”ääÞ[éà’ò˜ ¼4úRÿK/,º2}O$ýxòÞ½ÊÔ•Q4RÒ-m“¢á“ošâÙäÝ(ÑÅ KYnÚÃ%åó·e÷¥—V^Ú´=ƒO'ÿ†9Ì0§©/¥èŒ!êë&E{ÏãÉ„IÃ3ÉûsØéé¹zºs\(ºâ´‡KÊcæpËîs ¶¬¼°éÊ>™üã9¤crŸýÅ(2cÉû“¶(Ò—yMÃsÉ»q”ž‹‰sŠ&-ÚÃ%ås¸e÷¥—V^Ú´=‡O'ÿ†9Ä×xøU_JÑCxÙÕMŠöŽÏû•9RœKÞ›ÃDhÍs¨œÚÃ%å1s¸a÷…V^ÚteŸLþ sX‚y®ö¥±Ûz‡4Šö^¢›Õ;»;â 6BѰ9ÄŸ]>fê6Ì=SüÒ²KS®ÌÛÓõ›—XèÆÙq¶üüΖß޼ų¥/K÷ÝŸ^ÿƒž:ñ/?@† óõ;Æh¾~ãóèýûwÞóñô‡;:CçHðÀ'Tø;mÃÝ:\x Y ¿½}óõý¯o>â?Žm’6¡îîùòóÃÃçMÙø'ƒèò×/ÌI‡g}3¯ž£)ˆžtÀ—ýs½2&~#Õ¨ë\7Ìî,_…Kム‘&7 .lέÒÍ¡“DÝÀe#u`à1—‰’p¿?ê;\6V+¦5ˆ9Õ—ÍàVÇ\6ìûZÝÀõèP\Fø& ¤+¼»+`_%ddVw¸¦YÅ»•ꑃìpÁø5¼ê`&Ž™TоuÇLö¿•Ž¹Ì¸Ýa:fzu±Ô ÉØ¾¤¸&Q»æÝÀ…/ôK¯û¾×£}?v8ÉŒc¹ú~ºt}±fß9nà²( ß1×+½¡eønàzôð%¼Ì·ÃÐZ§šçA;æ²Ð±S®™BÇnQGBýNÝnÚv«{ê´:æ² a_«¸@”ïžÙ×ê®Wú¾Ò­Ž¹4¨(uÈôJýå@§c.‹ÙJsÁw%aiq_«¸ðuŽ^ºq`à1Šj 3Û¹ì-¹ZsÙ^²¯Õ \¶— û1—…è­Ž¹,DïkuÞZèvøQÇ\¯ôͺûÞÀõø#à{j iAŒ¦úkûnÂPtdó1Øœ<ï6s½ÒWhuÌõJŸñ=ðÚc.{ó¨c.| ŸlG à˜ o÷pt+ã¨c®éÐpý¦ùаwëˆò®ßÏ2÷îzÑCÞ¾VÇ\ÓQpW«¸lçß×ê.Ûù´:æ²ã̾R‡L¶óètÌ5Öö•:æ²_«¸lç?0ð˜Ëvþ¹lç?Ðê˜k:Eîju×tŠÜöc®ép¶¯Õ1×t8ÛÕê.ÛùDsÙοoà \¿}çǶõ£ÿÀæc.Ûùl>æ²ÿ@«c.Ûù¼ö˜ËvþQÇ\¶ó,€c.ÛùDsÙΟðùaâïpÊ·+é˜Éؾ¤¸Ž«®Øœ*ðŸ&ŠÔXA~Á§+¶(zbúZžoâ<“¼{§´¶›8UÞ#nÐܰéR»K .õ½ræ“É¿á#„KÝ\É5ŠÞO„îö¼IÑ{cèaÞùö™3Á»7qc»GL¤=âÖ¡ ƒ.T»ÔþRÙ+w=•øî¾l…¾~1Ý+¨½Û²U|EÑAïlãáÎéþÂ3¹»· Ik»mHå=âÖÊ-‹.´»4àBÝ+÷V>•ø[Âä‰鑾³ñÉ(t'} Ù:m¥—nõÑŽiŹqOÿ¹äݰ&çÅŠÏ{gÒ‚å1eêo^ëù;Ý¥•—ú^ÚtiÁµ@÷Tòo t>Ha})Eç'tG…nP´/=˜©†ç’÷#Ý8 ê„©80«$|ÿ„my¡î†I—\‹~O%ÿ†ð×ñÈ6õ¥8õQˆ¼ h_zxR Ï%ï@>Å錩<1+ò}ÿŒmYy©ï¥M—\‰‰O&ú˜•~¨’¯¡ë ª# 8³bLÛ35mž6ûø¨R÷D±ØD/ȵoÒ¥¦Zkk½&ñfVIøÝ‰¬feOïNPñ|=™%ª X°š°çcM?V6¹¡RØ‹œ£O‰—Ù'`Å CÏãÅïÊ1ž5 v-Nb”áF"AÜL¿;kŽÈZ¨#ª–ìˆgvŒ){¶ÆÍSg©v);<Î>æË©ŠÉ߇ÞÒÜ®Ù_Œ0JÛ³Ãiæ’¢¸¤jÈ.¹6a5iÏÉ,œ®@oM›ò+!prpcÄÍÉ“|ŒY³«P}øIJ£nJ{¾Ô¼G #1Òæœ8éÇž%³R”–ö+ýi®žM´®*ôáÒœ EòØZòøç¹ò5kË„ñ”„>#øJº”M‚\[&¬ÎcE‚ä¹úÅlÍ„E å½EÂÚŽ±ºž­q´ÆðÝ«Ñ>ãýi¢àWâ)„ÆÇ¸#} Ï>ü=®Áeð½a¥<^%èõèãáÎ(>=ªøÝHÚ_C ÑB9DK–pfÇXlÏÖ¸yêìKêF)øj#›C¢·èØçØÇµ§¬ºÐËуÙ‰½ÄWЗ¦.øÚl3ÖQ$œY±š¸çfM?ÖnŸ 7Š£•ëñ ²øŠUĪÚIn«‘ë‡;ß%c¼hÄÈõèâáÎ(™ÞV%²Ã··TíC®±)!Óq8·bLÛ35m<€ˆO›{ ±“}Jê…ÔÇMX}¹MÄ )Ñ7ÐŒ_C& r-½…õc ª?÷aŠÊ¡Z²„3;Æä=[ãhÕ15e|MîdôG芗ð³õfÛ¸œL“¿½­9_ùfXʉÞe«í3J§±—f–ü]õåækýW3öllÚÄŽÍâÈ™x›@hæ²)‡`p"A¯ÅWŒ2¼Ia:ö6…éÔ¦SÑR$¬íXCÏθ;VÇT{–7OmÇTÓøï¬·6—kq# ÏÒöÃñT¾8¦ö/}¥ùJÿÕŒ=›dSS¨Ds-£Pª¤ˆdR‚øX®%ˆr0žÃ¹–^j®%É”D€dRÒ…æZªSTG–pnÅÍzf¦ÍX–mŒ2N&"WO.Üót¶aÝŒcè®g½Ö³Rød"ää"}èÙFµ`Ši9$œÛ±š¸çgܪFcn©”á–RÇ`§Ó:†º¥Ô1”«Ü^/Åc”">ÅíÅå¤sJQA8DCpfúBó¬ ›§lrH¥°C²\q7éÙ’U3†¡¹ Ðkñ£°7±q6éÁÜQtÕ‘œY±š´çfÚ*™”·™‘F:&|?-ÕaƒÜnF&ü|ÐdvÂê»Y‚\‹ FJª6BûP3U å-EÂÚŽ‡q'ûs5î'º›P-¨…‚‚ˆ•˜![PÕŒc¨®äR–¼R8(¨Ú…†UB9XG•°¶b5qÏÍ4š6Ì;g(H ãt2^BnPÍ LjGصœ=Œ2N'"AN/Ò‡oD ã`%YÀÚˆ1iÏÒ09 È‹â&ó”ÂÚ9?>Ê,ÇN~Ph:˜v¬rÔ‰c¼@P¦z­S¥ð±’%豓û˜ìc-Ô>Õ’ <³cLݳ5ŽVSõ„ª>bªq|Ûô„*¦É߇ÞzB•k=¡*˜ÒžO "_N¨Úÿ ˜¾£ù™þ«{66Ýô.»+¯qÁ/^9¼»°-ÝE{¨l¼§.Ñ+ãò‹îð cµåSů-Á>‹oˆ£×¢½ä7Ú½œÞlÆÛè&J$V¢?ðO~’’N/=~«Ö‡GÊY? ÷¯sÂá­2Ô8 ‰Û¾Õ°?ÜSþ¬‹pñz½ï´¢ãÁ=Àï!µM3"ôÁ—ÓØfÀG?¡—Œ_Lšºþͳ{ƒE×Y¡o`Ò{ ÿø€FÃ>†{Á!}r³ú› âÞ ^\op(O5ô³Ðh&ä• a,¢Rès!¿„é‚­¡Rph_ÿáGó28| ª‡ŸžîähüÙ~ad›Ö&¾ƒ’_6ùŽGQ^*ùR¿»ûLYÉ:è$ö¥´p¦J;úÔPÊ¿x‰ßr1¡~$¨˜›¡Õ¹S-©1tñÃ}"õËYWlÊJûéPþ2 ù,æ» Snì)_ëi„Xü6N‡àè6h7Í• K°a™¨Ù¨É~Âh¶iÒ&ï4Æ…ì’píF¿“¬`ü‚ŒŸúñ3ë¶Š¦Ì`˜=ÏËߣu ’·ð8Ï.“·¾¤‡Ôzg^¥Âì¿O1zoY ÿlO7zu–:MŒN³Ñ+6zuô‚Ž^ÓÑË6zélôØ»eôä“Fü#Ú·þHk1ÍÇÞJZU Ž€xóD0¾©ô÷ òžýý¿½x‰*Î5Ôû/ðó†ô½ÿ$çš[ ÷_Û• Š¿ð3Õ ìRÞ¿yñ2Eüzs¾55{cŸ^àG5[.Üÿ2±|œ:'Ñøåëtÿnb™õûŠ¿kMï¿áoȶfgö·“¶'¦èWMßÓïâª+Ø-jÐÊ<“ìÉ _&q?1éÅÏŸ'ŽwÌ‘ÖÃÍzÀUBÓ°oŸóÊú¡^†u‘ÅúÒB»˜Ô¾bý<γÅ3ÏÏ+}Ùø·/B]RŠíþÿ®7›æì_¿‰ëuõÑ\zßœ}ÈÒR¾û :ÁYH 6°tïS‚®_â§/3, POÉÇO¤h®Î×ÞMG¤÷1ò>t1Õéç›øe÷P²XE3óuÌ /{H‹1®Ç kt2©ÄóA{¤µŒ€ œ\ ñÆoI¥*j½L§”VS¶wí˜ãÕIÁ·Õ¢üy{­‚æ b)EÚÉ+†O8p.üD««EpÅ›>O"> QÐ2•‡GŽBºiöFD –“À¹å·aV ù|ÅjËi;gãjÍN–íùzûÊõøÁßïÿ‘¼³¥¾5¦Þ%ÓÜ® ê×á<è/ -¸ÇXêæ)²¡C!pç«n(?]†Dbþ<&•pÿë𤒷ºFS7Œ¼š:CƒUÓ¯c[º²º&^Z¢òXÙÍY­ºéf©j ^âd¨÷ÿ ½ãËÙÊuG¼¶OÌžsfÐ<«Ð;èëï_¿h]kµ¨~áîó÷ïÔ®ûó­+ᣚäqô ›$Ï[á¤Æ¼‡½Yqã{Kl¿Nn;÷8þ—Ñeëy–ý§¡j kט]íý`ÉÀ}°)Ó¶ô»lÊ´jZ\î²¾wFô÷_=“Ï2à´&ÿæ\ãÚu>Nkî,%üp9Çrv=•Õê†%|FTÁýc¬6k½b~‹W 7Œb@KñÈ_]ûŸÛytqIç±ü^k7ã À úß"9à‡rW4[4ÿ^í@/cC!ùQî$6Ç–`±_ÛhÞ†ØÚÙTÂÔÃ6QVæ®g•ó#n[ߺ“|ë¥àÛê*7ãvoVnD¾îý–¯_ôòn(þ~£¯£éÙÇÕRÓ[Ú°V ÙŽß?ö3uN½Þ/#¶––Q*—Ëè§m÷=;OÀ&Šç´ßÃc1îô´¤æ¹:‹´²ó­ý?¸ë{Þ0‡ÜñÒ‰Älï¿­_ËH®­þ»Ptr;N ~5b)äÝóX|Âùð§·ŽxW¼ù ÍÚÿß´dDúR‚_N¯Mòƒn7ø¹S^>lP·des£Hi·Ô³ƒŽ«ßyp¡!ryµè&?ÓM•_o*·çáç»Êƒy未aŒwx_ÇÖDã:ý'¸èW'8üàxÑ=ýWÌ­ñÅÿtðg/ä6Jýf??ÃÏF}8ç%TÎÃ&3ðV©›'Jˆ·ˆR¯N”99<-”v}u CÃÉ: ­Ã¢J«e<»ém¯Ç­¡Eô:û°Zó¡3 ×ÅÐÒÏûùÙ~¾5 _ö‡6âÔ¡ý_0ï[h÷Þ† VÁ×#wv¬ݲ¿¸¹oògSøQk±íçÏÆð`Ôoöóý|«?oð¦_ø`Ø$¡¿Æ0NãŽ?Ç˜á ¥§:ÎXø¾IXèg0Ãvг5F>.ôv™ÿ‰E7¨Ç‹Ò§É3pq¸gÏXöIÈK…á´h­j¼³Ÿlf'†CoT )Kq¶ún,¢_ðìþø°“"¾m#×)au|y7XcÿçO¼­žãop’=î§ðqi=nNsª;óŒ +%ÄÜñëìÓyðƒt¿]Ý81—âê¿ÿ—û+àÇOÛ‘âÛè½^"–ênt|Íc|£SVöõ|}æ_$ºµãQ÷2x±m ^ÜÁÖQ@ñábð`NJ¹1–Lë€N€ 8×zñ¿¼˜ÔŸFãZqh„9”̈ç|6¼^d"3zðWŠ+ÍÏ‚lÃzZçŠ#ŒÄúý.;jÙ¿ßg; ¡Ü DŽB!¥¹Ç¯CU"p<ôXýWQ«CD©—":– ¯ Â#‚p‡}´ü. ‹ô³éáݸÚùhöç¿{Ê i¼ß8;Çù oMºÈIÎóø=£žú·eÔF ·ðÞëjáN‡¼ G8B¿ÎpÓ‚™ý`N× ‚`2ì)½Æ™¼îoÄB}vÂò Èn¾:¹3EgÕ~N·¦ü7æ¢Lendstream endobj 216 0 obj 11053 endobj 221 0 obj <> stream xœÝ}Ï“9næ½þŠºuibõœüMîmönĆ/3¥:|P—zÔžÔcµÜï_¿ø@d¾|/óu©N:¨ ‚2™ÿq¿œÜý‚òÿÓç»øK¹ÿøÛÝÜ9çò½¥žü}ȱÜÇ%·S«÷_¾ÿ×û/wË)ݼó®äS ÷i©õ”â}§ÔJéÿ4¾ûëŸî‚kîTëA«è—rZüA+’«|»Ï!•‰r(§|ÖÈŸœ‹Ôáݱz÷ù?7Ü÷xçcñ§ê6­Ý¾óžîZÂ}ŒÎJ½ÿ4ÚäœN©€¢mýÒL±»\£Ö>îÞEý·ºœB3Úç»àC<¹:ß§mŒ·µ©?]¸+ÄJ¿åÝ»7÷}÷MR†Öè×0Rô‘~õ3wmcXã´½+¦%åvïz¼s…ÚG8g¥ÿÑ¿RÔsx,‹Ï§¹‘æ6¡Dê9M”2·RÏQÚE;nôhƒ™©™ÛdÞTIͶòFÚ$¥–1\ŸL·óÊäÒ=Æ6D a¦(xºIÇç¼ÉèéÂM›žhPïñïëGDš>Gå¿§Ï÷ÿøŽÂPK÷•æGNùþÝ_ïz|¢[\>Õ@Ýat[¸÷ùîáŸþóïŸþýéý·Ÿ?Üxÿíý›w»ûçww¾ûñ>ž¼Gqþ”+µþ7ûëÿÿÛ™"…¶ViNÃGB¦p† HÑx*“§Œ P8ú1…ø&P2·SüÉWP(Ì1!5øcĬÏ@ö¡éßR%ù;%ÀOˆâNÞuÊrŠ1ÈM‘”¤ÙÐBê3”(é´ #_!Sz4jžº–6Ë©B<—NÎ3%´“ƒ4K=5¡Ô{*½óÉž±’Í’–Ê¢Z’mÈ©¥I<ÑX’½+|B(P³– Ž Ù+Vé˜×R|MI¤Ýš«D=ãLþ—üŠBÿÞY_0"2 .Q–Ó²V‚<¡äe¡ñJJ!¯‰¥•l0 †_à8E)Ä)%Á 3%W°[Qh­Ûê>¬8Ç1¨"™Ú—Yä‚¶yV½øvª«!,ž¼Iø ],®`Éf Mp¦ð™„âØ Æ"ª/ðû˜™"+Å!´7É ¾˜kRG!ï„¿eò  ²ü-ÓÚ¹ta(`ÉJÓ/C¦ù!ãà#ki~¸>©Hè˜cf¦G|hóTð¤w›C–§ˆ.aAæ'naY®5,ÏéQ¼ú Í̂ܟ–·²š«®›ò1.: é²"KdsdU ¡ðEÜEƒ¯3¼Ç:Gã&ƒAê€ y:œ_…CNw¼R°,8·X y±[…Ì¥I8YìoN£«I~ãÁ4+bg/š1…' l¥ ›IÑ:%÷§,Xd˜Âó„²¢e™âáb›%À,§‘V¡Ž–(ÎùºxE:º~IŽŠ;–ÒsòÖ“›ÖÇ.`Ò $7µËF‹t®5ôðÉÎAŠxÑ ä¦âÅ÷ñ|RRµ/ZÐE%Æ®|½ˆ¼À(—)ðJ¦xŽ•¼;Ñ’G¯’úN(‘'|ÅTÁÊld7¼ø0gI4Jï K#’‡&9$[¡r¾ãd#€‰ˆùRjTã:¤6Yµ$ósr¡©MÀÒ‚@‚ÔFƆ´c®ÉFFE²ƒ5Fî*0%2¼'g ­†S8†àTG s,¿‹=„B»äÎÖšzÎ"PüôÈ&HEñ‰Ä¡žÒ–З¦dd%¯.ÉÚãì…3Y»¤…:luuY[¼ÁwÊ*Jå¤%ötn‡Mœ)P°vÕzŠ¢,60ù¥(¾Gê€E×qBBóL‡jA’P³:~ÍTJÏÕ–¡…³*HŽ›°NÕÙJ‰nÎÒ&óê˜(¢µÙ´´Åë qÀ²’·¡‡H4E’W TH´b-â"žCeZµŠ8MwÿDAà£ù£3žÖ¬—ä¡'¯¤¹‚úkc‚“MªQRì‹Ï `œ™o㊙}3QhþV%p C0DÕS;.ádó"aQ†•êÎLû¢YVƒÊƒ!t-Ù]¬„«E,LŠDp´8F?Ž£µ°YtÁO#"jJÌrÈâü<]ä˜ìéB¿ ´Ap>ø 'E­‰ÝR˜óH$2|2Ç4q° ¥‰ƒÎËl¶Ìyƒ£µ† Í@À"6òçâhJ€è r(šB”¾«S4…KÇ8M ! ºŒ<é J!Šë0Ž@)Áú(sá°Z„ J œHÕ J! o·”B”¥g# ¥ŒC¶ ¥¥"< ,…(…·†¥Ø4°& 5,” H z¤§¤LRE”AQ EØ*Š"— ¡ 1Ba ¶§¡ ÙB…PXcN B±1PeBaJ™#X–aÁOŒ ðÉàÇ8Š( Ÿ˜¸Ÿ˜Ú#íÐ3ø$ÀÓi§=ঠ÷7ø„(]Èà¢øl(|BÆš|B”¥ƒ Š „…v€j A €•áf† …‡VºÌ§2(L`˜F¢$ÖÒP&ô„.yõèÉ (z2(ŠžLAO˜Rü„žX׆ž˜xŠž0QEOXgT =±q1ô„ÇŽaEOlÄ =a;7¡'Ýë :±kØ Ïs&ì„cÌfØ Ç lô <á˜RüO,ìx‘ Œ ‚›r¡'cýèº_òR ¬ëš¼dƒÀ{‡(˺ô“Z€ãºM4¼Sù`óª/ÊKE§^è¡U¦(&Ú =Dq²{–BO^œhz¡'/‹ ×yˆöëežÔÚ¨yq™‡(†òõ2m¸ƒ€rµÔJ²ª×xR£Õ+˜i‹޽̓ZRJ„,SF¦£ú©E?;vš×Ò`/$ÆÕ:ŠÑÆ?ê8qU"µEvQRâIµU+m`Ò&dœÅ@êJ vs%!ãÔ¢ïGi WLD`k¢,ª³RðÀÂ\ÓI•Ä^êš²Àßæ»‚Õ¶ÏMÈ/µìÃež„ü2¯äs‹ÕŠØä©’]—¦jÒ:” ¤ðHl©Eà A…) µ-®òÅ 6}<‘Q*”ÌUž„ŒRF«WyR‰ÑªÝL%Œ‚ WyR!÷õs]"¸ú\» ŠM[qˆ‚0h(‘[8YMÏðò~ö«LyH0 yrB )Ó½ƒÒDq à3*r Z—ê!-å¨hQhy°Û(‹z…°ñÞrÞx§ì¬f#Â,I .)ôðCŽâ¢VO ?FÕ›–ñDÖÓ²‰Œ ŽÖpeDS¶¨Ö+=)%7UäøôgýÆ J!Xi’+)Àiê4’Ä% ^,•ž”–Q³auRì`Â'«ô$ÀSÞ&\öEZ£ëÅŒÄBKi…+= ø”–q¸Ò“"î–¢Š$D°™×+=)b'u^«S œKõ%!k,Q)P‚²y½Š“hñש§Êüj]SÌu„O°Z©tÈ|Zúá\+JE´¢Å:„bE›^éIhZVƒƒ¡Ê¿ Võ6ë¹m}š§4–@y¼B̉%%¯|€á)uð]œÍ_.ô$ߢ•~ºG"±”*²L3OoS“ÊWgžÍ³Á—¦^"˜ç(õL¹ƒÔz¦ÜAj=œ;³ë¹C7•`~”;dé^Š=”;4mC¡"#@]ţͧºY¤Ú“Ña›q×)™rOF¨ .÷dü"Ølâ22¹h0pbJ[ —B ”ÔÁã \¢Î¥J:¢‰›££ Ò*¢„ß!ã(Ö€ D‘UÓQª`FÍà=¥x 8©OVÕÀ¥kS%‡…ÀZ!$qª§úOå\£ŒJ(DDÃ"9“¨nªäD,ù%®Ë?.‹að(Ýp¶¡¨b'¤Qòꄘm¨;!4+f ×L%‘…ˆŸÅõ‹k=å2n  W3 /¬ ª§E΀)ƒúÓò4A‚w®DÑÈ(Ø)­ ÙðUΛ`0qŽŽ”%hõ¬ã¢””dCåÇîƒažÈ&ð,Þ\P¡œ$im¯]()±ZF¢š«;”’hvlš@%¬)úŽR¤DãS8KÈnïŽ4K‡âÞ ´¥,¥M5.‡\"kÁ[‡¦¤¢0m¯÷E·:è«íŒr§Ò7&â÷ ȘºOÙdl.÷Püïåž`l±xwLr+†þs¹‡Ò •wˆâ¦Øι薤×{^q‘âDêÉPÒOÊ=”Å4ÑZÊ= 8˜&=2ò|)iôÒ¥1IV©ø$ aZÍáp›€„i5'ö¤ŠrÐQÍA®3^ßúe6u]"Š;¿«D«qÅ'¡2—”€„¤?î:I“’Sqr~&yÒ(uOÕ:õ§.?Y±‡XTÉߥؓ°5îÏJ±‡qF©õPÞuyèµÊrlêÅÊrª„~5n.?W{(ï jº^í¡4'YýÕÊrt%—U&¡2'%,.÷ÚI#,tÊqªÎƒž e”izX‹À6íLËXÃÏóø™sÈ -[u¼Ïž€²|™CVˆ®ScH-eäæ«†¼ÏB¶¨ÈmÂ\ÁNÈSªr*n ÙŠ0=Ì!rJÀLE"´X¦I"´Š„È„d!éÅ)2 ÉWÑrdBƒ2ÊØB±ThP,úc¸ ^ú+XX·ùñayóÖµ}pú‡óoïþo‡p:Ïפ<%Ž—ð!¬vÈ’ì##D¿ÿüõÛÇO?}ùé+"Z‡é&ÿî_îþþõ×§ß¿~ûöþ§7?ÜCó´IÁ¸åÓ¯O¸å‡.П÷_ ½sõ‡v¦qx9O)KßË~"JdÜâEî…6l!Q›\zâ|ÎùÓÝ/wÿú§û/_ölžŸ1°7þ<(®ÊÎzØR–$sþñHßþ*ìýÇ‹zo5Øj¹ÕéÊë«/ÆÿP§;bNS_F1‹ùäù©‡ ëËcïéÜ$á9ç]ª~ÆJñYÂ3,xIë­ü[·]¶àËñ?¶ +(ç}Åì]G/P¬/­; Ï9ïY0 •§teXÐ(NŠaÂþìòÖ»¤ñVö­~[m.[ïåøß`=”ªÊì)F¶ ´pår‰2zÇŠígÿ:ç¼g=Ê ê6ÃzF±ˆi=l)ϱá½·lµÜêtņ/Æÿ–Ø}Á„ÍÝ_„Â{«É9¶¹gÌÏ{­4ùØh³3ÿ|ÓÌò”ù"ý<(¨îKaVzØR*6<åέÖ[ ¶Znuº6 _Šÿ-³paÐ|êK)f0_•ÚFßžÒiJ³&ùÎøÞA' *H¹‘ =l)ϱàVë­[-/ètm¾ÿ,ˆ‡wiS:õ¥3ö÷.\ Œ¾ñ´Lj³|g|o‰¢Ã‚FÉ)wŒÍzØRžcÁ Zo5Øj¹ÕéŠ_Œÿ±ƒ§xµ¸)bÅÖ½€-\ —(±i?™ùЋóçœ÷lèQœQ%تgü·”g¬ƒ—´ÞÊ¿Õq«Ñe ¾ÿ,X†Ë†·E§\ÈÀôÚ‚ù Q[Ë”.e€Ÿ4l¨µ]  (Ïg~M`‚ûÎ8ßbÃ) UJGÏŒýÙås Ð oeßê·ÕæŠõ^ŒÿãwWH€î8ò «üöM*$.SºÔz!äç¶BÈ\:ÁtK/_ÜC2¾û`÷à'â¶åhÛG?ü&…ùO LAJ._>È/`ŠÇÓ)¸ç§÷¿ýüûûO¸ÁX©½¬óC/å<}YË>ôŸFý‡«9v Ÿ+²È®VŒÿ•³7[=Z#9"pÕ†þ_sºÞèË^y4ºòSšxq#WÏvõùºÆ)9~z_ãVv¸ç«ãVĪâ‘ÿ³þB=guÜj²C®üÊÑ‚×[ VúèоMwZMRÉYR]o5ÕÜèúX]oõ®ÆO|ãù„F!®æÜWSËïë|Üêù‚òûÇm-iÙJêœí†ô†VÏ–¯æº–´µëÓ7dœšy4}wZ — xÄÕ¹äN«Ç;_ñ¸ÏPÇ£]‘Ž=Þ…ÚßyÞçtC«‰Õ®v7´š†¼â ‰³¨³ (;­ÆHír:n4©·Ëé†V$Þ1BQ¢~M÷ŠPÇ­&V’„_ñ„ãV6RB6ŒöE:l„Ljñ{=é†V«]¡nhõhgNïKuC«‰Õ®T7´š¦ŒäÿQêz«±p®]]8wZÙ·+Ôq£iöírº¡Î'Ç6ñ@½Z={ |@xã9àÌ‹XÜ®azHúÎÇ­`‡Æ/*îë|C«ÁÊÇœ-»Êj§Õ0êªÑU£î´z¾%p˜ p¼>qÝÝö5¾¡Õ8ÿ@ããVÏÖ8âQf„8ÓøRJªÑyWÌãFÏOóðª¥wûRj4ÛŸ7´1oÕèjÌÛi5¶{R·z´Lz_ªZõaÕº¡Õ$ÕÜ(Ô3V7´_Ô8Pð¸±J‰_ö8H;Ž[MRí+xÜj’j?«:n5ùÕ¾[}÷6ÑóQ/õú¼Ôi²;~7´úÞ÷JP!ÌÉGVÜï¸:àŠCVÇ­À ðÙa}Üj’jß“[MRí{òq«Ç1 ûR·zþúâý)/õØ“5î.„7´ú^¸ò`!Ô©´›¡ÜÐjŠ2û·¬¶$Ç­Æ—‡ög× ­í†VÇ­ðÁž…?q°©nE>¹àlƒÃuÜj|áë`¡=n5)¸¿Ð·zþB‹÷ypà:2û3å¸Õóý/krº±Ÿ±^[ $êÀiŽ[MÀ¾TÇ­&Tf?·úT†p¼Ï0uö%=nõýhÊ‘{« ÷Ýû¸Õw`Ž8ãlLëVR=Qsß'oh…³N3¿÷Àê¸Õãèowünhõ–¦lÂÕÃ%ßÔÙ—ô¸Õó%u8Q·údÄßš;2Ïq«çKðvx{2[»†¿Æˆã ŽZ=ÚDt>nV§uØèqŒð¾Ç·ú;ÄÓ è~¼µ!Þ¯|·z¾¤8Î$åãY¨ÜÓãVÏ—4¹ÓâÒq¼ÙÒÃFß!g#Ï<“s¤Ý‡Ïÿã¨< ‹Ó»"JïÛTœñ}0Þ‘÷§÷KÎøÞòãô±ñ{ÆÛ5—4ÚH·U`#î•Gû_Šý ¦âˆÅæÇ(•2CÅéI)]¢Œ+[›bzøòŒó-ogL¦¿g·­$›üHrç›—ìú†\¾­-×C»Ñ¢Ë®ìZúÚñ‘u\Ž.¦¾ÿÕïw÷ë¡R†Üù+Ó½>å`:3ô›>Büy\{>öË—Øú±­ N¦µO¤óIYú©HúsƒÇnÖKæýtg×…7㛃7_·v-?‹`zó,7굨Â3JÞ%Õ§C?OÇ'hùÒIâ·ºÉ íûðýš§ˆóÑPÒBÞŽ3vÝûxº|$Œ¢¹q móÜG¿F*…¶P)•ÃZ>£^­rlºøì)^(Eãž8Þ¢BÛ#^›§‘œ6zmSyPd² ÚÈ*ƒ¶0©…Á™Ýp¯TµÙlÓ mY¡…¯®¿ÚóX¡E´Ñ Kn ìZO£èò* tõÕÆú¬2h •Qœi±2ÛkSm(5êBÜ6‰{\·Y®q߀ü®QBo·k‰ÎƒÐ£÷¸Ÿcûà/±ô/¿«xzûJþu||-:±¡ Ñ%NJA¤*™ß=T¡KäoÄ ¥p^:èÚ—·õív»V¥Œ RÙý]hã¯JYÿò»Š§·¯äï†zm:qF(oê×êÆ{…­àezù[-GWFÊE彦„'Ée´7ƒƒ^KOwƒøðã ȱ>äšîP)¬…Ê-Îôè9â«Uneº†ÏB¥Y;T/QØP¾O°­ÐžåzÒN[¨ìÊA¯¥I»ùë­Æ¡á᩹ž´³*·p8ÓcmºW§›NÞCÆ—Hñvõç‰ù¬[×*>‚3í/÷úD^?ݹ9Šý€Á@¯{OwƒRùcaƧœÔ<úkÜÑ…±38×¢Ö_œþh/ÍOú¥‹ç#R–!¾>;ô1òqù£%;üñZå ×Úû ˆ|ÊAå×>LA“B[˜”ÂáLn¼W«Ï:¥ºÄ‡ÖOÚáe0<í©|qÂø¤\¿œtÓßEp»]¯{“j®ò·LÎ¥ÁcÃÚƒ\Oªi Q8œ)±¶ÛëÒlKž9|sPºgi¢ªž§™ìðMMu­…¤ÂÆÁ®Õo¥{–qϳ>Ì7M k¡R*‡µ«MÀëSnÞ¶ ÷” `‹ðíîg«{šdò» ®·ÛµºÎ tç2â|Öƒ¹§‰`-TDå°Vbm·×¥™.vŠ",Ì(’C)m9– ÕS&XöhѱnËÂôzdaF‘J9hŽ¥}XfReÈÝ9œë±‚ú_Ÿrs•fì}Œ";ã«;íyì}T6k!²ëÞG¯ÇÞÇ(²sQº³Ñ>lïcReÈÝ9œë±6Ý«Sn''ÇTŠ:¦ gêvН Çn4èøœ1Ðkó™A¯êtÚÃpK•A[˜ÔÂàL‹8ùÚT[™m8¥RÔ)•¯¸œõlN©¢Y‘\èµùË ˆG u8ía¸¤Ê -Ljap¦ÅÚl¯LµU‚©§*%"2F_$Ètô‚¡dôøšežZ,ü‰¢ÁA®M„AéBQÂú05M k¡r+‡µOýÀ„תÜ/|h„P-¬E¢‚ñ•¨a=[X1Ù¬…ÈnäÚ&ý ô°`$lXXL k¡r+‡µkÓ½:åØt ßÅ6>Fè»–˜|žá}@qì{bÄdžÒhó‚oº»Ö=É ô]‹q]õaû“ÂZˆÂ`­D7Û«TLwz$û¤žQDºÅñWËl;*ïLÖFãÊÔ¢ÔoV»¶ «Qd»©t;ª} ýT ÕϤÏôè¦{µÊñŒSªíY¥o:¯ìIµcÛ³ªdú»®{V»¶=«QdÇ© tGª=ØžÕDʱs8Wbm·×¥ÙMgv^{×,SÈå§OKéoKû~¶fZ(2”Èç\Þâ …¥¦{ù£ñOüÌ{Ä7Xc»‹¯dç˜ú/ÌHo*øzA’_øñóÞ¸éÚ›ýŸšþˆ‡êßæØÚ©< ŽÏ¸½¥+¿Ð ¾Å'lÃÒ™Þ*vb¯+ÿƒ#‡¯L¶§ÅM/b˜¤WÒo¼=÷ $|?{)«NÜy'^;y®&âø@5¹çeMu"›G8Ù0>÷Yzìýªóï¶Mh•rÁpl›·J˜]#¿˜NRGïaž óôñÝEsæ7 ðÍf¼zl:‹ûîO?›·RŠþtüa•o®¦ Óù¸¥÷Ä/R×î¾1)§ð&¾§òb"â‰ìD¹ôÌ"Tý¤bãn/µM]§_ðló/¬€~QþÌf2 :ioÞâk´Kˆü ÇàÓBŒ:ê ‘Ñ!ÒØÛˆòkýø_ðKzoîDï˜ÎfÙ´Sjσ[2ùÍ$Êf ù.ˆwZô÷n²LÁ鬙r¼`¯ ¿[]ó™Äñã–Þ3a~·euæÕ[ähövšÈ?Î*·Á-È3) /p”VÊÞj?“kâ4 i>µêjÒf Õïá Cºd™µÜ2ˆa)iÐÍÛûD»)²öaÑ?sâ{-T¸p§~=ÂtT‰Ãç’=%añýã¥ÿ›Ô«}É=üû›·x 2_>¾YN1ê÷á?ANßÄ~øŠÖKN­=ü QéÖäɂָ¾yñ5sjû¿ˆJ#V¼{ø0±ø÷—ìëÃûqãÈ´_(Këîë×éιÉ£wJmj~ø äRr%†ßúK£a›dB nÅen~AÍbW“2£~Òþµ+¿Ä5_&?w —âWN*~ƒðVOÉÅÃß' ?u;TWªqI³E&Í&v3‹_º|¾\“º›=º–ÿ€Ùm<`öðÐÓ#/ćÜÃáÿE(Ó⪌Y³Q ø–T.$~]b,>RCz'*A:x‘&§øNçØõržanþåÇA]=bäZHâOÝäs7 i’¨Q¢Õ[çO)f™Éï76ˆ¥¬Íá=šðJXœïšÝ™$ÁÙ¾V|*œþœ§Êl™yfþufÕ PóhÏLz ïêʺEö+âoæ.&U?Lî6ðÔdÝõà=yÙ‰âEó§œëÃ?¢…§¼d)s—æú„•þá/Á­Â\M4ߊºâï@¡ežŒöçWüIc@öÿ6¨ŸÆŸ¿Ž?ŸÆŸSÛ÷ƒÃOFíò¬Ãn¢M[õ*ÎÖ xì&ƒ_Ô Ÿåvn_§/C¢T§~ëŠ'~²?oÕ‰gÐYŒ`wvó,ýk§¶¸òåyîþ¿Í`ò|XÞZb¥ª?¿Œ? ê×}“S¶S[Õñ{{,ááÝŒ¿\Ÿãx>¯¦4;˧©Åü÷¯=Ö¸<Ç\f§â#ÆÛÚõF'žãêÒåórÊÁ¯Èï5NœE1û{–nþ³»ìݧÎV&P)x­þ7ÿ+5þ²d³†ÎCù$ÝPÎõGÎ9š›þâ‡B•ƒQë]¾XJ lÆwà,¬ç™OíTb:›g},Õ1–F þ:W¶yÂ’@ÈTÇÊÈK`p|ÙÉ K²β®#Z?þ`½ÚþÞœ”fcÏnҸ؃FHätîBÁmÏsj]8Š_^ìfטe:6¼#³vtÇU”x$í7i£ý9¥Þÿ!¾endstream endobj 222 0 obj 10310 endobj 226 0 obj <> stream xœÝ}K³¹qæ¬oÌÒ?àîtië– oÀ1³{<žq(Zqƒ žÊ‹2ùÆ£þx¿.æ~Å?ùÿå›»_ü:ÝóþîwƘxC(K¼wÑÛû”Ö%sÿîÕý¿Ý¿½³‹1>™û?Ýq÷¿þç;—r^J¹Oë—’ïß\@^$Ù%úq‰Fpå>–â–dÕsJ‹K÷/ïd-Kâ.éGØI—1gÒÆ”Gê ‡¸ÄØÔANnYM!ç¸Ø4úkÏu@tÐ§× "XK*²=¿¼ûÝÝwöþ?îüš©;ÐÿÄÕ7)`, qÉ‘z'ˆg‚±¥BÊbB…¬ Á›Õ1Q!‡Å‡ É‹ˆá~ŒqKp3$/™ÇòKÎ ±~±ajc‰½v‚8O³=åòÝ„w‹™p&ñXÖ‰.Ö%…N;C\},™Ë$š®BÒb¹ Ï9CÊâÑ-±-ÔN¢©„³ÄŠ^t ‹/MÏZ‡ŽD ú)aYkϑЙ%5„cæ±âº‚\†”¥X@Æ$™e €¤Æ’>Œi’0„H\L¥+ù…t%Fk–à+$,oÙ„·6Ž'V …„,úo3$1ÎÑçe•~òâ2AHà¬m £_ŠôS*]„»LAÆ¢¶Ö4HΙgRŽ£ j„¤ºqƒ ¤1É g‚@t“!þØ“†˜×¥I>4ªà‰ª<ÄL cU)Uˆå™HÄÛâ&Ѱö6Ž(O4ëÁ4H„ê¯a)~‚Ðl­¥A $™0¶ÒÆa&cv±Í1A0ë™pÙm’á$Á.ÎY ~Y‰R˜‹\ÄÁ¢¡·º;ArӚ̒ Ð'†¶Åê à¥cCÈ:ûˆ8"©¸•Ð ™Ð-Þ@4’X$ ‰›\2[‹BD ?É0Ñ3©`m@h“ 6þ’V:¼Bz*n$Q)Vs*RCÏ£ ±AD¢ÄŠ?¡ s@äG Lýy&Á®¦ŽE³+"@C`¡¦ìm¬. †ÍÆðH!ëeX˜’ë[d?+­µ°üI0# ‰° iµ+GæmÈ¢Vµ·$.ô>A8 ˆ· ´RÛ*–¬¤A?¤ òV°0Éí­kz»¢Coã©ÿŠ 9ç€da«Ò[bî lh¦|헤ƀò¸ÂwRØ $ˆ™´Ää„~¨¿ª¬ŽøêØŽØeAéu®Ë Q¬‰sÌÊ´ÒUúœcÁ!Hmužg8™ÕB <}I°!€X@*Ï™cÂ<Á‹Uwd"iCTãHçhê ÒdË‘DŒã(d©/ÑBà×ÊqC†¶šrÓÌqã½8_Êm’p˜d†#™@^û!í*œŒ1D¬åNì¡j7ćÂÚõðñÛÖ‘}© R“"OlAüÅÆ?THfi„Q¬R䣭¬ƒe¨Áè€5ÕÍû˜Xð òF©}‹,lU<\Þ ö¤J\·)2E>±%K«ÝÍ€Ú xL"™>±9L–Ü£ty>¬ bò|õ|)2‹€r&Kªä*'‰x‹q(81q‚Ppb}ƒ`ЬCЪ›—K˜ ¤'«›†".g;¡ƒ0ÓM(SX‘ýD±µj%›X(“ÖøBÿ‡8±®[=°BfI“RÔS`IŠž%KªUÝ)&2òKìø*¥K/ᙀ/Z'o±Ñ$; ‘!(Š…ñ¬GRk€`‰ÊP£Z[ºÌ‹tÂNäú©qfHiSU#ÁäÖUBÒ8òï Heš3áV#†‡ì ´“!B)““6"YdjÝ0<¯±°à¬·¾R·!Á VCaš¬ÊÈp)t`4’ÆØåjÊQ°4<5pG1TˆÆ˜§œ5IAʚɎæÜz=.²£W“åÈ›š¤'ÔÑ׉h“îÈX«ÃE!”ð¸À.eÈ—£ðjˆ #)€'bêȃ°4uQ„ÑéâÓí¬ÖG²“¢Ö@¬V+GŽŽi誈 Z=WêP©0 Á(-€ ï†ÀÑëq2€mO ržl ðPÃ.9 {bQ¦ xÐaÝy›µùkn­[HGb(Úˆ:ï«sé†Ö‘c÷YcG®Tv{í\B2Ðì¹sð)ƒïû圭öp8gøªœ‹£€AËp@ŽBHn#³O1fvÚ…AàÙO4/‡02!$0œ¥Í•?µdAk“&À–l]òÊ-Ct0#Ãs[ ™´w·¾*óˆZˆ5‚K¼ZC"¬åÔM…öÂ=Á”s¼×Ë0ëÆ ©È:ì‘xY…F’Vè ùcÑñ•!? O2b0IyUœ†¼™#ÔË!ÛN:Ü3$v ÉÇi-h4¶r|Ä•¦Ôz4UtjVVÁ’t¦¨G¹f]u¼–PÕCe°Œc¿NKD…Ü+â¶QbÈÊ®z„îkâ‰SáýJrì¼ÊVbï”#¬$TÁë²Ò¤ø¤s–•d‘GêyÍ {«SŸ5²ÌŒÜ¬NŸV²}%êkmÅ­ž†‚bËHÕV²Ú!è\.?µto \BQ! I'ÐòJ¼Õ¹' ¨áŒô´Cz »®æ¨4·Cz* X<Òåé)u‡ô´»Czj‰°Jß[›‘âwH/tH/tH/'4œGÉ¡CzU¢Ñ> Ò‹‡£"l5Œ2J›«QjiÓ9Ê1mÊGɦ‰Å(ë4Ñ¥Ÿ&^£<̺‚Ô„tT™š£eº¬¯QW« fªhAgP$U¯5²åQ•1hZºzÖ´qTØ`Q­U¸Uª¹£R-VWóVŠ«¸ˆÚ+~+X7Ua?‚וÕ=X]]\3‹È¨@¢LÛCZ±ÙI…Ög6¿dÔr ÃQÍáBŒOãQGÙ%æ?‚â ‘ ä¸ ÉqµÁ°M!È*V"†àHP€,BQ[Õ@jÅÅšnùåmlB)ca[è$: d9«åK5ú 4Y‘ ]F(µ~¶°:jeưªAˆNÄŠîIJ€ä ÁF wP¸X—EÛQ5/rjÎ.Ô ÙG'eÜ@c (ûXc€Hxðò‚ÏBD4uÖ3©e©€Â¥òL¼¨ZÉú³QEI;ŽaÒ³ÉbÄ¢“u"½z©XcM2¡^Œ|$f¬¨¤ZkE'ð£‘H'FW˳ݢÆÈ*YT^s$±Ý$ˆ劈k ll’©Š¨R ‰XËk,)´X™fš%2!àY€‘ä6>H/ô°1JDË mlC8S©¶@pËØ%ËÕe+‡‡qÕFû: RKÐc¬x5t†Jç°Ú‰<ä!­^$„1À[«Æ%=”s#’9¸ZÖ§D- $Ô"~±"æ‰ä“M^.b“ç0ƒ ±÷“k9žx(8“Ááâ{63^–"RO¤mÀ0"’®m‚,N$#<ºJ Æs.˜rš¨T]“I¢òb%èb uŸ§6]VåèŠD…am(’\&thò’ŸPîÞÉ2-_ê¤StíÄcE “ok7¥³0¡2×(á#憗SȬ׸ !ÉÕµ™`/¡ÅÒd­ f¨GWŒ±ôÅþÉ‹/€ð` fø'X©šo& ©WWýS € ÀEV¶ª/¤$·®Hå,æ˜ROd7jÁ,Öcµ¨–L[œk o”£,Q¯ÍQž +q-¶æÙ¢×øb­hHæØ_­ŠŽ«&$ŒÞÍ/ ƒm¨ˆTÇjtH°xÅe`L)‹™ªˆ(kÊ#’Ÿ¨¹ù,“?$;®TžF±ˆ5ß»‰l¡C!ÂuAÑ)ÃS AÄöÖba¤I]¢mu¸qõâÿaÃÁäX}=Â)«Hh›ˆ5Ê3QD áh¥zñ÷Æ:!Fdýè$ÑÊ:a5Øà¯æu} äüYÔIßJu]DïWqx®*™†ð„ÕzÔˆ!DW­5­ÓêÚÛ¥J6ü¯5¾çO6Ðùj«.We+¢TV\·Õì[|Íf;Ø*Iɶ\ ŒkKÃâa¼‘¦ÆœPm {JpX#¡Q`=ÎÊË*jŠA¬™Tk#vŒPƒhD|¥:'’c/Q¡å¨8јEÊ£]¤´2»Ø˜‘øxÂÑ<{ÖõQ‚¤šÍ£<ŠUKëd®ju”-‡ðd.ÓTxÃi'ARå:Š£¹fn²ÂBóÁD0bjG„R+Òe„^*äqX/ ·Ä<ÎäHJ¢B«Y±”K\ºPÙ§C,Á(ÅIÉ1r.­zŠÌDvjÈYŽœJl«;ØPc½"•HI–É“)3Ö<®`½°W=Db±«>sÍ“·€È:X­yª8Sjž "ùRóäDÝö*(”¬¼d%¢Í¢ €p ‹²ä^^µu µÇӽϭþ× Á‰¤õ±ˆ­¸+è ²–&”UáVÈêAD'VGö`¢ÿWŠWbc1B£‚ «ÍBž 1RžVYŒ”°9Ó™ÊÜñm!±–  µ\Î9T+²ɘZ¡¨•Ý×QЗÒ<ÒµJ·TïGŽ×*ü£ÕVÖÕ·Âr]( ‰¾Ôµ„µZ¶Ø@B@[D–ódÑBAdaÕ0ã†vë&²<¢ ²„¢†’eÁE–a®m¥¦“ƒô—´ÙrÅ·ØßtÀ¾F-Zeù>tÔû¹„ ¹no©±Ú¦¥1VÛÅÔ;úb°¬7€ndð9…uèál²®.Ë5ú¹Æ¡Hk€ÑuïçÒ{îoi6®ž–1–4ÖΡ ®HkݨnÂ{÷ vîÕßòßË7÷ÿðüî¿¶$ä^¬1åþù×wuß¹70g¨jSä¹{øîÕ»ßÿâËgÏÿãŽÂʳãýó_Þ=¼üòõÞ~ùîÙÏîÞ½xû ZÐÏïß½zU®÷X˜Ld•Ÿż‘Nþéùݯh8ü#ô Ê$¼eˆ’jŒˆ2“ðóÿ¤~ï^Ý}ý··´úâά¥û¹ýqÓÕõVÔÒØ¢s¬®·¢®râÒÇyOW‘¢€¿^ãÔ ­'$º9rêz+tUlÍüÏ»ºÚê‹1ÉpÌd®¯ˆÂq«Ñ•¨ÈÔ†þŸ{:n4dJ·ixŽ®6|:ïèj#êë 9_éèj#’', ñ€“Ž®7‚yÊìë†X^áѵFjÖPM¦PàÜœ´–`jth NZuKp¥§«ŸÎÉ»ÞjÁ¹úÞÐêçK±%»„ápìŠåuÞí¹ /¸ã.…Å:Þæbq$ÍhÚ4OýÌ ­”Êž:¿Z©¸å«ë­T,uîH¯·Rç¹w¿ÞJY¥s¯·úxù ‰3Lq^Éó¡¶µxõJ rµÕÇkŠ4)Θîi\ ?Ïåïz«ç©qK6fÆtGéš´]I¨®·úxžb+*V¢tD¶7û ‡s~½Õ§cÊ;h cú¸7û-~=Åô†V* ? ˆnhõňUϱºÞJÅçX]o¥âs¬®·B .$‚½QÃÛ¾øôvb·Ë}/ÙÕÇ—(–Ù*ËwØ ÆÛý™»Gûˆ¼FÑßÇfSBrÔëóË»†@oÐð“f^‚ò§Gïqj'$‹ç­uoKñÞóV]”ÕW‡ÿy³(WfëóKìëL¼m¡µXeÙ§õПë/ïKEé~ô± 5†àÇ—wù{CQ^ßQçëiR6MZôõ_EZÄÅA™ìÁëÃʳ¢¬µhxKý±Ž ‹$–Ù Â"6}5D}V¤õ GéaCÅÂŽ&¾\@â'•d«#,‡ÍÀi´h„Zý¹GX"!Rï¡FP}ˆauäï Ey}CD‹õŸ"e“® Ò:DkÂÐoâ2HkÕ[ˆÀµús'­C·ÞCE½ÑHë8Ô¿wåõ ³ª=-Êô¤%ëùÐá1¼Í¯uÛN—¶qÛó m´¨ˆ÷úsc–pËDq4>5œ‡©jσ¸Þ¢c)=lè˜æíé7Éá:¤Úï¦Åͼ75 ÙÖ¢Ù é ?vÐ!b¾{bÞûÝt$Z‹†£ô°¡b¶’OŒ4 øùÔ@·%P Ã!3j¸òÚnI\^ë‰ Ö áЙê ?7Ej Fl)úbHògÁ¯½<áߢý§Eߥ†-ÖQ¥0PƒZ›ä¢Œóö­-&¶ØE^ÒøûZ½÷×Û³¬P#Úþ¾D¼coa‹‰;½Eðõ0‘ÀsõÉÒÓÕ6?¾QËdzZ·mŸ×Ø@YŸi£EE}ôОëƒ8>µÍ¨¶2_j0ƨσ¸Ñ¢aÙz˜é˜&íéÇ&Çf£ÞÛ’íã¼pêÙgßÓÚ‹¸ `í2j Ž"Žìs<7‘ìIõÛû­Ð7ÍöbAà·h¶&ªU|‚dééÂ8 U”Z·MÔúžã.Œ µ.Œ‚zÆþÜ…±Cª(ª¨1š0,Z‹†eëa¦cš´§GÜd${-u@j%´k°TJǾóVKíV ·+Ñ{hÏ­Î9 µ:z¨•Ò1F«¥,Z‹†eëa¦c6’OŽ8ÖºœZÆ{£bM¢óõ*¸jMÚ™‚nMBåÖë ;íÝþÜÊ© †€_nV¢Wèv¤Ý[4ÜäõùªiOŠ =EÊvtˆØé¶ÛŽ~b£ÛއoH÷×ûsS굯¯‹Mè½w«ÑÇo-~òú†‚i¢žY<]8D˜Ôºûˆá ß±vH¦ËŸ3ŽÝ­ü—©%¾ý¹‰`ˆ µ÷›ŒõS8] Þ á×:˜¨“õäˆÒS¥D°CD†j¯]ÄÚ¦!‚Xo!ˆ÷úsÂ)ê=ˆ”õ1º6$Zƒ†cë`¦bš°§FÚ)Ž¥Û‘…ׯ´…Ù~:­/ݶP¨yä*5ÜŸ»GîYxí=ÈÂl£/Ýv,Z‹†eëa¦cŽŸq“Æ ê:D¨‰hÄõ#ƒ¸&T­EºÖAî‹î"¨õõ>F'®!Ñ4[3³Æ=1Ò¦dÐÖ!‚Zó• õ~Ô´Çζý¹yâözî”uˆ V_¬{ï¬>~kÑð“×7Ì!È"ëwŸ°KWÑàZ±Ÿö7æÙ#_cýƒ¥Ÿ¸ßÔÚÿìÑñ]§æ!?ûíó¹Ã¡î#õóü+z+Œ·"ÿý±5èGs¿º{HØ»ÞãR#Gãò›v¼éÆ 4žÅøÕÓx½Aj–HÐÀÔû#—ïÛÿ<†„X=úvµ‹À]´nù+6ÕNÜ„hëP28½_ ¯ èq)·Œ#È•y•¬RQ­xîþ÷VxãùmSY×Þo¬s· Â/➦uõ„8®´òÌaê“i"q)†<ÁB¢[êûÄY‡m²>5„U#ÊSå<¼5ŠW ¢:&ÆòD¬¸ÛÎhñkŽƒŠÞô—èägwm8Ýï?§ÁFcËŸõß™(Üq°:£™RÇ&Ê~¶Gòß#bôø¾%ž¿óÚ„¸ýU¤<=3,I”à±¼¤~ñk‹Åœ¡mÖâåþÚf‚=˜ÎJ²ã{ÙÁGH6æ6R:ò¬_Ñb'fMshH×Á´®[ë@È•BÓAÂo]®è®­wžÊÇiN/&ÕØÊà:ÿ¸–Ârá1uõè\•ZzõÑáZÇàðXÊûãE¬96fÆÝC mô—÷à®!ïm5eÿ‹ts1®óðûg„¹ÂdÓÃ7ÏÖ·ûòðÀ!‘M¶ïÐzðz‰·6ÓDõÆëøù÷Ïqgb žÿÇ3ÐG݃üô)=¼xfqøŠ„ê/u4k×øð¾|Ôm_¡…kª-hð|­HùžÛ‡µ¬®‘˜ µ«Ú#Äøüð57ÁEšY#ûí ì ãóvêûwª?0÷7QêEÕÝWµ±óÎL©&z:.pÍ‹#ð—Ï °Þe° 8²«/UwÖ¤´ô¾%&§F­X¢1Ѥ19„— &¯ªAŒØx››þË”àê¢m½ï¯[g#¸?¡˜(›gVÿÖÝ¥žd(ܧ5÷S9`(–ê˜KD+è×c Ia•¿×TG-4>âŠ:’èJª°ßÆÊ~»˜µ°ƒv¸"Ôh%Rò«çõ+yÏxêl0âÅxñˆö¯Æˆ;‹q¶‹Ï*Mºº‚zÜÿì~‰.Œó)Ï⨻֓©…éÛ dÛÜÁœÂ¶òýUELÓà÷µLÓ™¦á¸N1šv`ÕŽ´K±þ5º¦H2ÇÛ(è}ü¼¢( RݽUJ÷•„ˆMÓœëHkÂ/§€ÅYËË÷•7dx¥n!øà'E颶zX§ îM¶_Pê,B+‹f¢nkÁ/' -„›¸Õ]Z‡âóÆý4èWužVãnÓ¸yž<ùáOô¢]IûçÖ’Ñ:ÅZÎ51Ú®¾ØÕ}_rÓüˆR§5ï¿­Ž3:MÁ[ÁÔ‹sŒbú#o¡èR׆!¯ —~õÛg©B$¡zù¬ýúCCÏjá쪗Á'°z”©ÑÞÌ22‹Š!—šÅîNûŒ#W¥ˆÔjÑÀl·i S§Õðõ¬Y &Ó#lnƒƒ* „‹Ô™×ln15ps î •`I3Ü>˜Rƒ PØô•*Â>T”¤ ͋à Éáýr&ñ´à^IJ'¿¿c„cΦÒAÖÐ(%Ȱk0­M–”Dé‘úV5GÌ‚ Ò‹­.…26J½vÆá^ÞpDàpɨ«æX\"“Lp¥ònäf#uˆ®Ÿÿío*é–f4Ä=‘L$}³HR&®¤ær>,^C‡¾#$éÄ÷6ÒlŽBÁ4x3‰»çÀœl&Íí9¥ÃÈáÊóö"³æ”w¼VhÓðƒ²AWð%Šö®"Y›[í…ÍÙØ+ü p'ٙت-ï¥:¼ËìYcrÙ8¿¥ (E p¦ ›€J¿÷b _»é‚d·¡, G۸ε-jÙ‘~bÁ¥*U‰žƒÝKWÒ,5.¤Âß éiOC Doà¬ÖTæ\M Â¥j°¡×bëe ‚ê|Ûõ8ª#õàÊâkåà_F?ŒŸo:ö»6—›'³—+’‹ÅLÿð˜‹aõ®N1®.-žHãE·ÎýÜ ¤Ç˜´ ú»¨½®sì×£ÜB{ö™ß†ØZƒU@þ¾CŽo ™€Hüøz¯Ê1ÔöG¶#Ž$Z ]˜¯±v¢À^*¡gTÆ5Ú³÷Q<Ù§êÉÍ6ÕèÚªPë¹6ž—ãúRoŽ@½p z2ŠÍ/j›yZË^á-=°ÚÄάµlÔPCæXùØ “wGÙÉ£ºøR§yooŒêîn8J:úœ†Ío™@Ó‚¬KþB‚p„T¾©¯ÖPüçÅ(Õ§ÂWà:è5mõ°/-ÂA?*é ýRÏxü/SP]ž„½ ‹.y™ŠDc )U>Ìòtê9SÕZr4™4ºwÁÜ:÷hžÜ D¨p7¹ß‹^¶Ùøi<Ù'æàn+•»•2ìOŠæÐGð©a6¹p;åÌGm~þŒKd9O sÕës•u«†Ù%­ÝAꈣâ{ÀÄiÓ ™Þ®åÒJµc ¸’*ü.~ÏÂW½{±§hÁ¸PªüµÒFÕBi”š´½Hé±1b."}ÉFö¡úl‰9Þè«ñóÇÑàÅ€¾î?÷âwös…´°ÁúÇ¡ÜsÚëTG•Ú?ªxSûºKûkÍœQéÒü_žáŽORµÂ7Jâ¬tˆ <ÿTK%¤Ë+£Í U•cËòGŽXkÑI«Ã­ôé"&âalsɹéÙQ×–®ÍggOÙT¯ßJ YhfC©#cuPÎUÊóAÜÚËJýîjÔ~–b©ÕnW3.ÃdñýSy œ±GµÓíš•Gˆ‹Öôž)É·E? íõ¢/âã­F;)-é"FUà¸jÆWJL_‹btLŽÖïf#”ÔXÜ”§[«•fúJ {‹Ÿ¦RCL"‚o­ÔxC¹–û$]XQþn—‚+övf›Kk½‰Žñm4ò 7D4{ÞÀâ#iÙ}þ¼™ØZøÄv!3yG(>–‚ÃÇùðd™3ÚÃ’¢©Éòÿh|3~¾(+wöÿL–ã ³l¦0&»É¦Ï¢d _ÉǸzµ-i[§Ý¿“M åÛ”g„iÑŠðuµáq=•,O¤Ò3¯tXSÒ!µŠ´ÿÜÖ²øV¬ÒÎ 0C«É½bw8ÄéB¼[F]³…«Ç ¶Xs‰g ‡ÏNžFþ•3GK’Çñ´,WˆùÛEææßÖƒÞöbÃñv aüÌo[кâVöiÌ­Ûº–BùצtñÁµ|vð?y-,Eäw‘x¬ùÖz"ôy [Ó‰%ètE$ð%ËÃB—#oõàz‡ KÐ75ê ÎÜ’”ô±ÿ~žÞ‹0¿Ï·Å—^WWçû»m@?¬e…¾?¿ß óG¢°g8-ºö w“²Û¥„é™QœSÒ~‘6Å“c‚Ww:ÓÜÄŽZVÈG\kí›”ã¼Ô~Qöšôÿ,ÑlÄŸ¢Ã{7 }tq™G©¨ø#m[¾<æK÷7,TýYåi –PñÍÞ±„%Ëè#ÑÅžÄÌ~TVŠ ¸Q\1åhØ|lÆFŽÕUZ¼pá†B{'¨êLÙçþz§]ðE÷Öú¿£u^Éíø]M#¨³´ñÌŸCÓØ˜¬býf£u3yž?þzMÎè⃄¹tVüöTv!Í|| ‘ñ•xÓ™P¨˜x3ÚA>}–px¬:Çtcœ–µXs$ãf ³[î–>f¦ë§Øê„û9Jø4r±,&¦‹TŠ( ~ÞrY8$áÁ]ô3¤cÊÒ„`w•èÙ¡§7O@Ë£ëä#C´Ÿ¹ß°L¤ pªˆ(Õf|²š‹ÃEðñv®Õ’.sË=)ù¾Å(~;Áz•·Tó1s™ñçÛ³÷Ä·VdïˆÍüM5ô]Sœ°ÓdkФ Ž"ãäÉ e-§ëmåâóÈ(nN/|w&H4•¿uçËÖ«lc¬ÈÑæ‹â› ÿï?gˆÕÜÍ´²ÛÒ²«9Þ&¥Â÷*= ØgÛo`¶Lƒ | óÆp|ÉŸZn|“ô'Žð±ÏXüç‹‚!¾“=×+[›è"é… À “ßæýs4³Q8ìþfÝ'KYü&ö‰Ö…ÝmôÇ4¼îwCœ·¢_k1¿˜ïÇÏ£Á—ú›þó(äqö0 ›ÑlVdŠyFÏ11»è˜G˜~CXïD² ¸¿-Û|DýÕƒÅn!˜(ö{4PÀaÊ(0nó^’ð-E¢›·¤ZñæâOL-ZéþZýå£" ‡ïeßî5Ï~3·ÚÓO²Óžì#õÏf»N]"1aÜÆ'¾Ü:76 cÅä¹ÿ|;¨EÉá?o÷‰ÿ:Ê;Êb ”wዸ^te_·Ç¶ŒÆ‹—ûº!­éƒ÷uëu¹ôðïjîn2…i„^©¯Qæ\KÔÛK¿Û߇©dçÇgä.ƒóù ~w°zsÄ’£]ÿþ¬Õ·«ƒrœàâ”ÁžÆODÝ5àŠbÆ6Õ‹­öáãS“v°]ìjߪ[Æ!̰Q7lªÕ·úÍO‚~X•K‘¾l7{ÕÊ8¿¥ÃÄMÁ˜ÁAiu'‹hAŸ‰š¸|xæïÆSô"µŸ¢í=ü#YȘæ.÷L\”£µÆ^ …Ý›þ£‘Ú 2q0¹¸¡'@Ûf†=ùN© ûƒ "ÉóÕٺ榶lî–·Ì¢sWO¾?ߟ¯ÆÏw#Ò×Û04nÂPFäoj¸o(Yé²³¬ôsVâË­Z“Ø?⸫f¨ˆuvOwÞ=S›(.˜¡Ìÿü$fl³'Õ&—¿Ã1bPöê\õþÁ%úaF~{j.—3|Œ4Èœ¯êt§j:æ·ã^uLªõ°Vß‚›õ‡ÅVŽ‹í¸‰=ìïbïQ .m˜µÏ_ì $l; ãE9¯vrœ·‰ÿYq‡¢–‘ÿ†yÁo¿|r€Õã\ßy$‡L²”6ËÌûìŽ>œ- ÛšÇ®?© 9s{u´·WU÷\øsâÒÞQU¿àÝmí ·àâ ÐåÞž•⤛…lg‡îö÷ë:6å“`ÔpÙÛjÿš±ƒÚ»ÌÇÙ²ú³SàzQâB´â’Üú¡&ùC«¦îñOÕ`ijîñÏ·»mßM±ï#%f85µ‰^ÉT|1ÛûϺ‰üš)çßH3™ë…úi­ÞúfŒ]6aع4§´hß®8³_EWFyë!ÃZ!¶q|íáÝ9oíR\º5ŽÏ”'«œä¯¬Œ8H`àËæp£% 9\Ï?9Mbƒ£Lv;}<«ÖÅ&0Æ«S‚*@ÝÜû)²Wz´7]|\*u¿§µ¸êk»«dßÝ_*ÚÁÄ=¿9¯»ïYäaÀà §­ÞÊxŸZá9Zó'•GТ•ãóè„)êß''¨ “Ë^ w°Oñ¢—Wµ—“[¢>"Ï›ÏOù§«î Ô›tHÆÊ© lÅè¾³3Èm*q§§­qûc,³ÛY”Kù¶«ò؇Ò1–µç6{Å÷¶h×58lïpÛO羡Þž¢x_WT²7óò_É”·«Ú—»PÍΔ£ ®æ¦²þ¸”憬oû ;K"®“t¹ý‘7P›í™ü¶´õÓ}]Š8.ãïí qgkgKW0q(Æ^x+߯÷„ú¦ðj' jG2b|GʶŒø¦õHåê’ìÎ¥U6=Eæ6Nûÿµ>qµ°ßnŠ¥ "5-,iÍ?>…}QðÚFnrPÛÏËüï+"6mÍcE¤|Žý›ô› ‡¥ÈUªöòi+Ñø‹=‡o+é&ž.g£ ®ª½r—Ü»°·|6ê6`Êšr_3Ø_tëÓµw—)t±Actu][†Ÿ}ÈçT$]P[Ä®¤A•Ø£­zž}ãÊXç"9¹íÀ¦>«þçúæ…?ðÈüé$Qk¶#œäG'1mOt´Ñ?qÑŽ,ïz¶0üáËcFN¬Ýº—¹èUžm™|ßõ‰-©‡¦>Pûz0u¬tÓI5œË k<¹$å "§2 8ÿ•&3ïepä+öÖâÈýÛQ þ/Û¬uËãäÕ–0ƒz3Oûfg Ù_Ûõq5Ñ)8áq¼Åácd*á“ ëí»“\PËÛz ágó©Ú‚%m¶Q1ÖÙL^ú{iëÒF;™•ç{9Û ½k 1¢;¾åR<»»ð¸Ó“ˆü7níÊ:_'´~h8; û–Ïm‚°Šñ&¾(ãÞ÷prÇØþÖŠsfI…€bÕÛB\2|œûhÏŽ„u‡û‘[ÇéâæŸÄ—€Ÿ¦5ø0ÏEµf³|,0ŒßáØ­Aœ3Ÿ£K¤7÷§“tQªØ‹b¿mã¸i]ÃÔ–éËiüZ4À5e#öª‡C]ºa× ,y^øÍéffd8udŒtpŸxç£>«Ãæöª]›¼s[-Ÿ…>ÚÎ~P%úy½ Í™ùÐÑ›¾›9àÆélpÙÝÃ=ÀüucùÅ!èDž9íáq±qAïáq$вàÔ£é‘ò+ç£Ç_i7e>ÚWF^/óùôn:p/å=eaüR.™ÎK{ž®iÊqWH«*à*œéšÛ¯‹ýƒ6·CW|æå¶›ç¼5pD‡6|÷J<´Æ‹Î]ùªVç£Ë{ªuñ±€?T/rbo-ÔokÔjß§IƒçÂǧd=>8~ã÷ü¶vÀ<Û zýäZµÞÕ^Œý¸Ô˜]<ªöiŸ#Û`3n÷ï¢>_ï2{rÂåË^¬ªðì|ˆˆ sjñò÷í…¦¢|–V¥ êyÔãOhWqkDÅ>cc†iï⦆ۉ>Ùyµ{=ð~¸†•¢ª”··~îÂôÔé=/Û80GÌ{ s»kØüáÒØ¸4×RUÅäbyðÚþ£ƒ=ˆ«í‚zváÎ$;'ùýÆ…£`r{ýG…ö•ƒG9œßÁ‚у۱ÍÛ]n×2pi‹©h¤ä7ÑÕœ‘¯¸‹›o—©Çn8°’6‰ß-¥›ÚùÇo?>¿5†¯J»á"mû~Àý©ÛI› W¼Ç=4öá‹ÛÛv²|ˆ¦Ïõ%£³Kpê¼¾¨ËU¸1瓾iÓNH”¸»1ñU1nò[½;ì@êu‚«c) ¾-åñ¥+K¹s!wƒ¦Ðö[ª~u÷ÿfkÁendstream endobj 227 0 obj 11722 endobj 233 0 obj <> stream xœÍ=ÙŽ$·‘ï c¿¡°OÕ†:—÷ñ¸²´ö.Û²Ú0 kFSš±¬žCÓ#Ù½_ïˆ 33xegõ±l@%63 ÆAꇃ˜äAàÿò?_¾¹ø?øÃëÛ qx}ñÃ…¤?ò?^¾9|z ¤›-ó#ƒÝ!f&r˜rqÞ‡ëHÇã6m<±{gízgÍ7cLâáÈYØËZ?/Hd” Y*‹üÐHÒª¥v^MaJt "0%z«²Ú2œfH ":*{òs¥EœBt‡+©&KZeÁ"Ó™Óœ8#tâxðQTÒ1eã6 Μ/ž0ÞóQÎàüX8Õ¬òiJ}¿DNbáì¿A65F‡k=^q · œ÷ªæ€‡ G‚ÞPÒ©ùï°“×¶Àx8}|7£ïö@‹Î0C1ò Wð­vÇ¿÷•j©‡PÊAyà "'©ÂÌÔ§Rñ-›áh¿¼_âgÝ­‰$Z‚²fÆ)h:u·µ&²û`2M¥ŠËqÑÜÓÌž>ïPDãFrË¿Ä ^Í;,冓#þqJ#g£·¨9ÀbƒB¼_ò©*ØFzdÞ5<ÚZ£@Íûn¬ì/>—Ê– êô.Éæœ—ÍK²à¬ÛDO¥JÆâ'ÚZ„ÆvÒžWOÁ†d¬Áë ¶cZ ðûÙ¾ûZõàÙ+Uìò]6Afrr‘ž×]ÒùkMVÃmÉnVÚBødS¾)œƒJÆÕƒýž}Èå’OVH&ðjÞ1ü˜LtYšüå¢ɃõÑ*lwX¢ck‘ÂÇ?&§LR^ÚD+d<ÈàÀÕ‰ƒžPÎNi<0<;%¬D-ŽžªŠ*ùÄ໨¡òì›ÜÁ¡à™‚§<‰çõ•uÙÍ–^Z“ æÜ’†ºZìušã¢1# hø×ë¦Qï; ¡wÿŽáõ–áË 2õœô¬ÿDç :,—"”¯@?û‚±¸ë[y. \`*»çõäœÙ{Ûî×Þ&d£s…*Í<Îð¾Ö ¸Gð·¸_Ä]Mî^rò|L[°dÔ¸ç‹8_Å#Ù%àØs½‡¦:(ôo8Ê|'üw«È‘Nƒ3­5v>ÓRgÁ°´íF°CjÍ[`²8«5®£ïh² Yé¡+hLÇü#“iq†h4#M²’Í­j¬-rMÅÜy¸ÚÔ†û~5ï£4ýo‹ý®ëþ#‹dR ô‚s¿Õ™¶½vß"ø¢"†n´*³+·Iuy°¢Çï]Ò?à<ló.}ˆt[ ¯mÚ¼é„Û¨¨Ò±iÒ{4UIYpÉû${Ω!É8™~ÁVy™pfö¯qF+ó\XQøÔ2Ú { y ØBàPºIX$Dn¡gi24ïT#zA‡Ê7Á%„ÙgîÒt¯·?¥£FDi‹¯4yaeII›*%åiÅ ²Ã³a™ÖaDE¢Êh0Ù(¥#b¡TgÄF£];˜4B” \@ ½aDÁ3±v²U¤© '6³4Åéa5*i;£…/iÜöq÷êcÂÅ„g)ì]ð{ ï+ì!Uc(gçaÜoCM<ƒ‚ç¨gàŸ5œÔ‹Ðz ö"´ûs7dʸå¹cP¥îézq^*4¹ÔAÉ8ó»ËÌ­¬Dæ·Âàêèc^$g1H²·#§®feí鈶NÝf²jÕ‹É&AeLüb´ý,IöÖ/AP.xȰÎñoIZ„Sû˜”‘‡SÉ*åM«<¨Ø{² +žaOD•ZòÄ„v a‰j¨G ð†µþüþ×xèº;á7ËO\ãóë‹//Ì$ìáïâðë m¢E–B xsªÉ5XFn.¾v€•øÎ`¨Ü\‚mRØíŠÑÇõç‡ûÝ ÿ½þ|»þü®šK¹à×¶éÇi’‰®‘on˜Nªd}}ÊlÝÌkÒ´!*…3)ƒ»‘ý舣—‚ºß@¸`…Íž¦Ø±®~ýÁì=FA‚-}CeeàÏ—djÏE1 À½ˆªM &<¨Ý |1S웳A“:)‹äì]_ˆˆ¾n’¾ËÙMy3‹Ægÿ6Ñ ´Ÿ6Žjلضâí ”ÃnÜá›4[Wö{b”{.*C7u·À—}'«ÑlíÈB;ðÕS:.NBÚçp:ÁeÓVŽRðu5gÕçiŽÿ½Pâá4ÝM¸ŒÒèìÌݙƱHÿl­J”j€P¦J0E¿Ê!«Bc\0TÉÓwM»»ô*oä5d 'xº?‹®1pœˆuâÌ ü~žÄX‹bëXœÑè[¬OäìD”´NÓ“‡ÕŽ.a•À¢´L‹c,¾¼‡Ÿ¿Ãá*PÛÔ“U¬«]þä;þ°ô ÌRÂéG¾“Â6þͤRÄ…NT‘¼´~ó×vTASî2ƒäVg6°âßZª‘Ï7ˆ*²(¥í–²´×L€ß-Ô(“žóζÌ 2³N$O&eäd:#»3'#UYL›ãçà›Þ‡Æ’™É™gHZ`(ªÁ)Góp$æ¢5…´¾¶hÐâ€ÇÉéZg=]ÈØÌ:[Ìfä°•eEø}vâ80ŽÝH_59bl…)FóYÑ­÷{OF{†Ùƒ>å²ÈÁjã)«­ŠVL&°Mµ8︌ˆú7f˜Ÿ†â%ã¸é锃è"M[êf»š„;QXEÆô¬¥¸;Kz"]DàAÚ“•©¬¸vOœo|Ò®Fƒ=”¤ †²àÔ_Wýʰ—iéË|ZÏ(øP=.^ÓFR×úHÀŠLÓrÀÚY”rfש*âC¸ÚÉ]k§L%Õ6#"Ù•.z‘û üQâa§Pl• öz1ÀÚñÅ€~JŽûrØÕö3Œ;ΖÙm³ÝœãKW™B)ÁÙïë Äþ0hÑeÎÎ~òÌ ù°¥î¸¨ÙD<}]ªÁAA-­„Dpá c(å±²¬žAÀh/nÃ:áíõ>rN&Àš³ðlxÆtÞ®.B'VªKƒ•/Þ421Ùȹ3yÍg?]’ož³¤ ¥Xµdž/¡a hí!¹F ó½\ͧõa7pShĘð¤!ÚÃ*Ãx/Róè§„k¨oµ>Õ LÑﺟvŽœqz4½Mx3"”Í·¹3H`&‚„ {EE7TÚß\S·xŽn»4›VšÖù‰ïµD×owq6si§áSáí ÇMµ„-å{¦°§»9•v±ÓïIÃlÆ=ýžÖZŠ}WöµÐ@i]ÈP¡h¨8)Í|O»éælíÅÊ&‹ê³q{ÁšÒê\@qþ S-Šñì†X-Põ ë|g‰„J¦NaáŒâCî àMÑ&Pz/‘ů̑æßÑþº¬£§ðÕªj¡:§½}uíêo‡ÝVw,·:ªÔÑÏH©”­~XÒ2Uòîp³Y̾˜ðI†ïÓpóXAuk§K#ë F#ž#à€D;Î6•jgÓ-¯t›t‘<Úwò¦ÛW:@É:4ÛÀ›š´åÂLp¼c?V©;K¼¾nèèç\çÝ‚G»P¬"C-ŠÒ€:ug'fع#6m«Lô=¬{ZA9ý’ÛpTéM®¦UÏ®_¨:ëú¸—ëEƒTÏ€ySÏO£»ëù 5!Ð #<ÐÊÞ\ °…¸Œœ_Äó „‰ôÑ#Šø¿\~ºþü±ªç'7ëè©ØicÆñýŽÈ¯m`Í´ÊsRÙ7:Ö'­†+—žCs!d½ò¾,Ü<>+Á’Kš$ºL´—4ï{¿…ˆìë U‘¤Î‚7·eùžä9Ž±Ë€0Qø‘±Í¾rÃ7x2-(½Wµ:DK©¢Ë×ó¢{ÇsQ90ÅFu®ÿƒer TùŽçؤM•! c"„u§c3a=#7ȦD&µÊŸ‘_mà4ã÷v¡÷†R9B—%±tsŸÚмãNAÉ"ð*oC˜3ss3‰´=~}lÍÜVŸI“™Ü×—0­Ûn‹à;ƒtªâÀO'ÕÐó΢ÇceÍjÝøÁØ!3BA–s˜o3ɼþöE®Y‘ÑlY:Üÿƾ•–J×6ß´&xKeÿúVxÂãyb²…~__²?Y_íðK<²yN{õv=‹Ó_jGˆ^ûQ:»8ÀE ¹›Ù^éHû¿Åè[Þ¢Õ µfmNÊÝá°¦Ôš×57ƒ¾ö( —Á¾•Íf×&ÁÆÜIôcDŸm3M|ûçZTeIºTs¡`hF) ãž ³¶Ù†<Š*Ñ_èIfûþmC$%§NOè(ÌP VÍIC•Ða®CŠð*®åõUüÌ4¯«eší¹³Ñ„jéæ×ö¦z$b9Q Rs#£?Œ„² õÃ;kŒò;únF ëê9ÀÙbP>)ä÷zñ"Vù6ß«tÁÅmÜæá,ø&߯±›%à½ÙtÕà=eÇ9WÔSR˜á%¯Q ~'ÅÖ ï@Ç2²|H:îV·$ÃKcµ*䚤ÞA6óðo½bO}¿ÉP0QF é¸I_¯Ãß0Þ¥ ú,—K¸A@òïUé3#?ìùœ#T·–°qI¡_›h.•[º3sor|þT†^J=õX‹é\Ø‘¾-õ3U—j›»ÕßcÕ¹.-­,½K*Õ¨µ xDøXrG²ë.׃Ĩ^ËJ(ý‡ÉÞV>{ì[lêøzв|ƒqN¡‰õ‚ù#^^kÕÑ ÑôØ©) ¶|¡¦¡&eÜ*æäEöù³¼Óòù³_ãWÊ©ãü¸½\Fè¥àd;¿çÅß%»I ª‚ƒ9[ïÕwbÐXÙÝ™C«'üf]rh< ö­¢ 4‡70âð¦Ä2r~ L>AÀ£H9´¯jä£?¬£ÿÙðÙ:úùúó¿Ö ì³?®£_ô€u__•Ø6%kù X¯(¹Òâê¢Í5EŹô+žãÍãYÖg­ Úì·¸Ó€})æEf~ÏI%[µùHFÒ7îö"ÇÕÝÖšK®¥Z$ˆÚÌÔg¤…Ïai:7:ÎÒyä,6?šG±ô§Ý _tYú·ëè¯jI8“¥?']f¤./ÓçkžÑ m|Ùx‘Œ«Ý}R_C¸'Îd:¼ññê@ å©´ýK«ÇØ¢}ã"™’Æå¾>CŒÜð~u‰Y›Î…4ÞXÐäÇ;ÿzÁÀ7‹U¡ëóÈ#Cc<þ8]ÿe­ÊÙÜZ«³ ’lÿ~ˆ`ü~ŒÁ£•<¸¬DRR¾W’XV;p_¬Iíw2têLG_Hξhy1¼®kÂʺy©w|ãvDé5mq¬ ÏÆ±`Õü¤ãØyäá €¦öQûUwóN>ï~öçb§Ûlj\ë’àAÂL*èÖSƒÍ$~«–*H¨žðý\³~qÜj@º­TÎÏ|˜Ÿ/­ ÎÖ¢Iþ©ÜfGM¡†¦ô0\õ -ÿ]ÞõYŒäù9Á„VýP=ŽJÇWËä=­le2š"º(øÅ¤Qü…5 GÏUpx?-øm B¹òܫއ²¥.c1~ ²5à¹z§¢£gѪVåˆÏšVÎnß-]¼«;y±)ÄËKРd$ƣϪU~w0;SMo ?ï³Ê0Õ}ll=óÖŸÿ†#Æjq˜þ•ÿOù@œëh¢Tç'Џ*Û¨¢‚ßh,lVÚôV(o¹ÛÇ)¼X<3ö]Z¢¡Ñ՛굂{½·SÚJÀMþ¢AÚ7Ý4¸vš-y»â¿‘wP½…üRÙ—:†Ý˜µé§ŽêfºŸ‹+Qß;Å‚<ò§ÀÀÖìãÜXöÙï{1w >û;¬;î>–m”E\þ {\ÓÎí¯º“{”Pd>1½+äÆÄÿ>@øÌ†z…ì–Ÿ k}yñO³Ô«endstream endobj 234 0 obj 5604 endobj 238 0 obj <> stream xœí\Ys·~ç¯Ø¼ÄË9FãFÎRRŽí”rXb%©²ó “¥„”lɲ£T~|ºÌLÌîòPT©”4 b€F£ûC_˜o7b€ ùÿó룹Íå›#±¹<úöâ7ù¿óëͯϰƒ ›0+­Þœ=;Jo»qR ©ÍÙõÑ—Û?ŸŠÁJ§´Þ¾¦geñz{Û½ã¶O±YIa`ìâ=l_У F ·}Éz_Ÿ*¯üö«×¬ý =ƒ÷6(ì#m”2zû†šu0ÔßÎ~‡¤+à¤K1asöðèì'_nã‹€Ããx¿‰Áz‰‹˜ZÏš>›ZiŽOÎŽ¾8Òƒ0›‰ŸVvzã„tƒ1›kl± œZ®ŽwY]Ò;±ZÛÁ¥p€ÌìÇ5‘¸Gsëƒf‡‡së'óãŸç¬õáÜúûzÜØú×é1±'ÿÄ 5øÍ)Ý6gH8±R ¥‚# €AXíH.hë¬pÂâîâ£RN‡íw±Ùˆ uÑR ›ËZ ¥Ý^c«ð^J!·¯æQ*œÓÊùÔÇ] ýœž +.*Nƒ¿pÀoXs¦•ČӚGøí9kgÝ£p+åçÿúøTúÁ £\¤9-R{•z'K¦|ŒâƒÂeŠVÞûMâ„ÓŽ¯þYjU¸Ê—å*iõ^S¬¡bxI!ø%uÎü(矆á<çÃpñ©8ñ/ó¬ºdôÓc’73ú ªH”«¼YJ+Èò2¾¬5Í„L¢Rwæ+ŽO‘`üÛÏ#¡Ú!"Mœ5-YŠtä¥\0Q|:’\jÄ˸µ$Áok¯QR@À$4¾ˆ×4=¾ga±ÝHª‘·•$7Ò¾h4#¤÷Æ®d€H‘®ÉŸ¸Æ'ÕVÛÏ€uÍ´ƒW¥–°Õ_Îl輫7˜/'OO¾i×4 ²l“±júò–*ßÚR5í¨ñË-µ‰³ˆ{¥ö:à BžuàŽK‡L(Ia!Öü93FIgGœˆÓ\Òì&nKCZ¢¾ž&•PÂ…$䙦(ä(ž‰4þ6ê DAûÌ4(€¤H»AHS°²0œNðU§'a/Ìâ³vDæk6Ì[&2k¨‰‡7íó7 zèXi ÊÔ‚­&¬K¤6ƒ‡?ç±—°YëLÿ8n­“ÏÃYÄYw¹˜g†çØÊ™õ<­!DÍŒ2ïÈæô£Ì?!¥B 1Ûw™ dÓs&©)E|ÔÕAÉ»W™_‰Þ¨¢¾XiðL@BqíËÍãBmCO¾Ø²9ªqù×<\ÍuðÈõBh €@*ûbQ™Oà/íªÅ.Ð…ýÄb²ª2‹}X0„¬þóâµþq¡\Žq-PtŒyËÖ›_Ô¥±;¡ƒBªÜþ0›¤|á| Î#°jˆòˆ”&yœq,‹aˆRH»‚Øß¡‚ïÖÛ,Ò]›I¤¯—Y tÑ‘ ©hºDÙ¶ónfGìDFižpr9{Ú;Â¥èIódfÊ1Ìn9l§Rã±ítrÝ.ŽîÒq½5 AŽ9k¹áæ¾0Hëþ˾Úçsë>_ [QŸúHB½up¨¡Ù¢f¿mÝø"?п_· ÷™<®[Û}?¿°ú$2ßÜÞmCÇÒìgÝ¥Û&Ñþ¥Ñ#¾5áÛºýq·n›¬SÛ¿ÄŠP”›œfõ&0Ì4—±§ *}@¦|~™[miœ—l›Æþ{z3hä2Ÿ3÷q \&icSj߈æ¨ ÖñóŽï`GµZÈ ‚à-ŒúxÆ™‘Q)‘ÑgÍŸ˜Y:çg7¸*…¦-B²ô8¸©åpLÆЄˆ#OË19’Qcr"ùA³ÃÃ}ãcÉi„&ÇǽãgxçFŸÐöIôJÃ’„YšÿL]Dð……Πä;œ4 öõ\K³˜4\/Ÿ¥V{Zh]œëX©™¨‘*@¥™;ð{¼ñHafÈxkh6¢_y;Ô§1šÌm佯RoƒðUZÇh Þ;BÑN@a´ËžÅá´°Òw,·†W…£r©•Òô«…JÄyh w\ÅÕ«AÊ~hèišÉßp+¿‰Ÿ!ÏÓÐAùÚ³£fÐõ$ÒAeüKë zBc¼/jF5®ç#‡Á{=M]¥ï0© 7ýùó0sµm){;ïÝR6•Îkf*-7·•qd…¼[™aíoçVýŸÏ­ ¢ÿÔÇûˆìXÐ1'æQë”á&ô;ƽN¢b„lX}]ÀD<,¼ª‹¬R¾g£/¢"¬÷;ÃeáWŒ&F/Ü‚©¡bB™N‰Sô.çK•ÍÂÀt™FZ°¬òVp0-òCñyôrkrn¹…&#ß„¸×û¸©ÉL%ü_“ß›&ßyÔxyøf¯-*ÈÿiÅOÒVÖS0}·ƒcºÄÑü)7#Gèv³DV‚¡™PâD«‰×H°R Þ|ņàÏ©HCPP˜,OD…€œ¿ŽkADnãÐVøñÙN™C,rqYÓ¡h©c½]9V Œ EñHš*蜲D<7&ÛˆU€ÐSú)%ŽvÞ§qqQSR‚ø! ƒ:Ö”<ÀùÑKsÞR¸T‚ŽNä¿wzÒV +Exn ~/ßÄш¶"(®¶Ðh;¥çÔTK*Èìôw‰V­ÍÂXÆ ½%p˜{šÉÓU`ŒQ:¡“1_Sµ£C å» –Œm®í‚W™Pm¶r=½³ðîr9ƒCï^)–H»-Øíè^¯¤riDÚµ^Ê áŒÅWGoFîŒBs2Ïšs i9å!º¦ÅD ¢­"üZÖO*UIhôà]/Ж¢¼éZRù‰$JŽ’w™ Ñò¡[4O¢ú& W,=K @tÝ'?} Z&ò vŒÇž;ŸÏÑ=Ê'Š)«=ÕD¯±ñOëB’/—µ#‚¶“¾%A‹˜ÑåìRO‹<65.ZéÖ¢›qgnÁ´ãÎ6èQü3½¥øï—%sÄ¡pö…>š1àJ¡'KÑáɸgˆšº XĨãÐÊ:Q’¹1Ä%ürŒ»¬mðd™ÏØp"ÑbèX¦™U^øVÂ=Ž·gj%mC¯š§¬Q=_†€'‰Rí] &Ñä¨v&•¼…Áhµ ‘¹šsÍ ³˜/ª±]Ó‘·«,6jfÑzEFüŒè¤Xºïå9²t3 J÷ø«máè~üH{þ–¤ôaâÛZµŒ'ž–J Õ/[™ŒN%B({tŠŠµÓÐ_W„T¾%î€AI 0|šòSˆ|#ÔÄdhVj—Ý”½L;ªœö¦…ô²Y-QÙ¤»±÷Ê”[oWð}$ãî2åí ªdÇ.bÜöêÔ×ÊtaL–-à”h„ÕâšÈ gwZ’å2cüŒ\¢„ øËMB¸ô‘—‡2}:s¸ñ86C«vÉx« Åí¤i;¸ËaÙe!Uí››h>IÉŽ¶å„7ä¿é[å¬Â!ÇßÕöñ¦c¨ä›:—Ï$›ÊÔüAáA”Ëij¿ócƒE ν$úCÚùDPjï`ž÷3æýê}`ïb;€”ÐBV*RÅQÇi¾\g#ºè–õþé{YܱÊ«Í4ýí ülŠn6T4œª4•÷°£†—ô¢ŽûeIÉ쮂~w9ªÍQáà)¬Äq¿ã²!Kl©9yd"˜ÊˆÍĨµ²¤ø¦êAyY 8¿yU²;޲("KÑö£Ñ¥Ýöý±ÑÐ Aq::ÜóÁ&)|5[yó>×䨶<ó؃[ˆÜŠäÇRCöb{{˜–BŸŽd—FØ p± †ÁXɆ(œUÕXOz§ö¬­µÓ'Õ¡Øäé.Kî¡ ªÌíMlòˆøÁ—û\9V-êˆ#t*ºÔ’'0’§\—'æ•|ÀŽFã¤$T·Pjôvjgé»#óNw2P;û½Ô['жÏÝ.мˆ‹‚‰e»8%p vl"# t™øí FâºG’\4œ¾Ã RÜU^ièÄ6þß´ˆ;„ÀØuðº¾jÆE˜†öʮŘå`Ãöë|çŠ,ï åGîi;F“£È¾íèF]ÛOë’*—g¥¥3„aÃx™¯Y%2Ê3l÷Ÿ2Ö¹I©æÒ ²fíMƒkqÓ.òí­¸Ø÷‚_] b^r`–D™É¢¸÷е¥rQpK+¹Åަ ¯¯Ö–¥ÕZ)®÷¦§[*”U}’+ß$‚ÄtR—Zo (Ø/ÝUÅ™îÍø^i£)¦" ~Å+;aPÞŽSh\bÉ )]^œ B]¹â°_ä¡¡r³ÅgëÊÓÞ©Ýo-H_-0*M²)n2Ö½£™Ø ØAÎfØ¿ï-(1Úƒ=Cü4 V(¨ý݇ô([å¿.gßw Ž ¸" O Y³HÊlk¸7•Ö›¤Â¥Uë ÝD½çÕ³…%9›Ãj«*;‚ZwÜÏŽ/ª®ÛÝ0{¡Åîà4¯2 ¥ôÒx¦`sùqÆŠ·¥ZËäƒä:éñ6óB{´#Îw¥6z.$µ $]λ`Í»|¬€¡J«J3v\,滃Q´Ã­BáõT¤]Ùm£wJ«uoº¾-ee“ô&Ý®ª 6¨ÞZ 6Ö¡'†;ðïT]Ž¥ò>ôÍÑ» þ„ƒ?þPppÜÀ»ÂAú2EòV¬D©ÑÛ¾?3†â@ÜÃZ…úÖ8E.?¶¡czbõZ"]P÷‰ô™aå¡4¿v»´rÄDMn³-®ñð ÜÕt_›©ã]0¥«3²GsƒÛùjJ[ióŒõû[)í-ÌŠØêñ¹‰ÆhžÎ—¶ÖÀX ×˜É‹)1®.yíÚ†ý¶»¶»Làb›%jþèžóNU|Õè”Õ.ï]¡™2§*w»Š$Ú~A%ÝÔ[•u_ 0³½Ñ Ìh‘JÈÌJý¨ôžØ²"ê+VX'¨õ\èSeå‹8'¥4Ýü*‘_÷cwê«+ˆ­Ë™OZf øž–æñ¨cø Ó²'…ÎA~%U,ÝÎ}#=uYš¾É&!v錜ßÔͪì™Fü}D¯H‚¹i¬ª!§½øðƒ-¿Äv§Pq’ÏVi{5µªFÖÜ”cd—“2$æƒÒeæ(ÖÐã“Mé‹âÅ2öBö ¬ˆ•ýZ Õ0{y]}š§*§‘Q9}©¤î‚/ÚûÉk}{5ö'ëÂïÍ€ÈÜYM@Üe@ÑáM#_È"Š©²¦÷!ƒ×i&{(`oä°êVê¥@šF u %3¿Y]InàáÌW(ràêhŠ¢"¥D‘Qeö9rz)“–›?2¦¤„ª¿¶Fô½^²…ÄÉøI§X«nŒBÆKöYÑÀÜ·öÆIîO–ÛÖ)b¶p·Ôn<.žåF>z&sm4C*h&Âü »|NDæMäM*•O 4÷\έ¢d CSi›ŒölƒI0‹´å³ôhØ~4×2˜5AÞLPñóh(;©š”V†2zq¯BÑMj‡þ£¶Vk…~q¼V¢Ú¦%J×tûÅ9Š5ÑrEJ t “üò¦ éƒm6ÀšÅ="»ç)“z«û> stream xœÕ\Is\·¾³ò#x¦2/Ø—CÎrH*‡,¼¹| D‰r,‘’(/JåǧË{íÍ›áP¶K Ðht½b>\²‰_2ü“þ~ùîâ÷ÿ²—wìòîâÃÿy™þzùîò×0AòK?y#Œº¼~}¿É/¹v“öÒ 91+/¯ß]|½{{KK§´Ý½ ½qb÷Ã2ºLøæúo°6—ÅÚn2’ñË=“V†_^ߢ×ðÁ¤ôv÷æjÏ&mµƒU_]íaù‰+«Â°”Ú Ü>+Ã,3°±°“’F£oñ‹zòÞì`i%¥U~÷:.ç¹Þ} “5óL¶;êIH³{Äakátn÷}œ"•ä»dúݲøÇ«=Ÿ˜‘Zín–Ñ÷dò›¸½Ðr÷-9Í}–~*ƒ\ÍÛhï‹¿ŒßtBëLlø&™žÎ£¤uyÇá3aÐ}<½4ª e°'ýü»«½â|’ºä]å¦Ë+:#Q%…5H ÂÁ?ËñøÀ¸×„p²ÊÃʈؤAÌXªwñ4À‰Ý[²5ü«\ÉãÂ{\jŸ× rªu’Ó¸½bFd¾)ËÃ2R*оz…RNÖ»úòç)ôR:l ó QÆ¥™€31Ä»jÅ0Èï›H¬+äôS4~]5 Ýäáj ¨çTÈr•þÁ(бe“#%p Tz²0û¯aš) üExP²ä(ýá&;N ÿ#¢•h¹_ Mâ(E…àä“7Ëèívœœåo' |Y#Ü ‡çñÝð\ñúÈØ¥Ê‚þò1¾‹»ÁüúraÔ ±z¹H¦²‡‰]×O‘>EM!„Hõ-Ùü1~QhWSÇë" T3¥ŸÅ$Ì‹€˜i-&á³+‹O Ï(<>¦;¨¤öYï{‚ 7­33ãc¾jV¢V „´çE¢`*×ú¡ë|\F?­J»P°¦å™2Šx 4 Û„L'"!]mV‹Çøß\¨¦pXL΋§I1î žÈÑR~OzA|ë…Ó¼€³­鋎éŸ+æ†úBàÐd¸ìk“DKL|¤ÿ.%n»}Ñi¢_å1jH)Θs œÔÆ>OÚHe®a……oüåÁ¶[’@÷°Ð’8køX™’À×±×§€Eø)ùUøž1ºi¼'mµyNÎq5‡xYÀìŒ$—ª±} dÚ.™:\¸Ø©å°P•¿#YÒ`yªps«åÓáôÏiyÀe;KH~t*…cä8ƒÐ–Jz'ŸiÍézÈÂò&Óü›£ÂõÚ††=*Æýéß¹à/%—Ÿ+€ Z˜DÜZKST鶸Zñˆa3E ¾$cZ<ô(–ÊÂ.ÑY0(—Í)>çúJD’vÇ¥ÊΣR˜xÉ|, i>q/RpG{Z›9)fcùu­‰Æi¬É°Ÿyö뙣½“(0àòçÉï#I=å…ÐWša†Ç£é´šé”_qB[œ–0á#;«œXË'4šý ôËÚLÑ]E~É™ŠüoJÎì\›&üŠ È•í TSð'W4¾+ÓÕz•L+/&ÒAòˆN¦¡ -ÑÔÞ£ç Ýe:ŠÒ:‚R@¡ž¨çèu˜ÝWx•Þ)ÖX° úb¿m9¼i 7ÐJ§ Këeˆ<é‘çh?~«êã«aå³ñ8z¯°˜4Ko3·‚enC¸AÓ‘ZÁ5õ4*‘µ“—É(­#eFÇ uAR~Ñ+·$óÖ0”ÓPä5'~yå%ìh(“(%×b«ï$’¡Z5)!ÚáKŸ•Òý9R"›—:UiÎÈt]ÿ\‘iô#ôâAžQ¦ÑÜëqÒùÜ@†XnÏ…sÑ¢±éÂâM¯g)ßS¼£‰ç‚‘º|‹"ª¸ ":fÃLé´Lé—ŸÒöAª™n²,ƒêRЄDòŸƒ „¸šò]¹¢œXc©Ô·ý«J’”õÒ™Œ^(nyŒtéÓÉ­oh uv#†­µ|:ò)Îh×}'&ô…Èð(ýÝBÞÀ럃`ÙT†AT]Ïž]ÙÅù!Ù jUÊ ìlV²tI5°0YºBާ¤ iÝÍ’ÚIºDk±É¥Å:MîÖb¥Ñx›wk6¥ãw Å•|¢äƒÃÜa4¼ë[ŸÄP¥ªØ+˜ Ä íØk®:öz„tàü)Á}®Eêå¢#Åí6h„FyFhIAÓ FP[D!¥ÇLóÚ6Ï‹´%¹:ú&.¢¬æNceK('ƒ±·cï£*Æà äz"0p]pÂ`ÃDº°[¤,|ßz-XÚ­–À޹j*y¨P€;g¼Œ•ni\h¯]†ß’%ègôO¤dN¤†&ž†Þ-{Ö ŠgœÁ>\§&#eÔÓ4ümÜÆoŠéqðÕ¼:ˆ_ÒT°ÚZúü]ésq9Ö|Xˆ¼lKÇC_‚¥œšòBY¬N©¡TÆ9ƳÐ63+#áZ+‡­zÓâcçÓ2šq9hMòàÂçÔèWØáˆÏC ≠Ã3w|ƒäÙ1è]cØs»aJúPË|†ü¤´“k åL2¬ãlËêVuEÛ<_ï®i,Ç縉¢ pƒW z=GÑ7SfX-¢¯&5nÔ¨Ø7zo‰E£Ÿ»bçwǾ…ȬHqr<Û¯§æƒÚìéÅF!{¯å‚Çêâ/Ž~,ƒ ˜P…+pS »âx£ÁA H¿Vä%0³ƒ 1ºûR#htI‚of÷ýs—Boú:ó)•Mchõs¾Â‡˜˜W“ö¶ÊeŠÆ·›I¶4fzŸx(Õ(:x]M‰Ä¯l“ÐØçc”êA3«pؼetõ~NµBVÀV>§à½söû–/fhß2µÖ½Zr?6¥`F† qjæ3ø´…øö’gT:Ž8i@ ŠQfšç³lè¾dIG-Gˆý‰ùpM…¨b¥æ\ÛâÖÿ­fìt €?5e·5M¥Ó·Ç_N‹¸±ÐÜzt¡\AùO;ñ’ˆ€À×%N‰ ¦Æ<“ꦮ6dÄÖ~G¢¦lÉ!Ó e¦¼E/ðíÇàlx ?Ò°€´Ó¤†ƒ×´fV >C*J ´7“zƒÏGwg¼68xà!4`‡sG¿ÎÚb}2SÜ0{G…¦Sßj• ðbEK êCݰ–³¶ÝŠÄ^–0-19•ä\QžaZÚ ÓÎ΃•ÔZ$ÓÆ»½–÷y—ËYõ]Ô¤‚3Òúm¤:Ó#5ÌI¸ïu— ¸“QæÙ|Š…bêRüi1¤úÂ5æÆuµûþ-lÔgÅ'>ÿ Yáe°Ã?àD!vèc(­Cã@|SÁô¶„OîÆëj³‚¨Ã=xk³0®gÁChd'$õ pÝAáF[^7à`¯"-ŠÉó–uŽq8ˆ·E9G2¤–ÞnØg¥cƒc&ª)JÒ¾‰E’}r•£0ÃHݹ]Ú®ÙøÃg4ÆØŽÒ4àUšÕé“FßNH¯Ò6-¾„™×$BlŒ'„3 œ"ÅÙž¿šøÖì‹ÔJ׺ðð}ƒÔ‡Å¯£Ï ×ú¹Åš¦e¯•À¦¥•êàç+‡6ˇžË<:«Ó¢ ÆWÁƒÜý¦uPêÂ;ršù ¢“'¦h%þX¨[»qS·B—¨76hó£Ú~ŠUêaBv9µ+¿ëXWy¹q=ô Nø™OŽ•ÉŸ©7B¢å×_lqÍû?~ò.^˜uº¸ÓNo%[dàgÁä!?†;ú½NkáÒÓ(.Û¾:í8Z²9 ¾ÂIìkü쨖¸ö ®Wþ@b•QO|ò" vÁwKOÓ–p䪵RQœbWï3ÌxjÖ*,ÒüªžR¯;i÷ ÉÝ«:2ô%bž×O\Ú²ñ«W“ŒtèJÔñFØ¡ ÷§°ê! M7m.ì¨MG)#¡‚|(Å7ôÄû²÷«JfcǾ؟Á¹ÜøAGÜügÿåúâŸðçÿÏ„‚endstream endobj 244 0 obj 4358 endobj 248 0 obj <> stream xœÝ\I·¾ò#&—äM ×æ¾dEA_bÌÍöa4#Ï"kFräǧŠKw‘MöÛ¥ ðÁO6Y,V}µ°ÈŸÎÙÀÏþ—þ}öÕ·öüöéŒßžýtÆÃÏÓÿ®ïÏ¿¾„’ŸûÁaÔùåë³ø%?çœæÜ 90+Ï/ïϾ[}¿º€‘¥SÚþpùøR9ú¥„p¿¿¼ÞOkZÌêùbÍ¥„fõþB³>«+l•Ìû²Gº$JÀ%‡þþ¢"„KÚ†²Z;íÏ×\ Z?ûRĤð¨ÀŸF{¿z¼ÀÁ•·zõ©ÐÖrfWïâoíœX½ ”Jm…]=öÛ‹51H§Ó(Ò*_ 7h'øêUX–a–™<¥²V>vŽ ×0¸¢c¤ÎØ:\¬µ·ƒrfu “ÒÛÕBÆ«‰Œ'l¶Ö8áòÐÌ3I×'þÓ©#¡@³Ö°ª‘ŒO8²€eÅR¤’|uMÚï"Ÿ·Ž.&¥$4Óan"ÝšéÕÏÓÊÞ’AèÞô7$ÐÈM·{f5Å¶Žœ Ü)—),ŠŒ‹b& üËŽBXM0~Õ[íS$Â2•É—ÂNÍÜ76L;“÷Æh&‘̅Ͻap&Š.7‘.ã#ÕëLvЭ“.\Û¬s¨’@Õày¹Œ¾üƒÜ‘.Èn KZ½ìlÙ|j¡§¬è ÄÛ™´ÁV>̧ ¨È¢ÚJÀ W÷ðƒ¾‚•›Ø“¤GÐm ºÍyæsh¦Åµàk-Ô#Á ®Ò|µ œ^_hdؤaÄͤß{¡`‰7S{C›0ôOŸËW<´s.o!µÐƒ‡Qó4ß-³Q ÖÞ¿ý,+V P×Fš~Øi¿ +ð€ÖM3Šk<ߨ¹ÊÆþ2A%1]ÄtÝtÔ®¡<¡@5 j„ÂzZ‹fèŸXýàžS;B·‡h,±¥æÀP]¬ü16#£ìEüRöLEÇäË»’Ýa”¾ÆF ›Ü7nivïU1åÇ ²&§Ì¦óQ:æû‘v}4d~”BЏùŒg§(ؙבglc_B‡ÉâPëS˜¹†ì…öö0-…^g²K§n\,ÕŒûÁi9rã îå~Oz^À¤­µ€€g½+69PïÜCjP>µ7±Éâ{Wî3Õ$êuàùG*è÷;‹¬âœñLž´]òÄNäAtѶí¯qGót½ 4àó¢ù ›a`P]êeèh¨qp—žŸ)‘ÂŽ4§ìÍyU€æE”ê$ÓQ*ÏxüvHúÞ÷ÿq~­[ša}ï0 1óÔ}G¤¿ïÈ tÀŽg•C¼)j_µBoaÀ@i¿¤†Ø…)ì@oÍp]t˜»œ• £\¤³tŒ_% ÍŒ t>[(;Æ ÜÈÊJàœØ¼HYPûl41]ËNŒœâpz>Ð c(g#IÕÑÀ`yΔƒ.ëz06„=W]ñÅYXeŽÊÞ±‡€$Ø;0œR@“Y'u PÖÑÝ¢büœ¥Oá]ºm¹•(† n§ŸT?Ò²êx 㺴ªn\GC!äš¶W– .•êIt½‡žÏØR­;œÒƒ…P-W’ù–6uóm/*Â$˜rp†çr‹ͽÞ)¼l­õ”KÅ „ oÀWÒk¡Aª}¹•t=lzµDAǬ#A^èˆG ËЮ+/Ðx©R‡ye‚*[ "#ˆ€_Ÿ²ŠBâ©y=g±ÚµR4²³o—£Ö„U–UÃQ˜R{å ¢vzæýQ1¹ž†¡]f)ƒÒÃDC¥þæìò7;z¹Ù/ìfÌ &¿ë?'ËBd°çy¯Ac˜ä²‚°oð+. +}˜Û)Ø¥@Ô1¨‘¼&!+…|oÅO¦¨Á]AÄ—Ü5ˆ •;0ºÄ¥4hõzÙsÀe7Înx‹½\B`Dß.¯A0ÔÜ[Ælu™å#¬ –øÕ´L:H´¾J2ÛŒ`@‘ó]© ¡ J-gÄ6 mhÞTyÐYÆTŠ&èÄTÖ;·Eâ(^4é¾'Pš|ÀÄe}™û3L{¿4®ÎÉ`®WA@H éÐà ø·|ðB¢{h%ì>ð³ þêÿ•Ðfîúž¡ ¢ksJH´ˆà~‘®N¸á(‚Wˆ­x¼±”qÃ+÷ã$¨@ì˜5$âüÊnRÊ ‰ ÃdÃW$Ü]tèÀûRÚd™ýEë2¼ÏìQ£þ:IÇmð ©hëlšñ€ Ý\igðkø¤ˆ}¡Î¿›`ìií6XÌ”M9Íx°1§Õ%¯”ëˆÁÝ3Új»k§½ùæ9<`.³Í_žø˜©J§šÁxå+ûX`&!(ñ¦ÜìÒØ`îO fÖÈ]:ŽD¨Á ~ %~¼Ž\/&¡ÃìNË$ļx Qa’hú•pco§ Xf@_”"X†‹”LÔXVªG¥öÈ–Q_ðÁ:G ¢Ú<\u¨_¤5ñD¼¯ÊÂ''–!¯®&M¸+¹‰AØ+i<º—óôWæÀÐçŒ}D´äÁ ¦RJ_ œkìÈ1@µÐ&¼Kþ ±½‘Ó—J6¹7’HYò-~"”÷úôÙ)Àa*:>R¼ˆS€ùŸ»H±ëÀæv(áËGÇ52ŸKUž½ÇßðK²¦ð‚.À¢ÞQƒ¤6¡D!póSº8úU¬­ K~‡š ËeOÁÞxì>¥Pƒú¶-4»[էШf2z4r¯“ «Û¼“ØÅ‰Èêòlaž’Œe>o.¶e'æ¸,V•†{i! µ¢±—Õ͈á^‚_gʰî}lÚn»—VÀþ{‰th=‹JuWij»•=ì¥H ?³™< 4àANm¢a>½|NiÆ ²Ks‹& ;0ïx†!ËùÈ9¥g“€dŠe~ëÄ$N_&vê²{„Õ€™[bPMmP˜0GÏÛLhÓôª‚¶¹±óðgU×]mÙ†2¥.R‚ „Ûб8¯bæë[=¨ô¯kK^zô èfÄŽß_, U®<:pÙ¬=Û4#»,GGëG˜°ýG·‰$Éa_§ ?îKºîàv,ÖцÍ2»[;ƒ4m±Ô-Á2!÷Ëm•{’]E¿,½ìÀ»çø4Šé’×Ũ<ðçè0gú>_:a†ºR/báªrªòì6ù·©@•o[xŒ½Üªð‡nINކöÍ@_LJù\sQ]ƒƒ/ó9Ñ«1ÖÖg5 ÒœZ§¯Ð`}¹= êÒ¦WLØOíwå†K*³£]U² ‰ïqã9ð»s 9²xf„16±¼%©:pì]«Có`§ñ–Œ:b¼;VAVb;_–”Ðá^ݲý}®¨.Rz0 Cá¨õ.ïW]Å&µ (f¸h§¨FÃ3 %ì®Ð ¶§Ö»Ä6{ ÇoþeúAÁDZü«Â#®˜Ð³7‹}¯ð¼UU±p¬½Äé1 ¯ªôqJíA+ðA‹/T§²ÅÌV~;’ù­ øÌ:½”!kαŽr ›]K`¹„àã(à³VÓ&_ùÐÜB‰Î¥Œ*žàÎr¦ö1FqmsKW“VO7×™ŒR¾—n%!.ƒëK3L$Ò#¿A°Wÿ&Ëèèôcº"\1t}¨ô»‘RÖ›î6ˆRf+²ã†Åز(ªyÎH®·ûâ&Ùx9ä±9ÜÞe‹›AÕ1Rà±0Þõ˜S5§²¸Ð}tÛ7^QaÞóÌ?N0Uû,Ç‚yiàãΣôØÝæô­ÒEñ¤´Ütñû>ÎýëM†V'«1™Ên&®g‹ÿéÝîy_Dºi¤ñ? ÃõMTc¹è©½€ñA€#‚ü<ñ¬N¦áTÝOd¼$0ºJ‡¤—MñnÞjVªåt6Ñö4HL¸išoŸ95ï§ÖçEiÇCyië´a®~ ÈÀ6 TÙÝ! C5*¦M”¼<QcÉFoU&Å83×»KqQªÌ` Ί£±Bz -–ÝÙY4@ÈÞtÅO ¼"³?à­ØbZcgìÃTïèÉVµ¾Ûb ‡%¹ív“”¶<Œ}‡0bYJ‘P½úiíTø>§Î²Ã/çb1»‡ûUÜq¿7±Ç ðÂhr“ûЪï4F·rç»Ñpƒw­r¶1Ýd­L@÷#Ý4Žƒ•2Ú`ÝeôGÛE·‘Wx[ÿ9ƒÙ7 FŸÈ|nd("ÞŒ ï&Å?!ÃãÔz½½+4ñôá@Kºì÷O²à37Ó½›VÉÖ¾[?Mu´wë ç±(K•ÎÓ<¦z‡«eAI D‘ÀïܲߨUÑ}€¢#ý~#j‘´T­çÛVo"¥l*ŸÉŽ®ï´÷.{QƯŒ¿˜HìÔnP¦6.Ï„ß M‚à5>÷ üŽÁV}â‚þß=wRÅ~VN³}Vë0r…«s­bšÿ&Eš¢_rC‡éÙ® ²ê‡7&—êè*ðTÎéÅSy„›ŘƅÇi `%þõÕ¬SëG1a`JŠìÊü3höñb€bµ“® µ$‚ØE¸£áQ$úh2¡$þ‹j5}V£sÒ~›WµÕÂÛfŸ M¹ñ.~'½¨šÈi^`è¶ I–†2´Þy ôph§Æïêšû:ÿ¹4åÛ5O¨D¾~±Ä»g潂§ ;IÇÖ3à‡Fã·ÐýÌW {ÂYÆÊ~¾öÅx¶ ¬÷ßÇ€Á‡XÖY9éØ:» “×ðN 7êEQ\ÑSëmtÓ$%\nØ!ª>ueãÿ²…û²Ãé¤éh7­W˜cËâƒ9r·4Q¯6¼yp; ë¿ÀÁmŒUOp«BÎeéÜÁíZ+Ëoðñ*¦ÅfÁÁGΚÌÜ#î×@áòS>·Á¼È”ÛoÔÊPÉ¡)ýyea`*íò**i¶ùѸyõ }9`†ð)ÑØ”-íÎ4Ò.Ú¹’:Åo½šM<§/ÌݾCèˆGMg¼I$OO3cIë˜Ê— Q„°¢“Ü^_¾LÆÛž¤E–¾½\Nú§ªøÄ˜¯q «Õõ #oÑ-áà΋·ej7˜# ãi~«YáÞ7nÝ7Ùº„ªÓ6À¼pâ´„Çø!GÃã0\óѰÏå8òX7²óQ î¬n•PæÊØÐCª2³ç3ù¹/kñm¢,S”̧8€Vú€dó¬Z!ÍW‘íxU#ÔQ€cÁú‡õ¥r‹€ªµ‰g¼¬Ÿ›©÷é¼yW¥†°bZ†˜!üdNvI?§ÞüKÆ8Lí,ªÈ~ÎtO!iéõæî\äÅMäwå:§Û`º)Ñ•I@ªØXïSUË…L³Çx:AC:ûˆ$ÅÃ’•iYÁ|w/˜YŠRLë¤]f‡hÐ[͆À› 2^—À«ÈÅQËüÁ'®T¸‘x·³èvj¦+ÁˆKlV4U™ û¸ëKq½æxGyñ"Hƒ¼êU¨vieù>ZDmU>eéÙx¯ÌjØiiCu£%°ÃÑ7Ûb-¶2ƒ3üñ%‘•'ýøûÿõòìŸðßVdmˆendstream endobj 249 0 obj 4304 endobj 253 0 obj <> stream xœí]I“9¾7¿¡¯ w¡}9Ì" ‚ Íià`Ü^&Æíö¸í1þ÷d*UU©­ÞÖÍ Ä„~ÖÓÓ’ú”úr‘üý¥˜ä¥À?ùïw¿ùÚ_¾~¸—¯/¾¿éËËü׋»ËßÝ@©/ãræòæÕýR^J&£ü¥Wz^_ÞÜ]|³{u-&ëmj÷üJLFkoâîÃÕµœ„3ÞóÒ·XYkë•/>¿ÄÏÆ /–ë ¡I·{½ÑžT1Îkøçî þNLQîþņô-ëe{¨ÚšÝÇ4+¢Ðó/ƒôaX~ŸZqj÷®í2UxÇø¨&'ÍwA•mç¡X˜Úó¹éü½Æñ‘œlPÖrá|!‘-J…ïfy袋7ᲡýÉ4›wÿŠšƒ¶·©T‰¡£+p.ªQŸ<ºÈeÃ÷ù,r÷ Þøµ—5H ¥ýþïüû›ôc6B±§…®Ü!³îG¤wu¿ pH÷»¨µÏ«–ÿ¶Ëú>®߬¶O-'íõb6ÿ€•aû;Ÿ•¿”Jey;°ºª6XèápÕ¯‚œŒèn×¹º :÷ûgÐÉ %"pnŽædQKhŽïß»«$QëâÑ{và@æ+¿ ¶Ð ñ Ãw4wo7Ï=jÎ>–Ó3IšÛ?<ú,åð@âÄiT¼‰WT(ƒÏþ šr`ev:IÊÿEÞK0lßÝKÔ‰ÓÍAæJJ5mõPèÎì­¡vK´~Gƒõ%Wà':*’ ‘ƒLGXÒq|ãeþ¡êY¾õ uA¾g1K£¦"æ1­èÀhV¢¦Ö ç#Õ¶ÑV¡Ÿ®Âþ’%fÌS@C? †}ú®Pƒ.‰ÄÔ®r¬ƒMj°¦6¸ä³ÛN ³Oœ~Vbqäôä<„¦'m;F“`µáð€ tzF|urPqfˆA5z^†Ìm豫°a {P@¥¢F©Xï¢zÄGʺl“Wb0¡ã{§9nØþz³¨KFî»Üòã4í¢÷*Á²6FNÝêTiVUQgåeU5¬*éÎ4öžîäì{^Ó¨Qt …"üù¬ä,×s¥ñ¼Ç`–¡7|4¬X½åWîñ‹] k¦X©dTj6JÊSò%áÌZ)Ï_p¹`˜¾³eNL°Lv?Äï/ØpžÂI¯_…Ó¡u0ÚÑmÁj áЀ&toÄaÞåºG½â줪pD n¾ uøŽ³›V}ªÝÂX¬•)йZ™ç¬äP1¿’»l:#r³î Ä6ùŒ¦`¹ûïK&©ætÉ*O—ýA§V¿6ªª‚¤p`6‚f‚¾û†ëõwZÒøÝ?YgÖ°ÿñ¡ÀºÍ1&ÊÜæÔ áeÁdøœlØîI¿ lJÏ9ÁPi©‚aËJVìK¥¦K%ø‘éÀŽšž;$âP(t¯†q‹ïÙ„? zª&¼ôúŒ"ýBè¢8ór«¨3Ìù`)»EG“,{X!‹x<ÏÞ’Të I¨N·I÷<°1™xÚq#­SŠŒ³ÁÄeÅS¢4òtp)1cÊ;P”nº§ƒÑ†Šèà“¥ûtƒ#ÁŒô#Ká–¦#«éŒŽ„¸QjÓ^¹©!ûL6ª»'Z‹Üp: °çY«ûIÉÈ|æ4þØÿìlL ¼’„ƽÉÏÖ C*kp꼉P$’ê+)Ï;.cÍ—gg`$z¬- èØ]»÷L² m{!¹¢ ÚnÖÐú Ì·Ñ6íò –•c<ì"V*¬nºò€çý/# @åôQŒbÛö‡*ºÎ‰¬=Ó«èขÎOíÌ/+S2RÁ4v ñm¥(=J8}G-y¦fÎ?fNÎ3áöÿ+¨mDjigƒž4ÇóFË6Ì{q×4Å]Cœ——áþ¾©ÆäžÙN¨ÊΣ3O‹˜ÒžÄ8Mn‘ÐX ­05<[ƹ]ɵáºcI›»0Ɉ“H‘ì!û>Ï}38”D¬ß2umPk`ð¡}0³I¢‘ç&2Ùfà¾åPþH]jѤe9¼W¦½½“DÙŽ™b½3šOѯÔ@ɇ·®Yòxwšï›rîÚ9@ŸéÙ cýr W¹úß¿3ÄÎŒs¯½Ád1ëûÞZb™ª,õÕÕIwè’‚Vú.)üá*H0ãHQâÖ-¡©¢NçN•Õ$«3þ„­ŠfB+ñX{) *¸úPÁQÙpV²J%lÝfuRfæUÌìq’³pf&ùÖiÕ•g {”Ic“ “ zzº°¬iÂè'?[ø%äjk]Ͻ•ôùæ “Æ•%õaôdBkj)¯†Xáóþ“e0?ÇìËíÿëYV~Ö.)®Œ.4eÕf M°+€Éwæ^EºÉW†ùÉ s®J nîf‡ô>¬—TÕVk9¨îfÐË0IY?ËÐ 7ÎcêŽ#ðtiv;ìåúñî˜aìIáѨ.0èÖ¸mlÔ&B® =V½ˆ#¥³ªÎØjTmMÞ’É'cûn ðIM®•“- {N›­û<Øœ³M¢òS=Ê8åI:u¦üVl4¾,Վ󈇰RƒËç}¦óyá/óôygÊïK†¸*ÔhñdQû&º˜o­¢]=ÖбoÌÊô¢Š‡Z†¹…Òÿ6P¤twEŠ1¥åªòè$=.e`Aè!è]܈ç„æ+!Ònªa¼cÂÈòŽ1͵Bº6dG–áè0«ß]À•Úý1U·ÂhêQBéÁT¥ûDz4ƒ‘SíYæ€ýä§LtýgñTHS(Ãü‹Çd>¸Îu—e9´ß•îé’Oä¶J:0Ÿ:{€?w›{)~e£N*}Ž&0Ìúz°ã¼¦rl¼î˜)Ð 'ÊÏÈÂ6A5Jû‹HÈ’u£#£3l›päœb¶V:TÏúZÐ&ÒÛ¢ÉQœ$S6~;´ÓšSg“€èwHèçÕïð@íÚèx)‡b9´"ÙÈ%Qñphe“,ª^4O„k‚ùgãô†¿âžù¹·úxî4·ÑyHî÷C¢°•‡hîöˆ7Þ¯ôó•ê=¬¥ìãWK…®‰ tǘ¸¾¡•…0°±Ò‹#Aj“B1z7ÁÊ® 8‘&ÔgÞÖmP‹ÜÛ7"±ŠRÃm–/}œRõag1ê螈£à€M•A–¶‹’)'\«á!cÁ¬ÕŽû-Û'ùôY䯫4V91³p¿äÂm–GëÖ{!msöbÿºBå˯»)N;X_·±tˆ‹t eàHíø¿VÏfn¬<î2²Ö·í8²däÜ"G«ÉŒ“zòâù&¹¨g×Ñ£~nŠ%7KO(úÉíÑuh:Ë»Q²?Ïx}C¿„ojÿ.”îáù0(ëôa×ZÓäñ¯àØ\hŽk’[Îö#Î.Ñ3²•7’&ø1U@5;­5^2ý´ÄCÁáÙ¤ÿå¯ÇySzïFÙÞÉc\ÈÔŠlH,ši¦“J²à Ÿd{xö|oÏ( ÖŒÚý} Ž|†9Š8F‘‡äœ;äÀâks‡6!¦zdǘI {8Ç­:«gîD·f^žçV+‡ÑI u¡ͯØnåt2¦UÍU'–pœŠô&Kïùdo¬'û°IÛ8D4pDyvÀ=óÚ°I}?2^ÒÈaÄÍèÌýiòX©CW9«p^ªz–t”Fƒ³#gôFÌ$ùyÌlxäk¸­‰–e—ãÑùƒ¢²†g¾§³[ŽÞ”ØwG] <mº£N¯8ÎöíyG=xØéê´'h°¹‹øø'hC˜|×Cr ¯án='Pj#¯ Ê÷&2ažÕ°óð(KsyJEܾ2U0øvö⤰· êá4è½Pò˜«”öÙ¼JڶΞ<ŒR¡÷Q½$7tCæüÝ&¢¬UæŽ\r†þÇHnx^»[ÒYùâ´³òÇ}’UE´7¯F€†L#ÿAT–ãÛpÕ9‚£°¦1k ØÇÃnGÝÒtk0ßS1¾~üKï*¢¥»ON#ãÙÓ?!ˆ#°¡¼æÆ­Üý/MçœKëñMç¹#Ÿ//ÿó - ¹(åcjïÒQãG§ Bµ,Ðݼ{¡|L¯"¶Áv“˜ .XLó,üOõ^ÿfDs–„r½ÔØ4–ÁZ°Y”NL(d©€m¤xÜ|Fº) ×1¨ÿËK­Üö`½: ©³ÍK…ùÉÛ9–8ß- R+0£‡´WâÀ]Kk[9‰xZ »áÞÆÂÕ7-7@Êr]7Ô’¦ôg<ë\%ÅÌ8 îз•E±ÃjRÂË õ¦àŒc/¥Ìû…¦ˆQ?Ó*öÁHoÒâYÞMîbøüW'ù¿a¯žDãÌ$d¬OeƒðöAºå"$DTç0öޤìœÿšÊD—’ǘƩcÒý±î‚$2¡*ë~G•µãöØY =Ϋ.3ÀÞ&n땦ǒòÇÏËÇ®…‹VówUN†üº^%ÒiŠ ÒËhÁ§xjv| uäö'÷¯I1ÕêXÖBÌîž?bõßß\üþü€R_+endstream endobj 254 0 obj 5215 endobj 258 0 obj <> stream xœÕ]I“7rö™áÑ·yíP—±/1Ù1vxBvÌB_,é@±©–bšlŠÝÔ¨õë  P ²^½^È™ÐE,‰D"óËÐOgb’gÿ+¾~ûâ_ÿìÏ®n_ˆ³«?½éÏʯߞýÛKh åYœ¢SΜ½üþEî)Ϥ “QþÌ+= ¯Ï^¾}ñõáò†ÖÁX¸N?£ êðfùúó°Áïê×o_þf4Ψ夽0ëËK˜ã6Âx}ø©:|8¿Sð&X™ÇšŽq!Õä ‚?¬q2õìe½ ‰JømœðÂîÎ/T““Âg+¢Ð‡Ú橉>¼*|RB~ÄZéšZk£eóýí¹ ÐA>’áÞÂpQL>`Ljk½ò Q?Ÿ+?ílóõ鈰îð 1Z{ß§1Œp*4+ =?äž öâoÐS ­£oÖø#¡ä5În­‘Øû9a¿—ÆÉrß“ït9” ¯ )™r§fZ¡¹if¿Y–ö9%±QÓâ6ïG± | “_“ÉopŒ’–¿$JÛ˼Ö†y­¼KsãÒ½JQΔS0y–ͪ€¨²óÌHœT±—F.œ ð×ÃEÞ<-|Ä9.æI’ìZ[d—.þá÷Õù…vzrJ5Û»-a óÞe¸—±Ùºü[üíáÀÁå7œÓp˜Î/¬6“‚±¿ÄiÔMÁ´f²ZŽóTÐß`?h®ÝT"¯ùø:×(a'éÍÌæJ‡k;:ìŽzzn- C¤§Là–û‘]zŠnóˆQ…~ð3lÿç:Ú9hA1‚ìM6€øÒuD&Q5‹ œèWcñL§DI ðähi÷d„Û<·Ó—˜æ+mƒ¬Gú{ù– ×Qé"߯çm£*,¯ÒDoéRÅÛ^ ‡äml™Ú¦¤¢œ6ç’Qê-;k×ii’%µ5¦„°t8Ud6-ý²7˜½ý°ü¼ûŒfÔú§1£´‡œ% „°XºG„;_aõ›¬²Ñ.¼Kýa€ÎÄ¢¦š;ÕvŠ)™WaŽSEרšNVË&“e–CÃ’4Påx”NVå8¡€uQÆPÙ½d¶òC-gJDã{ת°,Õ‰@¶žÐ*øY$«,˜Ç[Ì<ð~‹ ú"€¾x*‹‰ã)z„‚ŠF¹±ÝóŒŒ*ÚÔ~6(Ø¢ý8+DFÙ䉚BÜ<º¸[“E¨}µ"e–ŠNo©Öv«š¢bHæä&š):A)_/:÷fѹ[¾n«_%¦(Ý,ê·ÈÒî {Ò À @n Ø^%EŒm‹¡RV“ 6šS”²LmS)CiÒæ#eL1 •H¢¤ïqdÈÛ²““ ¼Ë­µŒk¨/'/[5F`å°UËfΛ²ÈNAñ¥'ì=1:iç\%r¿¸ÊÙd…†ŽÖû1/ÈØ™tP¸ï7ó%÷EOZEªT¿ÏdËà‡*Z"OôÎ|Èõ™O{³VÖyŠVYsÊõ.kU£Þ:ù8&³´9ݪ%9¿ùrŒWCÍLvŠ •ƒ/ò6vâžê¦üäÕ»Æ}Èî,ð‡qg;Ž@/˜ÚžiÀŽ€Â;€„e—ø“Šdù;ï¼~¿ÊÒkÝLuÏß“{A”…¿üáôû˜%QøåU±$>f2zµX’»‡Y’l2´Ò0;Âa8©}âÚ=¶°ØÀ‹á8'›´yÕZû…”XíLäç—<„ˆA6§¼¢ÿ.ê¦-1ÍÚ€ç0À);2¢³º7yíFØrÞ7]%è3 1ò€·Ñ:öÓq6Ú½'Ú¦b+ÿ»U <£ãfÉ’Æô‹Mý´z¶3Ðåe…£ØX*Úšþ¾)r ºKU7ó./ÏÑwÃXUÆÜ©FÎbvÂ8pÿVxŠÃ¸Æ°èá ê×Tg8£2Æy¿](ix…')ÔÖ6Ó$¤:|s D­ù9òœ°k¦—/Œu:ìWÇ>ͯ¥M(!‰%p@£á”ü]³Ô^*:6uÁè„oÎÉ(È@¾`NÝž—E:/óF i8®ÑÖ­VA½Ë¼ Áu²—8µûf,ö™Ò3‰2ø¡å²9û pØå¦lÂx)(›‹Ø£š¿`BWøß5¹©\P¨ÖÊ%;žïv DZ£ÊAì¡ß@æ§xþ6÷D,²/Ìœx)[ÅAÉÚÀVtkq˜ Ž„TÍ$‡>Úóšäúj-@êD—$½)ÄšÊϼm Ã|b´™Ĩlú˜TÄMm•yÄ`·í2 [XVdàòT Sø)ÚO 2q ÊžŒ&jôQ%†û$®F‹pœòdY pØÀ0¯’KüwÖŒä<•Ðv‡¡#¸C^N~ŸôOƒÉ3ùR2Žð‡‚*,œ1EPEÏÐ$ÉeË“É †‚7òp­G¶OI§p„Ô{¢OU¬€‘€hÕÃS-H3†‘úP‚A*ž%×’‚ïÒ?Qy@åÖi)¾9@ aÞ,1€U^„°Á0'˜ø¸¼bKúÜF<ÀXq["—šXÞ¬=Q<§ÑQ=™dƒ_Îy *¨„ýÚJXZ¥{PBÍ€Õ%‡pJõ RúìáÑÇÛ<·óŽ÷Ìçuu û!·i&ŽàÛA.¸id—{šÛµÚoÓ\öÕ\ø§{›"Pý q§ Z¼~îÄžÆí„ØðÑca'ãíf”7-È> vrûv$Ê›ç …³©5‡ÑÁÏ<À ~®Œ³èµ#YÎlæ”\‡æ|²û É'#6™M´wO†9ƒœ‹Ÿsâ*‡8£ÔjzÄ ã ¿Š.Ü;qB?tá~ bEqC@è䛚š(˜Ó­Œc¤pÎZ‰ÓaÏÖqÉ-[Ák«×§ÆW!Sˆ” «ij8:pîIø<%ÞVþcáM YÆg›lÎÉ@K«#È tØÒ,3?u)¥."#±^¤JäãQfôÇê!W2V²»Îo¨öŸˆ*ëjC‰ÆÁQ]Ý•–¯ÆGð [ÈÉjqÑÛëÀeò¸°÷Hbkï˜:¦ò4¯RËŒ©=f¶âgÌkã‚°æùT%šú9Iç»byG4]jiÚXWZ‹l–šwZ•äéX;Mt$c™Z»c, dc˜!P¬7ˆÕy{eÔÜ~1ºŠù¯«±k—±`«Žé«&åÛ­ÍêM¹¡Å@:îK?#Ÿ¬ÒYc÷–ù £1j³ÇákÜ Ú¤*ŠôSZ9¨Ÿqu!Á˜<4­ c.‚Á¯««çœÑ0¶ƒ‰‚ &¯;i_„ò2/GZ $jN©OoÑ‘J-:…èH‹E£Ey ‚’µÒ¥¥™¼<ýpk‰‹ñŸ©`©ŸrPm ZL)R…› jƒ#’f$©õÿ†Á¦5ÅL÷Ëôœ„tÓ0W#{3ÚÑèÒÒL]¬nNSŽãƒ•‹“’„IS8#Ú.¶šˆPµv¸Vt(d–ŒRe›§hÑÇZÀ:l<(³§ÅÖÖeH„‡8Z6Ά²5%ßÖ(µž6pÁw¸|n@ýbÙÞæ1DèËW`#Ðå$îj¬Ç8LÏuGUª‹Œ­­`&åâTˆ?äåÆÍŒ.X“x¼™®­Œ£U'òÏÕd ²ðÕ0Šñ7îmÚJreáÂË.Óv1OÜŠôï±82ºUÎF¸CŸîEûŽ ~ÂnF³Ë¥£Y»âia”(®b¯q¹2À…³$Ò@ {Þ1Kq¦]gŽ©Ï‚2Ã~@#pÐ7o& a¡âL±f[ºP9ÒÁQ#0‚Ï<‡nÿžcÍF¨ôÆÄå©âDW1ûJÌ:òJokÌÊ7ÉFªJÂkRf|¤Y¹‚†y cVJ; =\#uUp b{é°Òã BÌ¿Fh•véŪ! ôÝò9·x+)M Ž x*C „”ªRùßDšG]“1‘ÉÁ I—‰K…¤‡ï‡ßào ´9‘osI¦Ï!JWœ',ü5KKi~IðTë/Gp ޼°õRÒ×d›õ²µi…E‘ø–´8ZsjÂÀ®à—Sj¾Â)¤v‚­½Ã{õÞC'9ˆÝ®Ì sO¦³bÊG|¸ƒu†Khc²_Ï?g¹óZÌeuåÃûöt%¾;ÖOíß4€Ù±šâqÓã(¡»[ÊK¸Û¢en¼7Üj•D‘ôƒhU±Ž³/x_æUv¾‘ØåBã,?ºf¾ÌÒ*šþ AÍæa‡t‡A˜í&hâ„cce¯ê¥ûŸs‹UiÞV¦H€ƒ)Ýf¶ºÔe:ÖÙ8ü¼ý²ÒÜ“ƒyÃý@#uC÷xµ€8CÊå{êì­kw3_ Ѩ¥2r.Âkž¸ºm‚tJGÁb´õáþÉŠËŽ÷‹í ¢YêÓƒ§à Í3¯ Ô0=NÍ–°ÜÎê–‰•„™µ¹TÜæ‰«ðy¤×5ošu¿(´ ’³ëÒÎ(3 °$FÂa²aåG—-Cº£ogÖMÖ»%LÝûâÝÝÒ¡Þ²ÇÀ¿WAb©=´–M°®÷˾Ë:0päy?J#ÊÐÈ'Çi "*Rí¬&ÙÒd3Rœ2 ν¦{2Ç:?š§àðÁõr×è6ˆÒõø7Ž0@3>䋱;/Ø4•ÒûåÊÔ1ýûj¼é;£ÂXŠOsœö^ÊêÑ0¬#},,™C¨Ì‹d÷S%FÓï–¸èw}´ô³Üªrÿ?ÉSmÕ—2'm—Š’UMžŠ ]Ÿ®TÑNÞ¶f˜fH(/'ÓZÙ*Ðb&ÜœÎéAaW”‰DI§{û¬¢™b†ãò»¼„`v=·õ •*¨²Éµ-&‚BmD÷*.´Nåé¶°Ä™5Ì Lq¢Ú‚yAëmUØ^ÖK+ë$d+ªÆ^ý…’’sθðÍ´´ÙQk®Êt¿žâgþßâþ3·nr2јð`¨mï™y)Òu‘}®™QÙùHl”‚Uœè™¥©·q×¹lSÓßÏ_7KÛý@Y¾'Ûß›CVsõštÓÅNò×v»¸§ ïÎç,;b´7#÷8?qJæ˜ïØpAÓ®…¤æ¡ØÊpø¯ÔÚ £{K‚äûÈÖݬXç#´%Ð}¼™ç×°)ͳr(±q\y³¤I¥ä}Ãm'0±‰éÜAªúß×—nká¸\r·#Ø4Åxîöªäܼ¾Û—2yü¶{šœ¢Ób°úø­Ýy=uXèòsMb­u¾ÆÅŽNA'Ÿ@r€ƒ»¦=¸{ìÝuf×ràšIÄ}d¿Bꣃ+ðe*e¥œÊ›çÏ+©¿ óÁpŸ/¤´8ãáçZ¦èH*!¸¨3æÕ.Ù|¾&CÐßéÖZU^ Ð@©]Ìs“ñ§]pÒÎý’¬–õÝyhgæ”oi~5×Eæí7QÙ’J`~|¦Ž’ ÏɂܯE‘ôfôj¡°”Faw ΓXG,ÃX!õIðåC ³Só%&ðÿ_1Š nhJW±ÇëlWeì­óxìx(éö¦½±õDõ XD¦WN+VwE-9Ò­&•œéÕëeðÕ¹¿ÌýdÇ2üªÚ;ûkÅeÜÍ6¸ži8^ow©~žË/Q¨ý:sP ÷}Gý,QzãGùða÷“ôÝ‚ÊW5$+`VÙúØû«m¢ø: 1zE°FØ4¾Â£[çÜ€aÃoE_U Ãf­×eå˾Dºï3æº/Tž±L.í6§ÖÎFg\dAÏ#h"ßu°itKéØã¨Açf{0â¸Uø‰ï­³d©Ùi È] È#ƒ@뢛7´O¬ùïñæø¹ìäæ”ÿCŠÃuƒÉS±ˆ¿YXÖ>Ï÷û—/þÿý?«¡²5endstream endobj 259 0 obj 5269 endobj 263 0 obj <> stream xœÝ\Is·¾óW0—ø1¥7ƾd­$•J%åCââÍöA–HÊeR”EI¶SùñéÆ6 0ó¸<Åvé 'K£Ñýõ‚Æ|wÊ&~ÊðOúûÅÍɧŸÛÓ«»vzuòÝ ÿyšþzqsú—sèÀ婟¼Fž_žÄ‘ü”s>™S+äĬ<=¿9ùb÷îlÏ&¥™gr÷ k«»çgÐ,¥U»H©&ËÔîEèm˜e†öx{8nw_Ÿí…›´³» l”“u~÷žL|‡¿­UÒ:ìR¦{»3®wß`³”Ú [¦–vw;/øölÏ'f´÷8ç–Jòj>Ò¥™¯r…s‹És“©2N¸Š%d–¸_#òÿÄ*­¨Ð¦+ô¥!õ&ïpE=1æ)ûÈ"‰i޹Ý5¡šÎ7"uÁL³c/`*î}äÊ—;Ø'—NiG)GGéIçyæán[L:]%¤@j6ÁÔL$‚y_÷è$¿¬LýåYCHx$ş´Ö<û{`°žÓƒŒÚ¨¼ÕY½-½!"°¦wNMÒiªÓo’¤Š®+kL*:¸Äl…³ÒäÖ™Ýù,Öâ.f2žXýQOœ™€e= ÂLEìšüíB'ºH tk¦©ÂR­z ¬H#7Ãî™AÖTÇZ8±Pë¼MÄ ©`Þˆð/[„°Y€Bcw·w‘´>ßÌêWš¹ï˜vFUŠIæÂçÞ09#\@ª÷™ìZjÈŠXîP%C¶1–ÿ2 Åá‹dg;ÒÿrÀ¸C "§ÛÝÀÜ Ú«gÉÀ-h¥­ä¼"`šWê#¡š`&Þ á§÷Âg¼`%ÒPï5Òï½PÀß—sûýœ›ÑïO…w<´s.ïa¬Ð“‡Yó2_¬³QLÖÞ¿ý(;;P¨%…¦¯îµƒß…xÀÙ®•3<ÓZçþ:ƒ1:¯‰Ñ¡’Iu€ 5m¿­\WÀ2ÖãÚ"«Ì¤ÅîÏÈú»?Eg‹= ˜ê¡«ßÆfdÔ ÒÇ‘rêר;]³;ÌRY±Kl”pÈc³”V÷¾öà>œi5Á8e6]Ò±öÜq}­{ša½Ì÷8 1€˜ÎS’FŸô÷5™„N8ÀÑàfr!'‘½Le£d4è-„#XÅOénØÞšáz”Ìé›0ÊÅQNaàgŽB'*Ðqú&eǦ¶¸KyÈ.ëÜÂ{rÒ„ÄõØ$=q:U¹ÊÉßµ\¶w<…GP=Ò=ª7ý¬ÐÀ¸õ=…»’™x$cÍ ¨¥dÐßh¼ž¸PT[×#S÷ưê9 å*‰JaV¤³vù¾&¤Vž ^ãyF@à'ðL Y1p;©°^Ý`gÁ]›+=–™¼Ðcý¼Ž‹;&šœ(E \Q>b>%dèÊÌ 5@º–(jæz~-ó#Õî¦9F‚6Ë3`¶‘`E¹Zºë”ÌpŠìGi‹ån£¿Öô²WT‰ üà8ÚâàÜÓD»‚(×›£«¤Bmm±×c{@}é• nŽˆ[Z¨ÉœlïÊRÊí‚sÕËíªœÛ…ÿ/¹]5L#tRº¨Z}µxXJwÍyé¤eÎC'ß¶ öY$2jϰ¤/>;9ÿÍ=}ïì­ó€³7øß£åF²[:Šö~2Lò6ìþ GqiXíY]Í!øaØ(}À­90õù*!bZrâSé®A \¬ô ô [è Þ$—º fN#•첯ÐHyò9Ê{=Î.¬gª:r:ÈÞ(æ&p‹Ï’m­Ó 7YMö¡+ÇÀ:'Š2Dæs©ê ¬·ø~IÖ•^PÛl¤·ø#(° Ó°ð¼†9²‘®ÆÀ¨t‹*K&·5‚ßôÏ“f`›"Ь ¿Ó, 6¸³*šp—Å€7kK’OŒ¥>¯’5‡Ó_8ìx{™ÃrX:ós з±Cb>ï%ö1 ¼?ó%ˆ·m6Eb­‹ R"ѩ҇˜œÑÍMåËaz“BLLšÖ =L­×q D #5·h5°óŽgE·œÏ}—,i‘ãÉrß;Ìfö‘Ú æÒ:N/ÛNûŽËÜ:Ý” ¸‰àRäù’Ì+ä•JVÜ=+b‚uÕˆ:°ù#Šç¢­ùE0«ÛÓË8Ž+¾ûdž®ç0+0AN¨ø}p”­]JG™L)/æ V)?iakµdégk5³}Z‚t=‹Ö\Û•à(dÜÅE’Mh†ó"|(E˜U`НyÌ!"2Z™Ø[ÓÊä:Ki¶Ã¸ŸLÍü bià ]¥ÊO¾QÑ[LY|¡GIª°•jrNÂA&4Ýü‘ Ìh,ñ–$ß# MKcJÀ´U |mcß÷¢H/pç#\û!ö 6*O%V©˜¶b±ÒòáâmëØÅJ¾.nôþ1ÅÇ3‘øÌ$U¥Ñx; ÌíÜúâ£í–Àhé@lýÃcXœ`a>°Ø;*ÞLþ‘öÃòKšOùùw¸Ž…œ7ù-Á215ºÓ©/²s¶ãUç쪻ØÕÐýˆ¨éßðT[|ø…€/^Ÿ¼Š”²ùÚ>HÜ#‚Âèñ eü>ÈbÒb©ëÀ¥LUéwTIrM3l÷s¾Û[m´KüÑ1ææü2…³0«ø„ôôhØ¢ø¹‡Äz>cÜë¹õÛ' €ÿ°åêÙÇòõJ8¥ocu°b¢‘†P3lVs%ØE¸'ƒ†Hô“!¨’ø/*pÔEÜ^å]´ñ¾3@¦¦ÜxÇI/võÍPä4¯àìЇôEÇtô>è Q€C“QŠM›¸ûüßuâãpû¢Ó$D ~å3±‹3O—•µXe“¿R™[€0´®”-ðA• Kè^»«q ÖuYÚ»Ì×±·»pxiúSãŒÑHã)à‡ªêÅcž‹jKˆ—`Nn.$—ª±} ´ÜïóÄ5D®~§@ÀDMþ.I¹gв<`Ú!œþIXžG†ä¿À[¦{…ë£ÐÞ½,÷ø~&—RA “ˆ[kiŠêK©ˆaÏ_J;ôzª)'”è,˜ö³:7J„¥e ôÓ a#©\ðË-¹b«‚tâ½íèc5ƬÔM\Žöv¢À@‚Ë??Ñ $…ª˜™ÐXÜ‚E%´5íVcñ>)ޤ»%LHå9ÊiN>;Ñ£_~ÍÅèW ù5gò›ààwlÜ2Mø/«ëê€>TSð'|Z§$ˆ¡ëÈt3_#ÓBq ÄwâÇQQ¨P'û„šåBvÓoç¤r_m²ó8–dEðõÕœ—Ëô­ü¤›ª¯àWe«jÅ^uh^ækí!ñŒƒ•‘há\rÔ<@T6ìoç'ÿ†?ÿ^Ë’bendstream endobj 264 0 obj 4072 endobj 268 0 obj <> stream xœÕ\Is·¾³ò#xËcÊc_9$©ÄU©TÊq˜\l$‘’]¶DÉ”¥òãÓ `fëÌ#ßS9ñA/C Ðhôòõ‚ywÉ&~Éð¿ôï‹×Ÿ~a/_=\°ËWï.xøãeúçÅëË?ÞÀÉ/ýä0êòæåE|“_rÎ'si…œ˜•—7¯/¾<¼¹‚‰¥SÚ~}óWx‘Kú¢P“g_¿¹…ÁÇÁÞ[ÁwW×lR†YføÛZ%­;¼ϵà§1Ú+w¸½º–^NZüÉ&mµsâð-þ–R[a³YÒom˜¤³¼ ‹¦…ЗMs4* Ë{Ø[\T^ÃC &2Êé$ߺ…´ã<#wºº6‚ON‰Ã Ì(˜”Þf/ÞÅ%•’‡·äñ³@”‡®®ùÄŒêâ3i•ßE}Nfyˆ â,÷ë„/ñ©˜Ô`‹3¥R"Ÿècîp-‚qÂuI¹+½y°aš‡+3aÅ$ô,UtºtÂpð6- `Ë|RXÓ<ᣎØÁDËK=Ž‘ºëDÞ5“V†G*Éq%ö+k¥œó‡WëºûŸ®`ŕʨBÂ¥ž@Ï„ØlÀ÷™HÃ%…9ü¼JÝ´ˆš[¨¼Ÿ¬Òÿvqó»/Ë¢–ÃÄøÓ›pÖËÓßf@¹Ì °És3Ÿ×n_çgæ*´ýp¥Ùo ´#iÌû|DËÀ™u¼àõ?+\ÎRX78ùX ë'ÃúGOjEŸ&v;Ƈ²¾8áà/6S5¢‹IŽ$gO]©dPµ{5שׂt•åF§¿KÜ U\"Š"?,ﳌ°á}Ü¢æ¦Ô`œ„quø‘¼H-vap3n±Æaî7é)Ï HÔaleó„ØeaÞG £(åâ¸È¡KNú99°‰m»ÈL1 I0HwÄh=[ÓË8ZBŸÎëGc“(  •ÄÌ­?:–o4Nµ|näŒ)ßEJ‡¼% «×,¼ÝC­0xq7Zóž¨ÓÅÃÞù$AÀéῌ“ …ÝäšÊ”.¹ yÛ­ÄéùP#•E7€õ¹éÐ¥p¹Y>Dš™w¼å0ÜÄ-wr5òèÀ?ñä&ÂÏ·ËϦ17æÕ¢tÔÛµxˆÇˆˆèA=5Ì…*V>[2•ÔHóZî“«L×3\G©Tt# Èíæ{|¬ÐªÇƒS¥&”œjCxGždÃÿ_NõNÿšÌðÊG† ððëËù €€Ôà¬â[â? $È›³ ¤›³S™ j0;¡@àŸ¯\-N‚:½ HíP3 s‡“p)ކ7Þµ @°y,Ì ¬ä˜8=ˆ[Ø2&a–ë¨þ’Y­U¢)—ö½&§áQ1˜ãYÆ€`“ÌXE‚yrÑá㊜‹ù}Js÷îÿÐÜ m€mcˆƒC„ê ä»dº›Ç¥¨‚Òèj!~z6•BÛÉ:{ž€HkvÕ9"" šK½Ó âh;(#" OÃϽœŽP²D}ø´Ð¹]¾'M–»K‘š¤±³ÐÆåÆ7X§QwQ×Gmêj ±Îmâ¤Î7NÍ'5«•L”æ:ðjËRo‡&™SjKËÇ`×¶ïèîâSˆ×™M¬è¶|ŸÀ‹¹eC(Ë nJð=û~jÖù.ìά_[-6ò¹A ØÄc&€ aò}R=y»>/jÆñ-Î85ÖõÖ8Â$ Oó\äòÙdõHQ.ê4(ˆ+)o5îGx¯ÛÂ4¯[&L¡æ‡èÎ78 ,êò“ø1Œ~…²Ë`ßœÂ$}V Õ 'tài¢R2{^cJ“³5û©]ií"T¡Ø8­Õ¦/!¤×¾uêU±¢§ú!DãÖ</C‚Ê?¨ S…}•¸gò, Ùe‘ɌԦ0±1.aÛ~–óçÙ*‹\VaNxJÑérü®¥Sˆ—‹¹Zm3<’áM6ÓH™ §Ö¢g J£€Ös^˜Û%®ïØÈŽœÓoC阒4ãÝŠ#ßþÚpäœ=…ÍpÐBŒ#}=KØ ¢ï™Û™† ”¨3¸è~ šŸt†™ÕÞ4¼ôàk”®boàˆVûco°b ()÷Á¢jÆÞÜÍ0Ò8,*6¢æiøIµ–¢>2šü¬ã ‘§)4Ž ç¡žH· ÎÜÅdLY O‡a0¨ñ#bA\Q0» *ΪÒîác#¨Ç „|ƒ9çãz2Εùɰsg°[xƒ•G ¡R^ytÀÀþÏq |ÜæÊÎ „2àõoiiÚwæ‹g£„ne' H™EùÙ–klÔ ¥Xå! m\!‡w;\`Gjè:eeÒñÓ?ŒùÎ),ÙiWØ&è§Z݉ÔgÔ&UËC3n{¸®QֿР×'q3ÊÙ25€‰#'mWG_íP‹<°õaƃ]’,ÓAUƒèæè&–P!B©ð b" Å»«#úmz~üˆLŽë;¾\9Áˆ†à¦¶X(¨µÜ•ÐVv‚=Ÿ° G9k™Q®i÷ÖŒ›F¸øeDÀªrfÒÚ¦µÎh„ù¾‰”ƒµ®\?“|Xô@/¥ Q‡žS&xD‡gµ:ä½áPT3õLT‹hQÄw~ Ò4¤(èA"µ×+ /Þ¹ÿ¾å­nU=T‚Dã¸mñh„±‘˜ulœ#ÿû5ðÿa}ú¬9`œ,ÛÚ˜qÊ|Àµ‡ÓØ_UD:µ¸22ÒØ,ÜGØç(*ášNг®°ã³Ä÷H5ß[ZÇÁ^ÚR%:eUPƒÕ(ÖTñÔ-Ψ¦BOï”Y¡0DbŒSŒöÓÑ4ú™+LE—#Ír-e@Rº!ùË•Ãl}ÙÛ t‡æItáTA¶°ð£b(JÔÎ܇³ÔU© (t£P_³yŠùeÜ“ãJn˜cl̨ô`“AœÀ?gúm¾\K©ijºèè’X°ú£#dwKµHNZ¹F¦«H6”J‚ËÈ ç>àèÆôºLéËb3â5yß=5ÓŸÌ ¶e8:©´À£ÂØ£ÃÅ#ê„ ´ŒUb X_y]E)_?= |ú…Ï<4 Ê¿ɰ:w ] ux?EÐÁUè3üOEÇÇQEXâc#}ÓI0b±xÿ $YL•E-YÈ•ÂtNZp#Ø&káùá·ø[ÀÆbÙ; ¼“‡ÏÂcç¹IðÌ0 ÿ7 Q~}=L”/aÑrõØÊe–¢Â—äTåz’:í¬7ö5²YQ~<¦.Öáeúê‘ßÌæEæ&þ¡¹n¢þƒðøíNK 4d–¨B@h2¨BÍüC\uþi×pð9ãrh"//‡vjú4ý@I@m1“”…E}Ybƒçf9úåMê"©Jͳ€ÝËã&i@föw1ápËkƒŽ³°GÜ‹A¢ï{ÿ34á`É ºA€tlÝ–3*Ü_|tCCÜkßpeÎçDµ .‰º_ÈöQJQ¸ È!Ã.TŠÉða áx‰Ü„æHüyGü’v8é˜NÃ_ßÅÁ![1×0ê(d dY¢gà çû÷yųeÓẪ.ùéÂ2ú;°è¤Sz?Ô¢¥ .ÖzU>Õ~ Þ™s>¿’~W)õX5Gòóâmbó›ŠD×È”5F~’–äÞÒ1È<ìÚfÑë6î·n„!Ëž²»ÀóžŠ6ŠíU7c¼²s 5l5¯m~Ç ÑÄZ}Ÿ£¸ûȦõ+XœáþªÁÒþ¡fÑ…¿˜?ûâßÉ·R «ó[áÔ}º1MÕí5îu²!S3ôéÑÞhU]ÛKª¦Rc_+U«"xxιÍ{Á ãfæ¿ÃÊVè-õü©•­ƒ(i*ª\èÀÕÜŠ¼Yèªaïk2A “D(4ØE^©òK+³ ‹f2c÷ý½Y¦ÐYZ±G­-brBÕ‚^·^÷ò6)l¨>sÛþ`\~ÐÊÐÃû¿Þ³òP×…c%¼ÜAc'/µ’D‹¥¶àøaIn>³†Ã, Ô{î¡ÍÓ}å™=&/"ZK^¸Yx:´P/£âX‹`;ê ±ÝZùð‘¦xÜ“£0Hú75&YÓO‹Œâh¼Oÿ´Öa8›‰©Ýõi\”½x´[`_©<,êT?3[õ°ÐïUÎó.ÎèLv(oµ®kåhjj_»¶ÎÁY¡y,,+ü\VQV8eÚ·èAééGݲ›ùË`¿TKŽ´õ¯Ï5Ò{ƒ¯±eÉù…›á;fÒB§µZðøqź‚ƒ´µ0²ä|ÂR2õF÷•V¥™˜U\Ðè(#Éå„ 0OlLJY¸xª’„-s?ÒL"ÔF) á¢hŽËea¯%+Jz1Û/ÑÇ´\LÑï É|ÇiüDÞì|˜˜Þ†~ˆô©êãÔ­æÒ”¸Tw?¶\ù åxX=ÀÍ^†>ÿ¶ÈV£[yÓ'uW¼]ú„Éù{¡Üçé•íFÃFXøÕácd™›ÙnÜÚÚçþÕÕÕ¨çÙ­µÓ¾? \–Td—Ô–c Ø·çÊËspj’®“{‡Úãõ¿áµÊDƾ€W:…/àÙªiÔP{zŸ©E·q û[˜îÙÙž…*;,‘F>nCÙVzÅt­¹”~¼ªüŽjUÖèíö!aYÞž>?æÝ‹ôæEÇý/g$²»ßMß¶Z}ùobÙ¹7ýô9®Ñ¥q>}º»Ì´È‡Ý`\\^ YèÄBr}míÆÑ¾¹øü÷? }¦endstream endobj 269 0 obj 4692 endobj 273 0 obj <> stream xœÝ\Is·¾³ò#˜Kò˜òc_²V’Ê!)_ââÍö&)ÊeR’E-Q*?>ÝXf`æ­r*僞‡ ÑèþzÅütÉ~Éð¿ôïíÓÅ—_Ûˇç vùpñÓ¼LÿÜ>]þåH~éo„Q—×/.â›ü’s>˜K+äÀ¬¼¼~ºøfóåL,Òö»ëÀ‹ÊÑõ „óøúõ ¾½Ò0µjóújËɼ÷fó ¦€_BY·¹›žÇùJBœcã|Úgñç«-OÌæ®¢”ÂlÞ^i6À+bsCh¢#xxι<.ÃeA“<Ìš—ù&Œ–Ú ÛÜÁ` ýÛϲ±²5h;ÑôÝ^;ø]Ø7N´¦Þ;²åbÐÊðøÒ_á%Á¤ô$È”Ê[ ‚ kk9³Q´ÕΉÍAi[šy&‹çqi•Çi”4Ž Oß\m…´|sæ0Ì2dð”e-poœV¹# ƧÃÕÖ*3h±ù32À;<¿%Óßí)[tt ±A*É7¸ê¡‹¿Ž‘QôñK2ã}~Sæ5µ÷ÅÖŸñ7(£„5ß“7Kv‡YÝà |(áÝÚêÞ«bÉWdM0N™M×£tÌÏ#: šÁR~”ÂH¨@:|Æ}zÆ…O«ÁÛ8—0"1ÝI)óÁ„ßé`¤°¦%{áy{š–Bo3ÙA´æãb©fÜNË‘_\m%át¦à~OªƒkèFk/ ` öÅ&êGH êççMlr€øÞ•çL5 ¤ºEX*àH’ñ,²ŠsÂDž´]òÄ^ä}»™‹HÐéx"€yº>šA9^<~ÆÇ01¨îr4:j ìŠç¯®„E(‘ãÛ«¼¦ì­yS€æE””G²5: ]ÿ޼;$ý ¿ž ¿’;\_ë–†fXç;NCA Å|Úhxú†LH?’Iè„EÕ–ƒàIÅ•’Q¡·´fÀ5 CÐŽÀ1jÃuñ÷›™TŒ2‘.ÒÐo´ •(ŒÕ`h8ô8=XS­qe1…ÄS÷ðvÎ*b“k¥ ^voƇÄå¨5a—¥Î4Ü€ µW® ªa…g¾“Ûi:d˜ø×ò° ×\Ùë¯.®³§›½¾nœ¦oòªþs¶Cvïz~õ4†I^ÇWø—†•ÊÃÊR êØÔH>‘•B žµâgSÔàŒ‰ âKÎD}Ê;âV¸‘•_€O½K~AxQv£è†/ØËFôí‚ðCÍ}a5€Ä$VP§â~Ú&$š_%™mÆ' ‰Èù®Ô†@¥–3b›…6<^ ™nG~°|t]#ó¹Te!è-þ†_’5¥”Þ•ôŽ*¬ø 5¢/üD俤îÄŽYAãeœ½*\€§ K€o1o¹¬S*8ëJ±¶)…ê˜ÔÚÒAS½T€ªÀf3ú4r…×IÐÕm^ƒMìEduY=˜g%álÌ•`lËNJÒi5Ko¥…@Ô¶ôU‰£JÐKðìLÙ½OèéŽgiÌáÏp–H‡Ö³À4Qw“–¶;Ä^–´ð41¡ÉE,(,ÕÌŠ3À÷åBp¤“ È.Í-Ú4À¼ã†,ç#甞-’)–ùIÌw7’;ý¾°±ÓìVfîˆ=B5µA `Ã-¨;™Ð¦éŠdÛÚyø³ª­ë¾¶l¥©‹”àá1t,Î}Á|”âS*ýëÚ”—>½Âº±ã÷WKA•/O¦\6f\­­ÈÁ.ËÑÓúà \(åÒ­‘$9œëÔ‚ñÇCiBßܳè¹ûPEÙÛÚ¤i‡­î– yXîªÜ“ì*úfé…àÞ-ÔÓ0¦W¯tT6œ+øc¶2çú>_*2 C]©”ÔƒrªòìÖüÀ‡èòZ®ét½ZàË8ÚÉ:{è‘äüh¨ ¯} æÒ梺æi,ÝÁ>°>«IæôtÐñ 8Œ”.¨KHdêÒa?µß•.±ZŸ» ”,câ'7jäÚ¨‹wÛ Å?ºx]~ÒØdvñÐÉ’½®µ²E 2™ª±'fžØÀ¤m”üžân÷ï9Ù¡W¡ÙC´4miiFˆ4ogŒ+è#±ÊXKA³º—7i ó!ÎZKUÉFG½¾ƒ"Ý’\$WÂ1™®iì·_4Ôy‘=%0ᤅÑ'5S’جeœœ™²âŠ/ûnkÀ|=æMmþwÌQþÓÀË!Æ~˜ô"Ýz¦Œv´¢TYÐ_Þï$|Š«Áøúpá©‹½ Le׉ë׿"}̨ž#C¤š:íÏñEÑH0læ^£š)}vCaï ¼¤†þÝij:/…gPIíOd¾÷AoRÅBœ)tÌGÍxÃ4d œI{ž¤´äÄ îÁÛéé»EiÇ ·´u.÷’(a;!ÓH8o/6Qbð¢ `UP?qœãÊ\ï/ÅEO¥2ƒå3#žxDT.â›é´ßN2ðzzz{ÒÐFKTøÃÜ`†ø¤£wù ™;í»M‡4èî¹mÏ¸Ž… ŠW°–4LõÊe 6¢‚ã{n9ö ìªè>"öAúýj·9 äêìEçÂËH)›*Îïp‚‰Mïþeü6àÝ(H1ôî8”©eïùô»¡J’ë¯F=ÞÓ—ªs”3ü€`“+~VÞ=®2¡Œ\kèô"OëßÅ•¼èW©é4ôxè4½Ëóﱪóä*UBœ¡{¡vìÄö7ÙVísÛ¶®&\`HÈ*mN•z3!ë«éé'EVØ“±ÿu*=ÑÌPíc;­b¢’ÁÐdkn"ÜÉ)}2¡Pÿªõüd0­(7;»±*Âå—6ÞöUÈÔ”oâ{Ò ⎜æˆîºñ7´a¦¤™!¾  ÕX#ª®~nóŸK‰Ûݪé˜Ôàáúž@"œ=YF\éÜy’@è†Ì¿‚f¿Ý‹΂4V,ðµ/Ƴm`“ì! ^ÄV¨R¦ÃS]77¹Ã‚'Øõ¢ÈõÔz×HZ¤ ½WNˆªOÝ ô¿lâ~ž,ÉhÙŽŒ-‡¤ sªRFÌjíö*›ÅŽÙõÒŸ¡Ø³—ç/v¨ÁÂãÄsÇk«X,Yoñ*~ÒcUr€,Öä&ÕNô•Ú—Ôâ&„/ÏŒæ§äP‡|Í”Åk˜©èÐäݼ'p•¹Yc=ʤG;kRe›Ÿâ=ÁýQy‘“—<ÚdcG<ºbOÇHêû.'6xN¿»”Wø¡Fsª£ä•wš‰¹¤ÅÿÇbжA‘[ŸË—0Ã|«JÚäv¼Ó{©•41æ/¸„€ÝêúbøÈ[tL88ôâÈc™‡›Àñ´¾Õ¬pð·U[ߤAº„ª37À¼[^d|‘‹“r˜®ù)Ïå:†=Ëý“®x²ºÕw”ÛÉÂY¸…™Ç&ÇZübG–)Jæsœ@+]DEí.Ú¾IÕc~w·y½ÒÕØ³¿o];ð,X¿ÜP_ÆÄO%À)§H<ãeƒåÜL…ÔOçKPUvÛ eˆÂOæd7—ô1æ?g”ÀÔÞ¢ŠìçL÷’ö«Po`îÏE^ÜE^pWîóõt‡B7%º2 Hc¶VíP]§±è„ © I*C¡½ãxlw¶­¹|ç¿„bkÙ ó0½¼K%3a°2í)nÒ®À*Joä$WªÂÛH»Ó{‹n§Ñ°Œ@ŸvE_A;ô· å²‰ û•'31á 5jÍ[@Wò4eOB«[íÕÅ €IW 3-h6ZÂ'¡MK̺ëº,àŠÏß…N{êî.¸¾xå“yw”ë«­þW­Îàú*!0²Ú›k(¸Õú‚mçõz°E¹³õÃáVµÊeئóžéžFÞ%¢ôB 5¢³Áú)žhÚ¹GœêçÈi#UÑúK´#¦òsꙸ„Áqá¾ã1ëVÀ¯ˆ†AŽbô‡ˆðõ˜F¾7ÔµNÔW&Á|À|Õˆ@ [ð]Æ=œîÛXaºýÍ?´ðƒ…CëäêŒ(lqs¤ß†çäT{rézK-=]¿€èÜ"uóâ•ïO™]`p¯X0K§¦U–? 烇AA8­>‰Š–ØKŠŽ³e—Q}w™Å¿ð†{Wùž‚ÍÏ<dJÅï0â:°è©ÂÛçÈ +Ê€°£3½ćtrY9éºðx{NN»¥…Ò;NФý´E”bƒmgYŠ«n‚ØÆ5WñÊ2³‹e‚Þ:Üæ5vafËTÌ)3ëJnUÉ›†: ÆjµRWÁÚt‰c sLŸ#ÇÇ`ſŕ âØçÍë1‡Ÿ{8iÉ„{– yb> stream xœå]Is·ΙåÁãSÊœ`_R•C’ò%•TeáÍÎA)Je.–(Ë–}º±Ì40À,²“”~b@£—¯Œß³Ÿ3ü'ýûÕÝÙïþiÏoÏØùÍÙ»3þxžþõêîüO—0@òs?x#Œ:¿|}ßäç\»A {n…˜•ç—wg__ié”¶‡á§7NÞOO_6üa|úïË¿ÀŒÊÑ%¤•f½¼ s\ðAç ¸`ƒRB “h6À+性’9ky!µ‘4—”ôƒU@hexœâ_ø–¶ÚÁÚ®Ã, óI´]&¬™gòð¦.¼”ç‡ïÉcÜ·’y«gF{ŸžI«üá6,èZ—k+l1ù-N.à]~øøBXxÕùb!MWG‡ü7 ™C6²ÁZ`¿+†¤UK%9]a{Ýtž·dÝÓ{œ’Š©bJúæŒ6ð)ýè©´<í„Ö‡›‰ò§´™‚ÖC|¨˜>| Gáí´OÅ{¢[¥‡EOãmç4®Ò_ÕZ~¾9Rá?â`8|c“js.§d`)ëŠ=rgI±AV¤5KŠ-…Àîî`A ž &(gŠ£™)£bs÷Hs ÷!wä$ü—ù`Ãcú^O]^Ê5JÓ+²ŸëH;ux(*f€ Q4¢¡wqó`È—7üqº˜æ2=¡M~R&ßG«Å'v»g0CÅ`<2ÏòvƒN½ŽO¹öÙŽݲ£hyJûTÛxð2"Ëfↆ7 qÃjë”—U8+…4Û­@|WïâR­íréVƒ)©ÝÇÇ\‹¥Ó or‘íPé³îÉëL®aiªS¡‹«,µ`D€KóF•Šn±#íq’ûî¶JÁÑžûÊ5ô¨Íÿ”ö(öˆg-":äi!†ÁÖŠÁ8 ŒÞ+ˆa©R€µ*å/¨«È8AK¸E.ý¹¹ÉWC(Q…ieQF.~Õ}¦@œr[­ÑÔ€¯Ûe¾‚9•Ì(áK¤,ÁêóO4”Û(¸$!ue¶q¿ÚoÂÑHÏtÏmS2RðSè¥ø–phØ›‘™Õ<4X)ÿ8ËMÚ&HÍ"~Ü.nôT#ìÿ(M½¶^„óõà‘F›VIý÷óu$ÌgˆÒ«ì\zÿQذ¢ìAÙ`rlמ\ÅN*hRŠÁùÒŽï Óy5a“BY—VlW|W៼€ˆx1៿#›,úƒ¹ÆTàŽÆKq„ôó£TNec!1þ“Ý0 È€Â:yC˜‚x_Dd¡™ï.6®Pq5Û0Ö³–fŽˆ®©÷Y>8/”Žxá—@Q0`‘A #¸ÜØmY^‡÷‘Ç .‘½×ñ©Xð{y¥ðøcÂ,¼L§ *ßôìF:jÉl>aE¥Z–ÚLÜ&•öêhzT{¶äޤ èú¨÷pz.â<¼ŠJkÏ™¢g„þÇIW M0/Â_þõìò·_Ó<Ëãv½šž.G`à'<7{3.Þ—#𙀠m{`¦” _̸„!Bµ—f*X:k¼øíBŒ™iJ$Jù\õ¼ý”Øsx8(¯é€o;h–îº ˆ*°/¼Lp}ˆOYá’èa¾"$ÊP}š†ä ³GQÐ NšmÅ~+^h ¬VñÚá!Û˜YLÍàîy¡b½ä!Þ¶ù=±¡Ù8êÝèóÌ ã ){“±¤ €§4^Y3mÁ~†?Ÿ¦Í$I•bJ‘É,Ù£¼Õ•Ÿ©!m Zü顸’.\–*†¯œü€Å3§ƒ²yŒ3:Ö• Š)èäTÀ–ìæö@diö­\ ,µC2Óº›ìygä`“nÖ²¥XN;K1œÑS£ˆb®áHNÄÅÌ+S¼Ö@BS²!+Ã5ª^‰…V¶Á°Ò-×…‘¸®½>†%âý@þÝðnÖꨢ,¤ ¡&.˜ÛEÌŽCàñI¢òØ‘¶=>g‡4"F\}‘ƽƒA¤¨•Ò \{…† D"ÌÏÒÜ5©4Àø44~Šhê+9[ÑÌÎDn ¶BFï“~þ8þlƒYë§MU>|OQJ-àèôß -¬ö¨´1R×¹¢ŠëééÇæ€]Õž{̘²¼–0¸TÁ™¹¶à"Ú±»Ü#œ š¿TÇÅ!ebº‡èó%;^—{0ójÚ ð‚ð»È\Q\H%à›BïWH|ÏH_H ò »8‹Š©k]ýz±ðÕ²Žçá­\Éw%P‚´à¶ŽÅ7”Zð80 ]¹°õÐ8 ÜGoX—( "…CÁ†Q»uµq¤IJ/¹”Æ52„»]´ÒÚ×%ÁÚ; A=X Eí?â4`ð&òµÂä‚êqž ::2ÃKç@ä5ª¯1…%f°‹ÊlþMPv,uKÙÁY(çFÃÍCÀtBcºÝ-IÊÇHÑ WŸ>†ãÿ¥CèWÚ÷rH ‘ÉÑYàôRñ Z"xsî‰D‘#(8Üb˜Û5—¸þZ¾9Qgûæ0"Ä'ä{i½«˜’’=ÃVmÁwÊ.r¡†c[°;¾º–ý_u£›n”4LÛ%õkr£¬Ï’%ýzûÒ¨„Õ×Ñd£_ˆX!,]lj³èhÇè+ÃÜ+SûšªJ×Ùµ²Áe©IiºKj˜rT¥Ý¦'d°¯^äªs”ïã«Rë¤S‹qÞ,¨:E½'fÙ-)Á¼âT“ï—BYu.g¡ßz_…³®¢a®Â=â]HÄ@دØo<ÃUᥣÝb¡8”Ÿ•cyÐò²2„Ô·l°£t£dq¥ê͆÷¤x6iÛÃ[YµY‰þN®€%u$ܽ;Tf¹’0Æ—Êà³çI«ÀQ]ß½WèØ‚…ͱñiÊž2j³è(÷>ïâ÷µë©šKQ“Ü8ZÇ5aïÿ7²¨9?[1¾ê™ªå ³¤ßiéºÀPЪ篣 Ñz oºEŽMøæ¡H ä æì^¼¹ŠŸêqŽ.¥Âtä•s¦’½°a×3»×m±_i/…7ƒ(@p’A}¹!á$°Qø¢lbç2gGÊæ$ö¡?›H ˆþód&·vòãCÖûMö(bú»Où)ÐŒo"Ù– ¼ä¥á ËÚr=ã}$ãØJ2V œÞŒˆØ€ˆd=>-ûŠâbU‰ì3o è5F*Ò;ûq¼“ ¸Ñü<^‡álOXË"p9Èdvðú3ƒL܂лÑÄ8$5ƒ8ßla‹ù‘È?¾;rÆŽynŒˆ>fÀ‹ž‰.&g¥ø"Þc(írˆû, š†ÎËç¼Û§Q…­î”mwiFÄðF$wŒ‘Ž=çË÷:%8koNÖæâ-Ž/ÒÈÐZ—ãõù,Uš¶çki¶6ŒÜÚWÌ7ªI Íõ”˜UI:4Óx?\ù§U[*·§]Ÿ©A¨åfO¢ûníDùœFzq2Ɇ¸‚óTP û¹”°°KsT)N1€Õ©ú°§oW(ËÖ±}iÉÇ8·±¦™ç}UßCnÓ^§¡ïfÌ=·ür R㸲ø±è.ë>‚•äáZxî<¬ú3âNÍÀ´XyîÄ7•Ù;q0ࣧÂN$cõâ°!}ì<¶ ?Ìé\vfWÍÆ¾£ ~F3ø9sά¶Žd;ÙÍ…K|Uj.^»K>(¶œð‡!øiŠSaN§sªÊÌV̉»|âôP«ª'Ðev¹ˆ¸·q:B¸7D¬ÊÒ!t²E7é9ΘÓÌPöÞµR8çX ©°g¸Ä‘¥à-ÞçŶcÚœX L[ÀÑÀ¹¥§à”x“iþß…7aÉå­ƒâÍnßCqveæ]URZ¼Šþ7œÂ °Œv­“r&c©‰ÇØÓþŽ˜²ª«”X<QuQQ)ùª¬‡ÈP}Kx~Sà2ùÒMñÐ(Pµ<ác9¡K‚û_°Þº:´ÛmDc7Hñ”ûäyñJ±ta¤*sýUS.²aº#¶óVg˜®D‘O¸Ô©4 d¥:$P4‡0¨kâñr/{çÕ± T̞ўî‚jp‹…WÇòŒÆšåÑFó&L÷ ŸÒ{ŠŸ¬GY£ûÝIU Y›-_ÆÀ¢±UúeüÉõò÷øR÷B:‚ŒÜƒO™Ê€²$l¡{ÀBƒ••´OBy·Ã5cM©Îð¬ØH!˜iØÈЕŒGó;.õ÷in£êIîNÙ³ô9>+¦4Û¾±Ñ7ì‘ÊüÎ~ì@;ÝÅÀhßšMúôšõìfw®œ±Ú?L«éàÄli±¬¤›—åÊ›u‘Õû‡ÔÒVR&Ê ”S—nœ¸lµ©`–÷kýãã¤ôœ±l®xP¶¾n2 Õoþ-Q×eUý ÉÚ¢íTÞ Nö;ROt{YáÇ"ë5/$šp;ÎÌnT!A¦›‰¢e¯}PãÆ÷8M§©bœ7>.WIÐwqIÖÌ¿é‰Ö.‡íx×¹•ŽNJщàç(!ÒígÚ·ªµ â!º”Çgêðª–Ç6_ÙS€º7=«O³–˜;P¡Äw©ŒãšIŒÎhŠ}>MÓ÷Œe#5K¾¤V}ʰu"löÙÜšr®Ê¹årc;oÙH4?°é«|9-1~ $c…°!úlš¢Ä¸G–v6~»á¼î´ûw»ðزרúº"ig+S—Ðø¶J# æê6”Ð`«»¥Ú›¶£bCEêuµªÐßèK¯Ð™´çS!~)ò…»UÒ%ðx±ì:2ŽÔ8‘í·”Gáu ª®•«/¿éŠGiwwN¼¬*fyâÒ …£ ‘¥yèáetøJ ߊ£ÏÛbˆàH°ñµ¿¿HYß@X45¸X{HºÃ-úÂ1‚®ZÚ½zCèÄF»âó^d?²ŒfÄ NUû7µÅ¸"]ú"mÔýš²…kCF¿9Â$^^l‰ô!ÞØuâ.¡†–·%Îë}Sñ,°Ý}ù¶Dœb{[‰ÌÞùˆ¯)†ç§M¯á'‡¶¥×àGøâÏqÅÿÌGøBb5~„ïÿàÿ†àm¨.FR0DõQ& Š+")«¨`A$!X€}<í“4˜~†náv?†Iº/ÊÇßÉ‹›ÙúÃkU=ßñ±Pcy%XÜ…KyxîÜÈÿr7]4‹r¡-5­”ÂdŠzë:Çä$‘ÅoÄYÉ«i?zü‰Ã¿º<ûüóúAûendstream endobj 279 0 obj 4615 endobj 283 0 obj <> stream xœÕ\Io7¾7óú–V`U¸/ÇI2“Á±•Ë$9H–% ÐÉvüúùYË#‹Õ’Z >˜¦YoßHöÏkÑɵ ?ý߯¯VŸ¼ôëóû•XŸ¯~^ÉôŸëþ¯×WëO°@êuì¢SάÎVùK¹–ÞwÂúµWº^¯®V?lÞŠÎX…Þ¼¥±õ6µysphTì¬q›{šöÞhhËðÂmnÙòãLkíMÜÜÊN8#ŸåûÜ‹¦å‘ϞѬè´{=³yÍPâè](ßu¤Ý%­ÐÚzå7y$ÈýmÛeíæ4£m¼Ýœ?DyÏ& ºƒC¯U£Úüç È.úàjÖ€De ej£9FŒz!¹ BÁ†Ó#’#ÅÙÓ¯ÑʸH…O¯³@°+Ÿ=;øéèë•ò²ó*@ÅŽN¡PÇÓÿ_2`—½H­.!Œ¼&P‡¬C©Hõd¹E ´”’»ª@Œ‹›Ötó\œôK&_¶ä„q„/I›è.*Uð˜kÚÏéS@Ûû™x¸2jg[Ü®Q¹¤-¡Òn®0+L‰ÞKnÀCÈ äsMá&ü‚ »Î [X07¾ër‰÷:pãfÙá*nÝÑ—ÔU>!ÃS[m~BÊòÉËȽœÝNÈA _m- s€÷ŒRÂW܈è­VÛдÆö+Ò0m¨£‹QæMLà»hX¡µã.ß'”¼5"q‡ø!$‘ xAj£ˆZÑï1¿ùˆÆÊ™íµ_ßùNZ—Ÿ6Hà¿H„(aøI³€¢p&ë2:è^ÌZÄÛ7ã^Æx)lpÿ \OB¶‰¤àS›ŸØ’®4ÕO^jɺØAÈt¡[F†¼Éo„‘Æú&FðzР£ÿM2«†ôËxŸÔ[ƒSnwËж° e¤A<4›#@T>ÄrßqOûÃ'ÃçY&AÁbä&¹0E,ùŠPšÓ¸uí*¸c£^É*–ËÀçm†)tÑ$G_cìá^Oç«”¸)ó g—P]ŠÙ÷¶vu·„J6hH.ûM‹`>B õ¼  Xikz?æ¢ñI\ 4VܲÕ,бóæÀâz1·>tå­K fº[Ñ9zÒ>dx)|!Î%ÞqÃkz ~Éz M#5àº2̺Ҽ¸–iIŸrŽ_éC×Èbä># «´ä»ù*Ñe…)õ÷>ã\IÀBÌ¿î)_‚Á$ö±3½ÂöÒÈ¥òäýñ³@,QÚ!&Ÿƒ@l\”_"𨍳ì|6"IÅDúÞH蠟`/¥²]Ø|~Á¦û b¢èID¦A pJf”tÆõeR¿þ„¢¼CÔ§˜†Ë‹/328ä‹§Ù´÷œáÅ'ÚV‚Œgþ¶ÿÒ* ÇY¾øzš>†—l÷o°ØñÕç´w%•7 ÁL¤* Ò.p0S¬„ ; D™%¦ŠÌU"ô×G߬Ž>&Y*•Då£U‚DÕœ–ãt++ƒâ 9ÅÃWc6¶ù, #,dóí4{Ô\ðe‘ÄýûhõÝ “]ÿ²ë/VÐC=^;ûõ’䯙ËÕ«ÅVE‰ïت@=ì3„ôwjUœNÈOÈÝM³ÇÓðvZðvþk^VCƒ*2ûì~öõ8lÉìÐY:JøHH/‚Å=ƒ)Ipžž¢&™r@Ùqͦo&9Þ²é¬#>¿WÑ^¾ý¼R· Û¥ÍS:¾Å,½1H×Ö RR’­§8ªÇ™dëQ¨e‹.Ëöó]e{hÁ§ÝæcŸõ¿šÔôg15|YH<ѯ,ê2áý 5Ê£gÐjœ’þÓ šþŒòñ4»ÝÎlCtüq“”Í* WöaZÂV_L0š?l7iæ= DÁ9Kro§IΤòù\LÕ*òga%×òŽû‚6¹b Å–…QpÃI®X"¼êX¬avÖ›¬«YKŒ¥ï®>cºP NyMËŠbïÞÝ­ AwÚ¬M”ø;ù؈ªÕÛqf;Œ©I°yØÇ¦ážõ°T¡R.Žš2j ^¼ŸÄ“xž§ñTn©ÑVæfÊXã¶šš}˜2]hc±ÏBaS—µ.R‡—’åˆô‹„²)Ъ¥~íñvn¡ØâáqGU·‚º<ゲÃÇ[ÁUœºU´y£ŒMEÉ?œUdO1ªßwG•s0•"RRœ5UU]Wbôu :ý…§'ÛD”_%Ò‡žñ°eÓˆ€^I¹£.ƒ‹ÔªSam|;¤—ðŽãÌÁE:êž#òàúŒàÒ²N/NƹT/Ô3KvÊíš•³Uùc ›Èª5„æÕ»B=¶æWþRok ´š[µ6ÒKípñ‹ª3Wš$wdœŸÜyñS >ß8ÀJV–›8Õ5qTDbçæã:ª†ØaÌóßL«—+Öhë­Ù¡öä@IwvóƒÔR#štJ¶wRâ:3@Ǻ‚'ÒǹâD* ë–¨†äPùŸ ±ïÎÓ³>…èÂÔà˜æñåó¿b>1=…î„Ð[ò–Dçò¹ç~B÷:ŸÉq^è¾®u+Â!HL>ØE“|7,¦æCj‘¸i?%ŒÀTa×,H•f2ËÒüÂaæö#âB<´Unªõ–‘ì${‚P¶‡{KŒ¦Ù ‚—ÖÐ!ù(¯õ"/wÎ9ÉÛ!Øfë1]fѽÓм*S š¥ã›GáUQL©Î›ª]±—:.‚ëaÑj8iŠ´æ2þ{‡8 < }"쫆ûj^7ë¯w[C²EIØW4iG)ñ0¼”"/õ]g­ÇªæSÐ1£L®ùTèk¾—I)dàxÍÇ ·÷¬ c5¹l˜ƒwúpàèÖŠr¹Ý‡‚Ud6ʾàã0Ú¥åBÅ–‹?:¶Ä'{¯Ü\°ÔA0)¶ÌleÂ8³KEvÎ&˜ÔÉÜCw,Íî±r“¤1-E\:)åZÉ–_—¾MGšwë m§´R,*í˜ò—gB­ûAu ¸`Õ,e"ó¯¢à"ϪòÈtžó@•—²eÀ;Ë0¤0u¼Kø©1I¨“î3^ê 42›4‚ž2äA}b÷Œ|~†öìŸw~á(—ﱸ˜ˆgiл¾ÁËݣģ5pÃk­z授€Tq˜Ù¥± oiÌNćÃó#“ÃGH¼? I]ýqEEçÅßN³OÈ¢‘ßÉȘ¥¢CŒx¯~%–¼Ú¹_Õ: š2ž¿0¶Ý*¦ÈÐc‘ëÜÕèx—͆wÓðx‚{6ÍÞNÃwÍÏ^ŒÃ>áà(-®Âç)I¼€¿Þ_¥•ñ¬U‹H×¾ $tívœyºPï A kƒYX€{? ¯@“tñ±çm-›‰¡×ÓðrÞLD¿n®=yŒtU ÎW×cþ2ÒQåA²ÎA:ÃÌîÒ!3Ñ>$äžÕ3¬O*!»Ñvö$_frÇMQo“¯5þ¯&ß`\i}ÃÌ3äèæÛ#õ9.¦á}“áš®ñò‘¼<ß>A9„)¯DX&vaôv!û× a'ÕÚ<<ýBX`”$|%˜H ‡¾JF4eA3¢Òì»æÖ¤8›†³~[šUoI¢Oªµ™ê‚YTRê"¥:­pÏß½of­”7M™3¥` õ3#«go8î@˜ÎRmðÇÓr"7KIü¶$'ƒ{ðÀY“)Œ™SDz2õé RV–Ψ*Rÿ‹Î›œ½kQÝzÊa`®ÓfÚMãõðÒ‚˜äöP˜[†b·ôI‹ï{Ü7z3!ÏXtY‰o&uFþÉán‰‡RRä¬sÆ¿?áðPYŽÃ-*¬¢]éúžÏs¦¬L…OyN \W¿Vû›±¼Tá-±}fÏ*n͘ü¢@¾ÒÐ!¯ª})ËÈ×TÉÖíx™cç#Gzê4þgöÜL9‰$#”÷7W¥ÚjC×̧äàd2âç‡'få,ªÜm7bØÀô™[Þnª.`=t¡/?a`–<ÁŒÏŠz ŧÙÌÝx©8MžflVOþ±‡ü¯ÝD{ét@Û•ŸmxE‹é¹û¶G‡ÃnÓñ:".ýN²ÌϦá·Óð¨¹àËŠóã!ÄÝY>R'K`¯VÆK7þs‡¨¥é÷ àt„‡ÎÄg>)ávæuÊ£ÇýX¼v–âÙ%º ,Æ[: /bÍT.7ÊñÜ^«ûLž®7ÇzÔ AÅÅ—ötkÂA3ÄŸé’0tx”[ l6v )¬¼Í’õp ùÒªˆ¦¼_ýnŠF™Yߤ/^ï¦"E–Œ]åX¸Ùwé=²¨j²å›€Þ)Ý|†?þ.‰t løq€êå;»½Ë¯è÷8¢ÚvÄ = ³[‡´#þñ0RK·)¹Êœ/r­{KäÓˆP²Î¶î›·ÃuÂØP­Î„ËôB`ž5úɶµpg¥SÚÈÒåœüb==¡LþD¿õAÍ·!w™2Q=”æaì˜Cæë¨#ÕËø¬ôJ¤Ãf:guHÞ3Žf"ÓÃ1f}·ú?êendstream endobj 284 0 obj 3979 endobj 288 0 obj <> stream xœÝ\Kw%µÞûWÜå5gnGïÇ–À ä$!€³‚,æé™Û3Œ=ÀðëSURw—ÔÒ}ڃᰘFî–JõüªTº?­Ä WÿËÿ>¿>ûËw~uy{&V—g?Iúã*ÿóüzõù¼ õ*Ñ)gV¯ÎÒ—r%µ¬Ð+¯ô ¼^]\Ÿý°~y¾ƒq ·þ Ÿ­1Èõ‡ôlCPë§çðŠÖÞÄõÕùÆ;D«Öwô¥QèõÛéÿ^üÐ’ ã‚@ÄÅ Xò¼,u0Ö¯ßÐct°Èí4ÑY+GzC¿˜q?%ãVÎ’3A6K]pèõ¬VÜ5q7|Uºl¥(ÞÖîKÊœåŒÐ¬uA‚¬HO€3o©RAFÖˆLAÆÓÙº®ÒÌÆÚÂDoÒÌA“¬ægþNÃÈo%RøÊŒÇí]Jk/d²K jËî´3Úû3¾±¿1 â‡:„±yœ;ÈÐ¥›Qr—· äúUBëè )óÝvТTÃ娾ik2êÄ(=8˜‚­}›F£±ÝÙ²— 42þ>86«5’¸¾˜·°,/ìŸu(Œä M ´_pÍ :»ØrIIÏåU5Rô|`FùüÕJ¹ˆ²íþu"Ç_£½Ì"©MÕ µÃ|.û†}MtBEŠP™æÒ8R@‹Rn€¿këVïòš»þiáÍÈݨTû~~ò7óãÅüÈ^øªpÕ_^œ}{faW¿HþÛ™RV6Z9‘îÕ5ŒàD˜F®Î¾ïBé e( 3 ŠfCð6Ais.çÇ÷sHaöÝüøz~ü¼‰voZa­”ÀMð¨Æ‚ èã±Xª–áAðÍüølžáý!{ýùÜ¢÷V¦òÍ>´wŠ.Ç+ ¹ìrD4®ˆÆøTJy¸pKü­ôséõ::!ÿ½•-þëŒæÜâÿð¸»XM–6Õ‚H£,ÛZ‚FŸ×‰Ó?Ý„,pD÷¾Ò&‚Ó‘'!šÜNéñµAõu„„w¥ÓÅd̉¿4e€n$ÌDw…àK¡dåÓ„¡©S¨Ã=8sB¨ƒ5Š*Ô!A€øFrô¡ ²(¸z‰Ùê¨K[ÀL+ÅÀ]CT–3‚é'÷”— „<:ÐN=DGüCñ!›š½Ëc+'“#¡МRÑ Û Ïi/ÒÕœÞV¡¢šp›1ݺKWnºÜDÓÖƒÒ…Vörh4ÔàÁÁÊÅ.Á|ñ=M/ B÷ìŠÏ÷a)`!ìa™ÂTËaÂvÁ›QýUDig±.Ï\z IT¢…¯¿Íd*5ROÃ=ŽÍDO0ÉK:oüXLë%,çÛ@¢É]¹WÁ=-Ì„Ÿü Ù0ì`ð¡Ônþ]Qkhç945„m 彆/E°ÞÅñ9(%T7“xÓ^5³B£ðù§\¯Q—!¥´ª0A^9Üb?H»VýmW‘-:øÜ=de!» §#«Û¤0R™:ó'=2Û€éëT® ÀLx›5Àz2¯– ð´¶ • ±— “²@²«uîd«"zû¶X±À°]Ê€Ì÷ÿ‘W²ôµ3F’~3Èk+t”­6uÜ]ÙfE6ZŦiåž½ÜdBjäˆj>Îþ¾m!š{Yf‰uøÍ¬ß{g‰Ú)ÀGq‰MœƒÔP;d8<3„ @åqøÞ|âİ[7W³ã”¼ ¥,3# &YZ¥¯žÍs+,½¸œß×ôÒè«ù‘mó®õY/ÓqR‚¿ÂÛ…„Úh¿©jf¨ó6˜RçÁ÷V=4]+1L·`Dn¾ 4\)Œø+¿u( ´Ç’Óèû*O†» æø eQñ!Lˆ¥êŒPb-š IÕ™¯ ]ž TưˆU!XÞ¾î 5C®ò’ ž˜÷à‚N. mR6º\\I½Ó¯ª‹%³Ò²¦Õ¶ZIQ õ’–c¥ZM¥÷_È/€ë'^ÁŽÀº°r»êO"¹M« ]˜;YÝvÆû±Ù<Òj^ØŒ;YÔ!Z ¹r%t< ÝÁª©(‰4BèxàjZ³Ñ‡KÕÒÔ‡û5ýÕ £wùÊEøXTú 8µ/û°.–tlþA<ƒcدjjAÀ§5ÆÅÞõŽ ³wðRÖVWˆ& ¾uò·8X´?)õŒ¦ FH½(“œ/]t¯³š¶è–3—ʪR¼ÓØ›9z^”à5‡÷i<>È6BLð¨÷C/ÎòFW“Ãb¢zï¶Œq±fÉ9`3;‡lõ1=«G°Ñ Û·ôDÏ‘â1æ°7 4¬_îz™^pêAÊ W-[qe»»@ŠÐ)-ërŽÜýݨÓn̘08s cšƒ„IJö·t ©ÊÎ^ÉŽÁL’àåö Äשׂ«ƒãd“ ª@Ø«ëå{¶€qËÙ<·ŽæàX™¾ §IGcýڜ涑T¿¶9Ñ¥Enǽx%Þ!¥‡Æ©ƒÛÚ4;®ÞIô–} 3ê(-%šï­˜,«]dzc>¤°³¢:;à0œôõ2‘‡‰ÇCÄÔ%»7;rLH”îŒC¦“ýŸæë$.ºYr ½€Fà¿!ŠÓ1ñ—8¬À¿/U©yÿáIÊ´Ñûä¼Ä…(äán™¾s'^T Tí(‡ÛðZ¨m†-<ö³íV…"6]Í¢¾*ƒ‘äž1í¯®!¡ð}ì)ëQ×D¤”|ýºSu¤´ ÔÖó²¨ Ê’¯pØõØ©Œ÷J[UQll:Hgzµ¼V ˜\”ŽRŽ·Õ«S‹RlñçdÌ£Áoéx¸qõ2?L÷¾À aˆ£UЭ˜ìÏ//`!$…d«ê ÉØ;¾?‰G*€³ß~("¡ìIˆved÷ä˜V1fßÛfô:ÉCk½fr¾Oe¬Ê˲©„wy§s¾m…#P‡¨T×k-ï@'ˆË>§ð#kÙƒ²ÌãÝ$] :lõƒygýKh§I$oj_ÜœÞn!íÚMßé‡ñ”6‹“œCRVcb¾¾jä´‚ÊòEÇîù+uï(Í]*yê¯ ¡ƒWx–Õ±Ó-ÒâžÔ*3¨ª‚m¬ëþG RðU‘djˆ °‡˜W8ËÓéôF(ÞàÊ¿ÇÉ„ !‚ôº .÷ë'âö ü\æï:ºß©`õ4­ ™™ÁJS½a¤߇cõ}Qx=¨~ôzZ'ßH0èìÁ™6º¸Ž…ðЩÒ)/Ï *Å™¦CX9ë{ ˜ˆÙ€†ÄÈ:Š„µmh´Þ-û¸Þä«*öÀ~¡vö³™³'çÍ1òŽðÕpöZéÊÙ#t(›°ªßÞ¨.%§”‡Å‡ÝfézJ—Ò¬›÷T¸1p&ïøá ÒÎçÞA–ú¨ƒ ºê4o¿† øT Q}UW?È DÜc¯®Ä îWF@ô#$Dþ¦‘##°Õ‚f°Cpá¾:3¿›Ù-šó ‹_ª~ ¤Uvû%¦†×{=)¥²hÌW±lÌwX«‚ÏñŽÑñ)•Rx'7 ß‹ñž±ôÒêL” €ç)LÁ;| ³ÁÐ9ü|îðW¡µFÀw!¸˜¯Éúh•ðÅlRi­º}w4Ù«ê.Á=ö ;Ì‹üJã]~½Â°e7˜0®“0Ãà,Ή凢Y‡]t`íw4Ê:I£÷Ð-ltCù¸·âÇ5qyÍs:êóéHº¼€‡To´luFøŠ²q¯Â¾ {<yãwNí,z-( æðöˆ|ÔK\ðƒÛD NÑ%èFæ™ìù&ÍÖÑê Y\!ÝRiª}ƒžë¬(€Ô‡î¼ó§w¹³u•¬Â?‚T'J÷àþ“­‹[’{:ȇœFŽ¥©þ½·^þ_h–žÔ @¦O ¾"ŽðÃ#IéÌ`žÏ¶‡õ4ܼ ûý´ÉO¥YiˆÁãák§‘#<^ƒO3п§{¼ú~kp|3{|Ôccâ»w—2[쩺ϫ1ÖY)oÜ(ÜÅ€f9Bøܘ¥9!nîw‡_ŽÙCøÀ+ºw¼þq=×Ð5}wÌï)âç›’žŽç›Æk±âÛÇB×ÄíÖŸaŸ/g`à·ñדÝ5?{2}–ÚñÁ ¬® rìî8k—f¥Ë‰fp·÷˜c ~+ÈÅó}@­ÞN#G ‚ˆ8§âxð_Mõ¼æ+lö¶¬„ËìvÞK,výLiÍ|‡`Øù*R?æƒLï&æç‘˜}&ãÕ»Ìg elfft×dó–_A¨_”_Œy2=.¥3Õ&t´Ç‹\:yäé@@ ú÷»Šñt–ȯû çú-…Íš 'œ ,¿2וN ã‡T±õý ê®)¨gXAI¼¦¹ òÈ ‚’'º'95+-§G‹dŒ:ßÂÊrGŽ—ÌÙĽÔÕ¼½·ŸJP/,É€ÕIÉ•GNTÀ' ªî^$mé\Ý“ Ÿç“Þ¨ük7£ òÈ ‚‚HŒ¿w³@Ô%ùôx9ï©6®CwP:…£»qäé@âcÅ.3zé°|‰ýRÊoXé˜(SÑm’N9A:& Ñ“»WAýÙ`þ—(Ì(œ (j<""(VóiLþé`ƒ2‹×LPyäA)=»+Ý[P…ï~> stream xœíÉv·ñΗ˜#éˆmìËóÍNâ$Ï/‰mæç ‘Ú’’EŠ–üõ©ÐÝ…­§gÄ¡7=„¢B¡ö*`~ذoþKÿŸ_}úÝ<¿9b›çG?ñðÇMúïüjóù |ão„Q›³gGñK¾áJ ʹjZlήŽþs|sSK§´=>Moœ8~5÷Þ6¼˜{ŸÍÍ‹yÀó¹÷ÍÜûxî}]NšOææ[l*Á¥<~9÷^ÎÍ‹“S-Ì •8þîøä” V )…âUsº'ÍéžÎMÛ›b@œ`‚ÀvÓì%0\'ˆ%<õ~27¿;99傱Aé„ÁˆÇ3Ï(* ‡æíÜ|45ÿ{öw 5f7°Ö µæ›³ …—Ð|’¸ ÁÐó&ÞÞ´6… ~úr”$œ@•aá°cÊJ8%8Gôpþø ÛZK'lœ#'kãåÝ8Ç“&nšÀß5Ç^ö°uÊ9¤LØRö7€­»>@øÛ&^)Ÿ7·ÿdž!îÎ É:±Y¡S™ßñÝ+:¯šÌþn:­¼ IJíÇI¤£ðÚ JÜ/Êo›(ÒE¹17î#ʧ½Æ ^|Dùƒ ürÞà«B9Xl¿?”ŒÅvù@(ÿµRy® ¥wPPKã#:+t–þJœá§ß4:w÷Šòߣ@8,ÊÉošxþ¨ööGùÏ`iÜ+•ŸZÍOžNÖvÞdhÉÏGxŠÛS.aJæ\ÍLúîŸÂéx  KH)˜æ@“Э¼f£FЖÌ{o6hç8À†±+¯èÎâ ‘7hs˵ôÙĹÒp¾ J8\y™@å2‹üA›[±9•nðRE@ÏàsÁ¤ôöøE "«]@ ª½rM‚‚¿IÆG‚ú6`(Äñ¾˜÷Ϲ÷¬9à¯S/®ñç³£¯ÔÀôæÇ#¶ùòˆ;çi7š ?ί~X׺©çòèÛ]cž^ Ì…9+LŒy^ÌÀ-Ùb³¦ü|n¾m*Ñ,L™SS~D† i(!È‚Ìhïã1Ki•œ¯­TÀ:·ñœ˜g2R…”Ž[I!³”ˆ1«ÿ@Žø2×Vر>½‰Ã5%½ Ž0£Ã ïÜý’Ì(ÝZا˦![¢ÃŸizû‹4i˜e—E¤ËWê`‰,zN& ÛpÈwáäÓ‡i02ÔãÐË|÷:Nç¤ ¨‹ûqm%í¸K˜š :Ç[ò!]œîŒŽ!Ÿ’ '‹ËÀŽ]+È`ÚYº{ŠÛëaŽ\Ħԃå9X¯°[Žs8œC sü>Â*Dª2Pùà=Ÿ,Ô…À¶&ÌuÛbÄÃHhÃŽËý8K3Ê ‡½J‘Ž7à«`)Õ MFOÏR¯•‹lø²Þdl—1büNFÒ Ó»ÓðnÓhñ¸¢T$ë´´cn¤Ô|iÊ$´]Q|ò$œJasBæþMœrT!4®B44FH£ŒÑÇÞ§s³ŠÑ‡ÞËL”¤¡@ 3™N…pU úyQÄá<ªZ6 ÆÉ9¼&¢æEüt|&ÓšÖƒÁ|w¢¶¤P=¢|Û€Íi¤J¢˜É…ß›8Âíç’`žä"Ÿ‘à„ÖÇïÒLÔ2ù(Ð\4z” Ì;>cW¦L\Bï-Ê æLqGY–ŠÊ>ŸNÃßãš`7:wÌF¬Ê„8âÕ,Ë'ìèu©KPn2yö—ätÉ ÕÁX•~k(ÄJÇRdJ›Áä$‘@P6SW8V8ú lª{N±L­‡‹8Øiw̱ xƒ -Ð@! _cP½¡aï}„â„“]3‚RÖj¬fÁÚ_NGæ2ÅÞǯ:û„åCt»JAŠp6ínÀ>ø;&š‚u97_ÍÎçÞë¹I\³9šÖ±€:W‹Ø n"f™õ-;Ú¥x†N12g_7g„ëÉò ¤p…’ÔŠÃ#O楉7Ø SñB‡•€’[¿ áP29eÄNçáìï<Òùr½ÖáSn-,OJ¾8·’µ]Ç^aAEáÎw––=ðgÔx™Aø.¡JW†tK¼e2àFäÀ”Ë’/Œ<*)+“»E!1rKhÒe£è®e|âj…(d•Ø£ÒŠ%-¸¤bòØ^·X'ÅEl„ºÕ¼nò,i>nqg‹%a?àÛú2bU«rÔ ™l ª:ߟÀ Z˜I!™4·z ,Ò\˘ïeíP3"E¡¹”öîùpÌÊv >Éý`¶ï0Dš¸8ƒ>Á2#ü1[èäIÉB@ˆ¨%˜t- &'¦])Q°# ':…j 0³ .ÄAäέ}å5p (ŧ :9#Y´Ø—(vd7ê~SÛŒ¹ˆ*Mí»ëÙ Š8Üe](–%±jøZ~‹X…oóchˆUË™ bÕõ Þ«Ñ̈bµ0|×ÊUßúõrÕZðÆj¹ Ý®y.µX¥Ži&LqÆ7…)q4¦ˆF§3àg™ Ó2W™/¡÷®9veàA¢0Ë'£7q2¤´?,²‚ NeÎÉS÷âJN¸ŒÄ¤f_ Ø[„æG×.´é˜i&¢´Ô4|”õ¸ÉQtöÀ]‚ÇprÎ]$C (æu aÑ´Nb‘Ypm{Ô|‹ƒAgkŸÛ~‚]à|7¼q›†hQPþˆñEzŽîùÃWÊ-Q$±¸ûnnÕåt¶*xAQŽhV µ;Q5j%Õ×0Ém.$™Ø'ð>•f7E¬u `”Ü ì–à¥e*0Æ}.)p?å{Äáy䮩ªÁZÜwcé<!éæ”äONA€?£ŽùÌÁ4Ö’BˆÆ*Õ<ã nÄúaú§qž[ahµ¸5Œ–ƒâ«]²hMà`å–N LeeN¦YÈjHTÎw³ Ô0ì¤ܶw^$(§ª›|„QW?hS"˜ÊÉ™9¦–õïŠN»Ò „˜ TzÞ?ïðm×E–•F+©ÍÇÍA¸kŸ¨mÏœˆ9[šM˜”™U:äVJÐ%äÌÛ?ÙŸÁ ãÑ·(ú²ÃÈt̶‘€\_K<8ûæ»-¥)³!»˜ßUÁÁýP+"¶ižåœ8dïÇ|¼m ½0„Å©U^ åݼhòß°ØÃJp¯€!ŠxÅC6)g …C™·'ûàit6·[³Ä><$Õ¢'Ü5F¦|®´oc·á¶ÊHc´/&ܶVÔ|ßöûU*ä`+0fU’k²šî0XY^ÚƒH¯½øY Ë?9[¤è&CNënÖ~D«–úóZÕ`p¡“=ËsÄÈk`Ý®Ž`JÎn[Z‘æ’BZNi.ÛõLÓ⨯Iµ J\¥×ÊE'®çZÆð:G‚³¢Œ)õ5@`ô½èk®1)ùKRךT^–® î[¹RàDbà--P%3zi{Ú¿…ÍcB™–Ò_ºBs@6kâlä3$@æšî]'K×Êrù lœæCøL Ð#Fek“ERlÉr^Zuamµc}a:€,ë21…à(íî…éÀˆðr‹Ùø°Z¨¡³š6®*5E´Ò>×aü\íz5è µ!Ú¨gSm Ç9»×Pñå5ñݹëÿ¥Û¿¨DzßÒ7³{~:'1¾›8–Cs Boê Paá NíTkVf'x_¸$qê-A.î†ú€tö@yèŒf¦m—žýˆƒ^ö°·R„j–¯s*.ªK`_z·XB×+efXFîèb…5xV½Z»Ó²[œÜùò"$t}É ¡cK€lEŽ£TEé n üÆ¥ëŠSé·A7—~/TÖ„Mù»@éT|Ot Ò+ËXˆætŸàË ?Ý(à­ DëFA)ÕÂþ>õ³¬|J < «l¨sU~¾SÎݯi —]`nea  r-Cg®IbTáC%4¾-¡ƒ€x])«ßò º¬¼·jCëÉ+ip0¹Ç’#Â`°[ÒPÄ9¸8|ÀŒiÑÊUP%R–^HÁÇEá;¬¸”HÜíD/ÀÑĘ©’I)‚qÝ·°P—Ú<PYA:® ø×‡5kƽ¶”dºhÂÌ¢W®ÕŽ©áM‰¬îó±¶æA3À±Mòû3LR 7Y9ìh`ªnÕçu%¹3ÞÅZ(âƒb®ÒVxOÌÛL‹-åÓ·\äáÜ ÂÆØ3/*™n†•o"öôrUo<ÃÝe~ÇTÖ{˜ª, L*xÇ?_ yjò ¯ÿe·Ÿ%èiü5Jƒð(¬ @”Æ2A,{´e1í²A£ÈEÆ  ŠI[IyªE§jûÁV2`ëµö›§[\Ñ<‡7 ƒc¶¾†XñXCìšÝhjmM6®b6FA¯`Q’^_Ã]:$á:Œ¯ë[›U‚ko‘Áö÷…8œ÷ܪñBtÊ’|±åޏ÷¨w…Gz‰Ñp¯÷¨šµ71ýèÜrÅ>ñëdCÂ…4“OØyKÅHS‰x dÿT*è$[úX‘º>©ƒÉ4ãUé–!Y9¾‡_¶$Ƹ1àlÿ‚Bj•CKˆÛœŸ¥œµ•GX²ùqH¾è³€KæZU`ƒåâÎþÊøPX68ŸId:ânª…éñÒ£xÔù*ÐSk%{+öÃLS;wÔg“²º–…/FUa±°¾±…ÏÆã-¼Ø´bzFo+ Zx&\“@›¦ºÌV1ºpˆ"Ì9Íö¬æ”’2±HÞ‚IiünÂ*.gª`Ë2Šò7b@O}Á‹ÔOàŽ"èÀ´/öe³·±K%Š$üÑ1ª{æ!í¿›äGã‚SEax]Mý²žg_P<—yŠ'tŠ=N¢ôX†F›Ñ@44¥æEx¢—ëéx®=C8ÀA)üu^aip M¿VA™~•~p…)?¨‚âV¨pÌ8ØpÕ±´z|7W¼Ü'ÛI7€}Á=†¿Eä; H7õìÇwL†9C%ó=ñÝ }k,ÁüðÚTÒl©Þ9Àû› BÃXÙ‰Òc‹Å;aU½pËyœBs—é^ÂÕíZä_P뮺̿o¹zxÒÍ•åêñ¡7ÑŠëì|ßœ*R|¸my /4ÿ´q4}J×$Üz8T%Û)GõQ¼·×»¤á½ŒYÕµo\—G°.´UrQìÝ©<ýѲ€“±ÎЗU)î úÃ>œè~ù«6ßšmdŒ&7€¢•¶¿§‡vå[{*UC»è”ÎñQ®ãå<ò0ipÐ Ê𖇩¢…WÁ¤¢ŸÖ¬3ñ ‡Š¾*F?#½rá’I0ùNe‘7Æ¢Áx_Ž?LçŠbÅÂÛG8µ®ül|¦ëƒž Û²f'Ü1U½ õP³·`¹N¯8‚ŠQô)0¬pàJR¿S‡œÕ4Ü"S…Íqí'F«¹«šžè+çéøökN‘„Æçc9ïº_4JÒó:è·…U÷WGgŸ¤‹»Þ[Á ((í o0⿲öyrB2ﳸF¥PˆÏD¥Pö^»`ÿÌWŒÿ…Sã‹> H!Ë‚‚FßG‚K/Têžc ñ€Õdx oêŽ#€…UÜ‹ô‚ù¦0O•ÀQF´<¾¸i Ù˜Žu³3Íw†ŸŽ“ùþ“~ÕRõÖ "(ÒÒ»x&bð9cFd/A’qŒÇ+qÝGp/ã¼Úµ”žÃý6ï”-äzg¶¼‰3[f{±<Èi¯à(ÕñÿÈw+îáFk_±¦`íuïáΔ(Þ=ò/¡[—x›Àm¼¤èñ½}¹RÛàîó:ëë8Ï•[ë;Ý|ùìÔ\(YÂD;þfBñ$’ÇÛq¹ì^¸ã–¿vVm /`W Wõè’¿J´œ³’¦¢þh¼Ì ç()%¿ü]¼p^†w0¢Þ8mè°K81—ü²JOÒ’°òòê\ù‹™æãóŒ¼W ÙKwbríºÑ÷ñ¥B¬Õj_ðé˜>Ô¾(ˆ$< #sìDËŸ¦·»ÒX4mø5ÈxztÅ æƒreõì´Éë¸ã~W? ØR÷r ½çië#‰adºç—éiWö2)P TmâC“°unäÞcÊD½WôÚ•<Ùð…w)Gès禡oéãèþ쓦’E8Z¬¸í†{ ¯›B¨a{vm‹Çs oû®|e6"Œ6r%—áh<™”s¢*d F)o³â$Æû†°©È!,¨ªêBœ˜Ëžâ멯|ë!éWÔÓé橂 +jÞvˆŠ€¡Óߺ«Ð¡ý a.û“µ*ºz@²g†”Z!˜AÜnNÃMPŸˆ_Í‡à¦æ”<øúèÿ Lendstream endobj 294 0 obj 5447 endobj 298 0 obj <> stream xœÍ]Y“7r~Ÿðèð‹{ìRá½Ú]ËŽØXqÞV~ 9Ã#DÎPœJtøÇ;3*$P@uõ ‡TÑ8óøòÝƒØø_úÿ›OgßÿävïnÏÆÝ»³_Ïýå.ýïͧݟ. ƒP»0+­Þ]¼=‹¿;¡ì`FµsR £S»‹OgÿÜ¿9?Œƒ¶£íþæ>•r:쯱Ù8ã½Üßâ·sZ9¿ÿ€ßJ'Ýþ’õ¹bÃ|9?ˆa´Ú¹¢º+œÙºý5›1Œjÿžò*/à.ööZu{_a [)~˜f7aþTFCé-­Ù‹#ŒÁ ÜN"íŒ0M¡Íþ3›™ Ìw˜Êzé‹öësé`p˜œoåŽmcŸ<¼ÒJÄ“ƒ¦š²\6.ê.þ08Yüðžý×d¤vx¤t/Þôˆá|ްo9Jø†ƒ£10Ú_üíLZ&8 °‹K §´|¯”šhEáñò‘ãš… ¡Ø ï~“»ð9%Òñùæßÿ½å8m'ú -¦½€ÞÙàìjp‡i !£­ˆ;¹)h±G€-¢Gª2v°Á,R±vÑÁœÖ™·jÕ ‰Cà‡@4£h°Ÿñî…‘ïò‘Ms~ÀÛ÷6‘fÿ Žìð<ñŽA~ðqâùÈN–¶÷ô4¬±å}óo> ã³áü`„¬òûÿ¤±ÍŒ6ëKd‹ªØ7€<¾¤6ޛȧǷtÖ‚.¯wíü"ç»ÖÅ("o8haâ >?‡“ùA™0H˜…Ñ=ïü±üÆC^ï_Ãíx8L¯–J`Lâ€B*¡ÓδVHÁœ·s±ùªMÞµ’vTF4„" B=ô`E¨zP«-®¬”ÁM!4ñwRš‚ÄzÔÁ)ˆÍþ.^Åš®G!G5D^5ƒ‚S˜®Çø8†¬t5­Õ Yˆõê,çSC²vp¹JnQ%½Kæ÷ð.mTêu5„œôŒ pËú¾ËT]¨ê¹õ3“ýïÓ «Y¬Qó‚y`óc”“´ºBÝ´õvRq•‘´‹‹ímþ¨‰·§ƒ“°¸I„í· (üd‡<®X˜ÓRî.þëìâ»î/2±U*J ü“ë.ˆ/âþ8·òŸ–[×xtßN4=èŠ Ö·ÿÑqq‚”g¾„ÕB5ü{+ âì©–-Ð4É1«z”Ï5gTZ ¨`ÕÚ=FÅ=Ža°ÞqyÐC×ñºÜXÒÁbóå†:4ryj¥t‹š yeFq+Š7#„-x°ƒÖþé¡»x•Ú뉄æú‹ÁÞ¤‘â‚JLÖÔHx5£°ë»Ò¯”ÏØÛ;_©l5€yVÆ »éžêú&´Þ«Z>@,%šÁ9ÄØ”%ËÑ:­;Í€¨×`WxÌ=ˆø9òe‰…kÓ£‰w*  G;„ kA@Ûìë…«ôÃ’g#eâŒ`“o¢§¯“ô”‹™{S”€,*Œ ÖlÀ z¡9ß³½+ɉ«øþ'%¸}~˜–UÂ/ÜŸP^'ûP¨` ÆÏ­ìó&wx3·Æ¹J_€ÒCPn†¤ìÞÞ&¤hlWSüO)Cø*°M«æÆ®Q‘½#LWÒOÆGi}σõÀ3ë~'12™I0Ì‘…ò…r«AX0£Óc cGS2QWP]9ð%îÅ—{éhSn¯61[„Åõt|¦Üyî\°‡ÑLg#J*nÙ6ÌgãQàG¥„••ç tJ¶/-K–8€:Yg*øÅŒªÌ«AªÚ2ÀV%[®Úõ ;ËaÖXÝãcØJöÓ*6‘ý< `YâŠryMÃ}Eü¢àÂ/Ï 6)Wý´ QÌù–æ±&kÕØâÇ#Ò·ânÿ,ñrËr‘Þ€3Dà4b‚6èðª¢RZIŠ/è”+€ÚdZ©°iÌ!) 9áí‚$+¡Õq®dTÃ¡Õ ËL+µFE `f `P'IËà·s= w‰¿2ƒ ¢K@ØÅI¬íºHÙ<¯;"¸GY¤r¬EÕ& mL›æRâ!7‘OŽùŒr©[½¯Ö2”à°Wo¼µ húÝ¿FÆSÜ>y]° À¹žä¢ ƒ•çÐK¨ÌžŽG¹òGÂ×àÂë¸Æ JþûR`“dªmEw£ô$è¥=,Ö® zšz\„ì¡Õ³1\7ý"îáÏî²¢³’µÑ€ ÷Z®êf8*$„¯¤”Ô ±JÞ׿Ã3Y%sJåáôl;Kúî„[VŒß¸L?Hm†Q£•0Å °×Ë gÕƒÊdɆm‰ê§2à÷=÷b.„†‰d×¥Æ&ÕÓtió”8| ‰#ÞylöÎÔˆ™z[» 1ãf•ìánL÷—WÓññs‡ƒ°¢Tµ²\õà†û‘îJXÕY– Úç¨Aå„Ìú)j­»f‡÷ùómî{I­-ïòç—üù*~ΟïóçëüyŸ??äÏùórž¸Åb‡i£]›c™'AçÇ)½w )ñå+êØ3K²¢€a‡W¨JèC5°wÔËü„IÌábÕÂð]SÜBÚÁ™Ùëþ5ß÷UþüÒ$“Ι?YßWy„×ëÅÊÙÁ}Süí<ØBJ¬o–!¹›?v³MS`ª}ÔlóºÙÊ>ó¿É­wM.΃µyÐ#ó•Eô/5À…5  Z ¢9Ï$þK3þ—~çÃ6-ô »ÃvD¨ò:°“…6¹/Û2üHÚe³)l¨» *WB<‡ö¼£õ íΛŽõ¿%“ûNň+fMWå82›º‚ݸ_ •¿gÈ<ÚþjÄ4ÌÙ˜ä÷ÅÞÆCIsö–:Ló”hÿ*ÛÍ—MÃú¦¶±™ˆ Öò[ˆˆØzDD`˜9ÌÛï'£NgßÄb°b†LÖ±=½ËÒàªjŸ AÜ5?·‹= ñÏ{Úæ"3ÆSbÀº5ÉoÅ×…ã9sZ«\@.È h´›?p.´j8;#ZЀ[¶ŒÛ>ÆѪ °G“%@àc|¢’êm–x—[¯ž›%䨨N 1àü—zàžÈmésk ½¨"»\Ú(âºFËψ"À8×Þ—‰Ùå(ÄÝPá iâ/¥•Ëí`U_ÆC…4¥ì§5Õñ}ŽúÂbç«:¤6mâ ÎC¶¼7âÚçƒHxIÀ—Óz¾±ãþ­´A`V·¦ê@"Pq6…çá'ctYu– Ó#ôbi•j&/ÔØÛ7üjNäÕó,ÆìNÒ˜Ó_Ažè´ru,1yhê¼nì¬ûAÐy—%Us¿Û"k1B²4¥û¢ Ní”Ê2†f6a>Ëmtªcí{¢³q*ºÿ¢ãpCáOÉêdcÞÅm™âÙ¨ws~¼Ì.ÝêÉ%'¹Šaº¬ƒ%ÁF0t×ézö²âLÑ 8…&¼8§ÔCÎ8LÊçâDµLO+`òD?XºàÜ‚ª›—Ùά@4,†4s¢eÀÝ ½ë:1ãEîÒ{ÅÞ,f^fY÷Cþü{–jÍ?úæ/gÿ8ÓÃhv¿»ÿ8SBc x§½QƒÛ}‚ØÙN Ï^v‹ßªÕ¦â7Rq€Aà â·¸¨E6‹¾|ΟÌcõ§üyŸ??ä˜:¾<_S±V€Î1wnå¥,^'^x$Zå}ç˜=rÉÊ»–Á™2ì‰S…Hpô§qÜL6ÉÛŒ™ ¶‚s|/<8ÖL~N38©‹t‘ʯ˜Ä±¨ÝZš=Ûç”pbósèÞÆD +Wu ÷)à¦[ä`˜›êÔš íHW?=CYH8›vk×ÈÆëØÜÜò>Ö pä—ÈÇ~,wReevmš+F,eqåÂ0à‰«Ä¦¡œ1‡¶tr|,Ê9~ë rÔ=Q ò¢V–%qXÆrè»é•œµ•Àð¤ìå!”cPú§6×r îø×+/Né­¯K©pl#zâ&úûŒX&ÌàhZUA¢Ŧ *³´]`º*è›8–Yö¢”\¾|‹³ëñHœH„>`h/S5¥ñ·qòàjÔˆtµž½”VT\szTÉÝH®iª’¸Ç®(c{éœ$c¥ ë˸¢P%ÒñHLk-M—ÙsP ÅØzÑìðãÜ: EaAÑÕ@úQ( ç­ýÜrºP„khÌÀ(7´¢Z(ò4ú\Ej}Bp#Áü•Ufeþ—Ê54ÍE‡ÀW¢Â’¼[%NƒøÞ7äX•žÏ‘óû8´PO¬9Ÿ¸>±°Ai_ /­©Ê4èÕž`iµ ÷ÁV©GD9_çÌÿ˜ù–fM¡µR:g6Ta2n$Íì!*ÍRÊDήÊìRÅ3˜:)n•¤‹sEVËmA†Gªmu¥j4€øàå–·"z ðr©é§v\ôÊœLlÃ;z•þº¯pë„_¬¥u-ÉØóIJÁñ 0Ñ1xÊ„‰_åsË`b,€H<ÞÜ‹þš}q,áªõ¹Á­ŒÙí‹óYäx•£.p\‡ŽjÃ!ìj3¥mkÝeMUeºÁŠ ¹Taå( Û¸p)Oi”§(t?­òÉjí>´éy ðk»úè É©’ÿR®·u-%úkêsà|³(jáÖFåz58½ªäXJ‹µŽ9¹8r°¶”´A=€Aƒ=ÕJƒ^ÄßR ¿¤›õ÷RÄXY/ç Ò^ƒ^ @Œ+C\õCþü{þ¼hvøqæÖìX²½Á;-¥F„\ ×üÇà­ô’fëxmŸoÑg·±®<[oà«:×l¡hMaóާãiÐ`xå5c NÕ:¤L‰î`'èMù3Ë‚Œ×îÓ¥U#kI2–ýg”žEèà9Ã]U•üÐ Ç,B°wï–WeÈU_Y´x:pÔõš±ê­#ô˜ÔÅDŒ Vê—iv={ë1ˆ9)µã‘ˆÑ"Iµ{• Õ+´ù-ºú±D¾g÷œyLáðî+nÃʘÅ$”;Ù:àU&‹×90Î0½ÎÁ" R©Ñõ6Â]œÒ¿J̇_{{…;c$lOW¯“«)u ЩE”‹©ørjÏ(ÈÔ";ÏŸ€Ùbù|‰Ý¥ð tö­¨è‡H×¢žwXz½C•aat®€¡ëÂÍo.Y̿ؿF¢ìÂÇè|Šrù¤`=~„Í5Tì¡°ÒŒ¢‚CÇN’•?Ì”ó\õ"x½ê òb˜AøEÜOÐjU‹Zl¡KÑ<ÆÜ}$°Wž¯gÅÐ-rÿAp !jyF+ßTJ_©|úåBb«[}™0\x·8ûëü²P# ¥vÄs%Ò8+ò^¶ž1‰N|Xf¬Ýó=ÉŒ¶òiŸk±`*;xFB£J¼RFØ×Zݳõø7?‡Þ«q'¿7…W⽯”Wô´ûRæs‹‰ÊzЍ~764šîªê<*ùàDqkã³DݰBÚî& ô¦|ÚÈM p¦˜+€\÷T±óš­Wy–´ö˺{þÒç'æŽçö^þ©t#„«_OÁ÷BÇv"xã[V€6ÃaŒúi+— ¤àd òÜŠkb²#ù¼Ÿ$ªñ§ O‰Öb‚õaÂÇ'h¡—,æ–Ó Tb)d‹Ÿ3(lÐO3ËóG€Ö¤p•8²éÍC·Þà]uK­>üHP.ßcó‰R=XÛÅ’N«Ýk6BHÉ>`“pÆzBl MÛˆÇ,¾Þ¼DlÔü&ƒ·uÄF9!Ô˜õÉJÀæ3¨ìÈï’¡L˜†?'w ?!ÄuüDt(e,Æä8…¼…f²˜¬·TýB“€’M‚­á1~=G·³£'3ñwÞÛ¼ .9ºb 6 qfª©é¦%ÉwOQ•AYŒ#äˆêÔòðˆ*¾Ù¤½ùQu2¿-ü¨WÓ¸%­®¼ÙñËh_g)Ä÷xVC­ØE7CëÎü©\ Ï"UãÖDÃabÓ!Àé²gh*©[™48šµýòÿÞƒ¥í7Š­è›G€z/ps_,:×Us=Éœ ­/Ò¬ßOn³ÚÙZdÞc²±­ßˆ)ÈGÊícnuOhró¢2•§Jý ^ŸyQÓ¾~X¯ Å”dÑ~qï¼—×}L¼K%Ä; 0—îËÏK˜86íf=77£, +Y*ÆŠaç-¦¯Hƒg‹bØSÒíÜò1ì•£ÃHkõbøÑ–GuaÓ‰¦4ø!`l7¿¯å·(z¼N>ÄÔ|“/ï3kNº83‘~ºÔ#:Vz«ç ˜ár’Gm>‡ë¼¡»ôr ¡'¼ü`Ð`Ø®"t—<¾è1·<àòÈ^Cc0ÛÑ˳3¾¨\Ì^Ôé €i$GAHM©€ûLAѰN¸¾˜ÿ‘ Æ§gU±‡’Åö˜Þsˆ±¤ÕšÅ<4½@Û§Æ ¿ÅX§ëPˆÃ>ýGX¯R0i ¬,ÞGý:Ep:…÷M¾ð€Ìr¦üÓç@e¾ ¨G0EÊ è5…Ïõ’N!Žðu)ÎZ.È}çªOLá¡R‹ÿ0ÿg¨öLÐSö‡*Ud¡C²~ü[aŒMÉ —iµ(qÃÙ(Ý ¢ÕÅËÔù±÷»ôD¸håi£={ìŽïŸªÚÔ"÷‰N¹ùÞÍ\E=+.ÞÎÄ_£f7…yb:œco–Д*û¨ïÛØLOËÄTÇoú—‹ Ÿ rŽÖ EÁ>šm5'ÌŸ3÷þãìÿºbæGendstream endobj 299 0 obj 5944 endobj 305 0 obj <> stream xœÕËvd7qïÃGôaÕΉoô~°ƒœ@`b`Á°ðØcOÛxaøzª¤{¥Òëv»mrfaµFW*•ê]%ýkÃ&¾aøoþ{þöè‹vsõîˆm®ŽþuÄÃnæ?ço7¿:…\nüä0jszy¿ä.ͤ™ÜX!'fåæôíÑß·?³I0)½Ý¾9>a“¶Ú9±ýÛRj+ìöüXØIk-q„‚¥’Åà3˜CIi•ß¾Ã|²Zm_Ÿ7ig·¯q¬2Ì23·µWn{ƒcü.‘GÜŸð‰íý2Ø ­é"ïc7€§Š!qq­ùö2À¯˜ŽNx›'yW·Ìn?½¼Ã¶µJZWÀM&9‰sk-üö*OHGßÄQ|4K»æ™,F/û1akº(ðp·#âá¼”’nûiưҰ]61øZ0Q¬AÀ @¿‹_ifœq0_Æ^œãýñ?N$œž¬3@^§@LoÚmkXG~ñBò‚(ÕÄË—ßÁ"\eòí—¹ùmnžv|MÀ‘”¸Æ¯Oþ|¤&¦7?{üöH§&X†ÂAëÍÛ#e¹I?¯¾rPlÍA¶)lä ‹ŽSÚjàÒ8¤ûÜ{–›wyÀ›Üû«Üü|Ÿ{¯so^-bµduÃ'¡TÂêLnÊZzŠÈ)QÒ›yÞqëj–VNZ•báv‹ÉkW°ïí ¯` ®ž%õøà&´P¢ñ9¬ï@·ßî˜÷ŒŒ@7DÀºûª\ñ»At·÷äšÀ}Mæ¦û¹! \ጠ&r%›ö¹ø)bÐKÁ£0Q)[Éœ™+ºÝöˆ”rž>déü¤°IF…1„YÓ¹Z3&×€¬Ìª—}J˜¨}Þ÷”HO$0¿fjsÂêç åÜÀb€ÓH ¿BÑ 9LŒt#¼%9ŒðVK¡ŒÔMF€¤Ì÷8öä¹ç˦èÑÒã|Õ§¬³‚š‘þ)R¤vþjUq!QR ßÎä%¥ʰ”î.ð; 'qý,[‰2¯Ì/_Ç})ë[åç£kRhÉð›8‰á¦âä®ÔûË9ÒÔ%_"þ„~Øç’û÷~¨©9@Ûgy–«È$‰×-ôTÍË8.ªÅgðóÀLÚ™'”Ótì"æ¥Á•€B:’@×B¬±Þö„f6‘°5nú† ÅÚ”5ò›(™žÃnÅæD î%6ø"€/„çhâ‚éY-q˵œ©ß8ÃAÞ‡EŒs<Ò“šPZ|<6hÑ ÖøsÆËÈ)ÖÃZ¶˜ƒ,§¼f\vm”dj_ÁáS%èå/³^þ6÷žv|](î`ªpÜËìÆ(ø«-Ø'°e3)—z0Q@…æÕ¨ŸÊDù²î Í×ÉüŠ‚7öþ35»& ›œr®2Q(Ôj—ô!÷[†MP_•œ¹Œ#PÁí$ë;²àÂSÒíeƒã@Î1sŸcÿC“ „=tìþ`\İC¾à±<ª" Æ+k bÊVF_€ðÌ€(b÷fÖÿö8!r"¬«wu÷8W_ñPzO²àíÉo È<ÐeȲ€ Ø©ç–uè0ã |r`g=žeC“lä67Ï2ËÞçÞwOÇæMÅÈÕ1 .˜P'ÜMÞ1¿à:‹ÚO‘ôh÷Ò}›ôŽtÏÒ4ÙLïóQïÒB1ßL87ëâ<å] /h ªž’$¼Õí6Ú rI£UæSÏ$áÐT˜sÚƒ"âyžåÞç£@ €Äùöå6wW­gû6÷žvøº ¯€L rjâš ¬% <™0L© d~•¡x2aÿ:„E>›i LŸó.^oòd™@‚ þ8ˆGPI•¯O˜.D7^çæUn6@†ÞËܼËÍ÷Õg±ùyjFÓøX)ݘžÚT@ 臚_ÅÏö'Å@ïh%&é€*}ê9€¸gq°¶gëè ~y‹ö%nJPqÖÅ-9¾W5cõ4)ìl÷«Eˆü‹îgòg¯r/‰)îÖֺɪm•4‰ y?Újrö¿9:ýìÿ‰¾ÀùŸ‚Ò×Üóú/ÞKµ'}]vO… pÿÇ.Ò¯÷£¯kyB,.›ƒ9àØsÏ¡;Ì0Iû$±ÂÏ/±}%±ŸáP™b“°ôPçžG*p»X#œ™83 z0 eˆQ´K\w1Nzoó¼çݱä$_åæËãò¤À@žŒqpRà$H*,¹fS¡÷}wqÇ/s“Èü«ÜK,¹ŽB CÃNû™…èoêÂ,¬ÕQœ˜œÂHõ™0Ñë.ìßw¡ü¾ ÃbÇ…Q€?ËM8Hd{tTÖ µ ÆY#gš—ù³‹.5 4(N®1~P‰ðÆdœ P¯»ðåGK9Ê üR™œé°cÊΑÃ@Û…|*ð@§uó}Àʧ¨ÏŠ m<²»W]à?OŸE–ã(«+ll I‘ h"`û‘bâ)A½tdÁ Rú´õ~„”d\FÛë'M;+ÖRž@ü±‹¦ëš~‚´ÄØ^Rì!äõÄRli&7M–Ÿ$)‚-"eÎ…® ]xí@#®ÙÔaª©‡Ñy/}û£µþy°>žZsœX T¥=¬>“†ªfã(ŸOÛÒôUÀhRf(~NÇKÍü wƒé`´zohŠˆi ‘f—藜ÕÊËn#e†¤Ÿ˜Ù®Cûº“ôÍ%O]Šb@•ú9BÕÎc–~#ƒ­C\ZN¦žCâ’bRqðäîPu-7~¬Puy\˜³&á¸_vHY h&póŸ¨|í]œPZYW”HË&Tû¤ö{$æ-œ:ã%‰Õˆ?ÈOô@H h4¨z‰Á °Œ*IlÅùo4q¦ßÚ½¦ L¡Pd‹W–3é´f†ÔвzæleC>­ŽÕŠ£J4ߥšIB˜r /‡™¿‹HEÜ”TŒÕMÆNB›¥>PÌÏ ¬BôéÆÈÒ^,þD¶¼_efÃ'R¸s6ïK¨"?»O¾”pê¨äg$zWz”Ôm“ÁHU…ÍÎÚÑ‹¸SiÔÃ3ØÆMB™ýªbqm»uD{vZ=YS ›')윫9A¿úIð¥šsùyx5§và¦4(•HAtüq¹s¸dÃåÎNÌ›² yÇû\¨½ã^=Q°ãpV×@‰„×§ãðdÀ®˜ZqÿüùyÖ΋øµ„ÂnÉS‚¨P^AjϨž¢C|¤äŒz\çX·è°š”Ö‡^f»'úÆÚdßx‰9Ó]0ö–7›ƒn<™î™Ð2²NUV¼uäyS¢Rw匷Ýz[Ý­b­¯5:èÊ<.áLŸ#¸Õ•&~r*©æÏ¥+ËtÈN;¶ì\š‡wJ/`Áéèx¢ÒÉ¦Ä Pjªºêš?ëvXu8vìôT…kšÂ0QY2ž>¤|Aè™2Ñ-Vî*Å©áí—ÜÎÜ$ñW•÷ÝŸ±»ëN‚ÏGn¬n4Q°’3ȹˆ.-šÉ0I%´f @ÕÛ¿;` ç‹jÕN™uªdÖ@:Þÿ¸t‡`üHpç6øñ 5èƒM~(‰¿UXƒPš¡ƒË8å%£eíýŒ9\¸—¥ÞxІ•á ÒÕó)þ"o wæxcv­,†Ã†~3Žq¬ëÃ&w§)%aÓJì/h(¯'á~U"ìÞ–£TÕ)”»î 5¢u(ŠÉŵÊõÖÃ&L¡tdkþ˜g£[%…¦­…ˆ¢×Ú7n.o€ùê{°xÂl^Dòñ _Æ1Ê”…¹>7Y¦¦¨èÇ©kµß áð"‰L·u8ÉÓ³›ˆ xzik^¢³ &upxf+–‚=(ïŸÛQ(¤¿\ÇÍËWn``ÒºÞ7Äf¼-&Oë_ä!Ù¼ûÄøŠÙfQÉë›{‰J Õ=¸ѲL•Xl-z’2_‰K’ëÇ­Ü!)˜=ÊÊÃøÈÎñÖi Ý|Çâ`uNüa‹»¼ÛêªÆ Ç:©ª{‡E³9ÈYÅKg²¾ÃH¬ R²ÐäêÈg#óCa,(ÆËûÆd2AÏÖ&äÊóð7•™F™‰Ê埩g#hÍè 8¼ãî|qKòËy ›²…"¿Œ½Ì<ƒ[;6füµ8ðÌñ]K!rý1]i\½ìl‚Åwb¨vÛ}‰‘:Ñï☪î&ã, ™…—ÅM­ž1ehYÞ”aÖ’u8 „œ>..¹+P²j¬¥Þ¿€3U„GʤKÀ%Ó S”¶ºèí1d$¹èíQÉšà<+éwä»N°5ÐØh.Ñç'Q.yÁï^¾Ìݯö ÕD]å]ÌxF£ÀÏãz ßè€Å$d]+¥ë8.BœPs¸èñ¡Sf¢NŽòXi*· óJ4Am‡WíZ Ü“e^çS^Rlh.È%µ¥çðKj±ÀæÏ/3DäæÀ/sï‹Ü$)¬_ç^RMøÇjÓ1ðò‡ú³Ð|‘›¿í èf Æg“žkâ]|B c$ë;Yà´Û•û·„>[3±ºƒV½‡S3÷,A¢°I¿vÕ ðåêÏC´†œ_‰2²LÒRuô¦ÎèÜn&+ ù¼™±d‹ë¹{d?šç8ª±{êíÐÉœW°ì#¬+vÅç‚K€¾„ÕåøÈ\k(S^ôèÅ„Qp ?&ÔІ˜eöã€`òZÓ¢T[i:ä_kbõŠÑ¹Ò¼¿œyLó} zhDŸªf\[KYùÿqfµÏâ¥ão–™&y$ÕФ«#%_sh"%Aèø@Å¥«G™…˜M#%UqÂòø2{cº† çÝ£ ÿÍ€¶«Èž—íÀcì°\MRÁKW㦣¤mW~ošè§¯¿VàmÞ£ tÐÍ‚Nö.õ<\7à “Ž3àËT7"ëæ2Ñ¡n®òoº›þ&÷~u¼¦zÑÈ7*å+»Ö]?IƒÉDÿô§ ­À»ä¤ƒs9˜\‰'<…8 žBȰÿ&7I6þ›ÜüªÛüKnþ)5»’ž V³y¥*&hþ¥*&¹a#Yмä&ëU““²Î :‹w„w8Ñ”DÝÜ0,‰îþƒsÃøQÒ†î'}%­ÐXk¦Éäš\A¡!µyz±†¶Š.ÂÅlÞd@¬é¤ÃŒ(Ö›ÚמlÔ¡:T–²aš-¿t…Å f9™ºŒ+ijA§ùžyF‚§í‹1µ…dc¦¼TÊEÂ}º´'×lÕÉõû:}}92ø«gu¼™|Uì6HÜÇè£ÜQ¤é|7ÍÞv¼z¬È[Ûß…É4Sá2ôø>Ùj."gø¶Wm3áh^‘ ÉwÕ HlÉÔ3¨Í0³áN‡ûðZúI‹øóÅ‚_ÅÏ'jþ¦ÞW,eGR,ŸG*e‚ 5Ïz\#rN8µ­Œ¡‘­”ΞMF×¹ÃGÜEoOËàˆh4¥t#C1YUÃ;u´[«›SçErŽŠyš£žß(?à‘Òô˜ê‚ ÁÉû‰wOe¬s.&ŽìAoäi"©WJÑꎤÎB ƒ›¼ÐkUf“3$ O_n‹'φ†Æ]TJ:òã™ÔåªßãƒéÎ*ÃŒõ& #2¥•oú•ÁŒ€g—ÖN6Æ×O}[$ÓÈÅÕókC Ë÷‰# òáq"‹2´}¸ \ÕõKxÛÉ':“®ÐB³nª³À©ÀŠ»:j^K’£pɪ50z?®镦&¾¹$¹À±óY7S$ªVž¡ûå7Qçǰj™†ÙSÅF J…hyaEXò}©¨˜{' iH)•†d¨Çž}›cÄÍðúÂus‹\Ã&cëÊ3L…]ÍëH3tºÚºàM\Çé:̘^z]úè>Ô˜6/}{MUmG6ï®ÎOIKfcø§¯“•"¸`ª’éÁys¾Tö…}G3æ:ÎÛâóJçC^uMÎà$Bµh+ðè©PI¿ãvUªÎ›WzþJîà¸÷ uéx aß <,(KE¸€³a²xZ–"¯zœG›P¿˜NÚ2ffĬ.Qß”¤’ˆ¿"\œÕsUxǃÑ噄-‹uww†q/;»züqÅÖ{3%ZÎÆžoLfè]—é4>=åléçíL´îÌhuš G×Lá{WB(¬ßJ=sE|UfÀë×]a+wåà{K‚®©{Mg…Wu.MnyÓš¤ÒtMÒæ.'JfCåšè&W ?¯ú{&äIµZQá° g‡1šÑ%¶µD,Ðã¶â-ck±.Ü—‹BéÄàK±X”Ù;†'ÿ3nŸ«²>Ï‘ÿTxÿZϪT8ÚT";JV´Ü‹ÔxÊíÈO¨Šâ6¼3ûÜ ü°ßtE3½w³oã`+‡a„âÕñ0±l*8¾·±j„E„¬È?X)®WºP?NÎò>[ô–·)÷Y1{„"U7Ý#1ÄùȣѠ•;H¨IOĘ£²ÞÕU9áI[§ÁpS¥4>í§¬ì ÿÏGÿEøendstream endobj 306 0 obj 5135 endobj 310 0 obj <> stream xœÝ\Is·¾³ò#æ8L‰0öåš8e;•Í2s²sà¢­Š¤l‘’#ÿú¼‡¥û gáHrJµ 4–·~oéùeÅ™Xqü“ÿ¾º=ùê¹[½º?á«W'¿œˆøŸ«ü×ÕíêOç0A¨U`ÁJ«Wç/OÒ›b%”e†«•“Šq§Vç·'?®¯NÏ8Ó–;n×§ð¨”Óa}ÃÎiåüúÅ陚y½~;Ox™’ëŸq®qÆ{¹¾Ág¥Œ“Ž.÷† ßᛆy[íM–&ï½;=Œ[et9‘õ2žhzñ.í®´e/àÔwäT¯âŠV®ŸáÞI¡Öq ÃWë×dn¼­bA¸jKzƒßÈö…8Ju©óÈ>ð¢è]Ø„êî§Ò3-­YLoq û-rçÍú=Y–2î!QÚI±¾<=ƒÙÆ?]°¦ôC9Ž­xøb$ÿ9ÿ뉴 w \ç× Je …;KÇŒÑbý+¼$9Ú*éjÖ¿ÈÇ´=ZE¾ZI ·æŒÃE%—ù@B±þKfŸÅ}´â.à)ÏÊ1Ï„dF[‘NKšH郭Hy{z¦U`ÞÔdÈ[ñàŠ>!ë4%ÝÎíË•$œ2O‰Ã׸¶gŽkT •†5›ÃÂèpÙßâ]:œö×r‡£È|ÊÅ·°ð£Q9ÂO˜¬50*¸ƒ”¯dáJ╔푋lSFSF4b1=Ó}@‡µ5Ì€6Œt«–k¤ˆáµ ÷ ô¾w…A­DÁwޝŠà_Ei×Aâ!â[B«†AQŠeVÀf»øW¥Áôùm1bdµg³ÁK¢žEÝQ3n -i£RÀç%Ù£`¾@q3Œ‹®6Ë%½f,ׇS£™QB4Â4­ü¾÷žhDµ•[¯ðÕs%¨ó Áë…ÔàE¡‚ËMïðQƒUGs;ÞÌoçÇ«ùñn~¼œWx7¦óÔÎÔ¸€-Ç©ï!=˜Õ°Ñä'øõÈ0õ`¾àІ_u=¡ùÏd º%ˆ pª¡„÷d½FÉñLRÚÖ§ãͤ›/o‚`ým4Ó/Zð¥U)>¬ÐlyÔøbUâl­ U£þÍÛD-.3dÖíŠo0|„’¾Ù´E#ñÆ I*.±öfÑÉôñÒ[pЛfk¸•ýS¶=îݘ´8*MÅR2ƒ§‚àmkʨ٦¦¬Ý’ДñÄÛ(³þ.’ÎðÄÇ(Z²'=¬šh+º Ì17tÆ AŽ×›e' ù,c!0Tz²SE)Á(i®‰xR`ÔÈþ¤Jd:ý’,Cu¶ã`ã|¢pDA2LJ7¨}Gj]`nòïÎõü»†aŠzòöp¹IPpi Yë¥qXó.H«»%JÏ€±dF#Ýx@/)¬ˆâ 2h<!¿þý@ð:,tkš}EV¡s0Ì0ËoDÿ΃[1DNaæ«"0l *È(¨¶ØN"¥‘¾-Ç=F~;¢Â’;;Y4¢ÜØ鱦ÇJ|$¼W%µÒL›±p_¾óyjù^"¬ž%Ô\àT=Kˆ’U,¡ó °*oGW£-ÑóhlZÀát¡ ¥¿xߥ(0‡DÆ€>f ª2‘ÔxP¿®…–* HP©"q¥¬Õ›¯VâÑ Jé!R¡«7V5À‡§R+\.ð’Bˆ‚uSÙÓ(êÓ#¡ˆ:5ÊÕ{š#v2EIÅÄÓ8w¡¤^ T$ tÞµŽkõÕŽIõHªåp£´…WÕQ¬> ÂÀߣ©¡G9ôaÀ¹¥„N²€·å«4ŽÍ‡íZf˜B-$ÉÕPi¡qOÇ„u²Ri÷7ÚpT®™¹Èu·+p‹¢l¨ÏàlàZàŽ Õðc× F;Ctã!S}δ-ÐP‘`̆Q+°éô­”:3`Ó„ïæÑ»ùñÍüø0=Ò}QNr\Ù©I‹)†K\öpYy²Žµ˜Ü”â@[§ wÙxS˜« ÉÁ›£ŽžxHàÏÖâU»4zÞðm¥ûQ< T–Ý­,¬-È„äB3å§‘ÝeVZÆ51¸¯LÄÇ×]9oíd›ÕK8ßUêÑ ƒHÜó)h3RD:.ÅL³©­é$Š«ÐZïCäU¶/­#“0C«Q@c¥ì×MmªGUVš©«.8¬fEIpZÝ0}Wc˜‡tæ [8˜¨g*Ï9H§g´« ,HXÓÖ0}‘$¶˜*Ý€±´$S\x‰E$áhSHmyÌÊÇÌlÄ ØŠ âÚ†‹±6œ^‹ÏÎwÕ[ØdäýÛ>­ ÜÒàF¼–o»¡¸‚‹è ö.¨tMªÅƒM>‚§7­ÅˆçÅüøj~\°8úr~$þí¡ymì¾I‹†a¥kªr_MZ$„Mu¤’êÈ—º¤‰y aË.Œ6Ùð~ ôiL²†Y/?»ƒb¢6ÝKÏ»i±6…&5 M~†|PCUy¼"Ñ•Q€ÊNë¿Ï‚ù¯ùñ»I'¯FJ0¯Vƃ4ôêÊbKO#{ =ˆ TZlZöê}Ÿ|;+Åí‘  gó†ãÓg‹µoQŸ Ž÷ ¶˜¨µhºò,ˆ©TkDd±·»Pß'áç¾×™Õ·#üª‚¤Ë~‡ÍDgU.®mé9©1E|À&˜}½þ7’*lD¢‰ð R0/ t ëhZƒÃì2Ê ÒÀ(~[m¦<²Ö¨ñ¸HŠcã:žTè}‘VãËìßY×:hØÇêúÕ÷9I¢\¹I… µ}6$n¢B“BŸÀ`†Ç4°Žö›ü— @éhãek>¹MK¥Ä/iNLIoöc˜~Š)ŽÀ¬¨SÅTN/É"}\BF?¦õœÔttPÓy$!½`ò}J[`¦Võ”{‘²É¾¤ŒÌa1MÌ“ˆE·h¼d/¼ ŠÓ!ÝcÔÍxƒû VkÙ´ÛÆVä"GUNsÁ‚œ¢=ÚÜoªÞ›[&ïÓn¼Î–¿$÷å­ß¥ûñ~&i.O7©ó•Ž”f®s{ôK°éû:¥]ƒ ‹Àßûtè‹VýËFHˆ)©ú·“ó?þ¸þ÷€W‚ ¹•R¥´N÷Œæ¢vºÁ×/˜Ó­* ¤³›ÓÓ0ÅGD.¥K• ©Òe1¸[7fS”§p½¶Û SXÅÄDËPX<¤ªú ‚ð´ÍÏrel£r¢î 7ÈYj‹ž¼"h–Ÿâ°Ý;u/i’"Õù4Ã’þ^t.UÑ4Ìç¬]äH¾Q;XNµ»ºƒª_v[×—wéÆ3Ý6ÙÌvZb/BÛ¯…c^Ô›äq¯*'Ý-ºÕ ‰Ó£c6–ÈA|%úÖ=p‘Hj”ó¥ ÁEæ( ‡7áÊ8ÃW3(šXŠŽ'©öTnœº#GÔ‘Ð"p¡þo™NOÖåbÞ˲÷Û¨ÈçÎ <Ѱoâ.õq1NTvºÔ¤{ÔhЮ¾Ø%A„{)'6´½Ä×åê­[xr„¸ ÈK­Z¡²vKp×ÈýÔ⥉Kj0WÆ~9Ét\8®Á½Yúöeò»‰”7uNçÓÈdDcÊ“F>€lÁ5Ír Æ/uz¹ŠDJgcÕ:ðL’j7Låž„V¯SGCJ¡{ €ü Ÿ(c>ÿH2`ÔƒµEwÛ2nAIÿxêa/éß±À?–í¢°)Fd¯Ò›~¬¡”I=¶•ºÕ“WI%ð^Zi°‹e0€´ÓÈe0‹ýqð {—FÛ2Øóniëz^¤¯I졺ô¢îo1WÕLŸ00]´F@ÀRµF\<;YHçxeJÊ l¼,¨ 7ysá„QùPÖ[%pë½HÎ@Ç·S‹_NÊh¥°ßÔÛ ’!sÁHîª5È6Q¢u0\¨nÉ>àç†2us(韼4k1«éVàt$È$\Ù2í§‘ÝeV@˜Œ+Äo)ˆLn×_²Éö"Ç*ͪ9;5ð0T$©¨’éwµ½ ŸkžCÞÚû¿L½bZl,Õá‡}W˜zUwÀðžÓr›Ð†’cÔÛÁŽ9øŽ´²Ü¼S¼Å£9쀥eÜ»´žW¦—ËkÓ¶¡ŽàÀÇ·£ƒAæЉÏKVÓ÷²Ú ?¸Ý€ühx +ÀVk‘èz!‡¸{kuCNkè%Oí4ÒŒÆ4÷>¥Àar¥~Sý!ïÛ´;”"*‰î­¾žK‘>TÛFú$ ™ú"‡TÝàP® äzôÐõœïâF±cêÓ‘¶ êo0ª¿M]¢[´QŽ{6÷YG™zÝcxóÑV±;$Š—Y£Íß 2Ï2¸Åþ×9«)üZfè*?œÀÁtç÷†ßÏÑ,æiX¼ù™DßﲸÓIöA2¦?l§áA/(ŽÒ\漨B\<"àzDÕydãsiÄfO€`âã× l! ¹Åå].YÄ ¨­òù0ÁX~L,÷:ÛÁ<üvæØÏd8cOÓMeN>‚I¥ÁÏ^VgØãî] __· ÆoæQs0û±~òtÌ—ÈbåVJÍdl,Tà&|ا¯ ’+2)ÜST[°Èc¢ûÿi=Ï Ÿ¤¿'“¯Ó«è+/aŸ0hUà6j¢0˜" —ö§0Ú2îEMáoZjÁ}EÖtO°yp@£–:Ù®°èZoY0÷KÕ¦­Sgƒ/ÛþLÈfDas÷bÊ¢0ˆPËÈdÆÝB\¿©HdþÇ| Ò®r›USJ$¨A«'óï,Dö~¾Þ‹ý ª°#\µûEuž4@PÉãï<ìLÐ]~ ‚HóÍ<ár&èc-ŸâÜatA)žG 8n÷áC~$M¸úò).C̳Š—‘ý)+`Éà‹¤øoÛQ`ÂÑ(î&[j¦ËÈ÷€ý'3*÷í„/[ÄP‰;Jðž™Çfl] ~9€ø€Æ¥~*ÚÒ’_)»ùT´?b$$EÀŸÀ¡´Ï#Ð^ø{{âO>¶-oºˆ„~·À]r§˜”âyäŠp‡íŽKñß-pA;æ)ª)#ûSV`ÆYÆ ÜIq/%S’R<@qî\n/ã=“þ¤Ä?̤/j6É©I/#@¼öê“ÿÑêK’?Ö£P&@zcYþ¤ÿ,0²~ëÏ!`÷ ÐÚ0‡3Ò[¦`Ù£øà-ãi¦Êϰoñùcʇ‹˜·1@°‹ÊAçµiô§ÓJrÚÎŽß0s@Ngø³b<[ˆXL•F1=Näùþä›±±endstream endobj 311 0 obj 4432 endobj 315 0 obj <> stream xœíÉ–5rÎýul•h_7`f.ó€¾·ÛÛLÙ íÌ×O„”™ mYYÕU¿ñóÁzi•Š}“üë† |ÃðÏø÷£Ÿo7O_]°ÍÓ‹_/xøÇÍø×£›/¯`‚ä?x#ŒÚ\=¹ˆ¿ä®Ä œÛX¡¡ÅæêÅÅ—¯ÀÒÒ)m/…¡7N\Þ¦¯¯›ž¥¯OÒð&Mxš¾Þ¥¯Ó×_ÊÅÂ𦘫—r„aüºÕ šËËŸ.›¿»M¿{“¾^§á. §!ç.­@&Ó?OÃWͯ†—°”ÐÀŸ¤áOl¹`lPzD[‚¢BÅ“>®âàê³yøóÕ¿.¼¤ñ|{ Zk¾¹ºú _‹TxÚDÜ]ëP¸áçß+GùPñÁI¬6»1¦,’iËôpþò޵–NظFÎËÀºRj?-²€Qá5Xvx“ø{w£×=Œn¸q#F•ý 1jü ™Ö¸nbàUø·Í¹».¶8ç@ѥ̇ɀ9ºÞöª4×Ó&Ž®›Ç¿N+Ü•ø´BòŸª@O‚ÄÛ¦–þˆÏÓâóEÓ ýþŸ{åýUqÐð'¸P2>Ÿ#â„ÒL0§0–ÌYË!¶§Öæ=ó'ÁDÛ¼ÿµùó|ø|™€¿ùˆÏûãs—€¿ýˆÏ#ñYú@øÝÿ>Oa( `.ÿóÏ·GïŸýÏ÷ŒÏ2ÕWøãCÁç)ôçIñùëÏ÷Ͻþü½ðùçëÏóáóƒ÷—¶V3>(_§ÈÃðEZŒÄÈ?=(/wƒwó—ÝŇVN<< k¡M¬œÜ$à²öqØ.v|ÝœKXóaÁA9Y´¤Ws.üå”í}$­”8öM$T’GN÷LFNÒqë"ùÇ9@> r$¤›¦h+,ò~Ö?«„¿ä"ªñ3àa‚kg3§(´OâWïÜÒ6ðÝ0ËšúˆsdðœÃZK‹¾jNø6Ã{à0éƒ][I–AÚ{°¬ˆn²U©ŽîJ¦@­7²U>K¾L_ߤáó4Ü¥áM¦BK3 € CiÆ…Ÿ9ÌIØzXFIf}PÉ’Û¨PÉ > Lö²MæËáÁV)3Î/ÿ¦k¦05´…-Ø5§J…xÃZ!ÎpÜ^n`Öé ܰɎü®'¿þÝ‘ïÈîR~eëGl:µ¢ZG]n-Õec"wñ@û®M_ÇÙ–Iª(é"T ÉtŠü ‡ÜgÒÅíÈpò°:Ü¿} Õ ¥P…üϨÓ¡ûFþË—µ¬iKGÖ¼‰Ss¼ÓÖ}ˆ¬ „Ñ—ï"x®è¿SžäÇïþ¥7ý%…šúñ§#B•„%‡¸¼¶©Ë¶Ó!·Ü ­ÑÃSÖèâ×ÇiH )äße´”z…°*žù…D¸œ¤èó%ÊX`.P=mÕÚ錷s‰ÇÒ8÷2[Ž¢ô.î¨}nnã.Ì› å΀+Â3¦‚°¶v¦Á¶“Ô4µÐ-e5X0#øZ1˜Ðxý–|#ªK(|»x0 !5]ï¶%W7q.—bí âD4µ@©J{B_%î}˜ô;e؉¸LR-æ•ÃÜ]bhê §•€OB“ÛL¶ˆ9I¢5Zj'+§¾m5nrŒÌd‡F‚ýÖ í ¬ÍÑ´||×"j"€ ˆå°å Qà5ò¯Ö~šÌ¼ãz)õ;|X0Å<µ“fq{ÑXÄšb¦6p@fU¦±)·CR@¡j˜‰€ÊŽº Xqƒ.¿îx|=îGY µ0=QÛ‡}÷ñ`¾ Á|nÒŽ7q: ¼‡¶À˜":®ˆoÓG œ—eX >φ9K„Ó$†Ùô—ωDQé";9™Ž“ËI·ÈïnÁeà—üã×Ûæ¸'¿·?û\Ó!pöà̸é›I=@0;+‰“vU”°ÌÂ6#+ÔlIi0àKÈ%UŒS´õ§²€B€äui…ƒñ¡'‡ööO=hÞÇòP[®³8L÷´^à÷Û¶1¹‰8ÅÓ6 ™"×€vˆ(Ÿ¶!kwl™SJfñ2¥i.d¦$CˆÁàêz¤º­èÂÎ/"^ÔmÊ×ãªÒV¿jÉ߈U@ƒhyš“v™õØÿÉ¢y޲üQ¨Á4øž βzxÿT'*„] ãA½Œ9‹¢]RNïÁ]°w`e¢2|Õ³ »8[j¾VѬ²¦+< àåDáQb»Yôû-< ‚ SˆŽâ8¡íø+»àqáb\„Qèœo º!=@è8ï~B÷DzÐÀDWècrÙêáôìO$tà²:¤9G­=ŽÖË\!ÀT0׿ą!Œã¾ËéÄb¼Žp¢oºNærûbÅ ˜*:ˆëx° P­8_Ö‚V£P…ªƒo‚eûw´PêŒÂ( ;J­×/·1Œâè àbÀdyü¿ 3)éZ AÎú@»J)Ã錓¥5…€Ó[}˜"ÞÅÕœÖçÕŸáa€«½ZëPYÔU†³\Ðò˜6+.FÖÈIªËk1 |›†ÒðmVj(|%C’•¾NËô²a™ÂšHËh[,T¥š¹è)Çfmù)NvLZ7æ €jR¹ÂSã32[¨AF1~^òç"+fL¾¿ µ¯qòßâþFHÝZÚÀûLäX/oÃ[6ÒðmI¡òNuK!|%!Ï…š¯±.\‰uf´u ]8Ÿã¨kAs祳ð3tdò-:•NÀÜ:Žt˜ôÝãä‚^× ºŽ%¨$×Ôûɱ5áøe;³FÿÅÉàe@ÜVúû ôb… §€;v¸óA¤¦T™¼—Ð~Ÿ² ɾC\ ‚’¹'ÀãB…Tzãi¾jê˜_š?»+K>h. * L8ê €|rR›ª2ËÊ ú÷Éɱ÷òqp5ËKG2âBj‡Üœ'®¸Ú…\äÚÄ6 u‹u‰mXW°åzàñx´§€{[ÆÝ¸¬?0bÛÅÅ@½4JR~š,ÄMÜAñH>¢jQ¹‘ÍÜžÝSŽ=öQŠÅzò=¦ #Ì嬄D”‡cøœ»HÏ#xg^žï0’ÜÆã6ºi>ÿ]Ä(Þ£tQŠ“,´È´Yæ39Å4eOy«'¹7#,a™˜ò]<°U*.ìnyOSá)Òø°®zeµg«"Hë5ýA²éå9:$¤ÜHp€WB{„ÁÊÏüå˜öHã îo¨Ñv{Ä7ÅWb|J3Ó´-@çg)·F1;Ƴ”ߤq˯ÜÂ/Ðm*,På_–~ŒUXc“Ÿ»•š6Ͻ(Ê,Eož³Ç²K`h©rËNŠÌ nêÞEéÇFò\gœÕ°ì¶›¢šEm¤2%ˆ%s²Ä¼Ô"ä»Kû­Qµ„ÄüD–sØoØÜ³µ©yD޳kS󸶶ʂkìØjúsKbÁ¾Ç6‹`Ü<6XÊò~v™Ãu뽋޸‹f¼c˜þ E¶8Ea¢çbÓ"ó.n¤ú=Quu;6ýO¡…¤ îï~Ý4Ê &<Ö´x©ÀªÂå‘îö›‚ƈfÓÈeý2ïY]“88ïY¥K÷„ö–$8w?øP?v€q)K ÅRòG¾â²Á4A(F¦ÁN9j8z]C4°¤¾ÝÌ4‚®BèÝk|š~µ ®åMa™Ö»S¥Š¿ÄÖଖØO N‹ÂB±$P2%âþ$Lé€é‰/ôWbJò‡.öXõ€„¬:xTÚò=÷#¯iÖyÁ2+7 -X³†Ö'+÷Ár¾° ÄT<‡©ô0Ö¢YSXÛõ©X°¢ú@½Å­ ¾¾ìëXgòàÂÀ°6ù4_?ád0[®¬>àl¬¼-•ƒ„œÌ Qmô£ÙÜŸúëšÍ°‘¼ªÈö×ýüqµ’®š|©^°ì]ºéL]K ³öëWç‡YÿØ'æš3yÅ.3§7¼´/²¸¿Öaõ¾Ž‹ ¢¼åØÂüI–23¿/ñÞÑlJ¦pñS¼à`0íÎ…² f$/ eUh+_â[˜bq.Žæ[‹MÕeg÷¾®êéWe >smMÈtN@Ñ3¤¢É`èÝÁ·úË»äQ/R$ÛWk2…¿F¹N~ZY=à%¼µ}’ùÁ)Q„9'ÊOˆ+˜ª\pO\¶Û5Ü~ ÆÊv÷ ½æE„ @9¯ÖF¸/ ­ÌQL.Ö… Øù}vc‡1ßH9Ö¸¢¾“Ù ‡SGXÙLa¥û3+u¢ß'쉔›‚Iò!>³æ²t9IŒiìmî%Ñ”×±a«ÿ •¨?Ij¿R"ÅÍŠ:B_+ËBÚuÊŸí [-¶&Πíñøí êïþpéíƒnè%ñ$Ë®‹¬,Ñ'>Ýý‰™ÖZÇÉ F‚Ž/Üž%‰'1ñÒW-´s)ž[¯l4ÂÙØÐ²®¹g Öì&j7÷IÐ7eXÒ)èÔÊ/ä:ª²Ö}aöãèbZ]7„…Ï‹#¡›{ ‡kØ<ú&ÔKR–óìw!®òXÆ8:5‡·CñÚwÑùˆ»i{’Ԝǰ–/{GgzƒoE…e_ëÃ.2‘ Õ¼áÒ‹eïÁ®Ô]Ç÷˜A›¾o'ð*ú¾OV=´§òí áÕ­i4fæ‚Þ3 mÌ™|;7ˆŸªôí àA¯öíðŽšYéÛ|xwÉÜ B¤£÷êvíc]·áŸ â÷hvD0ë=~\utË#㽚ã}+æö§â.ŽãU'j3òüDHÓË 6u.ÇËqŠ÷ ÖRíf‚tu_NHIwþr|Vºj0‡hrîCûXãyî‡Fëdí^ßè!—©8Þƒö‡*Ä3ÞåÀ»Ë¶w™ ,Ür[y ìéÚÊqŽ®Ü=Ü…éÐVŽ#syŽÔnð!šÛF_ù4%ú[h¤eã¯KìÂâ§V¤ÛJìJ¼оf•BIPˆ{$mQ—aºßWíX°1jªƒû±ðw¶wñ?×0¯W·xW™ @cÓ¢Ø!¥ áAñqÛ3WUHÆÍ.Û D¹u÷°°^¸oe“§Ÿfì˹ž ¿¡Ý‚ù ½oõ3Æ+ا¥Ýúo"Œ ç†„àíÿ„€LØ›çm?š°÷òŒ±²§ä Xrl±Ç§hø|*%§X^½™vᡱxh0B#¦…hõÂÚ*¾7±¶³' »Ê±Ã©š/‡…#Ò{ÏÐJ;Œv&«\¯Ë5²Pa‘"B‹ôHªA%(" Y¾ V˜ZzW§<)ÃKóí6â=å‚úl‰wX;w^û–‹u‘÷…íÝȯÛLÞå³x<´n?óS4×âdS´Ô6ú+Žhp(ºçwŒ/µo"(°LÚ’¥½¨ÏQö™Ì‚õsäÝÈ7àž­xí#©üÞ…‚/P(Aw%Ÿž2$ñz¹e.…KÞy·]ÝZÚ³ÆåA¶åüK3ÅX¾ ÷ãÞ´)¾‹¿Ô¦TµÓŒf.Òè9)=õè\·ß$Òfr»µ*Eêa|i²+þøäé ‘˜Í­òø¶# ùñ9˳"ñêèÚÜT87[ûæL¥õö”"³þGŽfÝ•/ð,QD‰ÐõwæZ¤T<äãKZ)^uŽV⥸,íKñL¨R§endstream endobj 316 0 obj 5049 endobj 320 0 obj <> stream xœÍ=Ér¹‘w†?âÝæ±£YƾgÚíe¢=wÓ'ÛI$%ÅH¤Z›%ýd&ª ‰­XbÛ„ÀCaÉ}øóALò ðßüÿó7g¿þÑ^¼?‡g?ŸIúñ0ÿ÷üÍá¿.a€Ô‡8E§œ9\Þœ¥/åAj7Y¡^éIx}¸|sö—ã‡ó 1+¢ÐǗضކ Ž×çZ›ÉÅx|{~¡Âdƒ?ÞÃX­½‰ÇW8Vkë•?Þž+?u1Û5µðÂßálnRÒCî°[OAÊãÓ¥ޝÙÔ0æ¶ÁŸ³éžæ}ðé^®CnÓâN»áiË aŠÉ sü;ô*¡uôËÔAúr¯ÓÜ6ÅçK«;µŒ¥ï®Hƒ÷C= Èä$œpHÞЄ°ž 5„q¸¶¦è¾e“s^Ïàn„[|zþ·Ëÿ>SÎâ<@b—W@PlßÏÓP/W8håÝ ©`ÄÓܼJp÷Zñ^v,Ö|zi`áã—ó &«¬<~›³Ï“Á[½Xöz!á+ãdÚò{å½Ñ€$NCÿ(¶´q¦_ÿ¨eÁcö#ã„o` Rc=|ˆÍètW¹÷EwÀëÜ{—›Ïó€·¹÷CîýÇÚL[+ÙßÿÈ(—­Mù€½ƒ„)¨G³µïró 6á¼Z§æpmØv .]‡0iµÍ 0$*³Ê ½B!N­‚5„ö$‚°)ì/"‚¢Ðê½"6BÜ+‚àX.Êe¾ŒÆ¹€3ßUuì¾XÀ.`î?bwTæ9þ/¶•ÒÚã’ò1±•”ð±ÙÊZ¹ÐNƒRŒ€+„X•füÈ@Á…èø³uHçà1"ï½IÎù]îj°“YbÕ—`dÂƦùÈ =¢ÔESè$(ò–ÉÙéß²ùø)*>— û ‡ËÎ.¿ùËñ?‘mcôJ.ŒZé .%u±º{“Q׽Ϡ±. æ@MøHFÄrþ÷i§ÖªQܦ¥-ðY–×é,ðKB¾Ê‡ô¡Ža@X]ñoLºˆ¹ÿÉ’òϹùCš?Ü'4UPËdµ!ŠÏV€Ëˆx;&4:·(?½I`”rl-(„î?·*º¶Y8¨g:ˆAr uË×k¿b’‹y1ïJ†á¦úùJl·Iˆiác’bALPQJ1.®Nú7Ùè= vN%çîJñ#L,GpˆV¢;æŠá„ íñû$Å•ƒ¯ËmuÙÍ*¿Ämy‰ûõÿ £Õ‚ì­ 'xiRá8Ô% g…Fý E”|ÀÂ&ZŽãæ46(kÓ"`iF³%|`G6:>d#fð* ®çüʱD² wdájiŽŸØÞ9­s6é ú¿Íã“ù;o£4™Ñ u8eÖä8j\"8<ì¥Tê(ß•ó°*ýèM 2üÙ¿­qÀ‡ä¸}º¸Zów:9i—j·‡6ªÐÀ§…Ö*xšŽïy´ÿÛ’¹_‚ù§©±É i×{Ôr…B¢¾±ï3Ÿ…JDÍß=š9ÎÕ9Ì‚®ŽGt å{ä}èiœa`„­ÄÁÏ"ÍÆ)Ï*/:Jʹ†ü|Ÿ¿*Q”„Ciè–Ó ?aLÏþw]ë—hŒ{©oÒ*Ñâä„ãV³T.­cõdWÕØfy†žMLøqªdbò`äZq.âRøz¦UšïS·'kgÆõ@ÛEãW³ |²?ˆ:TÁ=ÌBMÌa@#ÇPiäŽ 5f(HÑVÜ£ŒœôPÌNä s@Í‘ñ @L:¹©`øÁÊB2º¯e­Kû•«bÞ?Ÿ3@Há+³ƒIVº«Ø‹¦æÀ°)C (‹Á3Æø]pº6×qÓʺ]"ë* ^r ¿OsKGG'†xT`•þ•¾ŒMÆíú«ê¤e^KfiŽdË—ŽRa®Dû&m_©Èd{2âÖ©Û¡@;Ì»/uEéí1u4°•4î4‡¯ À§±AÖEFÑ Ê,ãÇ)A¦½ à†¾5ç®z8)nØË<§`ëýÊeä–Í^úËÿ¿v ØùVá9Š¢ñiJÂ' YU‡§ xz~ø03F€s¯ŒÁuûîv@Ô¼ƒF“ÜÙ„Tú’ë„m—´L‡–èSμ[7-qñé„[îºt ç‰VrâRÀ¹C4.fGqv"xLmeð ]hiÑFx4MÈìHF­à¯§j <¯÷jDqoûg ãV»iG!ðÿÉ,½•c^jR÷•Gh}1³Àz/ƒ3, ð){,,qû®ëÒ¼î&OŸç±¯¨×+²äÖæçµÙMçªI…¸î‡Nhí ‰…{9ößÄÊG±ÄÏyš9~'íÂØ<›_4Bw]T€³U%(ëø»:ÅMÍ”,3^§ÃŸæÞg›Ne J;Œm’Dhâé=Ö'Ú‘ÂÀ,ºŠwiìnÃþ)z‰¿GßÅE ö$ ÑÐà ) …Ìp/N·ÊÊøöJ^#ã— ‰",¶Ð4è0 lÞë˜0ɱB’+’û H o¹í5®ö&sé—Ü|š›ïºMñøR0÷…а`+ÿÿ¯ÇLÂ2ö_Ï×înÞÓW¹t£"-%”ß6p\\Ô*¤±¦p—øÙN¨S±ú{‘BÚ©*5Þɵ¥¸,îÊáA ²“¯ »­"P Ÿso7uÜÀb2‘}l t ]¢_Rшۄ ´¿7†ã€ëθ bÀI7dÆ*Ý“ëXgùiI‘{Ö“ò•À'ޏîòɇÜ|›,fù¼Ç=uÝ S J7x´ÖŠÒÖøZ@W€Ñ#Ôíš5"SÑx¤P{æJ†2G(oÊH*Wº:-³ôpÈ>GTs×,¢êP- ööã¾ì³Y~QûSž¢Ñò5î4˜ê€2cçYDÃÈ`¿X©X-\p táÃTÑd…!ýŒà”2 ’M<W )üC<ã]VЈnXt@Ñê5UÞŒ" ŒWÓŒ°¡Š¤O?èø'ù—Ja¶6–T¾ž¹La¡\0¬OÉ‹]r‰‘€ù¶e9€o"¸OKZѸð/È>™õX¨CE DÁÜW $úþY cÁŒ÷NË!>RT‹|°ÃÀô‡{\ضä²]2ñNí ô¹ZÆÚRýóg.«X(fTÄr•JK$*s…ôËtÕ/ \³9xÚ¸¤ñj Æx…çuØ© ÈX$ÁJ©<Üç>XcRz„­s+m/¦ø†:y/Cø½µ£ŠiP×Ré¿ñpb5%IF÷G¶ËU„+t;÷zSœ¨SOXú+K—!aÊ«wÅ¢ùB|<úàh‰˜¸Q陲ôrr@Z9K¿Ã¢›^­QMà׉8œ-ÃŃª`¾½êšBéôÏ›.]”B€ Ÿ¤5#wñÿHØš6´GÙ*¬ÂŽ'éJ‡dÄQ;…Û›£s]åP•^ûš¿FdŸJ”Äø1FU6ýÝ ï¾Ò¤Dµ¯ðÉcMÛ8XÑžV¸P ìÖ.ŽcžtϦÁýðÈÒÅ\ §&-+Ý×$¹`Òœ­FEoXëèÑ/8>ÁÞ `¯¦M¼ÏÛ(¥<'.®US8Z×*º)D󘺺Ûß.á‘aY'§NŒý@ÿFKE|½Ò…“ÈN4Ppâb?ÜÞpðQ†*ªV€¦‚3'q.±²n(GêI˜5“Áüæk|Ì6^6á¸_Â|Vèò®À½UêeåûìÙ²øï]nÞNnm; –ª•þÙá¬jD¯h¾_ àÊTþA™«¦Ë1X*رØÑDª$œ‘¥ÚŒ|H9Á§¦ÄGÕµƒ&ëü~/©x7oCK8O3h6ø!bãfp9¤ëAUvÞâAU™µwi°Fzo°µÝ¦kS–¦ªÂz6ÃX8^X»¤<-ÀŠTð„ÆÇ*C‘ }º2ƒ)†æ°Š”®«nr=ÃåÆ;žw¹+aØIqs4áð ?Ì*}Ã{Oœa½¦¾¼¨Ç®æ‹zu³ÿÂJâáE=Üš[$ CduGî!—¾:åDÙ*j=æç¤X³q†€åݹ*åúêÛ\5ql ÑÑÜZÒ8°6Â8×¾‘>'Òˆn§“Œ !•&½|pp=û‚¢Kt8XÖõ.Ù!/õó"¡)WGe_e­c*©÷snn%óFÜ*(⌌‰²»n/dv±"/Y]9&Fz¼ yÔ¹W­MÜÑ÷—g:3“°‡¿Ÿ‰ÃïΔ6j á`¬tS”‡7˜K†»ö¼>ûéÄ;ü˜ViØbLwø]Þ‘Á}ÂܺWûfsa…ŒÃÀÃHÚV…똎´Ýâ,¼dhK[w…µÇ‘ÊïbEyF‚üÑ[W×x%¸ ›de{ïÛ_[š hKt éì¥5F4·}UwaÖ»o–=ì~»¶ >.üñ›Ô ê+]•àøè‘ df§‰Z•¡Ô"¹¹ZïY °Ë•—ÙÔþ>÷þ.7Yï›ê¯tl»7R‡×$D•,Zº},ËËcéKZ$„í ðˆ”G®IÅ]…6RØí„Š%ybÃÚÊFl•TÖòp8!Ì8œµìiT ò+Ö¿#60óH¿·6ëž%¼¨¹€³.jhñ¶¥kÝ"|©csã\( µH<MŒí×Ä÷^7‚¥w;¼š}¥’xçQBQÁ£ôÅ••y¯^–©¯¥îÐöSIÀ«-s·:2R1ܬ¢…ˆ)ðÒ|îeß™‚æWîPKR±MðD]®“A΋£ðrÁ‹SbmB?à^r«gù½ õs*4ztÕ[zõóF÷• ×" °,ºµHMéÈÇËXFÒ<@¢ba>**&‘‡ …rFNö4Mà£ïçhûÝytO¹ÐÄ‚ü)›˜ße…ñ$÷^vü¾0GÉøœâ½ƒƒ ,Àâ“€gòÚ³eñU)ÉåÕ¦ ±ÔgÀw ’Å×¼$S—Î1³¹‹©F–Ì|•5j¶Á»Xr£ô˜:ÀGR- €“–¤Rt0sðuî¾Ë{˺‰pLÔh€¼b˜œû­ÝŠBð[#`ò,Já½o 荒¥^P Ÿ¦‘æ‘Ι›A£f­}° Á Z:NG½ÂJ½@3N &b¨ÏWñšÔ{¯âí@=€ÇN O^ÉñSn~—?©ì16€ƒj!¤ª,¸/TZHŒ©?T0>ØR‚ê7Õ||wüh\ÇÉê–Ïê™›îdºŸUe*sÛÈLXÒ®¿ÁY?ÅÊ_?t¼Ì½7œä+XPoSɳ!1Xäûs>õ+~T€@ê‚lê@{úîcî=9ÐÞTmÚë^¶‡[Ü0>J`‹ Sà ´¤@‰uÔ·]Zhê”j%8Ë5TÌôð—Qcp„"¬ä2PZÄÉ”X­½TÏ• ]ÒùÒK«c1†ÉèYtƒdî:NÚÒÏØÒN70zBÍæBûGÔÊÁcùÀAY|¡VŽXçíÖžhå('™f˜dÐ÷kåšI+Wí¦pc¹m; µžnr+ >ðŸ}àVŽ'~)õæ%N¥]„‘‹ÛQ]¿fÊUhqðÁŒ«<3Ü’ãe“ý2VpS½-)³VsO2’vëA#0e‰ ,~ebê#¦2e&MHÙŹYW¨§æÛÜ|¹ž©4A?1¬ÔÖ¦½STšy6<ÛÂ1<×–-ÏÉá½)ê ¬{bŽ3ípn”Õ27d~W‡2öƒœFuue"-©ÇšÑí->~GAÝà1JÊaµª^B:Ü— Dzì˜ïô==ƒËl@å”aÒd×áSW~éxˆ]gá 4ÖÕ>– Ìâ‰,±_Ζ‡°ŒD¯ºK¹P—eFéu¢|doô~6 62û™çßò1ó;Kéµ>â1¬«¶È_ÀÀ/­Q§ä}”’€üºPìõ¸ X³~PX» êq3øKÏô¸—X/‡3L"¨Gð®‡ù)|›Ö¯ÒòÑ^0)"»Jƒò(öÞàK»ë}d¶|÷ýX?,å/ [”ź(†}Ï™Iÿ؇@ûw±ÿï#]èš:¹¿@²õRÛÅŽ3HÕ}¢  ¿F™wôô½÷Œ™L£ðË»,x¬j`úEÙrÍ,¿'-«€,•SÅôXª™‚ÔE|œ«ìQ}Áò’W@ *}Fï{Œ2?ƒ‚Ü‹Dô`·Zô£I>Kex¯Ú®zô®z‘–]ÀažEÿ‰êî—9üá[o&åÀ¹‹˜v¢ð-Øί= ßb…9΀qRûXáÛ¯1øŒ_¾€’«x«G‹ÀÑFŽ壺èºz|:¼·óEXS*zÊŲ”ò_^S„N¢Ùx†£œÚ\0ÁR—›²$Mú0ŸZ/ƒŽÊž¿6- ô錨KæÀ-”Ï€]"³â+â^ø¯FΉ¯|7Èaò$Ø%ä±V=‚jYd³¦-}èO}«ð?ª…^ °{$*{¢£Œ¹¬TܹJýl@é£Ïëû*_ÒËŠ¾­€Å³3ÎCÖǺš<]z¡ †Ñ߀µ…éñøüôXCF¥UÁÉ›gEOß©ŠQ.–-íöÎEQùÉâ ô× Æ16D¦Ë«Ûw'+C†Û/KrÄ9BÜ}»%hZqƒ¦uÀ@phØ¿t½Ÿ6˜åÆgHšÁ–\óœn7|)ë é=áŠWó—² |ÐÚ ­ö×n,Œ…_FéëÚ DQØ| Û²M‚Ò!CW± ®}—›Oró²;à÷E .ŵÇw'ÁƒÅ'ö<Æ •W¬=ˆâ+4ƒkÇpcå+c‡éÕY›øßg;§Žw×)®ÑKù¨ªJŸúëŸ3[‰å¾Z¶ ѹVÁú‡Ô*„µû_R« ÁæÆ˜]®UXz^« éWìÈŠì3v[–„u*ðß«V¡Ê•y´ƒýáÂ:¬ái6Sj®,^±ô§³ÿŽÎžvendstream endobj 321 0 obj 5665 endobj 325 0 obj <> stream xœå\Is·¾óW¼#éÒc_®±Û©T˼Ù9p—ª$J%9ʯÏ×ÀÌ 1ƒy|¹R:„0=@ã뽇¿­D'W‚þõ?¯Þœ|ý¯îNÄêîä·™þsÕÿ¸z³úË9h¹Š]tÊ™ÕùíI~R®¤Q aå•«ó7'¿œ~:iŒõ§oÓ0º N_•Ùë³µU¦óÒœþ\f¿)kŸ—Ù󿂯Ùÿíä»ó“ŸN 6°úgøþD á:íiWª³~õ3Úw>Œ3¯O~Þñ¤ ¾>éuÙÑ]¾§¡QRëÓ‹2û® _–á_'åáM¡pC¼²Óáô×Ó²âç2ü¦,~^fÏ' 8ßh8òMÅ`q‡ŒYZH×…x³@¡sq‹o÷eVÏwúÕÙZÊ;«gòð¢»mûÐ|ì׳Š-kic§äj 6X­ÕêüÛ(@¼*¾-³š ^–Ù[.^¤ÙéIòl8·MÞp o8€Ôp®'{ÏÏ},³—eøz‚È;Ûof§U†ÍY¶‡{ڰՆ¿ªîi-!ܱ;àzÊ×)&øú…ŠÖkà/ µZ+~Š˜ñíÙZåÚŠ˜N¤+qNL›hEc-bŒ»¤± Aâüúh• Û%*ÁÉ„ Œ¥—VÇj 1ɉÖ“h¹‰ºß©Ô•b,=vª#O„¼SÒÐ_:z’&œÁÛBt£ ™T-ËJvZ*’èDãxŠZ†:WÎxh …#£Š'v×7 €I"éð“ëæ´Ÿ X9P7ר©ïºÎ@¯öü»M×o„SÒV.á>µÑ2ÃÅ8á…ËX0À–Ð ZéCÆ‚ÖÞDzÔÈÐ…öB@“p6Æþ†3A>~ '}§ jü=pÐ’ db_ÿJFû¢Ì¾cgx™Ÿ‹Ê™ÉåÕN ïK`¾èßqfǺͳ2SÞÑB¨´0 °.BardÀ4|^†çÍ?Œ÷Y\ í!{Ž!Ô¡ ™@`S|ÑoË.îÊð}^”á»2|Yíx »µ&OE˜/Xokå`¾HŸx- w ¤oÔx_Ár Š|M 4 ´Æ `h¬è• üôB)Ðî¡ß<ÇM¿sHY€E*Ë?çw:é+*÷ìQ.8 JëŽ_³å|ÉÄèšv`;m#¬&™./ís~¿ˆA¶A 6)]ƒvê¦=/:fk?N+‰ ¯œÀDr㔑Â8³‡']f Góy,Ãû‰S)|8Û¨WU§`B>ƒº¡sÖ%»úL'}èÑ©\ ¤‰&Êq”>Ï–Ê·-gêˆ%ZùZ|Òˆ§ª—ô˜…&×§ë¬ÊµðIé­Ly´!‹³q½8s¢M’ÄqAÈ 7Ñ[¹z‹±r&|o0xJ …±‚±†ß2Z3ËmPXÏäŠëü'[æ5̆ÛÎlà Ú‹ëÎÆ„´Ú*Ò›º³u°uK®?%[X ƒíò÷ÏõNZ=\Os" o«MýVtMuN~'ŸÎ¬ôk‹ýúŒ°¥œ…|»A’8åûŒpGˆ7«NˆšÃoûK1݇‹Ü8 ¤7sÅ:POè «[Zs=lµ6jGtJ¢`(I'¢ÍêŠÏQ\<Ììá•’¯`Mæq·4ÍnŠüÒìweößû¨Oøjtš8ƲÜ[tÀ “êë/H;”ƒà3AÆÁ:ùÊu};“‰2Lg@!AõªÓß“j¹¦6Ù8xð[+›lœ†}+Í=.@žõ¾ÖM~©uv¿è—J'€2šù¨@ §lôÇ´·ñiö¾ _•á‡qØtbUPˆ~ÃDÞ/Ú–ƒoÃ(¸+Vo m”Ö0¦•©g˜€ŸÒ`NʃÍåL5oa.ßð=íÃ!ØS|éCÞyÕ˜¦½žñfÆ·ñ‰>1C³›ËÞL- ˜:@<=`B`#¬‘Uä{¸ÀÐáÃÌ.°‡ œ)t8åQ]à!íµ»xÀ¢;–›ÙÎêŽÞfG6ÜC•Ñ8f€+¼ÎÜQ(£–ÓøytÙpPR¨÷±Fß fOC› ©uœRdé“«„ìMi a°CÇÓ²Ùw—ÆLüñÈ-Ä­‡é ÇǬ‚‹ 'aeƒÑ”x§L“Ž3{”*`ßd¦ûh̾oò%´¥¸0lyro<]­‹K).®‰/Ú·_k)"ˆÝ,Ãîö3!,bPÙû.<1—äç}&¼¯ã#‹ò.ÂcñþAxÒÎ7¾&K’ÃsÑÓ't³ÏƒÇU%{¯â’…ž9ÿ8D¤äDú˜1&¥f`„ƒ4‹c#5Å _¾!´oÆÁ×ý´ß9}™ž3•VqÀáÃOÆyÆ-<פw™4ù¼ls :;×Á›ž š¦Oénœ—›”äÀ¨,ÕUµƒÜ U„:MJ‹è+ïÄi¥Œ=½$%HI'erÅ'JRªoiIôV+“Xt«ÙŠ´•ˆMÓ¦gª·÷v‹gL.™,1qQ á0›-ˆ²’Lß@¢YèÑú ÌTûù^hüÙè%}Yƶ§ã8ݲ$$MàÙ”U|pÐå+‹wCà)‚bh4ÌìÁÙùL¡“ðŸ`Óðû2œÖã²-bko¦¯X,ÒQ†ÀE*Û†.R‚°gðz¬¯}Îf¬£¥iV^ãÕ¸¾ªj+ð5Û¾VHR|Âì‘%÷üĹB³BFx‡"¬L¤`Sy*üqœÙ§¾ Ð VíñLÆ–^ðÞ8È2R¡˜.Æ"Ú™÷DIP»Ô@ᡈ ”?€‡ €HÝ×<«â–5´T¾$¯wÜh:*lúïW[jPYïmGõ=XWøÌÃï{\®NÏÃ$†|·ßO.t֡иPqÈ…æÖÝ?v¤ í[#Æ…zéàaãFa[Œü"{cîšìþÐ\;Õ+9ýuÌ8*'nÓ1óhÖb—Ž™g•PI¦ÝḐŒËÃå…;3Ž-ÈvfÜ B™q[ñíê ù6„f?9ÿê¾ÙûÉÓ3ÈÜ5{‹mÛȉM}(.äÃqù¶f®•„÷š²±”¬°š(©k€Š,¹qLMÌ­´wº4yh`°5ãÌ>¹øDî§Çj:’§^ß‘ƒå#_ “ñ5}g`OežT_ˆ…sžmå!Óó›£èôJ–*}jÓÙÅ4E¿"Ôû^îÜ´/Šü ­[[ª¸àôH2œçylET‰6Îcž§âù« y—aM³Ž+áÚX7É¿Œ«…_¼Œ;Ìì_Æ…ΨÊq? Œ»NÕ.þqéT#@FX!¾ ¶*ÀÖYÓ”3ïZä¬s³Da~Éö R÷#vñZkônñܱ c¾iÚâ[êJûI»Ü€%¦n}˜‹ø”w³L¤S­ö³$²ö³”û}DÖÕ,ž 9Æ,c"f b‡È´æÐ ÆUðô¨çŸ†›k*vÆÛ‰L=]ä¸<§&ŠFE™|Ë”=G=ÊÑÃkZÊÑo/{Еp’J]ñieï„˘]9v5ƒJW—¾Ã0ª÷å~L«¬0©ëYÃÜE£&­dͼ<%<¼BøŸ «I%ú€ý…iBÞ²¹˜NB±.ÓqŠ’±qQOpdr¸L; ɾ{ß.O<ä}èHu™´T]qì'à“}×Z5q\ñIOÌ ¦šŠØºv† ¿µ/õ‚cèg”&ƒýrÚp’€Ÿqâ[%ö;ßðye=¹PüÂ9î¹-ôŸn°k¨íNÊIÙ¯n¡.Õ¨7úÄ´Äi®{ÅÛŸrk-–*¿Ôø= ߇m¡Ÿšh­œ;XdoZj¹¼:K¯4¹žGMâ>R‰ÜäfZ‰Ä¼Þ½™S[5ĦKfz°|ÓnQ¡ôÂP;8ÐÃN ³§ßå6QèQJV¼$·Ô÷ñ,×Èc«%=ø:ß‹£¾´â6Ïa6…8ô3ÜûÍåÔ“õ£Ø‹©¥?ÈëÅÃQÓUtTÙÌý^ÂÛjœ =h—Mu4ji»¬8¨o‹ª1.õÝ*ÊÆ:Ó7ùRÍu¡‘‘Çt×…M¯Áû?LëˆÃù„ \P™ÃÕ P×ù6ƒ«u[]iºL§wš%ã¾EŘIËqßY“¥î«Wµlð1²(—Zó®˜-àóœâ§±KdRú_K¯aùgÖ¢w3ïrÞÂjÞê1mB Öš¡½ÄǃC§`ŸOc#sòšÕî "ã&ëÄ…Ôø?Ú¥/`ïóqCmåy†“o¯¡ ’¾mÄliÌûù‘—:r?×y-…¤våZ+ï“×®ì!yñ\mZþ,«Cãfrèv#uad1œÜ¤o°éo>¦1•é"eRÿU¼¹Ýú¯d™ã°¥ë ªæ)>p70ªÐhØM—rÐÁìn˜Ø§˧?³¢È8¿“†ÛPÝiˆy]4+r_5•Ý?›:’9‡Óo‘&÷M‚%çZ¶¤ú?oÙ’.÷íõýZé×ý›µðx§âãæð ¯v –f?ÃñþÖ $D‹j`4t/E^û2wÁªšÑÿËŽ.EíKýçi󮟻æpúQéšB³Ç-_VÛYßùN'y‚–/lÜÖJZ*ЇÚÒ§,nœÙôw‚2…†?àeL"Þôg´w¿ßžùcƒ×£÷ûnr©l-WËiöu2ºWÍ[gÄ.àH‚½ÿâzþaøíÓ¯\=œýcWOEBeø^쳯ëý.îSsíëíîe¬½9÷’”±åWÓÏp;Š2oêX·Ã8~s°X±W\Nˆmq}õðG¹‡Á6’6 ‘›Ç~æ )a—‚ÿr,ä£W}T 9é¡}ìl$Ð ¯éÃq%û«MáMÄÌ8¯ë§“ÿ®´ºendstream endobj 326 0 obj 3958 endobj 330 0 obj <> stream xœÕ][s·‘~ç¯8TJ„q¿¼nœZ;•T…[ûäA%ÚR–EZŽö×owcfÐÀsndbÛƒ ÐèË×àü¸“Bí$þ;ý÷íýÅW¯ÂîöáBîn/~¼PôÇÝôŸ·÷»ÿº†Fí’H^{»»~‘ßT;eµ°1î‚¶B;½»¾¿øÛåà ÚDëÂå[zL>êËJëc·Ãw¥õ}y¼)nKë§Òúº´~l£ÇïËã|´ZÃÇý©<²é¼+Ëk¯K+›Ãã‹+§ƒ°&\þý²4ß4«ÏC°Ï½)wã/³ÏåÞu'ÌÖùÐmesø0MX»j¿)ñâJi)…uÓÖµ‹¾-Ãݶ‚6*Ó*wx_Zox‡\ÿþBÇ$ðŽÜ]ß÷<–¿¿\±ß•rQØÌJ8çTîÝnî¼=ZÝvIü©·|üÞW¯läDoï¥ýÉz»§0jÒ.ýÃÅõož†‡¯‚“JØÄk™<ö©¢ŸÖW¯tâÌ FÅ ïЬ$á­O™¾&vOÆÉDŸ0FK§` Ù&˜î <™Rò87xö1*˜<†ä´D<‚£D¯óÀ³ Ê™TõÁ͵Œ‚ÅÍÅî6™I6•©0<« wW& é¥Î3½†÷µ€yP.ƒ‹Dœ©K6vÍ|7g’Ñ¿‰Bý¶PîO¥õºÛᛥ¿ñ»ë‹¿\X!Ýîg’ÿ}¡bRÂëÌ4‰¨w÷°m„4KËÝÅ_…›IÉiBÊpó¦LnÅÏLM·rÉâ·ûäd/Büs÷k+%VÔn½µ1uœ÷ØIÁ»”2{€ëÊÛk,‰m¯LÒdn2&ª3 M}€Œ}îRæUëež>1IÔÎÑ´§MƒOò.y@âüMtÀobs ºšÖšéû=vLÍL¬Ù‘(زc&æu·Ã7‰3;Êè@hZ¥‚0ú „DÈ#üº¨ÁÛ®Ýa*ócyünYS+Œ1¸™*¤{B#Nt‚J=ï'nÖÄ!ÑSmùí– ‰”Á•QhÖ'$ b3ãî²w?±½«ùEÐÀ!¡jÓQ¸8‡Ö\vJ%S Ìä Fƒ¨šÀføº`fq kâå—ÔKçjêqêÔ i´Üq Ñ›qõæ9ú‡ àª?‡>¦%Ó!Û„ °CHûWÌ™®«5‹:!ñ%"éuõæ§ÜÃx{ùs_ôjQ ´*¯ü½´ Ui-°}Ÿ_€%wðœ½îrÌ2xäÇYpàµZ‰€m«cV-+T£|5!ö½i! ~&Øê37¥X~ž]*­™á¥éÓC0;è§Ý܆æo[ƒÄÌTk¼XN€…TXÈúm£±WÚýͦò°T.˜¬ÇÇ•(ÀAó9RqH*e†ÂÇ•ûóÆò«J¹ Á1`Bd­v,v±’àÆD¦Å6fvîÑ@à²ÄsBë¼Çòø¹é›G¸ÛÜ“µAÉ˜ÙØ9¡’6ö(†ñœ€@ [pγ²ë*Np»‚ä¯OãW ÈÉ»ÇF ªrèG;«ˆ°,c¿ € ÔûJŒxe1=á]em¸†ù¿ZVh<ßD¬×<ôJ~¸°Þ‡D“öþ©¡%Ø8¥ù¥®›í}3©Ie[UûÛDk%ÍBÇhz  öŠx;g\ܨè†Ú¶4¸.v´a<Ò‹ÎÌà1táâiµ,ͼy°v½qì¤ÍjªÙk˘à‹^êÆŒ÷Ü[NFð¨]/ðb2TƒC¯Q í(ŸžÀز§ÀÆ·ôE'-¹8¸®“¾‡1$ôÔRÏ¢Fà¿ìUj…Ü·Tµq} f3 ì—Èx‘ï *reDÔ–éÒàÐÕ“"çÞ àLüãV2‚ÄPcÞ¸ßWó”jŸÄ”WJ“ø¨¸rÅ´Æûça+˜šã…Äø $˜OŽtù Ê]'`™|ÇøÚª*üNÎ>½'·|¸¾ *ÅW¯.ô©„‡Çt;0²Eä[ÀꉵïŽC·lÒBiè¦zhÆLo‚jÙ&ÖEœî1SSÊhrÖ˜VÞ¾cúKÞã65=ÍÚV°Ÿ™Úµ…™ãóÔj†_#ÿÖí¬=Ðvƒ‰P92ã¥tjå1ŽÔæ-Œ+zßÊv¯¹ÙKêâÔÑ¡ m•pöyBÚbRMs/§C`N3Ѳ¦eY{‹ÞäîҧãX œ¦?CrÃD-1݃£jÚÝC‹S0Õ¥åøÀ#Œó ÀvðüZ›™e¹­U~­ÉmLùµ6AÏÊ?•G–Ìgå.mÑE›‡îæ×Œð,Ì)ŠFèíxV˜f ãñ}ü­»”[?—ÇUíÅ^§¡­†ûPZßô¼•Ó e*î]a~n˜¯J›n¥ÕhfmbÏD›F~¸$ã2¬À!´jVV‚ïüLŠçäƒm5%6ÛíèÐL¤'ŒÜáÖ¸h*µÃÑÙ6Ìm×&1KÅã°ß±g`zïð;n¸˜\EK'ª-ØA~¤Nlß&èí]ñÛ7‚}Ì:êØÚµîªNNÄ`zXw?ˆÓvmeúÊf—ºÄ3„¿ H£šKÇ[Y|Ï<“•…±a†Ô¨½zb2Xs"9– Eß ù'2Íkùš‡o”zxËDsä»ðç¾K•!´nÊ_ îT­ÕF#œIÓú:”ž¶v(˜L®ãI6åhe/hϼµZâQWå„^qd710©"ãH£´ôÀùã±4ô —Œ—ÿKS5IÚ!Ëði½›¨ªë.S³¹²\ùx7ùEekÑØ€l«°gR­wÖU3Ô”ÅâË=ább¹ïCäK@ï íX8«GY:þãøŠËІ)˜G³DŽ¿Še%P¥Î“­+´Ðu4*ÂkY's¬„¡€qQÔK3ëAÄ7IËÔ­ Ši±EoL°ñ2]MaŒ÷Û>¬$Ë^RïMáž¾#òê<ÙÕë<à¢G?F±¡×™üPFxìö=*ãT?)ãF̡¦ÍS@\ÕD¬—±þÉÌèF”(߯Ԧ@Bªø~#V²ôa¸j\'‚Ë1³…¸5âne¿UÂ’›¶à£ ¦õ°kß+!g,°L=ÿŒÆÈÚ’a¶2‚³”#“AÄhŸXf'YaÿІ}qÊû20ÑØ{nÄfqD@˜#ó¶"ÞJ'ß°}ý’Ç‹ÊUÉUÀĪ*ñxÈ –Úl¯, tGãÎeÖhBÕȃ¯œ³+³ ³p¾ÏÔó±bÐÇüe_Ê,gEs–±BQ̼Ì/ö÷k[ɇšÖ/óe®OhC¼ ŸO'[ØÓ8dã j+UHï#`åâ1@_)ƒøbÞ«¢—Õ¦^†×Bˆ‹ësX¤k3 ®¡îÈ{X+Ñ%;®€ 5øgÔœ{(ÃÄäM€ªP @^ñ4â\Ç1RÁ7Ìò¸l£Ç¨ˆyÁúÕ~•Э%aNn¶[6å…È„J½76 ܈úØØðÞ³ËìÈs[›zHè×9رCß.ÎagD°ñ@pާì=œ‘£³ÖÔ}£Ä„csyå@ZÕ„«‹v3Ú·5•CÀ¡ž#ã°ìuœÑS†Ç"ù—–S2< S<ŒáÑ=K­0–mÍ—‹D¡ËY<Ææýi€Ì¡©joK n»ûÎÏg¯-U¢kXœew=7<·¥ßµ3@2m‰ÖF)«ja ­ ¹´k ÕP'Õ1¹Þf®]èÌŠù+2¹¥Bk?þ·1.!¬ƒî§Ÿ‡¾™É—Úº8lÔC=·üWÇ{– ÿc×L~»p^Á À¸Äèà}­C¦`ð´âÜr†LtT G@4#[X°õ¾ˆÅ}% ùà¤*›œ&À¦Ó'#i]=¹~­ÑÇjFûŒªÏ ”êBãÑ!êЬ˜”À‡Fç›[^Εα§®-ìGLx‚ ÀŒ‹†‚˜ÿCA„hS]nºýAxJ yzL1 +G§žG£ó¡R X²hÿóJSÈ)lUƒ™ö+N—hVÈå—çåH%l£ZÎøÜä±e ½èõÙÕE4vÔ ÅU=Å4¹ú¾¨ºÔãèÖD}Á[…†!øiàD†!œé”¬ ^6[ZåS&“ßuY8g^›Ü?FY•Åñ°âåÉî÷X¦ýÇÈàªhÏÌÛÕ ,è8ÓûÁ=ÑiÜh•1u²,^×én„gtè.Pºæ iNîFœ « щthn®ú™thýL-#0î)Uvô Æ{SQžÙ°‚ˆx€e >åHªÑÛ'Š)ª:†Ñ²Òªm ¨péØs5ôž‰­²ÇE๚'C_Ëš“ƒš0ß=ÅŽôœK ž³×•à×n&‚îxòqЈ_Lñ°­;òœ ïò¯iÆ¡®ãbóœtHPª•̺ k1Ãs¬Ï9S—œC·±wªsÛ6P¥½Yˆ„ ƒÄc}þ—è+Åû>·âi“Z¾²=5tåÔ¤Z6Jq m\]ÙØn€ijM;9‹ÍZ*tô,† ì(ì9Ú<ëñ?ÇÄ·Q…ùE»²2wVkø¦mÝ[æÞ:¼,²])á°6×,ó9©RÏÇE/€c™vÀ´.pØvÖ:øç9ÅhÑá8þ#ΕҺ"ד¢¿[}–b°6 oÒiŠav‚p"©Ž®Cé³.“b°u5{ E€vη'ç1re;'ÛZÞQRã^Xy&ßoPßÖ[lk…Ù^¿ØóT;~Z…3U»ÁëÔâ@ä&6k¶('ü4³hT8^‡°]ñ’!Rï.Žö&”A5 ÷X§ø¢Cw××A‚U茗.²Uså„ÒÏbAf¢mZi1ãüꦼ%`F8K­zö.ªÙ– ­•ä˜ÿ›5€5+-»Ù–ÅhMÉœ'½žFò½íÓø^8O}•@³º3Å&‚iÒ;€ˆÌ=åð½g gd|Åu`Ñÿo˜ŒÔaâë†5’º‹¨pZ€ë{çf#6 I^Ë/ù/]*£žçÌy®×Z‰Æ× á¬ðâ3`'´Õ&r‡ÝÑzTÜ“=ȯq,ðAÒ, ä—O·åá1¦æèýòoMjvÝ`ªËmf±K´½ŠÖ:Ö2Š'Ú—ø&M/‘õ§áì—9FÜ6(˜–ño¼s½ÚBv,­Q-¼ðx_ìxÇ!¨0k©/r1 +0ô ÑWdgu8§ Vž}{*tp' Þêêºë´P¾¹Àó.í) ¹NþçJ7¼mg”ñºrAÖ‘š}6›«‡(Þ`T“p]:ôŽ«"Oò ‘¶ŽÀ<$9ÎäuÁµ¼{j†Ë'5ø%a©ïÜ>¬Ô‘+#Í™y#’týô®^…ñM¯Mz CÇ¡Áç6v•’˜¦1Ƽ‡+™^ l奬ƒÕ`‰e­×ýFÞå÷0_‰|oœá\^|Y_ÿe°–Î¥›ñ^5—XhÌ,›|8>Gä–íkœyô«¢d9ǘ2½ñè× 1y߉°5µ2œs¬"÷KV±nù†0¢d¬Ï<Ç K´È×àåÍWó,kößS¹ÀeÜȹ™äœ§Þ‹1Z¼"bÉZžU.Y•ÐjºïÝîÀ+¡,ÖKÒ…°ni9¡`RY<Öƒ#€»®žª`òUydE¬`²ÿC!ÛED€Õ =}æQ”>ýß×ðV,yBïQ¥é÷5^Si2É~_ƒ>>ýHFþÅ™üãì÷5 E+¼Æ«<^7B× â{1úù¦åéÇ5øýŸñèÆ»çÚ¨JüŸ°„×G¼Ýv§ŸÇªX²6.-'Ü Õ;sNûã ÃE¼Á§ÿŽN)qfœöF/ˆA™mmGï+%”ÞöZÇyÒþ‘µÇLjð Ó‡øI£™tHØÑ|7ÑJסøºì§âÍðLoiÊb~í™¶ñ¡Ë•ì…+º6rª;Øgö=(¾¡m/y݆tŽL^ϧðÂÈA™3ñ*^ªt9UV›}Ì6Šj¶b:¹<ÞLkW&P½õ—‹ÿ6¬úùendstream endobj 331 0 obj 5590 endobj 335 0 obj <> stream xœÍ\Ks·¾³ò#öÒ%N4žW?ò*+¶eVùç@i)Je>‘–íüút3ƒØ].—’ÊÁ hôóë0ÿ]‰A®ý7þûêúè//ÜêòîH¬.þ{$ãWã?¯®W_žáVaVY½:{}”~)WRÊÁ®œ‚A8X]ýû؈A£‡“S1¸`”pǦÝ-swnþç쟸"H¾¢ÆŸ€ÆEÏÖ¸È8V‚ׯ›Ázuü]î=køûÜKK|svôÑ„Yý†[ÿÛ‘ôð´58³ºÆ§‘Ò¹çêèÇ.ƒJrgy7hïK­3q—™¸÷¹÷<÷¾ËÍ7¹ùܼÉÍ·ÔÔJßϽ‰™¥øN‚P«Sé‡àE˜˜Šr±ÞJ¤à“S9ëµÆr÷m×;Ö}GmÀyDdéŽýFHhÉT™DØAy‰Š·™ lk÷'§F¡,”> ìe0(~¿²Ö ” Î#~ÌͯòàïrïY5€3kRŸÈ,³T°­^ჶ¡äÕיЇñjÜ¿=þuW†0XšWlžçÉ^7'»oþìYÁ”S0ƒ4ЈJÜȤ¾Ïóøï+ñÅ3?³¨•5¨„F?½pèäæž=Š’pi†A¡G†2±ÞææuæÁõÉ©öΠë;~µ}ìÜûóIÉTp4cƒüpÈzi?î²ê/&½÷ÍorïëÜ\׺{kɦ޶½­ì(íê-=ꑌ„ÂŽÖíéw¿æÞ—¹y•›MõbÊ̼jRy×ìe4ÜÁd”)þ¢ê¨ Ïý ƒX×|­m£4´8°AVöP3œM²àÀe“qïONFtËRÏ’¸™¦oξ80Uo;æÉ޲ؘ%ú0刉a°ä#¿Ž±6€!. „‘<¼"k° "„`‰6l[ïeyľ§¶täÀŠ1,ÀqÃúHª„Âç`[:ŠÞ!”T‰R 'JGY ÆùB”š }¨AH-îdÈN¹B‡*)c€G°aÕܳO€‡ÁÆÑKØŽèj:¢+¥a£‰¯£üµ°Ê£‹ÊR¸ImÐ “¾h+œ°I4*—€¤ ^:Ÿ”À¡ŽßPŒƒ raœrÓŒqvþËÆŒqüyžñŠ çCþÇ»`í»Dª}ž¤¥Lˆ)”¶•2Õøæ»Ì׸ ¸ê\'Í…G(Î@æR*ÓÞˆcŒZAcçü)zç4̲B.‹èÕö“ùŠã «,| ûé‰Ê’käë$m’*D±*/‡€•á‚) 0½ ®X󖺉½½@ÕSBñþrBñœ‹„`榲vF»O3£@ ÝA™Ù2/™5qež5¡0DfLïÓúÁA×T\Žý—##|òìãˆD¡‡šzfwÅxÂMí*í`NøÒ/q…¹1(^,cgêcáŒ/ÊL2€q@ ‰.‘~i„†Ybf‹ ï§%p{BZ¥0“~VsÎ9¾ñušC'I1îÊÃÌÐRâ|‘iD8þS[óu6hWJRø‘¶Rá·øêØÞ⫬5B °2ƒ 0˜0o:Š:r–¯²T˜¸H¥æóðõ´¢)ö0jŒ•° ¦ÃO.ÑgiL¥ïÉqíÁš•QèÑ¥^ <‰pîÙÓ ?È8ƒG,uOÞ õÈ•ˆ³KW ‚‹›Ùå¯;Äý¾“™‡£imÑ-„ã/©[iDÀ±T”ä©Gy’‹/ÖÛÿ¯é³Ýóö¨× ÐŠn˜¡]ެÂ& –JF‡)u ”N»Ä3NÓLO®O ´ÒèÞ‰†Ñ±Òü ÿopvk <»O¾ÊzéÂ&­ŽFþ[s—ôaH$˜B#´1ƒ÷¦p—ºe'–p%ãíÊ EÂ.ã5¡íê<‡ˆg¹¿™ÌŸÑ¡£Æ ge¤Õ¸ òsÄaSÏ~À©ÁÊ8'HQÿ{„X¤¼ná*þýÜl¦v𠱫Xê?³Ù›$AJ!a6ÅMð–Ì;õ¨u=B2´ PÆcöOø;.Äõ1ýÔ8‰?=ÕR“5ô ÜM„pZYò.ZbªÐLæÝPÁ¢r;_ìk‹£Y¨/YÒŽ À ŠãÀ*Y>V~R05 úIÀ4\^ƒ/_[ G¬µ°dB»ìiØèeþûE¢NJÓr”SFAI®;Nc‡È‡¿dÓðˆÃºØ=¥çv$=ê ‹=ç Òy:‚±“ê¾cÊø&íd­Åóˆõ8ìŸFiIZ®›–4ðÐÀ¢Zïw‰È$j0-¯‡ÜуРzšÏùᄊÆZ„+Âà¥ýˆ!îAc-Rÿ6¨C1›¯§žÜ.ÛòùãókCÆ3l1è¬18ú© …C·'Õ s»g[‹0±jo]p”c7 W¨âN ƒNµðëÇX“¶U¦æÝ\&‡1ïnTùLFŠÚ¹–pLÔ *ý¹Ob ¿t0Í/ R5P©©øSÜ*jKèÜi£yú$©7a+)Ó¶r;»“c:@ÎéG–Û•'KNMâÞÔÔR7¨ºz+èRÚª8Þ”AydÁí‰H¥»‰•wÅ©}0;ÁS ‚*àpØ(”ixûZ"i=Åýƒ 5ú^ºý…XŽzÂ`§Ž=Né SÄGñpË©c:3<ÏÍw¹™ï‘“{ÏÍÝOQmò³^½¦ç&ë² HD‘`« ¿[Å„R¨·]¤©,Ü– ¾¼%ƒ°dð¾ vÄ„³U=K4éEyv<¤‘E°é$RӑްÝú;DêÅ¿¶»`Kr?\n™8…a»piÍjùù TQ÷[†“4–0†²†— ¶¹kÏä®Ùµ1ÆÃ–û!H4Å'¸wŒ„"D^OWFé%™0¬æž}^’ *{Ò ˜§îpïxë©ÏAîkÁsy6C” V*ªÈGZº©z%²ÊÍÓšµÎ©‰TIùÉQ¹¢K‡ª_ã*§  øàa—x ­C³)]Ây×­„lQKZ³!¼Ÿ_sìU=ØoÓy*¸uyü9 Êô¡ßS[iÔK2VºÕú±/e-„£Pñ†^Ñdéð¤©<¨\¥Òíx3~y E¿k_mTè fh±û£1O÷sü ¨ìŸáyDJæž}¡ÀÒ È[½x4Æ >ÏnáyᬑBÞ0â0dCôƒ{GAÒ ™¸ŸšÄ½ÈÄ}›{¿Þè¾Ð…‚I Ëš« ›©ƒ3êÁÒÙéà‚3È93˜ÇHg 4þÒ J5Œ84bE—àö'g óû’8†£¾ü67ÿºT*t#r¾DoÛfc¥ÃÈ P]UðÝ•§åw©¼kùãömR´5;uÏôqÅrí/–× u«Xîô.Im/Yì*•¡4×È‘B@Ͻ<FƒÒ;U-d“ÕÍC4G·9ö»#qȈ­é]¬æ#ùv7€gÚ%°}”C#œ¢l?ðW9”“X¤ªH±ª’ÖTY¡G@3!ª¥¼.B? àË3íØ)eëx³ 7%‡c¥¡*IÄÈm¥4½Wöù¨©gÿÏG) RС¾õ"7Ù+ÖÙ嵿?ò€oJQãÓSÊùðɾ)…Úàѵ±oJM=ûSJFT°=ò툻öVƒô¥%ÆR™3 ÔòSSyŸ‹>É[ÆCÀ‹ò|qÌV]ÉÃ|k*ê(¾ßÃ>NÃ^ë•¥è&*xäܱ‡üATœ]MâÿW&‚}Éézr *I7§á¡…Q´1_L‰­›³¸~8ú?-G‰ endstream endobj 336 0 obj 4513 endobj 340 0 obj <> stream xœå]I“·‘¾wÌx·i*ÈöeŽ^ÂÒÄ8lS=áƒíÙM6ÁnRl‰2ç×Of¢ªØêmÝÒ8&t` ‡2™_.@ý°“Ü üoþ÷úîâë—~wûp!v·?\Húãnþçún÷›+è å.NÑ)gvWo/Ò/åN5™v^™IYµ»º»øÛåÃ3Zcýå5=FÔå‡Üúc·Ã»Üú6?Þä·¹õSn}•[?ÖƒÑ#ëû’Zóq¿ÏùñÇg/¬ò“Ñæòï—¹ù¦ZQí§Üú:?¾¯Þœ?VSK#°×û¦ö}w÷8a7Y¥‹ •ÿþìÙ ©„˜ŒÙQè6wÛíð*?¾íåU!±Ù+-/Ÿ¯ÿ¸úO°8ív0™ÉZ+wW7 6lU÷œ =Ýv)û©·j|á×/Màâk$¼_Ó‹émB||!&'¬ ñòŸ­ÕAù4F¹@âµ¶qdƒä*Ú0™‚ñ¯ªIs‚Õ¢Ã8u]Ñ¥!ùëÉ_87If’ÿÿäõ¤Óïº |èÒù’÷¯)å.N&†eŒÏûÈyŒßT}÷(RJ`ÿ¿¶Ò(Éù¦KŒÛîärÖÖ-=þTKûÖ­1¼G[·…»ÉºdÜê73 oÜØŠ˜\}Ê„…7sÊ~ýREÎóRÛÉkTqrÆÅDêß‘ÔDmE¤Ij­„•@h6Ñ ‰¤‚g-bŒÞ‡Ï. ‚G­yp”à$Á*x–^Z‹>HEcAs¤"v7QÏ".uëàYzµ{¡ã$œPi¦Wð{%´Ž`Š··(‹3µÑ„ž¤ãPÚ®Ûå;"¡´ßfzþ)·^u;|³¶â;~uñ— 3 »û°ê.d´üf €Bíîà­ÒÂ.][Þ_|w,¢r²i„Éû˜íMžÜ^ÉéƒÐ—û$rBKT²ËÙ •ÎBc l³1&–kíMLÚÉzm@RL,Qè$!ZéC‹¹°Uù8YàöÜÅzå—.ÄyþÓÎÔÿUžÁ{Öwùú©^¸Y˜Ò3läää£ð9Þà0úòߨ´Þ³±ù;ÒŠ„tÅl+YƽðœŠ|R7ìõß—ƒÃFóFW´˜‡ÁM7w×Ê;П4LÐZ9S½çîe² ÐUÁÄØà¯rëG6ö»%ù´ ¢83ÁsÁ,¥ ]-õ!@’wû|XÞ!´8†ÑáòKšˆAvU“Ð@P—·Í/d,FÛØZTìËt~ÎÚv´ÏÞÍ´@îÏËÅUsPÖÂxÐÅOzß´{˜¨?‹L¯+ÃÈKÞý5æ@NÓ ³ ûÙàcÆÅØLð>%ï}Ãz¿Io12?2ÝØVùÈÆKÛÂ~¦ACy¡Lñu"´™ÀöóMÓQ#¢['tè8Ì¢{)ü&ѵ¬gráT؈»´ éõ–†Ä..þÄ܎vy—žïqh;€Ï[òA­™¼½[–VcÃy‘š´†·y„†Q&L1ØeKk!\ɜ̷¹õc~dà>ÿ¬«aÔ8aU1S6H$ýZÈIy ÒÛ¨½°O­u´ 3j~2 æF…sc„óîñ=ÞÓÛÖFP¡»ï,0&ÀFKû<ÛcQ|h^Hò‹Åf†F dÑs”:ÐQÞÀæ„Å lag+ÓM,.-ì"ºþŒc()âL*à*—a ‰ #£¢Y¶±$¨ÉY]¨TMšËÏl4ÎÑ›Rtºx ävÕ`)ßÒO­0:­ ÞÜ"¤ç™Ï€7‰^vÕÙ‚r“‡™¶È4Ì{1FOëðeR0 „›ˆyRÈL×Ò:Àk@3ƒ{X`]Î\þüÑ ÆïdÅZÜm¢·›ŠÎÈI:u(ØÀÞ¦„ÍöúÙ2©¥¯+„ož5ðñº?ÀûD|Ûg¢¢±¦Ò²ëG‹ú'Ý«Iœ@<ç.ÿŒÃyàÅ@‡ü˜&,´ª‘ýæk©¼\ 8ƃw2pÖ 3)„"¢gú@o ÿ"“ÚÚ¾#0ž°j“×}ç¢ÕÙ›Ôý?€˜[V¸§Ú)À^Ã]”y<€7¾Ù@Ê{¤båŒÌ¬÷ÍÙ0&0µÉ 0è¸ùúÖéÍlÚEÜÞ½ºRŠ=¹ä{Á^+={ |Tð;7B  ³û¤¹Ñ3›ÛÛÔ :³cëíˇyI 3¸—‚cª¶iÄ0à¯Ì“˜JC¾b”ÿº¸úêo—¥) ûÁ©e3ZfÍIÜŒP5CÁ̺&/±ŽLHÊlò`m®ÇCLØw&ˆ±“€©xm9¼ˆ_ 0§g»aÿe ¾HbÈÙ¾6Q± v Ñv ×Óæf† $;¹Ìç œµp¤ÜF  :Ï ›¼M­ÉÒ¥²4æ<,T…ÂRwS0û&=?õõ9ÃCIÏ¢ ±*µje,ýfhŒº8uÄ|0µjV¡OÀ ð»h “^±‡ †»“ü±iT¡à ˜²#aÈ¡¨À#˜U" »—ü²˜ë ÀËfXÍD{$‘Ç{ØHJG5(S)ìº f٠΄r¥j)ñ|'ÖäâÐÊé “‹\qZorñ‡¶ì¹š£ê± ŠìšJ|h`ç^w·cŠûh@1¾ÞŸŸ!ŽÔR^bo£hØõ‚yý6‡a>äø w\Fö㇠¹ ½ØHÉr›ð iŠšŸ4Š ôie'ç›6‹`6ñ þ2 Õöaý{ç=¾HYõÂ:à¬QS•]\¥‘‹ 7£¯YÞÞaç'Ãc¢B×\BpÀ}ƒ¯•™|ÔãÍEzÞàîYƒ>Œ7Ý*¢IH%BY[A ¦®­Hzéªî@0雵C®­˜ Vng\Ds¾»ƒ–¨¦¨Ö–ã *`0…4&PÅ *h·] ÷ª›ðx—×ôM·ïûüøa3#îm ÕffñÐS¢ 2ÈZœü,c'=Û¢;6ÏrÙî{ã_ð=à\‹P9 ÔŒBY— À!š(6;)ÇÁþÚI¨ >SþƒxÛDÌ×Q a!ʬc•騑ê›×•­Ü.lE}·¡¶–—b+i° &°=Œ+ÕQ.Þ$X¨Ž®Ë†ªÍ/¡ joYMªrAv ÍÍ»ÿ­Œ· tß­ݳíôËÖ¶¯p~èÙvεýùY&ÜGö 'Ók¢É/Z9E¿©ºÔY)²‘KyšÆ ïÚ«‘ÂÛ« h[m;מnX±Ý‚NÉ €Ì‚Að;ƒHÅ[0þ<Þ\ZŽ70¤Òˆ3¸A¨c},xt…?æAáûüø0 4v`¯_í2OŒÌ<öºÙš(V*î]q§«É†Ä€bSÅ'>ŽbiKò‚gÚŠ ì™…›Ê޽Ö̰ÑÚ[Ù˜¸(•Ú?MyA§cg<Š&æF¦YÞ¤CìV ,ŽL=òù½‡n”ò2N«v&R3F},’%ÂRérYÆDas2ÞH÷h†Äó²Þ<µðeŽÐmf‘Ü28‡oFíT&$W”±£¬ë’©"gÞF"ºç2Î0OîxËÄqÚhX 8Éû°-€€Þ¡ Kur§°~Àf8eÍ™ê²l($‹ÜF¡‹O—¦XUeyņ_uCU¨•WÂî3›™ëeð®,`UY¦ý#ú¬0YÌÚhØ“F—f Ô_NðXƒ™‚£A)…S=Ö:„ùmn½ïº©Û¾) o.ìtå y”‰û©LõÏ¥á‹+=Ü/ô˜AU4k(jPú882¨%žœ»G?2¨„“Ãȃ)ŠÒ­& ÝÒr¼LÀ°Gp ¯Ÿ*Šñ8çýä•€D= ÷üDîÍUÊF-wÔ"®ãð¯=W³q]æê"k«haQ\3—£@ë¼98²BRÆtT%^fÓMŒ0Wì•€rTHÞFú\ÄŠú dþ±ÄRLµåS´lŽ´u”›ñÐÄ€Ÿ÷©‡•qŒbBG躢4½~ó†ÅMüõ¹o<ÖòιIÓv2–þL¢å&2#>=Å¡)ãPÑr04å'`Ó…PE„–¢méÃ$cŽ|æl÷{o»ûŽ01ØV·c|Ì*Utn]I-~Kivͱ6HÖgЉ•žJWQ“;9LV´ÎJÍÌ6Æ”D1½ED»T(!uá×”+Ë.åìƒÑêŠw"_µ=RcSå]×À¼A|e7<£ú, ÿc”?çÇoWÉËÀ0âÁÀyJfD¯Á«_[N€† üµ¥1aMs2ƒ¡v@Œ‰îн0§ÞCÄ› òäÀýEΜ19aÆ–“c‘ŸòãÇbF{!´Ì•ÒeV×y36¢íiy2€+¼ ÖU×»76=îAbºŸB4`jÆéËÿF Å€Y¿NùH£ª1lj bý7l™)žp{4zUj¬›œ7¿ºR1xvÉÅÜ”¯ÅlÇÕ±‹÷ö¼‹R$ï ©¯Çx„p†xXñ¬–Ù•oyϱ)Jè`~:Õ— ªÑã„à<žú¸åd©ÐU+¤xô¬¡Q§Œ…’ÃvtVê„»LŠèVž¸öx7–èØ:OH­Úœé¥õÈ& ‡•!Fíâ9üåe–‰ä÷˜.•u. Çw1þz.nÜ\܆Ák:=,#ÕÓÑŠ¤:]ø¹ì¥¦;Ü<¬À²j©% «¶ÏQPˆ´>X+–c/j`ú¤©!åÚj!™/j8þö¬Ék²>óÑ»GCv£ènÍ}‰UàØÙ£èºuùÌž 08]k‘ p&?OVŽTµqtré h/BA{Öfšr¹¿ÙS ÐuŒwU`‡=]êr®Õ‚¥8QÙmÏþ—\_¦†>­à„º*uhêmçòKôƒúçåŠZÐQ6í§è6ê'5J+ŒÆ…Õ÷ãjCIxàh‹ž1ÐIÎ~@ä¼€µ(ég•8#èP×ïÚT®¥n1õs<ân{h±ð1q…Fƒ0“s2ü'¦œÿSÑœiTðÝnè¤=ƒõ¸uyPo!PP)-Òe»nÚêR¸“û—üž'¶·Ú4· ̳¯ïáîKìÉE;ý‹S†å™lO LÚ¦:êÁìVŠT¥œTá#âÓ”ÈÑe;§/éÉǧAtÚÑœÇ+iªow^îLÆA¼—Ä‹œa¯T¤*_€nw&ÌW4§kÃÓÕÍìvg¤X0t^ýó3ð"„Wt…ü.ç­:_íÌÇè_"=º›™¦¼zð[o!]ÀÚ;ñ_l¢³}JV¼¶@‚’uxîn&Ýo’B–Sжß,s³^{ê‘îc\ÑÎ#ªÅ`4¸*;i#VAµ<_[NP‹xÀ+Иà(¥7ªÐX1&»Ö”sôoÞê~U£ËO×P Â{rãj€²1û’Ä7˜õ›ÔÌ>eÀ¿|0Û;Ød¡øòÁ;¨lš@壿_aWÍ«|añ ¿2)ÑšIó~[„ì$ÚG×–S¾_JÎ☰)Ã~;y`]âcHDú€‡”Å<êºß4ÚŸrëáu¿ É&i5уî:ƒš0 iKjþ.Oã8jìä 5K“(¨Y|íd¬ü$™t Çþ 6nŒn>`R}Fc”±MQÆQ¥¥‚fĺnCLؤCå;“~qm9¿ ‘-€ê¹Bæ=5Æe½ÃTqSÓgk–Oã<S›¯ÒT`Xº?Ї†½±~ëÅf+Ÿo[Yð—‹ÿ˾‰7endstream endobj 341 0 obj 5506 endobj 345 0 obj <> stream xœåËr·ñÎÊGì‘tiÇx?rKlÇ®”Ë.ËÌÉÎA|ˆr,J²(Ù‘¿>Ýx `¸»\ªâréÀY4úÝîùeÃ&¾aø/ý½¼=ùô©ÝÜܰÍÍÉ/'<üç&ý¹¼Ýüý&H¾ñ“7¨Íùó“ø&ßp%&åÜÆ 5 -6ç·'?œÞÁÒÒ)mO/ã7Nœ¾.£ïº^”ÑçåñªL¸)£oËè³2ú¦],<ޕǰ›\ÊôZ}×}¼.o϶ZØI }úãi¾j~_F/ÊãËîÂoèó × Àññ§î‰~êÂð 6“²ø“òøãÙÙ– Æ&¥—(nzÞ=sƒOæ×þ}þÏÎõÄŒÞÀ^“Öšoί€AZÄÅÇ÷eýG&ÄöF\|ÌˆÛ o—ˆ7D—²›ó¯OÎ?ùûªy{Á27]„ [ `kO»î‚ý¶:n~F°>}*ð,™÷Þ lðlœãý!bÞñkpæ'æ2ö1Èoºji])@ج¼Ý³‚€Ë¾6 (¢º‹øTÒ®* DÑ.‰è$ií‡"›¶„m\õLi@©"øyÐ9½¦2òFˆª­OÏwÐzzvÊ$œ´ƒ€óù”µÕô ² åQújÃayNk4ìÁ$ßÓ„‡Ñ…"ɼ‰à^CTe¸…Ý$è!Л,#ûëXa2ëÍ£ùü>>¿Ïjw5Šš,“þ£i0 “ñHæNà¶LÊä8ßG£(\'£aŸØè•"Íd+NåØQªŒ·¥ N'dœô-NrÌ©³[ðû’àìbÕOFÊÚ±¨4ŒpfðÆYÀ÷“kª)¼ŒqˆjÊj§UMÓš9¸S¼šB•ÐÒ\ â*®b¥C ü«©Ó_ kT xÕžÞÃá8H<‚X*[!öuvéà6,§´Ù½SF&T7 ˜úcY= ìˆÏÛQ,Ÿ ”ŒÞÂ#ƒ™‚‰Š¶;xÒ ëH yŒÒ ¼4õ©{O* Žš(ÜÚeìp@ %"¿Z×aXŒóò`í¢—m D“®5iÊ£15vëËîTVX­E B›ÀrBëàJ„xÍ“€)ªÐˆU#ð]<ƒôÇí€*zùŸ¡Ö ¾r±ªn2üÇÖFñáM„ªòßÞœ!_ €ÄÛÙ: Ö%Ð GC(Dœ­W%úA¦wÊbî¼’2LߤÓGžß“2?IC{;ç•úÚÆn¥“Õòôgbn[‡ØÄ1økÏúŒ ‚1XY£p‹×$ J9Ãa¦[­ Ô±ËúlýŠ~Å5´KÁŠpP~ÃGâñ²ÑH02&ÔŠ%:’ÝDLp£Oë§·(:/Ï–`d_$0‚Ò²ÆO@q0mQ8&Õ²4¼&b(׸ŽMø‰k;p`¬_W2悽E[Í,Ä%ï‰,£ @‰õ#Œu\Ò°þŒ™Q¼²Ô6Y_R£¸ðµz5*SÄtvA…Aç ò¥15¢ ççÐ7iŽš%X¾ãDêoãÊ×-"uܰOßYk'˜î‰×"Œ{bÀE¯Í2 ’‚›.;?£Ê½¬÷"¿gV ̶@J“¹h(0m“_Aª9[à²"}³Î´!°àº5Ê3fõÖ2°B: Á ñ%6³b! Í$—£Ðl³@÷|áaªÉ>X}ÚS»@‚e²rv¹B¬)ìÞ|…'öÒ=~l=OŸÊµÆÈŠçk¥ñí‡äÄ›Wšu¸ÌÇïy Ñ“<Ü-Œ=  5ÑgÇxìcæËp¤Ð”³£´©‰€–I¨€ª0Y 9·ÆNÀ%`oná—•æ\ÿàÜsa´Z`Ò³*éz$†¨…0ÊF£d“gsJ=hzð!n'•ªØéÍB†kêÆE‡bvÓÁÕ¬k˜1H&­Áß]+Z6¹®óvP9ÊÇJ =W8Òx°ÃcžËð)7 ?)ó?Š3­+%B)HUá%•¥äË‚s0"-Ø2Egv<špòŒ3U+9ÊÄco‹Zz<º7œ:¼ô ÒÂìù½ŽèöÊà¼DÉE?ûÅôb´š'ý±’l¡E}m <¬‡ØÎÉ$è-:|Ö.®8F¦`0×h}aídkƒ•;¤C0O$ Ø5úÎðkVVÞû÷Æ4αÂ1\O;Š)©uœ›À©TÇVû リ]ƒkÝÂOŸZQeñØÊ GU,"ý_Æ•J²¼¹œÇš¨Í£o||e/suÓ÷è”$_¬ÇE—Lóå ðºÈg£9›Ûéx½:þ\»wiêDÒ½ ¬,¬Æà¯‹÷.{ñÉÎGÃHc|´–JÊÁÁ…ÃP³²ç·ëdΰ°¥¤ízH½á%#­øâ?E½ìÉF÷ø¢MØÝT!ά².ˆ†K|!ªÁ[(î`-žÙ\ >){([(n$zlÑFukl±(“¸ úúÕ¬ÆGë°…Ä{¤Š-~^§ÒV ð)à0[¡'/\M(k{„j€IÙÆ‰/ª%Ÿ¤Ì›£ëóËâ0­ÚË™] 'ŒšÐ±h£N°r¦‰2¨#sßtR ¼tê$ý\äîô¯g[Í@‰Ãnì÷JïÁ˜ZzˆóJÛÄ»-Œk~ Ð~S¾çi¾!‚÷£¼!Iòˆt{ú‚˜Î}Wñ¦0zçùÕVÈ"– ¸julü$æ* s½†»žÛÖNu’Ù”;I‡G ԃ䚛Y‰·¾Òw¼Õž)Çd‡«/;›{ÜI©üû~ø›2;xM¾—•¦Sþ›âÝÒ ¯òìÇ— )@.d6îf¿‰‘îÔO-¥›¤7û‹È ls¯¿¬£ÍÕ©`^œOLö4, „熖ÑÒZØÀ{©F–”Ñ"ÚÿÅ¡QYX9|Ï9¼\ ™jhéýjÝnÄ 1攤}¬š<.U-©ÉË#‡×äÁ àéªûK`ÃèZƒAý%°Œû9Ï2ˆ.:*)°$™Þ\@Kl šŸá£œ8¯ÕŠÓ€¨Õ-¾éý¹PXš1ñø¹P<%–Ñ-5”IXÐ!h»èç;Vƒ0Œj%š›_z2»×å='þ =3õ©¥üP»w[î·²1UGOá’QêŠ=IÚÖñÑUðU2â”§ò/^㗚ɑª¿O“ 5yt„ѧµ.Ç+ölvð&¢út˜—a5?ö” ‚W¤:~+w}JPu ”  ÊÏY0Ü~9@ù9Zµ`tØ÷R~»Õÿ“Æ’ß‹ò»nt[C/Ln±hø¼ó.c²˜¤‘óœš[<Â0éü "Éj³»ªQäk†B!5ðY¶¿¿4¼nO™zÓ¶Z ?¥ŽH{Á@ŒÂp2€‹ÑÁEÄÙåãi䇅?€Ç š[…?h}4DŒ3é°K‚`<<ã˜á5ðø>8§Ýå\{ä´-Ç+1ás 0;ÿgù?•SÿNuClÃæòÔp¿üBÀ q|C¾[ãø,è× Û–;ÎÓîï*zÒ uœ“s¿nØ1eS„n˜ã“î«´t9ˆ«EÑ€»Ãæëóý­tËÝã_”Þ¶è,â„•+ ö§Á'A" .„ÏÙÏüCãs ûhüY*ûÿ$ø|86ös™O»?pÁÝåà.>äázqîø:b^ËC¬§Í†;fbƒ,÷Ê`ÕQ9ä»X«VÜß›Ö:^j£–ŠšïZU/eÿ°ÏV€‰\rßEjn‰ÃéʯºiÏ'Œ9(žmòê8»¹ât¦Õ•cærãóøá [Ú››ë}­¬rÄÝ«(c'gv ÎñgåñÛòxÞðÕLÛR:‚>‘„]•÷š©°«Âûd.+vý¦@ñ¾<Þ6Š©-ÞW­£w„‚ýÐ7¹°EÁ¾b€çP…CY^Bô ƒA¯îQ¹¶“µUì]©Àê~†çI{•PCo'&­óâ6}è…+—†GuR‚Þ€´³£0¸?¿çà vàÊíp¨(B×åñÁ‘öèPÖ̇Šõ¡O™Ú’–´¬}ç¢[ûÛøbí¾•ƒ®4:79‚R꺹›¯3U\<®l[(ÁCÍרj‘L¦¥Šu¹ j$¡«atÒ+|ƒ3°E°ošhímX½Ž]X\}ÞÛÎá·”FÕàx*`[A Û .½9pXzõÃQ‘ú¹ø±mq½MÅçà‚ÕJL™Á-û²`1¡ªVË™LkænRÀ¸¼ÔŽ…X˜ë*Õ,N›‘¶Ð:\;½ã¡0)¥Â¯s¥p{iïYßël—i‘Ö(€öüôX_(A(Üò %/œä_(Á2çò…’ýo…Ú Ò^_(AöörVm\<<sƒ:öùû µ­°SLvl½‡1k:ýà“ª”k{HÏ[eâU)Fn\vªScÑûÆÀÝŠÉq×(þǨ½ÅnEV“kQ•!CÄRuâ–—írjÂz‹®T,«ævo,Rºæó¸3¯@®ê‚is:ÖŽ +üV»Y%ˆ¿U¿Œâ§µÚâPEùè5£òÁü1 ØÅù7_ï­È•ãœ%ÜúI ¹À(]¾Ú¸Ý‚Ö£e8NWpf“»©n¾=Ø‘bó%oŠ´ð,RŽk…ÞÅñs&Ëîh\º«^Ñ©›­'¹øùWyüºhׯW•'~¹|½òus&ìó²e®&SÎÍô¢ZÐÈùºÿ€$du™ÚRz‘‰U†Õ‰0X|΄ú £o˜Ü$¨¸N¡…qd'm[µÑµá²I‹Ò éAùEiC.@.º“5–™Õßzª?¨ƒ30ój d?k1çŠÐÂ>7ùi»Û.¥shº f× :^Û©ø;ö‡Q°PÆtü¡€/LÑž°èheÀЍù@„•×;e©`2ß³Û…òf`Þ#¸×oVå†t7à VŒû€šï‹ÑþÚÀëTLFn÷â“> ŒÚy|ðeXÈŒ2Ó+æ½ÍLÓ'œ”’·gU²`á]õ†Ó÷ú(m»ßqz–]‡‘cØX-LVÀU-˯,üÌñçw+y¬?±ö@l¶ØZ5Wòë‚WŸfüî䌇endstream endobj 346 0 obj 4671 endobj 350 0 obj <> stream xœí\Is·¾³ü#Þ-.qŒ}É-ñšÄ—m¦r°} ÄM.ŠH/ò¯O73ÓÀÃGòÉÎÁ¶«ô a€F£ûëuæ¿1ÈÀ󟯮>úÆo.îÄæâà¿2ýå&ÿñêzó×c˜ õ&Ñ)g6Ççô¤ÜHí+ôÆ+=¯7Ç×ßmÅ „ÖÑo/Ä`½ Am_ão­­W~{wx¤¥†ÿsÛ·‡GrÎx¿½…ÖÞÄíìÁ{üm¬’*‹Ü°9g´ 0r¹‚‡]±âþöÞhðIXÝ /Üö<=j„S¡˜EËDaGbDèMÃf_̤óï3Yª|𲦑z$ËXŸâW¶âÙ¼'c×9†¸=ɯ-§)3ÙFœ0¾!2´ÑIÂ电|2? =èÔötœ¶/•ŒÑaûŽN §¸†yN¦„j<Ÿ6¾aOWá@?ÿý@y7A¾ŽOA撝ÐbaZ"ïba\à£o´ä ²)…òã‚ßRƒÄÊíÇóϯæŸÇÍ _àO£¤Ö¸Ç§Ç_˜AØÍÏ 6ŸÌ`#*‚¼Ý\/Ýô¿Wßv5«$v¡YŽ Ä'Í:Mäc}º\©#È Ü×4z2ÿ|3O¸œG¿œÞÎØc§Ó(±²Ô{k@>uY¹³î¦+Ë"$hÝÍòú’¼8«§åUiº)³jOë¿ÌCj§5àRláÒì¬ØhB!Y0ŠÙ~Kê0ë@æ˜e9Ä„ç&=d%`(-`¤wÒol'0oûÉk6œøg„‡ÿH¼uÐQ¥c&Ig\¶yþK¼gDÔÀŸ¦OÒadp:Fƒ7¥àB.]|ñ“t`£•ˆ$0´øe~Ò*D\9héeØ~Äù gX0‹²Xï–M! A1eAákFáͼ%®„ #W Èq^ÅBCÂ#hññ—Ç"Ëñö4š¦Äq­Èñæ°œ†[¡í d É1ª‚F›¾˜F'€‰w ‚84J#„-IŸFžà#&hÁÐ ê=øˆéç—óÏÚG$©}ÄòvŽÝ¥‹¨ÉpO!†‘•pà‡IØ÷é^0†;ßÎ7ö† “4D€˜ìBä›ÌãVHÝÄzp#á&ÁÚ ÊGMT¼ž3Ÿ ¤Ó‚6{eöyã¼e66€yôo< O#O¸ñPcÓš€RæÁïØ„'Ü80Ȩ±ßoçµý¤É_Í£;ÛOÛedÌ·Ç î¼B_ϸXòê“GÛÏÌ«|~·ý<ÆÁê¥~Õl;o.vß|ìEÁð¸‰v¶4‡ŸÍóÿV]íøi&T&B­÷ˆ  )ÝÍé±³:L?¯{ÔMÞ3ðþܨI ,ç˜ägˆ¸ÒÆe1øçLÅü¼G: X²³ †Ü59öSsîÕnWkœÜ·/:1ÑX f™11<ƒ‰|vdây“L?.ÁÄïK. Áº •+jäèŽNPøªÆ´4zßœÀ$çóÏ…¯FkM_³¤W ˆI¸ê îÇÕÓæsŒÉ/›{0™dô´Õœþu%à‹QFà  ФlAð‡Å=` ´äÈÓš¯5\•Z¬ÉÉàJĈ¾©Ypà¢É8ðe=xCŠ´[̸âV±µÂ]ä É 5÷AkãÈ2«±‘CГS›vÂøœypÂ*ˆª®S$`Ay›YT&OLIÔ÷‰‚,=™>»Ç«ýÝØµW$üÍØ5iÂë>?i1ÆÚ §ÑÁÊ£âÆÁ¡MIä~’8µ1m¡! µ’»ø” Ò"Æè(âÔ.ŒÔð¨!Eœµ‚¥-æ° #ÇZ4“ݳ«#ˆÁ Æ›§ýêÖœChç¯íû+!Ä4Þ`8=8•‚ °þAO#O 2ô:®P†•µ¬î)¬¬OnAȪô€é›eé!åšv,=÷éÕöƒ²Þ׬ÜÑtõZîuÌ6µÁë”*Úþ¢Bððf1Ð6ŠØõt1À$· f1xrü´vµàƒƒ:]-/ƒr6³+ç÷ü@V=¥#Yõ¯N¦m˜ª¡ÈWò*¥¶¥[”xêÔ6îB¸ãTå—Tµ'£À:Ø8–O•ë2JµÅ¦¹‘Cº£Ì‹]žì±Jê 1tÍOÂê#\‘*0:1bM3Ò¹)®Œ33³»R¯vá¢W-ûu±¶ XÕ>)4U G¥-2¿Uõã!iäÓ_²ezhTÉO"+¸b§¦±M+dçv/ú'µ¸¤+Áê(“ã‚>žàç[2âÜÓ9òk*÷Y kMrÅ”î¦R# $p±JPœ$ tYüä÷ÀŃMá×Sõ"8&FµƒvCܨ†àb§ôDËé#JaÃQ©Ë»æìþ‰Á•—°¸IG=)@„‘råšpÂO2÷j°UZ$B´3H·b´G¤”:†\ëI>ªä8n»›ÞÂñ9¥¦e€ë¢H<Ïh¨x=ücèT4L3¤交:Ft:v€Sй:v1 xQŸF+e¤Ž}H¼¸Y¯Á/Ž­ÇYC÷é¢ñŽ,øÊTañóoúÊÑêz¨º¨´ƒ°Ir•éµV±zÛ[*¦»ªxŒUàh‰R,‹_1‰Îj†F‰ðR;‘@¡ÔÖΣ¬Ä·•´gÔ%±•þ 'Uj³Bea7¸–qºÀYÛ Îû†çÚ=N¬{€ª ÌzoHlû³xíâ¸ÉCÙÑôgx´¢àsZîGQ^Ì_váè(¥¦,Û×ãðÚ Õ­ÝR±:HùD´ÂáC®”NÆ'Á•c¹+\•‰l½SÞþ+‘ä=ù"rPZÈ@@´¹*¼‡ñíŸð·‚ƒY7vˆDp¤?OÃâÎé’×lz<-`!™W—Ú4 ªØ,Tß1©ÓóuØDv€+SÛè:lÐkJ 3ÀH­ê¶D÷{yª0{Àénß²£ûÑ Ìä tF†‡JI$H(˜*Pª\äýwÚÀH ¬AÝ÷‹ ßiayÞálð;¤ëÍ>£^èg¹AiiôÚ‚¾Òi]}å®ç kk\M»Sœàvôèîéï·cK•^´!7Ó/0-¡ÑÖ¯_Ȧ†ýNüâ¶<÷;ZSÆÖü(ýÞÇ2°Á«S69@§Ößçä¤åÝS;àÉ ¶%>ÖX$2€ºØðÕ,Î5T”ø±@²ív’ßç檶%¸—˜?ÕàA,–°’•£•nتuVµT©Õ‡«=_©U”t&ù«ü8Åâxص+$yFXx®Hª7‹ÆGØžNÃ&—ÐW‡£ _ÒsÎÎkÕg‰¥Jph]m‰OëÒ=Ãt>ú*‹µ¤TUêrn¥MBË%éŽCdbÍeöj좴|‘Ebç^ù£‘¶RØ;v#2T¹&Áù°¼®ãƒfJÌŠG§ÛÉuÛ1Š (3D Jö4~ƒ ]û\sîŒñû2ã†wDžï6mŸÑ ­tm1qÀ=ÅFøA{·‹GJ†è¨M¥ŒG±ª!æ·K¬0©ÓÏfìº"aÆì¯² ª®Ÿ˜Õ…ÔžÁ|A‡ÄÂwßì¥;‘¡eºÉÓ Ó½(4Ír/évGg@¼Ë[‚‰0DJ"Až¦Ôh‡úÊ™ÑôžÍŠ3“.Àê† šë ÉÁ”î!´rR—ZAÔ—õˆJ+|‚^-€á”èZi…}øÿìeÑ´\­(eè ïÁshåzòZ@àŒDu¥FlØþgòþÏ:2ù†v±[iá>λ<{‡+è¾åÚ;X.8)SZiöæ-\fr'm`»Ýguð€ìS‚oÀf]À1¸ö†Û ­*ÛNÛ¤¸±ï¢7)ËŠ[ZdQÄÎÄ•¾ÒSP‹RqË Úö΋9ïr |ä§„!M0Õ »€÷Ò~©JƒÆk ã­ZUÃJ«.ºþUE„V˜tB-ª`˜mÖ‹Ù*/™öä~˜ç§¾EÌðééu›ãàÁŠY•|%!S°µc‰HÀº~=ñŠ Ær¸ŸzoâQÏ·º Õ±h\7ŒJçÈS=P€§³éÇ£+’íÎè Ó±Y |óÛô„ïÛþ–¶©«*Âãv,ã²,-ºAú¶–Ò!jˆºv—s¿Mâ£ø˜~:ɽÜL‘c/¢6„xt-À•õ®Z`Èœþ ZêæÉBåTô†ˆŸ Hë8bD®ŽÛ_ÄG¡‡`Wõ÷v¡´¦“ºWnšŠv®c«¸LýØØ£lq8§Q»þ–1¾0gdw—ùôvã•|\Îî„Ò´B÷…üš§D¬ ½Uj¨ú\Gš¢[™\¸Ù›®¡š[}Åj‡¾•-‚ktÀÌúÚì¾C€Èl|N¦Mºïè¢ñžÛ(’ ¸(9¢†¤Ï ìð¥FS§¯ãarÂÅ!@U.óû&%8$Ø‹[´Ÿ³×Yç}=›.ú©ÓèÕáZE[—¶¶þC?yÒdgåú`ã«Î–ÛÛ¨õDDŽ?Ÿó© Ó¢ò†i!ן`ú_(h3N=z9:JB£OÕ” °87ÛÍ÷,WuPè¥:]FM÷‚Û¨%ä,*§µÍ6`âM?Œ-WÁÙB>â›Öƒ°ÚÊ„-!¹2E\b.smȨ†i÷úÀÕª::ŸÎèåUÇz”±HÓÚë1<ˆ®ÏŽéË\Ü)C¦õhäòÖJ“bT_ýR¿"HõO4óeäBS¥Fî,>ƒ“FH2d²Û J×1æ4#8FvBÀ÷Ò:ëÔJ'èHH¿¡º*L!Ôòk&)f+c¥ª‡±èŽm¡“Ø5[ÿ=DMá=7PJŒAxVÁâH l+RÔ´adxÎ-°°’ì+]•e­í-kY¢Aö^NâØlÿ]³-éS KA€á@…ùôi·’ÊD;78>ö,G§;b¥•¹éU–Ê€e—ÕÇáw©º­N½¸Ÿ`ÉHÕë쯣f¬BØfÙ³*3q5ê|/×]8-kB‚Þ!ÒC T!Âõv²¯Ô¬N¾™Ê“e/Tõ©¬ùû4 4A×mÍÔ”Òô(E 3±(Pa£š]¡»OMÆ…ÞEö\û#k5±VàÅéþs ) X°2Æ1W$V•®-ª­þKb]æ“X‚ü͘óˆºÂîN4Χü2®a‘ù˜Í= .°Pg”mjõÔ¤¿0öÜåÔé_·¾àëP¦üä9Qä„ß%€¢*¦ õJË -º‘CCÝárQ:B\½Çtåã>eð|×h¦/V½žÍ?Ù×­®'«Ú´-Û'SÆß„Yø÷³á*WZÓO©9k³ÉUŠÇï;êÅ7¸…2àã—²Îa+Cz©°Ü ´ZW»»ü‚kh¤O²=‰†ŒÊ¤î¾û{kóø.ØD³Ù)”fê|VEJü2¥€x¥t8‘ñ6L¬§jÖÈú~½gHQ·ï#A€Xk|6÷su!…ªKcܲÿ¦¿½|*çk0X»^^2%JÇ}%ÙD=×ÝFú~ð´ÈXrê—÷.ÆËoãb¯¤ÐCñ´¤tí»!^÷:aŠ4Í0Å”¯wå,Ž«.ª×§ûA‡Q9®bïx-S ×û ršxÍøú¼V\C¥«Iý&x­vt6}¯–×Ì ã¾¼ŽÌ6Bà`ÓGæ´wxÂ'¦ñ+É»ÕaÓÔn„R·çdP» óÈä•Nš´X]I£q½P2›÷—¼ ¡Óý¡e¥ŽIBZù–ç¡p^·ŒZþ@á?Pøÿ…$ ­fNá Bv’Ù{šqú9}ñâëƒÿsºJ:endstream endobj 351 0 obj 5058 endobj 355 0 obj <> stream xœíÙŽ·ñ}‘˜ÇCÛ!Y<_cùHàØ±µÄyXí¥ö½+YúûT‘ÝÍ"›Ý;;3ŠÀÐÃT5Y¬ûš_V¢“+Aÿú¿g·GþÉ­®ŽÄêêè—#ÿsÕÿ9»]ýå$¬B¬²zury”¾”+ ¶3VNA'¬Nnþ½þzãe\ëûè4€ÓaýëæXvÂjçÖ›cÜ6Jªbû4ßmŽÁ¨Î;¿~GÀÆïÕúÖÎiÀý‹xˆNØáƒ7>¤/¥—ëÛòˆ”7³g<0tÖ̓\¤óœ…m¬ß0p†ÉNþ†¤YJÉNRëäió|¤„`ñ»åå×´ÔJ¤eÚýk^~——_åå÷yùÃxB¡d—Ad½S¶ éÚ¸wFÜ¿nÞüÏŒûßÇÝJã¥F §]Ù@ «J&ߥ5hë3ÆdNþëø-x‰º/Äfü4 ‚î‚,>¼ïÙé‹ï^§ï<ÀÀe¼S¨^"QLCqã]:ÚIÝ’‰xû 6Z9<ß±knñhÏUxÍq¢™p¬„ï,øÕ1’ßh+½I”gã]-ú`\'âÛÆ]Ò®í”ib8H-}¨<$†à”(!ú'§ÜúC‚FÞ®ÿÄ@nÈEº“”æ|¢Æ+cÅBùðk™þòKß²cJ&n+¾ ;P&KÜ(´×yy“å÷<ï^äåâTãAù0ÜÁŒ-7)(ƒ(ÆèR¾ùËÙ)üáœñçGÌú7„V ¸BL+΃ñH»,È?_p•Ñú*/ù5ü LanÒå‹Ëý[÷§€r6™bG;°7r™v%Ê΂¦ÑõˆÊ#m ¹OÊcL¯>ºÛk­ÐÓ qÇ]¥%ÒÝÒó¹_ЊÁŃ‹MŠìxÁpÎA.Ag›AÆâkÐ;ÇïЂH]ÎÖwŒ˜7Œ¯çù;NœD3«jñtsÚFÓ¦FºÐ¡´¥v#ÌÙ%üî)"Ñp §qŒ¸¸0ó­ãþmÂß z¼íͬ)<'m2è2À¬nþšÈj_}ØË•Y™.„ÐS¢nÔa ~'¬8A˜²MåÇílïM ÓÊõ ¡]¢ÕÔDO%±a¢IžŸ0Ñ1¬+M4#×GW¨láð#¤~tqf.¼k‰”Ç8Ñ?Áq–#¹(<È=ÂS3   `‡XÖÛ¶×™“³QK¸Cíò !8BÇRb0ííê˜ÔÙ–û)rD© môJh/…é£é¤^…­·Ò8Ba¬÷Ñ™ƒ×ŽßX ЙhúÎ{‹òÕݼËg°k¢<è`„„¦>ãZ:…Â…¨kéʯ"á½Æ£¾¬BÔ´{ÒøvÜ¥«¾:9úñHw¬~ÃÄä›#i½Á'¬P« Rtu‹ÆoÕ~ܹ9z5›¾Thé‹“5ñÌŒIéËyFî*#÷kÞ=ÍË·àMÞeÑú}^ž¶f´nPF9±^Óp˜›pÎeïTKtôZÐRR,^ý%mSæÔôµƒ¡ ¦°ü”-l0ÍŽá¯XˆzL]zV<îÒãyo†ï¶Âc2—‚p ÖŠIA"‘$ƒ;P®a« ¡qì/ÉBâ!A) ÓÌ]ǰN% V„*š†!&è1òÀ{Kÿ3—©ñ€ˆ¯?’ùÔÇ”‡±cºÐb5BÉ'C`°hßtU;™wÞrô-s‘yxtp>T4¦#,¿®¦q:ᤠðm!v‘Æ ´ëəƘé{´K{ÐOè¼Q%_f4žGãñÑ_ Ìc"Ù˜êe»]6{Ìé3§ÐྗÑ[ ’Áɪ°·PñM~Õ#*#¢> ”ìk½ú¢B?-o3ÀÏ›=‰6ÁÇLÑQ0?$գוv›,¾ÌËóšSq·¦ó’ý{hòä}ÞÚ€t–PhÃy…{úî]Þ}—7ü´³ÛDf¯¿n"|ÝÄáŽÆ´X™á/òù„#Èþ>K<ÏkºÖÂò¢PZ”H®K'Cú®:dB«&á0†qèºX—nãØ å1ªýîèä‹ãz=PéùÀ¡E¯+Q}UTü€ù¦éýÝËèG`°8“r§ˆDÁòÌž{ZîyQ€Ã0çÝûttÙíªÈÐCÀÔ[ª„)ÙüFÁ1çMKVŸ Z Â`hµÒš*[}78ŠÒ†]|7t.@à“ÁZ­T Öª:€#¢‡F!`¦|;×"ã9òLÇÇ–þ)áPD ¢GÖ|™q<¤Ï¤tKØPäqE{.žlÍlFw7ÞÍ!âÝäï}Õã¢ëŒ]¬W,vf1ˆ¦Ê'¢ßþ2/ÈË“&À·#;sÕ •`™„⊠¿{H(I¦ª$ôeÆâ*/Yüqš—oóòMq-uÇ H< *WéVŸ×žQ6é“[¥™×¼ûœ;×ß©J¤(.ï¾.Ñèíc%%êcBH/›2"¢]ddŸè°þ¬ÙMÄŒõÈg°ß§Ñ‘ÛÎì”Ö赒¦¬¹²{¸9ÿ\ÙƒÑG¼À'âµÁÔÕxâ¦Ur{EÕ-^˜Àõ¤G{˜B6tÀHÓ{:"8GmºøÀ`Æ[gy/ħ„ gX‡„g,ÎY…Ž7:§z”f X ‘›î×Ìtó¢ß‚è0©ûãIWön‡RmKË¢˜´Sg¸Üq+KxÔ²¸‹AnaÚ›5¦‹¡<5rÆ$œϸ蔳!}…ÎäMÖ‘‰Ý¢~›îÅ.s#†œ”áAèC΃Ì:)‹á¡¶;Ì:)‹W»ífæŸBÃÒ5(ËRagŠÔñYŸŸa'¨ÊúüY'ª²çfò¾ÃNh© ŒÖàÓ;sÁM1ÔèÆ´ûªs_T®BGeª´jÉÄQ’KmggbƒæúÙôõ kÙåžÅ”‘ŸršÚ™‹* ~Ëé&:¤ZøHêÏgº 飱=së™é&Ôü/§›Gä–ÝåLW‡„M°{7 Ý,B0Ø–:·¦›ZºPM7NÒ6íí¨[ø!¾¿Ç/~ÈbÖXä³!ìŒTÚÓ4ZP‡[N7-- Z ûùÿ6´ ÔÁ ý¤ùuÏ&†Ý'¨áI#šTØ¿B!l6AUÐ.P ’F´óè8U=ª =Æ™°¨ï"-<{P€.»U–µß ]¤ ,©ññºH37UÖMÖ¦››hŒ!ÆaƒÆ"Höpn\ð†™»•õ ƒJ¨ ËÌ®Ï —q*ò8š,Ü¥¼Â)3ãC›™­£P¹ÊlY/£Ö¢‹Z¡vÊlcoÞÃz©7¯©ç[óªK¦33j»Ö|e¬1Ÿ6D‹OÆZ M˜ùèú=}d¤BzÆ´tV:Ú—T¸öë—Ñþ¢©Dœè 0,ˆƒ ΢ãÕɨXtû°æÐ±o5B'k• nÒ5žz–×im©Zs—A®ÒÑΪá<´íCÅÐëk7Ð)÷ÖÁ !IÐ&m|h WwÅÈp‘.÷:y&…/°.•zˆØ9²ÈFYäš!ÂÎNø)šàL¾ Ó0 -:¶åSz93>1³-Çíße|UŸ¢r6>1ìì>>' •8„¿‹Ëoš»Ùß=VZý™O„ä¯ñ Tq ¸&O ;»Oà ”Kj|b Ž7Ç'ê9ˆüCÞÝzBÀ ?0ba‚î´Â:ªÍ´:ÈD”1a]ÕtX9=’ÚÓžž˜Ì'@¥“Ÿõ|ÂUµÛ"Öó “7&ó ôü÷ìùÓ[Yõ€I€ä\aüo(² ƒr`ý¸³‹ÇÁ#Ó 5ÝÔõvŒQåÔšŸÃwýi/` ¾Í 4Õ“é'rçÞºu˜Úæ_3mªmì’–¶›Ž3Ò ¯ŸCU–„1u5š‡PÖðq¢ ÚÂr®á2íօܺŽÓNùÙ4132ÂíÙTÎÑO¬?ýpecÎä×y±¶L“ŽuÝ=Þâïж”93fùŸ|:í”μma%3,vô"ˆ0­_ex»XGVØ…‚F”å¹Tq¥`¬jmô¡C÷÷~œj÷‹fyü!_ÎuŒ×ççôp‹âØøCct¯U›jfô‰)[Îýð2I9j¿i4ü"׿~~Åa®ˆÖX?•óéöD& |Up¼Õ7á?áš6H„ƒ™‰²™QN¸ˆfÊÉÙGÎbá—ÖÊ©®®‚>9¥v:±6-[ÚLîä„=ñAZ…Ϋ=lÚ ?pfoz“ó)ÔŸåÝǼdãb¯‹Ô«áMCð¾ô¦ukjÉ›]ëQä_d ŒÚSRª`ŸqaZÏŽá¶ÎõRâ¤pKêBX' V—4‰²8}D .Ìÿx:L’&‚™ áøŒËC*u)Õ  §?«ƒNÈ ­†E¿š¹ÿù ©xß4§390ÙŽgÈ&tœÎA=‘”É(”^ÑKÍàb\Ž™ÅGÿêD¯endstream endobj 356 0 obj 3682 endobj 360 0 obj <> stream xœÍ]Ks¹‘Þ3ccC›bïÇq½Þ°fÃÛ3tø0ヤ)…%R#JšÕþúÍL P Pì&©ˆ‰9°„Fe‰Ì/H`~Ù‰Iîþ—ÿ¾zö»üîúîLì®Ï~9“ôã.ÿyõ~÷ûKè õ.NÑ)gv—WgéM¹“ÚMVèWz^ï.ߟý´ÿþüBLÚ £÷Wç:ÆÉ)³.&‚RBí_cã„®j¿…g£µ7qÿñüBNÂï÷_Ï/Œ“w~ÿ¢Û“c=îÒ{ß`ë-|'÷pjHƒ .ìoØï·óïŸÒû_ž_¨0Ù`Cõ1þ|ƒÔÂ}Ø`Ôò0µ5Uï/©‹ˆAîß¿´õÊs|fTîðÙ{TØ¿cÝgÖøò!cõ¡ü¦Ñ¾:ëþå\ùÉ(Yw8äù8³ÇFü^b™Dî@_+¢Ð{_§.ÞØÞ zãÀî(^ÿóòÎTГáº<€(%vHi½qªV«ói ½fº(#¥ßý %Z k镜i¿ÚRƒäJ˜ky¼^—HíBK3I¯vRMÆ›¨¤þÁXSÄÇ‹#,­ìñÅÒáeiM#­ÕK›Éøç‘ö¥ž­à‹sN£’® ;@›héµ”“µ’S¸a ;¤Z›Jª²@ékÍøW’§W‚,QÚU s›h+å6E»HÒÅÒÌõ >'Ã&Ï»¿dd>³‰òW{c·š²frâliýÀè½ÉŒ­>b„|$¯Ø×yw®+5fÜÇEÖ›©K¦´Æ©‘bY? ³,ToòÔb&< >¼ µwL"Þ¥!Å(›õž{÷tïBE9™˜µD2 âÇE9þkQŽ¿,­—ÝÏ+íùï˳¿™IØÝ¯`Âþx&]°`vÀuòv÷þLzé&JË»³‡†®w1t^NÎ"M¯’¡;,ƒ»^÷±Uxzü°tx³´þ~iý¼<¾ÅGdXºwKë¡<ö ×ÊXÀí ¥ÖSÔ]´œµ¯,5Ú©'#z&6›ì ‚å8hpݤ°.„Ž@Ñ› YTe:¿p0>b „ÖѧÀaàcmC³xE½pªk[sÍQϨ±´ô"ÈžÍÐK\V±8AϬÕ¾Þì’g¬•wo0-]ìqÌYT` uÖGã¹½-ƒð[ôâÊÚÛŠ·ÊâLÏÂuÈÒcéðÒF*g!{qÑËÚ™?2ò+&ï.MËGÇ'{•èðS_¤Gëåh©Grˆ²k0ÄÞ=0”ÞN:$þqÑñ\v;<¯ð€@fÛðÏM pO#•sÃé°&‘€Dy{4†öÒx™Ÿ³‚=züÃòÈú~êQèb˜­Ç:ü–rÿ+ᄈÆUŽ!wh^“ð2â$á Dì=®Uïêg#­íFêÁ¥¶¶†Ê)†ÐX¿A“ Ü¢Øs °; ÀÚnûáð5­ 7é XzNî=:R€Û?ˆnÈ5ד”¦Q¤ ÐY)BVêà6´©©0TÍCž@sÆø:²a4n’6JgxÒ!Ž‚Î.n26P½|Mxø—¬š?$ŠMù%ëÎæë<‹6ëTÇÄiAÐJ“KçÜmQ„™cãWH¤o*/¾n&­ìÌe×5hšFæý—¹g½H¨õ‚Ÿ]Vˆ’ 8{Lt$¨ÐšÝ&zËHô@Ü#h¤yz‡@ʳ긱`\éh'ç–Óq(€%'šèh<Ž?ïâø»…Âí)8>-â›z«X…d6„öàëÆôÖ¤‰ â G;®°94¯Ýê ¢.8iI.(‰$(ø—´å˹ÃVŠ…à½\ÔI‡|´ \3Nƒ}†pÀD U×ÒÃsÊ8@b­ž:ê)¡ŽQ†ð„…:¹å¡ŽBkgž*ÔùcW‚îYù´-+°ö¶dD^}' &˜eݹ' Ü$ÁëéѸq«€Æßø‡˜$xÑF{šIjÀi€lw1å'ñ=€û"õujë¼K¿Gàó‘¹LàFÐ~hè¸!éØNÌÁµn|y¾b¶‰Ól² Å }‡S}‰%;x p‘Àf›\¯ˆ`HR›šp§ˆû^, áü– .íÚ‘¡‡Ôž$>©)aÓ2tn¨G‰ÑûÐPˆoAƒÁ†"åΟ‘˜z šUiîæKZ$à­xrÔò´Îìl0”¶Ô‚5‡Õ)-@-ÊìÌ<j=ÌÂ5«äì8¬’„À,Šbcò5L<ÉPn¾]VìkÎö„%$ Ê+yR“!» a &–io—Éßð(ìÂ*ô¬ÌS®x´°®ag1 ¨®xÄ2––¬x³HX«ï·SOçÓƒ,Ä^aÿó~éÑ:€©ó_–Öã@@éIFÆ,Á%tà\‰5¯X~¯òüÝþ»,+³b¥Ã¢I®±jwÀX t®Õra|zíª;–*H¯Ñ†Í³ò˜6l@÷ÀýkÿKw ,åzÈó“4¿šMî,ß—²`ž ŸÉËÑ@KîOg—ßý´ÿóòö_—Çï ¡ENÀ,C8¶³ÂPk”“€þ‚.-”€Æ)h°_kA9eî_»K6ÎFÄ£¸Õ7Ñ}½´~éòôÝÂÓŸÏëÕÀt5¬¾Ç$HZü»VÛîÖ±̽ZWñµ¶b¼e]ÞlL* dB©+¬94cOﱄ— rͬï-ÈÇ.¿Ùìß6îúª•áL âjÀß-°NYûíIÚ¿¡€éñY…¤1R’á­3 =åÿÜ*é Œc…“7#ebœVÇ0î1h´’šq…_ Þò!ö¾ÄxsÝåD:Þbrýq ¿Z”õ°iSþ ûí CcƒæUâÃZ'1ú”G¹ŒeÛìŠý\¼¨!dRè£EŒÑñ$w¹£Èó¼ó+³» Þd7â.¹ Á%—A7wâ0V꺟ðoIðˆ¤ßé+¥ù• $!”–‡ø•Xü«wo$ÑÊè·É•ÙÉ£|¯ ë’¡UÉC§ c.˜ÁmG%KŒ6ïÁâ^–9b{Ó“zsß ·z\һǓë"2–÷Y¦ ïÙfKm“{˜÷5ÂVm2QÉóâ<ÏþŠeMÕ[É©Áz!›]Û¦ìÆxÐ Uý´[–Ð#®¶u¨UmVviá;yÎoœév9šÃtÒ‡´fXWï;ó¡¶*h%Ã×8*À$9È|5!‰9á›l¯râiûb•HOê†98ð®nê…A÷&9›ª”%MW6šB›Hëâlƒ,mA³„CÒϨ@Ín¤-þxrnpT»ølKÚ9Ê£®ý;¾PÈ+ë¡S¤=}ë&W“ä»AuŽ]GÓ+³Z—öˆò{^Φ557•8Žö¿ÒŽ+@zÞ’+ ƒ0äðÁ¦tð‰¦^Â)m—iÔå ¹Ãù‘ü~ÍïE9÷EZ-@³Zç&Û]¬:t³D=¥³Ú34Úúùk|œƒD=_®«‡Ì²àglZì A}­s• Ö [XNÓÄ5õ"Š—á¬7`íB±æ$éZM^ê¦îô´]OcÍm‹÷b|cÓè4øxºZp®KÿW vf¼9ðçK>žË'Z7E˜?eâMaÃíòM®“·=gF£+œ&NR_”…}ßžI$óüVµ¾m¨ñ²t;7t³KUr›`T2_oÛHªŠuwiõëJ‚«ÔèÍfy ±ÜËãd6õ&m.°ùÊD"+”׋9¿Q@z¹ß5ÀÏÖ‹b¥ž¬«y+ ¨°>9îï®=ƒÕ¦ 3–²¹yçlJÜ׬Äêm¹ÿ÷>êê…»¢*"U =@T«R/©ó QE銱‡´µËÓunîk|hq[ÁõÎEX«Ð²v¾Xñ¾ga™©I ÝуO˪ œâAå%“v®_盦3I¤™×ž:7EdmÉ&yC¬ì5ùù ÝÖÅ0q¦4²¨8r»ê>¸I©Ö[*=ÆåG³á4ðe9Öœ¦’‹Hžc}P§R]Dw1/wNJаs¤u@vêW…Z…Û•uÈ@ÙŠýpð^ô߸L 릅šø¡µ#YJÆT17ë@Ωju¹ƒ?’^nÖËNÚÃ#¶g¹fÖ}’çbu÷þ¼ßÆOpo\Œ©§N‹Ÿ«äÿÊÔ·Zül“ÿi<ÎUø‰TÕ[Ö¦7xL>¹h;à¯&C1F˜ÖØQ¬?‰êŒÚ¯S …Pãcpc‹Ò Ƨpúrk=ª£ä.ë!Ñàm‰*Ø[¹Qꄟ.êöÏ13rB—h†Të*M"¸.b•„­U/s3Ÿ®›í_[@#ÑiâAí2‡ïìò9o:ù¹Pæ˜å7üW7<ò¹>AºªiE—S@lŽJ*p=e•âE»uï{庑‡ õ ”~6÷}š¹ÓjÓIÇÁÚÓ‹±qÁªN^ש‘%ºË#Z°x(ê˜QrÊ äBlÛˆ)h%*?lcLë@Ñ.è:òx1¯fVÒœJJ£©­õ®½u‚M¢ô}§MœÃb wßÁ™Ó6®Oä`•ª€#o¢ýƒ>mds€šÕÅarÊ)BحŇ.x\ðÏØ•À›¿â³2`7ñ¼8À Xšxœvb©®4sœ)KY7Å|sœ)åüåfl·™[©T ™ûshùF¬q¸K¤U¬ó‰Õrd…K9x”rd¶m¯»LÈ™48PN‹e¦e«¿x:5° 7%w<Ú¾¸^:&×xÄʖݪõ¹Ô¢ž0 %«YñLsk‹fºµªq0x}¸ ,ª¦ZÎ &gUçüïÆÕXÞëÕäŒ!lMC{põ´{dr©Dë¹%ÚMî‘ $Ú¶²MÑ€ -ÑGGª~<ÖZVÊÊw¥FÞv¤8‹+ Ñ´™+ü¼SÛññ¤VfîaÍ(p§nÞ ΰM$a5ï§«¹¼Òè‚ ­‡Fcîîzöž<žÚéZAí]Ì“Q:MåÒVÁQÞæ”"msz=9?ºŽ}¢íëÌÖmC?KX/¤ >>–sǺiá_Ü)ƒºJ‘F€¹/ ¨s3( ðÇ›iÿïË –sÙÝÊÃ7> øÈÕóšqf‚¡ÎZÕ3ƒP¬¥Â¸°aËH0n+Dž¥0è6ëü‘¸J‰w’í»?Z„Ôä¬ òz=8²U‚™só_lL['ÔšÌìi8 3{B4}?kbëÌßÌ»ì \Ñ4Vf´¶må¿st›É‹ô¨UïÄ8¢“=)´ó !óqNzÇ9‡ç;>¦÷ƒZæ„V¹q@á1;HÛ¶ù^í„ÇN·ð9§ëÌà€/‡ÌëŽò5eVÍ“íÑãd”[9ôÿîxÝó†~Òk%7ºJ;óç$<0fÃmG'pÑ€š<[ll‰ypHµˆ|ÑìZÝ3Ûm Äer|›V²»úbš£.tR¯Xj[ñz¨‡Ý1•wËUˆ`8ý(Ó8ä*Ò¿mÃ85æcåûÉnĹ‹«[I(”îÞù„€bÆ<å6ty€8aõ°†g|wFJ0#ûJž° ½ˆA¦ëAÌ~uÑj ñ Dì•Bd%öºÎqqO­&æ¡ÖYåmŒc±ÖÚS3ËK TëÓ*‹µ˜#qï×Ó±LÇ‘93°;«+zZUü±ôb¶žå=&ÒÆ€¾A~h…ðm9¬ƒ7R½~YÝ!ÑÑ“6h¼%¶=½å-Ý¥õ’ðø›«^È)ê lt¸?œîYr8õ¥Øµ?×ÑEPܹ©7Pfžê¥ubåÒ¬ú=Ø‹ÿDr記ê4f7#œt%ϪHïuÎjI7”Ö§Ünìˆ"ÇGn)Ù¥Ôœìº</7 C€:xܸ”u«¬pdÇŒ¨a¹å0þ½Kßs^•ÿ¢±Ý_õ õGÔ<4uw”]m3ôI‹uØn÷ô—Ýà@­ñä§ÆÓ¤ïÏóðâÁÒò€ûn5ð‰åoåžâvO]ú­0÷æ†w^ýÂzs+Êjð*I4„s:òÔà›ÊZw£<–þO¨c@xÂúÙ?ÔÊÁ)nÐe5„va„(7+i‹Ü¹mG¯Iü„ÄÚ«#5k6¬×¤¢Qi†·‡ŽœÇÒVöVïÔ¨7„MÕ`Ðáh¶ *øtë'Q³­W-”–h¶…ÅÒD“jSŸH³{«…™;³RíU²±Sj±Jƒðxc þ´ÌwVWcñÎm^»Í°ìÆ4nó½—èT41ódC»7s‚ìXNUR‰©$bãT&ëpoçÖñÝã9¬R¯_m0Ú®Ô …!„«N¼Ô¤-Râi¯‹t ñ›)þ-ÖƒÙUà(½‡/àÁwiq+Ž,ºÃzìÒðµwmà“Ùó#DÏg‘{Â"Ú»l6îo=RéqUˆÔq—ÙÕ§)ð!çÆ5æ<‰@Çò4—c e?‚ÊTíIUåºX»^¶°gµc¶é=mÛ‹¾8ØŒ’sSäaò·Z£†y§#]ðÒ˯tÔtóç7Ð —Ê4xÕ:ò×Bã¥U¥åJ$M¢³³¿/wu«#.¼ ušá*-š«&ž¢æX²á .$JÑÙ™Ÿ ORõÅœh^]ïxj‰0žëÑ<þNš&ã¤LL7‚Qøy¨¯Ì§Y9ù F²ÚlD`o<åsLá×›f£YÃxͰ<­SÊ~wÒ -vßVo0x¯ÍÆÕ¹8@ÛÍod•²ª q} …U ƒoÄU8„3îiŒòVr.ݲ±]a¬O9ÓX*ª–jÑNn€íæÙ:c\ï¦å¯qµ2‚-•nðÚRQmã!Dxû^‡ùØcxÔŒ=í*mƶ I7DÈI«Û'°'nT7C4¦Z<y ŠfSá. ËÐa¯Ùdg3¬†EŒ\ÊŽ»¿”»÷Fš)nV Þ[ßÔœŠXÝ*`> stream xœÝËrTÇ5k%•o˜åÈ…núýXú›” +•… $T0€M¾>çtß{ûôëjfœò‚¦ÝÓ}ú¼_}y½b_1üoüóÙË£¿<¶«‹Í[]½>âá®Æ?ž½\}u „_ùÁaÔêôü(þ’¯87ƒvfe…˜•«Ó—G?¯Ÿ°Á á¹Y??fƒ”‚i¾~‹ÓÜr-ýúŽ3\ÛõKã__ŸH§#ìúý±Á-…Y? ¿sÎx¹¾ [{-˜Íö ÇlpZy͸ü×éßrÉ3ÈaÌ­X äð“Õé€üüžÃѰÕ×aèë‡iö´¹àûyúöôèÇ#50½úPùÝ7NÃV–;(¹zy·7ƒróÌÕÑO]„`O·|0:ì9hñ}–`»H°½I³OÒðUZð"Í~ŸfŸ¤á•àR®oæÙˆS.)pÚ ÂidAùÀŒöè‚Ä0 ÀôWšy&#í´•Jrºü:Nk§cð?üšÅ¡áe`©-°ÈyœÖpä‡x%ˆÌ"¥ãÖÁ`-‡%ÐÕX;;+d¸pœí}Gȼ5ë§Ç'Âh—]•ޝãj¯ Xtž‘åÏ:ÛŒ¿U.C÷9—T̤=´ôòãX €øÃŽÕÙö¿eà XõÓíüt¼=‰JaúbBʸ™†í& ‡÷ÒÙÈ:'žÃzï@þœ¡ld™¸»´*çØHJ5ÀˆãH Q¥$°¯;P Ñ5CZ™7We'B À’|u"@6½á"{<óÃ@”NgZÎÓ-#A p&&ù8œ²âÑ•1ÖnPÃÁ¯óÌÆñÁÆ@Uù¨ýV*fýenÒðC^§á³y‡&q¸<œp7xÇüDd:>Dõ㔊¬7Nß$B¿"Ó£usQ p‹Õx ŒŽDMéd„â2áŒ\4‘–´B’Q¼ÃäV†ÃÖ"˜"ÆIùyfFñ ùtØsâV>‰T&´ÿ_ó  Mþú—ušý) ¿NGí:›¯ŽN¿øyý Aõ( ïgÊ)ò “vY;+aò ¸8ƒ°óÌ|Π; œW|ò„±Å'o›ÂC¸Ì©7èòHЦM*?OÃ÷M”^ui¾9hŽÑ7P“%.e”hÁ¸áÎ2ª­²àMfö—QØaÐF}¤î¥SBÍÃ×£Âã¼–ø€ü›4¼Nà • CÇŒÊ+¡ïë4|·ƒÄÿr\ÝÁ_…²ƒë¢Fªo’%©´T˜}Û\@‚šó4<+éfß”8^p_^k)+—j‰¬4Kñg¥YGKÙÌ.Çß½K³O ¦¨ÈO®Aøî9=9×£À—M®G€…Îþ" ¼'œ{ú±vK ž7ïL}S*`=h0«¹²(‡ïJ…¾âÈ‚¸ÃΈ›¬jDœÛ ®DÆ–ê{kË…†5Z®K bë$‚›‹&Æ €·q¿dIªÍÞ7ÁîZ„õÿ…ºåÑ“ÆnI:xêà$½ì,(@™î8›Ñ×5Ç -½QvŒƒ¾ ñ•—šùN"/fE$óÞš/¤Òhª‘®!AÝëA(×LiÍiBé¦!r ¢§!˜”>Ï8ÅlƒöÊ5c?þówý{&á +¥8Ž&u˜jðóÌ>AtÜ\É-Œ¥Šú´ÑNÄ€„”w!‰ÆÀ1ßDq4EyIh×d [Y®°‰,7òÀ¸9²Ùœ® 9®‹4$³ôô"õ§À»ä2[Q0 ÂĘÛ.»àWsöÒÉæÞ#7¡™¾é ˆÿž—…«M„I°ÅY’ñ6¶¸±Êò™$‡HÒ“ÑT@Hcª°/èTk3|Œ*k§‹ Øs" G,eQ¥6ƒÍ0yƒ“˜ ‘”4µx…+ ¶Ò”¶çq/ú|.¸Dº ²Áu'kNs½¯"½¼ãtÊœ”ú=¾@  Xñ|«´9^@11ÑÂù-ê†ðä-ÒB.ÃôÄ9¦Á8‹BrI¤ÒYJh jŸOÂ=ÞÄ™,Ã<ªn‡T¼$|‘XõE¸¸0övy¡;äYòȳB³•ÊÛÄ„¾dÖɘî‘KFT4?·hÃd7Nçï`À:™WVYl¦ŸÂ,„µt–n÷!ÞŽùXË›±+ JåÒÑV™ôw5½‰à9úõÂAáD0‚µ€p€)$ÁÚIÊò ì+üÜ1#¤N·^ÞÏtî0ø‡ñwÁÊu®q2–Nv-ãÜ+‹…!0ù2[²‰Êø±e8Áé±ÞM§Q8_2¦¥Ô¡úãlD™µ“ò*„'—$7AÈ‘-™”•¢†Ý„SÄ”D!1 ;yQ©6…•c(-x<Ž. ö…P?22?ò=@Hi,2ž‰»r@Y^ò£öŸœ?ð—ÆØn…ðÏpƒ{ˆÂ¶QOUÙõÌËoÇjS¡r<óE%p… xlVÔ f™fÿ–„uíx0$ñ&7M޽.8¶Œ8:Õh¾ïN¯ZHç_ìæ¥ÛÀ"ÃÜ&"ÔÙ¤¾m9“ãP®ó)qŠâ/áp&"Áj‡^iP*ŠOú5l7Ê“•™‚‰Ò²£¥.R#%ù!%ì€éØ‚\cýFtzÔãØžQ{•ò&Nna¨ç;€Öy†obmv¡R¥×j+]*3d—&«r;¸}µè{öÑŒ ꤥes¨©¹¦öí 6 -B€ilƪ¹g61Ö‹ˆe§Q€˜u:k' vëm"IÇ_&Ô¡¤'¬N%`jI0ÔÁš¹ÑOtki”AÇöä°[@ðÄѹEðCqRð¡t›Eöt@GQúOó Ú Q{þhd¨úéØ)ªçgº¥<(»–?øˆRmòMoYö–n¶³ƒRÔ à5¸"!ùŽqÀUü·òN"“…àC†Z¢Õ…b ƒ…·Ù-«ƒ< ¥.õþ{ÜK@MvÚ€3«P€Oê óÔðL»ÎR„:—‡_Ö˺Mž÷"מ!'TjϪ>S™ùrA©=ËúL„ǘL{ªA%íù‡D›ð0ÆëÏGõ‹Ax7›"Ì KÉïu/ÐQ=­Ó›¿ˆ}TLˆ= p+H|ËW¡Å;pXK-u‘Giº«gqoÆÅ¶ZW ÓK«¼"ÜÙ‘³MĄ̙óx gšköã­lãø2#PFó<Ä­²=b zÁâèîÛ –¹ŸùSÈBïLÊgäJ…=s6l›ldzàyÆê)Áf¾úV¾.¸áà`$¨‘m§y_Æ›)–LQV›MÂá´hä{èY¢ÍQå¿i°j[Ay¾`³nëÇ‘™Vç#B¨ 2@Ž^íe!0Y"w‚&ÅkÖÞ‰bÊM2E“¶ï´¨çÔ€g4r5‘7öÍÕ,¸ 4‡37˜Ç:k¿vä8‡8OwvÕ£SæõVþÍÏAÅ_†­“Ü4Í&3et^º –î#;q„ßžÉ(R XZ½WJxàÕyf÷Òì0x¥WÁiZ¹*s ŸG?âbåÊ`"iv¶(Q7‘a8÷ÝäejD©VËm8²†,78닞eXÒtO§ªQcE¡4JŠž°TXÉVNÇ—’C,ãy™1Íìÿ2v©?—§àhº”Ê…hAœÂåF?Ïñ$ K×P5z”å <ïš©<–ÄŽf€±Œ´q-xÏçÝýňƬ1óE<ŒÇ`"Ê˨þ­…?…[X):[¼J>n²͘› ßÓåØ/\8²ý`æ•É$®!ÎÓ.ˆc•›×óä}Vž¨Ã®´…¡¦Ž©+=ëP…Ò3†ášGÅ€ñu]j¨pâLç §F0.MÙ³ÎWHR…+ƒ|ˆ‘¯å¢°¨ÁÙ å„Ú3רAE¿VŒ‚Ëì'þ^;•ç!&t²“ A§×(]]8›·!{Ó\mƒoÕYMã^ò܇í& _FG¬–jÒ5”=óDÔl0yá1 *³0mÂt,´5ªFt»ª^:B‘'¿·)†Òâi^SÕ H\eº5ÏÓÈ, ˆzñXO~:a]hèho 4ž´i¿ É.·T%¹2PÙÔ_³W[ÙRÔ¬JÂiøP‹Ø2­°Kiç\7RÎC$½U®0„0tT€„zQè’g8SUÝp7f5 ÂÚ… TT2w¼C·ß×iø0 O› ¾Ï|Ìø<Õ8 áVÂ6=öŒ)ð|æ¿îáöÀ5xòÂa…ÚÓþ÷w{ÈZ’‹ ³Uÿ;IE†áëE^¦%Çf^Ú*‘!8þ­«Ñ‰Üôw6š²šU¼\´ ßmÉøb­ÁÖ»»úŒtš>pp¤R%»*ÌW)Þ+0ÄüxÓòŽû=<ðN{a0Xy„c¡}x?.Ql›Ž³®iºF¼Ÿ«ïÁ]묌ÏÄVýfÜ„ Oï5õ±Øn M¢ÀÍ4 JÊÛ7ÆÝ¸îûäÏGz ~‚Ûx«*TzQÖjÛb|ø„äP} :1‹£ifŸÇ@Øjö@ ýÎs{ëUÝøĤQ¹ª:á&ä¦è" ‚ÐJ±. oåüaiK–ò·”$Äî:¶˜màiÅÀÿÀcÞÛ ÞŽX ðF)0AŽ6¦Ì¦™=d Ø:ì ÿ)¸óŸÍµä‰Ar›V¼"%»¹o?7¿%`ÙÇzKóËeœ_%ß*°J–ÊùÎÚ|p…×»ú—=ß{j¹¯Ryá”…TEÏ&Âçêy&¯É/ßåâÝ ­Š¾œŒ˜*ö¿Ý$ßO½¦<«2³„U}@ˆ6è8À½5¿Ô“bý×cÇ‘ ZÍÚe§ŠºLž½¸7š:±l˜ØH-{¿NŽÖ»ü‡=|Ç ïÞ[E”)³eßÐtËü»)a ð=Ϫ›Åì-'÷‹±†­³>&d±™Y¹ŽÑhl›’þFÙÚ#\yR‚„Iä“ÿH³_¥áiÁ·iöQ>n. Væ~š%vê~i§Bäø÷EÏÀb§µž«E3` µtUÖ4€ÕU›ECì’ÑUøâZ‹Ã»„Ây ¼µ‚ôP”‚H«ãÄ&׬qƒÁ W½ÿ®ˆb#Àć{Ô˜ÉÚÒ‹})_„áiøMÁ"q‡z/«ŒQ³œa£=sƒQ®Wæ,*X e$m·;æ¶×X½u³?þ*É0É -=›/³mÕ³ù0ÂÏq…šº“¸zþ¶‰¿„{ÞÒv«;iW@·wl`ñð«/‚qP¡i.ǯ¾L3{؇)±°êüwŸlp¤!²ÌB"«ÁѯڟÛ#¾ì­d`J‡xQsšOœØ¨H¥åÞ$6¬{¿üw\mUÙÉÝh¢Ÿg€ñ›¿\¡íÔ“Š2%ç|­_ -ëž8‹Ï·OéU*¸°BÄ úÑsO(Qís5š®þœ­TŸHœExË.F Ò£¥+AËï¤#¶\ï_¯·«nÑ;þ6”/ƒ8°¾Ó!ØG¸E3 _¥Sb½ÝÍØ‘Ž)L“@¤ÕkNá<,'ÔVp%²„ÚÑ…Jm«SÁhî`å"‹^¢6ºÌ&Ã,g‹O2ÐÛó&·º´Ç¥ðF›I‡-)Žòªí|ò² àJ2ÞÓ Ë½ÙÔéˆâÛ번¶[™±7؃WÖjŽÞ­õ£JKmÕú…DÌf¼d?´°ºo:{öȦ°¦pÂè–‘ÀB;ÎŽâAÎÅ¡ý̺é¹ðÅRÃàƒ2EPäH'~ùÀ¬8Dsà5c'œqÈ»óÌ%a¡ ü’ƒìØ G²í‚.’åfág¥c’^ulÑ Þ¯ö.*Š tˆJÞ+Úµ@\ .n!Ž0 ¸cv«Þ‹üýmì5ç<¾´‚0[,ù²øµlæý£ª”Ü´¼Xb]^ø•ÿŽln"r½B¯bÔ‹§ªö8ÅŒ*[P—ƒ|ºû »¶’û÷¾UýÜËEXÜ.teû„sá]ú~Â舊n-š¢–,¡¯:zÆäÖ†"iœ9|üÞè"¹â‚ÛøuVü~Ä]ÓÌÅÞ྇=Á“ú‡_|BÎʱó«p>¶0Ž'óž jHëZoõÄ÷CKDÕÕã ~¨o&xn/QÙè“o™‘p"ϳ¶½ÄD£ã¶|c¸c#.ú÷Þ‡OµîÂeäòçÙ-ň®¶,-7[EÖ¸å3%EóÞÖ_˜#¸œÐUÝ/+×±ÔŠûÌÝÞtß(dÚ•Õ[ˆ‹•½„o' âWO”¡âêMHìtœ=Š™ª’3™;ríúÂ8^Ö˜àÅ“\^­c¦g5M:õ EáÕáçù\õÈÆ¬’èÒñÃi®LC÷ÅÖW‹øÜô¨Îê*Á¿¦Ï:W;‹:U}ªo‚ë@·©.MÕQð:FMnóøã*ˆ€d|péÁC·:Y]1DýÐfJ-7=—éл~ç­;aˆç2Íìï¹xL|óCü›"»z.‡õ•ƒ]m|ô£ÿùȬ· _ÍÔ¹k,³Å¡©ÞIå¾ÿÐ#¸^¬ûéÉ;uWèÓ¤I؆´E‰mjø…] ¼¡Ç™Å¤ýÄ<œyóÇ£ÿ ¸Wendstream endobj 366 0 obj 5476 endobj 370 0 obj <> stream xœÝÛrT7ò}j?bÇTF«ûå‘„l` BoíÃfŒoPeCˆ÷ë·[Ò9jéèŒoC ©¤ÊJG§Õê{·zÞ/9KŽÿ俇狿¿tËÓË_ž.Þ/DüŸËüçð|ùý>laX°ÒêåþÉ"})–BXf¼]:©wj¹¾øÏêåÞš3'evu¼Ç™R’±úˆ`á„Qaõ ×Ö[aÜꮕõ^¬6{kå5³Ò­~Û³ˆRÚÕAüÎ{Ôê,¢FrWá Ç\"XÃ…úïþ?r%*Êa-œ\®‘rød¹$¿‚ï ¨~ˆË`½\=/Ðýî†Ç#úqñb¡7ËÏÀÊŸÂzWX:nÓjy¾€Û[¦ý9[¼šexCöÀp'˜5'3:ñû¨ÐvZhûP eyQ6¼)ÐÇzP–g¸ÔR(µzW Ëò²,¯ÊrS–‡#†$ ¡è¼dÂH¸V¨`Üš@š(BËá’Ik´á«$qã”V‚nß$°ñ‘¤µrœq\ æœ\½¦ŒðI[Ya~CPçME¾heeRA¥¼pØ2žqÔÛ›€£5ªqÚkªûýž¾ãÔÿpO:f,ØG÷dzÏÓTN‡D¯dÖºá3¯@dé3!A—iwzõzo-=˜¬Wymà¿¢ ƒ¶É–œÓ îú‰à>$Ÿ®#?´â. ×B8¦¸“Ìí’t'‡™ ýpœ«ªÃNRnåxp¼ö‘$]_ÍJ3/t…&ó_2?tþÝ¡J@BÅù]Bn‚ËH"Û7Dòñr%p%Yr}¥5öá«=¬ìIÖR»ÜµÔ ¨˵¬HŒu{£†1âgÀz÷|£w%øh‘»sŠ`+ÁtÔoЂý€zŒ;xB61€K ;p…„ú›¹Âw÷¾-Ëã²+Qk˜°pùµð,x¶—¸v•4Õkô-ƒßé^p} ù>ù¼,õkB¢4 XUá³^½-ŒÚÐ ­ è¡“z—Ú DM¿´›£Ù£Ÿ‚‚k¦JK¹¡â!K‹AÁh”£u$ÝC‚bŽ• e¯ðk@Œx–g#DÇ*¹RÁµå@ÎV»±S0ÈØ¾@Æä!€Áp3ÏTˆ1Qq¬-È]b"TÔ"âdVÙë3¦Öª¿BÆT ΡñŠ1Ê>åå´H¤Ùý[R·ÑÜä«¥b¬áóÔF Â’æù´x¤õÜeúÎÀnZ­J>਌ÙVkâ–ä&»…¹ä9 æð•äuIKëBBxçòq{¢0†<^ÃÝ-…ž¤› ®i¹I¤jå›Òr¬¶®W)‡s…è‚OP)ÀwD·¦‡:&×¾¢®º'"Žõ[FîÄ`õ ü‰€/³WªSKGöœU,‰9ƒ_ 6G2$8¿‹éµPàhD Ú7-‘Óš²˜ÖŽP–ƒ!e˜Šý RÆáHªÅÙ»y Jz”¸ 5_ Ù(ë«tà0v00ù×¢nÌðô,}(DÝÃ)öÑu§ÚaæVûÓ6×}^\Ë$Ž9×ãqCiË + =\îÁ"±§E€•!·÷§€)üžñªüŒ4œ–%ɺ™ã›r¡ÇݽgeYÙhLˆw1¤Ý–‡Å©Ozt¤¤kòÉžÇE j¨Ä²@b+TÄ«N+$ªvl…€ ?¨œv®ÒçŽ!´M?ªò¾‰j©¬ÙÖ·Áã9\¥Ã©;¤¶ysÜ"Ô,Mï#ÙÖUu¤æÈ¦È‡’õxùØ3U¤¨½yÌ–Ã|H8*ש-+^ÝC T]}pa]{ãP)q]"êN’ÙYmRNSb8®éx­¥…ÌÆäÞ<›´ëIÜe¸Ž©¹W.ú”ìyÁ‚«c?Ñ8Úú#à­ «ÀËÙm¡ÏuL¾Ÿ†x`¦sþ›DÓê};ýñ6Ä烘Ïu¶¤ôk©­µà*!˜Ë QÁGÈíƒ9`€25bÀwÒÚú©,_’ÉcØ/ÝŠˆ,ÉÞ§Ãó/ÕŒ¸|Q–%Ižmu¹^1k5u¹šceéçê]*l¬q¸cÒ×_]AŒ¯BðG²Ð¼=·ØüD:œÕÃJ:›p18šˆ™ºÐö½IBïÍPN˜œmwGU®ĤœŠáU¹ Ím¯Q|NttàùE±b)·õüÚ¨:éùÅåIÑÖÛÐSµ†b’ÏéØÈ»FR d4f¬‰Gü†17ƒu51¹ï|›þ$Tç(ûéAsñ¨<ÉÍ\¬Î+«~ÀÿmÌÅš’QkágU+SßS¯©åâºâ®ö »7jÈ“ÐBú7ð°åZ1j™(Û?цô;ïŸåÙ -ÏoJyöb€Ü}öjIð_cöâ¾í3p¸j÷üf<-µvíÄ…1ЉÆþæ*p/vn2P¾ˆIÓkñØB™ÑÛévY6éd-U•úÌM=tš5ÑØç œ$žWéåÏH ¼ÊäŒ-šª#EÛjdðŠ?o›ÜµßW›)ƒêÎÕü0>ÎêtÄP’Ö|¿Ó4„Ài3l¦Šf«‡aˆX* éMDÆn…[yÐ]! ó«Go 8ù(îàߤYÊ« er…RXm³&çýñIÊl€ÅBØjØ^}™n ¼…Òùà,“ 9§„.Š<úT£UêŽÈßä/„芻ÁCJ3ì†ê×ÑÝi r±`¤6µxÒŽÓ„ÏÅÆv9‘숴‚T¥˜éfJv¾1œ¢‡#ã)'(ü¹>9”néPklu(Eò©\¹s¦„MaÜrL¸’Eîµì€qª€ý§‹ý;Gà’ ²\*cþ…x¤qpÅŒ;Ä#\ÄÀ» HÏÚ½¤Ý3Üi’VrX»1´ÌI ^b.'0¥;´ÃzQ é'a>˜–gâ¼àÖz¬¿Ï ©!º¶Çw`E©;ŠS®^°[¢„†än=¾oЈÝäÔ`[P4èÙ²€D º%Ç'ˆÁa®xÊ 6ÚkTP 2×ÙA@ªVsí0ZXΔ¬$ï¦Ñ—~9‡±Ië¶$TÛÂ"Õl ÖîÍÛ`Mo;Ó=GyàäÁÖñU.Aæ ²¶˜|܆¹ÓIè7C¬¶Ÿ.pl“®<“HÍÔ]›D”á¾éN!n 7{3«¹ó4ñJr;é 8èÙôä½Þ9ÍT~y² mg_‚iîYâdîwJ+À/­‡“t”͓(z P—\?sœ&)ge/Sâå4åCBÀ¿×®h4šh'RáËòС5MºmЩ>^L¨_˜gô„Æð„"U§¯0­à§ÒAƒ¡ª4TÚ¶u|¦ÝZOsâjÚsñÑŠÏ«R"1µDhñ4˜DkV ¨×u§Sª43pìû`1‚¿Ê²â»dy€Ü}0àÈÄ®æŸuS‹1¸Á@q»*ë¯4P 5Œóá« Ký,( w(†\ìÓìj¢xNÌi† ˜Ž ¶}âa^±é)ÆœóÚa"­DY)ÂX(L£Eݱ€YÄ@{ç™âñÒÊ<ï–¹¶„줋ì&#šk‹ƒ¢®}0ì7ô7KGPü‹Jḱ¤‚Ê{Já‹P’ÓÃ.kËϾF‰ˆ( jÉʤ¸é|ö—•깬L'Cî!‘èA³é¼ºŽ_Ý›¢½8œk¼ÈÍïÒÙåÓ°ç ü¼ ¹/Ãp°o€Üåe²ã„t71ùçB‰9Ïì„ô…`-eÑuEýÌŒýa»·{]–“ßh¯üßôï λ^ù¢?‡ÿÿpk³õ‡"Pý[E¥£–™­Á}WYx¡1«†[ÆõMÞšqdCÂpkÆ n81|Ï w›àqKÆN)Õ4ŽÝÆ¡ßcºT»øqJç6©Èоš.‚¿> stream xœí]Is·¾³\ù sº20ö%·$NÅIe)Û¼Ù9Ð")¹JÒ¢Öüú¼t£Ð@Ï¡œ¤hÔ ±¾å{[û—gbÅñÏð÷‹Û³¯¾s«—g|õòì—3\ ½¸]ýá:µ ,Xiõêâæ,½)VBYf¸Z9©wjuq{öÃúâœ3É• nýê|ÙqÆ{¹¾Ægm‚öÿºø+Œ¨D1b`ÞÊ£^\ÁßÃBymÜúñ1XâŸSëE³Ã7¹çøÓÅÙ·gšq³ú{ûó™ð^1‡‹•Ì™Õ-L* "·¼>û¾{ÕrÇ‚™4ÂtWÓÚ^Nk{3=^N÷Óã«éñïý¾Z ¥Ò –w¢sÎç|s¾Œ[ÂúÞÓJ9ÖïÒ…(­Äúmº¸ZÿŒÏJyáüzKúÀ¥I'™‚Ù_Äî–;n鈷ðÈá~%ÇNo¾#WOgº&Ã<¤Ñ­°MxL;[Œx9MtO¤õ–þrXº3t¹7©UºbQÆ• 95Ó¯>à³sp'~6Äåxæ ^¥«úi~,^)Õ=–«´Fü8“V0LÚ…!£¤I·z¼"ÃБZ6‚kæ¼[m„dF[‘¨äåt2Ãâµs½S‡SR(NËv!aat zÿ”tè¦iB¯×8c!Xœ^zf¼ñôé]lÏ¥cZ„ÅãŒËÖ%Éßa³‡Ýàáž>¥ñàESJ)Ü#-pwdS ¶£¿m½ÖdiX¬—ãläÒ¦µw½-wì"uÑårFx„8®ËT®_t^{‹3p%ÅÌôÎz7µƒN¹G»Në•Étâe“aN%Aª tbÃŒ³$Žq–]%Ž1fà˜úÀ*ú„¤IÄ—m‘t“Þe1}9é BB/¦ÖWÓ㌄Èk£Î«I´å*SìoÏ7Z€J %ƒR~^§q³Ö.Rtáú„2\È@5dnšŸ^šÈf}£"Ág/¡ý) Ç©dL.´„ÃÜû˘`á;ÞØÃ‚ÜÔ! Š÷ÓãÛIM}÷'ºçrb¤-aÀ«´'ak^̇±‰G§w!2’„3ð‘vs>êèmI¡@°.³K+/)%Úý'2L¬ÄWgj`¢"pƒÜ-Îè/R¡4Ê t¼DTJ”ìôf ²-بý2ëÁùXWðXæ²Êìëµßclq ÍŒ,n Ét—Ãjà¶J>ÊG¸{måòæIJZÁœœd(ð/ˆ^¹ÞvþdAÉ`B9À}æj¡G®F±ÕâêͰäR™ÜObü²fîØJäüë©ÃÝÔú¢îKŒ†ØúÓ"Â0…}ðãI²é²"çŽ?oÈ$¯dêu”'7Çi~ýmD …n‘Z–n%… ØÜéQZss+ÏkÂHX°íÅ ¦iŒ×ë÷I8ø†aBåJ¬QQQ*-…JØ UÈŽ ~?i¢‚O;; ¦»ÎÄpCO’öx]È“ âCë}÷È›;Z7+)–PÞ±_‰ôåÔJ¤uã6kšºt—r¯¢YB›sã1 ’ˆV5Ê™j·»¯?´!5Õ5ƒp0qïq4³,  ØóÛ:)uC“Åk b)Ñò%4¬ò¦;Çj ˜ƒwâ3™À%‹õ_bwõŠr,åúä\;» »qe,w.ÀÇŒ+\¸pªê‰ûx(èBÞ'ŽÕ®Qo—¹µ€y3EI>À,w€$×ÕU$ksgî€sê¸Ô¬aÇÓ·u` È3àÑaôаR‚¼ù]°ªVàC4}/°œ„ˆLd¬n$"8QZÆÑ¡DÇùQDµ#€à1'­1µUB}æ?·I±gñá)Å6W¹¶íh`O¢›Ü:®Ì€/Èž{K¯œ`…A¨ÆM+CmLÜÇÓuaÑÿŸIÏttP ß;šmíö6½Íà´L\K¦Ü·b壟I‹†éë·©‡ã¾åo‰âDohN"íòEGó錸^…QÙ4H˜JLÁCCBZ&sźÉûÄŽôíf™›[’½i‚W¹'ÁÎÃ’õ 6Ê<bBfüçÈ3ìðu¬8 §@Ž{Õ¼Ð=i~[õåvLØëJ°Wl 6 ¥èY@GÖp “Ið)I-¯ _#uAÞ“æÁjö…Çr‡5! @ ÿ¨Þ0rR>¾-ÝÛÆH„:ú”ÔŒé¸RpeR3£Æ†cª¤@[Q³àüNŠI·õè*©“P °àüÇuBÜMÉÅFHcñŽœ« Í Ï[V¦T^bz!¸tè¬É-Gœ8(!tæÇÔn©f'N蔀Óûæ‰ÿ<=né¥{ñò¢è¶yø÷»÷ºYè‹™åA¶øp; Ø`þ$ìâ8.Q~ZÁ0KW†ùžndÃ"—€½ŠÃ‡êÄ—fçíüx^^–9…f1P³—´Â„¤U×ÉÖo›ˆÓçfz¼ª%F]Ú´ì$û65ÕR=½VKõô¥z4k ©~U <b2 ©iy]Í<»óëæÚ Ë>4[ Í’,M±à/§G¸éAКƒÊ¯*¢6tƒÁ…n1uC}pD£ÖõžG:¤>¸QÆ 7-÷9¸šôfätüÁ)6))òÿåĪÓfòž»tbm ×÷”®éª6½Ý±¸¯Ý¡’¡ãv鲿ñ F¿ÑÑj³hÀë_G; (,Ph’qªx@5‰WPKZûç?€ÉÑËeJa åðGUóÈTú ,U0ÄÁÈ^Iã³6˜-sË1Ö â˜ÌYý¹¾ÑðöjyÞÅȦ=Ù´‚PûÎöüàŽžÊs0™ Ý'ÌŒv‚ i¨Oi›fTí\ÙbË 7h—£¨p4¤šGH~þ/É­4®GŸ+¼´ôÚBÆVvÓç²xj¯s¤%Žº¼{”šïQÏX}Ž ~[$Ó¢{)Æâ!¡jRLYâR„_µ_íþAü}YjDÙ^& LÂóUÂEUi$g\Šu'óæðJ£øá ]F†+pŒO¸ç³o¡Q„)åõߤVÏëæ±KH5 ½ˆï.qºãû3Q Àxâî”_pÂ=é"мG˜5®CG†¨6ÍhúprœÄ°,ó6§£ÌS SÐŽ~ï`žA6&và˜%JòˆD™R”hÞ¬§f´µ0Í©:Ü”’4'•Ȩ!.m«ŸWgŒ9ô™=">!½*½eËŸÀiuI¢§”âJ<®Bƨ?vs—6Àíái¡8šYLæ7þßV°÷[ÖkµLÞ¹ 7ìø$YMV?ܺ' >£õam%ø> ¨K¹Z¶å. Ý=÷ ¦3ì-ï>ºV¦JôÌC µƒÂò~oÒÌÖ©G±¦òZ¯Æ‚-Ù;_*Ø‚u`öÊ[3Süûè‚-é]¶!S±e5ÆKä#ÒâgŸ¤b¯ ËvÚ@ºJ«ŠHÖúPUû-Ý[jžÍ/$açÂÑ(`*ÌÏLÀtf:xu1¯3aìñœS…ļÎ^£|œzÂ’­L¿C¾±þˆò-ÍL³ùVUÚÿ\Éõ\Éõ\Éõ$•\ ?Wr=Wr=WrÍ+¹2ª®äòÿ•\c&ãs%w+Á¥d\“¨ÍØr|ÔFÀ¢ÏUÉõ9â›Ú†Ó—…iP|ÄOHx\K™"“šƒZþª“£Ÿ2x‰#z³îÕdáï*†‘ö©ÉÂ-H[~ûð׫É*ð4ˆo…Xý³g°ÅyéÌ¨Š³tÐ Dgé bQÛÅYD¾€Ëâ,°ÿaöÊM‚ ÕŒóˆ’Zr•ᇵ‚ˆ e»J¶ &rªEw%.Ñ„²ÀeŸo‚ðËãÿ›‡!^G4B˜'å U‰ â6mVeÅ9ƃ_(Ê* ì$Ž_ˆ—è( b´óft~ÌàÛ³ÿCF1endstream endobj 376 0 obj 4719 endobj 380 0 obj <> stream xœíÉr·õ>•˜ãP¥±/GÇrEJÅIÙfUq\$ŠUÜDRRä¯Ï{@wã”ré@ƒ~xxû‚îKÎÄ’ã¿îïÉåâ»_ÜòìnÁ—g‹ \vN.—>„B- VZ½<|·HOŠ¥P–®–N*ÆZ^.þµz°æÌ8ã½\]HÏ´qbõG"8½z‹¿kË·«OÒ1-)foÖÚÂvÒÀŽ`é1å>¦­g*¨ÕñÁ~7Þø_ájËœ’«›0¬PVâÆ‚qkBXÝÇÇ \­Îq¬”Îwk•Óau‘¦“®Ç%_úš{8ÿ°ú6a*¸^”ÈŠKrÀGò=¥•(`ÓÓPé<Å«ÇEË՟ȉ§PO`ŒGŽœ’õ/Ö†Kf…A2Ó –÷¸p%è1Ê@Šä9Á '@šþu!B±ÃS¨D#!-W‰óbúôÝ kŠwi ÔïvVÒÙ4혊_%D=üB7L@6—ˆÙºGm-$3ÚŠ„á®rDÒ';Ëܽ"„ K([¨`ÑGñH<”GbböÝ/2P]KÍ`™X®¥®ô˜:kà1¸`$w+ßžVÃtÚÀ‘-”a\pÙ³éWX,” ]ý‡Á™þ‘g› ^³¸Ç‡‹Ÿš…?ƒAúˤÒ2¡—ÖkÉ”^^.H*3f˜¹Xü:i¶J|³ås C E³uš‘;ËÈÝæÙ£<¼É ÞçáOyx”‡q­–ÄêÇ<ûŸ<<ÏÃûaØä¨5LØž|Ovà—õ ›QÝÑ€y­“¼uÓ×™»7d:J­ ´Ôv\ïæ ªÅvi@°är Æ_:Ÿ2u®ë³ÅY0'DÒ ½GA‘œ[¦ÜÒJ˜Eé\9æü0ópé ÂdÎJ*Z:okŽ?‰tÁá ±úm•§Oòð:C»Ê³wì²âl̈́᰹àu!¢‘ J”Â¥½!{ß—Lxµ+†C¿ý™Ã:VrbD!ßåáMÞçÝÈc/‡atcé\rÆj÷BqxœÒÒ , Åø%o†™(VU% ŒÀˆâ—•ü&”oš'B{EyÖɯG>(ð® O wDñö°Í‡ßJF§™ÈpJöÎz°.µî¤Ùûæ‚÷yö5k•LÆÙÛúP3nc#aßneb]†Óêp ðÇ<{œ‡ÍíDËÈ‚“&>wÍÙÂ8%Iª@øE#;M5cM­iõ®yæ#J aørx Dƒñ~¥¨5áÒðcÞðÁ„# „®×¦D¸­è6Ò¬ÚãÜ<€nI³Âb¡9ü5 ,¾1]Tð*FAAÄOQ77‚)æU<„?[ïEИ%FÀ £B±†„8]äMFUÉ+Œ…Ãø%@˜):£€¶<¿ ®‘²˜ }+³>Eü+€hÅA«!øµô”Ðab‡˜7&#¦…Úò6ÅæBÞ’W]µî ü.Їæô©gdÒICi 5•Óœ•£]@'…€©ZÂ> ñlµO%B»qÆßqF zÉÑÎ":%–tM)t²=Ç}Q¨‰%&H½â )«² ‘ ºM‡9ðØKE¶K]@iÔ-¢5”+®Èârºä÷ •:ME Ž£ØƒÜ#Z¸?^4EÙ¬ n!˱¥Š¹‹¼‰À[:…‰~f‡%"K¶Ôò n…A*‚HÌÖ^ƒJp¹ú –C°qAªjI’”…š|$¶cb²éšN ÄêYC+tM2Rò˜ u$É…*´›¨°uØÃãemP‚Xšß¬YͲ˜fë"{ €ä2Ù%`iP±Úa¦ÞýÌ.Õ°Ë DaêÙDòŬÄR[§|OBb÷ÆF­¯>7]ýÕXnzï«$…¸Máp(‘y%'—¥Ûaÿ–¨xÇÀï<ñòØHO$$ÉB$þIÌ&‘”èrßç?mòßoò8íó<¼Ÿõߥñz‰|˜4戚 uŠwQ»×J`ZUÿ)y†â¡˜6%畉eô' (0'zÛ¡%•θ»—ä6öÃÈS´OµM?Š@y™64^PRgû%‘Ò;ê÷ Š5:]QÓOh$üTnÐ¥:ÚФɧ)r²ÐÆØE‰0"†±\¿ÅF—éôC£«á-Gàª4`Xϲn·ƒ¼dÞûGµƒô0ý¬í ¾¤-ÐÑÒP?³{ @‚ö|= ‡bßPˆt{®èRãGî³ñ#‚Ñ`>–šƒ‰™@fv)‘@Äh&(eEâ£ó¯µñÃ!a˜YÃÔc˜˜‰ž¶ñCXóÕ7~Àì3a–*‹tÆÆÌØaf—ÆÞ©yªÆðAD>(|pÆO$>¤ñSñ¤P@Ò6JþJ…!ˆ&€ …áO¡0Ê+μ& ÓÏì®0*ú÷Na¾oÊøIFù}Á) üâ(êÇHÜþ•«†ã@QªiâŠá °’bü=#A:i—9%&¶k`,UŒe«Ì¥ë#Å!1æ'͵ÄVçá¨÷iäkþÛî}¶ ʽÏܾzŸ}]ûÞçFºõe€¿-_üßlÆô÷ã1‹?¬­ÒćÒœ5 vÛ:MÊR´§–\ ¬Óõ iÜsíº åFz,g`¢mÀºf¦£1óª¹3¤”Á`cÎì§J]49wÒ¤KÛìݬˆFŸzÙ}|í HŠ XÍôd)ù3wk@ÛoåÖ6ýw¿5a‰&Åí}^À+Ub)5ÕÇœX &e?±KJ¬`„¨˜wîÙ® <²aå°Buvoí­4„ïÛ]¥¿KË5sm\ƒš¬;Òf-CŽD—Ï\Îo–fOÀæª;P‰ÖLoHŜޢ§WçϺ39Õ¨hÇkô´ôJkð*ÚqM»j›Â]éYPº*Óßt/…Ýð²vï5G#Å}ŒíË L;È B߬–¶/Zc+¾¥ùجë…ò2kÑÆå¦%øDãZ:€Ýk'øœ-ÕTÿ}wP5÷– ®PÎV×NÚÍ6Ð"±¸.$}h4tÏEC|”61jZqz÷Ýj!F}ØóR‚‡ ©^ÑñˆñŽ9U7aÚ2'\±#=C%€¬ËšÎCð -œ Š‰Ð“­'l€øúÐ7â+(Uk=q@oÕZ¯{Yþ€—3wY(>di.ÚäîIw=)¾ó£‚á™|‹e®ÇO†Šß×@]\q"vï´´Í­vÓ\“΃«,[2{l-ãyŒ*$‹‚éMúFãëb÷ ›núaƒCDÅ“O…ÜÛÜ@¬ÓM©¹Õd°f;}K™àòixÉh".žzÙcR#õŸAª7ú¸¤ÔÎÂÎ÷×&®Mæªp÷;œ›ðInTÐ= £Êf]?‘A£˜ÏäfcéyÈK?風ØWÙïà =Šªº‹À[¿c Dav0uiîT¹,­E`¯ñå5ªxúM\d¸ŽÁu´)sÖò³Du¥g”&(–ËáÃBQÁ%Þªð³Z•v7E—€H]徤ÃEö©^nt ¨ÜÔ"7µ®úfRœõzCoâ£AƒÔ%²‰â<[¡FøAühñ«Ý1_PwÌöHã=b A¯Ä4ͧ÷$<~H¡ŸÙí= ¾div½O·ó ‹ZÇòQãJù“6aê è`+áüRU¶òŸñaUÂDÇ4}¤ ßœA Á¸oŠçªUñV˜Ö{¬ßÄ3I¹M|û¸J’ƒÓŠ`éYe4rÝ_ÍW™E3l#ñrý=7 ШNàÄ¢z±eªÑ‚¬ÿD˜Çì"PŸT¶Kúh/îá;óšf©0ÓBìó#‚â[dãíX»C±uãq/í~ë ãn°X1ýåB8pŠx¦›Ù¡áÆÛLì2{x+"Î>ùgÀT‹¡¦9îl÷~¿ÂW㹞líõ/l)ÕŠÇ´ž4dKª÷¥EÐÚo•â>ÎÐH}Ø©Š´´bx=Py&ûïyØŒ­)> stream xœå[Ys·~ßÊØ·,U^÷Qy‹-YI9±lÑU©’ý qIŠU¼ÌCŽòëÓ Ì Ìî’»Tè²õ@Æ4ÝúBó×9gbÎñ_÷óèbö—ÝüôvÆç§³_g"þÏy÷ãèbþ·CX Ã<°`¥ÕóÓYúRÌ…°Ìx;wR1îÔüðbönñãÁ’3'evq|À™R’±¸Ãiá„Qaqcë­0nqƒce½‹Ëƒ¥òšYéŸ,’”vñ>~ç½ jqI#¹+hmnqZÃ…úåðÀ¹ç0NΗÀ¹ÂÁá X~ ß ØH}‡Áz¹ø>Ï6¼fq«—‡³fšq3ÿ DùíLXoàsÇm`&Ì/fpzË´fÎgo'^±Ý Ü fM¤Éœ±Ià«ÌÜifî&ϾÏÃë¼àcžýgž}Ÿ‡q­–B©ÅßóìežåáÝ0LRвï$(Uà!¢¸Aå‚qkBÍ¡º,‡%„hÃWI»Æ)­]~™¦‡-AÓÚ&„[pjæ…žNÊ8ÑIZa¬)h$DŽÓ ˆ1OS*QÎÁÑ|A†°E— dè)è§ôÔ«Ä zqBäðäIZ)§è!S¼&»]½p¾Lœ?EŠ–Y¸ïZ¹žwؕ˞wetÏ£W æ£õÚˆkÈ§ÇØ¹ïeW$Ö…ÁýKÁüjàúIfŒv  2éÁ¸B0il‚ާÂ,qz¢{"ÊúшJÓoéø$ Rs+KšçD­tü¹cGŠBóœT7T’t=Qñ9YN—üwâ$+¢î¯Ç$|J(R@¬pèI.Ž$K¦9“£‡£p§kX^“®xé–R38 ˜/%ZV›4ë!£,ŒØnßž6ÃtËt+°¦‚ËÞˆìÏfƒÐ-º¹µž3ïÑPƒ"ŸÃÌ# µ` ‘‚f†:7ê·ÍŸòð¸2Ô•Ñ ÚZž/ÿ˜}íçtÿ½Ö cÝôUVé5™îÜ1ܲت7¸iiLॕ*Bââ,Kç’zž¥ì9©÷ ‰`À“û¹ -B"€7×a˜y$Ø8ƒ4%óJn„DRh­æ'H9!?/òôQ^ejDò·•À*K·«•(6¼.p•Œ,UX3ÃÔ.J ÌD D ßd6¦„áÐ/ÀƒIƒñmG"bÑÝì8|Ÿ‡'yx‡wy7òÙWÃ0ºOðêF:×¹O#Ò½¨Eâ´D°¡(þ$Šâ¼ ÕSšØAMœ3Üqó$™îÏ%{"#°ç²ÿ¾Íæi„²8{×\@R‹“<\Õ×,ÎÞÔæiûÛ¨öÛšXÓÖ9¦¥)lݪ:\"|Ÿg?äáyË™R&ˆá ˆxΚ Ÿ5y¸ìŒ³TÃ/òÙá׌ÊZV'Í3YåD.á7~†Â`¶S…îµàÒð>oø`Á‘‰Âƒ×ßõ$¸­äVkäD¯/·þ¶7;|ñnÂBDsÚ$`ÎÛ&PmžUrNÄVM ·¯ƒ5G^µ}^Ï&T–³W ek¥ Íá74¥I©|Ââ71î 2­‰ŠPÊ !XZx¢‘)^iÍŠ®!ÁnCˆÛ¬| õ&å„ÌÑGÏ*¹RÁÕň.ãmÆÄ‘*.ž ÿ à_”›k§‘ÉìËœfì‚ËJ@:Ï*Ø-‘Uª \±²U¨Š*O©õTUgªjµ>@†¢Šäúýôˆ"ì¡KR>ÔÕ çk«W‘2Р5Âëe"]Ñ Û\›Óý溠v’f-–úÃ"iÄ›õWH0äÚˆchòu~Ÿ‡‡Í¯ › ¯p±¦šA¬D1; rOÃÕ\[ ÛZ‚F\‰[êf”¹Vw E­YpªÔ¸g¤¡G¨vn²Ö(äÅ5e!O ¬¯Åc¬ÅO_–¹0"¨u%MÑ‚WåæW8 ,FHP‡åäˆ/šxÁÌÂôRxˆ›&Câ›oÖÊ\Å»4”˜&˜ß¢ ÜYr/¡E9RàmTn”Ì*Ÿ<ÀÈûi\¬?¡K³Ûk‡èCÅ`½”t6Ö[á°ÁŠíïyá¡!—PJ{zÍ•ððiŠæ‚Z£HÁÂ88²N' –kÓ­ˆÃ¸!œ%Ñ:ÌR¸Üx–)ÕöeôQ­Ÿ–p±Œî-FE8Ý |S…OìI¥Ç {ƒP(x¿xƒÓRK[Õ^é%"Tª’¬öx SÏ(”Y:“¾”NÖÀÖøèæÝ:7ÓSièÂ&ƒÔµ‚€¦×5ü×ë:N4$]û`UH›|èÝûP?EŽœóÑM &!0òéBxå‚LÁwæNÒ6ÜÄÕ@Ã!þû6Nû ¬í¹_ºå«/¡.£ö&7/x‰€ì|Gn“:ÞC 2«D\‹_’:´é5–‡«¼ø&PtΦ‡W¹‚˜pª£%l …*]›ÂúàxÄ»lpJ¼Aâû:äÃþÍGŠ5¡¾Z¸v°Ñz¦ÃåBl8Ìö·µ×IÌŒ@šÒÊ>3z»…ý¨^¡4(LÙÚ—HX¢…x¤k¾‚WWj7‘ éL-ld"¬ÉǶv˜@v?EÒô4ãç¯äRéS-¸0 ‚/è9ÐǵÏé¶Þ¦wZð<À8¨“;o ¹U‚HòñSéð¶„]o%9 gx ¾Âñ5ÏßQdÞí!Dă£ô<42ìêyÙ¯L­:Ö÷õr/–eFNüÔDrT¾ŒCŒÁŸ”h¥òžÃÛô%[jÅ(fÝô’ãDÏYµ}èU¥GcŸ^˜orðï<|•3†5 iø2ÿU•†t»Ž| 0ës]ªé^Ú¼ƒ?xÕÜù§Ì{.ý´˜6Í™ÛTG5ôS92u@>"ò#1JQ¾øî1¶´‡tÉTI;¡×¥^qŸ¸:^\Q¶ñP[·L’PÜuV{fU2µ;pÐÚÇ8WUHˤirØ£?”^% †à¤hõÇDsñŸ´ƒ£?M˜Ÿã´§J°.˜F[O­ÜQyˆV›µ”¥·…/æ¸ÒdÄíXŠofë€1HIú=&RBjRz÷£K|O´­+àD˜ÅoC©zª§é#®öh£×ôç ­YŸŽO= Ä)¨HiÜ^wþb몚ðÒ-;VTü¥ëèplíõÚ\öͧ&\ż(}4á i×&5ár÷˜&\;Lÿ_špÑ3Áþ¤ ·Ÿy|.P€ yó#ô–M¸ošx!€ªÿb]-¶¹þ±{l¥xIzlû™Ç÷؆m!ûé:ØBá]'¨f´RCú&‰ˆ!Æâà" ÌYˆx/ ´ÒDl×zH[ýÈ»M¦râÙ5Ðöz’Ÿ¤¨žº™ô$ÁÕÈî/Hi…47^`h÷ÛPn²mȶ¾í`c›Ùó¾À÷ýâ’t3;_&!ÌŽÂK²á–ô—ëx5vhÉÍ¡Lûžm5zí ñßþÄ,Ä<àfÀDCÉ— òÉaâáRE’è›6@lÒqý!G×»æEê¸Æú ;®k Z5ïú?Q¿§†êqøk¨nx;•Â@j÷ÑsÛ8ÔDK…ÏíFq7εSE7ÄEÌa ø‡f?þ!3ä]¼ÇˆùRZ`e!T®û™÷Ÿcg¥Üg±ìÄÙ4 A€Iì$3C¡j(e0p£ÔNF}dYî*b#P½(>U– ÝW=d±{Ø&~}ôŽ3® :1øjØ1K©Ô’‡CÀñÃìPôöendstream endobj 386 0 obj 3318 endobj 390 0 obj <> stream xœÕ\Ys·±Î3+uÃy$]æûòš8•¥R¹‰Ã·ä>Hâ"UDÊ%;ʯÏ×ÀÌ ÎBQ×NÙUB˜F£Ñ{7Î÷;1É ÿæ_ÝŸýê[¿»{<»»³ïÏdúãnþçÕýî×WX õ.NÑ)gvW·gùK¹“ÚMVèWz^ï®îÏþ~~u!&%´ŽþüõÅ¥˜¬·!¨óMø¿«?¢–¢R“:êÕ5`ü 0¤Æúóߤatñ¿eöª»à÷ë,íñÛ«³¿ž™IØÝ8ÛïÎdn’’°U“·»{Ìh?YµÎ¼=ûÛ5¾+¢Æ‡ª¦ÀuAî® ÷¾ _”áweøº ÿÒ]› %µ>ÿ°ÎfjÖ÷cý¤L 5ß_\ÊI8ãù;|g´ö&žÌ—£–—.GD¡ÏßÐXë }8`kp&úI+sþ*-w Ç!Þc(p×Jйʗðn˜Ç Ý)ch'+Ý%}ù"mä?ÎïÑü»ÆíA%·üÝzå1­üd¤1„rÄëJ릠ìBì|¡à9_]¾/ÃeøP†/ËÝ–µ½»5r²V˲]¢PÐZÏ’ „™i¤ír·òHcïöI /±x Þí.ñ¯5Nf˜ìJoA''kš6‚md˜<øâšMs²²m0 h.Xï«å/˜ï¤O9ï\g$½²ËN‹0âuÆ>œÓ1ü„IB;È¿(³œ¹_çãåªÍ9µŽß/çGf÷¸ ¨“X¨0Ù`«Cv9ê¡À-DkY=_¦¦[ F‡óO!ƒìên‹¿F·pä•—ùû¶Õ~E,ŽØ'Š| Œ ,N á’,p–› £•w‹FKkîæÃßcîEéÅ,h–F?ɳÀX+Ë‘k†!–Þ2LºR€ÇMܺUo- Îòü~; .Í3vx#Ÿ¿#\¤”<†yW <ÿ]ÏlIch@Ëéð)ŸRGõ\ÜšÁù–]5Ô¯Žöxv•ÁLÑ®®ÆcáÆ=Sû¢»à»ñgC³ Õ´bŒ«žLàWÏ îu>œ­/S¥£5¸Š °cà#´PqjÑÔI ¸xl5u6Lq{úrkåÈ=׸¬Éâ¤Ü䣜ÅÉøL™Û´ƒ¬Ø—'ÆhÜé(>æÌR*Ö¾ Q@Û)×9­ ðRûŒp®á‹ú$š”›q•!íJÝ‹ŒÏV´i6j·ÿ fr1t4Ž­=‡[£œMÒL€¥|6iÆ5xi7ÒL‡’òãc'Wû^ÝædoޖỲàU×OcŽÜ˽¶É*¢¸:ÞS‘¬ìn Øo2j£T^ô´x RZŸ:…í©óì‡2|[¼+³¯ÚµŒ„iöåþp:Ez"_AÅÁݯì·À[/.‘ç-c¸ë¬×lpó66˜ó7é´g2^“îZ™ó&?dÀNêJêk§l]ýCáÔ‘Mæ'àæ§ù´¨}Ë)ÉW¼­´Ç%ÎfÜîO²/èâDäÙaÑŒm "n3&ʦ˜ Ç…ã%‡žÕ¿k"á(là˹‰ø¦·/³Â‡x¤ëÒãøÄPuXÂÏÇé»Õú>ZG='7*&hÈP±Ê»>¡¯3 +H@ì¨me|*+~¬/"ðW©ê´G¾6í‘ÕÓUwÁï+éLi倷Œ;x®!ûîþLy%¡)—‰ÓS0ÉßÇœéøsAâcÞ¯÷´‚ëV•}8úæ<Ëì>Ÿfjæ1_™Ü^YšízúLßVðfO £Ì@¯Í BôëÌr •4Ë·„’„û§õ}8@¢ã:$‘{U¢“6™’8Ô¨VœI$Žv$DX)Ý;\ ªmb'á¼YÌ{<=`‚ËŒl›ä’YÁxEd…W)W"lÜ>=9/ñ–`¾g»I&ðËXéÅu~gMšŸ Ñ-$_A†Ý՟ή¾ú;”þàCû$ó¤@쩯 RøØ¹ ZÎÃÁ¯s8(¼k [Òª¶ËŸãSF$„“JK>õtÑ£Õ֛޿vª2ŠÜ}~ÌßIaöÞ²%F°LssrÝÎR }†÷´_Ë_„±Ý¿±ÂÅëc¢ŠÇM  ü?2 õ› â"˜DB{ѺµhÐ%„n‚oQ ËÐIü¶ÙÆ­o”´Ská|j ÏEeŽ3\p£¤Æ(ÛØ&8æbÖ²„ r-̧ø×¬ZÎÕ)A­˜ÄÌB/Õ¹™Û<CAÙÃ/›é"Áoü1 >„\t=r‘†¾#4‚¡ä$ÈIŰ*ÁPkjnÌ2¢¸ÇatË eÇ»I`:Ža·¶>{\£án’t”iÒ Œ'¨Ê·£Ü(™°x‘ä)É^f ®QBYb‰·~èùœf(WÅ©¡&ÿ–[ÖyȰE¿¨Ó+MÒreeµç6¢Û@¬1‘D\Ó·Ž@× æ_.Ä’{ƒey×4ƒWN̦ÙM60 _5¥ ^9&J†Á7ÙÀ=nb$¶°®q©Ø‚…‡æj\„*³M€Z‡)¹ÿ1y9Ñ·9»Ah£Uœ„½„¢o|IMc„L‹æð=űæq@çý“uë)ÁO{*½½«”$!*ƒ?µ}ƒÃÙ¦‘ì&\@4xñ¿Ü¯¤øÕ¿¬SIZÛkXZXòE„^¡4Iïc^Òcf•b%‡ ¿ Ôè˜kÖæC>¤¶­¥Ñm‡`«ª3‹›œ­fUïÊj„/¹eÜÄYóYj áÚê+K lkµÔä& úð®$$– ßUfŠT›Ï‚`òn>+g©ÌœÜ0Ò;éÏ#¸]B÷‡óoÞ°éì€ ÿóÞ:€•Uös•tÆÍÝ"óú¤bYsÎçó/ó­ÉàtJ h}ŸËÿ+^xr˜­;³6ÍÀ_Ï_Z«þ—ɧtà%YíÙÁ<Í?àw¸w¦ZÍ7úX€óà æý¹q3Aq±º„È0EªYÍ &±ÊËÄ¢…ØŸ–ëtÏ4Q\*E“Þ~–(Áô3‘ø'P”ö‡¯3Oˆ‚DÌ (?C”ÀŽ×¶Ã\ÃzÓ]ÀÎ_ŠoÜ`ÿ³@ø¦Ì¾)ÃncC7 u\“ªðÄ réJ|ø©i(˜§ß¦øŽMÏ!¤¦¤ÒÆ,BK\\³\jYðñùyÆ@;©T¬†L‘%DNëuæ)‘%"Ê a’Òñ¢H¨*Š\ZœöéÔ2’ ŠÍOâsÎDþ¤Í™® ­lºd~Îr€; £mÎÿqÞuxY+ÀÃh®Ý3VëÅQ8É®ÑPeÐùϸF@€Äúú¿)Nü]²¼óòYoÞër诠 ” 7á0„Û.°n£<<S\:Ê‹mü–磸öTž“+ 6 ¸&“—e™9†˜ P¦—S¼ ±˜à0Éj% /xSˆôÀ¯W"ÁÔE%(S«ç-Ú+¹.Û®äõ((f©Y–vÉü=]֊Ѧù„-`i´Û2Üh™4»iœßcmO¦ñF°q«e˜Ê:¨e  àZæºÁ2ïñ±Ùy£ßÂßuwÓ=Fµ7]f^RºBø«2+Ìbo·~б¿æ Rl(ŠS%¶) +dš¤WKCÖzr2 ÙÞv óp¡áQ$l¹tŸ˜^74Þ4²Õ„[ëiÙ›Ã1dÚãž».ÁÞ÷N“Ý7ÆÝ­i7!ŒŸóÖNPƒ¼ AïÂ@ÖªÔ¥§¥JÙÈFÛ¸÷Ï®9{Û²C· ´Ñ’ºÛxÉ*h¨w0dœœu:£øM:[ÔÔ9Õ/¢ä[‹£ãµîsç™—yøækÏ.8<ìnaa-Ñè8 +Âg´Òœ_ €ÃÞ“1;­´A0žÞbI=!ìZfžòKN:&˜ÔÑþ\o±~Žk-yÍ… JÁôJIŸ÷Ü‹’GuVòóJSŠžئœ¯lLoZƉMBÃ65‰ÏíÀÙäá3&¸}}´Äk˳roY&Ž¥ö^²dÝ‹îê¹ÅŠœÎ¶ÅjN¾!TìÔéedš)Û\PÛVÕ<…„vØ0qàyÝäçY®j»½©t»'MÌ™§¡GmƒöÖñKÄš^Ð_ßd‚ÉLyYÎËPüØskGÓ3Å€Ï9YkARòVˆ\Üf.¦‡WüšxBü1#FyÁ~>Çð1»[¡ˆYSÙ£–³‘PÌÉR(ž¥!_š”Òs“íHRèÆ)ùÈ$…ç¬sEÖm—,ÁŽûZ8~ºG†>iL§-=ðíµm8aÜ¥´¤. a äZH¨Kª)rñ8ðNëˆ:‡ ¹žœ4?¡¬RT8ZV­ÐªÚr&©÷S’C2Öfäqm¢†¯Š âïªFý]r몌S÷ÖßY]—x1hSô™O•›ë¬ß6×q&¯Š> ¨—Âow©á}U°LŸò¤V½ÞÅ=½£þ„†Ý´gI[]k£ »b°yf(Uu@gìU‚£gºÛΖMŸÃ×ùv!£Þ:ÞűU+kû^˜ô&e\ð¼ËðdÍtI åüX5[ dãk>É£c9e¸‰X`Ù~˜7ïzù’ï·z.ÉÆÀ¾lef>WmkF kÀÏPÞ7Ð#O:Ö…[ù(Ö­l›¤m> tjíþmkÏÊ¥pQ;Xca*fÞ’n¡>o®eÑw€vŃ9^éâËüÂq𒣉@z¬zÜÓ&"ŠÖæä7ÃŽ GÁAÕËewÜ”Í 9ˆ«ÐÌ­(R —×Ç|°$7 ™Æø¡Q½ðýçó#˵'xYŽUËLÇFZ&ÚM÷c|.{Â4j:¦Ò|ßÒ¬ÝαaNÎ4ÔŠìee¬F {ƒúañ_xâ:Öñ„‡Q²Õ¾‡ÞðnÚЩÌ.«›,^Nžå4}t›'ô85gy£‡ùwØM Þ~Ñ 1ôZ·(¾lÙ‡Z}ï!e7z‘TËÙüÄ…NŒxŒèŸü¾R+ÐËÕ¿§À»©{¢µUÅ´¦[ƒ!л ùÁHÔÿuFTøRFd4éßò`d™yúƒ@˜´xŽV°4ûßPI0SQÑÏ–ø§Œ–O/¨ÓÞÅÌ?w”ä(§­Î?ß…[“ú3^¹øøQÙjçÛ<­äÞº-ÑbyÁNYRîBo¶Û×óÖõsm® .qkÌÏ&ª¨‚'ëÆùNž0¿HžPAðÛzÍØÕQA¦Döé!«¢Úô×CÙyäŠÐj+ê<îÈ·:õIù o‚–¸6¡£É¹ÍªÃ÷kþ™~Û‘‡–_cËCcªÈ² \3Rl§!ÎY­à°Yòh›͇©æ6›…È9óIoô䃪ôNg54¹•ü»‡5m‚–M‡}Û…°vØ“s~i±'4m«uú'iÚ†ÌFúÖÒ´½Ì<½i;· …ŸOÓ6kñ¹oüÞMã{‘UàîÔ¦féÿ¯NíÆMðPn¨3©›+aáŠXøu¸^þ_Ïþ^sƒ4endstream endobj 391 0 obj 4580 endobj 395 0 obj <> stream xœíÉn7öÞÈGÔ±ÛH3Ü—ãLŒ=ÄÖm2ÙZlŒÛ’h¾>ï‘UÅG6«7µ,ÙrM³ß¾µ?tœ‰Žãýÿß\Î~xéºó›ïÎgf"þe×ÿïÍe÷Ï#8 DX°Òêîèl–¾Ð’iï;'5“FvG—³ÿÌß-´òÚ¸ùU\ëåüv±4p NÎ_å?æ¿æÝ£æçãîþ=ûùhöÛL3nº?ñÍD0𧈊fÆt—°ã Óaܹ˜½ÚõyÁÇÕóN2r繸ÔR(5?λïóòmýÒüYZžd§Í„×yyYÝ– |¢„—§ÈËŒ–óßç‹%gÎH%åüMòUw³ÊG>ð±Æí×üÙQóÀóq9òQY ¬R„yÊ˼¾ó³A•Ìû)£±óàцYeçÏK!B`FõœT¢gS\çåY^¾ÏËÛ|ùìûq‰TYZ`“t®[ Ï7¢;:ôHqe§sð$·ò ìAüÓ¤Vž©ø5€t+”¾nRú„ÊeKÞßU¢8°-±‚GV‰ ãÃ5+NòòtV(gÀŽ$Vh—XñdtƆ ˜¦:3ìì¯3ñIœ|E²Agn îÔ=067Å×éÌFîü¾(Ù#¥cÜÜÆï¹s“ô £âîmóÀÛ¼{–—DRÏó.‘Ôã¼Û¶ø{j@zú¬¶øi¹Æâ;¦…+-þI·Où’×y÷¢‰æû&ƧAžhòMs·Ð ä£"<î>ËKà?h"ç á+6œ²£¶ÀÄg,o(DÒƒ¼ƒàIz* ´cA©Ê#$¬E“#+–sŠ„–s$×/³£gß Á »^áS³ †Tj{=b =ΛTú¸X:¸š@­X˜ÚWvõ‡—2P±Ö1!hA@{’ü„F\†á!^¡ü"Á¶† d ¬!XÄ ÖÖ{¸¡9 Fr´šÅ[-3¬…F…â òKˆ[4ò ë dBU¨Â›Á\O·„°Ä+ ýSt¬’+†s@g|²7hŸ@•ŽQÂ9ˆöÃp¸ÌEøè¸Îx«˜’1]‘>ùqgŸtE2‘ §ÂÆt…Z˧™® Ë—ƒcŰg H–`Üš’¤(åtÀ‘ÓJÇp"rš®’`AØ*œOÒÔŸiˆÁ¬’IlµåbÀAp$—Ilû/?™¢707S‡ã$fɰ ¯Ñj€¡ÇK­¤O;Έ\'\hô‹t¡¾Œ—héuñ¯2J:›”Ö9­bz€áãý¨y”n¯W_AN½ž\›ÜªQ¨çÉ­‚|&>¾& ÏºÆ`Ÿ0À™aõ?Ø4–IU0½ÇW;7ÜI4=áBHZqb<~ް ˜ MaŸ¥]¶Œ¾³²(ñC)Šëé==¥A²}f-J“)‰®(É"SŽZ’¥#*ÃoæJêm0¤˜Pe¡Ç©V1êI$B4ýÒ3ã§d.™#ذV²’ø!žÓ²-3؆ëž#¾¿ŽÀ4œ¼K¨ñàÅ”åwZ ™ë·¬™²4)‘#Pv°…jQ ¥š{EÎ$Žƒý){åzY¯ëds@³Qv‰•0n£Z·Av©ŒŸÖ¼tRˆ†J£Ø”æzW•¶ßF¼GóÛÿ½ê×ĉªÖ]"pâPâŒ$°®8rÝóÆš]¤X¡_ÄjMìÚHå[qÁJÈ;åžµ€ØKRyöšq®¨í¡ž÷¤'¡S“~èz”ìÊ– å пD ܺB=(û#Á«ÁK×Så»hCLE fÓ™JËVœ¼š¸uÊà!Þu¨|’¡|ø:/üÃ;` <Já,ƒ„¤ÖÆô±ƒ6JøÑ-mX•OaùÙÍOzøk,9ƒëãÎ÷ ÞËÈ+)ƒ°4Á£YÚ'’½‘%tÞ•?/ §áNZ Cá;ï!eL ÕgwF;ltÌô„e ‡ÎÒ¬‡X²4!%ó˜¤9¸Iûac ¼º5"v›s´¸»®ÀwŸnŽæ¥ít½NG½'Ç©!Á, ¼¸¶vÎq ö^úB©ÏÒ6d)km-ºý@–®ÇŠ^9ø‡Ù?:òÑ@ÑKèú*AZMz&j ߬‚\ãø-]Ÿ¥GÄŒŽ¿‘^FÏw—Ϥ,MíŠçÛ>yžòMSéc<á„[*¸l„ñœÖ\£=› \J¦ªsãf>Fπɴ˜8X?l¸B€ ΨIñª|6¢bl™§Äi„9õüÜ/YL P®Ò/#± —¨X¥ ˆ¢4úA´a ÿq6qÝÇ Ð-!½Kyª¨%ák¢dP…$ѯ"‘¤ÓÃó¢~\ÇÆ„ù¸`ŸŠW|Ž\ ßzà•B¼—² X*x¼Æ‰ Úx½ðvÔu×Pu¬?FMdz÷:P]Ù !Ü»¶XQi£ê|—p’¡®š(A{p»–¾(ì)»>¥y#.zþyóê4ÿª ‚âÔ]¯+–àû¤_ëF$)M?&Æ'¦H“ÂHeÍä£û>TÙHsƒB=ºÉ¶šœ&$”UEºO’¢á…ÉÅ4 ¹8P¡G¾›p,ÇôS| weŠe íøÒ å ¾´ÀoŸÞêrUŸ‘p0´·Õ¸ÝŠ!Jçà Xï°¢®; „‡Dã@FKvö½`.A€”~‹býÆ@ð>ÅúŸóòϼ$í£\ÈjòÖ&lÀZ®g!ð1ÏAý]’d¯ÇöMÜ&]Úêã~__46äÒ0¼&¸JöÌçL³ëúm}?gˆCަIÎ!'qø#ð8˜;H®øïqgw™ÁjŽó&³ÂR™©û_`m ™iµUÛC ¤×YΤ¹«Î@< i8áŒ2\½g“ BæÌa†ÍbÛù+6“ÚA:Ô©É(.Çá¥agŠƒ ò&Â]_ýÐY=Ö$¼_¯p¬i‡!2w‰µhqìBc²ûgþ¬6XRs…å¨o^©Kì<@²bÞv ¬WBXšµ$qntíÔRwÖ|óv#7T¹NRžøä ÆÅrÂíR0ÝH¸ó.F CûyHü¾’yíï3ï¢@|ìC„ÐA"±:Åç]€ÀN;ûÌ»@Ô™ 0aü#çïB—Lôšyz§ªœ† ÖÅ1Ú1›j‹Ð"E]ZÍq@¨€>Q“­bDˬy°8gbìá䈵²–fºgé¾ HVÚì‹õÏRœ£öÿ˜—¿æåQóÀó‚qé‡' ²qÖ¸wY†”ÅpÕIˆD-üŸ„3uæBœ5ö¡Œ»íßâä)æ–$,AA~ž‹n›ZŽTB÷hÖiÁ‚tEÍk¢5û9ÁþZQ Yø:cY·.:iż“UKªD åš(µÅãôÈÿ'T ›ŠJ¿C÷PcŒÒ¥0$<·`Há.=?¨‚ðÜAÞeØÙ#ð¢H€ãÓɨ+8–ãÖ8Ðe«¬O£íЃ`{ª[vO%Nd[ñfR/ª¦ªÄ±iãv™Í¦²m:bÊ÷i–5ˆV‹3M9„U4\((ÖhµE¥?é?uj2¥Ø"kL¦EèSÔ&m#:0~Ñ7¾@äò|Èi§9¢Ìæç7õ§”Ä‘œÔŸ+n»õ§ô¸ý(ý)©…ÏKúSÃÎþý)€ŽyäþÔ‹¼$yÌžý)ÏÃSêO}Á/aøGþÆÈhò$ ;ûÿ# eЈG®Âl!(O´)űÂB8£ V8Ü=8XH2gþnJ ÔKuà]2šà¢vöiJA¶› @0¹Ú<|S «Fþ 6¥àÒ¦¦¶9¿ßÚ×4þ»)UµNÕ”úJ~?ÿ8M©ÕÐÇjÑ/_ô§áÔ Ï¥æs}«L ¨'Ù*ƒüŸ+p*F25Ì Ùظùq9ú‰ßf>¬©xendstream endobj 396 0 obj 3284 endobj 400 0 obj <> stream xœÕËr·ñÎÊGì-K—ˆàý¨ÜbËvRJü¢+©²}H‘b•HÑ"e[ùút˜Aƒ.—»¤"C˜Fýntï¯+ÎÄŠãùï“˃¿|ïVç7|u~ðëˆÿ¸Ê\®þv „Z¬´zu|v¾+¡,3\­œTŒ;µ:¾<øi}|È™äJ·~sxÄ™qÆ{¹~cm‚ö¿ÿ *A!JÉ‚˜Ç§á€ ”ׯ­?Ã`À7eö¸»àëqwx~|ðÝfܬ~‡“}u ‚Ѐ â*™3«K˜Ñ†?μ=øaöü5¶ãùƒf–»úü§¹ó‚Ü{j)”Z¿,³×eø¦=iù, O „×Ý/ë2¼(ÃÛB"AMT¯™Tp™ïãÖ„°~ßi¥œë‰¢J+à"Eyà v±R^8›—5@uãf\bœtÃ’ÈôÓȸþeÁà-YN—ü7~ Ôà6óZß š)c+è k/™”.y‚X„~ƒcçàk$É-Ñå¯Èä+ó G?¥Hž¦k’ÖçË fàÊŒxE ôC²$ﯤ³ÃýÆåç#@¤ú0SZ¯Ž„dF[‘¨Ï§U!‚„OøÚ¹áñjN ôLt ¹ÀXIÍ\ÀñGÒ3ã媚5¤cZ„ÅËRÒ4S-y‡ÓŠyØäU„¡•_LñàEO휡íÀóïî!x×\µŸõDLæµv£<5 ïÂ,—¸M7`½©®n˜v5ȇW‰®îU&„ñ‰<°¹ )OLî_±ìôþ‘ÈjVZÉ ãÜa}ï색K¼j>¤b>"K%î-‘ ý&AÖP‰;+Ê% ,ñ! ‹1YXôˆ²ZÜV˜àöÜ~#¨H(Y 8aàKrØAr9lÅ`C#&ô @aô±œ JÄ€s’íêt[ ²V=T³Àå3®'§ÐG“K7Àî©s`FÎUØÀLêü¸ÌNüÈA‡G?RJg˜+и–Ið¥âàúÊaâþ®#`6kç¨ë‘x\בœžØÀËf·áC×ð½>\2|¸É†°sßrd4Ö*î ˜¨¸<Ú¨´ïV¡‰ÌX»ûØDxjJ­¬ jH@¨„g¶ H“ Nޤᧀõ1f÷L#Á† ²ÔÙ˜B\B-ó)BನF=K õb¨·Züiê+£SÓX¯Ùä™hn¥¯°¢g›óÊé][q•p^iMžÍºñh^%¼aÒt<ËŒ†eÔçj Ì`„’‚ 0Ö5¶„ž.G VUáz±yƒ}"¦'º`M¬s»]Ð!<ù•5Ö's´cÒ [˜0'*½•ÍÁ]­Ḻ} ¼èJàù¢Øp;‚½(eÆ›ú°v"ÃÁ÷1­8¼vq‘Ø\´³Ãî§3&aCÇT­6æ)IdeeHœN/ˆˆõ稾¢N6ØA ±™môïD¡ ù†|Iw¿jR‚ÊvópGzÁÐKÜGH"Aÿ¥ö˜šÈ 7’¶%;Nƒ:«ÐŠ1LÀœ_ejÝD1N7Ç—^B!ïoSz¿Qþ –£±Oaÿ6β–ùÖYn½Ámœee È”]YÖEƒzTÖkæÝ8sý˜ö!áä¾ÜeªVŒ e¾/ÃçeøG^”áí8ì:6@7pýóÅ“œC¦Ñe꣤'w)¡§˜µ$´³¬ŠQÎ^‚™åΛYÞ»MÁ™ ~t b‚¬<ó0œI8uRñ · ê²g '=U ¸»¯ý€ÍŒÜ3BOÂk˜öBÌMSkTg2i–9®n’ ÊÎâ-”ìå8µžµ dKêáÕ7oÊod£îo¢S‚ÂbÆiàÔN¾-îÉÊÑ»Ë@ÙT&€èçÁ,xm Ú÷‚-f£˜'q“é!œ0*cm½à‘½›XïEäP(nò·C‹O/™¿ób§Äi.É]ƒlñ×Áp¡f‚¾€TŠuØyð‡q?w+Œˆ ƒ?[i?Îlü9tÐ#L¦„¿;ø‹³/Ëp¢#ãì‚'zÁßëeö,>Ÿ1ïd0sí×< mp•dbÊ`h±hVq‰iœGvIì¾\âx/¡ãx^yOÔ^Ý¡VâšÆóUÞ)qwÉöÉ9Ž ÙÚ¹ÊQÕœ3:ÉtÍOrÎe<™@™¾/Ðñ\\>—Óÿ˜Ñ‘â©D'æÖ1é|'UWœfË+×"û¤® 8z8Ê÷ìܼР(VGµ­Ê‰w8ÚQFzèO›qº› m+¸ÜCÏy‹9;c¬ËŠ( :Îl¡ÈAù¹ìfØ"HÄŸþ­I=EÞ×&lâ šh)PÌòǤ<øCWdú]!ô5™Î–„/ó{f€;,º4 7¥XdåqQ®ìЦ#ƒRï’OØ æ týb¶SÿaœÙ&Û šÏD˜)ßmð÷û†°ŸÀ½G«õÏë2{Ò$¹Ò„7 eÀð)»ËpÕpL1Ê€]‚Ûv Lò2\M’λeÆC†éªl€Ð¦/Ë𬠯›À4íF>{V…«GŸ¶\›—m E|»°C(¾Bió–j˜ÙžPÚƒròjßy×$Ü#%……á]—’ýÄÃ(9øL_v½ôàóL>YNpÃáóLß&¿A7'ˆF¼,p>¬ÑÃòŠàÑ48Œ²ÆZ¤QƒMx.ÎÞvå¬ '9¢8;yüZ0›[²ÀM³Eú¬U‡.†Tž6;O]_•áÛ.×]„Éri]„/º8\e„¥©þ¬ ¾™­ÍÒScwÖ=3Y@˜¬fk¼i¤j¸º½¸4üPàÝûâZ÷æþ7¨€tqJnrq÷)B»÷Åe}þâàø³Ÿf´Ômw§óîA<ç ‡`!Pr^4½$17eÁ×Xž¸\/f4u µD÷V"“[ÜóÌŒ_D‡5€É 3Y§i*°ŽŽ$·¨KKÝ^š£kˆ—œgð»EcNKyæ¬ ¨‰’9±š¬€ÉVpô>i+|2f¶+ÒV.ÂÄŠÉOßKæU45)Òæ|5ÆfmÁ¿ÄG`-èEõåC›Áϸ]®¬6>0L Ör®!‚¶f6Ûu5nÞÔoâæ˜á©Ñp?+zÑt˜ØÝ¼¯Áw¦!jÒÏËð›2<î.øº¢aêDÀ'0 \álô¶Î½ ô¨×ÈÕ+B¼¡8œ°gœíGÄÅsêñ¤Tìÿ¹œZ½µ±ðæ!¥äÒ:Æ'•ÌÃ&÷¨$—Œ‹‘q¡’\7W:*1çbì&yè¬ç½σ¤IAgï´ “A‚d¡ùì &§%ZïrùˆÕöxÄgéE–·H+áÍæ"_pLi‚5¤¯šËÞ^øL÷Ag”Ôé„ÁrmòŠ8Œr!tŸ|d9¡i»ØK)·spªSO£á­Ú)½f Pžú§¥–¶IúÎÔû6¹`Ppsï8×öùÖYí'Ï´.¾Wo^ûPÑ\تðzBs~Ï@sø3ÐÈaWË—ì§LcúÞ„ÝS~I{툵ôjöå¯ïEôû=¨^¤Þöô-.Y\z)`àÀU÷¾ñ‹!£/}âÁè¹Õ#AtÕDÄoèÈ ›¾z"@ Â0V‡ —¡ÇXdZBÅýÃÌNó@ÒÂÆ =Œ?”ÐTQ4]‘‘ÀÖGä¬2žµéýíñ•h‹jZú õÞ©TJ-HûÈôºó'¸+5Tæ./y3Ïlý×Ü1 Ek›˜ê¢€˜RíŒ9º/¿7éÑÌÑýj̦ýsVV› •U/g|˜¾Ýõ…·øxeþ!Dâ~É<ïEâÍk÷ѰòhTÂ) K\fûùfb§¦™†w›UŒ oÒ—àlH,ÔpóK^'xرm1ªD‡h¸ÌoKŒðŸ2ü²Ä /iø¼ ÿÕäl– ß &ðøœonB·ËÔŠ #î_vwþ±àþÏŨGÆbð¦8tWmq“j™Â´ Éé«ï^eKËHÉN“`BÐNtûGÇ®^Ü'®i¹ÕuGƒ—©üFå@¨íŒÃÞÀ¶ß»÷Ì®.º‘‚!8)zÅ:Q]ü‘VcˆJ›{š` ÷TɶÙ֨멖;©Ñs”¨¦\c_P‡Øz2rÜöyüùXx â”aGíŽ1ëßÇ<÷\Õ\í!\LhFúù¹úRóO·™ïšÂƒW³¥ßÔß¹Íìhõ°ÎÒ¬0§@Àaþhøãö˜À¼‡]ˆ"6¯`W”U²¡JrG®pvžÜÛ+¼$X~Âs¡ÙÉáÀ‰È !0Qöïh70ø\â½õu9`b6tl`ahøÒ/QV*d[c3yÔq—Ýñ÷ëúšõOþ>lî`Ùy ~Ÿ®¤¤MDJ€‰ú<“Ë©3%h¦Ž5Y‰ ïíSò̯74¬•üO5+ tyG‘£lݡȣó×ôÂÁ¦šÏyºñ§º+µ#³s¿†bƬØQá"±È:B«àFFœôm`ñ­ü]ogâöÅàÚÊJ¯ÜUO*ðƒ7ÿ· c°û†ÀÛ…HÃÁ0³}Ã@`àÀ?qÃÁC_VÁ•^t⹇5h硵õoöœát‹N(¸½@*3#:+÷°Ú{£oÜȸ…z¼ o}ÓxÞšyôbð¯©ÆŸëGhƒì%µ?u)bAÞ¶­mÉV¥ÿ`f!È!^ÇŒ5 WJ­AÛÙ€I©öw°–¼2_Òôr—:Õt“½¨› ÀLŸº °¯6\»è2À_> å.ƒÁ*ܯËÀŽÓOÒeµ¸4¤Ë`˜Ù¾Ë @ü·Áo…|*]$ƒÒ/Ó¹» %à‰Û쓵 üÝ ­H Â0³} @Ux· ðÉWÍ2Q*ÑÖ±T©j¤’Ó.R‰Ø/~âq½Ó¦zITˆ§,6ðë `bM¼v)¨GìR(6üS!çàÌJ¨<óBaÁÛ}u)¤Ï·â‹ÿ%G“ýx] c6j³.…”aÎ] ŠéÝw)LJyê~ø³Nç†6[\›Py`‘+¾;ø¤L¯lendstream endobj 401 0 obj 4257 endobj 405 0 obj <> stream xœåÉr·1g&ñn!]~0ö%9%Že'å$^èªTÙ9h!)UHJ6)[Ê×§˜4¶yï‘”â8ÒC4zïF÷|¿áLl8þŸ~>½:úè+·¹¸9⛋£ïDüãfúñôjóÇS˜ Ä&°`¥Õ›Óó£ô¦Ø-™ö~ã¤fÒÈÍéÕÑ·Ç7'°´òÚ¸ã§ñ1X/_æÑÛî„çyôίýØ}íªš;C¶5Ò1-ÜñwÇ'[Μ‘JŽ`{7y’G/»û½êB|–W h}Ñ=Ò‹. ×±eF!ÀËèùñ»““­œ3mZÊó;©ÄDÅøø,?dÞžüóô/GÒ&€wøæôpχËTüãVhÇ‚RØ–cDšô AaÍš”w#²Îv£p-Ñ¥Ýæôó£Ó¾¥À^çÇÛ¼AÍEa?œl°M˜[#á² +9ÁMÞ­…U[ñN`}1˜°@E4¬¾’*½­°Ž )€³ÆªÄ‹BѶAâJInð´0¬ƒáy ž!X„ ž­÷`C¥Œä•¬â­ˆúž…F…b²‹6Jl†ÓuP2*T¡ŸáY8¹ÙªÀ¸á>Az ïK®T@U ïg|Ä Bj‚öi©RÕKÒféü:kÛ3:ÿžGO»>[Fq‹ON¾<ÒØæ'°9Ÿ ,³vc¥ç÷æ à—žq·Œ\}}¨e ’ù¸‚cÞ‡d™ž­Ø•V{W–‰œ´+± o’ _w·¨IZá¯;ÀéÑ;xx[/TŒ[B⥜ #Í•V¿M4ç«ÄbJyá|â«ið…æ`ßa82³s°» €6À†àGó¦|˜XÈrÇ-ÎÕ\0ï\±KÅq8ÅPOÈðeÄ8‰¼¾…Å ÈHÏüô¯‘±6ÉËôÞãxF+çs{­§­$.ç*élïàq<áIH@Ù„)¦Ðñ „|ž øyøq^…‡“M3š!µJ›ö8SjB·VõñyBŠÑ"©” ã/ÞÒ*:83U¾`Øô‘:þ)kºHE7œ-½Y#ç¼xOƒÜÕ$òt­AÿŸv'|VðÔ ÒxÐÇzœa@£‚ÚVx@Ï2r¸Ú€˜O+2tRº·3Ù7iË =™6‚)'™¦"H Ad 8å:ý5¡Ûô*Ú”HZ…’n¼ñTyPö¸Žr/‚*VnX T×Å”—y—'q -ôñÛ u{÷ÌŠÅ=|ÙµÜ}‡ãU~$ÞC~­‡u öÌ÷¼] }!Å Ü<©E%ÅT\©N¸Ö )¢ˆÐcÁ,’Ë@­T>³ÃbÊnk–‹£gù‘˜‘«ÂׇGÚ¸¼Ç‡@.m˜«ˆ¿ÕR!kî¯ 7J9æÐÛ#ú@  \np¤@©¾Ä%‚ƒ:/ §l]ÚlUa@G01 ÛäRœS+òŠHÏÈ$^¤ÃKƒÑ NÑ\*'D{R¬1pT}èß?àÒ|ºRªw—¾È£g¥ kˆÄ…°³UŠ'#¶­…)Wf‘ÚN‚ŽBúš¹+tGNšÂ—ŸÕÊÁ)=“ä/„²z è±Fçâ=A .4¸Ø{AœmÊE’$­ëéô6Ì)w°£ƒ“yð"I!8áÎ6 Töø¢ÔѯOŽ­uÉŠx,3Å”Ó(…î2Íå1ËÁÄQh'TÁhhEÀ;5p f:~XÜ’´ö*‘G j~’Ò"¯f§s/‰ô¶~Ý$È5ï÷e~“¶±aÿ©ÐÃðì8#, ‰0ƒ:¶}3€ )tH¸9˜}ð=^˜Ò)‹–N®ì»JaŸ Ih˸°3AIz¢ŸàÌN_ÏûûíÔâüPü– ’xÑåíB>â©aƒFöàÜÚûñ&ÉZ‡ÂPŒ"•‰Ɔ!Sìl"cŽù>BÄ}N^¬•ÚîËþÂÁ’ÚW쿦’„X|zÒ_ÇqÏ]ß¿ªC‰ä¬ÉIùÀÚ\ø!·é“â·AŒX¾I;ªÒ‘ ÖÅFhÆÕá)ŸÅ¢‡aJ­ (ø‡%¸a•¥ÄYÔÌT’¾HÝüŠ@zæDkŒõêŽÁDxö؇ Ž‚äSllI#°€T™÷ø&äŒæ7`ÇrNŒÁ~i™RÖÞ9?þmB6ÆDªÃZ4ç§qØam’DËÁøÄÏÓôÈç€ë¦4‰·RwSÀ³ƒ•,µ!Wtñ‘Ê0%UalZN=¥=ÐmdjÖ#;\dÈŽz•/çü$ eÁwÔ•¤”f^Ë;2†a¶ÿÝFÔÈ50óá#j<¼î^52€-Gkí£’¶mýÏqæÉ¢ª/MrÌ&‘$Ôë*Ç4L,I¼ÈX›e›’|§ Q€áñîPú™’»£Ê|jc˜³«œ¤ 0›;<¤À¥}Xͼ"»Hõ}¤c7PŒ<í½Ø%biVO$ ÃÀ"£´Ÿ÷ìÛLŠPzÚ7k/gå8#~ï÷¹µˆpß.”)&§Y Ï“9|qÖjg);k`8['e´£_åjJj ³_ÀV áv†¹Týï2ÝnEMb*&N2§‚€>r^Þ >é~Ð5È “ðð"ˆƒQb˜¡<òlRÕ²0/‹µxIKõ -nÓ*6˜}²ú”KëïÓ‚& ³‡1¡¶s§¿’š©u³sU¸Þx‹$Rö|Z3Œ¶nÓ\·|t›trÁ ¥éõ˜½NràÐ!Y<ç^N¨x^åt&áÛÒû ÀŽcv‚¸FÅO@”*þщ~wåM-q5wUTk$ht¿WüJ8ë&½ ^ÞžTi·n<å,­çìÞoer%ºŸ3¾È‘ï?òã£?Ê£ΟçÇOòãßòc¾lì޻ŠKÐ §Æ´ôa{ýQwço2ìùšÀk•‹¢¨­£Ø§6a·¶¶1'‘4Æu,ƒäôÅ{Oˆzïßq×¾.]ÇIu ÷q~xáUÝ6aBq7%ðzPÕæbNï4‰yP㌗aì9ŽZ°¶ëùCx"šDÁh²‘¿ò&ÍÆœùZª öTÎ×ùóEÕS-÷´<Ä,¿tSª)×ãõû‚TÒdŽÖx­Ýy߬r5l Hœ÷åwºìi,^³‹1ËžÆ9}޳=„Pv!€~~”ÚnÓÙq›61æ2í|™Æ¢ÜNìh CužF1ÒÞ÷b,ò}%<}CÔòé*?Ö¹Ûà™·«±¬†Ójnš,R;…Û—®Ÿlþì”\ÒxÊ”ÎeâqæDd˜7ÞûPL‹üÁÊÕÕË€ý~ŽMˆ…±„Á»r@£å2‘ÚØ“˜äöó]vÇ-(:º§ þ0îWP²îW!ê@Jêtl¤˜¨'brÙ:3Q‚ÚÊŒh¸’‘tÔ7tƒ$iÅZÉÿl.B»œØQä([;ytþJ©ÄMõ’&O7¿×ÜЛ‘ØÏ{ ?<³À6s‘Xe.»w #VÊ ¦_”ý]o1ûjd]% XÞ¢_¯«<Ö­m¶x F;öU¤‡”AXZ¯K‹nS3ã’zÝëteáD?žX,&Qã{ÞÛ0] Mźt~Yp_š§Â] ´”]u+¬7XX«ÈŠõXjë`+í—‘;”Ú:Á¬‰k2kÍîR[R”›RÛ8ús-µÅRåœ\tn¦¢9 Ó)'W€fV«cŽŠ•éésÂ…Õ¢+\B‰^$‰û‘DË x\›Ë},ÂýÊq# ŽM#WiÆ×£ò#š®ºNÈ4b|éM!¬ƒ ¡óRU¥K­Ëµóó°oikF±[Uf³<¿rL¯d`-(NÛR§×uJñ8iAOyÔ œŸ.ÒQW6²ØT£¦ÚáÔ^ï‘Å9Ù3*4y};­†–è¢Õ;ùîdIë1¢åC8Ïî–r‚$ ^Ü×%]¿¯\¤?™ô%¸Z(7ï›jóf(aÄ«¼nÕH Áêp¼ÝwxõÓtpÜ¿MžPê"6+ù=´É7*]Ýéã2íž®»½Ó¯óèÁÝÞ58¸Û{fú¤ìåÝ:æWtYÑîÝi“6~'ÿ•×IÝ_jÇüйKǼy7]èÍmJÜÿîóï¾M¾Öy‡´É; Î@ê’×6ütÉ£‰ â„tä^[ÃÀ†™zã±s¹[oU 4(ônç™o‰)ÛŽ8þÍôm]+ùˆÝ¾Eë±bÚ»dhÊD—L4q¢¬+‰E­Lœ­U«Æïx¬†?8EØE!¹n쪫/Ì ¾ðaª@×fµ;/Xü*uð0ÜŽ«IŸ>øÈżQPkŽîãTcêàEíVûÖUK·ïZœ7iÓªA`¡”ªñâÎݤ•Õ;»Ï&%.1'˜y:’WL%Í ¿”ÑçB_åjžguMs~:G—·úŒ>´]¾AZšeÿ®ùª/§-Þ¬=÷›Tñžžö”€L¥2*~+j¥¾ßÚ¢¢¿Y‘{…«y+”é3ø.Ÿ¿®CÊmª²´Ø©Åwä°°×ÍßëC(©"Ê<Ìfæ¢]QÚ` DI/Y[vŽÊ6»Ô®¦ŠýÆŸHZäŽeë‹40B ç6‰\x”vâËã’²ùòè?5Ð> stream xœí\Ys·~ßÊØÇ¥Ë ã>*o±¥eLJ˜ªTÙyµ$¥*’¢EJŽüëÓ  f–\‘’“¸ü Æ>¿nôêç5gbÍñ¿áÏ—«/~pëó›_Ÿ¯~^‰ø?×Ã/.×:†B­ VZ½>>[¥/ÅZ(Ë Wk'ãN­/W?nžm93Îx/7¯p¬”qÒm®Èü kË·›Ó£­ôš n6·qÚðÀÕæ%Y—(&…¯–¼9Ú Æ­ WÔ*&`úå -t9ÙåùÌ*åtȳÊh V:f”ƒÝ` µò›÷‰f©Ôæ,n«¹•~ózò=îz ³(\Ònqø¬I»IÔ©Z.ã«H‡jŽä” ²õpŒÎo~ìm¼4f³#ûH †Á_èÍ9*­DÞ=îHx2³:‹QŠÍ59†°úõÑ¿Žÿ¶’F¦ Tìx 5dž;§¹&™U¾šäïÕH”ÀŸ·3WØ W6¿¬”wÑ›wd±J:›?$Ôâ½¶ùb[!™ÑV¤û=?ÚÂ$ó ÝUbãx‡ßiŠEþ–p–ªåø°Æ îp îbƒÉœ³^î±³¤*„DªâÄ ÓÁQ²L›Z"’¢—ôc‹¶hÂ]•b¼O³Ç\¢8¹ó¦bÝã6­uÁV4¥»[Yq“èGOFdz5z zêEúÎx‡gEÆ×&W»ÑbüÑX¬eÖûl,φŒcEC“&_mxp-|úøé‘,8óÔ“iç²%~^™»%÷ÎÏrtÆ÷Þ¤/…¿«TŒbÖÍ/9Mû9«î¢{È”/~P¢ŠrR€7ËŒý.)TAoþY†Oq Æþ´Ìþµ ¿.Ã'eø÷2üvÜ!ÑPGZÄz.2ÝÓ§©0Òþ´{ò? íߌ³="$Ø$ð2ïF#å>uõÔ<)ûiš‰Q4 ¢úðõ N_}wBœmZ gŽa6úzzâUÚÚûîèDŽQñ7.,~KŽ¡®n›8¡¸ ɪ¸Ç”ü»1ƒ?lz;À çU¸<ÃYˤéR˜µ?„Hš$‚OFÑuÿN«A¶›?̸ŸÓt¦J°±Žäê©—{Q_"Û/=”zÊZˆwU_p‡Jš¢q£Ò¾*Ë¢¿»2{Z†7‹Z GéC>ƒ8±Æ§.%G]ë7½yïÆ‹SÁï²DÌæX-¹R¡Æfä•ñL »¬ ?_I•ðú|Iâ1ôÄ`.Ò‰ô‹êýS¼s;¨£­ÖYš¦ ê³¥áñˆÆ#l@½oŒ§ˆ¦zº¨Ô8Î²à™·‹1îÓjÁ€¬ïpZji냭pv’ÖÜ”]"?Q‹¹&å$¨‰¨ !0o,|~F€‚wð`ëjÎ#¸¿°3„¡ L×nx41ÚTlHHLvûõ¾¸ãƒƒß‡ÀÓD¿wXvÞ‚ß$Ö•T–p5HBÔ—ƒ0!FLÀL´ ÌäÀ•¢àŽ Ú,a*$ꫲj%ü©f „.ï8r´­=Ž<‚¿Ú*#hóÒéF M'…õ}›íjG`œU`[´H,ªŽÈîݨˆ3@h”Íx×Û™Ì}1½¶²ò+¬‘’´ ôÁ›5€Hî!îDÂ~ˆò2#h7òN5°õV‡DÀî1à+ÈU-ÜèÝ‘Åú‹D7Žßyo!=ˆÆî‚‘äÑ=È1Qt0\¨¾5ƒ:™’%‡$áYd¼×°Õ— ŒM³ÇÝgñ¨'Ç«ïWšq³þeÅ×^ ‹¥·¶">[_®àò–iŸ'.VÏfkS ѹ6å³&îÁÉ¥ÚÔ®v^H{SfŸ—áuYð²Ì~Û~‡»âÒN» ž•áó2|×À–´Ãqw‡ÓÞ°«út_جú3E2ªÚ4DåT»AS@ãDAŽ#^í5ÏÒk'ð…ú!\âÂ\¡l7E÷ˆê™ª;„ zá¹L…zk’HçK8U—~X™vx¾øPT•@x ï D6õ¬”ô{@8žK⚺Ä8~Ÿ‹MšÂ“™°Aù8D¯ò†3B?ÀÎ@0šÄmc3[$Vw¹œ8Bçó\›QM™cT ± ! F’%_^nJÙ8‡þöFøÁ±¯2&pH‘Qcgðö¡?íÇéoÁz¸àc’ÿp^À&Xƒ^¡\xôí@A½Ç™œ;Äm—v`|݇;wr½{;wRê/¸ljÙ™×:©Þ0ýºúšLa]a±äQ€=á^@¶èçÁgeä4ò슚ÛÖ:wà PQ‚Dà×FÁ êIðXGΨ `pcpGÈõõ~ „L\ÅÇVà*B­ÍO›2û¢ _—#ˆ0n¹fÛÄÑÊe3&rÉÎ1ÊEl´E. `)ÀæÃ債Û7 rùªq?¹ŒWþ ¬DrtÒÃNFD3Ÿ—áY^—ám9|öù8Œ1Ú‚ˆ¤ËAÉ/óAø!¯Z.er¡ÃÌ—’Ù´SAN8þºËñ~Yh,©Æ]Qñ%=æE¬ÂWÎáˆV$»2<=\$¼„OQã¦G G¨H†™ÃE¢±f # “·c— jŒEŤÓ.o/Ë𢠉yѰyb%'eøÓQÍr¡WH ,ÇÇqIYô­­ÛJ³·Ý$¿:+C¢}çe–hßÞx~ V_7 ¨öy`©ÃUžzלœ¾#r<)Ë.×]‚ÉÂ4b{7ÝÙ*Z$‚¥©þ¬ A¼[!@™¢§Âí´ÝY÷ÎdѦÚRÑ©CmG íwoÆM¤woÆe¯–§ä]×êÛ0¸7ã†Zà׫ãÏ~œq¼·Ý“λ{Ó»M‚…ÚS¥¸§1/ˆ§q®Ý![ŽÅ,´HˆŒò9i ¥Æäf,Ç-°RãAO'681Š’ÅQ•8йM#¼°¾ ðÁò­ƒxÁL ›õ¯÷¦bK-ŸIn(вÜ9¢€ûWQ:À[˜)ù¥šâ!K+‹4e i-JÒ5$ ’È=ú¥©\PüÈ$J1 wž;†Z~Ð~¦6éÐ<|ºê±H®\Žiˆ€¼D3‡ä!ðaÜà›–ûÓUÞ>I«tµ"¤Þ±Ö´¾8óê4÷þß¶†w”³¯rôñê&-÷z±¹CZPF%«Ç¦Õn_¥.?!ÛÌݯyèE"­Ò³Ìg›šdä /oW~ò•«“ýǦ™ÎˆŽ\â;yÆ–'QM¾§m“X¬L°k,dà†Rö[nh,=ðüæ5šÈDSãìe¶A€‚L=[Ë*È¢Û~cP×G/C.:W{V¶Q.sòoJØÀ}ƹk*¢0x¹=6~)¥°ŽÇs¯æ{òš–H¼Ø4ŠÝÇÈ]¢¯vRµÖÆI·|_`I§±!ž÷.½àÖ‡]ÅLü¸¨Z4©âÏ<ÊÒËRÿuB¸:5·ž?ˆ6yäKºyÞ}Œ>ésº4º=OÞa‰vØà…Ö匇ÔÌZÐ3qDÊà[hGÛ]c‰‚m½Ö‚ñM džcø8#b“ò¤shç¨ ;v{KAU®[0€—´¯}Õa€u’Ûµ¾ªÍ‚f|•°adlÝ [T¼íôüäc/vÞN9j1Á™[“:¾DáNËf¯ËAzÈJ6ïbQ$:gi©©¾§†:m^ÛˆZ)m%–YŒhBÖ»}‘…*öF’œ”Ùe½4’Ç=ÑËÅ÷˹û½y€àô¡c@ @ç’¶ ä™Ã{`&ÁEÚžÅé²òÖi2ð]c#€r ßÚFœÖr¹ƒ¿\FÍÁÖ6„ÍDØäÛ¼ØÌý´b캢V_µÚÃ>;¤@86‚‹ßjÁ ^¦Õ×Sl5a{#Pú³¥ødoý'}²Ç·-Dòd_¦?É“½Äö9CžìóÌáOö°'õ‰ŸìïÖc•v ÏdýÒqAk¿?ï/(Õð¼/1ÊrGÞ÷óÌáü"àûöã>ð?°R ͱ¥l¤’ÓvR‘N;wÚøƒ¶8p^9¢¼ôrÄ`¤¨åø0 ñiæc4¨ÇkÐ\çXK®ñõ 9ŽÍŽ*Œ3p\K;@¡! éá§h‹,/ #ㆈ$Ï.|-ð\Ý«!@ã¯Yo» =í‰=ßQ4l^x3û8}™Í.hVq9M|“¸,HïÍä›ÂŒWeøëã0yÒu!9xØXÍøŸëºØÛÂÛ<_ˆž=ÛS‡†ÿìÃR£Aloëth,D³]1îãO¹rÚ0Ûr°Ò˜ãm2ùoÖ˜ôOΰpRx^ˆ>»†ÇwèÕˆìú?éÕ˜ã3î|´^ß4Ë'¶ð¨Qhå#¶zÜö˜Ôa"Û2èV2%°d¾5‚h&U†Ä8qÇ÷«ÿ-C(endstream endobj 411 0 obj 3443 endobj 415 0 obj <> stream xœÝ]K“·‘ÞóÄþˆ>ölhÊÏõɶäu86Öasn²CÍ‹a)qHYô¯ßL…J €êîá ;t TD‰D>¾L$ÀŸvb’;Aÿå?x8ûÕ_ÜîîñLìîÎ~:“ñ/wùv¿½Ä*쬲zwy{–~)wRÚÉx»s &á`wùpöýþÛó 1ÙF„ý͹˜”0rÿHŸu0BÂþjƒ!Øý»Ø¶ÞËý+jº`”pûã(ÞJãöï©-4ª>oqtmŒÞ¿IÝuõ·Ë?"Á*‚±-Ú]@˜µ»¼FJ/ñ÷J·¿§ßg¼WH4Qj‚öi(|(%'ëdÀõÇ1^à¼F2›ÁâZ¾^v;ü¡|¥9¾»<ûó™FÊvÿÀ]ø$WH\ä¤&evø`RåÃë³íªÉ-[`‚8À$”J;u½v·öni^-Í—æ}»Îögq\­$@€u‡Ëî×›¦™Føvùúji>.Í÷¥ÙÝy“÷nÞ.”69 kBHÒàtØH»d6Â+ €—Î' Ë}PBPî¦`Âþ?™à¼NÝSnnÇŸ>Rw=)Ïç|“ÆÎD6ç¯Íô3§!iCž%/¤þíù…r“A2¢Fi+œ°Y~S;jÃ!¥ÝôÑFNF׋¿ï,ØÙL¬TÈAF k^+?ieÍþ#MNÛt!-þ¯Ð» ©pÚUÛ£«(ì,ŸvpQÔyxcðÏoΑ? ô¶52ù úîüŒBŃ#fÛ» #®Ùg>b&åÑWÃ0Ây÷—l˜‘r^\(ÓÒTlIÛb+þ¼O]-мÛô՘ˬgæ²É5ãÇø;%ÔµLÄG;Qët-FätÍ䃼'áRFÍú>ø9g4WÞ=÷ñÀÅ{žÍ{® #=›5T×ópö±QÒôØGÌ^È¢D»YԈܨ<´À¤8F¦uþcqeœ§Ík¤Å;½µñ¨¸“×ÑäÍàãýõIj]mÀ›ô³`á+*E¤ÀUf Î8Xýp0mÊ€ÓùE„:JްC³f"JYyÌòOÉÖ Äm3èŽTÅÿl½2¦"à‡Ñú“îxÜÿY}pИzå1pB°]Q*#Š’®ô!óЮ}V”ö™oºr6o˜:^/í¬‘è¨ÚÊM_­ØÉV©ði¤Q ÆyTOóž4«FÕÄ¿–ÁéÖhqýEÞUm@Pz²èÒ¾¢ÛA |ƒ¾¬O@Ž#f8Ö'(…*áöݳîœK|Ù?¦Mt¶±Q%sÛ¢‘»/šQáPÂêùiÅF«J;fƒ%aË`~•5:müè!7ð9],)+fe }­Sc]ÿ‘Æ ”œjÚÅÃÑë¤=Vâd~Öž/›Ã¿sEáQ CSó6€yv…Øö2y5uØ?v3€‘®¨ð-@S+åçÊX³i ‘¼ e»ƒñ3Ø¡¥kŒ8¶&!¿@PºO‹xÒ®PmæîòÏ.ÿëûýoP6@NVôUT™VE©7Æë#Å Q5iQ‹ÆFœÚ53ïÒ0ô¹vHqz22Ø¢Þc×|U¹lEËËÉ~Û×gÎSyÞ¤Q”  îØ + N4·þÎ4÷Ê­‘ <ŠÉKƒò ÷‰€bÁ;ó˜·qq…ó6&†­¶ñ`°È•¿ŽE©¼JF+ H-F+)“´µÑMÓØ ‘ÂÈíÑÛ*Á·<(f»’ÉÔw·Ö(1S p(®ïdõe˜œ‘‡ð·w­Õ8·XL3Ç´ZQæuµE‡œ!ñKKt†êt¡Qb²`ÇBC‡%*9gjÑX)Nzjd]páÈxÎ+7~¨ûÛu“(´JW¤ @,ïòßçM:ãží‰ÇH9èÐë€^ë̽ÊÛ¤ED…C×Çýj?i~|æoÉtdÒjÿ9Š‚²MrGâqë:âi}/×’ ãGíîfC®“4êͼ9õQ‡-~e+Ò 'à­-¸µfÒ>$‡Fºí?5"K«üÒ!YœÝîq6‚öJKhBóx&"Å@P{î+ùŒrïÑ!j9ËýÏ•ÝSCe ¿®yCWæbf?‰tžµ6僼[›@  jF=Ò¦{œUBMZ›×‡´w "GK#(°“s‡Þ×3òýâº9ní|žQï 7Š)XÙ³¸2·…ÆÊÐ°é“ !2È´,>N:;²ÀM(wlÔ·ì‹?ƶç¬YÀÞ/ª…$®H R `âÿÀ,ߤ¿7Áó £TÄ/õbZ3¾àdêêŒõÈŒ'÷­ttð(×(&cٮŒz{· °Áˆìv4¤y6»L‡f:è}{)âÁUjŠOÃÑØs’F­ÌAœ¤V‚˜²ðdDÍáIÜ~A’™C xÛôµ+V­…Ï¢H¨E{´ÏýtTƒSzËÎçSÍ!#“àÚOáBí98å§·A¡YIR„ëß”6€É…:]Í7·Úõ©Y4Ÿè˜YLÛœºº‰ù”¸úý¹—tÖPÐjaËÀÅ"¥h’œ9µ–£ÒQ5‰ 8Š÷Ov`©zÍ ^½0€Ñ "{%=ƾЫu„ø>”ÞßÔj+̈́Ѱ`•2Ú¼U)«|½4_öjòR auø¾)Ú«—nÜÈ0^v½fÙÛ¬tØÔK—Ü·³ ãõº?Úd½y`I¦‚=ÊìsƒöKV¹PºMóN?”¨ú<ó²J.lÚ¯¤&zòB6&0NoO=^îíª4žÃ”ÂŒVDNv•âkت;ÉòßP»õNÕBl–ªë74Ž«8¬ÁÀ!m³˜”EÛŠÃ&«ÌÌáÿ áí™7yÓž¼LÜV1­H ÞK}äyǹ‚2þɈ5†^V±åè$ö1u— ¶£=Ù0Ì"¶[\ÉRz6Ê31XZŸƒÍ¿Ÿ7•<ñ0vUøÂÇYÙª%ŠU1Ëj ÒöŽè£Æ0÷s›Ön•G®6{žjeè>Z¹›•7ßu¯ou5óFÄ¢Ÿ)è¶Âøàý±jH~‚îž^5Êoa\ëÍfÌ]ëdmï-!½å<ó‹:®žÖ;¹àýr΄öÛБÔ@½šÂ3mF$²Q5ú*œ@Æ,ìQØ1ζñ$/Ф@i *boïP"Ü {D69^&«ö'f6J¾pê j½Í‹í³®›ç’JSߪøbv(÷ͪHW),RrP+ËI `æ¿æ½øAuftLÔleQc½ÕªHùPÕs%_±Ÿ5¸“QM™§Á¸¾iUJ¿¾£¿UZBU³™ÒU Rùˆ3„[ísȵɼ- EõON7¹¨à7î‡~N å&¡ X¨Áñ)ƒn0C²°Üþúfª·(&B[9‹ý¡t“QsÎÙ›•ñÀ’ä…2MÍÕ± ÉÜÆaT°S«›<šY]?c™©Ò››Áúè‹è÷¶±‚s‡dá(g# ÌëØge½¯)f÷ÑH\QÓL3žli,eÛÆcwƒT i]Ù䋜´×Ó“È\v;ü¡¤x=]ÑaivZx²»üBG§¶|9ýR:Ž0©4n„L·Òÿo!ãÃÒ|($woy:x‘‹ªçz’²·'Ú1;ƒ†N·þ‘¾Ú~uI!¦ñðô¶¿Ó‘¾¢Ã! œï^¡‹á>|;éÓUÆjPó¶.~â‡t¥nBFî60üÈë`Va ÒO¼C܈ð—tÇ Ì }êá塤C•Ä`arJ=½‚[^ ¥m˜*?þ˜æ ”<àS§Žšt먂.²AFxù²(ÁÇÌ›íÐ2PJR ßóÛ3Äô8ÛáW\šC{!ÖE—/§Û3é°ø§™‚0ü•Ö­¿[HNéJ§â5ÄÒ¼_:üiùúni^/Í›n‡ß-Í—KóõÒü{iæ[´è;V9Ýo,¶z#~]ÀZÏ2+ÊÛb™ûYáΑ5ô«3˜N¨¾$më§j.4b ¸**T–!$:þUE)JE°GjøK3‘¨ü {¤†ÕØ¥à„´É)ª ¢ßyoC†4ù…>Fÿ-œžÌ—×j :Þ—f¤õ†´Õ8=/ã¨0Ú—/Ox_ÆIfqL:?üÀ ËêÇæê™øõ_áäXЀ¢aE1¸”úÔÄ¡MÑKèr3÷IƒH>ëÓ$äÉéÉ5‰¾ý%[ûèu»Lwÿ–9#A„ c†G`Ü梥ù óBjÚýöÚÓÔªÎfu—ÐLÝ·Z:%÷ZáF¯R!m¨Øö ÔEÂ×}~ƒrRǾ×jô1t}ê»spGÔ1G¢-`ôÕí@‡`«|X’ÐK,Âi>õ&å-Ó·Î5ô(óó>X9¿KÕ‚wáíA…ò\8T²ßóІo´p˜’TŠ ælÿ¨øbt„µrê’››Bœü–î[#¾¢úé¸S:äâŒÄ¨2  ¥³Òå;ZS)Q#=Á#ü¬p›‹xJoLÂ@çç“ôC!fì-ÖÙÛ¾üÎÅÍë‡MA?Æ'Îä‚×Õ³/üWÕ%Î(P¶Ç˜Uqó =ʲ/ù ‹ÄŒ¶J€e&Q!#<¹YMÊo†òwžøcó-ò&hŽ©¶Ý~«©s…·ìUÏyümØ® D ‰QÀ‘W—¨·2Ý7–ÛœùÀ¤¯[õvvDúuš%(Ï ô«sÀȽæÖìÛ¼5c"ÖÀcÞÓ(Õ”m¹]¯4fCo’’ÙÉ–üͳë².¾~´¢MÇkÕ6oµ÷.ª³‚ú<µ›mž5£ £ŒïÒVÓemVº‚DÌcâ±H@‹?FOŸïɘnu¢)/d¡{bš¢>q@sHϺ¡erô6îÃj¼¥çoç/O8q@[ˆcÒó’)MñÄ$˼éåøz`­}°šT|¹'?0Й4ßÑ[??—KqÂ͉£ •Úƒºº”5d-n’„æRõtM4˜RÏ/äp_ptqí:ë¬,}Æî½cu[Â4¸ÖŸ“hèC[ß¾qÃÞhžð8ú‘‹*åJŒÑˆÛ>æñ6Þ/x>+²”Ÿ Ö=pÏóDgykyxái€B¼¢×cFWÎò·: Œo#kŸ ¡#ó31)6¹\xr­H¬Ý¨;”ôîΘŒ²#Û—zuã:O£ý +1y•°BºÚù+–y\ù9”>Ýê«{Ò¸óL“šã^t¹NŸ´… dQ—…i£—J’e´T‘¹ý&È.þU¿£þ:m¤ ÕÝ«çzùp0kQZëøáë¨ß#8†´¹ß¶üŒ|mhñOIñ¨øÔ¦A .µ[`ë«,c< qn> ‰.°¼qú‹Kô;†<áæ÷ˆgN;b–^©EU0ãÒÇÜ„a’~P‘ÊmÑúÍæåôG·ò3):=S)Ž«8›_±VìÏèG6¹U½)î‘61·›&;úÝ긻Bö°ÓrÜ8'´h¢ÖWº}iÚÐp+¥‘1𮿗lÑÜ–7UP>½ªóô²5ôú檮ü)7k½ŒPìô7©ËW-ß*VâÞç jˆ)bx'GóíSp¢$;#qGäEybâŠïwÒ D ¡\úä}o\' ™ ^‰HÊRŽ^—¢â¾A:R ®_õOW`­úñwµkà02W³¤…ÖšÃÉæt »c¢Ü’òì¨Ñ§¦RvM—l—­—Ñ•ÀRçú¹ÛT„~úŶ®¹l.º´Õ3d ¨®2Ÿ½8<%Üãs•‹\>‹C=z¤ø¸œ~–R]çâ5PA—ĨnB”ñ€_œ¦Xiþò„:ß§¢hNªsÙø‡”ØBÞ6#¤«"ëg£¾[š¿49ª4B[ÆÒÔI9Aod ºc5 ËõK“ÑkMoØgöpñ³+—8ý;)¯˜$¬JŸšÃ>$C€Û]àþ ±r>Ù-B­J³lóŸÏþÞ'Ü^endstream endobj 416 0 obj 5582 endobj 420 0 obj <> stream xœíÉr·ñÎòG¼#éèÁ@c?&¶Ëv*Å6ov”¨­$R”IyÉ×§˜40˜·ñѲ—‚ LO£÷íÍ»•j%éÏð÷Ó«“Ͼó«·'rõâä݉Jÿ¹þzzµúÛ9ÐjEtàÌêüùI~R­”aBXy0,¬Î¯N~8ýù Aë`¬?}›–Ñ8}Uv/ÏÖðÊœ~_v?/g—ÝóÝŸÿýäËó“oOŒvõ Þá«Ò í +#¬]]áŽö‡içÍÉ÷{Þ! _ßô²`ô¢,¢¥¥õéEÙ½)Ë—eÉîô¶ ½âYs /¿,Ë_jgwDm',èÓOˉ§Í›óáë²{[– „N»a-î „óåÄ0í”Æ‡—´Ë«Ã¹„„q¦æÒ‡riºô§gk¥bVƒ{ÞÞ¹hùhT”X‘N¡åÉ:l|– –pyù¾ÀÛ›p3FîM¸QÝNÃ.„›‰ÿwµ•pî}öDngÖÊ:á¬ARFáŒ×™”_œ­%ÚmeL×פUxQÜ6ÑJE¤Àµ–1F‡¸ÑÚ… ¸ôÑ‚$Í"(Á©¤½¸V^Y«3tCcµ¶†¨DÇMÔQUº2‰¸VhI×:bCÆ”ì2† :zò%hW¼ ‰g„©&dPµu%Œ’-,3þLjT@ó©ÂÊ!¹)TºB¬5»ig€è¾D”šE £ zöÁƒ"î[~/¢ŽjdÂó$CF:¨³…“×y­ s’9㤗. ”A•: ”ÖAùJko"=j  ¤A¥YálŒƒ˜d€|}KO:AWïi$Ì N{S£U½>é¼³ þšáDˆÕ‰ÛŒ6¢Ç€=ϯs–X‹KK„¬Þ<¶ø¯°r5à|qœIâEo¦°o ¤ïNÿ³û2!౞n­Æ•h#²q6N]Ç\°Bú•SÒ’f¡Žyå0CšvÐ1á•M0…¶U˜ÕFLóžu°¬ ³6é‚Aü£™t!ÙYïñpè00IîûÔ‚«Ñð(ÙY’\P$¥ èMÃ1~Ï¢Òß²Í fŠ>Ó6 Jy ;„¿Ú‡PŰ,,îF›6c¡1 ð!f,ú^ân(ÚÁ1‹v*Z#$²W9ÔÁ$2]¨‰ÓÎ!A)Úr›` ©ýV‘ùÝ*u;ˆÌ´R‡Á•–qIÛÜ=¸„Ðß¹šKǩԥ\õá+uà²Rg¼@Å´53¢8ê'ÞjÚ9€âX›`¢I…³^×ðA[AiûƒóÁD…þ‡±aØ8œ &¢€AîÿY`Å´«ÑâR9f‡—­HÔ i𱚆³Ì“ÝÈÙäGG%§G#_‰õ¸s‚" Œ¸€ ¯ŽDЩøuh¡!r‚;÷ ¨CŽ€ÛŸ LáeÞ”åë@á­Æ{U?ì܃ Vc”u€„öÝ×uY¾8–„> ALåGFÐaç¥LF ¡ŒHŒ¶ÏºË­µÐ’igþÇ[H,l¥Ç%ý³…Tî|` iTÉ?[HÛ 7:ÙœœúÃBÊÜ £Í‹.Å~êÝ&çÑ&T%%ªúPRIo“Òø¡Î餅ÉIDP‡±Ôäâ†*DSçg)!bò„øß,#/xÕ\{¿€Žr¡‰ÿ¤è«ãPtÒꌢ. +ýƒ©rk|2ò¯ÛÛ• p[ §(¿šÅ%¹öÀ~›ôº\ðEsíÿ3ÜŸ¢w]LŸu/x/#iýñ(ºöV*a"Ö7H?U·æØmž§°î£™§÷™§@P4ÏõÍŽ Và]ÀÿHek”Sv)[+‚pê3J±w££¥@Q0µY›xÞ¥Mã¥á >l,cÙ‹O˜$ð¦.oÁÞæãÖ×Ð!¢¡Sízs l BÅzì‚ÝgÞÿMˆð;Ìû¿6€µÔÿãDÅ©Â`_Ö—Ÿ€°Æ8Ÿ¸.sT”C_=6À1%»ØFVíõ÷ìÉ-½ût¦ß™Ïܤ¦AínÐN@6TMúºëÞ#sÓ,×Ò’¨Ž¼¥m#¤‚±‡nì¡dœfáŒBá”PÇ3íàz_Y˜ºu=LOК9æ¼~)öli¾àåpסõѯ7ù„óªÉ!b ¯7I< EºÒv~ƒñ¹d®/Ú,‚cèÝe”òê¢+Íë%zœ›Þ«ù _Ϥa4‚2HAT¦’*~Dœ­¶˜aÇÁ£ÈhÜx—¤aœ·ù2 <—õLê4£Äµ+Õ’>²y¥¬&˜{ãfaYAžPˆƒÛÈÌèE4µª¼c2|†CÿùÌjfÙ% +þuPNãÒMuŒˆxhÅÑjνõd%fÞP¢¿°:úT QØW`•’\6xêLü$ÄãUa³¿ÞZê;é M¸Y´º›gn SÏ!ö*˜£;fÕ gÖhY,¸Sµâ³ïªÐÕ¡)£Â“ ­>šMvTÊN"ˆè­“oëMy™^ˆôˆQu'݈Èaš¨âÞ’+Õ:A1Zú˜+è€ÞU™¦Tò®xžJõfÚ>öHÛ)š±º]¤õöšY\b2|÷·³€èªò#rÉs±:´ø•ÙŽ§,Vág¸õÆ;€‹i t7ž=ßÚé´mj¿Å|ˆfUeIR„‡/Ȫ Zd\åÖ{ºm„q‰¬KúÐx&ºƒ‹¹/3wì67 ÞË| ¾8#ɢΉ÷‘É#ý¿´mÀTл™£:óKäþ0‹Ž2 I’ìcÈÜ ÉžsÇ5Ò5ÖQß’j\f(¡ ´‹·Ìóvýê¦è–Ñ˙ߋs_.0ö)e!iAz€óf7UÎJC‘g踵{êtªýØäù Z¾¦(•âQ~úM=(S¾o>>™Ò,Jlú^HÀ™v%p]{àêœ,mºÜŸÈµ9¿¨ähâÎm~REh¢ º¡‡ÙýÆ S#íüñcN-Iç (Æÿ w PÏ{Ü9 ÷Ù $ZcŽõ;äçÀ¾ê–¢îšWl€Ð‹Ã¢"¾í˜’uP¢À<¦í Ñ™ê8¯òw ^×@³më¢ó{†|§u2}Ëú9Ø8„ž¯¦ù?€ÖÖj‚˽m-=gõŒ•ÊÈ<û0PçiÚ š‚ñ0˼Ӹå¼ÔD§U˜ ­M†/½¯©œ§†˜\›¥Áæ)7ÞTM5Œ"Dšý¬ê6ãßFTo‡ (·ô Wή.mpĺֆDp´`ê¹%M ú§BhÓd‡HÐo?>욎‹Bÿ®#©„0ÎEÜ”2çÌ&§Ý«²¼k |Ú}RõC:y4û}I£Oý oúí¢"÷0^ÑNuh–€\áÙÎ’Ò¥¼¤ùÁ'òA¿Pe¬½ Wc¨dÇ,Ù#ªZb΢ۂQK†XIÛ¿9ëÊI g0õj~^n µv°á#6pÝì¶ýÿž YZú)–T‡¾-öÉaÂþ˜c½KR¶‘ò1i³ã¡@„Ü”íïË6*õU#ÇɃlÉcu¾'¹d½šì! zæýM]‚ÕR'd…{¨“ õL0öêý›Ò]úÝÔi)®î«SùMâLŒ+ÕÐcu/©S™,jÔ‰˜B_‹Ú5§|Ú8süÞ#J•±NhÛ¸Ö4Ü+ãÞ#ª%AôMªÙGØ·½Ae:mWè_€~¼{ušKnÚ9 ¿¡);O0…Œ[æÖG”~ K3%ã­w+kÓ º¤M”¸bM•Yq¾-°9ÄlWÁ%»j¬ÁmSèˆ×cSL×߆HöNIÝdµ$ÑW®lk€p—ʰ ¿óÅX•œ–ÚöíÌvt®óUˆÙçxdÊË4,æôòwÑêîÏ9§ì²CJ«×ùpj•pßµÅ@a4ä|Ñ¥þϯË.•ßÕ.YO*Ø”O‚´YbÀŒã9èD€¥Žø‚·JOE³\Øjºî1MrU'ÞŽé.g.wú·ù9µ¹g;¢¿ð=ÎãZ *ÉI×A;¾¯x‚ÁèÊ)óÖI]/¤·È’ ÎjAÏ%úÕ\Ž6K;qI΀ð÷4ñêÚš MߣÑ~øæºÃr`øY¨v¦‰æ7d}w­ª°ð£ÑÃÂ+Ê+þB#šFèàò 2 åoq@Xª3Ñí~Û@SÁ'WÓ«Znþlk™[BŒ&.åºFa®»ù;=†¾k°gN˜ž2û)ú¦0¥T×ÌŒñUBTÁÃÏѺ pbúš]4J¶?¾Þh¼¼P Û–ó!¤6Kš''€¨ H¶­õäRÉe©ì³ôm'’~ŒÚ¬nƒ‚ãQ²…јSᔕ@,y†8[; TmÿÝPä¥ëÌ#ÍEÍ ñ\·DuþÑ­&,#ZÛŸ¶U4ùõ0G +wÿ˜|!ƇèÞ|tÁ|ŠîoÃ Íøà²£^.Un'ŠªÕ¡¥ù® œs݉JvHåµ÷$­Ð£ÃÔÐm»ÌÊ6QÀÓw¸\+Óñ¹ƒOL¡@^F»È?žFpÐÈ!ëè hîô¯$ì1˜8Uû!rx;ŸÑD4A/Ì4#.Üxi¯SÇÏ?ŒÉFßhêñ¼NG¦|HfØoÊ3„¡ÆÛ~2Ã*S¡v6©Ká%›X!,¼3•vÔb™)S:)Aóë-™ì»á‚³D|=$'ô µÂ³è¼ ÿ¬R¦ˆ®²õ”I{ò_äfÖendstream endobj 421 0 obj 4102 endobj 425 0 obj <> stream xœÝ\Ks·¾3ù{ËR¥àý¸&qì¤\qlÑ•CœƒÄ%iU$J¶HÛʯÏ×f¦ƒYî®––íÒA`ÓúÝ¿[‰N®ý+ÿ_¾>ûãW~uóîL¬nξ;“é—«òßåëÕŸ.0AËUì¢Sά.®Ïò—r%µë¬Ð+¯t'¼^]¼>û÷úç@­ƒ±~ýuFÔúó:ÿsñwà–šãV¦ÃˆV¸ØÛËóè´¶^ùõõù#¬èÖw6VD¡×ßÒØz°ÌUžâ„\_¦)NxLƒ%ÖÞÄõ÷çÙ g¼çÃ+6ù½Ç®ÃúíùF…ÎÆ 9ŽÛ¼¢6Z®·lõ²Ù }˜Ì¹¡]™ÎK59Ï-ûô:ÁpXt¾[ãú5 S•Pëçã N ¾~Fâ­Æ~²ø»L©hìdÃgwô{°WºÉï3¡lPÖNˆ¶Í™Àºó1±ÓÒ®ŸÍ©6#ÉåÂROóÎt4õ§t ¯ãú¯çAvà1dL9ÌrƒL¢jk õ€DeàL_©âÀë µæ+70±lÔb«!Û?mBe:§ìj#Ug ¶6öÂadÅ€U¢Xyì]¹õ=›ðŠáx•åη$ë\ì k£ \ìøì9w2|ÆÝ9/Iy†éÏ{¹âÚÅÇKRp“ñùè€#=J·´Áùq2¼Í‰]çI ‰)ŸG½Ì†«2ŠÁvF†^ÈnFÛ÷ý8$2H£$„éz„¾‡w­ÏZvRc¬Õ°Ü˜¬„ÖÑO¬ÀLÈ|š‰É|~ 53ë’@é3 ¡q—œ'“pá" LàŠÃíÕUf"i$§ÿï •6Åá¼àèòi´òE‹”í4)ì‘>Qâb¤DåŠt·˜§T'äèužÞêÏ#C¾¡Í ŸM<Û'g_ž™NØÕð­ŸžÉ(l§äÊE#»V¯5qj€¼:{v¨ŽPµ„AÃàÙì·ãævHáLô¾‡ìLo* Yx·#ôª¹Ä߯áí8|9b¸Û)ÝN×(UYlRwæï™<.¹ÁÛ©Ì VÎO,ë9ö™QÝf,:øõ‹2nßÁÉîMÒê>®ÏÀÌ4ñMÝ|N£–sϼ÷LKórÔ˜r¶Þ©™;k—j8ZÐ3ß% ¼¬ÙwY[|ß O å°À”ŠUŒ à°­Ò¢—ØË¦ÓØ $D,Å—i©4|¾jÎòxÑ”þÏ&Rš4Z©à:W.Àìh5VZú΀õ:Ÿà§f’׃§J• ŽŽ;œZŽ|èBNÂi’4³e,Ð…hºá=R,ÊѰ4Iohü¤m'0×F~ˆ…(”cÁHÎßp#î¦9Yi/*¥mçEK±üüà­hÍ 3h'X(ÌÀpíÎØ»¸þWZFÇ*N©7#pvš[\t\ Us º$çs;–Ìùò¿î,$Û¼¼Rª:ã‰Ñ1DVñúñ•5qÓÍRG»HBŸó+×Ä9¢—ª¼¿0ÄŸ ÿÃteWt E¢çß]gªJç&J°džÖñbÙç4ëÚ­óƒß›o×yç÷q0†ŒH$TçÍ ±°ÍF¤‹Ò#âDDF%œ@Žôgˆ?‡?'"~–®ç·ú\¤o÷Pyíd7¢íb”Hhà—„vÑÝÑdÓÅ™# WÄH}’6lc©ŽB)6T#X_›Úªðñp“C;„lÌ|2mÖ¬v™.¤ØWãlîý8BFÁâª@9í+W5=i2ÜÆ,º?vjn93ÑM„{*Ù° -WlÌ w‰œã‡Ñfi±”%jÉ${#ñƒ„}Ù(`•1f2|•0(EEÒ(SØ’þH/­.ß'm*AQé+„TEÒ©êä‘è;*تTRÁw! Ì¢ç£UÂOp°eÒþM´Bê¦Iì·zhz˼±X¯Ì)¥'"à´¤ØT榫‘8@Ž)sÂڄ“ª“JOæÜ/Nz@mºQÕëoÖ#ø²ŠòwŒKï*†ÙÎiWVgaÇ4µ“šb§‘aÚzÀ&ÓLö—q‡1l8ô(Ba¤ƒW)X†ÏÇáõ8|;ïÆÕØgO‡ar¨\Ò®Î@NHq„g…€7‰Dq­)¬ GPM¹2@=Õ?2 ]*(g–ˆÄ…p¢½$'‚¾irg{|s>e„Œ©@Ž ÝyÙß ¦¸6gzלÀò¥ëq¸åç ³ëËvòõ!²~S-Q§Y|‰Ú®#ºAØÈíú¶ÚOÆv?B_ŒÃWMÄo›Ç`)™|¼kB'¾¥lØN6üd‚éP4Aaɾ µ`Í(X´š„HRãQ•2×ËÃûÏÁc2†ƒ Ök\&˜Vû¬}Ž™ îK0®}É÷ÏÏ.žüv(6³§£‘©m;™¹c¹i’ *îo#ˆåÈj+ò휗øµ}-Ȫ¨r›œ6åQ#Y^¨½åÜ^‹£ã%>ž%ðL‚Wù–x”|éF³š4Tötì„Øjã]Œ¶F¨‡÷+ía^BL‰âXÈ1‰‡!ÃN¨ããךxôÃkqB¨êÉ;m,2éÝiîÙße|ÔD²ãË´¤*ˆ³ÔEA>ýˆ+wºŸ£ûdveÉʆ¼`¡;‘ß‘´/Isfv0w õMGãÆ}cò§±wÉ/4TM¿ù+ªföM§ïó¥Ú×£Žš—ÌП¸§S¬ufïvHCeß04ðÕ]M´{»SìÒóñš´Hô}”f0Ú9û34 ÐB)*JÞL¦²¨Y5˜VÚD4¡2õ3‹(JÓ‹"íº%Š)B§ŒžÈ3^‹$ODê<ƒ¥2ãÜf‡®£Ý"ùPéØ:Øa¡ó}Ÿ ¿ºû>jF~¤û>-¥éà£Æû¾rü}0tJ™SÝ÷ý¢<ºî ‘§¿ú3þU[ºúC°Ú­ë«?ã-d·ù:b°³t“ õG³³Ø¡7G6eíöÐ…({µö-]í5˜’æìxJ"aj}¬lÛ´Á8jÿ¨„µYN[qÙEám¾%ƒk]JÎ:!–øÉ¿=ò¾1ñô}¹¿SrÝj–ºþŒ·ÐºîĘ]ÚŽ¢ž=/ó#”¾<”0G’lduyHŒ1ýÝ!}d¥2¥eÄ ª–ty8Â%•ÅR™¯³FýuŠFg¿ ¤3Îg`aSB˜Ì¹bØov¢¼‡/ÓÅeì üDÌYuoÇᫌ/8]î¯àïmt|öMFíšìð [=U3X"ûÍê¨T0!gó’a3€͌6t‘îÉJ)e!•­_dQópˆ‹ ‡4—%4Óæ2„™¼•šìÙÅýDMSejsËV¥´}³ü‹ÎKú¿ rŸ`q‡’e{Ër¿÷yG>4L“SOÃõxÉÂׯ+ÚÅÓ%¯Üzî a5•Ô‹èMŽïU.‰)IS˹Ÿ7=NꆡÖìEÇÆeíMáO ‹É$ŸÎÅq¹¯µ ´C^ïzå|Ô¥¶C3ý¦=™Œ&ÿMvU™2r3¼ï[Ñ ŒðR³'kãÊÊÀ/˜«vÍ&s¨çËÊY;l>r>]•†¦1 ¢º³!“Ý—Ñ›ÅPæMV®£HzQ AÓЯ×vuÑ.¥øâS—Akã)Y,.çÛNâ7—íñU÷¯æ‡Îo¤ÍƟέÝ-‚—ƒU¶¡ŠF2[¯À9µ—p$ü!âea¥¬Û½³CÖ¦]«¼v…7c¿Ú?“©tQˆ|MyiJw£“ø&û%)]ÉÞQ‹döA(e‹H`6£ö•…õpÇbp4KÊÆ•³ý§tÔÇêò¬Ì£ÁŸhn”Íø ‚2FϺÓÇ·Rc¡«¥×ÓŽ‚Y ¸n dv<'©oýná‹ác·ðE,‹ŒüÐ,W²Æ¾méæ“§ìæSB¸Nû•4¤½’^» M 4@Žxî*4$œP¥ÈÞ,úÏ.ÕcøÐªÄo¢ëΡ¼«âíÿ8j ÃÃ)é܇(âC¦zvxVß2÷¼úŒ5‘d ì†ò¡;˜þn»'ÅFZú åéR‚Ó÷Í$dG_Û3+›.½0Ë}™Jÿ¶úw×íAе­‰YVq}VT1©B¼ÚÐ;EÝ·@û1h2ÃpП/Ïþ™^endstream endobj 426 0 obj 3795 endobj 430 0 obj <> stream xœí\Y“T·~ŸÊèÇÆEßh_³˜Ø©$ŽíI%Uq€Le0 Øä×ç;Ò]ŽÔROO÷t°«R5B£+é|:»øa%¹ôgüùôÕů¿ñ«Û ±zqñÃ…L¿\?ž¾ZýöT\Å!:åÌêòùEþR®¤tƒ nå•„׫ËWÿ\ÿþÁF .j+âúÙ1h­„•ë-u›h…Ôë§ÔÖ"ÆèÖoSÛ… ×/©é£U¯ߤY‚“Ö¯ßQ[ziu,ƼÆìÆjmÍú&7Q«]þK]Œ¶ôjµÑq1juyJ/ñ½ZG¿þž¾·Þ† @4Qj£ y*-ùT ëÈH'æøsH Èü]jF‡)¾Zz/›¾˜{iÏ//¾¾0 lõ#¸ð‡ ¢”[aCjPvõ Pjp~î¹¾ø¶Ë«’Þ™Wæ¡TæÕv!îÝBÜÛ¥ùxi²Ÿ/ÍŸ–æËj¬QRë7,ŽZ[5áó„#œ ë÷Œ7¹­–1Æ /\†ƒ¼„ÎpÐ:H2´ö&Ò§ÚÄAyW̬ÉA8ãÈäÛsêõƒÒ>±#÷¶ )ºKd&vÔÈLœ‘Yø¢`]F& 2XG#Ö=Ž˜aˆ±‚c&ÒDŽhKÍ·Kóqk@ b*â–ŠbIøxo4`’|jIyAk]°u“ñãc’-±¬0«TƒµÆçù99„KÀYºÃoº#F¹³þG(Fˆã_ž£‚/÷w͆Ìkz©‹Ynاü5.V¿ nš= çCþÓ¹NWDŤfý$A˜'²h}ƒlÃØî>pœš3޵0¯œø<`¬…GÃLwG1&€TN`Çž ÕZf¾]n Õ/—æÍBB8§S€+!¡Eäú7ô]„ntû®38LœñƒEf œ¤î“Æ8‡`ãù·ã‹Q£´S2AŒµÁ—,#Lªk©­IŽoó—Q•Bõõüe J¬ Á©Æëjå}+mé‚…é³Â–`ijÂ’ sÏš`r–æ °ZÐÔ©÷qk@ (Z 8aògW¸$FöÔíÍ.³' j\¼2|Æ=Êtþò-} V±˜g¢ˆ­ßb=NßœAˆ(G$0Žk…V0'p3 2ͰÃñO,FâÖ sÍtN/ˆ›~°J·¸™†ðO'ØÀk8A[7qÃ>eˆK]ÁjòfÆ"‚¬2[.B¡¹Ùˆqvã ]ù M‘J”0ïÙ„ì*>¤% Ĥ,fyü@ÈÑH”~ Ø™2-42Ÿ™ËÔ«¼KÖ3¶öIup4KmB¤U{¼`Ç•ÊuI0íÉ‹®Îqñ¾3KeNÏjmXŽ Ã¾ôh7Ê øD®6 Ò;N(ð‹‡90ÇS.ݲ=BÍÝ-Ùd0N›ûw!!Cô ¡{” H#sÏÚ(@uÌ :ø;)£“ESÅ#/À#º¨’!†éô–@ÁÇŒ›`æ€@êfqV#@S( ,RÑ ØL9[.Ž@y¹ìý†ï6‹Iªð™-\¦°²àéhrD!&Î=ÇààYššLÊ[¹|¢J>Ãþn½t×*:¯ñÕÒ{°ŠV!)쀠 Õ€@¤â•.ÏçÛæö{ç3ïù3€”n£ÑwRñoúcsó»ÅIl¤6…¡²‘PÂFNŽðÌӧ˧¯kN×¾_zŸ/ÍòSïNô¨FƒB ¼ëtX.Y WÁyðû¥÷ÉÒ¼^šÏšgÈ™ xÚ¤rÛìe4ÜÁäáØ‚àÏ æl¤Œ·ìN\¿ª³þìaÁôh0‡¨m™ö¿kžÀ‹æÁA!{ ÌÚÈ'{Ö¤¾ÉŽ{0ˆdzEx<6frþdN K%}íI9ãµTÒ ¸ú zì8F-HØOi‚AÈ”ÿ žè—X E/~ÉybÆŠ.h Ÿ*X¶Íx[ 7fŠÎàÜ:A/ÒÎÛA™ã!¤³ XBènš³!;q^ EWÅy“ÅÏÄŠ÷ ¤ï9ªèœ|ኼ»aF²8Vb¦b,Ýß2^µ¡`‚Ô¶ŠO•>ߌ§ç¤Ï¾!E—ÀzGÝ ´]_©Nt)Ps¨ƒF³[]\?v…Þf²Œ‹Ý zK¤|ÓJv då)™ÖÑ¿­#À‡_,H0׫tnMq •»ˆŸä4Öƒ¿"ׂš0¹ly™žS7 föŸFiJ¢ŸAYÒâÊÔö댉´yc¹d7ž“†•XÙåM'ý&OfœoùX;†ôÓÝiRIÿ–·†zÚr¯,âc©ç6WBÛXÖ·4v2gû©{@#U1&—Øo² |ªÈÛÍá'Z®Æœ¦ZKj©!‹¹ef¾:Le+Ncþi>=wŠ4ø ãŒeùÆŽã“|˜€ì쓲|Ì–b>Taã³|"~ê,Ÿƒ\ú“eù´0w‚eù¦žã³|Zè!úÛÕÝ>;ò.7³|uÖiJ Ì½Ûê`1…v÷â$ÛÊkv°ZAHsÂÁêTØiʃý™¥·nã(¿æ}UÇú¨¶gRóOËŠŸ„ÊDh0ذ0·ú¬‰–WKs'y)5EâsòR«ŸOòrÛÜɾÕÿ'/ï!yÉL—yøéÉËçÍø^&»jΰí‘{¹{ wžr½Í‹*[Š)JÕ¤¨9éSj[˜ ÆÅD|ôþ—4ººD·Þ±ä¯S­wGÜ¥%)2-`YÕ«»â´¾a“4yÂ:=ß^£•z!°VmqŬv*¿¨(‹2ì!zU®íGq2¢˜Î®TãF»o©ÚÿN¹ƒâò½Q’6a8ÍÖ|?V\ÚÓ³IuíÖw±œWU½ÊÐF¾8Éñù=Ø¢"?¤Ò-QQÌk[Qò=ð§ü¼Œt©×ÙÕ°½ºÞ˜!Ý!J+úr¨åу I‘Ö‹ORùvaMÉQq«;¨¸¥ÒÿNÃ÷Ø#‘ðÁvç ié\J±îY),Âã=JœNX,Ù¿.ð?–æ£ÅZÞçÍMV&ò—–OÚ‰¸Å“kг6탕qv45WþÛBûŸ÷Úô”ǵz®P9Oøüé63WûÈÄP[T°>)öÙ¤›í¼JŸ(G®{Ó:˜Í$Xš)~÷¿ðŽ8áw 1ër0-HOK;¿²pé±ìž÷ÙÏò`G–Åè•즜Ê££³EakUã©4¬ ã»&)—OÛ7¶gyìVfXŠk²§'Æ”›®©†Þž—(#Ï›­‹ÐGK™ŸA'‘¿'\‘b¸òíY_`¼2bá<ûÊâvÖLÿðuú„ÊP¤Ôt¯sEm‚ãl^ÍÞAÂqÓS›ïVÂqQbÉ/·£Þ°þΘñIžI ØÒ<Ú}Ñ©kà¡ yœ3¼Š!“›slðë‹ÿ gÛÞendstream endobj 431 0 obj 3655 endobj 435 0 obj <> stream xœÕËr·ñÎÊGìqéÒNð~\mçYq9¶X•CœER¤Râ’&%ÙÊ×§À `vø’“òA0ˆit7úÆþ¼aß0ü/ý{v}ôûíæòþˆm.~>âá›ôÏÙõæëX üÆÞ£6'oâ—|ù´3+äÀ¬Üœ\ýsûãñŽ VÏÍö☠R ¦ùöNs˵ôÛ86Îpm·w8–Æ9¾Ýï¤SƒvûéØ Ha¶§á;猗Û÷´×‚ÙÙæ§•׌Ëü0—¼ÀÆÜŠÍ1‡O6'ç€òkøžÃÖê›0ôƉí÷yö¤¹àÏÓ,nõ‡“£ŽÔÀôæ`城¸qHØXfì äæú¨7ƒrÓÌû£×]†Wh ·|0:À´Šü¾Ï¸}ȸÝåÙÓæ‚×õ‚0û)‘©\ .#¹¤iø£—€T` "˜ÑÞÃgx†ŠñÌ•fžÉx^ÚJ%9]¾ÓÚÁŽpv’K8I¿eqèaø.ˆÔÄâ-N+.WÀ¾"@.Ò—ÜFY°ˆ)—“í‘t%ÿû¨D‚vBëíeX ­òÛÏqs/üÈmJäeÂOñí ‘û¸‹Pzûæx'(˜vWéxW3- œ(³ÏÈò³9 ÿ7~«¤uÅøm$Âq[Â|OæÓX kF1¥¶¿A‚1¯ÌÈdí;²82°ab»;F!ÛÆHe<¨§´V6JåpM¼TƒãªXr3YËæFÉ=¨=M=¹.T¿VÉiå´Ç«ˆ§wšÅiOøyž([Ž#1Dã™I}O¤‰4]3ä5 )´Ðƒ×š#RÈ\Fi…JEÜløHs¡\ ¸5 ;œÌ 8?.40:Z £—‘åÀ¯d4â‚el4Ø ‡sÅš ý’@G™±f0R€x"W™ñ¶€¿̸88;×Þ$¹RÜéàü3ð}.¤. Ò%Ip&|„(½Ä}¦šà] Sp‚-!ànðž‡ùÛÑÉWèc²²/£ =‘¯Ìƒ€©Z'xÊÚâÃlj¥n Ù °á <²àc‡šwÄ0P§¨ …càǸÞÞ¶, áH%ê@+läm?@^R‹v1gn´ x+­Á¸S¤ˆéº9½QÂhp’aó ”ç%*Ó>¨Ý þØ>Þ%¡ˆ î'Û®¹0H¦žê›Qiõ’¡+0¹·É;¹ÑârÅÄ<6~<ƒ0¦^â4/§>à"ÒaE뀩¡Ï þbdHôhç*¾PJ? ‹˜«Ú‰ å•ï¹`†éŸÉÉ,O[( YKT ”ªÑƒÕ<àæ‰à¡sûlÿE—™ÊP£ð!0;ùep¶PÖŠãHöè¯`¼µ¾'K½È„jeÊ<èŽÒä™­U÷7vUÌÕ {qh­Ý#¡è‚®iØ–MníãÁwyrKpê,iا•íƒÀJ°8”€ûˆ©3KZhBÕ‘¨!Gáv`+÷dú&Ÿí-™N ]`V’]Kg~ Ñ bý€XÚ±x—Y¶§,ÛiMEê9…ÃkHîÜFi–EáðNÂÓÌ#„Ãcl`BnÿŠGû¥…˜‰ÍiÛŸ¶yöu~“á~ŸgOª”¯£¤¾Jø¬á«ä˜:ý¾ì#)ùúºÉ¶_h=0¯_p †&;Ì:·ýµqøª`$7DÕU˳¼þ&÷yÇû&ÎgÍó%p—Öò@Ÿà bÍÃ佫P˜IÛOÇ%Q0„HM‡ï f Z3òˆÔ× ®òìÛ<œáfk©ŸiÓy_Y–N’0óº£XÀW m¡-çqñÇ<û&ßçáE ‚%Y@8EŽé¾9KpØ'í†ØŠ"üUq¦Iôƒà¼>ƒüY\ÀŠXŸ-1»[!È­]Κx^P”#Ùf/­°šbžA/^Mk#©‰ÂØGÖþš0ê¢ ³¤ÆjìGòØE×»‚ÄE¿Ï•Áz  p›8Ñ|\¹—ˆvÚ´cþ#™÷ÞÐnpêìi@@Éé?¤°¢ÑìÌ›ÀÁÞ2ÉР j\œåŠ]3Ìà„÷/[zLB7À7=€)ÄðA2l.g>ÈEÀŽ-›ÚøecËòà,ÚJ÷ì¥%žbq{Ù»³ºË\ìB ŸÒí×/Æ`ôóÌ­)!­+sb8¹Pöm7ù•׬‡ê¡ç#Úe.Ÿá%çù§¨:¿S†*ÌXŸ‚™æ» `•ݬíê&~~z‘˜ Ûà¥ÃÇíæ-9³ÊöÔyÈIl³ 55°xl (ËUwÒCz;é…hO/ên;D¬ïüþ´*ìÒòK"Ž¥@gÝÅyø²§•—"XüP¢@£_yáÞ7œ•éõÁ>TEbÇ£3kUpnÒ~Z:ÁU}gUëÄ0 ðÊ é n´³äËe…(_<`ƒžDú¼ª€ttjŠý«‘ÊÛnLÕçÌà„©î²õÍ+‘f¿Ÿ³Y¾„ zLЧ 2J™9Ú˜nkÝ´S»¯lEc©f&Áa²9kr Ä^Ÿ°yú³| Y’&åùY­@à#ÂjÅ!·Òú ¼7ªÅl¬%f‡á]žæám^eš¾;°¶ó \k9Ù÷nûú<6ˆ¯ xÏX@I¯ï!¸Ãfòú~œyüë{ µ‘”ï£Y%d!Õ$õé…JH<B))ë_WkãT‰›5ÁÖ!: üPœÄZΘÁ8׋Þ+'¨ÀÛ0ùŒ-• otdãzf̱ïö¬sWYÞÖ<­%)³FTöÑóUÿì§©]§Ó¶û9}'Jÿ[D¥¡ÿZ—}Ô+žé'¯ìðÒ¾* ¬«L„ÎkÙï—»|‰ágÕ…›Þ_"w¯Ú]—RM«'óø£ JLO¶ÿ`A¦í;á ÓØ~¸ÑÀÂržÀã§î@!Cô1aÄl݉~¨Ç“°ƒÆ2ää²Ư¢ôkq?^$[±*é´Å¯ð)[Õú‡Ý°^¦ç)ø<¼ùírT/ ë?BSʆGf·Ùn<(]«M€³R¯G-þÌ„Ì~16__¾j éeN\ò‡¦—‡û*èþŠËNB bG7<Åò«ì.j¢ñ®Š½S3Ó~*Üöú¡è˜öÓÜh¥5¢V> stream xœí[[o\·~ú#öQ ² 9¼¿¦imƒØúÐôÁ¶lÅ€.Žä8ð¿ï y.Cr÷hµŠí ðƒ)îð6œ;¿óËF µ‘ôoøÿÕõÉ7ÏüæòþDn.O~9QéÇÍðß«ëÍ·çH Õ&ŠèÀ™Íù›“îU—íe¼ØnügÆv£F0Î=‡3g ý¬d>³Lxoçæ«¹y37_®‘ù‚ùÆ}n2ï‚ód™ó‡žG0?à™£{8ó™¸3†¾?ókp.šÃ~‡½lz—×g[­,Újà ØQ¯š§~Q1 /ñÓYy@嬈Òáñ¤NB> sË‹³2g]ü<÷¾™› ‡zkg½·j¿ðDm½/xYÝÂ^„6‘||k—·Íˆ¡w§­½³Ã1‚WÍ­Ý7{Ùn† t±á¯æ&ʤDñÚ¼—¤KŒ d–6A¥Nâzi*GÂöSmcÁŒË&ïZ磿yf·4F‰ §¦Õ¤4žn Ã6'ñŠ#Ù‰ÛÓ|ž£´V.b Æ9žÒï*Œ´®,ÿÍ­§t”œ[“©þ£pëèž­É­ƒ=Tך1‚<íÙxy[­¥þ>°äÄÄ€œœuÙz‹VÕF>ÙëæY³òÌß<ƒÈ%c«<M©Ç¬@‡|aß%ÑŠÚʘVФUÈNì6ÑJE Ƕ–1FG[ö AáÖ(O¤ÇK£Y‚SÉc[y 8bACwa0ÃÅ(ä&“›¨=Pºˆæ°›ÝluÒ‡˜wJ%H­£GM:àmÈÁ ÍMh©NeÂìXŽWëPÁã2°ÁSªœ:¨˜bì9¤À¡pš!ˆhö8¸ × ÷gWà( _uᤗ㡈)!1‹Œ¦´ ›@ëµIš˜®\F©³„i”Y¬ ÐF§bÒr•É­?¶ÓÐûLN+ñÙ+A Y;¼ÇÓ„‚œmýEÚºƒñ÷$÷ƒ¬°6ÝÊp¶4³Å`ÍÌœI5““N>Э§¡ÃúéÊÆb0ŠÓ—Ä8rSƒwÈMðÂ(Wrä5[ñb^%{ë–Ñ|K‹Z!µE#L³ptzš@º–cê#‹£tìR‡ÔËrwµf°¼aTæZ5 ¶Üo³Ñá’VÉ`º­Ãµ±iP)FÖp •nýMšÄhéGYH÷U¹ÍN¹ˆÄé@ùŽ-ôŽÍÒÓ‹Ë|Ѩ§bÜ«ÔÐÅ´ÁJA¹ å¡üd\¶y›&Úœáo™’ß°þáìlO*º?Yâø‘É Õšvø†ñþuÎoœ:ØÊÄѸí,¹@‰j®¥ «øìüDœ/´Ç¨)ìOwŒ†±”ÝÖ}¦ÎjÒ$ÄÃèl©ù½f7Ý[Ġ·’\µ:xT¯»éOí˜ûúÐtIW;} *´EÇ:.ÇöÉ¥ñ"³l\ˆñÔªny€Þ£«ô\Ѹ^vÄgÜKЃ 6:jt}†¦[I ¦³·¡˜à.o)XÏ•åMžVÚÆ…;àZÏʤ _YZÇ•ùF9–oô.Bu™ÉsÝ0µ¬ý’Æ(PÖ5n$CeÀøöe[xذ” –*jsŒ˜G¶_ 8 ¸õb#ùºLô¶Ål¯„5ù¦E3kçe?HlrcX¯§òkÓ]2%+Ö20µ¦4ƒMêg[=ÙÓ¿ž%¢n'¹¿&.jªt79÷DnQŒìÁà×3EÒ.P•ÒTêµÃ\RQ‘s…+ÄN•Y¡eb Z4Å{æ~`]ßx:fѸYZ:¦Ó±#ÜE˜÷q¤ö•>%VY½VŸhSÞT¾˜:c2ÈyÓö:€¥åKÛäV¯|•ù~” 5ðË¡(ŒÂù×WŠËËâ^˜?Ø-.‰äãY@‰Mm| 0¿²q#eóa79»±~´ÁùºC3¼]mý0]²ÊTHÛ ô˜&H¡@/N/#^oX#^\ ¦,”ã™,Eönc<ÆÀžùÀ)<¯Ÿz^(Á„·–f ÃêT(yüsÏŽŠGš¡é"<NFî/ JPÅ–9 ÉI”¾›§ô³NìÚó:äE2ÈƧ™B«eŸd˜%GÁüÇÍ ÂÊú¹W0bÓîVy ¨PäOlê»L&K;éfªlªe-º>ÑÒóÓ1¿Ão†¯ÝqÛx3ZtÈuðM½H¼Ë3‰‹‡FGFÌx,ŽÒPu¾2·ÏŒäeÇÓ¤Eè1Ù´’DUŠÈ#’qŽvmy,Ù*´†Î¯ÀÏÒ Q9^\æâü´‘+Ǭ¸|“ƒC‡'üp†fBzHå‚‹:j¨,ó9Ú5ìNixز¥‡ëxô ±£¢š9ÀPN¦ ±Gu4aê9 BL)€Ms’ëØ_!®Kb‹ qêý*Ä(Ê4jį;ö‰‡wŒ¼²³d¬±%©e…)kG¤´Î¡IÚ©³ŽŠžOQÖ-³]U§ÛQñÊçš¶â+'Ýg TÒ)– eÄ4´QEÒÜDmuiEy¹™[Ôº¸…â&P-`˜z±T\â5'¾X/6j”öSûã`•écUz“,µ ½LŸB7­Ñx„ä´°T¨âiù^¾'fš¦Eƒ1Z-alæTò¨Yl³jî†6…žº[–Ó\Ô“§x#3TöÜ訒ù Þà†òŸؾນž×`D5®´}Çû¡9ŒÅ ìź.2T7í%Þtv1Ä0ÞÂìÓ>fEfz9MÝìA•¿¿ne<ï¯{Ü!ؼ ËWó»`ÇGÀ8ª©`|ì90Ž3|b°øÃ¤¥ »ª3²LÌ&^¼JZ€±pŠ7Áêôlaafõƒaà†p]Ï€² ¹>ŸkÓ6`àV ¾À/Ö2q7Ъ sWDܼ6Ž„ `Æ{L™)Ʊc• Ä´2ü‘€˜·ÍaµþŒÈmt˜€}A8KÜ0؃p–;˜Yà,'‚.ºRéôáI_+zâ]ÝÍŒ÷MvŽvN†]Ç6¥zÅ©Ú2C'GÌ–¦Ùª÷zW‘ok™W[‡ÑŸùâ@[Q?´³ã'ÁlaDaãÝ&“ ³å§?l¥ñ˜›ªO ×zL@ZÞ$};á•jäÚÄc!·0q\ ÇŠ’Þ2v>»§,ö)p,„à3zÍÌDcÑÌáoq Ø!w½b(ƒ»ÈÀWƒ±”Fý ìI¦/ìGc¹0£™—`¬$8•ˆhE<Ý]gE’ úhb†XpᘞZÔO?i §ýüÆ_ËÆ³Yh` hÜE©oua{_¡HÒ³lxŠBíz¶qçö"N P•ô¦h©Ö1ù–th•`ûIËUC™Q5zh8 Õûà^ i§Ø—»Õ¢ÄhŠ’èô;¼mB¯!÷–R6áWÐy‘ˆàjLÎìãB {ŠÿÒ«tì@ðáãÄ,ƒ#Ýrۥĭ‚x5Þ”&# ±^"¿}¡¼À0¦Ã9uè+{Js0ÎGˆU?hEÀÓy&Pû^ëÊnl Ðv«¥¸›+À*“l oê³~µ:R]‰ÆÁ€ñÄ»é ž fɾdbù¼O¯þR €éx¥%´k‰¬h" q»ìk·‡dt{À[È^i§Çè>6…x'Z‰MIÔ ¬j²ZMÑxjìœB½ùE"Ï'õ§ôÊtN0#Ò—p ðÏã8_½UWÈäDÜðÊDRz¯™|ÞÈðÅyèZ]žF•p1`Ó[ˆ‡ôÜS»GGßa† ÿB°ÿâ´ÀŒst±:ËZêÜ€Ùn€QF çüæè¼?Œ¹ÍFy/‡r+}Œ­ìÔs@¹U¡;J3 K>üeG¹(‚Ü5OÏÊt×Õj‹r[³(Ô2jÑÅP¯„jÑäéÝîHr×»ðŽŽÞêtÇ%ñÜŒ£Êz*É^C³ CýˆºF?f@±}]x?£=JÒ(ÿ!öl÷`™ áÆzp¼‹áÁSÖâŸzM †ù”œïe ‡×N†¥ùç³î㚌¦Y›á‚ñŒG´‡‰7OçhK¶ëQhþZÃ"U86¾oÇŸKàÊ¿Ó온ÄN¥-cR) p]©lìË+I‘44èŸÇ¡ê ýGƒZÒ»VfL×1qûßù&ˆLNäìߟ*&dK®žðWàlFææ°Ê´‡zm¤:+ɾC7ÆÛªíy®3¯„8»6<,Úm…Ó÷NIÞ> stream xœíÛn\·ñ}Qôö­+#Ë’^ØmS¸-b« îƒeÅJP]Ëvà~}gÈs‡<<«ÕJ*ì Èƒ˜Yr8œû yüÓZ µ–ôßð÷õÅê·Ïýúìz%×g«ŸV*ý¸þ¼¾X}Œt\Gvf}üf•WªµRJ¸µ× ¤‡õñÅêŸ$…±ÖlÄÑV ­–~£ X÷g˜ ü¯ã?⎠øŽçÁMOq“8WA0Öo¾IÃè‚Þü¥@»þ0Ai‹§Ç«ïVFH»þþû• :ŽÞ®/â ’7AÎW/T“;1(xaB¨Yt]ˆ{_ˆ{W ¯ ”MxR†gí²4LËŒV›·úCË vÙi~_0° _—á‡2ü± Ï˲‚,K±Ö›­—"J½Þª bq”&j NáÑ?m•.³¹dà«¢3oøšÆ&‚é)º4À­TÐS&m3à2?Ö_rÖo­Fùksú¦¢E• k‡¿‹˜”,‹´N”,amÂ)dÔ7*Y–Ô­d(4,å7/7eÆ‹2ü¦Lfô7¸”F•MR+‘¥ŽI , çý¤„DŒ®–Ò‹®–¤„§¶ÂI·yt´ÕÚâ/~3ú5`HÃweøª ß6s¹ô«iH¬Ø‚Å9Æ¢¹jT0«²µ¼.$]•áeAxÝ¥¹•Ó–¼lé­ ÅXëé/J' sÃ8@8hƒ >ËæÏ]¼@¥%y£Í›Â¸ó.¿ÏÊðc3!ù|‘õÎ TqÿÙ²Þ€Á0Ö€ÃYoЮ‚Þ“õL“™ú^•áë2¼,Ó}´þsg=H'€q>ÿÿáŒä¨ÞWç™Æ~ßÕîó{b¼qwcüiwÙ‡²ì¤ -cpÚ‚B¾b¢qÒµiv¾¾“ežõåQ}@åQR(m‰ç§u¤ž•ÅïvÂú¦ +fLÐ6~ÏòÆ­6ìÏâP?ì_u—µa–0)´aŸ»ÈH”n€Læa¿•t^÷¡»Çy—ž·]ÚÙ„× iyxÝ…2.‰`Rj¨~T†¨!“iíÉI‹tˆBY=–B§ÝÀÂ4F¦°”ÑÆ5ÞÑ_eÀ=fœuyø®w¾œ|›PUr'`"?í&¥ñ$1Jì%Š8’Ç‘Hú<ßKà]ÄŒ9Œ82S… ðKâÖC†NέÉÑÜzÈxWé–ñÜžˆ[‹ÞlVuÝÚ›ÂÛH%ü=DÆš“q=[?º…Ùz‹^ÕÆY+ÀwÝa¯gÝ …µ_Àâ}«"ÖðrÐï'I·"ÖŒ1m ¥U¼Ç1Ȉõцc‚ªZ¼­ñžÆÊc«9¬ 24GL„ÁT9Ž•§GÞ«¡ÑB¹¦–Ñcä&#ð6䜇ðFºÍL†¼R÷ßzSQãÉÂÚ©ñ·Ô ±8ŠäVˆ:c$Ÿ_~'¤v‡(‡y&Œ¢{—{k6ƬIÞÄì­“,4i‚Œ²âåCÖ¶aj‹3†<ÖæWL‰ÎótëµÇié5M=TØýKËFã=ž'TÓé¯éNW¿gvÒcæ–&(s?eÌÎdz?bÆéR˜É¦N€Áb„|#>‡-eû™¾A1Ä&o@ÇüÕÏùÿ#cÜåQjkEX<æÀë$¯ê)W6äœÐ9£žhÕ:5 t}„•cV8ìWÌØKºˆ¡Yƒãv?WÄ­Q‘tTM2ÏÇS–Ð:® -5c‹éG™i÷y½‘Axi³ç0NÊ5S¸„cà Ï%tN˜=zxÇ¥ÌðÖÆ4-dSj(än4&`)Y¯zÚžH½dš? ±ˆ&k¤EÕƒaÄÛ϶ˆ&‡ôXÁ˜Y_VÌg¼¯D¿ƒC©¯¡LkÆÓN(/ •Bôm|Ô6éû 2ä`î?ù9Ó¦_%æïzjxVq tRõ5–+7ÞƒØ`Wj6¹ç&(éëb«M?Y,dÁòc3¡]ÖõD—ŸÒ F'gâifÆÁBž”‰«sbƒ’ö®££ö'ŽjèÈ ã·>®M&¢µÆÔ¨­Ò— €ï0Œ‘8`‰Ýb<ãh®*^kHͪjÆÅÆ/0‹=™© wiò‚èýÇ  ”ëø­´ðfR»*«µqªáN–Õp–|usÁžžÖn¦=¾Â“X‹å¦kUR*œ¥¢)ò± `ô°‰\Œrãt#¢‘§ÝèT“˜ºêosQÖ«bE!+ºNz˺ì"(»u=(qã>ÇV º¶²Ä|¨ŠÆ¸õ»£ D JÕ;N邸‚”·ã’jòL$ïâ¢ñ9£Ó†‚Vlªõ3:ÔÀuÚ©®ŠZÙAõˆÆ#ñи`2ó`Ÿ¦|ʸ}Ü'‹ø°`»<¡1nÐcO׎f„hT»J¹&ºmcMiÔ=­ tºŠm‚ ¡Ž‘BcšPMï?5í09§,õrÉJQ—æÚ I"q—G'{Îú]OsfEËÙöJ1°Iǽ³u ©ãUœÉü”šd—˜C@âÞ¢J}]åd ®²2Žo)ü,•»û{Y%Ñù”Hs·}ÚÅôÁP%iÜúb¥±¢#äöÍÄ^ º~2&wGî~ó³£Í1k×í"ƒƒŠŠÅT ¸L%Ùº8 ¤Z-Kn¿ìd‹¢¹†‰FHE/™¨Å‚‘¯¼dªŠÓ “A:£w‹SnŸ äDÞøl²éƒU^‚ÛÁT"Ö¡!¼ÊCé—ënÎ_~†…j–{Ô[³Žo2YÁíÌôÇ#y8ô6¸2b=b1UÇ`Á¥ÏwæNœM9YˆGi—Jß}Ê·‰O(oÈ}©Íß› Jƒä§àSŸc´¦ŠDdX½T•vÎ0 ¦ÐŸ29RUyÏÄ,¿˜÷°‚¦çä¶#M¹`·þÞ;Á‹2é×€Z™òhWèWGÈ`¯„³ 'rÇðçVŒ¸DÑó}Üð¬@ŸèßÊðiqvÏ ôOeøm–'=ˆ.Zª)žtHÝ8„ž]Úøq( h‚e¢Ñ‘‡»ƒhƒðC+šDF+šLòãî„gn/†÷7ŠFO¹Ú>o¤¡¤¬­Õ´ÂJ½Ø¥i*£éRdÖÝ×z=5^̓\hö¸´Õ˜¸`Èž·¾{ý‚~ sC‰3µÔ‹Œi’bJ0ëmYM`iÔRäÿwòVéÖÏRV1ë2¦JÎÌ{N8׫êX<.ô5ëÖjB]GÄ&ã˜_FŽW|4°0ðùyÒ)&æøe$¿QÌwáù¦‘]F^æN–ã~šºE„ÒØÍymÝ.1‘r,ßÁ<+¨—îMφ“i;’ªu–É%6`´U¥Y ­#¦Î3+ùsEbPL¨Ãµßå¥4/‰—<Ô>͸¥2»sœÆŸFj+û¶9†i®sm§¨êþg­h¤EövU£¥mŽÏ¢,+ŠE§ï™Ð•ë(Ž¡BJâ'=94;}Z„ÄŒki§RU5ÁuAi’#š+¹I묒o4þh [4BÕ(^„Ç<.ôƒIçÉ[4ÎF$6:“úTÞ f¿‹úl5%¹w­œq>~Ƙ{½ÒE_Íf3†…!¿iIû ¾+vä¼`¼>„Qás8Ûe{d-] ÇzA.}&Ãø0èæoËà¦ÿËoËÆÊ´¸[`”Ã?(C ˆÈñN¢è¢ &Ê‚ÉãÆéφìÅ×ë)*| s\€ƒû¢7èôZÓ•œNBôôŒ&È!9….cÀ’Âf!>ÙOˆ­<ûåΆ‡ð*}+”†èvî³=‰i‘7Œ+ÚKÊÞ+ˆA@ÆP¸ÂR›–+³<évª=})ðr“”ÍjÐÕ•õUÃäÙ‹öá¹`I•Ú Ý½^É:•`_ÈsA wy.(1~=ÈsÁé¦`q†Þø¥ç‚(A'È!Ï5uœ ½ü¸Ù›¶mð»xÓ¦÷MIJ˜øö0Wø7=³[¸±?¯¦»ZT¼¥»»¥jü:ïãâ(R©ÅšžÃûï¥(}ô˜zÕé”Ê#§íiGÉclƵéUBžàëgü2í?u>œ§ë^*2ø_³pVq”uâNÕ¾®û±ÃÃ(‡¶Û¶NÚv–"ÑúÅ[á|l,XlÃ#Z(«wÝdˆúÙñ^Ì·Žä •[+<Ї"†¢‡3~‚10ó0.áÞ£ûEŒ=âè®bØÐ]´ž¾7xðËt^»Ï3¸Ñ·9 Çš$›Ùë ƒé>|˜Z½×=,;ÐoÚèz{©-Àñ /'\÷QK²«%óxÕC³pîSGÕ ð»:ª#åýµãÂô¼“ý+-Ãg%Å*7­=»Ô†¾@žJ;6né_SI¢ÖQ„§FítÎPå»Éñ}·ú/p»¡ëendstream endobj 446 0 obj 3675 endobj 450 0 obj <> stream xœå\[o·~‚þ†óÖ£ b9¼ó±m‚¦…Ñæ¢¢M,Ù–Ú–bÉNÓ_ßrw9ä’«cé8hQøÁÅrçúÍ ÷ü¸“v’þMÿ_¾9ùÍw~wu{"wW'?ž@úãnúïòÍîwç¸@Å]Ñ)gvç/Nò“°áv^i!½Þ¿9ùûÞŸJa¬ÖÖìÅé™>Z%ýÊ´î¯PËô?Îÿ„;jà;\§ nzþ 7ùׂÆúýïÓ0º ö)³çÝ_/³´ÅWç'ßž!íî'|õ?œ@0Zè@¯£„·»78ã o™y}òýAõq/L5‹ž•Ã]—ý+³ÏÊìóvAþ¶ _7C£@kN÷rf¾Ö’<óRD©vgD 2ÎüE¹¸àóóéé‚1û·lúºHñ†MßÒØDíCØ¿bÒæ­Ý¯²ù:"›[ÊàQ휳J€#Ñzï„ÖËÌDë½p™‚`²h¿ ž”´ ÊjpÞ]ðu¥‰AÊ+´Í¤¼µÂ˜G0)›)1Õn”|dÝG^9aõþ‡}™ýМ!?ÆÏÎðÃé¶ù€E»±aw¦¤°¨ÁIq¿Lµ•1½„ÖJZà6@'Ãyctør4v!@e2ܬîh ¬ŽÕf…“q¢íM']IÇà'³0”DI­£ß¿¤ç­·!qžNj£ =cERAùãûb0*Œ´õ›¬4‚!Ç;Ï<ÀJ#“)ãà~Ü*Àñp-‡ŒJÍÜ|‘tÁH§Âþ=“ÈÛ<ÖFCÖã¤Gop—%%£ÔY1´àCV ­½‰ô¨rAöOËìë¼Øzåçñôà™ò¢6Vû°'ù–ÏÙ’[ÚßÌÓ>8tø’~ÿ”øJªj5Ÿg‡}—£‘O:·«vg &- ÊÚ²cEíE&ápvY³zo0HÍ<ÓÊ»ý¿ÙñžÓrŸ6çË'‘|bÿ+öœUœäôÆÿ‚r@ƤÊ9H*q`ÑÅ ÂJXk§ðÇùŒRAQ }uœi‰§×6ÑÛ†GmÇT"ì,Š.ŽbÕuh5mÔx¦H‘ݰeæ‘ (D ŽGÞÇ–Qä)ô¬×¢ËÅà81m >*é1y¼?À޹ÝO’ƒçÖƒÀÙ¢kÔUþ˜ÔÍJÄwYØ:,¾ ™÷mVלªqøI¿pÈwçºÆ·g/ôëv#'¼‚µ™.>b!ˆñMô4µÉ¾e62Ô ¶†Ï¿fc>G–gMTäS4Fl&»2/d\´“ξpÀ|fÔÙ|Q5‚ûl¾Æ¯Í—³º•Œ&tô@7i|ÂçZ ìÚŠæ™ÞÛiµöÕAîò´‹ëãT˜Å’è·0! QUQd-Ä´úªL7*D¯®ÁV«¹OçËŸ Þç³'QD×Çj3"¬†|Êrú.)™Rkq½gHŒ5âe@¦á»8u”à)ò²ô\ÿ2w&¤Æiô1ájå#¢XáèËT?¿³9p§”áV&,3IŒ@8›h¢C‰•óö£4{DȤ=qöÚWÕñÈIËØr®¸d+Q#Xu›N6Z¡´›}a2f6Üö2Z€¨‡xë]&ìÚ—E RäQðŒˆs<ž¥CYU9æ™HÓøë|>µø±äêó6ˆubæ6šòïbbeÐ#'ÍcJrØ“ @¯ñVç%nñ0}¹Þa×øxç;è;gg®Ì=X}ò¸ÅêÜm~A{bðóÕ“<á`η뤎!sg{ús±Ã¿–á“b¨O6­S¡(S›¨ñSówçX«AFóš‰:•)1G'1S $@S ¥1yŸ1(2ÞU-˼AÍ…öû¯?@Zmrñ½ç wš>Fx•oJ†… £×lXboÂiœ™7“@|w›Âäw¬ôý†é;Òó5vId:~%-¿.KZ`7¿emA7}KaŽÿªë¹ ×ò¤ByòäT—RqÇÁ ¯íþ3vŽ&èi0©v¹…Ø1/sýˆ¶©†ór_²‘̨NÀm£±ª´¹i-³-yvÃ3½|-ãë>_o˜b l' õ|ÉÁâQ‹¨´ÚY¿Áûl@ËûùéÙ1Õ•q„GÍAÙäu7fÏö’Åø_c/é¥jsyL[…yªm…¶Ò´œr®/i 3™ÐæbU×÷ ãÛddq:†¦jw~J=(eS• C ð²îa 4ó2•‚ó—ôœFkÙ2æ6 HP"íqªXZðLÓÒ”p²“egb?¦M\°u ™³ðä(Få*„±•ÛÂUt+ÖS®±Õ]¢s£h¶8’^M¹voıœMRW¢Œ¹7ÙžäO`ìÕtNh£@òÑ ÄuM3`U`{U†NÐ.R™Ê¬X<˸XKŸÚ:è_¤ÁgµNÏg©üV˜=ªm4õ­²T/’  98ä¶ ›‚¤%àÕ§Á™DœêøM²‡³ÒlÞf"9‘­/3)ŠPK'©.ÚÞäuÆ<Èî/¨êŠ;‘XR}1“3mô::eŠËt^¡ä“`Ê-c·ƒ”ФPí~Œô ˆ ÃÒ‰W™U;â@¼Ö’8ìmXR:Ýt“Y— “A {RÄf³æ§GùòÏØ<ï91óÜ@\ÎÀÓ•Š6Œ~8µ“\€Ž È(8ãשÍfhÞÏb¼®´`fôìàˆW}»½'X$‰aÛ ÐǨÌzÙ­EZ%"ĺ}”RÑQÅ|gdÀsQ;Æt'ešx@;Fá/‚ ¹OÒoM³6vÿÂÊ7u´3…»Íò+µA_î£<¬"¬¨$§Ãñ¥€Ìac‘‚Ð>-tO^¥Ú\oxÝý¦¼ ›}U†oËð® ÿ¶ »²@ %6ˆês¨§Ž=êzíwª:l Ý`†î™’BIWTí¨}KaPQ)èz „Ò%Ý~«|Ǩy» FS"Ý\‹H»»ƒ‚{èX:ØÆ”´%øñÝ¥GUnèP.¬Š´§½çª€$g ã\)IaÕ$<øu_N%Ø dl€[U,¶ÊôÝh/ÑÔ(–øÌ<¿¬›…Ú$Rc½¾Óò.SóFÞñ]¶ŸÐ&}¯9ºIØø™Ü›¯]οÖp()ÿ¨‰qx1ˆHfK˜ž3GëW`ºÔUîÖAéVÏ=WÍ´>úžTÆU鸤ç;rË¥´ô‰nÔ¦ºTc¬‹«œK_Ê­C܃.—ð=÷½Í§º¤5û2vAŽ9Ôáž±~t͊䊙ªŽkåGzô±gó<ŸWëMå %^z‘–›½ý›¬ãM~°‡ìÎÓ°€øж ILŽÐ–)pwkyÐfÔFê­Ò:Òs>Ý­±€ûÕ§æÚ¸ ¾ËåD!t 1»Ç\ù¦ˆg;=Ù™ýv‰3m ݉¼[éô¢gÁ.b2ÆÜfv`0@¶y8×Ëõ{¨À£Jòk9Ä[[+ <ÝúÚÕf½©Î>,Åñ’åÛléŽKØ.ÊìM–Ü ßk™-×ÝxzxWR¶àenäšy( …§›Ic Ï ü±kX–n?F?( cvó!/1@e/#ov›i·u׃ÊÍ„—#óȆ¥Š˜ìú'Ö››=ô !øQ¸†Îé2¡*uûˆôXßÔÊl®xO5–vOº4¨„ß×覯Çb‹ëh6ÈM ¤%.Ö»sëf%F©M_3颂£Ï ?>Ó¢3¡Éò¡@}{’±Êç­ …[\Ëmã Ø×MÙ¬ïs=c×NÈr{v\ JL‚GB "â°<•±‘­}MÔ0I‰¦Å0i¹Ù¶%É=ªiÛöi ×ôi¸ÆÉÜ fƒ°0zÀå[ÓèDTnô†éŽ»Æ­†åžÃÎb}뎓\nݽX9°Û,fX£{“Ä}Ôý¦à”Tç6Ѳq•×öT†‘øg"a¡x¢ºñPn( Ã3ôv¨_ÃÍÕÅûúë+E‘—Â\¾-~ÿÏ„˜ûVü’?2ÿ6ˆ¢ï¥|`¿ 2Ï<ü·A¨­½åí§Æ³psüþßÿ΂|è²áU™M·}P,˜OöJJú:f§@¢…“ìSÐ/ËÌz¿R#D“ndþ‚½ßüã!:T¿ˆÑòböt•HL$Ü ¬ð´Px7­…égKP4r½Ûê”õn€@ws?{úÙ[ûÅôs é2àâF«áH… óïÚ˜ /žëÿë‡?}í.Õ§p¯Tºó;@Æ —~Ÿ'*Œ[a™yÈ/ÐÿDSx§ïw¯Ýß8úõ KoA韨9a(¢¬>vІ>ë•År™aT(Îð i·÷ÀhËé]ç-©;¹]#+Acšon q•Ã#Dg0Ý®R£òáúv¿ÒµÊÔ;·«| Ã%¼¬Í.q¶Ë JÃ÷ï_R›~è¶G“'=šÑĻ܃rýDyóò4µçÐW+g6·Ý ¤ÖŸ&Ó,@¥kƒï¦F!eÙG©—­ºeèОù”€¨ùKÐåѸ ?õíÉB•Ãendstream endobj 451 0 obj 4206 endobj 455 0 obj <> stream xœÕ[[o·~ú#Î[%ÃÚò~ylR£IQ7M" (š>ØV,µ¬D–èß÷rw9ä’GKHðš‡;çòÍ ÷ç˜äNПùïWçúÆïÎÞˆÝÙÁÏ2ý¸›ÿzu¾ûìTÜÅ):åÌîäõA~S“Ûy¥'áõîäüà߇þHLÆjmÍátt,&­þP–aÓŸ¡Öáÿœü +jÉW4˜§ =9Å"ßb®ÔÁXøyzŒ.¨Ã¯ÊèIwÂë(-ñìäàë3 »û[ÿë FO:ÐvÔäíî#Þ€½uäíÁ·CÕì® ~2!Ô"ú¡0wY˜»,£íhzügwôÇòøŽ’Z^•ÑïÖÇ,×ú$½˜¢P»c¦D\ä‹sqÁI0s}t,'á‚1X  _”Sü‰ ¿§gµ¬•ÓÇ­ºw¼Êf.t˜üÂÄÇ®@~,£§GÇVဤy@…PB¸IûsÖNÁA ”Ð~òa¹»€$šP°J Úã¼,gøÀZYÙÉ©pøýa: ¥V‡¯Ê”‹.÷eôj¦!íMy|Q^»,gód~Íè»®&q^»QTÕk½¹O—í;ø…AÊÁã÷Gës×b`Òà+ÀdâäɦIYÿ’l j+bbWk%¬äjÍãY‹£#ñàÙ… ++á–tEÏÒK«c5‡Þl0·Ù¶¥®ÔÏÒg«rQfFÉ :zœ^·Þè‡Ä¨&tÍS‚’ ï~efRjç„—“’äs!ÃÉéuä>7jìŠh:poö¹­>>¼Ï­ÏÅ©I!i¾Nº`Ùæv$ïò³6Ðɤ;2í]å£Qè¬ZéCV ­½‰ôªñnL-3 䄇.8G¾³=û ¬Í ë=8ñ³DÜ­\±3W§™64³bð‚†=ñÅùûÀ¶6Ï.‘d碸ÊûQ6ÂÇàÑMd¬™¬Š19¼C—9\µ™­¼ã3^f¿¾eSønŽó™ø†SÞ12g…:ßü›²Òƒc ‹Ô&Âs¨ÉZ;[ä‹"—™yHl&É¥•$qŽa%TÃ")ãÔÀ€&„_ŽT˜dôf°?K~Ø\óΈ9b× ¾Í™¢±Ò6N=QQdŽ­v@|S²"Î4¥ÙobEÞ†®Ô/úô¦²å®£GüQ¹;Vn’+6º7ÀÕ¿ À]P­uAg<³ Úeäþ¨ ˜Ç@µlîÙêaoįôðÛã×ÿôj%?Ž^—‘û£WP É<z­N{ŘÀ©ëp óïÊh¦êÛÂTÌ•Ž`*üsDdB ¹Ì¯ î½6ÃÉaVÁÉ ~'praô~p>XøÇðuÁâˆvÆ*5i•ФV°ëÈ}Фœ\¦0 õhr¯«ÀàYéÇ…*ÀKhÓÂF-…Î=j¤´¯Á GaÂ/éq²Áz1Âcò±èþ–qý–ñÑY2B<ìÍ«¼G$}=·ð–Z˜ º"Í`àNqÔÈñi&‡Üóá$Нó¨‹ÌfX)ì$¼a¥™ÐOŒu†‹2E½å“M¨ÀÒ±F\ ðŽÕ\•.òÑ×yž€ º†Ù9“BërzÝÕ:Z™N¯ÖJ ßcÀq»AÞP)iŽŸLB«¬Äћ섈¬>q^|«æd+ç‡ÆÄòzæÛìU©Ä–³Õqq5fÇÁ÷¹nHåïqÁy6KŠ~X¶l*«åÙË#R+”(ƒ]ÜÍ<ÙèbNÄÞ¦lé™Ï™å&srB«+3â=2åg£Œ‘¤ý ŸuRÅ%ÎDøßĉMR0 ¥¿‡àçÈFàÞÀ!èù 6^ %"§Þšã()Þè×»ZÂyuÜä]],®øj~Íl³¥j‡É±Ïi¥t£4ë·ÓÞܧXÎ 8³J¢‹0|mõWyXcåžèjÃeÁýuÞ öÙAd‚<ñIô"+¾ƒ‚Zµ(þe^<úõh““æã%‚Ÿòt€´Ùäe>°W¹¯¿!B'’Ìø«S™’ aæ»6„/Ó,+²Ò¿i½‘.@NÔ½øž9ûÃ_ôB9‘ñÚŽª=(è"É-²~Û­±½,À›¡í~-ùª;áM¡°'qÉS“( ËxHɵŒ÷¢¯™§YèÎn0Uº«À[ÇËVÂ5T¾"3£¸w=“6no€!«â°f2æ{¥2@X[[\,CG ¯ßš†ûŽý¬õñ68ëuÜnßç Ã35Àˆ—qŽ¥¡rßa2rÝèÄCxérôçn\xÖ8‚& P°£°Þ±ùþ’åN,:ËKj2J›ò‹³]j«t=:V>LZµÅµD$.PízÃâI÷<âÜú2rDB›Dsr.Ü 4ncgysd0 ¿†›‡«êY(š“£ú§Â©³é¼FCùŒfˆûËИ¼]•l¨*ùi«'ç}[¤·T¶pË+ƒUØf®`x@Q2×)#÷m‰‰V‰^ÕÅbZTË¯Í h¡íÍÐX˜^ͧäCU©{Ÿ‡¥·U<áÅ?V™/iás@@¨Ð^b÷u¶½Ú)g—‡¢kê½ #“æ†Ù\ÌY'ƒæÚHЧ¹/&‘uÅ߉ú`Ë`Cè¯7—¨ÿ–¨Ÿ†ó IË娢ӣºŠv-Þ´N„}µ¿Ù§)ùïdkoK­ÌƒÔÒ÷úr¹&–äo{݆­¶v®½;W*à_ª&3B+ûo–IÕ†hlMc‹mðƒPÃÂùeKaQ(뢷º¾ÁÇ—E>^ˆß”¶5ÙºàÐ7Jq™¯—!Ûî#ùyÓõ «û¤”1úµ1\‹…O˜â뼌ÝôTiÐïwÝiíÛÕ‘™¢R÷ÊPyƘ¤DI¹F=¸–q*O3_ûËÎ3WÓ-DûpQ‘w7I F"[R†ã‚ä^GW¤ çË{Sfnјt«JÝÇ7h´p@@jæ+¤êì<Ûv‚°©åÃ[;ƒ;§µÄéÅ êijóòr_iÄà°‰ß{Ðmde[ "gjÈ*„¯Úð…c=(ú^Í%± ýIˆ% ãðR‡Õ¼¢ïÌp¿ ªhÉúÚIjUú¬hU·ºçŽ×|FÏq wüy9@í;Ñs¯¹Q¥ÅµgŸYªAÌìÝ!xòî.LÁÙ½±×y¸Üp[Ÿ–ZŸÎvzYéÍÓ<#ºÔ²Ù§íòÈ=¬;üÈ@ä¨3ê¹4q6‘¬/Žåéuž4%°î±!„Z[O~Ë"_94ßç½Ê¨šPF£Îu.#Ý7"p?“–¬†£îW´1«L²±´1[}5pC8TMÏ$},ôyyüª<žt'|Q/óç‡.PÐßIØ,œò_ƒüwýç=’߸ôN€×`rò{Zr[VaeW³_”Gv÷•U‡?ëfÇì63ëÜ—Õº¿Pr¾bò;Þãã.±ÕÑ=>¥nyûØr²Úš_7ÒNj{"ÑVÃ(Go‰(‡÷4G÷..éUM-¡}Î’WÍ¥È Á¦,¤q¸}+|›y ›»vK8íx*,=Éò9ÓÆS%?´-á:aì<#=Î%\£ìz*jê—&9 ¨Ñ–êqÜŒù5„60iêZo>¾in富¶Ç‹a»?bÑÇOÚÉ»¢ð?¶ y?¹œà|µ’<ê u?º•û’ÍÕ±ëLŽœ§C'@J©šõż}D!޼Æ÷ËÒìÍÕ¯,üªZÁÉÈe~3XuWw²'sN¼ôkAåÄ1%•鳑ŠT Û›qw¿_›ë:®Jùz1 Ú/cð“´šA´ˆù½qNS)v¹{ThG¢€n¾Dÿdå"ۧºÐÜb~VB̯ÝÀsµ7ÚP­ß8Ù”hM]¥l¾4\“ª‘zŒ,r›íåÅ«tïÛMˆè}ç¦ } 2Ô>γ2Fæâ¢…~U%§í—€ùv2q—ŸÅ–B]dêGƒù=8¡å[C7ZaÝ”¾í…7eÒu˜[%ÈÛ=­ÄBÌ›8¤¥z±‡=ç08ö“BÆæ.,ªýÅHÌ·úðqMù‡µüN/Ëò¯3á¨ê’/Ým¿§í}"ªè†lôÕ…¿þG¹yMùœ6å«lÊÓ’˜æÊ]@ 7r®Ü9Y:ó%“ƒò•3oê§×¹àƒÕ¼á­&gl%¬=«º˜òŒO+$¤í¸}% Ì®jÜU*Š4EËágYKHûýWTi“B÷Rïõú+õ5\ì¸Ð¬³}75Óuc·„‰æÞ8·8gD pƒð—k'Àƒå+´í%kŽ¡>ý³‡õxÙ%·¶ \ÃFçµL]ST Ëm‹P„,ªâA Ü_üû=¹endstream endobj 456 0 obj 3891 endobj 460 0 obj <> stream xœíÉr·õ>•˜›‡.MûrŒ%JÊŽcyªR);Z”(•¹È½èïó€n< &9Å.×Ä·A ððö5?®ÙÀ× ÿIÿ~y¹úì…]Ÿ¿_±õùêÇ\§½¼\¾ƒ \®ýà0j½{½Š¿äk.Í ™\[!fåzw¹úvs{²eƒÒÌ3¹yƒßÚjçÄæUX7Ì2³¹9Ùòí=. enäæò„ ¶ &6§' JøÍü»8œð=|ºA;¤áÕæ=k­’ÖUÀmRZå7¸EJm…Åo¼Î›Íí-Ù‘4N¸ÍË9ÌR«â)ïÈ1äΫ¸,•äÅ)é&ÇÜxŒvBk¼áRnz¥vÅ=·'ÂZ‹AÔp Fñwú}€^Šº…®_g° a&ÄKذÅ˵1Å[è÷Oä½”PÆ ¿¦Xûïî+aì 2Ùî êOä¸ó°—ãËÒNJ™ÀÖÎL´ÑÖˆT oìPÂ4?0l§”¤‡Ÿåíôv„zËÅ •áøï‘lJ ƒøÄý€qƒû?{á ‘’ƒÓÞoþÞ)¹ƒkË ª^Hã‘lðVK¡òi™ì'½`>ÞQÊ­ôƒnBìœ]Žáa@™ íÊ2!•¿Wñ—†ÛJ—ðK¶SP¨„Œ`I1"U:DjXäº +e5r ÿmØ¢´}óŽ@uÚŒ(‰Ê¤ÛMx/½=‰‹sŠ"Šj!ªc†“­Ò|àpÈó@H§@;]ý§¸èˆûÏÀs=½úaŽt¦…™7ÏȨã%eò‘RXÛ£ ‚ñ?-kËp Ånºd60ëV‚ (ë£iÍ™´¡SfÇxP¤ï#o0éŠ×uøø'²LIØNžéâþëB¯!º,/)ôkÜͼ-@äãžÒ>‹Ç8ø<ÅO1xn6¯#’˜¥9ø%îfðÎÈEÄÔp“ð€½ý@~Hy„ÞC17ä‘`Ì•u~½ûbµûôÛÍ¿ÅW¾+~%¡„ƒûÚ(em°QprÙÿÑFÁr@)¨Üáù`Otù*`›+ÕÅð\õÕº‡’¢ðà ï©[Êwm+OÕ`¥mñ9 ¶Õsâ²E¬Á'î— Œ´‚UjkLzÂ)åD*rA¡hjG åU| —žBÿ: NÍyy¤-zPV ¢äÔ *6m'öõ¯o–ÃC§ÏÛüù®¹zƒŸJðè<Û­¾^dêõ/àRÿm†ãׯÀÀÛ.WÊr3ýçÅê›®×][{ÝÆ¸ÁK7zÝŽSÚ¶ ?¸ÊÂeE ¶þ0pQ2ùmôø˜¶3ΆeÅ|O_RÖ¦‚•öXÎòá wN ï!¸½V“Õ¥,€ëµ¥þ°ÐÍÓüùÕDˆÍ®¹áùô9Q €òƒ€Mäk䚃ʓÓÊÃ)'€â%…þžÁ8ËŸ¿¼3 ´ÀòK-ÆWScPŠ3"tñRð±o ߃Pâ‡èP(1EdÁ )¤§G¨7 >¹™ªè§Ý>·ÓàE“ ­ñ6/žç³ª(¨|Ò,)Œvx@¸(fpÂv aR0Nª†¶Žu–NsÐrA–©ZêË8c Ößr•\!e{äW †Áá¦q›¿ž8Èó¾c/‘ÀB—;>Ø{Þ0/^­™’xØð T­% ³Ì„wEÓ}'æ-\¯ÕÒ=aKͪy•zJ?iPí³G|B¶ *Lp›{v¹ÁLƈÊ˘ì…–2ï÷d]§ —Ìl¬’¨`Fò!+½¯c˜€C¯Y•ÀÊQaH£#¾A‰Ú2Œèèádû ¹…l‰Qv‚¾Œ²8AbX®D ²°å±Q‰Þ˾üHÐ ²2œwkÁŽŠº‰ð91¹2ÜnùèÊpßwKQ©åQ`Zf“ ð޳á? Ùô l›[¥yÐlúø5®ìa6=¸Má98ia6ñê -…H4ÊRÒv[K¢EäÛ–‰ LÛñÈ!o"µ¥š¥ ÂÙ9×TÚ¼ÛÄÄܦ¬€ä*ÅÿIúZ é»"~ñwÜXˆÁåeÌ@½kn•Àyo#>E‹í’Ãhm¢W¹ƒfìu¿À*À€K›W²Y´—UJ; ¿`"ñh`˜{$>_ñü,ô™hs·™ê¤¢h ñ9»²¿4Þþì…(R†  8‡¯Á_Á£ˆÔ¸Óy `½ Ûx^ÖíbZî„JÀç¥"Ápc¦Hâꮹáy¥EÂH;øÈ†iD(îÀÙ·~ZÙ#Br ÏvRQ\f€^e€Èê—yõ´R4“ꛑÀ2 Z#T† r©Æ®ƒ2G–p* wZ¾Î$xG–ƒ$)‚”,}"MZ׌Ëm„ŽPH?0¡æ¡IdAMx±GåIÞpæ´²‰¬L84ŠRT׈ ]¿ÇÄÛ,½é¡öK2<’¼I`º”=æMpÂ`Yõ¦Ë FÍwäßÅGK³ùn“—Ο×ùˆ·MùÝIñì-æL¸rÀ¬p{9*ï ¥/«ÃãêmsÛ¼ú:Î[¯y«k ^},yÖU~ìm¡çÍÕ›üùiå1" ? Ì¢Ó…Ë @OëT'” ÌG@9ÚÝÌ&>¶rr¬ï$<ÁæOM+ΔGíÃ=èЩ¤}þô‰‡`͇‹ÁadšS ³dÞûà2À·qcò8iª•‚Ñâ`¥/ö%–t¨.ÑqÈ<·¨¡POÚ¤¡:c’¿ÊÎy£f&9ÈGÎŽ|œš™g¢ãKj/†*ƒAÜêÐÂG/V«ª€Œå“Ë&¥¯£¹"æÑ˜(/·‚ïf À0üøÌ™ÁŸ_6•ÙðϹž•J¬ „‰ÙOpÍ ô´òp= 'áñL ,Ø¥ g DÏš 8_äÏÿ4@¶Þ GB@vàl×>d'ÀCö%È»&DÎ ?m½©YØX šªÇ…ïO‚éóȱ)GÑôÙ)û<9ÙÝ䨺|Øâ¨­°"e] tKŒÓ³k¥‰!(è(l¡˜VöqK@§èp& Í>Èuœ[µ¥”<,: 9ÌãÈ€í^äPµ'(¬*°CÕß1“Åcþd)Ù†wònÌC ¡T^†Âv$w‰Ç[zA}AÌÁHÞ¨0m)t•(A8­WËõF¢ÂÇüOT§,1üdC»-)R½WaLLM \µ©ˆF¸0ß=«¿?ÉÇÍ¢iÕua¼Ñ  gÙzÞÞ‘ØL‘x( ‚'PسNðZW®5Ö¤TÙ™1R½aºÁûw²o¹%ؾÑrÃÿFË–ãŽÙ¶h¹7²×îb™´b•jÌ·È×RËÁ#öjÈDh:âV0%¸*˜Å-*d„·Æö¬ ÒÌ7r³,ÅyºÓ•*¾çrôÄ"e7Em€ƒ«Ps%²ú›N‚)°¨‹TŠ b"”B´èí=ëEË+¯ËìÉ–sìÚ©Çeò&äˆo%¥Ôb¹;D¬·e‡âÝÜÄ×ñ]ºÃ¢•wßm -ÚÃaSl;R*èÃg1Ú¦bÊcô”'©?è>P̰…”œÐ‡3l#‚š‘\(±Oúi›:_ôÃ8Â5IR¦âvž¦Ü¥(h—Ýû‡Ì„®"R€h<9ó(ñÉö^ 56ÓƒiœwWÎRØUn~èXÙ?›t—峿!|ØÍlÃß±g¦SîDVsÃÏÓi0»ŸÅû°s‰uíL>®uY°.¥U7ÚÆ#"13Å'õâÍ¡–ç°ñzâ7êP âb@NÆ¿Wß#¥mÿºW³RÙ›@*•¢ V ÇR³VÅ”»¯RÃíÚè^!û,îð¦ë£žÕ׃ÿ¨Ñ¯j»®=ë[v4f6Y~Æû› Á„ší"!%ÄT*+Ü·ˆ2Ñ•ƒN·ûûøVîë:%®b•û`&ê™peIZ~ª«B SK¸û{À1µÇªêGèýzš?¿ÊŸ»æ†çE 2ö‰¥æ0ŔƖ±Ô6þçþÍaÒóÁªÀžåø”äIoê¨5|¾kæx?ÏŸ$Wù6¯^äÕ|[‹ã ؾÕ2|拪Õ@˜ï!Ôê˜Ðº=…c“¢}œ^W\BÊæÙ¢kåðWÌóBQfžwaNªMql>¾#þV˜ÙïË«©TLÏhKáE„ÕÙ:v.› MWCÏ»š*è¡yÖ§á3¥a÷¼©©À([6þÛBŒ¯ˆÈ׆IbîNùª§ªêÄf@¡çä…e½l±f» ¨þI}‘ÃÓMßüV}Caà: €Y«òÌ×éù`…¨çÕyĈ¬YóiD~ÑDL[è0Ä_:-ªNç‹]î1Ã-CŒ±uY ]¹b‹wl›F¾-XxlϯZŸjÜϽ³Ã&I1€<õ+ÁŸVn•ö·ÄÐ1ˆVéÓ Š(ŸÓ ® ПeókÓð,7>ƒÝxV™fÅÐh¹•9U=ö¸c>‚„{ñò2Þûff#f)ÎÐ뇅jÎ~CMuèÑjš…¬U ms0¶­Cæ”Ú7L’÷ґ賫ÐUqï¤"‡ãõB=ð@.óÌÅvaßr>Óü'u>HÆ=EÒû¸º0o—pçJÞ1çSä˜þ.s“mœí aþ‡x°eN¦îHŠ²ç‹Ÿ§®m? xÕ•'rH¼Çxe‹þ2º¥N€Á™åULÙ–Xc+ƒÁƒå¼A] FéY}!–Ƈ@ãq™„ðœ¥ÖhÜŽÕǘ;£qŽfAbñ‘L¶bïѵÅC˜éOvÆê…r³YÆø°{ú­k§b’lw{Ë@ØŸ¦ä ÇRYY n$u¢¨~ ìú#ÙC…½ÌÁ„² /E•æ]bAIj¨y~„®äùãpýq¸¾‰’ãp=î?ׇëÃõÇáúãpýq¸þ8\ODî5\ŸŠ&Â}pcÍ$ý×þ%–Çyú²+sÏyz½²B“yúqeÿyú‚BÇyúã<ýqžþ8Oœ§?ÎÓÿqæé2dž~\Ùž³yNðã<ýqžþ8Oïyzî9O/§åßbž ÀF 2O?®ì?O/BSklžµåAÝÙ÷uþ$c±ÿÊŸ7ÕÞzBöÎá{üø ßÿœÑ@Þþ–"g«±©TÏáhŠû,Ö\y`t´!LZð7Ç…=L“ð{<Ñå¥|=±NF´Aù4þîî5ú“í^¼‹¥«Öó×Êz€Þ@øê«ú9:@?CmX%’VÎ6jk Äg“½/Ça{yða{$=~2Lÿ§wÁ¦àµøOÁcÄ^Ž]2/.3>}Nýõꎛš²endstream endobj 461 0 obj 4091 endobj 465 0 obj <> stream xœí\Ks·¾3bK—9Áûq´e%v*~I<¤ÊÎA%JeR”EI.ç×§»13h`€ár¹´\•$a°ÑhôóCc݈Anþüç󫣿>ñ›‹›#±¹8úõHÒÜŒÿx~µùò&H½‰CtÊ™ÍéË£ô—r#µ¬Ð¯ô ¼Þœ^ý´==ƒZG¿}u|"ëmjû¿&üûô@QKNQ©!H€êé9Ðx 4¤Æúí#úŒH|ŸGO›¾žGqǧG?™AØÍo°·¿É(õ r«o7W0bÌàô+xÿðü•KP*;yFì*qç£Þ^äQÎQå@pÜ—¶Á™qi©b¬~fj?ŸPq†AÎ>:alkE²'®Ç|õϳ±’ñŒ$ã±v4ž†ù'Jæ¯ÜdþJõñÜ÷Yò^ÂJ=¼€}@ÈP¦ô‰|ú_h<ßvÆûjßhœJ’†ˆ§°=`ÑšÁjeêM‹|(um¦v“ø»|™F8*§Ž‹D[JŸ-3z#Q¡qn¥Ä…K=¡¹±ub?³Æßûž¤1z¡dc`[dš Ã^ÊAŒ7ä ²´$2âç|†›Á/é[Ä û`@ÀFòÕ"WÄ’ËòÛ(Hh´åL÷Øã…S™Ô¼_ˆÙM²‰qÉ(ŒO9¬²ŠÄð:6w鎸O#ËJºh¢·è†@?A¿t¡/g˜R“* Á?…LªTÝfÌeêÏ×™h„ÐïvÅgƒN;§!cŠ½Ì›ŸÓM7úÏŽGàÁ/ù:%Ï$ˆD¤’wÝn2 3;§¦½}×¾H@bâëÄ¥Žç¿LW(l`>-€5>ù-3ns´€Äjº¹QŘC©SøWv€«fal™U¬ ²$w‹).³ÏNÒ^Ä üàUß'‘RQBÍU&Ói†+$Ò«@zã× Î^@ ít½Âà_͹H-ÍZ”NK³œ˜ˆ_f|)ŸÂÜÇM6°Ê”";HåPUÀ˜¿ù™_&-*©ä·m×âE}=â”\}$…‚ò³^²¨W&”ÆÅ“v8àFÍéÿ†ûPPŽ7\&’€¨ 0xí¹/ãšQCš­zùw“<ÕîUÏH"½°ý\fè!ÊP˜6×5®Ü+ðE¹ÊΪ2îM£wî—(3m–>áaI9¤V›Ó~öÓöú¯V@¸}ƒN‚ë‰ï¤rFF¨AºØ0õw‰t¬|@e 8ECLßµV§¬‹K Çàù´³¹V×¥7_Ôê6,w¨)>-ÂäÂàÀË?¤Ñ õ`šòKÓªHþPAúºÒha(×£¸œïå:;¸»‘tYÇW`ÄÜs°MW{^µGùóûüyÚœðõŒ~epO{p¸nã ×Þo®Ž i•ŸGîŽèð#DŽèÏòç›üyž?¯óçUÁò‰é{©«”ú‡ŒÖX_}^ š5Ö4.NÂ]øó`§•\˜’ å^p±á?VSÄÊf²¡gýb’¥&ÄI¥Ÿ$ ”A9;„¨9Á ¹Ó¹Ò¸? ЬxçÊOË@LÛ…«t¢±8PÐ¥gk!aKi¥ C§•2v{†f¤•Ê$ ‰ þ§€ÓÁšÿ}N34䤉•ˆMèX#Œ±’š0¬uÂlH ~£Œà&‰AäHEÃ|Jri:‰ö´dJh±ŒUÒPù8 ¢AÊ®þã±if¶?oÛζª9SX–»¤þ=dîW~>”:Teâ•k­Ä‘²’…_Ç EÿH”sþó1²Y‚\ÖQŽ*íOef‚%„‰y™¤Ùr£âl~«! v -ÜE68y 8´2GæËk€/qø È·“ÿ4ÝÌ'ùhMi\<ŒL*` óTPtYãš.Ä‹ ÑëEå4óò~RšÅ¥Àdå=•lÃ6C¨¨ÂõBUfyr0q’Ÿ?ž“g"à£Uph2Ûö 3·Ò"H4|vµ‡»ò”R ÖG(‰èž3xDéç‘=î9¡–5hBAªn½çL£·Þs>ÉŸ/òçM¾çd£ï«+Ïêè ŒÁš0Ä&0 fpÒRæ€ P½aÃ×ùèÞ²aÒH5&3¯Ù‘ŽãVHÝLumâ/{\õçc–Ãk.§‹1ê”éJú ˜¦œ5€ÌÂCv6Ü] 07ñhBF_\w{^wßM @V¾‚§HáÛ[Ñ(äz‘×M. ^q]:q½&ºMˆaà¾'l²JÁëÄü}s«<ú²™Ú?Ë£oòèySI˜ÞUBJ»ºiŠŽ„„{Q¥ª/ýߨ¾ \=ü“ÄðYäŽ"Òm„•ÜRb¤EŒ‘/|»0ÕÙ£ÝpÛ"W.½´:s˜)Ž Ølpð-ýhgØé@œîÕy¤œ×Ðy"A¢  ´L›ÚMRÊ4²O»‰„œŸ(@  ·»a¦Zä†ËƒüCä6žƒÕYÊЯnãI/‰äÔ±¿ÀJP›õËv‹W)~×{$eÔcºªÿˆŠë ã:— £±\’gž¼?¥¸/¡ý °ú:r‰ÆØ–¹¦óUÅÖiž(ØÀ \X«ã äY‡òö,A*¥º8Vñœͯ‰ÛÅÄ[&zć-âCá¹ØXi#@1Y@Lƒ[nRD_ãrö…7 .i?¼á@­‹ÕÐÄSô¶=±Ñß(78Ìý!R¡“b]çÓÕ„˜±¥jÍgx”ayñHW彊¼©!ôYE˜ínAÿ¨½…ƒÔ ·®ë3vvõ’Í(¼“…¯]½é!·ÛP)‰µ ’ŸJ¥ 491ßhj`´ ¼îÕ `u®­Ú2€)y§U$52Á9:»,¹ÉP–·í@\¨.AW’f¸h`΢á1€QAzUF–že,O¥¾©ZÆ$‚4ròHWBà¼Â+‚  ‹` |Zøô;‚èø‡^ÕÐÆ4»™¬ …ue™¬RZV'«)o;mNøºHáR±è…Å›#‚ÀŽi(½ÆæÜydbÑãuRðCŸ¨X¼¥MÚ‚µOÒÄf,‹—?âE+ñeÒ{glï€ÇiIÝBBµ3Ú¾SÀ'æ¦ÝÃÅGMÅí"ô/’2FSF Á*ÿJ³mq{Ê—ó:HÂSìÂÆw¯u…46úÏVꑉ_:?46—‡?62Ô†asÓÈþØP–‡Âæž6íìEËRÿÈÝÓàF;rÓÈþ€P¼P‡ò±;œ}Bá4¡p­¿{”'ŸGwH1àE–ÒA…waiÌÍc(…õ]fã—86ŠØAØšvÀAH&ùËüY#ÒFˆnà±À"Êžh£Ô…2¼nêÞû¦8/š£Œ÷Ïf ÉÊA5ø  {Žä´œÆÍžNXàø’$L¦TMÞ(w¦ÞÿØG¤ÚÝŠ»ÊýŸ^•”’òbl¤çÒÒ«HÀ«Æ']óÈ>À+uÇ Ð&(àõÎ1v‘ÀB¾tøg~è`M¿!»‚U­Àfïp‡2Æ£µúƒšÚš˜À98'æªiíéŸ;´ýWð/NÇú••»/Ó¨¨¤ýª–0¬ãtÑ–~ ü»†ÜÖɹÂöûXw®ßç}…6PØ sË3¯Êê;@ê äk¸'³3ä‹Ogvj}<ØóQäÐZ7:5媫5 g3®ËÇŒ]&I{U%;€6–Óhi&ÇÎ5—~7iSÞÇ åõZ®uØ–Î]·–ˆsÔl‰«Ñ[½çùsÄÕ\Œ²e¶”!äòŸþù€qfûE¦Qµ»“ô”l¢d4gL «‰ø½nI¿¥£‹^ÿ-_Ñ‘úïeI5¶“ÊV{v`{d ¾awwq¯ÁíC D:Ê!j¨:"6Û*|"U2ý뵋QÔkùŒÿóáCô7_fî áiY¥V»aßÁô¯ë)Ðéüßr’Æ™:,§á»Ü¤K, NZ kDÛ=TT“ŽÜTu]r¯¨F·=^¾oT›&¯¿ªØíñžØ+ù®—¹gO0[ïºàE"¨}k¯Ëžºêá$>¯ò¡è¦äµî\XÚ,C »xE£&¬öðr®”OøYFåqÁ]h”¸\ˆ­‡B-‹ovÊÖ—´2Þ°xÀ8m¾LÐÌ¡˜ÝÅÌ ýKÝ«šßêϼjµ8#öîoøU(¯%ª'3ñÆ]Nï…+~m«‰ën—@eÎJƒg¶ýü,[yã™Ô˜aެӋJúõ—E‡F”¨õö®6쇾ÒCþœîúý‡H qI¼Óê˜@¥MJË!¨°KPy›ìܹÒÍð´ß¡*Äj§š†Íj9žè˜Qzi‰0YCûô:=ðg˳Y<{,E‚ åBÈeªÂ0iTq­ºÞ¡ÃÚ|ê+›ñ%m¯ ˆ=·âÉùŒ ¯Àã¨2R‡:mÇÎoÈ M,í«+X<ùê)j¯EÍ™zqlï×mzHEåõ¾¿ÕZ€9ªS;U:ð¿©Ò¡aÖc*n¶hüΕßÍ\bðHÐöWUbÕ>‚˜b¯Ÿ¤ñ:~ñ€•Ÿ|]{/!†ÞÏVð›þWi6Â…ºOEñï#µP)¸¯›Ý[õÊŒ-XPÔ-?¿k;pæ6«xÔ@*¥ÏJð(Ã~ìfãÛ<úmsÂwM¤Ò·ÚHl¿1nB*•™GöD*|”•ªª'™£/jŽèó«re{*K@e‚«™eE?HïÁ²Â¢D!³ü·ÌÆ7ùó_¹Œ{Üâ>ói-ªç`€$ã|ÂÖC¢ùdÕõãê3ñY2·x¾© l²À› [àåák|­œÄ;É,8­@¥ä}(€Û¬ø«¦àN›ü¤¥“\/¾«F…§ÝÅŸ=Z=|\¬#ƒ©Ozp¸ò–BRùJ !^=‘Íà>òóô[V–]Ëœkv©Í$;gc^š®jÒXËž*·eÆÖoÉ£Ù.ìÛÄ\?Å;Ô{>Ä•„ØÄW)úîXí)ìßp‹zûEL·×k‡V ¤ëcܵâç âX¼ÜªT£r”˜ó+¿‘p·'Je¦ão”ùÉ5z AšÒ?ÝÌÿ8Pÿ'jข•·¥¹´&ãe´‡Äv™ t~¤ö´Å«ÙêÑ<>N {þ)þŒOç§€î^3Õ¥&kñÕrñû/ìRƒu/ø”ߨ6P µEÈ*¦ šBÇGÿóí Zendstream endobj 466 0 obj 4399 endobj 470 0 obj <> stream xœå]K“·‘Þó„DÇžzì2€Äóº¶Ã«Õ®-ÍÚÓ‡‡/™Ó¢8CZô¯ßL ª@ÕÝó’,‡,aP¨D>¿L<ú‡äFÐã¿/®Ï~ýµÛ¼¾9›×g?œÉøÇÍøÏ‹ëÍ\`)7RÁ¹¹xu–Þ¤&9ØS0›‹ë³¿lÝùN `¤Ò~;г–ÎJ·•¬Ýæç¿^üŽøààðoÇ¿¸Âñþpîíà‚Û^ÒKFƒaûž•‘ÒÃö«ódpNn_žKkv{OvÀÎÛ·ç8Q%pÛoâ[¼qé³å¤,Î%÷½Ââ—¿g¤_§/ƒRfûžºX£%LÄIiÝö6v÷&X_ðüöÛÜ7¿KÏøi[´ßžƒ”òzûù|ÎRÃÔ9vxË^dc'ÞHoOœ,Þþ™žƒBÚ‘° C°ÊjâÄ.„AH¿ÙI?/BâÈ~C äÈ›8®3Þ+d:‘aB–%IÉ_…0ƒÑ&Qa&Êœ„©­…éÁ¡Ҕ-H|ü©œƒÖ ŒÄ7&Ñh…¥‰N¦ÎAáxïÓ”@ƒDâæ.·iv"ˆQj^:fîÎÛߥgã”+ÚoÏ•Œ…È{­Ì M·ï·Œ»ˆ!‚ќª±Õ„q8I†1M¡~ïûsåñE©·ŸRüLtüøÕBœ‰U74¶<Ê놚³^ù‚'8Ýó«nû÷¶Þp^Dî ¢R8Ôo6INÔU‡ólƼ;ým"Ê5ÍG£a!U(5â娩zqNJ¦L@ëI©.ókï–Ê ”M‘3-°a2;|u0R£õá¿Ñ7=¹éhï§YŽlÕÎqËùÈ9ÎLá| ¡î×´J¡¯•Sb3à ysåjbè4ÓŽöp=F{AË0d lŒ=Ó¯«¥¾Fó>¯çW”€–nUö$NŒÜ)’ꤶÛ]l—øRŽB1é‚‚”Z§ÆÜ™›SŒ–:ñ)jES¨¨¹^p‡Ü–÷d‘Ç.„Á9ÉÜñ¬„›"‡!¶_Fòµ ‘¹$e­¹¡pÑŽRñhd5Eô¢ÐvÅÚvJ£A¨Ì‹+4'ÇWA##CW+¹ÎßPw3¨ ·¯ÒŒ„UžÅÈ^l¿ï¤pÜäøôž! 0x·j ‘ZßShî¨>'ZƒqGM›óëñ;N×&›),gjv®É+ozƒtlx—8kŒ ÝÊ'ý·ô!±2Ñ—©‹÷²øÒ€Ù‹†oÇ8x8}‹q¶ƒI‹«M ÆZŒ¡è©$šsǾ"ýˆ“íÀ@0‘CQ"ç…àÍ(y×Têȳ‘ ùü HîO‚Œð{šâ»–1 o§ÇoçÇhx:1ìÔ†A4 ÄpɱA°ÑçÖùñûÜá¶ÙáMîÀƽ̭rëu~|Ù÷m~¼™;´œ«wzqÆŒ…JÆçaG.‘àž‘WÓ„Çy×*J¡¾ ²RÞOÑ…+[z‘äØAÚ–û‰´±¯ð©T®C 7„`9º+ñn¡W‘¾¾ }™zãÑœØÁù˜n×?µ§ÐŠÏ“>íªüĸ%ÈÒ>¨dïf¥'5B,…Bч1–uÎUí”Ûì·,Ð-4¦ŽŠŸG.Wc¼ÊBIVˆxT@HV¨íh…k~Q{Œ9 À|Ø]¹–vaMä•·k·mÔÞ¡Óƒ·²–áA Ìe¸Ê ãA)ReA¸ )“ºv@U/™äÆ\Í›Ø$‚99‰R Ur‡Q˜BèÂX±6yzÍyÛÀîÆ+cêDŒº µÀñQe¼.(½ŒY¨ñzôKà‹ Þ²Mœº æTìÅ5"c+P vö‚J6·¹™õ8€æ*0×8 ~`‚ûÈŒ•à'ÖgD. \¢؅,y ‰è‡Xb¹pÀ D&'®« j4ŒÙÀ¢F@PXOamI_”v h û&a L5¸ËeVÌúòÒÈ.„/sf8Æ÷+íÀSõ# 6³–ï‰<ŒØ9 ?¬ÅÎSÀÜG$=³#0¥ÙOÜéGÃr6×é²²´œ/P¸á'º7é[úú! §,rÀRèMõI¡Á1úùóªÂQ¢Gcñ …» |ŸoóãM~Œ¬•aÝ÷E~|SAQ/v‘>!dÔTŸœ3„GæZ=:ñòõB;#Ç«jUñRrá´Ø°p˜mõBîm"C‡ˆU©4âMÔ‚H\*˜Ì/vÔ‘«U,h›Ê„lì¹Ça‹”À`×40’ vÒÀ\–)5Q&éªÔÀ(ÍwU ‘l¡ññ:?.ô!>¾Í#¬ëƒQ˜_(ŠMõòøi¦ìŸo74¬2„È}S”T^ò¾QŠ=xLcP³ã$RyÅÑ¢D]½œdî"‡ ç*MCä:`ô^O0õÞ’¹1á\(emµ–9OG+c^¦£uêÊÜÒ›e®ƒúÅÈi¦a‰·0ŽÞb/>?g]ÐyPTΫª‘¹Â÷ Je !ú\€Ç‰›4x%SÒ­†$­q½ÒU‡Ž_1…ß³çê]’ƒ…jq˜ÔiE- ØZC`´,¡,¢W£;Pv,˜ é2T¦´¹ lhˆc3ë±rÁ#VÌ w%ms˜>ú #òã1ÛÑUbªg¬:Žy4NIÖ˜VN"õ à^õ‚;çšåü!-Œ:¢¯©Ya!Ân,–òúa–å¨x £–‰ƒ´õsK&< øj8;¤ 1½®*)Ç'ê&ê£rT]18ƒr²‘±Ï Ž l;˽ÅÝ_±öÞR™–ÃÀüäêÀO®ŽŠâM !Õv?ýŠ—ÃHig‡Vf‹TŠPqí\9ƒQÇôrî*\Faøîâb*XoÊ‚jÛ»$ᢠÙ~JUe‚H«°«ð7ʶ+¤½™„1Öw1îñóå  2l´ ­Ö10 £;7ÜA ‚R`¹||#Ò`0ÑTœ³š>ðe³Ã³yÜ´jðÿt½mõáù­†r¬™ßSÃù`î¸Ìµ‹ßLg™~ÿ£ÉïZ¿;üžõû«üÅ?äÇ/‹WS:᩾«6˜‰¤¾ÊÓ¦;˜[îNø€þ‡F€ÁKŸú›&“®3“&ÞJK¼õF‡A–éçuóñùyiúR;:´‚¬qƒÁ9>öÞ±ÈPé‘p³kõàÕ$¼Ç¼QÎ-w¨Ix?ˆ4ÎÇ&~²Ô¸‘%ʀγèL†"»Q÷ ˆŠÂ‰Ø7…ÚÎ÷¼C3G|Û4VEe£½n¶²’ì…®ÿúkí‹“ 0X7ïkŒ_B»q±Í LB:BžÖ¢› M¥·yá’Ïä‹üHû{Rœ3£Ì˜>ÅÇó\¯šÌ¸i¾ö¬:Å9i}åj޲Aò9Ž£ókŽ–%ŸŠ£?æffÍL¿;Ža¬ûÅ3¬æRzü.OM›ÅµÏ¿h½32®Só1¡&þUne‹D—Í)UÜ mŽþɸuºÒ±Øð¾9AÆA-\à/PÿîÅQFi;ð~8Žwÿ2.é›ë?šü ôngœV˜btÒŠ1óù•Œ®y$m^q…£„Dîo#›ÐM3D€Fò•š´– "Ð Ò¸[¬ŸÎX ;|ñ'.·J' „¢[+—t€æ8¤£… 0#üIWÚTª!iáü©&Q»¹¶Qˆ½QBrƒrÃ] 7GœTG-Im¨ÞʨŽÒ û!éÜtEÆ-FV››©J–77ó•v¾K„oÍ©®in$*wõheô2Ó­"õñ¶¹â´³m7éü·6„ðÓ-Sàä4Ù;}•FTHaんžÇÞæ™ãY”NÝE[$Ž»ÓcêÂ÷Yð}N¯'®c×çži_ªW•c]ÝèñôäM§ÄtÛŒÔۆػ<§>/¥éü¦k¾¬ÎPòÝÛoå¤}|§Çå$‡†`m½I4~[ A×ÇA‰"Ú€ÚÞ3TœP;l­á›…—Ǹë3Ybð~Ξ2«m:KNaÞ6þ¬ÞóRmèÐMÉÙëŸ ¶¾]¡‹þ½“›ü (0Wlˆë¤`Ç-05™$©vé“h—RWlæ¶°b¥Ñ¤tËèZWŽ ¥õóÚd{ÛÙùY2ÆOnk|»³»ÆÞG °WÎëÜyÏãÉ×6Y5Ÿ€oÇŠÞQ¦ÎíÕm4M:€íƅDZ³Ï‚¼A5Åæ¨Òõ% L¼á Ÿ­…íÿÅi#D+ïè]á“6RÓaN:Ï¥8;›—pÑ v ×SmY&šÖ1ëAŒŒÈ¸o|þ7iÖ"ŸH·ùÍ!Ž›`oCbcCp60Gˆ¥N6–ºðë_¦g0T¯U'Ü¬Ø }<CË%õå@‹0^=Šîƒ!a”[{—æ$Bp¼ÎùžFo'×O*cãÜt—”X4žÖ–øVç´ô‡Ä0Yn•†%¬Ø½ 280ý“ÚÜ™wî¨bì½Il ñʱxû€§‘\ξG~1UOå‹+LÒ{¡PçÛ¬'¼¹B»‰ˆ²Á ¿nHŒKÛºxÔÄôÏ^QZo¸µžñ¿›.Þ„À®ïªeˆ9 /L†2^2]¨# :&¢%j^OdÙ+‚ d-/UOk‚ Ìó¬’ ÔsŠŒ"ß‘oˆ(*ˆ‹táäÓñòÚ¾¨Ž<‚ékß]9ŸØ' Q³ÅK]xð…Åû^&4n"·È_Õ|«°GÇW¾ ›I¾Àù†3ˆ÷Ìðe:@1£Šg7à ÍòND$$$3¡ÓÞð,ù3QVƬ·5=wÈLžÇHç|3ìÎGu,]Ú hã kºYõ~¾Ö¨º“‡ˆ÷ºÄwIZ3]YΦ{·âc35ñhfîŽFJâ§Û‚+ß<‰ÿô«“(Fªétf}âšÉ¨ÒaJb¹úrÊâz]?õ0«œ²iÝÎ{ c¥â&ÁgÌSýK‹Ô®e.eäè=ÉFŠs¸ôE¥Võ:¥Ÿà^½*´`®§tU%­óåY?ÙÎ’E•4>®ï¢E¿† fWU¶ïІv37ÜaûŽ2ñzI×VyL•âu*ŽSñF¤ûr7i„LÆãTIc¹©¾øùX>Ku¥pò‹%SÁ ÉÙYy•_@@+æµ›¡f‚¾ü@$w=×Á²ˆäÀÅýŠGåEÓK FlÅ]+¦Áù Þ¿Qg‰,˜–4]ú•«aò<Þ ääAÊŽ9Î¥‡ì«#^;ˆÙ#í÷²”·ë#)cNÉ 0„P¥ItþȲÎú5]̾gÈœr4GV¸84 ˜G[œS¬\-¶‘|W]# R!ìœìŸzCÿî_ö&7’^•¼ÆzÊ4·*' {"@>F"\”xñãÞšS1¡Ÿ×ǜВZ̘â*ÍÆ,ÏKR«…{äYíê’ÀDV} ÜSeTOÄ wø*I ÓÁf/S'\7)Š—'bp:q¡d­–4”éAðñC¥Íð¤¨ó‹Ü7\Mó…µNÓëõ» iLÏT%MÎ÷O3ª\¿«T9Z_öý‚ñÝUº›)uº­‚½Rú‘•ãøÛžø@?AuR„¢¬ä×7^Ó¯„˜þu퇊؋ß‘ô[:« DV¶"z‡©Çp­t9™¨WÞÍ߆.kõ*TZ9EÔZ|¤ðzéFQ;1¯C\'^PAd¥ÚÙ•W±ÉÝr5U¯—+¾‹ÜY¾»çÿ©Oª—*˜ !«ÆŠ ÏÌ‚ùq†ó<ûÂÄi3endstream endobj 471 0 obj 5319 endobj 475 0 obj <> stream xœåËV\¹qß_ÑËÆ‡–%•žÛŒçLœÄ™›“,2Y`À€Cö`æëS’î½*©ÕÝÐÍÛÇ …n©To=ŠßÇœ‰1ÿºÿ÷f£×ïíøðrÄLJ£ßG"þrÜý·7ÿe{æ4j¼ói”¾c†ic+q ãÙè?“³-΀U~r±5ŒeídkÊ™¶Ú999°2ÜrÓÑÞOŽ@[i'§døáÖTi`^«ÉÒ–ÀÛbô—HPsÏarFk振ѭùÿ»ó7\º:'™Ãåíìãb>à„¼Á¯~ÈàÏTRLvšþ:€a‚wF¿Žãz|…Bþi$µò b“Ìêñ 1J1åÌÉèÃBU”Ìöª@ ¸T[ªb?st˜Á‹ÌýnÆžgð¨Z)ù,û™ÂAsÅÇ ždð™Â›Œ=Îàe¿œ³EÌ9Û+l7[_gC @Pók©\Æw¢õ8 k]pϤ$ªVBqf`U#ôh©Q¢Su/2¸›Áó å5ýÜüŒÐ=h +Jk™6ã©L+#’“Œ%µŒƒŒ%àœ Dìe—Û€ÒLX!zõ‘°C‚ÑWºÈ …l†h24J]ØZœÞMXßO> •p½ åÙè 3dˆ#RòB`bÃd)tÄõ)-›lc¸S’y¯ègÈ/r‚«‚ =aÀ{¾DÕìE‚žqé‹ÐœÄkš>%~zê”òKV1‰:$½ËØ3H<ím?æ=M:þ䯯+!U/~À¬T‘¤’&¦§“§ý+³ól´CØnÐ0ìl f"ÂÆ?3g«"ó¿3H>{³Ü§‚Á;_ùTÈÓó>ý…Zg:NXWûT´.±(Ù'N|ÁˆÅÅ+›íȬtp“@ÂKÝ)hpHí]àTxíB„KPhFµÐ1f$r£¢pÈZsý8mH¨Ý´ÁÏÀ3p¦_´ràBeMð(2$Æ‹ M ¢¥Ö]´\PÙœ,€»1(nÙ‹Ï nC­3NŽqQg혺}qÒ"_E­ÃéŒ êº„Ì"ã¡ì§õ€³1­•¬â$èz4Ò]¦U8ϼ”£‰V12ˆJ [E:Ìrøƒ€ZZa4Z!ÒF@ ý  ‹'+8ÚBj Ão1÷eZ­öeÆ9" [ÐN¶‚mIí‡Ág÷;­{h©eRGþë½kü©cÁeo‚Qh×=uן&…`bõÅè“´4aT+#Ñ„&m„i¿¸Òo~‰m…Ò*æ 4h8÷4âžø92Š!Ï ¡‚'ào5H•ª /÷ {<âK+> 7¸„[—«ÂãMJŽ×ïe)L ‰%ˆ4¸‹°hl`DCÐm$`½–¨O‘Ѧ=BèV^‰T™ÖcV§õ„}—Á¹´±o3ØHëÂc ö˜O•ÔÌ Ì§Â[ vÀÜ>Ÿ"æU¤‰‘ÅÑ´Ùh¤u4Ô€"l`í(Bý¾>H+G]²±²LÊ•ð䧺¬®«Yÿž)\5§¸®ªÊļfÚùPå:¬A<­r3B‡š4º€Cß:%è³lcçÍ]Õb {Ll¯Ãk. ¹QCYs9žæPg}ââ¬:²x²‘Àè§±Ä(qgöº° e¯×c,? %è× ˜u E1©"M†T¡RjÀ€A¹ 6á"ûDaàâ­5Šeµœü6ÉØ½Šn¢pºàT)h܉›;<ä£9sTû€¿frí#&…AÿJ˜–„{·WÅóy¡¤üi/3ˆB’‡üÕ9U‡ÀoÍ“ãŠÕ}Än—çaC$­­ æài&ØÐ¿íÙPüª½³ö¬b:üêÔGµÛÔÙç›ig(´žŽvŒ”Áˆv:ÌÚ1’q¬æJ;+UB(ìeð:‹í™éLùxBtÖa6ЙòXX<œG‘€x•ÁC:ö¹zX¬Ü$ÕN‡Ù@;X¡9ÿ„¤€û»‡ó;2 ]ÄÏš¶±Ý½¢>eìIEa|¶LË'cÃy8)“¯3øç"ëŒKU˜ þ1Úyõ”¬Ò*g Ä*;ÌV‰;dæ1¬’”¼m Ïk?‰Y,†¨v:ÌÚ1‚igC;äù©º.èg%±ûß±T ¡±Â zbÄZ©Ç¬¡‡°3MXszXn Ж´¤Æß~¬Õöޝ™îâ†ðæD©únôîõÞs&è¡Ç¬¯ðŽ9yÛ7ÓÃmÒ×ÄL.‘û·ETKRqz Î(fâÛ ‰F¨Í€YCŠR ÉHÃSgÍ?4%3Ë’™å 1¨Ó:Ü/(»fMð·­R43€Á À4È$™$ê%—m³ Pe ع׀…Y §<Ó!²Æá"PÂ^ ˜5î†cÿ½–í5Òedx«Á5&p‹z—‡ºlj‡œõëèÿý?-)endstream endobj 476 0 obj 2887 endobj 480 0 obj <> stream xœíMW¹1çùsü­¤Òç5›}É&ÙMvÍË%ÎöâxÀkcòëS%u·ª{Ô= 3`cïã@Q¨Kõ]¥nI¿Î¥PsI?Íï“Õ웟ýüõÕLÎ_Ï~©ôÏyóëd5ÿãP0":íÌüèÕ,?©æ œ°æ^ƒæG«Ù¿×K)¬·!èÅÁÞðaqN0€õÚ/.ò¯¤_¼>Xêè„w~ñ¡•QÂâFæ¬Ìâ´ÆáNzé¯2õhðÑãDx{̼ÍC‚BfØLÿ9ú+ ¹|Þ ‡¢8ÿ¤‘ÎE‰„°tà•q‹eÂ+|bñÑ •Ôfq‚ ŠJ³¸¤Ñ[@ôoG€&‹Q˘yè+Ù¡@Æ–Íbh©¹€ï˜€ T«í$ìÃ'm{ȶÆqA÷ô±x°T(¦±™Èéöÿh>Ó¨Ým-’ë8¹=Z ´v!–ˆ\Ò˜–h_5¨…žÝtŒÎÙyÝ‚=üeKã‚æˆÂF×þ´w$5M­‚mg)2eWâ”ÿ ø0Î5ÚâRÜ&#Ti94%§ZÖRK5ÊCÓ0hp±ÒR$41ÝRÂÁw“ððGÒ ^ÁZÄ%b =¹.Y_TöC?ÄŽY®fîÏg ,Ô̇9=-mÐXÑf¹$7%Tƒ)¢JW³Ô°Ÿ¬ú3xLr5>-àyñçÕ¸J ÂV·t×Â;¥P¦½*sQc:×þXæ¾-àÿ:æjl †| “30Sä-ãó*[SbeªS8Ë.å°c}/(¬äøó€vƒAÒ[g šŠnÌaÎ\Î¹ŠŠ[0"ŒwIƒ~ˆF+x9`bŒu=c­ùY&豃+Ì,k¯·F¹#ç:²Û¶¾õ³SÍûŽ«ü¤„É^c2r¼:š²¤ÚÐyýP°ßð¨€ßðy/´¾;šý43BÚù ®gÿ<Ì•˜Yæ´€C™¯ƒ<µ¾=]òDh–¼©[“D0`›oó’÷_…XgŠ=çõ$ ì†Çŧ°±Q¯¬¬þ­€7ÕÇn's…ÁLŠ­RkQ¼}ã˧— eq”©ë^1\‚D‡™/©(R½JsøƒÎ¯Óãs&.¹TA»úèÐ5ß48®Œõk*ÌØ ¸æš û}+®©¢ñ8÷ÜaK‰ýú‚Š> ðf{_@ "šD*p—LlT\ûê #®Çw`) OØ>ûwIVENƒÕ݆H«ê€mNämš NÙ”)}b¡Ì‰·A_¿yÇÐÉ©MDŸnVP?5x+Uµí%ýIt^pB3Š9.ÍBÆbÆ·“?.öåƒcéQ+…]¤cÓ†u’ñÉf®ÃÜÇø°&ј€)€s¡*ÀìÂ5$™BÇÅž=­D/)­~:ôI/ aÖ –þÒc"ŽÙfñmÿQ(Uü¥RbŒÁŽŠé BRí K¤ Sètùca⺀«F" ‹gËudð¢×׉Ғ‘&P¼N=S~,àiÏ x5´gÂv`ê#£¥€¼vÛ’Ñ$ª|ãyCïe¹ñÌÆÃ΃úDz³ÓqÕdoîfœ®ÉÿlŒã´¦0`Æi0;ÇÑ2)>šq6Z䢀',à3™‰ÈŸç&k0;˜ÌàÙ>^<±lxSÀ×Õù´Œ;1ÍÓ`v0v\!~Fñ4a²Íñ„}Ügf2ìïГ¸ÉÌ&C àýÑL¶1ˆ^ðí –eºì±§p¨n:ús»)\,Æðhvc•麀«¯Àn&F# ï [Ìý­‡p±öxQWï+.«ÇÓ2Np!¿>éŒÓ`v0NpÂ…OZï‘“Á÷ÕDÉ\“&3»U±Wûv@!?v\}ìþjçƒ0\R¦•åcT+ÝŠóï³£gON,ç¾, kNϪ~Ø‘mU"x'ì?†MÔô*”ÅpƒÙ!†q™ A?Z ³Tʼ•ù%{S2L»œîÝ3ðÍ ´§o p¦@fP6 ZÄ=¬ ¬ˆ:Q)o²}rÓ;XÁ€•¨#l=ÀE=J® ÝñÕX¡,ć·‚ƠЖ›¡Áì` ø{s4ìËÛ”±)5w+0ö9’½Mþ¾—Ýò;í襈s£PrI‰RÒ~¥s%b„ëLA€wY‰ßV³*Ši³‹JÉ?¤×cÍת ¾8èkFYôCßà=íá[è&¾T¬ xÆmÕaÙ«u¯T·sÚÕKŸKWˆ´í®ÃÜãcYB& 4NÙיʗ #­vZ¢Kë¸ÐäºÏÄûÿ-àV*ΫaÄ3+½®bÙ&­g½øægz{­ŒàÛ—ÓtRb‰Í…´:¤ g³‚öÕoi†6$tD¸(Ï H›·r)´)™›%ðcv¸W'ƒWÕÇ{Î@¥P9ŒÁþ÷ƒ¡N•<ãÖ:ífê3qýØ*e{‰˜‡ßLk, ªÖ¯°¡–2ø¦ÈÄf5îöw5Ž…òÍ@”µ¼5¥°v úÅ+l£ß Õx§„žv¾³JÄÐíï™Ð@f¾¾Ä>®>6Ðsåžv”öµÅ8î5ë¿kkƒ¶6nùš”q¿Ýþ“*jSú=_ˆMäRã°ÙžóÄø¿)”ë t”ÿÁ À‡cœêË~¨zÍÉ·ì]ÝóÄí+çeÕÚLÀó‘Ö”1î¸_BóÖmÆÅé€Í)»úÅfÂíýo›µÿTf÷Øê.­7Z¸±×p½·M\¨¾v{t!^#EᬃÌn#XZZÅ7Úæ3 cŒéDÂ.ÕÛ—Ë÷î¦MèÊÓ˼Þ¶Õ·Ùl"Tå ƒQyÚÇ…´²ÙM<~ž™èFªþ@G²L·Yþá÷˜G:7W6ZÚkžÞWÙîÏû½­BÓäN»{X:óÀxPÎÓ˲ØPNx=`ãA7˜¯y¡¼Ñâ§)ùY$~¤gìÌòúõö0h‡‘Ð?£3rü÷ç Œ2½ÊÔe:õƒ fZôü=БÂÇ#é,Ý„°~ˆ›ŽMÕOnk­í÷–;|²®ž4©¤»SÆÁt À Œ NäÓiÄÉÈèä¨5·éD>;uc5rÉ£m8‘Ïý%=:<‘<"Ãü\æÚíüŠä‹¿dÎ „ºsñ‹8¼67f1ø,W™²3½skŒ£©Ó‰254Ôú‘eKAÑ:Á>_&W}c]Bçs‡ÅX5æœ&hGoñZ¶zèÔ`£SnC¸÷©Ó¤âDvÚa\U}ø‚À”ddÄ^§Ëº)F+7Í ¯Þh¼¸M2KËÚÔ]ÃxôQöpMŠGw•áØrÛr7ßBã•AÏηÐ`ß‚ÿ·ÐDû—Ð$]÷ —ÐØ@û9ÔDÓ–¸@/yÐ"˜>YÂ0sM?v¤w·KhH.ý0hN)cÍLJTòG_…ÿRÃ{jîv MÄ èâZÍlâ'/z¢!Hq›¢·ïkh¨ð<Ø54Ô—6rß×ÐIêýö×ÐPÉÆ¥èÖ×С5l6),ÆnɸÏ544«Ñ¬o,îe§ü;ó¶ïïÒŒ`'ºÖ¥²X¢q¥ÕGù‰n¡ñ~lìWv WhE5ß×{éOv Æ-Hô.±â{ŸåiÛÝ2ü§Ùÿݤ2endstream endobj 481 0 obj 3204 endobj 485 0 obj <> stream xœÍ=Ù’5–ïó÷ñz‚Jk_æšö„ 4Twt4ôå² ÑU.ð˜‡ùö9ç(•:RJyã‰"e¥–£³/º?ïÄ$wÿÿÿôîâá×~÷âõ…ؽ¸øùBÒ_îæÿ=½Ûýé H½‹StÊ™ÝÕó‹ô¥ÜIí&+ôÎ+= ¯wWwßî¿yp)&ëmjÿ#¶µ¶^ùýKÖÿÛÆ /ÜþYiÿëê¿a­È—RvRÚFXîê†&‡ùd°^Ãp„¨´‹û{œ"z«•Ù¿)ÝlÄ´‘¨DLkÔçÑaòl‘¶S˜ZyøƒÔ|£û×ÐmÝd¤ªÎu+íì‚þ^Ä–žÿþûü÷ü#¾Ü-س4‡a÷@€p°û·ƒÁohsVD¡3ÔƒôaÿS¯–y<õÓä~Š"V—‘ ½‰y‹ôåkl{ï‚ ÕJ¯\ÊI8ã|4ú²¾uÙVßñù>BëIZ3Zïû]ŠÒõF83Ü”Þÿëž÷ªayy£}H7H‡_Bª¸l%h­Û/@Øà QLÀ¯`2Jñ+©@‚— ”Í´òŽ/‚S]j©§hÝîRªÉ'Ó”|yüÓì¶ÂV8rpFg;w#©æBŒwfRÖði9lRÛFøqÌœgNt+K£×kèIÛûÓžm€ ©®îes»ôéæýãtäøÙPïr‹@ @[Ö9U áçíÐÁï—t‘Ò-›Òû_‘Relfã_½( û&0N·Ä0ƒ;dÐ}ž%¥9æÜ?õxΫ„˜ÓøŒ˜#ªœ\¥&õ˜@ M*8{ xÎǶpðýÏlÌ[Öæcª(YÓÓ-#‡wâ½ñÈ*r/F> †µ3a¬¹ÈŠ["eµÐ›ÐTÀh‚ëqĨ/HFK.`€ÁÂ!ý% &ŒõpSØŒn¾¨¹ùª4ß”æë¥ÙbzrZ-k DlÎX_§ó:¢Î í WÂq7UËïúèÆMQºPðm9;ú¯Ø$zqæÑA"ä5Ûb×Åøÿ÷H¤Ùá‚jð¡ÕÁž*'9ͯ™\šfÅŸïãÑEüû+"D­£ÏÐRSï$‡r®Æ=ÐØdÒRó¾4Ë€¨•ÀëÌ“5¹B{à!Ê<úmYäº4)Íg½½õvq©EÊW3å h/~ `u'í†xߥÍ7¥÷ÇÒ¼/I¿^š]\…6#Ó5§n1õÞASÀH%j4â¤9@/ÀL­Q~l :\äDj´8‡ ¸¤ï°~ZºAáL 3DÀt0“6NÑeZ Sv—¸¾*A&ÀÞ$@ôQÚ¦“>ÁÙhš—ßÙ™ÿ‚8° χ£ 118#]Ô.·½žá_þȆ“MáUÐ Ó¢Lœ.I(ø&„ÝÕã‹«ÿüvÿ÷AO ëÎUï+q&Ñ—[›HƒÀt^er88ÀöLH öp¬"õ;åMoÛ€öÆ;Åñ¾0}«Åä¤;žé×$ˆ m60µL¶ÙàŸl³Qw!Q)M6[ˆNw6#'Äb´qÖ[Ÿ&1‘傦¨zLKƒÕrrÄ:ªÔSšÉDê¶5žl&¦âqniƒ\'yWsò•¹œ–°FâÜŒ·"¨gd­-²Ùü¨äì} vS›Þ¸i –[ôË%|…ƒ—„,J+·ð·¿¤~ ­±Á Òt‚Y;cu³Û<3%UQÝÀR™ügè­™pŸ”'¡P>…!´ˆ}3¸ÜŽêH;`ûåïÙ4ͯøþ î 0É‘ ï+ÈŠ*6o?,“põ‘cÕ5êzF\S»ð‡¨30´óÚî,»ØÐ¹pKÂnª´?å?d4y‹ *£9ŸŽYGÒQ| ûÇØ”Ð`ÏmRk.Ó-|„/a;¹˜ ÉôÔÎ}Íô°˜aÜPâ>„ù>ÈiÑŸ1YPóÁj²áèyìUyÓ¹*Ddä¥lã {È3óºöœä\à48oɺ„êÀ'Ýþ[6‹a„ô/Öl7‚f~2ß5ŠÄ`C»¸z”Ùþ]IXú. uEè¯,®Òqzâ ªáŠÀ”båO!ˆøMœ¦!À‚?§jÐsö_ƒ @ù7LXUÈËÆsW`6Á!§Á Â5—JÔ-|rÐùÕøÐg¤p€_j¶~ˆÐÖψtÑ%¤Ÿ÷W#=Çî„ô&z;b€TUyiªëèÃ%LV®PƃÁ¢dG·¦{}“F€®ùáDkCdàÆQ—®EFÚ8öBÓO^׸ܘ!t©ZmzQYºœeÍDð:9ilˆc8(§Ï;­?ruóUÙoҌުŒü`Íhk‹¹½ÀµC™ƒiS`€p9À|m wi°°šxžVÑ1 |ìM¸>o§ö<¥ ÷jÝá8ÿ7ºÍJ1x÷ðòÁ¦Dâ=™ÉcÄÔ.ßÚ“€#„%üE_q°sçžà€wŒ°Ø3‘,Þ¤ŠK‡y"™'è§Òü¯2àaéeÍ_gçªw*½·¥É|Â×¥÷UëjgxÞu%?\¼¬ “E!8ÁµI—Îü?•ŸÕ"T‚ÛUC˜WìYiÞ.ë}ÑÝÛóËÞwöR󾽄vÀe†‡›þâè$Õâ—lüS—Œô(4`ÜI™ýQZG¯dχ^œ[} LÙ}àð5=b(nÖ•4[éUµgЀ&¤ÛZÆël@¡·g-ý?ª<—uØ&äs?/£†úEcÝôÕêñ˹Wªžh­ªw2ˆYßâ, ”l7ØàOÅåAÑäSwÔ/¢œë÷äqõÐÄÕîÓ5Y1V$jއ“¨~¸p¥8¿+ýD^dsmÄy, Pè§Íò‘Œ>ì3ÆŒDÛ†˜3ÀŽ[E¥iBw®O,@PÖ퇖h$ôÎr²-*ßH'}‡ÇüØÿ2R[?Â8.üIÈNtd¡$8Ø:µ~Ó¹À*(}9Š¡pj¥|‡Ûî=†Õ1*t?Š’Í;Ñ/ÉíUþݯ‹aš¤…YZë²vˆtYçÀ±ðÑѱs³™Ä0¤e¨¼Ø\>píûïÌ7:PÐù1¦rG¤‰Ð/â,o4bëhg¦r ã\ãuù- ¯åÈêd³w±ñ¨+@Vª7¥‰Ù8ôvðóãÕ) gn$Œœ?·imLàS"Çëûѳ7„€ÆÐ …Ú€¦ÄT†zXR³6ô°Eùúìêâ¯ì§Ý¯b÷ù…– ¨v&x½»»ÐJ †¹ôÜ^|3LDlö;'"Â äÆ„&áeJDt­jLMQvÏz㦾¨À´v±SF–ïÀUô”ÝÏ€i2] Y·ÆÜΉû÷âaξFý/fDÝœZ>9=4=}R/Ic­s:9#4XÚ¾e|¥†7‘42îxˆ““bDÝk€ÛX c6 æÃøv‚Ù`¯8ÂkUeXú*»ÊcÒJåU=^dÝ7à`‹Ô㎂æºðK-V*¸Bg–ÚTqiM=4AQÈS%}'™ «§-P äŒZr-²~TšŸºÿ¬ô~Qšß”ægk¦A_€-ìŒã¤;p­`A¶†¥ç ®,(f4çDæ5r­þæ¦.ÏýíÁXzSÙö«¤ÐÞªX£õs‡&猬!Kë=*ÍOJó³Òü¢ÀAŸÓz’hpÁL62ÈÀ8¬w½ËxM‚韋gä뮿„9u~ë¹zº0CÏ—(rk f´oc®šÐIJ8ÙF:ÜüLqÅõnÑù)°|ŒGcôO—tUz?.Íǽær‹ÊØÜ¢s2IueáJÇé÷`lªºÉÓ©£ñ{“–”-sÄ{p+ÌÕ=mAƒ±áœ 4N®9Ù}(ãÂÐó2Z½‰Z-Zɶ*ŸƒuÚÚ)HÚJÖ@OyËÆ¾JTq±øW È:`§jþi£y¨NF¯¥â¼°Eü^&Ã*ÈNð[G“}È•w6Q/I„¨L‹%² ºdcpä!8†]å¯6˜@¢6œÙÔäHËÃ!4ƒ°+ŸeJyr@n¬C@k2ÁQ¼›¼Šó1} ó“ú¹¤#ÂGVªœeg¤Ç„D9§)bz.ôJ¼c6P(Q´tÆeF-ƒÓP…3bæ;ÅÒ´·`zÉœƒHsÓÑAC€ÿª6%Ò:8»¬fœ‡@Óvþ€§¡›xÎS¼Âiá:—ŽÓ5˜@ŒSZÔx’ÊðUQD¯Jó/¥ùuWý¸éÓJií1r‹@ß½bb®¤L5]@*V´R«_ç×Hm,yš*o{ê›íüöÑú£LÖ”òΚD©nÀGîŸPSŽ–iS€­3Óu-gXï¢ßªM\&#gm¿vmÛ=É|‹[ÏÄ Ô•,@g+XeÂ#´õ¸ë4–ÂÃSœx¿¯`×ÿ(AÊ™Š¾W…s¶ÞHÃj¹FmËõŒÏÒE:Ýå tyM "AÏoÂŒ®f¤.¹‰x”šDÆ TéRôPÇÞ¨(¬8¬wmð‚@`Í1ñMî"îDz²°¤+躟 Ž#Ä'â h!¬ˆ©m,æžΑ/¦Nj§kÑ`¾¬©Á»ëö`©æ2†KHë'¬ùD‹ŽÅÕNº1a•I½¨8¥-ZÃ’ÜÒ°Lºi3FöåV*bªÐ¢¤?)… ¢G•DIâÖŸÀŒÑA€X4(C&½ôœ!©øŽf˜ÌòynX-Ø+©ï£a›CÍù;K>™Á¦}1L ðT—g¥ÉÒbn¶4&ep,·AÂÊ š³°‚o‘”ÕÕWñ¢÷«À álkÿ*tû•îØ2 b£ÈÔÚòYEgƒ6¸·Kæqcqjà„JZŠÖÝk»s3<5ö9àÆ1mvDûÜát<'4P8ð˜ŒN~<|8„—¡Ù/ˆ ‰THÊ×â5:¥"SaÒÿ,MeilÐB*ÔèÒ.=g°ÌÕÖ¤x²žœšŸv”üÌ8Ê–‰qœ½ß™qX IÚì“ÂþÖº(©÷ª4™ëó«ÒËÆÖžÿ•ªoÁì.¼}ôøeqŠ5ž^rLD»ÿnÏа©lÈñ§\)Mõ¢ —©¢Ø=u—œ8vïK/s†ìeéþîAm0ðxýÊa’ár”ÃD-rË‹ ²?ppËÚïðq™9À,=¹åÊÔwÄÆ-P®I©‰Îè¨:^%\å"©Ú¹òkJøì/Óúʸ<¤õ´ä¶ÊÇLÄ4îcƃ6ÒÚ>­övØ1Éc1ÈÍàok7¡æ<Üy`Ý•*‰Ù9&LÎ +;zrG‡ëº2:e³ §õM/f[ÒÓˆ‘6{¢†?HÄèì|UûÓÙ¹6+·WÀ Rà):ÓAû~¶ÐúRªß8pÞ@™Â—MÕK›°VÑÛœêù€.ï’Ç ì¹©AãòV¹‘¡ÌÕšUõÎ|®:Y»æ¿+šÄ(Ê[ð¤‘9¬•²gµ¼X5)€¿QêèÞìeíœÖ>…ØKí?πª(|â(š,©–ˆ²}ƒ›‰R ÀÕÉõFfÞ^×·"ÔbfµîÂÔ|RÜlOºJ˜¯Äâ±lRùŠX€Öˆv [—ž3bñølšÝðx— ­!À•æÆS9XNF—E*Z°úºä“Â[äL½Oº¾¨\u„†ý0¿Mƒ€ì àÒs†‹À¸É§&³Jk ÛýõÖ¢±ä[óøj‘zŸ­y ­4CÞÚAX2GŊЩw›ÐÑñ©,v …3ú} 3àëIü{dÎùÕÇÛ´fóË ¬çQ?ù ytÛ¥þ»²£ïOÙÑÿ7k‘Û.j°,Ì¡ŽŒq—§0E=® ®]ž4Zm‘å!ƒ×S™…·6öƒKÖcz³k3–'­p‡rW0ÄçwRÒ†ÉÇ:ðî:õsù,¡Æ`$ mÊ1d®á@Èv|tïñv< œõ¹îÑÈc »ºM} å ÛxLûԆ纼LgÓbóq“Äuå'à3ú‚R>)oF„;ʪCg· T¢7ND dp1mOÅo-%¹Ü­‡?& ížNWO¼¬ z¾,Í«î€^bçóUšê&sÌ7ÿñܘ/º“eˆ<©“…wK–)7•š˜îl„Pï§•Åwà•Þqœ iש ” ¯[šÌ‚m« „¶a–ü1r§p½7…-RtDµdUw°@ý¤©Æþ®‰Uá?êÉ¡UÒ1+9Ìs$v¬™VMûR!ßl žTŽ(ˆ @«ó£x 0\s×¹–oæ7øß" ¶:霖¢”蕽l§¥p¥STl"Û~¿Ÿu±½¢£šcí;WBŽJÊU&= {àÅЖ1Ÿláà:«–`è𮽫¿=ÁjÁ…¬97–žç{ éº8'®Ç¾Köz~[‡JæäzTíÃN‰ä[ 8\aé9#x£ðm_šÕ‰Ë" .Kó¦4Ù›îíKïi÷·Õî;?ÍÙJGz3 ¤GëshxÈʸáójߟ<âi•!M¿¦´¸´/[Ý@ÈÔ”¥yYš7¥Éžýú¥ÜnûDØ Ž„XJÇ–µF”Øä{[·‰O“³Û|ÿ êh¯å‘7¨Ñ J1Îaɧíþè¦/÷¼ }F³á&MM–k+H3G쩹MìÞU™‰]#sWÝÇnQ}á{|¿u|°w÷V `iÇ#Á0âúCè4°y虳÷p°è8èQ^XÇ™5£TX.[=Îb¾Âf!FSá0Z¶ã:"ªRôã-ôº2Õ>Gu0;ê]R¨µâõoZ­œTlóGãšÕ³éŠB£P‘“uõCÉçè&D«ªŒg•wµõŒKUªÎ•ÏÕ/6ñškî—_+Ÿä£OVÌan₇ߡ:ËÝÝÒÍ»\ mrªmã+<ûÇ6*%+mŒüüò#ÅU¸ÖøïùXJåšÆä_­ÞÓ3 *g­»¬ÃÌ´cJE{¶§Z•b°õð!°Ž)·®Ç9lS—Sù‘’£Ä⎛”ÅU¢ÿ(ïúPšržžèì¾Í4e½¤)Sш‰BJ]m?}€¿Ê¡}äÕÞ<‘yþ­LGÎyÌßÁ÷&LˆU¢1ÏW¾™“ŽÕRõÍs”)£8É'åu,)Ò:E9@×’¢<”EAO&´õ-½ZM~sƒLA” h£‡Ìáë_´àˆð¶ÞG%E°Ø@ÈQ¨âÈßâ\f¼I3‚¦XI´® NzÏÀj? m¸¯íÃ<>)dQ¡Ç¿ó„/ŒÁ]¯àáÆ¯²S75ÐëäÙõåÞ#(|í†<¯¾¼ÉpŠø8pü;A&0ð$ÕÒs† ,`Is"=%˜=DÃ~áìnSÓ•ø’ky'ôÍæàBzÖ¼®5Zƒøþä ÏõNÏ›m$Rÿ\º¢¯µ²JéŠuÖ!–mz+3(GrðÄÛ¡”½²Òyw´¹ÀJR­WÅR§ß|ÇlÓè˜Ä¸¼zбzûÍ-¸b%;’¶¼Ï—-}U¥–/[ÊÕeãOɪcTÔ#ª(æe¥ÿÀ#A½PgÀ÷s‰±?Û<4Â(ÊPë?UuU¸óí³DCÖûõæ!Ç\®èÏðÝot² Þ;|9#8=R|EW~i l&ØöǬJIÁ »ç‡œ+ÑþþFŠ¢s'<-eçÙ,½‚]3,»>”Y[»2mcXô–vÒ7×ÔFPÜÓñWÉû^—›.AM½,W)=¾ L.Ë2é%nMU¼5IR(Ô…áKë¼–å…l1 Ø¿z¨Š â¦õŒé'y Fû2ª7Ó½t þc¼)µãò+| 1z¼g›‰ù[â»ÿ{õXÖë”ÞaèÄÍùÉ¡€Í-Íe ½ø_É4Sendstream endobj 486 0 obj 6876 endobj 490 0 obj <> stream xœÕ=k·ußý ‹Aw í„ïG#HÇq‘Gc/Ð"U?HÚÕʵ–V–­üúžCÎ ɹswW‰kEqÈCò¼¼oNÄ$Oþ?ÿùôåƒ_|åO®oˆ“ëoÈô'óO_žüæhy§è”3'Ïä/剔rr'^éIx}rñòÁŸþé &ÖÁXú}jFÔé˵÷.þ¦“ºš.LÚ S^\Âßœ‹Ikë•?}u¦üd¤1§ï°×X…>½Jm'¼p§×0µÑÚ›Xu¿=;W^NÒã—0‡µÒŸ~À0¯‚ßÁ€€IÓ)&ªE^ϽNŸê²†Zz- X{q5'mÍ©+½¦Œ}’W¶ƒî.xƒmïá¼ÂéC„Nøž.ó*Ï¢–è89kOŸ’}?®FãòÁ9¸Š²ü¼ŒÑ°ßeçlëÏÉðeˆ §­“çkdXý×½\ãy¹þß–æ—Ø4Jj=£Jê½(Í¯ÙØÜüki~^fÐ¥W­Í†Y@åÚÏæ³ójp‰vªÌ¤„õN“ä¼ÓÔü²4ÿTš¥ùuÙû×Òü¼4]išµ¹k§¸©bÚÇ9ìmŠpEçRMÖ8™=zKî› !-Š4ˆ›ÖM!&*““pД=Ó™B¤C2ÎÚhVÌSeEïíkéª_΀F¬²2Ãä§ ù…j?y+‡3Pš»ÊÃå6¹àí6ɇw\ œ!G¢£ÉåÓM¼×rÒ^Š÷:³>½¬AÆ­¬äÒÿjÏšûƒ„Ó0ªt5À@dÅœÞÍ ˜š}‘9PfX[ …H´ÎG—¤Wy•gŒyò.„tJŠÓÙ9ȘIFÿî,È)¹ ’ΊHfEP­¼[v௚äåan±Sš…Ÿ÷laý ’‡eúD°õ$ƒÊ 2,ß#9Gz‘—ƒ £y}v®|-ì!ü„ «èdŸI°sü̽Dò7ø™z_”æë2àUé½ÞæájR!R\Öº¤ãR{Ù߉.çÝÝ·¡êͲÎgÔß•æ ]þºô~Ñc]º4@—r=Û÷gÀ—­V†ÞìÌ[m¬¹"A• F ZH¸=ÃÑ»uT·=g;áòDzÝÇ¥ùm9š«Òû¬4¿)Í¥IÆNe†o8¢¤æÓÍÃ(½Õqò“ö”õ^eLÑq„?O²ä A¯cƒ]XQ¢b:!tÊЮ¡_–Oq«(áÖÃLÜÆ7Ä €dáf™Ó¨0FÝ 4å¨i:äL†ö>Ë3('÷,Bù™„JL‚¸ì$ŒŠ  ÔKF_±Ñ« §?À2Jhý÷¿ÀÑ .ƒêFy<9Êo³2bžyIõïl¶e•‘ž­]ð‹(¬„Wü¹àðEwÀï+þüâÁ_€²'?€ö0i'O\MK¼„Àùo/|}¤¡_O^¤éÀšòÔTKÀpS-Þ5Õ M×}™j ÜdDóB®ÔgCGoÌôD$ô@²÷®Ï«tZ¶ð¢hÖ¯KóUi^oêÛÊnF*,À2ˆÆÍê¶•” ïû<3¤uJ‘S™&êÿ™¾…Uc‡÷'|V¼\µ“ÔrÔ'T޽"°Iª€æ°¡‹à—a‡­¤kEÝÑ)ÔCvѵ26I=ªÕOTÇš×(£'ãucô#HÞnø%0Ã{óTÜ!t<4ÑÕS!k3æ&ƒê`ë57Ç^¥m5ø ™že¨Y ÁcðÅ«3D*¼V=,ïÛ¸tŽ lé×FV0¨]p]®™É<Ý:cæ{!RtÈ‚y¾´ð“q F› Ì2ž38ùV1CÚ;^1£×Lè0,*7¿)ÒÍmØœ¦y‰“È)~Zµb)Ç BˆMˆâKË—’Õª¨af'üÈY6ÿœRqI "é³<¡p‘yÜVX—«sÍ6¥Ž9'@êPžØ%CÒ®NÛ#}1µ­Ò¥ß'iC Žög\e †ýk‡ƒ)£%˜Ü·¢?äÛb¯I¡CPVXðz!Êwy6/7Õª?4Þ!"èÙŒ˜Rܽƒ›ü2ó9òº‹ºòH‘u2Å¡¬ŽÜÂi6ßµ/Ci¢·=Ö8{_“k`H»¿…WÆL¤ÖÛü!˜Ø-ï\Y*Â߬®²¥œ?ÐI¸Ž…+¶Æ>®c˜}Mχ‡\Òð{_ÔÎ8›W;e… qòaKV,û½Y‘¦ò÷éW%ç˜5@*ÄÂ3nòV5Íá¶­éÙä ýgÝÝÙ|² ç»Fä²?I§—yê<óÇ&\ 5pÂ"Î3jjásddÙS-›:â¶8*xð¢)o‰Å^^ÄõníDG#qgIfi÷} Ìj·7n[VH½Ÿ—&qj’Þ¯¶ý›p9.®0k×h…ñÍ”a¸ã ZÅ^‹Åï[‹Å^4^7b±8ý£]‡,%ŠïŒ†ÅÉ4pnéÆ2¿¾Ì`l ŸÔ½eŽjЫª-Í"m,XJ}Ï½×±ŽŽÔs°$RœiÎu€D•dn¡“sÇh„SÓ†cû”pA“=V»Ð ¬2EL ´ Æ¿˜zL±ÆIB‹ØÔ‰¼ÿ€M<{DºúÔóúîÓµnœûÚLAû]² ljȊU‰^å%¼T£3…§‚ScÿÓ,âj œ4“îúBÑ9l£Ü" ~‹‹ƒQ¡iªG”]Û2Ùï ´¦Z<4Ì¢^¼Ê²ã¶È^ìÚ¾müWV'ûÈD­)sŒ{òa#< d½ø× ziœ­#f—sCO9ŠYjËP´û[MËf¿i4}:rÌÑUÿõìÜé0IÙªIõ@;XçS¹k@P|7pÒèüdáj^Ù9z§+vV¸\V'‚›¬V˜MÝ¡w4qÓ¨©03.£ µm8˜ ¨ç^(-M¦Í©/½¤™ [ÐP¶¥€Eñ^!34ǹ^ÉdÔ&!åì=™vºñ&À>Dí_hÖ«G¢ÚÉѾ¯¬nKPM”çªb€*û¯V»bU=˜¹.z¥ÕгâxOíf*À`•i¹±P“OÞrm¶VŽ"e5¬9J@¢ˆÝ Mâð‘©x™ç¶RîÀ1‰ÖÂ9¹û‹`Š–h„ûÁ$Žão À”ÐlàõàÞwØØ £Àl/·ËÕGÈbéªX>Æë ¨!@„y=“6 “iM P3òöTî DFHz5Z?d ðètpI$šFÃl!°ëÐ3ÄÒÇèä]ëÓ¯:/ WЄ¡±ê¼\Œ/½lûÝ®t?:#%c2ÉåãÙ§ªc€£¯-±¥¹†³Á<ÄPò 0ŽAl‰ç&åÚ³ÈfFð’qlH6œ`Ïal–p‹ác«:H‘•xÔ`ùWj”ܶÓë˜AâC‡bÖ¼^@;Y|f.”aTÆ'bÔÝiü¸Üz.6²†ÁbÄd!øt²ªö õIoƒ¹ÁÌJ³Yzpl¦¥àfœÞ­Ÿ¦áRÕb=3@Ì’‚þxÞ® £K½^têæ=vì¹f ( ÑÄÚ5³‘6L²‚¿`½9ß䫳­„Lozõq6Ç7Ä,ï‹"8Ftƒ†•€OC£üc·†›ûN’bÆÀË>äÛ èiˆ'5Þ‚ T²1Ö„›Ðå]c>öŠ8„7àÉ­®‘ÍåË ‡ˆ=~5¯“ARGgì6ë8<}ØY:zÊÑûa^ìÀŒ\/µ±>¡×'ÜÏg†_¢®‚\UØEmn(©ü„PØÓù@‚9ÎóK’ úŠéœ—ᬅà'Ï:ãÂ~]°C§s:–ü©cwÙ©}•H3p 8Ãe¾\‘×¶p Jq«L.ª+<×rÔ*Êñ,Ï d×;±æ„á"V²Èñ: •·œU€æ´=Ì›ÒXs“O–§ã¥Ôõcí»é&…Û %eõ°TmÉXìÁ€[ø‘+ëF‚+=‡ íO„öXÀp•®ÖI ¢‰èi‘ér™…Ï—œ±¸ÖDR¯è*q Ý%ÀkO!ožÝ1¯BF,›T]ÿcׂ– ]ÐÌ‚ÞK®˜ƒ(yÉ˹j`9JÆ@®`mƒ–{b –YÉäN/ì¬=·ñ?;èÄàOîð¾Tã®Õ‰qåI§pôy@MÇ“s<^#Tþ*‚‘ äRr4N Vý˜¯Ä§4¥TWkBª7C½Jy‰lÎ(5k¾Fz¿;IçšCÁ ðÑ…´ƒ—xpñ/{£q:ª)ØqRä/UíØÀÚíT#F„Ú7<8³7sèÛÉ:Ýrå£l‹›„ Ì©0Fî•¶'3½<5~5gäÙSÇx¹l£«ážœ©³Í(/™sw†VÓàÀÏmIS-ÿþn΢DÏÿ*µ¹Òà2Žk W†G¢jIJðÌ'•e&ö±›g²Â¸óe3µR”ªüœ—ÆšD0™¨a½T÷á$fˆ7•¯©®u®|µ™‹c7ذq‘š¹ò5*Ñ-|ÝY™UÀ"˜“a×ÿ›fkj¤yj*‹äž‰#Ò ¡ê.z —TŸ¸š¡P½²­µäU¬;ÜÍä†KgPŠmôc—¨ÂŒ`a†Å{T–¤ñ#Iø¹”Ίì>@˜àôŠáqy¯ n^Œ‹œéÌ”ŠBT)†NÉÄè§'“^jƒ°‡ozá‚ì'İ"§¥!ãR©DX^ 5L7¥€Âuë^êޜɉ”´#_Q§BoÎOù]ÖŽüsé`nmT ‘:m·Îå@*DÚ‹áF&EüF{|† #‹Yµ—EÕù޹³Uý¶ôµ¨8ÿºÎT ÚnXÕ¢шÁŒT&ìCXY'ÿô)8ß5Gàñ)Vþ¹ê N¼k‰ E±•u½ÜÍôïÞæàö®%÷Ó·6{G}Žð€mÀüï5S^OeŸ:†¹”Î5iµ)î©ýPï{7ÕØ7Yk06\s8dÇ)›¨ûHÏÛ<¾[Åò# ×Äx«g šðëH¼É‡·ÁO V÷úh\ÌŸ š0<šþõ*z×CtNc‚ >ÔæñÓ±<É%­J«ÕM×—£©ÈM,%dÞ89ß ïÑÆ'"¥cí?⨨¬ Î`B﬑½³X`}¾f\Ï 0tÌÐ&ûj›¡q¯Iz«ŸkÙòmH|fI߃orÌDl'(ã:øPÕŽ DÊq(38à„\^_L+9õ‘%…ƬB߸kÒqîâgKý®<<8p Ìš¢×CGGFÂZmms˜³Îü4YÿHÊØž9uŽÇi0Ýí)|løNöa ™ùº™‚HY7®&ðJî *9Ü56Ñ‘ôœ2CÊÇ£ßv@ L¢à?ç±ÌqÙr\ÃØxtxÙ0/^v¤zŠù¶É¶ÌÜ͉ŸrøG(Ý %–DÙ‡ÙóbEóür²Î°' So‰<Ι)š(—Òg¹M(Åì¬Ó4s²¦ŸËé‰Ú ‡¿vô‚h‡#=âÀ#iøn²/öçÎdIVÿA‹‰à×u¹}]øÃ jeúÄCÙbtófÃÈ—±<ã¤x¨#½µß=’Þ“ X´X2RZÕë6É=_nXìx²Ø B‚µôå2 ü/:ç{"š–Øà÷i ]?ÚR.Í%ýyˆX׌Ž4ùÑë¾›ô'/ñ Oªp8Ï ~bþhšÛÒwvzÞUHÛô(D_H›Yþ]ÕsÁo¦×'ÕÂêŠk×oýPC9I=6}F3YgÄ×û"‰½ê†“8ϳå°W©Ú2Þ“ÚÓ•}îۺɘŸ3n¸ãóˆ§aŒÀ·ñ«_ÄX÷fÛ4#¢ATbÌö˜Õù+ÏÜJV^w¹Ú±ªÅÔó­Óc®¦6”î» R,É/éÇk¼؆Ì$êø•Wü;kfÖ q–²ö¹€uø9?ÅIÀµùùé”o”¥\~tŸ¹ !¯õÓGüs¬•z\¬zL`=þÖo&­á‡ô:ž> †m¾£¹bø±TÜR$¨÷ëØ.>á3 %;´)’‰­vxó»$ φçSn:‡‚³dYƒðÙè¥î~¿î/À¥ÇKGƒŸ£h¢ÍOwô ë›¬#Ò¡o²Ž8|¶>ðõ«þ;vGzcðI柨7Æüdu³_t"WeÞ÷¥÷tó½Ô¤´¹‚þÏ] )þâMµJ§0½ ò3¦ÊmÖ¡ß°-§Q^úÓîî²=ÑΔô¾4Iµï/KS—棳ÒþUi¾\›½]{¤ŒRËü¬²³ù¼ñ®÷‹’3Z’ƒxZzÉï8>Ù¾‡á¾x‡;H‹¼ãؘzwØÞ¬Ílìí«Ûâ‡-_ùãî‚5\­Ù„x¡®7ÁŒéuxYô¡‰âÿ¡ Û›mØêçþÎçöüvç¶6rXœü3loþßÖËck›U0ØúOüPšŸ–æóÒ|ÈO½7¥ù´7Ãü›\X“>—AIsS£·C‹Ö\¼ ‰ß…ý<;†ýtI|n²¬êÁO:DáW<û·Aë¾Ô¿ê¢ÎÍ¡ú"ò–3ôIk[¾Güuv©þ¡ò½™â}÷ˆYšä¹¦Y¾§ö¯Ñe‡|ß¹ëÇÝËyÊw¨ïɦ–Ñ•ë;Y¡öw¥ù¶4w|ZÀ|¶ [—°vÂöÍÌ·1_¤b@ k„¹0zõÕu¤bÈ¿<ø?Ž­ƒHendstream endobj 491 0 obj 6716 endobj 495 0 obj <> stream xœÝ\Y“]7~7)xà )(îP¾'jí ÅCIŠP¦Š¢Ïb“c;‹ÃŸ§[Ò9jéHç^ÛY(Ê–e-½~ÝjÝ/NÄ'‚þä¿ÜÞ{ëwrýìž8¹¾÷Å=ˆÿy’ÿzp{òîPp¦`¥Õ'gW÷Ò—pÊNF¨'Õ$œ:9»½÷ÏÝÍ)N­¼6nw›Áz¹ûºôþ®4.þuö.c-_FÚ ´¸ÔÙN|ƒµRN‡4¸Þ“ž‚³Á̃»,Ò›ÙLRúë™,‚M£Êw¿>Ýé&­ýn_u[NýYi>-MF–›ÒœJ“ÍpNM-A©Ý“†X2ð­íµ”Ðîdr2ÚBÚâ¯N÷x /ôÎzrÎWtX³îËÒûœl& 6-ö®Ž{™°£]w)rÕÎÛ%Y"CŸdß”æ‹Òü–æEÿªó¶¬HÍ'¯½ßG¥ùÕ¦ì%òHƒ>ÙK1”ÚĪŸ5r ª‘SKC3_ßÃÁR(_µÒÁ™x4ám(öOHLŒ3>ò»´ŸGñ1"µ»#!B;Ú¢© ~ÀØáQúPP^HIÎiéf#.dï ±þ \ã‘G>‚6SR‚œ ¼ E1B2A9d™{ü§{g¿ù®-òÞlläKG?ó ÊfCž?˽GÙÀ%ò`3|Xš¿\Æöìà·FÉùôW=Û ©}Λm¦½±Xé²4Ÿwƒžg©N3<ê¿À;²Ê¾Ër4ÃJ.ÈÑy”'eÏ»Û|Ðu9Ï›i†‡Í¼œj-N¾-ÍËÒ|^šJóYÅÜ=6&¡B£ "´ç›£ø¥¹: þÙØvÀÃì´õæb-^Ÿ˜L¬žòfŽòá0o[É]Eù’›fxÖœ½]ì¶ =B Üvh²ž–ˆ ³áûs4ÜÁIàþ¾ á“wò/åËäVìbÐÙz o>ýtS Ñi9£Âÿˆ€Õº¦« õ–s¾9£4ÎédÊ*BiÜsÖañÁ2±ÈsἈ™i†œÆÌáŸø„ Æ×‘ãIÆøNrÆà¿b€Ü–¹½ª€Kޏ”psî=ü 4G(2KŒíÂ){Ò’ÑÌл6ð? oó:hÏ»ÁƒË®QdHa[.Ùblà™\h ˜¥“ §»ø}ÊãPD¢ZhФF¬s¬:㼓2Šÿunƒ‹å(°Úá³49ÂÐ—Ü ë­ƒþx2ÝA*`”¬xƒ­8Ú,¥Å4RèôÙiLà+¿{‘‹à¡ƒ¹p£›sÛ ðŒ?(æ¦T+F4ó>Î[‹Ñ;kT %C“H»*ÈYMÙÄ­§à;¥^,Ä,ÐwÄ ëüÍUêub3§¶ì›o¥S/úäìì}T»DŸƒ\WÏÇQl!¨Ö½÷’vÜÝôÕO2¥K-Ê©ÿ=ŽPAè!q)ÅG™oägó]ê&*  ÈÀà31îqˆöGpÈ(ìîpHÏšùƒ[8ÄtuHmt<õÝZÞªvî@†8JøH#+J’-2¢ éÕ–(´Áûc¼Ì³4!†Jߓѥ½Hé6º`<Ê¡~Y£+AHM*€ÖÙè"ü”:ÝØFà¦ô!£ëÑ.ˆÆèv\Rïe“`ñÅqƒåŒ‰ó½ïapª tÛ˜'¥¹òæP@ʯh$帎 H_Z•Ûüš=ÊNV(àÐ ½5¡•5æ^]ÜŒ17g#M¨©Lssã(ô„„h@·jR¾º0åyÞ&E¸#£Îõí´¥»OQòýn{刻"½8–A;”â^pv|f ÃXïàÿ=³Ôfü…dç`¿MMÜDŽû"qøã$bM—s ÷´´† eàô ôJúçÄ„Ÿ6ú7ò6ë0/â¯lµÐ«Ê‚­Íy¾É~¡àVR{—ºI˜;W)ð ³)л¯Š¨4â¢1‚t)!ÇYøË¼¤ª•=m»ä0¢‚=LÓµºÆv}Ä*ý+E~v×2rÿŒª xwoÝ9{÷}+ ».k˳¯h¦ õ¢)£r)㡇³L[fN«VÄîü©’®.!ÿ騞+–˜!".¹Æ=8å'æ4uÒc'1#¼EsH<¡oÕˆüùafÂRD6»] @a¬8]@]uÓ1-Ú}†¯h:²Ö¨÷$j¨~•Ë#œH(µã»ŠÍòwGÄf]ÌbË!Cˆhíž¾—É’¹YÝhœŒíSÀÑ€†\) z‚ŸŸj'1sÆa.h:‘(¸ÏË×v BޝN ²Š xÌgîd9ÈaSŽÂþjw\a¬c Tv\KJ#ít0ŒÓS@*Ÿ‰Úåü>ÍT›ô¤RäOQa•vuõÙ»i>#ŒÍÕ#FjáIqy#pW÷ç©MuÌ6Ñ:`Ì1õd¼¿Ø&§©ƒŒÊ êI*Åõ4".tÑtI> ÓO Í5fz­=zìϹ-9,hYÁé~Γõr¨°OŠM!ÓÞLãçG)ÏBÝvÂÀ³å]œ%ƒÊN[IŠsƒ€‘Ð3ôxj6èv‘E¾ïÈ¢bûޱqXÜ“o öbÙ®õ¾Åä1E/I_R³‰lhrƯ‹ÏûÕH#Üc“uƒ ²c %G“ÅÑ€\/é'k‰{Qè-™É>lò±•]® êE©¿¥Ñì(É'¹*è`)ªj^_(”n %ls[°ºÎ@€:™µØÍFlgÖ [‰¶'²á&Œ~pº\f#Ý¥V“öC,Ê ÚÝ<ÚTˆ‹Óµz¬Tµqw4¥Aö|÷’+5¥h*)iì]49ãiFåFÆÿ 6á(3À×òdšew‘Êöµ^?kpY¤£J‹ 1«¢![0ËTÖÀR04³qtÁ¼Èc¦|Ÿ³!MmÞ^5­ÊûŽüÂm«Ä¿5Õ¡OÈUr;Ùá¬ÔxrN6¸$Fœ»÷Qðgl‘_lcÏ=µ©Öê5Àç;EóN—›vv>JE“hÅ^)lj¸Oû"Í#ã/j@PònÑ®PŒ‚­çä–÷Ù}Ð[”ÞeˆßÜ_¦ÅeÌcönš[û•Mée´¹åZë÷ll"ôJ•¿ñÒ¡5F³.rvý°™±£×ÆA8…hƒˆ£Á)Qý= @…µþsJ³Šn=?c‹|É ÀFB>ñ±Í~Îf$_‹¤mÄ 4Ì?•ÑÜõ‚òÁEû(K÷b~ø2CZ ¦¹EL#*ëç‘X½A[(6Y›^ÝÔ÷ÉÙÕòÎŒí B[¦>¢÷¤$¶Ç÷B1¿ÑÜ×fÝ4ui/tŠâ®ýT.¿ŽI>ýö€ —dDzþbó‘2ƒ¬£AdÙ·¾\$Y’a‚Î×LRú@ךŽQXîÿ6GVFÏæ@ŽpÀ)kF’óÇTŸèºY©†*Ç”yI©xê©Çšíô¤¦ú—Ò“ZHöàEy«„®R’Ò`HF×£¼?§0)ò¨úãÃ&k…¼?ç-¥5¾'‚¸'v Å–˜>Ç-ÿd´ƒrðîÈ I)f9yPaJä²~„AFIn`“ëGqAóä kÈ®j—ÕbÂ&i´ ìÊoäb¹*ßÏs¸ö:º¶§ˆPÁñ4Rm.Ü?aÞжŒÔd&Œ×ÁÎZ&Tµ6D›7ÈøÝ7ƒ#‘l¹LJf{÷é«,ïO‚õÝfsdˆ`Ѫ"ª7%œ_û”š»´7z ©sßÕKgòœE®háð0ÐB‹cC²9´ØÉV6jóɤö•F"2òKùe@j%Ñi<…A‰¢uœµh­?N¸íGüB2Âzr=2I†| O¬D¾ñÎ)‘Ùžó©ß¤Y(µ•WtÞ&S“ö”&øiμ[“…ª,¢‚•컋41¶ùÄOØà'£™çÍuŸ+c¤êÜRZp¿(,³b®4Ù¥ÀΗnÖ´¥ùŸÒ ¥)JÓ”f\9PFˆ¯ºM¶D#ˆ%<]Ù5 ‚[gÙµÎïUS£Û&WÀì3/WàrÊÊUûù™œ; º€÷hÀc±5Z;¡+hW·“S~÷~b]Ìû,ó(‡3B‡37#'!BŽi!$ÙI{QÜñOÌÊqlüA±Ù3 •©î ø!¸YœI!ÃVÆw,p×0ïe†“°SóÙÖª,?_'wèâA‘7šmµÏFãÛy]»q™Ào[äé!¢¤·~#‹æm´e#Ó:bb1<¢› Fp6ùøF˜ÿú?5m˜jbÑ{Y“y$¾éKa˜-IõñˆzÝtv BÓ=\ØÜ‰È(¼ª’lƒüР´bp oÙ—M^W~-¥ƒ åHÖ Î|éaxßæ\g g=œÒäKÖh0lFÚÏqEÏ}+@™3ªº>XtÅz°J•d ‚ƒ”ô÷hQ’­Äî€ ö‡XŸ¡–Bü쎯R[Ð-%wß‹¯ÌÙUÀͶ¥ÇB ?‘ÏMeGøta¡D¡rþy;Ê'ûñ†³Íèˆ,ÆR™VV˜ ÑbÖªrø†ŒÕ| }ÿe!ÕMZü[™¶O^Cïkœæ_?‹à±ŽçÍGÌ?Ñ!E~prÖÒz¡äÅ]uˆ8ÄÆ¸|!c-gbÚˆrAVËp~òáoð cÞ 5·Ç¸“Û(œ©ŽŸ#¨h/P Õg¯—­wk],ÝaÔ(ËLÚë5Ö‰rÏšPšSq (¦ýñŽuXŒÎ°N 7€ˆ5!c¬qÀ&¯èÛ¾A•!K¥Yˆ"½áÞIóÐ×6(‚ö†8Es/¼ü £¸nϤ²fG!@„Ó´='õÈ`7n‡–§z‰ò˜ªmœ:ê~`]Ï3[òÃñ„sЀ©Ÿ!DìTGìÒàºØU¦Á+‰“jËòŠN1Šï ÷M=in¯ÄF‰êDZéÒ£?ÀŠßŽƒsæŠ^ëñ‰wÓÔº¹Í%Ìó: ̲NäÔqu£N‰aQÙÓ´9(S¤ä¸”nÊ&K¾U’õ…kÉ1± Û"‰|\×­ÊGÂä›_Òª~Á&%»-ZÊån—ór¤ºWÈ[¹ DŠº[g'%Œ˜(ëdv42Ìï¼EQ¹¨œÀÅ©3¾š öƲ]éd®öKHi¹L’R5Ú•±CNèÌ 3üÂ¦ÏæB*¹€²ˆ|ÄðÞÌoŽš)’“ǽ:ÏÓï³µ¿!Ža$¯’ ‹ç§%g ±€„ˆx°)ú¿ìF·e¶râ”mU<ñéŽI$K5|zÊúßfÊÄ€˜õŠõ± t›,7C;ÒH:\á` ES( £„mÀ öq?…ÂnÿX/K ç¬z[eÞ¦Ú *ÞâO‰òÚbð’s"tyr&»ëPƒÙ‚.X‚ÿJ‡ <Áö·úrU!ùíÔ tu€þ/`5«‹ÑUÝ$2VåO¸MX»7sN¨¢nþ/í·ú‰ÝÑv=#ílmÖ³Yµ† ÃÊã­²©ô–ÀX»û:Ûšä+8[U`r<ÂÁD'A32£âT ˉÊ,`ñµ|[9Q _²S Š¡o~óAúÔ¾–b‡Ûp/¹b¦Ã¾æ90s?Ý—pd¨Ìroš^Ü´/!Ùö°_¬x» x«Ûüºi¦G=¬·úeªÞc!ÖË~‡=â<øã¶Ëgì§ïºû½éÎÀ~Ñå²™wõvé²Û;šmýhÌóòÙmo“ÝxRе3¯g¬,xÀÿµô>V””üª£›­§áïŸÝû+þù/ÕX*endstream endobj 496 0 obj 5132 endobj 500 0 obj <> stream xœí][]·u~EþyË@³ÍûEoNí$uë ±…A’òh$¹ÖÍ’/U ä·w-’{ó#7yæŒ4®Š"ðƒ¶(^×÷­ éoÏÅ"ÏÿWþ¼z~öÑþüÉ›3qþäìÛ3™þñ¼üqõüüW¨‚Ôçq‰N9sþàñYþ¥<—Ò-6¸s¯ô"¼>ðüìO‡?]\ŠEkë•?Ø ±­½‰‡¿\\Z!– Õá÷A-!8wX..Œ‹áðÏTU ­£?<嬷!¨ÃÃÚÂë‹K¹g¼_?mŒ‡¯swÆ u¸æoㄎ«pÓZFlã4ý(×ðÆ>KíÉhtRXœô‡/¸²²ÊÐð^¦6œ:<§A?WBͦ&\¤&œ=|L5d &ºÃ³<Ð }8<©?ÜÞÏ)Uý.ÍÉŠ(ôº0ÚhÙŒë›ëˆäá{¨Okc”¤–šUú.¯;\A!Lël&Vù¦‹uÞäö¢µ¼¼[•뼨^7¼¬ý<¿øËƒÏÎTp´aždëÁ#’¤W0üÒ‰VÞ­°ÔÊá¿¡Î×Pç» åk¢:üÓ…ñj‰ÂnK 47­ÉnÐeRѺ—Yjc“Ó”¾¨ß<àKåI¤U8¿”Šzs2ü ×òÞhp’¸P?ðøŒV¡Ù\V×!qï—RÙ%šuŽ–$õm®@ÂàÖ©Ñ™ÌuݼlšøºÝ0ª£I4ÃÆQ]µ³‰#ŠÝËÝQH[ò&OBúØ´øü‚†(IÉWe#,7!¥¤ùøÃ^èê?ÂPót´Û–ú¦QüÆ©,u˜¼g}aB£Ì¼]¡û]jÅûPvà « (OÊê ¸S:ÔAj“6‰À{-Šø)Z›ú—‹R>IüV;_-¨~>F-&ÊÃçéä[A:z\CJ¥dYj#%µÝþrkG5û)ë›ôS§ŒÎ+Ñ©uáç·ãwGH'€–ÓÖ3Ÿ÷á¼™Zìê§®Ÿ?ÕO¨ë‡?»WΧ,È%*›O |Ÿ¬"ëgHŸ&z‹¥K•£Ô¢´‹ Qž_*Z?ÚßÜ"B—B 5©£å´3ìÊi£ tÜ­Y,W˜(W<“ð»×¹“¨ÝÓÎÒ$äá×,G’´–˃3‹†Ð–ާÚÍÁ¾™° T'mMsêñ¨c9uO“%Ô‡IÅV´"d½j5ÝÚøKV ¤³ìª C¯8jXþ"Ֆưèkçi; ê¤Çy•´Ô#@]w‹«P—MËÿ=¢"l7,¡—£Ã6E‚›”hƒ"÷6o)©&„žm€eÕSa;ÊB€å¨;Qy@:W¹Mêòama:‚\¦F óÙ³z 1v\ ¢¬­bU†k‹ÛFªQK+MšûN­’ÎíëT£Ñá'Ð(þjOVáÖlläïဂí;I-ó@?}pö‡3³{þã™8ÿÍ™Â-A;A¶£4çÏ©D5Õ[ɳ³/§NùVÀV§<µ°#¹…ÅK•ò¯†»Û¥Ï†Ÿ×ÃÒ—µXÁGßA,ØÔ'ûµR!ÈE[\ H{ìÝû,P$NÍ-誛tþ|ÞËUX^Õ`U73ÝA0Á)Áöª*zߕҊ]‹™¦É8ð]Vš–™Ž65†J-YŸfJâŠàs‚½ÍŠTÒ Ïá%rDGÇH†M,á£m^2Ê¢p^tZ7ù{d럨h4ìî­1$3`ƒ‰„=Êc .¬¡'Bìm TCÍ7;áQSÈ^)ãäáíæ•šô{›c2¤¯Œ%fG&535¨Šùoò ½ŸRd¤©…‰¹0õ—´vy¹PA°«¬µn|CœÇ‡VrÞ&ãtÏyœ.SCZì§›ÿ¶]¡ŸÐnDk˜Lí\PެÈè:í> G)38Ív8‰åWy(Ê%÷›ehÈÖ,ÜÑdÖêe¬«þ ˆêÈ-Ôdr5Ô¡ˆÎúdRkÉÔñvujíÜ8‰ƒõ¼ÏÑi^¤9ê‚.Áq(g»ÏP¹îx` À`¤¸ßC¨Î,Ý[j×5­<ÎÅÒš½s$UÈìV†Ð·v¿¥™²Öü,ME:ÔrÇJ­~k¬ZI¬Ö¢yn™«2 ãM-o™çtÍŽ$ç•EgMáGy¹Û4 å‰Ùïiy¶ÐùT†KXäÖAê åé´Üx:âÕ[~/{0LÐèâ¦}dNWû2 À-c†Ÿ«7¦í#?ÅT”/iíãü…vænïvf|žìuei³r±#IÖxÚ•ŠžðR¬x¼#3£ùan|gë40éyyL“ùƒ*cu³â ?‹rѽÂÔº"RÞB úʰœý²žÎ§7É1á9¢ FÞ#Ôµ;ïÛ^aÚ±VÍÝîoYû乺RG é-ø7 ƒs|ÖýUÞ,¹ùWPu¯Þ ®áƒiâBƒ ÜšïÐá4aü°YØ£ªC¤€5i¼ÐÇj÷뿦$ÆB³O>y½™¸C¾a M§‹Žóƒ05ˆOáj¦ò}öBj¼“·DlF4¡òåˆÑx}ç]IaÎùï™$ííͪǛ/t¿ßèY½ÙÖé’ñàâ(¹ ëxeÍ£dW{ýe„ïòSMÇ#ů4ÑÝÆÆ!w,©ÑÄ,¸ £ÒIƒä ìKì>ý¡áÎg„k½V¬8(5Á(Bùcí&ýƒö‘αڇDÒÏòž’ÿÀP‘Ñ/´0lóРC¸so Á.À‘PáMÆWAæ`øómÅTR¨†¥Ëáh"ýŨTdbO¿×` Ç29ú0ËÎæ­³GÀxL'.˅У%k£5_S±[âá7IÇhE'h¬y:HãÆtkÿöqŠHZœÎé'éœXãâ:V^hšnƒ€lEP\ˆ<] Ö¦Ä&YZ7fHINÆZ¥ó®¼¹“4ª”BhéozÀ«“¢K‰›dú’õd{z¬€jLî!) ‡„>ﯪ†*üŸ¬°MŸ$”'=ƒM&^C-z"Ê÷™³Ø…eããÔ‹?üöb j/EÓ‘jýõ§²1¾ Ü'1fÎxBªñ½Ü#%:ôb½È]5îyb LˆÄ.g9 V`@²rÑX?ý°tжœŒ¢OSër¨ÖAUóVñæ­ùØÑ«ZH' ª^ï§Žy²iêßå_†úÔrÂlÒÑ äm]ºµKé"j߯òøc#AÜž#Ë’%Zw‹7ÉÙv’O‘C›ü{•¦eœš0Ûs—ø3óo=Y—Ì s {s"Ô­S³²YEÜ]n g~4ZlÙƒ×%FM¢å‹Å œŠV-Ø`³$l“ÀOZŒ©¸Òï”8®àÃJÛfiÚ{{ª·<ÿZyâÞYŒFTºe11–nðø9MTÏo$¢·äÔ ÌÍ]PÆ;pþOyn9ÿð§Ï2 ²¥qgŽÈ„ÐÊôæWâ-é Ìå]:"¹Y æ“‹Öpq°ÁždË7™æ¡á.bÇ)Hù.pœÆ|"/Å+æ òŒþjVНµiñ9ÛB¹&~ólÒËiWu 8z¼îÀÑ›c<<§OÊõh£ˆ¬òëUír[*C‘-þ(¯ ¨¶˜à>½OGîT "PÝAñ8HÚjËv8A»)«"©äÓ´¨UÐfmv ±fáŸuÆ —Ú÷QqÜBpö£·œyk{‹#'¾ƒÅQ~x¢Š;š å³ÏŸ7Àb)1‰înl»z×äŽ9H妙÷Î2¡Åj`¤¶÷Îú%x#_ŠÏrè+&-Ù Ž¿¿Ä˜›óER ¡ü,y>p`“€tM£ÂÒph ½ãø Ù¯®{¤ –ÿUÛB^†|íº°±m£+$ië|{¢—{L÷‹¬Ð$Ö?F0ÔGdqÇІ5Ôc‰Ðj¹ WdŸpN¤9$ªlµ¯3Ÿã 58K'øsË¥>v:ܨËä\—…ï`œ¤Ìú·k†ÔŒ@E˜&€€Ç~p·OåW-m9Øu mˆ‰’ŒþksÒz–­”íq¬n:œ½ò±öèõ]ɽkB¾oY]š®nÆÔ—aÀ ˆKWðüÞFãç@!™ˆÃ‰×»I§0Mü®wÓܣÈYÊ‚ÛÜ0;ZşIrOWõ÷åYý…£™^†j¦ºu\C”7ʽ»¸ ;ý6»9Ëïj¥€o^DÓö‹O×tA¶MŸÌ<*˜†ŒÍÉ×·HÐ"£ÇÀÞÝ” µésîLrhÆ ÌuL;pf”˜”j`yƒ€[d]ð¿PÂd,ß|²iI Œ ±#çø¤ BŽ«Äå-»9?¾Pİ„’³L l$C/1à ÉØ¿•3ºVÚ~…(¦)Þòv7ËG¥4  ‘9ü„Ô 7¦‰Ñ6/d¿®Æ®™CirPããZclÐdœØ>ÎÄyæ|»Æ÷gV@¬¦¼hó>±‰þaœŒ‹]¢±:¡°j#sŸŠ<²+‘N :¹Ô3ñ›vN‹ž_Ϙ"_Êp›MÞ[zµ;(7¤[’½«i»bC™¡Æ>»¿¨†Ë-˜‰Ôýªž|¬Þú@g–ºÍ UÞð"·¾ËáÃT¥v¬‰6ÞÜ`d4Éÿ»|Ì™z;!û¦ŒÅµ·^æ…•RÞ·JŽÞaÎNã˜Ý÷5TÊ H¡á£Ã½{…†Â)ÑØõ “(7ÒŒ‰`ÕNÀâœÇI¶t°qw‘©Û¼„‘ü+(ìCÏý1'ë8÷7ü¾F½ìOÇ(JIC´+÷çkèoù„ø[LÒ{Ì6Œ.̉îqx;.nK¹Ì×Z+£6ʃuÞˆM¾Î¡ E+gâGÄ» 3^rµ=Æ7KÄì¬"CÂÙìc¶2åB³ \3_gçµ:É4zZ›€Q½èHF••ÛÈhŒkŸÓÙBŒå/ùyU¬þXÿýæ÷vv¹Ïœ%©û@|Éfë’çðŠ8Špi¦&TzkF¿”`ôŽr‘û§T2Œþ ´&& ЬkÌÁ›`;8œXEDŶà;ÒÝB-÷NÊòˆ™ÈW‘½ý}!þ¡Ž­klöÎÊ<$éÉŠ™ztÍU#|ÝôÙäTÌîNaùüM¹ñi<áÙËÖ¼TÚñë=}ÒßRuNuZ¤~ã<^Ô¡ŸÈÍ\é{Q,u]{«•ÓÆñË;²91“7Q ]ÿƒÑ#á´‡­ØšŸ¸×žD3xw˜¯I˜>Ó`v3õHÔžîÑ6)þ8šWÛâ±çù»’äÛÒ^p A’äõƒ>¿&5~c4Åþ2£žæý5C!fd3Þémñ[ }~„K6: õáðG=Ë‹˜Œc_¹~iÆ?Ö@Kä g~¯ÑÒäíà4½ØnùãÛ¿ã—„V LNòáS7Ç¡5ùñ½cWJÇqæÈ‘_ræ!Gz|ëøƒ 4>~ì¡¿iÊïsã½;äÐd÷“Î̯W‰ôê»çÙª,Êý«Q:ÑéSc ·t–—ÀS7üÙæVg!wD÷·hãë¼ÄdÉÜå{“Iñ7DÔS3džò\—}ç'µF¯<×eHÿDÕaEÛ£îúXø€»ßWÈ<}_\ñq,I;¿#°Œ3Nİ‹á·uþËzˆ|EŠ£C¼*61æÉóñ9F›ß9<­ðiÈÑ¿K0DŽ”¤M;úaƒ{7êr>ÐZõÈÁÅÔß݇ó|•MÉIZ½æHxîªÄpîú‚cö»‡ÈO$=¼PŠOjò‚ãÈgÃ÷€t} !læ½ù%¬Cºi)™º¡U…gsÿav¤¬+Ž3ûª[w¡{µºÓ­«=ÂWøyå›tk°'<”]Œõôød'z%zn|V÷Ÿý}¿ëÝw!ôYÝÂt‹ Kªé òƒÿõÄî-]bãJõ•Ìî®ô¸Ïô½6ö3QÐãG&8…L\\øP>!ƒ«c©\ƒïùõ>!Ãêô.}BZ8¾²ònú™=ÿ~S¢ }wêYIo£žùÉ´àïF=ó¢iÞA?ó.x*þ)7ÂwUÇç:?ÍÉÅ-sn_'é¥|GÅ8§Ïí¡¡áCŒ¼a÷þÌ{1r³ð½„wEðÙŒ‘Á UKÿŠ8g?Í/yÿ¦Îž•8lP§º%¿OnÂ9‘ô¤j¥aÚìö`éÎþ帠endstream endobj 501 0 obj 6107 endobj 505 0 obj <> stream xœí]Y³·q~g\yɸo>·Šw8ؽɎäD‘G¢Û•âr¹DÜ$’’hUå·§»™ù€Î=—‹W¥ø@Ôh4ýõð»³yRg3ÿ)ß{zãÖ×áìáËóÙÃßÝPògå¯{OÏ~s›:(s–¦äµ·g·ÜÈ¿TgJ©ÉŸm¦9˜³ÛOoüùðçó‹y2Æú|ž¬1Á¦ƒÚš=¿p³šÂ¿áÎÚºÙùÃt~aµæÙþ…:«”‚V‡KîaýfxÆm\ŒúpÚߟ_¨iö.¥Ãc˜ýÞ¹“s4Þ·¹³Ö4ÈKn‡`Mˆ‡çQÏxv3kwª¯üCc⥇³‡¯…l§--aÊŸõø’?+cC¬é~DíÇåÈD4b˜ÓD<:|*Œˆ6ù•À`«±ŸR™Fг>¼€A #¢¢eù³ d=Éû´[x壎‡WÒÛÍi6‡×5[ÖU¼áŸjê…œ}°ìk޳¿:ÿëí/nèh'"Œdìö}’©†jN9·ðÕèàË„JÓïlÍû¹³öþp7Ó©?öÀ1àó3è|z ݱÏÃõ§Lþ}v¡ôä¬Wy5“×=Ü>çUØÜhÓm€õ(…ÍÎSOë'íá_e:Eé½õµx¼½›¼7+ûÿ s.d¹yòD Ñê gPÄ ’ÒH‚¯y:ãâ“>|Ã_é4Cç™!úe,Yíoóg\¬Ú¿­„è9šÇBûf™ÈÇÿååªDìy¶MúzÿÄÌ$¢iÀ6bçy´ÏgÔéIyCöÆ;bÓåÚ7s©Q‚zž’r —˜"c&O‡ÿlLÞt¯q›ñ¿äŸ¹i&!ò[¸5A‰þ¼5w}i·}ã}0a"vâ¶ .í™¶evrÞ¾âÏI{’kZ†Ž$w.ñ!çu&e‹R—“ºM»5§íää#2‡ivöŒ“Ó1e&Кcô0³¦ó±ÐÃQv>†LŸQ¾Eþ¡rú=¢‡Ijr4ѧ<8‰2éã§¼}sˆnÑÝò; ‚öA²~`þXG¢Ñkf3E¤Sµ4k;àûù4OÃÍÒÝÎ^óŽxxO‡tÕ^ßg“èŸK˜zăÎ÷t Æ !TÏt(7¼Xæç%½€ßáÊQwGнMuœ+¨sºÚWZNøIjŸAVûÚù€jÿÓsÜÈkD•þ•,’¤%ne½œ5B[°ŠõÔg€ ¥M»óLŠÌ󉤙=­½Rí ñ€>ØTw¡}Nø ~•‡AÙx9šÍ B‚×1MΑŸYuÑf1O¢¶iÉôèþT6Ù¨‹`¥4é,8 žUjV ZÉê€|*—È.t‡¿˜Ë𤽯Ó–_ê™D‚”vÌ}{øwÑîÞ9š³l—9_é¡ÁD¢Tžf›nQB"±¨îe¼ #w%\¸#p‘Ü”ÈǸ í~.ÌIpArêmüHp±ŽÇ¤ŸRÒ-0¹Œ_À°LD¢w£hN:™{RˆW&þtÍD‚ÙNÈÿ£aI#Ù!‹·§ÑE•æ8Rµ{íÌKM'-\ü¥8]~ dƒ|]¾L"§âÓŒ}Z›š{÷3V„À2»ˆóÃ."ÁZÑÅzTØjm}§«ÚËIöó¬+|xoÐ2>9¤»ÔlÞHw%u:(,ºî²Óºº¿è3ªõÙªAI&HÖ&“Vc^~ø€?³€¨J?>zÉ]ü¤H„â¦róê¼>ó¬J¢ãÕ‘£I»’ÎÈpW!…¼ÈW2­Q);`ɬÝÙEõ#À†kóØ[\Ÿ¯2Ý„v•v~ 0sdÞœ‚f:fLnÐŒY£ [ÿ°¢ìèwUÅX}-þ‘Y¬ÆÆ?⼸Ù¶ï,nb;½4Ñ?ã%Î)ÎZ³ñ”çŠ+—ÄsÉ«TÆÑÒ¼xòçʾèDè ŽêcøáŽ“Ò¹ƒ½ÒûW@IГËQSäÓ(o·¿³Ù"ÇW–}™B„6ú„ÓÃkËÐW7eoÓFÓñ iw{n¡ðu cãî­è¢¾m É®"ýâ©Û •󺛰Õ²L<ÍU´§`¿NlÅø„ý<»–ó5‚a@ÚšPíÀBvãA>_v ö•-Áã]>“‹.V+„•<\`Ù 8œ­BÙè‘<Ûs‰ hïÈ)”tÂcø°†u Cfö㕦?Xd0V0Þ†VùÁEÖFÌúÛ‚õ†}¯ëQ„qWpŒK+ÙXÅ>;œ–aš8©— ;¾=`EÉ@Çb3Ò-:“ÞÄäesOÁev^Qý÷5‰¬ÐÍ¥ 8ÂAVw‚;7„ö½¶Ïß‹¶ÁÔîÞ´ ßÓë‰MZ+?ŒÔ3éuÐ…óÖdßpÝ=èÂîÞúý8?vQ ý¨äÏ]»ª]ˆKš'À@<1¤š èº0ð;‘3£SŽ“I¸6årœÉÁ¯¢V ·o@¯¿Ÿ&P×ùŒJr䔩5±³BÒ…„`œuÙž@VÁæ×kªOóx*§^ÖØü®IÃpïzT¯^¡aÜ •ŽÆ¥ÃÙÈï¨Op«ã~¢>C6“BQ&„™sMš]Œå$µÑLãé_{þ)+÷GÝÝ€Oޏ²™(ƒïs§Â ŽäEÞS3‡%Õ¤X¢•?ÒÕ廿@Ü^‡‹WWö>1{ Ã'Ƙz81 Ñ‘1·y^Ãd@wÐd'äç4‰‡ÑuJ7 L’ÓçÖT3”k½®ŽÕú3ÔaƒÏkð¤Àß)KH‹pÝ‘ Ê|U ¨BŽ,épóþPÅŽ…¤#¨Bn6Ïß  ÂçëPñÿÖשÒïd ÌQ/;) QE><ýònФoS‹ŒÞ%ƒãu ÉJtÀ(’Ó F°åñןi%‘Æ ]ú)7Ño1À€!L£ÆÐÉ$aDë%žµõÏávŽì_æ±#aK?ÈqŒo¥iBª{@FFãŠ@]‘ÔÄÛy]‘VP&,¥xHS‚™Õ0¶>ú¾Ï‘Hˆ~Ÿ—ÏuDü‚·ì‰FñÿQ¦ ÞNA4=§tL¾Š½âISø*>|ÄîØ¥ìJôuÌ7±°þNÖ‰ÖR2 kÆa´“\)?MÞúaRç(ów"öx·Ï»Õ‘zZÒAÑG?×óFî÷¸™cҜϺÓ'caå8©vÝÈÛU ;|^ÊŒj üUI–­†ªwž-i×`œòœ`'Y ݦöÙQ$NGGAÇJâ‰6²˜U]ÖQv]—¨D>KÐ Ó^'ª0;[¥7Ù?šƒ’R ö¬"Œ¶mÒ–MË4WÚ.Î$µl®tÅùà8^æl2(Xwà@à&¢À#ÓJ~4…FàŒåbÎÀ Zè$šþtN,Õ©.Âq q¡9 Ϥgy8çBU½ Á]2³ÖïÝ*S"‡ ßšß7#äÙn­_Ë]þ—Ðm¢.M´.”…æÛ×7[óÉÖárûú`k¾jpäg/Û&tØ•W2mú[ótk>YÖÕµ3—„€ëPY¡J“uîH=ÅN]¶Ê$Ç¡mJ.,7 =9QD[¿ªJ±àA@½ĸ`ÞÒ¢—rsWb•ÖM|óì*Y³Í®û5shªá‘¾™•¾[˱Þ¦‘ãþ2páASº'—0ÉN]óÎû %âÿ†³=˜™ÕM·~Q²Ox'%ÛÕš›²rmš‰ÄMš@d­™Â»ñÜÄÛ…WHÐ ìªí´pÑà„OahŸìÐe[Ëìp=™à]²¯+“kL¥°LâŠke™*–UÑ<k¬£^¬qe•à OŠ5˜Ô.¸â‚Tÿü>Oφ ZmD3:†bØÕ€ËU#¹˜¾ÜòºÊÙ»8Ýö¹«Å¼&z;#Øx ºv¥›Y´íŽ×7!gúÍ%zÑxxM‰’äf7,„ökß>ŒšíûÓTzÿI†ZwóEü™´gXXGÃt!ÔRÃGJMfvîiÉÌ\‚IŽ„hñ€ƒ à Ö_Á÷A9–E«VutDeûnŽ|ªŽ$µuÊ|!JÕ_¸±£â¡\ͶUÆí’XÈZôô÷ùðC°Çe^Zª¯ˆ]ó>îr©vVkEÑ‹¹<Ÿ!Åp7ÇM”hm̾ˆo—ÀÅ^ ú/+´5Ju* ¥{‡Å[)Á3m)Ý($µ—±+*£QÞFø®iL[Ryp¡–U>Á™Ûçþå]~K4ðR´LPÇð”'g ú©Ëc×YÄf ¦Sö¬ºŠíÚ` :`Ð%ÀWЯW–=Çî;34Œ á4Þ(µjq¤ù®Üòø$ËŹ~˜ÜÙb¿¬¿ÞaŽD·‘+ÜÉW^ü¾ Ç“q¤Hæ9_Ýc\ÎÈÔ­6(nâÌ•êK¦ƒ‚Æ9è© À~ìq³TC*³”¦Å4"{”¯iî`Ù:;DmU4z˜‚®Ž’ÔdªÊ iŠ ÅúÔq/ÐÇ‹Tœâ˘Kìžì]·‹HWÔÔƒª.|ǧÁÅþ/ÊœDζʼ;áPñ5b'†ÍhUÇNÚpÀ«í+Äv±ù Í›0Êî+D á™Ç[“ÀÍrâ‘ú`û Qˆ8¼îŽ;–›»è‹|½ßýÙ½­ù²áCá乬ëËWµëÀÑÂ#q“<Û“††ë1•@ ùpÙþl±Ê.’qž6ª‰øH×G[óÕÖ|º5Ÿ¬Í>Å/„©&ä³úÆ’UîÕiXÒEás©Œ"/›‘ßZ‰¤Ø5W 78væþ†„•û&ìÈæÂï4»ç´ç®PÏRÞ›hœˆ‹qJó°„ ½·Ñ k-8E¾r¯jX>&_©þñµa,¹»AJrcJÌHˆ"à¹;`ò>'Ó"Yy°Í%ÞþæÁ¶·®Lî35r™A{ ð ݃S³¨+jlϦˆ¢ƒ¡¢Ý…K.—Žíã ý ÉRLóîQì–Ñ-ÌÁÎ_ærÉþµ™ëeF—k3Ñirs¯õjOѼ1|` HM¹ÔКôáßc£„»|¼÷ãø}Ì„Å,ü×̈́ڠ¸ðpSÄ×oÍŸ·&¼ÌV›©¬6 —='Tí>Ð{?®‚Mþ™bÈ©Nzåi9bóZßm¯.¯Å+¯¹ äúÏ4 §õD°ð‘@ÎÒ¤Þæ{š¤0º+/‰ nXŽîAŽ2芭ӌ®—ù ¾Húö751èuüá¹¶¦!SKø¦¢ðNdö·Ð3–÷È9hŽ‚p–ïÔ®Oü€®²ã¾ö.ÉË‹¹u©ÐõoÙh~ïлe#ÞJ݆§p=»"º]¼Œð¾-Œ;v¹(%¹f¿ß¡]Xrp?`ârÀ8‡4'?Ébé ßµ V»òª Mφ]ÙÑp }õ™BþC%*5º|²ŽQ=êë÷1úâÞçÈþ®}œ‡Ím;“nÖ×°XùÛÙ½• øå' OÖUH/4¡‚éýÕƒõvB©ƒæÄ._Éz©ÀVrÄšjhvkÓû wÍ—¢Òk÷Ëø)© ¦H $ç·›X}³à¢ä¨ì†‹œ7s‘?L38WWWõq¸ݽ’}P§ªKMQÑ›¾„’o*å³– §Ü䥸œðÕö9÷Pyò¦Câ·Ñ™|’my0Ï·ÿ§EN•ð{5 žŸá¾$û§FÏå¿ðÇ£ç9þ‹ƒœm?,w…šˆa˜’•¬œø˜¿áeÛ«Êþ1'âµÙ‡ýJhšY.Wï ‰×gOüŸbú\¹—çq6¾¿Œ¢·O‘ï` ßàY´ý‚ßòv¨}Ø. ay—×=Ð\äëtÈ\ÌGŠ£c~9R×¶ygÜÿ»qYG}ìïÓn¼ò5D_IÞÿÛv#ßð¿Ânܺ|»qq· :X_á <€¹ å+P×Ñ¿g³3B¥ rñ_ͪóú~j)k·òYóuWâñ¦%½­ë€¯SW ÛP“›[›£ö9¥‘ý,¯G“#qÁ'ز7 6O’»vûÆПÿQ%"bendstream endobj 506 0 obj 6069 endobj 510 0 obj <> stream xœ½ZK—·ÞÏ"¿á®’¾çx½ì°CâàCÈœda{a†aðÞþ|¾’ÔÝ¥nõ &6 äF·T*U}õUI¯wR¨¤?õïó«“?> »Ë·'rwyòúDåÜտίv_Ÿa‚2»$’×ÞîΞž”_ªRJø]ÐFÈ`vgW'ßßïO¥0Ƴ—ÂlÂ<üqê¤AÆáÏûS%”IN bj\)˜áá^\ à ³^é‡L0—9.Ù8\΋¼!ÉÒ»”†ŸÙäk;ÈŽš¾/E”jøiþ!Ÿñ¤èd°úý,O%k&Mãðˆæj§-¶ò2‹ðz¸Â@â×Zê-¹bÖèdzû°njŒkƒˆNÃÀgO`ÐB†QÑÁ0çªd°W,)à?;¼›?—JY;<Ë‹ÄäM*‹´Gh¼P1©q•;ûS›œ0! wiA8†·$#õ¸Á¼—§Y´•ŸßÑa9çý🽎XÜ7Ûfçp‘í=¼b†øi4Úy–b“žïÅÚÚr)ì`‹E£ÅËfE:ž(Ó¨¾5ô$7/MÇ¢4”*ŸLÒŒŽbtðP¨.Ó;Ðü˺ˆ4c.åš}¿œ~JÇqª¼°ÚîTilÜ«r ÉÖj?Ü@dÈ&䆓ÅÞ¯¬—7ý‚f[¡á©Õâ6´ásÎÆ\›^Íåül‹4¿d¥”ËM‚¾8Çm$M“×ÇËýÀ8Û3yTÓ ­¿O‘u½^2O¨ß ¬ +CC'´I ‡%cÄé«õÞI)ÄSöãÔŠ;Ó[’§Dr¦âY'õøœÛˆ†êñ*•@íX’Ûcë$ùœ÷{r,í °ÓqͶxQ|Äú@¹áÜÏØ¶¸€b^#4Þ-¡Rä._`ÇF;ðz™fØy˜õ/k¾Ù;)<6ÃpH )¨‚gQ[AP«œËd”LÚ@ÎÕú6 Þ; ‡ç|S¾ª€í|WÆ!úáE¤ö°dÊ[PJk5ø<†žÉ_U8Ijø:o^'i³ë uœB '/D– ¤„Ö€Ýqß´œº¼C)ÿn¤Š=|ŽVØh¦,@j Ó§áï$²BTØ á}´Xî µ4&¤ L¶"*7¨ù¤å<ôÝÄœ×pÂIÛé…y`ÐjÊèÁÎ3Ò¿b8ÒÇDŽ.EÝÖ’û6 ò„P5»`ãä'L'~GørTÄgм­|ölß!z:¯g¢—ñ@J6Nã*ÑËŒèÝü¹Ìè¸Jô’¬v‰bÁÇq:—2ŽÚ+Ó—Æì‰ô|Ì}Ìþ“ýsù©‰ù°'%¯i(¥N—¡N™}N²{V âMƒÎ ­Ñ|6:ëîÐ}tvKo”c,-0t^Íí ³‡×Ùÿ#:3%×èŒÿõG¢3yH¦ß§ï°%ÜY +0 ï'•œþlÎrüìGÀÃ}Ô""4g[~²|¹)Î"Ç»—T Z˜ö†;ª…Ƭ  ~|Sô‘ J™ÏŒj­ê¿EÍÀ“ےΣê M‘Ê弜™ùuIi26Å(/4™29V´sPYiòª£-$'ã!õ˜è[ñ ïŽ4';ýÌ¡~b†±¨Š Úhßp˜s¢\>¦Ò—á±9š²ŒÀij©­LŒ‡{Åú@Ç…¥n¢oQ[ÎŒê¦jÔqa'¯SLH y*êÉÉU:)‹ƒs©ÃútèóAV°±¬Îx ã(¬ÀÌkà´QL0Áò¶áŠu˜ÀØÊ:@ÿV¬Ãvå0ÖQr*rPadˆ3ëxÙIŽÖ-L´ùÞê\1}Û®¢’ ÿûSn8 ¤é« M‰ÆÃÓª·b°‡(Ö p»¿eg\ÂÑ™aKX–2¤°ïÂd”œPsý˜Næ‰f$ìÌMV [-¸NÃqÕx[7"W{<Њ´¨œ 4ÙFÑ`§ í@¸`e¶ÒkwÑ·ì»ÓÛ̼ãm17B°Ô²2Yß 4'&Ï–ü˜–Œ«üÂUå^Ê{9gûu¾3Øhé6›nû:3mNÖU}mdeªjÙVJ¤ö?9ÉɇÄcoÑÿ ÛKOÈ:HBÍ5NÊ\x+aø»%mQaû `ï>MEAuMeÍ;é(#3ƒ`þ/JÍ+ÕHyZ¡ù 8 Ù‘U»ãY+%ÕføP„£²ç[ØÖ¤¶T5ç¨:¿Qƒ+é éá`úbë°ôUjQ›RÁh9j®49¤^l8×ΊOçPæÀ€ê¬Ý%z”‘ÂZ†. γוLÆ=ö™™‹ÆÄ¤JÛÅ£íxåòœóÂ&·D²ÂA”?†Ÿ;#¼wMmÂͳQœ³òå]•‚áÆÅ-ßdÅY»Õ÷\@“Ø$*º³=²•É<1ç.8)µÉåÈžÇ{\~ø[Ù’+¿¸ÌDÍJUï}ðJíUq–¯ÛKÆÑgsJ{T¾ÂùjÄ,#–•5–PðU[”œj*u£YD)“Òg…ý¨£BW䔕Û~ gT™ ƒ }7s8Öˆá“ï–ÉÒÙ©É·4Zouᑽ Z]`º| {ˆ$›.ç:¹ë¤6{)Lîh$‘4#iËC‰ÜQŠ6ÇaÛ[ˆú80ìvmW Ãg¥­*Â)w¡‹7-: ~|¶_Þ¬úSmSj¶ÍM‘}ðªÙäì½|¥BkCXÑÓ$ig=-¾‚lXíVûçyiAØM„ ’n„=/«Ø"þk¦§G›ð±ûµÿ3F)V,!hšæ(.ïg.àìS¸<+|XúbÉZ”þ°òzL f3@9/l/r‚¿`÷á”Ì“Gwc2w¨ Ëz ‘ÈñL‹æaZ›#-_{­šÀ$ÿ¥¤=UÚ]ù+\õ^afùþ¸P`kâað˜Ø5Íò [Ö#€ZCΘ",+³}mä4ȧL[ï½í˜8½ \ôݲR±5ÚyI`Ø…rÓvK¾XâÈ6S¶I>Ëb!‘©Úóü÷«‡€ÍmWªÚ42¤< aYbþ?p+Hq rôûRà·ÕÖÝ×AáA˜¶…ú´|¥•ïp‚TÅ“Ïö“ÀYü†[?)›v*uÉË.Ë ÔlmË[%z×}´Ðï¾ñ\º¾nŸ®äó…âã°Î'¦µõÂòº^c‹·£ß_Œ*ÛN:GæâÓ4ŒŠ·rØgvŸÅ©Ø¢ûÚ¢GšñÞ眎[h#¤ÉTór~é:]S‰ñŌ󲢗w[/M}Û|ÑÊ;ÒÎeÙÜðã7ZüÉd}Å“¯±›ãʘچÝW7 o6ÆÏvƒ2ÈÅ’-»/b³úÖÆnxííOmú7YìëÇîW=®àº”‡·–»ì¹Ð‚/Àr6%½þ'0'_ ˜zZÐô{g'ÿÀŸÿ„ò]Yendstream endobj 511 0 obj 3235 endobj 4 0 obj <> /Contents 5 0 R >> endobj 26 0 obj <> /Contents 27 0 R >> endobj 35 0 obj <> /Contents 36 0 R >> endobj 40 0 obj <> /Contents 41 0 R >> endobj 45 0 obj <> /Contents 46 0 R >> endobj 52 0 obj <> /Contents 53 0 R >> endobj 57 0 obj <> /Contents 58 0 R >> endobj 78 0 obj <> /Contents 79 0 R >> endobj 85 0 obj <> /Contents 86 0 R >> endobj 92 0 obj <> /Contents 93 0 R >> endobj 104 0 obj <> /Contents 105 0 R >> endobj 109 0 obj <> /Contents 110 0 R >> endobj 114 0 obj <> /Contents 115 0 R >> endobj 119 0 obj <> /Contents 120 0 R >> endobj 124 0 obj <> /Contents 125 0 R >> endobj 129 0 obj <> /Contents 130 0 R >> endobj 134 0 obj <> /Contents 135 0 R >> endobj 139 0 obj <> /Contents 140 0 R >> endobj 144 0 obj <> /Contents 145 0 R >> endobj 149 0 obj <> /Contents 150 0 R >> endobj 154 0 obj <> /Contents 155 0 R >> endobj 159 0 obj <> /Contents 160 0 R >> endobj 164 0 obj <> /Contents 165 0 R >> endobj 169 0 obj <> /Contents 170 0 R >> endobj 174 0 obj <> /Contents 175 0 R >> endobj 179 0 obj <> /Contents 180 0 R >> endobj 184 0 obj <> /Contents 185 0 R >> endobj 189 0 obj <> /Contents 190 0 R >> endobj 194 0 obj <> /Contents 195 0 R >> endobj 199 0 obj <> /Contents 200 0 R >> endobj 204 0 obj <> /Contents 205 0 R >> endobj 209 0 obj <> /Contents 210 0 R >> endobj 214 0 obj <> /Contents 215 0 R >> endobj 220 0 obj <> /Contents 221 0 R >> endobj 225 0 obj <> /Contents 226 0 R >> endobj 232 0 obj <> /Contents 233 0 R >> endobj 237 0 obj <> /Contents 238 0 R >> endobj 242 0 obj <> /Contents 243 0 R >> endobj 247 0 obj <> /Contents 248 0 R >> endobj 252 0 obj <> /Contents 253 0 R >> endobj 257 0 obj <> /Contents 258 0 R >> endobj 262 0 obj <> /Contents 263 0 R >> endobj 267 0 obj <> /Contents 268 0 R >> endobj 272 0 obj <> /Contents 273 0 R >> endobj 277 0 obj <> /Contents 278 0 R >> endobj 282 0 obj <> /Contents 283 0 R >> endobj 287 0 obj <> /Contents 288 0 R >> endobj 292 0 obj <> /Contents 293 0 R >> endobj 297 0 obj <> /Contents 298 0 R >> endobj 304 0 obj <> /Contents 305 0 R >> endobj 309 0 obj <> /Contents 310 0 R >> endobj 314 0 obj <> /Contents 315 0 R >> endobj 319 0 obj <> /Contents 320 0 R >> endobj 324 0 obj <> /Contents 325 0 R >> endobj 329 0 obj <> /Contents 330 0 R >> endobj 334 0 obj <> /Contents 335 0 R >> endobj 339 0 obj <> /Contents 340 0 R >> endobj 344 0 obj <> /Contents 345 0 R >> endobj 349 0 obj <> /Contents 350 0 R >> endobj 354 0 obj <> /Contents 355 0 R >> endobj 359 0 obj <> /Contents 360 0 R >> endobj 364 0 obj <> /Contents 365 0 R >> endobj 369 0 obj <> /Contents 370 0 R >> endobj 374 0 obj <> /Contents 375 0 R >> endobj 379 0 obj <> /Contents 380 0 R >> endobj 384 0 obj <> /Contents 385 0 R >> endobj 389 0 obj <> /Contents 390 0 R >> endobj 394 0 obj <> /Contents 395 0 R >> endobj 399 0 obj <> /Contents 400 0 R >> endobj 404 0 obj <> /Contents 405 0 R >> endobj 409 0 obj <> /Contents 410 0 R >> endobj 414 0 obj <> /Contents 415 0 R >> endobj 419 0 obj <> /Contents 420 0 R >> endobj 424 0 obj <> /Contents 425 0 R >> endobj 429 0 obj <> /Contents 430 0 R >> endobj 434 0 obj <> /Contents 435 0 R >> endobj 439 0 obj <> /Contents 440 0 R >> endobj 444 0 obj <> /Contents 445 0 R >> endobj 449 0 obj <> /Contents 450 0 R >> endobj 454 0 obj <> /Contents 455 0 R >> endobj 459 0 obj <> /Contents 460 0 R >> endobj 464 0 obj <> /Contents 465 0 R >> endobj 469 0 obj <> /Contents 470 0 R >> endobj 474 0 obj <> /Contents 475 0 R >> endobj 479 0 obj <> /Contents 480 0 R >> endobj 484 0 obj <> /Contents 485 0 R >> endobj 489 0 obj <> /Contents 490 0 R >> endobj 494 0 obj <> /Contents 495 0 R >> endobj 499 0 obj <> /Contents 500 0 R >> endobj 504 0 obj <> /Contents 505 0 R >> endobj 509 0 obj <> /Contents 510 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 26 0 R 35 0 R 40 0 R 45 0 R 52 0 R 57 0 R 78 0 R 85 0 R 92 0 R 104 0 R 109 0 R 114 0 R 119 0 R 124 0 R 129 0 R 134 0 R 139 0 R 144 0 R 149 0 R 154 0 R 159 0 R 164 0 R 169 0 R 174 0 R 179 0 R 184 0 R 189 0 R 194 0 R 199 0 R 204 0 R 209 0 R 214 0 R 220 0 R 225 0 R 232 0 R 237 0 R 242 0 R 247 0 R 252 0 R 257 0 R 262 0 R 267 0 R 272 0 R 277 0 R 282 0 R 287 0 R 292 0 R 297 0 R 304 0 R 309 0 R 314 0 R 319 0 R 324 0 R 329 0 R 334 0 R 339 0 R 344 0 R 349 0 R 354 0 R 359 0 R 364 0 R 369 0 R 374 0 R 379 0 R 384 0 R 389 0 R 394 0 R 399 0 R 404 0 R 409 0 R 414 0 R 419 0 R 424 0 R 429 0 R 434 0 R 439 0 R 444 0 R 449 0 R 454 0 R 459 0 R 464 0 R 469 0 R 474 0 R 479 0 R 484 0 R 489 0 R 494 0 R 499 0 R 504 0 R 509 0 R ] /Count 91 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 23 0 obj <> endobj 24 0 obj <> endobj 8 0 obj <>/Length 8021>>stream xœí]OÈ%Çqïw k6Ö.>XXL@B‚DÊJD°2ˆ]aˆ#¼Bç"XrŽ!§H -X9æ(Œ@—è ´FBAì.Ià m¢lÖAÆ>8Ÿ$‹,¹¬{¦fúÕTuWW÷ôÌ›o·êð}ýæÍëúuMwu×oúÏî®§—/Þqàé?Ò?ž¼'¤ß}g÷½§oéÓ­ô~Ãoø ÿúøw>åÿù ©´ÏÎg$ÜsÕu°<8¸éSŸ|ìÓç.=B®ûÄyw«‰^Ãoø ¿á?þ]«ò_í³"e¸öò'>ñù#ò²ù4Ñkø ¿á7ü‡Â¿ƒþ/ÈÇjüÜ6Ãoø ¿á/Ò»ƒǺ †ßð~ÃüÆ~Ãoø ¥^ã@ ¿á7ü†¿R¯q †ßð~Ã_©×8PÃoø ¿á¯Ôk¨á7ü†ßðWêÝñûHKêŸâÖ•GvO~×}úôé×]ÏAë> Ä|½†ßð~Ã(ü;ø‡Ç«Ñ4ÉŽßs󿣖׳é'>n¢W™6ü†ßðþæøwðo~ù}4¸CÚ ‰Þ™å7ü†ßðþj½Ý¸÷Ããp?„æãdà ŽŽ.’ë®ç šè5ü†ßðþCá·y †ßð~Ã_©×æ~Ãoø ¥^›jø ¿á7ü•zm¨á7ü†ßðWê5Ôð~Ãoø+õjø ¿á7ü•z5ü†ßðþJ½Æ~Ãoø ¥^ã@ ¿á7ü†¿R¯q †ßð~Ã_©wà@}x ©€)8x,püÕL½Ù´á7ü†ßð/„åx¯3MÝÃ8?„Ž~ÛJ¯á7ü†ßðÿ.ÊT—¿¨ õ~Ãoø ÿúø»þÝãðh䯚è•Ó†ßð~ÿ~ã@ ¿á7ü†¿R¯q †ßðþMãÿ‹—îÃzïùÏÛÁo¨á7ü†ÿðø?û³ûSZˆüÛµü]íåOÎ]Æ«$}ttÒ§O¿žºGHÃDV×/(úíL½†ßðþÍâ×ûJ.~øypü8=p óóšc”jñÖLá iÿA0×ÉϾûõŠ6 ¨IÕuè±÷¿Ôãäõ{Nn‚ÿ€>ÈðGõÎt ÇÓÍ8PÂS¬,~TOð8þÃb.ï@Wæ°f‡ÄYÇšƒ3ü ñ·­W·3t#Ψ¨Ýn3–“O<Üýûõï¾úÕÿàëB½iε5K¶oÛwÜ9Äc‡¿®šAuÚþ=ún‹¹Û ‡C\ŸÅ¿Ì 'ï»×ûMøK¾ é¨ý£uHþŠç³œAÖÁÒwÎ<ÄÛ¿Ò™BÓÞþfó@·æŒ‚­ü[Ã,„ð‚ý+*É'k ˜>RÝÉ>t>þÃú Ã?¿² á±ÑFð/;´h”õ¼Þ¢—Xð|1ã@¹Ù!Ë!(3Y¿¾ý8ÄÛ¿¾Þþeçy¨%üìwH†Áƒ‘@E÷ ¯÷[…ý•P¶ Js~>uøyúNà£ixÁÎÇ¿²)m°þ,»¾ÔfõÖùÐ~Òïq*‡E @*þM¥9¶ ûË_½«ã1„¸‰§…Üä|ªñGó¼Ó8Dò5üÕ¦ðkÚõ6ëϲg"ù»?þá Þß¿TF\~úW7RøIkŸé㸜¼ï^ÿÞÁã×ï)K2÷¥XbOÙl”zqç‰-@žïvöÄm˜ÏAðó‡|Í1Å•mÖŸÎ7ߵؙ$¥T©·Ô‡úœ5ùð5¶ò™*E0àñgíœÂŽL¸¿âL þ¬Þh:šsôùÎÁߤÞ*ÓÛ<“'õÁÔÛÇ¢lGÛ¬?»ùå¿+}&Ii;³Þ¤„×§h>œg¼&ž©Rê@£”eÌúߊ3a²øK1‡tô¹ãçÛ¿€á¶?“Gxvúvt@üʲ¤ÊµüËž‰Tê@õz‹rNÅ¡¥<£KÇ¿«º1\–N°s[óøE¾"~éÏŸ~rë–ôëðó_ÆpÇïzÎz›øyZÓ–·¿»ãÈFýKV¢¾`ßÈû¹ës8Pìƒ0ñfÅ—r [sTèã:ùê¯þõ?âpï(ZÇnô~e¡6[Ž%êÒqbJ¢\ž‚¿ð‰Sï\)åƒëéä[߀¡VXPäKÚ=wEc綸ҖÃòfâ7Çq"ï1WÇÂ~ŸçC¾zíå”ýçà¿Ó8ЙqîÁñ§îQ–k³õg=tXåÝ‹’„‹!]ÊݤLŸRtêG—I>·>{ÓýôÇ¿xá’O\{îj‡rë½ Ýç_ÿ®sõéO/ï?Bú/ÿÞem(`Ëúß"(<—ÎQFÁ÷ª«9ÐÿOºÑûCV ñß(®íÑBì¼ü©4oÅѥ̛­?+q !” ÖÁ®Ò¥ÜM0=ÉŠ( ½%ùxx{<÷Ý 4UžöQvçn\ïCÝ0ð…ôxƒÞ væi‚ h©ý…ç2Œ4±éó0‡uÓs³VÃ|Ö‰ßå¦t¼âwÇx u…ö»ÙøÝ­ÀîÇ8?ýñpq:cšøÍ{¤¹³ŠvO]nû >þ Ù 6;ä} Þ!]Ê6±*}îóppS׉eê¦mcËm a>Ëáǵ=UÃaˆ°Mü©û‡rMùwR!õõð0(¯’4–Ô=öCh¼þ ÒçÞûþÞý û柺ßþ|øëåúÃõ1í\‘Þ³_\Øgþ›_HŠ|ýÛŸïμZŠ8”££‹äºë9¥¦Þ¹ ”"á•é™öOᇎ- ÞM¹§Rü!D  ~×Û¿‰Ýä´>ŸEñOÈ¢TSòC§.oJ/ÔÉ‹,}¡à ä6ñ»ÀÎÏ 8R†ÇÞÿ²³ÎÈ&¼²@Û_’¶šÕ;¼fé3Æ€ Eðñ£».—â?}úu×s(üÙÔÍ]® á×ïÏ¢©»©4q mñ‡HÖ1lˆdaÝ„ÒnÙ4–‡þù~®×¡°ÚMסËõ§H¯G“nJ.QÇ”víoƒO¾p© õcR­×pô†·sžéH%iðwÂé»P×?škOýd¦ý½;ø‡Ç«Ñ4ÉŽßsóæ£^CêÓçÿû|Ä¡bäb3iôÂk ’uH>zàJ)~!}âÄÇP­•ÝCÖÎmíŸJmp}.ëãǘ÷SÀ¡„Wvg¾ã¿ýêí·ò™øÉƒ>ù̳ÝèïÓ!`bêѵ…q=lÂ-‹ëëFW(oHï™ýØEAäçÈí¦Ð`Öµ³°/»/ïø¦;ÓÐÝ*Ÿ{è ƒeûaõÔ-ùœýÚ‹þ¡ï³Bô À¾úíÏC¹dûáï2„Õ¿iÿ«+>„Çï(è³Gì!„ðEz¡û2d/Cv¬½"<0QâÒT(ËBöO¥K÷d©ö¡Mð+Ý}7]Á?ô~Öù¹ iü|CE‚¶ ³#ˆ®èËñ°— ¯?\¯ÓmJ©ßjì€íO Nöù;ïÙïRó \d}¿5P@J„<½ô†ÀTÈgï‚ „ßB‡ ǬˆÚ¿¢Þ®4”Y¤àD¯¿—$ž4z%p¬zü\ ¯·CþŠM­‚¿Õ†­3×Ñ– rù>lÑyˆÂ̼T WrÙN·–¼ÕãA—Ü~!âžD0œ¯À¸'šž„nîÒw?!Hèá‚­ðZíã74+­æjòWâ?àZx™öÏÎ-’ :¿ì=±=5Boÿº½-²¿">4:q¹#4ó(eƒcüÊÅ—)] ÃR‹>Ü‚Åt#N9šO]‡÷ä=fó@5R=T#KÌC¬è¶3‡¦®­f׳7Á¯\î~Ûp?´Ò³%Š~KÖ +í¦_ƒ$ç#Ï%Òdî ÛµTCµ }CÖþugail%Ïß »%iÔnJëü3éu}˜PgŽëZøÒág[Ñs´?™©Æ¯lÌŽqXš²È˜õ‘ûø…8W‰JΧºݸðVj/ *Í; 9Œ_ØãQ?N7´Ù~ Yü·+Z_(T+üÊ#•R–f{ÓåüT°¿Ò‡*9¸E÷ÑxO·Ì~²{ˆpïYTðéŽæ@·¿Ê× [ã@]šGÖ¿Ø™?–ÆàBü¥t ü·sxOneA„|Jãw›`=ÎêwB»S?S\p팭~ g"eñg9ÐÔ*rǘo ¿%öÔ—Ë|Zw¶]Qû‰öaúÎXù²è|´ìs×8P¹o®nGÙýÅ5”ë-ê/£vH•w~\QoZA!§æ‘iðËbX ‚= _%²A”ÇS|Uòd•+,« eœÏÉs¡9‡%×¶æûQjê¼/‹†ƒkrÖHE;ò çpèr»+â¬ñÍ3ŸãÍVpvú3Ñ*8İ™HdíKouSÛò ¥„!ÒŠý(•mIÆïD¿â.õóŸüÄþJߤáàf¾×r3Ú ?³õ'••Üîôå‚åžøÊœ¬®\óÛÝâhtŠlŠVKî È6©ŽfvÞl…_Ãñ渕ž‰´þh>z>”7ì`ý¹äô\)¦ÑÅâw‘^¾Ÿ4ï-J9ô”å&’ñóò+¹u2/JxèÐ\Ÿ…Î"/°+ùráöÕ„8~kááhÉl˜º"Htÿjî§–žGI*´Ð1dÏDêÉVøöÚsWKñ x€ÞÕ?Ê+Û7$Ÿ†gzãÂ[Ë«N\[4ÐÉÎu%õ'Ln#!&’ëC]5¤³ÞƲÅkÞ:S(³òøÎ trYZIJ´ÂÓËr Áf‹$:¨äî’Ü rsürš¸<¹¤Ù3‘†–¦{˜êŽ¿s»ýeÒ§k f9hÞgp 媮·Y®—Î6æUŸ‘ÕïÒ–å@!~Ç™OØ’¢ø=UEC¿M©Iý‰Ú Ÿ×M¬ÄGë'ûóh³öߟñ•ò/¿»¥9Ðsoœú¾º(žKÊo®ãC…1c'S“å@»áñJ²“Šå¿†½ ¨Ðg¤ì/Äq$“9ø¹ÞІ¹{rlXTú’{(:¼ •­œÜˆ²Ãz;L†´ø0¥Ä;À…|¨0üŒ>”l& «qÑ”ï!³øIzY´;¼,fNع•uÜ墸3ó@a;Xçö…üE_e9ÐÁ’ÜðGç„üù™Ì 9¬½sÇJe¨½„gÊퟴÞT®ÿù?®ÃÁE;o?ICýIö©xïð1Dðwçã¤EV¶Ç?é ‘© '€çú,ÁÆgÍß¡Q0~sÊ'¤…É0!Oå~¬ü$½8ꈠ–6þÁ綯æ7eüªsჭa§a;gU›Iä çí©Ÿ”â/²-¬*>‡*S^\ºÑ™zïÙ ÿ^¯7 !çjê1t‚N•à™ yNz’a¬ÒØz®^ˆÇ¾Zˆœe‹Ïóp‘±f7ª³:õ<â ¿±8:)(úõÖ,?¨I/Ëúª€Î ˆx7tºCÞŠßúü›Çïnj·$Â4Tï@y>{wL¬Çü/œÓÛ<~ï>à:馭nL—ÆïûœYV|À%sâñ¾™ Õ³<@À~ŽllØÕØ!Nl¡øòT¨ùŸ7T†ò ]cÿÉÙhÓ–ø¼ºãƾ÷}‡×!GÛ9·}û>tâ@s=³[j3…"ûšõ|(“¨òÉY Õÿ`g¡Ošº§¢ú3¼œf ²Ü½dç))¤´Ãà@¢© ‚ ½xýáOaZ`Ì¡z‰ËBlÕ;ÖÔº€ù~ca”8PR¶p_oµè™EǃÅZAšùèœ4·”gI|ëCøþ3»·‡{ÎüC ;zêXpžÏ¤!ë3¼þÍ—\sŽDÇéÑ}§äëTÛ§â–€_Ù•Êg|©ò$´Iï@áÓBè„Û6ÿ!(/Mû´šD=„ଠ~~ÏŽßGÒXR÷<ž8WúüÿÿI¼xÄãô?ú¿W+ô.Š_>×ûÖõ‡"„ÆÊ¹!é³_{QÎ!e7øh?v µÝº‚g¡ŽF 8ŸÁt)ëõׯþѵ:W}¯WöM¨–†ç%ØÚ§Ù:d¥Ñ¦ðG² öA9c~9k‡³_0GÃ<??})ûGk.àøJ9kÿI†Ñ:+×ñ9;Ш 2{Z¡W™®Ã/¤Oœø¸syjîá øÏ?ðwݱý ´Þ‡Î?[[ð¾úb ’üùôlÛ«ÿû/¼,3Ïõ¦4Ú¯°‹ìO åËéeâ‹&àŸdÅú•Ä܈l‡½÷t,h@GiMý¯·?ئ® _¿¸t,A®à‡Õ­ðó{?>RÂP·¦•lwæÕõý¦Œ_>~RÑÉÁÖ¬ýð:±þÇÞÿòä3Ï<¾é69›–=í,x¿xöÛoÒûÁzÎáëÁ×GËU‡?â›Ä6œÊ‡§»B…"`ƒ@U(—€¿™2éˆVÙOJ(i°ƒòÕÿ¬ÞH¹°¤« 7~T—&Cè†[ÕžîâÖùãX×s@|œw 5ç‚3ÝÝóƒ ½‹âèèè"¹î€ýìÍIO€;†P´ñ"tëã¿ÿò³Üþ9z÷af¬°X°ü–ô£Ä†½£‘í_Ÿ69LŒäºsÙþ]ev ¹M}())üÊý±¾þ¨z»ÑÂ'Mý/µÿþ¹c‰µ o|!Ÿˆ­ÒE»~뙆õ‡§žú « Ä| ½íN½ðƒõßÉø3ó@C›™$úº‡õñ{êÓí%¼Gš?®«¾‰Ââ‹Ððo#v›þjË©W^m>qÀœ/ó6¬±ÿPÏÃ0“$¦}¹üq/ÃÄW'}ý™ôXØ›;:ä_n±žû´æèý€T‘Æ’zºÄ^ !½ð<ÐW^¤,a50\ÞåðËéÏ_{“¶–ô8ªÅúø»yg¾3Üqý²×ܽgóðmà.ösY^yQò5c>ÞÑå’ñÿþ¥û£{ÐÑ&GF‹#¨ŠzûO ÄS¹vÏ_Ëø÷Æ!2­`Þ¿ëëÏž^He놡qõ&ØÑŽèu乿ö&-HL”~ i(–[ó½pzáy ŸýSrà‰¯÷Ö„NµNïA|èà@uî`}üÝB·qø ‚Ûɽ{¯! á©­§iÏQüxI—òÝXHU–Ó÷%x2M*Øs–ñ^Æ1çî"þ=Zv~¶˜ä@‘¾F¶0¸àCiÚp©J?0ô…<æCÙFû`âëg¶»…ç^ÿ{j¯t›á±žFï¢ø3ó@1Ó¿ãž”gÊÙÃa}üúÄÃ’aààfê8ÐÄ ŠðL)Jj`ƒi€£Z·Ÿ©‹K>‰µA¦ox0l­žgoöAØËÒì<\ÊsA.&ú¼ ødÿ·H¶1àÜ!­ŸJ ž²[œÛM”Ž—‹ÛÏ ñ’ã¿süØÝÏowkq  d2ãTüó[ßoÊø3(ž*/¸¼ûAÞ&×ÁæßÿvðMàCÇ… 8ÐÔœJ6ˆü62Ï1¶ÞÿÔ.Wppr{Nz(ö©Àa¹`^ ëðS.•÷ÊÈÅhÊ>á@sRÇâ½8ÃÞ©q—š€„Œ3$.;$=&Šñãí®«Ï@Äéå9P,xÎŒ5ú& -<¬Û;ñ»ëãÁ¯Þ~Ë‘-Â’] ¿þ훢G‹·O©W³`&¾Ž–ßõx¶Þ´ªXljsœÅj„•0Î õùn¥èþuém_øZÛHüÎY>6Oðé¸ìáœÉü¡é¸ÒOc‚ÅlpA¿§Îjçv‹ì3mþƒp»Éø]Ñ%¤â÷€¶I»[~-<šj×5à'NíÂBÖön߇†}}&»=†á&4.^ÿp¤Jlï²Ò³tø=‘eyÓ©µÌ©¨É†ršuÙÄ—…ß ûPì· t±Íâz[áµê²„Mµao‹°MF´?ˆ÷IaÛC$ºŽž”<ǽ ¥&þ½¿Rº qÙrý ›09.ãšÚè~ñ÷Qœ>bKÚ8‡ícf¶»u×ÂGw©q{Z¡wQüg"íÛL/øˆ‹õñóóyÂÇÒ³tÈõ¡ì‰Â:t)φdóÇ2üÜÿ½q¡¢j8Pr*ŽK*6ræ{ÍEí ïyŒ/jö£ŒôDZl£ûàEãèpO|ëU|eLë×ÂãªåÒ|"Ø-¹ãÞÊä[ßö‹ \öóÓ•©@OM½³Pcü0PXMÚÝÚûNöýf{ª¯ï7eüÙ3‘pÑÂ~\Þ§¸éy;®dïÛ†øå³bæp@]“èÈhaÃ96²ÿ%Öã.h–åÞSÀŽz;sT¹rô,3rR…›žeÅBNˆ"gTàÓÖB}FŸã>óèÆØÎ… ¨4õŸÔ«ì‚ÑMãùΖ|ÏÜø|RõY?q÷MÞܵ:íTùX7¹c·(wO0"s19ȹðÙöRó9TÜ_º°ëÍG&{öLcRFY/¤q{&'yà£2ä|”ç¿»ôëÄæäNr¸^ȓĞÊ8úì/ÇSLxðŽ$4C¡þó±'/ ±[¤¥$š¿*~m‰ÍÁ{›bÌ ç0¹À öÂkHŸ:(,äL$~RÏ”z³é9øážÔWš³ƒèÏÚnˆŸÔuX‘^½_Nå£7ÞK §á4zSø‰Ë[ ¿Ü§2LÝ­c€ÿ±÷¿„+û×lÛvÀ6¸XýçC9M½m[É‹»èakaPb%Ì¥p]ínåÎx¯³NÝèd¶DÙŠô.‡8D¿ÕT \ºƒà‡¥œÕظÞl©•ϱÔzäJôçø<Ÿ”^áç$«T>z䂈~[Ä·d…—àÊO÷ Â7Æõ_0¸¬Wé@³ø£öçd±F‹Œ¹¨Ýí¢ÜYµÿ"o•>÷ÕkúM[z(ü>t ¿ÓÖ_Të}7ö$ša4ýC÷9ÈõÇÚV~æ¤ëü¾Fêü]6C!ͳ“½ ï†ç·».„Ÿ?Žu%AM\XürœÕ¶òa‘˵2þF㦊²Èø[Õ™R½Nm“Ÿ}÷ë8%`'ò{ ù•âI©SÖŸVÝÕúñ»«­6Ä{êñËí®º‚•qÎÄ@º~×zÂ¥‚Ku-|h^·X½•9DþÕª9ý¹ cO¥Þ@¿ÊyÕÿÒRDÇžJü+q K·ÏCqˆ.6 ¢¡(ËÕŠÃ]¢ ©øqéX~¦Þ&±3ÞJåžã©ã…KëÏœ¡®Œ?ªWé@õø‹êÌ oéíŸÕËïiÆ®à@³æà*]Ç®€ŸÕ¤D¥õ¾Uýi¨7¤›øq"E¨Þú¶Ðªßâ}ƒR¯ž;Z¿üOƒ_¸ç{½öò'ç. ãU’>:ºéÓ§_OÝéBxç|üÑ4LÄuº÷0K”«þ†ÏÂÆ…ì/ÛY_æØMù¬5vPÚ_‰Á»ƒæõ_~ôà€*ð½ÑágÃçÅò¯¶¿¾þ èBu1 _ß÷~Ãoø ÿÒø—ZÊÕé5ü†ßðþƒà_vhT§×ð~Ãoø×Çßlh´ òWMôÊiÃoø ¿á_ÿ²ká5eÛÈ30ü†ßðþR½Æ~Ãoø ¥^ã@ ¿á7ü†¿R¯q †ßð~Ã?=Ԟĭô~Ãoø ÿúø;ß,ïY²Ä™BMô~Ãoø ÿ¡ðïZ•¿âL¡&z ¿á7ü†ÿPø—=IN·Òkø ¿á7üÁo¨á7ü†ßðWê5Ôð~Ãoø+õjø ¿á7ü•z5ü†ßðþJ½Æ~Ãoø ¥ÞnX‹Ç«$%u¤ý¯‚4pGGÉu×sMô~Ãoø ÿ¡ðïZ•8R†Ó§_w=ÁËÄvžá7ü†ßð—êÝÁ¿Ñx5š&Ùñ{nÞ|ÔÃÂkHåô‰7Ñ«L~Ãoø sü;ø7¿ü¾Ü!í ÐDïÌò~Ãoø µ^›jø ¿á7ü•zm¨á7ü†ßðWêµy †ßð~Ã_©×æ~Ãoø ¥^ã@ ¿á7ü†¿R¯q †ßð~Ã_©×8PÃoø ¿á¯Ôk¨á7ü†ßðWê5Ôð~Ãoø+õjø ¿á7ü•z5ü†ßðþJ½hó endstream endobj 25 0 obj <> endobj 33 0 obj <> endobj 34 0 obj <> endobj 38 0 obj <> endobj 39 0 obj <> endobj 43 0 obj <> endobj 44 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <> endobj 76 0 obj <> endobj 77 0 obj <> endobj 83 0 obj <> endobj 84 0 obj <> endobj 90 0 obj <> endobj 91 0 obj <> endobj 102 0 obj <> endobj 103 0 obj <> endobj 107 0 obj <> endobj 108 0 obj <> endobj 112 0 obj <> endobj 113 0 obj <> endobj 117 0 obj <> endobj 118 0 obj <> endobj 122 0 obj <> endobj 123 0 obj <> endobj 127 0 obj <> endobj 128 0 obj <> endobj 132 0 obj <> endobj 133 0 obj <> endobj 137 0 obj <> endobj 138 0 obj <> endobj 142 0 obj <> endobj 143 0 obj <> endobj 147 0 obj <> endobj 148 0 obj <> endobj 152 0 obj <> endobj 153 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> endobj 162 0 obj <> endobj 163 0 obj <> endobj 167 0 obj <> endobj 168 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> endobj 177 0 obj <> endobj 178 0 obj <> endobj 182 0 obj <> endobj 183 0 obj <> endobj 187 0 obj <> endobj 188 0 obj <> endobj 192 0 obj <> endobj 193 0 obj <> endobj 197 0 obj <> endobj 198 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 212 0 obj <> endobj 213 0 obj <> endobj 218 0 obj <> endobj 219 0 obj <> endobj 223 0 obj <> endobj 224 0 obj <> endobj 230 0 obj <> endobj 231 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 245 0 obj <> endobj 246 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 255 0 obj <> endobj 256 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 265 0 obj <> endobj 266 0 obj <> endobj 270 0 obj <> endobj 271 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <> endobj 280 0 obj <> endobj 281 0 obj <> endobj 285 0 obj <> endobj 286 0 obj <> endobj 290 0 obj <> endobj 291 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 302 0 obj <> endobj 303 0 obj <> endobj 307 0 obj <> endobj 308 0 obj <> endobj 312 0 obj <> endobj 313 0 obj <> endobj 317 0 obj <> endobj 318 0 obj <> endobj 322 0 obj <> endobj 323 0 obj <> endobj 327 0 obj <> endobj 328 0 obj <> endobj 332 0 obj <> endobj 333 0 obj <> endobj 337 0 obj <> endobj 338 0 obj <> endobj 342 0 obj <> endobj 343 0 obj <> endobj 347 0 obj <> endobj 348 0 obj <> endobj 352 0 obj <> endobj 353 0 obj <> endobj 357 0 obj <> endobj 358 0 obj <> endobj 362 0 obj <> endobj 363 0 obj <> endobj 367 0 obj <> endobj 368 0 obj <> endobj 372 0 obj <> endobj 373 0 obj <> endobj 377 0 obj <> endobj 378 0 obj <> endobj 382 0 obj <> endobj 383 0 obj <> endobj 387 0 obj <> endobj 388 0 obj <> endobj 392 0 obj <> endobj 393 0 obj <> endobj 397 0 obj <> endobj 398 0 obj <> endobj 402 0 obj <> endobj 403 0 obj <> endobj 407 0 obj <> endobj 408 0 obj <> endobj 412 0 obj <> endobj 413 0 obj <> endobj 417 0 obj <> endobj 418 0 obj <> endobj 422 0 obj <> endobj 423 0 obj <> endobj 427 0 obj <> endobj 428 0 obj <> endobj 432 0 obj <> endobj 433 0 obj <> endobj 437 0 obj <> endobj 438 0 obj <> endobj 442 0 obj <> endobj 443 0 obj <> endobj 447 0 obj <> endobj 448 0 obj <> endobj 452 0 obj <> endobj 453 0 obj <> endobj 457 0 obj <> endobj 458 0 obj <> endobj 462 0 obj <> endobj 463 0 obj <> endobj 467 0 obj <> endobj 468 0 obj <> endobj 472 0 obj <> endobj 473 0 obj <> endobj 477 0 obj <> endobj 478 0 obj <> endobj 482 0 obj <> endobj 483 0 obj <> endobj 487 0 obj <> endobj 488 0 obj <> endobj 492 0 obj <> endobj 493 0 obj <> endobj 497 0 obj <> endobj 498 0 obj <> endobj 502 0 obj <> endobj 503 0 obj <> endobj 507 0 obj <> endobj 508 0 obj <> endobj 512 0 obj <> endobj 513 0 obj <> endobj 68 0 obj <> endobj 539 0 obj <>stream xœ]‘1nÃ0 EwB7°DÇN \’%C‹¢íd™ ºvÐ+¿5Åe¢[ ‘jÈ2çðÊÓ¿'ßncúS*x@Ö„ 8õ;Túh‡ kÇ  RÜñ˜NÇñi= ­ ¢-*¬£(OX_DyªÀ:ˆö¨8·×â=*¬“h@…5ê’Ïmd_Iî”÷Z)¯¯Æ'©Í™~ ,Eº,c~€yã endstream endobj 66 0 obj <> endobj 540 0 obj <> endobj 15 0 obj <> endobj 541 0 obj <> endobj 217 0 obj <> endobj 64 0 obj <> endobj 542 0 obj <> endobj 13 0 obj <> endobj 543 0 obj <> endobj 62 0 obj <> endobj 544 0 obj <> endobj 11 0 obj <> endobj 545 0 obj <> endobj 60 0 obj <> endobj 546 0 obj <> endobj 9 0 obj <> endobj 300 0 obj <> endobj 48 0 obj <> endobj 547 0 obj <> endobj 100 0 obj <> endobj 98 0 obj <> endobj 31 0 obj <> endobj 548 0 obj <> endobj 96 0 obj <> endobj 95 0 obj <> endobj 549 0 obj <> endobj 550 0 obj <>stream xœ]O1ƒ0 Üó ÿ Š ±Ð…¡UÕöÁqPœ(„¡¿/ СÃY:ß|–ýpØ%èñE ¬ciñkD‚‘&Ç¢ªÁ8L+g„ìo:¼?`3Ýù]Ï$ŸM£ÊªÚCè -A#E͉V©®µ¶ÄæO:£=œ—Í™Q«K]ü§’£¹Äyp‘8•¦¥I.à˜~Ïr 6ˆ/++S% endstream endobj 88 0 obj <> endobj 551 0 obj <> endobj 29 0 obj <> endobj 552 0 obj <> endobj 81 0 obj <> endobj 553 0 obj <>stream xœ]1ƒ D{NÁ @ŒšÂ¡I‹d2I.€ðq(±Èí¨)R,3v?ûÉe¸ÖDLÁÉD¬U· x„ÉXT1¬ŒŒ;•SÎÂ#r¹ ÿþxÀÉz㻘<›¦.WÕ’NÁâ…„ 쨧”÷ZsVý=¶À¨wgœYŒÖŒ'd¼ˆ1zNض¼ˆÒnÌØñ¢„ª ?Æär㣠–k`cY«ÔÎm…ßæÞùœÂIè Èâ\Ï endstream endobj 74 0 obj <> endobj 554 0 obj <> endobj 555 0 obj <>stream xœ]=à …wNÁ òŸfˆXÒ%C«ªí˜ˆ!€H2ôö5tèð>?[ö#ÆëhôF³‡·âUÚH«Ý½:Á¬ )J*µØНX¸#Ùpãîýq@±Tâ;_ {6MKEVÂê¸ÏÍ ¤ÏsÖ+Åùgµi`RGg…Aªƒ‰!,JuªE¬Ñ©“+¢S'· X²(tEÀŠE¡{‰«Ï%áŠç<ŸŠÝ{0[ C…,ÚÀï_œuaŠ¢Èë…e— endstream endobj 72 0 obj <> endobj 556 0 obj <> endobj 21 0 obj <> endobj 228 0 obj <> endobj 70 0 obj <> endobj 19 0 obj <> endobj 17 0 obj <> endobj 69 0 obj <> endobj 514 0 obj <>stream xœµ•{PSWÇoä^Y¤¢ÞYXÛ{ãcÔUpt‹V¥E—«¢¨¬@HòK‚äaxDJ}E¨[ëÊ ¨Å”ºv»®cÙÇ´uÎGg÷F·;î?;³ìÜ™;÷Μó;ßïçüÎ÷OB xEDÇ„º?ær3Ü»Ü{BÀæ´«À |„àãÙõî¤ÅS‘ÉIßA[¦B@žu8B¡< ’IÓÕâÀ” qHXXèBñ’àà0ñ¹D%KIÊG'©Ó%ò$5ÿ³W¼E‘"“¨ˆÃÓÕjåŠÅ‹5Í¢$yö"…Jº*h¡X#S§‹c$ÙÕ>Iª8R‘©oL’KÄnm‹Ü¯…\™£–¨ÄÑŠT‰*“ ˆ©™ê}IûS¥²½òà%K—¯ "ˆ‰8"žXKl'>"ÖQD4±‘ð#¦Óš báMLãmžD.qE°Lð©‡Qè)ó ñÌôšíeñ­5Aäò5™Óûº¼ÁÁM¶ =Šö ¹*t•þv÷§â°­‰ñ Æ8!Âó{IÉ›åE ,®"wë Š‘’f¸]zz`X_aì÷™í £tpŽEëÉŸ¾éº]»ÁûÿûX_.F×ÉMr å6òEâ.!Úű4 và`´A&2†$.ÐSЧ¸‰ÄžÔWo^ü|”Å‘ëö¤¥F£zÆ—›Ð5pÓ.=¦í×ûMµ@9H•!Ë %¤™”~A)yÖ ‡b£®({aðÇSP ˜ŽT‚5 © êi€K’A©¦Ì7s ÊP#CKðßýæ—ÔÁ (­8ZIùrC:;RÙ;Ÿ¶Øxf#]B.5ÐðœÞՓܵ£vP ×K7îi<ØÚf³µÕ6(ËYGËPÔÕëi¡ì^2ÖðýZeH†"©e?ªîŒ9/œi`J“Û$2OÀ3ÖmU;ÒÒÀYÍ„_¢„*·íèê¸ô­·ºÍƒa‡ý©i£©¨L`ºSQÑ}¦ûô¨‰¡0d”¯MÉߘªÓ[C@«=øQ¸ÿògºJãQ( ¨9^VÍCHÓKŒiüxÉÏ.B+´Ê‘žão2Z ÁúÕaºÃi)²´÷ ””ì07šOBô;ô¯·6ß\h…ãp¢²º¶îöÿoOìãW; QKøV¨0ݵtÿ;ߌ_…eêVŠïBcí(Ù)¸ø9ï çú€þ¹íRÈ4ÇŽ†X pöœ‡§b¿çóдñ¾óõul4‰óâ+ZûXî¯døËÇtÖÎm)Q°RNiÚ5ù½0Mpïgï…¾Šv¸çrìÒªC¼›ýîíÄI(ò惔×!¸?†âÇz® ÑI×8r¾ê‡{ÃÏ8™ÝÊ^èr­h9íÀ|(’ `ÍÉ/\ƒ½Üí%EÎ0Rù+¥TÔo4;xàƒ†~ƒ[¹’\U]ì8¹’›K¿ôÀu¤~§KØ.¸ò%þLˆzE?<Ýï„ajbîåùØ#$báÎFY½†©ßg-¹–¾%;0fQXˆÈh$BÓ~üC©W7w1yåé¶Ür ‡>£³jmÐCÝøªçîÃá„—ÌN4 ¦Ò"&"’Fï…·jûå°)`õòˇ_øüî)Æ÷…Q}èƒ>Ám—Zèª@ßÑ5MÐÒœ yì«ù¢¼lÈV5A ë ÂJººš[Ô e_Š´jPe7Cµû¶Ãæ†1 h (@M? ÿñ‘ÒR‹ŽRUùPȼU¯æ–ðO|¹¢|È/¶èËŠØÇáßã€+K¢ðL> endobj 515 0 obj <>stream xœu“oluÇïÖ­=Æ(J,B€öÆ þD2Ê ’"à þáSŒÁ0¥»µ¥nt]ë•IK»îÚ>Ýu×vÝÆVÛAFÉh0à@¢‹¾ÐÀõ jˆ1¾Ðè ÃïÚ+Äk„ÄøârÏ=yžû~¾¿ûŽÕÖ`8Ž«Úöî?¸I_)×+pae°J"Wj+ê A µÓ+ëø%èÛgѵÅhú¬Çé¾îôÙ™Oço·Ñ=ŒÓb2»ÈuÆõ䦖–­Èf½¾…Üa§œ£ÁAî5¸Ì”Ýà’lä~Úh¡\ ¹n›ÙåêyiãFÇÓd°÷6ÑNÓËë7‹ËL¾CõRN7ÕEî¢.rŸÁN‘2d“|k£í=}.ÊI(§ÃàtÒž*ƒÉI¤>u¼Ï`³Q½½ÕÂHYl‡ÉFu»•ÕÙnM;+ÍjQma¶¨½ûØbÖ¨y®‹:jİMØa¬saG°ñ(x Â9<Žcjéô°Z,‰¯Á÷á½5Êšjøš²Â¢˜TÜ©Åj›…°º¸û`ü\¨û/®üYþ*n׈@¾vô°Ùv@„Å#üÄ™ñá¤67ÎñüGã…ó3h ψ}o‰ôV‘ õC¢D˜csSçÒÚ[H}y§ÑEâ–©Ñ‚Ãk[ÛDR|/¤sGý@3Œ/è‡1ÀÃzùQjAJqÅ5‘Ъ…°Èå„%‹#Ûšh pî„'†cñ8ðD:þµú;¢ZñtÕxÌì "}ÑÁ(ËBNñ0½ÍΙÒœ_B3b‡ `£®Øoû¯‘NBzDŒéöÄ;ò'? §`f Ô­‚ëÁIkÞsŒÐÉ»gf¯Ã—„MKH¥ýÏ‚m.Ñd ãñÃhnQ1Àd³ÉTÐçsèÏ,>/<¯Ú§¹ß|oµˆmi^Ýxo3ÂþþåÞýÇþÌ9Á’“ýÙÄ0ß-â2?áOCê÷ßn|Ó"ÉßÈ.Í\¸<4“ýC•üø¡YÿpZ—ü]…ü¡ËÆ‹»F,@ü௞‚îkö†uìAò×™ôæ­9÷…Sçƒ-.S'¼M¨‹ä-à? HQ\‹¼šÉ d³ xuåËJ/O&uêReh¾T¯(~' ½kè9ç† ‰‰½?).ºI¡máÑ(ç"è_$µçê뺬ý‚ù+ñà„’‘U2: E\U@M9a&+½ˆ~ÐŒó|R0Âò'å94¶ìÃ+ù!|Á€ß—Lê„)ÊYÔ+ÿ]ªnJ­ÙG""÷”HkI¯”SëÖgóOo<Öx2£[UO”v*ówI§î=[Ü>%ý«iU¡¾°P[_»´Û×° 0ÑÐ ]‹0ìý­e endstream endobj 16 0 obj <> endobj 516 0 obj <>stream xœµXgTTçÖ>ãÈœ£"IÔ“`â=“h‚¦(ÆÁT0,¨ R„¡WA:ÌÌfèCg  E¦¨ b/Xc‰Qo¢Ñ¨1Æ”{ß3÷åÞû½švoþ|ëûÖ™™Å¬5oÙûÙûyžˆ>Œ‰D'—56¶Æ¿& o‰„ Ä¿ˆ{€Aôó§ˆEc§‡Ev[VfÉøK4æØ~’ŸîÉþ ^  jÈ.®hèîQ·sýŒ5ŽG-›¹ HZªŽá#«4PO¢žAà<¯GûEhÂm䮯 "6J­#ãùÀà ’!DªÒßÍâu¨"J2+9h*gd’! ÇKÐ{и©¿Ëè$a(Âd Sª‘ •Dí/%ÑGJøÕ¡þéüßo‰Ñ(‘}Úñðf¡¹\ZÖ® e¤ÕÉMi]Chý6{©Ul§@b ~ó¿Tt½ò84@|ú¢mbhGyq+ofK¢ê%¯¡¨ÖéÄÂe‚ç@Ý^JR£üšìÑ÷A?¸G0=S^ÒÊ#å}ú±*pöP¸³S§svHõ"Ü×$è]Я/ÃI¸fÂë)Á¾JÔÜâºÅè¶ðÁ`å¤ÅF¥¦sA{‚òw’,Žös^— þmþ|SÈÞôƒ©Ç“Ke{bªJ£ „Ù¾ÙÎysÛ÷Q\Vd+²å¹Y &2ãx<ŽƒLU^v¶¶’Ë+eyEÛ–>¨æç£§nõ6¥ñ~¡ùÎ%ÁùŽep†iÔ|€Dù3‚”\vZäS yU¤â^%=ô¦Íш~ìGtb4O˜Ì¢‰z<­Œ’(¦ûMµ–11_âF‹¯E;ß|î*w2jí$õòY*9R´$Ò·:^:)8²/AYFÛ{,þÐ!óÐ1ý•ÆpÝ™-§Ðà~ 5aIGÈÅ›`¯^_]ÑÀØÐˆW™èéei=<h3ô7ÐLôFØÄ(Xø‰Ý—£ºÎéô’ù,&ÏLˆP˜¤:úú¯„ó!eò+d܃šA £èeª}$îÒ­ð–^T%DŠ…ièk¶HW¹ÿB6£§¥òD‚hH€­ƒ{Ò]ò¼`H†TyffÒ$\lއ£–Ì2@ÞøÚ6¨âôt¸|„B ánס%'@•U„ÞÁÿ0ÏKTf–@ä+ *#eiP¼zÏ3ÑOÑöþ¤ _G–ôh‡g»“G™'0+Ý–KÕ‰Õ5••5~ÀWw®êæài_Þ›Æ[e gÃfÞ7ág/vwVs¹[ýö£=Uö"j-½&"-ÑŽ•sË{XKÇÀmîÛ[#s´ ¤UIð*%Ý6B/R ébÔŒ’Y}[WŸZÛyðPAl“ËÁ|I4›†¢)•Wd@$ħ&g¤­˜k>ÿGYnFŒ‡ü¼ªcÊÂåÿP˵¡hžn®”çf²•Í·LÙíéæ™¼Í(‡mD÷VBïDäd•CTªJ˵Í5w,Ì+£ÈŽ–¶+Ô¸¨VÙCج™,:3´h=Ä)#š˜¡´Ò € ¨Šæ†åì#–áÀ[Xß›[P½c¿ïïT¼nK¸W¯tc¡ ”Å5­ô=À4üœ„×}”âáÇÇym7ðo‰¯Û­…\0âˆ~­HáÒ 7¦¼·ÅNÀÌ¢Fa/ݪ,¹Ç5è%R¹‘•`°}Q¦ÿ©‹@cYŠéïôéD-7Ç]1ú— a“vÀöˆÊøšju™þÒ’Ãsñˆï•í[Kd‚ÌiQQ:ÈR²$µØ-Ø ×¹ÇÐ44÷ËÎÞ¶ã >Õ¼Ù?Øwåk„Êkbo˜Æ¦«Q[ýÂ}Ùt(l™6(Ç]DZ—"? ÕñÂþleüsdnrNš Æß’_޲ fæÙ×%/i³Zù‘=|ñ õ:»M¨§IÇ^å4zl%‰…"-K.šÿ9tÕy1:fô /È#ŒŽÖokq%×dÞ³ÄãðØ'–hؽê2~)&þBÂßèå×XbŽd‰QþÛ¥›€ Ô ­¿ZÒ¡kæ5½pZ)!NJ˜nuKxaæÖÝ[ý`³ôñô õìØõ=é§W5rk7Á,p…tˆS§¨RÕ …ÊüJUó,…µƒçÕUÐYYÇ«õ *-0÷ardlåc¥Á)ÑÀÔaÄNuì9Y¨lo«åueEð 0w‘ Ìüxá+þ¥u7–ÿŸ¹÷Yà½<1ˆQ $¿%4íÿ­}÷‰ÖdOhÐñ!d»}§ sÑ#öYõÍóp“yŠMîâw9|ô¿`[=ˆ­îþ¾éI 1t;ìK® ÙëKôt)̃°Ûʺ"Oóyé=m>%§@FŠ‚Ï\% Ý [!åPÚ1EAÆ~ÙžôÞ¬¦àÆäâ°ºuåÌô–ˆn¹ª¡D›[”Ý`n£q€§Îܲ¿Î›¡’I¦}*B"B#ŽÂ[]\[ÓXU«ã0‡] ¹\(Ê ä²çW»x˜\¾NÁÞSVV^;/ 'íÙAÌ¿M¨ïºzJŒ|„YìÆR^¸À|râüçhŽÛoËçˆÏR½°Sȃ6ššuUѬ02ÊK›ç1hóò³•%\n¡v_ay«÷ù€¯ˆ‚ ¿ý ;ÙÚÌïèö(öQ‡ÂiÔ^ºx[l˜h˜Ë<•Äᤠٵ"[¢põP(×Ȳ“ ’ÐÓhÉùI%MÊÉÔ?AÓ`ühK(ÛË zö(‹*r •z28 Šüʰ­ÑÞÂInÞ@ô·:£ƳØbšÃôUït 'N÷’ñ‰Gs)?‡?ˆŸ'!æm4ñ·Ð„ï9ÁŒ>{sÐN…ÉÝ]J‰äþJ˜¡CL:†þð ¯ýΞAÃ× õ¿i3ÉßNÉÆV3xý¡Õæ€×ª]>‰7Ýt+ÿ_‡æÿM‡ ‰ÑÛQç THFÝuè3îfÞö»±ý®“ÎVÃbéŽ9!+S\S0¥À±uqûÂ+G‰íí=ª?Õz]ùœbÈ€zÝ Ë«b‘(ù Ü lt®Uœ®¼t¤ÑèÆNEªg•®!mº >‚…É®±xØÊX0žN’ס?@ÒrEŒ: ,[ Ù1\Dè¦ï±fÕ$ÝÇk™*ÚO–dÇI%uʧĪ5÷P7Im'#”q«OÑ?#"½=Qà]±°Í#îIŸ¶.eWzêR) v‘ÔUŸ½P[CŒŒÅ‰£ðŒ6ë›d®g–½?kãÈÑÖ–7ÕǪCRå qêË}ûùòèb+{÷EkV¶ÁÑ&‚ˆ6æ­îëïФ4úá¥Ñå‡h#­•³ñŠ,¤2)y¤äJ¾l[2¿±Ìß}³CõE)ß”©¯‚VF­ ‰KôµýÚѨÀ÷>ÿfÑÕ©•ܽ='>ƒÏ™[§¦¼·ÈÕÑ»1­\[SÞÐQ•1x£¶Ë‰1Íý –±²µÒm|°g€Œ˜ØÁL"N/x’T¾(Fÿ4ð¬òÓd”Æá¾?)ª°¦wÈS‡¸uè_@0TŸë'ÓÎÂhv`4ΊÑ÷Ñ â¯kDÏëÐ.2)>a÷'¶(ˆT"“«wËråyÄÛg¥òk#6ËÂÀ¶hb ÓsÈ•IƒŒ]<î%|“QBÆÊWßy¨¦×hxÜ ã+}²ÝÉHà kB<¢ü|Â=ÉâåÝqŸåÉó$ÐÊ:ÕÞúØŠð¸°TûËF»bòì éìQ<{{gxH?xGÃ+5¢Îƒè`§Aÿd{ë>;eîÍ>cõþ|GëU@}W¼;[ñ‰ûM#3ñ¹óHüèÎÏ?8uÏ?Ìá ØÝEÞµÐÃô_î¼tõÂ'WO÷Õ;¹¥ëY4z^müÁ p¿pÁ†ìÏÝýüäùþnðà¶;4Âdrø”uG, CXœü¶ûªˆõ9-á\¾¤@Þšû]‚:,lW|˜K¯×=ôÆ£`¤ÃÃ/ÙáaS¬°96dóýµ¶¾#³gWBè‘Tõ®68 Ýp×vVÕÕéûà$è7©"5î` Ìlß©vÆK…Z4‰ îœÅ‚Øð [QJD'©Š/OÌHO&èÂÓò2ò2ó3ÇÍ›^àô¨ÒØòN£ñ:tføsÊÆÇÆ‚73ó®ËãKgô‡p{¢Î­û®Ã¹“Ê/™(‰|¡ËwpN¯žC§öž>z¿å¬vß=㘨 ÔV@ä‹É¶~WHdd¥ñ1;B=·û­òÍÊŒ×NB¯oE¦µõß<ƒëŒJ×%noo)Z¶g)§LÏ1꓌˜P9sò}*õ2`n·µ´Ï³ÜÁ&:‚Û¾í°¾hya±Ëj×t)hCœ­ÍíªÛÇgç=YXÄ2ÇnZô!‘k'mÈbÏE·ûHc£ÂBÕQ åÅyù\NN6d£„ÄÌa«<·òY2©^&3/3¯èÆ5DsfèZÝ'*F¥bTƒV³}¸ÔÍèªñV Ö+BþýýbÔÍ.w—ô(š¢`'އqÁ1]2JTž>î\’ÛEk§r¢*ÔJ°W1­Ù?Š9|¶Æt„¦ÈÔ´¿Ât4EýDÔ†O endstream endobj 65 0 obj <> endobj 517 0 obj <>stream xœO[HSq>§ÍyÔµe`hÚñTŠâ¥’XF` EhEyaèAÍÝœgÎKÛÔéæÎïlÓÔéÙæm†—M¨Pˆ^"‚@ðE=Tõ õýÏ:©/ß÷ðÝpLz Ãq\¦ÖhªËŽÙ!rN $ Öÿ¹–¨K¹äÒµÄݳH›Ž•¨î &ÁqC÷°Úhê3w´µ3T^K>UªRÝ(¤®–”¨¨ =mîhÑ(–i§õZæHè¨cKÍôQy·ÚÆt³¸ØjµiõÝEFsÛíüBÊÚÁ´SènÚÜC·R•FCÝ×êiêd[Ñ ªz“…¡Í”ÆØJ› †IjjË1ì:V†>ù‚I±]<Œï cŠÄËVâÜKùvЯIâ}¢*ƒƒÙ'ËÚ¤Ãaxì°›cµ/.!–ŠÙ".JÕoö{rcŸûÝ}sîËr/ß:¢¼ X̾#æ‘’÷}<Éù9|DÐ#vÛë"Å&ð¸íÀfy8Gh‚ãfyrff5˜yWûŶ*G™H‰Röê>¨rí¾ÂÆ_ì÷é#Ö=+Düg)¿~ïÓ<6%mAŸïü8©HìÁ–ði?H|”qá0c2 ÞW@ü–!)¯ÓŒ@ïHS.;œ44á Î{§æ¼ä3Tå/ø³ÂÐOþ{(ëœ=Õâ½LÖã²KŒúÃ!η> endobj 518 0 obj <>stream xœµZtSW¶}BXïѰò‚ ä‰Þ!ôN%t0ÍTãÞpoÂÝ–‹¬r$¹÷" ËÙØÆÆ0aB:@`rŸ¹žü%Û$óf2ÖüÅZZH¯Ý³Ï>ûìsŸT÷n”@ -^³aò$óÿFòü nü»Bw¬{-oK²‚ÞBèÝ}ß qglx§~¨þ-´¹/%Ã’G…îòö <Ú}ÌàɳgÏ?xʤI³/ ð Ýåî8xk¸g€k8ùâ?xcû.Ïð¨Á£çù„‡Ïyhˆˆ‰®aƒB½ß3~pÄ®pŸÁ<Ãx­k€ç`Ëâ&Z>KÃ=C¯ òð ¤(jËÂÀ­‹‚¶-Þ¾$äÃÐ¥aË—KWì^áº*Òmu”ûšhµžö^ë¼}6ìÚè»ÉÏÁsÀ–÷&Mž2uÚô¡3f™5»ïœ¹#Ä#ær=fǸÞãûìœ3ѺE ¥ì©ÙÔ0j5‡N­§æR#¨ ÔHj#5ŠÚD¦¨1Ôfj,µ…Gm¥Qã©mÔbjµZBM¤vPRïQK©IÔ2j2µœZAM¥VRÓ¨UÔtj55ƒZCͤÖR³¨¾T?ʆSoS,õAõ§l©n”5€Ê Rƒ(GÑT<ÅQ µ‹êAõ¤æQ½©ªH½OYSAÔ[‚^‚žÔV’Hª;¥ <ëæÓíáváÝwu?m5ΪN4L”C‹èff SÒcQò¿ô èy¹—ª÷èÞ÷ûè­ÇX'½e÷–¬ïÀ¾áýºõÓöãmVÙ4‹‡¾Ýçí,v=[óŽÇ;çûÏíÏv»mžÝ[v7äøtહƒz ª}Wôî!îîŠdº$apÁ¥ƒï é7$xèì¡îæs–7ìñðÀáF ±p„f䌑ñ£š3Ê~”Ǩ¤Ñ²1Ky¥u[˜Ð6¿B/¨i[(䇶­fSóU™1JyjvoÿÆ6j«{¬ƒšñ§÷hjëÁ­ªõ±ÞÃLô¶Pc…N“£ÑJŽ þVD'ðB+…]ÀFæüézÝg°Âu³Ê|Imq™²ZøYá[VX*²æ[ÁÄ[5K 6¨Ûäy¥¿ø0ꆞ³¸Œv’Árr£:Íqm%Tgïëxör– ÕôOWO_º˜ë°ÃqÿðÜ- ê½ ÚHÃC0ù×Çûê×Ã"pt ZÈoþLã!2+Z|ø³¬”í *m“ ¼mƒɿâwÑNC;šÇ;í¡vT…‚;ìw¹»?ݤ6H!Uªáù¶˜E*]j¤ÙAž¡ø †1Ñ>ÊEà þ°Fã¥5_UJŸ‚Ò”Ò ´›lñ,œ°s$ØÈ4ÍÚZh€SP¯´¬~§&ºJ [—–™‹†"/[4'k:(í AíbÎMîºù Б$èÝé»MŒuÛV’ãËÔh²A’ûèìóE/ú‹yÊwc‘š®Õf¶p¨¯èy݌ͫ¶ÏÄBÉ×IìóÒ+—à:óè½{ø®½›¹è¦Væ-i/§Å?{«dïsaþü ²{òø¯fßÀÂ<É|›ÅýDŽªÌZ ª@ëèï›'._²eöp‰5¯”ùIAÕ}´÷¾÷C¾,z{Ô+Ü÷‹¸f‡z >?|‡ÄÁެ 8— =C=4ÂÉòC•GZÊšà”V¸T¸Àz¥78H¥NÎÛ€y“1ôà¡ÿ…À6||.­îþ*wu0Á}½6DcÉ֢ș<^!—àÙ¸ ¯@¥ä€ÒíÊŒi‡9íMå®°SãjIT ý)dÉŠBþÆo¡;ãÕë®’µ5ÂÕÎ4…Óï+s%ȶnó’šÚ&˜lN¿äýêBýÅÏN£oXìŽfàÉh-šù’ &2ãe OTsÉxØàÙXÌZ¼u:.ÿ€ZÑ–}#ÁãIx¤žÓƲ˜"ЕIP"] ™2…’¹m ½ê·vâgØOÇS± »o6¡ñÞ®9Ôhóê *ºß_ü}À÷f/Óx¸™çW3åÎñÝvŸ®‚Ù§iÕV@%WÕý¾¸æÑÙtzL³ÃÀ ^?}‡X$û=î.?Ÿ®ÎRF‡ YFW?Z}˜kOÅV¸Ï‡3º{êKâÊ@zÆšG°ÿÕ$¸bä×…ü¡¶Alf.9”ÉÉ!‚kß$’a©•Q”‰¬öÞE³ÈÃ&‹ÚíÚqŠ Ôleï**Fz«PQ2–DNÀk€Á³DÖmiiçò⺶¬9ÝÅÕ.¦v¡yˆC£Ñ:´D“ñ ~ûoƒY Yùý%ðBt®H/9¸.{:Ì,Œ´÷Þ¼aýHB/¾¼Ó±Æ½Í¾û¨ˆ(Ô]¾ïÇ,^öÏ1äÏHiÏIVâçUñnçÄÌбøÜïùHÄ |ªògñü¢‚¤añq~ÁŽÀ,ZûѨ×g÷¯ßiž¶™hÒF©)IBMü‹¾ÌxìS×_Ë?¹ÈæK›ÜsɆ¬B ZD7¦¥BäÌK½I@ºÕ ð¶t«ú‰Næ%YE‹[pw,N Z‰·×¡ãDq¶ÕžÿåëÉxÔ?¿‡“£Á¯Å3ðìŠ]Ñ4<mˆc¯ÁŠ}çH­ØÊŒh”™Ð,½à§+haéB~8‹†™ð0´:T¤ž0xŒ‚‘~‰«iüÖ³„ú«UW/qgB7Ñĸz-‡¯‹¹crÁ„ö™,KTEãq+Чÿä¬ß¤ðç:éšûáÔYøF¿o!l!jÅ…v‘Z™AÚL äk‰äÞf'Óhx®•‰þ09ó()„h<êM¹à¥ô´ËÍT´´rèËÎ#·@9E‚ÇÒóaω#Oáªê Œ5ú[§¾ z,DRsüºÜÛ\…9²y$.˜×Y}[×™R6 1¯ù6Yq#Üî\s=OiYs¹¬Œ`”òqB~zÈfï)>xÙìPÂUêpƒÚèŽNÙ Î ‡HHR)²8ËwG5ò|B\­]E#”r¨7ªÂ!Ü5–^I_„4y¾?Ž‘mFœ65ò!-;-‡°"Gj8‹ºó»M‚¨;óPˆN¡Ñì{Û6n–/ƒ³Þ\kÞÞŠú }tWœó«ö¼öÙ\‰&‹,ú¬ÓÇY¥ý™‘Öh² *[ñÑðÂæm×v™µ1ßcQæùàâEÌZ‹Üh(MnQãéSYåpêCÊ=+ÜtÀ ¼TöN»ý=}À ¼ËÈÓA é9VD‹Ýõ<סÅ_š2ÊeCE²qľ/!¼ëðü^z|ÃÕšDÞÊIä–ÄIýƒLó%"³­r5”<à¥DŽù©¤l+.×Á5ŠG­´#?&uQ4ãÕªÔ„‘Xm‹…È ÈQ¥‘*¬h€R®#AÑ¿W£H¬>hl»À65>ÎW/Ý´t¤’a-²Ä”–e€"¦"²(µÌ*†ßW_ÞU™x¾(@…ƒÚÏÛÀÈ¿m4Ñ’íü6;×,xL~2DqøqìÓ‰cÏø±´u#¦G$Â5í}’d ‚T»¸L’tŸv{âF“pÏÝΘ!AõuuL; ©;}t,ß÷»‚F£~ë™GùŸ~OqìOÖ»T8˜ï1t f±ø»ÑÈÌìKpxŸ±†Aeݱ+MÈ¢’Eìp’º˜ \¶?ä€ò 1‡ ÚóÕ‡ËLûkO¡hŽ59åF“uFýnjTÅÏ®¢Ø¶)lRžZIô¾µ¨ôêBõ¥F ‘L{éŸd¢˜NOÕ¨Óäüøöç¶Ù u&0Y*áÒ•Ðò’0ÔG½]å ¾°]ëÓAê—à,i_@wp.  -2Ø99ér¨…tÝQ:›Æ<0îæeè!ÁI»YT#2è ì{‡ç¤ú˜÷†ã~¹?%ƒõa$,ÍIÖ¦&©äÉ*ÎgødH„mà¾7¼!à#¸ õ$êiEÛÌ qÎ/…mžè)‹\ð82œ®ÄËð< »[7OBKÑJ4MENþŎþB(üôþ#4l ÎÆ%øÝ™ïI¬ÑY‹Ø¢i² ÔýòÓGB´˜_Ì"†þê£é !¥KPDÅC(^QY]¨/oðªÝüáŒÍC8LÏó¿oþÙ q‰LtÇ´¿]4}QËK!Š@WX4_„z#êî‹ïF…ß•àW¿Û²ø“Ö¢DÅ,ÚÓ1>¡©0d»#BžjÞ¹Àn{І³ö ØcSÕq-ºQ×ê|¶¿ø E°ÓàÅžJMM¡Q’•·§ª ˜G0*ÐãÎw¨›D| ^¬¸7SO 9K:|ÑW|˜÷§­?¯¼lN¦——ñf\nf›=Ì`Ú)iúªÔpÈá ÓôPÉTD郂¢"B¶œ:sãÂ¥¯I_m›Ø½:¬<00,,0°<¬ºº¼¼šØS/‚úì2´°APoDYQ–QØ6±m6ÛŽD‘–}¥4½°ƒBËU™dÎN삸¡œ»¿è€îG8Bþ½„N¸ÓC¡`Ÿ¹;Ž”¤åB—¹A¡ožnÙ4è0—(¤Yðê²ðÕ›B©%ÚU {¡Iݤú­P^Ò—NÝÒ¼¢ì"£‘ä¼*Í9mñˆÕêêŽó¼@ ž'°-³UkS3ˆïJ»z>'ëâñfm™Ù{*ã!ˆ¸ì5Ú¸ŽÆQªÎ‘A^¦Ê ÃðÞ³Pap™….Z·ŽkÎ@äy>´Å’ö…x:/SëˆÓÑýÃóo@Zjžrlo³Õ%éóä'3-ÍæÓmÑœöŒŽí:~5ÃXWöz£^pšï/äW¶9²édN-“›”-‹S$&*9ü×_¥Æ9RÙɲ“r ÒrrtD#•RC›­AÐxeÝò.è wRïø\ßùíì"W°‡E!ný–¦Î‡¹ðAÚä ιqNÂe‡¾©¹’~ n3Ø_c=`1ê[Ùyx çà\Î:YŠzÝÈ6Çw9ªttÎFX«Iµ,“­Š¿!Àɼ?¬$Üi0Ò Pðu!ji{›-m8·fÕTð2åéÉ­Z+˜öB‚OÂdÎÏìF“Ó:݈=Y™Û`öpýüó&›c?#ç¯;| ø&ûê%š„¸ó'á…M¾ƒ­±ÕÂ÷¦l<ºâº¼Q>É*P+¹=Ÿœl8 Ì×çÌž»mÞ¦5¼ ûÊÌÆ<ÌNü3O‹ªÐ"âÊSRœcS’Wá1¯_Zu•L,Ã÷ ž?\0Ú4£î3~DsŸ.xÙ_Œ)týÌÞ«<ûAèÞÔÓãF.°_àkˆ¬6é ÕÇ!–3½œ_ÌSÒÉ ªõ!Î’€»”¡êdu˜*’Õ)jHdÄí2Y&s‡D÷–Áƒ–:»|P|ÎGR—j2À~¦>Xæç<éÙ $@Ö_ý#G ÷VßVÖ0`â] Â-7 Âh6;ÍÜÔr»ÍÞJw3œèðNËøè…i¿ƒ`Ÿ“¤4o_âóí»H¡ £‰ÅJRò=¬,¡£nß¡ÕÔÿ¾Í±ïw˜Päcâïx´“E½f¿ÀÔ—om¡õòÚ”ÒåÞúìëü ezŠZÊTIDÒöˆåà;3Ë’u*‚4“É1|”Ž‚ä‚L­.#Ë-j8yZÁ¸3+ªÈKëÛñk¢œöa®a^!;I9o8}NGЉtîÚbcyy´Ñ7Î'eçô+cQw‰øÄüø-› ÂKÊv£Ö!¯ljQo©áºù£¿øW4Èž;ìâR\¯/ÈÉ ^@«Ñh€ÑBœÂ/eñê5’„²B%“’®HϽÿêÉ¡Íïü;—Yã‡î¹ÿu!Ìäñtå“þâvd‹î²å41T}ë—7Ëw¸Xwpò/5íÍn<ïüÑ,ü6H†¸‰ø5Ö#fÉ3$üæ¯ä:ñ”o±·/¯­;Ô ß`WCÀyyaT ÜæVÍ‹'EG`‰+ñ‚­Ä€í€mÑÞö;‰q°¸Œÿä¦à´ñ›§B>˜Åf›7éʬakPå+J™P‘/v#–@W”}1?/3ãä“|º‹d1ó°@ê;ôÅAètäÎáŽÓpJw*ëdÚž‚‡‡.X<Þ«»e|¬Þæá«e{͵9y²¼£UmpIHHp”/ר¾C«IλХkŠ™F<‰ýß¾ÅB¼¿œAŽcá‡PÅ¡ðcæu3ùìνŠ}PÌ|üIóÕk—¶,Þà±ÃÞ‡3IJŸ7m…ËÌÓ)g&š³pb”Ö©Ù‘ËMh5÷r}àô£ ùqùÏÈê›û¿ÔË{6s‘e19«š˜Q®,zk~UdK¬µ[øÁ–ÙÓ_¸¶æÒ—-+©ú`?ܜȕO‘ÇsÑUÖÆñÃv®vÐî æeU›Â ¥1IËOº}‰X2q B~$È€éO§lÚåä¹9…»Â î÷ÕÔÿò1hÞs–Á}ßgc`'ø_Œj€c`VÞ–²†Êcûóëˆ÷ªÝUì”ç—¶v2³vÊu™éNñ³Ñ–,¡ W‚‡¯„hoý¿ÑÇ·þÀI¢½Ø¡ }`¾’d7’Õ|µøYd»%†lþª…)É¿ÕÅçwS­ºîÐUJéZÐh¸LM®6+Ól066€é ‚ÓÐ#šcþ¶-$}.#[«ƒ KŸKLMI‘sÛ–-^Âã¦ÖÈâÝ…¤“,X2÷À}>ŸsãڙǨ{´ìn•|âu,µ¾€ã¦Œ4Ú¶Ýáo““â!ÕÜs’rr´i¹Yœ‘ŸÈF¬ÈGsÐÜOòËN_8S[o‘ðöí£þðIî2Ñë-ùÏ4ó…ÏDëÈ ­ò½Úz³Ù™Y¹Ç”D•DÅÊdr‡{ã ÅQVæ­?Ð„Š ‚æûû/¢Ft¾Jضõa•óVù:l9î·ÿȉ¦OÜn¼\V÷Øìó¼Tj91é3»6Z#C $j¥dÓX§e.›ã ‰+}×Ñ'Ïú©‡#1÷—¬Y¸iˆkÆâº)ܤ±N;C‚ÁÁnÚ½Õßyî`mwÅþ\ÌG¡‹g´™vOt€ ¾£< &æASMÝy¦Z1gZXç2—58\ST¿¥ÁkÕ†5)AÀÌ ~òî¾ú“­ím(»Û* ­R/D:³³€•DmFôˆ’sÄÈ® Mlœn› l[Œî°…¥ ×GBœ¤ý[Q\$DD”B¡„ÿof :ŽÄJÚÿ*Ší8R`æî}Ø!í1\Ϲ©äAÃøVÄ—îÙS´÷ܦæ…q¯­XÀaÑßmÂýñ#ÐMºC$Íô,#ôìÑAOg {)ì€{;‹ò2²r8­ÖJ£QÇ­ Zëì(‘ËɪfæÝ¾è7#…^f‰×›Dûœ“hÿlü¯´·ÜJ|WjBëWàF¤‚ЇIþÕ(7q€¾šg_¹ž] IU\’"&B *+¶XþûÄ÷"‰ŸÚ–ÄâwÝŸÿ:~¬;zWd"û³‚\T"DÕÈž=‹KÖÓ¤ÔP–A¼BÈ+PkhWHiK#êèB'þÀtŒœ–¬?­íD¡3ñÇeüOÿ‡Ì{(·+’a‡ÂNü€úW3?uƒ{l^çªßÌ܃Ðà_yÿ ¯èÄøÅ£Æsåu©A•œ‡*) "@šS’JüÚ¤$r¯ËÏ ùMæ¿ MdñŒèñG-‡ÿpç¸Þg߯uΞŠT.°acz00ã1³Sÿòâ½þt³™Tî+YÑÏï5r´*4œšŽVE˜÷`äšÐÊ$e<$AƒiÚZjà£ÀÜ ƒ»åѦžWzq=»ÏÔ÷îaÈîÝûоwŠúooб endstream endobj 63 0 obj <> endobj 519 0 obj <>stream xœV pSu~!%< VQ£íŠïE¶ºŒ *\9êhå,”r·„¶”IÓmÚ&Í—_®æNÚ&M¤h¡@)g‘cwAAÏeÔg]WÝâë®ûJQÙYwGL2ÉLÞûýÞwü¿…%ŒÁX,gá’%¯¤|›{ˆ›<&ö0ÛHg»6ž5Ù˜Ð99i½¨q*¿­»K`±Ê*TÚ…|A•°¨p›(5÷xêSsæ¤OO5sæœÔ—Jó…E¼¼²Ô%y¢mù¥y"æGIjŸW”/ªJM{a›H$˜;c†T*}2¯´âI¾°pþãÓS¥E¢m©+ó+ò…’ü­©ü2QêÒ¼ÒüÔ[Û=yës!¿T å S—ð·æ ËDyb øe ‹Ei^%okþ¶¢¬U%Ù¥ÏOưeØTl6 [­Ár°ØZl¶ËÀ^Á^ÅžÁžÅ–`éØRì.–{€KÀN°³þ5æÏì ì·üc猽ÉY>WŒ§áýãk'Ì™™8;1#Q™x!fHŠg+#12Š¥_4_b£¤³\½\+.nR645x6ÂættÛšm÷ú¶úP}ÈÖâî3;:ú"½\ü¤)§rY.Í®Î#ëøzÈðìþ퇿èG„ß+C­Q[§'DÏçná.Ñûš[lÞ¦ý¤§«ï8>¿1û¹¬^)¡ycyh 䂨D.Ô®.÷Åg²„í„ÿõÀ¡=€·ÛÅ‚JUF@jÊ-:1ž?%ÆÉ(ëÂìøûñ ®ÍàPj(J©"ÌWy²®ÐwC ­§Ut1-¡ÓÑýôDôò±›îþN^;ú¸W:9¥«3[è‡éÔtú.À§Ð†Ð¬;š…Æ¡{É7®|}à3À~>Nà4 %å^°5€%`#’bÐÙQ”6 bùuöe:‰«áSjæiåµ ©sêmd;ôXðvë{`0ñQ§ÛðÕ‚B,ÍÞnõ“ž£¾cî½i×ÖSÌ $ôózŸ;˜±$;/ eCYÞRØ åÕiQõ2ÐÞ ÎÉÀàmpê(¹QK^–sO^ôw¾gGÙË[Ä•® …ëÖ­Ï|QÕ—Õl7Yɤø5ˆ¢#QÔÖËŠ÷ jn½¬`ÂëõÐë Š2å¯ÒSsÖÒé€Óó9%F“Ó6fás¨y,Jà\óÈ·×dziP(œ2)|&[£•8Žø˜Á”âR[Ur£N¢%$óJ峄s ©]&Ë^HAéô``V¹¾t¤Ú¢òùMÎF3Ñ„X:5 „”ჩĵn5Xj"ƒ”™%h J£Ž~p8˜¬ÜjÔ̼jä_h"cg8m`Gž[ÈÈû®(Zdýå2c$÷KNÀ !ŸdätÎ.”f²™m`MiªõI…5²r ¡z6Ó ðÇ8•òÛwüŒ³œ®Ó U… OY>X8„ØgQªwDÞ #%Sü×r²V1ò®õF]Öf³‹LŠõzô2 ²c]è;îÕ &C9_P.s©íZ¢±6X<|Ó+Œ6'Î…‹šNìú”p4×û¡?²yGÎo7ÑWòls[ˆÖw÷õöÞ訫©%Jɘ®. ñ´«Åo£ÞDýïIñs·çN½Ûô;Ö‚.ríaÏØð`µGVY¥i ƒZ™§2£j²ä«(µ±Ì*UWV”Ê«¥²"À·æø®Ž\ &û­Nf™-»VOÛDO–ý¸LÛ{ûö|¿ŒJ¬““+éi …œžðšcCpn?Ñ²é¸ø4Ü€þ+Á¾}ï‡Ñ$8€_εj~Ä UêåC1.Ï£¾oƒ°µÁ7Ęê»Ñ§8}›»—+é)j_ÏHð~úz =õ‰?f|xl kO/XvRÙQh 5u…öx‡ÀŠ:z†P¬¯\žx¹&ntDíí¤=ìê³…‚o'×·{2ˆ„ª\Õ2‘‚¯%2iãZ±T\©RóŠs/(l¿p´ié%¼sØüÍÀ‹uzJc40ÖyHÙû”ù‰/Âø}v“Ìßp•EÛWç€JAâëóZ¢P‡d~¿¬¢`í Ñ¡}{ÛˆÖìãU nhÜi4)2ºªN¡'%ËÖdΓ„w··~Al2xe[ãŸ.h®-V)øP…‹kZZz{Od6òÖò¶ç‹‰ª¾ÌetB&}wé9^“Õk#Û®žÝwðžpÕz©b­ªˆ‘£]AmŸtEXgÞCÚ›ìØ«±û¸…Ú>ˆqA³²)´³aàü¼Àjú š¤ š|öÔÓhšwí¯¾z•[­¥(µš˜7ƒU€/,>t¦Ã‡XGÞ w: Pm|Ælßb m¸EÜùøt®Élñ2‡ŠMïTHŸSSBBm¬5‚¯õ£IZCi)±’®e8å×30;-^ò¥Æ_@clJA=a{íØÇF"TÉÀ5ó±À¥vßtâÇWõdЉôìô‹ÓÎ>ƒÆÿH–ñz¯û è9N:"Ü>ôb{˜Qý»ÄùOÐó —QÌÌ ‰MºhfŽ¢?ýltè)ÃguU@•Rã‘…Ü[³›°Ô;£¶æ–É¿k÷ÈLÁîîCƒCW?aÙXñ3yó–­ÿÈÐ{ :dÞ2ßXÙ¼‚\†×´Ñ幟²PÂ…®‹lt%>–Û ñeåe2¯$ÜŽ„ :wØÆ´‚¸¡7ÿøO”꼡{À"]awØÝîl~lõX\LX¸ðƒ¼Ý«Ò6þÇAÓþatà Nµ@¤­.a°\Ádþ£Ý,´ñ"ê¸Àޝ»ûZ£Q.'Ö­Ì?úZÓRFJSèI4‡Wcáu;x»T竃ºÁ:¿¾[}Z ¿ÇçΞNsžžÒ…Ø.sÈÚD˜˜øcØ`¾ÖHUé‰zƒQOiA—¢µj]õ&“×K¸=íÝnÏÑW#Iý;&«@ú«zÅ-ä¶h•ævJlÛ*‹Ð™×Cøµï|…°#K§Ëõ"PL˜Øü·â1)>¢±¿ícÅd±/¹ö³%d¶™vBNC;´©÷ךˠªA®YCÕ%+í:—ßìl0a”5Ö§€*b˜æQh$¯Ñ‹“z†g®7+ý^³-POœDÏô¸ÐtÀ÷r:MF•tú’NnQ”@J¡ Äs?ÒiNS"LE‰ÃÆN* ¸ÃÏ„¤J*¥&S%Yd¡¬à;˜­>< ýS‰`et¼ó§t¬ùAÇî;t|ϰŠÉì:P¦d• ´v:ö·Í»|¯oiJË€._[™ÉW ikej’ÅÍð=[ÚÿM”ß;ÍÝu¬»í˜Õcr› ˆ[(·‚¨€½Š!ÏZ:R®Tu†J¹Ïh%»)§j V£¬«¦¯W&ÏŒ9('s¢ZSÂ'ÀÞÈ”“Ñ[M”Á"}S4–Z…ß_?²÷ “¶ÜF"Öð×V‰I€”Øì.?žô-5šMñí#9–q«“ªŠðÿocÞæ`×/óçO6æ;ýù¬Z^œ§þ`QC<Y9¥¼;K4þs[t1}ò¯)ýBƒ¼6‹LBŸÐÙÍè%4Ž… #lTØÀ…UÊÌ—3õzƒ¯qhê}¼ƒ&ž©8¸q{EyIqKùÎÖ†011ߢhFè ÝdÚZÊqï…ÞH9SÌèóœ2(¦Ö¬/+/È5®`º©ÛdvÖ‡ß< -€ßà¤Ño骙ΩM´é»íQŸ…H’c ].9t®k\÷„ë‰ éÁÄñÝÖÄD û7v endstream endobj 12 0 obj <> endobj 520 0 obj <>stream xœXXT×¶>ãÀœ#"¶•”3`ÅŽ%"1Ä‚`EQ,(–¡I¥#HÊÌb@ºa@D„QD`°$ˆ c‰‰õ&–è3zÍD®ƒ››ûö€)ï¾{ßw¿÷øh›³÷Zë_ÿÿ¯-aŒú0‰„µwšï:ušáÛ1â{ñý>âÒµ$ëMAW²1˜JÁÔèÈûÿŒ¿œ¸~ #•HB"”ö!ÛbBý||Ã-¬<ÇYLµµµ™h1ÍÚÚÖb^w¨Ÿ§{°…“{¸¯w{8ý!ÐÂ%ÄÓÏ;<ÆÂêcßððmM™5Ù=(lrH¨Ï'ã&ZDù…ûZ¬òóôö²p ·XîämÑ{ºÉ½_ìC‚¶E„{‡Z8…xy‡3 3s^ðüûm BÆG,ŽŒröXãé´ÃË{ÅVgßU~.þ«×M±ž:múŒgÚ̲k:™aF0+˜‘Œ33ŠYÉŒfÆ0.ÌXf5cŬaÖ2ã™uŒ+3ŸYÏØ3“˜ Ìf2ãÆ80ŽŒ5³™Ê,b3Ó™%Ì f)ó!3“qb–3™AÌ`fóÃ3C™aÌpÆœy—ᘠfcCÍ1‰ÌSÉJI}Ÿ }Êû¼”.“ÖHÿa¤5þØ8Áø¦l˜,†Øbn:WÆÝïY“ &‡úÉû¥÷ûÅt•i}ÿÐþ̒;6àë£V ¼5(bСÁü`·ÁW†x i~ÇéËül^?tòPÿ¡ÃLÅ ³®Ç Gk½¸¤B"nî²å•{T»Â TiÊ’Ùýz¸2T!¡é\ŒB¶Osj¡n@•ê3Ó‘z6¼!¤0+4šìv:µ²‹ÄÚx’BV¯é„F¨‡Ÿ¡ºgéD–<cyäH³1Ù)3ë2½h¢“ %¸%Rq?vð?x|JúØ;ùÎõÔØGFìRŒì…\ð’“«Ž ¶JsöÓç·ýÑEæNû¥ÃÚ°9©ùWKX³®&æg:¬ÒKp4ÀÿÂ÷¥GºæóŠWÝ– Ñ•EÛ»žþ0ë+Ò?_Ž£jö߃ãÜ›;d†@Ö/x¬ÂÅì ­Ýz/{ÒWNÆ‘oyü ÝXì[F˜ÍËü>"¬ÜLìHmßÕIêЋÐT*Ö`ïMyF¦›#ÉP2ìÉ$œŠ6Ÿá`hÈJž ì{ï8|VÞ ¯l:ºGg¡a[YH…¬7nŽð‚YW{‚×Uà-zè%ÐRÌl‘v%uÍà« +B˜kïrbÑÞy`NRÈd2šl%8ŽŒC:"‹fhR–𗔉jy2™HøuSa LßãrÑ·1à4 ?–Ü8~æÒ­ç'à`÷d&9Š€«Í^9-Y«ÇÑ:qXƒä%­V‘ ¼#®–UG´†ž?xý-ŽAaò#òž³kT€§ü$Kæý^½î¼ÿ]G±™?|¢½ôp—;œÉp2ÚÞu©BQy„«~‡×Õz”oÂé·Îw£ï¦EþS3늤8hÑcé Ã{‡£-ÍâZ¬âÝe‘dÜV;28b-²§sä-xÀ]67É}‚àŒ¥h-ÃI [RBx®EŒIÆÝ¿Ðã<±TtËÌÄ-½X~ùòrRôÂ^—‹Ó±¯°3Q¹b8ÝŽêj]YsÛºýnû9ºï¤è–ÊȬF÷-šZ¸ {{ ;ƒBw=r-ýx{äéôÈ&]v|÷£ÞÝeµ”Áah‡GðiÏ?s¬=Í>ÍÛ2¿7‚ù)[&«±GÊp:TÏ/&ýifâŠThq@Òø%Æ~)û‹sørÈKUArœž‘¨LË)Ýšã\dèQ—&¯IÓ¥fCSrS(¸sŸXC¤ë²ÒÎ!µB¹¸HÈ—–eI®J+„}åG}OÁ0?ƒŠÐüÄv]Ô¹ÇA¿œ5K W îò#Т4Ç!T#dÆç@§…¬*¹ÙŽ‚ÞM/îEü4N!;øoô²0•ÀrX Ë54dZŽf!Be‰ã8IbÇ^ ~½÷&ÜÕ ™Ép^ޱžuR¹hÄš‰3ß¶ÍHš.Üß5ŒG#½ÌG5Üé3|zóeÔÝIŒlƒæ9´Ðç94ôBÇð†ÇiZ‘×KÄÑŒÏ-ÉλœžõQ©À¶ Võ¼­©LSªA–$'}Iáñ ñi½,\å@ÃJØÞ³ì"‹ ºçGkÒªÀ¼ò4ù´ Û{wèòûó¹eY¹ç ;«âÁ‡îÿöŒlþ§OwHO’ » ‹Æg •w¦¸Òs¬ïYÕÁf¥ìŠÏNÎJ-ƒ4Pe(ÕsÈÊá„ÁrÃúpÕBº>Ü èízœÔ=(7&[Y æ…y¯pÏðW¤4?Âð£y%dåäîáÌD}ª=jp†Nr–ÈàO <É?™Xº“4÷ú˜šµÚÆråž…‚./”÷e³·­Ü“%ÓÈô-Dj\ÔW_ÚÒZ!ß ŠŸ„6™6*µÉ°S¾,J¡Š#’3ü$›˜€ ºcE¦îÇ]­mù7´†¨\¢yáîü¼oÁ\ϺÐ*øÑô* ¤7GåÚ4%Õj•J>cœö7nù-â XóvÍ5­É**>cv*•³À\Áž×h ŽÒL ìïñèÈ]¹™™›'ŽÆ(%ï»+d{5W( ÌÒ»ÊíÅì»:\ÓF™ *àÕµ„ÿ3ÍÿÔ–•—•—V´­=ØDeAxuŸjî““œ7FxÈw¹ñ‡NœÜÓBÿ6ÈÅ›aUØVy ÛƤX[O쬤±ùýi×s=­tŒ¥i]œåys½lƒj¬…­@dÜi¯8œ3@˜lÔ‰—õ’JCÕRÄ|NqvÞ%ÊüTéÿÇ™Ç!>##UaÀñ.ò0à8Œ&1„&Úù-Ž/±èÔ=:-agpZ‚yäæGH‡HÌÑd(‚FN¦ ‹ôÛØê~þÞ©›­´Š”"¨^6R7°M¤¢/öå‹!)V­NH”ÑÛM¡rc 8ñhG&Ãa¹ª4µZ­RË32âã ”s?¸£ZÛ¸ûø=Âæ¬!ŽÔ °äý¦àXœZ‡\®`öæäÛ<=.¾4lr‡ðD)J¦ ‹¤TæG³rEjõöôU”:¸p…¬JóMß~k‘ÂYCF²‚³Õ™Pɉ§3Y¬î~½+1'© ÌË §`W!èê3<ÓbYæ%¤ÏK¨éùwK±ó•žø±‘ É‘´w2 AìGh+—‰ãùüBÐ@WžÑùU–Hæ·Èr~¨lE)pe¤®›MN¤'PšGåC… ö“•ácwYŠe„  œµìÏÐ3d4Ç@˜Ï –à--nf#Ê·Ô:ÒŒŽ3X‘Ïf¢ùéãåº#òu,:þA’"K$Ýy÷å®ñTÛÈ@À!_PVÙ(¯;Ó‘SÍУÛBƒ(Hm@—Zü¤×Ð%?‘Š®¸¯ÊêÊ[›ŽËÝ[\v¯4†™£É`bñÂ'à„£¯ÊJâ 5VŸ*ß¾dq¤]1Zï‘×iš3hÊëUêá5äÓÌõê»6ôhÜ´”vUá÷<úÇPF> c‰ñA b‰Ûèc–è#nr…_Ëê¼ÏºÝHûuTŸgÝoþ²õêõêjÎ+j7^YäDß*qÖzÇP¿Õ ;j€ðiµ`µÝÆ/¼JA·dzÒï…ì奺BZ•#Ä%%ï€Hγ>f_eCIk³OËk"õ&œ0zžâ&yóo¼J>}{I#¶÷Ú6ÇM›Àq†ü qão\_çë»’šÚá>g/]„ùoÃÿbè³aAÁþ(û3Ÿžûÿ=wt‘z<¬Ãýàžz4¢å°!qâ>ÀÞkÐ]‡SÜó÷‰“Ðmü{A^öä—ß ‚‡Ù!Ÿb?YÔ'Tn?àGÇÀEôñhó;é{O] ÜÏE‹ËR²â£ÕÊxµÜH†i…¬HP—¿µ—èÌì®2C”,(6„j×Oùr䜩D²¨acñNùÉuûS_†?(RUF WNù11šNäpLŠ ÞYQ¿Y^ç^Ë›™™_ æï®®>·é^¼a,²þâÕ«¿9=&’jðSƒ0]ì‰x-š<¢1Ò˜›ê==<=ëššê뛲¨'æ2¨„U%Å1íÅn+vsÂ'Ë£ã³5É®¬ŠR8À5l¯ò÷ ó]y!èúýïO¾ÄšŠ*вïNJðƒvzÑ©þïceQ$‰Rn>Jòà(àîvG&(dw4/(;½þo‚øÝ–.ȳÉ'} SB×/ zQìbqÄ1ú>±‹‡ÊÌÌ}Ù{4™{¨‡6X;ª–!`á=jYÅÖP¾ß›Q›ž©†®{KFŽYILˆ}:¾{Ng½2Ø= Ús>`ñ»xOe õa}p:ݧcë`¡bg[/8‚þÉhô6Æ5 …¸öêߨýéVaKï§´ëm²'^'‰Ñ˜ b…Ø K–ÂXçéÆýÇ× ’»'/®Œ°û7÷,a L–¥}ãR!¹ .–ŠÉ]«ù]E nÏ΂øèô„©B·é¯3Ò¨¿P™Ç'í.Ï.,É¡v¢#A'>ÓIZ©í4\.ãuþ)`*I$I@”ã'IÀDLÌĸgýea»£´¡Õ±¥€ p.å,~v=·êáB\± eÁè EãvEEmK £!vÐôeé[+$tc)>ëbùZó–©á(ZQ.;í9M»¹îJ"W°-š_à8}^AK/†>0D h‚—мM/9ƒæèŒïHE P—©tŽKJQÚA%á)²Æú¿þ¥¤¥ß~ÙO94±¸F)ÓxüÒ‰kõqUu Úc-ÚÀl¡éX{¶¸'­sííÖÚ{(ä$ˆD%%SÏc¾CœeØ2¡é 8øÐ}|§¥Aò öA'ƒþã}:ÁH·Í`I˜ÈÅYÝäúü’:Ú>ÍÁµîÁÁîSž¯Áh{û¯Ï? ýL©¾«ùüÜænÙ_$rbdëüÑú#±ûj•«J:¸1Whiþr€{ŽAA雨¥Ýî·]å­JPG©ÓU© „tnGL M'WÃý~m`{œÊwêÇ‹ódÕêìÐÄ%¤³{…±‘(ØZÍ3JÀáÙ[s5žú1„'×ôFy á$ÝOh\D_ÊÃä7Y,å¦ÔP)Ü gáJs]ùÉ£t¼ØE j¤% ›b7$ºÐÁØ­pc™R“¡É.’vÈI+e®ÄŠMfAžPTÜÐú€f&}l#É€­ËŠÏúÉÛw7U6l¯Ùä³qÆm쇓;á@4›õ|àé– ÷ ‰îšìoG}pˆçã¯<5&öŸªli;r™ªfCÆÞPïôØØÆùÔ„×ïÓ•µž÷ü|DììHñ" %˜„Ãü†Ú‹ñ7I¿¨¥0ÓS@ 9Ï/…ÐSéy;upò9Ð~²ãÌk³Göt‡–v„‰!%.¬Ÿòù”…¨øøÈ”@ÆíJЄf« Uœ»ÌŸeCñÕ²Âüœoé$Æábµ×–ñ±Î΄Kž ¸EmW]¼;7WØ]JGÃVÀIÅhtñ×­øˆzÏß1ÜñŸí;s¾á^Li%b¾`Îø55+nz Äx}´#¬£Æý¹ G«‡wè@'ùð¸ë~Jò/ø¨Â*zÄ;¯5UNl^ì£Xå/¾ò(|¬‹Ö‡«ùìÙ¡öV.í·o=v¢¦'Ò¦½hrZ‡¿=} ½5 ñ@–ë@Ÿ¼ÒH¡6G«…z®a[UÀvÿ[N»¾ K'‹…Ww“X"Œ›M¥üé\4mù¬äZ½@dky+¸ûãSxˆ’KU«³åA'ðç‚­l \Œ¢çQáº3 ·Wy•¿“Ëæäµšâ=¹()§øçûhþ…ÿi—-Ûü½|ª}Ž×î)ÉËz|¾9yMµ†+2ô¢tþ\\ͧ“QÏY:pš46@Ô!0)> ¶s[kÂêöW5žÞ|n mЉ~¤¿0æßùOœoЭÎQûÊÉ­õwq2kP’ž“’bôõáåèá¡ <Òã1ÌŠDç|ÜRQP$#›rY½ Jú &F6¦}曚¢¤Ê´¦©Ãü76U€8 endstream endobj 61 0 obj <> endobj 521 0 obj <>stream xœ•W TSgÚ¾i0^­E;ÿ¤C¬½µ:èØV;m­Õ©UÔ–Öë.RA$ B „-!{òf%!a „°‹(ŠHµZ‹¥ÕZµÖén§ÕVÛ™ÎÌ?Žó%ÿÇÎÿºÌœYÎùONN¶›û>÷}ž÷yŸË¡bî¡8ÎÔÄM›’–-¾]~žsOø!n.>ޤM\˜Ó=ç~õÏÐë÷#ýL”=‹âq8ÅZ“ÅžX QHÅÙ"Y|BÆ¢øe+V,_ÿøÒ¥+â×ä ¥âŒôüøMé2‘0/]F>ŒßV!Êñ «D2™ä™Ç“Ëå¦ç=Z Í~vÑ’x¹X&ŠYX$”–3ã7äËâ7§ç ã'>:ù’X')– ¥ñ› 2…ÒüLáAYºTT K/¦(ê¡5ùk $ëÖ—ÈKd·d%‹ÄÛ¶çî|`ÕÊgbgÏ¡¨yÔj>•Lm¥P ©]Ônj•H­£6PK©ç©eTõ"õõ$µ‘ZNÕQQ÷Q39fp,CzEÅP­œ]œÈ=›¹4×Sóí”c¼,Þí©[§ŽÐ³éái;¦s§;ïÝ0ƒžñå}y±sbscÇ^š¹iæè,~ØQC¥†Âëýô<šÊÏx!³r¿QiV”Ò:‡ÞÅ!dë„^è7öÀ©óuÐìQ[´¬ÌZä‚vð:=®úÐÏãg-©Çs šÎÛe”WVƒ\å+s†lGÉçíÿ÷‚ßS U› ¦ËÈnŽL1ùÁ^‚r0huÕ4.Oâ£=èz¾>%6üU üH€ƒþg¬á÷Æ›|c…NzZQ¯nð6¹ü5ŒÅêq¶¾ŠsœG«Ýçê²ØBg¾þèawVΦ½øçåi¬ZfV‚ŠÞ×/ùf-tÕªÁX Æ =#>gÛ^ Ë´µ­íî6w€m>s Ý£ô»iƒ‰Ëö¾$+côo¥B*”fV+ÊÅ•É` «kÁZk±œŒï=ÿ«‡€ö{ªrJŒªª]llÄLZz1€Ž„8á¿Þæ¢'>âWgš4«H‘hOÜÐÄ¢=ަ£éß]Ýzn±‡½Óü×kð-}-éžÁà›¼ÒÉ›­Í`ò±M&·ªÀ`6•´[ùo#‹»ßjâón´$ïÿõ“Kp,‹·áüJ0ÎRm1ZÀ6°:š.£ž8´•÷ûæ5i /ÆÓÙØpéd[^C}ïsÃbÔÁ¿³þex6yÌÃóÞ] ЃˆA ìÇ ü´ý¡Nv ªç5öÔ‡£ @ŸëNÙ’)Ÿ'|‘mÝ.N:6 xg-™8qø©«ÜaË׈MÚý@+UPªq\lº&´Ô7©%GÝ„*÷@Û{ -¯igëò;E¯ht?Zˆ~ùÍËWïIÉÎÌa«_OkÉš A­Pˆ«¶€ñŸIðÕk„2£ÊPÆ^Pñk‚ÁΦ†þPWèÁ6Qrržª²âõ)9Y@'U]wZÁjóÂ.A( q"i_rѯb‹ VXô9eMf£4÷)ƒ³QŽ&ö×5™Í^¶Ñä4‚ê{Ž>3ó'ù¡ÿÆûîúN·WŽŸ~ ßÃæg­Zg§ðþ™':6RB”3B½}œÈnTÉ·:l5`¥-P«T›t:ó"NÈz¯&'Xø/Np uÄý‘÷;(‘jA©ÍcMz³‘´Io×¹]6GƒEUSœz‡–œLidJV+dýo éÜýûq"§¹<Û¿¢L :³– ›Þ¦u{,Îf+ãGklA=HA0nåÉ¿×è@'( `Ò+X7Þ1Ù;Á½ 7òZÁb©i¤Tâ\¨C¿ø†…iþë… iQaq•CçQ1-òºBȦÓ7cž¶[Öúàû¡ëLÏQÍôpîÀžG„xz’yk£ƒéúóPkÐ.äJ«%Z»ÓU©FcêFù ´j}~š‰ìÿ¡ô;î±ÿ¾€’Iñèߨ'ÝTé®P*4r-cÔîÃÛ´…Ú<“„O“E/Û™w0è•pÍ×ã82‚f²žng=øé᜽K²þMðö‘P?ÐîFs®TU -#h¦+SAH/}Wô[ß\d:^º¬ë†ßÂñóc}õ Ùð*}VÒP&•’8un ãQµB ˆóî.Ü)wÚ'éí¬ ÙëÉì^Rên¢ô›uN×-ôî-.úå;;Zo]´AKU^.…"ºÜS ô4 žN®oí”)éŵù@Ïó¥QÐ.›Õmeûî^lﺹ_½õ`Ù Y8ž-ß$Jß:AI]»#Ðt°ØU‘'-ÌM=%?~ñЧñfÊú/£ˆßµSµÉ 5±9ñÏåYÞÓG Ùsœ^3Ñ{”uŒ32†TW¹HYÍ'š®’­Õ˜ YeMÔÒðªU[­U‹õ%Ì ü±r¡D‚%g6]#N9-B½óòÊÔùóù³|g¬nÏÉw†:€>Ì{éûùÎy!5›ð%Î ^k†æÆóÁ:UõÝœ0¼üÛÜp|x¿*¡²²¼ÂTZº¨IÕÜl<¹o`~ ð|‘Úz@¼Q‘ÇèJŒÕEøgô†̳™½È{nœU,.[º â,¥M'lîCÐ@·*¼¥…ùÅÂWŽ=;øæá&¦ç|+ºÏRClòb“‡;ÐybÙ dÁ¾.óѳ<4±wṖI×ð/Xüá0h<{¼/îï]Þ ¶Î÷lÐɶ@ÀLž0µ]]Oj(Í*€&§Õaq²hvxøkÿ=ïúɆLù“™ÙìžW¶hÈžÃsy±á÷”;ú"šZÐà’;c”ããï&Ü\ óëÝÞzÓüAà«ÉH#°:]½§Íz£/h 5“ÚCqö!æmf52½äÿ*ÙTìÌ]·ýï“MãÐ0ºÎÑïd{ncÊÁÔ,&M,ôÀMÎ'cCc\4™Â÷W6Ê$’BIi}Y[kwk7³z|ßÛEL.èòÿ;#~3ØÝ7iÄ%ÚC5«)|ÓåiÕ…U9PBïë½Jð-pÿ„O±1góîïñ9ë[ß"ƒ)E–v’$zU\áF‘—ø6SZo6W*™”— Gvµ¿ü_xžŠï{æLêkìß Ôg+`…`ÙŠG½„¹4«ÍÑfq2»ÅB¶g­Ö¢×›íŒÁ° —’…¨sœ‹¥ÞËœÚz©òY|sˆÇЬË⾊zVÖZa¼µØ™]«¶JÜâ.8CúÉï¾½þVŽÉ5(@ǘAí­µØ|v&6ü)„Âx€^¾Ã¯é´;½6·µˆ~þâ#µðÎÆ®§<¡¦žžÖ¶WÏœ: N‚×jöšHÞÑYÍ`¶šRŒêLPN,:b4Gºe½¯¤jV&2baf†°‚\Ù'Å-‘¹Ä&èðEþÉŽÙ¬^‹ÅÚ¥·k˜BÈ7J ĶÜh«tUPªr›kØ ©¹J ¢¢Ìxl¼"îùpÇ_k݉zøÝ«.#Í”Z¢1¡ÔZ´V9á6oXÔRûñøÿÚävcÁîpÕ(Ä[ÐÆ@ø1r§UŽîð-µ‡ÁAû”µeƳHÍà‡Ç?0*IKM‚ Ò×âm²Y»»îôaôhdØà‡+pd¸­ÓýÊ@Áqè‡ÖÖÆß¡º·þ¡›e/*’-1vøÞW?Û‰([Cía{ƒÀÑJ N†}¡Y¬aöá-Ê=ªtcµÀ¬OYú Ð{Šz_ïªé¬é$¦)³%Üçç\#ndyXÏ÷:kà¡=j·Êhm3þ®Wé5zP @éÒ{ôaòE\ÖJÂ(íq»=­CédÇÈ2%uã-è¹»”à¢ýþEé‘̹´@â/ìõÖÙݵŒÍj!óJ[,æÊ5¢-99¬ŠÄ/24Z‡Ááù„l,âVÝp—óÅ].Ú~†ßUÔ–Ÿ_T”ŸßVÔÕÕÖÖE1Yˆ,ëá{ûOÁ?]æ"_8‰ïÏ[Œ|ý« ‰ß i×Ñ2Ä|qJ<Ìd'“FümýÝþªÊƯôW5ÝÞÐÖ(·e»Ø]žJ('Ë8;mËŽ®m¡Í¬·˜ßžÚ½é$!^ùèöÇ>8?€’у‡HõúïùÞþ¬½ÊíÅkø“lÒ?±ép“ÀD”?£G2Bîr¦!>š‹ÝM]»xÞ/ql‹fa!}ù'n»Ão«#ìÅÔ ½*z 'Ãö|#ÙËælLÉF7u’²%Lã ‘ð4>ZÅ«;}m%PÊâ^ž2aÿ¾œì‚ÐÑQÇrYí.'sòÃѨ;]ç-Â× J] ªšò@¯£³ÁÆÄ‰OÊ ðpºgjhúÕ{™é1Ëý3¦µ;gÌ ¨ÿè¾c endstream endobj 10 0 obj <> endobj 522 0 obj <>stream xœV PTWº¾mý š5“ôEG§b4\ãDˆMŒŠ¨\ˆlkÓ€ Ð Ýýw·Í*ˆ¤iºYl‰ƒ®¨“ A jgL4Q3[fÔÑù/9ÌÔ@ó^½÷jêÕ©ês»ê,ÿùηã6†‘Éd|pHpXp€ÿð÷té'2é•1Ò«rÈüaþ`¸;xÉÁËíÀ+>/ÇO|1wn~‘ËdiÙºàÔ´eb|‚Êﵘ~‹-œå7Çߑ߻ÉqÊʨ¿(UB\r”ŠþIò KIŒSåø½¶8A¥Jûù›ofggÏŽJΘªŒš1Ë/;Q•à·>.#N™ë÷^jŠÊoMTrœß³êf?ëƒS“Ó2UqJ¿ÔØ8e Ã0¯¦¤§)3TdEEDŽą®MH û0É?`μù Þ˜Í0¡ÌZf³Ž c>d™יÌR&˜YÆÌfÞcü™æf%3™Ï„0¾Ìxf#0/1f£ ø0nŒš¹![!k/Yž%ÿÌ-Ðí¬û|÷v ÛÊɸTÞ›ßâÁz(=ÎzyÆ2c7ŒýÁKçUëu\ÒûHƒà”b2äšñwÍr — BqµvO¼”¬šÁ¦á‡|9lV(¹zS—Ùûà¸Ñi8éõS' gDü«Ü}C+Ê -P “k ìcQšÈ5À™…“Ë2F²!¶š”f:IÉ À•HNr>ƒãò¥‚FÙ©»ø¯»ré6– 8ƒŒÅÈkdñ$/Ðß™èM<ñg´y£'ÎT)–‘1ç1×"ÛÝwÝ#H(‰ cÖ/}›2]ƒo¸d¥ò&ù 4$ìh]sn=PYLæ‘È6¤=nÂÀ§ø Ž­„²‚BÐE5™N<Þ&nÀÏ%kOã!ü5F¹úGo‘Ù ¢9ߤ¯¾,õ"qû¡¬°¤v«>ÒYpb\æQ=®âî»rü „¿}ÝûåÀ;W '‡’í³j£Å!–‹ÖiWP[LçÍv°Cá€qǺÒNpzLŽZ-mŠ«,އwbb!ˆŒ‰Œõ‘þšoÓ:1ÝŽéÎñÃ…¹õî5çÄ ¹¸FZ/€Ó\Yi-³4Að×ïèýbuÁä%q.‹Ë „þºÏºàS¾Îeâ­ šÿUÎÓ¯ÍÍЧ ÿ½œ¥÷¹ 'Ðht%ÕgB|as0©.çh^ð—ö}f³BeA¡±¸DÔ¬‰7j Š«µUêZmsÁ%u[Ñ©%-¼´5ß)©í²S§°ì”\zQ2 µP^¤53ó:]Q^‰6îðÖ½ÑÀûð~`ØÁ{w‹’m%ße-¨44dYKšÒà#>"6ü½ôð=mÛ‘múnc“±\mÒ_š‘ü„ÛêÊR“ɾOaµVîÛSÚ’~Zuø¿|vóVoìQ0‰Ûì²,°eYʵæÛ®8À?Ú݇êˆÇ/÷(ÌÐV_ ÖEé[ªŠH— «äÒÉ* ífóI »“­Àñ¶:”ßcmâÃÅ”)²”l‡å"¥í"tè‡Ìâ‚JªŽŠÃ³@2ö\2¡Bá¤×8\ƒ2ºöœ{ré‘Ðn©º¥ht± úű°,t…¤Fî–¥0^rpñúÂÅŠô$¶Ír Ž@Ü‚¶á=\éÜb}U;-w°°^Ê ì[!­Ôu`†=|S+ì§ÒK7†vB:D›ÒF¥wJ55;pÍÐêI¥fM5Ô€¹´´—Js&5õv™÷™x*XCš1 Ò õù¬6}Yõ„B½ZWH¦’“FŒ§9±ß&k•>‘ãm©TÐÖêJ ! Z]™?0©0-7rµWrvs‹Éûá¸Á6ʯ(³¾* Ì­÷xŒaíaåÙÕ‰ œ¹”M¦‹ÔgZ¡ÃàÅÖ‚6žø¢ Pö¨u÷‘nÒvÙ1žÝósÜ÷•\òÅáJÍù.¸À÷.¿Dd Òú?ÉŽç8”÷_鿼êÜÂ*‘DàòQÁý™}°/0#>}éOEâÆâë™Â¦w¢"w¼ï/Î`t–£"®å(5(› Ô±¤q¹”&Å YöMK¨½Ì$Kf‘YH{œ‰/Ýúû7?š‹fÊüÐ…ÀG™M˜ŠJ|ÓÑuíÎF2ácѬ1i+ŸQ¹QqЍ³üöŒ+ š¥Ó¿—æ NLF÷¡.Þ@i—‘Ķ\¡„è€>8‰äI}š:-dÁd˜ä`oš‡¦çÒ`Ë4E×fê6‚CÐmhFÝÅMƒM¢t„3™°âŸ{Š­Å•0¹¬{*øQßÛéÄØfèï”KyR¹0´î9âògˆK[¹Üà®ds‰wÆfò"ÅŠy†hH?w}oö щ›•ìŠÝÙï*–ã"vä>±ÈCcB‘ñT6ƒw26ÛzÑcùà^üNÀ(êâóÉ:NÈBêë‘8—ÌÅõŽ8·(È#ò­@"þ+PÓo?|‚S-©!ÓæL§Q‘.<Òˆ½áywñÚc¹´¯ 胿}ü×)ß)âìG”?‚Þf¹Nuxn<Óá3б˜ºw·pÈ\vBñÅ c"·q#A"yUL.M ç\jj-AxH j\ÀvZKû¨ZSŒë ™ aædÓˆîþ©± ÕdÕ#±ÜÜÃÏ= È1T ŽY­_Ðá‰Æ†tj ͉£Ã¿°ê¨ñ¹qÛtºet»VÓis#4ÒähÝn™ÎzŒZÒöo– \—䨗ÞæÕg]…vþÊùÞ;¨8ó³é5 sèž{.n‰T i¤n_›Ö´µk&%)?gî”U­‘Õyâ‰M4_e×–ì××–\Ì·é\‰¥š‰Î/Ûìµ¢üØ‡Š•§ô׌­Æ2­Y÷<¶p¹ ©*3[*J‡ÓœryÛc˜Œ¾·>ýÝæ?‘1MÃïpIä° Þ“F.þ9‘ÝI2©××àb[#ÀÇ4+ v=ìOiùS1Il§å§í1tŽÐ †› 5­ÃÚƒØk·Tš[è\ô‡úô²x˜ÄRå,%ãAɪß.šCü€_=*‰ãNîƒ#÷´Ê Jˆ0Çÿ_\Þ¤^Ôiœd—ÿ ÔûÔxM€ï‹¯oﻶܵÞ‡å‰ÛƒSÖå­â ïYÞø$è̬{šƒpnÕø¶ãÆž{0À“TrMˆ…Õö¬?| ÷ ¾€¾ªó¶¿õ׵у÷4̪Ù?‡e° ÞÚ½VE<5* ê隸výÊ&CÓu9Þ|Qp€Y¥Ø´ieÞ»À'qNèž&~¨v°™Š„$¶Ýò:i{í#€%p3‡^ê&>yòÐ%ûü ªÈ¥\\J¡Ñç‡j4Kh¤ð$œíþÕíÖ=ûk·×Õö^¸x¾ãÑcÆMâKÆú„Ëþ¶½9 z-õŠúßô|Òüwg–Ì]Ÿñ~à["I&9EE`Õdéväø²KŠ¢Gøú ù1ü…„móFe®öÖË#Þzé™·ªFeþÍ?\~ÒfÎ¥»ŠŒÆ‚"91/`µäã>ä3r)Í8æ{\mlj_ÉÐÛ…ôÞø½êêr“¹ªBÑÙÓSÙÇ 9­6­!Ú¼‘>¬ 4%2%*jg4,î¬^‹Ñb¤â8´ßépä:wìL.Œö¿99÷ä{ôE…·ä£í»v‰¸‰;žß ôqо7îהꭣtEbxæ&]> endobj 523 0 obj <>stream xœcd`ab`ddäpöõ 14±U~H3þaú!ËÜÝúcïOÖnæn–å?„¾'~åÿ%ÀÀÌÈXPÞæœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*@§¥ós JKR‹|óSR‹ò+"˜YvÿXÈ÷caë‰ïWO0Þyñ}ãsæïÓ¾ó‰Ö…%ÔVv×t×MnŸ9fïÂî~ŽùÕó‹Šó«¢b×Fœ_ºmêšÕrkÒÖµ.íæøÎxö;ËÆþ®Å™…íuµmòÑÙéÝÙ‹ÖΘ²~âbùeß&¯ì›>s¶äìÙ ¦ÌîžÙ=£µ¿¦®©¹º»š£x^õÂi›ûNÝ’œZ^R$W°&kjV7‡¢ûoƤæþò•Ëú§Ïì—_pjïò5Ýkæe·v5v¶Êó5Lûá<ñ»Ó4¶ßÙOp]à–ãb©Ìçá<1™‡‡GùªÔ endstream endobj 49 0 obj <> endobj 524 0 obj <>stream xœµzx”UÚö C†Å(Ä ø½oè €Q)‘NBÄôJÚ¤Lz&3™>ÏÌdzz™ôL é@(*PWW¶¯¬{Þxò—3IPÜu÷×ý¾ÿÊ•+õ¼sÎóÜ÷ýÜÏs†Ë=ŠÃårǬݺk㢅îog±S¸ì £ØÿâEaãw’<ǃq£_˜[39•?‹ö=Çáq¹ bÅÚQFRtdTŠÏœÐ¹>‹–/_6ÏgñÂ…Ë}VÇ…'E‡Çûl N‰ N!?ÄúìLOÉð™ózTJŠhÅË/§¥¥-ŽK^ùÆÜy>iÑ)Q>;“ÓRÃÃ|ÞNˆOñÙî3¼»Ã_Ö&ĉÄ)áI>[“â9ÎÚÕñkö­­KôMz;y}ÊñÆÔMiÁ›ÓC¶d„n Ûîáµ#zçÁ]1»c÷Ľ¼pÑâW^]ºìµå+fÏ™;nÞ3ó³p8Ó8~œéÎ Î ÎvÎLÎÎ,ÎNÎlÎ.ÎÎnÎ\Î΋œ½œ—8ïpÖpæqöqÖræsösÖqp|9/sÞæ,ä¬ç,âlàlä,álâ¼ÂÙÌy•³…³”³•³Œ³ógkâì§g¯™9[Íj<²À…ö»Ø Ü3ÏðÐ.ä!z3H¥•êt™ £4ú<] ÆZpA“¦úÇM7B¹Cr=£ÔGÈïm¦[éu4Á¥óx…GZrn4Òs ÀH·A‡±Zá¦Å½Ø\e…rÈÚ«±Öj™ ¾Î©3f0 Ô ¥”ŠÅ_o†|Ê ³Ê´*æÑ[V]Ý^²„8Ç`1Îůý}¢Ñ^ÄEÚe R*@®aÞÁ«ðøÍ¯µlÉhÚù´èÅ\ùíoû>êÛC/½’¨Š ãÆ™Ã¨/ͧIŠðš7”&Öï#Þ—øyÖC´h\ßG9ï€Ùn¶Ôæ—0‡Ð,KfMÈ ’ý<æ ¹÷;æ·?(2:žÉ=Pô3`NÒ¢H`Τ¬-ço¿T¯}GL°?¿™ÉM ò}¨í²ûV£Þh°2žêa løŒ‡Þº!G¬õXÏòÑv´E#1š¾â¯XÀàK?ôÛm­=aÊøwoàIþñØoélfÿŽuÁ+šñ¶=Ù â„8WxlûªÀ½0P6¹A#ŒJÈ¢s[ß óðSxžµ´Ï÷fg[m]=†IƒtêÍ:¡„ì"Ϭ±0MÐjl&4=¤iúǨZ &òšZ”OR±må. ÈÏ4ö»Ðز.¦æ\_'X¡JW–`ϲÇC:htj­’ÀhQƒ³.ÔÜÂØÔÆxå ô£ ô”#4DaSòè혎ڄ—=z>q¼«¨ÞãÿŠ%K¤ÐeËãÐj• ¡äÍ£¡,Ÿ~‰†+,ȵ4©J:}]ºxP+øçÎÚ쎣ç#NMÜ:‘V¢Ift*]žû)È/Òç—è*äk¬UB*#ù™2ÈX â4Èót Pg3xò`óp&…ßg’MæW€^o)¦<ÙåÒJtõv1êÜ{<ä@$½Hð9˜ *r¢¤šPQ[zm™«èð‰MŽƒoGîgÑÒ“aåÿC¥m´4X Di}Hl¸P‰ím@>A¬W»©ÑÊâí¦ãYôqt„—K SS2¶Žüz±yö=XUb£½¾M0GZ»'WW^¹S×& sÐ1j¹d”ÔœY]Z[ÐÝrx#òÒ^Úë;xãRN½§EbÊq±3Go ˜« ö  PfU›ò˜Xˆ&É ‚cû(r ¤IPÌXù…Pª+ÔUj¬:È5hå âÅZi\BPØ®Üp æ-¿Œ„§«Ñ’»ˆ÷ï„ïR«¬ðߩ쫦¢i¿½Ñ×ÖÀØ’‘°€ÁltPžè>©lBZ[Aï,²3÷ù¥Ž‘ˆ¯ä·¡9ùE¤®˜„•™&Y’,•˜‚0¼Äc)?ó1´ïð×âZ9Â}Í¡'þr|ÄBä‚.CNg¼úÖ DPSbK=3ìžÎ»P‹‹{~ÀÅÈbYµÉj½T¥ Ê ƒ‚ ‡R¸B!Äö}áú‘æmÃZ\Ç?‹”ÃK…?©Ûü#æÚ¡Óx: SsؽÈâ¶[ HÛV›pEÌG¨ÆÕñ7âŠ_°T–!¬6ø‡—Ï¡Eçx¬"0˜ «Œ”C^œ§ˆ—ké5¸W•Ú<‰0=!>.¨€¼žæsÍ_Ö\a¬•¦"âúº‚Dá9ÊaÖŠòi««îw§r84‰É2QN“蛸öR¯œŽ?u²¥±±š.ÛÝ­,‡6¨¬)v•µœ&,ÊN'VÒ9;Ó·D•uE#¹aÃéCÖŸÇNbIŒÙv•$Æ>ì(˜PÖ„@Cܧ%IbtK‰®–èƒ_ì”Ì“oajdH-ZË£;¡º5C!6i[ÁâЃy(DA#!Zx®è´è•±ã­¹®ø”¤”‰EaVÐÕ‰ÆbSà|.ïÛèúÿoÑ1[›LeL+šÒªà&s6hI) ×IÜ”s³Š>‡mÐHúˆ¡:iÍ/&ªÇDês-¹.b4B¥Î¢;(ñN‘“{òê¿ÇcãÙ¡2ˆ -êcq|{Aü®ƒûÓe´øì~kP³wãI)Cè}‰‰©ûüÄá ÊSB“s÷çE0ÒZú^Ö¦Ô•~ dÈ,j´Új ˜ªM5K’’R†u¥ômno,¥+v“ÖõÍq4¹b$ûY*Fôê¾°` ÒD'ªÝÖÆÑU|ÞÚ\t¢îý#`„(É¡ Šèâ¢1"ÑG<ôÁÀ¢ï­*!¦F¦Óiè9ò\TéB)ékŽ2F:zÎ £ÓÈB \¸¬ký 4E/¢Ùn;Mk=I+oöØZŸ±Tƒ¡¸¢¡£½¥ý§,»çÀ˜±gxìDö‘ÀÖj¶ßÊ>\+¥D‰@hÞ#¬6†þ< Ù·øNb Í¥·PŒ7èóÄägªÉÕiÒtÌâ Lá…noú¤…ÏÀÁÅ'ïô9ÙRç„?Ý?WüÁ$¯oÑ@­ /_¸¨wsÚMzb7õŒËTP%Te–##7L¹sogôû¾úæO5ôYZo6$|²ñðú}¼"ÔÏÊ·üSÕ®êÂÂá\¢öÛ½Ãtð}»ž}F°OI¢¥¥²YUuÕÎöcAm›7ÔsÎlü=ÿÙŸ‹Mr‡\­ÓÉäôêù‹Õ™@íNê=}²îoµG™C—ú[{‰÷j‹C(ÏïžNÐåï^ç}7þdž¢P™ ~ž/&p•fà¯Ï{ïdOkZ^!þÔèàùÁ‚œá¹Z¡\ªËês¡ÅèrëèH÷HÈZ Ðç2; ÚZ(&¸5ç— ![ï­çŸüÆ Šb‚Ébv°c¸ä×xêà…”€6Âáv B iûWæÁú†–ÇžúDØŽ%Ù.Q]09é:z¨§òXóó5ºØ\ÍøWÿ²6.ë±ê‹—ÂÞ”\üÀØ §ŒúÒo|xãˆ6ƺ®–[sBkM#%(O«ÐÊñ¨ÁÍÞØ-U–èô¤‡Àã¿Ï–åÈu ÕÈì=X—³+BòÞ/Í–€-ðF1ƒMÙzmIÏ¢7•ÀUäD+ ^ùW‘ª‡ä(KЖßn‚K`¡ú"ož†§Ï¾‹Ž.ýÝOcu“ôW‡Ûí½–:Æìt£×¾1Úê¨EOÅËá ©KqíÀ²Z.šó%~Ÿ7ÐÀú Ðk3ÿ€'à`Še8¿ôн€ $FJzpöàÁŸ¢§ûŠÏ5äÉœ|øÕ@ýúºž¼$ ÷,d6aÞbÿ·ˆf¡38ØY~‡Mw¡ù¿®tr“î¡ó¤ßl$ÿS~©}„«øEËŠ¯YÛ'‘DVj ³âT9ÉF‰Ëd%55­Ý!U!s“ðÄhR"ñ(3çùkÇæn•…(S…òhÉÞHAºQZÜh*ª† Ê™aÏJJJ‹ èNm{Ô‰"¹g}îî¾½]pq&~ÁC¡«ô2M@SþŠÆÞ[s|ò_Œó~±k'„ì}sá^ã·V‹Ö,‘èT¹:sg\L,Pqšº¦Zcµ±–1V™z >ˆêz§ÌÍ­áœïN@ÏpäýàO'y±èš.x"Jñ¢—H”ä9úºÚÂæÂ6æ"zÓÞ@²V.|?¼&b~4ž«ú¡”Úšk¿*¥ª”di¼"‰{Mr0—|sÂÕ„oTXuȉ‡ÍèÅ|Úë7*6EP“fÍI¥%$UÈ‹*êˈ?#v ,¬ç¢w¯ À+¼§~<‚UétÒ<:`gØGëôiDJŸÅ\ò9f¯sÏicÖ8•Åêc9Þ'²­šÒ GŽC ‘ÔÂU³¿õÖ¡GU¦:£ƒƒÞ@ çÈe®Ö}½8\«Ðiˆ/UšÔf‹Þ`·ÒŽ‚Ú&{aÛî‹Ù'€"¬æ¡ÉhBƒ¢3±‰IråçÕ§›bm*CtqftRŸ~ò›ûëׯNÔ)ÔbZ—ãñÄHwH¿lwXÇP˜£î¡¨³>›ä5ˆ®¢ëþù%PD‰ëÞ9gž­xìWÍtÍ…Žóä¥k âŒáAؼÁñ’=a«¶‚0r¬Z}«ÃئïÑ–ÚsëÎ¥û•´×7hòÀrA½Øœ›”œœ,±§UW×8k–ÁÅâ6Ç#M±ÃV½ÕP¥@=ªÊÙJzB™?£•“®¥$eFº­×烉H‚{œBÚùiă(3üñzoRïÜÿ,-c~>´Á ×Ûk ©õ•HT ¿ Ô …6´0xò`K^Tžl ûðà¥LÌq8i<'à”æøÈœ¬Â!ƒl&›Ÿ± $UùPDjþHU‹¯»v·pXJŽ\ŽÛTSa» Öä§µöHR[³¹ÜA;Û‹Îñ c!y'}} P"mUE•¥^obL• ‡B¸â[·ÅVUTYYç:qæp_?Ñ‹T¯ V¨¢@>Ô®8ëËÚk3Zö‡FÓ;6feEeºý$÷=ÊÍŸ6qÄhÄ£qðßŘõŽÁ‚© çµwWËWNS“ÉÉü™õ‹½—'Êc@ 2!woýCäE(0ª#€&B> èâ><û ã>~x*Ud ÷Š8Ú^QWSH—¶] «J * ­HÊôMNáŽÍšÊ©$4á³yböŠ ã£VG›Ñªw¸¯˜ Z›t䊉ÄÈÿý“¬:¦DW­ Y"MS+p×`š÷;l¥GãI½½h¸åÑЪ ‡hˆ¾]RÜ.õò’ ÌÙÁACº^UB‚U½ƒˆæÀé.&·C{~|7y • ýݧ¯Õïd‹ñÚ<âf ÿé¾°½2¼FøO‹þóÒuo{Åß}q´üêÞòðƒý£ßû¸Üd­ØXùÝÎ nû5ývà]¥ò‡tÔ&“+5Ùyô`Ïÿ^Kö§"VžÝj6ÛÜ ÅÎo®±Ð¥ <ö«t¨ÐD,X»òæûÑûáµ°˜ŠÌ É—v¢™—èίÛÑb¸KრALPů?½‰Ž¶^gÚnžr¶Õy(nój_|(h#>°ï½Ä'²V¢n .ĭಂǰ´*ó•J.;—~c†¯"^£rC3“"Ê“_|ÌÜz„ÆO ÆËcä²U ”‹1ÐL7ô»¡ú4=ßúdÅÈùÈÔKôb£RODÉl°éóݯ-¾fq¢':Lº¼s¢é¿â¡y ú?¿Ñé*C |u€BcVZ…ç,Ç›ÒÌA½·»Ð¸ö²¼V‰R¥RÕkisn¾r©øˆ©Ûre¦úK7‘?òì<"z Ï|eÙ:@œ¼×w™ÔtCY,0ˆ²Ö—j$B}ZMfm†KÜAÊÖ˜>´Æñx`¡frBÂ6l€³fåGZÃl± %ª¡ÕQC׎•hIce#{«‚Ûî᱋Ð^Á4RµÉzMœ21SMkdáøErMm§$ÞáÈ$úKä_¢CUÈxÝ"m¿Û4Æ+SD ú ˆÇ­ÃÔëøùžjB“ Y”Ú"±š‹ ¬ÚfµYÎ@T@«´PU-sÊ#ð\oµ{D¤¦RKUöòBG•™nC³Ì:+˜AX©°Ä¤, {µŒÉP$ ©´Tú¡Ô#ês´Ã‰è[Ü¿»Pçuêbßz½ž(³ìšrE•¶‚fÔŸ[”F­Óª˜€´yB˜=¾DiTÔä¡Z¥Fú&þÐ[§ÑÉÝl!–Êb0Z,ôñ³ïÛ+¢v–Ê®ðGnm«ÐýÁ¨32Iµ”7TUHŠRö*ýcÖtoü=OÜÃ4ïvà­WÞ ÉŒ`†¶ËNsþîNG »„Œ×ë›yÈføçžo¸Ý‡Ò‘°È É¥Œ-×–Fû{Qø…´°ÄÁA;JFŸ ª¾¬¾ÜwÆuøäÑsà„fµ=’zW¢È±fÔ¶”Õ·÷G4ø-_´cæZf)'ÆKÀ—žïv1Dʧ¡ûEßbmAD)Ü›©dkœG®qÑ VÌC/²;Jwb À¬îá¶Þ’OßD3[yˆT3“¢4¡$¾DU %Pœ_d™…Wè´7.Ä›Ò}HâÄeÒÒö¦+íBãº×iôÜ 4ºïj}·­ ý¹R¥šÎN‹ØB1hŠ5-êvucˆ`¿|û®ª~÷»(÷]ºT§ËQ m²~àÙîú/¼Þ8SÜËc§¢AÁŸŽž¾ S·6wùâQ³gÌŽ,J°Kh³\¯ë Åo¼ž>¨e×öÜ'ç¦Üï—hÊkJ«£•–°–” jú‚Œb™ª©Ë7/ròðÁíÓðøõD.ôf]†½5âªtò€•KV¾¼9°ûâ3_üéÈðVÚîüÞÉΨá>j­½Žò/ñØ-èŒ qj’_àÎÔÄw÷n%<‹¶HŽæ;ˆK+’—%FgÄGîéÿý½»¡ÿŒ¦!_è¡ê½„'âIØ OÃsjðh4ælOǽ7 ÖÁ¢öF4¥¾Ÿ)pv_ùPÇKÞ ZDÚêÿbˆ·„oQ·âb.ÚƒÉ×I^AIάʄ˜ƒqË2k[\Í´×¹»èׂª¬Š„èØ˜Ø”’´úW“ËíOY¦2˜JSˆ<’«Ý-À_ÙG©_øº»%D;HV5F…¥=‡ž&ª+(4)*>¦JVYZf³ÛI@æ4¯Ÿ‡ª±Bàδ¾ûSù}¸è…3ì¤@AEE„ŠFÊ¢6*¥xÌ <íÂcñ.ðÛ–²}5º·eÎÏw¿ìý~;Ý'€3y2ú“> :”R­vk¦EÆœZn] ¾€_ðƒ8('‡lZC)ò5fsM{@£Qh£ í‚¿©ž(ܺ2œ~§ah¦ðõÙ“÷x¨!@ž¸ t;•¶ÊW1ýÿžþßB" B‡2i,ç—}]ñû ȓHÑÔ$æAØÈÌÚmoâ§ S«ÃðT1ßcÓ·‘çùoãÙ~éþÜýBE¢dO$¸Ç|’²IèIoý²ÍB3ë‡:ÝC™¬t‚—XëÎäþbAöû6Íý!‘eèYô zº9§6æq"+Jù&’È{O„fþí whØQgyžKÜw}ùÃ^-‹Îæ§‚N§LÏ‹òÖñÁ®« +MrĉƬ„ôÙ1x õ£Ãøâÿ“÷žô=i€P랯¨@¬Ï-ýÇÃô¦·ü¦MGÓêèóè†ÿ‡‰Àáè® àBñgÅeÇOuz¡&=Q!“.Ù=ª(-´›h=?¯óðDÈïîçÈÌC"?Q80Ìf'é8‡¼—4<¤æH´JUºû= V(s«²:¹_³<¶ YÅvp õ-ƒóøÙ2M–†ÊuÓ“÷“¤ô;Ùµ”l(qòq°cŒë©+OÓO^V1n¬Ó6n‡ó’rïl endstream endobj 101 0 obj <> endobj 525 0 obj <>stream xœTmL[ç½Æ@nRBI¦Û%»÷¶IÚ¤¡I³IɲV‘% AIHK YXÁ!66_×1Ûl°±ý¾Ø1¶ÁŽ?0¸1N€A’LÑ`ÍW×6,Ö.M«TÚ*u?¶è½ènÒ.Ò6íÏ4½Ò}ßûç9ç9ÏyŽKMÁD"QzÞñ₟.¿^嶈¸­)ÜÄr¾biýRadˆ!#õòÖuäfd؄οˆJ²0±HTß`Îc”:•¢J®¦wVî¢÷Å)IŒ!ÍãÕ‰³ÿç`âžè€“ÌDœ0‹¬$Ê ‰ÐfÁDƒÜ+Ä7é¯ L+è©é£h»³ºÍŽjXsM{ÙNžç÷¦íK×µ‚Öàƒ~êIz>Ÿ´jÀ¦ì¢©ê¹¿Í#Úï5@g‹Ãf´’å;Ê4µ€«:#xz¼Ô¿ ¶(æÜÜz¢‹íé0z› fÆJ6]­Kç7ðùü¶Ý¿)|¼075¦.Ê’µ³0 ƒ‘@"<ᛇn|ÙËÍ`SYHí¡¦j%à ŒxW‘N^#Úåo^ÖrkâÆ‡hCl†šXœ ó¸×·ßDÙ i™œÉG—¿]5¤ò+1w†ÛHT˜A6\ß׋ …&n–æó/ îü¹ãáÑoÑöÏ¿õ»¾‹Ãn2“§ ÞV^"ÿÝ\ô™2óänè xáº=¨ÀW!dq´OÀxá÷È5%F¤%&ÐI@›o–á1>ç >ïíŸ<ÿÏÊÔZåÃúO¦£®ë®Ë”;N$QÖWÉ)À¯&µ•»ø= $5ñqôNœ#–ÛøoY5Í-+Ùb®” ²â‚¬/ó¯¼öÑ©Gccä8Õt Mbi¨¯É–”—ƒZà(ÝQ÷ oÈàoT©šªKXî¢ï}¶ø`€Ô¡JÂ\uì l…vjfjèyd†JÜ»1:ø]ß[­»ÝLe¢/VæŒ~øGÚrìž=[1§¹Q©amÁÈp(Nžá?%ܧBøsqIÎ9ž6®ù8è$ûo'Ìtuê­QNåó':M:Ðe¯ÄÙ$zÙûoqv¬ºT²g½kË$e¸§+,äOóPÌ­_f¡õè™FeS³W7ŒÆH¾üû ciyî Ѓ‰µuE½ì ¸WÚWªÕu²ñƹϿ¼ÿu„ü†KaCàWöʱ’mE> endobj 526 0 obj <>stream xœ­V P“gþcÿWÅn¦aëþ‰]«`­çÚŠÛÖ*^µxŠ‚Fˆr$B $ܹ^ !r‡#!€!¢VðVÔZmmíAKµÕµn×u{lWý~ýìÌ~!KÛí´ÛéÌ2ß{=ïó>ïË£|FQ<otèšWzþ˜Æ=Áã&âþÀß…%Ï<Ø8üøàçÓ=Ùþ$ä @)PøDŠÏãÉSóB)e®x•8(6X<7$ä¹™âys愈—ȥʄXI²xD/•KTä™8\› UiÄAÏÇ«T)‹fÏV«Õ³$ò´Y 它gŠÕ ªxñ«Ò4©2C'^¡HV‰×JäR±'·Yž_¡ yJºJª¯QÄI•ÉE=‘¬x-E™¦JÏPK25±qÒ»â“dòˆ™³(jµžZDm Â©Ô&j3AERK©×¨(jµœZA­¤VQ/S«©W¨0j µ–ZH§&P“ "”•CÝä¥ñîŠâóù+ùõ>}ÎŒ^êëã»Ç÷:‘¾ÄÌã30vîØÆMwÁÏèwÎoˆ3øs7ÁÅMtòИA$äsYè¬à/Òþ'ƒbBÓrYÓ_üTÞèDúòž¢(¶Ñ1¹ð ›H÷–õA;tÀ!è5œðû£‹~%‹ÐËôÝO_¸P·=ŒÅšÿýÖŸsæwqSœ¼Î!txˆÏP‚LEbáTLáp?ý î}‰Xœ‹7 6Ä‘îV¾n8'`?¼ÙÕëpj: § WÙß.)Ù±mܨ¤ÄÆh¶ãÿ`©î;Ýâ?`¹OuÍ}7J-7DB&È@Qe$«DzŸ©.‹|£-Ê/.ÀËqƒG >U_ÖÀ–^hf]ôƒÂa#¤Á¦a›zú447ÉQ&¾-Ä鯼ÙôDße¥ð¼ ¥pu¸âtú¨v‰P$MàÆ›]èi'7¹‹‡øƒ¨kˆlxÀ‹_}4òdá^`ÐchÔ—¤ø€i_ãñqò#"EiìéÄ–b‰è‘ôÐ]̵ Zžèy ˜O.=‹y˜]¸(>ºîD’(·J ‘ñçæL¨>~ñIø0”)€»u§´XŸ_*FÖšÓÔj·u¸“œÛVo‹ Ï`Mw}ñ“?Ãeg ΓJ/ Wª¦—«ö‘æ>—ï䦷ñÜý¨¨Ÿ8n¡À•Z²³Y£© À&0B±9»*¹*,–-ÞòZOr™AtPÞ¢7÷hÁ'9°’‰Kž=-ùÊi-«¯1YrɆÂLžHgC~MyIIck±TÕX,‡w5:<¸õ ¼s,ù}<®YTX^©™u«2͇þŽ|,!ŠR¶¤Ðj°ck#It.aáxZØÄC£Ñä.>ZË=)@Á.ŒÂd¾¦9;fÎ20Š[ØAã1·4GÞ=øæÇìYÙ&z…l§t|ncIOI±úFFÝä– FZJ/ˆ{i¾÷‹®Óx¦ÃA0Ìát(ÌBº½ïà [²ÈWŽvÑ+ ­ÇEè.!ʹ|;÷¸‹Ç­CŸ ZÏv×ôxXO¸ `+ȼ¬u+Ò! ò:}‹E­Å5P¥mû ž°v»a+ául$¯Í°×% ø+¡uwyQ-Ô‚u¥šLËoÌA躠¢¥¾ï¼'f"‰¹’ eľÏX• È5‹fâRáTäÐÕ@˜{KZIÄ8Ãfȇt’©|$b©®qól  Tm2ë«ÈÛöýÐ0œ] ÉN‘ì}{*õU ô{|WX¾»¬Àõ`®²ÔÜCÝÂ{¸Û¢5çÕC  Ì•æ*Æ#"N¤lw}ápòú®¡äÁ.>·|9óÄœ…K’^–Û5gcS{ëîút ÛÓÖ¤õgÏÆ…ˆdôÃ*ÃòäùÒ¬ È,ø&õ½Ã¯lf-R‡´˜Ê濊ÎÈ6Ò;vggì„#Uìâ“‚!©±ÛÜÇÞ¹xͱ֟#³Ä#úriNwGw§Ëåv;ÞòàGp‹¬éU£Ñœ ZÐêrss–Ÿ¿K€'}ky]›Ç"ÖyÃXü·ËPb:µö[ œ#V*vîXl L¤{ʬdÚKáìõê©¶4Ï ÐP][fiëlïtt\ 6©È|AaQNš‰ñÈÄah$NB§×h ä[R»‚çðv'÷‹gÿœO¸v]Ðv®§Ò5Â5 èaóHg:ŒµÙ ‚bS‘.WŒuBÌ º¢:’‰9°µ«Ä#1†í¤í?¢Ú)¨5ÖKÑ<üP3E¾|90ÊìjYK[ª ƒqfÔ¥«UZÙ¶ÞýCÇîWš  ²ü.´ÿVcÏ=„âoó9nŠ@Q WA.“Ò¨v:ì Wv>ƒEÏ`>‡ûWš„¦¸ÑØêj-Št¦|[”¡x~:0kæCAhêGý§AãyUäDÒ>÷î>ºö`ñ÷£º‹Žß¿µ)‚ˆQæÏÀ<áë§Ð¤óÇn—(ŒF3¿OîŸôâGï H£ô»ÕŠØè´­ ±­i=)tÇá(¼Qñz‹»µç°ó$ƒciŒ·¬XZ8¼ï¬—ùÜ\¢ºÍåÐ2uOÁgLűQÓI5¸ßb6TjóŒEÅFÑ® B¤h»üˆüÙ*L‰CPÄ7Z{3žR¢büÑ'ÃLDF²ÊÇܹÅGáósá h´ïÍã‡ûlz“™Õè²@ˤ6f:Ú½’ŽÍ/ÍÛ$f±OHâ5<ð«ÂîÄ’´êÒ•”×Áë< ¯vŸç£%ï deÊvØ­åÖŠCʺV`¾xïÊþ¬½iQmµË~¼DoÐé ›ÑÔhj뉾h»·emÑK¢YeC\ýV`‚–®xa«#Þ®¥+ “ÈšÝÑ$kΊÈÙÑLè·áHˆШ“Wû“%ֳ뻢 ë}Á,¸ÓÜcqÔ5‰ê[œÕíÀü žNß©KÝM)’Š4ÀÅ/ ÚÑãðçM/FM_|¤ßn;M4rüxñÓûg~tx’†5¡Û¾Þµ;Ì‘G5ÿÇÞÃÈñ=-ã£î‘ CÕž˜œªJŠïÈp¸íÏÀk Eß®(&­ÿ¡=g¡jàMp{]®Ö[ˆ8Š&<ðÌóû^·»nß!~ÕÄo—²M&W¦ÉÚÓ®–v'‹çûý¸ÂSV ¢Ÿ¶bwºÙ¢eËKí5àdÚ3›Êô,YäYÅÅO/½}›å²i¯Ü}7|:ðQ?jܸüΩC–¶’@fÈ!‚9%ÛJ½rg2k¡2ÔY…Åx*f„\ ý³X(ë'"ßDθ?Âçôåþ2pÄÛ2ë2lj›ºVmO…ÝLV¦!—õ Z=9›F€Æ¼ë(ã…Õ“£Òð«¿óìpÌþÿŠéÿpÌ×p²çÃÐLñYü9Ì›–œÍj>|µi5Ì€èÚæ·ŸÇW¿u©*r㯲㷼õ8˜aÀºxc¸«‚ÚCímÃ{;É@î[Ï÷Z¥û;RSt`ÔiExþ£øy.‹¬íR( ì:D½Ÿ%‚ R"ú1^ƒÓ`3VeWhÖ“kͤÏ~´LH,³‡-K»N[.ø©ådÙÔHÑÎG÷…–3YâµP^a®A˸=B´ì‘Õœgε ¯ñ K­§gx³-ñ Â:'­«»> endobj 527 0 obj <>stream xœY\SWß¾¸¹*.Ò[A}ï¥îZkÝUkÝÚ¢b¸Eö BØ+9a„½öR÷ÀIÕ ¶Æ:Z[íPZmkk‡}ÿñ=ô{¿$ýêû}?üá¹÷äœó_ÏóüO”m?J —ºº¹M›júïxãHqT?ã?lRq¤ñÀ‹•vÈÞÙÛ6Œš8ÇÁ¸w[‡R6ApxÒÒàH±¯·Äyâž×§ÍûödçéS§Îu^è%öݳ;ÈÙu·ÄÇ+p·„ œ7ïñõ’D:Oœï#‘„Ì{ë-©T:ew`Ø”`±÷‚×';K}%>Îë½Â¼Ä^{WIœ×ìôr6ŸnŠùÏÒàÀp‰—ØÙ5x¯—8ˆ¢¨-‹ƒ¶, Þº4dÛ²ÐåâaïIÞw‰î^%ó\¹Ç5jï¯ö­õ^ç³ÞwƒŸ›ÿÆ€M›=Þš*Ÿ=]1#fæì·_›3zî˜ycß7ü»L\øú¤íoLÞùæŠM}@Í¥ÆPk©yÔXjõ5ŽZO§6P(7j"µ‘zÚDM¢6S[¨%Ôdj+µ”z“ÚF-£¦PÛ©åÔ[Ô j*õ5zŸšN¹P3¨•ÔLj5‹ZMͦ\©·©5Ôj5”Fí ¨”ˆr§^¡<(–N9Rý('ʆAÙR#);jESÿ „G1Oõ§œ©Ô@j>eO ¢Pƒ©!ÔVN29’úC <ï÷v¿J›!6É6lß¶­°ãí’íþ 3…¯C…Àø0­ý‡ö¯0sÀéK¶Ú÷³O·8(iPçà­ƒ¯3$eÈCß6vØ%‡wŠŠ~xeç+'Ù…¬–ýæÕ¥¯þ4\3üÈð§Žs/:98Íuª1aÄé‘£GªG9êÆ?–ý£”{û’wäï:¿éÜþšÃkFs£½Fýï1²1—ÇúŒ­ûlÜ´qã4ã++þw=î j~6`0ÞgZê„ä(Á êÒ9*%+ã’“ãQ XƒJ¹_é²*ÔÐ(EÞ|åïv0›®cç-EU¨Œÿ•.­A …)y±Y|rF8ŠF ^j gÕôul°ÃŽt÷¦Ð¡wÓ;<5€›a¸è3˜g|…mBÅ{¸%´\LªAEü ÜáaÁ ºˆ¬Û(FrÞ–Ó¢Ïî´ž=_ü‡¥{…ÝójMóÞ´žMÿ²åØ|NôÙûÈÝW&cº÷6*ô‚V£» ‡ÏY°‰]]lúL(ŠæÇÐÑbP‰*ùexüo§­D bó«Pòªó•4Øãpì„KíÂiyÙ»š<ýݼL’ðaÓÏx“$ü¯¯L;Hz<¡w½Ãwˆ6l'N0ÂLã)†Ñ_W¸úyú»LâÇÒ°1˜½Vqüê`n¯y€m8A+Lg¨F%|m—‚=±r‘Š»+÷ Û¯Ï+ç]p‹EýuÃ÷m{×ÎäÉÆÉzøL/øÐÕ£7§üŒm±í”‰xý0úA¿~ïÆ³ØÅ®wŸ|wýú'·®­œ:ÅuÑb¾Ïƒ # ¬%GÖÑÅÕÝVË{WªøÑ8Nqv̉×9UUXhz]E¯£a"¾l‡W‰…}Ï` e%1¬2¹)NoÌÑ àÆ£Ìx-AÕ‘)ñI)œ2)cÄ~u;µ[H†±Ä„x%^ä/¼ Ì7ßîCq ¤ä“^Ÿ托©³þ€IðúÃ?:¯\Ü9¯ˆÏˆJ—7 ¦é´&»°XoéáFOfjHPîÃ<(e/_:õÎ¥%3ßX¾rù»>Nsx¼í‘ÝÇš‚§?€†Lÿéµí¼èi½²Èë/yÜU÷Ÿò˜îóæ$þÜg<Ææ# Êc„#‡Ò~‰‰~ü¡ …0”;ùBü +2>%£x'ß TÎÁszvnÿXXŽ*|}P„”[Šë„}«?0@™ÁæŠØžsó]Špºož4 Î0 f΂I؉Ç®S¬Qñ£ìÚIž3¸ÿ:<ÛXùéNw`*ɩ݌άyã(/.¤Þ³f=‰ˆí¸ÉX„‡~? úÝ8ÙR©ã±ÿ6«X¿c‰õ6z»~Ûܹ‹WÞüöñMÃwO,páÌU®îp 7œ0ì !ù×S=h9¹‘7›Þi1}Ö E]Ã…žHÞ|U”sOz^Ë=9<<@¹‰îóèmacrž/×ÕßRß Ö(o`ÅÃᢠ†5ì÷—„Aœ:¬TZ˜ mI­6öèœ-«"W»ñ¢Ï˜—Âý,™~w̳Œ Èئg?Ó¯àWŒ"6ÚÀB¨caýÒ³?ÈxÉÙ‡Y<²¿KágÙ)Go¦{Àá–bõúá¢_à,ä°’Li†8+(ó½tˆ©ijüáË¢ÀÐ N•ÕØS ¡©öÂRIJÎCçd$ÆïHæz¿õ<걂=iKü"fÓˆ}ûü¦îØOÌ¥”¥æ‡"Æ~’PŽÄ ¹%ê–®Íû¼²ŽÎô¦/Oó¢_Ðï˜Õùg1ÝÅ3ôpœ€³jHZm/¶Ê¾ÝÎhqâQ:ÛnÛ± 1óàÍ/~»×|U‚©R>=J[Ósdà»Ï‘çÍù4ì)ÞMÎl?Ä.xõïØ ~x´¡Rˇ#©ÙÓf÷ÜÐÿ¦˜‚>Cl¤Y˜cñ!žó€îË´¹3ÍÄcBøG8~ã†÷í;÷u–!Ÿ*"ŠS¹®— f:WÍ[¡¾à¡|ˆ….>«­Ö¶²±»cpÿëÛ>¦©îRˆ-£¿gøà1ýrX5g€›)³{ÙWÿjbÕþ:T†˜ÛtIu·Ã¼;< »së/”ìKˆwÚ¼Xÿùh•¿ÏÈ¥ß0„ÝæD²#èH^Kó€3&Ž£¬j ÕRt@u)0e5nµšG™NžzîêUÆã—+çô·\Gc¾‹p×®î/3úÖ@ƒ?)ðÕ"r*G•(¿éœ©:Xl½ ÄgcÜiÚAG¼†" Ò‘aݺ œo£·â³v*:µ&ædì‘È«iù>(žÔC\xZÒÌ¥J½ÎÚµ™e’Éú>®C üÜ™)Ɉ>Œœ£ŒÜ2}õ#uQF£¦³6·àþ™‰Qe¨µ Œ’Ì ¦7\ÓôÏô »:Á•„,ÂØ¯‰­8­jEL]»îŽÏÊHä!@øÉƯðØ]ãÐ’@¼ª¸.·EÍ¡µZ›^¤.D¹ˆùô\À2^t /OÃC¶¾1bÅÕ•¿r¢ˆÔ‘}ª‘‰#÷¶(¾ˆ½‘ÞQî(1®žµ}Óã2-äßÙnõð/&ƒ›ÝA““BHÊÌ0ÅÎ,ð7.·ƒò aq/ÙM0Ö¤\º¹§oôŒî›NôèÎ8îOçÜ5¿'DÎ+3S5ªt¦›‰hõµÃ fÈ »ÃtQmoºôïU"µüâñ ±«éÕ ¸¿å‡i€'â¡x–ÝËSèoNšÀC:ñ»à^GÞõí±§§–tz°ë“ ÑDÌ:²°òï¥Ñ¥¡¥(‚ ¶šµí>BÄH+ýÀ‹¢·#÷Hßoµ½-ü›è°’Àɤ–VZj·²y¶%Á[ºû,#£}/G’„'È% ™l’X¦7Ð Ž=ü? j)öÙ—™ढSÊtIåS ɱúåÕÕHÃhü"3)‘Ê )ÅscÄAnÞÊhRgå B¦:²LºûÀž¶g'À1?“릷 ÖItغ ”,WJ“¸äَň™½ôæw§ë@#u‡P¯ö)WT!¦JWZ{ rÇ‹>À£f`ûïÇð~*íÜ1hÐ n¶C5ÉÙcF;6Ö;!(9ˆÔhü©P ÔÄW‰‘1ÌöêPߥúGôó 7üyc¨Z˜¿óvˌɑze%i ’ P!*ÊÉ)ÊÐ| š‚óŒº+”~é‡Â&]On ÜžªHµ$r›Žt3Þ V§Ug Òù÷Ä,ÿvZä_ ¤ ñuÜ!U¥¡(³ü3¡+4H‹Š™Kä…+„½èq£;Aö&è¿Î°ÞHq˜³F{£æ%h?µÕûy–ì‰ot˹o'ýAò´­­«gÀßv™pƒûœË>ø¤óÇ›×o^kÛàfÉÓ'íA|¾Þx‹Ý‚˜÷¬øÍÄ`}£?¬(ʬ¦auWZ¡O‰ª95d´òFMµ°oÆkÖ<¬ê5£®À+zÁETG· ¬®µ½ê'ü*øÆ"^ÿ2Xp<õmµ)µ"ÓdI|ø– ÁhZtFþ £¾Âݾ|ñ&" —8w,Ó×€´ –¬ê—X8Q‡]±kD>†êBÀVWÔÂQ{âvëbÏÄžEÑEÔnäŸ,¼ÜXðÝEÍ Ån;ÈNk+Z·1nChÄtÔ—0ŒÔõjÃÓ‡6 1)ŽÁV¥5ø}ïcÔÀ¥æîmÖV–Ô]yÉßY°s&·i‚E~ü‚;Æ[Qg•…:Ç÷¨ÌÕzHÓ J) vÌ¥©×æö·Ož,þ y,±’¿] +‰ ¬e±@Ú¨°ýƒþñØŠM›v­xƒÄ„"‘W`ñ‡¯ÀÎ+õ—d&YqèÒº[ÃEÿŒ,c7î>uþÃãÇÏ]8ºcÓzÍü46CÙ*iCÌãÛ·:ê£êx]AUf¡ZR™”‡˜ÒÊ‚úJYãÆ¸m*ß¼<ß§|'bÞ\¶hö®R¿b/ÂTœ çrŠê]Ä™¨›˜×Ð˧dÖ Mñ÷´³ËæÍ›Vžû'ß7˜4ñËfýLã!ßzöìácÂý϶éã¿Æª»t_%ýk5~`E¯šN˜¨3©»2c´ù|ÝBÝ´ï8ó¶:ÔÌ/À—c6É&í2)»æÔÒ„–IF'Çæ¿Íï‚ô&±êÅH¶5ûßÇr.Æ"Ÿf“‚žÊ$•î.Ôl>¾Ä&$&§ cêV9xlîµjz”¸,˜Ã ôå³?Þ=vøjûÉkè ìÇßŃñ€ùsgï«‹+ÕU–Ö¤&dsÅ'O5^D̃ÏvÎX¾m‹ÛË\}™EuèÄæúí5«3}EJ!´<•?§$îõc0qÒžbÿc’ þÊ(•Á+„ýñ8e·ÇÉKþ ½_Ì«5è ªc¾ß,9X|Z]e]C˜:žSã~éÊöž{¹ô+¦ï*Žw~Ð !†=„>žmà!Û~°îCt¹³äc,ÄöË·¯ð«VhMö%ç¥epŸ˜.nœñvŒö çýCÅJoåúÔh„‚Ño&ÔåNÒ?Ÿ}Ýš «§îY*”ÏÊÊ&½ S%ÓŠ%áÑþÓŸ®#Ø>üëÇO8ÑSôÉŽË. ¦3cÁ~åu‡‡ðÛpÑ×Fã§lIt‰<.9%9‰ •+H¹&æÆÄJu¾(Ë%QÒè pÉÈ‹å%ùš,M6×PWSR„òˆf(Œ-ŒÑF@µ¨®¤²T[\_ÊzàÒûkõ7AÜnÓ ilB ék¥Œ_nR#Y˜rµ0ï[Òɨ{–Ñ»¦ú¤_.˜C)ª)ƒßébXïvøW¡ÙÉ-0— éç èÜÜý…ÐPøŽ-‚×¾ð@%qY)ä'™XV&­©Ö–6´y_˜DŠw„Ý9Ñs¶K~ÁO_=Ð3:q?NdÜŒ6G¹{2àŒ°+ÑÞ6©^©Qi”!U&"?ê\„ÎØQe+K Ãw\9óéýóï/žå²~i7lèŒ-zÁqÇ5ÌÄ‹ñj_‚p?FüšKKóë¹,h7a‰þ²¶,=1&‹ ÑÉ%‘¦û#_.ãw÷°{¹Y<ûJg|šÏ3¸nì`Ï{f&$x¦nòÍÂo¥»sjO´7ÝSZCšëƒ(#'ýpúõuõõ¹Ì‹è<ÓUðô¤ëa'ÉSƒ›é‹ ÓåæS(†.v‰ë‰ösí§?¿÷áöÍë]=–ðŸ°_ÔžhC2fßñýÛóç­?¹õóPNôÛ¢ˆUk˜ôd ‡ÇžÞ]yy±Ž››Ø9.íý¥«ß=þpõš.æ˜êîÃ)Á¿©˜+Ô~°ù7uïß”ñ›qÊ7'ÉPP\†G!öpTGgDÔŒÌ*S—2°výï3ÌÆÌ퀒†ÍsÏTrc¡†ÇCßø¡#ouDIfV–•2U‘ÚP±4*пli€I½ ƒm$! Û&c›ñsH†Ð¦Iˆ§çйÒG<6“·éã;?i¿u¬N"-ákü ¶I©R¢”’)G ŒÛÆõsºã¥ƒÑ7aüM­4·ÙûÁÛì§tG¹Ðe0Þî´å]¬–°¼hä€RƒT±ÑxãØ—>]`á·éH<Þn›åÁ!Zއ T¤b"‹¢tõé\ ¶ûí%Ïñ«¤\~ë^al·H$^paØÃlàžÑ–m ¬ñ÷ìkmj­nläðeÛ¿=ëfËú;_ÛW$§.][Õùµþç;«® ý©ƒ“PÏ~sÌmA[Üw¬ŠcÖ€œÅÑBwgEôYMf^ªdêÂJ¥ Þ©;ç\ZL·Ï$øPu ×*„Áåg¿A7Q[ðÏx\-#ú¯ó°W¸?õŒ¢dK|bJ,ŠaˆÊ®ÕU´|æv ÈãZºe~Ë9/!î³j!ZŒÂ4˜‚ùÌMÛõy›¢³èôéÃyŒ¹c%¼Ým»ƒÉöµ—Mßò¼Ô~Ñ“µ]¶lÌF/Ytbrš" É™èâ¨ÒŠ/€íGM^Þ¡Á¾Á¥>mÝNé€ÑÖc:Ííí6Æ¥/†±™yéY:L$,IF¨×ü¹<5^™‚’œd%òòªì²üL¾þ½³ïòÖ­ûÖ.^ܲöÌ™–Ëw¸™ËØXYíñãåµå!²"x6¿··}û6¯u‹Þ=´át[륻æ™uÇ”5–zzÈ‚cMå×®3zhÍ¢i­QÎægæ r¦RV OHS%(8üïIHŽID2'“——ß`/Ç¢„ !¦’ò‚Êrò4›Ç‡ÁÅÎ\u·õðª^PgдÕŽÄÄ·4Ûhò·z†R>d™ß¬M1:Ï«Ò ¿À®Ñ›é{c2ûÙ¾O¿Èа­¤!;KÒ¹L”,K[:'Ÿ˜ŸBr(²TQTõ‡¸¿Fh=Á¯\)B¨01?>^ŽŠÜ4ubä²X‰Œ„˜_ù„†ÇÊây<î4íaö¢˜Ã yš¤¸òðöeDÕcÅA"èžt0pç·>g6Ý^Ô†q²41:?)+‡9XPŒg¡•hÂ>Ìã‘S£ > h&Q#­®‡]èsM«}«‹0.ÅO®Â«Ÿhn±ô£á¢ÿ‚ aõ¾û´7w×ÊÓQb´…eÅ¥±¹J5/.}ohP— ² ³IÁd¢ú=º4½Fýª'íÊ~??ä—¤vIå0uU‘«DIÈI-ËO.$A¬ÅÔÚØ¤˜d$uJEA‡9zKªrAAN Èoÿ~´?·^õ‘²¦:ô/Æ+&QûàÅ ÖÒ¤ºÐ~I þüŸ«„šø¸X5°“_Œ1¡ø}¼{ôŠr¨ba´…gðhC÷©t<öqŒÆchkÕN€1Jñ0 Ç›àÜÍl´ëylj|Zd ‘u&økúõôÓï=ä±GèïU/Þ¯ÉV§g[¢ »øâµžŽÜÅêaòŸcðd«±‹¹0USUooGLøOͲÐUÇßÑzp\¾qi.,̧qd¶P?À0`lß_ooo°DQÿ ÌVL endstream endobj 97 0 obj <> endobj 528 0 obj <>stream xœcd`ab`ddduö 21T~H3þaú!ËÜÝýcÝO]Önæn–µ?”„¾G ~åÿ(ÀÀÌȘ[Øàœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€\¦"œós JKR‹|óSR‹ò˜ „„Abñ?ô£ƒïÇ÷îM?æoÚ>ŸñûÒ‡Ìßÿä]ÙÞ+çé­ÚÞ͑¾´ûl÷ñåzÙ³ºëTäRØõßì> „7»µïåQÞ”À®Ò=c<Ȩ§ßŸgx²‰ñòw†ïS?0ÿX÷Ý_4­³¶Ñ³¦¡¥Õª»¶›ã·?Ûw‘Ïk—=9½j¥äÊ•[öu_âø.ø›õÊo©ß¢†fºÛZ§-Y1wýºÕñr‹öØx¡›ãËa[+—'Woùß¿s»ººs$¸³ñ•-øá<ë{þÔÉ Ø~'NcßÄu[Ž‹Å|>çêI<<÷æðð20Fh®Ò endstream endobj 89 0 obj <> endobj 529 0 obj <>stream xœcd`ab`dddsö Ž4±T~H3þaú!ËÜÝýƒíÇaÖnæn–…ß }OüËÿ=J€…‘1¯¸©Ý9¿ ²(3=£DA#YSÁÐÒÒ\GÁÈÀÀRÁ17µ(391OÁ7±$#57±ÈÉQÎOÎL-©TаÉ())°Ò×///×KÌ-ÖË/J·ÓÔQ(Ï,ÉPJ-N-*KMQpËÏ+QðKÌMU»ML:çç”–¤)øæ§¤åeæ¦200000v1012²Øüèàûá³qÁ’ùŒ/¾¯dþþçGªhOÏ”yݳ8Ög/ÊMjÈ©i“û­÷ǵ½¾»£»K²zkcÏ”Þ Ó'Êñ/þi¿í·òtöÃ\‡¹/äáb^ʽhö endstream endobj 30 0 obj <> endobj 530 0 obj <>stream xœ¥y\T×öîGæ¢29–3ØÀÞ1±¢HbT,£‚€„Þ{‡™Y3ôj£Š ŒTáˆQ±EM¼Ñ£/&^ÓõÆKbÖ!›üßÛšÜÜxßû¿÷~ç'ƒž={íÕ¾ï[[Ó¿#“ÉØåkí·ÎšiúÕV)“Fõ“FËIæ¯Æîd3$‡AýG ë-$å0,‚Û†2r™, ,uy@`T°—w¨ÍÄ=“lf-X0ªÍì™3Ø,óó öÙãæo³Ö-ÔÛÓÏ-”þåç€=>ž¡Q6z‡†¾1cFDDÄt7¿éÁ^‹'Mµ‰ð õ¶qò ñ ÷ô°Yàj³ÎÍÏÓ¦ïtÓû>–ø†…zÛ¬ ðð ögfÑ2û€å+‚‚W†8†¾övx„[¤ûš¨=k£=Öy®ß»ÁËÛÉÇyß&ßÍïøÍ˜9köœ¹ó^›ÿú‚ ƒO›þ ÃŒeÖ3㘠Ìxf#3qblgÆŽÙÄLd63“˜-ÌdÆ…ÙÊØ3Û˜åÌ4f;³‚™Îì`˜ÌJf&ãÈÌbÞbÞfæ0«˜¹Ìjf³†yYˬc†2à FɼÊðÌpÆ’±b¬™Œ‚ñcüsfˆl ³˜FŸéÏÄ2?ÊöÉ.ö[Þï²\gË迱¿Ñl›B¡X¥¸ÎNcعˆfŽ=ÐuàÃW–½òé éƒN v|Ò|´yœùgCš‡ª†^& ûÐâM‹,åxe•ò¼šôªÈ«xþþð¤á·-íZ…X¡uʈU#>82mdÕ¨ ’Ƽ»D´¥U¥²æî£rÉ¿{.ŸX•Ñ)©QDßó«´XMÊàÂÕŠýiC 4Â8©93hœÈjçB±>³@¯WÁÁfX¦¸Blͦ҅™ßC+4Á—Pß»p2K¾“|yT3©0ï¶ vŸvz-PAWTX*Ûè/O®®T³ÇôW ÔÎeí1éë+Ñ“EÙÃŽkueáKRñÒ%EìÏ›í¦lqÚ$(ï"Ã’¥)fjVÙv5âg<ÖëKJššÏæ”wãÂ:bAÆ8¸¬ŠSÃù]ªÄbÐÃanQÿVïSIÍÀáä~…*´žù¿tË;Q¡*åã–8˜2Hóç©êÑ¿,é¬ù¯f JDÍé(Éíäh×­ä{™²´œÅm8™:ºÉdäÉvU½ZšžG¼ômÙàóȇú­yŽ0ˆ,a‹ï®ŽsbÖg.u=wmhSD©EÍ\¶©HK q,Q ‰ ß³ak¢pk×_Bkû±xå“Ó ·©J¾â½;œ¯ŽØŽŸMTdÌÓ¹¨êh+ijW)ï——¹!}çΚwgЭ±àœÉ™±8O”w{áQ^­#BÀl²–î8ë;?¸.S‰X§V,Kv,lœªÀyPe€ æDÅ;˜fö›ÌT®ŸÓ(t[(Ì%?ºu1ŽÛÔI“Äi»x[8§ÞÊ:ú†l„ëVSº ¶è¬fuvÛ'NÔp^´­hâE,ûÿ1Ž•w§Ò6DFTxj&+}&gŸ )"c}Çþõ]oã² ™O(}´Âhè+ñcÒøòw´u,ÒŒ^ç(¡ü DJ«>â±èc&²kS¡Q¥l“()¬þ£ÜÙ[·Ø/ÖTžð»?½‰cmî‡ýCPFVÁGÐ~†é­ßaf¬[L¾)D…;=ÿNúL÷¾ó+èùj¶™ž±>O ¹ïŒ –JF™4T”UIïÊ¥LiŸS’•{8‘ Öúë‚!vÂõ¦]ØÃÕšN›‘¬"É$J¬2;/*öigét”—wÜ{—]gqyÏ ¢àb(ëƒPYPF{ðVŸ•Êî2ywµ’]œ•wÙd%Të§ @PÂú¬äwè5š4F5–äž0» *|u.Z?p7CLïªËlÙ6Ђ2L+’MVc±Ð´Ð]ë®s‡w`·ÁçùBœÖ307:+©¬+!« ÷à3,²zFŠþôo4’ÒŒ~"®?ŽÓŒµ8`1ù¦„…KïòïÀΟ„ÓŠÒ"8Rñªuzê]GËúÑŠ÷É$'bž1gw}äÑšÚ²–ã‘5áXN­¾¸;õnKT>´sVhHn2™0b úPP† bsy ³ø©ì”ñÁ[÷ÔŸBg—œÉ¤ÔÜEK·K”•KWäøÔñ8‡—ää~Ö´7µ.ºtš™m†€¾˜•@‘¶(5# ´ó§YMBÖ¬ITéÖh}Á—ff_ï²[,Î$kˆ%±‹Žô‚`MQÕpVŸ •pI[Ú ùlTdvŽô¹yªÇ(Ã~d¸™‡ZQ¥Ïpj¡M{¢wÕŠ¾Òö+“Fqcç ‹û¤ <¶ÿÁªžÇ"ÛqÁLÙ‘’×±ùÑHœÔÕ˨Ӿ#h¿ÛÃ6ÿ.‡tò˜Å­?]ÝIY×È`5l òPù»ïLôð8Ÿ´ŸÖ‘ãõŽW(Š[ö2QÊÊh2›87žòçHQ±[Cd°vƒíŸ;Xºi*x¢6J—hl‘í«øÜ’Ì¾Š¡µø§Š7´A‚.#I§S–‚•+þCůïº#l‡¯ã °Ž­>%3?«¢ê¹!G|ü#=¶ŠîWî^ºzñ(Ím•]Cšd&ò¶Çar쑦ðQ1ÚpHæ^ÔÐCÂål$ŽË¨YŽX7§ãkÇ‘Ë-‰ƒ¤(6>]Z³#r+¥^ ]ûÀáÈ×ÔhŠUæ¿~òœ~)êÿ-Ê¥¬”ÞóyA‚^w¬B~…JºÃB¹^,óH¦ŽWi"/'JÎnàòà+ÙCpPwH[­Ñë Œë™DËü%Ð5'ð>}Ÿò½\r§ò¾¼ŽÖ¤ÝÞvFµ×¸åÐJzιsÇ“adÄ“qÎn}vðP$¤GkÓcÒTá;œ|WÑcthý®êDC£¾¥ìDUSSQ5à0K½7mÉŸ›»ͽZN“w7á7<¾C&ÐA&˜DQ¥9‘ì%{ІŒÃŒF' ›ÐÓŸ¼ÇoûcîŸì»šr ÂõÌ¿Ÿú[ó{7*/S÷a@ÓÛ «³ƒ#8dÌv[¹ËÞ!l3•¿øS/.b QF‘y„Cä8@ÚÀ/Uß!]+ÕŠ¿ªÄ.dE2ø)‹ý>ɯÌÎm®›˜ ‘œk}dÕñڲ毶E“ãFÌèàr”îŸ×ŒÏ!¦–:„-HÁÉAAQ‹ûˆZí7ñïä Uϼ ¢x õÓˆwðdvàHN†%ËWÀb2EEG.²ÓˆS¸eÄÐf‹ÚïPŽ+P_:<´Tþ’ˆyèÄÏmmpãË/á­]»à­9*bžÄ·‡¼«­¤È8¾óÞM1øDìÕñe†B½6]› i\ðÁ¨ªªƒ‡TD×ïŒUk¼w QEneËhòÆoZäà^ê^K'—n&À;m_øˆÍÚÞ䯱‡5ÜÖÎ¥¨F‡{—oO¹öVà|l=L ªÒõ»sàdíÏÉã®’Í”…5hk½<6“ádÐööö+× DÕ;7÷õ ì…Ò‘S!ÂÓŒüÿÌÌ[7î ðûí\óî®Dc°ˆ5F¬é˜Ga2N¶Ái_Ÿ±TÆ ã±²8ϰh3¼N¨pJ8Üñw߇¸§¤ß²Aèú{òŒ4yt†¥É{ZXÃ*ÏPOKè{øýÙg‚”ÈÒ0¾IGôz×Ái­¯o¥Ái¦exï’¬EÄTÚ¼)T„vÏç›§'i”YòѬà>ŽînÏ=2M­8ŸI[ï2}èÇù¾ìO“î}Ââ8(x³€(zç»>%†.2:£ÊéÌžÄK;ÿ$pÎÐ žÔ‹#œ„ÓÏ3¸•luE^NiÉSba•Ÿp 4\rÄ jö¸á *ºŒP§«ÓšÖF³® ÉŠ?@¡—ZR˜Ÿ{äó5Á´a•!´OT@¦&/…òG«àÇ>Œ’TçL’úþÿ–$³™eÛ‰Œ,×¢åAšûfŸ©,±¦ã‘ ÷ Óß)zK[zD»3Å$´{ÿï©ÕŸ6˜@±][÷ûˆÓŸn×ÜúþX*;þO7l_t\­+XüŸÐ⿱¤ˆíÚÚ<~¦Ë¶ABÄ·32=a.8íò]Ã)ïÿq#×ч0£3Ë~u.•]—œä’¡{Ÿ]9 çJc ãÂÓãâÒ„ž!ÿ5==Ò@gq ±¤,»xŽé>-Ñ(}m”µQô4ݧUáGüc¦4’¦#É“&êI ¦aª£H:y/p.¿|~‚N:Ò½Ÿw¶èÑÍ‚#´š#ï>¸ÆÀp†™©.qÓ×Äù™.€L‘OO•Ê0_‘ã/Ýr¾ ‚µš,,vT|D¨K Sù0×SBTjöTæ3è Ï³—6¬i':ã\Ä1 ¢ì"ŽÇ•(È¥ ¦zZ‘¼:.51m)ÄP ±Sˆg[ÛN âÁu¾ç÷1•Lƒ§­µátì‘Ú¦ò3gÝÄf ÕG À=lw\ºÒÓÑa…Šì$nñ TÁEXGIËL&[)¥¢YãG8º¡Ñâ4N#ƒ)¯ 8š~N³TRhøæ?,»}rw—\¥v^Y´úMךÀ†¶ÊÚ“—6fè…úc§òj€ûõûáæ;xðÎæ‡¦;¼R“p긛_å6=8ãî¸=Èg·¿p*˜¿i¬9—¸Îl# ¢rX8e÷¡5÷v ÊGó÷îvZ6‚Ö2³•–ÖÜû_b?dæ‹Û d‰#_%v¾s*ød8ìàæO‹qšäôî½{çZëK{m-ÃaF|fJÀ(Ú›ëq´©DFàE>Œûä ±>Ñ®»VBxüJ‹2O–@WzÌÃ#$ÈÓñ]'ª&‡ã¬˜Op°ˆ$‘±ß #ˆð¥¶•¿Ôƒ˜Ûp“#rw~*Üùñ |úËåŠ-IYª¢}°|¸5Aæ ¨øÀF 3Þ4Ê®wá"M?å˜,)ùÐuõtÝjít'C‰åzoO•Ô†ïó¹ùYÙPЋ“±©ÉI)Ân—UÞs€pðæ%?*(B ÷7Î:bC&|ítÿãÛ—qì!0ÆŠªü.%v@´ΔöÄü6Њª”xHä¢Kâ–dçä ݯãZíw:üÛ™@¼ìH}ÿ›Ó%ª/^Gåa£éŠW£å8“ø8# ÒþHx«Èß^ÆVÒ–¬H£c¾´ÖÊωÝŃ¿5|S]–_!D§FÃΣ:Èx²º²ùìî뤵:Þƒ ìž"Ý»ØG2Í/¦ãì¥ì)USöLÖmÊÈ€Tj-Íà›D%'GöhwªþwâÞ—¿aÉ]êÞö§Ç‡®•Õh©Z­”G=!+ü@|vEåΖb²íËŠñ’o¡=ÿ˜\šÌšøgÊîãL9&Ýã_¢´fÿ»_ÓQLª¦Vq€H†> endobj 531 0 obj <>stream xœ¥WyTSç¶?1xrœj–֞ýµ­ó€8µŠ u¨E‹8´H‚L!„)ŒAa'"2à QDq¬¢HJZ«h´¶½¯uè ¯¶·½k§÷ã®ûNzÛ÷Ç[o-VÈ·òïÛû÷ûíßÞGD¹ ¢D"íç8Ïñí5ûK"û¸Aö—Å9$Ñ^ûëŠÁà&7˸çÊžÃ/FáÎ4’‹DѪL?EL’2|G˜ÚcBÈD™óçÏâá9cÆ|_¹LíᬓɃÕÂ"Êã]EH¸Lä1aA˜ZóÆôé Ó‚åªi åï‰S<ÂÕake*™2^&õXªˆV{¬ –Ë<œÁMs~ú)ä1qj™ÒÃ_!•)£)Šš­ˆyK©Rǽ¼=D*[°#,üÝ(ùÖé3’g¦x¦Îòš=gî¼7N˜8iÊ4ŠZMPk¨W©w©@jDM¢S~Ô[Ôj)5ƒZFͤ–SoS+(/ÊŸZEùP#©QÔûÔsÔfj4µ…zžb©1ÔXêÊGqÔj(åJ £FPS)JMM¥Š>1èªxºX-þÑeKÃృcߤçÓ%’É%†g>"R3äò2tùÐ.×q®~®nsÜ® ›:¬j¸ûpÕð¯FÌ¡qv¤d¤aäÍ‘¿Øë†ÛëÀŠVÑ÷6 °‰íËðûtãÉù¾ï…hµœe·1„ó¥“c "¢Êøc¤}{ÿ =é²Zhhˆd~;úÐï={ÊÀU„$E!ìª#“종ûr¬ØeuØÐ$ܧÀ(‡Oý‘0„™úNF=žŒ4Òã(Ž„’鬟ÿG__»vãÆµw¼fø¿åÇ G¥'ÿ¶Þ&Æ0¢dIJ‰>$oÑœÅO¿ÃÑ8Ìóâòþvbßñ¿K©§b`JCìI쇗>¸òé¥e³g,[¹Ä7ô˳œ$»Ê*ºgCƒM|ÅŽ¬&¶ï‰ÊUbïó¡œG)îð/è…³fãd2Ž'ƒ{ÚX»ê ºt1„&’µÄ â{o·Šp’ ý¾c<®dQt÷îN/­Ë*¦ÆTQ_“tláôuAJ%o‘ÑEpDD§Ê…Ë,°Ÿ·‘öEý+,éÇù/ý8w[±Ä*¶/±{°F¨‹Pç¤gïæ¶W„€â77lÚ/É÷Sù ™wÒa³C&÷ò1]ŽçrÊv¢‘2‰÷”¤€¢¡¸b¥˜;qª`½|×dÎ:*«çC,Ò‚%†e%«Šá(SenxúpOd’ŽÓGÖ@ 0Í`®ä{£é´þ½J„SlBÆbL´‹Xô¢uBÈ Há‰×=ºÌ2Ç…Ü›ó$)Ñ}úùI¤ e ÿô¡õÚÍ#Ñ›¡Uæq¹ÛwÄÈ€ñ…ŽêgÇ?±ýÖ‰Öï¤J/Xœ"ó†úzHþø»žž~-úo盕5ÜÞh3¹õÒíU&ñ_´·±?ÓÆzág9¤ò¤‰vFì`âçÕ+ý+lêßõJï!8ù£o¬¢ó6Œ‚õÃFöË·ÈËïï˜Ê8Ke­á¨žƒB®T_¢+0_ ä=Èz%á{}å÷ÎZŠJySTÛî3ÀÔt"˜*ËÜ“¯å}ÊB<¨¥‰aIÒ¼4`¶76ÇAdt}0]µ¢èYÝ,²wý©ž<: ”ÍsÜÿZGäy—?«“^ÑÝ´aı=)ö€¦(>5Ô™\ÒÖŒÀÌ[òÉ×çÿG×—çæíå÷äéò SmÒÔc©=ü¸üw±qÆ.°ü'±“Iôæ£Á{cq‹'L%£ÉðGqÐù6s]=¯€ÄãÜï(]„cÙµ›ø,_e½ÿÀjí¾tnC`_£»ÐMàè3,½+¶/Â¶Ò Íè¶ì[Â’“^œÊõéx‡/Ÿ¸_ãÈQ£Í‹Óò [6i#a1,>“ü£ëbŸ^:k…‡P½¤`##¬µÚwYE6,ã‡,¶Å×’ÕdU\ 9FÚL1¸W¨Åc‘=;T¦ŒSéçà ø>†K%gJ;ß‚/¡6µtMÑXë` øh7flLTNæ7WAWA¦+‚ Ž2sPf®§èkgŠÛ¸=‘S+€1,;üÑ\Höž<•ß4¹¿ìžöIÌ¥šÞoéñ¤>/¶b–SHY!áNGÐèÚýí7ßû<"CxßOKm*f€ÉŽéç †¶«\~¢Ÿ´.Ù¼| ÿªãp’Ø…óºÎta`—¨Ë†kl‡®‰ñUäØrmCj+0OnÝúº1íPz%_U"Tˆ¾@U‘Q Œ¹²Ò|HY·!f[VlŸY «ÞÌ$__¯È’0S,Ÿ•– ˆ6( )ÁªèM‚ÝÍBjµ ëÑH]¾ÿõ¢v|N®óÍÎg¶ÂiaÏ>ý^þá1vãÖ¶ N´m?¾-h}ðÖ ^O–²÷ÑÞØîüúkoom9z켎ÿ­—öÕ×Û)®ø£íô¨þÿÕIy7R"Ü)PqÝÞÁZTf¹\¥’ËÍ*‹Ål¶pÄŸŒfû=IDÚÉuºŸÞ×ð6íŒò™\ÏßÀÆb{ý¶³…hÒv† Õ\º­Þ[¨2ÑBoϵ Ò¢LþXp}ö-M«ö…Ki†Ýæ¸òdc D1AÛÖùqÑÙ\^e^ÕŽ¾–BF;{Š¡|Os1w:ʪý@0™¡7ÑÈËZ¢öÍ© -ŒÞ—­“•„†Ó̙ӧ®£d¿gÔ^noL5÷·–ß¹rŸ'ÏÙêQ‘QÖŸ ðíQÏ»Š´ãOl—á¶ÐefÄö”ðX.ñ¨¢4Z°Õˆì¨˜ì:5¤I;é0Ãaž´K"U}ÔÜï­4Dòè'ùòø©VS±zG4ío…uãÿ´EnÂQ§ÝKls[ÒÍ-2HçÉu:C 2i3[æ™~UW‰ì!¿º²ûÊt…Œ9Á˜¤ÌÒdäpäó-Þ™œ宪J©¨),/ÙÛÏí6 :wX‘ÿ+8– &ôxâNVÿŸÉXŒôßÑWpD.ØÑÂwÁñø×Ožtw2™¼BƯ$Œ·3+¶}Œm¿±€!,”Ãùuu,Ðå Î’€Zp¬ž1ô:Qrª¨Öó+ä ~MXŠJš#&9ª <²y°ÔÎ °þ#y»ò”S&œr8F'ð7F-`î5>»ø“§Â„‘#„p£O¬ñÙiÚnë´Í»¢rSóRÒ…ËÒ â-gÚêKJ¹žÉž’~UìëW…'ý TL¸#ÆÎ__`K E&@žÎýk¾$¤Í†¾É0U¨‘'˜oßìbÓ2²s ™‰¨#‡é†âÂF¾VÒ;Ù¨UB!ÓÝWï]m¨ïl¿ØÍ¿~—Œ"Cßðž³íH¦ÑT[Ö`ÈÙŸYÈ•7«»Ì½îÍs}׬Úðg(oeá”1V5@JXRS·éJÃùP#TÀ'ôUоҲ¾Æ2œÐFDÖæ ùŽÉ)¨œÐj è‚bփƹV”ŒÍeÒ¯‡2˧{jNñÁ¨êíb˜ý ®µŠn=qš¿ϲ?ŸxkSÀ:ÿisá´Œ×é@§Óƒ^_,|×C>S“X«Ö„{>ÂQ8ý¶CÞµ …;ai<—™»Þ]Âpìê·eqduÒÁZ“©¶|×Þ]Üáƒ× ˜ë'eÒ”]¡aQ|´R‘™»f—&OpG¹ô’ð“ÕÎlݾ*nA›™¹ÏDíMkæPÿê껢ß?¿°ŒÌ!U…J›²cöWoã ýãÿôæc24*xWÜÖÞÅ+άé+¬ndñ;¶_ÿïïœVä”dædç¤C:£¬P[,•¦úóÒჼ,L'ï‘t]ö]ž~‰n(ö|Hh¯ ÷³wrÅd«Óëò!ŠvQt^ù »ûÒš… V®õó íº’ì¼Ùd?d°} ˜#ä)LRü"² H“²æ&]c§{Rý}˃~÷vCCQáž00 8rÞY–Y¯W%òÛ$‰ ÆÉjs_NÙV ´Š.Ù°TÈé)~Á^­ºz¬Ìçsï ‘›³`þL‡–îâ'¼½1SÍÀ18æÑ£ïî,ïô«âæa}Ož;ÛqêöíŽÍ7nñáÉe—¹«>¼jíê¸w¯kÝòwü×Îs¾)ò&Š/ál|I„›ÐCŒ_á¿ÙÖȺ°EdXÈaEckÝáFîmòo6]ªT+Ò²w'ïLBcÔTšŸ^D¦Syò=©"ZšR¸ñJ®#~|÷Îí;¢fû&±=³ÅÍ‚%‡8:ÉtjHeÍPÌã/d »¿Zše åÉ?i­L0ëVÁeú}ÅG@Ö½à“û²óÉ”§*œ÷ µàÖ1[Óõ-çŽ õ(`J3+Td+y‘ì#…(üo0U”rý þÿtøw!ÙŠ/F¨µšÔŒmQ6׬l—µ-<`\ïÀä0A/ÌHJËrØSj±¦º…í¸ÏqÒC“ýEᤤ›Ž‰¥‡5ì/s0¾$%3//-Ž›ò®¾I×MîÓËUñ)iòP]°>”{õrján}¸§ÄgÄÆ²Kwò?ŽLÏNÍ‚x÷XS†±Hx‰9À}174/BÝc ³ÉXjiÊkËmâ¾ <˜¢‡}àn4•4î,J/äÉ ÎÁý¬9›!Æ&=›&S)¥i™»³!ŽÑ”i*Žü£%WBŽ¿·M¹#²:ìdñÎÙ× ÷¹—¦?þ#ÑõÅv¿Bô)¦IbÄ:ÔæÊ uIR¸ ±º¹Ù܆QÔÿȘD4 endstream endobj 75 0 obj <> endobj 532 0 obj <>stream xœM_HSqÇïÏÍyɹþÀ ¨¶ b(Ø\ˆR™êƒB ÄjÌë¶ÜÝÝî®.Ómº™º{æÌÍ?Û”¬¦› ³"„&¾WôTôÜkA¿;®]GDpÎá¾çp>_D(Ë„ÊÜÑÝÓtÔÕˆg‘x®L<¯)^¬+†ËA­µòi±ëæNbçql;A”#äö…£q3ëâœvOÕÚê¨KÍÍMõT£ÑØL]ghÎi³º©+ï +/.ª›µ9i~ˆª½âàyOKCƒßï7XŸåì×êê)¿“wP]´æé^ª•uóT§•¡©¡TÍ,ãàiŽê`{iÎM»h†vóÎÉÐA(ûìF‚¸MX€€(—ÍJb]FôYœÒˆRÞZÚ‹/Æ’2¤Â‰I•ÉOBžÄòßìÞzѽ}u†20 àœÔÿ˜Ø±$û¦Ç`¤$ÿuƒ}Í“>óíØFÛ<£7…‡…þ’æÆÅ2^:Ü;Æesd`Ò¿í~‹é4ÅySÏÂÄž¢ˆð v) ÙUèmª ®ÁU˜ÀF ±IõO‘Ì*©Sª—.HmR;6HÕ¸]Íÿé&•dI¾Á5¤¼y"zWÐ;<£ÀoE—6¹,ÛM›lÖE‡\Ã:éôá !:áLhs,™ˆMg:/[4­ª$ýbEáX¡²°¢VËYE¬FQ endstream endobj 73 0 obj <> endobj 533 0 obj <>stream xœ}SmH[W>ǘ›Ì©«+º]“+[µ‚XìÃÖŽZY-;×9èÀ¢¹jÚ|™\£ñk±5÷$~Ä(ó£™úCG…md¶:(ŒAqк2°Œ±A¡®ûqNr®ÛN¢uúg?.ç}yžó¼ÏóÞ{!HMBMeõÛ—KKey >…äª{W_»¥Fé*”žºÄ«O?Oª²HÑs$÷8Â.;hý æÁ ˆ‚;à'ð+Ør0 æÂÂJ»Ãã475KÂñ†B¡´¬ì"áÕ’’2¡Â*:Í F›Pm”šE«QbExÏÞ`%p¼¼Y’'Oœhkk+6Z]ÅvgÓ[…EB›Yj.‰.ÑéMÂ9»M.­¢°k¾x÷¨´[­’èªí&ÑisµZòv›ÉìrXŒ·Ø.‰6“Ëlk²ˆ»ÝÉ鬹iŸ(1FH:gHƒh¶ìÒtOA‡Ñ)Ú’äHÖ Z½´_Šíûå!IÞc$k±q9ýjÍ5‹µôÌÙ’ŠJeˆ`á0£p †à8 à 8 2‹O2¸ ¾‡å°vÁYˆSjRzR6U媫d(“W/ðñ¡‡|êŸ_B>õ «u8ÿ¨vr¦—óª¨Æê(l¡µH«<æÈù#4F£9(ˆ†û'”ÆXV6ù‚Ã/¢ßºÃþ¯ûvl~°Ðy÷Õ“ÚŽfà5Oë9 ÉòOBíÈKwš³•iå¯ÞÐ’s¼atCŸ‰·”G²>ñ±ÏTø˜ò@׉ܑy47«'ßifPÄÝŠÚ:ô™ä>–å¹oÓUa7kux5J½‰«Täg>v^‡¦Ç-ÛUØIU¸‡žÂõ]7Gƒþ€èDÚ®>ÔëGþ=¼­tÜWvÊ´Ých^›‹ 1˜Ô&¥óv¥ñçLÿpKçF>${µ& R0†4¾œ—:±ŠöàS´~Ú320âÊyigBh"ˆ‚¾°n‘úò•ÐNùP«ž ?}‹ Y’ß¡[”}mbe-å[MK@^bF–EÃÁ„»ü4ÖëæÇД!{÷ÙÄOHw(̾´ v¢uv²\~ýà=JóóéšMgߤë ²¸© Ñ^æ>àCt(âÞönêäIr#m-×êCݯÈôz ÞW¦hS;½Ó± ÚÞq4=Ãfõ#Ãø(Î߯Wp6žý¯JÀðr›îÕþ—uOÿÿ³¶Íq<õÌi¢iÑgõi©{ú3k¡ôtödð/p‡j endstream endobj 22 0 obj <> endobj 534 0 obj <>stream xœW{TSç–?1Â9E„*ž tz“¬j©Zk[;³”Ú:µ´â³µøÂh!AyžHNvÂK ðäA|EŠ–ÖÖNµW/3>ºÚÚ×r{kë­ßaNgÖ| ¶×?îí™u²€¬ÅÞß·¿ßþí}xÄÌÇ KÚ”’ü#ýûø ö÷|àj¦&§* ’‘3G 碣sP~4Úò(ÁçñrÕ†$¥ªP“-“kE %‹DÏ'&._"ZöÜs‰¢Õ¹RM¶Dœ'Ú$ÖÊ¥¹b-þ¢mQJ²¥ÚBÑ—äZ­êÅgŸÕëõKŹùK•ÙªEKDúl­\”"Í—jH3Ek”yZÑâ\©(x·¥ÁIÊ\•N+Õˆ6)3¥š<‚ yJ•Z“¯Õ­; dJ2¥Y2yöÖEî³KžYJo›‰·ˆb ±•ØFl';ˆTâUb'‘Dì"^#^'ÖÉÄZb±žø'b#±‰xƒx”˜MDÑ„CCÌ$j‰yzÞw3Rùÿ5¾ÏÍÔ„ýcØÇáíäcd?AÕRß?²#b~Ä‘YÔ¬âH:2evüì”Ù–Ù]³Ï²¦(ö"øÙ0©{.š9‰²&ccN¢7þé_ß¹ð~Ë®7\1™f€uyÊÚa9 §¡Å<Μ‰œï'SAf?…¶’ðø”ýÚiËNX ûÖ”*)sxÌÕ;$÷¤!LA^j¬Ü%ä:ÿf¢uF±M†v±›ç»‰nòÙ”M£Øù÷¸h.&AÄÍãæÜ[ˆ¢QÌÝ»(ZÀé¹Tz'ˆÝÚãê!ó8ŒÀQ˜pöޱÀ ætfw‹-© †,xK³W™–¦…«å¶ûÑ7û;QÏÜû“¨ëflÌ´}MÞ;×9ÔµóÏsžü‹éRO¾ð`'X¡ƒJžéQö š…füŠEs}ÏElÛ©Ë cŽ\ ¹…Á:/×Wíþ,ÿ{up‰=¼ÀMÔ5Ég ûôžë)r ¸Ž÷4ËÅü°=24f?7,ä^ûíŒì»2› ¡Œ%*Í>qÎv Voü …!êògW¯¬ØŠOMø…èû—ï¤y *¤›ÑS(\`&sqäS*gQ·³ÛÞÛ—Û›þ¦X¼I+òxäžø+<Ž[[,cp\æ ¡ÛèÉWMÍGñQ‹ nö¹.^` ã£;ì‹t4–U3PvPÀ0UÕŠ.E}6.6nÿ«©9­ên0 8V9V1VÞfê*j:ä.)õB”>©þâl™ÀÔd®/ª ¹ydTØê-–ŽvAm}sK]ÝPƈɹ‰¾rñ¤Þ«ëf‘5¬nU×½ÚT_÷зˆhX¡± ,ePÕT+4tà{ÎÇ‚‹ñ£¼Ÿ&Ñc=|t]@û¹'ÑF%i^._°ØDi¾ä|$7óSíøÅþ. &”ÛÈÕ ™l-|Õ.@½$V”Á]ŠúKÿ°"´’^¶sCÒŠêá³ô9É=ï*˜– ¹Å$¬ñˆÜ§¬<ïÀh·ï<S`YŽ6‡ùÉ䊆Q!BbB€G±áàŸâùyHô ±wé«í†ÀíÏ0%Ã>ü$CF &@á&oXËdŸ»HS¶R Q„Ö\‚aü\‚AS" ¹’± 5hp²ùy,ÃGk¢MõL=4PžèøÉ}ŒÖ¼ä²Pbòt€= %p(®¾ø°©á°µ¡ =Ž>sŽõÛú-”ŸÌ5¥JPX”ÖP”i+5”›£a>W5UôàØ©·øSsЗt׃µÎ`¬ÄÄÀ~B)H¦O6·ª@åL•©òY®&.y«[ jâ=~«ß1͔ŠÀwÌ™ŽèƒNssi£¡E&`ª `NätqKPK•÷pm¼÷x¨¶4\›Ÿ•ÙÓq¸[6¢¹ŸâêÊjÊí`‡ÚæÚ¦Б¸¹#µåµ;ÄÛ¡¦©¶‰ š”[ßdnß¿÷»ç_Û} ­œ¼Ò³Û€n_¡ëÄ>Ù0Pî öÂw•[Iì”Éà´C€’HìKôÁ¬#»í;ZþºxƒÂYäñvtz†÷Ö™…^ÏéFPcÒ„ûɱy¥zmN’\·$TâÕE>ã38v®µ‡ªø„^üJîÞ={g>žøz¦^€ õ7¯•mæ£÷Ž®l ~¬×n>ì\aÎ3©páRì`¶3-‡0ÌÅ†êª /Žü§ÊFÆ ñ`k¶u#¤ŒÚ¤52§#>+3²ùGŽŽÓ©·¯Óiv¾™Â ³]ãôAŸ¹oÚœ45¦6hœµÚÛ]~O¯»÷zB\‡'«CùÁ|3²º,Øž 8()\ÐõPÓådEn”5„- ¹±SÁN}…ÆR´4;#£ŽcXÙ'ò=bÏ>ëfÈ=UÛÕ]N†b;¤ƒÔ•´Ô‰è *¶Òþ½g”gÿâÞsÞå"“÷ÈUùBlÿØw¨Û~¾ÕC-Zìv|Îj±T¿à£õè'ºªêÀJyàÄ"ÚÅèÍb,³_Q9 ŒM…–ýLÆi6ë¶ç%¯‡x µ˜¬‡-=‡!@y ZMa±*}(ë~ïœK€Ö±+›=íƒYãýdŽIîd`ƒ±Üx(«ˆ‹b÷zÐÀ·¾ÐÐØ{‹ÏìïéF})äQêN½Çãlóøú±¸yO‹¸9}oŠ@Â>4»Ñf“˜¢*vÍu*PßA Ñs7No9Ëh‚Ž=íb¿ Ó»/c°Ùxœ)¦’Šô´ 6‰K=¤fÞÇ,Ÿª÷œèêôÜ8à•ÚŠÁ TÍtu}úøËØÜ£E‹8š›ó}šõÇ“ÃÎvŒõ=ý«Í±÷>ŠMÃÊ]hUh0] ŽÅBº«œ?n¹çä3ó¹G¹Ø??…¢PÔèýî†êúŠrS¥Ñ,Ì~rS»!ë ì5Ÿ‡!Êâ¢ÑÒo=p΋-Ü<* M¯:Èêæ¡°Ë·¾æ£ñÝÏBaä·£'‡›šc“ Üˆ¡†Rwº½ížcÒ#[_NÜü”€#_R\çþíïÌ>4‰ÅÓÄexÑÆ 7¼¨ÒËó½‹J®Þå£9(™vûKF€º}åÒõQeà`«ðÄÀ)°AµéP5R††‚îVG“³£Ô/ÉK7ÈäUWf+Þ[–$%¿”Ú+s”F)‡4Èvȼ…©Å’,ØC½ö§4Eÿyüê`ÁÛY.Á–þ·` né8dÍ«/ðb®uöÆê#½ ¾ëòZm.¡½ÓkïêX¬ÕÂâç…#Ü*ºE›_LY•þÌ¢Õ§Î9š>¾)œ^C²àMÏ7>Ú0µž~¸_¿½œ õäÿ—\ »äŠ-x—ŒBÇ‚ä ¡HDÌ½ŽˆÕX ·ÐFö š[¼ÊGUx3qþ’þ¤ÕiyX™£Ó®²ÞXw\s·†=F÷æ»rZM^^·Æßërõ ðT¹¹£¼£~Ôü jòó§^™J¤ÿ‹ ×sº°žðV”ØéC‹±íø ‰i7Zʱ>ðŒÍ†’'™Šð4#4dñ¯Ðq™ä`Ù.<–ÆÎÚ&«Ú§èÌk婞ði·ïEê!ÞýË|¼ŠåÒ¬šü«°¾mu[†`Üæ“Áz—üèì.Ö¡;\¥ñå¦2E¨l—åxȃ}Óeï‡|‹ì4÷Ú÷Ý#Ç/Õ`C—ãI›…MVmÙ6í4v³­O҂⃇¨ÐS¼¡`‹ðÑÆßâzNA›yôáÕvêÎÃo²à'6f4ôBˆkgΟkÏ|ý·Tð‹bþWÿüd¾„žýG¸$¶4H‚]båö²÷%Ëa%ìÚq ŠùÔü]øÿíM„«qþç–NÞ;ŸÏî˜ÚM×4Zk¡–²—5T eF÷ï2U0F0Æ—Ø*µÍ¶ZÛæD¯ ‚‡Ö»ñÜpÐxÑHüç$c5¶r3U]_ÙÐüéUñ‰úh¦¼@¥Ru¨úÝv»GÞF›>ä5#/C›è9ï&2ÈNõ"ø(õ,íËwçæækòr]ù½ÓÂÕu±Im(¯¹¾+œË°‘þˆÉY‚ˆ™Ë;#q×GFN:"gÄÿ DJù endstream endobj 229 0 obj <> endobj 535 0 obj <>stream xœ{LSWÇÏ¡ííQªc½^±Û¡«R (ó±Ö)‹À|Î*ô¦­ÒÛB ¶ÍБif8òˆ(5H±€c™s&>–øDƒþa|Í—%&n&&ûvÈb1&Ûßûï÷H>ßFê„1N,ðxåÀÜe¾çøjea–’Àf¨h%óæh˜Q‡¨NEuꎿ5z8ð!„?Rc¼(·à°µpý†Ùéé¶å>¸ÌãrÍó32³ÌEaóû9Gx\ŠÙ*äŸß++Á<·¨<`^ïóîPÌãÒÿ=ü‹úp„6sþ‚¬O.BHD4Ih*JFÓ‰GFj”‹ú°ûñ­{‚j'³4:šÅVË;!eÖ„Ûè†#Z^ϱ¦T{¸¶¡¶î`WSgC+%Íå[Mc’¶æÓаµšX¢vœ¶ — EÅÊÀ%%çÛý©Õ„§ °æ=º×?Lïþúü>Ç›¶ìv¹NçnÏNº…Þ¡Ó]¿ÒŸi_踫¥¢ÑGƒÔ*صyc¶{;·ð dYã"•çÙíÇz‹„dñé•~¸ë¸HÉРsÕJ·Ûæ5E´O”XdÀCÄ;½Ê±m[¦/—¿^5ŸÚit*m%”Èþ€§ðšë,…i €åÜ7?)ý¦ŠÎHsñ1">½9ØÞsuúïyÒ¬öM©Æw A¨XfTQHã³`V²øše@£Ä¾üL».›ëùâ¶µ6×@ OÕŠ#©C Ä^4•ËÈp^'}wí³ U0›ý"A¯pD ¿'Ìá¯^îûqÿÙJÃ3ߥ|šKòŽü ¿åd±qû)ok)%®Ò2÷WWÜÏ` Løf¾Yõǽ&¹¹¤nI=‰³÷tÁ?gFq7d€ l*¶s4Gâ†Ðêrû®Î^ÇÕ”ÿâyÜæLHzþ¤À¤e¹°«üû=^ãiøøÉc°œ$¼ŠJÃ…|×íU6"MíU¦H¬ê.¡7]n¨o<ÔZw„’wͰ6˜Yéèbi,Kpð2M§pôFω‹Õоul@óR˜jg;ZÀqDˆMcb¬^§c“nBoÍ †Þ endstream endobj 71 0 obj <> endobj 536 0 obj <>stream xœB½ýCMR5$øøø‹€ù5ùU‹ ‹ ­ø²÷]÷V÷Qmq€Copyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMR5.CMR5Computer ModerndefEFGyÞIøˆù‚€¬ø¬÷YÂÓï÷áàø:ù?_Õ”„ZûWužU®8‹û*û&ûû ÷"÷)ÝᣧO÷@–·A‚’¼øæ2üÝ[AA~d‹Y‹YŸj·k´ˆÄ‹ª‹¦Í¶¹®¯¿ž¼‹¨‹Ò…»Gø÷€¯÷\ª÷3¬Ìï÷ÅØø™÷u ”‹£Îg÷ûOû, ûû û÷#÷,÷3¼÷žœ{‹†|‰‡}…oFAsS‹:‹^¸|œd»‹Ê‹¦ª—÷즺‹÷‹’ûŒnøI‹·÷ë·÷…¬÷;à÷ò÷ø÷"·û&÷éɲ¹’Ÿ‰ˆ‰‰……‹voŸtª¬ž¢¨¶`®H3$Sûû*_ìûÃl‹‚Jy_µŽ¸Œµ‹¿‹¼‰µ‰½ #·p>‹•ªu¡øCœ÷n–‘¡ûb—· ä  7Ÿ ¬– äœ ¡øa endstream endobj 20 0 obj <> endobj 537 0 obj <>stream xœ=’{LSwÇï¥Ð{«]‡º*ÌíöÊcC‘Çž$[´>2&RK•ÒÖ¶PÊc±PzJ ב2œPž!Ð!S óí1þ±lÉb¦‹[æÛ¹ðsÉ:²,'99'9É÷{ÎçÐTxEÓ´X™¹_•öo'l§…ç„çEà\½¿šRHÃÇÖê6£~žxs#)M,ç”F“ݬ+)µò šüKii{vó/§¦¦ñûʵfFmà3ÕÖRm¹Újô|ŽQ£ÓZí|BF©ÕjJOI±ÙlÉêrK²Ñ\òæÎݼMg-å³µ­¹R[Ì2¬ü1u¹–_·–¼ž•ÆrS…Ukæ3ÅZ³¢(fŸÙbUŸÒPT •CåRïQû)%u€bCkQáT5u—.£¯…%†µ‡ý-¸dk‘ÄØ pÔG ¯¾&w Ô‚=µà0‘¶'¿E¯·ÙUÝ\å®¶2_|«¥Û3c€;®¯¤±AÆ:0^º‰QQxU¼Hb#’òÅ#Þ?`&á']ÚÅÇ‚^Ž2AΊeBmHõÑ4ŠÂ-"4¡AËÈ>ò:ÕPÞ±] ú&çò†²©ŽWpn¤ÅdoCD>³xŠäöá|fÅ۳зa~]éuF&|ä¶\£ÇVðüŠHØ!dÈ/Ã%[}MC½+ë)n= ¬ž¼$*·UŒ8?Ô}ë€lV™ª#Ý¿¸Æ^··Ø3à´(v0vpøÚ[ §èÑσ¢¯â«€/ÌöO…£e2º .¾Ó ÓìâèÃðÖ,S ç©ëN`û=ü ™PäœÂµ ¾å£ÿD nœ¡EPÈ11H1G%v'}ïb5?’~†ˆ¯½soöÖ27¯ú€9Pb7‡E?'–œã˜?Œ/ŽÓ˸ß@‰H¨Â9ùÏÊïHr6y¦9¥p¸rpxÐ?ñeu¯ËËu¶ø[¯»4Q’¡(cH:É("¢ÜTµt÷ÆÐÌ€â üÅÅŸõ@¿¿êG=!¿~–HnÊc M*õÐôÐå{˜×ÁÉVãC7•Žã»ÿ1ëÅè³Õ#rrøO~cfeAý÷©⳸}×’°÷}]]•¢-GÞ˜ |,F‘¾­†¼ÊÅéœcM6ÈÍhe€• }Î)A2Ea4Ä­"Á¬üÓÐ/ÚÀmoàl…Æ,`I `Üô¢#q[û×îFw³ËíVœs4Õ@{jÐ2<8üùôCÂC1É=Dd„&›ïÇcúõ`Û“ÜÂH× ð²²³]BVžôuv‰É‰v&¸%¹ á{|RÉx‡TŠ’+Ò§> endobj 538 0 obj <>stream xœu’LgÇïh)‡˜º[LÔ»›3 ÊPÙüÓ¡  (S .!±h‹•¶ÒœÅR *S|«€¨4€mÑ*e2ƒ8Ù&¥F\µÓͨñØÜŒ¸1‹>—¼.Y…!5qÿÜ{Oò¾ßçù~¾IˆC’$Ã’3²³çÆ¿ú.L"…É!ÂÂá¨ðO(’ŠT|frèÀx(ùQó!"ICÑždƒÑÂkòÕ&.:/†››° –‹Ÿ3'[¦Sñš<…žËP˜Ô*Â( ¸,CžFe²pÑ‹Õ&“qÑìÙf³9N¡Ûgàó?‰åÌ“š“©¶ªømªM\ŠAoâ>SèTÜðtqÃG²Ag,2©x.ðIÅë ‚ê¼B©Úœ¯)XGkˆL"‹H"’‰"•XI¤ÄûD°Jˆ ñ€L!¯‡Ä†T„<9EX¼Dü¸O8)E^¸í%ÿôA¶O$̇Nú‰¼3!uƒªx;Ó†êò˜4Ii!Òë›QÛŽýÊÑ fHêš‘ËUˆJY%¤Iþòw\öÚ´2¡ {û-I æ½?Ò³Ê'‚\ÌÓABZ‰Ãئ÷ êù£Ç0¢<ù I¾¡|ëFõoNó²5hšçB Ýãñø~ö&Í•šº|éæþ.fØžßKÂ,¬¾'‚Ȥalß­þê´¿š9˜zß!DÙŸ8Ù¡8ž³R¦Ë’³çÃÎVÑ0ÓGµï`bïý£Ž¦¾rTá…EÞç^ÒãƒâÃxh£ïÈîãIŠ™(ÅØPr²Æ}à‚•AÕVkÓ›õ²!;jEnþœ~meæÞ sÎöUù(•Z~mÍ£–Þêsß3ڮʯåp w*4¨)eÓ¯ÓÈ„¶)‹ÕÛ×£}ˆZ»±¥ýÊ‹Vˆ`‡Ç¸ïê5×y zÈÉÌK,ÈänAM.æ8ãpñÛ@ä¹n˜°é‡†ë"ácȦ›P„§ àq˜Š›#ñøÁˆúÛß›k*OWì)©`ùÌô/‹ÑB”v­ì.eí¦õûº®¡§¨i~U5’¼)Ý÷ì¾NCÄ(cÑ%¹wµ0•µ›ÝÇí¶Ó=‰¨$ñ“ñ̺è°RãΞblPFµ£ïc‡¶Îâ×Jé÷A–ï|dWért¹á`UU-ÛXêÞqQoþò«³âì67Û\ç8Xo­)pí·"Êæ¬=ÓPâβäîÕ*X­]Sk@ÔœIóŠªU§óÙbÃ>Ú‰Ô' µ»²uæuhµppuë„ÁÞ>˜†W -³$tNîÅ+W:/^ú¡C.“m”κð “t±³¾ú«6;k¯?‚~BÔAÉ“6İ#xþABy ÓnáGÚinäy³™çÍNgc£“ÁKñdúµõØ%’!.§^‘8;J"ú%C1$+ì / ˆvŒ, žD0òånT÷%9¼öÝ^h |ÈÏoXæ S3½ãðV›Q‹WÍÃb<Æ¿èö¥H¼À‚—á‰8 ¿‡ÓðJâ‰0eàîUG3ÊKö¢]å¬F«*S#ŠûH˜3ŸüýÌu¡,Ýή·h¹²÷^ß7=ííKäÊ”Cd ”9„Šà†‡vú-<¿E×\xÆí8åb"wÚ„äÃh“`Ë¡0ïßXfŒØb†{¥RŸ4‚ þŸoár endstream endobj 557 0 obj <>stream 2019-09-25T01:31:40+02:00 2019-09-25T01:31:40+02:00 dvips(k) 5.996 Copyright 2016 Radical Eye Software p.dvi endstream endobj 2 0 obj <>endobj xref 0 558 0000000000 65535 f 0000561741 00000 n 0000675317 00000 n 0000560970 00000 n 0000545880 00000 n 0000000015 00000 n 0000003142 00000 n 0000561807 00000 n 0000561908 00000 n 0000584459 00000 n 0000624189 00000 n 0000583345 00000 n 0000614227 00000 n 0000582146 00000 n 0000601873 00000 n 0000581254 00000 n 0000595488 00000 n 0000591115 00000 n 0000672227 00000 n 0000590846 00000 n 0000670885 00000 n 0000590132 00000 n 0000665294 00000 n 0000561848 00000 n 0000561878 00000 n 0000570130 00000 n 0000546064 00000 n 0000003162 00000 n 0000006312 00000 n 0000587553 00000 n 0000651749 00000 n 0000586170 00000 n 0000642075 00000 n 0000570226 00000 n 0000570256 00000 n 0000546226 00000 n 0000006333 00000 n 0000009256 00000 n 0000570330 00000 n 0000570360 00000 n 0000546388 00000 n 0000009277 00000 n 0000013736 00000 n 0000570403 00000 n 0000570433 00000 n 0000546550 00000 n 0000013757 00000 n 0000020684 00000 n 0000584977 00000 n 0000628466 00000 n 0000570507 00000 n 0000570537 00000 n 0000546712 00000 n 0000020705 00000 n 0000027021 00000 n 0000570600 00000 n 0000570630 00000 n 0000546874 00000 n 0000027042 00000 n 0000034719 00000 n 0000583919 00000 n 0000619961 00000 n 0000582878 00000 n 0000610987 00000 n 0000581858 00000 n 0000600852 00000 n 0000580637 00000 n 0000593846 00000 n 0000579981 00000 n 0000591429 00000 n 0000590683 00000 n 0000669980 00000 n 0000589470 00000 n 0000663709 00000 n 0000588800 00000 n 0000662697 00000 n 0000570693 00000 n 0000570723 00000 n 0000547036 00000 n 0000034740 00000 n 0000040319 00000 n 0000588135 00000 n 0000658394 00000 n 0000570865 00000 n 0000570895 00000 n 0000547198 00000 n 0000040340 00000 n 0000046243 00000 n 0000587301 00000 n 0000651160 00000 n 0000571037 00000 n 0000571067 00000 n 0000547360 00000 n 0000046264 00000 n 0000055207 00000 n 0000586928 00000 n 0000586771 00000 n 0000650418 00000 n 0000585809 00000 n 0000638785 00000 n 0000585592 00000 n 0000636823 00000 n 0000571209 00000 n 0000571240 00000 n 0000547524 00000 n 0000055228 00000 n 0000061535 00000 n 0000571352 00000 n 0000571383 00000 n 0000547690 00000 n 0000061557 00000 n 0000068285 00000 n 0000571438 00000 n 0000571469 00000 n 0000547856 00000 n 0000068307 00000 n 0000076028 00000 n 0000571546 00000 n 0000571577 00000 n 0000548022 00000 n 0000076050 00000 n 0000089993 00000 n 0000571674 00000 n 0000571705 00000 n 0000548188 00000 n 0000090016 00000 n 0000114493 00000 n 0000571758 00000 n 0000571789 00000 n 0000548354 00000 n 0000114516 00000 n 0000152719 00000 n 0000571853 00000 n 0000571884 00000 n 0000548520 00000 n 0000152742 00000 n 0000158799 00000 n 0000572005 00000 n 0000572036 00000 n 0000548686 00000 n 0000158821 00000 n 0000165627 00000 n 0000572122 00000 n 0000572153 00000 n 0000548852 00000 n 0000165649 00000 n 0000171385 00000 n 0000572217 00000 n 0000572248 00000 n 0000549018 00000 n 0000171407 00000 n 0000178181 00000 n 0000572334 00000 n 0000572365 00000 n 0000549184 00000 n 0000178203 00000 n 0000183904 00000 n 0000572429 00000 n 0000572460 00000 n 0000549350 00000 n 0000183926 00000 n 0000188327 00000 n 0000572559 00000 n 0000572590 00000 n 0000549516 00000 n 0000188349 00000 n 0000194143 00000 n 0000572665 00000 n 0000572696 00000 n 0000549682 00000 n 0000194165 00000 n 0000198835 00000 n 0000572771 00000 n 0000572802 00000 n 0000549848 00000 n 0000198857 00000 n 0000202920 00000 n 0000572879 00000 n 0000572910 00000 n 0000550014 00000 n 0000202942 00000 n 0000209276 00000 n 0000573007 00000 n 0000573038 00000 n 0000550180 00000 n 0000209298 00000 n 0000215380 00000 n 0000573135 00000 n 0000573166 00000 n 0000550346 00000 n 0000215402 00000 n 0000222202 00000 n 0000573241 00000 n 0000573272 00000 n 0000550512 00000 n 0000222224 00000 n 0000229898 00000 n 0000573336 00000 n 0000573367 00000 n 0000550678 00000 n 0000229920 00000 n 0000235904 00000 n 0000573442 00000 n 0000573473 00000 n 0000550844 00000 n 0000235926 00000 n 0000241480 00000 n 0000573559 00000 n 0000573590 00000 n 0000551010 00000 n 0000241502 00000 n 0000248826 00000 n 0000573667 00000 n 0000573698 00000 n 0000551176 00000 n 0000248848 00000 n 0000259975 00000 n 0000581794 00000 n 0000573784 00000 n 0000573815 00000 n 0000551342 00000 n 0000259998 00000 n 0000270382 00000 n 0000573892 00000 n 0000573923 00000 n 0000551508 00000 n 0000270405 00000 n 0000282201 00000 n 0000590498 00000 n 0000668809 00000 n 0000573991 00000 n 0000574022 00000 n 0000551674 00000 n 0000282224 00000 n 0000287902 00000 n 0000574136 00000 n 0000574167 00000 n 0000551840 00000 n 0000287924 00000 n 0000292611 00000 n 0000574242 00000 n 0000574273 00000 n 0000552006 00000 n 0000292633 00000 n 0000297065 00000 n 0000574339 00000 n 0000574370 00000 n 0000552172 00000 n 0000297087 00000 n 0000301465 00000 n 0000574447 00000 n 0000574478 00000 n 0000552338 00000 n 0000301487 00000 n 0000306776 00000 n 0000574533 00000 n 0000574564 00000 n 0000552504 00000 n 0000306798 00000 n 0000312141 00000 n 0000574619 00000 n 0000574650 00000 n 0000552670 00000 n 0000312163 00000 n 0000316309 00000 n 0000574747 00000 n 0000574778 00000 n 0000552836 00000 n 0000316331 00000 n 0000321097 00000 n 0000574844 00000 n 0000574875 00000 n 0000553002 00000 n 0000321119 00000 n 0000325564 00000 n 0000574950 00000 n 0000574981 00000 n 0000553168 00000 n 0000325586 00000 n 0000330275 00000 n 0000575036 00000 n 0000575067 00000 n 0000553334 00000 n 0000330297 00000 n 0000334350 00000 n 0000575144 00000 n 0000575175 00000 n 0000553500 00000 n 0000334372 00000 n 0000339246 00000 n 0000575261 00000 n 0000575292 00000 n 0000553666 00000 n 0000339268 00000 n 0000344789 00000 n 0000575347 00000 n 0000575378 00000 n 0000553832 00000 n 0000344811 00000 n 0000350829 00000 n 0000584817 00000 n 0000627692 00000 n 0000575453 00000 n 0000575484 00000 n 0000553998 00000 n 0000350851 00000 n 0000356060 00000 n 0000575561 00000 n 0000575592 00000 n 0000554164 00000 n 0000356082 00000 n 0000360588 00000 n 0000575678 00000 n 0000575709 00000 n 0000554330 00000 n 0000360610 00000 n 0000365733 00000 n 0000575764 00000 n 0000575795 00000 n 0000554496 00000 n 0000365755 00000 n 0000371494 00000 n 0000575883 00000 n 0000575914 00000 n 0000554662 00000 n 0000371516 00000 n 0000375548 00000 n 0000575969 00000 n 0000576000 00000 n 0000554828 00000 n 0000375570 00000 n 0000381234 00000 n 0000576064 00000 n 0000576095 00000 n 0000554994 00000 n 0000381256 00000 n 0000385843 00000 n 0000576170 00000 n 0000576201 00000 n 0000555160 00000 n 0000385865 00000 n 0000391445 00000 n 0000576265 00000 n 0000576296 00000 n 0000555326 00000 n 0000391467 00000 n 0000396212 00000 n 0000576362 00000 n 0000576393 00000 n 0000555492 00000 n 0000396234 00000 n 0000401366 00000 n 0000576470 00000 n 0000576501 00000 n 0000555658 00000 n 0000401388 00000 n 0000405144 00000 n 0000576587 00000 n 0000576618 00000 n 0000555824 00000 n 0000405166 00000 n 0000410780 00000 n 0000576693 00000 n 0000576724 00000 n 0000555990 00000 n 0000410802 00000 n 0000416352 00000 n 0000576790 00000 n 0000576821 00000 n 0000556156 00000 n 0000416374 00000 n 0000419983 00000 n 0000576887 00000 n 0000576918 00000 n 0000556322 00000 n 0000420005 00000 n 0000424798 00000 n 0000576995 00000 n 0000577026 00000 n 0000556488 00000 n 0000424820 00000 n 0000428818 00000 n 0000577101 00000 n 0000577132 00000 n 0000556654 00000 n 0000428840 00000 n 0000432232 00000 n 0000577198 00000 n 0000577229 00000 n 0000556820 00000 n 0000432254 00000 n 0000436908 00000 n 0000577304 00000 n 0000577335 00000 n 0000556986 00000 n 0000436930 00000 n 0000440288 00000 n 0000577423 00000 n 0000577454 00000 n 0000557152 00000 n 0000440310 00000 n 0000444641 00000 n 0000577509 00000 n 0000577540 00000 n 0000557318 00000 n 0000444663 00000 n 0000449400 00000 n 0000577615 00000 n 0000577646 00000 n 0000557484 00000 n 0000449422 00000 n 0000452939 00000 n 0000577732 00000 n 0000577763 00000 n 0000557650 00000 n 0000452961 00000 n 0000458617 00000 n 0000577829 00000 n 0000577860 00000 n 0000557816 00000 n 0000458639 00000 n 0000462815 00000 n 0000577948 00000 n 0000577979 00000 n 0000557982 00000 n 0000462837 00000 n 0000466706 00000 n 0000578054 00000 n 0000578085 00000 n 0000558148 00000 n 0000466728 00000 n 0000470457 00000 n 0000578171 00000 n 0000578202 00000 n 0000558314 00000 n 0000470479 00000 n 0000474760 00000 n 0000578257 00000 n 0000578288 00000 n 0000558480 00000 n 0000474782 00000 n 0000478707 00000 n 0000578354 00000 n 0000578385 00000 n 0000558646 00000 n 0000478729 00000 n 0000482478 00000 n 0000578451 00000 n 0000578482 00000 n 0000558812 00000 n 0000482500 00000 n 0000486780 00000 n 0000578559 00000 n 0000578590 00000 n 0000558978 00000 n 0000486802 00000 n 0000490767 00000 n 0000578665 00000 n 0000578696 00000 n 0000559144 00000 n 0000490789 00000 n 0000494954 00000 n 0000578782 00000 n 0000578813 00000 n 0000559310 00000 n 0000494976 00000 n 0000499449 00000 n 0000578888 00000 n 0000578919 00000 n 0000559476 00000 n 0000499471 00000 n 0000504864 00000 n 0000578994 00000 n 0000579025 00000 n 0000559642 00000 n 0000504886 00000 n 0000507847 00000 n 0000579122 00000 n 0000579153 00000 n 0000559808 00000 n 0000507869 00000 n 0000511147 00000 n 0000579228 00000 n 0000579259 00000 n 0000559974 00000 n 0000511169 00000 n 0000518119 00000 n 0000579345 00000 n 0000579376 00000 n 0000560140 00000 n 0000518141 00000 n 0000524931 00000 n 0000579440 00000 n 0000579471 00000 n 0000560306 00000 n 0000524953 00000 n 0000530159 00000 n 0000579557 00000 n 0000579588 00000 n 0000560472 00000 n 0000530181 00000 n 0000536362 00000 n 0000579685 00000 n 0000579716 00000 n 0000560638 00000 n 0000536384 00000 n 0000542527 00000 n 0000579780 00000 n 0000579811 00000 n 0000560804 00000 n 0000542549 00000 n 0000545858 00000 n 0000579897 00000 n 0000579928 00000 n 0000591723 00000 n 0000594177 00000 n 0000595856 00000 n 0000601076 00000 n 0000602446 00000 n 0000611246 00000 n 0000614611 00000 n 0000620253 00000 n 0000624500 00000 n 0000627948 00000 n 0000628911 00000 n 0000637073 00000 n 0000639074 00000 n 0000642715 00000 n 0000650632 00000 n 0000651369 00000 n 0000652138 00000 n 0000658839 00000 n 0000662941 00000 n 0000664098 00000 n 0000665595 00000 n 0000669060 00000 n 0000670211 00000 n 0000671123 00000 n 0000672509 00000 n 0000580329 00000 n 0000581039 00000 n 0000581695 00000 n 0000582058 00000 n 0000582690 00000 n 0000583250 00000 n 0000583820 00000 n 0000584335 00000 n 0000585479 00000 n 0000586678 00000 n 0000587012 00000 n 0000587071 00000 n 0000587465 00000 n 0000588044 00000 n 0000588546 00000 n 0000589081 00000 n 0000589205 00000 n 0000589856 00000 n 0000673866 00000 n trailer << /Size 558 /Root 1 0 R /Info 2 0 R /ID [<8E5039C84F58E175247F59F4E5FC488F><8E5039C84F58E175247F59F4E5FC488F>] >> startxref 675517 %%EOF scotch_6.0.9/doc/CeCILL-C_V1-fr.txt0000644000302600021200000005314613303015264016717 0ustar pelegrinpelegrin CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-C Avertissement Ce contrat est une licence de logiciel libre issue d'une concertation entre ses auteurs afin que le respect de deux grands principes préside à sa rédaction: * d'une part, le respect des principes de diffusion des logiciels libres: accès au code source, droits étendus conférés aux utilisateurs, * d'autre part, la désignation d'un droit applicable, le droit français, auquel elle est conforme, tant au regard du droit de la responsabilité civile que du droit de la propriété intellectuelle et de la protection qu'il offre aux auteurs et titulaires des droits patrimoniaux sur un logiciel. Les auteurs de la licence CeCILL-C (pour Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) sont: Commissariat à l'Energie Atomique - CEA, établissement public de recherche à caractère scientifique, technique et industriel, dont le siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris. Centre National de la Recherche Scientifique - CNRS, établissement public à caractère scientifique et technologique, dont le siège est situé 3 rue Michel-Ange, 75794 Paris cedex 16. Institut National de Recherche en Informatique et en Automatique - INRIA, établissement public à caractère scientifique et technologique, dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153 Le Chesnay cedex. Préambule Ce contrat est une licence de logiciel libre dont l'objectif est de conférer aux utilisateurs la liberté de modifier et de réutiliser le logiciel régi par cette licence. L'exercice de cette liberté est assorti d'une obligation de remettre à la disposition de la communauté les modifications apportées au code source du logiciel afin de contribuer à son évolution. L'accessibilité au code source et les droits de copie, de modification et de redistribution qui découlent de ce contrat ont pour contrepartie de n'offrir aux utilisateurs qu'une garantie limitée et de ne faire peser sur l'auteur du logiciel, le titulaire des droits patrimoniaux et les concédants successifs qu'une responsabilité restreinte. A cet égard l'attention de l'utilisateur est attirée sur les risques associés au chargement, à l'utilisation, à la modification et/ou au développement et à la reproduction du logiciel par l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve donc à des développeurs ou des professionnels avertis possédant des connaissances informatiques approfondies. Les utilisateurs sont donc invités à charger et tester l'adéquation du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. Ce contrat peut être reproduit et diffusé librement, sous réserve de le conserver en l'état, sans ajout ni suppression de clauses. Ce contrat est susceptible de s'appliquer à tout logiciel dont le titulaire des droits patrimoniaux décide de soumettre l'exploitation aux dispositions qu'il contient. Article 1 - DEFINITIONS Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une lettre capitale, auront la signification suivante: Contrat: désigne le présent contrat de licence, ses éventuelles versions postérieures et annexes. Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code Source et le cas échéant sa documentation, dans leur état au moment de l'acceptation du Contrat par le Licencié. Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et éventuellement de Code Objet et le cas échéant sa documentation, dans leur état au moment de leur première diffusion sous les termes du Contrat. Logiciel Modifié: désigne le Logiciel modifié par au moins une Contribution Intégrée. Code Source: désigne l'ensemble des instructions et des lignes de programme du Logiciel et auquel l'accès est nécessaire en vue de modifier le Logiciel. Code Objet: désigne les fichiers binaires issus de la compilation du Code Source. Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur sur le Logiciel Initial. Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le Contrat. Contributeur: désigne le Licencié auteur d'au moins une Contribution Intégrée. Concédant: désigne le Titulaire ou toute personne physique ou morale distribuant le Logiciel sous le Contrat. Contribution Intégrée: désigne l'ensemble des modifications, corrections, traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans le Code Source par tout Contributeur. Module Lié: désigne un ensemble de fichiers sources y compris leur documentation qui, sans modification du Code Source, permet de réaliser des fonctionnalités ou services supplémentaires à ceux fournis par le Logiciel. Logiciel Dérivé: désigne toute combinaison du Logiciel, modifié ou non, et d'un Module Lié. Parties: désigne collectivement le Licencié et le Concédant. Ces termes s'entendent au singulier comme au pluriel. Article 2 - OBJET Le Contrat a pour objet la concession par le Concédant au Licencié d'une licence non exclusive, cessible et mondiale du Logiciel telle que définie ci-après à l'article 5 pour toute la durée de protection des droits portant sur ce Logiciel. Article 3 - ACCEPTATION 3.1 L'acceptation par le Licencié des termes du Contrat est réputée acquise du fait du premier des faits suivants: * (i) le chargement du Logiciel par tout moyen notamment par téléchargement à partir d'un serveur distant ou par chargement à partir d'un support physique; * (ii) le premier exercice par le Licencié de l'un quelconque des droits concédés par le Contrat. 3.2 Un exemplaire du Contrat, contenant notamment un avertissement relatif aux spécificités du Logiciel, à la restriction de garantie et à la limitation à un usage par des utilisateurs expérimentés a été mis à disposition du Licencié préalablement à son acceptation telle que définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris connaissance. Article 4 - ENTREE EN VIGUEUR ET DUREE 4.1 ENTREE EN VIGUEUR Le Contrat entre en vigueur à la date de son acceptation par le Licencié telle que définie en 3.1. 4.2 DUREE Le Contrat produira ses effets pendant toute la durée légale de protection des droits patrimoniaux portant sur le Logiciel. Article 5 - ETENDUE DES DROITS CONCEDES Le Concédant concède au Licencié, qui accepte, les droits suivants sur le Logiciel pour toutes destinations et pour la durée du Contrat dans les conditions ci-après détaillées. Par ailleurs, si le Concédant détient ou venait à détenir un ou plusieurs brevets d'invention protégeant tout ou partie des fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas opposer les éventuels droits conférés par ces brevets aux Licenciés successifs qui utiliseraient, exploiteraient ou modifieraient le Logiciel. En cas de cession de ces brevets, le Concédant s'engage à faire reprendre les obligations du présent alinéa aux cessionnaires. 5.1 DROIT D'UTILISATION Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant aux domaines d'application, étant ci-après précisé que cela comporte: 1. la reproduction permanente ou provisoire du Logiciel en tout ou partie par tout moyen et sous toute forme. 2. le chargement, l'affichage, l'exécution, ou le stockage du Logiciel sur tout support. 3. la possibilité d'en observer, d'en étudier, ou d'en tester le fonctionnement afin de déterminer les idées et principes qui sont à la base de n'importe quel élément de ce Logiciel; et ceci, lorsque le Licencié effectue toute opération de chargement, d'affichage, d'exécution, de transmission ou de stockage du Logiciel qu'il est en droit d'effectuer en vertu du Contrat. 5.2 DROIT DE MODIFICATION Le droit de modification comporte le droit de traduire, d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel et le droit de reproduire le logiciel en résultant. Il comprend en particulier le droit de créer un Logiciel Dérivé. Le Licencié est autorisé à apporter toute modification au Logiciel sous réserve de mentionner, de façon explicite, son nom en tant qu'auteur de cette modification et la date de création de celle-ci. 5.3 DROIT DE DISTRIBUTION Le droit de distribution comporte notamment le droit de diffuser, de transmettre et de communiquer le Logiciel au public sur tout support et par tout moyen ainsi que le droit de mettre sur le marché à titre onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé. Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou non, à des tiers dans les conditions ci-après détaillées. 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION Le Licencié est autorisé à distribuer des copies conformes du Logiciel, sous forme de Code Source ou de Code Objet, à condition que cette distribution respecte les dispositions du Contrat dans leur totalité et soit accompagnée: 1. d'un exemplaire du Contrat, 2. d'un avertissement relatif à la restriction de garantie et de responsabilité du Concédant telle que prévue aux articles 8 et 9, et que, dans le cas où seul le Code Objet du Logiciel est redistribué, le Licencié permette un accès effectif au Code Source complet du Logiciel pendant au moins toute la durée de sa distribution du Logiciel, étant entendu que le coût additionnel d'acquisition du Code Source ne devra pas excéder le simple coût de transfert des données. 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE Lorsque le Licencié apporte une Contribution Intégrée au Logiciel, les conditions de distribution du Logiciel Modifié en résultant sont alors soumises à l'intégralité des dispositions du Contrat. Le Licencié est autorisé à distribuer le Logiciel Modifié sous forme de code source ou de code objet, à condition que cette distribution respecte les dispositions du Contrat dans leur totalité et soit accompagnée: 1. d'un exemplaire du Contrat, 2. d'un avertissement relatif à la restriction de garantie et de responsabilité du Concédant telle que prévue aux articles 8 et 9, et que, dans le cas où seul le code objet du Logiciel Modifié est redistribué, le Licencié permette un accès effectif à son code source complet pendant au moins toute la durée de sa distribution du Logiciel Modifié, étant entendu que le coût additionnel d'acquisition du code source ne devra pas excéder le simple coût de transfert des données. 5.3.3 DISTRIBUTION DU LOGICIEL DERIVE Lorsque le Licencié crée un Logiciel Dérivé, ce Logiciel Dérivé peut être distribué sous un contrat de licence autre que le présent Contrat à condition de respecter les obligations de mention des droits sur le Logiciel telles que définies à l'article 6.4. Dans le cas où la création du Logiciel Dérivé a nécessité une modification du Code Source le licencié s'engage à ce que: 1. le Logiciel Modifié correspondant à cette modification soit régi par le présent Contrat, 2. les Contributions Intégrées dont le Logiciel Modifié résulte soient clairement identifiées et documentées, 3. le Licencié permette un accès effectif au code source du Logiciel Modifié, pendant au moins toute la durée de la distribution du Logiciel Dérivé, de telle sorte que ces modifications puissent être reprises dans une version ultérieure du Logiciel, étant entendu que le coût additionnel d'acquisition du code source du Logiciel Modifié ne devra pas excéder le simple coût du transfert des données. 5.3.4 COMPATIBILITE AVEC LA LICENCE CeCILL Lorsqu'un Logiciel Modifié contient une Contribution Intégrée soumise au contrat de licence CeCILL, ou lorsqu'un Logiciel Dérivé contient un Module Lié soumis au contrat de licence CeCILL, les stipulations prévues au troisième item de l'article 6.4 sont facultatives. Article 6 - PROPRIETE INTELLECTUELLE 6.1 SUR LE LOGICIEL INITIAL Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel Initial. Toute utilisation du Logiciel Initial est soumise au respect des conditions dans lesquelles le Titulaire a choisi de diffuser son oeuvre et nul autre n'a la faculté de modifier les conditions de diffusion de ce Logiciel Initial. Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi par le Contrat et ce, pour la durée visée à l'article 4.2. 6.2 SUR LES CONTRIBUTIONS INTEGREES Le Licencié qui a développé une Contribution Intégrée est titulaire sur celle-ci des droits de propriété intellectuelle dans les conditions définies par la législation applicable. 6.3 SUR LES MODULES LIES Le Licencié qui a développé un Module Lié est titulaire sur celui-ci des droits de propriété intellectuelle dans les conditions définies par la législation applicable et reste libre du choix du contrat régissant sa diffusion dans les conditions définies à l'article 5.3.3. 6.4 MENTIONS DES DROITS Le Licencié s'engage expressément: 1. à ne pas supprimer ou modifier de quelque manière que ce soit les mentions de propriété intellectuelle apposées sur le Logiciel; 2. à reproduire à l'identique lesdites mentions de propriété intellectuelle sur les copies du Logiciel modifié ou non; 3. à faire en sorte que l'utilisation du Logiciel, ses mentions de propriété intellectuelle et le fait qu'il est régi par le Contrat soient indiqués dans un texte facilement accessible notamment depuis l'interface de tout Logiciel Dérivé. Le Licencié s'engage à ne pas porter atteinte, directement ou indirectement, aux droits de propriété intellectuelle du Titulaire et/ou des Contributeurs sur le Logiciel et à prendre, le cas échéant, à l'égard de son personnel toutes les mesures nécessaires pour assurer le respect des dits droits de propriété intellectuelle du Titulaire et/ou des Contributeurs. Article 7 - SERVICES ASSOCIES 7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de prestations d'assistance technique ou de maintenance du Logiciel. Cependant le Concédant reste libre de proposer ce type de services. Les termes et conditions d'une telle assistance technique et/ou d'une telle maintenance seront alors déterminés dans un acte séparé. Ces actes de maintenance et/ou assistance technique n'engageront que la seule responsabilité du Concédant qui les propose. 7.2 De même, tout Concédant est libre de proposer, sous sa seule responsabilité, à ses licenciés une garantie, qui n'engagera que lui, lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce, dans les conditions qu'il souhaite. Cette garantie et les modalités financières de son application feront l'objet d'un acte séparé entre le Concédant et le Licencié. Article 8 - RESPONSABILITE 8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la faculté, sous réserve de prouver la faute du Concédant concerné, de solliciter la réparation du préjudice direct qu'il subirait du fait du Logiciel et dont il apportera la preuve. 8.2 La responsabilité du Concédant est limitée aux engagements pris en application du Contrat et ne saurait être engagée en raison notamment: (i) des dommages dus à l'inexécution, totale ou partielle, de ses obligations par le Licencié, (ii) des dommages directs ou indirects découlant de l'utilisation ou des performances du Logiciel subis par le Licencié et (iii) plus généralement d'un quelconque dommage indirect. En particulier, les Parties conviennent expressément que tout préjudice financier ou commercial (par exemple perte de données, perte de bénéfices, perte d'exploitation, perte de clientèle ou de commandes, manque à gagner, trouble commercial quelconque) ou toute action dirigée contre le Licencié par un tiers, constitue un dommage indirect et n'ouvre pas droit à réparation par le Concédant. Article 9 - GARANTIE 9.1 Le Licencié reconnaît que l'état actuel des connaissances scientifiques et techniques au moment de la mise en circulation du Logiciel ne permet pas d'en tester et d'en vérifier toutes les utilisations ni de détecter l'existence d'éventuels défauts. L'attention du Licencié a été attirée sur ce point sur les risques associés au chargement, à l'utilisation, la modification et/ou au développement et à la reproduction du Logiciel qui sont réservés à des utilisateurs avertis. Il relève de la responsabilité du Licencié de contrôler, par tous moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens. 9.2 Le Concédant déclare de bonne foi être en droit de concéder l'ensemble des droits attachés au Logiciel (comprenant notamment les droits visés à l'article 5). 9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le Concédant sans autre garantie, expresse ou tacite, que celle prévue à l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, son caractère sécurisé, innovant ou pertinent. En particulier, le Concédant ne garantit pas que le Logiciel est exempt d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible avec l'équipement du Licencié et sa configuration logicielle ni qu'il remplira les besoins du Licencié. 9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le Logiciel ne porte pas atteinte à un quelconque droit de propriété intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout autre droit de propriété. Ainsi, le Concédant exclut toute garantie au profit du Licencié contre les actions en contrefaçon qui pourraient être diligentées au titre de l'utilisation, de la modification, et de la redistribution du Logiciel. Néanmoins, si de telles actions sont exercées contre le Licencié, le Concédant lui apportera son aide technique et juridique pour sa défense. Cette aide technique et juridique est déterminée au cas par cas entre le Concédant concerné et le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage toute responsabilité quant à l'utilisation de la dénomination du Logiciel par le Licencié. Aucune garantie n'est apportée quant à l'existence de droits antérieurs sur le nom du Logiciel et sur l'existence d'une marque. Article 10 - RESILIATION 10.1 En cas de manquement par le Licencié aux obligations mises à sa charge par le Contrat, le Concédant pourra résilier de plein droit le Contrat trente (30) jours après notification adressée au Licencié et restée sans effet. 10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les licences qu'il aura concédées antérieurement à la résiliation du Contrat resteront valides sous réserve qu'elles aient été effectuées en conformité avec le Contrat. Article 11 - DISPOSITIONS DIVERSES 11.1 CAUSE EXTERIEURE Aucune des Parties ne sera responsable d'un retard ou d'une défaillance d'exécution du Contrat qui serait dû à un cas de force majeure, un cas fortuit ou une cause extérieure, telle que, notamment, le mauvais fonctionnement ou les interruptions du réseau électrique ou de télécommunication, la paralysie du réseau liée à une attaque informatique, l'intervention des autorités gouvernementales, les catastrophes naturelles, les dégâts des eaux, les tremblements de terre, le feu, les explosions, les grèves et les conflits sociaux, l'état de guerre... 11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du Contrat, ne pourra en aucun cas impliquer renonciation par la Partie intéressée à s'en prévaloir ultérieurement. 11.3 Le Contrat annule et remplace toute convention antérieure, écrite ou orale, entre les Parties sur le même objet et constitue l'accord entier entre les Parties sur cet objet. Aucune addition ou modification aux termes du Contrat n'aura d'effet à l'égard des Parties à moins d'être faite par écrit et signée par leurs représentants dûment habilités. 11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat s'avèrerait contraire à une loi ou à un texte applicable, existants ou futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les amendements nécessaires pour se conformer à cette loi ou à ce texte. Toutes les autres dispositions resteront en vigueur. De même, la nullité, pour quelque raison que ce soit, d'une des dispositions du Contrat ne saurait entraîner la nullité de l'ensemble du Contrat. 11.5 LANGUE Le Contrat est rédigé en langue française et en langue anglaise, ces deux versions faisant également foi. Article 12 - NOUVELLES VERSIONS DU CONTRAT 12.1 Toute personne est autorisée à copier et distribuer des copies de ce Contrat. 12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé et ne peut être modifié que par les auteurs de la licence, lesquels se réservent le droit de publier périodiquement des mises à jour ou de nouvelles versions du Contrat, qui posséderont chacune un numéro distinct. Ces versions ultérieures seront susceptibles de prendre en compte de nouvelles problématiques rencontrées par les logiciels libres. 12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra faire l'objet d'une diffusion ultérieure que sous la même version du Contrat ou une version postérieure. Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE 13.1 Le Contrat est régi par la loi française. Les Parties conviennent de tenter de régler à l'amiable les différends ou litiges qui viendraient à se produire par suite ou à l'occasion du Contrat. 13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter de leur survenance et sauf situation relevant d'une procédure d'urgence, les différends ou litiges seront portés par la Partie la plus diligente devant les Tribunaux compétents de Paris. Version 1.0 du 2006-09-05. scotch_6.0.9/doc/scotch_example.f0000644000302600021200000001114313560004726017172 0ustar pelegrinpelegrin************************************************************ ** ** ** NAME : scotch_example.f ** ** ** ** AUTHOR : Francois PELLEGRINI ** ** ** ** FUNCTION : FORTRAN testbed for the LibSCOTCH ** ** library routines. ** ** ** ** DATES : # Version 3.4 : from : 04 feb 2000 ** ** to 07 feb 2000 ** ** # Version 4.0 : from : 13 mar 2005 ** ** to 13 mar 2005 ** ** ** *234567***************************************************** PROGRAM SCOTCH_TEST IMPLICIT NONE INCLUDE "scotchf.h" DOUBLEPRECISION SCOTCHGRAPH (SCOTCH_GRAPHDIM) INTEGER VERTNBR DATA VERTNBR / 3 / INTEGER EDGENBR DATA EDGENBR / 4 / INTEGER VERTTAB (4) DATA VERTTAB / 1, 2, 4, 5 / INTEGER EDGETAB (4) DATA EDGETAB / 2, 1, 3, 2 / INTEGER INDXTAB (1) INTEGER IDXVERTNBR INTEGER IDXVERTTABIDX, IDXVENDTABIDX INTEGER IDXVELOTABIDX, IDXVLBLTABIDX INTEGER IDXEDGENBR INTEGER IDXEDGETABIDX, IDXEDLOTABIDX INTEGER IDXBASEVAL, IDXFLAGVAL INTEGER IERR PRINT *, 'Starting' CALL SCOTCHFGRAPHINIT (SCOTCHGRAPH (1), IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Cannot initialize graph' STOP ENDIF CALL SCOTCHFGRAPHBUILD (SCOTCHGRAPH (1), 1, VERTNBR, * VERTTAB (1), VERTTAB (2), * VERTTAB (1), VERTTAB (1), * EDGENBR, * EDGETAB (1), EDGETAB (1), IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Cannot build graph' STOP ENDIF CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Invalid check' STOP ENDIF PRINT *, 'Outputing original graph' CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Invalid graph output' STOP ENDIF CALL SCOTCHFGRAPHDATA (SCOTCHGRAPH (1), INDXTAB (1), * IDXBASEVAL, IDXVERTNBR, * IDXVERTTABIDX, IDXVENDTABIDX, * IDXVELOTABIDX, IDXVLBLTABIDX, * IDXEDGENBR, * IDXEDGETABIDX, IDXEDLOTABIDX, * IDXFLAGVAL, IERR); IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Cannot get graph data' STOP ENDIF PRINT *, 'Number of vertices : ', IDXVERTNBR PRINT *, 'Index of verttab : ', IDXVERTTABIDX PRINT *, 'Index of vendtab : ', IDXVENDTABIDX PRINT *, 'Index of velotab : ', IDXVELOTABIDX PRINT *, 'Index of vlbltab : ', IDXVLBLTABIDX PRINT *, 'Number of edges : ', IDXEDGENBR PRINT *, 'Index of edgetab : ', IDXEDGETABIDX PRINT *, 'Index of edlotab : ', IDXEDLOTABIDX PRINT *, 'Updating vertex and edge arrays' INDXTAB (IDXVERTTABIDX + 1) = 3 INDXTAB (IDXEDGETABIDX) = 2 INDXTAB (IDXEDGETABIDX + 1) = 3 INDXTAB (IDXEDGETABIDX + 2) = 1 INDXTAB (IDXEDGETABIDX + 3) = 1 PRINT *, 'Outputting updated graph' CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Invalid check' STOP ENDIF CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Invalid graph output' STOP ENDIF CALL SCOTCHFGRAPHEXIT (SCOTCHGRAPH (1), IERR) IF (IERR .NE. 0) THEN PRINT *, 'ERROR : MAIN : Cannot destroy graph' STOP ENDIF PRINT *, 'Test complete' RETURN END scotch_6.0.9/doc/ptscotch_user6.0.ps.gz0000644000302600021200000177376413560004726020152 0ustar pelegrinpelegrin‹\§Š]ìým³%·•¥ ~÷_qÛÆÒ,Ó¦¤îp‡lz,wÀLm%•šTg©&'m,DÅh‘ vDP"+Fÿ}ž7Þ¤”²«²»z,³R/ä½çœëÇØØ{-`ïµÿêøÅ§?ªŸ¿øõ³­?Ë_ýÕõòÙÓ×/^þäáóß=ÿöÕ_ÿöoö—’®ßþðòùo¾|ý°†˜>yúùóÏž~õÐxöðé‹/^ÿþéËgüõ/Ÿ¿þêÙO¾ý1ýîbÏ_|s?}Í«ÿñÙç÷³ÏR|XÓOöÂÿbÉ…þâéož½úÉC‰oþ/?Æ=ÔWŸ=ûæs^k/¾ûæóçßü¦½øþ'ÿîÜÒ¹­¼u¿øì»¯Ÿ}óz¼øæ5—¸~v}zÅÀ¿Û¯âÊ¿>™¿|2þå/ç¿Ú¯Š/•ÇùÔÿ÷Ç7ýä/:ÿõ³wÿ:æ?wþùéz¼”¯|â ýWó…OÿÓ1ÿü|{¡Oÿ“o~’ýÇ9¯è?êõ?ºß_<ýöÙËOŸÿgŸûéÆý›Ï¯_ûÖ«å¯î¿ûé/>ýÏ~í`üäá¯ÿûßÿøåã?ûáÙ?{ñõß¼ýŒòô›Ïÿýóož½³‡½úEýEÿäÓŸþ¿úÿøt{7óÓ¿xúòé×Ï^?{É—~þíóÿ1‡ðöO_|÷ò3.ñðËg¿zxñÝëo¿›3]~Ê×ý'!¦¸<ùôéÏ^ÿпù쫯¾{ùìáÕÓß={øüÙÎгß<ÿæ/_|öé³×?yxýìûûò…SµüÕÿ°<á¢÷óÏ^?¤>÷þèáÝ‹¿öOŸüü ¯ýÿ?io~ýü›ÏýÈ~þäÓ7ϾÿìK~øÕ›O—Ÿÿ¡=©o>ÿî[þýËOÞ¼~ùô›W_a[¼ýüÕW¯¾xúÕ«g?ò»WŒëCŒÇúðõw_ñÊ—ó•óÇ;/-/}Ű}ûÕw¯Jx3ÿn~÷ßbãÏ¿yãÕÞü}xøè3ñáGño~âžñÌï ÷Ÿ½øæ³§¯yÍ/ûäÙ«_}§Éó˜¿ó•¿û“—¾yö›‡WNãÃüŽå£oøø£ü¥Ÿ~|ï7<ÌqxóÑg~ôöCóÙæC…w·öËO¼¡>ûñµ/úî¯ãÃÓÏ?Ÿ_ñËOþ~ùúéë—Ï¿øì»—/1ÄÇßÞÔ‡úðÒøðê»_?<ýõ«‡ðãÀâÃW¯ßÌ7ø¶?|ñâåÓ¯¾züàâ;ýü‡WÏÞ^Œ©ú[Ÿ™1øöÙ›Çi{ýò;f9ý[Lù»§_}ñìÙço–W¯Ÿ¾þî•ÖòäÃËŸÅ8ýôg/¾}þìÕ›'ÿ·Ç~Å‹ãgO_ÿ}œ>âGó_ÿ°üüÉhíïÃ|-üÃÏŸ|ó ?üüÉOûã¿?{ýrþûó/~ôúéó¯Þøþùh¥?àçižËýË/øöÙCâ³þò³Ç¡úâ›×/¿ûRÃ?=ðeüá+Þüæ7O~ý”ÙøÕÃÓ—/Ÿþ°ù»wþu®8c˜«€ÿ³rŸq£ 7ñv Þßô³?¾égîùáÕ—/~ÿ-3¤SÄݽ|ýfyÿgó÷ÿðà sð° ú¯ž|üËÃŒ´¿{BpÇx[‡²îùÑ1Jë[Å#ƒÇöýÀ”RóÑS~Ø–Çéûìw/_ñé_ôóó±ó~œñÇGž_óS~õÇ/>Ý_ýáç˓ϟkìFØÏøá͇_õ=?¼~|!¾{áõÛO¬ï_xû‰´<¾ðí›Ç·Ÿýoo~T«PñlŽæÃû_ÿ0?“þüg–wŸñ÷·“úî_?òÉ?Š!?Òî,n†æí¨ñ)–-±å“¦ý»7Ü×'÷äwo|åW¾û«‡¿ûC{øÆÞpÑçßñÛï¿|öò™nt™ðãïÿú~þêÛ¯žþð7ýóg¿úåßüõ¿g ¾ü/ŸƒÖb~Tû›xó~…½»ÊÛ_¿bù-òÖ[ƒžÿªŸÕ~fgDœ¿IŸ}ÿ\ìò_y7Ëc$ÿÃ[XôÖä EoÞüf.±_~2=ÿã§èbŸ€†GæÑ1˜CøfqÐ>ø ‡ß¼sBø³WzüûÇkyÕWZÞüÅ+½½»Æ }{Íož±¦^ë"A‡<Ê×áåÃÏ?|àÑMxÊWD³×BWnÆÐ÷îÞ‘py÷ÂÏqþ¿ùàXŸ¾y¼Žûì«×O§]LHQß¾ð+¯ÿîCË“Ÿ½ùôáۇǷ\qocë¯çËoùìͶ‡ŸyÉ7?Jó‡go~´Î¾þÌx÷›7a¾òå›8ÿýüÍã'þ×7òÛ7×øý›¾ÿÉWo¾}àâ¿çǯß|»pyüÆW×ùã ŒóGLæáñ§—üôøö+~zü›×üôx¡ïߊ?ýèK~àÖÇ8ùíÃÓéÐAlŸ~úÖYû<¼ÀïïÇQK[ùÐ[>ñçèÅ·¯>&L%^~ñHòù„$…AÉAþ°¬éÞžŒŸÞLíÃúèížü/ß<ÿß¾{öøHuò’7ïýÛ5ò¸Dþþí¸ìHù˜@_8îÛe·¿{õøŸPcÍ;Œõe†…ˆúägÏð6Ÿ½z¼˜ñæÃÝ?¼ƒŠoßä9gûìùÓ¯þò"ütþ¼¾#ü?øô£7ÿöÓÇ?¿Ÿ}ñô»¯^ã¾|õã )J<e•³¿˜ôwÿúòÕg“Áüîí¿ŸNèòó'׿ÿé/æ/ÿüÓgϾy· °¼»|ôö#ìàíl€ž>ïÛÿäkËŸýºü.0ÿ¾¶à†ßÞàwŸù8øƒÿ|ëvÞ?+(ëõ£«yË7žÎàþä7Ÿ=|ÿù3&¹XH™%“øÅæç/^ñUãÉÿ÷ÿ3ÿs½øîåsÀïøòçßüŽ˜öÅWOóæO qí«§ŸýöËs·gåÍ·ß¿zøö‡Woä·ß¾|x:iÚc|ùæ›_0¯f$ÿtÜOE36.?z bµˆïýÜÃóŸÆÿ?ùƒx¾gî ~ô}iÑvýé‘Wν>‚®ÿöÕõáÝûá½ÿ¸c7¿zyüj ðÏ}ý¼ß·0¿÷áÏ~ïò*¯üxÍïÿøÊô|_ó¯þðfy7jo¿Ùÿ¯ÇŸ€?7pþf)qÌþ«Ælù cöðÇcöÑÝ–??TË?þºj¨þüã{jRÜ2ò-M™ÏýëJ~óÇö¹-ïPŒ>êqcöýþÒ‡—ÖGÏÅÍü¸äéÜòÑ8æ?—Çïûù“Ͼ}‡Yßo3<|ûõ{˜=÷ïl:»—_%g([þñ6ôŸÙ™þ°ýÎÝ¿y»Õðþ¶æ&OpSð7¸÷8¦“}‹Þ|ŒÞÂOåowq&™[>º±w(ðÛ¬ÇàOAÄ£Ûyòbþ‹ˆöùüa™ÿÔíÃÄ?û-¡ÍÍ–g¯ßÝÆÛàKŒyç½>l=|ùê#„Ø­ß‘?Þyœáw/¼÷ˆÓÓûèà"47*X<ŽŠaú­ý¼ËoŒÒÆRƒíDé ðÛxüÆèld5ô¾}ïódùئæŸzC~ìíÚxóO\â£Yú3ùÁ`ß‘FÇûÑ·#ôxÛ?,oGÁ_çW=þê‡?úõÑ“w¦ùÆM¢g/ŸúöüMﻞo÷Ø´þ·ï¿‹5Î&–ün6gûá­ ð°ó/_>ûöÙÓ×b ŸøkáñCË;Bÿð±M¾{ÍÏñ…þ?cÅ>Âß~ñìý½øaXöó7o7Üù«7/?üòÙ›—ï"*´ÔçWýjùØÌçKÿ ñsùÛ³×þñgO¿ýèá_½~óêõË¿å~ýëùÏÿ´¼E?òÅó¯ÞÌ}ŠÞ}xÿôí %nu‚HVÍÜf|ûËò䇗x¨_=ùþñ_.É·hçÏn¨þ\kŸŸ÷h™²ƒøðÑeßÙÓ—Ÿ=|tÉΈþò€¼ê'ŽSß_ûúâÃû÷BH?aýp*ýþþîÙËW¸²Ÿ|ô‘?>©þ~î‚ÕE|pþI<~€É”ÏÇï§¿{þùÃÏ~üð?½øæÙ«å¯Þÿ䣳ò¿þìob)Ç¿›þP¿~I~úÍTûK{ž¡úâ³çðá?ºÄ_ÿ?¾|ýúÛŸg6ÿÃø÷?~ýýëg¼ôƒ¸íüýÓß=}þÕÓ_óyïOFýŸžòˆoðÕg/ŸûúÕ_=ÿʇ|âeþä4Üû»Ÿ¿|öÿÓwóû¸+þþ×w|>lá<~H²ÿá5£ôB8Ž‚c›Ä÷ÃéÞþÝ×úîO_?e%Ôé¼~·‡íñõç¯ÆóïŸ}þ‹ç¯?ûò=ëÕâø ]ö/^¼zþxdï®Â¿Çúúì·xWØäÃÛ½—?ùÚ÷{4ïÏo–·‡6ïwÖæöͻ͡yNó)[œÙõ}òýbÕÞ·¢K`Fz` © '.&e°úñsK8qx7ðL¥Ö»Tæ®×õ:Þsè¹÷5"oÔŽ9b3<ÊÍuyu]p‰™µŠµ„»0‰gÜûÁòébè3®tã^ æ¿ñì\žÉßú`êqk}ÜKe¸ Ö¶;Œ\ˆ…/ÀÕûXWC.}=®µâ­®4â¬X¯R¯¼Ž×±¬u߯sc¾vö‹cE¥vW~hŒZË#’·¼çÊ@¬nh"í5……µ:òyáb“«r×Ä‚Ðy(&ðìzPÝ3ž¸¦3ãÆ7luuñvüúÂÒìEBÞ6Üm¿XàX?Ž£à ™Ù²]8šµ¯˜Ô‰£«¸÷’÷@ø¸n–óÝc4 ¥ÖÛç^0¯qz!ƒUŒc?¶»âd ÷pܽ7žmÔu_0"rí'æÅ]' *\GŽÓ»rÀWßuÇ ðæ¾cÅ©â[öÁGˆT÷¶\½ô¬¡°€*ßßïxµR÷{ Ç­L-^û‰ñÇ帮z™æ£B:˜úq†ó £nÌÀÎBÛÛÍúá6 wÕ“ÀyÙœôXï÷ ·ŽÂ•\#‹ÅÏb |ëÅêbj»]K|ôØÇŽÑi)c°+S1JÃì—ëòÞ׌Ó¥u*‹&cŽ•èÍ¥ãÝùmÍû…Í¥;b ½£b §´pýqm‰áÙo–ãÀúùÌŠ›Æ'òæÝŽÕy˘~bÀzŠÃ¿>/þr©„&çd.sܸ;ïw#T¬p@k»ò}a‡ KLãnø¸6½YT×N\X1‡ @¸S«kdìGê¬+î¬pl,³z×HDg":ˆ†õÆúk„óõ¨ A?—‹ˆ‡•ß÷¹1œWNýf$öB¬±d¬ŠH›q]—1sàAY Æäý^JÅ@0¦ÎjNëJXaÖ÷±­˜Ô¾wž 8 '^?¦˜ˆ‰k åŽi\×™0$ÖyÅý]÷MܯÀ”³^LAðÁXá<Ĕ¹\+¾ŒiºËN8 qI¯ðx›ñ¸â–ÏØy‡“ð×bMßÜ Áá¦zTÃï#½„ûÐÙw£ÈŠÇ_Üù¹V~ÁÊñøë(8¸“[_™@–JI×±„ÿƒÿù· üë¸ÀGËË›wûËÏ¿x$ñ“¾ýéæÍLÑÿ ›7éûfóæíý«Ü¼™ÏößÇæÍãü¾ß¼yüõ¿vóæ¶­ÿò6oöO7o¶‡­pÿ´z8øá¿x÷&†YÛ7VþOmßÌOü_²}þÌÎÍûŒœîÖÍ“§,½ž³øßd+gÛž|ù÷_>›©¸/å‡'ß2[/>ÿðÒùðä??{ùâà åá ŽîýïÜޓ׿ÿðþ¾><ùâÅw/?¼xáùï>ú‹íáÉ«çß¿ÿ=Øóûß>þÓ¿ñÞÏ>üÆwÿ‡÷¿|ó/>üÆß}úá7¾ã—ï+\åé‡ßx¤_øk~öþ·ÈÂ{òì£_¹Î—ýʘ=ÿèW®ôÕ‡_YCO¾ùèW.õâ£_˜o?ú•+¿üèW®üê£_™‰×ýÊýî¿Ù®ÛöçˆXB„aøE@ñÙGnr•F[•€v~Üèpï\vl B˜ë (î÷ÿ†Á4ÐyÛ–£@+ÝÊ›»'| * ÿcäï­ðáqÄ‹/Îa´3„w×¶Bïj=–¬ á³g‹èPґæ!ü{Aƒ1AòÐèà ö‡}ç9á[_Z¿¤O6xůT W_wPp+nß¡Ñð¡Õ-¾5ß F^ûuB­lKWc¤B-ëqÀC‡æ]õzÜTØâíVÉÉ ù\¡°î.‰۞à)|fKP®ÊWUHÒ™"7Y!Õ0ÙQhLÊ–Ž+d+y…´¯÷[•ç™$&.´„c…£Ü0’^® ]…!íGîöåS‚tµÆ/ð›»ö zR׫œ†2Ô}¹cæ‘G—¾¶=TøÀzÇ\b–Ùh 0±›AǶÌZâÅcmwØî£ÜËž!x}l…uVkqW/3/;$¬)0£Í‰‘Îñi˜°;Bòt¶íjÜ¥¥ZÜ_M;T’G€¡ì\j_yº|Ø=† 3/á‚"CÎZ:2”&8þªæuÇJÖ6x+G(Læ«ïqÂ|ÓÁÝ@9±åØ0Ò«Ã÷áKéŒLï²¶Ùjuã"ÂH÷“9ã>BÅòS½yÑ«bmeVÌ´òAV¶Üáî5ôÒ|ÆíÚ¸×vj•NuŽiß ›rÝ;^z)­@Û —d nMø¸nÖ³´±4à²LVÉX! õù^–"̲5—½Û?¼Š9.'l¯a"u:}x–¾CZ¹2T7º”îc…eæ¼,Ëò<ÄØŽu,7S°µ;z0ézž}]GÀds¼{`ØÜ¼>Üÿdܘà€QÄ]OùÄ$n'¥Äín‘86Ÿþ7æCÀ.*ol0a‘¶Â—UVÁÎèäÜ—xæx²¶ÛÎ0>n¨u·ª´¢Î43ÐŒ4£ÏWÛ·Ðö¶•‹©å ž23Ë^”˜1Ú‹'óôw»«ß럎O ómÙ/†fÔ|dn8m«‡ ³Å}àëbªÇXÇ}C÷û‰kÜÜÑ?cXñÇëœkK« æÉmóE£av)¯[Ê£§öRð†¿„¸ã*޲áÝ$`íô~Búû’úʼ¹ >ªî îõº_þßΘZÏ;5»ò3öÊÚö:Ú’°:Ï;þ­ôˆÉÛÁ‡õ¬Ç?ô'cⲆä|ŽÍq\¸ë#„ ¼i¹E\[ÀeöȺ<½£QY¹acDpܹVÖÄ}´½—XÎež™ìÌCÃîÝRÀ[á1z޹í,œ€ŽcLJ㠙@žá£0¸º^ðÊ3XÊupÇLص1ÐÑ`R¯=Þ<ß67c³Ûéå {;úÅš;ǽŒ^Öóy±ÀÖ‚¥naÓR¡o c=+£=v|#‹; ¬Ážˆzža‰ù8ëk¿S¸Ê¸™P† O;6\ÄuáËö’êÍS>_ÜÄ D="ß¹/i¿1JÂ7#ƒ›æŸõ8Y~åГº[…ym«gEe[K# sÉÚ€¸¼±ïÅ$àm™æš«[‹¸¹À…øµ\a:¼‹‹²^ïqíõŠ î·F×G¿ZÃë&7‡z8šNtauà£=F:¸ŽOÛö%ï§g_!yªÓÏÆºÃÓÂæöÕyì XR™çƒQʧj`fy¬{9q÷¹N7p†`›ÌÄݽüYñØv}°ÆXƒæJàÍuÛ:ÃÜ{Ëu*®k'Ôà#À'ÖÎ~ÝyDàžÖmÓzæâÞÛY늳ˆu; »0;c%öÕóÆ›nXÜÖÇ!|'Ñ'=W"®‰…¹5Þ; 7z,)¤Ìê.}Ýn7ˆµ+ÀX"xäxß…(´×~µ›€1ÞLÊVãM¤^˜|®Ê\ebr`@/DzCïE+w‰¿f@ñf¸È@€'ôsÁž0z W=u[<6Ï^näHcg…Ç}Å6Y«&¹U¦ßmüƒéÀI. _ep ½`D̆§>I œ„ë:0®rØwx¦­±JÂiç=Æ-HGˆe/àÍ5ìšKÎxœRÚO`eNÖa•9Më~­À’å{pZ|K½nñ׆³ÚYÙ!7ÏÜöQY;H“g…EqC ?.Â7¡BÓÁ;¸4–€d0¬–Ô;ѵyT*Þœ˜ƒg[üà˜ÛÂ2ÌØ|âcˆž½}ma n zÍc÷€oO$/À7qµ‚_±¦´¬£;úŰȶÁÚJ`ˆ=6Lö„b–g¨ëF̓Ø6 Ëg-˜€”K3$lËW7ç.•ÛY™0[ºç»ƒùYâ)a…õ¹4‘<3XúW?t«˜(¦YEˆÌÔ51úXÎxº\Y‘wØá2ðËé!Z0ˆ£{˜ÆJ= F¿ «¸7=®§øD…H¹åaøÝA,˜ÌXˆÆhosm…ÕÛ ˜Y¼±rÇxàNì8‰¬ÁìH„ ÔupH>—Íëµ£¬í¸¶ÜDEàL¥y NÀ„3ÔVÏpݸÓÁ9À°;XO >ã½Á…$æ€/Èg%vr> ƒÆ SYÀ;¼Ô™“§•GfÝTàæq%‚+D÷T:6ƒ«`jyÁ3 0È ¼Ä/Æ¿äñî*%0¶yðѺœžä\8øãLå¼V»»̬²òŠ@=Ô'8†ÓªÏÒ €7âÂîZ'â OÞ¯8{·ÇÏàD,`ÀKxjpÓðÔþb7  sze17îÊ,R?á½l1]Œ+¾‹µ$ˆÇ+Çq€†O…‰yþ(Jm3ˆÍ$ 0ͽïð,FÇ?n¨¼Œ’í[œ œ`1€fë"•;Ó.µËð!óÐ*¯û• ÈLp1žŽÅp¾³ÃoºñHxùe'´¶*az¶¸Ð3²±X^¼j4»ðöøª•¢»Ç¥¡yàzÉYt¼z™aˆ'wd'мžÕ Ç„á {ºø#üê*¥ÆD1À*¯8Y´“x¨«–°bŠŒïºsÁ—À8áépu£ðp Ü îÍÜ”5ÅL‹ðE¿%·9C0WNpâ†Ó¸æá׆ 9ö ¤ÅâÙÝ{aBðîLQˆþa—ÇÞ`Sˆ8~ùÞlœ±cò™¸y¦ió ÌÂ3n:—£®!àê"¥7ÀZ•‹Õ(w¹nfaíÊzE™µÄØáyy®~×¼¹DÄBùÈ€±:! ak ì @B`gd1ýÀÃr“L8ðô€Ò±xVFÃe€îÓÍ­2!B„ í¶x?±°ˆÇ"ÿìñÔf̳@|#y¯ÔñO mÙñÿ™v‚µÚ —î÷Ì¢]“!{öS’†›©ô0.o9,Gàî2œ×Ï7–"b2pŠŒ9.‹÷ @¬øp¬ÔsqBÿSŽ[j¼q†, &@‚çï`ˆ\›¹p¯5`güU€ÿÍPšùË8A™0!=¸ Ößñ2¬ïè»ÏŒ0Õa¤[ûq1 @o€Hñ¡06®Qà,°’ksß`|㧇“0¤ÌJÁÓâ« x?Jà8‚·êYòXNnoÔ»¯ >`Õ Ê[Y‡Åã_ŒØ)À:½¸‰ 8è´€äÃÓäk`ʘ+ w%)Én` \¯^û†SÝ Ú…«À0¿×‚n—é]“ÓÂÌ‚¹À|rÔ†ÕAOÖYo°ãýDè±tƺDF{ù“ ˜%ø\Äܰgùfûd·7˜oØ&vÖã¾´5—“%Ã<­ó> Ø[o‡kíÅŒ e¹0—xê†e¬|!+±Ëp@ÿ»÷Yš6ã2¶yH¸½ÓÌ€6Ìð^ÔË?þ…[Û` Æ ŒãyZ˜ì$ó­P3ù+ FÏ”²PO;á7ÓãZ¥ñ8¸ýÌ­m<8𬲢7bþY*Ë ¯…U]ð ¨’Üæ©­®“Z'FÁ–™Œ£»Ð{á=Ï­áºüië€â5¡ƒÚÜpº÷tZÍi[hœŒ–ø‡õ_Y[ÌWº8$èªÐ UzÌ ÄâY/˜=kY:‘pž€Å\ øîf¼œƒ–/hKØ•Ú9é “†TëÂ|µÕT… ¤§tü=|.$g0ðóeÇ‚®·ˆ¤–ñQ…;¨B°Ý=?&–7¤Y‹uá:ðÂ?’Ye,+î¡ã¿XâK]ݱ9¸íZ;8„…ÁÕ`Û‹«éjšŸ[|Ô\‰¨R]ß¼–„à=¼M›É[p?=ÑøZx˦ßPDf¬pºQÖãÌ‹ûRšž“áfE/ÜNÛ &$O&p'ú3à¿´À»m—”Œ]3\d×1vó7MB#>6¨M=;4sàÚX*Èw‚)âÐð¢ç²ºu°Âonh˜mÇU1{°î™!cÃ>Ö²…›\4ég©,QÑ"…Ùƒ— k° c4U-JÖçè¯^È!¾³˜ˆ ÔOÜ?Ïï> ”‚߀|,>Ðz©Z9+ wdŽVHô$Êâ䀩‘9âZ16!†q¡º]Š©l˜“5’ p;2ó¼Ÿ9À4ñÑ€F°éÍ0U"Qü³²qj Ìl›¦ `¨su¯VÙM;2ºða·tŒ€{^câG ŒâÂÄÞ§©Ä¬J9I3¿Šû®ΠfÞ®äÓ¸n&.ÖÜy½x "K(ð§Ìë*VL®î øívÀxv]¦ÅîæAâãÞswû7ÀXn³Ü†ùly°"ˆ¿D)Q1cÍÔêêäð7[]Áœ¸ P︆´*Œb»i|+€ÆŸ‡ˆ1Ýx œ ¬a¨ Ÿµ±Çu¹!ee|îá†0¡mæq&)"ÔÍ=ÕN‹cÙ€¨'h‘ÇÝ¢ï õ%¤®å’s <½âê 4¢»/€aÇp¹:Ñ(¨[wˆQ¬™ ìï²1GbŠDÀ,?t°Ð‰E®…ÈÀ§áØÀ£ÝÓLhj\W™X#-@£a²!  §CÐÂÊ? ûŒ"¡*ŠžÒ*íi¦’÷Ä0ý@DŒš O=.ž|±j î€ßšw†è ƒ"¦ŒNÀ$a8û}@pÌŒç|ñ†uˆWîF+|;ËíÆ1ô´ßðvÐ b+ž§F¸È›gD+\ ’å+‹'s}ºÜúðŒ’çÀ ²:›œw,ð‚¹We 8ÎØ pš,X)ºÐ㬫ù' Ù‚#+8ÿq­niŒmÖÁ€ÇÜßn‚n±ê¥Ão*ѱí«,%»@T&z¬·"}@A©±¢—x§µâfÓí(uNÄcmÇK½°ó£µÃãbùÖ<˜Ðœ©á ;Ü$N•€YÉøGh‘èa4»¹K¨hOp,Ü8ê¯M'ªðh…^¾=š „Á¬æp`·©ÀÙÁ}áWF’ØH\ãšûå —Š«fzׂ£ñüœañ @ h0¶^ÀÄ~a;iVWÜׯ#Ü´É'mËD7¹äDIÿ]+ ¼Y#–%ñÜü§X†qeÆúšçïÁ -Ì(ä.£ùǾïÆ`ëU>bXò›;4 çD°Á'nŤ€XÛq­AJÈÒ®`_ ÙŽëY¶P»i#ù¼ž¾ðÌÙ¥‡5Uèì¼:zw:ír;C¢al¸õF„À`’ÐNü 莾zÅáâÚÁß?7 $è9²Ä¹Ö×9€ºp±df ´/Àvïžn=vÄQpOëz@ËW °ù­‚”ÿ•øÜÝ è ¿×a§æÃTwx,þuÛ0D8X7·àäZ–中æq,H†uÂüÃXâ̈S@„«5UFvø—ù®±cÍÁ øš ÃsW<¶Q<€§ð‰Ü}Û- ÞÌjº›²F÷° WÊÍGóx‘x<ÜY¾6÷ǘþåÆIãL䘧 ·À‰ïß"~ëî=\ö ׬(†Wo+f8‹Û’<÷‚.Ùêf>ɘù ÌØ,Ìc)iܧu_+ÝÐýÓDìäà €Š˜ôš<¡"Ä·y|Qkׯ=B0I³ .V ‹$D¸;‚ccNk6o0X=fŸù;a½MÝ«<ÃôetúŽ{¸ÍØÜÒ¾@†­0»ïÌÇíñ¶ßd0°1´ÉǺb-ÛÌwHž\L&÷¾@™g«Má+¯¿ÌWuÏ2â6Þ&TÞ'Ä^Ÿ–qž¨€r@ÖRí,°^”Ö$¼%n¢º¡ïaŸÎrð2Ç O·”Á%#¹œöè¹ßÒ/Lâàë¹e¨`È8¸ÛuËÖ&m þ7Æl¡YÀÄŽã‚%Þ§ ÍËæAC2Å0¶ß¥®ÃlÍ­GÓáŠÅ¸–³mæQ•±b.c¶.aži8Ež¬@%Áb>Ü$SÃAÜ`S|âÀ-•4`½teæwÀ×mÍG†ÁRj ‹?ÌÇÄ»V.¯œ€pëuàÅ’{lØXµ—bË—.:N5NÇWyʸ&÷0  jfÐcpgZ–^,7=Ìè›[ P;œàSÜ%Q˜xönê@™Yæ, Oƒ•é ôÑúÏ9€ pÚ£`¿KLkŽ ¯æž5<޵óÏL7 ag2áÎg›Ë|‘ ŸÞ;æò8…ߌ5—;מ±À‰Ô–4vüÁX¶¦%œ,‹-0™ÄT\ Ü¡‚nM½’“¼M#Å¥ìÐ#ÓÁÞ¨•…õ¾ñá,ó08‚M½À‰²êÁpÄhè @f¦]lu³4Ù³}^²;¡Óo1ƒçmRÁV˜ 1mÁJn€ã èè&N뵚1œï…¡a‘7yð­ØúÇÉ Õ´2hA¯G„6EƒÀ޽ž–Þ[„ N ·»DÍrúÊúoû9)H»Íú‡¬G˜һݽ‚o‘<¬æ\D&ìôÑ GÄp`R‡ ç(郒™]ȨðT'^y*DZjµ2ÚÙâѲ˜¼¸7÷Ü­i•¢ŸŠ+$óÜP¬’O ^‰ØhN%«ÇMQÍÔ»ãš[zBŸÔ€ ܦrbr :AÐK²Îb[º)P,Swüì†é5Ñ3 2eJGžGúæ› ¯ï\@Uk¯ ^¸ Ü!0¹qwÕ,!ÏýÏ/ˆë ¤z‚¡¨šûåýôˆ„É?ï”õað÷aJ1Ñ.÷áីC\Ç€„Ã*º`Ù½§f¾-›ÕÖõô¸ÞÚYTbEIbkfŠ>¦¹0”¬°Áñ½Îl’Z¯‹–çqaµø¬²êpñè"ªÅ‘%¢C½6"h€†»™×J9,3€¯/€‘xܧik5¼Æ iÚ1¸? X­ÅKˆy[`„u7Õ“æ §^ÎPÊÏ úÇíyñ<{ÌÛ²7Œ¬œj~xxÉ#ØÖ(K—Tãßó#0n@ dEß°¤\­>–Êã3M˜(\4¨a`y £Û;Ë9^>xa’µ!xC<Þ5»À©˜?Ÿv› ‘²Û†8@†–ë.Î ìõh $÷@ÔT ªq̸! ŒL°a²g(Tµà©:øÇíÅ ›ûÄ¥3^ôv{ Ž¢ ŽKZ~À¦tÄËÖ÷6#ìžü§á³xë6 [Å»M°ã·Àr—ƒ£ò Êá/êà#:øÆ8Àyl1,9õL¤Á],ý49oÞÖ¬¤õÄà óh Ü ”¨õÀ}â ÖÄ lÑäd).³e0†-¯€òfMŒöZxÆðŸ=G¹’â)Æ@Œ¬ÎOum*€‹ Ìa²ä±tIê!KÁ‘îV=t$PÐí~@^‰âÓ|uD+z8tƒt¹rpß<ðèv®šcÈcáXê‰eª\–…:u“¹LÇÄáÅñ¿ ``5v*ÏàQw“dqaúi%ŒÖȘÛ*Þ#f`Ù•€ÜÕ ê&ûB0Á%]jÆZ„f…hjô›á| ›Z+}ˆ†é¼fp¯¦A^žtm›4’ˆl•Žá©:‚õn!<Ã0ƒY1µuަźGzé96u‹Nb8҄ã ÿë=2ŒR½VV½Ê[pöð´‹{Äb¾SòõZÇ ¯¶už ¸wå!”þz_o½÷È|jU©ÅÄw÷o.êð€™hk.Îw(|¡QA’=t…Øpc…P“A°ºŸ¨‘U÷\ú¾Ïc°mˆrذž8óS s'RMž²µÝ´Ójp¥.®êé9$&ãÀÜsóÐÅÅ7T‚Êš»x…•h¨8µ„w¤/*#à’~²°ÊÛ>ιYó)ü;<À¦hª‰‡ËÛ‰™I‰`‹gìÃêµMy¥=ˆvLÆÒ–Ì€¸Un €6{ÊL˜Á†÷Øñ×"íÆ×œ#Fˆ×9eóçE{b]v+¬¡²…h‘ö™t–Ûº/ðÕý.‡yH*ó4sà#×Ηã¤[8Ò+ž°˜=ÎtÙ EZϤ(ÉfX«žzæ­ìÐðÔmö, SëfFjpEX5Lï¨,€b%%î™YljÀá°ÌHEÒ|X?WÙ/œw5WÒå*3¦±ƒéœ‚àQ†º-—©p –.{?²õ§[ãÞp“€‰†M1kP©s!Öï* U@ÎÊ£^·Ùž•Aó8²ä.ŒÝ^ÂÚM‰fJWÌËì¤P˜GÁRÊ𜚅S­Í‚LB‚¶[Î}\8Ý€g`ïme0m˜oÄ‹ðu¸Ûd–àÉ"á!=ÌI]ÍŒì ´TÜ ÈÁjŒœ=Z­fØ]÷Z˜ÇB|ÝÌ×u‡¶ƒ•Yˆ·ª5¬„AHðtëò<2s»<õ!.ìFEw¥qE1$¨-HmTÃ0óàÎù4ãgºßaÒ~o³²Ž˜HÀŪ pnlpû3é‘à WbH1ŒªjÕÙ‹¥!‘â\ ˆÀ÷ºu L•º2€ü¸[8C89päxt˜âi"Ÿnfs¦«€°S’lE°2 ÷“`kÛ ÌxîÏsbOtWØ<1’Ølê–`EšÍ1ÂÒ…T»ûuܰ&‘ÕΠº#«*Àô,,îÈŒ<µðÓú99s]ð]`\³qMæ„ 4¢Ÿ®PFâN†¹¡0jAv×q €[/¢>‹»8Ü»ÛÛP3—Ù]OU œÍKÊ»œ¦2;܇â-@„ÁbêD? 'DÙ<Á” ˆw7¡ª§+f3CR€VÅá1æ(YΚøá¾öuÙM”Mz€fàáäÃìzPY«>ž;Z¦ßE³Þ`Ñ”®Ý½„’—VŽÐ“ÞPLp’ãÆƒ,ðsP Ì­¿kè ‰€k® ‚„åŒù¥¹yr‰gIÅ Bæ~{}1¬ÕâUÓ˜¹W– ß»™{Ñ|Øi6¶òDŒ4 =GÏ zóÕ̽;j„ÜòX¾SST4 &ðXÀD9ÏÓ~®ƒÄm4Kb¨/†T1Ë OÕÕêjâŽ@i›§ `Û Ë´2g’Ãc¸_Š»Ã8'x£=à8­I(›Qrƒ±×•%Žlf»@Ó¦]Ð6¾}¨Ü´3[‡;|”›H#ý·‚È"ôK¼wnm>l«Â?K ¿Àµneɺ}ƒ2ݘrÆsÂdö„?ã~¥¢Ú[:W¨H°0!˜œÜýqX4V€â-¯mÆ ”,;g­jßÖÏ *¹å”„* MPƒ«ºÅ¨—ÍÌÑ]V¨”§™(‚aY >Ä†Ýæ^ H;`j£˜WœúBêY:› SŽPå{Ïl ¡e æ£Â•'nOn9•“Âö­˜Ê0â„Æ­ö´äìbe·Éà0éZ ›Åêòh.‡´g$5©ƒ——²ÄõÂFn{’à~UWÁo‡Õ^ŽmwS¯ßU6ÛÜ|Ã>»²‚ž·|Ì„.‚!]c©Ò,3Ñ$®I‘HЪ“Wfù³jÉÊÚ£3¹îQn ާC:Ž+ÜKNXkèªgh…-Ñmp vnuñÊÜ$ºM%fš©àq0G\L! –õ˜•AÖx¦­"' `¢ÙysJ:‰0ªCšwÒ¾^š4•X>hv7“i÷0g@îÍ5º¸”Ñ @-pèAëÖ-µÃ4ÐÕýC¾õVó>ä¿™ïÞ9þèňZés(¬Î(v"t]Mä"h™ÝžÀè·…icÙÂÈŒù€ù—=Z}ZYgþ,ëÊW‚ eƒI3–r5÷DNÈ ·„…F±UA÷@¿÷EQHØ7l™Áæ)à3¡(âÒç°júrÝ7ìSɧŒ‰+á˜yY!‘eÁ*ì¨ ¥tï®r¹z±ïÄzš*7 âeâ¦ë°œ(ˆu@DÇsa´Öî]—cX¯ºZñ±ê÷ø¤Ûd kóÛÉêw—%šG÷‘—+µÝêk€éÈÖºÉÃR ¹LyIbþB,ÉC\ a,{kè3>ÑDX¦«@31÷“•0k²\W6MÝÄŠíÚÌR‚`7Ÿhô{g„ø½íVn”é=³Ês¾ÌÏÍdÎ :X À`zh¦Ò<ÚíÑ ™b¶šK¸jøpÓŸ ‰Ù=Ë©ŽÂ¡8Ÿ°Z²mf=¡³³xÅó= ÜXݤ·ð ×1‚ŠŠÙUsØ–ÓsyÖ€™Ñ x'¹ÛŒS9,øHÍjÉ<0º®ûáÌ3†c3uDµ¥j0>nO%Õa€ù:qµŒSU6AÚJLé°§•˜qšÔuàæ`DV=“¥”ôR½$f¨`›%f(+¡5¹Â‰'n‹uV gÜ>¾€Š¸"Ý<ÓuNá[×k™œ„2Z¦¾q˜Ð$,.µ,„Mž~DÕ²·ÓŸS%q‚×0·—ue‰CÓXÛœÿ¥+<­š„‹už|nÀMr¿ae‹¸x×cw'Ç3Œ‡™Ü\žbJ ðb ’mnw¿è2§4;†L§°Ö7¶"‰È?¬EâÕc7;(.»µ­g̈_n!®yUlÉÌy`ß ²²À™A$L]W»Üñæ‚XÕ ÚÏ»É'“»‰˜:“Â;CÉëVY2ª¥ƒ{v÷]‰¢¶²p,³ü`"I±2ýî¼áÐMP&Å×ʛՀ%£mž(íæ2G+ˆA_K¹¸TÁ0`ÀhbR2Ó-Ž…¸$06ðÎ<÷Í<‚b ÓqYýp»w¼ÞËv˜ÓÎòÜSVÌT¤=˼flN 9À$„¸SûÛ³ðËÐwÆP­úÈeVOU@­›ÇBìÍ{D”PAXY]y0éYDXL¸™²þ1Áp³°¥Áˆ˜Ö Ç=qsÖqY‡ZÖc]m2!éfí±Hð‚¸§ÅZÌ£B¶-1TQÉÜœýP&œiaÎ]·(2öˆçX3Ë|D ßFéû²{¸*?ó|;«ÊÆÈ Ⱥe‡çh¦˜ˆ€¶8ºêJúÔm\Z3é«à ¹ŽŠL*¥›6mL&ûL´Œ¯,ôÆ«/ððÝâÕmëmq‚£Ázê¡yˆ¦„h¥ãVˆ9ê-}íBy<L*í¹ž0íkÇݰœ ÓUsXE‡'HÌÓ[¼ì®æ ×WÙÜ5cEX\‰c< “îêïn;Ê ¸£ê~¶ÖÏ>Øc3s——¶M5%æÆúÌÒáÊƸlò\¢›• éƒßábo8ŽE™Ø•j #»–m.PBšók¢è*œ-8:cv׺ٞ$xŸÜ¨Œ‹ë+ÆV‡/›ÍvV%Ÿs\€ü]°¯ÃA7±Y3ŒÔ}íÃôH\ày¬êÄ3yYõO½qo%ue“¬ ÕíÝ<DRÉÏ”¯ß¬D©>¸ÏÔlç*/aµ™Ò&û½m§ÂRméÏŽa­o0%MqD¹2ÁÏ‚âÛ)zE ç2Ÿ fv‹[‹rÏèó¬}‡š>€õüò4to6ŸPéö±b\QS|b²¶j·%§ì05Â<Ö±v17¯¥@‘‘Ço𑲘}Dt²´l¢¸{N@ bÓ³œÄ«»-Y¯Sˆê¡Cy(£FT/Îç±¹o`ÁIñ±Ûže¯™>à®=¸Œð£>q!JÉnKßWÌÊ”X…ªhkš…ŠûÜoÔ·,Í ³õ2ƒ¨¬+3d}–9ô–ŸYJX\ň‡|n‚ Ó³™½tÓL Íž™of纯xI1—^¶pðt<žÛY ,Þ«&K ä Åý·ûð¼Yµ!ådùG(ÅÇ =ÄZœ‚Õ³ -÷F™>îÆ.]¥ ´(ÙÞÂk°Ð¿ÉøÿÛþ™­ ~ùÓó/42à?ׯ`þÁ¿Ê&<Ù- œÙ÷ ü忾÷$hñ_^ûõOšü(ío»Íþëºü ë=©uÿS­ xÿÿ¿}'ÿw/ø?½[ÁŸHøÿÓ¢ýéáÉoþ²h~xò¿þ·Ñð/ÚÿßB¥MêŸuÏ:To8¤ÉÐWøô¢&ùfî{±@¨‚-ïs³ÍÝf;Å1•^{›zV£Áàw€¿éØ{¿Ä¢,nòÇlq ¼j‡¬¯|¡û˜üaºUx<ÒvÁ¡@ð¼¾)Af_±®?°´ƒÐLÀ:¬ æÀ®T~¦Ý{¹L)K—ÇS&…TÁ†u JnKáTš°fFí«÷ƒ#á)ÃÕ•÷œ9)·Ö·2[K®[˜Y#ªÅö€£”_SÂgï LXHµZß“ìâ&; ¾×VMX>ü¿Ü~®Ëæn°{&ìaîa¤fjð kü®Rn»r¬Ö«EOqÇÊ5O¬—VÎ’ÉšÇ1ø¦µÚÍ![}³µÇÄZ©[»›«¢Å9å%«×ïšúrJ"„VÍ(ÌG.ÍóyË…=æ²O™:Ï»r$÷æAv»–î)Ûn¬Ûmn[{-=©UxÛèÌBî|Á}Ç×j<÷ÞFº—ÝâHxQ Gf±¸¶]ø £NɉqÌV’w*Êý™ŽhnÌv^ÜL;ÃA¡ØÉî–­0ç›”ÛV JiÀÓ}hâæ“Òeû©äžšÅØÃ“¨)bµõͲ‘ø(M驯¡h“Gõ¹y°)›¿C,UàèKR´è¨\°›Šøn«2—M!L«Ñ‹…ØÁâ å½Í žt “­:ÙÈñkq·¹Ar{:1Á–Á@ß2´–—ï>·/Tš‚ï+£nõk]ÎUíðÓ£SMøí„Éóš qµ—Ã4æzÍl¾ë<]BÇÜ)P«c[Âv`ÖP뉷m|<ÓQ³/)Û»*mªóv·ç¢µäm»™ ,£Ý‹¹¸–عI[ì¶Q‡J;›uç¹ö³oÃ4¢ÙðVKŒê«4s•6hª»fÁ3tsËjM6¨€©5®xO©‚àÞh'¢«¹l}çÆ”9ª'…•ežo»d§—™]÷ª-Á˜ oC©þ³_® |'Ç«â ÕœÌz„Å6Ÿ–¶7åP ¤.5—¢"ÆS¬‡}»½ú`ŽìJÜæ“÷}÷—½»·b-miÇ¥v‘ÛInåbúHÞú¬øÄ£^çTEÈ™!ãyKçSc9L—¹Üòy¯ë»„×étsMq åöëèRMw ̳ŠÕs·åÞƒ"ÄæÆªGíÙiç[i¤=û®lùâ¸*ÒµPáŸ1î¹È`w É‚*/o¯®º_3•­[•U8Ú–pVœÓS£íI»ý Ï{¤eÏÊtž'KBÛ)Ö¨¤L;êiºUΖ¿Ü§ºDÌ¿:«&³®æ˜îyËTp›k öû=òÊ̪f¶ÈÆ2»Ýç½0ÈtÀŠëm“º6Ë%Üa ú„ÑM7(úº¬¼«ûæî°>wžX_¹*‘¬D+“/E’¥ðôÆ=c³G¹Bj;oê™—´ÛØÂ Ñf»¢GŸâìñm1ò’ðÚÛ`}Ûš0C·ùc<àõm »î±6Ó×­õî³qMä˜Úx­×ÂÐó0¬¤É[áy™˜|&Âî­¸Eo*N%ƒ¦‡ì{Úú×Õ¶Ôµ/„Ïî•ßÛÍSIöáõ¸‡cauó¤/Ù~s.¡´M›È ¦ðûÒÌS¿j÷þ.n Ý«UnÇ~ótŒùê!«Ê–} å‚îÕÝl–Ór¸÷tb¯åжp‹‡(ŒwÙT¸¿>,†Éj ™xt;Ë!¸>—aèßgÝ©u&%Ø0XÁ W¹f™{UÊtÛ6u¶¯¤†×÷ÂÃÆd5Þ2ÜÄ”aF¾ÁkŠ?™¸býVSö5©›MÁ ø‚ó®Û2Š)–­Xy;fEÑÇm‚Ïfg€Ž2uzp°@á)+úxV”-(=«¸ÅÜ?ÕÞ÷¤>„­E-±·nãYl‹Ñ=Ûg¾¯Í^¹ÜtU-pG;q¶7Z°R¶TQ”µ±^7Þ³Œi¸CVZ›…™ÃIª"‰“6^ûc:•zþÀˆÅ®dtžr’ž½ì C°d©xG<²ÜùT$ e>Êz“ò¡tpbà'®‹gÚNü=Þâj]°¥´-Û»ð“jãp›[g–„šOåôÝW‚ƒM—dBÕe ˧î}²`qã‹í%p‡1sÜyNýÔjŠyÿ&á(Ôcwì8ÛCy©‘A­sïP,­žÀO‚XÍüvgó}-Ó¢²‚JÊÃN=¥›aWkV› ðaEyL¨lŽòpæIE³IGÔV>„9©n+‡äaÂfÝœmŒwk6í†êQ"÷öC§>Ųº©Êf1l Ò2ýÄбĭ+XûöU–©K¶wZ•ßÄvWíB;ŸGs8©ÊünÇBÚ݈Žïb`S<""¶û8Ì^,!6·j(7L.õ°t›¹C„Ž*X Vbmæç^ªpâÈ1z”8ps#¶%¹r$Þ`û*™ZZ›bºúÄߣ: !ßd “ñçaÚÀËçnUÂe±õ’ŠbôTK¢­Rô >Öbe«»ªXbV›z…CÞ-ª´ùÒe=ç‰×i„¶W`¸o;XwåÆ×[)W|“u î;˜¸n g¶KyD©[}ŸÅ“%k6ü35ƒásÞú2ao2‰©\/S"ÍJ¨\ax N,Ö²r¯!Í”N æn#¥pÙø÷ÚT¡¸òeþòLˆW“·?[ÄsÙªúFÕ~_Íb;¨K1¿¦7wÈ+XúÄÂTÖ‡•@ÐÅS\gçG<æbb†y¦¢Cî=¶hvWÔb®lCéê5Þ' „/—¾ìb´ÄwQbLDס¼özªÙ9Ìÿ¶9H—I¥ÙäbêCÜ—•ËÜWñDS B°£ZìÌVpæ&“̺\<~ÞÌ>TÆ.æpAô”h8‡ë²ŠGöÔUýò0U©'%}˜,Üi¶&E™Ew¸ÂmEqU#†ü,5åtT̶:Ê3Þ1SrøBõoÁú;—„p  øƒÉ`òQ®ËÃvB¢Mœl°y¤¾[7ràºAAl0ÅÓ/V#·‹ljl;GÄ¢ÄOÅö2‡µ–› úÃÚX¥DbËëRí¥a›ŽÃ4‚;·¯™ªÐd+çlE€·ØuÊîIÉ);Xþ0±E;ë®í³Z(ÔY®¶ÇÑ…q½'îÄÚW“visa! nAª·;ÃÔŸxÛ­Ï,HËÙdV…‚.¸v;~mc¿+c>ÕVb°½%pJfd®Ü*à`ê ˜D šyº‰¹Â['«‚°ÁMÉo ¨»ZÊ«â"f”º¹ÜØù6ƒ²5B=÷laàu¬Õ*2³úðݳÀˆaäý†)ÄF νöÙk–\ ¸ÓÕú^½ººÁÊk¹ #¤Ã9¯R@–°dÑ‘ÊeÝ*Ða#4Ù˜y±ÍThˆDÄ&,b++ì,š%{Îj û“³ìXͪÓʈÖùAŒ- ²Œ>™îz9\¤ž‚’YsÛr[Ôdf@í`×,ø7ýßÊEuc­¼×Np…Ñ)¡u±”ÕOê–â]vÂ\Wa¢2"ãÖXñ!VÜ;lv/!H.7Ë+Ûl1¨ŒWMÍåÛ¡½˜~$1ЪŸUå˜v[CØ1ÊÔ+ELyeáy˜¹+ªáÔ/è×ì¨sEµJlÙ >Å~Ø ëà=_ºf2 ÌuWÀlSLu͇™NÞ€ŠH|»øŒ–›IëqxV~*s‡ëàܺ‹›m»"¾T5Y¨Wô„.b9rWµ÷¥Y£Ï*½OL xƒW;‹™ï“Ç%ˆšHjrÔ‘­¤uµã^/iªi¶øÐsvG9,æËmá:î3œÁYQHÃâv›˜¾•¶Õ|œK©a¥Mn–%Åc¶»ðF„m쳆 ßË€ö¸Ú©¦ÍVQ5L"³ZçÞMåNˆ¸—<2íº™±Áý¬ò¬nWhn @]u=ºÍmV“¦U‚¨ö‰¥Üí®Š¥õ«,kŠQé–pÌ\øûµ¦-Úo ˆ)46¬YÀ§ænî#SÝÒCÛÛó‡· å*1lÜç G°FX,K3›¦, †3“‹/ÌÍjÄBŠÕ$gÌÇ>m—}pLkÊûOÄÍ©'«àËoµAãvÌæ_.é¤L‡»8Á°s…©NlN#Þ¬q#ŒÛ©*¼4,t%h¡€ù2Un,õÛÎ3¦» GÌĘV,…3Ÿ Œ¥nÙbºÕd³s*F…÷žâp \, X›~Á¸VéÀ,ÔõºpÕII>˜k: Øàuc6‰ÂóTÝðOÜÚ@ø5uv’-Þw@LbÁ‹C 7OÁªYÀrºÌ,§»P·Âæ 8uª–ò"D,ù&ÖÙäÔr$ù4VµbemÙäxHætŠP‘P…v¤0Üp¼öbÇO…šÒå1+.2EŠ ,ÅûÔvwa.¢tÁÀ¨Ö!×n+®«º—M˰ùÀnÁ+Wª&dYÏ[²œ5€d&"«£Ý‚²Œ \&±S¶Á=7ËŒ.IsG6!Ü®#ƶ‡]9‚YÚÔ@ˆ 彞@p;ÖæTÙ·Õ†u*:¶*1Ub·ÔÇ¢­ö¼Ìà°ÙcQ¦ZN-1ôñÁ¹ö» ö27Ô’cµ-•qóV;Ó´MÝBhÝe¢?TÎÜå¶ŠZF Uz.³ÇÆm6ºè¶J„øCÏa1)€ 6µo#ƒà=0VX7kƼkæ2ãöYé5*¡”hF(EQbn'!†97;$©òp*vUÜuPãôyÓ×ê®°8¤gTk¾Æåp&»SB€v÷•¢’ŠÀž=³ö3w&ò:a,È0‚—›.MqV™Ió*ùÝj †]1½³³uû‘š gl§–‡Û€m¢ûœ¼ OÙÝ•Pæ²m®P%0x3«Ä²DóÇÕÅïåòT<¸ó¥¦jDÕC ö˜Kéƒa‡C=‹¸ªt¶Í Rkò p_½ÝÍ#—õ!§ÒtöUÉ^3?IÐ ØÆÐø×å<ævwñÑÛéö?ôKù µ¥¨øTlžhD”Œöwj oÁ®Fë±§ðsL}hµs0EU~-žjV"wJð0‚÷n}&–ñØt’—î-/„„lêjn«íMÔåKj¶æÈ–µ¶ñêî˜*ö ï¬tÝtk¶4E3öü¨7ºq’§T}°4?³µ™ìW‹ °nÚ"òÛêÕu1VK¬Ê,ïÚrræÒ€•¬.̲Qb we[V¹©ÊŠŒá¯¥ì§–ÜEáòbW¯¾^MÍ ÷3VuêðàYétkµ#ŸD;Â;Ìiª€w8ÈZ«6lRj‰Èª<ÉY·M±X¥õpæRV¦-RA’¸€’Êbÿ€¢ÚèaÆ­ ìGé¦÷uϘyí¶‘jm)¸‰P‹w(;Ìä¶à÷:v™YA—-šÔØ2Å+«¼£æñìë2*œÇ‚²X‡½%KÑf‹åX’eוÅЬêW¢ÀV~ëÜfœG3ª« O~v¥Ï7Õ-À­–ùg2¯fžûy¹»¦o© TݱÑEŽ{ i/˜žÊIÐOPÛðUÆ7ª"ßÔ!,Ã)·ÀŠ­ª´CíZ »•­öS=ê$™‚oXÓR6YUq'sª©§&­ô àXy–æ=6/®‚ûˆ}›º \ÀövE…œ ŠÀöCUtW‰¹Â4‰«C1JÛûÊù»Iä~(p=ŸËŠ“íÍ53åv,;Ù?‚ëðMøW›¬ ÂC¨õÂüðNÞî‘í ÎÆ2¥Pm½ÕÔdð‰ YO›€]öjÛíqfgÓjËËc¶Þ›á`TÇ¡äðu»­ F²[w øÄ¦^øjc2œæD<h0J³e€}ˆ"—RõÛÖò¼caJV™ŸéòÐÖÖaæM@+’R‚î»[ »žm6î´œU}!›îxk ŸPÁŒVÉ3 X½¡·¤PD¶cfuçÅ“¨™Ì¾¿®PfcÒ)¹L„RâŒðuß `öÉf‹ö&¼ÔÁ¼F£lðV‹‚ëTƒºÜιÌÝ'1)ÖÈí ãâ¹x¸YTüJFýûVHAÝ6ÜþYàã}_»¦±B=7í Æ}lR°ò6„¥Ýi–h'o·IíÔ(Q™â*nPÏNwuЏ›5X¸“"n[¼a;‡û‹Õ~à±§«ý¤¢JͰQÅ& ªãr>ìêÁbZýjvú§NÿŸ”žvU ¸²Ü×<ûV þOÒ¬,x÷dÆò<¬»ËY•ËE…o•úÁ¤Ëq;6L¼›J!Ü&Õº*D* 5Æ á„©Ú½\ ¶ÕÖ8ëÜ—Ç?E{ù­ÝS•lü‰™oê&ì8iõUK•Lìip‘5ÖÔ“ãˆl¬_6móüùž×:%–0üÅt†v$•Nm¹Q!9Cw*.eòÐvÌfÛíœGÖøªÝNv=HŠ€ÇeU{z÷|5YRÞì¬Íbäþ€ø?÷-xw@Â.<¤r˜6¿vSËz—±Ø¼:ØœiÈÜR°—^e°ÖÙY„õ»­°µÞv±FNzÉÌ0ÑÅ–}̉˜øžùâ‹°º›ûm Qå ü¥”ÂjœNŒ;ˆæøõ™x¸h…ªÿ\á»›•ö& ƒ&)ñž{ÿ<ý07 öº€¥Uƶ/¸Så;³Š7êkÆ 3;ö\5‡”õ ,ÚâŒ<³’vØÁº(öwÃØî‚߀ây‚åTçØ 2À¬óVc}KöŸÁV ­ªS1BËê±§ñöÕêPdfLºæÎxH¶û °@q8 2t›„PÜ"ÏR2w`Wž„•Íw°/C™ŠPÌU)æ_¬û˜ ±¶ª8œ×bõжµ/›Ej vWO“`úæŒeáRåyŠȧÍ2ATL¢Mxt£šŠYè_=¡U|¤BïD– »ÛK2ȶ“ Š*EøšÕ=[¢ ,ª|».õÆWƒ¶™4<`µÂIŸy]É®ÇùÙ`yrûF]eÎÝô»ÍÅ^”ÈÚd{žñÚg:wq¤ÜFYgn¿mB‡³ -ÜÑ”^¢¹[·Û‚¯Ä†tdœê°y®‹ÛRC´ÙÖ&\¦é‚N;èš8u>ªD6_˜ñÌ6î¶šVÕ a·ü©m\“<žÇ±?\T/ôUï®®ã‚y¨‹ ‡‚ÒXÔêe1·+$k¸|Ýä(P|o&v:°²¨s²,Úv‚î…Ï  yôÛ®|ø뵂ÍÛWÏëÎ*½]®Fonðª+nß¹Ò³å†&)sinÚ¦EsÆ, H ûùØc¹p[JyA¤øòa&å:f™f1á»;Ñu17/6ïnjÎ<…)˜¢â¼ ÍC Û«âzvN/uñ³çÎW'6e:²g@p,*夦¶ÊFaÊÌЯ™æYµ®TΤ”©¢!Ñî-,÷lgœx(èw”šì mâ§5I»’—ªs¹ÍXÊu^ Õî|,ö‹3GvWšÈ̶Ã&.çlq ¦J(Œö¦žTPœ§nï‡%t7ð»­19ùÂ&s ·ËM¥Ãyªˆ›C«Žø€±ä¾_ ¢É‚ÎØ06“T"ƒ…q™mƒ²M¶„´ŽÍ’rÞ„Þ®xçb‰V‚Ú| ©'7Syê T§êö>íÃù¬õ°a”§dënÃ{ðö}ª4ÃvŽa¿éx‚Öâ­h·fÛ)Ï1Í–2 cö„X9=®¨æÂ}Àðึ„¶˜!¤Ût|)î³Ó‰ »fïmfwmNì)àLbÙÔÝÎîæÕÙ—àTÛh;c˜7<õš* çU“ÙígzÃÖm£¥2G¶1Ån*;ˆÖãÍzó#(Cœ! öøY³R¶*Qű±È¤¹•f–onj®–Ú$¨˜p»÷“T°Q~—_ŸN Ššh4sëbz«ËÎ3ȶֺÜuž»àùxì²Ùêʼ5…ÜvL‡:ØÛyÕm…@“)[ë¶.ùnP™\˜7KÅÍiÝÂøÒ˜ƒ=­ýŒÂÈi«Ysp¡}UbœKS­’ÇçØ¬µ³ÌPvîÉSXí¶r*¾Ï]K—aoÇb=šŒÌ,Ùì±{ŠöÔ̶ˆ{±kÈqZCzÖ˾ÕwíêÁÂê3w{l‹-³Žu…¡· ´Ù5¹ë±W›yV;]º½{,q*’T`ãrëÓz U/ŽýØ,¡îÕlÄCAóÛ¼¬µÙmüÛex=Ùóˆé´-Ífƒì‰ëÚÎþì—Í2îY@y wš¾Ú<æ´ž›swå ‰'ݘ›µ~‰Õï¯iÙÅÂî#$¥?F^¼q¿×Ý}βSC‹­M²ÇÙ\\ùX9œu¹ ™¶MµùïÁnŸÉ–7üö½±øŽÇÖ`ýh*œ4SÆmÙ ÿ¿ï¥zž“ã°ƒÇ*,„Á½^cµ±äf/šáž_kó¸˜Mé +‚Eài‚uøÛfq¹;ëTS‘హ̰&iÇ”yбΊñÝ#š ¼tÓ¥Vw“°•.¸`å¹o?…Ú[ ýܪz7Ÿ^MlëJ¯gk‹}ão%°ìÓîåø£Y»+¢Ã#¬¦“2 G>F¾Ú®~qLÝ: ON•cBŽæ1ÈzXBc31ÓÏ„2Ö¬þYÌøÖÝwÓCó¶îÔ—Æó·YÍq¸c öÙŠãj³9ÌÔ…›5Óö¤™©#°ùØ­ÙÛÒ,hÅ#Ú}íjêF\£›>]6ª»Oµ¢îÕFsw·‹ïð3’¸1·Ý„µ‡žB[‡9ŠA“Øö’¶f¶µDŽ˜WG4“ùf6Í·àVŽ}]óõv![“­¿‰c—…¨öP·*ì¼<7ßlîãþduƒ’YmjÁœ‹Ç6ø‚d%pXW*-k‰‡­€‚)Âg1õÐÚÁÞ<Ìì¬ç   aeÍ‹yf xV5— ,´º»™“ !Q=?Û’Z ɺ¬ŠÜmú‹ÄÝ/‡Š–+§bk(Ö]‰ qÏ»íõ*qÃ.<ž±YévÙK³_Õ>ׇg0Klªé˜Ç.[Úî®ù;]DI»@m<è˰O®u¿Mt°ðN…µ²t[?%,xߦ• „Ü“¢vÜÉå9ŠË‹È{©  &D¡3Ͼp\Ñï­’)ÉѶ—ÅtÝÓÒKˆt}˜ˆg–[mK¢ä~Í®0iU™rçÝ_®¶¹ÐXF…ïÉ<[µåm#Ð7¥ˆálê’(½¶+[·‚[ÚÉß]Àz,’o™3ßÍí³ 8šÄºtE—š­áU.ÁÂ0ðªqL™R³w»öÁ†,k1Þþc,^5-À¥ ŒÂã©ht«%Íf¦ãAk„E𬠜A8w ÌÇ~­8öÝ$\^]LÙœEZUáµY² #ÁYŠy‡æ ÄËs²ð/0ÒØUl^WKÄV|4™vªnY2‡Þìš ˜]mý†ÉïU•ÕšIlÝÖ•—-YªÉ„¼{eW• ¶{2øçPšïÁE)‚ýA*ñd6­§MÒsT`ðŒ×ÒðlP­Ì/ÍJ³U>žª¾NÙ7Ð`J×ìׂÃÏjŸŠî–ÛÜðK9C±~¦¬øÄšbËvܹ,¯ÇQãqÌ–UìE¨ŒÄPB±-¸ ˜-îhÊÔµ4`Lif…ÄV•‹™åÃÌ™ÞUÿ=w¸XY±–j숆a­¢]…Uix{ÒKÿ¢¨=+«»R>ÅÞ†ëÑÜÉb­ÙÛÇ6rÖ»Ü!ÎF  žº£`‰)à˜R8Æ’€Kƒ;8”G ðnly³ÄÂJp°°¢9Þå¬R¶o·ÙdJ©Ž²Áa*‡n3vS§%™@QòÖ>ÜÕêr{*^ã­~Aìv¹±É¢´£]–krpÿU]1‚yÁ9˜“éÙ4æ)s-8*@æ¨ |êf`€PìDt«M | ¬ ¿•À)‡‰sÝ27·ùf>hòwH§‚Kø……ÉüƒLªªÏ@„£q7å”l@WÁKbUNn6ž^rSW5YaÆïñÞqØ8jN³{­òY,î"÷¬þ^í5u —±Û å!Üç|W“P.½A¶c¨(|B‹ñ2µ{V²‰·öØfGº=ã•­KV>­®Jg]‡‚ºúØjúIwkÛ쪭 ‹E·î]iOçºÂÞóÉÍØO0ç¶ñ²‚rÎÿö'5E­çT{Ö»q»©Ø©òb°>Î"öêÆžE<Ð\¬s4›ª¯Öîž €ý.úÎX‰‘Ö º çæÐikóªz~[€é•UØauLúp Þàj¥ZT¢ÝÕ)6ƒšl{¾ŒcŸö%f®±#ÕRø\ÛFXTFduƒW±ºME‚á4[Ÿ(fmŒ`³2•.¯à.ù0f±&+*NŒQDˆ .­+u*hô¾m]ÆbeÊ{rSü²G£BÕ·>¸Kò»â¿v©MW`üêv§Þ»Éòüb÷E’Šƒ±ÜÀ¸›½nE® rÃ)«ÂÌ=súˆ>ÚÍÌèÞÃm À>›5ÀýŠD~à‰ e·ÒÓ à¯E÷Ô„³™\eÊw]N‹ŽUMucY¯¢± ŠŠúV;ËC]pü¶5ÌÆø&^mekø¹t¥üÛf·Ý+Z;ÂSKj%¤Ÿv´ «ò‰¬“zIdâûªÄÌú7{[øA­kä6í½;ó÷•[­¢Ìp׳qé®#ezXLq%šwk,¨ì»û„8\F¤ºÒT7ÜÍ(‡Vª'a{䬾7­’E×p ?Ó” ¸ÜÊ-‚}ñÊ,NŒ”?)Jôò¨êÉåc]"þYÁ#«UËu2ÌÇDe§²XJT ØÂ6w$@­%¸ù9õWº’­ØìãVîw¸aX,BK@ê™ëªÐ7ü÷1vâ}è.m8º® uõ®MŽe¸'¦ZoeB-ÍlzìÃ.Ê«µ'vß´É3zfK{næû•±`UÀRÀ+áðäûæ.iÜù/3q´qñÀ›ªÿL†q6¬‹ÔKõZk…0¢¬&zâIÆ„³ÚR¨•°[uÎ’GkoÔÂ5oà^˜Ö·*ŽÝ8ʤ@ëlا•Åw«©…oU×$ÙBA™ì¦ˆñ ¿\ÖEUgSAmïaˆÊD(Lge,:.(¾·HàpNw©íÆS2;*s¬‡Y«;\Ve¨‡OËAà€¯†4ÙYm3¶ÔåR; €àNÉ·ýÚO¢«Ê*öš(ªf•®ÙwAŽlŠßªbä/i&¬ÌŠr¾dÓ§óãÄÇ‘´~oûiM½ìQ³%»,=0O—}­Á‡Ùóõ¢^ØòÆ@ð¥6©f-©3MÀÞ P^;—œB]ÕǤª¯«D¯Ò¹3ÃyØ#9+à×Bu)­•Y—Û…›õQÔjxú€u\™PÀÃØ9iW‹Žpkå mÏó°$Õ¢7ŸW–šë.Å X¸b“Šw“- ô<Н»˜TA5àÓfq¨¢DE!n'˜ƒ¢êwŒóÒºZRªœ¼¥é«]¢Xâ6ì"ª 3Ê­€ÍÃ\aéÊ'VÖM¾F¿ñ›»hÀ-Ëd±›Å8á`ÓcIôaCn{ J@iB%¥ ®zÊ8\ÜVv«ñ2Ïþøfû/Á qiQOÍ¢½í‚aïÖ8ý+@.óø¢9èu™éû@vî/ú 9ïöQ8ž¦^+NóPžÝ¾ÔÖnfË—ÕC;=s1TÜ–ga’à#†‘5·íÞ|¸%n„¹-‹•f¸Ý¶<,ß;Ûùãñ‹²þ­á7;þdÏ7»¬(T·[¶‡©/™%¬Ç&Dߦ­ç˜º³EÈ—U]ç6l—qÙô}s×Û🷃<ñ´O9Ä jÑnV>²Y@wa—«)õPþmÊYªÐaºgÛ‹¾(Ê_­Ç9=˜=½,ÿRÙ¶Å[‹tÏø ¡‡5‡À¦®&%dýR£Í4°–±ÖÓ–C°jUD×%<êD0ºj(p7Åõ×ÍýJHàØ}‹ª6l :ìÆ±{´•`ïæ±oVi)ÏÆ û™­'0_ð «e¯y@¦Ücc²‚6¦ä0na,ö\Ø d€ÀœüÈ)Xë±z¢5yuSfS%†Ü7Á‰×îqaÑAèÀV+ lÊȵÕx~W¾ÂIž ”ÕFu«ƒM\H°xwW™¼hÂQ=wס¡9Íc9XàýƯáÉ,#ã ¸ÛN´\J6WEÁ•Û ~!å`Ó?X#ƾ?ƒ¦ ï¬p™lpÖ¸}ØLcbu{î«”àYn4ôzήlVAw”ÁÃMu´]>El´oflb†Ãd'B­ ª°SÛ–€ƒ‹ Ç.Í©OEG­[íf‘áÒ­lglaB» 'aD¸¦3±ò vov+€þØ4©Ù}=Ì-õW  Á¢|îÙn» «™»—>m†A~'•¹ÔïÅîìÇÌS+D]¡ËöÖù’À‹A|OžÊæPô>ž‡; j Yªíä-C“ßZÔOD0©é¶CuUO9¹GTM`±§ó6Ü»çNáöDxê‹­ÈY=¼§°¹b`ÙãÅËw&?&Á»ñÀÃÛËÝË€‡27Í:ãXVå,¤\VW«¤Ô”RÝÕãÁÜ-½¤mÛê³3˂ؔ¡W_Ké Na–È)LâQ=Ą̀Ê?0{XÜLH9ʰAî=-ùÜÕ6N¸¯ò‹ˆi(_ØÜ¤Çy²mðÄWe­<šL½ÚëEq3‹K™¼·Çh eOR fË#ÚBàžUÅJ–‚­ >Òí edìðq³ÚòU|4l©É`“v²¸íø§žšÚÑ;žz]ÎK¹¬<4¸aEüÉUv;:Ø(ªìÑR5"Ó.ÜUdǪïm_ÖË-lÌÃ'Bà‹CfTW¦Um¸ª4VŽR6ÛûXÐyšü¹¹°Íeq?Q¥DfŽðÛÁ¼Y¢]yKªˆnSj¯Í·`[<ö:¦l,pÿP[Íuo¸Áë•‘’ß°«ÕìÙ Òj?8±]e’Í^ëD¸%âgÜâ‹v]¬ò¦l3øÝ#:\á½¹?rx(Lye:lådÞ!·xZÖjïöÝb9wÙ‰qሦzž9LZœªÛ3ëÔ¯Õ>€ÕbWs„<]ìÿ¥`Xô,UéÜ)&ƒß³ÌÜ5d›ýVLmM°©TqƧ¤ ¸ ÛÍJd·*èqãîN]õÔÇÆ•ðp@Õ’¥{ž«p÷Ö@ཻ§Âîª&¨«ÂQ“ŠU+ÿ!ØÞL¶ŠÖß6"°¨7#‹NvhÅi€/€xqæ_Â(YU·Ik’h1âea¸ B|³MÐU”€ Õö¨€©d1Çž¥‡âèŠ}nJ5X•žÅ7Õ1nã `‡2ÝMìy…呯ë†É¬·€&ºÂ•zâfüb÷œN€ª éÎ r·t>ªJMÄÅNó²ý# ÷jJŸg‚xÚÕliìUŠ_Ú¹òÉX·;¹˜².ç|‰Ã4g„MçNOn»,@x 06T±Cž:–þzÖ©H¾3•ñ–‹Z5›í,2ܾjÏꦪÚIÕýk`Ϭ~SZ`¸rgÓlÌ*ÈÒNkQÕ5ýêV·Õ3GGÏL mn8µÙÊ(¶àÈh?#c·ÍøH1NÕT¼Wó£ª]ã[Þ1‹`ÌccŠ3(M™ b qï—-¨ì}9¥eÝ@·?Ö­¡$oLnÍ¢À£#›è4­î¤cÍ}€%û e­n,•sM³´¼À⇭ެ|0³IÞÚ-‡.³9jÆÖªÉî2ïŠ^C¥¥fžJ+·ÚuË-Ìì¹ÞæQÉ0%K=í#ü:<`B~3ç ‡ý—ٰü•×µHÿÚþ_ì»ç‘ „ÇjA)K³ËJ\gN²â¯× eÑð©ó¬ ÀÛVÙ—‚Òw+Gº)S{_<Ý……]Äœ¼znRT^0ˆ™(aÛÉRÕK8§žñÖ˜ry.#`/çlƒ¾2d¬´»_ÑvX„ÂQ¸ 3ø÷¦ ÑŠ¾êêò½Á36~¨ 4 +æ/®“øèlŽ¥OÚð†fi«¾t `§±Ÿeœ,¯n¸¶å†*aºÄÉ”;]Àu6ÎaÇXãÉCd毄{ªbÞ‡% —°dõ‘у«%›àv,ž¶^: k—»Yïx%‚Ù°#§Étm(-DeÖÍ!Ø))¨J”5·›Ò–X“°F ̧7ÈØñv¸œÓð%fzŸ):Q‰S_ÁR˜¢j¨i7P½O,ˆ{`B`ƒåâ}9µRQæ 4Þž˜ƒÃˆ¯,LüÎPbŸÔ‡ÓBÊS o­nðÛ 7,nV@Øö;©íRª%ñÜ èâhÇ5…mr †õøÖ -@ÙlÚv-ÜÜ2VÑÛ,<y€< eK’ôLM)›ÌØúÍü¼sV”¶/¶3؈!G´EË=ÕÚ^iCþgwd·â@Ò³£F90 ¿yAÝ¢ZyW³q?n7 ’Éâ[ÕZV0á¸<”rŠðO ¶QN«2ì¬Û¾Õ¿(¬i_&xç¶©ºZW{x+œŒq˜¡ÙÁÉ£ªyŸ·™¬2¶PÒX‚msb·à~®á¶c41îŒU¡Ùyê“ð›T)óq‹•/¨Pž:{”VÓÀ`„Q ŠÓ]éy€ÉPy¸ƒeÂí«¥ÿ`?³–[ŒãÞ(M•+Eyà´í†ìÿ_[r`¬íÔu^fhÛÞˆNÒ»¸¹×–KDE´:pPÏŒ­ÍÀÎÏÖ¨p¤çHuŠ=ÉÞ,®¾QÚmÙ.Ö–`Ó8žÍÙˆ¶xôÕ„×äÖ¤bÛ]ÃÊgNO/=MPhÇ ˜Åþ?ÉV ì™ÚM”ªÐ7÷X×SÅt¥Ì›ZµÝ¶%¯³;íÐû¸˜u)•> Qx§‡ ³Ñ;ÌØÉi.ÌŽV,ó(9SïnÏ_w»…¸[[ŒŒvÊØ†°Ùdbµé+†sš¢æ"Àm‘€„Óßà>‡ä‡}`I¢øÜ-„ ؆َ=·%ÏR¾¹ÁMîv{v¬fŸ.ÐV=PT1ìÙÔæQ#MÉ{ó5Lz\ðdžJ¥Â‘°÷b"ÿí·­5Îþ¡w2ox”S±iâ6•-Ñt5‹§ÊѱõõXmtÐMÙ·_¥U f²ñAPæ n&ý*,d>ÒmV“lYNuÖ˜<îÖlx  FfÕzŶòµ*­Ø E±?ì@2S@ˆ+µõ…Im-›NÙ.[´¯Š}+2xŠñKpw+º;h¼1Y˜-Ì´›¢'s·ýÖÉ5wûª*Z×™-ek«g¾u)aŒ‹·õ:«] ¥ÀCË`@¦»{츷ym̆㠂 ‹z¤*CšŽ¶xfs#ÛÐׯån:`h7±2U#È‚PH^ÊæYD=A)Ù^nmQóÑ`C+|SjŸ»™C ÚxÝæ*¥ã]Ý-·G"²nQ“úŠsŽ©«l"IdÙÉö6 Ýܰ½·¬ë,Înj¿UüS6¡¨‚=“å`µêpá­S#ªYU™GçŸõ´Bd%ŒqºL[òHŒß7 "]¦õ¸¹`ã‚ÅÌ{Nš¦ü¶õÚ\rïªðm6˱ˆ¸[Ú¨¼köäèl&e˜4 ýÛ6O-ÚÔÒX·Òol]§·r º‘ÊKjx&TÌFŸžYàÖíÄ4,)¶Æ>4a¡>QK™·Ó#üÃdÆý2¡ØN¾r¾=$M€¬†Í²†ŸæöŽÇ2VS²&ð¶Ë*p’5 ,MèÏpRz¾p了õdû‚•ˆy¹÷ˆûfž™×Ó¬ˆ€×£5å­Õ‡»YQ¹.»ån€8Œeëê%oŠQð-[hTèt®ãè>M7_Ø’d¼av±?qU+QÒôCë÷ ¬Ô“¶?ò¸±âš¸œQ:Û'Ñv7s¼áÖ7;׋ߥfùŠpUœ{œš%D 0Ìn— dmËÂê199™ ¶èj,úO\˜~M†nÙ)+–[ÔÍ¥{s¦ZçhVæx·^dgš»êfR“C,-@xްWȳ™Ùd£1ëOóÔm‘ºyDÄ·,•xZ  4»B.vN°y{F“ý‚â†Qm‹kx¸ –ˆJž¤E¾îQ½'×ÑŒN6:6û8Û~‰«Íz/[ èX™»úÒ Þ¢>ý)ðµë=@ÙtÕKé 3:&–£b¡]Gl™ÁmSÓ_*‘jÁ‡Û‰tU¸ÕtÊ|˜¯-ÎlK \^@[<š6i&—Øä¤Õn•ÎBð‰„*ÉŠ••UýÈݺ¹õ0XnŒ &À4à+ïl}'+澡ϬÏÄ,¬3ÛNØå¾ç3sYì¿ uin›˜†¿1nº‡N4*c‘TÊ]KrÃ}à»=#ßX´Àóê!·u€«›=JK6~³kÍ-…±K_ð`Ë> å<ª f¿ñ:k®ABÀÃo>?˜¹¹ôijÙ`n˜kxªžj£¬ýJöŽm—@«˜ÎláiB‰îßnp#Ïmë¸.÷ã¾Ïì»+Î Å]ç+mÛÕ ½’ÍW;WOtÓe·.r¯°Én·áËíh¿æ‘Ë”M¼²­’½«&mï¦Æñ–Uï±Û­±YÿpT›wÝñµœž<%‰¸ƒÌ*{ßUPc1àDÜÔ48fšÉᦚº@§;,¢ËâQ{tb–ÖYššè&Ùæ`y;ÓôÁMÞÀ™nûÌqí³å|æU{Œ–Ñ<É ] -·´²†÷[¶CÍ÷na9ÆÒ GêçÛèÌråÓ a ´[´]íÖ¶©´Ó̠ʢ ~-`ðÌ|³±ômÇJ55J\ìkŠ÷Þ ø`ÖˆE1–Ç\6bÄìÍ lç¦Æ:pݖˇéf˦ ¬zKIŽè¼“UØ&Ÿ–&[nMÌþgÈ06•ްÓ~¶Dc•4iKoSbfmæåáls{Ü»›6ŒØ¨÷`m:8ûˆ/› nEnWCé0Äj»†•[ñb¼7¸¤g€ÂÕßqÛÀ‰ÄEH . J‰Œéñg  zéJÌ÷ìòø©}6#Õapp^W.6KÛVwùl³2ØvJE&ÎCA¬™#Gu¬{™ân{ÛcË©¸º·Ù§Ä7"{™|ñ;à=Ë .ô(¸f‡ÉÖêSÛšhƒ@sóœÉö[àIϲ®aÆ;±@ñí j¹É¥Ý‹µ¶þ> Ëô´9NöÛ¿îìy/Æj½Ý~‚3”©H¦úÏ^IW²É¡ ¸èf *@ ¸Ý3O‹LgÂ5Oµª%ûÕ!`»+ÛD…6ÅЃÝ7mÆp•`§öÖêRí%À­§Í³V÷= M¹T™cU"úž}«³ªÜ—èLE²nmQqDÝë¢5î8 >©<´²Í§âÈkÒ”V°«_WÏH·Ø Æœ7…Í UQ¬híË'‚ûGjÜëf(_TÂ<`¸aÑÿyŒÝð‹ ÊûXO5âB›‡-Õ}ûäñ{p뙯g1²î¯qO î»-žØäé]±ý‡<ö¾0y:{ÀWvmADÃ#ZOpg^Ë‚‡¨‚̲·´aµÇ½:¢ÆÕRz”ÂòFw„¬ $ ;Ø1Ë£Öýa2þ/â¨ö¤ ÖìlÝvcöœ™ »½oñv‰²$<@n¥ØÁÊ;tñ´AŽÁ·é^m#}̸îÙð²ê´³_ó\ô†h›òsyâišP¿Ú¦å²ã^3 ÝÚXª[[EÉ«}›Ø¹ÚNµÅŠAfì^€Ä«MÁGQ^„y±1 j²l|~·ÇWSðÀÊqìf+e«÷À‡Êˆ͎xf]yže¸°tsXÌ£¦^ºjKŽòí qðTv³±嘵¨vˆË<Íɦ«»÷åµ9ãÕtžSï6‡J‰¡¨ `Û:Zû™Ç¢„ƒú‰QnäUí¨ã;›çž=âhJ hCŽv@p\–‰@ò윾qã›2äu¸«)ô…ÂleØg)È®æÍìi·øÖCdè:ã·[Îu6“Wf‡KÙænu#jÅÌŠmY¢Çš»NƆCSD‚§òFlÞÇÀvõ´LF´›‰å—îÃÍ,SŒ ³%oîö+¹À ö0;­ëwþs«3±š—Åš^´]ý9»šŒãª–šæXRØìúÄ ÂðíÏÒì•„0)šd<Êᡟ…Æv³&ìmÀ ûžÖË4¬ ]. c‡[Ø8Ž~ÙÆ¼º¬"vIÈèf~‚ª™>G0AÐM‰“iŵûÍqϼNpc3%Ö1^íÖà'í ¬Ä˜§nîKy†€?피؜Gµ“EILlÏT»)Þu·ƒƒýVCµÛ}ÌÂü:¥CšmBmYÑìtz²ƒj+xLóxñ³ÜÐì^ø¸!6€ ösá›f›ASé®Ý f{µ)2àÂnA>zdÁ;Ñ®=cwdDŒ°'H7æ´Ë½r]Þ8÷¿<ǵqáÞR(AÃ>u±ûf¼)½»…Gæxµ´¨þ »­Üö6°Z©>ž«d·JÜŸùì’hÃRešŒ\$*qr? ]8Ä­¦ìЏÚðàòŒ­Û—qؼ5*³i£ÄuvÆ6Qš©Ñ3,K±åžUp ð•14œê­>C¶)F<®]ñº³KáÝØ"7ZG€Cè¹ÚKÙCSÏy=#vï>*ÇßK:"´ygsǯ ‹yØ/áƒxZ·Û”,¨&^œê%53ŠeÖóÚÖU·öoýþíÿÜž ù/õdȶ'Cþ×Ú“!ÿwÒ“!Ô“!ÿsz2œå_`O†üz2¬ámO ç¿îž ùŸîÉÿ­'Çž åá þè}k¾çÉëß¿ø·Þÿô˜e¸­B.§ “ |›Hd5Œ× GÕY*ÙÃ[Feá˜ÞÛòÅÍô½£éÂËÚËúÈD !&šyæ"¬’cwMwæþØçÄf%­â°?.WämÅ$LFÀ‚C{žeËõ`»{U! ÅcY!>T¢°¤Í:ÉÔ¬4n¢c©k°¦ÙBxnÝNÁ4ˆ­œø¥Ü;Àý觸ÁĵTì" î$ƒè+’—s7;— …W¤z·ÍÁ¾ &†œ÷dZßfºŠZ¿÷¹˜hZ,¦¤¶œÍãšõrö;´s\óÜòd¹\§LóV5n(×m»Â³GfaʼcSIAq$« T˜ÞëÅ×ͬ×ÃtN7é¡j•Õ1M=Ä“Y¸$ÉXá-#2)·XÜí010õ5ݧ Ñ¡ƒzþŠš˜zÆCÚü f‘G´Ñ¦à· X¡%wLêæ«w[ˆ[7w^³Ì¸÷®âi=ÅvÔ2ææH±Ù1\Òʆ ;`šÖ ‚'F®±ã¾¯ñ¶@ Ædósžpa¡«¸`ܰúŠQ›èæ®–-X§ ,+¨¹Èz„ÔâÌ_ŠÞÁÕ•'†˜Gw‘îÌ÷ª©ì˜«þo…žýÚ-¾…wÒù²Ù"²øHºYÊAVŒ¥º¥´e.šÖ òU”[;wóCá¤nÀšj» /ªÊž‹B`fgÓMlX¼)ÛVnëÑg?›3jçÊ·ë°Yµ ®—I+ØÜŒàl¢êùÝS2ç€U¯–G÷Æ‹»*ÊCÃ{X!~AZÕîÆbÚøH`&Mb¬–=¤µYù»+VK©v²º¨ÎÜát¶ñÀ†÷ccúj[<Æ4ç´Wµ0®Ì5ð˜Ãƒ¶¢\×Öû²OÕéÐ,Ä>ÖU)Î0f7UËìKÏ3ŸÖøãÛUò¼®+º­3.%Ÿx{.=¢?Qã³—\ﺨo €GkñÞ×)ՠоI·&s˜O9ì¸{hljÖfjÒÊ/ÊLÀ»­rrSeÏ7Žq¬@V’yÍMMjõªaCÐPŽ3™“5Õh9t %éRX,L°¢oJ³âŽj/ÖC\fÒ¨4o“¼‚ sigË»"PëîY¸Zrêü·<5X”I³M„ݽWwq˜§õLV¢\ ¸ÍJ,^I cì.´!ÄP;üN‘ eÜbÃíq;ëæt=÷ jÜÚ›…µœÃ6Å‘so<ô÷@øËzd÷É®~ªƒcGì: ß 481‹¿ñd_põLpæY”Z6õ.÷æv,6Á  õ¼ÏŒ;›2#Mñ¾àñý‚ëÂÁå›;Wåº7w±]ÆN­ÈÔp“Ï#ŽÎïæŸ´SUxÈ”ÂÊy»­Áجµ³a}¾âìDÂe†s|q·Æ+)‰\\=\æØÅGXçUã³Aé­‚î’õ£ÊŠL*Ë‘p W§¦r8kQôxó—Œu>µ Ulß[¬æ|ìÊ5ŒTU#ÏŬœ) Š]ŠUÉ JKZÄô`vòdU©_ê.(Þéf¢JyOo…örSªþÚìö=Ū*f–nÞ‹¢¡MÄ® aþ²hÿäÅÄ#Â+›‹Ùæ$Öu·¤bwy½²â¤ «4C6¹ÍÃ(ŸLfb–÷–7·…îW÷¤Ú̦¥|•fë ~Þê\Ö¥ßê ØâçÚ§T.F†éžYe2ÜDÁ£nØÂ^ É×4» --X,Ä/%¶ÌÂh„½LXÞ‹b³³vBŸ²›¯ìNªÅÅŠDŒ.jHe)æÛA‹yÜgÁÆ@uÀK®°yNfÕlx+¢ë–-7 ½®ÄòNlê§úÇ8¢@òQg‡"s°ÞJq’h1·MUYÁé(<ö-«ÎOºR[Š’y畲¹½î/nçÞÎnbûÝT¿ãJnMµxYCUïØo×µ\ÖšúÕv…°¤Ó·Án«ª‘«Üíó¹Å¾Í†µaØP£ÚÓæXÔzTâ«Ú”ØVŽ´¹`XÕÖÊ” ÿ2¥©*Ôœ€(aÕî÷}aÊ]ïj‚ˆiûŒ˜›æ£ÖÝB°bÝa»ns°ÕÝT• ݲ"±¿ʳ¯û,E¶7Pdtœ{>`ß…Óútp1¶— l/`F“UGc •FìÛã5—¾Lœ‚ŽI•5¤¹›[½Ó­,¬B;íÔ®]&¬“&ÌÞx?BóeØjw¥hÓû£rI–bLÓšÖÅ´Ã\³ <ô §4›M³Tä:@aÖßj=Ú³«Eí˜rÚÇFt^“­†‡T—‡ —Íw†' Ènä,ð ü6"Ž¢¶è9ÍŽ‰®…)•Uªr~Œ©|ˆhÄÛ|¡µ[7±E)ÓØ¬˜šSP€Ža¶Ùfæ)©T¨†´c xÕ/ÝTÂQtî[±Óó1d"ÄþÃü· Ä¢mîŒý(g ³õø7ójE´@ÍbÅgd¥Øo[(I´0ćۼà pxTJ‡é1£S3¯óö¤hZ|®Ìñµ,ž¶ùX´Ò ‹Ë÷4¬ÌýÂyã¢Ât¼6Võ{¸3°Ü¦ìÊØ–Óíjõ~œÊ·YZS2ZÔÕ‡UúÛØ„Òz´š¹]’è®x‹ m»æzSð–›ÚWÓ9Ÿy‘•¡?ReÑ<»Á¤¶tÇÇU¦Ñúù›eËX‹»íŽoÅÅ@Ö€®M!*…òqQ–¼»fÅœ KCUaž¤Û#*ªFäªvóÄ”™T:+‘ ¥©¹bŽã² ¦ržŠ*…?3¼XYj(À3ªUà€ 6ex›ÑĤhá¹)”‰?¾v/ðÀÞ¢'Ï€ì~ øóa“l 4ljËR&*]½màD È®ÿ5 TA?ÏØ…igà"@G¾ØÕ‘6–aNS)ànÂr¨z·*5-2M=ü:÷׫g‚xæ¢è0câÜm¨™çᨇœ0‘…™„ÝÉr'pÚ%³Û-HbìC »ûR>Œa'³1`äÖƒ+y×°ÄÐ<ÀœA ’Á?ØCÏiƒÕ÷Ûá)©ÊÓX"ëàž{ åZ˜ä©¢¶Y¼ÁýMw‹6@·×ÚUvÌÑЃ^Èü*Θ{ aVb/žY¹¹!^¹,.ºYÁ›Îš]¨&9…“=Q0U½X7¾P”fo)[D+Ô«øàãÕâÄ#Øsg\Ž÷­dD¶Ý¾Ô,ýÓ”´A\`Uç}žUƒŽ-%½Å1„*^Ø‚Ìb¹vÀs­V©WæWͨqV‹;<=vt3¶Ö=ò?%ÔÓ \²V·zSm!9nš\Ôyæ#7 Ç„½«dqÍ,ÿd'"´‰éJ±²^áOÑ“UX¥P°Xµ1‘¥­‡²·Vø”ˆÆ¥ïNz±äho³OŽi@ûD=`!:°Úp™h’ÔWyV&ÌÿÛfÞ:*u&\Š}õSºQâj­¾›k]âYTاÔ˜ˆ‰™Žõ"˜TûeX¬ c½Y9¢’·™ ø‚Š{d lñ êìMµõÝ<3¨ncnŠ+Œ¹‹g¶×a¾Ñaá¿'”}[™‹}ÚLl€IªMÖYAëN˜k)[xp©\¢0Œ¦’r“þß6sÄþ_î[¥¬ïh3‰)Eu¶¬»63;úŠêŒ°æs™ #†1½I ÀüÞÉIqÔØn;§º„zZÌ)c± í{+0¶Å¬tM°*¯Ôfßz±ÂÐÍ f1²Ö¬zëínƢ̙աûnŽÄ™íëR¨Â” ëL°À\¬çT@ïY'pYo…7ÁkwsãÎ /³@7Sù6E”œj ‡"^ Šu»Z$W>¹If#e&|QNŽºg±Ä$®UFÖ1M…¸·â ‡›A©º´§³JÛ•—ÍBg|wn æ+®mjQ®3)GT´) Î[©Ûè©ü½›ól#àÆ2¸-GÒÚçÅý õ[ ¨¶9H -,¾]ìêúº@žÕê¤Þ–Óö[ ªa4â^«2ªx¤{™¡Ù½ÙzaóäØÜ½˜¥öMCJ¶#« Úh±A´¹ÎêÙlÃÊ:·p{0Сe³YÇbÍsU ßÙl a&þÇVuݭ͘ÄÊöuIžjoðC–3eÑÈ¢ö#ÁJÙK ¿uðÃlÙû°’ 8%}l¬U|+cG¼côu®|ˆaZ¢ëM¸ŽµªëÔk)Á~AªäóuÛµ‰vx–Ö‰u}è­ 5ëJJ¸^îß)üeVÆY‹¹õ-áKò‡ãŽSåìòò^Ï ÜÒgû&Y2 •t×ÎËHã”ð6ƒ0\¯§Ôµˆ ëq›ÀÊøÄ°%«póf%Æ‚;®ªFµKÐÏâ CI+ü+Qe«Ñy‚ 6µ\ŠÁñÄ ’[ÎYÔj™mã dA¬¶º/7+QX) &ãÆ/±¬/@Ù}0Z)fk!¾<ÉN6é>Ãe)E™¦ª@ÊW´4»à„§Mö`+U‚X…,n\ä¶I¸è_›µf÷1§;[+x¬¬þ(_¸Ú#(MYl°4¦Øæi ‰‰V8uõ),JVÑp–ÝÙVPCñO·®·Ù¥Ñ4›Ý¸±ÏÍ!ó;¸±±ÀyËT-ÖCÞ@(Iwaã75Ñìkªå™j1õ¹²¢™­CE6Ý;\›*7 hÐ?åÑN3©wžƒ0jcq©VœjP2HÜ)D)šÂÌ g·ˆÚpÝnj}Ô8„bÞÊž1£’—€{o—©¶vv’˜ÓPˆc6î…¾ÃUf[6ÖŠH[Q|ÕªNûˆU`˜÷“7qYêÒ ívC·›0›ÂåÜÜæ.‘*·a02òì”Xü†îoº âÔífdŠ#Õ€–QYŒ³«l‰³,GQ$µ{]¯ïxAÖl€#³:L;/ûpßÓš‡fKÖÓFŒÙ¦Y‡Ì€µŠÏ‚ŠSñi˜Rœ›ï«pIªÑ)–SÖ+vÛßžx2îXiìÃøKðÎ*ß³î-ˆµú‡‹‘w˜ÕÌKN6[ËYˆ ë·ÉÀÖÂ߇z9öD,Àm–·ØÂ ¬z¹&”Ü1 wŽ¿Ô®ˆX›goPUg\ù³dô0fWéîÅ>’êK€˜«Â Â­oü©=g7>öÕ#Þuÿ Ø`($˜Ò¾¸ÕE €—Í 87ø ñÅÞAÉ:±‹˜& ÂHÏm5¸+¿o%4ÀÙíÖ¶2ãþ™ï†!Æ™ü?Åiˆ›6 g!%j*f©`ö—u6b…p³ ÿ‡;m[ŃU·½Ú Û>Äö³>áaŒ(W!%¡ ®·it{‚´%»b˜Äz%2¯uµ5!C¡Ú½e{öž-×¥¸ñ½vSa7•®N™60‹Z‹çLó‡'Y˜O°^0¥‹©f,ÃÎGª$'ªU¿³âœuH|»rÇ<(ËÔ\ewK9lÛxn6­½Û2ùíI Zvs²Ø$ÍãF!*Þ‡‡f¥JÖ ^¦c)#uFsÎǽîºÕ}#ÅPó=`|å4Û+Ûù׿ ¹ÙøÿÇÞ¿-íÒc×yày^Åt!$6‡@&ÑGÝ!ûÀ>¤¨’UaREs£vûêûy°¨úÿ¢H:ÄÙb±ÄPU­µ¾ï}sÌ9ÆÄœc ic>K´¦Ú¤’áºýÅ b Ne}ʱ9iö4‚‡÷h¹jéêhmçEô¸¹†´Ak• ôóÐŒõÍ$õ½”—WfÕq5àÔÇó’ÍÃnCd>À“Rê33äÓie%ð2a dví!^Õ$ƒN[Žˆ$€NÓ†ˆ§žà Lt+Tù}ሂ¨Í!?þÓFº1ÕÚiê±¶ŸF"“"C'u0ˆ×° Ý ³©×âäÀ+É ê3~¿ hÕKr˜³|¤6–~³Ë»Ÿ&Ã$åªàÃðìá ,8×ʚݨm…zçÂí,Wkï¾rû,Æ­¹•ægc9ªÃÁÕ¨8PÌ“‚u\³îJ à «ppíªÒÿ">ÖƒRPèVÓ¡£÷|$_9SÅr^êð‚ëvˆPUáž;0® 7¹ߟsf:®Ùd®¹ÄOçq€ßpÒKÃøÉöü:¤kM9³`>Ãú§}·&¼ÇrN¹@¨|ªê/Ey§g5˦ì Ql@!@1{J»N¯*÷ír !Z«LCøÄ*¿Õïõ˜ˆh¬õ^ªýuãyl?laYí8X1”Êp>A:•Dz:ñç\Ømyfyéi,Ÿ¦{,ï²^ñû1òtEŸvúój2 ˜ðø [¨<Æ»dgµuŽuG²(_9ïð**NšÝ:*f}D#›ºÁ¨<öºU GÀ ßúx9Æ6òQ u{²äöaïYtÕê*––OGŸµOµÚîÓ«…DzÐ-–|öŠG³ÀÖbïÂWµåoسê;³¹n·ÀkUXÿœ„7øÔ¸ÔÚ,k½kÚöÊdß6Hœì7pVž!¦3W â¿Iï@¡œõ¬!`6_âc±ÝË·ØNÁOï^À¤ìU­»Á¼=\·2öð ajÓÒ'iï¹Ýý4K·N•€[µ‹5’óêÄ‘„¤ê÷ÒN1¤w)tÞ“ïsO:Àð`ʧéfâg¸;åR']q/yžÊ‹Dj;Ô â\wµ* Ó|ÛœSŠ dÃÛìV ÍÒ&T»áü=Dvà¤Ã”–‡_ÍÁj+;Ü'ŸË|ÊÐi²™”¹gÁpÛÍþvµ³3`%Ç5>{,ŽpûýqŒâ‰º"tváé 9ÎaŒDtýÚ߬HqOÖ°“?Þ¯3‹µv¼”¼À„F;ÿƒ$îX-¨u )äå÷$g÷qV J‡®UÀ‘©¶'¬$Ü<¢^49f%¼Ì_¬¶SÃOCø]§Ú;Ó¡ç¡Öx@ó{Æ¥+ð´°sª¸“p~·ï| ú ÖˆØúTÖu{kj“¨¿äXY«~x,¿:=‚Þ“–UO‰·sõx§T…oašQ‰Fø…†]­Aÿ c•¼©¤Ñ+ׇÀ‘Y?ºDEG¥ôÀ·›4ižpH›Ca 'ÜZË#üX!%IP¡ÒÉ3éÙ,ä|yØZpNÝ\‡µW븷½(ÎB;;ž~ª[¢}dê?¡ @"_–}N=˜Øù:-i Ù’^P‚c¥¦l èü>†ëþ›ªP϶«Ý¥öÌÜc4ÈÇ­4½•Ç®drþ9'õí\ðŠN|ü/r#ˆ(k¢àÀ2G_ø\[¿ä1pnÇioë ¨ÍÏT¾JiM  é®ƒÓ @‡FžÞq!Jú4-–Ó·¤Žx:´fÀñj­îkuúZÚ³<¬ã%SGlÅiبÎ.Ný#Íì·}SÉCø¦ c}/¥æ–„Ãqá4šDD êDÇþNG@¼BÿYNìy‚~·Ø¡—Üx|,[%¸7^7ˆ¬)t]ku^ zÿ"äÔ·+BC½@âôâàWRÖGI Ñ»(ÿ\]HOÅT4ß"š5…½’%ÊÓ¤(f³_Í#R"¿3Ò±|ccW™Ú ÎÞ7­2Ì QÅ·âuÚÎ`™%¨L­GÐðUðœ®I©hð:³ÄZÓÐÛYËØá òeÈ´âèвǢ @|䀗ǀբ¶‡/6Ü­quɾ¬€¢t¯rŠÙjãfÏð&Ÿ‡¼ã‘r˪+Ô'$Ð>ù¡þÆ{çiôxi­è8‘§ZXú0jÁõVS­RÏ˸£²â U®¿Ó^²U«"vh’· š. ñ ±äè<øÄ+P ÅÛ¶f¥lÛ×{ŽJÈß§IäõXp{œ\Þ’|Z ]@^)ÎQ¸YFó½/ÀÌ«¶RjŠ‹NÖÚI@l.˜åIŽÅþ  bV¬ž”Б†î#·È.šÇšÛîg]8Ïaˆ:]MÇìÓ´†åW°’OVÄ‹êák•;]Š-÷ cz–ê’íÓ8Ý.®dkÊX„y« Q'…g\ûS¯Æ“g­å^ÿhý¢Ænj­G5dÙ'ÂjÛqk@ÄO—‡îº¥i^õ.™¥ èãR'n;Z¥Ó–Ÿ<ù#$nuyg"Ÿ6¶Þ±|!Wñ[Öðá,Jjì :êpÅôàY¸É"o͵m^WPïtkáç ›‹7l½À  ñ¡\P2¼¼^”¦eìÃUÆjSg»«½y½I87Ÿ[oú(Àä©ÅãÖ™£ÝWñùHvvЍ©ë«Œ/ld{ñ˜`"Ä)Å Xâ=Í®I;JM2¡ûäïpäØÉÀQb>¡Ý $W·Y8œ‡Q°*0¬$…õüh¹y—29^‹ÒsŠýܶë±Ü/L]Ûƒ®¬èr}÷½•”ÚÅ2ÒÐêGòZ<Õ69 {­¸®'Ê=ŸyAf@Bp‚ø¿š¬'U×ýChÀ‘eÐçæ0ó6MkЍi³vïv×*ÝÓfÛêºî­Â†r÷¬m—?\zs,L‹ nl÷Úmèn«w0/ÿïm:¯¼€;"Ï9Y†fs*kf­J£øov@¹bÑ«€Ù…úØÉ¶> æòJ’Ž#\y)7x/{RrÆV[(ìiL Õ €UZ»¾Z_Ðûæßì¾y/ØSW$²+~¬ê ?·^Á¹¦Š±ˆ•q±øË¯,(´âoY ÙÆ<×=ï:´3Öu{"ËÊñÔV—­ƒÞaÇpKðuJJˆ=î¥>ÔHð’kÌmƒðpüSooBy˜}:Êßßô¯¢ž–>¬iOþôK›žÖAF¡Ní´SEòÀ²÷lû‰ö–NæÅöjÛ[³2¿»Ã+ä$ŠW°l®^6pWûgý#zŒ»QöîU}²B÷V@vT¹Öy|óˆޝõ }Ö# ù…~ejmdk6Ai™GõnþaËèzôœQáüO[ûËÉ­SƒF¡<ÀZƒ3s°‡ÄšJyæx‡TWx8u÷£0 Ïæ‚6®Ù÷´WСŸêªÊ§ãÆl6‹E ðÙyW­Ã¡@\?°ãõéZZUê\êËÁNT„ì¶Ý8šúXŒ¿ XDI§ÞŸCÆ[ÎëJ<±¤ãcü>5Ë>Ͳ¶,J¡Ç•ç=¾v9kmã™Í~—ebÇ€óñÑfAÖ·óªÙ¬AÂÍŸ‰ž“_Prç0nóyÊšjV± mç’­µm°~’Ú6k/{ˆUBx_ZQO?žV°2m|—ÑŠ}-1×X+ð$¶’çÿ/[¡z^þõX¶è6§s|cÞ6“ê¥æØò¡ŠßÑw¯]æÐåf¯•exÅ¿Š¶5·ãܶ(7¥s×¾”Xâ°,tŠËZª ²¢VkìÙÛÂwÌ,í7\JçqÖ'—ÈÅåèÖ µ›@†ªˆ²}Ûaqø>o\#éèdÁl¯kžævg†Ò¬ªGêö½Ž3é;]J¼ßå(„’o–ÉyøTÍ —£ Î`è®–O\Ö>F¾Îáv¢÷ˆ?ûÔõ/ÐÝÎêаDV±ù _ñí9nÉm¼z ¢yDºÎyVò5Õ¨ŠN!ª>Ú”ßw”ôÕëã=¾Érâu ·IUW¾½íØ´fRºWÓ‘Ëâ»çzfJ²UÖÙ_Gq6䆮i{ŽDD}âR¤N"Ýn©ô5B‹½+¥8tâ‘9Ji§ka$þã{Y}ìöEgé“¶c5—=aâqVÂQøLø9¶¾“—u±jRßtk²CðWi€˜s›dÖÖHñ˜C–RM‚ÜrК”4¹f}4\-sÞ*Œµ-þ©HGÐT$á!áo2¡^ÂÃI‰7 Ǽ* å]…ÔÙâå¡ý­ŒTr:ÜŽyVÁ÷õèâ­,GÂY'ÄÂiþ°ºzB'™)…u¬Û³õr.s)MœôˆÕEÛœl\[wÞÝ9j–›NWúd½ii¢äH‹ÍRey,nmc7¡évTÎ ‘~­£zœã(3ª6 Rì5šÁžBRH÷Fcï{›r>ó‰]»Êçû~]CEÛD[Ì’‹ÚÄš©›+RKË·t÷ñžy$¶ä?YC°ÄzqÔEÕÖsèGfÏĺ÷“ÜÃv ‡H’¾e÷¶¿Íª¢ ¢#™`‚Jnˆ«±hÐß…¥¬{˜“ÃÎú:°ÐXOì©Êr(à©÷¹U:°»xñìëȤ€'(8Øh"1ª]_yõ4#a9ŸlEô\îÑýZ‘*ªÊD¸h@2Îo]7K4 Œõ³m܉•–MŸ6.$%ÍI¢&æb¶©k°:ˆ€âÚ¼ø!I{Yž”fÛí«'%·ãNÝé è´òqPVn_IÛ+è"h×ºì­æÛxüŒ'ñ¼­#›Ú" éÇô~¼,WØ;Z³±mîëÒùKÇblŠ)Ÿ"õPÀz:È·$…tõLÉg$%êßä"‡ºî×€MÂvŠšôVT™%è'øˆ±,«ÐJÄmkê‘ï,eV¡§8ýð™ùÖÔ° _xˆƒ:îÂTäq‚@yo`òxuýa;à Þg˜ŒFÒðb¾¶¢W‡²£­ U©ePL´rë8_¦Ó_uÛ€=‡ËbliŒÓoSf­«Â t.=Œ’vc¶\¹¬Q€ýÍÑû‡¨óNΉGÍJX;ƒ4ûñ>øl¡^£££'Ñ*,³¶Ýµç¼†Ží]ßeÒB´y#ŽÁuÀ@¦ä+(í¯xv¶º¿6Yfæ§J `æÒ¦ïs‘³Õ ÍÚB¤CTZÄÿnkc9S]Z,úYð7IšÝOXÏO%ëמ\]l=Q}ãìäЙ–V¶{ÛÒâ˜nšÓ¥ã2c†QW3]7),IÇe[; /{–Jæ<ûé g|“>oõqpN çh£Ÿö“v•3+£h¾—cfêôMm:&é’¨Àö% &Ÿ›¾¹™ðøÌc‰£¸ÁöDƒ«t&¡¤¶†;Ìë‰]²Zª6œät ›ˆ÷lçP ¤«šksD½;ß]d%gdm…3qy?¯Â/à '2ëU¶J†¯íÅÀ‰Y=f'ì25äâ ¨Ë9ž‹¯êÕ©[Þåêö×=¯‹Å[w7˧H‡öˆ¤;Rž±eVC]³”$«ïÑP¨ßQO7VE;x©ëøÙ"ý9,S<å/åX÷îÄ­vöû‘\òü.")PùWêÇAúòË*ô€+>¤!}‚ü\–ãø …;è‚/û/Ôj‰«h ¢~"ììjúÑë$Ö³ôKQ“ùHMçž¶Þ€ö!;Ë£Ýy="ùÑIV­|ª¶ÁB»Àîv'~v#Æ£ûˆðùE {yÕ<\UpæÙSiHI¤âl•­W%9ä~=¿TmÂáßyÙ’“u#Ÿdy(œù\#äP·þÒ, ¬2‰w$õVoÝӺDZ¬®r '†ö8ÐÜ(™ÓÆ  ÛÙuäÑG¶ žžÑƒÚص䊴‰­ï{Ç%bÈl5 ^{þÇx±ÅYóP› TÚPOƒ/Yðèº^=Ô-×ò‰r:±ƒb' °eÄÆðÚã fqE¹rs 8šT&ÙüõÜýV–=dµñ¿7°ƒbIf»š \X>JE±˜¤Ø«M3 k… "¬€ ÇžK>¨*´§ ÙÉŒ?ö%À˾û¾ÅCÜS™'ŒM"9¾’euƒÀâE•¡³úT·¥™5ùRùKRqý½‚2õDLÖFS3ך‰ÊÇ7‹O=cûò4p.(Ä¥(ª¯‡|aaH ]Ç,µÇã4¸Æ*RUŠi¹)Dõ<*h:cÒ‹19´¤¾:+@£«”Ÿ <{´^¨û=#/oI ¯ÂC4T öÀ|`|Ì‚ \Ÿ6S6pi äl’¤ ~y››ÇÙ‰£Õ­ÆEF¥0õ·…¥_îHÏ:qAú¶¦õµëª÷à’ÔÕT³ë“¥_ˆD߆{ÐÀÊŸƒ®Kw›Pxê7§•oæA­¸µÏ~«ªoÅÔñL¦…bƒp»<)çÉi5é˜q²ŠøizªÊªb»Z”ÙUù$ /Òh›ßçHï´ qéöxA«MY±öž£}á¤ùcÌ1L;f@‹Ý!º‡/¢™ßM¶Rõ³H–ÁòÔISÿp•sEN§½+i%i}¬úe3ÔRçûx{ñþŒÚÕ;doÂ$|ÂYjQBûØ’q«öOHy®GoU0º.V,–Ûô}L:°°‘Û1Ï„ÿé‘ÉÝŸ’S6ÒØuüaªýõ˜ò¥é )!ñö„ø®¥Ú›Æ¢[ÐÑ|€ü$…®0ýR–ÜÁl¾µk2Powá/QôÝ‚Š“hgœ!;Ù³=ʶ½Œéšö)ºÐ2¤Œ+VÁÿV^¦h’Dû€ÀûõnHG´çô¬u{wËe¤­özµÎL ¹¦':ùiX²³jxå‰ô“”–üªm–S}ÁèsÜ"ëcÕN‹ý±2µÇÚàKÂëÐ7lŸ&&ƒón“Ô[œU…t9: c#¼€¯VÔ¾ x>‚f·°üO‰/pwÕÅúSdÀ‘ãyyZˆ¡ÇÚ©ñ²‚¶w*[±˜@ÞêŽ5°}´åÕ½^£WGS¸BžêUÕF¶}wBN<¸5.–)ªsåIƒÃJr,±¨ÓÁ™\ñRi:Âô¯b³FxÎ@t;_ÙÔéÙg½iϳT¹#Ÿ@A2‹UI²Ê]Ñ£ö\lŸWoör†éë§™sÚÑØIµßëÀ׌¨[“{ 9‹Qð:õ™mu§Zɨ΅ñ ©ù›Ó§ÓU»ÂÇNÓ{QMT¸/pX¡|ÇCËW`ãg¾õ™Ã€´Ÿ2Œ>Ú3½AÔ´¶Ù’[¶6Ÿ^h_Õ¬üVr' /eæ$=vhX–¬(Õ=´G³z@¤õ–PR6乜¤ìÄ7^›öv]f3-€*l-œ•Hræ$[°"›‘xW—)k)›a+)—iÞÚ^Šê=qnE«ÈÙøu’&¤:WÔ¿^‘g`ÖãËãü}¶™ëu;ë4òé*S#•YcA>Ó¯ º¿M•.ˆÍ¾Ê„oßT™0@T ì1Åu9ç›\Øîï%¤ T’æoåˆ=sÃûÇZK€Yxßi¢}+ô¹Ùb¤éë0Ÿ««¹¤´ˆ2f½ôvß²9Vr^}ËqïÔêz¢!SZ\n J;Ö¿9}WAÊ®§ÇþP¾UQî>XiD»Ê´yœ¥ÌN‘ž4{™g7ÎCÉ‚èÎX (¤¶¬+à7&o¾KÍœPÊ|›ôή´\²f oE$]?ðcÓZ¹XZ»ùÇh ‚÷”¬³h—YÛ¥ë;™ÅO»ÕyÑá™}è1ÿÇX–«×ò»!ëÌ)ŒÎã¾áx—nQš+hØ*å¯ðÂÛ¥lKÕ#PX-~ó ¡Ja¨R¢% îœv:Óâ.øª Y>GÇͳÊÀ ˆn-Ù„ß•àÒ¼¼VÚïKtU”XöÈwÇðÁTE+²•¢ý¦‰^±œ3õ3cÕ@ †ó‚­¼]7¸Û÷1­¼j´¨Ïãp°¯ÂôªÝ¶_žjAµ«¬ÿÄu;H3&>”Ð4Á‚Šïcµ£º–VtŒ4ß–…ÒK2UlçYñ_ªwSìGcµ~àµZn#ÙFú8/À»‰e»·ÒT¼¸øFaùã6 óæª†µîÛCb: ›ý¤iBW+*8IHûôkÐG\™©é˜®‰L0È#æCŠª§¸¶ÇÒÁUS«yj4$[LÑÉÑbbP†ë¸¨¤,·È1–;ïê ð7¼fC äÑZdÅæé/ty˜8ˆfûUÏÃCž KˆvóÀ¹rÖ©’ï¸Ø@äZŸ¶~gÔ@Ñ>ƒ–sûd:nλ¾2Né+eâÖë‡:kƒ¥e\úX²4ž÷:ƒ£º3éK¤þ“¶fíŒ@'­Ð„­EGˆ—OuüDYÏ*²'l|=¶’~¯ZWÜß«_ßrŒ(±\CC|ü¬µ 7-D¸½V¡-’&ªà½lðOÓ­š€`¤ºØÁ⻦)?ÃCr…ä£ýäÑÖžZàÄu‘±Ãvhá+§z „ 9JÐfú¦O\ÁÁ¾§:lwm?I©/!í¶W@™DIÉú21"õ#»äfê+V•UÏøHÙÍe̾ºìmõê¹é¢e3¨JVNoR·Rºéh$e¼Y‘N<ÄÉÒ~.b& Á¢€S[`¨>·öÎwU¾ ‹AÛ²=Dð‚¨uŽÈ—³Ÿ–Ç·ðr»fËÁ®ùÖÉNŸsB …¢‹µÒ\$lV:¡¹±b‹— ÄŽ‚}+.¶J%X×s#8Tã¼Õ \±k´Çî%Z‚“^ýf.û5›“ÌƦþ<RÑ]6¶Àxë*±«E¢iB‹ã”Ÿ’ *4“ºó±Å›Ž0mH‹µ×Ýu/ÎÄàØQ75Õ:Û8…_¯VÆEpkˆI[†Û&a6L‡SlØìݺŠf|ÁƒæWç>µ#.VÁ­\=QË⨯ΚO&¾Ï9 ÀøŽUzÕÉ#¼¶ÊVÓŸŒFÉ…|«ÈêXa¬-ªe’àu‘“³7!,NщT?©sbõðÍG©¤ú•ïû ±Wï°Ž„œÓ“ÚÓ4–­fäŸ%øºsJÑW0äÓª/µiäQä3*q=T,"Ãî®ñL¹ÔÞ©Â{¡”ŠXO¥¦t«æRf²?>,êh­»XV\ð2C;„iÕìsÀÅ2n(žö?쀥x”‡ág6‰›…¼(©çHâ}_ð³3’é‘N'6„µŽÃf'kbXÕÀp!R¬OÃÄB\ððãzÕ^ds³€‹b§Ä=t‹c:,ë8& ñÑÖnAd ñò‘ãg0RÙ¤8áGÆ!•ÆH'é[a.%-•CëZ’¾‚ók<Õæ)‚Öq9èXçã½tË«%üV<˜‰¾î7ÈÆºãqߨB>‹+`Uí´ë{N6qÓ#´‰%©5Äj[XÐg’¸ª§z†‘Ù ¬C7Åó…c¬Gú9qòYÉ{¢¬°½6¬èé0òsUüv°ÊöAŒÞëÛJ‡À)ƒEG@ޝƒyƒA@ä8ž‡NãY¿9¢ä»ß©ÚA82×éÚz†×3;„è!?q_ Ť£f~Mð?bÉ£ë»û’´Y[¿u†#«²XÞoŸ£1òÒkEKD¶Ð"§“ìVôÝlíÕ'ñ ÞGÅ©ïÒ–R½ý2Nµƒ”ÜÕÜô–´†œfù>-'ÃÝ.³UòØ`Ý£ì'?ÍVaq.ĬÆ`Éog-{RöTE¿vÇw½z)[±·ó"<¥ÔN™c=ž­lx‰˜å£´)¥wϦáͳ-€æšDÜŽ€·âk…ܹlœ¶—tÅn–bé/»_@˜ÕÇkÒýí•úês¹<>Thé™gã˜2Í:Vûô' °ÊMéÛó”Oÿ+° / ¬¬ŠÀx›EÀªµp ˜æCZ5A&‘§*Ó^AkVàl`¨0»Ñ¾§4Ìâ$^r•íÃa¦Ã'$³GËb¶½Ê3çCÎÉJ âßíG»¹q@­¼Q7ñOÄI.$0&-²EçzÛqŠ\ËŽ7æ¥uqíÙ`¡äõöØïžMu…‚ÁÔχ¢±hÈ:žªJÍ“T#ÖÃîëÞœ9g9[ÇÏXYùîyÚ3t»[Šžl#$ñiVôZJ²ðªìN±‹¿­?´ÕŒÇ¹'i†#ûN`Y¿(ÖY,œ¥ú¯˜‡äÅ­eÏ‹ne­5!óCI3öÏßm33ÛHšã»²êÄ÷4 +!eÁB¹¸å1c¹Á¯¯­j¬“‡­rk$»* û öà)MÈRkuö¸EæPr žâkŸdí (º¿º:ìÆ®-ðR†wÚÀ q/òm ¯„·LSxÓïx-ÌCfø¼©þhí´'i’|uoßDF}lBÓz7µb/Köñ¬Ùؤ"íÆ^ø¢ÇÍ[£âæ¿^ktì’-èjúñ!Uñú¢g¹‰‡ÏFcƒó¨õ8',?ùûÚl»câé,¡xkWb<¥– °‹&‰–‚·ê´$MçA.M¹Á‰®BR|2µ×‡7lWep…-Ƭ®ü£üc7šÎŽJ¯[w|”î³ÛÁR‘{MÆ(B™0®­rC|¦Þ„ ÎNQ²[üæÇŽòÝ`!%‡xLÛSj5lO?D³ô*}©‚ÇÚV˜l/TæŽÔSP,L!^¾Ü m³9ÔÞÀ0Ó"ÇP„0V€ÃЀ¤FµÏ*è"Èÿä Tù;ˆ†À]áÝÎð´3miS¼ÛøT~U>͉ëkë¯qÃPÏwÞÆÚö°Ùù%DÛ'À¤7Pô]•­=x±D-y^ûœºÛ£•·08{+Q¯Îm øœÅ“eE;y–ù`Û!ÍC`7ì£ÿùé8}Õ_²+ÊQdÒ3¯”ÝaqI‚h“ÊÝ3ñTçGá¾ ŠÀ°læÛ-"[ ¶À!ðÂ`•ÊòÐ"÷:D¹<ý½/+éêP©ö1¾o“Ð^v2iànR-B…yZWöÎ÷ã˜AÕDú#è]:.)jÈY{`¼Ýô”7,sø©˜¢ë•µVu™¶±"*šeuÿ¨Ã¸Ž½¹³cÛ™60¿£—p– û²Î›5ùq`‹‚àZÂýÝ/nf+ub%QçÀJWNY÷m²eSqsr˜[ñÔùƒ‘û$ƒz{°wÇ­Ë·ŠUl) p /ÁP1ä§?NïϳÇm8öHZ^MO¼,‡’ÞŸn×ß~Ÿ¨ûº¥lul ˆ÷mG¸G$ž„@ eŸmœú,¤4-³– 2ÑÙKÅßí1ìmŠäñÊ>X N ŽL]k@¥Ðÿ®l ä`÷j+-Oy*zûd9‚åíA{§V1 Ü*LøX|œaûãüsgØþ§ÿ©ý#3lüË?4Ãv~ár†;û×1Ãæ›ýÝ ›ø¯7ºÿË›aóVÿ¾ÓÝóÓŸu~ÃÿDnùƒasmÿS#lüûÿcNw®ˆÿ¾†×ÂO¿úKöýüó_ÿû¿ùÝ]¾ÿîo¼¼ßýuüéWú×<›ßüõÿöó_æŸ~Åþþ‹?ýùo ¿ÍýößýüWõ§_ýõŸÿé_ÿ‡Ÿÿ¦ýô«ÿó×õÛŸÿ⟰Ü;æšþæ?üÕ¯ñ\οÿíßþÕÏ‘ø‹ßü§_ü×ö×ìžßýùáÏ¿þOıßý ×úë߻ɧû3ñ›?ûíŸÿöçŸ+|û¯ÿ÷¿eyþîo¸ïwª|õÿëç?ñÿïßý©q'ÿŸŸÿÄOþ¿ûSçŠN˜ýë?#ýü×<¯Ÿhç«þíÏâÃÿìwrÑüêßýâ^è/þè3úÅùòÿõäùü‡_ü‘‹ùÍ/þÈ×þù/þÈ÷þÅϼùÞÿø‹?ò½¿ýÅùÞ¿üÅù¢¿úÅ}¿ø#/áo~ñGnþoþcäšÿí_ýéŸýú÷–èùÈû§¿øÐøüÝÏý¼hÿ[X5Æ3{V6„kç ³D†“êK_/í ³ò¾UÖLž)äû Gv{Ú­vèRNËÔ2ŸvC§ŠÒŸ»¾½_íø±8¡a߈Ãu = }oOWÆšõPŸ—í9š2Ч¨ŽgJn≯¬?sÉ©¤x\ôÖóÙ‰,§Pö¯ “?˜¬&[PÀõ°Þ+(õ¤ò+LZìÝ > G3_ë·9Î;ߟÍðGÕõ7äçUT&Ýß•=@ì]7,îÔc‡!lú€cwˆT¿çKï<™š´”ˆf:pq)áI]!Ë,se•²Œ_ç-õ•ÛµãqNéZ@¹ÞwfÇ5»´æ{Ôá­4[õå’X3L¡ÝñI©~¨úÍ.Tn¥ª;½-í3Æt)Ñü E°f>£yr%ìevx<”™v•7X-Ò°Í¥·;¯q*Ý5‹“£“cq™·:ŽT(yw¥ŸÊ;+”{<:ÐóvUøc]J³66^Ò—´í‡ÝPƒ-Îí;HÅKç·/oç|«>y†oíÉB×ç€ìœ§›“õ©’N“§ÄÚ÷f—¢Œ[1êªå+¥~mJÚiña›2¬J³NïÀ ½'í<°û¸”•ÊU;UÉ‹‰ÄŽnCóÕ¹Ÿ-f½Œ›t°»©R©9î,ob™²âXgˆ$Y"O]ñ5…ß¾®þ‚ÛmñÕ õ†·9<Ò{T¦{_èê§6Wâ–dznçf׉½Å®±Aˆ„½ çñäˆJ>ÖnAík¾ŽÇ¦†Y¬ðÖ‰‰¾‹H ±‚üXÑ!^7±«±¡ >¸¾éTéDeÝ#MÅ®NñmK·mNÏŽ/DÛµ?ËÖÙ‰²á]ÝGóû‹ùžÃãžÏFi2Íæ5ÃWª,dŸîbÅêŸê@öè÷è>‰ÆK°‹„¬ójÒUsж^î …ÖìÜ#XžÞ‚Làèú$}Ù6ß»[›£ÂûÑ&™ÛNíÝp'LÞØ óuNwÄ®Vös´SçWÒó©ƒeK±²QUöÂ*à)9+{ âN¥@»#”s¬ZØoÔµx¿ò†Äâ&yIæú:<•ª4¼T4]爕,¤–ç½zˆº¢q3޼3Ÿ @†ØÖ§¦ Ä B Ù8]ì@Êbé šgž#¯ GÓGQJ?:n§!Öº8OMrÞÈsÙ¸N¬zGv¸‡PFp->)E³Úvö[ŠTilëê“¶ƒÔ»Ú¯® ¼UükhÉ8?=`Ψ")Äg«Öý)h¦h()¨Žâ¾ø7[ŽÇ›ârN+ð´¬ÐmµÉØšÏjf¤ÆÃrœL›+7LÄ» 7÷³?óÍNv]!Y6ªC˜7Wòœ}¨ ’•öW%[ܧžfdMM1r²?ŒGLžZä¿›÷£ä¾ÇØðçb§SÊŠrç눓2°eîò9I1=«gñ´“E¦†b6ÚµO¨¤ýD"Ñ`Nâ$+sy—¦‹†]vç<òºÙ;ñÜs=+”0läwÛ÷¥HmhªÖjƒ´µA~<}³Óð.‹àtãm…œåÝI ÷ݲ±Â¾¾3ó V{çñ‘G•A³duTÙŽZ²Eõeƶ­dç7lAb _NN<ùLÕŽœÊ´s›œ¥×aŠŒÙm¬Í¦’ñãB³Íñ±ÙHáð d‘ÂÞòg«¾é™èYÁC`–‚rÛVcÖÆ§k•GþQKš5.ÇúYš÷ª.¯Æw=j!Iw€·(\æ´Ãc…Û†õ°ø®hŸ¸GÛ—î aãÖg‚¯ÉDEóIΟúxNž*”çéÈn:œ&}V™“<´úå@²–6Îb²j°C§˜"³:–Ç©AÏ€õ&g»&Zå¯ûåK-|…†µF¼ÁŽ ¡QTesœ{@á÷ÙÑTŒþر ÁG«v›]ä}í×XÏ7Á|ZÍì+6ÙìLFˉ -Ýû¨ä¾§æV¼¶ëM<´XTÇ‹Ž#ogaIð¤{—_«ÇÙ°€{=À#ÐŒW_è•lˆR“;kzÌR:.ö“‹EˆÜù P²m¤ 0çé0u™“‘@?'éýx‰®XÚã °0Ó†[t«'œ®å4oøSô>דýUi\š`Ý»¨ ¬\®®æÏ£Dä˜&Ä¡;žŒèÖ-g:—yx~=¶Ç³Y—“ü:E„diéBÎÅsgK{0…Ú=›Q–“¤ªwX=Æ{Ǽõšj‹äÔº]|õ`۹œÜ@Ó’œ+¸U—_Üfë°óŽÈQå+€܃J´8XŸ»Ÿçq)›8¸ç–ûÞ«á±ýS´änÀTÕ«,«®F óCYဥLž”à¥mV>M.ˆö&l÷)<¸¤ÓÇÕ}â¬88¶ ¯x žãÌ—fåÎUë˜@À—°¼Í:^‰S‘õ^J ÝS)oI¤€î©HÁ:]˜Y9ØÕ³ª€²zå4퇑o0×®ýЧ“q÷\ogO‘½nòm¡e×Cþ9ÖÜ p#ÌUI—­{î̪4ÛnªÒ¿Ð`~™“WUoúäA©ýED èx!E ¨îXíi©,NZÈzU½†—­saPcŠ}¡Or/_ë¬%h¾t6QC»|*õ`"ÆsxÑ@jk³D hï¡Í˜›˜,n¯ˆΦPÞ1ŠˆÌv{-<]§¦ZÈëÒ³C úb§#ŸS™šQ[=hDâ­2Ê·?úÜÃ#_MÕØNÖ)¯äÕrúLÃ(Þ˜\y(2Å»¶Oš4kŸDºÕG#¦¼ìF^òt.¶5V/VAœ¾SÓ‚ÆÛkZ­K£À`s5ÅH¤PmˆµpbõxJåÁa".ÑÉÖ‰ÄU£ÏÖ¦),w“+ØÒÞ8>­è.Õ_õ}5ì;L’PaCqѨ*À»ì[å»5š_õbÏË™•#|}ä”þjªB¼è0 ¤‰“G+œÌ ¬¿årÙÑÞ1a8UR…l™Lvû’$×1&í¡‡Rs†%;œÜQ]Éà•µ7w0`\cie麊·þì@:ÛSÚ{lk¶N÷ªOV³í–™åœ.lÇÉ6]Å@š”§cGŸQy.F¼s! ~¤—6£`Ÿrk}éæ0Éöûò©¥G5ýOû®^+\ f<ðF®’»6ÌÓé»ëo’ÿÊú‡†]¯l®Ô¯YOÛ:”T€åDo̱•Òô)Tœþ}·sF³=.Xù+êø¿6ÅnQpûØ(È»Ú,âIˆdý“%Œ¬»Í«“Á}‹ÒˆÞ€ X¬Ü¶²fR[¦ä 1ëgÁ†$K€'k­(ú•¾þÌŠVÁnΪ­Ì8m½¬6{Ñ­|øX&¦LÛù5<—ã…Ü3Qí³ l%:–£‚üÓ×cãÕƒrÜDo%Ñj¸šî Ð^_ŽˆÐž=š3âA•ÿ÷k„òªkl·ŸI¿€Q»ÀÔ/ HI5ž7eOH½·Fyž­±órNv*yìjàèÈÝ"¨~  µ#—MÇ,Ák ö;úp;­§,Å£_Ñ€óð[Jµw^šSúôN y¶¢ðc6ßz<²àïX¬v™êj0`ËPŸ\‰ˆÐùÏäÌŒ&b ¾ÌCçÇ>kØO>m}týP~8ð¥ƒÉä* Ow¬Zn8æ({±IÐa˜ÛÉÅGùEªýR@EWÚ(-ÐÂÐD‚%E…t ãájk@Ä9eqv“¼Vý<ËÁ®·ö½Ó!I™Ê1W9šäuè‡ôª~…ÔÝ9~´ƒ 2Zö8ÁÎIÉ^(;ñŸÉß^vJ=AÊ>¶0K¿ƒó žT¥®‘q’f:— gûŽÎ%À‹O±v{éŸ ¶‹¦çÓ¢Ø|!ØUŠ_nVÄÀâÀO˜PÙ"bÓÅªï˜ öMÄú«9[ÓÛÌ“9³Íé;vrÁöåêi‰3³ÿ­A ÍR¹?½5‡â»W,‰h¯!òŠªK±FN§(á©‚—Ã1ßu„Ǹg9õœ$B3³Úö(ÛP«u½8–ÑsäDÓjRÇe-Y¨èëÇã/ÖA¢^2V©ÏÈ©Ä|ÑÚ!Ýïzs…úNM7‹,–/µ¥v¼VSÕK¼´|NÿÀã>ªS;Îuœ¯Áʘ±ZxöTî-ÒïŒFˆÓèGÞdêüŽ€=YÓ¡—-G¸øM{ñe_WŸ¶÷ÕÓËøò ,6€™„Ënñœ‚æ™[>xõý½XÈ61’c¥Él­3kgGŸ—]£Ü·‹Z“t¯ëÃêžîÆ(„àí@YÅrñSh4q/8Ýîõ¾j”«E‡­{v`@ê0=lØPÁ6ÕÈl?°«pùx Ó,ÉlÛþ¯ÎѲî&?­3õž\瀠Â[šÅ²ù‹MÑú:áÒY‚÷”ê.6™sH¥M@°zï§ßÉÄílll »Ãfʱ´|ê­ÞGiæ®M!+Ì÷¬kçVùæ»auË)·& ŸÅßQÉ<Ò;©)Evt|™¤{We‰¼ Y÷̳YM×}‡iÏ /»n…hŽöæÜz¤qj³æbªºHºÑΖ ðTÓå[ÜKw, xáaAsNß‘\h!Ÿ±Š–Ú7ÐZíqÐzpDS+m1ýÐÒüU€ÇYxA²:kÌžç—³ye}âðûÚlÏjÃÓã±Ýª+«s¦Ëú˜/à…t홇ž<¬Åì¬J ïýmJ¨ã!·ù`ÇÇožmRµCÖ}Ù1ð¶‡s8Ç®,ª8]ÎòJÊ` G|êü S˜™7Øû]9 çuj³gE:©÷(#{¤vÿໃÝŠLº"+zrTÕY$ͪÔÀ0tGð¶ÚD¢qÅ¥ £j©ú~lºh?LÿN•ºÁºøµs†!‹Ôüxúäi˜ dûjG¤•Ö±Öò§Î^y$­‘»Dˆ hÀR¾@ ¶ìð,–yAÈñDåfëóª¯æ¿Øò,ó˲ͣ¯Ä©pÄ­æß²»äZa §'„öÜèIMDžUWŽRèçHsºïmB—­ spŒiŽÉ|®ßÊײˊõaäÚnÂA½dSJq¶Q•S†O_BO~ém×lµPl“Ûãå+RìYÏÚ5ò`ïŽm’KT}Õ±íVˆ®^pþ$˜ÉßÀî ¦d{”‚ FÖ¸‡Â#;U4ÒA½Wµ.h ‘ewŸHÃUõ°‚¼o^2ÐOí²¥íÙ9½êë¨A¨/^†nåQ®þx.Cng~Ö°‰Ð™’õãK„gR A¿)j/ïàSêt<¼ÝfÈO•‰²ãGNφ/FEk‚‹vÒŸG>¼ˆ¦É¬¢ Ku KM@ûQù%"Ë„~âQ=½>÷–_–ì­D”'ÇðC†&¶–>¤º–ï© 'ëΧ«-w =4 âFÌWõ ©½¾Ð.AtX춤ƒG­ˆ/ÂÃG¼}qñr2õzTtÜûÓá[ ¿``CoE!×NH?“úAî Œ ç¨Ëª³Èð‚ZÙñÑ"Wj/ïx¶9š[ÙßɯžÑxü©YYÚš‚š·†`|‚ªî"†Òs¨]Ts&¬¼¦ÿ­(©ßÓ® Ú!7–,Â~ÈÉvm†ëaW<éWÐæÌ’vVŠ‹Cšb#ùýY&`œGM— µ½¯û@Â)í…ÉX™ê5+ådUö ‘ÏêAfåÍ–‰ç¼›¼ÃåaO• Õ¡m“`ØÉÚKŸã!ͧ‰Iœ|xRpéX—X§!R?Ö æõyh÷ÀàxPœªZ=W¯ýk&ÃA^…µØÉ°Û\ˆY}p–IºØûûñÌáWG =ßÍ=øñï,=½³Mw ŠÖÖ£R´}K]éÚÔ¨ZW¾—ã|\»uk¯Í6T­û˜‹jþ¬þñÖ|/«³¨Uõ„o­®ÐÕj|n}CÒ>@Eõþ¾àƒø¬+-¢áR—F“D{»‚¦jAƒPªóÖð¡,l­Ôã¹Õ¶ö €»4í¬ÀEÙzd'é:-ó•¢J ñèW¶æž°]š`ß& v(Ù§£úzy¸FE”·î80w¼´mµÌS®¨——S£ÎâP°$ï;vô>sY¯ÉvIpâÚå»À;Ò‹c@»Äš|ºÇ¡4\Å:À†ñœDZ´·AÃO¨KÈzéüùœú‘ŽÚಭœŸçBÔ‹{w­ëö%S…xæYïµ@J¸Ìó\±•×þʪû!g¯Ã¼Pç‡È7uÛc?m úD-Mk¾/°Zë{d¦Q3ûd—#qiêñ±2k(ëx:,túÑM4]Á‰Çe‘‰?wI6FoÕ  ÍBç©KA—ìOTüŸ ‡5^é€W>5äI¯þ­t°Ä£´b#ÁÙ§Æ=Cÿ”¨*6dŠð–‹”Í; ¢£©Û*ðoåµÝþ4¼F‘F»úu/2ˆØk7š¦«À’4/vdÊ à¿: ½ŠÜKFXœl»jÔº Ø´4l!)Rø²,PnžŒžŸ*“Ü@[°„» TÈLJ¨³Þ,*E…±‹ pEßÓ÷…꾑¡>ݶ­@/ \'Å*]ÙÞÏÄ(-<ÛO5ìs¥|6¨ÖTE4g/䢟±#Þ›è}ÐLS.`ïüG"À‡ÛOÓg£’–Ñ0“ÀrMŸjd?Ý–Ú൳O£y¼ÚSÄ>†ð}J“HÝ]Îj'p\Z¿8m¼­G4Äaû“äïƒG>ß31ÐŽÃZÍΣ åQä•­ªŒ£%=Uo=8³<wsl9L—\ÊYÁúžoj3úX¦ ùzÏT‚ÁÜu)N»” Þ‹´cÀÓY|Jüdv?– ™ˆ…¢nî5xü¹õÁCFØœ®LáY èЪ€7i92èZ0l ·G\š²b£¾Éß,Êú’œ=¡ü´)JGüj)êt¿µÈHnÅël½IUjH^ЕZ¸·Ý¡Õæg0¸.ƒšŠa¯§^ÖkÙ§ž¨ûNañËÖákç¢ß­r *ÇÕszDÝ&„oµáÂÑp±)ß ðž˜¶îÛÛœ¬\LµŸmÌÖjDi‡å¼6±(}k½ÏCt/`€pR¿”=ç¡íÔúÄ"ƒû°9ušî*½vîWUç´J¶!ŽÔGÊzàªV^¢r$H)´äÈÄb±ƒî0=Y/0Þ4”‚ΣêóiB&g£ëÿòXæÕ¶î.ó¤¶$¾šU+×l!j=Ķ;,5†œKëóoÖ[¦*„ …ÓSli,O&t?gˆ@µì[€Ê_óN¬Ù WÕ¨{°ø–å EyŠW)p€iý˜¸)«ç\Âc³3>J®Á\ƒV<0ÞMÚ£¨(_5¾A>p"ùÁ~´o±ÁAÑø÷1ÀxÛ¼L@Èà2%Q”iÙN¹ Xˆû‡×öT«A!—ö¼S²ïËQ`­QÊ$@4T~è¯ÍwrìAà]¤Ïí Ñüaš^Õóü‹ÍfµšE2S Ê â‘™„'ƒàåõçi8p~4qêù¶û=×´íÁUl|/ ±¼ £6Ô"»£S®p B4‹rèˆ7žcÜGüÉ’  ïždl¥W­ú|ö¿N‚ Íðž´ô=R„CÏ ^!^ šÝILJúå uG¯ª÷Ÿ$Tk2RyQ°9k%åµë6šC7¶Ï(Ó[»]Éܪ¦ó¥”,É@Ç=`J ›35.VšÐÕ’Ét#–[ѯl“wÀø,ªí˳vÒbXl†&8 ÷¤n¡®V )ÛÜÇ€”-äîª7!†5sSâØ²€ pN X3$©Y´ËÂHv|1f%fî¡1¼à²¿€¼4Èg˜É.‘çh1ne•ûÝÌ„Š`Ù ÃÛVÏÖº¸íîé²+N~ ÷ÜT÷¢üG%‡?~À?Û‘¹þ£ŽÌõvd®°ŽÌõ_‹#sý¥#sýg92·‰ŽÌõ¿P³¸ŸŸþ¤«'ùÒÒ°%sý¿°d®´dþ§,™ÿ³šÄ¯ÿü×n«ßGø”Bú¿AHà®Îÿý¹:äœÀõV§¹=*Ð'”§È‹T³Ühر„© ˆªÿÓ··GuÊçñ»ÀZkƸ¤0¥U©Ü ¨®SY·ý9Ïvˆ/¼ÍbÈ^»LˆžRôÒï{*W Z,Á­”Ü„}¦v;Œ˜ŸbY•wñÞ·¾’¼'ƒk?˜Ëú –¼šæÖkß<‰›–÷†Iy&U(í¬„#; f{Ï^ž½© êeéæÉ:ÐBjÃ.{©–õaÐÖX¿ê WŽ;ÁYõýpÀ R«<ã S+Μ];ðú>@vvÝÉ6<›‘ü•¾¿ö¨?ð¼Ü²îBüï¹­ÍÃYÛÕXÖLîãá+ 7nÕÏØjó0kÌÐcí"Ï»Ûåy«Ä1Ž_o½ì™ÿÞíÈD÷\vòU²%XêíOqÜÝcªÇâ!»LSHägCê{FÕ‡í<4f}`s©MØÖípÛ1Í´+Á>C^×™àHcÜ÷±»^pG_‡òª¾óU” …­N]ÊúÑÏ*jî‘JŠ%§ÓÍû¶Ü ûRqßNMï×Hàq¿cýÖî5Üçèèe;4˜vtnØ^ºèZ5ö@B?ˆHÑPR³)î¨4´ˆ{('ËR _ÑÆ P^nT€ŽÅCjw¼TÕTÃunµç´º|¯ Gê‘·÷T×Zaè0?l̉eQ–‡Ó¯æÀ@×.Ê2tF[låuj¨OÙÍ×=ß™‚,¶À‰Å×'iê®òcK‹qUÛæ³gÖ)½µÏU Ö5{Œo·ã8?e‡/Oí5åã:}bKnÿlï :æBm“kCTYòZcíσ8댫8Æ¿^Ûj¾…Tä2häÖ†ÝÆ ŽÚÓî ÑýÞ .õ’3¡Gx¡]f< )©ëÒ³>|Áá)Òb\v{ræd\·¦ôêêÁ×Þ]#çx¸­ˆJ:º9ëÛ¶Ö©Zká½ÎÊbIüM!¨f^#!Ðþñþ9½r+ š¢¾ÏkŽúèáòðÌîD²`¥ ­0H†éÔ ø+Á› ÖuÿÎÇøo…]·ÇJ©ç˜\:+Œ;ë.k‰[–ö/^¬»a¬Ñ5E¯ÉAª1tF›Dëbµ~s©Jžþ¹ícJi[”r8‰dâÈæq±«¼PC÷§Ë·Sù1‡ÃvBIéok§e”þõ«óÒú[]Uƒ»÷ËVÆb˜Õª;ó†HÖÄn âÌ‘GÀž¿ñÝesóÊlßÕF‡£Ÿ©ˆŠµÌ ™JS³ÜÉ]g[€' Þø]N%LbÛñÒ8x–T³–÷ŸÅA¥-æf裢å™çwèãî)ß5 áŸn%i§NpÌdfÇöA3éÍËÝÌ»òÌóåüXþ=*0÷5t@£œy•­ñhu£‚„¢í5ÓŒÁóרMåéÀª#kñ–õ/i]:¼ò╇aÇ%ÁO»wñÔ<[¶UšláMO¹¦:YM›Ü­·é>žöu>lC{-PßÑAzçŽÅAÙg ·1íòhšmÉúžà’iÑz¿ÏÅÉnNI/<ƒzߪíÃR Ï‚Çè2J¾éŽËsRA9é¡«jîqkª°Šj&Ûés•øKÛ~ÎùÙñ±l9 óBÆs+df抉l“²YSŸnìà[ï4Uí«¨ÿS½õ<áÊœ?Íܪ Èiöb7´4…ô N(zCÜdÑ]]ÊÌçð¤ö0Ð÷±k‚¯úÚÜ9*ÐX·^ {’5Vž1‡<ö#û]ËC¾àÕ%*©P $ï‚oҬΩÑk'4¾JÁÏ:›vgŸ>àÌùNsý’‹NÜqµ:—Kxöt6{Kué¿õ Žöd0KM×­ã¯ËvN%ÝãŠÇç@a¯ ð‚g5UåâÙD6Â"39„ ˜­ïÜ©;óñï™õfµ)ôD&hcߪ‘Dr}½%¡ÂÏ„¿Ùð¤aÀR¥<[`\gl«[;ôÑœÐÏÎ8®G§4O=ÀÛ6{~ž 8ûa_Î ,,^€7 ‰¼!{3ƒ‚=sÞÕi <ºÃ½"åãNUí“(—wØç äá Ím²òT¤…]àS°ñ̾Õ±ˆ{:»iIÂÓ®·¹6Ï” @”Üêò0UQôPÈ̇ ØàÃWe#à 5=¦’ëóZ%ÀâRA¡xÎ4Le)øå%v!å{v?»¬«+âI_ûJHU3ú¥/`°DeÉ›†¶jÆ`§‘Ç·ÐÒá€ÉŽ5Î÷—½“·Ñèø6¥|Xn†uæøê ucÎ}CqYt²‚Ñ=Îõ¤ÖWš¡ô˜ê Ã:u[–`Ÿ€t¸ç¥ x¿ó»•òºô×øl5!1¤oØý${Ž6®8Ô£ð%ÉDGIá7ÝŽŠ«áÒlvÝ¡C!…Wõžù™:ÚH}ß ¦TÌÃèW½ ܃ƒcOUµéÒX"±å½²C“ìî;½³v2yŽ-­È8kÕrW"í8} ¨ÞØÎ¬›é([¿ˆÇðq†ƒí_›;‹ ? žïçU-çüÍ–hcU.lÏác]^•Ýù§ÁúYÍAD¬C©ò „w0³ÎÞE"¢¤ê€°Åú»tî`Éé;´H(õEõÔ9 Žä4@ò"n%-¢cTä*Ç3ˆ&@J¡¯…åØs+×p;9ý(’x¡d æW>¬©K×g1Ê›âtPÛq‹«ý9e#dGB¿ƒ^•WHŽ£]·-’o äÛ«óÎÀ?'u­¦ÓÎPÅ­:°FsÚOkͤa]Áßí‘”Q èlReÍéIL02ê`«¼¾KÒä(N Ê-X-jà³§âw¼QØ/?ÌF2¿ÁWºãŽùtlHVw;3-VuYC¼!aK‡ÿ{²a®äm”ýi‰DjËÛë~žÈXÊÕú‹Öw§z詜c®jM?œQ—ÔÉíuÁUÒVçÌÎxϱbâ³£Xj«W÷u‚µŒëù^õú`?òa6˜ÓòNñ¼AnÕ¡KÈŸ­Cºü9Ú à1Y<»EiDMK»3W,r«ù“3urÀ¯ªõcFªª²ªUS¼ý㻀§rs²Ûˆýe”™Ç›yz¢GªOz–-‹ÎØ‘ü±·›âzêqp <Å $h…Ì h½7(ÇIN. Mö•ÙìݧàWYõZ\A——sh-:½`»ýGf‘ý¤ŒßQ¾h:6¼žÆrøÎ|Õ×, ò„'NÇr=Y="RŠ’Ÿ–¾BJ˜ZÓ±¯¾j‘iÌÿô`¶ÌÁ^àþÈ6z¿®¦ä¼?yÙv>@ÏKDå•{“ùÒ°v¶i…ŒÓØýE…QB|±K~E.*ï*‰cÖ\&Ćgª‰sf躯þy^e%pœ“Òü,[¯­ª×‚SFÑŸ)«3ìüu>ªñííÝvµ9³Í-¿CW}6yï)~X¦ß¶czë€UNrðLõ€ô{OGÃnÒVŽcÄ}Œíw*OµX«%¨i©‡]ñV(U™öS›)ýÉþ\Î/äâY~=îkéçÔÙˆÊvé>’ˆðtX±c@=ú‘n.bKK}Ç(ƲÂITÕmÆPy:?Æwne¢¦ Ö ¶*_“׬žÉïvæ õôÙ«Vóa¬ï¬/yEI9ýÞ"·8rú’/=Yç«ø¬õǪðŠ&óª-¼öìßDd³7«üUŽïÉzG×c[l|t¾³Vg¢CŠÊS9…ööùðhù”ÜVü9Eõ "¾tNûv}ˆ?";­Ú÷ûl‡W«óª^oà«ùŽ‘7àì)ŸZ˜ì¸À±Ü‘>ºV=Ú;Ìž=Æã° {iÐ숼˜:iÝù‘‚=q´ã¤wþ†4à ™pgÚup1?ª/^ô¡…Y}O4p(zQXIhà>kVÌ ô(šØãA3У³Dxe$jöèrnâƒÎ°I,Uy€a3 *:¼QÜþyòN4c1ˆÓT¤|/çxß õ·"ÏûŽ 1 KÝx·¤#ù4Y8%ªdóêK¶u[€ *)ßZüI_‚4ìpâE_Z?;•³·Âc„U«—Ð'Jë[²5µ=±³æ.Æ´Þ¢ hz\Ó8J`€Y: ÷ZõMWVw…“º 17üQ3EÑt˜Ì6+—ÓÝà€é”²BKíÆ¡¤V ð©DskxóÍþgçØjñ9ú²ÑjÁ™MérRÅR¡®êªÕàÛ§úYó,ñr—ÎÒ÷K`3•¦Ü¤—€ £ ®ØRc0ƒ¾Q'ç¾×Ò^¸+ð‹º¯jàÅ·‹ŒÅqOócr\’“’°ÂóöUÁÁ—e-§ÂYAIVkFŽZ±àOGÿ€m<$¼õÚÔD°$ÑÄcüi(R üŒÃg‘™ìÿ°AÁb‹ç²Â•#@£–.KÇÙX´p>]uVõ˜øŽJÛwqO𨔩# ¡kœ6…‡ŒìXzîõ=Ãê?fÉKgý 5o'~\#óäŠc·¶,> ¶£ËkÛˆy“nl9z¹§ál ʘ©9NB!/tÕKŸ¬5Q×>%¦Éî°V¾¾ËŠÕs¶5 ª§v©ýÛÚk,q9èEªê§'D%ø]@íÉsþx–Dßd)ýzÔR€\Û´4aM ¶—­@ÝyYûT¹Ì/¦RëQÿ´»œ¨’ýÏ D{kÎì6¶]Š•ù ì¥h>?G£-§˜oÇûU"è~R=RÔý¦£‡~SB_ŠŠÊS©:…Óèé¹U¦ˆ®ëï«oãã—¨k[¼R•yYý^¶"7en6Ì¥NÕ³ ",‡¶£¢3 à<«2Ë‚Ç_Pç¬ìàK*~4ñÅŽCÿ^U  u oÛZóô-TTOàt¹ ZŸ`×^æÏeJ™.Öð@$¡KÜñ’®|£N`åèi[ö=ª]ì aS÷¢¨Ä¨\IüïNÕ„:ž8Ú{Ìc°,’ôÖ&Íê@•¿ž¤l0DEÒ5OÔVE}éû²ë{Í5U O›žtýÐ1›wPDu¿^3;¿{ÖO’Áœ5~éî6ޝ1NpOW kÖ—$¼J*Ž@$rÃ>çsßc<ðFhÂq²¢Häm›…Z>c»öhõæáM  I ýibf‹ŸªG;ÜšjëKXèPü¤ÀCÿ.g-mÍRñeÕAŠŠ¥¸‘ !ú¼ÅFUå"BrRÀi¯-y(Öÿ.‚<=í¼M@¡4² ×fß Yx·¬üÍ«,+ñ¾‚ÞODZèÂ1‡ çÀ^ÙÞ¨˜$á´ØÆÅ—‘§óÍŽ µ AWWǘ T>McÝxì&Ý|R ë;r«Nñ­v”NÖ Éθ noÿ7½Õ¸ŸÛ9±ñLö§j_[­ay™×Õó€XÂ8N‰@ҳߞ¶g0ú€gé-¼+Ö¨JêìšßEkEì³·\ö^ÛIï‰HôŒ°ÞåNüߣ+yL>Víwþ7üŽ\ž‘w=Úi+_ïV‘žô>‚-MMYV²ÐîچRn;üSÿÂ9`¶*ç¤ý¬ßõYÎzLZYKï¹PØ=ž«0­çS„-uKÄC_þâ[¡Ýº]¾W[9ínv 57v4ÛÔ³ã#ö˜TŒþ;¯ð(~8²x&öU ÿÕ|/Æָ¢:Ýf=`§ &Ûít{–ˆóžž›œf™G.×zõ\´ oÔ†õS+éÖúIç=º3íÙóصÛìÝ^>#uJ¸Útª×Y‡R|Ù˜}•WF}wEÃÓãhÒ[lö†(Ú@:³‡â®ˆ~ù½Iᳪ­­ÁÆ!Íè” ·¶c7'€tÉiž*9¥AXÝ¥«‹(6€r†Öµ<šQå êN(Œõ8䮵qúïYÌ©J‡©D®Å‰Ã‰ ‚«N—M–fsDXw•çŽv4fÏÊeÝxF=G÷JôåSÎQ×S'½wÛZ•­Nâií»t3{FùÞëu(†Õ­[_Êßgsw·¾ç˜Ô÷:ˆ¸5çN¼‹êŵßnK@ÅóK!ù ‹Ü·Õ¼ÍêÜ«â1bi‹Ü¥µTã>Õv&b?ìrÏÚÜQyÎ’/E_sšÜ«êÑ=ž&=ZÔ½W¸#;¤&‹ºQEøx†pœµ7¬ÇË~)%-Œ9ÖzS{o‰g; ËóÝñ1f?}ñˆUttåeð­å錵¢ÎˆžÎé©©“si'»ñZun]„MÎ4 ü!`Q^ŽøyðG†d·÷LÙ©õÎ%e"P%ôRîhãVlÄ×½ÞÍ; 9’†µj½=¹rêèÖSV¥M5PôBëÇ£ô¦Ql#À´ç~ÞOIÎêÌ,Q¶óT?TcZݧ%Û²Ùïö$åeí¨q™Ø¶$=°p!M’B¯à|JLv5G­‰ž/lO#…¶7ù¿<Ütøÿ)6¾ÑKPYÙ6Ñ+‘ì<¯U³YÍëÑN—ð§UÇ$…“¬—#²ñV‡åa'"ûæUŒÐˆ•WTÛ9^íNL14ägŽÌŠ}w#š•nVæ} `¼Ñ÷¢&ë¼âhjC6¾ÝÓþD6)Ú#l=l]E©:+Ñ:ùn¸—ÇÅIYàK' k§‰‡ËÛ’³ü•”°È§ê¼? ÄœÙÐEɌԫ>©6y±™M‡4š¡zä©Íâñ6µEï%*2ˆ$"}–⯖äšÁ­—wQ?Ž[>OoÓÖÿðìáÕ¬häǽø½íjdýsEý¾&7ëà¸f'ñáF¹ò=N÷ ¯Ä%þ8d3”å¶SÐuÿò-_¤–¤{”ŽBÄ ›¼ù3-·ÙˆÊ¤Ú}NnØÞÀŽ²Û®Ø:O0O5vcqøH/ÒêcS׉JƒÔIv†@ßp‚\°%ýëjÃ:߉zú!]\û¦™5ßÚ¯}OM¥¼Ïw†y6l]¦3ZãÑ)7v#¯èŠç NmSäØN75!roOWeívôçR#‚À–lòlÖÀÝò:pÛ“o—ú¿š:zð"±y\#)Vè£E«»;«?~³mV7ïyyyb>áf²·íZ7î€ÔM!òd!—ÈV”e”‹…³´/0»òdFç•ÝzÜÝwUú9MqÎ÷°}UÍ~ì„°¹¬êo¨Óª~ðg30lĹ ÅcY‰äÄk8¢¬‡#·Ê‚_ζÙRÉ’¸Ú£v ©‰PÓ&»Q¯Ÿèüš6ÀCIVtU’u:*¶î„cÇ{ê³m*(@ꀓͷ[}øùc‚dØ\Šó(Æ"{¦¿Ç§±]Ýæu5 øG"ÅÝs <þNW FÔzl*+ Yïg6ʶ9>º±¯í©~ØÞös²«àjRøãžm@â$±••Ò·9¬Øààpc)^·#>Ý™ÂÍm²äôGîmÕ|T|ý¸)žY²ÝpkšÁ«f?ã?¡>ˆªª&´À².ÑÞɹ­é\I2–ôÉË×}ÛÀûœ &öÓwaWå¼@aEÛœ8V÷ãiª—¯‚LùØj!€–ÃlÈã ½ïå hmŸ°vIdš»›Š¢@¬4 8ÙÚx%Örz[^*ãÚI6£¨âÅÿÚF¯›·RP9[2¾3ðßiõÕ+¯‘P~«®á¡âiäp¤âe¿5 <ÙŠ ÚWÂB›šDöÁ“§¯®üÀÒNÒ©o^FšùdÖe,yõ\z5®cE“b¶ yf¡ ¸F@}åG o Ñ.8a}Ž/‰Ó?𸺠Y3¨U0©ÇI™ÏQ§¥ìU˪Vév9•ÝH&Ãùê‘ßÔX¾éfNÚS…H»ZøÈq‚øž¹•È_€v¿îεk Z=úݓ﹓-›CÎüþ®0’­¿µ^ŽuÂR’ˆ]ñf矬5Dû4¼šª6÷¶^&$€ P*líO÷jò‚jaob©) ˆñLž<^Ý^tлëSó€à£KoMgï÷C01YxÎŽÎH‡ˆ†Ú$jå7­fØÄ*½òxÞ½üj6¿K}@»§ø ›©]&äØc10´µŽz½Œèl5­Q¸IúXu~M”_”ƒêÞî—#²ÁÙ øç ×–ï#kwG•ðöXâîªIaA!W@°H–f›±Æ K›Ò((NgxËêÒ$ëmQQÑËAÏb’WÇ…‚r’JèzXò."?äÍA0>epõ“½³zwäÑôua9•»€nÕ»ØYÊ®…wæ j(êJ „C¥õªCy¬‰{h~¥ÊáÌieÙ7Oñv0²_ëqXñ~V4ãâ9m¿>:Å_rÍÉÍ»XÖ›IRê£ìk|®"Þ ã=~€ù&äܺ6p© R“r‡5’5ù*ªœØCÙﺾ¢4!2âˆÚY7IÖŸ¢¬y¨)¢ŒŽf´¯*ËŠíÇ!¬ë£¼ä=Ãg ÷±qœSy¾°_¥d—fx§ÿnU¯"{9ò=ImR4Ü_ã;u>_X¦5-îX>*§éG/†&è*[|ØLé«Ñu·,6øÌAƒŸ“{ºýZv1òÂ×fXµrlìs²Ìdjj!賨¸êþØZ¤ ¨:\”¨¸æ¥ÇIJ}+f“’ì,¹Å嬡/P^÷qØ„½ÚHSœ4Ö%=Gj`¥«7ß´œï`—Œ{„Ë.ýÌýä¡ñ‘‡®íÊVΈçÎN%ß·ƒidÕ{é¼wÛì|o›º„ðƒäêÈJÇ ãÓ›ó~Z6rDÑÖ²š"4ëÉ æªC3j®€åÇ.þX{·zš¯òûúv ªò›ºŸÝ Æâ!‚©}°Öã ØVrÀT9ôÇëUŒŸjG©l²°¡ß–.\®¸œT²å­;ëGíì=x—ÌVÚ’×{|§©r’ ËËÚ,ë¤ûîõdXSC0þ•‹Ú„:ªš¢{zuŸÅý£Í«êåùŠU†cõ\kq샴{•ø­ÙüM ï¬Î¡+¿r?¶™¥è#z RÚÏëúÆ#–q‹¯eÜ8ÔÕ„7?:ÎÞ•P2¼CbEE K- Ò«iK;¾Ë,!Kᦿ`aÚ¹ Ò 0M¦Ñ¿Š5Œ\«hËGÔµêÖ;hò›€³cÿ¢^-Hµ½Ž2Fi±¯œ@TðÖ9çÊÎï2dâ7ìÙq½uÂ\å1;í<»xmã+‚^¶ÔÊ*¶t¿ºm5A€‚e©ê^ÍDÎR$"{—3ž²8.yŸø%­WH·«Q’¥ «:u µ ¦ 4ïÓWeuÜ#ÕÃïÃX—ÎÑ0ËOºèixÑ¡‹À–Û¾N )ƒõ(÷ÕªZG‚Æa:'Ê &Û!q(OW*˜°ðÏø¤òÚQöìþ¾šB¶„¦j™¥Î¥yê sÝu/šr™ÖèTÊ©AéÝ'šÕøÿ{½ý”µH9ç4øQÁ.óþ¢ÏÚêØâ €!¨ã jÜçX)(ÔÌs¸”ÏÌäþ©ý-°Í䊇‚²óf5ɬhØ L®cÅuªÑ±Š+Xm®ÂÌû,zA9§^'k>>lØÌpa*®Fý£yýïew2¡:‹Þy©ÆÆH "Æði«-FùH Ò«Ú›ÃÇ´+;ækæÏD9ÍX³¤†Þ#=íIA½«Ósä0½þøW½ÕAÌ QÈã"Ë&{+%TƒN­6S¼ƒ­þÍ²ŠªrßPÌé¹v?çûøe÷ÑŠ®óTKÀ£ú¸uŸ¹3Šz€¤Ë@Ž {°ñ¯±pâìû“í•7p]7¤AsNYšï2{žMx±?—u’V½TüaU*°T×QáPsO™$'/ݿÿ¯çO8PÜq0ÎõÝu;êx½Ž—¾ë>CÝ˃-³ÓQ$¨ê87`c›_? oe¶ˆáŠWèVÜ`;;¶W·œTe·QåIጒ²U˜rÀ|²0y40¾)–¨o~ ÿ“}£žp¤ö].Eܪø­„7áµ*ëµíÁ²y<†veÄæE¼qJÙÒa»y Q•d%r8ä¯riÐ0Rór,ï ªÙAÀ‰ËCp8äÊKY n T ¢¸;§÷3xôÝ„l]ÕømF¡ æT±‰Íw;· s`©|7d× 1'ØH«¡UŒ€Xx¤Öî×Q0r“Ú¨Zt*–‚~Álçú:ÄHbW»×»þÆ“eJ °—]ëðoÃÐ'» úÊC´ŽEîb ý·ó¢!«wç¡ÒûP@çÚ—¡pÐë©/qÞ ks/ÙŸðøËˆÞ Ü‹£,Ê*ôËøŒ#ÿBzÒãhO÷ôö"2°·È'zP·¯ê‹¤s¤R.ñSDÇ%P“âMŽaq»*‹¶<¬•¼W,NÉצ1ö´ê>ø8X'Õt`A%G%à Åö[í3ÜÀÊc9¾ ø›­æ&e6Äè†qÆ ù= „È®ä ¶"0ü!¬*¡;·¾u@?2h2‰Ú޾è\«ó:îß2‹#Î䚆wk{Tæ#ñ<R–  N‚²'püQjÈ36®H!Ï4! ²@–nïoîb-¨Íú,[Õ•óSâ—W–_÷‘ì‹CdÄ,rB\ó…)PI– -Ê:‡a˜­ƒQx²ÝS‘G–ÞÞîì§þ:¾h8ó~›wÍÚßs-;ä‹ÂöÝãíæ€•gózc*¼ê9{ÜïiÌ×°"X Seu-E%›”îdðÉ&÷l–º ÜÀ1én¶’ãpJô-—b¹¼ÄÇÐôE{,°@®1:Ú_?Ïø«âLâAX§W…Õª7xƒp¬¤®ÖËáMo—P—ö+:émsž,ªê½àºH ÿozßæ ±KÇ3 ±ŸuCÔ^’áyX<îYÉ#ß]!fb’G¼,³7IÇ:ʺ/ØK 0&”‚ÿ“^™Za*O(êÏÍ)eÈk¹¤ÉûÔÒ¹‰¤qxx]©šÂB.T´å£”á(› ^ÛˆGwW}õ® ™’•EÑ:" »gõ°RÊ%ÁU–äAØ•ÿ)†?§iƒ³ô÷"R^ÀÒk¶±‚MÆ«µíîä¡7Ìsu•Æ‹:÷ïšb@։Ћ¿ˆYN›xõ¬_yU&Zêbê™QNêU›Z¡ß›f¥:úf—^Å$˜d<À¡¼œ¾®Š*dõ,yE›hÛÚàŸ5Ö7{à¤vöå(ÚÔŽô»¡†¯HA…ò­1oìÙŠf:%hV®µ8üÓXeòöààCcºH½ËckúZÞž7<ú×½NÄOˆÏ$ᦳq^ȳ¡êáiö;ìÓ‡@X+ÖQ*ó”Œâ3Cá[`-Wß[êkeN'è[PÆæ¡)=ëZ`Ê>&Ï“Ã/°6O¹Ø ÚÃ~£]ÚJ®øœݪÄ\Öö¡(‚¼áK´¾ÿUÉÚlÚKɶ »‚D.ÍšÁ Ð—ÈÚŠí…^øh¨ .æ›!9ï<ídg”åhiÙ @àyYQáÁ p€®U[ /(uØØ6ÓIÁjUDÇvB§2€Ì-ìà3“+ÓÛF y… yó²³ÝåìÊç‘ÝØŒÜ·àoî+j|γYg´,öz]Ü?µ’¥Y`Ëf½u[iªcÄ•Ú^ŽZç%£»-Œ›¼¹ƒïÌ£±K i©@T-¤xÀú„Ù£iMÚ Õï:5¯›- ·Nq=ªB6ÍbŽHBvb ÄüƒHjE3w"&KØ3êë±®tIðp-%¸¤ŽìFÕgkŠÚ×>½.`CHºÎ7e¤…¨Y/ƒõr8{¡_Ž£L¢ÌW 6umöÎæ¡TnCý¡ –<àh¨g@S¡í**T%£eém…U™:}-ßäãϹìqŠR‘tÛ,D)Æ#²:.-1ÙÜP¿íìÿwLã=½~ T·íà¸=ž×»¶ŠŽiËÝ ùÁ*¢›[˜à¾ÎoŒŸxl·õi>átFO¶DÕvbÆå¸&äÚ6Mb¹úTìh`ßcÅHÈ2F]™¼ÎC¹Ô¾8»;¯®ÜÜ)rOÜX"¬sp¬ïÚ¬—,XÁùÏÊ~µ4Ø:l‹®q²çûŠä¯~bv>ÁH…>¢xq=Ú¶·-ÀhjèðvbOžwÜ5mbºî:íè™=…6aÜʈ¼L˺^ä›WU~¯"þÖaáÁÙhb1V{Ü#æò(îK™Pr¾7õ¶ W•X)ªZ²Ï™àI%E˜?%`ºIâµáméôò(‹Â31·[G´9ØÂâ¯jb^4_D©ùnP?(¥N\WR·Z×<Ûd¿$=Ðn‰-'ÆR©ƒ¨Ò!8À§;ÞE^™[T.ÈR‰ãåyµ–ÈäŽInÅ%"àñåyY´©ï§’zÝžªÕ LL'!Þ”ú­6žªtUs7˜®ÂÐ7d‡'ûC´‡&¬tZ¤£tº~穪{v´µœ"– P+„ú=|*mÕM¶¬ýxÞ à–JAŸ‚‡Bù®ïr$SW_î÷|0<[_¹¢ž :’A ¬õ ªô¥éDûzâ#aÝÚÌ:Ý,l'GÜF£Çp\äûy« °€˜·${îéÑwØu”kû26‘’ÐxŠ ™¤x!5ˆæ´·Ñ[ñ: ³+'ûÞ|F$ðØ–¬cÂý>½ys½•#ZžlBÿtv÷¬„ 9ôSñäDµó«–É'tðÙ¢d» ¿©ùéÃl« ËNåÍ]Ô\"Y»íIæÕ–kâ~âÞm}Њdû Ù»Â9·R›9Ùsü•HiËúg õöe)]² lQ:᪷z3¤zÅ ,‰Ü´+³ïpl“Gâ6AëíÉ÷³­Ø©ÍÅcR¿Í&36´%âäûŤ¯D² ôèÒ` ªºŒ¶^ÄOÐxÑã¤)Š/«„ Ç‡¬²"ß Fƒ£½¢Çóåmû.k/(ÖPvVâža*¾¨4ذ¶å8+/سÍÎrÒC¥8ÝGnîFÇVbkƒðvx³Ž¶åS>ïjªã^³š¢jw&ÃE]8¬>V0J¸‚ƒüH|$ŸpZ=³ãÚìˆ#–L0øËSŒz¢tû¤Ôé³é’ð~CÿŸiöfÆmƇ¾Úâ&‰ j5?Üû¶qŒ¦Ò˜žLÂejñ´ëMNÔà°éd¼IHÒfoŽªæžGT?[¬¶–ílÁ§‡}=ñöÐ?}š™½÷€ú¨`ÜªŽ½-gBù~m5œYðèdÎp•_ 0›÷©r«ÐrŸÊݧU&¼zî<·bí V#¯ù2„‡¿K;¶sr_Ä3ÚxOÌÞ$1ŠlvaÑØOîö$oQ ’ôNC½R¢â&ÚŒ7pSl Úƒ„«O»Þ’åE…)@eI„Š/t¨8Çî¾ÐT:)oÜu¹N¤KÑÀãàÈ×lÍ:úl^]¯›[È.ä“Þƒu61—àÞi‹z]I§aPb-½eA/ì\¼í"ç°àl§5ý^[>‹ÐoÏõ’öÑ÷É«ƒfYùü´†ÒùÊ•_¯´œÁž¼ñÔ:NÕôxÌUBÓC0IKoÕ©á!Ö…HÜ b»n$¬d>Å-0ÄzùG–`?*`ÛÂÁâׂÌH]¿¼-bMÔ¬!h£’2¡Gü¢Â¡þm6Ьž«èàyI4Vñ¾ªÔO°¢äY3™×ĶÉ=žc¨CÃÇ û,ìsPÌ‘OÝmî+)¸y²f[Væ…ðò+›dó³ /:±S«§FO;]S.ÔÌ^xlU†ªpìéKf1Í-ª†ÁÚ4âRüåUFM)W‚«r—ó-Pa2Ÿr·º;Ha’ÚYM¯dý4˜[F†[l ,2!A±›År)Ã%Ä"ôŸîkÅtúŽv¹•Úé€}7ñGI‡ÛnÖ»}-$úËÔ àQ)Á™³BhýXÏCµa'¶Çsë*‰²ø¬î1{èÜÈcßž]i¥wTàÀ‚ª¦ID^™ŽÐf8Æú–ýM„«q^6c6 CQëg$Ø??¬¹þýQnáðÏ”œø7Ï?"8ñožHnÂÿƒ›ø7Ï¿© ^ëï„&øßÿµ2!eÿåÉLp§ÿ…M{øéOâX¤!ÿùƒÕ˜`eÿS ÿæù£¾ÄÏú|ç¯þÝ/”îŸ~õëß÷eÿ÷”Nøƒ—NÐi5~€~OŽ­ëzòÝú¢4Y†Îœ'É â÷Œ|ò¨@–¶JßÎŽ<*£ÉNEÄìb‚/s¡¨¤«öktXfž¶Õ­‡¼FC wH½ÍõÊŸ:±ì¶±¥-¿P(»O×— (ØÑOÞ{ûTú‚½ƒ$°ƒ$ײäãØÑƒ§®;=IÖîcÖý©í|à¯ey»gJeI:e ­ÔòL{"Õ0w~=äºN§ŠçÀÏuBSÁ¶J–sP![ÊáÉ,žàiR±º oKKg „¯Â42ðˆësLGÈMÎqt2ŒnÄMož3âÝ»^ÕuO•¹…E—ã^ä¤hGÑ@ñÄÇY9\@SØ3×þ½QÇ9‹2ñJ­Úô6<™}Ï)ÒPOîÉþ„Åz]L½Äoö*AAg3v”ýè;=j/ܹõÔwvqÛ:6G`õèyû;Jlc¯6d;áâtlÈÏÒVe{ÖÉæz<ª OSý9×}/.JÃ$½sc-Gµ ©+1;ï8ÁyþÎ ¢½¯þå@f_Ú¨ÚAÜeÛv¬vØóɦjí;N+üÍa­ËC6»ñíŽeÁ¿žíÛ^ÿ)^) üÖ¦fsW(6Ïß^²GáÒþ¤y½põâdbÚQa*ží³aû8£s÷ÏÇ/n;<²žÛö¹=ži¨á)¥# {iþ£C^ó”–—º‡iáÉ6Þ'9ú‘ ³Æ•¯hz5»3Õˆ&ÚDÅ@·=2·µ‚ÏÒÀæFï‘íé÷x¡±&Ùò1È+|œ·° à1.‹'qÁÅÃŒ«:£{\Füä-{d´²U±¸ÞoŽž|y±Rr-4ùЙ·Ížy4ñJrEØî¶j„ÍM }¡ÿ¼: ÓãÅqóMÁƒ9¿´XN‡±5í,×pv÷òÔàc_r™“»ƒ”7ý²ÚkLj.aæá™r°g°ªö7‰„k–ɺõµ—”gº+¸®¼/™¹•Ž‹9øðþ3ÿÓ™¨¯Žm£Åç‰uþå.Ú“³B«ÃðÖÑ®y$óêù~—îütêÓ:!¬±GŠÿ‘¡ÞdÕté›aû1³õ+~YãDm™ Ï·v{ïÊE+Vœ«çxÑR³mv„_?.BƒÂž•z¹¾Û®Œíðœ:ŒüðØz¯§³Ø£Þ¾Ñ`Ï|¢Õóµ/¶±Æ¼ÕïÒå•u?¸¶hW­Íé©”·“¤4ªÄE".Œ=.ÜsßU1HÍ_õ ° ž7ïI–{›°éÑŒ!Ìî”rœ½ö˜ÔÕqV‰æÚɆbk¨ ŸŽ@íÅÚéç|ƒMû‰¨ý™•‡ô—nÏ!X••XÔ’I*xx¦œìïP\ö\³]ô<ÌìØÀŒ³­ÊÑXÉYIá4”Np‰”a‹ÖqS»Fx\ã%ׇt(¶ "ÐõÊ£ ^®MoëzÙ#•M«^ÇtH\µ•©¿{·Õ‰í{²*湯·'Ïls…ÇFWT×ᣤû,)×¶¦=î26Èãåù7ëw7à¢(€Ût5¼×R8}ÊNþæÛÎÀ¢Zë—¶PÏÍçyögõí±·¯9ÇåñvD"ÇënöR…¨šf|Óev·Ê)zLUƒ¬Ä6R{€\kÏi" ö¹,K;j£W~¯ØÊ¬<Ò¥)Áðî Ìg/©ƒùšmûŸÙÖ–ìw<Ô»õ*žáêŽnD˰+ò([´~ž/<ŸÅ¼ì›€’Eÿ³3[ü¹µàQîÕõ›,ü[3ä¥4­?£i0 MâI‹‰¼7· P4ëõa€¹ïU.‹ba÷(à½Û±òò¦Öý„^ÕIšNü–˜cë;†ä•@ºÞ8šœóĬÍ:„C;hýH¦}º}…WõhuãäÂCп^}íIï@8€ šeMG·BÊ"L «b»¬¸9Ud "¬õÜŽ¾“™ˆqZŒÕ¬³öùäæ=ÐóV×6?žÀÖæÉ4)ª"#•½$– Õ“¥ûwNÈ@º6åßõ85qO›;ân·Ú½à><[¨è61€v Ÿ+L½úO¬‘êùYÒ ðíį; ÖöéˆB±`¶'+ƒÌ®ïÎ Aã$Ø™6oXû, ÍìXy6À(L¡l>ËŒ©_ ÿµÂÅæXN^ FU¯áX5‰EéR[Ö"d»=<¶›¯4áÑ^z!n;V‡xœhjwOûÊDbÕ 7kžC°HʘÌcly;âÄ5Rö¼F¾Ovf÷8.òò‚˜·V©Äx¶ÿº²…Dk«üü¿&Ôå˜ÿS¤¬êS”›–EÝK"/~ŸíŠïÃþ³SøÍ: lG*ÙåÑ$~ %‰«Núڬ깟Öê$&Ý”,D×Õ‹*`8jl²NÏ[.ÕÏš cšN<â¹\ùìVqðÈÑÑF©éõ”ÆI<™æŽ9–‹—À?Ü·.Rƒ gòûع*D‘§3\Æ«ìù·âúEד¤ø<ÏÌ”EÞéu¸˜œ‚ý¶™<ÙÐÚ±#P f«€&\Úb+)„^× JÃßÚ}ˆ–*üjúÈÛ óÙö—§ ç¬í4˜mbKVÖúUŸ<€Fä¼Ä2oZ4ó^Áòüø€äà9ÛNž¤B<ð+‹±•µ !—Ó¤‹”^Ax?Ðþ´ÕdPÝdO³\¸ˆî§×,"8»Òèur#”R»pL¦ ËÀ ¢£Ùóèc[—Ñé@þü)Y!õ±ßíÚI(Þ<ñNICíÚãÇv»¦gÞZNsPï»FæÖRòézUªMŠ]ðAÇ?vÍJËÎg¤rC‹Ç±C­m®¼È-°ßk¸AØ¡•ؽl|wêïi £1Çå;`¤ŒK‡”}»!eo|/›×2œe@šøQèJ»PR/?Äß‚à‰u²¡ÄF= XU.H¨/˜ä˜9¡Õ` á±Â舵sñ/ì}w®tÀ "ºmcñ€ÒN«!llÀêhd˜ºÙO††pöpüô|cŸ@VÁ—-«Ê!>B‡®CZï.%x<8ªö$ÏÕØ}¤¶×®å½v·jLÓó :ò‰ÍT ¨ÂäWu”y`Ñ,ºØ÷3ûÅ}³Ù¼VÍ¢ùñ¤œ;)ïRüŠDØèÄ )× B·¥~ùßp;]˜4Éh8[âîM”° £é¥‚Ó«3D0ˆ‘4 c÷ð‚šdÍ–âǦµÊ¾˜=ÞZüWi+1.ÂŒÐ$Õ~”öäì¶-65’ì¾K<Ä`™éåE-§/Ý Ï$L%Õê×›mcÖ&†OÒOE{zÖâp_¼/8Ãgµ€‹ªQí¥Zœb0Ëæ±NèVᾬi-#š²r]<Œˆ<<0lYïv>¤Û|V

åˆ:Æo!ö=zŽZÑv—Û}±Êš’hÊ9•Œà/à€Ä•÷‡ï½†ƒzÁŸBB8j)„—U|%¤ÁÝÙ UB¢8Èöü°+<·­ö![›Î[)µåø¶X!üÛÕ‘ràW}>«Ï,¨$O3}VØîxº3KN[E !®RÉļFH €šh2Uœc“Ø¿¤\NÑÊån.%;©Å—³š^ž‡&±|ÕÌ iÜ€šÓ¤Fôm›F5€— ÙFµèàj§ÉÐìÆ]ðƒçŠöeu- ¿B„W;G ¸dÙÇ Í3÷OêŠE ¯ÚôÚVõiÁ=éˆoŠ7ОÝïÑ‚ÓRGF-c.6CÅNB¿òv‘˜IÍ2u¯ÏòþzxŠ­™¯{-X|ÀC.þµ«`.q€ ’§&s·æÊå<6Ð6“$oè¨#KQµ“‘Z'Zèò§”JYŽ&äK0>.ÆâÛQÕä €GwX‚) àzÃWaFN¡óhl1ô‰1!ßðeǼûT ´0qT«q «H™Eöåêü‰&ÜoÝgµ½—5ÓQùª”pàT´¨¤(Dtoƒ¿Š¯TRÒ:™GÌý.X$A_õè –SDeoRÓŠÎVw­³¸(^äÊ|ëÕéÁq._ŸÓÞîËa³b·”}ܤ?îªíòjlzM.ßÅ:dÞÈç³¢^s"o’%µ4*hB¯‚ŒÐÀA[79ëk0'£‰:¯N»í”õÓXª°-ÄŒh¯fx•>RðënŠjQ|$ Ðä¨Û,Nù'²gSUÏÚœ>qj²Lv×¶ï¶$ä^ íUdÀl½;Gc«\Q<–UDQíü–˜ìÓwÏÖ§©ØWð¤)iìKêJ¶N+e–ë¥rœ"¶é*ššž×3Åh E¥{ ìÃÒár)Xªºå†þÇ>vc±˜^ŽDczR}šx§ýrÊzé:ÔóèfËö~mÿåvê)¹®KdýŠƒšŽÞ‚\yM&€ö¶"Q´íâ)XøþÄÔ¤ç†q/×™‰¼-n°ÿåóT‚-êOäx\Ñ?„ÓÅÁ¢«ÿõðœ–@Ô®Ü*$²zN7ù¯ª}È‹Ý6ÆÖkŽ–çNûî¼:ó†i\:'U³„£­$¶ÖùÀei9*ÃQr’ýÖð“Ue‹PsVüE´ñˆ±ä¬AHê<€±z$<ÎFgûÒ>;t*ƒÇmìýƸœ{vg9DUû½ªŒA6‚µÆQ¹0Óšy_q/Lh_„RBˆW£^ÖAnâ²â£z£ÊɨöÊ~3InXô˵8Zó‚¶µó†ã³ìŸMV¾|p:ÔW„Pƒ“Ù3Ü ÙX•F|Ó=s‘”3r~AaA+o¤wµa¸UÐHXŽèA'™[5ø©áÞÖ—I‰z$ÀòÃf±²}xL¹ÑɨçÜd˜€Jªs-÷ ­“&I›NÆ©•ᢂ‡žn«OXjHÁùw³à®3pwgßS•6—e„2êcÌàòˆaPD“›µVþ¸yPIŸUA„zZÝ%;jYS&ŸBùÛ³o£&1ø!î’L,Ág¿°Úq7•1¿Âö!ò(Ï>'«©èÈ«ýœ§\=èw¤ ÚŠúì¯Éœ ÙAE`Ë”’Úš7nçîœ4xë¥ ÍàfˆòDO!%¾ÑY'~˜žÿ|G¸ÐØÈ–WÊݬ·ŸÛ/¸€ˆÅ9‡ÎƇœè×!ÏTÝíê6µ G·Â(³½_wW[uÞ ª¿ø¬f9ÈÛ–mhŠIrïL„Hs¹}wÕs*gùè¿ÓuWðUæLtäVtžò9 "0 ’hŒœlzáŽÔź<ÉmÆ­n_„]ØßPóVјZÎ0Ãø~Ì£“$”©}Æ‘m·öË HÐTµƒõu¾LðɰQꙊ{ܰˆÑGá±ò]<ë3I÷VŠ•m*ʈ«iÅ {|üªÊKàÞ„WëŸÛRO¾UÒø8·ÙŽs>ŽR”Ê)¡G†ËØ!³jéÌ糸T3.UµfEîÀ­ 8í‹]ÆŸóZaeÅ[óö=ãx‰S)9Æ{±Æ÷Ø®òi-QUÔ®™+ÃçÓäÎ[kt=ÜD®n/6ÙZC¾œ vÈ€´yÔG;Äc¾°=õ˜k~Ó©?|ÎpWµi¶süzoÏÇP'…‡i6!­UÔ(„¦r=]ýùÇ Ï£púø´‚'2Ò„ØY¯‡X]è8³ÎÇzVüê äÖv€å§l’õ hœ4çª%—›l‰ ̬ü¨u|ÃèÇ—oÖL1ªvlëd~ðžˆPUËá+›²U;œÚHJq_O€º2×jhõ3XöâÛ}zÜmþ2øê°.;üIhE`Ì `2­>y3:Ü]!Ûš hÞX ol°ûƒ9|÷&;š Tk(™KF"2𢰟º^ŠôÛŠò­Dû¡¨#ù¸ÜU¾<$2}žÊCñ!]5¨KWÝ#ªF<¤|ývÄCÑ|žØ8ß?ÿ®¨b…çÿN]üHZ¥æ)KB©XókXkޤ°‹ƒjšBøW¡ô÷0Ë¥¸ÁrrË©ãR¼ `†S;•ÐgóÚ<é¹hmCDâcÁ*•̤upç!¦¬q{Š`Ñ"A*"à"yà?*¹ñT¼g¶ã" 5m¥ulàâBU‡°«"•Sã~{ÊÍ”É0‰«úÿzœksH·9§ÖnÁm(?½@UYÝÑï¹X Ù!Ç9¹=OÅ‹½=~ôµ_IV"»ÝÚ*¨£¼I3ÙyQgÕ§" ^åiŸèOv©!Pt¬ô½TÙgYôú©0ÍÒ²ZU4QD›Q.ª ®=ªº¶»åUX÷hrŽ+õàJ=ò˜î\³íƶ5­wè5ΓÚübR9âq¢T„kÃv—UgдE$¥3Y?,sm-¦»ØÇÌ¢ÿx¶Ëa9èûE¤Ì<ÕáÆä½®eæVޏ 5‡äÜ u/™Õ¤&š¼Dmœ¯ÉÚlÃJ pd)_ Ê‹* 8"ûE5>ö*1ÖR},ŽY>0_da´ ‰àÔ§O=œ€‹O<ÍT8O¬"øløÅä9 7¬"E­|€²`Ê«‚º‚²âZFhUÄÀÀ_K,€ âƒ:Ã2š¤Pù©·?áJ’u‘±—8³OÕ¦ŸæÁj3#û‘grtGJ ”½v_¾žsŒÔAc—î|\Gbâf˜ Ø %VUHö²êO$QÄ%ë“»'V/»QßlžKUÇ¢{ à4XÄ“íy§í%gtß&FMbÚÝØ`;âU¼ëìqKW@dÙÒJ Rð٬тºÉŠyU¢ñ¼íÚPÎíñ‚ëÛýÓ3|¬=x”S`\$«®$EŽ¢Ÿ›½JÔnJt¶ÏÐaÖ'–`QÍlPUJY©~ëƒãœSj~e;¦KD…Z噜§Ÿ¯`Ý dü,'ËNºqÞ›•H¸8¬/+;)“zÖ³¸q,.wá~€¢êþ]ô©×út¨Im UŸ³9µ˜Ö¹mÇuuÈj9šþ¦Q¬f?zè ×ÌÔÂÂÁB[Í£‹T!qäaFÝs$òoé—g>ü±‰$ß{d3•ÍÙNʽŧû<Ì£G2y}ŸSi°ƒ5@iŠ›SŒnÜ/hDžÉÎmNñÞÚ~=@ÎÖdHÔ±™ hãjŸ ½à@ñá Û‘äé©ß´2Vã´ÒG<#ðæHHí /e|amQ¥ä3fƒ`ø¼‹¸í]Äw²&œÇfG5>“èa§¦ãQ.’š–ÜlÏp{§«u ²ÎÖÿöVB†dã ¯j ª¢œÞ0ájêO¼Å¥®<;ô]aÏ=%¼«½ ¤âQg’â5‹h KK/á´Nì) r9ûœ³3€Ý¿B"ÏUµ k§2Ø‹àg9ö1kÝ× ¶xÞïZÓzA9Ÿý*qN>«¼¿2[°Î¾}¸Užø u„Cº`$IERöÙ«”¯¢kÚ76Œ„)\ßYÛ8³ê!x'H|Àp6`²=Ü拤ȧ^Ë—É6ÃyêÒͳɦR ”•.ù—u;½Ú­°:Í9E›d_õaÉÓ ÇOµnµ«šV-^º Ѩ.ø¡yºê2YZÈ*‘?î¶T›T@ÁijB ÆB7u}Æq Ó|d±@” ‘'(˜ÈCq^”]nÃGƒHX–&Fý 0ò 7tUç7À`|Š€ö´¿Nþ¬¡Ø’yNX‡a¨ì¸@ù9G•óº*לáÁ3¾˜×b·V[ŽÁGÍlNEI #ž/ÛvUøP·µ[Å`;㜣'ëWOÄ9ÏææàEÃ@•>x&kꞯ£çú¦;´«¤­7V¢mq¿4ßzY·¢òš|[T‰Á“x8K!” ¡=1€D*éQõû,~Kµ”ËtZ“¿<ònDüãüs‡1ë?6ŒYÿÁaÌú‡:ŒYÿ• cÖ_ cÖÎ0fÿ‡1ëéø]ÿn ó‡=ŒYÿéaÌúÇaÌß cæð ÃíŸ ½ï_Úmÿžÿ÷ÿùë¿úíïÍ~÷g®òWóÿýùßg9û·õó_”Ÿ~õëßûÌâôçÿþ·¼öÿü7½þô«?ýÅ<èß›M?ýê—¶ÛÏO¿úÍï;tÿùï›rÿÅϼù¨ÿø‹?r1ó‹?ò»ÿéç?F~øÿøãê¿’9T‰›2…pá>"}%hŽcó* 2:(XÃÕ„õ^?9jäü,D¸àwCß×þ^¯I¾hm°óáåSY;¸‹þFÐÔÕÎãÌñ¥éÓm%|—PÃ9…)¼žr¨?öÇf¬Ïƒ-kƒÊDëêà¸c>ö3Õ¾üÖßÜקܯ} ‡Ûžþ‹Y!ª ·7,˜ ý ,@M•üeÞñRg´Ùg{ÍOcØÚÛfS¹&/ýw®®ø¥ã¹c—Ý—Öuâ“äEÉÇÛ/`Ú[m#l ,eoµrþ¸>W Œyš ÞÜGumìl÷½F½{ì,‰ 5ÿùÙ¶ÏQʆ‹^¥n«”N¬=“w±´Êõ„Õfó7G僧ò¶T“^UŽc|5ð¼n‚âSœK)Ûæ4¯.Yõ›…@¤?bøÎ$ãÔg¾9ídßÑ^‹/ny_ßÐÑÁæv¼“nû‚æXë&^|Š­zÜ›ì¡útß›+ÿVŒS)Ãç²G_;¨¦š¿ªÂSýæ/¹’aj;¶JQk‹ïTóI«AaIbór€gYGˆAÍIÇ7ž‹²Ï…;X§M »Ê='gl^c{~\òl6‚ñ¨È N¸¯áúk7_\åIÏã åÉVXQ%3-mzwg¾­¾zŒdmŒIÁÓÇ_öŒõ K…±iö÷ޝ^m­®½[lÌ©\h{âVVëþ,CYÂXÕM|¦nn»t$kÕ|Åîi*ż¼÷qÁ[ Õb¸ÊdE¿mDx4gœ²eû™yE_¹îo-Ok/,ókÕÆ øÌÏóU-RVÕã”´¢Þ@Õ¬“t™Í©!édeѨL‹"¡“Ä* 6íPÚ&¯µB¬ìg*•TG¸¼YcVÆ‹u_kjjµó&^=ÇÝÊú""Ym³>•°|éÁ™# Nž(b§¿åRƒ7vÛ]úQiÛ’•C¶î—I›ìáO—‚´K?Õ{ó= Ó -‘ëz.º$±çóiž°¯­Ïø²ÕòzÎoÖ7É¸ÐÆ¥òØçê‰l 6Ý«ÉÑÚlœ[i@6Y³Ç•EÙŽûôBGC›¯ˆµN}Ù¸šœ‹º ñÙC-¼ˆ!,d ÉåþDÉXÞe  ˆžZm6SÒQèuj¸F3ÈP3\ßêáèÔhMgÓD¬¾í1¿·sÐëš+^Û×á¨rñÓçÝŸ1sáVàÇýÝì';ut’TCíþjÕú¸öY:dÛ™¶cÂÁ‘ižü=µ¤}^ªÎ´}oÃÑž­bá>-Ñ“ ü½ÎŒ¨ˆ{t¼Ï{¾é;éús,x«Ój’`ÆraÉ–D°áÚ£—´0ºÉ~Š¿~Áj[|Ðô¡"„ª±Ÿ¥Òý÷ZVÕY¢¾•üŒšß(J?²¶_Ÿ ÿØÍ8uTæêyóNýÈ j‡ÅC?ôÏP"{ÇxÆnÏÚ*éòÊD—®\ O¾”cGXƒ´¡“N<Ö~Á!„9oÈøÕ°YQæœØl'$šv»Öx¯ [ H&â‘$OE°­g¶ LÐw™Œ}_lRö_P .ƒ!¯®“EÅO¹ mЈXkÚè)ïmßíWa¡“Åêõ8ÕÿžZ½&„íFlZÕ¥¥ñv±6[Á¡_FƒbÖÛôŸN¨=?ΜÛÉF'¼Ý³;ÂÏÓ:JKËR’³>Ud/‘ö§rjžÑÞW»sô SNAŸ”ÀÍ Ð“†” J/[ž7Éåç/2Ùº:I/{¦8N/$ØŠ@AH%Ú;ÛÆN*Øé¢¨ƒ;AµŠ¬˜&[´>E—ûôHy;ÿfÃ4éxz;ÅúѶou­úØŠkΠ­oÞg2~hQ¯HG;L[³F30°9I« ¾†d·²úésüÕÚ}UGÖØ %8ŠOfpè5êsò¼6¤ò$¸ûy¦+xGöoý£@j rñÂÂSfûƒÊªJÛª¦º)á{¨z°<¦túlG½Ú=4畎[±åJØÈöyØœdf-ÌÃYº’ÖúݺL@ꦦ'Mi€ÙŒö×x%`ï©ka¼Í­Ú„b!o`‘hH…{ýª}4Üc©ÙJô×ø\Ý[¯ÙõN±å›\ã!ÿã»OâËêäÉ\öD/x±úàäèÝõ°2•Áq»Ê€«aå‹j!‰ Åu.³^£!ž¶!Q£"GR¢[.\¼ü»þTz´×8j°‘¥Í½ $ñqø²~:^qÑä®YåŸ^2‘Ô‡öhÛpÛ\>X&¶Oìþÿƒ[4œ-ÎwiÑ™`÷¤jo…?Úm›«“‘¼X âq:í†ô5õÕyqG}?+d\ì­ ó U€ó(¯`í£Z‘‡„¡<–døìl’É:qk™·Óe+[}}[B.xJI@åøo¡UšÁÞ¬%NæBtª&ÖO¡½ž¿À³Õ”ÚØ[áQõá½Aû\g굺°%[yµí+g˜…¸seM…ÍJFHºÎ é,wvÑÊ!îÀÎÒ£Y‹*+À™ÕÖ7•¢âH5knc^™¸ ¦¸µ)û6U’×#3Y+àåèsIFæcôkØøæ°7» z\ÁÊ=Ûõi㜽uf}˜.™…ý9Œ_wbW½HÒ;’l¯kÙû9棑/Åá¼&ë£óÝÃ6ßTl¡„­èÁkDRï(CÙXVäø‚¢EÄ2ö„bÇ<‘U;ʺ;Øö<ƒKÝVáXz „»©’hU๊Âq5¤ªš?7€;èu¿Y%Ù Ø:ôK/˜žmXžqõÏ㦴ÎSé “*'â ?lSSôÎ㚺X’lT\QÙCOfv&¼×¥Ä׿¡:ÆceØgÄ.ñÌÍ{—µÓ×îÑÊ]«dý¬7%ë}ùÚX¼°àÁ+t†YUKÍô¯W5ó¾ÏáYP#~Çâ³NbMsk\[‘‰2޽f=‚VäuØ:ƒ©ÇÛ3 ~Wè¢ly®ÌR†¿`;4yfi¾³¸¸‡c.ü p²õ~7ÂîêVku\—¦¬ –2Ô¾(RÅfU2ú”­}•ŽèZ1’$zS‘(èÁašÎK娸ԡÝG¸QLZ>í±ºÊ=¢ëÿR¡µ§DpöH ª<îçEƒ±ª#yõ†t^f5ž'©¤8¨·ÍC$6~.04øe8† 4æsq¾¨ùæN˜œ¯»¹`'‘µÛO´¿7Þ²-I4j ‹E2Ó§Eçg?¼R'žµioK‚.Ö»NûXð‰kñê·6ñC÷bš„¾ö‹Tðx¤ž:¸?•ÔáªíÚÞîÊSôu€¡e^™ðZ °ûîä ^gpWSù±—A:þ`Z  î¼\»9µžqíšYµöõ]Ûº[ßa¦-†VàšÎ1Ĉ–}@ÿhpí%tnòDúR3`R5¯O“ŸHJq)X*áÖÇ^ îe<2üÝÉYùá¡2ôY8Oòøè ö$#BÇ#d-EPåøJÓ9„µ§¯”ú^oƒ“ªyy eöväh5ƒŽ>G3)%~Œ:tG¨~ŠÂœJ^,½[‚jÒ^ÍC²Å’ôSˆ…5ÃÜÁ; ©3ÞvjúËí ˆY²Až ª‘Ô§ùeUäié ¤Ÿ¯£ß0ÿêáä\ ÞŒs QlÀ]-Mï:Ý“  ÔJ·#!д*m)JþÂ°Ž¬ÆëÖóQhcܮޥwžV”oHV䡚 ìXÞœà Ó$¯™ñ!øð/âÔú|9ük.·J¼r5š¹y®J¾Î[Nê¹êM¯æÊìÞ]IB—¦v$õ—Ç$ׂ–ヒ[/A½?®„× =öã¯òhšå© û„ÀA,º`ûí ryp¨* vãƒN•³XbS>±)hq²šÄ•Õ }ûœŸeVù-64 証RºÕ´‚3–foBÒç~Ušjà°W~ ôo—¥ëãz÷xÉÚ×õ–‹vó¦é7É”Á%ž…¿N°©¢£ñ€¬åÊ—µº<Óð Ö2´¯™G—f{=.Z…¦ÍÊçIÀKfÚZª“F² )'Ÿ/+½°5Ü,Ãã¿O“®®^lq–é³ÝE7êË#ØÈª€Ô¤ší …³Œ­à'_|KkùfÈo­:ép•ži]‚½TA;„ ôÔ€8ùM«- ŸŠa¦ª•{õT,Õ5ÀT©$±Ys©›Cþ ]Á["Ž®2Oç7>N«9Aƒ?þD¦ç¨Þ‡y_¯sê*é9Š:@Œ.ÏíJ °ÎHs@f=0—‡Úf–^qVr]½§Ÿl‘塊cÜöÈ®t®*øH@4ä* üŽùÏòü\ç¢k¸é3+[t=sÈ÷öLfíS^¨áÉ6Ñ çÑ+0x¼ÏåžyH¸3)Ù!‚£9œxº™ÄÖljjúad‚-9)E©ccSwOÙZOkƒ¾ûmŠ»`K-¡¯Æ»$' ˜YNïãÀž3ã¤N•N‹dŽäÚ›ŠÊÖiåÉ6 ™ö>ÙA‰Ù¥’o*êP…å;6·²‡HmàÏ©ŠfÏFç”óMZülðü¸÷¥8л9ºÄæä‘·¢É)Ì÷zT®º!xTc œîü¨—t“#›^MÓ)?=Éõ_'™O¥¤ÐPý€÷´rE‚Ž®•ª¼xrCÞ€¾¬ÆÛðÅ5LJ‚"T (Dðà ·“8ŸÇ´Û1nå'´;ö`*zfÅzÓÕMíìéªoòüÕW¯ñÒ…¼ÜaÀÄsÒ_äÖŸœ;lÇï¸ñ‚e”O©‡ Íg²ý-Õ wÐlr›‡Øå¢lÐ)é û;‰ †~à6Ú}V‚z?¯4(û2ï2³¥v2åé’ñp÷ub?[‡PÍáªí%lï[ iÅÁ¦ ^{Q XóÒ[gLe™yZyn÷­rç áút:Å©PfÔƒY/z­,¸PÇí& žyƒ¤ 7¯Ì6½:}«›.ŒçåqýŸƒká8"ì4c¡Æ3fÞy–˜ ©j5$m4­U‚–`B÷Ë=T²Þ<ãò*µ±ã“µuOE%ÔWb¶Õñ  8oIˆ<ÖòG–ñ²ž düˆ3~6–žë¯RÏ´l5.Ž>©¼2hO×’†nPßýJá6ÚÔ‚:mxQÕÉÓ Uv¾¡=¹'2ÎçfÍ¥Í &¬¢<á$sÃI»ÛÞÂP¬~W<ÑÏQ„ãýdŠb-\¡õ£ ¯×£ìÑÝ”då šÿÀz¾7ê KÍ@NxUªfÏb ’{ô{§¸¼æ¹ùŸ¿·Ÿt3°cSm; ²*ÑÑH`räXŽ a^myÞ:à O·^À/HS;O ¯þxXfq¶£À¤ñW!'Iáº&KœHzÆ£œC]7‰“ýg{Õót&‚ç¥Ë`n6O}69À㻵^¶w:­=•ÙW÷ÍQrïKŒ³ئË&¤f¯'LÔGÕ_®Ç3’a'1wTdc‰–ø%Âû£ÛË"¨io²"Jh4Гžy¶ùOlꩈCÿV¬Á;À›ÏÓ±%ÄáZn£8 ÿBŸ /„Eb¥°c§bØÝŒ†õ¶o=!ÃŒj*–G>­A5“Ý˾‡FC’¸ïFr0oŸ™_ÞO¤wVöµ ¦ªÛ¸"xNXÃÓY‹üÕ#«{Ô½%“x| o$©G¤¬cçƒ)Ùz`{ÜV¶¢’{O“?!ÇKgÜ#ÛÎó!Ÿ©U¤4¯»9€Ú‹µ N&€pª“øÞ¡[É̼³^ŬµnMªxàìŒNég>…fv)õײ%áô¾BõÌáÿƒÂ‰£ïìGê!N÷À pAZí°Äí­kêøÚÏKÊlpe[7J•£®YSâ‚åÙìc«UtÆÿÿÙû·e]–í:»¯§X/@¯¬=4,=E* ›©ÙÔ —äú€S ªìLÝq•~×DV‹§WV P=¥Pµ+§ ¹V³å ÎZY"Šc·Á–i¶ÿ|”•#ç ÆqúTJñðU|‰G6ãÑ­¤ù"€šY N ¢îëðí{ê*íä!»ë‚×eéã´ëÊêÜ`$ªP§ú°ä·ä½)!{tÄJóP=>‡öªuɱֽž@Î<¯U1“&?„%×< êÿ*À|Å#-&‹š8í™úÌ=¼M¡²qyðÇ¢ö¤É3±âˆïHž—ƒÙ–’‡Ê½‘ðÜR €•?ôòØÛžHSþµ‡EŠÙ ïãb¸•¾öº W{è©L‚m@Í£¸¯íò’«Û|ËzåÔïeY¨™ÀO5Š’S,в‘¹ŒëÖ^Ø zl-c©@€­ "ðÔ %V‰ÉwŸ"éî ®ÖqˆŠRŸ[­PçLÔ¤†~ò]9uI§˜n˜Üž‹©ð‘èMmo#ÖªN³Ú- ÏýèË×^U©î¦‘~>ƒ&èÜyl>ò´Î©|ŠÍ¢¦xá)Ô €/°IßR)YY"•U«Q'AîŠí!#„½Ï“'H·Žþð!×Þ“• ›J¡WQ»#ÊʲÏx—!õUù™wE6›(ѧóüávr"ÚØþúQÝ$†ª?öé(l·~·7Ht4OÙØW®E-¥I²bªâ»T“S+˜ìã%ñ’¤òZéˆt¹éQqov{‡wæ!Ê+]Y^R¥ÒF|¤Ý|Êy´€1¹q²ªø×ßÑj·=åò™/Y‰õò|èùŠÞïЄ¬f[Î ÜŠÈ} °§oóô´Ø˜á°W[‘ŸXUÌU*Ü«¢¾Õíx®CØïai’¡õXT»˜BåYV¨óV¦Á>sˆ—RPN  )µö\P#rë‡ 3ìó)@úàPt¼g¿e\¼Â»ñ·ÚùVYQ›pY®|Ž™—R¡Z ?Ò£­‹J`êgOáÒNI­ªªNI샪ƨ‹Ö%ûª‰¯q¦Œh"¯¢!nrO{®¤ì…æP,'’<¤ÝË’NÁ³Wö@·r·ù_;6=Éw—{ª¶ßR„•ÌïQ§€°Wo@Æ0««ûÀ IñC`Ø8 „GK°/+È-Ps 졆m©ìÀtÙ riÓ³ìFpê'Ú[þ\"] <­·³ü_v¯5šç.Ž@x¶î$Ïpïr wô@Z±@^¸Ã$¤wÊHE¿¦ˆ– äùQ(ò¯•¤ÒN<¡ŸO‘7žÊê$žHt4«Ê.«åÎG?§ÒKå‡éaêVûÁV&VnŽ.é«Á”¢q ÄËc-°í#yO|£Œn{öÜÔ#tàŸY6JµÓß&ö¢(HráúÊ{8㬓Wå®ò ‡q¸OuSÖ;£*ê9y|²¥ygÅÏr¡ômD¤˜ôï –ã®<`šTÑ·‡%jwPeôÐ’0˜JÑS¾5nC>n-R(œ[Rã åÒR_6$xŒ—¼U;äÂ&l©TaNS /õ}= IÏfÅJ/|Ôù&8ÙAPèlJ7ö5< M%®U˜g›Vj‘››¼’íÝI¾ òƒßÞ›çNíh!&:ѱ÷K"ë„©tK•x•Õø’5yÍló ¸"ý(HwϬÑè=ìÂ5â9IˆRÆ©!uÿ¶µ;ÃíDéœFøÎ9 õ§*\‘}-éè~í|3kêŒà‡‹s±V­ÉÊtlá2_ £^_Tàåù‘€´ãž’¨ø`%d2å»Þ¶¨“¢sTdÉëÌÌ-Iûš&X#!X'ƵG¡d.M .[ùšDÖFå¡Sû^·ãVDPKoûÇ¢aÞhâ×{?ô! aê§³N%/åƒ&†+O\»†Ä’Ûúªò°2©Ø¬Y1ÂÏ:M®{ÙtŽúŒ8ŠäR{<'W8ËÞRwW¨Eæõ¸Å%ðJ4f…ø(ÏéA·GÏyèÂ÷¨‡ θ>ª«›ÿ.uÚªTHÖ<úò/4òrZ£ð’@¶êµ8`v뾤w¼Ž—xBïéBGD ¼¡zÚª„° _ u?­g—iÎoÉëÑc( µ\¤÷Ý4¯I©ÿÆ3^‘5ª˜ÕÔjg:]ómU™ÙC<ƒ¥×‹ósìsófôEsJ ;WS‰ ælç1Õý©·O4çuäMÙ1Y])e 5 ñyOgj¾«êÕEGÎ}t®ƒt„Ú.) Ä9•Md޽iS¢% MËThľèüßC6ÓH^Âå{…âYÕ<;ùÕ^„ºt´RÿF¥K9µG\”)`IjM[¶A£^÷r€ÐC;7ÄÒ<Ëù.§’>‰Þ€¦-HJéÙ< T+êèRl0t£ >ÊÄ€sÔ!/€¡rt_þðSb“ïÝ#Lv Á…øê²LìØ¨Å§1¢gåðò?åN½í30UÄ;œæöëºç;åKçC‹áª^Õç" m¿–ÕÑÊï¹=®è–ÇÊ©ÆZVlÇî»/µ²ÒÝT3ìh‰î*O»™˜¨^øŽf+pE©^Èäê¾N@ðâN´—K7Y½=ò´äÒÜ4·£‘¤aœN /€¡hˆHá.vb¢Àsi¨©ôì;yÚ¾¤kÛíйSW9ÊŠ‚õ¥qÝö[ìo<Æ’éµÈf:ÕìˆJ*R}Q§¹âÏjWÓëR+MÁ»¤ˆf9û•²†Z ‰ÏXkÈ9n9"­8ò ›¥üRé´HIjúIC"æ/'sX*N¥òºÝ åö0Ó‘ÔDr1DzŠrM$öÝ æšsõs–UCäX,wÖåTò+©ëæó-•ã¯x¿Ú29Üeêç´ŸêD¥n‘švuÙ€”9zÒ,nûáQà]¸Wž.olÞ¼V„åèY6'Ôýzoy</-‡ €?Â~e. õ«³ëŒhRK‘YÞLôæbw˜Ç¤¦{a8¾€¾Ò-ÒûÈŒ«:añu¼Æ[ïÕdYÏ‘5“$.¡Ý>¾’Æ6÷=‹wðÚ\p¥ª–+×ekF!ë#m왳t\Ýw¬Ê1Q~²>z:MÏjï†m7ûU5VxÌ.'%÷Zȥï:Mÿ ° ˆŒ‰´Gm“3°Ïº&Ûn³²+Õ»4ë­ááo±Ÿª"¿ÓúªÆÝy ”`[ _µKr/".†VYS)3eRj½W‘fTlǪj}- àˆ)Ý U¾l˩₨‰[’òþ!=Jn+}”~äTgÕšþLPã¥iŸÆ†çÌ‹š€TÏœjѱXé~ªˆk‚Çóx'ꪴó½í²³*•ãŸç”DXÜɬØð²*|øÕÊT仵aàQHw°¼ÎÏÏX™]"êÇ"ɉÒ"¼R¯Õ`%Ž8M¡Äú=?çgÑè&˧΋¿eÏïíÉâˆi#MôMX,­¼gžØ¢—äÜx"÷”N<ÐÕ°&ð¤¯Òôp¾Š?à³37;ª £ä›JͶŒÒ·]UåŽà¿rÓNȦD]§1í-IÀüG+™‹Ò¨xa‹¾½Çhcþ0u„ŒØ”V]N&9ÐâDF;´Íô¦:š:‰EçÅy«zÍÒJ—¾ªdv‘ãZGžâåñmr“opÛÍ' €Û†Š§:³H*(“]²/vì‘j& ðÊ­ò!…wI(JÃÛüX(êV½OIð¥6Údéˆâ¼:·¥ÒÀ8>ŸD"hоëõ_Û£ü“ÜY$ZððÞFÈ—„>'4ñ b|ÆQÕÞÊ“K?ÿÈ“¬Fî1 ŽˆSN Q ·‹M%@þß–ï†?Ò‘FÄJñž_·HÓ3•”©;´ÖŠþV7Ò¾u&×$é.óÂm΢YZ˜)\é¹=%hQïUêÕÈhçˆTI®-T[°¬ªã:F$hKÍ3¬>>Gy»Ôñ‡2á=æ¦áJµËÓøàmt&xŸº£¼òâgò([_‘8¸·Vm"„riE±¼0ôs~jQó»ªÖ¯`Ç}TÍï3ƒ¢ØoµÅ_›âÍæx•ó£“`°|ÛÐgi˜Lš®Æ`µà ¼¤ ÂÀˆ¸ÍƒYe¶kƒ·¯¦;™7id (+0Θ—ÙË ä!î ºØJ~“GXŽ)»ÙÞp5ÅL”XÍïñÄ–¥§-(eâ¾].5Þý‰À±vª—:Ï‘=GåJÑDy­F‰ú•·Îrš{F=$z—I´)i¡©éu6µ˜-šïû.e£Š_?3Rõ8)üL‘í8Ô¿Úž ôD6L‡ªã ¨.‰VÝ[ªwj©(¨žž§"÷— mÍ´JÿêoãûñOþIÊñykÿ<ùÎËý+I¾óÓ©(Ÿæá÷?>Q¾s¯ÿ‰,_ÿé_Pý¤¶îO­•²²|g…ÿ]Â|þÂÿ!Ò|ÿâÎÿ§ÿQèó…Ÿ~þ“?úÓ÷¿èÒ•Ÿ~þyh¿ùE¹N¥º?æ"þºŒ^¼úù_í~óçý/Rúég.äÏþÃ_÷{ø”ÿî¾ç§ŸÿÕÿÙŸýù_Óìý·ú×ÿéÑèûŸ~óG<’ý×~ÿfOüÇ¿ø›ÿ$rþ‡ÿÓoþÆ?H¿ýã¿ùë•?ÿÃ?ÿ¯¤Ç§éúÛNvzJs¸Ý9ÖuÐå?HL,ŽÎÄHŸ~×ýZëÒ½N/þe'Ò1áî2p—ÆßºAfåd¦§föþ´àîßßµI½—«r¿Šð)„­}Ô}oße( W]ì™èY[?ð_rº^Õ=&3¥±ºÚ”l€×¹«(œVÓ1Â^ð³òmͲ©ýåGŠIÍë'¥d¡zÓ|ÚáÝ®q}Ö×¼Ë_®Rƒ§2Àþ7²TëG¥¦¬K}DÝQu=v>ÿ4P“2€ïz¸¥üïxgÅY¾¨¥í~QÔuî£Ë–‘´3ŸW1,gÕÐûpN¯¤Û°‡·IS‡mï-3\Á•"ÊåÿÔM¡R^ûþTvÃ"jò:·œ_µ³)j¾¡²îëƒÂ¹z8Daç<;åˆsa<5;H»§Ì#_R°âåy™"ùÓ(q¶m•;œå¹íÍÖª6_ÒÑGQ¾EÕ“ýê–<šäQ…òxÎzC•39øèB± k²7´4¥®K§¦òxº™)ÑÃ+«]<ùžˆâaz+ްORØ-~K§'Š'Øs=®„²d¹hÚ.jÇWÆ—SGVU C3ØvK×äÏa¡²ËMÙætÂãÄ+1ÍîŠRA7¿8#‹GI°lë×Ö¯{É…´iJñ0ï£õßÊ-_;Í´ÒÕ“®l µg’~¨¶z‡…ÞG»¦úù©ÇP·„]Êâ§ìû.[åÜØfÙ…tËçÓ „W¤U uÙt˜d.¥Ïf÷ç¬HWîKrÞåÈ›£ç©ùÑ®’º°÷ï¸úIžÕÓ@K];Z*ô)ÞÎjNåé¶—\¡¨Æœ‚¢BªÆd9Êìj)6)×¼’š˜6ê®Ü"àÍÛ;×ø3N­ÃêÓ¨“U»=«mv÷™Ïþt~§F§Ž×WZL²À¸ÆüŒ%WòŒ›PÔJrmŸ3Lã‘9(¿òËßãÜ\Ö¢oìz…»ËÖ$@ï.MÎúOµuƒòÊ.^A•´ây~­S R>+›©°ØA[·Å-¿‹ehø;6©ßíìÌ{úÐåSš? E=%ã¯T´í•?|(²Ïk<[1{,]( {{ g8³:·â|…ÚKR¢Œ;·l5ÅmX†Y“ByŽ$ØÕ׉ ôɦÔ&`{V4÷üIY×QSurÆA Gûû3Ÿdï¹VÔkW ?ì" ç!~ÉÆ#n‘fNARVud24…‰ß›5@è|¦ÅŒ¤¶JÁ­­û=uš“wëÖ›@‘ÒHXšPR€ÍÙzËÙ eæìÉtÅ~x¯ïp+–x¹c¦±=MMLùŸlÕ&¿ó_ ]©÷Ó¬ÈØÉBЕŽHí4Iãá™pÅ›ä ?ý%ºo 4Ô «¹(– 掇³H4&õ=öI.ÖÞ1¬·ç’ßÖĶdméóHe„,N%”Éäí³÷C/¿¢eåô”˜®ŸÎâßï—5¸¥0ËknöÑîê(8+ý$Áƒ¸u™¸C-ÁôîEh{š— v»?³díahd£Õm^Îr4]cŠ˜±ÖL:„áJNïT•û4JÕãWšø`aF{C‡pæˆûrlæz݈[wÊQ¥RäÂGÖâ|ýÇŠ}ž;jYäa¦?É6çÖx7d‰+h¼yufîd DiÖisV¶ë¡2£®ŠuÚ3oz ‘Ö¹nqrºÞuFĪc^¾'ö;%e†‡Eß~Ð¥k‘‰ŽÜÓb­©;u“ðŸkJõjÓp—xFðŒü‘†dÄ0åçåu¶ÇDwK–‚îóébÉ’˜æh>#i¬Ç•7“iv>ÖÅ$I=Y1šâÐñ0Úk_1Ö¥þ !¾i-nRNºµÝíqJqÊœ½&à!a5ÐE&Õƒ'œž;×rq¯s¨ŠÖ½Ð«‡¯ÜCjxß<4=ÛX{³Çï•w”Ðm°¥:&ŸMè”þ(¬? }ë /í©Ý[®ÌF‚¼uÝ$J¦~‹’!ùJC|™w:ŽuqSrWìÐ,Ër´ÂÛÓ I5eû¯¤ˆåŸÆ™²_ûNú¦}Žn€êã­Ž®Ž)¿T¦>i;ŸƒO®ÀãvÞÍ­ÌRý.žHЫnÚ×"Wæy‡Ú@'%Wõ½a iK¦K‰‘ªäû4³5=Ô è0ȱÈ?”Ý?X“<ÿR‰ê¼F®«s AØB–MBx7×[p¯O.OÖ>¤£´.u Q¿¨ª’ï-MUÊiÖ¥r«ôåK­ºGKHÛ§Ó¬á”Ï`¥¯¢¦Lâ»’C”¥4õdð£@ųÙùrB+|43tµHÚ²ÂÔZ°%E,®) ù3³šå¿†Ç…Ä2&|)ÎXMË&‚ódl…šØ ªn‡¶µºU¨´·ÏRI<Ç Fʥߧ‹oïã9~4ïõ²+aªØ[•”ÉXœyÔewË\"j5çH«;(¦¬}QèéTÇͬ÷’"Ól’¹cr,ì‡[Þ§%ògóË6æë©…BHû3ŧ¢ÛsžŽ*õ› èš°·âºævÐ0UÁër¨FŠá§¾€€s4 ‹_~@(KºùÔrQ(³T}ܲ?0=ïï¹µeÔÖ‰³ú8Yäl)½["9+›fûíº/¹Ú |²ŒÎl[}§’¬Â¢ädQÖIñ¨Jý=³÷¤ÛH~!]ê‹Û-œM5 ;©à•—¨l˜ïãá|39ÜzæÍk®>QnhˆÃórtL¥“§Öó¬÷Ì›ª…v¼¶¹fnäúÊèЉl’ٮ蒲Œ`¤Ækè@„u¿ºÊ>6Ç×:{_QA§¦À®S+º¤ô@"½W ¹zò%=d«gCÄã0¶ÏT Zl"2U8é;Ù¢%´ãÅGy ÒÓÕ]ƒj…LÚX:l›¥Þö#ò ãUìÈ­•–Nƒ“àzÉÌŸÖ*n°[ôq¤uÊÎ…ªLªÌ^åQ¿¥Œ•º:óàþ§#]za¯ƒoóÿ …7êÐ1r(p¦µ65ìTU'ÔÏ>÷ g-cy¬ì!ݳ¢¾#­Õë©Øëüʤ!°€Cd‘ŽëiŽÛõ{õñ´-dsLSB&ѳÄ5•§â!KHŠ(]¥Æmò%E\½ê€è­V…†“ùቷ[=“ þÒnϨË49Ò³^T¥¥ÊâÔÌó¨dg©^ÖóQ ²®/á‡ËS>+½â¸cäÈNØárޒͯötS.6J3P`äV2„¢P¬ÏGpŽzô„²€”Ç“”lQ /Gà…QÊäs…¿Ütj•*ÿŒHñ ªSêã)Q ÓËUW¢ägÕ…Æxt#«üŽQdÈíj *{ (­Q³ú([Ú@½È±A3lý… ŽÎƒŸXöUÕȯ>W óØ%ÔùñÑÔ®,G’cXã28f-K‡âŽ;°¾—õ­N^qßïdàVø¥îW$&jþWÙÚo~cV{óË2’)¼=8ù OÐë‹òy* µe”Üž—ú~”·4>Ö°ú¨òÓÕŸU( Q]†\¥Kz`驽Cq÷¦|Q'…³¤žÁP°³(n'`>Ýÿ¨œh‘¦¡Ï(åã£NÀþLvö„ˆàɇ50s -e" yåV<˜ÛÉüåÒÔQÖh2cÛ½¦üóWîç¤ö!PWE @VV§]ƒæ£Ò 2v‘‘(ºò«*_*ò­r×e˜'»qmŸÉ£¾l’üy«JuæÉ†äÒÇæôw*óXeä:€%VXŽ/¼—Ö™™Vfå¨Û¿@’oh0Þµ|HÇŽx“@Â)›zá-ÅËA¢·s¢ÉN‘Y•§a«QJµÒÅD‰¥É€¶ R»£V*|¨«à¤§<ÞX%Iض¼ a©we¦x¨D” á™(“¢ig²+ù_‘x ²KÚNt‘ 5*$9¡Jôrš˜bÀi7չߨÎ/<·‡Xþ^„ïØeKˆš¹ˆ“o‘JÝC%gQ©ƒQÅaáç°I®€, PV•Òïh’zXóm‹µí6îµ4çc@žÔšÁ3Ny&’ˆ‰ÔÛù=3§šþGH*IÅBÙqŠ Êòfª]NÜ(÷eÝF½x/¢2°L—ƒC¤~}ÁO]ÍKCñç/ÕÙ?Ðt’ÄD- ,³cÀzŽžU‰·XÇb™tŽ´J¥¼¹â8§®SGr}Ë;iJ£1Åí,\âE§ ÷·`Xz1†Iék!¸ÊjJ¨!ð*?¡ÙµÊRQûµ§@öa?¢1¸W ùêŠ@©èìºZ^ D 5µ´~OµzØÆ;ïΞ¹`w(ó t‘³T~Ì* ©ËõzŠ,«,l`^x¤4ºr?°ÉíìKd …œ?®%Ý]©k°×«pð§< YþJ”‚)ÊF~×ÂëžBxÜî°yYír9PiµiI«&Yeê”N5Ë’+g.þ}<ê\›Ãë¬S½”@‚—÷Euì^]a‰ç_r6ö™”3ÞÊ­7"×3¿ãø“œkRÅü–O\©ƒLî̦RI=rJBr#`8½¤¹î\ZTal©iR=")ޝ² ¨9«ÂóV›”, –#ÎÝ„õ º‰fúìèHÒìx;=ò·H8“úQ¡ZÂä ¤‰*EBvZí£”³ä”þ­ûÈüaU¿’ÌÔŽ>ÔSÙ¤š©˜=²€Ð+17r“”ËÛxY˜³÷œ˜ÔïöL‘ÕœU9²€1¶xB‚Z&ù½—†HÎ2òñ¹œ—.qÐ,š²£FñqŽ£^y¡‚Ò7ZSd_–;Ú´(vÏ;'}É×~òí4‘ÝÃ@"vÍùó.šéò·Õ˜¢š†ªÉKÑ¡­Í}6„·cvšÐt; ÄÌþˆÚ»GRÁHÎß›¾..æŽô•£Ž§ÄKÒá¸Æû-R æQBQ·å(º®`_eÜr÷/bNSPûv±z¥ŸƒÉØþ õ`¤~Ôk í;¢­¯çÙ] l£zÿXšGÒ&“Uû!lÇ…­ÕsâN¼ˆP¿&S;Ô_¼!\R‡!íp9nÙÏLKzÐú–I¯DdŸ‰'ÇÓH 6¨)èÈ ¸Ê;³/WJq6†ògë}þH…#)mÇ*o‘KÏ`eƒV+C(Ç.Ÿ[Ñ¥O[BЭè¯XI¦U ãVfÒ³ªs€{·©”ŠF$åœÛùRDvDæ¶ívogòÚ7 {–!Å7¨„ËÄ¡blhˆ=— &R °q+̉³!-Iøg¹©òå$‡²>R#ëH$&˜[)ÆÛ®/hY  ˆõqc¢X¹C÷72HºÀ¯6òÀ¥ý‚÷y]$ª¡`[[$'E¸* 2Ææ=v'„[Ô¤êØFî‰ |tkOñýßd9žGV„°·ŽUAs*J³çÇ©\%Ä~kÂÎÚ=²ÂÁJ{Mª[&‚ži­Çù [ƒÃ^ ¯Dœ»ø›4­(óç9‚¦õÔDJY”;Jµdݫ֫6Ž ½^_w0Éa®oQtÕÎ>ÖHâ³_*e›'­Æ–ƒüMú T!ëº=Q)FlÐ6ép¡óÎÙQÔÿ¤xÊ îâC[ÊóJv·!Þld?v(µÓ?Çíúö$·êwã‘+Wy;&Zañ…ÏÐçé:R™;åÊž%¨zj.v;R¡¯jžNÊR‰{¦Ét”€Ïó/WT$¿Rszh;Þzüœ>TY‰‘žo:¡ß¸ÏŸ°poÞ ¡P=,¢ß{PÐì"m=ž­A pŸYl’ßA;Š®äxq ~±FÅÖ›ÊrÀ†f›¨Ou\e«Tδßœº%ÿk(vÓ”‡S5KñPŒ£“µ ~¸J=š¤àŠ'ë„¶÷šM“ïßfv¬ÑóÝ[­‚L/Æ{v ‡â¼]þ€ÅWÊ×óz?oFÇ'MÀ‚jD)²—æ~«†)ü“½ÆEx‹Ìu2>øVþ¯* ðÚk o5 5ç“<PËœGA$¦éyfÐ’†û5N$jˤWU\K9uÜI¢™WšsÚ`¹êØöÑd­éRõdávñ>ÂË6 ¬ZþIU‡\©)>ëö³Çr@[¾¦™ës|ÿ½èŠôÚ‹TN·žŒÔ—óéz^†o6=/mº¥CSÄ%ã¥Ty<@ÀÐƒŽ¼¢âÜRñKa(1Dùÿ)ŠN^ÜŽ±ŒNQ¡ 0øªëæô¾6•ª‰%°€\èbÓè.í*åéʹõEöàÍœùà&™¿ÌžbC…sO1“ÎjNÝ|_¢àhеåá¤6×ñÉào•ƒE!8è¢Ö‘qsŒbÌF7¥ ¥dRUàrRMHú†¥]ÉOÑ„ÄʩÙJUX'r”žùž2…½+8ʧ_êSe5¢Î¬%Çž~²ne‡X’ªÄ#€»ùR;¸ð@ʼn:ÕhŽ1Ø"€dâ ŠxÌ… ìs¾J%JÝÏæ)t¨N(gÌ$ÀB”e.éãB@Õ¦ƒLÕ|‘Sâ«z“B):ó®êéQAñ\Äë1Áò›ŠQ:òÒ±ê”â¡Il³¾âÑÕÌ·Sã1:Çù£!q§lA½õ©–S¿)óÖš,¦˜‘âMíš ^b·êN³C’ó_”)ÜpÏÍ!Ï爓w{‹º6fà¦c2Ô"{Ú´ª 7åFå_Sždó,’yÎIâùUÖÖù°=ªŠ çbO^g£#6Í[x"…ªW-d6E#/ÝæÁÇÓŠê& ʺê2寈}£†M9’}uÖ‰Öõ ‹æe-ݶHôÞ ®‰‡ìyOÝ<ÍfDµ¯¯.e¾6Ø2MƒP^øRŒ¥‘ A`Æ—æÁ=×ÑÓÃÒ%Û)¼¬é.©nŽYWá?m§§„ã¢ÕÕ9ìQ^”cï$BqöHåŽJl¤øfË=Ô{ˆÍL•@Èb3xñZδŒ. BØãSÆÚËà§Ðʵ$>Ù& ÷ºyÕK)OÊî~oÌñ,ßDvoö>E^¬I­è@i¶¥Ôïg)xÆ0<Ö½÷QÐ8.Šê:c—4ó¬§úlœkLI8xQ'å ܺ…¡žÖìŠà÷cê· œ5gú?]"ìF\Ø $xê,?nð<ôþ¶ô™GX-í4ðä4›-ÙÓf2½€w½—tPŠª[Ó½Wê­•ÔP @ÊÒp0çT(-?ýÛºÖ–ú¡}@0p QÙ¤j÷+Êau¿Ñ2úöÑ’«Kè͉v©P‘Ìn‹öhØ3×22fý6•PsÔ»æ£]üI”—ùcO „¦5U¸.JŸ±ß—@S¿ªAª9þjžs7{Þ-‹:4ïÓéQÏ/²‡øì Cž+‰ó*ãp_]ßv–¸Bv²È´ J“‡kç¡XìÜÊ:QÂI# µ R5©³œÝ,c­6Õ&¥?|†ž@­|¼6›Ø+Š_<—ðJ7Šcµ~Ù9Ë!½¨Úù-µ²<ß”ÑÔÿ‡£en êùê'¢r®Š+õ!¯5ïCw,g›_½>^c¦¤·ÓiÚ—)¨ÖIïÄZaQ—\>ß龚ËÔÄö«GŽ:–r¸…šÈ§¯ÚûSµÜ^‰$ت{wVº•‚Ê1h>ìÌ÷JÚ‹€7ÂÓPŽŽu ð´j R´žÛZ‹­H]¤;œ° ҡЩ E®ñsj5ŠU<¬®jm¹<‰Òb•ý˜*"“]Ÿ3{ÉT&•¥,“¨J ‘Ï,M@Ë%OÎZ%&Ú¦*Î|dìÒ9snüáðPtÚ^óˆEÇ]…ÇuTë·‚Ü; KÇYmÉ€À)I–Â~΢2™rÛS._ ù G#·æ¾Ï}}™OŸð*~VëØdBëqaYá¡›„vI\M½UœŽÔ’ О®VžfêÀfÁ+àV‚ù;»šÅ‘4¾# ª|V+—Ç–Y¿‹|Ð/ÖEüÑ”Øj…¾þÝ>·N¡Ìf¢|Oj_tÙVHHŽc3eeñ.*ÅÍ“®ÕtÙ>c…Áèu‰U–'ò¬¨ÐªÿŠÜbgJa@i¼ñ)zË©Ÿ +×Náz+Œiz‚ G•i¹gú^sñúm;Çý~ù²½EN]|­¾-ßèdz ´Lþ÷ÄM-¯b½/ÍvIOÉîhuªböõ/Þ¥þ&A¸©4åØpyn½-?æ’ÉËÒvy“ƒ7Jýbí×7­ÛTò«¤'Ñe–ÒN‘bÞå¾õXñä“÷®\×m¿Š½÷)^iÛÉQF¦óÙ=Ú"œ¯'KöºËP&ˆÐÛ×/û~¤Å)uE\Ù3\Ž ó˜OSE¢ ±ïKP ŽeÀDÈÜ®îDX>¬œç{xØÇàoÉœOÞ9Ù©X A§¦a7ißéÒét›mÔœHëÁ./…\ÿîªäp“t'3;Ž&v<:¤ï{•F]øšmä“«6ÌÕñ}-Ï%}oʧDYÓ<yÅ·Ú}²’©ÑXõÅîVÔŒ…ˆM’F®JªªãÂc»¤úÞ‚ZA°š»¬vªpôÖ‘:PÎZxñž(šá 4 Ul6÷Å%*<µ£Z«7ñ•×ùI°í„óXÇÛ‰¤Øx’³ÆV@X)ú è•Æ—ägþÍVr¡ë˜ Ä™ÒS3+¢è±«Ê¬síAhúå„®¡b;6ïé²zRÐeò£ ¹ç>TÓ¤»¸…ú꾜菱—Q/UcŽVsIîÏzb£Ò:ö–€ý,hâuRgEÇ®“VRTž¢ù<ƒ[:&mTG€bš¢õ™:0&Jöˆ·,þ.¨•t;ýäLÚì—>Ka¯3U­³‚6-ÀïíI[ü!«¨¥³Pù¦âKž»Ê»ú¿Ê;ò Âdý¼χg«:PÒðº©OT6¹·˜‡“ÐÝ>k¦ì³Zíÿs¼ _Ý~=õ`Ç;€b&œŽwÜDÛ¡Ä7á¨+õ ø¦¬ì]ªµ»Ùs‰M ³· l²k+·õ¶dG‹mô–ñLªAî)]wÂËAŸºf‘-I§Ô%Ñì†øq”Fiä`բߗ•Ý™)ñ/m;³jR9nn¨P;Ï ”éêiOM |‡Ü‡šwILîëñÉ—Žà0Ù/‹Ûå¾y¡öKëHÑkßt ue¸:Ð.ËÒ¡ŸòãŒK³b ¸X…( Ð^åm?ºso¡mRŽHÔ"ÇÉÏMG1'=é þ³òlá dÙ?ÔãÂà–âD–”Õ5@ÜÕÌÒ¶q|ž@òiH²YëS“/ÕÔö¨ÄW²R`3©J{«¬®‚iH ?ÐŒ°ÏvP gG/OoÐG»Ø£ê3_Êÿ{趸-œ‹ó[‘"MÖÇQt+0«›‚dÍ÷V¯A s•‚Èþ—ä!KV•Ð@ÔõÀôÍêÚg<‚ô.´‘‹§Z¤Ï<·#Y<½¨úcL¤öÚ~ˆ`KÅS§‘P>oIyÎûø£D)µ=ÿô›Lõ²ož¿óF™oÊ6°ÞWÔð\ûõ 6](3LÙ¯}Í:ŸhGˆ‡ß]ȧ*Øg%Ѥdß\ÝxÙ…rÂôö «.`>Epº$% Ðéë3›±\”—80#:’eéGXTõzSô)uKX¬ùrAñDp¼©”Š}:g­Ä6«|I¹Ü5=]UcV–¿ÇIΛñòÕE^žv€Ý‰¬Uñi±@_'›tÐsÔåA™$fÅkÅ 2ÈnÓXN댤"V+SW 6X!ÓGeßYž¹®ËJg ÝÈÞÔÖ’.ÀwÜÕ°Ï$ý_z’6÷ï) à 2¤ø7Ī©PKq¨Ñ32«B_²1:œèô6?êòI©<žªš!cj*Ïãà½0ÔIz²Õ¾ÆÖž:«í(Äañ¸ÿæÃ)|¥) E ëú—b”—Ú…òX3i È ˜)Uœx<Ï¢ÿ(zǬ¨Ö³Ióšcîë÷J¿ÿ€ šÈûß”ß!&ÂßümZ"çü“”áÎþy(‰øfÿJHÄþKuDnOøÇ§#â­þ ‘Ô~úYÖiî?Ëþþ*"J’üc’quÿ]*"üý?r‘Ÿÿð/Øey^ãQ‘Òú™]û'ø‹øGúéçÿþ—ŸòO?ÿÁ%©­‘ÀöÜæûÞý\6[Q±9 J”’Õ£‡@ŽåñÊVÅPãÕrüòαÝßÓ‹©iå B¾Ó¶“’,õ\¨#rb;ì!"¸tòÅUÝwý‹F¿”8é¥0l - ” óꨱ{¢x´ÕW’(¦i Ÿ×#Ù]çL=]“Æ!eL€à ’µaå,Äm§K¾Ý‘Ê;^eÛI+»®ìX#mÉçÓ/õÜú«KYšºáh*ÙÚ+—1h«6= ¸'¨vÞÔɇ óÈd£8áŽ3GgØrÖ5øå«,¿k 󛞼ß×oôCµì÷‘‘ëårÔ'ôÞ«$L°Q­´,G „­3è8°V3]½$©™Â<­×û¢2^Ç—Ú_ÉîÆf^ –‘ÍaúîgúHWâ:Vµq¥¯D?_ºôåðéuähÅHÙÙ#*ªŒÂ ¡£ ±HN7R`¬›Bò;žåWL« í¶=Ë/`ÚZ9Ö`¥ÚvÓׯéÒ9Ø,YéxJY*DÙõè÷þ°$rÑÚ¢8s•lXƤ…ˆžNùÕ¶þ“ ¤\¬S½5»Tƒx.a;Ð÷ÈR|Æ—¾¥ü±Dw©‚k,~ï®è¬³ ¨ùc•ëÐtw¨ñ-Aǵª~£ú¥Wo*÷B¡ä0m-²• Ÿª@RÙWk¾î×!’Ý<8ÏQåDÞtpÊ}Úíñé6‡Uf`;Mý‚õcpz`RUu陵eÖiO–¶¬«yþ‘âu|²³ßpW]‡“Q;µ§HDUV–ƒò(ÃV}-¯Rž¼¯ð”Qëº ÒC…0¥.Ý3ív%² Š3X¼Åé%È—û*ì2d[ðê¸oõ_ô‹ªõhךøíù®ã›Ù,5D~ù®ÁZyV§ì²GºwÒ]›ìE0o·vGÁáøÆ;—ž‚~cùC+Þ‘>Mëñè<bTŽ'ͩ뇴«g›Ôڋͤ÷pQ/£ëH0ux Ny&Üò«·,‹ºR¸²âÚûlnÊNß­mr«×«aWË2¡¤ÿÔêT’$?ü妎îÏëL¤S޹Uç¨U×ý¬ÅØßâx€CýÜ£JE* /-äscs:ÐñÜŸ†ÕO8>¦÷ìZ\kœ#ñæR­;èäöè8ûÅANÔÙú¨}Ojù\Ç&L“Ó¾5X€‚ÞmxYç|£Ôa§–Hx·ÂMÎÒkòl|®ÒߩޡÐ9E4>‰Ê|s-NbÔêɬ¶ z§~o-MÞ¾þI¯Ço±š¾Beûªhá||âmeÍœr&}+ŸR´QØž‰ã‰7nÚûÌL¯,:ýrÖW®]z !)7·úŽ¿}§+Ñ‹rá÷ó(È.‘[«Ú9H“èyÔî©/ii«©ßÇúúÖXêÖÀÈsNVŽh€ƒÂË"ã¸ç9µ«¤wPŒÖ¿©âv¶/Á óméN„$­üÚ9«,ŒûõD ÈÂÂLo­C_¦-í¿ù T« Ï‹Ø[Ví¦?)øäÖ,+¤tÈP$®-“¤ÚúŠòm¥ÃJà9ÎW±"õ¸óä¢ufÛ¤|‡ˆx_<Šoh¿xDÄñK,[_Räzd™ãI­9øÞûé”ÒO‰ŽWÊ4çQÝNwâÆ!DCgÞª-)^ÞC~Ó@áà”Û}¼Aœ²í5¥Ä0ífÏ~_¼êéÙòQ H¹[µ“]þC·or;\Rdþ¤øõÈÖä3]A­ùpÌÌsê@³±éÄðÚ¼IÂ%_¦–Ï·–êD\™ÆÝÉðœ®Éîpô­Ö3ö뜘:@š°Ÿ!*‰¡¶ÔôÚ¼ã9Õv²æµ qY¯W0dN¯Ä›šä霶êòfÂQ‰|f%LçÏ9³êY¥w“qJÏÞ*ÀÉïvˆìðÌÀA» ØLÒÞ*AãØONµæuŽã×?~GêwLÏ.oGë7Ñ ¬cñwF“€’YRÒàùº—}š4@Ùwr’‰b… ³¶ƒÄO&P³¥ùêç$«NX™X¯xÌœâ1ÃùÛm„ìì׃LÛ÷qŽJŸ  ¹ûÜñ²°ÍÎP*e®êlOpòÔ$.I“ù,¯m(¹Ò.Ž ÃF§ö´œK"o~¯Ø«{…Õi½ÍLdmª\â•ÛiÚþŒ§j~´˜ø”˜'<²ñøKûæ.-ິ¢J½ ã¤¹äH_‘QEWzàD Ž|j‘DÑxÚO®T·UÓ]k|—ôbÕCnó–Æ4¶—J­FY’à…Rõ°Ÿ:@­¶(gÃëÓȰ^7ëMwÛ¬å‰^¬z3vUG¨œ {õ :|[¤ 1”2¨‰_!=^†¿¯~g¢ ªïNAÜí!êi›£ÖF%n“ +„<2åH׈¶q@yUçgÙýKаr@ÊJ_ÅÔ–4•ÒÔh¢¸ìö)¬Þ«Z…ŸTK»?€G¶ÓœyíæÉÕ‹[oj§qå>ƒ¶úBw6Ó’5§ H>Õ”KìYÕîC>gØLG†sÃ*fT&i¬  |¹Ð*¬lÚÊ‘soýÁ)<ž! íaY ( XYT¤²HÛw±¬ü•÷ÿ\Òxƒ|ˆ~´È/íHþ“7N¦ÿ4}V‰Åt¿ú´õÛºéÓÒˆÚÌ.Ü©å«úgÊ=Ey´úzÇŠ`’ˆÊæN_Ê3öœºVÉ_w Mÿ›C4!‡tªC«=ùÆD¡}æ,̲ÅR¯ñ'ת$jFVp`Ì)ýÖ˜:ÈŽP&]÷g"T€:ÞøªJò ^jp)¿¢?P¹Š ì¢àþjêY\ĬEJ¶f-j…°ºJg¸ÿ/‡Ð?-·”¹Ë**%2 ïä)í“?Õé:qÖi­Î—ƒ£‚„uªwVž~ß]žˆ‘+mŒÄ„ZZ[Q8ª~܈epœŽ¿¬’tQ_jË…F©&³k“ÒX5/úø–V;øŸà³do3OЭú2GDÉ Y+Z¹MTÊÒ†üÌô'íD\ •w;ìïìÊsVçwQ!/­Ïœço9/1n¹¯¾ÐÊűڷ“ ¬ÛEÙ|§áKÖRúZ¬b%¶<‘ÁÃiš\~‰b‰*J$èRAE2³W(L»Èä¼<©"W ÈY÷-Yÿº¥=Ç‘«!¯Ã Õ˜îð·:´d °Ü•Ã2šwª%å´ô©¦^×#wê ÷Ìaå}êq'®íáêV¢#8AU¹ýð¿dRÅê j•¯Ö¼G€ñ¸W'yO÷ôTx¬[’kJчþ ù¯?𖀯ú¤>ï—al/¶‹­baaþÕࢃä÷•klªÆQ:öPT[.ãV±e*jÀµSZI½]uR.IùSmT¦OÔ3›GEäÁ‚*‹òàœ¤óåî$2PÀPÑå²Üžë·ªÇ¬õ£tHâ2 •¤’+ŽUÎPìxù8LH‘’çùJ!žA^)“dˆÕS=Ÿ"a$i­DNjMLõpdÄ«4ò ³dʵSá\ý‡ûí±Ç#¶ %Ù¶R«ì]Ê¥u”ëQÄsÖ¥8œ?¥M¼AjÕs)°g2s¨Q*©I”õVÔ3 .õHUyi‘JÆ-1ÔA‰[OêÜÙ,d½ñX7ѳHîœßVX@§ ß½Y¸Žï+à næzµŒÑ·óRý‹" p¼‰xç˜@rÉT†ü¥ è:¶Ûù‰~’­®½{ðrHÁΤᴑ›‡hNŠ“ïv|_d…ënC!óŠ_Åô<}qœNã£oùƒ¼%+²¯K¬¯ùÓ˜a9[ÀêÝÎÈyc$gbtúSY©±YEN7øü.Š”.ÊWÝÚšcéVغ{Ö¿ô&Ë'~œœ[€í^¿êáëív:F)Du £×<Ó,ë~åµwͬ=h|“å„ÕmY+6,èUºëæ-+cðòr¶3náæAµóHÔiÍ¥Úå¿2‰E?Ý|,X©«#;°R(=5ŒviÔæÇªXê¯à±šz—^éxê\<œ¸;9Ðv¤E%eíHé”á,æ©Á«VÔ ÙQ„ÖPÔëDú4Ó®I^¢»§'õEÚ­x©«²r«ë{Ô?Б‹œ>ÉL¾¹rÚ¹Jâ‰í;‚Á‡ðñzÁE¯ÆQª¯Rìõ„Yñ:ìÀ­.öx¤½V­6ãvzn;?-yö±’WÖCJï7[$Vyy¯ÆBPvŒ…u—®TÌRaàYÄg›‹YÍ:éjš~³Íü¼$RöBÓxà1+‘â¦{˜ ßÛ§¿‘ê2S=‚vêkFР%9JÛ@êÒ…AæöÖxsŒ^”xW8,=þU!ªêv£ËyV}’'­ƒÒœÖiöŸØf¼ÐδM°ïB­JuIá>×Rúà.䊣-èä>÷¾k%¤ÅúYtôx¼Š?ÇͬUµB$iTÊÒ§&¾ºìúËŸxÅzà‘^Z6U̳µß:Cüu*Êܰ•?ûTª§ŒtÚ•õg‰¦ÆŸ'Y©Š>È©@Œ×Ã*s'…J6[*òêJNšTø†WõèÍÇ'šÚ'8&’“áE ´Õ$^”¸;Ï*fíwÙMƒïsOvŠC4zx€pY6@¥\É`˜%±æ9ƒA+X ÌqÎåå<2…9Di¬ÀÌKÔžÂ(ïÜŠFÕ¹ò[0;åÚ¤Ú§®Í„£JΫ”\ž~9þïIÈ’ªz«ŒCcq(Ñ픿²X$~`etŠqG’ƒ2Ñlê6/u˹”{«+IYú€sØ—%9Ee§‹šQ—Ó>gú²_É^‚îpþ¾™ÇF*ùŸA©JÔv"ÃôtŸ³F^åÈR3©–ËèË×Xš*ã툼Ca'8YýC˜Õ;OSƒ’MHk\ N‰¶¾†Ó§¨9=SgwS‰ÖP®O0¼ÊC¯B0Én6Aµ¦v”ߪ%ÁR[iF¥k>ËØ¬Ê±_×äM“À˜”Ê,äç­/·Íæ8’¢â«mŸHU¬â*ß‚O¾#ÁÇîcR¥ò¤w…W»¢ü¯#|ég§',‚Ïä´ÙÍàCâ[J|`-Õ¹î@YÌ{CäN_(‰ä,×2Ëau˲v)Ñ–!¿³ªà²Ç|ïëÐPÞJE¥¢Çg3nâUñ¸>Q²lv„ñ^”^:VåQÕp½B9ú/–]Î-ÙÁ&ûò‹Jø¼v²žìsµÐ»Î’ð½œ-“û”!2[—rÁB„oÛCÆ('4§cOú# ¡. kap{xLQ®ïµÓÃŽpê1s«{5•÷ðd-Xáx˜ý±‹ÓAe‘„‚R$óÖ(+Þ¯¤øÉª8節-âôÏ'ÓP¯³\Ž}‡H2SËË^":šCIõ¨lûÌʵ=É#H;¿¶ƒ EóÕ½¯Ïƒè®ñ#ø#¹¤³ ©ïr2;»j.àåê4ö؉ÀÞ›Ý>å‰HZ³¬CƒÖöSN-+è¶0U(4Yµf=c&æ;‡±.=úSTÿxö ­bn9 ú<\Áe²QW° ¥¯Ï’!j]Ê£ójÃÌQß[Í çEødÊ”pô—bDzµTÑMC+{6-É5';rT«ÊY†ã¤NÍÊÐìx—0·:uùDI÷ò÷\yô _—ÀpZu*¶÷5Ê} g|¯>Ь·ÐÅñ/Û$u‡ú´ïRýËÅ?SMÊñöì]ˆÃ ª¢jnŽœ}ŠâE¤yR`GÌ•¥GÛP§„ø#…ȵ>Mƒpq4Äóu¢’µ’XÌ;9Û_$t”iD¸¦óãꨧ;Kì –¥I½øÍØž²:#×°“S‚m ƒYŽ˜¸õÜÕ!YúÈ7P¶iy¤PºÇŸ›=—”«“(E~;AQ ±§£~¶óõ_Ö ¼+nÂßVå-ݯ§kk‡‡‡¨ »j1¯6Ávª£NË)éíèœfÔŠ¸ñwŸÒ{êŠnN¢³ C@÷é( Òš ‡ê`B Ô¤¬ƒ:é–Z¦Þr¢\Ìñ}1€Ó¬$»èNÕ´3~ªÀäC°ˆC¯W¯ªô0X? çf$K¯PØCZu— õQþþ=µçæ®ê¥|A·gjÕŠÓŸ§*cF=)@ÒMB¬#×ê0ûMLq$²SÉLÊg/̳Tõa¬Ðœ©_»„¶Rö)øÚM)QŸ3Yÿ.Àƒ,þï×È.XÚºƒÁ»ëEm2åÒ¨Þµã!éC–³m{Io[ЕÓÇ ªÊˆœ´¿À.ÖsEjM’¯ ½µÃ…Î㦖sáxÍ{´£OJi(;Ì+ Âf"å8“u`¶Ú÷IYÛH<³…M‘ O€c¡÷„«S‡¯:ÉWÕUE»,{•þÐî‡Mõê^Â;žwUÌeOÏá^á£ÆkåvO*q@N¯º7&#ð®Íî,}?x·b£| 3Â×ÈrˆÎœSTœÒ×ו=Ošmx4¡XŽlr:Îj£ØºíYFQ ˆ,q5ÛÆÉF@ñl„‚¹ J¬`¯$¤¯à:‚ŠÊÆŠ„È}T±²6ucVÆRI1õf)ÏoU&¯’Íë9.{[ !®GÙ¯n‘È÷]=U (ˤ/I§Þ=!Ò¼%ŠçÝ>Í>ɫΨ.bs·ú}†þIÏâ7`[Ò¯{RxôS õi¯eíx’Ný3†š§7ïU ®¾²iKi6Ðkâ{€¹Š…:¦®4ϱ@x5ö¸DÆ“¢¼ß·ê‚¯™ÐÖYJ§y¡£¶.HžA:ÃÞlrz&7è#>Û:Œ|«öä›ÎC}­îØÉn0ð­*`]w“[ÁÊ `Kp°ûÄ`†T!–i×<ÚÂÊsTlñ³ó•L«{IŒÙüŠÒ˜¿U^ü4XŸ3K"UŸTU"°1ëz³ey®A’ÉËZM÷’?z«šêq oóõ¼ý~€p[FÙ.Ïè0ƒH¡ïõ‰b=ý¼=„ÙŸôcõÝÈ¡S‰ùQäš«™2”!<Š. ¹Dj!måÖÈ$Ä‘(¯^óÁG;&ù`¼_õ~åT÷³kk¦g[¿ìæ C‰‘ó;SÞ²ËåÈ«QçDø|Á‰¼' å Øáø˜6Õ»U·ŠfŸGÙEfº²4jI—Ér’¦Ê¿£ö  "¼‡¡ÆC1 ¹"™©k!˜ï‡Œÿ¾œuØ´ã+­A1r2Ù¤ØÉå%“²çùÄ‘=]T@ToC 2X¬Æa/KI7O“ó¢H¿ ²Ÿq_`<;ƒ<$é!œSÝ%yáŠlr ¨ló‹2½àYŸHjIÉçÆ=†nÕŽI-Í¢øO ah¼•¦² :ž<õ {2Ã"Zæ“ ¨ãäú>¾F”Ššû¥E/EEÀ’"@N‘³ÊcQÂ/«05¤un:L~-œ~nO¬Ì›Q™¢÷ÐD£êïiÖ‡R‡ú¢p¼õÂS{h;Á­ŠRD(šJîpr¦Ž~Ÿz÷bvÉlC•ÙIº t“í«ÐÉ}QNLõܤkÉ WÂ<Ææ!45Ã;ˆ<ä žþ=C–dÉoç5†‹EuQÑm!ªŠùx‚þýtbµ¤Òòªëip¸Õ«|â}‰¥÷¢íµOXGI2‹pÏÂ\¿†•Ì=³0#PR‚ìЈëÕsåHhȃ¢4äg×€„ª Ÿ­®RÌ>A[ ÍL“Áþi§|—Õqp  #ÿ<|ƪ&)ùPËy¢L¨šRŠ=¯“ÿøûÐßÀ?x¶ýÎ!Øö·Á¶²C°íŸËlûõlû ÁÆŒC°íoÁþ‹û·C°àÝêC°í?3Û~?ûwÁÆç§ŸÿòÿÝ_ ½þ§C±µ±Î~ù‰¿ßÿÙÙóSýéçÿÏ_ýÔù”_>³û-¿²µ?ýü/õãýÓÏ¿ùÕ|ì¿ùÕå§ŸÿèW?rü«ùä?ùåGVôÏú«ãO?ÿÛ_ýÈ%þå¯~ä£þý¯~ä£þÃ/?F>êùý8ð?›q`1H»êZÞ8®úeµT¢Ì±{ºe›¼ýÇUíD)‚ùª^(5œªÍ3Öä°5ß5¥AQN>™jOõtuŠtxWG6áÝï”6_Q]ó•ó§ëĘ—ê©´·°ttÙ–FA9±öfðÍ¡y_í©6›X)ÝmŽG·YuùŸ+SÆSq¿ú¨h*Sÿùi*6xˆ*ò¹KQk)Zý(!Çp7Ë&¯5©!º8í±cº¢m\¥3Ϲµ'_ÃcZÃsZG@÷¦ÂVßÑ6oͶKäoœÃg O€íÇï9ð2šô‡{±?vˆÛÅëÀå{?z+ª·¥ Ûl9Gô½—ÍâP{öËf–AÈBÔnSÛš­,%¯PÛ:Uá Û•¯6¢%ý—ˆo¿%Eы«š¿ß]›ˆ¤D8»yªÙ¨³.ü0tÎ,3ûîù•qé:Ãêv‡S¶:µ}úä› áJҫΙ÷(T‘’Õ äÙ‘æ®$…Ú“Á´Ž»øycLÝ 5W×åŸ]=ìl%Ígè®°.6ÊC<]ßÛb`MIîÍÇf¸®qÏ/åÔxu¬‘7¯A=â` î‹—Žß‡€Ã+]·¢oéx`ù>cõ£^Fd/™˜Ê+[Q0¥oÙûzx}ÊK>{ÜK⦎5ò&Øÿ™óÑôKj¿/›kNŒwvg³ƒPfñÜé# ÞÚnUjn–µêÒ®ú~lfšóÜNó>ÕiÒô| |P¹=}GI‚lÃ+ž•»×@ŸϹÎ,tVñZcÊ÷¹Ï”<Ä¥Kù¶qœ;œ¦oL˹«Í³›{"† 7¹JRcó¥ë5›ª\]~arÐK \¾™¸gã"^‰¼ð«ì´Öa^ÎZE»a)XQeºrñ«yÛVsã“~Á]ðÕÇ'F¿öq} ŽA "(Y!e½¬oÇYl†=ßýzþ'¯–쉿ús)–‘Dd|¸ˆC$ó(ËΠd[ç`°ß2KÈ×ÚeTq]Π+ª1¾w¸¦½«®Ù©TQÖlÕÐSÛ¸·_?¼VTRõ¼43IðK…òÄbdïj—ÙÐ,xÅd«ÚÅ Çá^kâVQ=ÛÃ{¶¤£j ;—“:‡õ1„?â[Óqb#»þ*ïMÎ' r¡ª;ÚS“P­ÏäVÕ[ÙºÊ]8—)¶ñ<’‡¨GÄÅ5¶ç¡ö¨%‰öðØG6êfë—ü²Ï”n}É ÖÜÙ#ÇãÔ—RÈR`¤®lGÌä­kö&{kC«äêAM> ×>Mò˜‰ÊZ><:¸ø7Ü@ãwŠgæ\R#ÒÔÞŽb¬’)¹ ¦HßÀ]]Û8¤>‰š_-rð"Qþöü\¿v®˜M”t’i7/V@dç>¦ç>n‡é",ÙvMŸšÙAÆî£N$+áÜc‰Û¾ê‡)®Å˜:+;Ñ×u-›Zº¼|ÒyØù×%îu<øæ~Kó/ÅesH@j¸ë½Ä#¾Þסk @«r¹;|=q5{h|ë.’<Î5O€´#^ì„V<¼?v£‚ÜÄ“·÷©)+9æ5£Ôž¿ŠuØ­yÜ!‰‘:|ä ÔÈC¿5ÃYcÞvVxL$^°¯u­*ûe'ª…@éÇt…K5¹ê¸ïô8ÁSJÇ>ݳðÔãlïzžG*ßå3ÞRÆ­.±˜£Šßwi°u—$±}È—0™ºq M—+}²îkžiÛïK‹Œ( ðæã_ãÃÉUàõ'Ú-[ªJ7{›@¥%•”ªÉd™T4-æÏºÊ ¥#Ÿ,íû*?™W•ì%DÏd«óI¯Æ5dy»2W,`Ø·gåG'P'óò¨zÔ+*ý(‰KÄXÊkÜr?’hª²¤¾€Òx‰äksŠp¢ÏÞ®,éâØ?õ×çM¤ÕÛ¤žùSò”n8Ýô’Hjÿ9@˜T ]¨#¼®¢0Qµ»;Ú.I²Ãñf`6çwG¿Tî_ vÊê‘Ͼ•A©åN s_±Ù_MjÅÍï®p_êË~*a;€Ïïñ>y®(¥£²Rù·ê_Œ[nïag± Hž¼ê.´ßr>Qõ}»}TSºîí„-OH‹¥Î{Ò&;ªÏ¢P4©MD:.uFé‘ûꕤ œìÅkÆ‘&›”¢Rã;É’rÚ¾‹mnª :°OCÍI’••1ÈÌ7@iâ×Aö9InÇ›J—^ʚ΂ŸÕþLm@" äÓä¾ßhsRu¶¥&:X±¢(â+ÙW6<õݵ$Î&GñXiM€}È|`L)U[âÑãVMU9—ÏR9^îÁÁ‰ì’ÿt.Z>”®Ý:uÝQ¡qª±àQ_Ñ·Là^ö‘ƒ’¾)}“ (Ñ•Ãúé³óY[¾òRM•Eyè=]'À)Û]¥Ÿ$Y—ht¦rµ¹ =hÖCñoO½8‹“ƒÿö~Âo­=Tµ ‡[mb±?vBKè6òzRoCxV¶¼ Mì¿HêŽVO§o_°Œ#ýzy¾Í4¦¤£qb&Wnùù²˜yAú8PZfÑîªN?n ŽÂ —.Pzb’½v>“D³ûÐn¢1%$½ƒ£òa™À/˜8<´àRß÷TŽ:<©•M]ÊrS¥“¡T6ËõódÁ*ª9嚀 ­©7ÕË]çŸ H{V™1Qo˜ûÍJP“ígs¨yÇO% ÜŸãHÉa‚²å¥–éúղϯõ8Ó2ÀüwæÁäáøUIéÓV’@™IŸZ ‘á{×–]©!_vq9ü¬ŸA_{R1¸õYÞS4ùÑ£±¾œˆ$ôS ˜åBT‘?8@r Ü×9ùñœäqæãÚºs@ßãqXéºuS* n¡ë²IнûC}Ëk”!GäqÊ!¨¢MFÖ[WrRS­)åú¢"uîEŠ0é>Ep+P’û%hår¦hšÚ»åxè‡|—¾4N{¿ÕØÑØßàbªLŸ¦¢Û`$Jž¢<ʶhYä3î±KHS¦@¡¹©Ä¾ ´ wGû»(»Â³d5ÉXã[ׯüýñ°)·‡,z^½q–Ĥ÷[÷zž!I‰¡M®dU'ý—úCò®ßJµe á_v2!+Çú‚ŸaD±ã÷çaJVgŠiÔQ¿t¥èç«™ž¶Ø*Ýx^¥™dužëó0­˜±·öùœjfͱ–Ö:ïlËÕª™N<¡Rf Oë­ë뽇ƒG«@Fîx‰®Â²˜ªœq©¤®LÙ¤—/!ʰ6WÈlZY³‹5v”ÿ9¸"Qd:F¥œHá¹É ,·ÒŒrÙŠræÑ°d¦É¹+æ‘5žYË6“|‰HØêþIr¦òð¬oA᪗y“ä ¢£™ÎIióœå¬ÌvvròÍê‘,X†ã«ýXD*0ñ‘Ô«­ozA8¬ëëRµè0-¶…¿EzÔïÕ®{‚¼aùµºKòY¼²$ul«@8Œ;(ã#¸6²‚+Wß­!ßìµØsúHÝWGs_?%à–P/½™¹ëuÄ“šðfë>zÊŹ‚¼”SG)è ˜ä|¯â‘Ú‹ûR郵䷡ZI(–"¯ Æ÷GåRœS‘ü3oG}wbðö©¦Ë÷^}ð¬ýHu-ÐnYGdj9Âõç¨VÃ$‡¥ÉÎÍjÐY°‹´0÷:ØMGf§fíÁ˜Yœ Úh hyP ÄßçäÎßNU»*p?i‡ò ¶©…B´îª‡p_”¢I‰›;oÞ³ ÕyCgÙiú’zéIe#wÊ·¿ï>O‚Ûò Óiv°C±:O H­©HHÞíúìWàGÙÅ®2J™Ÿk0°«YÏCsuoè6Kq˜|ÖÄÊv˜¯7€ [ŠÞRãtëQ’ü³‡ÚàU¥Œ½Ñ­²ôuâ³æ…»Ÿ¯3Š{kÄOÁÊñ©2Ã=nø“µ)ÊB×ÉsI!%\R¦Ùw„;'©k{(ŽÈÛàãw`)8ùÅÓ * æÑíT MÆn&,x(J ‘8âMTTQ·mG0H½²'5ó"(³ž¹y`Jç:u'åÑžÑçóÔ(i‚ 8&¢<ÇtÈé-%¼ªO;¾B.¾ÔB{¨ÿîB@¤fµ%ÄÛK€½ ­ú„»$$ÿv§tø;þK†M•°’ÌÜ÷0KÁêËßyO ijï^8¸ihk{¯ºšÒê³]”GŒ žYš.O’XËÞ+ em˜mÉiÔ†Éó¡hZjŒ°"/ÂÍz zqEcužDüJʶRs|fÚ_7Ús7‹gì ¼žD^x¡Vùjjuàµü× ³Ùl©ï‹”fˆ0ÙÃÇ‘2…“:ë€[Ò¹,Ë¡åë(ýOÄõ:ä¥*Ç÷Ø¡È?,&5,r¨Èwá,þõ /þ‡‚/lž­’oõ-3 ‚ZzªKyÈ­…ú.4Å‚Áv¬7.Yží¹í#,Ycd+Y€á¦$HÖ~ ­&‘à¡Q·L\VBé¶4Ãò_<a·y!f=^cÛ}}¿ýªûøV#„gNE§ÖåiSÁRu9¾Aä#}Ø« ˆDשÀ.^ ºÝ²\‘Ë©*^ÊF ò$t--I‡mûÓ?jVù%#ž ³÷r ÿõÉGõgÙôOTž|ظo/94 Ä6ÐJ8Å3Ũrè‚íÖxxª°°½ìÄ+:ïÕz»”ÇBYùšÖÙƒÎì—on°žæmmj 1+u‚¡E…š =¿Z'%ŸR,¹øk{elùPä…‡p¼Ùت¹&EÌX$š;›Â †Ã5å¬WØä J¸B\'R½¼Ê!ð˜ì3({ÔÕ€/¬°/É<£üjDí¼áîÓþÂ]¦Žo Åڦѷ`ÑL´¡Í2bW\ðay4¥Ô!²œàeÞ—r$ÒOYót<åÿ¡±äëý!|éS¬Ô—ed³`©#)J±@(jœŽÊ~Ù>µuŽB”}ÖŸä.ŸèãØÓZÓôÍ%"mè»n½ x=dõV³V¨Aã´YôNäj´@hËÊôPÞr|êPùdêÞÀΡ RÔ«ïïcïÊñ‡Ð¢oφµLŸÊ¹R/ª:"èeoYãí¡†~¼•…ˆ§ÂÉäPJ v‡¥xxòÔR|Vßh‹7;¾Æ^ì–ï=T»ôɳ rD•ˆU$|=ì6y$ÁŒO?=bÙ¿R\w=S©Úø¾»)¬knH¦SP7‹úSS‘§-ûæv‘=AP/©‚šŸÇ)µáò¸“¤ôJükê?«££È z½îDž°d&m³É‚–S£+•ÙÂ1\Çôö:›õ?!ƒ­ÉUoþ™“.IútÕQ•¦v—`›ª®¸êÅ“ÔÞ“˜3LJC©jdÂQˆ3áñTõÙ¤Îôá“lbC(ïUs3T^—Ççuaºj3·S¹Ž¿)þÞÍo'ÖÏÊÐGñn9m–%e¾ìk¡8µeO _°=MÑ×Ò“ìþEV;ú¸¡P¼Ç@Ôüakì­…î*ö’‘ãø™jH¯6Âq;ƒÔFf.¾4ÿ:;7U¨T³é˜éxÓ+ÕC"Õÿœ;f•7°ÙGl¿ ,šýÊÄcÕž=Ÿoº¸«]JÌœª|ÔG~š‡ùÜ&wWŽöq úòw„û"Éå½Râ4M¸kTKEW v¬ +‰1'xQyIAO邤¶ïø¤Sj‚ï¬?gŠ_ù"õ§(˜'2¶£Õv¡àlŠ„›,V¯àáš]-Ö«q:•“Ü6v ¿’žzSÐõŠT¥¦zÁà±i-ûÊžJ…-ÛtäÓÛú‚ݸö¶ ¢eðë!‚¾TBÄ`ÅûæP{©c^5è.Ë‘ŸÁ‘2Ü>YTõ¹Ûæá%'øØž.D0(öjh× ÆV°‚Í"—ƒo°KÀÏ ygÒ—êbê\Sm-d…Ù.eDrpÕjÑÂÄ’” r tPŽzíŒqR©3Ûô,†òqê`KbÑ‚õ§3ã|¦'gÓá‡dÉæ{X)wÆs:þù¯¸<­Ûl¦÷x_Žâjº×§ïèkÀ¢ôîJòHÁ’j­‡ogÿÐÑ/Љgj_s87©Å-·ˆ…^ì¼Åö<ý¤j_ú[g5$A3áÇÀ+‘ª”(;ŽE½NãU=C ¸‡£tÔ늠ŸÚ¢‰T—"³¹Í:6‰öË­½9»âÍãùáü8á2kC¡ízÔtÅ%¸£}Î ì+¦ª¬Fß y«¦OÉV•Y"¿:;NmK/°Í ‰Ø=:ÊEf½7Q_…Šp¨À{ò2 *êñè;CV~ùsÇ#% È- ^åFQ¾+YËš— Ó¸pÀ³œÍÛ^Ó#1%v·)‰Âà½Ç2¹Ô— j°³ÝMì©Ù”´íÌߪçIUÈKY×¥HzôP¿B}Áº¨2Ôt`¥ípO…›$ýÄöÃ@W/öÖÍ„¼FªÒÂj&@BÛÒ•IÒ7_¬}öÚÊj|*‰L÷ŸÑÃñWª P…Ô!s=¶ºTõfEzªt‘oÚ¸ËSù×¢j+`tÝQBÖœt<Éîò•Ò™k'¬±õU¾ú¡j:ñ¨]E~"bõ¦˜Ts€¼ê'|Dø„1|âMY£A:É5×dB‘Ì“’J<R÷\Æž¡þîj“ú¼z³ãxK ù¯¬ìCv¼½+ìà^Hö·A™ºq»ÀuaõOœ‘ ë´À«Xd’ÝuÅï½§6¸äµ¯Éló¸IÜ¥×.Ô£T÷I€Ð™Ð4â¡(G'¾¯íÔï”bC…íñ™Î[Y©¯¤/@ÛÛ-ÃRSà“•ßš6Bb^K(ùm©,1=_ë¯AL}Þ®Ñ uœÂž›ë02e}ßj«_,+»™Ú˜O‹Ê¿¤<§~—2*³ëëœå$õ~•·‚άºËƒN¶±Fèà™cûþÇøeŠ…3_ÏÆxèÁa«– ûMòT´qMì<)-™’©ÚÁŒ1È>毢›ìǦ"¸~f¶ß¥à«èÿi‚ri $W)›Dª¥Lò\øÓrT~? Q–ÆçÇ¡¨Æ½¤*°“g%ñ"zix=õ´þ~,˜{x¼ê‹{y= ¸€%DZª3Y!yš¿Uq¤ìk”Ö²'¢á¬«&‘"Ûe¼ˆÑT-T£iªtâ/¡ªë²-·. ªg ì¡ø¦$x<ŠôÂë×í[“‘ÂBIZõÎíx†Z ”mŠ4hMâœÖ‹S«jeܹgþ%”Dtò£Ýœe ¼S9Ûlûm÷?;†ë3–ƒû=`#‰äÕ¹æ¡wû^Cvv”ú3KŠ¡çÝ‚#Ûõ‚¨§CûýØ„Ï'E}d×ÊAØÌ!ªH§¤ŠÄ r@M î')×UžW6póž_Äãd-“ ù¯“Ç ëne \‹4}ÝÇÆ×ÿL…ƒÖܤ€Ûê„:à•MQX"#kð ÔƒfdŸ$“þeR‹rÛ4Y6&ƒ­5)li‡,lh÷WQ]0 XWöÞ„•„µ­aÑÀ1˯+”‹:ÕÄX¤)i”Aþ^‡®Ò¥ôéyOJÍx}Ô''Я8Õzzíü©ôN5¾mJs‘¨I%ZÊEMJbKó:šIÉá¾]¾õŒyÒ«Ø6¹á´úTÜõ”Ê,«r}Ú­x“¤®ðv į­³¦=Ê™jy &{哌ÑI3°àQz“TzqËÑÌÂÚ“W 2ä÷;5y¯ W€÷ÄÑj©qiG:ýHǾa_DØOí97a¤iHÕ!ˆÌ±†"qöZ//Å.[ÝîÏÓ\2¬Ž÷*ç¼Mên%@ysT¿ßa:P×ä„þ^ÙyÊ1n€|»‰–Î6\T éÈAS¿ßéí.äP­{½á½×>å‰Ü´“—C-W±ïµõUÁ€jl—¼d-L:›¬“îÕ¢V‹D§AuÓ«Ç5‰È[úPÔ0¢H†y~`ñEéeÊÚØ†œ2¯Úô$Š7@íÍsÝv}5`iHDÆÐ픨ᢕÏW޽…ŠA±é•x4¶ª…ßpÙIó|UîèöHÎSµ´GœŸRÍÚì#k szT~Z‘2’d,Å4k$§ß Œ5ðÂÍSÃù+Xí‘l&Ÿí©±†v¥>ÖåW)e[Zü+ç–lܵ © S!«M¼^ð­UÊýxœâ½ÜùR¥–Ã’,´v3¨@ð(–õk0u)ÞXµ0Ô¯Ö“gjƒë»UdKOé”ýÕ”ü›†¢_\°‚/CPV0êT ·ŽETw§fÒ™JsJÞq\Ø©ËCÞ³îa¢ê,á$˜'™ŸéŒ«ïßÖeÚËd”Iî"áRœ{& cŠ:¾Ú³Rø|ηð0áÈϪ9vIìÖ+$žÖ<Bßt)º.zËêS¥o©sºÎvÖXÊ¿¾ý ·ð`«¸Y©ªI•C5Ø×ÓUâ •½êã<ÿבì¢&)öH)ü¼æÅ?êD0pÕ›ï¨7ÝýsØMá 9‡yÃ3I)S‹:ÀÁkW…ªŒ;0ºðu¸\¦ß­~yU-åP)žs $帲Hº6Qw­r5çV¿WJ8—ªÆrWä<߇œTÔìÚ¼]µŸæ”ž:¤9²V)*/ÏûËñ‚ƒ2x¥àÊî‹Óˆb§&¨õK,š®~j‡ Ýìš<¡8AªÊÿfÛóÎÈi —= #G‰4ÞG÷0Gl›g|™WǽÞŸ‹ÊFz1‘5KRZö ô+¥@Ì ·50K”Tö›†>»øJ×y´Üï™—Ä«Rð=gD\¦Üv€©SƒQ&i-pS&O^o¹=£Y6c.vÇÚ§¢Ì‘öuSm––œ¥·;h¤øc3ÅÈÝ-útxÆNDZJ²êˆB Þ®ž#hKš-rI¤7µí†ðDfç‘~§—’ñà0÷õ‘zϘÞë@Å&ÁLÒ{S­w ­€ ÂòK@zö“mÔ (ŸŽãÏXnêê¬Æ%O#Q‹–£$6T]&š’T6_ê³Ê‡.×sVí!mZîA†m EHщ€F~™³+ KÖl󀩩3«Ð"å¿c|”ŒÍâ 6眒å²îx…y£ýâë¤k¶S,E›ÛÉlg…0­’š&ƒ \‚V+z¦ä唹¬~T¦®µBU3ðØLÃ9e©ç޳< Äß:Qݲ¥³q}vÁó>¶ž‡G@@=Ý2¾‹o•V#å‡ Ù«ÿðp!9»A¾?sYÀ„õi~ü7ÁÙž^ýRdZÂÕÃ~wÚö VƒÌ­@Ýû_ÈáÈK’€îj]ðzZ—²rrª©DžAb¾·ÒŒGhY:iE£Ûw9|¡¹­ó’Áqv¦eÚ¶ðœÕ‡¸ª–0vºÎzɃ±!šÒ‚]š Žl#ûàÇ• xÉÆTåÓ='ÆEëæþ* ^M„`›{ *¨¹å—ßÞÁ³Ï¾¨›Š²Zø1£rº÷­í,Ùï[ v6›Ó”OM2i¬¦*=¯zÇèñ{ ¤À§iêºGßú@¨Ô):ÛGª¹RÝÝ„“¬cãn ZÿÔ\ô0}µãkÝôF}¢VC?©ßÎEF'4ù¡:ÉPßO·oT ×£öóÐ1[õO}ƒˆe¾¿=\ôÔˆê]‡Å$o5¼šUßÛb–ÊŠ‡˜ÀÊV¥- 5“ ûä¦põsÕN%é†×õ’¶tLöú£¼Hà~àåò^ÙSy MR¥8‘¼º:¨…¸YäM ,Ç>s^z‹¬ÄÈ=2„, Ï@Šs¶MpdòE× y5’•¶§éã‘[Œ]ö.çnžV=OPd0ë«Ö5xPß—r;AA¢"_rüáû^lô­ÐЕ­°Œx¬“t8F)[ úQõÖÆäÆÿrt\ÙŠgCötŠZÈ\¹Â•@'åg_é£lyÆRi\³àÌÿŽ' o4ˆY`(½YLõhËåç.+IBc%W)šªõÞ·¤÷5º’ÍD‚}Lsuñ²¡!êr˜JUOeuaÊâ–õ™°›G©k»µÞðØû êPò±SZ²&}ÉU¹Ÿ3@ #Å#KÆÎ•öõÃ'Î9#öÞs|qÈMUx÷Œv$Nâ¼µá˜S¥I±¾ýám÷cÞ„B¬^]Úíã¸K²Fe«V­3ž|š^[".Ï­ ÔþìnB.O$Jºõ½ËP+0¿ãÌDpŠöì=XJÒǪ.i3»âXøƒ˜îñ!Úrs…÷+ÃòX›ñðóñº×G0YÞ›jÁÜG&8YÜ©^æ"U6ŠB}Žg†‚K>ý&•s×V3 >@¡qU#”ëP£ÛH «}î1eÏmåÜÙù }D·À'À;­’‹Æn¥¿ÇS:œ,ÿ«‡¬øûÿͦ/Î’ûµÜµ'<޼>¦ÛsÀê„=qÈÌR»ˆ#-{êd'ØÕépÅÚ‡¯ü¨>­7ñ°œPò[ý®ä¸cõŽqñç§Ä&ÿ”-Ë3öÅ&[Þ¿vþ¢’0NÃÉÚzzxõ äÓ¦ÜéK¨ùAäsÀò‘]ÔÁC·¬{á ˆ, õ=(p<Íu„Òkí=Iϵª{Qz•½œK¯V, /Š3iil^;Íüšfz%ó}÷¥¢¾MwEqäåƒu ˆ` %À’{dÔ{MšXŸ&|»ìïù¸Ðô¬^Í›¬Ü‘hÒ=7ÑjRÓÁ¡Éå9òøÎöÐõÏ—VXƒï"Wv²àwÜ#<ò~= t£±î<£6šG%å•Ç@OkëÕ¡­¨×nÇôöz] Kâ°0'UIaçX^Y-RÌÇ3ÿö¬:…lǃdDò¿€ÁnÕ¡Qn#’7Éà¼psTQ‚9[—¢GÄÁÚôè›T'ë…šÜ m)‹»Øò8(d<«¼Á½^CéAØÆñ'?¼9sâAPuÁY¯cñœץLéÓóµ}U;îYålu<é¼¹6Š~ ï3pìÛ×g*F zÍóoê«ÃGÒ@Š« u4‡¬öÊnjñzG{´“þôÚe;å 4¯à\¢ï¸4(%ÑÄW8[‡¼²åCa“j7¦»EÏnxÔñíf!ð9¾3zr=qëAá´ÇÖ¥d±PÙTÝs … œÐV÷I»¡ÔôܘòælÛz½:F<“/Bêzhôœ6qŠƒXF± =ªò |(b¾âGõîY0ïÍ^ú.dz¢‰õQƒítq96ß„eÕk²ÚÔT,€Inp¶k‘)4D +W®oŠ1yš.£•צ_}–o,®=­3i/x;U6Y2'·N_iÉg`EñX_´IDJñ;ÔÕ¶¾¹ÚB— V錑ín#ï¬:•<*t…¾ž˜:ÿ5û¶VrëÀÓŸioM’0Yçùøïzrɯ֔¯þ>¯Ó¼S7gÃä˜*ÀëødPq±8Ô?v£.‚ PưؾÀý[+€Øi¡—ðÙ.¿\/Š’Ï˺rØò5È-‘’õУª+ŒÓW³D¥†ÂÃzɉÍ#ù_:¯ ¾ ”øj^ú3L…@°FnžiQ¥1I,Qß!¯´ÅvÎty*U#RALµ›ò5Ùd¼u0o`Obªl6'´aý' ñ”©oU…¦=æ™í ov½²Y2[ö »óZ¾ŽZý¤£d€,Ù ßDÑ©çiø!ŒÆ'Ý3Äy?ü€É^U¬Gþ7 +ï;å¿þlË(nßN¶)œTpmÎ ܺ“Ø­Æ™¦Ù•“ž µþîËû'åð )'­ø<-gáØûSw~õ öð•qøÈldC•:øÆx5P\•ž©1;òÉ÷×$ýñ ÞnÈâRíÃ3êêàùO¡ÆÍ€ ªÇæ @Àc¶ñ¾xEp‡bX~Yúd·S•d9hI•ø:_ŸK‘vÚrú‹¿ÊD=’U4Påµ4u/[ŠTk×Õ Ên¤ª [R§SO™sª„ò/ÏH>ŽÐb3g¢²ffR*v¯-\uˆn=Û.œN¢x˜@-Qß5µ±(¦äu¥ç¹§>jÝI|ÙÕá>¢%„ç‹}Ó–<çì·‹iU³(÷聾ÿÿ`yeêߥ¯|‡¿]`ÙòOTaùÿ\$–y¹¿ÒX槈ÈrùÇ(²|‡ÿDe9ÅßÊ,“ãþ©Ë,³Äÿnå;ü^hùïZ¾óO?ÿËßüñ_þ"‚ãO?ÿÉ/Ê˱þôóŸÿ›?ûåç¿©ÌÌÏÿ–×ûgÿòïk?ýüÇÞÖ_ýAùéç÷—ŸøŽñËO|âúÊΟþŸ¿h9ó±ÿÝ?Dõ™oø§êóßyæqü«¿·êsûéçÿßï–yæ“ÿìw«>ÿ^æù÷2Ï%ó<õËI¦¬«Ðuƒ“=àsrø 6J'u…”¢ñŒNØË*GšîùTürdƒêõL˜¨,CÁ/gzsié·‚Ôž¹²ú [ÇË{ÉÛ¢nR$ëNéFm\Áîe<õQúx+ª;¼1V÷â)Š_®›ë÷Ó5†kQ}{kצÆZåMcò¦=„¤ H“º&—÷ŒÝe(‡[Ǩ F}Fa²U¬¸äÞëø&Õ/T r<3«~:¼§uÏ05<ÞT¡é–g«4×MÝÓžÉzদrÚ§QÀ…Y50¯”Wõ)•¡ªÒRúU²Ö¹Uµ2/绾À£Ö_~߸ÔRÖ4ê88>]«sÊc¥ØjQ7+;¡Šæ¦ú|Ž«¥Ÿ* ÃïˆYËÊR]xc)(àèVVtŶgiúx*Kŵ_.Uùï!½%í¨ñP3¶é” ×FqûŒ\û3Ù³l›­Æ¥ÓYQ¹ïç›+j80zO¯C1¡”±Â¯•ö¢¬­j]ïcŸù*Ú¦¾°†m;ûy.>;ÆS&‹%¦í0Pž¹å;f+yÑõ÷¼já…LïšWß(×ÖžÌqîgXS†J ?Xwv$«ÔŽÓ'Ñ–kò+ñ‡ÒóŠŠŒ*èÊfʉêúQ0O!Þ%‰¿ÜV%„–Š®æÒ2óÃ}f¤Ç¸äf{ V¦.*ô6m³tPwÌ%èN`sRº]mTK™q 6µnnݧuÓ³>ëÏMn\E3ï¸534Ä `áxªiæ qP¸ž§0ÒtÕó[àƒ;ÈÞx2¢F'?>`Äm¿°ëR ô}Gáýa…'³’›}i˜IDYŽwþbn‡¸ïî)-nЫEÝÁ?ÎòÝGäOÙÿå µÌñº.å‘”Üüý˜…¾yÍD6³Ñ§:NÄÄ 63É}“ãx£SÈ$WàÂ}L^vãj|7×׎~a=åeÓ•—ë"{¨q'RfðHÕT/aa)OþØ»ö,ßÖ`¾Ù_¥êo]ìƒí©#©sÂ;‰òS¶' Û$ïVGýnbˆ£ß»Zö=hބŶ+Z—‹ÕÓÒ”N£°)Xy³R¸u`–j˜·B E§þƒ7ªþÑíŒwÁn¼5Žœê„tú«/ëè¨Ø>Â9Çá¾2×ÇÍë.ªñÖ# H®î—cjÎ,nÍ.c¬.‚¾ßÃÊq›ñ*ûQÉY kòØžü}liÒè§X–úœMÿõLzìÊ€…¡û[r?|Oâþœ#°?$î;sLNpN㹎‘$ˆÜ<È!`g¶;T¯Uºê BÅ…Ãö±FpRu휀oYßjBËXSæÐ'<P‹_`S°à(›Øù½AL¢ÓÅc±ËšÚÎåXì´$ˆMúìRe|±+ït€óå :¬t³ ä—íHe`ïWÙ_‹Mà"Á‚,ÁŽzŠO%È/,§v·[œWÊæ4 ˆÐ3¡^’žO+MiLÓ ©”ÊÁDÞ8މÇÇ‹öÐ'ÈỊê;sfsIHšh+]Ç>’½¼þ™Ò¯ÔIP$’ùœl?xYiîŒÔV<lSá8²(Æ{GøCóe@ P-$%kï ñ¯Êq_ã—sßÎï´ƒòͽÒm‹¼zFÑd'aR©°–Õ› ›ß*Uë›èaú:‹š|æT!˜ãù}ÒCVnVZ~  Sb[*ʬkú˨¾ï0×¥«(sÆ?û¼Qöl×Á>aϨÊÌïŽÃðc+U²8Eš]Žžé`ïøv¯GëF~bVhS¹ˆIúSI8Éþ¬}_z9Èœ–ËšõäöƒE-N½Û…&v˜€YÞŠ­Dî;¾Õ'§|í¾¯ÞùAØ­‰ÀŒ/pß@¢~“oPÔ̹ûI½ ,Žë4 ¥ªË¥^~òJ•QÙYJ·ùlXö,õ*û/øF- Nð­ f^Xyÿ0H`­iOÃrsäX‘.­ØOI- {:mp¹–‚ù¼¼kkV£e6+ö;8ÀZ]7YôÉ!%*Ó:U!A ÉLqNjÝû2Ë+0Êæ _Œ¡µH×ÍÞª¶ÇܲÜsþÐ1|•RŸ‰Ýh'XñuÿݦäòúÈ—7KʶÜkÀ]"uk†Š `½O§í²¥jZ7÷ð*;é™v?‰¤° Òz²È,?U+×K‰s\FÙ0+Ç2-»ð5¿„š{øhúÝC=\íx€}ª˜ÇYyW»Èñ¼û¥ŒZhŠw’óYë,sä'—ÝÚ¾ÉXú•—ÇaSòQtÁÊ•à®sÚK]ÜTµ½Ý _ µ¦Ô`ï¨ fy™ð”À²ÖžAm5v7_œ¢ÎÒôŽ«Ì¾ ®r ÉóT!]wuc3Q¦¬­Em£5Â@‡\¶vÀz†„rÜŽÏD%yB•6ÛJÂQ«»¬—ÅÊ!Ø %P é0‹ÇØ]ûi²Yxº$ôãñ²÷ŒŸE’u% ;¶-?~Ä’q¿ÊdpwÞ1æÙƒ,oë­ð¯•&G9{FpQƒs©ºÚ+gOéÊõ=g ÙÙGÞþŒa‡múæjU ã w)¨Ä(Cš åóJrô±ŸöeQÕü©¬Ù­Àm%^†-kÕ *–}ÿC×Ò´é¡$,g–);›oÞçÔ¡Dû](°ñ;ed>Y¼•ø^€¬Hë\ÕTWYî‘¶ÑÏag(=®X?’¤C9/ˆI ÛkºÉEaÕë1JàÍ¡ßZ!Åv+Uävññ¥ê²éöÏoÕ2…— ÝáÕwäʼS5Áx ž®l2°â&ñ¹¯žé”MÒ(û+Zø„Ñz´ð JâgÙ´/Ýòh_ïÔ>úh²»•x¡jÕ2HÎyÒM9Niî}½E&¬ Ÿžß,‘‡H}’TØp:›ý-¯ëëGùÏ2`ÛÒ?[ø»¦G@249«(ÚŃPL 'ë©z¥[·¤À­„@–xúiêD˜¸Ža÷e¯¥2onPv»?Å)T+ö%© °šéce¿”r@\µêþ¶æuë"±Õ›Õ©Ø8JØÝ«oÜÒ‡Ó ªª„Òçˆ ŠRUU(ÏL* ×mh%œX ©Æÿö­‡—ûȶŒ^2¥¨*¨?? ÅhPkoЬÊÒ¿Žî™‚Êv`?Ôr‚`œ'EDäÛ=y¹Ai._ß³TD7(Û‹+LUF©ÃHÇ®hQ€ÖLcŸäõà ¡w¸ˆy"¼u•—xU#²W&`вføËt[€Ö5WÚÒb@ÿŸãM’„ÆõXÖMÒ¹NI„£vÔáœqkfÃlæ_ÏÃã&ä¼€Ï gåyݾöVáÎ1å3h™Ds gêžØNM»„¥ÓR¤v³ ÌárXE~á­Jk#©nÕS(yRìDزÁ”ÜÔNi´ðy~ðßycyˆ´¦ˆG*ì#©P¢¾N+Íw(’TP/Ó³í…\„3Ð')ÖØWEôª=x D9-ájKîéTÂJjD‡ÝVr;VBÚÊfjBÉ0m<^å’–<öè;Ë[ýH œ-±ŒÒÌN ß_½¬hº’{Å#ì¥ÇG’#/ß–,Éàš'.NoD%—nÕÝ«S`ÔD?æu§gFAÒµrvìlGô˜R9˜ ¿#x®üý=\:sÊõ8'¯›:QÔ Aé[âÆL!Kà”Ä ÐD5Y»—J× ý¦üéuû¿ Tcš¾O™Æ-¯\ 0ìž•$õL‰Ük?ÌaÊV²!h¨^y|¸"´R‚¯Z‚‹¯|¢¤P^ š}ô°•hè2“3aCi(PîEòÓQ"ãhB¾GÑAöž‰(°Ê§õ;ŠÀ¢èûË‹¡JP‡çR<ž%æÄ°EÈŒè ÊŠ?¥^ %É’&ÄPÖÚ*yˆñØFÕ·^jÙd°•wp;W?c#n¿Jò4²£1Ì«c§ðdÉzÐ*C¸õ‹rk~”ñˆ‚(Y“ó½Š&ÚHä¢äs 9Þv8âTÏ1†oQ_s~Œüž#†ŸZÆT™™Ï;äœ=žçwížü(;<‹†_UÙšt§Œ BŸTUǧƒöÀ1^›8¨e?g+ÿ¯úÆ{±áTøÛG_g³µô ìå™:É,•I÷ñt®ú¦s^ÍEâh™\R/¢}‡O ˜#p¸—²:÷ZB©Tëì?é$¨, ÀoÑÉŒK-¡¦ô!PŒA¸M‡SvǶ‰Fj‹ŸÒ€µ·>6ÇR‘ÅW§Ç@GôXf10–»˜-Ê.%Ûî)c]¥1ÕõÆ"8Ç䨽Àó%Y‰c5‡î®h¦žt_!C84°s`¯ß$*RIZ~>Ä»[gB¥˜ûôØT—ˆ*w½[t%=(œG‘ðhMä í+¬´ú#–¹ˆ c<%ï˜IŽØêÕN²Œ•ˆÙ£j¥`ÏHœT~ì™FöÁÇÑ+ºâŠz¡õá\w»X.u‚YóÚŠ™È¨Ñ)MÈšZÞ»7ý‘x#¹ÝޢÔÛÏ}ÉfV’hP•(v ˆ8·mj»¢¬!yüa²µ‡› ä`›œ˜ÍD]«†×Ô‰‚²4QX®Zã™mv‡Lvílme‡®¹Êm%‡ÍX”ÿÏh3ÁªÚ% ]}šqÊRV*l1p´Š 'F({¸a¾—2Ä凚Ún„t6¢.n¼I¥!¢Þg;²$e—íWÉ42nm^mQJ¿Ÿâ§G?º¥nÑçšÞñ=5¨4Èëšv½EôÚ0¾>Þ“ÔžEglëTðøBMATÖ¯àÛE©Ärª~=Ü(è‡Å×R’„ýé!_tmhéÁryï£Òåì¹Lh}žL9Ρ7ÏTtåÇ­ûeS·›Ð{;íBL}šVT:Ù|‰MY0¢¶û4¡J¡hRA€uGñdô{Œ¶Id¿:c’csp G‰ }h¨9|ÈËãá¼¶ áùÎ`¨Ržºg>Sý| x‡]<’&ùV~B5“g{1Ü6QžrA4^#±’ x’ݶZÉQ+&õÁ¦zâž 1Tq>gæUÝ·asôÙ:‡Ôƒ‘‡BÓd£3Éÿ&JÛï(|*Õ0ÂÈUĬŠÈ}-ís›#ꎎ¢+f׊gG" Q{Çφ̰G2x ¡ðz´¤Ö(éb¯²ï”ýžê;d'>+ád¿žò•Pã© ßÃûÓòØêZÿ‘ÚºÙÓ=(/Fm>aM ±Ÿe» P¡Ëë”XmÇôÖò |æ(¤Î)¹f#¹PÔdioêÙõ^Ü»¿»:¾ªdMȰå4=âU/‹Û´;¹ˆáž¹´¦²-õÍ5ƒóÿl{Kt®MÿŽ QMëÄvwJ—ÉŠÉÝ'CA#½Co*Ou_®ý»U1¡¸Y‹ Ùš%¬|4L<˳ïÊÂ/pN6m’”Ú5¤6€qs:äp1‹èq€ÒsVˆ2Èà÷½`¥oSÚq]ÿ³'”ÁQðÕÀMžg‹@{úÊo¸rgÐ-ä“õtd¥xn?¼y¹®LzËÉÍs" RF:̇¤·‹Åf_¤új%¾œ×Såý¾>§¹ˆ Œ¼ ÕÓÐòp9¡HÝ}¾Yi5ÛÕ ŠÃPô3J;uÆ%¿O½:ùÖôÀ~»4O¥±ŽâYÜá¨1‘}9‰ÅÆCÅ¿#¾»ý”yš¥†à˜«³=Á) æFÙýÑוæ°ûƒm–Dm¬ÂU9|ÅL·£3,› ™Ò ìú-;ä=ÍÆ)|íeñgÛý¦…¢3¸êÅ“’§æ0๠ìÞ*¯L§WÏôm’«jd1§—H°±±@& óÜêsëöÊÿ{å5±Ã¹jÕ¾IˆÒšH¹¤ª$2ØÛ[g7J]x«þöX¦@0ÜM‡Zª¦M€pé<@o«€ñ¥œÊ¢2¸(Ñßô(«.›ó ;nöw7ÝÂÇê^(ö°v{MÙÈäØ.Íkߩ۠r/žÓé‘ô€ ïLÂÚ*X9ÇFåF +Y@IyźSæö­wåqòs+"þ*aôð«ÁÖfóèIËár¥åcn3mß[:·{ö:Àëᢳëýè+®¾|&“@ Ò YÏèp‰ "ï[ä³.²Æò OCë@ ܨG&±p:)©óñÖÑ9kÀ¡¡q©€{©XœU¼XÙÙÉzeU8ŸGjͯ6ÔIײ4[’¿ÒWâþÚäoÝðnðŸršŸ¢J¡Z>R]¯qê¾=l­œ2’DÆŸ\|—öÝ-¶x†dòŠŠ–”åô$¯:ûë18ê`×’só—ÓîYÕu{×?ƒÍÒ(ßmžó0kñlßõDõ¥ 2`žú£Ÿ™¼>ê¸\PÑz0¡¦u=“1ܘEÀ¢U_êeuK!ŽÖŸÇ¥©C`°ÔÏAñŠåƒM[n‘6íC°ÏûÔ xÜçpS!þ}úˆÚز͒:ªŠ÷ÖƒÃçT@Ò­Ê™Ë(1–´"r“5©Š¸ Ud½U65–ý}ϋٷu=«RüÆ3?dŸÞ`•Dd%æ¯IWŸÃu]'9ÖÑ$Åñ¶Ç ïßÎ]‹+5¥Ó*±jŠB9¼×±%uë?bWˆ(h÷à ü»õÃáÁ™FûïÀ.±]¤ÙGQâAMÔÓÔµ`Àºîä‰òÌRÚZ~oBçmtÊ:kIâ±%\ì¯ ©Ú”§ú€ãåpls¼x*‘nŽ—þD8œÂ%â×~ÖîŠcü0<™#—ê¶lí¨ÍF4¬ÀzM?‚³Ón<ÙÔc¡Hè_¼²Žu‘™ØãÊ'7 „©ÍíȺÔAÀy-޶GyZ’—%³vé8óƒ=?àÂ(lGQóáIÂn`§"ðø[ƒµ’@¤Ô 5<ÒV) n£ÄŪÙJ1SK˜ÓQQîqë“-Éë,S9Z‡Ê)@k×’G³Ÿ¬ö{µ±¦2³‘mRFu2 i=hj–H·2½ë¸EÓ"áTÍLn7\ªd‘+UQ"ÂQÜ Ëݺ_v–:o»ûd±v¾mÂð©:´…¹ ôµŸWóѵì*ˆð_Óáz§—URkˆúKV(ò³5~Tàzßù˜Ù8p¿f B`ô*1+,ÂëËv¦<`}Ø«*0J²íËÃGâê{dç<ë(Èn+²M5¹-±´ôÕË•ìeñ žpR½ï‹$É£ÝÇwmêÙ¸t­D_Ö…‡Âº¹5†Ön\*/ŠýGé,·ýbUݱÙL§sȃqøVÞ8ßB´* òz8òf±©M¯<éõÓ-Ä `ݨ°ï­3¶ÎŽb¥&e%Ù‘wçªV¤ŠÍ l£s®lðÖ«{¨…éià1ÕvB7|ºÂ9ùðÖmª )Ú¹}"Ù° ‰%kˤ««ªÛJôÃJ ϶뾩9XiàB¥uY2w–¾ðéꦿàU•öU\“•/Œí[ýX5·p—Cd> F›++m„Ú‡C"‹(Ósƒz”òZA¶"ZªñÀ†7Ð{DPa—Åu>ÀTGIAûe)©Úœ‰y4^pÖÀ}¤õkç1iJJÈ|Þcö(þ8K@™–ÂsXÒýº†z³È¼V`À«§:ÏÉ4áAnío»–òv¼õ¾xu‡÷„²ê¿òãÜG!TÒ„‡cD~À+%¤úV¼Üu¥­ø«å·’:òqÛ1ä™óXCv! .)t­2‡œN2Ö „]¸+ÃËÞçM8Ñ% ûû’íh°©x³@Õî AUQ`¦c5Â{ùô(túÑcGÒV8‚2ºhzÀOABÕ©®Ggí÷É«z´Úº±)sX54µ‡»†·¦iI?ÒöOÿͳÖl9kͰð„Å–8ð[µn©ƒl¨¿” Ÿ4íˆÓz˜ý=›ËêºIŸúËš>¦¼N²ée}>"Vb£|›`>YÊü"˜ ªQÊšÑYHE ºƒª¥+DV½Ñi,½©¯ø4×)Î &Qˆc*C±”ä²÷øIÀîź½@P=5aZ“~kêIRå[š˜uîyŽÊsŽ·"u$¬GŽÎ­j;µXêž5‚!ïV9¹¢Öž-ßG”3{q|@gçÙ¤½zˆ2¢fÕWáÁ¦Yz9”zžôÅC[×*öq„F}¢WgIMK$”¹0W¹©ê/¾Ø8ýª6¶:¿’D³~ <êq:À¥¹Èþ“?V—Lý…i¿kªÀé4‘rN¹‘†È$7X„‚R:+ݪ¿9€ˆw{lœŸ—}ÅÊí:]ë(Iv º’‹É‹Àyƒ÷ëm›ÓÙ»¯ÊN“É¡™bï'>Lqù’YôÒ’ms©ÜÀ"² –Du<µ:4`®SbÙàk;(°¨ÚTY³‡½Ž°Ê´S˜÷‰ÆZwíZÜ—vq§ªƒ¦>mŽu}¡»Ðá~£Û†È·¥4éÐêI×ãÏéH›f€¬øõ)¦ÍfÖJÎluQ%Ü6;•*UÊVž5‚Ó¡· `àKz9ï艚Yj/ðäìgð}QÅ8-÷<©NÒÓÚ¹±›ïsôDs@^ônR‰œ²¿ë–i·´KÊ ¼m¶YÏñ éñŸ#_”=‹¢ˆ"?‹ð/=­ÝD.‡‡ØtoUbéåqó?»rªïW2=šexÛ!é¤wÏ Fí+h:ß~†ÂÚHŸoëʘÓ_buŽßÀ|æzå½²©ÍBQ±ãÉâªòXWà}•qÞ¡~“ã¾­ãì6ê´Ç Ç¢L åcÙÌEn«ß [ò‘ÂÜ€ˆ<ÑOpzßÚÕD‘°‡ d‡âùЧÜ*«Çá@®TêØ'Sh a³¿c«£qLN‚tQ©éé*–5 ©Dt¡nÜ6MšËéÌÒy.Ѐ;¶Š~܈¤i›·Æ… hõõ]´MV‰ÒÉò  Á”Å0$Ê?n%8m ?U½‘Ø›©˜uâ`¯Àc²©C{Ïš¹ÚnUáóÈ&ËÁÝÔ‚¼ŸàFiQܶKÅ}p¨/ZƒÅuÃîZ­ØZ÷0¯*µ}$˸v`0hDð˜{Ë ”솤ô™d7×Em”6ïÝ—“°d¦$¼Ñf¤¶m÷SüKbŸ–Köñ)¸o[s‰’×E|ºÏW›>Î&µ§UDZ¤èKíüŽ=ÛU @ <ûÒ`!Ù£½ô\¶t³´àIª%5++°ëfOXG?—¿­‹¨î#+4ÉØ¬å¶̪Û&›Ù椃nº•Xéjð«²zíNÎé u¯°®ȧ"Ñá„—YåoE\ÝDaSï}øÍÎÝëÈlï¾eÊC¹æ›µºÖЕO’Òå!(/eqÌ)*p{Ò2p.²ÙúU¸™Ò—ÍTÕ€êxË@˜?æÓ£æ—3:ÔÜÉJ½ï|¼6IdšÇSµ°õ"lΚ·µ¬z÷2úMà¾ò¯Q©^Zu^׹Ȗ(Ê¢¾õÎ%hdZ\…úQéÓû8xÔ:šB”ãžÞæÆƒT5)À_9ãiÚ¹ômí%§±‚ŠæQzÚÐÚƒJáª?>0®Ñ òZzÎ9¯¤É›äµ}¸¨ÿα¼'¿C¯lþÞãuªcÊ<€‹„…|é˜¥Óø4keJâÖ®"ƃ2!»þô¼IO” [OD=»ŽûfÔ¯¼Æàœ Á ªo¬K‰%ç%ü,5ùœQ”v§àMˆ7¦5²çî—ÞvÝN$u Üǽ×Îsª¨ºcùÑ}NI ¨|&¯ù| ŠfŒ.Ñß1DÇqý’g%ÒS =³\îHøiTi^¼†YœxÁÊ}ƒ.n™¡Zf°ÁÉá¸sIAîOP³LñÖøú„Hc·|Æ¡çªÍÁOç©Õ w´:X4H¢!•²j„-öó QÐåɸ˜ûEDÕcíVðö”‘‚C) hsj3ã¥ÿЧ\Ú(Np²ÐU%‘Þ®(ýÈÏ7žÿP/FiqGMãNPÝw7IQËÊ'•;´«ó ôÊ ueœ¶{Ž$êãèçí¨Fw ê9ú­äœ»p‹¯…©Ý:µB²îAýQÞÛs9ˆFzòìÝ’.N´ysU+yì"¼õ=ØçÌf£ˆï“Õ™üNIt8¾|ãNZï‡Z•ËnŽ'1 ðêsìPù¡p¯'œKŸ‚çuNDôH(ß’ÕY3-•Êu¿ÝÛåµ{°óÇ!*Ĭ¿Ê´=µòCHc9D-[´©®j.ik¦ù¡ j·U:ï~(¸Ê§ªc£EÙÙá;bêàù‘Fî¥xhÒ–³±Q×34¢$ó4…º©wt [ßs‘ºoïrÆ|ô86Xðlz+%‚sJ5ެD™Šyº(DžÚ®,¢éY«Qºh$"¯Ðjê‘$æ0[/ؤ ⊣Ñtªá%ž(u|“g7¹…¦õ{OD(ðêËG Z§2ð½^¸ä˜€á"P8žmùýÏ3—TÞRJÈ£˜¢ ‡5©ý° ©mqErcÒYMY²¿'þ“Ì#æi=ó›Á fTæˆ%ó-“Sïçx½ýç ‡ÓXZÇR·«Pd÷tPOS8Ê?ýšCçZ,>Ž`³|—ô÷LÅ »j¨ÜJ"tPrOÅâ¥ÁÛÕ—´=ºP(i|óªiO滪ŠëŒ°à†Œ¸¥`ž¢T¸¤¸ç<ÔW{æ=Iêê¶ïGÁ>*ðN¡ë0ƒ^šZISó©SþèÞÍ ”y•Å>ËXä?|¤‹Kå#KÀ)O:æœêF¾§í©GL-MµZ™ÂÄYç*j’¥.â,ËgľÇH­÷ÞûŒN5J»o:øaW¾â&¶:ܳMÌÅ‹²fÚçUÄI9á‰üBÈaÕ?‰²‚•êq9®¼Ÿö·•@çT xÚ9«ñá,k&WèEœÎTqËåØßsêû!¿²²Šf]*LÅtÚÒLáZÎ…’jˆö÷cñ8 ‘b¯ãV7š4Úƒ-^7‹´ÝîQ»»—ªÄ‹{ë=»í¿ªDP¸ÜδàÁ:[á¹ì\»SéÝ£¢~â -¼o"ÉÃêÔƒ<—3Ù–^ö˾C¦ödS E€v;ÎŒ—ã=k$#X&•­‡¤ÇËr>I·§¤|˜ý¿-M8(ƬtÞÔŽ^1Û…¬LѱnzÜÂ[yeÔÚúœìTÎð>…õKì­^º²¤ñjAÐûÅ5;CJÌ Ÿ»Ê±¹F­­•ÿ­¸ –U¢óÞÞÎTœD¡¨+©¯ïmBþSª•@~8Bý´rdmõüÙTg,²ÀÛQ;‚ãU•/p;,%—õ‚Öo dËËò`¬«ä¦;Á´Eõ(RÇ=„Á¾œ¥Òëï±Mû€S)ß_µ¦íÙ—G˜6õ&t3ö|†S§-sMÓž»æs‘¯;Z­+}©/9m“Äž¿ÄøÜ±m•d/Ùº+ƒ¦d—LÝcÅf;®Ï³k¢L*®TVSKzSW–>Òwm±ú¨ ž—Tq6d­Á|º‡#ßyá€ðöP¥‰vF úŒ¶K“éñ?ÙSWoîÓôJº>„2N3sÅߦíË2ˆtNÄHfj´xP5švJ—’€”µž»1ÕRläóh^Š…ç©=Ptj7T‡yævNJ}åØžãïê #+‡à¢ùwP±ÝÆ©çS媖JNÅô2 ›åÒ¤X’3"yÝ`)wèqœQ»”Ó¼WŸ„Þ«=C(µsRìDî ‰ï&Ð%¨ÙN"-ãùÊ,@L»QZÖÔ©Tº4OLnIxéŒYyøØµ*}“Bü†xÙÚå¡“C<‡u;á•odëk‘HÅB¯«›/únÊT(¨¸w8e?›I¤.ýö}®×ë -‰sÙÆœUêMÍ$c&Csinw¿‚T  º>kã®M+‘»É´µ ѽ8Ûù·-×ê,ž gU±„Óøú Wú-/ýŒ¸‚?YMd„ 81¨ÎÃ^s Q£' Kð T›ÔD×à¥<+xŒ¸Y–¬|ÊðI–pyS²Eâ·"‡Î%;Ͱˆ: Ùƒ¾+vÎiÙ\’ÿŽ»Ã:xÓꧪ_ôM{ëÄkûºŸºfBº©ŒÅÞÀàm‡“â•]pŽóª„ëÑTMñ¤äsüe©ZXX Ã6›’×øÊÎvriŒ˜¹ÑŽÏ™Ø P.ÇS¨@š¢eFµGJA2y€z4oŠ…tl2§B¢”|<‹=ÅWBt£|âc%{uM{WŽŽ„~é²}¢V–Ý#ôúÈÜÿÔ£ ·y8iz§,rp™zÈŽú:ÆÞÍ–‹°¿5›!u¥s8«ñLކ·ÓpîŠøwu÷P+ÉÏu&TÅœÒ}Í×ãI•G²W•YŸ^Uïш¬ÔaÝ£_6WéIü„ïKG둇»§ãï/1»«èõ°-“gwðŠKQ¤æ´rz~=ººÆR2z)½£BãiB8R#‰JáZ§(ÚôTIg¡U*:"qp«_û90ާH/Ø·)ìÓ ’U0I%feþ/»•·ÍÖ9•,} ¯èríSÕ[Uj)žÝŸlRw&Èüµž~¥¨YA|÷¨{kuç¥PéQ—–s†—uUç’u,&Ps= ¤K³ùr Á±Ô˜%(¸&¼Ê圈û`amM%¾õ-žãí,Û‡Q¥k¾fj*^¢¤f]6ÁíoŠ8:*Z:]m·%¥~ˆT!º€óI7C¢¦ˆùX™Ñy¦t”X€ÂªbÈìåécx[¥‚Kô¦ßÄÞÑòPùsÀó¾)»z½x‹Ä»@yé°Ö8‚!O ÀjAo­Í_²¹¨<§!hì£/ûåÔ ’Z§f ²‰£+Ч"§Û6¨C!ˆ”ŽŸS–® @d+‚A·;X!× ÔU©ÑùM™U"^™Ï¶©g_@TËsMŸë]Þ*£hìB\67=·y©ûCýäÒ«n³JL™ç¥ìròR9Æ~¼•ôh¿»ÀʬcÝusÝ@fª8[œJbŠÛöv€÷Ò#©Ù¤Qt™»lŒûzŸ°ïñûøúfüÁïöÍøƒßá›ñÿt}3þàŸoÆü5ߌ?ø‡øf„ûÇç›ñ«oFù­oÆó™oFÿÇe›ñÿ9ÛŒ?øÇo›ñ¿¿M†.¿2zHüøÇõcê?ýü?ÿ»?㙜[ÿœÃO?ÿ["ÇŸþñoþÕ¯þôþíŸþ_ÎÓ4#—Ÿ~þ7ÿë¿ý7¿ùÅB"×ÿÄl#·Ÿ~þ‹?þÿøÅ”"??ýüÿÿÍŸÿâ4‘¹<¢ë/þ\×_þ‡_þ¾xsöïþü—?ðöþèßÿê_pqñGÿË/?siñ›ÿ«+ã©þü›¿vC… ûÓ?úõ×>ÞáÿÙŸþý\@øçóïç Âí|¿üÄãý?ÿò·öùå'îë¿ùå'nêÿúËO\Ëÿí—Ÿ¸–ÿû/?q-ÿí/?q-ÿ¿Ÿ# ßþÿúûù“ðíÿïßáVòð ÿÃ/n%\Ëþ=L¸˜ù÷66áêþõßÛç„ üÿþNÛ“ÀEýñ¯~äªþäjŠÂUýÏ¿ú‘«úó_ýè2üÕ\Õ_þêG®êßý—û«üø‘«ú_õ#—ALù»ì¿†KtZaÖO^¤)‚sQ…g·«8=£×8u‰Z‹ý²Öy;ØÖ¥ËPJR¡~ŸºjÔ®JïŒc^?{¿T¿5曆«‘/œÍ©Håún <•qÚJÃQ~R\…$Ç€Úý®×–ï¤êOû2×y¦áø€û£´Y¥Ï­Yû”ôN5éޱ݈Ԟ{Ææ¥r^T;”ÑüO 3ø$Ô$>cîúÓY¦¬öhT÷"fêÊ­YáºrÝýë ü©“ÊŽS])5ìû%mÞc;ÖF}üÙ’~ÓÖbuF ÓWöð4D/Þ)¦h¯‘Ê\æ[¤ˆT| u—”O-TŸS\Q•})mþ®Añ¬"@ BžÏkCòµàä?Â;Ë{\X>écAûLawÔQ÷½¨!k{Ê9)O~=¦Ü³ðp¿%‘g+Ig™^¾ñ9öß݃MÖÌ3×Å×=Ô¹ûHA¥G¢bLIç”o>¶IæMÅku^öñ (M…s‰&—>Ö/µïØJØ)J›ß¸[ ÚU¿.7­t¸„O}mM?ÓÎ+äFm¯¦ëƒí$¥y¸­úIJp^Xž³nCî@ä’ï™tL`‹ÆÆ·dùø*?²fN³µ`‹øîêC¨~›mv:¥ø¼‘§wÚÈý>kÞ‰*ÛEW¶#øí{ª4À¾át[åôϤzÁë9 ºÏ_ð(íj—<Ÿ#Qwíû)AæŠZë‘Oh,»¥}Ô?î÷aK÷Õ•—ÒÍ/”@O[¢P’¤¢hP#Iõ£úÖO¦mÈWzyJŠŽµû~#µÒ§‹»\¯>5 ÙÅSa«bonåîP÷ ®}Žt]ÝÑ-§nœg—]fâW>¢¤”™_þ‹³[n?Æþ´ÖŸ •_|¯%A_žw¯HhÖ{çqº$5ÇßÕôCR“éVD{<ÑYp"d\ø×-ÓîQx¨dîû µûP<Ç|C‘¤éÑä¦_}}ï{ñ´––VqIŸ¹ŽÉêÓB"XŒœß±Ù*Ã5õ²PXzÞCu†G²”/WgšßËgÑdX›«XçlvϦ?€Cmª–HoÑ®‚å>;¥­~¥.SM±¥ºú°1âE[ÑÆž ©%•úÆ&û=°:yÀöÑx%¼…µ5§¨ŠöÙØ¨G~¼¡Þ’õL[ü>ŠWzЮh"Qù©puÅÃ$Ö—æ=Ã6êäq¼Îw¨™>V¢z;‚¦œÒ§±üWêþTê¸Â›ljW‡#nÞäVê¼Ú‹=~ z­œŽlGR“x9·"ªÝ )å žŸÏ‘­$ÙLnô”§°wû¶}¾©ÜµzØDÚeã°¥DA/—«ÏHe­º*tÃRêuÑ4"J6Ç™Pç㨠Ûy;'Ÿ 6«•v=!Vgô»ME¥·^e§¶Ó cÏ×iXy+d_‚q¹©:Öå»(CŸëûÂ"1©‚k#†·™›Gnþ 5 ÒÞc€ÐRSÞ‚—ø-Å’Noþ"M’å«sšF~ÄŠ<8Ϲ€¹lA:¦¥ÓwÜwmR"!ùHÁ£_<Þ:¶úû[ù¤Ñ„¢ªNl¥xÊ$l.ýÓz$”‚™ùÓƒåâBxd à g{Èäv!¸õRã‰o­b“§Àöz”Q"w¿ëÒ†¤kdÜUlžÇ@0û„3ñöfWy OZŒGÞα¨Æ:Ðüƒ[Ê<äÙ½Qö‹-©é³†î€§í~2Iý°ìµüó2L»$mmîÞïÙ÷rî/.åˆä2ÜÙH¨'Vq$Š Üú ͉Úú›)TTÁçò«bªŠ'Ëï.ü’]K™`ZTë½ÃÖ|êi ;òÂGn®*æÖô]P¾Ô±6¢`qÞ§dzSä£Áåy†È&Mòºˆ]y§žDmÕþZæ–jˆ·h6™”By¾ºqÆN;ª²:ùWñÚ7°-èW­‚+ëŸç74á)Ø[æÍñ”ûrY!&’#pÂ1©·¾ëˆ²k—ÂS³)¼&¹äÐ[uÔ`Í ùróÑJ{^<³W1 ¶Ö% 9å¾Ôÿ_ªÞGš.!ñ9cH¦a¢ ¾¢v¡QœMFé×›^'©Yb6MˆßpÞJÛêP7õQiY¿ŠïV•b ñ<À‚^¿«=ŽFG»“†ó[úpºUKHZ"$ö=•ˆÂû±}Ðí$!ã·Lsž;}škçU(îk~Œà8àŸŠ7_HÎ!Û?;|K'Þ*aìQ£=(2OÐá-ã ƒ‰³Fµ8ÚÝ…I`gÚ.}2F+;=’;/2¶¦2X›€Ç%¯[{;=:ÈC¹üø± _JYÐkRä(UUÉØ×ÜC/¿es£Œcq÷5Ldþe…—F²;ÄHªu‘˜ ãY…ž§\ì8[V‹¢ŸoWÁK_~$ûë–ÁNGý¢pO‡µ×ÁJÚ· ò‹ê;“à¯ÂGhMЍ‚²{pI#–íßä!Z•8ÍhÏ{cŠšådúkÉçW•‚…¡Byaù&é4úžõj‚ªaí²Ö£–²TXÞóáL¶«)yKøïÑG‹»9’Á3ÐÙ€J9uü Pg;›CÒH5§´ÌËär¯bí[%` Ñÿuê*³¡ä=m Ì'Sžû¹ÔË•UhÜRß~H˜)N,”§ÇKI“F£í/7Öì‘àã-&°×¥¾ŶîšÅl×ÔÉúœm–*%óÁsX¨[Á°¬ßÚq¤ÕJ-½RÜÓ¥{j0dP:–µ=Yt:Ú´ÉŽr3éÿ"¼½ì=LHNi%jœ@.ª’_^È«ÈåK€¸·¦¶š ’´¸ªŸdU¾’œ;. éÓ½õ¹€0€\©µU{UFÒöh}NÚ©½;ñÒîm(ˆIÈh×K¹‘5$$< ë·¦{õVaåèš•1©stÀÛ„û¥wJTŒê,­Ëó²ê”$Ù“¢IµGlØQXíÈëe.RaS¼dGm|òŽT¹kjGSí÷:à(Úé]öŒ<Ê¥z`úUä•°s*âV/õÙY| ¨Y(^šCòúk%¾Lέö–A11KSÕ}µI}^ýU.~ ­ÑÂ&qÎ ™ê‚ÉyG=˜ò‰Q¾¢“ç›JŠè­^³¦Öº¤°4êôì™ÊÒ¹™KÒ=ÐØCŸÌ‹äá¦:“ƒKëEá 1]  7]¬‡*§eD­ã²æS¥§°·úÜêfTi‰‘ÀáŒC„][hv•¸“J¤ñ(–uvwO½7™ŠÕ÷‘5ÎæSòÌ鳞b‹`õ>¶®±à¾x *'í¤aÊyÊ©ióÑ„ÈÃGE;´Š¢ð O¨i8Ȱ½¶uç\W'Œ;Ùy_¤Z9Á*9éÉxÞ15£Þ”†Zàn¯´ï“ìíè(ë:ô@dQéå2‘µ£&G´Ñì´|\Lº &½© â¡§sˆÜãmÓñ§ÛC¾ávf‡mg1ù¿G±ùÓž í“[ŠK¨74·õ¸@Ÿ”ªòøÿÆÞÿõZ’c×~è{|Ší u‘Œ  AFÐWÇê##éØ÷Ú~HUíîN«*³••ÕNCßýþ~ÌêÊlÙ€ øÍð‘-ÕÚ¹÷Z±"È9ÇœsŒ¾ðœ®RÎæ iˆ dŠr¥…\y3ç¦âë:xN™ò„R×Þ5ojôð6½T Uõ|» Útg åð^‚_«,2ðˆ=B´!Ízìh¤yl:Át€Ìnk&£.cì‚SIh5뢤ÄìÄß³Ù:èèÏïýØT.¬S\Ϊ1_Ž–Ò§‚iUÂ^ïÂŽPFW»öTºà¬ÜƒYÝDôÜIÖSUÎ]Ù};&ÉÓñÃdÜFMìÀj¢'ÖŸnBLx+ jнA.`¸óšJzó:ÓN]ItÔ&­9€Bv•÷wr€û*š|(I•Ûèšÿ&[ ÝaTe––Í(âX(âQÞWW”‡OÛ«®Cÿq•ÞV‹X…¼j½ÁçOEZö¸ô@'Ð2hNêôúáàÑÒÎèCq^ýAmáª|5t<”BåNk …¹ëÙ¤‘žêÑtëwê…£i.þ¬µ[ŠhRBŸ™[Òýäÿ”+¨¨™æ3£$L¶×·…]Ï’.|urv‰F´Ž5ÌSVŒ§¯D¨R3îXV|öÑåU^yS˜Ã`¥ôzR mhU¤Œ-¹Ss·ƒ)ßÑw¿ß–=·á™˜ÈªÔ‚m§$Û—ÜzKЉÕn“7-çÏŸr´ŽW\nw¾’ ÚíhÕ6íó80YJ`%=Um£8¤Žƒý¨IË•ð"˜‘H‚FæWØ„“ëj-®ÔG'©«Þsèg·‰°˜€=J"?äXBêðT²ú)…¶æôÿªßÿ£«¹®‡$ U`w£;­—t²#s–n›~lƒÏlÇ5B¨6Á®«ÆÍ×›‘ $ÛVPmìU…luXvƒÚ³‚Ã¦Ž¢é3ªoU±Ó`sÚÓ8êY&”Þ[²®1·IἫ۵—rUá&‚Mµó§ÂtD=ò†ýòêC"§®Ú0U8š¶ƒ•6þ¤?6`ÔN+Máð{©YªÅÆõ¶[½JY©SÐOUäV½gs üp€°øÅ•ð=’ÿBxÀu›â$K¤+ç|,Jê¨UäÎÅ,íJD´%î A/1Ç€v:Zd¯ë(>‹‚*k7 4å<ÛšºˆÛ-Áˆ_ÔM»xÖ-çt€=”2üéîcf ÇA=Þ6Oî¦M‰à¼”"°é¡6ÈDR’=¥\Û s~Ëç£hë Ô9ÈH"øŽí<“ý%;•„ñ#¦ªdÊ"ìÛHËÔLæ´[mø©Þ÷4O8=騏À¨¸oÒŸW¦nÉñfûá4«¶ÙYGuE÷òdg-é.ó‰×ê•J–œ°f/N‹Ø/^î¥Ô•ÄÄ`Š}Ç>±^dÇÝfŸ[«dçz’ÐôkÊvf°}¦è²å;_lšLJ°¢pÜ£R“Jc+·ñúáòSû§û`ßÞ*R³‡‡ “Š,-K'Ã7;ÜŽÚs9½ª’ õ§õ„%¶šƒ¿jµXn|lG‚ôËãH¥œÁót\ûdÏpÎí¢8ËO’F’f?±ÍêA­¦C%×´GÏ`Æ:UÂóuƒ‡—ã÷³]WH œÇóÙà‹-¬q3@¯ròs‚äxœ|Î*»÷yòµZÀÚFrÕvÙöœR´QË\Ù”/Ë:ÖJ߯écßéø§ÝŠ3e,­Ù4Êãûö©â§îgÜÀ]»ƒV+Á,.Í‚Ûò\©Ë ìªhGdœEç«nç“HÌ’Ñ=¿!ãF]x°Ëf›¼x[$mUwªµXuˆu,‹ˆ#WcóØÔ9Y¦,lÙø§üà†Ü2H<®§h¸ ¬. ËÓc×jÓÁi<x^ î%[$µ%Àñ¤˜ãù‰ì}V ïlÕÆ%‘åX\ÄëíЕŒ,ëã¢øb ÛÆÞEÜ„yp—‘®Š´S6@wp dÀí8q<*´\jí3:N®6 _–ðߎšØÄØU kž:ŠU¡íKz6ñÈÚ±Ý,«¡hzÃm<‚*ln«³J•‹Û5äÛ;¹ì¤+‰…€.W³î³&LšÙ&oøm-µ!4ºË`q¯•CuNÅ­³ÙÌ9÷«¬gM&¹M¹:~QUwPŸu“®KR¨–À;^šÉ‚&XÆC°kc)¤ŸŠ$J+‚õP ŒÅ”‹Höa¾/°rU‹K#LÖ¨P‰¼ô8=…SNz‚WVH×¢KÖIVÌ3õÞô,aéØAá¤:ÄhìH{×#QÀbÖVŸÇ;é0(¢Î:#¿¬$h P׳ÑÇA' è]£çùÂPW¢ò§(ö“Š-um;ûVœ@ßxì峬¬Ÿž¹´•uÇUù>. C¶ÙfPÏ=,pÀ:oºÍyxÀ%êÅö¢¼ÏhYPšKžuà¨xTÕNmí:î·oSË~ÀBV )ÍÓSõ¬SÒC«;Ç£&Ìã,V?çqª@:È7[ÒØ¾æY tÅÃyz¥{&PNût`u³\p\Ëúªªî¹De;[ܬp*ý+Îx_yJœÌY ÆÇ¤°ñÄh§X]§GQ ðÝI}Ñ# O)m5iLî1eÑÔeªwÈUÈZr,F8JX@a°C‚{rîµ&@ˆXøyhúexåY…Gd§Þz¬u¿ÎJcÝr‰©ry<¦&²BöÍ0–Ç´;Í…‘9–ÅIK'/ _AßN–O·?lWúàxk¼<#‰4AGB>…üîÄ]6-›ê]A<Çž¦&½‹Iõ¶çAéº;{ŽñH™:†2ÛÏpC>: ;2·yÀªÄ%î¡úrÒ… ²>-á ẵ~¡R›6ÄÝeНoP×] þk;˜þ!žV"s$Þº]´0#l€HZ²As”)óFƒ%Ç·T,éÒî»EòpádÉ,Ôäq©¬©o¾|€F6,q³ Ź©;¹‘Øè åa[SÿöâĘt*-Tw¤:èdÍ®s³³{äp+©|oç¯yí š÷C\äP¤©’ÏÇ;>“’íILbiéÀBÛ^ =4 g^4.@>gÕÖ…šNû–©ìÑ.!y†«mÔ¥+‘ÞÉþKÒúÌ|¾Û tHDzòÈÙ뇈‰úÀŠ9zÆ"ñ€4„JºmïT–“´¨”Ûå°w÷ðˆÕg Ô›”~kŸè …çåà7±õ ù؈ªÏOˆÎJº2Ù!_ýÙÕ×’ª²¬8Ö%…ßfS—œî,'³ O}cUQ/Tçuйxr‘Ç·LCT¿J\Ò}of¢›ËQôÔ¨Ï7<õŠ®8åw”ÑY­å²k_‡nXͲ/h¡Â»Rt,Ð2¹¶_uצÀ Êf;ëÑ&†h.LºzXG¥3Nâ ÏE¦œêh‡ä(Oà‡TzurWv›ë£œ*¬½M“6ïy=–3ή–ÿ0§‡ Ð´5«æÊxpÞ:’ÂXTE= á´®„ÜE½³„öˆˆ~w‡ƒ/E’§Š<¶l…È.%ŠúÛ<Štm`ÇÝÙôݤ¥øu-W-¨$õÎV¯n9jè“4fÌ•%»|†wÐúMŒ·! Ò¸ýI·“HØÊŸì± r°sôjâÜž€…˚ŭshåKmÝÓR­Sm`îZ^œù/+Dœòdk—€áêz.— ʺ°©oŸtšHž€外ÞQ% $µÄ=tMÓÊóÖbÌSuŸÑ·8Ù (ú5í&kí§ÔE :¹Vß…xKÈf}IÑbæÙWÜ®bf“ÇP-¥ Y¼ÁÅR"ŠæPUÏuk­¶fS.ËNnPzyãž{YóRÝ®‡8€ƒÞ7ÙÝ´ÞWã16æò¡&*"nmÀdÇm¾•Ž6Òœ‰=Öxyñç7JQ;êTJ”0POo²..îîR€¯ ¢î[-_ *rE¶s®:‘îgƒÏga=Š˜mã¿tÉQAüPeÞ+¶xw¿±¾ÖIÎT²–@Z@Ýõ¡@x–Çüµi*>%¸X}±B%¼wðZõìWj˜ÒµR¹«Í×äI·r˜‹Ìs‘ƒNB q‘¼N&Óêbî|µÚÔ”¬®¡‹‡ š­^+‰5»D`ejŠé¹âµNZ)èx7¾ Xžk>)ÄT—ã-­±[Uà“[H¸•"Ü´ÃëTØÉÙkîÁ–$MyœÔQUÇWá‹ýÀaâêwäASާ·œã²V`pWvˆ™ªV‹Ã¡UïOµ¤/b7‰P7ä*OÎ{ÁªWgÃÃTF@4•òV—RQóaÝÂåy~tÈNŒSi¯›rOÙñ­iB²"ºç™ïÁ·!8ëÕMŠi ƱqrшÂgòÅm†Ôü]K&%3u¢–E+nÒ¯'d5*šCf2ŽÏ/éÁ¶Ž‘ôÁª#„äÇ@¨áòá~•ޤó¾N¤õ`R•Iöݨì¯ù“=lÃî……VaÝÇ¡ËÛ\¥’óG’ð˜ê–™§ãïì1ãŠZ²6çè©’ÔG§È/·‚kÊì”9–07{»ÖSJH<’4xLªÖn]‰Æ'jßÂ#¥Ó£}ŠRPäãß&*sè/BÑE'Åèéëfcá›ÕÖ5ïÍSûðSùîÉ´Ù§¤l™ô  ‘gÆŠ ±´I¼óÈžR0©£Â­°ŽªPW3ªëÍF ícbIT üa4¤çÝÃÀ¦ìÏáYr÷¹{¼ªç78W ,ê#pާ•í)cé7î”5[4±èÚeIýcuÆ%®ÒçÌ>`ž;¢rÎAwŒµ0EðÖlÝi8Ï ©Ë¸¼DõÀ5Jµõ†Të·æ€JÊ-ÒZ㎺WÛ*…g¤™Ö¸Ïô²pêâKÝ„ªûé †íܹÏOm’‚ÒvÉ÷Zôyu’L_ª;\šÂ- ׇ‹T –‘€µ‚KÝ.™’`yLIh$çè—–Ó¹†×îA‹ð¢‚ZÌÜÇQÉ\…ï»å l»£*¦FŽËG&8F3T°yš*ß,=²®4\IÀÃá£nUúõˆ–Óúá‡T4Z‚±ÊY€ù D±ªa¢)gæãåÕ[§í¢ú4 †m*Ö P³JìKnùÒg »J0“sÔ¬*r @(r°í‰G®Võeu'gM]Ø"‡êЗCª=Hp¼èIò2l©Î¶`>:Zd=Jî²Õ;„ÆWësjû=´c}ßUWVaåÿN¡’ìÄrÑ­Yh©4Á»1x®ëSk^æc#)È;¶“D¡6·‡çW?ÉñÐ5œaÑ=!i=zÈm½fóÔŒLC’W!KW i7€¢ß¡jáܬ·”Ž>¶ž†úPZëfÏSh+鯍ÚAP— Â@cÚØS™ì¡zø”%MÄôЊ}Íb•¶Â‡™ð¬ur7REOÉÿ€ðIZ›DC;ÎdYÏʱ9“Y£ðΗòìU­ûÎû¥,ÆThan—rÅ`ÃD\컂ˆ(žÉ².ÌX•[’À꘧LŠRêQtZÛ2‘½$ôžªKtå{ì”fúüY.­ž‡JQiB¢pû¤¢9L|È´à±ûìGJ§("ÂÌå¤q)B¶Îñ¦+ÛÒNïXLŸê¦&…Pœžn^©Ko³ÃS±â9jWpÿ–8G,`ÛRÅŸrn¸ u»ÚŒZOxn]»è¤Þ¤ž5ŠKE‘ô?×*–HÃWêÖž‡~Õºy¿† N‰|KÛâjÒïË/œzùЬPAßåýQ’ž Ѷ\Þ4¥/•„„I%ØÿL@D®†“U£@Šöù’ƾäçíôåm’üg¢trPž--œUuð”þãr@蔈@Ó-üºž'kÅ39ÛšPhtp<ËegÁÀú" FyË3Tï(G&tã ìÄͣƔÏM 9!q™rÑ6GRvå³Z_$^b”un¶HzލpKÀvü6IL¡iPXŸAgbÁ6ˆ€ÃzÛ‹|\ºNܸu7~–„òÖ7§*¯®»Tù`l\‡‡XF;_#;RHÀ{Q+ðÃVˆSiÓíÎ#ÁÎ?QƒRžèv+£_ÊÑœŽ§N‹ê¨9¢¡FK4 ^?ϰ H´žÑ,¿W9#¢U:dR)r¼ì¶I%Id¹òQ›vÊ¿4Q®C5ÝÔÃMÅŠ€°k,pòNqõ¸O lÇQ…ŽâÜøÞ 1¹)Ãu{&qƒ‹œØŸ ì6zëŒù\S‹ƒ&¥€]®›ÍáËÙ_lF–’Ùrõånž ˆ¦›R4'4Ÿl…¦¨[ì¥ûºÏáX‡ÆyÙ¦ÔRœ6r¿5ÿP8”£š]NPPÆR±-,²vkº=DÅÏØ§]iî-‘—…fgŽO(WøÐ©uuëõx#€è$?%ºx¾k]¼?­:TQ\þY‹REªÙ*i9?7«%-%üTg×!ÉðT4;s¥…Œd çxF@ðè¹wÓ)äð8N §‡Ìäõ‹)FéÜTltn ¨¨eíIð yUûl1Tu<ÏNŸ¤É¼¼†¤c6æöþjž£Ì*•y ƒ²c ŠtYÜwg84>”޲.m2Mÿ¤"r—z¾ز;7q¿y$K;ËJ`m%ÐN9§Î*u}¸$¯´'rguÓdCô¸)·ê¦`YRMoI_ãË>έ*;y‰š¿Ÿ·ü_JwÇ3ÂeS™[×®c3kÆç\ºAúÌ¥W&…Èè^VçOU» Á›]Rö]Uiµ\c–K£´v:¡†<ñpþP–w²Gu>öÄÓmw²œÓÇi?G·ê<¤dÝsƒ·Æ©& Ì×2裄Uä¾]Ê}ʘ‘j|R¼ã’f×üÜ0.7«¦š©Œè÷¡“¢;X2£%­rïÃårWФC]jð?aO¢ÕÙŸ[>lŒDÈu²‰‘T%”€lª]"ûÞ\ùç~oؘšœµO<ÙðR <¤"ü/ï?žÏEÍ<‡>%Rê[ÚßWV é²$âR,I R7nó.3†»ž·÷bókTMcAÇ’‹>^Ä¿ Ô–Ì:¤KÈìûc½ŸÀFg%G†À®G,Îçû’“-PmZP[ÝaÓsl8Jˆ›lŠÓI©ÌÊÅ> V˜Z«v>—§±Ö0ò#¥Röݯz’où“`cFw»‡k¢³'2Õ.åÞ8R@\ÖÍÔN¹…BèÞ4IgK³®Çtž¬C ¢ëNZÊwÅÃN]‚åÀLX7ïyÉ›©Õ?¦s%ùb™\¤WçNµu¹“Ña¤Ý‰ÅÇYÕaÖ'·µUÏÅ¢‡ d¦]âž^ÆvÀ]+l*u³G‘R hüH93p„ç¨dÊéÌ<…Ýñû:Mj.®5¾OKž¿öeàd™¢¨ï¡7qóäbÒü¸ïÅ=Ò þ,ª ü*©‚FÛ#3O§Á£-Çú&'5*çF"¡ì'„%ØMþ²ÿÍÓ5ªHÍ~îÅö¸ôÊ(ò:°÷‰1Hà!xn?Éál’±–SÖŠ\ò€îWl©òÀ@ÜÉ?V„ž–HœWhoÿ_Õ–½hq*—G%-`’š$ÔŽuRƒ²H$`*Èk³¡gÃnh8¨KgUÃåÑÔdC%‘|vGå¯!Y tÂov2N‰¤ìòÞã$pà!·²Ø”(~hÿçá»îµ¢dþÀË>ÖZ£;lÝ5›ÊäÓù†¡S”§`ÜröQj¡eë˜õúÓ½NÅpìY³m®sc¡w%§*uÊ׿Ԡ։ôÒ%¶z9d ·OMªn]i»±öR}`Bµ´eõ¢x­*ñ”|Mµ@ê`áqiüñ8´¬‚¦ŠäÅÉ—±uýmY¨a^¤2%œ‹¯«;õP²SæWäwë’íMŒ%뜣,ù¸nTùä-”¦+~îœ8 A//m×!k<;QAº÷éáWeÕT÷ÍιàP+-búà#‰%Ê,HÏ“:,ë+½É.íÁ¸Ë’'Iæœ7Qؾ+)OT ˆ“G.œ±¤B¹®NÄÒð1»6 T½lú“¬÷ç°w&w†½*Ê s”QÝNqqBäçËùn`#= mö8†UÌ%kœ- <{ÏAÀÚï8X™j½fµj£õØééÓФrne4@´©wÔ˜k X–ŒCûÕÔÛ”­ªÄ™’©m‰ *Nx&ê~¹¹mH³Ó50X\þ5õ”=ËýíödˆeU².ÇNéKÆ'Ów?¨†"XÆJÍ ºB—6Øjl[…‰õ–ØCŠX¥êtpèž|hÑA}ÅÍÔ&*Ô:ߨð|¯Ó&üËK¯„0¤Kðl.)Áv’U¨®eÔ8qJŽHî,)8lî0×ñôT’7MNA³irÈk&€ƒ‚®ìC?Ù@ &¡’Aýä©U`Ðái2k»”Â&kÂ8úަ©58#VÌâp™Tò]Ʋ–…N]È|ð,@–ÎcRL¤¤«ýN>´›²8«T˜¦â4KÙ=/*ãG6%ê(µUÜÓ4V¡HWŽz~]š$îÝßïª4‰=ļÚÍUSirÙ6…Ð¶Š„íM ´Ù ‘]=M£ìÐ[Æ)ïG ©;ŸÒ°´Õ»·Bá¨Y¼šç€ž Äÿåá³xvi×½®²€Ž¬G2ŽÎÙ2®=žqf_@‡ ü˵*#²˜ÅV¥óê¼Ñch¨§ÓpQêœ|Ô]ý‹SÉö€$-€ü^¶’È›ÐÕ:°t½fÂà7'Õ÷ŽMM\öÝ{œÙ›<ôèôÈZdã{8E 1ç}Ëyb†– W…4­)ûEÝáÄ4¡e1Øm@-þ4Wø×Ô¶«R€>2ŠÖNÛBÏMíS¢¹)6lÆKQØÈÂaÉZjYœªš—Y7QB7 ^6£_•áȯcRÍG³[QøƒÀ}Z¶Øê´Æéæ&Ï‹äÜ‹—ö,7N§rëîÎèjÔŠÃ@šMÕ›ÍÎÿ•=1&P§EÙh»Œ$_ž$ƽÐÈ 2Mã÷®<ŽV¢PU"Gè¢P ()oOºÕh×y‘[‘Ù.†è{ÑÞ+e«¶KK±ê|¥>³Ü§Ökg§&rÁ6»J!Ú_+2Ì*¨Cv2ËMi“,Ö‰ÜîYxS™@V„òêÌ€k6'Ö CC¡Û>¾3hwIOü £0¡LnPÀ³[Ò¸á¯S/8¢œµ7·×H‚àš»óT/€sž{0œER\–‰{V^Éi§ צäË#q…H¥sH d·6eØ¡³R.zêè<6íÑŽÛ9¢@ÕÄy£®Ž°v6ƒtBêØ¡Â EkšÓr*õ”œ#xé¸uy »$ ;Y¿|Q­c…ÆUQp¥ŠdÊ]^Ù®„ò²Ÿ? ©£*÷CNWÞ÷Å÷ä:¨žCm‰ËÉgÇߪÞ›´ls›ò:_N©‹,ÿÏóîÛO%–—S~ÝÓÁˆ6ŒÕØB/N³4œwf’ç AëíƒÂ©‘Ûn=J¤’Ÿ« qL[·Œ(ªv¥p¨~. O•¨ê i"Ò—o†î,\5k¢Þ ôï„ É[ÏÔW¾5“S2‚ a'Ëщ·qîjÐTù™ÃŒÖœš]gR<¼ËÑœ9 Ü^»‰õ9o0RW x¨ÖaXÒ žÄÜ'Çg¢ø!Kø°¸•Om 9âïuŽ©ŸQƒ2DKÓµh!r:JÙ5Ÿ‡M ÇHÎ1ïö›ÃA'±"çyV—‡TÃ,PRÅ%èÅÚì-FP›¼râ³D6ròäq_×Χ».55,±u†ŒDø®æ¬—ÀO±aÉp_ ­&=ιB R]“ReÊTçÆ(â§öâQZ+õ“ײßÜ)²³þ¸ÇÃÑÝ6˪OOųAm“éö¹ØfrdªgÛ\WóÄ…KÝA9zë sY×Hnh×­oÕí`CÜ–°û5cªÕçþ M¼㪙ÔË™p%9¯Çe¡ÔiÜ-Î_é{f¢JMm#Í2ª•ËÒ¤:›${ÿÓÉÉÛ¶ÚÎÎS–ªd\§¥,D='hýBM¨&{R‡ÔÕé@!¢ýNöçtæ–T­†Àµ,3-ž©4·°dç»ã'ìë‰îÔ=5°˜×Ðæ®ççeQ=—ú”ƒ4‡¤š|ËIÙtÒ}I•ÏßýZšC®Ý±®L3*’Âu{fÇZ|j~¤é¦Kutt% üÍ£ÒXêö,™ÝCM¶ ¯ÚíÔ_GKy†¤{ uó£ºXqœèPQó…ã>œ9¦’ÈP‰‚‡óÊ©€ýex®2„ôJˆX2ª£¹æB¡!^³?€Îšç<Ù[ëËH¥@×Ì^¹³‹ÄI ßޏËïj: ‡=XâÚ)«”bÔÉUWn>_ƒj-'Øß‹’/à¾"H*dê5e1&Ë9‘`Y5–1e·:ûùñ'V½nó&D÷ëIèÓw—DÞ*²F::³»ÂêwRPDä#)Æùdw•´¬’'Ë›Z9ê“~_ ‰š©dó¶Ê§fz*ßÜÿ¦óˆu߆_·¯ls×>ƒòiG^ÎÛÜA¨˜œÛ8A‚ž.# .ö©Fú¥ÆÚæøEˆê_Ö²¬ ’lq´@à5æì0ér9íZ†½V¢#kT×áAeZe‡æ°–U°Z$Rþ ÕCJÑ %yTr‰ëcÕó,xŒ<ûýLê”Ê!\T¼²h’B¬0‹& þæùJT ÃÎT¶KDšK˜“}¦• ›wM¦ïšù¾cªÀ£v£ÓözI8b¥q®±oA–tÕc{'¥Øªûjkñ.d¯ Ý'B'Ó#:˼KÖu¤Ô²ÿÏs©zŠsŸ•½ÔµZ4ªiÀ—H,x¤ª·´äŒó¿ãÙ’d@Š|éuÚ/)ß4§'ß-‰MÙ" tÒ©¾¾Ê"É^b—‰xàŒ _¥÷.æ&J :‘W`¦jBjÈ”;¡Æ¤“7’ ËfÙí,MÀ—=ÌïÎqTÁf xûnÊD¶D[jŸ`e R¹=„wª}ÁVÐE-ZÍ+ªÕ¨3 |w!€z5ƒ€MùÔuâDËH ö:ב¸ÙódG')‰Ã©u‡8 þKâÔ©(&5rºÏ-²$- ©w<á¼BùžÁGyHåÂ/îepHr †å9Vîxßš®™Õ9=jÖQYÿQ鸖…ÛÖ€mTýÀc<ϽœÁ½@„“•¨¨æU„¦óm‡ÍëlõŽž¯·æ£Š&TF(XóSØ,vq(ÌîGïô3õCaƒ¦b“JÎi:Ó0T‚µÀbS 祬KÆä­"‹§½YǬtÛu“ó-W†Š}WåQEÒ)|Jo0jŽ‚ùkóØ„=h u]&]WÀzmpuAÅ n d²–Æ&{ëc¥þæ`76E5riÒo0ËלcÍ#Ú{Õ{”%SÆ-KäÙ©™c›Î‚5m—B¨ªâÆx€·ƒE¢Ï±WGt€ºX“‘Ì*S'Ži]q @ˆ‰wÉ@¢ãtžº‡âĸx§ -¡8è®.û^åÇúk"7ŸúÎÄ¢„CU}KŽ™„|E9ÿäåçü½R‘Ú„ñÆ|3Ôì$èÎ  MûÍcŒš~«9,ž€}Öh„{ÊCÒuˆ•zQ!2jøÊžkìé¯xm`wB[VÒô°Å(¤P•œZå)zcÛÔQ¶:tN-û’ÀÒì]ñA’²rÏ$æ¸éÛÒ4½«GAÔ?Ûb{dîÃ>)Ž™s‚‚ NBäI“HÔµ¶Õ>%×8å»_#>ò) ؆WSù“ã «Mm §sáž Êw†6 á«Ó ɶŠEA¢ {Ê€¾G*™Ë„òŸoÂMð˜J¶.S¯0É•él6””¢%h©eÃÊϯ¦KVò$Ì:²‰uÞ+Üd[t`}YÇךø;$m;TÉ6M†Ë,G Ùuþ¢ì# 6yÜ•{œ zÈ}”²ST¾ÙNËrbrNÃáÑín¹“¯på˜4URIl$@WUÍ@ß<ž®üy·4ï*-œ²„/EÝh{R AP$›e“T=ñ<,cG"9D-ÐÐ=¬<$ß'•=[y“Á,ÙÂ>ö­ßTb}ùíLó»- E È©¨-HßsÌ¡v³ÕÈ}m9qK‹#ª'ªn_§5§5X§çPí“ÆÁí‚LÑåæÀ.ÅG_%úwuã} õL‚hæÁÁhK¿K¥®jR$ÊÅ`“¥½`ƒ,(Åîݘwg§‘ÈTò“Ø``´ëÍòKÊü8U–‡Ç8QQ¬ƒ‚C7á}«*ÜEÈÃv…Ô]o¡¸ì8Ã!Iû&»UUwºŽYn^^=uédÀ$”™3¨Ï©;AëÑðü§´y¼º‹…È8›ã­”ñÀûÔõl4åîϼNîå‰FYr@räò);h}Ržm·®}°Ê§ÒÛ[¤¦qĦ?ÒZÔ7),+Õ–®Ñƒ­OJÂôa§|ž™€R•üJŽ G®\V„~=c7ÏV"¬œŠUø<ºC«HƳjÜÙ;l €ßÝ.‚ªI‡§ óœæAª¹¨>’bEFrŽ4àây®’ær)¾c‘H¶¨<¬Ë9Æf§¡PJa‹6ò· ýTBòoE[p"õ_P}ŠuÆ÷ßUo¦òÎ¢Š«ÛØ«/ X G*~툤*§J¹tYÀ•Û.Åkêå¡Ö%H‚Kl§ð¡D§¬,u[*šÉlðÐqSß~fQ Ç^­t‹¸œ÷dÑP6q½E&ˆöêÜHÇÜÕßÈ—Ò·Âë2KMIlȬ[<†òÐAá Æõàñ”ír_Z¨ò–ÅËùŽÛ©¬á9=Vx,ºyÔƒ>“ÿ vªNg¥¿¬Cj ¤ÜYÍ$–×[v §z¬!åâÜ×Ûö’Q¤¥%Ñû–Ùo·b¤Š¢žNꪒÅâhÞÚç].ˆ6NoyYIÙ{±áèúéÙûqx²<ÓØ‚‡ŸåBH4ï¥VuÝŸ½týÛ tž5ˆU3õz¨X2¨a¶Ãž¥ «ðxäE‰7õÙ¤" < ¹d9ËcY.eoJBfRèÀQ:Ê:‡ÔF’ÎÙ!±¥Ç!DÛ7”™Íã³Ëc`Þà®Ê<Ý™(>è’î Øìv6’õq«µ“U[ÝY[jZät«-ÄŠ­j!À¦u¾³\ÝK÷”H\Ìu*œË<€5¨à<ƒÔ’wåªÈ®päs¦%'À¸L1· KÍ1Å5&NfÝžÊ y#B‰†°J^.L"ÊÆ¶åÕ{Zƒ㢀7?õ5U­Z{v½(‚†˜'ÝEQÕ«ëëáÐýÔÌy™ŒÊZ'«R³ŠÁIJ‘‘­Á«§DbRðÐÉÀ¶Å®6}¥.ø€ôKÉæl•ÈH'W)šTgjÝø•—$dH·ðžkú¹yÕ){ÒoQø°ÑÉÕAUwøù£÷æZ+‡ëÃf‰„'ë4ã±ÀºÔ-åöO–ˆâG:’ª6æ1€ª|JœM²Ãqw·ArŒXž˱MÉ —ÇSéLI|â·­õ—',;–[yˆ¥À6Ÿ4Fºï[7˺³%ήNŸK¿-A.Ó;þâ!pÉ5¢XKKá‘¿o­° ÛÓÞÊVWÝ€ T/ÎÁT¾ªdkSÙ8ø–{§ZNW·ÛáTvÇI†Ó÷š¤ª&IT¾€xì«©üçáZÝÅP2 .©JTmZ»U ‹h|i)q8ì07 zåi¡P¬¹œà>%USsÍËŠÉPÅw¸ªhT{‘e]Ê53QÊ’º[áèG®½.›…zד„¿w ¤OqØ{»ÛèÞCÕ܈|]I6`鶤jÄ^ñô®\3n6)&+•""84¶xºûî`›¶°,Ö wڮĩ}sð|¿_®¶uWÉìzx‰¬vPË?&tpzDGsZðIp xÎ¥±80˜o´±mñÎ鄔浨ð¾¦=¨•UÑd] ',ÞØiC%Ò%OÀú@ŽéêAiÀûñ9ÖˆõK <#‡§›ÆãöÈ“Š!ÍfyùR2Õѳ®#„çaÿ÷qÈBÄEvóxˆ7› ݘŠi} $˜³®9,žfàÖs{ƒvÖºÿr™Ñ;¨(¾Â½cÚ÷®ðîFß²‚åQÑymÊ47gP÷C‹yÕ¸öËIÒ¨’L·%|Xõ(xpåÒ›r¾RÁ*Ï“bÿò¬cè­Ãjz䧪–H½ã<“C/§"èà&–SRhK•‹tñ(U[/•¤×\—º=OÀ5Ÿ]/´î¹)“œ¢Jß<®–Ü £É†“cNÄSEsîéIZ½l&‰)«X>;Ñ4ªh4Ô'{A ‡}eCÞ§+ñÁå¹>R(Ï{ìšY´h–:ØÌR²ûé:` ñ8ì°ÓÍ&\Œ§o¤”[;ŽKYÊçp[5oŸFȳ(;Á†j9´>eÍ£$ìžót•¬æt0‹Q®h‘nv9$s»N»¨«´ÙBökRõœKývˆÒÑU t*à+Á,­”(ŸÇJ)|h©Ì ’v’g±Wrz÷.Öf&Ñ£)¼À½½UH&²hµ£\Ûä”MÇ5m¬lmšÎ@”Lks±üX–žñyâ³$ÿ³êx,V¦ý)d¬èØ~.âBw_ò³GŒ[!=™ôI)QGÙ•¸$Î^‹AØŒL™/ç8R¶SQø£5Â!šYn³C'k½tÏ"¶ï‡òȇü¿¥¦ß.VÖT„Rê”KÇyH?ïl$¢9ßþRÜét̰h¡´ÚuHø NlÉ¡0Õª=¼×Cæ4—¡Üøt¬P®«S\_dIu»Uö<¯¥jÏ-*H{‘PŸC…Fí:ìEƒf!”ÈA­ÚÕ¢;§¢'\Æ.nãÚˆs¤ömÝf-ÍÉŠÜAà²:S…}§¼uS¹ˆÔRRí~*U‘#:DTãØØð\¥ãSªa–ý:[=“¤'à‚gܹy¨÷Tl•¹>–½ËæŒ!!< Оœ¾¤ËýÊ|ÛÀzt:…*ƒ@#Î ÂÏx6bÑØ-}1±;æÖNãK’e-3~KëZþŽ žª 3øÅ3§ Ì›²šÒL=ºQÇÖ ·x"F،Ŏ¡èZ2±‰?FîÈNO{JwýX dwà¶”ùi¾ë´Ú1x¬Õ‚ÏÙs¾­6i?¼(Ïq›sæN¥‚ìAÔäpÀ4ù»y"P,‹ùt‚]Ô» dì£gez´¶šç6ªN7ûyËCRi1è=FÒ ÎšoC‰=ýÆâg `Î3M<€ä€¡,¢EòãN]])ÇÛ&¾f»Ž|í àcÕ¦›ÝÂEQý/Ööi.‘wnêO_ŸÀÝaH ê”>NjÐÆ*QÝ΂EržR©G8Qw«Y¬.‡ULd•ܼ–~Wú:å~ï@ò‰§H6õ¡¤bYr'€OGû©™†ÆŽMœS¦©lxÙ}lªµ´"‰½´æ‡Õt‘ÒÙôʸ][”f¦)U;£±ØEs8\e÷'«j_5¬6Þq“éîQ81Ÿ £œîåðU£.RÊ[¶5fÚUF h%UðæMQÈíßt¼Qä2I»<ߢ]bß×¢ºšLعeŽÈ*ì©èÔÔ¦WëuP¥Ý*ÙPY×rˆ¸ˆ\v'g¾gÚy^DFju:¡nw"sÓöQò¥QÎÐ+- Ü™P;eÂyÎc7škžjšïµÃYø°ÝÏä RzòXXb‹úxz¸]‡‡ÿž‘Ibq<1R¾9›žUP€Vucju0%{ÒDö±Àê§FJÎs]5)f>÷e„ú…$y åÅÜ¢úËÃèxÉìV¾y+3)äãtDMÚlñ úQ:E-HR ‡ú‹, ‚J™ípu­W«Òm›PÛ pºD®•ã{ðüû R5BÓP¶=ŽÙ9ç9ÜT9÷)ÓnʦPrK¹“CNSWˆCâÑ©öµªg’C$ø+ÍSØ­Ó~YÖ§¤P|O©x™²=-ŸË”le­Kp.Ëx/.£²9xƒJƒ"¢Ùqc²ÁVƲ‡ ²ž‚*°×‰Ô¡Eò¤å6€#€„ÀRbÑ©ZÖ0àÞofQß KSJˆB“¦HJ·%ïæ@s´H<4 =‡µlcÉÏmÆÄ³ïneÀ3Ÿ¦{õ „5w«K]éó báÞÓ•›§Úê:·4ÿ0Fåü[›'w5‘HNM‚˜J'z&º¯[.L5Nx¬aS`P_GÚhÊê.s ~¿8¿ªìP8˜p!%RIÂpüh„)}˶Âö%„nQÿÊà4–h0[¸ôBHÝNz^޲@©·æ"qT0kÕÅ6 ®$]~)…þr2陵5=€zdú=I5 –âÝ6ÛG‰½8"~ïÔ#‡˜§(¶SW8½^’MoMFý¦€u,£2ÞÙ6³yRÊŠè*{^ëV›:x°8—,¤s<² W‰q$¥sxz"™s{<Þ:2¬‚y,åŒEë$ó¨`d}%E*›¼ÅOpTÀÝÔ&_kW³);ªëËJÓü’:“e–ä÷®¼èÐc˜»¢2^·°dYdý‰'àdyÒ²:ÖË!3P¢¾ ¶æŠš§.)rÊἚþ…Üj&…¬ZÄù„€¨GJVó[, Ü…ôí)D,f«ˆSy–Uço<ªùÈšõôÖù¶.0¼Ô”Ôî@â´­Ó™'Íy1éëàx¡4­:m ‡%/•š?Qí¨(e?îCÔ{³ÿ+û·Ø¡‰×)~–‹¾…}.¨°wÅ.èz&¶ _*¼ôS#¤K>âN±’mÞGGf¨Þ3ÛåÒ´¶ZýžgQp«ÍpV•e€³lk §ŠÓ6¿!±mzÝñ M¢ (]FµÙ"<Û ‹&H )B/Ä}Ú |ˆ)ˆžÖ%î>h¾¾î6{ëv©‹ÀF™Ûæ”õÒ6Oçîá\iVæîY›èöQl x,«˜#{!*`·×³Ê¤Ò÷%P×ôH½¨´˜|CŠU£åJô³c¡Sb÷FÕvÉw·]ßOž·^sNÈ'ÞOá¬\sì]RœB$²È»‡"C2&Õ»žìùܽ¶x('gÈ$´¬‚FõCy5Mšž ð-k%ô:ÖÄßú¢Æ“‹HC.œ,òä!tÕÀÇ|É"7ÚñpÌAÃc˜¢pð6 ;ÐRo1Üøo7‹äáY¥.Z{6¥®/Šž"¿èr8ue#ê6—¯*¥’üÊMyãânå¦çl:êéâB@TÐôb}­¯mj–*‰–-b»LÉs›OÚQ¯Rü(Ln¡LR“®ÅÅ礫 `—ì þ¬÷Ý«‡q÷~)$ 7RXR^ª“±°ÏâPƒG'|½z(I¡oڎ̓ZÖ]aZ¥Q;k–<}Ú_7tñp4…«LOöˆB꾎e43^A\Çwˆº{ˆz”¥PÌ96 ÷«¸ öx{Í» -Cy¥ú(œã¥¯-»1›/¹Baµ|©…ø A†Ó½ìdzÍ àhßÅ£}‚—LÀ`vÖà0ƒÉÃ[“躠]D]µ´§å•buYßèF!ɯnS2!)LæQ¤Luôº;Í:%ENòí’'¬»sçÊK+ñßÈ| L¸©–<¢Ñ)Ø@j(ž8Ð|i¥IH*‘nÛý <EdXtEϰÔdУ)µÎG+;1½mʵSIäZuìÐpD ÁlDÑ=$–2ÅæŽEÍþB¦ç}ô~Ï„Ÿ:¨Ú(ÞˆÐÀó–¡¢žæçRsžGpK¡£š÷.Õê›ÏÓé„ â¥@Xöš]S%‡YÌmËyÙ&mÔ:–$4êø_,+mTªwUm'"$$ÊRI)grj— ªT‹}Ò}Q*/#‚Ä3I%QÖ&h)9’ Л¶1«ý¯G& –á$\[:˄ΪCyŽZ¢Êj4©gŽÿîú€'e­‹gé €ÛéBI½¬ƒÓ2Ñóp•æÐј"÷´$â–e“´ SœˆTôpå›$^»v`†2'階dU•¸¤ˆß,݃l!߬öuk éIåËJ4žž'ŸÚV-H²WRv¿¨ç=rS3¾“œ§_½„'iuVÃJ§Ž}ëìp6œÖ6ÖÐQý½ìÖQ´‘¹;ªúp±_Ü,°bkQ„¥Íz…'ãó¢*fÝ‹’’o(´x¿<‘O·) ¥Dl…"ʦU 0ór´‹ï½dùìéž•rçU†g”Ë9Ž &ê‹¥v­²Ø›Š3‰x.©ÍÑ„S½òÇU=Då w«Y3àD¯q-e»¢Ž½0…¨³:\ê‘¥E×ê“7t3õNÏ%›¼w`*9/éÃL©³=ÜÌ]oJJì àÙø2«-éÐ7cª^•ÕX² ¤”œKƒÊ æÞ²\9]ÍŽ5`3H{·³öT7È*¹'¥Å©Š‹•ú¡h¨ÏÉþH°/ÓMÿm‰uR$ïYˆÝK„Ø ¡š”ûod™VçuhŽ5¶ NÛ^®AlÊ‹+†ï)ºª˜yi?Ôe2`Zj_óˆOnÿ¶;­M4¢ä!j„5(LÞyÀ„¤Ôü§a®äuâK– “ìŸÅž §­GJ”ÃÆ‹d”ô2;¬”=“Þ éÇ¡Ä]ÌJ¸Š¶ö5mDn 2âô¸Õ7'“éÐv|伨7ˆaÍMó`xO·H©6.ý‚Kþ0ê»aZãæJqa?Ï:YéRò¬¬\»ö„IäìV…1‹JØ‹›w븺KóS_Çm¤é”œ‰Sz« cZb‰u%âöˆôñç-ôþQqÆÖC“}“™¨Ÿe¥KûÒ`ªÊºµ¬ú…vÚ ±«K(äÙFHTš?íúâŠlçF(ÏÙB YÔò<ØTº™K!Ò6A¤ê9uâqáHŠäñàÒf§4ÎÊP#4 XÝS•jŽ—·-ÅR¤k“äÓqíÊPçLgÅ™÷8§R{Ç'2B2-¯p¢_P_ÿØÛ;ˆ­ùeŠfË%Vm$‚:ðÆFvVÈ$r囩Úw÷ VïìÐ9H£‹Ü".¤êB–t†Ž}/ç]å[¢E!`‰³a7ÅK¤XæÙ„*žóÀ” »ù=;£¨²1;qÑv&5ÄÜ úéxìêÒ*.¶Ül8©R3vàŠúšÙSP&ëö!ôMû“»ÙÈËÑE}¶G¤u9¸¼MEF–ŸºÒ÷hz¸Ë: s“0Ô¾æièãЩ©ÙRªU'-EL³Ôìdµq{ÌA¸ÜÔ2Ð1ëÑýÕººiÕº¾Äž¦KA׃Ã;aJ¹]Ž|ÜØ3o÷¹ú×y9P‚fWÞЈÛ(£¦äÝ'Ï‚zåiK*-œýÖãen‡c|¸ÍSYÊÁá ;×,‰çÖ±W¨r*ǬÝRÑV÷ï¨kæ~sŽ@ÏwÒëÁÂ"«ÄJ_Ôþ»yjÃâd¯õeÙ;åèp»÷ÀÃÝÔ¦9’WLör¢Ä´žªnQ²µÄh±uåo ¹æj|? «ydª¨Œ”%Y§¢5¥T{ùãŠì¶K펻bg`a0õ(}v­:6¢@•˜®þŽ,q^žZϨ¿ H¡’VÀú^þÈ$ï¥ØxT5¬0· Ka›÷¬ÖªóT|S›ô|WÉl½.ÎÃ"³dR]‘:žyŒ@-ùŠŸE6*«º*Öqä!>¹x n,N%^/͵Y”çR}g ¡ø¦‡6ϘÕàŒ¿äk4Måò'&¨¼ ÐëTz¨mÚYÊ8#i;™¦z£Ç~”¡»Cc»çAKH¥Ïc\’çŠÂJ‚€VUsÑAU®ZÙkÎrè®÷Ϙª@ÛžÌ-¾oâá}º’l/žz«GQ¼ ËJ*É ÔâU·¤ÉCJe:Þ¯]¸*UÊt‰‹·nÉ&%¼7OÆ“- òFV5d·stPW(»†³eà™­©OÀ²¨y]kè@ELm74–•59a ¨iŸ8CEí1ë$Œ·c8Ë*ã!hý$ãp.·÷.ëYÓÂ3;9k…D.ºõ£ˆÇl%â[Ùs‹O§ ø z%­UšT{ÕZÓÇ))rÝãNiY‰Y»¨3õhQU_¾Ùê†M '=©Ã½¨öK SÞÇ!=—í’µ{p6ðpä··ªKࡱ#kÓ‘>îæh°ˆàkMu€áÉ©Ÿ¤I´g‚×ÐûvTì Å:ÅÁ¯ï5=@’‹öa³+l‡. Œ›(iiÒT@èΘ¤­*:ÅfÄ(à”àeû¹H:À‹?ïÌóånì²!>ÖÀÛ'‡F§U¢nRêî> :Ïg¹~(hÇ}ìNA+¨$o[wó[{µzÏc[RÎr«)×£0?JÒðüÆ¡9hÔQø¢á«I¯:lõ“Ž1ÏM“óìb“‡èÔ+ÁL–€!Û8]’äÓ¥gÝ\O|.nÃéɼ»ÑÙ‘¥A8ŽKvÓÖù%I6v(XF˜ UÚ'T,MÇÓz˪<¢©1%]‘1¥°lÖ™È9È\ŽSvÀA™ª`Þ…ÄOìú枑ڒãc„¡âl…Íl‚£z’”:öëœ f9Š–mkĶ1xò¹TæÔ¢¨„$QQoêÕÛš4*Þ¹Îåž_K:z°^ø…gìe»4,Ü=I‘{Êy–¸Ýîé­‘÷¾ò×êë¬æÁ¾¼ïΓÎh4LU4n Êï+°fvê3EÐ: Þµ¿JX ’æhë ôß@© Îÿuî?Y–¤ù£Dl‘2&-QÎgÊÅȾfÞ˘íœ==ÝmMwMËåØšÜa³!MN½ÛHª$*I¢Ÿ¶ì=Q‰'h:mÜ)/˜D5u²~Ò¦â ,ˆÊÂ5à,k*â[Ï/µåÕxܶ*(«£Åª =àƒÀ&`½s‚:BX¾¥MÜê„vË:+"Ï÷·{MÜ Eáù¾·ŽËÔ•úp…©\u^Ú)ÎU- ͹åzˆÒ¬V͹“°@/Iö0Èž§ {`“èéKħï/Q_¯vJ”ˆÊ:ÃÛw(JQj²D¤¬j p;¦*'‹ ¯¿<_pÎ\_²k-Ý(—(Ö!%̃k°×=?Môï¦˜í°ˆÔâ=*ksZ,ó#6Ñs©O ²8( º’€ŠOÕÂy®qeé’ÛÒÑ£Š&\iñÎ&gïƒ<î¤EhžGí6ì5®çÁé¤ÅÖâ¯8•àH ”µ:ãmɨ«Jr:ÁLý¾b—ñ¦D—«Îδ¡žœdÝuøz6¥)y´/¹Çç’Z•¹(áºÁ9㛕èu’³ëx/7·(ÀØÜ÷êqU¶¯’íæ¯ËàǪ¸³fSkNçžìËÙ’KvD“ÿÂ{,Kº*§åþô²ÞŽ¢Kð¸u†!S]ŠSð‰W‘°-R)a°]ã8Ê«[ç®Ð"[~1ð±Ì*s]ŒtÚyô!(/eßCipª³Q»ÎÓ b:‹?4WŽ6Á“º¶ÑR¶‹  iôÜìÈÛa1HNDµ ÓÂ#X«ißþaî*]=”HÍ ð[$ièj³LT•ÿ¢ H‘B‡2ÚÓÝäX辰¤5õ,ÑCò!Û²=Ê5—Æ=xs‰'"-eD¹/}ðvrŒ÷ò@Ò)í5O‘5%Þq  as_U̶%©îÕDÓ…\A€&Mt焚=‘¹ÌõNc¼¡xc}kæ^ ]Y@ÆléoÅñXIÞD—5OÐÔ¦h¸óDY y¶Í3¨Ûá¥N‚Þ@æªßœÂ³|ÈžÔ*ŽÇó˜m)“œ@uƒ€ÅsÞäV«Ä³_#ù0>Ä×+xvªBÅ¢ô ýuè?¶þ$“8“ÂJØx ¤‘¬=åκãSˆ$X%F*uÐs¹2µ¥QôóŒzðÉè¬Äz.ìvޤ–û‹Ó-N²6Ò=ž©õ¥žÈ º!›Ÿ{ >(Ú3©·`‡LxâH¨ÙúqˆX%mñMÒâ¦Tðþ¹óxllgÑö“üfqËÒ2szÒýٗ¯Ì"v$©©;úFô¯· a«RÛ¸ðìÄäò«ä:tˆO»øÂ]ŽÓafò2‰ï;A—›¥î=áalÎAjw¶Zºƒ@T¥Šëè!'eM[ä K-+¬‘xt2eA©ZUPTo;ÌÆ=7Èla’ç±vÕ?|T²ŒB["¯¾ÝÚ°R¢.ýå¸ò­jTôb78¹­Yç¨Òô©?À‚àlî€\Ið$À€ÕUMR¶„дiG©HÞa:.`á yi•¢™úôϦcÉvù© zªänY§•êëÇ.MU‰vÀÖÒ׺ é|a¬=*FB–Ây-ã`LÚ® È«%4óv,µ8§j ù8~ËSÊ“¤èzœ˜£è>%#uÃØVŒ rÀëÔj»rÖª:)|jQ]Ì`åÌ;o³ÊÓÂ9 e_ôvx¦ :U½a vçÿ:{XÏÜv¶TWŒûYþ§" Ïè*mA Î¥€wÜv¹=´%s7Ù 'K‰÷ÕHˆJ§ISºD`µ–ÁÀÄßM›DJ·ùžìàÜI¼µ&ÅP¼ï J —šüÇr†QË6Ù©MB÷€›WìT¨½93©„ˆ•. †µtH#ÑxëŽ,Û+;‚¡5ñjÿº¸Ôv<¿;°€´`Ð9WRÅa …5KDú>ûæ|€#ÄžÊN{[Ïr“Ù•Úà±íâˆjôR¸Yä`À푨ѠÛ<‡Ö×Ñçÿ›ÿïÿ}ƒÿg¼Á×ß¾¾ùðñýwo>üËö‡¯ß|ÿáõßÞþbû³?{Þ}3ß¿ûøÂö×_¾}ç‹¿~?ïÿ»éÏþ›¿ÿ‡¿º¾yÿϯþø¯âÏÂÿéö32öo?~ûúùOþËë‡ïß¾÷×_üÆøðúæ#?»ß|äþþÝËøáÛ—¸¿Äò×±þu/Ú{ÿñßøë—ûÍoÞ~óòóŸ½ü‡÷ï^¿ßþl¼ÿõï?¼ý导´?þçËŸý/žýåúó—ë»×o¿~óîåço>þêõ;>ñë7ß¾üÃû¯ß¾~üýŸ¼ÅŸÿ·¿úøñ×ýÕW¿ýíoöæ»ïöþÃ/ÿ»¿øË—ß¾ýø«—ÿüúýë‡ß¼~ó²nË|óÝë_ígÛŸ½üã¯Þ~ÿéþáý/>þö͇×~ðíÛ¯_ß}ÏŸüðî›×/|úË?üÍß¾üݯ_ß}úå¿ýô ùòãÍy‰?‹?½Ýí½}·þøÍ×_¿ÿî×oÞýþí»_¾üâí·¯/7ÿög÷ñ/_Þ¼ûÆ_|óí÷ïùû7¿yóöÛ7ÿÌ/¬Kó2¯ÿôò†oøã÷ûþëoýñûŸ}ÿö[¿ãW¾Í§g>Þ÷Ýë»ßo^ßýöÃë×Ü÷ßõãÃý—wïûî|õ‹·ï¾ù…_ã›~ýÕ?½{û¯?¼þÍýãïð£íóÏ~ùúñ%ìÚË뿾¼þîë_}åüãïýºþ1úc¾Ã¿ýá×ïýò ¾†Ëð•ÿ³ýáû7¿y}ùøá‡×û×ÿ𧯶_¾yûõÇ—v±nŸß¿þâÓkžÿ‡·¿{ùŸË/¾ÿç§ÿú_Yaß¼÷íï?ÿúzÄü®?ý´÷÷¿{ùÃ_åýå¯RŽ/1îí…Zúåßþô þþÍÛ/ |þÛ¿y÷‹÷/íÓurƒþx­¿ùñáÿù;ã/^þô½þã{–ìëËŸ^áÿKÈákþWü¿¼Îןü-oßåÿt…ÿû+š?|ûíú÷?ÿô ÿ»óÝÛoÿão°døÈòÿù{6Á»ÿ«ÿãë§=ÛßûÍ¿ÿ·¿ùø†Mp½ûå·?ÝÆ·ßÏ·¿{ýæïß~üúWŸÖɧŸÿ“;ìÛ·ï^ÿþý÷o)/Xûwÿƶúú_ˆß³×?½²kþô#Ÿw_¿ÿÆí•ryyóáÛßo5D‚~ùCd~óú»µ|_¾úÙ»÷ù“¾Ü¿½üâý‡Í'ÊJùêoýÙzÉÚøê_xÏ·__ò?>ÊËW¿ægï¿ùü£úòÕ÷ß¾ùþWŸr¾|õ__?¼ÿüÞŒ¨÷Ók¾ÃWûùßY _}üÕ‡×/~ëyÿÇÏ?ؽ¼ß|ñËžøéuæõëoˆO?ý„k}ý“«Ï\ê»·_\Há®Ï¯øƒþù¿<>¿â;ÝŸ_ñ…žŸ^U¾ÎüüŠ/óß~ÅuÿÍçW|Âß~~Å'üüó+Þóï~zuòžÿù·ã?~Å{þÃçW܈üüŠoôO?½j|›ϯøÿüùŸ÷õO¯\r_}óÅK¾Åë/}_¼ä ~ùÅK.áW_¼äÞ~ñ’/ý¿}ñ’«øö‹—\ÆwŸ_F.ãÝ/¹Œ÷_¼ä2~ýÅK>÷Ã/]_¼äs?~ñ’{ñÃ/¹Œß|ñ’Ëøíç—‰ËøÝ/¹Œßñ’Ëø¯ëåŸlÁ¯øð ´‚$ûó¯Wº{}ýÝë×Ûm¯s:!q:[œÎcùS…ÃSJÏ'ƒŠo‡Ö—tá¹ôºCuzÌÏKÞ\mj‹MO¯ïI™\¥Ö®PEål3^mk*²ÚŸ®d¹rýjû¦{¼‘Î^´˜Ó%\Qè:*ªÐrîgûÈdD­ø¹…üÍí˜ÌÒGÇäµîºüØ€Œuç _ñ< :ô¢V%š}ŒÓ£üœãæ ñNÍ©£2€3wVA|8déø5E¤ÅEvFÛ㧤ߩ‰îä{l(S‹—›*£I`˜z µ˜º5ü3NJkµB³v“IË ûñž8#W÷Íóàä]Ó)ÞRÉÖ=7Gj …Œ'Vi.Uúã¦2Wõ.*ÄÀç Òmu³loìNš¥rØ¡ÎÑÎn”.2Žîg]žOui=”bòú ¿·¤úý꾦uÂwqSìÜ*·øL¾Å9ïL©äPú®‰áŸªÁcÔ™z“þ²¾ÚãÈ>wF5qûý“GÃÿÕsK¯? ¼•³Ô˜šôÏ1¶#Q~•iÇ»´£zتóTˆÈÏ~«»’íÍ×óP©«‹ùÔ4î¶[°Mg€b–]Ôêèv¡”(–‰ž—À⬣”ç˜ùeuJêSt‘jv~¶z*NÕkszœÕõêÍ».… ³£µ§ÔÉ5~&›Y=ݧµ3\š½›.‡CqIxޱ³ØŠê¥ê²öÓ’´Û€> iwoOQ¾f*êÐÔYû$±¢wšGÊE¨³iÊ™¤yn]_u•ú–s›ÍCÿõ£.ŸËë‰çÜ\{a•e–¤Œ‚Ò{Ñ þº«‹>íè¢X@5HÛ¥ÞmsŠoÆMç¡åÀF976颌:ét ésÓ…(OMÕkpëa½ùø²<þÖT#N´k“"Vu÷èÜ*$%‘„/YôPÝ¥ÕÃdåݶ¾*§ré zUY¥(äƒ{æÂåÆËJó7~tùðÔut)êó×c`iFGaç³D®LL©ñôm®yp›G÷ÔË9<¤Uz.P ù¼Q¾j¸B îh}¢ÇÑ9Uõf–—AÒÛjW ³¸½ožˆš¿áÙ«ŸS…u×t±÷ÏF(mÍút§:ûaŒV÷“LïsêU«7RÕB#›¡iùݹ„6Xš «'Y5äØyh sîA¿yb•{²–C¿].Äý¶~Ýi›û£TÊò|ÖXžˆé9ã¡„”ð\îžï’¢o}¨AIJ<$xOh# H‘Žlô[Á–Ë̬ëöeâÙYóxõee{lwóÛZ~—¶7~¶ÝZïÚCK`5jª´ÜÌ[è"ï»ÈµÎJ)W˜ƒâàcï˸V[»Í9žÚœ!€f–ïÜ›¢Éõ¼eVxB~Ù÷Wâ˜`Ý`U³ÜIG|ÖvRµ½7`yèV™ßg>6¼çšTК7²ç³\õITcãñœ%ØH„Y²•²¤Çú“—Æ=¥ö\¦Š†{ÒA1ËÏp—uGHKd>•§•>SÜ´à.³Ÿ°˜õH’ÿ²+ݸæ±t &ž,5=½¥r±ú´ys éx²÷96)é”}Z|¨³²k¿™Ç¥sy“øO`‰TY6ê•©@Œê…䊸 ’vÕÚ¨<‡¼‚ r46¤r.~z±‘‘ÈëËêT­K”ø¨¸ÙÕ‹ãÁ$·e šÕ¤Þx3)¤|â¾f¥…ãwÒ Î§¡\™ 8²˜´`×FO+N°/õ_f)w nY|÷XÖÜ”øN.kº4F¼ø†ºk’¯–ë¶³à4&ÔuÛéPÏÓhÿ(n5‚bë­„Ø®ð·oÄ"Ó™¼¨ìB ØË m›ÞªÄ²¬Öù© !üL‘ d¥Y ù<#Z6Ü¡øqI¨Áu©rY„´£*ÏeǸ¶,žÇ`÷Iš—4ÌrS‰]®KV¡Œ½ër;t69•K[d€jsJ€“»ÉŠ!¾Ô ®PÚPųjgMI¦kÁ–ìYŒ¤²“®» -±–¶ã_æ:Þ¢.õÝ&)І`¹™¥‹†&Rõ£ê,Y\$FVâeb¿6„”"L8Ø À ¸‘êYÊÀn%Â.A›A}A9í¦€`Nا‡œá:‘Œ˜ÏcAlV÷gbá9þHêc))¸I¡NñCe Ç“ÃYc×6ˆC|´Z—ÄÝØ5|÷R5«¸7.õ‡» %Ü‹U¨¶ ¿¬r%e8T4Cܨ¨H÷;;‡¢ Wð¤Å­KÏm²Š3Áñ¤Ø“@HÙb ,t7êþ‹ÍIFuª½¶%u®&–¶1’ÑÀ}ÚdèÑy­yÚƒ7äÚ¶•Ó.yÜÓDØ”ø-•—»¾tY/*9*輟TtÜ.`2ãHå¾õá„Çíp¬jùjžöG6½8·ðqÆ‘çm1jwC%|±=nB¶|©6(6 8ë’Xa¯;ßFìb¬IæUc:ûöÑn§($ ÙÁ\0#høBÐÜ;ßm¿ö!c™‰Ìâ'Šê_}AVÕá"¥Ûé,ñ.;á9—,jñ©™.A´—u{”ú÷ )5œ^¤ÀµÅºfõ²ñ@ž–‚PúGì¼@p˜ø**Ķ.B¤jPȱ榼œ!‘­Ð/ÅN¤ÔPZÓ'á\œâ  tÔœ¿™+Ì¢Ê`] ÛU &†%{«šÜ¡åÒù¾TŠLZ"8š-¿´Ì5ËÏ)HéJ6{¶@‡«¼¤Al-lWÇ&(z)ûmR‹Lú¹Þ|5'÷3£j;„¦DÑR——›]5îŒ3º`N¾XcaÛ’ 0Àz p‘ϾéiKqFù˜U¹½]g3æ- ž=¶zsrz?š¨,w¯{uùúF´$‰ÉýÆI éÂ;³ŠÁÏŠ…jr¯ªYšëršI ¬±& kôÜÈ#‡šþ ½ñMUmV’­rb‹;~s 0¥ìt·%åž”pÀöÙ&ºM{ËFåîmVÜXŽT’òc(;Ë®{®´E—Iïü½)DåÝ'x°»cöI–‹¶(òWjë}'›¿„wP˜æ<ŽMË^à‰œõCEUâÛÇÖ]S1—ì®oÑ¢°+Ø[ÎÕ&¼h|hÞ·Ç0œyæÉRŠeî¿ DiÎdF—°Œ´fèîš”éBd N ÌT¢²>ƒ|muêŠÄwWЄ\Yâä ^ªê @‘Á·ö€u ­îͺTÊ ;÷)·½­IýW«âp¤ ÝisuWd`(ÿ5C UÝÐÀ$zÖW¨NÛœƒÇ³HNL;G{h㥈 ›÷ØÕBoü†–TI0£Ÿm%–ëµêz@SÁ+¢tL°ÌÓ–ê\»•X¥”ßÚ2,$ƒ“VÁùA;KéSƒª¨8E!w RJùR¥+_’ûZ“mÔ¥Ø"¨l=h #Í _Д¢»Ûؽp1_ž@;²Ý @?o»´”"ž4@­ Ú1oVºÆ”™Ä’K­BÑøX™ìºßnº…ªÁå&·¤Ø;~tõ¾´Å”a}Ù cª‹mÎH,1Ò§œ[ UJM–< ²dåÞÓ%5¯+™¢ AЖ²§Çmr Ó|ó¨Iň"Û„Ù›+X×lÞE+%µ cu*2 ü1ö?ŽïJƒ““>j>®客¢¤ê÷‡ðû¦äKq´YÂ"z6ÅKÏ]w‚Í‘zdfP Rè&îv>úq¬D¿Ö£0´²’z/y*—Y‰Ù³³­ÁÞ\!ᤒåTcÏ,ó¹…‚øài…ïq‡&%"¸˜ÿ½ñH»¾hÜ…kÉ}꽺¤½j…樒Qt¨_0•vF"U-TA[.»JW[fRŽ*dOL-¿`åÑ—3,ªœËJ97°!K7o‰zṨ¡‚R«P1pQÌeT‡žßÖ]’\Ù”6Oyz65ôãJÀÆâÌ2Hª÷•ä+JcjÅóâÒ.×–À*•ÕÒ ÙÁÓÝ´»bõލ!§_tÓ†Äx> ?eµ*œ/&)` (ʺ„sXHC£(E’ˆÈ$ÁƒA½›5â=•a’mü°^µ—ïÚ×íZ,eXº›¼s0¦‚ƒ÷šZÒz.ø•ö™¡§OG‡ÜLÂ9;Ö§¦Ú¨Áw܉ÌÝ×7XåVV~ÖS‰€ËÕKcMN|Uuƒu~ì‡Ö<çyÖ,7¸jN}k-öœê’ùÕgDvÅ(j†‘®®ºÜs,ÿG§½]5¼ê)*8C‰ðá<ô±ÑŸd'•ëQ•àSvÁþâNFÐGLùNž@‚$È—Ñ#õE–†ä݆%š¸ß<-‘fGᨛíL¹ÄEdœÏ“¢ž­lÎÛcÎs|Rs8•˜´öevµÒf'ØÖ “õÓY«h¢ÿ›|ð“X§å²µè¡ù}R•ìÝX¬ÆDȪ: 4Iz‚TõКs«ŽžûN½‘VÈU”Å´vÝ©/·îxxý6Mxp²ˆ•š¾t|bûÅO^Hº”‘üp]çÔ …¨ ´ÃnDhHn ŽxÌçlMÛÆª¥[Q½…;­= ÿý¨ùÏc spÇ>‰ÿØGÊÜ)xô³¼wŽæÔ¥ËqV‡¶ ý²& YÍ ²í”CÐëáð¢å` 9}¯Ù¨Ç®÷­ OUhdRo+?Dz‰jvIYáA”vº;’qÉ)°Ììà… /=øRWÓ°õJ® jU= nÀ@‚õIÉÓdÃó°¸îsˆŸyN~Jõ”Çp-ƒ”Gg¸äðÑÒKíú;PPó87`Û®XEcí\èŸú̳|n¤"È•8Mѯ%MrèY|EŠ‚½ÒÇîþíˆÛ΃PwçJIøãiô¡ý ÷“ˆE`¨ÔM‰6‰Z«Íyî'núkñ¹Ýù‰CÁ«îHÇS™t–Ç|KÂÚùÇ¢ø;O‡RÆ!’íRMfùø’ŽN›MÑÑ'£ yìFñàÔÕ¥Bˆ¥9e…˜g›,îçq°Ÿpï\ÄДëÐsÝ.ñ£HÓý„Ò„`Aê>åç:‚PŠ£…*¾pÝÄãÍ@š’³8T1P)ê*0ƒÔÎ{Éy>Z$9­ÃóXVåšM×°ŒpÚñd(]UitD‚Ä$a)€SÕËð<Ðp²Fyógã¡x4Þu_pV `I4!'èr…©#équOÎ ÈæHg½·M¼¥9g&%E3«×€&ϹuèXÇìÏ!‹Cƒ'î,•{k°%UùÇb²å¡žÇ´5‰^*¶Â¸²€îŽæ©>!…»_„:no”íÄy¶ÓP·˜²d¯ä^Üv÷”2S‰¼ÝÔÝ·—PI¡Í‡±Ûò–Ct޼æCÉWun(“ô°LžÕ'Õ&’UHõL³ý½{Í£m¨³«Ÿë/HR,fOÊÿò͆ŠqM×5\£ÐG+î¸Y‚7n¿˜ß”?œ³aèà×X~)?¬ìÙîð®`f¿XÒw"7žÃ{}Åd9Q²ÈûéýT¢HW.›êì±$t­‚U[d£†èE½…v±Îˆ§Y@S58#ÏêÔOHi&¥s)©¹vRI\Ê›”oYº)ºÐ¦Ó‚:Ë8ïtMÙ‡¥CÁÛõ5žƒ-I`œ‡½OœéÜ(œÇ‘ªÎö3RÚØÑwÄz…VZU HßmGŽ‚žž¿êÓ4)ß]_Ã~/IÏÕ½„fŸ½(8'>(Ç&XÒw‚ˆëÀ•†'Õîø}n‡‚€ùHUÆZŠ\Uë' {:8Ž‹ò'Nè‰ršM;}×/êFÎïkò ÷ ÆÐIƒ ^J¤^ð$ Pg–!µŸŽªN¥ TÑàÿqÁåe¸kHTÕê{#‚aÍù¾¨÷y"äáx>wUMozí®XY¯8Åf*€/ç²·õo̪&Ks¨—Ú׺õÁ'õ¹:–ßSöRQ+C%·9ìK·Ë3z‡6Ð é³¶šËF£Ø¤v{é5SPxpº¯‘[­è)d(Û“ŽáD7%§[Ò[ª†äg I“žáX}ÓõL€ëm$â±T»¾\ZáyËÒáéŸf#½Hu ›JßÀZvãxZté Àð Š7¾Éã0?¿:Ö4ÇizðJ&ÀS‡Úr¹ÃöÛ(KŽS4|W¢HØA}:w\±™¬ …!@0Éì™§§ýû±#éŒú’òj8Õw²-éAÕ ãuáj‘o#½ï¾N>ä:Oh(¬³ÚÙ [ Muž)1Øû‰ªjJ>ŠîÍc2GE¥ð%Á €O"RÒŸv™)Oêö‹$¢|J—UˆÓÚ©g] ïåÕ!W&Q!.íb©[ØÝ6V%åQ6›‚‹ø Ý–wbžnÕÝT;«vHú° ÞhHw3LáJþH‘¸ãJ»‰›WI¡d–©ÎyÔ+ï§q«°¿ìu\óÄSyEeyúuÇ"U2¯özMlmE¨¶(߸yIùu–£“´wælûV…mU½[oúªP ÇÈG&ZyàPøý¸ÙTã¡à®²£:%‹êíX¢»uêmÌn×iàq€ ÜÚíõìžK(ÖÔ=R0¥Xu-Ü3KyêØd+2M'Çó!EŽïÓ=x°Ý€ë÷S´€b?¶:Ä“·±ÜÂåeà¨ú‰ +Б¥m'¥¥½¬éˆmè«y‚8X E[qnŠï‰Põ†³1¹fÞZÿ1öÂY=íŒ:J޶QÛ(3Áâe}K¹KÜýh1¬Æ•$Jê0µ#"òމ¢—œB}ú”زM Ë’/”ÝaÇO;èÑÙV{ÑJÿùY6ìý4»x¥‚"ó,\MÉd6-{FÙyèÑž|X†ŸÇPßEµ®¢JÃô>'ÕÀJˆöSeqÜd6Ö\Ö®w(né‚Ýu· ëAe'U(\ëC¡ìû¹l¬Ì¼ƒŸ¼/tÈ6e÷†œIÇìPÐRg‘^yyyE âº+yM-AnóϦ3‹†JTqý”ÛÓ±ü]¨b÷TuÍÞÖ®®—^6º>Ü{ýDÍ›z,;º¯b×yp=ŠIÌ•W¬Ú [¸³r—óÕõă‡|L™3®Îö:ÑÎÊF ÆT nͺ2 ¼r'£mîÝSЬ`‰fÈ„¬G{èM£Ê;1tv M¤ñª°e†©B«µrh‚ V'®ŸëȰ­^áInèdË­¡ÕIöO2Ð| Ý($V>¼’[Aª¶Î}éípÍVB•g QýœŽ¡8÷ <»µ=Juq§òqA˜WB~whà”r-e¸[ +D3ÙMÕU®!gë*r͵©L„*ªñ»‹nžÖ}g[P-k ~¶ƒ¶TºR:@iÈ"¨«îé2©’˜ü¯9–lž©Z!©D U¹²¡¡½é¾èíäçšNúzz´U´å{¢=ëgYˆQx²¬]õ ”VŠÖˆEÝÁ¸ µ§¢¬›ÅN9-l~ÍëõWDS×1Ob$æ†M³kq©œÕ6¥–Gѳ΋=Îzùê‡Ã½ÔÀ@S•ÂN¡¾ÉAÕã­œÍjéö.è ¤åh×ÙM©àaÈWîÉ´»Gùêâñ¡Tö8 |£Ûpו¬Q—‹¶.k}GI£:7ñrmOÙÖ–@}-aׄ/ÅŠzö ŠwòqâYÄG>=Uó°Ù¾hH•ÅÙÌš ÎU[e6Ç ¸ 8ì՝ܸ†B^xÇ®ÒqW/¶²1²Ž”q:?S¶€¨ÙêTÜCDIÚ.µ{l€ŸJÊ '7zütŠI*:–FÑNn$ÔyÁÕËŽh<¸ÎØí7(÷‘ìï¡$»ñš>%jã¨hßÔ¸åPjoN=HÊIõ¨¹Ö'l‹÷íwRêÆ ¹”ǹY]QíÍÂ>h»ÇĬÿ#H®:5L(¨ûG–׆‰´®7kŒc÷!ßUhqªë°Ü­çånuX–õ­ŸCÿB'±À*ìÖ]inl¡à]ƒ[«º9ä£b•3i{TŸljó]×»ƒè@h²4Xoìô*ÖHRWVÑ+rµ80©›I6ò‡­gåÇ“JwW„¢ƒÔ6´F( ƒQ‘Ù‡'¼C ÄB*yb$cMس–ÑD>‡L&% õÇÆý DzŠ-Ñ¡Ø=ÁøšO´CL.ºØßA¡ž 'T$V…ï:·Ô<@èª#‰¯Sµã(G/¨’÷T³éÔwóŸ³x’h_Ïy€*ݘÝ&s¼åýÎÏ1$ª:fxuPãêk„¥Yò Öڈ찼Pä­ê®$~ê. ò‚>ô hÒF¨N »˜-~=’îÅÔ¡GåA³£ÓV¸Ö¤ [R‡U14Ißê^ŸÒªŽTJ¡L®T¥æ¡¨d k»¥åªS¦6(9à—&ÿäT±H›2Ê›Cÿ5uᾜÜMMÕZKWº/þ¢ns­7é@—ÕçÉE¸™9€Xm·)t»¥ÔЂ•B°ó že¹Ò[Ïy G'ÉøpükÙùm9¡•.u>,¨ÓóCÐhÚN1èÐ)‰¸B¬¿×¸­É·°6‹‡$!-Iݺ\Ú kˆp³gRÛºvy|¹âPGލ¨Ò–úêžd‹î¢~šóFZ©sáäbRn£5+6øÁ2¦ ¥&Oe•#¼œ'aí9ÂÚmÏê¾R]ri*#zM1zdZ— Û£¾u£R»COD9ä8ðzf TÝs“òÉ7Í{°iAùo5Ï4^J:4-”e‡±éU>=ÏÍÒ"ºT÷‹ÇD4XØ<‚ú_©êµ§T&=(n,deð´Ü(T¯¢X^îÎÙ=ÖZý(iKm:_hÚÓ|îðüÄõ¨¿õ«.?*èû~Ö—gÛ<]òÇ5» t¤QǦ¢¦¤3 ”»Ý^ò‡aà|ß:ÿT³Ëv,á:žCtr¬9kÖ¡ò‡ÀW©—Yôç8ÚfõiaGŠsú®ÊC»&µÀ)éE’íðô'©Î•Û©Rü¡î• XY‚pˆzÁ!ÀÛ^ß¹ 5°O»¼äLLwš×ѾØu’ko-mùÊŒ[^FÚ«}H]rV KP,+í^·„)§{ ‡«WXÄ­q³ÃÂæPÏLrÉ!Æ6m^©ç,›•… CÍñÞKká~°ÚäÓŒS³¤£’©¹;s\¥¤0å–›žŽ *¶]ç l†é|<òÛî¾¥*1$í¦÷iYEønÊö’ž¸³„: ‡áL©ëQã£ÚÓÍ8@N[ã€3iµ´1…ë@ð“˜ÈçS=jìkÅxJñE›¸èÓ¬2IXò\F+|ÅâüFÝÄÔÛ”lÒÁ¬›Ûaq "Kµéûˆvi5Òò¾^A*¦ñ%7Pä¼ à†hÈE £= ¡²Ù–eCÏ[G=ºØ5–M¾=Úùgå÷SÒK°‘Åæ k^6U‰õãÁÎõPY’6N%ø®-”¥¾ìÁ+Å)6{â qgåéÖ°æxz½ßDNÇ~l;lPµRW$Q²KW NÑ ]fõXóq¹€×¬Uiê{Rž¤Ý¦ o³yf,ûqNX7lÎÍÔ¾©8=Bö«õ$I)öHF½ˆ ®ì±QŽœü†‡E¸{Þ¥öº³lQÔ¼¬šL5"®±N oØÊM£¼k#ƪCèI˜6DÎâä‰jØÕê]–ùp¶Ú¦¯’ô§óNûíˆ'H5<@*ˆÓηñ¸l »ö¬%¼±ÏN¾}ü§"ý;AC9 Êqm Khgë«–GÝL§!D:N.’ˆ5G}d•Vª™-zöî‰oâyw“Œfñ¬ µ… 0¯²¹øI¬YbºãrS+ÔÝ”£¤¶(•TlfÕ£ 'U“+ùùÐBY^ Ì\H0q’Ÿª\¿ƒ|§ü§~E» ³Ná«_ØÊRI¬5XïàÒ& Ó P–°f'Ä]ÉÎwdÕ^ën;öÈîŽs]§‰¬ šPöÀcÉKBïéˆN±ÄLìŽÍƒíìS²÷N´N±èTºó8ÍöOáÒÕÔ׿žKרþð­“Ó  ÒLt!³Ö¢CÿöÏ•ÛÈF!éÅ¿ƒt‰Òæ§ßãdSÉ$Ú íÙS¢:(L?=GkìÚ+:íËqÖWÇ¡%ëšÍ¾7ûkt]Tv‘Ârlf'¶*›=ìÁñѹÅ×(6'mèÚY¾IÆ´£ž™d?æþ¢Ñ»&K¬?J!¢p5ª°NçY1WÖî(«ä¹§*-»bõ2>I¿‚ëRÇ_Xº«æÍ¯³Í‹j©ºéͶ|WJžÖBÒæïÖðç.Ky8ñ<ŸpɆã¦Dn· ±ëyZת ~=}³ï¬[Ÿs £n–ãÝ‚m÷cxÊ<éa±Ö°W0l…NÄJ䙞Nÿe ßí =§ŽPƒŽˆ  Be L;eó§Ñv²;Õ»ZúÕñ­¶ÆgÏTå&9Ïã F“œ ŒM~#YÄK´BÒ\”*5¢"ډݨÝÁØ£޲nv!,‚ÓÔ)ËþGWär&Io·|£œ%õªWúµä0’‡Í’#Ù’õ"†ß‹Hw¬±m‚ó»‡öóD õºÊM¢ š|IÍ=$éðuõ0azTÁVË¥ Ì|«wq{ÚÇM ÿ´µú5MßyÑ× +ÑÙ,§E† Œg#~#ð›\ãӵ϶$ÓYZn w¾ËýÞñøØ, Á6ÙJ$An …Çè0ÅåУC¢`Ÿ°Î¨‹t½6C_³ý»ì*`Ot²ÃQ™+3ÈWÖ$(¯ap}¨æ¦<Û®Ë)Ÿ§ý¬°zÙPª<äºæ¤WDÅ¥ ä¬Ìó~C±Û™§GB—ÔNÌÍàmWš•=…¿-˜3‘iúF]#…ÛIç~qÿˆy ùž«ä¶±wZlÆc3ßÍàžUÙ9”xRZ#ŒÓMòŒ+¯ö‰ê·—ÖºVÙ?õÀˆ©“x½=»–ÈGš²y²ºd<ÍÙ ›ð1×(9à‡÷QŸù"~G¬Å€•ÓY6À–’3õRÆ™”I½Øôcw,¦/y‚Á•ïÀboé Iî?–Ö¶75D$D¨Çkå|ÚQ( ;ÒÈWìJQ'êk=/§µŽcØO¼´qx´áÄ9­Zrj à<+’ËèW-Þ¾ä)H²{,u}‘½Ëö¸ìtÖ T•ÖU_F®.Cqç‹° ½w:S‡¬KyK›¾P3ÙãÚ:æ¶ G(X¯ÿùP»@YwÔ‹‚4<-ò æ&¦Jéc³Ý$vDƒeeÝ65œïö-U³pÑ󿽡ӶÈîa«=© i}¹ºÇ±'ª#c’.tÑyIçVO–Bûáa bW(_ÕÜ´íÊÿ(þH<‹c‰Æ'³[tÞ±jMqI¯ ÜCõµËÓëWÒÈÜÓ†G½’Ü£§¸KÐßc¶Ñ#ùâT•‚ﱂsRVƒÅv«#EfŸ›4Þö;i²©Àš·ø'EIÕ÷eKçRPúq hJŒÐ 1kÓ¯kùR¤3-ýŽö¬š?&]E§“ÏSÕ Ò, Ìq-›3­‡4ÚÜ_¦±ÚN—.64¥ ±ö«æÈ\IZTs›”àè½ò{d)Wž1\ÄsI%[Úm΃𭆧$?à¼lé^%s»j_ÜÅ- 8LßE+Ô*í× ˜¹橞EPV¨ŽODzÇYO­cº …+§í¡fWfç^VŠP•˯VV]Ûws¸iÍ —©wsãy×ã¾… ÚU>¯FÀ¼³lœ´üšS]S{¼â“>ƒ™Eï%OdÙ†^ô€ÔÛqþSY·Ûy&§±À":§š×UÅñÐNË 3CЇQDnºµ©Í œkˆ(88 â‘ý¡A, Àõ-¥÷GÛYqiQ;ËÆ¨_†x#Åܯ‘™Óã»t®SÁ8MŒ²±7û|Áó5 ¥õä ÚáNv–Ì5¥àåûí‚í¨…´“`ª³5ÔΕâ…ú~12¤y³p%¸=‚Æ<1|rB—Ä­ãå±h/çåQ â5õTmg(3¸yZ¿(•Á.&Ì¥“±Ž‚)j^¹ÿù®ÏÆýÝo• Ƨö Ÿ|dNmêˆ :ºM6(©=4'ñ$Ÿ¦Ènk絨"¢çôdîr«ÍmQ“Aº•Òœ"ä\ÖJägû»¬ñvlyVʃ¤`š7Žâ ´yÞZæðݨûÀ+Z–fv׌RÕ1Õä4oæ7)ÐtµðÈ=:Í*M j©¯ê¥½(qJºÒã³Ë°Éê$55 ’7Ô¥xTÕÈÞEúÞ8øà Ù‚h =YÉpCó¹ š6JÒÊx¦ÀÏý0; ãN°ïÍ—ëìõ¾Áz—Ü!%C«E6óqŠ,mj†h¹åìÁh óß‹-nŽ­ ¸šXU3Hº„D‡™ŽP7y8E–¨Ã(TÐeY.í¸öNTf$é1YRŸÜ<-x@‰«žºñPV„%hÙ¦t`F¾w×3ÔVùôÛ÷æè¤ëÑy,ã·™MÌÅS)Í™¢SSEÅÿɶõá°ÛLz¦‡¯'°|S!.ë´Þô˜Žÿõœ¤Ta0ö>U8Yúì1Û]ƒÃ\ç („5»¡ry=Ò´J†‘Ø#Lîƒ~O—ÙÃ’'»«ªÄKS*ÍpfÚáÑ î 9µÙ£{Õ®©ÊÐN‚t•#IÔÔ Dåê‚Ó[³›^=*嶬ãx»*s ˆ…Y¨ZQ÷ýÕ^Km¦Ûü~oƒ@®·ãDrºmU!’»(rw˜7wß1é‘¢Äàš›Sšå”nïš/ ßl\rW×R8`n§ß–<7|ásφ©ï˦éÙÀ™Iw´Ç¾y¾³í¸´ä$Í:•N`¨M‡lÍ莶fQî­;ú¢CuáÉ/Ù¢…ø¬ÍNêEm¾0©”QÙ˜DWʼnšÓbS|Àn¡"°¤æÁ®Á¶)J)þÆ]¡Þ~‹õQæ d‘ô¤åÙ^……ä´¦SƒŽ-²Àn€Ù®¿‰)g÷((Žb |/‡â4€…f9Ç'w6“ö«[Hø•lké7¤£îÉ2Ÿ4]jalž9ØJMG&š*— 30òrC°Yý½A€JÛIsPmÂQ!@ߦ|8aPŸÚ¬[ £J·R¿ÏµúXGODç²îž/#NSï›jJ°w9•N¸'OˆØˆ,ÚIÝŽôܺbQP'ÛЗTº‚Øu¤rlZ±è6b’!y³Z寍­vLÛœ`*P¸ÔóÝÄ;ÙƒÀʺì°Í`Çn;Sx2^´fÌ·÷<¶zTñ4iÌ·«n~®J£}+jž .I>á¶­6ýžƒRo¤9ø~m(ýw«»;ž\ˆ3TD=méq’RÕ‚ÙËÛ¶&!Ò–Ò.Ö$>RVw£ºÓK„tµµlÍæÆÆ*¹A g&ï¨(e0[vÆR*8žJî<`}èT|2K±=7výaçõÑb‹ZÔ’ΧT›CH™‚=­zd©Ø%ÙøQž˜Äî²ÑðïÉ]”\V‹ú«qnn(ÏŠ7œKÞ1;ý˜mVÕKõþC:ªçTÀV-µ-=JƒT7À1Éç, Uå:’3E©@y¹.+Œ\PšmŠ@0·±‘­‚ù7@1Gµ/rjU”‘áÏ.V«ÓªÎŠß•„¢$'4ÊÎaË6´å¹ z`i½MÛ¹¦êØçl\Â_8Ùoʬñî¡Ôá¸NõNr,X)€Ûé”ÍU…™E4UïÑH Ž(,p´¾µÙñ¢²ˆD5V¶†rGµ–ŠÓ`_Çjû$I­ÓgîÏânkjÀRa‚êá ¤`ŠÛv+—œ÷5™ãº<•IÝU¦­<ÒSî_PPU!N;<*)%Ý vÏ{OgIùÚ¬•CKi¥ÎÍè7iÍqW—gz ØUʦ›LßG½‹Év½ã°X@žýµý¶á~ iÒc‚å; ‡‹"øXömQ?<ëV¯ª6öøèôÙ2·S8+@.EGž±N‘g1ï4•=¬ª‚çS};&›ÖvjVVߊËÇÕU¿i‹"q( $K'÷˜ÔæIxÕÕc”`ðäË,í*% ’ °ƒÂÖÅLÄzÁ oÔÊVukÛÕ&“J¾¤º–y&+Á‰ÊNž'ñàóæ”ªI Vp$7Øœ’²w„W‰±¶¬Ø*£8Ì\âª1®\²¯KUu§ÄêÅ h"(>ä[t,)ow>Îü®˜—¨¿ô‰šíŸbÿ¡„'ûÞN/Ÿ²¹óÔ!ÏZ3ƒ-¢&µÂ´Ó¤­¥Î +´ÃŸ„üòÈ;ó¨|[%uŽÙ“)B÷yÆÁ";´!>ôdDžÀ%-JþØrøvõPÉ"XÚ¾;!Vµ‘t$´x®9‡'Þ:²J<‹Ý{6¹Áù\Ýë-*hûVVçŸ8`Å«Þ-g–ÀTNæÑ|"O¤J  ¶‰ú®AùñZ㢠Q]©i¬(mÀ [v;Î]÷ÐÀß[´©G 9 ±QOP ÀctÙ¦M€ðIõpû]•ÏÔ¥rût†.æŸôÅÈä×Í£•-Â㈜„Evä#uXWÉ ìr,*ù¦dœŠÚŸl­å+ðáÕAc‚OpÆP R5.@®ÎàñT}†ç­«J”­ð)xoàVTLþº?ÙÂÄE#¼¨lsVvŸ«UàÉÁ“÷’hV?t* tUêMtIcx5É‚úÉóìcY9Éî»jwÊF}8¦ƒ~lg «µà†TKŃIÐJ§ŠLä'Ê ýVæÞí6mò‘ú¶¢ÍŠ5,yí”Kã€c¤¢ˆJªº´×$}·‚Z-A&C6Ϻ©²”IVÒd%úP6² õ?u‹mì² f8ÁJsk‹ÃV‡s®”´å° ®uèVu$J<»“QÈ¥¦À}dÙrØýci ŸË¯áØl\y¦§Æ±fõA$Ò[ˆƒ l°H<§ ‚|þÏ-Ì즜“Κ«`Ýàx/@óžý”Å¡n¸´·Fï­®‹)?8 ÙXƒÔ %èËêÑ3{òŒ"jÊ9U€P×ëj:ÛÃJµ[þûhÎKÙù|NE&)ÛìŠðIY «àÜügK2°Ôœ*KCƒÍ©Zþr­ª5"`­­QÆ[ÎøY^öŠÕUb‘ãÒû\¾À:ˆlº&;$IÃ`©û¤:¹4|uŒ›ûîy9ÏK•ž¶sŒ—ýÂ4l>ßu&Y*5Rü'OÙ®ÕãQ‘t 7×O Š@u1RûêœÆíÇbÊR›pãH“Z„¼Á¶$Á6)…’Œ°XÓ?8œâ‘Ê®8^!A6™Üí¹©;¹ÇQc“(¢ î¢èŽÝcD> &³¤U]vV‰É)C>Z©y2V÷0Ô^ìµ$ß‚’T·j¹·$Ç)SñÖo›ZE‚*àÀ4Û#UÌ‘½{?¥-mY[$`çž#Æs·°oN·9áË3=uõ9§m 8æì«Èf"P>¨4©þÆš™›¥]Û„îAܡغÄWjG‡Éé+/bÃf XF_i9„ñ-ö±èÀM+›*­ÅZÆ#‚ÈÀ’Ë;HFÉæþ™(pÏœ4_!Æ&îN%h t€†QÝ<öq>YwugC:ÓšB-|¥£·ÄÝ÷Ȭ¥ t{ìÚ‘¸íÔÞIñ¹GÞ7©pµA{!¥(ZçýXHŽ"ßî¬H=¢X=ðx8™~‹Y²©Kø ÔÿEAÙ œÞ:6zÓTpm ¥*tÎ{ñ¥#å3Y²¨õ)…Œ²ýÒ8$Næh®“À¿ÿšÒÃɃÒ˼$,CXáuVbZwÓ·»-õðÂú–sBPMj ÚXY4ãàŸØbRÿˆ£/‰½ÙÛ‚ixà¦íPX§óUë³|¶]ÉR–al‹†„þˆycÙ/Y-ºÛæ­Ï;• aã’Oæ’Sõ&9¿te7{ÝÎc?ÍÏuæ9p§6ò”°jCR‚,Y‡€H´£àÑû½­vÏôn±“õÈJRëgßo…Û¨X†!:ßñ•ø2 ²=£rèò΋” ‚1!¾83)_Ýùeíx¨)6V†Å÷—È€>w¹~Ź4‡:*áwàô¬<ùJÜþGQìÉê‘7Up–Sk€çÈ^ž´Lä [ʳŒ]‘Fv5 …mbç¨ÂIXii³ODm¬‚…¦¢{ù¬5+ð¢ò3þˆÁÿº%ေ1­CQBš³š‡ñ7@eJ±úƒ ,Ò±»Iõj ô´Ó,ÆÀ,ãö±Ù°¿HêWâã°äG¯ø&&uÎã'õ(åàþ(Vâ…š¦*‹«žB³ýMü=Ú’`öˆJ¡C`0%wm=l,]Rp“$ÿ{zçƒVê@ þÉü§z–E½o}s›y8ì©ÿ.ßÙvºØæ¡à£üR|¥`$}ö}åЪИD™åƒ˜²ÈdîÉX†|ίä^%l–—º:ªÍÇ[ÅX•Çšq©=X—|ºo@”g9R+Ipk7û`ó e·Kn¼r’èYtJNB)Iˆo µ{ìçL¹ì¯–)ã–£z§Tl¾úS‘rÙÍw’íå, KA3xY¦v«8®ÿÖ¢7€ºËÿ}ˆŠlU[ãÞÊ>uªË&3ïtVO””¥pp<u {is"@}5ŠUéûUUn@Ü:Ÿ½©2¬ó¯âéù-{ƒ—§%°·°Œ¸)3Ž®vÒ”u 'k'gîÀ£,3ôPëYeÔ’ÚuþiS[óXw‚ó'Ûò§ V°/­/Wª0Ûvxå¿{äEeø¨ô-~uwû–E“¨Õ=BcŸŸk¨L™ÈÈvShQGN‚Ÿ«AUð­èk±×x뚥쳀RÍ;DVQk ¹±)ÀlÊ#G@tà³6õl¸à {RQ”æñÝ!m'([¡ð:˜K÷)÷ ._=ÐÜU+È4ÌáÐüîØŒŒÌîø™ôqÏ,’ÈŠÇÏྒྷۉj½‚ì’¹(ªŠ[B;wç&Æ3õ.ÀMÊÝ€ó.TrˆÎ!Ⱥk¡4ð\þ 0ùR#¢Êšyºd‚Qp ´yRÿè¹Â²©¡¶=´pØLêÛ%[%Ö÷£Ð’~²w‡Š®â´³QV¶›Jí18+Âíº‹KêPšŸ>ÖåD}IÑ Ô¯òC‡Ú&]›¥%wØt}EÞ‹»EÔkžùhý¨¬ˆòïm¡±%ªRO¥·Ô•À’Š^n÷ºB‰¨·ÃåE0Ðöe ¡åxÿhá°Uçew–£²gmIÐSnÎ%l8§®žM=â*éˆl–¨’Á)ÝÛ² 8ñg½‰øzÝŽ•w§Â’:«[ø¿ùÿþß7øÆ|ýíë›ß÷æÃ¿løðúýÇ÷^ÿíí/¶?û³çÝ7ËÀžÿ쯿|ûÎý2~þÿÃögÿÍßÿÃ_]ß¼ÿçWüWñgáÿôÂ6ü¡˜?ûÇ·¿}ýü'ÿåõÃ÷oß¿ûë/~c|x}£Ëüýæ#¿øó÷ï^þÃß¾Äý%–¿Žõ¯Cxaÿ¶?þâûýr¿ùÍÛo^~þ³—ÿðþÝë÷ÛŸ÷¿þýr…çsþøŸ/þõ_¼èô—ëÏ_®ï^?¼ýúÍ»—Ÿ¿ùø«×ïøÄ¯ß|ûòï¿~ûúñ÷òþßþêãÇ_ÿõW_ýö·¿ýÙ›ï¾ÿÙû¿üïþâ/_~ûöã¯^þóë÷¯~óúÍ˺-ÿñÍw¯?~µŸmöò¿zûý§ø‡÷¿øøÛ7^_øÁ·o¿~}÷=òûo^?¼ðé/ÿð7ûòw¿~}÷é—ÿöÓ/üåË7ç%þ,þôv?þµoôöÝúã7_ýþ»_¿y÷û·ï~ù²¬¼ÿnþíÏ>þîã_¾¼y÷¿øæÛïßó÷o~óæí·oþ™_X—þæe^ÿéå ßðÇï÷ý×Þþúã÷?ûþí·~ǯ|›OÏ|¼ÿî»×w¿ß¼¾ûí‡×¯¹ï¿ÿêLJû/ïÞÿöÝþøêoß}ó ¿Æ7?üú«z÷ö_xý›ûÇßáGÛçŸýòõãKïéåõ__^÷õ¯¾òþñ÷¿~]ÿý1ßáßþðë÷¿~ù_ÃeøÊÿÙþðý›ß¼¾|üðÃë¿ýáËøÓWTv/ËìüŸ]¬ÛçwË}½æùxû»—ÿ9°üâKð~ú¯ÿõOÜÓׯ¯GüÇïúÓO{ÿ»—?üÕñòWiß_ò^_(y^þíOÿüïß¼ýñã¿øË¿y÷‹÷/íÓUjÝþã•þæÇGÿç?î‹¿xùÓ÷úïY°¯/þy}ÿ/Ô)_ó¿âÿåU¾þäÿhqû.ÿ§ëûß_ÑüáÛo׿ÿù§_øßýû›ïÞ~ûûƒûÃGÿÏß³Þýû_ý_?íØŸ¿~óö‡ïþý¿þÍÇ7l‚ëÝ/¿ýéF¾ý~¾ýÝë7ÿöã׿Z‹âÓÿÉ öíÛw¯ÿþû·†”—¿Š!ü»cW}ý/„ïY‹ëŸ^Ù4ú‰Ï»¯ßãîJ¹¼¼ùðáÍï·ÀJ9¿ü!² ¿yýÝZ½/_ýìÝûüÉ ßîß^~ñþÃæ#eE|Å?ûæ;þéGÇËWÿúÃû¯ßü󷟘_¾z÷Ãwÿì£ÿå»Ï?./_}óþÛoß|øü£úòÕ¯_? >~þÙùòÕ›ïøé÷îúŸ~Ú~ü O‹ä?>o@¿â"þæó+>ýøüŠOÿÛϯøôŸ~ŧÿÇϯøô¿ûéÕɧÿýçW|úúüŠOÿÏŸ_ñéÿðùí?¿âZþéó+®å¿|~ŵüŸ_q-ÿÓçW\Ëÿ÷§Wkùÿ}~ŵüó‡7_ÿËëÇ?Ù mÿé纱òö÷_Š>ÿ˜Ïÿ¼ðŸÿÏŸ_ñù_ÿôÊôÕ7_¼ti|ñÒ…ûÅK®ã—_¼ä†üê‹—\ÌÛ/^rKþ·/^rMÿòÅK.êÛ/^rUŸãõký‹—\Õû/^rU¿þ⥠õ‹—\Õ‡/^ºµ¾xÉU}üâ%WõÃ/¹ªß|ñ’«úíç—‰«úÝ/¹ªßñ’«ú¯_¼üñ™½þÉ“Œ‰«ûç/bgLùÇßûÓ'S1Ì}ý–Lñí7ŸÉŸ¤¯ø@hü¸259â¯âz}ýÝë×ÛÝîRfÙמjNGóìAR\­ÉyÒg×óSB>0 õô»UÛÀy:Y”Âl*€úˆ¥YMG¤_…[-TêjjSu'ubœé×ü¼ö«íÛ’aí AäÙbN«i¨ööy‡¨æ»VŠNÌïž•„Gºe >ê]ß5n•J^;´°wئƽW¨±æýTU÷JñÕ:§ì|XÇ8Ë]øRqÓ‚o©(}Ý)IæÉçÈãŒZeðvëžÀž £:D£Èqº¢¶?ç¦GnÒŸ¤&©jàqµ¨AZ•Ô£(j®z$ú<ά×}_Coɺ¯éä]“ЦªYŸNÉk\¾“ó¼U Jöx•ÒÌãéŠ ÞýL}ߪÛ)j °¬õ4ûk:[ïŽ7Q6?J:G”xO¥…oçÐ+$E©GÔ×Y%ó'jý«¬¾¯å|ò匤ÃF»¶paÚ©®ÇNZ_t‡·è<ˆR}{¸K_:¶ÖÆcïKÆ•‚?§ŠPÕIoÕ‰3Û°ß3ú¹²´ÐðK.Æ)ONm½Ó)Ú5ÜhÉ©^)J0‡žFrxhfçh[Ýö¹÷¾xŠ·>˪}vÛr±ïÖtx²Ñòé8QEöŠìú¬=ßOÛòºëb¿& ¶»4íÓÙ¦AW>ñv~Cq‡ìL tOþäTà)ZŽM©˜R1„S·À£›R4N•í55ák³.•HOïÙùxFg3ãJ;Îå¼yÖíÊ®Ï*w=©è£Ò:¢4=Ke_SÙI‡õ¡m<—] 1ðà.b@­ÛñIëTõó8Bº7Ð’©Êh=4p6©â…—GW …­Uh7M'â©)Ê®¼˜¼µrŸ!ÈŽb´á¡ì H\ÚuMêHõ_oŸcŸjøs™žÊבÒioVò2ò^¸H†Rõ`àP½å¼/Ê 5›zúçf)Ò‘ö–$Ìl7‘oÂ’ô›ò䜸<=UŒ„‰¼¥°ôŽäfEUCdõg×r›03Ñ5D‡ïfš è)êp ¡åãi[ðø[aZåraJ`SXËÈÌþ{ªä™ª"yï½}gªÏž5þ1¤©¹-å»èQ9Xì<Â’ÊÜ«—–§é•À<¹òb18ºß¢ëúت€ú¿I÷j§çÏ¡ ¬þI,¦è>R†"«ÃqÌ ±ÃeòúY‰*ë³v¸]—ú¡1hî÷$¶£*›žnÏtö¸\›=âuzQ¦óÚ®œóÐ,©ÎX/õ&ÐÃoÚ;ˆ_üê F”¨…!nìÆ’À-ôÈ€•gâÎÕ<Š*ólë£óó~–3kàZÝóÃÆÆÝÒ±~¨F¯ƒ`rà›ÄŽÜIÚ÷ˆ}9þ]Nìðœ{_{zÇ“o{áj=Q¡óùDõØ“ž MgT\tlŸ}JT\^ïÙ©²x9¯C„OÛ£‚§b©N—£‚ŽxÚz4S‚÷tX«D}}‰u3tŒû<¶¥=i8a9Ê"¾ËZìq´ó’M;YJQ”žeà²!ñ—kŠ…}lA탅ŖˆÀ–{¨ôÖDw$c5§¦n½ËÖ™•Žo¡9¼¡ï¤jÆ„Ûî„  SÖ”f›Î[q²~èŸH.BR:€ÉÚ§cÑ“|É8­G`»*ë_ÑîC’Ùe¨Ö™»óæÊ.Ì‘i4÷HZ>D'¡y#e²:úˆvž^K"œ{ÒP®3;¸Òªî9´©ÖkEWÆœéÚ<Ø›¤½ xÇSSdkH6f/ª1 ûc Ķ58$Np ŠŸ||ùÁy8y"]˜Ìb:‰mOÔmi*Æ’¾ô*j…Ôåñq$&òÝò¥m«Œë}»4Ñà5ß@],B£>s—þõjÇ9,Âê¸ÔÓ¿öØo¶³'zw÷FÙÁ br©ìWY÷PÇ-Ý{Õ”çÑ'bHýUÖ.z \§NÍIšóž³/›µ<)@ú¡Ø ©Ûº“Í|çÝ¡Ùk5Ú •e#ËTPQ‰Ï• ‘’ºôV.Ÿ¢hÙfŸ·âúÌ-{ìe×ߪl9Ì 'Ò)•¥ËÁgœ…Û´3áj.®˜´s¹œê³ÝIY7åÚSYHªI"VpP‹:ôÈ Tð´t>ô²¥ÌxT¬«ÒýÁ[òÙù—jDRsö¾Ø‹j¿6§ÊÈ›nmú°ZжU© Àu××(…o•¶Ã-çE'Dul»ìŠÂ®xåGeô ÂnësΆÙ±Mîg;Ú­ÜÄía¼Þl\üEÌ VLŽ +SâqSÿ¼.Y6órí£mÜxÞNc–ZøÑZbyI§V%Óp7ÃRúc)°}mðtó¾‚Ö£SkQ(e:»bµì$öÃáàõO“P."$y4w‡üb”ØJbæ·ˆti!N)ÙÔî$OU4;üäÛJ[žžr»Þx0[vÓ­è&_D–<¸!-Е¯ýæ+kÀ¼»¤¹ Mo7ck• }?,°‘RYVD>Þ¾,¾Ôu:· \ÈZ4:ÌU@*Ak7Ã%µ(…¿GªÅ§o*—ðÇtÖ_sY)±X[\v2\ Ùê>θŸ<¯eªçT' {;ÔPs´Ð¡¹b×uY¦èµ«•J4;Ê…w¬ê!ÔÈcw=„¹M»G(‹ÃÄ.B!IÅ ±&œ»3S!Po8;ÒÇ£Óø¤$JÊRÊèz´S—©`9X„Ú#òÒÑw'/Ó®¤_ÜØš» o²ÀŒ”¿X±:M³+=üÑ÷¾vó·²7DèUû’漊c(DÜ‘¿åÛó\X!ÀI’c-°” Ã9K8¬+ ´GYöDÜ\6Qg3ý&uk;‹ˆ;ÇdÆs™Ìœu<$Ç‚1KPMŽÊ,)F2÷Ý>/RÝIÒt")¬™ ­÷ãøÊ´V¨»¿ˆ( D’á-ûn]^Š$v1nº=SVTPÅ6ê"…Ð˹»zAÍ Ü¦ßXÙ>¹É·‚Ô•\lÄ=Ôþ—ÒgT óÔãé‘x0‘/¹ª@LÿnINÛ¡§€ ÝP¥êŽ¡R U‡LX»ÙgS¯Jö<ËÍI°6¥¦éºHZµ÷˾Q¼á¼Š~fä_²·é¬hæ8AëN#Ém&µ³ïµ=³V‘q¾kȹb‡yªjºý¦^¶Â’-Ú07ÚÛ¹%ßëH¨º€ž³D³Dh‹?–¬,n¾âCntbw_¼ÁCi·=Uqñ®ÿÉæW‰Á-£ãEºÝå …O êì:|‘د5öx²™”›êÇúöº¼Y ¬Rvý'(²w{Z,Ÿ­+s×mü.j*eJÓIkÕåÛöPv.#ò’˜‚µ«ž²Ý¿ìè9%i¸ƒ½ŠÔwœ„õ3>…¥&á¶9)¨¬^sÐ ´"‡€àÐ*ÏÑžšbH„Ë[‚ò±9ó=´sf…ëU¿êÎ:©Ü-—„ÿ†íöÀ5åÑÄæ>\™òÿÝÎak[CùÎú8‹ìT éÇ‘ OT–í'—!ÿvIòŽº[è66H®åP©òD,$ï²F=Y†ªÂ±cƒíÒù `&ñ+nkè~™²õe (¶a?Iµ+ÞíOl!ä,ïG¢*‰ï ú;²BÐ÷–eö’©ç/óâÁêPJÕ‰­ˆØGülÔfëa¹Cg¦;)!ó@Æ&Ó[# ñu¬Ùu¯`ßN{ä2JÁÁ<6…™¸·J¨ã2{¶j€ÉJ-(ÏK!Å¢½³mU &À¶<ùh TUô{ òö¨KÂ-ij¿«à屆™"J· Rq~ljp/uÌa#ÏC`ß,»óê­¥”-ÒFùX"qÔžPh–(ävk¿¼áê&lèm&KÄ|;0O-a«ØYˆ®ÄzTcŽº@//–¦è<!äÜêË8:Wлy—uM&èåRÁf§“‡‰À/wÙ¦I[9©êðK×»aS ›b°RtÊJc;Uräß3û0ñ ÒX˜8©ÉmÒ…Ìt8¡ô ¬iƒ ¾ÏrÊæ¦ò·w}ô+ˆ•ÊÅUïDrî2>ŠÔ;¨Ø¨0µgaW°ÊØNNhjý­(6íÒ¡Bë*:’œ^9œ¾ßTE¤^TOUåÜØ—Ï aïqø˜ZDË!ÕÞ”¿°œ%Ù/Æ]COªéÚ‘¸\tú¥häÐ%C´ÝÅbq%ÚËù¾Ûy³«Hö4Á!ñÛYŠA§ÃØÑ³ëµ¼;‹S&A×hÊq*BU¢Ž=½¤qmE•à€Ãc·‡!@\“]D¥–- oÕ¼•¥§<¡³á·tdÉ~Ûí B#ü“üÉ5g[V’\œKÔOUQ6{gƒn{@“K‹ùnŽbÙožÃ Oiœ %z)hÁþ UKlvÚ·å Ye{&/íêþ ÊÕ·‡4—å¶ÆŸâ&ýúÓ¾ œ¢^%͘w©NO”uJV ˜ØRW”‚5YòÜØ.‡„tUƒ/Ë-v¸6¢2ùd²ý¸RÁp½Çê+ƒIn#ö'ÇÕô&#;«)ioªs“JÕv:\ÍÌ䵓•µò˜XCôÓóœµ8ž46¥= /xB‚ñÕ¦ô>~6å8Eùb{1‡¢îÊOhx ´¤±ýådkÛUˆ¶jT-Ôæ9¶)ñƒ³ËçÙuñ€¼j=gIR4TÇÜy†ËÙz*¤ë]tŽíj„#‚v¥y©Xô"‚.l<Þ¼¡ž~g] ¬Ð4½•åvpÏší1å4ȼórèäB >ˆ;Š%µ‹ôX㬺UðÞȈHe°:4ÛÒT¤Hñn”¬ öI'÷ñO"gß VåjDeª*…F6yFç9úÛì0Ó¹ÜW(áè";jŒ¢µÒùw[gìFÛuèðpl˜rñ»z¢àÎTðœŠëØÏU¸$K¹µ|@MϦ+J\MYî's¬z¾¯³ lé¬ü-øz€èò_ch„d£2N ŽÖ«ë¢Èh–Ì×Xù± W“&@¬ÄžüñóÖÒO" aËžÖ?€•A~*áé:Qm¨?¨¸–ñF4ðêH}øOTúú6œÊpk‚ûªæ×X°¤0P¸ÇI×'ãÛ7=¿¿î“ÊŠÞ\ ÷(‡ÍŸŠ ìm¢ûòfp¤\iµÚЇÁ‘ƒ+*ÓKè9CÉê®õé8ìTçtfmPe€ ÔË—ð<Ì©µlÙÀÕ´Eü" ã²óñZBæ;YÉP>;«ÞaPÛd(eHq¡þÐ¥>ZÔ–Þù £ˆ&´Uu}¡-‚&Zà)º¶¤U®ûªÁL¼´§ÄØ5 òPZv;=ùWÕL±–ÉßÉ%ÕîPñn¶E~¤.~´Œ+,ÇùKí¸ðœoªfp7¹îVáÈÉê¶Ã1éÚAÐŽR_Jp”±u#ýá ¦HšØpá¶ÿØÆ’_@[•d}. 3¯çÞ-EíÖéã«s ÈJ·VVñ¡²ŠYúŸÆ[[ƒæh¼Ë&`O=)¢ë®^FÛÐËùÐØùäïYÃÄ>ýŽ.e[øèŸ\’ ZT³Có¹aU<áð|æöü•Ûº¼£ ¹Ùý5¢óÒvȯ]Šƒ­áBQ³í“¬Ò·ªÕUjG˜V"AWÈ[å Ö†çwÑF¹.Fñži_‚oüöô[ÍâÝÈc&5Þgæ¨ °DM2¢‡Ä¤ðËÆA½”Úæ?5ØËËÕ5œÆ€ÍR#x0Wuê%~ê!× N7+ñ5ï,6R‘R,.@z’wªRqK\äKªv®|è$¢Õ@^^WN°s™B³ŸÕ‹Ä¨,/ÏÊÖøÑuARqI!>NEa ý Çó)º­fÒ’~À fÙ"¬VÊ ¢qì›L6%++è©?±€”Wƒ'GÆy+MqSQ„P3M+ ²ƒ…Ë%ccœ—ÞˆÄ-J6j†n÷³RCÛsâ‚æ m< #›2º­¤ÓX‰SVžú’N†OvËvEô$͹r/÷‡Âf:mÎ)o¯Ø¿xÖ:x.›$‡=¶3@ì)ìYUÄË8˜K;.(¯>ãò"ÞŠãlš`{4ÒQ·¼µ!jC×û«ú„øbÔÇ‘4ÅâÕåõÔ –DÕÍ¥÷HÔá§z¬ ¾.XÆ>)‹˜öRŠnâ÷%[…ˆ¨ÁÀ¹¤;6–NøôDZ¼—Ä,_bß—ôCå»äoyç=ÌÛ]ÔJ#5ä¹+›NÆJdeÖ2q‹‡EÑK>–QF¦¨p¤R{P—\ëÄG¥aíÃZBYOJUÛvgwó¬Á Öé@Ç_’+¹KÄÜå&q‘‰YYbU×+ùУL‘\„J-&ÉÅó¦;(Y·kîÖÕ¦´Íш+×F9Ã~4’¢â]wjXööx )‡q»iÔÍraS:Çüd÷ê <µ"‰ééóHÒ œ–'>ŽFfÝE·ê½×‡¸ì-˜ŠÉàVÆ´ß:¿Ë}4ÉÔ=XCÂW×9ñæ–÷F‰KZÑô 5o=+ŸIÕ¬–9ÆPt¹<ØUÙ4O¯@ðQ|q/›í ÕƒÓN4ê}÷Çz?)6qfé¿Džs×Êx¥C@K™‹ŒË‚-̓ °KVº¦<Р*>ÀÒ±lîÃ¥2EñX"pÝ}­©“I7«¸Q„]Zÿ-ã±&í8±;ýþÄ'eÖ‹„1å[§³®{“nFøÜu®¹oªfïKŒ/V5*«u–î”7(1¯{8±.‡³«ÒÖT`hEޝ¬0€ ÛüSÍ”b%F<¡C½”ª*¥uVÑqÉÆ~#¡%Öã­ƒeܳŒ§Âf°-£ýj.¼ôŸ&b¸z¾ùò2ÏÎøËmÌLž‚†ÍÍÓiE¯NY‹ÒÁÓY~²XD‚é¶âÞMeàû~U—]áƒõŒGÒ{ôz*žJ<ëü1Ôs êgêZ WÊÒ’j[;/ðÞuôíIË$)KRÛï¼ØWç£ ÖÞ”‚@ö"Ðôòdç©0¬PÐò¢ßááîEŠ*=j;õOR‚Á•*= ìY½¥[rÉéH6‰c<› ZzÛhR§5 Ûº‚¸e±¥=xM9™F.9ð _ôN”ó«KúÞWÏÿôTQû]–wiϱ«¸ëÀâÜõò>G ¦ç•<í¡gêv(O@î߃\ÃSѯ]+íhvI”±ì#u/§ïíOpáE×UªwÒÂð¬¿&í°-*c¯©ìí›*7$ùfŸ•˜»Ÿi¯æ’¸‘§øê%ÀT¸gÍ\‹PJ,{…3ˆ¸,Ék–û–{zóCª6€©%· ¸µo#Ù«ÖKàÐMÉ£UÒߣ~Ý£Û}<æ¢à É<•då AÒDêð`K$…k¤œÜ evYÒYu¾©hKàñ”›x7IWjØê2D­¿¶œT’ÉÓñtM%H¢)'ã]ζMŸÐ;ëwCYÊvcÅÙœP]ÿÔ÷Ô$R—¾„­lFž¹H³dÏø¶aOjyÐe–cqŽPûfþPEãJgP2þÔÑü:UÄ=ïÒ›]£?’(HÌ#±.L;HiY«‘m-ºp³«§zRËÖ5}vâ˜ÜÕɤÔQ<{‚”.>^ka%Ñ%4>E£mçÒÙÔLmf‰³kǪ÷é2Fk¶ž.ûå¶¹Oç 2‘.¯‘åA´Uʶð»¤ï)]ë¶’(yˆ’îSFÕ¿ä´Øn Y¦‹ ñwªº®žVÙf›ÍhÊFþäx#†•lÏß5y|y„w6ÑT$ÊÔ󌪪`‹yïÉœBãY§jž+µÄå[©Änî ´—ÜãÁi NpNKŽˆZtë6ÅÕI*»–a(Ï„%Ïf÷¡”åäæ´ˆ;]4¸4he·âƒmޤ ¤µUv»±ŠG/áùÿ³÷w=š$Ù•zï¿"tA€]îfæfæ A€Û‡ŸÃ{†r¤HºHVEwåauf1+ûK þw=EuW6%@t'ˆ#‘‘oø‡ÙÞkÛ^{-¥Ž5Zt‚®hm òIŠÙÁñ%,o-tYHŽº4ºqç ç&0!oh2íª­žÞUíH<|›’£Î$6µaÏ«ë½ú>€kmHûåHM24HAÚˆT€'€½öj<±¡c/¿žö|;‹hx\ày-ºniËL¸Ç2ªF.@ ]Àö¶§&x°Ú;°ÆÙ×<ï5Ô¸ºG».KQSó`à£×Ï¡üÜ7/_ÁÓ(O˜Òe&ñðŸ(«›°;å´Q˜IÉGIÝ.?At#÷ºYNO)-7ÉIƒ2 <ÕX?މ‹Ú‘Ý=µ¯Ëúv°æóX¾/ÛËJRV—dãX^‘eHæ÷ÇÍ×ÉRzÈíÑpÈóÓבõ£r’ñÔO33ž¼˜ó€W¢ :{†ÍëK®ÑíŒ Äçgéh„õ ýœóŒŽu(›æa\¼oúÙnKÛjcÞì]^¹¾âgbs´æÆÔv1„bG=:pÛ&ÀíÎa£4);Ûw¹9Å™…èÈr¯‰ò´¹Y2à½hnr ¸cz\åd0ŦCŒúìëîÑ$Õ&«:_”D§ÓqÁžÍ“= ©ˆ„FæÕržX-ÐQß[¨MuÍÞÛgh#Š%àcÚ>$þÜçH—æRC¾<ŒgHÏr¤ÏS±bÓñTÍNËMÊí·§dÔ¢§çd|@!=æ©X~쀼|€rrÉõ"Ûµþæ­&I‘DœƒÔwvìvx¥„Ã%¯\ò8{ºk%y¢…u>[ÆZR×kÔIŽjœÉóKÛOÕeSçÔC\ßný*ÛÈ!Obˆ\‰ìÈHcq]AA|uù]÷i[;ñv‰¬AJ|tåHobÿ”)ÄX‚fM8§°}Tº¸ÍèA(à•ñIA”2”^Çj1“bŒJ0&'˜¦&ãTÿÄx®®ºÜéF´(»s·\C’®Ï¢Ú%û©dÖäÈKhñ\ :‘$†Ý[ðÀ»E>@u#8Ü’zvAØå$Põ:IŠm¸J‘Àb‹S…MÂ=k7óÝ ºÃ9çzƤƶGæ…ç}j§q,Ž¿öaO§$Þ&ÀÐn·rÙ¼ö¸›@ÎÙ8f—ðEZ9Ø‹”R“}°:ã„ cãÍèÁx]óÒ&›û©§úÓÂê¼nâý×ãœ,@Šdr~Btx(¼)ã$ýÁŸ—\H™N%Ž~Kó5†_k ÿkÆñ&^5+ðÙ=z„uv$–œœ¥¤Y¤ù´Î&þ—>Vž ’ƼX=‘ P€Kb°i¦CQïöÞÀ¡â=ý‹Ž¸%rGßrGÜ!/½éd˜jÛû–ˆ}äsS0[MøSvi±qÞý‡2ºöŒ½[”]ñ¸F×ñÓ Ðèk ÇSÒp ä*õyïÅN::HHÕir*GtLÖÓÊcAGKU‘6ì—3n‡åÉ9ú ŽS7E@ýé¼ûÍ»$ôCo`éèyõ ¢ú¶%/OtnNª7}u×lå|¶Ù@žåFµ¢ `ñgÅN)Ü»HÕ™i*|{ÆR›yy°¶÷5Ì­5Щ®âùT’ûH³B½£q›óf8kדÆ!#å‚ù<¾¢K¬>Ú*ÿ=·©Ö¥jTL Oa“Qçš±?ôË*‘˜î¹þ±LÐ2….èH·p²GÖ–òÙG"ï-o*ÇVÖ (î:/¢ÑIgD®“üÛ‡oï&".OËnEÙsl[ÑÐÑÉZEÃg7v:s~ä}.W@˜Û¹8ª ƒ6§³IlJžîyY·¼•Ù ±ž éS¤ÜÀCr˜VÍ{ëIìÚôŽVßäjª=+åAá¢qß!ÁO×$‚¾¨P Œ¤ÂÀ)y~Î5M†Q×WimÖŸx¨{ñáÚrÙ 98¨Ëû=4Vߓ²6·—´©P'ËVKAkjÉ!kÝ’­nšfºYÇn3p ÝÄ‰Ä ý¨õ–—–Ï §¨“/“ìì!åå!ÕXíKË@¡‰ûq<‹ `'„âí];ն늢ƒ®r7顈w²iII2^JŸæ‰òxøÆ{C[˜ó¦î¶cY¢¥I\ž@é²u­ »dÖâqÏ!:&i…þP ßúú¸tv0{–uÝ’ŽÌÊ5ÀÃà°“´]QÀÔ±m»G]qÔ¾ÉÈmKJ&ÊèdŸ±h)è⦊óQf¤Ôn»‚·;Ø2Óx/ôEß–{»4ÐÌg6^¬Æ î ©=]ÀX†CÕŽé(øî„sW¯½åL4·IªÙ¨«²ŠÚÇSÁ¬ï…¬æè©ÞІ){õÅŽ*p€Üµ´L+ÄçUÝ‘e/×›MÞÈ®¾,Ç´Ö2\˜öµt=±sÊÔcP%£×„¯4*áL>±ÿOÇÆïÚ!°V,åIH—>T5æ¿¶©Œn\ íÑ:F*3ù¼ò,Z ž·â1í"œ’}°Ä\Àÿô¶QåvÖž)Uêðò¢"ܬ¥®Ç\Luqæ.ÍC–·‹ºúG\qÓð/=rÑÑòdoœÇw©—{é]üTò²¹‹õÛY.QwKþÒsmñíjî<ÑØS¨árC_’,=xð8 Hf­›—Eë¥ì D- Ugðž¦Köáx™¡z˜ åHŸË‰`ì"m¦‹+[/L±ZE¬|î„v½Ž ¶ý‰FMÈr.lAª¹V‚_-¢‘Ò^›Ôºe%DÉîfLÃÆ‘ñX^s(ÝRPÔ㬋¥.Ž erc'žëЇգ„H¿6•Þ ÓÚ³"€žô¾}’cL}÷b:bɃßVçÜ®B•þéPÌ!·Èž¦ÖèQÿ©¤ÿC;Ðå.|GÅ¢îº%=v k%j-sÌ—eüÎÝ. ÉûiŠV°ÒÜ#ÚÙ~USƒzkS*ÃÞU”áb§&mFÃÛ–qæÓÝùI %e*ˆ?•¥B¢„ÿzdÁ¬ÊÁé €¡ýXË\PV_I…ç rÌg Nê´P´¬sÿóìx;Q?g"zÒá < ˜úKö…eÑSÓ鸪ݥ!×¹ð¤ÍÌ$¯ñ‰Ï6¦¦€¶~ØŸ§TÝBºWzÜC½¥ˆŒñh)q „±Áøn?N]íöÈ©ÉkO2µiv*Iá± 5W±Mä~Ǻk®”¾±Û½,F_mõÓЧHVY¬xlw8‘—Ä:–” 6RE]*u9ƒ)‡/Oì,ÙÇ$>mwÕE@y“Áì6Ê_ìd¨EÎ[(J$È×êRÒ3—ÒÉ §‹å¶ÊôØÌ%GS”z¸¦"2EX°ñfº#šÒå=ß=%÷Y¡r}”"jg8­£WÉeïvž¤ÖpæùP(RFož¡y J-cÏ»ÜJryt88PVÑãŽ@¡­ ui¶ILDqàN&ýF>É À5A4ly8¢ÝS´0÷uˆMME¬,lYé‘(u8_Íì»Àÿ6‚kÌ(aˆɵޥ–¥v¬‚arЩMŸ¢ä¦—ZÔN $eÓÀTÅPv(¥šX? ’—š“Èl£õ[=•ß4"a«§ê#1œ®‘ìù\>v»/lÕdõH_Î2qGÔ0‡ n[&<7/B¶ïÓäþyèKö*óè)ò „*CÅ(Ü󬚀ОÌv®òÞ.'^¤F:¨HÂ÷dh·†·$bgÙ5A9®ÛrD;8^è[$Ûð²€Mª“ÅâàßÞÏ ÁU`6’“{Üœs2Åâ.™}zjÌCœ{Ötˆ$ªðBœB]2yÃF9ëEêáÔиܔÛµ)hÂØ‹ªÍÁÈÇÑ—[§f __ÊUÑye‰H“:éîÚˆ\ª85Kä+Žî³>eÏÌ+×eòܲôð‰1ó¨e±¹\D§ª'ŽZÙìêgÂ:ø•0­âÊ”¹. F ã^N*fâè8Ȩî¹[]7º\õ±iBt“yWsœ]¢“: Ò™à¾8Ì·B ÏGðl,hU‹ª+]sÉŒóÈÊÒ¬IkÏò×­‰ø_ O;ºš›X6™-wN-xسw$/Ü*Ö'O Û_·Ãè}L y>€'¹”¥ê®ÝM‡GŽEµ  ß¦”`¸ìR‹¹V R¢Ò$)è@†ð0ê×{Û³ØM„‚ƒ(|m„_Ç1¹ø¨yû T ®âÕS}=D齨À›"i‡¥7)r£|5ãr*Tµ‚òð5ývtSJ{Õ €êåòPíÖƒ@_E·.½vdœ<žþÚij®,˜GéSdÛû€—žâ©nÈû}´¤NÝðìõxYêUñçô„æ”ÿzQîßõ]@¨=Äå¶á Œ'éíx/ãTööÐü†§¾ÈP@Éâü‚- Ï–d€åO´€#~T \…L(+f5Ù* ü¯: Ù–îÆRÙ†ê@§;½A÷à®ä÷¬cÂ9Æ^X¥°²–yÈÛcÃ:¯ª½E`*ËÚ]Sõ•¿ŽfIÌýfÝg­œ=J%ÄÞ»Z%·ó ę첞L»Šbž*²ƒºº7[ÄNÑ‚–iFê&ÑUO¬Áö´nfkkHÈÎ×!Ô.ÚÇ©îTä¥k{¢i˜%°Û¨“‡À |¶BmîЃŠ@ÚÓÕôuæ½Öä‘ß#g{\Žbd)Î~Do7/:×Í´49¨ŸÀ¡†9Ø-6‰oÖÇ¥9H§èöA R€.) hyGA3-ûØ»ëHã r;”P3bh‘­wÑáü/×Ï_GZž¢H/Ò5¨kâG—Z·ïê¿èŒi×ù *5vô*8Ëá½Üâ.y¦MçOÙ—J4m—G½$õQe¦™Aç¸rd!R¿e»Î¹:tT2Ç7½"þrOa;A;ø @—(Ø Â Å=:évâš”ÓÝyš÷Ø àïMÙç¹íAIŸ›à¦¦Qý(’™¯Ìïx³©|,« Y‚5ÿ&o—IJxò¾ÐÆÑ³êÐ˦IÊDI2ír® •¤D~„ÍÀbç¹'ì’6:É|OÂç=ScƒS‡š£7å¤Ê þ#¢ð?>>‰Jqsêë÷lIfRÓ3®¶#•i“XeßÜ Â.šHoJp·S’»õ§º9›»²ÓIèN]âì$úÔ÷Ô ÍF“À‡‚®à%G§)Økë÷íZõ ¡Ý-&í©¹7òüŸïíôÞƘøê4ÊSóˆCSÒ‘ZSÄa7wä!#ÒŽRZ²fjõI»#Dò¨?[ï¶áqâ.w^¹ÃäHÚè[L¥•Y&žÜ‹> ]”èYA+šFªwe'+¥ÙÇvÚå'WŸvª5?¦Bâ¾´Ì»]=Ë‹ òK»¹™Õ§JŽžL ¯âLf”pBܤŒ»N–^òV]3ÑÇÆÆäoñ T\¡†õè…tï,• ¹]5ÊË)ºØjëγòIjx9#O8|6âÆÎ3«éaÁž’(ˆ¬Ð¦º»3­ˆ`ÝÇÐ2ðÒ¿Üryóôn‚uIòñœÏ²p4³)fL÷šà§³€>¤³MO9¦Ó ç’Âò!îEÁC¶Cw>Ý_Oš evœ©òH§çªÄ©L‚ó.U,â­†¬*ir§|+ri”[ÒÈ«Rén>²nÒÊ<&¯Ÿ¥òBº ›ºÇyÑ®"´*Áޤ&TW|{S ³Ùù ôšª/HÎMû–ÙDv 4ë¾ýk*A¹¸†è‡\륮h‡ÚÆCu@/8ªlEN!±ìw‹ârðì*ðÜÉf’}+a‹ws’´–CÒ;ÕeëÇ–¼¨;w Z LÙÍ’Ã$™Uæz‹ ëAy{tñ¨‘@\iÇà®MeåÂ"—‘ÓËÙ;É^¡õv5–XÅÎHraq×;{²Å ¢[ËCí\é†çÉI.Ü´×ÿè™é ä<åï L¹<ì…Þ<@¥öq–G!cÅøl»¬ãEý8‹:Q&îÇ¡¤ ¼«.„ò`žÂ;ph|—ú\-Žz–С~j—ŸË¦®˜Îî< bµ3ä¤yç¦ufñÕí Zt‚í²_­s§l-•wœ`ØMªÉ$(j$%vþ×n‰‡snWq¾,C µ;†Hü €³¦š"W –?Í3h`»Îb—M ª.VI—uØ5mÌx€N%Àgåq«˜po¶Á.Åjá €›f*­Jçæ˜ú©´Gh ãIj.{Oér„pH˜g/êͨò´Mø7½9]iyß[S„o6N·-ÁÄÙ:ðK!Jü¨ÚTßÁC–ÅùíÊAHãQ6^«L«w5vjfªs n’mev{(8PÔ>%ã„­i¿Fb%î@ùÇ[TiºKçSyWn¶ñp;¯šªkõs”2pÈA3d€Œ–si§x‹KÍBðæ4#E Ëž»R9D=¢óÔÄk¶(¬ê'Ë’‡M‹·–ÈB‘¬I,÷ð]v»võ©=7…%£J‡ƒSî´y“T‘4»öêAõ›¶¤(U’Z­|›ÓѦò®B”Ô3X­Ž¥=„–2AWÜÕƒ¼ªú„CO‰›eÜ­Ìñ Êðõ-QÞ8뀘•xd’EšÊ¡‘E4°Ãzå­R=‘|I67zV¡æh<ƒýÌŠ(*}HžI õLJ•qz-I"SS·—%¼+ïöèúKª¡:¬Ú² ™è Üec:VÐÐtFköS÷ÚÁßÕ`5žTó"¡ŽÛCY².;MŒ/«œKªÌÊëž`£ƒP–615Y]Á©  ‘¡œþÜ,”©pŠÍR'1¢cQ9àd7).‰vIÆ£kÅqÕà¬ákÛm!ímxë—rEÇrE2¥¡zÊž4ö`¶‘B‹^…ê+ߨ¢Â6%Ùc/Qß;íîÑ—uMÊé Li¨KÛéA%%sÓ[5w›‚ÍAQ +ðx‘TQsˆ_‡ƒ÷v©Çò–âˆ*zm×Õ9äÏ©õ»ýè”þ®Rºx2ã0%åc¡‹þLál±ÀŽÜ,Mœ”§@å–@8àpª’­úPH •°MîSÿÁ‘ìÝ-=œ ,ß›Õã±TV~ù¤(òœŒ@©LYµŒ{:Òt8¡”ܧüˆ:årãÙÁ(°;+ÚXž¥XzH@9YÅ ;ªºB2ÓsÜŽ{ßÔûß6~«à’øá!79h_,a°ÞâsI¥6SpÌä<0…g÷ G~íq]¼ó¥ïeýB'E£5Ur‚}CVé}îÊ7 JÉ"ÄåõcTs‰Ä[€öTÝŠýDK¼-¸:õa»Ýó[š†#ZHÄÀ¨U°«’rP­C¥ñ ÔÎÉï2œKQw8ªðrH S*üËúá#Ø{åN—5ÃPÞP#•óä®yÈ<Ù^ž¶4ˆZ·CÉ*VYŠa¦¨Q†ús‘°qP\«"v"–„ؤƒbtrÐ’bWJumÔÐM%*rM“I‡:M” í|(¿T#MdúÊò&Ÿu=¥FÔ†µ¥g;ïOÞÔó¨;B(V–ÌÑÕ¥q+ñôŠ«T ^³M JrÊ+æznºyjA$;+5¸´¥ÿYŽÊßö?‡í\Ç‹#0‘2Y3[^æ¾´Æe: ¶¨d•ÍKìɼV°EÄ«µ{%g}ÙžvÇʵfæ®K[8¶¡LIYJâú¢*ÓÈS—¼˜­Jƒž)-›ìxˆÜνF¡¹%©U¿éô à¡*™)=í!ÝIcóîd§Ã½au³y9Vz`³ ä/V¿†»N¸’x¹°s³³«DmBNJÞT°ɛߥðXY«ßR˜ªçË@Öl¡€ºÙU î¨.<=s¡RÈyŽ t"op¢Jùy0A»…•¥C-Nk²§o`NÅ®™²Šºí8…lÉ`ÎúVa‰±ð´äq;Sç)>ð è*}˜A’W»mW;æôŒ‰ôA Ë[àfg»ä¦;!˜¢Ðƒlvë ¤o|ºäÝ -lhãEWwy_"¬÷¦¸ý¥‹Oy³­S†_ëáÿˉ½ÜQdA Zê*§§¶e•?ÕóUσzªEý:‘ÆAMÇ÷Ç1’x.õª*Ú‡hðÑ_–•(g—¸G*¢ÔÞ”ÉÆž¶õ¼Rõ¸€†¤ã´Šm÷üŒz¹n' ôžI”#K¹“WªóBÕÊâ&.íü?°m¯°l›9¨ÞzÚ*1çféLJµ}zK€MÅfœø–L¾´N“z­kBë&ç'Ùwû­¼‘Úv¸.O’BAríê›-Õ~ðÌ]íL“£È1Rq‘t·ÙS’R­`PS˜E³–8.­&€3«xrîu3#°AÞi¼ã}Ëß–7áEöw Ú.õßP…ð/GÇ.ó\Z‰'*v¯þÁ£v«¤ Ð:ª²Y ê,G¸aŠJvƒ-HJ]jj7ðvÈ•d'¥¶JÚ·Ëf‚vV¦JjÞíšÇ¹ÑòË#$ìÌóêõ¨]O¢h|ÓùèTÜTwÙ—LÓu.IêtR‚ú™lâR%–ŒÏ,Yì5”1ç–Õ=¼×@•°--ùP²[Òš{P;…”å À«£f®SͰëî›.CÊ2Ú RÉ„Jk§|{ªÓTê—9;Ð2<È-G“ÄœÝÊbžM*ÜãFS뵊ŒÏÎVÄcó°Œëä -Ä5àd «³{ Aù»@”°IæU 5ç®ØïÛæPPL“ŠKs ¥BÂGð¨×:Qœ•©‡ýV2 ‰0Ü39äp0nÍ`ë_/G{¤uüh_€ÄVúÁZ|nPÅ›ý$ZPËÌKŠ!ïìÆâøá{ðámí4.mæ[¨ikz.[Š=ˆ+‰jUž޳›ÍÕ ºèþðâþÖI¶Î5¦1œûTNÔõÊ ¶Ã[Ù”Ÿ®<ت6C8¯dp3”Â6+ç°;ñ`'-±¬Î~Ö`ËðQfUÓ;^lwý€5”nûP[;xÀ¦öåa›ó[*'R/D¥¬SÛa|áÞXê]ÉwXÌûïÐa]Ç@ì­š…9ØimQ–š)õC¿;ß~d5’Í`c^t\®AšXØãŒ£U燺¢€‘U7äêïØ&§ìMüƒ*։͠4Y䯨͹*Çûê<3ãÓ—G?lZc+Û²|Tá¶™nþ;F’žE–¸r„:™®ŽÚ•d­¾)bgO˜Z8¼i=!› ƒ_}…ų"»ú4£.¥b Ý;ÍP¶k1$š6H`§ç’û „xTnÀGDz/JÏ´tkî“꓈ÁÍ@®,Ÿ‹S¼¼:)çÔ:£+YVØJ¬–ë¸-1ªÇ~ö1jEï¶)€Y'˜È˜s™$Wùòèñ(ú°»vÏ=×Īè´ÕVú‚°t¢Ó² C«ü¦¤ó¾GûÄÉ^˜0¾z*¦&i#K,mOgû¨(I  ç’~*ËQQÒB§ä¡Ébàîe"Ù #Â(‚Æm¼)ÕS‘…ó8uW³Òa#k ”lƒ8,ŸÕWHÖ‡d=ÏßÛªJžú;JþÐÎ`÷©(¬“v'çNÛ®6A¹&Å”‚ãÏ$žVæ‘J?]ÿ@«û´$qŒÆÎ§ ¢ÈheïÕ;=ëÎâÞàØ²Ì|VÍ’}*ŽA§2·,_wµ¤ZÖ’È)¯›üT BÎNäAMÐ%÷SÓD)iAµãÄú"ò OG—/¢‹Œë¬óhûÊ#u“zÞD¦Úa÷qÝùŒªªµ=Jk8¦Ê—zeSs=¥\ž4/›=LUð¤HW<ü±…•<'`ÚYÒm¥µ`ŸIÙ(ñä y÷‡³;ÖçN€ç˜boóž°,•Ù…ãY\¹jq†à-‘‡DÊèXsäF»jc…µä0ó²U|”«pî„êæ–ùH¨0(lsõka’í ‹õÕYTʸŒœãÙeÕz»ÞY|tTPeÅÖ-©—)ƒà‘xð„< Âm*7mo-ªŒ‚3MQX‡zÅ#^gžÛVE£dVˆªUûYÅÚÖšAýog4ÍkN0iÂv«çdDÙx}\ÏêE59TÚ+P&z ½å¾A³%Å\u¡°`à|¶¼„*A)<ž3‘?ùsKtîrŽ{ ·Mm<Ìɺš£Ý螨¦VÓÖ›ljဠ£ÛišÊRQq¬£'Š® ´Oêê@£CÿŨöKâRÞaó‚+s¶$SÄÇÒØúÜìêè+tåEWØsû0àLý7.ç¹5¶Ôm!Š^¨Nözºvðå²Ä‡˜¬Îþ×<#I‚g¼O"iéXîÏQuG›Rzg<…¬5ÖäXæé+ì’ìGò¬«7À(åP'x(¹Iy¡±C׆—t^;Á¦¼:þøÃPù¥T‚ '–ǦFBgßRy+ ÄL5¥÷`#‡µ/•ót0Qeéìv:U㉇+Û¡=Jqô D«ÃÁ£H±]áÉâ kNx.·Å@”-ZwòÅð‘ÞÎÛS;WoXÕ"…Öiü¤Ö-”óu5¯ß@~é…æ¬IYó¤–›@>€ºÉSÞ$r½íNmÚ"¿ÂŠV ¿?WÖ/P“ƒ ùÖžÃYvG7]ͺh²O ’¾¬G L”ÞU}D’ýÇ‹öDx+“DÂ'ÀmIÍ<^“2Êmž{ÈܽžÀï&ö$vªâRéWC»B°áOÞƒDüiÿ_{‹ÿÜåÑ<Š’c¥“ ZXvõ µ& èºçíà‚uf¸dÀéW屟³-$›]¡É%®}çcnT/äzžöÞ5I™ÅOd¾»žK*ˆE QÎç_6¯‚söÊ ‡ P\§ÁtS T£gmÒ¢4÷]]jJ8õ–­Äî–¾šNº±(äú oËøXÀ‚ò:83­NÀÎ2“¹5U¾K¥09‰-¤VŒ}‡¸+µ¸Ù7Ó^ÏŒw©7zÕ¬ƒ®óÏž LC…G–(M%â@])œÍ*(-«;h øÄ_æM¦KÿÖ>IUU°lRIÀð<¹æs2d®mf'êØ—º°¢+Ô{ýjl°æbnNQ nmyyjU—  Cµ2ÿÒ‹îÏítÝTœ#8@³S’€/'ñªj[UZÖî9Ý–»êm„•·Ív¬”hËdC³8Y;»j·:–”( ¤@IV¨è0n;»œb%Gÿ.õˆŽzÉÄ.Ó-8±wHŽiÊ󰤢²»öÀÔ³M¶'7”8je5e®,TQa @¼‹ÏÒt<5oóØêïRÖ›ä Žu£ã·‡ådRVJwbõ uTI5tÂ?XÄS§_À„olUp:  °¥ø`­€4 Ô»ŸÜB‘|+Á“¬ªÕñÏ ‰e¹éDû!|Ü}n*z¸4˜ÝÈ7rÓÖÉ®õL£,ÐçPB(E·Z[¬·.€fÐ:ðœ'OÀR$Õ;Öc€r“ÏAÂãKeS‚FPÀ…ª²¨ãD8õ‰Ôm²ýXôÒˆN×qVŒ{;ß¡.०àô-•'ÊòÜ·ã•BŠU¢èè‹ )­#k§H7JPÈzQF$ŸNv°5k/É z2¡ t%ta©ðÎs¾íx*óiƒ’L £ªËRnTÐÔŠ…”Rê¶‘ƒ‡<²íeTs«] {ꄲ¤ùr½€Kbv2O|WÉR;)>{­°iµ>ƒi!“e?êG®Š25«Ó‡5•܉§¸=(eî\a±OÿD™f¨I‹«vë¾$¨¨Ý‘OÐ]@kSy[Ôi—ãØí©ºÛ¦*[öEiåöæd%NJK À¹J•–l´Þ”5åYvÀ;sììJ‘=n*^¢z ‹W]ø ¦8=K þoåthDe•Ó ½¶xO¶½¨AŽhãšEt 4ºfIR%©„’ÃI×Íß->œº€,¡{¤‰£„¥ƒ¾ TÅÜ+/3ó/Dœ{-®Ö•ÈÏ6K¶!-Ÿk2ÜVo,饟k«ªhKCf:½ŠÍúhîÞ&—gËcˆÉÉúL ²…¬¦$©¥n7;Tc`Ö3¸yK—i½:K­z&©M'Ÿ5ðy\Êå«Ú36j9倨7ÆEœÅºUuùŸÃùÄýp,ïÑç"³Igr8…*P¿=5;×-ÿU*@‚w—–…™²«b4Q×ÐãŠ)j.Üe¢vNÛí9”Êìä/É»Q*µK!|šç¦d Ê š:ÙK»?®&6S[öóÃm\:Ëyꢳa¬—ÒiA¢g­Ö°ÜMAZ¡9 JZ0•†s3p¤Ìòš°Ò$9ÝžN±ËR¢ªß^Éz’/)"çKîþR'!Èݳñø¨7 Çd-߯½¦c«lÍã²zÒBøg–r_àZ׸¡¨°®olJ@uç-(¢w&¨õídôå…N.œ“6àƒg¡p®  X®)9ÐÝÜm¨k$ù¬![n>$ÕÂÉäû£¹GÙ”õ‹5¨7Ø Œl:ÐnðŠÔ©ØOƒlVø%¯ùÅIàÑ:Ãý&âøŸ§5ðý8ª¾¤Uça›‚BÕ­¨´Ú^íù¹µÇ OÛÀ‡N&S¸t“TO¼¼ÙŸ«u£>Ùlg $’+øOÁ[#ž^¡”§}utj{´«¹ ®*;'ÿ$NkRQ2ϤÄÝidV|™›a*²ŒæþPæ*téd†8ûÍ"¯ç(J”Zuéö$:)·{mæÛ`rgµ¤òÈÓ^‹ÕwU×wŠ T4˜™v3rG?î-Pü<öͬî)—•ä¾Ìµƒ_âY;IùÚxÏ,…”B²‡k-w§ûŸ²¬ÒþÁC:Œ 9oÂ=9Ž¥ÀØÒmZ Ö‹³œqŽ«ò´I£S ã Ëè\«ÌU{Ž*F :ЇóSÀK ¯±7Yg B–³1>:¼¿ïÎ$Q ³,ž¸ vÖ0e•UòtìWŸ]4-{{²ˆä³ëÚõ>öÕ£ÇÂc3TÝì„X™%%‹QR›º<×°tɥDZ,²LNuQaµËÕ#K“cK¼­Ý’Àfr$ÏF˜"ÒÒí£ŒxOhHEk¹óDz^º]äÑi$~i„ΪÛœèuÈ1Þ ·egÇDJYÏ*N*‹!â?‹ksPPíÏ&‹n‡«K*õw§’à=Îd¼%ÿ]‡çÔø” "±@5+÷:îÍýíº¤kÈåLNÎÔ¤ìÓòTžSrÖ¡Éy&=öÌyéh¢ª K9¥£ pc·ïgûØÛ÷ÐÈ*$Úgv,õo—'Æ@‹±uià´é$k¦Ø˜‰I5'z€V;}÷xMç¢1<ê9ÛÒvP)òŠÒëÜ•Pd’o¨Wy'@àñ¥%“ Õ#‘–º‹<Žíƒ!!ŒPκÐ^#tÞ„šÊ4…ÊN °4ó-%ƒDôH¥¯WÖjƒÌtÁ ÒŽ‚§«{>CØ ¾Ø°“ zH „Üì¡‚ÛªV% m0ú¦Í|wèQuQ!Ìó‡— ' 5Ôïq vé¼8Z¶œ:n¾òy^K\ŒˆEÎS€« %:9×ÚìE;ÆÚSžXð¶•)Î÷lÒ/óM‚›B%iË5ØqþTiÒÀ¨Í2îÐ`æÊ¬˜ªt1i*èàY$5Ãb'9¨" àŽ4äå¦P‘Ä¥­¨•’afÁwÏ2$äfÍ—®¢Ð{»«é”ÄØE[rÃì3wJ§ÐI.")k‡F‘‘ÄeÚÿ¢þ&)¹¯¡ìPâë¦å81¤$'ÈÈ.UÂ6ñÉõž¸:,)ê›wD§ 6lÍ#5O¼lX‚9–ö¡ñâ^T0DÙªÄCÞ°îõlX‡ùŠ;Û °]5!:xïñ,!'šw…Ÿñ<<uˆëE÷G¬~l¶Z™›Ó î\ÞdóY¢À!Þ;)Pþ921F˜Ay»ƒr 7©lDEÚ]ƒ]ÁÆ"¸Ö™M‚)ÙÇ@ñ œC ŒÞÙ—Í+ë±AÊ<‡#{sŠDµ;íyzéwÞì²¤VCY®Ôé"1ÿïÍÑ­è<¢þžM¥}*k c#³£D!óS”€HDö’ŠKµºôÜdƒ’V»]).vãñ&)*QkúTõæ>K!È·¥A•,.%˜oºq¡+ëy+)•@”­¦ý[í„zëŒ@]I doØÜÚÐt¦y(euy¤—ŠØC'§nÐKùwjÅÝÂÍ(·»Î7V.5ꨩSÎoÍqÖ]',JO êYf?WÐ_Íe Ž5ñÌ´¥NÀ û©å²ÆÃ²Ó1œ†"×Ä2z(@Kñد'l8à¢SÅ€¦D¹Âæ·V‰x‘,‰h¬|_ëӇѢìòå ̨ O(cq°e죃ݲò)ŒT|ñ,.>šØªŒ®Éˆ¨¥{ÍŽñVY¹ ¦ k_2âd¬ÅêÇÁžv\X 0žöU.=sÑ›`àŽÃ,˜}›–VZS”ÕÕªë°4„EJf­‚k!Ô±¢g‘d&[H+Â}ÙîéïLŠ-/užÉ®€ EŸNŠUºÛ3<º7OO¹UT{Ž-£I¶&Êxª/KV&—¢ ð¥v„‹÷ò0at¥].%J¶¿@Ø ªrÈš[zá%ª ”ͤ.œ1ÙXšveÉëdÒWʾ«Ϩ35ÍêT£T<"z^¡§96¹å¥(Å#u›•ž;·WlÂ;ÚHGŽL"ƒ ISô(˜bC›õ¢RSµÑ>Ul¢ˆ­›–éM¿É b¢•JÓ€M`‹t·¸/9–uÚÇÊæÒªÏæi€î}[÷¤à`…ê‰NK²‹©4÷sY£’Ë”:†P'†¥œ@ŠZˆ‰zt¾ùÕ»ë/|yчZï’//êï¡I÷XwÎu5ÂxÔ5È?í%xz©nVC^ùÑSR¦Â÷Äò˜GieðA~ë+MÏ{ö‹ ©ëÔŽ¡6g3QéÄÊf›Ïi‡Ð¿£X Ép( ‹?KXùüäéT Gq1©ê6zÁ°:]N ¼ T•dGªø-q×´Üj<»ìŒèJD,•€c„ga€§¯ÆRæìñy.ñVžV‘”Ò,Òâs}õ¬š:¶ƒF pdWOZ'éÝâaˆ+‹ ‹:Ùv}˜NåôAö^KÞ¨$ò²¢Î°ÙI¤ä8Ï,x(Í1¯¡xo]¥ýÕÀk’ô çò=½„‡+>ùÓ‘ öîTm§–5ïI âÌï]Îozt“DyBt5£6‚§Ã&i‚K…ËzgH»¸%¸i­y¬hAEr)™¤Íhup›}óœ›G·¶ÁIgM½ó}Iè8FáýJ™T2þ¡P€9Ôr°dšS ã[¥z3D»—îB³ïî(`¼|ÕÍ¢ßt‰¾Jûª¤~ppîPÁ1¤ëÖóµñQWòLœ :• ¶¥±Í°£[÷ûWaî”fª²ˆ¦‘ Yì~µÙÉÚrGím½¨GÑéxñʉî‰ü|JúfÝ{¶65T@¨q'¼‰¿3uæÌQ„3ûà@ Ûƒ-ºä6¹‚&{HyFE€«ÛEÙVÞ zT{µÚXQ£&u¥ Ä@AØë}ôÍ9ÇàûyŠ(À"Êü¬ÇY´}”&Û­ìƒÒðÚ/?ÝL¶Ãy$b"»’§•ά);îD´c(´FaÀ«S¯j~_¡K.Gc p­º§Æ»c Ä `Æ\½Ì~çnÒû ºö,¡Wµ.zWá 4«HoT´O‡=½%îvë]p(¢TeL’U0ϱXä¹$ÃnÛìùØöÿ›ÿóÿ~Àÿ3>àëï^ß}úüñ×ï>ýËöÇO¯?|þøéõßÞÿrû«¿š¾y>~øü¶×_½ÿà?é¿hÿ¿cßþê¿ù‡üÛû›ÿüê·ÿöøÙþ§zÙ÷ø³}üÚ?½ÿüÝëO¿ò?¼~úáýÇ?ÿâ'ú§×wŸùÞx÷™üÅÇ/ÿñ7ß½ñåÈ??ÊÏ÷ýx}ýé?~úùËx÷Û÷ß¼üâg/ÿñã‡×¶¿ê¿ÿç÷¿úÖKûÓ¾üõ×ÿáE›Ð¿Y¿þrÿúõÓû¯ß}xùÅ»Ïß¾þš¿øõ»ï^þñã×ï_?ÿá/>â¯ÿÛo?þþç_}õ»ßýîgï~ýÃÏ>~úÕ÷þæåwï?ûò_^xýôÛ×o^ÖcùOï~ýúã­ýlû«—úöýoÿðùùwï>½¾ðïÞýúá~å7¾yýôÂ_ùÇ¿ûû—ÿüý뇷þû·ø›—ÎËñ³ãÏ÷ãoûAï?¬_~÷õ×ýý»xÿáW/¿|ÿÝëË~þþgŸÿùo^Þ}øÆ|÷Ýùýw¿}÷þ»wÿ̬K÷òÜÿýË;îðÇûûáëOï¿ÿüÃÏ~xÿ÷ø•óöÎûÇ_ÿúõÃç6¯o¼ÿôú5Ïý_ýørÿåÃÇß}øãŸ¾úåûßüÒÛøæ7ßõ_?¼ÿ×ß¼þÝøñgøÖöÓ÷~õúùåÜÍ’õåõ__^ÿõ·_ùþéß¿®<ü6÷ðoüþã÷/¿ä6\†¯üŸí?¼ûíëËçO¿yý·?~ùùÕv/ß¼ÿúóË?»X·Ÿ>o¿þòíkÞÿ§÷¿ùŸv–ßñ²ûÿþü_ÿ +웾ûÃO?¾^ñŸîõÏßmíãï_þø·g~ùÛpî/äáôRøûËø‡wï¼€/~÷ï>üòãËõv< ?]ëo|ùýãÎø/ùYÿé#Köõå¯Záÿó~î_ó¿ŽÿËë|ýÊÿÑòöSþOWø¿¿¢ç7ß}·þý¯ß~à÷ïï~ýþ»?üø,Ùß|fùÿâ#›àÿÿÑÿñõm϶ß}óïÿíï>¿cÜ~õÝŸãûž÷¿ýæÞþúÛ·uòöýÿêûîý‡×øøÃ{cÊËßûþïþmõõ¿7~`1®ze×ü埜¾þøÛ+ð†ß}úôî/™¯Î—?ìÃo^¿–ïËW?ûðñ3¿òÂÍýÛË/?~Ú|£¬Â¯~¹¾÷öeàË÷?}ùò»?ËËWß¿~b—þó÷ÒùòÕ·øþ["ÄŸ¿•×½ÿøÍOßâ7øîÝßþôúòÕÿúúéãO߸^¾"Fþùkîø«Ï¿ûéßY;_}þöÓë?áÅ~üͧŸ¾áå¾ÿí?‘ø³ì ?ÍÅþðúÛ/®•‡öÕÛ ýów¸Ô￸Ì/Ý?}Å/´Ÿ¾â‡ûO_qO㧯¸¡ùç¯ ·óüô7óÿùé+näÿûÓWÜÅßýôïïúŠ¿÷‹Ÿ¾âïý§Ÿ¾âïýç?Uù{ÿðÓWü…ÿòÓWü…üé+Ò?ýôwû_ÿüÕÅß{÷ÓWü½þé+þÞ×?-ïWß|ñ%wøúÅ—¾«/¾ä ~õÅ—\·_|É5|±wÁÿÿ‹/¹¦ùâK.ê»/¾äª~ýÓ—D¯>|ñ%Wõñ‹/¹ªï¿ø’«ú×/¾äª>}ñ¥‹ç‹/¹ªÏ_|ÉUýæ‹/¹ªß~ñ%Wõ»/vWõû/¾äªþðÅ—\Õÿº¾ü‹­þõo>}bç­`LøÓ×+­¾¾þþõk‡È³³¹àì¤PM­?µíéP)* g)t çt²¶zX¾züÁ†®ÓÇs§NÊ6;äü”@%¨ƒŸú(ûà·ÓIi|.Ix©›ÍÈewC¡Or MQ-*݃ʛ²ŸºÌÙÞýȸթðÔ¿Ÿ‡"ºšaxÚ˜‹N«ŠÔž2fÛ=÷lORRu/êìVÝçïpħ–ÒS*v)qoJVj}óÏc›ù~T§s>Ñ;½fü[z >îXÆç!32—F«/áá>¶ýIÁÎ/éánXºRí·þˆËd”zMGœ(¹^Au0¨4c(a»#U­áçtØÓý²4õžt†XTÃ)¶°ö§õ¨¿·–¼QŠ*+¢ró›Ï”ûé|ú™JÈ?œ£lõ^ÝjJ÷¡2‘ôÀÍV¬,2ÍF©îj¦ÈKžÈSz2¿J¹Q¿ÝBú|Ò5ïšë3§ m^F…X¢–» ñÎrUšHòBÿziA‚ªVª MVÝ4ŒfEÜWmjXØ^g/A…SÊ<Þª^ŸNz沫.‘>˜Ô›x{.ù:úx¢+®êd^3¦ªÚP'àh‰¹ïÖ ñùm`:~?›¾ jñ³¿êé¥8š²úLÕäÏ>ºÜöÈlTÇYÃ8‚p{ñö*Ã>Fz «¯d.\çö—œ¨vðäË©SclÒó8Õ›¶ÏíÔ뺹Èz÷4Ôi'hpc•¯´¯I©Ùq æA TôÍÏšðÙëV’Mìp²Ü/=/UÇ-ãZíÉû\„á¼Ô_ާ8s«æL®¾iÛϱ͡@¹6Þö…¨ü“6[ yk·^À-Ë1%Ž¢ƒU›±j¬!µ%l¡ß˱Gi¬›?q<§þuò+¯ÒWûbªïa ¦Ùôé,#5ì–Ñ[½¶ú°ø<à%& :ö¥x™žÏHp¹€3O4åtJ|­n¨ýÙoG’ïxإѡíY×XÔ|¼T,9f»HÖ—ZV¾Mu“ãæ Œ”@ÕØÏe8Fvó°V¹­ë-Ò(™u{ ½MÔìÌZc L7õô•ìSP"Ä޳ÌK´3åˆä£¿Ñ°ý™IzZ™X/G©ŠÚa¤—7BÝxQÍia#o>IÝÓp=‚‹/0<°ŒgÞN—ÃuúïÕñp~‰PÂ6ºë¥Ê)!oWäžÍ& õÜÉ8ƒ@œŠž¹[ %œ%?7“œ‚*¾Î…ªÎ´«˜~iûs8óœèš×•^Êg”ÉK‰æŒÓá–x.w¡’4oYšEi[6ê’*Þƒ]£„c>C¢¹SšK³Ú"{ÜI<…r”ï;ùÛq54HŠÒ9Ú¡‰ž»¼(D6ムģ Öyk@Hr%Šå®l›%¡Ú® ÈébƒÙ SU਻~è™·Nl@¤ Iå½ÄÍÑ=Õ?ÖHîÃþÈúhKðýh’>“¼m•WZèÛ‰1““·«ƒ ˆfÜÎyh h¤veN€ŠÝC:Ï”¸³Õu²yXŒAûv€"øE©¨cMh )³°.Ç͇áÖvòÓ¡¤v]¬B9êü‘#m¬Ü¸lІ\`|Ó;Éñ= U¹m>çá0í}.söÎæj²¶±q–XCsÞ:´[ ‘‘«Š£Š|ñweÔÜ®Bñý´¥¨÷ÎKv„q#!œ¤òv^T²³hU¢ ¸Ê¬‹ ÕuãH—NYv$I–«‘!fkS’œž Nå©0NÖp`¾*Æh²Ù³~Ó|°Ó–ÙTÉÇCYL¥}y¾$Š“|«¥'9æ~'ÛÑõíT+¯XCge¾È´Çj!=ëF¼ždæ4“ôÜ‘t‘5 ßM?©«®AlºU®Kõ®ç¤.Öæ4‘ÌìŃ>ˆL¤PI•4µZÃÄ^Y«I­mlÒÔ¸M^®kßL7Èž}Ÿdw ÈwÖàÐògrirD5 Ÿ²ª“×m܈Ò#¨ ¾% W …ó­xZ»î5µ5ºâsÃH©abÓz”wºeÅoâ5rB‘öYŒK¤0k¶Qå÷«5Ø×sÕýfsà+²K—«F v«ŸGÍéÁrV×dübÁ9%Rˆe‰1M9Ú—ª¥DT ‹lš+û¡¼Fù&í’½Ê #+³mLˆG¢ò 6ÄŸÞæ¦ö]RæS^¼@ðGÙ˜ì’nðºöç: O²’pM¡Bf Ì5 ´— ?5k$­æ±ˆœ¾ 'dÈ?¬êæ¼ Ïv*¯x¹NÜ)‰sö­ôÁ À†ÕÁõtª4­’û®#§„*d?¨Èö³=–&Ü[W.#¬Î’²ÓŠšÔù!ñ’þ³Â5Ç20%AûMkŽ÷²œ‚F{}Jrh[I¼YÝ~^,oíY|ÞKr÷=ݱû³êäÎŽmZO8¥ûZŒŠý8C±«aÊqxæ…Ÿ”JLbÚ‡Ë=y*…OݘÀ·:wÒC¤JÉwæ+®F®ºþüzSÍŸ:k?%Í=`‚ìdáÖÀòú§}Kòšò8SiX‚?ˆY:¯.U¬‚“D[î°8>µI‚¿}õ)-þVpº6:TóœKw¨–º®Ô  ù“ˆkÛnmBí9ëIb=T¥.ŠÔÎòhCY»³^‘mÊžpj)뻬ld¿¹É'SƒòˆUçš`qG²"âÒz)Û[v(Æ%*”ˆêØjÜò6»®}Çâ„¨Û BºÑ‹’w(ÚÇoêݧ§ée¿ùPesîkpƒ9·2í?GË©xÎ ]L²"" ^÷¡¨%‘´ì¦»®^¤Üœ°9ÝZlᮀ  ß|‚Cö X†VS—æBz O-W–lAù¶¥ƒ÷"iãq)NI™5ì2È”rf•VÑ‘µÝðŸÎãVLµûÞœŽœ$–¨ ê®VM&mOYo¢¤0”ò»ú} ©á:” úë¨JƼAUè5•w(3­Ñ=Ù0S‰æ5$jv&Ÿ}æ8%Ù²v1?Y”*¬ÜãXük-TÁáêUë Ð¶"’­Z‘ad§ž}å\´(ípž!ª2Èé S6ŠR5õ1²Á%m½Y×5†}È,¼¦r’Âáç¥ßsx,¤Àq@“ûn,®ÎüØÏ$ÊŸ²¤B;Ë]!’ .‡Ùc#dD`gKh¹£§éƒÕlKGðŸªSk”Ø.QÔèr9aSv°Škå͵ç&óîμUO*^ÒÞ6~’[8Ø_¬á‡¬ÊØzRóh ˜MAº¾I£kÔ|FѤÅEõ–61–œ1RÙ2ÖQZб¶˜*ü¥’ë. ëàH¸œZV´ªá å~¦öðª:›mØú ¼oéD"¸$±“kYÂ)ÎÜ™~ƒšõ+g•=)L³2¯ZI6U‹* ñÖn/\kô]íÕppž9YöÜ#*Z™è¿'Å¥™– íò´¡OòJV|zêëqK"æö@nlÐp4UÌxª;E—cÛ€‚<ÍÎJVB$ÍÓЀ€÷á,¥a¤+8v‹êSNãOPƒÀ¤sîWsÓ¤†¥žª¦E!˜¦óZC~¬M”Ö *t÷Ô.#¨äj€§‚»ËéR§yêPÏØÚ®ú·_u§I*lÝscèÀy ;BOf™¨¹áÙþÁ÷*áGÐG¤ÈTžF}ªžª×Nve9l¼r³ö>dvrbR”Ù f-‘p´²eÓòâ­%ú>ĽRSÂl³ÞZ*£‡sTÇ2dŽj“^øvwúˆ+'qê…Å f³öèwº K¶\ó›_¬èæÀÚ•å•FRÔÀ#Ê– S› J3?1àb(w7tk 5ÏÞ·F˜KªÓ3S¸ì%JïŽ'ÈÓ=›nQÛÁîdSZ²{‹Žåµ¬Ð´“Z‘)Z£nqå>(uÿ«2°¹Ôi>§ÄyƬ^î#ïš é µH©Gá®M !(k/w5ûúæÿ½Uÿçw²ÊtM]-m”¶`ÉSìh»ô½£ê/ÎZ&t©›¹™ØMÀ]TË«Ÿ§%tTä”2ܦqœøL”*6¯Ú㙑“5³S@±={yT¢äF­j£Ñ#dÇΖÍ=)ó°:RBxäöGÃ6OD«:rçÖ!Q»<Åa rÛçV¶Å–›lþË 8‡`$®ÚÍ£©…Ir¶:Ö$«¯²2¹bÞ;)X‡ –êÃ_+ÓqPGʾͥ÷©Ü¦ƒšZ¶LÏòtª‘íÍ_ªÔÊÇËjÅ ;}½ÉÀaS‰h8˜Íë-Šõ×(2kÉ¡@" WŠ¥˜‡”eÞDfÚe3ñ>ôÕæÀA¦Ó†µÆƒ¤òKY§Ðó£'ÃeQ ´PN „@•!mV–©@g½"y¢–$ŠCâ©E&«΃Î#Ë_BGìv³I«‘N¦ßõês˜±jêfÏCWZn„µ^Ñ6¼[^eÞ”Ä÷MŸO6¬´i•w…›Úš3Ó,ý/Õ¢ìSjîºèm 3©£Ç-èÐ~Ïe¹FÔ³~BTQ‰ônëÐDGÑåØl ÃÑàs‰ô åÀ¢RkJÿž²ÑBL:_ö˜O»ìtŠ8ñî©pñ1V¥jñíáƒö¯.eÇ—@#Ïêj—j‡ë\JßÍý@EãD¥þ•Ä@–6Ø,XRŠrñä8UÉ2€?F¹Áµ‰dD!P³TÍÄ`þ¤±¹_ šö²X•Õ~ª;ƒ¼¨Ž…j5ÞÜ lòD»ð»Ô†ç©:ÎMÕß™Yø,LÂóÔàœÍÏf©TUÅ.ý¨«<'#Gyz@$ßNÏ•yáÕ/ØqíÇlÔ@çáYȵ?Ò",›Ÿàq’ë@ ŽèÇsŒô¾P[¤²¦Æ‡ÿ"êX.ò*"µö.©G›3ÕVo«‰µ¢‰6;/5Ì.‚ ;ÄÆ‰Æ†‚Óaç2jÊ­›ã´„ë«‚,µ[¬:##.6~Ù+õ•6©‡ÐHX Ç”Τַcaâ‡mº¬{\GLXПu¶V>ž z8bf‚TF¾ -îþ>³²ýô©ä ¶ãÝcêñ<¼«rO*¹O¡Ç¹ÔØ—È ¨Hé‹Ã“³Fb|ÈljO£Ž.©4ÛMi Í)ß¡& …—B\N*§¢ ƒfÜ`tÒŸíÃ>u!.Ãv½¬Tý *år– Uͼ¶¥opŽë‚2J.°Ó|bÃ_>‚½«qEÒßWÁ½¦ ¯mÁaý“5’¯ê¡=‹¸Î•ÛÑ ·CQÏZÏ%ƒiQ*`|×WýÜX"J5R'§àê{‰Px ¬ xÀçA®u©½ªAi˜KÞxÎ_*¬yKÍ$”y)š¹–&¢µ¨{h×›u˜J Ó”ôxy[ÓþÔ Ðöm¾Ô1rΔ/>Ë(±¶S# ¢©œî”òµ]2Û©†|bpªlÖùqÙ©Ž! ‹*JÃò”Ö5> N:ÛFÔ/5iaqgƒÒVÒ±ØjSjÇ*Àð<Õj`i*|úØ€â/m·¶œÞCDýfr®}p…à]Vé°ßªBÁ:$?¦ò²hçä;›ÈŒâUÕ÷ÐnmM«õÆN”±Šó<ÿ^&±êÄç‰æ®ô'°nï»cºMñìó>ô';¸Cžâ; Šépüè×Hݨ%Y¤øžú-ò°A*ŒÄå•wœ²&Þ8öä‰j2@åá=y)âMÏiî­\Dìbë¶ Èl²›¸{)(æÀ>à‰û«ßOìIkÈU~§Šë¦—)ˆDwç›­æ¹I¿41Ñ~8[¯-Ç€¾´L›<î*×u'ö9rߢÅy™H&Š|Ó›²‚@HõÉÿÀcÖW“ÒHE°ÜTÊŸwÙ:Åê ­®êˆs+jœZ½³óNÕ}%WIS©Ï¢ë¡R?eðví¹S¹R£°&‰>º„h&FÅZá7(—ȽT_Dç½é_y¬ê)yßÌ’§ºšóòžgQÄæ·‘ML]Ó^ÿSEÈ©èõZÚÿ”Y@€]Ï”0ha£„Rä=ìÁŠå9w«R­[DÅ,½–’ä:£Úíû¢ÂSp$jQ ³‡§àšàz~®Cæý(Ì]eM÷FÂ*§e´%I6Ž-IƒÊö ì›l‹Y~_3›iÛ*'š4d6$ëµóª“%ëñlu’ZSàe<‹ÊÇfo¼{í¿Øó¦³´ŒA¦ö\’/²48ÞyÐYw,Ûšû.M")^U]Ô?R[•ZUZ~K@Û’kM¦o„â…m¤ØÎË.þ$u)€®Õಠ&“€=Ø{á³±+Ú›ÛYÔ„q£†µyUÉóbœÔ¢É5Ej)ƒÔ(@57ÉÒÏ£>^'É·¢À •:ì ®¿õ¥â‰±¾•¥­$[»å»™wx‰ Y.9Ú‡OµAô¾¥5‚ž+}d"³˜=´‹çFÙ/»¦Y &Š”§2GÜÖ,[T9¼¸¼5=â°(DlµI}ֿؕ é%;¶³D3Ûw[Ú‒õ" —¬é¯òÆÀ]—Z›”ËA 6B ¨zŽ e»þEsÓº0T»„*ñýYd 5†øT~²û§~áT”&úÞ*E Xæö,ÑCÊ= M›o<$ʹö£Mãr`Ø©­ÉŒ6Ì<)žÿ€:¨ 5OÒ·ª^ɽS^† êµ7TC¦fPi1ꔡ1(•uGÙÙ3%Ïjž›ƒ¦|—+‘ØòX–|î¤4é^\¬töÈl»m)Ǭ»¹Šâø'•ÒXTý QÏsXÉ7¼ÕÕ4+.BZ9Eåf^[±‰Ø‚¶¸²“Æb°TÉÜ,q¥[¤d\ª`á¦õ˜U¨ÄÑËJ¯H›¼~Õ>Aûz¨\ž¦ê´µF ‚QϨb:­ƒe‚¬O[’¾ádkƵ¬ìxàÁ>Ž=ÊØ©•Èßì@êMðÈCá;ªXèÂXÕ ‹ê1«:äZ¬V¸I=teÝÀäŽúðßž_@ {m… ¹+ ª 5)IJ$R+}2mw)kêsÉÊZÓÓ_•LÈÌlŽÍ¶TqJ4žž2Bu!* iÑÅýš¥›\ó¼)ÿª¡û°L7Lv0þžú&S¸Ýz=ÌkÈïmª!­OÕîá¼ð›ÕžvVb€©Ž¥ÿíð‰kéÔŒĜ[FpùîÝ5WN»[ÑJ–ß[¯Sˆëi&ÅøI£“3E£õ3’‡ºÎ ~舗GÅɬ;õíð˜NF`Õù¯x 4ÚÔŽ™Š¥>YUŸG±ãAÙ²76Ô|ˆ)<ÿWÛÔ(>Û²dÌÚ@U=a5¦Û‰f°°3üG1Æœóò†€î×–ä§f²€Ñ¡N J‹m Šâ¢0¤ƒN7‰u?ò#.ÓÆè5C}~*’¥ú§…­,Ñ£­eWCéìX_zªŠýS­(u9Õož›št¼;Ï%*0U ”ŸöQBqç²cöΫÜ+Ô—r¶L³³ýq²ÅÍ\Bñ5U«’á¼.9u‡Õ§TÚ`ò!½9/{R±OYu’lIš²ñªœS¢ŸJcÔ• 8z’ …=¼hN÷e-‡Hï*­µëRÞÔXªìÍà?–Îo8c¶q”î¹À&M«ì¦ãí,ôv9·¥"q ‰ ;¥Á•5 gIªV+;d1ò'Œ—Fárpã¦Iˆór™uzLŽ4Êߢ<¨Êê7*HfžÜËáBÔ†g´¼¦]7êk)ÕAgé zG›f‘5Jh‹“ >;ˆÑÔÀ“ÅAíëÜÒíd®´«Kª>–i„êÿyá Cé!%PÄ­Îx)zV@ÝJÙÔ‡Û}fp[¼¬a+öl•„M…H>ãÎ;>ž·#ä pðµÐƒ Än ÑIжŒ8.Õj2¦Îu^Âå²5Z– '#Ð.„ž^]Ï‘zá ;Y¦É: Ýœ²|%UÝoËJСŽˆ‹R€U+s¡vù‰ÿ>–8”ØDÀÚ´ÝŸÌ,¤a€{Íå)•ádc>¶f70ö¹{Hªßî®,[…r=ž>å„ÿ"˧ɯO*ÕÚLo»RÐþ’G |¦­åæá–¾J]‹ÒSO}0(•¬f©RýÖK^Á&E{êãÈ>!T©Zêyô奤`|°Mæ¼ïdñø;¤ŒG{Ç};†¸NacÖÂNÙ±#ô_!…Êe‹9~шªÃ.ª‚kÈMv<=H›¬ÁÓ—ÄÕßus°]i<Ö¤ãŸVÖàsÏ­ôÚëÑ3 Ôõ\P :‘[Ôæ®Ù»¥XΫRegV¥Oqòd_L­½X7£èr¹QAîêØäñ`”leûí!F[€àÆó†xEçúÚCܨ–G›zg ¢#Ô¡Œ\£˜HÏ̇}„E5Ri\È_¶~«jïIî>{tcÇ]Sõ³‘,ž«vÛØÒµ3Ħ ž$/c¿3èf{ XùÜÆ¡yYb‡›h•d’™£åØ”•Iå|M–S!«ow³öOÏO·gì&¬m÷£½e’’ã Jô7e,ÜKƒxê8l{÷ÎæÞd©?¸ :Ü  KÖË@ÍJ‘ß»‚µžy«,Íë¼v‘ãS½©-Ê?8ß0mP»¾6?Ú´gSO˜úQl(Å©Ù/9ozÊŸƒ‘2¨‚HBfÐqc:¶wz޽K¨YºÉ>»é ©•Z^sܲïA†Çýlªq¯ƒªiçD0ZKÑa«·Qó]ú0U^ŸaÐþ—ÀP|¦=>ª3ŸL4+Ÿ9äç§½Éää‰gÝnoY U/zm9W.küs)WŠžr¯yͪqð 輂£m1ä©Ìò¤vÞ5Ñb+çå)•¼³Ö¡eþjUT‚'ÇDÄ[ÅþCÙVª)"L^›?[»jzÒDgõ5<Õå‘Y¤±è+ž!J‡ç‡u縵¹0m'<¶Kš5[è¼Vû6Úþ¸õ(:´ õ$BéXªÙjÈR¥ñZòÄ$W}ö²“A•£44Džlìj‡ðÔou€ŸiÏ&Œé|žT6ÍæxÛ®¢; kÙ ìbÂÑ4¥(\Ëq)♓”IåPuCº†]é“<¢Â7s(f¼-:¥l‘ô5J`h9—Bõ~Ê ½.UQÈÉYÀðo)¶<›·ÌoòGœ·3/Îây~8¥g…¬mô¤ŠÑ0š(xÛ;  ƒ·p­ÊÈvnš*êë\wjµtù¾ 7·äücµ +ßb;ŸOBÖ¼¤kdX$ý`žÇæ¶~¥(4%†ƒÑqH‹¼õÜìFõ¼€‡gsu‘LpœE?«Ñ{A~Õsâ-¢()Ü<Lù¬ŽóP7J)îú–öÄv_Ük]UÎênŒKhähGyçTÎ9 ²,õ—ÕûÝbÌë´.,ö¬„I€N{hÆ=k.ÁÅm!ªøf‰) ò2!¡R6¿¹´³ /Äã"z •®3@Xüï,««±XÖ,'Ï.,¤Ú,ý0uq´ÜHÛjÒ„:§oì%Þh“Á,§‰2Šk T,܈]G7"µãÉúz}q“ÁCÍ5Ôqr*›Ã“)2œ÷B±÷ÎU‰u,—ôr`XlJ…@ºãÅ©-ÝvÏòeÑ+ÎÌ pæéÊ”Ðצí»Bºy×C÷vdZ‰ÅÖykß5“"‚疺ĩùž ÊÛH›œqÕR¥ÿ„)vdé¿-¿žrǰÆSˆ·;3¸GEÜ Gú†Ýz¾PÝ °•L}ô Í•ÅLÓ{û^œÁfm™ 4¬öĦxÿ¹Xk-ËU•‡’Ì‹Ôu²ñ0=ÙüäÑìÙC4û¬;ÞN?6°ËÐV§ÑtïR———…¦I»âÁ£®¢Ñª!°Xºy§.ÓÚs‘ß’+EÌd!dÏôÙg¶ÕTˆh›K#ØûT¢(‘¥%Ù _ÈC6¬u“R㙟ӟÃöŠRÈjž@nt°“ÙN?‹Aº%©«€X¬ªÁ{·Ã@K&ÚÂép’Ëñ¼Ý6VWr<8áÑ´›Óƹ$5’GR€n1žÕ™« NtlLëDs‹˜©TÅ@ÑQÓV+è¦àW*þn›3€ì|¢S³•ªà@º.éT&Ò´ˆ“TzuÙÔ f60/oŸÛ!këT€Çé¢ÛS‡Ê´d–õ ®"3¨Ü¬Ï/q·jH户îµDÒ­-ö´±åÓÞŠ9òôÇÒ«LÆÚ#\¥cÈñŒôèÜצX…c¹ŽfÉfAÚrS¤H՚ȿƒHð%=W»=¶rˆ Þ$Ùn|OßÂsµ¨®èª$³šobFnY?íè<¿IN—Pi\ºÛÕ ÞÚô\©¸òFO²4ŠŽÀ,¥—Ô~b)(3M2#­’%ÏjäÑÜ ˜Gn.ËòÜf+H$‚ky+Ü؆ܔ~òâ n‡÷u³õÇÔä­/'{;ÖQŠrý±ëDEI3u çåé›21ÎÓûù€^,ºùSÎÍÿBØVÆæÀéâ)“ˆ °zûoržïͲ/²A4?Ü—¾“†¤÷( pˆ °\F¤ø°Ó<½fK½vç–EÄãðJNR×€Äy—‚¶il0—ÔËï`oòãƒ=Ñei:üéÑÏó,9©í4ýP(<å´ô ÷åÔlž ºh66ô9Øv»…:­šÓäF¥XÖûÕ­ËG'PÖcR3sùÃQ}y Ê,Í¡#øŠM·SD¥Åw¶þðx‡¾]:l€„*e!ÿð“¥½D_Nn"YÝ©/p9¦99Í'°—]Ñ©4{jÛ“®™™­Ä»öåJXlÞ¶+Â#½ó!}²@Z%žÇ&©ÑÑ`Ö~[+ͺràRr8JHÁ—ÙI•÷ª>½ÝiÛ’6y<‹’òä¯K–,ÁB#Ë™¼·ÂRY#žÁÝj÷º;ièžÆ+º—‚U¸Ö\ ÝÚõ")$OÚ«NýP#ŸE#+X 3Õ䎸{;/IÍŽdÖPÿó§t¬‹¹€ÉŠÔ:Pxv“t*èÇ¥ÕÚ¾k%@1©ì O!{z•[ àËÈqt¤y,uiÁLáfω+åÚ’ïr$ù!®¯Ö²<„ÝÑ œó9D]ª&þ,q#Q$ùˆ}Ø'§bq.zdâ±êMRX§Ëg_ð•½yI-ȹn 4>ÔAœNNàn«Ñ/)U¤d “5œÐÞ'f£†’H27Åë’±ªIKqŠï: ÿI ínûm Ðu*©e ~Ÿi2nɵ½– ð!ë1Ø&ênå鼞Z‘C×HÐ3k/Ëä;ˆžª…E&*šÁ¾™7©¬àJØÈ¬Cv:;K–¯ÒJq¬Är;ìUoAB*ökË%H•ãNUíòÏTmgÖ–“Lî)àaýÁ¢qt<©" 5øöQÁí˜8”ÎúM6`f7Ê÷©QQ¤îô–4"6ÄE`œÖ°Ed ðäÊ>u0ÛQI“\}¥³¶»¶©œ v4öHë°ÆùêùèIeÝØ–à’ »,‡ŽÂàºožID'›N±Å•dKuîÃpØ\/A|hÒF]-¹ù>‰pö¯…gIÁqûžá`ßïo#¡$±{¡GÕ eùÕ5¨KBîb)ÊÏtJÜ2ÊÃ:MïGa–&¯²([“ìé³¢v*(‘—´N²Œy5½ôˆ˜:Èy†“¤=Pé’ã¤1\'ÐsÒ»¤·Ü”¤)D^Sã ƒ,m€]¼í¶‡§0)qÓ˜z.²ÚáLÈž  9õ¤¸H¼KÔŒ¢„€µ~£Š?\þ“¼žÛ9]§‡´*ånˆ—>îAÒX7(…ªøÉÌ©z>EvŸ1):¥áwà™%©Ie·b˜±¦ýMyº÷Ž˜•\¶Ù –N£BeLk2n¤5 ]û¡VØPc‰”ÉÛP/Áƒ9r¢«Œ“ʉDó¢{õŪìÈû£ úE"?mz¹õ‡ížs*iB•B9Œµª‘4BËS +1’2U‡pÃ>Ýsó¢4#> Uw—è@ʘ›¾VNüQWê÷´;Mn'A~ZgOÚ % 9Í~ *Ü€9ôÁ–™Wâ–%) ‡gâ–Mã.PùCŠO‘}¹nž—²w-žT2kzHn³ë`gs4¥‹g£ Jez‡Ì@>^ñ>š‘VU6sê®ð—Úb QÍ(3ØUùµè‘ʬgÔv…Š™04¬Fd`KÈÙZ¿Ì¨Icô@™ü÷=aÐ:s+ZgòUå$H6 ä`–¡rÐòíRÕÁñ‘<ߨÝWê,JÕëêKJÜX”â¢Èœ=¤ÅêGíÛð|ìö\ÔË Å uÚé*βâ¤#“pïW¹³¶ŠÌòHªºÁ¨Ôy.žmZ^a¤»‹Gêçóx<¥(ê-F,ª19Îüû€˜ô´€:W®Æ¼ÀI¿0‚$ÕÃ<¤l xIªº.Àë¬'à|w®“¨|‰ Œ­—¤Ñ¶j~îaËÿ¿:½£*§55ç¦åÞE;åÊ`(» qÛ›Ÿ³ÊOqY² ÏTàóÄû9NXI§ä]Ïœ0ÏÃv‡Æm½O¿A«·Þ«“Ü¡/sÒV;ÙéÌŠ# µdgªçÀ?5Éf)VÛ–—i‚ÇM Hj¸õð%J5Ïq5©Ü%^‰ÃÉÎbB;íSnPYQª.y ÉÔÅ Æ”og/SXÓm ×}ª†bZÞ´Ӡئ;!H·j‹Å L'!H)vÙî]ZÝr“$Z9ΖÔLŽøhrοð6‰fÓÑ^SߡΠéh£¯iëØ.pušöª8w™X„Yù6ZTŸ²ÎöN [0߇\¦¢¤à$°;XàÎaÆ™AÍ[œÊ½FùX¶° 1ÔvôØC¶ÿØfÔ}ŽT°P/éÜÀUp™JÏk ”"\°­Þ§\j4’Hr×5^MŠL‚ƬÀjJÓã”ò!)$óêëÖlÍ's[d|Ж„ݪÒUc9^=«_ËýÇisàøéþÉ‚Ü)XkNy§²×"Û=N×yÎÏ’%¦]Ñ¢9éÊmžlø‹àœ’zªV¥á;ñc8Ä»tX•© EÆc7U:‹'lÏÔS½,ãä‘I¸¼å£ÍrØXbM*¤¬† ãËKÏLçÛ90GkÃæDrys¶®‡ª]´Ùò˜OJž¿•ÓÓ•€}yTÎÔqQ÷QC{ŠÇ3 ÈÕ’Ë*è]oJϤ·œKÑÿ"s_]Œw®WƒøÖ±¯æM6Ä’6'#\ÉàíNŸ¼¼™ =ZR9cl+Ìbdª¾¢/¹Q›MÔÖž¨Rz㔄»Ë£^AÎC?'á4˜oÏü4‡…GõÜ„Wîáf9‹':IFe\‰µJ³úP£¾¼qù?K«š°µ9 N.Q%P¼WïL‘cq»ez¬ÒÛp4vw,EªØã,}îT ‰x w˜g÷ÜEÓrÀÑi{Uq çþ.be>.QIR0½r™×­àòÐ@ž=U{#YJY6üïXh‘ R@Y3ÅBèÎ,‘¼êì0Ýû&]³?Ò}äʼnV>t_Å“à•‡ æcŒDgÄr¹ÂëP6Db¹´™$Ì^J«rrª ÞÔÑ·þm*0k€û"L@Wg·Å±I éªSx³Ëù˜–ؘG!y¶Å‰OÇvt™¤ÃÇâ®Ä[V¨!-}z§=w½>3k ÔBRÝö°{…Üðmrª¦.²t |•ïà)ÜɘÂÍh§3W™ÌüsZ •÷©\ç:&ðœêБp촱؀"`Ù¤W4aä\¥‹ËFtЭW³^î‰×øH!:³»–£Î›j­êÇèܽ¡ó¹Ý”ÎÛPØznW; @åw=-‹ T¥Ðô™îëœ)ߊ; žÈd)ëPv’¢¡õ¦}GÂ:i XIœZ<Ž i¿Í¿êl¼b' Ézy8‰ocÙžPŸóž6i)ŠŠãÁ°z×õ~Ö|TÔWÝ­TÕ¶ýpªë¬>e<Ë6‚%&X@§½ V)! ÝäÜŒ’¤hjCàLÙ%,—¬ì\ܘ÷JÙ¨úVµŒÉSÅCÌHÁÆS!sŒÁ£™_ü%àUÉÏL©ª[@ñìI'wÇjVÛ×Ç6+˜èàq±If@'°)n)Uç•U÷ÖÀS8Ê&+d®é­édpIÉ5ÞC·ÉQåÍAâqe˜˜=EÖÚ•bÀ­ž«4fÉ\‚ÅúXDÖKýa2I‚’ýÞ4^}€ |Ý%O- x¨lG»zeAl,øËêyÝž¸‚Ý⦼í㘥l¹FÌWbºU@zÊ R.Å®†3%Çp4HÖù"n*¶žE XóDÑ X|;›”¨M.øS|U8Wl‹È:œÅ&•¶Ÿ#;¨uwÛmq¹TSþ aí®f7E!(ƒeMHãó´äÔ¯áf—%RÛå°“ãèQl•ÏýoÛ’e‰WzògŸätig[$/„¹Mæc[âã7¸öQ'[ÿP}³ˆâÙmuªš~-}y{ä<릠"+9‘fȪڂ$*!)+ÀâK”²Ùt?e'ë1$YMÝn¢?>Lsà½ÊB’'«>‘®ä)(€=rå!*¢^àæëjæò{}®ææcÌZþ­° «W»°HR—¢Z=V±¬{Ô$ NU’ž[(y«L×\[ íž7¡+lÒuáU;†KiN8ΕߗáXnªù6©ç«%Èv̶mÉ>ñ^=ÄVï(íTgæ³)Á :ÉÎÊÚ¬uìà^ÔÕ_Âi+j€•ªëûQAF#FSÔÚ2'wVÙt­Æ=ÓÞu'ÉIJjQn¬ÇºìQ¸Då/=LÂÈ'–y=Ïy{â¨HQ)ŒêáMÓoÇ ÈªÚÄ@¼á+£8ž¿»›÷â…Ú¨ôËíØœúá­’ã—öñœÛ­ä²­lÇÂ÷Óód·´Œ€yÔ?‘Ìèè1Ð (9Líâ=ƒdy û®“¼$ÙËs+^°ö$îHÅö¢èЍ¢ŸÊ]sU¬ä†{Ùù–$¥²YQ¿Òæ´#?·‡"€ý¥ª•£f¬ÍU—ƒ»ÅÿyÈ”™+ŒðØcô´d‰39T7€`Mly”D2¥Ësî%*­Ó7…\É vû\Ú@8]}åÛj A5xuVþ  ÒDˆ`»íUöõ©Ã¥)¸GBëtî'é40XcB&ŸP×i½¤¤¢ðZSpœE³Ý}ñX µ‘ÕÇÈŽÄØþ¤²‡ú+™Ç2Œ·PÆ” # €ú¾= ÿ\Ö—@®¸;ØIÅ·ú¸Ä@VE'¶ê£‹aÈø@žs 5ÙžÝn£)`Z˜Yó’»`$§äxËÇGsõkyìØ¹šƒÇƒ¸¸=]ÐZ²r‰š¤;³A´™=×qm\ž(l"îlaiuÖ.°y„ÍÎ?HˆgFË•<.×W;ª àrQGõ“µG$J¬§]¸ÔØ “º‘üµfØe<.é6…Ï7o¥†<ÔšRB%mPÝ9ÔÕ¢–:Ëoï²dWtã3eæšÿ’óÞâ¸<)JvåŽÙ/[ªt™¢ÒTjqTž•M襥!•Á¹ŽcW [å=’‡Ø žÏPÕ  «£j]DqppÆbàõ‚+ÉÕÇÞU#©¿=OJž¤Ê‘øˆ.ñ*9y¨NBÕä6˃äljáÜÉ8¹ªXuøs ƒ}ºí5ÛŒmhAÍ#X…#Eƒ·iëpù,Q2°ÿIýJ/Ó"w_Ú& m5¹=Ä|(…épµžæ¯í<#Ó|¤S½c†½jÞ+gÌVYÒOxÂZ ‘Y%¼îÐ\ îÈR«‘ Ì`ÑÅ¢¬÷T)¾ijc²ñië…¤<#´b_HJ As ¬«IÞƒ%¨tkÑ %åW³*(q8‹«ÇïíÐ!¼jÔí7YVb}ûba—ªMj«@¹ôvƒ¦°Ø› (]UŒÆ£'´õ¢Pí­ï˜À«k-ßßC%½é¨ «ÍÔšN“Em¯îÄ;–¶:@D­ 6‡1"¿«ª§êOèÖþ(;G|»lƒÌ ¼÷qþ/©ÏÒ7Ãûg߈:W•<ïé|®íÉ©gH µðL"¡ºñÔ⣲dž*„·Ìäc :h#&! +µ"QNË©úåh^žÅîãmSãäyP,žº´ïêŒ*M7fTÖ(•gK¤4ŽÅößÖxJ)ê^^QêàPÛyW|oTé^C) –ëÿ8vÙ˜µE¥±Ø¡àÊ €Uõc6c§³çÒ¼ÌSS’”Œ# ›l GhÔÙæ]“ìCÚ–1v&ëœ}ÅÊb†‘”ôH6¶Í.NUÊ‹w”tÜäÜN±­3ƒÙœ =gJV±x¤¨öQ~ÓJ¥©#¤=“23…ªí¦ês@Öy8J5„/ @äü† o¦Ú%qý€Kj¹Äj «·¹…¥:Âåïê°* ^çò"é‚>p—žztèç3¤Y/)|Ev¼’mQ®œõR"(°|Á‘ºÐ{2–Iã½_\C«¸’ÝU;È nà^Év$ ™îÔUçöO..;¡ÙÉGPÚ=Ï[G %ÖX;f·¬ƒ`#é‘4“Z¾°4YgwE¡vË ÄQ7%GsÝï~Z§ë‰å0^Ö7…Fw5¥ˆ7kÆ–%BŽv.f iÚ‰ñ#Ú„¦È=UÇ8ïç 2ó¨^# MûžhW}V%¿Ò•X—ç•6+¾ÒUKwB–'êL]ªË 0ö=@KÞ]OEbpøTQ[nSâM9T(EÅÔ¢À#X§gu Ø¡NG0»)ož(Œz9ò»o^ÛÍ%ÙMíYÃXQ9¥ëÒï«a:Èÿ(œ­ÑqX*¥Jg³ØDÊ­${$‡ªN êEîƒ&ì“3rЪÑ# –ïÃ-°‰xØÔ+Ï)Á¨¦|h$(•[$,U²ý¿£®ž¥àԚɉŸºiúDØw¼ êXHN‘ç>TÔ))>C5 ‰c§ªWÕ¯›‹j˧=3$*MSü7íµ”š¨2“o¼±tÊN zΖolŒ<¸äêÖ ‰±÷©xvÙy ÞÂ/ʇrf®HXÓ·O°®Nmõk“òÏÎqÎ:zlGœ˜¤ÑÁ¯¬Éæ²{vÃvèoñ:—Ü"¦7]B•nZs”ˆ ´¸ @æÉé·ëh´µÐhkºAµ °8ŠÎ@§UÔ¢ž¶¢Ïèsp´y!Òº¤Ý™Ž“)V’“‡„iŠDßx¨Øw»GÖÿƒ{’idךräÞ®¢QQ¼¤l÷àÅ{šÇÖÑ_ê,¢³ ëÈÐ)­'œ™=(ãÎî®JùOÝ^ÀXç²/£ÂMÃáåíÙ/.­4G& ³¬~ÕÔ…u6<ººƒê6=FdÒ/k™N£ 7”%I m_Û?×T?àœwõt'Ý”ž‰ÕUW©•ë´‚ç¶i T·Ð|Lö¤°È€Âɦº¿ã¼^*ÝPºböýYÇuzäP(@¨³nQáͳXkMINî>äÚ &ݤVhKHNµÅUuMIöÈœs ïd½MÒ&‹-Ÿ“ŠÅÓn÷*Çl¿kÎí5up¥óú?Y®^Õy1›¥¹õ‘.w=á…o‡»N Ï,ˆ55,Œ /ÿ‘å$ñ6ie_ƪñÔÄq,Z™‘íVØ&ôþø°²vY "xй´%­ê^6ZI#;–@m£“™´]8Gçª;Z:°Ê”©´ØÃÙÔ %ÃM%ApCtÜ×0×ófBvxôÆ{æõ(á =y<ŸÐn— q\¯ ð°G–o&ð²ZãÎ$Ëšß«²t¢†0”¬ºÝœ¤!ê©G2µäÄøÃJoßœ¢K…ug/Z5K¯\›‡œtY ezúgPŒJº$ @?‘ÞÎívˆôÒŸIo7}½o³^WMc"],(ð–~¸°ã‘†ç8vÕY§?ºvÁ çÇó ežg}d=‚øÔÔ­ëz¥-ÀpÆZg寧½­¾eÏ-j™©Ÿ‰¢±÷¢#X&Tj9µûž IÚ¨z=¶<´„§*ÍkÏuIäWq⽬‹¯¥G&¶@ª¤4ѯj¡é{Úº¬Å×#åÈЬìN*ØÓ6¶½«<ÀsŽO€Ù=ÁQå¡ñÛ¡·#(ljô|ªb~õ¨¥jE|váûÁÅð¥&P{弬éÀ¥—Òcêâ¸B&q’HI»|YTP`ØiW'>¹Ø~ÕK ,ùˆÁÔ!PY„¼±]K£˜ÇÊÂd?(Ì‘šüÖ¦ÊÚjä*fuîÐá"/ž×ò€íúMÞÂ!m›ŠŒØ}K}Ÿ eÎr; «Ã—Ç¡º’‹g5dù‘禥$e`&ñP†øÃ V鯬ènÉâ”&9ÃUDF7¤±¢õâoû 0DÝ~ÕwÖ¯X½¼Ry¶ÕæC¤Q–;‹©'p‹ælêÔG›ÊcÙ=ëR¢¥Ü&?ç´hŸ ¤[$ªxë±·Þ•w\VᬄRfÙœ™!;CZ΢ª¬ò.rRÿŠŽ†:ܲ ÒqÜ5.ÝlìW€W—ËÃB‡œCƒÏd—¦\ä×U ‹†C†T~Ê\èŒî•œ<>¶Ã2ʉéq»ú4ÃrR¼ªÏ먔nPn zYÇ+ñf[ÓJ²Y6ÐÙ=ÚtÖªÕ{u8-S[Í&…¡SÒlEÀ‡€”Ÿf±–¦ÝõÛ ÜßYƒ;¯‰lyej.¥º¬‰}R ÷¾ÄÔ›"8Á1ZVŒÜ<Ö\׃÷D@rÎX÷¡È”“5Ù¾®ÕÓÕaÐèa÷,tý\uCßYñ Ã‘×é K±w}ÞKñ³¶)תÈ| ðÇí€@œabrš5:ÒxIÀIe£)ÛòÉÀ IŽWñ(î-Om8ztWm²NeHòr¶Ó±{ç)v‡œ±SÊJ}PGªâU=Cî¶{d¯_€GqK™¨ÃSQ£ÐAu¤t‰z|@*‹ÑJ®TùyIoJÞi·<$l߇]$5¢ì­eu¬л=æ ƒé\DØ]Ù¥°ƒs6Ù©³œUcxÍz„L ëÿMQn³Ò!Q8§î×]—”‹ ÐÔ•çv^ZPÂ\ŽB@YûÙ\E²iÀ2ÐJ¶RUI ÿ\¡ÛÔ@Ž$!w†EIyJwñf°yf"òÜ©z°ªº…VDÓP¶Všm5Í6/ç± ²N ,@’ï “'v–*@DJ¾Ü-M\{Uõp…´ª,û³jXx*ᮓÝî<æ©‹gò`Í+iOýì#ì,˦B¯ Ô+Ê>ó\÷%'/H[§UP…6DÊö¤*¼’€Z1þPt±ÊFÐN¡xéCQBVŽ^¤ñX,@ux›CzòGä´ Ò>´mSÂTs¤I¢z„Þ;0çy|uIª2<Ù:Àzú§çÕp¸/û<ÃBIC–eËöp¥^ïm·&Høè¢µ7Ó®¼Mr•W¤È‹‹æùŠãž 눗K™5rªœÙ3e¨‡Øï±¥Ó)6-ªÀr·‘žw©ûÔp$<©]Já"Á*/ƒ*  |žlq®…Œ¶iÃÂ%P•ìÓh²3Õ‹³_ª¢`wÇ‹Ü%8óæŠ­P@ ¯[ÎR®RP’<’WUƽ¹žê0@éÔ?T?<° ›ÛpÝfÃj<Ùw–< "˜ãŽÜ Y¥ÇYÞ䨯½òL¨ÔNn,ú®&%S°C£Ï÷¤¸’Õèp³-…¡§`"F=Ž‚è_¶».†¯8Z(Ùö¿ŠÉöŠï-ƒZ¶¶0Ù—Õ&Ø’[ÓFiR‚©ª©J¶ð"˜H¤¾ˆµËëœë’Cû¬>7PÕ‘‘K2ÄIè£ÆQPù:8œ€Úwj°ä RÕJY®ÐHvU¯„í&ª&KÁVÛ-Œ$ÖÖœ QRMé2asFHW"æŒk»¾iêmŸ¨Æˆª”J ÌÁZææR]ò¥JPìlê›è 礉p§iMjK±‘,üh7Ö‘°SvJò³n|á 2u¯‘\½¶„øDU¢Â.¡[L°ö]åÃÚ”•tª&Nž%è,L”§ò/N2Úæ¡2d3%g ±ìà)œ„ÔX劲–°^´šwúçi:ÂH±9ÈêGÔn²Q‚Ü2"2’Wwèâ Øï¬ ÀfölâžÉ.OR=€ úpr":‡Ñ¸D0@ËN}!¾ ¬ðMS ê5jT^ËFtg±{8u® ;E<ÛÓRj—òtäqÉèì=´e©Æw-trR‘ àà5ˇÍ ÖrP¾-kÝZµ!âò“ù)÷°§©r¶sÜKE|™žÇƒVWœësn)("[fDgk JFÞiöãYÎpÜú[¦B´K/…—¨}FgØWªœ2ˆå3¹†Õì¢À[j⬕­U# é¼îª¶uϨˆ¦Ôý¨«-Jýņbe¢š¢\àFe7>d8~—ôÝÀP2×N¶­ªšÛžãÙÁÇR—¾V_§<š7Ák#\ R©%EÛ¤ › Mw§UÕ.ª˜ÊjoãyôÛ&Jõ-Eü#6¦•íÇ'©w¢$†Qg‰œ)T’Mx±4ùHZÛ¹ÕÇ:Ec³]Ì[º¤é«ÝwÊÜÖ+ER R3¤î™‰û–Ù<ö}b«JËCPÝ"Þ—ÆgÁŽÆeǯ,kLP¦Ê÷-œrx‡½ëåÔ$T×&O÷ÐWèP±RaÝšˆ‚lÂv8¨ØÊ.]ú‘–¿J–”ª¼Ï²¼}<·ž ia®ê)Oí€z¯“7ñR ÎŒl|iOPçêV5è²¶É|/7Lp¨¤ L<š² d<à{AWÇò)¼gÏ×#»Z/…ÄË¥p¯«¿45áÕ3ý!À.ãN rÅÉ¢Q38³m‰¡’TÓRYÑ9$sµ:“©õ≅’ãúHhU;ÊU¶åµž¯¥ÞWµai’­Š5”4 ~(ö«ç£HŽzdžü¦º)Еv‚ è)¶I¬ªÌÜl ºÀÎrÁtó…8*ó’wê6ÙÓƒ§®Ói«%tQ\œ|J›ueÒ¥þŸzlqí•;³/ˆ—J¥ÕÒé øòÉ‘I‡òû!ɶ_õcï¤tj´üÄMñ’&+ÒódÍVº’DT‚«ãŸø àȶE‘Êɲìj_&Å È —ªfîŸâø0ΣÚÀ»|ÚiñíöK(\îü’ÓT(gß¾ˆµŠ`‘oX IÓˆSÕ"eM§¼©Ý@‰½ª¾<‹¬±È†$Œ­ä¤ô¿w9“\zìvdöÕÒ5ž(Ý$í>ì"˜oU³6Ä ¹­(}~_ö­ µðhž›ªJm››°c»ô›]²UF…FT%#{ ýz,¡@”ÞL‡‡cíÒš©©÷yyÃdùl¤F¨³‘W÷íÑV ðfKZÇ<*õÛÙRl”5¨o.6;èÀÅÄ5ÔËDíªTEV¡N†InI"ßÜ‹{äÜ"w”àAÝù³§Ò D7uÉåîÆôTöo“B¡a«ß¸â!ߥ³s]ÄÒ±¬g-àñ&¦TlÏ"Wõ,uên™tÙHkc$±<΀hÙêÕ >Ú• +óP¦úÁW5z•`ÛíºvØŒ¶I5+֫锓¥aePŠ„³qu&¹²ZŸÈpŽ€ó /%¹kד—Ü¡€žºÝä "ªqœE^öí@j"¤¶ÏäÅ:ļԩÂì%“µõvå¯Wé³ÊÈÄHyÇQM²¥2·ö˜¡”Íe4<ŒögŠò.'9 ¤?äÈõ<¬ÚÔ¸Rÿ‡$c˜¤¼Ô:z[â0¦ž/þÊ“0É_ µùãŽÚl$³¬˜¹Vî2î¬Ô¶Ñ^ `. ³â[Ùöÿ›ÿóÿ~Àÿ3>àëï^ß}úüñ×ï>ýËöÇO¯?|þøéõßÞÿrû«¿š¾y>~øü¶×_½ÿà?é¿ø/×öWÿÍ?üãßÞß|üçW¿ù·ÇÏö·x¡ôøÙ¾~åŸÞþîõO?þ?¼~úáýÇ?ÿâßû§×wŸùÞx÷™ûÅÇ/ÿñ7ß½ñåÈ??ÊÏ÷ýE5¢?ýàÇO?ï~ûþ›—_üìå?~üðúÃöWýã÷øôþWßzQúÏ—¿þú?¼‡Ë߬_¹ýúéý×ï>¼üâÝço_Í_üúÝw/ÿøñë÷¯Ÿÿðñ×ÿí·Ÿ?ÿó¯¾úÝï~÷³w¿þág?ýê¿ûóò»÷Ÿ¿}ù/¯?¼~úíë7/ëü§w¿~]7ö³í¯^þéÛ÷?¼}û?þòóïÞ}z}áß½ÿúõÃüÂo>|óúé…¿ýò÷÷/ÿùû×o?ü÷o?ð7/?>š—ãgÇŸ?îÇßöƒÞX¿üîë¯?þúûwþðþï^~ùþ»×—ÿüüýÏ>ÿþóß¼¼ûð?øî»>òûï~ûîýwïþ™Xþîå¹ÿû—wÜßw÷ÃןÞÿù‡Ÿýðþ;ïð+?æí]÷¿þõë‡Ï?l^ßxÿéõkžú¾Z¯õ_>|ü݇?¾ý÷/ßøæ—ÞÂ7¿ùþ«ÿúáý¿þæõïÆ?Á·¶Ÿ¾÷«×Ï/Töúì¾¼þëËëï¿þö+?üŸþðýëúÇÃosýÿöÇï?~ÿòKnÁ¥÷ÊÿÙþøÃ»ß¾¾|þô›×ûã—ÿð—_mÇñòÍû¯?¿ü³ tûéÓùöë/ß¾æÍzÿû—ÿigá/»ÿïÏÿõ¿°¶¾ùøá»?üôãëå¾Ý響×ÚÇß¿üñoãõò·”Æ/õõ ˆæåßþò×ÿáÝûÿüþÓïþ݇_~|¹Þ®’Çó§+ýí¯ý¯Üÿáå/?ë?}d©¾¾üõO+ûÞÏýkþ×ñy}¯_ù?ZÖ~ÊÿÉÊþ÷×óüæ»ïÖ¿þµÿü¿û×w¿~ÿÝ~üwêo>³èñ‘¥ÿáßÿèÿøú¶OñúÍûßüúßÿëß}~Çâ¿?üê»??Ä÷?<ïÿúÍ?¼ÿüõ·okäíûÿÕõÝû¯ÿðñ‡÷F’—¿¥ÄüwÿÆvúú_ˆ?°×?½²[þòOÎ_üÆmE9ÿòîÓ§wØxÅ|u¾üñ`ÿ}óúûµt_¾úÙ‡Ÿù•nïß^~ùñÓæûLéå+öæ¯ßùí·ïœ/_}û‡ï¿e«ÿù[ùå«ïyS¿ùé[å嫾{÷÷þN‰/_ýÝŸ¿ª|î?ýù«‹Ÿþé/\õå«þé«‹+øóW>ƒ¯¾ùâËãå«×/¾ /_ýò‹/ù›¿úâKþè·_|ɼÿâK.â_¾ø’«øî‹/¹Œ_ÿôåÁe|øâK.ãã_rßñ%—ñ¯_|Ée|úâK.ã‡/¾äa~þâK®ê7_|ÉUýö‹/¹ªßýôeàª~ÿÅ—\ÕÖ—±&¾þͧO„µgY0úzÅÝ××ß¿~½‰«2eVl6ámõ´þT0³b mÓ>’ì içE JQÓÅQSÍúÞv*P­dõšËêtk¯®T„]¨3XJ‚F}˜ÚÔõ;i•¢üòbÔC]l¼ƒŽ'ÍnP•9ä £üÊ¥}.£Š® cÚ5{æãìø@ßöHµ#uM*ì^æpˆHË­è¬J÷ZåñóV;,êgOq’M‰~{ŒïÉð «vâ㎬–äbé´)ìÖt®ç¾ÜǶk|>–ÿºt?èû¾ô¼5 [çëgiç=÷4–ŠQ×]¼ø·®R©O ®Š çÚIÚxY¦í笴t/WÒöïGµq˜l–ï›GÞIîý8Õp¦.°æjú\Q<Ýg\m»}WßS¦ô˜ËUŽŠ³ansœ¦È»äÊxV,²V»º”àõ¡¼Ë­DM½oõØàÒ¥¬cK[Ó¼‡'Ja´wK]A½m•%&xN º©Ï«Æ>¡h^ìÉÇCEÆ=\[=›G’‚™üO¡ßv]ç~ËœÖ`~,<Ôazîe­pN ˆ2ÏØµ­¬âRg¶ ê,§*UQö—œ)¢©g(A«”½ãa‘÷þEŸË±,§³¢F \J¬:—ÒMFÓ¹¶:1T«ü.gÍõ*%RÌÙŽ!F{l ·{ÈaZÝöÉX3ãä¾EQ*·<—ç‘Ø¸Cæ]Gïs“ƒ–ìN( IQXŽ–Çs¯aX½å¨/%1´Ã¢X“޹wÛgEÇí›êU7ý–„ í>Ã"!År¢ýFÿ¬:nÁqw*Òt×»¸IÏXÚ:KŠÎަ[½M© F„âùö:ããw^as4Ð çR÷Ãæá¼Ÿ1ãÆ3MrTäÄñÄeß*r³ç” ÜE¥ìª+3s½º0„“ê6”²5™ô%lòýPQ/´z¶›Ò“-YwåáCkËêR¯_~š+áT…1ïÅ\Y€pkKšª½¤KfOñC‹û:6•¢8ÎÕæ){æ•ð›Ã÷­¾ð”Ý=eÝ«`Ísúú)DZßd&j¯ùD $Ÿ'Pÿî7•°Ê€¥ü8ó§&@Ó·ùˆªÈví¿”¡Æ?í;gÝ?¢v Úêx½—(åÈ Cý]/SŒ5Ȩ H%Ç‚¸¡I=M9Todœ:³_SÛU ž´=ÎÞwU›¾Ï-.YK¬;É1_oP q_ÓU©äåC§Ç¶ËvU¶¢uÏ¡ÇÇ­îöìÞ“~]:yËôÈ©w6ÌTˆæ`)/ÝÿºB EÅ(ep[pÎSV²‘ОxU‰ªþqp»<‹§6þЭuZÑW¦©;7΋ªÔŒ#µŽÊpZ€»deï÷i§úÜåïËŠ“Èã„uóL›,#?ˆ'~Ýû¼ú­†?ÙŸÜŽ;®IÇeO¥>3ÿ§of¶%iެ:j³ËBÓÎòP¸!°pRд9Ë‹‡‚e²RºÚ[a§(õtî½×iäòXIvÕ›ÂkÔ=Çy ’fD“t¨®çÆ/óPx;êÍ,I{rðù8 wö.qõÜ\–ßz¸ýÞO¢´sʤ-\ö*ù÷j—˜Xžýàúd£êݘI]*U8?p¸"ÚTìäq}'!l#«ÿ‘=M?÷G#þéÖËH«}¯˜5ôs›AÙs‚0J?-’ÙÖnJÞ¤²ž£q_gC…‹2»ÁDY”\BÖl€˜¶QÕ+T¸WïzÏéýkikÈ…Îw‰]q%ù¦kº¨ËÓ<.#^n—\€Êê&¬òô„RÎ%õ*!Wˆ®ô)d Ë¥MƆ 7ÁþŽ{µëî˜;Á[éàL"t úŒH;5¨%Ù4ܰ“ªÁ£4_44„²O‘†Ú'Ýo9½ÎlqWŠÊPf“7{Ó…\‚ìNdä·ƒòžC³¥X2ëìpÛ…ST×ÓÐŽ¹ÙŸž'©óR\AÓØ‡¤¨ ¤wâT¬]}»×QæÿÑUTz<ŠéÎ×ë0Ü\¹Ïõ«:¯§ìÎiJðžì¼3i´ÈµïjÑh¨AX'†²ì–võA¦# ]w^6×.ûÿ¸tŒ¤˜›(Iºj窩z訰i®€“ª¿¨¨Á!î)]qªh˜Â§ç(aÉíª± 8G.ñƒ'Ï󰳚wé¼r­å«¨ç¨ÒyQ+¯^l ¤Áì”î©…Hã·Æv9Åy%À¤¢z äf.“Ê)G>z<¤öWÕk´|sÂoo4ÙRx€@ÜEY¢6S™g"¤ý  ß³û=½RT‹RâCokŠ<’óØ·®ªVb…)CrÉp¨áÎ{#œ.IU[ýÏØUÀÛu)a“FlŽç¦¬Üœ ©¦«ãŒöéä¶•ŠÝnòRôêNY~r%ý$YlÍFà!ò ’“ä`ž´q¸I„vg±kT_­ÙM`=&ŸÉVUœð+-ÜT;&gÇ3å'ßÑãpeÿÁþUHæ—MÈ¶Ž®VÙ²œœvm›^ÁÚBÿÆ|««$Þ¾’ u_‹¼x฾¶úþvi<—vÛuÔ·=£jQZó®ŒK¶¥áD#ÙZ m@ÖÁ•÷jGI)cMíLy¶>Y°é2´«ë3»Rív–^ž ¥sßSºY;›%Pé\ÊÆKtŠJ³2^zSÇ Ü.…ñÚ–N?ÏÖqè<†`TÐ×1=dëHžqˆ}®[ %TêGêK«­ÖíQn‚ß~¨òˆÁÞ¼ô÷b?$«¨ÐE2dóáÀÆ¥XÊš° 7Õ}DUÚe+EVƤäÉœÖÒ½uV P@ËN‹ƒ¬¶Ø7n•Oˆ«ÃõúÔnÇ4À&™÷åè3иì»~©H #ÿŽ<6U¿,ðÄjz½³s¸R¦ŒðÀ£\ÔMmêoS¢”(‹çµ]d);ð¯œàT•z'ú¾<­§5:ÔÇMâò›Ü¥dÀ¤Ø¡«Öv[tNŽbT…}%Îìa¥¥D§HY#9>K}þ¸zqH|†âUÒsXiKÆ.’¦N±SÕ¨¥˜ª‹"‹ärð r…¥ ¨¸‹À’‰‡˜ˆ €¬C¹xÁ£‰Œ:´J$%¹€Šú…k<§©cÔ§¥9¢ SGU¡pÅ!E,6òiò¨JR°(žÎº¨,nž>5R³ÎÁÙ ÔŠŸ¥0šîZa;®$©qM ðËÓé)‹oõ—*¶&ëÅI&68›úV真­z‘Á6‡^­3Ô“á‰ÝÊ›½W­õ¬1A.¡.ûn¤G]gz h]Ý©0U¢8…êÑŠ¬óK´rdYYn3HT9ßêå=P*°yeI ÷ÙÛ!¦Ý‹²yçNP`Yè4o ‚öã¤Bf‘e’¦›ãrÚ£®ê†m¼eR«Hnß ¡Í@#‘ÚñÐZŤŠ6éÒ –¨Á¶¯Ž4$Ïóéuq¥]Ù ¥Jõßô¯sؘ¯¦y“,t/²$WJÒd X;ñ”Ø×³ôT57Яó¼îË‘è"t« g‰yá»láü(HöYÓ¤¶©à/=ù¶ùίS\ˆæÍ%I4ÔŒ\º…$ëÍÊVšŽâƒÓÙLwcfa[¶½´¨I ”tïÛèÒ•»ò”@Òû´œ%ü ½iÊÖE¢Ë× Q¿UQÜȺKË3üœÔbä’P}Jätü¯+¢@R%^`—™€A¾¸aÑ6¿S­«Ÿý¦ÄÜÒ¢XRÄ×i¿š$ös;µŒ®Ò®ªþ‡àÍÝ 6-…Ω—hË$ciÓPtRÂ{±I-mH®Ëq”lj²$ÖQýœ¼)îí(o¨²¥S托kX$ÇUVd39}]Gç4‚ïò öÃÌUD³^¢^ˆÎO]Û-Ð׌Õ6ßrQøªÕ´¸÷D¢°<á³›<ïñªÑÙEŽÎu+âj¥å#‹›”QDëR mXïSá·7ûi¨Kð$þ× MrDw)QöÚuª¥D‰GÁr"g!ZÇ?yÜ‘:º‚ÙË1œTÛXÙŠ‚-`§Ë‰|öÚ­Q85mV.³Lgï»bäGvÆÛ„d¼5ü9(84¡§ÙɣƚìÔ=צ‹‰RŠzôHÄt¸Žø,ƒw>]³þÌãaœšC?Œì¨Õ-cLÑ»zë×ôÖ)çη§ ¬k‡+"v„uõ~émЪ|ÖÎûC ¶Œ²Ú:èX.]…‰4@ý*Å·ÙÚv'»ŠU+¢Êý±yÀfäXâkÄiyjAÐ[¶f´&ܵôRvÁó/ƒê­Ž5ÃÃ3?/©¨É6òCú}®úfsGžÖÑÛÖ ê0@­W6å-xÊ Ñ“BÖŠ#Ê®?õ9£4àj/ÕEÙúŠ"‹¶áÄÇ’t:äèˆÉ”ûȧJÙ 5~7ƒpö'HªN䀰(ü÷Uö-*PtRÎè\æç/jBò¤ä,q>&Õ’rªÀöY«Ä({œàæM /¾/1”§ÓoÅÞëAfã5óØ»fAùoŠòÑì ¨ 6µîÔ¼üÜ–ƒ×Ôf™Z¶[a|Ùlݵ‡R¾šÄ‚Y©XX$½²Š B—Qmä°«Š”Ì=7Um‘Gó8IˆÙ&U8/²6éC¢Vô¶xu»HÖ· ÓÉžìÌÐÃ39ïÇÿ»¼3Eñ¬-Ü”©(ášÂ ä´ÙEMŠò²ÒŽy,G¥pÈA¡"ÿ´Ä û„Y*úÓÞHÁs«]8Äö\®"K¼> ªGt«¾Qñ­é%L€äCj ’wúHs…¤gж뼪º³Å‹¢¬(áF`ˆDwâ<×ÍÂëNC(¦µ‘î}Ë\¾‚³©\õ+(ÓŠ•kQÛr èN­óø»—º §ýõe?] cR2ðù9RQþªÃÞx…D±(ø†lDÊIND‘ɵ޲_¦btÔ‡Ù-Í€Sñ7ûü {™›)¡x~"ÖpÊ›Põ|“Tbi®eí*Ó–V/Þȶ.^ØÝw‹+uGÅH¸ÐKgU®›’Ö©\ûælQ¶ :¾3õó£ßç#%×ñmJ÷zMǺ›ZÊKÝž-ÝZtÚ¼IXȇn·ª—¼=Œ/Õ±/½sg™MmÓ& £°0gk-§ÿ1µ³úÇúÓW’曳¢Ê7öW/ } +etý3ï‡bV1õ ücS™nšÿ5!_ƦõXበ6-‡ûµq§8âVù×%Ù웸|PäˆÀ¦¼RU Øç„o;µlk>~²'N”w…€êô¼‰dwl•€.­Þ÷ǵƒØÕ; å^~XqaØ8¸›ýè¾×M_ÂÜvÜV+·9ä(úC‘ÐÕߊ“%ÌËé,#ö"pד‰K«„©õËÞô“#H茣Ǥ¾ºj.!^¦Ìâ ¢x59„àq€f¬·GÁ®&iaÚ¼š Q)yfÃS»èx/ÌÒ:¯ÐEßž´æ¾—86¡l¯Ýâ²3(mº$ÒˆsÀެçx¼iaãY p ªÀÂÌÛCº3(K£óŽCžv+s«»Lð¨ Æn¦J'ðx-ª 5wî¼ñQ:²©÷¨ÔvãÆ¦¦­Uîˆy«„à i÷r€CM]ÂOØ¢¨ Ñ€®çª4šÚ‘uõ»»~ù®C­™Kc驃±B'$ p°<–7òÃ>¤k"0˜2;®Y2.ŸlqYD–+ÄÄ柳ÂÔ¡ú{â$ÞÛ•x’šÀðD’ùW×ç¤`è¥ ?¨RG @z£´…2ÑZÁ¨¦Ñ‰ýfÍ7GìÓz+( s*lë|­(€èé@¾j™”©çL[%pç*Ì•;©Ö|’å=á$iNà9+K|oYÊÓp¦RQ†)åZ"g¾#E税³ëjR%§ª½5À©S’¨%§…Ý2ñ§©Þ{ªÐŸpÔ]3ÁÍ4­º€Án|Àʃ• ×cs*gW°œX´D±ª#êüä/Wcé$•Їm(aY¬>·)‰ýË'÷PäÛÙ™¤Ïìæ©#Wô帕"zn¨Ý\”NT¥¨x“—6cÙKËE»u~4ðºÊ’¤ÁV_¢ŠÔï½›ÍU7óÝ(‰’@2µôÙ_ Qv„þ×üEO,As#7]µÀâs)_Ž¡ß=JW’;9ñä¡fµ©NÉ>”/?‡m¦ýÊ}ã%ŒsWYЮ‡RÊY­ãSM5?Uñm~öV¡KÑXå-ç}Ÿ@Ò™ípdÎ3‰d7aëÖbàá•DÝ…öx±~ÖóÑç ÙŠÎv¶â­/wËC¬«ÈM¦/â°âÚ NÉÏUÖÓ\Ì=Œ‡m   Uðq' Nææ7®êî:$P"ŸW:U׫]³¡çˆöGY5»ŠZÐ%ïX›K™™§ÎºÄÀ5v$‡Ò®*±øØå3,CJrá$ÔM”ÐÕµ˜üà ӥ/mЇuÏÖ§ga1Ä}Ž]±%*Š!Šû·â”ë‘}W­Ë<% ·ô.cÓð¾dµðU¾ÖL* ,G¢Õñ}ëf•t’ìÂÆ#¦¹ÍPªÜnØ£: š ÇB£d`SnGøÈ  væ´pãO›y•ÜC½ùK¢ÕT„å ä¶K’ûò6U›"y;oÞO„%V¥«ÚWu×ÖiÏkâI[àª\ªÝÖš¬é]6Ѐò?™¨•’‰ÁPsLoo°øGM·ƒ?zc‹ãDqÖ(kÓl)4’ÙU~VÐÝqHsµ;il³`iDÁ¤»«‚Q*Zæƒð¹©‹Èò½- ÚG½@ÆTKÀB0âM¤m'o-w›œXp(WMzO]_¡ç"ƒFýGÉsD¤Ö´\’‘'WC0¥Î8ƒ&OY´-/{Þ;±DZ²Ö±òGNÙ_Nä ®î¹‚ºOÔ×ûߦ·ôT,D6¢óÿs©ÿõC]’ÒåéµÏü,‚€G×ë™.í‰Âå«8«ªç¶+¶ÄkIÕªŒN¢9àÂJc µ˜t—VîÖ!ŠK”²µëÓ|ÊÉ:qEmÄeg»)ûÐ%I9 >âLëèB‘Kþ±ò€)¤€Ø+ŠGЪš‘×å'PG¥­kÒ¿@nœ_”Q‡¦`C^M&J\ ^iãJî“?d®fålÁ4Di}â€BìÒ¬ä­Sþœ¢SâÈD]cØ ¯š„ÜËÍQ¥Ø>.ÇK2𗣯SlÌÑ`ÉXZRQK†f ÔÕLFÕM­MDÕ‚ë'ù)@Q¦Â)‘@–e³ßôsfÕU+»mhj`¥¨xëî‘‹ÎÍCo{6P{ê™g9…´¡h¼ËA„µóX¤¨®Ìø©½?ìÈ3¹‚í¡£LºäýEU÷™5²£Go·¶9i=•åä5uµÁ‰&Z ©BB4¾ºÚ“ªäŽË'ÇŸfoÝE=ÿBér¥æ ²×ú\aèH²ó¹{1‘^so‰‚€|Ö¸•­<Óø¾Q¼WýBÁs;ų‹´ ž©œ§èå£.LÓ@f>§GÍÛôM¾75*ñ#rÍúÑJ^—Æ›ô*ÙÌz5€(k“>µ`øGYZ}£¹…:5±;Š€¬=‚ÚWAË¿G Ò:å›d £uõ9†NꛞDåX´õ»÷%ég_GYU 4”¥ÀâõŸb(Ù‡pCÄ»N±›*¹ŒK:ÒZ­Åó–© ³ÇŠ´;º´ìÌÒ<¦‚I’66}Gº‚vGY”ûÔh —z ]ð¬wš$À_Eþƒ]'ºýÆÃ‘Œ½Û­’+·âtEå{r¹æš¬¹þ–ª*)òÞom¬T¡L¤€ äP5¢ŽPý.<àLu±ÙMà è ÍøÌDE¿´J€\×MzÜ7e5ãÐäˆ`åé‘bñ§ÆKci7@fžÀs+ËNyv÷çìê¶mßaÒä°óšªj”JE* –1û”¼¸Cø=WPP(f^'70w~‚m£ 'BnÏ€ö©¾ÀTe›ÏÒ%š”DzË9ª²©*äì[R¬!É!`i©3=à¾É,rרÊì)rOuLÒAHåj‹U–艼œx#V{:~[´«¨q”ª³†ª\vá#yË .ÉXJå°”žxæÆç’þ/…F‰KúÙÕx‰kfˆ§>64%l'O“Ú(œã”½¯Î´¬QcàÇñ€ÕùMQäLÄŠ%B,£b±®”;è}pOÚÖIrrLH™N2W2ÅL07•ÇÁŸ¡Ñ!’Ò¬žJ¡è¶ÍsžÐV»„NÆ=›yx4 ¦Þ-b~lÊQegöµ¾˜aëU"öP'w"劜X*kVÑáIEtd 8îI[WðßÚ<,áz u£ÊJm²j9U‰t3êyx]”èAÎb½HÏíÄ-â•"BÉ&Vê5ã.ÜÔI*!vUšҠ@÷ {4\ž˜ž+èÂ>Ф…û©ëp| E…U¥ëŠ<¦ËÎ]α‹Ôž×L†Â2j¤ r½¦H#ï¤÷(A‚XÉïN ›JOV™€°‘hÉqZé9rGåGùQ”0¢:é—»1h2H´€LŠI)Ĉð³`]j ˆ51g¯Sâö¦Ñq“j¤\éÑâ&aŸ=vw§©XÉÓÊ ˆTöYUù¯‡®Ù·G7º€ZáQbo|pL\¥×u9ž‘vY'.ð©C~,í ¼ñ@éÉW˜[ Er‹Úß½ñ9%³<  ““»¾w'%R'%óº†]¹9pBxÙ”Ž‡Ç8zHÂeQuùNì9;™¤ë³¾–“êƒÚ§ÄÃ9õ©*ÊŸ€A¦‚rß%³ñ<ÙéŠ~·@Ò¤€8Ÿä¼:"õ8w)ÆUo¸i3T;¢Õg¨Áî²H®°† ÚRÙŽlû¹Nµ@ªMe¤èКuªm«‡Ë+ºG‰×ù\Kʬ¤[IöxX§!»sš[æVvÅ‹ ZÉãÖžwu.ùÒ d85°òÙ¥He¯k»<í*Ïn“P'f¥–U•?£CŠJ:ÃétÙ-Åü/2«F‰]±±â=­Ó8¯jþRæÝÜN†6çó/ ó.Lë§xÕQÙ¬ :eÖÆ¦­í ¶¢<´ z9úÙÚNݤ©¶¢ÓÊY^ut–Ã0²k™ ­´'솋|¨»g$GÝKÖLß;nÔ#—§?MèÅRXê.5Š]üYÎMÎïèsÏÕ¦‹îpÞ³YjkIí¤“O§…|RmIå=²·¬që/SzZËàªRèy«K¢x;îèž-Q½5íÜkbÝ;A7Õ´Añ¿±÷o˺,Éu&vŸOQ/ Û‘‡Œ¼Œ£Ž-ɪ)©¥;4Q . lv?½¾/ˆ½ÁH°¬)‘@fŽ֚óÿóá>Ücø`ª%ˆ G±!•è5iL›á`ž‘ ¬4ž·N»IYXB֖Īû!ëýCdxmÒY?jTNMÒ{|´ÖÖ·÷¹YI·Àr+Ü VY@±ê@àjÝ‘eϹkV’ƒ=Ô@Ìž®Ú¨êRÆõ‘½ˆ_õ)GYÚþŽGI§‡¼dè9s£ùv„z£—àU•'V¢ÇúGp6ü :PŠ”ŸÇãlçäúÔ¨ßÛfq§˜©ÛtÊŽûj¶ÀD#O™î"§Œ´Ì—¨ ¤ãÕaÃ/ø¹,gèæ§â®2ÑA‚¼Þ2¶ «cÓëHW~ª²i&-ÈB–nûHíX5±Ž¹yöˆ‚å ®­ßR™ÞÆ/Z<ÉŠPòάto_EÚ›‹+8É èd7&à>aV‰XÝgUÓtTh¨N ™‚Í¢÷ŒÁÝÔ"+™0%°©$úpñ>ƒ%%ùõâáë¸q‹SBÅ7UI|’ûí èžËüJÓ§Š´À÷Ø×ùlmQ“ì„¡ì¯Vªt‹²mÓñ;¾Ì=x³dF2Á%'  ‰™µÊº5gñÞüœÃ:K-•KÏp¿t]MË üÇ „Ð=´+·½ÐY¼õ[Q úè|¿žä¯¸Ó4±Ï™Þ3Ÿ¨£&Ët±Œ‰ Úvd²QŠÍÖ­Å•qœœ æ¡§5>×!~ÿ‡Ë™V´Í†ÏÐ<–JêŽÐø(8X¹|SŽa§õ‹°\g /‹Ÿ%10{YºOMAm^©}e~°®·lfb¸†I“_FtNìù˜7:"Æ%Æ <§T RžpuPŽÍs$;ÓàŒšIŽKÁ3g:tW·îžþÓ ;ÅxÁŸ2æŸxŒ´£*Ž’ƒ=³SN„"÷¹, Éà ?tô©˜‹BØŽo’a)N%¤iyKV†ì; ±QïKòÔ§Èœ÷æ …ÝÓ¥B½WÄ *Ð$Zg: %iY¶¿fZÏ^~5WU©”gÞþb¹½oئš¿5 ÕãÆÌÍ˳&)­øÃ«Ë© ˆ"¥‚‹µ”WÀÃ3Y¾]§zûè:ˆ÷iáÕG‘¤]±d^Û­e_^yFN“C3TŸ[I'h£ øsý9.ú‘û³ý;2µókÉÙ­‹½$6°;?õÝVWù¶ZšZMmµ"ueNÔ4àŽyÍôkýsÚ­)ÅöÉ­¯d®—¸v+ó«ý6Y"îhD#EêvNм^­xÙC‰kyz‡ãuàåâŒôY•&Xù¡»ê|“¦ðžâ︮xì¦YúúdpålGÇ©ÙFõÑ%LPÌÛ»©%È‚[_!»åQýßö'Ì'¥ôu©ñž’ÌH"ú-Ã)3€£¬"ß󯦋‰} œ~ù«Í‰ ÈÑD¸”B™¾Ž(\è”PRO²®÷«Ú·%÷_“g)RA‰¬SiþErrø¢Ç¼5ÈÉ…¸(G¦•{Ô3˜×ˆ|Éœ QCz‚n‡„‹ÞŠy^o—iŸüÅ«´˜T…:çuŽªëQÇd›TÇØ ¬ÅGùJŠ{`?™Ä)ç÷‡I /¼¤ðÈ¥gòÖé<Ú0­*àhÅVT¯!ê>\¤®ß¼Ù3"úõ…‘ªu^êK64†â²åå$ꑟc.[÷m}†4^¢TÈéXŠj®Ã-TÖê1ª|Žš1ëeó8Hÿo“:µ@ûP§àüJͿʻU¢wð ä˜dvë5{ '?j:¦›ÔxDôìs/Ò-ǧ(¼jãµñƒ°žG7WDùtA³¦i¥[ß±d{›ûNµfCˆ%¬±úT’xÝyÖ8ž)”˧™©'J,Ug¿ë¨( ÉÊ–ï¡ÖR­]ä±¥9Âî‚@е‡õ5á­7ŒÆ‰’öWQšEV¢ûÞ–¬_õõòXÔ}!½Ú¼$ªÊ(bx>ñsBSGirÕ¼Mùî°CÞ¯3‹ÔLR¶«6I¦+5@ò ?VÊ“RÒå ½C­b'†7›n×Míl+Q!öÂãˆ×ëŠÖÅŠÛ Ž1Ásµ²´(å>(Nµó]d`à‘WÚ#­~Ë#æ©Vá¡Zâ$6YÿëœkÐ.ÁFBãõƒÿ(Wÿiöª@G»=ßáñ (Nt O¦!Ë‹"p²DEr¥˜ç3_Ê餛…ñžAW>®kz ÖSAõÏpA‘J8x´d×lÒN– =9£óÊÌÎëP‡Ú‘Û7hÄKd´^ŒPZ¦ÙÖ¯v;¨¥s¸”°HŽcQt;E\¸E™ü?7n.•mr^Gò Ã6‹­ì©¦#ŽHìcÇ5X!Ü Á©‹Éƒ‹ìTÇ*@ÛË^‰ÒáûâÈ8מ«¿òrIgÑ^o†Êˬ2ßÏ’*A-¤>ï$wx¤Š®Æ€qi*wN›–¢KQGÔ·Bä ªÃwè‡9õI\ŽdïÕIÙ7øô¾/YÝ„©[ =ã´eoòeZÑ„³©™Îù–ÔÄm»WßÉ×ݘ“ÎRqY4DxpÛÎqÎr;®Ê» y‰ÕEfãq×`[ ÃE}ñZ[Žžó—ÚþÃŽürÓÞû™Ô/ߦޚÌR4¬ùÆ2¨@ÄŸGã8±),Ëy Ÿ·KêÈÖ]UYeðE¾Yl¬@UvUÒ5€{õ­wìÏã›p»'$X}Ÿì÷ïäv‰U[yÔDèêžé8÷|6'“β\ÈcHKh²S©%pñóV忚„gbhô´ºL% »â¯îPæç;¨££ ¾aêÕæÖ-„ïð¤UïÅvéꇼD­˜ˆ²Ûo]¤ep0þÎ.ˆ½šXa—K¢àÉ9…·/žÝV´‚:ŽY¥ns±¼ŠÇõʉø¬À¤•” Öõz Ë"0Tuü$âA,\a‰ßù˜1'‡ëFäeÛÛ<§†€¼ÖÛ3SÐ4QåÒˆÅNÎêEš#ížY”BŠnêñPã6Wr]±¼Ùhß>­69š‰ÙؤɆ“Á$:VÊCéxfÏœjp“¼`Ìt;l¨ï\îŽÁ³‰¯¥ãÎÎÅ)Ä–÷+ ÿi®bÓWÏhɺÄy¡K÷é}op¢‚ 2È]ôÊíëËgU@” ±Ê1#+ÖZÈž7_`Ûç§Êñ¼4©óл4ëÚQ‰™ùþÿܯ´¨âr¦YXKœÕ®0ÛÙö´Iº|ð¤;iäZM&ÊÖ9ìJ6—äeã*QÉÔ5=¡NE9þeQpìn¾+êγd>Uên@²ƒÅûaé–w{äåÜõ ÞPP ¬eµ_[µqG,š&KN‡QؽCGB%~!Üc@%¦Ù®å<É”)*zòÅ#Øs;œäòñ`9ÛWR6@øÖ_Ò1YN-iO'ÂyMŠQ"ú­.ÎCݬ‘Ž êô `ƒ|J©GÊ[‚€¢ž3›$hm3ïKé ¹à!)ÒâÉë÷EíU¢gCßp² žUŠ®öÖÔÀÓÙï–íÄÂíÇÖ$î7\ýž,î-RžgíÝ·}íª^DýiŠSÅ7Åj 'é3“‡³Ë„H¢ÆI¬ÈfšŸ£Žrž©fµN³ÞFè¬õQ/9Á þ\p– òQþƒ{ŸÓä¦èSsŒ/pˆ­T’¤,êS'1FvnN{Sê–%•ÉIN ¸åÿÉÕž«yY]NýI* cu÷ö>ºJÇþhŸPHVDãµ ¼ˆ—D˜C5öU^pÅt2/OçղŒ*Èõ~ª?­#yÅwÆ÷~’ÝE¤»ç&¼Q¾4!D6AÄ|úUs¹Õ<½W9%‰T‘lh•ß ª»“†ç“§Îw|—]©éEU§N?§—%u–ÇÚw¹¤µòxEÏ`*'gʈ]óT­øØÚ%f¹gbÀÉ’áÕcÇîѺnÞ¨Rî3'?ôl¿egªe v“ ŒbÑzðÑ/b+|>îÕãÙ9U‚…ê_5ØwÓz/?Ò6­ ›$=§Ó-+Ž;†ø«$&6Jy[¬{…s¨^n?M3 Ä%k›àqµBô~ܰÆëúš÷ú›ËŠšd9Ê9(-3Q§×5«PȈѳý½ì'z§U½B@–',2e3&ƒ¨°µ¨hv¥oå×>›õªŽ™ ` N1eà^âÛ žW2Ñ/dyi¼Qõl^O¿å¾s:¤î±Dáy5íOõR‡ˆ°s³ÌTd"hDjÝ+Oñxp§¡Q¶9O6ýV³ãsjǪ¡‰ž5¤í/ê-cŒ8»´êfãKšÊ$y,bÖ©†JCÄ7ÖPÈ ĺ“˜¶ì öc«›·ÃûÒ¤zg)Š|?‹:ë*yTÎñß—‡ÙÚÇêX ÊY·v°€ YƒRzÒñÜœóƒÓàè”áoK¯¿<Õ1r»l‰ÎÑÓ.Ž÷¶|ì–`y`Ñ—”©màlR_ץ؊åœJÇ#)éw áÞ);‹ÆŸ§zé›zV¼ä Ç´TßœÀÊ÷wÎGß#<òY /žÅ£BÚéjK0ÝÆ6õ‰Â¢2WRÌ.§uœ'‘ÕáTœ’PT5äò[%¢»Gx̪íIÝT»Eƒ% R{áLº=2"— §ÖA¤fNjÅ&w¼ålA— 1aúB”.QÄñòñs(¼©.ËÐIÝûv(Ò û("ªð¨paö6c¹ ^£GGÔ’ò “Ê´,þ—~6`á'I¹`Ÿ@Ìa (]•c‡ò·Ö,AˆüÎ_»ïGñ£ö>ÇoKït«໺0ZË’‡Ü–ÿlx×[8!Ö£¡Î­{¸ó埧”C=Kš»˜ÇŸøb麕•úªNâW*#S{,ëfT‚r€¢Ñ¦{ Ül(:f9_Ê>€÷ËÚâ£=¬žZ–³)TDf…›¥ìâm#l­×æð~ŒÊ÷9^^]_s¹¨ ¼‡YK}‘Á¨ä3RL¤œIÇã¨ò½žÎçpŒ–‰šAÕáfI6ó×Ñsº®c¥ã€%e»â ͆—$·×)`OOKµMRdaP´ ¯àøm¤µ¥öÐÕ+&uËÒªºki(xoŸÖàd@7/ƒ%à ” ;¿¾ éYÇSIâîHƒ\Mœæ»ÁÐD»‹å}YêëtícV£€èEþ9–å¨û°—C÷KÓcÜA’Ñ€¯~—Â¥,vå™ÇÞzNs­@Iì¢Ú¯$eL¦a¥~ŽŠ°·œÉ¶9»óŠ"÷êïD™?yǪÈ<ê²&oõ¨°²BVÆDn X[¯qnRY\‰p2CïœIÁ°À¡A€¤H‰™ärG}oŸ›ÐÔä€pÇôò#¬?žByhR’¢“3Û-Ý$Àüç AÓ‰O‚´ƒ.¼ã1¾§Ú¡ AÔëÓûKS àjñ|Œ4䌶mVòÂÇ»&:I®Ù E(µPå+º¿ã"é à†sÐ8›w(Krx’éè” €¨7$òÓ°FsÑM]3y§([¤dITƒœ|ße~ëv¿x@f7Õ÷”ÚpðDN~Œó±oW*K™(Ê5(,©X›6Ö¯û©Ÿ3Á✓œ x_Ü„wðmÉòx¯5ί\Þ×3ÖÛüç,ØçñÒ™|Oà÷½„`‡½;ÔÑ»óáŒ7}Í—B]U£W%"–:á›´1 "ÑcQ‡c€XU}rô+éÜÛ>j‰ÞÇÒ÷ÒòQ^ÏIDžuy”"å]rñ:Ws[¤Ž×™»Â‹P/üò:ž éÛcÓ û‰]+¬ã7ÕÊȤ-…‘€È)WJ/RNWäâGÚ¡Y« !‹zŸ™2’î™KÏ_7QS?â¢H7·mô*›i¼ <,R;ÕêbuPÝ5­Á"Ú|;ꢴy´±dwç²Ü—äàI!È©‡¥Uô’f¿©Éý9]¹ úÔ0b»õEJ#Ùw»‡¯|e¾pët„êoÎ×Þ3KÕУüy•O½ÖW¸d6 <{M զןÔJÅvËÔUL˜Pª2¹%HrÛÜýÖÀÖ8ö5 ðšö1 ¼lµV Y5¾P"èÔÜpº²,@é[UQIGLq>îi)ª5®—½)»úp?B5+NꤳX{t%1ØgÀ´µŒ»sÝ*GÕÓW³¸¬¸OdÉè~Ä®–©\7§]T“êZB±D3[(ztòc f¾W§dw¨tÝJˆÛ–ùÿab]A·%Ý!˜}Zž¹T)Tï*ÊPq(Љ†/8!ÕZ ò•v¬Š‚«ùÛgñÜ&ž®ÇTÏZ’^°—]êµ|ëkߣ@àV¦ëdÑòx^å·åX¤ªDÁz$óÞÊh 2äÓ‡Òk—3M*íp¬!”YN„È­“QUAóçcïhêq½¦§Ö[N司x©ùÅàí°Þ\&äÙVÉ™L&بjI´¶ÃbG%ÞŸ71ç~®³üYo8+ hx%S:ZŠÜdÏ<Š'³ÓÇë|²É[ûgËK‹ëvôÓP!1 È,¾\ó@õ³vN½‘šb¥ö÷äÅ’dÊt ræsÌ®ÓÇC8\úsñÔ ¼ª¬ÔH å5î\â™û~ö¡°xnÁƒcq ±>¿S»CvžHú¹Âd®ñ©ïQS(öC­v«H$KKb§LFÝîñ­‹,Áï0H_d)Fş쬴>MÜh²7¼³*hNJy¬:<,Ÿ²U2VàtÑH*Óé!Ðú¸+o¡3Ḝ]–-LêÖ/å-¨†ØUÀŽEÍV–Dqpôa{¨÷ú.í¨XèÅg+ !åLâ‹xÖs¬¼k¤ð‚0:7ƨ¼µvbö Ès&¹zfHf^S$—ë JÌŸmöÏÎýrüŽÇÂ’qÖ-+ÿéí÷Š%È2—Òæ|†’Tï=H™‰Ü‰„KÅáôjŽPd]&ºìàÏYyG…gMïUL—ÑsÚ Ð©ü4ËEý?u@¤aMeŽümý&áÒãå>¤v+›ä c9F)(–hf}ÔfsðY•¥Ø¦!´Èƒ©~zGÕV®ítŸ2’Ÿ§Ñ Ý$–ÐÔ…$gŸ>1žCve­%p-˜ˆ«\õz¤fYIÍ£¶©^ËGJÍ÷öP°$¢ëjŒx+K‹€IÂ-ž„½}PÚñW2õ–Žñ[9̲ že_M²î×ù äöïðMÏÝ®-{vË8Q=¬Òø«ƒ±îÀ“ Î2{ïØ† O3ÉzН©U›B(‡ƒ ((çL[…œþ‰>†ÌÞè`OÏÉ‹ÀÚÛ=«ÖëÕ¸,Û­‘%¯q;Oàq¹ïXIfûMömôjéÀvöÑzØß?ðG0eV㋜љƒS êð)ZÏËô•|?²#ñžGJ"º?α_*é§ãkdU_VohÃiísÄ"{×¾³’¯‡ŠF1ò‘ØvTÿå¹ÁʺÁŒÓèZ *¤ÂS|çéI+ꬢe<¸#TŠǹù’E‰×[Uz½O¸îÅ‘h˜» × P¹I §²9ã9ïÒöÊã÷÷’rµ Qv:lô*•[3 ŽðÇbd‘ Ù®M‡£ÈJO?Xðþ®ã""£SAˆp›Ù– ˆD¦I y.m”uëÏLÖÒ“4Ìj¹UŽ~€‘79¨Å"(w¢$0*åS#ð!w–ù>Vtcg±še˜k|t— Üÿ€[o7ñò'¾Š7Çí+Òãõ`H%s¶›ÈNäe7ŠXë*N‡›±H†üßh7›ý{£ªÐßѺs0ô˜+°ÑŒ|Šˆi²º©Œ#¥ªôÞýC7æQuõ6$ëAèZdìvÀ$<¨3yÌ”)Üòå´ä ˆ#T¹JIé·æ¤…%Í{§rÆ=¡n•¤ÃGy í¥wëÒ›öõPKäRyC] eEoWS‘5é ¿n°ÜÝZ|Þ Š”%ê°öPE¾ëç[Ø;-7 žr ÌSÚ‘¦2%‘Oª*?½Ô¬`è`oÍ|–ÀN`–ÓM+Ë„<¿OæF©ò] K!òÀô£äÜéÚQ!0Tö¡©¢r«„¾4MÌ<ñþÔÓ9ShŸ}ºœèp VºÎÙ¿*ô¤Ö厘|tS ¿ $»yæBd5gjßâ0kô¢p¥ˆ¼5úQôÅÚFKä¤ùNvؤ¸³ƒÝè ò¹³PØüjèo>€ÿl”‹ g¦x§´Ê“ÚSéã8ðf‹ÝÑ´N°6>b"Û†ÍEé&!bjFÁæ€MÓ†G ÏsR!S/!6&å½R„Gö8Lõ‡ˆ'õ ‡þ¬Šýдí>U.·e_¼ìhe¨Í©ª+Þ‹/x!*ž?‹ïmÙjëŽã¨¦èüý½ 2‘”Y$gœ-ì”` *^ø‘žž+Ý"v€’*cT$Z™°(¼FP2%cÐ^tz‡ ¾‘º—Øt=å°E¥ƒû&B)xP¢X5Xxp#K÷VHE¯.* Ögsr™¨ìy*Ðñ}>OuäèZf$¹|·NÉ¥’çcD éÙ¤y êÒGóKP£¿²eE¯ýn|Úy¤¥ƒ1Î <ò£ƒ6šGƒÖ7 •ÄèNà’ôz%þØnáSXEdOÿÎcÞç †èŽÌ7¢¨ÚTú¯Zx†ö˪Ž[ú¨+ƒ©Aå<ò£¤´qÄ%Ùnê†ñ·WõL8Ë‹º¿[Ñ6%M^ê²ÝM!Lªû÷s–Úv‘‚=Siªp,®ÚEBó ?bf8òW1i(8åBR71¿$:áfÿTÔ¾†JÔ÷ýRB±Æ¡»”“fdº`JQ?O­_clˆUD±ù…&fvNÆIÌ®….é]9Ÿöþ`oM͇ƒ&OÓföÓœ˜úÄœ²Ë6ÎTRM%GoÀj«Ói&Þ2°l¨¤Éº¼›úTM[·u÷,ñ”¤^Í0‘ÅnÁÙrÅ·AÛÔW\Ø]A¥A¥Zj4òw?ÒÈËÌQUÖg‹¹Ú“uH¯:jºT“r*ßtút4tFÔx‰«8¿Õëm‡¯å¿ŽÎ»?¶MåÀ´z;#€’ÊXrŸ-óCüÕÔ\×„/L×f3ÑÚ@Ñl™|'—úƒ£Gçô¥ÅtŒW ;^Ï3ݾúeRŠÎ€ÝàX2‘¨5 ׉Ǔèwß ©¥<Ò^é)9hÝʾԔâÁõ ÐTóUë L¬‚avÚ}ìU4“+YŽ€æÐ‰Nw`‚¸2é$¨ qp7\º„-VöÒMI÷Àð˜;¬€ÊsF¥ |×!ó§‡ÜdË‘l'ÓÈ–Ôv*Ô:ÎTÚKX½:–-Xüþêft‘?…¶‡“›A{ª°}™'@˜U~E¡•Ô1!\ Ôœ„È2ÌXÜQ!’çGs0 H&ç±Þc_¤X)*úªQη“[«Óׇ¨g»•²ÒÁªþkÞ@Ð [vAÙŽuKù¢onIåŠ7®úº*à±Îb/U³1E:2ÿ‘Ôõ® »ü™2K Ò#s›‡« ÜáÂùãå~;®âzÚÈï+ùSæ‘;!^[øRTáPyßîö}¾]#0%a+K"ÿtÈqDeêEN‰.ê_ÞšÚÚJ2j4Cù½'/9­[ÕâO”‰úHBV’èbFÒØW ¿B ¼mxÜ €øÏsÙü×0O½ .y95RÚ”üêqoP»Ñš@àd±#ÔZ¶µ+k¼y¤5ýz@[ºOt€#O…fÝŠù Çsdó'Q˜¤, Xçõ‰ˆ¥º3Eýë1yL!`¨Ue÷ÒÄOZuð¦œÓj8µØ¾Ï>Â#aÎÑ,¶¢NYšÚÞ‡Ãz\Rdˆ«›G¬Ž6PÁ¨ã¨X ÆŠ¼yžÔdö«ÎãË7v,‰•âñœVdíÚ×®DÐÓÓeeÇm²e€ýÄÎĦ²ÎJâ;ŸçЪH¨üñ†*o&¶3àw¥¡¼®e›È ŸT®C’8ÕÙ _$ØíHž&®¥è¼)ÎâÛÚ¸ —ÛfиDÂñé#½Z9Vj¨*æ•þ(3Ì#·Ö —<ž‹UýCþÿ&•>‰•À ­–ãmCŽ:°®HŸNƼ1~ÉóX•°Øá NôQ%‡Ôþ­ì ¡B£L]2;÷®Oƒ~Fö¡æsl©ûa“Õ.'<© oP]û€ªrLÒwE¹àá¨]5ÂFO!â}b —§f1¥ƒ%s¡f=fj5ï­Æü'LÒçe/æ§àpw© ê sKCSž¥ì6‘ËÍâ~­7ʪQÖühÛ%ë €œô ÅdÐüTí‹kʬ#™æ²úá‘>°–ޤù(³.=9±Nê©Ãÿ9YK4ºt̉*ìTÞ& XS<í §úcž/¼•Hý¼QàœChù=Δ/%"Å'pø>ˆ\§®Ìò±ï§‰¤þÜãTü}8‹’Rýë¢b¦þ+.7ºgÇ“åOYDVKkμ)Ô’Õ+ ðšN}o#ÈÕAëïÐB˜Ëõ{|Áƒêb©û«ŽVOÝ#"–mJ0¿øÄª¹(уO/µ½¡"QZž¶I$N ¸¼õÿ@Q…Øm‹¶Âæð?¦âFÚ\¼òùLJ!Š©âoóNƒjº+ªþ˜ @q€åUNo•ZÃ\´gŸÒ5H˜Í…RÎu¼ÒC 'IyVrÄqâR{j¤ÁœöYã u®ön^6AR´ÿ§ÑÊl ;&›×•qï•5×oÙ¦“SÀ0§Gnnë;FÆŠ}hOýðä©{ô~¼JíæòÙÎMWUz`}R(ýš¼¢Q·â–CH_?TÈ÷S)Ù Ò#5Ó}-ƒªé÷ËPOÑã–¦•bN[†<&ªñvbxŸM¿eD¹ÃG8-è_GrÉ)êej Ô?Á”l@ÉÕü§$F#àöÎ/\¡«÷ýÉ´Vš¢Ç@2u=ŠÁêPa‘­P«EF@÷ÖDãÖz›…¤pzŒQ®éÙ>û_oAåLJ¹Át®EAˆøç´ »–RFáÇ|µ¥ó:2 'ç+wk[°}S‡jzÛ9c½/}ný´»*"–K¾·63 ÆW‘Ê÷í€ (ý>;OÀ|ñôØù¨»‰FY%{µç²áwlfÖ÷H\ÞÊd>=G Öj)iþp°tŠùn±¹ý™×R×3W äô7–ÇÙŽ²•”I÷ZZ=SÿÒ·¤¤{‰ e³¾«,׫Œ6N=R½ÍÚˆð¿¿bAG­Zu^¦¤¨Ø>ÑmèÌB"ÎwEÏ£Î<”÷ä˜ßGÅ<´Ó\ž#Íî샯éÓi¹+ÑÕ`tVŒ|éR¿Vw32LkÄûcÜ«zÍd/¢®J‚ÉyèØc‹ÍD(³†««‡MSŽ>&kÞT ¹êýé×ÁžêðUÜ >Ä倄Øìã³zv8ß1‘¤ÛU Õ,µ!‹Ø«Ëš‚Csz6}ib°3F0~›%»è?³Ê‚+¸Ìß‚i´½‰XN8RàÞGoåÓFÏiþ×–6¥ ¸ð‘$!é=fÐÉ¡PZH¬îºû(h1SØeÀ¸à±\œZÛG‰¨,ËH[ûêù7«ã°†« AŠn]Þ«/žó¨Á@)àŸ­ùˆÉÎç 媞ñ:7,¡üçý}ÚIÕ¶UqX[ð‡n6Û)<™ª´<º5M¥<š‚‹l¦ÛÑJ…‰SUx§l'„™ì¶´á7›¹³ÈÑ""«È.Ó;ù²[gñVOgyhIJv¥RGX°>£X•¸§´b·ÛK¥ö:ŠœzV9Ut‘±”K©yFj~½måOýSiäUÍ¢½6XlD}XP_A.•ÕTÐQ“_pø¦b»RDujª ØmÇ÷›¨¡Ž®Ö–ùS·ðÑi÷Î:(õDzTº|4@0¾ªçÜTäy‡ä)ÈÈüåK!UIY±‡Õ´}ä!¨)ÇØ,ne¦Ñc.-6¸Î ÎQªÇ¢àO».T¼Cñ2R4Ó[R‚$ÀØ—Â cr •õüé¹Á‰áå-+£ñÚZâk(*º-|k-Í«ÔN5;IPAÅRǃµ(±¿ÕUxâ)’ðY„e;›(¤¡ò£b]'Lãý«Æ·Bõ5ª%ÏlzPÇšÏhŽ­±šD›R_ ´ös—wK+u2¿rÝ.ŠÏVsüÆÏŽušz²‘1¢ú:ƒ#;Ë£ƒèó² ”[ùÚYMЄÐe#\‚ç–Þ@ªª¢V‚g$0‚™N´Î­j1\’B- öGE Õë¡Ý–%øÞ‘QÞ°3*¾Ábh2Ãl4O[¬”¶ÓÖ8—¥®ÁtN‹§}”·ÔÿN:®ê>ÍÖ ‹8©“üŠš¯*ø»Ú>x<ý~ µŠG<: ƒ•¹[°5EÚ]—²- ¦jêÃn°ÑûõÚv½2uãð þ;Z]‰b`®® vÏy°Ý;™O· àëê&VÆÂÅeá£y%‘‚†Ÿ©gÞrJI³]Y ê]=¹Ÿšj%¯¹Ãý¾ã:ünj{bò<‘åúµn0翤äÎÛÞ$1Iåi ¤êŽ6Þ”¾”YÊÇ#(‘-®Ä6E†Œv+ä4™@*‡ÙDÞ­ ‰b(º¬pµŠ¤‘ˆYÀa=^©^¹TBh`寞oIùdSi—)šÊÕ^b›ÖN±eÃó“í WX{-é=îÝ~Yªz|æ98hÞzéøJÒ‘…b6Ž’dyBÊQöNi¸0ÞÅ ãH×)Ðöµ*^ö™šÈ˾ÕqÓ «.ÕO&Àkÿ©AÓÔ‹èh3›ôsé»jvçG\Îó)%ýRâ´¥”èö—!@EÈß²Îãs¶Åµ-†¾øí'Y˘ Rpèòn2øTÅÕ·uš±HׂÊ#3ìv~4L$®ñíŠEj«bO4U쓨껋“™§„”_(wötqö¥ÎÞÎî,åßú»7‹±Î׺Ў&•N‹8%/çŠ`¢$c¤tÐè(‘™L)‰*]­í›ðEXµP$¨Ê¬W@=êO»ÕwNYšñ]}/*èz)N¬ÖQ~fà%€šC#i¸Gì`e-ƒu#ªQê’ÚßÎD™‹E¶¢áw>V¹N–ç<¥ðñàˆÖ -ÛžO¶ÅŸdâÛ»bÉ—Gæç0‘ë¥Ì#ä¿`‘M9ò í§vQû¹ š§|oÒ¯µ³:¤ŸÍ–KoWÕM»­œÔ_%"¿L½=5§vKU㪲ñºc·sŒ"KGÙ'?Ú6§'²Ží·¨ú¨+êÓ4ÁRìû–ãÊ7)ç­Wѧÿùé"Xx”x¶_å°°ŠÕ]…`n¦8þ–è«Bµ&ï,PRºTÙ¦õZ¦ò¡cž’’ i¥KPÌî U4ËãXÁé—V^ˆF^Æ~ø•X‹Dž­Õ$.¬ôá)YE3'7Â];TÈN§³èx·>ÕfyJÜ5…|}¥UÜ·FŸ“Ôò³=á‰%WIA¼…ïõžrçÒÍäK,™»Ê‹ÔT|ê?9­S1î@’ñ ëçG³‡jx". PbÔª^Yµ*EI+@)dIùó”šE…ªw¤šG-êSÀ’)ªÆ]%Ë<©ak´Ð™\s Eñ‘/ÛÛ‚„ÚÙî³kÉhO“yqˆ G+ü´=t˜•­jYÊgXmm{ï3tŸì¸,R$áê:þ>EëšO?¾¯ŽMv¿5;ÐØKÿ¡ðFÔ¢@"Š0ÃÛU¸Iª^ÈýÌ‘ÇxLYñh^–´ì[ªëã,²Š¾=ªÍòÄ3OsT³­°[ÙQÕ©u»šf¬¦Nr“ÄíQyÜÊ1ýÕëÒdÌ¡'){%þ~‚û÷ð;N±ÿ‹q?ÿÀ»ÿô÷ͱÿø•’ƒìÞÚ?Iöórÿv”ýüé?}–½Æø_ß,û¹×˜ýþÕÿ†jõWùI¿Ýÿ“e?ëû?4Ëîü¯0Ìþßüæÿä¯ÿô?uœÝEñ_Ô4{*¿úéÏyö‡;Š^Ò¯~úƒ¿úGM¸ÍõÓo~ñÇçW?ýÑ/þõÓÿûÌ¿úéO~ñG>ê·¿€¿úé_ýâ|ÔŸÿ}Ãóÿ9ÆãÙ@úâi›ƒO6Ó1^ïåÈ8hNÕ=+Ô }„IÕ\ûþV¸%ö·HÏGMÿ©âþ}WµãX<§ÑûÌv _8ôºûÿÔTÔª2–@[#] “XNÇ0§z2åxUñëŒê1ó7?è^6|ÒO¥P¸­ ð+U‹¯ç•ÿ€ö® øÈ0P[Eÿ/}3)7¥c¿©½âô`õ{4ÇzRT™柬M¸<ŸNð4 컀N¿Ïân5GRwŽºÑQu?ËÝ. »€;‚ä¡OðUÊ¢í³è¸G/ŸÚ°wÏï y­³ÞŒ¼¹®·'J4¬ye(QÊ¿dyÐɆ°\ï7ˆì©%&h5TIO ÊÅ÷Œx©pì´Ñ¼‡v…êÃó)E~ú,­Y)3wè²oT£ýÔàÌŸRÑñ¢ì£"ñDtñÆ$”Vùq¡¿i| TV-ȨÍßY]xª§ÿ=®všš#G%Ⱥu™ ù¼ÎÙXÔëVݱõ7üKßŧSiHÏ÷õf±º.|Sb Ä¯ýu–“§ä[¥^¥jèÓfÊòÖ)òü¤¨Kú[KÝ‘µº4cåzœÖ5Š{zžO{>’R»ÙxúìrW[úS½Ú‘Ô™z;I°Q^3¼lu#7¨ÝÚR›PÙm”³üÇ}ß@PkP%xbá ãû„œØFÝ…R›…”s­Ek7PmÉÇW›µäxH½µ {ú°ëµÙ ,ô¥ÆžmôÀZpÞùN)ÍЯ¯'l¹œãޝ_ù4’¨Ô”°]ú'P«²ÁBdýêþ£ö~žNÑkÿõi0už‹¢Gçqýà4q ;XÞ›‚_ZÜ⇵MdPÀQíÜŸæ}ORÚM¼‹²µÈCÒ>Kn>~Ú”lúÃ&·ç1ìÐGÉ%íà §î:$¤kYGé¼¾í: áð€¤·ž†Uª^–@?â]Õ¤üb}¶ Õ0îñÜ×HŸ¡pr÷o×ìŽõR»[7ïböÐËõ”ç]þÛ÷œAšÂhì…Ç8Y$jSɪ‘n{’Æ2ÉVQ>tî»ä[åÞ4àc«zbg@éúÚÉØ}ÂsËZ:â²êÚ¨ò ZT¢y*v›v/ï”eÜôbÓÖã¹Ç I…K©ÜgøÒSÕ”ã‰ñŠU;ŽhjVÅ™$as-ëô«ÆðÉ/ÎaêÖ4Í;Äåõ•tmNÄÞöÚ“xå:vì ²s3{-^RDâ§7P.jáiXD8íR仸îeÜUªú½sUüÞWÉo*ä­I‘£/I̲>¥¶xª ô#ÃFŠM ªãϪEa¥x÷˜ûþ®[žÛhØ@—ù}Šö;…Æò"KtUS¿6÷Ðø±÷¥Hø^Ä¿­Äu¬*K/žLoÄ4^õ›µ«âKxç¿r+aŸìDc½b¾ŸåU?íЦƛ¬òd›š:6§"«*´dB-\Bû1Y# ôÑù‡g ÊùõiÁRãsk¾C:y§³iªÒ;jq¦G;K­?²ždå(¶Þê›Ò¦ßs9®ö9¦3¯c`Š\ßq(ÎG2ް°²ä¸_½b›ÇLξ¬ö«è½a—*m>?ÉÈ^Ü™ÞaBЉº]§l•s!µ9‚¯AˆÅK—c»è,“díšË¤Š¯Þ®À– N¬ÌèéÐÖ‹¨+æDb½&[ñŽ&ùDŸÂ¿:…îˆó«-ŒææÍð—•>°Ëýg´ŠŽ1„4ò^PæËE 3€ ¶òš S¹¾K²‹G, ¾K'áÊTµŽŠ×8ßÚfVÏ?}5­q˜^ŸߟŠWçüÐÚûųv'aX³_dqçQ2û‚¿ãŸúDù¯ë6Þâ™{œJÎèJ”h%\°Äw‘ƒ5‹Gúññ‰HþÊñcŽ¢Œô£éúƬä‡,eG¢§bì`Ý`ZÖõ¼ž.ð¡-S3íçe/—Jõ¼("E:^›­ò:?™9Ï֞ıñInÄfPÚ£¹sФàñÛTe!®ÈÞ””Lå1•È>èÖš‡¯ŒÌ´®vÆw—ƒmJd\k•nuŠÏT÷òœY’a•-s÷h2S¤ß/ À–;» _…|™¶ 7{I¿‘ïm¥{¬ÁƒíjAk­I¢s wwµ‡Å–”ÅÝ·ºône X3Ÿ&*¤lxç!{>˜=C*yQòh÷Õñèàt€ˆ²¨kަ ¾Rç’Š´§b¤¯=Ÿ~ö!³¶æÛ Ê+séªèÕÉ×S^<³[Y*Å^µŒq :Çš¾œ hÇG7vnúiÏ{Bf…¦¥¨R §öAÏ/jœiï>>Ž~ém"«YÎ=uPtLD{ O›ªôðÀ‹ÑsÈü«a‘ËÙ‚¼ Ü'L›Éã䢡ÓÜ"ç¨.ömHžÎäO>WW@¢ ;ø»X¯n§ëü#ØðkÇýÇ3hÞ3x[޲–@`ê¡ßƒdÝO5¬G.h"lë¦pT€(1Ø:žëbæIš&›1œ_%è‚ØC°xž$iŽ{ä‰A7”SÊË·½éÙ n¯U·Ö0™šNcÆ ð½ÁÊúþJ™¾e·v*eº†·Î hþõ[òƒª YR™5¨ZÕÃ: ”VMqt·VA\t’¯Â½Ö®ª®²t¯<6:5öàl¥òF&ÑkYïh+¶Ž%ÜçˆL¸¯hf‘éì ëfe§ð ŠéØj¸¿ž$!„š]—¯,{J1p 5=…«öyzˆî0ó1«!“ùæ(ÖãwçK…QŠXW@ß-c§fï,þaS+x7” )…}:Û;zºGN»´u'¡òd• |ùÒÕ…˜•• Ù«‚Ž7ïˆißÚW‰ÌKwŒkèŽÆEh³n¼?‚¨õézµaÉý^ƒ}k„>Ìzž8|ª?Q¸¨­’8‚ç.ïÛÑEÅÓáÑ~Ô€qÖÛFÎïqýá¿Y—]K¥këi>!6qU¼$§5X­¢nEØò»å è™K ’ãŸdÉ<ú.ÍÚXWV8åvÓUû¡ï­iBZ>,RÉ’…T¶C*æ0ìv@ÿ#Ï‘L» 5üÐoÚÕÌá{UÆEM1 8EïkSš(žqãp)þ­mVÖR0=¾ÏðÊÂ+eèÈÐn\ÃËÜÏœ‹²@Uv‰Å“ðÂ{Ò´ø‘rS×Ýó‘]¢6’Jõ™°ttCÑØê~äë²Ø¨.Ýa³²ûóÓX§TÂÀÜËãߣ:©ºÑòо{Têé£í‘©ÝE²uÆ 9•B&¡êËG¼oIm¤) »8¯,3r¹~(l.–ëÈM¾ À¬ µµä†ÊR«6"<]Ç5ÊwýÊ™©¡8b1±å³ðAWÕhŒ¢\Ušä”çð@•½Åq™g·19DÕáçw0ÖM’?0©”$ÐQ›ŠIgvC¸FáAr:™N„…#}c©å>²TË$?^â²è0g–²¬çÓ+áùH¥kÞC5&Eäý‚H©m6¤ }‚nÓÐåP$ÉÔÇdèí*eÝchŽU”AßwqD±èT÷(nç@dâUS4Ú ã Ô&w5U÷œÔþTq}2ù¨Öõ Ç@IÖ0©Ñ`ð µk€S—DÁh{¨°©ÄÚ±‹iÚ‹‡µTP¼YHt›²9iël®©±_,^¯§ÉU›ðeñA 4+ä%ÌJ‘æG›=òr:°#J$ü©àçÖ}Éžû3ÌGü  :í7²Y‹wêF5>%:(a©¤ëíp³†ãwRQ‰Ü¤Q`ȪùôZéUß?ئu@P…u (} +² 7“õ0û"ÀÅòÐÁæœNÎr"רӑ*hÓ݉p.ÃO+” ð‘h¾¨t À|‚wW/”ºSû(J¤%½“|þ×ÿ‘#÷_ÿÿñÄý¿<ùûûÕOð/¹á¿=Ý~Ò¯~ú—ÜÝoûóA{¬üÔŸþ9¯Ý-ûïþ6ù“l½Ÿ.å_ýôÇÿÓŸÿño~>;Oüêÿü›¿ø³Ÿÿ‚o$ þퟹ³ŸþêüùßY#?ýÕÿÅo~ñäÿÙ_ÿ,WŸ#ñ'ÿæ?Q~õÓó·óþê§õ'¿øš¿«”_ø…þóŸøáñóŸ¸Àõ·z¹¼ýóŸøæÿýÏâSþO?ÿ‰Oùo~þ÷ýþùO|æÿåoÿTùÌÿëÏâö~ýóŸø†ÿöç?ñˆÿÅÏâþo¿‹Ú? ë§?ü‡‰ÿ3‚ïüã,Q‚müÓŸþü ¾èÏþ4Šÿ°Á?r·ý‹?rÿæç?>|ï¿ý½aÁ?à °T;s^_‰Š@êŒås|s9[ë Ó÷5 ‹_«šgÏÈc | ÷[Õ=T E“ì‡:–g±ôM¬áÍ<…]U¨oÛIßtG›l)ì·ìÎék*Åw;ß=„¹*kæÃ”‡˜ÑCo­Òó~A‰ö|'‰íËc‘®üŠÚóª³ß/3åÕE}¦i ?sO*Re`•ÄÇ`ÁóXªÊ•£ \ÞC÷|3Q¤Ùk¡†+eÔ¥“×cûë|oýO‹¬~UÝ^µ«7[ö0rq³/Û¸–ÄNjŽwçáRÔšOšÔp#)Ë–?ÊýѳMuÛq2/’^«ÍUJXZaò]WsºI9PûÊ\ª„Çp©p—NËN-($õìüŒG¡†VBÖ"Ós%ÖØ~{•Ÿ/9=ýИ—ÑÝ»kÚåí§~ÃRÞvÏ«²ÄûCÏz+³SâÇ¿ïµ#?ÄvMKA5M=,Ù~^j·>º‰*´mi:Eu±å¼ü׋ÖÒÛá(ù),Jƒa½ Ý×#\]òû.ÇýŠS!“;}P™º)ÊÜzC¾Dfžµ§_uó|Cºt½y"všØV€qsÏŽIk¬ŒóíüýÚ<¸¦¤$o¶´–ó½¥¼*idØ==bÔN̵°ŒWšD1¥¼ÓXÓÝK4S7$©—×Kݬv¨™á´Ç[¤d‡NÈKIŽËÚ|qcfáÃçb¨”©e¸"ŠÂR…m*§¡oå3zP'FÅæQÓã.òrÒy«Ž×i]²Ø!™U|±ÐÔf$¼t¢'`ãɪ“Ûžwt]Ç"kÖðÔtÍV_‰<Î3ÜË”|I˜"ºvIy5),¡‰äÐYÔ£o pGH4‰Ì œÒ}`åì—®|aKf³,Å?ŠÎÁƒUÞ”ÍZ…øŸw]7õí ··íZÍ_|®]ŲX ú…xø½yŒUÛ”¬g‘.5—‡a¬°°„[½ ¦$9z.25Fa);éséîÐX×DxÚ ¹† 3ž¸Ôø©G§a¶þÄlòG?boIÚSUOÿN Fùa:…»¾Dä}\: ‚Ë_RRr;‹o½”—x0R7DöBô°tWe:{ñ –Wò¾Éý¡Ã;Ñ‚dÅ¢ò¤Ÿ+¡òýóÇdíñ¯G.ßýÐÑz;› »Õªb¥†Lqº¹ö3Â2š„€R²âYׇ"Cœ"bÈn=…J‰­ßñII&—k çdJD=×Úg¬öššŸ€ðn†änÊmµš;û¦pù6k&-u^»|œ¤¯×MÀa!Q­ éÇ߈·b»ÃS|–‹”²›¥ XwDzç_ò$Dc Øl_ &uI1u|êyFÈÞW \懧SÅÓ3ÃBu¢¼\5x'þ&­xêŠrŸ*¢2™ÇñÃo¤Ö.i²ÍؽŸ'OŠbʬYž£H´s¶÷«–>™ù% ¬Öw]•¶ú–BZ]8÷8eÀ¢UM»[ý9ç´D™—÷w{òx®ÿ™Ž™Ê<Ž»Wã²'›#Ä´'¹ÉL±³¿ˆSÄ Õ7߬öú[QF É\U]ƒTÚd¿JîHÖ WvÓxÝæN"™wD©'»ç¨ž¿[M©–t'Q>^.EªÇïßE±¥Q×—šl‚âyà£Õo#)>Vգ؇iÖ!˜åWK‡ñKÁgëôXdOT¥mä%õ£4ˆW܅躺oôVú%‹é€îyÔçùâE‰úyº 2ð"ÄÛù¨\ƽð2 ƒIÓäVœ×òró-}¤ç\Z;tÙ“êc°¾#ûöè·GQçá %°2GÔ† ÎM&¯Sk¯’Õ‘æS”‰5ùÆž§ã¹ihÈòhÖÝrê>úÒߣ>û§ì%$Í?—6ibišžÑJÂÚšBËd¥¼Y©Ô¼6óbìÖ£HÃj¼^©{cS®PÓ—Aè#88LN@Ôeš£œ—núlƒŽ²§ÜáÅ~bÝúÌPÍ)ݳM¡ïx¸eöÇ¡9‰³€åÓ•Pˆ¥\ý“`¨êP½*ÈÛxÌdI‹¶€c!lÇд²èú3Žwf–JzñŠÓ z‚ ŽøÁú#’‰¦”?-Eñ¿¨?È·à:°xŠ“à”ò6¯öé]pÆê­·¾¢q6C ¥kMå0Òª_y% W×§ ò«?cºÿÜôXº¨Ò£d>K÷Eœ’ƒ­`TqÂA¸àñ¿R§<ƒþMU>yÁ…J=‘§ò¢õù¤ 9–5äÅRþh´Ìêq½¾úëµ àRT³NÙ%…h<Þ¤ü¸N£MþGÝ8ÕRJÖ™®í| %äÈ——öÉ(-ï¢FW 1ÐY mW€A³ZB5S#ÎSþS‘euÌ4ÐinµW½à©é`ÖIYÙj7¥J˜Gƒ]ì˜JAä‹ä¯„ Lžœôº“NlôQ „M2rFg±3º†ðï:£UN*oÁ‰!Þc8Âìñ#àeÇôYÖÇê;g¾r>Ê„KG)ù¡fûÂrX¨÷•céø8òÂòR?›R@òÏJÇÉ~ÒX!­eØc=FM$®(Ó÷®¢guBMòè 1yƒuø:ìCVª2ˆ¹û±±Ú匽—#eŸ-„?€iÿ¤U’(në|å \)ëÕ, ŒfU©_XXܧh– Sü@ð¿§œKÜ(?3ð´©qýÚ?mi¾¼'žó"´*“ET&¾*QDiô®OåÇõ?äôb·Iæ –Ì©‹¹U'¹;ôøT° Ïz Ô^¤¨å¯„CÔs›‰i÷јEW#w¨‘"yxò¹~Ç!6±wç5†JÖ¯$OpÈRiM?ü䀹i“Þ><_Êg­4(mtˆdçäûÓ,ñ0‚IJ?œÈ>ЂŽU¹¤ðÊø-EI]}|@ÿ¹©üüŠ))Ä_Û 4tƒŠ5<ƒäÊ›RÄÙ"Ü)¬”}'”>Qô¦œ<PïÃMåÇ2 ÂûžÉÜCŠ÷ÅÆz’»\Ú»Èiئխ$'÷&5iS±€Ÿ²¥^Àp>*‘YÊDdy.öú÷€_%¨ª»g!•›J„ÕéGÛéÄköûxÇ–”¥åò‘‡W†¢ú!ή©EYfs¤¾Å"÷6}¾ÊB½§ÝJð SÝS ÚK1­){ˆ¿ËLâxò$hñ¥#žI€›MQæÁ’é/†[ ‰vR±ÀÙ ”&L8ñ ¸…UR|†"c]þçK¸åç Ç$kï²¢µˆ‚³$ýòXþ]&óå­LŸR³nå@;³èCù¥­)ÉLüÛmÊZ$Ï'ÊaÖ\V&’õUáqÛˆC‘`cM÷ãÀp(]Júm5¤UMޝ󝼒'÷=Š*î] ›èEbâ³Ï+Ñ– ÷qEwsžnYÍR>4Ï2°§Ô2ÛZÏ>gðqóP¸CªAñ²´rÙ»2oó–²ê’Dò(ĵÅ㼇>v :jÁ¥¤cÖ R)  ãâ2–‡,ÀïFÚäÕ€˜žTúTo¤ òøÒG7:䘎EHs 8\ÖEVSÎÅgÆ@è•ò˶ՔÏIÈÒçÓ^QÎôD™U«Öàµ8trÉÙ'SªûÎíÞ¿=µ W¶Þ` ÙL ÃñT|0^%÷Àe\CÁ.E(U‡R¥9h ´w.éûw|Í…-°åÉ º§&­³ nâmÕã9ª•¤ ˆÀ’ª_Bfq³‚¸4þ|ÏSŽ”OÜ)ÚÈ 2â—Z³CûÝQ5šÊR„#å[²×©n)QÀ6ÈSŽQZsšõ*#9g(D{-~é’Y²DI ¬ÀÞ¯i tÈÆ¦^ßo ‘—Îf'EãGÙP*FÞ×PŽOI{Aáª~:Xó€uý¬Ò݇ÁˆR…MqÉÏŸoäóuçt*3¹p?¶}5©kmĽU)L'?ÙÔÜ^XÎðSv¢3M”ÇQæ¢]ñÈÔEš/«“—¹ØœU U0\T¸ÌÆ{p\ ÀùR"–'ÅÍÑ›çÿÖ!¬›I²ýúé õÒtI· ¦ø´¼YrE1O7´w–þ,†Ïà)hÐ!à±7 J¾5/0k¿ÊN¼Ü¹,ãŠ'J¦v~4DÅ™oUz«?]VûèYA£jû}‰ÑžûÒu%nIþ’xM«›÷-椺ÖêÂ韪BúY“CÂvºŠÀÊJý³Bt‡û9X ‘“_^”yü“4i-@9_%×ÞÅ»GÉa·Ünõuð!‰ó]«_VZgÃ$±ü&qAJÝ©Ÿnëì>MÖw­h7¯Û…¼5ewfy(°nJ”†Â.€sP¬íL·j$°åj³(¾Õ0ClÅ&ÁÜ* ;Ɔ§æç+bôLwÏMU©ö&¢mÙs¾7GÖèk^)ëo½$ÄÇ.²h,9ž iêR‘2ÏfU>™us|­ùߨ1X~Ôj›JÇzŠÑÖ.JF% “mKVYYÕ‹1s<ÖÅ=©d>QˆU[]`èP˜øup‡í=§ßÙ¥ å3õæÒ0Su€¤–&@ëGÚtn¤5’$ ÛúvÆ—;¿Õ ϪÐbÈg©Oä0|O£¨· ŠQA’,ÁvS?|ØÞÀz΢Z—íçGbW®p ÅüVóv—NÃÑóÝlš …¸„Íj1¸«"¬¬>`F»Cðœ&j{‡!$='•ò)%ØõŽ¹Û°úHLç¹ÊÔa]©UÕ_Ùœ:69h”«å[?ÍÜ“~ê¼¶$ߢãÒ²eòþ¼‚ûø)ëôaá)Å^Ã$ÂxRÏLõq0c‰.ÔªUÏóÄØÔu’eqQRm™žŸ8«©ÌPun¿aì¥/Ó«òßRãË–jñŒÏá÷ÒÄ”Jd>a;}¥oø:^·E{ˆØò «,ЬoL<>mÃ>¬¡r_ Î?Ï‘±×›‚ïh*ÙíÑ·Rç‚ûŒäPy‚÷(7TsØMƒ_>@sH æ®V{Ñܽ²7Þ׺ëhm(JL4&ÚðÕ²Ó ó­—­µbŒ·ÎMg’‰W¬g(øR—]]Æneï´!ù¬únOGû0Â\gÀ³Ûü¡„Ñ‹ à ‹Î0½œáÑíÙäÇdÀO[ÚÐR‘Ý¿§]är«šÛÎ[¬w~å7 š| àðirßÚÒaìmg½ø‡V:3·µ ¦´nAbƒÇ4ºÿ{_.,Øœ]zL°÷ál‘>Ù”¾Tú„Üû·Œ=]Ó(I3èåè%øÇ–@i½sû €ŸRwv©³ZñÜeqLÖ)èmQEmWÁŠNFx«¢v9¾”:ð¶ÓEÒæî”pï ¯ #žMËð9MLeD4™NÈ~wÓF!¼, ÅõIûg;ܪþê{Hà-ãV…ÁÓd@¿ àâÄ”FS:DÔú¼’_j»"Ïþó(æqäœÙi¥ôÓ8GK˜G¥ožûW‹#¼[Ö–¾Ö*ˆ8ë=ˆé‰-¤Ô¼6M‰izÒÄõ Я¶ A¤¢ëLV‘Þ%Ïh§Œ©Š.Icö"©¾-d$¡¼ÔÜmJJ®‚Ó=3);j¢ŸÍW}?œKR!}U²Õùí!Æß¾ÆIlÕ]NfÍ(·óRŸ:ŸÇ•’“mM9U|~Ì}αÞ)¾™j¶ëoÈRñàÒU!)$ݹ vØlšóý«GöJÈ ÇhDj%³÷fù/6kЏ¥‘lVE”L¯¥ä‹N¡*çô"eŠßÛR`”ìšž }‹ÒºÎ˜ÊïT*ƒÕÔ‘ŸÄbJ9©Dºj °¯Äœ{ o·jµ8Û—ÃÔH¯£†JídÜ÷ ‚ uÖ<¾%=Ë© ^tMê«¥Æ~¬Ü<ì5‰ª¾ngw?ŠLÊ£yµ‡z¿¦Ôͧ¶éâ"ô»"÷ÊŸûQ…ÞEõ]àÑÝÊ Êö‘ànå%UŠ-ñ¸'Mnêê¤ÔP$')XðÛÚ’Ó•r„¤kÀJ:ûRhhrÔX ÔÔ„,C ¶#Ïàu¼Í±Æ¥÷A¿ÛŸ~Úv'y¥€|&ø·xŽƒœn%ž98í©êf¨ËÖŽÝíï£T÷Œ„Šw«iãcã™sŠl>§ vÈèöœ)*¯Ã ÇÛÒ[{ðçPÜ6 q;)òRƒ>I¶ÇµL©ºß­g\ê#¥CxS"ÈC…û«!EUÜgº²&-¯„øÉãwøéåýãJIZ< ipzóEö)ñl5|Wd;bv~Až¼KÏ9z gã]/ O¡k7|äˆá¾nvæ¨ÿÎyôþ´™p˜TòYU…‚‚d('`K”g#UM öÇãh`úFàv£C¬é~l"´·äO¯·:|Ùnªw}ù,h¡¶›RS„ E¦@vÚ xጠ[·fµ(H3¬ЛÖÜÎDÝO%_&Ÿ9¨ßˆoÁÌËT;­y€Æ±½Á#õ]¦J@Q.ª Ox+÷½Ã÷˜ã$mä)²çÄEý©Ü_Pû’9¡k aGÀ«ú7ó~ý½o­Èväm€%H(IÖBt–‡ÎË, Þ.ýPÀ҅ɹÚßhبÓq(ÕÄ8&B1)/0Þ£»´šØë×ÐbˆØ_Ž˜Ñ:g$|ÕëM, çT$_‰}¿uLŒ²Î®0•xµÒÖj_% ´J¤Ä›[§p9>#ÝjU7íQSÜ·z €D²y-Í”µƒ’N­”‰+¯=ov+A/?c(#HQÍѯZtQ`éÚÿ¦ÁzÑÓC-–>«Õ³†¶µ¾~ØÚ1L„7'#•ôe˜ío®pòHÈqT  ô¢É—)ay\Æ_Ëúß…°SCÉ=‚¶ µ—s¤ßo‘…X …ì´G’‰”•»ðgXÅÍ$>D¡Ø+P’)µeRÚª©½e  UH?èÊ==Ñ'aô‹ ¾š-v­ uì ×DYºÔ© â*V/¥‡zlX_K¹©”æÄšt=Ñ3^DòÜž BO’6DÀK)·óQ¶b”G.Ó”’L>RÑ`„+|@ù “”?¨¯X’8´¸îòø4šÖEwò¤0¥¶Ž]#©VøÒ^9F üåéÃÇ¥"´m`žÙ¼@ivüŸ4ÚM<Qû"Ú?yÓô¬“Ñ­—·GÖºü)U" GÝ™²”uo;Çœú›ˆ†(K`[båYéEºzy´ë $"{ æzðД Ú¶Y¤ièžq—ªE»–'ŠÁܲmåAQÂo HB¯²<o’ßLêNÖAñ­}sUuLk#¦4^ÈÅ‚9'Z¢”z¢„0äTU®gF²j·qË [(çB|¤è*ª…žsÔ,Ç,©Ø(H§™ÇÕ%À¬ŸÓY@¿éRúº†N•QŸª$ 2gP¿:a"PqéÝõtú;|Ir+ À¼#‚\K®I~Ï´…'v‰Ú^k… ÍºÔo¥ô^ë$>¨×VD? ·mëï½HjÒ4å v£Þ¤’Â^ig}¿.t™Úü–(ÁKRµÔ©ÅΊ*{~‘õ˜ðȽ8íV«Ác°œ™<{v¡#08A˨¹tß»>p{>ÆÜÞÞ`I–ø¼H6Fî4 ¹w¨¬MâÔ<‘¤2 Ú!^>ß.·‹Ö’ ÿ¡%5¥&T9À“mSê- ôGÒâQAfî{“Ýã§]ŠƒOSÎEyÝWä¡qt_«Îv‘ڋ죙*Q8^#'š†'IMRGÑ!Œýv-Y÷zëù| ¼{·(—›±­‹ »'{å¨Ú—† ]¨)›¥¾ôF)ìL3§g9§ømíbÇ*vÒebK=¸ß÷ls¾ºDpôS–ßÄúΖÑù-ËË!&J^å’í Ü‚¢·Zš5Ò™#ßšERºÔyŽk=ûr>ÏsÍ/à> ‰]§ `:—BXΪ*¼ï-Js§Ï–mÊÞ>ådÓò;d yI}úŠõ•m9H}ZÉNp? |“•¬dlÛ>)IˆÍ|º$LõE&7IÕÓÂ%U…#ŽGDQ˜‰}¬Áª|rZºÎTAn‹²Ùñ`p#— üÚí‘zµ«\“gi@‰¼S~dm5Ž4àVŠæ¸nÕb A¢§î¥Äle² ÙŒLú©í¤°ç•‘Lk‘*‹¯¨\EHã3·¬ÏN­/qÙ±›6×fÔlŽÇŶä¹å›{T¨KKUûõ×~z”-l+ö<ôfGhYyì‘”þ‘Xb熘zæ."!϶/Œ^"S³9‰íž¦zÄvõÉcéh¡ÈOlPÖ†n”ÏŠÊ€_àþ*<ü7„lùwôX‹Xó \‚¡’QoQ!EYm4¼Ë¾2à„*¤óì’9c“‡£î9Fнw-™©?=ê‚©}[ȶV# éÖá› º!ÄpE»´HBÖRµRR)ïP8‚а€lêYÛà[ó$–4¹ñó¼dyÞdz0Ð O“÷9Ò_× ^e³?"«Ž¿ÓŽˆ”,ýƒª-²h) ä;,Ècóƒ¸ääKÀ³§Ng?ù г³[ }+… Èbom§‹tü¾å“Z¯Ç\lö|T«Ù+ÄøèX>©@35ÇÚ–AhN\¿Õá¿Æ”¦vÄj¢­[™Ê£€;H_Ú”@ ÔõgÀÍáÝ‹øcì0²ÞìÝðý88¨ö!§‡*§¦ÅWÚàæª¾ÝMZݨ8Srq‹u1YüËG‘ˆ‡ X@^Ç­ aT”“¤'I"AûØÛÙ>’Ý£ü¨†ŠÂœØ<ßG¥ñLkí0¥zHF[ûU‡x²ß)}Õ”¦‚Ñ»“§º<˜4W}š|‡dÖOtªžZ1«ElHvâÁ~¯Í|ŽX‚VwõØ×ÕÚƒ®Õ%½&@î¶)ò¨4— ˆ^§†Ö¨?Œ­Øþ]£{@Ð(g¼U÷H=r£Üæ÷ˆó-!dÖá–:X7ûñúÀ+?âÞYë=½iÓýÌ3*«v³Ý¾ã¯ D²Í¥+6Sç®*ÿþØçµ(§.±ªø$[®¿)Ã,tÕa%ç.ùÂJˆê/vœçÅ3å2ɤÕZ•Å#ƒHÄêÊ©}6'ù‰W S<æ‘üËs»,Ɩ†JrÿN·Qì@R ]R«±GHÑÀí䬡ïséÁœ ÷¥&—“«Ú˧‰ÿ`5ÇûxÓ‰1–&y`¸˜žW…Ó¸oS¾Å¾ (Ñ®=Ñc¸§ qM _v0I$:^½iuÚ´•ç34…gß> Ÿ’} V\ÕçxWËÍä¤S;áVz}7åZm)Z­ÔÛã"vè¶ÐÔž,à»j9ŠîDMÚ–FL ›>ôÒµ.,Äç/+„{9íb?^ùK…^•ª¶*½³gð¤¾ú Ÿˆù¼•ª8pg3ç8È /å ÐL—V"þÃöO£ñl0 í„@Êʾ¯/ú[Gd±·¦V<:Þ©ú¯ˆæðÎ{Ç ÷,¥õ+@g?v M¤±õ9ÙY5ç.'dS¢³–¿!Õïø°Uí`u}ÖÓ]³^ð¶q2é°aKbÄ‹Ê}²ú»g1óÀ¤€‹w{F­¬9³¼Þ 8£Tç“l ¹êÙÖ8õÑRÈPÔtâz,x¶vw*¥Iºød ·ú’O”_FŒx.ÉË«ÐØf$ YAûe¡ÖR€€Û¹í‘VqúbÝîêÈ! ­ò]ž72>HÝqoà¶‘ÐåêWéÞÒÙ>§ÑeôšÆÎÑ-@-.eO›Yãñ8ø "uÝ; ¯ƒˆú/oÂSIê(Òä=x’ÿÓcb»«‹ï\šÜÑ‘¥ˆžåmU‚ª²•ŒmÝ»Ž¸CTV½ –ÛŽö ªYãKšUÞä¸=+—;ó`çàç ›œ}-}m P¾ËÞAa¡Rê8þ-ø Ha­Rg‚pɼð¶IQ!ê~Ù6¯šÉÎ`¾@!N•OÌózc£R¥%E@¶³”[×€'×uƒ4!‡m¹/¨ÛãHz=’oC\P~œ^s9*YÍâ Ïàì”)¢õ àfAt4|a‡-ŸZ…V ¼W3„(Û—ÄB©GÉÔ@$Mo›9n˜»ŸX)ËAÎ Kûä›,'½…¨§bí`.14gƒwd[W=¸IŸßë–²Wò°âÕÎÕŒ.Y<ã*wv)–Ÿ5<_¢’`ò+;¼)Ð­Ö sÊì »x}Yâþ:tüÝÜ%o£¾uB'[?ß.ë9„'ËssÈœèÍKºéË‚ƒ§-+m’Ñ-}d6·b€÷Ä‘M¬ªøÛ´_>Ú­<Ž«T²Nu J Y—à$?•«¤æOÚ$« dãl !æ:G»´B_ÇíDéG°Sf™FÇ=ÄׄÑ'%õ‚YSú,ׇ]á1;›Bè/ó®Þ檜”f'O†ÉÌg>(*‘¬5MÞ3Ã>\ÿ%]TÑ;Ǭü/žÁj#å S—ñBmgî `DW™¡^)Kq!¹o‚úÈåtb(•ZΧp|É#á8*<6yl¥«+îs ¥ëU€^D GbzÊbºûðÌÕaG;„¯—ÃëûáIPRxL“.5b««ÁùÇçšÐÓ-6ci‰¹ç|n~:émA¨á­RýØîÒI·z[ààæ# þk,O4ÔpÚŒèDdá:‡Z´ã TáïGÀñ\ËŒçLQšgÙöì-¿)•%n0)‰ÉýdpòµòßG*(a/]Ýó>¥tšçxY—ªuÁÞ¼Úm?&:kuǪÛ6w6ôN³ôËsÐìùÌ«ÿ6o 5µ¨Žâ!W~žâò¬Çiƒ‰2  ú’åøÅ­Ñù(‡ß(k¹È9V€£¨UãÌÔýº{¶äô)ì¶¹}q1)~‡?ð¨.¤»Ÿ#Žá±#©ý]É‘?›YÚ È^*½°‹šŽšhkDX>£(®c‡yËë$”Û !¿¼š‚0Žb}C}⛚) Oæ3‘C[±GÔ+2R-3q>yhCÑ  Å´ˆu¨›0­³0¡9]ì!'SºªN·S×Áþ°Òíj'ë3®ƒ-ùÕC>[ÂV.¥dO¢.›UgùäÞ÷“ ù Y*:]Øo"käðz4«*qãõ®íÒoº°,H¤ßû4 %§N5ŸL "¥|P:ï”Axã*@³œH†¸?Ý_ØqŠyÉVr;mÉT‰É©-Ïæ£ÔÝí¬©¦'F'T¥uª•E^ލîEÂ+GøâiEµG/ޏ’m©3ï!\ÔÄýÓö§5jÈjÕcÞÇX ,wöÞö|¨Ekà ÅOÎäiù—tId :[EÉá„B<ü6‰€œ—àøú9ÞO© ¬ÞYêÝ£ˆþ1Š“Ý¬Ma;Næ’¥y“ yS”f%˜ÈÕqܤ ¥2/IÛ§¡V—'•  6I6´ý‘;Ÿ=†µµ uÔíFïäð9K Èãã5NýÈ´dÕ˻քW .î3,Pš7ŸÓ©ëî‘•Ð#N“½É,I%Ó­Sd}Óvw?sÁ’ ƒ¤ï”Æbƒ-¢—êhÒÝŽF”þ<ý3ŽO¾4·ŠL×{뱦~tžÞy¼«0˘*+œ™‚‹îmB_ݦŽØ­ÌU®G_ƒwÞUY·E³*Ž1³~Õ‚ WÐ:é“%tó‚ÄGöï+n‡Ìˆ¶ÇCKFÄKðnè’–‹ì}™s×FJQÛswáëù=¥øŽ5ÛY –ÙeF4Ka”%ÃÚ™'3Õ{)²NJxÕØwM4F´$Jè_&L“ßÈc@$ZË@Šg9“]_«{[e÷!yYƒIB »Úïf#Üv¸(>â[U”åÄ)õ‚V Â&ƒ\ÈzÙ6ªƒýÁ!EþšÊñ6H ÛÂbÈ‘]¤ÝÌS>öÕË,îûa¶’4ga‘Ïlô&¾~Q1Žå|ÄlCõ¤ËoyÕ!@74ökâ¡¥XaÇË—L¥Î»“⤾‹¯Š8Âk¾¨FÔ$œ*¢y¨Â²Ø|K?P¡jÖ”œ]Ä,mÀ ûÒùÑÏ êkãu £>SA‘f ÑBi‹Þä‚Ì(ß_ùËÔdM͉8U×QK´Êäû´º«<ß® 5…I^W°&0Ö’;¨5ëLª›,².PÇ™®-ÌS1DP¸v•°Øµ… PtöP‚Ž”M$.©»q¸íϧÂC½ˆ•2(-¬?Мu¿›”?Ç:ø¢Ee’ìÙiK™ ÀÏ×°oV€;œ©ó›¼^‹¶0u…Ñ\Òšœÿ!F°¯,2‡l^»|—îh-+áHV_•c©Móì—Ÿbª£1í:2MSbB±*]4¤ë´¤åu=`³(‘3SJžšVØÌÎ;A+M³ôóÌY¸í2Á©Ð,¢–l ¯Å”«#¨/kÁþ…“YâKç³ëºo›•òé5gý²2V9éÈæ V×Bvz%WP„ÔãwóÙöc“R\»ÓÙ·‚r#IÀ˜c”¤`#ß7%øu‹Öœ§z€Æ`-S7¬°yø™É-|H 3ºàêëÑIôuÉ•lDÙŸe’Êô¶SA¿Ž ýα n¹$ÜR¾{Kx—–zÁÇÁìè 1D’l‡¼‘Ò·|’!*·ø—ÅΊ¨pË,%º ¦…Q0ºSÞ­8\^”ͪ‚•4–RªMS¤ÜƆÊð®çíoiš#J®v…·£ ÉàyNyï÷¥Ü÷D‰$J1§\ð^»“‘µ&Îî´|ç*=¹ÉÔQ­ñ¢~ÛMãf@Œ]*dǽz¤;Ü(1Å›\GÒ’©+†–¢@»‡™ÉÅžÀ;ÚÀ’‹º©¡Úƒàö™[GÊ7«§ ð²ZçiÖœâKÛ=Kn®m;Lý:À´:m…-Xx”‰3;{ú‹ÖyÔÙ—=>OHÓZ—6oŠ *qŒg/GS&@`k÷$’beƒN¥‰q»*$cõoEæÔÕW®s¾™ú¸”Ö’r þ¡†z¼È¬Išcw]‡5Ö!°"e(0Àhjx³|äHñíÞUd)tv>Ó±ïÔÆì9Snoa׳½¬Ò”‹ÑXí6ÉbÔp—fÖ`Ur§²[š‘g;C‚R‹¦¨«i+<Üž%Ÿè9ϼÉ%Upmµ¢ü‰’“˜MPøHXFx5SÙÒæ±h%Õ°žúš'n½ó¥øØ¡“dI:¥SS·šèî[5º^O.¹´µHæ±E¡ßë£ò8­Å1XÑUÄ›²ðm2SH„£…XU㹕—÷ê¨Öö¹÷&#ƒ+M˜£IÙ½_ÝRu_ù¥úFÙZÏqgÞ*uËT´ëä Xw|3R#ÓzTtÙLªÆÚÑ+€ü@\}‰sË) ¢ ÕWùªa&sž‡Íë?°¼(”žífç‘=Ú{‚ꀘ32Ÿt”»Ht¼ÏlÍ* œ¨ kÜoZàS:U4-;g{Y¦šsÖúª3XÕÝXº‰^; HgH©šU‰´}Ëq+ ¿ÊCŒ©÷?çÚ¸Ý~T,”ªÑmý¬›V¬lO®<•>m¿¦Ö˜g:šËúHÔ§‘l¯¬M×\ž$+ôpxÍ ƒY)Çõyò pæå’Ž$W}A;P0pIiȉ 8ðrÔ ª=z+VÍ#HW6‚€(ÕH¢rÞ©ôdi×#s¡»zxuz&4ýJdž“3GÞª–ÂH@|½®á%˜‡$Š_Ÿê†|¤)匌P[Ì ± _B„¤æué¼iÑ›õ‘Cºå…‹lÓÑ£½¯ñ©í–ô¼ê¤;rÚÍ ×aßZ "àY'ÔÍ¿ìë jº“ìd/=r¿¬Èèr™ÑÛîàyþ™÷6Çîó4ˆ0ç0Ѿ¢=¾G˜£+cõT8(”µŸz¸ï¶QƾS—D] +KÕëYzWëÀ ÆÈ¶¹fäÇ@JìŸÛFs±É+lÞà<~ä+xîöQYÞ”ÿü€ Äš´ö-!ãoî)¨[œ’*µÎC›œ Èæîª#Åtù~_žÜP¨ŽX«/eÕÌrR n0â½:¢>¹l,žîºA·þ)à€K]Õx?áBâ³³‚Òì•i(íNGS;Ê»ÞDì,ÃÕùˆ'\áR¬ˆùëüIz¨ê ®X$çßUÎÞЪä̱‹‡ìùiH#M´^dN9á®)»Wвúâ;·ÏOÝ¥JÓg‡M;ä!IÖå§-ø€§Î&OмMB×|Ù~-°—VÀ”Ž”8î¡¡™B²U—m*cÿêKé­I÷dÁ“–æ­6þmçI¹äùF§7çëÛnK¦éÅÙY D¾Ü/–÷嬑©â9ºª÷/D½3»™Z/hæ~ ]š“*d§q=ªyÜšÔx}<Û–σb1,oy°”¶9¦,úç)ŸG$«ÌøDI][.ò*.˜šÕ&;|¼rUaG{î;(ð’|£·©Ô_NŽ©óoe ù:õKgE°i7è&‘•J³?7¬4ÛÎRmŒTÁc*ÞíÒP=,¦›ÒSÍ9…OWe*‚âð‹~½ƒŒræÊnERÕxQ!¤½×ùÌÏ.…lö°QŽGùÒ¦Á¶!^€ðÔÔ¾”Ö§)ø¼‡ÂºXN*Á1^·U[Ó.YöÜ3¨À ºâÇO°ð­7È|°Œ©–-j‰˜\”›Qž0–æ W(eá¢Àé\jÄ.Õ2™kçþV=6|¹Ó7¼§Œº&¿Ñ¨¯‡2 õrâ¾QÏ™èÚjUëX¦íÉ×jª.Ã5ÀÕM ­½Õ8ÍŽhª~×/¶e뽬?®GÒŽ¹Á‰nc:¢çÙvöyŽw!ËÝ_ß:|/¶¤êÑ_VŸ‚6Ž2(5žSÅCkåJMðNÐñÀ¦Ü<­ú+)ˆHØ3‚6=ßwð™Ÿw/;…LÒb¥8¥zV€š÷êJT©‰"†J›Þ)ÌÐÄÛG&qéÏã\%(óKÎ&5(5¢®îg1Ayyø^F©7†<Ö(ÁîUÝ<[6Æ“0©C÷DÓõnjgÖ^SÍûÑ$x;X Ä T=«P¦½³6À\3Úg¦Úöߎ#ÖË¥kâŒM N°¹IÜÁæCÉÜ}%_J•Ûs’’§í°W÷ ëæ%²=^VŠvÒÝœ‰Ñ äüiÀkxÙ|p¼éAõª ù(-˜çåQU™œYϼw]wãúñßóûÊŠŠnÖ[šˆ¼ÍªYgÐòG‰ÅÂ#ëUǧHâ/i™ª§%%ÞXQÝb¾ßK9 œð¨×ȾVƒ¬*‚Q (ªÕž8xÓ½çëz›(9¤°(‡zazÖ&0­¶QŸÜÞXéƒxî:ËëžlÈQß2ZN¢¯é¾<7# ¾šL©"<®,'þ9©]ã´/(LE:âñ}çG8“÷syØ,$O†7™è·Ó,6¿ÎÍ¡äz´èЗkÑ6ÒÖ|lpb×Ê«)lŸÅ¾Š• æ ÆY.ïQo›ˆ9= è¢ªRoÉ-#ðžÌ@š£ž,™5+ÉÚcôj·Ä$¿ÒQsÄC´ªc %Ïe:Æ÷Xuóœ±övB2ºäõ.SVnÙŒjný)^“—ÛíªÆP~šD0·b `¸è±Ë·nÇFPCJ3£qrr¬|±ñ³¢â$–ÝÀv­£#×Kï×äJ3”"Kåý*5Ͼå 0ÑήÎJÆÏ$Ôí’?†µT݆¢¼‹º²ÂƒªðcŽæÉU`ÁNg;;g@QM¡J¡>}V§Bÿ½Aóï?àw6©ÿ IuøûMªÃ?Y“êðÏŤ:üÒ¤:üN&Õñ¿F“êð¿0©NA“ê cí÷OÜ¥:üG\ªÃï]ªv©¾õÓýÑ/ì~õþùÚAÿ“8ùÿøçò«Ÿþðψ—ù—¿øËÿ…ïuäS¸„ßþÁÏvÆ‘Oú×ýgõ›?üïûÇ^:¾¿úéÏó„‘¿ú˜dÇïo>ãï~ ý§?'˜ý«ßþæ~ñ·÷ßüí¿÷Ã\ÚŸÿö¯ÿò?Ñy»œkü“?û…c7—ý—¿ýƒ¿üãÿÛss¹ù'ÿöç?ëôü›ó‹kýGxçê=ÿöÏ~ñKŸó§òwÿ¶hný¯ÿú~û»Xóógηüoþà÷™„sóÿ‡Ÿÿĵüÿ 1¯|ûÿýç?ñíÿŸÿÄ·ÿw?ÿ‰oÿþl.ηÿ¿~þOâ¿ÿ‹?ø—ÿÃoþêï¬åïùyóü݈û w™®ê?ù‹ù×úG¿ýÍ¿ýÏàsîBý]mÏyVÿŸ_ü‘kúþó˜¢sUÿú?‹Gº!ïüû,Óü‘«úŸ~ñG®êþÅ Žÿêÿ]äø½Éú?“õ^ówŸÑÌÄÅÔ+—¯¨8àñÁ=¢³¦yª˜<î/è¼]Ïd­ÀO³$/n;íGÅÌ ÔÒXr@ s.å¸cššçh•:ï:mI/ß^9ý[ÀÚ)³Ï±Ÿ\9{6/sJu,¶eä<‡ˆ¥,ëÖt¢ÈD *÷­óñLNWÝÃNW?uÒ×Âø!ºûô‘ÆT¹ÏE÷JƹzHÏz–ö¦M‡ò¸5™Ö¨¥†GI¡ß7È¿y÷x³&c_ŒZúèM6lÕoMylOþšãùqk½Äîß黯˜ˆFGÐCA„õ­O¥%^¿Ð÷{ÛàO„븤êáMŒ(òï‡„Ùæ<\ªM« 3›¨Ýñå’$DñôûWV¹•Ž÷œ³%’ëØ „D^cx[®ZY™ãÕ@¶™¾¦Ãü½ke›êï—ˆÚ{»¬õÉæm\÷b° ä[½NÔ¢-œ4Ééf‘Ü’TX©šºH±ÐNÚ>¼FtÃ#wòºÂHŸýê*Â)€;|½¼[©ž ïPjSKÈcƒ¯“*®1éâÑm¶©/1œ8ÚI Õª›RÛÕ`ÝWë¯ Äû/·ê’v})œ¦¢2„©jù±ÚùQÁ‚.ó•UÈ®gG—­!ëÓÿ„•SŸK&Æ<>šé ¸E;ûŽn•^߬˜¼fÉ£ugoÚç‰>ÏX1:OØÊs%"ðÓ5.J§«ìD²½ë+³¶¨S|^¨¤°fwúDH’Æ`{‡»]$”·krÀëäúø:w׺ó¬d­´{ç–XÛ$BÎ"+94Üœ¾¾Ön† Âç"¢ª-ñÉ¢b« ·§3Ê·"±_Ó(óórX"EŒ# ‹§ØtÖ˜ˆ|µw=V÷DÀ—›¿·2¬ P„A=o&"—‡g0ð1¯Nf‡ÈNã›íG䵿­)Ç~xš wò tR˜ÓoSñr}}Õƒmv{-EÃI®ºPžiÐÝqëæCO‡W‹¨ÛÕ‘î§fhÒ·Õã;ÃÈ¢­pÿoÌN÷‡˜É]&píó4±W¡H’.­=Š5²×Yõ2Xyž÷ü ¥ &¥ª:>o§)çœñë6ö^sƒ'Y´!©™ß鼪j„¹Ýž¡ ´"-·B"„»å¬ž–­ž· pØù«Þœ`PƘ¯Õ–WÄ¥?s*x£.«þ¢·êã¹.‚ÇÅÓˆ 9tÍŸYÀRã«N‰*ì7‘•’½‹2F.¶éà¦l Õ$Î-t`Ôñ$wÄÈþÍT¾ÞÊ¡#·C=z’ª`¿y[}à ´t¾_M‹ Ÿ/ÝÆéÒù±`ñ”VM–±Iñµi4ÃC|¶—õ8ÙT |R!äÙó(’ÇHåÙJ?Dzm±›ÕÉsY5;svjKÅ®qç|qµSýò¨sKzvú§ô ¿úò.Õɦ%“ ä{ßC7b%J¶d}\ËC3ŽÜÕûꤨ—‘lóœõ!輊·sÔoæ1]¯:‘ñ¹Ý%Ì£!ùÄá ´@¥¥×Qª­·´ZÓ2¢{TÑú.޳¥ÁÊël›³Î,q¯¦KÁêÏÇZWÇ@ѳ0´PÍÇ…o:A]¾yépÅÖ×^§ãÎx†öY×¢M&Q¹ hãØ¢â2 tƒ‰í™”KvV “Ûdµx˜©-d”;ØS\V@žÅswÀNÈ©ÝÉàÍ߸H¹@îfË âßb5ÒÂø]’"ˆ\Ä­×Q¢ˆãE÷Uùš÷ÕR@iNxL``YwP Á[„¯/×÷ $SHïQVæåï¡¿^ÃN¬¸q”Y‰ºƒIs7 Ê#=¨ò6k€¹Iu~Ÿ}±í˜…m‰¤÷+ ÔX¨ÀâwÌf´ª6ÄHOíl]¡+a¤•Ý¥ «ºô²$K;zÂéñØVWj9h ^KÝ–ÁôTho0l•\Èøªò«œÌ%Š_y“m(ÐDdšÊÆç¤‡ñ¨ùX(Q@="H¶êUÓ·­ÄxÍæQqfÃÞÊáR RBH›$;¨ƒ ÀZÊózt|’ôxmíÂÁ’•%Úˆ$„0‚fQ§¦£vÝNä×iC®ËM6ñ Qš8ì= ìý½ Vü+„5¯ûžÙ#ZÅœõ#ÐênÈ5+×½ì7‘X*ÌrTT¶'°z‰3ä‹ Â],R³G¡8cNâzõVÚ}ô€–Ÿµ£¾Ð‡Fs"°žuøû­›OR[ê3ÙÎ:ÖÐ…þ¤r(¦ÑáU ÆQRÍt¯«ÇÎó‹ ¶ªâÍ.!½ç ²#ŒogÔÛú(U¢üfEI‹Ö¥›Êc?«œÓM¤=‡ŒÓÔsÎ \(WU䯥ä|”H¾}Ð^)ù·¶ÁÁ¤ÃãI]`®ƒ«>=Çx¡Ê%RQ‚”âÜIÑø4¸“ºCN¢ÜrXÒÅwD÷y+Êâ8€£³R‰r›À;A÷é«âCaËK f3*pI"àb|ÔY³©rj°“ËÝ´ŽôèM4ÚìVjÉÚAN¡<&ö,5z9Þ÷ýPÓÎçˆÒ= äóree5Gõj&Ô%mRÑŸþ·µ½——Â'÷)25Ê{Çá·£ie-Ä-a¨4‰PΘdo‚w©µP½óÂt[’äŽÀWu'ul  ˜ÕàÊ!ÈRG×Ë SZºÎðPË+“Ø;{YCŽçoÖ­4Ì~­ˆ|Îho™&ñ‡Ìus¹_úˆ°Dœ‰ˆ$¦ªZúŠòsV.–çß$ÓÖ]Ž«YÐòKZ×#Ú%&:ËŽØï]—Ê[ ‘"ÔcYjõý¦´ŸqÆ?mG’jB…b”[.é·[±°‡ è™ðcuŽ›ŠU}–•)_+h$ËjûÍ&S¿ͦÓcóƒ2LlC@°ÅJíåhÙð5â¹ÂôöIJÃ5¨«ô&bƒø÷¬µFQR†¡L‚^9Y;g7Æ‘,sXò¹¦Óp"G’ì-¿‘Dðiؘ{ <[bRfkGû8â›øT… ìm*à}© BìåºAœ}õO¬_XðDÅó·9Y_ÝúK&­^¨Ù›m76žcº–ûrîtjÖHeWë>rÄT硌(—–Ù=ºtQ(€“F…·,‚•ªÙö5¢b Ê‚’©Z‹ŽàM'ÅZOE)ÉÑòè€¢æ¼Øú+<¯vÀ§2Ãz—†™¦´ûWZ¦’g`'ULÁ€C)3>è:n[GÝŸÅ×£¶‡Ùu•º²Ì€ke?bã *©®¦þÌü–C ÏwÊþ¾ F1.vØÖÔï#•˜ÿ$ºë;eM!Ž$š™û­©Pêp)¡§C»Ã-Îʲ†¤ab\ȇÕTÒ–U­³XZÙéü[#¶rmk%isMZb°ðœ¾QY^ ô©[´w¤åÑ&÷UÇ­PöYh¨· ÂøÈ…¬›×âÿS¬9.½Š¼ 3ź&é¼tr„¢6Ĥp•úŒN2×7­“Ÿ_çìv½X(ê âªÀp*H ´”¾¬Nà·£Î+Mm[Ïb_þRFE5W‰ÃjkY^¢êzšÀ¸Èž ¡õ5ØËI~VЫú¹è]xL¼ÕkMŠøÚ/xg&iÛìgmt¾A§zÅØˆ^G9GsÁ'ŸéίtÍëpð‰ÕÄ2c+±î²É,ðR4¬»t%§€P-I›qGluóÕhDõ϶Ôô:»%†¾‹~pT]‡ØÆMV5*IgÏÒQ9gA·¬ˆw£ ²LÕ±VÂ…$|GFØ ÔXê?)`°X‰†õûièÇ`®+¡‡&Kö펖}>¥—ÚA˜§]³b!¦©šô¸]©iBÕx²+O.kr( ¬TÊWÊQ±6q¯Gy˪JÌ[vÓþðŸªkz•Ug&©Óv¯C›ûieÌ’RYµ}må+„ ÇC NS.¾ºeñ‚¿v€”¦Ä€*^—¼Õc_ð ^…h×Òtšë¬¶Óq€T¿©žºf©vÉe;÷©G‡ö˜«\$emou£-ziŽ­c…³ÇE$FÙðÇFÆÖ¹ÛbéÞ@Êì—S¨jö…˧ Òã$ˆºËY9sêŨ6›$ãb'É¢ÃÛºYÇTÀÊ›‹”X¬¦ü‰ÔG‹L±T¨H¶jø«›´¨É ¢‘À²%â/MÚE‰ÄnGè^KNÅmxÎå!vT{†dÆ­X$•·Y:h{Ã~– ¼‰Kïö¦s: ¨×£*@‘¹¬¶'nÈ3G9å lŽnÑ×sW2>_Æ!¥½y‰¬uÑ‘¢›Z%ì€ %]˜GÔc÷T‘ô—uÐŽ¼èm»ˆ¬í~äð:©Ma"žrE‡2¯YàpØO)~â/7^Ç•«Kæc*ü@&…$~ªUÕÙ)d4Veݾ<ØÏª%ß2Kñsh + øa¿xr n|û"‰}ÙLGµ[Õ… r†ÇÑKÒ9ÙíñnW‹ëíÝ_~·a·9’H:y–ƒ©¢2½Äɬÿ“üØÑG/—ÇwQ%—‡ê«hüÕÎVÂ*?uþ¸3±ˆª„øF 2Õ5ŽÛvÓPúáÍšF ô³àÅÂäoBˆÂ [1O'îɾIÁ®|u̵Gre®„òÁÄçÈ•-O=Ñ4k¸‹Ï㲘æÞÊÕËà'­‘ÚÓiY|×`A(ÈËv/°–ûáàëø§°O4+ÕF嬨— ª³Ë  X˸¾#P•ÄžvúÀx“øÝênRvM-¶RäRÊ$eóG"%sPQNÒíä´ƒô¤ = ³Îâ*°²öt—³£ÛTF›ê'1’c§Ÿ^}¿ã1†%d]ÝQcn€mTW²û©}ºǃ2ä§PõjL›"ëK6Fî±ýñœ‹xE:Uœ”Wiý^˜ŽiÕŠc¥›¢¨ò­ž$8¬;‰ÊZšÓD(Ä{›Ï¤­óÕô§w{Ôlr EE8_×vÆ\/[Ü\'Á+µsôÐÁëlˤ€ P!óÁN24£ø[žF«êTïJŸ°m$¤‹VƒªÏEд…ÉÂǸJÿ¡îLŒuŽ;Š? W1•òêj:OˆÄ2}t¶_®QÚëNªÎi—úT«ÿlÎæçZ“‡ÓI±›Ï=%Þ"³Q‡+cÌKÔGvªj¥ˆàç_6Q]×€À¦ìóF *Gq G3»?uK[³»D^JNçõ^M€Õ¸­ ³×Ð ¤ð*Gr2üSlz`&BUžª+UœRŠñiêÆ+ì—³F„™×ί"”Ž”SZåÒ «q?ºÈÜÜ£nEÇ×»gÅ4„½£]M5 MS§q(˜ðØBS`çîÉQ¤?èRôS4¿6*î >¸O¶j¿wº µÁj,èÛ¡E¾©¸û›<» j¿Åº‹B" HÕÅþjE;€6¥óg/ŒîK{»®è´Â&–µ5ðëÎH“ûŒ–“y=×™:&Êq°k”ˆUÕSÐøïÊYÿBíëA —®ÌòAçËÆÅ*²öJ"éðX‡¾i])³’T0' ^€‘Ìw R¨¤ŠÂZ1O›Ùl…%TðÖ)O¹ÿÛ²Ý?ɵбëj][*Ñ~+ï¬Aå> Õuo›šŸÞa E X¤(~ÔdClÕk.ïãH<È;©8¥xuh1pÁ¼F‰Q”}¯,*ñO Æ~!’±@ªšû©» ’?­•Èý!v›,‰UI¹ýCù¾‚u)–*góRö&(ëªà¸å(¦Ê^Œ¶ QÊ# öéÃ~{b¾ëNŽƒ½58„~é´ÜÙg-z|ÝdUvöÑ Çkâ)ã!Gn²Ðm#LŽÊ«#€|ê ô¤pdÖ>RU-Õ»r´2Rì]V õ“§I|ÏÔræ5{ O#u]aY¨ IŠH°tÑ‘1ƒÎ¢§Ÿv‡b}n}ÃnõtŽ€JUwž—J‰ÊJ•‘ýÔ{xxHÅÔÐü‘5áD=©(ªtÎk|[Ó!ƒÞXHVú­}$¾Ù miëW@º`eñÁJLË.ÌΫˆÏ{­Z#>Êrò#_TÊKŒ©Ð9õö3ot-·ê£m¢Æ'*ßžÍÙùézvjrå\ªÇ™YVNÕzæÿŽSV¼ý¸/]“/}áŽî±kÄ’í–òÕ¤&n™,k"€ŽÙ€:}Mç­¬>[X;ÚÄn,öl¢ZARË<¿W%u{å®ÈÕ¤8q䔾èfaPNÊŒºß}i¼¢p¥--£"aVçèWA?öªÆë†Ú$y­ÙùUø_/³¢³Äµˆ°@á­º{´V¡xYŠƒI%$¨þ)­æÓÂO`ÍÛUŽPWÐt’;ó2^|‘¦ëîëÁÛj³“üá8SÓdÄr*GµŽž£Ÿ} )ŠþÜ€Šªä:M ª ¾ŒZ–ͪŸyx¸O Suý -´×NÓ{ÆøÅ©fÝ‹ö–£z`áðu2ŸÅúN6XJ² -@Àvqš} -‹Â>¬·ú…àúr52‘ä®÷³DТÂ|V]|®¥8¼„&Þ IR(Š ¿žˆi¾«¸½`–˜C?V£ŠÉ·ÁPU-h.¶.©$U™‰!ô»è‡fª¢dÈ·Ì?=8—–жî“Nn¥_Òø:[— §à"…eªÒïÙcð”ÛÔˆhŠ$6O¬1‚GÚ×| –®v /ɽðlC’/k–9»‰Õy\,^ ¨ÈnT*á%FìrUF^£ˆóx¨(0¿mŠžñì÷|çíB£²é5WŽ]æüûiz^©±òË¢>,¥xŸ^–qÀÿí5=y¥çØ –®v²Øƒe±H ßèzQ³œ“®n³?VvÉ«¡÷’‘ë8f ûûe«K“ÃD0 ¨±kmë‹J‰—]£Wj;) ÑGfIR6´4mhËl  ]˜¨h˜3âEð)A5¯:Xc¼ÇÇòZ9š§Î|&aªD͉RÏ9Wï—}vb àÝŠÙûD&êŽÛÉPÝ^éÂÕ¿¥«œ.ÃÊõë–Dº¤IRJñ?T8ZÆðÿ—ª¢Å$œBÚ«Áæpz«¶0ØœÐÈ,¤”IzW騚Ä!€>_r5ŸšÜ¤¨<È“TK°|AŽK‰÷]÷+½t_¤+ãçnÇžÉݦΞiäܤxA¶?Ï:ÔuàœÝ2,iêYG0iUÁ¬ÄÞôzYˆl…\§Ì‰]$˜ˆ“LåG9·› y5-r~¹öÏcÚý(¨D#«‘\T÷ò@† (Æ:5̲:¿J®<‚SrŽêýC¹©”–TfV%NµXíX+(#Gv]ÎG|G~‰'cè&6hè8$Ë©hCܹ‹êFþÍgGßLR⥋Ö|f2¦4dU¸‘Ô"OdU5ÀãŸ&± S )¼ó$äÞÛø¿îO7de´ílFgr/;jT‚YnKÿ›­¼ [0!P»?ZGñ#Ù°QŸs5ï #ž`ƒ:'×I»ìp’óîJö­¹”îœu±1¨CÛ5’2A©ßs çzµ'óÚ´y‡Â˜¼ÈËÖ³ Vk•”–ÌYÕ º(²‚¿G-ÍÁ.%Ùo–5w\(ï€l„’‘*íÄÿ’Ãìòç¥?DÃ`zúŽ5ÅmËW ËgõK<Ð+¦zÞlÙX½öÈw²Ú,DXÈR³õK•x•ÒdcZ>EˆŸñMÕlºÎÁx~Ó¿¤ë¥cjW“ù*J~ómö†M¯$*j¬ëêçSºz– >Ý'tf¥‘䯶¨gV£DìZ± §'æÔ0Ãbá´`oÅ:³(:ëa×( Yùv«Ê´^Ùð·ô˜ÔfhŒ—ú/,óìA £ÜI‘´ ØÐùx*ËP '•ddKR–Lvöà°i ?õt[Ž‘8zÕT6ã6-âÙµ­³R^kQg7îW?ž)¾‡´®AjÒVØ%¾ ÷UJãZèÎ}Ú³€ UФHb-\cR†8ôDÜ¥î©Ö3j2Ïù®Há—D¥J³,mŇÄà{}æTò…%_õLþþåJ),õc·{Ú8köÙ$rñUáÑø°‹P«~ÀêßëÕ½½§Ytl €ÞÆ]Gˆ!™^·ŽAªµùhsæU•'¾—CmŽã $%KH‡'ašíe ÞÔ쯲cnêÄâL©= bó'Vš‹¢Ø³“ÒX”Fÿ&œƒ¨­%vº5† ºÞwº¢•7½ëƒ1ˆOÿQgðŽœ¹Š6‘a¶M{ï ¿hÒàw½Àè[‡ÜÜw²Ln(×óñÆ6eµ#jÍA}ÁÉ]Y5½Žnnôz^áhØGýÇJ+¯qÄàYŠež‘ÝòÛá ÞÑ3õÝà!i-ôOY»£Xì´ÝZ¢x€8<Âf›ƒ’Ÿ|Í󔣆³S§ý’…+At2 I's £öN í—¥³Ù ` ^˘ßñô¸eM #o%Æ©I¶Dµ®D¢¤Æ×˜”7WBZIr3∕¼/Ÿù9~ÖTüótz+ðêR:U®G [¬õ7N:7Y,X—!&‡@V”ÊÁåÊ)À˜nþÄ»¹igžwçØxú¸jz'Q-ûÔÉq’¼®È·¹Û2ð“s"X’ߦÂHŠå}gÂQ#¥dÛä#eŠŠãû:¿¬%&>ü#pÀ—®„àzYê”q7Ô]èDv¯å+¤[û.NŠPþ?$²¡I/‰[É$áΕgmNÿu½éxPU ©ßÆ¢ˆ:ÑŠþº=z=Æ$øú¹2æÛ˪gê³u»+!sžíí¸ÇÖÿo&mÉ='V‚ÊÙ¶)‹ã=S ÄvÊ9ðz¥èÿª–òÊÞË•wÚlåæòF„tÒ%9€¬a¤Ô² Ë5:¯ä%K‚nÓÛ^{Ó0˜§ìÑ©«¢F æ×©b§,ä¾ÐøPÞ»X` ¢»äq°TOY»% ¢YK·[åµÑ/róíÈù,º¼(¥äG5 ù5ëL­Ó¡dûݳwè*JyºØêƒhßãVø(?£.…8ŸåÙw`)‚–€´è~I0·Ž‡6½’vWñùL—Ù$]ëw‹Ö‘˜»Ù1,¨nG]ãÁè`ëÔ ztP2Þ h³ÿÉŽ|Mï2•‡öY;i":È  H¼»ÔŽ×”>ê~vˆH¤ûãWkŸ˜gëléó¡õêÇ“í„ýDpuØ9XFA•Ò‘vó{/¥"pØB|Ù€òJ,ßå8¦ŽÀ‘‘¤  7Z† X.Esv]ë¿!ï÷–‹£o½1˜+«×ñRH²ÎSYÞŽWaXí±5¦#ýÄA™$íÈ“ìeþ#/Š'À×m›Åò*jEÂý&óö¼Õt§,“¾ÐnmÏx{ ÍÈtØì Nñ¨.‹"oöQ¦؆°¢.;8³šd,Ø|u‚#ª8£—1Àºqµ¦_CÀ”n¬í­_F͇DÚˆÞ¬ùªÛÙž–No:ÛFRžaIÙc»3íE¼Ým»Â:‚ôøævkNÒì\µ*iv8ÀÐä<Ý­AÄ­Ñ€M×az‚,2ÇÞ›Ãü€¯¦ì£FKE3l>óêq‹âS™eï"ùµ Ž(欤ÃK”íì\è}ˆ+ËNôi- ë¡ÒrëQ2@UvþQ Ó™[Äo˳Ê 2|X˜|ȼ¨ŠOM(¤¨»eOU¼lÔAWGDyËäf~ä€Âµ¤r,e¯&/œGÆö0†€¤Éëjïðà³É¾ù ég:þ¬"€Ô$@–|¹Ž¹ÉS£ž˜žñßÕéçžA1¡x„Z4  Œ5= „ö‚´¥‡|u驸({r‘…Xdž¦vgÆ$^L%.•H è6ŽÎþr×8±ÊJÙ—G1\Ø›“trÇ«=¹BU](ÚžQœîÙ ÐjA´ù]øÕÏ;Õ™Œ­&ñA¿2P³àêBJ¢c³Ǹ<øj6ŠlQð/qd'ÀrA–™UHDÞ¬ÊBR¡H‘Ôö~Îh©¤([k¬RâÐå¹N=M`Ëé?®gÄ¥&*E·v…e–ðªêïLL¦¼¶FØzW’!*IdD¶C׸ŠBë+iEÓIò¯l¤è/1ÆCÃÍJZ2N2\ª4Sy‹ÕC:Iâ[lê¤3UÔYµ–#AJðš rƒ–X"—ü‡±_?–Pu*EZàíøï<³±v\›×Êó%ÎYÅqÝC{|æ¤_GvÏ9ë\¦NðŒÅqλIó$c«ÒKâàsîMòÌú{ÙfŽÄ(ÏGªä¡zZB tH‚•>(vø•W›é/y›Ê·í!Ë¡€òø¬ÃÈlè•H é³ õ—¢ ÷½žìHæ×VØLîÓØ”„õÐÄàú wܘÍãk¶Æ<Ör­ñYáŒTJ³Oçd:C@½(ÛÉHƒ¤€¨_§rº`بs‚ÆÕ Å1ƒPµN?fÁÀ\ÞB¼¾®»+ï0jÖã”P ׯ@»<Ú\¯Ã¼#wIyÉ6½§‘¨u)[Ÿ5#÷\Ê9UžimŤèIõ$¹JZ~¤©T¼†"°K¢,nÁQÝñ)ñ£7šEp´´i¦8iÑÁI.IÙƒm¾•TúÒAª³IMX©ÜTjè’—~ËqÆÈÃhž8´®ùªÓ¶Î:rn>Ç\ܨúc³d$˜Ù@¶^utFÔ_»i<^;†ýÌêžÒz.ŠH"‘@ƒ]øÏJO…^LV"a“$|Kòà•%«?i?wÉUÁºÿi6·Âû»Ù‡”ð<‚(– ™•.õ5) mZïNz?>S]#j[FÛf‡ˆ Í»ÜÒem1¾»ãÈäåeYÀF¹â»UÐ`ïÌ£¯NŠrü ÛYti[µl»å™t¥mGN„ðekÜÌ×YÊX{!uÛµÒiÚ/\Ï©¼ÙNAzÄ)]h…~âUìi…ˆåå=Á‚ÿ‘u°³nÚEÖã6;LOQ7O×[òèx9ÐpFÙ\+jòÛCÙJ¾|D ˜´˜÷¸*¬²w?.UÑ&×}ƒÖ‹©[÷¢³¯¹3ñ™‹ýð°²› Ô¶™¶à¤„ÿ$ݾJt_È÷ù_Õ‡È~”R¥VE7ô g½O³˜Šµ;Ž{höõôH½0倞’çÖ¯D©nÂ÷Îv± ¬’…Ü•-¥eÁ^«êÆÅÅx% ‘¸'½•ôûèYE>4_õÀ™gBÏ—MLtÏûæ]ju/MäÍæÌ¸ˆ•]¡ÛC+ž€³‹´¶w”K¹ .ÓgÌN×Í+ÅËþ”âó®‚ ¦eaªÙ®¹(…L=ÑÉÖÞ,5.¥ç3 ¢ñ5{#X±ðfu%d¨¾ÕePŒ©©&”ŽÏô¤…"äMÚYUõ,Ô›6j ‰têVÚrÌİÛ3 ‡Üˆæ¯B2:°AeN¤Ü†13&U iMò èi8 ¨±–õéÊzƒHÀSò+¥nÊØ›Gßžd×nÙ×òðt=ÄêCÛh@¡£þßéZ±aÓÌ«|>çÐvÀíŗغ§ð¹Œ|, À4Se¥üCÝhÅ!Ðô¼Ý;_ª}P¢±×¸:ÇÅPˆŸ$/µ·JÖÔýõ°ŽZޤXåä4ç&y&¬x€Jóo‡Ù¯U´›äáñª¢³dSAnžHš&¿jði¤úvùvyN˃Âá¬Ì}ùf)f)5‹.JÁƉ] ž¤,F›(Ë£…DL‘ØÍËà6käÉlçÀ»wDá!&ÚÚá‘’3çVTKU@…¥644o¹*õ²`AY”‹ÌrQ “ÃËwàÓá7v–l.¥½Õ4sªš­7Ÿ3qN8efçëÌø°stÅšøLB]ÀN‰¿jÉ•|DÒxQ…ÂIwç·€õlkñ$ ‹€)()@b/ί±«Ôó¹•}£ˆåío #•”¾úA‹u)ÆþºHí$âH±–‰›âîòiUO*IÑúzLϣ֞Ã='J(‘~»"¾`ÅûUªð~51‹Ú"œ·/wBê0´ò$•²@$±T=R`·é+_@Ž$çøeâÔ)US c¢6”’4Çš}zJ bqº0°¦ÖæI¬s4?µE㦇¨8ÄQp†ŒÒ¾ÇñŒü–CêåtžÁ‘ÄWª)5w‹o1Ò^ƒv|º”7ÐX;4¤@P.”<%ÑRœ$ ¿"à@mhÙ_7è5Q¹}`D«3]V>ÕÝ´¸}Úì÷ÅV¨öËœt“P×ä;Ùgj²9÷N¤vЉB¹Iaâõ½ë^” .Ê™.~lH£Nf7|:¥’×äkw:>ZŸ‡h¯Æ¨j½¬éé!±êR¦¨6Šâ)ö¶šå:=GÞžÖ€ZBWB{Î*+­ë [G-€>>ü»œó]BÏ@µÈöê<$[’Ý>¹o%Úm•¨/G¥èÁ³ºœüo_TJ”£š˜ŸÅNÜ}N@¬OÅó“˜tØè.;é(ìÜ×5Ù€‰Î.Ôcr,Ù¡Úø”„FØ"¨8[t?ùLNdO婆lÕpí¨cÃÒ°„èÉ^”Fç½ïjzCõªÏuƒt»Ö"†-4M-ó¥xÍã‰cOÒ÷¥£5øºæ Êié];u4Õ'Z”N§hù Ö4µsÐVdËïÝD1®ˆÝÆ®Î3½S Ch,ÎÏ¢ð;f)gºiYu\„wžotœ¡ªäE6[­×GÙ¡ýª{Fî§~àÂŽgª!ê÷ )–ìØš3ÑŸÄí½*®wj¬¼N?&}ý`IMß0éô”vd­ËÍHŒÖÜÙ4»!š™ñ³L|°µŽáYÃâ ¯-¾! šÏʸ€Vz+U²"ÃSºÈ©Íé0>ÑŠ—&`ý=θ”í$áJlS‘TnYå”;õ~ážÑ;(F!kCü÷¨1ÀÒ,ì¨Åda³i¯zÔ”9؃õWÅŽbíz¨ÌcÅœÿˆ¬²oÔRsU}ª€û#_<2²¾\2vÚTa¤8«"fPOÌA´Ù¥[³£@Ÿ"B•ˆÈÖtuU”êäÃ>à‘øû­Ím½X~Ú8sR"™Îs2¯TÚð.Å÷Z„–¤šHÖDœÅعË)‹ý›f—ê(µ†S$Û;iÑá{âBœ7õ‚6N‰´zâ)3ÃíëÁ´ºý­ÿ$ Ÿ’ï³uvÜ`!ÅöÌæfßцð Á§Î%/qÙ®ìÊêQ‡±cȆžnõ‹zXDàÜO~Edy‘œûŸË 7²aÐâö;s ë‡ÆÜw¬DÂ¥3[POléMØÞªÍÚ/Pè’¯S3cP7i»À†,TY:g«éKª~QàDSk‡ƒ3Òá0¤Ößü¡÷Uð§–¾æàüÎêß;j’6€G™hÞ‡ >Øfj}•vrºf'dk"eÿl™J«²œLGö®Ê·ëŸîòK*=`oqJÍãxO›'l«´  :¥ñX\ê=љ˜ôU:-?¯‚0‰pký¥t±b¾žñP‰³ë¹í碠ó¬ËÄÂ¥&Yn·Ü-¹ŸØ,Ÿ0ÊÁXê³GTMCûe³’À½œXÃÅÎê¶ø+KŸ`@ýyÔ&ÝîYÒzêÖqø`Ð.KÔ‰Ÿ—źÌàÞ'ÿÃvжd:b^1»į̂‚¹%µ35Ö|¯ÆeO:¬‰=bÕØDõ´º%¿ß¬Gq'(Ìa¼V$qœ¦YÕ‡’e½ÔB{nkqr{çk8äºQ@`o—ÅÆã:©iJ7VÏïÖºØ ƒ•­ÎØ8Œ°\d?8}N0±[Žˆw9ØìZÇÒæ<Í›Ý\³MFéÖvIò`å¡þÌ-ò>´‚ÿ´'ÈyÄw9W\5ÿ–{¡Áo()ÉKä×,“µ¤j ñµ•=VŠ,•ŒÙ~ÐAwa-•ð*G,B \¨@$W|S©¯ Çú”ß`Âr(mÕ¾U|ùl£Ä Á “ô__^vM<¦f–¢DeÊ,ê9ž—@4;€g³MMÕGGñÁ,Põº6î[ÞÁ•,2gu²X-¨Ÿ*¯>S’©Íá¹Ú<&‘¥|–7{ü¿£¾™TáÄ<ꌯýëåVjJ†vJOvÔ-h˵Ԋ\Éé@Â~&ãþCrþ…`N…Ê_]7°š;&‰T·›¬BuŒC<“"ìˆ[ª4ò'_<@Ùù ð‹œ£“åÉ«†Ìt€¿+üBÆ£þwýTý• J«VžS%¬ÈÈ-8•®ñDüµo—’î/°æw<>¶O—ô«_eœ)$H0«ù’©²ÕuzÔ̳¿Ä© B¢ÒQ÷ŽJHŽÑ¡óËUýÍ-1úzIÎTTAÅœð‘ @‚ Üòd‰D³(ÙyØê¼¹ø0åeÛ¥ ®w昛-Ò¤¦2žzjÙ’­˜Ìm‹²bs£×ã Ã¥ ¡§6`9‚%%]ŸD>ri]„/߸cÉ* }2ά©/{)6©*µ›¯m'=~ÿÆ«œÂ¦Ò xÊ {ï,ÈWÕéWj íz-"ËN qm±®SuŽf âÅCòµ¨’ûy0~“~ò} 1×å$%èÝ#Éo:Ziû – ´‰$¯+6Y%Â4OG×›"©7‹÷ lçt Ò¸ó™^;,Zéyh$ Ú°â4üF`N¥%£ÄƒxëÞÜ.Ï›%"¥ÉrçE¿Ž3õ¸½/«`Õ$â¨5ñî—€k\Gt‡TÚ>róðl“ÔÝ› é qœŠý¶Ó¨R0‰ëN±u•3|GÕÌ/*­ŸµôܹðE„xikTAŠ}tÀ›2K|\fdeó ›’̓›$46Ì׊&Ï\àrŠÃ©AÇM<„¼up/¢èÅ^ã­¼JؤÛôR4\ɑʺ`ɽjé‘>É_YKmy„¾cÜr¿¾wº¨S]ái÷YóO0r&ÑIŒ¬¶R2zâa@i]2ÎÓ®OÇéÎÞVòö¾¥éwîÊ‘NêP’G>æçhM¼¶½”>K`i+’­†£Ü€å¸u~•¬Å¶r’kf{¨Ž=ñYÎù"'¼/â~³9k(>(ÇõPî#ÞþÚ9ÖjdÇm[®|N¸ò&0QD[ó‹m‘Ç$ P©y¼÷Øíg÷[Î!Kdú¼ÈOT„|šhcg‡¦ž(tA(›zˆ0=Î` Æøª†]âMŠ’“2£Qõ’Øš+û‡±ž´Ï3üª×'ò}”"ÛŸL•­Q(f%mÚQÎEéýmçÞ•Û‰/Bœ&šS:ÓÜÅò5+‚úw¸ã/îëv~˜ ã ¨£Ž¯pâU,ÁqI½íe¡­(p,æ&áÛΘiº´Ô¤ÚG`C«z-Œõt`Ã!ªíDú$•ŽTÒ<þ‘_'›“X©Þ›²º‰üœÈMT7“|6м•èÇS? on7ÉÛzáí¼Ùçq—çò¤S*– ó”À§ Ö% ®IÑöÉGÖ¡÷¡š‰oêÉo?”Šõ–»¯ª{6î4IæÚɇTß©P %þzÙíõS ›’PU¤^¾b_®8zrÉ_S‚‘5DÁ”šü7}…í€JÐí²ñ‰R7åg®a™­@š²-@]y3¨lÜ·‡þYn ŽsŒ·ŽŠ)ñ¾¥]ê/. Ô ¬O”ñÄ´èwBñÔ‚ˆBj@~êÓ³I> '¬ž#&{?TtQ¦Ç™‹>ð$ƒ&!l=Ós—IÝ·AsK\@Ì<Ÿ­ÄÀV´õË6“b|9}yú&c9¨1L\á ¶dĬÔSde*x N±€b¼x¶,‡¥t'‰tª­ç gÔ—J­Íà <­¥'Œû>S^Ô Ñ1Qð’3©½sÜS¥zÐ3ÁÙƒdûúGÿœ—jÍœô±¤®)cñ¨g=Ùov&t~f ±›”Ñpy:rЩdA­S°<¼6¸šm»f|ä‡*e£,X¢nÑ“ ƒB5Šo5Ð&ø%ÉÞNµÝÆn ®¾çážäÈJdñ*[ú®Å!‹ÃTvj~³®‚ç–sy”I2‚¯q›YÏCv//®z˜¯ Û˜à¢s'n‚Ôù†!ðªj½ªCD•~©9lÕ²’TMÒÿ)ð’¸t=ežZ«tÙ¼ú{ÞŠ¯pßÄñàÄb¸ÄÁzrtP[8îÉI™À®‰3ÝNNqÇzÒ*wy¤vøðë˜ãlã£Þª²æú+˜n)”,¡Šö÷>Ýcù€mÛôDG¥{YþËÑÉ!fZü‹ãÓŠ›? ‚}§î™b‡Ž‘MÊ5ôpfŸÛ` '2µ#dÐlå¨iýnË År6 Ëó›î³R®^ÕÛõA¨W,»7-;¼.}šS^*_OßE=:Ã(ÚÆjuH½åÖ;wÍâžÝ‰'PЬ ¸S™Ü ä ŧørË(BòïÍAÙâé>aEÁ B­Ó•/ç.‹f±¡þÎñ:ï+JººÚ*Åìj+L  ®P°‚kž7NœÙ_Ù~q2áyUBÜÓø˜_™ál»ê‹rš¨SòyÖ¬ (ñƆ­\3Ó]ð«< S~‡Å±-ØûmyéDÒ(“‚ƒ}Á ¯æD‘ú–‚€÷ô°ý²äŒ/Áî£ÝÕ$RRÔb)¿‡/H;!m:6&àÀ›ï¨y†_<áÊMn“{‹œ•‰}™^¾²%ëöïrÚ@ò~h>KA_ˆMeÊT¼£clhЕÌs6 ·×Ø mBŠòÅÔv%bÙy\P&¹Qµ«!J4䡼ä4çJ”g÷*BÉï‹lH6~²§ºSÔˆ–G<€n¥u”ŒWv,ª&a[³µ{]Ï×ÙÛ2¯Æ:j+©áÀWò œä@ëøKíã ¾HÈjLÌ(JY _è*Ĩ³½¹´ÊX6TÑ>);_Æ{TÑ¡‘Â夅÷¡ìã™PZw™‘:”P^må‰dݰ:UDç[øibìh*£ª¡DŠâ%T,C1ëº=êJÚ:)àM‘TºR?UR˜ÃW_׬âsTøŽ‚#yùû¹†&ó••GQÆu´jJÐ)鑦îsBG)ûHCôˆ¿:ÙZÕ0åbkv•éIj°ÕEP‘+ˆkŽªgb}Dë¶]Ý)<¾N‰®ø‘¶:ÑŠ‡ñŠB~%ŽTÊ ž3ém,Í•·“³¼"ö[‘¯£c7²g€€ßrâî©mŒÆÚzTËÅd1·­üÅ×(;–¼IëH‹I®ö_Žû8MMòO&ô´ÄÅ uRïû‡rÑVïëúšÜ·»Uï‡|fãéÑ9–GKÒxf¯Ö¬Yh¢ðPƒ €’z|üÝoü"2«²ð,<ŠdK%Óì"P••ù‹ŸÃ¥YŒ,(ÇÝ‘¢«;€K™9h%Èe€·8A’Ò¦{@ƪÓGvW…÷z‰ì¾*S¤<ÂSB"aÀAh„íq5ÀñH§H[[ÌY—b$BÚ§np‹ê8Ã# 'FáŠu ÔàКï AÍŠ^)‘u.@Ç=œMˆï#ñÎço¤¤´:á1à4Ätˆs BŸØ®« ·‘§ÏéÙTV½{üi7RNˆ” :EŒ”/|æ…¬' Âf½@á%dðG8Ú…G—4Y$N@¶¤´Mм8ô‹ÌF¤ÅtpàN6jô0Rð- Òí¹øYò†5wàÉÃÆ” ªB ;)™>rô†È9ÄxåfBâ’,bŸ¤^aLb¨Oš‘*òQ»=@N¯OsÐÖ0àœ6D)`©~‡€òèfš‹æM9 ‰‰:4.ši¤tï"©,}B¢ú9Q dÀ¦í %V±4€¥gf—˜ Ç]~Ç%œ”»¶—7rÛ“EÁµdË Ec ç18¹ÂI6NaÂŒä!©Æ(Ó”:}äU£uB¢‡9mf §R4ÿÄüû€ #B·“À=±åp¢§ˆê¡m¾¯x$q=$ªU¤6së’FÕCE$ÚI s!{e˜’Ü‚ÎMÔ#ŠIT; ZIŸì…>™±}…LSH¹LŠfÔ&ŠÓ.K=ŽŠIÀ{`J2Μ;P[RÀ-© ."¼j'wä‡Gí n—V>F÷Q÷Ïãœ*tqP IŠ"#îwE‹À%‰‚ƒ1`öH»LÛˆ„ê_›*ƒ´Ùi06Èñƒò~E¤+“¶ã’!*ÖF3D¯d4\´‹ÔÛØr‘&%·HËB˜"»H©Öõ0˜ÀŸG›-žÈj‹HD=DÏ'ãT[öi9À›¸²/S'ì;h“(@=IÕIqâ|8ލ%D “¨¥ ­å9yÈÆÈnÍ,äI V¦Åè#7Šç !˜>uRˆˆÀ >rÛF¤"(vPš,¼Œž@n†„Ô<$ä#VA \€lW¤“và9³<&)—À!£V|§)’Ò’X Û Ò\ù²÷áf%-©¨p Göe¢²I@¦} /tÁ߲鑺"ö­ƒx¦vÇ# §Äª=,^Njê®ÓI¸‘ÔÚ¤ÐNCštaÚp¤Óë(1’Ô„»£‹ÜÀmœI}÷—# æ Ì62KHuý¦ Èá8n `¡_ '„k ^®Á>P°Ó°ØÏ &‘”^Rµãž"ò·9MB̰„Tä(&ÝŠT?U¯0øˆ¦¦‡1u]ƒ“(œny §ÒŽE(®CÔ¡*oH†Nd]’pDÉð<éâ FIûDJX2ëbCL‘ jUö¿fYhµ£µGÖI€äÉ €˜'1ÕQ€Òz}$"A\iD Y¢1™é>Î-iC¤ëmW â><Ã2!’itÈ>UZòd$x´—ôÈ0,FLŠ­(—öd{&ªo"YB…z„SI%´ ôIÚ >%NÒHcDq7æjLÒúõ<À¡}˜Š”é ZÔásdîÃy )ÜÈâ›"zΧ…¦~D#!{»O UÇE BîÈP€‡ ^hFA/UÈ­ b%¼li—d2òXd-¢¨r²â”Ÿ“‚Gˆtí–É¢Îqm¢I²#ê'qª"Û©C4<, $©D0‰Ù6‘ÉÇàŠÔäGq& fÀ>’ü¹È›DJ+Ò>;$QÄ p)¡Æ$-„d‘ž—*â\Ô”­\¨®8¨PǨ^‡ÍX„ dßýLÐýA¨:puÑÞA ƒ¢†1Žºñª2ñ3Â/É.t%¹Glà«°H’}†\ã8I'½ÉŠœ.í.bUÚ-¢©%Q3Q ýK67‰ŽcÄí —…|‹Ì¼0n‡ºUr~÷¢¡G=Ò[;Ѐތäa5$:#'dŒJaà©.”J»HP> q/aÕ ø$™,=Ò)‘pŽö8ÒUh§AR\bl©ã¶7è“Dò¸¨+m´“uºH¢EV¿‡Š_$¥Ï“"UK‡X<D]°ém(pW"©m‡3^¢Ö HÒðÅ|ØmÚi}$c c8­S¤ÜEnÏ>\S(¯„r>¨òÚ…K4B˜”ï"$Úò0”Ô‰ ‘ì ‚‰ŒÃñv´“)‡Tç™É©Ë´Û¥A> ZQ¤x…¤,õ‘WYàHL’¥$.¢`:HHÂNÅ 6]Øz´»´ÉÞÆ~á›u¤¶Ábý¦ôBjØåª<}¨‘ˆKí[¤÷Cê°æ„®}DLD©˜<ç}IP‰¼($‘n@ÄÔÅJ¤¢ðPQ¯?@ cN‘H•xÁ ø¨¹¼“¤ïºzÒx†ìYÒb)ÉÖ 5ê!ˆNj¾¤.IF?iM!ò°„8“ì…P|ˆIOHzôU‚4ôÄl¦M+æ ª´%@ä¢ü©zžƒ˜Õ#6 Å‘¬HwÀÉÈz'Y–’HT†tÐG•AvHØ’ø½¤\ì!ÓUgø2º´Tz¨ÞKJ–‹à‹ÌWT‰M‘Íj^ŠRu>íÄ@é¥8—Aêz 2<¤ƒ½à2Pƒ81Afs€N‘ÒIeHûôr¤âìø.ð_¤>Á‹†½¶ ™ à~}?V.âîbd-B1TtŽ’]® wŠ]Ñ*€w¢öCÒ Ò pI#C.QWuÙ¥Nj HWŽDGpw¹‹HóvŒ¬(´rN2JÚ·#c/TQ€4¬æ“er€$:.‰Ð Q=„¶-åüÈ®AVÀó: B^…êÌHÔÐñ‘I&"*ˆ´­ó¶pfèÌ6€¦ê;(Žì÷°B!î`öyõò´ßCŽã Aªƒâ ùÌ‘Gºƒ° ' a YfN;à@.ä”%v#µ±×‹i €WôÓŒ¸i9i6€Jéâhž˜Åí¸H‹Ù=†ÔgÚàWF€4 ¹ÈCãÉqVÓN‘{ÈCæNÚ?Ú\h–¤š×¥ÅG–m‡H:z*ätPËa#ù(§(©‰lät¡*’µ”°©€$ÈÅ†ê ´‰+ø‹9K45jÇmä¾Ã™(±N¸ ‘F}†ÈFd˜’>ˆ%"y‘;0fŠù%©ݶuqH°ßi[óH=BpƒO<ÛC0cÚIù -‚ØVqN³6ŒÍÈsâc§%ƒ …§}ö±Ó"O‘ÆKP_.©Z°nbÏU)âo’Q_´ÿQc¤*"HÕ¸h `¡rÙÁžIœqA³)Nv¼n㤃üo1íA„²Q)H^‡ºpš¹ÍøŠ¶B7 uqŠHyJF+"Â8¬àdèÐü%Õ®×&M¹W’ˆó …´½Gðë¦$ <¦&õò3Åð!† ÔÈBF¦j,‘Šòb4œDy8•Á·È+A:6—š%„h‹ja¤Qô{\ÒUÜ3º@ôׂ˜Jõ‡Úq9…@“ls@[HÒˆ[;@‹…¹M‚`ü„lšY”L¡!´!ðzˆöFI_$s'á‰D¤kKô8çÖ%ªBD(„„”Ñ4Š.Qàe öh—‘[:A‘'àÀ}äfsd…Z P‡½€Ö"§Í ½u€rEÊGÚKbs’P]ž¢éŽ‘–t[ì´°þa!¯% "ˆvxÉôU$x\$»‘Vœ6þ^$b»TN·= =º?@jV§‡4å=Zú¤Z£raÓ +âs®ÞˆÐ^”L'9P2‰S éÀ+™Ï* I¤N´C¤F‹h¡¢:R„ä†~Ù1:8‚¿0‚ïãœÇGgR¤”ö8|å È Às§ho*Cš1©£´ \äm!&D°!‰É6Ç=’o£‚m€ð$8.Cxûû¨RŠר™ Ä72ØvQ)©O@› Pi0¾û]”›ˆRÄ"A*<ý}TNï†mœò`cìcjhbhAš‡0AÎù.ÂŽ¨÷}ÕøÞFä …ßäcŸ´´A˜Âƒš{¤›´ýUÁȤ#ñKzq:íðȽ¸¤ÑšJiO /I:No„MƒLk.pÝ $ÆtQ±#èøl õ‘¤ H ÚŒ‘–Ðï2q¤hÒ:Hy\¤(¦(hA‹@7ÐÔcdåìÓJc!u)¨+ P°ï*< G{BÊ! ‡ œŒÂ¾‹pE—èè?b¨ƒ.ê>’BìÅDÒ†0á Bq §I“…ögGåj9Ó= ê¼ `ÿR±‘f ÏG&LŽr}'êõ=R)Ú12ÎJˆ2fH•ƒ:Ì.bVÛG‘ä‰ûDy’T´Û¹!Éëž"b÷á+ph?$“8@ÚXNéÑ’E¡:êi%ÈaÚGYýHõDÊ5’ôICû>‡ŠùIŒÃÍ.Ê^’æ'˜?äî&6²ÒAqÀü1}ñ#)©9HI¨4¼¡#$¼Pd4Ay3’ª!Ò­ Þï•Äj¾öHP“õQ¥WuÚXÜ&Òêq]€FÒJb§ÈCúœsÐuHC8AÐreBpOLÙF¶ó«$.|Y8NO|äö {}”EÁ©"ñ4=ápnYl®SDÙö¨Ÿ R5à’Ë=G~~?¤f’ä%åEI æ¹l‘©e€%…ðÝ*XõU¢n‘C é¶ö¸¦mœ§x>P†@Á"g p/d/òÉ=*i¼O:Tng€<—,ÉÔCÒ7¯ƒ(BÒí¸‡RV0iH‘â줼d¤'16ÀU(—„$¢IvʔևY… 8À ø–i3ìÏ¢„0¢i?ëãàºíÐ0±îH?éwÛ(’Ž  ÈH‚@<é ¦‡’N¨W‡ ='¦9é ÎÕ¥ÍÆ…Õéô‡{’ÚÓ‰Q°sF›=âOà1v%zœÕ`´ÛØ€Be$io‚2Oâ€øY&ˆàaŒúRd*t‘Ÿ^‡ëæ’‡\/HåSõ!PQ¹"~9ÞhŸPéu‘÷΃Q„F2ÖPÞ“D!2; (@äÛÝ.çÁ'Õ5Éd¡­;|šg¤?ö²œPH2'("¨^õ©×m/FùÜv‘Z3À’ašB'%C(¦õ rû… ²¸ ‚éôçÁ#¥‹,3ìpR#‚ÎCö?bÔÌ”…}Óžév‘+¦†ÜCÔ™Å}.M†í=…ÐÃ>‚°‚¤GÒ—L†Óè PbêYc*£ÈHa½mdàG!@õ©g.ñí'\eš4éŒ3„8qR{’A­?Tû#€hÓCNs8PPªg#È…ôÎÒÃGÐδB‘6T/D‰*Æš‘v’Ö½" î#~ózª ÏIœöá =¥ÝEºg ½pˆP-Útqð›¸òx#* ‰„Qà ùA‰¹‘;ÈgT-™– -î$‘ÒºÁ¬EŠÏ¶[ÜE>°ý´Ðƺ t = ³Õ­º.²i€×%³Ÿx‡Ó2’,ê’–!ú¤\+zŸòõô†´5vH5pbNñJ%W¦í8$µEÝ2:Blmœ:‰úP¼!‚ÓÆ…áF» ²'¦4`2"I²@ò‹ÖºKV.mÄ)@ ˆTn2šÇsQÝG½ŽN—«#í€úFdkÃGKÖ¦ ²º¤šwzÈÄ’­ÀòÒr…åXI¿ëLBBù‘Þ2Fqyv8Zá“ÈûDª.§ç :4¤%x uËé~„h’)Û‘5[ܰH´ 6(ðW¡òØ_áu;ˆGè¡4í‰$Eè§PçÛp÷"Äó€#äÁ_IEÁJÊE¬±j„cgäP¥G;¨Uï!'Š.¤¨€ÒAÀl¯M¶ "iB”€‡€i—Ì‚”Ö¢K}hØ´˜h;ZÙ§5“•ÚB™2’)±B“)öhÉþõ)€mÎ ƒã«€‘Ö¨þá"U–ë3øÆCýÀ0hš[z=Ùß´êÛ… ^² ‘‘å7ÅèìÜ~Þp|î}N\*%@vã6@î¨Ü¤PÁ– ˜È¥Í‘Ô¤xC™t…ÁÚöÖÃúBI7Ïí%8´k÷Û)íL.J£&VŠ|$m‰›ˆâËmÓŽOÚƒÜ"=Tñå¬ ]ä8H…›ö…ƒêbŒÍ%¡ 4BÆ^”ÑŒÈ5à4È' * Zò™pÍ ÏkÓÖÒ#ý`€b—¤vP Z‡…ñq$ ÙÚí:ÈÙhÔ¬FVv “!t“^Ç¡½`ËAˆhdJ¥mÔCdsÐsq†Ìò´×ÐX®hÇŠ¥ø/* u'*D%Ô0 è@á àˆ\™Õú˜²àHwó¡f¤€¹§£HûB}g¯‹ª4p¢ž8 üÄU0<ê'1¹‡øh…α£=åz=”ÄAÕpEßs¶hb}2PH‡l¾>„–Vg®*GJ¡ÆäÞGµ9”r‰i+CB«g’HöL4AISÕÄHð&€*FHÕŒ#SR^¸~; nzêÐò:H±WäàØœ s¯ÂÛˆòÈ`ÇLû$T{$h# ipIóõº¤9d)ÒŽ…&ð‹x°Ö,Y‚8ì¡ ¸—"\™L:âDHRE)ÍÂNQ”ckÓŠéu{Äר6ÔEbŒ0âšO¨ŒA +TNˆ¨RbÀÓ{H×€bŽ8pˆÉT•!Í\%èRäåGÚÓG@)v†$´H´éb i?mûœ¶Þ"ÖYÜE‚«‘²>m/È-w•Bì1©(#J‹ÜH òa#wpIëjÀùÜ"$kÀÅŽÔpð™P_-îIUDªøS¡# ܈øˆ7Z_dOû;(Š;Rx*‚õ.=ÐC*‰6²Õ¤@û"Tî´§ölÀb›–ZجÅvd;‚ð=”"뀌>duëòù ­,¸ ˆÓÉz'ƒj à˜À @BÁéqF ^š¨åêAWèÒŠJ#èK4‘}Rdzý®¸ÉeQ% 62­’^d¯9&´Wt€¾ê’¢NóŽfQŸç,ŠV Š’W"¦Š45¬j£$/éqHU“Àž!%§8M‚}…¸¬ë¨6©\u£“`WAñ&z{‰eÓP6xP;=Hr(àÔ‡w’¤œ6ŠÈ´$ŠB:wäxh£(n·ò)$àˆ¡¿i ôP‘LPdµÅ!rL’\õ{€ÇÒ§!Yi> Ô_t 'Ò#„ãy(×C½pø¶0ý ¥\äÐA÷+/´Î!âø”¨3"5F!r¤Ó顪" ´‘ª"FºtÎGƒz٤Ȧèb¨öB쎒mäŽ ðô¶]¤h–ø2†1ØEnv…´ÎQ ‚ã,H„YâÀ¹ƒ’ .Ð2D•ÁcÒ&2 …ŸÓA¢À“—”tí 1eÇ‚]èÄä †Æ„"È:&ˆç hê’p$5:ê)®Sꓽ†´P\‡€´€6j±uzœ—†«´ŽÚ¦ý‰DÈÝ7:Ó'M•lJdCžZÒ> eÁ½ÜE6Äh=DH\› )¢-5í —l!Ç1g7Ž [{ðr¡yºÍÀFL \}HAK³Ò4uP <õbÔþ‹ýT¡ªjŒêæ¤ ÑÁ)ü # —.I\$Q'®@¤7Ê#܉.iA½4ÐjDÔŠxˆ.¡ÎÒ’`+ÒfEäI`ý!a4ñ}/A°.µÓ!1\¨qÔ]%u$Á^ÝF4°ß p²ÚFÁš’^Ý>RÍw€lj÷qƒ*JžOó#Êé½"ž¨, …¨ ú@ó÷P.™ºïF€X{xc{RýFd<+Ú‰QI ±+ {ŠÈŒ€ãÍ#‰â"ºŠ$Ð?8ÅJKd…€¤'’jì!É%gFÖpÒ {ÈuŦMr Ú–‰Æ°Ï;ˆÕà ,NPS2nT×uÖÓG!>ÀÚ‚vœ÷QB5u#¤‰¸ÝçÁò‘%3¬Œdÿ@‘Öߧу…QnˆXŒ´‹*}€²ÓóM8¤’8-B½6íT]Âd]¤‡bgd“׌‹¸0ê$Pä+=Ð.‡p>r#" =pðL¦gÞ„@´‘/&è¢<8q}Šì°´`ÕEfuQ'ó…tÄ̧´Ù¢”F;&á ¨‚‹Ô¯¨“è vq¿i$ÅÖEž07Jº@p¥HA†=õµ=Z=œˆÀIIEö°6¨ Št(@²Sˆ'Y†ÀXÆPŸ]ù’qJÌ ˜Bš «C€rX4²X:ˆš‹B²?h5“u¿|o@|Læk‚"–ÐPÛÈûŽÔ¸È’ |Ÿ6¦60 ž¢ïáŽà &ùNwxÀãÑÎáÍ‘U«AÊ]§³~ÚWG WÑ’'ýúˆt JÑ’8@F"dî Ì9@Û83!áC2•æ™#1Q¹È¡/ݾ¢Iï%ȇ`ÁùÈ¢¤db8ñ„+Gƒ¨G:>êõ €Â'U…hÓëö…x=²=Í!l0 d4B.©žç£îí«ðEô<$õG:ËÔ È´Â1;ézÔUœ‰Ðì$€Pôœ(†»CÆ‹¤ :}2úIˤ­˜ˆì“‰€KÄ«DÈÆœ:d}ºDŠ"ýÊQ¡ƒê¬Ž(""å M²$DNd«Fy1êt€ä`œüº<ò>{¨tç~€J±!2W÷].ݢܲ»ÒÒ°€î QmI?hŸ •”VG¬àú!›•2õ8$Ó‘ $²H è’ôX{± Á“”X’~wÎDw(hÏHOßÓfTŒÓV”vQ†˜È"Ì6AÖ–Sཬª](»uˆ3>†æ ·W¯C[Рϡ´‚#Rzq|‘‰Hêm!,ùŸ(2&¨eÐ á«4dÑñ}T×"­šäí­Ò=RR'ï9HØŽe˜´Ý¤<d‡“•O¼59FËãH0&ÔݬT ’N=D2E ©IY¡áÒ7È æ0ÊÁá$‡¦‘ýC¤¼ ‡8xT4EÔD¦D´¹vÉÔ i‡¾Ù·H¯‚"ŽC™™£Hðz]4Ë¥éRT™S(ŠCæ(Š @aCÐBgAÝv!p‡x *†ˆût=q°:á1ê)‡T )ƒˆ{)„)m¢ þ‹¹nMŒ ´’ã"„i{H%›ž~’c© wAæê°S5@-zXi´p½€1êdàwCâN4MÄm)Í\‘EûG&|¡„09¤ƒÃß‚Ý{ÍvÏÃÖŒjxH•A“g(dÔ5OSI»¡©%u{€\l¨9jôŠ ¹’Ó¥*ÈIEê~¼»G6vœÉ%mÒ³±Û :,YI<ÒN8Ï88úPˆøˆô‰uz{d#·I%MP_´0 _Go£‡ì-ÔLõˆ½ÜC›BœpÚî¢$;4kàÍQ+¥ÒadÂ÷SäLîM׺çíÀÅúˆßFu¤L€ Å ¢ÉN‡Ø‘úÞö"/ —¦" Q±‡ÔD.ñõ»$¤½nŒ’g‘ßïðécœ#±ö p¼ŸÀy(>ÓHbðtEÔõJøl² ­¬HRï{ì{@ †¨Í9{z(…üq ®!’cßA=î€6«> îaÕ#á\V€µ zIßàË@¶â{œœ·•ò™bB8ƒQ‘h¢5÷p6ÕA©,äÀžÒIPÀœ6¤5VJ" 9°Pž•¨B’™ÊÈôLÈ‚8=?mo(éG¢¶êQHÙ%¨SJ™ïH ŒåD”Ö&VFu±yzh'ä…d¼péBû´gùHÔ‹„äŠä+íMRŠ’‘F‚ µ I†v}„wŸ"P€~p*÷IE@~–ÈC¹´^Ñ?2ù¢¶1<HÓ|bNßM^èð)m2 U\bÀ?]ý¥ÎÕÑ!!GòFÑf³•d,m~‚Ä0mh‘ÄFÀ¯Ç8¾¤ÅJÛIçkú)7»R ’PQdË’õ@r h¬ÚG—Kqy@7’ݘ"oVD$ìû1¢K›‚s#¤Å§ ¾ubC‹œDlU'B™>\gd{=”ãMHG A \Ž&B=Žb:¨ÇB¼õpƒŸ +£äCì£ „A‚ÛȇÈgÚVû>ÞP…|#¯.Žýü«+ e•˜¦ƒ p¹K}|B68)Õ´ÈQ ð·„ŒÇP!h‚¶dÄÙ ìÃCR²‰¤ë“ÙÜCšN¶r‰Â]ZÁ4:z(mRrG!Í-Âòh²©Õ)™P‰r€Å@š+â6{jÔ"òPSíÒŸQwh#qØëÂëÐF$;Ü-AâOàÖzªÐÀ;ˆ’>˜„×!æ'©I[#ª"+hžý¶Ûe¬+)]’´\èÆ í\j‚ÐxrQZ­ë#Ý(™Ýnªh™¡"/)¶(w’à˜oCX8È'&é.HÃG¼ãðù9 3Ñò$¹ŽR}ÊÐ: Yºú¤z£}‡Vi‹(^åâÐ H9%!‚|ÿw ‚˜Ñ÷â V ud£ %°©“ˆÄoCsJœ¢fÑ%x‰¤n*2¡É€¥N›i婾Қ¢ "‚Ú Y8nê¹ð¿u9ÖTÏQ$)ŠL*Z¨ëGÝGÌšÇ/.¢#{}D;#ó;ýÓA’R—H8À MÖIfäR°JBö­C‡h“??ëI_!{'çÈlj–\¥‡ŠRÀ=!¾K›+mš¤ÜCé‚XUЈ¹¾bØ#D˜ ¬ ÉRšüb×\Jð¢u‰ˆ4ל¤}жBª¶…¤¿ÄdpHÐIê-ÙÛ!õaáÊIÕ‡h  òŤ«¾ÙÃ)ò¨wH· á>¡½ð$Ú£(VIAÇQ. ˆE„F¬NFv‘Ã!Å0  7^/E&oÀ(HøGnvTˆÀLZb§è IÆ Üé®Á"5މ‘RTöF*@"óQR(é`‹¡²¥Î EOl€(CMûŽƒB‡pßõ$rU€c“þFÑæ8ÄAc—(ã7‘£•`c:$æqV `Ê¨àŽ¢ dÛ!>—øØCv9-L‘;Ž´GÀµh‹K‘­9D°hàt€¨sRÕ‘úHfmµí>@Ó¤UcfI¿#Uiû’è*4A@û@Jª;™ÿà $á¥ÅæsVjxôb€ß€Â†eA–;\A gasP07AKhžŠ‡O|Œ‰B€b€“8²ã¡õƒ/àæAä Þ !­@T•mÃÐQb#6}Œ¤Ð¨ÎYÒP#Ø""&+FVO ¼€Ê‰ºHâ¶iI¿%Õˆ8 =“ë!S7R6¤8°ÅÀ»ð†¤†Qà²ð€9%«PéÕ|Ar$ÃäÊ„$µ¡™ ƒ:mMÚä#I¦ÈÙ€¢0=˜d€%É+O¡à“íÔIqÄ ÇhJ2/"«›lo…¹qöHò²=Ü/ ¡@ªyÄðk¢Š²Cá¸Ý‰ˆ5BZ]ÄÁ"YÑG.óÈŠ‚• OR‘\©¡f éœ "œÃDò¿AÀ‰…Ò)Ú7hF­{bÎ>Ù»]¶Þ;4!PÔ‰£ÁÒ.Šr÷²l#çÈÓ Q,å¼ÔõÎ@|Úvm»1Šf#9 VÄMöh;IÉö&5ƒ,vxSpB}îhÐA‚J>ÙmE4ªuáH§I"ÒièÿHo׺áhÄs"ÐT6pQóÐ Ú¡ÏE0»(ƒ §äÑCË®¨ãFf æ=ä¸GÞkNíûHævÕG*W’ƒ´p„"†1q -d/&Ñå½ X& ¿Kækßì®Ó P¹< JØ œ‰”¶Ï~ 5€ ' Bv3”çé{=b³.R½ºœ±‘J4Èýçõ\ßá¢P1ö…ê:‚ót²Zq,Jópˆ³û|ÑÜ­ê¢4* G1‚‰Y/ì"e —‚®€Y"|Ê—€< Á?Îm‘,îÕéã.R ÓA˜pnAò€(£\{@†@iAL,v› nÀŧ‰Àé ¯"ŽÏYHº$‡à&é—s#A$ßHQå’Û@ NÝIPÅò¢>XÜÆÆî$HÐÚé Ž Ô5À¾½~|ÝFô|@S ‡&"( -*Àt'Eëä>Ò. £+¾ƒ^‡(Døƒ$J·Ð¶­hQ š5ˆúŸmÒ=è7)®œ ÚÉŠ&Iˆ¢7>ÒXw\T=G@|ˆ|\=Õ£>GÀõ:¨ÿ ˆ „–É’8@ΨND „8æÈ¡7!à¾ÛAº2)}EŠ-/ÚÌPt²›"Ø e¤ŒFúä@-ÔAP¬CK sÚHÄé  p:2%CÔeÙr|²¤Y§Æ¹ayÚàªé {¢ï÷lBÿ¸€Ö9 ËB6x’p„vh¸ˆ«Š‘a“6˜¸Ï[21§(¢Ósá1îôU‚"8ZáØ ×q ~E1Ó˜fm€´¨´O“=ÑI ÀSwˆËIK…åqÜ{q%žëÁÜö|È‚.ÞFÝðI FŽõN=wÁ!(öK‹pÖ~¬¯¨\>¬Š8D¥BXIp8waW7p‘«£ƒ’Úˆô$®ë&8b ÃІ€ðG’ôrqŽE»XL[Äö ªÍǰcHÁë#”ÄB”©ƒŠô.GƒÍ!á@‹ÎA>Å JŽw'¥–a—@ꢂm!^ ü%§üì«)Bn ‰(­›b¯¢¦aß "„,ë npìPû=R!ÕáÀ.#>€áÐÊœa7(ì `5 ÅAÊC”JG²®ê>*¶ Ä}„,_@„ x/$ð¹^‰¹ñ¤j"›¬ƒDÀ¨#p .Y$V©w.ÜÕ}Ú2’„*|B´O§>ÙÕÈB¯ާ ˜ã ¢•IýA¢ì>Ÿ™£<5*¾F8[‹é~0×cÚ›‘+&•‡¬RäÔ#EÁ!]µ`õs0€¶Íù"ÔqG0¼û1 {“UãœlGσuŽÈ·O·“º‹›]¤ Ê4ÈÜçÐüÒªõÁ°(nDÛy𒽄ãê*D$¼ì´ÄQA!"±Ù†Ï‘’Ђ ÙF0æºô$ Ämº$³zd·Ñr£Õ;À1àÄõ(id^ÀµÜÆ Q(ARÛ8éEÕE†\N÷r AEWÛNÐ%-$Ùã)Â[‘Á[ƒ‡ôÏPÄðj!hœlå9h`d¢T ]%˜±xÔ÷Ö‰à øWéaDþ"M­êªí*ÒHˆ“»/@ÆÓÉ›°<¤¸"Ýg§ä)I5sp~D¦1ü«½„n 8;gðBj­„6G‰|Hy‘ å8»}ö…È%ÞEÈ!m =¿‘´#mk@[]@“*C¶'@ú@qǹsŒT¿H0Kñ@âÚ£I©Ä±J6S15êã8Ùi‡axêLÜ£Y¦]1¢‹T)j(ßÐA¾uZj Í4ÙP$••´ežkN×FÖ= .ÓâàY‚Ò€¶¶€öýA_‘˜ ÅÄQ;@¡&Dªt;mT-'c›–§C[A‡àIš]®µtc§ƒê´œ…‰dúhJ–R"v‚dSd!Lj!º$íQ×ç"Ф…’ Ud·‚<8±B¾]'¡ùiwº¨íB_ QÌÇÐÙ#¶ º\µº™0 ZŒÜ”d&-_×#Ån@àC‰ä€ñ£Má4m»([§5NU턌.&!Óùêt‡‰ËÿЖäâlq2Ž0©Mtm¸…TÀHº=@@°¥ úØ8ÚÈzŠ õ}øÛ©ûÀp#áq»œ³´Q‘H„ X¤ÂÁ'NÒ ûS &À!Šô;4™$M\¯Ûé ›aÔòÁP)ÙSôî´«"Ro€œ·­$€BŒWÐc4tÓp€*‘#1E ÙÚˆÈ/!»‘Þ„lV¨C£Ié‘ÒŒü5$™C±?b„’¢NÌ5@Ê-Ī*1"=3ÑÎò>ôqb‹”•~Š<]@£äº€ªÒq`ž›¢ØY7áZ]œ÷¡º#@fÈíFÔ@8ÈEX Ìf?!Ó'ë>25û=äòíª°‹.¤ú¤Þ“~´÷¤!£ìHG1@؆@‰¯@Ò›˜!ñPX¸GFm@d7’©é#×=I;èU"X iPšÚ1¢ûœ‹× ç Rt+ÚåIh’Š”pôÊã’m öBœpÕ´s"ÐÊÉ ’.| ƒŠ¹m3²i‡ðð£¤m%²t”–D!2˜€By0zcš)žn„j\ÀΡL:ì1óI{ ópl!j!¥¨ã&¨.D3=ˆu= jp°¨pìL6X ]›«’ãxŠ]¤ê'ž@*í4އ=ÙA'¨Ýø€ì TíBòjió¹žU1†Uß ±öáKë ïòyPœ86Û…)®ž&½Þ% ¹ p¾à=üýYËHnû¤ ÃgBæ,t=²Bá󆘢PaÆz¨¸Ð!êµQ|`@5ÊT eJö( —-ò“YÑE91Ä»¸n OVŸ¨UÑŽ e@ù ±‘¼'!Ë'ÅE†d—†|Ï$}¡†üH)â7ƒÖQ’ GIð¸–hè’hE±ð>pœÈ¨Eûo§íåŽÔö8j ^[µûÈ:Ž`J ±€§ˆ¦½§¶¢7vÄA6IRãq¦–¤G qŠ&ôQöÑGºv$…Dâb$Tv&fJb"A'Œ°[ Ó ´xàT“>WÐèÔðDñ¢š#mCAë¢Ê>Wï‹úìóqˆ×űŠÚ y -;ä:ERþ>JG¥IŒºJ´¡˜ —KÖHµÞ%©‡Éñ‚Hʨà4–,"ÚòPç‘SI‡”æ……IÃ&;· Û!‚Äp+“©hA!2 §ð:]Tž'͈h׃«Êêñ=¥WÊÕ"ß9_E䩾ƒÔ i1À´®h³è† ;Žø3Ù'á…ü×°öH\AfAi C7â*IÊC>+Ò2HR;xP‡‡4mTu¥€ÒÔÀ‰[߉qhí’NNFêD}…Hd¢!UÜ¡~ÒVuáM¿ŽîæÙp¹^Ü—Õß—Ùj½Xfÿ˜Õï~× ë–ú>ûÞìnÝúMf-$›L¼Äi‘.…J`Q‹”§éÿß<¾ý4»U\­©ÝÖƒa‹4¦÷AÐr=çýßÿá¶ÿãy­/º_õý÷®ÓZŽé®tWú>L•û>rZÞûȧ_¡K¿|jÿ†ô"º¡&øÛõÞlj|Ê{Ÿ¦­8FóA+MßEÄôxA÷»®yÁ¿À£n Eú…„œ­—nB¿¨GôCŸûå_Q+åv½V½ ÈpSÔî÷_%ÒêˆZ Þûq‹~¨·¸H[^ÜòüÐãiËé3E÷|÷8-ùœ®}—¯]ܶâ÷!^{Ô±÷žCÄ {ƒ€ÞOmê÷c\ßê×gÔVˆñÐOâ6úç‚æÐËo#¹kLwÅeðî»ÐuÑÎwÿ;”[&4‡z ÐÛ°¾—åÇ-ý…~o| ¶îvù·¹› ð+zoîðÞo<·ýã¾/¿<ÿ²ñý÷šÓ–R“A‹~B÷}€ÝTFLŸ$ï\7 9–'f-7ˆÀ—ùKD"zÇï“„ùËoñ¢ßn ÿ$Vöø["¤o±rÿ? £ýH=ñ‰ÚÊ y^ôÚ·ˆþ­¦ùG^Å8½„ŠUH· ûÌ„øËÃÝNLðeΣü£"<îEB#šj=b~ŸðœFA+ Ä'Ä{±Î¥;-,"Hâcò"š*LÝECÂÑ~÷¿]Gq£÷ô¤L½ÞGŸÃtc¼_¥ü NT´¸÷ æŒæËma…`9S±†Þce„-½V‰Œ´–/(º×õß 5c‰€wéYL6µaýë¯béçB¤PŒ×Т™ô/dMÀ}³HOü4—.¿ÃÅÛXÑò$É”¾'Áá.ú#¢†@/–~R<é¢Mÿ}fqy§¿þʰË#Ë¥ÓJ²%›øÓ q™øô$–Sú. ½ ‘ö7zs‰×±H!ÎñiCÈ,ù“çšF% 0}Bd÷Bàk¹‡~ËEüžFäáý€Z1Ë[È߈ÖÝ@뉾ä%ãó]tMäÆ ~KKhúÓË/Wº üã¾·ÿòx†=¼v¹o w+^eQl‘íûœlK;ï#Ê2ÿ`*…ÅŒ½ÝðYêc!2GÉg,#øÚáßl'\nŒcù×uè^ô—¾u0î$›hïKXVÓ‚ÿÞýöÑ ÊÚš:ÿázš+ú:- ¢ƒ?ªòF¬QÛ`¹:éYuì¡Ý_ª#ßW—î'al1@®0¬‰h \Å‹“X7„¤ ‰§%‚_:b'^·Ì/ñ•‡(Tüø&žˆ¢KÙåäǵ/’N+5Ü\ÎÖ¢|bÆ ˜·À^Äžiß,f^¤ºˆŽøà$ÚØ!„XkÏ!‰¨#>– >a)D² â±ÅXBÔGú7[)ñ=oþ¢ŸÈQoTôbZð¸ ìð†…Ñ2?üZZ¶ÂÖÉw¹ŸXñ‰]³ B$à)ldèFŒÎ¸®Ç{ Uþ„>§ëˆCWùV\‡¤ª,9ÌFŠÙHXàB@ÓjÖü>%™@w°ŒŠ[û~X‚bWÍb±ýÌâì…Í€—È–ƒæ}l.{ÞN*J€ Ÿ§œ¶³8x“a¿1ç¿01hV @à*ˆGÿàsŸ…«IéñmÄKæclxx±âßøÄÅ›±åA ¹.6w<‚­ÄwìŽ|›ÊÐ>ñдܰé`³L¹M— †AÄæQÅtIeÿM·»ïyÝ”~yù•üào,_¾ˆY‰D?¶„-SOnó¾ËË-zŸÁ ßÓ_ØWÈTèÌï±ø3^½¤¯ñoþ€W­TúSV1|>OR±X¥¤·GØ}c^xx‚=Ô ù×þa• ¯¤—5 Zq¬V0ÿÄöx¾5Ãéè-ì,2Šœl8´‚D“?±¿Eè…ÇŸx¬ ÈçØôb…Gbó o2~K~ËÞ„Í(Ô´TÐSóˆÏ¨Ó؆ÖðZÄר†clÑ£7D¢Î}/Ú‰½õîüÁmÌ‘ü†äÉ_<ÝKW|¥Z:BO‚ÀHbUŒoÍéÒSÉû‹›'‰úEPÔ}²àZ©£Ø¢ƒ,€‘Fª$MÏš¼ŸÊâsÿ]å Zî)p}e5kP4: î¯ëò'oé´¤b²Èè—Þ1½¾ûùúÎFb ³\̺îÀþ.[?=Òƒl¸~Zf_¶þç·Ùj1Zϰ„G³²ålüfø˜-¿›ý7=2$“d•­‡“l”ý4»ËZ?O³e¦þÞz\<¶þÏÿ³õÅ7ôîm‘L¢ÁÞ¶þ×ÿj•ŸùÝÿÅ0g[ò,ýùÖlLßÍÆÙ|•é˜W«bTfxÓ—-¢ò†½ï¶œÖjÑgE–L‹aëüÍê1»› çЋþ8ŸÿBÆ\Œ‹OÄ–^ëOË_ˆ%B\|"‰DúÔ—?ÏZ¤®ë =z‹»§ûìaýeëñ¿ÆÿE^¼{\©ßýo¾{Û->do½wN«ÿÍw\ÐCßÏÖsêéÓÅ}öÅc6Ï&ËÙÃëì—/‡Ëáü‹ÕÝb}7ýâñi•-ÿ+|ç|QjöwÝ%MØbùeë?þÚúk¶\aºüw®3lµ¾Í~" x_xé´Ý|ó—?µ‡ÔVË}çݶZo[­ŸZÿ÷búÐê,‡£yö CX<=Œf“Îâ—/A P ±k¢®¨Mº4ÄOeõ¥Ð¾»¸ÇG«•æBý®µÌî³ûÙ²µXΈ\DñÕz¸ÎÔø›/[«áOYk”qû‡§Ù|D“´ÎîË!QD“I£¤KE¶Ò¨`Hº›š=Pk¢á¤µ^´¦ ~zu7|˜Ó7¿_µ~^,×ÓÖbÜ ×CõÅ㌷»À<£_kzGŽËÖ ¿~"¯Ô“åðÓŠ¤ab=ÛjýÎzwàÝó¬…·«/èuó± ^óÅròaö0úEÿIo/~&Â̳ñšÞ´|È–JOÁz9|XÍA&ºk…D˜Ý][74áXoZ`ï/boö@s|·X,G«[’æñ»4  ‡xÉ;Ç…S‹{dò÷<8nî÷Xe³uk¶zøýZO+«ÕjÝÈ]ëõûÖðaÔúý}¶œdËÅÝê÷ôÂ{ôrqßúåç‘Þl῟fÃÖ/ôȇ[õEñ½¸A­Ñ¢õsÖúø°ø¹5ü°xZ—zó©––ÿhÿý®õ lˆãqk=¥!€~OÌE =Æc›ÿý®õ°ø²e½ ùÀ§_XÃÂC9U†­oÿÔyû¿¾jŸ˜å”´ƒyó´²_ˆÐìb”扬sš„G Bßó{ýŒydž=LˆýüÖl4ûÉ´§¹¢hÎz‘fûcšÊ–~Äm­ž>´þ®Ì…%ÑPþ‘y³iKߘ­á¸»šK׿eší~Âm G#~‚¶Ïü‰?-³ìaï3^þŒk=Ó™?eù#¸ÿ§ Ä0sôUëŸ[ïÂ?µþ­w¾û-þq“NþÑ6¿ÎÉcþõ¹=›TÿÀ2T6mC:êÛìa-"Ñ-·¢Y‰Ò“[Ïæ³õ§<ѦXaâ­:ßwúï§³•u÷zø1[µÖ?/ŠÏV†aõ$ïî>òZ⥴ÂW÷ÄB$¹Hh‘L!É‘?üN:öE±êˆ_™]õGOšÁô~ë­Û"1>b[¹Òöò‹úûÝÓrIÛëx¦ m‹vþÑ4ûEo>4â(=H‹I•r2Æ2ËoùÏþ¤ÂçwñJ‚È?òû¼†äºÔ£;\¹ÛTù¼RC'÷Èó©C¾±_¢GW#v•IP§2Þ¾!×IìèÑÕˆ½·¡×·úyÔÈ£F5ò¨‘G¿qy¤JOoÿWùsewl‚ɵý»ôù¸øßöý{:shû¨>äk»Æ: jß,œ: gÒh{ÈÏEì{´vêÔ¥°·¡×·úyÔÈ£F5ò¨‘G<ÚƒO¿€ñ/jÈþ\fäÒçÖ,lß¿·¡“{tÍ4tjïÑ©“ öÍ©“ Î“¸ÏEìgíÑ>Ú©S—ÂÞ†^ßêoäQ#yÔÈ£F5òÈúâb_vÉ£}‰/»äö½Ä—]©¡“{t‰/{GCŸC®Fìê“ .?ɪ“Ø/У«{oC¯oõ7ò¨‘G±ŸµGW#öÞ†^ßêoäQ#yÔÈ£F5ò¨øâr_ö~tðYÎrUý€Àöhoß¿·¡“{t¹/»6å5õèÔIPûfáÔIP§2Þ¾!×CìgíÑ>Ú©S—ÂÞ†^ßêoäQ#yÔÈ£F5òh7.µÉ¶»Gça4Ôä'<ŸFM~B§ÉOØÈ£F5ò¨‘G°³jòžO£&?a“Ÿ°‘G˜ÓàÀyÔÈ£F5ò¨‘G .µêBƒ»hp` ¬Á=±yÔÈ£F5ò¨‘G .µÁ]48°ÖàÀ^nõ7ò¨‘G jß,œ: gÒho™âÚ‰]{ªqöÁ¥p¤¡×·úyÔÈ£F5ò¨‘G<:N8•ñ/jh/\¢ÆY8³G—°Y=4ª½G5î gö¨Êë!ö‹õ¨Î]áµ®þF5ò¨‘GÀqž/»NHI-=z¦¶3iTeÈÏ…ß©±GÏuÂöšV#yÔÈ£F5ò¨‘G .µÁ58°ÖàÀyÔÈ£F5ò¨‘G .µÁ]48°ÖàÀX#yÔȣߠ<ñîûÝÈ£—ÚàÀXƒkp`ÏôrÄ~}=zMò¨JC/­¥6òèP^!ä7®ïgØëžµ—ÚàR\jƒK=»¡—ÐRyô™åKm§£'×ËPÖ»BC¶NZA?ÝÖRù ?ÓéoòVm¨É—ê4ùR›|©‡hT#Ú¯‘GÎç•/µQœŽ7tµ e ±ŸãÄÿ³ÎOx=8iõ”yWžµ&?a]É ›|©M¾ÔßL¾ÔúcRythÌŸg~ÂÕ”“q/¡85¸Ô—Zì¥QW—{0Ôågk .µÁ¥6¸Ô&_ê…9¨yôÛΗZûùúE¸‹çRœjÄ¥Ö¾+ÔI£Úq`¿b\ê•epíÄ~®5¸Ô—úJp©‡9»Á¥ÖÀÙ5j©<úÌp©¯HK½îâ¹Ü{µàRk?a«Q#ìW‰K½CÖº{‰5¸Ô—ú:p©' \êkÆ¥6òè\ªþo«½ÃŸßÅw1ˆÇÿÈïó:-S§–º¯Gö˜«¹~-õÔUÒRk¯w|Y“x¦­¨¦+pö‘%rDKÝš„‹zT?Äí±J×]ýû¨Â jßj®Q]aÖΤљ«¿Æ%Rcj‡ÜžI£ÃC>“Øg"kìÑsɣפ\yËnäÑikM•žÞþ¯òçÊîÞE š«±N-ÕÚ¾!Tò3¤¾n*•ìÈ¢]Áßokï5ùR¯ËÙÛ_œ ¥Vá£íÏOÁïl'p®ª2sµÔë{ûóÓw…ºåÑáIP‡—ÂÕhtÂê¯}‰\­G§N™òèj4ºhõŸ‡SwžW½&mäʲ‘Gç4¤Î#Õöû/jÈþüHIý'þÛC»„ñŸKK½Z*-ˆmX•ôlZêå yÞfrBCû>?¿³Aªºš ®ØÛŸŸ~ÂV·<:< êðR8“FÉ£Zf­–: gÊ£3iTeÈGºì츎½œ8|Ì|¤G§b+¯ q;Cß:ǯœ£t׉ÿµ²ÊaÜáSuùÙÚµñ„•`ÈíÕ‰èvï¸ðB)Ëí3É£‹fíL]A]yÖjìQíòèLU²:2t&Âñ¢½´Åé%p©{ñYàÀNÖR÷€kYýUØÖO–ZR¶Á¥¾‚}Ö¸ÔgE86¸Ô‹Wÿµ«Œ4òÈip©¯—z¹!}º–z¸G{•¾~.\j)ꥤ mÕ#=¬2Ù Õº;Ü‹ÏvL'­JþkãÀª?Pîi £k#e\ê+èѯ—ZK²ì‹zôúäÑëÓFêÔRyT±¡_'.ÕœùÙ•×ù÷ž[Ÿ —zi—£¨Â ªáRec/)Å'õãRKS¤µTKáп-e©ô­ýùæ'Ï€K=H»×Ûeíì ðaò \ª™„ÝF‚Ú‡np`Îõeví=úàR«ö#r}ïÙñy=zEòèÕâROH3sò‰#œß&.uûÌopí°ÆZ?Ƽ-ºÔÞuaÝz .uÏÙuý¸Ô’îcã ·}©G>ßRwŸ —º‡v¯¶‹ö²ßqÅËáR GØõ‰ýr=ú¬q©U{•ÍJ]~ÖßàR+3äÉi÷ìÌ/¡5¸ÔW„KÝãåQ‡µ˜ÃŸ×»ØÛùƒƒÚÚ¡A}8°m?ª¤í;÷/¹÷êÆ¥~Î8° Çu2W‰žz\ê-µÁ]ŸØ .õ¬Õ_E°W‘ë¿JyôÚq©UúeæKèG¿6\ê>?íáÏwX/ç5´w±¯Ò–ýù®³È‘Õ¯ì?̵üÞ~`óó½ —}¿OÉû;hPr­öªøüämCªLBé„­Ò¥ÿ­8œ3Á?ÛG¾—pö §êlqrŽàÞž…ê“pÌ']ÔÕ•‰½ý_µ]¡nytxÔá¥p&®&®6kµôè™äQ-«¥uH°Û¬DKýÊ£Ò‰ÿ«ÐFŽóù½uüÙÈ£óW¿:T{}ì—ÏE¥ª°òy™ƒ¶€‰{?;D6?ß r¹d.váR·;pPû!·[«ãäÙ_TŸ„8°*+h¯vQK¾Ô‹ò[<® ®Ä÷ÁÍêTÁöšäQyNíSÃ-Î>ÌüLÚȱ£½½×»ñ×–G•â[­{ªÍÚÁ¥p…Õ¦<*Á%öµZåsU¥{•² ¶¯*¬ò³:ª#æÎÁóâ½ —ÃìD£’±J¶D—ÚØ,~ŸÜ#û‹ê“°£pr•J{V-Zê•9ûÔ†öøÕº±w,Kö¾±_‡<:Ø;Ö½­¾l«2ú$…½lª$?/±·¿8vbûw˜ßöø-¶š»‚<ºÞжfYUÊA|x³º|ÑÖ/N€ß–¦Gè졲ÚWÙlªà*û¾7U‰kôH¯þ½1w‡|¹òy¥%re™}y¤ÎK•|ìçÍ…ª¾Ž÷PÇ„ÀöªÙ<ñ¯Ä`' ­$åNÌ:° —zpP'÷ÈþâÔXúÀsi©W`ÈótÒ3ª2 '{ÇÒ©QK½DWý¬å‘ýɵ9ÛJº ª§Ò«‘Ø;ª–}wkG·¨ªç99¦<ªD£s—ÈaÁ^y³ºB†ÅkË£SÑXû9{ÖÁ†Áí¦`-«Ãl²êmTÆVk©Õ{´3¿Ï¾7Û†Ü6„°èב]ä"™}5ý¨ôE Õºýßç–/µ¿}ztP ¼t¾Ô*zkéâàM'÷h‚ô\ùRë<ñ¯;ä癟°~-õ¼Ì+Mþ拳%W¯˜|b¿ÜÐËLupQ¾ÔóúXIfWÙ¬ž+øayôÒœ]ihç­þ]%ìözTmwÿnãéäUËBYúbëlņTìËÑäK}Ù|©W«Z¿S¾ÔS‡ö9ä'|.\jí)Ÿü„Ï ¥6ùR4ôbþSxÖ/®aVyo¸ž–z9±¯­7Ÿ×£kØñÏ“/õ¹¶£åQíÄ®G]²ú«i©•aƒGäÑKûä?£|© ì|üÎɸ‹Úa€ŸOÝì—úB¸ÔR~—;…üÜp©WÞªàÀ^±¯m¤\"®¬8ŒK=ïìöåà¤gÊ£+¬þ“åÑ•…ÿE¸ÔÚ‘²g.‘µÔ—ÚàRg V¹ ÒàRݸÔס¥^PV§_GŒ”GW[´ûg­2ìyQ uFs^K]Mø_—úZ¡ÛGäÑõ*Ͻ,Nþ¢Õ_ç¬]M°5¸Ô—z=\ês¥Ì« ò\¸ÔJum§ÙóyƒK­Œ;ÂÁÕÊjZjeíõ¢Ä«W“GW#ûgíDXý(ÐÏ'_–zùêiNOGõ /—GWC^x…ÿJŽ¥–H“/õ·K­pòx2î♓HðjD‚-µÁ¥ž„K­‰ÜKì3gjëþJ®ôÚåÑ®E[Ź_EŒ\r¶V' ôsÃÉ_Yø_mõ‘Ù'oDµË£Ú޵ã䯰ú¯bï°–úùãä\꩸Ô#•ä*ë5ÕäË©GÑ׫äm©rµ#A^—Z¥¬uÂ7¸Ô³p©G·½Zê©(ÔÊ?îY}µÈ£ý«¿ºsÜë"\ê^dÚÕVÿyÖ|%-µyt˜³T%÷ýuø–+¯>$ª°Pê—Gµ¤¦®EUož¹úϵv¶fð˜üUàäO˜µ—z-\êðÄÜÿΉïgù*ý²¾}^$ÈKäK­=UÙg×àR/À¥žŠWU',ˆ#†\• ®^£þLdÚ^ ô‰ZϱY{8°JÖüÁÏ_'º–Z…›®œSödPÌu{tDà¸÷ìøäÑÕVÿ1À}åþȾö*pòûg­Á¥Ö€K=¢ž·g^AK=9Æäà'/yÞ|©G|©çÙ—3ä5Œ”“õëá—Æ¥Qèöžø_a‰T&íÕäQ5¤l•mß$¼ZØ V`%Wú% »3q©{g­27]—z¬G'áÕˆ“ßåÆ9Ñã²#.ð…åÑõp©—بû ¿klGµDs6¸Ôºq©WP Nˆè¨¾ŽOPw··ÝWy.\j¥ÿófíò³þ¼G\$¯v lë÷ëÀ¥VZýçÒe“²g6t dZ¥Y«ÀgÎÚKàÀ*•N5¿k—GU,Ø ™½½€­O®…K­Ý> ¦¸nWå<×ü¶uû×*N8ë¯zâN_ò5\K?:ÆGÕÏ ^«<úuâRΑºDî>—£èµ"Až —z™*wH{¼gWÔR«ê°êÔ‡_.µÒê?}ÖŽh©UI{‘<ªÅ¶¨—z…ÕBf†ê~ÂÚåQµÔhGÁ›œuè1½ùDLs-¸Ô‡B‘=+îòLÀ/!ª§2?ÝÕUyÑ\A?ªvD|"â¹Á¥>.õ\årŸi]|þ¼¸‹×‡y¶|©6áñ[Óe¶¯w{boh©çôÂþDúðëÃ¥ž°úO¬5k§“v÷éÿ òh› ÎÚ¡ßû&áâÀ.G±ìÕRk”GgX„ïD®ÆüÍ .µ:.uÏ.RÑ ²›G_úš φKòœøÃ†X¨®ŸîÓR¯€K½‚–ZIÛýðg„K=Ìx5i©›¿O–Gå& &<ûk™¶Ÿ.õ€¹çóçÊß\½_êäóKdv•…­ªB\„K=êÆÙ×ÝGæÏZí?í9|þµë¼µh®•ÁuŸ¿WíšC}Ù—'«Á¥>.µ’¤Š+dË—úb(Ðß.u¯–zéï«àR¯Û£Søìp©—ëªW öÙ=ÚÖROìÑ–È3­þ£nâêæ”­¥Ö-ªATõ\){.govþÊ»È~-õpÕn%îW-*íÛG±—åo>6kUª…‘}Ý8ù_).õjn™M–kp©/‡K•¹°ÛstH8ì:ñ¿—ºƒNëÅ¡UзÎÃ¥nSðuáÀ‰}ui·—n¥Û‚J=ÚÇ–Ö|ã½&ØtÍ9z«ÚÞ›k‘GµX„‡'A~ÖAjÜE®rn±©¥~Ö¸ÔJ'r»ÖºýÉÖyÊuõ£»È9_.u_{‡?ßa+œ×Ð\ê‡ñ‡±ïm3¸|~ØÂQ‡wŸ]Pq½R²=ÌêC¾±Ÿ«GÕ'a.õÈ%-us*Ô¾©2k¥†.'v®¦œß‹XÕ‡÷ÑNí›…ÃZꎆ^lõï¸:´|©ûQz‡UÏ#Ó_<°= Õfm Vûê¿Ðq½Çß\»<ªn*ì#ûxjKK=UfWë×>:Ä»WÛEʾÔJúN…õuª<ª¾)<¯<ª¢•G‡Â®¯ µã«lJÕgíùåQ%Î.Á%öµZåsU¥{•² &×öïjZê'Èa?]¡¥î€”f%]Ø5ö¨ú$Èouê¶xƬÿý\Ä®> '7t&±Çã,F†bìºj©¡[ý{gíÜ)¯ ¥Vyÿ QmÒ¿/Z"Ϻúj©‡Õ”Ý$¯_›©Íi9O‘¡UßW*¤Ô"Î>ÛÙsbp¹ðß»DžU¤¥ÿ}u ¹»_gHÈÂ÷ýúäQ¥†Ôy\°w ¾œÍTu?ìåP‡åؾ G~ï…”\¢†_Fµ÷èT)£N}ਖzH)8ÓUÕ'¸Ò¢=†L;,!t~øíüˆÇq©uæ'ÜWU½Ê$:Ú&y=ò¨ZV¬Jp¯ã©ƒOXý§Æqæ=í¬¿Ô£í‰ß¾])2¨ê@NÎß|Q¾Ôü~²<:5Wƒ½l±\ABUkªáy´× xÚȯ—ZšÎÃ2íøRlp©µãR÷æK=¯*ŽÁú[Ä¥–”¨m]u³ÉkÁ¥žœÂóPªŠÈ´*y.wT1ÚÍ–Ï‹K=oçÞ¸ªžé š–z]ytaC^ïê“pRv·!£*é8ךþ*¹fÏ<·x^\j%^¯.N5U%»øZòÊ9Ö*É£#np©×Â¥VÒR··š­ýÛâà—úL¸T&¹µ8Ô%{Ó® ©¿]\ªu]*@]”…|-¸Ô+UH= ™¶µîK‘g;jm,¨ü<¸T³DÎ:ëßVýÔ±Z|Ûr÷À¯-¶ga/v÷KU¯7|¤ì$xÙüÞV_·boΛþc¸Ôm+¬tJP¥TÂf­‘úq©{Õ§KäQµ’¢¥“”mÿ È•%äôæ“qòG¼¨ .õr\ꡪtþY: =^ö¶Á¥>.us R»v¨ê%ü,ü›Â¥–©¶»ôö¶'ëö­µàRwÌZõ“ÏýŸ%GÑù¿¯-ŽyQ ;l‹êòè(Röœ¾ì<$ÚÜdŽ@·«Oÿ.tË;þ˜Êvèózp©{ÅØyPÉî¡’~ó“ýZjòX0­¥W±OÂþ#™ópò .õ0.µ² Úï¡Û#}\ê³àRoÁ;ä¾ÙÜ«¥þ6p©‡Åû^-õTÒ•Wÿö ‡ª>Á‡ÁxÕp`•hTA•ÝÖR¯€K­4kg¬íÚ>Âï¹çÚòè>¢ÚÛneytRvsî¹VÛ_œ°DN]´»â†vlû´ÑÃzk±A^ —ºWqªŽ¸>²ú+ñΖf°×Õue YÝ.¬dZý;í¶–ÚàR¯…K=|TWE¾íÛü\ê³àRh©Û^ÔêØo —z‘–z^’+¬þíùU§á2Ø©4ªÞ£‹p©'pöE«¿’fzÐ}|5yt&±÷bY¶µÔ+àROÐç÷úR+­^$ØvU Úe© €;|†q.õÈZ»š<:ÙòÙá¿nN@ ƒÄmNíÉÄþŒò¥žÇf{«Âž‰MÙ6·öý>¬hªóvîmñ¦öùÔ!דW®–UŸ„‚ªúcWP Ž ó:ˆ}x)웄“{´v;–È´Ô}⪖Õð =ª]K=2k;€Úš¾Þê¿D¼Zê\ý§Ê£JY%k\kWl6ùwžTÖLn“ª 9«È,µo ¾‚ g6TMßÙ®z‰Vãê¿‚Nøúzt‚¹Ä¨gõ×¾Ööõ¨–Õ‘<:9«äÖÚ•§ÿð$ìDz†wTnoË£íI8FWÖF®6kµèGÕq-ª§úЪ/…—ÓFÔyÛ~ÿE í¹TÒqúœ÷{o.QÃë¡Qí=ú¬µÔ+û’¥xQ*i©§êªªúÂVÿëëQ¥óõ«1äå§:õ¬þ+¯µK ƒk˜—È£#Ä~1-õjòè5qö•eöÞÕå¡Õ¢Û£ tUužÙöÚˆºü¬¿äѾBδ׷vž ™v& ô<ïú‘]tâÿœµ*“pòôŸ ¥† ]ù|ý„ÕµY«]}¦ yµÕµ¡îÑ•iteÒsÑè<#åjòèõi©uj#WZúÑËùä«/…—ÓF^!.õ×¢¥þvq©¿ÙY{9\ê>åöuû _R¶~ ôåÛçZýŸÃ¢­'JnâW4ýgÊ£W±úËRëÐF®6´Úõ£ç%ö©K¡Á¥:Us¦}úÎo—ÚÌÚ áRs~FZê Ë£— Ñë[ý¯oÑÖŽ@º,7ñ³"®¯&^LÔîlW^ýWÖRk”Gõ{ÏJP—Ÿõÿ†q©¿-õ·‹Ký ÎÚkÂ¥VŸ»Wxæ÷›’GŸÃê9ìî àäO Ñ•#_NþYð#‚í «ÿ™òµâäo Ÿ!.ÕªOPr»ü|î⬆~¸Ôí¡]Bì½ íð®Ÿ×Ðy=*ï g…šÿ f­Ê$Ô3ý;8_>ýÏtœyeÕ#ì/®‘éW²ú¯¼hë”GW^k‡iq,¤úyztyt™ýu]ytæêá-û òètä~åMá3’G꼎m÷K×±íÏOèÑŽ `ç5trΛ‹_evUH}žé?<ä:‰ýúztx)Ô8ý/·úyÔÈ£F5ò¨‘G¿zyôYçK½È£ýúp`¿Á|©¯ú+Æ¥>ìˆÝÈ£F5ò¨‘G<úUÊ£Ï:_ê¯wñ›Í—úZQ ¿\êë^ý¯nõ7ò¨‘G±ŸµGW#öÞ†^ßêoäQ#yÔÈ£F5ò¨ø¢„jÝþ¯ÉÖä'lò¾Pšü„´Ý›áÃèvНæ³ß|¯¿«›èsëú±ßrSßo}­ÿ¶Ê–¿_ÝŽoþô4e·n»-Ï #|Û¹ùáæ§Û‡›l¹¢ñÜz±ú€&Þ¥?ÜÞº·¼ÐáfÚ7ƒÛ·IëÃÍrøðƒã;·oêÉÍÝb¶ºEýÛ›onïo²ù<›,g³ÛØKZ^ä…­O7ÿö0û ßÑÖôïŽçÓÃ=œÝú!=ÙY,GÙðéê¡{›Ýüo'7v¾ýêÍíôæß¾þ–>îþåÛïng7aâ8·©ãµ¼8ˆÕ§›ÎðîŽZœÒÿŸVtó:Þ¿¡¾úË·_µ©•¼áÉÍwO£·ÿúDSpùŽò’(¥žù¡Kß-ž–xšH3¹™ñöÙ‡Ž.‡˜î7·¾OýõýÀ é5ß AÚîÿ¥Û§ïúcðm›þ Hƒ–—¦.H÷ß7™Ðåóá‡åìÝxy«ÜÀõ[¾›$BÜï²Gâ.zë‡Û½Ž:á…Šç¸é­EnËROѽŸnÚVëåðކBÌàGOä/7ßOg<ŒÅíò†9ЦuMãe«»%hy“1‘¦Ù­¢Q‡fóÙzFŸÎ˜Æ7‹GÜ%ƒ]QcðØÏ%öK”{ž¼O¹ ògð¡¾ç_½¹ýx3¼ݬã5uägúÿp™Ñ›‡wtýñv®nh…ÑÑÈätߺ—ÚÄr£žý<á±)Ï×ýãÓ“õ8\¾½UÔ¥–ŸP7>Ý ‰ÿæ·&‹Ž™ÜÜiñ‚ÿeô”Ü÷ãÍŠ®W–Íýp½œ?Ì™~ÜE"1Ð’Ÿž“›ÑŒh?û@ï -R7 O–ÃÇéêðÀWë[bü7“¯,’f=3a.-úŽeBˆó ‹õô~õ†^6ÊÖ$#VúëñÍìÆüÅâiMÿàÅ­€¤(-ñbI]§G~¤[¨kOw¦mú†~?­²7ü8Ñc>ç‰Å,yÙ艤Ò°H“ñç7?‘”§`JÀDO÷ô‹ùg)¯vb9é|öËðþqžÑЉUà9Ì6Çøøã—›Ùjƒ|ôR¼e¼Ì²/0Ñý!  ¼Ñœyw3å{¹ÄØÌԳɃLB+ðRÌþêIX$#š ×·uóýLOÑ$¯g9M$ýIt)& ’­§ Ǽ>`ºðtp4¢WÐäÌ4=°òf“)–Ö[y7V:σô½>̳·«Ù“†ÀÄ.Y["º[C[¾ Cu¢ä‘î¸XúÊóÉìCw¼ë]Ð&ÉÔlžÓbóÌ´˜©( ŸÈ¨±f‹hž­¡S>®Çz#©i«Læ?@»®Ç ì®Ã3ký_¤æa«©±ijj7m þJAtéHË aDrG<š—-ù—:rÕ9’~ÇwªÚDùÒ¿È‹uÿ|韲Ŋ¨ôF²„aÕ•|oÓN6/щ&æß¡O’ZKMÀ ·óNã‘Z+û`všîtø0É´Æ3^.î™ýsÐø&|çÜÆ©º†¶cï”û .]õb#à•¡*õ“têô V¦®±Sa¦£¬î{®+Ô…úƒÀ·ô\3Ìì81ÇYh¸1{ºÌP}W;ßÂ\+³ cƒ9ºùÁq4ºêTÍù˜îRefxÀ¡ÃJäé <ào– êk5ü·›Ê°"'‘aEfX_AÂbÖH¨+2YˆV¥E]AËÅAj÷?fÙÙŒy¹ø0¼§)¸{Fõç¸(ÍÖOÜXúL$Ý|—ýíI,ÖbÍ’ÓÂé•iŽÂ."î>ÞzýhלTê•*±ŒîVÊÒ=ÒÒýßV¼ç&¬œÜ?ÒŠX±n˜;HÔ¹o¯b^pÏ<‡'9p±4ÙÝ¼Ì†Øøçk(óÛȹDO>è{Ò‹#!Hxâc³cuIÆçÖ \ÆÓ›åâi=#U^»Ná:*NjŽ.γ&Brñ-„NèJy*:X(u]¢Ö³º ¹n¨)ÈU‰€ºƒÛ·ì\®—CR^DãœÕ¥­HçÄÛz‘£;¤K[ç¬ Ÿlìô÷Gv ï¤áÙòSíì–x B? u·6©ÅB~Ð^_8ñ!ù'70£á™_­žˆ³„:™b¬Â©0ˆ…bfw‡&΋V”ÝFÞQ?®º‚ÅpÐ[Â=öÅ?†q =æR²’ÜU2Öý¿’ƒ^‘‹,_ê‘urãÝ>ªÍƒ¿åo„ø-BDëãƒÆ÷BÇ:O§‹1ìó1…ñɺçÉüá³hWA*œ˜³•%Í“O² @yõúþ1kþ6W_Ë'vöQ‡™;ŒMdeãáÓ|­$yY>‚@F]éo÷&vÝÏøDJN›ÂWwj\tÊÉéy™Æé‹W˜XUIgü]¤½>Æ]S±WÕ#=`A¨R¶Ñƒà  Ëš£IþÎп†W–÷Ú@Tp×aßúîêÏ{Vù˜=ƒ=È6‘>ïÜ´XÑYçtLœÀ×GOlÆÔ—ÃŽ)md¼«‘Ešk+±ß:×Sûf-ÐÇ[€Ô1cR}×ý×ï»ÿBâÎ%ù'ßÓOÐú©Eý™ÔYô´=Ÿ/înÝô9to™UÝ]ß×t4†•énKº‹ïÿj÷´Í òÕñŽ^lË”èø‘î(-HµÝQ|_îèÓl>*‘T}¸ÂãÐçIaàêž;9ß—zÚfw«Mþu,– ÕGsA¨{îœ||_îéçllõõºÔ }::ºÑNjâûRY+‹üg#f¨åcbÆ;‰‰ïKíÿ2[?çJ }}Ħº£ÉΕ„ïK,³¬DÑš’î¨çDîhºkêùûRGÿ4dÌŽŸ¯¤ks£„>ŽŒ 1]ç6døÄ&AùôS™~~õ0zºË¾Wêië$¿ZeµÊtÑ‹}ÓE—kwt÷”HùÕ3çó͹ˆyÏÓYo‹žzÞqO©³ß2nìyæ]÷3H̾éúûæ÷”æý»»ázM íò±]×qÆú 4‰•îg°¯ŸtO™žßÁ´~NÉ”Èyb” Q#9¤Û«Ô}õÅ¿ÚÎ'câí ¥º†®jèAœŠ mªvšŽø¾DÇ?/†Ïª+™Ž¦Ž«;êí’ðü}y‡?=«„}*ëÈž—*ôò\mkOTö ûpjK–g>õ³jüYαˆÕå»®¨ñî¹æïË{Ïtõ¬»¹tçÅš„»çš¿/uô_†óųεèG¾ï¦º£þ®Ýœ¿ßêh{õéᎠÆÒ&9¹ª79’“?ðÝÃ`çœãû­þû6J7ª]ŽÄðõCO6Èd—á« i¼%³"0¡ðSLŠäGêçD$º™ù>ï+ÉžõAß—iõõð‘gOŽÀ&—º¸TՎƾ¦×žõï7;ÚÕA ¶rv½Óé^ OØOwÏßIG|ÿWUîž'ë'»5£Pdaĺ»×¾ß$¡èõ›‰ÒÇV`N‚’MSV¤ ¿ÙGÙõ*Ññ"1Šôi»> J6MY¡#_ê#[Ϲ§èƒ?/b¦Gô0˙˓»ZVK¬ÏÖõÙPº[êð÷¥Õò¯èa÷Ãücïvq`ºjçÆ•í,Ó9s:”î–4ü}iz¥s5Ô¹µÄ+îéóQ3¦alˆ·SÔà{µÝ?6Õ6àóx¼ƒ(Nuw þ~»‡,jüHÐÓ'¥‡­ NÝÃÝbßo÷MÝJŒèþA’$º‡»… ¾ßÝïoê†vi?l]Ȇ»I¨;˜¦¾î`¼“„ø~w¿§eW”½†Õ‡kXx±>.uRC¼dñøûí¾}“-ïëfÀX´èc ¹‡;}büýv¿'²í’€W¢£Ï[¡ïˆžà:Â9] .‡sA¼Ç­ÒmnãM­£™ >;j7ÝD·×Õ}{çîñ+ñ=îî\VòÓ©é9&§tQ…¡™.z{\5|ÏŽ.² cu¢+±Š§Iº(Êty9ý}TÄ=ÛÈ®Y¬_FU/gR1`|ÒøG eÐ 6ðAËg|[V¾ánùßöIL6ü'ðêÙâ=Öp8 1pÝl¬%|ò£ÒŒ|Ë<x†ò§˜_gO3µF¸î~žNóM»Ê¼xꌮž"‡%øë2oïr“㻫¼¯¡êu£bnêh²z[ŒÊ‘#™¿[Œzáe‚нc ®÷nß¹n± ÚË]n´ÃA5¹®P‹ÊÀ×{·ïÈïÙÙÑtw4ÿxت8Y'–Þ©èàzïö4ð=Û½c¹[ë®—!. {{ˆ{öuqqÓyšÑo¢¢-¿¤M9WÈA®/Ëå_ù˜‘{M3.¢iì5óqR†7¸þ^ý¤q¸> fä¡®®@ÏÂÁõ÷Jõå€Ã/ÖQN€¸T‚*_A‚ÚÌQn ïì/—‹¥€– Ô™°uõá bû¸Ó%NË@7Ø+.m°C†Q|Cªô³ÓšÎ°ƒì—™à¡èì¿?'Î%qʈ7Ø/C êAå½]LÎÔ˜Îø‰#1¼õà†B ¯g«»l>>d‹'°híêÏm×DÍ‘n¸—_sä±À}vß}Zr¸°Ptô,)J]6H7Ü'·”„ .=üåX—ëá\· ‡pýœ›Ã!ˆs—$Ï÷ĺw'  .ç\WGkL„¾ Ža"Z¦³ßf«lMBáٜ܉—##LoÃ}ük!#¤·ßeÙè9å-u¶„Œp#&m¾¹} N.¿Înߺœ-áß±^ƒî!’ì€"­É$Ïž—4›ëÆÁ%~-áF–Fó u·ÿýWßa“ð¢$ÇL$Dá¿Âfwý$0Ÿú.}ú—Å(ûKïzŠašûe…YÒbkK±1ù”€Cœ?e‹ûÿçç¡8jÒÆ}¢h0nd‰ŒÍnó][ÝÖŸæÝæ.ÇÁޏÅ+S\"è|7õ%‚.1ù¬¬Äržï Ê=‘3*Ÿ³²”‰ £û^åx‡ÔQAAzh¼ZLÅqq®;°÷6ÙŽ7Ëhfzï¿@T¾éiè7–˜P'; ý5aX™„aMó.ûÏ›O#‘œ~”ꜩ$³êëÌH"Ht²4æÍŸnÜ[çÈ!0ç”iëŒq1 ³¨ÿ©ÎG‰õ6¼×„[ÉÍÜ“4Q> É–¹Ã4Ôý‘œ«Ü šŽ±$èÌt"Lä(2‰LgeªŒð6ÞsfÖ_2*<8Ë™”$š[bÒ7²”žB gH>ùt'î}Ó-"«´2ÝXV Éã)JÕGô6{”C­™Nü§“tÍ÷4I-ßJG\drÛ^¨¼qmLû©A²áR¿L•ùNÞ¼®ƒ¯pï=:L£+ä^ë¡<k/çŸxtj“Þ–ók*òIóÀ–„ÒY'}Îè†Y E‚>CdÍ1BänaR³d3a·9Bï%HlNœOᆬx'}9O«I¡˜oã\*LŠ­&×,ôh”ç+ù1ÿ)ÁùóùtÓŸó!?9‡Œb€©²Ï½‚ç^Ä!ç^a+ØL0Ú)Q›GaÉž¡7  uwŠŒÈ"+J’jcY-î³Ò]4L±@#‘½ŽŒÄæ£-Ðÿ#6l’yõ\`oÆ*‚a¾ûæë^ÎfëìÎØÊb9“TÀØ%MÚµ¹Î²ÉOóN$‹"çÉø4¼[.V+Y¡|jU'”±\ hvÈì4LzñìX6ÞžI9?62' 3ÊS!87Œ^ÈTNÎ;™p!§Ú §&§ðú(Oç¨3_+ÍËsV2Y“øþ…0'ÏnúuÞÔ.Ä=Þ3SÏç’Ä8O‰=“º…|‡`)9MÐrÆ}ÍwK5R“²^«K$õË·Ö—îÅ_¾yk¥–C2^£·L²(·Brºõ½ëÜ.nþó§ºÇ‚•„Éo$òýðé†y}Ͳ•N•Ê'D–¾ñ1O É·\ΘÝOk¬NçÌ.oÚ¡x ««§oYm¹»˜?IBí±‚ŠMì‚…#K]›4:Ø]oñ3Žîç,–"ãDc0y[ùÕr€‚Äåo±qÚÇl›»§$°d^§}§yýƒm¦ ‹Ž­Ì†E™ÒÓ›Épö m@ìñ­¼\ÎCžæÃ¥ö rÒéØÈ*9(}Iõ¿äÔßÚü–Ü¥lfäŠÜßx*@F¨2_k9.IOï´ ª%¡¤¸§ÙËHÊLúSMº•Vf'¹2k)­c½¯NM&Uš²ÞH?ÇGŸVë ¸/!C•sÖi Žd>ÓméóÈOË´AÆOšScÔ²Ê7"CíŠl‘¾V¯íïż¸õx 3ópësn|è<Â^Ä`eny\JÒU³Æ|ȶDn·OµüæÄzó·’ô^¸½P9Æ7ãáÝš6YïdÃæò!ÜÍâaùêŠ sª=ZHÈ7x— láGÙYõŽi Sùúéáã˼‡Uù9=O=O¹M-E(4YF K9 ]‚€£g௘2I}êž1È%ý3;D¥_¬¹'Ü5šÊ{í)AêaEuÞ -3ŒÿZ­ÅžS¾ÃÞŽ;c©ëƒ{Î5 @gX¿bøÿHFÁ’£âÌâ'Ö–’!vi“¸ÂUæo-v©‘庠xaÑEöô­JI3£ÏqQñ§°ÌÊ>mñ¦`l8³“Ènø†5z™zˆ(™8ÐJ!©Ñ‹å:w(ßKcÙLœSqjãHåÅóÕ; ±^[õAL`×Érífz3Ά¬¼¿Ó¹Hi]i±ãCì(IåÏ©üï¹ìÂŽTþ+Êÿþf-½ÖÞÈŽf{,€ŒÿÓrᜱÙRíº9*ç–RáÙTËÃ|ÄËÞ°º¿Uî‚W—3²Ù”ÇÃh’‰ÏATÈźл,ƤŠW–Ò-Ý2õmŠdÒvy›¢.Ñ6Ñ®!N½Ò®X”~âq´ßGƶJcLUQŽ <Ê_n•÷[cU2VÖP­±Î„7WÆ®@”#~L(V¿IÅ#&d«©'WîŒÓ`|„¤ÐaããßÙñÄïÅ÷)— ¼ov_Ûä¤ÅŠ'–5¼¼§ æŸûÝ !Ûû--Uf\æŸ1(‹ t«1V6÷ÉãܯÚÄ^.PùHìç\¡.ÍÀ¸@%L /ÒFJÀ1’ìºK™¥Ÿ?}ÐR+»Ñz}à3Þ8—a|ºÀâ#_¼ž…$BlÛžÝ6~ ûMîQÌõUÈ…l›áùhJŽf>P‹«Ñ@u#«l-dP-Ó6$©œï$7ú·¤t2Q‘µQköKÉ~®Kÿì&§MÚj­q¹ûºÊÃjºxš¸zΘk{æµUʃÖÑßL­¶©®ÕƳþÞµ©†È¯PüX!;®6hœªŸQ2ËÉðþ™.º´˜Ïy Fá&†§êïìñØ’ÊV¦8ÊDOÄdAvöžs UzëŒÃûÄHsS’D—F¿É$?½ñÁ…Oë¹ÎNɯP¢ÝR·ïY^®‹uÃ~EÞÚ-¨øÏɆµ¶ ñÒ–ƒie´¶$ËÔÖç4?‚o¿š¶h=öw’ðÑÇ“ê,°éÙc î¤Aª%%Õ$[Ë,Ov<–‚O¼¹3Ïlm³œJÙMÄ/³6¢ ÿ ´ ¸eÄšS¦QYzðœØÞ´7š&ãüU“›˜½¬ùÀŒgÚ,R³<Ø¿¼á± Å^V7LlBXi§Ë²gzTö¼•0“г¹B9ƒmN†›2‹’Aý_|XÓâ#ô"_û+uu>«6³–ÞDmGl PAj®ûòFk[ðîa}ÍzeQË{° Ó¥ßÄÖ”Îø|´RP;µ*O÷†;¼ÂQ+Úð G­p»ì”§J!‚úÕ£5°Ÿx-Ʀ<8OÑ¡¼üäÔNƒ‰ŒC>çÏ)äip‡¸€ôINQsÈãgâe›ˆ—íFJ°i)÷·›?ßÎo†è™Ltµ^Ìð/T‹BæÛPÔ5÷[þn~sók®ð/¦„ûê–—¸K>ã¥6#Á|ûQÊYríÈn©Sêƒ}Êu(tÊ]Þ‘W7)YV¹È¯L)´ ²æ)a0h¹·j,Õ'ØÑö´Òç¡Ef•ò±´tvŽo¥ÌŠ¢”ÚZü …¨°BЊŸ<×€žFŸò}ˆ”Ÿ¹v?ä2ÆÐÐÆLpf9j@Ò[nÙæT5$ø`´`¤ë~Í ‰cñ@$^þØ@i¤bʾәþøØî+í)‹-EíðªåŠå* ýMŸÝ›\Wå8gõ4— &ùÆ;•P•\¨Y1µâõä;.Âó±\„‡Ôº*<Ô­öVõ¾í£Lm½9¯Î“éb… ¦ô4L´´"Çá5mNÈEBìË<©n¦ÙÓúÈÝŠ=…ì-2‡ z­³5K©É ×£*mPFE¿¦œúa#mmìÇ›º·Ú64Ä=ìÇÚùîŠDyÐüø¸ÀšZÖß2¥5ÛPÎÄß7M¦Æ©ÉÇ£¹ÑÎ,>©Ñ‡YÙ/¬YqBJ.á»ø ·Z8uX…—Cãñy0:[Q±æM~ Ì+‚Í>1`FÚ4e3îЬ8’\Yþ^TUe— xX›î°æËdKS,޽r_nÃ(7æÃ« 2ÝíCôS™NŠý5ü“¼“.É7§´ìSz#[”È¢œL£Í®xyYÉììf,ž)±ø„>&”ÍÍËçÅ&Ÿ'™ƒµ7¼D†s$‰uü°›ZV!,mÚ{bÚý…‹Rî!±UJÖ‡*|˜›.z›b¦”çôæ}ô”ü«ìï¦r( ”Áán¹®/jŸtÝÛ…´~žÍçö‘9³—Tí›k´‘uÔó€¥q?φ«LŽè½PœÃK.þ'z ªÿE-»úß½¬å–ãÈðFÍ}‰LVù±M&æÿ€¦S«×¶ORº²Ø¦8­3%X9߿پµ`úwwíyûѸ&=¬Ú›ÑÆlayq‰q&Z—*h¥,Zá1ƃ0Ԍę”–£=~[†«»Óè¹}Ð •E¸.ãcfè03Ñø¼ÔÓh§ ~.ø^q®oÎ1u¦û̓­O>ZøÀ,3ÉvíoíÕ®ìje{šW‡Ï™a@ÒÇ:xTœªìGÈ!(…S‚FYÌßcFølz!GÛ“â9«œî”÷)|+pV?V'RâaÓ\´=ûŒöÑSeŽx|L0ÑdׇërFaË%°—]>W¨|ä'ó=Î[Zç4·weþ3SÉšG?â~£†³íÇe+ËT‘åUœG†Dk àšk·²ÏÕ$Ì)m%óÅ Ý”j¤Ü¯…þeeB{ÄÃÐø%Xu°8d‡çOÅàžò%‰Êvc[Àr=ûq¾Zl€Ð4÷SFJac&¸Z{7ë~õç?¿í$ƒ¶ˆ²ÅË×qÔ8—è¦uÇÖžQ VC†Åä^Íû2ãúË¿ Ñb>"ûóŸ¾ù3)ž?ê 1#æð6˜Ë?â£gN ðÍÓ‡9 þ™~Ïo¸{cÿ©¢ÔO÷ÿ/ÔkU<åÌô(ù`i’Ô{¬!‹Lñ¥À½Y2‰¤Ü&ååË«)ÓöêX•æzsêÞH&G»[žé–ÂÍÆŸL½j ç òºÔ‰mªR/Xþ3*t_™ócj+ÖK­Ã‘â4CÒ8q„Ë7¼ J‚|qN5’Èx ÔM¢=ôY¶éõ0NsTTšÞ†JMíø©W²ð%èA¹q l®Uªd+7)k½ä¶²SC;sîK‹ ¶Y®*(£ÞóäfÛû]ÅRÅ¥…²RèZ^†Åàà) aÏEã·ü¶s;÷Ù*s:f[OC]9VÃWÙWZÀ,  ¾Õn-–ѶaÌI/ $)6œZÍÌJŽoÔ’d*S>)»„Å$Ä÷¾AçÀ\£7xql± f*÷¨2–ôg­¢k…lñ0ç‚ÁÚÍš =NÖÉ–“U‹BKY/ÕK¿‰vx­âV¼áµŠ[Ѧ×êiG¹aßSeØ>cÖ jŸ]4;!ùë¢@½øn•Þå P&3¸ƒ>ÙD4LÄOná&æÈ_Î(r¤¢H®?ñIwìéÈ“›ä¹ž­‹›ïòbmŠç9ìF|ZÞe–ã†üÏFtʬÙèO}nn»8­˜}¯Ë¬pÝku{¶_ÙˆËE›CÊ'Ú÷¡€ µ;VÙ dtó¤]rìôÊÑ1otRØ b5b#׳ìÁj ‡Y—«ïD0þUÌ^ö¼ÕvÞHн·ö=iÏ#(xÃՊۛф‰zÍ`‹™ZátÛrG´hÖ~"É*•ì4‹n@ìÈyÌ¥Îykžs7° -àNtBß~ÔsIýΓŒ!ædÇèȤ<€F"€£¯-WØÈD1/¨ E»¾ãêv»>!ÄÑußIÒÒ}¨Ïœ¿Ÿ]^ÚªT.cî¥yŸžrÄ7ô”ù¾hž<'Uö}!)Ö}·â1²…4ðÙýÐlñàhÛa4.GXçã2¢|omÎ߀É@<͸®š8wRÈîÝ;NB”3‡Ǩ‹â…%æpþÔx’‹ÚMƒX™ÛYËHÓȾóVTÿ–ž¬¡yåöÈôpòU<0CÔ§µEfú±ˆööâ1RIâ(µ3Ró»< ê ‰‚‹ ‰œ.GY,rQ9ÂEÞ”zAËs}ÇH,Ï‘~R¿èÇ2 ßXÊ\ÎÁnàyÊ4S1ô¼VÑV!'Ièùú­JÈÑÆaÝyK½ýg´?¿ç%¤²xNÂêÓGÄónPô=µÞG=¸å%a’~ÔüˆxþÀz’4@§ôä„V\ñüaê%ÀSünmø$ Ló›‰`‰ßÙÆö-eEŸxž¼¹miº=?Èu»^­¿—£ -v¾ËSêÌ4–G,6¥ËÉtO`dö*×€]&¥ø@[ùÀ ,¾õüVу7ð<ó“>3yÒãžÌiëƒã­'wîy¢Œ ÎÆR¤Dàö"ž‰ÔˉÌp{h,öÓV‰£²¨}w"Æ ë„QNÏœ?}7Œ,ªüésM9‹ü¾PÜy )ˆWè#­ª‘—û÷áÅšm7Ûc«ë§ôì®m–ÐjNbgømÓ 8«Ì &FEVöùÍ8Ö]ݘˆ½b®ôzŽ“dHVpOK}ôâÙñ£‘@tt$;æ¬ Æe;%àÖøgyèº.G-¾V3;â0gñxŸÇŒ’jBÏ/»Ã3F9¯ól‰[uR‚ÜäÜ2tÇ›½Â¡õ‚6A–@¾oÄjWÜõ0ùy¥°˜ø˜;K9¨Y¬2!’ãcŸ8|n,á®ìdòÆrÉÎ$`FË0ؼ’aFª¶£’é{óiQ2Ò¾¼u]0þ ¹2¦B·åGajÆãzNÜ2w2K´4¼27ê…’ämêí^ë#H¹B¨²>ö+nIïpq å°¼ùUzñQ¬Š›þ™TDé["¦ôìæ?èw>‡º¡ë$Ç£Äljy›<¢ï˜¢43nìß®°EÊÈ KåÏ[(2¾EœŸI?!‹¾ ÔL.³Iv]¹Ê¾ÓsÈ”+q²¹z¤¤lÇóùÓ¯ð“rgHü;ªôŠGy…h" +|¨•¤vÐFlmoŒ\QÖ±>ñ ò }2~G †Í7Ê–V¬ØÄ†pá íi=],Wš•';ciÙ•Íh"-=‡±÷vîÔDÛNotˆàøÆsäR FYéÍ…= ëÝ8BåÅ8Ôý2‡b±¨âc†l¸úd6\ø#çÊdÊ 7›ÛwËüè«ó m¢?½‘÷`µI£6#Þ ØNݓثR¨%wÁc8ÑØÈДodƒ* v¶áæåØ—3Ǹ´§–[­HÆÁÎB9 $õ½Îð9Æ[f“árÄVbig)ßä‚.üƒÊ6áw?Þˆ;QB„²²ÇïR%ËLw$àH"Ü[¢µœ«ŽÄÈ“€ï§õ[­hÃpÖGõÆÍ·*N(×Ë!+,¶¿2L&‚‘ ´ó˽L„éÑ“‚a5rœvÛ·FíLÀÀDsuI0ÏXcGЦ/ŠðÕÕÌ0ÊLHsãn5ŽôBi¨Má–„k0-…mY–;˜Ø>ý%éQ$)þBhp.е¯ã|—³|—)Ê÷×Pø/CßsX·„Ë—iÝýú­§[ÓS æ1ksºìa´dmçãŠÉ ç*&ºðâ{Ïåf™}ÇÊèãÝëô!+tòG Bvm[(JíÛ¶´Sñ"g›î^ßxl+‹y¤¸Ñ—Ç"ó”ý¢i‘È*t9‘•¨¬X•‰™é¡|)éÌYã…^b4›RDDY g(Oò± ´z“+ûÖ)(ko¶ÔùÑ:´Ì—R¹›ân[GúQt¤ÉÖù½àC£8‘¢r¦\qŠuo &ôùˆð{F4üXЗ(‹wƒÊ1øfº˜i£†Æ°±1àà2ÑᣵÑI`UfGˆŒôÑ)J*Þdù†!ÇD‡é¼ˆ™ôS3IoX¦eŒ%}°b]ä8óÇ‹HI¢VÈåŠ@$‚¿±%Í‹©ùÑÆ)Ä&Ž·Íô~³å–æÞGŒ\ßpOstÛÓ£Â~°x¹ÉçšaL‹@z]‰©WŠˆUG†Ö¶:FæÈ ò"Çãž(Ëv6qH‹Yóµ}(Ë¡¸²Å“V²q(ž´âí?P#hA`V\7ITÆÆµ Ê“öÔŠ"«Ÿdô­Èµ5ÎÀqÍc¬pFÇ<Ñ7¿!µ•ÛÈ*üD“êÅ-(Ñ6CR´ô÷¹²ùWÖ†÷è›q«Ð ru3 #D¼Ú¦´ô÷eïg)ë>v„÷AtC'jE>&Çm­ŸZ.”kR˜ÕÐ †nˆSk0´“$ŽvBGOBó=Fñ`&öH¾¿MõÐd,­Ø-…v•ûÄ|_ ÊOxQá$eîSf,¬ó¬0ï%¤‘âš¹%&L2à\Ué¹…3Ø…£¬˜[ÇzŽ'JJO1A\ê ËrZSè2¼œ$däwX4ÙœàYHÛm%±#<À©”Ýùß­4.ÿí:Þæ1ÐzÖ.¯ûƒ¨ø  µ0†Ìá?”n°#_Qkg¤iŽñ—ï‡ã#â!hÜNÏ).àù„ÖËãûe¼Ï)H™Æw|2”PBÄÈÊwF\u"¿“­®@Ï„fÍ8 Ti&À[ÅL|æJJ3!G>2jïjspÖìjš>vð™Sܲ}šð§®_ŒFw$I¹*„›w$õ‰´Å·$¾ÿ^?Üí9I`Ýý=ð @ †’Mæ('Žó•ìù¡¾£¼LÐjs®\°}§›y[2W‰O,ž‹±/­,F¸ã_òí»Èh£a†=Ó¸7ÌÄ—vÏ1⬖v׉lŒ&™X‘*ÂÖÓô&(o=6{ Ť3Š$o¤wñ<­P%lWT½"„sl¿ae@¢åÖ‚Ï^¯ç¥cm2œÞpÚO ‚»‡.u:àCë5·3±üh[I‹¬);€,[þ=eÕiPù½&™‘ɾ\Pþ2%EYÖçê)1,%ѸÌK¯¶qÑó☳LÚ‘*eÈÆù¢é&ž;/W¥±gj/ Ý ­P'­"q©}\+g»ŒÀ~ÀäI;N7ÌìI `i{N¬7g˜´˜ý¨­®fF]UZ_½“–ñг^¼±óee™ˆ8£{ž€µP˜}>íÊ{0šÍÅl°{ ÑF,0Ø1Ì%åy$™åÔ?ˆ=Ä iAÖeÝÄDƒO~ìX*dã£Ä+ˆ‘ '¾­f$´ý˜ÇXËÀ¡$i0~án¥­”žÉÝÇ-h¿$Í‘~4ᆈ.’×¼ÝbCä;B'4~Î'q¡4 é–¦ž2ßWðrº8t… w!­1Κ /§O‚RîØ8/öc¹Såe4ëNÞe=M9±ëIb¶Ú+UAḐç£JTä]Ð&#½!Qžkö¶onù°Žè’ðÝc%4ñà/ªQÈ.åƒÞH6Ä]!nÚ(Á™£€j 7mÌŸÊ%7m‡™r;KhñÖ¹›ö±¥‡AÓy«Z^Hªth|Å»€&å†|ÇuTÁ­_êÃ@xÊECF½Å+gÝÐÁ¢÷ÑC0s%†æ—¨’Ø+ ÂG¾£òf[r[¸UÂÜáô="…mh­ú(v4×`ÒÒé‹—Í4’huÜÜRGE" »§³‡×(À %ðêéî.ËF+s–F›ÖZàÌäDsㆎ6‹YÚÎQìlç(æ@žäm/ÊÇ bÌÄÆ`úÒŠEç Ëì‘—48ú,wÛÕÓNn3“í~#“º„~è[44¿œýVMDù;]É€ÓÛ}¥  ]Yʌي‹¨੦J§ÈµÛ~cÂkól²ð¹Ü“Îð¦Hñ›ç1ÄÌÊÉn™¬(?ntöoùXN6:)%þ›´xå •“¤{”{dWYpnHª¯8Oвƒª| ñN¢«Ú’„¼”哸Zg:§|fç) ÖZé8O˜æ5ë`Ö»F:TŒÃŽ„r¢ÏòC w8š­~\Ìr9ÉS+ß1¦Â¼Ö$ÁÚL9Pê®ÉØ–ÀÃp³zœs”¢ÆÒ1kÚm©Lë©LIžÀWgb<·ÙVÚ¦ñæ¸)§ÐꃼŸ¯uÂýrÞ¥<[‘¤*ãâ¢x¹_©ôÃM¼ú CБ n ›ï²õýëø¿PsI³_Œ˜¦ÞôM\t½|”»`‰oôM>ç!ýû-Ÿ‡?mµøX:²JŽùÅ/ÀObW÷mŠ×Ç — i–þÁ³:üÎl‚ó þÙîíY+BêÑèÚ Y£O¬9Øl¢ÔÙ÷ÜÂ7æÎ@ñ^Ý >’È7éQÂaR¸¾5gßÈa+çTä-GlS3Y¡Ï“UD£QS.7Åo“|O~*ôà?Â(*@N%iY‘C#PT±nµ„µbaJaHEF¨¼ð‰ä?SÖ@5î;”¤¥kG±¨y\êºeµÊÓ¤Û‡ÑPÍ#‚÷ýoP£ u‘°ÝöÃ';‚ÓÒVºá‡O[ɶþéQÌ/^H“âì[ŸVp>jeÇ jåN´š’´ã‰ÌDµp-N ¡ÏcxõŒ}ÐçEJ #¼Q9ERgRÑ ÂÅÉáÂ>©‘lc¦&¢Dó„«/ùí±hÚð›¹±Ž¦í „˜ó0.ôsyž7嘕<ÒLqØ„dÿ¶@Ùå-\¤˜çä&|äímè'*aQ¬CIþ 15NíîcXô‘XakçÛ@añkÞØ©¹F¢Ë=F•·ó±œ»SãËá²ß¦ØÒ˜yí}zV^V+Ý{mÈmõž9…óüÒ4]ýÆâ‘n3èÂÚsBæ¹Ñ‡’s¸zZfvD‡„¤ðiyþºqéX^‡ãƒTeUÄË$7þŽÝZ:wªáõû¡†ÔÈQÜÉç>±ëüÂuKé'I¼Ñh¬uYw°é¢.*˜˜—‘ÜákŒ%å,O•lGpAuÍ–8Í=‰8+ütq¿@I½²î£ ‡“ó=ÝóÐÌè’L|xw‡Š=YžÍj¥³X(kI±àâ×J&E#ÁMвlš\HsV°ˆ©ú£A·ó¢“5ê : ËÌMül¥@tu¢s&ŸÙgô€Be»Y@t$ŽÅ×™IŒ|į-²$NóÈ‚¥­æKÓ=@gí5&£Æ1s2„ÍØXKHép=rOgH”` É0àgËò›38'*ø7N¶Âi>¬j ödLJXäŠJ“’ůwC¡uyVö Éù3YÛ’ÿd5],‘½„]Έ\±a"9Øh´ƒ—CÐað˜çE¾ú”ãùóÜ:“¼T]."0¤æ"3ee2ÂÆýï: O7eƒ? Q1¹5sË$ðÙ›c‚½À”ªC†Ô™–…ƒ?O9)àx½šìª÷dÅ¿‘bÜŒP¿å‘,¾ÕÙÒTb±rÎìq°M6r»ú–Ú…ôúƒ.*Øöí +*H³òéÞNì=öG[ìÛÑÜÆ´úQOŽòìî?æÈÙ¡Œ6æŠoÚ°cQh#ÑΜS·ÈÀ)„–³ 2_â; S×¹ªHïä!²~µkˆ~kßÇ·èÒ˜7öá"ë0ï|(nÕòÖŽ­ý8ÙØ'EÍžµ'w¼J…4´Z²Ïd-WÉÉ¡‘f_õqš[ö[2·ïLÎt.Öcr‘Ja “øËd½_ fM’ÓÌu¶>ÈÞ²_²ÕÆé×´\ Å”‡+'˜ç$ •ûH £»»ìqÍI/MÍ´™àgƶ‡f;o‚N»]ª[´w¢M÷Èã“cqãÞ!ùCزàOC²rù*9Ò_å6ޱSLUH­v–Ã8¦v™*G=Î#9òœR+k‡+å­'¢xž£’-\«Y™Î+oõg-mQ© ùNê¨ZeŽÂU»«¶øHצÿ ΘĒ©1Y2‘F¼8·Èݪé÷ÑÊM}'F‚øñ o²05ÒǬo7ÆE\Âh'5p«H…v©Ü’ÜYUesþÍa¡Ÿx*p$—Fç!Ø5p='?= ho´§XÂìC1¬§”Dq «Ó¢Í4‰Z¤¦I” |·ˆ$¬¨‘.¾»¨èáÓü`4‡Ž$@’€íJ4È+æâü UŠ/´N6\„M7ý3°MÒÀ§y$A@È6rþøRJu ŒMÁÃ%ƒº#Ôá@ ÿN%|M/iXw ¸Š¨£AÄÔá&+˜HúDZ»®”AµD6ɼòœœPÜׄT‹F7376p…•î8ˆ=ŸÒa˜Hù¨öF2€Â›“ãù·5ÿ/Æ–êñÁ§ýâ0*äïŽoøƒI»¤ ‹€~•–VºÎ’ÑñsylìeùIÑ£üù ÚR6Z:)MȾF'ï,ªÙ}à}‡…‹E)2V(`¾fÿ™8EörJÞúB7=±—Ý}º›gV„!À(ŽôòÖä‘ÍŠ70L œ5öÁîÌ&OŒ…u‘5I×ÞŠý1Wâ·]§°Jeß3©BXG’iÈH(%n,£FNôH²XJî(9)$Xiï¬ *YÙPsNý0@¤È’´½Ù†Râ¦T÷‰'OK]vs¶Î!Þ 9ÀRÆ/J – O­RŸ64ÛÁD>ü,UŸÄµ*em¤ƒ³Í4´y‰)Éoâ…€ç×'pÊvD¦;‘.`k®Hú,e_dÄ-GÏä¯V´Ëç-§õÇùüÅÿ|"-8hýñiù 2jââ°~QëËŸg­?â¤Pž¢wvÐHoÁÕmÖ_¶Vÿ5þ¯åÓð]ö¸R¿ûß|÷¶=Z|ÈÞzïœVÿ›ï¸ ‡¾Ÿ­çÔÓÕz4{ ?»Ë š¿lgo”ýÔú«dÀkùï¼Ö7ÃõÝtžý”Í[þ¹™¾ì‘Eÿeëß³Qëë!uiR¾ ý/q´î8.Ý8@‹Ù<›•üGT1y7~XÎÞ—­›t‰ÅlÕú¦ÿç?÷ÿôíWùê£!–DJ’Îâ—/‰$‚h@_}=œ<ÌÆZ‹ *¿sè?ú¼ÿ0ê’ŽA£_©/þ?ïqÅtÇÑ´½ªâc¦¹õ÷÷k¢²i‘ ¾¸[Ìߺ­¿;-"31ɧ´>¾ÌÍà;‡¾Â«[öïÕròaã>·|Ÿ»ï>ÏÜçnÏ/ß··½ õw·JÿÂò}{Û‹Ì}Gú—ïÛÛ^²I?¤Þq_ºy_”î¦óÖ„@¹Øu#ÏHèó-îº^Ñ":·ŠýâFônÿAq#z·ÿÆpóÕ{¨CËmãÕûÈo¾zyxbŠñîï#ÏL1Þ½7z<3Åx÷ßèn¾zϨ=oóÕ{Fíù›¯Þ3jg&ä[ÜCSèñÌDÌ=^xèFž™˜oæ¿ÿƸXaþ{×Iq£t¿wݘ7Jð{—,qŠ“ÄüÞu£kÝì Gì†?eê!ûÞLÛ~ë~ñS¶^°GŠJº„0/ýÛôŸ dâ§ïæ³Ç–nJ½ “wvM¿9“©Å™r[$¢W¤:eŠúùØú{þ´=€lÜú{¶ÏæsûÓɲõ÷ ð»¤Q”>_Ñç†ýájØúûægKºqÇóóÖße(ö‡÷­¿ J ЧËíZ×£.õ€:@{çÇr·¦ôétñsé³ù}˜q:лácù«ó¯àF+÷sþÝÏ³ÑÆËi¦ù[ú—Øa±, c±¦q,Ö4!¥gÐ LMéÃ73®Jíi†Æô×xñ°.Ý>æÛ·>¾ë¶·¾ù™ÉDšÃÖÖ4ß9甾x þž[øÿÝÓrI*„§jµ‚Ö[¯EJËœ¿w[Ù/wÓ™Z-ÌÇ_Ü?Í[¤×w³,5zÄžúÑÞ^[-£Ò_¥÷âÛUÜú¢·þÜŸÓâ[e­¿«ú‚–õåÛ¤¸çŸ¾`¬ÙÖ§Ÿ–Ñý÷/*}YjÖ–V¾XÓÒñ=¿¹HsÈmò‹ˆÁ SHX1}.ïÔ?åÒ@ý“õb(¹Rÿô\¢.²Ýúû†ŽØ’/ûûÇ6k¡1<)›FúÙÒ­Z@ cúeÅ» K¡å*—Í{øçdЬ„l¤÷KþwEZ·ú]‹¬àÖâñ·6õ3üÍbþ kWŲÌV­÷¤GáÒÿ[«‘"ëƒCŸ¬ºW­06Ì[$óDÝ]µH,¶Þÿ'Ñ•ž°ZÝÓVl·_Ô–—Zmñç·å‡V[üÇùm6½‚ËèÅhú|Œþeý²i\FûÐîWxY¿  ŸÕ–çZmñ´Ûm]6Fß·Úâ?.h+µÛJ/j+°i\FûЦ}xíÃxSæ\À_àò0 6îõ5ú6oqhGé÷ÐVG*!½š«±â[¤ ÒëÎ}y/g"ë–®“º^î/gnÑ/´¯ùž:^îGÖË}ëåöuT×Ëâå¼~õ ík¾§Ž—{Ãy“•®ëb8×b8×b²Òu] çZ gñ˜uéÖÀn¼/êU.×BhI`_5½\¯r¹‹–®“º^î/×+›_h_u‘]¯r¹ö­—Û×Q]/wŠ—ë•Í/´¯ëXåòB‹á<‹ÉJ×u1œk1œk1Yéº.†s-†³x̺¬c•³V®W¹\ ¡}oó:¨éåz•ËuX¼°tÔõr¯x¹^ÙüBû:¨‹ìz•˵o½Ü¾Žêz¹S¼\¯l~¡}]Ç*—Z çYLVº®‹á\‹á\‹ÉJ×u1œk1œÅcÖe«œíe½ÊåZ:Ù¼jz¹^år/,]'u½Ü+^nVv²qÔEv½ÊåÚ·^n_Gu½Ü)^nVv²q]Ç*—Z çYLVº®‹á\‹á\‹ÉJ×u1œk1œÅcÖe-«Ü²ËË.‚Íë ¦—›UnÙåA°yÔõr¯x¹^ÙA°qÔEv³Ê-»<6¯£º^î/×+;6®kYå–]Xvyl^×Åp®Åp®Åd¥ëºεÎâ1벎UZvyhÙ塳yÔôr½ÊCË.Í뤮—{ÅËõÊë .²ëUZvyèl^Gu½Ü)^®Wvèl\×±ÊCË.-»vk•{Ö*÷¢Íëºεε˜¬t]ùÃY´Æcš<‡Ÿ½·Vc%çg‚¬A³‚—lÝônMcSjm«/(5"ë HåFœÃ”{"~ {¤»{â–ù]Kã×p‰)eÏGÌ? "mÙ7jè­s„ÞªÔ¦—îØ&øžµºëµ$¦RåõÚä áÚôD›l·^Úf¾ ÝP Ê ƒK½XD°²¤äÈWae?HÕ§üa€ªµÌ.?¼ã!ÙjõC;ßX~HŠQù`ô–ëó‹LáóÓræ„€8®­ õ÷ÇÅã?ZËì1®UKß„%"8_¸WS˜¯p?p£·Kgò.î¿]„ÙÞQzè„Ƚ‚ç5÷º·q”ämqÑè‰âû–øó5Eãë-Ö†±JåW©]Îõ\KÕiÿ;[.ÞèÚ¯³åF¥up†#½É¤¾¦iG1NTº& äs™Y©õygꈹø¦M [E Ób"õ!/ˆ‹^Mí’³ùJ8Èsc.-õÈÃÛÅš¥ùp>ÏtAr]¬ts¦Ç7÷Ùzº¸]ÝŒ¤¢ºçûa+/Rþ‘ÞjH2½Y<¡xï£iwr³Ìîž–«™©ÙjÊÍNÕÍp>Y,‰=P­ôiÅUu­"ë™îδhŒß žïvvéâò† Íe`óŠòSSQåß݆ ÛWkYGÔ0׆]ÝŽt}s33\ƒ5]—O\ž+¢Žy^?ñ·Š‹Ç3}C20L1UÚ#>è W¾$ÆAE\â^"B¹¬(¯.u§7{ÎgüR©öKŠ…ß)·Ï%]½(€œøqñauëBÂØϧ¸T8™ÄÃýp’™ªë\÷œxˆ£:tÁ]k¨¯;{±Ì`®:Í™°O%Q&݉C.ž<&†¦ž¡äò”HÁô• ·˜¬â¥(ç« Gf“]q]‹°é jœ/Wè—Ti¶Jîfw‹‡‘Y,ªX-aK&ÛgUõ~é}\®{m ÒC6rØ·Ô(ævÁžsŒj¥GÈåvG¨ïg†@3›ïÆ"mWÙßž2.OdC©éÒòq‡°K|º/÷·^š×f–:ÌfAéjôyfn‰kD?Œ¤à4º8ÏîÖúæ±Ý§©p–áêñV¡–ýÚ¦)ºá;Q"l#äâÓš»#®Ö³»Õ®Ç-cŃz~˜ à™Sž.Í§Ž­—´Lf¼îbõ†¼Äžpî…{˜ûÇyvŸ™}Œeœ,«ÍÊÓx‘=Ð!ׯžSé¹™©Ê­ ?“äð}r,; ]è'-èYýyöQ (™ÞçëÙÛ¹Ìþ<'«Â.Õÿþy6Ÿk!“1!V´ˆ?ˆtŸØýxcšW7ÐkÒ0p…AY„ Ej ßæ‚òìèÂô¨xž=¬¤Ï\({†©¡=®Åý°Xó#îsÅêûǧu&ÒY¨¸âëÃÓZ^Ñž÷é†fljT”i6\ѳ þhr³±/äãÒé"6iEÝ›aÓæ¹¤Ô¬A jÆò™ž]j~Ñs(öò}²6®XnH Äk…kaßLdO¡&)ˆ°–¸šÞd¿¬ÁƼkƒ@ôÙÑUxyå­ðû“bœ£‰gèÝ?MRòÂÝÂUŒÅ0'5£ ý¸xùT¦dª•º„Z·âOxý¡ù”¤ J…ßeòò4rŒ4ð- HbdØÿÖ‹å·ÒíX+Mòl(³Ú>qW¹ü¶.EÎEÒ5÷N¨OØsQ¼~u‹”3ãFAJIëÄ=²B>èÝÔK,A%S8âÙ7‘·µnH9™a³IˆS„KÖÛû"ô%Ú»¹sn„½Œ“ì\9^¯j ’Z¤Ÿ‚òuçfÀ£klqë4{ÊåÙ´QÉ<äbó(©NßÉ˽طù¸’·ËIfˆ‰åƒ§§¼‘Ѧ³ÞÓæxÇ5é3"ÏèÉ0CfÕf'±ø8¼C+Re“ø1d°µ×°z²X޲%/À1ËÕ 1úÓ({GÊ,}û/ £=ËSon—倦eFÛô³=8'2âå°-ã¸'A‚±k&§ôæÖó¥QbÞ9©÷„ô27RV6¥Á › 5åƒV XGÍ–w2)…,Ù6C×TN+ž0A¥z!+?ZÞmfº cY7F`ÓJkwZc2_|à šæ[Xo¸Î ¥»ÅpIꨈ¤ J±-ÑX"î€Þ y_BÔÂh bVÄÑâq=»Ÿý÷P/ŒM¡7µEh&Û²°8uf™ÛŠÉ§Ï,ÿóWLä Ø*ˆEÆ–žôÀ[ø”š~Ý.ÔÍŠ9¤‘Þ {¬ÏÝÈÃKÒÚšx¹*Ñô'Ö'ºCù²Ù6Ÿ3 ¥ ‹ ÚØøêA–0‹#áÓGx[Za@ÛœL*hýÔ‚¿# NŒ6 Œ[aè°­8ºù÷éŒd6o´yµw4ñ·ó›Åý§ƒOf)nÅÞÉ1d³…ôðÂQÁú.6?Ìö¼ä4Ù–,ˆg÷Ø LÊ/ÃN'M‰CfDKr ëE´Qã<ª00Â%a¿][ÅÛ'²è¦³ÉtãÅïÄgð¿oßB\dk-µƒ#[b€ ]ß F\†6ã}ˆE,›ˆ÷¬oL±½äÝܹ(p·&oö2î ÏÇ¡ ,ÉŠ¬‰uö BÖlÎ…BŽDç`c°tß1mm3ÿòã»[7&…©ñ¸±C¶xäÜ"y¸¼K?êûì?¬(}|FÔâ±Åúfê€S:7ÃÑHæ{¾ŽÞ’¸!H«4ÔCh5bµ®„ 3MFK-sÇùæ¡1]‡÷ÚÆÂkÌ+ 2@ö”Šé_ZÆ’Ä/öܤ”¼sb?-éýO³Â>£)ÃX¼1=àZ»¼ ²ñš$17ä—«0…j3¼[’ÉI4¿‡ Êû3îžçcÛ"Ïû€u÷ñi'»Béá½HŒ?ÐËF §Ì~Rø oXåÙjUˆjñå”]|€D¸Ï½Üzáø‰751PYûasRRâ¦â}U3Ðrô–7ýQ&ãOØIóÝb3ßôýK26ÆD<]JK´âþÍÑrŸye²ÚÍž‹Œû¼š•;u}ÙQÇúõ[fËp¶±D“—·b½-–òV[ï·6·eFS¾Ê‰8d+1ŸW¼ßu܄ײåò•I-™Æ• :<ÊbO‹㬠­òÛóÁ[0¼»¹…ª ´tm‰bI¸®çf¥Qàb–þòx-ÝAwDÛ¥mýn9‹ëYšÐ¾k/õEÕø:×5ï®éúibiìÚ´Võ̶²7ÙjEŠðLLÑ,'¶öL‚û‰H°õÞûhÊMH‡€¤ðB(z«æ^„Ø`5]<ÍG²³ ¥X@®f#$ ;A ÿÂÎÒÆ2û}e·ZiadOpÜ:´vuN´IÍïè·–3Clv|Ò§´=½aÝQ$ј·c^ä>…Õ쿳²ä0¶)o[–÷Dæ;v=2ÿŒZÎ:ãÈx§eûŸÁ,[ön1ŸW[‚Å(Qìo~Sxx%ã@N%øå‰ÓËÑͬP¸ Ÿ¯H ldìÕqa¦fzóÒn2Ì¿6M-¿Ö¤0<3cùò{S*æ-šssR¢X&7žvÂ_Å;÷¶±”‹ XŸ—ŒÍâb…ŠØçGë@ž¸ÈC‚, ïƒ)%ÃX§”ô’SJÒEì¨j)%ï©£õä” ßçÓa¸•Yòkº÷ÿ"ÛwËó¿ Ó/Iã­Ì’h«'”ˆªÉ'Ùä“lòI6ù$›|’ŸC>IìYÛù$!ËKà¶#ù$ýù$ƒø]Øä“lòI6ù$›|’Ÿ>É­’@ÒýŒÚüîÔ|’ô€cíÌ— zí#„ñ7£nã­ª4]¶ÈøÜìHxR kíÆÈ` £ñ”vŽ¿Ý«{¸;¯_iåŽý®Õ&*²sʬÐC¼11WqLL·€¤¤b…^œ Ð#Ý1ô\¾v‚€®}óÚp(Ÿ›væ­»G•-ð€”?}ëÉóßùd+Ñ»”zGïœ0v[‰ÿ.rSFˆ>¨2èZ¯‡Ë傌ÑáH8Ëd!0].u¡èšiH“ 4ä4ò#Ä‚¸ô|‘¦áÆ žIȯ#¾Žùž`ó:r\àîøþ¼òécR16‡ì¿KzWA•âïC«ÜSëÍV¬‘Z˜פûdÌ,ÖÅNèûÞ˜0¯Rãêížø|ráûãè²÷s&IùU~âã‘Îhá #ìÙ?éq“ÿæ¤Çsh°ïØxäÔò:䪂NJ¼.*†Žüš Ž;H#®8Bõÿ0ü¸ 4X–šROM.¥^"Ž(ਥV”æ)_U+‚ú¸îáW”†EÜ«‘JÒ®ý ÑŠŠ49ô ®Ù§ß ޾ÏRr±¯“kÉ¢çù,èÜÉ€|zE»@ø¥ÇÞÌ×’7¸•HáZn8±jÊ&.ÇHÐU¡ÝÇpë%ZI»úüxbµ+Àòij"Êä‹ãØø8J-ª8yH"SBÊ!L,¨’ø¨R¾$eIަ“ŠÄ–G]wP%)M~sâ º|ã:Mq¿+÷˜v6¤,¦Ô•mUÓlW¥Ÿm¡jw¬ü¢¢–PÍÇY]J{ M8O’ëÄ-v{c’ø±ºÙ€„rþ}‡åTàÉV!3ÑßÜΔþz>›Lù¸Žû¢ò“DúPh1ñm|†S:áËŸnØuÖYœYèCŒlt;*‹˜ã¦X@&îEÄ'Òí¥Œ¥å3àŽ¢=¢JÑàÍ#N¶—o (˜1Á‚£â?Œ9ŸÏcK‘3>“ÄI!ŸmŒ,Ð}Ð%M*Sѵ]úˆ‘‚¼€Y)AøÀ:<­žø‘‹ÉÔù0›Ïþ›'À‚šofËÍñ0kœwã~}0>Á/Xç…£âÐqÆØF9¾!ŨˆGÈÐÀ‹ŠxŽ¥X‘:¨òx‹è6ÿ|­aÑ< "ݽWýtûs:\Îj|‹S©¿Ãáx>€7{gBiìcÅñ u׋G±M> h—»qÄL>UwÔy‚åGŸ†÷‡9–#ksFº^>q_ ªA‡è¦„7³—'cvͲ–œ”1†k®³Gà›Qªàò›¿Êyy.=™^9QÍçǦ|Ô¸zbÖY,åðÜfKÇzßvlœµÄ¼;nÕÃÍÏo5¬ÏÏ0¹ýQhëËÛ(ê¡`K» &º—šlì1@œmÎÆvŒE80¯Ê,Q Û![¤vk`;IÇûG³`Èëˆ0PŒoC6'Iƒ1&VÕÔ`³iòÔ„áŸ%@$=*$ ]ƸëÎR­ñœY(Ç4Wv,«<ªŽw«(õM·ÃHЍô\Ù£âŽx!DsØVí2ÍcZ8†Œf£Ø\ìWý„œ¯xEÉÜð+lA"˜ û!tfÊ &–‰ûâ3ìÝÆ:¤å«;»™­ó½rÌdÚˆØ*™È% ²»`’cUÆ6Ñ;NÈø™ 4M4ên¶æ•¦ÂˆtV HH- Hi"çïúft$GAlwTé‹maYÊÁŒ¶ˆd Ë<¤Âˆ¡é¨‘8ç%¡Ðxbb ©­ °9ÂÌq¶Zšˆ/™Éùl¤w7æÒÅXPtMŒ² x7®+8¼V ‡çÑÏ&Ï8<Ö0rÞZ 8…³)”–?ò,f`“• moF„Ž6PYZ%‘¯yx“È.°`Yt0ÿ,Ks–˜îhÎ)9Ò ý6öd´¤íÖ»u]È;;º1bÅá” [–³_XKžUvÆt;P5Süûa9 ,ól݆IØ’àÒü8$I£Ùj¥á›Œur\_¶æ—N¯óŸ4&\Ç ä€ 9dàÐê5x¿²±aNO¸ÚþåöG4ùÏ<û¦˜þz#h¢± ZTä÷ÄÕ;uv—²BðOôÎK£¾T÷xx·¦½å¿M«ð²lä«O÷¤ÜÑ­¬*bÑ2ô•Žàà†‹¯ "t®Çû³Àä !s8ƒÄÇ=î"Ü0ß§ |òÇ›GÖÞN?Ê!:"ËG3àº؃½PÏ¢½Ïl‰³s}û¢(hlDð bš˜ÒßÜ2ã´é_„˺^Ê1³7ßÓ‘§›QD}‘%¿âÈYnÔàþæ1 Uæó·YmÂ[ËzñKØ5R²×š•à¬JÈĬtœs"”;¹‚`Si¼ŸJc+\¨¨qN¶tàkÑß±àòu‡”"J˜vDÁŒu°3w½ËY¦c7„_ÑÙŽL¥µbñò’ ühVh1=ÐLÄ fã‡[ ŒÃØ(ÑÞ;W”è‘ÅÉT·ÖgfÖåtcQ*7u­`åoîg³{Q?«7Yf™Ö5§¦‰ÝÆXÙ1c½co¢OÇ&¼‹U¹Ç'Zï® gì'{‰Üݬ˜Q2H±™ÀÅ4¬]}%ÖÉ·Ë…p¯¢ßåØf# õBæ%Ã&+Þî²gÄÐ?c¡4Š¡½z¾oöÔhqi e%ô}à1†rV„óA/EœU´c™WxÇ3 ,±°/PsM÷YÎèØë†lÑ)6QÇäyj"eÝçi0™bÒÒÖÔ ‹ì\GÇ&z›¨ƒ¹!»>>è%Å{¢@(5€v(š‹Ò ññáµ²ÈG&±ÂOK‰+Îì8Ÿ\] Öò]6ÓØß±-ItH7‡"¬×­ÍB:G /uØúGE; (×SL8ûn8â…ù‘+Óª+iû¿ ±d‹uÑ×gXìäÆw9@‹/Lv—ùÆ¢ƒ»½R¨f‹•ÁÇ3-V¹ VŠ zsû‘)pwSàìÉŠ_S¯ˆáî8ìÂ(]ô:’ ELw62AÝ’Y%ZK|ÉŒC>¡Ew³ìá.³ûâ¤#‘©Ï;})9Á{7(Ø]BI%,еáR‚ƒ‘Åý3«áìÚ6+#Ps¬lÎUZ³ÀA¤~wû1©[•˜Ðü›[â³Ü·£• ÄAO`ñ<3©1XŸèÜ®EŸ õc)6’à§-¯FŠ{àéjé bå°\‘Þa Z›ìFmÿN(LëË<ñ`¹è2Ž™·ÉgÌõY¹ÇÜ)Ž~ʳzø’Õ£#º‘ÈÂÙ\°Á3ÀòWÚCÄÙd"ÕãúàRä’(h÷‚ê'…a*¾½\÷~‚xðrMÇ7ñOF«ðƒBsòDS!a4,Ð%Ìò#”é¬Ð¤ Å™cCòœ!&H2ã›<¥”¼eSO÷d’Š7ÆØ5â¥ÛŒ"C¸ Ë2EÂl¥Íwk§±¥ïÙ¸…¸CI6,œ(Å€¿Ö~€PÎf}æ™ Vb–©€ö•îJî—ÔêÚ®][«&blùqšhŸFçÂû¬ê;òTÇïäË~4ûi6ÊL(‡‘ðO< Ùó ࣉ\å°Öl¸š1ï×Ñ™Lh7 åð–±Iªiõ´áeØ£>XVF!¦FÇ2¤¬ßpª¸š')çNŸG…¯Š¨# œ*¼®Ö‚T–‡k,!Ë:l•‡ÍX90´ÓåoDäÎàûÕ[®“gU‘‡²ÜÊû66Ñ:„üF'É•µ±M©É†¸¶B}*éÚ“œ–v#š5™LçGÈDÑÀä¨-ujR֦ƹ6e‚Ði¦½Ï¾÷±aæÅ’Øâ“„K½wCÜÎÑ$Ì’ ïVV’‰Ž·,yãu:ùÞÖIŒ¦5*1É{lË:lW‡ëkZq…ð¦ˆÈÿ‘$èŒÚÌ£—Y&iI@>í\TìªØÅªíVû°\ê°D¬ EšTìýx}è»ú<$psI³f÷­æ½<^#³Ò«@é˜Î>ðJ“ØBcÞKöZ¡ýºûTNYe\.­ ¢ä“D*òV«ÎÊ2Ô%é­>bheII»·ÇzŽ+ó¤n\Ok WFvk_¿90SâçåŒ?´œ9? {¾s7Ïd×±6¬×‚b»c‡Ù¡“а¤+²6•Ýò¡Ë~è?â÷²é1‘÷x×Èìï:B<“È_ް“NÎ`¦¢õ3Éä"®½¶u£÷~*+Ta =Né³­8©ÅnBÏÿ¬¼Ûïäú’͘q€U‘±Ã¸N%Úµ|vcr„pOB¤=“MÃDVÊ,Îvúò4jÚ³1œóŽÒaÐjizžX×)–B¢!avÄCûô³é‡õáŠÝðÊ»ÃwG9G›ÚPAà )\^‰Ø†sMÜ<ç·³¶OqÁ´ë›o¾ûâý§Pù:bAðf7×¹5ŒQ o@9ýÕ$?°Ë9 }=ñЖm±ÎÇÊoÌçæ v!‡#ÌÛ¹éʬö)g)Û/ªöXkÅd|)þ`–ûu 5)Ÿ©qޤ7¹Ø•ýÉÆ ¨Ò]¸pðê©5òdK¼YY Ñè† -Åû¤I[Q’’ÊQ1ă 57³Š )KjÕ+R YÊwÑ¥wœu᦯ŨDúj‚³¨’Y‹m_Jn5.'ÙRâyN‰÷ý‹ ƒwGk$‰§a®Ä'¼²¯}hrôý„Më¨Øä|Ë 4…替mgα9cÈÝ©'p±4{î†Û[ÓnÝæ¹7Ì,.ÉMøL<|ò.!‰+öh/Gìš>|\iÂøp'3—„ù1ìWI>*6nŒe³HÎ~ïn#Ð÷»<­Ú.¥Â1¹±Ä“ë¸&Ä[ëÃ%)fËáRì$¤¢éå ïǛϟä-²Íƒv}úÿ—b—.`I<¹ÍíÒØà~›åûͤØé§’Àp̛ܙ; Ì©´’$Jƒì_ÐûŒ¢r§1 ÊMÜTÒbO¶Iœ „ãnö¨¹»8ÿGæ¶Ù\‡lçfè¤4‰Ó\ù‡r:å¨ÃrjCËq¸ˆc㊖”‹Æé4Ò0?3RΡs‡ÊæF Ί±ætùnŸéŒ3’Áˆ¶¡Ë),Y1›­ùL 4‰Ã\$+¬ëÈv¦ÓîH¬ù|dèlñçcRƒù ÔýÒDŸö<ÒæÍy޶¤mý„€O§ým¨o<’“´”¤Ë-j%_JiÜPúV…/Þx>7f7^¬eÀø&§ÇÚh¶…ÑŠ^)ÏÄX+GzÈ;¹ÏtÃ5EÒÌöˆÎ$ŸÁL»ß=>(ë™ANL‡r´$' ˜µ•@xU:8dN+<¾ø,OÅ2Ö K9y#ð} ƒ~´“¹Ž†d¼OZñQF|b†s`S¾;Nvàˆ¨£IsI"Ù÷./ãJØï/ѦæöÃmD}ó'ÊDÉ'¤rýµù)’ sªgpFD;œ4…‡ï„1HsÔIå•¡Ìy©§¥U[¤6m ú[]ÐqèºÜ Ï/õ"ƒ³·c5ä]Qy_8… s…>Id»Ê,WѤìdšqÒ#dí1IŸ @å}Ÿ3<:zâ³üàk¢ƒ,È $úDCSÞóHœ{‘áéµ)ü×´N#I9%ãÜœ{!ԟȸ ×ôÆ)ûH;´žœ0nɘѶÌäQ¨<ûޤ¢˜4-@XWZ´msí=ÝÉb‘D.ó ÎýñÆqÎÅ7’ÃÜ Š³ð•ä+Šø*³u;IŽÑ̲›FÅaÊg#2µ|¸_,±2Æ6Îtž6em™c£ûLìœëì^ nâ¹Ó)$ŒB7”[ßásNÞ©Í‚áH;(·D|ôÔM\°"»•3é¶D‹bËò|ײ .Wú´F§ˆÊ—%[XZ)Ê D¯ÍN&µ§ºgC3´Ü‡+>)åÑi®J.¯Ò&í{œò-ßæYa6˜eÛ¡0Ú+Ö6« ¼¶µûâøA±naî¦:_1oô’=—O;8×­¤†µ­véûR‚Œõ0[n¶¬ŠìµÓÜ‚W¼±\á“›O³l>*@:zfŽ=;Ïææ{ªFV0i%C$4æ/}ÁÞái‘‘:R¬XɳŽL^¤OFË`õ±˜Æ2`©Ã>þ%ÌòÑÅ[×V¢ý±Fû” >e³@è¼;™Lu_YoWÃq–ŸÅ$êÓM›7U¯€÷ä¸ÎHdHYÞ" е*ñuŠñ¼kQX‚^ŽIM± Må'Žo²|oàºÊŽHݘ%xÞh¨ÂTðÚ$哱CC}L[Ça™f„-‰É¹“¸ÝæÆ=Z<=j+‹tA¯å'±Sl:ú#²mÿŠkÐô(ßtœÈÕïÇnóƒ( ž—¦­è¸ìTªh% ­+@³¦d t7»”i pín$t?mŒv³›l}÷î‡[Iy¿!©˜:ùÁ);Ù›·!‹išSf,»¶@Tò´ì¬ìÍ{]b0ˆeÆ9xççA³•ÄŒûçœýÛ®—7g&Óöda\Ð%\9=žîeî7œŸÉN•·ëü1£þ>ÉécàñÐZÇ{`d8δ׌5«ùìoj&_|ÊVbX‰_àå)æš ÂÈ#¾ò‰9ÚT‘ùñùø§Té@{ŸßÔþFòqÙ–uý"ƒ¼©>æ ]âO¼ÄùlÇòv%žú`|Œ¾œ=ê\ûVx ¯ù²Ce˃$›•”~}ªÃhã¤*û¤LàXwøH³˜gÒßùÆ^V §¹È9ÐY"9¢øŽ‘9Ûþ=³ß!Ww-AkOΊ|Ø›|bòŸ:õ2 C©ø8WlLh˜]9IÛØøM%±1@ÚZŸ=`ƒâåó)w0rrعèbšIäàìK΀拉vIòÇÙý X³©ÞhWÚËe°ÁD±u¦rýGN$Äd;ú-W#äÈ) Ùg óÀ±7w#9c9\._r_ežëm´•ëM™¸5ÀlŽÔœšú'?g?cŸâ­u´ÌFùÚ,¹”&FÜ“06“`üAn¢ÏD6Ñ™ÓL9[ŠƒVž-± ñC^dD§^ÌÛ~cŠNó©)QL6ó3£¯OgÇùëä8ô─©“’’Y]ßh¼ùfZèâÔ.! ì|±öÿCËt6!:¿ý3{¾Þ{‰Æ;±>0˜‘Ì¿› 5ú]Á¯‡kêç'ä2üñæ}Š|Š?Ü ¾FD…>+,á(EßÝéü ?ðc)hlfųé9[Jt ±U6¶¦aH™•'W•&â&jSãíGʼn øŸtGf«<úCN=ÃÔ·NwÌ^S­„çà€Ü²‘x<ŸòÒ©’¿ ÝÐÏæ©R€ƒ%>U"Þu<Ÿ4„]É•N6H·˜lƒ$T8Û Ÿ¤nëx¶ÁÇÿÿ­ÜÙ3gü~úÔj?MZ´÷ËÀÿ2@,³]˜mé@$hÒ 6é›tƒMºÁ&Ýàç‘nȰn…yù/Üx$á ë¿£ûâà]Ô$l6 ›„ƒMÂÁ“ÆŽ•ØËÎ0ånK6&õU"?Ü›äËÉs|mgš©Ð‡È±³I<­5Êõó‡#;ïMïðÇ\ÿ‘pn$¹+‘ôNyýå˜5ºV‡T?ß(Îy®Ô çÖøÓ´ûIÞ¶üqJãIÀ ô.HÎM$®Õž›ð ä6þãHãg9ÜN-és¥w“]È }dåyËI‹nõïÌP䦥6râµTnÃ=ØÆF?’Ðkù‘ýü~xiô¾ëo¶áÐ'ò¨7|~7âÀEÀÛfÎ ½ðPåïÂnøŽìê‡_jcÀlHmòêR ç~ÏZË\<ÿ“þ/Á½ÀI^.àör5G×XN"×HAçríÓ5çIóPIÚsý‹…þ ñ¹?à'h( åšèï&ü°Ó8<'âë×^"‡.p Ò* ("†k2<ß‘Ïé9ú€_à%1bCj€×øüã;\¹Æpç˜C’ÀzpÐcZòf'uÛ@vMÏ™%‘™‡´^ȉFIúh<®ÁNòc*úÃÕ„é‹„:àE‘Ë×4Í^ÄéÖÜ=Šâ˜¯=Gs.ûìwÛÑ‹ˆ‰äÆqZ\GqqOhãÀ+¾ð’â—?ñDDœWÏ@ù(øaÔ,%vâñDd€z±Ë„BìóPœ™tzZÖcNè"݈§æHÖ]ûÈw—õ’x—{„Lƒ^, Åç‡Sa¢SÒOÁ»<Ë. ¾„§™xûˆ¼éÄ<Ö”*­‚Óg&ÐÑ;>®]\[Kd¨ ‘ˆ`r!ú&¥ÇJR òÄó0ꀗ»«U\cC‘ÞÐÕHÌjŠë@Ko‡EŸ› Ý0Iö S¹faäj ‰ X$ð™;‰>Ù ÀˆÐñ0nÌ„á^z1gõPÞЋE’QobC=-yÄ5Ë“4æëéB}~ Áy)}‰‡#×1²‚{æ;¾\{³Îo‹|ˆŠ$‘kúœw2<ì§ÐOømV±+”°¸EÐu€5Èuˆ2DB툅¯¿Àu`]‡®uX„‡dƒ•8ºdÇßb²Ø+vysÍyX½b—§ë|—½b—§ù+vyú#ßåc·Øåc·Øåc·Øåi¥»|ì»|ì»<íYù.»Å.;Ö.;Å.;Å.;Å.¥Å.¥Ö.%Å.%Å.%Å.O[t¾ËG±µËGq±ËGQ±ËÓå»|»|Y»|»<ÝŸïòQXìò$òââk—Âÿ?{ÿÚ[Y’\ ¢Ÿûü ÞÆ.y‘™Úþv/}‘ª¤ê0Ý*´Ô=ƒÛ50‚‡*>B$£²¨Âü÷ëk™™»’‘Œˆ`.RPeãÙÇ·oßîö¶eSÊç4¥|NSÊ÷y )Ÿã"åûÎR¾ïî!ås˜R>‡)åsX¤|öSÊg?ù[vSÊg7¥|Þ)ßyûòy›R¾³‘!åS›R>µEʧ6¥|ªSʧ:¥|ªSÊw aJùT§”OeŠùT¦œOe úTI߉!껨²¾Â>•EÚwâ+Ä}ªSÜÛgy )îûç!îûç!îûç)îSâ>Õ)îûç!îûç!î¹z&îå ÷òƒ Ë=Å}ªSÜ÷×0Å}ªSܧ:Å}ßçCÜ÷Ã5Ä}éSÜËnqŸ·)îó6Žì$Ý·Û"îû~â>»)î³›â>»)îû¾â¾ Š!îÙ@Å}öSÜ÷M?Ä}ÿ¼ˆûõ8¼ý­w5Ä}ÿ<Ľ²®,¬kŠûܦ¸Ïm÷e›â¾lSÜ—mŠûÎ3‡¸ïÌtŠûÎц¸î+⾸)⾳÷)î‹Ÿâ¾ø)⾛$CÜ—°ˆû¦¸/aŠû¦¸/aŠûqßß÷ýó÷Ýâ¾Ä)îK\Ä}'†¸/qŠû§¸ïŸ‡¸ïŸ§¸/qŠ{ý—ÏÉ-ŸãòƒôY¼Î† bù´eå#ÙË Ì@•ïŸEÄD”ÚdIùBCø;ÄD „ª|—¼‰”ÈØÎ›0T—©ñÞû»Ðù0¤¾ˆœúÕÁ*ôûg.$ŸñþÈ0w*Ð<™Jÿœ¡wù ¦²É Ì&†! CYÝYŒ ÷Œa£¨póylxùÁ¡—t-v¤«]AÈsÂÃ‚Ü Ì¡^Å´¤´²°a‘ñÇЂè•ÜôHÏËÏxævNܾÊ3×:ïA·—¯ñÂeì¾v"ÎA7ze&á-3Ùà å…û÷M3ÙÈü ì|…™ƒÄÊWÍ ibèȟð›nµß<4ékÞjFY' çpL9Ì Ü¹+(|KÏ÷êaÈ×Í_aŒŸû•¸j_ñ Á½ÓЏ†”¯ÌÆ6ꂦM‰Î ‚º‡ „`þ!zÉ¢:ˆ6¬QTØH7 ¢épöM?¡ÉœDü*©—hëÿ†¤n"ŽÔOÄ euÁÕµKõIõm*®"H&n7®K‘PÄY´¡þ3ÔM É5]¦³Ýþàà|­¤¯ûçZI/·†ˆÊ'ŒÕª¼”ÖAÔ*¹$ 4 Í, Ä‚÷×mI§í½$cÈÓÉÒUh tåB“¼Y’ w’ÔÉ„®˜n6AÛqâçÅ Ã$“(6^V¢¾Ø¾:%[¨A)_oß'#TÝ\P+·¦;hC›M3y sN78О…Àr9Qcf‚dP}5]Ô9PÁsz¨<ŠSnƒI$¢ú‰1 ÞµéÀ.krS‚ Ä— i*YW¬·f!Љ4ØBUý #Ä´\§§Na${.Dö6ÓX³~Uh AûÁ/²åW*}Ù†œ?¿!äèhÚè{M0?¼­\!¡PqY³”O ݦØvÁë+Âj‡ # Díȹ¶@¾-ïŸÖŒ¤—Eć]”„¬ˆØš‹¢·ÇÒðMLÊ«`DÅÁJ§”ì2ò¤)!'¤s1Ø9U_eÃY„P×õ:èâ‚ÑßkÖ§h4zlC¢a¹ÙC6‰Ëv'ì­¬»“mJ³NÜÌ1²Îú¸bsÀÓ³O¢/W¢2Ùn>9xÞå”j«Qá—´›‚²R‹#+“uHBnö Ì&[‰ètšWI“ï`$¶b?‚yÕôGׂ°œñl„)„]‚ ìZ°¯¶Ã&¶/7î%7Çò©¬ÓgB»mÿûQÛÌÆ¹ÿÅšøòY­ëÎÍÂìÂñ¨û»?jQ3ÉúvnƒÊGMíþÐß|«úœu]%Zòð*¡`Æepu0a%·©)M«_Y#=N3ó:Ûqâø—¼ÊÎîpÀƒz(ÈØÔoà|U§܈nf8Â_!Ç,;ô±aó±H`‡ÙT[«vVáÕÜ€³4=”(®‚ YýäjnöQ B@pQ7_—<Ôâ­•î ¡bv1éèô%èÛî£ÏªD`¶Šæ-K‡lIp šyÁö¶ªq=‚+p<~¾ÖÏžW®ñ’dó¹'7§›¶9ß´t”–kÞ8ãê猫Ÿ3–Ï2c¹æ3—^L"¡¼ôš—r !œH\¹Ì½±C3YÊH8 ZyôôpÓÍ1BS(*b®œ>>ù°þ¨‚0òaùÆ34¥ñLT‰ƒ{G> ?¶®B‚G òa%˜§‘sxbfÓ [¢è4Ñ=§‚=ÒíŸl¸Æ„¼¢Dƒe¬‘³Ù’õ:„Ý\NFà n„xJ¬ ¡: ÝŽžg»µS®mºˆ-7{1Tݲ=¤Nkú€¨ Ù4rÊn›ýˆ–}²çU• ŠëÜݱ.Ø–|Øétd«á[È;Õiú;«£PØ|~V§Q+]SÊ,Á”Ó”2=ÁGÅ“™ %Of.¤L{COTÊlÆ]õ+´h´ eOf.$Ô=™¹‡1Ì…„Ê'3JŸÌ\`gD3Rb½KUV…™ n32>Ì\Hôxª¹ ÈÍ\HȪæBBp×Ì…”(v¢. |Ëj.$\aæBB,~˜ ‰UïÅ~„¬5”3vª™ ÅPÃ\H¨†2s!¡ÊÌ…”™k/G+¦”ÈÑJ¨ˆæB*ÌûÑôÂDþ¦òUÔ\Z[Ë/¡AeæBœÍ\H(ŒÆqaâ½­„43”0óºÐêØêïÂÌ…Tèç”=ž ˆš¹À‚ßa.$3J¤Ì\H¨‘2s!!—ÓÌ…Ýk˜ eRf.$DÍ\H(”2s!¡RÊÌ…„R©a.$ÔJ sAk¯­—¦½A íîv$üpz±¼ðýéÕõþ~÷«üçßí¥× ŠwG‡öXúðõ‡< ½öóÀq¿Üû¸:í‚óF`ç }:»%?ëRÎÎhBuO\ñ‹ã? ]Â÷8QÌçݳNlÚ9†“ÿF«¡÷Ï{·hç„F“¥Ñ%lïׄÚÚµÏN‰K›ŸÝ«}~öÖàùãÕµ`Ë;'¤¥³w»w³eÚ$úÒõíj ZM¨û¥Õ(–àbtYÙ-÷øùlèr¾Lòbm"íÙ`ÿZ'Êi;Vó|4'\F”n<»e)!2Á´{´þí—ÖØe€åãUœ/}vwÇ£wê)û¿Ü}$jå™uoÐís~8Iè_ÀW’ö Ò–v€«_0õ±nD=W¬{ëî4 Bþ-;¾+—k¯?a´5&:Úòþ`mæ€ÒÿO€ÇÛ;=kðÆnö} ÿ]¿xí6f½ßš|§hôÒXAÚOÛX¶älÔ{ðJ;wÛW>a;ýã{ühƒ¹MÌI£ù”çÏ[°ŸìÃ#›´Ý.­µÄýË&ƒP÷?ö•ýîyg¦“´RyÀÅþ²ïwÜò‘@ñ§Úâ ‰ Èèù¸"µË;b³ìó?b1÷è™Îƒ¹öuZÚ˜îf§d4AŽ?»XF Õ¾ héÁ6|Í‚Œ«m²G‹ÀóÝ0_ëmg«`ñš¿i“<íû0{¶7CãÍï?~èÏtþQštÃÉÆowèÿ»mä*˱žò£ù4®=CÓ“÷è’!Gßgv›ëë÷~®ßùÒë²³à¿<.Íhù¼K¶[×L[k®ÙkK¦£È›pô>\í¬œõ2v£»’u™ÄC\éá²¶U—ÚGÆyÖ÷ÉcؼƴØó€ þíãéµ6àÜØZÀW¶¤“Ö¨k6Ûkl5ü÷臩N;§yd‹4Ù¬ç§ïq¦ðpröf–?tX¿˜‹(oî|·6•¸Ü¼ïLøê½plÁ3é§hÏN,h!K¦=:.¡ƒÛèÊÃ.¸_ØzšL \jÇ„µ¿ š½ìF¿±»wû{gÖ8G{¶9]®«ÃÞ@ÂevÚ!EÏ÷ÒćMÉØì\dÕr\ÐÌšíd±×ÙlRqŽ.—Ú—›EåO cDcCéˆ2šôUÑî M²>¢µËÕ˶U¯v¥îcܼ•N+Òcˆ­âïï¬3ŽêØGînvíløjöï´¼ö0êÿüæIzþìoOß]«—F.ÚXì{,þ÷vže¯ßß¡Û ÞÚÈtã#4‘É„æçûûûÑRzýá¸Æþ"s/­ï-iµ)éNVF{>íÅÚÃh¶á&­;Bbû8œä?-²ŸË­ Ðaï!r¤Ùæ°/ÜØ$û¥˜ìîçŠûëJ„ιv´ Y:Ç-|lH›Ô/ܬÿÚh Ùyé»ë½tâêó˜ ÉÍq€®oî¿7ƒlñù®â2óôÊöríY°…ÊlºtF½oŠyXì\/ýÓ—¾´\ׇËÓ{m“¬cû¦@o]Dc1íåp§mX[PIצñ1ˆ >%ßåéõùÚ%ùr½Ï¹rg*Dh‹Õ¹ë."ÁDÔF4¸¾ëk}c¼ÆöšíOÌ~Ù&gÖ&¦¿îÝ%Zì²YùC·H¨„Sy´®Y7û›»ûqêØñÉ9¿{:þmÿÉàal¦]Û`k\P%cãié?þ¸¿xÒ.…—¦ñíä4u-÷îê Z@-=拉ëÒ%If=““ÒÍi3ùŸh¬iû“w4“í±Îö|ÑèS/ D±ÌNÑ—ÝÎØæðÇ£sŸÙ†3Þ“±ë÷ÚÚ{t+¾ÐÀ¦th±%ÍÕú²œQ™ë;2`9^h¯vº[™½üç.ç9äd"û°½ÛœÝ}>³ÑéÃþzÿþÑz¨ev1cƒgÀTÊË•ò“üê{ÖŒnÉßcG^]S+P~@ƾ´¬Spºr¼%À½x,j^žvSØê÷Ìæ".½ŸÑ0w·6Ì]ŸÿÂî-šáÙa7OªKÃDë¦V lFç@ê‰fˆö¬çt.ÔÚ™s÷J缃6jñµ6j(¥}ÞF ±”ÙF­ïÝŸk£† Û¨Å´üÝŸ×F 6ÚÿÝmÔ>îþóéÓÑ‘?ÚÚ¯û50À^k£ö¡«ØVö‡7´TÚôåø¥¥Ú/-Õ~i©öKKµ_Zªý?¢¥Ø+-ÕÀÌ)\ø3-Õ|?´®X¤â/=Õ~é©öKOµ_zªýÒSíM=Õ^iµåëA_¨†Ä=´ yÚT^Ǩ.º£ pÛ7¡nÛ2FF¡dEÝ—Ï£/Ÿé“oI-(̪ÊC ’˜¾Us©‚ìÄR·6>~ÙãEØ œ‹¤ä—Êt˜L€R¥Z® U¨T¦J”®E Guˆº‚lå")ËÝt¸P:G —®|@Al°4BB”Zÿ,ÀçHmªŠ,Ž´¼ªÕ5IíU@` R˜ê&wC—…*ùGY<Õ ¦9Àá*ÓÞú%]µ[RºªcšyAXUøñ”>Ëß»¾Q‘Š/CˆþÙ-Ÿ·ù9¶:?W¼GCJϸ¨(À9?ËE³¨³ŽûM0Ú36.XÀìÜ#U ZwT_à’ÕYïS5©³ þ©fsd¥VÁ)`cäΦ¥ ²NkpŠ‚ÒÕ*pZP´5ÊXc‘¿;\£@ú«Qq°7T?"£&V/B¿&'¸æ@K¨’\ÿy‚‡\£¢ µ8$^9×HÝ”)~ÛÞÛwÀ5 Õ ¿‚kŠ«¸Ükû$T^A½M'ôKxÅ þP‘€Iàð›ñ›®"£6K’cEl–(=brfirE&g.Sâ*0ȳ€¬W|æÂÝËÍJìs~Þ€•¾ñsÂ߃¨"98W'_tÎÔoÆ\z PåJ§Š|Â,½NxÞ:×fj^Eñj–ÚˆŠ²Í,@˜M8iê€ÏÑpwâs_3na²µþX…À,ýsvØóÂc&7äƒMäï.Iƒþ¼ožˆlüñ¹.ŸK˜Ÿ3Þ6€@9EÙ„3¡¤˜UgÄNÚF€ÝñǬL(F”M¬`Õ‹Û”÷4óáÉÌ`ßRÿXE[”é²xY0²µâ¥µ2a‹—é¡ö¾H/Ñ‚sEº•tîåÁ…„'¢â´'½ú"– wFµh „}b÷ˆ˜ˆYA^‚2T±É)'¿+RÚSsÎ_ÉEDþBþP7_¾â\&´cÉÛ‹& ?ÍžÍH§õÉ_1dLg@½¾èôpÐ=¨;_>˜pìC‰o=œGJÃWÎ#Cè¼2OC‹Ê[@ö±C1@¯¾†_&ðˆÔOPdôsa_>d˜ª„jÉÄ4p|NýsÐϸ>Jהޥ’µAOëŸy*7“(f eh}i賡%výé‡1 &HB×ËT[´Ö@I­xmjqthJMpÓŠrò¦M–°7¤¦™3΂¾”€Å•€yÿÙIá^6l&øB m}ˆœƒü», 1võéŸÑ‡]}ðc¨DÙ³J/Ñ({Y<$êg/Ó†’Ùó¥vN?ãÇÛ6.B%Êø\æÁGìÇP€²­&¡Yf´þyÓÑ?S: X]B­yx:BfšKŽ[ˆÉã ÅYØ_×½lh|ÆÝ´qÓ†Q‰"šZf©¿Pº³4J‹^YŠ"dDßÚ¼½2µ£þcÈ…œ(‘˜E[Ä^ɉe¥‘¯05…´ÍèÒÂBŒˆc9³´0b—æÌ©v.K·àÛ‚W $[ÌUUüâ>K;¨>Éfò?B%`g^„¥Ïõ˺oEÔ& ÛÝØç$Tp¨uöÏå(IÙDÿŒC…šxýÄèƒùAÆÉЇÆià‘Áç„ãQåsĉ‘åûhŒ©E½ƒÃ‘ÑÕ#ZÄ\ú‚#ïÆT?2ü zõÈDÔ°fÇíFxÓ,VQøØûŠ/çPšôE${gA™!’h–æFe'8|®8R‚K¹ìY5’®§— ²dAžI@/ËANðD3:?ñÇx¡Û*¡Ÿ[ÖîcÐ.r,uwAk5‘ˆ–w™79|(ìË· óÁ5Tù^óåïd>Ê'Q “¥ä$UœÊMÙÎÒV£õbË›vJƒÖç´=šf'Ú:ßÉÚÔ –pvŇÎNNw#/q²J­÷íÐ×>HG4È éê‡Z]¤Œ^‰ÙZ(¡h6K•JFC§‰ˆÈÉd12ºäõ£®Ÿ›4ä1¥”µÝ߆ã-á¨gk˜¥ñ?=Å;é³–ÙûPzfv#ÄãBù{L>ëìäs“ÖjBy÷Y=2»æGô#ö(”ï7×gàÅ ó†)~C"ƒ>±NÊÃʧsÒβ0†ØêŠDtÒÓŠýdáÔÈIÊ¢Y甥ߔcj^VàßU=kw@A){GJGZ ®€—ÄNÎYJÒw–ê²€Ò[6Ÿ$áÏrìyG€äÌÚöb"Q°ˆRr 蝹tAxxÕÃä¦?Ú6i…%t ™¹rqÚW7cYÅ.s鑷˯h‚Ñx^Äôj/Ÿ€sV€Ãö[ýŠ·Í¡P$x£+]|ÕÅ0U´E0¸wÑ~ާ⫾«ˆf÷`˜4M¿ 0E¶¼Έ*¾•kÝ»%ˆF¥w í-šõ&|StB°‹B™û¥Xu@©q‰›><^ È£D4¢ Uj [‰Åv,űô“Åjsp5ÙÓbz‘ Ÿùâú£V4«ûúc ôUºì=™ÿ;×-D?³¥é:A¢—&êgi¢AÈ©(Ц ¦–f'“®>gßÀ9è㸬naŒÊÙFBRçþê8ìD%aŠðx=d?jz]{nÓ‡Jqç·9œ½‘‹ÁæbÒ¯<݉:ñ@¶Ý€ö¶ñRŸù o±|f‹EËÆl»º@B¸c¡œŽq…ï @(©YWŽ˜ª"ÃÙy‰øJà”ä-æª\¼â< â›f‡nDcgžÝ"(²ìÒD×±Nv!¢;{ÁÅ^\!슾8¸×µc¹¼l1ÎŒÕönkLY@Ü2cCxõUÀ˜åÍWg{¯2`¼úÊ|õ5ÆåÕKß/DÈhí\‚‚e%®Èn"p¿N” ¢,ßÈ "B+¼êf§dù­PÏæúò¾Ó“I|›î ‘n*[¤bxg$´0].{•(âÊZ¾‘^.¯‹¤¿yë"¹¾¼ïÁôdßp‘ªt‘u©ÒfD é?¢—½J`²Õ»Çh¯-RÕ>)²Hõ­RžÍõå}¦÷-›¥ÈˆˆšŒEÚêøv^%8ÙÍÏot€WióËq«›ÿ’ã6æúâ¾ÓÓI|Î"½*”쪔( …§äÍ¡ËÃɧLm?7A£ÈÔé>‚ª¿‚ ê:'í£‘iI)àr2ô¨ó9kã‹Lׇ‚¢ˆŠ­küZ¼bIÀ“£aIP‹×Ö÷eˆâ ‘9ÀcÞµsý&24¢s@8MM/t“ÓæhgÂ&¶$<÷ „S#Àx- &†ÌYûŠ%`1j¬¥ ·ú Ö¡(­x½ -ßóGÚ(D#1 ˆ@‰¶1!0bf7î6 ÉÕ[ ‘ „¢3Ââ0¸}Dærz,Y :‚=bU´·Y‚1WkçA[X"=Ÿ¥ ¥È(Ð(‰RÔ¾\’¡ÐùäF_cñºE"Ã&öF`h7ŒN &¢/$ÒdñãmGPöÆÖ¥‰´Rôõµ¢h7 %T!Õë4vC7`¶y§ ¸Àïo~™j°åDKó¢ vú˜MÎN º:s¡Ã!ªîzXEñ@û®§5c‚…ÄFƾ¡•’m„†°¹~…X²EÁm“MÆQÒF.pˆ–”×§ y¿³×$¼à3·¹gù"Öôl‹xÉf¦ä!››¾{øà&Õ°†§–&Ú0¡B#Þi³ŒçRœìh*)ôM ©tÑh)ÙQ{(ÖŸKÅšEOc˾¡coÑ!ab°dHäwÂuúz”«›±”‚ET°`ð—ªLG{µ®;p‚ÕM»l»§n¢/“UíqÃÀZuÚ8&!^Xö÷ fRèmr¨À¼ Å Š’¬ãŒ1"…ÈÏGgüøZ™nõÑΠХmâÜ‚”õ†çú×ï$&ž ¾âF‘‰jj†`ä@(f=ÔI•pTj‹#1)%oú(ˆµTõ_¥Dsm9q5ë^ĹªÙøF„ÆN¥È=QìB}ÈNÉŠ›„€lÍÅ6†3¨$¾«\u×#Gܺ_&±~iŽóÀ¯ôNxqY±zÐ|£¾w’ú²”Êl¸¯Š6} 4”_ íujÑeE€¨VgOa )³AbL­Š7ÌM¦˜r =B«buRHW…edàªl§œº6[~,²vÊjÞ}…Á—%{BŒ(|ÌàB(¹ìU"¹a¼-£=Ó@óf&4ÐÌß› ¾gs}q߃é}Kƒ#šÅu1ƒOªrÙ«DrÃx[F{m‘†ÁÇEz»Á÷l®/î{0½oiðqD3¢¸.fð ¡F”\ö*Éšá5G{m‘†ÁÇEz»Á÷l®/î{0½oiðɈjDɺ¨Á';I(y;¯œ¬^s´WÉ >Y¤7|Ïæúü¾Ó{ƒÁ÷Ý1ÚÒsÄÌž$„žs¹ìU"äÉæhÏ»cÂ9xRˆþKxÒá\_Þ÷`zß’'qD;ç\ãIBè9—Ë^%Bž¼aŽöÚ" ž¢ÿžt8×—÷=˜Þ·äIÑÎ9×Åx’zÎå²W LÖxÃíµE<‰‹ôvžt8×—÷=˜Þ7íØËõœËº(O’¤ç\ÞΫ'«¼aŽöê"O’Ez3O:œë‹ûLïkPæsE{8DGDú•N¨¿Tmž÷‰km!*²åEÑdz¥fÂwÏXUCf‚eQ ²–)¢$¿‘ö&«-’ÊÕ ¾ÑM´SIŠlâ(*¨ð+ÍëuHSäó‚>¹¨6†ì´\uQÀ¶ó`Θ¢¯÷-„HXRƒ¬ß¬}X¡“«îz”âemóSÅšµ¿DA6q6¿! ‡²Æ ôçÜ‚µÂCÕ“,Jßï¸L6CãËäõð(0­Rjò¯ý{q™0ñU£µ Y+@ñºô¹çý8™.—.òdî<ütm4äÌLÿâb´8›î¯äs«ëäAú¦ßôAȪ¿öA â_?UŽôòA*’®¿åƒ°Üök¤º?³Jz<"ßôAJùú7Ò :÷¦²ó®wUmü–‰t£fƒÝásxK¡Úá<2ºÍD´Uøòyd$Õ²Zã-…j‡óˆ1E,ì—Ï#"JË]º½aÍ›¾rÖÈ+óøt¡š¼Ô†xǨYøªBµŒZíJnŸY€æHA˜3\!P È•)³3ö$®£žéÏ!:¹Ía"«72’{©IîGâðŒôÇ`ál™(Ý52*tB’z öŠ”¦Œ\Í.†9J}ÀØ?º®ÐÍØžA¬µ g[%‚åÊA ‡rŽèÂ(™ÅÌò U.JlM•µkMì™Èº ´{ÓÞÕ9²AµÔ©f˜AQl¢,Í¥©¥°È&ŠÓƒ•b]óç5l êtÁ`#°iŠ+¤O»Ti y´“Š öŽvR‚úÞþ™šOÞØ£:IAI@ÿRš¹ÏQZçO³Tµ´¤× b…wÎR„˜Ëüœœ ÄÒ—ñcÇA󨕉ZòR:œPìÐ÷%«Ü`Fñ¾Hc6æE•¥zª&)³¶Ü šcô|m)1CJ瀦À#&eì"[¥ä ]¤~ …«QÒæ\c1-ÚÃ^ךBäÖH_–#i ›äÙ`ÑÅ$Ó†À‰âßOHíŽôÐ¢Æ ma²T0¢Z*Š¡ŸPß‹*²c·Ä"p b‘W±YÈòX§µ¡Lë·"ªÁ¤~ ÏYƒÔoáΚÙç²&©«@¤ÊúÙK™«ÅðƒÒ¬rŒ_òÇXazIà5}YÌû€¼‰û¤v ½a¥m"W#H뮄ƒbÒÏ쫤il{'5¬(HÓKi#bX8ƒx›úgдš X·j뤞F?gy'§~“;³ë’4ãIhNŠ^äÙ1Iî†]¥TQ¶ >׸ éyÏPôØ÷­áxêç–Ù˜ä”[ Im+Û³qï±Û°, `Fq#$8†¢x˜½nhž©d„ö7f k”¦[ |7z¹Ì þr¤’–=™·ªG„“#ƒ÷,íC¹-þ.¯ ØQËS5KyY?ŽA6âr¿`ûd°sQaÄe ¸,z…I'KÖ¬铚ÙQ —3;qi?TVjÙřݶ$Å"Ãä Ò5³±˜$Qd¶)kb.fpœnï±.S!RÉ‚}(Å%&qsòw¼ŸM?háÅM„Ce¿gŽ/WÊüPThl¼’uKŠZnÞ:]Ñ„ŠRcœQþvDHaSÜ(ˆ*Ûà{…¼^kÜ4Êy+P²c5´=-Ș’‚¼`¿%ʱngö}•½\Ô_@gi›|®(ñ%rŽ)Ò¢“¨Q¤&]Z¬¿åç„Bã,ŸÁ} ƒ»^›ŠÑí%Ò?;ð²0>‹[Ðz1J"œ}®úc/r|!yHFÔÏ+‡Ÿz"y¦¸ÓoH°0Vß0+T%´Uo¶P²éFÀ®W§jCn·å×·Ê:Ÿ ×ak”¼¡LŠìœYm­òLU½NœŠM‰ÍJWõõ6B&Q”tÿU§×ÁŨ™é­2ýÜ6#¦ª_[¥“L;IêN÷¶I¶}ÔE‘@^&ÛÙÙ)Â>cƒÊ›¾aȲþDzô¸M%xÓ Ù f¨S#?b.ѰiËöènpè1>-㺒MöŸþˆåD6œäš+c`Áæø7E‰wv”å+D–ƒŽP‰ü#q¾†"Aš٠I|+‰Èyt¶’È[¥°¦ésýïÂö*B.n½ë+Ù?³ç‹²%„_3ºP•ý#ì¡Hy ¼Aåuq•jìŸ9ûUÙ?£1UÙ?³³«²¢Ueÿˆ*`žß§Ô”ý#![!ó:‘£•Ùv)§›²ÿ@=cÿHL×h}'R4Ü<ˆ*gÀy:Íó gڀ΃  †ÇŠ;ÏA£èy(Õàó tÒÀÏën+¼]ÉW"¬„TÌ*á¶¢Q E¯%Œ¶´3=Ù« ¤‡ ¹ $=œíhPzAŰôºAˆßëy)ÌP~‡RzƒÓë¤4ÃÓC»ß`€zÎõ:AT<=˜3†©×)ø0£SÀL+ªº¸ƒÕëñö”9Àf2`=H§fÈz"ªZ„Øz ÜOƒë}Šýcb7†Ê3€#L‚ ²§†¦›"ê–+EÌdgr×ÝÁ_éþCÉJ©¶ƒàãÛG*«r05  lD(Q¼Ý´EÐ×lÓ–æL9BjŒ˜XاMk&¸5‹¥a3âºêuËÅ‘Ów`œ Æteÿ8‚UâÀEÝH”!ó®[4O˜÷Ö´f‚„›D%Ê¥,Ó‹ÊE±3·8DFÐ « J“h^z¬!ш‡‡V3ÖËü(»‰¢Ãá)LgAŠAÕb%ŠÁêóàÐ8`͘|ÌUy$䯤)ÑjP‰¤¤:Ø?ŠU:KÔë*Ï€¼ulBÝöà6\»Þ¸*P`˜Æ"\©&Æ3À뒀ĎdJ5ËÙ¥ZL ¹!nSŽV´ZbgE|D_˜¡ßmAèâ}#ÞuQŒÐÁ~’¡Qð5°¥,^ŒƒÏ‘Ð.M®±qóò˜¤Á°ã̓~AìÁn¹NkÞþ›¤-6OÕ!˺@Ãÿ^ç}UÐMqSüÝó¤|–2¿¨ë¥ã¼².LͱuysÞëÁn¹NkÞþÛ¬‹#î,b7ý¦’šÍ—AýCŒ«ïRiÜÌŸYŽCª£9Îáº0)µ:ÉumñKJ‰¦xpËuZóößh]pê3}’4½ª@Œ5¸õÈ7x¶UÎ|–2%9kcœgëÂt¸¨û…ë’ß¼.Ën¹NkÞþç×åy8)-[Fs棾!$Õâu dõº–Þ†y›_ ž†í«&Òm â~+û§gRŠð)m_1ž Ÿ}÷gVÄc1¾r"Î#P÷ÊLÂg ‡Ë;ñÇ=p@¾9ÿù…Mä²\8ØÍ$¨à8x­;”¨ ª¹’Dæõì¼=Ü¡²*_u}Üù¤#øÒ ±&§-ÆÁsæ‚Ęoï‚h1^Hàc ÑU §ÐKv‰Wj'0»¨%Ä]ü÷T‹îÿçYHð?N¦§:(r.«6çàUrZĸu…‰yßB`Q´faZ§«±k ýö®j‚Ö×…«’Pº®Ð‰;´xÚ&ÊS·£Øˆ³Ûà˜ô›–EopºûMLö ©u^Ð;Ñ5.¯ÐCR½»œÚ¸÷j%lȈfks|å3¾ó†®O¯i‰"}^_̲÷š5º¯ÎK`¯ÝTñ^ò½6¤6yAËìç«bl©–Ü€Ü'F€mèõEoУ'Ñ•È9§*ZJ“Ñø*Ü…ú“ÖøtÔN\ò^Ðéšð‚FGŽ¢îu8É‘é_Àùè%í»•„$ù{ß^p¿\R}SnˆIøHçõRxYùóYa/jVŽçø,+” fÚÊéü”rr *:'» VQEpÆIýsÑ]ˆú9®O>ƒÓ ä:°ý\¿Š°—“Xlÿ¼/&Êû)åÏ™5ãöÞ\ªúBñ…ì="w9A8©€u‚½Uáøp'"³SÄUy6‰ UÇJd¹CÅA^‚û^¶XRf¶“w/(žÄÊòNöÜ^@Ô*¬~/Ô¾¡Á’¼ì¸B½8p*ls/H >0/nïÕ ¤iÛ2d£$C6Tžxo°÷|Üä3؇hä{{qÕ4Äj|”lÎvécs)ñ¤‹YÐÉ'á7ðÏûÄÇi^õIn-¹¬S’wÒO½ a0bÐ?gaH PxP'šÆL¾`ãvé3I„H°§¢ üÁUEÈepZ°´Á'ïjS1€äWÅs²Á}àšäÈnÈgpŠ~±Á¹áÔo¾!š G•Œ_ÓÐÏŽä4¤³ÁKÓ^¤0›<•Ïàd„˧H®¡:Að«¾qDð: ðz' Æn"/ÌN`'8-¡Îá½SLÙ'Õt0ÅŸtÈ]ñAÊ®ª•»IG‹ªÜ Æ›ÊçËëó 4 €tJ§‡0¹W<Ï~bû„4yÙÁð‚u܉~Æ}ÁµÇÙËô °x]q8?/é¼@¢×&nx¶¶18¤Âv8”Ð'/ÐÁ .é}ñ‚z^ªa‚B悃Ž:d€éu`A5!”ÙËú6™Ü$æ¨DZ ÉdVB‚*FDBØ2}V(¹«K±ú„­ÕW&ÞuqÖ‚$ÆÝ B|VL<ÈÆ¬>[' Ì¢ø&=âˆ!J2=(\Wõ:¼¡$ŽOn !y.;Ë®ëR.8§S³‰Ò±H¢Ð µGVUÈQo»!Å®ÈpPí$Û# ¡…X´ü*2ßF ˜Eܲ™ yñÀÖªRóÑ©€„½ºÐx.;…@Ô=ÜpHÁáSÀ£ŽrÐNa¡·"_UfØPùé²dœÌÎæÀ%¹¬D$»éJ:T‚DGAÚß:’È}»È­0úN OÏËSð¼E/õ7žG1J,Áu „Œ˜ÍcDX¿ñAçÀ¤Ÿ÷°J“`‰ÃÉ„:}Ô9 ØåˆõUEb†ØQà²Ì.0uH">o3ªâÜ)¤Â'?b;Ä s…µƒxæ°Ì5=Åô8ŠQ ‘ûûÃmu#oÈàˆ±Šÿ®á®’ˆ[¶2G%Š——¹ƒ©ê…i*›|,³(xÊý`Q²Æ–2/«r€ÝâHÈ:´kP‰dDÂ'ÁÞíU\ÈÈ÷ŒUoÑ«E¸ü¡ˆL°+J¤*iy×Ì‹mÓ(2µE›A=Fˆ”’òdçOÿƒ°xV :y•ñUOùbjTØäÅzôñˆbÇu":Ëýëó–•§yØ~Q0»:Á4¿M¯Cu…&”y„}ØîB0Ϧë€R›Xu%)2%s¾È­rš}!·Óuàyi*%=X43¢å«,©Ò“ãçá_ˆö6A¤M3Õ–¯$ ;¨ðö7½€ºÀ¨ƒh*ÿÁ€BSùÔç éµÁŽ4ƒ ÍN!›ÙΤQˆÂKQTÀ‡(üÇÑų ‚ ÔU¾bEUÝ"’_ëÂÔó€$=/ëðšHM'(p›ÎÒ¨(F d«2£4Zš³9$«šÀìFN®h>¡UÌX]¡qu‡²^;¢\‡¸y]!©êõtǤL^(Õƒõ¥lsm<¼6Â&ýiäF¦ßpÔbtÐÚ&V›xŠã¼Š^¬L…®8¡¶`ƒÍž¢ °$IÓXÉ(5²ÆYõJtžŸ¶¢ *t·¤<Ö;¥ÍNVŠÉ ;"å^Gè¼19qôc ´Ny/àW¯b罚æȰÿh‰§œ¾Ò ƒ3•}„n&!üŒý¶Tƒô•m…’}ƒžDÊ`áÙJUU_ë“@6À{¥‡D@Ë® „‘ô2‡.ER-'^dY¶2xpj/eÓÂÑi«Òæ[®:!€¾äj§ÞÉ='ÁrÝM  H§Fö[®|Œ/P<]扫Nd¸ÊBØá«Ús³)žò œÅfl§ i‘ÇçNèø¥Rn²Ôôí¡Ašœ8œ_oZ{O%û ]¬ÆpÆì¶Ñ”ÊÙÄ[ŽÂD`¦²Ô{yäšcKËóo ǬßàMƬ’ Î9ª{é©9ª¾,»•û­§âK Ìn]uñ^VX5/Ù© ;c²4v]+y¨ÁÙÕdÊîf­ EµÌ¦Úó„yåbìf¦OÀŸLÅYöz§ÊÄ]á«´bÓoòf-×: IîÆ&ïÈ£N&«Ré Êå½ú&MeB|HúöRf³@:u³íh"°D% !°öúMbʦ#¹È:0Ì—%¬ LÃ~Ä¢”¬—EWˆ/»=ÀîËÒ¸AªHÈÍJ u~(•ãò•£ÚÛ•~*©Ð„BÌ:Èa§‚…}ùR!ÉÅà÷ðª%cs‰ŽIÙœ‡ê—ª¾TTÚ¥ª6ÞtÒÇdœ9ÕÔÌάҥN„®ÓwwAj›Ž°ÿ8•Lè÷ÙBb¯«Ö^¿Ѷq]V…›#hç<ø¦y›N‘=d ³ë $iÏÇ:!°=ov&; xUƒ¹Ê^'$ý8‹>{>lZóBzµ˜ (ɬ.IB€tv‘,ª6Cl%#ÊꉋÊÑìr²¦ –x&3Z4•dÆd$ðª `QÚiO UŽôy#ųÙÙàÅ®Ã)R/$@ýx4Õ‰¢Õ¡èS˜@ôìúP“=z–jCPvªyþYS¢z¼²¹iêª,²ÀbùQ"¥®z¾ sÆ @’[°mXX½òÙhú„øùò,£—¡Èš·™_dã95µ™_DtË/bZåUôøùEmË/ªP\-¿¨ÂkiùE9>–_DH»‘_DP<Ë/ª)Îü"&'X~QEÇFË/ªè2ò‹*سåUÀHX~Q…8µü¢Š nùEÄùEx^–_TQÈkùE™ –_TÙLó‹*#¿ˆýÅ,¿¨Â¤²ü¢ &oùEuÛf~SäG~(-¿ˆ™þ–_T Z~Q<“å(œ#¿¨@J[~1-¿¨¤:ó‹ Nžå;päuÓeæ`Ìò‹ˆhÙAÄá²ü¢ý’_D 6K)"Ô$ÊÌ/*!¥…3ÁȱjüÈ·‘b@¾‘c䘬IFÐØf–‘c=­¦u"Ž<#8"F¢‘c·wÍ4ê„›©FŽUdššÐ‰m$õ=G¶‘£Öt#ÇÖ0–oy$ubGPwGÊLó‘s„Ý8“Ž`¬#G8 M;êÄ6òŽ€&ÁS63ºuÑFê‘c/\Í=rBš|äØ=W³pi# §‘‚äØüÚr:åGŒš‘…äØ 8X‰ZF\w3 ®­‘‰Ô‰8R‘:F.ˆ‘ŒÔ ?³‘@t$G-Âò‘@}EB’ÀˆkFÒ t±âÈIr쪫II FVˆ™–jä%u"ŒÄ$Ç~½š™äØÈWS“`5ÎÜ$P#9 ÄÈNÂÛéI F~’¼WKPÒ¯l¯nn¤(9j8š£äèúÐ$%ªf)éÓŠ~†ý4ò”:QG¢R߃ÛÈT†œ©JŽø-š«ŸåHVrlܬÙJŽ›¦+aÆ3_ÉQßÑ„%G‹M3–às)KŽjŒæ,õãçfÒãÈZêDiK°çËd¨ÓÄ%ÇÖ¹–¹ä® ©K`#wɱ`]“—‹p5{ÉÑ4°ô%Ç&ßš¿äX„« Lެ4ƒÉÑÓ )LŽMÁ,‡ ÔLbZYÔ—ìöŠ×bYLìcYL1Ëbb¹¢e1U؉–ÅĊ‘ÅÄ>3–Å$U¥šÅTõ³,¦Šà¼e1UÀÿŒ,¦ ¼Ëbª–ÅTá˲,¦ '”e1U6Òµ,¦ŠÈœe1UT“ZS…’jYLn7Ëbª Œ,&j6–ÅÄn1–ÅTs˜YLÌ´,&¢×Ž,&¦ïYS¾e1Ux°-‹‰°´–Å$Y{–Å$y{šÅT±ˆ–ÅT¡’ZSEpȲ˜*FSE¬Ï²˜*Ì\ËbjpxZS#Œf15âÍXS#Œf15âØhS#"Œf11—Ö²˜Ú—,¦¶Å™ÅDÌ[Ëbjà(–Å$„f15°Ù‘ÅÔˆ7£YLJ¤•Èy!´4\ Íb22½½Ÿª:Ù)Š3ç YÇÑ9oÐ͉)nJ8¦¸ î ŒÁ çᅨΰ¹Qvêt7ResHé¢n`Ã/™7Þ꼡²âðªì-à^Îê'øº7ÇÃ)çdã.« p×`^ÁŸahu.»Ã¹¨[“}š6a¦>è” ²ç™Kc„ýÀ ^úûT£¬ÞÔ9Tb\Ϲ–:»©:Îç ª n-Ù‰áÛ‚Ñ$q_`q(r6eqC£´ZЂú9HE ›:1}VÕPôOôΫf]©ÂÛÛÄQv:q ƒEFþ¶Wü€ÂlB§Ê/³ ½ÖÄ–L \¡h‡3ùV`¸x¯8÷ˆ™|+0˜½5Û.2ù X¨Âu æF… ÌÕO\ˆ“ªo³°™µîI¦Û‹A³i_19_Íz#5¦/?RUÎÀñq§`Pטƒéšœ]Р#&ͳº.=Å}xP¸…"’ Š/}ÃNÜ]PDèLv¢{,;[~Œ×¯ŒíÆÛ Q-2W!*4¢Â!êÄSD.ìÄ“ím"!$œXMÉö ³T‘!SÑD¡ÏrÐ>zcgÐá‡?c÷¾?[˶ƒŸ»/o/ù3¼œ@K#€¦9Bh#¹ìU"‡ÙAyŽö¬‹‡seéÜL¾õö¦9‡s}y߃é}˦9ÑÑp]¬iŽÚˆF.{•Àd­yÍíµEMs¸Hoošs8×—÷=˜Þ·lšÃ­Ç ×ÅúÁÈ"i¹ñ«&k}Yæh¯-ÒèÃEz{?˜Ã¹¾¸ïÁô¾i*Q»õÈ"©MÅ!’Ë^%r˜m¦çh¯.’u’Ezsg¡Ã¹¾¼ïÁô¾ag!Bu 9ëDÑ žn¡‚¨N7§iÖyðÙñz&ïÍqW§@.ø&;¨ˆfûƵ9˜âzËu*Ëí¿Éº$ˆáSïæ(!e5%ATEÂx’öœ©à³‚4®ŸÁ“äêÏq×%Áo‘ºuIˆ=¤”ßv°¦¸Þò`*óößd]UÛuøxqÕ4Xô'ñš¾¹QÕãA‡‡Ûçh‡ËÓu[l/û(2IvÑ[èù\×ûÌh™Ä·Y$DÒ,œúÆû;°5$X%'È)Ï—¢’Z0G{¶H1”¤œõH¥z£ 6׃ûÌh™Ä·aÏФìŸ_rósUOó$I¾7ß &ÆH´ví{®¢ª § C;8¼=Îõð¾Ó›“øV‹ÄÞêðtR‘ìÄN¶0hxŒ=úrzI hß§§“µÑ^[$öÞ‹Tü[eØá\ï{0½9‰o´H™=£ExV„Ä«†ª„ØDxÊe¯Í)`ÊøÆ½ô\$ƒUé¿Øwo^¤Ã¹¾¸ïÁôÜ7l!X‘®°çò/YMÞÜYî¨*>_-lëüK‚kÅ×1G{u‘ŠôeÕøVãã`®Ïî{0½9‰7-’ÿI;-#o…­Øo$ç n‚”½´ÕCFÑØ:øŒÐai4ßç8Ïd?œK¹1þMÐçþ9t°v0lҮ଄FWðÉ ¥*þ}¶=ÏCc×ó" ¼|OErt ]˜ÿ^ŽæUâÅ btq‘Ù.RèÂ6ãÅ'ùLÀÈ&¨Òì *©þIgù‚˜¤ô`%dÃkû¨±ZÄœ¾X¢tELHG,’ãžÙ)IœÈ$ÐÛ(!-IPµÑ»©0 ÀyLOBè V~É^´ $~¡„Ôè"¸» Ë’‹BÝ£s– _1•—­‘ð¹ô‹¤!ópŠôJðØ•"Aþ„2•"Õe U9ŠÉŒ@A€ìŸ‰„'] œ´…”~ŽvmͶ’‚[—‰n'‰ñdE{Ìž{GŒ¸B‘ÔlöÛ¨£CÐâħ”ÃgvÞ^¶½<ÜñË^wö²›¿åa#b&\ž7Ò¢lÜèÿ™¨˜È„Ãç->ÿœëhd4Ç9L27ËTÍh~%šÈRw–‘|’«$ü1ŠÍ2Ø‚Ù:ü¼žª¹dÀ«hw§ äÃÜ$®šñ‹å•‡ ,›±•µ¿l9æQúJ0mH–9²A“ôˆ\¢$ËÂ¥`¨!'$¹Òµ! ØLÐöÜ?æ˨(àe8vš‚Ö_‹ÍÝ?¶Øô)±i”8ú¬õ¬×úG}Î&\wÂá›]ßþxËßp¢Ê½½gv1ò²‹–”9b 7­V Tô¦µóråÔ,£=SØë6öãá„ʾBl‘ Q,µQ-®Fõ¦¦‰“nÛÚ4QòIáãÁà`Ê1è¥ì„%åz®ižbCÓ¿É€6- [+‚B#Àµ?¿¢°‘Ô7‡¸Ë½ mì(wÕÄðmF 8‚Εý7MN‡n]6«6¢´Ó|@‡ ÇX<ä ‚2“ÝA€K*¶nµàFšIç(U¶MknâØ,áš`ÏUWœæÃ—íïg›ìpÃ쫹{¾åGš³êøšwYœzòz­ä"L žŸD,wZù1F{¾Ç)‡\‘b;6Óušή®N_'’GªÓ× mÇ0†¹;ªÓbf’T§l&ëÆaB«VÆ"¾YmÃ'ö5ŽÍŠÌ¼¢#37×i©\fe+Ï‚¬×Jb¦Û•f…hÆk@³È€$W"¦êLl‚¢u@®RC°ÚýF[-ˆƒíʃ:&m5èÐWJ®ÃUÀRnaH Ê*ZQ ,Þ#ÆšTêŽ^† e]øTŽJ60-äöH,I3wͱÞBõ²|SÇwn5¹üŽQ oÑ 5:ƒ† §û+X¥,’¨Ø€W w ujÖ,þX$sÐ3®HR(¶]ÝX‘§ ³7xs÷EJϳq°¹¶ý²Ó?ç<^îï÷GûÛ³‡£ó«‹÷û¿í³??<žÞ?ÚG?^=^í?ôÿÆíe ÿ}¿ÛV‰„VE+gçP~¾¶ÏQ;¯‘ã#ÓíS+GŽs¾<Óù®·3dL@YÞ´+¬¥|fÿg½F{AîÀ¹±@Ï£ÉÃÏ×ö™®z$ÚîÀ‚ýŠÜÅ`CUù|mŸŠ×ÈÞûÜ#Ê7裟¯õ³@¦È5ùmk,¬šh £‘¨|.Ò‡¦möù KâÖéælÔÒ?®Ÿ¥.U® "Æ>wà®R0s<F%7cÝ>”;\/“²à7ͺµIgÍÏ×öYððäIä|Û¬;ÛócÖ$®¡hMr™(èo›5ª¦mÖRA­ŸÃXkùüÖYWàòجIج«¯s­…x㬙[¦³æçkûìÆZËç7ÏÖð˜uks­«¶ÑËÒ›Ö:² ˜øC›ÐNòÙs#Ê5>¿i`"˜':òŽ˜CŸÄÇÏQæÏkäó–£BÐnBêkN’N¯„d†èeo〠IÒGã†È"Ášj(¡…®rYxŸî t@-â¶SÙb„¶‘ËÞ8s@ž™xñDjSù¢DÒÂB^öF Cüo­&¡&àÄq-ŸÅ¼’k4Oð³—$àW»¹A­ˆO†|£„æãËeñƒ7âàXZ %k©©DЖ¼,Ä7- ¬4tÃòoq!%ÔJ”˶· ÒäQÏÍFÂv^28^VJzã̽:dæÍ¬-#DkÖË$Ãï³×g·¼Tõþ§ßùÿx{¶»Ø=\Þýøáôb¿ûÕ¯þõþôêz¿ûÕ?þóïºbú«~Å?ܽÿx³¿}ÜýFø°uzè8+~ŽN~÷›ãßqÔ“.IÞÇ_Ÿtöùîø®N»ÚysÊîÝñÝùÉåñãåþäâøÃéýéõõþúäüøýÝ͇§Ww·ýë~ͯ¹<~ØãªÇ»û“3üùêøôä|w܇ûpÙ¯9»zøþ„€òtüxõîããþì¤kïŽOßßß=<œìÏï>Þ÷Ÿ~¸¿;¹?~¿x¸»øîd¿;~wr{ü„ol&û>“Óû‡ýíÕíEêîÉûï¯Ïú¾ùýÙÇ×WïeªýÖ;„iû­¯nû8˜óùñõéÃcÿqל/öý>Ç7ý6¯¯¾ØÿÛÇým§ûÊ\ìžûBžûêöŠß^bVWøê¡úxyŠAOï±r×|>å'™ì=áù®ïn/úãw›ëÝñ»Ó÷ýNêÞžõÝïÿ°¹xÛ¿î+|Û‡Üÿ¹¿¿ê¹4;]›ïô'|O·ë‹Ú¼=X >cN&Óÿ¬/êýñž+07ë?üÈGï;ðìùìá§£ß}<þÍáû.;¹9~<é¶Í;ìªíó•>^^Ýcb×2÷kl®Úû»Û÷ïïû]ž¸nßïïûºÉ6º:¸O¡_r¹ÿx¯»gçQöÕ§õþá¤o¦wÇ?^^aí.±}Áûc?pÙïú®n°Z·ÇœA^Üá»eõ÷s×>üp1ï¿ç]9¶ìkYžJûñ,ز G.JYÐûÆÞ·ÂõÅÝ}ß‘7Øb?òMl(ìÙ.÷ýF÷Wïq0.ð ØdgW¾:û(ûÌÎ…®ÜÍOÇrHÞëY}¶s÷Ÿ×ô;ápî~÷xü/ïïß_žœãµ]á`é°£úÁä6îìßÏN&¹ÁæAîôû§ã³;À·wr¸ ¯þ/äG®Âu_^¤„n!ížú.écwîžèÝõþûâ …[OqwÍåÃ;’Û) u×§†OOv#xm8߯:c9½¿À¨d°}óæÜYö?ÝÊïþGþßqpNlNÂîï>tâ'¤¯¬òGåhã É<Sè s‹Çx茣Ü=‚“Ÿ~èãa]‚g^q1÷²ƒÞÊØX¨>pgÉ×8„?â¡÷}‡Ÿ>Ü'ýpRpÞþåª3yqƒËñÕÏêé;àã½ð(ûûó»ûyƒïOyžd¿žì& ~yõ‰m¬Ç÷ï0òÝíõO~!“ìáÓñuß8šÒˆ;ž)ß’•½šòáܾÜæl7Ù nÙcÏóâùQ ¨¨|:¾ÝCdBTë$É#äÐàà=<ðÄœB|'ÂW%Ò%XG?½üÖvTg¨û!»®”•ÎÍöþºo¹›lО^<àÂNõ¸£Åã…B?÷ïž Q‘$92ECW†^€ÍÄïeƒ÷¹u¶ûñ*×™¼ KScölj’ ]z1µÿtÅÙß —9}>¸)&ç*>Ooy~±¾¦Ë¹OÎÉ£l¹ûúnæYý÷'âXçɺ™ûpgÏÕ™ËÃEß®:×ú^ûê@«Z‰ ¾øpw³‡‚ôpÓy®ÌÕÓOX×ûïφ&ñ'.À)›ˆÊó>öõž¢æÒN=Žêùúƒ«[´SÕÎïïnÈ ¯§b‘l[bÎúý:ëïN"ŽïnjߵĮëK]cïÿÒyש¾“ û{3 lö¾nû“ 峃—É»#wõI¶L—‰ïôõ’-]¿ïÏôÙv>ØÄéÙ™êEØDxY;îõýÁËÂ[r–¡ÿýòð±Vf²ãêòE ?õ §îVÖ™Ê%‚œ=ªŸÐB9)Œ§’ö}øÝ|Ù*}÷§Æ¯†j~NÍ ºK•e: ¾Ÿ3Üþ/&¯..ÉW.Mm‰(®{R=Ÿ‹›l7n|%¬¶Ë)r)îH¹íÃÇÌäÚ³[îÆ=l¾c»ØÔ×ýÌ9•­í8'°Õûý‡ëÓ÷ûïLˆöÙw´¨r{Qåúû¾æݯÆÊ#înªÂ;9ߺJŽÿŒ_‡>7\öc3­Ð6óʇ^‘ªSY¿Ð}.‡²3«ÏÐ"¾+x»ÿQn|–§ƒ“¼òÙi1PÈ}À‹«Û~·ÎÖr%s–œ‹úÔÕxN5ŠY;2bY0å²µ¹äxð¡JŸCµ¾6iÅ[tkï¥õ´3%ÔIlÀnL€G›°;XËg¾³GeñÇùÑöTGO«Îpþì‘ÌHÞÇý‡ï:<• Ðìéˆ%v{fJîÍ«ÜË×ÖoeÒ±wõ¶3Ìç}W1É“u^=ÌgŒLAÍ4ŠÐ„â§ã‹S(®(É›¸š´³ìýÕ‡SÕWÞôt›Åü‡CÏéýG²ê0=ÁÀÏöÔrú¿¦b\ÝŠ‘#òt,ÌþAÌ÷KåίXËëúAÄ:>ÌêQ&*–s¹ˆ×® ¡OË ³@…÷Ó³ò¥Þ§Ôxök61u'Ñ8Ũ1kpÿ—×w±×Ê›¸4gW}o†þd]äí <óiêÇ}y?œ’Õ›þˆ>>ˆœ>fjv!ðR£½z$«ÿܧof§Ã‘½ÆßúJ~' ®ðÇižOã r¼‘»÷tìÒɇ£ý݇]©»_ýê÷§û_Þ`÷¯ûÿíºyônß9ÿÖ_Ï݇#‚ ¥|tzôwüÊ\CÛÑß]_ÿeÇžÐpîèï>Þÿ5!øðÔíÚŽþîþÇ«£¿{Ø?ê¯ú=ƒAÌÛôë£ÿÇùÿ}ÿÃþÃÃîWÿ¯ßÿË÷v÷nÿ½ÿa;úÇßÿËïð««Çë>Õ‡Ç.ƒ;ù[°»û_ÃÑå»Õvôß» ì«~~ðG¿?íFj·¥÷×GéûÓë—§É~Ò/ù‡¾‘~}ô¯—þaÿþ9ü¯·òkÔto[îþã~èŠÎÅýÕíß½ë,ôèøw÷}£ß]=ýþÿ—ÿåÿÓý§ÿòO'x–»·P ~s÷—_†ËÐW`÷«ÿ|zq{u®®¤_ÓW·mâiûíÝ ýa÷7ôÎqÑá÷;dzýùnþ™ ¾ÐsóØ—¸+U÷W9êjñîoÞß]ïŽþ:¿ÿçÑ»~n9Ìß0üW Ø®ÿ}¸¿x÷ì:wxûÔuÞ®s?=^8¼î“ãÅ£¿ºÏ™_:¼î“ãe»îgæW¯ûäxõùú!ëô•ëÚóëЦêµu~ñBà9~íB¾]ôKÜOÌÐù9"&÷éW慘ݧ/ŒóBÌîÓ¦ç·þÄêôCñìÖŸZžòüÖŸZ¾˜ù¼Ÿž#ßÌ|ÞO^èùfæó~úB÷üÖŸxjïŸßúOíÃó[â©=ßLâ%î§^¡ç›ÉÜ=h˜øé ùf /Aë O_Xæ L㿯]Xç…2ü÷µ Û¼P&€ÿ¾ÆK¶ya­öß×.tË…ñCÉ÷púçý®+ÏÈD;Ú(³nîþ¼¼#‡*Ù?‚—Lô’7<³#j÷}_ìZüºÂwûpÝ¥ÍNÛhž^ïw}¢Žþ:~¾>Áþüè¯û»ó«ëëõ¯÷G½€·ë!èÇs¬|8=úëó¿Ý÷ _ùýõÑ_åYÖ?ÞýUÖá`€þ×û—¾=ú«>öÁ úïïþt8­Ëþ×Ë»þvý¾ÿqO½ýýé‡Ã¯þ8¾úãÝÕíáw?Žï~¼:{vóþªùmÿ·ï‡»ûƒÇ¸{ìÏq=òà7˜^ÍÁÏ8ÌÙéÃÁøçý wêüîöñàòs^þâÏïÏuìßüÈeêšÃ‹gxìï{윃/nûüÏ>~8Âÿ$2žswt¾÷G]W¹æ÷îhÿ—÷—Gßl>~qóñúèôììÿº‹å¬õŸ¬¯þ쓳^FÆÔÁ}ñí³c|ô7+Â_wÿáoú¹>½½¸ÞËüpÍøæ·½øëÓýéÙJÿåýtðåÁxýl©öEMLHÿÄkþrôÔOþÇäúSqGëdl®§÷ïwÿapƒÝXnÐ7”|Úý‡ÿS8—è‹ÔŸþúLI<ú õ2÷/ØåG ¿”ŸÛgúÛƒK•A`bz³y¯£v ?ö=ÝÙ’x$ù€à²Y&ÿ}x¿ûÕîWGÝ?º{÷Çý{äŸÿ#ÿü³™‡iû$ð'úžgöH,êeÞÜ]XçüÈ« Ú ¡ÙàÍ$‰¤ ¯S@»NÁ*‰Î«A8û†È‚Ô¢dÐ;È'LU¡& ­«bÛ c•ívÂÃLó6Ðy›‚U6ò*>%𗥦?I0ÀAdí*î$ýó¦HE¨4ÊÒý!\'_”ð3 Jí˜I“ýÖ àŠTÄì½C`|]4Qü|à8Cç­àD˜f•ô5Ɇ¯ê¬%uD»ÌÉéH-ˆz‰øÒ wI„zEœqØõŠi‰©¦¢+‰äÜœŒ­rÒåw¨EĶ|³5Ž qþy¡ˆ‘¹ ‡$ÿù % Ê[$XÖ†èý‰+ö%öMN±”‰š‚5W,Jv‚}Yg_+V%'Aì+…Y¬o,ìm¢ååbøxøMI uG,ü"8<­ásd'©çªÐ€‚ü+•ÏY zb€)ü‘!AZkq5ˆo¶(žNëž°jT€MÙÉÜ[3¸ÃþÓG(iqŠå‡*bè™˯yÑ‚«X¼>:ÖŠ÷ÛÀv,^AQH!uÊÄßD–½"¿¦†Á5Ê‚åm&äùé+áxöŠˆqPT5 ¿ªí 3º 'a„Ì--U…šDÉ¢uc±ª40 ÈD :®°'\·~åÐc Á>:œQ0NtãÈ›Anò lºtì1±Ù»Û¾i€î.c¸ìl§!?+dU³Bð²ñ@öÙðW‘¼)‘ ¯­ ¬z (Fàoí à~Ÿ£Â~•-j$^HNAa?‰,žRS¬X6³P¸KÉkÒmFh΂ì•`É3»D‚WÎz*ˆa¤Ø—‰Éâ’Ž˜K•‹S¸Ë˜µú^N¨ {¼ ÝÓ8ýYŠ:³SEÅÄJ–¤'NÚa¤j”ç/Ùi%“¹WæÆv"[ÛAüÊjÇÞ†xÌf¾MˆµLÔØb¬eƒdVB‘ÁàÒP§K fÖp¢¸é 7ŒôÎ&ŒUnгT GsTì4i¡p—¬`Õf øJá¢Ù!"™p¿4¹6%Œ~Gèj¢G)53ÿx›XÿÙ@;QIYœ‚YcAw;넲w.DzÛÕ3Ã^¸>“y³BîUo²×(A;YE¨ –@ùÕ¢SÀk³ˆNIJ2-áø:Wii=c¹WΪ ¢íS?Ö:‡€î#Riß ˆ“¢j6ÅDuú &TËE„Y;÷€ªC*èsP6»mááU¬wê-‚4[€Á*úÌEcªQâ̯¢ˆ+õ¬C/.Þæ°±pMU\¬JÑò jÌŰ¡Úi¤ëxØKPTLôÌ(Á˜9€ÆKtz]`…™.?ÊkµËÕ«mlàOD…û/žÐxöfpl‹Tu<i<¨×¨<ÑMÀØ*Ϻ(„€F!õ©*’I½¢®±vRÙ‘jÖ0Å¡ñÁ8©NšýQYâ  Le”耎ýÒšÝÙé͆CÞz[†ÈÞbžqj`"ÈÐø@U+6)æ[mÖ.ÍAú3\Z³yšœG©þÕTpÀÙ‚áPÒ“7-€ÂÎZGíØ«!KÐåÐJÅéÐËÃEçÛhûé ÝykOHoÓƒôÖ =Xû5În³ÎP˜7š¬H#&'¤`cø,†]L9 2ÐÆöŸÜ$yã² Ñà.[…W•EÜóÝ«Iè¡ÝÌ’¢/ž‹M Ïk*le&G%±Ùh5p¯bÌ„¦Yº×%4É¢³%ºpš¨K þÏ"]¾ªË&w†á£¥ß)ð+ ½éŠ“Æ« 6H‘¶IÌpù è‹´uH0‚T©O0•ж¯Kކ6ÅDrämE>Ã@ ‡P0žÉ:’#÷ß8  [‡ÒÏÆÆEz>$âjYèƒý³@Áî¤"~ñ…Ž¥„ã’ *nÆç$+@«·Êgœz§¦H'<{Ò^p ¦vN0[S“mÂV¹‚1–`¨äM ¥K—$îèz×;Kƒýåê»úã*ˆZrç`‘NIÒ71ÈørÙóO>76ù“í¦ñ›è"ul™,Ü;¡ÏCNòhèª)­uw‚“G7ŸbãeÅŒ‹Ô³ÀáÁ–uCó4H׿ŒÕø­ä"?fïä"wc—Xiš•2ÛfJP"¢¥Ÿ%NÍs²´qKŒ'TÙ¬E”,A´ 4ˆeÚpdŠu¼[OâlŸLkændžÚ¥Y‚Ò‰¨†s0÷•&³ö…NŽA´š, g¹‹95õbä*!)r\X~94åõyø329Nh¹Fï£À—4:£ŒÂDÄ;¡’úÒªˆÂÝ…CAÿªþ¦µz³˜êv¦§H¸ïz™#…#¹l¡ (è;Ø_¨ŒSÏ—ÀXŒïA{‘¨>n FÈäZoY`Øe®lÂ}ŠÀcÑ€¤£H§Ÿq 2(\wN¯&Ž“^jWŸ¿ š–ôÞ ®|t:Šxø v½á5t­VlúBKi7¡Ÿy|úgp¨–Ægšx»A´ù…¨RF„7»©8©‚ÛL½ô[«‚}ÕÁ–Yê‚ K0D^:¶féëªZ¸2­Ôûñ¬æ|P¢®buæz   3ã©ãŽtó;P5P5‰§F½Àêt ÃO}ì’n.‡L·Ú¦(ƒ0jÄá@#]ý l'¦î† nÞzÕÙá\V_Cölá*Ç õ4drdu4ôoægÈ ïŠ›AB;âeÈä¼âd`Scó1°k«zr`ËcýŒ»‰ƒœBÙy†ð3÷B–¶ïN.ÂsŠsAô-ñ-Èßŵ 8‰êY`Kwu,ÿ˜¦‡Í£n…¾òż ²òêTmM| ´¨K!‹Û3ªâæ†jHÅMý ™rKÜ \7õ&d†ÃÅ™½kæKÐÏ"$©åª'A^•8ä}Šî%ï\„ #?æEÈhE¢NjÂêC¥´(Þ,ÁÅÀ$ýp °Ý·ú˜ îƒLù§wŽô¿Êáηùú"fsˆþ,žƒœøcÙ‰MåÉw2Zɘ۠żúY‚žÜ@ß„wÙ<lM©ƒ¾†Õü8ê.à›ToANžEïì’ù ú#TcÎÌtPOeŠ9PÜðd´U7• 5ø³‚ìfCç,Xhó| Æ cnºŸiöë«"ÈQ264ÀUß@&7×ÿê`cps ôwÍ/À&áêà3«W€ç@}!ãð d¤ Ìà©z˜T¡ZEêÈÄVTw3ƒÔÀîÉê è?Næ èçÆ›+€Ú˜y2ºn©#@¦íU%sdXùê`pØœ™ø‘âàkP€,dleµ3€VûŸbEÍÿLç¿Zÿ”Io0þÅ[ðí¬ç3ŸF uØ%¦AIÄÚãE©D0ˆmø:@£¡>Qï¾ËS7@?³ù:áËptÊ × h{â èûû]|Nšik’‰'OQo€“ö×Ú\ÎGöÏJ€'‹CÀI‡jñt‚asõ÷°QºúºǶ8É=Åš6Ôc;bu 8¶<3¿@7ÚÚðMEó ¨S4© )dãܘ¥+ ð¦éW¸&‰77«/‰õ¬ ú±óð§l.ø®‡_@}׃ؖoâ·|$‡\õе,Dr !~™PfŸ…ÙÛNÈæðÁ©ûU’-Ô}η™->@Tbó••{(ÌäÙe‘…ÐüPéqo¶*·Y e 2F‰@kÐ%úÍ@Sà=G ëF èÒ3-*óŒÙ@6kÆ„š ãÐØÏRgäG"«Ãy‰wŠž?¯sÀuÎ&#[õ(¸,Ά£Î¥ÍG‰K\œ†¹(NÃ;ØgL !!H×FxũޑK‚))Ó•XQAÙ4ð$ŸÓ+öŒ#À0Ñ„G3¨Y3°DµÖ/ߨ„n_Ç~$S¸@l‚IV5) :äášµá(Ÿµ<)7Á¶] S£Ë§¸VvºD’ÂÅ£ˆ±•t¢E •J?.9¯oSÛºÙv0µ¸¥.Dvsx;EAä,èe5kÜ#4x¤u‰ÀÄÝL‚À©º6ðž —9z®«ð%#Ë+|é‹t@÷I-þ@ܼä^Iï® Êêk­òžqG¹nüÊêWó¯W7û‡ïÿëÝÍéíÑù9V™îûó£‡ózž$Ùg7h\¡%¼GÇ¿?ÑA.áAy>HWt‰^}ɇƒlƒ<‡ùÝ6髃ù‡4¥~ê©åºñ+ÿ©_ýÌS‡Mj2¾ê©C°ì¼ÃA§žú“Mâ"”ùœ¥;],M‰k#R4¸ÜOÄ™ÏÛòM~ÙI/JN‚vÒ‹â*yk'½gs}q߃éåo×I¯y*¢¼ocÒ‰ .Ÿå®rÍ+ŸS:Ç9\ª&.-Ï7¯ÍÁ_ÜrÖç¯Ë—ŸŸÅwäX’†xoZ²´3[HôÉŸÌk–HÓ",C0Ñ'üü’t8‹m"Æ!KŒÜf!®ü}Õ>oˆâ–YÌ!`­ÿóC𺨧k™ÆO+¹P í%tYWtÙ!Xñðó/CЧûÊ’Dð³CP§u͆ԪŸ"°QÛ«CPÓjŸ7„½ÏŒ³ƒ!>ã%ðAÌÇKX¦ñm$ú'‹¶7t ¢RÖu¹ð‰ŠíWúó8… nC2×ð› 陣ÝÂ7rû–CÒ·ÄÊ·RøYøæCºú­œÖÀ72~ûYæo?ËòígÙ¾ù,¿ítÒ6|ó!Ã7e®~ëéÝ7gœå·=2ä7=b{Ó)C~ÓéÃ7?2dûæ³üÆ’CúoþÆ¿Áü¿¦ë ršžx3ýZ¥ Kò$8éz0Ûý38Ùö‡“´GM=Pz̽o";¬g¢ ø-R‚žŽ<¶ô}øFøðøÃIŒÿ?³™{P¬C_Œ&DF>pÖW ‚óþÁùBhÿo¯þ|ò}bOƒÒg‹»ÇS G­ÝÓ\ôwèyquû'iÄ``ó‚zˆ?a^wÖTeAµþá$(Š÷½"/˃LlíËO?Á¥¢ÊÊ$9òô —o“K}¿?ûø~/]jn0ÈÇ[EíT°Ub?‡ «ØÏ‡ÀΗ èêîBº/(Tmßí5 ´q7ÐÆÏÿùRðŸ×λCüçg&þóùÁŒžÁ>%—Ѥ§ÿ,0Ö¯A@ºïqLš§W`åS‚‹ô Àî\ÑŸ‡{ èÿ›!`ÿåãíÑ߸?b‡¡_»ôk> ûÃõé»û«Îï? –+Òã0Ø_À`ƒý ö0ØÿG€ÁB|½ƒ%3?¤ˆcò3p°¹þ@gï/p°¿ÀÁþû ì/p°ß –~/®vøI4X†I ÷ ,¸aÁ= îAXpŠ{܃°à„÷ ,¸aÅ= îAXp‚{&îAñ îAñ÷€HOZçPüÄ=(nâê—97qˆ7§%e›¸e[pÚŠ{Ð܃ºàÔ÷ ,¸eÅ=( îA^pò‚{܃¼â¤÷ -¸iÁ=H îAZqÒ‚{܃¸àÄ÷ ®¸qÁ= îAXpÂÄ=¢?-cÈ~âd7q²›¸y›¸y[qÚ‚{Ð܃ºàÔ÷ ®¸eÁ=( îA^pò‚{W܃¼à¤÷ -¸iÁ=H+îA\pâ‚{܃¸àÄ÷ .¸qÁ=ˆ îA\pŠ{V܃ðU¸iÁ=H îAZpÒ‚{܃´â¤÷ -¸iÁ=H îAZqÒ‚{܃´à¤÷ ­¸iÁ=H îAZpÒ‚{V܃¼àä÷ /¸yÁ=(+îAYpÊ‚{P܃ºàÔ÷ .¸mÁ=h îA[pÚŠ{Ð&îAÞ&îAÞ&îAÞ&îó ÷ o îÁr¿`ûüFq(@pXy©¸ýóÀ=`B¿â0Âpˆ*¨9Ü‚ÿ(¸ÅM܃â&î€ (î«÷€U•Š{PüÄ=a"iŸ À¨¸aÁ= îAXp‚{W܃¸àÄ÷ -¸iÁ=H+îAZpò‚{܃¼àä÷ /¸yÁ=È îA^pòŠ{P܃²à”÷ ,¸eÅ=( îAYpÊ‚{P܃²â”÷ ¬¸å‹qò‚{܃¼àä÷ /¸yÅ=È îA^pò‚{܃¼âä÷ /¸yÁ=È îA^qò‚{܃¼àä÷ ¯¸iÁ=H îAZpÒ‚{V܃´à¤÷ -¸iÁ=H+îAZpÒ‚{܃´à¤÷ /¸yÁ=È îA^pòŠ{܃¼àä÷ /¸yÅ=È îA^pò‚{܃¼âä÷ -¸iÁ=H îAZqÒ‚{܃´à¤÷ ­¸iÁ=H îAZpÒ‚{V܃¼àä÷ /¸yÁ=È+îAYpÊ‚{P܃²à”÷ .¸uÁ=¨ îA]pêŠ{P܃ºàÔ÷ .¸uÅ=¨ îA]pê‚{P܃ºâÔ÷ .¸eÁ=( îAYqÊ‚{P܃²à”÷ ¬¸yÁ=È îA^pò‚{W܃¼àä÷ ,¸eÁ=(+îAYpÊ‚{P܃ºàÔ÷ .¸uÁ=¨ îA]pêŠ{Ð܃ºàÔ÷ .¸uÅ=¨ îA]pÊ‚{P܃²â”÷ ,¸yÁ=È îA^qò‚{W܃ü îÁ/¸¿àü‚{ðÿŸ¸Ÿhtð ú/Hè¿ ¡ÿ‚„þ ú/Hè¿ ¡5:ì´Æl.8ÉÀ¾ àŠð|7ãs0i•.†V8[£Tð`Ÿ¢ÊF\®«Užƒñ·šÄ¹‹Þ:5©·â³úm R‘Eq÷Ô,îVl¸*ý¹/« ¦ÒO½«ÿ¸Å`ïû°–,îcLµ .˜Q­ |Û'S¥ƒQF»¢ª˜-äUB¹ô‹š"¡÷—Z›¸ôJ·”ª¤3¨W›Ú˜‹$! úxkoàWªë7¨j2zý¼ã¸Ó³Ï}Æã³ ãÇ]ûÀg1PÂR›ú‰úÉl›böÙ·M‘ vŠWÊÐ?[P¯¯jÛd1¢Ó$ÈBw| èæ‚àfö™6šUêõ]×D…ÍhíÓ¤õæ5À×7IórGM»3±Ça •èbµ KÆ,›´R#&@ ÙŒz ÒÑŒÍ [hé_ÐÓ­ß9jÌ$à³ûšÇ5ÒÅ'½§E‰ËÁhÒÆ)¡dÓ“ÎpV‹_5#þJ ÄÍø\åáúfM²JN5‰ïvÃQÒ¸ñÖ¥nM2× ŽUSqœ~dteŠ™#v~¬Y6·|Nâ}Øp5 W‹þƒ»N‰ô JR…ê&q™$Ðöe ÐÔ*§'CÜ5è‡X›À@0¿6ñõ¸~Zªº¨·˜x_ýÜ6¯èü {Ò ¨Ý¾'!ÚPq±WåqÀùÛ&§=±šÂädH&ýã2`=ú&–(u×Tšµîî/‰i9pœ~úÓâRV‰]õ kÑxéÂ| ´þ*°(EVUì—ÁW%´Fé\š¢àœT±WرµJ³Ì‚ö˜]`å“É‚]`&NødŸø ·jK÷ E™3'6{lÿÙ˜ƒ`7Mà; 0t‘h#6 Q»¯·4Ó-H¡l ´JæHó2PÜðYã^ý>¬|øj{yæèqŠ%GFdÙ8­"¦ tûfqÃÕ½ó³ƒøI)=%åº*KÊ0ÆjTG1dR* ƒªÀìp T‹D@èEóÜÁ<‘̦Y§Žš4²„œ$CCxЉž$<œŸ³Kã¢Ëøq®(é/ë€à.I½Ï`z¦*í¤i»ÔªëîTÅ«@¢ïfñ>{Êa‘ž/ùˆzk#ŒE9¬jÆ.ׯZ˜Ç½âTh)s Ã]Ý6n°/š4 ¤K¿‰S'£åuÓ¸”æ4šVÉTŠú·!èü6? #Å9nÞ~ÜŽö”Qƒ^Ä“P«ZÔ f%ÓnÃ]±ûKµhBÓw3µ%²ô×Ö4ú„>×-8€å¥¨«Ú7¼ä+pµ›@·1úÐଅ¦‚HŸë¡NØQì™ý%êC?Q’6Î…X‰îCmg™ ]QÀS¢óO,‚”h² \T’F´ Æ—WԮЉmiÕ¹$ %$Â1Û'W±=:Q§%©”8Ç{ÙV½-ã}ê4’Ô‘&TJŒÍ(0b‚Mº¡ò)híéSÀ»Ñš>E I§# _ô¦–CB°¯lâµLP( ï+A½+ÚE3E"D%Ø‹Z»¥'À²XgêÙvUàüøMqâ«J‘ÙMbßI¶’ÓN² ¼ˆ­Gep^‡«³5;Ï…ÈKèqY¼¦DLȨ×E¿´õ¶è&¤YXIômÍÚ‹:57üž€ßSü|šy`ß»,@ýÀÀn•’CS÷Z‰ö–,ĺÍ£"OAxT}0+“8v1À“¸ß@;KÒ1,©‡úK²ß¼É+áu„T²>-ßfÖC·®À²9S-ö»Œu€ãº(h,ÜYò•îÖRìùÐD7‹{1!Ë¥˜—žMXJ®z~ú‹,Y\Ú Áâ1º´³@dB ¨hkéQ)º«Á×KÑM„6ÊE{ß&zÕÉ8À?Õ…¤„݉×飸·«>Ã}æGN°êJuvÛþbÒ.Á[ª¾@ào–”À[ªÉæ€à^Í:=8æ«@“&8ÄJMbþLóº[~mv.R1Ñ鯸g piÚËù>óð‡¦ x ¡¡ùÕFB72ödG·o³ËE²árqoQ_ TXmËÌvSUAÞuíÑœ°ç*´T}Š>‚sº°?¼•ëPNŽuª ¶ÆøMÐ]×T8ë^dÕ–Ï ï®:e»ˆT'î–W`¥ÓhGª_çõ\@½î†¿^Í]F 6Ô ¼²µmóš QkÈiÎ5Œ· ÅKG€C·F}X÷1ع€*ÇJBí/¦‰—ÅØRF”º!/œyWÀ–;¶y(|Ÿ/š)¾‘hŽP-L4Çóͱè3cú±+îëµ¥5Es,€¡hŽeìS\7+FÐu‡hŽ+â“Äqx…òuˆæ¨‘lnîhr¢9VcƒKÄæýÍ]ÿwC4Ç–Êͱ•)b3Ã/ËŸ*EsÚT#÷M¢hNÖ&“N[ئhN›ÉܾÿÒ–ÛÍiSõ¢9Ù‘‚hN.Å)š“+mˆæ¤`ËÍI± )š“W Ñœ¼ )š“W%¢y¸­IzˆæäÃ6D3;‹ Ñœš8ùæÆ»HÁ§ù†yR¨ÛÍ)šþƒ§ˆ¦N!û.Ú[BALSgb_±!šûó—!šS4YÚšô3ÑÜ#Ñœ’KS4' Q4'±œD4':¦4NâÂT"+ò2Esʦámj,\ÞzÖâæÈ%ÑœòXdJä¡!FýJwkÊö|hõ®¨Îäù)›šÑœ4ÐNÑœ²ÄÌ)šÇ šSÖÑ,2ÑÜ¿OC4Lyˆæ¤qŠæTŒ™#ÿ±¨ËžÒ8M© ÂîÄëôÑÁóùÍi¨îÍIãûÍ$¦h¶¸0E³€ «hNÑÌòÍÖ¾ž"É‚¿Í̳6ÑÜ÷r›¢ÙБ“äh†4DsR]Šæùo Vj¢y~µ1ËÓ ÑœÚ8 ¸íx›ÛÄn¦ØÄTÍ1–NÛÐX+‡hÎ[S4çMJ!J´ò0*{LGs[¢Y`_M4gçÝÍY¼Â"š³3‘‹ —Fz(š³ÓE³åÞP4gÍl hÎ&§™ÜâMoC 1ømŠfÅ´Ó¹†ñ67iAf¢™ ‚L4ç¸Õ)šs+‰”Îñbš4ú1¶”‡âzÌ~ŠæUÙƒhαlS4g‘îŸ/šDâ7ÍË`¢Ù?­f_ü´š½)Ù;øi5û«Ù—8­f_Ò´š}IÓjöfžSɇ—TݦÕì5?ƒ›Û×4­f_Ë´š}m‹Õì››V³oaZ;Å)|KÓjö-/Vs§¦Õì[™V³7#¢Ùk32é°m‹Õ6?­æ°Åi5‡­L«9Ø‘‚hÎ/VspiZÍÁ•i5W§Õ\›Vs'«¹SÓjžnk’¢9ømZÍÁ»Åj>L«9hßEÛ´šCðÓj!-VseZÍ!´i5‡è¦Õb˜:S°ì8Šæ®dO«9Ä<­æNL«9Ä2­æÛb5³»!šCrÓjš¬AiÄÃeDY¬æ·i5‡ì§ÕTœ›#ä8­æÓb5‡œ¦Õ,_én 9M«¹0­æN,VsÈaZÍA³è(šÇ šCŽÓj– ™h LÑ4a„¢9 S‹g>l(~±šÃ”Ú ¢[®‹Ój%M«9 Õ¢9”<­æ`~9ˆæ`®8ˆæPê´šCÝ«9T7­æ )[IÁümÍ¡–i5‡Ú«9h¯ŠæÐÜ´š;1­æùM?–¡m‹Õ<¿ÚHL«94?­æÐâ´šƒ5 ¡Ø­M«9š“o5naZÍ]±VsÜÒb5Ç-O«9š“ë·2­æ¸Õi5Ç­.VsÜÚ´š£Û¦ÕŸVs4ã¢9º²XÍQ³0(š»ˆœVs49 Ñ}™Vsôm±šcpÓjŽ!L«9†4­æò´šc¨‹ÕC›VsŒnZÍ1úi5ÇÁaún1,VsÔÔ Šæãb5G‘îŸ/šÛ—¦\¿"š«&>’]V3f!š«é´4úÍ7iݦÕ\‡Í Ñ\«›Vs‚#„i5k Q„qµÄG¥Ê´škÛ¦Õ\›ŸVsmqZÍÕÉì4®+¢¹mÛ´šÛæ§h›ŸVsÛÂb57Sc!šÛ–¦ÕÜ4ñ‘¢¹Ùé“n–øHÑ܆ÌEĹi57M|¤hnCäö7Ú,ñ‘¢¹y?­æfhˆæ¦‰ÍÍ&Ds³ÄGŠææË´š'Ûjâ#EsóuZÍÍ)š›&>R7M|ä»h¡L«¹iâ#Ï@³ÄGŠæÓ´š5*{­Å6­æ–¶©35K|¤hnfóB4·!K#GÓjn)M«¹Yâ#EsÓÄGŠæ¦‰Í-»i(7M|T"-Vs39Æ·©‰òÖ5éP6GñÓjn%,Vs+aZÍ­„i5·â§ÕÜ4ñ‘<¿Yâ#EsÓÄGŠæ¦‰ÍcÍmÀp[â#EsÓÄGŠæfjsáyZÍmz­qY[¬æV·i57;ê¼®úi57M|¤hn#\ÑÜjœVsÓÄGŠæ¦‰ÍM)š›%>R4·Ú¦ÕÜ4ñ‘"©™X„hn-M«¹Yâ#EsÓÄGŠæÖê´š›&>R4ÏoÀZ]¬æù^Ó`7}OºmÛ¦ÙÜ)?íæN¥Åpîd™–s§Ú4ÝæÜ´ÑcÏ ‹õÜÉ8ÍgPÓ~îTš4¨iAw*/&4*¦ Ý©:èn…oӊft§âbGKÛ“Ön3¿6ÁÓ6͆¤¼îTœ¶t§ÊbLw²mËÄã6Íiôö˜öt§â4¨;•‹º“ešÔªÓ¦îT›FµÛª¸Er‹Y rÚÕò‹a ò³-ëê¿Ó»Â:Š0™o00q±da*úãEå+uãQéNà7‹*r—bQÁÇxDgžQ¾¢Û\ŽPE)R”t¬NDEGUÝáÁƒÁWaãEu~UT‘Äj·…]Õè c2Ú¯:§Æ¥*,ÐØ‚]QR‹™DÚ6#r'”]W4JÎF€ËÙ#ÁÃ¥Vm…¯9©Ï§B§L^móŠÁä›~¯]°ë=Äúp8«ìk¢Ù:Àÿ)Éò–’îØÊ~>Ql¬¾ t‘ŒAiÅ j“JËÊ–÷ê.®­Ñ®—mªÄC žÌl¬ƒÊÄ ùœ Ü‚²9P‘–¤•‚c Hœ¸!²]Œ†ŠP4y6 ÖÕ9ýQp< àzTלR"Z* ©6kdAIÖ’ÌñFI2õd”48]d`eoG!ªJl£\OfýF uài`ñfýFe£ $=÷ª!¬ ¼&øÒl‘áFŒz²ØRK2ªðž³öá"A€Žª# Ÿ#&Oú½g¼Uå_Оùû·æÀ<ÿý{¥×˧Zè°£"Þt#utÏHøZ?óšçŸ‘#¡ÐæLW »+ûqP£Å›ª§ƒjÛ?V^ˆj?‚jÓoÔu/ãiJYEÒY cWÃYUóÔü4/DtBÅ­‘Ý£î(êŽQMEy QX~ª¯QÝŠÂbÜÈ£pݤ/pQ¢Âºº C̯Nà2 ªT³º]ëÆæž*¨‰²¤]‹«”LëŠ#707oüýpÕZ‰¤×t³9V¡éR²’énÂV$õ©ˆ­ŽUœ½&6FÕM FY4ͧ³%$Žue{jU7< Âhãy‘?Ú†Ž)uÖ!ñ:esÈüj*1)b›ÍêÎ*R ‹{`qAO4›LGa+ªhÊPÑjjž B"ÙG§° ›–ØBàG¦y"˜~çXÔ6N*ºÔÖ©¸1ùþZUºbsãе¹®r ¤"£$¡Ú?xYI­ÍeU¯áH-Ž £,Ù~˜‹)¹‹LWc‚ó.®M~SÌtb£\ G0ÛªhòPdTѦز\¥•LHâÓëMWMEü•Ædù›óC®”6ÔE~¥ ̬ëa(üup¢~æëfFÞ4 A…¸:ãlðË:SÃáUuÆû7æÂs­ ò\‡êì] ¦FÝõ\¼ªÝƒ+ªª«uˆ©~l̘HÛH£X¨^ç oi5.µll$ìO)Šªƒ ò»¤ªS€%MÕ,,î5ªA“X h¦abšœnäÄ åš ©z±Œë×VÒç0ÀŠÄ0a€ð¥«~ƒ,)-;áµ€ ²5ß³"º2DÝXbt̵ uÛp‹×Õ²ûû¾`źÒXe#«× ÔõöY ž ×4K»²²mÓpDEXH+ï0=VèupmÆÆéXÏö|t‹+ó Ð:)ÇÜ̶™Th(j ]EúÆ;«YJHE!_3åL¸¹dÊ!ªLÏc9ƒé±¨ô!OåW«Dr6ojcCAÏf–y‚‡Ûl¹8*" ä=üÝzÎàÿ vÖáÌ vè"*'ÌL¸¬šÚ˜X.¤ƒÃÇÇñ†ó[™J <¶Á\ÛØ†¬PJ¦¥á5¥`,´ÀÅl:fUNËö69<žÏb ¥˜ÉotÈQk%ÙÁ§ƒ:µ9¸¹ )6Å;ákt¥âÙÊ®k›vT5M˜®Ý°ŒPMéð6Êdm(‡ð5«ÿ¶Fz*MgC¾SúP(=Ã5Ù™Žt¸ê¥n¼MwRŠôÔ6ý. %§ °ÎHµÝzE$¾Y½G¥ßÔ8O£ÃUÔk8\›R¼ÒôX8Ýfò_¾ôâÆ¬â)6Éžèá jýAïT°‡JxŒ oD*¨ö(ÏoÊR:e\6ã†qè呞Rãº.›UÝHʦ2ÐoªZ õ©îTM†SÕ GÉp±ö£ÆKMïæ›’>ð‰e§“ž˜ñ“]®·µ7. 3’ðo¸VBÓ y•|Þ©iÏÆ%Žöýå™Úö/ú†.c³É±MÂRyÙ[OiÜ,‰OžéÙá+Ÿ´V®yÛÀLcçóÞ@{ˆÆV䳌È5I ‘Ï^ö¥®Il…䌸VÂpE¤}u–†ÏœÀ46x<¶Á‹@PÉà¼ì̓˔’8Ùe²I£Ð ¢Vºð2!Þ:s¼ëžn3·ÁyÙ›—)i]™¬ºIxMæeB¼uæ6¸LV'aƒó²7Î)I7y›ºP6÷ªÇG¶Õ[Ï&'5†ç|Çð²}txÙX_4üx©uÙ1$¾î¥Ö2¦ÈØ1BØà¼ì˶ã\˜º®;©¯[Nʆ—ùÚðBÙð¼ðËÖ}°ºðy _ÅdJ2¸NV×— ƒËëù"6S]N*‰¯;L²dpÝ$2¸68/û¬Á¿¬ýûö©Ïú¿oê"YuGƒ;6“Ï„¼ÌJ Ra½P®,u“„ëóÐÑ3SÔÖ¾èØÐQ Thüƒ?'(ä ¯ppðYà ã´ÄD†óњ΢ï{C!‚ €ËÄQÑjÃ÷T’Žèúê —EÑZ‡ˆ#qgHHsn#ØH@á¿BËK±æà£)›bDú¿j fŠÂvk3iK'tµÁÉ~´YóN$BËúå›űå‡Ï¢ Ú„‹\þ *¦ák¹ÀRjM'tÄÈT7 ÉŽ…:ë嫬Gö•À›ït‰²–:8j²V©¸@hH{>D³B- y}›” —F"µ¸¥.Dvs„¤‘<)¨o›‹¶ü„ó,Ë#EMÌtpeC‚‚³(Ûçzzü{9(¤W?{ àui‰‚ƒª8@íà{ÉÁâ…MoˆjítÏæònb_zÛ€7óŠô‡““]3‚ˆÜöˆ—:…ð @s6OÇ'Jª‚V‘ØÆ~ eû?ÚR˜Ãm†Ì‰*ùÍöƒ#0¢ÍÁ¡ýƒ½3(æÒ Bž6i¯m%°\(ÖQKŽ9©Ÿ†4Uû¡Õ *†* ܨ%rHWOEÁÕòøYß“ÚÂ(…PFéƒ0ʬÊÈë_ 6rX]c=òz ëp±V~''$èîqR‰Í"#Àé‹^‡ s/‡Óc *l?pÍMas í¦~Oÿªº}¤¿=A8ý‘#ÏËJEºê`ºjwû*®×­#hØÇƒÕ‰KG d^Óé!„tââ9ýšÚpŒUb0{Õ‰“ÅhÕ6%W‡&Ut"x¿Œ«]Éâ3óL_Èöb2õ#È¾šŽŠ€9Ë;  ×âE6ƒ΂½.é:àç4ö8–®xð£#0)}eð™I„ Wò’ÍÆ„Š4¶aU'„5ŬaöÖ°¶M:ê¸å‘ÆáäÊxõìè£13?_ö>öžèŸŠÑìaYG`Ó%§#@þ³'z³†½g©YÖë0b{Ò¿Þ33XœÞütà?Ãç-,k%-Ä{“æØ›û<¢÷DÇ’é9é£bOMÑ }!¬=›·u@ùªVrñR­ÛXÖ¤¹–aÀTSšž AØMrû¾$æY\,·j9¿N¼fBÈ)ÑtÒÐ-™ÂÍlEê¹åªÏ²÷‘ÕU;!A‡“ŒŒ¯…BhJ rͪyðGVˆÄá¼bÃkW5í¨ÏÁfBXDS©I¬Î†Ë„Ð4f—s©Ó€µìpì&FHIôÛWu¾'àT :'@ÔMÓ.£©–fŠa‹¥£b  '¸ØG©S€hö# >hQ`Jme~SmB$ò@šÿ|1TÀ镪õOŽ4M!F]f)–gŠ,ÖRìECäXî3@ÄÞê7̃D’V12ôl+vPÇ­–É1ØgχX«ò<®qÉ›½MÄC ÇD-ð"……yެðÖ Œ¦›·Õ¤ ™•`:Æ9ÓòHÑÒvÁ6ŠA4@®•±Å±^ëàØŽF‹¹ú!ÙS@VZ!‹cÇ-MÆF¹Mñ͉åF0 ŠWÏ~Ú(¯õ¼2³$!žSœ¤ol®PŒ€P¶Òþ-ž= pÍ!ùFOA_5ãZÛBÅ´üÈ×9ܦÉùl~g8‚’nÅà˜k¶Be&$4MâgÏ&ÕÙ›6UÍhFr(Ûr讎u­”°WöÎÄøÐ½6àžüÌ£â̱ ˆ• ÐEX~–QŠ·B¥QÍ|7°82ÑøDÎQXT t›9C¸mFÊEÕ2Œ¼IàT‡k`‡b=f÷‘%„㮦Ñgd:0ù€_õQUgc+³ÎõG¡ey¹êTíÈIUXyXÔÐrF¦yuê<"‡×ØK'8—mAìè—¯üzÝ2‚!Çd°ÚÒt[ó¶¥ÉÁà„ŠVÛeìÛ¢Í 2„QѦl÷Wª–ƒRÀ—j æ—±(¥ˆÏ€Eæ–@= õdžh­ÉÈ`ÖÆÌGYZúBÉ6‚#ûŠ:áŒlhÉÚ{!or*ê†ÃY×ä/Ñ—¤{n’Æ~÷Ñ߈œu$h>rÞØmÄÙŽP+ “ }ëlœuB’Rbª 2B¢ïDçÉ—Œp#y…óÅ‹ •7¶Ðô_b…ûÈå.ÞɳQŽùã²®}'ªÈf{z)újgf¾“Œ zÑ`'€E]l%·m4UPÂ<¸Ò{!-#ØT·¨xi2¡²õ;î”1ñ¬{é‚§=Iøäl6##B^sE¸xYÕ4.k®öÁ‰´öFüœ‚7±›dú޹Ê#Þa(d.u¢ÀYê3¸¬ÉdTàr0 -v7:’Ä Í ‚BWZU],{+¿„²%*ý ´jȱ1WØ–i!‡sV®Ž ¯¦À‘›˜—­`(;Žf€@ËVŸãD‰C5Èšî@ùßßU œä»›—šŠeÇî ¥.@xBWâýPà¤Ùƒ)pæ„ f–ª©¡ÀG©¦Õò›‰¦g)(÷Ì#A.•R†7àQ ¤b0X¬Á1.Öm ²8Ö˜â€ë2Ä#ÚÞY)9¸kÊ> MŠ•1¦À%åy\ã”J™ Ü@»BË…ðu!œ›#D+Ïæà±äyÛ˜¦ž¬žì>E¿ºâPàR4µ UQ_¸Z˜ \VV<˜Ò€5V7.¸Lqs;Œ=‰ã­˜¦Ô4’7% \Ó›€äüPàÓœMK CŽò׸äL …üѸä†" á¦LŠ \²= ý*©ï„êWÒ|B*pi›* ±¬AX@•Ä|ɦºEEÕ3.6Sx ø¢Mm(p±¶:¸XKœ \¬ºó°xq¨i`EÕ^ 8‘f‡JTXPIv“ü,\ŒKÂJ4¬:œ™8Ô40èè¦.†6=p1”ŇΆQÃ˃­¾—µš¾L\´þuKчé‹ÞO\4` þÈÕé‹®,¸hµËØ@ÑÅ鋆<.ºmzàâV\4ØP.ʧ.äÜ¶é ­-¸ÐÊôÀs;€'ƒQOÍM\hÛâ à Aô˜<=pÁjáåßÂ-¸`0²àÓax$q¦n€è@! Å-¸ÛôÀÃìƒ7°{ÀH¸0ð}±D!»)TCjÓÇ2ASàBÊÓRZç ß œoqzà¼Å8WoHÂк¼˜8o:8_ÃôÀùº-8?Æ ÒôÀù² : œ/nñÀy òKv[Ù>ËgŒÒˆé3\*p1ºé‹Ó)Ì ²xà¢Â‡RzÇà§.šëg=ú<=pчÅÍÁͧÎ6—¦.ªJ.ºmñÀEíùHM**^+¸hŽ rø-LÏZÜÜâ³ ;~eO\ðqzà‚÷Ó4ÂE.@2.¸2=pÁ¥é óù£.*pÁm‹Θ¸`{JVPß Õ¯°Åé ›_Y§ß®Ö<ývu„dK·W¿]ýùÌ9)R‰KùŠÅØÏǯ¥.×R—Àk©kàµÔ%ðJ˜ ¼–º^K]¯ÌŽ×R—À«b†•º^õGr¼e8 ¼–º^K]¯¥.×>ñxíÄx-u ¼Ê¢hTªÔ%ðZêx-u ¼–º^Ù@ɯ¥.WöY²Àk©kàµÔ%ðÊîLx-u ¼ê76¡5ðÚ©x%„^K]¯L:±À+sëFàµÔ%ð*¤×R—Àk©KàµÔ5ðÊ%²Àk©Kà•)}x%:…^¹Æ#ðÚ©xU"Æ…ðu!œ›#XàU×À«ÜV¯2»hË¿^å‘,ðʦWx-u ¼Êzn ¼Êê[àµÔ%ðZêx-e ¼À塞×R–Àk)Kൔ%ðZÊx-e ¼–²^™Cd×R–Àk)KàU Ûe ¼ê¶0†³Àk)Kൔ5ðʹZàU 85ðʧµÀk_‡x-u ¼r#[à•Ô¯|gxå^³Àk©kàµÔ5ð*…o?x•;e”J(vAY¯µ,×Z–Àk'–Àk-Kàµó¨x­e ¼Öº^k]¯µ.×Z—Àk­KàµÖ%ðZëx¥~lW¢a[àµÖ%ðJqc×Z×Àk­Kà•_ÏSbÁ¯µ®WÞÖ¯œ^k]¯lxí´^k]¯µ.W.Š^©ÿ[àµÖ5ðJ¼p ¼Öº^k]¯µ.Wvt×Z—Àk­Kൖ%ðJKïÄfWn ¼Ãůµ,×Z–Àk-kൖ%ðʾïxå6´Àk-Kൖ5ðÊ]m×Z–Àk-Kൖ%ðZËx­e ¼Ö²^kY¯µ,×ZÖÀk-Kà•mí-ðʆÝx­e ¼vb ¼²‚ׯJX±éxåxåØ#ðZËxíÓ›WNܯµ,W>ù¼Ö²^¹xxå²|Ú²^¥bv^Ü~¯óöÈ{äò…f_ôóF1FŽ›I°Vš a’°nÎ Õ:Vnâwòô‹&Íÿ…ë²^WX8Ò„­ åyF|Ø~„¥xB`êDجo“§35KŸVÏXªv'Ö2ªi:…ÚNÆ¿@DpÍ [0eùNª–÷t‚z¬ø;…º¤ ×ÁžË‚«Ø $‰K#6É@èó±­­BÊ£8•™Q¾BDQk6;9dêg³°˜N€g[I–,er•þÖYý]å¶ÐsÖEA;} àggípê=SË&ƒ3›¦8ArÉë7€ºÓˆW§0©—èc7¿â3"q8™º©çâtL=•pšw­ˆeG¹Æ1^ß Ÿ¬Ì¶O›€}žðޏäÇ{GY)͵;Ù¥˜+ä2;“AàY‘`/КýœT–ˉ€}YFô—¦üw"2µ6 !¸:êÞ´æÙ³€³8ƒ'z_±á‡ÓÒBB5Ô7ÈJ:øV–¯ëtÈöú#ÇοYéÞ^o$µâÍé¯w{ ï‰ÒQ‰T ,ÏoÇR¨=\èH®Ž:ËÔ7Y"æ/ ܰwÌXŽ^G`e§,׆ËÖóa fQ@PY«M~¾wüKÎãÐÚ”VÒÍ tÚÌÇj5(&Ò웨}áH‰èÓd‰6‚€Ö¢ûÉ‘£ aQ6§#÷ÙëNãAüyݨ\AX&’l„iËâNÁT9žˆäN€;ÝiŽÅÔA «Xt§áQ¸·˜Hš›+§&¯œÕˆY–eY¢^ª©@ÕKq¶´jðR ^„m;Äs±s€µ+âcë à›œÌÄTîò~âäGlÝ]£<;|פ+ÉVàUø§cg9ÁcíØUÕ ž‰¦.kúðúçj;wžç/Ùi>ç&õêqœ>*çʘvTÞ‡•,ºV'PØUBeöÃóÊÓÀ`³ìûN8VÉ+ý$zX¶5Ç£|Á7U%Ù˜tò‚P‹U±†õÌIE+YÊJ°¼¿š”Äm³ %ôQÎÙ$5žOê= ¶3äo˜ù_$ß)Êêd5ìÏ‚T. k`·,þ†Nà‘Œ¯ Yñ:³cá²¼Ø@äÒÎåN  Cü¾`{uåizEúJx†“‹X1`i·Ó±YÚm—±´[r¶|€.[$4‚åjò#–¡9Í b— ëÞ¡R2 i“‚w€KÓEBŽ_Bö²­DµŠç ¢|U?gãÀ‹¢—à^»!C©¨ü‡ÇEüA àô)Q•þ¦ ÍÀ¨¦zF^âoªBÂ.µîõ7q'@ƒ%kã…+'Õ-н émÁ`‡ž'Õ Òv ÊJŒUgC`)oŧ½6‘Œ ´CÕýƒ68K²mð0Ê»÷A5Ÿ¸©bæØS 8ìˆbºé§‹·•y(/šSÐuÀ"礇œêx²ò÷ªï"µÁ¯ÁAp\õ)À˜³ò<€±rÖFç,tIÊ Á;JŠÊÌÙµÀx,¹S²“…z½4tn Wu”륦ÆrNKj6ŠsSûIXë0"ÀZp™F‘>ù‘ˆA§üHÄ W~$bÐ-?1è—‰tÌD zæG"}é#ƒnö™ˆAüHÄPJ1螉úCŸÃ2¨%bÐC?1袉ôÑD :éG"½ô3ƒnú‘ˆ¡+åütÔD :zG"]õ3ƒŽí{¤³~$bÐ[?1è®·D ºëG"Ýõ–ˆA?¼%bÐ]o‰úÍ6Ýõ#ƒcKÄ —Ó1è®·D ºëÛô.‰ô†Z"ŸÊ1è®·D úI-DIwýHÄà:Y"]¨–ˆA¿¹%bУn‰\鑈A?¼%b¡‰J”ºyºëG"† žüt×["†Ì.¶é®·D y$KÄ »¾ ·þ’ˆ!ë·é®·D YýPw}ný%ƒîzKÄ »Þ1èÀ‰t×["Ýõ–ˆA¸%bÐ]o‰t×D ºë-”Iÿº%bÐón‰ôÉ["†–ˆ¡T™îzKÄá4ƒîzKÄ »~$bp®–ˆ! …šˆÁ§µD ºëëˆU­‰ÜÈ–ˆÁ j‰|g–ˆÁ½VGxjMÄ »~$b( `ù,wýà¢JlY1豉ô•ŽD úìg"ö#ƒ.Û‘ˆA·ýHÄ ß~$bÐq?1蹉ôRD úîG"÷#ƒÞû™ˆÁU‰t¤D :ðG"F­k"]ó3ƒ>ü‘ˆa_ƃK†±ÎuMÄàí-ƒ3³D úñ-ƒ~|KÄ $bÐo‰ôã["WÈ1j]1èljôã["ýøÆåèÇ·D úñ-ƒ~ü‘ˆA?¾%bÐo‰ôã["7ª%bÐ?1¸),ƒ~|KÄ ß1èÇ·D úñG"ýømf"÷¦%bÐo‰ôãD îvKÄ ÃÙ1芶D úñ-ƒ~ü‘ˆAo¶%bÐo‰ôã["Ýá–ˆA?þHÄ ¿ ÿ’ˆA_»%bÐ o‰ôãD zë-C‰’"O?¾%bÈØ–ˆA?¾%bÐo‰œ¸%bÐo‰|ò‘ˆA?¾%bpñ,ƒËj‰ôã["†`vŽD #?+Ã9ŒˆCé«C¯[ Œ¨òÕ‘¢±BQá«CÃ[ Œ¨î„3ƒ0¢Î6 Œ¨Ý„‘–s°@ɼEøW#ªyaD-Ï Œ¨ä„u<ƒ0¢Š7 Œ¨á„‘,ÊfŠáaDÅÀ Œ¨Ý #ªAçAÝÎ Œ¨Ú„5;ƒ0¢f7 Œ¨Ù„U6ƒ0¢fgFòMµ ­FÔ- ˆÑ Œ¨Ù„5;ƒ0âˆ‚Ó ŒøHaDÍÎ Œ(R õƒšÝ€0â„¥­AqbaDåË Œ¸Æˆ*›A)¡9u0RÂ2…V#\!Œä¶±NýÜ Œ¨Ù„‘<’AQ³3#jvelñˆšAÉê„5;ƒ0¢fgFÔì ˆšAQ×FÔì ˆšAQ[2#jvaDÍn@Q³3tªbaD%Í Œ¨¾„‘¶Êa¤?²œŠˆšAQ³Fœ«A ¸Bñi ˆšAQ³FÜÈaÄ jF|gaĽfFÔì„5»a$yV?a$ U¥qèuaDµÎ Œ(9ëÈ×X!Œ¨Ó„¥w1ôˆ AQŸFTç ˆºJêÛ„0¢.gFTå„õ%ƒ0¢&5ºãÔÂˆâÆ Œ¨š #*qa¤_ùõºeƒ0¢7 Œx[ƒ0℠ˆ œAQ°„¸aDÎ Œ¨À„Å Œ¨ÀFu…0¢gFTàŒ™Q3#*paDn@Q3#*paDÎ Œ¨À„¸aÄ-`FTà ˆ ÜèU#*pˆ \fÁaÄm8zZ•ˆ Ü€0â®6#jaDdôß* „¸aD5Æ Œ¨À„8ƒ0¢dFTà„8cRTà ˆJ–AQý2#*pˆjšA)a$ „‘Ž`S]!Œ¨À„8ƒ0âÄ Âˆ œAñÉ„8ƒ0ââ塦-FTàòHÑ8€022}Žg…FL.Ž|Ù¥ž œUÀSðTàâHž]*à©ÀY<5.«€ç!ðÔÙ¬^ ?8«€—¹:¸QOÎ*à©ÀY<¸8|mK<¸QOÎ*àeQ¶88«€§ü· x*p£žÚŽUƒR³ x*pVOÎ*à©À x*paȰ¥ž œUÀë7¾-„[8«€§Ü C -ðä}VO…dTÀS>Z¼*à©ÀY<Ï|Ù¥ž œUÀKS™QodúV}ÞÜ'û¼rÙdHš&õYt(}Ž)×_¥Ïû•‡²#Õ ýWAò>Ö”–ëìW2Æk¿ú›½ºÙ?|ÿ_ïnNoÎÏ‘qÇþ<ïÏÎwVfæìÍ®ÿÐ}ïúwGÇ¿?ÑA.‘wü|~þ)fýÁ ÛOòl&žºúWÎ$UïåLÂÁ ëXót6¼i5#'ˆo„¦ÎÉe$>¿«’ÒvXúAEôN(ÒzK a•zY»üóó!úÕGﯯ>|8}¼Ü1äÁ¤“q’% ÈgIL“k^ù 6K3¿9ÎuŸÑn‡; ¢4âãC`|³ì@I[?½¿¿ûñrzv˜u0Å·\§%·×‘w¾¼¸?}ÒÑ;~κ¸˜"D~“V‹…=æEOˆ™éÅW# az‡‚é¡êec´Ãå‘^s)Êúôûl´QÒ›èÙ\î{0£eßh‘à-IP"¸H("ÑZD>eŠâ7ˆp¿¥,òC"³0°ê76ÚóE"ïØJš‹”RÚÞ¸Hs=¼ïÁôæ$¾Õ"ÑM•ªÜ¾fIÒ—+ª'ñÆ%ê; ²8íÛ˜l‘$á—‹Äv6c‘”y¼i‘æzp߃éÍI|«Eb6D7Vnô„YNÏ^ qnᦾ©CÛ¾iýñíµãVêzÜZ(o=n‡s]ï{0£eßf‘ ÎnNè˜Ì? $’:oxÙ«D Ëa[¾yɲkR‚òlÇLx+Ó~6×—÷=˜Þ·dÜ1e7‰„-’ñ$¹ìU“MÖäqŒöÚ"ñª±HoçI‡s}y߃éÉ$¾á"1¬h‹4bŒ$Òrã׉Àèã2Yàå"‰>c‹ôvžt8×—÷=˜^ùÖ‹ÔÖãÖÖãÖÖ-ü:ɶuÛ·O·vpÜÚ—·¶·ÃûLï7(ºØ¨Iôa6ˆÒ’“ MS–ü\ö!OQ[„ÈG—dÃe´g‹Ô1žÔ‡žÝ®?‘žÏu½ïÁŒ–I|›Ô@ÕU; ÙwV¯¸¡²K€)ú7ÄcÐTªC¢Ée|‰s´×Éx’Ø#Ù½õ¸=›ëz߃-“øV‹ÔX§QIJBMœ*V¥úôeré%’ÓâƒÎÏF{m‘Œ'É"¿½y‘æ\Ÿß÷`zsßè¸y¦¸´ÀE‚Û¾tnኈlRóìMJÎ V0V½lŒöÚ"µƒãVê›ÛÁ\î{8£9‰ÏY¤—>ÿéwþÃÃ?Þžíîv—w?~8½Øï~õ«½?½ºÞwSþÿùw}ž¿êWüÃÝû7ûÛÇÝÑßa„û÷W§×>ÀUNÇ!OÞç_Ÿ„xôîø®Nû,nN<ˆ»ó“‹ãÇË}ÿïÍÉíîøãõãÕ÷ûû¸¿=¹=~ìcõoî÷Ø\¼ÝßÈû_ø³Óþ¿‡ý‡ÓûÓÇ»û“ýñ‡û»ë»Û‹ýÙÉîòøÝéû~íŸN8ä"=ŸßßÝœœñgïïNïöøQŸÊ‡Ë“«ã³«‡Çû«wûÏ/Oßßß=<œìÎŽÏï>Þ÷¯ûØ'÷Çï÷w÷ýgwýWýZ™ÛýÉù³18ò˜@ß|¡ô üóíûýÉŸôq׋/útoñÌæüø ¿ûxuýØÿå¼÷;þîj¹/þ®8í½—µ¹?½¾ú÷>âùñŸ;¹¿¸º»•) Hì Ç—p…Uìwé·ì§ ¿ÿ³þPýÒ«ã½üð©Ñ—öñêýU?'W·'»ƒUøá$…>ÐßËx‡¯ìüøwÿ¹ÏéîÃãÕÍÕ¿÷ŸÛ$PÏðtüþô¶¿‡~Û[¾ë î½Ò箯ޟê_ÁXÿ|¶÷ð‡Yàg-ëqÕ—÷òø·—w×û‡?aËÒ(¯Â(û¿¼ßÀS?ô½ÞåWç¿<^wKÖMƒ»ÇYÀêôGCbDDN?-Wý`uÁûýcÅnß÷? ?„:úÝ]Á]2ô? ®ÿáOÇ^ÿcÜéOƒ²Ÿü¦o¨ËãÁ°emú±¡*ñ›6ûaì2Ǿÿ æzö‰SAqz>NŃ“+pÙë7õbü÷øç7S^_Îc²×ôÙ×éÅÝ-D@g®·ï¯?žíÏúC`I*O&//¯îÁÑô “ÁŸso.¬…+¼³û=\žrÈôìˆï¯»ˆ¹•}Ôÿv¿ßÿm±}½ÿx¿¿}ÿ${ Q÷=pzÁ•¯¯÷à4w×½¾h7¼¼º¸$Ó85ŽÒ¹ôËû¿{wwŠGVݵ¦ûÇþäg«Ë)œ,¾²t§ã›ýéô"(Áƒ–'W¹æÁŸTð‘1bæýèwÁ™:h×`TK:ëzVÚ½ÃK»õ>(*”9 ÙP]µ«Sõ»åêÓ¿œx`>­WËžë€ùƒìør„.“Ø kü¦Kò»GÙ¯DŒ¥ ísìØçsÅS|ó6\¿á ÷ºƒËÜw´«‘—ûþZÀJ:GX¶#_…ï;mGf=NÅorW;=Sö\qÜë'y=ßÉ”xWyº€zŽ` Žvv-‚'¡q´*ßvït&ïºÜê‚ô;a¼û¿|è7| 9ÅKƒú)|NU6]ù[7Á~߷ϯºÁêÊî_÷ÿÛ?\½½—yõýhwº\¸%VajÛû“~ðãå7NÂ"(ú±}![ø”öÅÇ~ 2ž–õø¡sÝß÷Ãó°»â~Þ'£ïå_öïU‡«Ý !ÞOÇM¿ï@»Wˆàâ²ÿ‰ËnMŠ||¼r]êÝ\ë.C®.ºlûN̥΢0añ3µþa×wÚõÕ;ÝiT\Ne; üô…î²ãìéöô†:t¿ôþô^Å@·k“éÃŒÇÿòÛþ×ßþÏ5@]†ð…œ©³øÿ¬ûýý®ßG¢¿üxû0ÔíiGËBVTL;@‡$½nÅ>òµ]‹Ø¿–-ôLg{°5“=gÐÊ“]ÿ^š¾*нœ> ÄÑÁÓøpÜõ¿ïø ÿŸ¿¿¾¾{rv4Ÿƒz÷ØI\Aà¦<‘%R=¹»¥‰.bZ¶àÕõé»kSmæÉø­l¹qðìÓÚy¼º¦{ªòòŠúI#\ŒSv1D'—8y]ª}À¨b—ÛP¾ûpúoq·¿ÿý?a3<ëÆ¸Ä ëœâãûþ¦„/‡æ¼‹=¼½Óþ÷¾¿ƒ÷ ²•·÷¨0Q­2èvO÷é8tO{œ{š.;K»º'ÃÉ}·}ߟb#ë›×¹{x¸ÂJ^¨ &·¥xµ<§€ú‘½ö<ÂÍ_ýû^8|ß]B* ÷`ổ…}Š…;ù1€“xƒÿv{}Eó®sƒé®‡þŸý0÷÷àÎßQ;þ¨=Îgî²áÊLŠCÑÀ{¦Þ‹ ŠÍË®^cWÃÖ8éÚíñû æ¼éÛñúâŽfq}ŽÌsõû¨ãƒÑq¥JàŽˆÅ³ÓÞ#T±G<ûΟìyÆyíóý£è;¹FæÛOà-ß’0:ä÷§ãºçÝæ7Ô„-ü·ÇÝýŸºy†÷*ºáݾõû#Ñõ¦ç¿[Jïé^ƒ¦ ëIÃ#”ç®irËp‹PHâÕˆ'¶åÉÑåìQ€÷Súí^ó;õaúî8»n¢ ¡óƒ•‰ì|Êš–øß…žñ·ÿu;“¡Òý^)ê!ÛÖ-Tú6Ïd‹žRO}Åy »[²+Ítþ¥_¢žÈ×®‹árêà §§êûr4ßÙcѧÔ*?ô7èõTŠSJªý®ŸÏ‡þ>wæ^ÄxØîƒiÈS‰r8†ôïÆƒ]¯wÈú†»zpúîÊ”^3»>q¶üÙÌ’@¹~=ö('qNgØ55¤n‹Ê<æbî—„ýý÷"ØJ[ŸŽU…åX¸§F†¹°–spH$,ÆqXߨýž*Y³©I|¸>å¿ÿ/¿ý§þÍ?aû¿ÃïÿòþúãÃboAÐrRÈ7î Áõc·ºaÇi™‹éæT]ŒzXOÿdÞþ€¨ÎÃìßýxiÂû¾#D–¥“‚êÇ­KLæ{ùãºN‘þ5ö ßd+}E\ŠñÐ ï€øÐNßuÉÔÎSª;©núË„b=ÝÓqì±$ä:õ’ݪk–æ‚yÉú•ï‡ëMŸ±?‚½òs¦+,YDü“ˆùŠrY”Ñ™.DÃÞQÅ6ÉôؘìP6Þ÷âUÚ½%ëæ1õO¨ì{©¨Ð}&¹’‰týß^ckܽ›«¿¦Õï?¸½†~¬®^0ÓÎáº$¾zÄòpµöÙÈ9â+¹Îó6®¾á&~>{—TfYz¨úftäûýt(ê‘ ¶xzöÇ® #rq¾ê™’ô°“XË{þ‰MlTÑäøÓrš?˜ß[o,¬swypÿEy¼BhâöÁ¢,s6p3<<>üú$ÕliÙhØáÊ‚üH<‘D¾ý©mõ¬îÿ"“«Uœ›§·Wn«îzÉ{™OGt_¾ü+îƒ[ð½ÜÝÓIqõC—Ú%©ªL¾Ê›„,«'{Ñ€¡¡÷W` ê~ßyÍ^Un9nw3þ@Ùõànɳ¢=„ݧ³Uc[¤ëÙXà¾]Mè϶£¿õmO²#ë’@fv»Ÿ"ôâuÕc7-ÉË;8,.>¦34¯_¯ì&@h¼ØMß=óÓKòDZ®õ]t½ëáØ ﯫ˜gZ"8L:ÑG¹Ðš_i½ÙnYâÉTMå{á¢ýø:¬…±+g;|ü?HHà~ZšÐÓ Ýûû|qýîöݽxǯT6Mç<Ÿìo™É'[Ý£“â“Õ«[œä šGØÙ\ýŽoaÓã¾³ ƒ¼Åýã)}ª}×ýåôæÃõþ'r…2n¢óŠ›ŸãÌì‹A6„T1ø;õS97¶ÁãÃiöµ8½½Pv#ΫÍXÜŽO>ìWÅopÊ_÷Q· žµß;LX¼s·ÈW;½=½¾»¸û¨Y‡töúÂØ°Œt}÷þ¶OÞö#Yb¾=]¯óã }=ãËed_\¾¶qú ¿¾{wúš¤»ÔL¯×„—*п´ì†³¹ðÜîWësóµãI÷Ï_ÍÕ³7£Ó9?¦Y÷‚ ]R‚ãìõ'ïÚÙý]WÚOé"Ÿwõ;d^_«¶Šeƒœ]'Ûÿ ÕÒzÎEIEŠËà_}ψŸø¹Tï}ü‰©Î—w3sÌ'8™_Ú³¢”%¾ŽWwæîâY zŠö•EòIÌA±èÒš[5v–8Ò%^}GmãH_6×'_×îð}I$`Ø/篋 {a‡3 ¢ýG{7‡wÕèE¡›{Øé9<§è>ØÅú~ 1Ô"Á1€6,—ÚL–wF”xïåAGsY\÷çþP:¥¡ˆœøæ5ÛxS™˜N/$Ø6¦*bîÓD±»_¾z÷U1¢û³5„ø,Æ;ý3âÙ¾cÑkºÜdÛŠÜA®&–χ|þo©0KÎâå0ÜÎÁÂv¢R]Ššä—K ¶+7>Šð×ío'ÏwêˆüßW‹ì ? ž»¶¸¨± ú’üSßdüÑny5Ì¡ƒ¸ðM·->¨—V šÝÔ£¡ùiZL´ŒMý"“´ø*_Ѻ©ÄÁôç«û»[³M¿£öвä1ÈË ‰óx5½úWêy刻[®›¸“ÄŠ Óq³üiÝ[º¥ ý®n®°ÿÊÎLž¾õ˱þÃ¥ÿ[&l¾¿ƒ·ô7“+¨“kwü?\ƒwç;á€Ö@ö`_ų½Ù—H³‚œ}uÃäü³«‹~ð»Ñ‚Cù÷bªŒÛóƒ-Ëï®n—Dæ+Æä˜èÀDlVI¹™Ö¢„.˜ÁO1Ò¿Ìë>Gà ÷2ðÓë4úå%^NåbgÎ$µìo.±‹P5¾?œEÌ2 ÷³p‡³À¸oϺØäLvëT^.Êùð¡›×X¢Òn™Êßj^lçapñŽïûQùîä…$QWÖN<%«ï™q8Íù¦{oI3Åòo™“ÉwÇ·§‘·¨¹çwòÃ+I‡?}xè›üɾ.Ô7¯™+_SU`2L*ïÓ]$œðݸ1¯ÿ_!ÿxŒ‚©Ó€&«<îQ¢GÏ”é8妼Ñ•éAtž-qCSÑZ×ñb® óOÑíÅÐŒO/s=ÈþÖøê"{]’D)Þù‰²ü£>3‡²È]•ך4ÅÍq!™}’t¿Ó×~x²"÷ŸÆnҬūs†¼`‡Ä˜ïLwœÓ–\ƒ¹õ¯þ¬þêÅýáî»ä º¾.›<éEz}Ððî’£Žˆ†¿¿Kn¸½¼æ‘;$ÓøKÖîšR|vÁsqEmw} ‰æ12T6“`8Ñφá-9Âæî°]†t,Ã’wJÅFòGß_'¶éÅ•FŽvçËÚIR×t'/g^CP%‰ÿOvjÍ)¿;Ÿé—«/혅*ð¼i•Ã?ËvXo;ùÎn&FŽ{ÏL•Ÿ\Z"¨ÌV²ò '¬Òbe/{èbêO—Ï5ÛžÌÄ9;.`T—Ü>#›RUâïñª^ì(›¯-;D¨VËöê¹g`zß¿—gàñ^3$XXöÑ^ˆVº@Æ)Ï\WQ\h”,ç»g¢Ålï$Mdûár 0§‘,wÔz‰ž¹þ«¸þ“G[ÿÿç®ÿï?\ÿhFb…ëÿâØŸ€:Ø“«qÄ7þ-ѽZû´}”?P]ýN~%/Æ0lÝþ—]a.²q™ïæx%ðñ÷óãÔÿhBãïAü=c”þ÷ÀqШáÿÇÜ¿v9r‰¢ègç¯àxoŸaÍTwgùÔlŸë–ÔíéµdKÇ’=³¯å5‹E&ɬf‘e’¥î²öü÷/d²^¤Îº3r5Af ˆwÈŽ?˜ *‚…€ß»†ŸÀ/’fz$šËhEPÓkìT@)øY7΃A‘nð„0ðv_ñò¥ŸnÉ  Ÿ¾G•‰ 9éT_\”¤©æ=§ïÃá䉗¦‡–CïœÂ:x%jPº´ƒ¹‡ôŒ}­Â¾eéèå2—âRÜi¾sÆ^v$ÌÄ£¸ôÖõhÄGÿ³ÍÅn,>w씊eƒÈ¢þv%.‘Šb{#òÌ[ífìó.Ô£oÚ•mÒ^’Ó™[9Ž@Ò1NìèGØà¤²v:$‹°Ç(6.€}A^‘€:ÒAL ‡ÍÛ–…:8﬉‹K`Âzs»'gHqòC²·ÛÐ]:ÿù{±?ν¾U´ä$Û‘ü&š(¾’Èê[}œù@¬sìµx‘å$ ƒÜ»B”ü5˹†¨ùááÏòÊíæ–F½1’7Ð_ƒ»cÉu\iÜ·7®í7‹vÏÑ7祼ƒ…XQ„Þnɾ²ÀÂöˆžÀü€ì—ãR]ôÊ`ä=šr„}[ƒË”‡ÙoÛ ¹žÜxÙr²ûèñpþ(6A¸d»5ʽ¬sjda"£æäZtéw;I\›p/îötyÌÝÃò¿˨›‚ È ½Œ¶3´â>èúæe-JrùܱÁŒ%,™G±W3Øñ­Ëýi '®…»—Åæ$ 5§…òÎ+I`XXm“ºÈ«ÜëúûVT$Ù‹û’0‚»àd¡ý;¼#\· ®pÎMí¢ÀÇéd¼Jó²z%yâ¸Y]1TâWà¸l?,ËŸ!Dµ¤êZygròmÈýã-zµíÚ9áõ+§ðkW·Œh/嘈dyÿ)…H.ÁeH %æ·Ý+ö{ÉçfÍ.˜äþá‘lé°¬£ˆmr5˜Ì÷mð –!/f íõkö¡áQ¼‚&;¯ ð=¬È·ÌG“ËHs@+Ñ•O'"û°fм?$æò£Ó4Kê­sȪ{½ãÖÇDß±E~KTe×*Öy.0ãHˆUMúæ°%Ñ>ô—DC® èÚÆÊÂ[SùšTáw¬Wëâ"×$ñ¼çsñƒQ¶\ :1 ‰öí/Ê¿‰NÊ"µçÝ1#®ýL–Žr:ꞃBgÚG,>f—|#Î{\¶Ølß±µDÆ¡­D´!@r+ýùÇš$P“yÐI.‡|Æ´/)ù³#WŒö[%>ºËq#б‚BvÞm·dºA± }×Ñ“@Lâ|’Ñ=ê’(°;¦LWüÈeñæw¤Ú$¿éÕd­6Å`À»‰4QÄR’‡žÁ;M… ¶2!÷ÈÝQˆµÜîÈ,•w§Dȹ½$wŒÕdïØˆE@ïÁº?L!+Å(fÇ;Õ¼~ý е7r÷â!u“JŽé¤ïvrt.Å鉅:žÃ6ø< NŸ H–D ¢«)ÈÇߢ<Úy§ë"̆"D‰ Ï{XÙ¹à QÅq”Jz<¯«›ˆK'5IË~Š3û¬wð9µ´êìfÛöÀ|I‘**v “]#};Eí<²s-C/óñ¾C÷g:ZQŒÔXóKÇH,˜wLz$z÷Ñ“Za(æŽÇ™®v(ô*B—´Žip&ôÂVÊ­ê4Äç7QtcANЉx‰ˆI÷æ¶C0o]*ÅÊ ¢¹E`Õ EÆx›ÐŒfÁÁ”8†¤9çtÍïZ6æÐá[ÈÂJÄn7¿,·Cì"1ãœ&ÁŒ•7uÁ–®…œKV¾K@½uB‰‹‘Á öñ`²ÍdÒ€ç@|ið*þž½(n8†Ý‹h• ?×À)ìÆ>‡†K«$sµûIÏ5¿'£?«[Ä}vîQË!Õt…wÙ”ctÚõ+•“”'ž¥û=gdfïfN%§ý‰è¡üyè‘j(þPuªÉÄëŒõ=×å`šÂÓˆoÞ¾¥¨g¸þ„WçF¨¬øÈ,â/I0€_1º¦%î’È&ð 8ï»eurS]Ö=®I´Ú¬ÛÚy¹†Ž_HRAdÞy4ìOñ×Þ£¤\V v+0Å;kAÿý1ÕêDÄ6£p²`{ýUÂËNg>¸µ8ìq‚PNÙzp]o\œhQR¼"É–1¬©j9©Ñ„cá7ŠÒ¹këÇ4//ÚŽG$áÃ2ŠÏëŠ3"¥É¢xðb¤új⦠ú›ôT_µ ‡qÓÎÇCÌ̶xµò%Iõa® •¸m»-çaz#ñ!÷é’ù6Ýn; wcoWÌ5Ry/vŸ9eMäêñ¥ˆ8³v>ì»tq‹qˆÒòm¤Â¥ˆ²e‰Øhœ*VÇ*Ÿ×NÒ‚JzÃA;k¿ßŽ3Þ¬£$Ë>æµNƒ!ù|ê•’ö6ÅjÉ^°^ÐCÇÛȵ7ÕÚ~–EÉô†’5[± +æyïNvV¸=^³èÏ$ Ž^ñ– ï «mdè~6Cê<Âò€b¢Ý©ÙU©zë B|ì|0–»rñ} ˆÄ˜ÌÅ¿eüó17Q8séTeÛh[œ»º_¾%«©”£ë„D^>ŠÏ¯SvhBp{‘±[Ô—ã?µÀ›OQñˆ—iì!ü !AÒîœ]AL‰Þ³épÏá±k}~ñK ›:g‹*í;Ù-¯Õ¾‹„1Òêi?|}&qê9çîàIn‡&‰=ÒÒ›¦B]<wë5"]€RãñÚl'ëá‚!\U%ÄÓôŠ¢ô¦µcË#*7ÕäÑ©Ž2,Oá§ú §Ê6̯;@÷-b¨PBk11ÇÌ;p(^Iw[ä;…g¼òù榞~ÝL:ŽCñn4¿š4ïþØÌ4w€GêØ<ŒÒ ݆{ÃãÓ — \V¸`<?ɲ9È ¸Åy|¤ô¶È–L”Dá—øÏ‹S3Ì€¯›ð¤@ä8Ð ¯“’ë0‰·Š+6Û.ø8[¶çØ8†>öÒ‹"açÌ4J„P\³Dš#šGþLL›x­.9Ü£uƒÈmâ9žÎ¯± +#H ÙhDô"Åu8kQF³ q¶=¿i²)&Ψx$›ú"^9ê¿޵¢-K¼¯!⩱ä¦L £\(GÀ 2 Þ³ÖãˆB* ´õ&h–æ–*FÄ_mÑŸ,w†¼‡]Á~˜±e!TZk.nÑãÜÈ @ò™ºYžB¸ €¡¥ wâ"tæ©hKÒ_¢:‡“†Üssñ$"(¶HPi›ˆ³•aKëüÍfºbE¥Ðhbä‚3ÄܽPƒø 05ù|ª qvEâpéïgáÌÜŠ^m7+·mSf>Òá“Röσ¿íçÔSâ{rö&8ï8‹É4¢&u©>\j2ë YZ"ùz )œN8ÅãZ¡äÕ–÷ÿx'¶£äT+Vø«†+'q³}%*mŽX&aÚEþh2+±£ëp}Œò;MU´5ÔQâ÷†˜–WrºFz›š+–Ó,!î}v„„i÷|½ûæUÁ¹îýœ©ºã ÎX·«ŒˆäFÞ(ý”I?愎í¦Ç,)F^çÜ_lHÞXbSQkU†$ÎŲN^ÍbXͼ¶ÍÄø-éÕ¢ì„ ¬‘:å{ç?Ö9+‘ÎD‚)ª^——Q>Ry+ñ[ $%o‚îП$ió.˵­èÌ+H‰f 6õ5ó2œÃMB.ˆÎÛ epÁ¤“œ¶r×—¿\’?““S´ò-ïmM瘣PÈÑwÂÁ¤ÞDíBJw|‚)"Š]Þ”\²p¦7âPk÷ß%'Át•’È; u%:˜á€{ai;6ál¶{ÎÍI ‘øJÐ[¿CÄÚuŸÅ ’ŠÁ¿p•Y–JÞEܸÄã3ÇÔ+”á%6Nã¥H®F˜Vþ^YÙ,IÕ˜7w»Ê‘òÈÙ9J™È–¬‡‹g÷ŽN 8¼ù2J»A§A©®%±«%gtÛjÇígØ„”B\µ 'v–ĤÞ°ø‡£sògÇ/ÿènÙåÕúdô ¯\ýÃhê-DÞ1jî^rHá_\ýX+OXÝ›ô-«^3qãÃøl—%ô6w¯yØøl`ýÅ ,ó\ÛãàK!ƒÊWÁ ˆµïehàÔkÎ_]¸›LLžhëŸ;‰[üCylÀÄ _Ìcµ-¼‡†ØÀÎg Š%)-j):å»ãÜkºu?wþ*hNÀœ¢MY¢¢=£ã®X'*ÓhŒe/•Éø‹|¬§±ï`âBy9àB!F~ãgÎ#P›øÜ]’£!ÚʱsÖ‘““x!² øTß*>^òµ ŽÌjˆ‘Y\f.OAðQ²`çgézáLµñ2²òÌJZ‰ ÛŒ<‘mJlë\¢åÄlLéöíµVË0¿7a™èöø1зNüÃ'+²R4QçÁ](2*xÓ\òî¹-g˜ãÀ’G+ÅZ 6ÝüDäFé¿ÉåȱáŽZbÙ§v:LH2O¼¹KÌUD)Û¨6ÓˆÊøé+}ÚS±ª±ú!ê˜AHRcqŠÁdç\ŒkFñ•³Ðùjxª:¡ÄXá*‡# B[IêâÀóæ@&ïùÕ&b™nC®†Òe|+)“Õ÷L¿./*çó\VÉ•ï ó¶+ve|ÿ9sˆŸ³B«··ôd„Êy®p’Ѳdæ‚ v”ÆÑâé])=|½ØÎñ˜qëóý?°µÿø}nhóñ+þ†ÿIƯþ€À½¢´kðàëíÈ;~%9?cŽe *kΚù4¸{bj7«ÍâÞÓ”E»¹&é>`Éë‰í#Ôe¥¡Üc^‚.–yîs•Îû -‚ÓÕ<(c‘ îxI§;¸Â‘€…PnÖàÿZ|oÔåLĈtRÞÍkî̱k”·ÈŒ2få³¥u™Š”§<åehRÇJ[²X&Wlp¿Y–“CÞßpøÁlIÔ.0yt–rúò»ñ÷÷ëÍíŽ5If¬( ¸<8å¿âÄþ.«s‹og#zÖ”£<ùi”üløÅjŒ{Àozà/ Áo"³^v–d˜ëÏ=›Â³ÀÚCGèót‹V²èG§«KBGœv;2h—Öcb¤M·X«» Ÿ’ Åh ‹e¯u?@i €VsímŒI_v=ea–ëPNq ŒZÏÚ¤DN)1´/ËüÈôj%÷‰_ÕQ™£[1|Ãä–ó`5 kcB`}"Hëæó‚sPîHˆž ÞÅI_ AQK\†Á%†ÙJúXçÌx·ãh!õlâ‡`0¤ùƒ³ (&GdêŒÇ¬fsï0Áq xð¼ç©¢ÉVô˜äª!eåëî'«qn…K‰í±¨‹j“|&ZEXs¼#G6Ò^ 4Kï:À·­¨¤sÊ6 ‘ãOxá@›÷²8î‚s•BîÃt–Qhܶ¶¤ù–ô&!3Š@Fp”j@×±†–Nš»t϶ýmr‰ø—ÁGg~ !VW̃8Ð9p"²UENäƒÙçç{Sq6Ùõø«‹šœx+ë3Þ/8k?yŠ,Q4ß‘’40ip»¼6^+ƒ:KóýâJ“•ÏÏL/‹šr (€ñQÊñW›R‰– –^…& ö§ Žô6ršv¡ªIûyÙ]‘ ‡eõÔ5$hÐŒ8œƒõ]º…qÍŽb¶\(rÈ¥2 _r\fëãH‡L{c Õ-ñÔ†1C{Ð06fÏ(Q€»-¥ÛÄ´Uíøªó9Q%TÉaxó¯ÖrÜ/ÆcòL­A——ÃË"¸ê‘e¡_©Khœ"W@íÚý’Ä3Ï…<¥¼sq/4÷œÒïÄY„‰‘ì…Ú ÊçÀ§»DlO0©‘öVþ;âpá ½Ð¿(ëè^òw‰Û@».Û‚NjM3‘œ­–ùª@ eç“,©¼µÎlfËŠ%BîCbtçm”ðŽdñI}&+tËaóà‘Ä ·Ä(¸˜~6¡&¶¢“( ØQD2R®ºö.Ê¿H9Q­Dß.„`MæBܧÄ_)žŸ¾˜²nÁÝã*I’Êù¾uöN"KR£3Äxñ*ì`ë^·Ùêd·MÎ> e¯Ãe¬Ô”쳌xáük^³9Û¥¢)Ü0\êi‰là bÓ$82:ðΧH®®éÝnOi¹|‹$("#½mèRu¥²4›‡Ù/ñç./Ëܫܮ²xHŠÃD$óyÏê‹J/=åšùgŠ)C„Êm™G1eˈq)io·’:Aéóv-‡`æ“õ.ÄóŠS{¸~ÐR²ÞþÃÒÉØ9žëñ-3)Þ¦Ÿ²j14¡¹AÅ‚k£¼dènüm`ÝGT€œí¬¸2>Î$òêp 䔫|¾9ƒw»íg’z7ëØç’.Š%©ç]@::ôÝ 3Bãs bˆSÀÔ6’‚íóíŽ3 ¼¢¤ÖÛ³¯Þ±ý ·†»È$Ǥû #æ-Š7|✱œ‚ ñS"@âk…ó \I¾NjÒì8r‰#(zƒq¹È2!¿@HB ŒÝ_T&M c$ý÷íÞ—SÔÅ08¦{>¦/®&« ³ ¬+tôÙ÷yÊj“„+`ð!¬fo@@@1Þ²C‡tC«äœÛƒ=ΘWË^Sm&vd¡Ç=yˆCø„̈±`}- ¢uÈÅ·„~¸²é¯Eô@èØЭ]ÂvÉx'/&s¡VâÑMëOj¥Ðãß%õÈŽç]VTdìK§¼[K"[wÏ8lp$k(Ö\kì£.(y¬ôÉ—2€|×SúÔû ÒáõJ™„H8ߣò‰üÊœQr''4SçÃ9‘"Mp-ï€ú¢°’À„â'xÀj#âa.¦×´b¬óÁÔó¤ÚÕÙ籚Žc•©h E竪)¶ÔÒX”.TÝHTÕ 1gÐ$8BŸ6­iDayr-÷€¸T9eÎÕE–e¬Éy‡PLdÉ’à“TTRþ*ôM•­à¹×EÅ]ÿ=týݶû –p!“R基1«[9 sæ³BŠ©”ÏMÍZ{Çl8|[„{>¡‹žh*¡%»£¸Qxx7:\3ý’lÜc–6¢ŸÙ‡.ÿ¼®ø…ï&sR…+öw©ó½ôïpêØñƒüŒ³Ïœh‚o:cÌSØ ]+Àõ’d¬çµ*™÷ÂÇ¡1‰'ó@‰m‘L€Ž¶¼â ä%z8¡¡CF=Í]G‹>©q—tNÉ®ðZà›_q`è@2Kœc؉Û{q…„!C`°Zœm½.™“Od ü´cÛ ÃÅ<V¥’UïÕ’ ÄaÑ £BFÃU¾¨tQç²<É¿#ôþæeM.e"Þ‚xÏ|»®EÈœý2hˆšÌ£îd«ZV0Gý»OXÎd\Çy¹S€…ë—M8ÜuÇC„' iR¢ <&UT'ÃÃT£+È¢›†ÆÍ(rƒÐ€O‡0K§H=«ù~u ÓˆÇì«-/'&:¤nmS$žh]fìa±†r!§ÜÊy¥£0ÛÞùàÌdG˜A:p¦H)Ì”½Ž…f#dÁ18Xd…@¾Ú‰6ôêš'éyÉ? IšBQE{ÕrêN?D!ÆÚ¯(™ˆ×æá†eaÃý0k'Q%¢.ùñÇ»5ŸiSSÍFÝí¯{š1b/ÒgX[x1ÛÞl\ÂÞùA¶É÷Di½ÅH ™BÃõ™IEÇ9(ö*+0{®ð‘È~Äu»Q'W%?^hëŸöIr7cBW#q@\öÃØ1…¶i-·IHÿŸdz\ ånÚxv.¥ Ptßš´N¨×ŸŽöÚKÃÓëzŽ]#:à²Er¡µy!øõOÖàþcÃó Qt’ P¼Rq{+CJßy-~Þ¯~bÜý©Ý^Ñ™°×ÒájøW¢›k}> Žï÷o“9,*;Ö†^µ‹Ë'î"-0'·<ÜÎÚÈM> ÿXøí=od¨9ÖI–Åš1sél57ÜCBç•ÉlÎ9Þü+TÄXR÷Mu:dö-ÐwZ2>,èú/Œ­«b”§…Ü&nç(žZtõŠrõëEÄîv¸iyV¼Ò÷Þ4Qų‰x2\,/uF÷sPwFÍÝC0$7’ ÊK¢Ä“¹Ç?a¨ó4MúØX´táœh4˜hv-2eþa„ìDyU :w/½¡5’Ž­gJky휣ŸØ Ù9MèãvNoËJ` ÜÃiò ™¾Õ˜ë«“©³JG}ÍMs¶®C_ÊD‰þÞ…ÿeÈšFR²6¥™ÓyôMiìáMi…^ÜVãèÒ§Ý‹CHv·XÒžPkI£raŹÀ)²ØeÙ@ûZ#öµBÙ×ÖJnõ¥èEUákÉÒf¨$zÅg[@F–k¼ HmTs¡W5FeˆÉ.º¢Q! ¤xIœÀ± z«ÿƒ9©A¢øúÛ÷Ð㾕‚ ±¨l†ü#,üו-J˔苳NTÆûÄdÁé \“òb¹¹Ù,Úu»¹Û©ä¸<í¹Üì.]'©ôÃä1šbæsSph¯(T¤£399éÕ«ní+SI áÖig6àKŠS‡²:.Ï}µí攵ˆ˜Ød|ûÄ\¤Qcî2Á8{Ñ‚íEÎ\ÄjÆŠª³éˆäqæ!UÙ#zË~õù¹Ä_Æ6¡è¸¬Û¢ß5ÒYÇ£ãd9¨—9™ûûk–; \ÅÃ\E…ÏǵÙßÈkj=£uûj3(ùŠKgýÕRžXÌná«wÓØMŽþâœÒQ¸´`*^ºØØœ¼ŒÊE]ö|=Êž³PæœV›sÈO -Pî|Ì®ƒ†x:¾u‚*+ ýš¤ÌÖ׉QšÅ¿ë„ XucÅ€·ûb»¹»¥X>CH©0Y¿TI¡` >¿T™ nœë5Q)o˜r6W"[p¼èg†™»;žP6*èôã‘ Á¤—ü+ˆÉq¥tRr£ ã&,®©\‰VñšW&5L­äϼY›lÚPäè!‹M8H™M5–v&¡TT‘ô•Uyñ€Õ„~v7zl:IÈtB<Ét2l9Ižc:e5)ÕUõ¥Ä›N´+ôBó–‘édÞñ‚žé$d#­\®½!Y^\ëû¶“$(¯'‡òrë'ÈGP-û¾í$1”wé ¶“c¦“ä™¶“ÈtŒ’}²éd¤L'ÉsL'££¦“$ØN '\zÐvrÄt’˜2K«îɹ­¯º§ª-±*uˆèĺûÅê>9ÐÝ/‚Æ Äš°Þ½Ñ»/ A=P¼/|ŠuQ¼·‘¯î2Ö»'d‘E;kÈßÞ¡:¡ö€ò½¯{ªfåüQ%‰À)9â÷5•‹¡{¤¯œLÙ%13+_¢¡OTôzkœNãïA„}DE?¬¡Ož®¡ úÄæióB ½†+Ñ •¦OÔÐ(蓇4ô¶tAüŸCÇïÙÙâizb³«ºQªæäùªfàÔ1²]«š½ôXƒ(†?cEæ:òÅ̲Æ&ò“¾²H¤N­˜UÿƒA¥ì8Vœ’çI$ŸÚ4ãÜ=³Òþ'“ø!rY«½°Ê6Hè?\il/išWw7k†’$PÍ>Ãz,8)¬/ùæ´HÊ÷TG*‘ ä«Ö‡xï|Ö¦ |~)æ°—šÃN“s ™ã±‰ª3ÍŠB‘É‹F%á‘i w«À¿Ô”¾äq`åØdt·]³††´ypVt¡]‰ZŒy-O³g1OK"ËÜ¥ç$ï3w«-\î«JJά¢é!}çŒFΉ÷8¨ïëKSÀÍ«“Dv¤õ¿ö±¦Tþ: É y5z‹±8ô÷Äç ‚b¨Š–sÙœôú¹¸k­P¶EÔ uÓíD÷(œOÎNipÍZöJ×…ä¨rShW¨qrRg7.[áœúw²Ç…XAŸøŒä*½¹î‹°¬/™¨ôL À¬ÍàŠîà„sB‡»ƒ$[2—ÇB§,‘XÚÞ15¬&jr•Ùù3¹ê•~¨\ì(”‹ÕbÓø¤š.(ÎG…Dì½KÖq]þۻ´u;5{•0Ñç\ 7q‘6yÑéV=‰¹à òq'žO]Þód ö"2s¡1»;–ìØtQdM“Ü+¦‘ôÄÞ€|<¹‘â-£ÌµÎBÑú¤Z]âôV3qѰÞl´059©Ä›é”FEb…T¨kn[“¾vä-Œ²_CýÑrd1RöEö$ß)¹öˆ…1ç|õ‰ScÙ!5VÿõÕX9j²zj¬»aBJ%g”ðÅžg9LÄtxªå0 n/³Vöþ*’+q´¯-ýdׯÆ'âXò×È`}6ÀÐóÀh4½!ÐÀýH*ìc|ÀAëÝÞ˜+ˆ`Q'AûÀadäÞ‘s£PN4°¢¦–vuEÔÝñÂÉ8Tüܸ:ç¬bëSÓ/¸+§C¦ì%¡5˜Æ‹AÈ6I©œ —ì£b«¡$…C³¤—´’‹¶¸<åÎ;ç’ܺÜ'^÷èX¬§Mo\b†²FìÕí¤Ûîzþmú¦fî(¸1/ÿkىۘʓÁ”š\NL™Fa ×\£S{;5Æá©s>¶O8“Â=,£+Ÿ_¨XŒr¶V0µ­«®píIˆ íP«Ö¯_ã³´­°À4zNဵS_Õ‘Ì)[h]øAðçÂîÆyÓzsˆÎg¢Ò·¨‹4aG˜Š*øÃÄ4´K.3¿mJÉ(³ȩ̂Þc>&¬™º¥ÉØè¾JÞÎ0Fƒ–¢$þWJƒJ TX’¬Bߣ%Ïú0Ÿ>äTt)uš uñQÑ™eÌù;9l{u×­f¾hÄ"=˜­²¨'ƒõ§Ô±ÀD9lPÉ‘÷ƒzÒ³¨^bQOLêÁ¢n %Ñí[Ô“{Ü¢>zÜ¢ž˜‚½¤†ÐRCN½CáÛLald„n##ôò@áÙ´BÎëL‡å(2Ú¤Ù¸)l+תC¥ÃCFéÄ4:&× 2Eá·6cÿ‚^ø­µ!ü–ž-ò(þ6Ž… _HT¤(V˜©é[gý}(R4É0/²{ºoÚnTOæÑÈÛ¦tÓ #oá ç“"o5@qä­üÂN*ÀsD ö|³m½ýw™(ÒÚ[Ö —ƒ"2Äൌº2*èç!¬„ý¬.bRg9;­O®˜Õö Ë(­·öá ’›{lX6\ -ŠÊ[˜–áPøÍaÜ\–¹ŠWSÏS«ºÉÕ@ñŽHˆÓsÈãª6¹²›‰¦6^~EM†¥:ìP<ß. »t:91. ¨ì°#{VVuàꊾɃžìOTG%y²€Œ˜cú¨ä}’²_B.âÊwÌ}1±/±GoXr)0M1À'“k­ÇG‡I=yoÒ£¢¬ê9núßqÜLÈqÓw“{‹9HJÿ}6@åûž–FìŒIK|%D®îsk&~’.XÝóR15œ“'¹R©»Fitu¾AUD5>nœ~¡N—5œ—p"É 7&bÎù+HçÌ茕n/³§škl7°N$x’Oá%“v?}Í ÙimÑy e˜’˜ùª%²m‹‰‹1–8Šwú|í99q.V!<ËîoÎH›¤âP­t^•¸Ä›Î«#”•–${¸›‘û¬*Ø¡¯Òy¨P¡Ò(ˆ¼ŸW•䜦>$¶.«‡# ’ÇÌÒyššAJ‡ù7˧Rºÿï¹¡Š€/Ó¼ç6/ŸSÑ£tÉ ©CGõŠ«¦VR5õ›îj‹…]9§b–'¾*Y”É[òÆö zô–‰N‚ oÕZ†¬éhHÉBVU jîV4ŒÚQBU‰è_’v DºíævËÚgŸÝeçÄEŸxÕ]霼+YU«H)g‚KŽó»ØPhjCáLœØ]ÝîwÔáëÉEVò¾QoÃ÷‰z¢ÝÜ{$²ò“Ÿ‰‹Ï¶ŸÉlΪvUt£È(<ÜÕ]“âN}ë|ôæ\/L»  3n»û‚+‘ï(ë’³Ê[O4³Ã±|}†7d[L<‘Óžo]®"¶u¶0ô¶åÊyÝŠœ²¹¶;â|Á~¤;/g£BQ®lUdmqŒOC pHJp¥Õþ3;J也/ûÆ„ôXx üÜ:5µˆ,øl!s‡ò!]ˆŸ¨÷Sg­¯Ò×8¯þä^˜9ÔnÐ÷ßbßûb¨ÒF†ô…¯å/¾¨¼! _½é çëÉFé|8ÔAòáåIG²©Dn÷Xþ; „›py§0½ŽV¹è½½v ´!Ñ’öˆKOT2.±„j\uêÑAõ“²cb¹B…V{$;[‹Ÿà"LÐÕ_Wó#×zä»úµµCdÀŒƒFb1$fŠ\]ì”L–\ÇòZcsçüó89uj#P‰IOl’ƒäKžÒ(&a§ÀMH|ß§í—|û)óë“"’Ű¯Ý?ƒîbÄ‚½¤2¼s™¹¸Ð99õÀõÁ9úëÑ2Ê’åœð”*éæb\Xâ^»ýC{ñ*ãz¸Ð÷÷”<˜²hK<²wÃ[&ý{¤à¶4ü¬w ¶ÝÀ,Ú}wêB¸t¶/Nol)öÒ騰\†nWðTŸ8³¾(Ú—Ó®õ¦g¤é<ƒ+mîŠîúT>Î5+—8çÈ‘ÑJ ••K E¼¢„ÿ+ĆrG\B×mië ³õ1·‡P¥œÅ&“Ä©•/Bÿ')²d%ÐxÁiÿvc©ˆ,ÙðÑiêf,—½I«Èw}¯ÌÜKdªþÓ\`IÌùøíw.…4÷«Xµ^yüTkÈi:¸²¨Lt wq;¿á8^^³õaÝ1³ŠÀÑR‘¦ªK<ÍñÅé…´¸¼½RŽYÖÜçÔiÍ8 t” OªÌp¸ç¾ÂÊdÖ¯°b+äJÔ5 )z˜WŸ|éçL—XY5YûlJII’‹)̤P| ‹Stµa#ÒÀ4ÄvìBtbŒç¨‚PþIN·òõ»ñ0¸R‡$2|ýýWßþðÕ¿s&–‹'39é|÷ÿÿéÝÛ¯Ñ{À¥«!±VªHÆ.ÖÓ¸r$½SJ:ñ ç=¯aé©¿$¤r í&a2ì¦TZÙÝÑá¦kæ1Ü‘Ey½a9eòÎHqÛ—Iè‹`\u¾Áô½{Ì<¸^¨ŠÄädön…%ˆé†`ñJàq_†I‹é)Qzý‹Bb\É"Oô÷‚YS&Š^‘.1#„G9Õ¯¥òøµŒÂÏ.]eZÄžVŠ÷µ ¨$«Ñý {”Áe,Ld%¿æÿþæ‡ß}óîbJ ºË¯J¼{ZÇy(rIæ4Ó§¯3w\æþâÁU$l[oÖ‹BÉýÌÉ+*!⦭z¨0ÒbÛrÉl9´Q$HTÕüÅ䜸´¸4í@¾Ê%ÿm]Qx.b-ãµÅXç’»ì­m„$u¿ôÖv­­‚Ð áAZ›e¥³t¹Ê[·Ýê@.^ê;Îéqz§?êïø©œÇ(8Áyªä©),.D•®œÜ]ŸÂìÓð­! H/‹.ç2˜ùuwwÅ5"Pj ,3 sz ®ûC5®¦ÛÉŽ¼:è;Ê”Ëפ‘kò+‘ê­ jºîàJ‰ð\ LjE®’²É‰ê–l<Ýø+)$î|^Þ®$ǃÓÝ1¼‰J‚ÚSŒ”â`!~tÀ^¡bà3É¡dÁ^úÒP~m d‰ `ü¢øx%8‡XÊ'_ r¯MŒ‘ËÆêdC!s­Ûܹʡ7“YÕ!M\1N•Í•Ö[I¼Ißo®.pøëôsçMåùvÒ̤µÊôåU+Kòûçâtíë…xü»Z3,9½+îå~ã˜lW_jéÕ­ƒW£W.)!‹Z‡˜L= Î3vÊÖ×ÄÌ¥ídÇ5Ý/XDq@ ÙçÄùF"¬«Ú£÷Id'R}^J²4éóÝçÐçLuH«jH#:H‡ñ”™ú•T»¡+aÚ¶3ÔÙ»êl|\oÖ¯¤›èúBe3ç&ãš ´â‹«s“ÅÅô$ÛŠ+”AU¢&’éü±Îò,åw…:3îBM>ð:¢ª¹Wÿ íéT1T0·µ4³ö•(k e ’HnµÛ{qÙàNœ<º`$˜½ 1£±J rÍ›GòF]ˆùë€X²ºƒÍË‘Êþ¯Ý~Öm^/ÿoQ¢R‘.ÿÈbü¿àî“_“«¤~ýµ×¢. «^ KE²^¿~ÍÍ<Ãh|^¿ÿúši‹É,çyÏ&ûãç¨àäøý¸³)Ú¿\T_rïí~©ÕÈ­¡rk¨à¿¾f|ßI³ãøp@S ÊýÑÁæöäúnÏŒ?Žÿ/òÇ Àôú-`vJµÆ~¾(Ò\d8ÕÅøÍ¿À‚³gô8m2þ—7›Í^h,ñËšv žžÒ“n"Wcz! gH—éÅAš=î–Å7qϰÎ[¡ e:‡Øz¸¬){»ßr‘8ÌØw޳wÃ,Žrõmqõ¿ ÐûÜ-®è«Ü ¥Íc‹½70Â”È û•(2(M½çhÁ‘MŸqúÊÀS˜´â§E¿ÆòÂßÇû{t$mßÂÐÿ Q–äõ»Óùq:®@×Ež——¥.tÉTdx"ã€T‚ ð½g;üÿû»woáí¯~øðí/2IF på›/Ãjðî”5QW`ð®|ÁŠ˜ø,#*!¥±ê^7w(Á)âàhU Ú9Jo]]é$hˆ&º@ð{9{¯á‡ý”—þtD›+^¬XƒbðÆS±•3X® Ù¬£ŠãX­V;ÛN‚;÷WŠ»¥œ"Ê@D¡,27™IÍîí„Ï9kF¬8G|øãï~ÿîO@UÙ¾9Ù.ܦ»4e»ý†uö$x†[³È9zßµ«Y¤a;öÔnRÚ":>û-vg2í³aï¤ÏVdËAë¤Y'¶Â'0ö¾’ å}BËÅÖ'Ltêû¯¿ýó—ß¼ûîOï¾úð=žÛ YÃ/Åø9V§û­¨÷ˆìàŸ.³¹c˜Ø–dPS^ÁOô€±`Lr÷+ý5ÈÇúò‘­ÈöžeV*ï¤.1"Æ)ñ ŘúÊÉÞúÀkñÀš‘óh鶤Múê2С #%»úµdŒãùÄ&êTÎbŸÿå‘hBö]rNKsçÜòçu÷989#ê­ CC®}("Ô«SËU/g¼Ø,$-Ûʧ»ËtP"G®¹Ís^Í×TEòƒq"šs$Ó”Šºhgw>‡è"^IQ•¨ú‡ÎCðSD·œ1ŽI\Än7‘–'ÂútÍT×"“È ]ä0q¾•ºYå¸$YˆþŒ0WQ‘FV]´œR¨såÖµ$@(ÿòðBåß½^‹Ñý’ 7ðC±P•Zc¡º_ ›ðíwïþÈL”MOÖ{Çþ3d|å¼pN©c)W­'»ó¸ñ 3³Í˺…ë¾ÛuJõˆ¬" *AjÆì‰+g>ݬÑÈßM÷œmTü.Hµ3%oïÉ>¸ 9¶}{G·:V²àLs Øãfé¯öWZÝ(nƒ[EB"ú2JU"”½cEQîƒuV yW|…šqrŠTʹ`ÇfjÞ¼&îÔ‰¨¬$g§žt¡Æ\Ï*r߈z:Åîíj²GË0Ç2/¨Ò¬N]Tê-3|T¯}¤Ç<¤,™+'¢£´ñ)¡Y‚ÒÎ’^ÒP6Xµ ÂÀöÀKš¿‰TIêÖ>sñ²è C¹¯¤`’«šìˆósù}„ ÚüõF5â šðEO‰·€KDôœ¯‚3×mTÇ‚ƒ|ºJà¾Ht–-1çžn¸#à£}Un[êË Ô—R;ô¹è“e¬üÎØv|¾?Šâ‘rµÑômëÎNq”×éeÜý°\âHV‘ËZ@W§ö[*cN˜…rï8%vFaÉ(x&½àw„'±²r\.ásr‹|qÂ9zHm¨ÉÓ¨çѶ×U™¸Ò–ä=ÙÑV~ZFnìÄÀ‰ÓN‚šA”Ùî˜ì¢ÛNéÜvø& òOŽ ¬Ux-gp*Þ­ÄñƒLÊ7¬Îëð|‰ [;¬Ä2qÙÍÙþ½Ej¿xA(0·š] ™þÔm7kQð¾fÍ+«Û³ÑUTÕ‘ýF¹Ê§ëÁ+ûGbúV{¹B CE ¢uü5oÓÁ…œH‘êö3›ò× ² °0,äJ3ø”À„Åœí0NeÌ¢F| þ¥,h(øÑãq'™E&ä¥Î]Há"Û‰ðm®€Çr¬Í•7TWÌiVŠÜ¥qôlÿõa….X”Õ$k,YG×B48:óöT.wRà€0 ûzM]5xÔ",T¼å‹©‹ØüF­&ÛiÍ(ËùµÃ%JÖæéñ0pÄx ÈE«ÏZKíÙ¯à’ô+yΪ¨5)ãë°¦{õ¯"a1£`êzHÉÜÀ}%sƒzfT23g"™¬âÑHÖTiò¬ü^Æ2 ìøGW3Bȴܦq’‡™'´Lû ŸÅ-¥Ç™™f<¯y4K|ò¦“Ë™,§È#Ù2bà9PôÝ´”À-˜Öçrˆ%ºŒå”K)ò+‚ ×«ôEçÀUˆ’]öžMµ´zR`®rd¸å;(8 WL5mþ-~xÁ`|VÛ;ëKr5Œ†ÑuKWÃ$ÖÛW3î¥ÐEó¬D´¦¦ Ú”œ#^þ„þsáÍû­ ¬Ñ•ƒ"‹wwâ¹”ehÆÙþžý¨ º¼fRLáZq $˜Ovq’çÈ™hÇþ³|ñ(Õ_/$&Ë åç6þã¯èM&Î/™!¡L‹Þ¬~I´ˆ½'tTìå‘[¨ÄÀ‰(ÒHÖù*È—VXPi…[УI¹‡çÌ´t«Šc­œÅ¡âh/—:Eåg¥ÃÍ„3…ã&µÄ’ýæ›ñÐ9€û9@wÝÓJ‚m©#÷c”l;Ìïµ3= /÷a=kQ»¤"¬d&ZÅ6T%¿ŒwÂ[#ªQ?Ü2VjÆ…ãȸÝN}e­dlSQ—9¢8½ˆe¢ôñ³Ä|Äq Î%úÕ×þøÃ÷þ¿ï¬ñF¥‚­ÈV; ûç`çÒM*b¥IüèÊDØl#=õ+$0«ˆ/nW»6(y*¬_Ôߣ–Ü“\µÍy¬€HýÚzŸÞ£ò‡2)ÕÄïÚýÞ—¾™{÷´Heš¸™b>m2È4ÄÆ2«§Œl>&F9ÀKÔ!K~hÎ4Ê¢7úúLÌ}ä[Wæ“©ÏÇÏúØdìkrp»˜ (Ö|Í;Ê}lÛÅš÷fNNlt„âU_{çÒÄ¡ÔsIŸq}ÄD*XIE {ïfêÐ#oΞ2wˆ$Oîå$Å£pyy¹fNª^c ‡Hºð¾- §’gZ—ªLÒÂee"msbóÈÌAŽŠ·\[Sï^{[ñ0Þ‡Siq–‡Q €ÞÈm)ñ®\Ãn‘×=Æ­ÙÊ{Ý|H#äjë¥sžé‚n›h¼63úÁѤ+Lõ9±»ÛvE2¡4Ðg¾‘÷*+zk¶´D÷1ŠÔÑ_zWÑ.”‹[Š9ù• ¥ÞDí+âïœäD<† b…=ËÏ*’)ˆmÿÄYV®j§¸Ó.b\°’Ec1ÎêPá™±çnâKRYÎDPƒ‰ƒ©ŠJ RqêÂWÐÁê3>Š»ïµB÷È­$W(³º#÷YºÉ%BÜá*c°*´Û<$ñ쀚P‚‘ޝmÅ¿ˆÇj‡+1c„3wÎIÁµˆƒÈ½#¿Òõ# %A½ãºì­°¦ÓÞ ¡ƒ8@§ø‰>šoή²fz>ñª¶%Yrí¯?(Ï6²3¤Çu»DÊ×”H9ÊÜóÆ ¬á€aƒ³¡øŠ(‰2!ZN‚IZ©©¤^e ´öU§=@|Ã½Ôæ«ÏùÇÇH¸VÜ•Ðj/Û¾•ù#»¡Ý¹ËÅ þ¦((PN1ß>ñ1»ddŽÎ°Š¹‘£ËÛ6ó¬!˜®FìNö\2«XN"¦?|Ö&°ë¥¨ZµÚ-ëò/!m¢óóˆ©g)f³NÍ2,LÖørÓ”I&áÔSžøÍú ÇŽ|¾|l?Šcž“c<§©«š!P4¸··—¬ñ¢E,®HÂF¼(+ÅüäÅøìÂé07(2ßÛÕn#Æ1gXUL±ÚÍ>³¨­–ô:bÖ%ñåÇÄCNTë8Yô×üŽ‹“»(…DE)pèÜf¸äÐ"r˜4èíc9 -æØ—ï â·k÷½d´¬59+©õûú?£õc–6Ë1Ô¯9„%*W›©"­}Ém!W!]§Ëɽ—JœB™²ºOÝE?#qK‘¸D`AÌð ¶®&¢{¯uÀKÞ»[ö¥žn7;§UKð¹ +ìf³-&]àƒÓöRìEäãÄ6Ä>å'wʘÐõ&²ë1ü`t°hËÉÈA (=Qü[ sêp  µgt#––ÙÞƒœP*aWцÖ¼âòò”ÚåÐ}ë²éRx¿ð9§…, Žh A_Ž™¥¬,øñf‰¼¶9P»È“ `X†\æÎùÕG¿RpTDºjZ’[R˜;;dëÈgg¦l(~¨Ýžó9ÖÂ9—¶+*W£o'JOÿ£s³ëvCîêÀ:sž2šŸOñüÿv-5-iHªN¥'ÀU¯õpk|°ATaÛN]i&çŸ"[RÊ’  /l1š¨mbµªKÍT¸“]t³Â[ñ_éâÝ¡¯#&-ÕƒiL, A (QÿÊæÜœ Þ9Ó÷xX§XðÊ­ŠË+k—KJ µâVŽÕhK)`b:ˆqQâ*Z½*'‰ ãp)–ŽßËG\q^îP‘bIßuÃÅŠZG3¸~x/7âÊmrŸÈ¬Ø5«÷D¨Ž‘9º¤â„l‚>p.5QÖŠ­X³ì(!Â$¹/ѧM›]ºï…&$;]èn²çsª$JQQã± ŽYH½'»%•p±yœ,Ù…íZ\ئLÊl2M.X»ÆÞ Â-'óøötÚ&Ç’iÁ‘8AíòZÒàbfjWzg?î§?´ ë~²\},åãpÁe߸Êv.qžEÏLVä`¬6Û­*¼8b(Àë‹ ×é3·ûKŽÔ„m›…ɹ¿íZÇÆÆ§\æ=‰ ú.Q›h}àİ*ÿªvÍ#M6¤•ðWσ]Rñæ%·ô6m—¸Ÿ2‹0Ûy°Ð–Œ½ÃÌ&s<™3àºj¸ Ô‡º³¬\–w| Bpûaaöv¼špj|N«í\æPÙóH\"Ï=ûÌ–#î±.aN¨)™n°”"ÃX%òÕ«àU«„Eg+G¶ð"Ñlõ.KÎñ!ec•€+u¦:6Þ¬Iá·pfœ®`|í™)ÍIÁ-t\Ÿ$¢mSÍÎ>QY g] À,äŠí+<­â€¬¨ÑÚRšF¤¿*³9ÉN®Ô€çD0™ùø°H—+Û¸x8K:+ÚÃX šé\ùN…n|5'‚"Q:JHíµÂú.¼gŸÉ‰„^,.9¹#Œ‡[©ÐÃcèé¢ôy¦ ˜À˜E)é‰ÏBÆLÒ–ù¢J+«-LüÝ:§TÀsÖ5-¨öód§þ¬§Â$bv))G2K;êÝ  ¦øâ¾åüEH@H(r­š–ùPÂê¹*劉ªR§­¡޹)¸&;%ï7ão/¶$©m6ð*;ý9þW:‚øÝ­æ/™1ગ³„ÿ(bÑÌYø½åᚠת\:ÏyW¬R­­FZ¶nX_²€9T¢¤ ØÒ9?²'‹ž‡ÜÜ… k,ÏM\êS•,òWüCkÖªõ!F”DâO’7ˆ×Pê´ú¼˧.Vo¢”u|$Ä>ˆMYTîn0ÏbGùü³i„$æjn¯YÃÅŽ=¹£?»KŒú+õÞ¥¯¶O¨iiµé•m"ŠÀ~Ü6+Ø›ÂÔÙ„ýüRœ·f½ßº5OôšãíÅš°ûñ2*êþw¡*ŽžóÜ—úe´Ø(B2gbž =ZIÎ6kKK#BmŠÃV0J’¯7ídícŽ&³k`‰¹ŒË ¼¦ZÃ’7Dà'6'=T+›J½£³ôÅù|8–ÔO8]ߢ— ´#ê[©-IåA“ßîäètrÃ%pÅ]3®-HTß±kÄš’Ö2ÍdGTçuø¾[Hb š²6.` £´¬UÅ–v*«/ænÒÍzéÓñbµ¹Âl]lSÀÚÞ\n¨ z¼»ø˜‡[ _öJ˜®åf5ÛI ˜8_ðÀ*ÿ“¿nËü¾­j¼™!¾Žýgã@ðÅê*„_t$]~Í® ß"&Iùf’ŠÞ«žw–¯ò Ù~~ÏGˆ;œ¸KÖg š¸¸­@)ÿM\1:¼Œys=‹E/è{µ™ª ’­òJZì|®ß…šR˜ßÓ¦±P&‚‡Ò¯,©¢êÝq„ÌŒ|úBrÜ”YÌ¢Rù0S —ô%§¶òÞÖÞ¬ÊRâü ùŒÕf$»kn¥^ÛO@Ç`ÇÖW®lo.Rñ·î^D×ÂèB{‹c7ž§Â¬\ÍÄɸ™â´{#·^!I†\²öQ“´–b,†YËã+µl§Ü¼t°„ 5\#ßíÞ ¢[qe£Ì•¤·GMèKx u·%Ø ñ–Y¹9 ¤dFžv§ZäÀ `!G<ÁÞÛb?™‘áa:¨ìqú¤Ð“-ñ9’§sgĨÌÅš¹^Sä»_q©á”ÙAre+«xæ¤^¸&˜¾uòæGÔgÌâ4Zc. ¼»ãø>¾µ’þJT™Ùyç ø¯ðlÆwËßÄê€õÉLAÀRâ–À€ëL^7Æõ9O¢Óö׋UôàÆ3ñ¹Ó½8÷gÉ?æ³4b¿Þèâ"UªÔËydü1ìb©g¡vJ¥÷Å0ѸË֕t—ÇÃ".„´^ò×|&ÝÃ'òÓ—ì†]ïÜt*è‡ w›»](3ïPa3N# ÝñmÉr¿¸ÇI´I¿e9]õ#ÛËof^\]Œž²½RÊ’×Ó7nkè¢8äB»ÖK"å™)óåò"¼»O²Ò %ÿ£>É3&L-z¬Á<ç®—lTÕb×4škĈwð|2¥*îä¨:Lü¶*'ÖBŸßÞf"Ù_‹G¿¹Å7ÖjüW\Ùþ:‹ƒ}“ZÅ9íö²2‰IÓz`e®yeÝ` ¶Xr^ÚžúÀ¯Ø²çéäW,¾ÕrTÂýžú¢bÏ¥‚Ò»Àv2O( ºå?ˆÉ8‘‡ç¼’ñM+ïRC–;/˜¸´ê¹0€úE„Mîº4¶jz|•,’T”rËöä™Ò¨8ÎQzñ¹à>&Ž¥ÜÑ&:##æ/¨É]Éìs%˜J¡oº©î®^yM§À]ºb½?{ á®Š´wÏK¼ÈdÖ«{’‡X›!ÈÅNA>°¯#5ÂÌ÷š©)ÿOÀ²÷bzÑ»ëòŸZí|UªFtï‚¿©–#=úT®«+\ೋñÿbU•#iîI¬ÅÔ‹‹ŽÍ%A‘ÎÝL¬›ÓK,T®s§É!Žž¦|Ó4 ÔÓ?î’1(½—Öv"¯;h½yKá픪£ÑåÃN3«U¯¨w@²¶Jâlå÷›m(Èåo8ðÐîã*¿âQ‰§t E¦Ó‰·7·{‰ÿ!÷3";ð<áœfä„ iÈ%–#8v]°ëÔÓs籂µ h‚…DòÎ L'^¾ÜR4õNxJ?@ö)¢¾wddyëJ\A ç ²ô® Ýju·cü¶9;ømÙ»¿p¹YÏ‚¡3r+bb¥Úo·svXÓÝû€š×pO“a_¯GÜ™ÂÊh²“tR1zǃ…Á3à5ËC^Ó)~DÖŽIrt¥CÇ?þH®'SäÈHbTf‚¦¤z'üö¯Å+„œâ› ÷³8“f^ÿØ_¬Z-ÖqqÈObÏ'+ ’p#DåKNÓ OßÊû¿±Wâoy4G l*e_}—|°ɰµ)ú$©@"ìטêQW“û_££9á )BE);êã—gÖØ£f´Ñ\“ùëÎU5äÕ>&š&rÏs6 |–ËÝ—Hgøò‡BÿÒ¥ÏO“ä)&“àr½Sº=eÀCõ&F¦Iô‘‘â!Ã5NBìÕ‰Gl ÇGÌÁ¿ám-öß¹æ°^ÇýHßn£f‘!FX=R±:”f•©aåชդ,5ξC‰•0NïµóÝÌA ÕF꼰£}{+y“ƒ}Ù§’ª]ùÚA"wä¬'ÔwÚÛ#i©DùÚîh«ºÉÞ—õdPJ bòÜì,\1¢¢«S9êÚ`C–ö˜&U» ÜÞÖ·”mp&í„]‚6”ôfòù"kš&a¥×èý.C“¢#ŠÄ´¡û9ÑRø{:bnÜeO~¸pLê‹4Ë…ÄØ¨íJ…I,‘2túó¶LôÚ‘?²¢¾E¸Ngoôd€ù!µU–5±vé¹ î1.Èú«¦‡@«Ä-†ñ™ž”òÂ)„T@1ñä²b†’Ô1w¾m(ïÆ<Ô>ˆØ!΃´Mã_þŠ0^lHó½Á¤`›ñ•Bn«ÿFòøˆÝˆX½è)¢~àˆöûyE)G¹:ì3‹Ä-9ˆ”2`Ç"Ïk^‚œBÃ$n³’ ”œ2Ûx¢«ÅßDóoÁ·¡ç¼ôiPÑ,éšiô‚BÀV‘”­ƒ!˜Ä9,¡¡[NerÆhÎ5‘¹¶n¯â bC$RVä=13Q^}ÐuÑCc]åçÖAɱ®•Ù·§#ÍXGšD:Rÿõu¤Õ¤:R%ÛD:ROƒÉ^âOú¼§îÂb·²\¼¸AcäTó±ðê¯Æ –5|¥Ô¤{‰uí MÙ ÙЂÀ2"Ëe&9¢K ‹d€Zϵp¤3èT¥Þt€)Ö#ôÖDnñ°2ɘó€q¡§PÙ¼L‚ÊÜYàñCGˆH¢Nþߨ¿x*f¾¢×ñ–·¦ƒï"i’q;H2Ì Éh(‡¢×Œ}ìQ Ö‰èËç´õI$ G¼`=£++ñõÆÎ’@,³”r(ç\û{/Ëd‰Á¡ŒàtVâ’û"k~ÈBzHrqAX L’¬Ø¬T-HÆàÙ"»=4_o©èOcÃsø{2ˆ¿š|è-Q¨ÝømfÝi)Ì-”Âìo²äÿévïjãð6\(3û²W·çŠ˜dÏKÃ=°…®Ó>’zw" b=„Ó#K¦²k§ýÈ¢Û/üÐRRØH‚’i”asU¢Á®º—v>I›)0áwrïóû¹TÕ¤‚p*Ä©”VÓÅ™â8¤oJ®Ý‘¹”Âï—Îô lV᳇ÕÉ•æÓ$ªŽàÆb5à”àxäùNŸJ!l¯Bx9ïE®À{qýó3Ÿ7¤jýéeœ A"88¸Ä¿’ ($$ó‘j{L8O– Îy s”‰Ñãã®ø¹xçU³`˜81ø¿£g&`V‘.V} ¬›K$²W¯1=» ¦. c;‹ä#æauçÎåñR¹~Šô@'ùï$@còľ H€0˜ÜyV‚µÆ)Vqt\‚m|-%‚=,± 5;ðxbýÃdÏñ8”u€¸rU“5$w=rB&ÑU1™ÉL2D±°°¸„d }¿žÜ‚Rö ïç‚âèsÜóvÕ.&!³€'T:oN_‹5‹Ê¤ }ƒ‘¤¬ñ,ŠÑzq‚HH%é¥x ý¥H‹3˜¨fÄ#7äžSÀµÌäRrÎÇלéa)1ܦªK!%ïz21ª°dã .å?!G ª9!ª7—©å§›½a »ÞOR‚œCñJ») É”&HX»¶·°s§¹ÿ8hŒPlµÄ”²×.Ogᦃþ8WRÂ7匴 aN*ð9ýˆNáÔ—Z‘í8cåá齋;1ýÄùšf¼AÞY½úC‚‡T‚_= Cf™¾_:Úè/ï:8™P­ Ðk Ý óGÝW¹iÑy)Ö ‹×´8?±.³7cê’äQÁsça÷K* {»ñÒÁvPâä·Gæ§ $`ˉ_ÛàV#’.?À¾);‡A­óÁ¤’Ê_¿Têz×"â,V”ÉL–ÂäóK!¶+–GÚoÖ%ôu¤«J¥=t>·˜I€YN—8‹UìÝà‘°úý•×—²C¡ Ušó ú¨êsÂå96ñÄlvž5<\T¬Œ*¥¸vúC×½ªJÚá”ê ˆé£$6 F‰…ªW³‡¤»îNÙ°“×j³&,W‘sÏX_!P¬évŒé<ÔFH|>‰ÌYË£Kƒ¾>¨ÈFsœJчq*¢¨Þ KC¯-'8íÉ ëWÞ»k3­KÀ8^nŠ,€¾vã|-ñ¯z'i®ãtE¿È¾Ê[W†”t;å×õà|ð›7³Å)Õ¹ú+ReWÑ]eIbÓETwÑMœ! ˜eIÜé3ÐE†#šâ*¥;t¶#ö¦B¯äIô‘c8=¼Ï¼Á]ÚY?%ùð8Z2Xœñòù(ÎË‹V2¡\ /¸RÅl& Uû»æ´Ì"yQÞ¦Ud²q:©5j“¶¯ào†®Y‰§¶á\G7/©@¿ /Â[sg³g‡~Q·º;Ü©áØ€\?½™D– í´á¬Y+ªŽ€s¦Ä³Ú4$cëK]PlÑ£§Ý²O°œy‚×e£’Þ3‰.p8YS•„2ƒå;Iû …… oÞgO«+—L¾^óŸ9éò€Ùl¼âƒeB‰ÓñJ¶–†*(lÈÁLñ"«vë@‘µ€®öœ0±Ï,Ø¡Œt¤Ù;p„±’ Ç¸trÑ"6s^y*K»ô!KÉ6ì´¯‘N«¹¤Äˆå2ABÛ]ÊÆ?I.OÙvý+Ó¸Î!Cûycâ]F P’QŠÁWkòÀÞv´©HH>I‘*ªóÅ㊄âmÒ! )¦”'7bÏRåy¿bë"½ðüóÔÛ×$â¶ú>ÇÚχb\Éf÷L0QeÛÝQ*Ñlîv­dægï92%óy èÔÉNl:^v<és‰è‹ÐíC”H3ÆÉô;¯T0sF Ê®+YõiƒVÝ~¿RqGÈŽ‹6;œŠI¨GC=#2Yø¯o²h F ºMF¿£ßv·”k”Ž~·Z}NèŸûQU•£ßÝm?jx>Ül™W£ßm?u£ßíÚ½¼ƒ~‰|½!uØþ‹ÑíÍÿk±Í^··»ä7ÿôÝ÷¯ÞÎ6Wí+ó:½ûîû÷ø^ú¡ƒ©1Úía#¡ùÊ’›í£y·0³ö§Ñ_ø6Ù×fôÝd?]®ÚŸÚÕ¨x5YÝ.'•{ù–ø‹Ñwíè}{5aŒýEóê„Ò´†ßc¿·¨«Ùvëßa!ÐÑøýv²žnºÝè»wß|óî÷úðÇ8  ˆY_n>ë‘Ò*À$¿ùÃd±îæUüÅ({ Ì,ÎãÝz†Åæ`æ»äÍÿ|onw´è0ôh†fí< _Óz«ö››=¬ðÍd¿í>nïöÉ›éfõ*ýœŽ`‰áò¿ÿïÑÐ!êKá'z¤ÿî¶‹«ÞsYü\vì9ãžËîÏÆÏí/ýœ=¾"~îh¥{îøªø¹£ýÕýõÃÚxÏ5ýçÊfx6¤6ÃÒŽ–É€03¡GîøÛð BwüÁ<<ˆÐ°è}du@bî }lyªþÐÇ–‡6&Ì÷8Œ´3a¾G4´3a¾ÇÌúC™µ1ý¡ÌÚØþÐGfmhg z${h íLIØcЇ¤©è <8þ`N`áÿ=X‡ü;ô`dðï-IÃuíþ=˜©ó#“¡›o7ù©M€9»ì—@µñʺÙüÔî7DÄ1¯|DZ5ð1iNAZjéí骻IW ÌaT›þbÊf\M²h Un€òvô³WƒßÎG?·›y·ZéoÛÑÏ `²Ñœ}¿ƒïqúËÝdôsÿ»-<8ðþjô3ODy3ú™!ê¾Ý~½ý,sŽ öÛÍǬ%|»Ü|о[MáËv@L'·ñO×þ§ëM·ŽûäûÔÍzƒÃ>Ó¯ð/ ÃfMc³‡ylö°!Ñ;nMô区™MvQÿsØ¡9´æ›õ>z|N|=Kß¿|¢e¶á`{Øo9Ñk€vw;Âÿ±–ÜÏ3òÑ+3FeE¿g£öót9Ñ`dù臛»Õ$—_îa>hðŠÞúÙQ¨UÏØAÔŠÆÅ_{gxôæëíäÓ»½];ú9ùÕ8Ô`ð[†ŸùÕ’é¾½ßNfºý¹×¾~Œúƒ³%¬±a2!ùŠžù<º‡“?¢>i @0¤(@0ÖÉvšüÊSƒäWj@(þ”üê¿™l1³H¼óèç‡8âß­÷è ò=bù;Ã7ùu÷ÀLÞ€É`a¬$#Öò¦ƒçWüü>Qü;MÄ–r[Ò¿»iò›ä7£÷Ýb´¹ºÆÚU#ŠPûD_Ã(Iòbìw¿ƒŠ80ì-ü- xä»ÍêO8”ðHBËWŸ’õ(O ̬ 훑­Üç•|.è3?CŸ“P] ˜xe96yôˆ«m=ªÊÐoeC¿ü™ûågž×o–™Ðq–6¡gip×òØú¦EÄÀuYÂ{ÒÚ¦Çֶ⻜Ö63MŠY TþwÅw¢üò0lð- »ÃE¨1‰n†rÎM2ªp@“Qï¼S–þèúÞ¦ô¹¨zßÓóÑ32žmxUG”tÔØÞ÷ÜQ¢Š{zrÚß:cŧ+†Š¾/yYéû"ŸåŠŸI’è©Ç–Š“¥’Aè{阾¯³ðYž¡ ò3I=õÀ€¡ƒY¢ÇÌR–%£Üƒÿ"ðð/Ò]ü˜‰Ö&zðqiW1°–€¥–À^"Äò/Qëñ—‰üKÔzü%>YBü .ðÏÑ…þ/"yš¼ù¡»iw¯þ´¹™¬GÀô˜ºxM”}>ÚÍ“¬ÊGí›ÆÖv4þÚ'±‘njD"6p~‹­žª$:£¿fh4øüo´›!jÕU1jà7ø1‡5bl]™QS—ô±¬GMÓðGËáìø¹(ásné Ö9újV–~° ¦ºäwú,Ë3ú ¢W†e0ð3@‘¡ÿ½ ÿfX Hsø\ÉgÜÞ”^®š >›š?Ã˶ÈéenTá‡<5þ…Ü”¾#ØSþl±rW*#ãC ƒÂ}Vd<2ÈÆYas¿/¸#£²¢°m^C§!G¾¡0t}ä„ÛF'#·h?7„bÀOTð™î›öcTXy¡ÀÏtßä€ð™ï›©BaþVºÈ‰Rq¤‚ØüŒßÓ}“þÂg¾o Q #€á,|6ü2¥¢Èyä Jþ ä¶(ø¾áFIK,Ÿ‰|Èç"ó/—Ué?W|&y" øÀ«ŠEÅ IŸ“r\†¢æ3É`×…<„ŸkæÜ¤MølÕ÷|ßH£6îå2 #”©ñ#—i‘ºµ(ÓÊø9—i#‹QŽÊLVÎ8pm¼Ú¨B`Š‘£§J™ñ}“#ï_^0`„á3è·8rËŸ¡#Cô9Çú„¥åû&ÇïJË †‰’JË+Œ‚cié¾Ïªm¸S +enddjäeø¡JÃç†G†¯`×JßiÁ÷ V”òP ŸyµáGõOé§PÊtü¾psÆ*Y˜å° F«ÜjC§|3äÈð”U-« ÷MYg¼ p+”µå½‚_ÒÕÀ£¬900@cäTáb4Ò+‚Ý’À?ÄâÐ1Lù&£Ï%`¢½9zì)ç3 øQÉà3\e9Ÿs@Œ*£û>[§áÂŒ`x«ø3ã6?$DJ*D °‚Û4‚eì*Ÿk~!Êy{T¾r<úU^É‘jYtßÀgø¡°+ÍUÕÍUÕÍUÕÍUÕÍU*Ͱ†^sU§AsUgAsUgAsÄ=h®j4W@ݽ抩;oam‚抉»h®„ºb8êNórêži‚TWŽºgAš å•H„Ž"MöÊI¤½i‚´W"MöJ¤ -¥O•4AÚ+‘&Hži‚´W"M8)Ò© œ4AÚ›¢Ú+‘&Hc#ÒéDš å“&¸Qí•Hò9h¯DšàÏ•Ò^‰4A¬H E´W…Ò-9i‚Á®ƒöJ¤ RL‰4!Ÿ­ú^i¯Dš —Eš Dš ‘Eš H4Asi‚´W"MöJ¤ ’¿Eš ùÛI$€‹4AÚ+‘&Hæi‚äl‘&H´vÒÉÐ"M,Ò)šDš í•H¤˜rÒ„4‚öJ¤ ù´W"Mp§…Ò^‰4AR½H¤½i‚§Pí•“&xÊ ½i‚A¤ Bɲ Ú+'MöJ¤ âùEš í•Ht0Dš í•“&H{%Òi¯Dš í•H¤½i‚TBNš ]‘H¤½i‚ΰH¤½i‚SNš •Hò9h¯Dš í•H¤½rÒ`ƒöJ¤ †(Ú«*Ú+'MöJ¤ Ò^‰4AÚ+‘&H{%Òi¯œ4A+)Ò]©"MöJ¤ Ò^‰4AÔÆI¤½i‚ÈH¤½i‚N•H¤½rÒ!FUí•H„<"MÐᩚ ½rÒi¯Dš 4i‚´W"MЩªÓ ½ª3¥½i‚´W"Mž‹4A'¯6A{å¤ ií•Hò9h¯Ü}ã/»o ƒ8 ã`à Ð6¼H %S@+ÐR6¼X W`¢£ X@+HØð¢6¼lH„ léµ*õËò ÒKØ"¶¼Œày!^ÊÀYx1AÎÀÙzAÅK¸^^ÔÀ†—5pYƒ°Ëï¥ hq^Þ€F8ÐX$ly‘Aæ€F:°á¥h(±[^îÀ†<°á%×L)•ìáZ2‹2HØðâ6¼ü!£Š‚-/ ¬^Á†—A°á…œlBdêeæ~òr®DdñXÁe ¢ˆ,2Ë"ØðÂï…H#Øðâ6‚<Â( n­—H°áElx™„¦J\Ë¡kKø%‘K°áÈI&ƒM°áelxá„ç'Ò Ï܉'¸D^>Á†P×DBÁ5ö" 6‚Œ‚Ûä…lx)÷Ù‹)Œ)"§@C *Øò’ 4‚¨‚ /«`à +ØÒ ´‚¸‚ /¯`à ,®QæªÑ8¬2‹tçv³ R‹Ô¦”Jná9‰àÂGA$>"º0V‹ìÂËê„^~‘^p›¼ø‚ /¿ð>‹ÃXè$Æ<¹R‰ÜÂøõà¥rྕ§Ú} =L«ÿ­o6ÓÉjÈuëENd¶x J =FþpU>ÜGöŒ>€îÄœcLš¼ùjs·íÚíÀÿŒ¬êxÉæö}èÒ§ùÐìòȾ³ä!É•k°o¡<ù>“SQ£Ÿ¤êð%eQgùIÕ ²Q]©5F¡œ}OZÕ¹ó†=ØI êKÔ” ¨áðÀ4 ¸qðHIÔá‰`'1¨/]PY^OYi4Úé»9ØõùÀNbP_ O«ÿu«àZ´ìÉë ûØ£.O>éÁûâî„0HoÖèµ°…^‹“hƒî?¬Å‹t|Òƒ÷Kðà-Ô˜Á[H’#¹…àiŠ|¤À%‹:Ð ˜œ£¸Qÿc³ú ‘[Ùk ²)Jn˜ðËô6i78zñ“sVÑ®qÃS„÷©‘¸Vy¸"0˜Äd»Ý|Z¶\Íè€ &ö]ðe¨£ U•j4iðÚTe}ÐàÑz ¡ê-^¨2W Å “ixŸ‰k=i¡z G`Dže¡êB& ^›º¨ãõ6Oa–´„ª»>„¬»æ“Öì`141¤çY·Lo“kÉJeÇ\KÆï·4¤™9ºn6Z7u }r&]óiëÖŸE M éyÖÍäzDiÉJ™¼>lÉøý–†TõÙ_·2Z·RPׇQ×|ÚºõgCCú¬u{D…@Œ>÷æÓfiîí±ŽÊclàó:jêa¥Wx@é¡vD•{FGv¸#©ðŒŽL} ¢çutØËéûô>L:<©CÝÑÃýØCî_ÕP}<å`?χ§ìG2)ÇÒÈ‹´rYñ”0xƒ²7Ëʦ’+þÈR'=Б+JÓ4´ÆÃSY†Èê0†„¡Ó3üùé£<¬ò4x Á{Ïò˜¨' R´†€*óüÙPùó „:•Q¨#…?ÛÒ(þ5bÔ³ž×)›kò°b&W›[©Í­NF!£PÈ„Q8rLž)NÞ—RíK©ö¥Q«×œ¼/¥Ú—²ß³åyæãöˆKöH…Z¹“öˆÊD«ãF’$>’¬^£W¯Ñ«×œ¾zªó™ŽʵªƒÏuò³”ÑùðèçÇO>MZð—€üåÏMX˜“ðW/ÅìfX˜B-L´L/­ˆF«£Ñêh´â—؇â$¸ÔWF©¯ }ª#úu¶š [M†­&ö8ùj—‘øZµ* •©:y$Õ¹»ÚÝHÚ ¦‡=éjw#iãžÕ¶2kO©Ô#5z¤FTž>R£FÊIÅÁ°']/V_/V_/V_/§¤÷©ÔûTê}*Oß§RïS©÷©ÔûTž¾O¥Þ§JïS¥÷©<}ŸÜpr0…I£ÇKG*ôHµ©Ö#§Tk§¥L;-i·"=ìI ‡Õ¬Õ¬Õ¬Íi#iŒ»Óê¤w~¬ÓqBwï/q?˜F‹hèÓ.q?ZVG£gM#gþó£eY4Úéø¡û¿‘{>Œ¦ý»¢±ÏÆ d¼=ùsE åp æ*‚9?à U‘M9ѤÑh§sºÿ›È¦ç¤ýÂÑ*jµÆ´Z#Zu:žUúUúéÎÝc'¤IC¥)ƒî<º¦^8R­N­ONäYg§s¯Ú±ÏhÇ>£½å̰cßóùd£ô“n$i4ÞÄ'¥oõ#i':=ìI|²QÚP?’ö¯³öô‘J=R£GjôHåé#5j$æ}d$i4ÞÄ'¥Wr#•zŸÊÓ÷©ÔûTê}*õ>•§ïS©÷©ÔûTê}*Oß§RïS¥÷©ÒûTž¾O Ÿì0¢P#iô8‰Ov#Õz¤ZTœ>R­º3íÔ­Ý®õ°'ñÉFiŸÜHƈætŒh4F{êü“SÍé8¡»÷|²L£E4ôi|²­ŽF«£ÑŠ3Œ¦‘C¸S7Z–E£ŽºÏ'ûÑ´ÿ{4ö™ùdJIø\>ÙÃ\E0WÌùV¨ŠïÓÈñ>F;{ÐýßD~ó=Çþxì“ødX¡1­ÖˆVŽg•>B•>Aºs÷Xs2ŸìFÒ”Aw]S'ñÉnõôɉGêìtîUœU‚ñP9p4Ê£±'ÚRehK•¡Í*C›=õF’QØ’*sˆUæ—9(íÐm´/ºÑ¾èF{w÷ÊÐóEç§Ø11qï<É÷°`4XÆYü5K1Qê`R{”:|¢×P–Ç‚=ÊL/GùŒŽ€Ñ`gYަR£IƒW ©êƒÖk(Uoñr4•^yçIËÑ0,ã,Ëa0SC†¯ˆ‹ÜàEóÒö†3nõÌ2þ†Þz‡…0–÷ShØÝ9ò„yìäDÐF#G0i0N89F& ^ŽÒÚƒÖk(Uo½““ªµ—Y›ÈÏâ±cAÁdβ6M­F“/GÓØƒÖk(Uo½cTªµ'Y›Èëà±3AÁT?sm^æÐjà©…ù°†BGD±Ä"ªXFºvÚnÆDu¿VõÎØi¨°tîNY>8_§¡ªÔ¹;=7¤¡.Ö; 5²ÎØi¨}uîN‹üÌúêSgì4”{°ÓÂñHŸuvÖ>CÁ¯s““:ûÎÓã{ÿ¬Ù‡:jçë3TM;sŸg†S•`;ã.©âmçìÕügT•§;㲆jx§vú2Æ!}4ÅNÔ¾yX·ö„>lsÐGñŒ>jŽn<è£|F%ÊÅ6=èÃ<·8ì3ú ¼vkš=£‹¹*sÒ\¨"?i.YçÒž4—¼î#F'ê£ÎŽàXõt<=q.ÔÇÏÆ±}yÎzPÕ1<­ž~æà(ž—^k¸“ç,j–f§cwò(мÖOYËÚS?c3L7ªçÒÑê}ΞV§Á,;B9Ì9"<Ë>gˆçÌOAJêšü”E°Ùé}˜z¸óܹ˜ò48È4rè­V?{=÷¥|özÃ'Bbó#ħBRžcMÊê »S[“ç`lnϱ;å06oΰÅÍ9MÂ6Oœ¥7™S}Ÿº,YÚœ–¬8,Ù9è[f²3œÃêËR•g8‡•=Ã¢Ôæ ûÃwØ€‹Ýóï°Nž‡ ßa¦>Ãfê3Üa¦>Ãvâš”ÇÖäùìì‰[\[“úÙwØ©»Sža:|‡¸ÅÍ9Mî°^ªçßa'îÜa'â›Üa§Â’ç€%«Ï±º&;mªšsœÃò k[Ù3L§6gÀ~V>œ¦kc‘ÿ4]‹·Á1¤÷üŸïÍíîÝz–lwÉn¹ùt;Y´Éo~óÃvÒ­ZxåÝ·ïhÃ_o¦w7ízŸŒ~‡=ܶÓn²eu=úž¬gËq·ß],Ƴv7Ýv·ûn³†ÖÕÅz|1½ßWÝÕ÷ÓÍ~º¼X&0Ôd»à»‹Ùøn×­è9Fu©ïÇ“ [ÁpSèc=Þwø÷ns·ƒ¡èã ü¹ºØ&ãv‹/.€éææv2ÝC³"\nŒ×¥…þþèÞ„w0Dr5FÕ0ô¿ÿ¿´Û}7mw-¼Ù2né0¨…¿d˜š´mû´šh¼¡#:‘¥R9OM¥F¶ç­Ž* ~¼à÷ Ÿ«ã‘F“Â5Å-+°¸æ=€{öX!š>ã0èœNÍd;…é'ãáÉv¯ƒ™uã=â ÀqOý×çü:±ûñâ¡[ÝÍv̸[\ Ë7ñ¦á¬Õ {HŒ§èž½0m‰í9¾µFzÞýÕF# .ÙG^ÿƒ h{q=^oö ‘1 Ú¶·Ûv×~µ³×YU×IU„ïÇÖ^ÜŽÚÍ-^@â¿ÊÿÅÈæð_òCûŸ_wÓýèª]tkú(<ÉÔÚ“Ñïè7w ¤£ß­VŸúç+o~w·ý<ªKúp?²XÄëwÛOÝèw»v/oÁ _b'îfùbtû_óÿZlÍëöv—ü柾ûþÕÛÙæª}e^§£wß}ÿ?àåÔíWênÛͯ¶íd¿Ù~wš™µ?þ$td_›Ñw¸6V-¬â¨x5YÝ.'•{ùz²‡Ž~¸kGï۫ѨeÅEóàp5<øû½º¶€ëâwWÛÍj4~¿¬§›n7úîÝ7ß¼ûýŸ>üñÃNes·F¼øróù‹ºÜà*À$¿ùÃd±îæÝ”†ü‚¼ƒÒ”/Õ¯678ó]ò†.bZtdLføaÖΓð5­·j¿¹Ùà ßLàø<º½Û'oઇ{ÿgïÔóߣ+8RÔÍb~Fž!é¿»íâª÷\?—{θ粇û³ñsGûËG?gO¯ˆŸ;Ú_éž{¾*~îhuýŠrð¹¦ÿ\Ù ¯óÁ†O:ø íHaé‘ì3zDàŽo± "tÇÌÃÝñ‹þÐGV'+ûC[žª?ô±å¡ ó=#íL˜ïÑ íL˜ïñ³þÐGfmLè#³6¶?ô‘YÚ™‚ÉÚBC;Sö ³Çñig*z+e° '°ð‡¬Ãƒ þz° 2øwˆ–¤áÁºv‡ÌÔƒù‘É$xóí&?µÉºý„ñ"@µñʺÙüÔî7DÄ1¤>"-ø˜4§«Í®¥·1d$]%0x*‡¿{¸0v+¸jÌ&«6(oG?ûw5øí|ôs»™w«•þv±ý¼€Ë®º6ú~ßã$ô—»Éèçþw[xpàýÕègžˆþòfô3/BÔ|»=üz=úYæAì·›1XKø¤Ìè»Õ¾l÷Ätrÿtíº.9þí“ÿíS7ë ûL¿Â¿€ ›m4Íæ±ÙÆDï ¸5Ñ—3êf6ÙEýƒþóZóÍz=>§Ç¾žÎ¥ïƒ_>Ñ2Ûp0‡=ì·Çœè‡5À?»»áÿ¦wÛ-0nžÉh”^™0*+ú=µŸ§ËÑîîjdù臛»Õh2›ýróAƒWôÖÏŽB­zÆ¢V4.þÚ;ã7Ú­ùçäWoàPOÖ‹UËðá3¿zCN]ßÞo'3ÝþÜkßG?FýÁÙÖ‹Ø0™|EÏ|Qöú¤Á¢d# ŒƒD‰äWž$¿RBñ§äWÿÍd‹™EâG?÷8ÄÑQéìAšž}X>ÂÎðM~Ý=0“w£G…@ `2X+Ɉµ¼éàùUÿp™ƒ—9@[ÊmIÿî¦Éo’ߌÞw‹Ñæêº¢Slâæ}ý¸»ÝÑ‚ BË)-G·ÁœËØÊ}^ÉgÉë—úω—+ú¾ï½pý2ô[ÙÐ/–œVåóûåÒ7Ò1 JÏÒp¹ÍÌû~™+cú”bœÀ¨üïŠïDùåaØË3C 7*Jk¥B–V*Ðj=b¥VI=õX¢"¹d}³R!C«è™ù‚ê§Ë+A¸z©â6ntlÌJ‡‰¬t|˪÷˜‰Ö&zð¡,™8Yr†l J>ð…ú—¨õøKÕ/Qëñ—×äÄøÂIáŸ;)åËå.ܺzBF«€PòJˆã\©HÉ•z>z&Qq¯«¨£ººRÑ‘+ì*ÑÅ=õ!‘ÈâxêBÛ•ª|dj\}w»B]G;*üí×Ð<­ÞtŽueŠ¬Âºwð9ÇÏT¾«]YMU1ˆ»ÈšŠ>§õ¨0YN%þülK.!Xc£äâ‚U…Eîè œ|aå…?Se÷ÜæðŒ-+~Ù6ÐhøkàTIýCšŠÜrG¿/ú Bi‘׿Œà©á,|6ü2öE‘óÈp·EÉŸS¬à²ïÜ(±‚»ûlêð¹ÈüËeUúÏ’$œG¨ŒüàUE€¢â…¤Ï¨t¦Ï°Àµ5캇ðs- Âœ›´ Ÿ­ú矸FmÜË€ó~„25~ä2•ri™VÆÏ¹LYŒrTf²Ú)¼Éj#©Ëx; l}™Õ–^6ð^ixÁ0œ 4†@Åí.Maù³Å &šÉ#ãw¥å3€t¥å6Yi©œ|Î0Æ€;-ÒÜÈÈÔÈËðC•†Ï _Á®•¾SÀ*F+Jy¨†Ï¼ÚhÕ*eÿi ¥L§Áï 7gü¡’…ùWÛ`´Ê­vµHma°ª–Õ¶°¨W"¤‡jË{›Ã µT΄ƒQÖ 1rªp1éÁnIàŸ*Í Ø… KCÑç>c§ žÕ  ŸaÀ*3Æá*ã29 F…”†>[wcF0¼Uü™q›"T6"PXÁmÁ2öä°`R‡•@”óö¨yÎSkðûJŽd]"µµW{¡ÊRyo[»ªŒ¯ ¨^Öð°¸ßîð^0‚00 ïGA˜Êš\¯€B°§@ªÏ[ÈSåF(`ΨŠvÒ*¯K~:© A=ƒÔ=„Áï«ÆíU "ÁfT¥eÜn€€W%¯vCTŸO’Z çÜ)Þ Ÿyd£ªª”‘aZpŸK¤îïm™3iñŸË<|n=ñ…†ë¿SG²U ÃJ¶Š hxÿ› ½[°)º,†Eªït&zˆž@»2·x@ÜÝjHÝÃÒ炆™PwÞÂÚ4©;óLÜÆ$¡î„ŽºƼœºgAš€ÏºgAš¨² M:Š4ŒJ&ª4H€¿^šÖÆK€ã^š€¤‰* ÒD•iNˆ—&à³—&€ Ò4¼4Ÿ½4Ÿ½4Ÿ½4¢@&¸Áܤ|fi‚_fi‚?‹4Á#°4A¬H Kü™¥‰*UÒƒÍÒ„|®T/MÈg«¾giBµq/‹4A#ˆ4A#‹4A:i‚æ&Ò|öÒ|öÒ¹‹44+HÐðÒDÙi5/MÀg/MÀç M”M&à³—&à³—&à³—&€riBy~¨Òð¹á‘ƒ4ÁŠ4Á£±4Ÿ½4Q6Ašà)”2%Mð°4 㥠B‘&%Eš¨R%M>{i‚x~‘&à³—&è`ˆ4&Hp’¼4Ÿ½4§ÍKU¤ ø¤ 8«^š€Ï^š 3,Òœm/MÀç M@ÃKò™q; Ò|öÒ|ÒÀÒ|öÒCÄÒƒÊÒD•*i¢Jƒ4Ÿ½4Q¥Aš€)zi>i‚VR¤ ºREš€õñÒ숗&ˆÚ8iöÍKDnDš¨Ò MЩip!H„•;ÃAš äi‚Hð9He¤ BC‘&à³—&èT‰4Ÿƒ4AGL¤‰² Òá¹HtòDš€ÏAš†ô¤ ùì^Ò„k¼ì¾4 â6üƒ /P@#HØð"4”L­ T@#HØðb–¡ór4”`Y¼d /ZpŽp‘-‰ƒp ]¸V¥~bùB^bCºc AÄÀ–—1½–=#PÁôòÊ5y£FㆬMÞÔý†ŒÖk(UoƒåÁd¡¸‘³Ÿ[‰´ž¶P=Ð#0"ϲP¨Å ÃIKVZõAKFŒÒrã÷[Ò¬8ºn6Z7«Ž¤ëCΤ4Ÿ¸nýYÄÐÄž ßjÒLçtã1¬všvsÐë ÅIÿ­ ;,¿h³ìý. S)lãVÀ¶æ‰ØÏ!†%†SAv ¶="·Ü:rÐrã÷[RÕçà)µµ>¥Ö!´FZIèòiØÖ›E M éyÖÍTzDn¹•2•9h¹ñû- ©êsð”úuãVnŠÐ·’Ðå“Ö­?‹šÒ³¬[¥Éi¥ï„J_ •¦¬½†¢$Õ±ë@ÊI2U“5y_hZõŒ« zFàYÈY“©á† T“™~C¶¥×P›©zZ(A,i0k2MÆ\oO*—ƒxŒ²j4nÈÚTÖôN®Ž BÕ[o¡r½P¹"\ü¾£[®·'aT zFàYª(Ôhܵ) ÓoÈh½†‚Põ6ĹÊBIƒ)UQhBåz{ÊBõ@Àˆ<ËBYM­¦ìVv«éc¯¡ ´Çˆ:‹?n¡j…Qü¾Ã(û ‚Þ=#ð, ÅbƒŒ&â¯Fº!£õ BÕ[¼PVÓ(«i¿ïh”ëíi²PzFày*Õ’Wª…Æ´î7œ7´´–¹õ¬¾õ¤Á"Pžj ˆ[OcÐ#0"Ÿuë=¢ä¨‡•.»ýó”.Yz¨½Q¹ËžÑ‘©;’üjÏéȃ虑ZlPôÌŽò¡Ž|2¼§wt¸BW“]ûÓdõŒ>L:¼ÌÏÖ¶™AmÛtýÌí"+ôa?ð¼´&_ñ”€*]¦¾ø5§LìèF‡Z?Vï°kNáËu"«ÃâLÏðç§òHžV<Ÿ&=̱ZSe ¨d8P%›?Û*~á‚P§2 u$£ðgRœ4J€ÿFõ¬çuÊæš<¬˜ÉÕæVjs«“QÈ(2a6âÊ3Å©£Xu¬: VÛœ¼/¥Ú—RíKÓñlÇ¡2Å`©ìøqà9D-¢6}°ÏªM€Z=ªU – ÔRjϪµi!2B³FÓ\MtO§º©>3©>4©>5é)džÿÈ|(‰Ì‡?ó|ø™æÔQÜ|¸z®ÌGEè´ùøn$‚Ù$ I;y$Y9ê[VŽ?7a˜Ó1¡Q—Z£.µF]j= R…©Â«°Àž¼b©Z±T­˜U+vÒí2·ødEN ‘† ´E§Tê‘J=R£G:ýüµAnNÒP[tÚœ¤‹RTê‘=Ò)sâ2â2§ªPs’ÏI³§Tê‘J=R£G:eN,b»IeY®fåZ:)Ôiór}”Ñhe4Zv†;I‹©’xw'eÙ©L–ɦj$n¸‘ª“G*S5’\EµÂv©LOI.œZßKµº—d$~ì´‘5_~n(i¹±š—Œõ¤ê2YúH•ŽÛ•>Û•>ÛÕég»ÒB­9„ZsÕéB­9„ZsµæêÓ9„Zsܵæ¸kÍq×§sܵæ¸Íq7šã®Oç¸+M+M+M«Ó)c­¹žZs=µæzêÓ¹žJsrµæätçÑÏEÓªú ~ÀWk ¡ÖB­%„:??¼u~ ÞìqµæÒÍ¥5šK«.­~ —Vj›A©m¥¶”g°h©²ÔR¥îCIÒsciý4êñ½ÖìC¥×óõ꺞¹Ï3éŠÄžq—TyÙsöj~‰3ª èžqYC½ÞS;}ã>¦IÅIe´KŸ”¯tÙz}ØgôAU LvÐGöŒ>*[bÚô~˜CÄÄb “ÌvR=·›vÒògä¤>êCd-ž•òô¹Pp<ûðìËsÖƒú¨Ž€§õQÛa8Šçåçîä9‹š¥ÙéÂ<Š"/¤êõSÖr`?Êg¯euU‘yx-Í9<–6Ö㙟‚ Ô…=TúŠgÏ%=œÌs.iªç4HùÜ>†yΪrP̉³¡Nα¬ÍièΫzºó\ÌÐ} ´¬yîÙê${6Ž tR>GN„$Kí‘^žÃ!—ù‘N̳;p¡-ž5ŸôH/å³1eÀvøl*?ÔIñÜëæq+æ#äG:Éž¿&'Þžù‘NžÅô7gØÂéÄ<sHN£yz<Éí9Ö¤<² $朆l|ŠO¤J|ŠóÓn{ŽK£*Ï€'UsÊV›3œâú¡~ΚÔõо*Ï@ ês‚²:Öù¶JÏ@ d:g`OE{á-NDá¸NÜ.zêÚfé9®Ò,«Ï‹Éαº&mRRüÏ÷æv÷n=K¶»d·Ü|º,Úä7¿ùa;éV-¼òîÛ÷ ´á‰¯7Ó»›v½OF¿ÃnÛi7Y°8ÒçÑû/Çï©Ã SŽ®ÆÍÿ};»žLÛõô¾N®Æ»ýönºÇ§ãÍüb9Þ/ñãnrs»j/æãÅvr»„á·Îõ7r1F• &ôƒÏæ9¥Èk&ÒýC`Á’ ÷ªÌoy›ÀÓ¯áÙ–ÝîÂd0âdµÚTŸ˜ùf++²/a´Æë4Ïîד›nz±Hxv—añüšÎˆOKxp=^2 X§ò~<¬/L;Ðþ?mVø_ eí`UnÚ×Y[Y`…Äû±Í/nGíæqvÿ;@Š/FЕ-’Úÿüº›îGWí¢[Ówùè žÄáPU6ýŽ~r’Ž~·Z}NèŸûQU£ßÝm?²2Ç÷#[æfô»í§nô»]»—·`Ì/±‡s_Œnÿkþ_›íÕëöv—ü柾ûþÕÛÙæª}e^§£wß}ÿ? Úvû@º“‡Éá˯¶íd¿Ù~8ofíO£¿´Û]·à_›Ñw“ýt¹jjW£Ü= ¿}=ÙC??,ïF_·ÓL-µ_¤Ù*ÜVøà{ìð¶]µ À ß­°&ír³ÛÆï·“õtÓíFß½ûæ›w¿ÿÓ‡?~¸ÀélîÖ3ØÒ/7Ÿ¿¡ W~úÃd±îæÝ”þ‚Ì}iÊgî«Í N—¼¡sJ ×å ?ÌÚy¾¦EWí77{Xæ›É~Û}ÝÞí“7@ €,üì­tÿ=ºêÖ3êæ Q‰Ÿ‘¨¤#ýw·]\õžËâç²cÏ÷\öp6~îhùèçì)ðñsGû+ÝsÀWÅÏí¯î¯_Q>×ôŸÃžCë|°!À) >H;RXz${ÂÌ„¸ã[lÃÝñóð BwüÁ¢?ô‘ÕÉÊþÐÇ–§ê}lyhcÂ|ÃH;æ{ôAC;æ{üÁ¬?ô‘YÓúȬí}dÖ†v¦ G²‡¶ÐÐΔ„=Xèåøƒ´3=‚%Ž?X…Xø¿CÖáAÿ=Ø„ü;DKÒð`]»¿CfêÁüÈd¼ýv“ŸÚdÝ~BŸÏQJ÷ÖÍæ§v¿!*Žn¡ð‰yÔÀǤ9]mv-½#é*yeË×T±úu5Úñ[Á•“ç6Yµ Ày;úÙ¿­'ÐÎG?·›y·ZéoÛÑÏ‹m»ƒ»®¾ßÁ÷8 ýån2ú¹ÿÝx5ú™§¢¿¼ýÌËußn¿^~–YGûíæc Ö¾64ún5…/Û=1ÜÆ?]ûŸ)ŒûäûÔÍzƒÃNÓ¯ð/ ÃfMc³‡ylö°!Ñ;nMô区™MvQÿÀ£ÿ<‡Ö|³ÞGÏéñƒ¯§séûà—O´LÀ9Ìaûí1'úa ðÏînGø¿éÝv ,„›g2å£Wf´Ý¬Vô{6j?O—£ÝÝÕÈ"òÑ7w«Ñd6û忣¯è­Ÿ…ZõŒD­h\üµÜ·-ˆ Ä1Áè8§Ñ›?µï€Q›µ£ŸGá æ¢ÞÆàO;àÃónw<z ~Â=¯շ˜œÿàëÄÍ}ëgrDŽ¢ço&ŸWízÆbÇîE¿ÿ,Ár½yÿák ,ðµhb€2£öï‰zJzCéäÂÛû‘׎d{€Qý·{gø×Q7oW»>ü<ºÆÿ§¾9ĚĽûæ=üý#ÎX/vt°Æ“Õf2Ãî@ ­aHSÀÕä“Z´{†ïÍëõfëÇpÁÈÉA§2g3êfÝOG»ëÍpÛÞ‚hˆÝ{0ÐúxËò/á…èË\áF‰(tGŸ`ôÛÉvB¢?õƒÓ[3\TR•F»\°ŸºÿŠ—ãf²›ÞQ< ~§×Ã/\•ÓË¿›l¡ú¦ o–“Õœ^+~y„½¸þ~ ìl=ªýÞ¼uØoûßÒl ú!¼£~è½ÃÐïã‘y‡^Nðÿ£Ÿðùo¾¥Ž±+`æß|ë6ÜÇþæÛ¸càÍß|^†‘¿†A$¼[í»ÛÕ=ö‡'ó[àv42žÎ?ûIXùÏ~, #ÿ9ŒE/ÃðÖ½[ü‡7`ð–›-mª…íö¨ìÕŠF0ñC 0ñ¯âéŸÄC"0ñC0ÑC# ˜¸mF*0áç`Ø©Úf<ÿ­Ÿ!žþÖoý6~«‡Ácß…÷aÐ.¼£v½÷aøN¿Ç¾åmÆ3¿ö¿ñ«g}ãWù&îú&¼ #o¢aˆ´ÿÔÑ¥`ñ˜oü&ã)¿óSÀ~çG£}o2žë;Ý7ëûðjÙd<Í÷îÙ¿ñçÊû¸¯àÒÉÅçø)§¬þr³šÔ燞eŶn >=z£ÎN~õîßÉz±R<ׯ޷ÝÁ·÷[`.Tûs¯}ýõ«+z4Ò© o*_Ñ3ŸG÷ ĨOd³‘ÆÁ:ÙN“_yÁ.ù•dþ”üŠÙ Ñü‘6tôsOÝ7z#ê{º¾Ge„á›Â•8ý¾¼=*²&ƒ…±’Œô„7]Õð—Sq9%”—KQ}п»iò›ä7£÷Ýb´¹º†+zìØjµùD_?î™ê0K˜¥T ƒ„1]ŠÖø™>ÓCõ(pAAÐÎG?Kæ¹·‘<”á;)Òdùxôy.p&OQ,umÓÇ_àæçñ| ï@ø¸¡jUpbë‘EŽŒÒ`pƒ‘Õ¨U€FÅš~á¢ÏYSb™.©ü ïB#“¿ppKJùBCj÷–ú¥®Bo^î{Àµó#áMàa°:$t75*5l…#¥ÒC=ÀíMGJÅÃKYSK£Â†år¸“mVóK± ·®<‡õh2)…ãd³BCëü•r|ÉÈs9v—eÒ¨1€D`€{ ù®X‹Fz€~iÉå§fd+ÐÓÀrrÃBú_rhd…ô¤ÞÔt”ÞÔ¥À Tž x¡‘ @þPÕn00c¼Èy…U¦dÏr€Ù”u­…€ ÷‚)Ýnæp/˜¢v?xE^«†ÏNÎ5¸¡ æ8¥Ä·ÜžÁ=a¬›ì‰A>„*¬ŠjÀÅÈ=îÊzÕÆÍTÒX³Ò5ÔÌ­$527 ˜ ”Ì¢FbP¸îºÔ à° sÉrÕ *Üré¶!k  ð pMž˜³&•îšœüXü) a%ÜC³:—Ÿ`ݲZ¦TÀaÉÜRö“ª‘ó0F†ÑèÜðFYUÊO6 ÞÍ¢Äçdê…#{\íú®2Á‡2Å—R~©„c 'a(q¤²âå§úÊeÉËUb|PYÈÙD”‡kÉð€ºK©T‡>yœ˜¬h¸o9+ÜJ¢áæŸj8T0^ɈL™a¨a÷aeä1z'àªiëñ§N,"jîÒiõ©\î•9’,ÓÂF¦Tü@–Y& €2Ëä6ܰe3n”øXƳúÖ`÷€B2Ð ~ÎXÌ›À(nPÌL!¿TØsøLù<”*2¡†p$š7pk³Š²€º¸qÜCŽËs§Ÿr\þLª‡#õB2ÏIå1@Ç,mdx³´æañ(di%= Ч¥k4xOq£jWc”!¬Nù(À<©”k`™kÐ¥—J£5µl"Sɭ¹|ÎF­Âg™Mב¤]ájYwú\ZßQ- ƒÔ6Œ\»-D˜j’UL iU%/ÃôäÄ<ÎUáV–¤Ê ¿V••Ï€T•©äs6ªÜ&uÇÐ a¯Ry¨ÀÏ™l[9*§ð:*ë÷M<ü2ô"„›kSJ¥{¼(KÙJäûK> —RHˆAa¬¬Á¹&|ÆŽøŠ4ˆÈî{T=ÐgÂX¯NËèr#z{¤t`ª’ç@G)Ì-CðdÎpMúµn׈^†­•­Ýªf¸m²Ún•ìàïv转Jq«d?1Ôís `ºýOkÁ zæECŸ3IÈ¿9 Kaáæ¥Ð!a$½ ”ا'‚ëÒá02‡ÛÈ•:œO*ÒY —K9%ôYŸ´T êp䈬Ñad"ç*6ru„ñK¸S«Ž}jA 2G,ˆœ2’5M 0@ué;Ò%"ÕÖ,¢Û”n"—áê9òw¤#ŒØCmÑÄFÈ)\$Ðv 7¡#ÎtádŽp»ûKH:\mØÃ¥®¸(ÝAoå.ºxõ’!5r³î*B~/)b¬»Àˆ;UW[é¡fÀ_‡Öº‹’˜âÌ]¢È~7êzEý›¿xQé¯d\6¾¬‰µÏÜEŽT]ñpó†ËÙ)Ïd…c‘529‡8T`3ð z$Kk‚œ23-Ø¢34ب«“–Š BÜôìa51NÔCá˜*òôUìVš+FŒPܱhiî˜7êÁ:ÆŽŠåãà™Aü׳‰©u $÷à˜Kß©ƒäÒÔ*V•ÄÄr©0¸¾!¬o x¦˜¥ú…éķܰÀÝxö›~qŒ97òZ5ü,°Uš4ÀàDnÔu܉ Ü(¬›…aíƒß@jäiX<'ºÐ²’P“¸o²"ìEãW² Bn ŸR”ÆH°Jd×Yè|°BˈÚyA-EỉpH4Y¸£J'øQ£ "!"¨‘â{12E©4&Ã[……Oj4A,EzéÖ,˃( ÇQ„\:Y¦ñðCrÿZ:k7Äàñâ…6(ÏBCñ€žEÁƒRåŽ!Äc\xf„ZŽMÁ†0¯$U•ã~°o¹Ù $©•Xà¶ðfÂI!ç_ [‹,pt…AþëRkðP;΂D‘Fnþ’Î' Î@Þñ’õ {hºi “ÏLk4§^!f§F9žpY” eåTîêŠÄ½ZØ„(0¼5cá¦k8À§ð}]£Ðš çÓÀ€Æm¢iàªƈG˜á›ÏjÉð¢„;Fî#Âcƒ*pìð%b&„ÇÆ2V£ÍZÀc<ÐÌoêh?´˜Ï²H×% ,4SDRݹh¬Á£VTŒEØžŒ"e/ŠÅ ¹[,JŒÜ&M°;¼uç°=%ÿ„=T™4jÔG0µ90@K:œì¯¤Í‰Ì0a±9úQVLF-*\Œàš%­Jͤɲ‚Ä釭séUµÀJÚACKj‚š©Œ%Åî/÷€³­eÏpE]îGh$Z¹4Hã~a~,j€„É,¨Q 0)7οØ4kTÃV® @iF²i`°)³‡Í\w5¦âQƒæ¤Nz´µ™[þ ŸË¥‡ 5\…üBÉ<äʆ¾TÉ,ˆŒºY &,«ecHa&Øš[j4Ò“:ù)C% ? èÙK9j¯´hk`]!aT™y5¢EƒS0ZK„ÓH€êN+i é E¯i õgä(¥zލ®A JwhDçèdÕM€!óàÑ™ ªLXD¦”åy ò´òÔ)ýdèfÈä@“öRúfUf&çBå,_;L‘mJ{VJ£$U¦ ¼3¾lJJNa§-¦´ŽÊ5„†"”5ˆ¢ÊêUû[°›4™"°#ïp.ò ±šIÊ=Æ‘çšT™Ìx””€< ¬ ¾”ÊO)³J(2ª2E>«è@ËåQåÄ]HÈŽI°rTB:芀çÜXæ§=D¸ ñµ‰$Ð4¥ˆ@¨1ƒkGD~¤0Bòàj«c²^?WNw‚TÓ)\ |ΉôÈïä²(x[y–DH9œfÔ Í ~¯¼˜¿KÙ"ë”>2…Ôm¸/èJ¡D,«çÈFŠàŽDÓˆt‹xoŒ™xù–b=ÞY™ˆÍ1¬¢ Ã)¹‹Ùñµ€éÈñ:þ‰‹dºËŒHçt£fқɦ#DD@GN[Ð6’´ˆn¼lJ×µ“³Y‰«¤tdù'ìÁ9DW–µ‰ó¯T£t0kQ¤ê'ÑûqÉÛh¶©›0PV× †¬.s^V»îPæ¬mí§DB­SG5UŠ qs¯ÂpÂé6<óŲ– ÊàÀ°5AO-ë5(@+‚jÅÉd¤sn°òʘ¬rú ãàæbÔ\Œb‚š“G)Ô(&¨Q£”§Ž’©3jÅC*ϧÒ1·/Š. \¼„~W òÊŸGRµôV-½UKŸþ"àÚô¸Q£ð±PøX(¬7¿¸¹9î¤ èknñÚZsÖÕ-ðÝé#à:ž¨Q\0°yÎß©5h¥>÷ª n?;¬¿L¯õ/±¿²žY½íôÜ}’…ôœõìœ=õÜ}žÐ`8>gyÈüü§?²ÏZqóüøD}þ"øtîm VûsïÓy:=G5»a6k†ËÜÏ,|D‰c†û1ÏíçHÙü™ýP!„~êçÂS÷S<žl¸Ÿò™ýð~=§šÈýÔ§o—ìÆ¾duêÓ7½ìæ¹{Nµê“—˜j,Ô§Ÿ¬z°›ò%;5¤xÉèǼä€ô“¿dyú)^r žUwìu>G?Gj©U/9Zý”/Ù¯3Às¬6Ûsáɇ Øs·½&`Ís±‡*T†Í^ÔQÓœz¼8F³iNECŒp X{ê Ò`hßiÔ™!è¨zQGÍÁÌÊÍl`‰Šìýà=—&––ÒŠ‹ÔIO>cɪ'£4ucÒ“)Mkà¨>£›|ð„å/éf`ZÏ=u>¸éö%ÝœÁäâPùÉ÷ —ËO¿/Òá~ª—ð˜Ïªéù¿‘=±¥Ïiwˆ=Ķàñ„³þH7TÃö gô‘n(¤è ›~¼ξCjö'œ­‡ú¡$n&}{ ŸŒ¼ÁLñ$$| Ÿ””!ÕÁúTçð^¯ŸtWeÕÑê™×žÂ_`´ÐÀ]•e/êiàúÌž}A˜f°?{r5‰tôܹ5”În #ó²bIWGªâêHÕè ¦þÅ…Åo¥VÑŽË#mÛ&s]/.ºñ|»¹¹XHW§è¢_Qm£n<Ý`ͤ=þºnwûv†µfÝN²#sá L‚ó‰¹'0¯Àè^Þ_Àá_ŒÛ^cNqü—‡LÆÙk.ÞôM;ßßlv{*‰Ä·ãn‡õ‚–TmhÛ-ºõdE…›º–$Â"IЦ¦7eŒyx@Á”®÷0]šW‹Ýº¸ÎS2ÆÌ˜[,Ú³»˜a¥±HÒº `ò«»›5<~µÚ\lÇXîè#²žuÓv‡|Úvû}‹t¸Wð€×<<&V¹½¿W¯íksÑäXû zÚAO7Г5°~Í©2ÓÍdÏïVpRïqC¿TCìÁ½€µœ&»üšŒhk\¡%Ø ý¶»ºÃ/—RÊ &ˆ%¤–ãY»›ÂÐ+½Â;kqÓNÖ;®îϘª««^Áºß|5¾Å×·7ðûÝ~"˜@%±ijKèæf2k¬+…ª¾ÿêÛ¾ú÷‹[Žm¤îIóÑO#ÓŒ>ÿxwÃ…«v¯/à÷«ñ‡5DÓõe«&«•ÂS„v¿¡:V›`áz­°¸”¯ú…XäëW]PÝÎM°˜ß›q5°OË^ÛâÞ¿TÝ‹J^M[*뵬ºв8 ½ÎØ-|‡ÃS¶—{ßUà¢Î–ÔY;žbñ'Ú9~²Cˆë¼»eKµ·p¾s#³É~BØÆ(¸Ó}RO4:†^RM0ÁG¢KH¦ÂøH»Fï7ãîb€Ó‘fDwx>c<¿Ö$ôÆß ŠDÎ"Ä3,$©ù4þšëÀÍí|y3ŒÆêûq7÷ô1 7ãÞ!þÓA¢ÝIã;!q„\cÍ›£Ùâ« qT îõE^¨òAº©»Fô…^:UQU»hQÛ„0ä žF´&¸0¹ÓäTUͤÅ] 9Þ K \|'0܇'|®VVQÕÙ˜3 ¿¾hèç‡%¾Ø[X@-X½)næÇ‹2Åmýrü[†¢®M ÛÍø¯ÞÅ[üþo|ü’É ŠŠ´£¡Ý7,ÄȌø³–÷\K†éZ:˜L `L(ÉÁ½ôty1…‡&X °#ú&=Í”NPuÎ=%Ô}V¦˜Ô£¬x½e³*Ão¨ß[¢<›=ߘ,(q ҹ͢,*ôò‡µ#qÛ¤Ãí!Z»L-†ö'Ç•ôûcÞŸ%Ï`šÐæÌÅÀ‰ìxCndCR·!¸J“ Ü»åÍþ( Û@ÓºY†ï&nWäØn«Ÿ ­X‘ËŠ¹øVZ±²°¼bTÇ{Á##7ú\ßot‘ÿ¨7.;^ߟ.^X?qÛM®VíîÇ ®;Ù­å˜,bÖ Ñ¥Ä®lÑEΈ˜Î">O ]@ø ÐÓ–hˆDÀŽFºQ"ÕüгÈn‘m–Ð9þW&¯®³5={ÇLhܤŽ"oè „rçKl&þæ˜Ó”…ÂKŒ€Á¬hzá;d‘(Ð™Ú ®>†—.Cy â°¼$kAK……Cîv|ù_ò}µxàè”–H|ûŠd66©½`²&#v[Q±ÉÊßy8q,j±’[5º°‚sΕEuÏÓs¬Sp3Ì‘Ðú1³ÚÙÅ.Ī¡‹Õöø÷„V«à™8Hn„u(˜##VÆqdÄ 8Ækƒ\;]ÿ²>˜mé~Œ¼ »Ý"‡5CÛ5 èŒÓEn#!¦›sØÓ}I¨sé*Ê‚‡>ZtA‰€`( ªÔª×ÀàLˆ&`1Õ5v KK{?YòÙ»Þ[ìa™Gô"‰×2Ëò}$)‡«ÆVŒÐ.ôigŽI§zw1žk²›R&!Ö–V%&«L€7 Q`‚¾{‚àÒ 8øR¦4å#›átæqzã$³è|b³¹5øTV‚Hïb¶|»2ð #réO°Ü/¿õqLdyÕz‰Ã‰LÉá¼Ø€hÌöïnWÝž9å5ž¼f®ô®]ö{&"š%Á‚J¨{îåw”°âÐ #ë–,ËQBÂ{1;ü†bÖ Â;Äìw†b¶ÁëŽÅŒ4tÍåÔÑðXºäž*\šþÊK «ný¿ñrí÷0‚ºó´ žðˆqlÉÇmµq‚ï'!0kÛý˜*Z ¾ ââå&r9¥J¯™ÄÆE$ ÔÇOÕT&ÅÄ%É=QXjô”ƒ„m¢(s&ýC‘Ó fÈð{±nk’q¾oE9#Šš*¨œÀ0¡«^.K¸¢¨`5WLN\Åäb¨br ÿõ+&—X4ÙUL¶ VL~¿W¯ó ÌT €4»oÀ|Ô\3› |“~U‚ µ2´-,ewj+CÿI5£o&··&Xƒð?–ÝJ´ ½EA”›8Ý»ŽúäU…;‹„ãå;™Naš8ú a÷ÛϬ Å~•‘ü…ã‘ȯÛÏ-ëi?@`Þâô?-ñ¤Ï(®‰h+•Œq‹Z®vÚ!›Âƒë¶9Ð}&åÁÉÌqì ÖlϹPÝz)Ý ¬G¨˜5Ä mÛÉ ×±Ã£wÃz¾hÃ6Š0U¸J…[Xðœx˜û®]!†òÍruA×âÉ›¨‰åC—åDÜa:q¤×æhÓN.©/ï™tÌ6\²}G´[ÔT2âî–õUðíÍ®]ù áîp/w»•/áNBÎlBª`šZ·eP &ôaqlã1&útïH3àkP')d˜"E˜ÓÑ_’@s)JÕyÒ˜ÐnÝâÆîÀÚÓ2 Е0š¼·ÝjrÕá]Šj<ônñüÏDk¶£ë.[R-mÖÄrñR9Uh1 …+¢ú}0üð¿E£Ùˆ[ÀwÛî'@ЀJ]a†WpE“ÕÊEÝΜ²Ìâ!G4$~ý—$ ùýÛ÷ï܈X|ƒW|ç/8"'$q{^Ú)D‘ÉVí$V‘Ð3• Ü-«–H²`EnXƒ0nE|„)ìÉ‚4^²;YMRÎÑ‚âÖnXvakØFHˆ9íçi{+2ftáLIŸã[€à#³ÂS‡ò.²{ÐÏ•¨~¼ ËzÜû«níÍ|O^í¼±IiŒW™¾ÖûýwïÞ}íkYÒÛÖ…ß;ÞT·§Ñv¿BƇõC#§*‡ôCü××U¨"êé‡îÆß:΀¸Gu`“byð[ÍüÓÔ¾y÷—wßüáí’†·tô¹= :1H¨"ãÞöÁ)eî•‹NöH¼÷‘v>š+e+m¤YæL»dÇò£Öæ/Ô(s·°ö¼7°µ!#¾˜lñ¿áל¢ßçÂ#4âyËÀ z'=rRæ8ÂVᎴŽ#gÙø¶kÙõÂ+Æ:7Kü=ñ*"r")KèÈ1j#r55²,=ÿ•) ½KÇïòD:í–Žñ2bëé9<¬ÉpzñÁygì ³[n¶¨Ž×(¬5uˆKôµ°K >ü‘&’aü¤F¤9#À=ˆIÉ0*=“*1 ð¸Xsïž¹cõd£ë»µ{›ÃH6Î*¬Lƒïþeèd ˜¡ËBN„­ý<™îpKXœ–µ }ƒšÂu4Sâ‚Rɲ©¼…wkBõy9©´¬×cŸóÁc},Ð P½×¢ ÉÓ¡íïãɾ}ÿý‡?|÷Í;†˳Ñ~+&D™PoEϸBÒ!\;AÕS"_ܨ¸Ê°èëèz{÷ÝÛHŸVä,Ø"†jÁR~¨„*.x%®x~wqƒ%×WÌ:͹–‘*—ªF²¥Pàôrëߌ”ÀdÓ®Bdé«ÐN ]d ö=-}O u­_:A—ÚäÜâ_™}õ…óˆ{”$1Š~A$WÝÖZ)õ˜uÙ­o"â:sÇEÖ&eÅÁzv­30-[uBÄÚ„7xà»Ñ…z¢Á‚2mgȳȆbÙÂ2öŒø;q±BZT³ñüÇ Æ+,nB[ö{dœùNEy5Ì dëÊÍÞij‡ÑÌåœ:ƒò™¤%¦æÈÔËݵ@ÃÖD¨:T‹`Fî*¼Cœ9Ý-M¢öY¼UL)3{Û´6 85<¯ÿ:&„éfìôôWvù"^ Ãîoü㿉§P) òôÊ I'ÑŠ>¼õ/±óŠ‹ôÍ&øåµN#»º›H¯Nç?õ#Ѻ`Uë{=5!ÃäÐvâúMÑ’’Ø2OÒüãhŸ&çênÏBˆ³ã}„Xòwbý Œœ\)(Ý#;†· .ŠüN7º¥ún `ÔPÆÜ138Ï=汉Öôa?Ù}DyEáYï‹Ñ' 8¶$Í,0? Ý­˜õgÝyƒ¬ä‘Ÿå¢dEO_Ëãíu’Xwä vrÉÐj+ÒϪÓHج$»Sy´©ÙEF>J»ñÿ‰ðØ\T@és,ÌHXøÌ.u2ÀFˆH6Þ¢‘sš×Þ µm wïH{=G­˜‚ÇV‡,ãP SVŠ¥ç#õsÉ‚~"^åûåkBÓì`¶|>ÿ¯ÃÙ&9ÖfK["Z@=ÝÂS¢ÂÇèc¦ÏR+Ö œ.<²¦û¯› ¿°òØËØ Tò ÄÁÙÉW›‹{è„¢ðÌCç2å2g°Šé-]åŒÄn‚K’î:¥T&B›¹ׄÝ\jŸ}ÃôðÖôóëôè¶öž2H] ‚z>Yí¼MSðüšlùÆBºÈ~‹^Ô*¾GYÅh ëc=3Ýí–LÜ[žûÁùh’áiyKÚ¯pÅmñ’öœß\‘·˜~S¨)¤}¸}…¡[?vä#ÈÞ¼f¨nëŸÂ§ãOÆ­“e:r³*,ø­_(Tñ ¸¤¾bŸ-éŸùrù_üú?_òrZbþ™}þ~ës*@yéÿ–^s„ !FEÚá5t7)i‘„v-cÚ+‚Ž+N¸Õ50ÕAg h$™çâ ÖÎ@ÖGÙ°ÀâaÞé8r֙Ų@âMÔÞMw½óèþÜ‹‰b;þÀ†ìE»í© ª!uÕº¯.@zL꜀¨ v(s¬þ¼)ø•ëÞAh®ÝÕ½øy¨I¿Û°+Øu¡ ¬–8‰´ ]Ój!7LF©ô CçR ´—(޾3˜ÔùâåAܯœ$Aú=kE†ù‘¤WÊ ûÔ fvÃV.„@ ìh§´ÀÊÙ-,Þûíz®¡0z‚!ˆ÷Îc“ͪ@Ž®Eᤷ%ÉEëMª°à¡ð72Ãò¦Ôóͬ]ÐL©·rÿI®´Ê}É´PÀ¶b`9±2«xûo7SëeûQhŽø\’F%!• )&ÈR¯tzrk¦GéHè^9î­c†Å=ÑÛPô-tLöd# Ð Ò*Ÿ¾ä¼Á2Û÷[þÈÅrõ÷‰LtÁ?D½Gç6è Ülœk2g¬€÷Æ ÷ » ®y´ª©µ¨Ö Ѝ1’øâ¬ãx±ÉžîÄõX8HpA^ñ€MŠLš¬IYŸj + ˆŒPÀØÛlöÒçôÛûÎkÊ–‡ÓŒ²¿WbsNŠå ÕX$‘iVã9³·ÈìÇ/–6rœ_8 ‡d=¬(wrý:Èõ͈«Ü ÉÖ° Èæ¼½Iˆ RùbP*ïŠQÁ®÷îF¢+L]J¢)É,ôCï’ e7kZ’êŃ0W"ÄÞ¸g>ÂQ«Fhèö"+…]ù©šø%Åg¥å_‘p©Š¼¬Lž´wíäâÙ!MÔ3 âÈaõG˜†|`ú¯%âæ-# Õ¥Ê]û÷ßöDDn›¹HŸïÛ=ï¿8¬{¿„nï©øù„–è2H²h½÷X_‹K7±©²ä>œèNS–p­Îݵ }N[ xêxÉÚ$^³E©h[•d}÷ä‰$W¾rÈ•-€÷Ý’æbs·XÒýæ,`JÏxd³¤ó€Úd)Ò@Ø1gHw ’te’ûQ¤ßrÚƒÿÓWà‘è]U¥;+Avº‰T©¦ÏC²õο=W1 ¯ yIªÅ×ÜÛ k Cë&DbÕòq…>j¤±×[æk`AèQå§À¶çXÍ—KÀ)'š¾žÏýŠš¸4¹  5tï+¶cªg«^d(íÅÃe5«{ÕZ¦0N=*øÄà’:$VM•ÚßéR”Z2¨&ˆwNç ve“ÈEµâ •B,ÒÐ »–rW® :‚£Þb&n¹ŒS\v1‹­j3Æ?ÊU8+±l³@‘—™x{‰N‡[ò#Ҹܘâo?'?å»=!Y œ|¸ìašH–@'{:Þ—â$GÁIÚ®7ˆèQÀµbËðFp£³{„µ.M™)ê6w,Ï´ÌtÃáÝû~Ù‰¤(É‚­z|=$À£M_€oP†ïÙû‡Œ‰6bx±^Ù0FÇmÉÓl˜08̦9jÂ8¸ëbCFR•õ#vŒÑ #y’cTWæÐŒ‘I‡dÊP)`Í|¨[o¼ 2¢ÔœØE™0è>N´¿œÅ6 “ _Æ^Øyî)¡Ëx1dH$L“±«6`$Y^4GTúCŒŒâÏ’§0F0’-££ŒäЂ‘•esÄ‚0*Sÿdêêx¶O0`Œ És-è:`“3X0Lö€Øÿ?±`Û·`˜¼±[0LÑTŒyςъ£s½E<ŠX0œ¨EX£Uñ‰6\úµGúýý#mSE9U& ˜9)¹ÖÇJ~e“ ¨ŠÉÆÄ[7¼æ8D0‚t”xã†è”$‘ÉÄíz͆9eêøèÌ2i¢ìËC;‡7}üV}åÍIdÞ ät*R/—Í… >`ì¨ûÆ‚¹É2ƒá$V¬!±›=ô"‰ÕæÎ1Ò[=l¦­ ¯ùKލþèÍ8 é¨Ù£Pw£¶DûÎpa1³hÐ?Z.úêzÊzä1M¸CÎÜÈL¿R1Ò¬~æŽU§¢Ô Ã6®7ÝZs6rHHpÇCõ¬O1n -B™¦=놭Rm¾!7•ÇÍY7’g˜7€1MµZ˜RќǾaÓ„¹¦lªJmÞ›¬Îì$‘j-ƒÄAñŽÚ™_á_BØÃ× KIMbañ˜Ž,ʦ¨{V“Ü:G¶š$[Mžj4I´šŒò›YM’³‰øÑÍㄲcó.êªgDÉËÆh:q`DIžjEyȈ’8+J^Q°™_/t¹ƒÔFÂ5“§RZ8$+„¦©¼¡h²ãK5dX+R“õì)EfÊž=åŠðž‰%2çµ$÷@ •s»y zd`X ̲Ÿ”RÄéÃ'–6ž~ª{ÜÜ´”»æ"s<Á—Ĩ!ÔZB¤Xjq(" k=lBÈ¢èõÙ#”åu:ð¬Ú…‡šÊñÐzŠ…äþs¡²ÜC›ÀmÛÙÝ´—N#2}°~ „©ers“w´„\Éu1‰CôqTŠZq~_‹¡í‡_ØtñcpÙÜ­ø()E3 „ÈÑת§„È‘"÷½¾ È ˜”erT§}ï´ër¶D(tl œdIÌ«ÉÙ·LWP—ASœJ¬x¬ R«­€`"‘TÝ®‡R|ú‘èt7ÀAÚ“:Šö‡ÔäW K7 vÃËeíââühŸqQšŒŸwëéf²\ô»p# ЬÈa‡%h2×G<ˆÖ~/ŽY5"»›­½kLÙÝænÄ:müˆW¼úzYت¦Åä$ØÔðýÆŠ_ÃÕzÖ7Îus‘“ôG&µÂ;A*èÇ, .YAâ=…:Tm¹8> ‚Ð<Œ·Þzá™6ÛÅ ¤¶,”ñoÒäÉ >)E’däÈJñØ|k ¦.tÙù%‘H¨N²m¸ñÚÏ{RÊ̼;ƒìϧn¶_þ–€Qêφ4LÙ9â(_‘y 1‹ˆÂ$±¡^‘u7) ¿Šs'/ŽªAD§¤·{ÖØtë6‰E!Ù=2N¤¬›té È|àÅ~=|L`9†¸ŽÔt’CR™Y‰cúînnÚ¦+%*ß-–΃k#Qüñ 9îÚÍh)a—ì!‘¦h´ã Ümˆø9½‚¬œ…K/2¢ö†qúönÇI"µ]Ý:‚Ft×ÿr)q4>ûÉ\²Ÿt”ˆ,6gSjÞW¢ÉÀã,¤‡/ñ)ûãÿÕæ›dü·K %@ëë:sŠÞá®q-òåÝßï:4Å% Eaì¹ ¯¤uáçå6ÖÒ^¹§.Ù#MÔ‚aLèhs·¥hDµ—>4ðú;+Ê]­±¥ 1Ô((ßt{>Ïs''»Á8iAåŠ"U®…ÃéIž)AŸðÏqކhŠæ˜‹h|ðv|ßî|ælŽ…UAB–W‹ {¿f–¸#Ѽ E’“$8k©Oá^#JL³ø·Í5ÜFßù­ðÌxæL3¡‰÷Ï…²Ç”!nYcH¯éãÈ;Ó±9únlSwŠQ†T344Gï%›ßXxÍÝ¡œÊJktYGi^Ü&—N¢€ghX’Wµ˜û4ÌöhØR‡¡C_”jš=&“‘ª¹*Z*ÊÆIá3Dåv»ðp3Ì\3Ó| gG"t‘%î«‘¾í°-GEŸØ¡§¡‰-É\lÉd7ým²É Bïg„GÉ9ˆ¦K ލ„!ÉÒ++"ÿª ·ê©¾¯} ¶*Š‡Öœ•¢œÛ˜ïÀƒýUÇ,]GHk$Z3h^ì']¸ÄÅ‘z'q.A®@ÞB8ÀÖ§áôÉr\°QßÅ…å„£uHÏçÄsŽÎÜ(C,v¼Ãô4¢›úHC*Žá­²þ’[m>ñ%GrÓx¬åÃ݈ÓÁæéæ-ƒÿúš· •oñ;3´ƒÅ´6ñ>?Dj Oj£TÃ:ý/f7‹ò¬ /¶N ÄTÊ%û"^µÕIôçX5‹±…„lÏéi8I«où&WtMÌ¥ó¡¤Ñ+>ŠNŽ$EÃá‰ËÞÊÁÆVªÉu!)ÌbÒ=ãá¬D·ÌP ß»¹£œÂg²”“`\[àÅHR•¾W®]Ìœæ¹|6µÈ¼q·žÑ½ÇËŸ(óŽ_ÖQ–b¢qZ×úmIò]‰˜–ŽÕŽ‹%9CQaé91®}"5Ytk·‡)}õ R0÷éÝ÷†Í¬*âa _Ñ­+%5 U¿tICDd÷IÂM0cõâ^õôFÒäUÍ\ Lê)ÏŠÚ†øè¤Õ%&#Ü« Ž­JÆ‘z— !Û³î!yðVc%ÖþA )9É }l¡[SÞ»<ò’¡Ä$%Â&© F‚ ÉoØ]!fQ:‘n?SÄ… ûÒ}9.`€‰}ue8&þŒÍ1=ÆÇ°Ž†Á¤o¬™%nÀÀ¸.È|Â'+«ÉJGÙzHÆÉ¸úÃì— 9ÿ*Ì€\¹vûÍíŽK=Qx…‹UøÔ:ou·Dýc&Á©æœoêu¬ùÔH“„ixÐÀ³U{Þ~r;ìÜ2b]$î¯É(Ù#ÍøÚñš*rÃ=2’Ä”øµ¨ît„a„kš$è¶s¯ÛŽðX'›§ }ÒÄ7ƒ ­Ó†¬IgD¥±r4ÎkŒ­š$ÚDŠÞƝN,ï!GÖÐ'ê‹wÓf>ùlí3!²×cŸÎtíãbhiç8KoÄTç™zd]‰ý~ÛßG©î$LëßÓúâ-ÚVÔwijèh4ç(Dë9`jBÚ¹ù&¢™üÿU÷¯Í$W¶(øÝ§íÚm¦“B¼#Ô·m,++UÊîzMeIêsªzÆ@ "H ²*Sš¹¿}|¿Ü·{8@¦º¥Ò9–­#ñôpß¾k¯Å˜eÐK ô‚Z˜“Å_y.Ÿ›?›ÛÃÇÀ®J}BI*EëÐ|Óƒç±XrÖ«Å)ÈL£ër¢%ÄmOXü÷ÅP#àΕ²'rð$Ž @SÛïqÞy´ÕΫ$‰ñJt9lö ÒíÙ¡¥’%±æ°?ï›aý#þ&öö„¬8£Wìƒ %j;Õ1%XJF J¬Jy-tËhé^n,A0{âÙÚî–ÃnzxD#†ÄQ¤ãæût º¹›bªÔVP7Λ-¤; ª´"XÏØÌ‡­5 "ÝÄL|%øŒÎð ñ` £1¼ypSj6hux=âÌÝ&Ýš#ˆ+!ÌBß'U?,š²ò6¶ô“'¼qOعQ%zÕTeN¸T¾ÒÌ€«Ê±«#ß·š—=‹º°) Wn杻Xp’ïÀ°šV«ÃtOŽwö±Šá†nt-¼e&Ð!ÔDuLž^½G0÷À~4ºòª1xÅ”/—ÌY¼†áÿ½ ýþFé‹ÇÉNTŒ¼~(ªûËÿä@ÖqÃçoK¿tfRç§5H*q†6¡ˆ²ˆr7>uÏ4gP<•„vŒó(óyž!msÃa$¢´‰¼W´/Í33¸=ñÏ—Ž\ž@&Œ¢‹ t1cS. §½dº³Ì¦¢3,ìPXJqÉúó‹ÜùŒïÈ sq–/¶@¨¹¡[Gté¹:Z©-l©º„Í*JÔ&šâ’´”èß¿ˆãá¦LIÊ­É·:>¾ùþ‘̵}ØW¯>îqÇš¿ùær€l»§ù®s‚ãñCkKèÂRÁîµt±9ù³Ÿ˜ÿ `£è›éô“ߪ`öÁì[ãèNJ¡4$íÉ̺B,¾‰Œ¹È©&iWÈÝý±þåv”=p¾åŽÊ˜¤0ñHnÐÙó,‰æä*C¾³ ,þYI:m¨sX#ä W>¤Oª7 %·R¦:[C½Þ­¬”¢VÖÝÊêO5QŠg¢æÕ"ë£HA7¯*ÈœI Î\Ñý#DØÍ¶ét}çØúÌ3ØútƒZ™Q†ÊªÜþ‹3T9$©¢µÏžA÷g”rõZ÷=OáÎ<Å]ÎNúXõéô³¦YÇ{ûD«œã¹ý»·ÊÉm²U.5O¨I®+³¿e“\¶™_ªK.ãÞ‚ÿmÚä0Y†-Æ>MuÊâ©è:”¬Ö\‘N¤XB’_ϱöÑ2WgýsCL¸ˆÚçâvqÇÃ)ËRqìëA‡O¶µãÙuQ Ð×þ#1znÜ'³®->0_´Í/Ř³ý_îŸ+ç–êŸ+¥ã—u¦ûçjéÔ=Û?×´Ù?$`ÞbÏìÿf €y‡”HÿØ €E–·q/\^'@"ô©Ê¸®jÔïEv-Õ¶’&ñKˆ«†,~CÐàFˆ%èfRJšÿÝ4~…C¨N·¶ûD"?óD«[²ÓÍœêtëÊObò3éV·÷œÓ«ÊÏ”ŽÚÜÍŸDå—lJ¿Q5¥•Õ/Ñ”F)¬OmJKˆ!'çNYI«¨êBkê³]h‰&4óÉ]hÜ„X˜ÅT~Ïaò3g©ü“_ÙbÝ1ù™sL~6â_ԳγŒeLžËäw’ÈÏ| “ßE•·ùŒÉÏ<‹Éï"bòƒx*fòËÅäw" ªT~ù"äÑK‹ÄFA* wQ£µ„¢ˆ-vÛ$ó£Më—Ÿ{†Dw]ŸÖ‚ ‚ù<7)ì¿8˜/ žŸ±Íì<à×ÔúˆáAÐô¨ÓW¹x¤E"_5QšHÑÃ'»‘ ù–0…”žoLôgj×ê³íŒqM]Î~ŒÍ‰Q"1óû«×4yã»»Ha”>‘j T)Xo|R ÉW“UÉ`P7!7`>“b´>Œ'ï„þÖÉЀóî5«lrT’-x÷Ùû ‚+niž½áÄòðÙ13G£1êüİݸR¤ÉЬô¥Hr[7)oEö"c’‚ý1Åòâ¸ÙüóG‹@qöÓæÀŠ÷>_+… 3“¬`†€LÑm°iÏ]¯[CT›p•œlÆvH$sÄñk0°:Ïeu¤ÀÊÄ{›cu)%ï` ×¥ù¨Io#RǬnѤŽv®©Tón<,I×Ò‚¹·-ÐðsõzŸ"Å¢2iå4¾œ˜qTS@*Û !ë{ý¢n#ÊGÜþäÁoôƒSÛSZO*ªB–€óq&}2‘M kz ^1‘kÙTR Öû]XiÇrÌl{3Ød–éšM J°¦ø°k‚5F*ì1$…e31P5Q¦¥=HìNXç1¨›½õ…jµ^#QÌT]‰–nÏyMšV'KÂ7TnW0ªÙ&“·ew¦$LlU$ød}IØÈÏ›)ÈE ÌŸÃÅÈÔ¦ôîÉÝZ«/'—7a‰— þËí6LÓ¦úþË‹¸²;J´0€‚pÀÈГor…wÃ^U振뎪®;r]wÔuÑ)òÖÐЫ ‚Ýn‚ö 1pýT™y¯a QñþnùðHúJx€½Lí:-33Cð“4 "47Ëãƒïdg>Á!,zl¸¼-:]Ê® :˜dwC«ëgE—R? ]èÞ™¾I_j­ÊiÓ í«sÒW”73³ë"cê¹zuM…¬ë¨{Jkæ”Ö•ÖâÌ9Î Gꉡ±Ö… èóD@dÎÍ󤬀t—J4¬9C[ˆ ™§ƒÍ۸ȅrÜÎâÏÙ/7ŠvPt° '%‘˜qqó› 1 ¡:ªƒÛ …SÃn1ìà Ì{-İ›€Ötó_!†EÈH‡BUyQcmŠÙè·&¦…-Û¦MÒÂ’{¡¾©ô *f ágRqWN° œzÆäA•6"Fµk-`‡oZù+3¯m¥ÆËè#õÕ–: žXj-­]—‚‡'x/Ä[NgQ=À|‰Õ Î;††ÅÉa™ +Ml.e”Iûƒ;¬¡€#7<öª…×G†–ivj*òNTáõâ(7,!tÉÚœ–¨óP…³5kó‰uéšµ $ê¥,ZªÚŒƒÆ—"•‰(í¿8QB2b–‰ˆ«Þæ|Õ;-qg⪷k9¯pgþfEïªëþwªy3c*y§KÞ v*>^¹â´ƒ‰@åiâZöâ„%ö4ì$I²Â†,í=+,ÄrgXaÑÝ™×´mi>6kgªvæ¯"…Õ´ÍóHaçEm“å]ñ,RØ‹¬,²ü$)lU<[ÕΜ'…}nMÛ8RX2dŸPÔ6ª¨}¡‹ÚYÓœ$…5YÛž!…}vMÛœ,jŸ«i_ÓÎ:ì(ò5mÐëyZÕÎäy±8Á {ŽÖ<Ÿ6f„5Ï`„ Au–Ö<öIFX3¤.ô%¬u¯Í)JØ‹gPšS”°ŸD kRC|’¶ò\7ŽÖD¤°§9aóºÍÃ:¸É›¶NqÂ>ŸÖœæ„MT²òNh5¤nŠE–ëBøÅ'ÂM²~¶že(·ðd!üé:¸IÖ†‹\ð;^”ù/Iùê$ÿÛ)_«:¦M-êæ M-ÐÀÿÝhS‹¶‹µçÊÅ¢ø{Ò¦f‹öïN›š£ûôi´©eQ”Qñº,‹öïI›Z¢.Õ/N›J ƒ_š6•¡GÚÔ’@bsÚT¶³!mêàSù›gѦªŠ¼–%5ÑAikéÐ8±é?æx¢N;Ê€CVÖœä<í]ï 5FtR4îqÔ6*¥³6DvtšòôA ‹ |CáÆQž‚o!5cà<Õ÷ìgŒ§7FOØMÌ=ЀôŽ„Ûõ¨gÃk%XObbÁr1á$º>©4H<¿ A ’Ó”§¾îä/ÊTþÂÚ¡*Î_€mšwœj$ŒØ;|^ìÓ&›Ñœ›“ËözMáÛ{5^ÕÂÙ+µÐ†^(ÚÐ6Wx“` 5~‰m´Õx"*õ¹yËòo Ïf]¸¯z-@¬éQ¯_Ô;/¤ùTq†Ž6©U4ëÒÏ_;‚=[¨«Äž0tð„¡£& 5ùMýs„¡xÛ¬`²&d½a÷ÿˆ LšåMp™˜0´¾x̳ÔDvÁt:׊ßHoUÑ@m·$ïQª±6hÛ3Y%r²Äu4gå­ó2-ÉéÒ˜Ï蘜ÞÙ”3ltB|yç@'8 Rƒ‰ˆêõ‘á0z”@"ê‹‚’FŠIW©7:Ùx棑cŒ9ó‘ï$U_äHp£$-ŠR å;Iu_TX0ì[H<óˆõCµ¬f¿Mx‹Œ¦©ÈERZ[=µˆhsþZÖ¢¼€øâж(/›æ)Þ¢¼’ˆ!E\”7‹â—g.Ê[Üáÿ›™‹r% ’d.*œFHÜŽŸâIcçgà]3$/ Ãæh×Âlé‚Õ»×ß|ÿúwv ´]vÙg,/~²ñÎÅÏ—k¼ì+»Ñ®^Mn²Šš$/ß}ÜYÈÖÌÚœ¿¼¿\UÓÏ0x¥Ïé}ð+köÝYe? i#·øž`Ó¼üi?­|O}L¹ó¹Z(ÔñŸ«ÊUž›ðý:{2ò‡ù«eŒJÙ<î„;‘S„mÆ*BlŒ1äXÒ’¼Aw=>hëÕæ,ˆ›·®ÊN«žºæƒg˲¦»Àùá>/ƒr«‡Çƒë:e}…‚}¤ ™r”ÈØïŽÓûi;ñœf.¦ ôp9€# ’áwBgr$© œ‚XC•( 2ŒýqZAó»%ÌÞ/Q?e& `¤>fz"A1Љ=ìiäDªn>5Á°µv°ð*Á7}kïCmÒ¼®qîRZfÎw½ÎÝ,¿Â£ÒI7—ÜÇ´‹†~NÌМ¼æÑ­)„¥4ù\ñ,BÍ-vp¢{'cƒ0ûE… :+0  Þõq>îÉýõï¿ü’ZzDà êžEliõçéÕ#‰U=»¢¤äG´î‹¦`(Æ´{ ´•ÿ8‹"3xÀü’+»¦ÕW,ùJá䟬˜ ágìr¦~¡Áþmsÿp¸z‘UÖç-Ú‚”3à´-î£åPYÆ¿óe‰­Äæ  ³ßÎÆwrd6r—1ê5è2ðwu™ïÔ–ï銦D.£ÔƒÑñﳃHã§åV®\ÙÑ@áá@±MüP ÎnÍCÀ]û­˜ µÆ }Œ÷ô}/ÀÆ®÷ÖwLátä*×—¿²'wjä×K»ŸfeV#Ç&Ù°@ý+Ž˜áM²Š,ïÑš 7Êx QôÍO)˜@Šî——%Ò9âÙ4¢xv-NÝN÷£g7eܳ×â·u/Æãä^ÌÆRYçïó¢FßeêÞ€JæÒ™m@¦* PvÑë¬ï„‡$ÖƒñÆÊn¾ríBÁ¥òºnðZ&œ ë ½_°È)aE•9ìªy/ª˜ób=Ež1t@¼…å ­’óÆŠX6Ö§Ä“ZãSÓ3üá‚àãYk–ò¼9ï»áÓÝ’»®ͯ{Êm)#¦?#Q ­[Ä*HT¨TÏðcÕÔ³ÝúN€)J0(øÈþ0Ù `¹yJ£UÃÒ!P¨ì¯ô gÁŸõóƒ‚n*èÚ¥ÚıGáĸ%HìAø(Š¿¡½Ë¯¢&åN IlE:pJt-­h®5î¨ÖžÛÞ ¾;’ßN–}¯›äÕ¸qC<›¾Á4ÇR¶Zÿhôåu;!îYKö¸â&”­£¤ï€[¯µF!<#>C® ?2F‹74Kà½"8µÄd!<ÜLÃë¬Ð÷9»»mBìBÈ1~M]’~šÀëÈò†ž;äd4è¹S,¡Õ}±†¥2všŠ‘²”ιBd¹{?F%//Âr#eôÕ~Èc@H‰Â98/MÐ#tTHì½õ‹*s][nªb!êþM®¨"×[}¤Ûí,øZ6(Fdº{îç-a3øéŠá4ßAakzެ‚ÝÓnKÖy‰û,ï·Ë­%©ÊoaúRÍp˜-.ø@9³j…’KLƒ*§Ô@ßÕäkÝ cüèp[ Cš‰Ö —'¢¹h¬>L(2Éw¸É@¢ï4ß°Ø ÿ_×:AÞ`‘àÖºµ.ÑìE§0"`àïà§²PÄÀûÀ“˜“~>=O…P"UŠZ/,àvÆÃæ/¶fô40 ZÛ½Öü›°i5/3ób®G“M‹f%NÀÂÌ›èÊ-N½Ë.áewÀ{Á؆âí‘@â~Ç›7ns´àl±vt8<:ÜV|ë‘ÝÕiìÓ`JnöÕ·oá“ ´#dà´Ûþ: ïèS•ü;Åýk€€bLJSßÜ=_ÒkQþÀÎ*ð_tN²«b÷å˜ø›ýÁ-瓘Ð]Ù¸rSgv¨Žu||ïe$€¶Þ–˜Mu ”!”X¦©AÖ&ä#Ùy”¬n1å¢ Fgnó*ÿá“Þ^*„+êZâg ¨³^¾u—…;"êÙ-1]=J˜%`H‚ñvcYñ‚ŒâîL‘tãùzô˜ mµ¡uõÓöý–wŠU°M0w þÉÛ yÞ'½©q¹Žªþ¹Á~«ßpëì…`(®DK¼w_;€~/9+}tùj®„«¡ Jß—HY;$•Ö[•Ñ Ä­a÷R.¡åNåC*1˜!¦N½lð„ÜÉÐ;ÿf2ÒÐl—• £‡E¤­ÞL'½¸§4þ1QhßlHÃ¥zk‚E»nø™ ÷³¢C¨¼ `y¥«7îg¿¹ç-@­Ü’E×*Œ1"§ànÉIZ—SeLÜè5 ½èT¿ÝI/±`"zu0ú‚e7oS• £98Z;_êg€/ôÛ-VåPQ xÝQªvÌÚ@P?ö$€Ù!z©Ë].2˜ nUF³Í&8‘ËÖÙÆËûÙwø(<0Ë…ù¢zF.L>¢\þäÂ>ól>v{¹ n±!PY7n}¤:0 @|ƒA^/™éYí)ûµËè¡Ì€‰tÉ®‹¢®[Ÿì*^t¥I$»à pÿœ¶˜íº =Vg»JGÀ™Îvá&qMHw½ØëDN· «Í3^9‚¼|–«¶ÛT‰4Ÿ’LÊÃdR•ãßJ&A½VÒ±§t^£@ÄP↮Ÿ]Ð.‡ƒ—)Ë\]ÆÌ¥,ó“—¹[~ Ë˜²*›³oW—ìÈtP à+QZ¨®²³W²7³+á3íÖᕚª>ûjð÷ô•¶{}%S¶õùg‚¿'ßÎn¥ûÕV=S‡$×§¯dÿ>ÿòÐÞ|µjó'?>þýÔel˜(—ÉšêÜáßS#ÄWò#TåMwî½ðï©‚+ Ç?BÖ<”g¯dÿnÒÏ$_íǺ" ¬lìÈÌ3@¬'f †3oi$Y­ °«½ªd â¤äF2’Uò$i㔲r°TÖ³&÷Ë/s8¼êÂ$©áÃÁ6ùŒ¬=ºîÊdJÕ`ÑÂÑM×=+}[ÅëNîÅ'œ¬–&œœ-Ñù¼³ÕrijÜõܳ7+gçœùÁr³§˜Œ@\‰qU‡Ó²Â;”Ì?Úìù⥄g´êùg»åƒg#þ³ÏŽGiñ}®<‡½Kåʳn‘Ÿ(Öæ¹êØ¥Vì XÛÐ!‰Ün©‘WCžþ·Û£V?S¾ÛqÿxXõ.DÂD¹±{h6K”³,¹Ú˜`eÎnÏph|ôîj¡^’£$Øñ.kfã…Lü!“¯$J¸ðž¤ ÊÔÏØÖ•.:"êôAßLèÑáîÝôòU“;ÄpFÿ5ó«o¬%È|uîê>˜G´<–»_ØðOÂDg|0c-]êÒ_á¹ïç‚é^È;ÄU7nìË y•Ï7’QÁÚyÛÆßÕV=JÓæÂC& ‹2xkÝdœŽNGšA”†Ð°É|ñÉäç&È6¸DÅc8gˆdŸÐué×u[Š ßw”÷ýéð0Ú'z6<]bý "O˜ T#G²aÅ3-¹>Ÿg<ö,-6šðëg Ë„ÉtëS#?O¨6ìgÖäárö \ LcÉqÁ¢s ìQ ©uTûÏ‹¬r7/¿\ß,WýnõÑ­¡q–r%bµö’¬OðVwp‹ÿñâO—%Aˆ…¶q£¹D‘±`ãoÀ- .Wðò?zôÚb&6dvü–HŸ Sìö…âwm¨?ëØ‘Í8„â+“1:|æ k>2á Ö/Ä}.IRs|åVó..øñ5jTóI`¥8˜#`]]‘rŠzŒØf°ÔŒgÈ)d­ü [l×_»‰Æ_×ÜJž^62¼.“—«a&,qëÄútL‰Ä|^³$~áí¿%ÆÖþTÔ¨G:Ê¢åEdNðÁjdt„Ã•Ê …Oæ©Î¨lO6D_x~²z»7˜Ã]{Ã}a÷úB?Ü*ÍíËú½‘i~ƒÓœ8>~ž4ópt:×b‘·g- pm¹)/ëÒ‚6|†*Ü,FªQÿ R.–o÷Â%¨Ê™e0v_äñ_ȃÐ/£ °ÿµ+`SŶÈ]Ï1¤|4ؾ‰Ç8Nd%zm%v½OÄŸ£E"5°ĺ€oÁÛ›_yX]`T'vþ…øÓñSÐu…¦‡Êxƒ¦ßæ=·ÂÖçÊ53µ##]f˜2°žì"´Ì}Ga<Ç_ ìÓ®íG€©+/ Wô¿P•etÞhë¡>š¿k¦ ÁÇÊKÙDsqµiÞ¦ùšiÍŽÊÇ~š`¡ée¾£ˆK3ÉŽ²|`¶ÌŠz[á ôѬc^¶^ëô!¢ð§‹7.]Ìë®Ç4™Nb{GÆÇôeÅÍÖ“//BuѽpõDFlŸ~7‘Ò¯±r&gd“ó/…RUÕ ã*WlüWD-\rÇãã¯mHF|qçØ›Ë<ÏÑ¿jÍ!Ñ]aá®0*S6Üu¢@ÖãŽ1Àài' #B c˜"¸@Pýb°¥×ïÀ)axNÀ\Ôƒ ’y$î3e´æG…i»2Ñ?AÑö0 Hؼ&ò+†þ¬ûåÚ³•cánwI8&£ú¤0‰,¥CDÓl°{—­¦{†ÆÓ{ÑŽs8 rá }(Î^¶³ã#•¸ŽP˜äõåƒ*Bâ§&sƒ€·%sqðòá=äì{QéGš@±Àjx#\­&nÄä|· —W8ù‚94\®÷»FθÎÏ;Á”y «Ñc+°*s±†DY:K¨ƒ…*KoÈ}A ~¶ŒK"ƒÂíÞ8èÖAÈÀdI}á u›Ï@¼z®À¼á&æ<¼årg´ÍuÞâ‡]ƶ…Î1ê$š­©)=A:Õµ”Œú©®ƒb‰¯.ll[Áiçw·oÎ\îó¯¦^‘™1·ëZ€d@£[¸&2»¦µ'R³Ÿö½Ü+jNè™xÍW§×¤¨ÐïŽTÂåÌÅnvÄh¢›PA7Pr˜óDÁ騳8•Ö¡Ø?ûmð«1zí¡÷Ø °ÁÈ÷vM ÆWtI\ï‡[ÑhÄT‚D-w¢)Û9æV»_áv¢¦öPhyùáEÕ Å.V„KÈ–3=ò´³Ï°\SJ rµÁU.ôU²Ò±l³»åy¥°lô#eœþ¿džJ:ꟸ¡Œl|yë%0 ®Ö0fN)EÃA0]D$´e³56¨5f‚”sι0Šü£;8 ÎÞMˆ¤Ìa1c"/È s„‘§tjÓf¤¶D‚ci˜õ†hí»fºÆæñdRÏs\]5d—£tQKî$ª‹œÈßD^$âíºœU„Àéꡡì×sô>‰×Vw{¥`Žï¦#ƒ=œûtý¢Á,Å—h}©EœÜ7L[/òZ¸QÝó®{‘pcq-!a;ú‘v_½ÿ™¶Qä òLtvU`,S˱ýn_’~TN:†ãf)‰R߀žù­çÜRèã„ãK夢ÒË<<Ôïy%9'òÄî?,QÐáØßÉníha—L‚DyYÿ‹n Šö=lqmo§;„%»f/Zž÷´IÝDž<§Kœªw —ÁzÍô î1XY—‘¶,÷X ™./¶÷øöl’ÿM1!‡“rºtØú€›×9]2¬ôq"ÏQÊ']i˜2—PgòŠ5†œ|žZ$;Tmy|‡¿Óæ£æßÆíÿ3hÔ0:âXÉ$ž`°ng}ª‹ÆàÏ!ž # %¤µ™šxék‹ “!C†æî’å¸òßHw>NÌG0²kˆ¤u×eL¢Ð:p¤~×üàÂBâ|÷éEl:1¼Ká€EÐiørö6a\ÿ[hå`x£ºC©ºÔQIØ!éi!ÏÞø(¡­éÝnmOydÑÉZÖ ˜è8é©}‘(ìÂç ®¡b±°‘EX.È­Ë/ß㯔ÆàL?T³<îÉÔŽ!2{çE)‰"<—àF©B|ê>ÅVzÍ%Ÿ’ŒmuT7b÷È ù…šðƒ¡»Úqê×ú"÷c Ç‰…Iv=©}àÓú÷%=Eت Ëk¾… ‚ûíôžƒû*žƒD°iÿÇúJ¸u%')x0®£·–»¡wŸçrá¸b‰¢‡*¶Ã<{/ìsìø/„H„yk1­P× ª" pèØbäI^Ýä¹ ºè'ÿù:Œ¥ ×[Èý¢<]Ž9á\%lÚ÷¨ÞÈënÒ¯ÛÈs†?·,³BÀ œQm`”èƒÿ¸Èªå±ŽÅjÂLïÑQ…°`•!àzÄþúòWƪ“˜?¢¿T…éþU@ŽŽ™è0µaèSzv^XrÈ„«ŽY qâ  &…g³áçÁûí7_~îò° ÎÊ«úäYŸÿþÛY}á”üc>ÒÈ£1t¡Ž·ŠÝe>úVÊ \êÂS»£Ü̸Ün^(&ÆXÑIzzËá4þ^‘,jÚ¿F1_,÷^ði)#õ·y}×M£wpÖ-Yr¶>EF4äRž|n`÷„,ŒÎ;~鞣 Næà0<À1Áø.ÿn1áÔ†*²Áœ¼¦ g=blEâÊ:˜µ+;[Õ~#_ÍLeljË —ï9„Ÿv@DÃZ@?„ ‚ÇÆª•÷x¸:äùv+sãC6 0R–Ö«ï§1ÞûÇa”î ¢9,Aí ´ˆÓcg¨ŠfoÐ:ѳ< øÅŠž<õŠJ ·š#n¦ƒ¢’©ÊBš ûÕ£àqò8ç”AåðækjÜ iZ¸)ûÐ{è íÀ4efmû!‰©æ†`NZÂak¸¶“Øá#|Оâ¡W):=NO]Ϻ´a\ЬñN [O˜$Ø.Kª©¬´ƒÆYè4M `]{tüý)œŒ2£Wnà<zˆùo|“ÉäSöÀª(ÉéF¼ú^*h@—íÅÖ~Ežl’ž(h8âñ © ®„ô¿G$ûÍ%J€û±×«öŠf!ùxò¤R»\ËSÔD€S·ôÇxé_‰'E520øáˆ*éliw{AÑJwÒ 4.ïiSüÂ~Èøy3Ö:~»“<ÝÑy>,B¨œ!¦F€!Ee(eo‹Ïjì[ÄÓ”›÷ 1¨SíVüב#bŸÃxQe|¿)øp¼gµ…ò÷U-.?êiµ ¹ôOª’ÑöwØ]%—&B4&âks ‰¢íé¬æÆ¤;/™x¼’ÞÄI0¸/˸sU”íh7ŠQ‡x’6²¤Ñ9 áR á6ÖŸÙÆ®é«Pé"ŠJ¥‡L,®—$ËÔx†ejŒY¦:ºõ$¢"¸ÈÃö½ºD‹s$ºüxîÖËV—èªf~‰®jž¾ÄŸ…hQç³Kàg_äøàŸ¢´›Ôüðãìö‹òbΑdJd¯¡ØÞS×Ù‘LY4õüðã™kļHX‰¯¡Ê!‰kh:bŽÂFt **¤‡¯znXï(ñðã¹Ks£¤šAt‰¦+Ÿ¾„›”í.цÐp0æ4J‹Åü1ðdz×ÐJ¦¢ztlÑž»Fôa+RT'-k*hEÃú¨÷Ðx0*Ü‚Á“bÖ%ãY—ª,•g2¨8Ïx—'X—Öd#M’Ú^×#Zû¶zŠ›îÖIŽ“O]=EŸä'¢ù’fÂl0Ô+Ç$I)>'?ü!+Òyú'¸z[VÉç‡(N·œ«wèªEz„T£ª?<_TåéåÕìÇßnös^²©è¤YŒ¸ˆŒ5«fX³ŠÜÅ9ÊÝuˆ7›<Êlý¸Üœ°NRÛ}]üÐSTæ\ÞÀ}ÿ—f­”~—*q}¿ÅÎ÷çVÂZ!í½þ%ªãÌI¼ ä£<äþZÖ ÏýQôM@¤2ož¢žuÀã²ö Â9ŒôËatÖ3Í}TÎôQÌéCÓxZ0ç蛘JjtTR£ÑØêMÈåù£T)žqO "‡3$ÌÁ9=£’Òä>´£Û kbꥄòaÎõ˜¹"ñþ=fŽF³Ø9n±3NªRr_AúÜDìPˆ Èb~œÔgݸG4ég >+3ût‰'ó<:iJ ;õêèÿÌ@•Ïœ*äIâµÁì žÒ·|^.ÚÏ„Ec‘lýÆå-Oqd]ùöjJ`B' h­~x±…Úþý V°øÂï›]FÝtÿ w,¥±bý€ë„®ÀÇî…3 u?cóZOG )›_)»R ÕW¶@ñçœ+þÓì&}ÄjƒuúK^a‡›C.y®ÙýVЬ2q/_Ö]|’!vVŽ)‚ˆ‹ÇŽ*ÚîhU㪛{/,põÈs3ñnæñŒpmžOS˜=w6„vkÐ3€@%¶ŠË»[€› I#ZeF¿¨Ì*Œ7Šà•ýS h$<}æÓEîG財q܋ɪô³¨1Y /*ÈápnOè_‘dbµé½òßÒœ0“Ei…_¾Úù59rëvL˜sŒø'l>ío‡×»ÝSã4žb;ÖÆ¸ `¤‘c ”ð^*v¤;z÷a#yÀ.uR<6Ø3EJ>.XH,A <âˆëcz0»m¸…ß)/^)~$Š'×b»w/¥‚W0^9ª(Äq°ŠÓ¯,PéWhD¢ëIÏyrSÀðàrÿyÌÏÒ2cй¯¥[Ïr7ï`€q´×´ì‰ç¨…Y}ŽGêò–tšï1šå¤t …lP£¤þ‹ý%èæD-…=mô3ÏQW„€¦¬5ïç+má>ª¨ÇCè(ìJB£é6^ ŒSi£Ðn·µ\¯=îÄ,Á©vlø¾AÝ<S¾PjPôôå$„¾Æþ%M±A‰KÇêIéIBÑúœããr…s8dü•ÑôC…‰÷䣻ð0bxÚû*üÙD9ªuÅÂŒÔðvpe?P Í^Ïäú¼pû•Љ3?€Œµ¬÷Ù'Íp:Ü>óv,ªQ^jf.ï ÅÍŒ¥hà˜)G‘4 3%£¶ÜR¢,!|œ%âÉ(1„Ò¸Éâ<Df„ÿýQ ãýˆœâ…°'ÇÎcˆÆÂá —Å…)ynô><`G&xO;ø¹ŒÆÙª·×RypEV=@oL¨Qi=OHžAÏ£ÞãG7ôЇøÁþ‡g¸ª™š §4¡rÖ˜"žn³é—®wHH¡h/ˆ»Î03eHLé2;z\BÈûBÞÍ¥GË®_ZgeØak6OGT'a¾b¡ØM­ »!„ºÁ|¥åãö—‹’2|„,F‘ì<~´«øWÝ{dÂljb"Ìé… FñÑ'@_Êqç ´ òÅÜ^n¼a–pì°ãt‘•ÆDƒ`„Íß°á“„ž§ºzŠx„·0P\] mŠ6LñŽjµºtgß [›ÉË’€ËøÑW½ï%!0×DÚË‚‰yܘš3¸sÙ×¼s¼‰Â·UÐ"vÈFw×1ÅQÙ);«\Ÿ}½µ[¹ui4 ÓzÌývsÅÌNkö Å¤âìÛhcèОXýú8[÷̨øj{Ü <4Eàg…õ©jVùJ\]C;¶ó=ôÂñ3ºo¼Q*Ë$gÊër-‡Á+]O^à²AÀú­¹“Q (øð¥3¤‡xûõ÷o¾xó<ù@Kˆñˆ?/4Õ?ƒæx6~ø9àðÄ·\l«I–F¨WntÍ-èèí韜›ú—¬pù®çž†wÀíŠK®¹Î¯KÈË »#Jut4ï$´®¦°ƒCäú$J”"k"¬IS¢àAóꛀøu¿¢¬´(EÝägaaøÃìš}J¿ÎëÆ4JAÿÀ“ëéYŸ ÏÆë®ÍH™/n¼.¡¹Ø•ž³..=×ÁCæo‡yíÍãŽ>ã-a•hÀ5F¬÷8cÂZlÕú3BB´–%²V㮆ÉdûÚ?MûÇã–Ü>TuÛ³‡wvv[Á‹üa†O—mµÆe¿¥~áiLÅ–#ksSF5«æ¬Bôs€êtéO#ˆoVˆA{¸Š ®âü)‚±ÞÊv 2•uÎ"×ïà\q{Ú$Ä`éP¶à«m}?ó„—dÞnæ“¢mQõ¯MŒ%Rß0Ntàõ$ÍËæë¤=ÝDjfìtrì3EØùr!—W””RÈ;bwõæb¥Íè5ü$´íM˜j¼ÒIë´F'ü&l,ï¸/-­ÄÙãhÛx5Óèó»zÜËõ‹fá:Yñ$AÁu üñ.UÊv›è!¥Èâi)‘P´ ž± kîvä‰ÞÝY{¹|èípÝ0Q£9ÁÔx²:ß6 ¼‰™[OâR. š@h43_cGrÖ~fŸÌ@Á¬¢¡¯J1©¿uim^_z}ü­×ÔqФþàÿ¾Þ³ MV!¨Üo†[WðÄ9°Ö²p{Ϫº£+„ÏŒðÐß-'Ì£‚ARÑ6L‰$J¤ýó?"HBcŸn5±í‰¹¬–ìÍFáL"ú­ E¿%úuÖ¤fؤ/&µK›ÔLuÜ3ò‚ÈÎÁ¨æ@5w1ó¢8Ë4eð€äE‰hJñ"Ùéh£-"°LMÜ¡P´.#½ueç†Ö9ÎBÚŽÿ41€5oÕŠ.H¶Ö`cYdlûÌÖzãX\œ·¸†™‰€SÄ”èŒÒˆ.äNZ…'5]1ƒd*B¢¼«“&$ÊÛBÙñ™_ÜvI}“UH7,IZA2‘klzª¬EŠïìôXC‘ ÞÅŸMhä¥l¡—UÈ 4´@?ò ÕŒÒgÓÃx3̈!>¢¹ ¶f}ˆ%Ï á=rOñãåÑöMô(3Såéã¢p„pa’èíÅåÑÕ'’k¿pMȧÑsûë ¼t|úúˆ— J:W"âÆ,FŽZœˆŽp³r$Æ  '?@8àï.iV•ìNÛ"ÞÖÈuç´0{P©„H¶r—±Z–Ð/Œú¾ší‹$¼ éâ¡p6È8ô‰q¸aÙÒyúN [àL¯zæ@X[‡ ¥%r¸Ýëj1Ç‚álrÊHEše!Íàí¼ƒ®Ì«<ÑA‡?‡êO´þœ;ü ®Ä;GáJ @´œQorÚÔ¥æ!sПVVº?-[¼èbb›CÈfB­Wý· àÖ©lŠD>8MÛ³´„x@úÂPR‚ÚÊÆ/Úà¼Ä¶‘#¶a|×LÈ*Cö椒xÑ,ðï±’¸Û70µulœê[¯ð¢yÙšsÍ£®¶’r‡k¸u‹ØË€hS~öÙŠ*O^F÷†z¢2lk£+«&Mgš½¢Dâ(ªLEQ•ýGQRçÛw족¿·ÿÉŸÛ<µÙvî³ÒÖY7‰;z.Î\Ç_ÎûzfdˆÁÇ~C Ó<Ùþ}<º{æ'9ì.ÜØ»7 %Õg”À6<«›4IaVtÊ'È»xM72]Ãõç|…x»S|…›“|…tÅI1vØË®‘TNÀ¨5õüäd6kƒÃkÂÇG1piÐWâ z|ò²z‘{¶Â1ÁVè¼#i;oc4NÈÓ:œ€f,&ÕGæÜˆÄë²!AD3‹ û­ã€ôôÒÿÒ’!§è~‡5g¨z/mz!• ‘QÉRïW¨¥Jójk ·÷HfªG,Üö‘Øh¸ªÛB¥H¬´hn¾ð>"-®î#NÅ­q%KNá øSvKr¡kä®*{­þ쇔Íz˜¬õ[b· ;5’ =óï´§ØA5Èxö×@Ý:ôp=Ý«f<Ã,ç¬d1“N‡Œäöž b}ÜW ú¬3¹ èmˆ°ú »|€ä…å…¤¾×/¹8YÓFn2roTÏ$G-B¸0¼$•·ÑYM7<ã'(OdD¸I-dj;@ìVôfêPO/eL¸wc—º¥ÐóV9æÞõX¢×aXåL”Àxý5þOrÁÌ<žd î´ã´ý¨`7ø9ŒÓÖi3&:ç4 g ËâX=öà®}8ä ±ØÆ(ãD‹<2YõíH7б5œ™_¿ÄÐÈ€Œ‹‰9f(ì5{†MJÅvÂÒfð,DK'´KfdåÕ¹s»cšqÎLF xˆdy?ˆÕ›¶À 5é÷!KÆ‘e ¶CÑ%ý…ÇËŒªfÜÀÊY0•Ü€8éãÀª{˜,8ÙEÚ-uíêãŽÖ˜Á¹ns85N’G…2¾Öt§D-)"2ñ1xÒ¨>fŒÊ. EϲiYíÛ—Š ÅUŠƒQ<ÅeFDùÔõ€õÕJKW@åµSO@s”&'sÛžãcVžKÆ -„b‘ÊÉ“÷éÐñ)ò¨WWð0'RTÙŠ<Êäm—¿'È£˜?»œƒ^v뉣²˜8jL|O¥6 £½Òåöå G’ýñR8¤n£LòäÒ»½Ñ•Ù@ØHóFo”¤‚¶¡çö÷ 驪݌r6x=CXP!ÊôP¼{ÓÜéZ®ÀdxL.ʼÅ<횺”Víϵ™?åpú­½oFàF&£@;‚gg^ëøyC×eRA¤™™îá)‘Ë,`(ÃU¨HÊ`»%6ìM¢Ñ²s,NIª®Ô2ºö¢¬:‚ãeqì«ôÑèKDœd5Œê[ØHS’ !%Ù ŒÑž”%5…É庬 ¦%ÛxZ²›KÀ¤G¬d£ñ´d®mÃá,ä]f\dDø¼Èâ"Æ[ú øŠðÀ4)™™“’ÙÀ»¸x’”ÌTY–źÀŸ£Ò®KIæÜì®yÉ&O–úâºáò«]^G ø Ó:iníXý* ×­Ry³Úþ‹óf œ„y3ä#ô§f³tj6@@¯U£Ê6‘—mE/ùDZþžðrTõÎdmÙèã>‚·_äŽ;l{Å-ÚdÊYæyТð$¨h“ᤋR†Ÿ)sä4‹:,­º•ü½È´È ËnYÙœPÝÊÚ…Ò)qÙÍ~<äòÈÁ'0 ë}P&(‰%3¼˜‰òiqí¸ç žK¡zØk'?åê‰ÀTT¿ÞØâê‚óúP¬ZG)¸EóÇXåÐiôÍ”?AX ÕœZy7s¾ËGÚ ¨Y.´,]Y¼Ò¹—¿~ÑÀ‡ÿì#'#Ö˜¨&³„kgg5VÜ{]笫#îçS”mv—䂤Àþ‘€‹I'‘ b¤_V—wÎŽøöƒÉH¾·ˆWÚ“–ƒ§ÁÖIP¿=+&Ò×y‘ƒˆŸ™Ýv Cv”×;¢v³#º UqË:KXgüy¼‘ÞêHãÖMÎ ÃÅ™­_À»'Ã÷Á(Ý‚D½ˆ·uÚÆîËÝ`Fkíi 'Sûû#Ã}¯gñƒÃšê9O@Y)Ào~')Pn¼ `A îÊI6…ô $:YyŒj³$Î._1ššf•ó&×ÑöL’#ë¿ÅALŠ÷¢úÐäˆþiŸÇ!Jæ"#~'îAY$Û=zå*ãêWžŒÆ—žuHràzkt%M ´ç"–è°ý‡Éiív»¹és¤¦/Ög ÆÞÏ~ØÉø”qW¨ì‘Ô¡tp 1aÚX2SN]YhE%§¡X0ïnõh`²£ÈËb *Œô ˜EŠlS‚»]K “ÁŸ7”Ž U 2‚7˜¤ Oôe1¨C›–ÀWíÀ3”Þ8èD˜—šuÿ A1N!Ú5ÚÅ?ŸH´<´kžDíÎA»‰œ“‚y¾9ô.ë† ƒK;XŸˆlªÆ3"~óÕW¸yA:BýþÇo¾ûòsN<Ù‰ ëa¦®;ŽþýÝ›/KYV *(mèÖ/%Šò:½ÖÍ<(Þ8^éHÜ M‰¡Eô3 H}­BþÜJ˜j#P±”F­~9¤ôÄì¶_ÓUO€úu@t®åÓÅE¹è²FcÑ%·¬S1€»®çó"»Kp»Ü£ÈÛàž4ʬQ üH£Ìšdô…ÁV%™A P¶Ms6À’%dFˆæÓG'am Ë@_Ùµ ú]Ä€>ø»†eLJ8á|aEß^‘97NBñïg¯Øî<‡j]Ù(´ËÎ=#þ}ÏàòÓzû —!¶‹Ó—QRÈþ2Ì .S.B~[|üñ „Œ¿µ{§u*RµÑvGª «ç¥ÊçÅl¬‘e[™çÀ:ÊxØ“Ob:’'ë 'ŸbnuD¯Áw…gmºÎ<Åê&XÇ94êùéè)¸‡‰àÅŒ•³8÷àÕ -ó‘‚°ŠH…àvËíö¨(/çĨ¦Y†v<ð Àþ}y›‡M7%ÊÈýœ&›vý座½l÷Â!9>’ç1ÅI‡ '‹&¥ž¹Ñµé9è?‘Â~O4>™$ý@*B_su-ë®XŒì ['½û¸$é½Ä51ã¿e ñ8zl=¤Â½Q¦.7\¶qÌĪ8æ^ZJÁTœû#¿…g;°H|Dg€óïwOh„_ÿ† '¤‡NÓ×>ôs¹&ýá2y8iœäТ×Gíü’0.­Öür³%~ɨSOñvLŠ"Ӹă´{øj42R:ûAI _qŒôÕÅÓÒå´¯@Q.; JflŸ´=y£‰¡EÒˆ±< žäô T„‰šA¸71Mëà;ö0çtlq»VIP‡£´¸Pñ~3uÆúÊs+N¨@M¹Á Œž†ê “›`LGÁãY·ýR„<Ðþ%Ú)ß}’÷Ûøçöêxƒõc$‡B(óÂ{ RsA»‰g_ò•ó °–o“tȹógÞ‡ƒ4Ãün¹Ý+<©ÓûkÔçók€ÃÖÜ…ày9,±¾Ž¦b }åÂ5sG¼[›°<âê^àÀJ–\ü(?rÌ,‹rM†Ò]ª_×ó»MWtuîÍ ‹ œi“¤ÞÙËyd×´Ýîž`ï>Âö—ýæ»(; Mú2kEeèmTÁD°@Þ¥+œO¢`Dz¡Å‘ŸPA¯îìm¹mÀïèôj›î‚¿¹HJvÆÖÙ" Ñ ¢6EEÔÊØaç§á6Ó‚¶þçë²÷¼‰ûëÐc µK2<£(ÈÆM<9ƹ|"ÖÛ­®¦â"ôÖiˆ‡y6Æ#ÆšI\Fã!x ñ(3a°º£ÃRÔÚ1ç ²£iˆù‡üöy,žPErƒã»~6ª# ê0Ÿ‚ꬺAæ¯Eu„ sÕ·‹$ÁÕa7O :b1KˆÖ•Gu´ìhžAu½9ÃnC¿r£¼_T8a°|Þ¨Ür ìØèŒ(.±r†kˆp½×jx¥P«q-ÒOQ§w»©gÌ\ì‚1ßgL§‘&iH ;ÆH¸Ô™„Pusã` „¦pÉ!ÍA[ÎpuX˜@\ÝÛ&r›Ïf„v  ™9˜àÁUA!+â¸Bö Ýa±8øŠÿ=P­NðØÍ±kCh ëàQAµMµi=ý¸Ã æáÄ_> ‡;Ãí™&ÓÏ!SÆ„1u^G)<“Já5u‘¢´h%ÜÎð•9§S6œXÌãZi’y/…æ¡Åú&dõzØÌÐÈr°h;•Å+fY¼‹Žèb£Ä÷;k|¸)·ÊË„ØE…ôDgšrñ€ôU©+7`*躤™§ònN4æ6ÐbTW¥ja ²n9ô%Áßgêb7éÆÜX9¨I%¦ì=Û81ÕBnê|bêhß –8¨Ò`§cF‹Q ¾eÍ™©Yþ¦½ò7«àœ !­<&hïÅÜA²“gQ)Á•¢0qwoA‡ÌS;ò…!•`‚ÜΑþâ»DgÁ› !WÜ÷)=‘ÄÐ\ø3¯?î¼YÆTjeHµÖb«Ðruؤ<Åí³®ñ‚Eda)êUœ·±;–9¶#G0ŠÙCšYh=oÎ lñúú%V¾÷wt<NM¹‡\£'fm°a/ð|HMކØù&U!ùF8ê]‹0# ë š‚íÝÈ¡àCã@¬×øä½’l[ËûQ‹º\IEºÇ‘E×Ë–Ôá€E%Wx¿ ˆ#!×¢L°C ^Øjcò ßCBE󈄷·ä nÿ¨P-ÜÕrb±×ß…³  @Q¹ɳD¨Ó€v”²;$U9Þˆb”׉ÃVB&Šw¾OÅ}œ]dŠ»ñt]Û{}&Ϥ1:®ïIZaòÌ#­syø\èäRÓ·¹ÄôByž- õ‡5Bë€Ù€W!+*²¯<<  ©7jò¼.¡ñ ˜€ ²¯ø x–rOB^×5ÞÁàî¬od=/z®øæm¡âæ†0ô&ùÖTµüàÿ~âöEÞÖÆ_û–Q?‹,x?r¯Ñ5öaºƒ8az´m~CAhØÁÏ¡éÒ+ûX Gü[{:• ð‹3 ;Üh¦½”ìb“±•c%3c\'H«7˜À1%þ±äôü-f‘ð1¨œWuñT¯~Žež„Ú­ýYvÓv¾›.Âz0 ö,`âz”¥ˆ<ÉYEØäMG”Ox*;öí÷TÌ.YiÝH3w#ñ¨ÐáCbq`ØËš,%)[ÖÍ’²eÝ$®ù„¤¬:IóNhÊV Sü1¡¸ÙåIMØ:!aŠ?ž»D¨ Û´‰§€O]b¦>Z´ SüñÜ%è)˜’¦\äUŒ~%føg°ÑDz—ȦõT5S«!š’8¯ž)FiãÑ⌼äLk±DÚ¨S˜^k‘=ã²êŠ´k\v°ÏAàΈoìÃC‚ˆ§ì*ô‡ãºæfÿx s¶ôަ£¥çô]äYS¹ûÈ×%Ú»Œù*CRm6š·L Þ ;Y$2Ç)¶!’«Ál؉ÛHÔÅ×P EŸKeuª¾ä3¬/LPžec¢R¬Ïr²vÅš,ô? !êóZ{Ž—Ëg&Âq›‚AƒoaQ* ^îƒx1NàtÌJ…&ê«Å'+Ëg^˜ôAÅ¡ýa×+>€DË#åÈ‹«øU=+ ÃL#áy æ¼DÂsLUA åY‰„'̳$’ ¦"ís%¢þqã%y6•4èì¿8iÐAÞ`&BýËà5ˆ­àæñØÛ6»Lºö>&á /6l-•ó®õ˜B¾&ŧ‰ÌU¾·CB–lƾ=‘,I`F|¬ÒH¿é1(È·uË?LÛ‰j‚”95¤ŠvNÓeûÙ݆tj¦ä°*D¼ü<î·=g·•³£PÛ²–‰çY}Ë+DlHk@¬ hÝêK ØK*OQ¥7¨ßISÙíŒ< 6®ã®DB¦ƒõ–êYY©ÏUäQp»Çßþú‹‡Ó3”,5èmÕ×Ù ½,îóÀσ-yÕ%vYUŸíÀ1xÀü’«r-8úÀ ÇÄ=8YKü·o¿|㼆¿\¿¼££Œ V"ét¸ ü¨¶·"C\§“»ÆÛ¦šŸØ6×c÷Öír°' õÞ·¥ÀÏÙÒØ}ªŸ“gy=#ÐÛLÛ5„;t„…ÌYO(ð΋¢:í×ð‹È±eÑ¡ï3vFŸðbò.ïT‚¯‘-’˜ ˜²x1)ª›¼¨ÃËðTY…©¯˜ûÁà ©Þ®u LöÞÞ¹7iµþ’4„Cžž˜úi«aV­Õ˜(r›¶Ø°„ÞBFɳ¡±òm=Oé#õëÐÿ '„º~TdH¢)†š¸ÜY5Gá /ï:õTÀ¸H¸|dPÌæÒb.¶ŒÞF|ŒÓpþ ßôŠëÊ%¦>vk²ßRoôÏ;ÁÄý=ÁI†Ë/!yˆo÷CQÙHì?]OW:ƒ»‰n+Ryia÷Ë ("CE‹¯ ú`4ÖžzdI…þî+È Â^ Ê"L)®Ë–±ý;@hzÔŠ²Ø\WSM],²¥¹6(œAâpD%ÜÐgC6Äj#ñ!ÌÌaÛ’-TN»!mòˆì8pvŠÕOé“s Ù  •¬ˆÅf‚80 0çn8F£Ï¬íÙM,t°n9Üñ,áâ1aTYËas™¨3 ðí3íQûßÀÌ Ä@>KÜà˜bæHì¨ ¾!Õ¡1½|š¥Ñ/#šKØIÝ^£´x!àhûQWcm"Jn.ÖÏm¹o;ó|ƽ}.¦vÏPùZñž8¯°ËàKRžclv êù× ÛÓ÷œ>'¾ 4;òÅ5°¨øÆFTÞ4Ž!Ã>’ý+Êİ,äa¯)Brã„S*µÈ™©†•nPXÜ( ö)M›Š^(~óÞËŠ\ÒȲΠB€dŠÁŒÂ“IdçpÂŽd† Ñ5â^€tGíÞ¬ñ‚I“‹*÷6yaÌÀ«|G0Úš¸FJ G§nb[1oïéºzãlhÑògàÚ å@5:+ rÔ¬œåiñi¸= œÊðñÙR)ÌrÙ¢V×÷‚„b§††0†ÚI±7ÄÐÓnp ÐÙ8¤X2̉¬ AöJ”¶°HÁÈ:Îë8ò¸áš7×÷eŽýËý Å<.Zf]]¼È æùúwX÷h1u™ ó¨½JêG=7 ¢Ü®äp?:°†è¡É¢UôwâV@^¢Òk& È™® óÏò]·÷=QYôL?c¥BžCüd*8áMK¤'5Ñ—Û¾°ë–„oÙäÀ%JÙÅžqæ˜WÁ­QMÃò°Þ‚ [“ÑýYຬ¡#:L¸(VU¹Z8}Ô˜”5ŸüĘ ̃qÃçÕzÏ #šh†Èôâ…“Q¡X Äúo: AV¢Kd%ê…ýe%ìo6xœe%‹L{/ÁS…¹~ôÛŒû·ÿñ[ˆû¾þÆ!AíjB¦²ß~ýû¯Èy”XüH<—v,ÞdD‘È”$ƒ>Âxÿ÷»éƒ÷êg§ö¬E§-çp”îé9?î°ÇÑÝÄxqÒÁ1yó¥7!([ŠÊ7´Þ˜¼å”a\ðY4þ„ãLOMñkª8¡²^Rµ”3ê•7s‚ACûÈÀÑÈ~O‚AµMõ TÆ• …?SÚȨÄ7†Œqõj²sÔ@¨$ ê\o#V²˜Î5Ãê·/kÝèÌ6é>"ÿÉe†1+ ¬í+—xª_N ƒò1ù‰|L³J¿[þDR1YÙ¥„³2t¶Ïåcš8…—„| ¾"¾e8!ÂO in”Œ\m—iP0‘æ ó¡ä ý…!z«³™“ Dɳª<›*19¦­Ò”(6&N§2LÞ”í”(xÈ|×&He=?:ÛF‰ñKf¦,#·‰”eò¶â>9?¡3ˆäÎUt¶cÅê·.ÃЛȱº¢í`x¹§4Äí M0 ëàí8Y“#ü Zo¢,Çê¦X Žö˜i/“{îN~/XñF€$ ¸ áFÀñ"o›S䤄ÎÇ–Ô¿åN°¡`ôlh£n9´æfµß ø<3¤ìÞmH‹:iHñç°xˆ ®6Ïê?×næáEƒ´0¤„™2¿ŒÔ¹v@FẪ–Lw™n{>f̱SÛ…ŽÒË ]/wÜõå¼K$Ê¡œws*ç]Îho¾©×Ü”y“'llYugÅ 0¿ä<ç­T9ïÉh(i¨§U6å\ãe<þ5tRe[v3:)e«E–§S½o^ܦ·‹tHó_$Çà"Y°=O)–„© 1¿eÌ)i£ $ãeƒz¦"ËÆ$3À·Õžì¶SQ' Ä‘©Ê&ÅØ»®!Ý3ì•`©f-gO €ªŒãø=>”t­H«É#¢ò*¤²>öÄÓô0Qœ¬.hw³wÎRc“dèö× »~gnfÿÅnžÿÌí‡&/X3w6nž‚' ÔÇ`0;9 ³ÑziØrÈ gž~cR}‰’1¦4Æ$öBÊŽØ*äÐáô”’µ.·tƒÑhfõ§@”ðvf#³?y52ïçÏÙÿì¯sŒÖgvK+‰,ÉËOËkg”YŽ¿G,&Ü^Fûnv”D£ä³5õ‡©çñóŽ>Êíºôß‚i§ •ŸÐ[h2\9hóDΞEïØIØ“—[f}kP‘¥]é$Cñ›'Z‰‡¨ gð4q#—û¶æò$…uÓarýøU õŽ‚¹!»hŠ 8~ÞÔ*J ÈyЖOùL–çy*‚ŸCÑñH*ôÉȤì”ÓÎND=~ÿÞ8&0 ä`ɰ Ôk 3çø\ bL"ˆƒ‚Ç¥Y¤ÔvrL”Ÿ!sÁæ—œó:êõ›Ø_¹ú›SZÜC1ˆÎ ;|̬Ñ@9†ˆÔÕDáî=˜êïmèÐbZÊþWW*†fïà#ȧîàyIÍÑ&Ph žÏ¦8jâg”°©FÔr:ljË,6 }9»팽£MðŽã—‹Â&×Ñ}d¨ÿÀeZÉË=(ðøV[GN%œýFI&Ïöiü“‰d tôO=‹;ÎÀÑÍQWÌ@ÖÔ¢7‚ÒÝwhöûˆER./¤s®I¸8)«rEˆ?*—¾)-¯œh§ ÆOšlQ†E$îÉ«r¤`¬[V¯&®£IÓ pr ‚?bW@­ßöwÎÞèȉó ˆÌ¹—‚Á^j¤.õf¡j^__±¶rU¸ÑxÍ’{=n÷ÐH7*f”þö^à'ŸµQµèöÉN‹n–B£ºÞhœÀæ„–'|áKæÔ}¿íázWìíÕ`ûã%ìÁÈf¬líÓ.ت÷ßme½IÈ“f ˆTlçù©Õþ~rWãê͇—ÒiÛa?¨^øøöû÷I%’¦\X@C£ƒ(†Ä„Ð*‘l›rÉ£ùªÂ\ qˆÝ´Fjü­«åAvL}ê*^@A:Åá”r-r}G¡[$_yx¤åʸ–5QYÃJçŒ~%«=¯HÏâÝé2˜lr÷MšÇ›ýÙ{`ÃáxDG÷ wÐ/úc,*àQyÌñW´9õÞòvõûÏ(yqì×û—hXÜœO5ã¸2!R;ÀÒ¸¥™×s<µÖ{|d‚<8÷2S(¢ŠO`E‚Is\"‘eð’Q6ö‘8ˆX®×4’\Ã$êvý±G‚Ž “.‰8J}ÏW³¾%üL^ˆ£­)|ì×äù‡O÷È͵5ÖQùÝ—JuO‰ÁÜðÇÞI¶÷\¨~xòŠüųtžÓÆkùuñŸì§n1FøÅžúÖ¼]ãuÔQáÔë3Î"2ËÈÀ…8^¹ÊLlZ¢,¥W]óU—·ù¬ UØ`þô81/ù¬Tź©w^{¦ ØÁ(ÎlÌý¡ÂÁ6–wÅ^ö|Jâš@íH-K_¯Êü~I<³.|f*V&ò"Ÿ\)| )u9kD ^Žò$8-}U6$ÔZé aFéQôx6Ô°çÂ5" ¾²lã…玙cOš˜…`z§Œ7ÆêÆm²Jʦ*PåKà'«¥ÐÏÞxÔr¥Fç¬]ÅRùã‚°¹MPÐ#Û}8©È"HôûíbGKôĶ;u¯MÍ°ÈØÔcÞáósáMJÇiÄ•ÙWø<Ù”,•MÉí¿8›’CB)õ!!,”úgóÁUž’[‡_ç9 Ê"½S4ê®´u¶ ̰Ѓg©} Q$f„Ã@Ë’¨-Ò‰Z8f6Ai\IC2K%k³";/óœ¼n¨ômm[…WŒt 9P‰Õr‘qeÓ ‹5˜ÄyýžÀ=üºãéØw¤®œDì‹¢àÜÛÅ,‡ÁkÂ*cÏOl–û þ%Λš¢¦’Æ¿£Ž1wÀÞv€ûÂK–zì0ý‹cy«eøöšpÀ<þ½|Ð!þš(ü½Õ GüÝ”ãJ€ð³\M®*4—›ƒEèm¨Ð7`ð´Aè{é‘õ‚‡Ï±uÃþ9aï<ê5EØKYÔÓøG‰zK¤ûû%¢Þ¢ÂZé³£Þ¢®jC0Ç•-‚b®î07 ÞžtÂKÁômtÁéÎú<™ôLq$$ œ²H*eàÏs—_'Á­¶³4=oæVtÈÕ`ð(Î8ÒONˆýñ8¡v Q'Èc®.ûd,P+c#ðÚ„,g< #üÖ/¤âDs‡èrž¶¨~…xÚíqEÜÄøôXü6 £…†n€(#z$Õp^Ö]áíGÆF-ß^-_mÉ—È3‰æ:ìi"„yS9ágÙçÁmh'±š–Fë}t빉ÌÎ&á@ƒKbˆ×RŒÏ \ îæàųAGÊP¯8(;àÚHb}œ|a-^êÄ\Íî`»,ˆ)=ÇÛyK  AÅk&¤3„ºÞ&ü¾?£ ›oG„ʸЭlH©`)Ó@5ðšaÐòŸ¬þÀiL2t(Ôq€ïÍ.% kÃŒÚu¼ô Z8ËÞ×¥ÙÊŽ"ŸóûϾ|óíwo^¿}÷ö›¯_ì1ŸzE‡Ò4í0 Û¬ºÀkHQå‹ï^}û»ß½úò›ïÞü¿>û•„8èãcÛ)Ôèb.…;î5Ø„¦¸”Çg¡A×A©ßûvB¯„-¦`ÜÂÁÓâaýlµ}\“ÁÖœ²},ÇÉ™¿gõÅKÔ›–Ô@¹†šÚ pSÞkA1¢¹’,"8ò°<Þ¢Š‡·%8 ×KL‰ÒFXú»ŸP1ïaºÃö¡µTÜŠƒaü76Yp¾Ì08/ËMÏë{tTŽŽEzÀývÃýΕÚûÓñ/Ç]/±¹X»\*Õdèqc›¬T@%ÁH„%ÄJa ¬å;¾À\Pè­]ð{û?Éœ++îwÉ%á UïFØVÖ®ŸÌ=%øñrLéù% „8C™s½Zò—$`¢N¿+¶(¼NF£ï%gNXs~N¯§2;Éÿ«íðè•SùyhÖþÀÁë‚ðª*ûä(‚"Â6Säm%ÀìV€Ù§(Hî–÷÷ ¦m<×?ÅPP»@ðn0Œ„ŸÃÄÅWË{œ[Âu:U`:ç'¡’2ÔGé Òí½ÜÒ—Ü¢–5u ,·ö1û£tùàó¡ú0IÌžÖN7Bá@¿½<¬{1aF‘&aÍŸhÓÑmV4ÝN-§þÁ ÿ:«‰,-y“Dïr]‹Û-øÛµÛ<ÛSPxÞ¬Þ‘åXÑüf'­ 0!î ƒ+{¼uàͤ‘s~Bª/Nšr7gé™ÁN©»zF¢¤ò^N‡˜šÐxnBƒ1`JÀL<%nܺrÜÖúEÏ&4!Y p«±ªKÏ8„Á>þ ./Êue¨\WuþTl¨ k½OhÖÈì¬ ÎÂû%ãñ5A?§fã Õì ñì6¿zqw‰Ýƒw$ÞŒ+Ï>|å'h_ÂüÄÃe}½ ¼ñ›„|X"§EzQ'fcoü.õàa§u–Ùm¼pú܃¯l,½Ü­+äźÃùá9ß]-ÄuXSFeÞk–ÆAºÑÉÖà8L_$V(Ŭ 2yòIÚ]ÿá9‚–Gn$ͳED&7ó\Qž—©þ„%° :ÁM… I¼Etm\zKS)¢°Ÿ4/0 -‚dBùÍ " P°Ñ(œ:ј€ÀÉ‘Hhkm¢Ã;±Û£c×Êð%âmOšrxWNÏ’&êíG…;¿Â0áÁ1è3ñ¾žhº§a‡+ | 1•×uëú­7xPì~¿Æ|±¿$"¼ÍSDE–Ÿwíñ€s×vz,äZß*`RÑ,.ôù§ù´aí9?ûÓÁßÄåt±÷˜þ•µ=°HáGw‚/O¹ùø8*R!7»ùì£%¶tÄ>úʾ©}{ûŸnp?Åg‡†›¢BÊî'}vx3uVÏ÷Ùñ¤&–q i‹®¬OUçu{ódóT*i’hjôXÝœžœ÷<Çgöž·Å+“vT“§ÄÏág å*g N7OÄËÈh$xúŸ¯ýÝÉË—­ÝƒRmµa©`ò ÃqšA¨¬–ηæ2døgAeÊë½×Ó“×£¼®ˆ˜r“òz¦b˜À֣´}ÃþcƳ€Ò:)L+NÛƒ¦hÜPeáIU0ö¦ Wqbþ¶ÑÎÊQ¢N¼ú"é( Ó±‰œ#&ÿœsT†ÎQ¡œ£*rŽh§h i§æ^:=‘¸¯9ÅØÍ¡„gªÅèÝ£‘Å~MµÞg{Güø¯{GØÂ|Ê;ª2Ï÷KxGé%ý÷xGU)i®ÓÞŒÏKiU]Ÿ¶yeTGë|MÈ6d½öÏ Ø`’qïQ{îZùC(Áiý¡2ÓþÐq?‘G4Åýk}ÂhˆŒ¢·^¦ª••ýg\*HºÌ2.3÷ eˆ•c5©ìµ÷«ˆ„WûU£ò«nЯ2kv¬fLª£/ û¬KÒ¿2MV{÷ê"ŽI&‡Þ|à‚cÛ”©zcÖÔgJ ñ‡ÔU}îôV··€zš=çéÜiStX BäÕøãs*W§ÄþðØ ê­ïóÁ×EÏêÑÔ× -—UEþ X8û?R»¬»ê#5’rŸ¥)ÁC’1¿œcvÇÄ$”Ž*ÞŸS9!2,ìˆj$}£Ï•×tßULå„yÀ{¡u'ûÓd]Ö™‡‹Å¯ƒª¿œ»‚¥xùÊÉb.䊈ö%#ŠA¨{4z®D òÙ~è‘`/0S£êQT^­Úœ/cN=ïõê=2ÒÒñ˜öÑÌ{AÚùqã²¥Â[zÜçåÇ©GâÒÇÝ=¨d®ˆém[ä«„¸ªª*¿ðO  à “fŒ±›,µê‹EV›s¬p@úãá|HÆR$H©Ï b©€;¤- ’O %2ñÇÙÒÏ -ý"ˆ¥нªS±T±Vîg¡ª½ÔAí/D%ª ž¦(Ž~)¨˜d©Š Dcfn†(±ûkÍÃÏ7CrÒ‰0,:É×[ð¤ ÓLþÌ9'¥“ÒD¥<»íÊs¨ŽrQµiTGY´… âꪣ6xHìÐÐlÌbPGÌØ2ñK•º„•†H¨C¦ŠA0¶RMŽs;fàe­.ÎÀ¯éi5¿ѹÀ¶ÆXcȽÝ(Ôt©,## ·(rŒž-Ê’D•lbÄÔ¹‰ìsQ³T:iÒû^KŠ6‰ ¹#F|™Ô82l^™¼Quî·Kb¨÷籩 `¤}£(Y1Æœ. jVô°þR¹˜E§þΡ&Úðx–'@’La‰b÷̺áû)K€r$+&5Zâc³7;EÑÛ4mˆf4ƒ:@XwΧ3Ú¯$Q%"Æ‘®5ž#:H?üµDëñÒ‰UOŽl£‹aÂ^‘”»D;F[6ØbE¤œÀ«}:õ1‡Õ>‡ú„mã-±%¸ ‚~¥wšðêf£Z{©‡öòñÞõyÄŽLÕ–xCçqB}[¡dF<*ñ@x5'ýáÌ\9Üï»Ûc´¤„ì!2¬÷ïB4^õ"KCCçÉqô#óÂÁ¾o AÂdnЫìÁB«T UÛq UC¬õ©°Ðd,›× X¨3ÿåœ6r¢áT•;=ôã‚:Št ‹lÑ+ ©”ë{Åp"ÍCe¨xá¶ê4tî±z:]¦œš!COÐéÂ髞ɃϦÏT>¹I¡Ó–•X¶Sþþ}æ¿õ↾[Fg𤷥QW$½&«ë<Ü¡ó×Sõ~bp×`'ü§yUYÛä3Ç1üâ:€iªª¬8‘ÅÎQrA Zb(xÙcÒß¶ÊÂN¤ ¦3®ßY€¨é]æ\|?BXÖØÈ%S¸Þüºa!¯å0Ë`#âŸéW7sªßJ©!+kFÙÈÓ®‡é}¯_4Š 0Ñ¢(…}ÁÑxÅŸ‘6ZñgÃâCÈWBMÍM‰ß×w¦B‘8q<‘ƒ<A+3è›AqoÂÄȦ'fíéP‰å q „”¤æG-ˆ’Ô<ï¹Í؆b•jØA",…?>Ü£’ û¿ÀÖý@r¿¤Œç®š ñ±y‡(©G·…ÚUÍ$ÊFê_|"¡¾q„ú5¡~‘W¿4£~QÔR5 CÀ¤\åM‚‡1¢Q®Ó4Êõ<"B{ {¼ÓRnãüî)ç=Ìõ.×ËèܓیÚu”Ê›OäSn¿9Ö³ÍÑ ôš£f1ŠÌÊ*AÒX–e}–¤Hq=Ó¼‰¨æõg©æmˆ†žwÄ,ØñJð÷™ÎD-$ߋר«êì5àïAExÄŠp?¤XšK â)àg2Qv‹ðóž¾À§’BV‹E—Tûsê€~ðxb¼ëæ³±ÿbǸß8‰ù,³¸|k!…ùô(òèsDí¡.f`ïž›JxÄ¢“(‚  k•`µc@µQ¯s§8Î…q Qá´9Siù;9ˆþh|%{“ºÙ¨ÓÐa[Ã9¥»?.ÀS…ÞN F:V?Ê9GrRÓG ÁyÑ¢"â÷Oa‚Î!8O8ͳœ²8à4iç"8»²~€ÓœDpžpÚx ìÓγøM“eØøþÍ;žÆ0hV•BDÃ-Ãz†ZÌ$‚ŒZÈþ“‘²9eôàA„7˜4Ì€´w U –*Ê{=Œ)K¸Õd½“°1Ó™Lð2¦ƒ.ë‚!#t½H2BÃÏ'‚ÖI$‘twС¥Ô«×Ô~.ô0¢î¸óFgÄØð±qÎE¤êÏ–#Îô-A4¥PÃõç ן1¥Z}’]V ðޤ‰í³ò1"’åc ˼ñA ¢úñÀj‹”Ÿ ‚7 ¨v ¦ŠÆh"Zf ñyØ2NÍR]²Yʨ%%Ùä!ìõÉ‹Ìuítص“ùY”Sþ.÷úýöÖFTöžÜ3š›¼l²D’ÃFX3w·ªég®Í¹:Œb=·#N‡œ¾µý¯L1/]‰™¾„òù€#I9}yn]ï¼m‚þšªÅø£œïÆÑ ¿z‘cÃ2üªà{‹|æiÁöY«÷ö?ñÙ×üìæÉ^ÛÀÿj©ÄÖ¥8È"ÜS”Å Ig.άì Û÷Öª°“TP0‰ä†ý«¢%˳wfðô—ûܾ9Oš¬+=H*ÖeÃéÛ¹,êšyËXçÃÂÑ1ª`ú€)ªõ@ຠkj÷­A¢Þý—?¾Ø!£C¯H‚úãQ©B8Û¦Pƒ¦è` n¶r«Í¾^¥ˆ&ÖÂø4—êþ_¢!X?®ð!¨¹yºà‹à­zD‡$´†¥?’keŽáyWÒ¹AòVÃoäfùZ§%ì›î…–JW|ë¬D tk¹Ïà]PõÇOàÿ÷„ž9s9ô»þÀªÇâ<`8ŠÜ¢ØÏ}X…J?MëGþîeŽàí`z¬ÞkB¥’GqÞ$ûÃÉ… ý°ÏƒKøSé’à`½›™œÆyTÅ>ÕJƒ¾ôý‡Þwô)öhMÒ¥(Úø1m8—.5¹kŒ’À&Ķ5óUö½½­ZeNÈÁqÐBÇe-h¿s4 6),ü8~y‹UŽä#0©·Wÿ8 ÙIJzcò.XüGêèafá,ZkØkZÛz5äøžS¨`¯CŠ˜ë.w-€»ãr)ÏÊ¿"­ËTyÞø öŠJØJA{SÁÞ;N“Äk“ªä´ö_°¶³bÀ V‹k"Ïb6Ò¦ÂÕù#†åˆ¨e¶¬èFOò;ë “¼ºÊ–Ø0~Klóm˜¯Qu‹Sxøó³ÐøØ2tb7ÎŒ‘ï`4ÏL§4uyÍO3ŠúÝΡŽ9Ž?:ɧTà¤lQžãè°AŒ”¨âý>«Šì´î†Ý <$a|¿Fd…a¥h’Õ~µLµJÕÔbÞ“áµËï–¤üZÙ6çuÂ!-ÑyFºk ìac*5“ѾG ªAIRm .Å1žm³ úaËêñaÀÌ=2{žŒ£•’È K7Oòø‡ ö!sd€!&/'­1”/²Âœ×²‹µLèPüùüüH—ªì •ÿ&g顩Ǭ*ó-¦Ý=TYrY\<Bê[Ón`Wà¿t7q”«¨ùÉÀqs6n1nÜH?—‰ë~åñŒ§ºª¦1n+*N›ÔVäðÆySTIèañà8qáÕ)èaÑ,‚ŸhãÊÊż+óŸóûW¦‰„D >Þp-¿ÿNÕÃ_ÉI]IãSõi¶ô„Ue—6ʸÁæÂÌ*Ì…#Üh£^6þ¸*þ¸?[^Ž5†XBéVLXÚ@qÙ ·ð]Õe…>6Ï—mNWžÏ"„ì MT™øJ‘Ò)„!ãŽA`;î  9^:>o~Ÿ_Å+ò#Ù¤0È(±+óIMílûxé_ ‚çMÏ.wµaüñáÇ~\–‹Ú;¤eÚ!ŃN 3V쪺4 ¶––rާ+vösòºé$N‘×Á‰gZ:{dWw3ŽzüQÀ^Ï1\²Jz}vËü/®k=ÓÈIQ9+ÆáB9˳b/fræ„Ï&‹ž€²îNm¡Ç¥õÖ.Ÿ‰óŒ·P“ר•òüŒ žÔtÝiœ'ª´t‹â„$© BêJågåx¬gûcM‡œøÀeÄ_ €žä‰››d+à˜ØÈÇ[X­„ \}UÑHÓ¦ñÌNŠVKvÒ9Òób†ôÔ( "=‹ª+i°|hóK€•H¤*PÏ…yê9]x¨çÀPÏÁ(¨g¯¡ž©•\5N÷\ͱž&{-&ìY¹D‹Êó0ÚsRhO£àž#Á=7ÏE{²¨ Ô“º‹ÿ*ÚÓÜóÙhÏr²LÿhOV~ø%Ñž,÷ ¼;{"›Ã·z¸±†¢•Çað¹•Å> Ç׿ÿòKBÔðêfb8$¯i´éry {Úàjè«÷žWKpõ¾Ìvg ™|¯9œ«žÃ&[ÖÝ"±ÕãÏó­Í›qüÌRªbàê©¥G®Ÿã{)5©rNî-àUÉÌè}¼Z-4¢>Q Y$øŠûKá0­²$ú¡bPÄIxâêOÖVôETš,v°2R!¿ÐéÒHå¹>W‡Û=‚2ËEUc«è äÚP½F†v‰0´YØQjêé¸H•LÌCq‰Ãu·„ç^uÇ<¿Ãu§O+ÅTÝœô+à€:è¡ ÜŠ¶:UpÉ‚öÙbÆTÐ!'Ân˜:_A+Í=.€ ÑÅÊÁsªk*CˆÔôâÞ&ËÑúœ³§‘>TÅ'Í&ÔêœvBzvB˜<± J$XéãYodTÞH¯ÛMF¿ÙÃ÷}E4>Ž8g½¿£íIŒ«ëʤ‰¨dœé™mDÏÌÁ×z”¯À«“†Þ^RÔ*ÌÕêBÉÙ 0YwÙÑÿPqlÉN‚@·*ü¤T!8R¡b'žd_å’JkxM‰˜^±ÿ`µÂ0Kñ¿C†Ä×Ű>îWøÑ1㲉2.ƉI;bG¬g:m;©ïè±&€ÁÄD?ôNƾ”{‚6“ÊíÊìÐîØCÚÆî˜G×Ò ce¯s‹Œ@J‹¹Ji1ž¨™{¢¸‡>²õ9GÔûž£ÑñWÜèù©z‰àañ”)ÕE›/*å§ú‚à™µÝ;Ï•ÚãF¥I{®›¤çм–º” KMTÈKi³ó:ÌWs²W‰h‚šœóºI8¯6*Æ~ÝÀÍy†ój"çõâ¯s^ö^ívºÈ~aï5¯Õ?÷š×Ùâ¿Ù{ÍA¸é9ZY—ÔBÈ$±if[(x÷ލÇ5_‘HM€Rò‘  XC™¥OS,òX ÆÄ>ìÅó|XS@Œóa›ÜûyYžö2¿·Ok˜±ó¢()2þ¢Yœ*ï0P8{ ºC2§eìL]—8“Óf%ëvæD{^ªUýÏQN+tcábJtžÏi™r}X'sZä‚ZžgREÇœ†ö–Y¦ÚTÐ^C{˼>“ÚÂ# nqM´0—UÑœ âlë·0çÍ å‹¿SÑ÷X0'dGÔÍœ7É$× aõ6—£}<¦˜ Ö #[&ǧä»9+"VvÁ1ÁsŸªÌ(,Ì $Î(ƒ4 ‡ÆALb‚2ŸDŽ™Ýý¾®è7°(ã÷ûAë¸U%z§:¢b¤"6=èØš¸%Ьb ›mÿf«| C<W æžïié‰ŵêÑ,¹!­}È/IæŒlã5Iì¼Y*!¾)(äí0ôt‹žûtFT7`ÍžëæRfq´]¹)Dt¤T­‰|—IM»56æ _æÖ*„îo—äg³·âÛXœ,–Ø8_¹·vhÍ^³Rƒ‘»Ñ†\ˆúaWõ­¾îµ†Ñ€ ÖºòTW83Ð!;Àä¦tÿ2jáYßLð.d´bpqÛG:L5®_;Ø,RQ:0ÆQzú¬XL.hî…Fã¥mdm§2§ÏKœšdæÔ·=.5<-JœNÎ÷´¶È÷=ŸHœ¯:÷á{6`ÖQד ÿQ M$Ó¼ Ú÷é*yåÒæsBûº}ß䨋•ö<‘Õ¿ó'’r’>ý4@RŽú¥Ï¥t/#g7Ù9nxh¹+Ó´‚E¾X<Õx‡œ˜.’G4g/‰÷æÜ‚F°còà$}Ñ€³®,Õ•ãšIÑåôoÌVtµ²ãÇ ¾ýÌ1Æ7·­©ïݸ3ÅK¿™âm¨Öi#K.MfƾãºaÞ‰O&Uê<åzºoÔ›Îà'ì3b:/«Œû>ê±ý:–œ¼¨Û2Ý‚²¥´yªGž×ðCŸÐ•U!{Œ6›]™›1°ŸEG¤ÄÚ~®C!¾¤ÌJ…/éÒfJ÷rq›­á>[Ï-RP“²^´gt<àì-”úk:@×—ÛigzÙ@·@D%?>¿§±c×faS.^~ ¸O.¼è¸šÃö=L^ºBó'¾BçûSgW€LW<è#Τù•pß÷ôþ•5Å'þUŽz)Ž”Ð c‹¼9»hógŸíGDÎ.Ûæ” weš,Käö_KäNÌ£M@˜Ó¹66KK@ÏV’7]·FB²{N4KÃÍûÁàÛ7qh€¡Q½œè„–å%"iŽn"\rK|ŸxæA#°$Bø·vÇQ'™’Ñ-WÀ·côÆÑÇâU+š˜ðw鵿§‹˜qÙ $Í9ô[aÇ2 ž$;¥#[…êEõ½Ïƒî}ÞÌz£è”¶.MýÎ3]h&Þ#ÍրܴÀÁù㊧T7X©³ÓqÂÀØ—ì ÞöË 6Énïv\[2®¤©hR6œüÞÃSÊ.êGBýw­ädð&ù£ ꣦*yé»ý‘uˆÛìa¤,ÃÑÎÇߎ2.DÏçÒH®þÇK(C\ Ò3sÒÈe6žø’‚¹~QgT†%-OkôãnTå–[ÃÝþµQ1âc2ó ñ4Áä¥dÜÆ‰g¸Û‹hWwùø/È7MeUøòvZ«;1¿àÈ©¯#êôÂ¥ßáZ%™Z*F®û2Ý‚£CŽÃ±(zÖ!Ø„m JAÖ_#æ+VÊÆaÝb7¿kG«xD_ ³l ˜ Bâç礪‰.öï@×øŠi mVé¹ÍXØ üˆ÷êÃ÷yÀ×T6ÆJQ]lŽpÜæ®â Y’w·;ª±¥"‰2š.ƒ 4ÍìEóJš‚*­ #ö—“ßè·û üøÿ|¼üO‡è¤Œé­þP#«gÛ,yEãon½ÓÕ¸c1ÎÏ´’ÍÜX#%êÁJ©‡×5ѳo˜·[L©¤û€RÚ^Œ«íг•+óHs“¹µBný‘y½öw”i¥Ÿ¬…ä:¸x/Þc‰‡KºÑh¸òμ?A5À‡ ©B¶ï€?s…©3È[ŒúKÚmûxôз'ßFžãóıѤ/6¯hª \…h”G/8YæW­¨âpÀÍíŠå=¬ãGÊ+7iFƒ‚“à®Æ}GŸfÿ"ë›»cíÖ‡Ô~0:¾Õ´ž§a=Ï«zª/€? ¯°™£$Š-´}¸xp²‰¼û­ ß?ÐÖEÊ.—–=p pûòýnÿ8Œ,^ÅĬDµ]YÔò” ìŠå–eE'Ï™è{B…€Óל5éEK®2ýÃyë]‘….Ù Ç›¡ã•páS =c¿‰9õ«œîs‚²‰R8($8Û!±’6À~+IQ‹+ þ.C¡A¦DNáèj^á!³QÄ¢)8GzW¿qã) àÔyÇ@Áå–1gò¼g‚4!WóV‡~‰ª—ÐÛ‹yf˜袮AÇnÏï/ÏiøAÝ7ÃË?<íôÀËeZÂ¥¸8±8G·¯HÂ~U0°½4¯Øi€Wšv¢Ãy‚ª‚ã%w2i]ÛÆ»#Ÿ‘ShA+`Z–‰Û8šn½ÄÝÜ37Að4Ã…O8ßp“Ä×ÂèÈÆ{;ñ[Â-`–¹Ë6'¶0Æë5n¸<®–æ&P5´kk‹ýÞ‚¼“|´}§?=Nèëã#ó ÏÓaÒ鮿ÛDO 3ž>“v; é©DÀÌgÃÌg   ,â$ 7vEØìýz¯¹$.ª¢ÊOqæ(OeŽ û/Î<šaÅçdÈ(N0w"jma‚Æ(Q=jÛâ"¤1ˆd®iŒ¾‰³Ÿ¨„•Ï>TY,>@Æñ@Jx:e{šDÐÄRÀ òÅ=Å!÷r\¦íNPQdy®šàŠjW¯èS³!ï"* ÔjÔTÓœñÄñÞF‹Ù¢Hµªd…÷ÜèöÇhjŠ!`¦ÓÌM[˜¬ˆõêèý#ŽI*­“‡guU¿Žòô:ÊM¸¾²°1˜¬•–°~šeO4žf±œ»0Mª'¶õùç™Yò<Ÿ3³à'—Bé— lçE±‚ÁE ?­fi|¨bqÆÎ/•o>¿ô*ß©ó'u~EM€áù•WõžŒšêùë"qÿº8}ÿÃr7¨û7˜í‹Î‡ÏBT ¹7ä:[Brvϱ%&¡+žwéŽÜ¨zÁÖDÂ]÷ìúƒÿ”xj®[uŸ>uR§‹4¯|ÀƒJäõöxS”Ù3«$ÁÃS«¬yö©ü­äÔ:ÏÏUÈ‹¦MK’š2ËIÒ‹¹$)rfÝg¥™ó9øª3…FW±_ &VáËu«ð]¼Ÿµó‚'8fZ…oªvLM ç8«ð Neø¨jà4EI[(ÑAé#gp_mr¥g-Ëç³UC:Ôl ¶aæç˘å n¼*.Þ«×Ð2ÙHOÒ3¶µD+§=]ÔhßNï˃ϩBNÿaÕß?ˆ"!gƒ–·ªô¼À1`N»ûG)P^+(O»Qd(øHUN U6B@È0é9tr¢/¯’÷˹ Q®ŽúMÑà’wÝÇ3Î'"ˆEWÒ¢/Õe]lž–ø‚—¬2C*Ì™o0/S„:O‹6`›þ'Ôw1Äpš~gLÇÚ½šaäx–óí[*øÌ#“Mzý‰¬bËH*6£®ð93’þbOXáž<îƒg UpÄIw@`D!ýbK„‰ßuŠîJ°iô© €†µå{ý:&…¼IÍtòQeâ–âðÓÓÀ.Š…æ™%ÅÆËw½ð5×…õÊ7†Ãâ% „ÙXë{¿]ºb½ì¨ ì 2oƒ÷#°ZX[ýŠÊ=ÂG>rÕ(¶L¶Þꙋ²ysr¬œó°£]q$ ¤z!¼3bLœ5¡FªI1gyä6vóƸ9û'Ó•õÉÄ‚TFÝ£/(™»ç^Þ,¬7ñîC‰;¦éÝDeba%¯ÁŽ*ÏŸu3çÏÊóüIþ,d'2uTÉPóìºñ“H5œc|C" ÆÄ¤Ï!ϪÛJe‹SYŒ$ û_”Æ(Ëd£|*QÖ'®Œ¡íùdž>û|6/BqS:OPÜi8cÞ…YŒ¶0yQEY ¸JQË š8+Șí$q€>DÿêŸ"îÖØHƒ‘Ýsjñ&$ÁX»XÏ"D÷So«ð¤6«B‘¶<ïšSÔ·º~‚tkqÆßŸÓnA‚ÿæCÜ~¼‚]£C.ä:`‹’j\s<+ŒÓ‰àÙœŠœÎH°…k‰œÏ¡«WÿUhµ,ÖHŒ²h㎔çZ£ Õ`™ÐäœÔeÀ½o½ŒpÖ&”²'õÏrÙ3ã²ç;¡`Ç=Qå4%r¬Òœš¸#É£Ð|Ui8–GîJ¿Î$¯;ø¸Pº$—Û£àáb¹¦MŸ¡Ì¥@D]`g¹ÎpV‘ž”»Mo¸*´~¼ßN+îÚB?K¤Oĺe‡c¸C¿\/ßOÛéƒ*CATõ°§ ¾6iÁYÕàN²¤ï)*~ë~µÍ(ñ%žFœÆÓ­ˆ¥\ØO Æ·ß¿Ô<Aîƒ?tSùT†%(3ßtð(6ø”®öTvY¢ÅÝTyÑœå1¿À#f—ì­•ó%&PçÔÇyqOÜV–‡ÕèmyU4ŠoœÆ.ù,a(xH`®ËTDPÙqDPAPði˜ëXâÀ1æÚÎÚ¥ìN?Ç2¾‘næ°};o« ïÊv8ïö¥€°­¬ ú šfG燬â!ÅcžÙ­²ó…õ†QfD!>Î`¿ì¼bBoÉ3:q;*6Ò|x†N‘[‡yzfÊKòK2…¢9¬Ã UWÎ0‰ã³+®Âe¸(‚ãhÂL®[%Ôy±ÞÙ"Z‡0]>iZÇ_ªk+s®¿-;Áézʱ™‡;ö¯xÈìÍÃ5vÑk/g\úP”³2ÁÐô1 Âq/vžçs^!ãoH&†YçããôÀð¢:Ú<ò5ö”½£&&W~û€NDËÞ$±qïßȉ¥.—[£JÇÆk'²t…}E<œµS/ËÊeÄfÄn‚­Í%o¡ÑZ=¦iѬÝZ ãóŠ >º¹(ª²¢³f{ÉÊq¬Î¨šÍi®æ¼«R\ÍØg±ˆµ¼ÈÛ[x-/µ:#ù®É¡äTnŽgýåM ÍšYPO°þÒ¸‰‹—C£)ÒÒ#)¬ÌEÕ.¦hÛâ¬ÁfWôÚâ7&êç•Z7Ã\©Ä¼‹Ò\z@5SwMLŸlcÓ"2GGz'ó‰Ö¨Ì‹HöÉ(zj',O1[÷OZ g•ƶÐ"ùÌVØ¥H|´UâÞ&ˆ`¦A‚D½­šà.ñÚ” Š5½¨IVÇUNmÚ)<Áw¬ˆ;ˆ¨MɤØË@j5ˆ$±ë ëHÆ-þÒî½#fý.¬q[2= 6HtIŒ%ÐÄ:f8Õ÷ðÿ¢Çj%‰Eòµ\Mí)$©á¦G/¤¿œ˜ ‹Šæòý¤Iä®鉼3Ò±¶Ë}0ª r†ƒ**oK:üvB$œÑÏÈ0p¦Ö#kCCŠ»³qÀì'6Ž1ÉÆ1„4Æ+¦â¸1BÅ1„Tœµe*ŽÍ Œ6{‰\•¸I<ÉÄ™8p†­•ÇÇ4Ç 5bs ð *dŽ „P¥†Úþ‹†b†YÀp¶ƒ»ÊÛľ¿JÄÐ"2 SŒÐž/ƒ!’L Ÿ†‹—/³ÂæÅ€@@’Ί¤zéEãšê{6lðž&x1XA^#Y*©{sK,tZZûÒ«( }U|&»š—¡QçòœYË#Þ1NÛÕkånB(•ïSÃì& èicjÎmb!ÚX6 š³3¹ ÙIBæñ½d²ñ(z~ð[ìô9@ ÑYUåö?ëWK°~ÔÀêו›šA>kEjÌöóÖØIçˆÁú º_ZõãŸÁÀn¤êÌA%c›H¯5:é7Þ]ï%§糧ýîå¡—Ä¢„Üãot¿!zèÃã’ì™ÿkÒ­Ñ{ßâ×}ÉZ 5’Ç–Žì_Ñ“ùuzý¢†åñÚŽªËl}æ¬Ñ£¹N.t·fî¦aÄ·" |޶®Uñ¯7ᆵ}Xîz§Š@0ÿeºßÒb„„^È‘%ÆZ’»º„†f á+ énŸ/Z'\›å§0Þx”vð¨„"Œè9Š3ÏK:UÙœ/éÀ§.‹Ñ¸ò½¡’`CÙÛ8ʇšTZ E飦Q_ˉ¿Â¶ÆæTê,M×FN8¦Ã_ì/Ç;"ý4TgYgî»\=`1ÂUIŠzáž/‹æœjkáXçgU’²ÓD å •]Ò!éÖ½Yv8ÿ7Æ;° u ÒÜ`&\˜o9sì‹—­á~';ý4·aÚ>£åJ¢õ‹Ú|äûšç{‘wÒŒŒ:}Fwë¿þ%Èãs$ðÎ5ƒ7×åu~M"vC¡m•*/X1{pµõôW:¸î(ÃR®“Zó¹¹;ªâ/ t þÌÚ •]°ú6 ZË$NŸG-zXçúNaRi}gYTæý6 v«ò¨3J€Yâ˜;Þ¤nŸäîÅŸƒ2•=‘TÎzi® ÁH¾"!¾¿f°©í ¯èHÛÍ&¢~°±9ÒDâŒÍ]+­`JfSóš…êABˆ3L R2ã:žüšv:Dl–«^úÚz ²s”€À±`ãO"˜¢`–?º)‹º!“ ¯ïKnµl·/É@ƒµâá­uré&¥ÒT)¡xøY'—¼…ɺ‹s:`ÉhwxRù×” %rûÃTN©Z,2µ·HZãQIÛøÙ#¥·kVý¨ºó²ìM ­û/­ˆ®þZYöèA•|Ú+Q¼g$@R]LjËl›`ËD¸8¢4“ÒaHÕ ¸ám¶Ëá§å–/@ 'yš•»»€]p+Âà)hœ¼üyvkuüHûK]€¶ë9n·ï—ÛÖÐ`Ô»¢IïøF¶ü÷8²2žî»ò»?ð&e”ü9ÓàÏo2ÊÕÌÇ<…'¼v^…×6Á±nHðX¡ÄOž×èãˆÈ‘e}–­/«ÁA1©¶°N·…e]ì@ÖÉâ2–Zd ³J8+B¸Fãz$±Ý=¡ÀÒ•¿¬™¼Õ×XƒI¤—XÓÞ,FhtÛ§¶LÖ~?RS«'ùë5Éß=¢_2™FáYÄ´Oµ޾}¢I5È3¢T„'€Hó8p«ŠóL£ã:ŽõÙ)ëÊäM@†9aýMí ˆÂEÇ÷dÅŠû;û;D-‚q8Ç`œ(Ôa’/æÄ"7 Ì­ Þ‹á1êÃa»ùñûš¡Ì﹌™@ŽG"H²f£–µZ_} 1‹Á4%Ý&jÆÊ.Ï0ÑIX4Ï`[ÌÛ"U$Ÿ“û¸Û «8¡„n ò~íÉ-]óŽt+×"îëi$b‘U•Ú×O ñ¨¹ÉA„sP$û)‹zq>jÅÒ`žê§ zø‚óüVUŽPà¾ÉRÁ+ò/6e¼mµ8¼î³ë ÜØD×AãjÂ^œaáðrQu³ ”®1å‹SHÈîëáf^ÇCæ“>§à]+[iâV¶á”‘IG²¦¬óÎE²ã©ãLƒýd9ÇÎ@eSpéòïÇ–é8¶l‹Öűù'ƱÓS6µöó"¹ OD˜1F~ó%7ÿ4Í&w£Í,Ê *k …&ÿZû/ÿZˆ±²†™®¬á^VÎö2Óqω!Œs`m5ó­-Û³Xûwsz_ÓŽú|‹3¨/ÝzjclÖz‹ËÖ‹êPá<©rYÙ!íª ÛAå.^ d‹ª5'Ä-á ð÷Ù%\—°!W_œ»ü=¾Ä¶ÿi«.‘×Mx ‰8‘4ˆ8³2ËN†œj£~?èŸwvPíÑ`û'âή2Y/žwµ›¼<wº‘¡c[Ü>ŸŠ;áÈ®(ϲÄ/ œžŠ;óR£U«Ø Ì‹Âà1§¼Àý%Oê5JRk¢Ê•1%Z…´Ì«|1k}ÇJ1ïL3ÄIÐúŽ3EŸ!mÚƒ Ht²‘({ÏuN© K1¢q]G¦Œn\0:Áè ƒÑÞè`ThU,JŒ¨„‡+°Ä3£fØ ¨ãÍ1l^ø`sˆ”"1Ø4*Ø\σMô”‡‚enôM0ü&ïÀCQœPg‚ÍA%ÜM"㮾Îðô%'Ioû†Áöx'§qƒu•ÑæÎ‰Œžø•x“) QØÃÎJ…£„Òèê:î£öVà×hóÂG›Xs@,'’åvΩÚsöçÿ–Œ>íÕU[%Y Ûê”Wlè‘.!ÖÃú32èDdØ%Ta°æáÊAK"`&HI ¦`4Ì7Ô ÔrkhÄ^öÛ,Z'Z˜§ Ìx”Lõ»åý«ív¿¢šD^¦D ˪žA~füïç’ ÂTð¯ì$PËËAÇÆ÷è'4…­M‘§ƒÖjQi6¬Å¬îº Cf·X‡XȼeVðfô„®Í ÷É’Ö&q13ëÜñÑÎöz5qW>)h¦öh×–±iɺ†”~F§U•Æ=1ܲ˜˜ùXú“¨iü'¾§hCFAÍ.Ô¥DŽ8ÙøÅHH&ºE²ïvæ<,žÁúŒøAÏ®p] CFÈ ±QêËî£ôôMFÅÔ¡U1_mêc¯eÙyÑ+Œš}xa$¼hSÕ¥Îþ‹Ã‹"ŒTxQ$¨Ç’áê­Ü„p"­n›2±[ß¶0k”½Q¥­Ú^W«o©– å ¤ èÉÎC“ñÄ=²ÆDãEjŽòÅ7jÞ #­B“Z†Y‰½^°õSR¤–a%Ý øÂé)ÑtN#ÃR\˜ÔRìÓKqŒ–b† yZŠý_µ³¦Êž±³¶më–u¨>FÞ={%É…Çßé,B +±Õк®ø¯­D„Jå…Ç…–¼¾9öÜzî:C§pÌ‹¶ ›êü¡ !ïá*G~ćZ=X[~Â~iì5P=F ôzeãˆ+ÙùôQbyU®RD̳QŽÝiÀáã—õï1‚Š0ÅãÑZ £tM—c¿½wW„„Ã{WX™e÷;p³Ê R ÈBjjÖF;\]ë¶ÖU†“½*=™Ò(Ôð@ XfÏÐ ‹h–ŽÌñ`Ç)üÁåÁo@˜É¼Eê—ïÉŸßÓò!Gêj0ý*CWÌi¶–b éÐOô¼‡€>y4‚‚øD¬Ø&Qqá_/à‡õ"è$¶Xšjjª%Yþ”Øï§R‡ >^÷ø1ÈÕ‡BË™ídy&øËËm¿@†ý–ÃðÈoHC£mŠ ¼bŠo†r•ÏÛb¼]”î”68åšZ³È@ïû3‘W$,@¢ÏY_´gI‡Á}4ú}0‡‘€kÒóÁÏõDÇ·T¦ðòœœ;ê“Ã9‚Üùˆ#Em5~r×éBwã³d½F.i*ÔÈò°ûƒXsè˼C¹†ýêÑMï¢ët¹Ü`Ó8‰ ¸ÂHÃ6;rW„îg½e,öíNq¤a›IQü–ƒ›ÊþÎýöþÑÎúƒA>ƒÕáØE?¸W¡xÀëB¡ư*ÑUZx]!Û^9¥ì,¾ Ô™½ÌõÉìtÏ8&=xþèî·™qaÔiSqáÖÈùífÚô½—7†{½<@„N¤™`¤’‡0.ѧÁ%D6b™÷[G5ã­$¡‘‹¦Dè š+YƒÛðJ0F˰ù•àŸG6øIù"º8wmZÿe-K—h¹–¾å“»Pµ¦gkS´Èð½\¯‰|èåV ¾S*…ƒk×B¹X£–Ž2 G‰\¸ƒeÚáÓp»Ýð¾.ê¸þF{V¼sª „†Àf|’@e ”Ñ¡f¸"åÔ–u]œgÀ#æ×ì5…®Ý­]Éväß°÷Ïžp„$8†¤×××/07.õѶ8¡‡Yeõâ|_¾ÁCNØWÝ0ÌUÀi •jj±ä%TÝÒæž¥„¸:B1·ý~µqúÁ°µ:îïz·R¢‚I—ˆh¬ƒÚ.¢ˆÆþf?c*¢)ŸÑèíã\D“ÿöpÀæW\»vQùð£þðmâûØLnTUT­ÿä}¤}×áßMâYVÁÇÀëÜ7g~þô7g¾(óSdÊÂ>ÒG߸Ný ^AØ~¶"ýÙð¨ð¥ö T›69ÖpÎ}²\Uqü%{÷ÅFõÅ“8\õ¡È›=üu©ÝúYV«ùܲ›ß{ÖÃ?ÿ<ã¬íçrùà|5JNÛ•±s!ÄFD Znq+Fò˜gƒ±¯e5€K-BfD©»fBÚ×¥½ß.±vð3óË„lâÚ ¬¨BœïALrMLÓ«ñÙÅ,h.£®Ÿ+L‚_`ñÌM;Ü„9ðåxÞá´} mI‰,¡o‹c91À:Ú§È9'€ž]. öcä}“3°%!1í£ã®´Ž3Öhå:v (Ö[â`Õ°Â…eÅåWÓqÕo·ÔDë8h5,Ê:#Ë'Ê«âQ<mÄüú‘¡Ou–’â.º2O¤tðgNª¾]ˆKÇ…å …£àûð†È‰Ü[ÝÚÃVþ°°9Ù»t¬øIÇqŒÏÏ!D5Cˆ°"Qv¯ÒÀŒ©†Ó# ¼ÀÒÀëo¾úꛯQ9Ö.^¸ دÞ|õÍwÿ ÃuM·â¿|ÿÝ«×oÈë£Ú* ̱2ŠO¸®“ ð38Š}ö(èŸë˜ƒƒ+W†ÒÓƒó[ô×þgŠX…§V':•èäí‚b Ú@)ËÂsÃNHÃ2û{ X·OQгðÚü=]‰"-¤dR‡LNתüpùÜ„1Äý³Ö3Ú<@ï2yO®À`³1Ͱ.ÌvŠ“fÔÔ¥š°¦:˜/fãŽl0÷a 'äßGJÅyw,bó´·ß.RÞ~fÿÅÞ~Ä]ü“㨊ä‘KUï ÓfG¸:ô÷ËÝjê]9FËþu9ÇzÏüÆ-ü@ϳóRmæûЍÈî)Ñ>C0 p¶ZGl{dö»½<âO oò¡ôVzu$‡oØKÚv2ÌÎ ZÔ¦Uþþgûßn§í^ö‚kÅ7üGL°®ü"&Ë톄].5!Ð÷:ô+”'ÍÆ% IÑ‚¢ðj)„ðä$#ψ¾M}ÃQ1gÖú3JMuàãÞ¹ÃÌ3\YëS¼q]vÆÉ½xÂÉ53'/˜trÝ_ÌY'W‰fäU—*¾ãÏÞÉÅÏõy3'׎‘ ÜAŒê]^.v8——z{jry{åòâh5(s-ÛVÞGlððþТŸõnŸrnÄoÐÎ{ïJJy·ë¿‡w›Zþòn ‚Äÿx·ø$äÝY•ý’Þm‘Wÿ0Þ->KàÝE½8ïÝ%²düCx·öaó_Ú»e² Nô<ᜒê_ëœ*ßÔDÎiÑb³XÚ;½8íšgº§i÷ÔœpO‹0Ùsÿô”{jRþi¹À,fÊAMû§æ9êÅSª™9¨ø d=ʬjŸåš +º§xþóýS4ò|ªZæ˜ýüÅTâ¡øorPñb µ,›ü¯sP˺˕ƒz‚µâ·ã¿Þß}{`d]Ù ž*ä'Ï„dã$?yÖT‰kúl*5‡ †þñÎqgŠl”N»?0Òž)=]íO¥Š{¦UÙsÏ4â$o³T¤ŸÛq¤ŸC°?‹ôQë¡™i=4³¢žzï€Åè†MÀmá1ð§†3aì—`?Úzx/\¤úfÂ㯙÷Ž,ôcç¯=²ìœ@¦&ßѱväj[Úè¶ëãšÙ@B½·v‚qûï†uÌîS54*B»cá:FÕh»¯§bŠè½b¯*%M ×”0(Ïý*lrG¼r‘}ëÖŒÄå°UãúÉ¹Ç ;Œ¯@â/¸GŒÒë±qôõ>(ѾæóeºðUh˺Èr¤Á÷!¿ìGr] jµÿÅlO,m­“«U ͧñªÖ+3ÁBÿì£ïºRhXìýtŸáÏýaϹ‰ªÕ¹‰ò„’=Êfú»®‡ Š&-„´€Z‘9WÒ^ÔÝEâ¢k›ÆÚ8¶Û‡Ö8;QüuC…«r7퉌C£%x’:³xHêqLd“íG·ìÀjè^¡ù§Ãïô’˹È„¯Fq|P••å-âÔšzSé“Ó1V2!@‚6ß¾“jÊ™t­"òŽPShÔHbTì-ÜÉXÁÓm¸Bï{É<Æ"i¬±þ¡b)™H}‰,©pÛZô›r©? {°,Áj/´uèY0Ê$qc¤µhyG¹vð q©´! $sq+¡:AÝ^xkz˜w0ˆ»}‘%¹Ûó'DZðˆù5û 5Ù€û‹ê`dzð§åV¨4:„5+æHOi”¤ºd;fºãëÎR™UÎUbí^Õ)æ¦TU{õ^‘“ƒËitß^—|ºÛÙeIÅ ¯7ôziqà›Yú_VÜ‘ƒÁ%¸ Ëí°?Ø-ñNôyÇ8Ôg(ªPOÄãû—Â'G4n^^ň¾ŠS{T`ƒ®¦S‚ýŒæuκŒ8­ñ.ÇÞ“ +IÑ¢Yò‰‡`€šF Ð:Þ8H[ˆ<›Þç2 6L ­¡^R¥hµÌPN+‘Zð¡ìØyXÈgä¥Êþ½·ôN8 +²°S Ê埗>:#„Odoô·’ìðABÈI6‘AÕuõá}(牊ͼ:K¡RâÝ[G]OÎ’ðÍoâ\E”X4>‘½‘GÕ]¦“Ë=W–öÏ<# ä’Ý]—Ñ1¼ª¾{õõçß|…Ú¾méÿb~¾üíÛÿxó9’=YMŸòîý}d¶ÊMˆVÏìÆ¨ýüÍ÷o¾ûêí×oß}ÿö5a0q‚’nÉÞ:7’1F@á·Yî–X@â¨×sD=„æÛô8ÅP» ‚@à¥û·‰×$Úú\»bsÀ chVÚSz|Fë' Æ[d úÓñ»ä1=ì²Ãf£‹SÈ#~dæ,¸}»þa:Ò‹y'Í8}rоzfü¶oý¸d1Í­cÍžxÄppnô‹°µ{8`2u.™…i·èupáiç‹®mܵó,ú²½Ÿ; å†ë °‡Èg=å}òSCãÑO/Y€ Á.­ëBºqvLOö†½äa–G/òÜ«t?Α·,£Ë1Ûvù@hýÕìºkÄûñGØágØý,ƒÚí¥ûvèüê#z$±u2ãˆsCˆQ׉¶¡Ô}Au/w]ƒ×Å'8fAeØÉGa>ý¤IÐfÂü‡Fÿä{ð3c|ôØ”ÿñØ×ãÞZjÖ!cí–Ô ß{àiPn´ßøß ä]åï)óƒN¦V¢#Sú%˜)NVQ<5‘åb¡)¸FýêËïäq.Ã@7I¨_Ðq‚›³Ô5‹³æí¼¯sC­GÜC]™…27Ò=çÉò9ˆrn!¤v : ‰G³»uǽø²j‘Dj0ÒuÂKÊØoÈ“ëè8ØôÊ錳C´vÁfñ>yæ=MƒÔ—'å®cûï†DêÎŽ¬¯\…楉æ<ÍK´ÕÁrb¶5ñ öwÓòoá4‡t7zÅžð­£Áƒf»œ?Äé?,AžA$rO·X+¤ñ·vlÞ|ÿö†cÖùÁ)AK`á?È7`?üÓlD Á×~Ýý9#Ú"…ê/ÛYú[ß ýyéÙ3à>&Ë›V~µ®”»ÏÆAýMÈJÏö`£"ÂI"T·ÎO­ ô†vÏÎ+dÏH2$ãå"†ãÙå>,×7t-“Ÿá:ÆkEdÇáµÀ#ZßìVåÉfÄÇÑÕàï àN>™ eýG.×-ʳ/Ú-ʳ/º¿çì+¾k±ÀÜá:*àê¬&=3Enz)üPE†É—è*ðcp]å4þÜå*9†K_}û.Ñ@ZÀþbxf¾Þß¹'i$ê}'Å“¢ÀššÚxº²¤_yþ„Ó}Q/äWœ†;; ífD™y‚7”x¶ŸtàP;LqnI]_Éó O«šâ¹§¹©„'ÖM“<1¯ùL?Wðø¦Í“üaEgâùig¶móì3y"àyË=ó<ùôp^¹èö Q ÿ}©µ êNµ´šè¥Š­Ÿ±^WAG)ƒdÍTÛɯÚðõA‡Ö I9õðÄ„t‚)¶ͬ¥§zé3)‰ÐçAxRz½0}Ì·ÉTG¢êäé&IA la"‘k‰xø‰&‰;J ϲ¼wÙ E³‚‘~c¡÷ !gÖõ‹v³ßï¸*@NÖIÎnÆL[]8°>àæ,[´Œ>#$Õ¥6:Ÿw5.|‰c8!ñÆÅ£ ÈÅ"C&Ð¿æ† ÊÒ ÷ÀáÔÙ™bãAø«Á£€Åóg“§`GÓïLáÇ ‰›…Ús b8^Ù Áø òqת›­»¨€¡EëЊ߯ì:ÈÔÓr%MöʃÆRÚŽƒõpiFoÀÒMϸ˜4fžÀ»Ê³BOû½BÃ)¿Ó1™¹Ào¹-ù¢å«é…›ç‹Òð¯Ú“”×%" ¡JwÖ_ äS ÜjHWíâ·[û×Å‚Pö¢ê·Ü=P"Ûòï1%X&Ûv«"í Q8ºÓ´[‘ _'; 0¡£¯Öª «oágÇÉ£ÂS‚tÑÌæ£ß!ÆÆ3Š<*‘»ÝRê&›Ð<àSÔÒÃåÖ%–MݘßH¤ÿá¨kÏÁÞJÄ„úð6`,˜K©i–Ú"•¾*í¿8}UBk^ð^‰¨Þ­ß*HP„gh#â÷ÛÛÏo¼˜Lµ%¶3eœ.”à ÄQ ßÛÙò9XyGÝ ûH(ñÝt7m—%nßÉj­€av 1vÿ[k“íUL°ÿuì* ½ýýÑ.£uØß6!÷á9O{ó÷Üh ½Ý ñ⢒ÙÒøFÔC×R¸ßq×+ÇXÓÏÊlG?mA\ òx˜F’2g›[ÀÖšùî¦(˜‹© 7Q§ºIÄMx ?2ñ¯8t ®ôE¿¿û÷Ÿ—‰‡)Ï%3çÅéÀ‰oñ˜à;AàÄ¿¢¹ î¶Ö¼r о˜8àCÜ÷î½Ù.+m¶=E¹‹—ƒ¿Ÿ¼œq.®½H¾çg¯Õ°\°9ñhÎïÅ«¡Bêj†®Æº§_ôçáA®Õ•¹9÷dªY6ù–öÉüÕìfTŸ{Oü» îfOf/Å;^.CDJ’z/—ù6äå¼ÿ_4Ï«êìÓåUuö]wëéî(ÏVÔ‹ðb›íˆäU€Y, {õáãŸåœ²>ÿ%³<žš;ûßåZUÝ›ø÷³cƒ¹v¹ZÝ”æé·Ãuo¿‘;­iºçöøþ§~%gµ@ezf”Îyò;øà /×µAÌÎqÛ&¢í)ˆ¶ûõà¾N±€dxƒ?Îcÿð:0’r‘¬[OA{`&øå"´g‹ h7„MÐYh ÚËdÐ^’ ´3î>Xx‹·¶óyÐ9êˆÓ)#n¤4“`ã^„a¸7mxéÀ<ë4Ÿ‚IuõY'²ÁÂÓH õ¹÷S'’xéüļá3½ñ±Ç›¢k²Ólã* UþESf³GfHkHËgK”´˜ASw/ó¶:ÿ´l ð¢ÈÚwòö²ÐñPbÖKÝߨŇVØCqâQeAãÃ]ÝÓß$Ì·Á™„•:óš~â3ÓܳîÄ«NäÑù”2ȧ؈²M –Ú`c¡KóD6ääਠÁ BüëÜOÉ™ÍÕóê>Ügön……PøÉÑPîœÎÃòZÒx>ÅÂ:Ñ>Å‚§K±P®br)–# ›§X¨ú²-SAIeÿÅAIqÉ,(¡d‘8¶ùЉÝPeF”°C©‡€-Ø%³Pªø›‘Ã|`˜Þ±VM„‹GÃÀz‘4ómT*÷ÛµtO Щ°žVý‘ÙǼ¹|ÏŽ9‘×þ£Vca5ñ‡þƒûQÓ3nPN£ » Ü«éB,²Úc]+ûñ…î±~7‰äš‚ºŒ0¤ûnÃ5±â!‹½\ %ž.ІfïÊ>Z %®U0áß©/ê|¼Z&e.ª@¢:ãŠBG#x^EçùÓŒw^ð¬º)Ï>;üýÜWò ^®²G5‹Ž~<[A ¢ü<} $ÀºYd”¬D²ßƒC¡—Û¦‘¸(UB4a ‘tAãh~£ÿ¢é»c$Âú{sWm£ü´.C*(“² h¢dxx·)xOÏ:Í™<ñTØ“8‘-žv*ìIßOx*ìI„!öxs2މ¼vâ„q­W<ð|l#‹îÏ¡ G™Š:½þàªal“™ðPYsxä©è&ª‹vÁòÂ3ãPG Ÿ‰<žâg}'^8xÅ>'†²©óâU0N©‚C]^àQÊY€€!“_Cg!.Áº0ÁIʲkëúpY¿ˆý¾¨x†Yë}²ê-úØZÒ¨Þ”#‰ÍF‘B1/Ƣ煑Âp&RèÙ¿§Ê¦JX–R/N{ù㬋Ģ…ÓQWÙ¸»Zt~ªš8”?¤Æ!íâ‹ô°rϵ‹?:_õïl\tÆ‚U*hò튗¿á`pòÇÀÉw…¡ctÇ™—޽üÉyùA„V¥"´Úþ‹#´‚´Y„FqBžÍÉ¥Â8a’8aãšï·½ì‡å$°ÏA$7±J¼Ä@GÒWU±š´މöBsù (_¶9df gJ~_XQsÂL—ŒIÆ*Ýz ÝðMPXŒ‘šü.zEâŠÂLPða Aö”eÍ|©$J9Nëþ€Åòœg¾H˜ƒu—Ù‰Ví­4Å23õn͹‡¨.ï$¥Ž 5B.Í[“ÔQáO—틌1·ØtïT FËU ±×Cbß‚¦J}ͧ{çIÍ |ç§ ý±°Bn¹=ôL¶îVN/µ{;IÐÀõËy#BhÚ¦¡AP=kQ T"—>Rw·Æ¯£ÙÏᳫŒÒŒóºýöË/_¾Ï#f(„E@Ò¦­µ;$¦ø¡Ò¥ÿ´µÐ¯W–¢ðåÑjŸºûeºüâëßÛ?}ùÅ·_‚eàë^¿hI ¶‡Ž8|–L€'¶·BÞXèÅœdÍFiމJªKÒ&%÷÷Óny˜z”°ÇÁù øÅlÊ ¨ o_!£ÅÐWÔ•Ü?V½.|NàšTà2øW¯±Wq§ºGÖ$x`ý ê…Gc¨xu}Wô{œACOœÄÄí,ÄOãÃÃýo~ýëŸþùz»|€öõæðÂì/ý"Ë6 &iëÿÛþ/,÷!$ë¾ßöÃaÚýš`׿vÀe’%È:dN‚Ö1bý÷‰JnQ %<ð·+" Æ~ò# ï€•­/ï–ÓV¬ éòñaĦœãÞKØ?}dôk¶`y‡•k‰Y®×žIÛ­ŽpXàe‹~¸µy`)zßµóø°hŠ;«Ð;Ôú®ÿ™îŸe%’´nû%ô 3 %pîßK·¹è–¨ÐI¬O ’À ÑMÿá¡l„sèIjbÉ-„{·Qt‰3šoÁÚšëNHŒ¸‹{"œYÎlp±çÔÚrKš&%–0r à‰Yñ!€†ì´ý_™ÚýQÃR7w0v$P‹:¼Ã—o_¿ùú݈AÄoÉNᛯ¯>§ÆWæ§#mŒzHµo@ËË©o7ö/ö¡ýCdoŸð ¬_ê47Ñ£¿<.7Ø…8Æsà ’]åçÁsI-cjÊùúùÝ]¿#Ü`ºݯ…<¢“/å+n„7ž/q…Œj„4÷û#I™‹ba}+|ŽÞî&pÅíCVîwêîFÞ#úö9kÀ5nTê8"dÐ(À;ü;Q2!úøvo»»âצCÝ£AÏ{N÷åGã,”nü$A¯€°ø«ßùýÛo¿|C™uÇÞqcyX^£ëx á ¾;ž\S; Lñ¦8¨ÞÃà=ч>~º·Ž÷ŸY•¨=œ§;tɽ´/ô¾ÓGL#ù õ, ³îÃËãªðͶÀø.øW»G}3ˆÝ^Š4JA܆õ†ŽŽ4ÁnÜÔÝÆå¦‹ _Hñ=’xEç¡32¢—%ß“³v¿}û%ÍDsèwÎ}óÕ·ß½y÷gBÓHÊ»5?_~ö¿rO{…ôI‹ŠeâÞÿyºÏ]Ìðœ/Ô]‘muƒH¥’øæÇ±E%¿Gc7rë­Ê9`Ž¿ø_´—1Èøx9؇`–ËÄà§3¤=#1î PÁŸÃçÆøÙÌG«™r <Ηÿë«W]"U¶CþùnÉQ ž0×/*˜_ïXß}‰•ƒîPê1+I¦œâý5/ý½´ m¸iŠhéâ†Éûùsß~ýý›/Þ|Gšå9#OAu9|¾zQqßò¤Ÿ'›ê7q:™<ü3b.ƒaƒ/ÒíØ“.þ o8õVŽò’U ô¼NÈGÀ£ýáÂS@`>³­SùÐÆþ‹ó¡ ¤D#ˆ#~4É$y" öõb[D‘‹ÒpY—0y¦4b{|qJvxXõÓ~n¿Â»·ÿëM‘KCmFß"N×.ÇÙ«s³9Ú,Ì—²ÏtåxCz &éÄ^F; °cdr´4AÛ9Üæ_åIVâ©M”Æ!eH ÉÞ:r„€)T7…Ȫ£MFBAäÀ »±^;PxOȃûû‚h±°zãç~ýÛ/_}ñŽPû1*5Yh‡¯–·ýÆ>ßõ´[!g"ïf°µÓu÷*ùÄ­þHA=§QbnY„¦à„×d/ƒOt=M/³¡ÜyÕC µ &jž[—n ³Î.øùåÈg0„×ÀÁÁÃ^3Å‚JeîJ¼34Z 0òE®÷\cÙëð¬WÑ™L†À6úåÄ–”Ʀ¨¨' Üv·Jqd­£¸]R’Ôd‹¬É·²—ë $œO^™°³Ó˜aG{í“#³Ål£è;­Åß@Æ'xyJeç¹/°,ñ‚ìØæò• ü°â ÊZï†$;þ¹#fFÕ¢7FÎqQ¤-îñ¸Ä®,YÚž™¸) |cö"ÁÉ ñ=uŃí\mûåN¥¡wØ^&ûì·:4Á"Ú•qpT)2(Ã~GÞò4pb¹@Lu‘Èù-ÇaG£6’u¸ÁA›=ÛYf¡5¼õ:fy"0ØGÆr =»ÖÑZ5 ÅJÀ8Èð¸$âó¥)z¤¢’Ïe™^ÔvG‘¡£Õ”U%¤´Ã1DCGÉÞQX#€Űzé{Ç+òpõ,wBT‰žÊ@žÊo^T€\9H­ñ[2¥ç·Q6P#?ÒŒGã¯ûß›æÊ%¾âýݼ¹™Ñ³_®3¥S¹ny”VQÇwÍäoø„Mµ¥E’a™v' od4l’z,`P &î‹tõìG"”E*ȱàMuš¥º®%Ñ’µˆŠÒ›”= ·]h;Ä?Û½Áa qª.ä¾<ôØßˆ%MOö/Ïn† œ1ôU·—¢²0ÒGçÔ%rs XîÑkHÉJg(<«Hk' /U[©† %–f Nó ç:é "Íh?ÿ=Ð’ô+ µ-W®þŠ S½ ä&Ôža(™ÝÚ­Ò°LàÉUT`t._¸|âÞÉnâ ´­Úuÿ!Ø—Ä„ÙØÏ|¯É†·rnFÓ¡'v{‰¹–0Åqý æËOñ<ôÃñ¿¢7ÿ×B :èjü“ã‚ÁCVVèLÒ¿ècÅ™R^b÷OGF¡GV^Ò%<²@oTÜ0ÝÂ-na‰ÅXôÇneߥX éé¶1~ÞetÒŒÍ]¹blÏ_sÐÄ Gøß$ô1üÒŸñÎí¨|'jçÇ­ZaðrÌóH\¤lÚ€j^ä#Åè?ÏóDdÄ*¢’™·Öã],è꘨™Uu)ªæ ŒlbM½À«ŒQ­²Yy×”&èLð†X|(}P( i°j9²ŸŠ½ÖÿAñNm„ ÑuTnâ6b«,W‘ø¿ˆ|SD]ÃkܸÅVäu5ã>â”8ðÔ7°ÿ`¨ »¤KŠô쉙‰3ƒbõíj„®ö Û¤`™âøSŒTgq¤ßTâh^4}§í%;Š€jXYn£ÄC­9z‡žýÒ;ûœAšLÆa:r3 éïîY̵‘Æ÷{Væâ Ë"¦y(Fr¨s~V%BñCÁ“á³Þñ>ðz\BmöXSd“­Y(+±@èâÃUˆ¾Åähæ´è^@âV¸zõÇ«ˆö™îîÈ™+Ð7!üTÖ`æ Ã)ª=¯‘ï$h1>Ī:6W¼]6SXJa^¡ìlèÉE:`-JdRPR„¯ŒSƒ.>¸ê-¦ûíõpØPfæø`½ß5„„ŸJj£Êà\ÃQUvè¡àÍäXÐË\kb*üi:ìwNCjdOo|ôZDÉOûGôæhì¥,}„m‹µ¿ €\ˆ{YP *öEcúxª­íŠÙ Ð Å–bÁlè8…JîçE>œýÔÃqµ„Ì™ëÿëK8óÿóp½8yÊ’ FÍ¿ñOGy°*ÖßÃ1¿; âù¿ TE°ƒ¬ßž.ò>¼¼×ÞnCg¸aT¤È˜o왳ŒxkÿÅñ’âB†ëçi@Ü›óPÐÿügªÉ¼¼Ãéu·¼÷°^791böÁ,dSŒm„—îìÁ­0Ä5IR¦,ênì 7cbãÐ⺓6,þò^¬í2·Q¢k6üYÌ‚ƒ¿M¢º¥ȼv7&°û;ÂÀmŠx¬ýàjíšç®ÝkûHkgUá!T1kK5LXÍÿ®—XÑ—KòÀÓ”BøÄ¬ðgYpJîoƼ—ȹ?=÷‘5™pÝòÔc$)¿rUdê•׆Þwµ’Mbeï÷Ìä{’5|ùöÿÖ¡t/YßGL@ÁøgOKc¡Ë³3†Š[w2êõpFÃédÿý·þ]£(4"ÊÆsÏØõc€ÅB*%I0`ñ–mü&1Nf8ÍAŒ¢>Æå)2bÞDJƤEö“õòÉ|zÏ<Ÿ(XKáhfYÚºz+Øh]Â`Z£‹Ô§4›­g¤.i’`Ìg s¾Í¹•ˆµÿìM“¿·qÅ_ê`ç”Íòðö9"¢eñWß8xþMv4¹•4¸R%à íäã/&Yøx^X¾b>º>–Å­w6ÒáÐ-ñÔòGCœú0jö÷ç²Ûèg¹)4íVÛÇuv‡‚ÞyÒé]pÏ« ùEnœžâa¯ª¬Ž¹o‰iÝZqŽ#¹5ïçŒXyCt¿?Aô·žŽœ¸¨ÙP½Å˜å(oŒ+dw‹$Ñá½Ax‹TÄÈÆc<³¿ßö¿A3\de2ä´'ü¸È‹/ ê =ØQAèÁëÑé¶0¢¼~ä]kÄôï·ãçXürùÙwo¯Ð¹]“|FÏùjØMQÞ&u½šœÎfXB'Çz¤ nùÀuz”óâfÃû—FÖšÚ€’ý\±lò—à²)ï ,òŠu‚P˜e¸ük—rUåøð¸ž0çáîd­¨ŸLwÒÙÙ;íDå0±„’ï»Y;À=ÄÈ»æ`ïO—ïÞ¾úŠö¦ƒ9üÕÒŽx¼²ÆñÚ}ËW÷÷öq׿2k~Ó¶õ_ºEuEibÐk¿¦a *ß9ÁkîBxuW‡å3Éï®í5ÞLÇûˆ*û7øå×/oýåô(@Ñõå«k°`ïìŽyš«˜v{%P›;»²¦ã~G R0È%•ð(ž†E¿}¼ÃþSÁ;…ÍTGTC†Ì×›(þìÐÕ4ïÀæÖƒ²o/¶—{û+xÚßN»¹à½©@‡#Š+êõ~gýï‰ûo—‡fk?Á‹´Y“ºŽý?CgÉpk[¬Í{à*Ö†ƒ8€¿ACžÑW Tíù¡à!Çp–ïáû}¶<ì–.#3ˆ#üù5˜¢wÓ¢`R8e³DDæÌ¦ü$ŒtèW‡—8U†Kû蚥št@EÉ÷“¤0ØZEªJÐÀá¨X×äá¿·w=’OcÿšD,aÀ¬Éø Nî*GÉNèÔÁá¤9M³÷͇{øé`‡”þ&¹*sYÿx™ÿøâ76‚ùK–5~6—<´%vÃþPÊlÆVºßPÅçÇ_¿yõòõ×ß½{ùöëïÞ¾‚m?LöËÃÿ%tÙý ŽsÏÝ0ëÕS qxëW3™¶<¤U†R$ï%KFm¶&l[õ+¨í/¯Á›Úm zÿ5üï ÒöúðŸð×ö ÚÿÁ›¿ƒ¾¾­ì_úP›Âuö_ewh#î è¤÷‡*¶€Xá†t¹ý‚aÙ—ßíieã45Ù­ˆNÂæ¾Õr»zĬØZÑÛþÂU´+B»&ÚëGÈÂZ_­‚ÌŽû-NËGä5é7UˆÕ 6ˆ–zÉæîI:éÿmop¶E¾ˆïŠ),¶ _?ÞÙyv\÷Û ÖÊvÁÜz­öªúMY)›úŠ>1"˲®ípÒ Ö¨ÿÓ æsá]« v­X«D0ˆßR+6Nׂ_¾ÕÛ¸ìÎTöRvÎÁZ}U\;9aàyØ’ˆ9U#[©£ý.83{ïãŒ. /nÎþúžë—ξŒ2,+Ÿ½Å¯wѵ¸¯†våÍ#þb-+3Ÿ£U8‚&Éõå—_¿~9XÅ_áC˜ÞÏËâ/y•ÃOïúû‡^¥îo/óÅ‚ö2“­Íß˰¢6û¥þCü1ŒWùX çÂoìÍ^98”…(«^UàöŽªÒ&I™Œxrd§·ÃÖòµD[([ –öÕ"™úÄØ÷måÔyïé5¤7ßû¿ïÁ^ô˜#Hãø:RñIˆeç~yߎ¿v Ù¢AeØ…k€¬‰‡ß…Ÿ›“¦Y»hè: ëüú~½¡J&™2/—?´üQ~˾ò›ƒŒìK —ß-ïÐw~¼YÞ]¹v½o_±GpÊ»åšBË8Uh„2îXo©¾‹Rˇ˕Ûö¨.FÈžñrtV„wAÎÒ¬)^]¹š'9Z/Ö:n«GЛy?¹¥²£™Ñ‡ü7kÇ J-2YµÑ§ ¿Úçί±^ÓsÏÎÇù‡_]f‹ßÕ_Êÿ{×-`ŽÂÐv¸×üÐ)ß þÿ¯`D;­W«ié|ÂïÀî|…ž„µrÐé{D¸"»6‘ïlD÷°ÿYÓ *f+7Í] Ogà™s;ï1°wè‡[Âýy9jþz(¬e" ·wú¿5Ò·ßh®‹¬C„Öçýq°÷·£‡îZÏ®…vð¹@›ð#p€«¿d­õ¿ìW|ûæÍ¨Q[žs€N™“²äWüÈßÁ@~a7þÎû~²›±w?îŽ{ž…äì`jøÀÊäìØÑ±– ›èçÂ}ñ8­ƇN™„,8/cÇêðQ2_ûÒ¾­ ·aKµTÔáÆ¯)ìøÝµáYÆ.¯+ާ0”’¿,w+»ýí9¸Éº¦ã1©°yê‡ ƒ#{Ú,«ð ǤŸ0qHsù D_\¿üŸà< íC², /K8‘]ôõã–²´%©¨žûÑÚëý¶?Þ~Dg ¯±ƒ*pø¯±u†ÜŽ.ˆ´Â°ì`Øe rÙ  Q+ÐϾ?ÌÝ]`d³öÇËÒº˜vNü¥ÈÊ+zˆ©xÏÇìMIÃ#qÓ+ž/úýaÀö(\…ßÃÐüÎ÷ãT­­[§ã¦78¬8†!Z<ŒÈô¨\‹j6*Ö8`¶l¶€ðºwý•êQ¹ST¹Â%E–z¹ŠÄ60EV‰ú*ÎÑwaɑǟ™°þ²ûM‘7)ÊÙ°¶½¦®Â¢Àæø²B dæR»žƒ9Ø §-3¡¼±Ñ£®¸’ǤÂíAÂí> ·‹!ÇgÃíïúŸ&ëð¸*²ßؤ¯…¦½Nüµ?dØç^aP,/$†$¡íoL`F¨²u ^ ¡ž0u180 '$=ìœ>ZƒûSO–¹h×ÁøØžHo•˜ ˜³ß2´cŒ¬ÙßÙ% [³}±Œ»†[DÃüUþ3¡kúÅãýÃò ç®ý_>ÞcZÄðwûþüx·²ØÑE[ ¿ {—°¿” 5zž·vzâ:‡FÁ»îjxØwûûqZ¾|eßÚÎl»­ä̯di@~†®±a¦ÝnûKŒio)‘—ëòß·Åjb6[N+¦ÚÇö˜cü#&­­ÙïÖ× þú“݇…tÖÒ`¬È'À­Oº¶ïK §ñ^HïùÝòhý“»Bi2°³aÐÖáÓq€í‰?~‹ò»%“­'”ÎüΠÇ~»„îKüfßî·0Ï7î0 „=Óƒ½ C¿?Y2Œe¾î~ù?­/À#Fr^¼çôïX¨iìr»º ±÷ý³kvþÎFµÌäßqã§™…›ó—ö1aDo­S¦mm]—Ý‘vƒU”βì¤Û¦nÛlRôn/9%U€Aë>K×KS­9¯¾þ¼+þ²X4%L»™®'€µ]~-›äÉ1E ’Ûô—ÿFÞí÷qûοs—aö-ký;ct½ózgİq@’ÈùŒ8-§!ŽïHäšÌEµ@‡‰}i÷­Ï AV,2ŒÈhnÔl’CðˆÂ'îå?.3ðòù¢|æ¯jã‹V¬½F½ØÕªýDóϰ‚p¯¸u<øØôräæ¹—ÑÈ1ýÀo™…µñà¸Ê‹NO|ê¯} ¯fôÞ¸IT%’+þ/ÔW_œúêì¹»™Žomˆ’âár%¯=ª×ÞÐkÛSÿôÊÚ?ä׋kzħ¦:ú1Áï£Qþ€¸ŸòÍ)3¤ªº ¤[ØQªÊþda‹ägvÐ25[à=¢A“ý5´ öšW¬ÝÐßwÀ¢ÏGVƒÿµ¤pMÅÆ› 2 8/tÑgÄM§5³4ótùîwß¾~ýÏ] Þ¿ïö~šÈbÍ{LY·ù_ê¶²ž¡Ä&“ݸç‚S› )Äs&ÂR˜´©¸ø$SaNÙ ÊwÙ7¿¹˜íµ°£¾þê×ðH° ‹¢´žpvï)ÉËQ ó¡ÉæõçßÙë|óÕ/|þ|ݯh<*&‘Ãf©òBG=+^>†‡âJ/ªAØå A Îýæ-Ç)<»Þa_ÕÏTY ´z„h`2bi†9‘=èÞúÂî€Dxx¬¬‡õÅFûKWò%'šzU¹BW+ÌóËøè”:‹ê°CÒ”ìí”<¸Ú~„†;† lnü!/õ¬4'M8F9ßA3·XÆA¼7ZÈ Çzx |e$èËýéq)Ž5 Q—àÊg%WüòF%Ü·žª¨×4ðÿÑÛ_ûtd¾ rƒu_þR¶§_Úka Ã0—ø .²üB*Ù \ÑBl}ñ†™©€2rtïf.?ªÄ«Zª®ÐÅIœ‡œÇj@9î—íÍåtž¯Þ-a¤ Líó7÷f¼ìª—‹¢‚oÿûÝ$›È&D»~5íìÐï!À±‡”àGÚèWj©2r臼V## #Õ«‘2n¨à¿ ^Ÿh2ö—·/Ž`E_bY†[`ƒ¡ƒ()µûÁ Ì"‰dTHåaî ̼•ºLŽÊĽ jX6—¯‡GüÎ~<òYŒ~È?}4mìeô¼ix»Ÿáã8õûü+ðG÷›‡ŸÑ ‚þÛåêøQ&‚©€Ý Qº ¸ˆì«øðC¢˜_ Q±~~pòÆ>Êqì>Yëm$ѽüÎE3+úË7å¼Ü7ySÐÄÕîy%áÜ¿÷‡]µKoÞÞáž;í® t8"PŒN¬êæq÷éez¶Ôôt…ïþÙ›/¿´kí1ô0ƒÁ1†!_a¬†{fH$«3s@0Óµh`Jÿ–€Dhœ\p`¤Œ?äâ°UèÊî¬ÖÖÂìú¢ß!é¡ýZß"I#f6¸\Šù,U.ÅÑ}a…ôâ·G£«Ãîñ°Ò‡ÁU-Š,#½ûÛ~óðë-Ý꣺¼ÛÄZà ‚^þPˆ“ýdbþ¾Ðý‘[} { 5bºJCÞæ5¥ºp¸‚Êõò{b— ¾ï?£Úv®)±{øÇhÇáïÀhEª@ò‡ѲýxôéˆõeÆeÿbì¥?^Ý&²‰*o[T5È©þPd>…G©&Ür¿B„9”@Ä}7™:{ép*ÚWÁYMÊ¢‰‚¦ì:;wó¸£@®bŠÂx:ã'ïPƒ“Z’Õ´¶±ÇKk±âx„Y{ÿgùþë ÊvÇ_ßÙÿ~è8<Ëø¿¸‰~ùë;@òÛ‹¡- ¯ ¤€_ e–æ¤Pe8T„‰ Ñ­äsWæ¤Uï>öú#§°8¦KbÌ/æÃ\Û¬- ¤PÆ3îu§ _ \# dÝÅÙèê6Š®$\ ㆑²­ÿRBð½fg–Òb°“@+£éc­²ìh´J?Zh £Ñ"+O’Lætä {ªjþÞ @Š=™¦Ö;+’«!n~ÎHÕ‹Œ‰ìð›QX*PE®²AÊ;ߦËãÝž)“¨WtÿózBÜCN™Ò¢˜ë è«Ð‡a–Ue­lbƒ•z´=e]f~;±Gf÷“|±€ßØùÁ"=‡ %h‡ÀØVjlÁ׈Ƕ Hñū댿¿—<Ç”Þ)鄆tm’÷vå1¬cì(@7OŠöAÈíò3–(Ø~ éQ~© Wâ ·±o r·±mÎUéóng ²Cç¶®à};4%eÈ_'LѾÿÙTyEÃY«á¬â©ª«ƒ x0X+p€&ÁŠÁœ=œ7¡Qw¯$×¾¡ÅÏø§ý:o 0£ç7 ‰Z8Õ2Š4$¹ÚT&ç`­ó×[?ùõ8ÅvîëIÖþ¿øõ*¢à¯Ç÷¾¥Ô´Åÿ4>ÜC‹Õn‰À®Gj±î ˜óã5l NÁ½ºÁ½LCËì¿8‡–AmžC+µ ,Lz²„p¯2–#ÚÙß@xÃe¥'×ÏØö9ä%§ÙŒÛ]|zv™›äLÛ$w™˜å›’ñæ²Q),1ó¼‡wÙ æk,õ—Ÿ¡rôŽÔ²E ^³q8%»ËئŰ³É׆8möC¡0峯¾*U)ìà¡~U™Ù°Æ7|£ctdzßî8Q>{_CH1zßÞî6R±srö¶6lÕ ¬¢Yü¥hZ¬õ©·•ÌåÂ~(:ýº±]‚‘ú7LÏá«úìœ"âúŒ ØüR¿ûhãzú3šØŠ~¸r;8Ç5.·Ð™Á²7âì(ßøB1™«à%…É^>Å º¤Ž»{©q_=“›™÷©8íígøMÝý¥-)?µ ÐLÒ^?” UF—m˜v°çýB°–ØÇîÿ~ýò[QÂÁ¯ôå´dŒç·¸¦•AÇÒ«`5ðýWýQúî1D¯~zGå´Â~bÜZò¹ÊÈ­ ../../../lib/libptscotch.def nm ../../../lib/libptscotch.a | grep ' T _SCOTCH_' | sed 's/.* T _//' >> ../../../lib/libptscotch.def scotch_6.0.9/src/Make.inc/mingw32/gendll_0.sh0000755000302600021200000000157013303015264021002 0ustar pelegrinpelegrin#! /bin/sh # (C) 2008 Yves Secretan (yves.secretan@ete.inrs.ca) # This software is governed by the CeCILL-C license under French law # and abiding by the rules of distribution of free software. You can # use, modify and/or redistribute the software under the terms of the # CeCILL-C license as circulated by CEA, CNRS and INRIA at the following # URL: "http://www.cecill.info". # # To be executed in a MSYS window. # # This file will link the PT-Scotch DLL. It must be adapted to reflect # your environment, in particular library path and library name. export OBJS="../../libscotch/lib*.o" export LDFLAGS="--shared -Wl,--allow-multiple-definition" export PGMFILES="/l" export LDPATH="-L../../../lib -L$PGMFILES/MPICH2/lib -L$PGMFILES/pthread-win32/lib" export LDLIBS="-lptscotch -lptscotcherr -lmpi -lpthreadGC2" gcc --output ../../../lib/libptscotch.dll $LDFLAGS $LDPATH $OBJS $LDLIBS scotch_6.0.9/src/Make.inc/mingw32/README.txt0000644000302600021200000000116313303015264020453 0ustar pelegrinpelegrinThese three script files can be used to create a Windows DLL from the PT-Scotch library on a MinGW32 system. They are intended to be called directly from the src/Make.inc/mingw32 directory and produce results in the lib directory. The first two ones must be called from a Unix-like shell window. The last one must be called from a MSDOS-like command window. These scripts are intended only as examples. They must be adapted to reflect your environment, in particular library path and library name. They have been provided by Yves Secretan (yves.secretan@ete.inrs.ca) and are licensed under the CeCILL-C libre/free license. scotch_6.0.9/src/Make.inc/mingw32/gendll_2.bat0000755000302600021200000000137713303015264021145 0ustar pelegrinpelegrinREM (C) 2008 Yves Secretan (yves.secretan@ete.inrs.ca) REM This software is governed by the CeCILL-C license under French law REM and abiding by the rules of distribution of free software. You can REM use, modify and/or redistribute the software under the terms of the REM CeCILL-C license as circulated by CEA, CNRS and INRIA at the following REM URL: "http://www.cecill.info". REM REM To be executed in a DOS window. REM REM This file will create the PT-Scotch DLL. It must be adapted to reflect REM your environment, in particular library path and library name. REM set VC_PATH="C:\Program Files\Microsoft Visual Studio .NET\VC7\BIN" %VC_PATH%\vcvars32.bat && %VC_PATH%\lib.exe /def:..\..\..\lib\libptscotch.def /out:..\..\..\lib\libptscotch.dll scotch_6.0.9/src/Make.inc/Makefile.inc.i686_pc_linux2.debug0000644000302600021200000000071113560004653023445 0ustar pelegrinpelegrinEXE = LIB = .a OBJ = .o MAKE = make AR = ar ARFLAGS = -ruv CAT = cat CCS = gcc CCP = mpicc CCD = gcc CFLAGS = -g -O0 -fPIC -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME CLIBFLAGS = LDFLAGS = -g -lz -lm -pthread CP = cp LEX = flex -Pscotchyy -olex.yy.c LN = ln MKDIR = mkdir -p MV = mv RANLIB = ranlib YACC = bison -pscotchyy -y -b y scotch_6.0.9/src/Make.inc/Makefile.inc.mips_sgi_irix60000644000302600021200000000052413560004653022636 0ustar pelegrinpelegrinEXE = LIB = .a OBJ = .o MAKE = gmake AR = ar ARFLAGS = ruv CAT = cat CCS = xlc CCP = mpicc CCD = mpicc CFLAGS = -n32 -xansi -fullwarn -O2 -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME CLIBFLAGS = LDFLAGS = -lm CP = cp LEX = lex LN = ln MKDIR = mkdir -p MV = mv RANLIB = ranlib YACC = yacc scotch_6.0.9/src/Make.inc/Makefile.inc.x86-64_pc_freebsd0000644000302600021200000000071713560004653022737 0ustar pelegrinpelegrinEXE = LIB = .a OBJ = .o MAKE = gmake AR = ar ARFLAGS = -ruv CAT = cat CCS = cc CCP = mpicc CCD = cc CFLAGS += -std -fPIC -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64 CLIBFLAGS = LDFLAGS += -lz -lm -lthread CP = cp LEX = flex -Pscotchyy -olex.yy.c LN = ln MKDIR = mkdir -p MV = mv RANLIB = ranlib YACC = bison -pscotchyy -y -b y scotch_6.0.9/src/Makefile0000644000302600021200000001256713560005133015513 0ustar pelegrinpelegrin## Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## VERSION = 6 RELEASE = 0 PATCHLEVEL = 9 .PHONY : clean default install ptscotch realclean required scotch default : scotch required : Makefile.inc ../bin ../include ../lib Makefile.inc : @echo "#####################################################################" @echo "BEFORE COMPILING Scotch OR PT-Scotch, YOU SHOULD HAVE AN APPROPRIATE" @echo "Makefile.inc FILE IN THIS DIRECTORY. PLEASE LOOK INTO DIRECTORY" @echo " ./Make.inc FOR AN EXISTING Makefile.inc FILE THAT FITS YOUR NEED, OR" @echo "USE THEM AS MODELS IN CASE YOU NEED TO BUILD A NEW ONE FOR YOUR" @echo "PARTICULAR PLATFORM." @echo "#####################################################################" @echo "Then, type \"make scotch\" (default) for the sequential library" @echo "and software, or \"make ptscotch\" for the parallel library and" @echo "software." @exit 1 include Makefile.inc prefix ?= /usr/local bindir ?= $(prefix)/bin includedir ?= $(prefix)/include includestub ?= include_stub includestubdir ?= $(prefix)/$(includestub) libdir ?= $(prefix)/lib datarootdir ?= $(prefix)/share mandir ?= $(datarootdir)/man ../bin : -$(MKDIR) ../bin ../include : -$(MKDIR) ../include ../lib : -$(MKDIR) ../lib $(bindir) : -$(MKDIR) $(bindir) $(datarootdir) : -$(MKDIR) $(datarootdir) $(includedir) : -$(MKDIR) $(includedir) -$(MKDIR) $(includestubdir) $(libdir) : -$(MKDIR) $(libdir) $(mandir) : $(datarootdir) -$(MKDIR) $(mandir) $(mandir)/man1 : $(mandir) -$(MKDIR) $(mandir)/man1 libscotch : required (cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install) scotch : libscotch (cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install) (cd libscotchmetis ; $(MAKE) scotch && $(MAKE) install) libptscotch : libscotch (cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall) ptscotch : libptscotch (cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall) (cd libscotchmetis ; $(MAKE) ptscotch && $(MAKE) ptinstall) check : scotch (cd check ; $(MAKE) check) ptcheck : ptscotch (cd check ; $(MAKE) ptcheck) esmumps : scotch (cd esmumps ; $(MAKE) scotch && $(MAKE) install) ptesmumps : scotch ptscotch (cd esmumps ; $(MAKE) ptscotch && $(MAKE) ptinstall) install : required $(bindir) $(includedir) $(libdir) $(mandir)/man1 -$(CP) -f ../bin/[agm]*$(EXE) $(bindir) -$(CP) -f ../bin/d[agm]*$(EXE) $(bindir) -$(CP) -f ../include/*esmumps*.h $(includedir) -$(CP) -f ../include/*scotch*.h $(includedir) -$(CP) -f ../lib/*esmumps*$(LIB) $(libdir) -$(CP) -f ../lib/*scotch*$(LIB) $(libdir) -$(CP) -Rf ../man/* $(mandir) installstub : required $(includedir) -$(CP) -f ../include/*metis*.h $(includestubdir) clean : required (cd libscotch ; $(MAKE) clean) (cd scotch ; $(MAKE) clean) (cd libscotchmetis ; $(MAKE) clean) (cd check ; $(MAKE) clean) (cd esmumps ; $(MAKE) clean) realclean : required (cd libscotch ; $(MAKE) realclean) (cd scotch ; $(MAKE) realclean) (cd libscotchmetis ; $(MAKE) realclean) (cd check ; $(MAKE) realclean) (cd esmumps ; $(MAKE) realclean) -$(RM) ../bin/* ../include/* ../lib/* scotch_6.0.9/src/esmumps/0000755000302600021200000000000013465315041015537 5ustar pelegrinpelegrinscotch_6.0.9/src/esmumps/esmumps_f.c0000644000302600021200000000704013303015264017675 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : esmumps_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains Fortran MUMPS **/ /** stubs for the ordering routines of the **/ /** libSCOTCH + Emilio libfax libraries. **/ /** **/ /** DATES : # Version 0.0 : from : 16 may 2001 **/ /** to 17 may 2001 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include "common.h" #include "esmumps.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the MUMPS ordering routine. */ /* */ /**************************************/ ESMUMPS_FORTRAN ( \ ESMUMPS_VOID, ESMUMPS_VOID, ( \ const INT * const n, \ const INT * const iwlen, \ INT * const petab, \ const INT * const pfree, \ INT * const lentab, \ INT * const iwtab, \ INT * const nvtab, \ INT * const elentab, \ INT * const lasttab, \ INT * const ncmpa), \ (n, iwlen, petab, pfree, lentab, iwtab, nvtab, elentab, lasttab, ncmpa)) { *ncmpa = esmumps (*n, *iwlen, petab, *pfree, lentab, iwtab, nvtab, elentab, lasttab); } scotch_6.0.9/src/esmumps/esmumps.c0000644000302600021200000002043513303015264017373 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : esmumps.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains a MUMPS interface **/ /** for the ordering routines of the **/ /** libSCOTCH + Emilio libfax libraries. **/ /** **/ /** DATES : # Version 0.0 : from : 16 may 2001 **/ /** to 04 jun 2001 **/ /** # Version 0.1 : from : 13 feb 2002 **/ /** to 13 feb 2002 **/ /** # Version 1.0 : from : 06 dec 2004 **/ /** to 06 dec 2004 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ESMUMPS #include "common.h" #ifdef SCOTCH_PTSCOTCH #include "ptscotch.h" #else /* SCOTCH_PTSCOTCH */ #include "scotch.h" #endif /* SCOTCH_PTSCOTCH */ #include "graph.h" #include "dof.h" #include "symbol.h" #include "order.h" #include "fax.h" #include "esmumps.h" /**************************************/ /* */ /* This routine acts as an interface */ /* between ordering software such as */ /* MUMPS and Scotch+Emilio. */ /* */ /**************************************/ /* Meaning of the parameters : ** - n : order of the system (that is, number of columns). ** - iwlen : not used. Here for compatibility. ** - pe : on input, position in array iw of the extra-diagonal ** terms for the considered column. ** on output, -pe(i) is the father of node i in the elimination ** tree if i is a principal variable, or it is the index of ** the principal variable if i is a secondary variable. ** - pfree : number of extra-diagonal terms for the considered ** node (that is, the number of arcs dans le graph for this ** vertex). ** - len : array holding the number of extra-diagonal terms for ** each column. ** - iw : array of extra-diagonal terms (preserved). ** - nv : on output, nv(i) = 0 if variable i is a secondary ** variable, else nv(i) is the number of columns that are ** merged into principal variable i. ** - elen : on output, direct permutation (for MUMPS; the ** meaning of the "direct" and "inverse" permutations is ** just the opposite for Scotch) : ** k=elen(i) <==> column i is the k-th pivot. ** - last : on output, inverse permutation (for MUMPS) : ** i=last(k) <==> column i est le k-th pivot */ int esmumps ( const INT n, const INT iwlen, /* Not used, just here for consistency */ INT * restrict const petab, const INT pfree, INT * restrict const lentab, INT * restrict const iwtab, INT * restrict const nvtab, INT * restrict const elentab, /* Permutations computed for debugging only */ INT * restrict const lasttab) /* Permutations computed for debugging only */ { INT baseval; /* Base value */ INT * restrict vendtab; /* Vertex end array */ Graph grafdat; /* Graph */ Order ordedat; /* Graph ordering */ SymbolMatrix symbdat; /* Block factored matrix */ Dof deofdat; /* Matrix DOF structure */ INT vertnum; INT cblknum; INT colnum; if ((vendtab = memAlloc (n * sizeof (INT))) == NULL) { errorPrint ("esmumps: out of memory"); return (1); } for (vertnum = 0; vertnum < n; vertnum ++) vendtab[vertnum] = petab[vertnum] + lentab[vertnum]; baseval = 1; /* Assume Fortran-based indexing */ graphInit (&grafdat); graphBuildGraph2 (&grafdat, baseval, n, pfree - 1, petab, vendtab, NULL, NULL, iwtab, NULL); dofInit (&deofdat); dofConstant (&deofdat, 1, n, 1); /* One DOF per node, Fortran-based indexing */ orderInit (&ordedat); orderGraph (&ordedat, &grafdat); /* Compute ordering with Scotch */ #ifdef ESMUMPS_DEBUG /* Permutations are output for debugging only */ memCpy (elentab, ordedat.permtab, n * sizeof (INT)); /* Copy permutations */ memCpy (lasttab, ordedat.peritab, n * sizeof (INT)); #endif /* ESMUMPS_DEBUG */ symbolInit (&symbdat); symbolFaxGraph (&symbdat, &grafdat, &ordedat); /* Compute block symbolic factorizaion */ for (cblknum = 0; cblknum < symbdat.cblknbr; cblknum ++) { /* For all column blocks */ INT degnbr; /* True degree of column block */ INT bloknum; for (bloknum = symbdat.cblktab[cblknum].bloknum, degnbr = 0; bloknum < symbdat.cblktab[cblknum + 1].bloknum; bloknum ++) degnbr += symbdat.bloktab[bloknum - baseval].lrownum - symbdat.bloktab[bloknum - baseval].frownum + 1; nvtab[ordedat.peritab[symbdat.cblktab[cblknum].fcolnum - baseval] - baseval] = degnbr; /* Set true block degree */ for (colnum = symbdat.cblktab[cblknum].fcolnum + 1; /* For all secondary variables */ colnum <= symbdat.cblktab[cblknum].lcolnum; colnum ++) { nvtab[ordedat.peritab[colnum - baseval] - baseval] = 0; /* Set nv = 0 and pe = - principal variable */ petab[ordedat.peritab[colnum - baseval] - baseval] = - ordedat.peritab[symbdat.cblktab[cblknum].fcolnum - baseval]; } if (symbdat.cblktab[cblknum].bloknum == /* If column block has no extra-diagonals */ symbdat.cblktab[cblknum + 1].bloknum - 1) /* Then mark block as root of subtree */ petab[ordedat.peritab[symbdat.cblktab[cblknum].fcolnum - baseval] - baseval] = 0; else petab[ordedat.peritab[symbdat.cblktab[cblknum].fcolnum - baseval] - baseval] = - ordedat.peritab[symbdat.cblktab[symbdat.bloktab[symbdat.cblktab[cblknum].bloknum + 1 - baseval].cblknum - baseval].fcolnum - baseval]; } symbolExit (&symbdat); orderExit (&ordedat); dofExit (&deofdat); graphExit (&grafdat); memFree (vendtab); return (0); } scotch_6.0.9/src/esmumps/Makefile0000644000302600021200000001037713465315041017207 0ustar pelegrinpelegrin## Copyright 2004,2007-2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## bindir = ../../bin includedir = ../../include libdir = ../../lib ## ## General inference rules. ## include ../Makefile.inc %$(OBJ) : %.c $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(includedir) -c $(<) -o $(@) %$(EXE) : %.c $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L. -lesmumps -L$(libdir) -lscotch -lscotcherrexit $(LDFLAGS) ## ## Project rules. ## .PHONY : ptscotch scotch ptinstall install clean realclean scotch : clean $(MAKE) CC="$(CCS)" CCD="$(CCS)" \ libesmumps$(LIB) \ main_esmumps$(EXE) ptscotch : scotch install : scotch -$(CP) esmumps.h $(includedir) -$(CP) libesmumps$(LIB) $(libdir) ptinstall : scotch -$(CP) esmumps.h $(includedir) -$(CP) libesmumps$(LIB) $(libdir)/libptesmumps$(LIB) clean : -$(RM) *~ common.h *$(OBJ) lib*$(LIB) main_esmumps$(EXE) realclean : clean ## ## Todo list. ## common.h : ../libscotch/common.h \ module.h $(CAT) module.h ../libscotch/common.h > $(@) graph_graph$(OBJ) : graph_graph.c \ common.h \ $(includedir)/scotch.h \ graph.h order$(OBJ) : order.c \ order.h \ common.h \ graph.h order_scotch_graph$(OBJ) : order_scotch_graph.c \ order.h \ common.h \ graph.h \ $(includedir)/scotch.h dof$(OBJ) : dof.c \ dof.h \ common.h \ graph.h \ $(includedir)/scotch.h symbol$(OBJ) : symbol.c \ symbol.h \ common.h symbol_fax$(OBJ) : symbol_fax.c \ common.h \ graph.h \ symbol.h \ order.h \ fax.h symbol_fax_graph$(OBJ) : symbol_fax_graph.c \ symbol_fax.c \ common.h \ graph.h \ symbol.h \ order.h \ fax.h \ $(includedir)/scotch.h esmumps$(OBJ) : esmumps.c \ common.h \ graph.h \ symbol.h \ order.h \ fax.h \ esmumps.h \ $(includedir)/scotch.h esmumps_f$(OBJ) : esmumps_f.c \ common.h \ esmumps.h esmumps_strats$(OBJ) : esmumps_strats.c \ common.h \ esmumps.h libesmumps$(LIB) : graph_graph$(OBJ) \ order$(OBJ) \ order_scotch_graph$(OBJ) \ dof$(OBJ) \ symbol$(OBJ) \ symbol_fax_graph$(OBJ) \ esmumps$(OBJ) \ esmumps_f$(OBJ) \ esmumps_strats$(OBJ) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) main_esmumps$(EXE) : main_esmumps.c \ common.h \ graph.h \ order.h \ symbol.h \ esmumps.h \ libesmumps$(LIB) \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) scotch_6.0.9/src/esmumps/order.h0000644000302600021200000001364513303015264017027 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the graph ordering routine. **/ /** **/ /** DATES : # Version 0.0 : from : 22 aug 1998 **/ /** to 01 may 1999 **/ /** # Version 2.0 : from : 25 oct 2003 **/ /** to 02 jul 2010 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define ORDER_H /* ** The type and structure definitions. */ /*+ Ordering structure. vnodbas holds the base value for node indexings. vnodbas is equal to baseval for graphs, and to vnodbas for meshes. The same holds for rangtab, with rangtab[0] = vnodbas. +*/ typedef struct Order_ { INT cblknbr; /*+ Number of column blocks +*/ INT * rangtab; /*+ Column block range array [based,+1] +*/ INT * permtab; /*+ Permutation array [based] +*/ INT * peritab; /*+ Inverse permutation array [based] +*/ } Order; /* ** The function prototypes. */ int orderInit (Order * const ordeptr); void orderExit (Order * const ordeptr); int orderLoad (Order * const ordeptr, FILE * const stream); int orderSave (const Order * const ordeptr, FILE * const stream); void orderBase (Order * restrict const ordeptr, const INT baseval); int orderCheck (const Order * const ordeptr); int orderGrid2 (Order * const ordeptr, const INT xnbr, const INT ynbr, const INT baseval, const INT xlim, const INT ylim); int orderGrid2C (Order * const ordeptr, const INT xnbr, const INT ynbr, const INT baseval, const INT xlim, const INT ylim); int orderGrid3 (Order * const ordeptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const INT xlim, const INT ylim, const INT zlim); int orderGrid3C (Order * const ordeptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const INT xlim, const INT ylim, const INT zlim); #ifdef GRAPH_H int orderGraph (Order * restrict const ordeptr, Graph * restrict const grafptr); int orderGraphList (Order * restrict const ordeptr, Graph * restrict const grafptr, const INT listnbr, const INT * restrict const listtab); int orderGraphStrat (Order * restrict const ordeptr, Graph * restrict const grafptr, const char * restrict const); int orderGraphListStrat (Order * restrict const ordeptr, Graph * restrict const grafptr, const INT listnbr, const INT * restrict const listtab, const char * const); #endif /* GRAPH_H */ #ifdef MESH_H int orderMesh (Order * restrict const ordeptr, Mesh * restrict const meshptr); int orderMeshList (Order * restrict const ordeptr, Mesh * restrict const meshptr, const INT listnbr, const INT * restrict const listtab); int orderMeshStrat (Order * restrict const ordeptr, Mesh * restrict const meshptr, const char * const); int orderMeshListStrat (Order * restrict const ordeptr, Mesh * restrict const meshptr, const INT listnbr, const INT * restrict const listtab, const char * const); #endif /* MESH_H */ scotch_6.0.9/src/esmumps/symbol.c0000644000302600021200000001144213303015264017205 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : symbol.c **/ /** **/ /** AUTHORS : David GOUDIN **/ /** Pascal HENON **/ /** Francois PELLEGRINI **/ /** Pierre RAMET **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the general purpose **/ /** routines for the symbolic matrix. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 07 oct 1998 **/ /** # Version 0.1 : from : 03 dec 1998 **/ /** to 03 dec 1998 **/ /** # Version 3.0 : from : 29 feb 2004 **/ /** to 29 feb 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define SYMBOL #include "common.h" #include "symbol.h" /******************************************/ /* */ /* The symbolic matrix handling routines. */ /* */ /******************************************/ /*+ This routine initializes the given *** symbolic block matrix structure. *** It returns: *** - 0 : in all cases. +*/ int symbolInit ( SymbolMatrix * const symbptr) { memSet (symbptr, 0, sizeof (SymbolMatrix)); return (0); } /*+ This routine frees the contents *** of the given symbolic block matrix. *** It returns: *** - VOID : in all cases. +*/ void symbolExit ( SymbolMatrix * const symbptr) { if (symbptr->cblktab != NULL) memFree (symbptr->cblktab); if (symbptr->bloktab != NULL) memFree (symbptr->bloktab); #ifdef SYMBOL_DEBUG symbolInit (symbptr); #endif /* SYMBOL_DEBUG */ } /*+ This routine reallocates the arrays *** of the given symbolic block matrix. *** It returns: *** - VOID : in all cases. +*/ void symbolRealloc ( SymbolMatrix * const symbptr) { SymbolCblk * cblktab; SymbolBlok * bloktab; if ((cblktab = (SymbolCblk *) memAlloc ((symbptr->cblknbr + 1) * sizeof (SymbolCblk))) == NULL) return; /* Cannot move smallest array */ memCpy (cblktab, symbptr->cblktab, (symbptr->cblknbr + 1) * sizeof (SymbolCblk)); memFree (symbptr->cblktab); /* Move column block array */ symbptr->cblktab = cblktab; if ((bloktab = (SymbolBlok *) memAlloc (symbptr->bloknbr * sizeof (SymbolBlok))) == NULL) return; /* Cannot move array */ memCpy (bloktab, symbptr->bloktab, symbptr->bloknbr * sizeof (SymbolBlok)); memFree (symbptr->bloktab); /* Move column block array */ symbptr->bloktab = bloktab; } scotch_6.0.9/src/esmumps/module.h0000644000302600021200000002075013303015264017174 0ustar pelegrinpelegrin/* Copyright 2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : module.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This is the global configuration file **/ /** for the ESMUMPS library module. **/ /** **/ /** DATES : # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** # Version 6.0 : from : 21 may 2018 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ #define MODULE_H /* ** Function renaming. */ #if ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) #define clockGet _SCOTCHclockGet #define fileNameDistExpand _SCOTCHfileNameDistExpand #define usagePrint _SCOTCHusagePrint #define errorPrint SCOTCH_errorPrint #define errorPrintW SCOTCH_errorPrintW #define errorProg SCOTCH_errorProg #define intLoad _SCOTCHintLoad #define intSave _SCOTCHintSave #define intAscn _SCOTCHintAscn #define intPerm _SCOTCHintPerm #define intRandReset _SCOTCHintRandReset #define intRandInit _SCOTCHintRandInit /* #define intRandVal _SCOTCHintRandVal Already a macro */ #define intSearchDicho _SCOTCHintSearchDicho #define intSort1asc1 _SCOTCHintSort1asc1 #define intSort2asc1 _SCOTCHintSort2asc1 #define intSort2asc2 _SCOTCHintSort2asc2 #define intSort3asc1 _SCOTCHintSort3asc1 #define memAllocGroup _SCOTCHmemAllocGroup #define memReallocGroup _SCOTCHmemReallocGroup #define memOffset _SCOTCHmemOffset #endif /* ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) */ #ifndef ESMUMPS_NAME_PREFIX_INTERN #define ESMUMPS_NAME_PREFIX_INTERN _ESMUMPS #define ESMUMPS_NAME_PREFIX_PUBLICFL esmumpsf #define ESMUMPS_NAME_PREFIX_PUBLICFU ESMUMPSF #endif /* ESMUMPS_NAME_PREFIX_INTERN */ #ifndef ESMUMPS_NAME_SUFFIX #define ESMUMPS_NAME_SUFFIX #endif /* ESMUMPS_NAME_SUFFIX */ #ifndef ESMUMPS_NAME_SUFFIXFL #define ESMUMPS_NAME_SUFFIXFL ESMUMPS_NAME_SUFFIX #define ESMUMPS_NAME_SUFFIXFU ESMUMPS_NAME_SUFFIX #endif /* SCOTCH_NAME_SUFFIXFL */ #define ESMUMPS_VOID #define ESMUMPS_NAME_GLUE2(n,s) n##s #define ESMUMPS_NAME_GLUE3(p,n,s) p##n##s #define ESMUMPS_NAME_MACRO2(n,s) ESMUMPS_NAME_GLUE2 (n,s) #define ESMUMPS_NAME_MACRO3(p,n,s) ESMUMPS_NAME_GLUE3 (p,n,s) #define ESMUMPS_NAME_INTERN(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_INTERN,f,ESMUMPS_NAME_SUFFIX) #define ESMUMPS_NAME_PUBLIC(f) ESMUMPS_NAME_MACRO2 (f,ESMUMPS_NAME_SUFFIX) #define ESMUMPS_NAME_PUBLICFL(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_PUBLICFL,f,ESMUMPS_NAME_SUFFIXFL) #define ESMUMPS_NAME_PUBLICFU(f) ESMUMPS_NAME_MACRO3 (ESMUMPS_NAME_PREFIX_PUBLICFU,f,ESMUMPS_NAME_SUFFIXFU) #define ESMUMPS_FORTRAN(nu,nl,pl,pc) FORTRAN (ESMUMPS_NAME_PUBLICFU(nu),ESMUMPS_NAME_PUBLICFL(nl),pl,pc) #define dofConstant ESMUMPS_NAME_INTERN (dofConstant) #define dofGraph ESMUMPS_NAME_INTERN (dofGraph) #define dofExit ESMUMPS_NAME_INTERN (dofExit) #define dofInit ESMUMPS_NAME_INTERN (dofInit) #define dofLoad ESMUMPS_NAME_INTERN (dofLoad) #define dofSave ESMUMPS_NAME_INTERN (dofSave) #define graphBuild ESMUMPS_NAME_INTERN (graphBuild) #define graphBuildGraph ESMUMPS_NAME_INTERN (graphBuildGraph) #define graphBuildGraph2 ESMUMPS_NAME_INTERN (graphBuildGraph2) #define orderBase ESMUMPS_NAME_INTERN (orderBase) #define orderCheck ESMUMPS_NAME_INTERN (orderCheck) #define orderExit ESMUMPS_NAME_INTERN (orderExit) #define orderGraph ESMUMPS_NAME_INTERN (orderGraph) #define orderGraphList ESMUMPS_NAME_INTERN (orderGraphList) #define orderGraphListStrat ESMUMPS_NAME_INTERN (orderGraphListStrat) #define orderGraphStrat ESMUMPS_NAME_INTERN (orderGraphStrat) #define orderGrid2 ESMUMPS_NAME_INTERN (orderGrid2) #define orderGrid2C ESMUMPS_NAME_INTERN (orderGrid2C) #define orderGrid3 ESMUMPS_NAME_INTERN (orderGrid3) #define orderGrid3C ESMUMPS_NAME_INTERN (orderGrid3C) #define orderInit ESMUMPS_NAME_INTERN (orderInit) #define orderLoad ESMUMPS_NAME_INTERN (orderLoad) #define orderMesh ESMUMPS_NAME_INTERN (orderMesh) #define orderMeshList ESMUMPS_NAME_INTERN (orderMeshList) #define orderMeshListStrat ESMUMPS_NAME_INTERN (orderMeshListStrat) #define orderMeshStrat ESMUMPS_NAME_INTERN (orderMeshStrat) #define orderSave ESMUMPS_NAME_INTERN (orderSave) #define symbolCheck ESMUMPS_NAME_INTERN (symbolCheck) #define symbolCost ESMUMPS_NAME_INTERN (symbolCost) #define symbolCosti ESMUMPS_NAME_INTERN (symbolCosti) #define symbolDraw ESMUMPS_NAME_INTERN (symbolDraw) #define symbolDrawColor ESMUMPS_NAME_INTERN (symbolDrawColor) #define symbolDrawFunc ESMUMPS_NAME_INTERN (symbolDrawFunc) #define symbolExit ESMUMPS_NAME_INTERN (symbolExit) #define symbolInit ESMUMPS_NAME_INTERN (symbolInit) #define symbolLevf ESMUMPS_NAME_INTERN (symbolLevf) #define symbolLoad ESMUMPS_NAME_INTERN (symbolLoad) #define symbolNonzeros ESMUMPS_NAME_INTERN (symbolNonzeros) #define symbolRealloc ESMUMPS_NAME_INTERN (symbolRealloc) #define symbolSave ESMUMPS_NAME_INTERN (symbolSave) #define symbolTree ESMUMPS_NAME_INTERN (symbolTree) #define symbolKeepAdd ESMUMPS_NAME_INTERN (symbolKeepAdd) #define symbolKeepCompute ESMUMPS_NAME_INTERN (symbolKeepCompute) #define symbolKeepDel ESMUMPS_NAME_INTERN (symbolKeepDel) #define symbolKeepExit ESMUMPS_NAME_INTERN (symbolKeepExit) #define symbolKeepHisto ESMUMPS_NAME_INTERN (symbolKeepHisto) #define symbolKeepInit ESMUMPS_NAME_INTERN (symbolKeepInit) #define symbolKeepPurge ESMUMPS_NAME_INTERN (symbolKeepPurge) #define symbolKeepView ESMUMPS_NAME_INTERN (symbolKeepView) scotch_6.0.9/src/esmumps/symbol.h0000644000302600021200000002244513303015264017217 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : symbol.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** David GOUDIN (v0.0) **/ /** Pascal HENON (v0.0) **/ /** Pierre RAMET (v0.0) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the symbolic matrix. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 07 oct 1998 **/ /** # Version 0.1 : from : 21 mar 2002 **/ /** to 21 mar 2002 **/ /** # Version 1.0 : from : 03 jun 2002 **/ /** to 26 jun 2002 **/ /** # Version 1.3 : from : 10 apr 2003 **/ /** to 10 jun 2003 **/ /** # Version 3.0 : from : 28 feb 2004 **/ /** to 03 mar 2005 **/ /** # Version 5.1 : from : 05 nov 2010 **/ /** to 05 nov 2010 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define SYMBOL_H #define SYMBOL_VERSION 1 /* ** The type and structure definitions. */ /*+ The column block structure. +*/ typedef struct SymbolCblk_ { INT fcolnum; /*+ First column index +*/ INT lcolnum; /*+ Last column index (inclusive) +*/ INT bloknum; /*+ First block in column (diagonal) +*/ } SymbolCblk; /*+ The column block structure. +*/ typedef struct SymbolBlok_ { INT frownum; /*+ First row index +*/ INT lrownum; /*+ Last row index (inclusive) +*/ INT cblknum; /*+ Facing column block +*/ INT levfval; /*+ Level-of-fill value +*/ } SymbolBlok; /*+ The symbolic block matrix. +*/ typedef struct SymbolMatrix_ { INT baseval; /*+ Base value for numberings +*/ INT cblknbr; /*+ Number of column blocks +*/ INT bloknbr; /*+ Number of blocks +*/ SymbolCblk * cblktab; /*+ Array of column blocks [+1,based] +*/ SymbolBlok * bloktab; /*+ Array of blocks [based] +*/ INT nodenbr; /*+ Number of nodes in matrix +*/ } SymbolMatrix; /*+ The type of cost computations. +*/ typedef enum SymbolCostType_ { SYMBOLCOSTLDLT /*+ Crout (i.e. LDLt) cost function +*/ } SymbolCostType; /* Structure for keeping track of selected blocks in the matrix pattern. The values of the tables are the remaining values for the yet unselected blocks. */ typedef struct SymbolKeepBlok_ { INT levfval; /*+ Values for incomplete factorisation +*/ INT nupdval; INT ctrival; INT ctroval; INT hghtval; } SymbolKeepBlok; typedef struct SymbolKeep_ { INT levfmax; /*+ Maximum values for incomplete fax +*/ INT nupdmax; INT ctrimax; INT ctromax; INT hghtmax; byte * keeptab; /*+ Flag array for kept blocks +*/ SymbolKeepBlok * kblktab; /*+ Block parameter array +*/ double * levftab; /*+ Area arrays for selected blocks +*/ double * nupdtab; double * ctritab; double * ctrotab; double * hghttab; } SymbolKeep; /* ** The function prototypes. */ int symbolInit (SymbolMatrix * const symbptr); void symbolExit (SymbolMatrix * const symbptr); void symbolRealloc (SymbolMatrix * const symbptr); int symbolLoad (SymbolMatrix * const symbptr, FILE * const stream); int symbolSave (const SymbolMatrix * const symbptr, FILE * const stream); int symbolCheck (const SymbolMatrix * const symbptr); int symbolDraw (const SymbolMatrix * const symbptr, FILE * const stream); int symbolDrawFunc (const SymbolMatrix * const symbptr, int (*) (const SymbolMatrix * const, const SymbolBlok * const, void * const, float * const), int (*) (const SymbolMatrix * const, const SymbolBlok * const, void * const, float * const), void * const, FILE * const stream); void symbolDrawColor (const INT labl, float * const coloptr); #ifdef DOF_H int symbolCost (const SymbolMatrix * const symbptr, const Dof * const deofptr, const SymbolCostType typeval, double * const nnzptr, double * const opcptr); int symbolCosti (const SymbolMatrix * const symbptr, const Dof * const deofptr, const SymbolCostType typeval, const INT levfval, double * const nnzptr, double * const opcptr); int symbolLevf (const SymbolMatrix * const symbptr, INT * const levfmax, INT ** const levftab); int symbolTree (const SymbolMatrix * const symbptr, const Dof * const deofptr, INT * const leafnbr, INT * const heigmin, INT * const heigmax, double * const heigavg, double * const heigdlt); int symbolNonzeros (const SymbolMatrix * const symbptr, FILE * const stream); #endif /* DOF_H */ int symbolKeepInit (SymbolKeep * restrict const keepptr, const SymbolMatrix * const symbptr); void symbolKeepExit (SymbolKeep * restrict const keepptr); void symbolKeepAdd (SymbolKeep * restrict const keepptr, const SymbolMatrix * const symbptr, int (* funcptr) (const SymbolKeepBlok * const, void * const), void * dataptr); void symbolKeepDel (SymbolKeep * restrict const keepptr, const SymbolMatrix * const symbptr, int (* funcptr) (const SymbolKeepBlok * const, void * const), void * dataptr); int symbolKeepCompute (SymbolKeep * restrict const keepptr, const SymbolMatrix * const symbptr); int symbolKeepHisto (SymbolKeep * const keepptr, const SymbolMatrix * const, int (* funcptr) (const SymbolKeepBlok * const, void * const), void * dataptr); int symbolKeepPurge (SymbolKeep * restrict const keepptr, SymbolMatrix * restrict const symbptr); int symbolKeepView (const SymbolKeep * const keepptr, const double nnzlmax, const char * const nameptr); scotch_6.0.9/src/esmumps/graph_graph.c0000644000302600021200000001422513303015264020164 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_graph.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These module holds the array graph **/ /** building routine. **/ /** **/ /** DATES : # Version 1.3 : from : 14 oct 2003 **/ /** to 22 jan 2004 **/ /** # Version 2.0 : from : 28 feb 2004 **/ /** to 06 dec 2004 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "common.h" #ifdef SCOTCH_PTSCOTCH #include "ptscotch.h" #else /* SCOTCH_PTSCOTCH */ #include "scotch.h" #endif /* SCOTCH_PTSCOTCH */ #include "graph.h" /********************************/ /* */ /* The graph handling routines. */ /* */ /********************************/ /* This routine builds a graph ** structure from the given ** arrays. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphBuildGraph ( Graph * const grafptr, /*+ Graph to build +*/ const INT baseval, /*+ Base value +*/ const INT vertnbr, /*+ Number of vertices +*/ const INT edgenbr, /*+ Number of arcs +*/ INT * restrict verttab, /*+ Vertex array +*/ INT * restrict velotab, /*+ Array of vertex weights (DOFs) if not NULL +*/ INT * restrict edgetab) /*+ Edge array +*/ { if (sizeof (INT) != sizeof (SCOTCH_Num)) { /* Check integer consistency */ errorPrint ("graphBuildGraph: inconsistent integer types"); return (1); } SCOTCH_graphBuild (grafptr, baseval, vertnbr, verttab, NULL, velotab, NULL, edgenbr, edgetab, NULL); #ifdef GRAPH_DEBUG if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphBuildGraph: inconsistent graph data"); return (1); } #endif /* GRAPH_DEBUG */ return (0); } /* This routine builds a graph ** structure from the given ** arrays, with full libScotch ** features. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphBuildGraph2 ( Graph * const grafptr, /*+ Graph to build +*/ const INT baseval, /*+ Base value +*/ const INT vertnbr, /*+ Number of vertices +*/ const INT edgenbr, /*+ Number of arcs +*/ INT * restrict verttab, /*+ Vertex array +*/ INT * restrict vendtab, /*+ Vertex end array +*/ INT * restrict velotab, /*+ Array of vertex weights (DOFs) if not NULL +*/ INT * restrict vlbltab, /*+ Array of vertex labels if not NULL +*/ INT * restrict edgetab, /*+ Edge array +*/ INT * restrict edlotab) /*+ Edge load array +*/ { if (sizeof (INT) != sizeof (SCOTCH_Num)) { /* Check integer consistency */ errorPrint ("graphBuildGraph2: inconsistent integer types"); return (1); } SCOTCH_graphBuild (grafptr, baseval, vertnbr, verttab, vendtab, velotab, vlbltab, edgenbr, edgetab, edlotab); #ifdef GRAPH_DEBUG if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphBuildGraph2: inconsistent graph data"); return (1); } #endif /* GRAPH_DEBUG */ return (0); } scotch_6.0.9/src/esmumps/dof.h0000644000302600021200000001217513303015264016461 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dof.h **/ /** **/ /** AUTHORS : David GOUDIN **/ /** Pascal HENON **/ /** Francois PELLEGRINI **/ /** Pierre RAMET **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the DOF handling structure. **/ /** **/ /** DATES : # Version 0.0 : from : 07 oct 1998 **/ /** to 16 oct 1998 **/ /** # Version 1.0 : from : 06 jun 2002 **/ /** to 06 jun 2002 **/ /** # Version 3.0 : from : 28 feb 2004 **/ /** to 29 feb 2004 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define DOF_H #define DOF_CONSTANT /* Constant DOFs for ESMUMPS */ /* ** The type and structure definitions. */ /*+ The DOF structure. This structure is always associated to a Graph structure, which holds the base value. +*/ typedef struct Dof_ { INT baseval; /*+ Base value for indexing +*/ INT nodenbr; /*+ Number of nodes in DOF array +*/ INT noddval; /*+ DOF value for every node (if noddtab == NULL, 0 else) +*/ INT * restrict noddtab; /*+ Array of node->first DOF indexes (if noddval == 0) [+1,based] +*/ } Dof; /* ** The function prototypes. */ int dofInit (Dof * const deofptr); void dofExit (Dof * const deofptr); int dofLoad (Dof * const deofptr, FILE * const stream); int dofSave (const Dof * const deofptr, FILE * const stream); void dofConstant (Dof * const deofptr, const INT baseval, const INT nodenbr, const INT noddval); #ifdef GRAPH_H int dofGraph (Dof * const deofptr, const Graph * grafptr, const INT, const INT * const peritab); #endif /* GRAPH_H */ /* ** The macro definitions. */ #ifdef DOF_CONSTANT #define noddVal(deofptr,nodenum) ((deofptr)->baseval + (deofptr)->noddval * ((nodenum) - (deofptr)->baseval)) #define noddDlt(deofptr,nodenum) ((deofptr)->noddval) #else /* DOF_CONSTANT */ #define noddVal(deofptr,nodenum) (((deofptr)->noddtab != NULL) ? (deofptr)->noddtab[(deofptr)->baseval + (nodenum)] : ((deofptr)->baseval + (deofptr)->noddval * ((nodenum) - (deofptr)->baseval))) #define noddDlt(deofptr,nodenum) (((deofptr)->noddtab != NULL) ? ((deofptr)->noddtab[(deofptr)->baseval + (nodenum) + 1] - (deofptr)->noddtab[(deofptr)->baseval + (nodenum)]) : (deofptr)->noddval) #endif /* DOF_CONSTANT */ scotch_6.0.9/src/esmumps/esmumps.h0000644000302600021200000000622613303015264017402 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : esmumps.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the symbolic factorization routine. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 24 sep 1998 **/ /** # Version 0.1 : from : 04 apr 1999 **/ /** to 01 may 1999 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define ESMUMPS_H /* ** The function prototypes. */ int esmumps (const INT n, const INT iwlen, INT * const pe, const INT pfree, INT * const len, INT * const iw, INT * const nv, INT * const elen, INT * const last); int esmumps_strat1 (const INT procnbr, const INT leafsiz, const int leorval, const INT cminval, const INT cmaxval, const double fratval, const int verbval, FILE * const stream, char * const straptr); scotch_6.0.9/src/esmumps/esmumps_strats.c0000644000302600021200000001432113303015264020770 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : esmumps_strats.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains defalut strategy **/ /** building routines for calling Scotch **/ /** from MUMPS. **/ /** **/ /** DATES : # Version 1.0 : from : 08 dec 2003 **/ /** to 08 dec 2003 **/ /** # Version 1.1 : from : 21 jun 2007 **/ /** to 21 jun 2007 **/ /** # Version 5.0 : from : 08 feb 2008 **/ /** to 08 feb 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ESMUMPS #include "common.h" #include "esmumps.h" /**************************************/ /* */ /* This routine creates a strategy */ /* string from the given parameters. */ /* */ /**************************************/ /* Meaning of the parameters : ** - procnbr : number of processors. ** - leafsiz : limit size in vertices of the leaf subgraphs. ** - leorval : type of halo ordering : 0 : HAMD; 1 : HAMF. ** - cminval : minimum number of column blocks. ** - cmaxval : maximum number of column blocks. ** - fratval : maximum fill ratio. ** - verbval : verbose flag if > 0. ** - stream : verbose stream. ** - straptr : pointer to character string of sufficient size ** to hold the resulting Scotch strategy. */ int esmumps_strat1 ( const INT procnbr, const INT leafsiz, const int leorval, const INT cminval, const INT cmaxval, const double fratval, const int verbval, FILE * const stream, char * const straptr) { INT levlval; /* Nested dissection level */ INT procmax; char hamxval; /* Type of halo ordering routine */ for (levlval = 1, procmax = 1; procmax < procnbr; procmax <<= 1, levlval ++) ; /* Compute log2 of procnbr, + 1 */ hamxval = (leorval == 0) ? 'h' : 'f'; /* HAMD if 0, HAMF if 1 */ if (verbval != 0) { fprintf (stream, "Scotch strategy:\n- %ld levels of ND are necessary for %ld processors\n", (long) levlval, (long) procnbr); fprintf (stream, "- If compressed (0.7) graph, then perform %ld levels of ND, then switch to HAM(%c)\n", (long) levlval, (char) hamxval); fprintf (stream, "- If uncompressed graph, then perform at least %ld levels of ND, and proceed\n until graph size less than %ld vertices, then switch to HAM(%c)\n", (long) levlval, (long) leafsiz, (char) hamxval); fprintf (stream, "- At the end of HAM(%c), amalgamate if number of columns not greater than %ld,\n and if either column size is smaller than %ld or fill ratio less than %lf\n", (char) hamxval, (long) cmaxval, (long) cminval, (double) fratval); fprintf (stream, "- During uncoarsening, band graphs of width 3 are used for refinement\n"); fprintf (stream, "- Separators are not split and are ordered in natural order\n"); } sprintf (straptr, "c{rat=0.7,cpr=n{sep=/((levl<%ld)|(vert>%ld))?m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=h{pass=10}f{bal=0.2}}}|m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=h{pass=10}f{bal=0.2}}};,ole=%c{cmin=%ld,cmax=%ld,frat=%lf},ose=s},unc=n{sep=/(levl<%ld)?(m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=h{pass=10}f{bal=0.2}}})|m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=h{pass=10}f{bal=0.2}}};,ole=%c{cmin=%ld,cmax=%ld,frat=%lf},ose=s}}", (long) levlval, (long) leafsiz, (char) hamxval, (long) cminval, (long) cmaxval, (double) fratval, (long) levlval, (char) hamxval, (long) cminval, (long) cmaxval, (double) fratval); return (0); } scotch_6.0.9/src/esmumps/main_esmumps.c0000644000302600021200000001271113303015264020375 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : main_mumps.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This is the test module for the MUMPS **/ /** interface routine. **/ /** **/ /** DATES : # Version 0.0 : from : 17 may 2001 **/ /** to 17 may 2001 **/ /** # Version 1.0 : from : 17 jun 2005 **/ /** to 17 jun 2005 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** # Version 6.0 : from : 01 dec 2012 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include "common.h" #include "scotch.h" #include "graph.h" #include "esmumps.h" void ESMUMPSF (const INT * const, const INT * const, INT * const, const INT * const, INT * const, INT * const, INT * const, INT * const, INT * const, INT * const); /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main (argc, argv) int argc; char * argv[]; { Graph grafdat; /* Graph to load */ INT vertnbr; INT * verttab; INT edgenbr; INT * edgetab; INT * lentab; INT * nvtab; INT * elentab; INT * lasttab; INT pfree; INT ncmpa; INT vertnum; FILE * stream; if (argc != 2) { errorPrint ("main_esmumps: usage: main_esmumps graph_file"); return (1); } graphInit (&grafdat); if ((stream = fopen (argv[1], "r")) == NULL) { errorPrint ("main_esmumps: cannot open graph file"); graphExit (&grafdat); return (1); } if (graphLoad (&grafdat, stream, 1, 3) != 0) { /* Base graph with base value 1, no loads */ errorPrint ("main_esmumps: cannot open graph file"); graphExit (&grafdat); return (1); } fclose (stream); graphData (&grafdat, NULL, &vertnbr, &verttab, NULL, NULL, NULL, &edgenbr, &edgetab, NULL); if (memAllocGroup ((void **) (void *) &lentab, (size_t) (vertnbr * sizeof (INT)), &nvtab, (size_t) (vertnbr * sizeof (INT)), &elentab, (size_t) (vertnbr * sizeof (INT)), &lasttab, (size_t) (vertnbr * sizeof (INT)), NULL) == NULL) { errorPrint ("main_esmumps: out of memory"); graphExit (&grafdat); return (1); } for (vertnum = 0; vertnum < vertnbr; vertnum ++) { if (verttab[vertnum] == verttab[vertnum + 1]) { lentab[vertnum] = 0; verttab[vertnum] = 0; /* Graph structure no longer valid in Emilio */ } else lentab[vertnum] = verttab[vertnum + 1] - verttab[vertnum]; } pfree = edgenbr + 1; ESMUMPSF (&vertnbr, &edgenbr, verttab, &pfree, lentab, edgetab, nvtab, elentab, lasttab, &ncmpa); memFree (lentab); /* Free group leader */ graphExit (&grafdat); if (ncmpa < 0) { errorPrint ("main_esmumps: error in ESMUMPSF (%d)", ncmpa); return (1); } exit (0); } scotch_6.0.9/src/esmumps/symbol_fax.h0000644000302600021200000000741513303015264020055 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : symbol_fax.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Jean ROMAN (v0.0) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the symbolic factorization routine. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 24 sep 1998 **/ /** # Version 0.1 : from : 04 apr 1999 **/ /** to 01 may 1999 **/ /** # Version 1.0 : from : 01 jun 2002 **/ /** to 05 jun 2002 **/ /** # Version 1.1 : from : 26 jun 2002 **/ /** to 26 jun 2002 **/ /** # Version 3.0 : from : 03 mar 2004 **/ /** to 03 mar 2004 **/ /** **/ /************************************************************/ #define SYMBOL_FAX_H /* ** The defines. */ /* Prime number for hashing vertex numbers. */ #define SYMBOL_FAX_HASHPRIME 17 /*+ Prime number for hashing +*/ /* ** The type and structure definitions. */ /*+ The chained column block structure. These blocks are chained in a single linked list for block merge with blocks of left columns. +*/ typedef struct SymbolFaxTlok_ { INT frownum; /*+ First row index +*/ INT lrownum; /*+ Last row index (inclusive) +*/ INT cblknum; /*+ Facing column block +*/ INT nextnum; /*+ Index of next block +*/ } SymbolFaxTlok; scotch_6.0.9/src/esmumps/order_scotch_graph.c0000644000302600021200000002061113303015264021535 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order_scotch_graph.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This is the interface module with the **/ /** libSCOTCH matrix ordering library. **/ /** **/ /** DATES : # Version 0.0 : from : 20 aug 1998 **/ /** to 18 may 1999 **/ /** # Version 1.0 : from : 18 mar 2003 **/ /** to 21 jan 2004 **/ /** # Version 2.0 : from : 28 feb 2004 **/ /** to 04 jan 2005 **/ /** # Version 2.1 : from : 21 jun 2007 **/ /** to 21 jun 2007 **/ /** # Version 5.0 : from : 08 feb 2008 **/ /** to 01 jun 2008 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 02 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ORDER_GRAPH #include "common.h" #ifdef SCOTCH_PTSCOTCH #include "ptscotch.h" #else /* SCOTCH_PTSCOTCH */ #include "scotch.h" #endif /* SCOTCH_PTSCOTCH */ #include "graph.h" #include "order.h" /****************************/ /* */ /* Graph ordering routines. */ /* */ /****************************/ /*+ This routine orders the given *** graph using the Emilio default *** ordering strategy. *** It returns: *** - 0 : if ordering succeeded. *** - !0 : on error. +*/ int orderGraph ( Order * restrict const ordeptr, /*+ Ordering to compute +*/ Graph * restrict const grafptr) /*+ Graph matrix to order +*/ { INT vertnbr; SCOTCH_graphSize (grafptr, &vertnbr, NULL); return (orderGraphList (ordeptr, grafptr, vertnbr, NULL)); } /*+ This routine orders the subgraph of *** the given graph induced by the given *** vertex list, using the Emilio default *** ordering strategy. *** It returns: *** - 0 : if ordering succeeded. *** - !0 : on error. +*/ int orderGraphList ( Order * restrict const ordeptr, /*+ Ordering to compute +*/ Graph * restrict const grafptr, /*+ Graph matrix to order +*/ const INT listnbr, /*+ Number of vertices in list +*/ const INT * restrict const listtab) /*+ Vertex list array +*/ { return (orderGraphListStrat (ordeptr, grafptr, listnbr, listtab, "c{rat=0.7,cpr=n{sep=/(vert>120)?m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=(|h{pass=10})f{bal=0.2}}}|m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=(|h{pass=10})f{bal=0.2}}};,ole=f{cmin=0,cmax=100000,frat=0.0},ose=g},unc=n{sep=/(vert>120)?m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=(|h{pass=10})f{bal=0.2}}}|m{type=h,rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=0.2},org=(|h{pass=10})f{bal=0.2}}};,ole=f{cmin=15,cmax=100000,frat=0.0},ose=g}}")); } /*+ This routine orders the given *** graph using the given ordering *** strategy. *** It returns: *** - 0 : if ordering succeeded. *** - !0 : on error. +*/ int orderGraphStrat ( Order * restrict const ordeptr, /*+ Ordering to compute +*/ Graph * restrict const grafptr, /*+ Graph matrix to order +*/ const char * restrict const stratptr) /*+ Ordering strategy +*/ { INT vertnbr; SCOTCH_graphSize (grafptr, &vertnbr, NULL); return (orderGraphListStrat (ordeptr, grafptr, vertnbr, NULL, stratptr)); } /*+ This routine orders the subgraph of *** the given graph induced by the given *** vertex list, using the given ordering *** strategy. *** It returns: *** - 0 : if ordering succeeded. *** - !0 : on error. +*/ int orderGraphListStrat ( Order * restrict const ordeptr, /*+ Ordering to compute +*/ Graph * restrict const grafptr, /*+ Graph matrix to order +*/ const INT listnbr, /*+ Number of vertices in list +*/ const INT * restrict const listtab, /*+ Vertex list array +*/ const char * restrict const stratptr) /*+ Ordering strategy +*/ { SCOTCH_Strat scotstrat; /* Scotch ordering strategy */ INT baseval; INT vertnbr; INT edgenbr; int o; if (sizeof (INT) != sizeof (SCOTCH_Num)) { /* Check integer consistency */ errorPrint ("orderGraphListStrat: inconsistent integer types"); return (1); } SCOTCH_graphData (grafptr, &baseval, &vertnbr, NULL, NULL, NULL, NULL, &edgenbr, NULL, NULL); if (((ordeptr->permtab = (INT *) memAlloc ( vertnbr * sizeof (INT))) == NULL) || ((ordeptr->peritab = (INT *) memAlloc ( vertnbr * sizeof (INT))) == NULL) || ((ordeptr->rangtab = (INT *) memAlloc ((vertnbr + 1) * sizeof (INT))) == NULL)) { errorPrint ("orderGraphListStrat: out of memory"); orderExit (ordeptr); orderInit (ordeptr); return (1); } SCOTCH_stratInit (&scotstrat); /* Initialize default ordering strategy */ o = SCOTCH_stratGraphOrder (&scotstrat, stratptr); if (o == 0) o = SCOTCH_graphOrderList (grafptr, /* Compute graph ordering */ (SCOTCH_Num) listnbr, (SCOTCH_Num *) listtab, &scotstrat, (SCOTCH_Num *) ordeptr->permtab, (SCOTCH_Num *) ordeptr->peritab, (SCOTCH_Num *) &ordeptr->cblknbr, (SCOTCH_Num *) ordeptr->rangtab, NULL); SCOTCH_stratExit (&scotstrat); if (o != 0) { /* If something failed in Scotch */ orderExit (ordeptr); /* Free ordering arrays */ orderInit (ordeptr); return (1); } #ifdef ORDER_DEBUG if ((ordeptr->rangtab[0] != baseval) || (ordeptr->rangtab[ordeptr->cblknbr] != baseval + vertnbr) || (orderCheck (ordeptr) != 0)) { errorPrint ("orderGraphListStrat: invalid ordering"); } #endif /* ORDER_DEBUG */ ordeptr->rangtab = (INT *) memRealloc (ordeptr->rangtab, (ordeptr->cblknbr + 1) * sizeof (INT)); return (0); } scotch_6.0.9/src/esmumps/symbol_fax_graph.c0000644000302600021200000001324013303015264021222 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : symbol_fax_graph.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This is the block symbolic factoriza- **/ /** tion routine for graphs. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 29 sep 1998 **/ /** # Version 0.2 : from : 08 may 2000 **/ /** to 09 may 2000 **/ /** # Version 1.0 : from : 01 jun 2002 **/ /** to 03 jun 2002 **/ /** # Version 1.1 : from : 26 jun 2002 **/ /** to 26 jun 2002 **/ /** # Version 2.0 : from : 21 mar 2003 **/ /** to 21 mar 2003 **/ /** # Version 3.0 : from : 02 mar 2004 **/ /** to 02 mar 2004 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** **/ /** NOTES : # symbolFaxGraph() could have called **/ /** symbolFax() in the regular way, as **/ /** do all of the grid-like factorization **/ /** routines. However, for efficiency **/ /** reasons, we have decided to inline **/ /** symbolFax(), to avoid a function call **/ /** for every arc. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define SYMBOL_FAX #define SYMBOL_FAX_GRAPH #include "common.h" #ifdef SCOTCH_PTSCOTCH #include "ptscotch.h" #else /* SCOTCH_PTSCOTCH */ #include "scotch.h" #endif /* SCOTCH_PTSCOTCH */ #include "graph.h" #include "symbol.h" #include "order.h" #include "fax.h" #include "symbol_fax.h" /***********************************/ /* */ /* Symbolic factorization routine. */ /* */ /***********************************/ /*+ This routine computes the block symbolic *** factorization of the given matrix graph *** according to the given vertex ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int symbolFaxGraph ( SymbolMatrix * const symbptr, /*+ Symbolic block matrix [based] +*/ const Graph * const grafptr, /*+ Matrix adjacency structure [based] +*/ const Order * const ordeptr) /*+ Matrix ordering +*/ { INT baseval; INT vertnbr; INT * verttab; const INT * restrict verttax; INT edgenbr; INT edgenum; INT * edgetab; const INT * restrict edgetax; SCOTCH_graphData (grafptr, &baseval, &vertnbr, &verttab, NULL, NULL, NULL, &edgenbr, &edgetab, NULL); verttax = verttab - baseval; edgetax = edgetab - baseval; #define SYMBOL_FAX_ITERATOR(ngbdptr, vertnum, vertend) \ for (edgenum = verttax[vertnum]; \ edgenum < verttax[vertnum + 1]; \ edgenum ++) { \ vertend = edgetax[edgenum]; #define SYMBOL_FAX_VERTEX_DEGREE(ngbdptr, vertnum) \ (verttax[(vertnum) + 1] - verttax[(vertnum)]) { #define SYMBOL_FAX_INCLUDED #include "symbol_fax.c" } } scotch_6.0.9/src/esmumps/symbol_fax.c0000644000302600021200000006176713303015264020062 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : symbol_fax.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Jean ROMAN (v0.0) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This is the generic block symbolic **/ /** factorization routine. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 29 sep 1998 **/ /** # Version 0.1 : from : 04 apr 1999 **/ /** to 21 apr 1999 **/ /** # Version 0.2 : from : 08 may 2000 **/ /** to 09 may 2000 **/ /** # Version 1.0 : from : 13 mar 2002 **/ /** to 08 jun 2002 **/ /** # Version 1.2 : from : 23 aug 2002 **/ /** to 23 aug 2002 **/ /** # Version 2.0 : from : 21 mar 2003 **/ /** to 21 mar 2003 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef SYMBOL_FAX_INCLUDED /* If included from other file */ #define SYMBOL_FAX #include "common.h" #include "symbol.h" #include "order.h" #include "fax.h" #include "symbol_fax.h" #endif /* SYMBOL_FAX_INCLUDED */ /***********************************/ /* */ /* Symbolic factorization routine. */ /* */ /***********************************/ /*+ This routine computes the block symbolic *** factorization of the given matrix *** according to the given vertex ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. *** Algorithm: *** The algorithm is implemented in a *** cache-friendly manner, by using a single *** dynamic array which grows along with the *** number of computed blocks. The array is *** decomposed in the following manner: *** - In a first phase, a hash table and a *** sort area are reserved at the end of *** the space of already computed blocks. *** The sort area is created far enough from *** the end of the array of already computed *** blocks such that if there are no contributing *** blocks all new blocks can be created without *** colliding with the sort area. *** - Then, in a second phase, if the current *** column block does have contributing column *** blocks, an area for simply-linked temporary *** blocks is reserved at least after the sort area, *** leaving enough space to create all of the *** corresponding potential new blocks *** just after all the blocks of the previous *** column block (right picture). *** ___________ *** |ccccccccccc| <- bloktab (bloktax) *** |ccccccccccc| *** |ccccccccccc| :ccccccccccc: *** |ccccccccccc| >- Computed blocks ----------< |ccccccccccc| *** |ccccccccccc| |ccccccccccc| *** |-----------| |:::::::::::| *** |hhhhhhhhhhh| <- hashtab = bloknum --------> |bcbcbcbcbcb| *** |hhhhhhhhhhh| | |cbcbcbcbcbc| *** |hhhhhhhhhhh| | |bcbcbcbcbcb| *** |hhhhhhhhhhh| | |cbcbcbcbcbc| *** |-----------| | |bcbcbcbcbcb| *** | | | |-----------| *** |-----------| <- sorttab...... ------------> | | *** |sssssssssss| | | *** |sssssssssss| | | *** |-----------| <- ............................| | *** | | tloktab -> |-----------| *** | | |ttttttttttt| *** | | |ttttttttttt| *** : : |-----------| *** :___________: :___________: *** <- bloktab + blokmax +*/ #ifndef SYMBOL_FAX_INCLUDED #define SYMBOL_FAX_ITERATOR(ngbdptr, vertnum, vertend) \ for (vertend = ngbfrst ((ngbdptr), (vertnum)); \ vertend >= baseval; \ vertend = ngbnext (ngbdptr)) { #define SYMBOL_FAX_VERTEX_DEGREE(ngbdptr, vertnum) \ (ngbdegr ((ngbdptr), (vertnum))) int symbolFax ( SymbolMatrix * const symbptr, /*+ Symbolic block matrix [based] +*/ const INT vertnbr, /*+ Number of vertices +*/ const INT edgenbr, /*+ Number of edges +*/ const INT baseval, /*+ Base value +*/ void * const ngbdptr, /*+ Neighbor bookkeeping area +*/ INT ngbfrst (void * const, const INT), /*+ First neighbor function +*/ INT ngbnext (void * const), /*+ Next neighbor function +*/ INT ngbdegr (void * const, const INT), /*+ Vertex degree function (upper bound) +*/ const Order * const ordeptr) /*+ Matrix ordering +*/ #endif /* SYMBOL_FAX_INCLUDED */ { INT vertnum; /* Vertex number of current column */ INT vertend; /* Current end vertex number */ const INT * restrict permtax; /* Based access to direct permutation array */ const INT * restrict peritax; /* Based access to inverse permutation array */ const INT * restrict rangtax; /* Based access to column block range array */ INT * restrict ctrbtax; /* Based access to array of contribution chains */ SymbolCblk * restrict cblktax; /* Based access to column block array */ INT cblknum; /* Based number of current column block */ INT cblkctr; /* Based number of current contributing column block */ SymbolBlok * restrict bloktax; /* Based access to block array */ INT bloknum; /* Based number of current first free block slot */ INT blokmax; /* Maximum number of blocks in array */ SymbolFaxTlok * restrict tloktab; /* Beginning of array of temporary blocks */ INT ctrbsum; /* Number of contributing blocks for column block */ INT * restrict sorttab; /* Beginning of sort area */ INT sortnbr; /* Number of vertices in sort area and hash table */ INT * restrict hashtab; /* Hash vertex table */ INT hashmsk; /* Mask for access to hash table */ INT colend; /* Column number of vertex neighbor */ permtax = ordeptr->permtab - baseval; /* Compute array bases */ peritax = ordeptr->peritab - baseval; rangtax = ordeptr->rangtab - baseval; blokmax = ordeptr->cblknbr * (2 + edgenbr / vertnbr) + 2; /* Estimate size of initial block array */ { /* Allocate arrays for factoring */ INT * ctrbtab; /* Array for contribution chaining */ SymbolCblk * cblktab; /* Column block array */ SymbolBlok * bloktab; /* Block array */ if (((ctrbtab = (INT *) memAlloc (ordeptr->cblknbr * sizeof (INT))) == NULL) || ((cblktab = (SymbolCblk *) memAlloc ((ordeptr->cblknbr + 1) * sizeof (SymbolCblk))) == NULL) || ((bloktab = (SymbolBlok *) memAlloc (blokmax * sizeof (SymbolBlok))) == NULL)) { errorPrint ("symbolFax: out of memory (1)"); if (ctrbtab != NULL) { if (cblktab != NULL) memFree (cblktab); memFree (ctrbtab); } return (1); } cblktax = cblktab - baseval; /* Set based accesses */ bloktax = bloktab - baseval; ctrbtax = ctrbtab - baseval; memset (ctrbtab, ~0, ordeptr->cblknbr * sizeof (INT)); /* Initialize column block contributions link array */ } bloknum = baseval; for (cblknum = baseval; cblknum < baseval + ordeptr->cblknbr; cblknum ++) { /* For all column blocks */ INT colnum; /* Number of current column [based] */ INT colmax; /* Maximum column index for current column block */ { /* Compute offsets and check for array size */ INT degrsum; INT hashsiz; INT hashmax; INT ctrbtmp; INT sortoft; /* Offset of sort array */ INT tlokoft; /* Offset of temporary block array */ INT tlndoft; /* Offset of end of temporary block array */ INT tlokmax; colnum = rangtax[cblknum]; colmax = rangtax[cblknum + 1]; /* Get maximum column value */ cblktax[cblknum].fcolnum = colnum; /* Set column block data */ cblktax[cblknum].lcolnum = colmax - 1; cblktax[cblknum].bloknum = bloknum; degrsum = 0; for ( ; colnum < colmax; colnum ++) /* For all columns */ degrsum += SYMBOL_FAX_VERTEX_DEGREE (ngbdptr, peritax[colnum]); /* Add column degrees */ for (hashmax = 256; hashmax < degrsum; hashmax *= 2) ; /* Get upper bound on hash table size */ hashsiz = hashmax << 2; /* Fill hash table at 1/4 of capacity */ hashmsk = hashsiz - 1; for (ctrbsum = 0, ctrbtmp = ctrbtax[cblknum]; /* Follow chain of contributing column blocks */ ctrbtmp != ~0; ctrbtmp = ctrbtax[ctrbtmp]) ctrbsum += cblktax[ctrbtmp + 1].bloknum - cblktax[ctrbtmp].bloknum - 2; /* Sum contributing column blocks */ tlokmax = degrsum + ctrbsum; sortoft = tlokmax * sizeof (SymbolBlok); if ((hashsiz * sizeof (INT)) > sortoft) /* Compute offset of sort area */ sortoft = (hashsiz * sizeof (INT)); tlokoft = sortoft + degrsum * sizeof (INT); /* Compute offset of temporary block area */ tlndoft = tlokoft + tlokmax * sizeof (SymbolFaxTlok); /* Compute end of area */ if (((byte *) (bloktax + bloknum) + tlndoft) > /* If not enough room */ ((byte *) (bloktax + blokmax))) { SymbolBlok * bloktmp; /* Temporary pointer for array resizing */ do blokmax = blokmax + (blokmax >> 2) + 4; /* Increase block array size by 25% as long as it does not fit */ while (((byte *) (bloktax + bloknum) + tlndoft) > ((byte *) (bloktax + blokmax))); if ((bloktmp = (SymbolBlok *) memRealloc (bloktax + baseval, (blokmax * sizeof (SymbolBlok)))) == NULL) { errorPrint ("symbolFax: out of memory (2)"); memFree (bloktax + baseval); memFree (cblktax + baseval); memFree (ctrbtax + baseval); return (1); } bloktax = bloktmp - baseval; } hashtab = (INT *) (bloktax + bloknum); sorttab = (INT *) ((byte *) hashtab + sortoft); tloktab = (SymbolFaxTlok *) ((byte *) hashtab + tlokoft); memset (hashtab, ~0, hashsiz * sizeof (INT)); /* Initialize hash table */ } sortnbr = 0; /* No vertices yet */ for (colnum = rangtax[cblknum]; colnum < colmax; colnum ++) { /* For all columns */ INT hashnum; vertnum = peritax[colnum]; /* Get associated vertex */ SYMBOL_FAX_ITERATOR (ngbdptr, vertnum, vertend) /* For all adjacent edges */ colend = permtax[vertend]; /* Get end column number */ if (colend < colmax) /* If end vertex number in left columns */ continue; /* Skip to next neighbor */ for (hashnum = (colend * SYMBOL_FAX_HASHPRIME) & hashmsk; ; /* Search end column in hash table */ hashnum = (hashnum + 1) & hashmsk) { INT * hashptr; hashptr = hashtab + hashnum; /* Point to hash slot */ if (*hashptr == colend) /* If end column in hash table */ break; /* Skip to next end column */ if (*hashptr == ~0) { /* If slot is empty */ *hashptr = colend; /* Set column in hash table */ sorttab[sortnbr ++] = colend; /* Add end column to sort array */ break; } } } /* End of loop on neighbors */ } /* End of loop on columns */ intSort1asc1 (sorttab, sortnbr); /* Sort neighbor array */ cblkctr = cblknum; if (ctrbtax[cblknum] == ~0) { /* If column is not to be updated */ INT sortnum; bloktax[bloknum].frownum = cblktax[cblknum].fcolnum; /* Build diagonal block */ bloktax[bloknum].lrownum = cblktax[cblknum].lcolnum; bloktax[bloknum].cblknum = cblknum; bloktax[bloknum].levfval = 0; bloknum ++; for (sortnum = 0; sortnum < sortnbr; ) { /* For all entries in sorted array */ INT colend; /* Column number of current entry */ colend = sorttab[sortnum]; if (colend >= rangtax[cblkctr + 1]) { /* If column block number to be found */ INT cblktmm; /* Median value */ INT cblktmx; /* Maximum value */ for (cblkctr ++, /* Find new column block by dichotomy */ cblktmx = ordeptr->cblknbr + baseval; cblktmx - cblkctr > 1; ) { cblktmm = (cblktmx + cblkctr) >> 1; if (rangtax[cblktmm] <= colend) cblkctr = cblktmm; else cblktmx = cblktmm; } } bloktax[bloknum].frownum = colend; /* Set beginning of new block */ while ((++ sortnum < sortnbr) && /* Scan extent of block */ (sorttab[sortnum] - 1 == sorttab[sortnum - 1]) && (sorttab[sortnum] < rangtax[cblkctr + 1])) ; bloktax[bloknum].lrownum = sorttab[sortnum - 1]; /* Set end of block */ bloktax[bloknum].cblknum = cblkctr; bloktax[bloknum].levfval = 0; bloknum ++; /* One more block */ } } else { /* Column will be updated */ INT sortnum; /* Current index in sort array */ INT tloknum; /* Current index on temporary block */ INT tlokfre; /* Index of first free block */ tloktab->frownum = cblktax[cblknum].fcolnum; /* Build diagonal chained block */ tloktab->lrownum = cblktax[cblknum].lcolnum; tloktab->cblknum = cblknum; tloktab->nextnum = 1; tloknum = 1; for (sortnum = 0; sortnum < sortnbr; ) { /* For all entries in sorted array */ INT colend; /* Column number of current entry */ colend = sorttab[sortnum]; if (colend >= rangtax[cblkctr + 1]) { /* If column block number to be found */ INT cblktmm; /* Median value */ INT cblktmx; /* Maximum value */ for (cblkctr ++, /* Find new column block by dichotomy */ cblktmx = ordeptr->cblknbr + baseval; cblktmx - cblkctr > 1; ) { cblktmm = (cblktmx + cblkctr) >> 1; if (rangtax[cblktmm] <= colend) cblkctr = cblktmm; else cblktmx = cblktmm; } } tloktab[tloknum].frownum = colend; /* Set beginning of new block */ while ((++ sortnum < sortnbr) && /* Scan extent of block */ (sorttab[sortnum] - 1 == sorttab[sortnum - 1]) && (sorttab[sortnum] < rangtax[cblkctr + 1])) ; tloktab[tloknum].lrownum = sorttab[sortnum - 1]; /* Set end of block */ tloktab[tloknum].cblknum = cblkctr; tloktab[tloknum].nextnum = tloknum + 1; /* Chain block */ tloknum = tloknum + 1; } tloktab[tloknum].frownum = /* Build trailing block */ tloktab[tloknum].lrownum = vertnbr + baseval; tloktab[tloknum].cblknum = ordeptr->cblknbr + baseval; tloktab[tloknum].nextnum = 0; /* Set end of chain (never chain to diagonal block) */ tlokfre = ++ tloknum; /* Build free chain for possible contributing blocks */ for ( ; tloknum < tlokfre + ctrbsum; tloknum = tloknum + 1) tloktab[tloknum].nextnum = tloknum + 1; tloktab[tloknum].nextnum = ~0; /* Set end of free chain */ for (cblkctr = ctrbtax[cblknum]; cblkctr != ~0; cblkctr = ctrbtax[cblkctr]) { /* Follow chain */ INT blokctr; /* Current index of contributing column block */ INT tloklst; /* Index of previous temporary block */ tloklst = 0; /* Previous is diagonal block */ tloknum = 0; /* Current is diagonal block */ for (blokctr = cblktax[cblkctr].bloknum + 2; /* For all blocks in contributing column block */ blokctr < cblktax[cblkctr + 1].bloknum; blokctr ++) { while ((tloktab[tloknum].cblknum < bloktax[blokctr].cblknum) || /* Skip unmatched chained blocks */ (tloktab[tloknum].lrownum < bloktax[blokctr].frownum - 1)) { tloklst = tloknum; tloknum = tloktab[tloknum].nextnum; } if ((bloktax[blokctr].cblknum < tloktab[tloknum].cblknum) || /* If contributing block has no mate */ (bloktax[blokctr].lrownum < tloktab[tloknum].frownum - 1)) { INT tloktmp; #ifdef FAX_DEBUG if (tlokfre == ~0) { errorPrint ("symbolFax: internal error (1)"); memFree (bloktax + baseval); memFree (cblktax + baseval); memFree (ctrbtax + baseval); return (1); } #endif /* FAX_DEBUG */ tloktmp = tloktab[tloklst].nextnum = tlokfre; /* Chain new block */ tloktab[tlokfre].frownum = bloktax[blokctr].frownum; /* Copy block data */ tloktab[tlokfre].lrownum = bloktax[blokctr].lrownum; tloktab[tlokfre].cblknum = bloktax[blokctr].cblknum; tlokfre = tloktab[tlokfre].nextnum; tloktab[tloktmp].nextnum = tloknum; /* Complete chainimg */ tloknum = tloktab[tloklst].nextnum; /* Resume from new block */ continue; /* Process next block */ } if ((bloktax[blokctr].lrownum >= tloktab[tloknum].frownum - 1) && /* Update chained block lower bound */ (bloktax[blokctr].frownum < tloktab[tloknum].frownum)) tloktab[tloknum].frownum = bloktax[blokctr].frownum; if ((bloktax[blokctr].frownum <= tloktab[tloknum].lrownum + 1) && /* Update chained block upper bound */ (bloktax[blokctr].lrownum > tloktab[tloknum].lrownum)) { INT tloktmp; tloktab[tloknum].lrownum = bloktax[blokctr].lrownum; for (tloktmp = tloktab[tloknum].nextnum; /* Aggregate following chained blocks */ (tloktab[tloktmp].cblknum == tloktab[tloknum].cblknum) && (tloktab[tloktmp].frownum <= tloktab[tloknum].lrownum + 1); tloktmp = tloktab[tloknum].nextnum) { if (tloktab[tloktmp].lrownum > tloktab[tloknum].lrownum) /* Merge aggregated block */ tloktab[tloknum].lrownum = tloktab[tloktmp].lrownum; tloktab[tloknum].nextnum = tloktab[tloktmp].nextnum; /* Unlink aggregated block */ tloktab[tloktmp].nextnum = tlokfre; tlokfre = tloktmp; } } } } for (tloknum = 0; /* For all chained blocks */ tloktab[tloknum].nextnum != 0; /* Until trailer block is reached */ tloknum = tloktab[tloknum].nextnum, bloknum ++) { /* Copy block data to block array */ bloktax[bloknum].frownum = tloktab[tloknum].frownum; bloktax[bloknum].lrownum = tloktab[tloknum].lrownum; bloktax[bloknum].cblknum = tloktab[tloknum].cblknum; bloktax[bloknum].levfval = 0; } } if ((bloknum - cblktax[cblknum].bloknum) > 2) { /* If more than one extra-diagonal blocks exist */ ctrbtax[cblknum] = ctrbtax[bloktax[cblktax[cblknum].bloknum + 1].cblknum]; /* Link contributing column blocks */ ctrbtax[bloktax[cblktax[cblknum].bloknum + 1].cblknum] = cblknum; } } cblktax[cblknum].fcolnum = /* Set last column block data */ cblktax[cblknum].lcolnum = vertnbr + baseval; cblktax[cblknum].bloknum = bloknum; memFree (ctrbtax + baseval); /* Free contribution link array */ symbptr->baseval = baseval; /* Fill in matrix fields */ symbptr->cblknbr = ordeptr->cblknbr; symbptr->bloknbr = bloknum - baseval; symbptr->cblktab = cblktax + baseval; symbptr->bloktab = memRealloc (bloktax + baseval, (bloknum - baseval) * sizeof (SymbolBlok)); /* Set array to its exact size */ symbptr->nodenbr = vertnbr; #ifdef FAX_DEBUG if (symbolCheck (symbptr) != 0) { errorPrint ("symbolFax: internal error (2)"); symbolExit (symbptr); return (1); } #endif /* FAX_DEBUG */ return (0); } scotch_6.0.9/src/esmumps/graph.h0000644000302600021200000001014413303015264017004 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph.h **/ /** **/ /** AUTHORS : David GOUDIN **/ /** Pascal HENON **/ /** Francois PELLEGRINI **/ /** Pierre RAMET **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the graph structure. **/ /** **/ /** DATES : # Version 0.0 : from : 27 jul 1998 **/ /** to 24 jan 2004 **/ /** # Version 2.0 : from : 28 feb 2004 **/ /** to 23 apr 2004 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define GRAPH_H /* ** The defines. */ #define Graph SCOTCH_Graph #define graphInit SCOTCH_graphInit #define graphExit SCOTCH_graphExit #define graphLoad SCOTCH_graphLoad #define graphSave SCOTCH_graphSave #define graphBase SCOTCH_graphBase #define graphData SCOTCH_graphData #define graphCheck SCOTCH_graphCheck /* ** The function prototypes. */ int graphBuild (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, void * const ngbdptr, INT nghbfrstfunc (void * const, const INT), INT nghbnextfunc (void * const)); int graphBuildGraph (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, INT * restrict verttab, INT * restrict velotab, INT * restrict edgetab); int graphBuildGraph2 (Graph * const grafptr, const INT baseval, const INT vertnbr, const INT edgenbr, INT * restrict verttab, INT * restrict vendtab, INT * restrict velotab, INT * restrict vlbltab, INT * restrict edgetab, INT * restrict edlotab); scotch_6.0.9/src/esmumps/fax.h0000644000302600021200000001477613303015264016500 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : fax.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Jean ROMAN (v0.0) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the data declarations **/ /** for the symbolic factorization routine. **/ /** **/ /** DATES : # Version 0.0 : from : 22 jul 1998 **/ /** to 24 sep 1998 **/ /** # Version 0.1 : from : 04 apr 1999 **/ /** to 01 may 1999 **/ /** # Version 1.0 : from : 01 jun 2002 **/ /** to 25 jun 2002 **/ /** # Version 1.1 : from : 26 jun 2002 **/ /** to 25 sep 2002 **/ /** # Version 1.3 : from : 17 jun 2003 **/ /** to 17 jul 2003 **/ /** # Version 2.0 : from : 21 mar 2003 **/ /** to 29 oct 2003 **/ /** # Version 2.0 : from : 03 mar 2004 **/ /** to 03 mar 2004 **/ /** # Version 3.0 : from : 23 nov 2004 **/ /** to 03 mar 2005 **/ /** # Version 6.0 : from : 22 may 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ #define FAX_H /* ** The function prototypes. */ int symbolCompact (SymbolMatrix * const symbptr); int symbolFax (SymbolMatrix * const symbptr, const INT vertnbr, const INT edgenbr, const INT baseval, void * const ngbdptr, INT ngbfrst (void * const, const INT), INT ngbnext (void * const), INT ngbdegr (void * const, const INT), const Order * const ordeptr); #ifdef GRAPH_H int symbolFaxGraph (SymbolMatrix * const symbptr, const Graph * const grafptr, const Order * const ordeptr); #endif /* GRAPH_H */ int symbolFaxGrid2C (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr); int symbolFaxGrid2D (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr); int symbolFaxGrid2E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr); int symbolFaxGrid3C (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr); int symbolFaxGrid3D (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr); int symbolFaxGrid3E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr); #ifdef MESH_H int symbolFaxMesh (SymbolMatrix * const symbptr, const Mesh * const meshptr, const Order * const ordeptr); #endif /* MESH_H */ int symbolFaxi (SymbolMatrix * const symbptr, const INT vertnbr, const INT edgenbr, const INT baseval, void * const ngbdptr, INT ngbfrst (void * const, const INT), INT ngbnext (void * const), INT ngbdegr (void * const, const INT), const Order * const ordeptr, const INT levfmax); #ifdef GRAPH_H int symbolFaxiGraph (SymbolMatrix * const symbptr, const Graph * const grafptr, const Order * const ordeptr, const INT levfmax); #endif /* GRAPH_H */ int symbolFaxiGrid2D (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr, const INT levfmax); int symbolFaxiGrid2E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT baseval, const Order * const ordeptr, const INT levfmax); int symbolFaxiGrid3D (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr, const INT levfmax); int symbolFaxiGrid3E (SymbolMatrix * const symbptr, const INT xnbr, const INT ynbr, const INT znbr, const INT baseval, const Order * const ordeptr, const INT levfmax); scotch_6.0.9/src/esmumps/dof.c0000644000302600021200000001571713303015264016461 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dof.c **/ /** **/ /** AUTHORS : David GOUDIN **/ /** Pascal HENON **/ /** Francois PELLEGRINI **/ /** Pierre RAMET **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the general purpose **/ /** routines for the DOF structure. **/ /** **/ /** DATES : # Version 0.0 : from : 07 oct 1998 **/ /** to 14 oct 1998 **/ /** # Version 3.0 : from : 28 feb 2004 **/ /** to 03 feb 2006 **/ /** # Version 5.1 : from : 22 jan 2009 **/ /** to 22 jan 2009 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DOF #include "common.h" #ifdef SCOTCH_PTSCOTCH #include "ptscotch.h" #else /* SCOTCH_PTSCOTCH */ #include "scotch.h" #endif /* SCOTCH_PTSCOTCH */ #include "graph.h" #include "dof.h" /******************************/ /* */ /* The DOF handling routines. */ /* */ /******************************/ /*+ This routine initializes *** the given DOF structure. *** It returns: *** - 0 : in all cases. +*/ int dofInit ( Dof * const deofptr) { deofptr->baseval = 0; deofptr->nodenbr = 0; deofptr->noddval = 1; /* Set constant, non zero, number of DOFs */ deofptr->noddtab = NULL; return (0); } /*+ This routine frees the contents *** of the given DOF structure. *** It returns: *** - VOID : in all cases. +*/ void dofExit ( Dof * const deofptr) { if (deofptr->noddtab != NULL) memFree (deofptr->noddtab); #ifdef DOF_DEBUG dofInit (deofptr); #endif /* DOF_DEBUG */ } /*+ This routine sets the number of DOFs *** per node to a constant value. *** It returns: *** - VOID : in all cases. +*/ void dofConstant ( Dof * const deofptr, const INT baseval, const INT nodenbr, const INT noddval) { deofptr->baseval = baseval; deofptr->nodenbr = nodenbr; if (deofptr->noddtab != NULL) { /* If DOF array already allocated */ memFree (deofptr->noddtab); /* It is no longer of use */ deofptr->noddtab = NULL; } deofptr->noddval = noddval; } /*+ This routine builds the DOF index *** array from the graph vertex array. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int dofGraph ( Dof * const deofptr, /*+ DOF index array to build [based] +*/ const Graph * const grafptr, /*+ Matrix adjacency structure [based] +*/ const INT deofval, /*+ DOFs per node if no graph vertex load array +*/ const INT * const peritab) /*+ Inverse vertex->node permutation array +*/ { INT baseval; INT vertnbr; INT * velotab; INT edgenbr; SCOTCH_graphData (grafptr, &baseval, &vertnbr, NULL, NULL, &velotab, NULL, &edgenbr, NULL, NULL); deofptr->baseval = baseval; deofptr->nodenbr = vertnbr; if (velotab == NULL) { /* If no vertex weight (i.e. DOF) array */ deofptr->noddtab = NULL; /* No DOF array */ deofptr->noddval = deofval; /* Get node DOF value */ } else { /* Vertex load array present */ #ifdef DOF_CONSTANT deofptr->noddtab = NULL; /* No DOF array */ deofptr->noddval = deofval; #else /* DOF_CONSTANT */ const INT * restrict velotax; /* Based access to grafptr->velotab */ INT nodenum; /* Number of current node */ INT * noddtnd; /* Pointer to end of DOF index array */ INT * noddptr; /* Pointer to current DOF index */ const INT * periptr; deofptr->noddval = 0; /* DOF values are not constant */ if ((deofptr->noddtab = (INT *) memAlloc ((vertnbr + 1) * sizeof (INT))) == NULL) { errorPrint ("dofGraph: out of memory"); return (1); } for (noddptr = deofptr->noddtab, noddtnd = noddptr + vertnbr, periptr = peritab, nodenum = baseval, velotax = velotab - baseval; noddptr < noddtnd; noddptr ++, periptr ++) { *noddptr = nodenum; /* Set index to DOF array */ nodenum += velotax[*periptr]; /* Add number of DOFs for vertex */ } *noddptr = nodenum; /* Set end of DOF array */ #endif /* DOF_CONSTANT */ } return (0); } scotch_6.0.9/src/esmumps/order.c0000644000302600021200000000651313303015264017016 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This module computes orderings. **/ /** **/ /** DATES : # Version 0.0 : from : 20 aug 1998 **/ /** to 24 sep 1998 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ORDER #include "common.h" #include "order.h" /***********************************/ /* */ /* The ordering handling routines. */ /* */ /***********************************/ /* This routine initializes the given ** ordering structure. ** It returns: ** - 0 : in all cases. */ int orderInit ( Order * const ordeptr) { memSet (ordeptr, 0, sizeof (Order)); return (0); } /* This routine frees the contents ** of the given ordering. ** It returns: ** - VOID : in all cases. */ void orderExit ( Order * const ordeptr) { if (ordeptr->rangtab != NULL) memFree (ordeptr->rangtab); if (ordeptr->permtab != NULL) memFree (ordeptr->permtab); if (ordeptr->peritab != NULL) memFree (ordeptr->peritab); #ifdef ORDER_DEBUG memSet (ordeptr, ~0, sizeof (Order)); #endif /* ORDER_DEBUG */ } scotch_6.0.9/src/misc/0000755000302600021200000000000013303015264014774 5ustar pelegrinpelegrinscotch_6.0.9/src/misc/scotch_5.1.12_openmpi.spec0000644000302600021200000001507013303015264021471 0ustar pelegrinpelegrin# RPM spec file for Scotch, tested on RHEL 5 & 6. # Licence: CeCILL-C # Build PT-Scotch stuff with openmpi. Probably there should be an mpich # version too, but we don't use mpich. # The mpiwrappers-openmpi-devel required on RHEL5 is in the EPEL repo. %bcond_with openmpi # fixme: Is there a better way? %define rhel5 %(fgrep -q ' 5.' /etc/redhat-release 2>/dev/null && echo 1) Name: scotch # The original tar file was called 5.1.12b, but unpacks into 5.1.12, so it # was re-named. Version: 5.1.12 Release: 1%{?dist} Summary: programs and libraries for graph, mesh and hypergraph partitioning Group: Applications/Engineering License: CeCILL-C URL: https://gforge.inria.fr/projects/scotch Source0: https://gforge.inria.fr/frs/download.php/28925/scotch_%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc, make, binutils, bison, flex %if %{with openmpi} %if 0%rhel5 BuildRequires: mpiwrappers-openmpi-devel %else BuildRequires: openmpi-devel %endif %endif # Cribbed from the Debian package %description Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. Its purpose is to apply graph theory, with a divide and conquer approach, to scientific computing problems such as graph and mesh partitioning, static mapping, and sparse matrix ordering, in application domains ranging from structural mechanics to operating systems or bio-chemistry. The SCOTCH distribution is a set of programs and libraries which implement the static mapping and sparse matrix reordering algorithms developed within the SCOTCH project. SCOTCH has many interesting features: o Its capabilities can be used through a set of stand-alone programs as well as through the libSCOTCH library, which offers both C and Fortran interfaces. o It provides algorithms to partition graph structures, as well as mesh structures defined as node-element bipartite graphs and which can also represent hypergraphs. o It can map any weighted source graph onto any weighted target graph. The source and target graphs may have any topology, and their vertices and edges may be weighted. Moreover, both source and target graphs may be disconnected. This feature allows for the mapping of programs onto disconnected subparts of a parallel architecture made up of heterogeneous processors and communication links. o It computes amalgamated block orderings of sparse matrices, for efficient solving using BLAS routines. o Its running time is linear in the number of edges of the source graph, and logarithmic in the number of vertices of the target graph for mapping computations. o It can handle indifferently graph and mesh data structures created within C or Fortran programs, with array indices starting from 0 or 1. o It offers extended support for adaptive graphs and meshes through the handling of disjoint edge arrays. o It is dynamically parametrizable thanks to strategy strings that are interpreted at run-time. o It uses system memory efficiently, to process large graphs and meshes without incurring out-of-memory faults; o It can be easily interfaced to other programs. The programs comprising the SCOTCH project have been designed to run in command-line mode without any interactive prompting, so that they can be called easily from other programs by means of system() or popen() calls, or piped together on a single command line. Moreover, vertex labeling capabilities allow for easy renumbering of vertices. o It provides many tools to build, check, and display graphs, meshes and matrix patterns. %package libs Summary: Shared library files for scotch. Group: Applications/Engineering %description libs Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. This package contains its library files. %package devel Summary: Development files for the scotch library. Group: Applications/Engineering Requires: %{name}-libs = %{version}-%{release} %description devel Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. This package contains development files. %if %{with openmpi} %package pt Summary: PT-Scotch (parallel programs). Group: Applications/Engineering %description pt Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. This package contains the MPI-based programs. %package ptlibs Summary: Shared library files for ptscotch. Group: Applications/Engineering %description ptlibs Scotch is a software package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. This package contains the MPI-based libraries. %endif %prep %setup -q -n %{name}_%{version} cat >src/Makefile.inc < - 5.1.12b-1 - Initial packaging scotch_6.0.9/src/misc/pthread.h0000644000302600021200000002621513303015264016602 0ustar pelegrinpelegrin/* * Copyright (c) 2004-2012 Samuel Thibault * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. 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. * * THIS SOFTWARE IS PROVIDED BY Samuel Thibault ``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. */ /* This is a minimal pthread implementation based on windows functions. * It is *not* intended to be complete - just complete enough to get * simple applications running. */ #ifndef _WIN_PTHREAD_PTHREAD_H #define _WIN_PTHREAD_PTHREAD_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include #include #include #ifdef __CYGWIN32__ #include #define unixErrno() cygwin_internal(CW_GET_ERRNO_FROM_WINERROR, (GetLastError()) #else #define unixErrno() win_toErrno(GetLastError()) #endif #define setSystemErrno() errno = unixErrno() #define winPthreadAssertWindows(expr) do { if (!(expr)) { setSystemErrno(); return errno; } } while (0) #define winPthreadAssertPthread(expr) do { int ret = (expr); if (ret) return ret; } while (0) #define winPthreadAssert(expr) do { if (!(expr)) return EIO; } while (0) /*********** * threads * ***********/ typedef DWORD pthread_attr_t; typedef HANDLE pthread_t; static inline pthread_t pthread_self(void) { return GetCurrentThread(); } static inline int pthread_equal(pthread_t t1, pthread_t t2) { return t1 == t2; } static inline int pthread_attr_init (pthread_attr_t *attr) { *attr = 0; return 0; } #define PTHREAD_CREATE_DETACHED 1 static inline int pthread_attr_setdetachstate (pthread_attr_t *attr, int yes) { (void)attr; (void)yes; /* not supported, ignore */ return 0; } static inline int pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize) { (void)attr; (void)stacksize; /* not supported, ignore */ return 0; } static inline int pthread_attr_destroy (pthread_attr_t *attr) { (void)attr; return 0; } /* "real" cleanup handling not yet implemented */ typedef struct { void (*routine) (void *); void *arg; } __pthread_cleanup_handler; void pthread_cleanup_push (void (*routine) (void *), void *arg); #define pthread_cleanup_push(routine, arg) do { \ __pthread_cleanup_handler __cleanup_handler = {routine, arg}; void pthread_cleanup_pop (int execute); #define pthread_cleanup_pop(execute) \ if (execute) __cleanup_handler.routine(__cleanup_handler.arg); \ } while (0); static inline int pthread_create ( pthread_t *thread, const pthread_attr_t *attr, void * (*fun) (void *), void *arg ) { if (attr && *attr) return EINVAL; winPthreadAssertWindows(*thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) fun, arg, 0, NULL)); return 0; } static inline int pthread_setcancelstate (int state, int *oldstate) { (void)state; (void)oldstate; /* not yet implemented :( */ return 0; } static inline int pthread_cancel (pthread_t thread) { /* This is quite harsh :( */ winPthreadAssertWindows(TerminateThread(thread, 0)); return 0; } static inline void pthread_exit (void *res) { ExitThread((DWORD) (DWORD_PTR) res); } static inline int pthread_join (pthread_t thread, void **res) { again: switch (WaitForSingleObject(thread, INFINITE)) { default: case WAIT_FAILED: return unixErrno(); case WAIT_ABANDONED: case WAIT_OBJECT_0: break; case WAIT_TIMEOUT: goto again; } if (res) { DWORD _res; if (GetExitCodeThread(thread, &_res)) *res = (void *)(DWORD_PTR)_res; } return 0; } /*********** * mutexes * ***********/ #define PTHREAD_MUTEX_INITIALIZER NULL typedef HANDLE pthread_mutex_t; #define PTHREAD_MUTEX_RECURSIVE 1 #define PTHREAD_MUTEX_ERRORCHECK 2 typedef int pthread_mutexattr_t; static inline int pthread_mutexattr_init(pthread_mutexattr_t *attr) { *attr = PTHREAD_MUTEX_RECURSIVE; return 0; } static inline int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type) { if (type != PTHREAD_MUTEX_RECURSIVE && type != PTHREAD_MUTEX_ERRORCHECK) return EINVAL; *attr = type; return 0; } static inline int pthread_mutex_init (pthread_mutex_t *mutex, pthread_mutexattr_t *attr) { if (attr && *attr!=PTHREAD_MUTEX_RECURSIVE) return EINVAL; winPthreadAssertWindows(*mutex = CreateMutex(NULL, FALSE, NULL)); return 0; } static inline int pthread_mutex_unlock (pthread_mutex_t *mutex) { winPthreadAssertWindows(ReleaseMutex(*mutex)); return 0; } static inline int pthread_mutex_lock (pthread_mutex_t *mutex); static inline int __pthread_mutex_alloc_concurrently (pthread_mutex_t *mutex) { HANDLE mutex_init_mutex; /* Get access to one global named mutex to serialize mutex initialization */ winPthreadAssertWindows((mutex_init_mutex = CreateMutex(NULL, FALSE, "StarPU mutex init"))); winPthreadAssertPthread(pthread_mutex_lock(&mutex_init_mutex)); /* Now we are the one that can initialize it */ if (!*mutex) winPthreadAssertPthread(pthread_mutex_init(mutex,NULL)); winPthreadAssertPthread(pthread_mutex_unlock(&mutex_init_mutex)); winPthreadAssertWindows(CloseHandle(mutex_init_mutex)); return 0; } static inline int pthread_mutex_lock (pthread_mutex_t *mutex) { if (!*mutex) __pthread_mutex_alloc_concurrently (mutex); again: switch (WaitForSingleObject(*mutex, INFINITE)) { default: case WAIT_FAILED: return unixErrno();; case WAIT_ABANDONED: case WAIT_OBJECT_0: return 0; case WAIT_TIMEOUT: goto again; } } static inline int pthread_mutex_trylock (pthread_mutex_t *mutex) { if (!*mutex) __pthread_mutex_alloc_concurrently (mutex); switch (WaitForSingleObject(*mutex, 0)) { default: case WAIT_FAILED: return unixErrno(); case WAIT_ABANDONED: case WAIT_OBJECT_0: return 0; case WAIT_TIMEOUT: return EBUSY; } } static inline int pthread_mutex_destroy (pthread_mutex_t *mutex) { winPthreadAssertWindows(CloseHandle(*mutex)); *mutex = INVALID_HANDLE_VALUE; return 0; } /******************************************** * rwlock * * VERY LAZY, don't even look at it please! * * Should be fine unoptimized for now. * * TODO: FIXME, using conds for instance? * ********************************************/ #define PTHREAD_RWLOCK_INITIALIZER NULL typedef pthread_mutex_t pthread_rwlock_t; #define pthread_rwlock_init(lock, attr) pthread_mutex_init(lock, NULL) #define pthread_rwlock_wrlock(lock) pthread_mutex_lock(lock) #define pthread_rwlock_rdlock(lock) pthread_mutex_lock(lock) #define pthread_rwlock_unlock(lock) pthread_mutex_unlock(lock) #define pthread_rwlock_destroy(lock) pthread_mutex_destroy(lock) /************** * conditions * **************/ typedef struct { HANDLE sem; volatile unsigned nbwait; } pthread_cond_t; #define PTHREAD_COND_INITIALIZER { NULL, 0} #ifndef _TIMESPEC_DEFINED struct timespec { time_t tv_sec; /* Seconds */ long tv_nsec; /* Nanoseconds */ }; #endif typedef unsigned pthread_condattr_t; static inline int pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr) { if (attr) return EINVAL; winPthreadAssertWindows(cond->sem = CreateSemaphore(NULL, 0, MAXLONG, NULL)); cond->nbwait = 0; return 0; } static inline int pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *time) { if (!cond->sem) winPthreadAssertPthread(pthread_cond_init(cond,NULL)); cond->nbwait++; winPthreadAssertPthread(pthread_mutex_unlock(mutex)); again: switch (WaitForSingleObject(cond->sem, time->tv_sec*1000+time->tv_nsec/1000)) { default: case WAIT_FAILED: { int error = unixErrno(); winPthreadAssertPthread(pthread_mutex_lock(mutex)); return error; } case WAIT_TIMEOUT: goto again; case WAIT_ABANDONED: case WAIT_OBJECT_0: break; } winPthreadAssertPthread(pthread_mutex_lock(mutex)); cond->nbwait--; return 0; } static inline int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) { if (!cond->sem) winPthreadAssertPthread(pthread_cond_init(cond,NULL)); cond->nbwait++; winPthreadAssertPthread(pthread_mutex_unlock(mutex)); again: switch (WaitForSingleObject(cond->sem, INFINITE)) { case WAIT_FAILED: { int error; error = unixErrno(); winPthreadAssertPthread(pthread_mutex_lock(mutex)); return error; } case WAIT_TIMEOUT: goto again; case WAIT_ABANDONED: case WAIT_OBJECT_0: break; } winPthreadAssertPthread(pthread_mutex_lock(mutex)); cond->nbwait--; return 0; } static inline int pthread_cond_signal (pthread_cond_t *cond) { if (!cond->sem) winPthreadAssertPthread(pthread_cond_init(cond,NULL)); if (cond->nbwait) ReleaseSemaphore(cond->sem, 1, NULL); return 0; } static inline int pthread_cond_broadcast (pthread_cond_t *cond) { if (!cond->sem) winPthreadAssertPthread(pthread_cond_init(cond,NULL)); ReleaseSemaphore(cond->sem, cond->nbwait, NULL); return 0; } static inline int pthread_cond_destroy (pthread_cond_t *cond) { if (cond->sem) { winPthreadAssertWindows(CloseHandle(cond->sem)); cond->sem = NULL; } return 0; } /******* * TLS * *******/ typedef DWORD pthread_key_t; #define PTHREAD_ONCE_INIT {PTHREAD_MUTEX_INITIALIZER, 0} typedef struct { pthread_mutex_t mutex; unsigned done; } pthread_once_t; static inline int pthread_once (pthread_once_t *once, void (*oncefun)(void)) { winPthreadAssertPthread(pthread_mutex_lock(&once->mutex)); if (!once->done) { oncefun(); once->done = 1; } winPthreadAssertPthread(pthread_mutex_unlock(&once->mutex)); return 0; } static inline int pthread_key_create (pthread_key_t *key, void (*freefun)(void *)) { (void)freefun; DWORD res; winPthreadAssertWindows((res = TlsAlloc()) != 0xFFFFFFFF); *key = res; return 0; } static inline int pthread_key_delete (pthread_key_t key) { winPthreadAssertWindows(TlsFree(key)); return 0; } static inline void *pthread_getspecific (pthread_key_t key) { return TlsGetValue(key); } static inline int pthread_setspecific (pthread_key_t key, const void *data) { winPthreadAssertWindows(TlsSetValue(key, (LPVOID) data)); return 0; } #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _WIN_PTHREAD_PTHREAD_H */ scotch_6.0.9/src/misc/semaphore.h0000644000302600021200000000511113303015264017126 0ustar pelegrinpelegrin/* * Copyright (c) 2004-2012 Samuel Thibault * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. 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. * * THIS SOFTWARE IS PROVIDED BY Samuel Thibault ``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. */ /* This is a minimal pthread implementation based on windows functions. * It is *not* intended to be complete - just complete enough to get * simple applications running. */ #ifndef _WIN_PTHREAD_SEMAPHORE_H #define _WIN_PTHREAD_SEMAPHORE_H #include "pthread.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /************** * semaphores * **************/ typedef HANDLE sem_t; static inline int sem_init(sem_t *sem, int pshared, unsigned int value) { (void)pshared; winPthreadAssertWindows(*sem = CreateSemaphore(NULL, value, MAXLONG, NULL)); return 0; } static inline int do_sem_wait(sem_t *sem, DWORD timeout) { switch (WaitForSingleObject(*sem, timeout)) { default: case WAIT_FAILED: setSystemErrno(); return -1; case WAIT_TIMEOUT: errno = EAGAIN; return -1; case WAIT_ABANDONED: case WAIT_OBJECT_0: return 0; } } #define sem_wait(sem) do_sem_wait(sem, INFINITE) #define sem_trywait(sem) do_sem_wait(sem, 0) static inline int sem_post(sem_t *sem) { winPthreadAssertWindows(ReleaseSemaphore(*sem, 1, NULL)); return 0; } static inline int sem_destroy(sem_t *sem) { winPthreadAssertWindows(CloseHandle(*sem)); return 0; } #endif /* _WIN_PTHREAD_SEMAPHORE_H */ scotch_6.0.9/src/libscotchmetis/0000755000302600021200000000000013470125017017060 5ustar pelegrinpelegrinscotch_6.0.9/src/libscotchmetis/parmetis_dgraph_order.c0000644000302600021200000002512413470114133023571 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parmetis_dgraph_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the compatibility **/ /** library for the ParMeTiS ordering **/ /** routines. **/ /** **/ /** DATES : # Version 5.0 : from : 17 oct 2007 **/ /** to 07 dec 2007 **/ /** # Version 5.1 : from : 18 mar 2009 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ /************************************/ /* */ /* These routines are the C API for */ /* the ParMeTiS graph ordering */ /* routine. */ /* */ /************************************/ static void _SCOTCH_ParMETIS_V3_NodeNDTree ( SCOTCH_Num * const sizeglbtnd, SCOTCH_Num * const sizeglbtab, SCOTCH_Num * const sepaglbtab, const SCOTCH_Num levlmax, const SCOTCH_Num levlnum, const SCOTCH_Num cblknum, SCOTCH_Num cblkidx) { SCOTCH_Num sizeval; sizeval = sizeglbtab[cblknum]; /* Assume node is terminal or has no nested dissection sons */ if (levlnum < levlmax) { if ((sepaglbtab[3 * cblknum] >= 0) && /* If node has at least two sons, assume is is a nested dissection node */ (sepaglbtab[3 * cblknum + 1] >= 0)) { _SCOTCH_ParMETIS_V3_NodeNDTree (sizeglbtnd, sizeglbtab, sepaglbtab, levlmax, levlnum + 1, sepaglbtab[3 * cblknum], (cblkidx << 1) + 1); _SCOTCH_ParMETIS_V3_NodeNDTree (sizeglbtnd, sizeglbtab, sepaglbtab, levlmax, levlnum + 1, sepaglbtab[3 * cblknum + 1], (cblkidx << 1)); sizeval = (sepaglbtab[3 * cblknum + 2] < 0) ? 0 : sizeglbtab[sepaglbtab[3 * cblknum + 2]]; /* Get size of separator, if any */ } } sizeglbtnd[- cblkidx] = sizeval; /* Set size of current column block */ } /* ** */ int SCOTCH_ParMETIS_V3_NodeND ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const order, SCOTCH_Num * const sizes, /* Of size twice the number of processors ; not used */ MPI_Comm * commptr) { MPI_Comm proccomm; int procglbnbr; int proclocnum; SCOTCH_Num baseval; SCOTCH_Dgraph grafdat; /* Scotch distributed graph object to interface with libScotch */ SCOTCH_Dordering ordedat; /* Scotch distributed ordering object to interface with libScotch */ SCOTCH_Strat stradat; SCOTCH_Num vertlocnbr; SCOTCH_Num edgelocnbr; int o; o = METIS_ERROR; /* Assume something will go wrong */ proccomm = *commptr; if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) return (o); MPI_Comm_size (proccomm, &procglbnbr); MPI_Comm_rank (proccomm, &proclocnum); baseval = *numflag; vertlocnbr = vtxdist[proclocnum + 1] - vtxdist[proclocnum]; edgelocnbr = xadj[vertlocnbr] - baseval; if (sizes != NULL) memSet (sizes, ~0, (2 * procglbnbr - 1) * sizeof (SCOTCH_Num)); /* Array not used if procglbnbr is not a power of 2 or if error */ if (SCOTCH_dgraphBuild (&grafdat, baseval, vertlocnbr, vertlocnbr, xadj, xadj + 1, NULL, NULL, edgelocnbr, edgelocnbr, adjncy, NULL, NULL) == 0) { SCOTCH_stratInit (&stradat); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_dgraphCheck (&grafdat) == 0) /* TRICK: next instruction called only if graph is consistent */ #endif /* SCOTCH_DEBUG_ALL */ { if (SCOTCH_dgraphOrderInit (&grafdat, &ordedat) == 0) { SCOTCH_Num levlmax; SCOTCH_Num bitsnbr; SCOTCH_Num proctmp; SCOTCH_dgraphOrderCompute (&grafdat, &ordedat, &stradat); SCOTCH_dgraphOrderPerm (&grafdat, &ordedat, order); for (levlmax = -1, bitsnbr = 0, proctmp = procglbnbr; /* Count number of bits set to 1 in procglbnbr */ proctmp != 0; levlmax ++, proctmp >>= 1) bitsnbr += proctmp & 1; if (bitsnbr == 1) { SCOTCH_Num cblkglbnbr; if ((cblkglbnbr = SCOTCH_dgraphOrderCblkDist (&grafdat, &ordedat)) >= 0) { SCOTCH_Num * treeglbtab; SCOTCH_Num * sizeglbtab; SCOTCH_Num * sepaglbtab; if (memAllocGroup ((void **) (void *) &treeglbtab, (size_t) (cblkglbnbr * sizeof (SCOTCH_Num)), &sizeglbtab, (size_t) (cblkglbnbr * sizeof (SCOTCH_Num)), &sepaglbtab, (size_t) (cblkglbnbr * sizeof (SCOTCH_Num) * 3), NULL) != NULL) { if (SCOTCH_dgraphOrderTreeDist (&grafdat, &ordedat, treeglbtab, sizeglbtab) == 0) { SCOTCH_Num rootnum; SCOTCH_Num cblknum; memSet (sepaglbtab, ~0, cblkglbnbr * sizeof (SCOTCH_Num) * 3); for (rootnum = -1, cblknum = 0; cblknum < cblkglbnbr; cblknum ++) { SCOTCH_Num fathnum; fathnum = treeglbtab[cblknum] - baseval; /* Use un-based indices */ if (fathnum < 0) { /* If father index indicates root */ if (rootnum != -1) { /* If another root already found */ rootnum = -1; /* Indicate an error */ break; } rootnum = cblknum; /* Record index of root node */ } else { SCOTCH_Num i; for (i = 0; i < 3; i ++) { SCOTCH_Num j; j = 3 * fathnum + i; /* Slot number of prospective son */ if (sepaglbtab[j] < 0) { /* If potentially empty slot found */ if (sepaglbtab[j] == -1) /* If we don't have too many sons */ sepaglbtab[j] = cblknum; /* Add link to son in slot */ break; } } if (i == 3) { /* If no empty slot found */ sepaglbtab[3 * fathnum] = -2; /* Indicate there are too many sons */ break; } } } if ((rootnum >= 0) && (sizes != NULL)) { /* If no error above, go on processing separator tree */ memSet (sizes, 0, (2 * procglbnbr - 1) * sizeof (SCOTCH_Num)); /* Set array of sizes to 0 by default */ _SCOTCH_ParMETIS_V3_NodeNDTree (sizes + (2 * procglbnbr - 1), sizeglbtab, sepaglbtab, levlmax, 0, rootnum, 1); o = METIS_OK; } } memFree (treeglbtab); /* Free group leader */ } } } SCOTCH_dgraphOrderExit (&grafdat, &ordedat); } } SCOTCH_stratExit (&stradat); } SCOTCH_dgraphExit (&grafdat); return (o); } /**********************/ /* */ /* ParMeTiS v3 stubs. */ /* */ /**********************/ #if (SCOTCH_PARMETIS_VERSION == 3) #ifndef SCOTCH_METIS_PREFIX /* With "SCOTCH_" prefix, names already defined */ int METISNAMEU (ParMETIS_V3_NodeND) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const order, SCOTCH_Num * const sizes, /* Of size twice the number of processors; not used */ MPI_Comm * commptr) { return (SCOTCH_ParMETIS_V3_NodeND (vtxdist, xadj, adjncy, numflag, options, order, sizes, commptr)); } #endif /* SCOTCH_METIS_PREFIX */ #endif /* (SCOTCH_PARMETIS_VERSION == 3) */ scotch_6.0.9/src/libscotchmetis/Makefile0000644000302600021200000001107313470114133020517 0ustar pelegrinpelegrin## Copyright 2007-2010,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## bindir = ../../bin includedir = ../../include libdir = ../../lib ## ## General inference rules. ## include ../Makefile.inc %$(OBJ) : %.c $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(includedir) -I../libscotch -c $(<) -o $(@) %$(EXE) : %.c $(CC) $(CFLAGS) -I$(includedir) -I../libscotch $(<) -o $(@) -L$(libdir) $(LDFLAGS) ## ## Project rules. ## .PHONY : ptscotch scotch ptinstall install clean realclean scotch : $(MAKE) \ CC="$(CCS)" \ metis.h \ libscotchmetis$(LIB) ptscotch : $(MAKE) \ CC="$(CCP)" \ CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" \ parmetis.h \ libptscotchparmetis$(LIB) install : scotch -$(CP) metis.h $(includedir) -$(CP) libscotchmetis$(LIB) $(libdir) ptinstall : ptscotch -$(CP) parmetis.h $(includedir) -$(CP) libptscotchparmetis$(LIB) $(libdir) clean : -$(RM) *~ *$(OBJ) lib*$(LIB) metis.h parmetis.h realclean : clean ## ## Todo list. ## metis.h : ../libscotch/dummysizes$(EXE) \ library_metis.h ../libscotch/dummysizes$(EXE) library_metis.h metis.h metis_graph_order$(OBJ) : metis_graph_order.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ metis.h metis_graph_order_f$(OBJ) : metis_graph_order_f.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ metis.h metis_graph_part$(OBJ) : metis_graph_part.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ metis.h metis_graph_part_f$(OBJ) : metis_graph_part_f.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ metis.h parmetis.h : ../libscotch/dummysizes$(EXE) \ library_parmetis.h ../libscotch/dummysizes$(EXE) library_parmetis.h parmetis.h parmetis_dgraph_order$(OBJ) : parmetis_dgraph_order.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ parmetis.h parmetis_dgraph_order_f$(OBJ) : parmetis_dgraph_order_f.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ parmetis.h parmetis_dgraph_part$(OBJ) : parmetis_dgraph_part.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ parmetis.h parmetis_dgraph_part_f$(OBJ) : parmetis_dgraph_part_f.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ parmetis.h libptscotchparmetis$(LIB) : parmetis_dgraph_order$(OBJ) \ parmetis_dgraph_order_f$(OBJ) \ parmetis_dgraph_part$(OBJ) \ parmetis_dgraph_part_f$(OBJ) $(AR) $(ARFLAGS) $(@) $(^) -$(RANLIB) $(@) libscotchmetis$(LIB) : metis_graph_order$(OBJ) \ metis_graph_order_f$(OBJ) \ metis_graph_part$(OBJ) \ metis_graph_part_f$(OBJ) $(AR) $(ARFLAGS) $(@) $(^) -$(RANLIB) $(@) scotch_6.0.9/src/libscotchmetis/parmetis_dgraph_part_f.c0000644000302600021200000002351313470114133023731 0ustar pelegrinpelegrin/* Copyright 2008,2010,2012,2015,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parmetis_dgraph_part_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API of **/ /** the compatibility library for the **/ /** ParMeTiS partitioning routine. **/ /** **/ /** DATES : # Version 5.1 : from : 19 jun 2008 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph ordering */ /* routines. */ /* */ /**************************************/ FORTRAN ( \ SCOTCH_PARMETIS_V3_PARTKWAY, scotch_parmetis_v3_partkway, ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ SCOTCH_Num * const vwgt, \ SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const nparts, \ const float * const tpwgts, \ const float * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ MPI_Comm * const commptr, \ int * const revaptr), \ (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr, revaptr)) { *revaptr = SCOTCH_ParMETIS_V3_PartKway (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr); } /* ** */ FORTRAN ( \ SCOTCH_PARMETIS_V3_PARTGEOMKWAY, scotch_parmetis_v3_partgeomkway, ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ SCOTCH_Num * const vwgt, \ SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const ndims, \ const float * const xyz, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const nparts, \ const float * const tpwgts, \ const float * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ MPI_Comm * const commptr, \ int * const revaptr), \ (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ndims, xyz, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr, revaptr)) { *revaptr = SCOTCH_ParMETIS_V3_PartGeomKway (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ndims, xyz, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_PARMETIS_VERSION == 3) #ifndef SCOTCH_METIS_PREFIX /* With "SCOTCH_" prefix, names already defined */ FORTRAN ( \ METISNAMEU (PARMETIS_V3_PARTKWAY), METISNAMEL (parmetis_v3_partkway), ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ SCOTCH_Num * const vwgt, \ SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const nparts, \ const float * const tpwgts, \ const float * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ MPI_Comm * const commptr), \ (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)) { METISNAMEU (ParMETIS_V3_PartKway) (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr); } /* ** */ FORTRAN ( \ METISNAMEU (PARMETIS_V3_PARTGEOMKWAY), METISNAMEL (parmetis_v3_partgeomkway), ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ SCOTCH_Num * const vwgt, \ SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const ndims, \ const float * const xyz, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const nparts, \ const float * const tpwgts, \ const float * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ MPI_Comm * const commptr), \ (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ndims, xyz, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)) { METISNAMEU (ParMETIS_V3_PartGeomKway) (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ndims, xyz, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr); } #endif /* SCOTCH_METIS_PREFIX */ #endif /* (SCOTCH_PARMETIS_VERSION == 3) */ scotch_6.0.9/src/libscotchmetis/metis_graph_order.c0000644000302600021200000002014313470114345022723 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : metis_graph_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Amaury JACQUES (v6.0) **/ /** **/ /** FUNCTION : This module is the compatibility **/ /** library for the MeTiS ordering **/ /** routines. **/ /** **/ /** DATES : # Version 5.0 : from : 08 sep 2006 **/ /** to 07 jun 2007 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ /************************************/ /* */ /* These routines are the C API for */ /* MeTiS graph ordering routines. */ /* */ /************************************/ static int _SCOTCH_METIS_Node ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { SCOTCH_Graph grafdat; /* Scotch graph object to interface with libScotch */ SCOTCH_Ordering ordedat; /* Scotch ordering object to interface with libScotch */ SCOTCH_Strat stradat; int o; o = METIS_ERROR; /* Assume an error */ SCOTCH_graphInit (&grafdat); if (SCOTCH_graphBuild (&grafdat, *numflag, *n, xadj, xadj + 1, vwgt, NULL, xadj[*n] - *numflag, adjncy, NULL) == 0) { SCOTCH_stratInit (&stradat); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_graphCheck (&grafdat) == 0) /* TRICK: next instruction called only if graph is consistent */ #endif /* SCOTCH_DEBUG_ALL */ { if (SCOTCH_graphOrderInit (&grafdat, &ordedat, iperm, perm, /* MeTiS and Scotch have opposite definitions for (inverse) permutations */ NULL, NULL, NULL) == 0) { if (SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat) == 0) o = METIS_OK; SCOTCH_graphOrderExit (&grafdat, &ordedat); } } SCOTCH_stratExit (&stradat); } SCOTCH_graphExit (&grafdat); return (o); } /* ** */ int SCOTCH_METIS_V3_EdgeND ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (_SCOTCH_METIS_Node (n, xadj, adjncy, NULL, numflag, options, perm, iperm)); } /* ** */ int SCOTCH_METIS_V3_NodeND ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (_SCOTCH_METIS_Node (n, xadj, adjncy, NULL, numflag, options, perm, iperm)); } /* ** */ int SCOTCH_METIS_V3_NodeWND ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (_SCOTCH_METIS_Node (n, xadj, adjncy, vwgt, numflag, options, perm, iperm)); } /* ** */ int SCOTCH_METIS_V5_NodeND ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { const SCOTCH_Num numflag = 0; return (_SCOTCH_METIS_Node (nvtxs, xadj, adjncy, vwgt, &numflag, options, perm, iperm)); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 3) int METISNAMEU (METIS_EdgeND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (SCOTCH_METIS_V3_EdgeND (n, xadj, adjncy, numflag, options, perm, iperm)); } /* ** */ int METISNAMEU (METIS_NodeND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (SCOTCH_METIS_V3_NodeND (n, xadj, adjncy, numflag, options, perm, iperm)); } /* ** */ int METISNAMEU (METIS_NodeWND) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const numflag, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (SCOTCH_METIS_V3_NodeWND (n, xadj, adjncy, vwgt, numflag, options, perm, iperm)); } #endif /* (SCOTCH_METIS_VERSION == 3) */ /*******************/ /* */ /* MeTiS v5 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 5) int METISNAMEU (METIS_NodeND) ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const options, SCOTCH_Num * const perm, SCOTCH_Num * const iperm) { return (SCOTCH_METIS_V5_NodeND (nvtxs, xadj, adjncy, vwgt, options, perm, iperm)); } #endif /* (SCOTCH_METIS_VERSION == 5) */ scotch_6.0.9/src/libscotchmetis/parmetis_dgraph_order_f.c0000644000302600021200000001230213470114133024070 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2015,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parmetis_dgraph_order_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API of **/ /** the compatibility library for the **/ /** ParMeTiS ordering routine. **/ /** **/ /** DATES : # Version 5.0 : from : 17 oct 2007 **/ /** to 17 oct 2007 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph ordering */ /* routines. */ /* */ /**************************************/ FORTRAN ( \ SCOTCH_PARMETIS_V3_NODEND, scotch_parmetis_v3_nodend, ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const order, \ SCOTCH_Num * const sizes, \ MPI_Comm * const commptr, \ int * const revaptr), \ (vtxdist, xadj, adjncy, numflag, options, order, sizes, commptr, revaptr)) { *revaptr = SCOTCH_ParMETIS_V3_NodeND (vtxdist, xadj, adjncy, numflag, options, order, sizes, commptr); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_PARMETIS_VERSION == 3) #ifndef SCOTCH_METIS_PREFIX /* With "SCOTCH_" prefix, names already defined */ FORTRAN ( \ METISNAMEU (PARMETIS_V3_NODEND), METISNAMEL (parmetis_v3_nodend), ( \ const SCOTCH_Num * const vtxdist, \ SCOTCH_Num * const xadj, \ SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const order, \ SCOTCH_Num * const sizes, \ MPI_Comm * const commptr), \ (vtxdist, xadj, adjncy, numflag, options, order, sizes, commptr)) { METISNAMEU (ParMETIS_V3_NodeND) (vtxdist, xadj, adjncy, numflag, options, order, sizes, commptr); } #endif /* SCOTCH_METIS_PREFIX */ #endif /* (SCOTCH_PARMETIS_VERSION == 3) */ scotch_6.0.9/src/libscotchmetis/metis_graph_part_f.c0000644000302600021200000004016613470114261023067 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2015,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : metis_graph_part_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Amaury JACQUES **/ /** **/ /** FUNCTION : This file contains the Fortran API of **/ /** the compatibility library for the **/ /** MeTiS partitioning routines. **/ /** **/ /** DATES : # Version 5.0 : from : 10 sep 2006 **/ /** to 07 jun 2007 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph ordering routines. */ /* */ /**************************************/ FORTRAN ( \ SCOTCH_METIS_V3_PARTGRAPHKWAY, scotch_metis_v3_partgraphkway, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ int * const revaptr), \ (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part, revaptr)) { *revaptr = SCOTCH_METIS_V3_PartGraphKway (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V3_PARTGRAPHRECURSIVE, scotch_metis_v3_partgraphrecursive, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part, \ int * const revaptr), \ (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part, revaptr)) { *revaptr = SCOTCH_METIS_V3_PartGraphRecursive (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V3_PARTGRAPHVKWAY, scotch_metis_v3_partgraphvkway, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const volume, \ SCOTCH_Num * const part, \ int * const revaptr), \ (n, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part, revaptr)) { *revaptr = SCOTCH_METIS_V3_PartGraphVKway (n, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V5_PARTGRAPHKWAY, scotch_metis_v5_partgraphkway, ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const tpwgts, \ const double * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const objval, \ SCOTCH_Num * const part, \ int * const revaptr), \ (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part, revaptr)) { *revaptr = SCOTCH_METIS_V5_PartGraphKway (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V5_PARTGRAPHRECURSIVE, scotch_metis_v5_partgraphrecursive, ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const tpwgts, \ const double * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const objval, \ SCOTCH_Num * const part, \ int * const revaptr), \ (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part, revaptr)) { *revaptr = SCOTCH_METIS_V5_PartGraphRecursive (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 3) FORTRAN ( \ METISNAMEU (METIS_PARTGRAPHKWAY), METISNAMEL (metis_partgraphkway), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part), \ (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part)) { METISNAMEU (METIS_PartGraphKway) (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } /* ** */ FORTRAN ( \ METISNAMEU (METIS_PARTGRAPHRECURSIVE), METISNAMEL (metis_partgraphrecursive), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const edgecut, \ SCOTCH_Num * const part), \ (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part)) { METISNAMEU (METIS_PartGraphRecursive) (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part); } /* ** */ FORTRAN ( \ METISNAMEU (METIS_PARTGRAPHVKWAY), METISNAMEL (metis_partgraphvkway), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const wgtflag, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const volume, \ SCOTCH_Num * const part), \ (n, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part)) { METISNAMEU (METIS_PartGraphVKway) (n, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part); } #endif /* (SCOTCH_METIS_VERSION == 3) */ /*******************/ /* */ /* MeTiS v5 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 5) FORTRAN ( \ METISNAMEU (METIS_PARTGRAPHKWAY), METISNAMEL (metis_partgraphkway), ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const tpwgts, \ const double * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const objval, \ SCOTCH_Num * const part), \ (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part)) { METISNAMEU (METIS_PartGraphKway) (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part); } /* ** */ FORTRAN ( \ METISNAMEU (METIS_PARTGRAPHRECURSIVE), METISNAMEL (metis_partgraphrecursive), ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const ncon, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const vsize, \ const SCOTCH_Num * const adjwgt, \ const SCOTCH_Num * const nparts, \ const SCOTCH_Num * const tpwgts, \ const double * const ubvec, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const objval, \ SCOTCH_Num * const part), \ (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part)) { METISNAMEU (METIS_PartGraphRecursive) (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part); } #endif /* (SCOTCH_METIS_VERSION == 5) */ scotch_6.0.9/src/libscotchmetis/metis_graph_part.c0000644000302600021200000004753513531055030022565 0ustar pelegrinpelegrin/* Copyright 2007-2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : metis_graph_part.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Amaury JACQUES (v6.0) **/ /** **/ /** FUNCTION : This module is the compatibility **/ /** library for the MeTiS partitioning **/ /** routines. **/ /** **/ /** DATES : # Version 5.0 : from : 08 sep 2006 **/ /** to 07 jun 2007 **/ /** # Version 5.1 : from : 06 jun 2009 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 23 dec 2011 **/ /** to 19 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ /************************************/ /* */ /* These routines are the C API for */ /* MeTiS graph ordering routines. */ /* */ /************************************/ /* This routine is the interface between MeTiS ** and Scotch. It computes the partition of a ** weighted or unweighted graph. ** It returns: ** - 0 : if the partition could be computed. ** - !0 : on error. */ static int _SCOTCH_METIS_PartGraph2 ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, SCOTCH_Num * const part, SCOTCH_Num flagval, const double * const kbalval) { SCOTCH_Graph grafdat; /* Scotch graph object to interface with libScotch */ SCOTCH_Strat stradat; SCOTCH_Num baseval; SCOTCH_Num vertnbr; int o; SCOTCH_graphInit (&grafdat); baseval = *numflag; vertnbr = *n; o = 1; /* Assume something will go wrong */ if (SCOTCH_graphBuild (&grafdat, baseval, vertnbr, xadj, xadj + 1, vwgt, NULL, xadj[vertnbr] - baseval, adjncy, adjwgt) == 0) { SCOTCH_stratInit (&stradat); SCOTCH_stratGraphMapBuild (&stradat, flagval, *nparts, *kbalval); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_graphCheck (&grafdat) == 0) /* TRICK: next instruction called only if graph is consistent */ #endif /* SCOTCH_DEBUG_ALL */ { if (tpwgts == NULL) o = SCOTCH_graphPart (&grafdat, *nparts, &stradat, part); else { SCOTCH_Arch archdat; if (SCOTCH_archInit (&archdat) == 0) { if (SCOTCH_archCmpltw (&archdat, *nparts, tpwgts) == 0) o = SCOTCH_graphMap(&grafdat, &archdat, &stradat, part); SCOTCH_archExit(&archdat); } } } SCOTCH_stratExit (&stradat); } SCOTCH_graphExit (&grafdat); if (o != 0) return (1); if (baseval != 0) { /* MeTiS part array is based, Scotch is not */ SCOTCH_Num vertnum; for (vertnum = 0; vertnum < vertnbr; vertnum ++) part[vertnum] += baseval; } return (0); } /* ** */ static int _SCOTCH_METIS_PartGraph ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const SCOTCH_Num * const options, SCOTCH_Num * const edgecut, SCOTCH_Num * const part, SCOTCH_Num flagval, const double * const kbalval) { const SCOTCH_Num * restrict parttax; const SCOTCH_Num * restrict verttax; const SCOTCH_Num * restrict edgetax; SCOTCH_Num vertnnd; SCOTCH_Num vertnum; SCOTCH_Num edgenum; SCOTCH_Num commcut; if (_SCOTCH_METIS_PartGraph2 (n, xadj, adjncy, vwgt, adjwgt, numflag, nparts, tpwgts, part, flagval, kbalval) != 0) { *edgecut = -1; /* Indicate error */ return (METIS_ERROR); } parttax = part - *numflag; verttax = xadj - *numflag; edgetax = adjncy - *numflag; edgenum = *numflag; vertnum = *numflag; vertnnd = *n + vertnum; commcut = 0; if (adjwgt == NULL) { /* If graph does not have edge weights */ for ( ; vertnum < vertnnd; vertnum ++) { SCOTCH_Num edgennd; SCOTCH_Num partval; partval = parttax[vertnum]; for (edgennd = verttax[vertnum + 1]; edgenum < edgennd; edgenum ++) { if (parttax[edgetax[edgenum]] != partval) commcut ++; } } } else { /* Graph has edge weights */ const SCOTCH_Num * restrict edlotax; edlotax = adjwgt - *numflag; for ( ; vertnum < vertnnd; vertnum ++) { SCOTCH_Num edgennd; SCOTCH_Num partval; partval = parttax[vertnum]; for (edgennd = verttax[vertnum + 1]; edgenum < edgennd; edgenum ++) { SCOTCH_Num vertend; vertend = edgetax[edgenum]; if (parttax[vertend] != partval) commcut += edlotax[edgenum]; } } } *edgecut = commcut / 2; return (METIS_OK); } /* Scotch does not directly consider communication volume. ** Instead, vertex communication loads are added to the edge ** loads so as to emulate this behavior: heavily weighted ** edges, connected to heavily communicating vertices, will ** be less likely to be cut. */ static int _SCOTCH_METIS_PartGraph_Volume ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const SCOTCH_Num * const options, SCOTCH_Num * const volume, SCOTCH_Num * const part, SCOTCH_Num flagval, const double * const kbalval) { SCOTCH_Num baseval; SCOTCH_Num vsizval; /* Communication volume of current vertex */ SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num edgenum; const SCOTCH_Num * restrict edgetax; const SCOTCH_Num * restrict parttax; SCOTCH_Num * restrict nghbtax; SCOTCH_Num commvol; baseval = *numflag; vertnbr = *n; edgetax = adjncy - baseval; if (vsize == NULL) { /* If no communication load data provided */ if (_SCOTCH_METIS_PartGraph2 (n, xadj, adjncy, vwgt, NULL, numflag, nparts, tpwgts, part, flagval, kbalval) != 0) return (METIS_ERROR); } else { /* Will have to turn communication volumes into edge loads */ const SCOTCH_Num * restrict vsiztax; SCOTCH_Num edgenbr; SCOTCH_Num * restrict edlotax; int o; edgenbr = xadj[vertnbr] - baseval; if ((edlotax = memAlloc (edgenbr * sizeof (SCOTCH_Num))) == NULL) return (METIS_ERROR); edlotax -= baseval; /* Base access to edlotax */ vsiztax = vsize - baseval; for (vertnum = 0, edgenum = baseval; /* Un-based scan of vertex array xadj */ vertnum < vertnbr; vertnum ++) { SCOTCH_Num vsizval; /* Communication size of current vertex */ SCOTCH_Num edgennd; vsizval = vsize[vertnum]; for (edgennd = xadj[vertnum + 1]; edgenum < edgennd; edgenum ++) { /* Based traversal of edge array adjncy */ SCOTCH_Num vertend; /* Based end vertex number */ vertend = edgetax[edgenum]; edlotax[edgenum] = vsizval + vsiztax[vertend]; } } o = _SCOTCH_METIS_PartGraph2 (n, xadj, adjncy, vwgt, edlotax + baseval, numflag, nparts, tpwgts, part, flagval, kbalval); memFree (edlotax + baseval); if (o != 0) return (METIS_ERROR); } if ((nghbtax = memAlloc (*nparts * sizeof (SCOTCH_Num))) == NULL) /* Part array is un-based at allocation */ return (METIS_ERROR_MEMORY); memSet (nghbtax, ~0, *nparts * sizeof (SCOTCH_Num)); nghbtax -= baseval; /* Base part array since parts are based in MeTiS */ parttax = part - baseval; vsizval = 1; /* Assume no vertex communication sizes */ for (vertnum = 0, edgenum = baseval, commvol = 0; /* Un-based scan of vertex array xadj */ vertnum < vertnbr; vertnum ++) { SCOTCH_Num partval; SCOTCH_Num edgennd; partval = part[vertnum]; nghbtax[partval] = vertnum; /* Do not count local neighbors in communication volume */ if (vsize != NULL) vsizval = vsize[vertnum]; for (edgennd = xadj[vertnum + 1]; edgenum < edgennd; edgenum ++) { /* Based traversal of edge array adjncy */ SCOTCH_Num vertend; /* Based end vertex number */ SCOTCH_Num partend; vertend = edgetax[edgenum]; partend = parttax[vertend]; if (nghbtax[partend] != vertnum) { /* If first neighbor in this part */ nghbtax[partend] = vertnum; /* Set part as accounted for */ commvol += vsizval; } } } *volume = commvol; memFree (nghbtax + baseval); /* Free un-based array */ return (METIS_OK); } /* ** */ int SCOTCH_METIS_V3_PartGraphKway ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { const SCOTCH_Num * vwgt2; const SCOTCH_Num * adjwgt2; double kbalval; kbalval = 0.01; vwgt2 = ((wgtflag == NULL) || ((*wgtflag & 2) != 0)) ? vwgt : NULL; adjwgt2 = ((wgtflag == NULL) || ((*wgtflag & 1) != 0)) ? adjwgt : NULL; return (_SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt2, adjwgt2, numflag, nparts, NULL, options, edgecut, part, SCOTCH_STRATDEFAULT, &kbalval)); } /* ** */ int SCOTCH_METIS_V3_PartGraphRecursive ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { const SCOTCH_Num * vwgt2; const SCOTCH_Num * adjwgt2; double kbalval; kbalval = 0.01; vwgt2 = ((wgtflag == NULL) || ((*wgtflag & 2) != 0)) ? vwgt : NULL; adjwgt2 = ((wgtflag == NULL) || ((*wgtflag & 1) != 0)) ? adjwgt : NULL; return (_SCOTCH_METIS_PartGraph (n, xadj, adjncy, vwgt2, adjwgt2, numflag, nparts, NULL, options, edgecut, part, SCOTCH_STRATRECURSIVE, &kbalval)); } /* ** */ int SCOTCH_METIS_V3_PartGraphVKway ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const volume, SCOTCH_Num * const part) { const SCOTCH_Num * vwgt2; const SCOTCH_Num * vsize2; double kbalval; kbalval = 0.01; vsize2 = ((wgtflag == NULL) || ((*wgtflag & 1) != 0)) ? vsize : NULL; vwgt2 = ((wgtflag == NULL) || ((*wgtflag & 2) != 0)) ? vwgt : NULL; return (_SCOTCH_METIS_PartGraph_Volume (n, xadj, adjncy, vwgt2, vsize2, numflag, nparts, NULL, options, volume, part, SCOTCH_STRATDEFAULT, &kbalval)); } /* ** */ int SCOTCH_METIS_V5_PartGraphKway ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const ncon, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const double * const ubvec, const SCOTCH_Num * const options, SCOTCH_Num * const objval, SCOTCH_Num * const part) { const SCOTCH_Num numflag = 0; return ((vsize == NULL) ? _SCOTCH_METIS_PartGraph (nvtxs, xadj, adjncy, vwgt, adjwgt, &numflag, nparts, tpwgts, options, objval, part, SCOTCH_STRATDEFAULT, ubvec) : _SCOTCH_METIS_PartGraph_Volume (nvtxs, xadj, adjncy, vwgt, vsize, &numflag, nparts, tpwgts, options, objval, part, SCOTCH_STRATDEFAULT, ubvec)); } /* ** */ int SCOTCH_METIS_V5_PartGraphRecursive ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const ncon, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const double * const ubvec, const SCOTCH_Num * const options, SCOTCH_Num * const objval, SCOTCH_Num * const part) { const SCOTCH_Num numflag = 0; return ((vsize == NULL) ? _SCOTCH_METIS_PartGraph (nvtxs, xadj, adjncy, vwgt, adjwgt, &numflag, nparts, tpwgts, options, objval, part, SCOTCH_STRATRECURSIVE, ubvec) : _SCOTCH_METIS_PartGraph_Volume (nvtxs, xadj, adjncy, vwgt, vsize, &numflag, nparts, tpwgts, options, objval, part, SCOTCH_STRATRECURSIVE, ubvec)); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 3) int METISNAMEU (METIS_PartGraphKway) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { return (SCOTCH_METIS_V3_PartGraphKway (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part)); } /* ** */ int METISNAMEU (METIS_PartGraphRecursive) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const edgecut, SCOTCH_Num * const part) { return (SCOTCH_METIS_V3_PartGraphRecursive (n, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, nparts, options, edgecut, part)); } /* ** */ int METISNAMEU (METIS_PartGraphVKway) ( const SCOTCH_Num * const n, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const nparts, const SCOTCH_Num * const options, SCOTCH_Num * const volume, SCOTCH_Num * const part) { return (SCOTCH_METIS_V3_PartGraphVKway (n, xadj, adjncy, vwgt, vsize, wgtflag, numflag, nparts, options, volume, part)); } #endif /* (SCOTCH_METIS_VERSION == 3) */ /*******************/ /* */ /* MeTiS v5 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 5) int METISNAMEU (METIS_PartGraphKway) ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const ncon, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const double * const ubvec, const SCOTCH_Num * const options, SCOTCH_Num * const objval, SCOTCH_Num * const part) { return (SCOTCH_METIS_V5_PartGraphKway (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part)); } /* ** */ int METISNAMEU (METIS_PartGraphRecursive) ( const SCOTCH_Num * const nvtxs, const SCOTCH_Num * const ncon, const SCOTCH_Num * const xadj, const SCOTCH_Num * const adjncy, const SCOTCH_Num * const vwgt, const SCOTCH_Num * const vsize, const SCOTCH_Num * const adjwgt, const SCOTCH_Num * const nparts, const SCOTCH_Num * const tpwgts, const double * const ubvec, const SCOTCH_Num * const options, SCOTCH_Num * const objval, SCOTCH_Num * const part) { return (SCOTCH_METIS_V5_PartGraphRecursive (nvtxs, ncon, xadj, adjncy, vwgt, vsize, adjwgt, nparts, tpwgts, ubvec, options, objval, part)); } #endif /* (SCOTCH_METIS_VERSION == 5) */ scotch_6.0.9/src/libscotchmetis/parmetis_dgraph_part.c0000644000302600021200000002351213470114133023423 0ustar pelegrinpelegrin/* Copyright 2008-2010,2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parmetis_dgraph_part.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the compatibility **/ /** library for the ParMeTiS ordering **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 19 jun 2008 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" #include "parmetis.h" /* Our "parmetis.h" file */ /************************************/ /* */ /* These routines are the C API for */ /* the ParMeTiS graph ordering */ /* routine. */ /* */ /************************************/ int SCOTCH_ParMETIS_V3_PartKway ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, SCOTCH_Num * const vwgt, SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const ncon, /* Not used */ const SCOTCH_Num * const nparts, const float * const tpwgts, const float * const ubvec, /* Not used */ const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const edgecut, SCOTCH_Num * const part, MPI_Comm * commptr) { MPI_Comm proccomm; int procglbnbr; int proclocnum; SCOTCH_Num baseval; SCOTCH_Arch archdat; SCOTCH_Dgraph grafdat; /* Scotch distributed graph object to interface with libScotch */ SCOTCH_Dmapping mappdat; /* Scotch distributed mapping object to interface with libScotch */ SCOTCH_Strat stradat; SCOTCH_Num vertlocnbr; SCOTCH_Num * veloloctab; SCOTCH_Num edgelocnbr; SCOTCH_Num * edloloctab; SCOTCH_Num * velotab; double * vwgttab; SCOTCH_Num i; if ((vwgttab = malloc (*nparts * sizeof (double))) == NULL) return (METIS_ERROR_MEMORY); if ((velotab = malloc (*nparts * sizeof (SCOTCH_Num))) == NULL) { free (vwgttab); return (METIS_ERROR_MEMORY); } for (i = 0; i < *nparts; i ++) vwgttab[i] = (double) tpwgts[i] * (double) (*nparts); for (i = 0; i < *nparts; i ++) { double deltval; deltval = fabs (vwgttab[i] - floor (vwgttab[i] + 0.5)); if (deltval > 0.01) { SCOTCH_Num j; deltval = 1.0 / deltval; for (j = 0; j < *nparts; j ++) vwgttab[j] *= deltval; } } for (i = 0; i < *nparts; i ++) velotab[i] = (SCOTCH_Num) (vwgttab[i] + 0.5); proccomm = *commptr; if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { free (velotab); free (vwgttab); return (METIS_ERROR); } MPI_Comm_size (proccomm, &procglbnbr); MPI_Comm_rank (proccomm, &proclocnum); baseval = *numflag; vertlocnbr = vtxdist[proclocnum + 1] - vtxdist[proclocnum]; edgelocnbr = xadj[vertlocnbr] - baseval; veloloctab = ((vwgt != NULL) && ((*wgtflag & 2) != 0)) ? vwgt : NULL; edloloctab = ((adjwgt != NULL) && ((*wgtflag & 1) != 0)) ? adjwgt : NULL; if (SCOTCH_dgraphBuild (&grafdat, baseval, vertlocnbr, vertlocnbr, xadj, xadj + 1, veloloctab, NULL, edgelocnbr, edgelocnbr, adjncy, NULL, edloloctab) == 0) { SCOTCH_stratInit (&stradat); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_dgraphCheck (&grafdat) == 0) /* TRICK: next instruction called only if graph is consistent */ #endif /* SCOTCH_DEBUG_ALL */ { SCOTCH_archInit (&archdat); if ((SCOTCH_archCmpltw (&archdat, *nparts, velotab) == 0) && (SCOTCH_dgraphMapInit (&grafdat, &mappdat, &archdat, part) == 0)) { SCOTCH_dgraphMapCompute (&grafdat, &mappdat, &stradat); SCOTCH_dgraphMapExit (&grafdat, &mappdat); } SCOTCH_archExit (&archdat); } SCOTCH_stratExit (&stradat); } SCOTCH_dgraphExit (&grafdat); *edgecut = 0; /* TODO : compute real edge cut for people who might want it */ free (velotab); free (vwgttab); if (baseval != 0) { /* MeTiS part array is based, Scotch is not */ SCOTCH_Num vertlocnum; for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) part[vertlocnum] += baseval; } return (METIS_OK); } /* ** */ int SCOTCH_ParMETIS_V3_PartGeomKway ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, SCOTCH_Num * const vwgt, SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const ndims, /* Not used */ const float * const xyz, /* Not used */ const SCOTCH_Num * const ncon, /* Not used */ const SCOTCH_Num * const nparts, const float * const tpwgts, const float * const ubvec, const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const edgecut, SCOTCH_Num * const part, MPI_Comm * commptr) { return (SCOTCH_ParMETIS_V3_PartKway (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)); } /**********************/ /* */ /* ParMeTiS v3 stubs. */ /* */ /**********************/ #if (SCOTCH_PARMETIS_VERSION == 3) #ifndef SCOTCH_METIS_PREFIX /* With "SCOTCH_" prefix, names already defined */ int METISNAMEU (ParMETIS_V3_PartKway) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, SCOTCH_Num * const vwgt, SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const ncon, /* Not used */ const SCOTCH_Num * const nparts, const float * const tpwgts, const float * const ubvec, /* Not used */ const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const edgecut, SCOTCH_Num * const part, MPI_Comm * commptr) { return (SCOTCH_ParMETIS_V3_PartKway (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)); } /* ** */ int METISNAMEU (ParMETIS_V3_PartGeomKway) ( const SCOTCH_Num * const vtxdist, SCOTCH_Num * const xadj, SCOTCH_Num * const adjncy, SCOTCH_Num * const vwgt, SCOTCH_Num * const adjwgt, const SCOTCH_Num * const wgtflag, const SCOTCH_Num * const numflag, const SCOTCH_Num * const ndims, /* Not used */ const float * const xyz, /* Not used */ const SCOTCH_Num * const ncon, /* Not used */ const SCOTCH_Num * const nparts, const float * const tpwgts, const float * const ubvec, const SCOTCH_Num * const options, /* Not used */ SCOTCH_Num * const edgecut, SCOTCH_Num * const part, MPI_Comm * commptr) { return (SCOTCH_ParMETIS_V3_PartGeomKway (vtxdist, xadj, adjncy, vwgt, adjwgt, wgtflag, numflag, ndims, xyz, ncon, nparts, tpwgts, ubvec, options, edgecut, part, commptr)); } #endif /* SCOTCH_METIS_PREFIX */ #endif /* (SCOTCH_PARMETIS_VERSION == 3) */ scotch_6.0.9/src/libscotchmetis/library_parmetis.h0000644000302600021200000001626713470114133022612 0ustar pelegrinpelegrin/********************************************************* ** ** ** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** ** THE ParMeTiS SOFTWARE PACKAGE. ** ** This file is a compatibility include file provided ** ** as part of the Scotch software distribution. ** ** Preferably use the original ParMeTiS include file ** ** to keep definitions of routines not overloaded by ** ** the libPTScotchMeTiS library. ** ** ** *********************************************************/ /* Copyright 2007,2008,2010,2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_parmetis.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Compatibility declaration file for the **/ /** MeTiS interface routines provided by **/ /** the Scotch project. **/ /** **/ /** DATES : # Version 5.0 : from : 17 oct 2007 **/ /** to 18 oct 2007 **/ /** # Version 5.1 : from : 19 jun 2008 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef __parmetis_h__ #define __parmetis_h__ #include /* Since ParMeTiS does it, do it too */ #endif /* __parmetis_h__ */ #ifdef SCOTCH_METIS_PREFIX #define SCOTCH_METIS_PREFIXL scotch_ #define SCOTCH_METIS_PREFIXU SCOTCH_ #endif /* SCOTCH_METIS_PREFIX */ #ifndef SCOTCH_METIS_PREFIXL #define SCOTCH_METIS_PREFIXL #endif /* SCOTCH_METIS_PREFIXL */ #ifndef SCOTCH_METIS_PREFIXU #define SCOTCH_METIS_PREFIXU #endif /* SCOTCH_METIS_PREFIXU */ #ifndef METISNAMEL #define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) #define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) #define METISNAME2(p,s) METISNAME4(p,s) #define METISNAME3(s) s #define METISNAME4(p,s) p##s #endif /* METISNAMEL */ #ifndef SCOTCH_METIS_RETURN #define SCOTCH_METIS_RETURN typedef enum { METIS_OK = 1, METIS_ERROR_INPUT = -2, METIS_ERROR_MEMORY = -3, METIS_ERROR = -4 } rstatus_et; #endif /* SCOTCH_METIS_RETURN */ /* ** The type and structure definitions. */ #ifndef SCOTCH_H /* In case "scotch.h" not included before */ typedef DUMMYINT SCOTCH_Num; #endif /* SCOTCH_H */ /* ** The function prototypes. */ int SCOTCH_ParMETIS_V3_NodeND (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); int SCOTCH_ParMETIS_V3_PartGeomKway (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); int SCOTCH_ParMETIS_V3_PartKway (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); #ifndef SCOTCH_PARMETIS_VERSION #define SCOTCH_PARMETIS_VERSION 3 /* ParMeTiS API version is 3 by default */ #endif /* SCOTCH_PARMETIS_VERSION */ #if (SCOTCH_PARMETIS_VERSION == 3) #ifndef SCOTCH_METIS_PREFIX /* With "SCOTCH_" prefix, names already defined */ int METISNAMEU (ParMETIS_V3_NodeND) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); int METISNAMEU (ParMETIS_V3_PartGeomKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); int METISNAMEU (ParMETIS_V3_PartKway) (const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const float * const, const float * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, MPI_Comm * const); #endif /* SCOTCH_METIS_PREFIX */ #endif /* (SCOTCH_PARMETIS_VERSION == 3) */ scotch_6.0.9/src/libscotchmetis/library_metis.h0000644000302600021200000002451513531055066022111 0ustar pelegrinpelegrin/********************************************************* ** ** ** WARNING: THIS IS NOT THE ORIGINAL INCLUDE FILE OF ** ** THE MeTiS SOFTWARE PACKAGE. ** ** This file is a compatibility include file provided ** ** as part of the Scotch software distribution. ** ** Preferably use the original MeTiS include file to ** ** keep definitions of routines not overloaded by ** ** the libScotchMeTiS library. ** ** ** *********************************************************/ /* Copyright 2007,2010,2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_metis.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Amaury JACQUES (v6.0) **/ /** **/ /** FUNCTION : Compatibility declaration file for the **/ /** MeTiS interface routines provided by **/ /** the Scotch project. **/ /** **/ /** DATES : # Version 5.0 : from : 08 sep 2006 **/ /** to 07 jun 2007 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 17 jun 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ #ifdef SCOTCH_METIS_PREFIX #define SCOTCH_METIS_PREFIXL scotch_ #define SCOTCH_METIS_PREFIXU SCOTCH_ #endif /* SCOTCH_METIS_PREFIX */ #ifndef SCOTCH_METIS_PREFIXL #define SCOTCH_METIS_PREFIXL #endif /* SCOTCH_METIS_PREFIXL */ #ifndef SCOTCH_METIS_PREFIXU #define SCOTCH_METIS_PREFIXU #endif /* SCOTCH_METIS_PREFIXU */ #ifndef METISNAMEL #define METISNAMEL(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXL),s) #define METISNAMEU(s) METISNAME2(METISNAME3(SCOTCH_METIS_PREFIXU),s) #define METISNAME2(p,s) METISNAME4(p,s) #define METISNAME3(s) s #define METISNAME4(p,s) p##s #endif /* METISNAMEL */ #ifndef SCOTCH_METIS_DATATYPES #define SCOTCH_METIS_DATATYPES typedef SCOTCH_Num idx_t; typedef double real_t; #endif /* SCOTCH_METIS_DATATYPES */ #ifndef SCOTCH_METIS_RETURN #define SCOTCH_METIS_RETURN typedef enum { METIS_OK = 1, METIS_ERROR_INPUT = -2, METIS_ERROR_MEMORY = -3, METIS_ERROR = -4 } rstatus_et; #endif /* SCOTCH_METIS_RETURN */ /* ** The type and structure definitions. */ #ifndef SCOTCH_H /* In case "scotch.h" not included before */ typedef DUMMYINT SCOTCH_Num; #endif /* SCOTCH_H */ /* ** The function prototypes. */ int SCOTCH_METIS_V3_EdgeND (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V3_NodeND (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V3_NodeWND (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V5_NodeND (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V3_PartGraphKway (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V3_PartGraphRecursive (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V3_PartGraphVKway (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V5_PartGraphKway (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const double * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_METIS_V5_PartGraphRecursive (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const double * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); #ifndef SCOTCH_METIS_VERSION #define SCOTCH_METIS_VERSION 3 /* MeTiS API version is 3 by default */ #endif /* SCOTCH_METIS_VERSION */ #if (SCOTCH_METIS_VERSION == 3) int METISNAMEU (METIS_EdgeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_NodeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_NodeWND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_PartGraphKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_PartGraphRecursive) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_PartGraphVKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); #endif /* (SCOTCH_METIS_VERSION == 3) */ #if (SCOTCH_METIS_VERSION == 5) int METISNAMEU (METIS_NodeND) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_PartGraphKway) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const double * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int METISNAMEU (METIS_PartGraphRecursive) (const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const double * const, const SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); #endif /* (SCOTCH_METIS_VERSION == 5) */ scotch_6.0.9/src/libscotchmetis/metis_graph_order_f.c0000644000302600021200000002170013470114366023233 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2015,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : metis_graph_order_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API of **/ /** the compatibility library for the **/ /** MeTiS ordering routines. **/ /** **/ /** DATES : # Version 5.0 : from : 10 sep 2006 **/ /** to 10 sep 2006 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to 30 jun 2010 **/ /** # Version 6.0 : from : 13 sep 2012 **/ /** to 18 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph ordering routines. */ /* */ /**************************************/ FORTRAN ( \ SCOTCH_METIS_V3_EDGEND, scotch_metis_v3_edgend, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm, \ int * const revaptr), \ (n, xadj, adjncy, numflag, options, perm, iperm, revaptr)) { *revaptr = SCOTCH_METIS_V3_EdgeND (n, xadj, adjncy, numflag, options, perm, iperm); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V3_NODEND, scotch_metis_v3_nodend, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm, \ int * const revaptr), \ (n, xadj, adjncy, numflag, options, perm, iperm, revaptr)) { *revaptr = SCOTCH_METIS_V3_NodeND (n, xadj, adjncy, numflag, options, perm, iperm); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V3_NODEWND, scotch_metis_v3_nodewnd, ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm, \ int * const revaptr), \ (n, xadj, adjncy, vwgt, numflag, options, perm, iperm, revaptr)) { *revaptr = SCOTCH_METIS_V3_NodeWND (n, xadj, adjncy, vwgt, numflag, options, perm, iperm); } /* ** */ FORTRAN ( \ SCOTCH_METIS_V5_NODEND, scotch_metis_v5_nodend, ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm, \ int * const revaptr), \ (nvtxs, xadj, adjncy, vwgt, options, perm, iperm, revaptr)) { *revaptr = SCOTCH_METIS_V5_NodeND (nvtxs, xadj, adjncy, vwgt, options, perm, iperm); } /*******************/ /* */ /* MeTiS v3 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 3) FORTRAN ( \ METISNAMEU (METIS_EDGEND), METISNAMEL (metis_edgend), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm), \ (n, xadj, adjncy, numflag, options, perm, iperm)) { METISNAMEU (METIS_EdgeND) (n, xadj, adjncy, numflag, options, perm, iperm); } /* ** */ FORTRAN ( \ METISNAMEU (METIS_NODEND), METISNAMEL (metis_nodend), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm), \ (n, xadj, adjncy, numflag, options, perm, iperm)) { METISNAMEU (METIS_NodeND) (n, xadj, adjncy, numflag, options, perm, iperm); } /* ** */ FORTRAN ( \ METISNAMEU (METIS_NODEWND), METISNAMEL (metis_nodewnd), ( \ const SCOTCH_Num * const n, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const numflag, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm), \ (n, xadj, adjncy, vwgt, numflag, options, perm, iperm)) { METISNAMEU (METIS_NodeWND) (n, xadj, adjncy, vwgt, numflag, options, perm, iperm); } #endif /* (SCOTCH_METIS_VERSION == 3) */ /*******************/ /* */ /* MeTiS v5 stubs. */ /* */ /*******************/ #if (SCOTCH_METIS_VERSION == 5) FORTRAN ( \ METISNAMEU (METIS_NODEND), METISNAMEL (metis_nodend), ( \ const SCOTCH_Num * const nvtxs, \ const SCOTCH_Num * const xadj, \ const SCOTCH_Num * const adjncy, \ const SCOTCH_Num * const vwgt, \ const SCOTCH_Num * const options, \ SCOTCH_Num * const perm, \ SCOTCH_Num * const iperm), \ (nvtxs, xadj, adjncy, vwgt, options, perm, iperm)) { METISNAMEU (METIS_NodeND) (nvtxs, xadj, adjncy, vwgt, options, perm, iperm); } #endif /* (SCOTCH_METIS_VERSION == 5) */ scotch_6.0.9/src/libscotch/0000755000302600021200000000000013560015361016016 5ustar pelegrinpelegrinscotch_6.0.9/src/libscotch/kdgraph_map_st.c0000644000302600021200000002021213560013072021137 0ustar pelegrinpelegrin/* Copyright 2008-2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_st.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the strategy and **/ /** method tables for the parallel **/ /** multi-way static mapping routines. **/ /** **/ /** DATES : # Version 5.1 : from : 16 jun 2008 **/ /** to 14 apr 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH_MAP_ST #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "arch.h" #include "mapping.h" #include "dmapping.h" #include "bdgraph.h" #include "bdgraph_bipart_st.h" #include "kgraph.h" #include "kgraph_map_st.h" #include "kdgraph.h" #include "kdgraph_map_rb.h" #include "kdgraph_map_st.h" /* ** The static and global variables. */ static union { KdgraphMapRbParam param; StratNodeMethodData padding; } kdgraphmapstdefaultrb = { { &stratdummy, &stratdummy, 0.05 } }; static StratMethodTab kdgraphmapstmethtab[] = { /* Mapping methods array */ { KDGRAPHMAPSTMETHRB, "r", kdgraphMapRb, &kdgraphmapstdefaultrb }, { -1, NULL, NULL, NULL } }; static StratParamTab kdgraphmapstparatab[] = { /* Method parameter list */ { KDGRAPHMAPSTMETHRB, STRATPARAMSTRAT, "sep", (byte *) &kdgraphmapstdefaultrb.param, (byte *) &kdgraphmapstdefaultrb.param.stratsep, (void *) &bdgraphbipartststratab }, { KDGRAPHMAPSTMETHRB, STRATPARAMSTRAT, "seq", (byte *) &kdgraphmapstdefaultrb.param, (byte *) &kdgraphmapstdefaultrb.param.stratseq, (void *) &kgraphmapststratab }, { KDGRAPHMAPSTMETHRB, STRATPARAMDOUBLE, "bal", (byte *) &kdgraphmapstdefaultrb.param, (byte *) &kdgraphmapstdefaultrb.param.kbalval, NULL }, { KDGRAPHMAPSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab kdgraphmapstcondtab[] = { /* Graph condition parameter table */ { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab kdgraphmapststratab = { /* Strategy tables for graph mapping methods */ kdgraphmapstmethtab, kdgraphmapstparatab, kdgraphmapstcondtab }; /****************************************/ /* */ /* This is the generic mapping routine. */ /* */ /****************************************/ /* This routine computes the given ** mapping according to the given ** strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kdgraphMapSt ( Kdgraph * restrict const grafptr, /*+ Mapping graph +*/ Kdmapping * restrict const mappptr, /*+ Dynamic mapping +*/ const Strat * restrict const strat) /*+ Mapping strategy +*/ { StratTest val; int o; #ifdef SCOTCH_DEBUG_KDGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("kdgraphMapSt: invalid type specification for parser variables"); return (1); } if ((sizeof (KdgraphMapRbParam) > sizeof (StratNodeMethodData))) { errorPrint ("kdgraphMapSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_KDGRAPH2 */ #ifdef SCOTCH_DEBUG_KDGRAPH1 if ((strat->tabl != &kdgraphmapststratab) && (strat != &stratdummy)) { errorPrint ("kdgraphMapSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_KDGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = kdgraphMapSt (grafptr, mappptr, strat->data.concat.strat[0]); /* Apply first strategy */ if (o == 0) /* If it worked all right */ o |= kdgraphMapSt (grafptr, mappptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_KDGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("kdgraphMapSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_KDGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = kdgraphMapSt (grafptr, mappptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = kdgraphMapSt (grafptr, mappptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : errorPrint ("kdgraphMapSt: selection operator not implemented for k-way strategies"); return (1); #ifdef SCOTCH_DEBUG_KDGRAPH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_KDGRAPH1 */ default : #endif /* SCOTCH_DEBUG_KDGRAPH1 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, mappptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_KDGRAPH1 default : errorPrint ("kdgraphMapSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_KDGRAPH1 */ } return (o); } scotch_6.0.9/src/libscotch/vmesh_separate_st.h0000644000302600021200000000677513465315041021724 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the global mesh separation **/ /** strategy and method tables. **/ /** **/ /** DATES : # Version 4.0 : from : 20 sep 2002 **/ /** to 31 oct 2003 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum VmeshSeparateStMethodType_ { VMESHSEPASTMETHFM = 0, /*+ Fiduccia-Mattheyses +*/ VMESHSEPASTMETHGG, /*+ Greedy Mesh Growing +*/ #ifdef SCOTCH_DEBUG_VMESH2 VMESHSEPASTMETHGR, /*+ Graph partitioning +*/ #endif /* SCOTCH_DEBUG_VMESH2 */ VMESHSEPASTMETHML, /*+ Multi-level separation +*/ VMESHSEPASTMETHZR, /*+ Zero method +*/ VMESHSEPASTMETHNBR /*+ Number of methods +*/ } VmeshSeparateStMethodType; /* ** The external declarations. */ extern StratTab vmeshseparateststratab; /* ** The function prototypes. */ int vmeshSeparateSt (Vmesh * restrict const, const Strat * restrict const); scotch_6.0.9/src/libscotch/bgraph_bipart_fm.c0000644000302600021200000014247313560005346021465 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2016,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_fm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module bipartitions an active **/ /** graph using our improvements of the **/ /** Fiduccia-Mattheyses heuristics. **/ /** **/ /** DATES : # Version 1.0 : from : 30 sep 1993 **/ /** to 09 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.2 : from : 07 feb 1994 **/ /** to 15 feb 1994 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 30 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 03 nov 1994 **/ /** # Version 3.1 : from : 06 nov 1995 **/ /** to 07 jun 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 12 mar 1999 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 20 dec 2003 **/ /** to 05 may 2006 **/ /** # Version 5.0 : from : 24 mar 2008 **/ /** to : 22 may 2008 **/ /** # Version 5.1 : from : 30 oct 2008 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 23 feb 2011 **/ /** to 20 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_FM #define SCOTCH_TABLE_GAIN #include "module.h" #include "common.h" #include "fibo.h" #include "gain.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_fm.h" #include "bgraph_bipart_gg.h" /*********************************/ /* */ /* Gain table handling routines. */ /* */ /*********************************/ #ifdef SCOTCH_TABLE_GAIN /* This routine returns the vertex of best gain ** whose swap will keep the balance correct. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no more vertices available. */ static BgraphBipartFmVertex * bgraphBipartFmTablGet ( BgraphBipartFmTabl * restrict const gainptr, /*+ Gain table +*/ const Gnum deltcur, /*+ Current imbalance +*/ const Gnum deltmin, /*+ Minimum imbalance +*/ const Gnum deltmax) /*+ Maximum imbalance +*/ { GainTabl * tablptr; BgraphBipartFmVertex * vexxptr; BgraphBipartFmVertex * vertbest; Gnum gainbest; const GainEntr * tablbest; Gnum deltbest; tablptr = *gainptr; tablbest = tablptr->tend; /* Assume no candidate vertex found yet */ gainbest = GAINMAX; vertbest = NULL; deltbest = deltmax; for (vexxptr = (BgraphBipartFmVertex *) gainTablFrst (tablptr); /* Select candidate vertices */ (vexxptr != NULL) && (vexxptr->gainlink.tabl < tablbest); vexxptr = (BgraphBipartFmVertex *) gainTablNext (tablptr, &vexxptr->gainlink)) { Gnum deltnew; deltnew = deltcur + vexxptr->compgain; if ((deltnew >= deltmin) && /* If vertex enforces balance */ (deltnew <= deltmax)) { deltnew = abs (deltnew); if ((vexxptr->commgain < gainbest) || /* And if it gives better gain */ ((vexxptr->commgain == gainbest) && /* Or if it gives better load */ (deltnew < deltbest))) { tablbest = vexxptr->gainlink.tabl; /* Select it */ gainbest = vexxptr->commgain; vertbest = vexxptr; deltbest = deltnew; } } } return (vertbest); } #else /* SCOTCH_TABLE_GAIN */ /* bgraphBipartFmCmpFunc(a,b) must return a negative ** number if a is "better" than b. The smaller, the ** better. */ static int bgraphBipartFmCmpFunc ( const FiboNode * const data0ptr, /* TRICK: BgraphBipartFmLink is FIRST in BgraphBipartFmVertex */ const FiboNode * const data1ptr) { const BgraphBipartFmVertex * const node0ptr = (BgraphBipartFmVertex *) data0ptr; const BgraphBipartFmVertex * const node1ptr = (BgraphBipartFmVertex *) data1ptr; if (node0ptr->commgain < node1ptr->commgain) return (-1); if (node0ptr->commgain > node1ptr->commgain) return (1); return (0); } static BgraphBipartFmVertex * bgraphBipartFmTablGet ( BgraphBipartFmTabl * restrict const tablptr, /*+ Gain table +*/ const Gnum deltcur, /*+ Current imbalance +*/ const Gnum deltmin, /*+ Minimum imbalance +*/ const Gnum deltmax) /*+ Maximum imbalance +*/ { FiboNode * remoptr; /* List of removed links */ BgraphBipartFmVertex * vexxptr; BgraphBipartFmVertex * vertbest; Gnum gainbest; Gnum deltbest; FiboNode * linkptr; /* Pointer to current gain link */ gainbest = GAINMAX; vertbest = NULL; deltbest = deltmax; remoptr = NULL; while ((linkptr = fiboHeapMin (tablptr)) != NULL) { /* Select candidate vertices */ Gnum deltnew; Gnum gainval; /* Separator gain of current link */ vexxptr = (BgraphBipartFmVertex *) linkptr; gainval = vexxptr->commgain; if (gainval > gainbest) /* If no more interesting vertices, stop searching */ break; fiboHeapDel (tablptr, linkptr); /* Remove vertex link from table */ linkptr->linkdat.prevptr = remoptr; /* Node has been removed but is not kept */ remoptr = linkptr; /* It will be chained back afterwards */ deltnew = deltcur + vexxptr->compgain; if ((deltnew >= deltmin) && /* If vertex enforces balance */ (deltnew <= deltmax)) { deltnew = abs (deltnew); if (deltnew <= deltbest) { /* If vertex enforces balance */ vertbest = vexxptr; gainbest = gainval; deltbest = deltnew; } } } while (remoptr != NULL) { /* Put back all temporarily removed nodes */ FiboNode * tempptr; tempptr = remoptr; /* Get pointer to node */ remoptr = remoptr->linkdat.prevptr; /* Find next node */ fiboHeapAdd (tablptr, tempptr); /* Re-link node */ } return (vertbest); } #endif /* SCOTCH_TABLE_GAIN */ /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartFm ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const BgraphBipartFmParam * const paraptr) /*+ Method parameters +*/ { BgraphBipartFmTabl tabldat; /* Gain table */ BgraphBipartFmTabl * tablptr; /* Pointer to gain table */ INT passnbr; /* Maximum number of passes to go */ BgraphBipartFmSave * restrict savetab; /* Pointer to move array */ Gnum movenbr; /* Number of uneffective moves done */ Gnum savenbr; /* Number of recorded backtrack moves */ Gnum mswpnum; /* Current number of recording sweep */ int moveflag; /* Flag set if useful moves made */ int swapval; /* Flag set if global swap performed */ int swapvalbst; /* Recorded swap value for best position */ Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashnum; /* Hash value */ BgraphBipartFmVertex * lockptr; /* Linked list of locked vertices */ BgraphBipartFmVertex * restrict hashtab; /* Extended vertex array */ Gnum hashmax; Gnum hashnbr; void * hashtmp; /* Temporary variable to avoid "restrict" */ Gnum comploadsum; /* Overall vertex load sum, including fixed */ Gnum compload0dltmit; /* Theoretical smallest imbalance allowed */ Gnum compload0dltmat; /* Theoretical largest imbalance allowed */ Gnum compload0dltmin; /* Smallest imbalance allowed */ Gnum compload0dltmax; /* Largest imbalance allowed */ Gnum compload0dltbst; /* Best imbalance value found to date */ Gnum compload0dlt; /* Current imbalance */ Gnum compsize0dlt; /* Update of size of part 0 */ Gnum commgainextn; /* Current external communication gain */ Gnum commgainextnbst; /* External gain of best recorded position */ Gnum commload; /* Communication load of current position */ Gnum commloadbst; /* Best communication load to date */ Gnum domndist; /* Distance between the two subdomains */ Gnum fronnbr; Gnum fronnum; BgraphBipartFmType typeval; const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const veextax = grafptr->veextax; comploadsum = grafptr->s.velosum + grafptr->vfixload[0] + grafptr->vfixload[1]; compload0dltmat = (paraptr->deltval <= 0.0L) ? 0 : ((Gnum) ((double) comploadsum * paraptr->deltval / (double) MAX (grafptr->domnwght[0], grafptr->domnwght[1])) + 1); compload0dltmit = MAX ((grafptr->compload0min - grafptr->compload0avg), - compload0dltmat); compload0dltmat = MIN ((grafptr->compload0max - grafptr->compload0avg), compload0dltmat); compload0dltmin = MIN (grafptr->compload0dlt, compload0dltmit); /* Set current maximum distance */ compload0dltmax = MAX (grafptr->compload0dlt, compload0dltmat); typeval = BGRAPHBIPARTFMTYPEBOUNDARY; /* Start by using boundary moves only */ if (grafptr->fronnbr == 0) { /* If no current frontier */ if ((grafptr->compload0dlt >= compload0dltmit) && /* If balance is correct */ (grafptr->compload0dlt <= compload0dltmat)) return (0); /* Nothing to do */ else { /* Imbalance must be fought */ BgraphBipartGgParam paradat; paradat.passnbr = 4; /* Use a standard algorithm */ if (bgraphBipartGg (grafptr, ¶dat) != 0) /* Return if error */ return (1); if (grafptr->fronnbr == 0) /* If new partition has no frontier */ return (0); /* This algorithm is still useless */ compload0dltmin = MIN (compload0dltmit, grafptr->compload0dlt); compload0dltmax = MAX (compload0dltmat, grafptr->compload0dlt); typeval = BGRAPHBIPARTFMTYPEALL; } } #ifdef SCOTCH_DEBUG_BGRAPH2 hashnbr = 2 * grafptr->fronnbr + 1; /* Ensure resizing will be performed, for maximum code coverage */ #else /* SCOTCH_DEBUG_BGRAPH2 */ hashnbr = 4 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax); #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (hashnbr > grafptr->s.vertnbr) hashnbr = grafptr->s.vertnbr; if (typeval == BGRAPHBIPARTFMTYPEALL) /* Take maximum space so that hashmax will fit */ hashnbr = grafptr->s.vertnbr * 4; for (hashsiz = 256; hashsiz < hashnbr; hashsiz <<= 1) ; /* Get upper power of two */ hashmsk = hashsiz - 1; hashmax = hashsiz >> 2; if (bgraphBipartFmTablInit (&tabldat) != 0) { errorPrint ("bgraphBipartFm: internal error (1)"); /* Unable to do proper initialization */ bgraphBipartFmTablExit (&tabldat); return (1); } tablptr = &tabldat; if (memAllocGroup ((void **) (void *) &hashtmp, (size_t) (hashsiz * sizeof (BgraphBipartFmVertex)), &savetab, (size_t) (hashsiz * sizeof (BgraphBipartFmSave)), NULL) == NULL) { errorPrint ("bgraphBipartFm: out of memory (1)"); bgraphBipartFmTablExit (tablptr); return (1); } hashtab = hashtmp; memSet (hashtab, ~0, hashsiz * sizeof (BgraphBipartFmVertex)); /* Set all vertex numbers to ~0 */ domndist = grafptr->domndist; if (typeval == BGRAPHBIPARTFMTYPEALL) { Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { /* Set initial gains */ Gnum veloval; Gnum hashnum; Gnum edgenum; Gnum edloval; Gnum commcut; Gnum commgain; int partval; int partdlt; partval = grafptr->parttax[vertnum]; for (edgenum = verttax[vertnum], commcut = commgain = 0, edloval = 1; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; int partend; int partdlt; vertend = edgetax[edgenum]; partend = grafptr->parttax[vertend]; if (edlotax != NULL) edloval = edlotax[edgenum]; partdlt = partval ^ partend; commcut += partdlt; commgain += (1 - 2 * partdlt) * edloval; } commgain *= domndist; /* Adjust internal gains with respect to external gains */ partdlt = 2 * partval - 1; veloval = (velotax != NULL) ? velotax[vertnum] : 1; for (hashnum = (vertnum * BGRAPHBIPARTFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk) ; hashtab[hashnum].vertnum = vertnum; /* Implicitely set slot as used */ hashtab[hashnum].partval = partval; hashtab[hashnum].compgain = partdlt * veloval; hashtab[hashnum].commgain = (veextax == NULL) ? commgain : (commgain - partdlt * veextax[vertnum]); hashtab[hashnum].commcut = commcut; hashtab[hashnum].mswpnum = 0; /* Implicitely set slot as used */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); } } else { for (fronnum = 0, hashnbr = grafptr->fronnbr; /* Set initial gains */ fronnum < hashnbr; fronnum ++) { Gnum vertnum; Gnum veloval; Gnum hashnum; Gnum edgenum; Gnum edloval; Gnum commcut; Gnum commgain; int partval; int partdlt; vertnum = grafptr->frontab[fronnum]; partval = grafptr->parttax[vertnum]; for (edgenum = verttax[vertnum], commcut = commgain = 0, edloval = 1; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; int partend; int partdlt; vertend = edgetax[edgenum]; partend = grafptr->parttax[vertend]; if (edlotax != NULL) edloval = edlotax[edgenum]; partdlt = partval ^ partend; commcut += partdlt; commgain += (1 - 2 * partdlt) * edloval; } commgain *= domndist; /* Adjust internal gains with respect to external gains */ partdlt = 2 * partval - 1; veloval = (velotax != NULL) ? velotax[vertnum] : 1; for (hashnum = (vertnum * BGRAPHBIPARTFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk) ; hashtab[hashnum].vertnum = vertnum; /* Implicitely set slot as used */ hashtab[hashnum].partval = partval; hashtab[hashnum].compgain = partdlt * veloval; hashtab[hashnum].commgain = (veextax == NULL) ? commgain : (commgain - partdlt * veextax[vertnum]); hashtab[hashnum].commcut = commcut; hashtab[hashnum].mswpnum = 0; /* Implicitely set slot as used */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); } } compload0dltbst = grafptr->compload0dlt; commloadbst = grafptr->commload; commgainextnbst = grafptr->commgainextn; swapvalbst = 0; /* No global swap performed yet */ #ifdef SCOTCH_DEBUG_BGRAPH2 #ifdef SCOTCH_DEBUG_BGRAPH3 if (bgraphBipartFmCheck (grafptr, hashtab, hashmsk, 0, compload0dltbst, commloadbst, commgainextnbst) != 0) { errorPrint ("bgraphBipartFm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* SCOTCH_DEBUG_BGRAPH2 */ passnbr = paraptr->passnbr; /* Set remaining number of passes */ savenbr = 0; /* For empty backtrack of first pass */ mswpnum = 0; /* Will be incremented afterwards */ lockptr = NULL; /* Locked list is empty */ do { /* As long as there are improvements */ BgraphBipartFmVertex * vexxptr; while (savenbr -- > 0) { /* Delete exceeding moves */ Gnum hashnum; int partval; hashnum = savetab[savenbr].hashnum; partval = savetab[savenbr].partval; hashtab[hashnum].partval = partval; /* Restore vertex data */ hashtab[hashnum].compgain = savetab[savenbr].compgain; hashtab[hashnum].commgain = savetab[savenbr].commgain; hashtab[hashnum].commcut = savetab[savenbr].commcut; if (bgraphBipartFmIsTabl (&hashtab[hashnum])) { /* If vertex is linked */ bgraphBipartFmTablDel (tablptr, &hashtab[hashnum]); /* Unlink it */ bgraphBipartFmSetFree (&hashtab[hashnum]); /* Set it as free */ } if (bgraphBipartFmIsFree (&hashtab[hashnum]) && (partval == 2)) /* If vertex not locked and in separator */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); /* Re-link it */ } compload0dlt = compload0dltbst; /* Restore best separator parameters */ commload = commloadbst; commgainextn = commgainextnbst; swapval = swapvalbst; mswpnum ++; /* Forget all recorded moves */ #ifdef SCOTCH_DEBUG_BGRAPH2 #ifdef SCOTCH_DEBUG_BGRAPH3 if (bgraphBipartFmCheck (grafptr, hashtab, hashmsk, swapval, compload0dlt, commload, commgainextn) != 0) { errorPrint ("bgraphBipartFm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* SCOTCH_DEBUG_BGRAPH2 */ while (lockptr != NULL) { /* For all vertices in locked list */ BgraphBipartFmVertex * vexxptr; vexxptr = lockptr; /* Unlink vertex from list */ lockptr = bgraphBipartFmChainNext (vexxptr); if ((typeval == BGRAPHBIPARTFMTYPEALL) || (vexxptr->commcut > 0)) /* If vertex has cut edges or should be put anyway */ bgraphBipartFmTablAdd (tablptr, vexxptr); /* Put it in table */ else bgraphBipartFmSetFree (vexxptr); /* Set it free anyway */ } moveflag = 0; /* No useful moves made */ movenbr = 0; /* No uneffective moves recorded yet */ savenbr = 0; /* Back up to beginning of table */ while ((movenbr < paraptr->movenbr) && /* As long as we can find effective vertices */ ((vexxptr = (BgraphBipartFmVertex *) bgraphBipartFmTablGet (tablptr, compload0dlt, compload0dltmin, compload0dltmax)) != NULL)) { Gnum vertnum; /* Number of current vertex */ int partval; /* Part of current vertex */ Gnum edgenum; Gnum edloval; bgraphBipartFmTablDel (tablptr, vexxptr); /* Remove it from table */ bgraphBipartFmSetUsed (vexxptr); /* Mark it as used */ bgraphBipartFmChain (&lockptr, vexxptr); /* Lock it */ vertnum = vexxptr->vertnum; partval = vexxptr->partval; if (vexxptr->mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxptr->mswpnum = mswpnum; savetab[savenbr].hashnum = vexxptr - hashtab; savetab[savenbr].partval = partval; savetab[savenbr].compgain = vexxptr->compgain; savetab[savenbr].commgain = vexxptr->commgain; savetab[savenbr].commcut = vexxptr->commcut; savenbr ++; /* One more move recorded */ } movenbr ++; /* One more move done */ commload += vexxptr->commgain; compload0dlt += vexxptr->compgain; if (veextax != NULL) commgainextn += 2 * (2 * partval - 1) * veextax[vertnum]; vexxptr->partval = partval ^ 1; /* Swap vertex first in case neighbors are added */ vexxptr->compgain = - vexxptr->compgain; vexxptr->commgain = - vexxptr->commgain; vexxptr->commcut = vendtax[vertnum] - verttax[vertnum] - vexxptr->commcut; edloval = 1; for (edgenum = verttax[vertnum]; /* (Re-)link neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* Number of current end neighbor vertex */ Gnum hashnum; vertend = edgetax[edgenum]; if (edlotax != NULL) edloval = edlotax[edgenum]; for (hashnum = (vertend * BGRAPHBIPARTFMHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].vertnum == vertend) { /* If hash slot found */ int partdlt; if (hashtab[hashnum].mswpnum != mswpnum) { /* If vertex data not yet recorded */ savetab[savenbr].hashnum = hashnum; /* Record them */ savetab[savenbr].partval = hashtab[hashnum].partval; savetab[savenbr].compgain = hashtab[hashnum].compgain; savetab[savenbr].commgain = hashtab[hashnum].commgain; savetab[savenbr].commcut = hashtab[hashnum].commcut; hashtab[hashnum].mswpnum = mswpnum; savenbr ++; } partdlt = 2 * (partval ^ hashtab[hashnum].partval) - 1; hashtab[hashnum].commgain += (domndist * 2) * edloval * partdlt; hashtab[hashnum].commcut -= partdlt; if (! bgraphBipartFmIsUsed(&hashtab[hashnum])) { /* If vertex is of use */ if (bgraphBipartFmIsTabl(&hashtab[hashnum])) { /* If vertex is linked */ bgraphBipartFmTablDel (tablptr, &hashtab[hashnum]); /* Remove it from table */ bgraphBipartFmSetFree (&hashtab[hashnum]); /* Mark it as free anyway */ } if (hashtab[hashnum].commcut > 0) /* If vertex belongs to the frontier */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); /* Re-link it */ } break; } if (hashtab[hashnum].vertnum == ~0) { /* If hash slot empty */ Gnum commgain; /* Communication gain of current vertex */ Gnum commgainold; /* Old communication gain of current vertex */ Gnum veloval; Gnum veexval; int partold; int partdlt; if (hashnbr >= hashmax) { /* If extended vertex table is already full */ if (bgraphBipartFmResize (&hashtab, &hashmax, &hashmsk, &savetab, savenbr, tablptr, &lockptr) != 0) { errorPrint ("bgraphBipartFm: out of memory (2)"); memFree (hashtab); /* Free group leader */ bgraphBipartFmTablExit (tablptr); } for (hashnum = (vertend * BGRAPHBIPARTFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk) ; /* Search for new first free slot */ } if (edlotax != NULL) { /* If graph edges are weighted */ Gnum edgeend; for (edgeend = verttax[vertend], commgainold = 0; /* Compute neighbor edge load sum */ edgeend < vendtax[vertend]; edgeend ++) commgainold += edlotax[edgeend]; commgain = commgainold - 2 * edloval; } else { /* Graph edges are not weighted */ commgainold = vendtax[vertend] - verttax[vertend]; commgain = commgainold - 2; } veloval = 1; if (velotax != NULL) veloval = velotax[vertend]; veexval = 0; if (veextax != NULL) veexval = veextax[vertend]; #ifdef SCOTCH_DEBUG_BGRAPH2 if (grafptr->parttax[vertend] != (partval ^ swapval)) { errorPrint ("bgraphBipartFm: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ partold = partval ^ swapval ^ swapvalbst; /* Get part of vertex as in latest accepted configuration */ partdlt = 2 * partold - 1; /* Compute values to fill save table according to last stable configuration */ savetab[savenbr].hashnum = hashnum; /* Record initial state of new vertex */ savetab[savenbr].partval = partold; savetab[savenbr].compgain = partdlt * veloval; savetab[savenbr].commgain = commgainold * domndist - (partdlt * veexval); savetab[savenbr].commcut = 0; savenbr ++; partdlt = 2 * partval - 1; /* Compute values to fill hash table according to current configuration */ hashtab[hashnum].vertnum = vertend; hashtab[hashnum].partval = partval; /* It was a neighbor of the moved vertex, in current global swap state */ hashtab[hashnum].compgain = partdlt * veloval; hashtab[hashnum].commgain = commgain * domndist - (partdlt * veexval); hashtab[hashnum].commcut = 1; hashtab[hashnum].mswpnum = mswpnum; /* Vertex has just been saved */ hashnbr ++; /* One more vertex in hash table */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); break; } } } if (commload < commloadbst) { /* If move improves the cost */ compload0dltbst = compload0dlt; /* This move was effective */ commloadbst = commload; commgainextnbst = commgainextn; swapvalbst = swapval; moveflag = 1; movenbr = savenbr = 0; mswpnum ++; } else if (commload == commloadbst) { if (abs (compload0dlt) < abs (compload0dltbst)) { compload0dltbst = compload0dlt; /* This move was effective */ commgainextnbst = commgainextn; swapvalbst = swapval; moveflag = 1; movenbr = savenbr = 0; mswpnum ++; } else if (abs (compload0dlt) == abs (compload0dltbst)) { compload0dltbst = compload0dlt; /* Forget backtracking */ commgainextnbst = commgainextn; swapvalbst = swapval; savenbr = 0; mswpnum ++; } } if (((compload0dltmin < compload0dltmit) && /* If must restrict distance bounds */ (compload0dlt > compload0dltmin) && /* And we have done something useful */ (compload0dlt <= compload0dltmax)) || ((compload0dltmax > compload0dltmat) && (compload0dlt < compload0dltmax) && (compload0dlt >= compload0dltmin))) { compload0dltmin = MIN (compload0dltmit, compload0dlt); /* Update bounds */ compload0dltmax = MAX (compload0dltmat, compload0dlt); compload0dltbst = compload0dlt; /* Record best move done */ commloadbst = commload; commgainextnbst = commgainextn; swapvalbst = swapval; moveflag = 1; movenbr = savenbr = 0; mswpnum ++; } #ifdef SCOTCH_DEBUG_BGRAPH2 #ifdef SCOTCH_DEBUG_BGRAPH3 if (bgraphBipartFmCheck (grafptr, hashtab, hashmsk, swapval, compload0dlt, commload, commgainextn) != 0) { errorPrint ("bgraphBipartFm: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (commgainextn < 0) { /* If global swap improves gain */ Gnum compload0dlttmp; #ifdef SCOTCH_DEBUG_BGRAPH2 if (veextax == NULL) { /* commgainextn should always be 0 if (veextab == NULL) */ errorPrint ("bgraphBipartFm: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ compload0dlttmp = grafptr->s.velosum - compload0dlt - 2 * grafptr->compload0avg; if (abs (compload0dlttmp) <= compload0dltmax) { /* If still within bounds, perform actual swapping */ Gnum hashnum; commload += commgainextn; /* Perform global swap */ commgainextn = - commgainextn; compload0dlt = compload0dlttmp; swapval ^= 1; for (hashnum = 0; hashnum <= hashmsk; hashnum ++) { /* hashsiz no longer valid after resizing, so use hashmsk */ Gnum commgain; if (hashtab[hashnum].mswpnum == ~0) /* If hash slot not used, skip it */ continue; if (hashtab[hashnum].mswpnum != mswpnum) { /* And vertex data not yet recorded */ hashtab[hashnum].mswpnum = mswpnum; /* Record them */ savetab[savenbr].hashnum = hashnum; savetab[savenbr].partval = hashtab[hashnum].partval; savetab[savenbr].compgain = hashtab[hashnum].compgain; savetab[savenbr].commgain = hashtab[hashnum].commgain; savetab[savenbr].commcut = hashtab[hashnum].commcut; savenbr ++; } hashtab[hashnum].partval ^= 1; /* Swap the vertex */ hashtab[hashnum].compgain = - hashtab[hashnum].compgain; commgain = veextax[hashtab[hashnum].vertnum]; if (commgain != 0) { /* If vertex has external cocycle edges */ hashtab[hashnum].commgain += 2 * (1 - 2 * hashtab[hashnum].partval) * commgain; /* Compute new gain */ if (bgraphBipartFmIsTabl (&hashtab[hashnum])) { /* If vertex is linked */ bgraphBipartFmTablDel (tablptr, &hashtab[hashnum]); /* Remove it from table */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnum]); /* Re-link it */ } } } if ((commload < commloadbst) || /* If move improves cost */ ((commload == commloadbst) && (abs (compload0dlt) < abs (compload0dltbst)))) { compload0dltbst = compload0dlt; /* Then record best move done */ commloadbst = commload; commgainextnbst = commgainextn; swapvalbst = swapval; moveflag = 1; movenbr = savenbr = 0; mswpnum ++; } #ifdef SCOTCH_DEBUG_BGRAPH2 #ifdef SCOTCH_DEBUG_BGRAPH3 if (bgraphBipartFmCheck (grafptr, hashtab, hashmsk, swapval, compload0dlt, commload, commgainextn) != 0) { errorPrint ("bgraphBipartFm: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* SCOTCH_DEBUG_BGRAPH2 */ } } } } while ((moveflag != 0) && /* As long as vertices are moved */ (-- passnbr != 0)); /* And we are allowed to loop (TRICK for negative values) */ #ifdef SCOTCH_DEBUG_BGRAPH2 #ifdef SCOTCH_DEBUG_BGRAPH3 if (bgraphBipartFmCheck (grafptr, hashtab, hashmsk, swapval, compload0dlt, commload, commgainextn) != 0) { errorPrint ("bgraphBipartFm: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* SCOTCH_DEBUG_BGRAPH2 */ compsize0dlt = 0; /* No difference to number of vertices yet */ if (swapvalbst != 0) { /* If global swap needed */ Gnum vertnum; compsize0dlt = grafptr->s.vertnbr - 2 * grafptr->compsize0; /* Set difference so as to swap all vertices */ for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) /* Swap all vertices in part array */ grafptr->parttax[vertnum] ^= 1; } while (savenbr -- > 0) { /* Delete exceeding moves */ Gnum hashnum; hashnum = savetab[savenbr].hashnum; hashtab[hashnum].partval = savetab[savenbr].partval; /* Restore vertex data */ hashtab[hashnum].commcut = savetab[savenbr].commcut; } compload0dlt = compload0dltbst; /* Restore best separator parameters */ commload = commloadbst; commgainextn = commgainextnbst; for (hashnum = fronnbr = 0; /* Build new frontier */ hashnum <= hashmsk; hashnum ++) { /* hashsiz no longer valid after resizing, so use hashmsk */ Gnum vertnum; int partval; vertnum = hashtab[hashnum].vertnum; /* Get vertex data from slot */ if (vertnum == ~0) continue; partval = hashtab[hashnum].partval; if (grafptr->parttax[vertnum] != partval) { /* If vertex part changed */ grafptr->parttax[vertnum] = partval; /* Set new part value */ compsize0dlt += (1 - 2 * partval); /* Adjust size of part 0 accordingly */ } if (hashtab[hashnum].commcut > 0) /* If vertex belongs to cut */ grafptr->frontab[fronnbr ++] = vertnum; /* Add vertex to frontier */ } grafptr->fronnbr = fronnbr; grafptr->compload0 = compload0dlt + grafptr->compload0avg; grafptr->compload0dlt = compload0dlt; grafptr->compsize0 += compsize0dlt; grafptr->commload = commload; grafptr->commgainextn = commgainextn; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartFm: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ memFree (hashtab); /* Free group leader */ bgraphBipartFmTablExit (tablptr); return (0); } /* This routine doubles the size all of the arrays ** involved in handling the hash table and hash ** vertex arrays. ** It returns: ** - 0 : if resizing succeeded. ** - !0 : if out of memory. */ static int bgraphBipartFmResize ( BgraphBipartFmVertex * restrict * hashtabptr, /*+ Extended vertex array +*/ Gnum * restrict const hashmaxptr, /*+ Size of vertex array +*/ Gnum * const hashmskptr, /*+ Pointer to hash table mask +*/ BgraphBipartFmSave * restrict * savetabptr, /*+ Move array +*/ const Gnum savenbr, /*+ Number of moves recorded +*/ BgraphBipartFmTabl * tablptr, /*+ Gain table +*/ BgraphBipartFmVertex ** const lockptr) /*+ Pointer to locked list +*/ { BgraphBipartFmVertex * restrict hashtab; /* Extended vertex array */ BgraphBipartFmSave * savetab; /* Move backtracking array */ BgraphBipartFmSave * saveold; /* Pointer to translated old save array */ Gnum savenum; Gnum hashold; /* Size of old hash table (half of new) */ Gnum hashsiz; Gnum hashmax; Gnum hashmsk; Gnum hashsta; /* Start index of range of hash indices to move */ Gnum hashend; /* End index of range of hash indices to move */ Gnum hashnum; hashmax = *hashmaxptr << 1; /* Compute new sizes */ hashold = *hashmaxptr << 2; hashsiz = *hashmaxptr << 3; hashmsk = hashsiz - 1; #ifdef SCOTCH_DEBUG_BGRAPH2 if (sizeof (BgraphBipartFmVertex) < sizeof (BgraphBipartFmSave)) { /* Should always be true */ errorPrint ("bgraphBipartFmResize: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (memReallocGroup ((void *) *hashtabptr, &hashtab, (size_t) (hashsiz * sizeof (BgraphBipartFmVertex)), &savetab, (size_t) (hashsiz * sizeof (BgraphBipartFmSave)), NULL) == NULL) { errorPrint ("bgraphBipartFmResize: out of memory"); return (1); } saveold = (BgraphBipartFmSave *) ((byte *) hashtab + ((byte *) *savetabptr - (byte *) *hashtabptr)); for (savenum = savenbr - 1; savenum >= 0; savenum --) { /* Move save array, in reverse order */ savetab[savenum].commcut = saveold[savenum].commcut; savetab[savenum].commgain = saveold[savenum].commgain; savetab[savenum].compgain = saveold[savenum].compgain; savetab[savenum].partval = saveold[savenum].partval; savetab[savenum].hashnum = hashtab[saveold[savenum].hashnum].vertnum; /* Temporarily translate from hash index to number */ } *hashtabptr = hashtab; *hashmaxptr = hashmax; *hashmskptr = hashmsk; *savetabptr = savetab; memSet (hashtab + hashold, ~0, hashold * sizeof (BgraphBipartFmVertex)); bgraphBipartFmTablFree (tablptr); /* Reset gain table */ *lockptr = NULL; /* Rebuild lock list */ for (hashsta = hashold - 1; hashtab[hashsta].vertnum != ~0; hashsta --) ; /* Start index of first segment to reconsider is last empty slot */ hashend = hashold; /* First segment to reconsider ends at the end of the old array */ while (hashend != hashsta) { /* For each of the two segments to consider */ for (hashnum = hashsta; hashnum < hashend; hashnum ++) { /* Re-compute position of vertices in new table */ Gnum vertnum; vertnum = hashtab[hashnum].vertnum; if (vertnum != ~0) { /* If hash slot used */ Gnum hashnew; for (hashnew = (vertnum * BGRAPHBIPARTFMHASHPRIME) & hashmsk; ; hashnew = (hashnew + 1) & hashmsk) { if (hashnew == hashnum) /* If hash slot is the same */ break; /* There is nothing to do */ if (hashtab[hashnew].vertnum == ~0) { /* If new slot is empty */ #ifdef SCOTCH_DEBUG_BGRAPH2 if ((hashnew > hashnum) && (hashnew < hashend)) { /* If vertex is not moved either before its old position or after the end of the segment */ errorPrint ("bgraphBipartFmResize: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ hashtab[hashnew] = hashtab[hashnum]; /* Copy data to new slot */ hashtab[hashnum].mswpnum = ~0; /* TRICK: not tested at creation */ hashtab[hashnum].vertnum = ~0; /* Make old slot empty */ break; } } if (bgraphBipartFmIsTabl (&hashtab[hashnew])) /* If vertex was linked, re-link it */ bgraphBipartFmTablAdd (tablptr, &hashtab[hashnew]); else if (bgraphBipartFmIsUsed (&hashtab[hashnew])) /* Re-lock used vertices */ bgraphBipartFmChain (lockptr, &hashtab[hashnew]); /* Lock it */ } } hashend = hashsta; /* End of second segment to consider is start of first one */ hashsta = 0; /* Start of second segment is beginning of array */ } /* After second segment, hashsta = hashend = 0 and loop stops */ for (savenum = 0; savenum < savenbr; savenum ++) { Gnum vertnum; Gnum hashnum; vertnum = savetab[savenum].hashnum; /* Get vertex number temporarily saved */ for (hashnum = (vertnum * BGRAPHBIPARTFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != vertnum; hashnum = (hashnum + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_BGRAPH2 if (hashtab[hashnum].vertnum == ~0) { errorPrint ("bgraphBipartFmResize: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ } savetab[savenum].hashnum = hashnum; /* Set new hash table index */ } return (0); } /* This routine checks the consistency of ** the hash structures. ** It returns: ** - 0 : in case of success. ** - !0 : in case of error. */ #ifdef SCOTCH_DEBUG_BGRAPH3 static int bgraphBipartFmCheck ( const Bgraph * restrict const grafptr, const BgraphBipartFmVertex * restrict const hashtab, const Gnum hashmsk, const int swapval, const Gnum compload0dlt, const Gnum commload, const Gnum commgainextn) { Gnum domndist; Gnum hashnum; Gnum compload0tmp; Gnum commloaddlttmp; /* Difference between old and current communication load */ Gnum commloadextndlttmp; Gnum commgainextntmp; domndist = grafptr->domndist; compload0tmp = (swapval == 0) ? grafptr->compload0 : (grafptr->s.velosum - grafptr->compload0); commloaddlttmp = 0; /* No difference yet */ commloadextndlttmp = swapval * grafptr->commgainextn; commgainextntmp = (1 - 2 * swapval) * grafptr->commgainextn; for (hashnum = 0; hashnum <= hashmsk; hashnum ++) { /* For all vertex slots */ Gnum vertnum; Gnum veloval; Gnum veexval; Gnum edgenum; int partval; int partold; Gnum commcut; Gnum commgain; Gnum commgainextn; vertnum = hashtab[hashnum].vertnum; if (vertnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ veloval = (velotax != NULL) ? velotax[vertnum] : 1; partval = hashtab[hashnum].partval; if ((partval < 0) || (partval > 1)) { errorPrint ("bgraphBipartFmCheck: invalid vertex part value"); return (1); } if (hashtab[hashnum].compgain != (2 * partval - 1) * veloval) { errorPrint ("bgraphBipartFmCheck: invalid vertex computation gain"); return (1); } partold = grafptr->parttax[vertnum] ^ swapval; veexval = (veextax != NULL) ? veextax[vertnum] : 0; compload0tmp += (partval ^ partold) * (1 - 2 * partval) * veloval; commgainextn = (1 - 2 * partval) * veexval; commgainextntmp += (partval ^ partold) * commgainextn * 2; commloadextndlttmp -= (partval ^ partold) * commgainextn; commcut = commgain = 0; for (edgenum = verttax[vertnum]; /* For all neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum edloval; Gnum vertend; Gnum hashend; int partend; int partond; int partdlt; vertend = edgetax[edgenum]; partond = grafptr->parttax[vertend] ^ swapval; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; for (hashend = (vertend * BGRAPHBIPARTFMHASHPRIME) & hashmsk; ; hashend = (hashend + 1) & hashmsk) { if (hashtab[hashend].vertnum == vertend) { /* If end vertex found */ partend = hashtab[hashend].partval; break; } if (hashtab[hashend].vertnum == ~0) { /* If end vertex not present */ partend = partond; /* Keep old end part */ break; } } partdlt = partval ^ partend; commcut += partdlt; commgain += (1 - 2 * partdlt) * edloval; commloaddlttmp += (partdlt - (partold ^ partond)) * edloval; /* Will account twice for difference of edge loads */ } if (commcut != hashtab[hashnum].commcut) { errorPrint ("bgraphBipartFmCheck: invalid vertex cut value"); return (1); } if ((commgain * domndist + commgainextn) != hashtab[hashnum].commgain) { errorPrint ("bgraphBipartFmCheck: invalid vertex communication gain value"); return (1); } } if ((compload0tmp - grafptr->compload0avg) != compload0dlt) { errorPrint ("bgraphBipartFmCheck: invalid computation load"); return (1); } if ((grafptr->commload + (commloaddlttmp / 2) * domndist) != (commload - commloadextndlttmp)) { errorPrint ("bgraphBipartFmCheck: invalid communication load"); return (1); } if (commgainextntmp != commgainextn) { errorPrint ("bgraphBipartFmCheck: invalid external communication gain"); return (1); } return (0); } #endif /* SCOTCH_DEBUG_BGRAPH3 */ scotch_6.0.9/src/libscotch/hgraph_order_hx.h0000644000302600021200000000566213465315041021345 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hx.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the halo graph block Approxi- **/ /** mate (Multiple) Minimum Degree and Fill **/ /** ordering routines. **/ /** **/ /** DATES : # Version 4.0 : from : 24 jan 2004 **/ /** to 24 jan 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 03 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ void hgraphOrderHxFill (const Hgraph * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); scotch_6.0.9/src/libscotch/dgraph_band.c0000644000302600021200000006030513560005435020420 0ustar pelegrinpelegrin/* Copyright 2007-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_band.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a distributed band **/ /** graph from the given frontier array. **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 03 apr 2012 **/ /** to : 22 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** vdgraph_separate_bd.c in version 5.0. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_BAND #include "module.h" #include "common.h" #include "dgraph.h" /**********************************/ /* */ /* Distance computation routines. */ /* */ /**********************************/ #define DGRAPHBANDGROWNAME dgraphBand2 #define DGRAPHBANDGROWEDGE(n) bandedgelocnbr += vendloctax[n] - vertloctax[n] #define DGRAPHBANDGROWENQ1 do { \ Gnum queulocnum; \ for (queulocnum = 0; queulocnum < queulocnbr; queulocnum ++) { \ Gnum vertlocnum; \ \ vertlocnum = queuloctab[queulocnum]; \ vnumgsttax[vertlocnum] = bandvertlocnnd ++; \ DGRAPHBANDGROWEDGE (vertlocnum); \ } \ } while (0) #define DGRAPHBANDGROWENQ2 bandvertlocnnd ++ #define DGRAPHBANDGROWENQ3 /* Nothing more to send */ #define DGRAPHBANDGROWENQ4 bandvertlocnnd ++ #define DGRAPHBANDGROWSMUL(n) (n) #include "dgraph_band_grow.h" #include "dgraph_band_grow.c" #undef DGRAPHBANDGROWNAME #undef DGRAPHBANDGROWEDGE #undef DGRAPHBANDGROWENQU #undef DGRAPHBANDGROWSMUL /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a distributed index array ** of given width around the current separator. ** It returns: ** - 0 : if the index array could be computed. ** - !0 : on error. */ int dgraphBand ( Dgraph * restrict const grafptr, /*+ Distributed graph +*/ const Gnum fronlocnbr, /*+ Number of frontier vertices +*/ Gnum * restrict const fronloctab, /*+ Array of frontier vertices, re-used as queue array +*/ const GraphPart * restrict const partgsttax, /*+ Part array for original graph ({0,1} or {0,1,2}) +*/ const Gnum complocload0, /*+ Load in part 0 or {0,2} +*/ const Gnum complocload1, /*+ Load in part 1 +*/ Gnum distmax, /*+ Maximum distance from separator vertices +*/ Dgraph * restrict const bandgrafptr, /*+ Pointer to band graph structure to fill +*/ Gnum * restrict * const bandfronlocptr, /*+ Pointer to bandfronloctab +*/ GraphPart * restrict * const bandpartgstptr, /*+ Pointer to bandpartgsttax +*/ Gnum * const bandvertlvlptr, /*+ Pointer to based start index of last level +*/ Gnum * const bandvertlocptr1, /*+ Pointer to number of band vertices in part 1 +*/ Gnum * const bandvertlocancptr) /*+ Pointer to flag set if anchor vertices overloaded +*/ { Gnum bandvertlocnnd; /* End of local band vertex array, (without anchor vertices) */ Gnum bandvertlocnbr; /* Number of local band vertices (including anchor vertices) */ Gnum bandvertlocnbr1; /* Number of band graph vertices in part 1 except anchor 1 */ Gnum bandvertlvlnum; /* Index of first band vertex belonging to last level */ Gnum * restrict bandvertloctax; Gnum bandvertlocadj; /* Ajust value for local-to-global band vertex indices */ Gnum bandvertlocancadj; /* Flag set when anchor(s) represent unexistent vertices */ Gnum bandvertlocnum; Gnum bandvelolocsum; Gnum bandvelolocsum1; Gnum * restrict bandedgeloctax; Gnum bandedgelocnum; Gnum bandedgeloctmp; Gnum bandedgelocnbr; /* Number of local edges in band graph */ Gnum * restrict bandedloloctax; Gnum bandedlolocnbr; /* Size of local band edge load array */ Gnum * restrict bandfronloctab; GraphPart * restrict bandpartgsttax; Gnum bandvnumgstsiz; Gnum * restrict bandvnumgsttax; /* Indices of selected band vertices in band graph */ Gnum banddegrlocmax; Gnum degrval; Gnum veloval; const Gnum * restrict edgegsttax; Gnum fronlocnum; int cheklocval; int procngbnum; if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("dgraphBand: cannot compute ghost edge array"); return (1); } cheklocval = 0; bandvnumgstsiz = MAX ((grafptr->vertgstnbr * sizeof (Gnum)), (grafptr->procglbnbr * sizeof (int))); /* TRICK: re-use array for further error collective communications */ if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) /* Error will be propagated by dgraphBand2*() */ errorPrint ("dgraphBand: out of memory (1)"); else { memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ bandvnumgsttax -= grafptr->baseval; } if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBand2Ptop : dgraphBand2Coll) (grafptr, fronlocnbr, fronloctab, distmax, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocnbr) != 0) { if (bandvnumgsttax != NULL) memFree (bandvnumgsttax + grafptr->baseval); return (1); } if (bandvertlvlptr != NULL) *bandvertlvlptr = bandvertlvlnum; bandedgelocnbr += 2 * ((bandvertlocnbr + grafptr->baseval - bandvertlvlnum) + (grafptr->procglbnbr - 1)); /* Add edges to and from anchors */ bandvertlocnbr += 2; /* Add anchor vertices */ bandedlolocnbr = (grafptr->edloloctax != NULL) ? bandedgelocnbr : 0; dgraphInit (bandgrafptr, grafptr->proccomm); bandgrafptr->flagval = (DGRAPHFREEALL ^ DGRAPHFREECOMM) | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* Arrays created by the routine itself */ bandgrafptr->baseval = grafptr->baseval; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &bandgrafptr->procdsptab, (size_t) ((grafptr->procglbnbr + 1) * sizeof (Gnum)), &bandgrafptr->proccnttab, (size_t) (grafptr->procglbnbr * sizeof (Gnum)), &bandgrafptr->procngbtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procrcvtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procsndtab, (size_t) (grafptr->procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphBand: out of memory (2)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &bandgrafptr->vertloctax, (size_t) ((bandvertlocnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &bandgrafptr->vnumloctax, (size_t) (bandvertlocnbr * sizeof (Gnum)), &bandgrafptr->veloloctax, (size_t) (bandvertlocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphBand: out of memory (3)"); cheklocval = 1; } else if (bandgrafptr->vertloctax -= bandgrafptr->baseval, bandgrafptr->veloloctax -= bandgrafptr->baseval, bandgrafptr->vnumloctax -= bandgrafptr->baseval, (memAllocGroup ((void **) (void *) &bandedgeloctax, (size_t) (bandedgelocnbr * sizeof (Gnum)), &bandedloloctax, (size_t) (bandedlolocnbr * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("dgraphBand: out of memory (4)"); cheklocval = 1; } else { bandedgeloctax -= bandgrafptr->baseval; bandedloloctax = (grafptr->edloloctax != NULL) ? (bandedloloctax - bandgrafptr->baseval) : NULL; if ((bandfronloctab = memAlloc (bandvertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("dgraphBand: out of memory (5)"); cheklocval = 1; } else if ((bandpartgsttax = memAlloc ((bandvertlocnbr + bandedgelocnbr) * sizeof (GraphPart))) == NULL) { /* Upper bound on number of ghost vertices */ errorPrint ("dgraphBand: out of memory (6)"); cheklocval = 1; } else bandpartgsttax -= bandgrafptr->baseval; } if (cheklocval != 0) { /* In case of memory error */ bandgrafptr->procdsptab[0] = -1; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, /* Send received data to dummy array */ bandvnumgsttax + bandgrafptr->baseval, 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphBand: communication error (2)"); return (1); } if (bandfronloctab != NULL) memFree (bandfronloctab); dgraphFree (bandgrafptr); memFree (bandvnumgsttax + bandgrafptr->baseval); return (1); } else { bandgrafptr->procdsptab[0] = bandvertlocnbr; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, &bandgrafptr->procdsptab[1], 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphBand: communication error (3)"); return (1); } } bandgrafptr->procdsptab[0] = bandgrafptr->baseval; /* Build vertex-to-process array */ #ifdef SCOTCH_DEBUG_DGRAPH2 memSet (bandgrafptr->vnumloctax + bandgrafptr->baseval, ~0, (bandvertlocnbr * sizeof (Gnum))); #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (procngbnum = 1; procngbnum <= grafptr->procglbnbr; procngbnum ++) { /* Process potential error flags from other processes */ if (bandgrafptr->procdsptab[procngbnum] < 0) { /* If error notified by another process */ if (bandpartgsttax != NULL) memFree (bandpartgsttax + bandgrafptr->baseval); if (bandfronloctab != NULL) memFree (bandfronloctab); dgraphFree (bandgrafptr); memFree (bandvnumgsttax + bandgrafptr->baseval); return (1); } bandgrafptr->procdsptab[procngbnum] += bandgrafptr->procdsptab[procngbnum - 1]; bandgrafptr->proccnttab[procngbnum - 1] = bandgrafptr->procdsptab[procngbnum] - bandgrafptr->procdsptab[procngbnum - 1]; } for (fronlocnum = 0, bandvertlocnum = bandgrafptr->baseval, bandvertlocadj = bandgrafptr->procdsptab[grafptr->proclocnum] - bandgrafptr->baseval; fronlocnum < fronlocnbr; fronlocnum ++, bandvertlocnum ++) { /* Turn all graph frontier vertices into band frontier vertices */ Gnum vertlocnum; bandfronloctab[fronlocnum] = bandvertlocnum; /* All frontier vertices are first vertices of band graph */ vertlocnum = fronloctab[fronlocnum]; bandgrafptr->vnumloctax[bandvertlocnum] = vertlocnum; bandvnumgsttax[vertlocnum] += bandvertlocadj; /* Turn local indices in band graph into global indices */ } for (bandvertlocnnd = bandvertlocnbr + bandgrafptr->baseval - 2; /* Pick selected band vertices from rest of frontier array without anchors */ bandvertlocnum < bandvertlocnnd; fronlocnum ++, bandvertlocnum ++) { Gnum vertlocnum; vertlocnum = fronloctab[fronlocnum]; bandgrafptr->vnumloctax[bandvertlocnum] = vertlocnum; bandvnumgsttax[vertlocnum] += bandvertlocadj; /* Turn local indices in band graph into global indices */ } bandgrafptr->vnumloctax[bandvertlocnnd] = /* Prevent Valgrind from yelling when centralizing band graphs */ bandgrafptr->vnumloctax[bandvertlocnnd + 1] = -1; if (dgraphHaloSync (grafptr, (byte *) (bandvnumgsttax + bandgrafptr->baseval), GNUM_MPI) != 0) { /* Share global indexing of halo vertices */ errorPrint ("dgraphBand: cannot perform halo exchange"); return (1); } edgegsttax = grafptr->edgegsttax; veloval = 1; bandvertloctax = bandgrafptr->vertloctax; bandvertlocnbr1 = 0; bandvelolocsum = 0; bandvelolocsum1 = 0; banddegrlocmax = 0; for (bandvertlocnum = bandedgelocnum = bandgrafptr->baseval; /* Build global vertex array of band graph */ bandvertlocnum < bandvertlvlnum; bandvertlocnum ++) { /* For all vertices that do not belong to the last level */ Gnum vertlocnum; Gnum edgelocnum; Gnum degrval; GraphPart partval; Gnum partval1; vertlocnum = bandgrafptr->vnumloctax[bandvertlocnum]; partval = partgsttax[vertlocnum]; #ifdef SCOTCH_DEBUG_DGRAPH2 if (partval > 2) { errorPrint ("dgraphBand: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ partval1 = partval & 1; bandvertlocnbr1 += partval1; /* Count vertices in part 1 */ bandpartgsttax[bandvertlocnum] = partval; bandvertloctax[bandvertlocnum] = bandedgelocnum; if (grafptr->veloloctax != NULL) { veloval = grafptr->veloloctax[vertlocnum]; bandvelolocsum += veloval; bandvelolocsum1 += veloval & (- partval1); /* Sum vertex load if (partval == 1) */ } bandgrafptr->veloloctax[bandvertlocnum] = veloval; degrval = grafptr->vendloctax[vertlocnum] - grafptr->vertloctax[vertlocnum]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; for (edgelocnum = grafptr->vertloctax[vertlocnum]; /* For all original edges */ edgelocnum < grafptr->vendloctax[vertlocnum]; edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (bandvnumgsttax[edgegsttax[edgelocnum]] == ~0) { /* All ends should belong to the band graph too */ errorPrint ("dgraphBand: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ bandedgeloctax[bandedgelocnum ++] = bandvnumgsttax[edgegsttax[edgelocnum]]; } } for ( ; bandvertlocnum < bandvertlocnnd; bandvertlocnum ++) { /* For all vertices that belong to the last level except anchors */ Gnum vertlocnum; Gnum edgelocnum; Gnum degrval; GraphPart partval; Gnum partval1; vertlocnum = bandgrafptr->vnumloctax[bandvertlocnum]; partval = partgsttax[vertlocnum]; #ifdef SCOTCH_DEBUG_DGRAPH2 if (partval > 2) { errorPrint ("dgraphBand: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ partval1 = partval & 1; bandvertlocnbr1 += partval1; /* Count vertices in part 1 */ bandpartgsttax[bandvertlocnum] = partval; bandvertloctax[bandvertlocnum] = bandedgelocnum; if (grafptr->veloloctax != NULL) { veloval = grafptr->veloloctax[vertlocnum]; bandvelolocsum += veloval; bandvelolocsum1 += veloval & (- partval1); /* Sum vertex load if (partval == 1) */ } bandgrafptr->veloloctax[bandvertlocnum] = veloval; for (edgelocnum = grafptr->vertloctax[vertlocnum]; /* For all original edges */ edgelocnum < grafptr->vendloctax[vertlocnum]; edgelocnum ++) { Gnum bandvertlocend; bandvertlocend = bandvnumgsttax[edgegsttax[edgelocnum]]; if (bandvertlocend != ~0) { /* If end vertex belongs to band graph */ if (bandedloloctax != NULL) /* If graph has edge weights, copy load */ bandedloloctax[bandedgelocnum] = grafptr->edloloctax[edgelocnum]; bandedgeloctax[bandedgelocnum ++] = bandvertlocend; } } if (bandedloloctax != NULL) /* If graph has edge weights */ bandedloloctax[bandedgelocnum] = 1; /* Edge to anchor has load 1 */ bandedgeloctax[bandedgelocnum ++] = bandvertlocnnd + bandvertlocadj + partval1; /* Add edge to anchor of proper part */ degrval = bandedgelocnum - bandvertloctax[bandvertlocnum]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; } memFree (bandvnumgsttax + bandgrafptr->baseval); /* Free useless space */ bandpartgsttax[bandvertlocnnd] = 0; /* Set parts of anchor vertices */ bandpartgsttax[bandvertlocnnd + 1] = 1; bandvertloctax[bandvertlocnum] = bandedgelocnum; /* Process anchor vertex in part 0 */ for (procngbnum = 0; procngbnum < grafptr->proclocnum; procngbnum ++) /* Build clique with anchors of part 0 */ bandedgeloctax[bandedgelocnum ++] = bandgrafptr->procdsptab[procngbnum + 1] - 2; for (procngbnum ++; procngbnum < grafptr->procglbnbr; procngbnum ++) /* Build clique with anchors of part 0 */ bandedgeloctax[bandedgelocnum ++] = bandgrafptr->procdsptab[procngbnum + 1] - 2; bandedgeloctmp = bandedgelocnum + (bandvertlocnnd - bandvertlvlnum); for (procngbnum = 0; procngbnum < grafptr->proclocnum; procngbnum ++) /* Build clique with anchors of part 1 */ bandedgeloctax[bandedgeloctmp ++] = bandgrafptr->procdsptab[procngbnum + 1] - 1; for (procngbnum ++; procngbnum < grafptr->procglbnbr; procngbnum ++) /* Build clique with anchors of part 1 */ bandedgeloctax[bandedgeloctmp ++] = bandgrafptr->procdsptab[procngbnum + 1] - 1; bandvertloctax[bandvertlocnnd + 2] = bandedgeloctmp; bandedgelocnbr = bandedgeloctmp - bandgrafptr->baseval; /* Set real number of edges */ for (bandvertlocnum = bandvertlvlnum, bandedgeloctmp = bandedgelocnum + (bandvertlocnnd - bandvertlvlnum); /* Link vertices of last level to anchors */ bandvertlocnum < bandvertlocnnd; bandvertlocnum ++) { if (bandpartgsttax[bandvertlocnum] == 0) bandedgeloctax[bandedgelocnum ++] = bandvertlocnum + bandvertlocadj; else bandedgeloctax[-- bandedgeloctmp] = bandvertlocnum + bandvertlocadj; } bandvertloctax[bandvertlocnnd + 1] = bandedgeloctmp; degrval = bandvertloctax[bandvertlocnnd + 1] - bandvertloctax[bandvertlocnnd]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; degrval = bandvertloctax[bandvertlocnnd + 2] - bandvertloctax[bandvertlocnnd + 1]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; if (bandedloloctax != NULL) { /* If graph has edge weights */ Gnum edgelocnum; Gnum edgelocnnd; for (bandvertlocnum = bandgrafptr->baseval; /* For all vertices that do not belong to the last level */ bandvertlocnum < bandvertlvlnum; bandvertlocnum ++) { Gnum vertlocnum; Gnum bandedgelocnum; vertlocnum = bandgrafptr->vnumloctax[bandvertlocnum]; bandedgelocnum = bandvertloctax[bandvertlocnum]; memCpy (bandedloloctax + bandedgelocnum, /* Copy edge load array */ &grafptr->edloloctax[grafptr->vertloctax[vertlocnum]], (bandvertloctax[bandvertlocnum + 1] - bandedgelocnum) * sizeof (Gnum)); } /* Vertices of last level have been processed before */ for (edgelocnum = bandvertloctax[bandvertlocnnd], /* Loads of anchor edges are all 1's too */ edgelocnnd = bandvertloctax[bandvertlocnnd + 2]; edgelocnum < edgelocnnd; edgelocnum ++) bandedloloctax[edgelocnum] = 1; } if (grafptr->veloloctax == NULL) { /* If original graph is not weighted */ bandgrafptr->veloloctax[bandvertlocnnd] = complocload0 + bandvertlocnbr1 - bandvertlocnbr + 2; /* Plus 2 for anchors */ bandgrafptr->veloloctax[bandvertlocnnd + 1] = complocload1 - bandvertlocnbr1; } else { bandgrafptr->veloloctax[bandvertlocnnd] = complocload0 + bandvelolocsum1 - bandvelolocsum; bandgrafptr->veloloctax[bandvertlocnnd + 1] = complocload1 - bandvelolocsum1; } bandvertlocancadj = 0; if ((bandgrafptr->veloloctax[bandvertlocnnd] == 0) || /* If at least one anchor is empty */ (bandgrafptr->veloloctax[bandvertlocnnd + 1] == 0)) { bandvertlocancadj = 1; bandgrafptr->veloloctax[bandvertlocnnd] ++; /* Increase weight of both anchors to keep balance */ bandgrafptr->veloloctax[bandvertlocnnd + 1] ++; } bandgrafptr->procvrttab = bandgrafptr->procdsptab; /* Graph does not have holes */ bandgrafptr->vertlocnbr = bandvertlocnbr; bandgrafptr->vertlocnnd = bandvertlocnbr + bandgrafptr->baseval; bandgrafptr->vendloctax = bandvertloctax + 1; /* Band graph is compact */ bandgrafptr->velolocsum = grafptr->velolocsum + 2 * bandvertlocancadj; bandgrafptr->edgeloctax = bandedgeloctax; bandgrafptr->edloloctax = bandedloloctax; bandgrafptr->edgelocnbr = bandedgelocnbr; bandgrafptr->edgelocsiz = bandedgelocnbr; bandgrafptr->degrglbmax = banddegrlocmax; /* Local maximum degree will be turned into global maximum degree */ if (dgraphBuild4 (bandgrafptr) != 0) { errorPrint ("dgraphBand: cannot build band graph"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (bandgrafptr) != 0) { errorPrint ("dgraphBand: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ *bandfronlocptr = bandfronloctab; *bandpartgstptr = bandpartgsttax; *bandvertlocptr1 = bandvertlocnbr1; *bandvertlocancptr = bandvertlocancadj; return (0); } scotch_6.0.9/src/libscotch/arch_cmpltw.c0000644000302600021200000004131213560005302020460 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_cmpltw.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the weighted **/ /** complete graph target architecture. **/ /** **/ /** DATES : # Version 5.1 : from : 11 dec 2007 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 12 apr 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_CMPLTW #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "arch_cmpltw.h" /******************************************/ /* */ /* These are the complete graph routines. */ /* */ /******************************************/ /* This routine builds a complete weighted ** graph architecture from the given load array. ** The load array is sorted recursively in such ** a way that recusive bipartitions of subdomains ** yield parts that are not too much imbalanced. ** It returns: ** - 0 : if the architecture has been successfully built. ** - !0 : on error. */ static void archCmpltwArchBuild3 ( ArchCmpltwLoad * restrict const velotab, ArchCmpltwLoad * restrict const vesotab, Anum vertnbr, Anum velosum) { Anum velosum0; Anum velosum1; Anum vertnbr0; Anum vertnbr1; Anum vertnum0; Anum vertnum1; Anum vertnum; vertnum0 = vertnum1 = vertnbr - 1; velosum0 = velotab[vertnum0 --].veloval; velosum1 = 0; for (vertnum = vertnum0; vertnum >= 0; vertnum --) { if (velosum1 < velosum0) { velosum1 += velotab[vertnum].veloval; vesotab[vertnum1 --] = velotab[vertnum]; } else { velosum0 += velotab[vertnum].veloval; velotab[vertnum0 --] = velotab[vertnum]; } } if (velosum0 >= velosum1) { vertnbr0 = vertnbr - vertnum0 - 1; vertnbr1 = vertnbr - vertnbr0; memMov (velotab, velotab + vertnbr1, vertnbr0 * sizeof (ArchCmpltwLoad)); memCpy (velotab + vertnbr0, vesotab + vertnbr0, vertnbr1 * sizeof (ArchCmpltwLoad)); } else { Anum velotmp; vertnbr0 = vertnbr - vertnum1 - 1; vertnbr1 = vertnbr - vertnbr0; memCpy (velotab, vesotab + vertnbr1, vertnbr0 * sizeof (ArchCmpltwLoad)); velotmp = velosum0; velosum0 = velosum1; velosum1 = velotmp; } if (vertnbr0 > 2) archCmpltwArchBuild3 (velotab, vesotab, vertnbr0, velosum0); if (vertnbr1 > 2) archCmpltwArchBuild3 (velotab + vertnbr0, vesotab + vertnbr0, vertnbr1, velosum1); } static int archCmpltwArchBuild2 ( ArchCmpltw * restrict const archptr) { ArchCmpltwLoad * restrict vesotab; /* Auxiliary sort array for weighted vertices */ if (archptr->vertnbr < 3) /* No need to sort if less than 3 vertices */ return (0); if ((vesotab = (ArchCmpltwLoad *) memAlloc (archptr->vertnbr * sizeof (ArchCmpltwLoad))) == NULL) { errorPrint ("archCmpltwArchBuild2: out of memory"); memFree (archptr->velotab); archptr->velotab = NULL; return (1); } intSort2asc2 (archptr->velotab, archptr->vertnbr); /* Sort load array by both keys to be portable across sorting implementations */ archCmpltwArchBuild3 (archptr->velotab, vesotab, archptr->vertnbr, archptr->velosum); memFree (vesotab); return (0); } int archCmpltwArchBuild ( ArchCmpltw * restrict const archptr, const Anum vertnbr, const Anum * restrict const velotab) { Anum vertnum; Anum velosum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmpltw) > sizeof (ArchDummy)) || (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltwArchBuild: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (vertnbr <= 0) { errorPrint ("archCmpltwArchBuild: invalid parameters"); return (1); } archptr->vertnbr = (Anum) vertnbr; if ((archptr->velotab = (ArchCmpltwLoad *) memAlloc (archptr->vertnbr * sizeof (ArchCmpltwLoad))) == NULL) { errorPrint ("archCmpltwArchBuild: out of memory"); return (1); } for (vertnum = 0, velosum = 0; vertnum < archptr->vertnbr; vertnum ++) { /* Fill vertex load array */ Anum veloval; veloval = velotab[vertnum]; velosum += veloval; archptr->velotab[vertnum].veloval = veloval; archptr->velotab[vertnum].vertnum = vertnum; } archptr->velosum = (Anum) velosum; return (archCmpltwArchBuild2 (archptr)); } /* This routine loads the weighted complete ** graph architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archCmpltwArchLoad ( ArchCmpltw * restrict const archptr, FILE * restrict const stream) { long vertnbr; Anum velosum; Anum vertnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmpltw) > sizeof (ArchDummy)) || (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltwArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((fscanf (stream, "%ld", &vertnbr) != 1) || (vertnbr < 1)) { errorPrint ("archCmpltwArchLoad: bad input (1)"); return (1); } archptr->vertnbr = (Anum) vertnbr; if ((archptr->velotab = (ArchCmpltwLoad *) memAlloc (archptr->vertnbr * sizeof (ArchCmpltwLoad))) == NULL) { errorPrint ("archCmpltwArchLoad: out of memory"); return (1); } for (vertnum = 0, velosum = 0; vertnum < archptr->vertnbr; vertnum ++) { long veloval; Anum velotmp; if ((fscanf (stream, "%ld", &veloval) != 1) || (veloval < 1)) { errorPrint ("archCmpltwArchLoad: bad input (2)"); return (1); } velotmp = (Anum) veloval; velosum += velotmp; archptr->velotab[vertnum].veloval = velotmp; archptr->velotab[vertnum].vertnum = vertnum; } archptr->velosum = (Anum) velosum; return (archCmpltwArchBuild2 (archptr)); } /* This routine saves the weighted ** complete graph architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archCmpltwArchSave ( const ArchCmpltw * const archptr, FILE * restrict const stream) { Anum vertnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmpltw) > sizeof (ArchDummy)) || (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltwArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING, (Anum) archptr->vertnbr) == EOF) { errorPrint ("archCmpltwArchSave: bad output (1)"); return (1); } for (vertnum = 0; vertnum < archptr->vertnbr; vertnum ++) { /* For all weights to output */ Anum verttmp; for (verttmp = 0; verttmp < archptr->vertnbr; verttmp ++) { /* For all vertex indices: O(n^2) loop but we don't really care */ if (archptr->velotab[verttmp].vertnum == vertnum) { if (fprintf (stream, " " ANUMSTRING, (Anum) archptr->velotab[verttmp].veloval) == EOF) { errorPrint ("archCmpltwArchSave: bad output (2)"); return (1); } break; } if (verttmp == archptr->vertnbr) { errorPrint ("archCmpltwArchSave: internal error"); return (1); } } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archCmpltwArchSave: bad output (3)"); return (1); } return (0); } /* This routine frees the weighted complete ** graph architecture data structures. ** It returns: ** - 0 : if the architecture has been successfully freed. ** - !0 : on error. */ int archCmpltwArchFree ( ArchCmpltw * const archptr) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmpltw) > sizeof (ArchDummy)) || (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltwArchFree: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (archptr->velotab != NULL) { memFree (archptr->velotab); archptr->velotab = NULL; } return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archCmpltwDomNum ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const domnptr) { return (archptr->velotab[domnptr->vertmin].vertnum); /* Return vertex number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archCmpltwDomTerm ( const ArchCmpltw * const archptr, ArchCmpltwDom * const domnptr, const ArchDomNum domnnum) { if (domnnum < archptr->vertnbr) { /* If valid label */ Anum vertnum; for (vertnum = 0; vertnum < archptr->vertnbr; vertnum ++) { /* Search for terminal domain index matching vertex label */ if (archptr->velotab[vertnum].vertnum == domnnum) break; } #ifdef SCOTCH_DEBUG_ARCH2 if (vertnum == archptr->vertnbr) { /* If index not found */ errorPrint ("archCmpltwDomTerm: internal error"); return (2); } #endif /* SCOTCH_DEBUG_ARCH2 */ domnptr->vertmin = vertnum; /* Set the domain */ domnptr->vertnbr = 1; domnptr->veloval = archptr->velotab[vertnum].veloval; return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the complete domain. */ Anum archCmpltwDomSize ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const domnptr) { return (domnptr->vertnbr); } /* This function returns the weight of ** the complete domain. */ Anum archCmpltwDomWght ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const domnptr) { return (domnptr->veloval); } /* This function returns the average ** distance between two complete ** subdomains. */ Anum archCmpltwDomDist ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const dom0ptr, const ArchCmpltwDom * const dom1ptr) { return (((dom0ptr->vertmin == dom1ptr->vertmin) && /* All domains are at distance 1 */ (dom0ptr->vertnbr == dom1ptr->vertnbr)) ? 0 : 1); /* If they are different */ } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltwDomFrst ( const ArchCmpltw * const archptr, ArchCmpltwDom * restrict const domnptr) { domnptr->vertmin = 0; domnptr->vertnbr = archptr->vertnbr; domnptr->veloval = archptr->velosum; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltwDomLoad ( const ArchCmpltw * const archptr, ArchCmpltwDom * restrict const domnptr, FILE * const stream) { long vertmin; long vertnbr; Anum vertnum; Anum vertnnd; Anum velosum; if ((fscanf (stream, "%ld%ld", &vertmin, &vertnbr) != 2) || (vertnbr < 1) || (vertnbr + vertmin > (long) archptr->vertnbr)) { errorPrint ("archCmpltwDomLoad: bad input"); return (1); } domnptr->vertmin = (Anum) vertmin; domnptr->vertnbr = (Anum) vertnbr; for (vertnum = domnptr->vertmin, vertnnd = vertnum + domnptr->vertnbr, velosum = 0; vertnum < vertnnd; vertnum ++) velosum += archptr->velotab[vertnum].veloval; domnptr->veloval += velosum; return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltwDomSave ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", (Anum) domnptr->vertmin, (Anum) domnptr->vertnbr) == EOF) { errorPrint ("archCmpltwDomSave: bad output"); return (1); } return (0); } /* This function tries to split a complete ** graph domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archCmpltwDomBipart ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const domnptr, ArchCmpltwDom * restrict const dom0ptr, ArchCmpltwDom * restrict const dom1ptr) { Anum vertnum; Anum velosum1; Anum velosum2; /* Half of overall load sum */ if (domnptr->vertnbr <= 1) /* Return if cannot bipartition more */ return (1); vertnum = domnptr->vertmin + domnptr->vertnbr - 1; velosum1 = (Anum) archptr->velotab[vertnum].veloval; velosum2 = domnptr->veloval / 2; for (vertnum --; vertnum > domnptr->vertmin; vertnum --) { Anum velotmp; velotmp = velosum1 + (Anum) archptr->velotab[vertnum].veloval; if (velotmp > velosum2) /* Domain 1 is always the least loaded */ break; velosum1 = velotmp; } dom0ptr->vertmin = domnptr->vertmin; /* Bipartition vertices */ dom1ptr->vertmin = vertnum + 1; dom0ptr->vertnbr = dom1ptr->vertmin - domnptr->vertmin; dom1ptr->vertnbr = domnptr->vertnbr - dom0ptr->vertnbr; dom0ptr->veloval = domnptr->veloval - velosum1; dom1ptr->veloval = velosum1; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archCmpltwDomIncl ( const ArchCmpltw * const archptr, const ArchCmpltwDom * const dom0ptr, const ArchCmpltwDom * const dom1ptr) { if ((dom1ptr->vertmin >= dom0ptr->vertmin) && ((dom1ptr->vertmin + dom1ptr->vertnbr) <= (dom0ptr->vertmin + dom0ptr->vertnbr))) return (1); return (0); } /* This function creates the MPI_Datatype for ** weighted complete graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archCmpltwDomMpiType ( const ArchCmpltw * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (3, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/library_dgraph_order_io_f.c0000644000302600021200000001246613560013261023350 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_io_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed ordering I/O routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 26 jul 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ DGRAPHORDERSAVEMAP, dgraphordersavemap, ( \ const SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Dordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEMAP)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEMAP)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_dgraphOrderSaveMap (grafptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERSAVETREE, dgraphordersavetree, ( \ const SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Dordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVETREE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVETREE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_dgraphOrderSaveTree (grafptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/arch_hcub.c0000644000302600021200000003003113560005302020067 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_hcub.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the hypercube **/ /** target architecture. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 11 jun 1996 **/ /** to 11 jun 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 14 may 1998 **/ /** # Version 4.0 : from : 11 nov 2003 **/ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 02 may 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_HCUB #include "module.h" #include "common.h" #include "arch.h" #include "arch_hcub.h" /********************************************/ /* */ /* These are the binary hypercube routines. */ /* */ /********************************************/ /* This routine loads the binary ** hypercube architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archHcubArchLoad ( ArchHcub * restrict const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchHcub) > sizeof (ArchDummy)) || (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) { errorPrint ("archHcubArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->dimnnbr) != 1) || (archptr->dimnnbr < 1) || (archptr->dimnnbr > (sizeof (archptr->dimnnbr) << 3))) { errorPrint ("archHcubArchLoad: bad input"); return (1); } return (0); } /* This routine saves the ** binary hypercube architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archHcubArchSave ( const ArchHcub * const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchHcub) > sizeof (ArchDummy)) || (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) { errorPrint ("archHcubArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING "\n", (Anum) archptr->dimnnbr) == EOF) { errorPrint ("archHcubArchSave: bad output"); return (1); } return (0); } /* This routine initializes the matching ** data structure according to the number ** of vertices to be managed. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archHcubMatchInit ( ArchHcubMatch * restrict const matcptr, const ArchHcub * restrict const archptr) { Anum vertnbr; vertnbr = 1 << archptr->dimnnbr; if ((matcptr->multtab = memAlloc ((vertnbr >> 1) * sizeof (ArchCoarsenMulti))) == NULL) { /* Multinodes are half the number of vertices */ errorPrint ("archHcubMatchInit: out of memory"); return (1); } matcptr->vertnbr = vertnbr; return (0); } /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ void archHcubMatchExit ( ArchHcubMatch * restrict const matcptr) { memFree (matcptr->multtab); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ Anum archHcubMatchMate ( ArchHcubMatch * restrict const matcptr, ArchCoarsenMulti ** restrict const multptr) { ArchCoarsenMulti * restrict coarmulttab; Anum coarvertnbr; Anum coarvertnum; Anum finevertnum; coarvertnbr = matcptr->vertnbr >> 1; if (coarvertnbr <= 0) return (-1); coarmulttab = matcptr->multtab; for (coarvertnum = finevertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Dimensional splatting */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; } matcptr->vertnbr = coarvertnbr; /* Prepare for next mating */ *multptr = coarmulttab; /* Always provide same mating array */ return (coarvertnbr); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archHcubDomNum ( const ArchHcub * const archptr, const ArchHcubDom * const domnptr) { return (domnptr->bitsset); /* Return vertex number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archHcubDomTerm ( const ArchHcub * const archptr, ArchHcubDom * const domnptr, const ArchDomNum domnnum) { if (domnnum < (1 << archptr->dimnnbr)) { /* If valid label */ domnptr->dimncur = 0; /* Set the domain */ domnptr->bitsset = domnnum; return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the hypercube domain. */ Anum archHcubDomSize ( const ArchHcub * const archptr, const ArchHcubDom * const domnptr) { return (1 << domnptr->dimncur); } /* This function returns the average distance ** between two sub-hypercubes. */ Anum archHcubDomDist ( const ArchHcub * const archptr, const ArchHcubDom * const dom0ptr, const ArchHcubDom * const dom1ptr) { Anum i, j, k; if (dom0ptr->dimncur > dom1ptr->dimncur) { /* Get smallest set dimension value */ i = dom0ptr->dimncur; j = i - dom1ptr->dimncur; } else { i = dom1ptr->dimncur; j = i - dom0ptr->dimncur; } j /= 2; /* For set/unset bits, assume 1/2 difference */ for (k = (dom0ptr->bitsset ^ dom1ptr->bitsset) >> i, i = archptr->dimnnbr - i; i > 0; k >>= 1, i --) j += (k & 1); /* Add Hamming difference on set dimensions */ return (j); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archHcubDomFrst ( const ArchHcub * const archptr, ArchHcubDom * restrict const domnptr) { domnptr->dimncur = archptr->dimnnbr; domnptr->bitsset = 0; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archHcubDomLoad ( const ArchHcub * const archptr, ArchHcubDom * restrict const domnptr, FILE * restrict const stream) { if ((intLoad (stream, &domnptr->dimncur) != 1) || (intLoad (stream, &domnptr->bitsset) != 1) || (domnptr->dimncur > archptr->dimnnbr)) { errorPrint ("archHcubDomLoad: bad input"); return (1); } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archHcubDomSave ( const ArchHcub * const archptr, const ArchHcubDom * const domnptr, FILE * restrict const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", (Anum) domnptr->dimncur, (Anum) domnptr->bitsset) == EOF) { errorPrint ("archHcubDomSave: bad output"); return (1); } return (0); } /* This function tries to split a hypercube ** domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archHcubDomBipart ( const ArchHcub * const archptr, const ArchHcubDom * const domnptr, ArchHcubDom * restrict const dom0ptr, ArchHcubDom * restrict const dom1ptr) { if (domnptr->dimncur <= 0) /* Return if cannot bipartition more */ return (1); dom0ptr->dimncur = dom1ptr->dimncur = domnptr->dimncur - 1; dom0ptr->bitsset = domnptr->bitsset; dom1ptr->bitsset = domnptr->bitsset | (1 << dom1ptr->dimncur); return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archHcubDomIncl ( const ArchHcub * const archptr, const ArchHcubDom * const dom0ptr, const ArchHcubDom * const dom1ptr) { if ((dom0ptr->dimncur >= dom1ptr->dimncur) && (((dom0ptr->bitsset ^ dom1ptr->bitsset) >> dom0ptr->dimncur) == 0)) return (1); return (0); } /* This function creates the MPI_Datatype for ** hypercube domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archHcubDomMpiType ( const ArchHcub * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/hgraph_induce.c0000644000302600021200000003623713470115365021002 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo source **/ /** graph subgraph-making functions. **/ /** **/ /** DATES : # Version 4.0 : from : 02 jan 2002 **/ /** to 25 feb 2004 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 11 jun 2008 **/ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 27 mar 2012 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH #define HGRAPH_INDUCE #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" #include "hgraph_induce.h" /*********************************************/ /* */ /* These routines handle halo source graphs. */ /* */ /*********************************************/ /* This routine builds the graph induced ** by the original graph and the list of ** selected vertices. ** The induced vnumtab array is the list ** array if the original graph does not have ** a vnumtab, or the proper subset of the ** original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hgraphInduceList ( const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ const Gnum indvnumnbr, const Gnum * restrict const indvnumtab, const Gnum indhalonbr, /* Upper bound of number of vertices in halo */ Hgraph * restrict const indgrafptr) /* Pointer to induced subgraph */ { Gnum * restrict orgindxtax; /* Original to induced vertex number translation */ Gnum * restrict indedgetab; /* Origin of induced graph edge arrays */ Gnum indvertnbr; /* Number of vertices in induced graph */ Gnum indvertnum; /* Number of current vertex in induced graph */ Gnum indvelosiz; Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ Gnum indedgesiz; /* (Approximate) size of edge and edge load arrays */ memSet (indgrafptr, 0, sizeof (Hgraph)); /* Pre-initialize graph fields */ indgrafptr->s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; indgrafptr->s.baseval = orggrafptr->s.baseval; indvertnbr = indvnumnbr + indhalonbr; /* Compute upper bound on number of vertices */ indvelosiz = (orggrafptr->s.velotax != NULL) ? indvertnbr : 0; if (memAllocGroup ((void **) (void *) &indgrafptr->s.verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indgrafptr->vnhdtax, (size_t) ( indvnumnbr * sizeof (Gnum)), /* Put closest to beginning of array because no padding after */ &indgrafptr->s.velotax, (size_t) ( indvelosiz * sizeof (Gnum)), &indgrafptr->s.vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hgraphInduceList: out of memory (1)"); /* Allocate induced graph structure */ return (1); } memCpy (indgrafptr->s.vnumtax, indvnumtab, indvnumnbr * sizeof (Gnum)); /* Copy vertex number array from list */ indgrafptr->s.velotax = (orggrafptr->s.velotax != NULL) ? (indgrafptr->s.velotax - indgrafptr->s.baseval) : NULL; indgrafptr->s.verttax -= indgrafptr->s.baseval; indgrafptr->s.vnumtax -= indgrafptr->s.baseval; indgrafptr->vnhdtax -= indgrafptr->s.baseval; indgrafptr->vnohnbr = indvnumnbr; indgrafptr->vnohnnd = indvnumnbr + indgrafptr->s.baseval; indedgenbr = ((orggrafptr->s.degrmax > 0) && (indvertnbr < (orggrafptr->s.edgenbr / orggrafptr->s.degrmax))) /* Choose best upper bound on number of edges (avoid multiply overflow) */ ? (indvertnbr * orggrafptr->s.degrmax) : orggrafptr->s.edgenbr; indedgesiz = (orggrafptr->s.edlotax != NULL) ? indedgenbr * 2 : indedgenbr; /* Account for edge load array size if graph has edge weights */ if (memAllocGroup ((void **) (void *) /* If cannot allocate edge arrays with approximation */ &indedgetab, (size_t) (indedgesiz * sizeof (Gnum)), &orgindxtax, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { indedgenbr = hgraphInduce3 (orggrafptr, indvnumnbr, indvnumtab); /* Count real number of edges */ indedgesiz = (orggrafptr->s.edlotax != NULL) ? indedgenbr * 2 : indedgenbr; /* Account for edge load array size if graph has edge weights */ if ((indedgenbr < 0) || /* If cannot compute real number of edges */ (memAllocGroup ((void **) (void *) /* Or cannot allocate edge arrays with real values */ &indedgetab, (size_t) (indedgesiz * sizeof (Gnum)), &orgindxtax, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("hgraphInduceList: out of memory (2)"); hgraphExit (indgrafptr); return (1); } } memSet (orgindxtax, ~0, orggrafptr->s.vertnbr * sizeof (Gnum)); /* Preset index array */ orgindxtax -= orggrafptr->s.baseval; /* Base access to orgindxtab */ for (indvertnum = indgrafptr->s.baseval; indvertnum < indgrafptr->vnohnnd; indvertnum ++) /* For all non-halo vertices */ orgindxtax[indgrafptr->s.vnumtax[indvertnum]] = indvertnum; /* Mark selected vertices */ return (hgraphInduce2 (orggrafptr, orgindxtax, indgrafptr, indedgenbr, indedgetab)); } /* This routine finalizes the building of the ** halo graph induced by the original halo graph. ** Vertices belonging to the old halo remain to ** be numbered. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int hgraphInduce2 ( const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ Gnum * restrict const orgindxtax, /* Array of numbers of selected vertices */ Hgraph * restrict const indgrafptr, /* Pointer to induced graph */ const Gnum indedgenbr, /* (Approximate) number of edges in induced graph */ Gnum * restrict const indedgetab) /* Pointer to pre-allocated space for edge arrays */ { void * restrict indedgetnd; /* End of compacted edge array */ Gnum indvertnum; /* Current vertex number in induced halo graph */ indedgetnd = memOffset (indedgetab, &indgrafptr->s.edgetax, (size_t) (indedgenbr * sizeof (Gnum)), NULL); indgrafptr->s.edgetax = indedgetab - indgrafptr->s.baseval; #ifdef SCOTCH_DEBUG_HGRAPH2 if (indedgetnd > (void *) (orgindxtax + orggrafptr->s.baseval)) { errorPrint ("hgraphInduce2: invalid edge array size (1)"); hgraphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_HGRAPH2 */ if (orggrafptr->s.edlotax != NULL) { size_t indedlooftval; /* Offset of edge load array with respect to edge array */ indedgetnd = memOffset (indedgetnd, &indgrafptr->s.edlotax, (size_t) (indedgenbr * sizeof (Gnum)), NULL); indgrafptr->s.edlotax -= indgrafptr->s.baseval; #ifdef SCOTCH_DEBUG_HGRAPH2 if (indedgetnd > (void *) (orgindxtax + orggrafptr->s.baseval)) { errorPrint ("hgraphInduce2: invalid edge array size (2)"); hgraphExit (indgrafptr); /* Indedgetab is now freed as part of indgrafptr */ return (1); } #endif /* SCOTCH_DEBUG_HGRAPH2 */ hgraphInduce2L (orggrafptr, orgindxtax, indgrafptr); indedlooftval = indgrafptr->s.edlotax - indgrafptr->s.edgetax; memReallocGroup ((void *) indedgetab, /* Implicitely free orgindxtab */ &indgrafptr->s.edgetax, (size_t) (indedgenbr * sizeof (Gnum)), /* Keep first offset as estimated number of edges */ &indgrafptr->s.edlotax, (size_t) (indgrafptr->s.edgenbr * sizeof (Gnum)), /* Use real number of edges for second array */ NULL); indgrafptr->s.edgetax -= indgrafptr->s.baseval; indgrafptr->s.edlotax = indgrafptr->s.edgetax + indedlooftval; /* Use old index into old array as new index */ } else { hgraphInduce2U (orggrafptr, orgindxtax, indgrafptr); indgrafptr->s.edgetax = memRealloc ((void *) indedgetab, indgrafptr->s.edgenbr * sizeof (Gnum)); /* Use real number of edges, implicitely free orgindxtab */ indgrafptr->s.edgetax -= indgrafptr->s.baseval; } indgrafptr->s.vendtax = indgrafptr->s.verttax + 1; /* Use compact representation of arrays */ indgrafptr->levlnum = orggrafptr->levlnum + 1; /* Induced subgraph is one level below */ if (orggrafptr->s.vnumtax != NULL) { /* Adjust vnumtax */ const Gnum * restrict const orgvnumtax = orggrafptr->s.vnumtax; Gnum * restrict const indvnumtax = indgrafptr->s.vnumtax; for (indvertnum = indgrafptr->s.baseval; indvertnum < indgrafptr->s.vertnnd; indvertnum ++) indvnumtax[indvertnum] = orgvnumtax[indvnumtax[indvertnum]]; } #ifdef SCOTCH_DEBUG_HGRAPH2 if (hgraphCheck (indgrafptr) != 0) { /* Check graph consistency */ errorPrint ("hgraphInduce2: inconsistent graph data"); hgraphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_HGRAPH2 */ return (0); } #define HGRAPHINDUCE2U #define HGRAPHINDUCE2NAME hgraphInduce2U #define HGRAPHINDUCE2EDLOINIT(e) #define HGRAPHINDUCE2EDLOSUM indgrafptr->s.edgenbr #define HGRAPHINDUCE2ENOHINIT #define HGRAPHINDUCE2ENLOSUM indgrafptr->enohnbr #include "hgraph_induce_edge.c" #undef HGRAPHINDUCE2NAME #undef HGRAPHINDUCE2EDLOINIT #undef HGRAPHINDUCE2EDLOSUM #undef HGRAPHINDUCE2ENOHINIT #undef HGRAPHINDUCE2ENLOSUM #undef HGRAPHINDUCE2U #define HGRAPHINDUCE2L #define HGRAPHINDUCE2NAME hgraphInduce2L #define HGRAPHINDUCE2EDLOINIT(e) indedlosum += indedlotax[e] = orgedlotax[orgedgenum] #define HGRAPHINDUCE2EDLOSUM indedlosum #define HGRAPHINDUCE2ENOHINIT indenlosum += orgedlotax[orgedgenum] #define HGRAPHINDUCE2ENLOSUM indenlosum #include "hgraph_induce_edge.c" #undef HGRAPHINDUCE2NAME #undef HGRAPHINDUCE2EDLOINIT #undef HGRAPHINDUCE2EDLOSUM #undef HGRAPHINDUCE2ENOHINIT #undef HGRAPHINDUCE2ENLOSUM #undef HGRAPHINDUCE2L /* This routine computes the exact number of edges ** required to build the induced halo subgraph. It ** is used when larger approximations lead to an ** out-of-memory error message. As a side effect, ** yet unnumbered halo vertices of the induced ** subgraph are numbered and the induced halo graph ** data are updated accordingly. ** It returns: ** - >=0 : number of edges in induced halo graph. ** - -1 : if out of memory (this is helpless). */ static Gnum hgraphInduce3 ( const Hgraph * restrict const orggrafptr, /* Pointer to original graph */ const Gnum indvnumnbr, const Gnum * restrict const indvnumtab) { Gnum indedgenbr; /* Revised number of edges in induced halo graph */ Gnum indvertnum; /* Current vertex number in induced halo graph */ Gnum * restrict orgindxtax; /* Array of numbers of selected vertices */ const Gnum * restrict const orgverttax = orggrafptr->s.verttax; const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; if ((orgindxtax = memAlloc (orggrafptr->s.vertnbr * sizeof (Gnum))) == NULL) return (-1); memSet (orgindxtax, ~0, orggrafptr->s.vertnbr * sizeof (Gnum)); /* Preset index array */ orgindxtax -= orggrafptr->s.baseval; /* Base access to orgindxtab */ for (indvertnum = 0; indvertnum < indvnumnbr; indvertnum ++) /* For all vertices in list */ orgindxtax[indvnumtab[indvertnum]] = indvertnum; /* Mark selected vertices */ for (indvertnum = 0, indedgenbr = 0; /* For all vertices in list */ indvertnum < indvnumnbr; indvertnum ++) { Gnum orgvertnum; /* Current vertex number in original halo graph */ Gnum orgedgenum; /* Current edge number in original halo graph */ orgvertnum = indvnumtab[indvertnum]; /* Get number of original vertex */ indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Add degree of original vertex */ for (orgedgenum = orgverttax[orgvertnum]; /* For all neighbors of original halo vertex */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { if (orgindxtax[orgedgetax[orgedgenum]] == ~0) /* If neighbor is halo vertex */ indedgenbr ++; /* Account for the arc once more */ } } memFree (orgindxtax + orggrafptr->s.baseval); return (indedgenbr); } scotch_6.0.9/src/libscotch/library_graph_io_habo.c0000644000302600021200000000677513560013261022503 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_habo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Harwell- **/ /** Boeing geometry and graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 18 nov 2003 **/ /** to 19 jan 2004 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to 27 apr 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Harwell-Boeing geometry */ /* handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque geom *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomLoadHabo ( SCOTCH_Graph * restrict const grafptr, SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomLoadHabo ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } scotch_6.0.9/src/libscotch/bdgraph_bipart_df.c0000644000302600021200000004530513560005346021614 0ustar pelegrinpelegrin/* Copyright 2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_df.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a bipartition of **/ /** the given distributed separator graph **/ /** by applying a diffusion method to what **/ /** is assumed to be a distributed band **/ /** graph. **/ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2007 **/ /** to : 19 jul 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to : 31 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_DF #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "bdgraph.h" #include "bdgraph_bipart_df.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a distributed bipartition ** by diffusion across what is assumed to be a ** distributed band graph. ** It returns: ** - 0 : if the bipartition could be computed. ** - !0 : on error. */ int bdgraphBipartDf ( Bdgraph * const grafptr, /*+ Distributed graph +*/ const BdgraphBipartDfParam * const paraptr) /*+ Method parameters +*/ { float * restrict ielsloctax; /* Inverse of degree array */ float * restrict veexloctax; /* Veexval over domndist */ float * restrict difogsttax; /* Old diffusion value array */ float * restrict difngsttax; /* New diffusion value array */ const Gnum * restrict edgegsttax; Gnum fronlocnum; Gnum veexlocnbr; float vanclocval[2]; float valolocval[2]; /* Fraction of load to remove from anchor vertices at each step */ Gnum vanclocnnd; Gnum vertlocnum; Gnum complocload1; Gnum complocsize1; Gnum commlocloadintn; Gnum commlocloadextn; Gnum commlocgainextn; Gnum reduloctab[6]; Gnum reduglbtab[6]; Gnum passnum; float cdifval; float cremval; int ovflval; /* Overflow flag value */ const Gnum * restrict const veloloctax = grafptr->s.veloloctax; const Gnum * restrict const edloloctax = grafptr->s.edloloctax; if (dgraphGhst (&grafptr->s) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("bdgraphBipartDf: cannot compute ghost edge array"); return (1); } reduloctab[0] = grafptr->s.vendloctax[grafptr->s.vertlocnnd - 2] - grafptr->s.vertloctax[grafptr->s.vertlocnnd - 2] - (grafptr->s.procglbnbr - 1); /* Local degree of both anchor vertices, minus edges to other anchors */ reduloctab[1] = grafptr->s.vendloctax[grafptr->s.vertlocnnd - 1] - grafptr->s.vertloctax[grafptr->s.vertlocnnd - 1] - (grafptr->s.procglbnbr - 1); /* Anchor edges have load 1 even for weighted graphs */ if (grafptr->s.veloloctax == NULL) reduloctab[2] = /* Weights of anchors */ reduloctab[3] = 1; else { reduloctab[2] = grafptr->s.veloloctax[grafptr->s.vertlocnnd - 2]; reduloctab[3] = grafptr->s.veloloctax[grafptr->s.vertlocnnd - 1]; } veexlocnbr = (grafptr->veexloctax != NULL) ? grafptr->s.vertlocnbr : 0; if (memAllocGroup ((void **) (void *) &ielsloctax, (size_t) (grafptr->s.vertlocnbr * sizeof (float)), &veexloctax, (size_t) (veexlocnbr * sizeof (float)), &difogsttax, (size_t) (grafptr->s.vertgstnbr * sizeof (float)), &difngsttax, (size_t) (grafptr->s.vertgstnbr * sizeof (float)), NULL) == NULL) { errorPrint ("bdgraphBipartDf: out of memory"); reduloctab[0] = -1; } ielsloctax -= grafptr->s.baseval; difogsttax -= grafptr->s.baseval; difngsttax -= grafptr->s.baseval; veexloctax = (grafptr->veexloctax != NULL) ? (veexloctax - grafptr->s.baseval) : NULL; if (MPI_Allreduce (reduloctab, reduglbtab, 4, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartDf: communication error (1)"); return (1); } if (reduglbtab[0] < 0) { if (ielsloctax != NULL) memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (1); } if ((reduglbtab[0] == 0) || /* If graph is too small to have any usable anchors, leave partition as is */ (reduglbtab[1] == 0)) { memFree (ielsloctax + grafptr->s.baseval); if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (grafptr->partgsttax + grafptr->s.baseval), GRAPHPART_MPI) != 0) { errorPrint ("bdgraphBipartDf: cannot propagate part data (1)"); return (1); } return (0); } vanclocval[0] = (float) ((paraptr->typeval == BDGRAPHBIPARTDFTYPEBAL) /* If balanced parts wanted */ ? grafptr->compglbload0avg /* Target is average */ : ( (grafptr->compglbload0 < grafptr->compglbload0min) ? grafptr->compglbload0min : /* Else keep load if not off balance */ ((grafptr->compglbload0 > grafptr->compglbload0max) ? grafptr->compglbload0max : grafptr->compglbload0))); vanclocval[1] = (float) grafptr->s.veloglbsum - vanclocval[0]; vanclocval[0] = - vanclocval[0]; /* Part 0 holds negative values */ valolocval[0] = (float) reduglbtab[2]; /* Compute values to remove from anchor vertices */ valolocval[1] = (float) reduglbtab[3] - BDGRAPHBIPARTDFEPSILON; /* Slightly tilt value to add to part 1 */ vanclocnnd = grafptr->s.vertlocnnd - 2; /* Do not account for anchor vertices in diffusion computations */ if (grafptr->s.edloloctax != NULL) { for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; Gnum edlolocsum; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((grafptr->s.vendloctax[vertlocnum] - grafptr->s.vertloctax[vertlocnum]) == 0) { errorPrint ("bdgraphBipartDf: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ difogsttax[vertlocnum] = 0.0F; for (edgelocnum = grafptr->s.vertloctax[vertlocnum], edgelocnnd = grafptr->s.vendloctax[vertlocnum], edlolocsum = 0; edgelocnum < edgelocnnd; edgelocnum ++) edlolocsum += grafptr->s.edloloctax[edgelocnum]; ielsloctax[vertlocnum] = 1.0F / (float) edlolocsum; } } else { /* Graph has no edge loads */ for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) { #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((grafptr->s.vendloctax[vertlocnum] - grafptr->s.vertloctax[vertlocnum]) == 0) { errorPrint ("bdgraphBipartDf: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ ielsloctax[vertlocnum] = 1.0F / (float) (grafptr->s.vendloctax[vertlocnum] - grafptr->s.vertloctax[vertlocnum]); difogsttax[vertlocnum] = 0.0F; } } ielsloctax[vanclocnnd] = 1.0F / (float) reduglbtab[0]; ielsloctax[vanclocnnd + 1] = 1.0F / (float) reduglbtab[1]; difogsttax[vanclocnnd] = vanclocval[0] * ielsloctax[vanclocnnd]; /* Load anchor vertices for first pass */ difogsttax[vanclocnnd + 1] = vanclocval[1] * ielsloctax[vanclocnnd + 1]; difngsttax[vanclocnnd] = /* In case of isolated anchors, do not risk overflow because of NaN */ difngsttax[vanclocnnd + 1] = 0.0F; if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (difogsttax + grafptr->s.baseval), MPI_FLOAT) != 0) { /* Perform initial diffusion (and build communication structures) */ errorPrint ("bdgraphBipartDf: cannot propagate diffusion data (1)"); memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (1); } ovflval = 0; cdifval = paraptr->cdifval; cremval = paraptr->cremval; edgegsttax = grafptr->s.edgegsttax; for (passnum = 0; ; ) { /* For all passes */ if (ovflval == 0) { /* If no overflow occured */ float * diftgsttax; /* Temporary swap value */ Gnum vertlocnum; float veloval; veloval = 1.0F; /* Assume no vertex loads */ for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; float diffval; diffval = 0.0F; edgelocnum = grafptr->s.vertloctax[vertlocnum]; edgelocnnd = grafptr->s.vendloctax[vertlocnum]; if (grafptr->s.edloloctax != NULL) for ( ; edgelocnum < edgelocnnd; edgelocnum ++) diffval += difogsttax[edgegsttax[edgelocnum]] * (float) grafptr->s.edloloctax[edgelocnum]; else for ( ; edgelocnum < edgelocnnd; edgelocnum ++) diffval += difogsttax[edgegsttax[edgelocnum]]; diffval *= cdifval; diffval += (difogsttax[vertlocnum] * cremval) / ielsloctax[vertlocnum]; if (grafptr->s.veloloctax != NULL) veloval = (float) grafptr->s.veloloctax[vertlocnum]; if (diffval >= 0.0F) { diffval = (diffval - veloval) * ielsloctax[vertlocnum]; if (diffval <= 0.0F) diffval = +BDGRAPHBIPARTDFEPSILON; } else { diffval = (diffval + veloval) * ielsloctax[vertlocnum]; if (diffval >= 0.0F) diffval = -BDGRAPHBIPARTDFEPSILON; } if (isnan (diffval)) { /* If overflow occured */ ovflval = 1; /* We are in state of overflow */ goto abort; /* Exit this loop without swapping arrays */ } difngsttax[vertlocnum] = diffval; } for ( ; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { /* For the two local anchor vertices */ Gnum edgelocnum; Gnum edgelocnnd; float diffval; diffval = 0.0F; edgelocnum = grafptr->s.vertloctax[vertlocnum] + grafptr->s.procglbnbr - 1; /* Skip links to other anchors */ edgelocnnd = grafptr->s.vendloctax[vertlocnum]; if (edgelocnum == edgelocnnd) /* If isolated anchor */ continue; /* Barrel is empty */ for ( ; edgelocnum < edgelocnnd; edgelocnum ++) /* Anchor edges have load 1 even for weighted graphs */ diffval += difogsttax[edgegsttax[edgelocnum]]; diffval *= cdifval; diffval += vanclocval[vertlocnum - vanclocnnd] + (difogsttax[vertlocnum] * cremval) / ielsloctax[vertlocnum]; if (diffval >= 0.0F) { diffval = (diffval - valolocval[vertlocnum - vanclocnnd]) * ielsloctax[vertlocnum]; if (diffval <= 0.0F) diffval = +BDGRAPHBIPARTDFEPSILON; } else { diffval = (diffval + valolocval[vertlocnum - vanclocnnd]) * ielsloctax[vertlocnum]; if (diffval >= 0.0F) diffval = -BDGRAPHBIPARTDFEPSILON; } if (isnan (diffval)) { /* If overflow occured */ ovflval = 1; /* We are in state of overflow */ goto abort; /* Exit this loop without swapping arrays */ } difngsttax[vertlocnum] = diffval; } diftgsttax = (float *) difngsttax; /* Swap old and new diffusion arrays */ difngsttax = (float *) difogsttax; /* Casts to prevent IBM compiler from yelling */ difogsttax = (float *) diftgsttax; } abort : /* If overflow occured, resume here */ if (++ passnum >= paraptr->passnbr) /* If maximum number of passes reached */ break; /* Exit main loop */ if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (difogsttax + grafptr->s.baseval), MPI_FLOAT) != 0) { errorPrint ("bdgraphBipartDf: cannot propagate diffusion data (2)"); memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (1); } } for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) /* Set new part distribution */ grafptr->partgsttax[vertlocnum] = (difogsttax[vertlocnum] <= 0.0F) ? 0 : 1; grafptr->partgsttax[vanclocnnd] = 0; /* Set up parts in case anchors are isolated */ grafptr->partgsttax[vanclocnnd + 1] = 1; memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (grafptr->partgsttax + grafptr->s.baseval), GRAPHPART_MPI) != 0) { errorPrint ("bdgraphBipartDf: cannot propagate part data (2)"); return (1); } commlocloadintn = commlocloadextn = commlocgainextn = 0; for (vertlocnum = grafptr->s.baseval, fronlocnum = complocsize1 = complocload1 = 0; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; Gnum veloval; Gnum partval; Gnum flagval; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (grafptr->partgsttax[vertlocnum] > 1) { errorPrint ("bdgraphBipartDf: internal error (3)"); break; /* Do not break upcoming collective communications */ } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ partval = (Gnum) grafptr->partgsttax[vertlocnum]; veloval = (veloloctax != NULL) ? veloloctax[vertlocnum] : 1; if (grafptr->veexloctax != NULL) { commlocloadextn += grafptr->veexloctax[vertlocnum] * partval; commlocgainextn += grafptr->veexloctax[vertlocnum] * (1 - partval * 2); } complocsize1 += partval; complocload1 += partval * veloval; flagval = 0; for (edgelocnum = grafptr->s.vertloctax[vertlocnum], edgelocnnd = grafptr->s.vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) { Gnum edloval; Gnum partend; partend = (Gnum) grafptr->partgsttax[edgegsttax[edgelocnum]]; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (partend > 1) { errorPrint ("bdgraphBipartDf: internal error (4)"); vertlocnum = grafptr->s.vertlocnnd; break; /* Do not break upcoming collective communications */ } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ edloval = (edloloctax != NULL) ? edloloctax[edgelocnum] : 1; flagval |= partval ^ partend; commlocloadintn += (partval ^ partend) * edloval; /* Internal load is accounted for twice */ } if (flagval != 0) /* If vertex has neighbors in other part */ grafptr->fronloctab[fronlocnum ++] = vertlocnum; /* Record it as member of separator */ } grafptr->complocload0 = grafptr->s.velolocsum - complocload1; grafptr->complocsize0 = grafptr->s.vertlocnbr - complocsize1; grafptr->fronlocnbr = fronlocnum; reduloctab[0] = fronlocnum; reduloctab[1] = grafptr->complocload0; reduloctab[2] = grafptr->complocsize0; reduloctab[3] = commlocloadintn; /* Twice the internal load; sum globally before dividing by two */ reduloctab[4] = commlocloadextn; reduloctab[5] = commlocgainextn; if (MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 6, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartDf: communication error (2)"); return (1); } grafptr->fronglbnbr = reduglbtab[0]; grafptr->compglbload0 = reduglbtab[1]; grafptr->compglbload0dlt = grafptr->compglbload0 - grafptr->compglbload0avg; grafptr->compglbsize0 = reduglbtab[2]; grafptr->commglbload = (reduglbtab[3] / 2) * grafptr->domndist + reduglbtab[4]; grafptr->commglbgainextn = reduglbtab[5]; grafptr->bbalglbval = (double) ((grafptr->compglbload0dlt < 0) ? (- grafptr->compglbload0dlt) : grafptr->compglbload0dlt) / (double) grafptr->compglbload0avg; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (grafptr) != 0) { errorPrint ("bdgraphBipartDf: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/dgraph_ghst.h0000644000302600021200000000663013560005435020467 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /**********************************************************/ /* */ /* NAME : dgraph_ghst.h */ /* */ /* AUTHOR : Francois PELLEGRINI */ /* Francois CHATENET (P0.0) */ /* Sebastien FOUCAULT (P0.0) */ /* Nicolas GICQUEL (P0.1) */ /* Jerome LACOSTE (P0.1) */ /* */ /* FUNCTION : Part of a parallel static mapper. */ /* These lines are the data declarations */ /* for the halo building routine. */ /* */ /* # Version P0.0 : from : 01 apr 1997 */ /* to 20 jun 1997 */ /* # Version P0.1 : from : 12 apr 1998 */ /* to 20 jun 1998 */ /* # Version 5.0 : from : 28 feb 2006 */ /* to 31 dec 2006 */ /* */ /**********************************************************/ /* ** The defines. */ /* procsidtab-related values. */ #define DGRAPHGHSTSIDMAX ((int) ((unsigned int) (1 << (sizeof (int) * 8 - 1)) - 2U)) /* Maximum leap value for procsidtab entries */ /* ** The type and structure definitions. */ /* Sort structure for ghost edges. */ typedef struct DgraphGhstSort_ { Gnum vertglbnum; /* Global end vertex number */ Gnum edgegstnum; /* Number of ghost edge */ } DgraphGhstSort; scotch_6.0.9/src/libscotch/hall_order_hf.h0000644000302600021200000000615413465315041020767 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hf.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Fill **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.4 : from : 15 may 2001 **/ /** to : 15 may 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 08 dec 2003 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ void hallOrderHfR2hamdf4 (const Gnum n, const Gnum nbelts, const Gnum nbbuck, const Gnum iwlen, Gnum pe[], Gnum pfree, Gnum len[], Gnum iw[], Gnum nv[], Gnum elen[], Gnum last[], Gnum * ncmpa, Gnum degree[], Gnum wf[], Gnum next[], Gnum w[], Gnum head[]); scotch_6.0.9/src/libscotch/hgraph_order_kp.h0000644000302600021200000000600313465315041021326 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_kp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the k-way partitioning block **/ /** ordering module. **/ /** **/ /** DATES : # Version 6.0 : from : 17 oct 2012 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderKpParam_ { INT partsiz; /*+ Minimum part size +*/ Strat * strat; /*+ k-way partitioning strategy used +*/ } HgraphOrderKpParam; /* ** The function prototypes. */ int hgraphOrderKp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderKpParam * const); scotch_6.0.9/src/libscotch/library_mesh_io_habo_f.c0000644000302600021200000001246513560013261022634 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_io_habo_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** mesh i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 24 nov 2005 **/ /** to 24 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ MESHGEOMLOADHABO, meshgeomloadhabo, ( \ SCOTCH_Mesh * const meshptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADHABO)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_meshGeomLoadHabo (meshptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/library_graph_base_f.c0000644000302600021200000000640413560013261022307 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_base_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 22 apr 2004 **/ /** to 23 apr 2004 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHBASE, graphbase, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const basenew, \ SCOTCH_Num * const baseold), \ (grafptr, basenew, baseold)) { *baseold = SCOTCH_graphBase (grafptr, *basenew); } scotch_6.0.9/src/libscotch/library_dgraph_gather_f.c0000644000302600021200000000646113560013261023016 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_gather_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 12 jul 2007 **/ /** to 12 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHGATHER, dgraphgather, ( \ SCOTCH_Dgraph * const dgrfptr, \ SCOTCH_Graph * const cgrfptr, \ int * const revaptr), \ (dgrfptr, cgrfptr, revaptr)) { *revaptr = SCOTCH_dgraphGather (dgrfptr, cgrfptr); } scotch_6.0.9/src/libscotch/dgraph_io_load.h0000644000302600021200000000604013560005435021123 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_io_load.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the distributed graph loading **/ /** routines. **/ /** **/ /** DATES : # Version 5.0 : from : 12 may 2007 **/ /** to 13 may 2007 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ #ifdef DGRAPH_IO_LOAD static int dgraphLoadCent (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag, const int); static int dgraphLoadDist (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag); static int dgraphLoadMulti (Dgraph * restrict const, FILE * const, Gnum, const GraphFlag); #endif /* DGRAPH_IO_LOAD */ scotch_6.0.9/src/libscotch/graph_list.c0000644000302600021200000002003113303015264020307 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_list.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** vertex lists functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 4.0 : from : 10 dec 2001 **/ /** to 10 dec 2001 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_LIST #include "module.h" #include "common.h" #include "graph.h" /********************************/ /* */ /* These routines handle vertex */ /* number lists. */ /* */ /********************************/ /* This routine creates a vertex number list. ** It returns: ** - 0 : in all cases. */ int listInit ( VertList * listptr) { listptr->vnumnbr = 0; /* Initialize list fields */ listptr->vnumtab = NULL; return (0); } /* This routine deletes the given vertex number list. ** It returns: ** - VOID : in all cases. */ void listExit ( VertList * listptr) { if (listptr->vnumtab != NULL) memFree (listptr->vnumtab); /* Free vertex list array */ #ifdef SCOTCH_DEBUG_GRAPH2 memSet (listptr, 0, sizeof (VertList)); /* Purge list fields */ #endif /* SCOTCH_DEBUG_GRAPH2 */ } /* This routine allocates a vertex ** number list array. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int listAlloc ( VertList * listptr, Gnum vnumnbr) { if (vnumnbr == listptr->vnumnbr) /* If array is already dimensioned */ return (0); /* Keep it as it is */ listFree (listptr); /* Free vertex array */ if (vnumnbr > 0) { /* Reallocate vertex space */ if ((listptr->vnumtab = (Gnum *) memAlloc (vnumnbr * sizeof (Gnum))) == NULL) { errorPrint ("listAlloc: out of memory"); return (1); } listptr->vnumnbr = vnumnbr; } return (0); } /* This routine frees a vertex ** number list array. ** It returns: ** - 0 : in all cases. */ int listFree ( VertList * listptr) { if (listptr->vnumtab != NULL) /* Free vertex list array */ memFree (listptr->vnumtab); listptr->vnumnbr = 0; /* Reset list values */ listptr->vnumtab = NULL; return (0); } /* These routines load a vertex number list ** from the given stream. Because of the search ** for duplicates, the list read is always ** sorted by ascending order. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int listLoad ( VertList * listptr, FILE * stream) { Gnum vnumnbr; Gnum vnumnum; if (intLoad (stream, &vnumnbr) != 1) { /* Read number of vertices */ errorPrint ("listLoad: bad input (1)"); return (1); } if (listAlloc (listptr, vnumnbr) != 0) { /* Allocate vertex space */ errorPrint ("listLoad: out of memory"); return (1); } for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* Read vertex list contents */ if (intLoad (stream, &listptr->vnumtab[vnumnum]) != 1) { errorPrint ("listLoad: bad input (2)"); return (1); } } listSort (listptr); /* Sort vertex list by ascending order */ for (vnumnum = 1; vnumnum < vnumnbr; vnumnum ++) { /* Search list for duplicates */ if (listptr->vnumtab[vnumnum] == listptr->vnumtab[vnumnum - 1]) { errorPrint ("listLoad: duplicate vertex numbers"); return (1); } } return (0); } /* This routine sorts a vertex list ** by ascending order. ** It returns: ** - VOID : in all cases. */ void listSort ( VertList * listptr) { intSort1asc1 (listptr->vnumtab, listptr->vnumnbr); } /* This routine saves a vertex number list ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int listSave ( VertList * listptr, FILE * stream) { Gnum vnumnum; int o; o = (intSave (stream, listptr->vnumnbr) == 0); /* Write number of vertices */ for (vnumnum = 0; (o == 0) && (vnumnum < listptr->vnumnbr); vnumnum ++) { o = (fprintf (stream, "%c" GNUMSTRING, ((vnumnum % 8) == 0) ? '\n' : '\t', (Gnum) listptr->vnumtab[vnumnum]) == EOF); } o |= (fprintf (stream, "\n") == EOF); if (o != 0) errorPrint ("listSave: bad output"); return (o); } /* This routine copies the contents ** of a vertex list into another. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int listCopy ( VertList * dstlistptr, /* Destination list */ VertList * srclistptr) /* Source list */ { if (listAlloc (dstlistptr, dstlistptr->vnumnbr) != 0) { /* Allocate vertex space */ errorPrint ("listCopy: out of memory"); return (1); } memCpy (dstlistptr->vnumtab, /* Copy list data */ srclistptr->vnumtab, srclistptr->vnumnbr * sizeof (Gnum)); return (0); } scotch_6.0.9/src/libscotch/library_dgraph_build_grid3d.c0000644000302600021200000000757413560013261023600 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_build_grid3d.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : These lines are the distributed source **/ /** graph building routines for 3D grid **/ /** graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 21 jul 2005 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 05 jun 2010 **/ /** to : 06 jun 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine builds a distributed *** 3D grid or torus graph structure. *** It returns: *** - 0 : if the creation succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphBuildGrid3D ( SCOTCH_Dgraph * const grafptr, const SCOTCH_Num baseval, /* Base value */ const SCOTCH_Num dimx, /* First dimension */ const SCOTCH_Num dimy, /* Second dimension */ const SCOTCH_Num dimz, /* Third dimension */ const SCOTCH_Num incrval, /* Increment value */ const int flagval) /* Flag value */ { return (dgraphBuildGrid3D ((Dgraph *) grafptr, baseval, dimx, dimy, dimz, incrval, flagval)); } scotch_6.0.9/src/libscotch/vgraph_separate_ml.c0000644000302600021200000002621713470115365022042 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2011,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_ml.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module separates a separator **/ /** graph using a multi-level scheme. **/ /** **/ /** DATES : # Version 3.2 : from : 28 oct 1997 **/ /** to 05 nov 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 20 mar 2005 **/ /** # Version 5.1 : from : 11 nov 2009 **/ /** to 11 nov 2009 **/ /** # Version 6.0 : from : 09 mar 2011 **/ /** to 16 aug 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_ML #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "vgraph.h" #include "vgraph_separate_ml.h" #include "vgraph_separate_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** graph that is given on input. The coarser ** graphs differ at this stage from classical ** active graphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse graph has been built. ** - 1 : if threshold achieved or on error. */ static int vgraphSeparateMlCoarsen ( const Vgraph * restrict const finegrafptr, /*+ Finer graph +*/ Vgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const VgraphSeparateMlParam * const paraptr) /*+ Method parameters +*/ { *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, paraptr->coarnbr, paraptr->coarval, GRAPHCOARSENNONE, NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ coargrafptr->parttax = NULL; /* Do not allocate partition data yet */ coargrafptr->frontab = finegrafptr->frontab; /* Re-use frontier array for coarser graph */ coargrafptr->levlnum = finegrafptr->levlnum + 1; /* Graph level is coarsening level */ return (0); } /* This routine propagates the separation of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the separation is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to fine graph. ** - !0 : on error. */ static int vgraphSeparateMlUncoarsen ( Vgraph * restrict const finegrafptr, /*+ Finer graph +*/ const Vgraph * restrict const coargrafptr, /*+ Coarser graph +*/ const GraphCoarsenMulti * restrict const coarmulttab) /*+ Un-based multinode array +*/ { Gnum coarvertnbr; Gnum coarvertnum; /* Number of current coarse vertex */ Gnum finefronnbr; /* Number of frontier vertices in fine graph */ if (finegrafptr->parttax == NULL) { /* If partition array not yet allocated */ if ((finegrafptr->parttax = (GraphPart *) memAlloc (finegrafptr->s.vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("vgraphSeparateMlUncoarsen: out of memory"); return (1); /* Allocated data will be freed along with graph structure */ } finegrafptr->parttax -= finegrafptr->s.baseval; } if (coargrafptr != NULL) { /* If coarser graph provided */ GraphPart * restrict fineparttax; Gnum finesize1; /* Number of vertices in fine part 1 */ const GraphPart * restrict const coarparttab = coargrafptr->parttax + coargrafptr->s.baseval; Gnum * restrict const finefrontab = finegrafptr->frontab; finesize1 = coargrafptr->compsize[1]; /* Pre-allocate size */ fineparttax = finegrafptr->parttax; for (coarvertnum = finefronnbr = 0, coarvertnbr = coargrafptr->s.vertnbr; coarvertnum < coarvertnbr; coarvertnum ++) { Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ GraphPart coarpartval; /* Value of current multinode part */ finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; coarpartval = coarparttab[coarvertnum]; fineparttax[finevertnum0] = coarpartval; if (coarpartval != 2) { /* If vertex is not in separator */ if (finevertnum0 != finevertnum1) { fineparttax[finevertnum1] = coarpartval; finesize1 += (Gnum) coarpartval; /* One extra vertex accounted for in part 1 if (coarpartval == 1) */ } } else { /* Vertex is in separator */ finefrontab[finefronnbr ++] = finevertnum0; if (finevertnum0 != finevertnum1) { fineparttax[finevertnum1] = coarpartval; finefrontab[finefronnbr ++] = finevertnum1; /* One extra vertex in separator */ } } } finegrafptr->fronnbr = finefronnbr; finegrafptr->compload[0] = coargrafptr->compload[0]; finegrafptr->compload[1] = coargrafptr->compload[1]; finegrafptr->compload[2] = coargrafptr->compload[2]; finegrafptr->comploaddlt = coargrafptr->comploaddlt; finegrafptr->compsize[0] = finegrafptr->s.vertnbr - finefronnbr - finesize1; finegrafptr->compsize[1] = finesize1; } else /* No coarse graph provided */ vgraphZero (finegrafptr); /* Assign all vertices to part 0 */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (finegrafptr) != 0) { errorPrint ("vgraphSeparateMlUncoarsen: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } /* This routine recursively performs the ** separation recursion. ** It returns: ** - 0 : if separator could be computed. ** - !0 : on error. */ static int vgraphSeparateMl2 ( Vgraph * restrict const grafptr, /* Vertex-separation graph */ const VgraphSeparateMlParam * const paraptr) /* Method parameters */ { Vgraph coargrafdat; GraphCoarsenMulti * restrict coarmulttab; int o; if (vgraphSeparateMlCoarsen (grafptr, &coargrafdat, &coarmulttab, paraptr) == 0) { if (((o = vgraphSeparateMl2 (&coargrafdat, paraptr)) == 0) && ((o = vgraphSeparateMlUncoarsen (grafptr, &coargrafdat, coarmulttab)) == 0) && ((o = vgraphSeparateSt (grafptr, paraptr->stratasc)) != 0)) /* Apply ascending strategy */ errorPrint ("vgraphSeparateMl2: cannot apply ascending strategy"); coargrafdat.frontab = NULL; /* Prevent frontab of fine graph from being freed */ vgraphExit (&coargrafdat); } else { /* Cannot coarsen due to lack of memory or error */ if (((o = vgraphSeparateMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = vgraphSeparateSt (grafptr, paraptr->stratlow)) != 0)) /* Apply low strategy */ errorPrint ("vgraphSeparateMl2: cannot apply low strategy"); } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the muti-level separation. ** It returns: ** - 0 : if separator could be computed. ** - 1 : on error. */ int vgraphSeparateMl ( Vgraph * const grafptr, /*+ Vertex-separation graph +*/ const VgraphSeparateMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = grafptr->levlnum; /* Save graph level */ grafptr->levlnum = 0; /* Initialize coarsening level */ o = vgraphSeparateMl2 (grafptr, paraptr); /* Perform multi-level separation */ grafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/arch_torus.h0000644000302600021200000001670413560005302020342 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2013,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_torus.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the tori graph target architecture **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 17 aug 1995 **/ /** # Version 3.1 : from : 22 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 16 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 05 nov 2003 **/ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #ifndef ARCH_TORUS_H_STRUCT #define ARCH_TORUS_H_STRUCT /* ** The type and structure definitions. */ /*+ The torus definitions. +*/ #define ArchTorus2 ArchMesh2 #define ArchTorus2Dom ArchMesh2Dom #define ArchTorus3 ArchMesh3 #define ArchTorus3Dom ArchMesh3Dom #define ArchTorusX ArchMeshX #define ArchTorusXDom ArchMeshXDom #endif /* ARCH_TORUS_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_TORUS_H_PROTO #define ARCH_TORUS_H_PROTO #define archTorus2ArchLoad archMesh2ArchLoad #define archTorus2ArchSave archMesh2ArchSave #define archTorus2ArchFree archMesh2ArchFree #define archTorus2MatchInit archMesh2MatchInit #define archTorus2MatchExit archMesh2MatchExit #define archTorus2MatchMate archMesh2MatchMate #define archTorus2DomNum archMesh2DomNum #define archTorus2DomTerm archMesh2DomTerm #define archTorus2DomSize archMesh2DomSize #define archTorus2DomWght archMesh2DomSize Anum archTorus2DomDist (const ArchTorus2 * const, const ArchTorus2Dom * const, const ArchTorus2Dom * const); #define archTorus2DomFrst archMesh2DomFrst #define archTorus2DomLoad archMesh2DomLoad #define archTorus2DomSave archMesh2DomSave #define archTorus2DomBipart archMesh2DomBipart #define archTorus2DomBipartO archMesh2DomBipartO #define archTorus2DomBipartU archMesh2DomBipartU #define archTorus2DomIncl archMesh2DomIncl #define archTorus3ArchLoad archMesh3ArchLoad #define archTorus3ArchSave archMesh3ArchSave #define archTorus3ArchFree archMesh3ArchFree #define archTorus3MatchInit archMesh3MatchInit #define archTorus3MatchExit archMesh3MatchExit #define archTorus3MatchMate archMesh3MatchMate #define archTorus3DomNum archMesh3DomNum #define archTorus3DomTerm archMesh3DomTerm #define archTorus3DomSize archMesh3DomSize #define archTorus3DomWght archMesh3DomSize Anum archTorus3DomDist (const ArchTorus3 * const, const ArchTorus3Dom * const, const ArchTorus3Dom * const); #define archTorus3DomFrst archMesh3DomFrst #define archTorus3DomLoad archMesh3DomLoad #define archTorus3DomSave archMesh3DomSave #define archTorus3DomBipart archMesh3DomBipart #define archTorus3DomIncl archMesh3DomIncl #define archTorusXArchLoad archMeshXArchLoad #define archTorusXArchSave archMeshXArchSave #define archTorusXArchFree archMeshXArchFree #define archTorusXMatchInit archMeshXMatchInit #define archTorusXMatchExit archMeshXMatchExit #define archTorusXMatchMate archMeshXMatchMate #define archTorusXDomNum archMeshXDomNum #define archTorusXDomTerm archMeshXDomTerm #define archTorusXDomSize archMeshXDomSize #define archTorusXDomWght archMeshXDomSize Anum archTorusXDomDist (const ArchTorusX * const, const ArchTorusXDom * const, const ArchTorusXDom * const); #define archTorusXDomFrst archMeshXDomFrst #define archTorusXDomLoad archMeshXDomLoad #define archTorusXDomSave archMeshXDomSave #define archTorusXDomBipart archMeshXDomBipart #define archTorusXDomIncl archMeshXDomIncl #endif /* ARCH_TORUS_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/library_arch_f.c0000644000302600021200000002664113560013261021136 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the architecture handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 02 dec 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 13 jan 2004 **/ /** to 13 jan 2004 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 13 feb 2011 **/ /** # Version 6.0 : from : 16 apr 2015 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the Fortran */ /* API for the architecture handling */ /* routines. */ /* */ /*************************************/ /* ** */ SCOTCH_FORTRAN ( \ ARCHINIT, archinit, ( \ SCOTCH_Arch * const archptr, \ int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archInit (archptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHEXIT, archexit, ( \ SCOTCH_Arch * const archptr), \ (archptr)) { SCOTCH_archExit (archptr); } /* When an input stream is built from the given ** file handle, it is set as unbuffered, so as to ** allow for multiple stream reads from the same ** file handle. If it were buffered, too many ** input characters would be read on the first ** block read. */ SCOTCH_FORTRAN ( \ ARCHLOAD, archload, ( \ SCOTCH_Arch * const archptr, \ int * const fileptr, \ int * const revaptr), \ (archptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } setbuf (stream, NULL); /* Do not buffer on input */ o = SCOTCH_archLoad (archptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ ARCHSAVE, archsave, ( \ SCOTCH_Arch * const archptr, \ int * const fileptr, \ int * const revaptr), \ (archptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (ARCHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_archSave (archptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ ARCHNAME, archname, ( \ SCOTCH_Arch * const archptr, \ char * const chartab, \ int * const charptr), \ (archptr, chartab, charptr)) { char * nameptr; /* Name string */ nameptr = SCOTCH_archName (archptr); /* Get architecture name */ strncpy (chartab, nameptr, *charptr); /* Copy architecture name */ } /* ** */ SCOTCH_FORTRAN ( \ ARCHSIZE, archsize, ( \ SCOTCH_Arch * const archptr, \ int * const sizeptr), \ (archptr, sizeptr)) { *sizeptr = SCOTCH_archSize (archptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHVAR, archvar, ( \ SCOTCH_Arch * const archptr, \ int * const flagptr), \ (archptr, flagptr)) { *flagptr = SCOTCH_archVar (archptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHCMPLT, archcmplt, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const vertnbr, \ int * const revaptr), \ (archptr, vertnbr, revaptr)) { *revaptr = SCOTCH_archCmplt (archptr, *vertnbr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHCMPLTW, archcmpltw, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const vertnbr, \ const SCOTCH_Num * const velotab, \ int * const revaptr), \ (archptr, vertnbr, velotab, revaptr)) { *revaptr = SCOTCH_archCmpltw (archptr, *vertnbr, velotab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHHCUB, archhcub, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimnmax, \ int * const revaptr), \ (archptr, dimnmax, revaptr)) { *revaptr = SCOTCH_archHcub (archptr, *dimnmax); } /* ** */ SCOTCH_FORTRAN ( \ ARCHMESH2, archmesh2, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimxval, \ const SCOTCH_Num * const dimyval, \ int * const revaptr), \ (archptr, dimxval, dimyval, revaptr)) { *revaptr = SCOTCH_archMesh2 (archptr, *dimxval, *dimyval); } /* ** */ SCOTCH_FORTRAN ( \ ARCHMESH3, archmesh3, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimxval, \ const SCOTCH_Num * const dimyval, \ const SCOTCH_Num * const dimzval, \ int * const revaptr), \ (archptr, dimxval, dimyval, dimzval, revaptr)) { *revaptr = SCOTCH_archMesh3 (archptr, *dimxval, *dimyval, *dimzval); } /* ** */ SCOTCH_FORTRAN ( \ ARCHMESHX, archmeshx, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimnnbr, \ const SCOTCH_Num * const dimntab, \ int * const revaptr), \ (archptr, dimnnbr, dimntab, revaptr)) { *revaptr = SCOTCH_archMeshX (archptr, *dimnnbr, dimntab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHSUB, archsub, ( \ SCOTCH_Arch * const subarchptr, \ SCOTCH_Arch * const orgarchptr, \ const SCOTCH_Num * const vnumnbr, \ const SCOTCH_Num * const vnumtab, \ int * const revaptr), \ (subarchptr, orgarchptr, vnumnbr, vnumtab, revaptr)) { *revaptr = SCOTCH_archSub (subarchptr, orgarchptr, *vnumnbr, vnumtab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHTLEAF, archtleaf, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const levlnbr, \ const SCOTCH_Num * const sizetab, \ const SCOTCH_Num * const linktab, \ int * const revaptr), \ (archptr, levlnbr, sizetab, linktab, revaptr)) { *revaptr = SCOTCH_archTleaf (archptr, *levlnbr, sizetab, linktab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHTORUS2, archtorus2, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimxval, \ const SCOTCH_Num * const dimyval, \ int * const revaptr), \ (archptr, dimxval, dimyval, revaptr)) { *revaptr = SCOTCH_archTorus2 (archptr, *dimxval, *dimyval); } /* ** */ SCOTCH_FORTRAN ( \ ARCHTORUS3, archtorus3, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimxval, \ const SCOTCH_Num * const dimyval, \ const SCOTCH_Num * const dimzval, \ int * const revaptr), \ (archptr, dimxval, dimyval, dimzval, revaptr)) { *revaptr = SCOTCH_archTorus3 (archptr, *dimxval, *dimyval, *dimzval); } /* ** */ SCOTCH_FORTRAN ( \ ARCHTORUSX, archtorusx, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_Num * const dimnnbr, \ const SCOTCH_Num * const dimntab, \ int * const revaptr), \ (archptr, dimnnbr, dimntab, revaptr)) { *revaptr = SCOTCH_archTorusX (archptr, *dimnnbr, dimntab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHVCMPLT, archvcmplt, ( \ SCOTCH_Arch * const archptr, \ int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archVcmplt (archptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHVHCUB, archvhcub, ( \ SCOTCH_Arch * const archptr, \ int * const revaptr), \ (archptr, revaptr)) { *revaptr = SCOTCH_archVhcub (archptr); } scotch_6.0.9/src/libscotch/library_dgraph_check.c0000644000302600021200000000641113560013261022307 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 26 aug 2006 **/ /** to 26 aug 2006 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed graph handling */ /* routines. */ /* */ /************************************/ /*+ This routine checks the consistency *** of the given graph. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphCheck ( const SCOTCH_Dgraph * const grafptr) { return (dgraphCheck ((const Dgraph * const) grafptr)); } scotch_6.0.9/src/libscotch/vgraph_separate_vw.c0000644000302600021200000001061113303067106022047 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_vw.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module outputs the state of the **/ /** current partition on the form of a **/ /** Scotch mapping file. **/ /** **/ /** DATES : # Version 4.0 : from : 18 may 2004 **/ /** to 18 may 2004 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 10 oct 2013 **/ /** to 10 oct 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_VW #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_vw.h" /* ** The static variables. */ static int vgraphseparatevwfilenum = 0; /* Number of file to output */ /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine outputs the mapping file. ** It returns: ** - 0 : if the file could be produced. ** - !0 : on error. */ int vgraphSeparateVw ( Vgraph * restrict const grafptr) /*+ Separation graph +*/ { char nametab[64]; /* File name */ FILE * restrict fileptr; Gnum vertnum; /* Vertex number */ sprintf (nametab, "vgraphseparatevw_output_%08d.map", vgraphseparatevwfilenum ++); if ((fileptr = fopen (nametab, "w+")) == NULL) { errorPrint ("vgraphSeparateVw: cannot open partition file"); return (1); } fprintf (fileptr, GNUMSTRING "\n", /* Output size of mapping; test if failure later, in main loop */ (Gnum) grafptr->s.vertnbr); for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if (fprintf (fileptr, GNUMSTRING "\t%d\n", (Gnum) ((grafptr->s.vnumtax != NULL) ? grafptr->s.vnumtax[vertnum] : vertnum), (int) grafptr->parttax[vertnum]) <= 0) { errorPrint ("vgraphSeparateVw: bad output"); fclose (fileptr); return (1); } } fclose (fileptr); return (0); } scotch_6.0.9/src/libscotch/library_graph_io_scot_f.c0000644000302600021200000001710313560013261023032 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_scot_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 23 nov 2005 **/ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMLOADSCOT, graphgeomloadscot, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADSCOT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomLoadScot (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMSAVESCOT, graphgeomsavescot, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVESCOT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomSaveScot (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/hgraph_induce.h0000644000302600021200000000621613465315041020776 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_induce.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the halo graph subgraph making **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 10 jan 2002 **/ /** to 22 dec 2002 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ #ifdef HGRAPH_INDUCE static int hgraphInduce2 (const Hgraph * const, Gnum * const, Hgraph * const, const Gnum, Gnum * const); static void hgraphInduce2L (const Hgraph * const, Gnum * const, Hgraph * const); static void hgraphInduce2U (const Hgraph * const, Gnum * const, Hgraph * const); static Gnum hgraphInduce3 (const Hgraph * restrict const, const Gnum, const Gnum * restrict const); #endif /* HGRAPH_INDUCE */ scotch_6.0.9/src/libscotch/bdgraph_bipart_ex.c0000644000302600021200000005430113560005346021633 0ustar pelegrinpelegrin/* Copyright 2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_ex.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module bipartitions a distributed **/ /** active graph using a parallel gradient **/ /** method to balance the two parts as **/ /** evenly as possible. **/ /** **/ /** DATES : # Version 5.1 : from : 16 jul 2010 **/ /** to : 15 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to : 31 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_EX #include "module.h" #include "common.h" #include "dgraph.h" #include "arch.h" #include "bdgraph.h" #include "bdgraph_bipart_ex.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bdgraphBipartEx ( Bdgraph * restrict const grafptr, /*+ Active graph +*/ const BdgraphBipartExParam * restrict const paraptr) /*+ Method parameters +*/ { int sbbtnbr; /* Number of subbits */ Gnum sbbtmsk; /* Subbit mask */ int gainsiz; /* Size of gain array */ int gainidx; Gnum * restrict gainloctab; Gnum * restrict gainglbtab; Gnum * restrict frstloctab; Gnum * restrict nextloctab; Gnum * restrict loadglbtab; const Gnum * restrict edgegsttax; Gnum edlolocval; Gnum fronlocnum; Gnum vertgstnum; Gnum vertlocnnd; Gnum complocsizedlt; /* Count of vertices moved locally */ Gnum complocloaddlt; /* Load of vertices moved locally */ Gnum compglbloaddlt; Gnum compglbloaddltmax; Gnum compglbloaddltmat; Gnum commlocgain; Gnum commlocgainextn; Gnum fronlocnbr; int * restrict movegsttab; int * restrict flagloctab; int cheklocval; int chekglbval; BdgraphBipartExSort * sorttab; size_t sortsiz; Gnum reduloctab[5]; Gnum reduglbtab[5]; Gnum domndist; Gnum partval; const Gnum * restrict const vertloctax = grafptr->s.vertloctax; /* Fast accesses */ const Gnum * restrict const vendloctax = grafptr->s.vendloctax; const Gnum * restrict const veloloctax = grafptr->s.veloloctax; const Gnum * restrict const veexloctax = grafptr->veexloctax; const Gnum * restrict const edloloctax = grafptr->s.edloloctax; Gnum * restrict const fronloctab = grafptr->fronloctab; GraphPart * restrict const partgsttax = grafptr->partgsttax; partval = (grafptr->compglbload0dlt > 0) ? 1 : 0; /* Get number of underloaded part to receive vertices */ compglbloaddltmax = (Gnum) ((double) grafptr->compglbload0avg * paraptr->deltval); compglbloaddltmat = (partval == 0) ? (grafptr->compglbload0avg - grafptr->compglbload0min) : (grafptr->compglbload0max - grafptr->compglbload0avg); if (compglbloaddltmax > compglbloaddltmat) compglbloaddltmax = compglbloaddltmat; if ((abs (grafptr->compglbload0dlt) < compglbloaddltmax) || /* If nothing to do */ (grafptr->fronglbnbr == 0)) /* Or if no current frontier */ return (0); /* This algorithm is useless */ if (dgraphGhst (&grafptr->s) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("bdgraphBipartEx: cannot compute ghost edge array"); return (1); } sbbtnbr = (int) paraptr->sbbtnbr; sbbtmsk = (1 << sbbtnbr) - 1; gainsiz = ((sizeof (Gnum) << 3) - sbbtnbr) << (sbbtnbr + 1); /* Compute gain array size */ sortsiz = MAX ((grafptr->s.procglbnbr * sizeof (BdgraphBipartExSort)), /* TRICK: recycle */ (grafptr->fronlocnbr * sizeof (BdgraphBipartExMove))); cheklocval = 0; if (memAllocGroup ((void **) (void *) &gainglbtab, (size_t) (gainsiz * sizeof (Gnum)), &gainloctab, (size_t) (gainsiz * sizeof (Gnum)), &frstloctab, (size_t) (gainsiz * sizeof (Gnum)), &nextloctab, (size_t) (grafptr->fronlocnbr * sizeof (Gnum)), &loadglbtab, (size_t) (grafptr->s.procglbnbr * sizeof (Gnum)), &movegsttab, (size_t) (flagSize (grafptr->s.vertgstnbr + grafptr->s.baseval) * sizeof (int)), /* TRICK: use based vertices as flag array indices */ &flagloctab, (size_t) (flagSize (grafptr->s.vertlocnbr + grafptr->s.baseval) * sizeof (int)), &sorttab, (size_t) (sortsiz), NULL) == NULL) { errorPrint ("bdgraphBipartEx: out of memory"); cheklocval = 1; } else { memSet (gainloctab, 0, gainsiz * sizeof (Gnum)); /* Initialize gain array */ memSet (frstloctab, ~0, gainsiz * sizeof (Gnum)); /* Initialize linked list */ memSet (nextloctab, ~0, grafptr->fronlocnbr * sizeof (Gnum)); memSet (movegsttab, 0, flagSize (grafptr->s.vertgstnbr + grafptr->s.baseval) * sizeof (int)); /* TRICK: based sizes */ memSet (flagloctab, 0, flagSize (grafptr->s.vertlocnbr + grafptr->s.baseval) * sizeof (int)); } #ifdef SCOTCH_DEBUG_BDGRAPH1 if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartEx: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (chekglbval != 0) { if (gainglbtab != NULL) memFree (gainglbtab); /* Free group leader */ return (1); } domndist = (Gnum) grafptr->domndist; edgegsttax = grafptr->s.edgegsttax; edlolocval = 1; /* Assume no edge loads */ for (fronlocnum = 0; fronlocnum < grafptr->fronlocnbr; fronlocnum ++) { Gnum vertlocnum; Gnum velolocval; Gnum edgelocnum; Gnum commgain; int gainidx; int i; Gnum j; vertlocnum = fronloctab[fronlocnum]; if ((Gnum) partgsttax[vertlocnum] == partval) /* If vertex belongs to lighter part, skip it */ continue; for (edgelocnum = vertloctax[vertlocnum], commgain = 0; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertlocend; Gnum partend; Gnum partdlt; vertlocend = edgegsttax[edgelocnum]; partend = (Gnum) partgsttax[vertlocend]; if (edloloctax != NULL) edlolocval = edloloctax[edgelocnum]; partdlt = partval ^ partend; /* Inverse of partdlt, because "partval" is the opposite */ commgain += (2 * partdlt - 1) * edlolocval; /* Since partdlt has reversed meaning, reverse gain too */ } commgain *= domndist; /* Adjust internal gains with respect to external gains */ if (veexloctax != NULL) commgain += (2 * partval - 1) * veexloctax[vertlocnum]; /* Partval has reversed meaning */ velolocval = (veloloctax != NULL) ? veloloctax[vertlocnum] : 1; if (commgain >= 0) { /* Compute table entry for gain */ for (i = 0, j = commgain; j > sbbtmsk; i ++, j >>= 1) ; i = (i << sbbtnbr) + (int) j; } else { for (i = 0, j = - (commgain + 1); j > sbbtmsk; i ++, j >>= 1) ; i = - ((i << sbbtnbr) + (int) j + 1); } gainidx = (gainsiz >> 1) + i; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((gainidx < 0) || (gainidx >= gainsiz)) { errorPrint ("bdgraphBipartEx: internal error"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ gainloctab[gainidx] += velolocval; /* Accumulate gain in proper cell */ nextloctab[fronlocnum] = frstloctab[gainidx]; /* Chain frontier vertex in gain list */ frstloctab[gainidx] = fronlocnum; } if (MPI_Allreduce (gainloctab, gainglbtab, gainsiz, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartEx: communication error (2)"); return (1); } complocloaddlt = 0; /* No moved vertices yet */ compglbloaddlt = abs (grafptr->compglbload0dlt); /* We want to reduce the absolute value of imbalance */ for (gainidx = 0; gainidx < gainsiz; gainidx ++) { Gnum compglbloadtmp; Gnum gainglbval; Gnum fronlocnum; gainglbval = gainglbtab[gainidx]; if (gainglbval <= 0) continue; compglbloadtmp = compglbloaddlt - gainglbval; if (compglbloadtmp < compglbloaddltmax) break; compglbloaddlt = compglbloadtmp; complocloaddlt += gainloctab[gainidx]; /* We moved that much load locally */ for (fronlocnum = frstloctab[gainidx]; fronlocnum != ~0; /* For all vertices in swapped gain slot */ fronlocnum = nextloctab[fronlocnum]) partgsttax[fronloctab[fronlocnum]] = (GraphPart) (partval | 2); /* Swap vertex part and flag vertex */ } if ((gainidx < gainsiz) && /* If we can make further adjustments */ (compglbloaddlt > compglbloaddltmax)) { /* And if there are some to make */ Gnum loadglbmax; int procglbnbr; int proclocnum; int procnum; int procmax; int sortnbr; int sortnum; if (MPI_Allgather (gainloctab + gainidx, 1, GNUM_MPI, loadglbtab, 1, GNUM_MPI, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartEx: communication error (3)"); return (1); } for (procnum = procmax = sortnbr = 0, loadglbmax = 0; /* For all potential contributions */ procnum < grafptr->s.procglbnbr; procnum ++) { if (loadglbtab[procnum] > 0) { if (loadglbtab[procnum] > loadglbmax) { /* Find maximum contribution index as starting point */ loadglbmax = loadglbtab[procnum]; procmax = procnum; } sorttab[sortnbr].veloval = loadglbtab[procnum]; sorttab[sortnbr].procnum = (Gnum) procnum; sortnbr ++; } } procglbnbr = grafptr->s.procglbnbr; for (sortnum = 0; sortnum < sortnbr; sortnum ++) /* Increase priority value from found maximum */ sorttab[sortnum].prioval = (sorttab[sortnum].procnum + procglbnbr - procmax) % procglbnbr; intSort3asc2 (sorttab, sortnbr); /* Sort contributions array unambiguously */ proclocnum = grafptr->s.proclocnum; for (sortnum = sortnbr - 1; sortnum >= 0; sortnum --) { /* Process contributions by descending load */ Gnum compglbloadtmp; compglbloadtmp = compglbloaddlt - sorttab[sortnum].veloval; if (compglbloadtmp < compglbloaddltmax) { /* If entire move would cause imbalance */ Gnum fronlocnum; BdgraphBipartExMove * movetab; Gnum movenbr; Gnum movenum; if (sorttab[sortnum].procnum != proclocnum) /* If this is not our job to handle it */ break; /* Nothing more to do for us */ movetab = (BdgraphBipartExMove *) sorttab; /* TRICK: recycle sorttab array as move array */ for (fronlocnum = frstloctab[gainidx], movenbr = 0; /* For all vertices in swapped gain slot */ fronlocnum != ~0; fronlocnum = nextloctab[fronlocnum], movenbr ++) { Gnum vertlocnum; vertlocnum = fronloctab[fronlocnum]; movetab[movenbr].veloval = (veloloctax != NULL) ? veloloctax[vertlocnum] : 1; movetab[movenbr].vertnum = vertlocnum; } intSort2asc1 (movetab, movenbr); /* Sort local moves by ascending load order */ for (movenum = movenbr - 1; movenum >= 0; movenum --) { /* For all potential moves by descending weight */ Gnum compglbloadtmp; compglbloadtmp = compglbloaddlt - movetab[movenum].veloval; if (compglbloadtmp >= compglbloaddltmax) { /* If move reduces imbalance */ partgsttax[movetab[movenum].vertnum] = (GraphPart) (partval | 2); /* Swap vertex part and flag vertex */ compglbloaddlt = compglbloadtmp; complocloaddlt += movetab[movenum].veloval; /* We moved that much load locally */ if (compglbloaddlt <= compglbloaddltmax) /* If nothing more to do, exit loop */ break; } } break; /* Nothing more to do */ } compglbloaddlt = compglbloadtmp; /* Accept move entirely */ if (sorttab[sortnum].procnum == proclocnum) { /* If we are the process to do it */ Gnum fronlocnum; complocloaddlt += sorttab[sortnum].veloval; /* We moved all of our local load for this gain */ for (fronlocnum = frstloctab[gainidx]; fronlocnum != ~0; /* For all vertices in swapped gain slot */ fronlocnum = nextloctab[fronlocnum]) partgsttax[fronloctab[fronlocnum]] = (GraphPart) (partval | 2); /* Swap vertex part and flag vertex */ break; /* We did our job; don't care about the rest */ } } } grafptr->complocload0 -= (2 * partval - 1) * complocloaddlt; /* Update according to load of moved vertices */ if (dgraphHaloSync (&grafptr->s, partgsttax + grafptr->s.baseval, GRAPHPART_MPI) != 0) { errorPrint ("bdgraphBipartEx: communication error (4)"); return (1); } for (vertgstnum = grafptr->s.vertlocnnd; /* For all received ghosts */ vertgstnum < grafptr->s.vertgstnnd; vertgstnum ++) { if ((partgsttax[vertgstnum] & 2) != 0) { /* If ghost vertex changed part */ partgsttax[vertgstnum] &= 1; /* Put it back in normal state */ flagSet (movegsttab, vertgstnum); /* While recording state change */ } } complocsizedlt = 0; /* No difference to number of vertices yet */ for (fronlocnum = 0, fronlocnbr = grafptr->fronlocnbr; fronlocnum < fronlocnbr; fronlocnum ++) { Gnum vertlocnum; vertlocnum = fronloctab[fronlocnum]; flagSet (flagloctab, vertlocnum); /* Record vertex as already seen */ if ((partgsttax[vertlocnum] & 2) != 0) { /* If frontier vertex changed part */ partgsttax[vertlocnum] &= 1; /* Put it back in normal state */ flagSet (movegsttab, vertlocnum); /* While recording state change */ complocsizedlt ++; /* One more vertex changed of part */ } } grafptr->complocsize0 -= (2 * partval - 1) * complocsizedlt; /* Update according to number of moved vertices */ if (grafptr->s.procsidnbr != 0) { /* Add potential new frontiers to frontier array */ Gnum vertlocnum; Gnum procsidnbr; Gnum procsidnum; int procsidval; const int * restrict const procsidtab = grafptr->s.procsidtab; vertlocnum = grafptr->s.baseval; procsidnbr = grafptr->s.procsidnbr; procsidnum = 0; procsidval = procsidtab[procsidnum ++]; while (1) { /* Scan all vertices which have foreign neighbors */ while (procsidval < 0) { vertlocnum -= (Gnum) procsidval; procsidval = procsidtab[procsidnum ++]; } if (flagVal (flagloctab, vertlocnum) == 0) { /* If vertex not already processed */ flagSet (flagloctab, vertlocnum); fronloctab[fronlocnbr ++] = vertlocnum; /* Record candidate frontier vertex */ } do { if (procsidnum >= procsidnbr) goto loop_exit; } while ((procsidval = procsidtab[procsidnum ++]) >= 0); } loop_exit : ; } edlolocval = 1; /* Assume no edge loads */ commlocgain = commlocgainextn = 0; for (fronlocnum = 0, vertlocnnd = grafptr->s.vertlocnnd; /* For all potential frontier vertices */ fronlocnum < fronlocnbr; ) { Gnum vertlocnum; Gnum edgelocnum; Gnum commcut; Gnum flagval; vertlocnum = fronloctab[fronlocnum]; partval = partgsttax[vertlocnum]; flagval = flagVal (movegsttab, vertlocnum); for (edgelocnum = vertloctax[vertlocnum], commcut = 0; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertlocend; Gnum flagend; Gnum partend; Gnum partdlt; vertlocend = edgegsttax[edgelocnum]; partend = (Gnum) partgsttax[vertlocend]; flagend = (Gnum) flagVal (movegsttab, vertlocend); if (edloloctax != NULL) edlolocval = edloloctax[edgelocnum]; partdlt = partval ^ partend; /* Compute difference between new parts */ commcut |= partdlt; /* Accumulate difference */ if ((partdlt != 0) && /* If vertices belong to different parts */ (vertlocend < vertlocnnd) && /* And end vertex is local */ (flagVal (flagloctab, vertlocend) == 0)) { /* And end vertex not already queued */ fronloctab[fronlocnbr ++] = vertlocend; /* Add end vertex to frontier queue */ flagSet (flagloctab, vertlocend); /* Flag it to avoid multiple insertions */ } commlocgain += (((- partdlt) & edlolocval) - /* Compute difference between new and old communication loads */ ((- (partdlt ^ flagval ^ flagend)) & edlolocval)); } if (veexloctax != NULL) commlocgainextn += (partval - (partval ^ flagval)) * veexloctax[vertlocnum]; /* Compute half of difference in external load */ if (commcut == 0) { /* If vertex no longer belongs to frontier */ fronloctab[fronlocnum] = fronloctab[-- fronlocnbr]; /* Replace it by another one */ continue; /* Process replacement vertex */ } fronlocnum ++; /* Process next vertex */ } grafptr->fronlocnbr = fronlocnbr; /* Set new number of frontier vertices */ memFree (gainglbtab); /* Free group leader */ reduloctab[0] = grafptr->fronlocnbr; reduloctab[1] = grafptr->complocload0; reduloctab[2] = grafptr->complocsize0; reduloctab[3] = commlocgain * domndist; /* Send internal gain */ reduloctab[4] = commlocgainextn * 2; /* Send external gain */ if (MPI_Allreduce (reduloctab, reduglbtab, 5, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartEx: communication error (5)"); return (1); } grafptr->fronglbnbr = reduglbtab[0]; grafptr->compglbload0 = reduglbtab[1]; grafptr->compglbload0dlt = reduglbtab[1] - grafptr->compglbload0avg; grafptr->compglbsize0 = reduglbtab[2]; grafptr->commglbload += reduglbtab[3] / 2 + reduglbtab[4]; /* Add modifications, counted twice for internal gain */ grafptr->commglbgainextn -= reduglbtab[4]; /* Account for modifications in external gain */ grafptr->bbalglbval = (double) ((grafptr->compglbload0dlt < 0) ? (- grafptr->compglbload0dlt) : grafptr->compglbload0dlt) / (double) grafptr->compglbload0avg; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (grafptr) != 0) { errorPrint ("bdgraphBipartEx: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_zr.h0000644000302600021200000000553013303015264022055 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_zr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** separation method. **/ /** **/ /** DATES : # Version 3.3 : from : 31 may 1999 **/ /** to 31 may 1999 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 01 jan 2002 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int vgraphSeparateZr (Vgraph * const); scotch_6.0.9/src/libscotch/arch_build.h0000644000302600021200000001041413560005302020255 0ustar pelegrinpelegrin/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_build.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the architecture building routine. **/ /** **/ /** DATES : # Version 3.2 : from : 29 may 1997 **/ /** to 01 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 29 nov 2003 **/ /** # Version 6.0 : from : 14 mar 2016 **/ /** to 31 may 2018 **/ /** **/ /** NOTES : # This file contains pieces of code **/ /** extracted from release 3.1 of **/ /** "amk_src.c". **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Job to process. +*/ typedef struct ArchDecoBuildJob_ { struct ArchDecoBuildJob_ * joblink; /*+ Link to job pool +*/ ArchDomNum domnum; /*+ Mapping domain to which vertices belong +*/ Graph grafdat; /*+ Job graph data +*/ } ArchDecoBuildJob; /*+ Vertex distance information. +*/ typedef struct ArchDecoBuildDistElem_ { int queued; /*+ Flag set if vertex queued +*/ Anum distval; /*+ Distance to initial vertex +*/ } ArchDecoBuildDistElem; /*+ Queue element. +*/ typedef struct ArchDecoBuildQueuElem_ { Gnum vertnum; /*+ Vertex number in source graph +*/ Anum distval; /*+ Distance reached +*/ } ArchDecoBuildQueuElem; /* ** The function prototypes. */ #ifdef ARCH_BUILD static void archDecoBuildJobExit (ArchDecoBuildJob *); #endif /* ARCH_BUILD */ int archDecoArchBuild (Arch * const, const Graph * const, const VertList * const, const Strat * const); scotch_6.0.9/src/libscotch/hdgraph_check.c0000644000302600021200000001462013303015264020734 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_check.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** This module contains the distributed **/ /** graph consistency checking routine. **/ /** **/ /** # Version 5.0 : from : 21 apr 2006 **/ /** to : 29 apr 2006 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_CHECK #include "module.h" #include "common.h" #include "dgraph.h" #include "hdgraph.h" /******************************/ /* */ /* These routines handle halo */ /* distributed source graphs. */ /* */ /******************************/ /* This function checks the consistency ** of the given halo distributed graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int hdgraphCheck ( const Hdgraph * restrict const grafptr) { Gnum vertlocnum; int * restrict vhalloctax; /* Flag array for halo vertices */ Gnum vhallocnnd; Gnum vhallocnum; Gnum ehallocnbr; int cheklocval; /* Local consistency flag */ int chekglbval; /* Global consistency flag */ cheklocval = 0; for (vertlocnum = grafptr->s.baseval, ehallocnbr = 0; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { if ((grafptr->vhndloctax[vertlocnum] < grafptr->s.vendloctax[vertlocnum]) || (grafptr->vhndloctax[vertlocnum] > (grafptr->s.edgelocsiz + grafptr->s.baseval))) { errorPrint ("hdgraphCheck: inconsistent local vertex arrays"); cheklocval = 1; } ehallocnbr += grafptr->vhndloctax[vertlocnum] - grafptr->s.vendloctax[vertlocnum]; } if (ehallocnbr != grafptr->ehallocnbr) { errorPrint ("hdgraphCheck: invalid local number of halo edges"); cheklocval = 1; } if ((grafptr->vhallocnbr < 0) || (grafptr->vhallocnbr > grafptr->s.edgelocsiz)) { errorPrint ("hdgraphCheck: invalid local number of halo vertices"); cheklocval = 1; } vhalloctax = NULL; if ((cheklocval == 0) && ((vhalloctax = (int *) memAlloc (grafptr->vhallocnbr * sizeof (int))) == NULL)) { errorPrint ("hdgraphCheck: out of memory"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphCheck: communication error (1)"); return (1); } if (chekglbval != 0) { if (vhalloctax != NULL) memFree (vhalloctax); return (1); } memSet (vhalloctax, ~0, grafptr->vhallocnbr * sizeof (int)); vhalloctax -= grafptr->s.baseval; vhallocnnd = grafptr->vhallocnbr + grafptr->s.baseval; for (vertlocnum = grafptr->s.baseval; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = grafptr->s.vendloctax[vertlocnum]; edgelocnum < grafptr->vhndloctax[vertlocnum]; edgelocnum ++) { Gnum vhallocend; vhallocend = grafptr->s.edgeloctax[edgelocnum]; if ((vhallocend < grafptr->s.baseval) || (vhallocend >= vhallocnnd)) { errorPrint ("hdgraphCheck: invalid halo vertex number"); vertlocnum = grafptr->s.vertlocnnd; /* Avoid unwanted cascaded error messages */ cheklocval = 1; break; } vhalloctax[vhallocend] = 0; /* Flag halo vertex as used */ } } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphCheck: communication error (2)"); return (1); } if (chekglbval != 0) { memFree (vhalloctax + grafptr->s.baseval); return (1); } for (vhallocnum = grafptr->s.baseval; vhallocnum < vhallocnnd; vhallocnum ++) { if (vhalloctax[vhallocnum] != 0) { /* If halo vertex index not used in graph */ errorPrint ("hdgraphCheck: unused halo vertex number"); cheklocval = 1; break; } } memFree (vhalloctax + grafptr->s.baseval); if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphCheck: communication error (3)"); return (1); } if (chekglbval != 0) return (1); return (dgraphCheck (&grafptr->s)); } scotch_6.0.9/src/libscotch/library_memory_f.c0000644000302600021200000000611513560013261021523 0ustar pelegrinpelegrin/* Copyright 2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_memory_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the some miscellaneous routines **/ /** provided by the common files of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 23 sep 2014 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for some miscellaneous routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ NUMSIZEOF, numsizeof, ( \ int * const sizeptr), \ (sizeptr)) { *sizeptr = SCOTCH_numSizeof (); } scotch_6.0.9/src/libscotch/library_graph_map_f.c0000644000302600021200000002727613560013261022164 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** mapping routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 3.4 : from : 02 dec 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 12 dec 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 17 apr 2011 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* ** */ /* TODO update fortran interface... */ SCOTCH_FORTRAN ( \ GRAPHMAPINIT, graphmapinit, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Num * const mapptab, \ int * const revaptr), \ (grafptr, mappptr, archptr, mapptab, revaptr)) { *revaptr = SCOTCH_graphMapInit (grafptr, mappptr, archptr, mapptab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPEXIT, graphmapexit, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr), \ (grafptr, mappptr)) { SCOTCH_graphMapExit (grafptr, mappptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPCOMPUTE, graphmapcompute, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, mappptr, straptr, revaptr)) { *revaptr = SCOTCH_graphMapCompute (grafptr, mappptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPFIXEDCOMPUTE, graphmapfixedcompute, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, mappptr, straptr, revaptr)) { *revaptr = SCOTCH_graphMapFixedCompute (grafptr, mappptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREMAPCOMPUTE, graphremapcompute, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ SCOTCH_Mapping * const mapoptr, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, mappptr, mapoptr, emraptr, vmlotab, straptr, revaptr)) { *revaptr = SCOTCH_graphRemapCompute (grafptr, mappptr, mapoptr, *emraptr, vmlotab, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREMAPFIXEDCOMPUTE, graphremapfixedcompute, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ SCOTCH_Mapping * const mapoptr, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, mappptr, mapoptr, emraptr, vmlotab, straptr, revaptr)) { *revaptr = SCOTCH_graphRemapFixedCompute (grafptr, mappptr, mapoptr, *emraptr, vmlotab, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAP, graphmap, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, archptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphMap (grafptr, archptr, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPFIXED, graphmapfixed, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, archptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphMapFixed (grafptr, archptr, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREMAP, graphremap, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Num * const parotab, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, archptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRemap (grafptr, archptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREMAPFIXED, graphremapfixed, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Num * const parotab, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, archptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRemapFixed (grafptr, archptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHPART, graphpart, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const partptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, partptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphPart (grafptr, *partptr, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHPARTFIXED, graphpartfixed, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const partptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, partptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphPartFixed (grafptr, *partptr, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREPART, graphrepart, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const partptr, \ SCOTCH_Num * const parotab, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, partptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRepart (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHREPARTFIXED, graphrepartfixed, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const partptr, \ SCOTCH_Num * const parotab, \ const double * const emraptr, \ const SCOTCH_Num * const vmlotab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, partptr, parotab, emraptr, vmlotab, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphRepartFixed (grafptr, *partptr, parotab, *emraptr, vmlotab, straptr, parttab); } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ STRATGRAPHMAP, stratgraphmap, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHMAP)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratGraphMap (straptr, strtab); /* Call original routine */ memFree (strtab); } /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHMAPBUILD, stratgraphmapbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const partnbr, \ const double * const kbalval, \ int * const revaptr), \ (straptr, flagval, partnbr, kbalval, revaptr)) { *revaptr = SCOTCH_stratGraphMapBuild (straptr, *flagval, *partnbr, *kbalval); } /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHCLUSTERBUILD, stratgraphclusterbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const pwgtval, \ const double * const densval, \ const double * const bbalval, \ int * const revaptr), \ (straptr, flagval, pwgtval, densval, bbalval, revaptr)) { *revaptr = SCOTCH_stratGraphClusterBuild (straptr, *flagval, *pwgtval, *densval, *bbalval); } scotch_6.0.9/src/libscotch/hmesh_order_st.c0000644000302600021200000003604013303015264021167 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the generic call to the **/ /** halo mesh ordering module, using a **/ /** given strategy. **/ /** **/ /** DATES : # Version 4.0 : from : 28 sep 2002 **/ /** to 05 jan 2005 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_ST #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "hgraph.h" #include "mesh.h" #include "hmesh.h" #include "order.h" #include "hgraph_order_st.h" #include "hmesh_order_bl.h" #include "hmesh_order_cp.h" #include "hmesh_order_gp.h" #include "hmesh_order_gr.h" #include "hmesh_order_hd.h" #include "hmesh_order_hf.h" #include "hmesh_order_nd.h" #include "hmesh_order_si.h" #include "hmesh_order_st.h" #include "vmesh.h" #include "vmesh_separate_st.h" /* ** The static and global variables. */ static Hmesh hmeshorderstmeshdummy; /* Dummy mesh for offset computations */ static union { /* Default parameters for block splitting method */ HmeshOrderBlParam param; /* Parameter zone */ StratNodeMethodData padding; /* To avoid reading out of structure */ } hmeshorderstdefaultbl = { { &stratdummy, 8 } }; static union { HmeshOrderCpParam param; StratNodeMethodData padding; } hmeshorderstdefaultcp = { { 0.70L, &stratdummy, &stratdummy } }; static union { /* Default parameters for nested dissection method */ HmeshOrderGpParam param; StratNodeMethodData padding; } hmeshorderstdefaultgp = { { 3 } }; static union { /* Default parameters for nested dissection method */ HmeshOrderGrParam param; StratNodeMethodData padding; } hmeshorderstdefaultgr = { { &stratdummy } }; static union { HmeshOrderHdParam param; StratNodeMethodData padding; } hmeshorderstdefaulthd = { { 1, 1000000, 0.08L } }; static union { HmeshOrderHfParam param; StratNodeMethodData padding; } hmeshorderstdefaulthf = { { 1, 1000000, 0.08L } }; static union { /* Default parameters for nested dissection method */ HmeshOrderNdParam param; StratNodeMethodData padding; } hmeshorderstdefaultnd = { { &stratdummy, &stratdummy, &stratdummy } }; static StratMethodTab hmeshorderstmethtab[] = { /* Mesh ordering methods array */ { HMESHORDERSTMETHBL, "b", hmeshOrderBl, &hmeshorderstdefaultbl }, { HMESHORDERSTMETHCP, "c", hmeshOrderCp, &hmeshorderstdefaultcp }, { HMESHORDERSTMETHGP, "g", hmeshOrderGp, &hmeshorderstdefaultgp }, { HMESHORDERSTMETHGR, "v", hmeshOrderGr, &hmeshorderstdefaultgr }, { HMESHORDERSTMETHHD, "d", hmeshOrderHd, &hmeshorderstdefaulthd }, { HMESHORDERSTMETHHF, "f", hmeshOrderHf, &hmeshorderstdefaulthf }, { HMESHORDERSTMETHND, "n", hmeshOrderNd, &hmeshorderstdefaultnd }, { HMESHORDERSTMETHSI, "s", hmeshOrderSi, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab hmeshorderstparatab[] = { /* The method parameter list */ { HMESHORDERSTMETHBL, STRATPARAMSTRAT, "strat", (byte *) &hmeshorderstdefaultbl.param, (byte *) &hmeshorderstdefaultbl.param.strat, (void *) &hmeshorderststratab }, { HMESHORDERSTMETHBL, STRATPARAMINT, "cmin", (byte *) &hmeshorderstdefaultbl.param, (byte *) &hmeshorderstdefaultbl.param.cblkmin, NULL }, { HMESHORDERSTMETHCP, STRATPARAMDOUBLE, "rat", (byte *) &hmeshorderstdefaultcp.param, (byte *) &hmeshorderstdefaultcp.param.comprat, NULL }, { HMESHORDERSTMETHCP, STRATPARAMSTRAT, "cpr", (byte *) &hmeshorderstdefaultcp.param, (byte *) &hmeshorderstdefaultcp.param.stratcpr, (void *) &hmeshorderststratab }, { HMESHORDERSTMETHCP, STRATPARAMSTRAT, "unc", (byte *) &hmeshorderstdefaultcp.param, (byte *) &hmeshorderstdefaultcp.param.stratunc, (void *) &hmeshorderststratab }, { HMESHORDERSTMETHGP, STRATPARAMINT, "pass", (byte *) &hmeshorderstdefaultgp.param, (byte *) &hmeshorderstdefaultgp.param.passnbr, NULL }, { HMESHORDERSTMETHGR, STRATPARAMSTRAT, "strat", (byte *) &hmeshorderstdefaultgr.param, (byte *) &hmeshorderstdefaultgr.param.stratptr, (void *) &hgraphorderststratab }, { HMESHORDERSTMETHHD, STRATPARAMINT, "cmin", (byte *) &hmeshorderstdefaulthd.param, (byte *) &hmeshorderstdefaulthd.param.colmin, NULL }, { HMESHORDERSTMETHHD, STRATPARAMINT, "cmax", (byte *) &hmeshorderstdefaulthd.param, (byte *) &hmeshorderstdefaulthd.param.colmax, NULL }, { HMESHORDERSTMETHHD, STRATPARAMDOUBLE, "frat", (byte *) &hmeshorderstdefaulthd.param, (byte *) &hmeshorderstdefaulthd.param.fillrat, NULL }, { HMESHORDERSTMETHHF, STRATPARAMINT, "cmin", (byte *) &hmeshorderstdefaulthf.param, (byte *) &hmeshorderstdefaulthf.param.colmin, NULL }, { HMESHORDERSTMETHHF, STRATPARAMINT, "cmax", (byte *) &hmeshorderstdefaulthf.param, (byte *) &hmeshorderstdefaulthf.param.colmax, NULL }, { HMESHORDERSTMETHHF, STRATPARAMDOUBLE, "frat", (byte *) &hmeshorderstdefaulthf.param, (byte *) &hmeshorderstdefaulthf.param.fillrat, NULL }, { HMESHORDERSTMETHND, STRATPARAMSTRAT, "sep", (byte *) &hmeshorderstdefaultnd.param, (byte *) &hmeshorderstdefaultnd.param.sepstrat, (void *) &vmeshseparateststratab }, { HMESHORDERSTMETHND, STRATPARAMSTRAT, "ole", (byte *) &hmeshorderstdefaultnd.param, (byte *) &hmeshorderstdefaultnd.param.ordstratlea, (void *) &hmeshorderststratab }, { HMESHORDERSTMETHND, STRATPARAMSTRAT, "ose", (byte *) &hmeshorderstdefaultnd.param, (byte *) &hmeshorderstdefaultnd.param.ordstratsep, (void *) &hmeshorderststratab }, { HMESHORDERSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab hmeshorderstcondtab[] = { /* Mesh condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.m.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.vnhlsum, NULL }, { STRATNODECOND, STRATPARAMDOUBLE, "mdeg", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.m.degrmax, NULL }, { STRATNODECOND, STRATPARAMINT, "vnod", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.vnohnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "velm", (byte *) &hmeshorderstmeshdummy, (byte *) &hmeshorderstmeshdummy.m.velmnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab hmeshorderststratab = { /* Strategy tables for mesh ordering methods */ hmeshorderstmethtab, hmeshorderstparatab, hmeshorderstcondtab }; /***********************************/ /* */ /* This routine is the entry point */ /* for the mesh ordering routines. */ /* */ /***********************************/ /* This routine computes an ordering ** with respect to a given strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hmeshOrderSt ( const Hmesh * restrict const meshptr, /*+ Submesh to which list apply +*/ Order * restrict const ordeptr, /*+ Ordering to complete +*/ const Gnum ordenum, /*+ Index to start ordering at +*/ OrderCblk * restrict const cblkptr, /*+ Current column block +*/ const Strat * restrict const strat) /*+ Mesh ordering strategy +*/ { StratTest val; int o; if (meshptr->vnohnbr == 0) /* Return immediately if nothing to do */ return (0); o = 0; switch (strat->type) { case STRATNODECONCAT : errorPrint ("hmeshOrderSt: concatenation operator not implemented for ordering strategies"); return (1); case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) meshptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_HMESH2 if ((val.typetest != STRATTESTVAL) && (val.typenode != STRATPARAMLOG)) { errorPrint ("hmeshOrderSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_HMESH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = hmeshOrderSt (meshptr, ordeptr, ordenum, cblkptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = hmeshOrderSt (meshptr, ordeptr, ordenum, cblkptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : hmeshOrderSi (meshptr, ordeptr, ordenum, cblkptr); /* Always maintain a coherent ordering */ break; case STRATNODESELECT : errorPrint ("hmeshOrderSt: selection operator not available for mesh ordering strategies"); return (1); #ifdef SCOTCH_DEBUG_HMESH2 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_HMESH2 */ default : #endif /* SCOTCH_DEBUG_HMESH2 */ return (strat->tabl->methtab[strat->data.method.meth].func (meshptr, ordeptr, ordenum, cblkptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_HMESH2 default : errorPrint ("hmeshOrderSt: invalid parameter"); return (1); #endif /* SCOTCH_DEBUG_HMESH2 */ } return (o); } scotch_6.0.9/src/libscotch/graph_list.h0000644000302600021200000001140413465315041020325 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_list.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph functions. **/ /** **/ /** DATES : # Version 0.0 : from : 02 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 18 aug 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 28 nov 1995 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 3.3 : from : 28 sep 1998 **/ /** to 23 mar 1999 **/ /** # Version 3.4 : from : 20 mar 2000 **/ /** to 20 mar 2000 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 27 sep 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ #define GRAPH_LIST_H /* ** The type and structure definitions. */ /*+ The vertex list structure. Since a vertex list always refers to a given graph, vertex indices contained in the vertex list array are based with respect to the base value of the associated graph. However, the array itself is not based. +*/ typedef struct VertList_ { Gnum vnumnbr; /*+ Number of vertices in list +*/ Gnum * vnumtab; /*+ Pointer to vertex array +*/ } VertList; /* ** The function prototypes. */ int listInit (VertList *); void listExit (VertList *); int listAlloc (VertList *, Gnum); int listFree (VertList *); int listLoad (VertList *, FILE *); int listSave (VertList *, FILE *); void listSort (VertList *); int listCopy (VertList *, VertList *); scotch_6.0.9/src/libscotch/hmesh_order_nd.c0000644000302600021200000002150513303015264021142 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_nd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders mesh nodes using the **/ /** nested dissection algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 06 jan 2002 **/ /** to 05 jan 2005 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 09 nov 2008 **/ /** # Version 6.0 : from : 15 may 2018 **/ /** to : 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_ND #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_nd.h" #include "hmesh_order_st.h" #include "vmesh.h" #include "vmesh_separate_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderNd ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, const HmeshOrderNdParam * const paraptr) { Hmesh indmeshdat; /* Induced halo mesh data */ Vmesh nspmeshdat; /* Node separation mesh */ Gnum vertnbr; int o; if (hmeshMesh (meshptr, &nspmeshdat.m) != 0) { errorPrint ("hmeshOrderNd: cannot create node separation mesh"); return (1); } nspmeshdat.ecmpsize[0] = nspmeshdat.m.velmnbr; nspmeshdat.ecmpsize[1] = 0; nspmeshdat.ncmpload[0] = nspmeshdat.m.vnlosum; nspmeshdat.ncmpload[1] = 0; nspmeshdat.ncmpload[2] = 0; nspmeshdat.ncmploaddlt = nspmeshdat.m.vnlosum; nspmeshdat.ncmpsize[0] = nspmeshdat.m.vnodnbr; nspmeshdat.ncmpsize[1] = 0; nspmeshdat.fronnbr = 0; nspmeshdat.levlnum = meshptr->levlnum; vertnbr = nspmeshdat.m.velmnbr + nspmeshdat.m.vnodnbr; if (memAllocGroup ((void **) (void *) &nspmeshdat.parttax, (size_t) (vertnbr * sizeof (GraphPart)), &nspmeshdat.frontab, (size_t) (vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshOrderNd: out of memory (1)"); return (1); } memSet (nspmeshdat.parttax, 0, vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ nspmeshdat.parttax -= nspmeshdat.m.baseval; if (vmeshSeparateSt (&nspmeshdat, paraptr->sepstrat) != 0) { /* Separate mesh */ vmeshExit (&nspmeshdat); return (1); } if ((nspmeshdat.ncmpsize[0] == 0) || /* If could not separate more */ (nspmeshdat.ncmpsize[1] == 0)) { vmeshExit (&nspmeshdat); return (hmeshOrderSt (meshptr, ordeptr, ordenum, cblkptr, paraptr->ordstratlea)); /* Order this leaf */ } cblkptr->typeval = ORDERCBLKNEDI; /* Node becomes a nested dissection node */ if ((cblkptr->cblktab = (OrderCblk *) memAlloc (3 * sizeof (OrderCblk))) == NULL) { errorPrint ("hmeshOrderNd: out of memory (2)"); vmeshExit (&nspmeshdat); return (1); } cblkptr->cblktab[0].typeval = ORDERCBLKOTHR; /* Build column blocks */ cblkptr->cblktab[0].vnodnbr = nspmeshdat.ncmpsize[0]; cblkptr->cblktab[0].cblknbr = 0; cblkptr->cblktab[0].cblktab = NULL; cblkptr->cblktab[1].typeval = ORDERCBLKOTHR; cblkptr->cblktab[1].vnodnbr = nspmeshdat.ncmpsize[1]; cblkptr->cblktab[1].cblknbr = 0; cblkptr->cblktab[1].cblktab = NULL; cblkptr->cblktab[2].vnodnbr = nspmeshdat.fronnbr; cblkptr->cblktab[2].cblknbr = 0; cblkptr->cblktab[2].cblktab = NULL; if (nspmeshdat.fronnbr != 0) { /* If separator not empty */ cblkptr->cblknbr = 3; /* It is a three-cell tree node */ ordeptr->cblknbr += 2; /* Two more column blocks created */ ordeptr->treenbr += 3; /* Three more tree nodes created */ cblkptr->cblktab[2].typeval = ORDERCBLKOTHR; cblkptr->cblktab[2].vnodnbr = nspmeshdat.fronnbr; cblkptr->cblktab[2].cblknbr = 0; cblkptr->cblktab[2].cblktab = NULL; if (meshInduceSepa (&nspmeshdat.m, nspmeshdat.parttax, nspmeshdat.fronnbr, nspmeshdat.frontab, &indmeshdat.m) != 0) { errorPrint ("hmeshOrderNd: cannot build induced subgraph (1)"); memFree (nspmeshdat.frontab); /* Free remaining space */ return (1); } indmeshdat.vnohnbr = indmeshdat.m.vnodnbr; /* Fill halo mesh structure of non-halo mesh */ indmeshdat.vnohnnd = indmeshdat.m.vnodnnd; indmeshdat.vehdtax = indmeshdat.m.vendtax; indmeshdat.vnhlsum = indmeshdat.m.vnlosum; indmeshdat.enohnbr = indmeshdat.m.edgenbr; indmeshdat.levlnum = meshptr->levlnum; /* Separator mesh is at level of original mesh */ o = hmeshOrderSt (&indmeshdat, ordeptr, ordenum + nspmeshdat.ncmpsize[0] + nspmeshdat.ncmpsize[1], cblkptr->cblktab + 2, paraptr->ordstratsep); hmeshExit (&indmeshdat); } else { /* Separator is empty */ cblkptr->cblknbr = 2; /* It is a two-cell tree node */ ordeptr->cblknbr ++; /* One more column block created */ ordeptr->treenbr += 2; /* Two more tree nodes created */ o = 0; /* No separator ordering computed */ } if (o == 0) { if (hmeshInducePart (meshptr, nspmeshdat.parttax, 0, nspmeshdat.ecmpsize[0], nspmeshdat.ncmpsize[0], nspmeshdat.fronnbr, &indmeshdat) != 0) { errorPrint ("hmeshOrderNd: cannot build induced subgraph (2)"); memFree (nspmeshdat.frontab); /* Free remaining space */ return (1); } o = hmeshOrderNd (&indmeshdat, ordeptr, ordenum, cblkptr->cblktab, paraptr); hmeshExit (&indmeshdat); } if (o == 0) { if (hmeshInducePart (meshptr, nspmeshdat.parttax, 1, nspmeshdat.ecmpsize[1], nspmeshdat.ncmpsize[1], nspmeshdat.fronnbr, &indmeshdat) != 0) { errorPrint ("hmeshOrderNd: cannot build induced subgraph (3)"); memFree (nspmeshdat.frontab); /* Free remaining space */ return (1); } o = hmeshOrderNd (&indmeshdat, ordeptr, ordenum + nspmeshdat.ncmpsize[0], cblkptr->cblktab + 1, paraptr); hmeshExit (&indmeshdat); } vmeshExit (&nspmeshdat); return (o); } scotch_6.0.9/src/libscotch/hall_order_hx.c0000644000302600021200000003635213560013017021001 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hx.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains service routines **/ /** for interfacing the halo ordering **/ /** routines provided by Patrick Amestoy **/ /** with the ones of libScotch. **/ /** **/ /** DATES : # Version 4.0 : from : 13 jan 2003 **/ /** to : 28 dec 2004 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 29 may 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HALL_ORDER_HX #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hall_order_hx.h" /*********************/ /* */ /* Service routines. */ /* */ /*********************/ /* This routine post-processes the elimination tree ** produced by Amestoy's halo ordering routines. ** On input, the elimination tree is described by ** nvtab and petab. ** On output, we build an un-based elimination tree ** (that is, based to 0), structured as follows: ** - cblknbr : number of column blocks (that is, ** principal variables). ** - sizetab : sizetab[i] holds the total number of ** variables (principal and secondary) if i is ** a principal variable, or ~0 if i is a secondary ** variable or in halo. (sizetab = lentab) ** - petab : petab[i] holds the father of principal ** variable i, or ~0 if i is a root. ** - frsttab : when i is a principal variable, ** frsttab[i] holds the number of the first principal ** son variable of principal variable i, or ~0 if none. ** If i is a secondary variable or in halo, frsttab[i] ** holds ~0 too. ** - nexttab : linked list of principal son variables. ** When i is a principal variable, j=frsttab[i] is ** its first son (if any), and k=nexttab[j] is the ** second son, and l=nexttab[k] is its third son, and ** so on, or ~0 if none. ** - secntab : linked list of secondary variables. ** When i is a principal variable, secntab[i] holds ** the number of the first secondary variable of ** principal variable i, or ~0 if none. When i is ** a secondary variable, secntab[i] holds the next ** secondary variable in linked list, or ~0 if none. ** It returns: ** - 0 : if data structures have been initialized. ** - !0 : on error. */ int hallOrderHxBuild ( const Gnum baseval, /*+ Base value of graph and permutation +*/ const Gnum vertnbr, /*+ Number of vertices in considered graph +*/ const Gnum vnohnbr, /*+ Number of non-halo vertices in considered graph +*/ const Gnum * restrict const vnumtax, /*+ Vertex number array of subgraph, if subgraph +*/ Order * restrict const ordeptr, /*+ Ordering to update +*/ OrderCblk * restrict const cblkptr, /*+ Multiple column-block of ordering +*/ Gnum * restrict const nvartax, Gnum * restrict const sizetax, Gnum * restrict const fathtax, /*+ Was petab +*/ Gnum * restrict const frsttax, Gnum * restrict const nexttax, Gnum * restrict const secntax, Gnum * restrict const desctax, /*+ Was iwtab +*/ Gnum * restrict const permtax, /*+ Based direct permutation array +*/ Gnum * restrict const peritab, /*+ Un-based inverse permutation array +*/ Gnum * restrict const leaftab, /*+ Un-based array for storage of leaves +*/ const Gnum colmin, const Gnum colmax, const float fillrat) { Gnum vnohnnd; Gnum cblknbr; Gnum cblknum; Gnum leafnbr; Gnum leafnum; Gnum rootnum; Gnum ordetmp; Gnum i, j, k; memSet (desctax + baseval, 0, vertnbr * sizeof (Gnum)); memSet (sizetax + baseval, 0, vertnbr * sizeof (Gnum)); memSet (frsttax + baseval, ~0, vertnbr * sizeof (Gnum)); memSet (secntax + baseval, ~0, vertnbr * sizeof (Gnum)); vnohnnd = vnohnbr + baseval; #ifdef SCOTCH_DEBUG_ORDER2 for (i = baseval; i < vnohnnd; i ++) { if ((fathtax[i] > 0) || (fathtax[i] < - vertnbr)) { errorPrint ("hallOrderHxBuild: elimination tree out of bounds"); return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ for (i = baseval, cblknbr = 0, rootnum = ~0; /* Assume no root found yet */ i < vnohnnd; i ++) { if (nvartax[i] != 0) { /* If principal variable */ cblknbr ++; /* One more column block */ sizetax[i] ++; /* One more column */ if ((fathtax[i] < 0) && /* If not root of tree */ (fathtax[i] > - (vnohnbr + 1))) { /* And father not in halo */ fathtax[i] = baseval - (fathtax[i] + 1); /* Re-base father number */ nexttax[i] = frsttax[fathtax[i]]; /* Link vertex to tree */ frsttax[fathtax[i]] = i; /* Variable is first son */ desctax[fathtax[i]] ++; /* Father has one more son */ } else { fathtax[i] = ~0; /* Father is (pseudo-)root */ rootnum = i; /* Record (last) root */ } } else { /* If secondary variable */ fathtax[i] = baseval - (fathtax[i] + 1); /* Re-base father number */ if (fathtax[i] >= vnohnnd) { /* If father in halo */ if (frsttax[fathtax[i]] == ~0) { /* If first such vertex */ cblknbr ++; /* One more column block */ sizetax[i] = 1; /* One more column */ nvartax[i] = 1; /* Make it principal */ frsttax[fathtax[i]] = i; /* Record it as root */ fathtax[i] = ~0; /* Make it (pseudo-)root */ rootnum = i; /* Record (last) root */ continue; /* Skip to next vertex */ } else { fathtax[i] = frsttax[fathtax[i]]; /* Get first such vertex as root */ nvartax[fathtax[i]] ++; /* Record us as secondary variable */ } } sizetax[fathtax[i]] ++; /* One more column */ secntax[i] = secntax[fathtax[i]]; /* Link secondary variable */ secntax[fathtax[i]] = i; } } for (i = baseval, leafnbr = 0; /* Build leaf list for amalgamation */ i < vnohnnd; i ++) { if ((fathtax[i] != ~0) && /* If node has a father */ (nvartax[i] != 0) && /* And is a principal variable */ (frsttax[i] == ~0)) /* And is a leaf */ leaftab[leafnbr ++] = i; /* Add it to leaf list */ } for (leafnum = 0; leafnum < leafnbr; leafnum ++) { /* As long as candidate leaves exist */ i = leaftab[leafnum]; j = fathtax[i]; if ((sizetax[i] + sizetax[j]) <= colmax) { /* If will not be too large */ if ((sizetax[i] < colmin) || /* If column block too small */ (((float) (2 * sizetax[i]) * (float) (nvartax[j] - nvartax[i] + sizetax[i])) < (float) nvartax[j] * (float) nvartax[j] * fillrat)) { nvartax[j] += sizetax[i]; sizetax[j] += sizetax[i]; nvartax[i] = 0; if (secntax[i] == ~0) /* If node had no secondary variables */ secntax[i] = secntax[j]; /* Make it take the ones of its father */ else if (secntax[j] != ~0) { /* Else if there is something to append */ for (k = secntax[i]; secntax[k] != ~0; k = secntax[k]) ; /* Find last node */ secntax[k] = secntax[j]; /* Append father list to node list */ } secntax[j] = i; /* Now he is a secondary variable of it */ if (frsttax[j] == i) { /* If node is first son of father */ if (frsttax[i] == ~0) /* If node has no sons */ frsttax[j] = nexttax[i]; /* First son is now next node */ else { frsttax[j] = frsttax[i]; for (k = frsttax[i]; nexttax[k] != ~0; k = nexttax[k]) fathtax[k] = j; fathtax[k] = j; nexttax[k] = nexttax[i]; } } else { /* Else unlink node from son chain */ for (k = frsttax[j]; nexttax[k] != i; k = nexttax[k]) ; if (frsttax[i] == ~0) /* If node has no sons */ nexttax[k] = nexttax[i]; else { nexttax[k] = frsttax[i]; for (k = frsttax[i]; nexttax[k] != ~0; k = nexttax[k]) fathtax[k] = j; fathtax[k] = j; nexttax[k] = nexttax[i]; } } cblknbr --; /* One less column block */ } } if (((-- desctax[j]) <= 0) && /* If all descendents processed */ (fathtax[j] != ~0)) /* And node has a father */ leaftab[leafnbr ++] = j; /* Enqueue father */ } #ifdef SCOTCH_DEBUG_ORDER2 memSet (peritab, ~0, vnohnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_ORDER2 */ ordetmp = hallOrderHxTree (frsttax, nexttax, secntax, peritab, 0, rootnum); if (ordetmp < vnohnbr) { /* If not all nodes ordered */ for (i = baseval; i < rootnum; i ++) { /* For all potential remaining roots */ if (fathtax[i] == ~0) /* If node is a pseudo-root */ ordetmp = hallOrderHxTree (frsttax, nexttax, secntax, peritab, ordetmp, i); } } #ifdef SCOTCH_DEBUG_ORDER2 if (ordetmp != vnohnbr) { errorPrint ("hallOrderHxBuild: incomplete elimination tree"); return (1); } memSet (permtax + baseval, ~0, vnohnbr * sizeof (Gnum)); for (i = 0; i < vnohnbr; i ++) { if ((peritab[i] < baseval) || (peritab[i] >= vnohnnd)) { errorPrint ("hallOrderHxBuild: permutation out of bounds"); return (1); } if (permtax[peritab[i]] != ~0) { errorPrint ("hallOrderHxBuild: duplicate permutation index"); return (1); } permtax[peritab[i]] = i; } for (i = baseval; i < vnohnnd; i ++) { if (permtax[i] == ~0) { errorPrint ("hallOrderHxBuild: unused permutation index"); return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ if (cblknbr != 1) { /* If more than one column block in the end, create subtree */ if ((cblkptr->cblktab = (OrderCblk *) memAlloc (cblknbr * sizeof (OrderCblk))) == NULL) { errorPrint ("hallOrderHxBuild: out of memory"); return (1); } cblkptr->cblknbr = cblknbr; ordeptr->cblknbr += cblknbr - 1; /* These more column blocks created */ ordeptr->treenbr += cblknbr; /* These more tree nodes created */ for (i = 0, cblknum = 0; i < vnohnbr; i ++) { if (nvartax[peritab[i]] == 0) /* If secondary variable */ continue; /* Skip to next vertex */ cblkptr->cblktab[cblknum].typeval = ORDERCBLKOTHR; /* Build column blocks */ cblkptr->cblktab[cblknum].vnodnbr = sizetax[peritab[i]]; cblkptr->cblktab[cblknum].cblknbr = 0; cblkptr->cblktab[cblknum].cblktab = NULL; cblknum ++; /* One more column block created */ } } if (vnumtax != NULL) { /* If graph is not original graph */ for (i = 0; i < vnohnbr; i ++) /* Finalize inverse permutation */ peritab[i] = vnumtax[peritab[i]]; } return (0); } /*+ This routine computes the inverse *** permutation according to the *** elimination tree. *** It returns: *** - >0 : next index to be used to order, in all cases. +*/ Gnum hallOrderHxTree ( const Gnum * restrict const frsttax, const Gnum * restrict const nexttax, const Gnum * restrict const secntax, Gnum * restrict const peritab, const Gnum ordenum, const Gnum nodenum) { Gnum ordetmp; Gnum nodetmp; ordetmp = ordenum; for (nodetmp = frsttax[nodenum]; nodetmp != ~0; nodetmp = nexttax[nodetmp]) ordetmp = hallOrderHxTree (frsttax, nexttax, secntax, peritab, ordetmp, nodetmp); peritab[ordetmp ++] = nodenum; /* Order principal variable */ for (nodetmp = secntax[nodenum]; nodetmp != ~0; nodetmp = secntax[nodetmp]) { peritab[ordetmp ++] = nodetmp; /* Order secondary variables */ } return (ordetmp); } scotch_6.0.9/src/libscotch/hmesh_order_bl.c0000644000302600021200000001216113303015264021134 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_bl.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module resizes block data using **/ /** the block splitting post-processing **/ /** algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 28 sep 2002 **/ /** to 09 feb 2005 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 25 jul 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_BL #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_bl.h" #include "hmesh_order_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderBl ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HmeshOrderBlParam * restrict const paraptr) { Gnum cblknbr; /* Number of old column blocks before splitting */ Gnum cblknum; /* Number of current column block */ if (paraptr->cblkmin <= 0) { errorPrint ("hmeshOrderBl: invalid minimum block size"); return (1); } if (hmeshOrderSt (meshptr, ordeptr, ordenum, cblkptr, paraptr->strat) != 0) /* Perform ordering strategy */ return (1); if (cblkptr->cblktab == NULL) { /* If single column block */ if (cblkptr->vnodnbr < (2 * paraptr->cblkmin)) /* If block cannot be split */ return (0); cblknbr = cblkptr->vnodnbr / paraptr->cblkmin; /* Get new number of blocks */ if ((cblkptr->cblktab = (OrderCblk *) memAlloc (cblknbr * sizeof (OrderCblk))) == NULL) { errorPrint ("hgraphOrderBl: out of memory"); return (1); } ordeptr->treenbr += cblknbr; /* These more number of tree nodes */ ordeptr->cblknbr += cblknbr - 1; /* These more number of column blocks */ cblkptr->cblknbr = cblknbr; for (cblknum = 0; cblknum < cblknbr; cblknum ++) { cblkptr->cblktab[cblknum].typeval = ORDERCBLKOTHR; cblkptr->cblktab[cblknum].vnodnbr = ((cblkptr->vnodnbr + cblknbr - 1) - cblknum) / cblknbr; cblkptr->cblktab[cblknum].cblknbr = 0; cblkptr->cblktab[cblknum].cblktab = NULL; } } else { /* Block already partitioned */ for (cblknum = 0; cblknum < cblkptr->cblknbr; cblknum ++) { if (hmeshOrderBl (meshptr, ordeptr, ordenum, cblkptr->cblktab + cblknum, paraptr) != 0) return (1); } } return (0); } scotch_6.0.9/src/libscotch/vdgraph_separate_st.c0000644000302600021200000004300413560013732022210 0ustar pelegrinpelegrin/* Copyright 2007-2009,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : This module contains the global **/ /** distributed separation strategy and **/ /** method tables. **/ /** **/ /** DATES : # Version 5.0 : from : 16 feb 2006 **/ /** to 01 aug 2007 **/ /** # Version 5.1 : from : 05 nov 2007 **/ /** to 26 may 2009 **/ /** # Version 6.0 : from : 01 may 2014 **/ /** to 30 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_ST #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "vdgraph.h" #include "vdgraph_separate_bd.h" #include "vdgraph_separate_df.h" #include "vdgraph_separate_ml.h" #include "vdgraph_separate_sq.h" #include "vdgraph_separate_st.h" #include "vdgraph_separate_zr.h" /* ** The static and global variables. */ static Vdgraph vdgraphdummy; /* Dummy distributed separator graph for offset computations */ static union { VdgraphSeparateBdParam param; StratNodeMethodData padding; } vdgraphseparatedefaultbd = { { 3, &stratdummy } }; static union { VdgraphSeparateDfParam param; StratNodeMethodData padding; } vdgraphseparatedefaultdf = { { 0, 300, 1.0, 0.0, 0.2 } }; static union { VdgraphSeparateMlParam param; StratNodeMethodData padding; } vdgraphseparatedefaultml = { { 5, 1000, 2, 10000, 0.8L, &stratdummy, &stratdummy, &stratdummy } }; static union { VdgraphSeparateSqParam param; StratNodeMethodData padding; } vdgraphseparatedefaultsq = { { &stratdummy } }; static StratMethodTab vdgraphseparatestmethtab[] = { /* Distributed graph separation methods array */ { VDGRAPHSEPASTMETHBD, "b", vdgraphSeparateBd, &vdgraphseparatedefaultbd }, { VDGRAPHSEPASTMETHDF, "d", vdgraphSeparateDf, &vdgraphseparatedefaultdf }, { VDGRAPHSEPASTMETHML, "m", vdgraphSeparateMl, &vdgraphseparatedefaultml }, { VDGRAPHSEPASTMETHSQ, "q", vdgraphSeparateSq, &vdgraphseparatedefaultsq }, { VDGRAPHSEPASTMETHZR, "z", vdgraphSeparateZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab vdgraphseparatestparatab[] = { /* Distributed graph separation method parameter list */ { VDGRAPHSEPASTMETHBD, STRATPARAMINT, "width", (byte *) &vdgraphseparatedefaultbd.param, (byte *) &vdgraphseparatedefaultbd.param.distmax, NULL }, { VDGRAPHSEPASTMETHBD, STRATPARAMSTRAT, "strat", (byte *) &vdgraphseparatedefaultbd.param, (byte *) &vdgraphseparatedefaultbd.param.strat, (void *) &vdgraphseparateststratab }, { VDGRAPHSEPASTMETHDF, STRATPARAMINT, "part", (byte *) &vdgraphseparatedefaultdf.param, (byte *) &vdgraphseparatedefaultdf.param.partval, NULL }, { VDGRAPHSEPASTMETHDF, STRATPARAMINT, "pass", (byte *) &vdgraphseparatedefaultdf.param, (byte *) &vdgraphseparatedefaultdf.param.passnbr, NULL }, { VDGRAPHSEPASTMETHDF, STRATPARAMDOUBLE, "bal", (byte *) &vdgraphseparatedefaultdf.param, (byte *) &vdgraphseparatedefaultdf.param.deltval, NULL }, { VDGRAPHSEPASTMETHDF, STRATPARAMDOUBLE, "dif", (byte *) &vdgraphseparatedefaultdf.param, (byte *) &vdgraphseparatedefaultdf.param.cdifval, NULL }, { VDGRAPHSEPASTMETHDF, STRATPARAMDOUBLE, "rem", (byte *) &vdgraphseparatedefaultdf.param, (byte *) &vdgraphseparatedefaultdf.param.cremval, NULL }, { VDGRAPHSEPASTMETHML, STRATPARAMSTRAT, "asc", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.stratasc, (void *) &vdgraphseparateststratab }, { VDGRAPHSEPASTMETHML, STRATPARAMSTRAT, "low", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.stratlow, (void *) &vdgraphseparateststratab }, { VDGRAPHSEPASTMETHML, STRATPARAMSTRAT, "seq", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.stratseq, (void *) &vdgraphseparateststratab }, { VDGRAPHSEPASTMETHML, STRATPARAMINT, "pass", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.passnbr, NULL }, { VDGRAPHSEPASTMETHML, STRATPARAMINT, "vert", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.coarnbr, NULL }, { VDGRAPHSEPASTMETHML, STRATPARAMINT, "dvert", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.foldmax, NULL }, { VDGRAPHSEPASTMETHML, STRATPARAMCASE, "fold", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.foldval, (void *) "nfd" }, { VDGRAPHSEPASTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &vdgraphseparatedefaultml.param, (byte *) &vdgraphseparatedefaultml.param.coarrat, NULL }, { VDGRAPHSEPASTMETHML, STRATPARAMDEPRECATED | STRATPARAMINT, "dlevl", NULL, NULL, NULL }, /* Wait until MUMPS 5.0 */ { VDGRAPHSEPASTMETHML, STRATPARAMDEPRECATED | STRATPARAMINT, "proc", NULL, NULL, NULL }, { VDGRAPHSEPASTMETHSQ, STRATPARAMSTRAT, "strat", (byte *) &vdgraphseparatedefaultsq.param, (byte *) &vdgraphseparatedefaultsq.param.strat, (void *) &vgraphseparateststratab }, { VDGRAPHSEPASTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab vdgraphseparatestcondtab[] = { /* Distributed graph condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.s.edgeglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.s.veloglbsum, NULL }, { STRATNODECOND, STRATPARAMINT, "proc", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.s.procglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "rank", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.s.proclocnum, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &vdgraphdummy, (byte *) &vdgraphdummy.s.vertglbnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab vdgraphseparateststratab = { /* Strategy tables for distributed vertex separation methods */ vdgraphseparatestmethtab, vdgraphseparatestparatab, vdgraphseparatestcondtab }; /*******************************************/ /* */ /* This is the generic separation routine. */ /* */ /*******************************************/ /* This routine computes the separation of the ** given distributed graph according to the given ** strategy. ** All distributed vertex separation routines must ** be collective, that is, they must all return ** the same success or failure return value on all ** of the processors onto which they are run. Else, ** the behavior of the software is unpredictable. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int vdgraphSeparateSt ( Vdgraph * restrict const grafptr, /*+ Distributed separation graph +*/ const Strat * restrict const strat) /*+ Separation strategy +*/ { StratTest val; VdgraphStore savetab[2]; /* Results of the two strategies */ Gnum compglbload2; /* Saved global separator load */ int o; #ifdef SCOTCH_DEBUG_VDGRAPH2 MPI_Comm proccommold; /* Save area for old communicator */ #endif /* SCOTCH_DEBUG_VDGRAPH2 */ #ifdef SCOTCH_DEBUG_VDGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("vdgraphSeparateSt: invalid type specification for parser variables"); return (1); } if (sizeof (VdgraphSeparateSqParam) > sizeof (StratNodeMethodData)) { errorPrint ("vdgraphSeparateSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ #ifdef SCOTCH_DEBUG_VDGRAPH1 if ((strat->tabl != &vdgraphseparateststratab) && (strat != &stratdummy)) { errorPrint ("vdgraphSeparateSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = vdgraphSeparateSt (grafptr, strat->data.concat.strat[0]); /* Apply first strategy */ if (o == 0) /* If it worked all right */ o |= vdgraphSeparateSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_VDGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("vdgraphSeparateSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = vdgraphSeparateSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = vdgraphSeparateSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : /* TODO: Can be multithreaded! */ if (((vdgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((vdgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("vdgraphSeparateSt: out of memory"); vdgraphStoreExit (&savetab[0]); return (1); } vdgraphStoreSave (grafptr, &savetab[1]); /* Save initial bipartition */ if (vdgraphSeparateSt (grafptr, strat->data.select.strat[0]) != 0) { /* If first strategy didn't work */ vdgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ vdgraphStoreSave (grafptr, &savetab[0]); /* Save it as result */ } else { /* First strategy worked */ vdgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ vdgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ } if (vdgraphSeparateSt (grafptr, strat->data.select.strat[1]) != 0) /* If second strategy didn't work */ vdgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition as its result */ compglbload2 = grafptr->s.veloglbsum - savetab[0].compglbload[0] - savetab[0].compglbload[1]; /* Compute saved separator load */ if ( (compglbload2 < grafptr->compglbload[2]) || /* If first strategy is better */ ((compglbload2 == grafptr->compglbload[2]) && (abs (savetab[0].compglbloaddlt) < abs (grafptr->compglbloaddlt)))) vdgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ vdgraphStoreExit (&savetab[0]); /* Free both save areas */ vdgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_VDGRAPH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_VDGRAPH1 */ default : #endif /* SCOTCH_DEBUG_VDGRAPH1 */ #ifdef SCOTCH_DEBUG_VDGRAPH2 proccommold = grafptr->s.proccomm; /* Create new communicator to isolate method communications */ MPI_Comm_dup (proccommold, &grafptr->s.proccomm); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ o = strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data); #ifdef SCOTCH_DEBUG_VDGRAPH2 MPI_Comm_free (&grafptr->s.proccomm); /* Restore old communicator */ grafptr->s.proccomm = proccommold; #endif /* SCOTCH_DEBUG_VDGRAPH2 */ #ifdef SCOTCH_DEBUG_VDGRAPH1 break; default : errorPrint ("vdgraphSeparateSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_VDGRAPH1 */ } return (o); } scotch_6.0.9/src/libscotch/dgraph_match.h0000644000302600021200000001135013560005435020611 0ustar pelegrinpelegrin/* Copyright 2007-2009,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : This file provides the structure **/ /** definitions for the coasening phase of **/ /** the multi-level method. **/ /** **/ /** DATES : # Version 5.0 : from : 04 may 2006 **/ /** to : 21 jun 2007 **/ /** # Version 5.1 : from : 23 nov 2008 **/ /** to : 04 apr 2009 **/ /** # Version 6.0 : from : 03 oct 2012 **/ /** to : 03 oct 2012 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /* This structure contains all the tables describing the matching state */ typedef struct DgraphMatchData_ { DgraphCoarsenData c; /*+ Coarsening structure +*/ Gnum * mategsttax; /*+ Mating table for local and ghost vertices +*/ Gnum matelocnbr; /*+ Number of local matchings +*/ Gnum * queuloctab; /*+ Queue of unmated local vertex +*/ Gnum queulocnbr; /*+ Number of enqueued unmated vertices +*/ Gnum * procvgbtab; /*+ Global vertex number bounds for neighboring processors [+1] +*/ float probval; /*+ Vertex mating probability (1.0 is certain) +*/ } DgraphMatchData; /* ** The function prototypes. */ int dgraphMatchInit (DgraphMatchData * restrict const, const float); void dgraphMatchExit (DgraphMatchData * restrict const); int dgraphMatchSync (DgraphMatchData * restrict const); int dgraphMatchSyncColl (DgraphMatchData * restrict const); int dgraphMatchSyncPtop (DgraphMatchData * restrict const); int dgraphMatchCheck (DgraphMatchData * restrict const); void dgraphMatchHl (DgraphMatchData * restrict const); void dgraphMatchSc (DgraphMatchData * restrict const); void dgraphMatchHy (DgraphMatchData * restrict const); void dgraphMatchLc (DgraphMatchData * restrict const); void dgraphMatchLy (DgraphMatchData * restrict const); scotch_6.0.9/src/libscotch/hmesh_order_st.h0000644000302600021200000000755613465315041021213 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the main halo mesh **/ /** ordering routine. **/ /** **/ /** DATES : # Version 4.0 : from : 28 sep 2002 **/ /** to : 08 feb 2004 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum HmeshOrderStMethodType_ { HMESHORDERSTMETHBL = 0, /*+ Block splitting post-processing +*/ HMESHORDERSTMETHCP, /*+ Mesh compression +*/ HMESHORDERSTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ HMESHORDERSTMETHGR, /*+ Graph-based ordering +*/ HMESHORDERSTMETHHD, /*+ Block Halo Approximate Minimum Degree +*/ HMESHORDERSTMETHHF, /*+ Block Halo Approximate Minimum Fill +*/ HMESHORDERSTMETHND, /*+ Nested Dissection +*/ HMESHORDERSTMETHSI, /*+ Simple +*/ HMESHORDERSTMETHNBR /*+ Number of methods +*/ } HmeshOrderStMethodType; /* ** The external declarations. */ extern StratTab hmeshorderststratab; /* ** The function prototypes. */ int hmeshOrderSt (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const Strat * const); scotch_6.0.9/src/libscotch/graph_check.c0000644000302600021200000002011613470115365020425 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2012,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source graph **/ /** checking function. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 3.3 : from : 22 sep 1998 **/ /** to 31 dec 1998 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 22 apr 2004 **/ /** # Version 5.0 : from : 13 dec 2006 **/ /** to 02 oct 2007 **/ /** # Version 6.0 : from : 27 jun 2011 **/ /** to 23 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "module.h" #include "common.h" #include "graph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine checks the consistency ** of the given graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int graphCheck ( const Graph * const grafptr) { Gnum vertnum; /* Number of current vertex */ Gnum velosum; /* Sum of vertex loads */ Gnum edlosum; /* Sum of edge loads */ Gnum edgenbr; /* Number of edges (arcs) */ Gnum edgenum; /* Number of current edge */ Gnum degrmax; /* Maximum degree */ const Gnum baseval = grafptr->baseval; /* Fast accesses */ const Gnum * restrict const verttax = grafptr->verttax; const Gnum * restrict const vendtax = grafptr->vendtax; const Gnum * restrict const velotax = grafptr->velotax; const Gnum * restrict const edgetax = grafptr->edgetax; const Gnum * restrict const edlotax = grafptr->edlotax; if (grafptr->vertnbr != (grafptr->vertnnd - baseval)) { errorPrint ("graphCheck: invalid vertex numbers"); return (1); } degrmax = edgenbr = 0; velosum = (velotax == NULL) ? grafptr->vertnbr : 0; edlosum = (edlotax == NULL) ? grafptr->edgenbr : 0; for (vertnum = baseval; vertnum < grafptr->vertnnd; vertnum ++) { Gnum degrval; if ((verttax[vertnum] < baseval) || (vendtax[vertnum] < verttax[vertnum])) { errorPrint ("graphCheck: invalid vertex arrays"); return (1); } degrval = vendtax[vertnum] - verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; edgenbr += degrval; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* Number of end vertex */ Gnum edgeend; /* Number of end vertex edge */ vertend = edgetax[edgenum]; if (edlotax != NULL) { Gnum edlotmp; edlotmp = edlosum + edlotax[edgenum]; if (edlotmp < edlosum) { /* If overflow */ errorPrint ("graphCheck: edge load sum overflow"); return (1); } edlosum = edlotmp; } if ((vertend < baseval) || (vertend >= grafptr->vertnnd)) { /* If invalid edge end */ errorPrint ("graphCheck: invalid edge array"); return (1); } if (vertend == vertnum) { /* Loops not allowed */ errorPrint ("graphCheck: loops not allowed"); return (1); } for (edgeend = verttax[vertend]; /* Search for matching arc */ (edgeend < vendtax[vertend]) && (edgetax[edgeend] != vertnum); edgeend ++) ; if ((edgeend >= vendtax[vertend]) || ((edlotax != NULL) && (edlotax[edgenum] != edlotax[edgeend]))) { errorPrint ("graphCheck: arc data do not match"); return (1); } for (edgeend ++; /* Search for duplicate arcs */ (edgeend < vendtax[vertend]) && (edgetax[edgeend] != vertnum); edgeend ++) ; if (edgeend < vendtax[vertend]) { errorPrint ("graphCheck: duplicate arc"); return (1); } } if (velotax != NULL) { Gnum velotmp; if (velotax[vertnum] < 0) { /* If non positive loads */ errorPrint ("graphCheck: invalid vertex load array"); return (1); } velotmp = velosum + velotax[vertnum]; if (velotmp < velosum) { /* If overflow */ errorPrint ("graphCheck: vertex load sum overflow"); return (1); } velosum = velotmp; } } if (grafptr->edgenbr != edgenbr) { errorPrint ("graphCheck: invalid number of edges"); return (1); } if (grafptr->velosum != velosum) { errorPrint ("graphCheck: invalid vertex load sum"); return (1); } if (grafptr->edlosum != edlosum) { errorPrint ("graphCheck: invalid edge load sum"); return (1); } if (grafptr->degrmax < degrmax) { errorPrint ("graphCheck: invalid maximum degree"); return (1); } return (0); } scotch_6.0.9/src/libscotch/library_dgraph_scatter.c0000644000302600021200000000677613560013261022715 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_scatter.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 28 apr 2006 **/ /** to 12 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine scatters the data of a *** centralized graph on a distributed graph. *** It returns: *** - 0 : if the scattering succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphScatter ( SCOTCH_Dgraph * const dgrfptr, const SCOTCH_Graph * const cgrfptr) { const Graph * srccgrfptr; srccgrfptr = (((void *) cgrfptr) == ((void *) dgrfptr)) ? NULL : (const Graph *) cgrfptr; /* Consider same pointers as flag for non-root process */ return (dgraphScatter ((Dgraph *) dgrfptr, srccgrfptr)); } scotch_6.0.9/src/libscotch/bgraph_check.c0000644000302600021200000002077713560005346020601 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the bipartition **/ /** graph consistency checking routine. **/ /** **/ /** DATES : # Version 4.0 : from : 08 jan 2004 **/ /** to 07 dec 2005 **/ /** # Version 5.1 : from : 04 oct 2009 **/ /** to 04 oct 2009 **/ /** # Version 6.0 : from : 06 oct 2013 **/ /** to 25 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "bgraph.h" /*************************/ /* */ /* These routines handle */ /* bipartition graphs. */ /* */ /*************************/ /* This routine checks the consistency ** of the given bipartition graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int bgraphCheck ( const Bgraph * restrict const grafptr) { int * restrict flagtax; /* Frontier flag array */ Gnum vertnum; /* Number of current vertex */ Gnum fronnum; /* Number of frontier vertex */ Gnum compload[2]; Gnum compsize[2]; Gnum commloadintn; Gnum commloadextn; Gnum commgainextn; Gnum edloval; int o; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const GraphPart * restrict const parttax = grafptr->parttax; const Gnum * restrict const frontab = grafptr->frontab; if (grafptr->compload0avg != (Gnum) (((double) (grafptr->s.velosum + grafptr->vfixload[0] + grafptr->vfixload[1]) * (double) grafptr->domnwght[0]) / (double) (grafptr->domnwght[0] + grafptr->domnwght[1])) - grafptr->vfixload[0]) { errorPrint ("bgraphCheck: invalid average load"); return (1); } if (grafptr->compload0 != (grafptr->compload0avg + grafptr->compload0dlt)) { errorPrint ("bgraphCheck: invalid load balance"); return (1); } for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if ((parttax[vertnum] | 1) != 1) { /* If part is neither 0 nor 1 */ errorPrint ("bgraphCheck: invalid part array"); return (1); } } if ((grafptr->fronnbr < 0) || (grafptr->fronnbr > grafptr->s.vertnbr)) { errorPrint ("bgraphCheck: invalid number of frontier vertices"); return (1); } if ((flagtax = memAlloc (grafptr->s.vertnbr * sizeof (int))) == NULL) { errorPrint ("bgraphCheck: out of memory"); return (1); } memSet (flagtax, ~0, grafptr->s.vertnbr * sizeof (int)); flagtax -= grafptr->s.baseval; o = 1; /* Assume failure when checking */ for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { Gnum vertnum; Gnum edgenum; GraphPart partval; GraphPart flagval; vertnum = frontab[fronnum]; if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->s.vertnnd)) { errorPrint ("bgraphCheck: invalid vertex index in frontier array"); goto fail; } if (flagtax[vertnum] != ~0) { errorPrint ("bgraphCheck: duplicate vertex in frontier array"); goto fail; } flagtax[vertnum] = 0; partval = parttax[vertnum]; for (edgenum = verttax[vertnum], flagval = 0; edgenum < vendtax[vertnum]; edgenum ++) flagval |= parttax[edgetax[edgenum]] ^ partval; /* Flag set if neighbor part differs from vertex part */ if (flagval == 0) { errorPrint ("bgraphCheck: invalid vertex in frontier array"); goto fail; } } compload[0] = compload[1] = 0; compsize[0] = compsize[1] = 0; commloadintn = 0; commloadextn = grafptr->commloadextn0; commgainextn = 0; edloval = 1; /* Assume edges are not weighted */ for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum partval; /* Part of current vertex */ Gnum edgenum; /* Number of current edge */ Gnum commcut[2]; partval = (Gnum) parttax[vertnum]; if (grafptr->veextax != NULL) { Gnum veexval; veexval = grafptr->veextax[vertnum]; commloadextn += veexval * partval; commgainextn += veexval * (1 - 2 * partval); } compload[partval] += (velotax == NULL) ? 1 : velotax[vertnum]; compsize[partval] ++; commcut[partval] = 1; /* Create loop to account for own vertex part */ commcut[1 - partval] = 0; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { int partend; int partdlt; if (edlotax != NULL) edloval = edlotax[edgenum]; partend = parttax[edgetax[edgenum]]; partdlt = partval ^ partend; commcut[partend] ++; commloadintn += partdlt * edloval * partend; /* Only count loads once, when (partend == 1) */ } if ((commcut[0] != 0) && (commcut[1] != 0) && /* If vertex should be in frontier array */ (flagtax[vertnum] != 0)) { errorPrint ("bgraphCheck: vertex should be in frontier array"); goto fail; } } if (compsize[0] != grafptr->compsize0) { errorPrint ("bgraphCheck: invalid part size"); goto fail; } if (compload[0] != grafptr->compload0) { errorPrint ("bgraphCheck: invalid part load"); goto fail; } if ((commloadintn * grafptr->domndist + commloadextn) != grafptr->commload) { errorPrint ("bgraphCheck: invalid communication loads"); goto fail; } if (commgainextn != grafptr->commgainextn) { errorPrint ("bgraphCheck: invalid communication gains"); goto fail; } o = 0; /* Everything turned well */ fail : memFree (flagtax + grafptr->s.baseval); return (o); } scotch_6.0.9/src/libscotch/kdgraph_map_rb.c0000644000302600021200000002230413560013072021120 0ustar pelegrinpelegrin/* Copyright 2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm **/ /** in parallel. **/ /** **/ /** DATES : # Version 5.1 : from : 16 apr 2008 **/ /** to 01 jul 2008 **/ /** # Version 6.0 : from : 03 oct 2012 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH_MAP_RB #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "dgraph.h" #include "dmapping.h" #include "kdgraph.h" #include "kdgraph_map_rb.h" #include "kdgraph_map_rb_map.h" #include "kdgraph_map_rb_part.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* These routines add mapping fragments to the distributed ** mapping structure. */ DmappingFrag * kdgraphMapRbAdd2 ( const Gnum vertnbr, const Anum domnnbr) { DmappingFrag * restrict fragptr; if ((fragptr = memAlloc (sizeof (DmappingFrag))) == NULL) { errorPrint ("kdgraphMapRbAdd2: out of memory (1)"); return (NULL); } if (((fragptr->vnumtab = memAlloc (vertnbr * sizeof (Gnum))) == NULL) || ((fragptr->parttab = memAlloc (vertnbr * sizeof (Anum))) == NULL) || ((fragptr->domntab = memAlloc (domnnbr * sizeof (ArchDom))) == NULL)) { errorPrint ("kdgraphMapRbAdd2: out of memory (2)"); if (fragptr->vnumtab != NULL) { if (fragptr->parttab != NULL) memFree (fragptr->parttab); memFree (fragptr->vnumtab); } memFree (fragptr); return (NULL); } fragptr->vertnbr = vertnbr; fragptr->domnnbr = domnnbr; return (fragptr); } int kdgraphMapRbAddBoth ( const Dgraph * restrict const grafptr, Dmapping * restrict const mappptr, const ArchDom * restrict const domnptr, /*+ Pointer to both subdomains +*/ const GraphPart * restrict const parttab) /*+ Bipartition graph part array +*/ { DmappingFrag * restrict fragptr; Anum * restrict fragparttab; Gnum vertlocnum; if ((fragptr = kdgraphMapRbAdd2 (grafptr->vertlocnbr, 2)) == NULL) /* Two domains */ return (1); fragptr->domntab[0] = domnptr[0]; fragptr->domntab[1] = domnptr[1]; if (parttab == NULL) /* If bipartition part array not set */ memSet (fragptr->parttab, 0, grafptr->vertlocnbr * sizeof (Anum)); else { fragparttab = fragptr->parttab; for (vertlocnum = 0; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) fragparttab[vertlocnum] = (Anum) parttab[vertlocnum]; } if (grafptr->vnumloctax != NULL) memCpy (fragptr->vnumtab, grafptr->vnumloctax + grafptr->baseval, fragptr->vertnbr * sizeof (Gnum)); else { Gnum * restrict fragvnumtab; Gnum vertlocadj; Gnum vertlocnum; fragvnumtab = fragptr->vnumtab; for (vertlocnum = 0, vertlocadj = grafptr->procvrttab[grafptr->proclocnum]; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) fragvnumtab[vertlocnum] = vertlocadj + vertlocnum; } dmapAdd (mappptr, fragptr); return (0); } int kdgraphMapRbAddOne ( const Dgraph * restrict const grafptr, Dmapping * restrict const mappptr, const ArchDom * restrict const domnptr) { DmappingFrag * restrict fragptr; if ((fragptr = kdgraphMapRbAdd2 (grafptr->vertlocnbr, 1)) == NULL) /* Only one domain */ return (1); fragptr->domntab[0] = *domnptr; /* Only one domain for this mapping fragment */ memSet (fragptr->parttab, 0, fragptr->vertnbr * sizeof (Anum)); /* All vertices mapped to it */ if (grafptr->vnumloctax != NULL) memCpy (fragptr->vnumtab, grafptr->vnumloctax + grafptr->baseval, fragptr->vertnbr * sizeof (Gnum)); else { Gnum * restrict fragvnumtab; Gnum vertlocadj; Gnum vertlocnum; fragvnumtab = fragptr->vnumtab; for (vertlocnum = 0, vertlocadj = grafptr->procvrttab[grafptr->proclocnum]; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) fragvnumtab[vertlocnum] = vertlocadj + vertlocnum; } dmapAdd (mappptr, fragptr); return (0); } int kdgraphMapRbAddPart ( const Dgraph * restrict const grafptr, Dmapping * restrict const mappptr, const ArchDom * restrict const domnptr, /*+ Pointer to one subdomain +*/ const Gnum vertnbr, const GraphPart * const parttab, const GraphPart partval) { DmappingFrag * restrict fragptr; Gnum * restrict fragvnumtab; Gnum vertlocnum; Gnum partlocnum; if ((fragptr = kdgraphMapRbAdd2 (vertnbr, 1)) == NULL) /* Only one domain and a limited number of vertices */ return (1); fragptr->domntab[0] = *domnptr; /* Only one domain for this mapping fragment */ memSet (fragptr->parttab, 0, fragptr->vertnbr * sizeof (Anum)); /* All vertices mapped to it */ fragvnumtab = fragptr->vnumtab; if (grafptr->vnumloctax != NULL) { const Gnum * restrict vnumtab; for (vertlocnum = partlocnum = 0, vnumtab = grafptr->vnumloctax + grafptr->baseval; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) { if (parttab[vertlocnum] == partval) { #ifdef SCOTCH_DEBUG_KDMAP2 if (partlocnum >= vertnbr) { errorPrint ("kdgraphMapRbAddPart: invalid parameters (1)"); return (1); } #endif /* SCOTCH_DEBUG_KDMAP2 */ fragvnumtab[partlocnum ++] = vnumtab[vertlocnum]; } } } else { Gnum vertlocadj; for (vertlocnum = partlocnum = 0, vertlocadj = grafptr->procvrttab[grafptr->proclocnum]; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) { if (parttab[vertlocnum] == partval) { #ifdef SCOTCH_DEBUG_KDMAP2 if (partlocnum >= vertnbr) { errorPrint ("kdgraphMapRbAddPart: invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_KDMAP2 */ fragvnumtab[partlocnum ++] = vertlocadj + vertlocnum; } } } #ifdef SCOTCH_DEBUG_KDMAP2 if (partlocnum != vertnbr) { errorPrint ("kdgraphMapRbAddPart: invalid parameters (3)"); return (1); } #endif /* SCOTCH_DEBUG_KDMAP2 */ dmapAdd (mappptr, fragptr); return (0); } /* ** This routine runs the parallel Dual ** Recursive Bipartitioning algorithm. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kdgraphMapRb ( Kdgraph * restrict const grafptr, Kdmapping * restrict const mappptr, const KdgraphMapRbParam * restrict const paraptr) { if (grafptr->s.vertglbnbr == 0) /* If nothing to do, return immediately */ return (0); return (archPart (&mappptr->mappptr->archdat) /* If target architecture is some flavor of complete graph */ ? kdgraphMapRbPart (grafptr, mappptr, paraptr) : kdgraphMapRbMap (grafptr, mappptr, paraptr)); } scotch_6.0.9/src/libscotch/library_version_f.c0000644000302600021200000000637213560013261021705 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_version_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** handling API- and version-related **/ /** routines in the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2010 **/ /** to 16 nov 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the version-related routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ VERSION, version, ( \ int * const versptr, \ int * const relaptr, \ int * const patcptr), \ (versptr, relaptr, patcptr)) { SCOTCH_version (versptr, relaptr, patcptr); } scotch_6.0.9/src/libscotch/hdgraph_order_sq.h0000644000302600021200000000662413465315041021514 0ustar pelegrinpelegrin/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_sq.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the halo distributed graph centra- **/ /** lized ordering algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HdgraphOrderSqParam_ { Strat * ordstratseq; /*+ Sequential ordering strategy +*/ } HdgraphOrderSqParam; /* ** The function prototypes. */ #ifdef HDGRAPH_ORDER_SQ static DorderNode * hdgraphOrderSqTree (const Order * const); static void hdgraphOrderSqTree2 (DorderNode * const, Gnum * const, const OrderCblk * const, const Gnum, const Gnum); #endif /* HDGRAPH_ORDER_SQ */ int hdgraphOrderSq2 (Hgraph * restrict const, DorderCblk * restrict const, const Strat * restrict const); int hdgraphOrderSq (Hdgraph * const, DorderCblk * const, const HdgraphOrderSqParam * const); scotch_6.0.9/src/libscotch/geom.h0000644000302600021200000000673213465315041017130 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : geom.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the geometrical data handling **/ /** routines. **/ /** **/ /** DATES : # Version 3.3 : from : 13 dec 1998 **/ /** to 15 dec 1998 **/ /** # Version 3.4 : from : 10 oct 1999 **/ /** to 12 oct 1999 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 18 jan 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ #define GEOM_H /* ** The type and structure definitions. */ /*+ Geometrical graph structure. +*/ typedef struct Geom_ { int dimnnbr; /*+ Geometry type (1, 2, or 3D) +*/ double * geomtab; /*+ Geometrical vertex array +*/ } Geom; /* ** The function prototypes. */ int geomInit (Geom * restrict const); void geomExit (Geom * restrict const); scotch_6.0.9/src/libscotch/kgraph_map_rb.c0000644000302600021200000010251013531054450020755 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm. **/ /** It is now a branching routine. **/ /** **/ /** DATES : # Version 0.0 : from : 31 mar 1993 **/ /** to 31 mar 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 17 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 19 oct 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 14 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 07 sep 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 08 dec 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 07 nov 2001 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 06 mar 2005 **/ /** # Version 5.1 : from : 22 nov 2007 **/ /** to 07 oct 2008 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 21 jun 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_RB #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "arch_dist.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "kgraph.h" #include "kgraph_map_rb.h" #include "kgraph_map_rb_map.h" #include "kgraph_map_rb_part.h" /********************************************/ /* */ /* This is the entry point for the Dual */ /* Recursive Bipartitioning mapping method. */ /* */ /********************************************/ /* This routine runs the Dual Recursive ** Bipartitioning algorithm. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRb ( Kgraph * const grafptr, const KgraphMapRbParam * restrict const paraptr) { KgraphMapRbData datadat; /* Data passed to each bipartitioning job */ Graph indgrafdat; /* Induced graph without fixed vertices */ Graph * restrict indgrafptr; /* Pointer to top-level graph without fixed vertices */ KgraphMapRbVflo * restrict vflotab; /* Array of fixed vertex load slots */ Anum vflonbr; /* Number of fixed vertex load slots */ #ifdef SCOTCH_DEBUG_KGRAPH2 Anum domnnum; #endif /* SCOTCH_DEBUG_KGRAPH2 */ int o; grafptr->kbalval = paraptr->kbalval; /* Store last k-way imbalance ratio */ datadat.grafptr = &grafptr->s; datadat.mappptr = &grafptr->m; datadat.r.mappptr = (grafptr->r.m.parttax != NULL) ? &grafptr->r.m : NULL; datadat.r.vmlotax = grafptr->r.vmlotax; datadat.r.cmloval = grafptr->r.cmloval; datadat.r.crloval = grafptr->r.crloval; datadat.pfixtax = grafptr->pfixtax; datadat.paraptr = paraptr; datadat.comploadrat = grafptr->comploadrat; datadat.comploadmin = (1.0 - paraptr->kbalval) * grafptr->comploadrat; /* Ratio can have been tilted when working on subgraph */ datadat.comploadmax = (1.0 + paraptr->kbalval) * grafptr->comploadrat; if (grafptr->pfixtax == NULL) { indgrafptr = &grafptr->s; /* Work on the original graph */ vflonbr = 0; /* No fixed vertex load slots */ vflotab = NULL; } else { if (kgraphMapRbVfloBuild (grafptr->m.archptr, &grafptr->s, grafptr->vfixnbr, grafptr->pfixtax, &indgrafdat, &vflonbr, &vflotab) != 0) { errorPrint ("kgraphMapRb: cannot create induced graph"); return (1); } indgrafptr = &indgrafdat; } o = ((archPart (grafptr->m.archptr) != 0) ? kgraphMapRbPart : kgraphMapRbMap) (&datadat, indgrafptr, vflonbr, vflotab); /* Compute recursive bipartitioning */ if (grafptr->pfixtax != NULL) { /* If fixed vertices */ memFree (vflotab); /* Not used any longer */ graphExit (&indgrafdat); if (kgraphMapRbVfloMerge (&grafptr->m, grafptr->vfixnbr, grafptr->pfixtax, vflonbr) != 0) { errorPrint ("kgraphMapRb: cannot merge fixed vertex domains"); return (1); } } if (memReallocGroup (grafptr->comploadavg, /* Reallocate cost array according to potential new size */ &grafptr->comploadavg, (size_t) (grafptr->m.domnmax * sizeof (Gnum)), /* TRICK: can send both compload arrays in one piece */ &grafptr->comploaddlt, (size_t) (grafptr->m.domnmax * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphMapRb: out of memory (3)"); return (1); } kgraphFron (grafptr); kgraphCost (grafptr); /* Compute cost of full k-way partition */ #ifdef SCOTCH_DEBUG_KGRAPH2 for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) { if (archDomSize (grafptr->m.archptr, &grafptr->m.domntab[domnnum]) != 1) { errorPrint ("kgraphMapRb: invalid mapping"); return (1); } } if (kgraphCheck (grafptr) != 0) { errorPrint ("kgraphMapRb: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (o); } /*******************************************/ /* */ /* These routines handle fixed vertex load */ /* arrays and fixed vertices. */ /* */ /*******************************************/ /* If the given graph has fixed vertices, this ** routine builds simultaneously an induced subgraph ** from which such vertices have been removed, and ** a list of these fixed vertices. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRbVfloBuild ( const Arch * restrict const archptr, /*+ Target architecture +*/ const Graph * restrict const orggrafptr, /*+ Original graph with fixed vertices +*/ const Gnum orgvfixnbr, /*+ Number of fixed vertices in graph +*/ const Anum * restrict const orgpfixtax, /*+ Array of fixed vertex terminal domains +*/ Graph * restrict const indgrafptr, /*+ Induced subgraph without fixed vertices +*/ Anum * restrict const vflonbrptr, /*+ Pointer to number of fixed vertex slots +*/ KgraphMapRbVflo * restrict * restrict const vflotabptr) /*+ Pointer to fixed vertex load array pointer +*/ { ArchDom domndat; Gnum orgvertnum; GraphPart * restrict orgparttax; /* Part array for induced graph */ KgraphMapRbVflo * restrict hashtab; /* Hash table for merging fixed vertices */ Gnum hashnbr; /* Prospective number of cells in table */ Gnum hashsiz; /* Size of hash table */ Gnum hashnum; Gnum hashmsk; /* Mask for access to hash table */ Gnum velomsk; /* Zero if all fixed vertex loads are zero */ Anum vflonbr; const Gnum * restrict const orgvelotax = orggrafptr->velotax; if (archVar (archptr) == 0) { /* If fixed size architecture */ archDomFrst (archptr, &domndat); hashnbr = archDomSize (archptr, &domndat); /* Get maximum size of distinct terminal domains */ if (orgvfixnbr < hashnbr) hashnbr = orgvfixnbr; } else hashnbr = orgvfixnbr; for (hashsiz = 0, hashmsk = hashnbr; hashmsk != 0; hashsiz ++, hashmsk >>= 1) ; /* Get upper power of two */ hashsiz = 1 << (hashsiz + 2); /* Fill hash table at 25% maximum */ hashmsk = hashsiz - 1; if (memAllocGroup ((void **) (void *) &hashtab, (size_t) (hashsiz * sizeof (KgraphMapRbVflo)), /* Use fixed vertex load slots as hash slots */ &orgparttax, (size_t) (orggrafptr->vertnbr * sizeof (GraphPart)), NULL) == NULL) { errorPrint ("kgraphMapRbVfloBuild: out of memory"); return (1); } orgparttax -= orggrafptr->baseval; memSet (hashtab, ~0, hashsiz * sizeof (KgraphMapRbVflo)); /* Set all vertex numbers to ~0 */ velomsk = 0; /* Assume all fixed vertex loads are zero */ for (orgvertnum = orggrafptr->baseval; orgvertnum < orggrafptr->vertnnd; orgvertnum ++) { Anum orgpfixval; orgpfixval = orgpfixtax[orgvertnum]; if (orgpfixval >= 0) { /* If vertex is a fixed vertex */ Gnum hashnum; Gnum veloval; veloval = (orgvelotax == NULL) ? 1 : orgvelotax[orgvertnum]; /* Get fixed vertex load */ velomsk |= veloval; /* See if all fixed vertex loads are zero */ for (hashnum = (orgpfixval * KGRAPHMAPRBVFLOHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].termnum == orgpfixval) { /* If hash slot found */ hashtab[hashnum].veloval += veloval; /* Add contribution to slot */ break; } if (hashtab[hashnum].termnum == ~0) { /* If hash slot empty */ hashtab[hashnum].termnum = orgpfixval; /* Create slot */ hashtab[hashnum].veloval = veloval; break; } } orgparttax[orgvertnum] = 1; /* Fixed vertex will not be kept in induced subgraph */ } else orgparttax[orgvertnum] = 0; /* Keep non-fixed vertex in induced subgraph */ } if (graphInducePart (orggrafptr, orgparttax, orggrafptr->vertnbr - orgvfixnbr, 0, indgrafptr) != 0) { /* Keep non-fixed vertices in induced graph */ errorPrint ("kgraphMapRbVfloBuild: cannot build induced subgraph"); memFree (hashtab); return (1); } if (velomsk == 0) { /* If all fixed vertex loads are zero */ memFree (hashtab); /* No need to allocate a table */ *vflonbrptr = 0; *vflotabptr = NULL; return (0); } for (hashnum = vflonbr = 0; hashnum < hashsiz; hashnum ++) { /* Recycle hash table into fixed vertex load table */ if (hashtab[hashnum].termnum != ~0) { hashtab[vflonbr] = hashtab[hashnum]; vflonbr ++; } } *vflonbrptr = vflonbr; *vflotabptr = memRealloc (hashtab, vflonbr * sizeof (KgraphMapRbVflo)); return (0); } /* This routine splits the fixed vertex load ** array in two parts, one for each of the two ** provided subdomains. ** It returns: ** - void : in all cases. */ void kgraphMapRbVfloSplit ( const Arch * restrict const archptr, /*+ Target architecture +*/ const ArchDom * restrict const domnsubtab, /*+ Array of the two subdomains +*/ const Anum vflonbr, /*+ Number of fixed vertex load slots +*/ KgraphMapRbVflo * restrict const vflotab, /*+ Fixed vertex load array +*/ Anum * restrict const vflonbrtab, /*+ Number of slots in each subdomain +*/ Gnum * restrict const vflowgttab) /*+ Fixed vertex load in each subdomain +*/ { KgraphMapRbVflo vflodat; /* Temporary swap area */ ArchDom domndat; /* Terminal domain attached to fixed vertex */ Gnum compload0; /* Load of slots in first subdomain */ Gnum compload1; /* Load of slots in second subdomain */ Gnum vflomax; Gnum vflonum; Gnum vflonnd; compload0 = compload1 = 0; vflomax = vflonbr; if (archVar (archptr) == 0) { for (vflonum = 0, vflonnd = vflonbr - 1; vflonum < vflonnd; ) { while (1) { #ifdef SCOTCH_DEBUG_KGRAPH2 int o; o = #endif /* SCOTCH_DEBUG_KGRAPH2 */ archDomTerm (archptr, &domndat, vflotab[vflonum].termnum); #ifdef SCOTCH_DEBUG_KGRAPH2 if (o != 0) { errorPrint ("kgraphMapRbVfloSplit: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (archDomIncl (archptr, &domnsubtab[0], &domndat) == 1) { /* If terminal vertex subdomain included in first subdomain */ compload0 += vflotab[vflonum].veloval; /* Fixed vertex belongs to first subdomain */ if (++ vflonum > vflonnd) /* If passed beyond the limit of the second subdomain */ goto quit; } else { #ifdef SCOTCH_DEBUG_KGRAPH2 if (archDomIncl (archptr, &domnsubtab[1], &domndat) != 1) { /* If terminal vertex subdomain not included in second subdomain */ errorPrint ("kgraphMapRbVfloSplit: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ break; /* We have found a candidate for swapping */ } } while (1) { archDomTerm (archptr, &domndat, vflotab[vflonnd].termnum); if (archDomIncl (archptr, &domnsubtab[1], &domndat) == 1) { /* If terminal vertex subdomain included in second subdomain */ compload1 += vflotab[vflonnd].veloval; /* Fixed vertex belongs to second subdomain */ if (-- vflonnd <= vflonum) { /* If matched the location of a slot that also belongs to second subdomain */ compload1 += vflotab[vflonnd].veloval; /* Add load of reached slot to second subdomain */ goto quit; } } else { #ifdef SCOTCH_DEBUG_KGRAPH2 if (archDomIncl (archptr, &domnsubtab[0], &domndat) != 1) { /* If terminal vertex subdomain not included in first subdomain */ errorPrint ("kgraphMapRbVfloSplit: internal error (3)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ break; /* We have found a candidate for swapping */ } } vflodat = vflotab[vflonum]; /* Swap slots */ vflotab[vflonum] = vflotab[vflonnd]; vflotab[vflonnd] = vflodat; compload0 += vflotab[vflonum ++].veloval; compload1 += vflotab[vflonnd --].veloval; } } else { /* If variable-sized architecture, pseudo-terminals may not always be included */ for (vflonum = 0, vflonnd = vflonbr - 1; vflonum <= vflonnd; ) { #ifdef SCOTCH_DEBUG_KGRAPH2 int o; o = #endif /* SCOTCH_DEBUG_KGRAPH2 */ archDomTerm (archptr, &domndat, vflotab[vflonum].termnum); #ifdef SCOTCH_DEBUG_KGRAPH2 if (o != 0) { errorPrint ("kgraphMapRbVfloSplit: internal error (4)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (archDomIncl (archptr, &domnsubtab[0], &domndat) == 1) { /* If vertex subdomain included in first subdomain */ compload0 += vflotab[vflonum].veloval; /* Fixed vertex belongs to first subdomain */ vflonum ++; continue; /* Keep it in place */ } if (archDomIncl (archptr, &domnsubtab[1], &domndat) == 1) { /* If vertex subdomain included in second subdomain */ compload1 += vflotab[vflonum].veloval; /* Fixed vertex belongs to second subdomain */ vflodat = vflotab[vflonum]; /* Swap slots */ vflotab[vflonum] = vflotab[vflonnd]; vflotab[vflonnd] = vflodat; } else { /* Fixed vertex is more generic than the two subdomains */ vflomax --; /* One less slot to consider in the future */ vflodat = vflotab[vflonum]; /* Swap slots */ vflotab[vflonum] = vflotab[vflonnd]; vflotab[vflonnd] = vflotab[vflomax]; vflotab[vflomax] = vflodat; } vflonnd --; /* One less slot to consider */ } } quit: vflonbrtab[0] = vflonum; vflonbrtab[1] = vflomax - vflonum; vflowgttab[0] = compload0; vflowgttab[1] = compload1; } /* This routine prolongs the given mapping ** with fixed vertices, by merging back with ** regular domains. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRbVfloMerge ( Mapping * restrict const mappptr, /*+ Mapping to prolong +*/ const Gnum vfixnbr, /*+ Number of fixed vertices in graph +*/ const Anum * restrict const pfixtax, /*+ Array of fixed vertex terminal domains +*/ const Anum vflonbr) /*+ Number of fixed vertex load slots +*/ { Anum domnnum; Gnum vertnum; Gnum vertnnd; KgraphMapRbVfloHash * restrict hashtab; /* Hash table for merging fixed vertices */ Gnum hashnbr; /* Prospective number of cells in table */ Gnum hashsiz; /* Size of hash table */ Gnum hashnum; Gnum hashmsk; /* Mask for access to hash table */ const Arch * restrict const archptr = mappptr->archptr; Anum * restrict const parttax = mappptr->parttax; hashnbr = mappptr->domnnbr + vflonbr; for (hashsiz = 0, hashmsk = hashnbr; hashmsk != 0; hashsiz ++, hashmsk >>= 1) ; /* Get upper power of two */ hashsiz = 1 << (hashsiz + 2); /* Fill hash table at 25% maximum */ hashmsk = hashsiz - 1; if ((hashtab = memAlloc (hashsiz * sizeof (KgraphMapRbVfloHash))) == NULL) { /* Use fixed vertex load slots as hash slots */ errorPrint ("kgraphMapRbVfloMerge: out of memory (1)"); return (1); } memSet (hashtab, ~0, hashsiz * sizeof (KgraphMapRbVfloHash)); /* Set all vertex numbers to ~0 */ for (domnnum = 0; domnnum < mappptr->domnnbr; domnnum ++) { /* Load all existing domains into hash table */ Anum termnum; termnum = archDomNum (archptr, &mappptr->domntab[domnnum]); for (hashnum = (termnum * KGRAPHMAPRBVFLOHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].termnum == termnum) /* If domain found */ break; if (hashtab[hashnum].termnum == ~0) { /* If empty slot found */ hashtab[hashnum].termnum = termnum; /* Fill it */ hashtab[hashnum].domnnum = domnnum; break; } } } for (vertnum = mappptr->grafptr->baseval, vertnnd = mappptr->grafptr->vertnnd; vertnum < vertnnd; vertnum ++) { Anum pfixval; pfixval = pfixtax[vertnum]; if (pfixval < 0) { /* If vertex is not a fixed vertex */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (mappptr->parttax[vertnum] < 0) { /* If vertex has not been mapped */ errorPrint ("kgraphMapRbVfloMerge: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; /* Skip to next vertex */ } #ifdef SCOTCH_DEBUG_KGRAPH2 if (mappptr->parttax[vertnum] >= 0) { /* If fixed vertex has been mapped */ errorPrint ("kgraphMapRbVfloMerge: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ for (hashnum = (pfixval * KGRAPHMAPRBVFLOHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].termnum == pfixval) /* If hash slot found */ break; if (hashtab[hashnum].termnum == ~0) { /* If hash slot empty */ if (domnnum >= mappptr->domnmax) { if (mapResize (mappptr, mappptr->domnmax + (mappptr->domnmax >> 2) + 8) != 0) { /* Increase size by 25% */ errorPrint ("kgraphMapRbVfloMerge: out of memory (2)"); return (1); } } archDomTerm (archptr, &mappptr->domntab[domnnum], pfixval); /* Add new domain to domain array */ hashtab[hashnum].termnum = pfixval; /* Create slot */ hashtab[hashnum].domnnum = domnnum; domnnum ++; /* One more domain created */ break; } } parttax[vertnum] = hashtab[hashnum].domnnum; /* Assign fixed vertex to existing domain */ } mappptr->domnnbr = domnnum; memFree (hashtab); return (0); } /*****************************************/ /* */ /* This routine computes external gains. */ /* */ /*****************************************/ /* This routines computes the three kinds of ** external loads and gains that can be associated ** with a bipartitioning job: regular external ** gains arising from former bipartitions, fixed ** vertex gains and remapping gains. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRbBgraph ( const KgraphMapRbData * restrict const dataptr, /*+ Global data +*/ Bgraph * restrict const actgrafptr, /*+ Graph to build +*/ const Graph * restrict const srcgrafptr, /*+ Source graph +*/ const Mapping * restrict const srcmappptr, /*+ Current mapping +*/ const ArchDom * restrict const domnsubtab, /*+ Array of the two subdomains +*/ const Gnum * restrict const vflowgttab) /*+ Array of vertex weight biases +*/ { Gnum actvertnum; /* Number of current active vertex */ Gnum commloadextn0; /* External communication load */ Gnum commgainextn0; /* External communication gain */ Gnum * restrict veextax; /* External gain array */ Gnum veexmsk; /* Flag set if external array useful */ int flagval; int o; const Arch * restrict const archptr = dataptr->mappptr->archptr; const Gnum * restrict const orgverttax = dataptr->grafptr->verttax; const Gnum * restrict const orgvendtax = dataptr->grafptr->vendtax; const Gnum * restrict const orgedgetax = dataptr->grafptr->edgetax; const Gnum * restrict const orgedlotax = dataptr->grafptr->edlotax; const Mapping * restrict const oldmappptr = dataptr->r.mappptr; const Gnum * restrict const orgvmlotax = dataptr->r.vmlotax; const Anum * restrict const orgpfixtax = dataptr->pfixtax; const Gnum * restrict const actverttax = srcgrafptr->verttax; /* Get pointers from source graph before bgraphInit() */ const Gnum * restrict const actvendtax = srcgrafptr->vendtax; const Gnum * restrict const actedgetax = srcgrafptr->edgetax; const Gnum * restrict const actvnumtax = srcgrafptr->vnumtax; if (bgraphInit (actgrafptr, srcgrafptr, srcmappptr->archptr, domnsubtab, vflowgttab) != 0) { errorPrint ("kgraphMapRbBgraph: cannot create bipartition graph"); return (1); } flagval = KGRAPHMAPRBVEEXNONE; /* Assume no processing */ if ((! archPart (archptr)) && (actvnumtax != NULL)) flagval |= KGRAPHMAPRBVEEXMAPP; if (orgpfixtax != NULL) /* Fixed vertices always imply (actvnumtax != NULL) */ flagval |= KGRAPHMAPRBVEEXVFIX; if (dataptr->r.mappptr != NULL) flagval |= KGRAPHMAPRBVEEXREMA; if (flagval == KGRAPHMAPRBVEEXNONE) /* If nothing to do */ return (0); if ((veextax = (Gnum *) memAlloc (actgrafptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphMapRbBgraph: out of memory"); return (1); } veextax -= actgrafptr->s.baseval; o = 1; /* Assume failure */ veexmsk = 0; /* No useful array entry yet */ commloadextn0 = /* No external communication yet */ commgainextn0 = 0; for (actvertnum = actgrafptr->s.baseval; /* Compute external loads */ actvertnum < actgrafptr->s.vertnnd; actvertnum ++) { Gnum commloadextn; /* External communication load for current vertex */ Gnum commgainextn; /* External communication gain for current vertex */ Gnum orgvertnum; /* Number of current original vertex */ commloadextn = /* Assume no external loads */ commgainextn = 0; if (actvnumtax == NULL) /* If active graph is not a subgraph */ orgvertnum = actvertnum; /* Its number is that of original graph */ else { /* Else we have external edges to process */ orgvertnum = actvnumtax[actvertnum]; /* Get vertex number in original graph */ if ((flagval & KGRAPHMAPRBVEEXEDGE) != 0) { /* If edge-based gains have to be computed */ Gnum orgedgenum; Gnum orgedgennd; Gnum actedgenum; Gnum actedgennd; orgedgenum = orgverttax[orgvertnum]; orgedgennd = orgvendtax[orgvertnum]; actedgenum = actverttax[actvertnum]; actedgennd = actvendtax[actvertnum]; if ((orgedgennd - orgedgenum) != (actedgennd - actedgenum)) { /* If vertex has external edges */ Gnum orgedloval; Gnum actvertend; /* Next internal end vertex index to find in original edge array */ orgedloval = 1; /* Assume no edge loads */ actvertend = (actedgenum >= actedgennd) ? ~0 : actvnumtax[actedgetax[actedgenum]]; for ( ; orgedgenum < orgedgennd; orgedgenum ++) { Gnum orgvertend; orgvertend = orgedgetax[orgedgenum]; if (orgvertend == actvertend) { /* If internal edge found */ actedgenum ++; /* Skip internal active edge */ actvertend = (actedgenum >= actedgennd) ? ~0 : actvnumtax[actedgetax[actedgenum]]; /* Set next internal end vertex index to fetch */ continue; /* Skip internal original edge */ } if (orgedlotax != NULL) orgedloval = orgedlotax[orgedgenum]; if (orgpfixtax != NULL) { ArchDom domndat; Anum pfixval; pfixval = orgpfixtax[orgvertend]; if (pfixval >= 0) { /* If end vertex is fixed */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (dataptr->mappptr->parttax[orgvertend] != ~0) { /* If original vertex has a current part */ errorPrint ("kgraphMapRbBgraph: internal error"); goto fail; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (archDomTerm (archptr, &domndat, pfixval) != 0) { /* Get its domain */ errorPrint ("kgraphMapRbBgraph: invalid fixed part array"); goto fail; } commloadextn += (archDomIncl (archptr, &domnsubtab[0], &domndat) != 0) ? 0 : (orgedloval * archDomDist (archptr, &domnsubtab[0], &domndat)); commgainextn += (archDomIncl (archptr, &domnsubtab[1], &domndat) != 0) ? 0 : (orgedloval * archDomDist (archptr, &domnsubtab[1], &domndat)); continue; /* Process next edge */ } } if ((flagval & KGRAPHMAPRBVEEXMAPP) != 0) { /* If mapping */ ArchDom * domnptr; domnptr = mapDomain (srcmappptr, orgvertend); commloadextn += orgedloval * archDomDist (archptr, &domnsubtab[0], domnptr); commgainextn += orgedloval * archDomDist (archptr, &domnsubtab[1], domnptr); } } commloadextn *= dataptr->r.crloval; /* Scale regular, non-remapping gains */ commgainextn *= dataptr->r.crloval; } } } if (oldmappptr != NULL) { /* If remapping gains have to be computed */ ArchDom * domnptr; Gnum edloval; edloval = dataptr->r.cmloval; if (orgvmlotax != NULL) edloval *= orgvmlotax[orgvertnum]; domnptr = mapDomain (oldmappptr, orgvertnum); commloadextn += (archDomIncl (archptr, &domnsubtab[0], domnptr) != 0) ? 0 : (edloval * archDomDist (archptr, &domnsubtab[0], domnptr)); commgainextn += (archDomIncl (archptr, &domnsubtab[1], domnptr) != 0) ? 0 : (edloval * archDomDist (archptr, &domnsubtab[1], domnptr)); } commgainextn -= commloadextn; /* Compute vertex gain */ commloadextn0 += commloadextn; /* Account for external edges */ commgainextn0 += commgainextn; veextax[actvertnum] = commgainextn; /* Record external gain value */ veexmsk |= commgainextn; /* Accumulate non-zero values */ } o = 0; /* Computations succeeded */ fail : if ((o != 0) || (veexmsk == 0)) { /* If external gain array is useless */ memFree (veextax + actgrafptr->s.baseval); /* Forget about it */ return (o); /* Return error code */ } actgrafptr->s.flagval |= BGRAPHFREEVEEX; /* Keep external gain array */ actgrafptr->veextax = veextax; actgrafptr->commload = commloadextn0; /* Account for external gains in future computations */ actgrafptr->commgainextn = commgainextn0; actgrafptr->commloadextn0 = commloadextn0; actgrafptr->commgainextn0 = commgainextn0; #ifdef SCOTCH_DEBUG_KGRAPH2 if (bgraphCheck (actgrafptr) != 0) { errorPrint ("kgraphMapRbBgraph: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hgraph_order_cp.h0000644000302600021200000001101513465315041021315 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_cp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the graph compression **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 29 aug 1998 **/ /** to : 09 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to : 03 jan 1999 **/ /** # Version 4.0 : from : 01 jan 2003 **/ /** to : 01 jan 2003 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 09 nov 2014 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing vertex numbers. +*/ #define HGRAPHORDERCPHASHPRIME 17 /* Prime number */ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderCpParam_ { double comprat; /*+ Compression ratio threshold +*/ Strat * stratcpr; /*+ Compressed subgraph ordering strategy +*/ Strat * stratunc; /*+ Uncompressed subgraph ordering strategy +*/ } HgraphOrderCpParam; /*+ This structure holds fine neighbor hashing data. +*/ typedef struct HgraphOrderCpHash_ { Gnum vertnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum vertend; /*+ Adjacent end vertex number +*/ } HgraphOrderCpHash; /*+ This structure holds coarse neighbor mate data. +*/ typedef struct HgraphOrderCpMate_ { Gnum coarvertend; /*+ Adjacent coarse end vertex number +*/ Gnum finevertend; /*+ Adjacent end vertex number +*/ } HgraphOrderCpMate; /* ** The function prototypes. */ #ifdef HGRAPH_ORDER_CP static Gnum hgraphOrderCpTree (const Gnum * const, const Gnum * const, OrderCblk * const, const Gnum); #endif /* HGRAPH_ORDER_CP */ int hgraphOrderCp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderCpParam * const); scotch_6.0.9/src/libscotch/graph.c0000644000302600021200000001524413470115365017276 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 3.3 : from : 22 sep 1998 **/ /** to 31 dec 1998 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 22 apr 2004 **/ /** # Version 5.1 : from : 08 mar 2011 **/ /** to 08 mar 2011 **/ /** # Version 6.0 : from : 09 sep 2012 **/ /** to 09 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "module.h" #include "common.h" #include "graph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine initializes a source graph ** structure. ** It returns: ** - 0 : in all cases. */ int graphInit ( Graph * const grafptr) { memSet (grafptr, 0, sizeof (Graph)); /* Initialize graph fields */ grafptr->flagval = GRAPHFREETABS; /* By default, free all arrays */ return (0); } /* This routine frees a source graph structure. ** It returns: ** - VOID : in all cases. */ void graphExit ( Graph * const grafptr) { graphFree (grafptr); /* Free graph data */ #ifdef SCOTCH_DEBUG_GRAPH2 memSet (grafptr, ~0, sizeof (Graph)); /* Purge graph fields */ #endif /* SCOTCH_DEBUG_GRAPH2 */ } /* This routine frees the graph data. ** It returns: ** - VOID : in all cases. */ void graphFree ( Graph * const grafptr) { if (((grafptr->flagval & GRAPHFREEEDGE) != 0) && /* If edgetab must be freed */ (grafptr->edgetax != NULL)) /* And if it exists */ memFree (grafptr->edgetax + grafptr->baseval); /* Free it */ if ((grafptr->flagval & GRAPHFREEVERT) != 0) { /* If verttab/vendtab must be freed */ if ((grafptr->vendtax != NULL) && /* If vendtax is distinct from verttab */ (grafptr->vendtax != grafptr->verttax + 1) && /* (if vertex arrays grouped, vendtab not distinct anyway) */ ((grafptr->flagval & GRAPHVERTGROUP) == 0)) memFree (grafptr->vendtax + grafptr->baseval); /* Then free vendtax */ if (grafptr->verttax != NULL) /* Free verttab anyway, as it is the array group leader */ memFree (grafptr->verttax + grafptr->baseval); } if ((grafptr->flagval & GRAPHFREEVNUM) != 0) { /* If vnumtab must be freed */ if ((grafptr->vnumtax != NULL) && /* And is not in vertex array group */ ((grafptr->flagval & GRAPHVERTGROUP) == 0)) memFree (grafptr->vnumtax + grafptr->baseval); } if ((grafptr->flagval & GRAPHFREEOTHR) != 0) { /* If other arrays must be freed */ if ((grafptr->velotax != NULL) && /* Free graph tables */ ((grafptr->flagval & GRAPHVERTGROUP) == 0)) memFree (grafptr->velotax + grafptr->baseval); if ((grafptr->vlbltax != NULL) && ((grafptr->flagval & GRAPHVERTGROUP) == 0)) memFree (grafptr->vlbltax + grafptr->baseval); if ((grafptr->edlotax != NULL) && ((grafptr->flagval & GRAPHEDGEGROUP) == 0)) memFree (grafptr->edlotax + grafptr->baseval); } #ifdef SCOTCH_DEBUG_GRAPH2 memSet (grafptr, ~0, sizeof (Graph)); /* Purge graph fields */ #endif /* SCOTCH_DEBUG_GRAPH2 */ grafptr->flagval = GRAPHNONE; /* Allow to double-call graphFree or call graphExit */ } scotch_6.0.9/src/libscotch/hmesh_order_hd.h0000644000302600021200000000701213465315041021143 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Degree **/ /** mesh ordering routine. **/ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #define HMESHORDERHDCOMPRAT 1.2L /*+ Compression ratio +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderHdParam_ { INT colmin; /*+ Minimum number of columns +*/ INT colmax; /*+ Maximum number of columns +*/ double fillrat; /*+ Fill-in ratio +*/ } HmeshOrderHdParam; /* ** The function prototypes. */ int hmeshOrderHd (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderHdParam * const); scotch_6.0.9/src/libscotch/hdgraph_order_nd.c0000644000302600021200000005061613560013045021460 0ustar pelegrinpelegrin/* Copyright 2007,2008,2012,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_nd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders distributed graphs **/ /** using the nested dissection algorithm. **/ /** **/ /** DATES : # Version 5.0 : from : 16 apr 2006 **/ /** to 01 mar 2008 **/ /** # Version 5.1 : from : 27 sep 2008 **/ /** to 11 nov 2008 **/ /** # Version 6.0 : from : 12 sep 2012 **/ /** to 01 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_ORDER_ND #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_st.h" #include "dgraph.h" #include "dorder.h" #include "hdgraph.h" #include "hdgraph_order_nd.h" #include "hdgraph_order_sq.h" #include "hdgraph_order_st.h" #include "vdgraph.h" #include "vdgraph_separate_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine builds either a centralized or a ** distributed subgraph, according to the number ** of processes in the given part. The calling ** conventions of this routine have been designed ** so as to allow for multi-threading. */ static void * hdgraphOrderNdFold2 ( void * const dataptr) /* Pointer to thread data */ { HdgraphOrderNdData * fldthrdptr; /* Thread input parameters */ HdgraphOrderNdGraph * restrict fldgrafptr; /* Pointer to folded graph area */ Hdgraph indgrafdat; /* Induced distributed halo graph */ void * o; fldthrdptr = (HdgraphOrderNdData *) dataptr; fldgrafptr = fldthrdptr->fldgrafptr; if (hdgraphInduceList (fldthrdptr->orggrafptr, fldthrdptr->indlistnbr, /* Compute unfinished induced subgraph on all processes */ fldthrdptr->indlisttab, &indgrafdat) != 0) return ((void *) 1); o = ((void *) 0); if (fldthrdptr->fldprocnbr > 1) { /* If subpart has several processes, fold a distributed graph */ if (hdgraphFold2 (&indgrafdat, fldthrdptr->fldpartval, /* Fold temporary induced subgraph from all processes */ &fldgrafptr->data.dgrfdat, fldthrdptr->fldproccomm) != 0) o = ((void *) 1); } else { /* Create a centralized graph */ Hgraph * restrict fldcgrfptr; fldcgrfptr = (fldthrdptr->fldprocnum == 0) ? &fldgrafptr->data.cgrfdat : NULL; /* See if we are the receiver */ if (hdgraphGather (&indgrafdat, fldcgrfptr) != 0) /* Gather centralized subgraph from all other processes */ o = ((void *) 1); } hdgraphExit (&indgrafdat); /* Free temporary induced graph */ return (o); } static int hdgraphOrderNdFold ( Hdgraph * restrict const orggrafptr, const Gnum indlistnbr0, /* Number of vertices in subgraph 0 */ const Gnum * restrict const indlisttab0, /* List of vertices in subgraph 0 */ const Gnum indlistnbr1, /* Number of vertices in subgraph 1 */ const Gnum * restrict const indlisttab1, /* List of vertices in subgraph 1 */ HdgraphOrderNdGraph * restrict const fldgrafptr) { HdgraphOrderNdData fldthrdtab[2]; MPI_Comm fldproccomm; int fldprocnbr; int fldprocnum; int fldproccol; int fldpartval; #ifdef SCOTCH_PTHREAD Hdgraph orggrafdat; /* Structure for copying graph fields except communicator */ pthread_t thrdval; /* Data of second thread */ #endif /* SCOTCH_PTHREAD */ int o; #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orggrafptr->s.flagval & DGRAPHHASEDGEGST) == 0) { /* Ghost edge array must have been already computed */ errorPrint ("hdgraphOrderNdFold: internal error"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ fldprocnbr = (orggrafptr->s.procglbnbr + 1) / 2; /* Median cut on number of processors */ fldthrdtab[0].fldprocnbr = fldprocnbr; fldthrdtab[1].fldprocnbr = orggrafptr->s.procglbnbr - fldprocnbr; if (orggrafptr->s.proclocnum < fldprocnbr) { /* Compute color and rank in two subparts */ fldpartval = 0; fldprocnum = orggrafptr->s.proclocnum; fldthrdtab[0].fldprocnum = fldprocnum; fldthrdtab[1].fldprocnum = -1; fldthrdtab[1].fldproccomm = MPI_COMM_NULL; } else { fldpartval = 1; fldprocnum = orggrafptr->s.proclocnum - fldprocnbr; fldprocnbr = orggrafptr->s.procglbnbr - fldprocnbr; fldthrdtab[0].fldproccomm = MPI_COMM_NULL; fldthrdtab[0].fldprocnum = -1; fldthrdtab[1].fldprocnum = fldprocnum; } fldgrafptr->typeval = HDGRAPHORDERNDTYPEDIST; /* Assume we belong to a distributed subpart */ fldproccol = fldpartval; /* Split color is the part value */ if (fldprocnbr <= 1) { /* If our part will have only one processor */ fldproccol = MPI_UNDEFINED; /* Do not create any sub-communicator for it */ fldgrafptr->typeval = HDGRAPHORDERNDTYPECENT; /* We will host a centralized subgraph */ } if (MPI_Comm_split (orggrafptr->s.proccomm, fldproccol, fldprocnum, &fldproccomm) != MPI_SUCCESS) { errorPrint ("hdgraphOrderNdFold: communication error"); return (1); } fldthrdtab[fldpartval].fldproccomm = fldproccomm; /* Assign folded communicator to proper part */ fldthrdtab[0].orggrafptr = orggrafptr; /* Load data to pass to the subgraph building routines */ fldthrdtab[0].indlistnbr = indlistnbr0; fldthrdtab[0].indlisttab = indlisttab0; fldthrdtab[0].fldgrafptr = fldgrafptr; fldthrdtab[0].fldpartval = 0; fldthrdtab[1].indlistnbr = indlistnbr1; fldthrdtab[1].indlisttab = indlisttab1; fldthrdtab[1].fldgrafptr = fldgrafptr; fldthrdtab[1].fldpartval = 1; #ifdef SCOTCH_PTHREAD orggrafdat = *orggrafptr; /* Create a separate graph structure to change its communicator */ fldthrdtab[1].orggrafptr = &orggrafdat; MPI_Comm_dup (orggrafptr->s.proccomm, &orggrafdat.s.proccomm); /* Duplicate communicator to avoid interferences in communications */ if (pthread_create (&thrdval, NULL, hdgraphOrderNdFold2, (void *) &fldthrdtab[1]) != 0) /* If could not create thread */ o = ((int) (intptr_t) hdgraphOrderNdFold2 ((void *) &fldthrdtab[0])) || /* Perform inductions in sequence */ ((int) (intptr_t) hdgraphOrderNdFold2 ((void *) &fldthrdtab[1])); else { /* Newly created thread is processing subgraph 1, so let's process subgraph 0 */ void * o2; o = (int) (intptr_t) hdgraphOrderNdFold2 ((void *) &fldthrdtab[0]); /* Work on copy with private communicator */ pthread_join (thrdval, &o2); o |= (int) (intptr_t) o2; } MPI_Comm_free (&orggrafdat.s.proccomm); #else /* SCOTCH_PTHREAD */ fldthrdtab[1].orggrafptr = orggrafptr; o = ((int) (intptr_t) hdgraphOrderNdFold2 ((void *) &fldthrdtab[0])) || /* Perform inductions in sequence */ ((int) (intptr_t) hdgraphOrderNdFold2 ((void *) &fldthrdtab[1])); #endif /* SCOTCH_PTHREAD */ return (o); } /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hdgraphOrderNd2 ( Hdgraph * restrict const grafptr, DorderCblk * restrict const cblkptr, const HdgraphOrderNdParam * restrict const paraptr) { Vdgraph vspgrafdat; /* Vertex separation graph data */ Gnum vspvertlocnum; /* Current vertex in separation graph */ Gnum * restrict vspvnumtab[2]; /* Lists of separated parts */ Gnum * restrict vspvnumptr0; Gnum * restrict vspvnumptr1; Gnum ordeglbval; Gnum vnodglbnbr; Gnum cblkfthnum; HdgraphOrderNdGraph indgrafdat01; /* Induced folded graph area */ DorderCblk * cblkptr01; int partmax; /* Induced part having most vertices */ int procnbr0; /* Number of processes in first part */ int cheklocval; int chekglbval; int o; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (cblkptr->vnodglbnbr != grafptr->s.vertglbnbr) { errorPrint ("hdgraphOrderNd2: inconsistent parameters"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ if (grafptr->s.procglbnbr == 1) { /* If we are running on a single process */ HdgraphOrderSqParam paradat; paradat.ordstratseq = paraptr->ordstratseq; o = hdgraphOrderSq (grafptr, cblkptr, ¶dat); /* Run sequentially */ hdgraphExit (grafptr); /* Free graph at this level */ return (o); } if (dgraphGhst (&grafptr->s) != 0) { /* Compute ghost edge array if not already present, to have vertgstnbr and procsidtab */ errorPrint ("hdgraphOrderNd2: cannot compute ghost edge array"); hdgraphExit (grafptr); /* Free graph at this level */ return (1); } vspgrafdat.s = grafptr->s; /* Get non-halo part of halo distributed graph */ vspgrafdat.s.flagval &= ~DGRAPHFREEALL; /* Do not free contents of separation graph */ vspgrafdat.s.vlblloctax = NULL; /* Never mind about vertex labels in the future */ cheklocval = 0; if ((vspgrafdat.fronloctab = (Gnum *) memAlloc (vspgrafdat.s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("hdgraphOrderNd2: out of memory (1)"); vspgrafdat.partgsttax = NULL; cheklocval = 1; } else if ((vspgrafdat.partgsttax = (GraphPart *) memAlloc (vspgrafdat.s.vertgstnbr * sizeof (GraphPart))) == NULL) { errorPrint ("hdgraphOrderNd2: out of memory (2)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_HDGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphOrderNd2: communication error (1)"); goto abort; } #else /* SCOTCH_DEBUG_HDGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_HDGRAPH1 */ if (chekglbval != 0) goto abort; vspgrafdat.partgsttax -= vspgrafdat.s.baseval; vspgrafdat.levlnum = grafptr->levlnum; /* Set level of separation graph as level of halo graph */ vdgraphZero (&vspgrafdat); /* Set all local vertices to part 0 */ if (vdgraphSeparateSt (&vspgrafdat, paraptr->sepstrat) != 0) /* Separate vertex-separation graph */ goto abort; if ((vspgrafdat.compglbsize[0] == 0) || /* If could not separate more */ (vspgrafdat.compglbsize[1] == 0)) { memFree (vspgrafdat.partgsttax + vspgrafdat.s.baseval); /* Free useless space */ memFree (vspgrafdat.fronloctab); hdgraphOrderSt (grafptr, cblkptr, paraptr->ordstratlea); /* Order this leaf */ hdgraphExit (grafptr); /* Free graph at this level */ return (0); /* Leaf has been processed */ } vspvnumtab[0] = vspgrafdat.fronloctab + vspgrafdat.complocsize[2]; /* TRICK: build vertex lists within frontier array */ vspvnumtab[1] = vspvnumtab[0] + vspgrafdat.complocsize[0]; vspvnumptr0 = vspvnumtab[0]; vspvnumptr1 = vspvnumtab[1]; for (vspvertlocnum = vspgrafdat.s.baseval; vspvertlocnum < vspgrafdat.s.vertlocnnd; vspvertlocnum ++) { /* Fill lists */ GraphPart partval; partval = vspgrafdat.partgsttax[vspvertlocnum]; if (partval == 0) *(vspvnumptr0 ++) = vspvertlocnum; else if (partval == 1) *(vspvnumptr1 ++) = vspvertlocnum; } memFree (vspgrafdat.partgsttax + vspgrafdat.s.baseval); /* Free useless space */ vspgrafdat.partgsttax = NULL; /* Will not be freed again */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((vspvnumptr0 != vspvnumtab[0] + vspgrafdat.complocsize[0]) || (vspvnumptr1 != vspvnumtab[1] + vspgrafdat.complocsize[1])) { errorPrint ("hdgraphOrderNd2: internal error (1)"); goto abort; } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ cblkptr->typeval = DORDERCBLKNEDI; /* Node becomes a nested dissection node */ if (vspgrafdat.compglbsize[2] != 0) { /* If separator not empty */ DorderCblk * cblkptr2; Hdgraph indgrafdat2; cblkptr2 = dorderNew (cblkptr, grafptr->s.proccomm); /* Create separator node */ cblkptr2->ordeglbval = cblkptr->ordeglbval + grafptr->s.vertglbnbr - vspgrafdat.compglbsize[2]; cblkptr2->vnodglbnbr = vspgrafdat.compglbsize[2]; cblkptr2->cblkfthnum = 2; cblkptr->data.nedi.cblkglbnbr = 3; /* It is a three-cell node */ dgraphInit (&indgrafdat2.s, grafptr->s.proccomm); /* Re-use original graph communicator */ if (dgraphInduceList (&grafptr->s, vspgrafdat.complocsize[2], /* Perform non-halo induction for separator, as it will get highest numbers */ vspgrafdat.fronloctab, &indgrafdat2.s) != 0) { errorPrint ("hdgraphOrderNd2: cannot build induced subgraph (1)"); goto abort; } indgrafdat2.vhallocnbr = 0; /* No halo on graph */ indgrafdat2.vhndloctax = indgrafdat2.s.vendloctax; indgrafdat2.ehallocnbr = 0; indgrafdat2.levlnum = 0; /* Separator graph is at level zero not to be suppressed as an intermediate graph */ o = hdgraphOrderSt (&indgrafdat2, cblkptr2, paraptr->ordstratsep); hdgraphExit (&indgrafdat2); dorderDispose (cblkptr2); /* Dispose of separator column block (may be kept as leaf) */ if (o != 0) goto abort; } else /* Separator is empty */ cblkptr->data.nedi.cblkglbnbr = 2; /* It is a two-cell tree node */ partmax = (vspgrafdat.compglbsize[0] >= vspgrafdat.compglbsize[1]) ? 0 : 1; /* Get part of largest subgraph */ procnbr0 = (grafptr->s.procglbnbr + 1) / 2; /* Get number of processes in part 0 (always more than in part 1) */ if (grafptr->s.proclocnum < procnbr0) { /* If process will handle part 0 (bigger part if odd number of processes) */ ordeglbval = cblkptr->ordeglbval; vnodglbnbr = vspgrafdat.compglbsize[partmax]; cblkfthnum = 0; } else { /* If process will handle part 1 (smaller part if odd number of processes) */ ordeglbval = cblkptr->ordeglbval + vspgrafdat.compglbsize[partmax]; vnodglbnbr = vspgrafdat.compglbsize[partmax ^ 1]; cblkfthnum = 1; } if (hdgraphOrderNdFold (grafptr, vspgrafdat.complocsize[partmax], vspvnumtab[partmax], vspgrafdat.complocsize[partmax ^ 1], vspvnumtab[partmax ^ 1], &indgrafdat01) != 0) goto abort; switch (indgrafdat01.typeval) { case HDGRAPHORDERNDTYPECENT : if ((cblkptr01 = dorderNewSequ (cblkptr)) == NULL) goto abort; if (grafptr->levlnum > 0) { /* If intermediate level nested dissection graph */ hdgraphExit (grafptr); /* Free graph before going to next level */ dorderDispose (cblkptr); /* Dispose of column block node too */ } cblkptr01->ordeglbval = ordeglbval; cblkptr01->vnodglbnbr = vnodglbnbr; cblkptr01->cblkfthnum = cblkfthnum; o = hdgraphOrderSq2 (&indgrafdat01.data.cgrfdat, cblkptr01, paraptr->ordstratseq); hgraphExit (&indgrafdat01.data.cgrfdat); /* Free centralized graph here as it is last level */ break; /* No need to dispose of final column block as locally created by dorderNewSequ */ #ifdef SCOTCH_DEBUG_HDGRAPH2 case HDGRAPHORDERNDTYPEDIST : #else /* SCOTCH_DEBUG_HDGRAPH2 */ default : #endif /* SCOTCH_DEBUG_HDGRAPH2 */ if ((cblkptr01 = dorderNew (cblkptr, indgrafdat01.data.dgrfdat.s.proccomm)) == NULL) goto abort; if (grafptr->levlnum > 0) { /* If intermediate level nested dissection graph */ hdgraphExit (grafptr); /* Free graph before going to next level */ dorderDispose (cblkptr); /* Dispose of column block node too */ } cblkptr01->ordeglbval = ordeglbval; cblkptr01->vnodglbnbr = vnodglbnbr; cblkptr01->cblkfthnum = cblkfthnum; o = hdgraphOrderNd2 (&indgrafdat01.data.dgrfdat, cblkptr01, paraptr); break; #ifdef SCOTCH_DEBUG_HDGRAPH2 default : errorPrint ("hdgraphOrderNd2: internal error (2)"); goto abort; #endif /* SCOTCH_DEBUG_HDGRAPH2 */ } memFree (vspgrafdat.fronloctab); /* Free remaining space */ return (o); abort : if (vspgrafdat.partgsttax != NULL) memFree (vspgrafdat.partgsttax + vspgrafdat.s.baseval); if (vspgrafdat.fronloctab != NULL) memFree (vspgrafdat.fronloctab); hdgraphExit (grafptr); /* Free graph at this level */ return (1); } /* This routine performs the nested dissection ** ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hdgraphOrderNd ( Hdgraph * restrict const grafptr, DorderCblk * restrict const cblkptr, const HdgraphOrderNdParam * restrict const paraptr) { Hdgraph grafdat; /* Cloned graph */ if (dgraphGhst (&grafptr->s) != 0) { /* Compute ghost edge array on un-cloned graph */ errorPrint ("hdgraphOrderNd: cannot compute ghost edge array"); return (1); } grafdat = *grafptr; /* Clone imput graph */ grafdat.s.flagval &= ~HDGRAPHFREETABS; /* Avoid freeing their data in nested dissection */ grafdat.levlnum = 0; /* Nested dissection level 0 */ return (hdgraphOrderNd2 (&grafdat, cblkptr, paraptr)); } scotch_6.0.9/src/libscotch/library_mesh_io_habo.c0000644000302600021200000000664113560013261022326 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_io_habo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Harwell- **/ /** Boeing geometry and mesh handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to 19 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "mesh.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Harwell-Boeing mesh and */ /* geometry handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque geom *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_meshGeomLoadHabo ( SCOTCH_Mesh * restrict const meshptr, SCOTCH_Geom * restrict const geomptr, FILE * const filesrcptr, FILE * const filegeoptr, const char * const dataptr) /* No use */ { return (meshGeomLoadHabo ((Mesh *) meshptr, (Geom *) geomptr, filesrcptr, filegeoptr, dataptr)); } scotch_6.0.9/src/libscotch/mesh_graph.h0000644000302600021200000000606313303015264020306 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_graph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source mesh to source graph **/ /** building routine. **/ /** **/ /** DATES : # Version 4.0 : from : 13 oct 2003 **/ /** to 13 oct 2003 **/ /** **/ /************************************************************/ /* ** The defines. */ /** Prime number for cache-friendly perturbations. **/ #define MESHGRAPHHASHPRIME 37 /* Prime number */ /* ** The type and structure definitions. */ /*+ A table made of such elements is used during graph building to build the edge array of the graph from the one of the mesh. +*/ typedef struct MeshGraphHash_ { Gnum vertnum; /*+ Origin vertex (i.e. pass) number in mesh +*/ Gnum vertend; /*+ End vertex number in mesh +*/ } MeshGraphHash; scotch_6.0.9/src/libscotch/bgraph.c0000644000302600021200000002553713560005346017443 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the bipartition **/ /** graph data structure handling **/ /** routines. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 12 may 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 09 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 01 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 15 aug 1995 **/ /** # Version 3.1 : from : 15 nov 1995 **/ /** to 16 nov 1995 **/ /** # Version 3.2 : from : 24 aug 1996 **/ /** to : 14 oct 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 19 oct 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 31 aug 2004 **/ /** # Version 5.0 : from : 17 dec 2006 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 08 oct 2008 **/ /** to 18 mar 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "bgraph.h" /*************************/ /* */ /* These routines handle */ /* bipartition graphs. */ /* */ /*************************/ /* This routine builds the active graph ** corresponding to the given bipartitioning ** job parameters. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int bgraphInit ( Bgraph * restrict const actgrafptr, /*+ Active graph +*/ const Graph * restrict const srcgrafptr, /*+ Source graph +*/ const Arch * restrict const archptr, /*+ Target architecture +*/ const ArchDom * restrict const domnsubtab, /*+ Array of the two subdomains +*/ const Gnum * restrict const vflowgttab) /*+ Array of vertex weight biases +*/ { Anum domndist; /* Distance between both subdomains */ Anum domnwght0; /* Processor workforce in each domain */ Anum domnwght1; domndist = archDomDist (archptr, &domnsubtab[0], &domnsubtab[1]); /* Get distance between subdomains */ domnwght0 = archDomWght (archptr, &domnsubtab[0]); /* Get weights of subdomains */ domnwght1 = archDomWght (archptr, &domnsubtab[1]); actgrafptr->s = *srcgrafptr; /* Get source graph data */ actgrafptr->s.flagval = ((srcgrafptr->flagval & GRAPHBITSUSED) & ~GRAPHFREETABS) | BGRAPHFREEFRON | BGRAPHFREEPART; /* Graph is a clone with own grouped bipartitioning arrays */ actgrafptr->s.vlbltax = NULL; /* Remove vertex labels */ actgrafptr->veextax = NULL; /* No external gains (yet) */ if (((actgrafptr->parttax = memAlloc (actgrafptr->s.vertnbr * sizeof (GraphPart))) == NULL) || ((actgrafptr->frontab = memAlloc (actgrafptr->s.vertnbr * sizeof (Gnum))) == NULL)) { errorPrint ("bgraphInit: out of memory"); if (actgrafptr->parttax != NULL) memFree (actgrafptr->parttax); return (1); } actgrafptr->parttax -= actgrafptr->s.baseval; bgraphInit2 (actgrafptr, domndist, domnwght0, domnwght1, vflowgttab[0], vflowgttab[1]); #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (actgrafptr) != 0) { errorPrint ("bgraphInit: inconsistent graph data"); bgraphExit (actgrafptr); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } /* This routine fills the internal fields of ** the given active graph. ** It returns: ** - void : in all cases. */ void bgraphInit2 ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const Anum domndist, /*+ Distance between both subdomains +*/ const Anum domnwght0, /*+ Processor workforce in each domain +*/ const Anum domnwght1, const Gnum vfixload0, /*+ Fixed load in each subdomain +*/ const Gnum vfixload1) { grafptr->fronnbr = 0; /* No frontier vertices */ grafptr->compload0min = 0; /* No external constraints on bipartition (yet) */ grafptr->compload0max = grafptr->s.velosum; grafptr->compload0avg = (Gnum) (((double) (grafptr->s.velosum + vfixload0 + vfixload1) * (double) domnwght0) / (double) (domnwght0 + domnwght1)) - vfixload0; grafptr->compload0dlt = grafptr->s.velosum - grafptr->compload0avg; grafptr->compload0 = grafptr->s.velosum; grafptr->compsize0 = grafptr->s.vertnbr; /* Size does not account for fixed vertices */ grafptr->commload = 0; grafptr->commloadextn0 = 0; grafptr->commgainextn = 0; grafptr->commgainextn0 = 0; grafptr->domndist = domndist; grafptr->domnwght[0] = domnwght0; grafptr->domnwght[1] = domnwght1; grafptr->vfixload[0] = vfixload0; grafptr->vfixload[1] = vfixload1; grafptr->bbalval = (double) grafptr->compload0dlt / (double) grafptr->compload0avg; grafptr->levlnum = 0; memSet (grafptr->parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ } /* This routine frees the contents ** of the given active graph. ** It returns: ** - void : in all cases. */ void bgraphExit ( Bgraph * restrict const grafptr) { if ((grafptr->veextax != NULL) && /* External gain array is private */ ((grafptr->s.flagval & BGRAPHFREEVEEX) != 0)) memFree (grafptr->veextax + grafptr->s.baseval); if ((grafptr->frontab != NULL) && ((grafptr->s.flagval & BGRAPHFREEFRON) != 0)) memFree (grafptr->frontab); if ((grafptr->parttax != NULL) && ((grafptr->s.flagval & BGRAPHFREEPART) != 0)) memFree (grafptr->parttax + grafptr->s.baseval); graphExit (&grafptr->s); /* Free re-allocated arrays of cloned source graph, if any */ #ifdef SCOTCH_DEBUG_BGRAPH2 memSet (grafptr, ~0, sizeof (Bgraph)); #endif /* SCOTCH_DEBUG_BGRAPH2 */ } /* This routine swaps all of the graph ** vertices from one part to another, and ** recomputes the resulting gains. ** It returns: ** - void : in all cases. */ void bgraphSwal ( Bgraph * restrict const grafptr) { Gnum vertnnd; Gnum vertnum; Gnum comploadsum; GraphPart * restrict const parttax = grafptr->parttax; for (vertnum = grafptr->s.baseval, vertnnd = grafptr->s.vertnnd; vertnum < vertnnd; vertnum ++) parttax[vertnum] ^= 1; comploadsum = grafptr->s.velosum + grafptr->vfixload[0] + grafptr->vfixload[1]; /* Overall load sum, including fixed vertex loads */ grafptr->compload0 = comploadsum - grafptr->compload0; grafptr->compload0dlt = comploadsum - grafptr->compload0dlt - 2 * grafptr->compload0avg; grafptr->compsize0 = grafptr->s.vertnbr - grafptr->compsize0; /* Size does not account for fixed vertices */ grafptr->commload += grafptr->commgainextn; grafptr->commgainextn = - grafptr->commgainextn; } /* This routine moves all of the graph ** vertices to the first part, and ** computes the resulting gains. ** It returns: ** - void : in all cases. */ void bgraphZero ( Bgraph * restrict const grafptr) { Gnum compload0; compload0 = grafptr->s.velosum + grafptr->vfixload[0]; grafptr->fronnbr = 0; /* No frontier vertices */ grafptr->compload0dlt = compload0 - grafptr->compload0avg; grafptr->compload0 = compload0; grafptr->compsize0 = grafptr->s.vertnbr; grafptr->commload = grafptr->commloadextn0; /* Initialize communication load */ grafptr->commgainextn = grafptr->commgainextn0; grafptr->bbalval = (double) grafptr->compload0dlt / (double) grafptr->compload0avg; memSet (grafptr->parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ } scotch_6.0.9/src/libscotch/arch_sub.c0000644000302600021200000006631613560005302017756 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_sub.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the sub- **/ /** architecture meta-architecture **/ /** functions. **/ /** **/ /** DATES : # Version 6.0 : from : 13 mar 2015 **/ /** to : 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_SUB #include "module.h" #include "common.h" #include "arch.h" #include "arch_sub.h" /**********************************/ /* */ /* These are the sub-architecture */ /* meta-architecture routines. */ /* */ /**********************************/ /* This routine loads the distance ** graph architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archSubArchLoad ( ArchSub * restrict const subarchptr, FILE * restrict const stream) { Arch * orgarchptr; Anum termnbr; Anum termnum; Anum * restrict termtab; int o; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchSub) > sizeof (ArchDummy)) || (sizeof (ArchSubDom) > sizeof (ArchDomDummy))) { errorPrint ("archSubArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (intLoad (stream, &termnbr) != 1) { errorPrint ("archSubArchLoad: bad input (1)"); return (1); } if ((termtab = memAlloc (termnbr * sizeof (Anum))) == NULL) { errorPrint ("archSubArchLoad: out of memory (1)"); return (1); } for (termnum = 0; termnum < termnbr; termnum ++) { if (intLoad (stream, &termtab[termnum]) != 1) { errorPrint ("archSubArchLoad: bad input (2)"); memFree (termtab); return (1); } } if ((orgarchptr = memAlloc (sizeof (Arch))) == NULL) { errorPrint ("archSubArchLoad: out of memory (2)"); memFree (termtab); return (1); } o = archLoad (orgarchptr, stream); if (o == 0) o = archSubArchBuild (subarchptr, orgarchptr, termnbr, termtab); if (o != 0) { archExit (orgarchptr); memFree (orgarchptr); } memFree (termtab); return (o); } /* This routine saves the ** distance graph architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archSubArchSave ( const ArchSub * const archptr, FILE * restrict const stream) { Anum termnbr; Anum termnum; const ArchSubTerm * restrict termtab; #ifdef SCOTCH_DEBUG_ARCH1 if (sizeof (ArchSub) > sizeof (ArchDummy)) { errorPrint ("archSubArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ termnbr = archptr->termnbr; if (fprintf (stream, ANUMSTRING, (Anum) termnbr) == EOF) { errorPrint ("archSubArchSave: bad output (1)"); return (1); } for (termnum = 0, termtab = archptr->termtab; termnum < termnbr; termnum ++) { if (fprintf (stream, " " ANUMSTRING, (Anum) termtab[termnum].termnum) == EOF) { errorPrint ("archSubArchSave: bad output (2)"); return (1); } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archSubArchSave: bad output (3)"); return (1); } return (archSave (archptr->archptr, stream)); } /* This routine frees the sub-architecture structures. ** It returns: ** - 0 : if the architecture has been successfully freed. ** - !0 : on error. */ int archSubArchFree ( ArchSub * const archptr) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchSub) > sizeof (ArchDummy)) || (sizeof (ArchSubDom) > sizeof (ArchDomDummy))) { errorPrint ("archSubArchFree: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((archArch (archptr)->flagval & ARCHFREE) != 0) { /* If sub-architecture needs to be freed too */ archFree (archptr->archptr); memFree (archptr->archptr); } memFree (archptr->termtab); /* Free group leader */ return (0); } /* This routine builds the recursive coarsening ** tree of an architecture. The coarsening is ** performed by applying a variable function that ** operates on a specific set of data. ** It returns: ** - !NULL : root of the recursive coarsening tree. ** - NULL : on error. */ ArchSubTree * archSubArchBuild2 ( void * dataptr, Anum funcptr (void *, ArchCoarsenMulti * restrict *), ArchSubTree * const finetreetab, const Anum finevertnbr) { ArchCoarsenMulti * restrict coarmulttab; ArchSubTree * restrict coartreetab; Anum coarvertnbr; Anum coarvertnum; ArchSubTree * rootptr; if (finevertnbr <= 1) { /* If recursion achieved, start building architecture */ finetreetab[-1].sonstab[0] = NULL; /* TRICK: no other block to link with */ return (finetreetab); /* Return root of subdomain tree */ } if ((coarvertnbr = funcptr (dataptr, &coarmulttab)) < 0) { /* Perform matching */ errorPrint ("archSubArchBuild2: cannot create matching"); return (NULL); } if ((coartreetab = memAlloc ((coarvertnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ errorPrint ("archSubArchBuild2: out of memory"); return (NULL); } finetreetab[-1].sonstab[0] = coartreetab; /* TRICK: Link to coarse array */ coartreetab ++; /* Hide first slot */ for (coarvertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { /* Un-based coarse vertex indices */ Anum finevertnum0; Anum finevertnum1; Anum coardomnsiz; Anum coardomnsiz1; Anum coardomnwgt; Anum coartermnum; ArchSubTree * son0ptr; ArchSubTree * son1ptr; finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; /* Fine vertices must be un-based else mischief may occur */ finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; coardomnsiz = finetreetab[finevertnum0].domnsiz; coardomnwgt = finetreetab[finevertnum0].domnwgt; coartermnum = finetreetab[finevertnum0].termnum; son0ptr = (coardomnsiz > 0) ? &finetreetab[finevertnum0] : NULL; son1ptr = NULL; if (finevertnum1 != finevertnum0) { /* If multinode comprises two fine nodes */ Anum finetermnum1; coardomnsiz1 = finetreetab[finevertnum1].domnsiz; /* Add contributions from second node */ coardomnsiz += coardomnsiz1; coardomnwgt += finetreetab[finevertnum1].domnwgt; finetermnum1 = finetreetab[finevertnum1].termnum; if (finetermnum1 < coartermnum) /* If smaller terminal number found */ coartermnum = finetermnum1; /* Keep it */ if (coardomnsiz1 > 0) son1ptr = &finetreetab[finevertnum1]; } coartreetab[coarvertnum].domnsiz = coardomnsiz; coartreetab[coarvertnum].domnwgt = coardomnwgt; coartreetab[coarvertnum].termnum = coartermnum; coartreetab[coarvertnum].vertnum = coarvertnum; /* Un-based multinode number */ coartreetab[coarvertnum].sonstab[0] = son0ptr; /* Create links to son slot(s) */ coartreetab[coarvertnum].sonstab[1] = son1ptr; } rootptr = archSubArchBuild2 (dataptr, funcptr, coartreetab, coarvertnbr); if (rootptr == NULL) /* On error, do not keep tree arrays */ memFree (coartreetab - 1); return (rootptr); } /* This routine collapses the recursive coarsening tree ** into a decomposition-defined tree, by removing single ** vertices that have not been collapsed. ** It returns: ** - the first free index in the domain array. */ static Anum archSubArchBuild3 ( ArchSubData * restrict const domntab, /*+ Domain array to fill [domnnbr] +*/ ArchSubTerm * restrict const termtab, /*+ Terminal domain array to fill [termnbr] +*/ const ArchSubTree * restrict const treeptr, /*+ Pointer to current node being traversed +*/ const Anum domnnum, /*+ Domain number of current node +*/ const Anum domnidx) /*+ Current first free slot in domain array +*/ { Anum termnum; Anum didxtmp; const ArchSubTree * son0ptr; const ArchSubTree * son1ptr; const ArchSubTree * sonsptr; son0ptr = treeptr->sonstab[0]; son1ptr = treeptr->sonstab[1]; sonsptr = NULL; if (son0ptr != NULL) /* If node is a single node, traverse it without any processing */ sonsptr = son0ptr; if (son1ptr != NULL) sonsptr = (sonsptr != NULL) ? NULL : son1ptr; if (sonsptr != NULL) return (archSubArchBuild3 (domntab, termtab, sonsptr, domnnum, domnidx)); domntab[domnidx].domnnum = domnnum; domntab[domnidx].domnsiz = treeptr->domnsiz; domntab[domnidx].domnwgt = treeptr->domnwgt; termnum = domntab[domnidx].termnum = treeptr->termnum; didxtmp = domnidx + 1; if (son0ptr != NULL) { /* If node is a branch node */ Anum domntmp; domntmp = domnnum * 2; /* Domain number of first son */ domntab[didxtmp].dfatidx = domnidx; domntab[domnidx].dsubidx[0] = didxtmp; didxtmp = archSubArchBuild3 (domntab, termtab, son0ptr, domntmp, didxtmp); domntab[didxtmp].dfatidx = domnidx; domntab[domnidx].dsubidx[1] = didxtmp; didxtmp = archSubArchBuild3 (domntab, termtab, son1ptr, domntmp + 1, didxtmp); } else { domntab[domnidx].dsubidx[0] = domntab[domnidx].dsubidx[1] = -1; termtab[termnum].domnidx = domnidx; } return (didxtmp); } /* This routine builds the sub-architecture of an ** original architecture. ** It returns: ** - 0 : if the sub-architecture has been successfully built. ** - 1 : if the initial architecture does not support sub architectures. ** - 2 : on error. */ int archSubArchBuild ( ArchSub * const subarchptr, Arch * const orgarchptr, const Anum vnumnbr, /* Number of terminal domains in sub-architecture */ const Anum * const vnumtab) /* Ordered list of remaining terminal numbers */ { Anum orgtermnbr; /* Number of terminals in original graph */ Anum orgtermnum; ArchDom orgdomndat; /* Domain in original architecture */ ArchMatch matcdat; /* Data for successive matchings */ ArchSubTree * rootptr; ArchSubTree * restrict treetab; ArchSubTree * restrict treetmp; ArchSubTerm * restrict termtab; ArchSubData * restrict domntab; Anum domnnbr; /* Number of domains */ Anum vnumnum; #ifdef SCOTCH_DEBUG_ARCH1 const char * messptr; /* Pointer to error message */ #endif /* SCOTCH_DEBUG_ARCH1 */ if ((orgarchptr->class->flagval & ARCHVAR) != 0) { errorPrint ("archSubArchBuild: variable-sized architectures not supported"); return (1); } if (orgarchptr->class->matchInit == NULL) { errorPrint ("archSubArchBuild: architecture not supported"); return (1); } archDomFrst (orgarchptr, &orgdomndat); /* Get number of terminal domains in original architecture */ orgtermnbr = archDomSize (orgarchptr, &orgdomndat); #ifdef SCOTCH_DEBUG_ARCH1 if ((vnumnbr < 0) || (vnumnbr > orgtermnbr)) { errorPrint ("archSubArchBuild: invalid number of terminal domains"); return (2); } messptr = NULL; #endif /* SCOTCH_DEBUG_ARCH1 */ domnnbr = 2 * vnumnbr - 1; if (memAllocGroup ((void **) (void *) &termtab, (size_t) (vnumnbr * sizeof (ArchSubTerm)), &domntab, (size_t) (domnnbr * sizeof (ArchSubData)), NULL) == NULL) { errorPrint ("archSubArchBuild: out of memory (1)"); return (2); } if ((treetab = memAlloc ((orgtermnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ errorPrint ("archSubArchBuild: out of memory (2)"); memFree (termtab); return (2); } intRandInit (); /* Initialize random generator for coarsening */ if (orgarchptr->class->matchInit (&matcdat, &orgarchptr->data) != 0) { /* Initialize matching structure with original architecture data */ errorPrint ("archSubArchBuild: cannot initialize matching structure"); memFree (treetab); memFree (termtab); return (2); } treetab ++; /* TRICK: Hide first slot */ subarchptr->archptr = orgarchptr; subarchptr->termnbr = vnumnbr; subarchptr->termtab = termtab; subarchptr->domnnbr = domnnbr; subarchptr->domntab = domntab; for (orgtermnum = 0; orgtermnum < orgtermnbr; orgtermnum ++) { /* Initialize values for all vertices of original architecture */ treetab[orgtermnum].domnsiz = treetab[orgtermnum].domnwgt = 0; treetab[orgtermnum].termnum = treetab[orgtermnum].vertnum = ANUMMAX; treetab[orgtermnum].sonstab[0] = treetab[orgtermnum].sonstab[1] = NULL; } for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all kept terminal numbers */ Anum orgtermnum; /* Terminal number in original architecture */ #ifdef SCOTCH_DEBUG_ARCH2 int o; #endif /* SCOTCH_DEBUG_ARCH2 */ orgtermnum = vnumtab[vnumnum]; #ifdef SCOTCH_DEBUG_ARCH1 if ((orgtermnum < 0) || (orgtermnum >= orgtermnbr)) messptr = "archSubArchBuild: invalid vertex number in vertex list"; else if (treetab[orgtermnum].domnsiz != 0) messptr = "archSubArchBuild: duplicate vertex number in vertex list"; if (messptr != NULL) { errorPrint (messptr); orgarchptr->class->matchExit (&matcdat); /* Free matching structure */ memFree (treetab - 1); memFree (termtab); return (2); } #endif /* SCOTCH_DEBUG_ARCH1 */ #ifdef SCOTCH_DEBUG_ARCH2 o = #endif /* SCOTCH_DEBUG_ARCH2 */ archDomTerm (orgarchptr, &orgdomndat, orgtermnum); #ifdef SCOTCH_DEBUG_ARCH2 if (o != 0) { errorPrint ("archSubArchBuild: internal error (1)"); return (2); } #endif /* SCOTCH_DEBUG_ARCH2 */ termtab[vnumnum].termnum = vnumtab[vnumnum]; /* Record number of original terminal number */ treetab[orgtermnum].domnsiz = 1; /* Here lies one terminal vertex */ treetab[orgtermnum].domnwgt = archDomWght (orgarchptr, &orgdomndat); treetab[orgtermnum].termnum = vnumnum; /* Sub-architecture terminal number in original architecture */ treetab[orgtermnum].vertnum = orgtermnum; /* Vertex number in original architecture */ } rootptr = archSubArchBuild2 (&matcdat, orgarchptr->class->matchMate, treetab, vnumnbr); orgarchptr->class->matchExit (&matcdat); /* Free matching structure */ if (rootptr == NULL) { errorPrint ("archSubArchBuild: cannot create sub-architecture (1)"); memFree (treetab - 1); return (2); } #ifdef SCOTCH_DEBUG_ARCH2 if (rootptr->domnsiz != vnumnbr) { errorPrint ("archSubArchBuild: internal error (2)"); return (2); } #endif /* SCOTCH_DEBUG_ARCH2 */ if (archSubArchBuild3 (domntab, termtab, rootptr, 1, 0) != domnnbr) { errorPrint ("archSubArchBuild: cannot create sub-architecture (2)"); memFree (treetab - 1); return (2); } domntab[0].dfatidx = -1; /* Set index of root father as -1 */ for (treetab --; treetab != NULL; treetab = treetmp) { /* Free all tree blocks */ treetmp = treetab[0].sonstab[0]; /* Get pointer to next tree block */ memFree (treetab); } return (0); } /* This routine initializes the matching ** data structure according to the number ** of vertices to be managed. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archSubMatchInit ( ArchSubMatch * restrict const matcptr, const ArchSub * restrict const archptr) { Anum termnbr; Anum termnum; Anum domnmax; Anum levlnbr; Anum multnbr; const ArchSubTerm * restrict const termtab = archptr->termtab; const ArchSubData * restrict const domntab = archptr->domntab; for (termnum = 0, termnbr = archptr->termnbr, domnmax = 0; /* Get maximum domain number */ termnum < termnbr; termnum ++) { Anum domnval; domnval = domntab[termtab[termnum].domnidx].domnnum; if (domnval > domnmax) domnmax = domnval; } for (levlnbr = 1; domnmax > 0; levlnbr ++, domnmax >>= 1) ; /* Compute maximum recursion level in bipartitioning tree */ multnbr = 1 << levlnbr; /* Maximum number of multinodes is the size of last level */ if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { errorPrint ("archSubMatchInit: out of memory"); return (1); } matcptr->domntab = archptr->domntab; /* Keep pointer to sub-architecture domain array */ matcptr->levlnum = matcptr->levlmax = levlnbr - 1; return (0); } /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ void archSubMatchExit ( ArchSubMatch * restrict const matcptr) { memFree (matcptr->multtab); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ static void archSubMatchMate2 ( ArchSubMatch * restrict const matcptr, const ArchSubData * restrict const domnptr, const Anum levlnum) { const ArchSubData * restrict domntab; Anum levlcur; levlcur = matcptr->levlnum; if (domnptr->dsubidx[0] == -1) { /* If node is terminal */ Anum vertnum; Anum multnum; ArchCoarsenMulti * restrict const multtab = matcptr->multtab; vertnum = (levlcur == matcptr->levlmax) ? domnptr->termnum : matcptr->vertnum ++; /* If last level, provide terminal number, else vertex number */ multnum = matcptr->multnum ++; /* One more multinode created */ multtab[multnum].vertnum[0] = /* In fact, it is a single node */ multtab[multnum].vertnum[1] = vertnum; return; } domntab = matcptr->domntab; if (levlnum == levlcur) { /* If recursion achieved proper level */ Anum vertnum0; Anum vertnum1; Anum multnum; ArchCoarsenMulti * restrict const multtab = matcptr->multtab; if (levlcur == matcptr->levlmax) { /* If last level, get terminal numbers */ vertnum0 = domntab[domnptr->dsubidx[0]].termnum; vertnum1 = domntab[domnptr->dsubidx[1]].termnum; } else { /* Else compute vertex numbers from previous level */ vertnum0 = matcptr->vertnum; vertnum1 = vertnum0 + 1; matcptr->vertnum = vertnum0 + 2; } multnum = matcptr->multnum ++; /* Create multinode */ multtab[multnum].vertnum[0] = vertnum0; multtab[multnum].vertnum[1] = vertnum1; } else { /* Else perform recursion */ archSubMatchMate2 (matcptr, &domntab[domnptr->dsubidx[0]], levlnum + 1); archSubMatchMate2 (matcptr, &domntab[domnptr->dsubidx[1]], levlnum + 1); } } Anum archSubMatchMate ( ArchSubMatch * restrict const matcptr, ArchCoarsenMulti ** restrict const multptr) { if (matcptr->levlnum < 0) /* If already reached root of tree, abort */ return (-1); matcptr->multnum = /* Reset counters for current level */ matcptr->vertnum = 0; archSubMatchMate2 (matcptr, &matcptr->domntab[0], 0); /* Build multinodes for current level */ matcptr->levlnum --; /* Prepare to perform previous level */ *multptr = matcptr->multtab; /* Always provide same mating array */ return (matcptr->multnum); /* Return number of multinodes computed at this level */ } /* This function returns the representative ** terminal domain number for the given domain. */ ArchDomNum archSubDomNum ( const ArchSub * const archptr, const ArchSubDom * const domnptr) { return (archptr->domntab[domnptr->domnidx].termnum); } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archSubDomTerm ( const ArchSub * const archptr, ArchSubDom * const domnptr, const ArchDomNum termnum) { if (termnum >= archptr->termnbr) return (1); domnptr->domnidx = archptr->termtab[termnum].domnidx; return (0); } /* This function returns the number of ** elements in the domain. */ Anum archSubDomSize ( const ArchSub * const archptr, const ArchSubDom * const domnptr) { return (archptr->domntab[domnptr->domnidx].domnsiz); } /* This function returns the weight of ** the given distance domain. */ Anum archSubDomWght ( const ArchSub * const archptr, const ArchSubDom * const domnptr) { return (archptr->domntab[domnptr->domnidx].domnwgt); } /* This function returns the average ** distance between two distance ** subdomains. */ Anum archSubDomDist ( const ArchSub * const archptr, const ArchSubDom * const dom0ptr, const ArchSubDom * const dom1ptr) { ArchDom dom0dat; /* Domains of underlying architecture */ ArchDom dom1dat; archDomTerm (archptr->archptr, &dom0dat, archptr->termtab[archptr->domntab[dom0ptr->domnidx].termnum].termnum); /* Build corresponding subdomains in underlying architecture */ archDomTerm (archptr->archptr, &dom1dat, archptr->termtab[archptr->domntab[dom1ptr->domnidx].termnum].termnum); return (archDomDist (archptr->archptr, &dom0dat, &dom1dat)); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archSubDomFrst ( const ArchSub * const archptr, ArchSubDom * restrict const domnptr) { domnptr->domnidx = 0; /* First domain index is slot 0 */ return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archSubDomLoad ( const ArchSub * const archptr, ArchSubDom * restrict const domnptr, FILE * const stream) { if ((intLoad (stream, &domnptr->domnidx) != 1) || (domnptr->domnidx < 0) || (domnptr->domnidx >= archptr->domnnbr)) { errorPrint ("archSubDomLoad: bad input"); return (1); } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archSubDomSave ( const ArchSub * const archptr, const ArchSubDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " ", (Anum) domnptr->domnidx) == EOF) { errorPrint ("archSubDomSave: bad output"); return (1); } return (0); } /* This function tries to split a distance ** graph domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archSubDomBipart ( const ArchSub * const archptr, const ArchSubDom * const domnptr, ArchSubDom * restrict const dom0ptr, ArchSubDom * restrict const dom1ptr) { Anum dom0idx; dom0idx = archptr->domntab[domnptr->domnidx].dsubidx[0]; if (dom0idx < 0) /* If domain is terminal */ return (1); dom0ptr->domnidx = dom0idx; dom1ptr->domnidx = archptr->domntab[domnptr->domnidx].dsubidx[1]; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archSubDomIncl ( const ArchSub * const archptr, const ArchSubDom * const dom0ptr, const ArchSubDom * const dom1ptr) { Anum dom0num; Anum dom1num; for (dom1num = archptr->domntab[dom1ptr->domnidx].domnnum, dom0num = archptr->domntab[dom0ptr->domnidx].domnnum; dom1num != 0; dom1num >>= 1) if (dom1num == dom0num) return (1); return (0); } /* This function creates the MPI_Datatype for ** distance graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archSubDomMpiType ( const ArchSub * const archptr, MPI_Datatype * const typeptr) { *typeptr = ANUM_MPI; return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/vgraph_separate_zr.c0000644000302600021200000000664413470115365022067 0ustar pelegrinpelegrin/* Copyright 2004,2007,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_zr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** to the first subdomain. **/ /** **/ /** DATES : # Version 3.3 : from : 31 may 1999 **/ /** to 31 may 1999 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 29 may 2004 **/ /** # Version 6.0 : from : 15 aug 2016 **/ /** to 15 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_ZR #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_zr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine moves all of the graph vertices ** to the first part of the partition. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vgraphSeparateZr ( Vgraph * const grafptr) /*+ Active graph +*/ { if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part zero */ vgraphZero (grafptr); return (0); } scotch_6.0.9/src/libscotch/vmesh_separate_zr.c0000644000302600021200000000620613303015264021704 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_zr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** to the first subdomain. **/ /** **/ /** DATES : # Version 4.0 : from : 10 sep 2002 **/ /** to 29 may 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_ZR #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" #include "vmesh_separate_zr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine moves all of the mesh nodes ** and elements to the first part of the ** partition. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vmeshSeparateZr ( Vmesh * restrict const meshptr) { if (meshptr->ncmpload[0] != meshptr->m.vnlosum) /* If not all vertices already in part zero */ vmeshZero (meshptr); return (0); } scotch_6.0.9/src/libscotch/dummysizes.c0000644000302600021200000003554713560012761020412 0ustar pelegrinpelegrin/* Copyright 2004,2007-2010,2012,2014,2018,2019 Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dummysizes.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of the libScotch compilation job. **/ /** This small program processes files that **/ /** are in fact pattern header files for **/ /** the libScotch library, and replaces **/ /** symbolic sizes of the opaque libScotch **/ /** by the proper integer values according **/ /** to the machine on which it is run. **/ /** **/ /** DATES : # Version 3.4 : from : 22 oct 2001 **/ /** to : 22 nov 2001 **/ /** # Version 4.0 : from : 25 nov 2001 **/ /** to : 06 jan 2006 **/ /** # Version 5.0 : from : 26 apr 2006 **/ /** to : 03 apr 2008 **/ /** # Version 5.1 : from : 16 jun 2008 **/ /** to : 15 aug 2010 **/ /** # Version 6.0 : from : 01 dec 2012 **/ /** to : 26 oct 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DUMMYSIZES #define CHARMAX 2048 /* Maximum line size */ #define SUBSMAX 256 /* Maximum number of substitutions */ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamehedinp C_fileTab[0].nameptr /* Source graph input file name */ #define C_filenamehedout C_fileTab[1].nameptr /* Statistics output file name */ #define C_filepntrhedinp C_fileTab[0].fileptr /* Source graph input file */ #define C_filepntrhedout C_fileTab[1].fileptr /* Statistics output file */ #define EXPAND(s) EXPANDTWO(s) #define EXPANDTWO(s) #s #define subsFill(a,b) { \ substab[subsnbr][0] = (a); \ substab[subsnbr][1] = (b); \ subsnbr ++; \ } #define subsSuffix(a) subsFill (a, subsSuffix2 (a, suffptr)) #ifdef SCOTCH_NAME_SUFFIX #include #endif /* SCOTCH_NAME_SUFFIX */ #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "geom.h" #include "mesh.h" #include "arch.h" #include "mapping.h" #include "order.h" #ifdef SCOTCH_PTSCOTCH #include "dgraph.h" #include "dgraph_halo.h" #include "dmapping.h" #include "dorder.h" #include "library_dmapping.h" #endif /* SCOTCH_PTSCOTCH */ #include "library_mapping.h" #include "library_order.h" /* ** The static definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODER }, { FILEMODEW } }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ char * subsSize ( int subsval) { char * subsptr; subsptr = malloc (16 * sizeof (char)); sprintf (subsptr, "%d", (int) ((subsval + sizeof (double) - 1) / sizeof (double))); return (subsptr); } char * subsSuffix2 ( char * nameptr, char * suffptr) { char * subsptr; subsptr = malloc (128 * sizeof (char)); sprintf (subsptr, "%s%s", nameptr, suffptr); return (subsptr); } /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { #ifdef SCOTCH_NAME_SUFFIX regex_t regedat; /* Regular expression for function names */ regmatch_t matcdat; /* Matching structure */ #endif /* SCOTCH_NAME_SUFFIX */ char chartab[CHARMAX]; char chartmp[CHARMAX]; char * substab[SUBSMAX][2]; /* Substitution array */ char * suffptr; /* Pointer to suffix array */ int subsnbr; int i; if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ printf ("Usage is:\ndummysizes [ []]\n"); return (((argv[1][0] == '?') && argv[1][1] == '\0') ? 0 : 1); } suffptr = ""; /* No suffix */ for (i = 0; i < C_FILENBR; i ++) /* Set default stream pointers */ C_fileTab[i].fileptr = ((C_fileTab[i].flagval & FILEMODE) == FILEMODER) ? stdin : stdout; for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '+') && /* If found a file name */ ((argv[i][0] != '-') || (argv[i][1] == '\0'))) { if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ C_fileTab[C_fileNum ++].nameptr = argv[i]; else { fprintf (stderr, "dummysizes: ERROR: main: too many file names given"); exit (1); } } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : printf ("Usage is:\ndummysizes [ []]\n"); exit (0); case 'S' : case 's' : suffptr = &argv[i][2]; break; case 'V' : fprintf (stderr, "dummysizes, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, "Copyright 2004,2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS, France\n"); fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n"); return (0); default : fprintf (stderr, "dummysizes: ERROR: main: unprocessed option (\"%s\")", argv[i]); exit (1); } } } for (i = 0; i < C_FILENBR; i ++) { /* For all file names */ if ((C_fileTab[i].nameptr[0] != '-') || /* If not standard stream */ (C_fileTab[i].nameptr[1] != '\0')) { if ((C_fileTab[i].fileptr = fopen (C_fileTab[i].nameptr, ((C_fileTab[i].flagval & FILEMODE) == FILEMODER) ? "r" : "w")) == NULL) { /* Open the file */ fprintf (stderr, "dummysizes: ERROR: main: cannot open file (%d)", i); exit (1); } } } subsnbr = 0; #ifdef SCOTCH_PTSCOTCH subsFill ("library_pt.h", "ptscotch.h "); subsFill ("library_pt_f.h", "ptscotchf.h "); subsSuffix ("PTSCOTCH_H"); #else /* SCOTCH_PTSCOTCH */ subsFill ("library.h", "scotch.h "); subsFill ("library_f.h", "scotchf.h "); subsSuffix ("SCOTCH_H"); #endif /* SCOTCH_PTSCOTCH */ subsFill ("DUMMYIDX", EXPAND (IDX)); subsFill ("DUMMYINT", EXPAND (INT)); subsFill ("DUMMYMAXINT", EXPAND (INTVALMAX)); subsFill ("DUMMYNUMSTRING", "\"" GNUMSTRING "\""); subsFill ("DUMMYVERSION", EXPAND (SCOTCH_VERSION_NUM)); subsFill ("DUMMYRELEASE", EXPAND (SCOTCH_RELEASE_NUM)); subsFill ("DUMMYPATCHLEVEL", EXPAND (SCOTCH_PATCHLEVEL_NUM)); subsFill ("DUMMYSIZEARCHDOM", subsSize (sizeof (ArchDom))); subsFill ("DUMMYSIZEARCH", subsSize (sizeof (Arch))); subsFill ("DUMMYSIZEGEOM", subsSize (sizeof (Geom))); subsFill ("DUMMYSIZEGRAPH", subsSize (sizeof (Graph))); subsFill ("DUMMYSIZEMESH", subsSize (sizeof (Mesh))); subsFill ("DUMMYSIZEMAP", subsSize (sizeof (LibMapping))); subsFill ("DUMMYSIZEORDER", subsSize (sizeof (LibOrder))); subsFill ("DUMMYSIZESTRAT", subsSize (sizeof (Strat *))); #ifdef SCOTCH_PTSCOTCH subsFill ("DUMMYSIZEDGRAPHHALOREQ", subsSize (sizeof (DgraphHaloRequest))); /* TRICK: before DUMMYSIZEDGRAPH */ subsFill ("DUMMYSIZEDGRAPH", subsSize (sizeof (Dgraph))); subsFill ("DUMMYSIZEDMAP", subsSize (sizeof (LibDmapping))); subsFill ("DUMMYSIZEDORDER", subsSize (sizeof (Dorder))); #else /* SCOTCH_PTSCOTCH */ subsFill ("DUMMYSIZEDGRAPHHALOREQ", "1"); /* TRICK: before DUMMYSIZEDGRAPH */ subsFill ("DUMMYSIZEDGRAPH", "1"); subsFill ("DUMMYSIZEDMAP", "1"); subsFill ("DUMMYSIZEDORDER", "1"); #endif /* SCOTCH_PTSCOTCH */ subsFill ("##SCOTCH_NAME_SUFFIX", suffptr); if (suffptr[0] != '\0') { /* If suffix provided */ #ifdef SCOTCH_RENAME_ALL subsSuffix ("SCOTCH_VERSION"); subsSuffix ("SCOTCH_RELEASE"); subsSuffix ("SCOTCH_PATCHLEVEL"); subsSuffix ("SCOTCH_COARSENNONE"); subsSuffix ("SCOTCH_COARSENFOLD"); subsSuffix ("SCOTCH_COARSENFOLDDUP"); subsSuffix ("SCOTCH_COARSENNOMERGE"); subsSuffix ("SCOTCH_STRATDEFAULT"); subsSuffix ("SCOTCH_STRATQUALITY"); subsSuffix ("SCOTCH_STRATSPEED"); subsSuffix ("SCOTCH_STRATBALANCE"); subsSuffix ("SCOTCH_STRATSAFETY"); subsSuffix ("SCOTCH_STRATSCALABILITY"); subsSuffix ("SCOTCH_STRATRECURSIVE"); subsSuffix ("SCOTCH_STRATREMAP"); subsSuffix ("SCOTCH_STRATLEVELMAX"); subsSuffix ("SCOTCH_STRATLEVELMIN"); subsSuffix ("SCOTCH_STRATLEAFSIMPLE"); subsSuffix ("SCOTCH_STRATSEPASIMPLE"); #endif /* SCOTCH_RENAME_ALL */ #ifdef SCOTCH_PTSCOTCH #else /* SCOTCH_PTSCOTCH */ subsSuffix ("SCOTCH_Idx"); subsSuffix ("SCOTCH_Num"); subsSuffix ("SCOTCH_NUMMAX"); subsSuffix ("SCOTCH_NUMSTRING"); subsSuffix ("SCOTCH_Arch"); subsSuffix ("SCOTCH_Geom"); subsSuffix ("SCOTCH_Graph"); subsSuffix ("SCOTCH_Mesh"); subsSuffix ("SCOTCH_Mapping"); subsSuffix ("SCOTCH_Ordering"); subsSuffix ("SCOTCH_Strat"); #endif /* SCOTCH_PTSCOTCH */ #ifdef SCOTCH_NAME_SUFFIX if (regcomp (®edat, " SCOTCH_[a-z][0-9a-zA-Z_]*", 0) != 0) { fprintf (stderr, "dummysizes: ERROR: cannot compile regular expression\n"); exit (1); } #endif /* SCOTCH_NAME_SUFFIX */ } while (fgets (chartab, CHARMAX, C_filepntrhedinp) != NULL) { /* Loop on file lines */ int charnbr; int subsnum; if (((charnbr = strlen (chartab)) >= (CHARMAX - 1)) && /* If line read is at least as long as maximum size */ (chartab[CHARMAX - 1] != '\n')) { /* And last character is not a newline, that is, some is missing */ fprintf (stderr, "dummysizes: ERROR: line too long\n"); exit (1); } for (subsnum = 0; subsnum < subsnbr; subsnum ++) { /* Perform substitutions */ char * charptr; /* Place where token found */ charptr = chartab; /* Start from beginning of string */ while ((charptr = strstr (charptr, substab[subsnum][0])) != NULL) { /* As long as a matching found */ int subslen; subslen = strlen (substab[subsnum][0]); if (isalnum (charptr[subslen]) || (charptr[subslen] == '_')) { /* If next character is part of a longer identifier */ charptr += subslen + 1; /* Skip substitution */ continue; } strcpy (chartmp, charptr + subslen); /* Save remaining of line */ sprintf (charptr, "%s%s", substab[subsnum][1], chartmp); /* Replace remaining of line with substituted token */ charptr += strlen (substab[subsnum][1]); /* Restart search from end of substituted token */ } } #ifdef SCOTCH_NAME_SUFFIX if (suffptr[0] != '\0') { /* If suffix provided */ if (regexec (®edat, chartab, 1, &matcdat, 0) == 0) { /* If matched a function name */ strcpy (chartmp, chartab + matcdat.rm_eo); /* Save remaining of line */ sprintf (chartab + matcdat.rm_eo, "%s%s", suffptr, chartmp); /* Add suffix to name */ } } #endif /* SCOTCH_NAME_SUFFIX */ fputs (chartab, C_filepntrhedout); /* Output possibly updated line */ } #ifdef SCOTCH_NAME_SUFFIX if (suffptr[0] != '\0') /* If suffix provided */ regfree (®edat); /* Free regular expression */ #endif /* SCOTCH_NAME_SUFFIX */ #ifdef SCOTCH_DEBUG_MAIN1 for (i = 0; i < C_FILENBR; i ++) { /* For all file names */ if ((C_fileTab[i].name[0] != '-') || /* If not standard stream */ (C_fileTab[i].name[1] != '\0')) { fclose (C_fileTab[i].pntr); /* Close the stream */ } } #endif /* SCOTCH_DEBUG_MAIN1 */ exit (0); } scotch_6.0.9/src/libscotch/dorder_gather.h0000644000302600021200000001000013303015264020764 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_gather.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the distributed ordering gathering **/ /** function. **/ /** **/ /** DATES : # Version 5.0 : from : 20 jul 2007 **/ /** to : 27 jul 2007 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Tag for MPI communications. +*/ #define DORDERGATHERNODESIZE (sizeof (DorderGatherNode) / sizeof (Gnum)) /* ** The type and structure definitions. */ /*+ This structure holds the tree definition. +*/ typedef struct DorderGatherLeaf_ { Gnum ordelocval; /*+ Starting index of inverse permutation +*/ Gnum vnodlocnbr; /*+ Number of node vertices in fragment +*/ } DorderGatherLeaf; /*+ This structure holds the separator tree structure. Because arrays of this structure is to be sent as a single contiguous array, all its fields must be of the same type. +*/ typedef struct DorderGatherNode_ { Gnum fathnum; /*+ Global number of father node +*/ Gnum typeval; /*+ Node type +*/ Gnum vnodnbr; /*+ Number of node vertices +*/ Gnum cblknum; /*+ Rank of node in father column block array +*/ } DorderGatherNode; /*+ This structure holds the separator tree structure. +*/ typedef struct DorderGatherCblk_ { Gnum cblknbr; /*+ Number of sons +*/ OrderCblk * cblktab; /*+ Pointer to sub-array +*/ } DorderGatherCblk; scotch_6.0.9/src/libscotch/hgraph_order_gp.h0000644000302600021200000001056313465315041021330 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_gp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the Gibbs-Poole-Stockmeyer **/ /** node ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 31 oct 1996 **/ /** to : 27 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 4.0 : from : 03 feb 2002 **/ /** to : 01 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderGpParam_ { INT passnbr; /*+ Number of passes to do +*/ } HgraphOrderGpParam; /*+ Complementary vertex structure. +*/ typedef struct HgraphOrgerGpVertex_ { Gnum passnum; /*+ Number of pass when vertex selected +*/ Gnum vertdist; /*+ Current distance from diameter vertex +*/ } HgraphOrderGpVertex; /*+ Neighbor queue. +*/ typedef struct HgraphOrgerGpQueue_ { Gnum * head; /*+ Head of distance queue +*/ Gnum * tail; /*+ Tail of distance queue +*/ Gnum * qtab; /*+ Array of queue elements +*/ } HgraphOrgerGpQueue; /* ** The function prototypes. */ int hgraphOrderGp (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderGpParam * restrict const); /* ** The macro definitions. */ #define hgraphOrderGpQueueFlush(queue) ((queue)->head = (queue)->tail = (queue)->qtab) #define hgraphOrderGpQueueEmpty(queue) ((queue)->head <= (queue)->tail) #define hgraphOrderGpQueuePut(queue,vnum) (* ((queue)->head ++) = (vnum)) #define hgraphOrderGpQueueGet(queue) (* ((queue)->tail ++)) scotch_6.0.9/src/libscotch/dgraph_match_sync_coll.c0000644000302600021200000005205213560005435022655 0ustar pelegrinpelegrin/* Copyright 2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match_sync_coll.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This routine synchronizes the fragments **/ /** of a distributed matching by means of **/ /** collective communications. **/ /** **/ /** DATES : # Version 5.1 : from : 06 feb 2009 **/ /** to : 22 apr 2009 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_MATCH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "dgraph_match.h" /*************************************/ /* */ /* These routines handle distributed */ /* source graphs. */ /* */ /*************************************/ /* This routine performs a round of communication ** to synchronize enqueued matching requests across ** processors. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphMatchSyncColl ( DgraphMatchData * restrict const mateptr) { Gnum queulocnbr; Gnum queulocnum; Gnum matelocnbr; Gnum multlocnbr; Gnum vertlocadj; Gnum edgekptnbr; int procngbnbr; int procngbidx; int procngbnum; int * restrict vsndcnttab; int * restrict vrcvcnttab; int * restrict vsnddsptab; int * restrict vrcvdsptab; Dgraph * restrict const grafptr = mateptr->c.finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; int * restrict const procgsttax = mateptr->c.procgsttax; const Gnum * restrict const procvgbtab = mateptr->procvgbtab; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; Gnum * restrict const queuloctab = mateptr->queuloctab; Gnum * restrict const mategsttax = mateptr->mategsttax; DgraphCoarsenMulti * restrict const multloctab = mateptr->c.multloctab; int * restrict const nsndidxtab = mateptr->c.nsndidxtab; DgraphCoarsenVert * const vsnddattab = mateptr->c.vsnddattab; /* [norestrict:async] */ procngbnbr = grafptr->procngbnbr; #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgeloctax == NULL) { errorPrint ("dgraphMatchSyncColl: not implemented"); return (1); } if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncColl: communication error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if ((vsnddsptab = memAlloc (4 * grafptr->procglbnbr * sizeof (int))) == NULL) { errorPrint ("dgraphMatchSyncColl: out of memory"); return (1); } vsndcnttab = vsnddsptab + grafptr->procglbnbr; /* TRICK: put vsnddsptab, vsndcnttab, vrcvdsptab in order for memSet() */ vrcvdsptab = vsndcnttab + grafptr->procglbnbr; vrcvcnttab = vrcvdsptab + grafptr->procglbnbr; for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) /* Reset indices for sending messages */ nsndidxtab[procngbnum] = mateptr->c.vsnddsptab[procngbtab[procngbnum]]; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; for (queulocnum = 0, queulocnbr = mateptr->queulocnbr; queulocnum < queulocnbr; queulocnum ++) { Gnum vertlocnum; Gnum vertgstnum; Gnum edgelocnum; Gnum mategstnum; Gnum mateglbnum; int procngbnum; int vsndidxnum; vertlocnum = queuloctab[queulocnum]; /* Get local vertex index */ mategstnum = mategsttax[vertlocnum]; /* Get mate (edge ?) index */ if (mategstnum >= -1) /* If vertex not willing to mate or matched locally after being considered during matching phase */ continue; edgelocnum = -2 - mategstnum; /* Get local edge to mate ghost vertex */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((edgelocnum < grafptr->baseval) || (edgelocnum >= (grafptr->edgelocsiz + grafptr->baseval)) || (mategsttax[edgegsttax[edgelocnum]] != -1)) { errorPrint ("dgraphMatchSyncColl: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mateglbnum = edgeloctax[edgelocnum]; vertgstnum = edgegsttax[edgelocnum]; procngbnum = procgsttax[vertgstnum]; /* Find neighbor owner process */ if (procngbnum < 0) { /* If neighbor not yet computed */ int procngbmax; procngbnum = 0; procngbmax = procngbnbr; while ((procngbmax - procngbnum) > 1) { /* Find owner process by dichotomy on procvgbtab */ int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (procvgbtab[procngbmed] > mateglbnum) procngbmax = procngbmed; else procngbnum = procngbmed; } procgsttax[vertgstnum] = procngbnum; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procvrttab[procngbtab[procngbnum]] > mateglbnum) || (grafptr->procvrttab[procngbtab[procngbnum] + 1] <= mateglbnum)) { errorPrint ("dgraphMatchSyncColl: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vsndidxnum = nsndidxtab[procngbnum] ++; /* Get position of message in send array */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (vsndidxnum >= mateptr->c.vsnddsptab[procngbtab[procngbnum] + 1]) { errorPrint ("dgraphMatchSyncColl: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vsnddattab[vsndidxnum].datatab[0] = vertlocnum + vertlocadj; vsnddattab[vsndidxnum].datatab[1] = mateglbnum; } memSet (vsnddsptab, 0, 3 * grafptr->procglbnbr * sizeof (int)); /* TRICK: resets vsnddsptab, vsndcnttab, vrcvdsptab */ for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { int procglbnum; procglbnum = procngbtab[procngbnum]; vrcvdsptab[procglbnum] = 2 * mateptr->c.vrcvdsptab[procglbnum]; /* Times 2 because a "DgraphCoarsenVert" is two "Gnum"s */ vsnddsptab[procglbnum] = 2 * mateptr->c.vsnddsptab[procglbnum]; vsndcnttab[procglbnum] = 2 * (nsndidxtab[procngbnum] - mateptr->c.vsnddsptab[procglbnum]); } if (MPI_Alltoall (vsndcnttab, 1, MPI_INT, vrcvcnttab, 1, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncColl: communication error (2)"); return (1); } if (MPI_Alltoallv (vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, mateptr->c.vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncColl: communication error (3)"); return (1); } matelocnbr = mateptr->matelocnbr; multlocnbr = mateptr->c.multlocnbr; edgekptnbr = mateptr->c.edgekptnbr; for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { int procngbnum; int procglbnum; int vrcvidxnnd; int requrcvnum; int requnxtnum; /* Index of location where to pack requests to process when all messages arrive */ procngbnum = (procngbidx + mateptr->c.procngbnxt) % procngbnbr; procglbnum = procngbtab[procngbnum]; vrcvidxnnd = mateptr->c.vrcvdsptab[procglbnum]; if (vrcvcnttab[procglbnum] > 0) { /* If query message is not empty */ Gnum vertsndnbr; /* Number of vertices to be sent to requesting neighbor */ Gnum edgesndnbr; /* Number of edges to be sent to requesting neighbor */ DgraphCoarsenVert * restrict const vrcvdattab = mateptr->c.vrcvdattab; /* Local restrict pointer only when data available */ vertsndnbr = edgesndnbr = 0; for (requrcvnum = requnxtnum = vrcvidxnnd, vrcvidxnnd += (vrcvcnttab[procglbnum] / 2); /* TRICK: each message item costs 2 Gnum's */ requrcvnum < vrcvidxnnd; requrcvnum ++) { Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum vmatglbnum; /* Global number of requesting mate (sender of message) */ Gnum mategstnum; /* The mate we wanted to ask for */ vmatglbnum = vrcvdattab[requrcvnum].datatab[0]; /* Names are opposite because receiving side */ vertglbnum = vrcvdattab[requrcvnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching request is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphMatchSyncColl: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mategstnum = mategsttax[vertlocnum]; /* Get our local mating decision data */ if (mategstnum == -1) { /* If local vertex wanted for mating is free */ Gnum edgelocnum; for (edgelocnum = vertloctax[vertlocnum]; edgeloctax[edgelocnum] != vmatglbnum; edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum >= vendloctax[vertlocnum]) { errorPrint ("dgraphMatchSyncColl: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } mategsttax[edgegsttax[edgelocnum]] = vertglbnum; /* We are no longer free */ mategsttax[vertlocnum] = vmatglbnum; /* Leave message as is to acknowledge it */ matelocnbr ++; vertsndnbr ++; edgesndnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else if (mategstnum < -1) { /* If local vertex is also asking for mating */ Gnum edgelocnum; Gnum mateglbnum; edgelocnum = -2 - mategstnum; mateglbnum = edgeloctax[edgelocnum]; /* Get global number of our remote mate */ if (mateglbnum == vmatglbnum) { /* If it is with the sender */ Gnum flagval; /* Flag for choosing side to create multinode */ mategsttax[vertlocnum] = mateglbnum; /* Say we are mated to inform future requesting processes in same pass */ mategsttax[edgegsttax[edgelocnum]] = vertglbnum; flagval = (mateglbnum > vertglbnum) ? 1 : 0; /* Compute pseudo-random flag always opposite for both ends */ flagval = ((mateglbnum + (mateglbnum - vertglbnum) * flagval) & 1) ^ flagval; if (flagval == 0) { /* If flag is even, create multinode */ multloctab[multlocnbr].vertglbnum[0] = vertglbnum; multloctab[multlocnbr].vertglbnum[1] = mategstnum; /* Remote mate: negative value */ multlocnbr ++; /* One more coarse vertex created */ edgekptnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else { /* If flag is odd, prepare to send vertex data at build time */ vertsndnbr ++; edgesndnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } /* Go on by destroying message in all cases since both ends know what it is about */ vrcvdattab[requrcvnum --] = vrcvdattab[-- vrcvidxnnd]; /* Replace current message with another one and process it */ matelocnbr ++; /* One more local vertex mated on each side; no messages will tell it */ } else { /* If willing to mate but not with the sender, tell later with whom */ DgraphCoarsenVert vertdat; /* Temporary storage data for swapping vertices */ vertdat = vrcvdattab[requnxtnum]; /* Pack requests to process later at beginning of message */ vrcvdattab[requnxtnum].datatab[0] = vmatglbnum; vrcvdattab[requnxtnum].datatab[1] = -2 - vertlocnum; /* Build appropriate answer to mating request later, when all messages arrived */ if (requnxtnum ++ != requrcvnum) vrcvdattab[requrcvnum] = vertdat; /* Swap vertices if not already at the right place */ } } else /* If already matched, inform sender */ vrcvdattab[requrcvnum].datatab[1] = mategstnum; } mateptr->c.dcntloctab[procglbnum].vertsndnbr += vertsndnbr; mateptr->c.dcntloctab[procglbnum].edgesndnbr += edgesndnbr; } mateptr->c.nrcvidxtab[procngbnum] = vrcvidxnnd; } for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { int procngbnum; int procglbnum; int vsndidxnnd; int vsndidxnum; DgraphCoarsenVert * restrict const vrcvdattab = mateptr->c.vrcvdattab; /* Local restrict pointer only once data received */ procngbnum = (procngbidx + mateptr->c.procngbnxt) % procngbnbr; procglbnum = procngbtab[procngbnum]; vsndidxnnd = mateptr->c.nrcvidxtab[procngbnum]; /* Re-send the messages we have received to acknowledge */ for (vsndidxnum = mateptr->c.vrcvdsptab[procglbnum]; /* Finalize unfinished messages */ vsndidxnum < vsndidxnnd; vsndidxnum ++) { Gnum vertlocnum; Gnum mateglbnum; vertlocnum = vrcvdattab[vsndidxnum].datatab[1]; if (vertlocnum >= 0) /* If no more unfinished messages to process, quit scanning */ break; vertlocnum = -2 - vertlocnum; mateglbnum = mategsttax[vertlocnum]; if (mateglbnum >= 0) /* If vertex we wanted to mate with has been mated in this round */ vrcvdattab[vsndidxnum].datatab[1] = mateglbnum; /* Propagate this information back to the requester */ else { /* Vertex mating data not yet available (maybe in answer) */ vrcvdattab[vsndidxnum] = vrcvdattab[-- vsndidxnnd]; /* Remove message as no reply means not willing */ if (vrcvdattab[vsndidxnum].datatab[1] < 0) /* If replacing message is also to be processed */ vsndidxnum --; /* Do not skip replaced message in next iteration */ } } if (vsndidxnnd < (mateptr->c.vrcvdsptab[procglbnum] + (vrcvcnttab[procglbnum] / 2))) { /* If space created */ vrcvdattab[vsndidxnnd].datatab[0] = /* Indicate end of useful data */ vrcvdattab[vsndidxnnd].datatab[1] = -1; } } if (MPI_Alltoallv (mateptr->c.vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncColl: communication error (3)"); return (1); } for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { int procngbnum; int procglbnum; int vrcvidxnnd; int vrcvidxnum; procngbnum = (procngbidx + mateptr->c.procngbnxt) % procngbnbr; procglbnum = procngbtab[procngbnum]; for (vrcvidxnum = mateptr->c.vsnddsptab[procglbnum], vrcvidxnnd = vrcvidxnum + (vsndcnttab[procglbnum] / 2); /* TRICK: each message item costs 2 Gnum's */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum edgelocnum; Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum vmatglbnum; /* Global number of vertex to which the mate is mated */ Gnum mategstnum; /* The mate we wanted to ask for */ vertglbnum = vsnddattab[vrcvidxnum].datatab[0]; if (vertglbnum == -1) /* If end of useful space reached */ break; vmatglbnum = vsnddattab[vrcvidxnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching reply is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphMatchSyncColl: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mategstnum = mategsttax[vertlocnum]; /* Get our local mating decision data */ edgelocnum = -2 - mategstnum; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((mategstnum >= -1) || /* If we did not ask anything or if we were already matched, no reply message should come to us */ ((mategsttax[edgegsttax[edgelocnum]] >= 0) && /* Also, if our prospective mate was itself already set as matched by a previous reply */ (mategsttax[edgegsttax[edgelocnum]] != vertglbnum) && /* And this message is not the positive reply which acknowledges this mating */ (mategsttax[edgegsttax[edgelocnum]] != vmatglbnum))) { /* Or an informative negative reply which gives again the mate of the ghost */ errorPrint ("dgraphMatchSyncColl: internal error (9)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (edgeloctax[edgelocnum] == vmatglbnum) { /* If positive answer from the mate we wanted */ mategsttax[vertlocnum] = vmatglbnum; /* Set local vertex as matched with the mate */ mategsttax[edgegsttax[edgelocnum]] = vertglbnum; /* Update state of ghost mate */ multloctab[multlocnbr].vertglbnum[0] = vertglbnum; multloctab[multlocnbr].vertglbnum[1] = mategstnum; /* Remote mate: negative value */ multlocnbr ++; /* One more coarse vertex created */ matelocnbr ++; edgekptnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else { /* If negative answer from the mate we wanted */ mategsttax[vertlocnum] = -1; /* Reset local vertex as free for mating */ mategsttax[edgegsttax[edgelocnum]] = vmatglbnum; /* Update state of unwilling ghost mate */ } } } mateptr->matelocnbr = matelocnbr; mateptr->c.multlocnbr = multlocnbr; mateptr->c.edgekptnbr = edgekptnbr; #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncColl: communication error (11)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ memFree (vsnddsptab); return (0); } scotch_6.0.9/src/libscotch/mesh.c0000644000302600021200000001701513303015264017117 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source mesh **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 29 dec 2001 **/ /** to 05 may 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" /****************************************/ /* */ /* These routines handle source meshes. */ /* */ /****************************************/ /* This routine initializes a source mesh ** structure. ** It returns: ** - 0 : in all cases. */ int meshInit ( Mesh * const meshptr) { memSet (meshptr, 0, sizeof (Mesh)); /* Initialize mesh fields */ meshptr->flagval = MESHFREETABS; /* By default, free all arrays */ return (0); } /* This routine frees a source mesh structure. ** It returns: ** - VOID : in all cases. */ void meshExit ( Mesh * const meshptr) { meshFree (meshptr); /* Exit mesh data */ #ifdef SCOTCH_DEBUG_MESH2 memSet (meshptr, ~0, sizeof (Mesh)); /* Purge mesh fields */ #endif /* SCOTCH_DEBUG_MESH2 */ } /* This routine frees the mesh data. Because ** vertex load arrays are either passed by ** the user, or grouped with other arrays, ** they are not considered for explicit ** freeing. This is also much simpler, as ** load arrays can be grouped or not. ** It returns: ** - VOID : in all cases. */ void meshFree ( Mesh * const meshptr) { if (((meshptr->flagval & MESHFREEEDGE) != 0) && /* If edgetab must be freed */ (meshptr->edgetax != NULL)) /* And if it exists */ memFree (meshptr->edgetax + meshptr->baseval); /* Free it */ if ((meshptr->flagval & MESHFREEVEND) != 0) { /* If vendtab must be freed */ if ((meshptr->vendtax != NULL) && /* If vendtab is distinct from verttab */ (meshptr->vendtax != meshptr->verttax + 1) && /* (if vertex arrays grouped, vendtab not distinct anyway) */ ((meshptr->flagval & MESHVERTGROUP) == 0)) memFree (meshptr->vendtax + meshptr->baseval); /* Then free vendtab */ } if ((meshptr->flagval & MESHFREEVERT) != 0) { /* If verttab must be freed */ if (meshptr->verttax != NULL) /* Free verttab anyway, as it is the array group leader */ memFree (meshptr->verttax + meshptr->baseval); } #ifdef SCOTCH_DEBUG_MESH2 if ((meshptr->flagval & MESHFREEVNUM) != 0) { /* If vnumtab must be freed */ if ((meshptr->vnumtax != NULL) && /* And is not in vertex array group */ ((meshptr->flagval & MESHVERTGROUP) == 0)) errorPrint ("meshFree: vnumtab should never be freed as its base may vary according to creation routines"); } #endif /* SCOTCH_DEBUG_MESH2 */ if ((meshptr->flagval & MESHFREEOTHR) != 0) { /* If other arrays must be freed */ if (meshptr->vlbltax != NULL) memFree (meshptr->vlbltax + meshptr->baseval); } #ifdef SCOTCH_DEBUG_MESH2 memSet (meshptr, ~0, sizeof (Mesh)); /* Purge mesh fields */ #endif /* SCOTCH_DEBUG_MESH2 */ } /* This routine sets the base of the given ** mesh to the given base value, and returns ** the old base value. ** It returns: ** - old base value : in all cases. */ Gnum meshBase ( Mesh * const meshptr, const Gnum baseval) { Gnum baseold; /* Old base value */ Gnum baseadj; /* Base adjustment */ Gnum vertnum; Gnum edgenum; if (meshptr->baseval == baseval) /* If nothing to do */ return (baseval); baseold = meshptr->baseval; /* Record old base value */ baseadj = baseval - baseold; /* Compute adjustment */ for (vertnum = meshptr->baseval; vertnum < (meshptr->velmnbr + meshptr->vnodnbr + meshptr->baseval); vertnum ++) { for (edgenum = meshptr->verttax[vertnum]; edgenum < meshptr->vendtax[vertnum]; edgenum ++) meshptr->edgetax[edgenum] += baseadj; meshptr->verttax[vertnum] += baseadj; } if (meshptr->vendtax != meshptr->verttax + 1) { /* If distinct vertex end array */ for (vertnum = meshptr->baseval; vertnum < (meshptr->velmnbr + meshptr->vnodnbr + meshptr->baseval); vertnum ++) meshptr->vendtax[vertnum] += baseadj; } else /* If same vertex end array (of size +1) */ meshptr->verttax[meshptr->velmnbr + meshptr->vnodnbr + meshptr->baseval] += baseadj; /* Adjust last entry of verttab */ meshptr->verttax -= baseadj; /* Adjust array accesses */ meshptr->vendtax -= baseadj; meshptr->edgetax -= baseadj; if (meshptr->vnumtax != NULL) meshptr->vnumtax -= baseadj; if (meshptr->vlbltax != NULL) meshptr->vlbltax -= baseadj; meshptr->baseval = baseval; /* Set new base value */ meshptr->velmbas += baseadj; /* Adjust mesh parameter */ meshptr->velmnnd += baseadj; meshptr->vnodbas += baseadj; meshptr->vnodnnd += baseadj; return (baseold); /* Return old base value */ } scotch_6.0.9/src/libscotch/vgraph_separate_th.c0000644000302600021200000001130113470115365022031 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : separate_th.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module thins a vertex separator. **/ /** **/ /** DATES : # Version 3.3 : from : 17 oct 1998 **/ /** to 17 oct 1998 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 06 jan 2002 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_TH #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_th.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vgraphSeparateTh ( Vgraph * const grafptr) { Gnum fronnbr; /* Current number of frontier vertices */ Gnum fronnum; /* Number of current frontier vertex */ Gnum commcut[3]; /* Cut count array ([3] for halo) */ fronnbr = grafptr->fronnbr; /* Get current number of frontier vertices */ for (fronnum = 0; fronnum < fronnbr; ) { Gnum vertnum; Gnum edgenum; vertnum = grafptr->frontab[fronnum]; /* Get vertex number */ commcut[0] = commcut[1] = commcut[2] = 0; for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) commcut[grafptr->parttax[grafptr->s.edgetax[edgenum]]] ++; if (commcut[0] == 0) { grafptr->parttax[vertnum] = 1; grafptr->compload[1] += (grafptr->s.velotax == NULL) ? 1 : grafptr->s.velotax[vertnum]; grafptr->compsize[1] ++; grafptr->frontab[fronnum] = grafptr->frontab[-- fronnbr]; /* Replace frontier vertex by another */ } else if (commcut[1] == 0) { grafptr->parttax[vertnum] = 0; grafptr->compload[0] += (grafptr->s.velotax == NULL) ? 1 : grafptr->s.velotax[vertnum]; grafptr->compsize[0] ++; grafptr->frontab[fronnum] = grafptr->frontab[-- fronnbr]; /* Replace frontier vertex by another */ } else fronnum ++; /* Keep vertex in separator */ } grafptr->fronnbr = fronnbr; /* Set new frontier parameters */ grafptr->compload[2] = grafptr->s.velosum - (grafptr->compload[0] + grafptr->compload[1]); grafptr->comploaddlt = grafptr->compload[0] - grafptr->compload[1]; return (0); } scotch_6.0.9/src/libscotch/wgraph_part_gg.h0000644000302600021200000000715613465315041021175 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_gg.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the graph partitioning rountine **/ /** based on a vertex-oriented version of **/ /** the Greedy Graph Growing algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ System-defined constants. +*/ #define WGRAPHSEPAGGSUBBITS 4 #define WGRAPHGGCHOOSELASTPART /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct WgraphPartGgParam_ { INT passnbr; /*+ Number of passes to do +*/ } WgraphPartGgParam; /*+ The complementary vertex structure. For trick reasons, the gain table data structure must be the first field of the structure. +*/ typedef struct WgraphPartGgVertex_ { GainLink gainlink; /*+ Gain link: FIRST +*/ Gnum partlvl; struct WgraphPartGgVertex_ * prev; struct WgraphPartGgVertex_ * next; } WgraphPartGgVertex; /* ** The function prototypes. */ int wgraphPartGg (Wgraph * restrict const, const WgraphPartGgParam * restrict const); scotch_6.0.9/src/libscotch/vmesh_separate_gr.c0000644000302600021200000001421413303015264021657 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_gr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates a node separation **/ /** mesh by turning the mesh into a graph **/ /** and using a graph separation strategy. **/ /** **/ /** DATES : # Version 4.0 : from : 13 oct 2003 **/ /** to 13 oct 2003 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_GR #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "mesh.h" #include "vmesh.h" #include "vmesh_separate_gr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vmeshSeparateGr ( Vmesh * restrict const meshptr, /*+ Node separation mesh +*/ const VmeshSeparateGrParam * restrict const paraptr) /*+ Method parameters +*/ { Vgraph grafdat; Gnum fronnum; Gnum velmnum; Gnum ecmpsize1; graphInit (&grafdat.s); if (meshGraph (&meshptr->m, &grafdat.s) != 0) { errorPrint ("vmeshSeparateGr: cannot build graph"); return (1); } grafdat.parttax = meshptr->parttax + (meshptr->m.vnodbas - grafdat.s.baseval); /* Get node area of part array */ grafdat.compload[0] = meshptr->ncmpload[0]; grafdat.compload[1] = meshptr->ncmpload[1]; grafdat.compload[2] = meshptr->ncmpload[2]; grafdat.comploaddlt = meshptr->ncmploaddlt; grafdat.compsize[0] = meshptr->ncmpsize[0]; grafdat.compsize[1] = meshptr->ncmpsize[1]; grafdat.fronnbr = meshptr->fronnbr; grafdat.frontab = meshptr->frontab; /* Re-use frontier array */ grafdat.levlnum = meshptr->levlnum; for (fronnum = 0; fronnum < grafdat.fronnbr; fronnum ++) grafdat.frontab[fronnum] -= (meshptr->m.vnodbas - grafdat.s.baseval); #ifdef SCOTCH_DEBUG_VMESH2 if (vgraphCheck (&grafdat) != 0) { errorPrint ("vmeshSeparateGr: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (vgraphSeparateSt (&grafdat, paraptr->stratptr) != 0) { errorPrint ("vmeshSeparateGr: cannot separate graph"); return (1); } for (fronnum = 0; fronnum < grafdat.fronnbr; fronnum ++) /* Restore mesh-based frontier array */ grafdat.frontab[fronnum] += (meshptr->m.vnodbas - grafdat.s.baseval); meshptr->ncmpload[0] = grafdat.compload[0]; meshptr->ncmpload[1] = grafdat.compload[1]; meshptr->ncmpload[2] = grafdat.compload[2]; meshptr->ncmploaddlt = grafdat.comploaddlt; meshptr->ncmpsize[0] = grafdat.compsize[0]; meshptr->ncmpsize[1] = grafdat.compsize[1]; meshptr->fronnbr = grafdat.fronnbr; for (velmnum = meshptr->m.velmbas, ecmpsize1 = 0; velmnum < meshptr->m.velmnnd; velmnum ++) { /* Compute part of all elements */ Gnum eelmnum; GraphPart partval; partval = 0; /* Empty elements move to part 0 */ for (eelmnum = meshptr->m.verttax[velmnum]; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; vnodnum = meshptr->m.edgetax[eelmnum]; partval = meshptr->parttax[vnodnum]; if (partval != 2) break; } partval &= 1; /* In case all nodes in separator */ ecmpsize1 += (Gnum) partval; /* Count elements in part 1 */ meshptr->parttax[velmnum] = partval; /* Set part of element */ } meshptr->ecmpsize[0] = meshptr->m.velmnbr - ecmpsize1; meshptr->ecmpsize[1] = ecmpsize1; #ifdef SCOTCH_DEBUG_VMESH2 if (vmeshCheck (meshptr) != 0) { errorPrint ("vmeshSeparateGr: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ return (0); } scotch_6.0.9/src/libscotch/hgraph_order_cc.h0000644000302600021200000000565513303015264021310 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_cc.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the graph cnnected component **/ /** ordering routine. **/ /** **/ /** DATES : # Version 6.0 : from : 04 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderCcParam_ { Strat * straptr; /*+ Ordering strategy for connected components +*/ } HgraphOrderCcParam; /* ** The function prototypes. */ int hgraphOrderCc (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderCcParam * const); scotch_6.0.9/src/libscotch/dgraph_view.c0000644000302600021200000001633313560005435020470 0ustar pelegrinpelegrin/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_view.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed graph general **/ /** purpose routines. **/ /** **/ /** DATES : # Version P0.0 : from : 01 apr 1997 **/ /** to 01 apr 1997 **/ /** # Version P0.1 : from : 12 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version 5.0 : from : 16 feb 2005 **/ /** to : 15 aug 2006 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to : 12 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" /*************************************/ /* */ /* These routines handle distributed */ /* source graphs. */ /* */ /*************************************/ /* This routine displays the contents ** of the given graph structure. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphView ( const Dgraph * restrict const grafptr, FILE * const stream) { MPI_Comm proccomm; /* Graph communicator */ int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ int procngbnbr; int procngbnum; Gnum vertlocnum; Gnum edgelocnum; Gnum * edgelocptr; proccomm = grafptr->proccomm; /* Simplify */ MPI_Comm_size (proccomm, &procglbnbr); /* Rely on communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fflush (stream); /* Flush previous data */ for (procngbnbr = 0; procngbnbr < procglbnbr; procngbnbr ++) { MPI_Barrier (proccomm); if (procngbnbr == proclocnum) { fprintf (stream, "Process %d:\n", proclocnum); fprintf (stream, " vertglbnbr: " GNUMSTRING "\n vertgstnbr: " GNUMSTRING "\n vertgstnnd: " GNUMSTRING "\n vertlocnbr: " GNUMSTRING "\n vertlocnnd: " GNUMSTRING "\n", (Gnum) grafptr->vertglbnbr, (Gnum) grafptr->vertgstnbr, (Gnum) grafptr->vertgstnnd, (Gnum) grafptr->vertlocnbr, (Gnum) grafptr->vertlocnnd); fprintf (stream, " vertloctax:"); if (grafptr->vendloctax == grafptr->vertloctax + 1) { for (vertlocnum = grafptr->baseval; vertlocnum <= grafptr->vertlocnnd; vertlocnum ++)/**/ fprintf (stream, " " GNUMSTRING, (Gnum) grafptr->vertloctax[vertlocnum]); fprintf (stream, " x\n vendloctax: = vertloctax + 1"); } else { for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) fprintf (stream, " " GNUMSTRING, (Gnum) grafptr->vertloctax[vertlocnum]); fprintf (stream, " vendloctax: x"); for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) fprintf (stream, " " GNUMSTRING, (Gnum) grafptr->vendloctax[vertlocnum]); } fprintf (stream, "\n edgeglbnbr: " GNUMSTRING "\n edgelocnbr: " GNUMSTRING "\n", (Gnum) grafptr->edgeglbnbr, (Gnum) grafptr->edgelocnbr); fprintf (stream, " edgeloctax:"); for (edgelocnum = grafptr->baseval, edgelocptr = grafptr->edgeloctax; edgelocnum < grafptr->edgelocnbr + grafptr->baseval; edgelocnum ++, edgelocptr ++) fprintf (stream, " " GNUMSTRING, (Gnum) *edgelocptr); if ((grafptr->flagval & DGRAPHHASEDGEGST) != 0) { fprintf (stream, "\n edgegsttax:"); for (edgelocnum = grafptr->baseval, edgelocptr = grafptr->edgegsttax; edgelocnum < grafptr->edgelocnbr + grafptr->baseval; edgelocnum ++, edgelocptr ++) fprintf (stream, " " GNUMSTRING, (Gnum) *edgelocptr); } fprintf (stream, "\n procdsptab:"); for (procngbnum = 0; procngbnum <= procglbnbr ; procngbnum ++) fprintf (stream, " " GNUMSTRING, (Gnum) grafptr->procdsptab[procngbnum]); fprintf (stream, "\n procngbnbr: %d", grafptr->procngbnbr); fprintf (stream, "\n procngbtab:"); for (procngbnum = 0; procngbnum < grafptr->procngbnbr; procngbnum ++) fprintf (stream, " %d", grafptr->procngbtab[procngbnum]); fprintf (stream, "\n procrcvtab:"); for (procngbnum = 0; procngbnum < grafptr->procglbnbr; procngbnum ++) fprintf (stream, " %d", grafptr->procrcvtab[procngbnum]); fprintf (stream, "\n procsndnbr: %d", grafptr->procsndnbr); fprintf (stream, "\n procsndtab:"); for (procngbnum = 0; procngbnum < grafptr->procglbnbr; procngbnum ++) fprintf (stream, " %d", grafptr->procsndtab[procngbnum]); fprintf (stream, "\n degrglbmax: " GNUMSTRING, (Gnum) grafptr->degrglbmax); fprintf (stream, "\n"); fflush (stream); /* Flush data */ } } MPI_Barrier (proccomm); return (0); } scotch_6.0.9/src/libscotch/library_dgraph_order_io_block_f.c0000644000302600021200000001102113560013261024504 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_io_block_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed graph ordering routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 28 may 2008 **/ /** to 28 may 2008 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ DGRAPHORDERSAVEBLOCK, dgraphordersaveblock, ( \ const SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Dordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if (*fileptr == -1) /* If process is not the root */ stream = NULL; else { /* Open stream for root process */ if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEBLOCK)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVEBLOCK)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } } o = SCOTCH_dgraphOrderSaveBlock (grafptr, ordeptr, stream); if (stream != NULL) fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/library_dgraph_halo_f.c0000644000302600021200000001101213560013261022453 0ustar pelegrinpelegrin/* Copyright 2007,2009,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_halo_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 17 jul 2007 **/ /** to 02 aug 2007 **/ /** # Version 5.1 : from : 09 may 2009 **/ /** to 10 may 2009 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHGHST, dgraphghst, ( \ SCOTCH_Dgraph * const grafptr, \ int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_dgraphGhst (grafptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHHALO, dgraphhalo, ( \ SCOTCH_Dgraph * const grafptr, \ void * const datatab, \ MPI_Fint * const typeptr, \ int * const revaptr), \ (grafptr, datatab, typeptr, revaptr)) { MPI_Datatype typeval; typeval = MPI_Type_f2c (*typeptr); *revaptr = SCOTCH_dgraphHalo (grafptr, datatab, typeval); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHHALOASYNC, dgraphhaloasync, ( \ SCOTCH_Dgraph * const grafptr, \ void * const datatab, \ MPI_Fint * const typeptr, \ SCOTCH_DgraphHaloReq * const requptr, \ int * const revaptr), \ (grafptr, datatab, typeptr, requptr, revaptr)) { MPI_Datatype typeval; typeval = MPI_Type_f2c (*typeptr); *revaptr = SCOTCH_dgraphHaloAsync (grafptr, datatab, typeval, requptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHHALOWAIT, dgraphhalowait, ( \ SCOTCH_DgraphHaloReq * const requptr, \ int * const revaptr), \ (requptr, revaptr)) { *revaptr = SCOTCH_dgraphHaloWait (requptr); } scotch_6.0.9/src/libscotch/library_dgraph_order_io.c0000644000302600021200000001006613560013261023035 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted ordering I/O routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 26 jul 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed ordering */ /* handling routines. */ /* */ /************************************/ /*+ This routine saves to the given stream *** the mapping data associated with the *** given distributed ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderSaveMap ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (dorderSaveMap ((Dorder *) ordeptr, (Dgraph *) grafptr, stream)); } /*+ This routine saves to the given stream *** the separator tree data associated with *** the given distributed ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderSaveTree ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (dorderSaveTree ((Dorder *) ordeptr, (Dgraph *) grafptr, stream)); } scotch_6.0.9/src/libscotch/kdgraph.c0000644000302600021200000001034513560013072017602 0ustar pelegrinpelegrin/* Copyright 2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel bipartitioning **/ /** mapper. **/ /** This module handles the k-way active **/ /** distributed graph and save data struct- **/ /** ure handling routines. **/ /** **/ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 01 jul 2008 **/ /** # Version 6.0 : from : 08 sep 2012 **/ /** to 08 sep 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "dmapping.h" #include "kdgraph.h" /************************************/ /* */ /* Active dgraph handling routines. */ /* */ /************************************/ /* This routine builds the active dgraph ** corresponding to the given k-way ** partition parameters. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kdgraphInit ( Kdgraph * restrict const actgrafptr, /* Active graph */ const Dgraph * restrict const srcgrafptr, /* Source graph */ Dmapping * restrict const dmapptr) /* Mapping */ { actgrafptr->s = *srcgrafptr; /* Clone source graph */ actgrafptr->s.flagval &= ~DGRAPHFREEALL; actgrafptr->s.vlblloctax = NULL; /* Do not propagate vertex labels within computations (e.g. dgraphInduce) */ actgrafptr->levlnum = 0; actgrafptr->m.mappptr = dmapptr; archDomFrst (&dmapptr->archdat, &actgrafptr->m.domnorg); return (0); } /* This routine frees the contents ** of the given active graph. ** It returns: ** - VOID : in all cases. */ void kdgraphExit ( Kdgraph * restrict const actgrafptr) /* Active graph */ { dgraphExit (&actgrafptr->s); #ifdef SCOTCH_DEBUG_KDGRAPH1 memSet (actgrafptr, 0, sizeof (Kdgraph)); #endif /* SCOTCH_DEBUG_KDGRAPH1 */ } scotch_6.0.9/src/libscotch/comm.c0000644000302600021200000001665513560005430017126 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : comm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the large size **/ /** communication handling routines. **/ /** **/ /** DATES : # Version 5.1 : from : 30 jul 2010 **/ /** to : 30 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMM #include "module.h" #include "common.h" #include "comm.h" /************************************/ /* */ /* These routines handle large size */ /* communications */ /* */ /************************************/ /* ** */ int commAllgatherv ( void * const senddattab, const Gnum sendcntnbr, MPI_Datatype sendtypval, void * const recvdattab, const Gnum * const recvcnttab, const Gnum * const recvdsptab, MPI_Datatype recvtypval, MPI_Comm comm) { int * restrict ircvcnttab; int * restrict ircvdsptab; int procglbnbr; int procnum; int o; MPI_Comm_size (comm, &procglbnbr); if (memAllocGroup ((void **) (void *) &ircvcnttab, (size_t) (procglbnbr * sizeof (int)), &ircvdsptab, (size_t) (procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("commAllgatherv: out of memory"); return (MPI_ERR_OTHER); } for (procnum = 0; procnum < procglbnbr; procnum ++) { ircvcnttab[procnum] = (int) recvcnttab[procnum]; ircvdsptab[procnum] = (int) recvdsptab[procnum]; if (((Gnum) ircvcnttab[procnum] != recvcnttab[procnum]) || ((Gnum) ircvdsptab[procnum] != recvdsptab[procnum])) { errorPrint ("commAllgatherv: communication indices out of range"); memFree (ircvcnttab); return (MPI_ERR_ARG); } } o = MPI_Allgatherv (senddattab, sendcntnbr, sendtypval, recvdattab, ircvcnttab, ircvdsptab, recvtypval, comm); memFree (ircvcnttab); return (o); } /* ** */ int commGatherv ( void * const senddattab, const Gnum sendcntnbr, MPI_Datatype sendtypval, void * const recvdattab, const Gnum * const recvcnttab, const Gnum * const recvdsptab, MPI_Datatype recvtypval, const int rootnum, MPI_Comm comm) { int * restrict ircvcnttab; int * restrict ircvdsptab; int proclocnum; int o; MPI_Comm_rank (comm, &proclocnum); ircvcnttab = NULL; if (rootnum == proclocnum) { int procglbnbr; int procnum; MPI_Comm_size (comm, &procglbnbr); if (memAllocGroup ((void **) (void *) &ircvcnttab, (size_t) (procglbnbr * sizeof (int)), &ircvdsptab, (size_t) (procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("commGatherv: out of memory"); return (MPI_ERR_OTHER); } for (procnum = 0; procnum < procglbnbr; procnum ++) { ircvcnttab[procnum] = (int) recvcnttab[procnum]; ircvdsptab[procnum] = (int) recvdsptab[procnum]; if (((Gnum) ircvcnttab[procnum] != recvcnttab[procnum]) || ((Gnum) ircvdsptab[procnum] != recvdsptab[procnum])) { errorPrint ("commGatherv: communication indices out of range"); memFree (ircvcnttab); return (MPI_ERR_ARG); } } } o = MPI_Gatherv (senddattab, sendcntnbr, sendtypval, recvdattab, ircvcnttab, ircvdsptab, recvtypval, rootnum, comm); if (ircvcnttab != NULL) memFree (ircvcnttab); return (o); } /* ** */ int commScatterv ( void * const senddattab, const Gnum * const sendcnttab, const Gnum * const senddsptab, MPI_Datatype sendtypval, void * const recvdattab, const Gnum recvcntnbr, MPI_Datatype recvtypval, const int rootnum, MPI_Comm comm) { int * restrict isndcnttab; int * restrict isnddsptab; int proclocnum; int o; MPI_Comm_rank (comm, &proclocnum); isndcnttab = NULL; if (rootnum == proclocnum) { int procglbnbr; int procnum; MPI_Comm_size (comm, &procglbnbr); if (memAllocGroup ((void **) (void *) &isndcnttab, (size_t) (procglbnbr * sizeof (int)), &isnddsptab, (size_t) (procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("commScatterv: out of memory"); return (MPI_ERR_OTHER); } for (procnum = 0; procnum < procglbnbr; procnum ++) { isndcnttab[procnum] = (int) sendcnttab[procnum]; isnddsptab[procnum] = (int) senddsptab[procnum]; if (((Gnum) isndcnttab[procnum] != sendcnttab[procnum]) || ((Gnum) isnddsptab[procnum] != senddsptab[procnum])) { errorPrint ("commScatterv: communication indices out of range"); memFree (isndcnttab); return (MPI_ERR_ARG); } } } o = MPI_Scatterv (senddattab, isndcnttab, isnddsptab, sendtypval, recvdattab, (int) recvcntnbr, recvtypval, rootnum, comm); if (isndcnttab != NULL) memFree (isndcnttab); return (o); } scotch_6.0.9/src/libscotch/hall_order_hx.h0000644000302600021200000000640213465315041021005 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hx.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the halo ordering service **/ /** routines. **/ /** **/ /** DATES : # Version 4.0 : from : 14 jan 2003 **/ /** to : 08 dec 2003 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int hallOrderHxBuild (const Gnum, const Gnum, const Gnum, const Gnum * restrict const, Order * restrict const, OrderCblk * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, const Gnum, const Gnum, const float); Gnum hallOrderHxTree (const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, Gnum * restrict const, const Gnum, const Gnum); scotch_6.0.9/src/libscotch/dgraph_halo.c0000644000302600021200000004411513560005435020440 0ustar pelegrinpelegrin/* Copyright 2007-2009,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_halo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** This module contains the halo update **/ /** routines. **/ /** **/ /** # Version P0.0 : from : 01 apr 1997 **/ /** to 20 jun 1997 **/ /** # Version P0.1 : from : 14 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version 5.0 : from : 28 feb 2006 **/ /** to 05 feb 2008 **/ /** # Version 5.1 : from : 28 aug 2008 **/ /** to 22 feb 2011 **/ /** # Version 6.0 : from : 29 oct 2014 **/ /** to 29 oct 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_HALO #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_halo.h" /* These routines fill the send arrays used by ** all of the halo routines. ** They return: ** - void : in all cases. */ #define DGRAPHHALOFILLNAME dgraphHaloFillGeneric #define DGRAPHHALOFILLSIZE attrglbsiz #define DGRAPHHALOFILLCOPY(d,s,n) memCpy ((d), (s), (n)) #include "dgraph_halo_fill.c" #undef DGRAPHHALOFILLNAME #undef DGRAPHHALOFILLSIZE #undef DGRAPHHALOFILLCOPY #define DGRAPHHALOFILLNAME dgraphHaloFillGnum #define DGRAPHHALOFILLSIZE sizeof (Gnum) #define DGRAPHHALOFILLCOPY(d,s,n) *((Gnum *) (d)) = *((Gnum *) (s)) #include "dgraph_halo_fill.c" #undef DGRAPHHALOFILLNAME #undef DGRAPHHALOFILLSIZE #undef DGRAPHHALOFILLCOPY #define DGRAPHHALOFILLNAME dgraphHaloFillGraphPart #define DGRAPHHALOFILLSIZE sizeof (GraphPart) #define DGRAPHHALOFILLCOPY(d,s,n) *((GraphPart *) (d)) = *((GraphPart *) (s)) #include "dgraph_halo_fill.c" #undef DGRAPHHALOFILLNAME #undef DGRAPHHALOFILLSIZE #undef DGRAPHHALOFILLCOPY #define DGRAPHHALOFILLNAME dgraphHaloFillInt /* In case Gnum is not int */ #define DGRAPHHALOFILLSIZE sizeof (int) #define DGRAPHHALOFILLCOPY(d,s,n) *((int *) (d)) = *((int *) (s)) #include "dgraph_halo_fill.c" #undef DGRAPHHALOFILLNAME #undef DGRAPHHALOFILLSIZE #undef DGRAPHHALOFILLCOPY static void dgraphHaloFill ( const Dgraph * restrict const grafptr, const void * restrict const attrgsttab, /* Attribute array to diffuse */ int attrglbsiz, /* Type extent of attribute */ byte * restrict const attrsndtab, /* Array for packing data to send */ int * const senddsptab, /* Temporary displacement array */ const int * restrict const sendcnttab) /* Count array */ { int procnum; byte ** attrdsptab; attrdsptab = (byte **) senddsptab; /* TRICK: use senddsptab (int *) as attrdsptab (byte **) */ attrdsptab[0] = attrsndtab; /* Pre-set send arrays for send buffer filling routines */ for (procnum = 1; procnum < grafptr->procglbnbr; procnum ++) attrdsptab[procnum] = attrdsptab[procnum - 1] + sendcnttab[procnum - 1] * attrglbsiz; if (attrglbsiz == sizeof (Gnum)) dgraphHaloFillGnum (grafptr, attrgsttab, attrglbsiz, attrdsptab); else if (attrglbsiz == sizeof (GraphPart)) dgraphHaloFillGraphPart (grafptr, attrgsttab, attrglbsiz, attrdsptab); else if (attrglbsiz == sizeof (int)) /* In case Gnum is not int (suitable for float's too) */ dgraphHaloFillInt (grafptr, attrgsttab, attrglbsiz, attrdsptab); else /* Generic but slower fallback routine */ dgraphHaloFillGeneric (grafptr, attrgsttab, attrglbsiz, attrdsptab); senddsptab[0] = 0; /* Pre-set send arrays for data sending routines */ for (procnum = 1; procnum < grafptr->procglbnbr; procnum ++) senddsptab[procnum] = senddsptab[procnum - 1] + sendcnttab[procnum - 1]; } /* This function checks that the data of proc{snd,rcv}tab ** are consistent. */ #ifdef SCOTCH_DEBUG_DGRAPH2 int dgraphHaloCheck ( const Dgraph * restrict const grafptr) { int * proctab; /* Array to collect data */ int procnum; int o; if ((proctab = memAlloc (grafptr->procglbnbr * sizeof (int))) == NULL) { errorPrint ("dgraphHaloCheck: out of memory"); return (1); } if (MPI_Alltoall (grafptr->procsndtab, 1, MPI_INT, proctab, 1, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphHaloCheck: communication error"); memFree (proctab); /* Free group leader */ return (1); } o = 0; for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { if (proctab[procnum] != grafptr->procrcvtab[procnum]) { errorPrint ("dgraphHaloCheck: data error"); o = 1; break; } } memFree (proctab); /* Free group leader */ return (o); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ /* These functions perform a synchronous collective ** halo diffusion operation on the ghost array given ** on input. ** It returns: ** - 0 : if the halo has been successfully propagated. ** - !0 : on error. */ static int dgraphHaloSync2 ( Dgraph * restrict const grafptr, void * restrict const attrgsttab, /* Attribute array to share */ const MPI_Datatype attrglbtype, /* Attribute datatype */ byte ** const attrsndptr, /* Pointer to array for packing data to send */ int ** const senddspptr, /* Pointers to communication displacement arrays */ int ** const recvdspptr, MPI_Request ** const requptr) /* Pointer to local request array for point-to-point */ { #if ! ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Aint attrglbtmp; /* Lower bound of attribute datatype (not used) */ #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Aint attrglbsiz; /* Extent of attribute datatype */ int procngbsiz; /* Size of request array for point-to-point communications */ int procngbnum; int * restrict recvdsptab; const int * restrict procrcvtab; if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("dgraphHaloSync2: cannot compute ghost edge array"); return (1); } procngbsiz = ((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? grafptr->procngbnbr : 0; #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Type_extent (attrglbtype, &attrglbsiz); /* Get type extent */ #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Type_get_extent (attrglbtype, &attrglbtmp, &attrglbsiz); /* Get type extent */ #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ if (memAllocGroup ((void **) (void *) attrsndptr, (size_t) (grafptr->procsndnbr * attrglbsiz), senddspptr, (size_t) (grafptr->procglbnbr * MAX (sizeof (int), sizeof (byte *))), /* TRICK: use senddsptab (int *) as attrdsptab (byte **) */ recvdspptr, (size_t) (grafptr->procglbnbr * sizeof (int)), requptr, (size_t) (procngbsiz * 2 * sizeof (MPI_Request)), NULL) == NULL) { errorPrint ("dgraphHaloSync2: out of memory"); return (1); } dgraphHaloFill (grafptr, attrgsttab, attrglbsiz, *attrsndptr, *senddspptr, grafptr->procsndtab); /* Fill data arrays */ recvdsptab = *recvdspptr; procrcvtab = grafptr->procrcvtab; recvdsptab[0] = grafptr->vertlocnbr; for (procngbnum = 1; procngbnum < grafptr->procglbnbr; procngbnum ++) recvdsptab[procngbnum] = recvdsptab[procngbnum - 1] + procrcvtab[procngbnum - 1]; #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphHaloCheck (grafptr) != 0) { errorPrint ("dgraphHaloSync2: invalid communication data"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } int dgraphHaloSync ( Dgraph * restrict const grafptr, void * restrict const attrgsttab, /* Attribute array to share */ const MPI_Datatype attrglbtype) /* Attribute datatype */ { byte * attrsndtab; /* Array for packing data to send */ int * senddsptab; int * recvdsptab; MPI_Request * requtab; int o; if (dgraphHaloSync2 (grafptr, attrgsttab, attrglbtype, &attrsndtab, &senddsptab, &recvdsptab, &requtab) != 0) /* Prepare communication arrays */ return (1); o = 0; /* Assume success */ if ((grafptr->flagval & DGRAPHCOMMPTOP) != 0) { /* If point-to-point exchange */ #if ! ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Aint attrglbtmp; /* Lower bound of attribute datatype (not used) */ #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Aint attrglbsiz; /* Extent of attribute datatype */ const int * restrict procrcvtab; const int * restrict procsndtab; const int * restrict procngbtab; int procngbnbr; int procngbnum; MPI_Comm proccomm; int requnbr; proccomm = grafptr->proccomm; procngbtab = grafptr->procngbtab; procngbnbr = grafptr->procngbnbr; procrcvtab = grafptr->procrcvtab; #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Type_extent (attrglbtype, &attrglbsiz); /* Get type extent */ #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Type_get_extent (attrglbtype, &attrglbtmp, &attrglbsiz); /* Get type extent */ #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ for (procngbnum = procngbnbr - 1, requnbr = 0; procngbnum >= 0; procngbnum --, requnbr ++) { /* Post receives first */ int procglbnum; procglbnum = procngbtab[procngbnum]; if (MPI_Irecv ((byte *) attrgsttab + recvdsptab[procglbnum] * attrglbsiz, procrcvtab[procglbnum], attrglbtype, procglbnum, TAGHALO, proccomm, requtab + requnbr) != MPI_SUCCESS) { errorPrint ("dgraphHaloSync: communication error (1)"); o = 1; break; } } procsndtab = grafptr->procsndtab; for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++, requnbr ++) { /* Post sends afterwards */ int procglbnum; procglbnum = procngbtab[procngbnum]; if (MPI_Isend (attrsndtab + senddsptab[procglbnum] * attrglbsiz, procsndtab[procglbnum], attrglbtype, procglbnum, TAGHALO, proccomm, requtab + requnbr) != MPI_SUCCESS) { errorPrint ("dgraphHaloSync: communication error (2)"); o = 1; break; } } if (MPI_Waitall (requnbr, requtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { errorPrint ("dgraphHaloSync: communication error (3)"); o = 1; } } else { /* Collective communication */ if (MPI_Alltoallv (attrsndtab, grafptr->procsndtab, senddsptab, attrglbtype, /* Perform diffusion */ attrgsttab, grafptr->procrcvtab, recvdsptab, attrglbtype, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphHaloSync: communication error (4)"); o = 1; } } memFree (attrsndtab); /* Free group leader */ return (o); } /* This function performs an asynchronous collective ** halo diffusion operation on the ghost array given ** on input. It fills the given request structure with ** the relevant data. ** It returns: ** - 0 : if the halo has been successfully propagated. ** - !0 : on error. */ #ifdef SCOTCH_PTHREAD static void * dgraphHaloAsync2 ( DgraphHaloRequest * restrict requptr) { return ((void *) (intptr_t) dgraphHaloSync (requptr->grafptr, requptr->attrgsttab, requptr->attrglbtype)); } #endif /* SCOTCH_PTHREAD */ void dgraphHaloAsync ( Dgraph * restrict const grafptr, void * restrict const attrgsttab, /* Attribute array to share */ const MPI_Datatype attrglbtype, /* Attribute datatype */ DgraphHaloRequest * restrict requptr) { #ifndef SCOTCH_PTHREAD #ifdef SCOTCH_MPI_ASYNC_COLL int * senddsptab; int * recvdsptab; #endif /* SCOTCH_MPI_ASYNC_COLL */ #endif /* SCOTCH_PTHREAD */ #ifdef SCOTCH_PTHREAD requptr->flagval = -1; /* Assume thread will be successfully launched */ requptr->grafptr = grafptr; requptr->attrgsttab = attrgsttab; requptr->attrglbtype = attrglbtype; if (pthread_create (&requptr->thrdval, NULL, (void * (*) (void *)) dgraphHaloAsync2, (void *) requptr) != 0) /* If could not create thread */ requptr->flagval = (int) (intptr_t) dgraphHaloAsync2 (requptr); /* Call function synchronously */ #else /* SCOTCH_PTHREAD */ #ifdef SCOTCH_MPI_ASYNC_COLL requptr->flagval = 1; /* Assume error */ requptr->attrsndtab = NULL; /* No memory */ if (dgraphHaloSync2 (grafptr, attrgsttab, attrglbtype, &requptr->attrsndtab, &senddsptab, &recvdsptab) != 0) /* Prepare communication arrays */ return; if (MPE_Ialltoallv (requptr->attrsndtab, grafptr->procsndtab, senddsptab, attrglbtype, /* Perform asynchronous collective communication */ attrgsttab, grafptr->procrcvtab, recvdsptab, attrglbtype, grafptr->proccomm, &requptr->requval) != MPI_SUCCESS) { errorPrint ("dgraphHaloAsync: communication error"); /* Group leader will be freed on wait routine */ return; } requptr->flagval = -1; /* Communication successfully launched */ #else /* SCOTCH_MPI_ASYNC_COLL */ requptr->flagval = dgraphHaloSync (grafptr, attrgsttab, attrglbtype); /* Last resort is synchronous communication */ #endif /* SCOTCH_MPI_ASYNC_COLL */ #endif /* SCOTCH_PTHREAD */ } /* This function performs an asynchronous collective ** halo diffusion operation on the ghost array given ** on input. It fills the given request structure with ** the relevant data. ** It returns: ** - 0 : if the halo has been successfully propagated. ** - !0 : on error. */ int dgraphHaloWait ( DgraphHaloRequest * restrict requptr) { #ifdef SCOTCH_PTHREAD void * o; if (requptr->flagval == -1) { /* If thread launched */ pthread_join (requptr->thrdval, &o); /* Wait for its completion */ requptr->flagval = (int) (intptr_t) o; /* Get thread return value */ } /* Else return value already known */ #else /* SCOTCH_PTHREAD */ #ifdef SCOTCH_MPI_ASYNC_COLL MPI_Status statval; if (requptr->flagval == -1) { /* If communication launched */ MPI_Wait (&requptr->requval, &statval); /* Wait for completion of asynchronous collective communication */ requptr->flagval = (statval.MPI_ERROR == MPI_SUCCESS) ? 0 : 1; /* Set return value accordingly */ } if (requptr->attrsndtab != NULL) /* Free group leader if it was successfully allocated before */ memFree (requptr->attrsndtab); #endif /* SCOTCH_MPI_ASYNC_COLL */ #endif /* SCOTCH_PTHREAD */ return (requptr->flagval); /* Return asynchronous or synchronous error code */ } scotch_6.0.9/src/libscotch/Makefile0000644000302600021200000021226313560013437017466 0ustar pelegrinpelegrin## Copyright 2004,2007-2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## includedir = ../../include libdir = ../../lib include ../Makefile.inc CCDFLAGS ?= $(CFLAGS) ifneq ($(strip $(SCOTCH_NAME_SUFFIX)),) CFLAGS += -DSCOTCH_NAME_SUFFIX=$(SCOTCH_NAME_SUFFIX) CCDFLAGS += -DSCOTCH_NAME_SUFFIX=$(SCOTCH_NAME_SUFFIX) endif ## ## General inference rules. ## %$(OBJ) : %.c $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -o $(@) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) %$(EXE) : %.c $(CC) $(CFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) ## ## Project rules. ## .PHONY : ptscotch scotch ptinstall install clean realclean scotch : $(MAKE) \ CC="$(CCS)" \ CCD="$(CCS)" \ scotch.h \ scotchf.h \ libscotch$(LIB) \ libscotcherr$(LIB) \ libscotcherrexit$(LIB) ptscotch : scotch $(MAKE) \ CC="$(CCP)" \ CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" \ CCDFLAGS="$(CCDFLAGS) -DSCOTCH_PTSCOTCH" \ ptscotch.h \ ptscotchf.h \ libptscotch$(LIB) \ libptscotcherr$(LIB) \ libptscotcherrexit$(LIB) install : $(includedir)/scotch.h \ $(includedir)/scotchf.h \ $(libdir)/libscotch$(LIB) ptinstall : install \ $(includedir)/ptscotch.h \ $(includedir)/ptscotchf.h \ $(libdir)/libptscotch$(LIB) clean : -$(RM) *~ *$(OBJ) lib*$(LIB) parser_yy.c parser_ly.h parser_ll.c *scotch.h *scotchf.h y.output *dummysizes$(EXE) realclean : clean ## ## Installation dependencies ## $(includedir)/scotch.h : scotch.h -$(CP) scotch.h $(includedir) $(includedir)/scotchf.h : scotchf.h -$(CP) scotchf.h $(includedir) $(includedir)/ptscotch.h : ptscotch.h -$(CP) ptscotch.h $(includedir) $(includedir)/ptscotchf.h : ptscotchf.h -$(CP) ptscotchf.h $(includedir) $(libdir)/libscotch$(LIB) : libscotch$(LIB) -$(CP) libscotch$(LIB) libscotcherr*$(LIB) $(libdir) $(libdir)/libptscotch$(LIB) : libptscotch$(LIB) -$(CP) libptscotch$(LIB) libptscotcherr*$(LIB) $(libdir) ## ## Library dependencies. ## LIBPTSCOTCHDEPS = bdgraph$(OBJ) \ bdgraph_bipart_bd$(OBJ) \ bdgraph_bipart_df$(OBJ) \ bdgraph_bipart_ex$(OBJ) \ bdgraph_bipart_ml$(OBJ) \ bdgraph_bipart_sq$(OBJ) \ bdgraph_bipart_st$(OBJ) \ bdgraph_bipart_zr$(OBJ) \ bdgraph_check$(OBJ) \ bdgraph_gather_all$(OBJ) \ bdgraph_store$(OBJ) \ comm$(OBJ) \ dgraph$(OBJ) \ dgraph_allreduce$(OBJ) \ dgraph_band$(OBJ) \ dgraph_build$(OBJ) \ dgraph_build_grid3d$(OBJ) \ dgraph_build_hcub$(OBJ) \ dgraph_check$(OBJ) \ dgraph_coarsen$(OBJ) \ dgraph_fold$(OBJ) \ dgraph_fold_comm$(OBJ) \ dgraph_fold_dup$(OBJ) \ dgraph_gather$(OBJ) \ dgraph_gather_all$(OBJ) \ dgraph_ghst$(OBJ) \ dgraph_halo$(OBJ) \ dgraph_induce$(OBJ) \ dgraph_io_load$(OBJ) \ dgraph_io_save$(OBJ) \ dgraph_match$(OBJ) \ dgraph_match_sync_coll$(OBJ) \ dgraph_match_sync_ptop$(OBJ) \ dgraph_match_check$(OBJ) \ dgraph_redist$(OBJ) \ dgraph_scatter$(OBJ) \ dgraph_view$(OBJ) \ dmapping$(OBJ) \ dmapping_io$(OBJ) \ dorder$(OBJ) \ dorder_gather$(OBJ) \ dorder_io$(OBJ) \ dorder_io_block$(OBJ) \ dorder_io_tree$(OBJ) \ dorder_perm$(OBJ) \ dorder_tree_dist$(OBJ) \ hdgraph$(OBJ) \ hdgraph_check$(OBJ) \ hdgraph_fold$(OBJ) \ hdgraph_gather$(OBJ) \ hdgraph_induce$(OBJ) \ hdgraph_order_nd$(OBJ) \ hdgraph_order_si$(OBJ) \ hdgraph_order_sq$(OBJ) \ hdgraph_order_st$(OBJ) \ kdgraph$(OBJ) \ kdgraph_gather$(OBJ) \ kdgraph_map_rb$(OBJ) \ kdgraph_map_rb_map$(OBJ) \ kdgraph_map_rb_part$(OBJ) \ kdgraph_map_st$(OBJ) \ library_dgraph$(OBJ) \ library_dgraph_f$(OBJ) \ library_dgraph_band$(OBJ) \ library_dgraph_band_f$(OBJ) \ library_dgraph_build$(OBJ) \ library_dgraph_build_f$(OBJ) \ library_dgraph_build_grid3d$(OBJ) \ library_dgraph_build_grid3d_f$(OBJ) \ library_dgraph_check$(OBJ) \ library_dgraph_check_f$(OBJ) \ library_dgraph_coarsen$(OBJ) \ library_dgraph_coarsen_f$(OBJ) \ library_dgraph_gather$(OBJ) \ library_dgraph_gather_f$(OBJ) \ library_dgraph_grow$(OBJ) \ library_dgraph_halo$(OBJ) \ library_dgraph_halo_f$(OBJ) \ library_dgraph_induce$(OBJ) \ library_dgraph_induce_f$(OBJ) \ library_dgraph_io_load$(OBJ) \ library_dgraph_io_load_f$(OBJ) \ library_dgraph_io_save$(OBJ) \ library_dgraph_io_save_f$(OBJ) \ library_dgraph_map$(OBJ) \ library_dgraph_map_f$(OBJ) \ library_dgraph_map_view$(OBJ) \ library_dgraph_map_view_f$(OBJ) \ library_dgraph_order$(OBJ) \ library_dgraph_order_f$(OBJ) \ library_dgraph_order_gather$(OBJ) \ library_dgraph_order_gather_f$(OBJ) \ library_dgraph_order_io$(OBJ) \ library_dgraph_order_io_f$(OBJ) \ library_dgraph_order_io_block$(OBJ) \ library_dgraph_order_io_block_f$(OBJ) \ library_dgraph_order_perm$(OBJ) \ library_dgraph_order_perm_f$(OBJ) \ library_dgraph_order_tree_dist$(OBJ) \ library_dgraph_order_tree_dist_f$(OBJ) \ library_dgraph_redist$(OBJ) \ library_dgraph_redist_f$(OBJ) \ library_dgraph_scatter$(OBJ) \ library_dgraph_scatter_f$(OBJ) \ library_dgraph_stat$(OBJ) \ library_dgraph_stat_f$(OBJ) \ library_dmapping$(OBJ) \ library_dorder$(OBJ) \ vdgraph$(OBJ) \ vdgraph_check$(OBJ) \ vdgraph_gather_all$(OBJ) \ vdgraph_separate_bd$(OBJ) \ vdgraph_separate_df$(OBJ) \ vdgraph_separate_ml$(OBJ) \ vdgraph_separate_sq$(OBJ) \ vdgraph_separate_st$(OBJ) \ vdgraph_separate_zr$(OBJ) \ vdgraph_store$(OBJ) LIBSCOTCHDEPS = arch$(OBJ) \ arch_build$(OBJ) \ arch_build2$(OBJ) \ arch_cmplt$(OBJ) \ arch_cmpltw$(OBJ) \ arch_deco$(OBJ) \ arch_deco2$(OBJ) \ arch_dist$(OBJ) \ arch_hcub$(OBJ) \ arch_mesh$(OBJ) \ arch_sub$(OBJ) \ arch_tleaf$(OBJ) \ arch_torus$(OBJ) \ arch_vcmplt$(OBJ) \ arch_vhcub$(OBJ) \ bgraph$(OBJ) \ bgraph_bipart_bd$(OBJ) \ bgraph_bipart_df$(OBJ) \ bgraph_bipart_ex$(OBJ) \ bgraph_bipart_fm$(OBJ) \ bgraph_bipart_gg$(OBJ) \ bgraph_bipart_gp$(OBJ) \ bgraph_bipart_ml$(OBJ) \ bgraph_bipart_st$(OBJ) \ bgraph_bipart_zr$(OBJ) \ bgraph_check$(OBJ) \ bgraph_store$(OBJ) \ common$(OBJ) \ common_file$(OBJ) \ common_file_compress$(OBJ) \ common_file_decompress$(OBJ) \ common_integer$(OBJ) \ common_memory$(OBJ) \ common_string$(OBJ) \ common_stub$(OBJ) \ common_thread$(OBJ) \ fibo$(OBJ) \ gain$(OBJ) \ geom$(OBJ) \ graph$(OBJ) \ graph_base$(OBJ) \ graph_band$(OBJ) \ graph_check$(OBJ) \ graph_clone$(OBJ) \ graph_coarsen$(OBJ) \ graph_diam$(OBJ) \ graph_ielo$(OBJ) \ graph_induce$(OBJ) \ graph_io$(OBJ) \ graph_io_chac$(OBJ) \ graph_io_habo$(OBJ) \ graph_io_mmkt$(OBJ) \ graph_io_scot$(OBJ) \ graph_list$(OBJ) \ graph_match$(OBJ) \ hall_order_hd$(OBJ) \ hall_order_hf$(OBJ) \ hall_order_hx$(OBJ) \ hgraph$(OBJ) \ hgraph_check$(OBJ) \ hgraph_induce$(OBJ) \ hgraph_order_bl$(OBJ) \ hgraph_order_cc$(OBJ) \ hgraph_order_cp$(OBJ) \ hgraph_order_gp$(OBJ) \ hgraph_order_hd$(OBJ) \ hgraph_order_hf$(OBJ) \ hgraph_order_hx$(OBJ) \ hgraph_order_kp$(OBJ) \ hgraph_order_nd$(OBJ) \ hgraph_order_si$(OBJ) \ hgraph_order_st$(OBJ) \ hmesh$(OBJ) \ hmesh_check$(OBJ) \ hmesh_hgraph$(OBJ) \ hmesh_induce$(OBJ) \ hmesh_mesh$(OBJ) \ hmesh_order_bl$(OBJ) \ hmesh_order_cp$(OBJ) \ hmesh_order_gr$(OBJ) \ hmesh_order_gp$(OBJ) \ hmesh_order_hd$(OBJ) \ hmesh_order_hf$(OBJ) \ hmesh_order_hx$(OBJ) \ hmesh_order_nd$(OBJ) \ hmesh_order_si$(OBJ) \ hmesh_order_st$(OBJ) \ kgraph$(OBJ) \ kgraph_band$(OBJ) \ kgraph_check$(OBJ) \ kgraph_map_bd$(OBJ) \ kgraph_map_cp$(OBJ) \ kgraph_map_df$(OBJ) \ kgraph_map_ex$(OBJ) \ kgraph_map_fm$(OBJ) \ kgraph_map_ml$(OBJ) \ kgraph_map_rb$(OBJ) \ kgraph_map_rb_map$(OBJ) \ kgraph_map_rb_part$(OBJ) \ kgraph_map_st$(OBJ) \ kgraph_store$(OBJ) \ library_arch$(OBJ) \ library_arch_f$(OBJ) \ library_arch_build$(OBJ) \ library_arch_build_f$(OBJ) \ library_arch_dom$(OBJ) \ library_arch_dom_f$(OBJ) \ library_common_f$(OBJ) \ library_geom$(OBJ) \ library_geom_f$(OBJ) \ library_graph$(OBJ) \ library_graph_f$(OBJ) \ library_graph_base$(OBJ) \ library_graph_base_f$(OBJ) \ library_graph_check$(OBJ) \ library_graph_check_f$(OBJ) \ library_graph_coarsen$(OBJ) \ library_graph_coarsen_f$(OBJ) \ library_graph_color$(OBJ) \ library_graph_color_f$(OBJ) \ library_graph_diam$(OBJ) \ library_graph_diam_f$(OBJ) \ library_graph_induce$(OBJ) \ library_graph_induce_f$(OBJ) \ library_graph_io_chac$(OBJ) \ library_graph_io_chac_f$(OBJ) \ library_graph_io_habo$(OBJ) \ library_graph_io_habo_f$(OBJ) \ library_graph_io_mmkt$(OBJ) \ library_graph_io_mmkt_f$(OBJ) \ library_graph_io_scot$(OBJ) \ library_graph_io_scot_f$(OBJ) \ library_graph_map$(OBJ) \ library_graph_map_f$(OBJ) \ library_graph_map_io$(OBJ) \ library_graph_map_io_f$(OBJ) \ library_graph_map_view$(OBJ) \ library_graph_map_view_f$(OBJ) \ library_graph_order$(OBJ) \ library_graph_order_f$(OBJ) \ library_graph_part_ovl$(OBJ) \ library_graph_part_ovl_f$(OBJ) \ library_mapping$(OBJ) \ library_memory$(OBJ) \ library_memory_f$(OBJ) \ library_mesh$(OBJ) \ library_mesh_f$(OBJ) \ library_mesh_graph$(OBJ) \ library_mesh_graph_f$(OBJ) \ library_mesh_io_habo$(OBJ) \ library_mesh_io_habo_f$(OBJ) \ library_mesh_io_scot$(OBJ) \ library_mesh_io_scot_f$(OBJ) \ library_mesh_order$(OBJ) \ library_mesh_order_f$(OBJ) \ library_order$(OBJ) \ library_parser$(OBJ) \ library_parser_f$(OBJ) \ library_random$(OBJ) \ library_random_f$(OBJ) \ library_strat$(OBJ) \ library_version$(OBJ) \ library_version_f$(OBJ) \ mapping$(OBJ) \ mapping_io$(OBJ) \ mesh$(OBJ) \ mesh_check$(OBJ) \ mesh_coarsen$(OBJ) \ mesh_graph$(OBJ) \ mesh_induce_sepa$(OBJ) \ mesh_io$(OBJ) \ mesh_io_habo$(OBJ) \ mesh_io_scot$(OBJ) \ order$(OBJ) \ order_check$(OBJ) \ order_io$(OBJ) \ parser$(OBJ) \ parser_ll$(OBJ) \ parser_yy$(OBJ) \ vgraph$(OBJ) \ vgraph_check$(OBJ) \ vgraph_separate_bd$(OBJ) \ vgraph_separate_df$(OBJ) \ vgraph_separate_es$(OBJ) \ vgraph_separate_fm$(OBJ) \ vgraph_separate_gg$(OBJ) \ vgraph_separate_gp$(OBJ) \ vgraph_separate_ml$(OBJ) \ vgraph_separate_st$(OBJ) \ vgraph_separate_th$(OBJ) \ vgraph_separate_vw$(OBJ) \ vgraph_separate_zr$(OBJ) \ vgraph_store$(OBJ) \ vmesh$(OBJ) \ vmesh_check$(OBJ) \ vmesh_separate_fm$(OBJ) \ vmesh_separate_gg$(OBJ) \ vmesh_separate_gr$(OBJ) \ vmesh_separate_ml$(OBJ) \ vmesh_separate_zr$(OBJ) \ vmesh_separate_st$(OBJ) \ vmesh_store$(OBJ) \ wgraph$(OBJ) \ wgraph_check$(OBJ) \ wgraph_part_fm$(OBJ) \ wgraph_part_gg$(OBJ) \ wgraph_part_gp$(OBJ) \ wgraph_part_ml$(OBJ) \ wgraph_part_rb$(OBJ) \ wgraph_part_st$(OBJ) \ wgraph_part_zr$(OBJ) \ wgraph_store$(OBJ) ## ## Todo list. ## common$(OBJ) : common.c \ module.h \ common.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_file$(OBJ) : common_file.c \ module.h \ common.h \ common_file.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_file_compress$(OBJ) : common_file_compress.c \ module.h \ common.h \ common_file.h \ common_file_compress.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_file_decompress$(OBJ) : common_file_decompress.c \ module.h \ common.h \ common_file.h \ common_file_compress.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_integer$(OBJ) : common_integer.c \ module.h \ common.h \ common_sort.c $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_memory$(OBJ) : common_memory.c \ module.h \ common.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_string$(OBJ) : common_string.c \ module.h \ common.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_stub$(OBJ) : common_stub.c \ module.h \ common.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) common_thread$(OBJ) : common_thread.c \ module.h \ common.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -DSCOTCH_COMMON_RENAME -o $(@) arch$(OBJ) : arch.c \ module.h \ common.h \ graph.h \ arch.h \ arch_cmplt.h \ arch_cmpltw.h \ arch_deco.h \ arch_deco2.h \ arch_dist.h \ arch_hcub.h \ arch_mesh.h \ arch_sub.h \ arch_tleaf.h \ arch_torus.h \ arch_vcmplt.h \ arch_vhcub.h arch_build$(OBJ) : arch_build.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ arch_deco.h \ arch_vcmplt.h \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ arch_build.h arch_build2$(OBJ) : arch_build2.c \ module.h \ common.h \ graph.h \ arch.h \ arch$(OBJ) \ arch_sub.h \ arch_deco2.h \ graph_coarsen.h \ arch_build2.h arch_cmplt$(OBJ) : arch_cmplt.c \ module.h \ common.h \ arch.h \ arch_cmplt.h arch_cmpltw$(OBJ) : arch_cmpltw.c \ module.h \ common.h \ arch.h \ arch_cmpltw.h arch_deco$(OBJ) : arch_deco.c \ module.h \ common.h \ arch.h \ arch_deco2.h \ arch_deco.h arch_deco2$(OBJ) : arch_deco2.c \ module.h \ common.h \ graph.h \ arch.h \ arch_deco2.h arch_dist$(OBJ) : arch_dist.c \ module.h \ common.h \ arch.h \ arch_dist.h arch_hcub$(OBJ) : arch_hcub.c \ module.h \ common.h \ arch.h \ arch_hcub.h arch_mesh$(OBJ) : arch_mesh.c \ module.h \ common.h \ graph.h \ arch.h \ arch_mesh.h arch_tleaf$(OBJ) : arch_tleaf.c \ module.h \ common.h \ arch.h \ arch_tleaf.h arch_sub$(OBJ) : arch_sub.c \ module.h \ common.h \ graph.h \ arch.h \ graph_coarsen.h \ arch_sub.h arch_torus$(OBJ) : arch_torus.c \ module.h \ common.h \ arch.h \ arch_mesh.h \ arch_torus.h arch_vcpmlt$(OBJ) : arch_vcmplt.c \ module.h \ common.h \ arch.h \ arch_vcmplt.h arch_vhcub$(OBJ) : arch_vhcub.c \ module.h \ common.h \ arch.h \ arch_vhcub.h bdgraph$(OBJ) : bdgraph.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ dmapping.h \ bdgraph.h bdgraph_bipart_bd$(OBJ) : bdgraph_bipart_bd.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ dgraph.h \ dgraph_halo.h \ bdgraph.h \ bdgraph_bipart_bd.h \ bdgraph_bipart_st.h bdgraph_bipart_df$(OBJ) : bdgraph_bipart_df.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ bdgraph.h \ bdgraph_bipart_df.h bdgraph_bipart_ex$(OBJ) : bdgraph_bipart_ex.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ bdgraph.h \ bdgraph_bipart_ex.h bdgraph_bipart_ml$(OBJ) : bdgraph_bipart_ml.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ dgraph.h \ dgraph_coarsen.h \ bdgraph.h \ bdgraph_bipart_ml.h \ bdgraph_bipart_st.h bdgraph_bipart_sq$(OBJ) : bdgraph_bipart_sq.c \ module.h \ common.h \ comm.h \ parser.h \ arch$(OBJ) \ graph.h \ bgraph.h \ bgraph_bipart_st.h \ dgraph.h \ bdgraph.h \ bdgraph_bipart_sq.h bdgraph_bipart_st$(OBJ) : bdgraph_bipart_st.c \ module.h \ common.h \ gain.h \ parser.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_st.h \ dgraph.h \ dgraph_coarsen.h \ bdgraph.h \ bdgraph_bipart_bd.h \ bdgraph_bipart_df.h \ bdgraph_bipart_ex.h \ bdgraph_bipart_ml.h \ bdgraph_bipart_sq.h \ bdgraph_bipart_st.h \ bdgraph_bipart_zr.h bdgraph_bipart_zr$(OBJ) : bdgraph_bipart_zr.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ bdgraph.h \ bdgraph_bipart_zr.h bdgraph_check$(OBJ) : bdgraph_check.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ bdgraph.h bdgraph_gather_all$(OBJ) : bdgraph_gather_all.c \ module.h \ common.h \ comm.h \ arch$(OBJ) \ graph.h \ bgraph.h \ dgraph.h \ bdgraph.h bdgraph_store$(OBJ) : bdgraph_store.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ bdgraph.h bgraph$(OBJ) : bgraph.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h bgraph_bipart_bd$(OBJ) : bgraph_bipart_bd.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_bd.h \ bgraph_bipart_st.h bgraph_bipart_df$(OBJ) : bgraph_bipart_df.c \ bgraph_bipart_df_loop.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_df.h bgraph_bipart_ex$(OBJ) : bgraph_bipart_ex.c \ module.h \ common.h \ gain.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_ex.h \ bgraph_bipart_fm.h \ bgraph_bipart_gg.h bgraph_bipart_fm$(OBJ) : bgraph_bipart_fm.c \ gain.h \ fibo.h \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_fm.h bgraph_bipart_gg$(OBJ) : bgraph_bipart_gg.c \ gain.h \ fibo.h \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_gg.h bgraph_bipart_gp$(OBJ) : bgraph_bipart_gp.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_gp.h bgraph_bipart_ml$(OBJ) : bgraph_bipart_ml.c \ module.h \ common.h \ parser.h \ graph.h \ graph_coarsen.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_ml.h \ bgraph_bipart_st.h bgraph_bipart_st$(OBJ) : bgraph_bipart_st.c \ gain.h \ fibo.h \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_bd.h \ bgraph_bipart_df.h \ bgraph_bipart_ex.h \ bgraph_bipart_fm.h \ bgraph_bipart_gg.h \ bgraph_bipart_gp.h \ bgraph_bipart_ml.h \ bgraph_bipart_st.h \ bgraph_bipart_zr.h bgraph_bipart_zr$(OBJ) : bgraph_bipart_zr.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h \ bgraph_bipart_zr.h bgraph_check$(OBJ) : bgraph_check.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h bgraph_store$(OBJ) : bgraph_store.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ bgraph.h comm$(OBJ) : comm.c \ module.h \ common.h \ comm.h dgraph$(OBJ) : dgraph.c \ module.h \ common.h \ dgraph.h dgraph_allreduce$(OBJ) : dgraph_allreduce.c \ module.h \ common.h \ dgraph.h \ dgraph_allreduce.h dgraph_band$(OBJ) : dgraph_band.c \ dgraph_band_grow.c \ module.h \ common.h \ dgraph.h dgraph_build$(OBJ) : dgraph_build.c \ module.h \ common.h \ dgraph.h \ dgraph_allreduce.h \ dgraph_build.h dgraph_build_grid3d$(OBJ) : dgraph_build_grid3d.c \ module.h \ common.h \ dgraph.h \ dgraph_build_grid3d.h dgraph_build_hcub$(OBJ) : dgraph_build_hcub.c \ module.h \ common.h \ dgraph.h dgraph_check$(OBJ) : dgraph_check.c \ module.h \ common.h \ dgraph.h dgraph_coarsen$(OBJ) : dgraph_coarsen.c \ module.h \ common.h \ dgraph.h \ dgraph_allreduce.h \ dgraph_coarsen.h \ dgraph_match.h dgraph_fold$(OBJ) : dgraph_fold.c \ module.h \ common.h \ comm.h \ dgraph.h \ dgraph_fold.h \ dgraph_fold_comm.h dgraph_fold_comm$(OBJ) : dgraph_fold_comm.c \ module.h \ common.h \ comm.h \ dgraph.h \ dgraph_fold_comm.h dgraph_fold_dup$(OBJ) : dgraph_fold_dup.c \ module.h \ common.h \ dgraph.h \ dgraph_fold_dup.h dgraph_gather$(OBJ) : dgraph_gather.c \ module.h \ common.h \ graph.h \ dgraph.h dgraph_gather_all$(OBJ) : dgraph_gather_all.c \ module.h \ common.h \ comm.h \ graph.h \ dgraph.h dgraph_ghst$(OBJ) : dgraph_ghst.c \ module.h \ common.h \ dgraph.h \ dgraph_ghst.h dgraph_halo$(OBJ) : dgraph_halo.c \ dgraph_halo_fill.c \ module.h \ common.h \ dgraph.h \ dgraph_halo.h dgraph_induce$(OBJ) : dgraph_induce.c \ module.h \ common.h \ dgraph.h dgraph_io_load$(OBJ) : dgraph_io_load.c \ module.h \ common.h \ dgraph.h \ dgraph_io_load.h dgraph_io_save$(OBJ) : dgraph_io_save.c \ module.h \ common.h \ dgraph.h dgraph_match$(OBJ) : dgraph_match.c \ dgraph_match_scan.c \ module.h \ common.h \ dgraph.h \ dgraph_coarsen.h \ dgraph_match.h dgraph_match_check$(OBJ) : dgraph_match_check.c \ module.h \ common.h \ dgraph.h \ dgraph_coarsen.h \ dgraph_match.h dgraph_match_sync_coll$(OBJ) : dgraph_match_sync_coll.c \ module.h \ common.h \ dgraph.h \ dgraph_coarsen.h \ dgraph_match.h \ graph.h dgraph_match_sync_ptop$(OBJ) : dgraph_match_sync_ptop.c \ module.h \ common.h \ dgraph.h \ dgraph_coarsen.h \ dgraph_match.h \ graph.h dgraph_redist$(OBJ) : dgraph_redist.c \ module.h \ common.h \ graph.h \ dgraph.h dgraph_scatter$(OBJ) : dgraph_scatter.c \ module.h \ common.h \ graph.h \ dgraph.h dgraph_view$(OBJ) : dgraph_view.c \ module.h \ common.h \ dgraph.h dmapping$(OBJ) : dmapping.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ dmapping.h dmapping_io$(OBJ) : dmapping_io.c \ module.h \ common.h \ comm.h \ arch$(OBJ) \ dgraph.h \ dgraph_allreduce.h \ dmapping.h dorder$(OBJ) : dorder.c \ module.h \ common.h \ dgraph.h \ dorder.h dorder_gather$(OBJ) : dorder_gather.c \ module.h \ common.h \ dgraph.h \ dgraph_allreduce.h \ dorder.h \ dorder_gather.h \ order.h dorder_io$(OBJ) : dorder_io.c \ module.h \ common.h \ comm.h \ dgraph.h \ dorder.h \ order.h dorder_io_block$(OBJ) : dorder_io_block.c \ module.h \ common.h \ dgraph.h \ dorder.h \ order.h dorder_io_tree$(OBJ) : dorder_io_tree.c \ module.h \ common.h \ comm.h \ dgraph.h \ dorder.h \ order.h dorder_perm$(OBJ) : dorder_perm.c \ module.h \ common.h \ dgraph.h \ dorder.h \ dorder_perm.h dorder_tree_dist$(OBJ) : dorder_tree_dist.c \ module.h \ common.h \ dgraph.h \ dorder.h fibo$(OBJ) : fibo.c \ module.h \ common.h \ fibo.h gain$(OBJ) : gain.c \ module.h \ common.h \ gain.h geom$(OBJ) : geom.c \ module.h \ common.h \ geom.h graph$(OBJ) : graph.c \ module.h \ common.h \ graph.h graph_band$(OBJ) : graph_band.c \ module.h \ common.h \ graph.h graph_base$(OBJ) : graph_base.c \ module.h \ common.h \ graph.h graph_check$(OBJ) : graph_check.c \ module.h \ common.h \ graph.h graph_clone$(OBJ) : graph_clone.c \ module.h \ common.h \ graph.h graph_coarsen$(OBJ) : graph_coarsen.c \ graph_coarsen_edge.c \ module.h \ common.h \ graph.h \ graph_coarsen.h graph_diam$(OBJ) : graph_diam.c \ module.h \ common.h \ graph.h \ fibo.h \ graph_diam.h graph_ielo$(OBJ) : graph_ielo.c \ module.h \ common.h \ graph.h graph_induce$(OBJ) : graph_induce.c \ module.h \ common.h \ graph.h \ graph_induce.h graph_io$(OBJ) : graph_io.c \ module.h \ common.h \ graph.h \ graph_io.h graph_io_chac$(OBJ) : graph_io_chac.c \ module.h \ common.h \ geom.h \ graph.h graph_io_habo$(OBJ) : graph_io_habo.c \ module.h \ common.h \ geom.h \ graph.h \ graph_io_habo.h graph_io_mmkt$(OBJ) : graph_io_mmkt.c \ module.h \ common.h \ geom.h \ graph.h \ graph_io_mmkt.h graph_io_scot$(OBJ) : graph_io_scot.c \ module.h \ common.h \ geom.h \ graph.h \ graph_io_scot.h graph_list$(OBJ) : graph_list.c \ module.h \ common.h \ graph.h graph_match$(OBJ) : graph_match.c \ graph_match_scan.c \ module.h \ common.h \ arch.h \ graph.h \ graph_coarsen.h \ graph_match.h hall_order_hd$(OBJ) : hall_order_hd.c \ module.h \ common.h \ graph.h \ hall_order_hd.h hall_order_hf$(OBJ) : hall_order_hf.c \ module.h \ common.h \ graph.h \ hall_order_hf.h hall_order_hx$(OBJ) : hall_order_hx.c \ module.h \ common.h \ graph.h \ order.h \ hall_order_hx.h hdgraph$(OBJ) : hdgraph.c \ module.h \ common.h \ dgraph.h \ hdgraph.h hdgraph_check$(OBJ) : hdgraph_check.c \ module.h \ common.h \ dgraph.h \ hdgraph.h hdgraph_fold$(OBJ) : hdgraph_fold.c \ module.h \ common.h \ comm.h \ dgraph.h \ dgraph_fold_comm.h \ hdgraph.h \ hdgraph_fold.h hdgraph_gather$(OBJ) : hdgraph_gather.c \ module.h \ common.h \ comm.h \ graph.h \ hgraph.h \ dgraph.h \ hdgraph.h hdgraph_induce$(OBJ) : hdgraph_induce.c \ module.h \ common.h \ dgraph.h \ hdgraph.h hdgraph_order_nd$(OBJ) : hdgraph_order_nd.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_st.h \ dgraph.h \ dorder.h \ hdgraph.h \ hdgraph_order_nd.h \ hdgraph_order_sq.h \ hdgraph_order_st.h \ vdgraph.h \ vdgraph_separate_st.h hdgraph_order_si$(OBJ) : hdgraph_order_si.c \ module.h \ common.h \ dgraph.h \ dorder.h \ hdgraph.h \ hdgraph_order_si.h hdgraph_order_sq$(OBJ) : hdgraph_order_sq.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_st.h \ dgraph.h \ dorder.h \ hdgraph.h \ hdgraph_order_sq.h hdgraph_order_st$(OBJ) : hdgraph_order_st.c \ module.h \ common.h \ parser.h \ dgraph.h \ dgraph_coarsen.h \ dorder.h \ hdgraph.h \ vdgraph.h \ vdgraph_separate_st.h \ hdgraph_order_nd.h \ hdgraph_order_si.h \ hdgraph_order_sq.h \ hdgraph_order_st.h hgraph$(OBJ) : hgraph.c \ module.h \ common.h \ graph.h \ hgraph.h hgraph_check$(OBJ) : hgraph_check.c \ module.h \ common.h \ graph.h \ hgraph.h hgraph_induce$(OBJ) : hgraph_induce.c \ hgraph_induce_edge.c \ module.h \ common.h \ graph.h \ hgraph.h \ hgraph_induce.h hgraph_order_bl$(OBJ) : hgraph_order_bl.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_bl.h hgraph_order_cc$(OBJ) : hgraph_order_cc.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_cc.h \ hgraph_order_st.h hgraph_order_cp$(OBJ) : hgraph_order_cp.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_cp.h \ hgraph_order_st.h hgraph_order_gp$(OBJ) : hgraph_order_gp.c \ module.h \ common.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_gp.h hgraph_order_hd$(OBJ) : hgraph_order_hd.c \ module.h \ common.h \ graph.h \ order.h \ hgraph.h \ hall_order_hd.h \ hall_order_hx.h \ hgraph_order_hd.h \ hgraph_order_hx.h \ hgraph_order_si.h hgraph_order_hf$(OBJ) : hgraph_order_hf.c \ module.h \ common.h \ graph.h \ order.h \ hgraph.h \ hall_order_hf.h \ hall_order_hx.h \ hgraph_order_hf.h \ hgraph_order_hx.h \ hgraph_order_si.h hgraph_order_hx$(OBJ) : hgraph_order_hx.c \ module.h \ common.h \ graph.h \ hgraph.h \ hgraph_order_hx.h hgraph_order_kp$(OBJ) : hgraph_order_kp.c \ module.h \ common.h \ parser.h \ graph.h \ arch.h \ mapping.h \ order.h \ hgraph.h \ hgraph_order_kp.h \ hgraph_order_si.h \ hgraph_order_st.h \ kgraph.h \ kgraph_map_st.h \ scotch.h hgraph_order_nd$(OBJ) : hgraph_order_nd.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_nd.h \ hgraph_order_st.h \ vgraph.h \ vgraph_separate_st.h hgraph_order_si$(OBJ) : hgraph_order_si.c \ module.h \ common.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_si.h hgraph_order_st$(OBJ) : hgraph_order_st.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ order.h \ hgraph.h \ hgraph_order_bl.h \ hgraph_order_cp.h \ hgraph_order_gp.h \ hgraph_order_hd.h \ hgraph_order_hf.h \ hgraph_order_kp.h \ hgraph_order_nd.h \ hgraph_order_si.h \ hgraph_order_st.h \ kgraph.h \ kgraph_map_st.h \ vgraph.h \ vgraph_separate_st.h hmesh$(OBJ) : hmesh.c \ module.h \ common.h \ graph.h \ mesh.h \ hmesh.h hmesh_check$(OBJ) : hmesh_check.c \ module.h \ common.h \ graph.h \ mesh.h \ hmesh.h hmesh_hgraph$(OBJ) : hmesh_hgraph.c \ module.h \ common.h \ graph.h \ hgraph.h \ mesh.h \ hmesh.h \ hmesh_hgraph.h hmesh_induce$(OBJ) : hmesh_induce.c \ module.h \ common.h \ graph.h \ mesh.h \ hmesh.h hmesh_mesh$(OBJ) : hmesh_mesh.c \ module.h \ common.h \ graph.h \ mesh.h \ hmesh.h hmesh_order_bl$(OBJ) : hmesh_order_bl.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_bl.h \ hmesh_order_st.h hmesh_order_cp$(OBJ) : hmesh_order_cp.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_cp.h \ hmesh_order_st.h hmesh_order_gp$(OBJ) : hmesh_order_gp.c \ module.h \ common.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_gp.h hmesh_order_gp$(OBJ) : hmesh_order_gp.c \ module.h \ common.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_gp.h hmesh_order_hd$(OBJ) : hmesh_order_hd.c \ module.h \ common.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hall_order_hd.h \ hall_order_hx.h \ hmesh_order_hd.h \ hmesh_order_si.h hmesh_order_hf$(OBJ) : hmesh_order_hf.c \ module.h \ common.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hall_order_hf.h \ hall_order_hx.h \ hmesh_order_hf.h \ hmesh_order_si.h hmesh_order_hx$(OBJ) : hmesh_order_hx.c \ module.h \ common.h \ graph.h \ mesh.h \ hmesh.h \ hmesh_order_hx.h hmesh_order_nd$(OBJ) : hmesh_order_nd.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_nd.h \ hmesh_order_st.h \ vmesh.h \ vmesh_separate_st.h hmesh_order_si$(OBJ) : hmesh_order_si.c \ module.h \ common.h \ graph.h \ order.h \ mesh.h \ hmesh.h \ hmesh_order_si.h hmesh_order_st$(OBJ) : hmesh_order_st.c \ module.h \ common.h \ parser.h \ graph.h \ hgraph.h \ hgraph_order_st.h \ mesh.h \ hmesh.h \ order.h \ vmesh_separate_st.h \ hmesh_order_bl.h \ hmesh_order_gp.h \ hmesh_order_gr.h \ hmesh_order_hd.h \ hmesh_order_hf.h \ hmesh_order_nd.h \ hmesh_order_si.h \ hmesh_order_st.h kdgraph$(OBJ) : kdgraph.c \ module.h \ common.h \ arch$(OBJ) \ dgraph.h \ dmapping.h \ kdgraph.h kdgraph_gather$(OBJ) : kdgraph_gather.c \ module.h \ common.h \ arch$(OBJ) \ graph.h \ mapping.h \ kgraph.h \ dgraph.h \ kdgraph.h kdgraph_map_rb$(OBJ) : kdgraph_map_rb.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ graph.h \ dgraph.h \ dmapping.h \ kdgraph.h \ kdgraph_map_rb.h \ kdgraph_map_rb_map.h \ kdgraph_map_rb_part.h kdgraph_map_rb_map$(OBJ) : kdgraph_map_rb_map.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ graph.h \ bgraph.h \ bgraph_bipart_st.h \ mapping.h \ kgraph.h \ kgraph_map_st.h \ dgraph.h \ dmapping.h \ bdgraph.h \ bdgraph_bipart_st.h \ kdgraph.h \ kdgraph_map_rb.h \ kdgraph_map_rb_map.h \ kdgraph_map_st.h kdgraph_map_rb_part$(OBJ) : kdgraph_map_rb_part.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ graph.h \ bgraph.h \ bgraph_bipart_st.h \ mapping.h \ kgraph.h \ kgraph_map_st.h \ dgraph.h \ dmapping.h \ bdgraph.h \ bdgraph_bipart_st.h \ kdgraph.h \ kdgraph_map_rb.h \ kdgraph_map_rb_part.h \ kdgraph_map_st.h kdgraph_map_st$(OBJ) : kdgraph_map_st.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ graph.h \ dgraph.h \ dgraph_coarsen.h \ mapping.h \ dmapping.h \ bdgraph.h \ bdgraph_bipart_st.h \ kgraph.h \ kgraph_map_st.h \ kdgraph.h \ kdgraph_map_rb.h \ kdgraph_map_st.h kgraph$(OBJ) : kgraph.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h kgraph_band$(OBJ) : kgraph_band.c \ module.h \ common.h \ arch$(OBJ) \ graph.h \ mapping.h \ kgraph.h kgraph_check$(OBJ) : kgraph_check.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h kgraph_map_bd$(OBJ) : kgraph_map_bd.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_bd.h kgraph_map_cp$(OBJ) : kgraph_map_cp.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_cp.h kgraph_map_df$(OBJ) : kgraph_map_df.c \ kgraph_map_df_loop.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_df.h kgraph_map_ex$(OBJ) : kgraph_map_ex.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_ex.h kgraph_map_fm$(OBJ) : kgraph_map_fm.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_fm.h \ kgraph_map_rb.h kgraph_map_ml$(OBJ) : kgraph_map_ml.c \ module.h \ common.h \ parser.h \ graph.h \ graph_coarsen.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_ml.h kgraph_map_rb$(OBJ) : kgraph_map_rb.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ kgraph.h \ kgraph_map_rb.h \ kgraph_map_rb_map.h \ kgraph_map_rb_part.h kgraph_map_rb_map$(OBJ) : kgraph_map_rb_map.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ kgraph.h \ kgraph_map_rb.h \ kgraph_map_rb_map.h kgraph_map_rb_part$(OBJ) : kgraph_map_rb_part.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ kgraph.h \ kgraph_map_rb.h \ kgraph_map_rb_part.h kgraph_map_st$(OBJ) : kgraph_map_st.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ kgraph.h \ kgraph_map_bd.h \ kgraph_map_cp.h \ kgraph_map_df.h \ kgraph_map_fm.h \ kgraph_map_ml.h \ kgraph_map_rb.h kgraph_store$(OBJ) : kgraph_store.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h library_arch$(OBJ) : library_arch.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ arch_cmplt.h \ arch_cmpltw.h \ arch_hcub.h \ arch_mesh.h \ arch_sub.h \ arch_tleaf.h \ arch_torus.h \ arch_vcmplt.h \ arch_vhcub.h \ scotch.h library_arch_f$(OBJ) : library_arch_f.c \ module.h \ common.h \ scotch.h library_arch_build$(OBJ) : library_arch_build.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ arch_build.h \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ scotch.h library_arch_build_f$(OBJ) : library_arch_build_f.c \ module.h \ common.h \ scotch.h library_arch_dom$(OBJ) : library_arch.c \ module.h \ common.h \ arch.h \ scotch.h library_arch_dom_f$(OBJ) : library_arch_dom_f.c \ module.h \ common.h \ scotch.h library_common_f$(OBJ) : library_common_f.c \ module.h \ common.h \ scotch.h library_dgraph$(OBJ) : library_dgraph.c \ module.h \ common.h \ graph.h \ dgraph.h \ ptscotch.h library_dgraph_f$(OBJ) : library_dgraph_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_band$(OBJ) : library_dgraph_band.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_band_f$(OBJ) : library_dgraph_band_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_build$(OBJ) : library_dgraph_build.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_build_f$(OBJ) : library_dgraph_build_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_build_grid3d$(OBJ): library_dgraph_build_grid3d.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_build_grid3d_f$(OBJ): library_dgraph_build_grid3d_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_check$(OBJ) : library_dgraph_check.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_check_f$(OBJ) : library_dgraph_check_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_coarsen$(OBJ) : library_dgraph_coarsen.c \ module.h \ common.h \ dgraph.h \ dgraph_coarsen.h \ ptscotch.h library_dgraph_coarsen_f$(OBJ) : library_dgraph_coarsen_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_gather$(OBJ) : library_dgraph_gather.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_gather_f$(OBJ) : library_dgraph_gather_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_grow$(OBJ) : library_dgraph_grow.c \ dgraph_band_grow.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_halo$(OBJ) : library_dgraph_halo.c \ module.h \ common.h \ dgraph.h \ dgraph_halo.h \ ptscotch.h library_dgraph_halo_f$(OBJ) : library_dgraph_halo_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_induce$(OBJ) : library_dgraph_induce.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_induce_f$(OBJ) : library_dgraph_induce_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_io_load$(OBJ) : library_dgraph_io_load.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_io_load_f$(OBJ) : library_dgraph_io_load_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_io_save$(OBJ) : library_dgraph_io_save.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_io_save_f$(OBJ) : library_dgraph_io_save_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_map$(OBJ) : library_dgraph_map.c \ module.h \ common.h \ parser.h \ arch$(OBJ) \ dgraph.h \ dmapping.h \ kdgraph.h \ kdgraph_map_st.h \ library_dmapping.h \ ptscotch.h library_dgraph_map_f$(OBJ) : library_dgraph_map_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_map_view$(OBJ) : library_dgraph_map_view.c \ module.h \ common.h \ parser.h \ dgraph.h \ dgraph_halo.h \ arch$(OBJ) \ dmapping.h \ kdgraph.h \ library_dmapping.h \ ptscotch.h library_dgraph_map_view_f$(OBJ) : library_dgraph_map_view_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order$(OBJ) : library_dgraph_order.c \ module.h \ common.h \ parser.h \ dgraph.h \ dorder.h \ hdgraph.h \ hdgraph_order_st.h \ ptscotch.h library_dgraph_order_f$(OBJ) : library_dgraph_order_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order_gather$(OBJ): library_dgraph_order_gather.c \ module.h \ common.h \ dgraph.h \ order.h \ dorder.h \ library_order.h \ ptscotch.h library_dgraph_order_gather_f$(OBJ): library_dgraph_order_gather_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order_io$(OBJ) : library_dgraph_order_io.c \ module.h \ common.h \ dgraph.h \ dorder.h \ ptscotch.h library_dgraph_order_io_f$(OBJ) : library_dgraph_order_io_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order_io_block$(OBJ): library_dgraph_order_io_block.c \ module.h \ common.h \ dgraph.h \ dorder.h \ ptscotch.h library_dgraph_order_io_block_f$(OBJ): library_dgraph_order_io_block_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order_perm$(OBJ) : library_dgraph_order_perm.c \ module.h \ common.h \ dgraph.h \ dorder.h \ ptscotch.h library_dgraph_order_perm_f$(OBJ): library_dgraph_order_perm_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_order_tree_dist$(OBJ): library_dgraph_order_tree_dist.c \ module.h \ common.h \ dgraph.h \ dorder.h \ ptscotch.h library_dgraph_order_tree_dist_f$(OBJ): library_dgraph_order_tree_dist_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_redist$(OBJ) : library_dgraph_redist.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_redist_f$(OBJ) : library_dgraph_redist_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_scatter$(OBJ) : library_dgraph_scatter.c \ module.h \ common.h \ dgraph.h \ ptscotch.h library_dgraph_scatter_f$(OBJ) : library_dgraph_scatter_f.c \ module.h \ common.h \ ptscotch.h library_dgraph_stat$(OBJ) : library_dgraph_stat.c \ module.h \ common.h \ dgraph.h \ ptscotch.h \ library_dgraph_stat.h library_dgraph_stat_f$(OBJ) : library_dgraph_stat_f.c \ module.h \ common.h \ ptscotch.h library_dmapping$(OBJ) : library_dmapping.c \ module.h \ common.h \ ptscotch.h library_dorder$(OBJ) : library_dorder.c \ module.h \ common.h \ ptscotch.h library_error$(OBJ) : library_error.c \ module.h \ common.h \ scotch.h library_error_exit$(OBJ) : library_error_exit.c \ module.h \ common.h \ scotch.h library_error_pt$(OBJ) : library_error.c \ module.h \ common.h \ scotch.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -o $(@) library_error_exit_pt$(OBJ) : library_error_exit.c \ module.h \ common.h \ scotch.h $(CC) $(CFLAGS) $(CLIBFLAGS) -c $(<) -o $(@) library_geom$(OBJ) : library_geom.c \ module.h \ common.h \ geom.h \ graph.h \ scotch.h library_geom_f$(OBJ) : library_geom_f.c \ module.h \ common.h \ scotch.h library_graph$(OBJ) : library_graph.c \ module.h \ common.h \ graph.h \ graph_io.h \ scotch.h library_graph_f$(OBJ) : library_graph_f.c \ module.h \ common.h \ scotch.h library_graph_base$(OBJ) : library_graph_base.c \ module.h \ common.h \ graph.h \ scotch.h library_graph_base_f$(OBJ) : library_graph_base_f.c \ module.h \ common.h \ scotch.h library_graph_check$(OBJ) : library_graph_check.c \ module.h \ common.h \ graph.h \ scotch.h library_graph_check_f$(OBJ) : library_graph_check_f.c \ module.h \ common.h \ scotch.h library_graph_coarsen$(OBJ) : library_graph_coarsen.c \ module.h \ common.h \ graph.h \ graph_coarsen.h \ scotch.h library_graph_coarsen_f$(OBJ) : library_graph_coarsen_f.c \ module.h \ common.h \ scotch.h library_graph_color$(OBJ) : library_graph_color.c \ module.h \ common.h \ graph.h \ scotch.h library_graph_color_f$(OBJ) : library_graph_color_f.c \ module.h \ common.h \ scotch.h library_graph_diam$(OBJ) : library_graph_diam.c \ module.h \ common.h \ graph.h \ scotch.h library_graph_diam_f$(OBJ) : library_graph_diam_f.c \ module.h \ common.h \ scotch.h library_graph_induce$(OBJ) : library_graph_induce.c \ module.h \ common.h \ graph.h \ scotch.h library_graph_induce_f$(OBJ) : library_graph_induce_f.c \ module.h \ common.h \ scotch.h library_graph_io_chac$(OBJ) : library_graph_io_chac.c \ module.h \ common.h \ geom.h \ graph.h \ scotch.h library_graph_io_chac_f$(OBJ) : library_graph_io_chac_f.c \ module.h \ common.h \ scotch.h library_graph_io_habo$(OBJ) : library_graph_io_habo.c \ module.h \ common.h \ geom.h \ graph.h \ scotch.h library_graph_io_habo_f$(OBJ) : library_graph_io_habo_f.c \ module.h \ common.h \ scotch.h library_graph_io_mmkt$(OBJ) : library_graph_io_mmkt.c \ module.h \ common.h \ geom.h \ graph.h \ scotch.h library_graph_io_mmkt_f$(OBJ) : library_graph_io_mmkt_f.c \ module.h \ common.h \ scotch.h library_graph_io_scot$(OBJ) : library_graph_io_scot.c \ module.h \ common.h \ geom.h \ graph.h \ scotch.h library_graph_io_scot_f$(OBJ) : library_graph_io_scot_f.c \ module.h \ common.h \ scotch.h library_graph_map$(OBJ) : library_graph_map.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ kgraph_map_st.h \ library_mapping.h \ scotch.h library_graph_map_f$(OBJ) : library_graph_map_f.c \ module.h \ common.h \ scotch.h library_graph_map_io$(OBJ) : library_graph_map_io.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ library_mapping.h \ library_graph_map_io.h \ scotch.h library_graph_map_io_f$(OBJ) : library_graph_map_io_f.c \ module.h \ common.h \ scotch.h library_graph_map_view$(OBJ) : library_graph_map_view.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ kgraph.h \ library_mapping.h \ library_graph_map_view.h \ scotch.h library_graph_map_view_f$(OBJ) : library_graph_map_view_f.c \ module.h \ common.h \ scotch.h library_graph_order$(OBJ) : library_graph_order.c \ module.h \ common.h \ parser.h \ graph.h \ order.h \ hgraph.h \ hgraph_order_st.h \ library_order.h \ scotch.h library_graph_order_f$(OBJ) : library_graph_order_f.c \ module.h \ common.h \ scotch.h library_graph_part_ovl$(OBJ) : library_graph_part_ovl.c \ module.h \ common.h \ parser.h \ graph.h \ wgraph.h \ wgraph_part_st.h \ scotch.h library_graph_part_ovl_f$(OBJ) : library_graph_part_ovl_f.c \ module.h \ common.h \ scotch.h library_mapping$(OBJ) : library_mapping.c \ module.h \ common.h \ scotch.h library_memory$(OBJ) : library_memory.c \ module.h \ common.h \ scotch.h library_memory_f$(OBJ) : library_memory_f.c \ module.h \ common.h \ scotch.h library_mesh$(OBJ) : library_mesh.c \ module.h \ common.h \ graph.h \ mesh.h \ scotch.h library_mesh_f$(OBJ) : library_mesh_f.c \ module.h \ common.h \ scotch.h library_mesh_graph$(OBJ) : library_mesh_graph.c \ module.h \ common.h \ graph.h \ mesh.h \ scotch.h library_mesh_graph_f$(OBJ) : library_mesh_graph_f.c \ module.h \ common.h \ scotch.h library_mesh_io_habo$(OBJ) : library_mesh_io_habo.c \ module.h \ common.h \ geom.h \ graph.h \ mesh.h \ scotch.h library_mesh_io_habo_f$(OBJ) : library_mesh_io_habo_f.c \ module.h \ common.h \ scotch.h library_mesh_io_scot$(OBJ) : library_mesh_io_scot.c \ module.h \ common.h \ geom.h \ graph.h \ mesh.h \ mesh_io_scot.h \ scotch.h library_mesh_io_scot_f$(OBJ) : library_mesh_io_scot_f.c \ module.h \ common.h \ scotch.h library_mesh_order$(OBJ) : library_mesh_order.c \ module.h \ common.h \ parser.h \ graph.h \ mesh.h \ hmesh.h \ order.h \ hmesh_order_st.h \ scotch.h \ library_order.h library_mesh_order_f$(OBJ) : library_mesh_order_f.c \ module.h \ common.h \ scotch.h library_order$(OBJ) : library_order.c \ module.h \ common.h \ scotch.h library_parser$(OBJ) : library_parser.c \ module.h \ common.h \ parser.h \ scotch.h library_parser_f$(OBJ) : library_parser_f.c \ module.h \ common.h \ scotch.h library_random$(OBJ) : library_random.c \ module.h \ common.h \ scotch.h library_random_f$(OBJ) : library_random_f.c \ module.h \ common.h \ scotch.h library_strat$(OBJ) : library_strat.c \ module.h \ common.h \ scotch.h library_version$(OBJ) : library_version.c \ module.h \ common.h \ scotch.h library_version_f$(OBJ) : library_version_f.c \ module.h \ common.h \ scotch.h mapping$(OBJ) : mapping.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h mapping_io$(OBJ) : mapping_io.c \ module.h \ common.h \ graph.h \ arch$(OBJ) \ mapping.h \ mapping_io.h mesh$(OBJ) : mesh.c \ module.h \ common.h \ graph.h \ mesh.h mesh_check$(OBJ) : mesh_check.c \ module.h \ common.h \ graph.h \ mesh.h mesh_coarsen$(OBJ) : mesh_coarsen.c \ module.h \ common.h \ graph.h \ mesh.h mesh_graph$(OBJ) : mesh_graph.c \ module.h \ common.h \ graph.h \ mesh.h \ mesh_graph.h mesh_induce_sepa$(OBJ) : mesh_induce_sepa.c \ module.h \ common.h \ graph.h \ mesh.h \ mesh_induce_sepa.h mesh_io$(OBJ) : mesh_io.c \ module.h \ common.h \ graph.h \ graph_io.h \ mesh.h \ mesh_io.h mesh_io_habo$(OBJ) : mesh_io_habo.c \ module.h \ common.h \ geom.h \ graph.h \ mesh.h mesh_io_scot$(OBJ) : mesh_io_scot.c \ module.h \ common.h \ geom.h \ graph.h \ mesh.h order$(OBJ) : order.c \ module.h \ common.h \ graph.h \ order.h order_check$(OBJ) : order_check.c \ module.h \ common.h \ graph.h \ order.h order_io$(OBJ) : order_io.c \ module.h \ common.h \ graph.h \ order.h order_tree$(OBJ) : order_tree.c \ module.h \ common.h \ graph.h \ order.h parser$(OBJ) : parser.c \ module.h \ common.h \ parser.h \ parser_ly.h \ parser_yy.h parser_ll.c : parser_ll.l \ module.h \ common.h \ parser.h \ parser_ll.h \ parser_ly.h ($(LEX) parser_ll.l && \ $(MV) lex.yy.c parser_ll.c) || \ $(CP) last_resort/parser_ll.c . parser_ll$(OBJ) : parser_ll.c \ parser_ly.h parser_ly.h : parser_yy.c parser_yy.c : parser_yy.y \ module.h \ common.h \ parser.h \ parser_yy.h ($(YACC) -d -v parser_yy.y && \ $(MV) y.tab.c parser_yy.c && \ $(MV) y.tab.h parser_ly.h) || \ $(CP) last_resort/parser_ly.h last_resort/parser_yy.c . parser_yy$(OBJ) : parser_yy.c vdgraph$(OBJ) : vdgraph.c \ module.h \ common.h \ dgraph.h \ vdgraph.h vdgraph_check$(OBJ) : vdgraph_check.c \ module.h \ common.h \ dgraph.h \ vdgraph.h vdgraph_gather_all$(OBJ) : vdgraph_gather_all.c \ module.h \ common.h \ comm.h \ graph.h \ vgraph.h \ dgraph.h \ vdgraph.h vdgraph_separate_bd$(OBJ) : vdgraph_separate_bd.c \ module.h \ common.h \ parser.h \ dgraph.h \ vdgraph.h \ vdgraph_separate_bd.h \ vdgraph_separate_st.h vdgraph_separate_df$(OBJ) : vdgraph_separate_df.c \ module.h \ common.h \ dgraph.h \ vdgraph.h \ vdgraph_separate_df.h vdgraph_separate_ml$(OBJ) : vdgraph_separate_ml.c \ module.h \ common.h \ parser.h \ dgraph.h \ dgraph_coarsen.h \ vdgraph.h \ vdgraph_separate_ml.h \ vdgraph_separate_st.h vdgraph_separate_sq$(OBJ) : vdgraph_separate_sq.c \ module.h \ common.h \ comm.h \ parser.h \ graph.h \ vgraph.h \ vgraph_separate_st.h \ dgraph.h \ vdgraph.h \ vdgraph_separate_sq.h vdgraph_separate_st$(OBJ) : vdgraph_separate_st.c \ module.h \ common.h \ parser.h \ graph.h \ vgraph.h \ vgraph_separate_st.h \ dgraph.h \ dgraph_coarsen.h \ vdgraph.h \ vdgraph_separate_bd.h \ vdgraph_separate_df.h \ vdgraph_separate_ml.h \ vdgraph_separate_sq.h \ vdgraph_separate_st.h \ vdgraph_separate_zr.h vdgraph_separate_zr$(OBJ) : vdgraph_separate_zr.c \ module.h \ common.h \ dgraph.h \ vdgraph.h \ vdgraph_separate_zr.h vdgraph_store$(OBJ) : vdgraph_store.c \ module.h \ common.h \ dgraph.h \ vdgraph.h vgraph$(OBJ) : vgraph.c \ module.h \ common.h \ graph.h \ vgraph.h vgraph_check$(OBJ) : vgraph_check.c \ module.h \ common.h \ graph.h \ vgraph.h vgraph_separate_bd$(OBJ) : vgraph_separate_bd.c \ module.h \ common.h \ parser.h \ graph.h \ vgraph.h \ vgraph_separate_bd.h \ vgraph_separate_st.h vgraph_separate_df$(OBJ) : vgraph_separate_df.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_df.h vgraph_separate_es$(OBJ) : vgraph_separate_es.c \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ vgraph.h \ vgraph_separate_es.h vgraph_separate_fm$(OBJ) : vgraph_separate_fm.c \ module.h \ common.h \ gain.h \ graph.h \ vgraph.h \ vgraph_separate_gg.h \ vgraph_separate_fm.h vgraph_separate_gg$(OBJ) : vgraph_separate_gg.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_gg.h vgraph_separate_gp$(OBJ) : vgraph_separate_gp.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_gp.h vgraph_separate_ml$(OBJ) : vgraph_separate_ml.c \ module.h \ common.h \ parser.h \ graph.h \ graph_coarsen.h \ vgraph.h \ vgraph_separate_ml.h \ vgraph_separate_st.h vgraph_separate_th$(OBJ) : vgraph_separate_th.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_th.h vgraph_separate_vw$(OBJ) : vgraph_separate_vw.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_vw.h vgraph_separate_zr$(OBJ) : vgraph_separate_zr.c \ module.h \ common.h \ graph.h \ vgraph.h \ vgraph_separate_zr.h vgraph_separate_st$(OBJ) : vgraph_separate_st.c \ gain.h \ module.h \ common.h \ parser.h \ graph.h \ arch$(OBJ) \ mapping.h \ bgraph.h \ bgraph_bipart_st.h \ vgraph.h \ vgraph_separate_bd.h \ vgraph_separate_df.h \ vgraph_separate_fm.h \ vgraph_separate_gg.h \ vgraph_separate_gp.h \ vgraph_separate_ml.h \ vgraph_separate_th.h \ vgraph_separate_vw.h \ vgraph_separate_zr.h \ vgraph_separate_st.h vgraph_store$(OBJ) : vgraph_store.c \ module.h \ common.h \ graph.h \ vgraph.h vmesh$(OBJ) : vmesh.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h vmesh_check$(OBJ) : vmesh_check.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h vmesh_separate_fm$(OBJ) : vmesh_separate_fm.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h \ vmesh_separate_fm.h vmesh_separate_gg$(OBJ) : vmesh_separate_gg.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h \ vmesh_separate_gg.h vmesh_separate_gr$(OBJ) : vmesh_separate_gr.c \ module.h \ common.h \ parser.h \ graph.h \ vgraph.h \ vgraph_separate_st.h \ mesh.h \ vmesh.h \ vmesh_separate_gr.h vmesh_separate_ml$(OBJ) : vmesh_separate_ml.c \ module.h \ common.h \ parser.h \ graph.h \ mesh.h \ mesh_coarsen.h \ vmesh.h \ vmesh_separate_ml.h \ vmesh_separate_st.h vmesh_separate_zr$(OBJ) : vmesh_separate_zr.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h \ vmesh_separate_zr.h vmesh_separate_st$(OBJ) : vmesh_separate_st.c \ gain.h \ module.h \ common.h \ parser.h \ graph.h \ mesh.h \ mesh_coarsen.h \ vmesh.h \ vmesh_separate_fm.h \ vmesh_separate_gg.h \ vmesh_separate_gr.h \ vmesh_separate_ml.h \ vmesh_separate_zr.h \ vmesh_separate_st.h vmesh_store$(OBJ) : vmesh_store.c \ module.h \ common.h \ graph.h \ mesh.h \ vmesh.h wgraph$(OBJ) : wgraph.c \ module.h \ common.h \ graph.h \ wgraph.h wgraph_check$(OBJ) : wgraph_check.c \ module.h \ common.h \ graph.h \ wgraph.h wgraph_part_fm$(OBJ) : wgraph_part_fm.c \ module.h \ common.h \ graph.h \ wgraph.h \ wgraph_part_fm.h wgraph_part_gg$(OBJ) : wgraph_part_gg.c \ module.h \ common.h \ graph.h \ wgraph.h \ wgraph_part_gg.h wgraph_part_gp$(OBJ) : wgraph_part_gp.c \ module.h \ common.h \ graph.h \ wgraph.h \ wgraph_part_gp.h wgraph_part_ml$(OBJ) : wgraph_part_ml.c \ module.h \ common.h \ parser.h \ graph.h \ graph_coarsen.h \ wgraph.h \ wgraph_part_ml.h \ wgraph_part_st.h wgraph_part_rb$(OBJ) : wgraph_part_rb.c \ module.h \ common.h \ parser.h \ graph.h \ arch.h \ mapping.h \ vgraph.h \ vgraph_separate_st.h \ vgraph_separate_zr.h \ wgraph.h \ wgraph_part_rb.h \ scotch.h wgraph_part_st$(OBJ) : wgraph_part_st.c \ gain.h \ module.h \ common.h \ parser.h \ graph.h \ graph_coarsen.h \ vgraph.h \ vgraph_separate_st.h \ wgraph.h \ wgraph_part_fm.h \ wgraph_part_gg.h \ wgraph_part_gp.h \ wgraph_part_ml.h \ wgraph_part_rb.h \ wgraph_part_zr.h \ wgraph_part_st.h wgraph_part_zr$(OBJ) : wgraph_part_zr.c \ module.h \ common.h \ graph.h \ wgraph.h \ wgraph_part_zr.h wgraph_store$(OBJ) : wgraph_store.c \ module.h \ common.h \ graph.h \ wgraph.h dummysizes$(EXE) : dummysizes.c \ module.h \ common.h \ arch$(OBJ) \ graph.h \ geom.h \ mesh.h \ mapping.h \ order.h \ parser.h $(CCD) $(CCDFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) ptdummysizes$(EXE) : dummysizes.c \ module.h \ common.h \ dgraph.h \ dorder.h $(CCD) $(CCDFLAGS) -DSCOTCH_VERSION_NUM=$(VERSION) -DSCOTCH_RELEASE_NUM=$(RELEASE) -DSCOTCH_PATCHLEVEL_NUM=$(PATCHLEVEL) $(<) -o $(@) $(LDFLAGS) scotch.h : dummysizes$(EXE) \ library.h ./dummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library.h scotch.h scotchf.h : dummysizes$(EXE) \ library_f.h ./dummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_f.h scotchf.h ptscotch.h : ptdummysizes$(EXE) \ library_pt.h ./ptdummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_pt.h ptscotch.h ptscotchf.h : ptdummysizes$(EXE) \ library_pt_f.h ./ptdummysizes$(EXE) "-s$(SCOTCH_NAME_SUFFIX)" library_pt_f.h ptscotchf.h libscotch$(LIB) : $(LIBSCOTCHDEPS) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) libscotcherr$(LIB) : library_error$(OBJ) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) libscotcherrexit$(LIB) : library_error_exit$(OBJ) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) libptscotch$(LIB) : $(LIBPTSCOTCHDEPS) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) libptscotcherr$(LIB) : library_error_pt$(OBJ) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) libptscotcherrexit$(LIB) : library_error_exit_pt$(OBJ) $(AR) $(ARFLAGS) $(@) $(?) -$(RANLIB) $(@) scotch_6.0.9/src/libscotch/vmesh_separate_fm.c0000644000302600021200000016225413303015264021661 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_fm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates an active **/ /** mesh using an element-oriented version **/ /** of our improved Fiduccia-Mattheyses **/ /** heuristics. **/ /** **/ /** DATES : # Version 4.0 : from : 26 feb 2003 **/ /** to 06 may 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 22 may 2008 **/ /** # Version 5.1 : from : 12 nov 2008 **/ /** to 12 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_FM /* #define SCOTCH_DEBUG_VMESH3 */ /* For intensive debugging */ #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" #include "vmesh_separate_gg.h" #include "vmesh_separate_fm.h" /* This routine resizes the hash arrays ** as well as the associated structures. ** In the group of allocated arrays, ** the element array must be put before ** the node array, because the element ** structure is larger than the node ** structure, such that the old and new ** node arrays can never overlap after ** the doubling in size of the element ** array. The same for the move array. ** It returns: ** - 0 : if resize succeeded. ** - !0 : in case of error. */ static int vmeshSeparateFmResize ( GainTabl * restrict const tablptr, /*+ Pointer to gain table +*/ VmeshSeparateFmElement * restrict * const helmptr, /*+ Pointer to pointer to element hash table +*/ VmeshSeparateFmNode * restrict * const hnodptr, /*+ Pointer to pointer to node hash table +*/ VmeshSeparateFmSave * restrict * const saveptr, /*+ Pointer to pointer to move array +*/ const Gnum savenbr, /*+ Current number of items in save array +*/ VmeshSeparateFmElement ** lockptr, /*+ Pointer to list of locked elements +*/ VmeshSeparateFmElement ** sepaptr, /*+ Pointer to list of separator elements, if any +*/ const Gnum hashold) /*+ Maximum number of vertices in hash structures +*/ { Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashmax; /* Maximum number of objects in tables */ VmeshSeparateFmSave * restrict movetab; /* Pointer to move array */ VmeshSeparateFmElement * restrict helmtab; /* Element hash table */ VmeshSeparateFmNode * hnodtab; /* Node hash table */ size_t addradj; /* Address adjustment */ Gnum helmold; VmeshSeparateFmNode * hnodtld; Gnum hnodold; VmeshSeparateFmSave * restrict savetab; Gnum savenum; hashmax = 2 * hashold; /* Set new number */ hashsiz = 4 * hashmax; /* Set new size */ hashmsk = hashsiz - 1; savetab = *saveptr; /* Point to old move array */ for (savenum = 0; savenum < savenbr; savenum ++) { /* Turn hash indices into vertex indices */ Gnum hertnum; hertnum = savetab[savenum].hertnum; savetab[savenum].hertnum = (hertnum >= 0) ? (*helmptr)[hertnum].velmnum : (-1 - (*hnodptr)[-1 - hertnum].vnodnum); } if (memReallocGroup ((void *) *helmptr, /* Get old group leader */ &helmtab, (size_t) (hashsiz * sizeof (VmeshSeparateFmElement)), &hnodtab, (size_t) (hashsiz * sizeof (VmeshSeparateFmNode)), &movetab, (size_t) (hashmax * sizeof (VmeshSeparateFmSave)), NULL) == NULL) { errorPrint ("vmeshSeparateFmResize: cannot resize arrays"); return (1); /* If cannot reallocate */ } #ifdef SCOTCH_DEBUG_VMESH2 if (((byte *) hnodtab - (byte *) helmtab) < ((byte *) (*saveptr) - (byte *) (*helmptr))) { /* If cannot simply copy node hash array */ errorPrint ("vmeshSeparateFmResize: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ memMov (movetab, ((byte *) helmtab) + ((byte *) *saveptr - (byte *) *helmptr), savenbr * sizeof (VmeshSeparateFmSave)); /* Old array may have moved but arrays cannot overlap */ memSet (hnodtab, ~0, hashsiz * sizeof (VmeshSeparateFmNode)); /* Cannot overlap */ hnodtld = (VmeshSeparateFmNode *) ((byte *) helmtab) + ((byte *) *hnodptr - (byte *) *helmptr); /* Point to old node array */ for (hnodold = 0; hnodold < (hashold * 4); hnodold ++) { /* For all old allocated nodes */ Gnum hnodnew; if (hnodtld[hnodold].vnodnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ for (hnodnew = (hnodtld[hnodold].vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; hnodtab[hnodnew].vnodnum != ~0; hnodnew = (hnodnew + 1) & hashmsk) ; hnodtab[hnodnew] = hnodtld[hnodold]; /* Move node data to new position */ } /* TODO */ fprintf (stderr, "hertnum no longer valid !\n"); exit (1); addradj = (byte *) helmtab - (byte *) (*helmptr); /* Compute address difference */ gainTablFree (tablptr); /* Reset gain table */ memSet (helmtab + hashold, ~0, hashold * 2 * sizeof (VmeshSeparateFmElement)); for (helmold = 0; helmold < (hashold * 4); helmold ++) { /* For all old allocated elements */ Gnum helmnew; if (helmtab[helmold].velmnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ for (helmnew = (helmtab[helmold].velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; helmnew = (helmnew + 1) & hashmsk) { if (helmtab[helmnew].velmnum == ~0) { helmtab[helmnew].velmnum = helmtab[helmold].velmnum; helmtab[helmnew].vertpart = helmtab[helmold].vertpart; helmtab[helmnew].ncmpcut2 = helmtab[helmold].ncmpcut2; helmtab[helmnew].ncmpgain2 = helmtab[helmold].ncmpgain2; helmtab[helmnew].ncmpgaindlt = helmtab[helmold].ncmpgaindlt; helmtab[helmnew].mswpnum = helmtab[helmold].mswpnum; helmtab[helmold].velmnum = ~0; /* Free old slot */ helmtab[helmold].mswpnum = ~0; /* Reset sweep number */ break; } if (helmtab[helmnew].velmnum != helmtab[helmold].velmnum) /* If element not found */ continue; /* Go on searching */ } if (helmtab[helmold].gainlink.next >= VMESHSEPAFMSTATELINK) /* If element was linked */ gainTablAdd (tablptr, (GainLink *) &helmtab[helmnew], helmtab[helmnew].ncmpgain2); /* Re-link it */ else { /* Element may be chained in some list */ helmtab[helmnew].gainlink.next = helmtab[helmold].gainlink.next; /* Save it */ helmtab[helmnew].gainlink.prev = (GainLink *) ((byte *) helmtab[helmold].gainlink.prev + addradj); } } if (*lockptr != NULL) *lockptr = (VmeshSeparateFmElement *) ((byte *) (*lockptr) + addradj); if (sepaptr != NULL) { if (*sepaptr != NULL) *sepaptr = (VmeshSeparateFmElement *) ((byte *) (*sepaptr) + addradj); } for (savenum = 0; savenum < savenbr; savenum ++) { /* Turn vertex indices back into hash indices */ Gnum vertnum; vertnum = movetab[savenum].hertnum; /* Read vertex index */ if (vertnum >= 0) { /* If element vertex */ Gnum helmnum; for (helmnum = (vertnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; helmnum = (helmnum + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_VMESH2 if (helmtab[helmnum].velmnum == ~0) { /* We should always find the elements */ errorPrint ("vmeshSeparateFmResize: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (helmtab[helmnum].velmnum == vertnum) /* If element found */ break; } movetab[savenum].hertnum = helmnum; /* Save element hash index */ } else { /* If node vertex */ Gnum hnodnum; vertnum = -1 - vertnum; for (hnodnum = (vertnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; hnodnum = (hnodnum + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_VMESH2 if (hnodtab[hnodnum].vnodnum == ~0) { /* We should always find the nodes */ errorPrint ("vmeshSeparateFmResize: internal error (3)"); return (1); } if (hnodtab[hnodnum].vnodnum == vertnum) /* If element found */ break; #endif /* SCOTCH_DEBUG_VMESH2 */ } movetab[savenum].hertnum = -1 - hnodnum; /* Save node hash index */ } } fprintf (stderr, "########### vmeshSeparateFmResize (%ld) !!!\n", (long) hashold); return (0); } /* This routine returns the vertex of best gain ** whose swap will keep the balance correct. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no more vertices available. */ static VmeshSeparateFmElement * vmeshSeparateFmTablGet ( GainTabl * const tablptr, /*+ Gain table +*/ const Gnum deltcur, /*+ Current imbalance +*/ const Gnum deltmax) /*+ Maximum imbalance +*/ { const VmeshSeparateFmElement * velmptr; VmeshSeparateFmElement * vertbest; Gnum gainbest; const GainEntr * tablbest; Gnum deltbest; Gnum deltnew; tablbest = tablptr->tend; /* Assume no candidate vertex found yet */ gainbest = GAINMAX; vertbest = NULL; deltbest = deltmax; for (velmptr = (VmeshSeparateFmElement *) gainTablFrst (tablptr); /* Select candidate vertices */ (velmptr != NULL) && (velmptr->gainlink.tabl < tablbest); velmptr = (VmeshSeparateFmElement *) gainTablNext (tablptr, &velmptr->gainlink)) { deltnew = abs (deltcur + velmptr->ncmpgaindlt); if (deltnew <= deltmax) { /* If vertex enforces balance */ if ((velmptr->ncmpgain2 < gainbest) || /* And if it gives better gain */ ((velmptr->ncmpgain2 == gainbest) && /* Or if it gives better load */ (deltnew < deltbest))) { tablbest = velmptr->gainlink.tabl; /* Select it */ gainbest = velmptr->ncmpgain2; vertbest = (VmeshSeparateFmElement *) velmptr; deltbest = deltnew; } } } return (vertbest); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes the ** separation of the given mesh. ** It returns: ** - 0 : if bipartitioning could be computed. ** - !0 : on error. */ int vmeshSeparateFm ( Vmesh * restrict const meshptr, /*+ Node separation mesh +*/ const VmeshSeparateFmParam * restrict const paraptr) /*+ Method parameters +*/ { GainTabl * restrict tablptr; /* Pointer to gain table */ long passnbr; /* Maximum number of passes to go */ VmeshSeparateFmSave * restrict movetab; /* Pointer to move array */ Gnum movenbr; /* Number of uneffective moves done */ Gnum savenbr; /* Number of recorded backtrack moves */ Gnum mswpnum; /* Current number of recording sweep */ int moveflag; /* Flag set if useful moves made */ Gnum fronnum; /* Current index in frontier array */ Gnum vertnbr; Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashmax; /* Maximum number of objects in tables */ Gnum hashnbr; /* Estimated number of onjects in hash */ Gnum helmnbr; /* Number of elements in hash table */ Gnum helmnum; Gnum hnodnum; Gnum hnodnbr; /* Number of nodes in hash table */ VmeshSeparateFmElement * restrict helmtab; /* Element hash table */ VmeshSeparateFmNode * restrict hnodtab; /* Node hash table */ VmeshSeparateFmElement * lockptr; /* Linked list of locked elements */ VmeshSeparateFmElement * velmptr; /* Pointer to current element */ Gnum ncmploaddltmat; /* Theoretical latgest imbalance allowed */ Gnum ncmploaddltmax; /* Largest imbalance allowed */ Gnum ncmploaddlt; /* Current imbalance */ Gnum ncmpload2; /* Current size of separator */ Gnum ncmpload2bst; Gnum ncmploaddltbst; Gnum ecmpload1; Gnum ncmpload1; Gnum ncmpsize1; Gnum ncmpsize2; if (paraptr->deltrat > 0.0L) { Gnum ncmploaddlttmp; ncmploaddltmat = (Gnum) (paraptr->deltrat * meshptr->m.vnlosum) + 1; ncmploaddlttmp = (Gnum) (((float) meshptr->m.edgenbr * (float) meshptr->m.vnlosum) / ((float) meshptr->m.velmnbr * (float) meshptr->m.vnodnbr)); if (ncmploaddltmat < ncmploaddlttmp) ncmploaddltmat = ncmploaddlttmp; } else ncmploaddltmat = 0; ncmploaddltmat = (paraptr->deltrat > 0.0L) ? ((Gnum) (paraptr->deltrat * meshptr->m.vnlosum) + 1) : 0; /* printf ("FM Mbal=%ld\n", (long) ncmploaddltmat); */ if ((meshptr->fronnbr == 0) && /* If imbalance in graph with no frontier */ (abs (meshptr->ncmploaddlt) > ncmploaddltmat)) { VmeshSeparateGgParam paramdat; paramdat.passnbr = 3; vmeshSeparateGg (meshptr, ¶mdat); /* Compute a balanced initial partition */ } vertnbr = meshptr->m.velmnbr + meshptr->m.vnodnbr; hashnbr = 2 * ((meshptr->fronnbr + paraptr->movenbr) * (1 + (Gnum) ((float) meshptr->m.edgenbr / (float) vertnbr))); if (hashnbr > vertnbr) /* Set bound on hash table */ hashnbr = vertnbr; for (hashmax = 256; hashmax < hashnbr; hashmax <<= 1) ; /* Get upper power of two */ /* TODO */ hashmax *= 4; hashsiz = 4 * hashmax; hashmsk = hashsiz - 1; if (((tablptr = gainTablInit (meshptr->m.vnlosum, VMESHSEPAFMGAINBITS)) == NULL) || (memAllocGroup ((void **) (void *) &helmtab, (size_t) (hashsiz * sizeof (VmeshSeparateFmElement)), &hnodtab, (size_t) (hashsiz * sizeof (VmeshSeparateFmNode)), &movetab, (size_t) (hashmax * sizeof (VmeshSeparateFmSave)), NULL) == NULL)) { if (tablptr != NULL) { errorPrint ("vmeshSeparateFm: out of memory (1)"); gainTablExit (tablptr); } return (1); } passnbr = paraptr->passnbr; /* Set remaining number of passes */ ncmpload2 = meshptr->ncmpload[2]; /* Set current partition loads */ ncmploaddlt = meshptr->ncmploaddlt; memSet (helmtab, ~0, (byte *) &hnodtab[hashsiz] - (byte *) helmtab); /* Set all vertex numbers to ~0 */ helmnbr = hnodnbr = 0; savenbr = 0; /* No recorded moves yet */ lockptr = NULL; /* Set locked list as empty */ for (fronnum = 0; fronnum < meshptr->fronnbr; fronnum ++) { /* Set initial gains */ Gnum vnloval; Gnum vnodnum; Gnum enodnum; Gnum hnodnum; Gnum ecmpsize1; vnodnum = meshptr->frontab[fronnum]; #ifdef SCOTCH_DEBUG_VMESH2 if (meshptr->parttax[vnodnum] != 2) { errorPrint ("vmeshSeparateFm: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; hnodnum = (hnodnum + 1) & hashmsk) { if (hnodtab[hnodnum].vnodnum == ~0) /* If node slot found */ break; /* No need to go on */ #ifdef SCOTCH_DEBUG_VMESH2 if (hnodtab[hnodnum].vnodnum == vnodnum) { /* If node already present in frontier array */ errorPrint ("vmeshSeparateFm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ } hnodnbr ++; /* One more node in hash table */ hnodtab[hnodnum].vnodnum = vnodnum; /* Insert node in hash table */ hnodtab[hnodnum].vnloval = vnloval; if ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]) == 0) { /* If single node */ int vnodpart; vnodpart = (ncmploaddlt > 0) ? 1 : 0; ncmpload2 -= vnloval; /* Node cannot belong to the separator */ ncmploaddlt += (1 - 2 * vnodpart) * vnloval; hnodtab[hnodnum].vertpart = vnodpart; hnodtab[hnodnum].ecmpsize0 = 0; continue; /* No need to process elements of node vertex */ } for (enodnum = meshptr->m.verttax[vnodnum], ecmpsize1 = 0; /* For all (at least one) element neighbors of node */ enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum helmnum; velmnum = meshptr->m.edgetax[enodnum]; for (helmnum = (velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; helmnum = (helmnum + 1) & hashmsk) { if (helmtab[helmnum].velmnum == ~0) { /* If element not yet inserted */ if (helmnbr >= hashmax) { /* If element hash table is full */ if (vmeshSeparateFmResize (tablptr, &helmtab, &hnodtab, &movetab, savenbr, &lockptr, NULL, hashmax) != 0) { errorPrint ("vmeshSeparateFm: cannot resize arrays (1)"); memFree (helmtab); /* Free group leader */ gainTablExit (tablptr); return (1); } hashmax <<= 1; hashsiz <<= 1; hashmsk = (hashmsk << 1) | 1; #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ for (helmnum = (velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; /* Re-compute position in table */ helmtab[helmnum].velmnum != ~0; helmnum = (helmnum + 1) & hashmsk) ; } helmtab[helmnum].gainlink.prev = (GainLink *) lockptr; /* Link it */ lockptr = &helmtab[helmnum]; helmtab[helmnum].velmnum = velmnum; /* Insert it */ helmtab[helmnum].vertpart = meshptr->parttax[velmnum] & 1; /* Separator elements to part 0 */ helmnbr ++; break; } if (helmtab[helmnum].velmnum == velmnum) /* If element already or newly inserted */ break; /* It will already be processed later */ } ecmpsize1 += helmtab[helmnum].vertpart; /* Account for its (possibly modified) part */ } hnodtab[hnodnum].vertpart = 2; /* Assume node is in separator */ hnodtab[hnodnum].ecmpsize0 = meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum] - ecmpsize1; if (hnodtab[hnodnum].ecmpsize0 == 0) { /* If all neighboring elements are in part 1 */ ncmpload2 -= vnloval; /* Node moves from separator to part 1 too */ ncmploaddlt -= vnloval; hnodtab[hnodnum].vertpart = 1; } else if (ecmpsize1 == 0) { /* If all neighboring elements are in part 0 */ ncmpload2 -= vnloval; /* Node moves from separator to part 0 too */ ncmploaddlt += vnloval; hnodtab[hnodnum].vertpart = 0; } } for (velmptr = lockptr; velmptr != NULL; /* Process all frontier elements */ velmptr = (VmeshSeparateFmElement *) velmptr->gainlink.prev) { Gnum velmnum; Gnum eelmnum; Gnum ncmpcut2; Gnum ncmpgain2; Gnum ncmpgaindlt; velmnum = velmptr->velmnum; ncmpcut2 = ncmpgain2 = ncmpgaindlt = 0; for (eelmnum = meshptr->m.verttax[velmnum]; /* For all neighbors of element */ eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; Gnum hnodnum; Gnum vnoddeg; vnodnum = meshptr->m.edgetax[eelmnum]; vnoddeg = meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; hnodnum = (hnodnum + 1) & hashmsk) { if (hnodtab[hnodnum].vnodnum == vnodnum) { /* If node exists (can be in same part or separator) */ int vnodpart; Gnum vnloval; vnodpart = hnodtab[hnodnum].vertpart; vnloval = hnodtab[hnodnum].vnloval; if (vnodpart == 2) { /* If vertex is in separator */ ncmpcut2 ++; /* One more node in separator */ if ((hnodtab[hnodnum].ecmpsize0 - 1) == ((vnoddeg - 2) * velmptr->vertpart)) { /* If element is only neighbor in its part */ ncmpgain2 -= vnloval; ncmpgaindlt += vnloval * (2 * velmptr->vertpart - 1); } } else { /* Vertex not in separator */ #ifdef SCOTCH_DEBUG_VMESH2 if (vnodpart != velmptr->vertpart) { /* Node should be in same part as element */ errorPrint ("vmeshSeparateFm: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (vnoddeg <= 1) /* If element is node's sole neighbor */ ncmpgaindlt += (vnloval * (2 * vnodpart - 1)) * 2; else { ncmpgain2 += vnloval; ncmpgaindlt += (vnloval * (2 * vnodpart - 1)); } } break; } if (hnodtab[hnodnum].vnodnum == ~0) { /* If node does not exist */ int vnodpart; Gnum vnloval; vnodpart = velmptr->vertpart; /* Get its part */ vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; #ifdef SCOTCH_DEBUG_VMESH2 if (vnodpart != meshptr->parttax[vnodnum]) { /* Node should be in same part as element */ errorPrint ("vmeshSeparateFm: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (vnoddeg > 1) { /* If node will move to separator */ ncmpgain2 += vnloval; /* Increase size of separator */ ncmpgaindlt += (2 * vnodpart - 1) * vnloval; /* Account for imbalance */ } else /* Node will move with element */ ncmpgaindlt += (2 * vnodpart - 1) * 2 * vnloval; /* Double imbalance */ break; } } } velmptr->ncmpcut2 = ncmpcut2; velmptr->ncmpgain2 = ncmpgain2; velmptr->ncmpgaindlt = ncmpgaindlt; } ncmploaddltmax = MAX (ncmploaddltmat, abs (ncmploaddlt)); /* Set current maximum imbalance after cleaning */ #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ mswpnum = 0; /* First sweep */ ncmpload2bst = ncmpload2; /* Record best state */ ncmploaddltbst = ncmploaddlt; do { /* As long as there are improvements */ VmeshSeparateFmElement * velmptr; Gnum velmgain2; Gnum velmgaindlt; while (lockptr != NULL) { /* For all elements in locked list */ VmeshSeparateFmElement * velmptr; velmptr = lockptr; /* Unlink element from list */ lockptr = (VmeshSeparateFmElement *) velmptr->gainlink.prev; velmptr->gainlink.next = VMESHSEPAFMSTATEFREE;/* Set it free anyway */ if (velmptr->ncmpcut2 > 0) /* If element has nodes in separator */ gainTablAdd (tablptr, (GainLink *) velmptr, velmptr->ncmpgain2); /* Put it in table */ } /* fprintf (stderr, "LOOP %ld\t(%ld,\t%ld)\n", (long) passnbr, (long) ncmpload2bst, (long) ncmploaddltbst); */ moveflag = 0; /* No moves to date */ movenbr = 0; /* No uneffective moves yet */ while ((movenbr < paraptr->movenbr) && /* As long as we can find effective elements */ ((velmptr = vmeshSeparateFmTablGet (tablptr, ncmploaddlt, ncmploaddltmax)) != NULL)) { VmeshSeparateFmElement * sepaptr; /* Linked list of separator frontier elements */ Gnum velmnum; /* Number of current element */ Gnum velmpart; /* Old part of current element */ Gnum eelmnum; gainTablDel (tablptr, &velmptr->gainlink); /* Remove it from table */ velmptr->gainlink.next = VMESHSEPAFMSTATEUSED; /* Mark it as used */ velmptr->gainlink.prev = (GainLink *) lockptr; /* Lock it */ lockptr = velmptr; if (velmptr->mswpnum != mswpnum) { /* If element data not yet recorded */ movetab[savenbr].hertnum = velmptr - helmtab; /* Record them */ movetab[savenbr].data.elem.vertpart = velmptr->vertpart; movetab[savenbr].data.elem.ncmpcut2 = velmptr->ncmpcut2; movetab[savenbr].data.elem.ncmpgain2 = velmptr->ncmpgain2; movetab[savenbr].data.elem.ncmpgaindlt = velmptr->ncmpgaindlt; velmptr->mswpnum = mswpnum; savenbr ++; /* One more move recorded */ } movenbr ++; /* One more assumed uneffective move performed */ velmgain2 = velmptr->ncmpgain2; /* Save old gains for this vertex */ velmgaindlt = velmptr->ncmpgaindlt; ncmpload2 += velmgain2; /* Account for gains */ ncmploaddlt += velmgaindlt; velmnum = velmptr->velmnum; /* Move element to other part */ velmpart = velmptr->vertpart; velmptr->vertpart = velmpart ^ 1; sepaptr = NULL; /* No frontier elements to relink yet */ for (eelmnum = meshptr->m.verttax[velmnum]; /* (Re-)link neighbors */ eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnoddeg; Gnum vnodnum; Gnum hnodnum; Gnum enodnum; Gnum vnloval; /* Load of current node */ int vnodpartold; /* Old part of current node */ int vnodpartnew; /* New part of current node */ Gnum ecmpsize0old; Gnum ecmpsize0new; vnodnum = meshptr->m.edgetax[eelmnum]; vnoddeg = meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; hnodnum = (hnodnum + 1) & hashmsk) { if (hnodtab[hnodnum].vnodnum == vnodnum) /* If node found */ break; if (hnodtab[hnodnum].vnodnum == ~0) { /* If node not yet inserted */ #ifdef SCOTCH_DEBUG_VMESH2 if (meshptr->parttax[vnodnum] != velmpart) { errorPrint ("vmeshSeparateFm: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (hnodnbr >= hashmax) { /* If node hash table is full */ if (vmeshSeparateFmResize (tablptr, &helmtab, &hnodtab, &movetab, savenbr, &lockptr, &sepaptr, hashmax) != 0) { errorPrint ("vmeshSeparateFm: cannot resize arrays (2)"); memFree (helmtab); /* Free group leader */ gainTablExit (tablptr); return (1); } hashmax <<= 1; hashsiz <<= 1; hashmsk = (hashmsk << 1) | 1; #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ for (helmnum = (velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; /* Re-compute positions in tables */ helmtab[helmnum].velmnum != velmnum; helmnum = (helmnum + 1) & hashmsk) ; velmptr = helmtab + helmnum; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; hnodtab[hnodnum].vnodnum != ~0; hnodnum = (hnodnum + 1) & hashmsk) ; } hnodtab[hnodnum].vnodnum = vnodnum; /* Insert node in hash table */ hnodtab[hnodnum].vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; hnodtab[hnodnum].ecmpsize0 = vnoddeg * (1 - velmpart); hnodtab[hnodnum].vertpart = velmpart; /* Node belongs to old part */ hnodnbr ++; /* One more node created */ break; } } if (hnodtab[hnodnum].mswpnum != mswpnum) { /* If node data not yet recorded */ movetab[savenbr].hertnum = -1 - hnodnum; movetab[savenbr].data.node.vertpart = hnodtab[hnodnum].vertpart; movetab[savenbr].data.node.ecmpsize0 = hnodtab[hnodnum].ecmpsize0; hnodtab[hnodnum].mswpnum = mswpnum; savenbr ++; /* One more move recorded */ } vnloval = hnodtab[hnodnum].vnloval; if (vnoddeg <= 1) { /* If node only has one neighbor */ #ifdef SCOTCH_DEBUG_VMESH2 if (hnodtab[hnodnum].vertpart != velmpart) { errorPrint ("vmeshSeparateFm: internal error (9)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ hnodtab[hnodnum].vertpart = 1 - velmpart; /* Directly move node to other part */ hnodtab[hnodnum].ecmpsize0 = velmpart; continue; /* Skip to next node */ } ecmpsize0old = hnodtab[hnodnum].ecmpsize0; ecmpsize0new = hnodtab[hnodnum].ecmpsize0 += (2 * velmpart - 1); /* One less neighbor element for this node */ #ifdef SCOTCH_DEBUG_VMESH2 if ((hnodtab[hnodnum].ecmpsize0 < 0) || (hnodtab[hnodnum].ecmpsize0 > vnoddeg)) { errorPrint ("vmeshSeparateFm: internal error (10)"); return (1); } if (hnodtab[hnodnum].vertpart == (1 - velmpart)) { errorPrint ("vmeshSeparateFm: internal error (11)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ vnodpartold = hnodtab[hnodnum].vertpart; /* Get old node part value */ vnodpartnew = 2; /* Assume new node part */ if (vnodpartold != vnodpartnew) /* If belonged to old part */ hnodtab[hnodnum].vertpart = vnodpartnew; /* Move to separator */ else if ((ecmpsize0old - 1) == (vnoddeg - 2) * velmpart) { vnodpartnew = /* Belonged to separator and last element in this part */ hnodtab[hnodnum].vertpart = 1 - velmpart; } for (enodnum = meshptr->m.verttax[vnodnum]; /* For all element neighbors of node */ enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmend; Gnum helmend; int vendpart; Gnum ncmpcut2; Gnum ncmpgain2; Gnum ncmpgaindlt; velmend = meshptr->m.edgetax[enodnum]; for (helmend = (velmend * VMESHSEPAFMHASHPRIME) & hashmsk; ; helmend = (helmend + 1) & hashmsk) { if (helmtab[helmend].velmnum == velmend) /* If element found */ break; if (helmtab[helmend].velmnum == ~0) { /* If element not yet inserted */ Gnum ncmpgain2; Gnum ncmpgaindlt; #ifdef SCOTCH_DEBUG_VMESH2 if (vnodpartold == 2) { /* Elements neighboring the frontier should exist */ errorPrint ("vmeshSeparateFm: internal error (12)"); return (1); } if (vnodpartold != meshptr->parttax[velmend]) { /* Unexisting elements should be in same part as their neighboring nodes */ errorPrint ("vmeshSeparateFm: internal error (13)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (helmnbr >= hashmax) { /* If element hash table is full */ if (vmeshSeparateFmResize (tablptr, &helmtab, &hnodtab, &movetab, savenbr, &lockptr, &sepaptr, hashmax) != 0) { errorPrint ("vmeshSeparateFm: cannot resize arrays (3)"); memFree (helmtab); /* Free group leader */ gainTablExit (tablptr); return (1); } hashmax <<= 1; hashsiz <<= 1; hashmsk = (hashmsk << 1) | 1; #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (14)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ for (helmnum = (velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; /* Re-compute positions in tables */ helmtab[helmnum].velmnum != velmnum; helmnum = (helmnum + 1) & hashmsk) ; velmptr = helmtab + helmnum; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; hnodtab[hnodnum].vnodnum != vnodnum; hnodnum = (hnodnum + 1) & hashmsk) ; for (helmend = (velmend * VMESHSEPAFMHASHPRIME) & hashmsk; helmtab[helmend].velmnum != ~0; helmend = (helmend + 1) & hashmsk) ; } helmtab[helmend].gainlink.next = VMESHSEPAFMSTATEFREE; helmtab[helmend].velmnum = velmend; helmtab[helmend].vertpart = vnodpartold; helmtab[helmend].ncmpcut2 = 0; if (meshptr->m.vnlotax == NULL) { Gnum eelmend; ncmpgain2 = meshptr->m.vendtax[velmend] - meshptr->m.verttax[velmend]; ncmpgaindlt = (2 * vnodpartold - 1) * ncmpgain2; for (eelmend = meshptr->m.verttax[velmend]; /* For all neighboring nodes */ eelmend < meshptr->m.vendtax[velmend]; eelmend ++) { Gnum vnodend; vnodend = meshptr->m.edgetax[eelmend]; if ((meshptr->m.vendtax[vnodend] - meshptr->m.verttax[vnodend]) <= 1) { /* If node linked to element only */ ncmpgain2 --; /* Node will directly move to other part */ ncmpgaindlt += (2 * velmpart - 1); } } } else { Gnum eelmend; Gnum veloend; for (eelmend = meshptr->m.verttax[velmend], ncmpgain2 = ncmpgaindlt = veloend = 0; /* For all neighboring nodes */ eelmend < meshptr->m.vendtax[velmend]; eelmend ++) { Gnum vnodend; Gnum vnloend; vnodend = meshptr->m.edgetax[eelmend]; vnloend = meshptr->m.vnlotax[vnodend]; veloend += vnloend; if ((meshptr->m.vendtax[vnodend] - meshptr->m.verttax[vnodend]) <= 1) { /* If node linked to element only */ ncmpgain2 -= vnloend; ncmpgaindlt += vnloend * (2 * velmpart - 1); } } ncmpgain2 += veloend; ncmpgaindlt += (2 * vnodpartold - 1) * veloend; } helmtab[helmend].ncmpgain2 = ncmpgain2; helmtab[helmend].ncmpgaindlt = ncmpgaindlt; helmnbr ++; break; } } if (helmtab[helmend].mswpnum != mswpnum) { /* If element data not yet recorded */ movetab[savenbr].hertnum = helmend; movetab[savenbr].data.elem.vertpart = helmtab[helmend].vertpart; movetab[savenbr].data.elem.ncmpcut2 = helmtab[helmend].ncmpcut2; movetab[savenbr].data.elem.ncmpgain2 = helmtab[helmend].ncmpgain2; movetab[savenbr].data.elem.ncmpgaindlt = helmtab[helmend].ncmpgaindlt; helmtab[helmend].mswpnum = mswpnum; savenbr ++; /* One more move recorded */ } if (helmtab[helmend].gainlink.next != VMESHSEPAFMSTATEUSED) { /* If element available */ if (helmtab[helmend].gainlink.next >= VMESHSEPAFMSTATELINK) /* If element linked */ gainTablDel (tablptr, &helmtab[helmend].gainlink); /* Unlink element */ helmtab[helmend].gainlink.next = VMESHSEPAFMSTATEUSED; /* Chain neighbor elements */ helmtab[helmend].gainlink.prev = (GainLink *) sepaptr; sepaptr = &helmtab[helmend]; } vendpart = helmtab[helmend].vertpart; ncmpcut2 = helmtab[helmend].ncmpcut2; /* Get element values */ ncmpgain2 = helmtab[helmend].ncmpgain2; ncmpgaindlt = helmtab[helmend].ncmpgaindlt; if (vnodpartold != 2) { /* If node was in same part as the element */ ncmpgain2 -= vnloval; ncmpgaindlt -= (2 * vendpart - 1) * vnloval; } else { /* If node was in separator */ ncmpcut2 --; if ((ecmpsize0old - 1) == ((vnoddeg - 2) * vendpart)) { /* If element was the only one in its part */ ncmpgain2 += vnloval; ncmpgaindlt -= (2 * vendpart - 1) * vnloval; } } if (vnodpartnew != 2) { /* If node is now in same part as the element */ ncmpgain2 += vnloval; ncmpgaindlt += (2 * vendpart - 1) * vnloval; } else { /* If node is now in separator */ ncmpcut2 ++; if ((ecmpsize0new - 1) == ((vnoddeg - 2) * vendpart)) { /* If element is the only one in its part */ ncmpgain2 -= vnloval; ncmpgaindlt += (2 * vendpart - 1) * vnloval; } } helmtab[helmend].ncmpcut2 = ncmpcut2; /* Adjust element values */ helmtab[helmend].ncmpgain2 = ncmpgain2; helmtab[helmend].ncmpgaindlt = ncmpgaindlt; } } velmptr->ncmpgain2 = - velmgain2; /* Set new gains of element */ velmptr->ncmpgaindlt = - velmgaindlt; while (sepaptr != NULL) { /* As long as there are element to re-link */ VmeshSeparateFmElement * velmptr; velmptr = sepaptr; /* Get element to re-link */ sepaptr = (VmeshSeparateFmElement *) velmptr->gainlink.prev; velmptr->gainlink.next = VMESHSEPAFMSTATEFREE; if (velmptr->ncmpcut2 != 0) /* If element belongs to frontier */ gainTablAdd (tablptr, (GainLink *) velmptr, velmptr->ncmpgain2); /* Re-link it */ } #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (15)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ if (ncmpload2 < ncmpload2bst) { /* If move improves separator size */ ncmpload2bst = ncmpload2; /* This move was effective */ ncmploaddltbst = ncmploaddlt; movenbr = savenbr = 0; moveflag = 1; mswpnum ++; } else if (ncmpload2 == ncmpload2bst) { if (abs (ncmploaddlt) < abs (ncmploaddltbst)) { ncmploaddltbst = ncmploaddlt; /* This move was effective */ movenbr = savenbr = 0; moveflag = 1; mswpnum ++; } else if (abs (ncmploaddlt) == abs (ncmploaddltbst)) { ncmploaddltbst = ncmploaddlt; /* Might be the opposite, so record */ savenbr = 0; /* Forget backtracking */ mswpnum ++; } } if (ncmploaddltmax > ncmploaddltmat) { /* If must restrict distance bounds */ Gnum ncmploaddlttmp; ncmploaddlttmp = ncmploaddltmax; /* Save old working ncmpdltmax value */ ncmploaddltmax = MAX (ncmploaddltmat, /* Restrict at most to maximum */ abs (ncmploaddlt)); if (ncmploaddltmax < ncmploaddlttmp) { /* If we have done something useful */ ncmpload2bst = ncmpload2; /* Then record best move done */ ncmploaddltbst = ncmploaddlt; movenbr = savenbr = 0; mswpnum ++; } } } while (savenbr > 0) { /* Delete exceeding moves */ Gnum hertnum; hertnum = movetab[-- savenbr].hertnum; /* Get vertex hash number */ if (hertnum >= 0) { /* If vertex is element */ helmtab[hertnum].vertpart = movetab[savenbr].data.elem.vertpart; helmtab[hertnum].ncmpcut2 = movetab[savenbr].data.elem.ncmpcut2; helmtab[hertnum].ncmpgain2 = movetab[savenbr].data.elem.ncmpgain2; helmtab[hertnum].ncmpgaindlt = movetab[savenbr].data.elem.ncmpgaindlt; if (helmtab[hertnum].gainlink.next != VMESHSEPAFMSTATEUSED) { /* If element not already removed */ if (helmtab[hertnum].gainlink.next >= VMESHSEPAFMSTATELINK) /* If vertex is still linked */ gainTablDel (tablptr, &helmtab[hertnum].gainlink); /* Remove it from table */ helmtab[hertnum].gainlink.next = VMESHSEPAFMSTATEUSED; helmtab[hertnum].gainlink.prev = (GainLink *) lockptr; /* Lock it */ lockptr = &helmtab[hertnum]; } } else { /* Vertex is node */ hertnum = -1 - hertnum; /* Get hash index */ hnodtab[hertnum].vertpart = movetab[savenbr].data.node.vertpart; hnodtab[hertnum].ecmpsize0 = movetab[savenbr].data.node.ecmpsize0; } } ncmpload2 = ncmpload2bst; /* Restore best separator parameters */ ncmploaddlt = ncmploaddltbst; mswpnum ++; /* Forget all recorded moves */ #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateFmCheck (meshptr, helmtab, hnodtab, hashmsk, ncmpload2, ncmploaddlt) != 0) { errorPrint ("vmeshSeparateFm: internal error (16)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ } while ((moveflag != 0) && /* As long as vertices are moved */ (-- passnbr != 0)); /* And we are allowed to loop (TRICK for negative values) */ ecmpload1 = 0; /* Assume no change in elements */ for (helmnum = 0; helmnum < hashsiz; helmnum ++) { Gnum velmnum; velmnum = helmtab[helmnum].velmnum; if ((velmnum != ~0) && (helmtab[helmnum].vertpart != meshptr->parttax[velmnum])) { #ifdef SCOTCH_DEBUG_VMESH2 if ((helmtab[helmnum].vertpart < 0) || /* Separator elements should have been removed */ (helmtab[helmnum].vertpart > 1)) { errorPrint ("vmeshSeparateFm: internal error (17)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ ecmpload1 += helmtab[helmnum].vertpart - (meshptr->parttax[velmnum] & 1); meshptr->parttax[velmnum] = helmtab[helmnum].vertpart; } } meshptr->ecmpsize[1] += ecmpload1; /* No longer elements in separator */ meshptr->ecmpsize[0] = meshptr->m.velmnbr - meshptr->ecmpsize[1]; #ifdef SCOTCH_DEBUG_VMESH2 if ((meshptr->ecmpsize[0] + meshptr->ecmpsize[1]) != meshptr->m.velmnbr) { /* Separator elements should have been removed */ errorPrint ("vmeshSeparateFm: internal error (18)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ ncmpsize1 = ncmpsize2 = 0; ncmpload1 = ncmpload2 = 0; for (hnodnum = 0, fronnum = 0; hnodnum < hashsiz; hnodnum ++) { Gnum vnodnum; vnodnum = hnodtab[hnodnum].vnodnum; if (vnodnum != ~0) { #ifdef SCOTCH_DEBUG_VMESH2 if ((hnodtab[hnodnum].vertpart < 0) || (hnodtab[hnodnum].vertpart > 2)) { errorPrint ("vmeshSeparateFm: internal error (19)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (hnodtab[hnodnum].vertpart == 2) /* If node belongs to separator */ meshptr->frontab[fronnum ++] = vnodnum; /* Add it to separator array */ if (hnodtab[hnodnum].vertpart != meshptr->parttax[vnodnum]) { Gnum diffpart1; Gnum diffpart2; diffpart1 = (hnodtab[hnodnum].vertpart & 1) - (meshptr->parttax[vnodnum] & 1); diffpart2 = (hnodtab[hnodnum].vertpart >> 1) - (meshptr->parttax[vnodnum] >> 1); ncmpsize1 += diffpart1; ncmpsize2 += diffpart2; ncmpload1 += hnodtab[hnodnum].vnloval * diffpart1; ncmpload2 += hnodtab[hnodnum].vnloval * diffpart2; meshptr->parttax[vnodnum] = hnodtab[hnodnum].vertpart; } } } #ifdef SCOTCH_DEBUG_VMESH2 if ((meshptr->fronnbr + ncmpsize2) != fronnum) { errorPrint ("vmeshSeparateFm: internal error (20)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ meshptr->ncmpload[1] += ncmpload1; meshptr->ncmpload[2] += ncmpload2; meshptr->ncmpload[0] = meshptr->m.vnlosum - meshptr->ncmpload[1] - meshptr->ncmpload[2]; meshptr->ncmploaddlt = meshptr->ncmpload[0] - meshptr->ncmpload[1]; meshptr->fronnbr = fronnum; meshptr->ncmpsize[1] += ncmpsize1; meshptr->ncmpsize[0] = meshptr->m.vnodnbr - fronnum - meshptr->ncmpsize[1]; memFree (helmtab); /* Free group leader */ gainTablExit (tablptr); #ifdef SCOTCH_DEBUG_VMESH2 if (vmeshCheck (meshptr) != 0) { errorPrint ("vmeshSeparateFm: internal error (21)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ /* printf ("FM Sepa\tsize=%ld\tload=%ld\tbal=%ld\n", (long) meshptr->fronnbr, (long) meshptr->ncmpload[2], (long) meshptr->ncmploaddlt); */ return (0); } /* This routine checks the consistency of ** the hash structures. ** It returns: ** - 0 : in case of success. ** - !0 : in case of error. */ #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateFmCheck ( const Vmesh * const meshptr, const VmeshSeparateFmElement * restrict helmtab, const VmeshSeparateFmNode * restrict hnodtab, const Gnum hashmsk, const Gnum ncmpload2, const Gnum ncmploaddlt) { Gnum vertnbr; Gnum helmnum; Gnum hnodnum; Gnum ncmploadtmp[3]; GraphPart * restrict parttax; vertnbr = meshptr->m.velmnbr + meshptr->m.vnodnbr; if ((parttax = (GraphPart *) memAlloc (vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("vmeshSeparateFmCheck: out of memory"); return (1); } memCpy (parttax, meshptr->parttax + meshptr->m.baseval, vertnbr * sizeof (GraphPart)); parttax -= meshptr->m.baseval; ncmploadtmp[0] = meshptr->ncmpload[0]; ncmploadtmp[1] = meshptr->ncmpload[1]; ncmploadtmp[2] = meshptr->ncmpload[2]; for (hnodnum = 0; hnodnum <= hashmsk; hnodnum ++) { /* For all node slots */ Gnum vnodnum; Gnum enodnum; Gnum ecmpsize0; int vnodpart; vnodnum = hnodtab[hnodnum].vnodnum; if (vnodnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ if (hnodtab[hnodnum].vnloval != ((meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum])) { errorPrint ("vmeshSeparateFmCheck: invalid node load"); return (1); } if ((hnodtab[hnodnum].ecmpsize0 < 0) || (hnodtab[hnodnum].ecmpsize0 > (meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]))) { errorPrint ("vmeshSeparateFmCheck: invalid node neighbors in part 0"); return (1); } vnodpart = hnodtab[hnodnum].vertpart; if (vnodpart != meshptr->parttax[vnodnum]) { ncmploadtmp[meshptr->parttax[vnodnum]] -= hnodtab[hnodnum].vnloval; ncmploadtmp[vnodpart] += hnodtab[hnodnum].vnloval; parttax[vnodnum] = vnodpart; } ecmpsize0 = 0; for (enodnum = meshptr->m.verttax[vnodnum]; /* For all element neighbors */ enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum helmnum; int velmpart; velmnum = meshptr->m.edgetax[enodnum]; for (helmnum = (velmnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; helmnum = (helmnum + 1) & hashmsk) { if (helmtab[helmnum].velmnum == velmnum) { /* If element found */ velmpart = helmtab[helmnum].vertpart; parttax[velmnum] = velmpart; break; } if (helmtab[helmnum].velmnum == ~0) { /* If element not present */ velmpart = meshptr->parttax[velmnum]; break; } } if (velmpart == 0) ecmpsize0 ++; } if (ecmpsize0 != hnodtab[hnodnum].ecmpsize0) { errorPrint ("vmeshSeparateFmCheck: invalid node neighbor count"); return (1); } } if (ncmpload2 != ncmploadtmp[2]) { errorPrint ("vmeshSeparateFmCheck: invalid frontier load"); return (1); } if (ncmploaddlt != (ncmploadtmp[0] - ncmploadtmp[1])) { errorPrint ("vmeshSeparateFmCheck: invalid separator balance"); return (1); } for (helmnum = 0; helmnum <= hashmsk; helmnum ++) { /* For all element slots */ Gnum velmnum; Gnum eelmnum; Gnum ncmpcut2; Gnum ncmpgain2; Gnum ncmpgaindlt; Gnum ncmpsize[3]; int velmpart; velmnum = helmtab[helmnum].velmnum; if (velmnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ ncmpcut2 = ncmpgain2 = ncmpgaindlt = 0; ncmpsize[0] = ncmpsize[1] = ncmpsize[2] = 0; velmpart = helmtab[helmnum].vertpart; for (eelmnum = meshptr->m.verttax[velmnum]; /* For all node neighbors */ eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; Gnum hnodnum; int vnodpart; Gnum vnloval; vnodnum = meshptr->m.edgetax[eelmnum]; vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; for (hnodnum = (vnodnum * VMESHSEPAFMHASHPRIME) & hashmsk; ; hnodnum = (hnodnum + 1) & hashmsk) { if (hnodtab[hnodnum].vnodnum == vnodnum) { /* If element found */ vnodpart = hnodtab[hnodnum].vertpart; if (vnodpart != 2) { if (vnodpart != velmpart) { errorPrint ("vmeshSeparateFmCheck: invalid separator node (1)"); return (1); } if ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum] - 1) == 0) ncmpgaindlt += (2 * vnodpart - 1) * 2 * vnloval; else { ncmpgain2 += vnloval; ncmpgaindlt += (2 * vnodpart - 1) * vnloval; } } else if (((hnodtab[hnodnum].ecmpsize0 == 1) && (velmpart == 0)) || ((hnodtab[hnodnum].ecmpsize0 == (meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum] - 1)) && (velmpart == 1))) { ncmpgain2 -= vnloval; ncmpgaindlt += (2 * velmpart - 1) * vnloval; } break; } if (hnodtab[hnodnum].vnodnum == ~0) { /* If element not present */ vnodpart = meshptr->parttax[vnodnum]; if (vnodpart != velmpart) { errorPrint ("vmeshSeparateFmCheck: invalid separator node (2)"); return (1); } if ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]) == 1) { if (vnodpart == 2) { errorPrint ("vmeshSeparateFmCheck: invalid separator node (3)"); return (1); } ncmpgaindlt += (2 * vnodpart - 1) * 2 * vnloval; } else { ncmpgain2 += vnloval; ncmpgaindlt += (2 * vnodpart - 1) * vnloval; } break; } } ncmpsize[vnodpart] ++; } if ((ncmpsize[0] != 0) && (ncmpsize[1] != 0)) { errorPrint ("vmeshSeparateFmCheck: invalid element nodes"); return (1); } if (ncmpsize[2] != helmtab[helmnum].ncmpcut2) { errorPrint ("vmeshSeparateFmCheck: invalid element separator count"); return (1); } if ((ncmpgain2 != helmtab[helmnum].ncmpgain2) || (ncmpgaindlt != helmtab[helmnum].ncmpgaindlt)) { errorPrint ("vmeshSeparateFmCheck: invalid element gains"); return (1); } } memFree (parttax + meshptr->m.baseval); return (0); } #endif /* SCOTCH_DEBUG_VMESH3 */ scotch_6.0.9/src/libscotch/hgraph_order_hd.c0000644000302600021200000001613013303015264021277 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a separator using **/ /** the block-oriented Halo Approximate **/ /** (Multiple) Minimum Degree algorithm, **/ /** with super-variable accounting (HaloAMD **/ /** v2.0). **/ /** **/ /** DATES : # Version 3.2 : from : 09 aug 1998 **/ /** to 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 05 jan 1999 **/ /** # Version 4.0 : from : 14 jan 2003 **/ /** to : 23 jan 2004 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_HD #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hall_order_hx.h" #include "hall_order_hd.h" #include "hgraph_order_hd.h" #include "hgraph_order_hx.h" #include "hgraph_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderHd ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Multiple column-block +*/ const HgraphOrderHdParam * restrict const paraptr) { Gnum * restrict petab; Gnum pfree; Gnum iwlen; Gnum * restrict iwtab; Gnum * restrict lentab; Gnum * restrict nvartab; Gnum * restrict elentab; Gnum * restrict lasttab; Gnum * restrict leaftab; Gnum * restrict secntab; /* Array of index to first secondary variable */ Gnum * restrict nexttab; /* Array of index of next principal variable */ Gnum * restrict frsttab; Gnum ncmpa; Gnum n; /* Number of nodes to order (with halo or not) */ int o; if (grafptr->s.vertnbr < paraptr->colmin) /* If graph is too small, order simply */ return (hgraphOrderSi (grafptr, ordeptr, ordenum, cblkptr)); n = grafptr->s.vertnbr; iwlen = (Gnum) ((double) grafptr->s.edgenbr * HGRAPHORDERHDCOMPRAT) + 32; if (iwlen < n) /* Prepare to re-use array */ iwlen = n; if (memAllocGroup ((void **) (void *) &petab, (size_t) (n * sizeof (Gnum)), &iwtab, (size_t) (iwlen * sizeof (Gnum)), &lentab, (size_t) (n * sizeof (Gnum)), &nvartab, (size_t) (n * sizeof (Gnum)), &elentab, (size_t) (n * sizeof (Gnum)), &lasttab, (size_t) (n * sizeof (Gnum)), &leaftab, (size_t) (n * sizeof (Gnum)), &frsttab, (size_t) (n * sizeof (Gnum)), &secntab, (size_t) (n * sizeof (Gnum)), &nexttab, (size_t) (n * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hgraphOrderHd: out of memory"); return (1); } hgraphOrderHxFill (grafptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHdHalmd (n, 0, iwlen, petab, pfree, /* No elements here */ lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, leaftab, secntab, nexttab, frsttab); if (ncmpa < 0) { errorPrint ("hgraphOrderHd: internal error"); memFree (petab); /* Free group leader */ return (1); } o = hallOrderHxBuild (grafptr->s.baseval, n, grafptr->vnohnbr, grafptr->s.vnumtax, ordeptr, cblkptr, nvartab - grafptr->s.baseval, lentab - grafptr->s.baseval, petab - grafptr->s.baseval, frsttab - grafptr->s.baseval, nexttab - grafptr->s.baseval, secntab - grafptr->s.baseval, iwtab - grafptr->s.baseval, elentab - grafptr->s.baseval, ordeptr->peritab + ordenum, /* Use given inverse permutation as inverse permutation space, never based */ leaftab, paraptr->colmin, paraptr->colmax, (float) paraptr->fillrat); memFree (petab); /* Free group leader */ return (o); } scotch_6.0.9/src/libscotch/hmesh_hgraph.h0000644000302600021200000000606713303015264020632 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_hgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source halo mesh to source halo **/ /** graph building routine. **/ /** **/ /** DATES : # Version 4.0 : from : 30 nov 2003 **/ /** to 30 nov 2003 **/ /** **/ /************************************************************/ /* ** The defines. */ /** Prime number for cache-friendly perturbations. **/ #define HMESHHGRAPHHASHPRIME 37 /* Prime number */ /* ** The type and structure definitions. */ /*+ A table made of such elements is used during graph building to build the edge array of the graph from the one of the mesh. +*/ typedef struct HmeshHgraphHash_ { Gnum vertnum; /*+ Origin vertex (i.e. pass) number in mesh +*/ Gnum vertend; /*+ End vertex number in mesh +*/ } HmeshHgraphHash; scotch_6.0.9/src/libscotch/wgraph_part_zr.h0000644000302600021200000000532613465315041021230 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_zr.h **/ /** **/ /** AUTHOR : Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** partitioning algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int wgraphPartZr (Wgraph * const); scotch_6.0.9/src/libscotch/dgraph_induce.c0000644000302600021200000004764313560005435020775 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** subgraph-making functions. **/ /** **/ /** DATES : # Version 5.0 : from : 08 apr 2006 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 31 mar 2008 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 29 aug 2012 **/ /** to : 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH #define DGRAPH_INDUCE #include "module.h" #include "common.h" #include "dgraph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ int dgraphInduce2 ( Dgraph * restrict const orggrafptr, Gnum (* orgfuncptr) (Dgraph * restrict const, Dgraph * restrict const, const void * restrict const, Gnum * restrict const), const void * const orgdataptr, /* Pointer to routine-specific data */ const Gnum indvertlocnbr, /* Number of vertices in induced subgraph */ Gnum * indvnumloctmp, /* Pointer to temporary index array; TRICK: [alias] */ Dgraph * restrict const indgrafptr) { Gnum * restrict orgindxgsttax; /* Based access to vertex translation array */ Gnum indvertlocnnd; /* Based index of end of local vertex array */ Gnum indvertlocnum; /* Number of current vertex in induced graph */ Gnum indvelolocnbr; /* Size of local vertex load array */ Gnum indvelolocsum; /* Sum of vertex loads */ Gnum * indvnumloctax; /* TRICK: maybe alias of indvnumloctmp */ Gnum indvlbllocnbr; /* Size of local vertex label array */ Gnum indedgelocmax; /* (Approximate) number of edges in induced graph */ Gnum indedgelocnbr; /* Real number of edges in induced graph */ Gnum indedgelocnum; Gnum * restrict indedloloctax; Gnum inddegrlocmax; /* Local maximum degree */ Gnum baseval; int cheklocval; int chekglbval; const Gnum * restrict const orgvertloctax = orggrafptr->vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->vendloctax; const Gnum * restrict const orgvnumloctax = orggrafptr->vnumloctax; const Gnum * restrict const orgvlblloctax = orggrafptr->vlblloctax; const Gnum * restrict const orgveloloctax = orggrafptr->veloloctax; const Gnum * restrict const orgedloloctax = orggrafptr->edloloctax; if (dgraphGhst (orggrafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("dgraphInduce2: cannot compute ghost edge array"); return (1); } baseval = orggrafptr->baseval; indgrafptr->flagval |= (DGRAPHFREEALL ^ DGRAPHFREECOMM) | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; indgrafptr->baseval = baseval; indgrafptr->vertlocnbr = indvertlocnbr; /* Must be set before orgfuncptr() is called */ indgrafptr->vertlocnnd = indvertlocnbr + baseval; if (orgveloloctax != NULL) { indvelolocnbr = indvertlocnbr; indvelolocsum = 0; } else { indvelolocnbr = 0; indvelolocsum = indvertlocnbr; } indvlbllocnbr = (orgvlblloctax != NULL) ? indvertlocnbr : 0; indedgelocmax = orggrafptr->edgelocnbr; /* Choose best upper bound on number of edges (avoid multiply overflow) */ if ((orggrafptr->degrglbmax > 0) && (indvertlocnbr < (indedgelocmax / orggrafptr->degrglbmax))) indedgelocmax = indvertlocnbr * orggrafptr->degrglbmax; if (orggrafptr->edloloctax != NULL) /* If graph has edge weights */ indedgelocmax *= 2; /* Account for edge weights */ cheklocval = chekglbval = 0; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &indgrafptr->procdsptab, (size_t) ((orggrafptr->procglbnbr + 1) * sizeof (Gnum)), &indgrafptr->proccnttab, (size_t) (orggrafptr->procglbnbr * sizeof (Gnum)), &indgrafptr->procngbtab, (size_t) (orggrafptr->procglbnbr * sizeof (int)), &indgrafptr->procrcvtab, (size_t) (orggrafptr->procglbnbr * sizeof (int)), &indgrafptr->procsndtab, (size_t) (orggrafptr->procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphInduce2: out of memory (1)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &indgrafptr->vertloctax, (size_t) ((indvertlocnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &indgrafptr->vnumloctax, (size_t) (indvertlocnbr * sizeof (Gnum)), &indgrafptr->veloloctax, (size_t) (indvelolocnbr * sizeof (Gnum)), &indgrafptr->vlblloctax, (size_t) (indvlbllocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphInduce2: out of memory (2)"); cheklocval = 1; } else if (indgrafptr->vertloctax -= baseval, indgrafptr->vnumloctax -= baseval, indgrafptr->veloloctax = (orgveloloctax != NULL) ? indgrafptr->veloloctax - baseval : NULL, indgrafptr->vlblloctax = indgrafptr->vlblloctax - baseval, /* If no vertex labels, vlblloctax will point to vnumloctax afterward */ memAllocGroup ((void **) (void *) &indgrafptr->edgeloctax, (size_t) (indedgelocmax * sizeof (Gnum)), /* Pre-allocate space for edgetab (and edlotab) */ &orgindxgsttax, (size_t) (orggrafptr->vertgstnbr * sizeof (Gnum)), NULL) == NULL) { /* orgindxgsttab is at the end */ errorPrint ("dgraphInduce2: out of memory (3)"); cheklocval = 1; } else indgrafptr->edgeloctax -= baseval; if (cheklocval != 0) { /* In case of memory error */ Gnum procngbnum; Gnum dummyval; dummyval = -1; chekglbval = 1; if (MPI_Allgather (&dummyval, 1, GNUM_MPI, /* Use proccnttab of orggraf as dummy receive array (will be regenerated) */ orggrafptr->proccnttab, 1, GNUM_MPI, indgrafptr->proccomm) != MPI_SUCCESS) errorPrint ("dgraphInduce2: communication error (1)"); for (procngbnum = 1; procngbnum <= orggrafptr->procglbnbr; procngbnum ++) /* Rebuild proccnttab of orggraf */ orggrafptr->proccnttab[procngbnum - 1] = orggrafptr->procdsptab[procngbnum] - orggrafptr->procdsptab[procngbnum - 1]; } else { indgrafptr->procdsptab[0] = indvertlocnbr; if (MPI_Allgather (&indgrafptr->procdsptab[0], 1, GNUM_MPI, &indgrafptr->proccnttab[0], 1, GNUM_MPI, indgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphInduce2: communication error (2)"); chekglbval = 1; } else { Gnum procngbnum; indgrafptr->procdsptab[0] = baseval; /* Build vertex-to-process array */ for (procngbnum = 0; procngbnum < indgrafptr->procglbnbr; procngbnum ++) { /* Process potential error flags from other processes */ if (indgrafptr->procdsptab[procngbnum] < 0) { /* If error notified by another process */ chekglbval = 1; break; } indgrafptr->procdsptab[procngbnum + 1] = indgrafptr->procdsptab[procngbnum] + indgrafptr->proccnttab[procngbnum]; } } indgrafptr->procvrttab = indgrafptr->procdsptab; /* Graph does not have holes */ } if (chekglbval != 0) { /* If something went wrong in all of the above */ dgraphFree (indgrafptr); return (1); } memSet (orgindxgsttax, ~0, orggrafptr->vertlocnbr * sizeof (Gnum)); /* Preset index array */ orgindxgsttax -= baseval; indedgelocmax = orgfuncptr (indgrafptr, orggrafptr, orgdataptr, orgindxgsttax); /* Call flagging subroutine */ if (dgraphHaloSync (orggrafptr, (byte *) (orgindxgsttax + baseval), GNUM_MPI) != 0) { /* Share global indexing of subgraph vertices */ errorPrint ("dgraphInduce2: cannot perform halo exchange"); dgraphFree (indgrafptr); return (1); } if (indvnumloctmp == NULL) /* indgrafptr->vnumloctax did not exist when function was called */ indvnumloctmp = indgrafptr->vnumloctax; indedloloctax = (orggrafptr->edloloctax != NULL) ? indgrafptr->edgeloctax + indedgelocmax : NULL; inddegrlocmax = 0; for (indvertlocnum = indedgelocnum = baseval, indvertlocnnd = indvertlocnbr + baseval; indvertlocnum < indvertlocnnd; indvertlocnum ++) { Gnum orgvertlocnum; Gnum orgedgelocnum; orgvertlocnum = indvnumloctmp[indvertlocnum]; indgrafptr->vertloctax[indvertlocnum] = indedgelocnum; if (orgveloloctax != NULL) { /* If graph has vertex weights */ indvelolocsum += /* Accumulate vertex loads */ indgrafptr->veloloctax[indvertlocnum] = orgveloloctax[orgvertlocnum]; } if (orgvlblloctax != NULL) /* If graph has vertex labels */ indgrafptr->vlblloctax[indvertlocnum] = orgvlblloctax[orgvertlocnum]; for (orgedgelocnum = orgvertloctax[orgvertlocnum]; orgedgelocnum < orgvendloctax[orgvertlocnum]; orgedgelocnum ++) { Gnum indvertgstend; indvertgstend = orgindxgsttax[orggrafptr->edgegsttax[orgedgelocnum]]; if (indvertgstend != ~0) { /* If edge should be kept */ indgrafptr->edgeloctax[indedgelocnum] = indvertgstend; if (indedloloctax != NULL) indedloloctax[indedgelocnum] = orgedloloctax[orgedgelocnum]; indedgelocnum ++; } } if (inddegrlocmax < (indedgelocnum - indgrafptr->vertloctax[indvertlocnum])) inddegrlocmax = (indedgelocnum - indgrafptr->vertloctax[indvertlocnum]); } indedgelocnbr = indedgelocnum - baseval; indgrafptr->vertloctax[indvertlocnum] = indedgelocnum; /* Mark end of edge array */ indgrafptr->vendloctax = indgrafptr->vertloctax + 1; /* Induced graph is compact */ indgrafptr->velolocsum = indvelolocsum; indgrafptr->edgelocnbr = indedgelocnbr; indgrafptr->edgelocsiz = indedgelocnbr; if (orgvlblloctax == NULL) /* If we didn't have vertex labels, use vertex index array as vertex label array */ indgrafptr->vlblloctax = indgrafptr->vnumloctax; if (indedloloctax != NULL) { /* Re-allocate arrays and delete orgindxtab */ size_t indedlooftval; /* Offset of edge load array with respect to edge array */ indedlooftval = indedloloctax - indgrafptr->edgeloctax; indgrafptr->edgeloctax = memRealloc (indgrafptr->edgeloctax + baseval, (indedlooftval + indedgelocnbr) * sizeof (Gnum)); indgrafptr->edgeloctax -= baseval; indedloloctax = indgrafptr->edgeloctax + indedlooftval; /* Use old index into old array as new index to avoid alignment problems */ } else { indgrafptr->edgeloctax = memRealloc (indgrafptr->edgeloctax + baseval, indedgelocnbr * sizeof (Gnum)); indgrafptr->edgeloctax -= baseval; } indvertlocnum = baseval; indvnumloctax = indgrafptr->vnumloctax; /* TRICK: maybe alias */ if (orgvnumloctax != NULL) { /* Adjust vnumloctax */ for ( ; indvertlocnum < indvertlocnnd; indvertlocnum ++) indvnumloctax[indvertlocnum] = orgvnumloctax[indvnumloctmp[indvertlocnum]]; /* TRICK: indvnumloctmp and indgrafptr->vnumloctax may be aliases */ } else { Gnum orgvertglbadj; orgvertglbadj = orggrafptr->procvrttab[orggrafptr->proclocnum] - baseval; /* Set adjustement for global indexing */ for ( ; indvertlocnum < indvertlocnnd; indvertlocnum ++) indvnumloctax[indvertlocnum] = indvnumloctmp[indvertlocnum] + orgvertglbadj; /* TRICK: indvnumloctmp and indgrafptr->vnumloctax may be aliases */ } indgrafptr->edloloctax = indedloloctax; indgrafptr->degrglbmax = inddegrlocmax; /* Local maximum degree will be turned into global maximum degree */ if (dgraphBuild4 (indgrafptr) != 0) { errorPrint ("dgraphInduce2: cannot build induced graph"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (indgrafptr) != 0) { /* Check graph consistency */ errorPrint ("dgraphInduce2: inconsistent graph data"); dgraphFree (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } /* This routine builds the graph induced ** by the original graph and the list of ** selected vertices. ** The induced vnumtab array is the global ** translation of the list array if the ** original graph does not have a vnumtab, ** or the proper subset of the original ** vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static Gnum dgraphInduceList2 ( Dgraph * restrict const indgrafptr, Dgraph * restrict const orggrafptr, const void * restrict const orgdataptr, /* Data pointer is list array pointer */ Gnum * restrict const orgindxgsttax) { Gnum orglistnbr; Gnum orglistnum; Gnum indvertglbnum; Gnum indedgelocmax; const Gnum * restrict const orgvertloctax = orggrafptr->vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->vendloctax; const Gnum * restrict const orglisttab = (const Gnum * restrict) orgdataptr; for (orglistnum = 0, indvertglbnum = indgrafptr->procvrttab[indgrafptr->proclocnum], /* Fill index array while recomputing tighter upper bound on arcs */ orglistnbr = indgrafptr->vertlocnbr, indedgelocmax = 0; orglistnum < orglistnbr; orglistnum ++, indvertglbnum ++) { Gnum orgvertlocnum; orgvertlocnum = orglisttab[orglistnum]; orgindxgsttax[orgvertlocnum] = indvertglbnum; /* Mark selected vertices */ indedgelocmax += orgvendloctax[orgvertlocnum] - orgvertloctax[orgvertlocnum]; } return (indedgelocmax); } int dgraphInduceList ( Dgraph * restrict const orggrafptr, const Gnum orglistnbr, const Gnum * const orglisttab, /* Local list of kept vertices */ Dgraph * restrict const indgrafptr) { return (dgraphInduce2 (orggrafptr, dgraphInduceList2, (const void * const) orglisttab, orglistnbr, (Gnum * const) (orglisttab - orggrafptr->baseval), indgrafptr)); } /* This routine builds the graph induced ** by the original graph and the vector of ** selected vertices. ** The induced vnumtab array is the global ** translation of the list array if the ** original graph does not have a vnumtab, ** or the proper subset of the original ** vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ typedef struct DgraphInducePartData_ { const GraphPart * orgpartloctax; GraphPart indpartval; } DgraphInducePartData; static Gnum dgraphInducePart2 ( Dgraph * restrict const indgrafptr, Dgraph * restrict const orggrafptr, const void * restrict const orgdataptr, Gnum * restrict const orgindxgsttax) { Gnum orgvertlocnnd; Gnum orgvertlocnum; Gnum indvertlocnum; Gnum indvertglbnum; Gnum indedgelocmax; const Gnum * restrict const orgvertloctax = orggrafptr->vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->vendloctax; const GraphPart * restrict const orgpartloctax = ((const DgraphInducePartData * restrict const) orgdataptr)->orgpartloctax; const GraphPart indpartval = ((const DgraphInducePartData * restrict const) orgdataptr)->indpartval; Gnum * restrict const indvnumloctax = indgrafptr->vnumloctax; for (orgvertlocnum = indvertlocnum = orggrafptr->baseval, indvertglbnum = indgrafptr->procvrttab[indgrafptr->proclocnum], /* Fill index array while recomputing tighter upper bound on arcs */ orgvertlocnnd = orggrafptr->vertlocnnd, indedgelocmax = 0; orgvertlocnum < orgvertlocnnd; orgvertlocnum ++) { if (orgpartloctax[orgvertlocnum] == indpartval) { orgindxgsttax[orgvertlocnum] = indvertglbnum; /* Mark selected vertices */ indvnumloctax[indvertlocnum] = orgvertlocnum; indedgelocmax += orgvendloctax[orgvertlocnum] - orgvertloctax[orgvertlocnum]; indvertlocnum ++, indvertglbnum ++; } else orgindxgsttax[orgvertlocnum] = ~0; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((indvertlocnum - orggrafptr->baseval) != indgrafptr->vertlocnbr) { errorPrint ("dgraphInducePart2: inconsistent data"); dgraphFree (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (indedgelocmax); } int dgraphInducePart ( Dgraph * restrict const orggrafptr, /* Pointer to original distributed graph */ const GraphPart * restrict const orgpartloctax, /* Based array of local vertex partition flags */ const Gnum indvertlocnbr, /* Number of local vertices in selected part */ const GraphPart indpartval, Dgraph * restrict const indgrafptr) { DgraphInducePartData orgdatadat; orgdatadat.orgpartloctax = orgpartloctax; orgdatadat.indpartval = indpartval; return (dgraphInduce2 (orggrafptr, dgraphInducePart2, &orgdatadat, indvertlocnbr, NULL, indgrafptr)); } scotch_6.0.9/src/libscotch/hdgraph_fold.c0000644000302600021200000012345513560013213020607 0ustar pelegrinpelegrin/* Copyright 2007-2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_fold.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo distribu- **/ /** ted graph folding function. **/ /** **/ /** DATES : # Version 5.0 : from : 23 apr 2006 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 27 jun 2008 **/ /** to : 04 jan 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_fold_comm.h" #include "hdgraph.h" #include "hdgraph_fold.h" /******************************/ /* */ /* These routines handle halo */ /* distributed source graphs. */ /* */ /******************************/ /* This routine builds a folded graph by ** merging graph data to the processes of ** the first half or to the second half ** of the communicator. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hdgraphFold ( const Hdgraph * restrict const orggrafptr, const int partval, /* 0 for first half, 1 for second half */ Hdgraph * restrict const fldgrafptr) { int fldprocglbnbr; int fldproclocnum; /* Index of local process in folded communicator */ int fldproccol; /* Color of receiver or not wanted in communicator */ MPI_Comm fldproccomm; /* Communicator of folded part */ fldprocglbnbr = (orggrafptr->s.procglbnbr + 1) / 2; if (partval == 1) { fldproclocnum = orggrafptr->s.proclocnum - fldprocglbnbr; fldprocglbnbr = orggrafptr->s.procglbnbr - fldprocglbnbr; } else fldproclocnum = orggrafptr->s.proclocnum; fldproccol = ((fldproclocnum >= 0) && (fldproclocnum < fldprocglbnbr)) ? 0 : MPI_UNDEFINED; if (MPI_Comm_split (orggrafptr->s.proccomm, fldproccol, fldproclocnum, &fldproccomm) != MPI_SUCCESS) { errorPrint ("hdgraphFold: communication error"); return (1); } return (hdgraphFold2 (orggrafptr, partval, fldgrafptr, fldproccomm)); } int hdgraphFold2 ( const Hdgraph * restrict const orggrafptr, const int partval, /* 0 for first half, 1 for second half */ Hdgraph * restrict const fldgrafptr, MPI_Comm fldproccomm) /* Pre-computed communicator */ { int fldcommtypval; /* Type of communication for this process */ DgraphFoldCommData * restrict fldcommdattab; /* Array of two communication data */ Gnum * restrict fldcommvrttab; /* Starting global send indices of communications */ Gnum * restrict fldvertidxtab; /* Start indices of vertex arrays */ Gnum * restrict fldvendidxtab; /* Adjustment value for end vertex arrays */ Gnum * restrict fldedgeidxtab; /* Start indices of edge arrays */ Gnum * restrict fldedgecnttab; /* Number of edges exchanged during each communication */ Gnum fldvertlocnbr; /* Number of vertices in local folded part */ Gnum fldedgelocsiz; /* (Upper bound of) number of edges in folded graph */ int fldprocglbnbr; int fldproclocnum; /* Index of local process in folded communicator */ int fldvertadjnbr; Gnum * restrict fldvertadjtab; /* Array of index adjustments for original vertices */ Gnum * restrict fldvertdlttab; /* Array of index adjustments for original vertices */ Gnum * restrict fldvhalloctax; /* Index array for remote halo vertex renumbering */ int cheklocval; int chekglbval; int commmax; int commnbr; int requnbr; MPI_Request * restrict requtab; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (orggrafptr->vhndloctax != (orggrafptr->s.vertloctax + 1)) { errorPrint ("hdgraphFold2: halo graph must be compact"); return (1); } if (orggrafptr->s.vendloctax < (orggrafptr->s.vertloctax + orggrafptr->s.vertlocnbr)) { /* MPI_Isend calls should not overlap */ errorPrint ("hdgraphFold2: halo graph must have distinct arrays"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ fldprocglbnbr = (orggrafptr->s.procglbnbr + 1) / 2; if (partval == 1) { fldproclocnum = orggrafptr->s.proclocnum - fldprocglbnbr; fldprocglbnbr = orggrafptr->s.procglbnbr - fldprocglbnbr; } else fldproclocnum = orggrafptr->s.proclocnum; fldcommtypval = ((fldproclocnum >= 0) && (fldproclocnum < fldprocglbnbr)) ? DGRAPHFOLDCOMMRECV : DGRAPHFOLDCOMMSEND; cheklocval = 0; fldvertidxtab = NULL; fldcommdattab = NULL; if (fldcommtypval == DGRAPHFOLDCOMMRECV) { /* If we are going to receive */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldgrafptr == NULL) { errorPrint ("hdgraphFold2: invalid parameters (1)"); return (1); } if (fldproccomm == MPI_COMM_NULL) { errorPrint ("hdgraphFold2: invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ memSet (fldgrafptr, 0, sizeof (Hdgraph)); /* Pre-initialize graph fields */ fldgrafptr->s.proccomm = fldproccomm; fldgrafptr->s.procglbnbr = fldprocglbnbr; fldgrafptr->s.proclocnum = fldproclocnum; fldgrafptr->s.flagval = DGRAPHFREEALL | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* For premature freeing on error; do not free vhndloctab as it is grouped with vertloctab */ if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &fldgrafptr->s.procdsptab, (size_t) ((fldprocglbnbr + 1) * sizeof (Gnum)), &fldgrafptr->s.proccnttab, (size_t) (fldprocglbnbr * sizeof (Gnum)), &fldgrafptr->s.procngbtab, (size_t) (fldprocglbnbr * sizeof (int)), &fldgrafptr->s.procrcvtab, (size_t) (fldprocglbnbr * sizeof (int)), &fldgrafptr->s.procsndtab, (size_t) (fldprocglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("hdgraphFold2: out of memory (1)"); cheklocval = 1; } else if (dgraphFoldComm (&orggrafptr->s, partval, &commmax, &fldcommtypval, &fldcommdattab, &fldcommvrttab, /* Process can become a sender receiver */ fldgrafptr->s.proccnttab, &fldvertadjnbr, &fldvertadjtab, &fldvertdlttab) != 0) { errorPrint ("hdgraphFold2: cannot compute folding communications (1)"); cheklocval = 1; } else { Gnum fldvelolocnbr; if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver */ int i; for (i = 0, fldvertlocnbr = orggrafptr->s.vertlocnbr; (i < commmax) && (fldcommdattab[i].procnum != -1); i ++) fldvertlocnbr += fldcommdattab[i].vertnbr; commnbr = i; fldedgelocsiz = orggrafptr->s.edgelocsiz + orggrafptr->s.edgeglbsmx * i; /* Upper bound on local edges (degree useless since only for non-halo vertices) */ } else { /* Process is a sender receiver */ fldvertlocnbr = fldcommvrttab[0] - orggrafptr->s.procvrttab[orggrafptr->s.proclocnum]; /* Communications will remove vertices */ fldedgelocsiz = orggrafptr->s.vertloctax[fldvertlocnbr + orggrafptr->s.baseval] - orggrafptr->s.baseval; /* Exact number of edges */ fldgrafptr->s.edgelocsiz = fldedgelocsiz; } fldvelolocnbr = (orggrafptr->s.veloloctax != NULL) ? fldvertlocnbr : 0; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &fldgrafptr->s.vertloctax, (size_t) ((fldvertlocnbr + 1) * sizeof (Gnum)), &fldgrafptr->s.vendloctax, (size_t) ( fldvertlocnbr * sizeof (Gnum)), /* Vertex end array for non-halo vertices */ &fldgrafptr->s.vnumloctax, (size_t) ( fldvertlocnbr * sizeof (Gnum)), &fldgrafptr->s.veloloctax, (size_t) ( fldvelolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hdgraphFold2: out of memory (2)"); cheklocval = 1; } else if (fldgrafptr->s.vertloctax -= orggrafptr->s.baseval, fldgrafptr->s.vendloctax -= orggrafptr->s.baseval, fldgrafptr->s.vnumloctax -= orggrafptr->s.baseval, fldgrafptr->s.veloloctax = ((orggrafptr->s.veloloctax != NULL) ? fldgrafptr->s.veloloctax - orggrafptr->s.baseval : NULL), memAllocGroup ((void **) (void *) &fldgrafptr->s.edgeloctax, (size_t) (fldedgelocsiz * sizeof (Gnum)), &fldvhalloctax, (size_t) (orggrafptr->s.edgeglbsmx * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hdgraphFold2: out of memory (3)"); cheklocval = 1; } else { fldgrafptr->s.edgeloctax -= orggrafptr->s.baseval; fldvhalloctax -= orggrafptr->s.baseval; } } } else { /* Process is a sender */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldproccomm != MPI_COMM_NULL) { errorPrint ("hdgraphFold2: invalid parameters (3)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ if (dgraphFoldComm (&orggrafptr->s, partval, &commmax, &fldcommtypval, &fldcommdattab, &fldcommvrttab, NULL, NULL, NULL, NULL) != 0) { errorPrint ("hdgraphFold2: cannot compute folding communications (2)"); cheklocval = 1; } } if ((cheklocval == 0) && (memAllocGroup ((void **) (void *) /* Allocate folding data */ &fldvertidxtab, (size_t) (commmax * sizeof (Gnum)), &fldvendidxtab, (size_t) (commmax * sizeof (Gnum)), &fldedgeidxtab, (size_t) (commmax * sizeof (Gnum)), &fldedgecnttab, (size_t) (commmax * sizeof (Gnum)), &requtab, (size_t) (commmax * HDGRAPHFOLDTAGNBR * sizeof (MPI_Request)), NULL) == NULL)) { errorPrint ("hdgraphFold2: out of memory (4)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_HDGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, orggrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (1)"); chekglbval = 1; } #else /* SCOTCH_DEBUG_HDGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_HDGRAPH1 */ if (chekglbval != 0) { if ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) { hdgraphExit (fldgrafptr); if (fldvertidxtab != NULL) memFree (fldvertidxtab); /* Free group leaders */ if (fldcommdattab != NULL) memFree (fldcommdattab); } return (1); } requnbr = 0; /* Communications without further processing are placed at beginning of array */ if ((fldcommtypval & DGRAPHFOLDCOMMSEND) != 0) { /* If process is (also) a sender */ Gnum vertsndbas; Gnum vertsndnbr; int i; vertsndnbr = ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) ? (fldcommvrttab[0] - orggrafptr->s.procvrttab[orggrafptr->s.proclocnum]) : 0; /* If process is also a receiver, start sending after kept vertices */ for (i = 0, requnbr = 0, vertsndbas = orggrafptr->s.baseval; /* For all send communications to perform */ (i < commmax) && (fldcommdattab[i].procnum != -1); i ++) { Gnum edgelocsiz; vertsndbas += vertsndnbr; vertsndnbr = fldcommdattab[i].vertnbr; edgelocsiz = orggrafptr->s.vertloctax[vertsndbas + vertsndnbr] - orggrafptr->s.vertloctax[vertsndbas]; /* Graph is compact */ fldvertidxtab[i] = vertsndbas; fldedgeidxtab[i] = orggrafptr->s.vertloctax[vertsndbas]; fldedgecnttab[i] = edgelocsiz; if (MPI_Isend (&edgelocsiz, 1, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVLBLLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (2)"); cheklocval = 1; } } commnbr = i; for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->s.vertloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVERTLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (3)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->s.vendloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVENDLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (4)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->s.edgeloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGEDGELOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (5)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { Gnum vertsndbas; int vertsndnbr; int procsndnum; /* Rank of process to send to */ vertsndbas = fldvertidxtab[i]; vertsndnbr = (int) fldcommdattab[i].vertnbr; procsndnum = (int) fldcommdattab[i].procnum; if ((orggrafptr->s.veloloctax != NULL) && (MPI_Isend (orggrafptr->s.veloloctax + vertsndbas, vertsndnbr, GNUM_MPI, procsndnum, TAGFOLD + TAGVELOLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("hdgraphFold2: communication error (6)"); cheklocval = 1; } else if ((orggrafptr->s.vnumloctax != NULL) && (MPI_Isend (orggrafptr->s.vnumloctax + vertsndbas, vertsndnbr, GNUM_MPI, procsndnum, TAGFOLD + TAGVNUMLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("hdgraphFold2: communication error (7)"); cheklocval = 1; } } /* Communications of sender-receivers will be completed in the receiving phase */ } if ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) { /* If process is (also) a receiver */ Gnum orgvertlocnbr; Gnum orgvertlocnnd; Gnum fldvertlocadj; Gnum fldvelolocsum; Gnum fldedgelocnum; Gnum fldvhallocnum; Gnum fldehallocnbr; int fldprocnum; int i; const Gnum * restrict const orgvertloctax = orggrafptr->s.vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->s.vendloctax; const Gnum * restrict const orgedgeloctax = orggrafptr->s.edgeloctax; fldgrafptr->s.procvrttab = fldgrafptr->s.procdsptab; /* Graph does not have holes */ fldgrafptr->s.procdsptab[0] = orggrafptr->s.baseval; /* Build private data of folded graph and array */ for (fldprocnum = 0; fldprocnum < fldprocglbnbr; fldprocnum ++) /* New subdomain indices start from baseval */ fldgrafptr->s.procdsptab[fldprocnum + 1] = fldgrafptr->s.procdsptab[fldprocnum] + fldgrafptr->s.proccnttab[fldprocnum]; if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver */ Gnum orgvertlocmin; Gnum orgvertlocmax; Gnum fldvertlocnum; Gnum fldedgelocbas; Gnum fldvertrcvbas; Gnum fldvertrcvnbr; int procngbmin; int procngbmax; Gnum * restrict const fldedgeloctax = fldgrafptr->s.edgeloctax; for (i = 0, fldvertrcvbas = orggrafptr->s.vertlocnnd, fldvertrcvnbr = 0; /* For all receive communications to perform */ (i < commnbr) && (cheklocval == 0); i ++) { fldvertrcvbas += fldvertrcvnbr; fldvertrcvnbr = fldcommdattab[i].vertnbr; fldvertidxtab[i] = fldvertrcvbas; if (MPI_Irecv (&fldedgecnttab[i], 1, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVLBLLOCTAB, orggrafptr->s.proccomm, &requtab[HDGRAPHFOLDTAGENBR * commmax + i]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (8)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { /* Let these communications progress while we process the edge size messages */ if (MPI_Irecv (fldgrafptr->s.vertloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVERTLOCTAB, orggrafptr->s.proccomm, &requtab[HDGRAPHFOLDTAGVERT * commmax + i]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (9)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Irecv (fldgrafptr->s.vendloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVENDLOCTAB, orggrafptr->s.proccomm, &requtab[HDGRAPHFOLDTAGVEND * commmax + i]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (10)"); cheklocval = 1; } } MPI_Waitall (commnbr, &requtab[HDGRAPHFOLDTAGENBR * commmax], MPI_STATUSES_IGNORE); for (i = 0, fldedgelocbas = orggrafptr->s.vertloctax[orggrafptr->s.vertlocnnd]; (i < commnbr) && (cheklocval == 0); i ++) { fldedgeidxtab[i] = fldedgelocbas; fldedgelocbas += fldedgecnttab[i]; if (MPI_Irecv (fldedgeloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGEDGELOCTAB, orggrafptr->s.proccomm, &requtab[HDGRAPHFOLDTAGEDGE * commmax + i]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (11)"); cheklocval = 1; } } fldgrafptr->s.edgelocsiz = fldedgelocbas - orggrafptr->s.baseval; /* Get number of local and halo edges */ if (orggrafptr->s.veloloctax != NULL) { for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Irecv (fldgrafptr->s.veloloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVELOLOCTAB, orggrafptr->s.proccomm, &requtab[HDGRAPHFOLDTAGVELO * commmax + i]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (12)"); cheklocval = 1; } } } if (orggrafptr->s.vnumloctax != NULL) { for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Irecv (fldgrafptr->s.vnumloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVNUMLOCTAB, orggrafptr->s.proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (13)"); cheklocval = 1; } } } orgvertlocnbr = orggrafptr->s.vertlocnbr; /* Process all local vertices */ orgvertlocnnd = orggrafptr->s.vertlocnnd; if (orggrafptr->s.vnumloctax == NULL) { /* If original graph does not have vertex numbers, create remote parts of vertex number array */ Gnum fldvertlocnum; Gnum fldvertlocadj; int i; Gnum * restrict const fldvnumloctax = fldgrafptr->s.vnumloctax; for (i = 0, fldvertlocnum = orgvertlocnnd; i < commnbr; i ++) { Gnum fldvertlocnnd; for (fldvertlocnnd = fldvertlocnum + fldcommdattab[i].vertnbr, fldvertlocadj = fldcommvrttab[i]; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvnumloctax[fldvertlocnum] = fldvertlocadj ++; } } for (procngbmin = 0, procngbmax = fldvertadjnbr; /* Initialize search accelerator */ procngbmax - procngbmin > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbmin) / 2; if (fldvertadjtab[procngbmed] <= orggrafptr->s.procvrttab[orggrafptr->s.proclocnum]) procngbmin = procngbmed; else procngbmax = procngbmed; } orgvertlocmin = fldvertadjtab[procngbmin]; orgvertlocmax = fldvertadjtab[procngbmax]; fldvertlocadj = fldvertdlttab[procngbmin]; for (fldvertlocnum = fldedgelocnum = orggrafptr->s.baseval; /* Adjust local part of edge array */ fldvertlocnum < orgvertlocnnd; ) { for ( ; fldedgelocnum < orgvendloctax[fldvertlocnum]; fldedgelocnum ++) { /* Reorder end vertices */ Gnum orgvertlocend; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval)) { errorPrint ("hdgraphFold2: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ orgvertlocend = orgedgeloctax[fldedgelocnum]; if ((orgvertlocend >= orgvertlocmin) && /* If end vertex is local */ (orgvertlocend < orgvertlocmax)) fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertlocadj; else { /* End vertex is not local */ int procngbmin; int procngbmax; for (procngbmin = 0, procngbmax = fldvertadjnbr; procngbmax - procngbmin > 1; ) { int procngbnum; procngbnum = (procngbmax + procngbmin) / 2; if (fldvertadjtab[procngbnum] <= orgvertlocend) procngbmin = procngbnum; else procngbmax = procngbnum; } fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertdlttab[procngbmin]; } } fldvertlocnum ++; for ( ; fldedgelocnum < orgvertloctax[fldvertlocnum]; fldedgelocnum ++) { /* Copy halo part as is */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orgedgeloctax[fldedgelocnum] < orggrafptr->s.baseval) || (orgedgeloctax[fldedgelocnum] >= (orggrafptr->vhallocnbr + orggrafptr->s.baseval))) { errorPrint ("hdgraphFold2: internal error (2)"); return (1); } if (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval)) { errorPrint ("hdgraphFold2: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ fldedgeloctax[fldedgelocnum] = orgedgeloctax[fldedgelocnum]; } } fldvelolocsum = orggrafptr->s.velolocsum; /* In case there are vertex loads, we keep all of existing load */ fldehallocnbr = orggrafptr->ehallocnbr; /* Normal receivers have at least all of their local halo vertices */ fldvhallocnum = orggrafptr->vhallocnbr + orggrafptr->s.baseval; /* Index of next halo vertex number to assign */ } else { /* Receiver process is also a sender */ Gnum orgvertlocmin; Gnum orgvertlocmax; Gnum fldvertlocnum; Gnum fldvertlocadj; Gnum fldvhallocmax; /* Maximum current size of halo vertex array */ int procngbmin; int procngbmax; Gnum * restrict const fldedgeloctax = fldgrafptr->s.edgeloctax; orgvertlocnbr = fldvertlocnbr; /* Process only remaining local vertices */ orgvertlocnnd = fldvertlocnbr + orggrafptr->s.baseval; for (procngbmin = 0, procngbmax = fldvertadjnbr; /* Initialize search accelerator */ procngbmax - procngbmin > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbmin) / 2; if (fldvertadjtab[procngbmed] <= orggrafptr->s.procvrttab[orggrafptr->s.proclocnum]) procngbmin = procngbmed; else procngbmax = procngbmed; } orgvertlocmin = fldvertadjtab[procngbmin]; orgvertlocmax = fldvertadjtab[procngbmax]; fldvertlocadj = fldvertdlttab[procngbmin]; fldvhallocmax = orggrafptr->s.baseval - 1; /* Reset halo vertex array for local part as halo vertices may have disappeared */ fldehallocnbr = 0; /* Recount all remaining halo vertices and edges */ fldvhallocnum = orggrafptr->s.baseval; for (fldvertlocnum = fldedgelocnum = orggrafptr->s.baseval; /* Copy remaining local part of edge array */ fldvertlocnum < orgvertlocnnd; ) { for ( ; fldedgelocnum < orgvendloctax[fldvertlocnum]; fldedgelocnum ++) { /* Reorder end vertices */ Gnum orgvertlocend; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval)) { errorPrint ("hdgraphFold2: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ orgvertlocend = orgedgeloctax[fldedgelocnum]; if ((orgvertlocend >= orgvertlocmin) && /* If end vertex is local */ (orgvertlocend < orgvertlocmax)) fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertlocadj; else { /* End vertex is not local */ int procngbnum; int procngbmax; for (procngbnum = 0, procngbmax = fldvertadjnbr; procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fldvertadjtab[procngbmed] <= orgvertlocend) procngbnum = procngbmed; else procngbmax = procngbmed; } fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertdlttab[procngbnum]; } } fldvertlocnum ++; fldehallocnbr += orgvertloctax[fldvertlocnum] - fldedgelocnum; for ( ; fldedgelocnum < orgvertloctax[fldvertlocnum]; fldedgelocnum ++) { /* Renumber halo part */ Gnum orgverthalend; Gnum fldvhallocend; orgverthalend = orgedgeloctax[fldedgelocnum]; #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orgverthalend < orggrafptr->s.baseval) || (orgverthalend >= (orggrafptr->vhallocnbr + orggrafptr->s.baseval)) || (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval))) { errorPrint ("hdgraphFold2: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ while (fldvhallocmax < orgverthalend) /* Expand halo vertex index array whenever necessary */ fldvhalloctax[++ fldvhallocmax] = ~0; fldvhallocend = fldvhalloctax[orgverthalend]; /* Get renumbered halo vertex */ if (fldvhallocend < 0) { /* If new halo vertex not yet given */ fldvhallocend = /* Allocate it */ fldvhalloctax[orgverthalend] = fldvhallocnum ++; } fldedgeloctax[fldedgelocnum] = fldvhallocend; } } if (orggrafptr->s.veloloctax != NULL) { /* If original graph has vertex loads */ Gnum fldvertlocnum; for (fldvertlocnum = orggrafptr->s.baseval, fldvelolocsum = 0; /* Accumulate load sum of remaining part */ fldvertlocnum < orgvertlocnnd; fldvertlocnum ++) fldvelolocsum += orggrafptr->s.veloloctax[fldvertlocnum]; } commnbr = 0; /* Turn sender-receiver into normal receiver without any communications to perform */ } if (orggrafptr->s.veloloctax != NULL) /* If original graph has vertex loads */ memCpy (fldgrafptr->s.veloloctax + orggrafptr->s.baseval, /* Copy local part of vertex load array */ orggrafptr->s.veloloctax + orggrafptr->s.baseval, orgvertlocnbr * sizeof (Gnum)); if (orggrafptr->s.vnumloctax != NULL) /* If original graph has vertex numbers */ memCpy (fldgrafptr->s.vnumloctax + orggrafptr->s.baseval, /* Copy local part of vertex number array */ orggrafptr->s.vnumloctax + orggrafptr->s.baseval, orgvertlocnbr * sizeof (Gnum)); else { /* Build local part of vertex number array */ Gnum fldvertlocnum; Gnum fldvertlocadj; for (fldvertlocnum = orggrafptr->s.baseval, fldvertlocadj = orggrafptr->s.procvrttab[orggrafptr->s.proclocnum]; fldvertlocnum < orgvertlocnnd; fldvertlocnum ++) fldgrafptr->s.vnumloctax[fldvertlocnum] = fldvertlocadj ++; } memCpy (fldgrafptr->s.vertloctax + orggrafptr->s.baseval, /* Copy local part of vertex arrays, since they are compact */ orggrafptr->s.vertloctax + orggrafptr->s.baseval, orgvertlocnbr * sizeof (Gnum)); /* Last value not copied */ fldgrafptr->s.vertloctax[fldvertlocnbr + orggrafptr->s.baseval] = fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval; memCpy (fldgrafptr->s.vendloctax + orggrafptr->s.baseval, orggrafptr->s.vendloctax + orggrafptr->s.baseval, orgvertlocnbr * sizeof (Gnum)); for (i = 0; i < commnbr; i ++) { int j; if (MPI_Waitany (commnbr, &requtab[HDGRAPHFOLDTAGVERT * commmax], &j, MPI_STATUS_IGNORE) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (14)"); cheklocval = 1; } else { /* Adjust first remote part of vertex array */ Gnum fldvertlocnum; Gnum fldvertlocnnd; Gnum fldvertlocadj; Gnum * restrict const fldvertloctax = fldgrafptr->s.vertloctax; fldvertlocnum = fldvertidxtab[j]; fldvertlocadj = fldedgeidxtab[j] - fldgrafptr->s.vertloctax[fldvertlocnum]; fldvendidxtab[j] = fldvertlocadj; /* Record updated adjust value for vendloctab pass */ for (fldvertlocnnd = fldvertlocnum + fldcommdattab[j].vertnbr; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvertloctax[fldvertlocnum] += fldvertlocadj; } } for (i = 0; i < commnbr; i ++) { int j; if (MPI_Waitany (commnbr, &requtab[HDGRAPHFOLDTAGVEND * commmax], &j, MPI_STATUS_IGNORE) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (15)"); cheklocval = 1; } else { /* Adjust first remote part of vertex array */ Gnum fldvendlocnum; Gnum fldvendlocnnd; Gnum fldvendlocadj; Gnum * restrict const fldvendloctax = fldgrafptr->s.vendloctax; fldvendlocnum = fldvertidxtab[j]; fldvendlocadj = fldvendidxtab[j]; /* Get updated adjust from above vertloctab pass */ for (fldvendlocnnd = fldvendlocnum + fldcommdattab[j].vertnbr; fldvendlocnum < fldvendlocnnd; fldvendlocnum ++) fldvendloctax[fldvendlocnum] += fldvendlocadj; } } for (i = 0; i < commnbr; i ++) { MPI_Status statdat; int j; if (MPI_Waitany (commnbr, &requtab[HDGRAPHFOLDTAGEDGE * commmax], &j, &statdat) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (16)"); cheklocval = 1; } else if (cheklocval == 0) { /* Adjust remote part(s) of edge array */ Gnum orgvertlocmin; Gnum orgvertlocmax; Gnum fldvertlocnum; Gnum fldvertlocnnd; Gnum fldvertlocadj; Gnum fldvhallocmax; /* Maximum current size of halo vertex array */ int procngbmin; int procngbmax; Gnum * restrict const fldvertloctax = fldgrafptr->s.vertloctax; Gnum * restrict const fldvendloctax = fldgrafptr->s.vendloctax; Gnum * restrict const fldedgeloctax = fldgrafptr->s.edgeloctax; #ifdef SCOTCH_DEBUG_HDGRAPH2 int fldedgercvnbr; MPI_Get_count (&statdat, GNUM_MPI, &fldedgercvnbr); if (fldedgercvnbr != fldedgecnttab[j]) { errorPrint ("hdgraphFold2: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ for (procngbmin = 0, procngbmax = fldvertadjnbr; /* Initialize search accelerator */ procngbmax - procngbmin > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbmin) / 2; if (fldvertadjtab[procngbmed] <= fldcommvrttab[j]) procngbmin = procngbmed; else procngbmax = procngbmed; } orgvertlocmin = fldvertadjtab[procngbmin]; orgvertlocmax = fldvertadjtab[procngbmax]; fldvertlocadj = fldvertdlttab[procngbmin]; fldvhallocmax = orggrafptr->s.baseval - 1; /* Reset halo vertex array for each remote part */ for (fldvertlocnum = fldvertidxtab[j], fldedgelocnum = fldedgeidxtab[j], /* Update received part of edge array */ fldvertlocnnd = fldvertlocnum + fldcommdattab[j].vertnbr; fldvertlocnum < fldvertlocnnd; ) { for ( ; fldedgelocnum < fldvendloctax[fldvertlocnum]; fldedgelocnum ++) { /* Reorder end vertices */ Gnum orgvertlocend; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval)) { errorPrint ("hdgraphFold2: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ orgvertlocend = fldedgeloctax[fldedgelocnum]; if ((orgvertlocend >= orgvertlocmin) && /* If end vertex is local */ (orgvertlocend < orgvertlocmax)) fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertlocadj; else { int procngbnum; int procngbmax; for (procngbnum = 0, procngbmax = fldvertadjnbr; procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fldvertadjtab[procngbmed] <= orgvertlocend) procngbnum = procngbmed; else procngbmax = procngbmed; } fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertdlttab[procngbnum]; } } fldvertlocnum ++; fldehallocnbr += fldvertloctax[fldvertlocnum] - fldedgelocnum; for ( ; fldedgelocnum < fldvertloctax[fldvertlocnum]; fldedgelocnum ++) { /* Renumber halo part */ Gnum orgverthalend; Gnum fldvhallocend; orgverthalend = fldedgeloctax[fldedgelocnum]; #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orgverthalend < orggrafptr->s.baseval) || (orgverthalend >= (orggrafptr->s.edgeglbsmx + orggrafptr->s.baseval)) || (fldedgelocnum >= (fldgrafptr->s.edgelocsiz + orggrafptr->s.baseval))) { errorPrint ("hdgraphFold2: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ while (fldvhallocmax < orgverthalend) /* Expand halo vertex index array whenever necessary */ fldvhalloctax[++ fldvhallocmax] = ~0; fldvhallocend = fldvhalloctax[orgverthalend]; /* Get renumbered halo vertex */ if (fldvhallocend < 0) { /* If new halo vertex not yet given */ fldvhallocend = /* Allocate it */ fldvhalloctax[orgverthalend] = fldvhallocnum ++; } fldedgeloctax[fldedgelocnum] = fldvhallocend; } } } } if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver, edge arrays may have been oversized */ fldgrafptr->s.edgeloctax = memRealloc (fldgrafptr->s.edgeloctax + orggrafptr->s.baseval, fldgrafptr->s.edgelocsiz * sizeof (Gnum)); fldgrafptr->s.edgeloctax -= orggrafptr->s.baseval; } fldgrafptr->vhallocnbr = fldvhallocnum - orggrafptr->s.baseval; fldgrafptr->vhndloctax = fldgrafptr->s.vertloctax + 1; /* Compact edge array with halo vertices */ fldgrafptr->ehallocnbr = fldehallocnbr; fldgrafptr->levlnum = orggrafptr->levlnum; /* Folded graph is of same level */ if (orggrafptr->s.veloloctax == NULL) /* If no vertex loads, reset graph vertex load to number of vertices */ fldvelolocsum = fldvertlocnbr; else { /* Graph has vertex loads and load of local part has already been computed */ for (i = 0; i < commnbr; i ++) { int j; if (MPI_Waitany (commnbr, &requtab[HDGRAPHFOLDTAGVELO * commmax], &j, MPI_STATUS_IGNORE) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (17)"); cheklocval = 1; } else if (cheklocval == 0) { /* Accumulate vertex loads for received vertex load array */ Gnum fldvertlocnum; Gnum fldvertlocnnd; for (fldvertlocnum = fldvertidxtab[j], fldvertlocnnd = fldvertlocnum + fldcommdattab[j].vertnbr; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvelolocsum += fldgrafptr->s.veloloctax[fldvertlocnum]; } } } fldgrafptr->s.baseval = orggrafptr->s.baseval; fldgrafptr->s.vertlocnbr = fldvertlocnbr; fldgrafptr->s.vertlocnnd = fldvertlocnbr + orggrafptr->s.baseval; fldgrafptr->s.velolocsum = fldvelolocsum; fldgrafptr->s.edgelocnbr = fldgrafptr->s.edgelocsiz - fldehallocnbr; fldgrafptr->s.degrglbmax = orggrafptr->s.degrglbmax; if (dgraphBuild4 (&fldgrafptr->s) != 0) { errorPrint ("hdgraphFold2: cannot build folded graph"); hdgraphExit (fldgrafptr); return (1); } #ifdef SCOTCH_DEBUG_HDGRAPH2 if (hdgraphCheck (fldgrafptr) != 0) { /* Check graph consistency; vnumloctab is not checked so no need to wait for it */ errorPrint ("hdgraphFold2: internal error (9)"); hdgraphExit (fldgrafptr); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ } memFree (fldcommdattab); /* Free group leader */ if (MPI_Waitall (requnbr, requtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for all graph data to arrive because graph could be freed afterwards */ errorPrint ("hdgraphFold2: communication error (18)"); cheklocval = 1; } memFree (fldvertidxtab); /* Free group leader including request array */ #ifdef SCOTCH_DEBUG_HDGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, orggrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphFold2: communication error (19)"); chekglbval = 1; } #else /* SCOTCH_DEBUG_HDGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_HDGRAPH1 */ return (chekglbval); } scotch_6.0.9/src/libscotch/library_dgraph_order_perm.c0000644000302600021200000000707313560013261023375 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_perm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted ordering permutation building **/ /** routine of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 18 oct 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed ordering */ /* handling routines. */ /* */ /************************************/ /*+ This routine fills the given distributed *** permutation array with the permutation *** stored in the given distributed ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderPerm ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Computed ordering +*/ SCOTCH_Num * const permloctab) /*+ Direct permutation +*/ { return (dorderPerm ((Dorder *) ordeptr, (Dgraph *) grafptr, permloctab)); } scotch_6.0.9/src/libscotch/arch.c0000644000302600021200000004134413560005302017077 0ustar pelegrinpelegrin/* Copyright 2004,2007-2013,2015,2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the generic target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 16 aug 1995 **/ /** # Version 3.1 : from : 02 may 1996 **/ /** to 17 jul 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 28 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 08 nov 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 04 nov 2003 **/ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 11 dec 2007 **/ /** to 25 jun 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "arch_cmplt.h" #include "arch_cmpltw.h" #include "arch_deco.h" #include "arch_deco2.h" #include "arch_dist.h" #include "arch_hcub.h" #include "arch_mesh.h" #include "arch_sub.h" #include "arch_tleaf.h" #include "arch_torus.h" #include "arch_vcmplt.h" #include "arch_vhcub.h" /* ** The static definitions. */ static const ArchClass archClassTab[] = { ARCHCLASSBLOCK ("cmplt", Cmplt, ARCHPART), ARCHCLASSBLOCK ("cmpltw", Cmpltw, ARCHPART), ARCHCLASSBLOCK ("deco", Deco, ARCHNONE), ARCHCLASSBLOCK ("deco", Deco2, ARCHNONE), /* Hidden, type-2 decomposition-defined architecture */ ARCHCLASSBLOCK ("dist", Dist, ARCHNONE), ARCHCLASSBLOCK ("hcub", Hcub, ARCHNONE), ARCHCLASSBLOCK ("tleaf", Tleaf, ARCHNONE), ARCHCLASSBLOCK ("ltleaf", Ltleaf, ARCHNONE), ARCHCLASSBLOCK ("mesh2D", Mesh2, ARCHNONE), #ifdef SCOTCH_DEBUG_ARCH3 ARCHCLASSBLOCK ("mesh2O", Mesh2o, ARCHNONE), ARCHCLASSBLOCK ("mesh2U", Mesh2u, ARCHNONE), #endif /* SCOTCH_DEBUG_ARCH3 */ ARCHCLASSBLOCK ("mesh3D", Mesh3, ARCHNONE), ARCHCLASSBLOCK ("meshXD", MeshX, ARCHNONE), ARCHCLASSBLOCK ("sub", Sub, ARCHNONE), ARCHCLASSBLOCK ("torus2D", Torus2, ARCHNONE), ARCHCLASSBLOCK ("torus3D", Torus3, ARCHNONE), ARCHCLASSBLOCK ("torusXD", TorusX, ARCHNONE), ARCHCLASSBLOCK ("varcmplt", Vcmplt, ARCHPART | ARCHVAR), ARCHCLASSBLOCK ("varhcub", Vhcub, ARCHVAR), ARCHCLASSBLOCKNULL }; /**************************************/ /* */ /* These are the entry points for the */ /* generic architecture routines. */ /* */ /**************************************/ /* This routine initializes an architecture structure. ** It zeroes the architecture body so that architecture ** specific routines can check if their pointers have ** been initialized or not. ** It returns: ** - !NULL : pointer to the target architecture. ** - NULL : on error. */ int archInit ( Arch * restrict const archptr) { memSet (archptr, 0, sizeof (Arch)); /* Initialize architecture body (arch->class = NULL) */ return (0); } /* This routine deletes an architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archExit ( Arch * restrict const archptr) { return (archFree (archptr)); /* Free architecture data */ } /* This routine frees the architecture data. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archFree ( Arch * restrict const archptr) { int o; o = 0; /* Assume everything will be all right */ if ((archptr->class != NULL) && (archptr->class->archFree != NULL)) /* If there is a specific freeing routine */ o = archptr->class->archFree (&archptr->data); /* Call it */ #ifdef SCOTCH_DEBUG_GRAPH2 memSet (archptr, ~0, sizeof (Arch)); /* Purge graph fields */ #endif /* SCOTCH_DEBUG_GRAPH2 */ return (o); } /* This routine loads an architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archLoad ( Arch * restrict const archptr, FILE * const stream) { const ArchClass * restrict class; /* Pointer to architecture class */ char name[256]; /* Architecture name string */ if (fscanf (stream, "%255s", name) != 1) { /* Read architecture name */ errorPrint ("archLoad: cannot load architecture type"); return (1); } name[255] = '\0'; /* Set end of string */ if ((class = archClass (name)) == NULL) { /* Get class from its name */ errorPrint ("archLoad: invalid architecture type"); return (1); } archptr->class = class; /* Set architecture class */ archptr->flagval = archptr->class->flagval | ARCHFREE; /* Copy architecture flag before it can be modified and set freeing flag */ if (class->archLoad != NULL) { /* If class has loading function */ if (class->archLoad (&archptr->data, stream) != 0) { /* Load class data */ errorPrint ("archLoad: cannot load architecture data"); class->archFree (&archptr->data); /* Perform clean-up */ memSet (archptr, 0, sizeof (Arch)); /* Initialize architecture body */ return (1); } } return (0); } /* This routine saves an architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archSave ( const Arch * restrict const archptr, FILE * restrict const stream) { int o; if (archptr->class == NULL) /* If no architecture type defined */ return (0); /* Nothing to do */ o = (fprintf (stream, "%s\n", /* Write architecture class */ archptr->class->archname) == EOF); if (archptr->class->archSave != NULL) /* If class has saving function */ o |= archptr->class->archSave (&archptr->data, stream); /* Write architecture data */ if (o != 0) errorPrint ("archSave: bad output"); return (o); } /* This routine returns the pointer to ** the class of a given architecture ** name. ** It returns: ** - !NULL : class pointer. ** - NULL : on error. */ const ArchClass * archClass ( const char * const name) { return (archClass2 (name, 0)); /* Get first instance of class name */ } const ArchClass * archClass2 ( const char * const name, const int num) { const ArchClass * restrict class; /* Pointer to architecture class */ for (class = archClassTab; class->archname != NULL; class ++) { /* For all classes */ if (strcasecmp (name, class->archname) == 0) /* If class names matches */ return (class + num); /* Return proper class */ } return (NULL); /* Class not found */ } /**************************************/ /* */ /* These are the entry points for the */ /* generic domain routines. They are */ /* used only in debugging mode, to */ /* provide breakpoints for routines */ /* which are else implemented as */ /* macros for the sake of efficiency. */ /* */ /**************************************/ /* This function returns the smallest number ** of terminal domain included within the ** given domain. */ #ifdef SCOTCH_DEBUG_ARCH2 ArchDomNum archDomNum ( const Arch * const archptr, const ArchDom * const domnptr) { return (archDomNum2 (archptr, domnptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function computes the terminal domain ** associated with the given terminal number. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 int archDomTerm ( const Arch * const archptr, ArchDom * restrict const domnptr, const ArchDomNum domnnum) { return (archDomTerm2 (archptr, domnptr, domnnum)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function returns the number ** of elements in the given domain. ** It returns: ** - >0 : size of the domain. ** - 0 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 Anum archDomSize ( const Arch * const archptr, const ArchDom * const domnptr) { return (archDomSize2 (archptr, domnptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function returns the weight ** of the given domain. ** It returns: ** - >0 : weight of the domain. ** - 0 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 Anum archDomWght ( const Arch * const archptr, const ArchDom * const domnptr) { return (archDomWght2 (archptr, domnptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function gives the average ** distance between two domains. ** It returns: ** - !-1 : distance between subdomains. ** - -1 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 Anum archDomDist ( const Arch * const archptr, const ArchDom * const dom0ptr, const ArchDom * const dom1ptr) { return (archDomDist2 (archptr, dom0ptr, dom1ptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function sets the biggest ** available domain for the given ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 int archDomFrst ( const Arch * const archptr, ArchDom * const domnptr) { return (archDomFrst2 (archptr, domnptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDomLoad ( const Arch * const archptr, ArchDom * const domnptr, FILE * const stream) { return (archptr->class->domLoad (&archptr->data, /* Call proper routine */ &domnptr->data, stream)); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDomSave ( const Arch * const archptr, const ArchDom * const domnptr, FILE * const stream) { return (archptr->class->domSave (&archptr->data, /* Call proper routine */ &domnptr->data, stream)); } /* This function tries to split a domain into ** two subdomains. The two subdomains are created ** so that subdomain 0 has same T_domNum as ** original domain. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 int archDomBipart ( const Arch * const archptr, const ArchDom * const domnptr, ArchDom * const dom0ptr, ArchDom * const dom1ptr) { return (archDomBipart2 (archptr, domnptr, dom0ptr, dom1ptr)); /* Call proper routine */ } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ #ifdef SCOTCH_DEBUG_ARCH2 int archDomIncl ( const Arch * const archptr, const ArchDom * const dom0ptr, const ArchDom * const dom1ptr) { return archDomIncl2 (archptr, dom0ptr, dom1ptr); } #endif /* SCOTCH_DEBUG_ARCH2 */ /* This function creates the MPI_Datatype for ** complete graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archDomMpiType ( const Arch * const archptr, MPI_Datatype * const typeptr) { int bloktab[2]; MPI_Aint disptab[2]; MPI_Datatype typetab[2]; int o; bloktab[0] = /* Build structured type to set up upper bound of domain datatype */ bloktab[1] = 1; disptab[0] = 0; /* Displacement of real datatype is base of array */ disptab[1] = sizeof (ArchDom); /* Displacement of upper bound is size of ArchDom */ typetab[1] = MPI_UB; o = ((int (*) (const void * const, const void * const)) archptr->class->domMpiType) ((const void * const) &archptr->data, &typetab[0]); if (o == 0) o = (MPI_Type_struct (2, bloktab, disptab, typetab, typeptr) != MPI_SUCCESS); if (o == 0) o = (MPI_Type_commit (typeptr) != MPI_SUCCESS); /* Created MPI types have to be committed */ return (o); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/common_file_compress.h0000644000302600021200000001202113560005430022361 0ustar pelegrinpelegrin/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_file_compress.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the file (de)compression routines. **/ /** **/ /** DATES : # Version 5.0 : from : 12 mar 2008 **/ /** to 17 mar 2008 **/ /** # Version 6.0 : from : 08 jul 2018 **/ /** to 14 jul 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /* Buffer size. */ #define FILECOMPRESSDATASIZE (128 * 1024) /* Size of (un)compressing buffers */ /* Available types of (un)compression. */ typedef enum FileCompressType_ { FILECOMPRESSTYPENOTIMPL = -1, /* Error code */ FILECOMPRESSTYPENONE = 0, /* No compression */ FILECOMPRESSTYPEBZ2, FILECOMPRESSTYPEGZ, FILECOMPRESSTYPELZMA } FileCompressType; /* (Un)compression type slot. */ typedef struct FileCompressTab_ { char * name; /* File extension name */ FileCompressType type; /* (Un)compression type */ } FileCompressTab; /* ** The type and structure definitions. */ typedef struct FileCompress_ { FileCompressType typeval; /*+ Type of (un)compression +*/ int infdnum; /*+ Inner file handle (pipe end) +*/ FILE * oustptr; /*+ Outer stream +*/ byte * bufftab; /*+ Data buffer +*/ #ifdef COMMON_PTHREAD_FILE pthread_t thrdval; /*+ Spawned thread ID +*/ #else /* COMMON_PTHREAD_FILE */ int procval; /*+ Forked process ID +*/ #endif /* COMMON_PTHREAD_FILE */ } FileCompress; /* ** The function prototypes. */ #ifdef COMMON_FILE_COMPRESS_BZ2 #ifdef COMMON_FILE_COMPRESS static void fileCompressBz2 (FileCompress * const dataptr); #endif /* COMMON_FILE_COMPRESS */ #ifdef COMMON_FILE_DECOMPRESS static void fileDecompressBz2 (FileCompress * const dataptr); #endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_Bz2 */ #ifdef COMMON_FILE_COMPRESS_GZ #ifdef COMMON_FILE_COMPRESS static void fileCompressGz (FileCompress * const dataptr); #endif /* COMMON_FILE_COMPRESS */ #ifdef COMMON_FILE_DECOMPRESS static void fileDecompressGz (FileCompress * const dataptr); #endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA #ifdef COMMON_FILE_COMPRESS static void fileCompressLzma (FileCompress * const dataptr); #endif /* COMMON_FILE_COMPRESS */ #ifdef COMMON_FILE_DECOMPRESS static void fileDecompressLzma (FileCompress * const dataptr); #endif /* COMMON_FILE_DECOMPRESS */ #endif /* COMMON_FILE_COMPRESS_LZMA */ scotch_6.0.9/src/libscotch/mesh_induce_sepa.c0000644000302600021200000004672713560013524021474 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_induce_sepa.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source **/ /** mesh separator subgraph-making **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 26 jan 2003 **/ /** to 11 may 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 03 apr 2008 **/ /** **/ /** NOTES : # This routine differs from the **/ /** standard mesh induction routine by **/ /** the fact that neighboring elements do **/ /** not bear the same part number as the **/ /** vertices to keep and are found on the **/ /** fly. **/ /** **/ /** # This routine is used in hmeshInduce- **/ /** Nd to build the induced separator **/ /** mesh. **/ /** Since separator vertices are likely **/ /** to be surrounded by elements that **/ /** belong to different parts but connect **/ /** the same vertices in the separator, **/ /** a simple detection mechanism is used **/ /** to try to reduce the number of such **/ /** redundant elements. **/ /** Also, since this mesh is to be **/ /** ordered with the highest available **/ /** numbers, halo is not really needed **/ /** so this "mesh*" routine is used. If **/ /** halo was needed, a "hmesh*" routine **/ /** should be used instead. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH #define MESH_INDUCE_SEPA #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "mesh_induce_sepa.h" /***************************************/ /* */ /* This routine handles source meshes. */ /* */ /***************************************/ /* This routine builds the separator mesh ** induced by the original mesh, the list of ** selected separator node vertices, and the ** vertex part array. Elements which are ** adjacent to the selected nodes are themselves ** selected. ** The induced vnumtab array is the baseval-based ** list of remaining node vertices if the original ** mesh does not have a vnumtab, or the proper ** subset of the original vnumtab else. ** This routine builds a mesh with nodes first ** and elements last. If a halo version of this ** algorithm had to be created, it should be ** re-worked such that elements are put first ** and nodes last, to enforce the structure of ** halo meshes. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int meshInduceSepa ( const Mesh * restrict const orgmeshptr, /* Pointer to original mesh */ const GraphPart * restrict const orgparttax, /* Array of vertex partition flags */ const Gnum orgsepanbr, /* Number of node vertices in separator */ const Gnum * restrict const orgsepatab, /* Array of node indices */ Mesh * restrict const indmeshptr) /* Pointer to induced submesh */ { Gnum orgvertnbr; /* Number of vertices in original mesh */ Gnum orgbitssiz; /* Size of int array holding as many bits as element vertices */ unsigned int * restrict orgbitstab; /* Array of bit flags for mesh elements */ Gnum indvnumnum; /* Current vertex number index in separator node list */ Gnum * restrict indvneltax; /* Array of original numbers for induced elements */ Gnum indvelmnbr; /* (Approximate) number of element vertices in induced mesh */ Gnum indvertnbr; /* (Approximate) number of vertices in induced mesh */ Gnum indvnodnum; /* Number of current node vertex in induced mesh */ Gnum indvnlosum; /* Sum of node vertex load array */ Gnum indvelmnum; /* Number of current element vertex in induced mesh */ Gnum * restrict indedgetax; /* Based array to edge array of induced mesh */ Gnum indedgenum; /* Number of current edge to be created in induced mesh */ Gnum indedgenbr; /* (Approximate) number of edges in induced mesh graph */ Gnum * restrict orgindxtax; /* Original to induced vertex number translation */ MeshInduceSepaHash * restrict hashtab; /* Node hash array */ Gnum hashmsk; /* Mask for hash array */ void * restrict p; orgbitssiz = (orgmeshptr->velmnbr + (INTSIZEBITS - 1)) / INTSIZEBITS; /* Compute size of element bit array */ if ((orgbitstab = (unsigned int *) memAlloc (orgbitssiz * sizeof (unsigned int))) == NULL) { errorPrint ("meshInduceSepa: out of memory (1)"); return (1); } memSet (orgbitstab, ~0, orgbitssiz * sizeof (unsigned int)); for (indvnumnum = 0, indvelmnbr = 0, indedgenbr = 0; /* For all separator nodes in list */ indvnumnum < orgsepanbr; indvnumnum ++) { Gnum orgvnodnum; /* Number of current node in original mesh */ Gnum orgenodnum; orgvnodnum = orgsepatab[indvnumnum]; /* Get number of separator node */ for (orgenodnum = orgmeshptr->verttax[orgvnodnum], indedgenbr += (orgmeshptr->vendtax[orgvnodnum] - orgenodnum); orgenodnum < orgmeshptr->vendtax[orgvnodnum]; orgenodnum ++) { Gnum orgvelmidx; /* Index of incident element in bit array */ Gnum orgvelmbit; /* Bit to update in element bit array */ orgvelmidx = orgmeshptr->edgetax[orgenodnum] - orgmeshptr->velmbas; orgvelmbit = orgvelmidx & (INTSIZEBITS - 1); orgvelmidx /= INTSIZEBITS; indvelmnbr += (orgbitstab[orgvelmidx] >> orgvelmbit) & 1; /* Count element vertex if not yet accounted for */ orgbitstab[orgvelmidx] &= ~(1 << orgvelmbit); } } indedgenbr *= 2; /* Number of arcs is twice number of edges */ memFree (orgbitstab); memSet (indmeshptr, 0, sizeof (Mesh)); /* Initialize mesh fields */ indmeshptr->baseval = orgmeshptr->baseval; indmeshptr->flagval = MESHFREETABS | MESHVERTGROUP; indmeshptr->vnodnbr = orgsepanbr; /* Nodes first */ indmeshptr->vnodbas = indmeshptr->baseval; indmeshptr->vnodnnd = indmeshptr->velmbas = orgsepanbr + indmeshptr->baseval; /* Elements last */ indmeshptr->veisnbr = 0; /* No isolated elements */ for (hashmsk = 15; hashmsk < orgmeshptr->degrmax; hashmsk = hashmsk * 2 + 1) ; hashmsk = hashmsk * 4 + 3; /* Compute size of node hash table */ indvertnbr = indvelmnbr + orgsepanbr; /* Upper bound on number of all vertices */ if (orgmeshptr->velotax != NULL) { p = memAllocGroup ((void **) (void *) &indmeshptr->verttax, (size_t) (indvertnbr * sizeof (Gnum)), /* verttab is not compact */ &indmeshptr->vendtax, (size_t) (indvertnbr * sizeof (Gnum)), &indmeshptr->vnumtax, (size_t) (orgsepanbr * sizeof (Gnum)), /* vnumtab is of size indnodenbr */ &indmeshptr->velotax, (size_t) (orgsepanbr * sizeof (Gnum)), NULL); /* Element vertices assumed not weighted */ indmeshptr->velotax -= indmeshptr->vnodbas; } else p = memAllocGroup ((void **) (void *) &indmeshptr->verttax, (size_t) (indvertnbr * sizeof (Gnum)), &indmeshptr->vendtax, (size_t) (indvertnbr * sizeof (Gnum)), &indmeshptr->vnumtax, (size_t) (orgsepanbr * sizeof (Gnum)), NULL); /* vnumtab is of size indnodenbr */ orgvertnbr = orgmeshptr->velmnbr + orgmeshptr->vnodnbr; if (p != 0) { indmeshptr->verttax -= indmeshptr->baseval; indmeshptr->vendtax -= indmeshptr->baseval; indmeshptr->vnumtax -= indmeshptr->vnodbas; /* vnumtab is of size indmeshptr->vnodnbr */ p = memAllocGroup ((void **) (void *) &indedgetax, (size_t) (indedgenbr * sizeof (Gnum)), &indvneltax, (size_t) (indvelmnbr * sizeof (Gnum)), &orgindxtax, (size_t) (orgvertnbr * sizeof (Gnum)), &hashtab, (size_t) ((hashmsk + 1) * sizeof (MeshInduceSepaHash)), NULL); } if (p == 0) { errorPrint ("meshInduceSepa: out of memory (2)"); /* Allocate induced mesh graph structure */ return (1); } memSet (orgindxtax, ~0, orgvertnbr * sizeof (Gnum)); memSet (hashtab, ~0, (hashmsk + 1) * sizeof (MeshInduceSepaHash)); indedgetax -= indmeshptr->baseval; indvneltax -= indmeshptr->velmbas; orgindxtax -= orgmeshptr->baseval; for (indvnumnum = 0, indvnodnum = indedgenum = indmeshptr->baseval, indvelmnum = orgsepanbr + indvnodnum, indedgenbr = 0, indvnlosum = 0; indvnumnum < orgsepanbr; indvnumnum ++) { /* For all node vertices in separator */ Gnum orgvnodnum; /* Number of current node in original mesh */ Gnum orgenodnum; Gnum indenodnum; /* Current index in node edge sub-array */ orgvnodnum = orgsepatab[indvnumnum]; /* Get number of separator node */ if (orgindxtax[orgvnodnum] == ~0) /* If separator node not yet numbered */ orgindxtax[orgvnodnum] = indvnodnum ++; /* One more node vertex created */ indmeshptr->verttax[orgindxtax[orgvnodnum]] = indedgenum; /* Set beginning of edge sub-array */ indmeshptr->vnumtax[orgindxtax[orgvnodnum]] = orgvnodnum - (orgmeshptr->vnodbas - orgmeshptr->baseval); if (indmeshptr->velotax != NULL) { Gnum indvnloval; indvnloval = orgmeshptr->velotax[orgvnodnum]; indvnlosum += indvnloval; indmeshptr->velotax[orgindxtax[orgvnodnum]] = indvnloval; } indenodnum = indedgenum; /* Record position of node edge sub-array */ indedgenum += orgmeshptr->vendtax[orgvnodnum] - /* Reserve space for node edges */ orgmeshptr->verttax[orgvnodnum]; for (orgenodnum = orgmeshptr->verttax[orgvnodnum]; /* For all element vertices neighboring the separator node */ orgenodnum < orgmeshptr->vendtax[orgvnodnum]; orgenodnum ++) { Gnum orgvelmnum; /* Number of element node in original mesh */ orgvelmnum = orgmeshptr->edgetax[orgenodnum]; /* Get number of element */ if (orgindxtax[orgvelmnum] == -2) /* If discarded element */ continue; /* Skip to next element */ if (orgindxtax[orgvelmnum] == ~0) { /* If element not yet created */ Gnum indedgetmp; /* Save value for edge index */ Gnum orgeelmnum; Gnum indenodtmp; indmeshptr->verttax[indvelmnum] = indedgenum; /* Set beginning of element edge sub-array */ indedgetmp = indedgenum; for (orgeelmnum = orgmeshptr->verttax[orgvelmnum]; /* For all nodes neighboring the element vertex */ orgeelmnum < orgmeshptr->vendtax[orgvelmnum]; orgeelmnum ++) { Gnum orgvnodend; /* Number of current end node vertex in original mesh */ orgvnodend = orgmeshptr->edgetax[orgeelmnum]; /* Get number of end node */ if (orgparttax[orgvnodend] == 2) { /* If end node is in separator */ Gnum hashnum; if (orgindxtax[orgvnodend] == ~0) /* If end node not yet numbered */ orgindxtax[orgvnodend] = indvnodnum ++; /* Assign number to end node */ indedgetax[indedgenum ++] = orgindxtax[orgvnodend]; /* Add node to element edge sub-array */ for (hashnum = (orgindxtax[orgvnodend] * MESHINDUCESEPAHASHPRIME) & hashmsk; hashtab[hashnum].orgvelmnum == orgvelmnum; hashnum = (hashnum + 1) & hashmsk) ; hashtab[hashnum].orgvelmnum = orgvelmnum; /* Add vertex to hash table */ hashtab[hashnum].indvnodnum = orgindxtax[orgvnodend]; } } indmeshptr->vendtax[indvelmnum] = indedgenum; /* Set end of element edge sub-array */ for (indenodtmp = indenodnum - 1; indenodtmp >= indmeshptr->verttax[orgindxtax[orgvnodnum]]; indenodtmp --) { Gnum indvelmtmp; /* Number of current already declared element for current node */ Gnum indeelmtmp; /* Number of current edge of already declared element for current node */ Gnum mtchnbr; /* Number of matches between new element and current element */ indvelmtmp = indedgetax[indenodtmp]; for (indeelmtmp = indmeshptr->verttax[indvelmtmp], mtchnbr = 0; indeelmtmp < indmeshptr->vendtax[indvelmtmp]; indeelmtmp ++) { Gnum indvnodend; Gnum hashnum; indvnodend = indedgetax[indeelmtmp]; /* Get number of current end node of already declared element */ for (hashnum = (indvnodend * MESHINDUCESEPAHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].orgvelmnum != orgvelmnum) /* If end node not present */ break; if (hashtab[hashnum].indvnodnum == indvnodend) { /* If end node found */ mtchnbr ++; /* One more matching node */ break; } } } if (mtchnbr == (indedgenum - indmeshptr->verttax[indvelmnum])) { /* If we are useless */ orgindxtax[orgvelmnum] = -2; /* Never consider this element again */ indedgenum = indedgetmp; /* Recycle edge sub-array of new element */ break; /* No need to go any further */ } if (mtchnbr == (indmeshptr->vendtax[indvelmtmp] - indmeshptr->verttax[indvelmtmp])) { /* If other element is useless */ indedgenbr -= mtchnbr; /* Remove its edges */ indmeshptr->verttax[indvelmtmp] = indmeshptr->verttax[indvelmnum]; /* Recycle it into our element */ indmeshptr->vendtax[indvelmtmp] = indmeshptr->vendtax[indvelmnum]; orgindxtax[indvneltax[indvelmtmp]] = -2; indvneltax[indvelmtmp] = orgvelmnum; } } if (indenodtmp < indmeshptr->verttax[orgindxtax[orgvnodnum]]) { /* If new element distinct from all other neighboring elements */ indedgetax[indenodnum ++] = indvelmnum; /* Record element in edge sub-array of current node */ indedgenbr += indedgenum - indmeshptr->verttax[indvelmnum]; indvneltax[indvelmnum] = orgvelmnum; /* Record original number of element in case we have to remove it afterwards */ orgindxtax[orgvelmnum] = indvelmnum ++; } } else /* Element already exists */ indedgetax[indenodnum ++] = orgindxtax[orgvelmnum]; /* Record element in edge sub-array of current node */ } indmeshptr->vendtax[orgindxtax[orgvnodnum]] = indenodnum; /* Set end of edge sub-array for current node */ indedgenbr += (indenodnum - indmeshptr->verttax[orgindxtax[orgvnodnum]]); /* Account for thes edges */ } #ifdef SCOTCH_DEBUG_MESH2 if (indvnodnum != (orgsepanbr + indmeshptr->baseval)) { errorPrint ("meshInduceSepa: internal error"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ indmeshptr->velmnbr = indvelmnum - indmeshptr->velmbas; indmeshptr->velmnnd = indvelmnum; indmeshptr->edgenbr = indedgenbr; if ((indmeshptr->edgetax = (Gnum *) memRealloc (indedgetax + indmeshptr->baseval, (indedgenum - indmeshptr->baseval) * sizeof (Gnum))) == NULL) { errorPrint ("meshInduceSepa: out of memory (3)"); memFree (indedgetax + indmeshptr->baseval); /* Free group leader */ meshFree (indmeshptr); return (1); } indmeshptr->edgetax -= indmeshptr->baseval; indmeshptr->velosum = indmeshptr->velmnbr; /* TODO: account for element weights */ indmeshptr->vnlosum = (indmeshptr->velotax == NULL) ? orgsepanbr : indvnlosum; indmeshptr->degrmax = orgmeshptr->degrmax; /* Rough estimate */ if (orgmeshptr->vnumtax != NULL) { /* If mesh is a submesh */ for (indvnodnum = indmeshptr->vnodbas; indvnodnum < indmeshptr->vnodnnd; indvnodnum ++) indmeshptr->vnumtax[indvnodnum] = orgmeshptr->vnumtax[indmeshptr->vnumtax[indvnodnum] + (orgmeshptr->vnodbas - orgmeshptr->baseval)]; } return (0); } scotch_6.0.9/src/libscotch/bgraph_bipart_ml.h0000644000302600021200000001044713560005346021473 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_ml.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Luca SCARANO (v3.1) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the multi-level graph bipartitio- **/ /** ning routines. **/ /** **/ /** DATES : # Version 3.1 : from : 24 oct 1995 **/ /** to 03 jul 1996 **/ /** # Version 3.2 : from : 20 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 12 dec 2003 **/ /** to 20 mar 2005 **/ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 13 jul 2010 **/ /** # Version 6.0 : from : 16 apr 2011 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BgraphBipartMlParam_ { INT coarnbr; /*+ Minimum number of vertices +*/ double coarrat; /*+ Coarsening ratio +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ } BgraphBipartMlParam; /* ** The function prototypes. */ #ifdef BGRAPH_BIPART_ML static int bgraphBipartMlCoarsen (const Bgraph * const, Bgraph * restrict const, GraphCoarsenMulti * restrict * const, const BgraphBipartMlParam * const); static int bgraphBipartMlUncoarsen (Bgraph * restrict const, const Bgraph * restrict const, const GraphCoarsenMulti * const); static int bgraphBipartMl2 (Bgraph * restrict const, const BgraphBipartMlParam * const); #endif /* BGRAPH_BIPART_ML */ int bgraphBipartMl (Bgraph * restrict const, const BgraphBipartMlParam * const); scotch_6.0.9/src/libscotch/mesh_io.h0000644000302600021200000000547013465315041017622 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_io.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph input/output **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 14 nov 2002 **/ /** to 14 nov 2002 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int meshLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * const, const Gnum, const Gnum * const); scotch_6.0.9/src/libscotch/kdgraph_gather.c0000644000302600021200000000705013560013072021133 0ustar pelegrinpelegrin/* Copyright 2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_gather.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized mapping graph by **/ /** gathering the pieces of a distributed **/ /** mapping graph. **/ /** **/ /** DATES : # Version 5.1 : from : 17 jun 2008 **/ /** to : 17 jun 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH_GATHER #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "mapping.h" #include "kgraph.h" #include "dgraph.h" #include "dmapping.h" #include "kdgraph.h" /******************************/ /* */ /* These routines handle */ /* distributed source graphs. */ /* */ /******************************/ /* This function gathers the pieces of ** a distributed mapping graph to build a ** centralized mapping graph. ** There is no gathered vnumtab array if ** the original graph did not have one, as ** vertices are gathered in global order, or ** else the original vnumloctab is gathered. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int kdgraphGather ( Kdgraph * restrict const dgrfptr, /* Distributed halo graph */ Kgraph * restrict const cgrfptr) /* Centralized halo graph */ { return (dgraphGather (&dgrfptr->s, &cgrfptr->s)); } scotch_6.0.9/src/libscotch/parser_yy.y0000644000302600021200000007367113470115365020250 0ustar pelegrinpelegrin%{ /* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_yy.y **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the syntactic parser **/ /** which processes strategy strings. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 13 jun 1996 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to 27 feb 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 11 jun 2004 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 30 sep 2014 **/ /** to 27 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define PARSER_YY #include "module.h" #include "common.h" #undef INTEGER /* In case someone defined them */ #undef DOUBLE #include "parser.h" #include "parser_ll.h" #include "parser_yy.h" /* #define SCOTCH_DEBUG_PARSER3 */ #ifdef SCOTCH_DEBUG_PARSER3 extern int yydebug; #define YYDEBUG 1 #endif /* SCOTCH_DEBUG_PARSER3 */ /* ** The static and global definitions. ** See also at the end of this file. */ static const StratTab * parserstrattab; /* Pointer to parsing tables */ static Strat * parserstratcurr = NULL; /* Pointer to current strategy node */ static StratParamTab * parserparamcurr = NULL; /* Pointer to current parameter */ extern unsigned int parsermethtokentab[]; /* Pre-definition for stupid compilers */ %} %union { char CASEVAL; /* Case value */ StratTest * TEST; /* Test type */ StratTestType TESTOP; /* Relational type */ double DOUBLE; /* Double-precision */ INT INTEGER; /* Integer */ char STRING[PARSERSTRINGLEN]; /* Character string */ struct { const StratTab * tabl; /* Current tables */ Strat * strat; /* Current method */ StratParamTab * param; /* Current parameter */ } SAVE; /* Parameter type */ Strat * STRAT; /* Strategy tree */ } %token METHODNAME %token PARAMNAME %token VALCASE VALDOUBLE VALINT VALSTRING %token VALSTRAT VALPARAM VALTEST %type TEST TESTOR TESTAND TESTNOT %type TESTREL TESTEXPR1 TESTEXPR2 TESTEXPR3 %type TESTEXPR4 TESTVAL TESTVAR %type TESTRELOP TESTEXPR1OP TESTEXPR2OP TESTEXPR3OP %type VALCASE %type VALDOUBLE VALSDOUBLE %type VALINT VALSINT %type VALSTRING %type STRATCONCAT STRATTEST STRATTESTELSE STRATEMPTY %type STRATGROUP STRATMETHOD STRATSELECT %type METHODNAME PARAMNAME %start STRAT %% /* ** These rules define the strategy grammar. */ STRAT : STRATSELECT { parserstratcurr = ($1); /* Save pointer to root of tree */ } ; STRATSELECT : STRATSELECT '|' STRATEMPTY { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (2)"); stratExit ($1); stratExit ($3); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODESELECT; strat->data.select.strat[0] = ($1); strat->data.select.strat[1] = ($3); ($$) = strat; } | STRATEMPTY ; STRATEMPTY : STRATCONCAT | { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (3)"); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODEEMPTY; ($$) = strat; } ; STRATCONCAT : STRATCONCAT STRATTEST { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (4)"); stratExit ($1); stratExit ($2); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODECONCAT; strat->data.concat.strat[0] = ($1); strat->data.concat.strat[1] = ($2); ($$) = strat; } | STRATTEST ; STRATTEST : { stratParserSelect (VALTEST); /* Parse parameter tokens */ } '/' TEST { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } '?' STRATSELECT STRATTESTELSE ';' { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (1)"); stratExit ($6); if (($7) != NULL) stratExit ($7); stratTestExit ($3); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODECOND; strat->data.cond.test = ($3); strat->data.cond.strat[0] = ($6); strat->data.cond.strat[1] = ($7); ($$) = strat; } | STRATGROUP ; STRATTESTELSE : ':' STRATSELECT { ($$) = ($2); } | { ($$) = NULL; } ; STRATGROUP : '(' STRATSELECT ')' { ($$) = ($2); } | STRATMETHOD ; STRATMETHOD : METHODNAME { Strat * strat; int meth; int methlen; StratMethodTab * methtab; int i, j; meth = methlen = 0; /* No method recognized yet */ methtab = parserstrattab->methtab; /* Point to the method table */ for (i = 0; methtab[i].name != NULL; i ++) { if ((strncasecmp (($1), /* Find longest matching code name */ methtab[i].name, j = strlen (methtab[i].name)) == 0) && (j > methlen)) { meth = methtab[i].meth; methlen = j; } } if (methlen == 0) { /* If method name not known */ errorPrint ("stratParserParse: invalid method name \"%s\", before \"%s\"", ($1), stratParserRemain ()); YYABORT; } if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (5)"); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODEMETHOD; strat->data.method.meth = meth; /* Set method type */ if (methtab[meth].data != NULL) /* If default values exist */ memcpy (&strat->data.method.data, /* Set values to default */ methtab[meth].data, sizeof (StratNodeMethodData)); parserstratcurr = strat; /* Structure available for parameter processing */ } METHODPARAM { StratParamTab * paratab; int i; paratab = parserstrattab->paratab; /* Point to the parameter table */ for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == parserstratcurr->data.method.meth) && /* If a strategy parameter found for this method */ (paratab[i].type == STRATPARAMSTRAT)) { if (*((Strat **) ((byte *) &parserstratcurr->data.method.data + /* And this parameter has not been set */ (paratab[i].dataofft - paratab[i].database))) == NULL) errorPrintW ("stratParserParse: strategy parameter \"%s\" of method \"%s\" not set, before \"%s\"", paratab[i].name, parserstrattab->methtab[parserstratcurr->data.method.meth].name, stratParserRemain ()); } } ($$) = parserstratcurr; /* Return current structure */ parserstratcurr = NULL; /* No current structure */ } ; METHODPARAM : { stratParserSelect (VALPARAM); /* Parse parameter tokens */ } '{' PARAMLIST { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } '}' | /* No parameters at all */ ; PARAMLIST : PARAMLIST ',' PARAMPARAM | PARAMPARAM ; PARAMPARAM : PARAMNAME { int para; int paralen; StratParamTab * paratab; int i, j; para = paralen = 0; /* No parameter recognized yet */ paratab = parserstrattab->paratab; /* Point to the parameter table */ for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == parserstratcurr->data.method.meth) && (strncasecmp (($1), /* Find longest matching parameter name */ paratab[i].name, j = strlen (paratab[i].name)) == 0) && (j > paralen)) { para = i; paralen = j; } } if (paralen == 0) { errorPrint ("stratParserParse: invalid method parameter name \"%s\", before \"%s\"", ($1), stratParserRemain ()); YYABORT; } ($$).tabl = parserstrattab; /* Save current strategy tables */ parserparamcurr = ¶tab[para]; /* Save current parameter value */ stratParserSelect (parsermethtokentab[parserparamcurr->type & ~STRATPARAMDEPRECATED]); /* Get non-deprecated type */ if (parserparamcurr->type == STRATPARAMSTRAT) /* If parameter is a strategy */ parserstrattab = (StratTab *) parserparamcurr->datasltr; /* Use new strategy tables */ } '=' PARAMVAL { stratParserSelect (VALPARAM); /* Go-on reading parameters */ parserstrattab = ($2).tabl; /* Restore current strategy tables */ } ; PARAMVAL : VALCASE { char c; /* Character read */ char * p; /* Pointer to selector string */ int i; /* Index in selector string */ if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ c = ($1); /* First, use char as is */ for (p = (char *) parserparamcurr->datasltr, i = 0; (*p != '\0') && (*p != c); p ++, i ++) ; if (*p == '\0') { /* Char was not found */ c = tolower (c); /* Convert char to lower case */ for (p = (char *) parserparamcurr->datasltr, i = 0; (*p != '\0') && (*p != c); p ++, i ++) ; if (*p == '\0') { errorPrint ("stratParserParse: invalid method parameter switch \"%s=%c\", before \"%s\"", parserparamcurr->name, ($1), stratParserRemain ()); YYABORT; } } #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (int)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (1)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((int *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = i; } } | VALSDOUBLE { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (double)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (2)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((double *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = ($1); } } | VALSINT { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (INT)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (3)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((INT *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = (INT) ($1); } } | VALSTRING { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + strlen ($1) + 1) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (4)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ strcpy ((char *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database)), ($1)); } } | { ($$).strat = parserstratcurr; ($$).param = parserparamcurr; parserstratcurr = NULL; parserparamcurr = NULL; } STRATSELECT { parserstratcurr = ($1).strat; /* Restore current method */ parserparamcurr = ($1).param; /* Restore current parameter */ if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (Strat *)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (5)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((Strat **) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = ($2); } } | error { errorPrint ("stratParserParse: invalid value for parameter \"%s\" of method \"%s\", before \"%s\"", parserparamcurr->name, parserstratcurr->tabl->methtab[parserstratcurr->data.method.meth].name, stratParserRemain ()); YYABORT; } ; TEST : TESTOR ; TESTOR : TESTOR '|' TESTAND { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (6)"); stratTestExit ($1); stratTestExit ($3); YYABORT; } test->typetest = STRATTESTOR; test->typenode = STRATPARAMLOG; test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } | TESTAND ; TESTAND : TESTAND '&' TESTNOT { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (7)"); stratTestExit ($1); stratTestExit ($3); YYABORT; } test->typetest = STRATTESTAND; test->typenode = STRATPARAMLOG; test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } | TESTNOT ; TESTNOT : '!' TESTNOT { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (8)"); stratTestExit ($2); YYABORT; } test->typetest = STRATTESTNOT; test->typenode = STRATPARAMLOG; test->data.test[0] = ($2); ($$) = test; } | '(' TESTOR ')' { ($$) = ($2); } | TESTREL ; TESTREL : TESTEXPR1 TESTRELOP TESTEXPR1 { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (9)"); stratTestExit ($1); stratTestExit ($3); YYABORT; } test->typetest = ($2); test->typenode = STRATPARAMLOG; test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } ; TESTRELOP : '<' { ($$) = STRATTESTLT; } | '=' { ($$) = STRATTESTEQ; } | '>' { ($$) = STRATTESTGT; } ; TESTEXPR1 : TESTEXPR1 TESTEXPR1OP TESTEXPR2 { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (10)"); stratTestExit ($1); stratTestExit ($3); YYABORT; } test->typetest = ($2); test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } | TESTEXPR2 ; TESTEXPR1OP : '+' { ($$) = STRATTESTADD; } | '-' { ($$) = STRATTESTSUB; } ; TESTEXPR2 : TESTEXPR2 TESTEXPR2OP TESTEXPR3 { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { stratTestExit ($1); stratTestExit ($3); errorPrint ("stratParserParse: out of memory (11)"); YYABORT; } test->typetest = ($2); test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } | TESTEXPR3 ; TESTEXPR2OP : '*' { ($$) = STRATTESTMUL; } ; TESTEXPR3 : TESTEXPR3 TESTEXPR3OP TESTEXPR4 { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (12)"); stratTestExit ($1); stratTestExit ($3); YYABORT; } test->typetest = ($2); test->data.test[0] = ($1); test->data.test[1] = ($3); ($$) = test; } | TESTEXPR4 ; TESTEXPR3OP : '%' { ($$) = STRATTESTMOD; } ; TESTEXPR4 : '(' TESTEXPR1 ')' { ($$) = ($2); } | TESTVAL | TESTVAR ; TESTVAL : VALSDOUBLE { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (13)"); YYABORT; } test->typetest = STRATTESTVAL; test->typenode = STRATPARAMDOUBLE; test->data.val.valdbl = ($1); ($$) = test; } | VALSINT { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (14)"); YYABORT; } test->typetest = STRATTESTVAL; test->typenode = STRATPARAMINT; test->data.val.valint = ($1); ($$) = test; } ; TESTVAR : PARAMNAME { StratTest * test; StratParamTab * condtab; int para; int paralen; int i, j; para = paralen = 0; /* No parameter recognized yet */ condtab = parserstrattab->condtab; /* Point to parameter table */ for (i = 0; condtab[i].name != NULL; i ++) { if ((strncasecmp (($1), /* Find longest matching parameter name */ condtab[i].name, j = strlen (condtab[i].name)) == 0) && (j > paralen)) { para = i; paralen = j; } } if (paralen == 0) { errorPrint ("stratParserParse: invalid graph parameter name \"%s\", before \"%s\"", ($1), stratParserRemain ()); YYABORT; } if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (15)"); YYABORT; } test->typetest = STRATTESTVAR; test->typenode = condtab[para].type; test->data.var.datatab = parserstrattab; test->data.var.datadisp = condtab[para].dataofft - condtab[para].database; ($$) = test; } ; VALSDOUBLE : TESTEXPR1OP VALDOUBLE { ($$) = (($1) == STRATTESTSUB) ? - ($2) : ($2); } | VALDOUBLE ; VALSINT : TESTEXPR1OP VALINT { ($$) = (($1) == STRATTESTSUB) ? - ($2) : ($2); } | VALINT ; %% /* ** The static and global definitions (bis). ** These are put at the end of the file because ** the token values that they use are not yet ** defined in the first section of the file. */ unsigned int parsermethtokentab[] = { /* Table for parameter/token type conversion */ VALCASE, VALDOUBLE, VALINT, -1, /* No logical parameters */ VALSTRAT, VALSTRING, -1 /* One more value to detect array overflow */ }; /************************************/ /* */ /* These routines drive the parser. */ /* */ /************************************/ /* This routine is the entry point for ** the strategy parser. ** It returns: ** - !NULL : pointer to the strategy. ** - NULL : on error. */ Strat * stratParserParse ( const StratTab * const strattab, /*+ Pointer to parsing tables +*/ const char * const string) /*+ Strategy string to parse +*/ { yyclearin; /* Reset the parser state */ #ifdef SCOTCH_DEBUG_PARSER3 yydebug = 1; /* Set debugging if needed */ #endif /* SCOTCH_DEBUG_PARSER3 */ stratParserInit (string); /* Initialize the lexical parser */ parserstrattab = strattab; /* Point to the parsing tables */ parserstratcurr = NULL; /* Clear up the temporary strategy pointer */ if (yyparse () != 0) { /* Parse the strategy string */ if (parserstratcurr != NULL) stratExit (parserstratcurr); return (NULL); } return (parserstratcurr); /* Return strategy pointer */ } /* This routine displays the parser error message. ** It returns: ** - 1 : in all cases. */ static int yyerror ( const char * const errstr) { errorPrint ("stratParserParse: invalid strategy string, before \"%s\"", stratParserRemain ()); return (1); } scotch_6.0.9/src/libscotch/library_dgraph_stat_f.c0000644000302600021200000001054313560013261022513 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_stat_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph analyzing **/ /** routine of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 24 jun 2007 **/ /** to 24 jun 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHSTAT, Dgraphstat, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Num * const velominptr, \ SCOTCH_Num * const velomaxptr, \ SCOTCH_Num * const velosumptr, \ double * veloavgptr, \ double * velodltptr, \ SCOTCH_Num * const degrminptr, \ SCOTCH_Num * const degrmaxptr, \ double * degravgptr, \ double * degrdltptr, \ SCOTCH_Num * const edlominptr, \ SCOTCH_Num * const edlomaxptr, \ SCOTCH_Num * const edlosumptr, \ double * edloavgptr, \ double * edlodltptr, \ int * const revaptr), \ (grafptr, velominptr, velomaxptr, velosumptr, \ veloavgptr, velodltptr, degrminptr, \ degrmaxptr, degravgptr, degrdltptr, \ edlominptr, edlomaxptr, edlosumptr, \ edloavgptr, edlodltptr, revaptr)) { *revaptr = SCOTCH_dgraphStat (grafptr, velominptr, velomaxptr, velosumptr, veloavgptr, velodltptr, degrminptr, degrmaxptr, degravgptr, degrdltptr, edlominptr, edlomaxptr, edlosumptr, edloavgptr, edlodltptr); } scotch_6.0.9/src/libscotch/arch_cmplt.c0000644000302600021200000003223213560005302020272 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_cmplt.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the complete graph **/ /** target architecture. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 11 jun 1996 **/ /** to 11 jun 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 19 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 02 may 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_CMPLT #include "module.h" #include "common.h" #include "arch.h" #include "arch_cmplt.h" /******************************************/ /* */ /* These are the complete graph routines. */ /* */ /******************************************/ /* This routine loads the complete ** graph architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archCmpltArchLoad ( ArchCmplt * restrict const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmplt) > sizeof (ArchDummy)) || (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->termnbr) != 1) || (archptr->termnbr < 1)) { errorPrint ("archCmpltArchLoad: bad input"); return (1); } return (0); } /* This routine saves the ** complete graph architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archCmpltArchSave ( const ArchCmplt * const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchCmplt) > sizeof (ArchDummy)) || (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) { errorPrint ("archCmpltArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING "\n", (Anum) archptr->termnbr) == EOF) { errorPrint ("archCmpltArchSave: bad output"); return (1); } return (0); } /* This routine initializes the matching ** data structure according to the number ** of vertices to be managed. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archCmpltMatchInit ( ArchCmpltMatch * restrict const matcptr, const ArchCmplt * restrict const archptr) { Anum vertnbr; vertnbr = archptr->termnbr; if ((matcptr->multtab = memAlloc (((vertnbr + 1) >> 1) * sizeof (ArchCoarsenMulti))) == NULL) { /* In case vertnbr is odd */ errorPrint ("archCmpltMatchInit: out of memory"); return (1); } matcptr->vertnbr = vertnbr; matcptr->passnum = 0; return (0); } /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ void archCmpltMatchExit ( ArchCmpltMatch * restrict const matcptr) { memFree (matcptr->multtab); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ Anum archCmpltMatchMate ( ArchCmpltMatch * restrict const matcptr, ArchCoarsenMulti ** restrict const multptr) { ArchCoarsenMulti * restrict coarmulttab; Anum coarvertmax; /* Maximum coarse vertex index to be processed for matching */ Anum coarvertnum; Anum finevertnbr; Anum finevertnum; Anum passnum; finevertnbr = matcptr->vertnbr; if (finevertnbr <= 1) return (-1); coarvertmax = finevertnbr >> 1; /* One less slot when finevertnbr is odd */ coarmulttab = matcptr->multtab; coarvertnum = finevertnum = 0; passnum = matcptr->passnum; if ((finevertnbr & passnum) != 0) { /* If finevertnbr is odd and old passnum == 1 */ coarmulttab[coarvertnum].vertnum[0] = /* First coarse vertex is single multinode */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; coarvertnum ++; } for ( ; coarvertnum < coarvertmax; coarvertnum ++) { /* For all even slots */ coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Dimensional splatting */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; } if ((finevertnbr & (passnum ^ 1)) != 0) { /* If finevertnbr is odd and old passnum == 0 */ coarmulttab[coarvertnum].vertnum[0] = /* Last coarse vertex is single multinode */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; coarvertnum ++; } #ifdef SCOTCH_DEBUG_ARCH2 if (coarvertnum != ((finevertnbr + 1) >> 1)) { /* Number of coarse vertices in all cases */ errorPrint ("archCmpltMatchMate: internal error"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ matcptr->vertnbr = coarvertnum; /* Prepare for next mating */ if (finevertnbr & 1) /* Invert pass value if dimension is odd */ matcptr->passnum = passnum; *multptr = coarmulttab; /* Always provide same mating array */ return (coarvertnum); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archCmpltDomNum ( const ArchCmplt * const archptr, const ArchCmpltDom * const domnptr) { return (domnptr->termmin); /* Return vertex number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archCmpltDomTerm ( const ArchCmplt * const archptr, ArchCmpltDom * const domnptr, const ArchDomNum domnnum) { if (domnnum < archptr->termnbr) { /* If valid label */ domnptr->termmin = domnnum; /* Set the domain */ domnptr->termnbr = 1; return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the complete domain. */ Anum archCmpltDomSize ( const ArchCmplt * const archptr, const ArchCmpltDom * const domnptr) { return (domnptr->termnbr); } /* This function returns the average ** distance between two complete ** subdomains. */ Anum archCmpltDomDist ( const ArchCmplt * const archptr, const ArchCmpltDom * const dom0ptr, const ArchCmpltDom * const dom1ptr) { return (((dom0ptr->termmin == dom1ptr->termmin) && /* All domains are at distance 1 */ (dom0ptr->termnbr == dom1ptr->termnbr)) ? 0 : 1); /* If they are different */ } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltDomFrst ( const ArchCmplt * const archptr, ArchCmpltDom * restrict const domnptr) { domnptr->termmin = 0; domnptr->termnbr = archptr->termnbr; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltDomLoad ( const ArchCmplt * const archptr, ArchCmpltDom * restrict const domnptr, FILE * const stream) { Anum termmin; Anum termnbr; if ((intLoad (stream, &termmin) != 1) || (intLoad (stream, &termnbr) != 1) || (termnbr < 1) || ((termnbr + termmin) > archptr->termnbr)) { errorPrint ("archCmpltDomLoad: bad input"); return (1); } domnptr->termmin = termmin; domnptr->termnbr = termnbr; return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archCmpltDomSave ( const ArchCmplt * const archptr, const ArchCmpltDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", (Anum) domnptr->termmin, (Anum) domnptr->termnbr) == EOF) { errorPrint ("archCmpltDomSave: bad output"); return (1); } return (0); } /* This function tries to split a complete ** graph domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archCmpltDomBipart ( const ArchCmplt * const archptr, const ArchCmpltDom * const domnptr, ArchCmpltDom * restrict const dom0ptr, ArchCmpltDom * restrict const dom1ptr) { if (domnptr->termnbr <= 1) /* Return if cannot bipartition more */ return (1); dom0ptr->termmin = domnptr->termmin; /* Bipartition vertices */ dom0ptr->termnbr = domnptr->termnbr / 2; dom1ptr->termmin = domnptr->termmin + dom0ptr->termnbr; dom1ptr->termnbr = domnptr->termnbr - dom0ptr->termnbr; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archCmpltDomIncl ( const ArchCmplt * const archptr, const ArchCmpltDom * const dom0ptr, const ArchCmpltDom * const dom1ptr) { if ((dom1ptr->termmin >= dom0ptr->termmin) && ((dom1ptr->termmin + dom1ptr->termnbr) <= (dom0ptr->termmin + dom0ptr->termnbr))) return (1); return (0); } /* This function creates the MPI_Datatype for ** complete graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archCmpltDomMpiType ( const ArchCmplt * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/kgraph_map_df.h0000644000302600021200000001356313470115365020766 0ustar pelegrinpelegrin/* Copyright 2009-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_ml.h **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the function **/ /** declarations for the diffusion scheme **/ /** k-partitioning method. **/ /** **/ /** DATES : # Version 6.0 : from : 22 dec 2009 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Small non-zero float value. */ #define KGRAPHMAPDFEPSILON (1.0F / (float) (GNUMMAX)) /*+ Sign masking operator. +*/ #define KGRAPHMAPDFGNUMSGNMSK(i) ((Gnum) 0 - (((Gunum) (i)) >> (sizeof (Gnum) * 8 - 1))) /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct KgraphMapDfParam_ { INT passnbr; /*+ Number of passes to do +*/ double cdifval; /*+ Coefficient of diffused load +*/ double cremval; /*+ Coefficient of remaining load +*/ } KgraphMapDfParam; /*+ The complementary vertex structure. +*/ typedef struct KgraphMapDfVertex_ { Anum partval; /*+ Type of liquid in barrel +*/ float diffval; /*+ Value to be diffused to everybody +*/ float fdifval; /*+ Value to be diffused to other parts for mapping +*/ float mdisval; /*+ Value to be diffused to vertnum if parotax[vertnum] == partval +*/ float mdidval; /*= Value to be diffused to vertnum else +*/ } KgraphMapDfVertex; /*+ The sort structure. +*/ typedef struct KgraphMapDfSort_ { Anum partval; /*+ Type of liquid in barrel +*/ float diffval; /*+ Value to be diffused +*/ Anum distval; /*+ Distance value +*/ Gnum edlosum; /*+ Sum of edge loads +*/ } KgraphMapDfSort; /*+ The loop routine parameter structure. It contains the thread-independent data. +*/ typedef struct KgraphMapDfData_ { ThreadGroupHeader thrddat; const Kgraph * grafptr; /*+ Graph to work on +*/ float * vanctab; float * valotab; /*+ Fraction of load to leak +*/ Gnum * velstax; /*+ Vertex edge load sum array +*/ KgraphMapDfVertex * difntax; /*+ New diffusion value array +*/ KgraphMapDfVertex * difotax; /*+ Old diffusion value array +*/ int passnbr; /*+ Number of passes +*/ #ifdef KGRAPHMAPDFTHREAD int abrtval; /*+ Abort value +*/ #endif /* KGRAPHMAPDFTHREAD */ } KgraphMapDfData; /*+ The thread-specific data block. +*/ typedef struct KgraphMapDfThread_ { ThreadHeader thrddat; /*+ Thread management data +*/ Gnum vertbas; /*+ Minimum regular vertex index +*/ Gnum vertnnd; /*+ After-last regular vertex index +*/ Anum domnbas; /*+ Minimum anchor vertex index +*/ Anum domnnnd; /*+ After-last anchor vertex index +*/ } KgraphMapDfThread; /* ** The function prototypes. */ #ifdef KGRAPH_MAP_DF static void kgraphMapDfSort (void * const, const INT); #endif /* KGRAPH_MAP_DF */ int kgraphMapDf (Kgraph * restrict const, const KgraphMapDfParam * const); scotch_6.0.9/src/libscotch/hgraph.h0000644000302600021200000001127513470115365017453 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source halo graph structure. **/ /** **/ /** DATES : # Version 4.0 : from : 02 jan 2002 **/ /** to 30 apr 2004 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 19 dec 2006 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ #define HGRAPH_H /* ** The defines. */ /*+ Graph option flags. +*/ #define HGRAPHFREEVNHD 0x0400 /* Free vnhdtab array */ #define HGRAPHFREETABS (GRAPHFREETABS | HGRAPHFREEVNHD) /* ** The type and structure definitions. */ /*+ Halo graph structure. +*/ typedef struct Hgraph_ { Graph s; /*+ Source graph +*/ Gnum vnohnbr; /*+ Number of non-halo vertices +*/ Gnum vnohnnd; /*+ Based number of first halo vertex in graph (s.vertnnd if none) +*/ Gnum * vnhdtax; /*+ End vertex array for non-halo vertices [vnohnbr, based] +*/ Gnum vnlosum; /*+ Sum of vertex loads for non-halo vertices only (<= s.velosum) +*/ Gnum enohnbr; /*+ Number of non-halo edges +*/ Gnum enlosum; /*+ Sum of non-halo edge loads +*/ Gnum levlnum; /*+ Nested dissection level +*/ } Hgraph; /* ** The function prototypes. */ int hgraphInit (Hgraph * const); void hgraphExit (Hgraph * const); void hgraphFree (Hgraph * const); Gnum hgraphBase (Hgraph * const, const Gnum); int hgraphCheck (const Hgraph *); int hgraphInduceList (const Hgraph * restrict const, const Gnum, const Gnum * restrict const, const Gnum, Hgraph * restrict const); void hgraphUnhalo (const Hgraph * const, Graph * const); scotch_6.0.9/src/libscotch/dgraph_build_hcub.c0000644000302600021200000002244213560005435021614 0ustar pelegrinpelegrin/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_build_hcub.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : These lines are the distributed source **/ /** graph building routines for hypercube **/ /** graphs. **/ /** **/ /** DATES : # Version P0.1 : from : 19 may 1999 **/ /** to : 19 may 1999 **/ /** # Version P0.2 : from : 02 feb 2000 **/ /** to : 02 feb 2000 **/ /** # Version 5.0 : from : 20 jul 2005 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 12 nov 2008 **/ /** to : 12 nov 2008 **/ /** # Version 6.0 : from : 15 may 2018 **/ /** to : 15 may 2018 **/ /** **/ /************************************************************/ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" /*******************************************/ /* */ /* The distributed graph building routine. */ /* */ /*******************************************/ /* This routine builds a distributed hypercube of ** given dimension. ** Since this routine calls dgraphBuild, the private ** data of the Dgraph structure will be initialized ** by the latter, if needed. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphBuildHcub ( Dgraph * restrict const grafptr, /* Graph */ const Gnum hcubdim, /* Hypercube dimension */ const Gnum baseval, /* Base value */ const Gnum flagval) /* Flags */ { Gnum procngbnum; Gnum vertglbnbr; /* Total number of vertices */ Gnum vertglbnum; /* Global number of current vertex */ Gnum vertlocnbr; /* Number of local vertices */ Gnum velolocnbr; /* Number of local vertex loads */ Gnum vertlocnnd; Gnum vertlocnum; Gnum * restrict vertloctax; Gnum * restrict veloloctax; #ifdef SCOTCH_DEBUG_DGRAPH3 Gnum * restrict vlblloctax; #endif /* SCOTCH_DEBUG_DGRAPH3 */ Gnum edgelocnbr; Gnum * restrict edgeloctax; Gnum edgelocnum; Gnum edlolocnbr; Gnum * restrict edloloctax; int cheklocval; Gnum reduloctab[7]; Gnum reduglbtab[7]; vertglbnbr = 1 << hcubdim; vertlocnbr = DATASIZE (vertglbnbr, grafptr->procglbnbr, grafptr->proclocnum); velolocnbr = ((flagval & 1) != 0) ? vertlocnbr : 0; edgelocnbr = vertlocnbr * hcubdim; /* Set local number of arcs */ edlolocnbr = ((flagval & 2) != 0) ? edgelocnbr : 0; for (procngbnum = 0, vertglbnum = 0; /* Compute index of first local vertex */ procngbnum < grafptr->proclocnum; procngbnum ++) vertglbnum += DATASIZE (vertglbnbr, grafptr->procglbnbr, procngbnum); cheklocval = 0; vertloctax = edgeloctax = NULL; if (memAllocGroup ((void **) (void *) &vertloctax, (size_t) ((vertlocnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ #ifdef SCOTCH_DEBUG_DGRAPH3 &vlblloctax, (size_t) (vertlocnbr * sizeof (Gnum)), #endif /* SCOTCH_DEBUG_DGRAPH3 */ &veloloctax, (size_t) (velolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphBuildHcub: out of memory (1)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) &edgeloctax, (size_t) (edgelocnbr * sizeof (Gnum)), &edloloctax, (size_t) (edlolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphBuildHcub: out of memory (2)"); cheklocval = 1; } reduloctab[0] = hcubdim; reduloctab[1] = - hcubdim; reduloctab[2] = baseval; reduloctab[3] = - baseval; reduloctab[4] = flagval; reduloctab[5] = - flagval; reduloctab[6] = cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 7, GNUM_MPI, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphBuildHcub: communication error"); return (1); } if (reduglbtab[6] != 0) { if (vertloctax != NULL) { if (edgeloctax != NULL) memFree (edgeloctax); memFree (vertloctax); } return (1); } if ((reduglbtab[1] != - reduglbtab[0]) || (reduglbtab[3] != - reduglbtab[2]) || (reduglbtab[5] != - reduglbtab[4])) { errorPrint ("dgraphBuildHcub: inconsistent parameters"); return (1); } vertloctax -= baseval; veloloctax = ((flagval & 1) != 0) ? (veloloctax - baseval) : NULL; edgeloctax -= baseval; edloloctax = ((flagval & 2) != 0) ? (edloloctax - baseval) : NULL; #ifdef SCOTCH_DEBUG_DGRAPH3 vlblloctax -= baseval; #endif /* SCOTCH_DEBUG_DGRAPH3 */ for (vertlocnum = baseval, vertlocnnd = vertlocnbr + baseval, edgelocnum = baseval; vertlocnum < vertlocnnd; vertlocnum ++, vertglbnum ++) { Gnum vertngbbit; /* Bit that differs between neighbors */ if (veloloctax != NULL) veloloctax[vertlocnum] = 1 + (vertglbnum & 3); /* Pseudo random weight (1 to 5) */ #ifdef SCOTCH_DEBUG_DGRAPH3 vlblloctax[vertlocnum] = ((vertglbnum * COARHASHPRIME) % vertglbnbr) + baseval; /* Hash vertices to spread labels */ #endif /* SCOTCH_DEBUG_DGRAPH3 */ vertloctax[vertlocnum] = edgelocnum; for (vertngbbit = 1; vertngbbit < vertglbnbr; vertngbbit <<= 1, edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH3 edgeloctax[edgelocnum] = (((vertglbnum ^ vertngbbit) * COARHASHPRIME) % vertglbnbr) + baseval; #else /* SCOTCH_DEBUG_DGRAPH3 */ edgeloctax[edgelocnum] = (vertglbnum ^ vertngbbit) + baseval; #endif /* SCOTCH_DEBUG_DGRAPH3 */ if (edloloctax != NULL) edloloctax[edgelocnum] = ((vertglbnum + edgeloctax[edgelocnum]) % 16) + 1; /* Pseudo random weight (1 to 16) */ } } vertloctax[vertlocnum] = edgelocnum; /* Mark end of local vertex array */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum != edgelocnbr + baseval) { errorPrint ("dgraphBuildHcub: internal error"); memFree (vertloctax + baseval); /* Free memory group leader */ return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (dgraphBuild2 (grafptr, baseval, /* Build the distributed graph */ #ifdef SCOTCH_DEBUG_DGRAPH3 vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, NULL, vertlocnbr, NULL, vlblloctax, #else /* SCOTCH_DEBUG_DGRAPH3 */ vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, NULL, vertlocnbr, NULL, NULL, #endif /* SCOTCH_DEBUG_DGRAPH3 */ edgelocnbr, edgelocnbr, edgeloctax, NULL, edloloctax, hcubdim) != 0) { memFree (edgeloctax + baseval); /* Free memory group leaders */ memFree (vertloctax + baseval); return (1); } grafptr->flagval |= DGRAPHFREETABS | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* Arrays created by the routine itself */ return (0); } scotch_6.0.9/src/libscotch/library_graph_io_scot.c0000644000302600021200000001023513560013261022524 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_scot.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Scotch **/ /** geometry and graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 10 oct 1999 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 19 jan 2004 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to 27 apr 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Scotch graph and geometry */ /* handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque graph *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomLoadScot ( SCOTCH_Graph * restrict const grafptr, SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomLoadScot ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } /*+ This routine saves the contents of the given *** opaque graph structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomSaveScot ( const SCOTCH_Graph * restrict const grafptr, const SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomSaveScot ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } scotch_6.0.9/src/libscotch/common_file.c0000644000302600021200000002651013560005430020451 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_file.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles files and file **/ /** names. **/ /** **/ /** DATES : # Version 5.0 : from : 21 may 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 27 jun 2010 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to 14 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_FILE #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" #include "common_file.h" /*********************************/ /* */ /* Basic routines for filenames. */ /* */ /*********************************/ /* This routine expands distributed filenames ** according to process numbers. ** It returns: ** - NULL : on error. ** - nameptr : no expansion took place. ** - !NULL : expanded string. */ char * fileNameDistExpand ( char * const nameptr, /*+ Pointer to name string pointer +*/ const int procnbr, /*+ Number of processes +*/ const int procnum) /*+ Number of current process +*/ { int namemax; int namenum; char * naexptr; int naexmax; int naexnum; int flagval; /* Flag set if expansion took place */ namemax = strlen (nameptr); naexmax = namemax + FILENAMEDISTEXPANDNBR * 2; if ((naexptr = memAlloc ((naexmax + 1) * sizeof (char))) == NULL) /* "+ 1" for terminating character */ return (NULL); #ifdef COMMON_DEBUG sprintf (naexptr, FILENAMEDISTEXPANDSTR, procnbr); /* TRICK: Test if FILENAMEDISTEXPANDNBR is a size large enough */ if (atoi (naexptr) != procnbr) { errorPrint ("fileNameDistExpand: undersized integer string size"); memFree (naexptr); return (NULL); } #endif /* COMMON_DEBUG */ for (namenum = naexnum = flagval = 0; namenum < namemax; ) { char charval; int dataval = 0; int datasiz; charval = nameptr[namenum ++]; /* Get current character */ datasiz = 1; /* Assume individual expanded character */ if (charval == '%') { char chnxval; /* Value of next char */ switch (chnxval = nameptr[namenum ++]) { case 'p' : /* "%p" translates into number of processes */ flagval = 1; datasiz = FILENAMEDISTEXPANDNBR; dataval = procnbr; break; case 'r' : /* "%r" translates into process rank */ flagval = 1; datasiz = FILENAMEDISTEXPANDNBR; dataval = procnum; break; case '-' : /* "%-" translates into nothing but indicates distributed file */ datasiz = 0; flagval = 1; break; case '%' : /* "%%" translates into '%' */ break; default : charval = chnxval; /* Unrecognized character */ } } if (datasiz > 0) { if ((naexnum + datasiz) > naexmax) { char * nanwptr; naexmax += datasiz + FILENAMEDISTEXPANDNBR; if ((nanwptr = memRealloc (naexptr, (naexmax + 1) * sizeof (char))) == NULL) { /* "+ 1" for terminating character */ memFree (naexptr); return (NULL); } naexptr = nanwptr; } if (datasiz == 1) naexptr[naexnum ++] = charval; else { sprintf (&naexptr[naexnum], FILENAMEDISTEXPANDSTR, dataval); /* TRICK: Change format string if FILENAMEDISTEXPANDNBR changes */ naexptr[naexnum + FILENAMEDISTEXPANDNBR] = ' '; naexnum = strchr (&naexptr[naexnum], ' ') - naexptr; } } } naexptr[naexnum] = '\0'; /* Set terminating character as there is always room for it */ if (flagval == 0) { /* If no expansion took place */ memFree (naexptr); /* No need for the expanded string */ naexptr = nameptr; } return (naexptr); } /* This routine initializes a block of ** file descriptor structures. ** It returns: ** - void : in all cases. */ void fileBlockInit ( File * const filetab, const int filenbr) { int i; for (i = 0; i < filenbr; i ++) { /* For all file names */ filetab[i].nameptr = "-"; /* Assume standard stream */ filetab[i].fileptr = ((filetab[i].flagval & FILEMODE) == FILEMODER) ? stdin : stdout; filetab[i].compptr = NULL; /* No (de)compression yet */ } } /* This routine opens a block of file ** descriptor structures. ** It returns: ** - 0 : on success. ** - 1 : if could not open a stream. ** - 2 : if (de)compression method not implemented. */ int fileBlockOpen ( File * const filetab, const int filenbr) { int i, j; for (i = 0; i < filenbr; i ++) { /* For all file names */ if (filetab[i].fileptr == NULL) /* If unwanted stream, do nothing */ continue; for (j = 0; j < i; j ++) { if ((((filetab[i].flagval ^ filetab[j].flagval) & FILEMODE) == 0) && /* If very same name with same opening mode */ (filetab[j].nameptr != NULL) && (strcmp (filetab[i].nameptr, filetab[j].nameptr) == 0)) { filetab[i].fileptr = filetab[j].fileptr; /* Share pointer to already processed stream */ filetab[i].nameptr = NULL; /* Do not close this stream multiple times */ break; } } if (j == i) { /* If original stream */ int compval; /* Compression type */ if (filetab[i].nameptr[0] != '-') { /* If not standard stream, open it */ if ((filetab[i].fileptr = fopen (filetab[i].nameptr, ((filetab[i].flagval & FILEMODE) == FILEMODER) ? "r" : "w")) == NULL) { /* Open the file */ errorPrint ("fileBlockOpen: cannot open file (%d)", i); return (1); } } compval = (((filetab[i].flagval & FILEMODE) == FILEMODER) ? fileDecompressType : fileCompressType) (filetab[i].nameptr); if (compval < 0) { errorPrint ("fileBlockOpen: (de)compression method not implemented"); return (2); } if ((((filetab[i].flagval & FILEMODE) == FILEMODER) ? fileDecompress : fileCompress) (&filetab[i], compval) != 0) { errorPrint ("fileBlockOpen: cannot create (de)compression subprocess"); return (1); } } } return (0); } /* This routine opens a block of eventually ** distributed file descriptor structures. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int fileBlockOpenDist ( File * const filetab, const int filenbr, const int procglbnbr, const int proclocnum, const int protglbnum) { int i; for (i = 0; i < filenbr; i ++) { /* For all file names */ char * naexptr; if (filetab[i].fileptr == NULL) /* If unwanted stream, do nothing */ continue; if ((naexptr = fileNameDistExpand (filetab[i].nameptr, procglbnbr, proclocnum)) == NULL) { errorPrint ("fileBlockOpenDist: cannot create file name (%d)", i); return (1); } if (naexptr == filetab[i].nameptr) { /* If centralized stream */ if (proclocnum != protglbnum) { /* If not root process */ filetab[i].nameptr = NULL; /* Remove stream */ filetab[i].fileptr = NULL; continue; } } else { /* Else keep expanded distributed file name */ filetab[i].flagval |= FILEFREENAME; filetab[i].nameptr = naexptr; } } return (fileBlockOpen (filetab, filenbr)); /* Open remaining files */ } /* This routine opens a block of file ** descriptor structures. ** It returns: ** - 0 : on success. ** - !0 : on error. */ void fileBlockClose ( File * const filetab, const int filenbr) { int i; for (i = 0; i < filenbr; i ++) { /* For all file names */ if ((filetab[i].fileptr != NULL) && /* If stream exists */ (filetab[i].nameptr != NULL) && /* And it has a name */ (filetab[i].nameptr[0] != '-')) { /* Which is not default */ fclose (filetab[i].fileptr); /* Close the stream */ if (filetab[i].flagval & FILEFREENAME) memFree (filetab[i].nameptr); } fileCompressExit (&filetab[i]); /* After stream closed, if there is (de)compression data to free */ } } scotch_6.0.9/src/libscotch/wgraph_part_st.h0000644000302600021200000000737513465315041021231 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_st.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for vertex overlapped graph par- **/ /** titioning strategy and method tables. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /** Method types. **/ typedef enum WgraphPartStMethodType_ { WGRAPHSEPASTMETHGG = 0, /*+ Greedy Graph Growing +*/ WGRAPHSEPASTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ WGRAPHSEPASTMETHFM, /*+ Fiduccia-Mattheyses +*/ WGRAPHSEPASTMETHML, /*+ Multi-level separation +*/ WGRAPHSEPASTMETHRB, /*+ Recursive bisection +*/ WGRAPHSEPASTMETHZR, /*+ Zero method +*/ WGRAPHSEPASTMETHES, /*+ Edge separation strategy +*/ WGRAPHSEPASTMETHVW, /*+ Partition viewer +*/ WGRAPHSEPASTMETHNBR /*+ Number of methods +*/ } WgraphPartStMethodType; /* ** The external declarations. */ extern StratTab wgraphpartststratab; /* ** The function prototypes. */ int wgraphPartSt (Wgraph * restrict const, const Strat * restrict const); scotch_6.0.9/src/libscotch/library_memory.c0000644000302600021200000000622013560013261021213 0ustar pelegrinpelegrin/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_memory.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the memory **/ /** handling routines. **/ /** **/ /** DATES : # Version 6.0 : from : 21 sep 2014 **/ /** to 23 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the memory management routines. */ /* */ /************************************/ /*+ This routine frees a structure allocated *** by a SCOTCH_*Alloc () routine. *** It returns: *** - void : in all cases. +*/ void SCOTCH_memFree ( void * const dataptr) { memFree (dataptr); } /*+ This routine returns the size, in bytes, *** of a SCOTCH_Num. *** It returns: *** - void : in all cases. +*/ int SCOTCH_numSizeof () { return (sizeof (SCOTCH_Num)); } scotch_6.0.9/src/libscotch/fibo.c0000644000302600021200000003205113303015264017077 0ustar pelegrinpelegrin/* Copyright 2010,2011,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : fibo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles Fibonacci heaps. **/ /** **/ /** DATES : # Version 5.1 : from : 01 may 2010 **/ /** to 12 may 2010 **/ /** # Version 6.0 : from : 22 oct 2011 **/ /** to 25 aug 2016 **/ /** **/ /** NOTES : # A very pedagogic explanation of **/ /** Fibonacci heaps is available in **/ /** Chapter 21 of : **/ /** "Introduction to Algorithms" **/ /** Thomas H. Cormen, Charles E. **/ /** Leiserson, and Ronald L. Rivest **/ /** http://staff.ustc.edu.cn/~csli/ **/ /** graduate/algorithms/book6/chap21.htm **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define FIBO #include "module.h" #include "common.h" #include "fibo.h" /*********************************************/ /* */ /* These routines deal with Fibonacci heaps. */ /* */ /*********************************************/ /* This routine initializes a Fibonacci ** heap structure. ** It returns: ** - 0 : in case of success. ** - !0 : on error. */ int fiboHeapInit ( FiboHeap * const treeptr, int (* cmpfptr) (const FiboNode * const, const FiboNode * const)) { if ((treeptr->degrtab = (FiboNode **) memAlloc (FIBO_DEGRMAX * sizeof (FiboNode *))) == NULL) /* By default, as many cells as there are bits in an int type */ return (1); memSet (treeptr->degrtab, 0, FIBO_DEGRMAX * sizeof (FiboNode *)); /* Make degree array ready for consolidation: all cells set to NULL */ treeptr->rootdat.linkdat.prevptr = /* Link root node to itself */ treeptr->rootdat.linkdat.nextptr = &treeptr->rootdat; treeptr->cmpfptr = cmpfptr; return (0); } /* This routine flushes the contents of ** the given Fibonacci heap. ** It returns: ** - VOID : in all cases. */ void fiboHeapExit ( FiboHeap * const treeptr) { if (treeptr->degrtab != NULL) memFree (treeptr->degrtab); } /* This routine flushes the contents of ** the given Fibonacci heap. ** It returns: ** - VOID : in all cases. */ void fiboHeapFree ( FiboHeap * const treeptr) { treeptr->rootdat.linkdat.prevptr = /* Link root node to itself */ treeptr->rootdat.linkdat.nextptr = &treeptr->rootdat; } /* This routine perform the consolidation ** of roots per degree. It returns the best ** element found because this element is not ** recorded in the data structure itself. ** It returns: ** - !NULL : pointer to best element found. ** - NULL : Fibonacci heap is empty. */ FiboNode * fiboHeapConsolidate ( FiboHeap * const treeptr) { FiboNode ** restrict degrtab; int degrmax; int degrval; FiboNode * rootptr; FiboNode * nextptr; FiboNode * bestptr; degrtab = treeptr->degrtab; for (rootptr = treeptr->rootdat.linkdat.nextptr, nextptr = rootptr->linkdat.nextptr, degrmax = 0; /* For all roots in root list */ rootptr != &treeptr->rootdat; ) { degrval = rootptr->deflval >> 1; /* Get degree, getting rid of flag part */ #ifdef SCOTCH_DEBUG_FIBO2 if (degrval >= FIBO_DEGRMAX) { errorPrint ("fiboHeapConsolidate: invalid node degree"); return (NULL); } #endif /* SCOTCH_DEBUG_FIBO2 */ if (degrtab[degrval] == NULL) { /* If no tree with same degree already found */ if (degrval > degrmax) /* Record highest degree found */ degrmax = degrval; degrtab[degrval] = rootptr; /* Record tree as first tree with this degree */ rootptr = nextptr; /* Process next root in list during next iteration */ nextptr = rootptr->linkdat.nextptr; } else { FiboNode * oldrptr; /* Root which will no longer be a root */ FiboNode * chldptr; oldrptr = degrtab[degrval]; /* Assume old root is worse */ if (treeptr->cmpfptr (oldrptr, rootptr) <= 0) { /* If old root is still better */ oldrptr = rootptr; /* This root will be be linked to it */ rootptr = degrtab[degrval]; /* We will go on processing this root */ } degrtab[degrval] = NULL; /* Remaining root changes degree so leaves this cell */ fiboHeapUnlink (oldrptr); /* Old root is no longer a root */ oldrptr->deflval &= ~1; /* Whatever old root flag was, it is reset to 0 */ oldrptr->pareptr = rootptr; /* Remaining root is now father of old root */ chldptr = rootptr->chldptr; /* Get first child of remaining root */ if (chldptr != NULL) { /* If remaining root had already some children, link old root with them */ rootptr->deflval += 2; /* Increase degree by 1, that is, by 2 with left shift in deflval */ fiboHeapLinkAfter (chldptr, oldrptr); } else { /* Old root becomes first child of remaining root */ rootptr->deflval = 2; /* Real degree set to 1, and flag set to 0 */ rootptr->chldptr = oldrptr; oldrptr->linkdat.prevptr = /* Chain old root to oneself as only child */ oldrptr->linkdat.nextptr = oldrptr; } } /* Process again remaining root as its degree has changed */ } bestptr = NULL; for (degrval = 0; degrval <= degrmax; degrval ++) { if (degrtab[degrval] != NULL) { /* If some tree is found */ bestptr = degrtab[degrval]; /* Record it as potential best */ degrtab[degrval] = NULL; /* Clean-up used part of array */ degrval ++; /* Go on at next cell in next loop */ break; } } for ( ; degrval <= degrmax; degrval ++) { /* For remaining roots once a potential best root has been found */ if (degrtab[degrval] != NULL) { if (treeptr->cmpfptr (degrtab[degrval], bestptr) < 0) /* If new root is better */ bestptr = degrtab[degrval]; /* Record new root as best root */ degrtab[degrval] = NULL; /* Clean-up used part of array */ } } #ifdef SCOTCH_DEBUG_FIBO2 for (degrval = 0; degrval < FIBO_DEGRMAX; degrval ++) { if (degrtab[degrval] != NULL) { errorPrint ("fiboHeapConsolidate: invalid node degree"); return (NULL); } } #endif /* SCOTCH_DEBUG_FIBO2 */ return (bestptr); } /* This routine returns the node of minimum ** key in the given heap. The node is searched ** for each time this routine is called, so this ** information should be recorded if needed. ** This is the non-macro version, for testing ** and setting up breakpoints. ** It returns: ** - !NULL : pointer to best element found. ** - NULL : Fibonacci heap is empty. */ #ifndef fiboHeapMinIsMacro FiboNode * fiboHeapMin ( FiboHeap * const treeptr) { FiboNode * bestptr; bestptr = fiboHeapMinMacro (treeptr); #ifdef SCOTCH_DEBUG_FIBO3 fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ return (bestptr); } #endif /* fiboHeapMinIsMacro */ /* This routine adds the given node to the ** given heap. This is the non-macro version, ** for testing and setting up breakpoints. ** It returns: ** - void : in all cases. */ #ifndef fiboHeapAddIsMacro void fiboHeapAdd ( FiboHeap * const treeptr, FiboNode * const nodeptr) { fiboHeapAddMacro (treeptr, nodeptr); #ifdef SCOTCH_DEBUG_FIBO3 fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ } #endif /* fiboHeapAddIsMacro */ /* This routine reorders the heap according to ** the new, decreased key of the given node. ** If the key has increased instead, the behavior ** of the algorithm is undetermined. ** This is the non-macro version, for testing and ** setting up breakpoints. ** It returns: ** - void : in all cases. */ #ifndef fiboHeapDecreaseIsMacro void fiboHeapDecrease ( FiboHeap * const treeptr, FiboNode * const nodeptr) { fiboHeapDecreaseMacro (treeptr, nodeptr); #ifdef SCOTCH_DEBUG_FIBO3 fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ } #endif /* fiboHeapDecreaseIsMacro */ /* This routine deletes the given node from ** the given heap, whatever this node is (root ** or non root). This is the non-macro version, ** for testing and setting up breakpoints. ** It returns: ** - void : in all cases. */ #ifndef fiboHeapDelIsMacro void fiboHeapDel ( FiboHeap * const treeptr, FiboNode * const nodeptr) { fiboHeapDelMacro (treeptr, nodeptr); #ifdef SCOTCH_DEBUG_FIBO3 nodeptr->pareptr = nodeptr->chldptr = nodeptr->linkdat.prevptr = nodeptr->linkdat.nextptr = NULL; fiboHeapCheck (treeptr); #endif /* SCOTCH_DEBUG_FIBO3 */ } #endif /* fiboHeapDelIsMacro */ /* This routine checks the consistency of the ** given fibonacci heap. ** It returns: ** - 0 : if heap data is consistent. ** - !0 : on error. */ #ifdef SCOTCH_DEBUG_FIBO3 static int fiboHeapCheck2 ( const FiboNode * const nodeptr) { FiboNode * chldptr; int degrval; degrval = 0; chldptr = nodeptr->chldptr; if (chldptr != NULL) { do { if (chldptr->linkdat.nextptr->linkdat.prevptr != chldptr) { errorPrint ("fiboHeapCheck: bad child linked list"); return (1); } if (chldptr->pareptr != nodeptr) { errorPrint ("fiboHeapCheck: bad child parent"); return (1); } if (fiboHeapCheck2 (chldptr) != 0) return (1); degrval ++; chldptr = chldptr->linkdat.nextptr; } while (chldptr != nodeptr->chldptr); } if (degrval != (nodeptr->deflval >> 1)) { /* Real node degree is obtained by discarding lowest bit */ errorPrint ("fiboHeapCheck2: invalid child information"); return (1); } return (0); } int fiboHeapCheck ( const FiboHeap * const treeptr) { FiboNode * nodeptr; for (nodeptr = treeptr->rootdat.linkdat.nextptr; nodeptr != &treeptr->rootdat; nodeptr = nodeptr->linkdat.nextptr) { if (nodeptr->linkdat.nextptr->linkdat.prevptr != nodeptr) { errorPrint ("fiboHeapCheck: bad root linked list"); return (1); } if (nodeptr->pareptr != NULL) { errorPrint ("fiboHeapCheck: bad root parent"); return (1); } if (fiboHeapCheck2 (nodeptr) != 0) return (1); } return (0); } #endif /* SCOTCH_DEBUG_FIBO3 */ scotch_6.0.9/src/libscotch/library_arch_dom_f.c0000644000302600021200000001233013560013261021763 0ustar pelegrinpelegrin/* Copyright 2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch_dom_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API **/ /** for the target architecture domains **/ /** handling routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 16 apr 2019 **/ /** to 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /***********************************/ /* */ /* These routines are the Fortran */ /* API for the architecture domain */ /* handling routines. */ /* */ /***********************************/ /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMNUM, archdomnum, ( \ SCOTCH_Arch * const archptr, \ SCOTCH_ArchDom * const domnptr, \ SCOTCH_Num * const dnumptr), \ (archptr, domnptr, dnumptr)) { *dnumptr = SCOTCH_archDomNum (archptr, domnptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMTERM, archdomterm, ( \ SCOTCH_Arch * const archptr, \ SCOTCH_ArchDom * const domnptr, \ const SCOTCH_Num * const dnumptr, \ int * const revaptr), \ (archptr, domnptr, dnumptr, revaptr)) { *revaptr = SCOTCH_archDomTerm (archptr, domnptr, *dnumptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMSIZE, archdomsize, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_ArchDom * const domnptr, \ SCOTCH_Num * const sizeptr), \ (archptr, domnptr, sizeptr)) { *sizeptr = SCOTCH_archDomSize (archptr, domnptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMWGHT, archdomwght, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_ArchDom * const domnptr, \ SCOTCH_Num * const wghtptr), \ (archptr, domnptr, wghtptr)) { *wghtptr = SCOTCH_archDomWght (archptr, domnptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMDIST, archdomdist, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_ArchDom * const dom0ptr, \ const SCOTCH_ArchDom * const dom1ptr, \ SCOTCH_Num * const distptr), \ (archptr, dom0ptr, dom1ptr, distptr)) { *distptr = SCOTCH_archDomDist (archptr, dom0ptr, dom1ptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMFRST, archdomfrst, ( \ SCOTCH_Arch * const archptr, \ SCOTCH_ArchDom * const domnptr, \ int * const revaptr), \ (archptr, domnptr, revaptr)) { *revaptr = SCOTCH_archDomFrst (archptr, domnptr); } /* ** */ SCOTCH_FORTRAN ( \ ARCHDOMBIPART, archdombipart, ( \ SCOTCH_Arch * const archptr, \ const SCOTCH_ArchDom * const domnptr, \ SCOTCH_ArchDom * const dom0ptr, \ SCOTCH_ArchDom * const dom1ptr, \ int * const revaptr), \ (archptr, domnptr, dom0ptr, dom1ptr, revaptr)) { *revaptr = SCOTCH_archDomBipart (archptr, domnptr, dom0ptr, dom1ptr); } scotch_6.0.9/src/libscotch/mesh_coarsen.c0000644000302600021200000007771513303015264020646 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source mesh **/ /** coarsening functions. **/ /** **/ /** DATES : # Version 4.0 : from : 30 jan 2004 **/ /** to 05 may 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 12 sep 2007 **/ /** **/ /** NOTES : # The coarsening process is as follows. **/ /** First, node collapsing is performed, **/ /** such that pairs of matching nodes are **/ /** created, or kept as single nodes. **/ /** Then, elements are built, and merged **/ /** whenever possible. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH_COARSEN #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "mesh_coarsen.h" /* ** The static variables. */ static void (* meshCoarFuncTab[MESHCOARSENNBR]) () = { /* Tables of matching routines */ meshCoarsenMatchNg }; /***************************/ /* */ /* The coarsening routine. */ /* */ /***************************/ /* This routine coarsens the given "finemesh" into ** "coarmesh", as long as the coarsening ratio remains ** below some threshold value and the coarsened mesh ** is not too small. ** It returns: ** - 0 : if the mesh has been coarsened. ** - 1 : if the mesh could not be coarsened. ** - 2 : on error. */ int meshCoarsen ( const Mesh * restrict const finemeshptr, /*+ Mesh to coarsen +*/ Mesh * restrict const coarmeshptr, /*+ Coarse mesh to build +*/ Gnum * restrict * const finecoarptr, /*+ Pointer to multinode data +*/ const Gnum coarnbr, /*+ Minimum number of coarse nodes +*/ const double coarrat, /*+ Maximum contraction ratio +*/ const MeshCoarsenType coartype) /*+ Matching type +*/ { Gnum coarhashsiz; /* Size of the hash table */ Gnum coarhashmsk; /* Mask for access to hash table */ MeshCoarsenHngb * restrict coarhngbtab; /* Table of edges to other multinodes */ MeshCoarsenHbdg * restrict coarhbdgtab; /* Table of bridge nodes to other multinodes */ Gnum * restrict coarverttax; /* Pointer to coarse vertex array */ Gnum * restrict coarvelotax; /* Pointer to coarse vertex load array */ Gnum * restrict coaredgetax; /* Pointer to coarse edge array */ Gnum coaredgenbr; /* (Upper bound of) number of edges in mesh */ Gnum coaredgenum; /* Number of current coarse edge */ Gnum coarvertnbr; /* Number of vertices in coarse mesh */ Gnum coarvelmnbr; /* Number of coarse element vertices */ Gnum coarvnodnbr; /* Number of coarse node vertices */ Gnum finevertnbr; /* Number of vertices in fine graph */ Gnum * restrict finecoartax; /* Based access to finecoartab */ Gnum coarvelmnum; /* Number of currently selected coarse element */ Gnum coareelmnum; Gnum coarvnodnum; Gnum coardegrmax; MeshCoarsenMult * restrict finemulttax; Gnum coaredgetmp; size_t coarvelooftval; size_t coaredgeoftval; #ifdef SCOTCH_DEBUG_MESH2 if (coartype >= MESHCOARSENNBR) { errorPrint ("meshCoarsen: invalid parameter"); return (2); } #endif /* SCOTCH_DEBUG_MESH2 */ memSet (coarmeshptr, 0, sizeof (Mesh)); /* Initialize coarse mesh */ coarmeshptr->flagval = GRAPHFREEVERT; coarmeshptr->baseval = finemeshptr->baseval; finevertnbr = finemeshptr->velmnbr + finemeshptr->vnodnbr; if ((finecoartax = (Gnum *) memAlloc (finevertnbr * sizeof (Gnum))) == NULL) { errorPrint ("meshCoarsen: out of memory (1)"); /* Allocate coarse mesh uncoarsening array */ return (2); } memSet (finecoartax, ~0, finevertnbr * sizeof (Gnum)); finecoartax -= finemeshptr->baseval; /* Set based access to finecoartax */ for (coarhashmsk = 31, coarhashsiz = finemeshptr->degrmax * finemeshptr->degrmax - 1; /* Compute size of hash table */ coarhashmsk < coarhashsiz; coarhashmsk = coarhashmsk * 2 + 1) ; coarhashsiz = coarhashmsk + 1; if (memAllocGroup ((void **) (void *) &coarverttax, (size_t) ((finevertnbr + 1) * sizeof (Gnum)), /* Upper bound on number of coarse vertices */ &coarvelotax, (size_t) ( finevertnbr * sizeof (Gnum)), /* Upper bound on number of coarse vertices */ &coaredgetax, (size_t) ( finemeshptr->edgenbr * sizeof (Gnum)), &coarhngbtab, (size_t) ( coarhashsiz * sizeof (MeshCoarsenHngb)), &coarhbdgtab, (size_t) ( coarhashsiz * sizeof (MeshCoarsenHbdg)), &finemulttax, (size_t) ( finemeshptr->velmnbr * sizeof (MeshCoarsenMult)), NULL) == NULL) { errorPrint ("meshCoarsen: out of memory (2)"); /* Allocate coarser mesh structure */ memFree (finecoartax + finemeshptr->baseval); return (2); } memSet (coarhngbtab, ~0, coarhashsiz * sizeof (MeshCoarsenHngb)); memSet (coarhbdgtab, ~0, coarhashsiz * sizeof (MeshCoarsenHbdg)); finemulttax -= coarmeshptr->baseval; #define SCOTCH_DEBUG_MESH3 #ifdef SCOTCH_DEBUG_MESH3 fprintf (stderr, "-------- ENTERING COARSENING ---------\n"); fprintf (stderr, "finenodenbr=%ld, fineelemnbr=%ld, fineedgenbr=%ld, finedegrmax=%ld\n", (long) finemeshptr->vnodnbr, (long) finemeshptr->velmnbr, (long) finemeshptr->edgenbr, (long) finemeshptr->degrmax); #endif /* SCOTCH_DEBUG_MESH3 */ meshCoarFuncTab[coartype] (finemeshptr, finemulttax, finecoartax, &coarvelmnbr, &coarvnodnbr, &coaredgenbr); /* Call proper matching function */ #ifndef DEAD_CODE coarvnodnbr = finemeshptr->vnodnbr; /* TODO : coarvnodnbr estimator is wrong : too tight */ coaredgenbr = finemeshptr->edgenbr; #endif /* DEAD_CODE */ coarvertnbr = coarvelmnbr + coarvnodnbr; memOffset ((void *) coarverttax, &coarverttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coarvelotax, (size_t) ( coarvertnbr * sizeof (Gnum)), &coaredgetax, (size_t) ( coaredgenbr * sizeof (Gnum)), NULL); /* Hast tables and finemulttax stay in place */ coarverttax -= coarmeshptr->baseval; coarvelotax -= coarmeshptr->baseval; coaredgetax -= coarmeshptr->baseval; coarmeshptr->velmbas = coarmeshptr->baseval; coarmeshptr->velmnbr = coarvelmnbr; coarmeshptr->velmnnd = coarmeshptr->vnodbas = coarvelmnbr + coarmeshptr->velmbas; for (coarvelmnum = coaredgenum = coarmeshptr->baseval, coarvnodnum = coarmeshptr->vnodbas, coardegrmax = 0; /* For all coarse elements */ coarvelmnum < coarmeshptr->velmnnd; coarvelmnum ++) { Gnum coarveloval; /* Weight of coarsened element */ Gnum coarvnisnum; /* Number of coarse isolated node */ Gnum finevelmnum; /* Number of current element */ int i; coarverttax[coarvelmnum] = coaredgenum; coarvnisnum = ~0; /* No isolated node yet for this element pair */ coarveloval = 0; i = 0; do { /* For both elements of element pair (if they are different) */ Gnum fineeelmnum; finevelmnum = finemulttax[coarvelmnum].finevelmnum[i]; /* Get number of current element */ coarveloval += ((finemeshptr->velotax != NULL) ? finemeshptr->velotax[finevelmnum] : 1); for (fineeelmnum = finemeshptr->verttax[finevelmnum]; fineeelmnum < finemeshptr->vendtax[finevelmnum]; fineeelmnum ++) { Gnum finevnodnum; /* Number of current node neighbor */ Gnum fineenodnum; Gnum finevdegval; Gnum finevnloval; Gnum finevelmend; Gnum coarvnodtmp; Gnum coarhnodtmp; finevnodnum = finemeshptr->edgetax[fineeelmnum]; fineenodnum = finemeshptr->verttax[finevnodnum]; finevdegval = finemeshptr->vendtax[finevnodnum] - fineenodnum; finevnloval = (finemeshptr->vnlotax != NULL) ? finemeshptr->vnlotax[finevnodnum] : 1; if ((finevdegval == 2) && /* If node is an external bridge to another coarse element */ ((finevelmend = (finemeshptr->edgetax[fineenodnum] + finemeshptr->edgetax[fineenodnum + 1] - finevelmnum)) != finemulttax[coarvelmnum].finevelmnum[1 - i])) { Gnum coarvelmend; Gnum coarhelmend; coarvelmend = finecoartax[finevelmend]; /* Get coarse index of end element */ coarvnodtmp = finecoartax[finevnodnum]; /* Get coarse number of fine node */ for (coarhelmend = (coarvelmend * MESHCOARSENHASHPRIME) & coarhashmsk; ; coarhelmend = (coarhelmend + 1) & coarhashmsk) { if (coarhbdgtab[coarhelmend].coarvelmnum != coarvelmnum) { /* If bridge not yet considered */ coarhbdgtab[coarhelmend].coarvelmnum = coarvelmnum; /* Add it to element neighbor list */ coarhbdgtab[coarhelmend].coarvelmend = coarvelmend; if (coarvnodtmp == -1) { /* If bridge nodes not considered before by other element */ coarhbdgtab[coarhelmend].coarvnodnum = /* Assign it */ finecoartax[finevnodnum] = coarvnodtmp = coarvnodnum ++; coarverttax[coarvnodtmp] = 2; /* Prepare the fact that another element will see the node */ coarvelotax[coarvnodtmp] = finevnloval; } coaredgetax[coaredgenum ++] = coarvnodtmp; /* Directly add coarse node to element neighborhood */ break; } if (coarhbdgtab[coarhelmend].coarvelmend == coarvelmend) { /* If bridge already present */ if (coarvnodtmp == -1) { /* If we are the first element to see the bridge node */ finecoartax[finevnodnum] = coarvnodtmp = coarhbdgtab[coarhelmend].coarvnodnum; /* Assign it */ coarvelotax[coarvnodtmp] += finevnloval; /* Update the weight of the node */ } /* Else node already processed with full load, so nothing to do */ break; } } continue; /* Edge has been added or will not be */ } else if (finevdegval < 3) { /* Else if node is isolated or is an internal bridge */ if ((finevdegval == 2) && /* Process bridge edges only once */ (finevelmnum >= finemulttax[coarvelmnum].finevelmnum[1 - i])) continue; if (coarvnisnum == ~0) { /* If no isolated node for this element pair */ coarvnisnum = coarvnodnum ++; /* Create isolated node */ coarverttax[coarvnisnum] = 1; coarvelotax[coarvnisnum] = finevnloval; coaredgetax[coaredgenum ++] = coarvnisnum; } else /* If isolated node already exists */ coarvelotax[coarvnisnum] += finevnloval; /* Add node contribution to it */ finecoartax[finevnodnum] = coarvnisnum; /* Map fine node to isolated node */ continue; } else { coarvnodtmp = finecoartax[finevnodnum]; /* Get coarse number of fine node */ if (coarvnodtmp == ~0) { /* If coarse number not yet assigned */ finecoartax[finevnodnum] = coarvnodtmp = coarvnodnum ++; /* Assign it */ coarverttax[coarvnodtmp] = 0; /* No connections to the node yet */ coarvelotax[coarvnodtmp] = finevnloval; } } for (coarhnodtmp = (coarvnodtmp * MESHCOARSENHASHPRIME) & coarhashmsk; ; coarhnodtmp = (coarhnodtmp + 1) & coarhashmsk) { if (coarhngbtab[coarhnodtmp].coarvelmnum != coarvelmnum) { /* If node neighbor not yet considered */ coarhngbtab[coarhnodtmp].coarvelmnum = coarvelmnum; /* Add it to element neighbor list */ coarhngbtab[coarhnodtmp].coarvnodnum = coarvnodtmp; coaredgetax[coaredgenum ++] = coarvnodtmp; coarverttax[coarvnodtmp] ++; /* One more edge referencing the node */ break; } if (coarhngbtab[coarhnodtmp].coarvnodnum == coarvnodtmp) /* If node already present, nothing to do */ break; } } } while (i ++, finevelmnum != finemulttax[coarvelmnum].finevelmnum[1]); coarvelotax[coarvelmnum] = coarveloval; /* Lose initial weights of elements, if any, to keep coarsening weights */ if ((coaredgenum - coarverttax[coarvelmnum]) > coardegrmax) coardegrmax = (coaredgenum - coarverttax[coarvelmnum]); } coarmeshptr->vnodnnd = coarvnodnum; coarmeshptr->vnodnbr = coarvnodnum - coarmeshptr->vnodbas; coarmeshptr->velosum = finemeshptr->velosum; coarmeshptr->vnlosum = finemeshptr->vnlosum; coarmeshptr->edgenbr = 2 * (coaredgenum - coarmeshptr->baseval); for (coarvnodnum = coarmeshptr->vnodbas, coaredgetmp = coaredgenum; /* Build start indices for node edge sub-arrays */ coarvnodnum < coarmeshptr->vnodnnd; coarvnodnum ++) { Gnum coardegrval; coardegrval = coarverttax[coarvnodnum]; coarverttax[coarvnodnum] = coaredgetmp; coaredgetmp += coardegrval; if (coardegrval > coardegrmax) coardegrmax = coardegrval; } coarmeshptr->degrmax = coardegrmax; for (coarvelmnum = coareelmnum = coarmeshptr->baseval; coarvelmnum < coarmeshptr->velmnnd; coarvelmnum ++) { Gnum coareelmnnd; coareelmnnd = (coarvelmnum < (coarmeshptr->velmnnd - 1)) ? coarverttax[coarvelmnum + 1] : coaredgenum; while (coareelmnum < coareelmnnd) { Gnum coarvnodnum; coarvnodnum = coaredgetax[coareelmnum ++]; coaredgetax[coarverttax[coarvnodnum] ++] = coarvelmnum; } } memMov (&coarverttax[coarmeshptr->vnodbas + 1], /* Re-build start indices for node edge sub-arrays */ &coarverttax[coarmeshptr->vnodbas], coarmeshptr->vnodnbr * sizeof (Gnum)); coarverttax[coarmeshptr->vnodbas] = coaredgenum; coarvelooftval = coarvelotax - coarverttax; coaredgeoftval = coaredgetax - coarverttax; coarverttax = memRealloc (coarverttax + coarmeshptr->baseval, (coaredgeoftval + coarmeshptr->edgenbr) * sizeof (Gnum)); /* Re-allocate array to save space */ coarmeshptr->verttax = coarverttax - coarmeshptr->baseval; coarmeshptr->vendtax = coarmeshptr->verttax + 1; coarmeshptr->velotax = coarmeshptr->verttax + coarvelooftval; coarmeshptr->vnlotax = coarmeshptr->velotax; /* Same array for both vertex load sub-arrays */ coarmeshptr->edgetax = coarmeshptr->verttax + coaredgeoftval; #ifdef SCOTCH_DEBUG_MESH2 if (meshCheck (coarmeshptr) != 0) { /* Check mesh consistency */ errorPrint ("meshCoarsen: internal error (7)"); return (2); } #endif /* SCOTCH_DEBUG_MESH2 */ *finecoarptr = finecoartax; /* Return multinode array */ #ifdef SCOTCH_DEBUG_MESH3 fprintf (stderr, "coarvnodnbr=%ld\tcoarvelmnbr=%ld\tcoaredgenbr=%ld, coardegrmax=%ld\n", (long) coarmeshptr->vnodnbr, (long) coarmeshptr->velmnbr, (long) coarmeshptr->edgenbr, (long) coarmeshptr->degrmax); fprintf (stderr, "-------- EXITING COARSENING ---------\n"); /* TODO REMOVE */ #endif /* SCOTCH_DEBUG_MESH3 */ return (0); } /********************************************/ /* */ /* The matching subroutines. In fact, these */ /* are merging routines, which merge */ /* elements of the fine mesh to form larger */ /* elements in the coarse mesh. */ /* New elements are ordered in increasing */ /* order from baseval, while nodes are */ /* ordered in decreasing order from -2, as */ /* -1 is a reserved flag value used */ /* for labelling non yet considered */ /* vertices. */ /* */ /********************************************/ /* This routine performs elements matching by ** selecting the elements that share most nodes ** with the first element. */ static void meshCoarsenMatchNg ( const Mesh * restrict const finemeshptr, /* Fine mesh to perform matching on */ MeshCoarsenMult * restrict const finemulttax, /* Array of fine multielements */ Gnum * restrict const finecoartax, /* Fine to coarse vertex array */ Gnum * restrict const coarvelmptr, /* Pointer to number of coarse element vertices */ Gnum * restrict const coarvnodptr, /* Pointer to (upper bound on) number of coarse node vertices */ Gnum * restrict const coaredgeptr) /* Pointer to (upper bound on) number of edges */ { Gnum coarvelmnum; /* Number of current coarse element vertex */ Gnum finepertbas; /* Index of base of perturbation area */ Gnum finepertnbr; /* Size of perturbation area */ MeshCoarsenNgHash * restrict finehashtab; /* Hash table of neighbor elements */ Gnum finehashsiz; Gnum finehashmsk; Gnum coarvnodnbr; Gnum coaredgenbr; for (finehashmsk = 31, finehashsiz = finemeshptr->degrmax * finemeshptr->degrmax - 1; /* Compute size of hash table */ finehashmsk < finehashsiz; finehashmsk = finehashmsk * 2 + 1) ; finehashsiz = finehashmsk + 1; if ((finehashtab = (MeshCoarsenNgHash *) memAlloc (finehashsiz * sizeof (MeshCoarsenNgHash))) == NULL) { *coarvelmptr = finemeshptr->velmnbr; /* Indicate no coarsening occured */ return; } memSet (finehashtab, ~0, finehashsiz * sizeof (MeshCoarsenNgHash)); finehashmsk = finehashsiz - 1; coarvelmnum = finemeshptr->baseval; /* Start numbering elements in ascending order */ coarvnodnbr = finemeshptr->vnodnbr; coaredgenbr = finemeshptr->edgenbr; if (finemeshptr->velotax != NULL) { /* If fine mesh has element coarsening vertex weights, perform first pass */ Gnum finevelomin; Gnum finevelomax; Gnum finevelmnum; finevelomin = (3 * finemeshptr->velosum) / (5 * finemeshptr->velmnbr); finevelomax = (5 * finemeshptr->velosum) / finemeshptr->velmnbr; for (finevelmnum = finemeshptr->velmbas; finevelmnum < finemeshptr->velmnnd; finevelmnum ++) { Gnum fineeelmnum; Gnum finehelmnum; Gnum finevnisnbr; /* Number of isolated node vertices */ Gnum finehebsnum; /* Hash number of best matching element */ Gnum finevebsnum; /* Number of best matching element */ Gnum finevnbsnbr; /* Number of nodes shared with best element */ if (finecoartax[finevelmnum] != ~0) /* If element already selected */ continue; if (finemeshptr->velotax[finevelmnum] >= finevelomin) { /* If element is large enough, leave it for the second pass */ if (finemeshptr->velotax[finevelmnum] > finevelomax) { /* Except if it is too large, as then it is not matched */ finecoartax[finevelmnum] = coarvelmnum; finemulttax[coarvelmnum].finevelmnum[0] = finemulttax[coarvelmnum].finevelmnum[1] = finevelmnum; fprintf (stderr, "++ %ld %ld\n", (long) finevelmnum, (long) finemeshptr->velotax[finevelmnum]); /* TODO REMOVE */ coarvelmnum ++; /* One more single vertex created */ } continue; } finecoartax[finevelmnum] = coarvelmnum; /* Set vertex as used so that it will not be considered as an end vertex */ finehelmnum = (finevelmnum * MESHCOARSENHASHPRIME) & finehashmsk; finehashtab[finehelmnum].velmnum = finevelmnum; /* Put element in hash table so that number of end vertex is right even for uncoarsened elements */ finehashtab[finehelmnum].velmend = finevelmnum; finehebsnum = finehelmnum; /* Mate is element itself */ finevnbsnbr = 0; /* Will never be selected */ finevnisnbr = 0; /* No isolated node vertices yet */ for (fineeelmnum = finemeshptr->verttax[finevelmnum]; /* For all node neighbors of current element */ fineeelmnum < finemeshptr->vendtax[finevelmnum]; fineeelmnum ++) { Gnum finevnodnum; Gnum fineenodnum; Gnum fineenodnnd; Gnum finevdegval; Gnum finevnbgval; finevnodnum = finemeshptr->edgetax[fineeelmnum]; fineenodnum = finemeshptr->verttax[finevnodnum]; fineenodnnd = finemeshptr->vendtax[finevnodnum]; finevdegval = fineenodnnd - fineenodnum; if (finevdegval == 1) { /* If node is isolated */ finevnisnbr ++; continue; /* Directly skip to next node */ } finevnbgval = (finevdegval == 2) ? 1 : 0; /* If node is a bridge which connects the element to only one other element */ for ( ; fineenodnum < fineenodnnd; fineenodnum ++) { /* For all elements which are neighbors of current node */ Gnum finevelmend; Gnum finehelmend; Gnum finevnngnbr; /* Current number of neigoboring nodes that connect the two elements */ finevelmend = finemeshptr->edgetax[fineenodnum]; if (finecoartax[finevelmend] != ~0) /* If end element vertex already matched, do not consider it */ continue; for (finehelmend = (finevelmend * MESHCOARSENHASHPRIME) & finehashmsk; ; finehelmend = (finehelmend + 1) & finehashmsk) { if (finehashtab[finehelmend].velmnum != finevelmnum) { /* If element neighbor not yet considered */ finevnngnbr = 1; finehashtab[finehelmend].velmnum = finevelmnum; finehashtab[finehelmend].velmend = finevelmend; finehashtab[finehelmend].vnngnbr = finevnngnbr; finehashtab[finehelmend].vnbgnbr = finevnbgval; } else if (finehashtab[finehelmend].velmend == finevelmend) { /* Else if element found */ finevnngnbr = ++ finehashtab[finehelmend].vnngnbr; finehashtab[finehelmend].vnbgnbr += finevnbgval; } else /* Else go on searching */ continue; if (finevnngnbr > finevnbsnbr) { finehebsnum = finehelmend; finevnbsnbr = finevnngnbr; } break; } } } finevebsnum = finehashtab[finehebsnum].velmend; finemulttax[coarvelmnum].finevelmnum[0] = finevelmnum; /* Set matching pair */ finemulttax[coarvelmnum].finevelmnum[1] = finevebsnum; if (finevelmnum != finevebsnum) { /* If a matching element has been found */ finecoartax[finevebsnum] = coarvelmnum; if (finevnisnbr > 0) finevnisnbr --; coarvnodnbr -= finehashtab[finehebsnum].vnbgnbr + finevnisnbr; coaredgenbr -= 2 * finevnisnbr + 4 * finehashtab[finehebsnum].vnbgnbr; } coarvelmnum ++; /* Number nodes in ascending order */ } } for (finepertbas = finemeshptr->velmbas, /* Run cache-friendly perturbation on elements */ finepertnbr = 2 + intRandVal (MESHCOARSENPERTPRIME - 2); /* Compute perturbation area size */ finepertbas < finemeshptr->velmnnd; finepertbas += finepertnbr) { Gnum finepertval; /* Current index in perturbation area */ if (finepertbas + finepertnbr > finemeshptr->velmnnd) finepertnbr = finemeshptr->velmnnd - finepertbas; finepertval = 0; /* Start from first perturbation element vertex */ do { /* Loop on perturbation element vertices */ Gnum finevelmnum; /* Number of currently selected fine element vertex */ Gnum fineeelmnum; Gnum finehelmnum; Gnum finevnisnbr; /* Number of isolated node vertices */ Gnum finehebsnum; /* Hash number of best matching element */ Gnum finevebsnum; /* Number of best matching element */ Gnum finevnbsnbr; /* Number of nodes shared with best element */ finevelmnum = finepertbas + finepertval; /* Compute corresponding elemennt number */ if (finecoartax[finevelmnum] != ~0) /* If element already selected */ continue; finecoartax[finevelmnum] = coarvelmnum; /* Set vertex as used so that it will not be considered as an end vertex */ finehelmnum = (finevelmnum * MESHCOARSENHASHPRIME) & finehashmsk; finehashtab[finehelmnum].velmnum = finevelmnum; /* Put element in hash table so that number of end vertex is right even for uncoarsened elements */ finehashtab[finehelmnum].velmend = finevelmnum; finehebsnum = finehelmnum; /* Mate is element itself */ finevnbsnbr = 0; /* Will never be selected */ finevnisnbr = 0; /* No isolated node vertices yet */ for (fineeelmnum = finemeshptr->verttax[finevelmnum]; /* For all node neighbors of current element */ fineeelmnum < finemeshptr->vendtax[finevelmnum]; fineeelmnum ++) { Gnum finevnodnum; Gnum fineenodnum; Gnum fineenodnnd; Gnum finevdegval; Gnum finevnbgval; finevnodnum = finemeshptr->edgetax[fineeelmnum]; fineenodnum = finemeshptr->verttax[finevnodnum]; fineenodnnd = finemeshptr->vendtax[finevnodnum]; finevdegval = fineenodnnd - fineenodnum; if (finevdegval == 1) { /* If node is isolated */ finevnisnbr ++; continue; /* Directly skip to next node */ } finevnbgval = (finevdegval == 2) ? 1 : 0; /* If node is a bridge which connects the element to only one other element */ for ( ; fineenodnum < fineenodnnd; fineenodnum ++) { /* For all elements which are neighbors of current node */ Gnum finevelmend; Gnum finehelmend; Gnum finevnngnbr; /* Current number of neigoboring nodes that connect the two elements */ finevelmend = finemeshptr->edgetax[fineenodnum]; if (finecoartax[finevelmend] != ~0) /* If end element vertex already matched, do not consider it */ continue; for (finehelmend = (finevelmend * MESHCOARSENHASHPRIME) & finehashmsk; ; finehelmend = (finehelmend + 1) & finehashmsk) { if (finehashtab[finehelmend].velmnum != finevelmnum) { /* If element neighbor not yet considered */ finevnngnbr = 1; finehashtab[finehelmend].velmnum = finevelmnum; finehashtab[finehelmend].velmend = finevelmend; finehashtab[finehelmend].vnngnbr = finevnngnbr; finehashtab[finehelmend].vnbgnbr = finevnbgval; } else if (finehashtab[finehelmend].velmend == finevelmend) { /* Else if element found */ finevnngnbr = ++ finehashtab[finehelmend].vnngnbr; finehashtab[finehelmend].vnbgnbr += finevnbgval; } else /* Else go on searching */ continue; if (finevnngnbr > finevnbsnbr) { finehebsnum = finehelmend; finevnbsnbr = finevnngnbr; } break; } } } finevebsnum = finehashtab[finehebsnum].velmend; finemulttax[coarvelmnum].finevelmnum[0] = finevelmnum; /* Set matching pair */ finemulttax[coarvelmnum].finevelmnum[1] = finevebsnum; if (finevelmnum != finevebsnum) { /* If a matching element has been found */ finecoartax[finevebsnum] = coarvelmnum; if (finevnisnbr > 0) finevnisnbr --; coarvnodnbr -= finehashtab[finehebsnum].vnbgnbr + finevnisnbr; coaredgenbr -= 2 * finevnisnbr + 4 * finehashtab[finehebsnum].vnbgnbr; } coarvelmnum ++; /* Number nodes in ascending order */ } while ((finepertval = (finepertval + MESHCOARSENPERTPRIME) % finepertnbr) != 0); /* Compute next perturbation index */ } memFree (finehashtab); *coarvelmptr = coarvelmnum - finemeshptr->velmbas; *coarvnodptr = coarvnodnbr; *coaredgeptr = coaredgenbr; return; } scotch_6.0.9/src/libscotch/library_mesh_graph_f.c0000644000302600021200000000640313560013261022330 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_graph_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the mesh-to-graph converter of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 21 jan 2004 **/ /** to 21 jan 2004 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 28 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mesh handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ MESHGRAPH, meshgraph, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Graph * const grafptr, \ int * const revaptr), \ (meshptr, grafptr, revaptr)) { *revaptr = SCOTCH_meshGraph (meshptr, grafptr); } scotch_6.0.9/src/libscotch/mapping_io.c0000644000302600021200000002505613303015264020311 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mapping_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles (partial) mappings. **/ /** **/ /** DATES : # Version 0.0 : from : 31 mar 1993 **/ /** to 31 mar 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 17 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 19 oct 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 14 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 07 sep 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 3.4 : from : 11 sep 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 16 jan 2004 **/ /** to 14 nov 2005 **/ /** # Version 5.0 : from : 13 sep 2006 **/ /** to 27 feb 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 22 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MAPPING_IO #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "mapping_io.h" /***********************************/ /* */ /* These routines handle mappings. */ /* */ /***********************************/ /* This routine reads the contents of the given mapping ** file to the given mapping, reordering vertices ** according to the given vertex label table if necessary. ** It returns: ** - 0 : if mapping successfully written. ** - 1 : on error. ** - 2 : variable-sized architectures cannot be loaded. */ /* TODO remove it */ int /* TODO copy the one from gout? */ mapLoad ( Mapping * restrict const mappptr, const Gnum * restrict const vlbltab, FILE * restrict const stream) { Gnum vertnum; Gnum mappnum; Gnum mappnbr; MappingLoadMap * mapptab; /* Mapping array */ MappingLoadPerm * permtab; /* Array of sorted label/index pairs */ Anum archnbr; /* Size of the target architecture */ ArchDom fdomdat; /* First domain of architecture */ if (strcmp (archName (mappptr->archptr), "term") == 0) /* If target architecture is variable-sized */ return (2); archDomFrst (mappptr->archptr, &fdomdat); /* Get architecture size */ archnbr = archDomSize (mappptr->archptr, &fdomdat); if (mappptr->domnmax < (archnbr + 1)) { /* If mapping array too small to store mapping data */ ArchDom * restrict domntab; if ((domntab = (ArchDom *) memRealloc (mappptr->domntab, (archnbr + 1) * sizeof (ArchDom))) == NULL) { /* If cannot resize domain array */ errorPrint ("mapLoad: out of memory (1)"); return (1); } mappptr->domnmax = archnbr + 1; /* Point to new array */ mappptr->domntab = domntab; } mappptr->domnnbr = archnbr + 1; /* One more for first domain, for unmapped vertices */ archDomFrst (mappptr->archptr, &mappptr->domntab[0]); /* Set first domain with root domain data */ for (mappnum = 0; mappnum < archnbr; mappnum ++) /* For all terminal domain numbers */ archDomTerm (mappptr->archptr, &mappptr->domntab[mappnum + 1], mappnum); /* Set domain with terminal domain data */ if ((intLoad (stream, &mappnbr) != 1) || /* Read number of mapping entries */ (mappnbr < 1)) { errorPrint ("mapLoad: bad input (1)"); return (1); } if (memAllocGroup ((void **) (void *) &mapptab, (size_t) (mappnbr * sizeof (MappingLoadMap)), &permtab, (size_t) (mappptr->grafptr->vertnbr * sizeof (MappingLoadPerm)), NULL) == NULL) { errorPrint ("mapLoad: out of memory (2)"); return (1); } for (mappnum = 0; mappnum < mappnbr; mappnum ++) { /* Load mapping array */ if ((intLoad (stream, &mapptab[mappnum].slblnum) != 1) || (intLoad (stream, &mapptab[mappnum].tlblnum) != 1)) { errorPrint ("mapLoad: bad input (2)"); return (1); } } intSort2asc1 (mapptab, mappnbr); /* Sort mapping array by increasing source labels */ if (vlbltab != NULL) { /* If graph has vertex labels */ Gnum vertnum; for (vertnum = 0; vertnum < mappptr->grafptr->vertnbr; vertnum ++) { /* Build inverse permutation */ permtab[vertnum].vertnum = vertnum + mappptr->grafptr->baseval; permtab[vertnum].vlblnum = vlbltab[vertnum]; } intSort2asc1 (permtab, mappptr->grafptr->vertnbr); /* Sort vertex array by increasing labels */ } else { Gnum vertnum; for (vertnum = 0; vertnum < mappptr->grafptr->vertnbr; vertnum ++) { /* Build identity permutation */ permtab[vertnum].vertnum = vertnum + mappptr->grafptr->baseval; permtab[vertnum].vlblnum = vertnum + mappptr->grafptr->baseval; } } for (vertnum = 0, mappnum = 0; /* For all graph vertices */ vertnum < mappptr->grafptr->vertnbr; vertnum ++) { while ((mappnum < mappnbr) && /* Skip useless mapping data (if graph is subgraph of originally mapped graph) */ (permtab[vertnum].vlblnum > mapptab[mappnum].slblnum)) mappnum ++; if (mappnum >= mappnbr) /* If all mapping data exhausted */ break; /* Exit the matching loop */ if (permtab[vertnum].vlblnum == mapptab[mappnum].slblnum) { /* If matching mapping data found */ if ((mapptab[mappnum].tlblnum >= 0) && /* If mapping valid */ (mapptab[mappnum].tlblnum < archnbr)) mappptr->parttax[permtab[vertnum].vertnum] = mapptab[mappnum].tlblnum + 1; /* Set mapping to terminal domain */ mappnum ++; /* Mapping pair has been used */ } } memFree (mapptab); /* Free group leader */ return (0); } /* This routine writes the contents of the ** given mapping to the given string. ** It returns: ** - 0 : if mapping successfully written. ** - !0 : on error. */ int mapSave ( const Mapping * restrict const mappptr, FILE * restrict const stream) { Gnum vertnnd; Gnum vertnum; const Arch * restrict const archptr = mappptr->archptr; const ArchDom * restrict const domntab = mappptr->domntab; const Anum * restrict const parttax = mappptr->parttax; const Gnum * restrict const vlbltax = mappptr->grafptr->vlbltax; vertnum = mappptr->grafptr->baseval; vertnnd = mappptr->grafptr->vertnbr; /* Un-based number at first */ if (fprintf (stream, GNUMSTRING "\n", (Gnum) vertnnd) == EOF) { errorPrint ("mapSave: bad output (1)"); return (1); } for (vertnnd += vertnum; vertnum < vertnnd; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" ANUMSTRING "\n", (Gnum) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum), (Anum) (parttax != NULL) ? archDomNum (archptr, &domntab[parttax[vertnum]]) : -1) == EOF) { errorPrint ("mapSave: bad output (2)"); return (1); } } return (0); } scotch_6.0.9/src/libscotch/hdgraph_order_sq.c0000644000302600021200000002024213303015264021472 0ustar pelegrinpelegrin/* Copyright 2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_sq.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders distributed graphs **/ /** by centralizing them on a single **/ /** process and running a sequential **/ /** ordering strategy. **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2008 **/ /** to 11 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_ORDER_SQ #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_st.h" #include "dgraph.h" #include "dorder.h" #include "hdgraph.h" #include "hdgraph_order_sq.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hdgraphOrderSq ( Hdgraph * restrict const grafptr, DorderCblk * restrict const cblkptr, const HdgraphOrderSqParam * restrict const paraptr) { Hgraph cgrfdat; /* Centralized halo graph data */ Hgraph * cgrfptr; /* Pointer to centralized halo graph */ int o; cgrfptr = (grafptr->s.proclocnum == 0) ? &cgrfdat : NULL; /* Set root process */ if (hdgraphGather (grafptr, cgrfptr) != 0) { /* Gather centralized subgraph */ errorPrint ("hdgraphOrderSq: cannot create centralized graph"); return (1); } o = 0; if (cgrfptr != NULL) { o = hdgraphOrderSq2 (&cgrfdat, cblkptr, paraptr->ordstratseq); hgraphFree (&cgrfdat); } return (o); } int hdgraphOrderSq2 ( Hgraph * restrict const grafptr, DorderCblk * restrict const cblkptr, const Strat * restrict const stratptr) { Order corddat; /* Centralized ordering structure */ Gnum * restrict vnumtax; Gnum * restrict peritab; int o; if (orderInit (&corddat, grafptr->s.baseval, cblkptr->vnodglbnbr, NULL) != 0) { errorPrint ("hdgraphOrderSq2: cannot initialize centralized ordering"); return (1); } vnumtax = grafptr->s.vnumtax; /* Save number array of subgraph to order */ grafptr->s.vnumtax = NULL; /* Assume graph does not have one (fake original graph) */ if (hgraphOrderSt (grafptr, &corddat, 0, &corddat.cblktre, stratptr) != 0) { /* Compute sequential ordering */ orderExit (&corddat); return (1); } #ifdef SCOTCH_DEBUG_HDGRAPH2 if (orderCheck (&corddat) != 0) { errorPrint ("hdgraphOrderSq2: invalid centralized ordering"); orderExit (&corddat); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ peritab = corddat.peritab; /* Get permutation array */ if (vnumtax != NULL) { Gnum perinum; grafptr->s.vnumtax = vnumtax; /* Restore vertex number array */ for (perinum = 0; perinum < grafptr->vnohnbr; perinum ++) /* Adjust inverse permutation */ peritab[perinum] = vnumtax[peritab[perinum]]; } cblkptr->typeval = DORDERCBLKLEAF; /* Fill node as leaf */ cblkptr->data.leaf.ordelocval = cblkptr->ordeglbval; cblkptr->data.leaf.vnodlocnbr = cblkptr->vnodglbnbr; cblkptr->data.leaf.periloctab = peritab; cblkptr->data.leaf.nodelocnbr = corddat.treenbr - 1; /* Get number of tree nodes, save for root */ o = 0; if (corddat.treenbr > 1) { cblkptr->data.leaf.cblklocnum = dorderNewSequIndex (cblkptr, corddat.treenbr - 1); /* Reserve local indices for local nodes */ if ((cblkptr->data.leaf.nodeloctab = hdgraphOrderSqTree (&corddat)) == NULL) { errorPrint ("hdgraphOrderSq2: cannot import centralized separation tree"); o = 1; } if (corddat.cblktre.typeval == ORDERCBLKNEDI) /* If root of centralized tree is a nested dissection node */ cblkptr->typeval |= DORDERCBLKNEDI; /* Distributed leaf is also a nested dissection node */ } else cblkptr->data.leaf.nodeloctab = NULL; corddat.flagval = ORDERNONE; /* Do not free permutation array */ orderExit (&corddat); /* Free permutation tree */ return (o); } /* This routine builds the distributed part of ** a distributed halo graph. This is a distinct ** routine to allow for multi-threading. */ static DorderNode * hdgraphOrderSqTree ( const Order * const cordptr) { DorderNode * nodetab; Gnum nodenum; Gnum cblknum; if ((nodetab = memAlloc ((cordptr->treenbr - 1) * sizeof (DorderNode))) == NULL) { /* "- 1" as root of tree will not be copied */ errorPrint ("hdgraphOrderSqTree: out of memory"); return (NULL); } nodenum = 0; /* Start labeling nodes from 0 */ for (cblknum = 0; cblknum < cordptr->cblktre.cblknbr; cblknum ++) hdgraphOrderSqTree2 (nodetab, &nodenum, &cordptr->cblktre.cblktab[cblknum], -1, cblknum); /* Root of tree is labeled "-1" */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if (nodenum != (cordptr->treenbr - 1)) { errorPrint ("hdgraphOrderSqTree: internal error"); return (NULL); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ return (nodetab); } static void hdgraphOrderSqTree2 ( DorderNode * const nodetab, Gnum * const nodeptr, const OrderCblk * const cblkptr, const Gnum fathnum, const Gnum fcbknum) { Gnum nodenum; DorderNode * nodetmp; Gnum cblknum; nodenum = (*nodeptr) ++; nodetmp = &nodetab[nodenum]; nodetmp->fathnum = fathnum; nodetmp->typeval = (Gnum) cblkptr->typeval; nodetmp->vnodnbr = cblkptr->vnodnbr; nodetmp->cblknum = fcbknum; for (cblknum = 0; cblknum < cblkptr->cblknbr; cblknum ++) hdgraphOrderSqTree2 (nodetab, nodeptr, &cblkptr->cblktab[cblknum], nodenum, cblknum); } scotch_6.0.9/src/libscotch/library_graph_io_mmkt.c0000644000302600021200000001003113560013261022516 0ustar pelegrinpelegrin/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_mmkt.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Matrix **/ /** Market geometry and graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 13 mar 2008 **/ /** to 13 mar 2008 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to 27 apr 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Matrix Market graph and */ /* geometry handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque geom *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomLoadMmkt ( SCOTCH_Graph * restrict const grafptr, SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomLoadMmkt ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } /*+ This routine saves the contents of the given *** opaque graph structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomSaveMmkt ( const SCOTCH_Graph * restrict const grafptr, const SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomSaveMmkt ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } scotch_6.0.9/src/libscotch/bgraph_bipart_df.h0000644000302600021200000001277013560005346021455 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_df.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the function **/ /** declarations for the diffusion scheme **/ /** bipartitioning method. **/ /** **/ /** DATES : # Version 5.0 : from : 09 jan 2007 **/ /** to 28 may 2007 **/ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 28 mar 2011 **/ /** # Version 6.0 : from : 08 nov 2011 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Small non-zero float value. */ #define BGRAPHBIPARTDFEPSILON (1.0F / (float) (GNUMMAX)) /*+ Sign masking operator. +*/ #define BGRAPHBIPARTDFGNUMSGNMSK(i) (- (Gnum) (((Gunum) (i)) >> (sizeof (Gnum) * 8 - 1))) /* ** The type and structure definitions. */ /*+ Job selection policy types. +*/ typedef enum BgraphBipartDfType_ { BGRAPHBIPARTDFTYPEBAL = 0, /*+ Balance to average +*/ BGRAPHBIPARTDFTYPEKEEP /*+ Preserve current imbalance +*/ } BgraphBipartDfType; /*+ Method parameters. +*/ typedef struct BgraphBipartDfParam_ { INT passnbr; /*+ Number of passes to do +*/ BgraphBipartDfType typeval; /*+ Type of balance to reach +*/ } BgraphBipartDfParam; /*+ The loop routine parameter structure. It contains the thread-independent data. +*/ typedef struct BgraphBipartDfData_ { ThreadGroupHeader thrddat; Bgraph * grafptr; /*+ Graph to work on +*/ float * difntax; /*+ New diffusion value array +*/ float * difotax; /*+ Old diffusion value array +*/ INT passnbr; /*+ Number of passes +*/ Gnum vanctab[2]; /*+ Anchor load arrays +*/ #ifdef BGRAPHBIPARTDFTHREAD int abrtval; /*+ Abort value +*/ #endif /* BGRAPHBIPARTDFTHREAD */ } BgraphBipartDfData; /*+ The thread-specific data block. +*/ typedef struct BgraphBipartDfThread_ { ThreadHeader thrddat; /*+ Thread management data +*/ Gnum vertbas; /*+ Minimum regular vertex index +*/ Gnum vertnnd; /*+ After-last regular vertex index +*/ Gnum fronnnd; /*+ After-last frontier vertex index +*/ Gnum compload1; /*+ State return values to aggregate +*/ Gnum compsize1; Gnum commloadextn; Gnum commloadintn; Gnum commgainextn; float vanctab[2]; /*+ Area for (reducing) contributions to anchors +*/ #ifdef BGRAPHBIPARTDFTHREAD Gnum veexsum; /*+ Area for reducing sums of external gains +*/ Gnum veexsum1; #endif /* BGRAPHBIPARTDFTHREAD */ } BgraphBipartDfThread; /* ** The function prototypes. */ int bgraphBipartDf (Bgraph * restrict const, const BgraphBipartDfParam * const); scotch_6.0.9/src/libscotch/dgraph_coarsen.h0000644000302600021200000002110713560005435021150 0ustar pelegrinpelegrin/* Copyright 2007-2009,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_coarsen.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : This file implements the distributed **/ /** graph coarsening method. **/ /** **/ /** DATES : # Version 5.0 : from : 27 Jul 2005 **/ /** to : 24 feb 2007 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to : 26 may 2009 **/ /** # Version 6.0 : from : 18 sep 2012 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Graph option flags. Their values must be equal to those defined in library.h and library_f.h +*/ #define DGRAPHCOARSENNONE 0x0000 /* No options set */ #define DGRAPHCOARSENFOLD 0x0100 /* Do folding without duplication */ #define DGRAPHCOARSENFOLDDUP 0x0300 /* Do folding with duplication */ #define DGRAPHCOARSENNOMERGE 0x4000 /* Do not merge isolated vertices */ /* ** The type and structure definitions. */ /*+ The multinode table element, which contains pairs of based indices of collapsed vertices. Both values are equal for uncollapsed vertices. +*/ typedef struct DgraphCoarsenMulti_ { Gnum vertglbnum[2]; /*+ Global indices of the collapsed vertices of a multinode +*/ } DgraphCoarsenMulti; /* This structure defines vertex data exchange cell. It can have many uses depending on the type of algorithm. */ typedef struct DgraphCoarsenVert_ { Gnum datatab[2]; /*+ Two values +*/ } DgraphCoarsenVert; /* This structure defines the inter-process vertex and edge count structure. At matching time, it records the amount of data to be sent to each neighbor process. */ typedef struct DgraphCoarsenCount_ { Gnum vertsndnbr; Gnum edgesndnbr; Gnum vertlocnbr; } DgraphCoarsenCount; /*+ A table made of such elements is used during coarsening to build the edge array of the new graph, after the labeling of the vertices. +*/ typedef struct DgraphCoarsenHash_ { Gnum vertorgnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum vertendnum; /*+ Other end vertex number +*/ Gnum edgelocnum; /*+ Number of corresponding edge +*/ } DgraphCoarsenHash; /*+ This structure gathers all data necessary to the proper execution of the coarsening and matching routines. +*/ typedef struct DgraphCoarsenData_ { int flagval; /*+ Flag value +*/ Dgraph * finegrafptr; /*+ Pointer to fine graph +*/ Dgraph * coargrafptr; /*+ Pointer to coarse graph which is built +*/ int * coarprvptr; /*+ Pointer to coarse private data to free in case of error +*/ DgraphCoarsenVert * vrcvdattab; /*+ Area reserved for receiving vertex messages +*/ DgraphCoarsenVert * vsnddattab; /*+ Area reserved for sending vertex messages +*/ int * vrcvcnttab; /*+ Count data for vertex receive sub-arrays +*/ int * vsndcnttab; /*+ Count data for vertex send sub-arrays +*/ int * vrcvdsptab; /*+ Displacement for vertex receive sub-arrays [+1] +*/ int * vsnddsptab; /*+ Displacement data for vertex send sub-arrays [+1] +*/ int * nrcvidxtab; /*+ Count array for neighbor receive sub-arrays +*/ int * nsndidxtab; /*+ Count array for neighbor send sub-arrays +*/ MPI_Request * nrcvreqtab; /*+ Request array for receive requests +*/ MPI_Request * nsndreqtab; /*+ TRICK: nsndreqtab = (nrcvreqtab + procngbnbr) +*/ int * procgsttax; /*+ Array giving the neighbor process index of each ghost vertex +*/ int procngbnxt; /*+ Index of first neighbor of higher rank than current process +*/ DgraphCoarsenCount * dcntloctab; /*+ Count array for sending vertices and edges +*/ DgraphCoarsenCount * dcntglbtab; /*+ Count array for receiving vertices and edges +*/ Gnum * coargsttax; /*+ Fine-to-coarse vertex index array +*/ DgraphCoarsenMulti * multloctmp; /*+ Pointer to multloctab structure to free (if any) +*/ DgraphCoarsenMulti * multloctab; /*+ Structure which contains the result of the matching +*/ Gnum multlocnbr; /*+ Index of next multinode to be created +*/ Gnum vertrcvnbr; /*+ Number of fine vertices to be received +*/ Gnum edgercvnbr; /*+ Number of fine edges to be received +*/ Gnum edgekptnbr; /*+ Upper bound on number of edges kept from finer graph +*/ Gnum vertsndnbr; /*+ Number of fine vertices to be sent +*/ Gnum edgesndnbr; /*+ Number of fine edges to be sent +*/ } DgraphCoarsenData; /* ** The function prototypes. */ #ifdef DGRAPH_COARSEN static int dgraphCoarsenInit (DgraphCoarsenData * restrict const, Dgraph * restrict const, Dgraph * restrict const); static void dgraphCoarsenExit (DgraphCoarsenData * restrict const); static int dgraphCoarsenBuild (DgraphCoarsenData * restrict const); #endif /* DGRAPH_COARSEN */ int dgraphCoarsen (Dgraph * restrict const, Dgraph * restrict const, DgraphCoarsenMulti * restrict * const, const Gnum, const Gnum, const double, const int); scotch_6.0.9/src/libscotch/hmesh_order_hx.c0000644000302600021200000002015713465315041021167 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hx.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains service routines **/ /** for the hmeshOrderH{d|f} ordering **/ /** routines. **/ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to : 24 jan 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 25 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_HX #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_hx.h" /***********************************/ /* */ /* These are the service routines. */ /* */ /***********************************/ /* This routine fills the input arrays for ** the mesh ordering routines. ** It returns: ** - void : in all cases. */ int hmeshOrderHxFill ( const Hmesh * restrict const meshptr, Gnum * restrict const petab, Gnum * restrict const lentab, Gnum * restrict const iwtab, Gnum * restrict const nvartab, Gnum * restrict const elentab, Gnum * restrict const pfreptr) { HmeshOrderHxHash * restrict hashtab; /* Neighbor hash table */ Gnum hashsiz; Gnum hashmsk; Gnum n; /* Number of nodes to order */ Gnum velmadj; /* Index adjustment for element indices */ Gnum vnodadj; /* Index adjustment for node indices */ Gnum velmnum; Gnum vnodnum; Gnum degrval; Gnum vertnum; Gnum edgenum; Gnum * restrict const petax = petab - 1; /* Base HAMF arrays at base 1 */ Gnum * restrict const iwtax = iwtab - 1; Gnum * restrict const lentax = lentab - 1; Gnum * restrict const nvartax = nvartab - 1; Gnum * restrict const elentax = elentab - 1; const Gnum * restrict const verttax = meshptr->m.verttax; const Gnum * restrict const vendtax = meshptr->m.vendtax; #if 0 /* TODO when weighted vertices will be managed */ const Gnum * restrict const velotax = meshptr->m.velotax; #endif const Gnum * restrict const edgetax = meshptr->m.edgetax; n = meshptr->m.velmnbr + meshptr->m.vnodnbr; for (hashsiz = 16, degrval = meshptr->m.degrmax * (meshptr->m.degrmax - 1); /* Compute hash table size */ hashsiz < degrval; hashsiz <<= 1) ; hashsiz <<= 1; hashmsk = hashsiz - 1; if ((hashtab = memAlloc (hashsiz * sizeof (HmeshOrderHxHash))) == NULL) { errorPrint ("hmeshOrderHxFill: out of memory"); return (1); } memSet (hashtab, ~0, hashsiz * sizeof (HmeshOrderHxHash)); velmadj = 1 + meshptr->m.vnodnbr - meshptr->m.velmbas; for (vnodnum = meshptr->m.vnodbas, vertnum = edgenum = 1; /* Copy non-halo node data with base 1 */ vnodnum < meshptr->vnohnnd; vertnum ++, vnodnum ++) { Gnum enodnum; Gnum nghbnbr; petax[vertnum] = edgenum; lentax[vertnum] = vendtax[vnodnum] - verttax[vnodnum]; #if 0 /* TODO when weighted vertices will be managed */ nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; #else nvartax[vertnum] = 1; #endif for (enodnum = verttax[vnodnum], nghbnbr = -1; /* -1 since loop edge will be processed in the main loop */ enodnum < vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; velmnum = edgetax[enodnum]; iwtax[edgenum ++] = velmnum + velmadj; /* Adjust end element index */ for (eelmnum = verttax[velmnum]; eelmnum < vendtax[velmnum]; eelmnum ++) { Gnum vnodend; Gnum hnodend; vnodend = edgetax[eelmnum]; for (hnodend = (vnodend * HMESHORDERHXHASHPRIME) & hashmsk; ; hnodend = (hnodend + 1) & hashmsk) { if (hashtab[hnodend].vertnum != vnodnum) { hashtab[hnodend].vertnum = vnodnum; hashtab[hnodend].vertend = vnodend; nghbnbr ++; } if (hashtab[hnodend].vertend == vnodend) /* If end vertex already present */ break; /* Skip to next end vertex */ } } elentax[vertnum] = nghbnbr; } } for ( ; vnodnum < meshptr->m.vnodnnd; vnodnum ++, vertnum ++) { /* Copy halo vertices with base 1 */ Gnum degrval; Gnum enodnum; degrval = verttax[vnodnum] - vendtax[vnodnum]; petax[vertnum] = edgenum; lentax[vertnum] = (degrval != 0) ? degrval : - (n + 1); elentax[vertnum] = 0; #if 0 /* TODO when weighted vertices will be managed */ nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; #else nvartax[vertnum] = 1; #endif for (enodnum = verttax[vnodnum]; enodnum < vendtax[vnodnum]; enodnum ++) iwtax[edgenum ++] = edgetax[enodnum] + velmadj; /* Adjust end element index */ } vnodadj = 1 - meshptr->m.vnodbas; /* Base nodes at 1 */ for (velmnum = meshptr->m.velmbas; velmnum < meshptr->m.velmnnd; velmnum ++, vertnum ++) { Gnum eelmnum; petax[vertnum] = edgenum; lentax[vertnum] = meshptr->m.vendtax[velmnum] - meshptr->m.verttax[velmnum]; elentax[vertnum] = - (n + 1); #if 0 /* TODO when weighted vertices will be managed */ nvartax[vertnum] = (velotax != NULL) ? velotax[vnodnum] : 1; #else nvartax[vertnum] = 1; #endif for (eelmnum = verttax[velmnum]; eelmnum < vendtax[velmnum]; eelmnum ++) iwtax[edgenum ++] = edgetax[eelmnum] + vnodadj; /* Adjust end node index */ } *pfreptr = edgenum; /* Set index to first free area */ memFree (hashtab); return (0); } scotch_6.0.9/src/libscotch/arch_dist.c0000644000302600021200000002220213560005302020112 0ustar pelegrinpelegrin/* Copyright 2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_dist.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the distance **/ /** multiplicator pseudo-architecture **/ /** functions. This pseudo-architecture is **/ /** used by graph repartitioning routines **/ /** to handle floating-point migration **/ /** costs. **/ /** **/ /** DATES : # Version 6.0 : from : 14 feb 2011 **/ /** to : 30 jun 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_DIST #include "module.h" #include "common.h" #include "arch.h" #include "arch_dist.h" /**************************************/ /* */ /* These are the entry points for the */ /* distance graph routines. They are */ /* used only in debugging mode, to */ /* provide breakpoints for routines */ /* which are else implemented as */ /* macros for the sake of efficiency. */ /* */ /**************************************/ /* This routine loads the distance ** graph architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archDistArchLoad ( ArchDist * restrict const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if (sizeof (ArchDist) > sizeof (ArchDummy)) { errorPrint ("archDistArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (intLoad (stream, &archptr->crloval) != 1) { errorPrint ("archDistArchLoad: bad input"); return (1); } return (archLoad (archptr->archptr, stream)); /* Load sub-architecture */ } /* This routine saves the ** distance graph architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archDistArchSave ( const ArchDist * const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if (sizeof (ArchDist) > sizeof (ArchDummy)) { errorPrint ("archDistArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING "\t", (Anum) archptr->crloval) == EOF) { errorPrint ("archDistArchSave: bad output"); return (1); } return (archSave (archptr->archptr, stream)); /* Save sub-architecture */ } /* This routine builds the distance graph ** architecture of an original architecture. ** It returns: ** - 0 : if the architecture has been successfully built. ** - !0 : on error. */ int archDistArchBuild ( Arch * const archptr, Arch * const orgarchptr, const Anum crloval) { ArchDist * archdataptr; archInit (archptr); /* Initialize architecture body */ archptr->class = archClass ("dist"); /* Set architecture class */ archptr->flagval = orgarchptr->flagval; /* Set architecture flag */ archdataptr = (ArchDist *) (void *) &archptr->data; archdataptr->archptr = orgarchptr; archdataptr->crloval = crloval; return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archDistDomNum ( const ArchDist * const archptr, const ArchDom * const domptr) { return (archDomNum (archptr->archptr, domptr)); /* Call proper routine */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archDistDomTerm ( const ArchDist * const archptr, ArchDom * const domptr, const ArchDomNum domnum) { return (archDomTerm (archptr->archptr, domptr, domnum)); /* Call proper routine */ } /* This function returns the number of ** elements in the distance domain. */ Anum archDistDomSize ( const ArchDist * const archptr, const ArchDom * const domptr) { return (archDomSize (archptr->archptr, domptr)); /* Call proper routine */ } /* This function returns the weight of ** the given distance domain. */ Anum archDistDomWght ( const ArchDist * const archptr, const ArchDom * const domptr) { return (archDomWght (archptr->archptr, domptr)); /* Call proper routine */ } /* This function returns the average ** distance between two distance ** subdomains. */ Anum archDistDomDist ( const ArchDist * const archptr, const ArchDom * const dom0ptr, const ArchDom * const dom1ptr) { return (archptr->crloval * archDomDist (archptr->archptr, dom0ptr, dom1ptr)); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDistDomFrst ( const ArchDist * const archptr, ArchDom * restrict const domptr) { return (archDomFrst (archptr->archptr, domptr)); /* Call proper routine */ } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDistDomLoad ( const ArchDist * const archptr, ArchDom * restrict const domptr, FILE * const stream) { return (archDomLoad (archptr->archptr, domptr, stream)); /* Call proper routine */ } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDistDomSave ( const ArchDist * const archptr, const ArchDom * const domptr, FILE * const stream) { return (archDomSave (archptr->archptr, domptr, stream)); /* Call proper routine */ } /* This function tries to split a distance ** graph domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archDistDomBipart ( const ArchDist * const archptr, const ArchDom * const domptr, ArchDom * restrict const dom0ptr, ArchDom * restrict const dom1ptr) { return (archDomBipart (archptr->archptr, domptr, dom0ptr, dom1ptr)); /* Call proper routine */ } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archDistDomIncl ( const ArchDist * const archptr, const ArchDom * const dom0ptr, const ArchDom * const dom1ptr) { return (archDomIncl (archptr->archptr, dom0ptr, dom1ptr)); /* Call proper routine */ } /* This function creates the MPI_Datatype for ** distance graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archDistDomMpiType ( const ArchDist * const archptr, MPI_Datatype * const typeptr) { return (archDomMpiType (archptr->archptr, typeptr)); /* Call proper routine as we don't add any parameter */ } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/library_dgraph.c0000644000302600021200000002223613560013261021155 0ustar pelegrinpelegrin/* Copyright 2007,2009,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 26 apr 2006 **/ /** to 14 apr 2008 **/ /** # Version 5.1 : from : 26 mar 2009 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 27 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" /* For graphPtscotch() */ #include "dgraph.h" #include "ptscotch.h" /****************************************/ /* */ /* These routines are the C API for the */ /* distributed graph handling routines. */ /* */ /****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** distributed graph structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Dgraph * SCOTCH_dgraphAlloc () { return ((SCOTCH_Dgraph *) memAlloc (sizeof (SCOTCH_Dgraph))); } /*+ This routine initializes the opaque *** distributed graph structure used to *** handle distributed graphs in the *** Scotch library. *** It returns: *** - 0 : if the initialization succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphInit ( SCOTCH_Dgraph * const grafptr, MPI_Comm proccomm) /* Communicator to be used for all communications */ { #ifdef SCOTCH_PTHREAD int thrdlvlval; #endif /* SCOTCH_PTHREAD */ #ifdef SCOTCH_PTHREAD MPI_Query_thread (&thrdlvlval); if (thrdlvlval < MPI_THREAD_MULTIPLE) { errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": Scotch compiled with SCOTCH_PTHREAD and program not launched with MPI_THREAD_MULTIPLE"); return (1); } #endif /* SCOTCH_PTHREAD */ if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Dgraph) < sizeof (Dgraph)) { errorPrint (STRINGIFY (SCOTCH_dgraphInit) ": internal error (2)"); return (1); } return (dgraphInit ((Dgraph *) grafptr, proccomm)); } /*+ This routine frees the contents of the *** given opaque graph structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphExit ( SCOTCH_Dgraph * const grafptr) { dgraphExit ((Dgraph *) grafptr); } /*+ This routine frees the contents of the *** given opaque graph structure but does *** not free its private data. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphFree ( SCOTCH_Dgraph * const grafptr) { dgraphFree ((Dgraph *) grafptr); } /*+ This routine accesses graph size data. *** NULL pointers on input indicate unwanted *** data. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphSize ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Num * const vertglbnbr, SCOTCH_Num * const vertlocnbr, SCOTCH_Num * const edgeglbnbr, SCOTCH_Num * const edgelocnbr) { const Dgraph * srcgrafptr; srcgrafptr = (Dgraph *) grafptr; if (vertglbnbr != NULL) *vertglbnbr = (SCOTCH_Num) (srcgrafptr->vertglbnbr); if (vertlocnbr != NULL) *vertlocnbr = (SCOTCH_Num) (srcgrafptr->vertlocnbr); if (edgeglbnbr != NULL) *edgeglbnbr = (SCOTCH_Num) srcgrafptr->edgeglbnbr; if (edgelocnbr != NULL) *edgelocnbr = (SCOTCH_Num) srcgrafptr->edgelocnbr; } /*+ This routine accesses all of the graph data. *** NULL pointers on input indicate unwanted *** data. NULL pointers on output indicate *** unexisting arrays. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphData ( const SCOTCH_Dgraph * const grafptr, /* Graph structure to read */ SCOTCH_Num * const baseptr, /* Base value */ SCOTCH_Num * const vertglbptr, /* Number of global vertices */ SCOTCH_Num * const vertlocptr, /* Number of local vertices */ SCOTCH_Num * const vertlocptz, /* Maximum number of local vertices */ SCOTCH_Num * const vertgstptr, /* Number of local + ghost vertices */ SCOTCH_Num ** const vertloctab, /* Vertex array [vertnbr+1] */ SCOTCH_Num ** const vendloctab, /* Vertex array [vertnbr] */ SCOTCH_Num ** const veloloctab, /* Vertex load array */ SCOTCH_Num ** const vlblloctab, /* Vertex label array */ SCOTCH_Num * const edgeglbptr, /* Number of global edges (arcs) */ SCOTCH_Num * const edgelocptr, /* Number of local edges (arcs) */ SCOTCH_Num * const edgelocptz, /* Size of local edge array */ SCOTCH_Num ** const edgeloctab, /* Local edge array [edgelocsiz] */ SCOTCH_Num ** const edgegsttab, /* Ghost edge array [edgelocsiz] */ SCOTCH_Num ** const edloloctab, /* Edge load array [edgelocsiz] */ MPI_Comm * const comm) /* MPI Communicator */ { const Dgraph * srcgrafptr; /* Pointer to source graph structure */ srcgrafptr = (const Dgraph *) grafptr; if (baseptr != NULL) *baseptr = srcgrafptr->baseval; if (vertglbptr != NULL) *vertglbptr = srcgrafptr->vertglbnbr; if (vertlocptr != NULL) *vertlocptr = srcgrafptr->vertlocnbr; if (vertlocptz != NULL) *vertlocptz = srcgrafptr->procvrttab[srcgrafptr->proclocnum + 1] - srcgrafptr->procvrttab[srcgrafptr->proclocnum]; if (vertgstptr != NULL) *vertgstptr = ((srcgrafptr->flagval & DGRAPHHASEDGEGST) != 0) ? srcgrafptr->vertgstnbr : -1; if (vertloctab != NULL) *vertloctab = srcgrafptr->vertloctax + srcgrafptr->baseval; if (vendloctab != NULL) *vendloctab = srcgrafptr->vendloctax + srcgrafptr->baseval; if (veloloctab != NULL) *veloloctab = (srcgrafptr->veloloctax != NULL) ? srcgrafptr->veloloctax + srcgrafptr->baseval : NULL; if (vlblloctab != NULL) *vlblloctab = (srcgrafptr->vlblloctax != NULL) ? srcgrafptr->vlblloctax + srcgrafptr->baseval : NULL; if (edgeglbptr != NULL) *edgeglbptr = srcgrafptr->edgeglbnbr; if (edgelocptr != NULL) *edgelocptr = srcgrafptr->edgelocnbr; if (edgelocptz != NULL) *edgelocptz = srcgrafptr->edgelocsiz; if (edgeloctab != NULL) *edgeloctab = srcgrafptr->edgeloctax + srcgrafptr->baseval; if (edgegsttab != NULL) *edgegsttab = (srcgrafptr->edgegsttax != NULL) ? srcgrafptr->edgegsttax + srcgrafptr->baseval : NULL; if (edloloctab != NULL) *edloloctab = (srcgrafptr->edloloctax != NULL) ? srcgrafptr->edloloctax + srcgrafptr->baseval : NULL; if (comm != NULL) *comm = srcgrafptr->proccomm; } scotch_6.0.9/src/libscotch/library_arch_build.c0000644000302600021200000001764013560013261022007 0ustar pelegrinpelegrin/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch_build.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the target **/ /** architecture building routine of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.3 : from : 02 oct 1998 **/ /** to 29 mar 1999 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 08 mar 2005 **/ /** to 17 mar 2005 **/ /** # Version 6.0 : from : 16 mar 2016 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "arch_build.h" #include "arch_build2.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the C API for */ /* the architecture building routine. */ /* */ /**************************************/ /*+ This routine parses the given *** bipartitioning strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratGraphBipart ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&bgraphbipartststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratBipart) ": error in bipartitioning strategy"); return (1); } return (0); } /*+ This routine parses the given *** bipartitioning strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratArchBuild ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); #if 0 if ((*((Strat **) stratptr) = stratInit (&archbuildststratab, "")) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratArchBuild) ": error in architecture building strategy"); return (1); } #endif return (0); } /*+ This routine fills the contents of the given *** opaque target structure with the data provided *** by the user. The source graph provided on input *** is turned into a decomposition-defined target *** architecture. *** It returns: *** - 0 : if the computation succeeded. *** - !0 : on error. +*/ int SCOTCH_archBuild0 ( SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ const SCOTCH_Num listnbr, /*+ Number of elements in sublist +*/ const SCOTCH_Num * const listptr, /*+ Pointer to sublist +*/ const SCOTCH_Strat * const stratptr) /*+ Bipartitoning strategy +*/ { Strat * bipstratptr; VertList graflistdat; VertList * graflistptr; int o; if ((sizeof (SCOTCH_Num) != sizeof (Gnum)) || (sizeof (SCOTCH_Num) != sizeof (Anum))) { errorPrint (STRINGIFY (SCOTCH_archBuild0) ": internal error"); return (1); } if (*((Strat **) stratptr) == NULL) /* Set default mapping strategy if necessary */ *((Strat **) stratptr) = stratInit (&bgraphbipartststratab, "(m{vert=50,low=h{pass=10},asc=f{move=100,bal=0.1}}f{move=100,bal=0.05})(/((load0=load)|(load0=0))?x;)"); bipstratptr = *((Strat **) stratptr); if (bipstratptr->tabl != &bgraphbipartststratab) { errorPrint (STRINGIFY (SCOTCH_archBuild0) ": not a bipartitioning strategy"); return (1); } if ((listnbr == ((Graph *) grafptr)->vertnbr) || (listnbr == 0) || (listptr == NULL)) graflistptr = NULL; else { graflistptr = &graflistdat; graflistdat.vnumnbr = (Gnum) listnbr; graflistdat.vnumtab = (Gnum *) listptr; } o = archDecoArchBuild ((Arch * const) archptr, (const Graph * const) grafptr, graflistptr, bipstratptr); return (o); } int SCOTCH_archBuild2 ( SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ const SCOTCH_Num vnumnbr, /*+ Number of elements in sublist +*/ const SCOTCH_Num * const vnumtab) /*+ Pointer to sublist +*/ { Gnum vertnbr; Gnum listnbr; Gnum * listtab; if ((sizeof (SCOTCH_Num) != sizeof (Gnum)) || (sizeof (SCOTCH_Num) != sizeof (Anum))) { errorPrint (STRINGIFY (SCOTCH_archBuild2) ": internal error"); return (1); } vertnbr = ((Graph *) grafptr)->vertnbr; if ((vnumnbr == vertnbr) || (vnumnbr == 0) || (vnumtab == NULL)) { listnbr = vertnbr; listtab = NULL; } else { listnbr = (Gnum) vnumnbr; listtab = (Gnum *) vnumtab; } return (archDeco2ArchBuild ((Arch * const) archptr, (const Graph * const) grafptr, listnbr, listtab)); } int SCOTCH_archBuild ( SCOTCH_Arch * const archptr, /*+ Target architecture to build +*/ const SCOTCH_Graph * const grafptr, /*+ Graph to turn into architecture +*/ const SCOTCH_Num listnbr, /*+ Number of elements in sublist +*/ const SCOTCH_Num * const listptr, /*+ Pointer to sublist +*/ const SCOTCH_Strat * const stratptr) /*+ Bipartitoning strategy +*/ { return (SCOTCH_archBuild0 (archptr, grafptr, listnbr, listptr, stratptr)); /* Old-style behavior */ } scotch_6.0.9/src/libscotch/kgraph_map_ex.h0000644000302600021200000001266013465315041021003 0ustar pelegrinpelegrin/* Copyright 2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_ex.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the load balancing graph mapping **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jun 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct KgraphMapExParam_ { double kbalval; /*+ Imbalance ratio +*/ } KgraphMapExParam; /*+ This structure holds extended domain information. sonstab[0] == -1 if node is terminal. Else, sonstab[1] == -1 means only one branch is considered at this level. +*/ typedef struct KgraphMapExDom_ { Anum treenum; /*+ Tree node index for this domain +*/ Anum domnwght; /*+ Domain weight +*/ Gnum compload; /*+ Current load in domain +*/ Gnum comploadmax; /*+ Maximum load allowed in domain +*/ } KgraphMapExDom; /*+ This structure records the best candidate domain found to date. +*/ typedef struct KgraphMapExFind_ { Gnum comploaddlt; /*+ Best imbalance +*/ Anum domnnum; /*+ Domain number +*/ } KgraphMapExFind; /*+ This structure allows one to sort vertices by vertex weight. +*/ typedef struct KgraphMapExSort_ { Gnum veloval; /*+ Vertex load +*/ Gnum vertnum; /*+ Vertex number +*/ } KgraphMapExSort; /*+ This structure allows one to sort existing terminal domains by terminal number. +*/ typedef struct KgraphMapExTerm_ { Anum termnum; /*+ Domain terminal number +*/ Anum domnnum; /*+ Domain index in domntab +*/ } KgraphMapExTerm; /*+ This structure holds a recursive bi-mapping tree node. +*/ typedef struct KgraphMapExTree_ { Anum fathnum; /*+ Index of father node; -1 if root +*/ Anum sonstab[2]; /*+ Index of sons; [0] == -1 for terminal +*/ ArchDom domndat; /*+ Subdomain data +*/ } KgraphMapExTree; /* ** The function prototypes. */ #ifdef KGRAPH_MAP_EX static Anum kgraphMapExTree (const Arch * restrict const, const KgraphMapExTerm * restrict const, const Anum, KgraphMapExDom * restrict const, KgraphMapExTree * restrict const, Anum * restrict const, const ArchDom * restrict const); static Anum kgraphMapExFind (const Arch * restrict const, const KgraphMapExTree * restrict const, const KgraphMapExDom * restrict const, const Anum, const Gnum); static int kgraphMapExFind2 (const Arch * restrict const, const KgraphMapExTree * restrict const, const KgraphMapExDom * restrict const, KgraphMapExFind * restrict const, const Anum, const Anum, const Gnum); #endif /* KGRAPH_MAP_EX */ int kgraphMapEx (Kgraph * restrict const, const KgraphMapExParam * const); scotch_6.0.9/src/libscotch/order.h0000644000302600021200000001564013465315041017312 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the generic ordering **/ /** structure. **/ /** **/ /** DATES : # Version 3.2 : from : 19 oct 1996 **/ /** to : 21 aug 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 28 dec 2004 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to 25 jul 2007 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 08 may 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ #define ORDER_H /* ** The defines. */ /*+ Ordering option flags. +*/ #define ORDERNONE 0x0000 /* No options set */ #define ORDERFREEPERI 0x0001 /* Free inverse permutation array */ /*+ Column block separation tree cell flags. The ORDERCBLKNEDI value must correspond to a single bit and be equal to the DORDERCBLKNEDI value. +*/ #define ORDERCBLKOTHR 0x0000 /*+ Other ordering node +*/ #define ORDERCBLKNEDI 0x0001 /*+ Nested dissection separator node +*/ #define ORDERCBLKDICO 0x0002 /*+ Disconnected components node +*/ /* ** The type and structure definitions. */ /*+ Column-block tree node. Each node defines a column block, which is either a separator or a leaf built by nested dissection, or a super-variable built by minimum-degree algorithms. Column blocks are given in ascending order within sub-arrays, for proper infix traversal. +*/ typedef struct OrderCblk_ { int typeval; /*+ Type of tree node +*/ Gnum vnodnbr; /*+ Number of node vertices in subtree +*/ Gnum cblknbr; /*+ Number of descendent column blocks +*/ struct OrderCblk_ * cblktab; /*+ Sub-array of column-blocks +*/ } OrderCblk; /*+ Ordering structure. A block ordering is defined by its inverse permutation peritab and by the tree of permuted ordering blocks, which, once flattened, defines the blocks of the ordering. For the sake of consistency between orderings that have been produced either from graphs or meshes, all ordering values are based from baseval. +*/ typedef struct Order_ { int flagval; /*+ Flag value +*/ Gnum baseval; /*+ Base value for structures +*/ Gnum vnodnbr; /*+ Number of node vertices +*/ Gnum treenbr; /*+ Number of column block tree nodes +*/ Gnum cblknbr; /*+ Number of column blocks +*/ OrderCblk cblktre; /*+ Root of column block tree +*/ Gnum * peritab; /*+ Inverse permutation array [vnodnbr] +*/ } Order; /* ** The function prototypes. */ #ifdef ORDER static void orderExit2 (OrderCblk * const, const Gnum); static void orderRang2 (Gnum ** const, Gnum * const, const OrderCblk * const); static void orderTree2 (Gnum * restrict const, Gnum * restrict const, const OrderCblk * restrict const, Gnum); #endif /* ORDER */ int orderInit (Order * const, const Gnum, const Gnum, Gnum * const); void orderExit (Order * const); int orderLoad (Order * restrict const, const Gnum * restrict const, FILE * restrict const); int orderSave (const Order * restrict const, const Gnum * restrict const, FILE * restrict const); int orderSaveMap (const Order * const, const Gnum * restrict const, FILE * restrict const); int orderSaveTree (const Order * const, const Gnum * restrict const, FILE * restrict const); void orderPeri (const Gnum * const, const Gnum, const Gnum, Gnum * const, const Gnum); void orderRang (const Order * const, Gnum * const); void orderTree (const Order * restrict const, Gnum * restrict const); int orderCheck (const Order * const); scotch_6.0.9/src/libscotch/geom.c0000644000302600021200000000663513303015264017120 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : geom.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the geometric **/ /** source graph functions. **/ /** **/ /** DATES : # Version 3.3 : from : 12 dec 1998 **/ /** to 21 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 26 nov 2003 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GEOM #include "module.h" #include "common.h" #include "geom.h" /********************************************/ /* */ /* These routines handle geometrical gdata. */ /* */ /********************************************/ /* This routine initializes a geometrical ** data structure. ** It returns: ** - 0 : in all cases. */ int geomInit ( Geom * restrict const geomptr) { geomptr->dimnnbr = 0; /* Initialize geometry */ geomptr->geomtab = NULL; return (0); } /* This routine frees a geometrical graph structure. ** It returns: ** - VOID : in all cases. */ void geomExit ( Geom * restrict const geomptr) { if (geomptr->geomtab != NULL) memFree (geomptr->geomtab); geomptr->dimnnbr = 0; geomptr->geomtab = NULL; } scotch_6.0.9/src/libscotch/library_graph_io_habo_f.c0000644000302600021200000001247213560013261022777 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_habo_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 23 nov 2005 **/ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMLOADHABO, graphgeomloadhabo, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADHABO)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomLoadHabo (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/arch_dist.h0000644000302600021200000001201113560005302020114 0ustar pelegrinpelegrin/* Copyright 2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_dist.h **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the distance multiplicator pseudo- **/ /** architecture functions. This pseudo- **/ /** architecture is used by graph reparti- **/ /** tioning routines to handle floating- **/ /** point migration costs. **/ /** **/ /** DATES : # Version 6.0 : from : 14 feb 2011 **/ /** to : 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_DIST_H_STRUCT #define ARCH_DIST_H_STRUCT /*+ The distance graph definitions. +*/ typedef struct ArchDist_ { struct Arch_ * archptr; /*+ Encapsulated architecture +*/ Anum crloval; /*+ Coefficient load for regular edges +*/ } ArchDist; #define ArchDistDom ArchDom /*+ Domain is the regular domain +*/ #endif /* ARCH_DIST_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_DIST_H_PROTO #define ARCH_DIST_H_PROTO int archDistArchLoad (ArchDist * restrict const, FILE * restrict const); int archDistArchSave (const ArchDist * const, FILE * restrict const); #define archDistArchFree NULL #define archDistMatchInit NULL #define archDistMatchExit NULL #define archDistMatchMate NULL int archDistArchBuild (struct Arch_ * const, struct Arch_ * const, const Anum); ArchDomNum archDistDomNum (const ArchDist * const, const ArchDom * const); int archDistDomTerm (const ArchDist * const, ArchDom * restrict const, const ArchDomNum); Anum archDistDomSize (const ArchDist * const, const ArchDom * const); Anum archDistDomWght (const ArchDist * const, const ArchDom * const); Anum archDistDomDist (const ArchDist * const, const ArchDom * const, const ArchDom * const); int archDistDomFrst (const ArchDist * const, ArchDom * const); int archDistDomLoad (const ArchDist * const, ArchDom * const, FILE * const); int archDistDomSave (const ArchDist * const, const ArchDom * const, FILE * const); int archDistDomBipart (const ArchDist * const, const ArchDom * const, ArchDom * restrict const, ArchDom * restrict const); int archDistDomIncl (const ArchDist * const, const ArchDom * const, const ArchDom * const); #ifdef SCOTCH_PTSCOTCH int archDistDomMpiType (const ArchDist * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_DIST_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/library_mesh_graph.c0000644000302600021200000000623413560013261022025 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_graph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Scotch **/ /** mesh-to-graph converter. **/ /** **/ /** DATES : # Version 4.0 : from : 21 jan 2004 **/ /** to 21 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Scotch graph and geometry */ /* handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque graph *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_meshGraph ( const SCOTCH_Mesh * restrict const meshptr, SCOTCH_Graph * restrict const grafptr) { return (meshGraph ((Mesh *) meshptr, (Graph *) grafptr)); } scotch_6.0.9/src/libscotch/library_random_f.c0000644000302600021200000000666113560013261021501 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_random_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the random generator handling routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 21 nov 2005 **/ /** to 23 nov 2005 **/ /** # Version 6.0 : from : 08 oct 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the random handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ RANDOMPROC, randomproc, ( \ const int * const procnum), \ (procnum)) { SCOTCH_randomProc (*procnum); } /* ** */ SCOTCH_FORTRAN ( \ RANDOMRESET, randomreset, (), \ ()) { SCOTCH_randomReset (); } /* ** */ SCOTCH_FORTRAN ( \ RANDOMSEED, randomseed, ( \ const SCOTCH_Num * const seedptr), \ (seedptr)) { SCOTCH_randomSeed (*seedptr); } scotch_6.0.9/src/libscotch/hgraph_induce_edge.c0000644000302600021200000002740113470115365021757 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_induce_edge.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This commodity file contains the edge **/ /** arrays building subroutine which is **/ /** duplicated, with minor modifications, **/ /** into hgraph_induce.c **/ /** **/ /** DATES : # Version 4.0 : from : 10 jan 2002 **/ /** to 17 jan 2003 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 19 dec 2006 **/ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 22 mar 2012 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ static void HGRAPHINDUCE2NAME ( const Hgraph * restrict const orggrafptr, /* Pointer to original halo graph */ Gnum * restrict const orgindxtax, /* Array of numbers of selected vertices */ Hgraph * restrict const indgrafptr) /* Pointer to induced halo graph */ { Gnum indvertnum; /* Number of current induced vertex */ Gnum indvertnnd; /* Number of after-last induced (halo) vertex */ Gnum indvelosum; /* Overall induced vertex load */ Gnum indedgenum; /* Number of current edge in induced halo subgraph */ Gnum indenohnbr; /* Number of non-halo edges in halo subgraph */ Gnum inddegrmax; /* Maximum degree */ #ifdef SCOTCH_DEBUG_HGRAPH2 Gnum indedgenbs; /* Revised number of edges in halo subgraph */ #endif /* SCOTCH_DEBUG_HGRAPH2 */ #ifdef HGRAPHINDUCE2L /* If edge loads present */ Gnum indedlosum; Gnum indenlosum; #endif /* HGRAPHINDUCE2L */ const Gnum * restrict const orgverttax = orggrafptr->s.verttax; const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgvelotax = orggrafptr->s.velotax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; Gnum * restrict const indvnhdtax = indgrafptr->vnhdtax; Gnum * restrict const indverttax = indgrafptr->s.verttax; Gnum * restrict const indvelotax = indgrafptr->s.velotax; Gnum * restrict const indvnumtax = indgrafptr->s.vnumtax; Gnum * restrict const indedgetax = indgrafptr->s.edgetax; #ifdef HGRAPHINDUCE2L /* If edge loads present */ const Gnum * restrict const orgedlotax = orggrafptr->s.edlotax; Gnum * restrict indedlotax = indgrafptr->s.edlotax; /* Not const because location will change */ indedlosum = indenlosum = 0; #endif /* HGRAPHINDUCE2L */ inddegrmax = 0; for (indvertnum = indedgenum = indgrafptr->s.baseval, indvelosum = indenohnbr = 0, indvertnnd = indgrafptr->vnohnnd; /* For all non-halo vertices */ indvertnum < indgrafptr->vnohnnd; indvertnum ++) { Gnum orgvertnum; /* Number of current vertex in original halo graph */ Gnum orgedgenum; /* Number of current edge in original halo graph */ Gnum indedgennd; /* Index of after-last edge position in edge array */ Gnum indedhdnum; /* Index of after-last edge linking to non-halo vertices */ Gnum inddegrval; orgvertnum = indvnumtax[indvertnum]; indverttax[indvertnum] = indedgenum; indenohnbr -= indedgenum; /* Subtract base of non-halo edges */ if (indvelotax != NULL) { /* If graph has vertex weights */ indvelosum += /* Accumulate vertex loads */ indvelotax[indvertnum] = orgvelotax[orgvertnum]; } inddegrval = orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Get degree of non-halo node */ if (inddegrmax < inddegrval) /* Keep maximum degree */ inddegrmax = inddegrval; for (orgedgenum = orgverttax[orgvertnum], indedhdnum = indedgennd = indedgenum + inddegrval; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum orgvertend; /* Number of current end vertex in original halo graph */ Gnum indvertend; /* Number of current end vertex in induced halo subgraph */ orgvertend = orgedgetax[orgedgenum]; indvertend = orgindxtax[orgvertend]; if (indvertend == ~0) { /* If neighbor is yet undeclared halo vertex */ indvnumtax[indvertnnd] = orgvertend; /* Add number of halo vertex to array */ indvertend = orgindxtax[orgvertend] = indvertnnd ++; /* Get induced number of vertex */ } if (indvertend >= indgrafptr->vnohnnd) { /* If neighbor is halo vertex */ indedhdnum --; /* Add neighbor at end of edge sub-array */ indedgetax[indedhdnum] = indvertend; HGRAPHINDUCE2EDLOINIT (indedhdnum); } else { /* If heighbor is non-halo vertex */ indedgetax[indedgenum] = indvertend; /* Add neighbor at beginning of edge sub-array */ HGRAPHINDUCE2EDLOINIT (indedgenum); HGRAPHINDUCE2ENOHINIT; indedgenum ++; } } #ifdef SCOTCH_DEBUG_HGRAPH2 if (indedgenum != indedhdnum) { errorPrint (STRINGIFY (HGRAPHINDUCE2NAME) ": internal error (1)"); return; } #endif /* SCOTCH_DEBUG_HGRAPH2 */ indenohnbr += indedhdnum; /* Add position to number of non-halo edges */ indvnhdtax[indvertnum] = indedhdnum; /* Set end of non-halo sub-array */ indedgenum = indedgennd; /* Point to next free space in edge array */ } indgrafptr->vnlosum = (indvelotax != NULL) ? indvelosum : indgrafptr->vnohnbr; indgrafptr->enohnbr = indenohnbr; #ifdef SCOTCH_DEBUG_HGRAPH2 indedgenbs = 2 * (indedgenum - indgrafptr->s.baseval) - indenohnbr; /* Compute total number of edges */ #endif /* SCOTCH_DEBUG_HGRAPH2 */ #ifdef HGRAPHINDUCE2L /* If edge loads present */ { Gnum * indedgetab; /* Dummy area to recieve un-based edgetab */ Gnum * indedlotab; /* Save of old position of edgetab array */ #ifndef SCOTCH_DEBUG_HGRAPH2 Gnum indedgenbs; /* Revised number of edges in halo subgraph */ indedgenbs = 2 * (indedgenum - indgrafptr->s.baseval) - indenohnbr; /* Compute total number of edges */ #endif /* SCOTCH_DEBUG_HGRAPH2 */ indedlotab = indedlotax + indgrafptr->s.baseval; /* Save old offset of move area */ memOffset (indedgetax + indgrafptr->s.baseval, /* Compute new offsets */ &indedgetab, (size_t) (indedgenbs * sizeof (Gnum)), &indedlotax, (size_t) (indedgenbs * sizeof (Gnum)), NULL); memMov (indedlotax, indedlotab, (indedgenum - indgrafptr->s.baseval) * sizeof (Gnum)); /* Move already existing edge load array */ indgrafptr->s.edlotax = /* Record new position of edge load array */ indedlotax -= indgrafptr->s.baseval; } #endif /* HGRAPHINDUCE2L */ for ( ; indvertnum < indvertnnd; indvertnum ++) { /* For all halo vertices found during first pass */ Gnum orgvertnum; /* Number of current vertex in original halo graph */ Gnum orgedgenum; /* Number of current edge in original halo graph */ orgvertnum = indvnumtax[indvertnum]; indverttax[indvertnum] = indedgenum; if (indvelotax != NULL) { /* If graph has vertex weights */ indvelosum += /* Accumulate vertex loads */ indvelotax[indvertnum] = orgvelotax[orgvertnum]; } for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum orgvertend; /* Number of current end vertex in original halo graph */ Gnum indvertend; /* Number of current end vertex in induced halo subgraph */ orgvertend = orgedgetax[orgedgenum]; indvertend = orgindxtax[orgvertend]; if ((indvertend != ~0) && /* If end vertex in induced halo subgraph */ (indvertend < indgrafptr->vnohnnd)) { /* And in its non-halo part only */ indedgetax[indedgenum] = indvertend; HGRAPHINDUCE2EDLOINIT (indedgenum); indedgenum ++; } } if (inddegrmax < (indedgenum - indverttax[indvertnum])) inddegrmax = (indedgenum - indverttax[indvertnum]); } #ifdef SCOTCH_DEBUG_HGRAPH2 if ((indedgenum - indgrafptr->s.baseval) != indedgenbs) { errorPrint (STRINGIFY (HGRAPHINDUCE2NAME) ": internal error (2)"); return; } #endif /* SCOTCH_DEBUG_HGRAPH2 */ indverttax[indvertnnd] = indedgenum; /* Set end of compact vertex array */ indgrafptr->s.vertnbr = indvertnnd - indgrafptr->s.baseval; indgrafptr->s.vertnnd = indvertnnd; indgrafptr->s.velosum = (indvelotax != NULL) ? indvelosum : indgrafptr->s.vertnbr; indgrafptr->s.edgenbr = indedgenum - indgrafptr->s.baseval; /* Set actual number of edges */ indgrafptr->s.edlosum = HGRAPHINDUCE2EDLOSUM; indgrafptr->s.degrmax = inddegrmax; indgrafptr->enlosum = HGRAPHINDUCE2ENLOSUM; } scotch_6.0.9/src/libscotch/dmapping.c0000644000302600021200000002561213303015264017764 0ustar pelegrinpelegrin/* Copyright 2008,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dmapping.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : This module handles (partial) mappings. **/ /** **/ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 03 sep 2013 **/ /** to 03 sep 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DMAPPING #include "module.h" #include "common.h" #include "dgraph.h" #include "arch.h" #include "dmapping.h" /***********************************/ /* */ /* These routines handle mappings. */ /* */ /***********************************/ /* This routine builds a mapping. ** It returns: ** - 0 : if mapping successfully initialized. ** - !0 : on error. */ int dmapInit ( Dmapping * restrict const dmapptr, const Arch * restrict const archptr) { dmapptr->fragptr = NULL; dmapptr->fragnbr = dmapptr->vertlocmax = dmapptr->vertlocnbr = 0; dmapptr->archdat = *archptr; #ifdef SCOTCH_PTHREAD pthread_mutex_init (&dmapptr->mutelocdat, NULL); /* Initialize local mutex */ #endif /* SCOTCH_PTHREAD */ return (0); } /* This routine frees the contents of the given ** mapping. The architecture data is never freed ** as it is usually a copy of an existing Arch ** structure. ** It returns: ** - VOID : in all cases. */ void dmapExit ( Dmapping * const dmapptr) { DmappingFrag * fragptr; DmappingFrag * fragtmp; for (fragptr = dmapptr->fragptr; fragptr != NULL; fragptr = fragtmp) { memFree (fragptr->vnumtab); memFree (fragptr->parttab); memFree (fragptr->domntab); fragtmp = fragptr->nextptr; memFree (fragptr); } #ifdef SCOTCH_PTHREAD pthread_mutex_destroy (&dmapptr->mutelocdat); /* Destroy local mutex */ #endif /* SCOTCH_PTHREAD */ #ifdef SCOTCH_DEBUG_DMAP2 memSet (dmapptr, ~0, sizeof (Dmapping)); #endif /* SCOTCH_DEBUG_DMAP2 */ } /* This routine adds a fragment to the given ** distributed mapping. ** It returns: ** - void : in all cases. */ void dmapAdd ( Dmapping * restrict const dmapptr, DmappingFrag * restrict const fragptr) { #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&dmapptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ if (dmapptr->vertlocmax < fragptr->vertnbr) dmapptr->vertlocmax = fragptr->vertnbr; dmapptr->vertlocnbr += fragptr->vertnbr; dmapptr->fragnbr ++; fragptr->nextptr = dmapptr->fragptr; /* Link fragment to mapping */ dmapptr->fragptr = fragptr; #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&dmapptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ } /* This routine propagates back distributed mapping ** information to a part array associated with a ** distributed graph structure. ** It returns: ** - 0 : if partition data successfully obtained. ** - !0 : on error. */ int dmapTerm ( const Dmapping * restrict const dmapptr, const Dgraph * restrict const grafptr, Gnum * restrict const termloctab) { Gnum * restrict termloctax; int * restrict sendcnttab; int * restrict senddsptab; int * restrict recvcnttab; int * restrict recvdsptab; DmappingTermSort * restrict sortsndtab; DmappingTermSort * restrict sortrcvtab; Gnum vertlocnum; int vertrcvnbr; int vertsndnbr; int procnum; DmappingFrag * restrict fragptr; Gnum reduloctab[2]; Gnum reduglbtab[2]; reduloctab[0] = dmapptr->vertlocnbr; reduloctab[1] = 0; if (memAllocGroup ((void **) (void *) &senddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &sendcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &recvdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &recvcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &sortsndtab, (size_t) ((dmapptr->vertlocnbr + 1) * sizeof (DmappingTermSort)), /* "+1" for end marker */ &sortrcvtab, (size_t) (grafptr->vertlocnbr * sizeof (DmappingTermSort)), NULL) == NULL) { errorPrint ("dmapTerm: out of memory"); reduloctab[1] = 1; } if (MPI_Allreduce (reduloctab, reduglbtab, 2, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapTerm: communication error (1)"); reduglbtab[1] = 1; } if (reduglbtab[1] != 0) { if (senddsptab != NULL) memFree (senddsptab); /* Free group leader */ return (1); } if (reduglbtab[0] == 0) { /* If mapping structure is empty, create an empty mapping */ memSet (termloctab, 0, grafptr->vertlocnbr * sizeof (Gnum)); memFree (senddsptab); /* Free group leader */ return (0); } if (reduglbtab[0] != grafptr->vertglbnbr) { errorPrint ("dmapTerm: invalid mapping (1)"); memFree (senddsptab); /* Free group leader */ return (1); } for (fragptr = dmapptr->fragptr, vertlocnum = 0; fragptr != NULL; fragptr = fragptr->nextptr) { Gnum fraglocnum; for (fraglocnum = 0; fraglocnum < fragptr->vertnbr; fraglocnum ++, vertlocnum ++) { #ifdef SCOTCH_DEBUG_DMAP2 if ((vertlocnum >= dmapptr->vertlocnbr) || (fragptr->parttab[fraglocnum] < 0) || (fragptr->parttab[fraglocnum] >= fragptr->domnnbr)) { errorPrint ("dmapTerm: invalid mapping (2)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ sortsndtab[vertlocnum].vertnum = fragptr->vnumtab[fraglocnum]; sortsndtab[vertlocnum].termnum = (Gnum) archDomNum (&dmapptr->archdat, &fragptr->domntab[fragptr->parttab[fraglocnum]]); } } #ifdef SCOTCH_DEBUG_DMAP2 if (vertlocnum != dmapptr->vertlocnbr) { errorPrint ("dmapTerm: invalid mapping (3)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ sortsndtab[vertlocnum].vertnum = /* Set end marker */ sortsndtab[vertlocnum].termnum = GNUMMAX; intSort2asc1 (sortsndtab, dmapptr->vertlocnbr); /* Sort mapping array by original vertex numbers, without marker */ for (vertlocnum = 0, procnum = 0; procnum < grafptr->procglbnbr; ) { Gnum vertsndnbr; Gnum procvrtval; vertsndnbr = 0; procvrtval = grafptr->procvrttab[procnum + 1]; while (sortsndtab[vertlocnum].vertnum < procvrtval) { vertsndnbr ++; vertlocnum ++; #ifdef SCOTCH_DEBUG_DMAP2 if (vertlocnum > dmapptr->vertlocnbr) { /* If beyond regular indices plus end marker */ errorPrint ("dmapTerm: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ } sendcnttab[procnum ++] = (int) (vertsndnbr * 2); /* Communication array for MPI, so (int), and "*2" because a Sort is 2 Gnums */ } #ifdef SCOTCH_DEBUG_DMAP2 if (vertlocnum != dmapptr->vertlocnbr) { errorPrint ("dmapTerm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ if (MPI_Alltoall (sendcnttab, 1, MPI_INT, recvcnttab, 1, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapTerm: communication error (2)"); return (1); } for (procnum = 0, vertrcvnbr = vertsndnbr = 0; procnum < grafptr->procglbnbr; procnum ++) { /* Accumulate send and receive indices */ recvdsptab[procnum] = vertrcvnbr; vertrcvnbr += recvcnttab[procnum]; /* Accumulate "*2" values as counts */ senddsptab[procnum] = vertsndnbr; vertsndnbr += sendcnttab[procnum]; } if (MPI_Alltoallv (sortsndtab, sendcnttab, senddsptab, GNUM_MPI, sortrcvtab, recvcnttab, recvdsptab, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapTerm: communication error (3)"); return (1); } memSet (termloctab, ~0, grafptr->vertlocnbr * sizeof (Gnum)); termloctax = termloctab - grafptr->procvrttab[grafptr->proclocnum]; /* Base local array through global indices */ for (vertlocnum = 0; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) { #ifdef SCOTCH_DEBUG_DMAP2 if (termloctax[sortrcvtab[vertlocnum].vertnum] != ~0) { errorPrint ("dmapTerm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ termloctax[sortrcvtab[vertlocnum].vertnum] = sortrcvtab[vertlocnum].termnum; } #ifdef SCOTCH_DEBUG_DMAP2 for (vertlocnum = 0; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) { if (termloctab[vertlocnum] == ~0) { errorPrint ("dmapTerm: internal error (4)"); return (1); } } #endif /* SCOTCH_DEBUG_DMAP2 */ memFree (senddsptab); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/library_graph_map_io.c0000644000302600021200000002752413560013261022342 0ustar pelegrinpelegrin/* Copyright 2011,2012,2015,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_io.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the API mappings **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 16 apr 2011 **/ /** to 26 oct 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "library_mapping.h" #include "library_graph_map_io.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the API mapping handling */ /* routines. */ /* */ /*************************************/ /*+ This routine loads the contents of the *** given mapping array from the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphTabLoad ( const SCOTCH_Graph * const actgrafptr, /*+ Graph to map +*/ SCOTCH_Num * const parttab, /*+ Array to load +*/ FILE * const stream) /*+ Input stream +*/ { Gnum vertsortnbr; /* Number of vertex sort slots to allocate */ VertSort * vertsorttab; /* Pointer to graph sorting array */ VertSort * mappsorttab; /* Pointer to mapping data sorting array */ int mappsortflag; /* Flag set if mapping data sorted by label */ Gnum mappsortlabl; /* Old label value */ Gnum mappsortval; Gnum mappfileval; Gnum mappfilenbr; /* Number of mapping pairs in file */ Gnum mappfilenum; /* Counter of mapping pairs in file */ Graph * grafptr; Gnum vertnbr; grafptr = (Graph *) actgrafptr; vertnbr = grafptr->vertnbr; memSet (parttab, ~0, vertnbr * sizeof (Anum)); /* Pre-initialize the partition array */ if ((fscanf (stream, GNUMSTRING, &mappfileval) != 1) || /* Read number of mapping pairs */ (mappfileval < 1)) { errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": bad input (1)"); return (1); } mappfilenbr = (Gnum) mappfileval; if (mappfilenbr <= 0) /* If nothing to do */ return (0); vertsortnbr = (grafptr->vlbltax != NULL) ? vertnbr : 0; if (memAllocGroup ((void **) (void *) /* Allocate temporary data */ &mappsorttab, (size_t) (mappfilenbr * sizeof (VertSort)), &vertsorttab, (size_t) (vertsortnbr * sizeof (VertSort)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": out of memory (1)"); return (1); } mappsortflag = 1; /* Assume mapping data sorted */ mappsortlabl = GNUMMIN; for (mappfilenum = 0; mappfilenum < mappfilenbr; mappfilenum ++) { if (fscanf (stream, GNUMSTRING GNUMSTRING, &mappsortval, &mappfileval) != 2) { errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": bad input (2)"); memFree (mappsorttab); /* Free group leader */ return (1); } mappsorttab[mappfilenum].labl = mappsortval; mappsorttab[mappfilenum].num = mappfileval; if (mappsortval < mappsortlabl) /* Check if mapping data sorted */ mappsortflag = 0; /* Mapping data not sorted */ mappsortlabl = mappsortval; } if (mappsortflag != 1) /* If mapping data not sorted */ intSort2asc1 (mappsorttab, mappfilenbr); /* Sort area by ascending labels */ for (mappfilenum = 1; mappfilenum < mappfilenbr; mappfilenum ++) { /* Check mapping data integrity */ if (mappsorttab[mappfilenum].labl == mappsorttab[mappfilenum - 1].labl) { errorPrint (STRINGIFY (SCOTCH_graphTabLoad) ": duplicate vertex label"); memFree (mappsorttab); /* Free group leader */ return (1); } } if (grafptr->vlbltax != NULL) { /* If graph has vertex labels */ int vertsortflag; /* Flag set if graph data sorted by label */ Gnum vertsortlabl; /* Old label value */ Gnum vertsortnum; vertsortflag = 1; /* Assume graph data sorted */ vertsortlabl = GNUMMIN; for (vertsortnum = 0; vertsortnum < vertnbr; vertsortnum ++) { vertsorttab[vertsortnum].labl = grafptr->vlbltax[vertsortnum]; vertsorttab[vertsortnum].num = vertsortnum; if (vertsorttab[vertsortnum].labl < vertsortlabl) /* Check if graph data sorted */ vertsortflag = 0; /* Graph data not sorted */ vertsortlabl = vertsorttab[vertsortnum].labl; } if (vertsortflag != 1) /* If graph label data not sorted */ intSort2asc1 (vertsorttab, vertnbr); /* Sort sort area by ascending labels */ for (vertsortnum = 0, mappfilenum = 0; vertsortnum < vertnbr; vertsortnum ++) { /* For all vertices in graph */ while (mappsorttab[mappfilenum].labl < vertsorttab[vertsortnum].labl) { mappfilenum ++; /* Search mapping vertex with same label */ if (mappfilenum >= mappfilenbr) /* If all mapping data processed */ goto end; /* Exit main loop */ } if (mappsorttab[mappfilenum].labl == vertsorttab[vertsortnum].labl) /* If label match found */ ((Anum *) parttab)[vertsorttab[vertsortnum].num] = mappsorttab[mappfilenum ++].num; } end: ; } else { /* Graph does not have vertex labels */ const Gnum baseval = grafptr->baseval; for (mappfilenum = 0; mappfilenum < mappfilenbr; mappfilenum ++) { /* For all mapping pairs */ Gnum vertnum; /* Vertex index to which mapping label is applied */ vertnum = mappsorttab[mappfilenum].labl - baseval; if ((vertnum >= 0) && (vertnum < vertnbr)) /* If valid vertex label */ ((Anum *) parttab)[vertnum] = (Anum) mappsorttab[mappfilenum].num; } } memFree (mappsorttab); /* Free group leader */ return (0); } /*+ This routine saves the contents of the *** given mapping array to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphTabSave ( const SCOTCH_Graph * const libgrafptr, /*+ Graph to map +*/ const SCOTCH_Num * const parttab, /*+ Array to save +*/ FILE * const stream) /*+ Input stream +*/ { Gnum vertnum; const Graph * restrict const grafptr = (Graph *) libgrafptr; const Gnum * restrict const vlbltax = grafptr->vlbltax; const Gnum * restrict const parttax = parttab - grafptr->baseval; if (fprintf (stream, GNUMSTRING "\n", (Gnum) grafptr->vertnbr) == EOF) { errorPrint (STRINGIFY (SCOTCH_graphTabSave) ": bad output (1)"); return (1); } for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum), (Gnum) parttax[vertnum]) == EOF) { errorPrint (STRINGIFY (SCOTCH_graphTabSave) ": bad output (2)"); return (1); } } return (0); } /*+ This routine loads the contents of *** the given user mapping from the *** given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapLoad ( const SCOTCH_Graph * const actgrafptr, /*+ Graph to map +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to save +*/ FILE * const stream) /*+ Output stream +*/ { const Graph * restrict const grafptr = (Graph *) actgrafptr; LibMapping * restrict lmapptr = (LibMapping *) mappptr; #ifdef SCOTCH_DEBUG_GRAPH2 if (grafptr != lmapptr->grafptr) { errorPrint (STRINGIFY (SCOTCH_graphMapLoad) ": mapping structure must derive from graph"); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ if (lmapptr->parttab == NULL) { /* Allocate array if necessary */ if ((lmapptr->parttab = (Gnum *) memAlloc (grafptr->vertnbr * sizeof (Gnum))) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphMapLoad) ": out of memory"); return (1); } lmapptr->flagval |= LIBMAPPINGFREEPART; /* As the array was not allocated by the user, it will be freed */ } return (SCOTCH_graphTabLoad (actgrafptr, (SCOTCH_Num *) lmapptr->parttab, stream)); } /*+ This routine saves the contents of *** the given user mapping to the given *** stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapSave ( const SCOTCH_Graph * const actgrafptr, /*+ Graph to map +*/ const SCOTCH_Mapping * const mappptr, /*+ Mapping to save +*/ FILE * const stream) /*+ Output stream +*/ { #ifdef SCOTCH_DEBUG_GRAPH2 const Graph * restrict const grafptr = (Graph *) actgrafptr; if (grafptr != (((LibMapping *) mappptr)->grafptr)) { errorPrint (STRINGIFY (SCOTCH_graphMapSave) ": mapping structure must derive from graph"); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (SCOTCH_graphTabSave (actgrafptr, (SCOTCH_Num *) ((LibMapping *) mappptr)->parttab, stream)); } scotch_6.0.9/src/libscotch/bgraph_bipart_gp.c0000644000302600021200000003033713560005346021464 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bipart_gp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module bipartitions an active **/ /** graph using the Gibbs, Poole, and **/ /** Stockmeyer algorithm. **/ /** **/ /** DATES : # Version 2.0 : from : 02 jun 1994 **/ /** to 05 oct 1994 **/ /** # Version 3.1 : from : 02 may 1996 **/ /** to 02 may 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 04 nov 2003 **/ /** to 27 nov 2006 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to 22 feb 2011 **/ /** # Version 6.0 : from : 08 aug 2014 **/ /** to 14 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_GP #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_gp.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartGp ( Bgraph * restrict const grafptr, const BgraphBipartGpParam * const paraptr) /*+ Method parameters +*/ { BgraphBipartGpQueue queudat; /* Neighbor queue */ BgraphBipartGpVertex * restrict vexxtax; /* Complementary vertex array */ Gnum compload0dlt; Gnum compsize0; Gnum commloadintn; Gnum commloadextn; Gnum rootnum; /* Index of potential next root */ const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const veextax = grafptr->veextax; if (grafptr->compsize0 != grafptr->s.vertnbr) /* If not all vertices already in part 0 */ bgraphZero (grafptr); /* Move all graph vertices to part 0 */ if (memAllocGroup ((void **) (void *) &queudat.queutab, (size_t) (grafptr->s.vertnbr * sizeof (Gnum)), &vexxtax, (size_t) (grafptr->s.vertnbr * sizeof (BgraphBipartGpVertex)), NULL) == NULL) { errorPrint ("bgraphBipartGp: out of memory"); return (1); } memSet (vexxtax, 0, grafptr->s.vertnbr * sizeof (BgraphBipartGpVertex)); /* Initialize pass numbers */ vexxtax -= grafptr->s.baseval; compsize0 = grafptr->s.vertnbr; /* All vertices in part zero */ compload0dlt = grafptr->s.velosum - grafptr->compload0avg; commloadintn = 0; commloadextn = 0; for (rootnum = grafptr->s.baseval; /* Loop on connected components */ (rootnum < grafptr->s.vertnnd) && (compload0dlt > 0); rootnum ++) { Gnum passnum; /* Pass number */ Gnum diamnum; /* Number of current diameter vertex */ Gnum diamval; /* Current diameter value */ Gnum diamdeg; /* Degree of current diameter vertex */ int diamflag; /* Flag set if improvement in diameter between passes */ while (vexxtax[rootnum].passnum != 0) /* Find first unallocated vertex */ rootnum ++; for (diamnum = rootnum, diamval = diamdeg = 0, diamflag = 1, passnum = 1; /* Start from root */ (passnum < paraptr->passnbr) && (diamflag -- != 0); passnum ++) { /* Loop if improvements */ bgraphBipartGpQueueFlush (&queudat); /* Flush vertex queue */ bgraphBipartGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].distval = 0; do { /* Loop on vertices in queue */ Gnum vertnum; Gnum distval; Gnum edgenum; vertnum = bgraphBipartGpQueueGet (&queudat); /* Get vertex from queue */ distval = vexxtax[vertnum].distval; /* Get vertex distance */ if ((distval > diamval) || /* If vertex increases diameter */ ((distval == diamval) && /* Or is at diameter distance */ ((vendtax[vertnum] - verttax[vertnum]) < diamdeg))) { /* With smaller degree */ diamnum = vertnum; /* Set it as new diameter vertex */ diamval = distval; diamdeg = vendtax[vertnum] - verttax[vertnum]; diamflag = 1; } distval ++; /* Set neighbor distance */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* End vertex number */ vertend = edgetax[edgenum]; if (vexxtax[vertend].passnum < passnum) { /* If vertex not yet queued */ bgraphBipartGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].distval = distval; } } } while (! bgraphBipartGpQueueEmpty (&queudat)); /* As long as queue is not empty */ } bgraphBipartGpQueueFlush (&queudat); /* Flush vertex queue */ bgraphBipartGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].distval = 0; do { /* Loop on vertices in queue */ Gnum vertnum; Gnum distval; Gnum edgenum; vertnum = bgraphBipartGpQueueGet (&queudat); /* Get vertex from queue */ grafptr->parttax[vertnum] = 1; /* Move selected vertex to part 1 */ compsize0 --; compload0dlt -= (velotax != NULL) ? velotax[vertnum] : 1; if (veextax != NULL) commloadextn += veextax[vertnum]; distval = vexxtax[vertnum].distval + 1; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* End vertex number */ vertend = edgetax[edgenum]; if (vexxtax[vertend].passnum < passnum) { /* If vertex not yet queued */ bgraphBipartGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].distval = distval; } } } while ((compload0dlt > 0) && (! bgraphBipartGpQueueEmpty (&queudat))); /* As long as balance not achieved and queue is not empty */ if (! bgraphBipartGpQueueEmpty (&queudat)) { /* If frontier non empty */ Gnum edloval; Gnum fronnbr; fronnbr = 0; /* No frontier yet */ edloval = 1; /* Assume no edge loads */ do { Gnum vertnum; Gnum edgenum; vertnum = bgraphBipartGpQueueGet (&queudat); /* Get vertex from queue */ grafptr->frontab[fronnbr ++] = vertnum; #ifdef SCOTCH_DEBUG_BGRAPH2 if (grafptr->parttax[vertnum] != 0) { errorPrint ("bgraphBipartGp: internal error"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* End vertex number */ vertend = edgetax[edgenum]; if (grafptr->parttax[vertend] == 1) { /* If vertex belongs to other part */ if (edlotax != NULL) edloval = edlotax[edgenum]; commloadintn += edloval; if (vexxtax[vertend].distval != ~0) { /* If neighbor vertex not already put in frontier */ grafptr->frontab[fronnbr ++] = vertend; /* Record it in frontier */ vexxtax[vertend].distval = ~0; /* Set it as recorded */ } } } } while (! bgraphBipartGpQueueEmpty (&queudat)); grafptr->fronnbr = fronnbr; break; /* No need to process rest of graph */ } /* Else grafptr->fronnbr = 0 anyway */ } grafptr->compload0 = grafptr->compload0avg + compload0dlt; grafptr->compload0dlt = compload0dlt; grafptr->compsize0 = compsize0; grafptr->commload = grafptr->commloadextn0 + commloadextn + commloadintn * grafptr->domndist; grafptr->commgainextn = grafptr->commgainextn0 - commloadextn * 2; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; memFree (queudat.queutab); /* Free group leader */ #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartGp: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/dgraph_allreduce.c0000644000302600021200000001022013560005435021443 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_allreduce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the distributed source **/ /** graph building routines. **/ /** **/ /** DATES : # Version 5.0 : from : 28 aug 2006 **/ /** to : 28 aug 2006 **/ /** **/ /************************************************************/ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" /* This routine creates an allreduce operator from ** the function pointer that is passed to it, and ** use it to perform an allreduce operation on the ** given data. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphAllreduceMaxSum2 ( Gnum * reduloctab, /* Pointer to array of local Gnum data */ Gnum * reduglbtab, /* Pointer to array of reduced Gnum data */ int redumaxsumnbr, /* Number of max + sum Gnum operations */ MPI_User_function * redufuncptr, /* Pointer to operator function */ MPI_Comm proccomm) /* Communicator to be used for reduction */ { MPI_Datatype redutypedat; /* Data type for finding best separator */ MPI_Op reduoperdat; /* Handle of MPI operator for finding best separator */ if ((MPI_Type_contiguous (redumaxsumnbr, GNUM_MPI, &redutypedat) != MPI_SUCCESS) || (MPI_Type_commit (&redutypedat) != MPI_SUCCESS) || (MPI_Op_create (redufuncptr, 1, &reduoperdat) != MPI_SUCCESS)) { errorPrint ("dgraphAllreduceMaxSum: communication error (1)"); return (1); } if (MPI_Allreduce (reduloctab, reduglbtab, 1, redutypedat, reduoperdat, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphAllreduceMaxSum: communication error (2)"); return (1); } if ((MPI_Op_free (&reduoperdat) != MPI_SUCCESS) || (MPI_Type_free (&redutypedat) != MPI_SUCCESS)) { errorPrint ("dgraphAllreduceMaxSum: communication error (3)"); return (1); } return (0); } scotch_6.0.9/src/libscotch/dgraph_match_scan.c0000644000302600021200000003351513560005435021617 0ustar pelegrinpelegrin/* Copyright 2008,2012,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match_scan.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines define a generic scanning **/ /** framework for distributed graph **/ /** matching routines. **/ /** **/ /** DATES : # Version 6.0 : from : 04 dec 2008 **/ /** to : 10 oct 2013 **/ /** **/ /************************************************************/ void DGRAPHMATCHSCANNAME ( DgraphMatchData * restrict const mateptr) { int flagval; Gnum vertlocnnd; Gnum vertlocadj; Gnum edgekptnbr; Gnum queulocnbr; Gnum matelocnbr; /* TRICK: Initial number of local mated vertices, from which are subtracted single multinodes */ Gnum multlocnbr; Gnum probmax; const Dgraph * restrict const grafptr = mateptr->c.finegrafptr; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; Gnum * restrict const queuloctab = mateptr->queuloctab; Gnum * restrict const mategsttax = mateptr->mategsttax; DgraphCoarsenMulti * restrict const multloctab = mateptr->c.multloctab; DGRAPHMATCHSCANINIT flagval = mateptr->c.flagval; /* Get flag value */ vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; vertlocnnd = grafptr->vertlocnnd; matelocnbr = mateptr->matelocnbr; multlocnbr = mateptr->c.multlocnbr; edgekptnbr = mateptr->c.edgekptnbr; if (matelocnbr == 0) { /* If initial pass or nothing useful done */ Gnum vertlocnnt; /* End of useable local vertices */ Gnum vertlocnum; memSet (mategsttax + grafptr->baseval, ~0, grafptr->vertlocnbr * sizeof (Gnum)); /* No local vertices matched to date: wipe all unsatisfied queries */ queulocnbr = 0; /* Build queue from scratch */ for (vertlocnum = grafptr->baseval, vertlocnnt = vertlocnnd; vertlocnum < vertlocnnt; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; Gnum edgeendnbr; Gnum edgefrenbr; Gnum probval; DGRAPHMATCHSCANCOUNTDECL if (mategsttax[vertlocnum] >= 0) /* If vertex has been matched by one of the previous ones, skip it */ continue; #ifdef SCOTCH_DEBUG_DGRAPH2 if (mategsttax[vertlocnum] < -1) { /* Vertex must not be requesting yet */ errorPrint ("dgraphMatchSc: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ DGRAPHMATCHSCANCOUNTINIT if (probval > probmax) { /* If vertex not active this turn */ queuloctab[queulocnbr ++] = vertlocnum; /* Enqueue it for next time */ continue; /* Skip to next vertex */ } edgelocnum = vertloctax[vertlocnum]; edgelocnnd = vendloctax[vertlocnum]; if (((flagval & DGRAPHCOARSENNOMERGE) == 0) && /* If merging isolated vertices is allowed */ ((edgelocnnd - edgelocnum) == 0)) { /* And if vertex is isolated */ while (mategsttax[-- vertlocnnt] != ~0) ; /* Search for first matchable local "neighbor" */ mategsttax[vertlocnum] = (vertlocnnt + vertlocadj); /* At worst we will stop at vertlocnum */ mategsttax[vertlocnnt] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[0] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[1] = (vertlocnnt + vertlocadj); multlocnbr ++; /* One more coarse vertex created (two more local mates) */ edgekptnbr += vendloctax[vertlocnnt] - vertloctax[vertlocnnt]; /* Add edges of other vertex only */ continue; } for (edgeendnbr = edgefrenbr = 0; edgelocnum < edgelocnnd; edgelocnum ++) { /* For all edges, count yet unmatched ends */ Gnum vertgstend; vertgstend = edgegsttax[edgelocnum]; if (mategsttax[vertgstend] == -1) { /* Count relevant free end vertices */ DGRAPHMATCHSCANCOUNTSELECT } if (mategsttax[vertgstend] < 0) /* Count not yet assigned end vertices */ edgeendnbr ++; } if (edgeendnbr <= 0) { /* If vertex has no possible neighbor */ mategsttax[vertlocnum] = /* Create single multinode */ multloctab[multlocnbr].vertglbnum[0] = multloctab[multlocnbr].vertglbnum[1] = vertlocnum + vertlocadj; multlocnbr ++; /* One more coarse vertex created */ matelocnbr --; /* TRICK: But with only one vertex */ edgekptnbr += edgelocnnd - vertloctax[vertlocnum]; continue; } if (edgefrenbr > 0) { /* If vertex has some free neighbor */ Gnum vertgstend; edgefrenbr = intRandVal (edgefrenbr); /* Select one of them randomly */ for (edgelocnum = vertloctax[vertlocnum]; ; edgelocnum ++) { /* Loop again on edges */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum >= edgelocnnd) { errorPrint ("dgraphMatchSc: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vertgstend = edgegsttax[edgelocnum]; if (mategsttax[vertgstend] == -1) { /* If free end vertex found */ if (DGRAPHMATCHSCANFINDSELECT) /* If it is the one we want */ break; /* Exit loop */ } } if (vertgstend >= vertlocnnd) { /* If end vertex is a ghost vertex */ queuloctab[queulocnbr ++] = vertlocnum; /* Enqueue vertex for communication processing */ mategsttax[vertlocnum] = -2 - edgelocnum; /* Local vertex index codes edge number */ } else { /* Perform local matching */ mategsttax[vertlocnum] = (vertgstend + vertlocadj); mategsttax[vertgstend] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[0] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[1] = (vertgstend + vertlocadj); multlocnbr ++; /* One more coarse vertex created (two more local mates) */ edgekptnbr += (edgelocnnd - vertloctax[vertlocnum]) + (vendloctax[vertgstend] - vertloctax[vertgstend]) - 2; /* "-2" for collapsed arcs */ } } else queuloctab[queulocnbr ++] = vertlocnum; /* Enqueue vertex for next time */ } } else { /* Vertices to consider are already enqueued */ Gnum queulocnum; Gnum queulocnew; for (queulocnum = queulocnew = 0, queulocnbr = mateptr->queulocnbr; queulocnum < queulocnbr; queulocnum ++) { /* For all vertices in queue */ Gnum vertlocnum; Gnum mategstnum; vertlocnum = queuloctab[queulocnum]; /* Get current vertex */ mategstnum = mategsttax[vertlocnum]; if (mategstnum > -1) /* If already mated */ continue; /* Find another one */ queuloctab[queulocnew ++] = vertlocnum; if (mategstnum < -1) mategsttax[vertlocnum] = -1; } queulocnbr = queulocnew; for (queulocnum = 0; queulocnum < queulocnbr; queulocnum ++) { /* For all vertices in queue */ Gnum vertlocnum; Gnum edgelocnum; Gnum edgelocnnd; Gnum edgeendnbr; Gnum edgefrenbr; Gnum probval; DGRAPHMATCHSCANCOUNTDECL vertlocnum = queuloctab[queulocnum]; /* Get current vertex */ if (mategsttax[vertlocnum] >= 0) /* If already mated */ continue; /* Find another one */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (mategsttax[vertlocnum] < -1) { /* Vertex must not be requesting yet */ errorPrint ("dgraphMatchSc: internal error (3)"); return; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ DGRAPHMATCHSCANCOUNTINIT if (probval > probmax) /* If vertex not active this turn */ continue; /* Keep vertex enqueued and skip to next vertex */ edgelocnum = vertloctax[vertlocnum]; edgelocnnd = vendloctax[vertlocnum]; /* No need to test for isolated vertices this turn */ for (edgeendnbr = edgefrenbr = 0; edgelocnum < edgelocnnd; edgelocnum ++) { /* For all edges, count yet unmatched ends */ Gnum vertgstend; vertgstend = edgegsttax[edgelocnum]; if (mategsttax[vertgstend] == -1) { /* Count free end vertices */ DGRAPHMATCHSCANCOUNTSELECT } if (mategsttax[vertgstend] < 0) /* Count not yet assigned end vertices */ edgeendnbr ++; } if (edgeendnbr <= 0) { /* If vertex has no possible neighbor */ mategsttax[vertlocnum] = /* Create single multinode */ multloctab[multlocnbr].vertglbnum[0] = multloctab[multlocnbr].vertglbnum[1] = vertlocnum + vertlocadj; multlocnbr ++; /* One more coarse vertex created */ matelocnbr --; /* TRICK: But with only one vertex */ edgekptnbr += edgelocnnd - vertloctax[vertlocnum]; continue; } if (edgefrenbr > 0) { /* If vertex has some free neighbor */ Gnum vertgstend; edgefrenbr = intRandVal (edgefrenbr); /* Select one of them randomly */ for (edgelocnum = vertloctax[vertlocnum]; ; edgelocnum ++) { /* Loop again on edges */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum >= edgelocnnd) { errorPrint ("dgraphMatchSc: internal error (4)"); return; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vertgstend = edgegsttax[edgelocnum]; if (mategsttax[vertgstend] == -1) { /* If free end vertex found */ if (DGRAPHMATCHSCANFINDSELECT) /* If it is the one we want */ break; /* Exit loop */ } } if (vertgstend >= vertlocnnd) /* If end vertex is a ghost vertex */ mategsttax[vertlocnum] = -2 - edgelocnum; /* Local vertex index codes edge number */ else { /* Perform local matching */ mategsttax[vertlocnum] = (vertgstend + vertlocadj); mategsttax[vertgstend] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[0] = (vertlocnum + vertlocadj); multloctab[multlocnbr].vertglbnum[1] = (vertgstend + vertlocadj); multlocnbr ++; /* One more coarse vertex created (two more local mates) */ edgekptnbr += (edgelocnnd - vertloctax[vertlocnum]) + (vendloctax[vertgstend] - vertloctax[vertgstend]) - 1; } } /* Else vertex stays enqueued */ } } mateptr->matelocnbr = matelocnbr + 2 * (multlocnbr - mateptr->c.multlocnbr); /* TRICK: Two times new multinodes, minus single multinode adjustment */ mateptr->queulocnbr = queulocnbr; mateptr->c.multlocnbr = multlocnbr; mateptr->c.edgekptnbr = edgekptnbr; } scotch_6.0.9/src/libscotch/library_f.h0000644000302600021200000001304513465315041020145 0ustar pelegrinpelegrin!* Copyright 2004,2007,2009,2010,2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS !* !* This file is part of the Scotch software package for static mapping, !* graph partitioning and sparse matrix ordering. !* !* This software is governed by the CeCILL-C license under French law !* and abiding by the rules of distribution of free software. You can !* use, modify and/or redistribute the software under the terms of the !* CeCILL-C license as circulated by CEA, CNRS and INRIA at the following !* URL: "http://www.cecill.info". !* !* As a counterpart to the access to the source code and rights to copy, !* modify and redistribute granted by the license, users are provided !* only with a limited warranty and the software's author, the holder of !* the economic rights, and the successive licensors have only limited !* liability. !* !* In this respect, the user's attention is drawn to the risks associated !* with loading, using, modifying and/or developing or reproducing the !* software by the user in light of its specific status of free software, !* that may mean that it is complicated to manipulate, and that also !* therefore means that it is reserved for developers and experienced !* professionals having in-depth computer knowledge. Users are therefore !* encouraged to load and test the software's suitability as regards !* their requirements in conditions enabling the security of their !* systems and/or data to be ensured and, more generally, to use and !* operate it in the same conditions as regards security. !* !* The fact that you are presently reading this means that you have had !* knowledge of the CeCILL-C license and that you accept its terms. !* !*********************************************************** !* ** !* NAME : library_f.h ** !* ** !* AUTHOR : Francois PELLEGRINI ** !* ** !* FUNCTION : FORTRAN declaration file for the ** !* LibScotch static mapping and sparse ** !* matrix block ordering sequential ** !* library. ** !* ** !* DATES : # Version 3.4 : from : 04 feb 2000 ** !* to 22 oct 2001 ** !* # Version 4.0 : from : 16 jan 2004 ** !* to 16 jan 2004 ** !* # Version 5.0 : from : 26 apr 2006 ** !* to 26 apr 2006 ** !* # Version 5.1 : from : 26 mar 2009 ** !* to 12 feb 2011 ** !* # Version 6.0 : from : 22 oct 2011 ** !* to 16 apr 2019 ** !* ** !*********************************************************** !* Flag definitions for the coarsening !* routines. INTEGER SCOTCH_COARSENNONE INTEGER SCOTCH_COARSENFOLD INTEGER SCOTCH_COARSENFOLDDUP INTEGER SCOTCH_COARSENNOMERGE PARAMETER (SCOTCH_COARSENNONE = 0) PARAMETER (SCOTCH_COARSENFOLD = 256) PARAMETER (SCOTCH_COARSENFOLDDUP = 768) PARAMETER (SCOTCH_COARSENNOMERGE = 16384) !* Flag definitions for the strategy !* string selection routines. INTEGER SCOTCH_STRATDEFAULT INTEGER SCOTCH_STRATQUALITY INTEGER SCOTCH_STRATSPEED INTEGER SCOTCH_STRATBALANCE INTEGER SCOTCH_STRATSAFETY INTEGER SCOTCH_STRATSCALABILITY INTEGER SCOTCH_STRATRECURSIVE INTEGER SCOTCH_STRATREMAP INTEGER SCOTCH_STRATLEVELMAX INTEGER SCOTCH_STRATLEVELMIN INTEGER SCOTCH_STRATLEAFSIMPLE INTEGER SCOTCH_STRATSEPASIMPLE INTEGER SCOTCH_STRATDISCONNECTED PARAMETER (SCOTCH_STRATDEFAULT = 0) PARAMETER (SCOTCH_STRATQUALITY = 1) PARAMETER (SCOTCH_STRATSPEED = 2) PARAMETER (SCOTCH_STRATBALANCE = 4) PARAMETER (SCOTCH_STRATSAFETY = 8) PARAMETER (SCOTCH_STRATSCALABILITY = 16) PARAMETER (SCOTCH_STRATRECURSIVE = 256) PARAMETER (SCOTCH_STRATREMAP = 512) PARAMETER (SCOTCH_STRATLEVELMAX = 4096) PARAMETER (SCOTCH_STRATLEVELMIN = 8192) PARAMETER (SCOTCH_STRATLEAFSIMPLE = 16384) PARAMETER (SCOTCH_STRATSEPASIMPLE = 32768) PARAMETER (SCOTCH_STRATDISCONNECTED = 65536) !* Size definitions for the SCOTCH opaque !* structures. These structures must be !* allocated as arrays of DOUBLEPRECISION !* values for proper padding. The dummy !* sizes are computed at compile-time by !* program "dummysizes". INTEGER SCOTCH_ARCHDIM INTEGER SCOTCH_ARCHDOMDIM INTEGER SCOTCH_GEOMDIM INTEGER SCOTCH_GRAPHDIM INTEGER SCOTCH_MAPDIM INTEGER SCOTCH_MESHDIM INTEGER SCOTCH_ORDERDIM INTEGER SCOTCH_STRATDIM PARAMETER (SCOTCH_ARCHDIM = DUMMYSIZEARCH) PARAMETER (SCOTCH_ARCHDOMDIM = DUMMYSIZEARCHDOM) PARAMETER (SCOTCH_GEOMDIM = DUMMYSIZEGEOM) PARAMETER (SCOTCH_GRAPHDIM = DUMMYSIZEGRAPH) PARAMETER (SCOTCH_MAPDIM = DUMMYSIZEMAP) PARAMETER (SCOTCH_MESHDIM = DUMMYSIZEMESH) PARAMETER (SCOTCH_ORDERDIM = DUMMYSIZEORDER) PARAMETER (SCOTCH_STRATDIM = DUMMYSIZESTRAT) scotch_6.0.9/src/libscotch/mesh_io.c0000644000302600021200000004125013303015264017604 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** input/output functions. **/ /** **/ /** DATES : # Version 4.0 : from : 05 nov 2002 **/ /** to 06 may 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 27 feb 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH_IO #include "module.h" #include "common.h" #include "graph.h" #include "graph_io.h" #include "mesh.h" #include "mesh_io.h" /******************************************/ /* */ /* These routines handle source mesh I/O. */ /* */ /******************************************/ /* This routine loads a source mesh from ** the given stream. ** Edge loads, whenever present, are ** always discarded. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int meshLoad ( Mesh * restrict const meshptr, /* Mesh structure to fill */ FILE * restrict const stream, /* Stream from which to read graph data */ const Gnum baseval) /* Base value (-1 means keep file base) */ { Gnum edgenum; /* Number of edges really allocated */ Gnum edgennd; Gnum vertnbr; Gnum velmnbr; /* Number of elements in mesh */ Gnum velmbas; /* Base index for element vertices */ Gnum vnodnbr; /* Number of nodes in mesh */ Gnum vnodbas; /* Base index for node vertices */ Gnum vlblmax; /* Maximum vertex label number */ Gnum vlblval; /* Value where to read vertex label */ Gnum velonbr; /* Size of vertex load array */ Gnum veloval; /* Value where to read vertex load */ Gnum vlblnbr; /* Size of vertex label array */ Gnum edloval; /* Value where to read edge load */ Gnum edgeval; /* Value where to read edge end */ Gnum baseadj; Gnum versval; Gnum degrmax; Gnum propval; char proptab[4]; Gnum vertbastab[2]; Gnum vertnndtab[2]; Gnum edgeadjtab[2]; int i; memSet (meshptr, 0, sizeof (Mesh)); if ((intLoad (stream, &versval) != 1) || /* Read version number */ (versval != 1)) { errorPrint ("meshLoad: bad input (1)"); return (1); } if ((intLoad (stream, &velmnbr) != 1) || /* Read rest of header */ (intLoad (stream, &vnodnbr) != 1) || (intLoad (stream, &meshptr->edgenbr) != 1) || (intLoad (stream, &velmbas) != 1) || (intLoad (stream, &vnodbas) != 1) || (intLoad (stream, &propval) != 1) || (velmnbr < 0) || (vnodnbr < 0) || (velmbas < 0) || (vnodbas < 0) || (propval < 0) || (propval > 111) || (((velmbas + velmnbr) != vnodbas) && ((vnodbas + vnodnbr) != velmbas))) { errorPrint ("meshLoad: bad input (2)"); return (1); } sprintf (proptab, "%3.3d", (int) propval); /* Compute file properties */ proptab[0] -= '0'; /* Vertex labels flag */ proptab[1] -= '0'; /* Edge weights flag */ proptab[2] -= '0'; /* Vertex loads flag */ baseadj = MIN (velmbas, vnodbas); /* Get file graph base value */ if (baseval == -1) { /* If keep file graph base */ meshptr->baseval = baseadj; /* Set graph base as file base */ baseadj = 0; /* No base adjustment needed */ } else { /* If set graph base */ meshptr->baseval = baseval; /* Set wanted graph base */ baseadj = baseval - baseadj; /* Update base adjust */ } meshptr->flagval = MESHFREEVERT | MESHVERTGROUP; /* Edge array grouped with vertex array */ meshptr->velmnbr = velmnbr; meshptr->velmbas = velmbas + baseadj; meshptr->velmnnd = velmnbr + (velmbas + baseadj); meshptr->vnodnbr = vnodnbr; meshptr->vnodbas = vnodbas + baseadj; meshptr->vnodnnd = vnodnbr + (vnodbas + baseadj); vertnbr = velmnbr + vnodnbr; velonbr = (proptab[2] != 0) ? vertnbr : 0; vlblnbr = (proptab[0] != 0) ? vertnbr : 0; if (memAllocGroup ((void **) (void *) &meshptr->verttax, (size_t) ((vertnbr + 1) * sizeof (Gnum)), &meshptr->vlbltax, (size_t) ( vlblnbr * sizeof (Gnum)), &meshptr->velotax, (size_t) ( velonbr * sizeof (Gnum)), /* Allocate single array for both element and node vertices */ &meshptr->edgetax, (size_t) ( meshptr->edgenbr * sizeof (Gnum)), NULL) == NULL) { /* Edge array grouped with vertex arrays */ errorPrint ("meshLoad: out of memory (1)"); meshFree (meshptr); return (1); } meshptr->verttax -= meshptr->baseval; meshptr->vendtax = meshptr->verttax + 1; /* Use compact vertex array */ meshptr->velotax = (velonbr != 0) ? (meshptr->velotax - meshptr->baseval) : NULL; /* Store based load array access in velotax */ meshptr->vnlotax = meshptr->velotax; meshptr->vlbltax = (vlblnbr != 0) ? (meshptr->vlbltax - meshptr->baseval) : NULL; meshptr->velosum = meshptr->velmnbr; /* Assume element and node vertices not weighted */ meshptr->vnlosum = meshptr->vnodnbr; meshptr->edgetax -= meshptr->baseval; degrmax = 0; edgennd = meshptr->edgenbr + meshptr->baseval; edgenum = meshptr->baseval; /* No edges allocated yet */ vlblmax = vertnbr + meshptr->baseval - 1; /* No vertex labels known */ if (meshptr->velmbas <= meshptr->vnodbas) { /* If elements first */ vertbastab[0] = meshptr->velmbas; vertnndtab[0] = meshptr->velmnnd; edgeadjtab[0] = meshptr->vnodbas - meshptr->baseval; vertbastab[1] = meshptr->vnodbas; vertnndtab[1] = meshptr->vnodnnd; edgeadjtab[1] = meshptr->velmbas - meshptr->baseval; } else { vertbastab[0] = meshptr->vnodbas; vertnndtab[0] = meshptr->vnodnnd; edgeadjtab[0] = meshptr->velmbas - meshptr->baseval; vertbastab[1] = meshptr->velmbas; vertnndtab[1] = meshptr->velmnnd; edgeadjtab[1] = meshptr->vnodbas - meshptr->baseval; } for (i = 0; i < 2; i ++) { /* For both kinds of vertices */ Gnum vertbas; Gnum vertnnd; Gnum edgeadj; Gnum vertnum; Gnum velosum; Gnum velomax; vertbas = vertbastab[i]; vertnnd = vertnndtab[i]; edgeadj = edgeadjtab[i]; velosum = 0; velomax = 1; /* Assume vertex loads all equal to 1 */ for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) { /* For all vertices of same kind */ Gnum degrval; if (meshptr->vlbltax != NULL) { /* If must read label */ if (intLoad (stream, &vlblval) != 1) { /* Read label data */ errorPrint ("meshLoad: bad input (3)"); meshFree (meshptr); return (1); } meshptr->vlbltax[vertnum] = vlblval + vertbas + baseadj; /* Adjust vertex label */ if (meshptr->vlbltax[vertnum] > vlblmax) /* Get maximum vertex label */ vlblmax = meshptr->vlbltax[vertnum]; } if (proptab[2] != 0) { /* If must read vertex load */ if ((intLoad (stream, &veloval) != 1) || /* Read vertex load data */ (veloval < 1)) { errorPrint ("meshLoad: bad input (4)"); meshFree (meshptr); return (1); } if (veloval > velomax) velomax = veloval; meshptr->velotax[vertnum] = veloval; velosum += veloval; } if (intLoad (stream, °rval) != 1) { /* Read vertex degree */ errorPrint ("meshLoad: bad input (5)"); meshFree (meshptr); return (1); } if (degrmax < degrval) /* Set maximum degree */ degrmax = degrval; meshptr->verttax[vertnum] = edgenum; /* Set index in edge array */ degrval += edgenum; if (degrval > edgennd) { /* Check if edge array overflows */ errorPrint ("meshLoad: invalid arc count (1)"); meshFree (meshptr); return (1); } for ( ; edgenum < degrval; edgenum ++) { if (proptab[1] != 0) { /* If must read edge load */ if (intLoad (stream, &edloval) != 1) { /* Read edge load data (useless) */ errorPrint ("meshLoad: bad input (6)"); meshFree (meshptr); return (1); } } if (intLoad (stream, &edgeval) != 1) { /* Read edge data */ errorPrint ("meshLoad: bad input (7)"); meshFree (meshptr); return (1); } meshptr->edgetax[edgenum] = edgeval + edgeadj; } } if (vertbastab[i] == meshptr->velmbas) { /* If elements are processed */ if (velomax == 1) /* If element loads not significant */ meshptr->velotax = NULL; else meshptr->velosum = velosum; } else { if (velomax == 1) /* If node loads not significant */ meshptr->vnlotax = NULL; else meshptr->vnlosum = velosum; } } meshptr->verttax[vertnbr + meshptr->baseval] = meshptr->edgenbr + meshptr->baseval; /* Set end of edge array */ if (edgenum != edgennd) { /* Check if number of edges is valid */ errorPrint ("meshLoad: invalid arc count (2)"); meshFree (meshptr); return (1); } meshptr->degrmax = degrmax; if (meshptr->vlbltax != NULL) { /* If vertex label renaming necessary */ if (graphLoad2 (meshptr->baseval, vertnbr + meshptr->baseval, meshptr->verttax, /* Rename edge ends */ meshptr->vendtax, meshptr->edgetax, vlblmax, meshptr->vlbltax) != 0) { errorPrint ("meshLoad: cannot relabel vertices"); meshFree (meshptr); return (1); } } #ifdef SCOTCH_DEBUG_MESH2 if (meshCheck (meshptr) != 0) { /* Check mesh consistency */ errorPrint ("meshLoad: inconsistent mesh data"); meshFree (meshptr); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ return (0); } /* This routine saves a source mesh to ** the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int meshSave ( const Mesh * restrict const meshptr, FILE * restrict const stream) { char propstr[4]; /* Property string */ Gnum vertbastab[2]; Gnum vertnndtab[2]; Gnum * velotabtab[2]; Gnum edgeadjtab[2]; int i; int o; propstr[0] = (meshptr->vlbltax != NULL) ? '1' : '0'; /* Set property string */ propstr[1] = '0'; /* No edge loads written */ propstr[2] = ((meshptr->velotax != NULL) || (meshptr->vnlotax != NULL)) ? '1' : '0'; propstr[3] = '\0'; if (fprintf (stream, "1\n" GNUMSTRING "\t" GNUMSTRING "\t" GNUMSTRING "\n" GNUMSTRING "\t" GNUMSTRING "\t%3s\n", /* Write file header */ (Gnum) meshptr->velmnbr, (Gnum) meshptr->vnodnbr, (Gnum) meshptr->edgenbr, (Gnum) meshptr->velmbas, (Gnum) meshptr->vnodbas, propstr) == EOF) { errorPrint ("meshSave: bad output (1)"); return (1); } vertbastab[0] = meshptr->baseval; vertnndtab[1] = meshptr->velmnbr + meshptr->vnodnbr + meshptr->baseval; if (meshptr->velmbas <= meshptr->vnodbas) { /* If elements first */ vertnndtab[0] = meshptr->velmnnd; velotabtab[0] = meshptr->velotax; edgeadjtab[0] = meshptr->vnodbas - meshptr->baseval; vertbastab[1] = meshptr->vnodbas; velotabtab[0] = meshptr->vnlotax; edgeadjtab[1] = meshptr->velmbas - meshptr->baseval; } else { vertnndtab[0] = meshptr->vnodnnd; velotabtab[0] = meshptr->vnlotax; edgeadjtab[0] = meshptr->velmbas - meshptr->baseval; vertbastab[1] = meshptr->velmbas; velotabtab[1] = meshptr->velotax; edgeadjtab[1] = meshptr->vnodbas - meshptr->baseval; } for (i = 0; i < 2; i ++) { /* For both kinds of vertices */ Gnum vertbas; Gnum vertnnd; Gnum * restrict velotax; Gnum edgeadj; Gnum vertnum; vertbas = vertbastab[i]; vertnnd = vertnndtab[i]; velotax = velotabtab[i]; edgeadj = edgeadjtab[i]; for (vertnum = vertbas, o = 0; (vertnum < vertnnd) && (o == 0); vertnum ++) { Gnum edgenum; if (meshptr->vlbltax != NULL) /* Write vertex label if necessary */ o = (fprintf (stream, GNUMSTRING "\t", (Gnum) meshptr->vlbltax[vertnum]) == EOF); if (propstr[2] != '0') /* Write vertex load if necessary */ o |= (fprintf (stream, GNUMSTRING "\t", (Gnum) ((velotax != NULL) ? velotax[vertnum] : 1)) == EOF); o |= (fprintf (stream, GNUMSTRING, (Gnum) (meshptr->vendtax[vertnum] - meshptr->verttax[vertnum])) == EOF); /* Write vertex degree */ for (edgenum = meshptr->verttax[vertnum]; (edgenum < meshptr->vendtax[vertnum]) && (o == 0); edgenum ++) { o |= (putc ('\t', stream) == EOF); o |= (intSave (stream, /* Write edge end */ (meshptr->vlbltax != NULL) ? meshptr->vlbltax[meshptr->edgetax[edgenum]] : meshptr->edgetax[edgenum] - edgeadj) != 1); } o |= (putc ('\n', stream) == EOF); } } if (o != 0) errorPrint ("meshSave: bad output (2)"); return (o); } scotch_6.0.9/src/libscotch/hgraph_order_si.h0000644000302600021200000000601213465315041021327 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_si.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the simple halo graph **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 01 nov 1996 **/ /** to : 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 02 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 11 dec 2002 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int hgraphOrderSi (const Hgraph * const, Order * const, const Gnum, OrderCblk * const); scotch_6.0.9/src/libscotch/graph_diam.c0000644000302600021200000001603113303015264020253 0ustar pelegrinpelegrin/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_diam.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the graph **/ /** (weighted) pseudo-diameter computation **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 17 jan 2017 **/ /** to 22 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "module.h" #include "common.h" #include "graph.h" #include "fibo.h" #include "graph_diam.h" /***************************************/ /* */ /* This routine handles source graphs. */ /* */ /***************************************/ /* Comparison routine for the Fibonacci ** heap structure. */ static int graphDiamCmpFunc ( const FiboNode * nod0ptr, const FiboNode * nod1ptr) { Gnum dis0val; Gnum dis1val; dis0val = ((GraphDiamVertex *) nod0ptr)->distval; dis1val = ((GraphDiamVertex *) nod1ptr)->distval; if (dis0val < dis1val) return (-1); return (1); } /* This routine computes the vertex-traversal, ** edge-weighted pseudo-diameter of the given ** graph. It is equal to GNUMMAX if the graph ** is not connected. ** It returns: ** - >= 0 : weighted pseudo-diameter. ** - -1 : on error. */ Gnum graphDiamPV ( const Graph * const grafptr) { FiboHeap fibodat; GraphDiamVertex * restrict vexxtax; /* Extended vertex array */ Gnum vertnum; Gnum rootnum; Gnum diammax; Gnum diambst; const Gnum * restrict const verttax = grafptr->verttax; const Gnum * restrict const vendtax = grafptr->vendtax; const Gnum * restrict const velotax = grafptr->velotax; const Gnum * restrict const edgetax = grafptr->edgetax; const Gnum * restrict const edlotax = grafptr->edlotax; if ((vexxtax = (GraphDiamVertex *) memAlloc (grafptr->vertnbr * sizeof (GraphDiamVertex))) == NULL) { errorPrint ("graphWdiam: out of memory"); return (-1); } if (fiboHeapInit (&fibodat, graphDiamCmpFunc) != 0) { errorPrint ("graphWdiam: cannot initialize Fibonacci heap"); memFree (vexxtax); return (-1); } vexxtax -= grafptr->baseval; rootnum = intRandVal (grafptr->vertnbr) + grafptr->baseval; diammax = 0; /* Ensure at least one pass */ do { GraphDiamVertex * vexxptr; Gnum vertnbr; diambst = diammax; /* Record as starting values for this pass */ fiboHeapFree (&fibodat); /* Reset tree */ for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) /* Reset work array */ vexxtax[vertnum].distval = GNUMMAX; vexxptr = vexxtax + rootnum; vexxptr->distval = 0; fiboHeapAdd (&fibodat, (FiboNode *) vexxptr); vertnbr = 0; while ((vexxptr = (GraphDiamVertex *) fiboHeapMin (&fibodat)) != NULL) { /* As long as there's a vertex to extract */ Gnum vertnum; Gnum distval; Gnum edgenum; vertnbr ++; /* One more vertex processed */ fiboHeapDel (&fibodat, (FiboNode *) vexxptr); /* Remove it from heap */ distval = vexxptr->distval; /* Keep current distance value */ vexxptr->distval = -1; /* Flag vertex as already processed */ vertnum = vexxptr - vexxtax; if (diammax < distval) { diammax = distval; rootnum = vertnum; } if (velotax != NULL) /* Add node weight as it is being traversed */ distval += velotax[vertnum]; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { GraphDiamVertex * vexxpnd; Gnum vertend; Gnum disttmp; Gnum distold; vertend = edgetax[edgenum]; vexxpnd = vexxtax + vertend; disttmp = distval + ((edlotax != NULL) ? edlotax[edgenum] : 1); distold = vexxpnd->distval; if (disttmp < distold) { /* Never the case for already processed vertices */ vexxpnd->distval = disttmp; if (distold == GNUMMAX) /* If newly touched node */ fiboHeapAdd (&fibodat, (FiboNode *) vexxpnd); /* Add it to the heap */ else fiboHeapDecrease (&fibodat, (FiboNode *) vexxpnd); /* Else decrease its value in the heap */ } } } if (vertnbr != grafptr->vertnbr) { /* If graph is not connected */ diambst = GNUMMAX; goto abort; } } while (diambst < diammax); diambst = diammax; abort: fiboHeapExit (&fibodat); memFree (vexxtax + grafptr->baseval); return (diambst); } scotch_6.0.9/src/libscotch/library_dgraph_io_save.c0000644000302600021200000000655713560013261022672 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_io_save.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph saving routine of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 16 may 2007 **/ /** to 16 may 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "ptscotch.h" /****************************************/ /* */ /* These routines are the C API for the */ /* distributed graph handling routines. */ /* */ /****************************************/ /*+ This routine saves the contents of the given *** opaque distributed graph structure to the *** given streams. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphSave ( SCOTCH_Dgraph * const grafptr, FILE * const stream) { return (dgraphSave ((Dgraph * const) grafptr, stream)); } scotch_6.0.9/src/libscotch/vgraph.c0000644000302600021200000000757513470115365017474 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the separator **/ /** handling routines. **/ /** **/ /** DATES : # Version 3.2 : from : 24 aug 1996 **/ /** to 03 nov 1997 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 08 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" /*************************/ /* */ /* These routines handle */ /* separator graphs. */ /* */ /*************************/ /* This routine frees the contents ** of the given active graph. ** It returns: ** - VOID : in all cases. */ void vgraphExit ( Vgraph * const grafptr) { if (grafptr->parttax != NULL) memFree (grafptr->parttax + grafptr->s.baseval); if (grafptr->frontab != NULL) memFree (grafptr->frontab); graphFree (&grafptr->s); /* Free source graph */ #ifdef SCOTCH_DEBUG_VGRAPH2 memSet (grafptr, ~0, sizeof (Vgraph)); #endif /* SCOTCH_DEBUG_VGRAPH2 */ } /* This routine moves all of the graph ** vertices to the first part. ** It returns: ** - VOID : in all cases. */ void vgraphZero ( Vgraph * const grafptr) { memSet (grafptr->parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ grafptr->compload[0] = grafptr->s.velosum; /* No frontier vertices */ grafptr->compload[1] = grafptr->compload[2] = 0; grafptr->comploaddlt = grafptr->s.velosum; grafptr->compsize[0] = grafptr->s.vertnbr; grafptr->compsize[1] = grafptr->fronnbr = 0; } scotch_6.0.9/src/libscotch/library_graph_map_io.h0000644000302600021200000000527113303015264022342 0ustar pelegrinpelegrin/* Copyright 2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_io.h **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the API mapping handling routines. **/ /** **/ /** DATES : # Version 6.0 : from : 17 apr 2011 **/ /** to 17 apr 2011 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ The sort structure, used to sort graph vertices by label. +*/ typedef struct VertSort_ { Gnum labl; /*+ Vertex label +*/ Gnum num; /*+ Vertex number +*/ } VertSort; scotch_6.0.9/src/libscotch/vgraph_check.c0000644000302600021200000001551413303067106020613 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the separator **/ /** graph consistency checking routine. **/ /** **/ /** DATES : # Version 3.2 : from : 24 aug 1996 **/ /** to 03 nov 1997 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 08 jan 2004 **/ /** # Version 5.0 : from : 16 sep 2006 **/ /** to : 16 sep 2006 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 09 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" /*************************/ /* */ /* These routines handle */ /* separator graphs. */ /* */ /*************************/ /* This routine checks the consistency ** of the given separator graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int vgraphCheck ( const Vgraph * const grafptr) { Gnum vertnum; /* Number of current vertex */ Gnum fronnum; /* Number of frontier vertex */ Gnum compload[3]; Gnum compsize[3]; Gnum commcut[3]; if (grafptr->comploaddlt != (grafptr->compload[0] - grafptr->compload[1])) { errorPrint ("vgraphCheck: invalid balance"); return (1); } for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if (grafptr->parttax[vertnum] > 2) { errorPrint ("vgraphCheck: invalid part array"); return (1); } } if ((grafptr->fronnbr < 0) || (grafptr->fronnbr > grafptr->s.vertnbr)) { errorPrint ("vgraphCheck: invalid number of frontier vertices"); return (1); } for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { Gnum vertnum; vertnum = grafptr->frontab[fronnum]; if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->s.vertnnd)) { errorPrint ("vgraphCheck: invalid vertex index in frontier array"); return (1); } if (grafptr->parttax[vertnum] != 2) { errorPrint ("vgraphCheck: invalid vertex in frontier array"); return (1); } } compload[0] = compload[1] = compload[2] = 0; compsize[0] = compsize[1] = compsize[2] = 0; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { int partnum; /* Part of current vertex */ Gnum edgenum; /* Number of current edge */ partnum = (int) grafptr->parttax[vertnum]; compload[partnum] += (grafptr->s.velotax == NULL) ? 1 : grafptr->s.velotax[vertnum]; compsize[partnum] ++; commcut[0] = commcut[1] = commcut[2] = 0; if ((grafptr->s.verttax[vertnum] < grafptr->s.baseval) || (grafptr->s.verttax[vertnum] > grafptr->s.vendtax[vertnum])) { errorPrint ("vgraphCheck: invalid graph structure (1)"); return (1); } for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = grafptr->s.edgetax[edgenum]; if ((vertend < grafptr->s.baseval) || (vertend >= grafptr->s.vertnnd)) { errorPrint ("vgraphCheck: invalid graph structure (2)"); return (1); } commcut[grafptr->parttax[vertend]] ++; } #ifdef SCOTCH_DEBUG_VGRAPH3 if (partnum == 2) { if ((commcut[0] == 0) || (commcut[1] == 0)) errorPrintW ("vgraphCheck: no-use separator vertex%s (%ld)", /* Warning only */ ((grafptr->levlnum == 0) ? " at level 0" : ""), (long) vertnum); } else { #else if (partnum != 2) { #endif /* SCOTCH_DEBUG_VGRAPH3 */ if (commcut[1 - partnum] != 0) { errorPrint ("vgraphCheck: vertex should be in separator (%ld)", (long) vertnum); return (1); } } } if ((grafptr->compload[0] != compload[0]) || (grafptr->compload[1] != compload[1]) || (grafptr->compload[2] != compload[2])) { errorPrint ("vgraphCheck: invalid part loads"); return (1); } if (grafptr->comploaddlt != (grafptr->compload[0] - grafptr->compload[1])) { errorPrint ("vgraphCheck: invalid balance"); return (1); } if ((grafptr->compsize[0] != compsize[0]) || (grafptr->compsize[1] != compsize[1]) || (grafptr->fronnbr != compsize[2])) { errorPrint ("vgraphCheck: invalid part sizes"); return (1); } return (0); } scotch_6.0.9/src/libscotch/arch_build2.h0000644000302600021200000001377013560005302020347 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_build2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the type-2 decomposition-described **/ /** architecture building routine. **/ /** **/ /** DATES : # Version 6.0 : from : 02 may 2015 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The internal type and structure definitions. */ #ifdef ARCH_BUILD2 /*+ Ancillary structure to avoid passing too many parameters recursively in the archDeco2Build3() routine. +*/ typedef struct ArchDeco2Build3_ { ArchSubData * domntab; /*+ Domain array to fill [domnnbr] +*/ ArchDeco2Data * doextab; /*+ Extended domain array to fill [domnnbr] +*/ ArchSubTerm * termtab; /*+ Terminal domain array to fill [termnbr] +*/ Gnum * vnumtab; /*+ Level vertex index array +*/ Anum vnumidx; /*+ Current first free index in index array +*/ } ArchDeco2Build3; /*+ Hash table cell to find coarse vertex ends during the computation of edge costs in the coarsened graph. +*/ typedef struct ArchDeco2BuildHash_ { Gnum coarvertnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum coarvertend; /*+ Other end vertex number +*/ Gnum coaredgenum; /*+ Index of corresponding edge in graph +*/ Gnum fineedwgmin; /*+ Minimum of all fine edge weights +*/ } ArchDeco2BuildHash; /*+ Communication vertex and edge weights for graph coarsenings. Edge array is the group leader because there are no vertex traversal costs at level 0, while there may be edge traversal costs. +*/ typedef struct ArchDeco2BuildLevl_ { Gnum * edwgtab; /*+ Edge load array; TRICK: group leader +*/ Gnum * vewgtab; /*+ Vertex load array +*/ Gnum edwgsum; /*+ Sum of edge weights +*/ Gnum vewgsum; /*+ Sum of vertex weights +*/ } ArchDeco2BuildLevl; /*+ Matching structure for graph coarsenings. +*/ typedef struct ArchDeco2BuildMatch_ { ArchDeco2BuildHash * hashtab; /*+ Hash array for edge coarsening +*/ Gnum hashsiz; /*+ Size of hash data structure +*/ ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Gnum * ficotab; /*+ Fine-to-coarse array for all coarsenings +*/ ArchDeco2BuildLevl * lewgtab; /*+ Level array for vertex weights +*/ ArchDeco2Levl * levltab; /*+ Level array +*/ Gnum levlmax; /*+ Maximum number of levels in array +*/ Gnum levlnum; /*+ Current number of levels in array +*/ Gnum vertsum; /*+ Sum of all vertices at all levels +*/ } ArchDeco2BuildMatch; #endif /* ARCH_BUILD2 */ /* ** The function prototypes. */ #ifdef ARCH_BUILD2 static int archDeco2BuildMatchInit (ArchDeco2BuildMatch * restrict const, const Graph * restrict const); static void archDeco2BuildMatchExit (ArchDeco2BuildMatch * restrict const); static Anum archDeco2BuildMatchMate (ArchDeco2BuildMatch * restrict const, ArchCoarsenMulti * restrict * restrict const); #endif /* ARCH_BUILD2 */ int archDeco2ArchBuild (Arch * const, const Graph * const, const Gnum, const Gnum * restrict const); scotch_6.0.9/src/libscotch/hdgraph_order_nd.h0000644000302600021200000001263613466077161021503 0ustar pelegrinpelegrin/* Copyright 2007,2010,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_nd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the halo distributed graph nested **/ /** dissection ordering algorithm. **/ /** **/ /** DATES : # Version 5.0 : from : 16 apr 2006 **/ /** to 16 jun 2007 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 30 apr 2019 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HdgraphOrderNdParam_ { Strat * sepstrat; /*+ Separation strategy +*/ Strat * ordstratlea; /*+ Leaf ordering strategy +*/ Strat * ordstratsep; /*+ Separator ordering strategy +*/ Strat * ordstratseq; /*+ Sequential ordering strategy +*/ } HdgraphOrderNdParam; /*+ Method types. +*/ typedef enum HdgraphOrderNdType_ { HDGRAPHORDERNDTYPECENT = 0, /*+ Centralized folded graph +*/ HDGRAPHORDERNDTYPEDIST /*+ Distributed folded graph +*/ } HdgraphOrderNdType; /*+ This structure holds folded graph data, whether centralized or distributed. +*/ typedef struct HdgraphOrderNdGraph_ { HdgraphOrderNdType typeval; /*+ Halo graph type +*/ union { Hgraph cgrfdat; /*+ Centralized halo graph +*/ Hdgraph dgrfdat; /*+ Distributed halo graph +*/ } data; } HdgraphOrderNdGraph; /*+ This structure holds the data passed to the subgraph building threads. +*/ typedef struct HdgraphOrderNdData_ { Hdgraph * orggrafptr; /*+ Pointer to original graph +*/ Gnum indlistnbr; /*+ Local number of vertices in subgraph +*/ const Gnum * indlisttab; /*+ Local list of vertices in subgraph +*/ HdgraphOrderNdGraph * fldgrafptr; /*+ Pointer to folded graph union area +*/ int fldpartval; /*+ Part of processor array to which to fold to +*/ int fldprocnbr; /*+ Number of processes in folded communicator +*/ int fldprocnum; /*+ Rank of process in folded communicator, or -1 +*/ MPI_Comm fldproccomm; /*+ Communicator for the folded graph, if any +*/ } HdgraphOrderNdData; /* ** The function prototypes. */ #ifdef HDGRAPH_ORDER_ND static void * hdgraphOrderNdFold2 (void * const); static int hdgraphOrderNdFold (Hdgraph * restrict const, const Gnum, const Gnum * restrict const, const Gnum, const Gnum * restrict const, HdgraphOrderNdGraph * restrict const); static int hdgraphOrderNd2 (Hdgraph * const, DorderCblk * const, const HdgraphOrderNdParam * const); #endif /* HDGRAPH_ORDER_ND */ int hdgraphOrderNd (Hdgraph * const, DorderCblk * const, const HdgraphOrderNdParam * const); scotch_6.0.9/src/libscotch/vgraph_separate_gg.h0000644000302600021200000001012113303015264022007 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_gg.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the greedy graph growing vertex **/ /** separation method. **/ /** **/ /** DATES : # Version 3.2 : from : 14 nov 1997 **/ /** to 15 jul 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 09 jan 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ System-defined constants. +*/ #define VGRAPHSEPAGGSUBBITS 4 #define VGRAPHSEPAGGSTATEPART0 ((GainLink *) 0) /*+ Vertex in part 0 (initial state) +*/ #define VGRAPHSEPAGGSTATEPART1 ((GainLink *) 1) /*+ Vertex in part 1 +*/ #define VGRAPHSEPAGGSTATEPART2 ((GainLink *) 2) /*+ Vertex in part 2, chained +*/ #define VGRAPHSEPAGGSTATELINK ((GainLink *) 3) /*+ Currently in gain table if higher +*/ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct VgraphSeparateGgParam_ { INT passnbr; /*+ Number of passes to do +*/ } VgraphSeparateGgParam; /*+ The complementary vertex structure. For trick reasons, the gain table data structure must be the first field of the structure. +*/ typedef struct VgraphSeparateGgVertex_ { GainLink gainlink; /*+ Gain link: FIRST +*/ Gnum compgain2; /*+ Computation gain in separator +*/ } VgraphSeparateGgVertex; /* ** The function prototypes. */ int vgraphSeparateGg (Vgraph * restrict const, const VgraphSeparateGgParam * restrict const); scotch_6.0.9/src/libscotch/library_mesh_f.c0000644000302600021200000002265113560013261021152 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source mesh handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 23 sep 2002 **/ /** to 13 dec 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 15 apr 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mesh handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ MESHINIT, meshinit, ( \ SCOTCH_Mesh * const meshptr, \ int * const revaptr), \ (meshptr, revaptr)) { *revaptr = SCOTCH_meshInit (meshptr); } /* ** */ SCOTCH_FORTRAN ( \ MESHEXIT, meshexit, ( \ SCOTCH_Mesh * const meshptr), \ (meshptr)) { SCOTCH_meshExit (meshptr); } /* When an input stream is built from the given ** file handle, it is set as unbuffered, so as to ** allow for multiple stream reads from the same ** file handle. If it were buffered, too many ** input characters would be read on the first ** block read. */ SCOTCH_FORTRAN ( \ MESHLOAD, meshload, ( \ SCOTCH_Mesh * const meshptr, \ int * const fileptr, \ const SCOTCH_Num * const baseptr, \ int * const revaptr), \ (meshptr, fileptr, baseptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } setbuf (stream, NULL); /* Do not buffer on input */ o = SCOTCH_meshLoad (meshptr, stream, *baseptr); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ MESHSAVE, meshsave, ( \ const SCOTCH_Mesh * const meshptr, \ int * const fileptr, \ int * const revaptr), \ (meshptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_meshSave (meshptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ MESHBUILD, meshbuild, ( \ SCOTCH_Mesh * const meshptr, \ const SCOTCH_Num * const velmbas, \ const SCOTCH_Num * const vnodbas, \ const SCOTCH_Num * const velmnbr, \ const SCOTCH_Num * const vnodnbr, \ const SCOTCH_Num * const verttab, \ const SCOTCH_Num * const vendtab, \ const SCOTCH_Num * const velotab, \ const SCOTCH_Num * const vnlotab, \ const SCOTCH_Num * const vlbltab, \ const SCOTCH_Num * const edgenbr, \ const SCOTCH_Num * const edgetab, \ int * const revaptr), \ (meshptr, velmbas, vnodbas, velmnbr, vnodnbr, \ verttab, vendtab, velotab, vnlotab, vlbltab, \ edgenbr, edgetab, revaptr)) { *revaptr = SCOTCH_meshBuild (meshptr, *velmnbr, *vnodnbr, *velmbas, *vnodbas, verttab, vendtab, velotab, vnlotab, vlbltab, *edgenbr, edgetab); } /* ** */ SCOTCH_FORTRAN ( \ MESHCHECK, meshcheck, ( \ const SCOTCH_Mesh * const meshptr, \ int * const revaptr), \ (meshptr, revaptr)) { *revaptr = SCOTCH_meshCheck (meshptr); } /* ** */ SCOTCH_FORTRAN ( \ MESHSIZE, meshsize, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Num * const velmnbr, \ SCOTCH_Num * const vnodnbr, \ SCOTCH_Num * const edgenbr), \ (meshptr, velmnbr, vnodnbr, edgenbr)) { SCOTCH_meshSize (meshptr, velmnbr, vnodnbr, edgenbr); } /* ** */ SCOTCH_FORTRAN ( \ MESHDATA, meshdata, ( \ const SCOTCH_Mesh * const meshptr, \ const SCOTCH_Num * const indxptr, \ SCOTCH_Num * const velmbas, \ SCOTCH_Num * const vnodbas, \ SCOTCH_Num * const velmnbr, \ SCOTCH_Num * const vnodnbr, \ SCOTCH_Idx * const vertidx, \ SCOTCH_Idx * const vendidx, \ SCOTCH_Idx * const veloidx, \ SCOTCH_Idx * const vnloidx, \ SCOTCH_Idx * const vlblidx, \ SCOTCH_Num * const edgenbr, \ SCOTCH_Idx * const edgeidx, \ SCOTCH_Num * const degrnbr), \ (meshptr, indxptr, velmbas, vnodbas, velmnbr, vnodnbr, \ vertidx, vendidx, veloidx, vnloidx, vlblidx, \ edgenbr, edgeidx, degrnbr)) { SCOTCH_Num * verttab; /* Pointer to mesh arrays */ SCOTCH_Num * vendtab; SCOTCH_Num * velotab; SCOTCH_Num * vnlotab; SCOTCH_Num * vlbltab; SCOTCH_Num * edgetab; SCOTCH_meshData (meshptr, velmbas, vnodbas, velmnbr, vnodnbr, &verttab, &vendtab, &velotab, &vnlotab, &vlbltab, edgenbr, &edgetab, degrnbr); *vertidx = (verttab - indxptr) + 1; /* Add 1 since Fortran indices start at 1 */ *vendidx = (vendtab - indxptr) + 1; *veloidx = (velotab != NULL) ? (velotab - indxptr) + 1 : *vertidx; *vnloidx = (vnlotab != NULL) ? (vnlotab - indxptr) + 1 : *vertidx; *vlblidx = (vlbltab != NULL) ? (vlbltab - indxptr) + 1 : *vertidx; *edgeidx = (edgetab - indxptr) + 1; } scotch_6.0.9/src/libscotch/arch_sub.h0000644000302600021200000001725313560005302017757 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_sub.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the sub-architecture meta- **/ /** architecture functions. **/ /** **/ /** DATES : # Version 6.0 : from : 13 mar 2015 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_SUB_H_STRUCT #define ARCH_SUB_H_STRUCT /*+ The sub-architecture definitions. +*/ typedef struct ArchSubTerm_ { Anum domnidx; /*+ Domain index corresponding to local terminal number +*/ Anum termnum; /*+ Corresponding un-based terminal number in original architecture +*/ } ArchSubTerm; typedef struct ArchSubData_ { Anum domnnum; /*+ Domain number, for dichotomy part. Starts at 1 +*/ Anum domnsiz; /*+ Size of domain, in terms of internal vertices +*/ Anum domnwgt; /*+ Weight of internal vertices within domain +*/ Anum termnum; /*+ Smallest original un-based terminal domain number in domain +*/ Anum dfatidx; /*+ Index of father subdomain; -1 if root +*/ Anum dsubidx[2]; /*+ Indices of son subdomains; -1 if terminal +*/ } ArchSubData; typedef struct ArchSub_ { struct Arch_ * archptr; /*+ Pointer to original architecture +*/ Anum termnbr; /*+ Number of terminals in sub-architecture +*/ ArchSubTerm * termtab; /*+ Terminal domain array +*/ Anum domnnbr; /*+ Number of domains in domain array +*/ ArchSubData * domntab; /*+ Domain array +*/ } ArchSub; typedef struct ArchSubTree_ { Anum domnsiz; /*+ Size of domain +*/ Anum domnwgt; /*+ Weight of internal vertices within domain +*/ Anum termnum; /*+ Number of first subdomain; -1 if terminal +*/ Anum vertnum; /*+ Number of vertex at this level +*/ struct ArchSubTree_ * sonstab[2]; /*+ Pointer to son cells +*/ } ArchSubTree; typedef struct ArchSubDom_ { Anum domnidx; /*+ Domain index in domain array +*/ } ArchSubDom; typedef struct ArchSubMatch_ { const ArchSubData * domntab; /*+ Pointer to sub-architecture domain array +*/ ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Anum multnum; /*+ Current number of multinode at current level +*/ Anum vertnum; /*+ Current fine vertex number at current level +*/ Anum levlnum; /*+ Current level +*/ Anum levlmax; /*+ Maximum level to be considered +*/ } ArchSubMatch; #endif /* ARCH_SUB_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO int archSubArchLoad (ArchSub * restrict const, FILE * restrict const); int archSubArchSave (const ArchSub * const, FILE * restrict const); int archSubArchFree (ArchSub * const); int archSubMatchInit (ArchSubMatch * restrict const, const ArchSub * restrict const); void archSubMatchExit (ArchSubMatch * restrict const); Anum archSubMatchMate (ArchSubMatch * restrict const, ArchCoarsenMulti ** restrict const); int archSubArchBuild (ArchSub * const, Arch * const, const Anum, const Anum * const); ArchSubTree * archSubArchBuild2 (void *, Anum (*) (void *, ArchCoarsenMulti * restrict *), ArchSubTree * restrict const, const Anum); ArchDomNum archSubDomNum (const ArchSub * const, const ArchSubDom * const); int archSubDomTerm (const ArchSub * const, ArchSubDom * restrict const, const ArchDomNum); Anum archSubDomSize (const ArchSub * const, const ArchSubDom * const); Anum archSubDomWght (const ArchSub * const, const ArchSubDom * const); Anum archSubDomDist (const ArchSub * const, const ArchSubDom * const, const ArchSubDom * const); int archSubDomFrst (const ArchSub * const, ArchSubDom * const); int archSubDomLoad (const ArchSub * const, ArchSubDom * const, FILE * const); int archSubDomSave (const ArchSub * const, const ArchSubDom * const, FILE * const); int archSubDomBipart (const ArchSub * const, const ArchSubDom * const, ArchSubDom * restrict const, ArchSubDom * restrict const); int archSubDomIncl (const ArchSub * const, const ArchSubDom * const, const ArchSubDom * const); #ifdef SCOTCH_PTSCOTCH int archSubDomMpiType (const ArchSub * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/hgraph_order_hx.c0000644000302600021200000001321413465315041021330 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hx.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains service routines **/ /** for the hgraphOrderH{d|f} ordering **/ /** routines. **/ /** **/ /** DATES : # Version 4.0 : from : 23 jan 2004 **/ /** to : 28 jan 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 25 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_HX #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" #include "hgraph_order_hx.h" /***********************************/ /* */ /* These are the service routines. */ /* */ /***********************************/ /* This routine fills the input arrays for ** the graph ordering routines. ** It returns: ** - void : in all cases. */ void hgraphOrderHxFill ( const Hgraph * restrict const grafptr, Gnum * restrict const petab, Gnum * restrict const lentab, Gnum * restrict const iwtab, Gnum * restrict const nvartab, Gnum * restrict const elentab, Gnum * restrict const pfreptr) { Gnum vertadj; /* Index adjustment for vertices */ Gnum vertnum; Gnum vertnew; Gnum edgenew; Gnum * restrict const petax = petab - 1; /* Base HAMF arrays at base 1 */ Gnum * restrict const iwtax = iwtab - 1; Gnum * restrict const lentax = lentab - 1; Gnum * restrict const nvartax = nvartab - 1; Gnum * restrict const elentax = elentab - 1; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; #if 0 /* TODO when weighted vertices will be managed */ const Gnum * restrict const velotax = grafptr->s.velotax; #endif const Gnum * restrict const edgetax = grafptr->s.edgetax; vertadj = 1 - grafptr->s.baseval; for (vertnum = grafptr->s.baseval, vertnew = edgenew = 1; /* Process non-halo vertices */ vertnum < grafptr->vnohnnd; vertnum ++, vertnew ++) { Gnum degrval; Gnum edgenum; degrval = vendtax[vertnum] - verttax[vertnum]; petax[vertnew] = edgenew; lentax[vertnew] = degrval; elentax[vertnew] = degrval; #if 0 /* TODO when weighted vertices will be managed */ nvartax[vertnew] = (velotax != NULL) ? velotax[vertnum] : 1; #else nvartax[vertnew] = 1; #endif for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++, edgenew ++) iwtax[edgenew] = edgetax[edgenum] + vertadj; } for ( ; vertnum < grafptr->s.vertnnd; vertnum ++, vertnew ++) { /* Process halo vertices */ Gnum degrval; Gnum edgenum; degrval = verttax[vertnum] - vendtax[vertnum]; /* Negative degree */ petax[vertnew] = edgenew; lentax[vertnew] = (degrval != 0) ? degrval : (-1 - grafptr->s.vertnbr); elentax[vertnew] = 0; #if 0 /* TODO when weighted vertices will be managed */ nvartax[vertnew] = (velotax != NULL) ? velotax[vertnum] : 1; #else nvartax[vertnew] = 1; #endif for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++, edgenew ++) iwtax[edgenew] = grafptr->s.edgetax[edgenum] + vertadj; } *pfreptr = edgenew; /* Set index to first free area */ } scotch_6.0.9/src/libscotch/kgraph_map_rb_map.h0000644000302600021200000002017113470115365021626 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb_map.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Dual Recursive Bipartitioning **/ /** mapping algorithm. **/ /** **/ /** DATES : # Version 0.0 : from : 23 mar 1993 **/ /** to 12 may 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 09 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 04 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 15 nov 1995 **/ /** to 15 nov 1995 **/ /** # Version 3.2 : from : 01 oct 1996 **/ /** to 10 jun 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 17 may 1999 **/ /** # Version 3.4 : from : 12 sep 2001 **/ /** to 06 nov 2001 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 05 may 2006 **/ /** # Version 5.1 : from : 30 sep 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Dual recursive bipartitioning option flags. +*/ #define KGRAPHMAPRBMAPARCHVAR 0x0001 /* Variable-sized architecture */ #define KGRAPHMAPRBMAPARCHCMPLT 0x0002 /* Complete-graph architecture */ #define KGRAPHMAPRBMAPPARTHALF 0x0004 /* Only update half of part array as mappings are tied */ /* ** The type and structure definitions. */ /*+ Job pool structures. +*/ typedef struct KgraphMapRbMapPoolLink_ { struct KgraphMapRbMapPoolLink_ * prev; /*+ Pointer to previous link +*/ struct KgraphMapRbMapPoolLink_ * next; /*+ Pointer to next link +*/ } KgraphMapRbMapPoolLink; /*+ This structure defines a job to be performed with respect to a partial mapping of a source graph. +*/ typedef struct KgraphMapRbMapJob_ { KgraphMapRbMapPoolLink poollink; /*+ Link to job pool; TRICK: FIRST +*/ KgraphMapRbMapPoolLink * poolptr; /*+ Pointer to last/current job pool +*/ int poolflag; /*+ Flag set if job in pool +*/ Gnum prioval; /*+ Job priority value by policy +*/ Gnum priolvl; /*+ Priority level computed for this job +*/ ArchDom domnorg; /*+ Domain to which the vertices belong +*/ Graph grafdat; /*+ Job graph data (may be clone of another) +*/ Anum vflonbr; /*+ Number of fixed vertex load slots +*/ KgraphMapRbVflo * vflotab; /*+ Partial array of fixed vertex load slots +*/ } KgraphMapRbMapJob; /*+ This structure defines the working data, for easier parameter passing. +*/ typedef struct KgraphMapRbMapPoolData_ { int flagval; /*+ Pool flag value +*/ KgraphMapRbPolicy polival; /*+ Job selection policy +*/ const Graph * grafptr; /*+ Pointer to top graph +*/ const Anum * pfixtax; /*+ Pointer to fixed part array +*/ KgraphMapRbMapPoolLink linktab[2]; /*+ Lists of jobs in pools +*/ KgraphMapRbMapPoolLink * pooltab[2]; /*+ Pointer to pools (same if tied) +*/ ArchDom * domntab[2]; /*+ Pointer to domain arrays (same if tied) +*/ KgraphMapRbMapJob * jobtab; /*+ Job table +*/ Mapping * mappptr; /*+ Pointer to original mapping: current state +*/ } KgraphMapRbMapPoolData; /* ** The function prototypes. */ #ifdef KGRAPH_MAP_RB_MAP static int kgraphMapRbMapPoolInit (KgraphMapRbMapPoolData * restrict const, const KgraphMapRbData * restrict const); static void kgraphMapRbMapPoolExit (KgraphMapRbMapPoolData * restrict const poolptr); static void kgraphMapRbMapPoolAdd (KgraphMapRbMapPoolLink * restrict const, KgraphMapRbMapJob * const); static KgraphMapRbMapJob * kgraphMapRbMapPoolGet (KgraphMapRbMapPoolData * restrict const); static void kgraphMapRbMapPoolFrst (KgraphMapRbMapPoolData * const, KgraphMapRbMapJob * const); static void kgraphMapRbMapPoolUpdt1 (KgraphMapRbMapPoolData * const, const KgraphMapRbMapJob * const, const GraphPart * const, KgraphMapRbMapJob * const, const GraphPart); static void kgraphMapRbMapPoolUpdt2 (KgraphMapRbMapPoolData * const, const KgraphMapRbMapJob * const, const GraphPart * const, KgraphMapRbMapJob * const, KgraphMapRbMapJob * const); static int kgraphMapRbMapPoolResize (KgraphMapRbMapPoolData * restrict const); #endif /* KGRAPH_MAP_RB_MAP */ int kgraphMapRbMap (const KgraphMapRbData * restrict const, const Graph * restrict const, const Anum, KgraphMapRbVflo * restrict const); /* ** The macro definitions. */ #define kgraphMapRbMapPoolEmpty(poolptr) ((poolptr)->pooltab[0]->next == &kgraphmaprbmappooldummy) scotch_6.0.9/src/libscotch/vdgraph_gather_all.c0000644000302600021200000002333113560013732022001 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_gather_all.c **/ /** **/ /** AUTHORS : Cedric CHEVALIER **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized Vgraph on all **/ /** processes by gathering the pieces of a **/ /** distributed Vdgraph. **/ /** **/ /** DATES : # Version 5.0 : from : 29 apr 2006 **/ /** to 01 mar 2008 **/ /** # Version 5.1 : from : 18 apr 2009 **/ /** to 30 jul 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ /** the receive array should not be **/ /** written more than once. Great care **/ /** should be taken to enforce this rule, **/ /** especially when the number of **/ /** vertices in the centralized graph is **/ /** smaller than the number of **/ /** processes. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH #include "module.h" #include "common.h" #include "comm.h" #include "graph.h" #include "vgraph.h" #include "dgraph.h" #include "vdgraph.h" /* This function gathers on all processes ** the pieces of a distributed Vdgraph to ** build a centralized Vgraph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int vdgraphGatherAll ( const Vdgraph * restrict const dgrfptr, /* Distributed graph */ Vgraph * restrict cgrfptr) /* Centralized graph */ { int * restrict froncnttab; /* Count array for gather operations */ int * restrict frondsptab; /* Displacement array for gather operations */ int fronlocnbr; /* Also int to enforce MPI standard */ #ifdef SCOTCH_DEBUG_VDGRAPH1 int cheklocval; int chekglbval; #endif /* SCOTCH_DEBUG_VDGRAPH1 */ int procnum; #ifdef SCOTCH_DEBUG_VDGRAPH1 cheklocval = 0; if (cgrfptr == NULL) /* Centralized graphs should be provided by all */ cheklocval = 1; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (1)"); return (1); } if (chekglbval != 0) { errorPrint ("vdgraphGatherAll: centralized graphs should be provided on every process"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH1 */ if (dgraphGatherAll (&dgrfptr->s, &cgrfptr->s) != 0) { errorPrint ("vdgraphGatherAll: cannot build centralized graph"); return (1); } cgrfptr->parttax = NULL; /* In case of error */ cgrfptr->frontab = NULL; if (((cgrfptr->parttax = (GraphPart *) memAlloc (cgrfptr->s.vertnbr * sizeof (GraphPart))) == NULL) || ((cgrfptr->parttax -= cgrfptr->s.baseval, cgrfptr->frontab = (Gnum *) memAlloc (cgrfptr->s.vertnbr * sizeof (Gnum))) == NULL)) { errorPrint ("vdgraphGatherAll: out of memory (1)"); #ifndef SCOTCH_DEBUG_VDGRAPH1 vgraphExit (cgrfptr); return (1); } #else /* SCOTCH_DEBUG_VDGRAPH1 */ cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (2)"); return (1); } if (chekglbval != 0) { vgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH1 */ cgrfptr->levlnum = dgrfptr->levlnum; /* Set level of separation graph as level of halo graph */ if (dgrfptr->partgsttax == NULL) { /* If distributed graph does not have a part array yet */ vgraphZero (cgrfptr); return (0); } if (memAllocGroup ((void **) (void *) /* Allocate tempory arrays to gather separator vertices */ &froncnttab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), &frondsptab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("vdgraphGatherAll: out of memory (2)"); #ifndef SCOTCH_DEBUG_VDGRAPH1 vgraphExit (cgrfptr); return (1); } #else /* SCOTCH_DEBUG_VDGRAPH1 */ cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (3)"); return (1); } if (chekglbval != 0) { if (froncnttab != NULL) memFree (froncnttab); vgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH1 */ if (commAllgatherv (dgrfptr->partgsttax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GRAPHPART_MPI, /* Get parttax of distributed graph */ cgrfptr->parttax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GRAPHPART_MPI, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (4)"); return (1); } fronlocnbr = (int) dgrfptr->complocsize[2]; if (MPI_Allgather (&fronlocnbr, 1, MPI_INT, /* Compute how separator vertices are distributed */ froncnttab, 1, MPI_INT, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (5)"); return (1); } frondsptab[0] = 0; /* Offset 0 for first process */ for (procnum = 1; procnum < dgrfptr->s.procglbnbr; procnum ++) /* Adjust index sub-arrays for all processes except the first one */ frondsptab[procnum] = frondsptab[procnum - 1] + froncnttab[procnum - 1]; if (MPI_Allgatherv (dgrfptr->fronloctab, fronlocnbr, GNUM_MPI, /* Gather separator vertices */ cgrfptr->frontab, froncnttab, frondsptab, GNUM_MPI, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphGatherAll: communication error (6)"); return (1); } for (procnum = 1; procnum < dgrfptr->s.procglbnbr; procnum ++) { /* Adjust index sub-arrays for all processes except the first one */ Gnum vertnum; Gnum vertnnd; for (vertnum = (Gnum) frondsptab[procnum], vertnnd = vertnum + (Gnum) froncnttab[procnum]; vertnum < vertnnd; vertnum ++) cgrfptr->frontab[vertnum] += (Gnum) dgrfptr->s.procdsptab[procnum] - dgrfptr->s.baseval; } memFree (froncnttab); /* Free group leader */ for (procnum = 0; procnum < dgrfptr->s.proclocnum; procnum ++) /* Desynchronize random generators across processes */ intRandVal (2); intPerm (cgrfptr->frontab, dgrfptr->compglbsize[2]); /* Compute permutation of frontier array to have different solutions on every process */ cgrfptr->compload[0] = dgrfptr->compglbload[0]; /* Update other fields */ cgrfptr->compload[1] = dgrfptr->compglbload[1]; cgrfptr->compload[2] = dgrfptr->compglbload[2]; cgrfptr->comploaddlt = dgrfptr->compglbloaddlt; cgrfptr->compsize[0] = dgrfptr->compglbsize[0]; cgrfptr->compsize[1] = dgrfptr->compglbsize[1]; cgrfptr->fronnbr = dgrfptr->compglbsize[2]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vgraphCheck (cgrfptr) != 0) { errorPrint ("vdgraphGatherAll: internal error"); vgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/kgraph_map_df_loop.c0000644000302600021200000005316413470115365022013 0ustar pelegrinpelegrin/* Copyright 2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_df_loop.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a k-way partition **/ /** of the given mapping graph by applying **/ /** a diffusion method to what is assumed **/ /** to be a band graph. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ /** to : 23 aug 2014 **/ /** **/ /************************************************************/ /* Tests flags for mapping TODO remove it after performance tests */ /* #define KGRAPHDIFFMAPPNONE */ /* No special code for mapping */ /* #define KGRAPHDIFFMAPPMORE */ /* Give more liquid on expensive architecture edges */ #define KGRAPHDIFFMAPPLESS /* Give less liquid on expensive architecture edges */ /* ** The defines and includes. */ /****************************/ /* */ /* The diffusion subroutine */ /* pattern. */ /* */ /****************************/ /* This routine computes the diffusion of liquids ** on the given part of the k-way band graph. ** It returns: ** - void : in all cases */ static int KGRAPHMAPDFLOOPNAME ( KgraphMapDfThread * restrict thrdptr) /* Thread-dependent data */ { KgraphMapDfVertex * restrict difotax; /* Old diffusion value array */ KgraphMapDfVertex * restrict difntax; /* New diffusion value array */ KgraphMapDfSort * restrict sorttab; /* Liquid sort array */ Gnum vancnnd; Gnum vertnum; Anum domnnum; Gnum passnum; int velsmsk; int mappflag; /* We are computing a mapping */ KgraphMapDfData * restrict const loopptr = (KgraphMapDfData *) thrdptr->thrddat.grouptr; const Kgraph * restrict const grafptr = loopptr->grafptr; float * restrict const vanctab = loopptr->vanctab; float * restrict const valotab = loopptr->valotab; /* Fraction of load to leak */ Gnum * restrict const velstax = loopptr->velstax; const Gnum vertbas = thrdptr->vertbas; /* Range of non-anchor vertices to process */ const Gnum vertnnd = thrdptr->vertnnd; const Anum domnbas = thrdptr->domnbas; /* Range of anchor vertices to process */ const Anum domnnnd = thrdptr->domnnnd; const Anum domnnbr = grafptr->m.domnnbr; const Gnum crloval = grafptr->r.crloval; const Gnum cmloval = grafptr->r.cmloval; Anum * restrict const parttax = grafptr->m.parttax; const Anum * restrict const parotax = grafptr->r.m.parttax; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * const edgetax = grafptr->s.edgetax; const Gnum * const edlotax = grafptr->s.edlotax; vancnnd = grafptr->s.vertnnd - domnnbr; velsmsk = 1; /* Assume no anchors are isolated */ if (edlotax != NULL) { for (domnnum = domnbas; domnnum < domnnnd; domnnum ++) { /* For all local anchor vertices */ Gnum edgenum; Gnum edgennd; Gnum velssum; for (edgenum = verttax[vancnnd + domnnum], edgennd = vendtax[vancnnd + domnnum], velssum = 0; edgenum < edgennd; edgenum ++) velssum += edlotax[edgenum]; velstax[vancnnd + domnnum] = velssum; velsmsk &= (velssum != 0); } } else { for (domnnum = domnbas; domnnum < domnnnd; domnnum ++) { Gnum velssum; velssum = vendtax[vancnnd + domnnum] - verttax[vancnnd + domnnum]; /* Local degree of anchor vertices */ velstax[vancnnd + domnnum] = velssum; velsmsk &= (velssum != 0); } } if (velsmsk == 0) { /* If graph is too small to have any usable anchors */ #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval == 1; /* We will leave during the first iteration */ #else /* KGRAPHMAPDFLOOPTHREAD */ return (1); #endif /* KGRAPHMAPDFLOOPTHREAD */ } if ((sorttab = memAlloc (domnnbr * sizeof (KgraphMapDfSort))) == NULL) { /* Allocate here for memory affinity as it is a private array */ errorPrint (STRINGIFY (KGRAPHMAPDFLOOPNAME) ": out of memory"); #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval = 1; #else /* KGRAPHMAPDFLOOPTHREAD */ return (1); #endif /* KGRAPHMAPDFLOOPTHREAD */ } if (velotax == NULL) { for (domnnum = domnbas; domnnum < domnnnd; domnnum ++) valotab[domnnum] = 1.0F; } else { for (domnnum = domnbas; domnnum < domnnnd; domnnum ++) valotab[domnnum] = (float) velotax[vancnnd + domnnum]; } difntax = loopptr->difntax; difotax = loopptr->difotax; if (edlotax != NULL) { for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) { Gnum velssum; Gnum edgenum; Gnum edgennd; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((vendtax[vertnum] - verttax[vertnum]) == 0) { errorPrint (STRINGIFY (KGRAPHMAPDFLOOPNAME) ": internal error (1)"); #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval = 1; #else /* KGRAPHMAPDFLOOPTHREAD */ return (1); #endif /* KGRAPHMAPDFLOOPTHREAD */ } #endif /* SCOTCH_DEBUG_KGRAPH2 */ difotax[vertnum].partval = parttax[vertnum]; /* Set initial part by default */ difotax[vertnum].diffval = difotax[vertnum].fdifval = difotax[vertnum].mdisval = difotax[vertnum].mdidval = difntax[vertnum].fdifval = difntax[vertnum].mdisval = difntax[vertnum].mdidval = 0.0F; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum], velssum = 0; edgenum < edgennd; edgenum ++) velssum += edlotax[edgenum]; velstax[vertnum] = velssum; } } else { /* Graph has no edge loads */ for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) { #ifdef SCOTCH_DEBUG_KGRAPH2 if ((vendtax[vertnum] - verttax[vertnum]) == 0) { errorPrint (STRINGIFY (KGRAPHMAPDFLOOPNAME) ": internal error (2)"); #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval = 1; #else /* KGRAPHMAPDFLOOPTHREAD */ return (1); #endif /* KGRAPHMAPDFLOOPTHREAD */ } #endif /* SCOTCH_DEBUG_KGRAPH2 */ difotax[vertnum].partval = parttax[vertnum]; /* Set initial part by default */ difotax[vertnum].diffval = difotax[vertnum].fdifval = difotax[vertnum].mdisval = difotax[vertnum].mdidval = difntax[vertnum].fdifval = difntax[vertnum].mdisval = difntax[vertnum].mdidval = 0.0F; velstax[vertnum] = vendtax[vertnum] - verttax[vertnum]; } } for (domnnum = domnbas, vertnum = vancnnd + domnbas; /* For all the subset of anchor vertices */ domnnum < domnnnd; domnnum ++, vertnum ++) { float vancval; Gnum comploadbal; /* Compload to reach to get wished balance */ if (velstax[vancnnd + domnnum] <= 0) { vancval = vanctab[domnnum] = 0.0F; velstax[vertnum] = -1; } else { comploadbal = grafptr->comploadavg[domnnum]; vancval = ((float) comploadbal - valotab[domnnum]) / (float) velstax[vancnnd + domnnum]; /* Amount of liquid to be added at each step */ vanctab[domnnum] = comploadbal; } difotax[vertnum].diffval = vancval; /* Load anchor vertices for first pass */ difotax[vertnum].partval = difntax[vertnum].partval = domnnum; difntax[vertnum].diffval = /* In case of isolated anchors, do not risk overflow because of NaN */ difotax[vertnum].fdifval = difotax[vertnum].mdisval = difotax[vertnum].mdidval = difntax[vertnum].fdifval = difntax[vertnum].mdisval = difntax[vertnum].mdidval = 0.0F; /* Do not consider migration costs for anchors */ } #ifdef KGRAPHMAPDFLOOPTHREAD threadBarrier (thrdptr); if (loopptr->abrtval == 1) { /* If process alone or some decided to quit */ memFree (sorttab); /* Free local array */ return (1); } #endif /* KGRAPHMAPDFLOOPTHREAD */ #ifndef KGRAPHDIFFMAPPNONE if (archPart (grafptr->m.archptr)) mappflag = 0; else mappflag = 1; #else mappflag = 0; #endif /* KGRAPHDIFFMAPPNONE */ passnum = loopptr->passnbr; for ( ; passnum > 0; passnum --) { /* For all passes */ KgraphMapDfVertex * difttax; /* Temporary swap value */ Gnum vertnum; float veloval; veloval = 1.0F; /* Assume no vertex loads */ for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) { /* For all local regular vertices */ Gnum edgenum; Gnum edgennd; Gnum soplval; /* Load sum of edges going to vertex old part */ Gnum sfplval; /* Load sum of edges going to vertex of other parts */ Gnum dfplval; /* Load sum of edges going to vertex of other parts * distval */ Gnum migrval; Anum partnbr; /* Number of active parts */ Anum partnum; float diffval; float signval; Anum paronum; Anum partcur; partnbr = 1; /* Keep vertex in first place to preserve its part */ partcur = sorttab[0].partval = difotax[vertnum].partval; /* Always keep old part value */ sorttab[0].diffval = 0.0F; /* Assume at first it is null */ sorttab[0].edlosum = 0; /* Assume at first there are no loads */ sorttab[0].distval = 1; /* Do not take distval of our part into account */ for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum vertend; float diffval; float fdifval; float mdisval; float mdidval; Anum partval; Anum partnum; Gnum edloval; Anum distval; vertend = edgetax[edgenum]; edloval = (float) ((edlotax != NULL) ? edlotax[edgenum] : 1); partval = difotax[vertend].partval; diffval = difotax[vertend].diffval; /* Value is not yet scaled with respect to diffusion coefficient */ fdifval = difotax[vertend].fdifval; mdisval = difotax[vertend].mdisval; mdidval = difotax[vertend].mdidval; if ((mappflag == 1) && (partval != partcur)) diffval = fdifval; diffval *= edloval * crloval; if (parotax != NULL) { if (difotax[vertnum].partval == parotax[vertend]) diffval += mdisval; else diffval += mdidval; } for (partnum = 0; partnum < partnbr; partnum ++) { if (sorttab[partnum].partval == partval) { sorttab[partnum].diffval += diffval; /* Accumulate contribution in slot */ sorttab[partnum].edlosum += edloval; goto endloop1; /* Do not consider creating a new slot */ } } sorttab[partnbr].partval = partval; /* Create new slot */ sorttab[partnbr].distval = ((mappflag == 1) && (partcur != partval)) ? archDomDist (&grafptr->a, &grafptr->m.domntab[partcur], &grafptr->m.domntab[partval]) : 1; sorttab[partnbr].diffval = diffval; sorttab[partnbr].edlosum = edloval; partnbr ++; endloop1 : ; } if (mappflag == 1) for (partnum = 0; partnum < partnbr; partnum ++) #ifdef KGRAPHDIFFMAPPMORE sorttab[partnum].diffval *= sorttab[partnum].distval; #else /* KGRAPHDIFFMAPPLESS */ sorttab[partnum].diffval /= sorttab[partnum].distval; #endif /* KGRAPHDIFFMAPPMORE */ if (partnbr > 1) /* If not interior vertex */ kgraphMapDfSort (sorttab, partnbr); /* Sort array by descending amounts */ soplval = 0; if (parotax != NULL) { for (partnum = 0; partnum < partnbr; partnum ++) { if (sorttab[partnum].partval == parotax[vertnum]) { soplval = sorttab[partnum].edlosum; break; } } } sfplval = 0; dfplval = 0; if (mappflag == 1) { /* We are doing a mapping */ for (partnum = 1; partnum < partnbr; partnum ++) { sfplval += sorttab[partnum].edlosum; #ifdef KGRAPHDIFFMAPPMORE dfplval += sorttab[partnum].edlosum * sorttab[partnum].distval; #else /* KGRAPHDIFFMAPPLESS */ dfplval += sorttab[partnum].edlosum / sorttab[partnum].distval; #endif /* KGRAPHDIFFMAPPMORE */ } } difntax[vertnum].partval = sorttab[0].partval; /* New part is part of most abundant liquid */ diffval = sorttab[0].diffval; /* Get amount of most abundant liquid */ if (velotax != NULL) /* Account for capacity of barrel */ veloval = (float) velotax[vertnum]; diffval -= veloval; /* Leak liquid from barrel */ if (diffval <= 0.0F) /* Amount of liquid cannot be negative */ diffval = 0.0F; migrval = ((soplval == 0) || (soplval == velstax[vertnum])) ? 0 : grafptr->r.cmloval * ((grafptr->r.vmlotax != NULL) ? grafptr->r.vmlotax[vertnum] : 1); if (migrval > diffval) { migrval = diffval; diffval = 0; } else diffval -= migrval; diffval = diffval / (velstax[vertnum] * crloval); if (isnan (diffval)) { /* If overflow occured */ #ifdef SCOTCH_DEBUG_KGRAPH2 errorPrintW (STRINGIFY (KGRAPHMAPDFLOOPNAME) ": overflow (1)"); #endif /* SCOTCH_DEBUG_KGRAPH2 */ #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval = 1; /* Threads need to halt */ goto abort1; /* Skip computations but synchronize */ #else /* KGRAPHMAPDFLOOPTHREAD */ goto abort2; /* Exit this loop without swapping arrays */ #endif /* KGRAPHMAPDFLOOPTHREAD */ } if (parotax != NULL) { if (migrval == 0) { difntax[vertnum].mdisval = difntax[vertnum].mdidval = 0; } else { if (parotax[vertnum] == sorttab[0].partval) { difntax[vertnum].mdisval = migrval / soplval; difntax[vertnum].mdidval = 0; } else { difntax[vertnum].mdisval = 0; difntax[vertnum].mdidval = migrval / (velstax[vertnum] - soplval); } } } difntax[vertnum].diffval = diffval; if (dfplval != 0) difntax[vertnum].fdifval = diffval * sfplval / dfplval; else difntax[vertnum].fdifval = 0; } for (domnnum = domnbas, vertnum = vancnnd + domnbas; /* For all the subset of anchor vertices */ domnnum < domnnnd; domnnum ++, vertnum ++) { Gnum edgenum; Gnum edgennd; Anum partnbr; /* Number of active parts */ Anum partnum; float diffval; float signval; partnbr = 1; /* Keep vertex in first place to preserve its part */ sorttab[0].partval = domnnum; /* Always keep initial part value */ sorttab[0].diffval = 0.0F; /* Assume at first it is null */ edgenum = verttax[vertnum]; edgennd = vendtax[vertnum]; if (edgenum == edgennd) /* If isolated anchor */ continue; /* Barrel is empty */ for ( ; edgenum < edgennd; edgenum ++) { /* For all edges except anchors */ Gnum vertend; float diffval; Anum partval; Anum partnum; vertend = edgetax[edgenum]; partval = difotax[vertend].partval; diffval = difotax[vertend].diffval; /* Value is not yet scaled with respect to diffusion coefficient */ diffval *= (float) ((edlotax != NULL) ? edlotax[edgenum] : 1); diffval *= crloval; for (partnum = 0; partnum < partnbr; partnum ++) { if (sorttab[partnum].partval == partval) { sorttab[partnum].diffval += diffval; /* Accumulate contribution in slot */ goto endloop2; /* Do not consider creating a new slot */ } } sorttab[partnbr].partval = partval; /* Create new slot */ sorttab[partnbr].diffval = diffval; partnbr ++; endloop2 : ; } if (partnbr > 1) /* If not interior vertex */ kgraphMapDfSort (sorttab, partnbr); /* Sort array by descending amounts */ diffval = sorttab[0].diffval; /* Get amount of most abundant liquid */ if (sorttab[0].partval != domnnum) /* Add liquid from tap to barrel */ diffval = vanctab[domnnum] - diffval; else diffval += vanctab[domnnum]; diffval = (diffval - valotab[domnnum]) / (velstax[vertnum] * crloval); /* Add input and leak liquid from barrel */ if (diffval <= 0.0F) /* Amount of liquid cannot be negative */ diffval = 0.0F; if (isnan (diffval)) { /* If overflow occured */ #ifdef SCOTCH_DEBUG_KGRAPH2 errorPrintW (STRINGIFY (KGRAPHMAPDFLOOPNAME) ": overflow (2)"); #endif /* SCOTCH_DEBUG_KGRAPH2 */ #ifdef KGRAPHMAPDFLOOPTHREAD loopptr->abrtval = 1; /* Threads need to halt */ goto abort1; /* Skip computations but synchronize */ #else /* KGRAPHMAPDFLOOPTHREAD */ goto abort2; /* Exit this loop without swapping arrays */ #endif /* KGRAPHMAPDFLOOPTHREAD */ } difntax[vertnum].partval = domnnum; /* Anchor part is always domain part */ difntax[vertnum].diffval = diffval; } difttax = (KgraphMapDfVertex *) difntax; /* Swap old and new diffusion arrays */ difntax = (KgraphMapDfVertex *) difotax; /* Casts to prevent IBM compiler from yelling */ difotax = (KgraphMapDfVertex *) difttax; abort1 : ; /* If overflow occured, resume here */ #ifdef KGRAPHMAPDFLOOPTHREAD threadBarrier (thrdptr); if (loopptr->abrtval == 1) /* If all threads need to abort */ break; #endif /* KGRAPHMAPDFLOOPTHREAD */ } abort2 : ; for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) /* Set new part distribution of local vertices */ parttax[vertnum] = difntax[vertnum].partval; memFree (sorttab); /* Free local array */ return (0); } scotch_6.0.9/src/libscotch/library_error_exit.c0000644000302600021200000001471013560013261022070 0ustar pelegrinpelegrin/* Copyright 2004,2007-2009,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_error_exit.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module provides error handling **/ /** routines to process errors generated by **/ /** the routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.3 : from : 02 oct 1998 **/ /** to 02 oct 1998 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 5.0 : from : 06 mar 2008 **/ /** to 24 may 2008 **/ /** # Version 5.1 : from : 27 sep 2008 **/ /** to 17 jul 2011 **/ /** # Version 6.0 : from : 24 sep 2019 **/ /** to 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY_ERROR #include "module.h" #include "common.h" #include "scotch.h" /********************************/ /* */ /* The error handling routines. */ /* */ /********************************/ static char _SCOTCHerrorProgName[32] = ""; /* This routine sets the program name for ** error reporting. ** It returns: ** - VOID : in all cases. */ void SCOTCH_errorProg ( const char * const progstr) /*+ Program name +*/ { int charnbr; const char * nsrcptr; char * ndstptr; nsrcptr = progstr; ndstptr = _SCOTCHerrorProgName; charnbr = strlen (progstr); if (charnbr > 31) { _SCOTCHerrorProgName[0] = _SCOTCHerrorProgName[1] = _SCOTCHerrorProgName[2] = '.'; ndstptr += 3; nsrcptr += charnbr - 28; charnbr = 28; } strncpy (ndstptr, nsrcptr, charnbr); _SCOTCHerrorProgName[31] = '\0'; } /* This routine prints an error message with ** a variable number of arguments, as printf () ** does, and exits. ** It returns: ** - EXIT : in all cases. */ void SCOTCH_errorPrint ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* The argument list of the call */ #ifdef SCOTCH_PTSCOTCH int proclocnum; #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "%s", _SCOTCHerrorProgName); #ifdef SCOTCH_PTSCOTCH if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) && (proclocnum != 0) && (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS)) fprintf (stderr, "(%d): ", proclocnum); else fprintf (stderr, ": "); #else /* SCOTCH_PTSCOTCH */ if (_SCOTCHerrorProgName[0] != '\0') fprintf (stderr, ": "); #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "ERROR: "); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ #ifdef SCOTCH_ERROR_SLEEP sleep (SCOTCH_ERROR_SLEEP); /* Wait for messages to be propagated */ #endif /* SCOTCH_ERROR_SLEEP */ exit (EXIT_FAILURE); } /* This routine prints a warning message with ** a variable number of arguments, as printf () ** does. ** It returns: ** - VOID : in all cases. */ void SCOTCH_errorPrintW ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* The argument list of the call */ #ifdef SCOTCH_PTSCOTCH int proclocnum; #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "%s", _SCOTCHerrorProgName); #ifdef SCOTCH_PTSCOTCH if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) && (proclocnum != 0) && (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS)) fprintf (stderr, "(%d): ", proclocnum); else fprintf (stderr, ": "); #else /* SCOTCH_PTSCOTCH */ if (_SCOTCHerrorProgName[0] != '\0') fprintf (stderr, ": "); #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "WARNING: "); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ } scotch_6.0.9/src/libscotch/gain.c0000644000302600021200000003214113303015264017076 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gain.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles logarithmic gain **/ /** table structures. **/ /** **/ /** DATES : # Version 0.0 : from : 26 oct 1996 **/ /** to 30 nov 1996 **/ /** # Version 0.1 : from : 10 may 1999 **/ /** to 10 may 1999 **/ /** # Version 4.0 : from : 10 jan 2004 **/ /** to 18 mar 2005 **/ /** # Version 5.0 : from : 24 mar 2008 **/ /** to 24 mar 2008 **/ /** **/ /** NOTES : # Most of the contents of this module **/ /** comes from "map_b_fm" of the SCOTCH **/ /** project (v3.2). **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GAIN #include "module.h" #include "common.h" #include "gain.h" /* ** The static variables. */ static GainLink gainLinkDummy; /*+ Dummy link space for fast linked list operations +*/ /*************************************************/ /* */ /* These routines deal with generic gain tables. */ /* */ /*************************************************/ /* This routine allocates and initializes ** a gain table structure with the proper ** number of subbits. ** It returns: ** - !NULL : pointer to the gain table; ** - NULL : on error. */ GainTabl * gainTablInit ( const INT gainmax, const INT subbits) { GainEntr * entrptr; GainTabl * tablptr; INT totsize; if (gainmax >= GAIN_LINMAX) { /* If logarithmic indexing */ totsize = ((sizeof (INT) << 3) - subbits) << (subbits + 1); /* Allocate gain table */ if ((tablptr = (GainTabl *) memAlloc (sizeof (GainTabl) + (totsize - 1) * sizeof (GainEntr))) == NULL) return (NULL); tablptr->tablAdd = gainTablAddLog; tablptr->subbits = subbits; /* Fill gain table fields */ tablptr->submask = (1 << (subbits + 1)) - 1; /* Mask with all subbits, plus one, set to 1 */ } else { /* Linear indexing */ totsize = 2 * GAIN_LINMAX; /* Allocate gain table */ if ((tablptr = (GainTabl *) memAlloc (sizeof (GainTabl) + (totsize - 1) * sizeof (GainEntr))) == NULL) return (NULL); tablptr->tablAdd = gainTablAddLin; tablptr->subbits = 0; /* Fill gain table fields */ tablptr->submask = 0; } tablptr->totsize = totsize; tablptr->tabl = tablptr->tabk + (totsize / 2); tablptr->tend = tablptr->tabk + (totsize - 1); /* End of gain entry array */ tablptr->tmin = tablptr->tend; /* Entries of extremal gain */ tablptr->tmax = tablptr->tabk; for (entrptr = tablptr->tabk; /* Initialize gain table entries */ entrptr <= tablptr->tend; entrptr ++) entrptr->next = &gainLinkDummy; /* Point to dummy link area */ return (tablptr); } /* This routine deletes a gain list ** It returns: ** - VOID : in all cases. */ void gainTablExit ( GainTabl * const tablptr) { memFree (tablptr); /* Free table structure itself */ } /* This routine flushes the contents of ** the given gain table. ** It returns: ** - VOID : in all cases. */ void gainTablFree ( GainTabl * const tablptr) { GainEntr * entrptr; for (entrptr = tablptr->tmin; /* Flush only used area */ entrptr <= tablptr->tmax; entrptr ++) entrptr->next = &gainLinkDummy; /* Point to dummy link area */ tablptr->tmin = tablptr->tend; /* Entries of extremal gain */ tablptr->tmax = tablptr->tabk; } /* This routine adds a vertex to the table ** and table gain indicated in the vertex ** fields. ** It returns: ** - VOID : in all cases. */ void gainTablAddLin ( GainTabl * const tablptr, /*+ Pointer to gain table +*/ GainLink * const linkptr, /*+ Pointer to entry to add +*/ const INT gain) /*+ Gain value +*/ { GainEntr * entrptr; /* Pointer to gain entry */ GainLink * headptr; /* Pointer to head of list */ #ifdef SCOTCH_DEBUG_GAIN2 if (tablptr->tablAdd != gainTablAddLin) { errorPrint ("gainTablAddLin: table type mismatch"); return; } #endif /* SCOTCH_DEBUG_GAIN2 */ entrptr = tablptr->tabl + gain; if (entrptr < tablptr->tabk) entrptr = tablptr->tabk; else if (entrptr > tablptr->tend) entrptr = tablptr->tend; if (entrptr < tablptr->tmin) tablptr->tmin = entrptr; if (entrptr > tablptr->tmax) tablptr->tmax = entrptr; headptr = (GainLink *) entrptr; /* TRICK: assume gain entry is a link */ linkptr->tabl = entrptr; /* Set table position */ headptr->next->prev = linkptr; /* Link vertex in gain list: TRICK */ linkptr->prev = headptr; linkptr->next = headptr->next; headptr->next = linkptr; } /* This routine adds a vertex to the table ** and table gain indicated in the vertex ** fields. ** It returns: ** - VOID : in all cases. */ void gainTablAddLog ( GainTabl * const tablptr, /*+ Pointer to gain table +*/ GainLink * const linkptr, /*+ Pointer to entry to add +*/ const INT gain) /*+ Gain value +*/ { GainEntr * entrptr; /* Pointer to gain entry */ INT i, j; #ifdef SCOTCH_DEBUG_GAIN2 if (tablptr->tablAdd != gainTablAddLog) { errorPrint ("gainTablAddLog: table type mismatch"); return; } #endif /* SCOTCH_DEBUG_GAIN2 */ if (gain >= 0) { /* Compute table entry for gain */ for (i = 0, j = gain; j > tablptr->submask; i ++, j >>= 1) ; i = (i << tablptr->subbits) + j; } else { for (i = 0, j = - (gain + 1); j > tablptr->submask; i ++, j >>= 1) ; i = - ((i << tablptr->subbits) + j + 1); } entrptr = tablptr->tabl + i; if (entrptr < tablptr->tmin) tablptr->tmin = entrptr; if (entrptr > tablptr->tmax) tablptr->tmax = entrptr; #ifdef SCOTCH_DEBUG_GAIN3 if ((entrptr->next != &gainLinkDummy) && (entrptr->next->prev != (GainLink *) entrptr)) { errorPrint ("gainTablAddLog: bad first element"); return; } if (gainTablCheck (entrptr) != 0) { errorPrint ("gainTablAddLog: bad chaining"); } #endif /* SCOTCH_DEBUG_GAIN3 */ entrptr->next->prev = linkptr; /* Link vertex in gain list: TRICK */ linkptr->prev = (GainLink *) entrptr; linkptr->next = entrptr->next; linkptr->tabl = entrptr; /* Set table position */ entrptr->next = linkptr; } /* This routine removes a link ** from the table. ** It returns: ** - VOID : in all cases. */ #ifdef SCOTCH_DEBUG_GAIN1 /* Compiled only in debug mode */ void gainTablDel ( GainTabl * const tablptr, GainLink * const linkptr) /*+ Pointer to link to delete +*/ { #ifdef SCOTCH_DEBUG_GAIN3 if (linkptr->tabl != NULL) { if ((linkptr->tabl->next != &gainLinkDummy) && (linkptr->tabl->next->prev != (GainLink *) linkptr->tabl)) { errorPrint ("gainTablDel: bad first element"); return; } if (gainTablCheck (linkptr->tabl) != 0) { errorPrint ("gainTablDel: bad chaining"); return; } } #endif /* SCOTCH_DEBUG_GAIN3 */ linkptr->next->prev = linkptr->prev; /* TRICK: may write in dummy link area */ linkptr->prev->next = linkptr->next; } #endif /* SCOTCH_DEBUG_GAIN1 */ /* This routine returns the link of best ** gain in the table structure. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no such vertex available. */ GainLink * gainTablFrst ( GainTabl * const tablptr) { GainEntr * entrptr; for (entrptr = tablptr->tmin; entrptr <= tablptr->tend; entrptr ++) { if (entrptr->next != &gainLinkDummy) { tablptr->tmin = entrptr; #ifdef SCOTCH_DEBUG_GAIN3 if (gainTablCheck (entrptr) != 0) { errorPrint ("gainTablFrst: bad chaining"); return (NULL); } #endif /* SCOTCH_DEBUG_GAIN3 */ return (entrptr->next); } } tablptr->tmin = tablptr->tend; tablptr->tmax = tablptr->tabk; return (NULL); } /* This routine returns the next best vertex ** following the given vertex. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no such vertex available. */ GainLink * gainTablNext ( GainTabl * const tablptr, const GainLink * const linkptr) { GainEntr * entrptr; if (linkptr->next != &gainLinkDummy) { #ifdef SCOTCH_DEBUG_GAIN3 if (gainTablCheck (linkptr->tabl) != 0) { errorPrint ("gainTablNext: bad chaining (1)"); return (NULL); } #endif /* SCOTCH_DEBUG_GAIN3 */ return (linkptr->next); } for (entrptr = linkptr->tabl + 1; entrptr < tablptr->tend; entrptr ++) { if (entrptr->next != &gainLinkDummy) { #ifdef SCOTCH_DEBUG_GAIN3 if (gainTablCheck (entrptr) != 0) { errorPrint ("gainTablNext: bad chaining (2)"); return (NULL); } #endif /* SCOTCH_DEBUG_GAIN3 */ return (entrptr->next); } } return (NULL); } /* This routine checks the consistency of the ** given linked list. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no such vertex available. */ #ifdef SCOTCH_DEBUG_GAIN3 static int gainTablCheck2 ( GainEntr * const entrptr, GainLink * const linkptr) { GainLink * nextptr; int o; if (linkptr->next == &gainLinkDummy) /* If end of list successfully reached */ return (0); if (linkptr->next == NULL) /* If loop discovered */ return (1); if (linkptr->tabl != entrptr) return (1); nextptr = linkptr->next; /* Save pointer to next cell */ linkptr->next = NULL; /* Flag cell as already visited */ o = gainTablCheck2 (entrptr, nextptr); /* Process next cell */ linkptr->next = nextptr; /* Restore cell state */ return (o); } int gainTablCheck ( GainEntr * const entrptr) { if (entrptr->next == &gainLinkDummy) /* If end of list successfully reached */ return (0); if ((entrptr->next == NULL) || /* If problem with link */ (gainTablCheck2 (entrptr, entrptr->next) != 0)) { errorPrint ("gainTablCheck: bad linked list"); return (1); } return (0); } #endif /* SCOTCH_DEBUG_GAIN3 */ scotch_6.0.9/src/libscotch/library_dgraph_f.c0000644000302600021200000001441513560013261021462 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 04 sep 2006 **/ /** to 05 aug 2007 **/ /** # Version 5.1 : from : 27 jul 2008 **/ /** to 15 apr 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHINIT, dgraphinit, ( \ SCOTCH_Dgraph * const grafptr, \ const MPI_Fint * const commptr, \ int * const revaptr), \ (grafptr, commptr, revaptr)) { MPI_Comm commdat; commdat = MPI_Comm_f2c (*commptr); *revaptr = SCOTCH_dgraphInit (grafptr, commdat); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHEXIT, dgraphexit, ( \ SCOTCH_Dgraph * const grafptr), \ (grafptr)) { SCOTCH_dgraphExit (grafptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHSIZE, dgraphsize, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Num * const vertglbptr, \ SCOTCH_Num * const vertlocptr, \ SCOTCH_Num * const edgeglbptr, \ SCOTCH_Num * const edgelocptr), \ (grafptr, vertglbptr, vertlocptr, edgeglbptr, edgelocptr)) { SCOTCH_dgraphSize (grafptr, vertglbptr, vertlocptr, edgeglbptr, edgelocptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHDATA, dgraphdata, ( \ const SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Num * const indxptr, \ SCOTCH_Num * const baseptr, \ SCOTCH_Num * const vertglbptr, \ SCOTCH_Num * const vertlocptr, \ SCOTCH_Num * const vertlocptz, \ SCOTCH_Num * const vertgstptr, \ SCOTCH_Idx * const vertlocidx, \ SCOTCH_Idx * const vendlocidx, \ SCOTCH_Idx * const velolocidx, \ SCOTCH_Idx * const vlbllocidx, \ SCOTCH_Num * const edgeglbptr, \ SCOTCH_Num * const edgelocptr, \ SCOTCH_Num * const edgelocptz, \ SCOTCH_Idx * const edgelocidx, \ SCOTCH_Idx * const edgegstidx, \ SCOTCH_Idx * const edlolocidx, \ MPI_Fint * const commptr), \ (grafptr, indxptr, baseptr, \ vertglbptr, vertlocptr, vertlocptz, \ vertgstptr, vertlocidx, vendlocidx, \ velolocidx, vlbllocidx, edgeglbptr, \ edgelocptr, edgelocptz, edgelocidx, \ edgegstidx, edlolocidx, commptr)) { SCOTCH_Num * vertloctab; /* Pointer to graph arrays */ SCOTCH_Num * vendloctab; SCOTCH_Num * veloloctab; SCOTCH_Num * vlblloctab; SCOTCH_Num * edgeloctab; SCOTCH_Num * edgegsttab; SCOTCH_Num * edloloctab; MPI_Comm commdat; SCOTCH_dgraphData (grafptr, baseptr, vertglbptr, vertlocptr, vertlocptz, vertgstptr, &vertloctab, &vendloctab, &veloloctab, &vlblloctab, edgeglbptr, edgelocptr, edgelocptz, &edgeloctab, &edgegsttab, &edloloctab, &commdat); *vertlocidx = (vertloctab - indxptr) + 1; /* Add 1 since Fortran indices start at 1 */ *vendlocidx = (vendloctab - indxptr) + 1; *velolocidx = (veloloctab != NULL) ? (veloloctab - indxptr) + 1 : *vertlocidx; *vlbllocidx = (vlblloctab != NULL) ? (vlblloctab - indxptr) + 1 : *vertlocidx; *edgelocidx = (edgeloctab - indxptr) + 1; *edgegstidx = (edgegsttab != NULL) ? (edgegsttab - indxptr) + 1 : *vertlocidx; *edlolocidx = (edloloctab != NULL) ? (edloloctab - indxptr) + 1 : *vertlocidx; *commptr = MPI_Comm_c2f (commdat); } scotch_6.0.9/src/libscotch/kgraph_map_rb_part.c0000644000302600021200000003667013470115365022025 0ustar pelegrinpelegrin/* Copyright 2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb_part.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm for **/ /** (eventually weighted) complete graph **/ /** target architectures. **/ /** **/ /** DATES : # Version 5.1 : from : 16 sep 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 16 sep 2014 **/ /** **/ /** NOTES : # This is a rewrite of kgraphMapRb() **/ /** for complete-graph target topologies. **/ /** Its advantage over kgraphMapRbMap() **/ /** is that no job arrays are allocated, **/ /** which can save space for instance for **/ /** using the variable-sized complete **/ /** graph architecture. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_RB_PART #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "kgraph.h" #include "kgraph_map_rb.h" #include "kgraph_map_rb_part.h" /********************************************/ /* */ /* This is the entry point for the Dual */ /* Recursive Bipartitioning mapping method. */ /* */ /********************************************/ /* This routine updates partial mappings ** according to the result of the recursive ** bipartitioning process. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static void kgraphMapRbPart3 ( const Graph * restrict const srcgrafptr, /* Graph to induce and bipartition */ const GraphPart * restrict const srcparttax, /* Part array of original graph */ const GraphPart indpartval, /* Part of graph to consider */ const int domnnum, /* Index of domain onto which map the part */ Mapping * restrict const mappptr) /* Final mapping */ { Gnum vertnum; const Gnum * restrict const srcvnumtax = srcgrafptr->vnumtax; Anum * restrict const mapparttax = mappptr->parttax; if (srcparttax == NULL) { /* If graph is full graph */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (domnnum != 0) { errorPrint ("kgraphMapRbPart3: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (srcvnumtax == NULL) /* If full graph doesn't have fixed vertices */ memSet (mapparttax + srcgrafptr->baseval, 0, srcgrafptr->vertnbr * sizeof (Anum)); else { Gnum vertnnd; for (vertnum = srcgrafptr->baseval, vertnnd = srcgrafptr->vertnnd; vertnum < vertnnd; vertnum ++) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[srcvnumtax[vertnum]] == ~0) { errorPrint ("kgraphMapRbPart3: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[srcvnumtax[vertnum]] = domnnum; } } } else { /* Graph to consider is a subgraph of the original graph */ if (srcvnumtax == NULL) { /* If original graph is not itself a subgraph */ Gnum vertnnd; for (vertnum = srcgrafptr->baseval, vertnnd = srcgrafptr->vertnnd; vertnum < vertnnd; vertnum ++) { if (srcparttax[vertnum] == indpartval) { /* If vertex belongs to the right part */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[vertnum] == ~0) { errorPrint ("kgraphMapRbPart3: internal error (3)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[vertnum] = domnnum; } } } else { Gnum vertnnd; for (vertnum = srcgrafptr->baseval, vertnnd = srcgrafptr->vertnnd; vertnum < vertnnd; vertnum ++) { if (srcparttax[vertnum] == indpartval) { /* If vertex belongs to the right part */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[srcvnumtax[vertnum]] == ~0) { errorPrint ("kgraphMapRbPart3: internal error (4)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[srcvnumtax[vertnum]] = domnnum; } } } } } /* This routine is the core of the degenerated, ** graph partitioning version of the Dual Recursive ** Bipartitioning algorithm. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int kgraphMapRbPart2 ( const KgraphMapRbData * restrict const dataptr, /*+ Global mapping data +*/ const Graph * restrict const srcgrafptr, /*+ Graph to induce and bipartition +*/ const GraphPart * restrict const srcparttax, /*+ Part array of original graph to consider +*/ const GraphPart indpartval, /*+ Part of graph to consider +*/ const Gnum indvertnbr, /*+ Number of vertices in part or in graph +*/ const Anum domnnum, /*+ Index of domain onto which to map the part +*/ const Anum vflonbr, /*+ Number of fixed vertex load slots +*/ KgraphMapRbVflo * restrict const vflotab) /*+ Array of fixed vertex load slots +*/ { Graph indgrafdat; const Graph * indgrafptr; Bgraph actgrafdat; Anum domnsubidx; Anum domnsubdlt; ArchDom domnsubtab[2]; /* Target subdomains */ Anum domnidxtab[2]; /* Index of subdomains in mapping */ Gnum vertnbrtab[2]; /* Number of vertices in subgraphs */ Anum vflonbrtab[2]; /* Number of fixed vertex slots in subdomains */ Gnum vflowgttab[2]; /* Weights of fixed vertex slots in subdomains */ Mapping * restrict mappptr; int avarval; /* Flag set if variable-sized */ int i; int o; mappptr = dataptr->mappptr; avarval = archVar (mappptr->archptr); o = (avarval && /* If architecture is variable-sized */ (indvertnbr <= 1)) /* And source subgraph of minimal size */ ? 1 /* Then do not bipartition target more */ : archDomBipart (mappptr->archptr, &mappptr->domntab[domnnum], &domnsubtab[0], &domnsubtab[1]); switch (o) { case 1 : /* If target domain is terminal */ kgraphMapRbPart3 (srcgrafptr, srcparttax, indpartval, domnnum, mappptr); /* Update mapping and return */ return (0); case 2 : /* On error */ errorPrint ("kgraphMapRbPart2: cannot bipartition domain"); return (1); } indgrafptr = srcgrafptr; /* Assume we will work on the original graph */ if ((srcparttax != NULL) && /* If not the case, build induced subgraph */ (indvertnbr < srcgrafptr->vertnbr)) { indgrafptr = &indgrafdat; if (graphInducePart (srcgrafptr, srcparttax, indvertnbr, indpartval, &indgrafdat) != 0) { errorPrint ("kgraphMapRbPart2: cannot induce graph"); return (1); } } kgraphMapRbVfloSplit (mappptr->archptr, domnsubtab, vflonbr, vflotab, vflonbrtab, vflowgttab); if (kgraphMapRbBgraph (dataptr, &actgrafdat, indgrafptr, mappptr, domnsubtab, vflowgttab) != 0) { /* Create active graph */ errorPrint ("kgraphMapRbPart2: cannot create bipartition graph"); return (1); } if (! avarval) { /* If not variable-sized, impose constraints on bipartition */ double comploadavg; comploadavg = (double) (actgrafdat.s.velosum + vflowgttab[0] + vflowgttab[1]) / (double) archDomWght (mappptr->archptr, &mappptr->domntab[domnnum]); actgrafdat.compload0min = actgrafdat.compload0avg - (Gnum) MIN ((dataptr->comploadmax - comploadavg) * (double) actgrafdat.domnwght[0], (comploadavg - dataptr->comploadmin) * (double) actgrafdat.domnwght[1]); actgrafdat.compload0max = actgrafdat.compload0avg + (Gnum) MIN ((comploadavg - dataptr->comploadmin) * (double) actgrafdat.domnwght[0], (dataptr->comploadmax - comploadavg) * (double) actgrafdat.domnwght[1]); } if (bgraphBipartSt (&actgrafdat, dataptr->paraptr->strat) != 0) { /* Perform bipartitioning */ errorPrint ("kgraphMapRbPart2: cannot bipartition graph"); bgraphExit (&actgrafdat); return (1); } memFree (actgrafdat.frontab); /* Frontier array of bipartitioning graph is no longer necessary */ actgrafdat.s.flagval &= ~BGRAPHFREEFRON; if (archVar (mappptr->archptr)) { /* If architecture is variable-sized */ if ((actgrafdat.compsize0 == 0) || /* If bipartition failed */ (actgrafdat.compsize0 == actgrafdat.s.vertnbr)) { bgraphExit (&actgrafdat); /* Free bipartition graph (that is, parttax) */ if (indgrafptr == &indgrafdat) /* If an induced subgraph had been created */ graphExit (&indgrafdat); /* Free it */ kgraphMapRbPart3 (srcgrafptr, srcparttax, indpartval, domnnum, mappptr); /* Update mapping with original domain */ return (0); } } domnsubdlt = mappptr->domnnbr - domnnum; /* Increment in domain number */ domnsubidx = domnnum - domnsubdlt; /* Place where to insert subdomain */ mappptr->domnnbr --; /* One less subdomain as for now */ vertnbrtab[0] = actgrafdat.compsize0; vertnbrtab[1] = actgrafdat.s.vertnbr - actgrafdat.compsize0; o = 0; for (i = 1; i >= 0; i --) { /* For all subparts */ if (vertnbrtab[i] <= 0) /* If subpart is empty, skip it */ continue; mappptr->domnnbr ++; /* One more subdomain to account for */ if (mappptr->domnnbr > mappptr->domnmax) { if ((o = mapResize (mappptr, mappptr->domnmax + (mappptr->domnmax >> 2) + 8)) != 0) { /* Increase size by 25% */ errorPrint ("kgraphMapRbPart: cannot resize structures"); break; } } domnsubidx += domnsubdlt; /* Compute location of subdomain */ domnidxtab[i] = domnsubidx; /* Record it before recursion */ mappptr->domntab[domnsubidx] = domnsubtab[i]; /* Write it at this (new) place */ } if (o == 0) { for (i = 1; i >= 0; i --) { /* For all subparts */ if (vertnbrtab[i] <= 0) /* If subpart is empty, skip it */ continue; if ((o = kgraphMapRbPart2 (dataptr, indgrafptr, actgrafdat.parttax, (GraphPart) i, vertnbrtab[i], domnidxtab[i], vflonbrtab[i], vflotab + (i * vflonbrtab[0]))) != 0) return (1); /* If problem in recursion, stop */ } } bgraphExit (&actgrafdat); /* Free bipartition graph (that is, parttax) */ if (indgrafptr == &indgrafdat) /* If an induced subgraph had been created */ graphExit (&indgrafdat); /* Free it */ return (o); } /* This routine is the entry point for ** the degenerated, graph partitioning ** version, of the Dual Recursive ** Bipartitioning algorithm. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRbPart ( const KgraphMapRbData * restrict const dataptr, /*+ Global mapping data +*/ const Graph * restrict const grafptr, /*+ Graph to map, without fixed vertices +*/ const Anum vflonbr, /*+ Number of fixed vertex load slots +*/ KgraphMapRbVflo * restrict const vflotab) /*+ Array of fixed vertex load slots +*/ { Mapping * restrict const mappptr = dataptr->mappptr; #ifdef SCOTCH_DEBUG_KGRAPH2 if (dataptr->pfixtax != NULL) { /* In debug mode, fixed vertex parts are set to ~0 */ Gnum vertnum; for (vertnum = dataptr->grafptr->baseval; vertnum < dataptr->grafptr->vertnnd; vertnum ++) mappptr->parttax[vertnum] = (dataptr->pfixtax[vertnum] >= 0) ? ~0 : 0; } else memSet (mappptr->parttax + dataptr->grafptr->baseval, 0, dataptr->grafptr->vertnbr * sizeof (Anum)); #endif /* SCOTCH_DEBUG_KGRAPH2 */ mappptr->domntab[0] = mappptr->domnorg; /* Initialize mapping */ mappptr->domnnbr = 1; return (kgraphMapRbPart2 (dataptr, grafptr, NULL, 0, grafptr->vertnbr, 0, vflonbr, vflotab)); } scotch_6.0.9/src/libscotch/order_io.c0000644000302600021200000002336213544203710017771 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles generic orderings. **/ /** **/ /** DATES : # Version 3.2 : from : 19 oct 1996 **/ /** to 27 aug 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 28 jun 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 27 feb 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 29 sep 2019 **/ /** to 29 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ORDER_IO #include "module.h" #include "common.h" #include "graph.h" #include "order.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine loads an ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int orderLoad ( Order * restrict const ordeptr, const Gnum * restrict const vlbltax, FILE * restrict const stream) { Gnum * restrict permtab; Gnum vertnum; if (vlbltax != NULL) { errorPrint ("orderLoad: vertex labels not yet supported"); return (1); } if ((permtab = memAlloc (ordeptr->vnodnbr * sizeof (Gnum))) == NULL) { errorPrint ("orderLoad: out of memory"); return (1); } if (intLoad (stream, &ordeptr->vnodnbr) != 1) { errorPrint ("orderLoad: bad input (1)"); memFree (permtab); return (1); } if (vlbltax == NULL) { /* If ordering does not have label array */ for (vertnum = 0; vertnum < ordeptr->vnodnbr; vertnum ++) { Gnum vertval; if ((intLoad (stream, &vertval) != 1) || /* Read item data */ (intLoad (stream, &permtab[vertnum]) != 1)) { errorPrint ("orderLoad: bad input (2)"); memFree (permtab); return (1); } if (vertval != (vertnum + ordeptr->baseval)) { /* Read item data */ errorPrint ("orderLoad: bad input (3)"); memFree (permtab); return (1); } } } orderPeri (permtab, ordeptr->baseval, ordeptr->vnodnbr, ordeptr->peritab, ordeptr->baseval); /* Compute inverse permutation */ memFree (permtab); return (0); } /* This routine saves an ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int orderSave ( const Order * restrict const ordeptr, const Gnum * restrict const vlbltax, FILE * restrict const stream) { Gnum * restrict permtab; Gnum vertnum; if ((permtab = memAlloc (ordeptr->vnodnbr * sizeof (Gnum))) == NULL) { errorPrint ("orderSave: out of memory"); return (1); } if (fprintf (stream, GNUMSTRING "\n", (Gnum) ordeptr->vnodnbr) == EOF) { errorPrint ("orderSave: bad output (1)"); memFree (permtab); return (1); } orderPeri (ordeptr->peritab, ordeptr->baseval, ordeptr->vnodnbr, permtab, ordeptr->baseval); /* Compute direct permutation */ if (vlbltax != NULL) { /* If ordering has label array */ for (vertnum = 0; vertnum < ordeptr->vnodnbr; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) vlbltax[vertnum + ordeptr->baseval], (Gnum) vlbltax[permtab[vertnum]]) == EOF) { errorPrint ("orderSave: bad output (2)"); memFree (permtab); return (1); } } } else { for (vertnum = 0; vertnum < ordeptr->vnodnbr; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) (vertnum + ordeptr->baseval), (Gnum) permtab[vertnum]) == EOF) { errorPrint ("orderSave: bad output (3)"); memFree (permtab); return (1); } } } memFree (permtab); return (0); } /* This routine saves the column block ** mapping data of the given ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int orderSaveMap ( const Order * restrict const ordeptr, const Gnum * restrict const vlbltax, FILE * const stream) { const Gnum * restrict peritax; Gnum * restrict rangtab; Gnum * restrict cblktax; Gnum vnodnnd; Gnum vnodnum; Gnum cblknum; int o; if (fprintf (stream, GNUMSTRING "\n", (Gnum) ordeptr->vnodnbr) == EOF) { errorPrint ("orderSaveMap: bad output (1)"); return (1); } if (memAllocGroup ((void **) (void *) &rangtab, (size_t) ((ordeptr->vnodnbr + 1) * sizeof (Gnum)), &cblktax, (size_t) ( ordeptr->vnodnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("orderSaveMap: out of memory"); return (1); } cblktax -= ordeptr->baseval; orderRang (ordeptr, rangtab); peritax = ordeptr->peritab - ordeptr->baseval; for (vnodnum = ordeptr->baseval, vnodnnd = vnodnum + ordeptr->vnodnbr, cblknum = 0; vnodnum < vnodnnd; vnodnum ++) { if (vnodnum >= rangtab[cblknum + 1]) cblknum ++; cblktax[peritax[vnodnum]] = cblknum; } for (vnodnum = ordeptr->baseval, o = 0; vnodnum < vnodnnd; vnodnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((vlbltax != NULL) ? vlbltax[vnodnum] : vnodnum), (Gnum) cblktax[vnodnum]) == EOF) { errorPrint ("orderSaveMap: bad output (2)"); o = 1; break; } } memFree (rangtab); /* Free memory group leader */ return (o); } /* This routine saves the separator ** tree data of the given ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int orderSaveTree ( const Order * restrict const ordeptr, const Gnum * restrict const vlbltax, FILE * const stream) { const Gnum * restrict peritax; Gnum * restrict rangtab; Gnum * restrict treetab; Gnum * restrict cblktax; Gnum vnodnnd; Gnum vnodnum; Gnum cblknum; int o; if (fprintf (stream, GNUMSTRING "\n", (Gnum) ordeptr->vnodnbr) == EOF) { errorPrint ("orderSaveTree: bad output (1)"); return (1); } if (memAllocGroup ((void **) (void *) &rangtab, (size_t) ((ordeptr->vnodnbr + 1) * sizeof (Gnum)), &treetab, (size_t) ( ordeptr->vnodnbr * sizeof (Gnum)), &cblktax, (size_t) ( ordeptr->vnodnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("orderSaveTree: out of memory"); return (1); } cblktax -= ordeptr->baseval; orderRang (ordeptr, rangtab); orderTree (ordeptr, treetab); peritax = ordeptr->peritab - ordeptr->baseval; for (vnodnum = ordeptr->baseval, vnodnnd = vnodnum + ordeptr->vnodnbr, cblknum = 0; vnodnum < vnodnnd; vnodnum ++) { if (vnodnum >= rangtab[cblknum + 1]) cblknum ++; cblktax[peritax[vnodnum]] = treetab[cblknum]; } for (vnodnum = ordeptr->baseval, o = 0; vnodnum < vnodnnd; vnodnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((vlbltax != NULL) ? vlbltax[vnodnum] : vnodnum), (Gnum) cblktax[vnodnum]) == EOF) { errorPrint ("orderSaveMap: bad output (2)"); o = 1; break; } } memFree (rangtab); /* Free memory group leader */ return (o); } scotch_6.0.9/src/libscotch/library_dgraph_build_f.c0000644000302600021200000001024013560013261022631 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_build_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 24 feb 2007 **/ /** to 18 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /********************************************/ /* */ /* These routines are the Fortran API for */ /* the distributed graph handling routines. */ /* */ /********************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHBUILD, dgraphbuild, ( \ SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Num * const baseval, \ const SCOTCH_Num * const vertlocnbr, \ const SCOTCH_Num * const vertlocmax, \ SCOTCH_Num * const vertloctab, \ SCOTCH_Num * const vendloctab, \ SCOTCH_Num * const veloloctab, \ SCOTCH_Num * const vlblloctab, \ const SCOTCH_Num * const edgelocnbr, \ const SCOTCH_Num * const edgelocsiz, \ SCOTCH_Num * const edgeloctab, \ SCOTCH_Num * const edgegsttab, \ SCOTCH_Num * const edloloctab, \ int * const revaptr), \ (grafptr, baseval, vertlocnbr, vertlocmax, \ vertloctab, vendloctab, veloloctab, \ vlblloctab, edgelocnbr, edgelocsiz, \ edgeloctab, edgegsttab, edloloctab, \ revaptr)) { *revaptr = SCOTCH_dgraphBuild (grafptr, *baseval, *vertlocnbr, *vertlocmax, vertloctab, vendloctab, veloloctab, vlblloctab, *edgelocnbr, *edgelocsiz, edgeloctab, edgegsttab, edloloctab); } scotch_6.0.9/src/libscotch/mapping.h0000644000302600021200000002031213465315041017622 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mapping.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the mapping handling routines. **/ /** **/ /** DATES : # Version 0.0 : from : 15 dec 1992 **/ /** to 01 apr 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 02 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 04 jul 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 06 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 13 nov 2005 **/ /** # Version 5.1 : from : 25 jun 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 06 jun 2018 **/ /** **/ /** NOTES : # While Anum and Gnum are different **/ /** types, because architectures are **/ /** most often much smaller than **/ /** than graphs and require smaller **/ /** integer ranges, for interface **/ /** consistency reasons as well as for **/ /** variable-sized architecture handling, **/ /** they will always amount to the same **/ /** type. **/ /** **/ /************************************************************/ #define MAPPING_H /* ** The defines. */ /*+ Prime number for hashing terminal domain numbers. +*/ #define MAPPINGHASHPRIME 17 /*+ Prime number for hashing +*/ /*+ Graph option flags. +*/ #define MAPPINGNONE 0x0000 /* No options set */ #define MAPPINGFREEPART 0x0001 /* Free partition array */ #define MAPPINGFREEDOMN 0x0002 /* Free domain array */ /* ** The type definitions. */ /*+ This structure defines an (eventually partial) mapping of a source graph to a target architecture. +*/ typedef struct Mapping_ { int flagval; /*+ Mapping properties +*/ const Graph * grafptr; /*+ Graph data +*/ const Arch * archptr; /*+ Architecture data +*/ Anum * parttax; /*+ Mapping array [vertnbr] +*/ ArchDom * domntab; /*+ Array of domains [domnmax] +*/ Anum domnnbr; /*+ Current number of domains +*/ Anum domnmax; /*+ Maximum number of domains +*/ ArchDom domnorg; /*+ Initial (sub)domain +*/ } Mapping; /*+ The target architecture sort structure, used to sort vertices by increasing label value. +*/ typedef struct MappingHash_ { Anum termnum; /*+ Terminal vertex number +*/ Anum domnnum; /*+ Domain number +*/ } MappingHash; /*+ The target architecture sort structure, used to sort vertices by increasing label value. +*/ typedef struct MappingSort_ { Anum labl; /*+ Target architecture vertex label +*/ Anum peri; /*+ Inverse permutation +*/ } MappingSort; /* ** The function prototypes. */ void mapInit (Mapping * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const); void mapInit2 (Mapping * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Anum, const Anum); void mapExit (Mapping * const); int mapAlloc (Mapping * const); void mapFree (Mapping * const); int mapResize (Mapping * restrict const, const Anum); int mapResize2 (Mapping * restrict const, const Anum); int mapCopy (Mapping * const, const Mapping * const); void mapFrst (Mapping * const); int mapBuild (Mapping * restrict const, const Anum * restrict const); int mapMerge (Mapping * restrict const, const Anum * restrict const); void mapTerm (const Mapping * restrict const, Anum * restrict const); int mapLoad (Mapping * restrict const, const Gnum * restrict const, FILE * restrict const); int mapSave (const Mapping * restrict const, FILE * restrict const); int mapView (const Mapping * restrict const, const Graph * restrict const, FILE * const); /* ** The macro definitions. */ #define mapDomain(map,idx) (&((map)->domntab[(map)->parttax[(idx)]])) scotch_6.0.9/src/libscotch/kgraph_map_rb_part.h0000644000302600021200000000557413470115365022031 0ustar pelegrinpelegrin/* Copyright 2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb_part.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Dual Recursive Bipartitioning **/ /** mapping algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 22 sep 2008 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int kgraphMapRbPart (const KgraphMapRbData * restrict const, const Graph * restrict const, const Anum, KgraphMapRbVflo * restrict); scotch_6.0.9/src/libscotch/kgraph_check.c0000644000302600021200000002264013470115365020604 0ustar pelegrinpelegrin/* Copyright 2010,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the mapping graph **/ /** consistency checking routine. **/ /** **/ /** DATES : # Version 5.1 : from : 13 jul 2010 **/ /** to 13 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 14 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "kgraph.h" /*************************/ /* */ /* These routines handle */ /* mapping graphs. */ /* */ /*************************/ /* This routine checks the consistency ** of the given mapping graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int kgraphCheck ( const Kgraph * restrict const grafptr) { int * restrict flagtax; /* Frontier flag array */ Gnum vertnum; /* Number of current vertex */ Gnum fronnum; /* Number of frontier vertex */ Gnum vfixnbr; /* Number of fixed vertices */ Gnum * restrict comploadtab; Gnum commload; Gnum edloval; Anum domnnum; int o; const Gnum baseval = grafptr->s.baseval; const Gnum vertnnd = grafptr->s.vertnnd; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Anum * restrict const parttax = grafptr->m.parttax; const ArchDom * restrict const domntab = grafptr->m.domntab; const Arch * const archptr = grafptr->m.archptr; const Anum * restrict const pfixtax = grafptr->pfixtax; const Gnum * restrict const frontab = grafptr->frontab; if (&grafptr->s != grafptr->m.grafptr) { errorPrint ("kgraphCheck: invalid mapping graph"); return (1); } if ((grafptr->m.domnmax <= 0) || (grafptr->m.domnnbr > grafptr->m.domnmax) || (grafptr->m.domnnbr > grafptr->s.vertnbr)) { errorPrint ("kgraphCheck: invalid number of domains"); return (1); } if (memAllocGroup ((void **) (void *) &comploadtab, (size_t) (grafptr->m.domnnbr * sizeof (Gnum)), &flagtax, (size_t) (grafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphCheck: out of memory"); return (1); } memSet (comploadtab, 0, grafptr->m.domnnbr * sizeof (Gnum)); memSet (flagtax, ~0, grafptr->s.vertnbr * sizeof (Gnum)); flagtax -= baseval; o = 1; /* Assume failure when checking */ for (vertnum = baseval, vfixnbr = 0; vertnum < vertnnd; vertnum ++) { Anum partval; partval = parttax[vertnum]; if ((partval < 0) || (partval >= grafptr->m.domnnbr)) { errorPrint ("kgraphCheck: invalid part array"); goto fail; } if (pfixtax != NULL) { Anum pfixval; pfixval = pfixtax[vertnum]; if (pfixval != ~0) { if (pfixval < 0) { errorPrint ("kgraphCheck: invalid fixed part value"); goto fail; } if (pfixval != archDomNum (archptr, &grafptr->m.domntab[partval])) { errorPrint ("kgraphCheck: part index does not match fixed array"); goto fail; } vfixnbr ++; } } } if (vfixnbr != grafptr->vfixnbr) { errorPrint ("kgraphCheck: invalid number of fixed vertices"); goto fail; } if ((grafptr->fronnbr < 0) || (grafptr->fronnbr > grafptr->s.vertnbr)) { errorPrint ("kgraphCheck: invalid number of frontier vertices"); goto fail; } for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { Gnum vertnum; Gnum edgenum; Anum partval; Anum flagval; vertnum = frontab[fronnum]; if ((vertnum < baseval) || (vertnum >= vertnnd)) { errorPrint ("kgraphCheck: invalid vertex index in frontier array"); goto fail; } if (flagtax[vertnum] != ~0) { errorPrint ("kgraphCheck: duplicate vertex in frontier array"); goto fail; } flagtax[vertnum] = 0; partval = parttax[vertnum]; for (edgenum = verttax[vertnum], flagval = 0; edgenum < vendtax[vertnum]; edgenum ++) flagval |= parttax[edgetax[edgenum]] ^ partval; /* Flag set if neighbor part differs from vertex part */ if (flagval == 0) { errorPrint ("kgraphCheck: invalid vertex in frontier array"); goto fail; } } commload = 0; edloval = 1; /* Assume edges are not weighted */ for (vertnum = baseval; vertnum < vertnnd; vertnum ++) { Anum partval; /* Part of current vertex */ Anum tdomnum; /* Terminal domain number of current vertex */ Anum tdfinum; /* Terminal domain number of current fixed vertex */ Gnum edgenum; /* Number of current edge */ Gnum commcut; partval = parttax[vertnum]; tdomnum = archDomNum (&grafptr->a, &grafptr->m.domntab[partval]); tdfinum = (grafptr->pfixtax != NULL) ? grafptr->pfixtax[vertnum] : -1; if ((tdfinum != -1) && /* If it is a fixed vertex */ (tdfinum != tdomnum)) { errorPrint ("kgraphCheck: invalid fixed vertex part"); goto fail; } comploadtab[partval] += (velotax == NULL) ? 1 : velotax[vertnum]; commcut = 0; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Anum partend; if (edlotax != NULL) edloval = edlotax[edgenum]; partend = parttax[edgetax[edgenum]]; if (partend == partval) /* If same part, no communication load */ continue; commcut += edloval * archDomDist (archptr, &domntab[partval], &domntab[partend]); /* Loads are accounted for twice */ } if ((commcut != 0) && (flagtax[vertnum] != 0)) { /* If vertex should be in frontier array */ errorPrint ("kgraphCheck: vertex should be in frontier array"); goto fail; } commload += commcut; } commload /= 2; if (commload != grafptr->commload) { errorPrint ("kgraphCheck: invalid communication load"); goto fail; } for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) { if (comploadtab[domnnum] != (grafptr->comploadavg[domnnum] + grafptr->comploaddlt[domnnum])) { errorPrint ("kgraphCheck: invalid computation load"); goto fail; } } o = 0; /* Everything turned well */ fail : memFree (comploadtab); /* Free group leader */ return (o); } scotch_6.0.9/src/libscotch/mesh_coarsen.h0000644000302600021200000001272613465315041020647 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_coarsen.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source mesh coarsening **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 19 oct 2003 **/ /** to 04 feb 2004 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /** Prime number for cache-friendly perturbations. **/ #define MESHCOARSENPERTPRIME 31 /* Prime number */ /** Prime number for hashing vertex numbers. **/ #define MESHCOARSENHASHPRIME 17 /* Prime number */ /* ** The type and structure definitions. */ /*+ Here are the edge matching function types for coarsening. +*/ typedef enum MeshCoarsenType_ { MESHCOARSENNGB, /*+ Most neighbors matching +*/ MESHCOARSENNBR /*+ Number of matching types +*/ } MeshCoarsenType; /*+ A table made of such elements is used during coarsening to build the edge array of the new mesh, after the labeling of the vertices. +*/ typedef struct MeshCoarsenMult_ { Gnum finevelmnum[2]; } MeshCoarsenMult; /*+ A table made of such cells is used during coarsening to build the edge array of the elements of the new mesh. +*/ typedef struct MeshCoarsenHngb_ { Gnum coarvelmnum; /*+ Coarse origin element vertex (i.e. pass) number +*/ Gnum coarvnodnum; /*+ Neighbor fine node vertex number +*/ } MeshCoarsenHngb; /*+ A table made of such cells is used during coarsening to detect and merge bridge nodes, that is, nodes that connect only two coarse nodes together. +*/ typedef struct MeshCoarsenHbdg_ { Gnum coarvelmnum; /*+ Coarse origin element vertex (i.e. pass) number +*/ Gnum coarvelmend; /*+ Coarse end element vertex number +*/ Gnum coarvnodnum; /*+ Number of connecting coarse node +*/ } MeshCoarsenHbdg; /*+ A table made of such elements is used during coarsening to build the edge array of the new mesh, after the labeling of the vertices. +*/ typedef struct MeshCoarsenNgHash_ { Gnum velmnum; /*+ Origin element vertex (i.e. pass) number +*/ Gnum velmend; /*+ End element vertex number in fine mesh +*/ Gnum vnngnbr; /*+ Number of shared neighboring node vertices +*/ Gnum vnbgnbr; /*+ Number of bridge neighboring node vertices +*/ } MeshCoarsenNgHash; /* ** The function prototypes. */ #ifdef MESH_COARSEN static void meshCoarsenMatchNg (const Mesh * restrict const, MeshCoarsenMult * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); #endif /* MESH_COARSEN */ int meshCoarsen (const Mesh * restrict const, Mesh * restrict const, Gnum * restrict * const, const Gnum, const double, const MeshCoarsenType); scotch_6.0.9/src/libscotch/vdgraph_separate_sq.c0000644000302600021200000002637313560013732022217 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_sq.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a separator of the **/ /** given distributed separator graph by **/ /** moving all (interesting) vertices of **/ /** the given graph to every processor, **/ /** running a sequential vertex separation **/ /** computing, and projecting back the **/ /** best result obtained. **/ /** **/ /** DATES : # Version 5.1 : from : 15 feb 2006 **/ /** to 30 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_SQ #include "module.h" #include "common.h" #include "comm.h" #include "parser.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "dgraph.h" #include "vdgraph.h" #include "vdgraph_separate_sq.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine is the reduction-loc operator which ** returns in inout[2] the rank of the process which ** holds the best partition. ** It returns: ** - void : in all cases. */ static void vdgraphSeparateSqOpBest ( const Gnum * const in, /* First operand */ Gnum * const inout, /* Second and output operand */ const int * const len, /* Number of instances; should be 1, not used */ const MPI_Datatype * const typedat) /* MPI datatype; not used */ { if (inout[3] == 1) { /* Handle cases when at least one of them is erroneous */ if (in[3] == 1) return; inout[0] = in[0]; inout[1] = in[1]; inout[2] = in[2]; inout[3] = in[3]; return; } else if (in[3] == 1) return; if ((in[0] < inout[0]) || /* Select best partition */ ((in[0] == inout[0]) && ((in[1] < inout[1]) || ((in[1] == inout[1]) && (in[2] < inout[2]))))) { inout[0] = in[0]; inout[1] = in[1]; inout[2] = in[2]; } } /* This routine computes a partition of the ** given distributed graph by gathering as many ** copies of the graph as there are processes ** sharing the distributed graph, running a ** sequential algorithm on them, and collecting ** the best solution found. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vdgraphSeparateSq ( Vdgraph * const dgrfptr, /*+ Distributed graph +*/ const VdgraphSeparateSqParam * const paraptr) /*+ Method parameters +*/ { Vgraph cgrfdat; /* Centralized vertex separator graph structure */ Gnum reduloctab[7]; /* Local array for best separator data (7 for Bcast) */ Gnum reduglbtab[4]; /* Global array for best separator data */ MPI_Datatype besttypedat; /* Data type for finding best separator */ MPI_Op bestoperdat; /* Handle of MPI operator for finding best separator */ int bestprocnum; /* Rank of process holding best partition */ Gnum * restrict vnumloctax; Gnum vertlocnum; Gnum complocsize1; Gnum complocload1; Gnum complocload2; Gnum fronlocnbr; int o; if ((MPI_Type_contiguous (4, GNUM_MPI, &besttypedat) != MPI_SUCCESS) || (MPI_Type_commit (&besttypedat) != MPI_SUCCESS) || (MPI_Op_create ((MPI_User_function *) vdgraphSeparateSqOpBest, 1, &bestoperdat) != MPI_SUCCESS)) { errorPrint ("vdgraphSeparateSq: communication error (1)"); return (1); } reduloctab[0] = /* In case of error, maximum frontier size */ reduloctab[1] = GNUMMAX; /* And maximum load imbalance */ reduloctab[2] = dgrfptr->s.proclocnum; reduloctab[3] = 0; /* Assume sequential separation went fine */ vnumloctax = dgrfptr->s.vnumloctax; /* No need for vertex number array when centralizing graph */ dgrfptr->s.vnumloctax = NULL; o = vdgraphGatherAll (dgrfptr, &cgrfdat); dgrfptr->s.vnumloctax = vnumloctax; /* Restore vertex number array */ if (o != 0) { errorPrint ("vdgraphSeparateSq: cannot build centralized graph"); return (1); } if (vgraphSeparateSt (&cgrfdat, paraptr->strat) != 0) { /* Separate centralized graph */ errorPrint ("vdgraphSeparateSq: cannot separate centralized graph"); reduloctab[3] = 1; } else { /* Fill local array with local separator data */ reduloctab[0] = ((cgrfdat.fronnbr != 0) || ((cgrfdat.compload[0] != 0) && (cgrfdat.compload[1] != 0))) ? cgrfdat.fronnbr : (cgrfdat.fronnbr + cgrfdat.s.vertnbr); /* Partitions with empty separators unwanted if they are completely unbalanced */ reduloctab[1] = cgrfdat.comploaddlt; } if (MPI_Allreduce (reduloctab, reduglbtab, 1, besttypedat, bestoperdat, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateSq: communication error (2)"); return (1); } #ifdef SCOTCH_DEBUG_VDGRAPH2 if (MPI_Allreduce (&reduglbtab[3], &reduloctab[3], 1, GNUM_MPI, MPI_SUM, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateSq: communication error (3)"); return (1); } if ((reduloctab[3] != 0) && (reduloctab[3] != dgrfptr->s.procglbnbr)) { errorPrint ("vdgraphSeparateSq: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ if ((MPI_Op_free (&bestoperdat) != MPI_SUCCESS) || (MPI_Type_free (&besttypedat) != MPI_SUCCESS)) { errorPrint ("vdgraphSeparateSq: communication error (4)"); return (1); } if (reduglbtab[3] != 0) { /* If none of the sequential methods succeeded */ vgraphExit (&cgrfdat); return (1); } bestprocnum = (int) reduglbtab[2]; if (dgrfptr->s.proclocnum == bestprocnum) { /* If process holds best partition */ reduloctab[0] = cgrfdat.compload[0]; /* Global values to share */ reduloctab[1] = cgrfdat.compload[1]; reduloctab[2] = cgrfdat.compload[2]; reduloctab[3] = cgrfdat.comploaddlt; reduloctab[4] = cgrfdat.compsize[0]; reduloctab[5] = cgrfdat.compsize[1]; reduloctab[6] = cgrfdat.fronnbr; } if (MPI_Bcast (reduloctab, 7, GNUM_MPI, bestprocnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateSq: communication error (5)"); return (1); } dgrfptr->compglbload[0] = reduloctab[0]; dgrfptr->compglbload[1] = reduloctab[1]; dgrfptr->compglbload[2] = reduloctab[2]; dgrfptr->compglbloaddlt = reduloctab[3]; dgrfptr->compglbsize[0] = reduloctab[4]; dgrfptr->compglbsize[1] = reduloctab[5]; dgrfptr->compglbsize[2] = reduloctab[6]; if (commScatterv (cgrfdat.parttax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GRAPHPART_MPI, /* No base for sending as procdsptab holds based values */ dgrfptr->partgsttax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GRAPHPART_MPI, bestprocnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateSq: communication error (6)"); return (1); } complocsize1 = complocload1 = complocload2 = 0; for (vertlocnum = dgrfptr->s.baseval, fronlocnbr = 0; vertlocnum < dgrfptr->s.vertlocnnd; vertlocnum ++) { int partval; Gnum partval1; partval = dgrfptr->partgsttax[vertlocnum]; partval1 = partval & 1; complocsize1 += partval1; /* Superscalar update */ if (partval == 2) /* Build local frontier */ dgrfptr->fronloctab[fronlocnbr ++] = vertlocnum; if (dgrfptr->s.veloloctax != NULL) { Gnum partval2; Gnum veloval; veloval = dgrfptr->s.veloloctax[vertlocnum]; partval2 = (partval >> 1) & 1; complocload1 += (-partval1) & veloval; /* Superscalar update */ complocload2 += (-partval2) & veloval; /* Superscalar update */ } } dgrfptr->complocsize[0] = dgrfptr->s.vertlocnbr - fronlocnbr - complocsize1; dgrfptr->complocsize[1] = complocsize1; dgrfptr->complocsize[2] = fronlocnbr; if (dgrfptr->s.veloloctax != NULL) { dgrfptr->complocload[0] = dgrfptr->s.velolocsum - complocload1 - complocload2; dgrfptr->complocload[1] = complocload1; dgrfptr->complocload[2] = complocload2; } else { dgrfptr->complocload[0] = dgrfptr->complocsize[0]; dgrfptr->complocload[1] = dgrfptr->complocsize[1]; dgrfptr->complocload[2] = fronlocnbr; } vgraphExit (&cgrfdat); #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (dgrfptr) != 0) { errorPrint ("vdgraphSeparateSq: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/dorder_io_tree.c0000644000302600021200000001665513303015264021161 0ustar pelegrinpelegrin/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_io_tree.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 26 jul 2007 **/ /** to 26 jul 2007 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to 30 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "comm.h" #include "dgraph.h" #include "order.h" #include "dorder.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine saves a distributed ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dorderSaveTree2 ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, FILE * restrict const stream, int (* funcptr) (const Order * const, const Gnum * const, FILE * const)) { Order corddat; /* Centralized ordering for tree structure */ Gnum * restrict vlbltab; int procglbnbr; int protnum; int reduloctab[3]; int reduglbtab[3]; int cheklocval; int chekglbval; if (stream != NULL) { /* If file provided */ reduloctab[0] = 1; /* This process is the root */ reduloctab[1] = ordeptr->proclocnum; /* Get its rank */ } else { reduloctab[0] = /* This process is not the root */ reduloctab[1] = 0; } reduloctab[2] = (grafptr->vlblloctax != NULL) ? 1 : 0; /* See if vertex labels provided */ if (MPI_Allreduce (reduloctab, reduglbtab, 3, MPI_INT, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSaveTree2: communication error (1)"); return (1); } if (reduglbtab[0] != 1) { errorPrint ("dorderSaveTree2: should have only one root"); return (1); } MPI_Comm_size (ordeptr->proccomm, &procglbnbr); if ((reduglbtab[2] != 0) && (reduglbtab[2] != procglbnbr)) { errorPrint ("dorderSaveTree2: inconsistent parameters"); return (1); } protnum = (int) reduglbtab[1]; /* Get rank of root process */ cheklocval = 0; vlbltab = NULL; if (reduglbtab[2] != 0) { if (protnum == ordeptr->proclocnum) if ((vlbltab = memAlloc (ordeptr->vnodglbnbr * sizeof (Gnum))) == NULL) { errorPrint ("dorderSaveTree2: out of memory"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Bcast (&cheklocval, 1, MPI_INT, protnum, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSaveTree2: communication error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER1 */ if (cheklocval != 0) return (1); if (commGatherv (grafptr->vlblloctax + grafptr->baseval, grafptr->vertlocnbr, GNUM_MPI, vlbltab, grafptr->proccnttab, grafptr->procdsptab, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSaveTree2: communication error (3)"); return (1); } } if (protnum == ordeptr->proclocnum) cheklocval = orderInit (&corddat, ordeptr->baseval, ordeptr->vnodglbnbr, NULL); #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Bcast (&cheklocval, 1, MPI_INT, protnum, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSaveTree2: communication error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER1 */ if (cheklocval != 0) return (1); if (protnum == ordeptr->proclocnum) { cheklocval = dorderGather (ordeptr, &corddat); /* Need inverse permutation too */ if (cheklocval == 0) cheklocval = funcptr (&corddat, vlbltab, stream); orderExit (&corddat); } else cheklocval = dorderGather (ordeptr, NULL); if (vlbltab != NULL) memFree (vlbltab); #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSaveTree2: communication error (3)"); return (1); } #else /* SCOTCH_DEBUG_DORDER1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DORDER1 */ return (chekglbval); } /* This routine saves the separator tree ** data of the given distributed ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dorderSaveTree ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, FILE * restrict const stream) { return (dorderSaveTree2 (ordeptr, grafptr, stream, orderSaveTree)); } /* This routine saves the column block ** mapping data of the given distributed ** ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dorderSaveMap ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, FILE * restrict const stream) { return (dorderSaveTree2 (ordeptr, grafptr, stream, orderSaveMap)); } scotch_6.0.9/src/libscotch/arch_cmpltw.h0000644000302600021200000001365013560005302020471 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_cmpltw.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the weighted complete graph target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 5.1 : from : 11 dec 2007 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_CMPLTW_H_STRUCT #define ARCH_CMPLTW_H_STRUCT /*+ The weighted target vertex. Since Anum's are INT's, they can be sorted, by means of the intSort2asc1 routine. +*/ typedef struct ArchCmpltwLoad_ { Anum veloval; /*+ Vertex load +*/ Anum vertnum; /*+ Vertex index +*/ } ArchCmpltwLoad; /*+ The weighted complete graph definitions. +*/ typedef struct ArchCmpltw_ { Anum vertnbr; /*+ Number of vertices +*/ ArchCmpltwLoad * velotab; /*+ Vertex index array +*/ Anum velosum; /*+ Sum of all weights +*/ } ArchCmpltw; /*+ The weighted domain structure. +*/ typedef struct ArchCmpltwDom_ { Anum vertmin; /*+ Minimum vertex number +*/ Anum vertnbr; /*+ Number of vertices +*/ Anum veloval; /*+ Weight of subdomain +*/ } ArchCmpltwDom; #define archCmpltwMatch archCmpltMatch #endif /* ARCH_CMPLTW_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_CMPLTW_H_PROTO #define ARCH_CMPLTW_H_PROTO int archCmpltwArchBuild (ArchCmpltw * restrict const archptr, const Anum, const Anum * restrict const); int archCmpltwArchLoad (ArchCmpltw * restrict const, FILE * restrict const); int archCmpltwArchSave (const ArchCmpltw * const, FILE * restrict const); int archCmpltwArchFree (ArchCmpltw * restrict const); #define archCmpltwMatchInit archCmpltMatchInit #define archCmpltwMatchExit archCmpltMatchExit #define archCmpltwMatchMate archCmpltMatchMate ArchDomNum archCmpltwDomNum (const ArchCmpltw * const, const ArchCmpltwDom * const); int archCmpltwDomTerm (const ArchCmpltw * const, ArchCmpltwDom * restrict const, const ArchDomNum); Anum archCmpltwDomSize (const ArchCmpltw * const, const ArchCmpltwDom * const); Anum archCmpltwDomWght (const ArchCmpltw * const, const ArchCmpltwDom * const); Anum archCmpltwDomDist (const ArchCmpltw * const, const ArchCmpltwDom * const, const ArchCmpltwDom * const); int archCmpltwDomFrst (const ArchCmpltw * const, ArchCmpltwDom * const); int archCmpltwDomLoad (const ArchCmpltw * const, ArchCmpltwDom * const, FILE * const); int archCmpltwDomSave (const ArchCmpltw * const, const ArchCmpltwDom * const, FILE * const); int archCmpltwDomBipart (const ArchCmpltw * const, const ArchCmpltwDom * const, ArchCmpltwDom * restrict const, ArchCmpltwDom * restrict const); int archCmpltwDomIncl (const ArchCmpltw * const, const ArchCmpltwDom * const, const ArchCmpltwDom * const); #ifdef SCOTCH_PTSCOTCH int archCmpltwDomMpiType (const ArchCmpltw * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_CMPLTW_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/vmesh_separate_ml.c0000644000302600021200000002616213303015264021664 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_ml.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates an active **/ /** mesh using a multi-level scheme. **/ /** **/ /** DATES : # Version 4.0 : from : 19 feb 2003 **/ /** to 31 aug 2005 **/ /** # Version 5.0 : from : 30 jan 2008 **/ /** to 30 jan 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_ML #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "mesh.h" #include "mesh_coarsen.h" #include "vmesh.h" #include "vmesh_separate_ml.h" #include "vmesh_separate_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser mesh from the ** mesh that is given on input. The coarser ** meshes differ at this stage from classical ** active meshes as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse mesh has been built. ** - 1 : if threshold achieved. ** - 2 : on error. */ static int vmeshSeparateMlCoarsen ( const Vmesh * restrict const finemeshptr, /*+ Finer mesh +*/ Vmesh * restrict const coarmeshptr, /*+ Coarser mesh to build +*/ Gnum * restrict * const finecoarptr, /*+ Pointer to multinode table to build +*/ const VmeshSeparateMlParam * const paraptr) /*+ Method parameters +*/ { int o; if (finemeshptr->m.vnodnbr <= (Gnum) paraptr->vnodnbr) return (1); if ((o = meshCoarsen (&finemeshptr->m, &coarmeshptr->m, finecoarptr, (Gnum) paraptr->vnodnbr, paraptr->coarrat, paraptr->coartype)) != 0) return (o); /* Return if coarsening failed */ coarmeshptr->parttax = NULL; /* Do not allocate partition data yet */ coarmeshptr->frontab = finemeshptr->frontab; /* Re-use frontier array for coarser mesh */ coarmeshptr->levlnum = finemeshptr->levlnum + 1; /* Mesh level is coarsening level */ return (0); } /* This routine propagates the separation of the ** coarser mesh back to the finer mesh, according ** to the multinode table of collapsed elements. ** After the separation is propagated, it finishes ** to compute the parameters of the finer mesh that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse mesh data has been propagated to fine mesh. ** - !0 : on error. */ static int vmeshSeparateMlUncoarsen ( Vmesh * restrict const finemeshptr, /*+ Finer mesh +*/ const Vmesh * restrict const coarmeshptr, /*+ Coarser mesh +*/ const Gnum * restrict const finecoartax) /*+ Multinode array +*/ { if (finemeshptr->parttax == NULL) { /* If partition array not yet allocated */ if ((finemeshptr->parttax = (GraphPart *) memAlloc ((finemeshptr->m.velmnbr + finemeshptr->m.vnodnbr) * sizeof (GraphPart))) == NULL) { errorPrint ("vmeshSeparateMlUncoarsen: out of memory"); return (1); /* Allocated data will be freed along with mesh structure */ } finemeshptr->parttax -= finemeshptr->m.baseval; } if (coarmeshptr != NULL) { /* If coarser mesh provided */ Gnum finevelmnum; Gnum fineecmpsize1; /* Number of fine elements */ Gnum fineecmpsize2; Gnum finevnodnum; Gnum finencmpsize1; /* Number of fine nodes */ Gnum finefronnbr; /* Number of frontier vertices in fine mesh */ for (finevelmnum = finemeshptr->m.velmbas, fineecmpsize1 = fineecmpsize2 = 0; finevelmnum < finemeshptr->m.velmnnd; finevelmnum ++) { Gnum partval; #ifdef SCOTCH_DEBUG_VMESH2 if ((finecoartax[finevelmnum] < coarmeshptr->m.baseval) || (finecoartax[finevelmnum] >= (coarmeshptr->m.velmnbr + coarmeshptr->m.vnodnbr + coarmeshptr->m.baseval))) { errorPrint ("vmeshSeparateMlUncoarsen: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ partval = (Gnum) coarmeshptr->parttax[finecoartax[finevelmnum]]; finemeshptr->parttax[finevelmnum] = partval; fineecmpsize1 += (partval & 1); /* Superscalar update of counters */ fineecmpsize2 += (partval & 2); } finemeshptr->ecmpsize[0] = finemeshptr->m.velmnbr - fineecmpsize1 - (fineecmpsize2 >> 1); finemeshptr->ecmpsize[1] = fineecmpsize1; for (finevnodnum = finemeshptr->m.vnodbas, finencmpsize1 = finefronnbr = 0; finevnodnum < finemeshptr->m.vnodnnd; finevnodnum ++) { Gnum partval; #ifdef SCOTCH_DEBUG_VMESH2 if ((finecoartax[finevnodnum] < coarmeshptr->m.vnodbas) || /* Sons of nodes are always nodes */ (finecoartax[finevnodnum] >= coarmeshptr->m.vnodnnd)) { errorPrint ("vmeshSeparateMlUncoarsen: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ partval = coarmeshptr->parttax[finecoartax[finevnodnum]]; finemeshptr->parttax[finevnodnum] = partval; if ((partval & 2) != 0) /* If node is in separator */ finemeshptr->frontab[finefronnbr ++] = finevnodnum; /* Add to frontier */ finencmpsize1 += (partval & 1); } finemeshptr->ncmpload[0] = coarmeshptr->ncmpload[0]; finemeshptr->ncmpload[1] = coarmeshptr->ncmpload[1]; finemeshptr->ncmpload[2] = coarmeshptr->ncmpload[2]; finemeshptr->ncmploaddlt = coarmeshptr->ncmploaddlt; finemeshptr->ncmpsize[0] = finemeshptr->m.vnodnbr - finencmpsize1 - finefronnbr; finemeshptr->ncmpsize[1] = finencmpsize1; finemeshptr->fronnbr = finefronnbr; } else /* No coarse mesh provided */ vmeshZero (finemeshptr); /* Assign all vertices to part 0 */ #ifdef SCOTCH_DEBUG_VMESH2 if (vmeshCheck (finemeshptr) != 0) { errorPrint ("vmeshSeparateMlUncoarsen: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ return (0); } /* This routine recursively performs the ** coarsening recursion. ** It returns: ** - 0 : if recursion proceeded well. ** - !0 : on error. */ static int vmeshSeparateMl2 ( Vmesh * restrict const finemeshptr, /* Vertex-separation mesh */ const VmeshSeparateMlParam * restrict const paraptr) /* Method parameters */ { Vmesh coarmeshdat; Gnum * restrict finecoartax; int o; o = 1; /* Assume an error if "switch...case" returns a strange value in debug mode */ switch (vmeshSeparateMlCoarsen (finemeshptr, &coarmeshdat, &finecoartax, paraptr)) { case 0 : if (((o = vmeshSeparateMl2 (&coarmeshdat, paraptr)) == 0) && ((o = vmeshSeparateMlUncoarsen (finemeshptr, &coarmeshdat, finecoartax)) == 0) && ((o = vmeshSeparateSt (finemeshptr, paraptr->stratasc)) != 0)) /* Apply ascending strategy */ errorPrint ("vmeshSeparateMl2: cannot apply ascending strategy"); coarmeshdat.frontab = NULL; /* Prevent frontab of fine mesh from being freed */ vmeshExit (&coarmeshdat); memFree (finecoartax + finemeshptr->m.baseval); /* Free finecoartab as not part of coarse mesh vertex group (unlike for graphCoarsen) */ break; #ifdef SCOTCH_DEBUG_VMESH2 case 1 : case 2 : /* Cannot coarsen due to lack of memory */ finecoartax = NULL; /* Prevent Valgrind from yelling */ #else /* SCOTCH_DEBUG_VMESH2 */ default : #endif /* SCOTCH_DEBUG_VMESH2 */ if (((o = vmeshSeparateMlUncoarsen (finemeshptr, NULL, finecoartax)) == 0) && /* Finalize mesh */ ((o = vmeshSeparateSt (finemeshptr, paraptr->stratlow)) != 0)) /* Apply low strategy */ errorPrint ("vmeshSeparateMl2: cannot apply low strategy"); break; } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int vmeshSeparateMl ( Vmesh * restrict const meshptr, /*+ Node-separation mesh +*/ const VmeshSeparateMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for mesh level */ int o; levlnum = meshptr->levlnum; /* Save mesh level */ meshptr->levlnum = 0; /* Initialize coarsening level */ o = vmeshSeparateMl2 (meshptr, paraptr); /* Perform multi-level separation */ meshptr->levlnum = levlnum; /* Restore mesh level */ return (o); } scotch_6.0.9/src/libscotch/vgraph_separate_df.h0000644000302600021200000000672613303015264022023 0ustar pelegrinpelegrin/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_df.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the diffusion vertex separation **/ /** method. **/ /** **/ /** DATES : # Version 5.1 : from : 29 oct 2007 **/ /** to 24 may 2008 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Small non-zero float value. */ #define VGRAPHSEPARATEDFEPSILON (1.0F / (float) (GNUMMAX)) /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct VgraphSeparateDfParam_ { INT partval; /*+ Part to aggregate to separator +*/ INT movenbr; /*+ Number of moves to do +*/ INT passnbr; /*+ Number of passes to do +*/ double cdifval; /*+ Coefficient of diffused load +*/ double cremval; /*+ Coefficient of remaining load +*/ } VgraphSeparateDfParam; /* ** The function prototypes. */ int vgraphSeparateDf (Vgraph * restrict const, const VgraphSeparateDfParam * restrict const); scotch_6.0.9/src/libscotch/parser.h0000644000302600021200000002654113470115365017500 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the strategy lexical and syntactic **/ /** analyzer. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 02 may 1996 **/ /** # Version 3.2 : from : 07 oct 1996 **/ /** to 19 oct 1996 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 11 jun 2004 **/ /** # Version 5.1 : from : 20 feb 2008 **/ /** to 20 feb 2008 **/ /** # Version 6.0 : from : 30 sep 2014 **/ /** to 30 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ #define PARSERSTRINGLEN 256 /*+ Length of parser strings +*/ /* ** The type definitions. */ /*+ Strategy node types. +*/ typedef enum StratNodeType_ { STRATNODECONCAT, /*+ Concatenation node +*/ STRATNODECOND, /*+ Condition node +*/ STRATNODEEMPTY, /*+ Empty strategy +*/ STRATNODEMETHOD, /*+ Method +*/ STRATNODESELECT, /*+ Selection node +*/ STRATNODENBR /*+ Number of strategy nodes +*/ } StratNodeType; /*+ Method and graph parameter types. +*/ typedef int StratParamType; /*+ Same type as enum +*/ #define STRATPARAMCASE 0 /*+ Character; TRICK: FIRST +*/ #define STRATPARAMDOUBLE 1 /*+ Double floating-point +*/ #define STRATPARAMINT 2 /*+ Integer +*/ #define STRATPARAMLOG 3 /*+ Logical value +*/ #define STRATPARAMSTRAT 4 /*+ Strategy +*/ #define STRATPARAMSTRING 5 /*+ String of characters +*/ #define STRATPARAMDEPRECATED 8 /*+ Indicates deprecated parameter; can be merged with the above +*/ /*+ Test types, ordered by ascending priority, for proper writing of parentheses. Initial value should be zero for proper indexing. +*/ typedef enum StratTestType_ { STRATTESTOR = 0, /*+ Or operator +*/ STRATTESTAND, /*+ And operator +*/ STRATTESTNOT, /*+ Not operator +*/ STRATTESTEQ, /*+ Equal-to operator +*/ STRATTESTGT, /*+ Greater-than operator +*/ STRATTESTLT, /*+ Less-than operator +*/ STRATTESTADD, /*+ Addition operator +*/ STRATTESTSUB, /*+ Subtraction operator +*/ STRATTESTMUL, /*+ Multiplication operator +*/ STRATTESTMOD, /*+ Modulus operator +*/ STRATTESTVAL, /*+ Constant value +*/ STRATTESTVAR, /*+ Variable +*/ STRATTESTNBR /*+ Number of test nodes +*/ } StratTestType; /*+ Method characteristics. +*/ typedef struct StratMethodTab_ { int meth; /*+ Method number in method table +*/ char * name; /*+ Method name +*/ int (* func) (); /*+ Pointer to bipartitioning method +*/ void * data; /*+ Pointer to default parameters +*/ } StratMethodTab; /*+ Method parameter characteristics. +*/ typedef struct StratParamTab_ { int meth; /*+ Method number in method table +*/ StratParamType type; /*+ Parameter type +*/ char * name; /*+ Parameter name +*/ byte * database; /*+ Pointer to data base in method +*/ byte * dataofft; /*+ Pointer to data offset in method +*/ void * datasltr; /*+ Pointer to data selector +*/ } StratParamTab; /*+ Strategy characteristics. +*/ typedef struct StratTab_ { StratMethodTab * methtab; /*+ Pointer to method table +*/ StratParamTab * paratab; /*+ Pointer to parameter table +*/ StratParamTab * condtab; /*+ Pointer to condition table +*/ } StratTab; /*+ Concatenation strategy node. +*/ typedef struct StratNodeConcat_ { /*+ Concatenation node +*/ struct Strat_ * strat[2]; /*+ Pointers to the two strategies to combine +*/ } StratNodeConcat; /*+ Condition and test strategy nodes. +*/ typedef union StratTestVal_ { /*+ Constant value +*/ double valdbl; /*+ Double value +*/ INT valint; /*+ Integer value +*/ int vallog; /*+ Logical value +*/ } StratTestVal; typedef struct StratTestVar_ { /*+ Condition variable +*/ const StratTab * datatab; /*+ Pointer to data parameter table +*/ int datadisp; /*+ Displacement with respect to beginning +*/ } StratTestVar; typedef struct StratTest_ { /*+ Test node +*/ StratTestType typetest; /*+ Test type +*/ StratParamType typenode; /*+ Node type +*/ union { struct StratTest_ * test[2]; /*+ Logical/relational branches +*/ StratTestVal val; /*+ Value +*/ StratTestVar var; /*+ Variable +*/ } data; } StratTest; typedef struct StratNodeCond_ { /*+ Test node +*/ StratTest * test; /*+ Test condition +*/ struct Strat_ * strat[2]; /*+ Then/else strategies +*/ } StratNodeCond; /*+ Data structure of the empty strategy operator node. +*/ typedef struct StratNodeEmpty_ { /*+ Empty node +*/ byte dummy; /*+ Dummy data +*/ } StratNodeEmpty; /*+ Data structure of the empty strategy operator node. +*/ typedef double StratNodeMethodData[10]; /*+ Reserved padded space for method data */ typedef struct StratNodeMethod_ { /*+ Method node +*/ int meth; /*+ Index in method table +*/ StratNodeMethodData data; /*+ Method data +*/ } StratNodeMethod; /*+ Data structure of the selection strategy operator node. +*/ typedef struct StratNodeSelect_ { /*+ Selection node +*/ struct Strat_ * strat[2]; /*+ Pointers to the two strategies to test +*/ } StratNodeSelect; /*+ The strategy node data structure. +*/ typedef struct Strat_ { const StratTab * tabl; /*+ Pointer to parsing strategy table +*/ StratNodeType type; /*+ Method type +*/ union { /*+ Method data +*/ double padding; /*+ Padding for double alignment +*/ StratNodeConcat concat; /*+ Concatenation node data +*/ StratNodeCond cond; /*+ Condition node data +*/ StratNodeEmpty empty; /*+ Empty node data +*/ StratNodeMethod method; /*+ Method node data +*/ StratNodeSelect select; /*+ Selection node data +*/ } data; } Strat; /* ** The external declarations. */ extern Strat stratdummy; /*+ Dummy empty strategy node +*/ /* ** The function prototypes. */ #ifdef PARSER static int stratTestEvalCast (StratTest * const, StratTest * const); #endif /* PARSER */ Strat * stratInit (const StratTab * const , const char * const); int stratExit (Strat * const); int stratSave (const Strat * const, FILE * const); int stratTestEval (const StratTest * const, StratTest * const, const void * const); int stratTestExit (StratTest * const); int stratTestSave (const StratTest * const, FILE * const); scotch_6.0.9/src/libscotch/library_common_f.c0000644000302600021200000000637313560013261021511 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_common_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the some miscellaneous routines **/ /** provided by the common files of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 14 jun 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for some miscellaneous routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ MEMCUR, memcur, ( \ SCOTCH_Idx * const memoptr), \ (memoptr)) { *memoptr = SCOTCH_memCur (); } /* ** */ SCOTCH_FORTRAN ( \ MEMMAX, memmax, ( \ SCOTCH_Idx * const memoptr), \ (memoptr)) { *memoptr = SCOTCH_memMax (); } scotch_6.0.9/src/libscotch/gain.h0000644000302600021200000001452213465315041017113 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gain.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the definitions of **/ /** the generic gain tables. **/ /** **/ /** DATES : # Version 0.0 : from : 26 oct 1996 **/ /** to 17 nov 1997 **/ /** # Version 0.1 : from : 10 may 1999 **/ /** to 18 mar 2005 **/ /** # Version 5.0 : from : 24 mar 2008 **/ /** to 01 jun 2008 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /** NOTES : # Most of the contents of this module **/ /** comes from "map_b_fm" of the SCOTCH **/ /** project. **/ /** **/ /************************************************************/ /* ** The defines. */ #define GAINMAX ((INT) (((UINT) 1 << ((sizeof (INT) << 3) - 1)) - 2)) #define GAIN_LINMAX 1024 /* ** The type and structure definitions. */ /* The gain link data structure. This must be the first item of objects that are linked into gain tables. */ typedef struct GainLink_ { struct GainLink_ * next; /*+ Pointer to next element: FIRST +*/ struct GainLink_ * prev; /*+ Pointer to previous element +*/ struct GainEntr_ * tabl; /*+ Index into the gain table +*/ } GainLink; /* Gain table entry structure. */ typedef struct GainEntr_ { GainLink * next; /*+ Pointer to first element: FIRST +*/ } GainEntr; /* The gain table structure, built from table entries. For trick reasons, the pointer to the first entry must be the first field of the structure. */ typedef struct GainTabl_ { void (* tablAdd) (struct GainTabl_ * const, GainLink * const, const INT); /*+ Add method +*/ INT subbits; /*+ Number of subbits +*/ INT submask; /*+ Subbit mask +*/ INT totsize; /*+ Total table size +*/ GainEntr * tmin; /*+ Non-empty entry of minimum gain +*/ GainEntr * tmax; /*+ Non-empty entry of maximum gain +*/ GainEntr * tend; /*+ Point after last valid gain entry +*/ GainEntr * tabl; /*+ Gain table structure is.. [SIZE - ADJ] +*/ GainEntr tabk[1]; /*+ Split in two for relative access [ADJ] +*/ } GainTabl; /* ** The function prototypes. */ GainTabl * gainTablInit (const INT, const INT); void gainTablExit (GainTabl * const); void gainTablFree (GainTabl * const); void gainTablAddLin (GainTabl * const, GainLink * const, const INT); void gainTablAddLog (GainTabl * const, GainLink * const, const INT); void gainTablDel (GainTabl * const, GainLink * const); GainLink * gainTablFrst (GainTabl * const); GainLink * gainTablNext (GainTabl * const, const GainLink * const); #ifdef SCOTCH_DEBUG_GAIN3 #ifdef GAIN static int gainTablCheck2 (GainEntr * const, GainLink * const); #endif /* GAIN */ int gainTablCheck (GainEntr * const); #endif /* SCOTCH_DEBUG_GAIN3 */ /* ** The marco definitions. */ #define gainTablEmpty(tabl) ((tabl)->tmin == (tabl)->tend) #define gainTablAdd(tabl,link,gain) ((tabl)->tablAdd ((tabl), (link), (gain))) #if ((! defined GAIN) && (! defined SCOTCH_DEBUG_GAIN1)) #define gainTablDel(tabl,link) (((GainLink *) (link))->next->prev = ((GainLink *) (link))->prev, \ ((GainLink *) (link))->prev->next = ((GainLink *) (link))->next) #endif /* ((! defined GAIN) && (! defined SCOTCH_DEBUG_GAIN1)) */ scotch_6.0.9/src/libscotch/hgraph_order_hf.h0000644000302600021200000000716113465315041021317 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hf.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Fill **/ /** graph ordering routine. **/ /** **/ /** DATES : # Version 3.4 : from : 15 may 2001 **/ /** to : 15 may 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 24 jan 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #define HGRAPHORDERHFCOMPRAT 1.2L /*+ Compression ratio +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderHfParam_ { INT colmin; /*+ Minimum number of columns +*/ INT colmax; /*+ Maximum number of columns +*/ double fillrat; /*+ Fill-in ratio +*/ } HgraphOrderHfParam; /* ** The function prototypes. */ int hgraphOrderHf (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderHfParam * const); scotch_6.0.9/src/libscotch/hgraph_order_st.h0000644000302600021200000001032413303015264021336 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the main graph **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 31 oct 1996 **/ /** to : 29 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 07 sep 2001 **/ /** # Version 4.0 : from : 29 dec 2001 **/ /** to : 15 jan 2003 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to : 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum HgraphOrderStMethodType_ { HGRAPHORDERSTMETHBL = 0, /*+ Block splitting post-processing +*/ HGRAPHORDERSTMETHCC, /*+ Splitting of connected components +*/ HGRAPHORDERSTMETHCP, /*+ Graph compression +*/ HGRAPHORDERSTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ HGRAPHORDERSTMETHHD, /*+ Block Halo Approximate Minimum Degree +*/ HGRAPHORDERSTMETHHF, /*+ Block Halo Approximate Minimum Fill +*/ HGRAPHORDERSTMETHKP, /*+ K-way block partitioning +*/ HGRAPHORDERSTMETHND, /*+ Nested Dissection +*/ HGRAPHORDERSTMETHSI, /*+ Simple +*/ HGRAPHORDERSTMETHNBR /*+ Number of methods +*/ } HgraphOrderStMethodType; /* ** The external declarations. */ extern StratTab hgraphorderststratab; /* ** The function prototypes. */ int hgraphOrderSt (const Hgraph * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const Strat * const); scotch_6.0.9/src/libscotch/library_dgraph_check_f.c0000644000302600021200000000636613560013261022625 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_check_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 26 aug 2006 **/ /** to 26 aug 2006 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHCHECK, dgraphcheck, ( \ const SCOTCH_Dgraph * const grafptr, \ int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_dgraphCheck (grafptr); } scotch_6.0.9/src/libscotch/library_dgraph_redist_f.c0000644000302600021200000000671113560013261023034 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_redist_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 mar 2012 **/ /** to : 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /********************************************/ /* */ /* These routines are the Fortran API for */ /* the distributed graph handling routines. */ /* */ /********************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHREDIST, dgraphredist, ( \ SCOTCH_Dgraph * const srcgrafptr, \ const SCOTCH_Num * const partloctab, \ const SCOTCH_Num * const permgsttab, \ const SCOTCH_Num * const vertlocdlt, \ const SCOTCH_Num * const edgelocdlt, \ SCOTCH_Dgraph * const dstgrafptr, \ int * const revaptr), \ (srcgrafptr, partloctab, permgsttab, vertlocdlt, edgelocdlt, dstgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphRedist (srcgrafptr, partloctab, permgsttab, *vertlocdlt, *edgelocdlt, dstgrafptr); } scotch_6.0.9/src/libscotch/graph_io_scot.h0000644000302600021200000000633413303015264021012 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_scot.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the Scotch graph format **/ /** module. **/ /** **/ /** DATES : # Version 3.2 : from : 06 nov 1997 **/ /** to 06 nov 1997 **/ /** # Version 3.3 : from : 13 dec 1998 **/ /** to 21 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 19 jan 2004 **/ /** # Version 5.0 : from : 13 sep 2006 **/ /** to 13 sep 2006 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ The sort structure, used to sort graph vertices by label. Field labl is first because of intSort2asc1. +*/ typedef struct GraphGeomScotSort_ { Gnum labl; /*+ Vertex label: FIRST +*/ Gnum num; /*+ Vertex number +*/ } GraphGeomScotSort; scotch_6.0.9/src/libscotch/dgraph_gather.c0000644000302600021200000001300613560005435020762 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_gather.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Francois CHATENET (0.0) **/ /** Sebastien FOUCAULT (0.0) **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized graph by gathering **/ /** the pieces of a distributed graph. **/ /** **/ /** DATES : # Version 0.0 : from : 01 apr 1997 **/ /** to : 20 jun 1997 **/ /** # Version 0.1 : from : 14 apr 1998 **/ /** to : 20 jun 1998 **/ /** # Version 0.2 : from : 20 may 1999 **/ /** to : 20 may 1999 **/ /** # Version 5.0 : from : 07 feb 2006 **/ /** to : 16 jul 2007 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ /** the receive array should not be **/ /** written more than once. Great care **/ /** should be taken to enforce this rule, **/ /** especially when the number of **/ /** vertices in the centralized graph is **/ /** smaller than the number of **/ /** processors. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_GATHER #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" /* This function gathers the pieces of ** a distributed graph to build a ** centralized graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int dgraphGather ( const Dgraph * restrict const dgrfptr, /* Distributed graph */ Graph * restrict cgrfptr) /* Centralized graph */ { Gnum reduloctab[3]; Gnum reduglbtab[3]; if (dgrfptr->edloloctax == NULL) /* Compute sum of edge loads */ reduloctab[2] = dgrfptr->edgelocnbr; else { Gnum vertlocnum; Gnum edlolocsum; for (vertlocnum = dgrfptr->baseval, edlolocsum = 0; vertlocnum < dgrfptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; for (edgelocnum = dgrfptr->vertloctax[vertlocnum], edgelocnnd = dgrfptr->vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) edlolocsum += dgrfptr->edloloctax[edgelocnum]; } reduloctab[2] = edlolocsum; } if (cgrfptr != NULL) { /* If centralized graph provided */ reduloctab[0] = 1; /* This process is the root */ reduloctab[1] = (Gnum) dgrfptr->proclocnum; /* Get its number */ } else { reduloctab[0] = /* This process is not the root */ reduloctab[1] = 0; } if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_SUM, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGather: communication error"); return (1); } if (reduglbtab[0] != 1) { errorPrint ("dgraphGather: should have only one root"); return (1); } return (dgraphGatherAll2 (dgrfptr, cgrfptr, reduglbtab[2], (int) reduglbtab[1])); } scotch_6.0.9/src/libscotch/graph_ielo.c0000644000302600021200000001267713465315041020312 0ustar pelegrinpelegrin/* Copyright 2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_ielo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** functions. **/ /** **/ /** DATES : # Version 6.0 : from : 28 dec 2016 **/ /** to 31 may 2018 **/ /** **/ /** NOTES : # This code derives from that of **/ /** arch_build.c. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "module.h" #include "common.h" #include "graph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine computes the inverse of the edge load ** array of the given graph structure. The original ** edge load array and the inverse edge load array ** might be the same. ** It returns: ** - Gnum : new edlosum of the inverse weight load structure. ** - -1 : on error. */ Gnum graphIelo ( const Graph * const grafptr, Gnum * const edlotax, /* Pointer to edge load array [norestrict] */ Gnum * const ielotax) /* Pointer to inverse edge load array to fill [norestrict] */ { Gnum vertnum; Gnum edlomin; Gnum edlomax; Gnum edlosum; float prodval; const Gnum vertnnd = grafptr->vertnnd; const Gnum * restrict const verttax = grafptr->verttax; const Gnum * restrict const vendtax = grafptr->vendtax; edlomin = GNUMMAX; edlomax = 0; for (vertnum = grafptr->baseval; vertnum < vertnnd; vertnum ++) { /* Handle non-compact graphs as well as compact graphs */ Gnum edgenum; Gnum edgennd; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum edloval; edloval = edlotax[edgenum]; if (edloval < edlomin) edlomin = edloval; if (edloval > edlomax) edlomax = edloval; } } if (edlomin < 1) /* Zero-weight edges cannot be inverted */ edlomin = 1; prodval = (float) edlomin * (float) edlomax; edlosum = 0; for (vertnum = grafptr->baseval; vertnum < vertnnd; vertnum ++) { Gnum edgenum; Gnum edgennd; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum edloval; edloval = edlotax[edgenum]; if (edloval <= edlomin) /* "<=" for zero-weight edges */ edloval = edlomax; else if (edloval == edlomax) edloval = edlomin; else edloval = (Gnum) (prodval / (float) edloval + 0.49F); #ifdef SCOTCH_DEBUG_ARCH2 if ((edloval < edlomin) || (edloval > edlomax)) { errorPrint ("graphIelo: internal error"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ edlosum += /* Accumulate edge load sum */ ielotax[edgenum] = edloval; /* Write inversed cost in work array */ } } return (edlosum); } scotch_6.0.9/src/libscotch/vgraph_separate_df.c0000644000302600021200000002766213470115365022030 0ustar pelegrinpelegrin/* Copyright 2007,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_df.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a separator of **/ /** a separation graph by using a diffusion **/ /** scheme. **/ /** **/ /** NOTES : # This algorithm has been designed to **/ /** work on band graphs only, for which **/ /** the two anchor vertices are the two **/ /** last vertices, the before-last as **/ /** anchor of part 0, and the last as **/ /** anchor of part 1. **/ /** **/ /** DATES : # Version 5.1 : from : 29 oct 2007 **/ /** to 24 may 2008 **/ /** # Version 6.0 : from : 24 dec 2013 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_DF #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_df.h" /* ** The static variables. */ static const Gnum vgraphseparatedfloadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the separation. ** It returns: ** - 0 : if the separator could be computed. ** - 1 : on error. */ int vgraphSeparateDf ( Vgraph * restrict const grafptr, /*+ Active graph +*/ const VgraphSeparateDfParam * const paraptr) /*+ Method parameters +*/ { float * restrict edlstax; /* Degree array */ float * restrict difotax; /* Old diffusion value array */ float * restrict difntax; /* New diffusion value array */ float * restrict difttax; /* Temporary swap value */ float cdifval; float cremval; Gnum fronnum; Gnum compload0avg; Gnum compload2; Gnum compsize1; float veloval; float vanctab[2]; INT movenum; INT passnum; const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; Gnum * restrict const frontab = grafptr->frontab; GraphPart * restrict const parttax = grafptr->parttax; if (memAllocGroup ((void **) (void *) &edlstax, (size_t) (grafptr->s.vertnbr * sizeof (float)), &difotax, (size_t) (grafptr->s.vertnbr * sizeof (float)), &difntax, (size_t) (grafptr->s.vertnbr * sizeof (float)), NULL) == NULL) { errorPrint ("vgraphSeparateDf: out of memory"); return (1); } edlstax -= grafptr->s.baseval; /* Base access to edlstax and diffusion arrays */ difotax -= grafptr->s.baseval; difntax -= grafptr->s.baseval; if (grafptr->s.edlotax == NULL) { /* If graph has no edge weights */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) edlstax[vertnum] = (float) (vendtax[vertnum] - verttax[vertnum]); } else { /* If graph has edge weights */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum edgenum; Gnum edlosum; for (edgenum = verttax[vertnum], edlosum = 0; edgenum < vendtax[vertnum]; edgenum ++) edlosum += grafptr->s.edlotax[edgenum]; edlstax[vertnum] = (float) edlosum; } } compload0avg = grafptr->compload[0] + grafptr->compload[2] / 2; passnum = 0; do { const Gnum * restrict velobax; Gnum velomsk; Gnum vertnum; Gnum compload0; Gnum compload1; int rootval; /* Root part for separator vertices */ compload0 = compload0avg - grafptr->compload[2] / 2; compload1 = grafptr->s.velosum - compload0avg - (grafptr->compload[2] + 1) / 2; vanctab[0] = (float) (- compload0); /* Values to be injected to anchor vertices at every iteration */ vanctab[1] = (float) compload1 - VGRAPHSEPARATEDFEPSILON; /* Slightly tilt value to add to part 1 */ rootval = (paraptr->partval + passnum) & 1; /* Compute index of part which will receive separator vertices */ if (rootval == 0) /* If separator must be aggregated to part 0 */ vanctab[0] -= (float) grafptr->compload[2]; else vanctab[1] += (float) grafptr->compload[2]; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd - 2; vertnum ++) difotax[vertnum] = 0.0F; difotax[grafptr->s.vertnnd - 2] = vanctab[0] / edlstax[grafptr->s.vertnnd - 2]; /* Load anchor vertices for first move */ difotax[grafptr->s.vertnnd - 1] = vanctab[1] / edlstax[grafptr->s.vertnnd - 1]; veloval = 1.0F; /* Assume no vertex loads */ cdifval = paraptr->cdifval; cremval = paraptr->cremval; for (movenum = 0; movenum < paraptr->movenbr; movenum ++) { /* For all moves */ Gnum vertnum; Gnum vertnnd; vertnum = grafptr->s.baseval; vertnnd = grafptr->s.vertnnd - 2; while (1) { for ( ; vertnum < vertnnd; vertnum ++) { Gnum edgenum; Gnum edgennd; float diffval; edgenum = verttax[vertnum]; edgennd = vendtax[vertnum]; diffval = 0.0F; if (grafptr->s.edlotax != NULL) for ( ; edgenum < edgennd; edgenum ++) diffval += difotax[edgetax[edgenum]] * (float) grafptr->s.edlotax[edgenum]; else for ( ; edgenum < edgennd; edgenum ++) diffval += difotax[edgetax[edgenum]]; if (grafptr->s.velotax != NULL) veloval = (float) grafptr->s.velotax[vertnum]; diffval *= cdifval; diffval += difotax[vertnum] * cremval * edlstax[vertnum]; if (diffval >= 0.0F) { diffval -= veloval; if (diffval <= 0.0F) diffval = +VGRAPHSEPARATEDFEPSILON; } else { diffval += veloval; if (diffval >= 0.0F) diffval = -VGRAPHSEPARATEDFEPSILON; } if (isnan (diffval)) /* If overflow occured */ goto abort; /* Exit main loop without swapping arrays so as to keep last valid iteration */ difntax[vertnum] = diffval / edlstax[vertnum]; /* Prepare vertex for diffusion */ } if (vertnum == grafptr->s.vertnnd) /* If all vertices processed, exit intermediate infinite loop */ break; vertnnd ++; /* Prepare to go only for one more run */ } difttax = difntax; /* Swap old and new diffusion arrays */ difntax = difotax; difotax = difttax; } abort : /* If overflow occured, resume here */ for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) /* Pre-set parts without separator */ parttax[vertnum] = (difotax[vertnum] <= 0.0F) ? 0 : 1; if (grafptr->s.velotax != NULL) { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } else { velobax = &vgraphseparatedfloadone; velomsk = 0; } veloval = 1.0F; /* Assume no vertex loads */ for (vertnum = grafptr->s.baseval, fronnum = compsize1 = compload1 = compload2 = 0; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum partval; GraphPart partend; Gnum veloval; partend = parttax[vertnum] ^ 1; partval = (Gnum) parttax[vertnum]; veloval = velobax[vertnum & velomsk]; compsize1 += partval; /* Here, part is 0 or 1 only */ compload1 += partval * veloval; if (partval == (Gnum) rootval) { /* Only vertices of aggregated part can be in separator */ Gnum edgenum; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { if (parttax[edgetax[edgenum]] == partend) { /* If end vertex is in other part (and not in separator) */ frontab[fronnum ++] = vertnum; /* Record it */ parttax[vertnum] = 2; compload2 += veloval; break; /* No need to go further */ } } } } grafptr->compload[0] = grafptr->s.velosum - compload1; grafptr->compload[1] = compload1; grafptr->compload[2] = compload2; grafptr->compload[rootval] -= compload2; grafptr->comploaddlt = grafptr->compload[0] - grafptr->compload[1]; grafptr->compsize[0] = grafptr->s.vertnbr - compsize1; grafptr->compsize[1] = compsize1; grafptr->compsize[rootval] -= fronnum; grafptr->fronnbr = fronnum; } while (++ passnum < paraptr->passnbr); /* As long as not all passes performed */ memFree (edlstax + grafptr->s.baseval); /* Free group leader */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) { errorPrint ("vgraphSeparateDf: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/vdgraph_check.c0000644000302600021200000002455513560013732020765 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the distributed **/ /** separator graph consistency checking **/ /** routine. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 01 mar 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "vdgraph.h" /*************************/ /* */ /* These routines handle */ /* separator graphs. */ /* */ /*************************/ /* This routine checks the consistency ** of the given distributed separator graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int vdgraphCheck ( const Vdgraph * const grafptr) { Dgraph grafdat; /* Dummy graph for ghost edge array */ MPI_Comm proccomm; /* Graph communicator */ Gnum vertnum; /* Number of current vertex */ Gnum fronnum; /* Number of frontier vertex */ Gnum complocload[3]; Gnum complocsize[3]; Gnum commcut[3]; GraphPart * restrict partgsttax; Gnum reduloctab[11]; /* Arrays for reductions */ Gnum reduglbtab[11]; int cheklocval; /* Local consistency flag */ int chekglbval; /* Global consistency flag */ proccomm = grafptr->s.proccomm; if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize */ errorPrint ("vdgraphCheck: communication error (1)"); return (1); } cheklocval = 0; /* Assume everything is all right */ if ((grafptr->compglbload[0] + grafptr->compglbload[1] + grafptr->compglbload[2]) != grafptr->s.veloglbsum) { errorPrint ("vdgraphCheck: invalid global load sum"); cheklocval = 1; } if (grafptr->compglbloaddlt != (grafptr->compglbload[0] - grafptr->compglbload[1])) { errorPrint ("vdgraphCheck: invalid global balance"); cheklocval |= 2; } if ((grafptr->compglbsize[0] + grafptr->compglbsize[1] + grafptr->compglbsize[2]) != grafptr->s.vertglbnbr) { errorPrint ("vdgraphCheck: invalid global size sum"); cheklocval |= 4; } if ((grafptr->complocsize[0] + grafptr->complocsize[1] + grafptr->complocsize[2]) != grafptr->s.vertlocnbr) { errorPrint ("vdgraphCheck: invalid local size sum"); cheklocval |= 8; } if ((grafptr->complocsize[2] < 0) || (grafptr->complocsize[2] > grafptr->s.vertlocnbr)) { errorPrint ("vdgraphCheck: invalid number of local frontier vertices"); cheklocval |= 16; } for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertlocnnd; vertnum ++) { if (grafptr->partgsttax[vertnum] > 2) { errorPrint ("vdgraphCheck: invalid local part array"); cheklocval |= 32; break; } } for (fronnum = 0; fronnum < grafptr->complocsize[2]; fronnum ++) { Gnum vertnum; vertnum = grafptr->fronloctab[fronnum]; if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->s.vertlocnnd)) { errorPrint ("vdgraphCheck: invalid vertex index in frontier array"); cheklocval |= 64; break; } if (grafptr->partgsttax[vertnum] != 2) { errorPrint ("vdgraphCheck: invalid vertex in frontier array"); cheklocval |= 64; break; } } grafdat = grafptr->s; /* Copy minimal distributed graph data */ if (dgraphGhst (&grafdat) != 0) { /* Create ghost edge array if did not exist */ errorPrint ("vdgraphCheck: cannot compute ghost edge array"); cheklocval |= 128; } if ((partgsttax = memAlloc (grafdat.vertgstnbr * sizeof (byte))) == NULL) { errorPrint ("vdgraphCheck: out of memory"); cheklocval |= 256; } reduloctab[0] = grafptr->compglbload[0]; reduloctab[1] = - grafptr->compglbload[0]; reduloctab[2] = grafptr->compglbload[1]; reduloctab[3] = - grafptr->compglbload[1]; reduloctab[4] = grafptr->compglbload[2]; reduloctab[5] = - grafptr->compglbload[2]; reduloctab[6] = grafptr->compglbsize[2]; reduloctab[7] = - grafptr->compglbsize[2]; reduloctab[8] = grafptr->levlnum; reduloctab[9] = - grafptr->levlnum; reduloctab[10] = cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 11, GNUM_MPI, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphCheck: communication error (2)"); return (1); } if (reduglbtab[10] != 0) { /* Return from previous errors */ if (partgsttax != NULL) memFree (partgsttax); return (1); } if ((reduglbtab[1] != - reduglbtab[0]) || (reduglbtab[3] != - reduglbtab[2]) || (reduglbtab[5] != - reduglbtab[4]) || (reduglbtab[7] != - reduglbtab[6]) || (reduglbtab[9] != - reduglbtab[8])) { errorPrint ("vdgraphCheck: inconsistent global graph data"); return (1); } memCpy (partgsttax, grafptr->partgsttax + grafptr->s.baseval, grafptr->s.vertlocnbr); /* Copy local part data */ dgraphHaloSync (&grafdat, partgsttax, GRAPHPART_MPI); /* Spread yet unbased halo part data across neighboring processes */ partgsttax -= grafptr->s.baseval; complocload[0] = complocload[1] = complocload[2] = 0; complocsize[0] = complocsize[1] = complocsize[2] = 0; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertlocnnd; vertnum ++) { int partnum; /* Part of current vertex */ Gnum edgenum; /* Number of current edge */ partnum = (int) partgsttax[vertnum]; complocload[partnum] += (grafptr->s.veloloctax == NULL) ? 1 : grafptr->s.veloloctax[vertnum]; complocsize[partnum] ++; commcut[0] = commcut[1] = commcut[2] = 0; for (edgenum = grafptr->s.vertloctax[vertnum]; edgenum < grafptr->s.vendloctax[vertnum]; edgenum ++) { if (grafdat.edgegsttax[edgenum] < grafptr->s.vertlocnnd) /* Check only for local ends, as ghost part might be inaccurate */ commcut[partgsttax[grafdat.edgegsttax[edgenum]]] ++; } if (partnum != 2) { if (commcut[1 - partnum] != 0) { errorPrint ("vdgraphCheck: vertex should be in separator (%ld)", (long) vertnum); cheklocval = 1; break; } } } if (grafptr->s.edgegsttax != grafdat.edgegsttax) /* If ghost edge array was allocated here, free it manually */ memFree (grafdat.edgegsttax + grafptr->s.baseval); if (grafptr->s.procsidtab != grafdat.procsidtab) /* The same for procsidtab */ memFree (grafdat.procsidtab); memFree (partgsttax + grafptr->s.baseval); if ((cheklocval == 0) && ((complocsize[0] != grafptr->complocsize[0]) || (complocsize[1] != grafptr->complocsize[1]) || (complocsize[2] != grafptr->complocsize[2]))) { errorPrint ("vgraphCheck: invalid local part sizes"); cheklocval = 1; } reduloctab[0] = complocload[0]; reduloctab[1] = complocload[1]; reduloctab[2] = complocload[2]; reduloctab[3] = complocsize[0]; reduloctab[4] = complocsize[1]; reduloctab[5] = complocsize[2]; reduloctab[6] = cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 7, GNUM_MPI, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphCheck: communication error (3)"); return (1); } if (reduglbtab[6] != 0) /* Return from previous errors */ return (1); if ((grafptr->compglbload[0] != reduglbtab[0]) || (grafptr->compglbload[1] != reduglbtab[1]) || (grafptr->compglbload[2] != reduglbtab[2])) { errorPrint ("vdgraphCheck: invalid global part loads"); cheklocval = 1; } if ((grafptr->compglbsize[0] != reduglbtab[3]) || (grafptr->compglbsize[1] != reduglbtab[4]) || (grafptr->compglbsize[2] != reduglbtab[5])) { errorPrint ("vgraphCheck: invalid global part sizes"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphCheck: communication error (4)"); return (1); } return (chekglbval); } scotch_6.0.9/src/libscotch/library_version.c0000644000302600021200000000644013560013261021374 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_version.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling API- and **/ /** version-related routines in the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2010 **/ /** to 16 nov 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* miscellaneous routines. */ /* */ /************************************/ /*+ This routine returns the version, *** release and patchlevel numbers of *** the library being used (useful for *** dynamic libraries). *** It returns: *** - void : in all cases. +*/ void SCOTCH_version ( int * const versptr, int * const relaptr, int * const patcptr) { *versptr = SCOTCH_VERSION_NUM; *relaptr = SCOTCH_RELEASE_NUM; *patcptr = SCOTCH_PATCHLEVEL_NUM; } scotch_6.0.9/src/libscotch/common_memory.c0000644000302600021200000004640413560005430021046 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_memory.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This module handles errors. **/ /** **/ /** DATES : # Version 0.0 : from : 07 sep 2001 **/ /** to 07 sep 2001 **/ /** # Version 0.1 : from : 14 apr 2001 **/ /** to 24 mar 2003 **/ /** # Version 2.0 : from : 01 jul 2008 **/ /** to : 01 jul 2008 **/ /** # Version 5.1 : from : 22 nov 2008 **/ /** to : 27 jun 2010 **/ /** # Version 6.0 : from : 11 jun 2012 **/ /** to : 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_MEMORY #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" #define COMMON_MEMORY_SZSP (MAX ((sizeof (size_t)), (sizeof (double)))) /* Space for size, properly aligned */ #ifdef COMMON_MEMORY_CHECK #ifndef COMMON_MEMORY_TRACE #define COMMON_MEMORY_TRACE #endif /* COMMON_MEMORY_TRACE */ #define MEMORY_CHECK_BLOCKS 10000 #define MEMORY_CHECK_BORDER 16384 /* Huge sentinel block */ #define COMMON_MEMORY_SKEW MEMORY_CHECK_BORDER #define COMMON_MEMORY_OVHD (MEMORY_CHECK_BORDER * 2) static int memorycheckenabled = COMMON_MEMORY_CHECK; /* Set to 1 by default */ static char memorycheckmagktab[16] = { 0123, 0156, 0371, 0012, 0345, 0272, 0301, 0234, 0167, 0010, 0127, 0254, 0321, 0012, 0276, 0143 }; static void * memorycheckbloktab[MEMORY_CHECK_BLOCKS] = { NULL }; /* Pre-allocated static array, less easily wrecked by out-of-bound heap memory writes */ static int memorycheckbloknbr = 0; static void * memorycheckwtchval = NULL; /* Block address to watch */ #endif /* COMMON_MEMORY_CHECK */ /*********************************/ /* */ /* The memory checking routines. */ /* */ /*********************************/ #ifdef COMMON_MEMORY_CHECK static void memCheckBlock ( void * blokptr) { char * zoneptr; char * zoneend; int zoneidx; size_t bloksiz; bloksiz = *((size_t *) blokptr); for (zoneptr = (char *) blokptr + COMMON_MEMORY_SZSP, /* Check "before" sentinel */ zoneend = (char *) blokptr + MEMORY_CHECK_BORDER, zoneidx = 0; zoneptr < zoneend; ) { if (*zoneptr ++ != memorycheckmagktab[zoneidx ++ % 16]) { errorPrintW ("memoryCheck: error before block at %p, real size %ld", (char *) blokptr + MEMORY_CHECK_BORDER, (long) bloksiz); break; } } for (zoneptr = (char *) blokptr + MEMORY_CHECK_BORDER + bloksiz, /* Check "after" sentinel */ zoneend = (char *) zoneptr + MEMORY_CHECK_BORDER, zoneidx = 0; zoneptr < zoneend; ) { if (*zoneptr ++ != memorycheckmagktab[zoneidx ++ % 16]) { errorPrintW ("memoryCheck: error after block at %p, real size %ld", (char *) blokptr + MEMORY_CHECK_BORDER, (long) bloksiz); break; } } } int memCheck () { int bloknum; for (bloknum = 0; bloknum < memorycheckbloknbr; bloknum ++) memCheckBlock (memorycheckbloktab[bloknum]); } int memCheckToggle () { return (memorycheckenabled = (memorycheckenabled != 0) ? 0 : 1); } int memCheckExists ( void * blokptr) { void * bloktmp; int bloknum; bloktmp = (void *) ((char *) blokptr - MEMORY_CHECK_BORDER); for (bloknum = 0; bloknum < memorycheckbloknbr; bloknum ++) { if (memorycheckbloktab[bloknum] == bloktmp) return (1); } return (0); } size_t memCheckSize ( void * blokptr) { void * bloktmp; int bloknum; bloktmp = (void *) ((char *) blokptr - MEMORY_CHECK_BORDER); for (bloknum = 0; bloknum < memorycheckbloknbr; bloknum ++) { if (memorycheckbloktab[bloknum] == bloktmp) return (*((size_t *) bloktmp)); } return (-1); } void memCheckWatch ( void * blokptr) { memorycheckwtchval = blokptr; /* Record user location */ } static void memCheckEnlist ( void * blokptr, size_t bloksiz) { char * zoneptr; char * zoneend; int zoneidx; if (memorycheckbloknbr >= MEMORY_CHECK_BLOCKS) { errorPrintW ("memoryEnlist: too many blocks"); return; } if (memorycheckenabled != 0) memCheck (); memorycheckbloktab[memorycheckbloknbr ++] = blokptr; /* Insert block into checked block array */ for (zoneptr = (char *) blokptr + COMMON_MEMORY_SZSP, /* Set "before" sentinel */ zoneend = (char *) blokptr + MEMORY_CHECK_BORDER, zoneidx = 0; zoneptr < zoneend; ) *zoneptr ++ = memorycheckmagktab[zoneidx ++ % 16]; if (memorycheckwtchval == (void *) zoneend) /* Test user location */ errorPrintW ("memoryEnlist: watched block address %p enlisted", zoneend); for (zoneptr = (char *) blokptr + MEMORY_CHECK_BORDER + bloksiz, /* Set "after" sentinel */ zoneend = (char *) zoneptr + MEMORY_CHECK_BORDER, zoneidx = 0; zoneptr < zoneend; ) *zoneptr ++ = memorycheckmagktab[zoneidx ++ % 16]; } static void memCheckDelist ( void * blokptr) { int bloknum; if (memorycheckenabled != 0) memCheck (); for (bloknum = 0; bloknum < memorycheckbloknbr; bloknum ++) { if (memorycheckbloktab[bloknum] == blokptr) break; } if (bloknum == memorycheckbloknbr) { errorPrintW ("memoryDelist: block not found"); return; } if (memorycheckwtchval == (void *) ((char *) blokptr + MEMORY_CHECK_BORDER)) errorPrintW ("memoryDelist: watched block address %p unlisted", blokptr); memorycheckbloktab[bloknum] = memorycheckbloktab[-- memorycheckbloknbr]; /* Remove block from checked block array */ } #endif /* COMMON_MEMORY_CHECK */ /*********************************/ /* */ /* The memory handling routines. */ /* */ /*********************************/ /* This routine keeps track of the amount of ** allocated memory, and keeps track of the ** maximum allowed. */ #ifdef COMMON_MEMORY_TRACE #ifndef COMMON_MEMORY_SKEW #define COMMON_MEMORY_SKEW COMMON_MEMORY_SZSP /* Increase block size just to store size */ #define COMMON_MEMORY_OVHD COMMON_MEMORY_SKEW #endif /* COMMON_MEMORY_SKEW */ static intptr_t memorysiz = 0; /*+ Number of allocated bytes +*/ static intptr_t memorymax = 0; /*+ Maximum amount of allocated data +*/ #ifdef COMMON_PTHREAD_MEMORY static int muteflag = 1; /*+ Flag for mutex initialization +*/ static pthread_mutex_t mutelocdat; /*+ Local mutex for updates +*/ #endif /* COMMON_PTHREAD_MEMORY */ /* This routine allocates and records ** a memory block. ** It returns: ** - NULL : if block could not be allocated. ** - !NULL : location of the allocated block. */ void * memAllocRecord ( size_t newsiz) { byte * newptr; #ifdef COMMON_PTHREAD_MEMORY if (muteflag != 0) { /* Unsafe code with respect to race conditions but should work as first allocs are sequential; portable TSL needed */ muteflag = 0; pthread_mutex_init (&mutelocdat, NULL); /* Initialize local mutex */ } pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ if ((newptr = malloc (newsiz + COMMON_MEMORY_OVHD)) != NULL) { /* Non-zero size will guarantee non-NULL pointers */ memorysiz += (intptr_t) newsiz; if (memorymax < memorysiz) memorymax = memorysiz; #ifdef COMMON_MEMORY_CHECK memCheckEnlist (newptr, newsiz); #endif /* COMMON_MEMORY_CHECK */ *((size_t *) newptr) = newsiz; /* Record size for freeing */ newptr += COMMON_MEMORY_SKEW; /* Skew pointer while enforcing alignment */ } #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ return ((void *) newptr); /* Return skewed pointer or NULL */ } /* This routine reallocates and records ** a memory block. ** It returns: ** - NULL : if block could not be reallocated. ** - !NULL : location of the reallocated block. */ void * memReallocRecord ( void * oldptr, size_t newsiz) { byte * tmpptr; byte * newptr; size_t oldsiz; tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW; oldsiz = *((size_t *) tmpptr); #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ #ifdef COMMON_MEMORY_CHECK memCheckDelist (tmpptr); #endif /* COMMON_MEMORY_CHECK */ if ((newptr = realloc (tmpptr, newsiz + COMMON_MEMORY_OVHD)) != NULL) { memorysiz -= (intptr_t) oldsiz; /* Subtract then add unsigned values to avoid handling signs */ memorysiz += (intptr_t) newsiz; if (memorymax < memorysiz) memorymax = memorysiz; #ifdef COMMON_MEMORY_CHECK memCheckEnlist (newptr, newsiz); #endif /* COMMON_MEMORY_CHECK */ *((size_t *) newptr) = newsiz; /* Record size for freeing */ newptr += COMMON_MEMORY_SKEW; /* Skew pointer while enforcing alignment */ } #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ return ((void *) newptr); /* Return skewed pointer or NULL */ } /* This routine frees a recorded ** memory block. ** It returns: ** - void : in all cases. */ void memFreeRecord ( void * oldptr) { byte * tmpptr; size_t oldsiz; tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW; oldsiz = *((size_t *) tmpptr); #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ #ifdef COMMON_MEMORY_CHECK memCheckDelist (tmpptr); #endif /* COMMON_MEMORY_CHECK */ free (tmpptr); memorysiz -= oldsiz; #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ } /* This routine returns the memory ** footprint of Scotch at the date ** of the call. ** It returns: ** - x : current memory footprint. */ IDX memCur () { intptr_t memotmp; #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ memotmp = memorysiz; #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ return ((IDX) memotmp); } /* This routine returns the maximum memory ** footprint of Scotch at the date of the ** call. ** It returns: ** - x : current maximum memory footprint. */ IDX memMax () { intptr_t memotmp; #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ memotmp = memorymax; #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ return ((IDX) memotmp); } #else /* COMMON_MEMORY_TRACE */ /* Dummy routines if not compiled with flag ** COMMON_MEMORY_TRACE set. */ IDX memCur () { return ((IDX) -1); } IDX memMax () { return ((IDX) -1); } #endif /* COMMON_MEMORY_TRACE */ /* This routine allocates a set of arrays in ** a single memAlloc()'ed array, the address ** of which is placed in the first argument. ** Arrays to be allocated are described as ** a duplet of ..., &ptr, size, ..., ** terminated by a NULL pointer. ** It returns: ** - !NULL : pointer to block, all arrays allocated. ** - NULL : no array allocated. */ void * memAllocGroup ( void ** memptr, /*+ Pointer to first argument to allocate +*/ ...) { va_list memlist; /* Argument list of the call */ byte ** memloc; /* Pointer to pointer of current argument */ size_t memoff; /* Offset value of argument */ byte * blkptr; /* Pointer to memory chunk */ memoff = 0; memloc = (byte **) memptr; /* Point to first memory argument */ va_start (memlist, memptr); /* Start argument parsing */ while (memloc != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); memoff += va_arg (memlist, size_t); memloc = va_arg (memlist, byte **); } va_end (memlist); if ((blkptr = (byte *) memAlloc (memoff)) == NULL) { /* If cannot allocate */ *memptr = NULL; /* Set first pointer to NULL */ return (NULL); } memoff = 0; memloc = (byte **) memptr; /* Point to first memory argument */ va_start (memlist, memptr); /* Restart argument parsing */ while (memloc != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); /* Pad */ *memloc = blkptr + memoff; /* Set argument address */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ memloc = va_arg (memlist, void *); /* Get next argument pointer */ } va_end (memlist); return ((void *) blkptr); } /* This routine reallocates a set of arrays in ** a single memRealloc()'ed array passed as ** first argument, and the address of which ** is placed in the second argument. ** Arrays to be allocated are described as ** a duplet of ..., &ptr, size, ..., ** terminated by a NULL pointer. ** It returns: ** - !NULL : pointer to block, all arrays allocated. ** - NULL : no array allocated. */ void * memReallocGroup ( void * oldptr, /*+ Pointer to block to reallocate +*/ ...) { va_list memlist; /* Argument list of the call */ byte ** memloc; /* Pointer to pointer of current argument */ size_t memoff; /* Offset value of argument */ byte * blkptr; /* Pointer to memory chunk */ memoff = 0; va_start (memlist, oldptr); /* Start argument parsing */ while ((memloc = va_arg (memlist, byte **)) != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); /* Pad */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } va_end (memlist); if ((blkptr = (byte *) memRealloc (oldptr, memoff)) == NULL) /* If cannot allocate block */ return (NULL); memoff = 0; va_start (memlist, oldptr); /* Restart argument parsing */ while ((memloc = va_arg (memlist, byte **)) != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); /* Pad */ *memloc = blkptr + memoff; /* Set argument address */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } va_end (memlist); return ((void *) blkptr); } /* This routine computes the offsets of arrays ** of given sizes and types with respect to a ** given base address passed as first argument. ** Arrays the offsets of which are to be computed ** are described as a duplet of ..., &ptr, size, ..., ** terminated by a NULL pointer. ** It returns: ** - !NULL : in all cases, pointer to the end of ** the memory area. */ void * memOffset ( void * memptr, /*+ Pointer to base address of memory area +*/ ...) { va_list memlist; /* Argument list of the call */ byte ** memloc; /* Pointer to pointer of current argument */ size_t memoff; /* Offset value of argument */ memoff = 0; va_start (memlist, memptr); /* Start argument parsing */ while ((memloc = va_arg (memlist, byte **)) != NULL) { /* As long as not NULL pointer */ memoff = (memoff + (sizeof (double) - 1)) & (~ (sizeof (double) - 1)); *memloc = (byte *) memptr + memoff; /* Set argument address */ memoff += va_arg (memlist, size_t); /* Accumulate padded sizes */ } va_end (memlist); return ((void *) ((byte *) memptr + memoff)); } scotch_6.0.9/src/libscotch/library_graph_map.c0000644000302600021200000006552013560013261021651 0ustar pelegrinpelegrin/* Copyright 2004,2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module is the API for the mapping **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 19 aug 1998 **/ /** to 20 aug 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 13 jan 2004 **/ /** to 13 nov 2005 **/ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "arch_dist.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_map_st.h" #include "library_mapping.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the mapping routines. */ /* */ /************************************/ /*+ This routine initializes an API opaque *** mapping with respect to the given source *** graph and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapInit ( const SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping structure to initialize +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture used to map +*/ SCOTCH_Num * const parttab) /*+ Mapping array +*/ { LibMapping * restrict lmapptr; lmapptr = (LibMapping *) mappptr; lmapptr->flagval = LIBMAPPINGNONE; /* No options set */ lmapptr->grafptr = (Graph *) grafptr; lmapptr->archptr = (Arch *) archptr; if (parttab == NULL) { if ((lmapptr->parttab = (Gnum *) memAlloc (lmapptr->grafptr->vertnbr * sizeof (Gnum))) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphMapInit) ": out of memory"); return (1); } memSet (lmapptr->parttab, 0, lmapptr->grafptr->vertnbr * sizeof (Anum)); /* All vertices mapped to first domain */ lmapptr->flagval |= LIBMAPPINGFREEPART; /* The user did not provided the partition array, so we will free it */ } else lmapptr->parttab = (Gnum *) parttab; return (0); } /*+ This routine frees an API mapping. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphMapExit ( const SCOTCH_Graph * const grafptr, SCOTCH_Mapping * const mappptr) { LibMapping * restrict lmapptr; lmapptr = (LibMapping *) mappptr; if (((lmapptr->flagval & LIBMAPPINGFREEPART) != 0) && /* If parttab must be freed */ (lmapptr->parttab != NULL)) /* And if exists */ memFree (lmapptr->parttab); /* Free it */ memSet (lmapptr, 0, sizeof (LibMapping)); } /*+ This routine computes a mapping or a *** remapping, with or without fixed *** vertices, of the API mapping *** structures given in input, with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ static int graphMapCompute2 ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Mapping * const mapoptr, /*+ Old mapping +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ const SCOTCH_Num vfixnbr, /*+ Number of fixed vertices in part array +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { Kgraph mapgrafdat; /* Effective mapping graph */ const Strat * mapstraptr; /* Pointer to mapping strategy */ LibMapping * restrict lmapptr; Anum * pfixtax; Gnum baseval; Anum * parotax; /* Old partition array */ Gnum crloval; /* Coefficient load for regular edges */ Gnum cmloval; /* Coefficient load for migration edges */ const Gnum * vmlotax; /* Vertex migration cost array */ int o; lmapptr = (LibMapping *) mappptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if ((Graph *) grafptr != lmapptr->grafptr) { errorPrint ("graphMapCompute2: output mapping does not correspond to input graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ #ifdef SCOTCH_DEBUG_LIBRARY2 if (graphCheck ((Graph *) grafptr) != 0) { /* Vertex loads can be 0 if we have fixed vertices */ errorPrint ("graphMapCompute2: invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ if (*((Strat **) straptr) == NULL) { /* Set default mapping strategy if necessary */ ArchDom domnorg; archDomFrst (lmapptr->archptr, &domnorg); SCOTCH_stratGraphMapBuild (straptr, SCOTCH_STRATDEFAULT, archDomSize (lmapptr->archptr, &domnorg), 0.01); } mapstraptr = *((Strat **) straptr); #ifdef SCOTCH_DEBUG_LIBRARY1 if (mapstraptr->tabl != &kgraphmapststratab) { errorPrint ("graphMapCompute2: not a graph mapping strategy"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ baseval = lmapptr->grafptr->baseval; if (vfixnbr != 0) { /* We have fixed vertices */ #ifdef SCOTCH_DEBUG_LIBRARY1 ArchDom domndat; Gnum vertnbr; Gnum vertnum; if (lmapptr->parttab == NULL) { /* We must have fixed vertex information */ errorPrint ("graphMapCompute2: missing output mapping part array"); return (1); } for (vertnum = 0, vertnbr = lmapptr->grafptr->vertnbr; vertnum < vertnbr; vertnum ++) { if ((lmapptr->parttab[vertnum] >= 0) && (archDomTerm (lmapptr->archptr, &domndat, lmapptr->parttab[vertnum]) != 0)) { errorPrint ("graphMapCompute2: invalid fixed partition"); return (1); } } #endif /* SCOTCH_DEBUG_LIBRARY1 */ pfixtax = lmapptr->parttab - baseval; } else pfixtax = NULL; if (mapoptr != NULL) { /* We are doing a repartitioning */ const LibMapping * restrict lmaoptr; Gnum numeval; Gnum denoval; #ifdef SCOTCH_DEBUG_LIBRARY1 ArchDom domndat; Gnum vertnbr; Gnum vertnum; #endif /* SCOTCH_DEBUG_LIBRARY1 */ lmaoptr = (LibMapping *) mapoptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (lmapptr->grafptr != lmaoptr->grafptr) { errorPrint ("graphMapCompute2: output and old mappings must correspond to same graph"); return (1); } if (lmapptr->archptr != lmaoptr->archptr) { errorPrint ("graphMapCompute2: output and old mappings must correspond to same architecture"); return (1); } for (vertnum = 0, vertnbr = lmapptr->grafptr->vertnbr; vertnum < vertnbr; vertnum ++) { if ((lmaoptr->parttab[vertnum] >= 0) && (archDomTerm (lmapptr->archptr, &domndat, lmaoptr->parttab[vertnum]) != 0)) { errorPrint ("graphMapCompute2: invalid old partition"); return (1); } } #endif /* SCOTCH_DEBUG_LIBRARY1 */ parotax = lmaoptr->parttab - baseval; vmlotax = (vmlotab != NULL) ? vmlotab - baseval : NULL; numeval = (INT) ((emraval * 100.0) + 0.5); denoval = intGcd (numeval, 100); cmloval = numeval / denoval; crloval = 100 / denoval; } else { parotax = NULL; vmlotax = NULL; cmloval = crloval = 1; } intRandInit (); /* Check that random number generator is initialized */ if (kgraphInit (&mapgrafdat, (Graph *) grafptr, lmapptr->archptr, NULL, vfixnbr, pfixtax, parotax, crloval, cmloval, vmlotax) != 0) return (1); o = 0; if (mapgrafdat.vfixnbr < mapgrafdat.s.vertnbr) { /* Perform mapping if not all fixed vertices */ o = kgraphMapSt (&mapgrafdat, mapstraptr); mapTerm (&mapgrafdat.m, lmapptr->parttab - baseval); /* Propagate mapping result to part array */ } kgraphExit (&mapgrafdat); return (o); } /*+ This routine computes a mapping *** of the API mapping structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapCompute ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { return (graphMapCompute2 (grafptr, mappptr, NULL, 1, NULL, 0, straptr)); } /*+ This routine computes a mapping *** with fixed vertices of the API *** mapping structure with respect *** to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapFixedCompute ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { return (SCOTCH_graphRemapFixedCompute (grafptr, mappptr, NULL, 1, NULL, straptr)); } /*+ This routine computes a remapping *** of the API mapping structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemapCompute ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Mapping * const mapoptr, /*+ Old mapping +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { return (graphMapCompute2 (grafptr, mappptr, mapoptr, emraval, vmlotab, 0, straptr)); } /*+ This routine computes a remapping *** with fixed vertices of the API *** mapping structure with respect *** to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemapFixedCompute ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Mapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Mapping * const mapoptr, /*+ Old mapping +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr) /*+ Mapping strategy +*/ { Gnum vfixnbr; Gnum vertnbr; Gnum vertnum; const Anum * restrict const pfixtab = ((LibMapping *) mappptr)->parttab; for (vertnum = 0, vertnbr = ((Graph *) grafptr)->vertnbr, vfixnbr = 0; /* Compute number of fixed vertices */ vertnum < vertnbr; vertnum ++) { if (pfixtab[vertnum] != ~0) vfixnbr ++; } return (graphMapCompute2 (grafptr, mappptr, mapoptr, emraval, vmlotab, vfixnbr, straptr)); } /*+ This routine computes a mapping of the *** given graph structure onto the given *** target architecture with respect to the *** given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMap ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Mapping mappdat; int o; SCOTCH_graphMapInit (grafptr, &mappdat, archptr, parttab); o = SCOTCH_graphMapCompute (grafptr, &mappdat, straptr); SCOTCH_graphMapExit (grafptr, &mappdat); return (o); } /*+ This routine computes a mapping of the *** given graph structure onto the given *** target architecture with respect to the *** given strategy and the fixed vertices in *** maptab. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapFixed ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Mapping mappdat; int o; SCOTCH_graphMapInit (grafptr, &mappdat, archptr, parttab); o = SCOTCH_graphMapFixedCompute (grafptr, &mappdat, straptr); SCOTCH_graphMapExit (grafptr, &mappdat); return (o); } /*+ This routine computes a remapping of the *** given graph structure onto the given *** target architecture with respect to the *** given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemap ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture +*/ SCOTCH_Num * const parotab, /*+ Old partition array +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Mapping mappdat; SCOTCH_Mapping mapodat; int o; SCOTCH_graphMapInit (grafptr, &mappdat, archptr, parttab); SCOTCH_graphMapInit (grafptr, &mapodat, archptr, parotab); o = SCOTCH_graphRemapCompute (grafptr, &mappdat, &mapodat, emraval, vmlotab, straptr); SCOTCH_graphMapExit (grafptr, &mapodat); SCOTCH_graphMapExit (grafptr, &mappdat); return (o); } /*+ This routine computes a remapping of the *** given graph structure onto the given *** target architecture with respect to the *** given strategy and the fixed vertices in *** maptab. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemapFixed ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture +*/ SCOTCH_Num * const parotab, /*+ Old partition array +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Mapping mappdat; SCOTCH_Mapping mapodat; int o; SCOTCH_graphMapInit (grafptr, &mappdat, archptr, parttab); SCOTCH_graphMapInit (grafptr, &mapodat, archptr, parotab); o = SCOTCH_graphRemapFixedCompute (grafptr, &mappdat, &mapodat, emraval, vmlotab, straptr); SCOTCH_graphMapExit (grafptr, &mapodat); SCOTCH_graphMapExit (grafptr, &mappdat); return (o); } /*+ This routine computes a partition of *** the given graph structure with respect *** to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphPart ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Arch archdat; int o; SCOTCH_archInit (&archdat); SCOTCH_archCmplt (&archdat, partnbr); o = SCOTCH_graphMap (grafptr, &archdat, straptr, parttab); SCOTCH_archExit (&archdat); return (o); } /*+ This routine computes a partition of *** the given graph structure with respect *** to the given strategy and the fixed *** vertices in maptab. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphPartFixed ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Arch archdat; int o; SCOTCH_archInit (&archdat); SCOTCH_archCmplt (&archdat, partnbr); o = SCOTCH_graphMapFixed (grafptr, &archdat, straptr, parttab); SCOTCH_archExit (&archdat); return (o); } /*+ This routine computes a repartitionning *** of the given graph structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRepart ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Num * const parotab, /*+ Old partition array +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * const vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Arch archdat; int o; SCOTCH_archInit (&archdat); SCOTCH_archCmplt (&archdat, partnbr); o = SCOTCH_graphRemap (grafptr, &archdat, parotab, emraval, vmlotab, straptr, parttab); SCOTCH_archExit (&archdat); return (o); } /*+ This routine computes a repartitionning *** of the given graph structure with *** respect to the given strategy and the *** fixed vertices in maptab. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRepartFixed ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Num * const parotab, /*+ Old partition array +*/ const double emraval, /*+ Edge migration ratio +*/ const SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ SCOTCH_Strat * const straptr, /*+ Mapping strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { SCOTCH_Arch archdat; int o; SCOTCH_archInit (&archdat); SCOTCH_archCmplt (&archdat, partnbr); o = SCOTCH_graphRemapFixed (grafptr, &archdat, parotab, emraval, vmlotab, straptr, parttab); SCOTCH_archExit (&archdat); return (o); } /*+ This routine parses the given *** mapping strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratGraphMap ( SCOTCH_Strat * const straptr, const char * const string) { if (*((Strat **) straptr) != NULL) stratExit (*((Strat **) straptr)); if ((*((Strat **) straptr) = stratInit (&kgraphmapststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratGraphMap) ": error in mapping strategy"); return (1); } return (0); } /*+ This routine provides predefined *** mapping strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratGraphMapBuild ( SCOTCH_Strat * const straptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num partnbr, /*+ Number of expected parts/size +*/ const double kbalval) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[64]; char kbaltab[64]; char kmovtab[64]; char mvrttab[64]; const char * difkptr; const char * difsptr; const char * exasptr; const char * exaxptr; sprintf (bbaltab, "%lf", kbalval); sprintf (kbaltab, "%lf", kbalval); sprintf (kmovtab, GNUMSTRING, (Gnum) (((flagval & SCOTCH_STRATQUALITY) != 0) ? 200 : 80)); sprintf (mvrttab, GNUMSTRING, (Gnum) (MAX ((20 * partnbr), 10000))); strcpy (bufftab, ((flagval & SCOTCH_STRATRECURSIVE) != 0) ? "" /* Use only the recursive bipartitioning framework */ : "m{vert=,low=,asc=b{bnd=f{bal=,move=},org=f{bal=,move=}}}"); stringSubst (bufftab, "", "r{job=t,map=t,poli=S,bal=,sep=}"); stringSubst (bufftab, "", ((flagval & SCOTCH_STRATQUALITY) != 0) ? "||" : "|"); stringSubst (bufftab, "", "m{vert=120,low=h{pass=10}f{bal=,move=120},asc=b{bnd=f{bal=,move=120},org=f{bal=,move=120}}}"); if ((flagval & SCOTCH_STRATSAFETY) != 0) difsptr = ""; else difsptr = "d{pass=40}"; difkptr = "d{pass=40}"; if ((flagval & SCOTCH_STRATBALANCE) != 0) { exasptr = "f{bal=}"; exaxptr = "x{bal=}f{bal=,move=}"; } else { exasptr = ""; exaxptr = ""; } stringSubst (bufftab, "", mvrttab); stringSubst (bufftab, "", exaxptr); stringSubst (bufftab, "", exasptr); stringSubst (bufftab, "", difsptr); stringSubst (bufftab, "", difkptr); stringSubst (bufftab, "", kmovtab); stringSubst (bufftab, "", kbaltab); stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratGraphMap (straptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratGraphMapBuild) ": error in sequential mapping strategy"); return (1); } return (0); } /*+ This routine provides predefined *** clustering strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratGraphClusterBuild ( SCOTCH_Strat * const straptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num pwgtval, /*+ Threshold part weight +*/ const double densval, /*+ Threshold density value +*/ const double bbalval) /*+ Maximum imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[32]; char pwgttab[32]; char denstab[32]; char * difsptr; char * exasptr; sprintf (bbaltab, "%lf", bbalval); sprintf (denstab, "%lf", densval); sprintf (pwgttab, GNUMSTRING, pwgtval); strcpy (bufftab, "r{job=u,map=t,poli=L,sep=/((load>)&!(edge>vert**(vert-1)))?(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}});}"); stringSubst (bufftab, "", ((flagval & SCOTCH_STRATSPEED) != 0) ? "" : "m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}}|"); if ((flagval & SCOTCH_STRATBALANCE) != 0) exasptr = "f{bal=0}"; else exasptr = ""; if ((flagval & SCOTCH_STRATSAFETY) != 0) difsptr = ""; else difsptr = "(d{pass=40}|)"; stringSubst (bufftab, "", exasptr); stringSubst (bufftab, "", difsptr); stringSubst (bufftab, "", bbaltab); stringSubst (bufftab, "", denstab); stringSubst (bufftab, "", pwgttab); if (SCOTCH_stratGraphMap (straptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratGraphClusterBuild) ": error in sequential mapping strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/bdgraph_bipart_ex.h0000644000302600021200000000764613560005346021652 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_ex.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the parallel load imbalance **/ /** minimization bipartitioning routine **/ /** for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 14 jul 2010 **/ /** to : 14 aug 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BdgraphBipartExParam_ { INT sbbtnbr; /*+ Number of sub-bits in the distributed gain structure +*/ double deltval; /*+ Maximum weight imbalance ratio +*/ } BdgraphBipartExParam; /* Sort structure for local vertices. First element used for intSort2asc1. */ typedef struct BdgraphBipartExSort_ { Gnum veloval; /* Load per process; TRICK: FIRST */ Gnum prioval; /* Priority value, not to sort by process rank */ Gnum procnum; /* Process number; TRICK: (Gnum) for sorting */ } BdgraphBipartExSort; /* Sort structure for individual moves. */ typedef struct BdgraphBipartExMove_ { Gnum veloval; /* Load per process; TRICK: FIRST */ Gnum vertnum; /* Vertex number */ } BdgraphBipartExMove; /* ** The function prototypes. */ int bdgraphBipartEx (Bdgraph * restrict const, const BdgraphBipartExParam * restrict const); scotch_6.0.9/src/libscotch/dgraph_fold_dup.h0000644000302600021200000000751413560005435021320 0ustar pelegrinpelegrin/* Copyright 2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold_dup.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the distributed graph duplicate **/ /** folding routine. **/ /** **/ /** DATES : # Version 5.0 : from : 13 aug 2006 **/ /** to 13 aug 2006 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 28 sep 2014 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the data passed to the subgraph building threads. +*/ typedef struct DgraphFoldDupData_ { const Dgraph * orggrafptr; /*+ Pointer to original graph +*/ Dgraph * fldgrafptr; /*+ Pointer to folded graph +*/ MPI_Comm fldproccomm; /*+ Communicator to be used in folded graph +*/ int partval; /*+ Part of processes to which to fold +*/ void * orgdataptr; /*+ Data associated to vertices, e.g. coarmulttab +*/ void * flddataptr; /*+ Data associated to vertices, e.g. coarmulttab +*/ MPI_Datatype datatype; /*+ MPI type of associated information +*/ } DgraphFoldDupData; /* ** The function prototypes. */ #ifdef DGRAPH_FOLD_DUP #ifdef SCOTCH_PTHREAD static void * dgraphFoldDup2 (void *); #endif /* SCOTCH_PTHREAD */ #endif /* DGRAPH_FOLD_DUP */ scotch_6.0.9/src/libscotch/vmesh.h0000644000302600021200000001213413465315041017314 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for mesh vertex separation **/ /** routines. **/ /** **/ /** DATES : # Version 4.0 : from : 10 sep 2002 **/ /** to : 10 sep 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Active graph structure. +*/ typedef struct Vmesh_ { Mesh m; /*+ Source mesh +*/ GraphPart * parttax; /*+ Based part array: 0,1: part; 2: separator +*/ Gnum ecmpsize[2]; /*+ Number of elements in each part (not in separator) +*/ Gnum ncmpload[3]; /*+ Loads of nodes in both parts and separator +*/ Gnum ncmploaddlt; /*+ Node load difference between both parts +*/ Gnum ncmpsize[2]; /*+ Number of nodes in parts (separator is fronnbr) +*/ Gnum fronnbr; /*+ Number of frontier nodes; TRICK: ncmpsize[2] +*/ Gnum * frontab; /*+ Array of frontier node numbers +*/ Gnum levlnum; /*+ Nested dissection or coarsening level +*/ } Vmesh; /*+ The graph separator storing structure. +*/ typedef struct VmeshStore_ { Gnum ecmpsize[2]; /*+ Number of elements in each part +*/ Gnum ncmpload[3]; /*+ Loads of nodes in both parts and separator +*/ Gnum ncmploaddlt; /*+ Node load difference between both parts +*/ Gnum ncmpsize[2]; /*+ Number of nodes in parts (separator is fronnbr) +*/ Gnum fronnbr; /*+ Number of frontier nodes; TRICK: ncmpsize[2] +*/ byte * datatab; /*+ Variable-sized data array +*/ } VmeshStore; /* ** The function prototypes. */ void vmeshExit (Vmesh * const); void vmeshZero (Vmesh * const); int vmeshCheck (const Vmesh * const); int vmeshStoreInit (const Vmesh * const, VmeshStore * const); void vmeshStoreExit (VmeshStore * const); void vmeshStoreSave (const Vmesh * const , VmeshStore * const); void vmeshStoreUpdt (Vmesh * const, const VmeshStore * const); scotch_6.0.9/src/libscotch/dgraph_fold_comm.h0000644000302600021200000000760413560005435021463 0ustar pelegrinpelegrin/* Copyright 2007,2010,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold_comm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed source graph **/ /** building routines. **/ /** **/ /** # Version 5.0 : from : 23 may 2006 **/ /** to 19 aug 2006 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to 03 jan 2011 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Starting maximum number of communications per process +*/ #define DGRAPHFOLDCOMMNBR 4 /* Starting maximum number of communications per process */ /* ** The type and structure definitions. */ /*+ Process communication type. Receivers that have more local vertices than needed can also be senders, hence the " = 1" to allow for or-ing both values. +*/ typedef enum DgraphFoldCommType_ { DGRAPHFOLDCOMMRECV = 1, /*+ Process is a receiver +*/ DGRAPHFOLDCOMMSEND /*+ Process is a sender +*/ } DgraphFoldCommType; /* Sort structure for processors. */ typedef struct DgraphFoldCommData_ { Gnum vertnbr; /* Number of vertices; TRICK: FIRST */ Gnum procnum; /* Processor index (Gnum for sorting) */ } DgraphFoldCommData; /* ** The function prototypes. */ int dgraphFoldComm (const Dgraph * restrict const, const int, int * restrict const, int * restrict const, DgraphFoldCommData * restrict * restrict const, Gnum * restrict * restrict const, Gnum * restrict const, int * restrict const, Gnum * restrict * restrict const, Gnum * restrict * restrict const); scotch_6.0.9/src/libscotch/kgraph.h0000644000302600021200000002332513470115365017455 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the data declarations **/ /** for the k-way graph mapping structures **/ /** and routines. **/ /** **/ /** DATES : # Version 3.2 : from : 12 sep 1997 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 12 mar 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 16 feb 2005 **/ /** # Version 5.0 : from : 17 jun 2008 **/ /** to 17 jun 2008 **/ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /** NOTES : # The comploadavg and comploaddlt **/ /** should always be allocated together, **/ /** with comploaddlt just after **/ /** comploadavg. **/ /** **/ /** # To date, the only k-way graph mapping **/ /** method is recursive bipartitioning, **/ /** which does not use the comploadavg, **/ /** comploaddlt and frontab parameters. **/ /** Consequently, although allocated, **/ /** these parameters are not set by this **/ /** method. However, when coupled with **/ /** the kdgraphMapSq() parallel static **/ /** mapping routine, these parameters **/ /** have to be computed. This is why the **/ /** kgraphCost() routine is called within **/ /** kdgraphMapSq(). When other sequential **/ /** mapping routines are proposed, it may **/ /** be more interesting to move **/ /** kgraphCost() to kgraphMapRb(). **/ /** **/ /** # When (pfixtax != NULL), we are **/ /** handling fixed vertices. **/ /** **/ /** # When (r.m.parttax != NULL), we are **/ /** doing repartitioning. **/ /** **/ /************************************************************/ #define KGRAPH_H /* ** The defines. */ /*+ Graph option flags. +*/ #define KGRAPHFREEFRON (GRAPHBITSNOTUSED) /*+ Free frontier array +*/ #define KGRAPHFREECOMP (GRAPHBITSNOTUSED << 1) /*+ Free computational loads array +*/ #define KGRAPHFREEPFIX (GRAPHBITSNOTUSED << 2) /*+ Free fixed vertex array +*/ #define KGRAPHFREEVMLO (GRAPHBITSNOTUSED << 3) /*+ Free vertex migration cost array +*/ #define KGRAPHHASANCHORS (GRAPHBITSNOTUSED << 4) /*+ The graph is a band graph +*/ /* ** The type and structure definitions. */ /*+ The graph structure. +*/ typedef struct Kgraph_ { Graph s; /*+ Current graph +*/ Arch a; /*+ Current architecture +*/ Mapping m; /*+ Current mapping of graph vertices +*/ struct { /*+ Remapping structure +*/ Mapping m; /*+ Old mapping +*/ Gnum crloval; /*+ Coefficient load for regular edges +*/ Gnum cmloval; /*+ Coefficient load for migration edges; may be zero +*/ const Gnum * vmlotax; /*+ Vertex migration cost array +*/ } r; Gnum vfixnbr; /*+ Number of fixed vertices +*/ const Anum * pfixtax; /*+ Fixed terminal part array +*/ Gnum fronnbr; /*+ Number of frontier vertices +*/ Gnum * frontab; /*+ Array of frontier vertex numbers +*/ Gnum * comploadavg; /*+ Array of target average loads +*/ Gnum * comploaddlt; /*+ Array of target imbalances +*/ double comploadrat; /*+ Ideal load balance per weight unit +*/ double kbalval; /*+ Last k-way imbalance ratio +*/ Gnum commload; /*+ Communication load +*/ INT levlnum; /*+ Graph coarsening level +*/ } Kgraph; /*+ The save graph structure. +*/ typedef struct KgraphStore_ { Gnum partnbr; /*+ Number of parts +*/ int mflaval; /*+ Mapping properties +*/ Anum * parttab; /*+ Mapping array [vertnbr] +*/ ArchDom * domntab; /*+ Array of domains [termmax] +*/ Anum domnnbr; /*+ Current number of domains +*/ Gnum fronnbr; /*+ Number of frontier vertices +*/ Gnum * frontab; /*+ Array of frontier vertex numbers +*/ Gnum * comploadavg; /*+ Array of target average loads +*/ Gnum * comploaddlt; /*+ Array of target imbalances +*/ double kbalval; /*+ Last k-way imbalance ratio +*/ Gnum commload; /*+ Communication load +*/ } KgraphStore; /* ** The function prototypes. */ int kgraphInit (Kgraph * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, const Gnum, const Gnum * restrict const); void kgraphExit (Kgraph * const); void kgraphFrst (Kgraph * const); int kgraphCheck (const Kgraph * const); void kgraphCost (Kgraph * const); void kgraphFron (Kgraph * const); int kgraphBand (Kgraph * restrict const, const Gnum, Kgraph * restrict const, Gnum * const, Gnum * restrict * restrict const); int kgraphStoreInit (const Kgraph * const, KgraphStore * const); void kgraphStoreExit (KgraphStore * const); void kgraphStoreSave (const Kgraph * const, KgraphStore * const); void kgraphStoreUpdt (Kgraph * const, const KgraphStore * const); scotch_6.0.9/src/libscotch/library_dgraph_band.c0000644000302600021200000003773313560013261022151 0ustar pelegrinpelegrin/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_band.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted band graph building routine of **/ /** the libScotch library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 oct 2011 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_halo.h" #include "ptscotch.h" #define DGRAPHBANDGROWNAME dgraphBand2 #include "dgraph_band_grow.h" /************************************/ /* */ /* These routines are the C API for */ /* the mapping routines. */ /* */ /************************************/ /*+ This routine builds a distributed *** band graph, without anchors, from the *** given distributed graph. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphBand ( SCOTCH_Dgraph * const orggrafptr, const SCOTCH_Num fronlocnbr, SCOTCH_Num * const fronloctab, const SCOTCH_Num distval, SCOTCH_Dgraph * const bndgrafptr) { Gnum bandvertlocnnd; /* End of local band vertex array */ Gnum bandvertlocnbr; /* Number of local band vertices */ Gnum bandvertlvlnum; /* Index of first band vertex belonging to last level */ Gnum * restrict bandvertloctax; Gnum bandvertlocadj; /* Ajust value for local-to-global band vertex indices */ Gnum bandvertlocnum; Gnum * restrict bandveloloctax; Gnum bandvelolocnbr; Gnum bandvelolocsum; Gnum * restrict bandedgeloctax; Gnum bandedgelocnum; Gnum bandedgelocsiz; /* Number of local edges in band graph */ Gnum * restrict bandedloloctax; Gnum bandedlolocsiz; /* Size of local band edge load array */ Gnum bandvnumgstsiz; Gnum * restrict bandvnumgsttax; /* Indices of selected band vertices in band graph */ Gnum * restrict bandvlblloctax; Gnum banddegrlocmax; Gnum veloval; Gnum vertlocadj; const Gnum * restrict edgegsttax; SCOTCH_Num * fronloctax; int cheklocval; int procngbnum; Dgraph * restrict const grafptr = (Dgraph *) orggrafptr; Dgraph * restrict const bandgrafptr = (Dgraph *) bndgrafptr; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const vlblloctax = grafptr->vlblloctax; const Gnum * restrict const veloloctax = grafptr->veloloctax; const Gnum * restrict const edloloctax = grafptr->edloloctax; #ifdef SCOTCH_DEBUG_LIBRARY1 int o; MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) bndgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot compute ghost edge array"); return (1); } cheklocval = 0; bandvnumgstsiz = MAX ((grafptr->vertgstnbr * sizeof (Gnum)), (grafptr->procglbnbr * sizeof (int))); /* TRICK: re-use array for further error collective communications */ if ((bandvnumgsttax = memAlloc (bandvnumgstsiz)) == NULL) errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (1)"); /* Error will be propagated by dgraphBand2*() */ else { memSet (bandvnumgsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); /* Reset part array */ bandvnumgsttax -= grafptr->baseval; } if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphBand2Ptop : dgraphBand2Coll) (grafptr, fronlocnbr, fronloctab, distval, bandvnumgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz) != 0) { if (bandvnumgsttax != NULL) memFree (bandvnumgsttax + grafptr->baseval); return (1); } bandvelolocnbr = (veloloctax != NULL) ? bandvertlocnbr : 0; bandedlolocsiz = (edloloctax != NULL) ? bandedgelocsiz : 0; bandgrafptr->flagval |= (DGRAPHFREEALL ^ DGRAPHFREECOMM) | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* Arrays created by the routine itself */ bandgrafptr->baseval = grafptr->baseval; cheklocval = 0; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &bandgrafptr->procdsptab, (size_t) ((grafptr->procglbnbr + 1) * sizeof (Gnum)), &bandgrafptr->proccnttab, (size_t) (grafptr->procglbnbr * sizeof (Gnum)), &bandgrafptr->procngbtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procrcvtab, (size_t) (grafptr->procglbnbr * sizeof (int)), &bandgrafptr->procsndtab, (size_t) (grafptr->procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (2)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &bandgrafptr->vertloctax, (size_t) ((bandvertlocnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &bandvlblloctax, (size_t) (bandvertlocnbr * sizeof (Gnum)), &bandveloloctax, (size_t) (bandvelolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (3)"); cheklocval = 1; } else if (bandgrafptr->vertloctax -= bandgrafptr->baseval, bandvlblloctax -= bandgrafptr->baseval, bandveloloctax = (veloloctax != NULL) ? (bandveloloctax - bandgrafptr->baseval) : NULL, (memAllocGroup ((void **) (void *) &bandedgeloctax, (size_t) (bandedgelocsiz * sizeof (Gnum)), &bandedloloctax, (size_t) (bandedlolocsiz * sizeof (Gnum)), NULL) == NULL)) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": out of memory (4)"); cheklocval = 1; } else { bandedgeloctax -= bandgrafptr->baseval; bandedloloctax = (edloloctax != NULL) ? (bandedloloctax - bandgrafptr->baseval) : NULL; } if (cheklocval != 0) { /* In case of memory error */ bandgrafptr->procdsptab[0] = -1; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, /* Send received data to dummy array */ bandvnumgsttax + bandgrafptr->baseval, 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communication error (2)"); return (1); } dgraphExit (bandgrafptr); memFree (bandvnumgsttax + bandgrafptr->baseval); return (1); } else { bandgrafptr->procdsptab[0] = bandvertlocnbr; if (MPI_Allgather (&bandgrafptr->procdsptab[0], 1, GNUM_MPI, &bandgrafptr->procdsptab[1], 1, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": communication error (3)"); return (1); } } bandgrafptr->procdsptab[0] = bandgrafptr->baseval; /* Build vertex-to-process array */ #ifdef SCOTCH_DEBUG_DGRAPH2 memSet (bandvlblloctax + bandgrafptr->baseval, ~0, (bandvertlocnbr * sizeof (Gnum))); #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (procngbnum = 1; procngbnum <= grafptr->procglbnbr; procngbnum ++) { /* Process potential error flags from other processes */ if (bandgrafptr->procdsptab[procngbnum] < 0) { /* If error notified by another process */ dgraphExit (bandgrafptr); memFree (bandvnumgsttax + bandgrafptr->baseval); return (1); } bandgrafptr->procdsptab[procngbnum] += bandgrafptr->procdsptab[procngbnum - 1]; bandgrafptr->proccnttab[procngbnum - 1] = bandgrafptr->procdsptab[procngbnum] - bandgrafptr->procdsptab[procngbnum - 1]; } fronloctax = fronloctab - bandgrafptr->baseval; for (vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval, bandvertlocnum = bandgrafptr->baseval, bandvertlocnnd = bandvertlocnbr + bandgrafptr->baseval, bandvertlocadj = bandgrafptr->procdsptab[grafptr->proclocnum] - bandgrafptr->baseval; bandvertlocnum < bandvertlocnnd; bandvertlocnum ++) { /* Turn all kept graph vertices into band graph vertices */ Gnum vertlocnum; vertlocnum = fronloctax[bandvertlocnum]; bandvlblloctax[bandvertlocnum] = (vlblloctax == NULL) ? (vertlocnum + vertlocadj) : vlblloctax[vertlocnum]; bandvnumgsttax[vertlocnum] += bandvertlocadj; /* Turn local indices in band graph into global indices */ } if (dgraphHaloSync (grafptr, (byte *) (bandvnumgsttax + bandgrafptr->baseval), GNUM_MPI) != 0) { /* Share global indexing of halo vertices */ errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot perform halo exchange"); return (1); } edgegsttax = grafptr->edgegsttax; veloval = 1; bandvertloctax = bandgrafptr->vertloctax; bandvelolocsum = 0; banddegrlocmax = 0; for (bandvertlocnum = bandedgelocnum = bandgrafptr->baseval; /* Build global vertex array of band graph */ bandvertlocnum < bandvertlvlnum; bandvertlocnum ++) { /* For all vertices save for the last level */ Gnum vertlocnum; Gnum edgelocnum; Gnum degrval; vertlocnum = bandvlblloctax[bandvertlocnum] - vertlocadj; bandvertloctax[bandvertlocnum] = bandedgelocnum; if (veloloctax != NULL) { veloval = veloloctax[vertlocnum]; bandvelolocsum += veloval; bandveloloctax[bandvertlocnum] = veloval; } degrval = vendloctax[vertlocnum] - vertloctax[vertlocnum]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; for (edgelocnum = vertloctax[vertlocnum]; /* For all original edges */ edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (bandvnumgsttax[edgegsttax[edgelocnum]] == ~0) { /* All ends should belong to the band graph too */ errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ bandedgeloctax[bandedgelocnum ++] = bandvnumgsttax[edgegsttax[edgelocnum]]; } } for ( ; bandvertlocnum < bandvertlocnnd; bandvertlocnum ++) { /* For all vertices that belong to the last level */ Gnum vertlocnum; Gnum edgelocnum; Gnum degrval; vertlocnum = bandvlblloctax[bandvertlocnum] - vertlocadj; bandvertloctax[bandvertlocnum] = bandedgelocnum; if (veloloctax != NULL) { veloval = veloloctax[vertlocnum]; bandvelolocsum += veloval; bandveloloctax[bandvertlocnum] = veloval; } for (edgelocnum = vertloctax[vertlocnum]; /* For all original edges */ edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum bandvertlocend; bandvertlocend = bandvnumgsttax[edgegsttax[edgelocnum]]; if (bandvertlocend != ~0) { /* If end vertex belongs to band graph */ if (bandedloloctax != NULL) /* If graph has edge weights, copy load */ bandedloloctax[bandedgelocnum] = edloloctax[edgelocnum]; bandedgeloctax[bandedgelocnum ++] = bandvertlocend; } } degrval = bandedgelocnum - bandvertloctax[bandvertlocnum]; if (banddegrlocmax < degrval) banddegrlocmax = degrval; } bandvertloctax[bandvertlocnnd] = bandedgelocnum; /* Set end of vertex array */ memFree (bandvnumgsttax + bandgrafptr->baseval); /* Free useless space */ if (bandedloloctax != NULL) { /* If graph has edge weights */ for (bandvertlocnum = bandgrafptr->baseval; /* For all vertices that do not belong to the last level */ bandvertlocnum < bandvertlvlnum; bandvertlocnum ++) { Gnum vertlocnum; Gnum bandedgelocnum; vertlocnum = bandvlblloctax[bandvertlocnum] - vertlocadj; bandedgelocnum = bandvertloctax[bandvertlocnum]; memCpy (bandedloloctax + bandedgelocnum, /* Copy edge load array */ &edloloctax[vertloctax[vertlocnum]], (bandvertloctax[bandvertlocnum + 1] - bandedgelocnum) * sizeof (Gnum)); } /* Vertices of last level have been processed before */ } bandgrafptr->procvrttab = bandgrafptr->procdsptab; /* Graph does not have holes */ bandgrafptr->vertlocnbr = bandvertlocnbr; bandgrafptr->vertlocnnd = bandvertlocnbr + bandgrafptr->baseval; bandgrafptr->vendloctax = bandvertloctax + 1; /* Band graph is compact */ bandgrafptr->veloloctax = bandveloloctax; bandgrafptr->velolocsum = bandvelolocsum; bandgrafptr->vlblloctax = bandvlblloctax; bandgrafptr->edgeloctax = bandedgeloctax; bandgrafptr->edloloctax = bandedloloctax; bandgrafptr->edgelocnbr = bandedgelocnum - bandgrafptr->baseval; bandgrafptr->edgelocsiz = bandedgelocsiz; bandgrafptr->degrglbmax = banddegrlocmax; /* Local maximum degree will be turned into global maximum degree */ if (dgraphBuild4 (bandgrafptr) != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": cannot build band graph"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (bandgrafptr) != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphBand) ": internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/library_graph_check.c0000644000302600021200000000650513560013261022147 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 18 aug 1998 **/ /** to 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 22 apr 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine checks the consistency *** of the given graph. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphCheck ( const SCOTCH_Graph * const grafptr) { return (graphCheck ((const Graph * const) grafptr)); } scotch_6.0.9/src/libscotch/wgraph_part_fm.h0000644000302600021200000001422513465315041021175 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_fm.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the improved Fiduccia-Mattheyses **/ /** refinement routine for the vertex over- **/ /** lapped graph partitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Gain table subbits. +*/ #define WGRAPHSEPAFMGAINBITS 4 /*+ Prime number for hashing vertex numbers. +*/ #define WGRAPHSEPAFMHASHPRIME 17 /*+ Prime number for hashing +*/ /*+ +*/ #define WGRAPHSEPAFMMAXPARTLOAD ((Gnum) (((Gunum) ~0) >> 1)) /*+ Gain table vertex status. +*/ #define WGRAPHSEPAFMSTATEFREE ((GainLink *) 0) /*+ Vertex is free or separator-chained +*/ #define WGRAPHSEPAFMSTATESUCH ((GainLink *) 1) /*+ Separator vertex is used and chained +*/ #define WGRAPHSEPAFMSTATEUSED ((GainLink *) 2) /*+ Vertex already swapped once +*/ #define WGRAPHSEPAFMSTATELINK ((GainLink *) 3) /*+ Currently in gain table if higher +*/ /*+ Save type identifier +*/ #define WGRAPHSEPAFMSAVEMOVE 0 #define WGRAPHSEPAFMSAVELINKDEL 1 #define WGRAPHSEPAFMSAVELINKADD 2 #define WGRAPHSEPAFMSAVELOAD 3 /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct WgraphPartFmParam_ { INT movenbr; /*+ Maximum number of uneffective moves that can be done +*/ INT passnbr; /*+ Number of passes to be performed (-1 : infinite) +*/ double deltrat; /*+ Maximum weight imbalance ratio +*/ } WgraphPartFmParam; typedef struct WgraphPartFmPartList_ { struct WgraphPartFmPartList_ * prev; Gnum gain; struct WgraphPartFmPartList_ * loadprev; Gnum loadgain; Gnum sizegain; Gnum isinloadlist; } WgraphPartFmPartList; typedef struct WgraphPartFmVertex_ { Gnum partval; /*+ Vertex part TRICK: same type as vertload +*/ Gnum partval2; /*+ Vertex part into which the current vertex moves +*/ Gnum vertnum; /*+ Number of vertex in hash table +*/ struct WgraphPartFmVertex_ * prev; struct WgraphPartFmLink_ * linklist; Gnum linked; struct WgraphPartFmVertex_ * lockprev; } WgraphPartFmVertex; /*+ The move recording structure. +*/ typedef struct WgraphPartFmLink_ { GainLink gainlink; /*+ Gain link: FIRST +*/ Gnum partval; Gnum hashnum; Gnum gain; struct WgraphPartFmLink_ * next; Gnum minloadpartval; Gnum minloadpartload; } WgraphPartFmLink; typedef struct WgraphPartFmSave_ { Gnum type; union { struct { Gnum hashnum; /*+ Number of hash slot for saved vertex +*/ Gnum partval; /*+ Saved vertex part value +*/ } movedata; struct { Gnum linknum; Gnum gain; } linkdata; struct { Gnum loaddiff; Gnum sizediff; Gnum partval; } loaddata; } u; } WgraphPartFmSave; /* ** The function prototypes. */ #ifdef WGRAPH_PART_FM static int wgraphPartFmResize (); #endif /* WGRAPH_PART_FM */ int wgraphPartFm (Wgraph * const, const WgraphPartFmParam * const); scotch_6.0.9/src/libscotch/kdgraph_map_rb_map.c0000644000302600021200000000625413560013072021763 0ustar pelegrinpelegrin/* Copyright 2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb_map.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm **/ /** in parallel for non-complete graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 24 jun 2008 **/ /** to 24 jun 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH_MAP_RB_MAP #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "dgraph.h" #include "dmapping.h" #include "kdgraph.h" #include "kdgraph_map_rb.h" #include "kdgraph_map_rb_map.h" #include "kdgraph_map_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int kdgraphMapRbMap ( Kdgraph * restrict const grafptr, Kdmapping * restrict const mappptr, const KdgraphMapRbParam * restrict const paraptr) { errorPrint ("kdgraphMapRbMap: not implemented yet"); return (1); } scotch_6.0.9/src/libscotch/library_mesh_io_scot.c0000644000302600021200000000771213560013261022365 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_io_scot.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Scotch **/ /** geometry and mesh handling routines o f **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to 19 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "mesh.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Scotch mesh and geometry */ /* handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque mesh *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_meshGeomLoadScot ( SCOTCH_Mesh * restrict const meshptr, SCOTCH_Geom * restrict const geomptr, FILE * const filesrcptr, FILE * const filegeoptr, const char * const dataptr) /* No use */ { return (meshGeomLoadScot ((Mesh *) meshptr, (Geom *) geomptr, filesrcptr, filegeoptr, NULL)); } /*+ This routine saves the contents of the given *** opaque mesh structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_meshGeomSaveScot ( const SCOTCH_Mesh * restrict const meshptr, const SCOTCH_Geom * restrict const geomptr, FILE * const filesrcptr, FILE * const filegeoptr, const char * const dataptr) /* No use */ { return (meshGeomSaveScot ((Mesh *) meshptr, (Geom *) geomptr, filesrcptr, filegeoptr, NULL)); } scotch_6.0.9/src/libscotch/dgraph_build_grid3d.h0000644000302600021200000001237413560005435022057 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_build_grid3d.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data **/ /** declarations for the distributed 3D **/ /** grid graph building routine. **/ /** **/ /** DATES : # Version 5.1 : from : 06 jun 2010 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ The multinode table element, which contains pairs of based indices of collapsed vertices. Both values are equal for uncollapsed vertices. +*/ typedef struct DgraphBuildGrid3DData_ { Gnum baseval; Gnum dimxval; Gnum dimyval; Gnum dimzval; Gnum * edgeloctax; Gnum * edloloctax; Gnum (* funcvrtptr) (const struct DgraphBuildGrid3DData_ * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); struct { /* Pre-computed data for 26-neighbor torus */ Gnum ngbxmin; Gnum ngbxmax; Gnum ngbymin; Gnum ngbymax; Gnum ngbzmin; Gnum ngbzmax; } t26; } DgraphBuildGrid3DData; /* ** The function prototypes. */ #ifdef DGRAPH_BUILD_GRID3D static Gnum dgraphBuildGrid3Dvertex26M (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex26T (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex6M (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); static Gnum dgraphBuildGrid3Dvertex6T (const DgraphBuildGrid3DData * restrict const, const Gnum, Gnum, const Gnum, const Gnum, const Gnum); #endif /* DGRAPH_BUILD_GRID3D */ /* ** The macro definitions. */ #define DGRAPHBUILDGRID3DNGB(d,v,e,x,y,z) { \ Gnum edgeloctmp; \ Gnum vertglbend; \ edgeloctmp = (e); \ vertglbend = ((z) * (d)->dimyval + (y)) * (d)->dimxval + (x) + (d)->baseval; \ (d)->edgeloctax[edgeloctmp] = vertglbend; \ if ((d)->edloloctax != NULL) \ (d)->edloloctax[edgeloctmp] = ((vertglbend + (v)) % 16) + 1; \ } scotch_6.0.9/src/libscotch/library_graph_diam.c0000644000302600021200000000630213560013261021777 0ustar pelegrinpelegrin/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_diam.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 26 jan 2017 **/ /** to 22 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /* This routine returns the vertex-traversal ** pseudo-diameter of the given graph. ** It returns: * - [0; GNUMMAX[ : graph pseudo-diameter. ** - GNUMMAX : disconnected graph. ** - < 0 : on error. */ SCOTCH_Num SCOTCH_graphDiamPV ( const SCOTCH_Graph * const grafptr) { return ((SCOTCH_Num) graphDiamPV ((Graph * const) grafptr)); } scotch_6.0.9/src/libscotch/dgraph_halo_fill.c0000644000302600021200000000740113560005435021443 0ustar pelegrinpelegrin/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_halo_fill.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** This module contains the halo update **/ /** routines. **/ /** **/ /** # Version 5.0 : from : 31 dec 2006 **/ /** to 05 feb 2008 **/ /** # Version 5.1 : from : 28 aug 2008 **/ /** to 29 aug 2010 **/ /** **/ /************************************************************/ /* This function fills the send array used by ** all of the halo routines. ** It returns: ** - void : in all cases. */ static void DGRAPHHALOFILLNAME ( const Dgraph * restrict const grafptr, const void * restrict const attrgsttab, /* Attribute array to diffuse */ const int attrglbsiz, /* Type extent of attribute */ byte ** restrict const attrdsptab) /* Temporary address displacement array */ { byte * restrict attrgstptr; const int * restrict procsidptr; const int * restrict procsidnnd; for (procsidptr = grafptr->procsidtab, procsidnnd = procsidptr + grafptr->procsidnbr, attrgstptr = (byte *) attrgsttab; procsidptr < procsidnnd; procsidptr ++) { int procsidval; procsidval = *procsidptr; if (procsidval < 0) attrgstptr -= ((Gnum) procsidval) * DGRAPHHALOFILLSIZE; else { byte * attrdspptr; attrdspptr = attrdsptab[procsidval]; attrdsptab[procsidval] = attrdspptr + DGRAPHHALOFILLSIZE; /* Skip to next position in send buffer */ DGRAPHHALOFILLCOPY (attrdspptr, attrgstptr, DGRAPHHALOFILLSIZE); } } } scotch_6.0.9/src/libscotch/library_dgraph_build_grid3d_f.c0000644000302600021200000000736513560013261024103 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_build_grid3d_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 16 feb 2007 **/ /** to 16 feb 2007 **/ /** # Version 5.1 : from : 06 jun 2010 **/ /** to 06 jun 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHBUILDGRID3D, dgraphbuildgrid3d, ( \ SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Num * const baseval, \ const SCOTCH_Num * const dimxval, \ const SCOTCH_Num * const dimyval, \ const SCOTCH_Num * const dimzval, \ const SCOTCH_Num * const incrval, \ const int * const flagval, \ int * const revaptr), \ (grafptr, baseval, dimxval, dimyval, dimzval, incrval, flagval, revaptr)) { *revaptr = SCOTCH_dgraphBuildGrid3D (grafptr, *baseval, *dimxval, *dimyval, *dimzval, *incrval, *flagval); } scotch_6.0.9/src/libscotch/graph_base.c0000644000302600021200000001324113303015264020253 0ustar pelegrinpelegrin/* Copyright 2004,2007,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_base.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the graph base **/ /** changing routine. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 3.3 : from : 22 sep 1998 **/ /** to 31 dec 1998 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 22 apr 2004 **/ /** # Version 6.0 : from : 05 aug 2014 **/ /** to 05 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #include "module.h" #include "common.h" #include "graph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine sets the base of the given ** graph to the given base value, and returns ** the old base value. ** It returns: ** - old base value : in all cases. */ Gnum graphBase ( Graph * const grafptr, const Gnum baseval) { Gnum baseold; /* Old base value */ Gnum baseadj; /* Base adjustment */ Gnum vertnum; Gnum edgenum; if (grafptr->baseval == baseval) /* If nothing to do */ return (baseval); baseold = grafptr->baseval; /* Record old base value */ baseadj = baseval - baseold; /* Compute adjustment */ for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { for (edgenum = grafptr->verttax[vertnum]; edgenum < grafptr->vendtax[vertnum]; edgenum ++) grafptr->edgetax[edgenum] += baseadj; grafptr->verttax[vertnum] += baseadj; } if (grafptr->vendtax != grafptr->verttax + 1) { /* If distinct vertex end array */ for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) grafptr->vendtax[vertnum] += baseadj; } else /* If same vertex end array (of size +1) */ grafptr->verttax[grafptr->vertnnd] += baseadj; /* Adjust last entry of verttax */ grafptr->verttax -= baseadj; /* Adjust array accesses */ grafptr->vendtax -= baseadj; grafptr->edgetax -= baseadj; if (grafptr->velotax != NULL) grafptr->velotax -= baseadj; if (grafptr->vnumtax != NULL) grafptr->vnumtax -= baseadj; if (grafptr->vlbltax != NULL) grafptr->vlbltax -= baseadj; if (grafptr->edlotax != NULL) grafptr->edlotax -= baseadj; grafptr->baseval = baseval; /* Set new base value */ grafptr->vertnnd += baseadj; return (baseold); /* Return old base value */ } scotch_6.0.9/src/libscotch/hgraph_check.c0000644000302600021200000001230513470115365020576 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 17 jan 2002 **/ /** to 01 dec 2003 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 19 dec 2006 **/ /** # Version 6.0 : from : 23 may 2018 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine checks the consistency ** of the given halo graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int hgraphCheck ( const Hgraph * restrict const grafptr) { Gnum vertnum; /* Number of current vertex */ Gnum edgenum; /* Number of current edge */ Gnum enlosum; if (graphCheck (&grafptr->s) != 0) { errorPrint ("hgraphCheck: invalid graph structure in halo graph"); return (1); } if ((grafptr->vnohnbr < 0) || (grafptr->vnohnbr > grafptr->s.vertnbr) || (grafptr->vnohnnd != (grafptr->vnohnbr + grafptr->s.baseval)) || (grafptr->vnlosum > grafptr->s.velosum) || (grafptr->enohnbr > grafptr->s.edgenbr) || (grafptr->enlosum < grafptr->enohnbr)) { errorPrint ("hgraphCheck: invalid halo graph parameters"); return (1); } enlosum = (grafptr->s.edlotax == NULL) ? grafptr->enohnbr : 0; for (vertnum = grafptr->s.baseval; vertnum < grafptr->vnohnnd; vertnum ++) { /* For all non-halo vertices */ if ((grafptr->vnhdtax[vertnum] < grafptr->s.verttax[vertnum]) || (grafptr->vnhdtax[vertnum] > grafptr->s.vendtax[vertnum])) { errorPrint ("hgraphCheck: invalid non-halo end vertex array"); return (1); } if (grafptr->s.edlotax != NULL) { Gnum edgenum; for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->vnhdtax[vertnum]; edgenum ++) enlosum += grafptr->s.edlotax[edgenum]; } } if (grafptr->enlosum != enlosum) { errorPrint ("hgraphCheck: invalid non-halo edge load sum"); return (1); } for ( ; vertnum < grafptr->s.vertnnd; vertnum ++) { /* For all halo vertices */ for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) { if (grafptr->s.edgetax[edgenum] >= grafptr->vnohnnd) { /* If two halo vertices connected together */ errorPrint ("hgraphCheck: halo vertices should not be connected together"); return (1); } } } return (0); } scotch_6.0.9/src/libscotch/library_dgraph_induce_f.c0000644000302600021200000000666413560013261023020 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_induce_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 30 aug 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHINDUCEPART, dgraphinducepart, ( \ SCOTCH_Dgraph * const orggrafptr, \ SCOTCH_Num * const orgpartloctab, \ SCOTCH_Num * const indpartval, \ SCOTCH_Num * const indvertlocnbr, \ SCOTCH_Dgraph * const indgrafptr, \ int * const revaptr), \ (orggrafptr, orgpartloctab, indpartval, indvertlocnbr, indgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphInducePart (orggrafptr, orgpartloctab, *indpartval, *indvertlocnbr, indgrafptr); } scotch_6.0.9/src/libscotch/dmapping.h0000644000302600021200000001205113465315041017767 0ustar pelegrinpelegrin/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dmapping.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the parallel mapping handling routines. **/ /** **/ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ #define DMAPPING_H /* ** The type definitions. */ /*+ This structure defines a mapping fragment. +*/ typedef struct DmappingFrag_ { struct DmappingFrag_ * nextptr; /*+ Pointer to next fragment +*/ Gnum vertnbr; /*+ Number of local vertices in mapping +*/ Gnum * vnumtab; /*+ Vertex index array +*/ Anum * parttab; /*+ Mapping array [vertlocnbr] +*/ Anum domnnbr; /*+ Local number of domains +*/ ArchDom * domntab; /*+ Array of domains [domnnbr] +*/ } DmappingFrag; /*+ This structure defines an (eventually partial) mapping of a source graph to a target architecture. +*/ typedef struct Dmapping_ { struct DmappingFrag_ * fragptr; /*+ Pointer to first mapping fragment +*/ Gnum fragnbr; /*+ Number of local fragments +*/ Gnum vertlocmax; /*+ Size of biggest local fragment +*/ Gnum vertlocnbr; /*+ Number of local vertices in mapping +*/ Arch archdat; /*+ Architecture data +*/ #ifdef SCOTCH_PTHREAD pthread_mutex_t mutelocdat; /*+ Local mutex for updates +*/ #endif /* SCOTCH_PTHREAD */ } Dmapping; /*+ The sort structure, used to sort mapped vertices. Field vertnum is first and field termnum is a Gnum and not an Anum because of intSort2asc1. +*/ typedef struct DmappingTermSort_ { Gnum vertnum; /*+ Vertex number: FIRST +*/ Gnum termnum; /*+ Direct permutation index +*/ } DmappingTermSort; /* ** The function prototypes. */ int dmapInit (Dmapping * restrict const, const Arch * restrict const); void dmapExit (Dmapping * const); void dmapAdd (Dmapping * restrict const, DmappingFrag * restrict const); int dmapSave (const Dmapping * restrict const, const Dgraph * restrict const, FILE * restrict const); int dmapTerm (const Dmapping * restrict const, const Dgraph * restrict const, Gnum * restrict const); scotch_6.0.9/src/libscotch/graph_clone.c0000644000302600021200000001675013470115365020461 0ustar pelegrinpelegrin/* Copyright 2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_clone.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** cloning function. **/ /** **/ /** DATES : # Version 6.0 : from : 22 feb 2016 **/ /** to 22 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #define GRAPH_CLONE #include "module.h" #include "common.h" #include "graph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine builds a clone of the given ** graph. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphClone ( const Graph * restrict const orggrafptr, Graph * restrict const clngrafptr) { Gnum * datatab; Gnum baseval; Gnum vertnbr; Gnum vertnnd; Gnum datasiz; Gnum edgesiz; baseval = orggrafptr->baseval; vertnbr = orggrafptr->vertnbr; datasiz = vertnbr; /* Account for verttab */ datasiz += (orggrafptr->vendtax != (orggrafptr->verttax + 1)) ? vertnbr : 1; /* Account for vendtab or compact array */ if (orggrafptr->velotax != NULL) datasiz += vertnbr; /* Account for velotab */ if (orggrafptr->vnumtax != NULL) datasiz += vertnbr; /* Account for vnumtab */ if (orggrafptr->vlbltax != NULL) datasiz += vertnbr; /* Account for vlbltab */ if ((datatab = memAlloc (datasiz * sizeof (Gnum))) == NULL) { errorPrint ("graphClone: out of memory (1)"); return (1); } clngrafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; /* Cloned graph has its own arrays */ clngrafptr->baseval = baseval; clngrafptr->vertnbr = vertnbr; clngrafptr->vertnnd = vertnnd = vertnbr + baseval; clngrafptr->verttax = datatab - baseval; /* Manage verttab */ memCpy (datatab, orggrafptr->verttax + baseval, vertnbr * sizeof (Gnum)); datatab += vertnbr; if (orggrafptr->vendtax == (orggrafptr->verttax + 1)) { /* If compact array */ clngrafptr->vendtax = clngrafptr->verttax + 1; /* Set compact array */ edgesiz = orggrafptr->verttax[vertnnd]; /* Get end of compact array */ clngrafptr->verttax[vertnnd] = edgesiz; /* Copy end of compact array */ datatab ++; /* Space for last index */ } else { const Gnum * restrict orgvendptr; Gnum * restrict clnvendptr; Gnum vertnum; clngrafptr->vendtax = datatab - baseval; /* Set vendtab */ clnvendptr = datatab; orgvendptr = orggrafptr->vendtax + baseval; for (vertnum = 0, edgesiz = 0; vertnum < vertnbr; vertnum ++) { Gnum vendval; vendval = *orgvendptr ++; /* Copy vertex index */ *clnvendptr ++ = vendval; if (vendval > edgesiz) /* Record highest end index */ edgesiz = vendval; } datatab = clnvendptr; /* Resume after end of cloned array */ } edgesiz -= baseval; /* Edge size is given by highest index */ if (orggrafptr->velotax != NULL) { /* Account for velotab */ memCpy (datatab, orggrafptr->velotax + baseval, vertnbr * sizeof (Gnum)); clngrafptr->velotax = datatab - baseval; datatab += vertnbr; } else clngrafptr->velotax = NULL; clngrafptr->velosum = orggrafptr->velosum; if (orggrafptr->vnumtax != NULL) { /* Account for vnumtab */ memCpy (datatab, orggrafptr->vnumtax + baseval, vertnbr * sizeof (Gnum)); clngrafptr->vnumtax = datatab - baseval; datatab += vertnbr; } else clngrafptr->vnumtax = NULL; if (orggrafptr->vlbltax != NULL) { /* Account for vlbltab */ memCpy (datatab, orggrafptr->vlbltax + baseval, vertnbr * sizeof (Gnum)); clngrafptr->vlbltax = datatab - baseval; } else clngrafptr->vlbltax = NULL; datasiz = edgesiz; /* Account for edgetab */ if (orggrafptr->edlotax != NULL) datasiz += edgesiz; /* Account for edlotab */ if ((datatab = memAlloc (datasiz * sizeof (Gnum))) == NULL) { errorPrint ("graphClone: out of memory (2)"); memFree (clngrafptr->verttax + baseval); /* Free group leader */ return (1); } clngrafptr->edgenbr = orggrafptr->edgenbr; clngrafptr->edgetax = datatab - baseval; /* Manage edgetab */ memCpy (datatab, orggrafptr->edgetax + baseval, edgesiz * sizeof (Gnum)); if (orggrafptr->edlotax != NULL) { /* Manage edlotab */ datatab += edgesiz; clngrafptr->edlotax = datatab - baseval; memCpy (datatab, orggrafptr->edlotax + baseval, edgesiz * sizeof (Gnum)); } else clngrafptr->edlotax = NULL; clngrafptr->edlosum = orggrafptr->edlosum; clngrafptr->degrmax = orggrafptr->degrmax; clngrafptr->procptr = orggrafptr->procptr; #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (clngrafptr) != 0) { /* Check graph consistency */ errorPrint ("graphClone: inconsistent graph data"); graphExit (clngrafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/module.h0000644000302600021200000023461713560013500017462 0ustar pelegrinpelegrin/* Copyright 2004,2007-2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : module.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This is the global configuration file **/ /** for the whole libSCOTCH library module. **/ /** **/ /** DATES : # Version 3.2 : from : 22 jun 1998 **/ /** to 13 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 03 oct 1998 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 24 nov 2005 **/ /** # Version 5.0 : from : 24 feb 2007 **/ /** to 24 jul 2007 **/ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 20 feb 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ /** to 26 oct 2019 **/ /** **/ /************************************************************/ #define MODULE_H /* ** Version and copyright strings. */ #define SCOTCH_COPYRIGHT_STRING "Copyright 1992-2019 IPB, Universite de Bordeaux, INRIA & CNRS, France" #define SCOTCH_LICENSE_STRING "This software is libre/free software under CeCILL-C -- see the user's manual for more information" #define SCOTCH_VERSION_STRING STRINGIFY (SCOTCH_VERSION) "." STRINGIFY (SCOTCH_RELEASE) "." STRINGIFY (SCOTCH_PATCHLEVEL) /* ** Handling of determinism. */ #ifdef SCOTCH_DETERMINISTIC #ifndef COMMON_RANDOM_FIXED_SEED #define COMMON_RANDOM_FIXED_SEED #endif /* COMMON_RANDOM_FIXED_SEED */ #endif /* SCOTCH_DETERMINISTIC */ /* ** Handling of parallelism. */ #ifdef SCOTCH_PTSCOTCH #define COMMON_MPI #endif /* SCOTCH_PTSCOTCH */ /* ** Thread management. */ /*+ Old versions of Scotch used COMMON_PTHREAD as an alias for COMMON_PTHREAD_FILE. Maintain that semantics. +*/ #ifdef COMMON_PTHREAD #ifndef COMMON_PTHREAD_FILE #define COMMON_PTHREAD_FILE #endif /* COMMON_PTHREAD_FILE */ #endif /* COMMON_PTHREAD */ /*+ Enable the new semantics of COMMON_PTHREAD_FILE. +*/ #ifdef COMMON_PTHREAD_FILE #ifndef COMMON_PTHREAD #define COMMON_PTHREAD #endif /* COMMON_PTHREAD */ #ifndef COMMON_PTHREAD_MEMORY #define COMMON_PTHREAD_MEMORY #endif /* COMMON_PTHREAD_MEMORY */ #endif /* COMMON_PTHREAD_FILE */ /*+ Enable thread management from SCOTCH_PTHREAD. +*/ #ifdef SCOTCH_PTHREAD #ifndef COMMON_PTHREAD #define COMMON_PTHREAD #endif /* COMMON_PTHREAD */ #ifndef COMMON_PTHREAD_MEMORY #define COMMON_PTHREAD_MEMORY #endif /* COMMON_PTHREAD_MEMORY */ #endif /* SCOTCH_PTHREAD */ /*+ Handle number of threads. +*/ #ifdef SCOTCH_PTHREAD #ifndef SCOTCH_PTHREAD_NUMBER #define SCOTCH_PTHREAD_NUMBER 1 #endif /* SCOTCH_PTHREAD_NUMBER */ #else /* SCOTCH_PTHREAD */ #ifdef SCOTCH_PTHREAD_NUMBER #undef SCOTCH_PTHREAD_NUMBER #endif /* SCOTCH_PTHREAD_NUMBER */ #define SCOTCH_PTHREAD_NUMBER 1 #endif /* SCOTCH_PTHREAD */ /*+ Handle old semantics of thread affinity. */ #ifdef SCOTCH_PTHREAD_AFFINITY_LINUX #ifndef COMMON_PTHREAD_AFFINITY_LINUX #define COMMON_PTHREAD_AFFINITY_LINUX #endif /* COMMON_PTHREAD_AFFINITY_LINUX */ #endif /* SCOTCH_PTHREAD_AFFINITY_LINUX */ /* ** Debug values. */ #ifdef SCOTCH_DEBUG_ALL #ifndef SCOTCH_DEBUG #define SCOTCH_DEBUG #endif /* SCOTCH_DEBUG */ #define COMMON_DEBUG #define SCOTCH_DEBUG_ARCH2 #define SCOTCH_DEBUG_FIBO2 #define SCOTCH_DEBUG_GAIN2 #define SCOTCH_DEBUG_PARSER2 #define SCOTCH_DEBUG_BDGRAPH2 #define SCOTCH_DEBUG_BGRAPH2 #define SCOTCH_DEBUG_DGRAPH2 #define SCOTCH_DEBUG_DMAP2 #define SCOTCH_DEBUG_DORDER2 #define SCOTCH_DEBUG_GEOM2 #define SCOTCH_DEBUG_GRAPH2 #define SCOTCH_DEBUG_HDGRAPH2 #define SCOTCH_DEBUG_HGRAPH2 #define SCOTCH_DEBUG_HMESH2 #define SCOTCH_DEBUG_KDGRAPH2 #define SCOTCH_DEBUG_KDMAP2 #define SCOTCH_DEBUG_KGRAPH2 #define SCOTCH_DEBUG_LIBRARY2 #define SCOTCH_DEBUG_MAP2 #define SCOTCH_DEBUG_MESH2 #define SCOTCH_DEBUG_ORDER2 #define SCOTCH_DEBUG_PARSER2 #define SCOTCH_DEBUG_VDGRAPH2 #define SCOTCH_DEBUG_VGRAPH2 #define SCOTCH_DEBUG_VMESH2 #define SCOTCH_DEBUG_WGRAPH2 #endif /* SCOTCH_DEBUG_ALL */ #ifdef SCOTCH_DEBUG #define SCOTCH_DEBUG_ARCH1 #define SCOTCH_DEBUG_FIBO1 #define SCOTCH_DEBUG_GAIN1 #define SCOTCH_DEBUG_PARSER1 #define SCOTCH_DEBUG_BDGRAPH1 #define SCOTCH_DEBUG_BGRAPH1 #define SCOTCH_DEBUG_DGRAPH1 #define SCOTCH_DEBUG_DMAP1 #define SCOTCH_DEBUG_DORDER1 #define SCOTCH_DEBUG_GEOM1 #define SCOTCH_DEBUG_GRAPH1 #define SCOTCH_DEBUG_HDGRAPH1 #define SCOTCH_DEBUG_HGRAPH1 #define SCOTCH_DEBUG_HMESH1 #define SCOTCH_DEBUG_KDGRAPH1 #define SCOTCH_DEBUG_KDMAP1 #define SCOTCH_DEBUG_KGRAPH1 #define SCOTCH_DEBUG_LIBRARY1 #define SCOTCH_DEBUG_MAP1 #define SCOTCH_DEBUG_MESH1 #define SCOTCH_DEBUG_ORDER1 #define SCOTCH_DEBUG_PARSER1 #define SCOTCH_DEBUG_VDGRAPH1 #define SCOTCH_DEBUG_VGRAPH1 #define SCOTCH_DEBUG_VMESH1 #define SCOTCH_DEBUG_WGRAPH1 #endif /* SCOTCH_DEBUG */ /* ** Function renaming. */ #ifndef SCOTCH_NAME_SUFFIX #define SCOTCH_NAME_SUFFIXC #else /* SCOTCH_NAME_SUFFIX */ #ifndef SCOTCH_NAME_SUFFIXC #define SCOTCH_NAME_SUFFIXC SCOTCH_NAME_SUFFIX #endif /* SCOTCH_NAME_SUFFIXC */ #ifndef SCOTCH_RENAME #define SCOTCH_RENAME #endif /* SCOTCH_RENAME */ #ifndef SCOTCH_RENAME_PUBLIC #define SCOTCH_RENAME_PUBLIC #endif /* SCOTCH_RENAME_PUBLIC */ #endif /* SCOTCH_NAME_SUFFIX */ #ifndef SCOTCH_NAME_SUFFIXFL #define SCOTCH_NAME_SUFFIXFL SCOTCH_NAME_SUFFIXC #define SCOTCH_NAME_SUFFIXFU SCOTCH_NAME_SUFFIXC #else /* SCOTCH_NAME_SUFFIXFL */ #ifndef SCOTCH_RENAME #define SCOTCH_RENAME #endif /* SCOTCH_RENAME */ #ifndef SCOTCH_RENAME_PUBLIC #define SCOTCH_RENAME_PUBLIC #endif /* SCOTCH_RENAME_PUBLIC */ #endif /* SCOTCH_NAME_SUFFIXFL */ #define SCOTCH_NAME_PREFIX_INTERN _SCOTCH #define SCOTCH_NAME_PREFIX_PUBLICFL scotchf #define SCOTCH_NAME_PREFIX_PUBLICFU SCOTCHF #define SCOTCH_NAME_GLUE2(n,s) n##s #define SCOTCH_NAME_GLUE3(p,n,s) p##n##s #define SCOTCH_NAME_MACRO2(n,s) SCOTCH_NAME_GLUE2 (n,s) #define SCOTCH_NAME_MACRO3(p,n,s) SCOTCH_NAME_GLUE3 (p,n,s) #define SCOTCH_NAME_INTERN(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_INTERN,f,SCOTCH_NAME_SUFFIXC) #define SCOTCH_NAME_PUBLIC(f) SCOTCH_NAME_MACRO2 (f,SCOTCH_NAME_SUFFIXC) #define SCOTCH_NAME_PUBLICFL(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_PUBLICFL,f,SCOTCH_NAME_SUFFIXFL) #define SCOTCH_NAME_PUBLICFU(f) SCOTCH_NAME_MACRO3 (SCOTCH_NAME_PREFIX_PUBLICFU,f,SCOTCH_NAME_SUFFIXFU) #define SCOTCH_FORTRAN(nu,nl,pl,pc) FORTRAN (SCOTCH_NAME_PUBLICFU(nu),SCOTCH_NAME_PUBLICFL(nl),pl,pc) #ifdef SCOTCH_RENAME_ALL #define SCOTCH_VERSION SCOTCH_NAME_PUBLIC (SCOTCH_VERSION) #define SCOTCH_RELEASE SCOTCH_NAME_PUBLIC (SCOTCH_RELEASE) #define SCOTCH_PATCHLEVEL SCOTCH_NAME_PUBLIC (SCOTCH_PATCHLEVEL) #define SCOTCH_COARSENNONE SCOTCH_NAME_PUBLIC (SCOTCH_COARSENNONE) #define SCOTCH_COARSENFOLD SCOTCH_NAME_PUBLIC (SCOTCH_COARSENFOLD) #define SCOTCH_COARSENFOLDDUP SCOTCH_NAME_PUBLIC (SCOTCH_COARSENFOLDDUP) #define SCOTCH_COARSENNOMERGE SCOTCH_NAME_PUBLIC (SCOTCH_COARSENNOMERGE) #define SCOTCH_STRATDEFAULT SCOTCH_NAME_PUBLIC (SCOTCH_STRATDEFAULT) #define SCOTCH_STRATQUALITY SCOTCH_NAME_PUBLIC (SCOTCH_STRATQUALITY) #define SCOTCH_STRATSPEED SCOTCH_NAME_PUBLIC (SCOTCH_STRATSPEED) #define SCOTCH_STRATBALANCE SCOTCH_NAME_PUBLIC (SCOTCH_STRATBALANCE) #define SCOTCH_STRATSAFETY SCOTCH_NAME_PUBLIC (SCOTCH_STRATSAFETY) #define SCOTCH_STRATSCALABILITY SCOTCH_NAME_PUBLIC (SCOTCH_STRATSCALABILITY) #define SCOTCH_STRATRECURSIVE SCOTCH_NAME_PUBLIC (SCOTCH_STRATRECURSIVE) #define SCOTCH_STRATREMAP SCOTCH_NAME_PUBLIC (SCOTCH_STRATREMAP) #define SCOTCH_STRATLEVELMAX SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEVELMAX) #define SCOTCH_STRATLEVELMIN SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEVELMIN) #define SCOTCH_STRATLEAFSIMPLE SCOTCH_NAME_PUBLIC (SCOTCH_STRATLEAFSIMPLE) #define SCOTCH_STRATSEPASIMPLE SCOTCH_NAME_PUBLIC (SCOTCH_STRATSEPASIMPLE) #endif /* SCOTCH_RENAME_ALL */ #ifdef SCOTCH_RENAME #define SCOTCH_Arch SCOTCH_NAME_PUBLIC (SCOTCH_Arch) #define SCOTCH_Geom SCOTCH_NAME_PUBLIC (SCOTCH_Geom) #define SCOTCH_Graph SCOTCH_NAME_PUBLIC (SCOTCH_Graph) #define SCOTCH_Idx SCOTCH_NAME_PUBLIC (SCOTCH_Idx) #define SCOTCH_Mesh SCOTCH_NAME_PUBLIC (SCOTCH_Mesh) #define SCOTCH_Mapping SCOTCH_NAME_PUBLIC (SCOTCH_Mapping) #define SCOTCH_Num SCOTCH_NAME_PUBLIC (SCOTCH_Num) #define SCOTCH_Ordering SCOTCH_NAME_PUBLIC (SCOTCH_Ordering) #define SCOTCH_Strat SCOTCH_NAME_PUBLIC (SCOTCH_Strat) #endif /* SCOTCH_RENAME */ #if ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) #define errorPrint SCOTCH_NAME_MACRO2 (SCOTCH_, errorPrint) /* Same name whatever the suffix is since external library */ #define errorPrintW SCOTCH_NAME_MACRO2 (SCOTCH_, errorPrintW) #define errorProg SCOTCH_NAME_MACRO2 (SCOTCH_, errorProg) #define memCur SCOTCH_NAME_MACRO2 (SCOTCH_, memCur) #define memMax SCOTCH_NAME_MACRO2 (SCOTCH_, memMax) #define clockGet SCOTCH_NAME_INTERN (clockGet) #define commonStubDummy SCOTCH_NAME_INTERN (commonStubDummy) #define fileBlockInit SCOTCH_NAME_INTERN (fileBlockInit) #define fileBlockClose SCOTCH_NAME_INTERN (fileBlockClose) #define fileBlockOpen SCOTCH_NAME_INTERN (fileBlockOpen) #define fileBlockOpenDist SCOTCH_NAME_INTERN (fileBlockOpenDist) #define fileCompress SCOTCH_NAME_INTERN (fileCompress) #define fileCompressExit SCOTCH_NAME_INTERN (fileCompressExit) #define fileCompressType SCOTCH_NAME_INTERN (fileCompressType) #define fileDecompress SCOTCH_NAME_INTERN (fileDecompress) #define fileDecompressType SCOTCH_NAME_INTERN (fileDecompressType) #define fileNameDistExpand SCOTCH_NAME_INTERN (fileNameDistExpand) #define intLoad SCOTCH_NAME_INTERN (intLoad) #define intSave SCOTCH_NAME_INTERN (intSave) #define intAscn SCOTCH_NAME_INTERN (intAscn) #define intGcd SCOTCH_NAME_INTERN (intGcd) #define intPerm SCOTCH_NAME_INTERN (intPerm) #define intRandInit SCOTCH_NAME_INTERN (intRandInit) #define intRandLoad SCOTCH_NAME_INTERN (intRandLoad) #define intRandSave SCOTCH_NAME_INTERN (intRandSave) #define intRandProc SCOTCH_NAME_INTERN (intRandProc) #define intRandReset SCOTCH_NAME_INTERN (intRandReset) #define intRandSeed SCOTCH_NAME_INTERN (intRandSeed) #ifndef COMMON_RANDOM_SYSTEM #define intRandVal SCOTCH_NAME_INTERN (intRandVal) #endif /* COMMON_RANDOM_SYSTEM */ #define intSort1asc1 SCOTCH_NAME_INTERN (intSort1asc1) #define intSort2asc1 SCOTCH_NAME_INTERN (intSort2asc1) #define intSort2asc2 SCOTCH_NAME_INTERN (intSort2asc2) #define intSort3asc1 SCOTCH_NAME_INTERN (intSort3asc1) #define intSort3asc2 SCOTCH_NAME_INTERN (intSort3asc2) #define memAllocGroup SCOTCH_NAME_INTERN (memAllocGroup) #define memAllocRecord SCOTCH_NAME_INTERN (memAllocRecord) #define memCheck SCOTCH_NAME_INTERN (memCheck) #define memCheckExists SCOTCH_NAME_INTERN (memCheckExists) #define memCheckSize SCOTCH_NAME_INTERN (memCheckSize) #define memCheckToggle SCOTCH_NAME_INTERN (memCheckToggle) #define memCheckWatch SCOTCH_NAME_INTERN (memCheckWatch) #define memFreeRecord SCOTCH_NAME_INTERN (memFreeRecord) #define memReallocGroup SCOTCH_NAME_INTERN (memReallocGroup) #define memReallocRecord SCOTCH_NAME_INTERN (memReallocRecord) #define memOffset SCOTCH_NAME_INTERN (memOffset) #define stringSubst SCOTCH_NAME_INTERN (stringSubst) #define usagePrint SCOTCH_NAME_INTERN (usagePrint) #endif /* ((! defined SCOTCH_COMMON_EXTERNAL) || (defined SCOTCH_COMMON_RENAME)) */ #ifdef SCOTCH_RENAME #define archInit SCOTCH_NAME_INTERN (archInit) #define archExit SCOTCH_NAME_INTERN (archExit) #define archFree SCOTCH_NAME_INTERN (archFree) #define archLoad SCOTCH_NAME_INTERN (archLoad) #define archSave SCOTCH_NAME_INTERN (archSave) /* #define archName SCOTCH_NAME_INTERN (archName) Already a macro */ #define archClass SCOTCH_NAME_INTERN (archClass) #define archClass2 SCOTCH_NAME_INTERN (archClass2) #define archClassTab SCOTCH_NAME_INTERN (archClassTab) #define archDomLoad SCOTCH_NAME_INTERN (archDomLoad) #define archDomSave SCOTCH_NAME_INTERN (archDomSave) #ifdef SCOTCH_DEBUG_ARCH2 /* If already redefined */ #define archDomNum SCOTCH_NAME_INTERN (archDomNum) #define archDomDist SCOTCH_NAME_INTERN (archDomDist) #define archDomFrst SCOTCH_NAME_INTERN (archDomFrst) #define archDomIncl SCOTCH_NAME_INTERN (archDomIncl) #define archDomSize SCOTCH_NAME_INTERN (archDomSize) #define archDomTerm SCOTCH_NAME_INTERN (archDomTerm) #define archDomWght SCOTCH_NAME_INTERN (archDomWght) #define archDomBipart SCOTCH_NAME_INTERN (archDomBipart) #endif /* SCOTCH_DEBUG_ARCH2 */ #define archDomMpiType SCOTCH_NAME_INTERN (archDomMpiType) #define archBuild SCOTCH_NAME_INTERN (archBuild) #define archCmpltArchLoad SCOTCH_NAME_INTERN (archCmpltArchLoad) #define archCmpltArchSave SCOTCH_NAME_INTERN (archCmpltArchSave) #define archCmpltMatchInit SCOTCH_NAME_INTERN (archCmpltMatchInit) #define archCmpltMatchExit SCOTCH_NAME_INTERN (archCmpltMatchExit) #define archCmpltMatchMate SCOTCH_NAME_INTERN (archCmpltMatchMate) #define archCmpltDomNum SCOTCH_NAME_INTERN (archCmpltDomNum) #define archCmpltDomTerm SCOTCH_NAME_INTERN (archCmpltDomTerm) #define archCmpltDomSize SCOTCH_NAME_INTERN (archCmpltDomSize) /* #define archCmpltDomWght SCOTCH_NAME_INTERN (archCmpltDomWght) Already a macro */ #define archCmpltDomDist SCOTCH_NAME_INTERN (archCmpltDomDist) #define archCmpltDomFrst SCOTCH_NAME_INTERN (archCmpltDomFrst) #define archCmpltDomIncl SCOTCH_NAME_INTERN (archCmpltDomIncl) #define archCmpltDomLoad SCOTCH_NAME_INTERN (archCmpltDomLoad) #define archCmpltDomSave SCOTCH_NAME_INTERN (archCmpltDomSave) #define archCmpltDomBipart SCOTCH_NAME_INTERN (archCmpltDomBipart) #define archCmpltDomMpiType SCOTCH_NAME_INTERN (archCmpltDomMpiType) #define archCmpltwArchBuild SCOTCH_NAME_INTERN (archCmpltwArchBuild) #define archCmpltwArchFree SCOTCH_NAME_INTERN (archCmpltwArchFree) #define archCmpltwArchLoad SCOTCH_NAME_INTERN (archCmpltwArchLoad) #define archCmpltwArchSave SCOTCH_NAME_INTERN (archCmpltwArchSave) #define archCmpltwDomNum SCOTCH_NAME_INTERN (archCmpltwDomNum) #define archCmpltwDomTerm SCOTCH_NAME_INTERN (archCmpltwDomTerm) #define archCmpltwDomSize SCOTCH_NAME_INTERN (archCmpltwDomSize) #define archCmpltwDomWght SCOTCH_NAME_INTERN (archCmpltwDomWght) #define archCmpltwDomDist SCOTCH_NAME_INTERN (archCmpltwDomDist) #define archCmpltwDomFrst SCOTCH_NAME_INTERN (archCmpltwDomFrst) #define archCmpltwDomIncl SCOTCH_NAME_INTERN (archCmpltwDomIncl) #define archCmpltwDomLoad SCOTCH_NAME_INTERN (archCmpltwDomLoad) #define archCmpltwDomSave SCOTCH_NAME_INTERN (archCmpltwDomSave) #define archCmpltwDomBipart SCOTCH_NAME_INTERN (archCmpltwDomBipart) #define archCmpltwDomMpiType SCOTCH_NAME_INTERN (archCmpltwDomMpiType) #define archDecoArchBuild SCOTCH_NAME_INTERN (archDecoArchBuild) #define archDecoArchBuild2 SCOTCH_NAME_INTERN (archDecoArchBuild2) #define archDecoArchFree SCOTCH_NAME_INTERN (archDecoArchFree) #define archDecoArchLoad SCOTCH_NAME_INTERN (archDecoArchLoad) #define archDecoArchSave SCOTCH_NAME_INTERN (archDecoArchSave) #define archDecoDomNum SCOTCH_NAME_INTERN (archDecoDomNum) #define archDecoDomTerm SCOTCH_NAME_INTERN (archDecoDomTerm) #define archDecoDomSize SCOTCH_NAME_INTERN (archDecoDomSize) #define archDecoDomWght SCOTCH_NAME_INTERN (archDecoDomWght) #define archDecoDomDist SCOTCH_NAME_INTERN (archDecoDomDist) #define archDecoDomFrst SCOTCH_NAME_INTERN (archDecoDomFrst) #define archDecoDomIncl SCOTCH_NAME_INTERN (archDecoDomIncl) #define archDecoDomLoad SCOTCH_NAME_INTERN (archDecoDomLoad) #define archDecoDomSave SCOTCH_NAME_INTERN (archDecoDomSave) #define archDecoDomBipart SCOTCH_NAME_INTERN (archDecoDomBipart) #define archDecoDomMpiType SCOTCH_NAME_INTERN (archDecoDomMpiType) #define archDeco2ArchBuild SCOTCH_NAME_INTERN (archDeco2ArchBuild) #define archDeco2ArchFree SCOTCH_NAME_INTERN (archDeco2ArchFree) #define archDeco2ArchLoad2 SCOTCH_NAME_INTERN (archDeco2ArchLoad2) #define archDeco2ArchSave SCOTCH_NAME_INTERN (archDeco2ArchSave) #define archDeco2DomNum SCOTCH_NAME_INTERN (archDeco2DomNum) #define archDeco2DomTerm SCOTCH_NAME_INTERN (archDeco2DomTerm) #define archDeco2DomSize SCOTCH_NAME_INTERN (archDeco2DomSize) #define archDeco2DomWght SCOTCH_NAME_INTERN (archDeco2DomWght) #define archDeco2DomDist SCOTCH_NAME_INTERN (archDeco2DomDist) #define archDeco2DomFrst SCOTCH_NAME_INTERN (archDeco2DomFrst) #define archDeco2DomIncl SCOTCH_NAME_INTERN (archDeco2DomIncl) #define archDeco2DomLoad SCOTCH_NAME_INTERN (archDeco2DomLoad) #define archDeco2DomSave SCOTCH_NAME_INTERN (archDeco2DomSave) #define archDeco2DomBipart SCOTCH_NAME_INTERN (archDeco2DomBipart) #define archDeco2DomMpiType SCOTCH_NAME_INTERN (archDeco2DomMpiType) #define archDeco2MatchInit SCOTCH_NAME_INTERN (archDeco2MatchInit) #define archDistArchLoad SCOTCH_NAME_INTERN (archDistArchLoad) #define archDistArchSave SCOTCH_NAME_INTERN (archDistArchSave) #define archDistArchBuild SCOTCH_NAME_INTERN (archDistArchBuild) #define archDistDomNum SCOTCH_NAME_INTERN (archDistDomNum) #define archDistDomTerm SCOTCH_NAME_INTERN (archDistDomTerm) #define archDistDomSize SCOTCH_NAME_INTERN (archDistDomSize) #define archDistDomWght SCOTCH_NAME_INTERN (archDistDomWght) #define archDistDomDist SCOTCH_NAME_INTERN (archDistDomDist) #define archDistDomFrst SCOTCH_NAME_INTERN (archDistDomFrst) #define archDistDomIncl SCOTCH_NAME_INTERN (archDistDomIncl) #define archDistDomLoad SCOTCH_NAME_INTERN (archDistDomLoad) #define archDistDomSave SCOTCH_NAME_INTERN (archDistDomSave) #define archDistDomBipart SCOTCH_NAME_INTERN (archDistDomBipart) #define archDistDomMpiType SCOTCH_NAME_INTERN (archDistDomMpiType) #define archHcubArchLoad SCOTCH_NAME_INTERN (archHcubArchLoad) #define archHcubArchSave SCOTCH_NAME_INTERN (archHcubArchSave) #define archHcubMatchInit SCOTCH_NAME_INTERN (archHcubMatchInit) #define archHcubMatchExit SCOTCH_NAME_INTERN (archHcubMatchExit) #define archHcubMatchMate SCOTCH_NAME_INTERN (archHcubMatchMate) #define archHcubDomNum SCOTCH_NAME_INTERN (archHcubDomNum) #define archHcubDomTerm SCOTCH_NAME_INTERN (archHcubDomTerm) #define archHcubDomSize SCOTCH_NAME_INTERN (archHcubDomSize) /* #define archHcubDomWght SCOTCH_NAME_INTERN (archHcubDomWght) Already a macro */ #define archHcubDomDist SCOTCH_NAME_INTERN (archHcubDomDist) #define archHcubDomFrst SCOTCH_NAME_INTERN (archHcubDomFrst) #define archHcubDomIncl SCOTCH_NAME_INTERN (archHcubDomIncl) #define archHcubDomLoad SCOTCH_NAME_INTERN (archHcubDomLoad) #define archHcubDomSave SCOTCH_NAME_INTERN (archHcubDomSave) #define archHcubDomBipart SCOTCH_NAME_INTERN (archHcubDomBipart) #define archHcubDomMpiType SCOTCH_NAME_INTERN (archHcubDomMpiType) #define archLtleafArchLoad SCOTCH_NAME_INTERN (archLtleafArchLoad) #define archLtleafArchSave SCOTCH_NAME_INTERN (archLtleafArchSave) #define archLtleafDomNum SCOTCH_NAME_INTERN (archLtleafDomNum) #define archLtleafDomTerm SCOTCH_NAME_INTERN (archLtleafDomTerm) #define archMesh2ArchLoad SCOTCH_NAME_INTERN (archMesh2ArchLoad) #define archMesh2ArchSave SCOTCH_NAME_INTERN (archMesh2ArchSave) #define archMesh2DomNum SCOTCH_NAME_INTERN (archMesh2DomNum) #define archMesh2DomTerm SCOTCH_NAME_INTERN (archMesh2DomTerm) #define archMesh2DomSize SCOTCH_NAME_INTERN (archMesh2DomSize) /* #define archMesh2DomWght SCOTCH_NAME_INTERN (archMesh2DomWght) Already a macro */ #define archMesh2DomDist SCOTCH_NAME_INTERN (archMesh2DomDist) /* #define archMesh2DomFrst SCOTCH_NAME_INTERN (archMesh2DomFrst) Already a macro */ #define archMesh2DomIncl SCOTCH_NAME_INTERN (archMesh2DomIncl) /* #define archMesh2DomLoad SCOTCH_NAME_INTERN (archMesh2DomLoad) Already a macro */ /* #define archMesh2DomSave SCOTCH_NAME_INTERN (archMesh2DomSave) Already a macro */ #define archMesh2DomBipart SCOTCH_NAME_INTERN (archMesh2DomBipart) #define archMesh2DomBipartO SCOTCH_NAME_INTERN (archMesh2DomBipartO) #define archMesh2DomBipartU SCOTCH_NAME_INTERN (archMesh2DomBipartU) #define archMesh2DomMpiType SCOTCH_NAME_INTERN (archMesh2DomMpiType) #define archMesh3ArchLoad SCOTCH_NAME_INTERN (archMesh3ArchLoad) #define archMesh3ArchSave SCOTCH_NAME_INTERN (archMesh3ArchSave) #define archMesh3DomNum SCOTCH_NAME_INTERN (archMesh3DomNum) #define archMesh3DomTerm SCOTCH_NAME_INTERN (archMesh3DomTerm) #define archMesh3DomSize SCOTCH_NAME_INTERN (archMesh3DomSize) /* #define archMesh3DomWght SCOTCH_NAME_INTERN (archMesh3DomWght) Already a macro */ #define archMesh3DomDist SCOTCH_NAME_INTERN (archMesh3DomDist) /* #define archMesh3DomFrst SCOTCH_NAME_INTERN (archMesh3DomFrst) Already a macro */ #define archMesh3DomIncl SCOTCH_NAME_INTERN (archMesh3DomIncl) /* #define archMesh3DomLoad SCOTCH_NAME_INTERN (archMesh3DomLoad) Already a macro */ /* #define archMesh3DomSave SCOTCH_NAME_INTERN (archMesh3DomSave) Already a macro */ #define archMesh3DomBipart SCOTCH_NAME_INTERN (archMesh3DomBipart) #define archMesh3DomMpiType SCOTCH_NAME_INTERN (archMesh3DomMpiType) #define archMeshXArchLoad SCOTCH_NAME_INTERN (archMeshXArchLoad) #define archMeshXArchSave SCOTCH_NAME_INTERN (archMeshXArchSave) #define archMeshXMatchInit SCOTCH_NAME_INTERN (archMeshXMatchInit) #define archMeshXMatchExit SCOTCH_NAME_INTERN (archMeshXMatchExit) #define archMeshXMatchMate SCOTCH_NAME_INTERN (archMeshXMatchMate) #define archMeshXDomNum SCOTCH_NAME_INTERN (archMeshXDomNum) #define archMeshXDomTerm SCOTCH_NAME_INTERN (archMeshXDomTerm) #define archMeshXDomSize SCOTCH_NAME_INTERN (archMeshXDomSize) /* #define archMeshXDomWght SCOTCH_NAME_INTERN (archMeshXDomWght) Already a macro */ #define archMeshXDomDist SCOTCH_NAME_INTERN (archMeshXDomDist) #define archMeshXDomFrst SCOTCH_NAME_INTERN (archMeshXDomFrst) #define archMeshXDomIncl SCOTCH_NAME_INTERN (archMeshXDomIncl) #define archMeshXDomLoad SCOTCH_NAME_INTERN (archMeshXDomLoad) #define archMeshXDomSave SCOTCH_NAME_INTERN (archMeshXDomSave) #define archMeshXDomBipart SCOTCH_NAME_INTERN (archMeshXDomBipart) #define archMeshXDomMpiType SCOTCH_NAME_INTERN (archMeshXDomMpiType) #define archSubArchLoad SCOTCH_NAME_INTERN (archSubArchLoad) #define archSubArchSave SCOTCH_NAME_INTERN (archSubArchSave) #define archSubArchFree SCOTCH_NAME_INTERN (archSubArchFree) #define archSubArchBuild SCOTCH_NAME_INTERN (archSubArchBuild) #define archSubArchBuild2 SCOTCH_NAME_INTERN (archSubArchBuild2) #define archSubMatchInit SCOTCH_NAME_INTERN (archSubMatchInit) #define archSubMatchExit SCOTCH_NAME_INTERN (archSubMatchExit) #define archSubMatchMate SCOTCH_NAME_INTERN (archSubMatchMate) #define archSubDomNum SCOTCH_NAME_INTERN (archSubDomNum) #define archSubDomTerm SCOTCH_NAME_INTERN (archSubDomTerm) #define archSubDomSize SCOTCH_NAME_INTERN (archSubDomSize) #define archSubDomWght SCOTCH_NAME_INTERN (archSubDomWght) #define archSubDomDist SCOTCH_NAME_INTERN (archSubDomDist) #define archSubDomFrst SCOTCH_NAME_INTERN (archSubDomFrst) #define archSubDomIncl SCOTCH_NAME_INTERN (archSubDomIncl) #define archSubDomLoad SCOTCH_NAME_INTERN (archSubDomLoad) #define archSubDomSave SCOTCH_NAME_INTERN (archSubDomSave) #define archSubDomBipart SCOTCH_NAME_INTERN (archSubDomBipart) #define archSubDomMpiType SCOTCH_NAME_INTERN (archSubDomMpiType) #define archTermArchLoad SCOTCH_NAME_INTERN (archTermArchLoad) #define archTermArchSave SCOTCH_NAME_INTERN (archTermArchSave) #define archTermDomNum SCOTCH_NAME_INTERN (archTermDomNum) #define archTermDomTerm SCOTCH_NAME_INTERN (archTermDomTerm) #define archTermDomSize SCOTCH_NAME_INTERN (archTermDomSize) /* #define archTermDomWght SCOTCH_NAME_INTERN (archTermDomWght) Already a macro */ #define archTermDomDist SCOTCH_NAME_INTERN (archTermDomDist) #define archTermDomFrst SCOTCH_NAME_INTERN (archTermDomFrst) #define archTermDomIncl SCOTCH_NAME_INTERN (archTermDomIncl) #define archTermDomLoad SCOTCH_NAME_INTERN (archTermDomLoad) #define archTermDomSave SCOTCH_NAME_INTERN (archTermDomSave) #define archTermDomBipart SCOTCH_NAME_INTERN (archTermDomBipart) #define archTermDomMpiType SCOTCH_NAME_INTERN (archTermDomMpiType) #define archTleafArchLoad SCOTCH_NAME_INTERN (archTleafArchLoad) #define archTleafArchFree SCOTCH_NAME_INTERN (archTleafArchFree) #define archTleafArchSave SCOTCH_NAME_INTERN (archTleafArchSave) #define archTleafMatchInit SCOTCH_NAME_INTERN (archTleafMatchInit) #define archTleafMatchExit SCOTCH_NAME_INTERN (archTleafMatchExit) #define archTleafMatchMate SCOTCH_NAME_INTERN (archTleafMatchMate) #define archTleafDomNum SCOTCH_NAME_INTERN (archTleafDomNum) #define archTleafDomTerm SCOTCH_NAME_INTERN (archTleafDomTerm) #define archTleafDomSize SCOTCH_NAME_INTERN (archTleafDomSize) /* #define archTleafDomWght SCOTCH_NAME_INTERN (archTleafDomWght) Already a macro */ #define archTleafDomDist SCOTCH_NAME_INTERN (archTleafDomDist) #define archTleafDomFrst SCOTCH_NAME_INTERN (archTleafDomFrst) #define archTleafDomIncl SCOTCH_NAME_INTERN (archTleafDomIncl) #define archTleafDomLoad SCOTCH_NAME_INTERN (archTleafDomLoad) #define archTleafDomSave SCOTCH_NAME_INTERN (archTleafDomSave) #define archTleafDomBipart SCOTCH_NAME_INTERN (archTleafDomBipart) #define archTleafDomMpiType SCOTCH_NAME_INTERN (archTleafDomMpiType) /* #define archTorus2ArchLoad SCOTCH_NAME_INTERN (archTorus2ArchLoad) Already a macro */ /* #define archTorus2ArchSave SCOTCH_NAME_INTERN (archTorus2ArchSave) Already a macro */ /* #define archTorus2ArchFree SCOTCH_NAME_INTERN (archTorus2ArchFree) Already a macro */ /* #define archTorus2MatchInit SCOTCH_NAME_INTERN (archTorus2MatchInit) Already a macro */ /* #define archTorus2MatchExit SCOTCH_NAME_INTERN (archTorus2MatchExit) Already a macro */ /* #define archTorus2MatchMate SCOTCH_NAME_INTERN (archTorus2MatchMate) Already a macro */ /* #define archTorus2DomNum SCOTCH_NAME_INTERN (archTorus2DomNum) Already a macro */ /* #define archTorus2DomTerm SCOTCH_NAME_INTERN (archTorus2DomTerm) Already a macro */ /* #define archTorus2DomSize SCOTCH_NAME_INTERN (archTorus2DomSize) Already a macro */ /* #define archTorus2DomWght SCOTCH_NAME_INTERN (archTorus2DomWght) Already a macro */ #define archTorus2DomDist SCOTCH_NAME_INTERN (archTorus2DomDist) /* #define archTorus2DomFrst SCOTCH_NAME_INTERN (archTorus2DomFrst) Already a macro */ /* #define archTorus2DomIncl SCOTCH_NAME_INTERN (archTorus2DomIncl) Already a macro */ /* #define archTorus2DomLoad SCOTCH_NAME_INTERN (archTorus2DomLoad) Already a macro */ /* #define archTorus2DomSave SCOTCH_NAME_INTERN (archTorus2DomSave) Already a macro */ /* #define archTorus2DomBipart SCOTCH_NAME_INTERN (archTorus2DomBipart) Already a macro */ /* #define archTorus2DomMpiType SCOTCH_NAME_INTERN (archTorus2DomMpiType) Already a macro */ /* #define archTorus3ArchLoad SCOTCH_NAME_INTERN (archTorus3ArchLoad) Already a macro */ /* #define archTorus3ArchSave SCOTCH_NAME_INTERN (archTorus3ArchSave) Already a macro */ /* #define archTorus3DomNum SCOTCH_NAME_INTERN (archTorus3DomNum) Already a macro */ /* #define archTorus3DomTerm SCOTCH_NAME_INTERN (archTorus3DomTerm) Already a macro */ /* #define archTorus3DomSize SCOTCH_NAME_INTERN (archTorus3DomSize) Already a macro */ /* #define archTorus3DomWght SCOTCH_NAME_INTERN (archTorus3DomWght) Already a macro */ #define archTorus3DomDist SCOTCH_NAME_INTERN (archTorus3DomDist) /* #define archTorus3DomFrst SCOTCH_NAME_INTERN (archTorus3DomFrst) Already a macro */ /* #define archTorus3DomIncl SCOTCH_NAME_INTERN (archTorus3DomIncl) Already a macro */ /* #define archTorus3DomLoad SCOTCH_NAME_INTERN (archTorus3DomLoad) Already a macro */ /* #define archTorus3DomSave SCOTCH_NAME_INTERN (archTorus3DomSave) Already a macro */ /* #define archTorus3DomBipart SCOTCH_NAME_INTERN (archTorus3DomBipart) Already a macro */ /* #define archTorus3DomMpiType SCOTCH_NAME_INTERN (archTorus3DomMpiType) Already a macro */ /* #define archTorusXArchLoad SCOTCH_NAME_INTERN (archTorusXArchLoad) Already a macro */ /* #define archTorusXArchSave SCOTCH_NAME_INTERN (archTorusXArchSave) Already a macro */ /* #define archTorusXDomNum SCOTCH_NAME_INTERN (archTorusXDomNum) Already a macro */ /* #define archTorusXDomTerm SCOTCH_NAME_INTERN (archTorusXDomTerm) Already a macro */ /* #define archTorusXDomSize SCOTCH_NAME_INTERN (archTorusXDomSize) Already a macro */ /* #define archTorusXDomWght SCOTCH_NAME_INTERN (archTorusXDomWght) Already a macro */ #define archTorusXDomDist SCOTCH_NAME_INTERN (archTorusXDomDist) /* #define archTorusXDomFrst SCOTCH_NAME_INTERN (archTorusXDomFrst) Already a macro */ /* #define archTorusXDomIncl SCOTCH_NAME_INTERN (archTorusXDomIncl) Already a macro */ /* #define archTorusXDomLoad SCOTCH_NAME_INTERN (archTorusXDomLoad) Already a macro */ /* #define archTorusXDomSave SCOTCH_NAME_INTERN (archTorusXDomSave) Already a macro */ /* #define archTorusXDomBipart SCOTCH_NAME_INTERN (archTorusXDomBipart) Already a macro */ /* #define archTorusXDomMpiType SCOTCH_NAME_INTERN (archTorusXDomMpiType) Already a macro */ /* #define archVcmpltArchLoad SCOTCH_NAME_INTERN (archVcmpltArchLoad) Already a macro */ /* #define archVcmpltArchSave SCOTCH_NAME_INTERN (archVcmpltArchSave) Already a macro */ #define archVcmpltDomNum SCOTCH_NAME_INTERN (archVcmpltDomNum) #define archVcmpltDomTerm SCOTCH_NAME_INTERN (archVcmpltDomTerm) #define archVcmpltDomSize SCOTCH_NAME_INTERN (archVcmpltDomSize) /* #define archVcmpltDomWght SCOTCH_NAME_INTERN (archVcmpltDomWght) Already a macro */ #define archVcmpltDomDist SCOTCH_NAME_INTERN (archVcmpltDomDist) #define archVcmpltDomFrst SCOTCH_NAME_INTERN (archVcmpltDomFrst) #define archVcmpltDomIncl SCOTCH_NAME_INTERN (archVcmpltDomIncl) #define archVcmpltDomBipart SCOTCH_NAME_INTERN (archVcmpltDomBipart) #define archVcmpltDomLoad SCOTCH_NAME_INTERN (archVcmpltDomLoad) #define archVcmpltDomSave SCOTCH_NAME_INTERN (archVcmpltDomSave) #define archVcmpltDomBipart SCOTCH_NAME_INTERN (archVcmpltDomBipart) #define archVcmpltDomMpiType SCOTCH_NAME_INTERN (archVcmpltDomMpiType) /* #define archVhcubArchLoad SCOTCH_NAME_INTERN (archVhcubArchLoad) Already a macro */ /* #define archVhcubArchSave SCOTCH_NAME_INTERN (archVhcubArchSave) Already a macro */ #define archVhcubDomNum SCOTCH_NAME_INTERN (archVhcubDomNum) #define archVhcubDomTerm SCOTCH_NAME_INTERN (archVhcubDomTerm) #define archVhcubDomSize SCOTCH_NAME_INTERN (archVhcubDomSize) /* #define archVhcubDomWght SCOTCH_NAME_INTERN (archVhcubDomWght) Already a macro */ #define archVhcubDomDist SCOTCH_NAME_INTERN (archVhcubDomDist) #define archVhcubDomFrst SCOTCH_NAME_INTERN (archVhcubDomFrst) #define archVhcubDomIncl SCOTCH_NAME_INTERN (archVhcubDomIncl) #define archVhcubDomLoad SCOTCH_NAME_INTERN (archVhcubDomLoad) #define archVhcubDomSave SCOTCH_NAME_INTERN (archVhcubDomSave) #define archVhcubDomBipart SCOTCH_NAME_INTERN (archVhcubDomBipart) #define archVhcubDomMpiType SCOTCH_NAME_INTERN (archVhcubDomMpiType) #define bdgraphInit SCOTCH_NAME_INTERN (bdgraphInit) #define bdgraphInit2 SCOTCH_NAME_INTERN (bdgraphInit2) #define bdgraphExit SCOTCH_NAME_INTERN (bdgraphExit) #define bdgraphZero SCOTCH_NAME_INTERN (bdgraphZero) #define bdgraphbipartststratab SCOTCH_NAME_INTERN (bdgraphbipartststratab) #define bdgraphCheck SCOTCH_NAME_INTERN (bdgraphCheck) #define bdgraphGatherAll SCOTCH_NAME_INTERN (bdgraphGatherAll) #define bdgraphBipartBd SCOTCH_NAME_INTERN (bdgraphBipartBd) #define bdgraphBipartDf SCOTCH_NAME_INTERN (bdgraphBipartDf) #define bdgraphBipartEx SCOTCH_NAME_INTERN (bdgraphBipartEx) #define bdgraphBipartMl SCOTCH_NAME_INTERN (bdgraphBipartMl) #define bdgraphBipartSq SCOTCH_NAME_INTERN (bdgraphBipartSq) #define bdgraphBipartSt SCOTCH_NAME_INTERN (bdgraphBipartSt) #define bdgraphBipartZr SCOTCH_NAME_INTERN (bdgraphBipartZr) #define bdgraphStoreInit SCOTCH_NAME_INTERN (bdgraphStoreInit) #define bdgraphStoreExit SCOTCH_NAME_INTERN (bdgraphStoreExit) #define bdgraphStoreSave SCOTCH_NAME_INTERN (bdgraphStoreSave) #define bdgraphStoreUpdt SCOTCH_NAME_INTERN (bdgraphStoreUpdt) #define bgraphbipartststratab SCOTCH_NAME_INTERN (bgraphbipartststratab) #define bgraphInit SCOTCH_NAME_INTERN (bgraphInit) #define bgraphInit2 SCOTCH_NAME_INTERN (bgraphInit2) #define bgraphInit3 SCOTCH_NAME_INTERN (bgraphInit3) #define bgraphInit4 SCOTCH_NAME_INTERN (bgraphInit4) #define bgraphInit5 SCOTCH_NAME_INTERN (bgraphInit5) #define bgraphExit SCOTCH_NAME_INTERN (bgraphExit) #define bgraphCheck SCOTCH_NAME_INTERN (bgraphCheck) #define bgraphSwal SCOTCH_NAME_INTERN (bgraphSwal) #define bgraphZero SCOTCH_NAME_INTERN (bgraphZero) #define bgraphBipartBd SCOTCH_NAME_INTERN (bgraphBipartBd) #define bgraphBipartDf SCOTCH_NAME_INTERN (bgraphBipartDf) #define bgraphBipartDf2 SCOTCH_NAME_INTERN (bgraphBipartDf2) #define bgraphBipartDfJoin SCOTCH_NAME_INTERN (bgraphBipartDfJoin) #define bgraphBipartEx SCOTCH_NAME_INTERN (bgraphBipartEx) #define bgraphBipartFm SCOTCH_NAME_INTERN (bgraphBipartFm) #define bgraphBipartGg SCOTCH_NAME_INTERN (bgraphBipartGg) #define bgraphBipartGp SCOTCH_NAME_INTERN (bgraphBipartGp) #define bgraphBipartMl SCOTCH_NAME_INTERN (bgraphBipartMl) #define bgraphBipartSt SCOTCH_NAME_INTERN (bgraphBipartSt) #define bgraphBipartZr SCOTCH_NAME_INTERN (bgraphBipartZr) #define bgraphStoreInit SCOTCH_NAME_INTERN (bgraphStoreInit) #define bgraphStoreExit SCOTCH_NAME_INTERN (bgraphStoreExit) #define bgraphStoreSave SCOTCH_NAME_INTERN (bgraphStoreSave) #define bgraphStoreUpdt SCOTCH_NAME_INTERN (bgraphStoreUpdt) #if ((defined INTSIZE64) || (defined COMM)) #define commAllgatherv SCOTCH_NAME_INTERN (commAllgatherv) #define commGatherv SCOTCH_NAME_INTERN (commGatherv) #define commScatterv SCOTCH_NAME_INTERN (commScatterv) #endif /* ((defined INTSIZE64) || (defined COMM)) */ #define dgraphAllreduceMaxSum2 SCOTCH_NAME_INTERN (dgraphAllreduceMaxSum2) #define dgraphBuild SCOTCH_NAME_INTERN (dgraphBuild) #define dgraphBuild2 SCOTCH_NAME_INTERN (dgraphBuild2) #define dgraphBuild3 SCOTCH_NAME_INTERN (dgraphBuild3) #define dgraphBuild4 SCOTCH_NAME_INTERN (dgraphBuild4) #define dgraphBuildGrid3D SCOTCH_NAME_INTERN (dgraphBuildGrid3D) #define dgraphBuildHcub SCOTCH_NAME_INTERN (dgraphBuildHcub) #define dgraphCheck SCOTCH_NAME_INTERN (dgraphCheck) #define dgraphBand SCOTCH_NAME_INTERN (dgraphBand) #define dgraphBand2Coll SCOTCH_NAME_INTERN (dgraphBand2Coll) #define dgraphBand2Ptop SCOTCH_NAME_INTERN (dgraphBand2Ptop) #define dgraphCoarsen SCOTCH_NAME_INTERN (dgraphCoarsen) #define dgraphExit SCOTCH_NAME_INTERN (dgraphExit) #define dgraphFold SCOTCH_NAME_INTERN (dgraphFold) #define dgraphFold2 SCOTCH_NAME_INTERN (dgraphFold2) #define dgraphFoldComm SCOTCH_NAME_INTERN (dgraphFoldComm) #define dgraphFoldDup SCOTCH_NAME_INTERN (dgraphFoldDup) #define dgraphFree SCOTCH_NAME_INTERN (dgraphFree) #define dgraphGather SCOTCH_NAME_INTERN (dgraphGather) #define dgraphGatherAll SCOTCH_NAME_INTERN (dgraphGatherAll) #define dgraphGatherAll2 SCOTCH_NAME_INTERN (dgraphGatherAll2) /* #define dgraphGhst SCOTCH_NAME_INTERN (dgraphGhst) Already a macro */ /* #define dgraphGhstReplace SCOTCH_NAME_INTERN (dgraphGhstReplace) Already a macro */ #define dgraphGhst2 SCOTCH_NAME_INTERN (dgraphGhst2) #define dgraphGrow SCOTCH_NAME_INTERN (dgraphGrow) /* Used before macro replacement */ #define dgraphGrow2Coll SCOTCH_NAME_INTERN (dgraphGrow2Coll) #define dgraphGrow2Ptop SCOTCH_NAME_INTERN (dgraphGrow2Ptop) #define dgraphHaloSync SCOTCH_NAME_INTERN (dgraphHaloSync) #define dgraphHaloAsync SCOTCH_NAME_INTERN (dgraphHaloAsync) #define dgraphHaloWait SCOTCH_NAME_INTERN (dgraphHaloWait) #define dgraphHaloCheck SCOTCH_NAME_INTERN (dgraphHaloCheck) #define dgraphInduceList SCOTCH_NAME_INTERN (dgraphInduceList) #define dgraphInducePart SCOTCH_NAME_INTERN (dgraphInducePart) #define dgraphInducePart2 SCOTCH_NAME_INTERN (dgraphInducePart2) #define dgraphInduce2 SCOTCH_NAME_INTERN (dgraphInduce2) #define dgraphInit SCOTCH_NAME_INTERN (dgraphInit) #define dgraphLoad SCOTCH_NAME_INTERN (dgraphLoad) #define dgraphMatchInit SCOTCH_NAME_INTERN (dgraphMatchInit) #define dgraphMatchExit SCOTCH_NAME_INTERN (dgraphMatchExit) #define dgraphMatchSync SCOTCH_NAME_INTERN (dgraphMatchSync) #define dgraphMatchSyncColl SCOTCH_NAME_INTERN (dgraphMatchSyncColl) #define dgraphMatchSyncPtop SCOTCH_NAME_INTERN (dgraphMatchSyncPtop) #define dgraphMatchCheck SCOTCH_NAME_INTERN (dgraphMatchCheck) #define dgraphMatchHl SCOTCH_NAME_INTERN (dgraphMatchHl) #define dgraphMatchHy SCOTCH_NAME_INTERN (dgraphMatchHy) #define dgraphMatchLc SCOTCH_NAME_INTERN (dgraphMatchLc) #define dgraphMatchLy SCOTCH_NAME_INTERN (dgraphMatchLy) #define dgraphMatchSc SCOTCH_NAME_INTERN (dgraphMatchSc) #define dgraphRedist SCOTCH_NAME_INTERN (dgraphRedist) #define dgraphSave SCOTCH_NAME_INTERN (dgraphSave) #define dgraphScatter SCOTCH_NAME_INTERN (dgraphScatter) #define dgraphView SCOTCH_NAME_INTERN (dgraphView) #define dmapInit SCOTCH_NAME_INTERN (dmapInit) #define dmapExit SCOTCH_NAME_INTERN (dmapExit) #define dmapAdd SCOTCH_NAME_INTERN (dmapAdd) #define dmapTerm SCOTCH_NAME_INTERN (dmapTerm) #define dmapSave SCOTCH_NAME_INTERN (dmapSave) #define dorderDispose SCOTCH_NAME_INTERN (dorderDispose) #define dorderExit SCOTCH_NAME_INTERN (dorderExit) #define dorderFree SCOTCH_NAME_INTERN (dorderFree) #define dorderFrst SCOTCH_NAME_INTERN (dorderFrst) #define dorderGather SCOTCH_NAME_INTERN (dorderGather) #define dorderGatherTree SCOTCH_NAME_INTERN (dorderGatherTree) #define dorderInit SCOTCH_NAME_INTERN (dorderInit) #define dorderNew SCOTCH_NAME_INTERN (dorderNew) #define dorderNewSequ SCOTCH_NAME_INTERN (dorderNewSequ) #define dorderNewSequIndex SCOTCH_NAME_INTERN (dorderNewSequIndex) #define dorderPerm SCOTCH_NAME_INTERN (dorderPerm) #define dorderSave SCOTCH_NAME_INTERN (dorderSave) #define dorderSaveBlock SCOTCH_NAME_INTERN (dorderSaveBlock) #define dorderSaveMap SCOTCH_NAME_INTERN (dorderSaveMap) #define dorderSaveTree SCOTCH_NAME_INTERN (dorderSaveTree) #define dorderSaveTree2 SCOTCH_NAME_INTERN (dorderSaveTree2) #define dorderCblkDist SCOTCH_NAME_INTERN (dorderCblkDist) #define dorderTreeDist SCOTCH_NAME_INTERN (dorderTreeDist) #define fiboHeapCheck SCOTCH_NAME_INTERN (fiboHeapCheck) #define fiboHeapConsolidate SCOTCH_NAME_INTERN (fiboHeapConsolidate) /* #define fiboHeapAdd SCOTCH_NAME_INTERN (fiboHeapAdd) Already a macro */ #define fiboHeapDecrease SCOTCH_NAME_INTERN (fiboHeapDecrease) #define fiboHeapDel SCOTCH_NAME_INTERN (fiboHeapDel) #define fiboHeapExit SCOTCH_NAME_INTERN (fiboHeapExit) #define fiboHeapFree SCOTCH_NAME_INTERN (fiboHeapFree) #define fiboHeapInit SCOTCH_NAME_INTERN (fiboHeapInit) /* #define fiboHeapMin SCOTCH_NAME_INTERN (fiboHeapMin) Already a macro */ #define gainTablAddLin SCOTCH_NAME_INTERN (gainTablAddLin) #define gainTablAddLog SCOTCH_NAME_INTERN (gainTablAddLog) #define gainTablCheck SCOTCH_NAME_INTERN (gainTablCheck) #ifdef SCOTCH_DEBUG_GAIN1 /* If not already redefined as accelerated macro */ #define gainTablDel SCOTCH_NAME_INTERN (gainTablDel) #endif /* SCOTCH_DEBUG_GAIN1 */ #define gainTablExit SCOTCH_NAME_INTERN (gainTablExit) #define gainTablFree SCOTCH_NAME_INTERN (gainTablFree) #define gainTablFrst SCOTCH_NAME_INTERN (gainTablFrst) #define gainTablInit SCOTCH_NAME_INTERN (gainTablInit) #define gainTablNext SCOTCH_NAME_INTERN (gainTablNext) #define geomExit SCOTCH_NAME_INTERN (geomExit) #define geomInit SCOTCH_NAME_INTERN (geomInit) #define graphInit SCOTCH_NAME_INTERN (graphInit) #define graphExit SCOTCH_NAME_INTERN (graphExit) #define graphFree SCOTCH_NAME_INTERN (graphFree) #define graphLoad SCOTCH_NAME_INTERN (graphLoad) #define graphLoad2 SCOTCH_NAME_INTERN (graphLoad2) #define graphSave SCOTCH_NAME_INTERN (graphSave) #define graphBand SCOTCH_NAME_INTERN (graphBand) #define graphBase SCOTCH_NAME_INTERN (graphBase) #define graphCheck SCOTCH_NAME_INTERN (graphCheck) #define graphClone SCOTCH_NAME_INTERN (graphClone) #define graphCoarsen SCOTCH_NAME_INTERN (graphCoarsen) #define graphCoarsenBuild SCOTCH_NAME_INTERN (graphCoarsenBuild) #define graphCoarsenMatch SCOTCH_NAME_INTERN (graphCoarsenMatch) #define graphDiamPV SCOTCH_NAME_INTERN (graphDiamPV) #define graphIelo SCOTCH_NAME_INTERN (graphIelo) #define graphInduceList SCOTCH_NAME_INTERN (graphInduceList) #define graphInducePart SCOTCH_NAME_INTERN (graphInducePart) #define graphMatch SCOTCH_NAME_INTERN (graphMatch) #define graphMatchInit SCOTCH_NAME_INTERN (graphMatchInit) #define graphMatchNone SCOTCH_NAME_INTERN (graphMatchNone) #define graphGeomLoadChac SCOTCH_NAME_INTERN (graphGeomLoadChac) #define graphGeomLoadHabo SCOTCH_NAME_INTERN (graphGeomLoadHabo) #define graphGeomLoadMmkt SCOTCH_NAME_INTERN (graphGeomLoadMmkt) #define graphGeomLoadScot SCOTCH_NAME_INTERN (graphGeomLoadScot) #define graphGeomSaveChac SCOTCH_NAME_INTERN (graphGeomSaveChac) #define graphGeomSaveScot SCOTCH_NAME_INTERN (graphGeomSaveScot) #define graphGeomSaveMmkt SCOTCH_NAME_INTERN (graphGeomSaveMmkt) #define graphPtscotch SCOTCH_NAME_INTERN (graphPtscotch) #define hallOrderHdHalmd SCOTCH_NAME_INTERN (hallOrderHdHalmd) #define hallOrderHfR2hamdf4 SCOTCH_NAME_INTERN (hallOrderHfR2hamdf4) #define hallOrderHxBuild SCOTCH_NAME_INTERN (hallOrderHxBuild) #define hallOrderHxTree SCOTCH_NAME_INTERN (hallOrderHxTree) #define hdgraphorderststratab SCOTCH_NAME_INTERN (hdgraphorderststratab) #define hdgraphInit SCOTCH_NAME_INTERN (hdgraphInit) #define hdgraphExit SCOTCH_NAME_INTERN (hdgraphExit) #define hdgraphCheck SCOTCH_NAME_INTERN (hdgraphCheck) #define hdgraphFold SCOTCH_NAME_INTERN (hdgraphFold) #define hdgraphFold2 SCOTCH_NAME_INTERN (hdgraphFold2) #define hdgraphGather SCOTCH_NAME_INTERN (hdgraphGather) #define hdgraphInduceList SCOTCH_NAME_INTERN (hdgraphInduceList) #define hdgraphOrderNd SCOTCH_NAME_INTERN (hdgraphOrderNd) #define hdgraphOrderNd2 SCOTCH_NAME_INTERN (hdgraphOrderNd2) #define hdgraphOrderSi SCOTCH_NAME_INTERN (hdgraphOrderSi) #define hdgraphOrderSq SCOTCH_NAME_INTERN (hdgraphOrderSq) #define hdgraphOrderSq2 SCOTCH_NAME_INTERN (hdgraphOrderSq2) #define hdgraphOrderSt SCOTCH_NAME_INTERN (hdgraphOrderSt) #define hgraphorderststratab SCOTCH_NAME_INTERN (hgraphorderststratab) #define hgraphInit SCOTCH_NAME_INTERN (hgraphInit) #define hgraphExit SCOTCH_NAME_INTERN (hgraphExit) #define hgraphFree SCOTCH_NAME_INTERN (hgraphFree) #define hgraphInduceList SCOTCH_NAME_INTERN (hgraphInduceList) #define hgraphCheck SCOTCH_NAME_INTERN (hgraphCheck) #define hgraphOrderBl SCOTCH_NAME_INTERN (hgraphOrderBl) #define hgraphOrderCc SCOTCH_NAME_INTERN (hgraphOrderCc) #define hgraphOrderCp SCOTCH_NAME_INTERN (hgraphOrderCp) #define hgraphOrderGp SCOTCH_NAME_INTERN (hgraphOrderGp) #define hgraphOrderHd SCOTCH_NAME_INTERN (hgraphOrderHd) #define hgraphOrderHf SCOTCH_NAME_INTERN (hgraphOrderHf) #define hgraphOrderHxFill SCOTCH_NAME_INTERN (hgraphOrderHxFill) #define hgraphOrderKp SCOTCH_NAME_INTERN (hgraphOrderKp) #define hgraphOrderNd SCOTCH_NAME_INTERN (hgraphOrderNd) #define hgraphOrderSi SCOTCH_NAME_INTERN (hgraphOrderSi) #define hgraphOrderSt SCOTCH_NAME_INTERN (hgraphOrderSt) #define hgraphUnhalo SCOTCH_NAME_INTERN (hgraphUnhalo) #define hmeshorderststratab SCOTCH_NAME_INTERN (hmeshorderststratab) #define hmeshExit SCOTCH_NAME_INTERN (hmeshExit) #define hmeshBase SCOTCH_NAME_INTERN (hmeshBase) #define hmeshCheck SCOTCH_NAME_INTERN (hmeshCheck) #define hmeshInducePart SCOTCH_NAME_INTERN (hmeshInducePart) #define hmeshHgraph SCOTCH_NAME_INTERN (hmeshHgraph) #define hmeshMesh SCOTCH_NAME_INTERN (hmeshMesh) #define hmeshOrderBl SCOTCH_NAME_INTERN (hmeshOrderBl) #define hmeshOrderCp SCOTCH_NAME_INTERN (hmeshOrderCp) #define hmeshOrderGp SCOTCH_NAME_INTERN (hmeshOrderGp) #define hmeshOrderGr SCOTCH_NAME_INTERN (hmeshOrderGr) #define hmeshOrderHd SCOTCH_NAME_INTERN (hmeshOrderHd) #define hmeshOrderHf SCOTCH_NAME_INTERN (hmeshOrderHf) #define hmeshOrderHxFill SCOTCH_NAME_INTERN (hmeshOrderHxFill) #define hmeshOrderNd SCOTCH_NAME_INTERN (hmeshOrderNd) #define hmeshOrderSi SCOTCH_NAME_INTERN (hmeshOrderSi) #define hmeshOrderSt SCOTCH_NAME_INTERN (hmeshOrderSt) #define kdgraphmapststratab SCOTCH_NAME_INTERN (kdgraphmapststratab) #define kdgraphInit SCOTCH_NAME_INTERN (kdgraphInit) #define kdgraphExit SCOTCH_NAME_INTERN (kdgraphExit) #define kdgraphGather SCOTCH_NAME_INTERN (kdgraphGather) #define kdgraphMapRb SCOTCH_NAME_INTERN (kdgraphMapRb) #define kdgraphMapRbAdd2 SCOTCH_NAME_INTERN (kdgraphMapRbAdd2) #define kdgraphMapRbAddBoth SCOTCH_NAME_INTERN (kdgraphMapRbAddBoth) #define kdgraphMapRbAddOne SCOTCH_NAME_INTERN (kdgraphMapRbAddOne) #define kdgraphMapRbAddPart SCOTCH_NAME_INTERN (kdgraphMapRbAddPart) #define kdgraphMapRbMap SCOTCH_NAME_INTERN (kdgraphMapRbMap) #define kdgraphMapRbPart SCOTCH_NAME_INTERN (kdgraphMapRbPart) #define kdgraphMapSt SCOTCH_NAME_INTERN (kdgraphMapSt) #define kgraphmapststratab SCOTCH_NAME_INTERN (kgraphmapststratab) #define kgraphInit SCOTCH_NAME_INTERN (kgraphInit) #define kgraphExit SCOTCH_NAME_INTERN (kgraphExit) #define kgraphCheck SCOTCH_NAME_INTERN (kgraphCheck) #define kgraphBand SCOTCH_NAME_INTERN (kgraphBand) #define kgraphCost SCOTCH_NAME_INTERN (kgraphCost) #define kgraphFron SCOTCH_NAME_INTERN (kgraphFron) #define kgraphFrst SCOTCH_NAME_INTERN (kgraphFrst) #define kgraphMapBd SCOTCH_NAME_INTERN (kgraphMapBd) #define kgraphMapCp SCOTCH_NAME_INTERN (kgraphMapCp) #define kgraphMapDf SCOTCH_NAME_INTERN (kgraphMapDf) #define kgraphMapEx SCOTCH_NAME_INTERN (kgraphMapEx) #define kgraphMapFm SCOTCH_NAME_INTERN (kgraphMapFm) #define kgraphMapMl SCOTCH_NAME_INTERN (kgraphMapMl) #define kgraphMapRb SCOTCH_NAME_INTERN (kgraphMapRb) #define kgraphMapRbMap SCOTCH_NAME_INTERN (kgraphMapRbMap) #define kgraphMapRbBgraph SCOTCH_NAME_INTERN (kgraphMapRbBgraph) #define kgraphMapRbPart SCOTCH_NAME_INTERN (kgraphMapRbPart) #define kgraphMapRbVfloBuild SCOTCH_NAME_INTERN (kgraphMapRbVfloBuild) #define kgraphMapRbVfloMerge SCOTCH_NAME_INTERN (kgraphMapRbVfloMerge) #define kgraphMapRbVfloSplit SCOTCH_NAME_INTERN (kgraphMapRbVfloSplit) #define kgraphMapSt SCOTCH_NAME_INTERN (kgraphMapSt) #define kgraphStoreInit SCOTCH_NAME_INTERN (kgraphStoreInit) #define kgraphStoreExit SCOTCH_NAME_INTERN (kgraphStoreExit) #define kgraphStoreSave SCOTCH_NAME_INTERN (kgraphStoreSave) #define kgraphStoreUpdt SCOTCH_NAME_INTERN (kgraphStoreUpdt) #define listInit SCOTCH_NAME_INTERN (listInit) #define listExit SCOTCH_NAME_INTERN (listExit) #define listAlloc SCOTCH_NAME_INTERN (listAlloc) #define listFree SCOTCH_NAME_INTERN (listFree) #define listLoad SCOTCH_NAME_INTERN (listLoad) #define listSave SCOTCH_NAME_INTERN (listSave) #define listSort SCOTCH_NAME_INTERN (listSort) #define listCopy SCOTCH_NAME_INTERN (listCopy) #define mapInit SCOTCH_NAME_INTERN (mapInit) #define mapInit2 SCOTCH_NAME_INTERN (mapInit2) #define mapExit SCOTCH_NAME_INTERN (mapExit) #define mapAlloc SCOTCH_NAME_INTERN (mapAlloc) #define mapBuild SCOTCH_NAME_INTERN (mapBuild) #define mapCopy SCOTCH_NAME_INTERN (mapCopy) #define mapFree SCOTCH_NAME_INTERN (mapFree) #define mapFrst SCOTCH_NAME_INTERN (mapFrst) #define mapLoad SCOTCH_NAME_INTERN (mapLoad) #define mapMerge SCOTCH_NAME_INTERN (mapMerge) #define mapResize SCOTCH_NAME_INTERN (mapResize) #define mapResize2 SCOTCH_NAME_INTERN (mapResize2) #define mapSave SCOTCH_NAME_INTERN (mapSave) #define mapTerm SCOTCH_NAME_INTERN (mapTerm) #define meshInit SCOTCH_NAME_INTERN (meshInit) #define meshExit SCOTCH_NAME_INTERN (meshExit) #define meshFree SCOTCH_NAME_INTERN (meshFree) #define meshLoad SCOTCH_NAME_INTERN (meshLoad) #define meshSave SCOTCH_NAME_INTERN (meshSave) #define meshBase SCOTCH_NAME_INTERN (meshBase) #define meshGraph SCOTCH_NAME_INTERN (meshGraph) #define meshCoarsen SCOTCH_NAME_INTERN (meshCoarsen) #define meshInduceList SCOTCH_NAME_INTERN (meshInduceList) #define meshInducePart SCOTCH_NAME_INTERN (meshInducePart) #define meshInduceSepa SCOTCH_NAME_INTERN (meshInduceSepa) #define meshCheck SCOTCH_NAME_INTERN (meshCheck) #define meshGeomLoadHabo SCOTCH_NAME_INTERN (meshGeomLoadHabo) #define meshGeomLoadScot SCOTCH_NAME_INTERN (meshGeomLoadScot) #define meshGeomSaveScot SCOTCH_NAME_INTERN (meshGeomSaveScot) #define orderInit SCOTCH_NAME_INTERN (orderInit) #define orderExit SCOTCH_NAME_INTERN (orderExit) #define orderLoad SCOTCH_NAME_INTERN (orderLoad) #define orderSave SCOTCH_NAME_INTERN (orderSave) #define orderSaveMap SCOTCH_NAME_INTERN (orderSaveMap) #define orderSaveTree SCOTCH_NAME_INTERN (orderSaveTree) #define orderCheck SCOTCH_NAME_INTERN (orderCheck) #define orderPeri SCOTCH_NAME_INTERN (orderPeri) #define orderRang SCOTCH_NAME_INTERN (orderRang) #define orderTree SCOTCH_NAME_INTERN (orderTree) #define parsermethtokentab SCOTCH_NAME_INTERN (parsermethtokentab) #define parserparamcurr SCOTCH_NAME_INTERN (parserparamcurr) #define parserstratcurr SCOTCH_NAME_INTERN (parserstratcurr) #define parserstrattab SCOTCH_NAME_INTERN (parserstrattab) #define stratdummy SCOTCH_NAME_INTERN (stratdummy) #define stratInit SCOTCH_NAME_INTERN (stratInit) #define stratExit SCOTCH_NAME_INTERN (stratExit) #define stratSave SCOTCH_NAME_INTERN (stratSave) #define stratCondEval SCOTCH_NAME_INTERN (stratCondEval) #define stratCondExit SCOTCH_NAME_INTERN (stratCondExit) #define stratCondSave SCOTCH_NAME_INTERN (stratCondSave) #define stratParserInit SCOTCH_NAME_INTERN (stratParserInit) #define stratParserInput SCOTCH_NAME_INTERN (stratParserInput) #define stratParserLex SCOTCH_NAME_INTERN (stratParserLex) #define stratParserRemain SCOTCH_NAME_INTERN (stratParserRemain) #define stratParserSelect SCOTCH_NAME_INTERN (stratParserSelect) #define stratParserParse SCOTCH_NAME_INTERN (stratParserParse) #define stratParserParse2 SCOTCH_NAME_INTERN (stratParserParse2) #define stratTestEval SCOTCH_NAME_INTERN (stratTestEval) #define stratTestExit SCOTCH_NAME_INTERN (stratTestExit) #define stratTestSave SCOTCH_NAME_INTERN (stratTestSave) #define threadLaunch SCOTCH_NAME_INTERN (threadLaunch) #define threadReduce SCOTCH_NAME_INTERN (threadReduce) #define threadScan SCOTCH_NAME_INTERN (threadScan) #define vdgraphseparateststratab SCOTCH_NAME_INTERN (vdgraphseparateststratab) #define vdgraphCheck SCOTCH_NAME_INTERN (vdgraphCheck) #define vdgraphExit SCOTCH_NAME_INTERN (vdgraphExit) #define vdgraphGatherAll SCOTCH_NAME_INTERN (vdgraphGatherAll) #define vdgraphInit SCOTCH_NAME_INTERN (vdgraphInit) #define vdgraphSeparateBd SCOTCH_NAME_INTERN (vdgraphSeparateBd) #define vdgraphSeparateDf SCOTCH_NAME_INTERN (vdgraphSeparateDf) #define vdgraphSeparateMl SCOTCH_NAME_INTERN (vdgraphSeparateMl) #define vdgraphSeparateSq SCOTCH_NAME_INTERN (vdgraphSeparateSq) #define vdgraphSeparateSt SCOTCH_NAME_INTERN (vdgraphSeparateSt) #define vdgraphSeparateZr SCOTCH_NAME_INTERN (vdgraphSeparateZr) #define vdgraphStoreExit SCOTCH_NAME_INTERN (vdgraphStoreExit) #define vdgraphStoreInit SCOTCH_NAME_INTERN (vdgraphStoreInit) #define vdgraphStoreSave SCOTCH_NAME_INTERN (vdgraphStoreSave) #define vdgraphStoreUpdt SCOTCH_NAME_INTERN (vdgraphStoreUpdt) #define vdgraphZero SCOTCH_NAME_INTERN (vdgraphZero) #define vgraphseparateststratab SCOTCH_NAME_INTERN (vgraphseparateststratab) #define vgraphInit SCOTCH_NAME_INTERN (vgraphInit) #define vgraphExit SCOTCH_NAME_INTERN (vgraphExit) #define vgraphCheck SCOTCH_NAME_INTERN (vgraphCheck) #define vgraphZero SCOTCH_NAME_INTERN (vgraphZero) #define vgraphSeparateBd SCOTCH_NAME_INTERN (vgraphSeparateBd) #define vgraphSeparateDf SCOTCH_NAME_INTERN (vgraphSeparateDf) #define vgraphSeparateEs SCOTCH_NAME_INTERN (vgraphSeparateEs) #define vgraphSeparateFm SCOTCH_NAME_INTERN (vgraphSeparateFm) #define vgraphSeparateGg SCOTCH_NAME_INTERN (vgraphSeparateGg) #define vgraphSeparateGp SCOTCH_NAME_INTERN (vgraphSeparateGp) #define vgraphSeparateMl SCOTCH_NAME_INTERN (vgraphSeparateMl) #define vgraphSeparateMt SCOTCH_NAME_INTERN (vgraphSeparateMt) #define vgraphSeparateSt SCOTCH_NAME_INTERN (vgraphSeparateSt) #define vgraphSeparateTh SCOTCH_NAME_INTERN (vgraphSeparateTh) #define vgraphSeparateVw SCOTCH_NAME_INTERN (vgraphSeparateVw) #define vgraphSeparateZr SCOTCH_NAME_INTERN (vgraphSeparateZr) #define vgraphStoreInit SCOTCH_NAME_INTERN (vgraphStoreInit) #define vgraphStoreExit SCOTCH_NAME_INTERN (vgraphStoreExit) #define vgraphStoreSave SCOTCH_NAME_INTERN (vgraphStoreSave) #define vgraphStoreUpdt SCOTCH_NAME_INTERN (vgraphStoreUpdt) #define vmeshseparateststratab SCOTCH_NAME_INTERN (vmeshseparateststratab) #define vmeshExit SCOTCH_NAME_INTERN (vmeshExit) #define vmeshCheck SCOTCH_NAME_INTERN (vmeshCheck) #define vmeshZero SCOTCH_NAME_INTERN (vmeshZero) #define vmeshSeparateFm SCOTCH_NAME_INTERN (vmeshSeparateFm) #define vmeshSeparateGg SCOTCH_NAME_INTERN (vmeshSeparateGg) #define vmeshSeparateGr SCOTCH_NAME_INTERN (vmeshSeparateGr) #define vmeshSeparateMl SCOTCH_NAME_INTERN (vmeshSeparateMl) #define vmeshSeparateSt SCOTCH_NAME_INTERN (vmeshSeparateSt) #define vmeshSeparateZr SCOTCH_NAME_INTERN (vmeshSeparateZr) #define vmeshStoreInit SCOTCH_NAME_INTERN (vmeshStoreInit) #define vmeshStoreExit SCOTCH_NAME_INTERN (vmeshStoreExit) #define vmeshStoreSave SCOTCH_NAME_INTERN (vmeshStoreSave) #define vmeshStoreUpdt SCOTCH_NAME_INTERN (vmeshStoreUpdt) #define wgraphpartststratab SCOTCH_NAME_INTERN (wgraphpartststratab) #define wgraphAlloc SCOTCH_NAME_INTERN (wgraphAlloc) #define wgraphInit SCOTCH_NAME_INTERN (wgraphInit) #define wgraphExit SCOTCH_NAME_INTERN (wgraphExit) #define wgraphCheck SCOTCH_NAME_INTERN (wgraphCheck) #define wgraphZero SCOTCH_NAME_INTERN (wgraphZero) #define wgraphPartFm SCOTCH_NAME_INTERN (wgraphPartFm) #define wgraphPartGg SCOTCH_NAME_INTERN (wgraphPartGg) #define wgraphPartGp SCOTCH_NAME_INTERN (wgraphPartGp) #define wgraphPartMl SCOTCH_NAME_INTERN (wgraphPartMl) #define wgraphPartRb SCOTCH_NAME_INTERN (wgraphPartRb) #define wgraphPartSt SCOTCH_NAME_INTERN (wgraphPartSt) #define wgraphPartZr SCOTCH_NAME_INTERN (wgraphPartZr) #define wgraphStoreInit SCOTCH_NAME_INTERN (wgraphStoreInit) #define wgraphStoreExit SCOTCH_NAME_INTERN (wgraphStoreExit) #define wgraphStoreSave SCOTCH_NAME_INTERN (wgraphStoreSave) #define wgraphStoreUpdt SCOTCH_NAME_INTERN (wgraphStoreUpdt) #endif /* SCOTCH_RENAME */ #ifdef SCOTCH_RENAME_PUBLIC #define SCOTCH_archAlloc SCOTCH_NAME_PUBLIC (SCOTCH_archAlloc) #define SCOTCH_archBuild SCOTCH_NAME_PUBLIC (SCOTCH_archBuild) #define SCOTCH_archBuild0 SCOTCH_NAME_PUBLIC (SCOTCH_archBuild0) #define SCOTCH_archBuild2 SCOTCH_NAME_PUBLIC (SCOTCH_archBuild2) #define SCOTCH_archCmplt SCOTCH_NAME_PUBLIC (SCOTCH_archCmplt) #define SCOTCH_archCmpltw SCOTCH_NAME_PUBLIC (SCOTCH_archCmpltw) #define SCOTCH_archExit SCOTCH_NAME_PUBLIC (SCOTCH_archExit) #define SCOTCH_archHcub SCOTCH_NAME_PUBLIC (SCOTCH_archHcub) #define SCOTCH_archInit SCOTCH_NAME_PUBLIC (SCOTCH_archInit) #define SCOTCH_archLoad SCOTCH_NAME_PUBLIC (SCOTCH_archLoad) #define SCOTCH_archLtleaf SCOTCH_NAME_PUBLIC (SCOTCH_archLtleaf) #define SCOTCH_archMesh2 SCOTCH_NAME_PUBLIC (SCOTCH_archMesh2) #define SCOTCH_archMesh3 SCOTCH_NAME_PUBLIC (SCOTCH_archMesh3) #define SCOTCH_archMeshX SCOTCH_NAME_PUBLIC (SCOTCH_archMeshX) #define SCOTCH_archName SCOTCH_NAME_PUBLIC (SCOTCH_archName) #define SCOTCH_archSave SCOTCH_NAME_PUBLIC (SCOTCH_archSave) #define SCOTCH_archSize SCOTCH_NAME_PUBLIC (SCOTCH_archSize) #define SCOTCH_archSub SCOTCH_NAME_PUBLIC (SCOTCH_archSub) #define SCOTCH_archTleaf SCOTCH_NAME_PUBLIC (SCOTCH_archTleaf) #define SCOTCH_archTorus2 SCOTCH_NAME_PUBLIC (SCOTCH_archTorus2) #define SCOTCH_archTorus3 SCOTCH_NAME_PUBLIC (SCOTCH_archTorus3) #define SCOTCH_archTorusX SCOTCH_NAME_PUBLIC (SCOTCH_archTorusX) #define SCOTCH_archVar SCOTCH_NAME_PUBLIC (SCOTCH_archVar) #define SCOTCH_archVcmplt SCOTCH_NAME_PUBLIC (SCOTCH_archVcmplt) #define SCOTCH_archVhcub SCOTCH_NAME_PUBLIC (SCOTCH_archVhcub) #define SCOTCH_dgraphAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dgraphAlloc) #define SCOTCH_dgraphBand SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBand) #define SCOTCH_dgraphBuild SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBuild) #define SCOTCH_dgraphBuildGrid3D SCOTCH_NAME_PUBLIC (SCOTCH_dgraphBuildGrid3D) #define SCOTCH_dgraphCheck SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCheck) #define SCOTCH_dgraphCoarsen SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCoarsen) #define SCOTCH_dgraphCorderExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCorderExit) #define SCOTCH_dgraphCorderInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphCorderInit) #define SCOTCH_dgraphData SCOTCH_NAME_PUBLIC (SCOTCH_dgraphData) #define SCOTCH_dgraphExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphExit) #define SCOTCH_dgraphFree SCOTCH_NAME_PUBLIC (SCOTCH_dgraphFree) #define SCOTCH_dgraphGather SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGather) #define SCOTCH_dgraphGhst SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGhst) #define SCOTCH_dgraphGhstReplace SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGhstReplace) #define SCOTCH_dgraphGrow SCOTCH_NAME_PUBLIC (SCOTCH_dgraphGrow) #define SCOTCH_dgraphHalo SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHalo) #define SCOTCH_dgraphHaloAsync SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloAsync) #define SCOTCH_dgraphHaloReqAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloReqAlloc) #define SCOTCH_dgraphHaloWait SCOTCH_NAME_PUBLIC (SCOTCH_dgraphHaloWait) #define SCOTCH_dgraphInducePart SCOTCH_NAME_PUBLIC (SCOTCH_dgraphInducePart) #define SCOTCH_dgraphInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphInit) #define SCOTCH_dgraphLoad SCOTCH_NAME_PUBLIC (SCOTCH_dgraphLoad) #define SCOTCH_dgraphMap SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMap) #define SCOTCH_dgraphMapCompute SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapCompute) #define SCOTCH_dgraphMapExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapExit) #define SCOTCH_dgraphMapInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapInit) #define SCOTCH_dgraphMapSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapSave) #define SCOTCH_dgraphMapView SCOTCH_NAME_PUBLIC (SCOTCH_dgraphMapView) #define SCOTCH_dgraphOrderCblkDist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderCblkDist) #define SCOTCH_dgraphOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderCompute) #define SCOTCH_dgraphOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderComputeList) #define SCOTCH_dgraphOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderExit) #define SCOTCH_dgraphOrderGather SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderGather) #define SCOTCH_dgraphOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderInit) #define SCOTCH_dgraphOrderPerm SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderPerm) #define SCOTCH_dgraphOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSave) #define SCOTCH_dgraphOrderSaveBlock SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveBlock) #define SCOTCH_dgraphOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveMap) #define SCOTCH_dgraphOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderSaveTree) #define SCOTCH_dgraphOrderTreeDist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphOrderTreeDist) #define SCOTCH_dgraphPart SCOTCH_NAME_PUBLIC (SCOTCH_dgraphPart) #define SCOTCH_dgraphRedist SCOTCH_NAME_PUBLIC (SCOTCH_dgraphRedist) #define SCOTCH_dgraphSave SCOTCH_NAME_PUBLIC (SCOTCH_dgraphSave) #define SCOTCH_dgraphScatter SCOTCH_NAME_PUBLIC (SCOTCH_dgraphScatter) #define SCOTCH_dgraphSize SCOTCH_NAME_PUBLIC (SCOTCH_dgraphSize) #define SCOTCH_dgraphStat SCOTCH_NAME_PUBLIC (SCOTCH_dgraphStat) #define SCOTCH_dmapAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dmapAlloc) #define SCOTCH_dorderAlloc SCOTCH_NAME_PUBLIC (SCOTCH_dorderAlloc) #define SCOTCH_geomAlloc SCOTCH_NAME_PUBLIC (SCOTCH_geomAlloc) #define SCOTCH_geomData SCOTCH_NAME_PUBLIC (SCOTCH_geomData) #define SCOTCH_geomExit SCOTCH_NAME_PUBLIC (SCOTCH_geomExit) #define SCOTCH_geomInit SCOTCH_NAME_PUBLIC (SCOTCH_geomInit) #define SCOTCH_graphAlloc SCOTCH_NAME_PUBLIC (SCOTCH_graphAlloc) #define SCOTCH_graphBase SCOTCH_NAME_PUBLIC (SCOTCH_graphBase) #define SCOTCH_graphBuild SCOTCH_NAME_PUBLIC (SCOTCH_graphBuild) #define SCOTCH_graphCheck SCOTCH_NAME_PUBLIC (SCOTCH_graphCheck) #define SCOTCH_graphCoarsen SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsen) #define SCOTCH_graphCoarsenBuild SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsenBuild) #define SCOTCH_graphCoarsenMatch SCOTCH_NAME_PUBLIC (SCOTCH_graphCoarsenMatch) #define SCOTCH_graphColor SCOTCH_NAME_PUBLIC (SCOTCH_graphColor) #define SCOTCH_graphData SCOTCH_NAME_PUBLIC (SCOTCH_graphData) #define SCOTCH_graphDiamPV SCOTCH_NAME_PUBLIC (SCOTCH_graphDiamPV) #define SCOTCH_graphExit SCOTCH_NAME_PUBLIC (SCOTCH_graphExit) #define SCOTCH_graphFree SCOTCH_NAME_PUBLIC (SCOTCH_graphFree) #define SCOTCH_graphGeomLoadChac SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadChac) #define SCOTCH_graphGeomLoadHabo SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadHabo) #define SCOTCH_graphGeomLoadMmkt SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadMmkt) #define SCOTCH_graphGeomLoadScot SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomLoadScot) #define SCOTCH_graphGeomSaveChac SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveChac) #define SCOTCH_graphGeomSaveMmkt SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveMmkt) #define SCOTCH_graphGeomSaveScot SCOTCH_NAME_PUBLIC (SCOTCH_graphGeomSaveScot) #define SCOTCH_graphInduceList SCOTCH_NAME_PUBLIC (SCOTCH_graphInduceList) #define SCOTCH_graphInducePart SCOTCH_NAME_PUBLIC (SCOTCH_graphInducePart) #define SCOTCH_graphInit SCOTCH_NAME_PUBLIC (SCOTCH_graphInit) #define SCOTCH_graphLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphLoad) #define SCOTCH_graphMap SCOTCH_NAME_PUBLIC (SCOTCH_graphMap) #define SCOTCH_graphMapCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphMapCompute) #define SCOTCH_graphMapExit SCOTCH_NAME_PUBLIC (SCOTCH_graphMapExit) #define SCOTCH_graphMapFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphMapFixed) #define SCOTCH_graphMapFixedCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphMapFixedCompute) #define SCOTCH_graphMapInit SCOTCH_NAME_PUBLIC (SCOTCH_graphMapInit) #define SCOTCH_graphMapLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphMapLoad) #define SCOTCH_graphMapSave SCOTCH_NAME_PUBLIC (SCOTCH_graphMapSave) #define SCOTCH_graphMapView SCOTCH_NAME_PUBLIC (SCOTCH_graphMapView) #define SCOTCH_graphMapViewRaw SCOTCH_NAME_PUBLIC (SCOTCH_graphMapViewRaw) #define SCOTCH_graphOrder SCOTCH_NAME_PUBLIC (SCOTCH_graphOrder) #define SCOTCH_graphOrderCheck SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderCheck) #define SCOTCH_graphOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderCompute) #define SCOTCH_graphOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderComputeList) #define SCOTCH_graphOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderExit) #define SCOTCH_graphOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderInit) #define SCOTCH_graphOrderList SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderList) #define SCOTCH_graphOrderLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderLoad) #define SCOTCH_graphOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSave) #define SCOTCH_graphOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSaveMap) #define SCOTCH_graphOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_graphOrderSaveTree) #define SCOTCH_graphPart SCOTCH_NAME_PUBLIC (SCOTCH_graphPart) #define SCOTCH_graphPartFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphPartFixed) #define SCOTCH_graphPartOvl SCOTCH_NAME_PUBLIC (SCOTCH_graphPartOvl) #define SCOTCH_graphRemap SCOTCH_NAME_PUBLIC (SCOTCH_graphRemap) #define SCOTCH_graphRemapCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapCompute) #define SCOTCH_graphRemapFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapFixed) #define SCOTCH_graphRemapFixedCompute SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapFixedCompute) #define SCOTCH_graphRemapView SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapView) #define SCOTCH_graphRemapViewRaw SCOTCH_NAME_PUBLIC (SCOTCH_graphRemapViewRaw) #define SCOTCH_graphRepart SCOTCH_NAME_PUBLIC (SCOTCH_graphRepart) #define SCOTCH_graphRepartFixed SCOTCH_NAME_PUBLIC (SCOTCH_graphRepartFixed) #define SCOTCH_graphSave SCOTCH_NAME_PUBLIC (SCOTCH_graphSave) #define SCOTCH_graphSize SCOTCH_NAME_PUBLIC (SCOTCH_graphSize) #define SCOTCH_graphStat SCOTCH_NAME_PUBLIC (SCOTCH_graphStat) #define SCOTCH_graphTabLoad SCOTCH_NAME_PUBLIC (SCOTCH_graphTabLoad) #define SCOTCH_mapAlloc SCOTCH_NAME_PUBLIC (SCOTCH_mapAlloc) #define SCOTCH_meshAlloc SCOTCH_NAME_PUBLIC (SCOTCH_meshAlloc) #define SCOTCH_meshBuild SCOTCH_NAME_PUBLIC (SCOTCH_meshBuild) #define SCOTCH_meshCheck SCOTCH_NAME_PUBLIC (SCOTCH_meshCheck) #define SCOTCH_meshData SCOTCH_NAME_PUBLIC (SCOTCH_meshData) #define SCOTCH_meshExit SCOTCH_NAME_PUBLIC (SCOTCH_meshExit) #define SCOTCH_meshGeomLoadHabo SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomLoadHabo) #define SCOTCH_meshGeomLoadScot SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomLoadScot) #define SCOTCH_meshGeomSaveScot SCOTCH_NAME_PUBLIC (SCOTCH_meshGeomSaveScot) #define SCOTCH_meshGraph SCOTCH_NAME_PUBLIC (SCOTCH_meshGraph) #define SCOTCH_meshInit SCOTCH_NAME_PUBLIC (SCOTCH_meshInit) #define SCOTCH_meshLoad SCOTCH_NAME_PUBLIC (SCOTCH_meshLoad) #define SCOTCH_meshOrder SCOTCH_NAME_PUBLIC (SCOTCH_meshOrder) #define SCOTCH_meshOrderCheck SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderCheck) #define SCOTCH_meshOrderCompute SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderCompute) #define SCOTCH_meshOrderComputeList SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderComputeList) #define SCOTCH_meshOrderExit SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderExit) #define SCOTCH_meshOrderInit SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderInit) #define SCOTCH_meshOrderList SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderList) #define SCOTCH_meshOrderSave SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSave) #define SCOTCH_meshOrderSaveMap SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSaveMap) #define SCOTCH_meshOrderSaveTree SCOTCH_NAME_PUBLIC (SCOTCH_meshOrderSaveTree) #define SCOTCH_meshSave SCOTCH_NAME_PUBLIC (SCOTCH_meshSave) #define SCOTCH_meshSize SCOTCH_NAME_PUBLIC (SCOTCH_meshSize) #define SCOTCH_meshStat SCOTCH_NAME_PUBLIC (SCOTCH_meshStat) #define SCOTCH_numSizeof SCOTCH_NAME_PUBLIC (SCOTCH_numSizeof) #define SCOTCH_orderAlloc SCOTCH_NAME_PUBLIC (SCOTCH_orderAlloc) #define SCOTCH_randomLoad SCOTCH_NAME_PUBLIC (SCOTCH_randomLoad) #define SCOTCH_randomProc SCOTCH_NAME_PUBLIC (SCOTCH_randomProc) #define SCOTCH_randomReset SCOTCH_NAME_PUBLIC (SCOTCH_randomReset) #define SCOTCH_randomSave SCOTCH_NAME_PUBLIC (SCOTCH_randomSave) #define SCOTCH_randomSeed SCOTCH_NAME_PUBLIC (SCOTCH_randomSeed) #define SCOTCH_stratAlloc SCOTCH_NAME_PUBLIC (SCOTCH_stratAlloc) #define SCOTCH_stratArchBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratArchBuild) #define SCOTCH_stratDgraphClusterBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphClusterBuild) #define SCOTCH_stratDgraphMap SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphMap) #define SCOTCH_stratDgraphMapBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphMapBuild) #define SCOTCH_stratDgraphOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphOrder) #define SCOTCH_stratDgraphOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratDgraphOrderBuild) #define SCOTCH_stratExit SCOTCH_NAME_PUBLIC (SCOTCH_stratExit) #define SCOTCH_stratFree SCOTCH_NAME_PUBLIC (SCOTCH_stratFree) #define SCOTCH_stratGraphBipart SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphBipart) #define SCOTCH_stratGraphClusterBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphClusterBuild) #define SCOTCH_stratGraphMap SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphMap) #define SCOTCH_stratGraphMapBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphMapBuild) #define SCOTCH_stratGraphOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphOrder) #define SCOTCH_stratGraphOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphOrderBuild) #define SCOTCH_stratGraphPartOvl SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphPartOvl) #define SCOTCH_stratGraphPartOvlBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratGraphPartOvlBuild) #define SCOTCH_stratInit SCOTCH_NAME_PUBLIC (SCOTCH_stratInit) #define SCOTCH_stratMeshOrder SCOTCH_NAME_PUBLIC (SCOTCH_stratMeshOrder) #define SCOTCH_stratMeshOrderBuild SCOTCH_NAME_PUBLIC (SCOTCH_stratMeshOrderBuild) #define SCOTCH_stratSave SCOTCH_NAME_PUBLIC (SCOTCH_stratSave) #define SCOTCH_version SCOTCH_NAME_PUBLIC (SCOTCH_version) #endif /* SCOTCH_RENAME_PUBLIC */ scotch_6.0.9/src/libscotch/library_mesh_io_scot_f.c0000644000302600021200000001701413560013261022666 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_io_scot_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** mesh i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 24 nov 2005 **/ /** to 24 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ MESHGEOMLOADSCOT, meshgeomloadscot, ( \ SCOTCH_Mesh * const meshptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMLOADSCOT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_meshGeomLoadScot (meshptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ MESHGEOMSAVESCOT, meshgeomsavescot, ( \ const SCOTCH_Mesh * const meshptr, \ const SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (meshptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHGEOMSAVESCOT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_meshGeomSaveScot (meshptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/hmesh_order_si.c0000644000302600021200000001032413303015264021151 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_si.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders halo mesh vertices **/ /** using the natural order. **/ /** **/ /** DATES : # Version 4.0 : from : 01 jan 2002 **/ /** to 27 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_SI #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderSi ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr) /*+ Single column-block +*/ { Gnum vnodnum; Gnum ordeval; if (meshptr->m.vnumtax == NULL) { /* If mesh is original mesh (no halo) */ #ifdef SCOTCH_DEBUG_ORDER2 if (meshptr->m.vnodnbr != ordeptr->vnodnbr) { errorPrint ("hmeshOrderSi: invalid permutation bounds"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ for (vnodnum = ordeptr->baseval, ordeval = ordenum; vnodnum < ordeptr->baseval + ordeptr->vnodnbr; vnodnum ++, ordeval ++) { ordeptr->peritab[ordeval] = vnodnum; } } else { /* Mesh is not original mesh */ for (vnodnum = meshptr->m.vnodbas, ordeval = ordenum; vnodnum < meshptr->vnohnnd; vnodnum ++, ordeval ++) { ordeptr->peritab[ordeval] = meshptr->m.vnumtax[vnodnum]; #ifdef SCOTCH_DEBUG_ORDER2 if ((ordeptr->peritab[ordeval] < ordeptr->baseval) || (ordeptr->peritab[ordeval] >= (ordeptr->baseval + ordeptr->vnodnbr))) { errorPrint ("hmeshOrderSi: invalid permutation index"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ } } return (0); } scotch_6.0.9/src/libscotch/graph_diam.h0000644000302600021200000000544513303015264020267 0ustar pelegrinpelegrin/* Copyright 2017 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_diam.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph (pseudo)diameter **/ /** computation functions. **/ /** **/ /** DATES : # Version 6.0 : from : 17 jan 2017 **/ /** to 17 jan 2017 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Auxiliary vertex structure. +*/ typedef struct GraphDiamVertex_ { FiboNode fibodat; /*+ Fibonacci heap node structure +*/ Gnum distval; /*+ Current distance value +*/ } GraphDiamVertex; scotch_6.0.9/src/libscotch/library_dgraph_order_io_block.c0000644000302600021200000000716013560013261024210 0ustar pelegrinpelegrin/* Copyright 2007,2008,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_io_block.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted ordering distributed tree **/ /** building routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.1 : from : 28 may 2008 **/ /** to 28 may 2008 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed ordering */ /* handling routines. */ /* */ /************************************/ /*+ This routine saves the contents of *** the given ordering to the given stream *** on the form of a block ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderSaveBlock ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (dorderSaveBlock ((Dorder *) ordeptr, (Dgraph *) grafptr, stream)); } scotch_6.0.9/src/libscotch/library_order.h0000644000302600021200000000656513303015264021037 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_order.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the library ordering **/ /** structure. **/ /** **/ /** DATES : # Version 3.3 : from : 08 oct 1998 **/ /** to : 08 oct 1998 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 25 dec 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Ordering. +*/ typedef struct LibOrder_ { Order o; /*+ Ordering data +*/ Gnum * permtab; /*+ Direct permutation array +*/ Gnum * peritab; /*+ Inverse permutation array +*/ Gnum * cblkptr; /*+ Pointer to number of column blocks +*/ Gnum * rangtab; /*+ Column block range array +*/ Gnum * treetab; /*+ Separator tree array +*/ } LibOrder; scotch_6.0.9/src/libscotch/graph_induce.c0000644000302600021200000004165413470115365020631 0ustar pelegrinpelegrin/* Copyright 2004,2007-2009,2011,2013-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** subgraph-making functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 17 sep 1998 **/ /** # Version 4.0 : from : 28 nov 2001 **/ /** to 17 apr 2006 **/ /** # Version 5.0 : from : 14 dec 2006 **/ /** to 11 jun 2008 **/ /** # Version 5.1 : from : 01 jan 2009 **/ /** to 01 jan 2009 **/ /** # Version 6.0 : from : 29 mar 2011 **/ /** to 05 apr 2018 **/ /** **/ /** NOTES : # Several algorithms, such as the **/ /** active graph building routine of **/ /** bgraphInit2, assume that, for every **/ /** vertex, remaining edges will be kept **/ /** in the same order as in the original **/ /** graph. This must be enforced. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH #define GRAPH_INDUCE #include "module.h" #include "common.h" #include "graph.h" #include "graph_induce.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine builds the graph induced ** by the original graph and the list of ** selected vertices. ** The induced vnumtab array is the list ** array if the original graph does not have ** a vnumtab, or the proper subset of the ** original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphInduceList ( const Graph * restrict const orggrafptr, const Gnum indvnumnbr, const Gnum * restrict const indvnumtab, Graph * restrict const indgrafptr) { Gnum * restrict orgindxtax; /* Based access to vertex translation array */ Gnum indvertnnd; Gnum indvertnum; /* Number of current vertex in induced graph */ const Gnum * restrict indvnumtax; Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; if (graphInduce2 (orggrafptr, indgrafptr, indvnumnbr) != 0) { errorPrint ("graphInduceList: cannot create induced graph"); return (1); } memCpy (indgrafptr->vnumtax + indgrafptr->baseval, /* Copy vertex number array from list */ indvnumtab, indvnumnbr * sizeof (Gnum)); indvnumtax = indgrafptr->vnumtax; orgindxtax = indgrafptr->edlotax; memSet (orgindxtax + orggrafptr->baseval, ~0, orggrafptr->vertnbr * sizeof (Gnum)); /* Preset index array */ for (indvertnum = indgrafptr->baseval, indvertnnd = indvertnum + indvnumnbr, indedgenbr = 0; /* Fill index array */ indvertnum < indvertnnd; indvertnum ++) { Gnum orgvertnum; orgvertnum = indvnumtax[indvertnum]; orgindxtax[orgvertnum] = indvertnum; /* Mark selected vertices */ indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; } return (graphInduce3 (orggrafptr, indgrafptr, indvnumnbr, indedgenbr)); } /* This routine builds the graph induced ** by the original graph and the vector ** of selected vertices. ** The induced vnumtab array is the list of ** selected vertices if the original graph ** does not have a vnumtab, or the proper ** subset of the original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphInducePart ( const Graph * restrict const orggrafptr, /* Pointer to original graph */ const GraphPart * const orgparttax, /* Based array of vertex partition flags */ const Gnum indvnumnbr, /* Number of vertices in selected part */ const GraphPart indpartval, /* Partition value of vertices to keep */ Graph * restrict const indgrafptr) /* Pointer to induced subgraph */ { Gnum * restrict orgindxtax; /* Based access to vertex translation array */ Gnum orgvertnum; Gnum indvertnum; /* Number of current vertex in induced graph */ Gnum * restrict indvnumtax; Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; if (graphInduce2 (orggrafptr, indgrafptr, indvnumnbr) != 0) { errorPrint ("graphInducePart: cannot create induced graph"); return (1); } orgindxtax = indgrafptr->edlotax; indvnumtax = indgrafptr->vnumtax; for (orgvertnum = indvertnum = orggrafptr->baseval, indedgenbr = 0; /* Fill index array */ orgvertnum < orggrafptr->vertnnd; orgvertnum ++) { if (orgparttax[orgvertnum] == indpartval) { /* If vertex should be kept */ orgindxtax[orgvertnum] = indvertnum; /* Mark selected vertex */ indvnumtax[indvertnum] = orgvertnum; indedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; indvertnum ++; /* One more induced vertex created */ } else orgindxtax[orgvertnum] = ~0; } #ifdef SCOTCH_DEBUG_GRAPH2 if ((indvertnum - indgrafptr->baseval) != indvnumnbr) { errorPrint ("graphInducePart: inconsistent data"); graphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (graphInduce3 (orggrafptr, indgrafptr, indvnumnbr, indedgenbr)); } /* This routine initializes the induced ** graph structure. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int graphInduce2 ( const Graph * restrict const orggrafptr, /* Pointer to original graph */ Graph * restrict const indgrafptr, /* Pointer to induced graph */ const Gnum indvertnbr) /* Number of vertices in induced graph */ { Gnum indedgenbr; /* (Approximate) number of edges in induced graph */ const Gnum baseval = orggrafptr->baseval; /* Fast accesses */ memSet (indgrafptr, 0, sizeof (Graph)); /* Initialize graph fields */ indgrafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; indgrafptr->baseval = baseval; if (orggrafptr->velotax != NULL) { if (memAllocGroup ((void **) (void *) &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), &indgrafptr->velotax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("graphInduce2: out of memory (1)"); return (1); /* Nothing to free because group allocation failed */ } indgrafptr->velotax -= baseval; } else { if (memAllocGroup ((void **) (void *) &indgrafptr->verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indgrafptr->vnumtax, (size_t) ( indvertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("graphInduce2: out of memory (2)"); return (1); } } indgrafptr->verttax -= baseval; /* Adjust base of arrays */ indgrafptr->vnumtax -= baseval; indgrafptr->vertnbr = indvertnbr; indgrafptr->vertnnd = indvertnbr + baseval; indedgenbr = orggrafptr->edgenbr; /* Choose best upper bound on number of edges (avoid multiply overflow) */ if ((orggrafptr->degrmax > 0) && (indvertnbr < (indedgenbr / orggrafptr->degrmax))) indedgenbr = indvertnbr * orggrafptr->degrmax; if (orggrafptr->edlotax != NULL) /* If graph has edge weights */ indedgenbr *= 2; /* Account for edge weights */ if (memAllocGroup ((void *) &indgrafptr->edgetax, (size_t) (indedgenbr * sizeof (Gnum)), /* Pre-allocate space for edgetab (and edlotab) */ &indgrafptr->edlotax, (size_t) (orggrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { /* orgindxtab is at the end of the heap */ errorPrint ("graphInduce2: out of memory (3)"); graphExit (indgrafptr); return (1); } indgrafptr->edgetax -= baseval; /* TRICK: base edge array in case of premature freeing */ indgrafptr->edlotax -= baseval; /* TRICK: use edlotax as return slot for orgindxtax */ return (0); } /* This routine finalizes the building ** of the induced subgraph. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int graphInduce3 ( const Graph * restrict const orggrafptr, /* Pointer to original graph */ Graph * restrict const indgrafptr, /* Pointer to induced graph */ const Gnum indvertnbr, /* Number of vertices in induced graph */ const Gnum indedgenbr) /* (Upper bound of) number of edges in induced graph */ { Gnum orgvertnum; Gnum orgedgenum; Gnum indvertnum; Gnum indvelosum; /* Overall induced vertex load */ Gnum indedlosum; /* Overall induced edge load */ Gnum indedgenum; /* Number of current induced edge */ Gnum * restrict indedgetax; Gnum * restrict indedlotax; const Gnum * restrict const orgverttax = orggrafptr->verttax; const Gnum * restrict const orgvendtax = orggrafptr->vendtax; const Gnum * restrict const orgvelotax = orggrafptr->velotax; const Gnum * restrict const orgvnumtax = orggrafptr->vnumtax; const Gnum * restrict const orgedgetax = orggrafptr->edgetax; const Gnum * restrict const orgedlotax = orggrafptr->edlotax; const Gnum * restrict const orgindxtax = indgrafptr->edlotax; /* TRICK: get orgindxtax from edlotax */ Gnum * restrict const indverttax = indgrafptr->verttax; Gnum * restrict const indvelotax = indgrafptr->velotax; Gnum * restrict const indvnumtax = indgrafptr->vnumtax; if (orgedlotax != NULL) { memOffset ((void *) indgrafptr->edgetax, /* TRICK: compute based offsets from based array */ &indedgetax, (size_t) (indedgenbr * sizeof (Gnum)), &indedlotax, (size_t) (indedgenbr * sizeof (Gnum)), NULL); } else { indedgetax = indgrafptr->edgetax; indedlotax = NULL; } indvelosum = (indvelotax == NULL) ? indgrafptr->vertnbr : 0; indedlosum = 0; for (indvertnum = indedgenum = indgrafptr->baseval; indvertnum < indgrafptr->vertnnd; indvertnum ++) { orgvertnum = indvnumtax[indvertnum]; indverttax[indvertnum] = indedgenum; if (indvelotax != NULL) { /* If graph has vertex weights */ indvelosum += /* Accumulate vertex loads */ indvelotax[indvertnum] = orgvelotax[orgvertnum]; } if (indedlotax != NULL) { /* If graph has edge weights */ for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { if (orgindxtax[orgedgetax[orgedgenum]] != ~0) { /* If edge should be kept */ indedlosum += indedlotax[indedgenum] = orgedlotax[orgedgenum]; indedgetax[indedgenum] = orgindxtax[orgedgetax[orgedgenum]]; indedgenum ++; } } } else { for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { if (orgindxtax[orgedgetax[orgedgenum]] != ~0) { /* If edge should be kept */ indedgetax[indedgenum] = orgindxtax[orgedgetax[orgedgenum]]; indedgenum ++; } } } } indverttax[indvertnum] = indedgenum; /* Mark end of edge array */ indgrafptr->vendtax = indgrafptr->verttax + 1; /* Use compact representation of vertex arrays */ indgrafptr->vertnbr = indvertnum - indgrafptr->baseval; indgrafptr->vertnnd = indvertnum; indgrafptr->velosum = indvelosum; indgrafptr->edgenbr = indedgenum - indgrafptr->baseval; /* Set actual number of edges */ indgrafptr->edlosum = (indedlotax != NULL) ? indedlosum : indgrafptr->edgenbr; indgrafptr->degrmax = orggrafptr->degrmax; /* Induced maximum degree is likely to be that of the original graph */ if (orggrafptr->vnumtax != NULL) { /* Adjust vnumtax */ for (indvertnum = indgrafptr->baseval; indvertnum < indgrafptr->vertnnd; indvertnum ++) indvnumtax[indvertnum] = orgvnumtax[indvnumtax[indvertnum]]; } if (indedlotax != NULL) { /* Re-allocate arrays and delete orgindxtab */ size_t indedlooftval; /* Offset of edge load array with respect to edge array */ indedlooftval = indedlotax - indedgetax; indgrafptr->edgetax = (Gnum *) memRealloc ((indgrafptr->edgetax + indgrafptr->baseval), (indedlooftval + indgrafptr->edgenbr) * sizeof (Gnum)) - indgrafptr->baseval; indgrafptr->edlotax = indgrafptr->edgetax + indedlooftval; /* Use old index into old array as new index */ } else { indgrafptr->edgetax = (Gnum *) memRealloc ((indgrafptr->edgetax + indgrafptr->baseval), indgrafptr->edgenbr * sizeof (Gnum)) - indgrafptr->baseval; indgrafptr->edlotax = NULL; /* Delete link to orgindxtax */ } #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (indgrafptr) != 0) { /* Check graph consistency */ errorPrint ("graphInduce3: inconsistent graph data"); graphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/vdgraph_separate_st.h0000644000302600021200000000703613465315041022224 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the global distributed sepa- **/ /** ration strategy and method tables. **/ /** **/ /** DATES : # Version 5.0 : from : 16 feb 2006 **/ /** to 08 mar 2006 **/ /** # Version 5.1 : from : 05 nov 2007 **/ /** to 05 nov 2007 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum VdgraphSeparateStMethodType_ { VDGRAPHSEPASTMETHBD = 0, /*+ Band strategy +*/ VDGRAPHSEPASTMETHDF, /*+ Diffusion method +*/ VDGRAPHSEPASTMETHML, /*+ Multilevel strategy +*/ VDGRAPHSEPASTMETHSQ, /*+ Sequential strategy +*/ VDGRAPHSEPASTMETHZR, /*+ Zero method +*/ VDGRAPHSEPASTMETHNBR /*+ Number of methods +*/ } VdgraphSeparateStMethodType; /* ** The external declarations. */ extern StratTab vdgraphseparateststratab; /* ** The function prototypes. */ int vdgraphSeparateSt (Vdgraph * const, const Strat * const); scotch_6.0.9/src/libscotch/arch_tleaf.h0000644000302600021200000002217313560005302020256 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_tleaf.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the tree-leaf pseudo-graph target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 16 aug 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 10 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 10 dec 2003 **/ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 24 jun 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_TLEAF_H_STRUCT #define ARCH_TLEAF_H_STRUCT /** The Tree-Leaf graph definitions. **/ typedef struct ArchTleaf_ { Anum termnbr; /*+ Number of terminal domains in architecture +*/ Anum levlnbr; /*+ Number of levels +*/ Anum * sizetab; /*+ Array of cluster sizes, per descending level +*/ Anum * linktab; /*+ Value of extra-cluster link costs +*/ Anum permnbr; /*+ Number of label permutation indices +*/ Anum * permtab; /*+ Label permutation array +*/ Anum * peritab; /*+ Invertse label permutation array +*/ } ArchTleaf; typedef struct ArchTleafDom_ { Anum levlnum; /*+ Current block level +*/ Anum indxmin; /*+ Minimum index in level +*/ Anum indxnbr; /*+ Number of indices in domain +*/ } ArchTleafDom; typedef struct ArchTleafMatch_ { const ArchTleaf * archptr; /*+ Pointer to architecture +*/ ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Anum passnum; /*+ Pass number +*/ Anum levlnum; /*+ Current block level +*/ Anum levlsiz; /*+ Size of current level +*/ Anum vertnbr; /*+ Number of vertices at current stage +*/ } ArchTleafMatch; #endif /* ARCH_TLEAF_H_STRUCT */ /** The Ltree-Leaf architecture definitions. **/ #define ArchLtleaf ArchTleaf #define ArchLtleafDom ArchTleafDom #define ArchLtleafMatch ArchTleafMatch /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_TLEAF_H_PROTO #define ARCH_TLEAF_H_PROTO int archTleafArchLoad (ArchTleaf * restrict const, FILE * restrict const); int archTleafArchSave (const ArchTleaf * const, FILE * restrict const); int archTleafArchFree (ArchTleaf * restrict const); int archTleafMatchInit (ArchTleafMatch * restrict const, const ArchTleaf * restrict const); void archTleafMatchExit (ArchTleafMatch * restrict const); Anum archTleafMatchMate (ArchTleafMatch * restrict const, ArchCoarsenMulti ** restrict const); ArchDomNum archTleafDomNum (const ArchTleaf * const, const ArchTleafDom * const); int archTleafDomTerm (const ArchTleaf * const, ArchTleafDom * restrict const, const ArchDomNum); Anum archTleafDomSize (const ArchTleaf * const, const ArchTleafDom * const); #define archTleafDomWght archTleafDomSize Anum archTleafDomDist (const ArchTleaf * const, const ArchTleafDom * const, const ArchTleafDom * const); int archTleafDomFrst (const ArchTleaf * const, ArchTleafDom * restrict const); int archTleafDomLoad (const ArchTleaf * const, ArchTleafDom * restrict const, FILE * restrict const); int archTleafDomSave (const ArchTleaf * const, const ArchTleafDom * const, FILE * restrict const); int archTleafDomBipart (const ArchTleaf * const, const ArchTleafDom * const, ArchTleafDom * restrict const, ArchTleafDom * restrict const); int archTleafDomIncl (const ArchTleaf * const, const ArchTleafDom * const, const ArchTleafDom * const); #ifdef SCOTCH_PTSCOTCH int archTleafDomMpiType (const ArchTleaf * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ int archLtleafArchLoad (ArchTleaf * restrict const, FILE * restrict const); int archLtleafArchSave (const ArchTleaf * const, FILE * restrict const); #define archLtleafArchFree archTleafArchFree #define archLtleafMatchInit archTleafMatchInit #define archLtleafMatchExit archTleafMatchExit #define archLtleafMatchMate archTleafMatchMate ArchDomNum archLtleafDomNum (const ArchTleaf * const, const ArchTleafDom * const); int archLtleafDomTerm (const ArchTleaf * const, ArchTleafDom * restrict const, const ArchDomNum); #define archLtleafDomSize archTleafDomSize #define archLtleafDomWght archTleafDomWght #define archLtleafDomDist archTleafDomDist #define archLtleafDomFrst archTleafDomFrst #define archLtleafDomLoad archTleafDomLoad #define archLtleafDomSave archTleafDomSave #define archLtleafDomBipart archTleafDomBipart #define archLtleafDomIncl archTleafDomIncl #ifdef SCOTCH_PTSCOTCH #define archLtleafDomMpiType archTleafDomMpiType #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_TLEAF_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/vmesh_separate_ml.h0000644000302600021200000000743413465315041021677 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_ml.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the multi-level node separation **/ /** routines. **/ /** **/ /** DATES : # Version 4.0 : from : 20 feb 2003 **/ /** to 31 aug 2005 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VmeshSeparateMlParam_ { INT vnodnbr; /*+ Minimum number of node vertices +*/ double coarrat; /*+ Coarsening ratio +*/ MeshCoarsenType coartype; /*+ Element matching function type +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ } VmeshSeparateMlParam; /* ** The function prototypes. */ #ifdef VMESH_SEPARATE_ML static int vmeshSeparateMlCoarsen (const Vmesh * restrict const, Vmesh * restrict const, Gnum * restrict * const, const VmeshSeparateMlParam * const); static int vmeshSeparateMlUncoarsen (Vmesh * const, const Vmesh * const, const Gnum * restrict const); static int vmeshSeparateMl2 (Vmesh * const, const VmeshSeparateMlParam * const); #endif /* VMESH_SEPARATE_ML */ int vmeshSeparateMl (Vmesh * const, const VmeshSeparateMlParam * const); scotch_6.0.9/src/libscotch/hmesh_order_hf.h0000644000302600021200000000701213465315041021145 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hf.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Fill **/ /** mesh ordering routine. **/ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to 10 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #define HMESHORDERHFCOMPRAT 1.2L /*+ Compression ratio +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderHfParam_ { INT colmin; /*+ Minimum number of columns +*/ INT colmax; /*+ Maximum number of columns +*/ double fillrat; /*+ Fill-in ratio +*/ } HmeshOrderHfParam; /* ** The function prototypes. */ int hmeshOrderHf (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderHfParam * const); scotch_6.0.9/src/libscotch/wgraph_part_ml.h0000644000302600021200000000741113465315041021202 0ustar pelegrinpelegrin/* Copyright 2007-2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_ml.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** multilevel framework for the vertex **/ /** overlapped graph partitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct WgraphPartMlParam_ { INT coarnbr; /*+ Minimum number of vertices per part +*/ double coarval; /*+ Coarsening ratio +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ } WgraphPartMlParam; /* ** The function prototypes. */ #ifdef WGRAPH_PART_ML static int wgraphPartMlCoarsen (const Wgraph * const, Wgraph * const, GraphCoarsenMulti * restrict * const, const WgraphPartMlParam * const); static int wgraphPartMlUncoarsen (Wgraph * const, const Wgraph * const, const GraphCoarsenMulti * restrict const); static int wgraphPartMl2 (Wgraph * const, const WgraphPartMlParam * const); #endif /* WGRAPH_PART_ML */ int wgraphPartMl (Wgraph * const, const WgraphPartMlParam * const); scotch_6.0.9/src/libscotch/graph_io.c0000644000302600021200000004040113531054375017757 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** input/output functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 mar 1999 **/ /** # Version 4.0 : from : 25 nov 2001 **/ /** to 21 jan 2004 **/ /** # Version 5.0 : from : 13 dec 2006 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 03 aug 2016 **/ /** to 03 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_IO #include "module.h" #include "common.h" #include "graph.h" #include "graph_io.h" /*******************************************/ /* */ /* These routines handle source graph I/O. */ /* */ /*******************************************/ /* This routine loads a source graph from ** the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphLoad ( Graph * restrict const grafptr, /* Graph structure to fill */ FILE * const stream, /* Stream from which to read graph data */ const Gnum baseval, /* Base value (-1 means keep file base) */ const GraphFlag flagval) /* Graph loading flags */ { Gnum edgenum; /* Number of edges really allocated */ Gnum edgennd; Gnum vlblsiz; /* = vertnbr if vertex labels */ Gnum vlblmax; /* Maximum vertex label number */ Gnum velosiz; /* = vertnbr if vertex loads wanted */ Gnum velosum; /* Sum of vertex loads */ Gnum edlosiz; /* = edgenbr if edge loads wanted */ Gnum edlosum; /* Sum of edge loads */ Gnum edgeval; /* Value where to read edge end */ Gnum baseadj; Gnum versval; Gnum degrmax; Gnum propval; char proptab[4]; Gnum vertnum; memSet (grafptr, 0, sizeof (Graph)); if (intLoad (stream, &versval) != 1) { /* Read version number */ errorPrint ("graphLoad: bad input (1)"); return (1); } if (versval != 0) { /* If version not zero */ errorPrint ("graphLoad: old-style graph format no longer supported"); return (1); } if ((intLoad (stream, &grafptr->vertnbr) != 1) || /* Read rest of header */ (intLoad (stream, &grafptr->edgenbr) != 1) || (intLoad (stream, &baseadj) != 1) || (intLoad (stream, &propval) != 1) || (propval < 0) || (propval > 111)) { errorPrint ("graphLoad: bad input (2)"); return (1); } sprintf (proptab, "%3.3d", (int) propval); /* Compute file properties */ proptab[0] -= '0'; /* Vertex labels flag */ proptab[1] -= '0'; /* Edge weights flag */ proptab[2] -= '0'; /* Vertex loads flag */ grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; if (baseval == -1) { /* If keep file graph base */ grafptr->baseval = baseadj; /* Set graph base as file base */ baseadj = 0; /* No base adjustment needed */ } else { /* If prescribed graph base */ grafptr->baseval = baseval; /* Set wanted graph base */ baseadj = baseval - baseadj; /* Update base adjust */ } if (proptab[0] != 0) /* If vertex labels, no base adjust */ baseadj = 0; velosiz = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? grafptr->vertnbr : 0; vlblsiz = (proptab[0] != 0) ? grafptr->vertnbr : 0; edlosiz = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? grafptr->edgenbr : 0; if ((memAllocGroup ((void **) (void *) &grafptr->verttax, (size_t) ((grafptr->vertnbr + 1) * sizeof (Gnum)), &grafptr->velotax, (size_t) (velosiz * sizeof (Gnum)), &grafptr->vlbltax, (size_t) (vlblsiz * sizeof (Gnum)), NULL) == NULL) || (memAllocGroup ((void **) (void *) &grafptr->edgetax, (size_t) (grafptr->edgenbr * sizeof (Gnum)), &grafptr->edlotax, (size_t) (edlosiz * sizeof (Gnum)), NULL) == NULL)) { if (grafptr->verttax != NULL) memFree (grafptr->verttax); errorPrint ("graphLoad: out of memory"); graphFree (grafptr); return (1); } grafptr->vertnnd = grafptr->vertnbr + grafptr->baseval; grafptr->verttax -= grafptr->baseval; grafptr->vendtax = grafptr->verttax + 1; /* Use compact vertex array */ grafptr->velotax = (velosiz != 0) ? (grafptr->velotax - grafptr->baseval) : NULL; grafptr->vlbltax = (vlblsiz != 0) ? (grafptr->vlbltax - grafptr->baseval) : NULL; grafptr->edgetax -= grafptr->baseval; grafptr->edlotax = (edlosiz != 0) ? (grafptr->edlotax - grafptr->baseval) : NULL; vlblmax = grafptr->vertnnd - 1; /* No vertex labels known */ velosum = (grafptr->velotax == NULL) ? grafptr->vertnbr : 0; edlosum = (grafptr->edlotax == NULL) ? grafptr->edgenbr : 0; edgennd = grafptr->edgenbr + grafptr->baseval; degrmax = 0; /* No maximum degree yet */ for (vertnum = edgenum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { Gnum degrval; if (grafptr->vlbltax != NULL) { /* If must read label */ Gnum vlblval; /* Value where to read vertex label */ if (intLoad (stream, &vlblval) != 1) { /* Read label data */ errorPrint ("graphLoad: bad input (3)"); graphFree (grafptr); return (1); } grafptr->vlbltax[vertnum] = vlblval; if (grafptr->vlbltax[vertnum] > vlblmax) /* Get maximum vertex label */ vlblmax = grafptr->vlbltax[vertnum]; } if (proptab[2] != 0) { /* If must read vertex load */ Gnum veloval; /* Value where to read vertex load */ if (intLoad (stream, &veloval) != 1) { /* Read vertex load data */ errorPrint ("graphLoad: bad input (4)"); graphFree (grafptr); return (1); } if (grafptr->velotax != NULL) velosum += grafptr->velotax[vertnum] = veloval; } if (intLoad (stream, °rval) != 1) { /* Read vertex degree */ errorPrint ("graphLoad: bad input (5)"); graphFree (grafptr); return (1); } if (degrmax < degrval) /* Set maximum degree */ degrmax = degrval; grafptr->verttax[vertnum] = edgenum; /* Set index in edge array */ degrval += edgenum; if (degrval > edgennd) { /* Check if edge array overflows */ errorPrint ("graphLoad: invalid arc count (1)"); graphFree (grafptr); return (1); } for ( ; edgenum < degrval; edgenum ++) { if (proptab[1] != 0) { /* If must read edge load */ Gnum edloval; /* Value where to read edge load */ if (intLoad (stream, &edloval) != 1) { /* Read edge load data */ errorPrint ("graphLoad: bad input (6)"); graphFree (grafptr); return (1); } if (grafptr->edlotax != NULL) edlosum += grafptr->edlotax[edgenum] = (Gnum) edloval; } if (intLoad (stream, &edgeval) != 1) { /* Read edge data */ errorPrint ("graphLoad: bad input (7)"); graphFree (grafptr); return (1); } grafptr->edgetax[edgenum] = edgeval + baseadj; } } grafptr->verttax[vertnum] = edgenum; /* Set end of edge array */ if (edgenum != edgennd) { /* Check if number of edges is valid */ errorPrint ("graphLoad: invalid arc count (2)"); graphFree (grafptr); return (1); } grafptr->velosum = velosum; grafptr->edlosum = edlosum; grafptr->degrmax = degrmax; if (grafptr->vlbltax != NULL) { /* If vertex label renaming necessary */ if (graphLoad2 (grafptr->baseval, grafptr->vertnnd, grafptr->verttax, /* Rename edge ends */ grafptr->vendtax, grafptr->edgetax, vlblmax, grafptr->vlbltax) != 0) { errorPrint ("graphLoad: cannot relabel vertices"); graphFree (grafptr); return (1); } } #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphLoad: inconsistent graph data"); graphFree (grafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } int graphLoad2 ( const Gnum baseval, const Gnum vertnnd, const Gnum * const verttax, const Gnum * const vendtax, Gnum * restrict const edgetax, const Gnum vlblmax, const Gnum * const vlbltax) { Gnum vertnum; /* Number of current vertex */ Gnum * restrict indxtab; /* Vertex label/number index table */ if ((indxtab = (Gnum *) memAlloc ((vlblmax + 1) * sizeof (Gnum))) == NULL) { errorPrint ("graphLoad2: out of memory"); return (1); } memSet (indxtab, ~0, (vlblmax + 1) * sizeof (Gnum)); /* Assume labels not used */ for (vertnum = baseval; vertnum < vertnnd; vertnum ++) { if (indxtab[vlbltax[vertnum]] != ~0) { /* If vertex label already used */ errorPrint ("graphLoad2: duplicate vertex label"); memFree (indxtab); return (1); } indxtab[vlbltax[vertnum]] = vertnum; /* Set vertex number index */ } for (vertnum = baseval; vertnum < vertnnd; vertnum ++) { Gnum edgenum; /* Number of current edge */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { if (edgetax[edgenum] > vlblmax) { /* If invalid edge end number */ errorPrint ("graphLoad2: invalid arc end number (1)"); memFree (indxtab); return (1); } if (indxtab[edgetax[edgenum]] == ~0) { /* If unused edge end number */ errorPrint ("graphLoad2: invalid arc end number (2)"); memFree (indxtab); return (1); } edgetax[edgenum] = indxtab[edgetax[edgenum]]; /* Replace label by number */ } } memFree (indxtab); /* Free index array */ return (0); } /* This routine saves a source graph to ** the given stream, in the new-style ** graph format. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphSave ( const Graph * const grafptr, FILE * const stream) { Gnum vertnum; char propstr[4]; /* Property string */ int o; propstr[0] = (grafptr->vlbltax != NULL) ? '1' : '0'; /* Set property string */ propstr[1] = (grafptr->edlotax != NULL) ? '1' : '0'; propstr[2] = (grafptr->velotax != NULL) ? '1' : '0'; propstr[3] = '\0'; if (fprintf (stream, "0\n" GNUMSTRING "\t" GNUMSTRING "\n" GNUMSTRING "\t%3s\n", /* Write file header */ (Gnum) grafptr->vertnbr, (Gnum) grafptr->edgenbr, (Gnum) grafptr->baseval, propstr) == EOF) { errorPrint ("graphSave: bad output (1)"); return (1); } for (vertnum = grafptr->baseval, o = 0; (vertnum < grafptr->vertnnd) && (o == 0); vertnum ++) { Gnum edgenum; if (grafptr->vlbltax != NULL) /* Write vertex label if necessary */ o = (fprintf (stream, GNUMSTRING "\t", (Gnum) grafptr->vlbltax[vertnum]) == EOF); if (grafptr->velotax != NULL) /* Write vertex load if necessary */ o |= (fprintf (stream, GNUMSTRING "\t", (Gnum) grafptr->velotax[vertnum]) == EOF); o |= (fprintf (stream, GNUMSTRING, (Gnum) (grafptr->vendtax[vertnum] - grafptr->verttax[vertnum])) == EOF); /* Write vertex degree */ for (edgenum = grafptr->verttax[vertnum]; (edgenum < grafptr->vendtax[vertnum]) && (o == 0); edgenum ++) { Gnum vertend; o |= (putc ('\t', stream) == EOF); if (grafptr->edlotax != NULL) /* Write edge load if necessary */ o |= (fprintf (stream, GNUMSTRING "\t", (Gnum) grafptr->edlotax[edgenum]) == EOF); vertend = grafptr->edgetax[edgenum]; o |= (fprintf (stream, GNUMSTRING, (Gnum) ((grafptr->vlbltax != NULL) ? grafptr->vlbltax[vertend] : vertend)) == EOF); /* Write edge end */ } o |= (putc ('\n', stream) == EOF); } if (o != 0) errorPrint ("graphSave: bad output (2)"); return (o); } scotch_6.0.9/src/libscotch/common_thread.c0000644000302600021200000003737713560005430021016 0ustar pelegrinpelegrin/* Copyright 2012-2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_thread.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module provides routines to ease **/ /** the use of Posix threads. **/ /** **/ /** DATES : # Version 6.0 : from : 04 jul 2012 **/ /** to 27 apr 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifdef COMMON_PTHREAD_AFFINITY_LINUX #define _GNU_SOURCE #include #endif /* COMMON_PTHREAD_AFFINITY_LINUX */ #define COMMON_THREAD #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" /*****************************/ /* */ /* Thread handling routines. */ /* */ /*****************************/ #ifdef COMMON_PTHREAD /* These routines implement the classical barrier ** operations for systems that do not provide them. */ #ifdef COMMON_PTHREAD_BARRIER int threadBarrierInit ( ThreadBarrier * barrptr, void * attrptr, /* Not used */ int thrdnbr) { barrptr->thrdnbr = thrdnbr; barrptr->thrdcur = 0; barrptr->instnum = 0; pthread_mutex_init (&barrptr->mutedat, NULL); pthread_cond_init (&barrptr->conddat, NULL); return (0); } /* ** */ int threadBarrierDestroy ( ThreadBarrier * barrptr) { pthread_cond_destroy (&barrptr->conddat); pthread_mutex_destroy (&barrptr->mutedat); return (0); } /* ** */ int threadBarrierWait ( ThreadBarrier * barrptr) { int instnum; int thrdcur; int o; pthread_mutex_lock (&barrptr->mutedat); thrdcur = barrptr->thrdcur + 1; instnum = barrptr->instnum; o = 0; /* Assume thread will not be the last one */ if (thrdcur == barrptr->thrdnbr) { barrptr->thrdcur = 0; barrptr->instnum = instnum + 1; pthread_cond_broadcast (&barrptr->conddat); o = PTHREAD_BARRIER_SERIAL_THREAD; /* Last thread returns special value */ } else { barrptr->thrdcur = thrdcur; do pthread_cond_wait (&barrptr->conddat, &barrptr->mutedat); while (barrptr->instnum == instnum); } pthread_mutex_unlock (&barrptr->mutedat); return (o); } #endif /* COMMON_PTHREAD_BARRIER */ /* This routine performs a synchronous ** reduction operation on the given block ** of threads. The routine is called only ** if the two threads in the reduction binary ** tree exist. ** A final, global barrier may be necessary for ** all threads to benefit from the result of the ** reduction operation. ** It returns: ** - void : in all cases. */ void threadReduce ( void * const dataptr, /* Per-thread data block */ void * const contptr, /* Pointer to thread contents */ ThreadReduceFunc const redfptr, /* Pointer to reduction routine */ int rootnum) /* Root of reduction */ { ThreadHeader * restrict const thrdptr = (ThreadHeader *) dataptr; ThreadGroupHeader * restrict const grouptr = thrdptr->grouptr; const size_t datasiz = grouptr->datasiz; const int thrdnbr = grouptr->thrdnbr; const int thrdnum = thrdptr->thrdnum; int thrdnsk; /* Rank of thread in skewed reduction tree */ int thrdmsk; thrdnsk = (thrdnum + thrdnbr - rootnum) % thrdnbr; for (thrdmsk = 1; thrdmsk < thrdnbr; thrdmsk <<= 1) { int thrdesk; /* Skewed rank of end thread */ threadBarrierWait (&grouptr->barrdat); thrdesk = thrdnsk ^ thrdmsk; /* Get skewed rank of end thread */ if (thrdesk < thrdnbr) { /* If end thread exists */ if (thrdesk > thrdnsk) { /* If we are on the receiving side */ int thrdend; int thrddlt; thrdend = (thrdesk + rootnum) % thrdnbr; thrddlt = thrdend - thrdnum; redfptr (dataptr, contptr, (void *) ((byte *) contptr + thrddlt * datasiz)); /* Call reduction routine */ } else /* We are on the sending side */ thrdnsk += thrdnbr; /* Make sure we will no longer work */ } } } /* This routine performs a synchronous ** scan operation on the given block of ** threads. It requires a dummy area for ** storing every other result, hence the ** phase number that is passed to the ** auxiliary routine. ** It returns: ** - void : in all cases. */ void threadScan ( void * const dataptr, /* Per-thread data block */ void * const contptr, /* Pointer to thread contents */ ThreadScanFunc const scafptr) /* Scan function */ { ThreadHeader * restrict const thrdptr = (ThreadHeader *) dataptr; ThreadGroupHeader * restrict const grouptr = thrdptr->grouptr; const size_t datasiz = grouptr->datasiz; const int thrdnbr = grouptr->thrdnbr; const int thrdnum = thrdptr->thrdnum; int thrdmsk; int i; for (thrdmsk = 1, i = 0; thrdmsk < thrdnbr; thrdmsk <<= 1, i ^= 1) ; /* Determine number of steps to go */ if (i != 0) /* If number of steps is odd */ scafptr (dataptr, contptr, NULL, 0); /* Pre-copy to swap area so that it will end at the right place */ for (thrdmsk = 1; thrdmsk < thrdnbr; thrdmsk <<= 1, i ^= 1) { int thrdend; threadBarrierWait (&grouptr->barrdat); /* Barrier on all threads, even those which do not participate */ thrdend = thrdnum - thrdmsk; /* Get rank of end thread */ scafptr (dataptr, contptr, (thrdend >= 0) ? (void *) ((byte *) contptr - thrdmsk * datasiz) : NULL, i); /* If end thread exists, perform scan, else just copy */ } } /* This routine actually launches the ** initial thread routine, and performs ** the necessary joins. It is its task ** to set its affinity mask, as in some ** thread implementations threads can ** only set affinity for themselves. */ static void * threadLaunch2 ( void * dataptr) /* Per-thread data block */ { ThreadHeader * restrict const thrdptr = (ThreadHeader *) dataptr; ThreadGroupHeader * restrict const grouptr = thrdptr->grouptr; const size_t datasiz = grouptr->datasiz; const int thrdnbr = grouptr->thrdnbr; const int thrdnum = thrdptr->thrdnum; int thrdmsk; int o; #ifdef COMMON_PTHREAD_AFFINITY_LINUX cpu_set_t cpuset; #endif /* COMMON_PTHREAD_AFFINITY_LINUX */ #ifdef COMMON_PTHREAD_AFFINITY_LINUX CPU_ZERO (&cpuset); CPU_SET (thrdnum, &cpuset); /* Thread sets its own affinity */ pthread_setaffinity_np (thrdptr->thidval, sizeof (cpu_set_t), &cpuset); #endif /* COMMON_PTHREAD_AFFINITY_LINUX */ o = grouptr->stafptr (dataptr); /* Call start routine */ for (thrdmsk = 1; thrdmsk < thrdnbr; thrdmsk <<= 1) { volatile ThreadHeader * restrict thrdtmp; /* Pointer to thread header of other thread */ int thrdend; thrdend = thrdnum ^ thrdmsk; /* Get rank of end thread */ if (thrdend >= thrdnbr) /* If end thread does not exist */ continue; thrdtmp = (ThreadHeader *) ((byte *) dataptr + grouptr->datasiz * (thrdend - thrdnum)); while (thrdtmp->thrdnum == -1) ; /* Spin-lock until end thread created */ if (thrdnum > thrdend) { /* If we are on the sending side */ if (thrdtmp->thrdnum < 0) { /* If end thread could not be created */ pthread_detach (thrdptr->thidval); /* Detach since nobody will join for us */ o = 1; /* Set (useless) error return value */ } pthread_exit ((void *) (intptr_t) o); /* Exit anyway */ } else { if (thrdtmp->thrdnum < 0) /* If end thread could not be created */ o = 1; /* Set error return value */ else { void * o2; pthread_join (thrdtmp->thidval, &o2); /* Get return value from end thread */ o |= (int) (intptr_t) o2; /* Amalgamate return status */ if ((grouptr->joifptr != NULL) && /* If we have something to do */ (o == 0)) /* And if no error in both threads */ o |= grouptr->joifptr (dataptr, (void *) ((byte *) dataptr + thrdmsk * datasiz)); /* Call join routine */ } } } return ((void *) (intptr_t) o); /* Thread of rank 0 returns global status */ } /* This routine launches the given ** number of threads that will run the ** given start routine, and will end up ** calling the given join routine in a ** binary tree fashion. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int threadLaunch ( void * const gdatptr, /* Pointer to thread group data block */ void * const tdattab, /* Array of thread data */ const size_t datasiz, /* Size of individual data array cell */ ThreadLaunchStartFunc stafptr, /* Pointer to start routine */ ThreadLaunchJoinFunc joifptr, /* Pointer to join routine */ const int thrdnbr, /* Number of threads to run (including current) */ const int flagval) /* Flag for thread operation data structures */ { ThreadGroupHeader * const grouptr = (ThreadGroupHeader *) gdatptr; ThreadHeader * thrdptr; int thrdnum; byte * dataptr; void * o; grouptr->flagval = flagval; grouptr->datasiz = datasiz; grouptr->thrdnbr = thrdnbr; grouptr->stafptr = stafptr; grouptr->joifptr = joifptr; if ((flagval & THREADHASBARRIER) != 0) { if (threadBarrierInit (&grouptr->barrdat, NULL, thrdnbr) != 0) { errorPrint ("threadLaunch: cannot initialize barrier (1)"); return (1); } } for (thrdnum = 0, dataptr = (byte *) tdattab; /* Prepare threads for launching */ thrdnum < thrdnbr; thrdnum ++, dataptr += datasiz) { ThreadHeader * thrdptr; thrdptr = (ThreadHeader *) dataptr; thrdptr->thrdnum = -1; /* Set threads as not yet launched */ } __sync_synchronize (); /* Full memory barrier */ for (thrdnum = 1, dataptr = (byte *) tdattab + datasiz; /* Launch threads from 1 to (thrdnbr - 1) */ thrdnum < thrdnbr; thrdnum ++, dataptr += datasiz) { ThreadHeader * thrdptr; thrdptr = (ThreadHeader *) dataptr; thrdptr->grouptr = gdatptr; thrdptr->thrdnum = thrdnum; if (pthread_create (&thrdptr->thidval, NULL, threadLaunch2, (void *) dataptr) != 0) { errorPrint ("threadLaunch: cannot launch thread (%d)", thrdnum); return (1); } } thrdptr = (ThreadHeader *) tdattab; /* Run thread 0 */ thrdptr->grouptr = gdatptr; thrdptr->thidval = pthread_self (); thrdptr->thrdnum = 0; o = threadLaunch2 (tdattab); if ((flagval & THREADHASBARRIER) != 0) /* Free allocated resources */ threadBarrierDestroy (&grouptr->barrdat); return ((int) (intptr_t) o); } #else /* COMMON_PTHREAD */ /**********************************/ /* */ /* Thread handling routine stubs. */ /* */ /**********************************/ void threadReduce ( void * const dataptr, /* Per-thread data block */ void * const contptr, /* Pointer to thread contents */ ThreadReduceFunc const redfptr, /* Pointer to reduction routine */ int rootnum) /* Root of reduction */ { errorPrint ("threadReduce: Not compiled with COMMON_PTHREAD"); } void threadScan ( void * const dataptr, /* Per-thread data block */ void * const contptr, /* Pointer to thread contents */ ThreadScanFunc const scafptr) /* Scan function */ { errorPrint ("threadScan: Not compiled with COMMON_PTHREAD"); } int threadLaunch ( void * const gdatptr, /* Pointer to thread group data block */ void * const tdattab, /* Array of thread data */ const size_t datasiz, /* Size of individual data array cell */ ThreadLaunchStartFunc stafptr, /* Pointer to start routine */ ThreadLaunchJoinFunc joifptr, /* Pointer to join routine */ const int thrdnbr, /* Number of threads to run (including current) */ const int flagval) /* Flag for thread operation data structures */ { errorPrint ("threadLaunch: Not compiled with COMMON_PTHREAD"); return (1); } #endif /* COMMON_PTHREAD */ scotch_6.0.9/src/libscotch/hmesh_order_hx.h0000644000302600021200000000663313465315041021177 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hx.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the halo mesh block Approxi- **/ /** mate (Multiple) Minimum Degree and Fill **/ /** ordering routines. **/ /** **/ /** DATES : # Version 4.0 : from : 09 dec 2003 **/ /** to 09 dec 2003 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #define HMESHORDERHXHASHPRIME 17 /* Prime number */ /* ** The type and structure definitions. */ /*+ A table made of such elements is used to compute the external degree of non-halo vertices. +*/ typedef struct HmeshOrderHxHash_ { Gnum vertnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum vertend; /*+ End vertex number in mesh +*/ } HmeshOrderHxHash; /* ** The function prototypes. */ int hmeshOrderHxFill (const Hmesh * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); scotch_6.0.9/src/libscotch/library_graph_io_chac.c0000644000302600021200000001003613560013261022451 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_chac.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the Chaco **/ /** geometry and graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 28 nov 2003 **/ /** to 19 jan 2004 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to 27 apr 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "scotch.h" /*************************************/ /* */ /* These routines are the C API for */ /* the Chaco graph and geometry */ /* handling routines. */ /* */ /*************************************/ /*+ This routine loads the given opaque geom *** structure with the data of the given stream. *** - 0 : if loading succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomLoadChac ( SCOTCH_Graph * restrict const grafptr, SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomLoadChac ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } /*+ This routine saves the contents of the given *** opaque graph structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_graphGeomSaveChac ( const SCOTCH_Graph * restrict const grafptr, const SCOTCH_Geom * restrict const geomptr, FILE * const filegrfptr, FILE * const filegeoptr, const char * const dataptr) { return (graphGeomSaveChac ((Graph *) grafptr, (Geom *) geomptr, filegrfptr, filegeoptr, dataptr)); } scotch_6.0.9/src/libscotch/kgraph_map_df.c0000644000302600021200000002126613470115365020760 0ustar pelegrinpelegrin/* Copyright 2010-2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_df.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a k-way partition **/ /** of the given mapping graph by applying **/ /** a diffusion method to what is assumed **/ /** to be a band graph. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ /** to : 04 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_DF #ifdef SCOTCH_PTHREAD #define KGRAPHMAPDFTHREAD #endif /* SCOTCH_PTHREAD */ #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_map_df.h" /************************/ /* */ /* The sorting routine. */ /* */ /************************/ /* This routine sorts an array of KgraphMapDfVertex ** values in descending order by their amount of liquid. ** By nature of the sorting algorithm, data are left in ** place in case of equality. Therefore, the original ** part of the vertex, which is put first in the sort ** array during the diffusion process, is always preserved ** when all liquid amounts are equal. ** It returns: ** - VOID : in all cases. */ #define INTSORTQUAL static #define INTSORTNAME kgraphMapDfSort #define INTSORTSIZE (sizeof (KgraphMapDfSort)) #define INTSORTSWAP(p,q) do { \ KgraphMapDfSort t; \ t = *((KgraphMapDfSort *) (p)); \ *((KgraphMapDfSort *) (p)) = *((KgraphMapDfSort *) (q)); \ *((KgraphMapDfSort *) (q)) = t; \ } while (0) #define INTSORTCMP(p,q) (((KgraphMapDfSort *) (p))->diffval > ((KgraphMapDfSort *) (q))->diffval) #include "common_sort.c" #undef INTSORTQUAL #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /********************************/ /* */ /* The sequential loop routine. */ /* */ /********************************/ #define KGRAPHMAPDFLOOPNAME kgraphMapDfSeq #include "kgraph_map_df_loop.c" #undef KGRAPHMAPDFLOOPNAME /******************************/ /* */ /* The threaded loop routine. */ /* */ /******************************/ #ifdef KGRAPHMAPDFTHREAD #define KGRAPHMAPDFLOOPTHREAD #define KGRAPHMAPDFLOOPNAME kgraphMapDfThr #include "kgraph_map_df_loop.c" #undef KGRAPHMAPDFLOOPNAME #undef KGRAPHMAPDFLOOPTHREAD #endif /* KGRAPHMAPDFTHREAD */ /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a k-way partition ** by diffusion across what is assumed ** to be a k-way band graph. ** It returns: ** - 0 : if the k-partition could be computed. ** - !0 : on error. */ int kgraphMapDf ( Kgraph * restrict const grafptr, /*+ Active graph +*/ const KgraphMapDfParam * const paraptr) /*+ Method parameters +*/ { KgraphMapDfData loopdat; /* Diffusion loop data */ Gnum vertnbr; Gnum vancnbr; Gnum domnnbr; #ifdef KGRAPHMAPDFTHREAD /* Threads can be accepted even when SCOTCH_DETERMINISTIC set */ int thrdnbr; #endif /* KGRAPHMAPDFTHREAD */ domnnbr = grafptr->m.domnnbr; vertnbr = grafptr->s.vertnbr; vancnbr = vertnbr - domnnbr; if (memAllocGroup ((void **) (void *) &loopdat.vanctab, (size_t) (domnnbr * sizeof (float)), &loopdat.valotab, (size_t) (domnnbr * sizeof (Gnum)), &loopdat.velstax, (size_t) (vertnbr * sizeof (Gnum)), &loopdat.difntax, (size_t) (vertnbr * sizeof (KgraphMapDfVertex)), &loopdat.difotax, (size_t) (vertnbr * sizeof (KgraphMapDfVertex)), NULL) == NULL) { errorPrint ("kgraphMapDf: out of memory (1)"); return (1); } loopdat.grafptr = grafptr; loopdat.velstax -= grafptr->s.baseval; loopdat.difntax -= grafptr->s.baseval; loopdat.difotax -= grafptr->s.baseval; loopdat.passnbr = paraptr->passnbr; #ifdef KGRAPHMAPDFTHREAD /* Threads can be accepted even when SCOTCH_DETERMINISTIC set */ thrdnbr = SCOTCH_PTHREAD_NUMBER; loopdat.abrtval = 0; /* No one wants to abort yet */ if (thrdnbr > 1) { KgraphMapDfThread * restrict thrdtab; int thrdnum; Gnum vertbas; Anum domnbas; if ((thrdtab = memAlloc (thrdnbr * sizeof (KgraphMapDfThread))) == NULL) { errorPrint ("kgraphMapDf: out of memory (2)"); memFree (loopdat.vanctab); return (1); } for (thrdnum = 0, vertbas = grafptr->s.baseval, domnbas = 0; thrdnum < thrdnbr; thrdnum ++) { thrdtab[thrdnum].vertbas = vertbas; thrdtab[thrdnum].vertnnd = vertbas += DATASIZE (vancnbr, thrdnbr, thrdnum); thrdtab[thrdnum].domnbas = domnbas; thrdtab[thrdnum].domnnnd = domnbas += DATASIZE (domnnbr, thrdnbr, thrdnum); } threadLaunch (&loopdat, thrdtab, sizeof (KgraphMapDfThread), (ThreadLaunchStartFunc) kgraphMapDfThr, (ThreadLaunchJoinFunc) NULL, thrdnbr, THREADCANBARRIER); memFree (thrdtab); /* Free group leader */ } else #endif /* KGRAPHMAPDFTHREAD */ { KgraphMapDfThread thrddat; thrddat.thrddat.grouptr = &loopdat; thrddat.vertbas = grafptr->s.baseval; thrddat.vertnnd = vertnbr + grafptr->s.baseval - domnnbr; thrddat.domnbas = 0; thrddat.domnnnd = domnnbr; #ifdef KGRAPHMAPDFTHREAD thrddat.thrddat.thrdnum = 0; /* Thread is thread 0 of 1 */ #endif /* KGRAPHMAPDFTHREAD */ kgraphMapDfSeq (&thrddat); } memFree (loopdat.vanctab); /* Free group leader */ kgraphFron (grafptr); kgraphCost (grafptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (grafptr) != 0) { errorPrint ("kgraphMapDf: internal error"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/mesh_io_scot.h0000644000302600021200000000556513465315041020657 0ustar pelegrinpelegrin/* Copyright 2004,2007,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_io_scot.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the Scotch graph format **/ /** module. **/ /** **/ /** DATES : # Version 6.0 : from : 09 apr 2019 **/ /** to 09 apr 2019 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ The sort structure, used to sort graph vertices by label. Field labl is first because of intSort2asc1. +*/ typedef struct MeshGeomScotSort_ { Gnum labl; /*+ Node label: FIRST +*/ Gnum num; /*+ Node number +*/ } MeshGeomScotSort; scotch_6.0.9/src/libscotch/dorder_io.c0000644000302600021200000002507413303015264020135 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 27 apr 2006 **/ /** to 13 jun 2008 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to 11 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "comm.h" #include "dgraph.h" #include "dorder.h" #include "order.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine saves a distributed ordering. ** The distributed graph structure is provided ** to access the distribution of vertex labels, ** whenever present. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dorderSave ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, FILE * restrict const stream) { Gnum * restrict peritab; Gnum * restrict permtab; Gnum * restrict vlbltax; int procglbnbr; int reduloctab[3]; int reduglbtab[3]; int protnum; if (stream != NULL) { /* If file provided */ reduloctab[0] = 1; /* This process is the root */ reduloctab[1] = ordeptr->proclocnum; /* Get its rank */ } else { reduloctab[0] = /* This process is not the root */ reduloctab[1] = 0; } reduloctab[2] = (grafptr->vlblloctax != NULL) ? 1 : 0; /* See if vertex labels provided */ if (MPI_Allreduce (reduloctab, reduglbtab, 3, MPI_INT, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (1)"); return (1); } if (reduglbtab[0] != 1) { errorPrint ("dorderSave: should have only one root"); return (1); } MPI_Comm_size (ordeptr->proccomm, &procglbnbr); if ((reduglbtab[2] != 0) && (reduglbtab[2] != procglbnbr)) { errorPrint ("dorderSave: inconsistent parameters"); return (1); } protnum = (int) reduglbtab[1]; /* Get rank of root process */ reduloctab[0] = 0; permtab = NULL; if (protnum == ordeptr->proclocnum) { Gnum vlblnbr; vlblnbr = (grafptr->vlblloctax != NULL) ? ordeptr->vnodglbnbr : 0; if (memAllocGroup ((void **) (void *) &permtab, (size_t) (ordeptr->vnodglbnbr * sizeof (Gnum)), &peritab, (size_t) (ordeptr->vnodglbnbr * sizeof (Gnum)), &vlbltax, (size_t) (vlblnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dorderSave: out of memory"); #ifdef SCOTCH_DEBUG_DORDER1 reduloctab[0] = 1; #else /* SCOTCH_DEBUG_DORDER1 */ return (1); #endif /* SCOTCH_DEBUG_DORDER1 */ } } #ifdef SCOTCH_DEBUG_DORDER1 /* This communication cannot be covered by a useful one */ if (MPI_Bcast (&reduloctab[0], 1, MPI_INT, protnum, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (2)"); if (permtab != NULL); memFree (permtab); /* Free group leader */ return (1); } if (reduloctab[0] != 0) return (1); #endif /* SCOTCH_DEBUG_DORDER1 */ if (grafptr->vlblloctax != NULL) { if (commGatherv (grafptr->vlblloctax + grafptr->baseval, grafptr->vertlocnbr, GNUM_MPI, vlbltax, grafptr->proccnttab, grafptr->procdsptab, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (3)"); return (1); } } if (protnum == ordeptr->proclocnum) { Gnum vertnum; for (vertnum = 0; vertnum < ordeptr->vnodglbnbr; ) { /* Till all inverse permutation indices collected */ const DorderLink * linkptr; for (linkptr = ordeptr->linkdat.nextptr; linkptr != &ordeptr->linkdat; linkptr = linkptr->nextptr) { const DorderCblk * cblkptr; cblkptr = (DorderCblk *) linkptr; /* TRICK: FIRST */ if (((cblkptr->typeval & DORDERCBLKLEAF) != 0) && (cblkptr->data.leaf.ordelocval == vertnum) && /* If column block fragment starts at proper index */ (cblkptr->data.leaf.vnodlocnbr > 0)) { /* And is not an empty local block with relevent data elsewhere */ memCpy (peritab + vertnum, cblkptr->data.leaf.periloctab, cblkptr->data.leaf.vnodlocnbr * sizeof (Gnum)); vertnum += cblkptr->data.leaf.vnodlocnbr; break; } } if (linkptr == &ordeptr->linkdat) { /* If fragment not found locally */ MPI_Status statdat; int recvnbr; if (MPI_Bcast (&vertnum, 1, GNUM_MPI, protnum, ordeptr->proccomm) != MPI_SUCCESS) { /* Broadcast missing fragment */ errorPrint ("dorderSave: communication error (4)"); memFree (permtab); /* Free group leader */ return (1); } if (MPI_Recv (peritab + vertnum, ordeptr->vnodglbnbr - vertnum, GNUM_MPI, MPI_ANY_SOURCE, DORDERTAGPERI, ordeptr->proccomm, &statdat) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (5)"); return (1); } MPI_Get_count (&statdat, GNUM_MPI, &recvnbr); vertnum += recvnbr; } } vertnum = -1; /* Indicate termination */ if (MPI_Bcast (&vertnum, 1, GNUM_MPI, protnum, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (6)"); memFree (permtab); /* Free group leader */ return (1); } if (fprintf (stream, GNUMSTRING "\n", (Gnum) ordeptr->vnodglbnbr) == EOF) { errorPrint ("dorderSave: bad output (1)"); memFree (permtab); return (1); } orderPeri (peritab, ordeptr->baseval, ordeptr->vnodglbnbr, permtab, ordeptr->baseval); /* Compute direct permutation */ if (grafptr->vlblloctax != NULL) { /* If ordering has label array */ vlbltax -= ordeptr->baseval; /* Base label array */ for (vertnum = 0; vertnum < ordeptr->vnodglbnbr; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) vlbltax[vertnum + ordeptr->baseval], (Gnum) vlbltax[permtab[vertnum]]) == EOF) { errorPrint ("dorderSave: bad output (2)"); memFree (permtab); return (1); } } } else { for (vertnum = 0; vertnum < ordeptr->vnodglbnbr; vertnum ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) (vertnum + ordeptr->baseval), (Gnum) permtab[vertnum]) == EOF) { errorPrint ("dorderSave: bad output (3)"); memFree (permtab); return (1); } } } memFree (permtab); /* Free group leader */ } else { while (1) { const DorderLink * linkptr; Gnum vertnum; if (MPI_Bcast (&vertnum, 1, GNUM_MPI, protnum, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (7)"); return (1); } if (vertnum == -1) /* If asked to quit */ break; /* Finish */ for (linkptr = ordeptr->linkdat.nextptr; linkptr != &ordeptr->linkdat; linkptr = linkptr->nextptr) { const DorderCblk * cblkptr; cblkptr = (DorderCblk *) linkptr; /* TRICK: FIRST */ if (((cblkptr->typeval & DORDERCBLKLEAF) != 0) && /* If matching column block fragment found */ (cblkptr->data.leaf.ordelocval == vertnum) && (cblkptr->data.leaf.vnodlocnbr > 0)) { /* And is not an empty local block with relevent data elsewhere */ if (MPI_Send (cblkptr->data.leaf.periloctab, cblkptr->data.leaf.vnodlocnbr, GNUM_MPI, protnum, DORDERTAGPERI, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderSave: communication error (8)"); return (1); } break; } } } } return (0); } scotch_6.0.9/src/libscotch/hdgraph.h0000644000302600021200000001250313466077161017620 0ustar pelegrinpelegrin/* Copyright 2007,2010,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source halo distributed graph **/ /** structure. **/ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 16 jun 2007 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 01 may 2019 **/ /** **/ /************************************************************/ #define HDGRAPH_H /* ** The defines. */ /*+ Graph option flags. +*/ #define HDGRAPHFREEVHND 0x0400 /* Free vnhdtab array */ #define HDGRAPHFREETABS (DGRAPHFREETABS | HDGRAPHFREEVHND) /* ** The type and structure definitions. */ /*+ Halo distributed graph structure. In order to keep efficiency, distributed halo graphs are not considered as regular graphs as sequential halo graphs were. Halo distributed graphs have a compact vertex array, with halo edges added at the end of each vertex sub-array. They are not visible when considering the vertlocnbr, vertloctax (which is in fact most often of size vhallocnbr + 1 when the graph is compact, as in this case we have vnhdloctax = vertloctax + 1) and vendloctax (which is of size vertlocnbr) of the embedded distributed graph, but can be accessed through vendloctax and vnhdloctax. Halo vertex ends are stored only in edgeloctax, not in edgegsttax, except when graph has only an edgegsttax and no edgeloctax. Since halo vertices have no real existence in distributed graphs, they are simply numbered from baseval. They are converted into real vertices when a distributed halo graph is turned into a sequential halo graph. */ typedef struct Hdgraph_ { Dgraph s; /*+ Source distributed graph +*/ Gnum vhallocnbr; /*+ Local number of halo end vertices +*/ Gnum * vhndloctax; /*+ End vertex array including halo vertex indices +*/ Gnum ehallocnbr; /*+ Local number of halo edges +*/ Gnum levlnum; /*+ Nested dissection level +*/ } Hdgraph; /* ** The function prototypes. */ int hdgraphInit (Hdgraph * const); void hdgraphExit (Hdgraph * const); void hdgraphFree (Hdgraph * const); int hdgraphFold (const Hdgraph *, const int, Hdgraph * const); int hdgraphFold2 (const Hdgraph *, const int, Hdgraph * const, MPI_Comm); int hdgraphCheck (const Hdgraph *); #ifdef HGRAPH_H int hdgraphGather (Hdgraph *, Hgraph *); #endif /* HGRAPH_H */ int hdgraphInduceList (Hdgraph * restrict const, const Gnum, const Gnum * restrict const, Hdgraph * restrict const); scotch_6.0.9/src/libscotch/library_dgraph_coarsen_f.c0000644000302600021200000000705313560013261023174 0ustar pelegrinpelegrin/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_coarsen_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed graph coarsening routine of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHCOARSEN, dgraphcoarsen, ( \ SCOTCH_Dgraph * const finegrafptr, \ const SCOTCH_Num * const coarnbrptr, \ double * const coarrat, \ const SCOTCH_Num * const flagval, \ SCOTCH_Dgraph * const coargrafptr, \ SCOTCH_Num * const multloctab, \ int * const revaptr), \ (finegrafptr, coarnbrptr, coarrat, flagval, coargrafptr, multloctab, revaptr)) { *revaptr = SCOTCH_dgraphCoarsen (finegrafptr, *coarnbrptr, *coarrat, *flagval, coargrafptr, multloctab); } scotch_6.0.9/src/libscotch/library_graph_coarsen.c0000644000302600021200000001642413560013261022525 0ustar pelegrinpelegrin/* Copyright 2011,2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the graph **/ /** coarsening routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 06 sep 2011 **/ /** to 23 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "graph_coarsen.h" #include "scotch.h" /*********************************/ /* */ /* This routine is the C API for */ /* the graph coarsening routine. */ /* */ /*********************************/ /*+ This routine creates a coarse graph from the *** given fine graph, unless the coarse graph is *** smaller than some threshold size or the *** coarsening ratio is above some other threshold. *** If the coarse graph is created, a coarse-to-fine *** vertex array is created, that contains a pair of *** fine indices for each coarse index. The contents *** of the Scotch internal array are copied to the *** array provided by the user. *** It returns: *** - 0 : if the graph has been coarsened. *** - 1 : if the graph could not be coarsened. *** - 2 : on error. +*/ int SCOTCH_graphCoarsen ( const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ const SCOTCH_Num coarvertnbr, /* Minimum number of coarse vertices */ const double coarval, /* Maximum contraction ratio */ const SCOTCH_Num flagval, /* Flag value */ SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ SCOTCH_Num * restrict const coarmulttab) /* Pointer to multinode array to fill */ { GraphCoarsenMulti * restrict coarmultptr; /* Un-based pointer to created, grouped multinode array */ intRandInit (); /* Check that random number generator is initialized */ coarmultptr = (GraphCoarsenMulti *) coarmulttab; /* Indicate multinode array is user-provided */ return (graphCoarsen ((const Graph * restrict const) finegrafptr, (Graph * restrict const) coargrafptr, NULL, &coarmultptr, coarvertnbr, coarval, flagval & GRAPHCOARSENNOMERGE, NULL, NULL, 0, NULL)); } /*+ This routine computes a matching of a (coarse) *** graph, unless the would-be coarse graph is smaller *** than some threshold size or the coarsening ratio is *** above some other threshold. *** If the matching is computed, both a multinode and *** a coarse-to-fine vertex arrays are created. *** It returns: *** - 0 : if the matching has been coarsened. *** - 1 : if the graph could not be matched. *** - 2 : on error. +*/ int SCOTCH_graphCoarsenMatch ( const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ SCOTCH_Num * restrict const coarvertptr, /* Minimum number of coarse vertices */ const double coarval, /* Maximum contraction ratio */ const SCOTCH_Num flagval, /* Flag value */ SCOTCH_Num * restrict const finematetab) /* Mating array to fill */ { Gnum * restrict finemateptr; intRandInit (); /* Check that random number generator is initialized */ finemateptr = finematetab; /* Slot will not be modified but preserve "const" of finematetab */ return (graphCoarsenMatch ((const Graph * restrict const) finegrafptr, &finemateptr, coarvertptr, coarval, flagval & GRAPHCOARSENNOMERGE, NULL, NULL, 0, NULL)); } /*+ This routine creates a coarse graph from the *** given fine graph and the provided multinode *** array. *** It returns: *** - 0 : if the graph has been coarsened. *** - 1 : on error. +*/ int SCOTCH_graphCoarsenBuild ( const SCOTCH_Graph * restrict const finegrafptr, /* Fine graph structure to fill */ const SCOTCH_Num coarvertnbr, /* Number of coarse vertices */ SCOTCH_Num * restrict const finematetab, /* Mating array */ SCOTCH_Graph * restrict const coargrafptr, /* Coarse graph */ SCOTCH_Num * restrict const coarmulttab) /* Pointer to user-provided multinode array */ { GraphCoarsenMulti * restrict coarmultptr; /* Un-based pointer to created, grouped multinode array */ intRandInit (); /* Check that random number generator is initialized */ coarmultptr = (GraphCoarsenMulti *) coarmulttab; /* Indicate multinode array is user-provided */ return (graphCoarsenBuild ((const Graph * restrict const) finegrafptr, (Graph * restrict const) coargrafptr, finematetab, &coarmultptr, coarvertnbr)); } scotch_6.0.9/src/libscotch/dorder_gather.c0000644000302600021200000005547113303015264021004 0ustar pelegrinpelegrin/* Copyright 2007,2008,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_gather.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 19 jul 2007 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 28 sep 2008 **/ /** # Version 6.0 : from : 10 oct 2013 **/ /** to 10 oct 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "order.h" #include "dorder.h" #include "dorder_gather.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This function gathers the pieces of ** a distributed ordering to build a ** centralized ordering. ** It returns: ** - 0 : if ordering data are consistent. ** - !0 : on error. */ DGRAPHALLREDUCEMAXSUMOP (1, 1) int dorderGather ( const Dorder * restrict const dordptr, Order * restrict const cordptr) { Gnum leaflocnbr; int leafrcvnbr; DorderGatherLeaf * restrict leafrcvtab; int leafsndnbr; /* "int" since used as count in MPI_Gatherv */ DorderGatherLeaf * restrict leafsndtab; Gnum * restrict perircvtab; int perisndnbr; /* "int" since used as count in MPI_Gatherv */ Gnum * restrict perisndtab; int * restrict recvcnttab; int * restrict recvdsptab; const DorderLink * restrict linklocptr; Gnum vnodlocnbr; int procglbnbr; int protnum; Gnum reduloctab[2]; Gnum reduglbtab[2]; int cheklocval; int chekglbval; #ifdef SCOTCH_DEBUG_DORDER2 if ((DORDERCBLKNEDI == 0) || (DORDERCBLKNEDI != ORDERCBLKNEDI)) { errorPrint ("dorderGather: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ for (linklocptr = dordptr->linkdat.nextptr, leaflocnbr = vnodlocnbr = 0; /* For all nodes in local ordering structure */ linklocptr != &dordptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) { /* If node is leaf */ leaflocnbr ++; /* One more leaf fragment */ vnodlocnbr += cblklocptr->data.leaf.vnodlocnbr; /* And more node vertices */ } #ifdef SCOTCH_DEBUG_DORDER2 else if (cblklocptr->typeval != DORDERCBLKNEDI) { errorPrint ("dorderGather: invalid parameters"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } MPI_Comm_size (dordptr->proccomm, &procglbnbr); if (cordptr != NULL) { Gnum vnodglbnbr; reduloctab[0] = (Gnum) dordptr->proclocnum; reduloctab[1] = 1; vnodglbnbr = 2 * procglbnbr; /* TRICK: use perircvtab array as gather array */ if (vnodglbnbr < (dordptr->vnodglbnbr - vnodlocnbr)) /* But should receive permutation indices too! */ vnodglbnbr = dordptr->vnodglbnbr - vnodlocnbr; /* TRICK: root will not receive from itself */ if (memAllocGroup ((void **) (void *) &recvcnttab, (size_t) (procglbnbr * sizeof (int)), &recvdsptab, (size_t) (procglbnbr * sizeof (int)), &perircvtab, (size_t) (vnodglbnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dorderGather: out of memory (1)"); reduloctab[0] = (Gnum) procglbnbr; /* Indicate memory error */ } } else { recvcnttab = NULL; /* Prepare possible freeing on error */ reduloctab[0] = reduloctab[1] = 0; } if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 1, 1, dordptr->proccomm) != 0) { errorPrint ("dorderGather: communication error (1)"); return (1); } if (reduglbtab[1] != 1) { errorPrint ("dorderGather: should have only one root"); reduglbtab[0] = (Gnum) procglbnbr; } if (reduglbtab[0] >= (Gnum) procglbnbr) { if (recvcnttab != NULL) memFree (recvcnttab); return (1); } protnum = (int) reduglbtab[0]; reduloctab[0] = leaflocnbr; reduloctab[1] = vnodlocnbr; if (MPI_Gather (reduloctab, 2, GNUM_MPI, perircvtab, 2, GNUM_MPI, protnum, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGather: communication error (2)"); return (1); } if (dordptr->proclocnum == protnum) { int procnum; perircvtab[2 * protnum] = 0; /* TRICK: root will not send to nor receive from itself to avoid unnecessary memory copy */ for (procnum = 0, leafrcvnbr = 0; procnum < procglbnbr; procnum ++) { recvdsptab[procnum] = leafrcvnbr; recvcnttab[procnum] = (int) (perircvtab[2 * procnum] * 2); /* TRICK: DorderGatherLeaf structures are made of 2 GNUM_MPI fields */ leafrcvnbr += recvcnttab[procnum]; } leafrcvnbr /= 2; /* TRICK: restore real number of leaf structures to be received */ leafsndnbr = 0; perisndnbr = 0; } else { leafrcvnbr = 0; leafsndnbr = (int) leaflocnbr; perisndnbr = (int) vnodlocnbr; } cheklocval = 0; if (memAllocGroup ((void **) (void *) &leafrcvtab, (size_t) (leafrcvnbr * sizeof (DorderGatherLeaf)), &leafsndtab, (size_t) (leafsndnbr * sizeof (DorderGatherLeaf)), &perisndtab, (size_t) (perisndnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dorderGather: out of memory (2)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGather: communication error (3)"); return (1); } #else /* SCOTCH_DEBUG_DORDER1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DORDER1 */ if (chekglbval != 0) { if (recvcnttab != NULL) memFree (recvcnttab); return (1); } if (dordptr->proclocnum == protnum) { /* If root process */ #ifdef SCOTCH_DEBUG_DORDER2 memSet (cordptr->peritab, ~0, dordptr->vnodglbnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_DORDER2 */ for (linklocptr = dordptr->linkdat.nextptr; linklocptr != &dordptr->linkdat; linklocptr = linklocptr->nextptr) { /* For all nodes */ const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) /* If tree node is leaf, copy fragment */ memCpy (cordptr->peritab + cblklocptr->data.leaf.ordelocval, cblklocptr->data.leaf.periloctab, cblklocptr->data.leaf.vnodlocnbr * sizeof (Gnum)); } } else { Gnum leaflocnum; Gnum vnodlocnum; for (linklocptr = dordptr->linkdat.nextptr, leaflocnum = vnodlocnum = 0; linklocptr != &dordptr->linkdat; linklocptr = linklocptr->nextptr) { /* For all nodes */ const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) { /* If node is leaf */ leafsndtab[leaflocnum].ordelocval = cblklocptr->data.leaf.ordelocval; /* Fill send structures with permutation data */ leafsndtab[leaflocnum].vnodlocnbr = cblklocptr->data.leaf.vnodlocnbr; memCpy (perisndtab + vnodlocnum, cblklocptr->data.leaf.periloctab, cblklocptr->data.leaf.vnodlocnbr * sizeof (Gnum)); vnodlocnum += cblklocptr->data.leaf.vnodlocnbr; leaflocnum ++; } } leafsndnbr *= 2; /* TRICK: DorderGatherLeaf structures are made of 2 GNUM_MPI fields */ } if (MPI_Gatherv (leafsndtab, leafsndnbr, GNUM_MPI, leafrcvtab, recvcnttab, recvdsptab, GNUM_MPI, protnum, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGather: communication error (4)"); return (1); } if (dordptr->proclocnum == protnum) { int vnodglbnbr; int procnum; perircvtab[2 * protnum + 1] = 0; /* TRICK: root will not send to nor receive from itself to avoid unnecessary memory copy */ for (procnum = 0, vnodglbnbr = 0; procnum < procglbnbr; procnum ++) { recvdsptab[procnum] = vnodglbnbr; recvcnttab[procnum] = (int) perircvtab[2 * procnum + 1]; vnodglbnbr += recvcnttab[procnum]; } #ifdef SCOTCH_DEBUG_DORDER2 if (((Gnum) vnodglbnbr + vnodlocnbr) != dordptr->vnodglbnbr) { errorPrint ("dorderGather: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } if (MPI_Gatherv (perisndtab, perisndnbr, GNUM_MPI, perircvtab, recvcnttab, recvdsptab, GNUM_MPI, protnum, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGather: communication error (5)"); return (1); } if (dordptr->proclocnum == protnum) { /* If root process */ int leafglbnum; int vnodglbnum; for (leafglbnum = vnodglbnum = 0; leafglbnum < leafrcvnbr; leafglbnum ++) { memCpy (cordptr->peritab + leafrcvtab[leafglbnum].ordelocval, perircvtab + vnodglbnum, leafrcvtab[leafglbnum].vnodlocnbr * sizeof (Gnum)); vnodglbnum += leafrcvtab[leafglbnum].vnodlocnbr; } memFree (recvcnttab); /* Free group leader */ } memFree (leafrcvtab); /* Free group leader */ if (dorderGatherTree (dordptr, cordptr, protnum) != 0) /* Gather ordering tree */ return (1); #ifdef SCOTCH_DEBUG_DORDER2 if (dordptr->proclocnum == protnum) { if (orderCheck (cordptr) != 0) { errorPrint ("dorderGather: invalid centralized ordering"); return (1); } } #endif /* SCOTCH_DEBUG_DORDER2 */ return (0); } /* This function gathers the pieces of ** a distributed ordering tree to build a ** centralized ordering tree. ** It returns: ** - 0 : if ordering data are consistent. ** - !0 : on error. */ int dorderGatherTree ( const Dorder * restrict const dordptr, Order * restrict const cordptr, const int protnum) { int treelocnbr; /* "int" since used as way to fill count array in MPI_Allgather */ Gnum treeglbnbr; DorderGatherNode * restrict treercvtab; int treesndnbr; /* "int" since used as count in MPI_Gatherv */ DorderGatherNode * treesndtab; DorderGatherNode * restrict treesndptr; int * restrict treecnttab; int * restrict treedsptab; DorderGatherCblk * restrict cblkglbtab; const DorderLink * restrict linklocptr; int procglbnbr; int procnum; int cheklocval; int chekglbval; for (linklocptr = dordptr->linkdat.nextptr, treelocnbr = 0; /* Count only purely local nodes */ linklocptr != &dordptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ #ifdef SCOTCH_DEBUG_DORDER2 if ((cblklocptr->cblknum.proclocnum != dordptr->proclocnum) && /* Local sub-nodes of non-locally rooted node not implemented */ ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) && (cblklocptr->data.leaf.nodelocnbr != 0)) { errorPrint ("dorderGatherTree: not implemented"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ if (cblklocptr->cblknum.proclocnum == dordptr->proclocnum) { treelocnbr ++; if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) treelocnbr += (int) cblklocptr->data.leaf.nodelocnbr; } } MPI_Comm_size (dordptr->proccomm, &procglbnbr); treesndnbr = (dordptr->proclocnum == protnum) ? 0 : treelocnbr; /* TRICK: root will not send nor receive */ cheklocval = 0; if (memAllocGroup ((void **) (void *) &treecnttab, (size_t) (procglbnbr * sizeof (int)), &treedsptab, (size_t) (procglbnbr * sizeof (int)), &treesndtab, (size_t) (treesndnbr * sizeof (DorderGatherNode)), NULL) == NULL) { errorPrint ("dorderGatherTree: out of memory (1)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGatherTree: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_DORDER1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DORDER1 */ if (chekglbval != 0) { if (treecnttab != NULL) memFree (treecnttab); return (1); } if (MPI_Allgather (&treelocnbr, 1, MPI_INT, treecnttab, 1, MPI_INT, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGatherTree: communication error (2)"); return (1); } for (procnum = 0, treeglbnbr = 0; procnum < procglbnbr; procnum ++) { /* Compute prefix sum of local numbers for global numbering */ treedsptab[procnum] = treeglbnbr; treeglbnbr += treecnttab[procnum]; } if (dordptr->proclocnum == protnum) { treecnttab[protnum] = 0; /* TRICK: root will not send to nor receive from itself to avoid unnecessary memory copy */ cordptr->treenbr = treeglbnbr; if (memAllocGroup ((void **) (void *) &treercvtab, (size_t) (treeglbnbr * sizeof (DorderGatherNode)), &cblkglbtab, (size_t) (treeglbnbr * sizeof (DorderGatherCblk)), NULL) == NULL) { errorPrint ("dorderGatherTree: out of memory (2)"); cheklocval = 1; } treesndptr = treercvtab + treedsptab[protnum]; /* TRICK: root process will build its column blocks in place as if received */ } else treesndptr = treesndtab; #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGather: communication error (3)"); return (1); } #else /* SCOTCH_DEBUG_DORDER1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DORDER1 */ if (chekglbval != 0) { memFree (treecnttab); return (1); } for (linklocptr = dordptr->linkdat.nextptr; linklocptr != &dordptr->linkdat; linklocptr = linklocptr->nextptr) { /* For all nodes */ const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if (cblklocptr->cblknum.proclocnum != dordptr->proclocnum) /* Skip non-local nodes */ continue; treesndptr->fathnum = treedsptab[cblklocptr->fathnum.proclocnum] + cblklocptr->fathnum.cblklocnum; /* If node is (part of) the root node */ treesndptr->typeval = (Gnum) (((cblklocptr->typeval & DORDERCBLKNEDI) != 0) ? ORDERCBLKNEDI : ORDERCBLKOTHR); treesndptr->vnodnbr = cblklocptr->vnodglbnbr; treesndptr->cblknum = cblklocptr->cblkfthnum; treesndptr ++; if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) { /* If node is a distributed leaf */ Gnum cblkglbnum; Gnum cblkglbadj; const DorderNode * restrict nodelocptr; const DorderNode * restrict nodeloctnd; cblkglbnum = treedsptab[cblklocptr->cblknum.proclocnum] + cblklocptr->cblknum.cblklocnum; cblkglbadj = treedsptab[cblklocptr->cblknum.proclocnum] + cblklocptr->data.leaf.cblklocnum; for (nodelocptr = cblklocptr->data.leaf.nodeloctab, nodeloctnd = nodelocptr + cblklocptr->data.leaf.nodelocnbr; nodelocptr < nodeloctnd; nodelocptr ++) { /* Build nodes for all local nodes */ treesndptr->fathnum = (nodelocptr->fathnum == -1) ? cblkglbnum : (nodelocptr->fathnum + cblkglbadj); treesndptr->typeval = (Gnum) nodelocptr->typeval; treesndptr->vnodnbr = nodelocptr->vnodnbr; treesndptr->cblknum = nodelocptr->cblknum; treesndptr ++; } } #ifdef SCOTCH_DEBUG_DORDER2 else if (cblklocptr->typeval != DORDERCBLKNEDI) { errorPrint ("dorderGatherTree: invalid column block type"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } #ifdef SCOTCH_DEBUG_DORDER2 if (treesndptr != ((dordptr->proclocnum == protnum) ? (treercvtab + treedsptab[protnum]) : treesndtab) + treelocnbr) { errorPrint ("dorderGatherTree: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ if (dordptr->proclocnum == protnum) { /* If node is root, adjust displacements in terms of Gnum and not DorderGatherNode */ for (procnum = 0; procnum < procglbnbr; procnum ++) { treecnttab[procnum] *= DORDERGATHERNODESIZE; treedsptab[procnum] *= DORDERGATHERNODESIZE; } } if (MPI_Gatherv (treesndtab, treesndnbr * DORDERGATHERNODESIZE, GNUM_MPI, treercvtab, treecnttab, treedsptab, GNUM_MPI, protnum, dordptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderGatherTree: communication error (4)"); return (1); } if (dordptr->proclocnum == protnum) { Gnum treeglbnum; Gnum cblkglbnbr; memSet (cblkglbtab, 0, treeglbnbr * sizeof (DorderGatherCblk)); /* Set all son counters to zero and all array pointers to NULL */ for (treeglbnum = 1; treeglbnum < treeglbnbr; treeglbnum ++) { /* For all local and received tree nodes except root node */ Gnum cblkfthnum; cblkfthnum = treercvtab[treeglbnum].fathnum; #ifdef SCOTCH_DEBUG_DORDER2 if ((cblkfthnum < 0) || /* Father of non-root node cannot be -1 */ (cblkfthnum >= treeglbnum)) { /* Father should always have smaller global node number */ errorPrint ("dorderGatherTree: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ cblkglbtab[cblkfthnum].cblknbr ++; /* Add a son to its father */ } for (treeglbnum = 0, cblkglbnbr = treeglbnbr; treeglbnum < treeglbnbr; treeglbnum ++) { /* For all local and received tree nodes */ if (cblkglbtab[treeglbnum].cblknbr > 0) { #ifdef SCOTCH_DEBUG_DORDER2 if (cblkglbtab[treeglbnum].cblknbr < 2) { /* Descendent nodes should comprise at least two column block slots */ errorPrint ("dorderGatherTree: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ cblkglbnbr --; /* One new subblock means one more shared frontier, so one less column block than nodes */ if ((cblkglbtab[treeglbnum].cblktab = memAlloc (cblkglbtab[treeglbnum].cblknbr * sizeof (OrderCblk))) == NULL) { errorPrint ("dorderGather: out of memory (3)"); while (-- treeglbnum >= 0) { if (cblkglbtab[treeglbnum].cblktab != NULL) memFree (cblkglbtab[treeglbnum].cblktab); } memFree (treercvtab); memFree (treecnttab); return (1); } } } cordptr->cblknbr = cblkglbnbr; cordptr->cblktre.typeval = (int) treercvtab[0].typeval; /* Process root node of separator tree */ cordptr->cblktre.vnodnbr = treercvtab[0].vnodnbr; cordptr->cblktre.cblknbr = cblkglbtab[0].cblknbr; cordptr->cblktre.cblktab = cblkglbtab[0].cblktab; /* Link its sons array */ for (treeglbnum = 1; treeglbnum < treeglbnbr; treeglbnum ++) { /* For all nodes except the root */ Gnum cblkfthnum; OrderCblk * restrict cblksonptr; cblkfthnum = treercvtab[treeglbnum].cblknum; #ifdef SCOTCH_DEBUG_DORDER2 if ((cblkfthnum < 0) || (cblkfthnum >= cblkglbtab[treercvtab[treeglbnum].fathnum].cblknbr)) { errorPrint ("dorderGatherTree: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ cblksonptr = &cblkglbtab[treercvtab[treeglbnum].fathnum].cblktab[cblkfthnum]; /* Point to son's slot in father array */ cblksonptr->typeval = (int) treercvtab[treeglbnum].typeval; cblksonptr->vnodnbr = treercvtab[treeglbnum].vnodnbr; cblksonptr->cblknbr = cblkglbtab[treeglbnum].cblknbr; /* Link son column block array to column block structure */ cblksonptr->cblktab = cblkglbtab[treeglbnum].cblktab; } memFree (treercvtab); } memFree (treecnttab); return (0); } scotch_6.0.9/src/libscotch/hmesh_mesh.c0000644000302600021200000001536313303015264020307 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_mesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the mesh un- **/ /** haloing routine. **/ /** **/ /** DATES : # Version 4.0 : from : 28 apr 2004 **/ /** to 11 may 2004 **/ /** **/ /** NOTES : # From a given halo mesh is created a **/ /** non-halo mesh. When nodes are **/ /** numbered after elements, halo nodes **/ /** are simply removed. When nodes are **/ /** numbered before elements, halo nodes **/ /** are turned into empty elements such **/ /** that the numbering of vertices **/ /** remains continuous, without holes. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_MESH #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" #include "mesh.h" #include "hmesh.h" /***************************************/ /* */ /* The non-halo mesh building routine. */ /* */ /***************************************/ /* This routine builds a non-halo mesh from ** the given halo mesh. ** It returns: ** - 0 : if the non-halo mesh has been successfully built. ** - 1 : on error. */ int hmeshMesh ( const Hmesh * restrict const hmshptr, /*+ Original halo mesh +*/ Mesh * restrict const meshptr) /*+ Mesh to build +*/ { meshptr->baseval = hmshptr->m.baseval; meshptr->veisnbr = hmshptr->m.veisnbr + hmshptr->veihnbr; /* Add halo isolated elements to isolated elements */ meshptr->vnodnbr = hmshptr->vnohnbr; meshptr->vnodbas = hmshptr->m.vnodbas; meshptr->vnodnnd = hmshptr->vnohnbr + hmshptr->m.vnodbas; meshptr->verttax = hmshptr->m.verttax; meshptr->velotax = hmshptr->m.velotax; meshptr->vnlotax = hmshptr->m.vnlotax; /* Use non-halo part of node vertex load array, if any */ meshptr->velosum = hmshptr->m.velosum; meshptr->vnlosum = hmshptr->vnhlsum; meshptr->vnumtax = hmshptr->m.vnumtax; /* The same for vnumtab */ meshptr->vlbltax = NULL; meshptr->edgenbr = hmshptr->enohnbr; meshptr->edgetax = hmshptr->m.edgetax; meshptr->degrmax = hmshptr->m.degrmax; if (hmshptr->vnohnbr == hmshptr->m.vnodnbr) { /* If halo mesh does not have any halo */ meshptr->flagval = MESHNONE; /* Just create a clone of the original mesh */ meshptr->velmnbr = hmshptr->m.velmnbr; meshptr->velmbas = hmshptr->m.velmbas; meshptr->velmnnd = hmshptr->m.velmnnd; meshptr->vendtax = hmshptr->m.vendtax; return (0); } meshptr->flagval = MESHFREEVEND; if (hmshptr->m.velmbas <= hmshptr->m.vnodbas) { /* If elements numbered before nodes */ if ((meshptr->vendtax = memAlloc ((hmshptr->m.velmnbr + hmshptr->vnohnbr) * sizeof (Gnum))) == NULL) { /* Do not keep halo nodes at end of array */ errorPrint ("hmeshHgraph: out of memory (1)"); return (1); } memCpy (meshptr->vendtax, hmshptr->vehdtax + hmshptr->m.velmbas, hmshptr->m.velmnbr * sizeof (Gnum)); memCpy (meshptr->vendtax + hmshptr->m.velmnbr, hmshptr->m.vendtax + hmshptr->m.vnodbas, hmshptr->vnohnbr * sizeof (Gnum)); meshptr->velmnbr = hmshptr->m.velmnbr; meshptr->velmbas = hmshptr->m.velmbas; meshptr->velmnnd = hmshptr->m.velmnnd; } else { /* If nodes numbered before elements */ if ((meshptr->vendtax = memAlloc ((hmshptr->m.velmnbr + hmshptr->m.vnodnbr) * sizeof (Gnum))) == NULL) { /* Turn halo nodes into empty elements */ errorPrint ("hmeshHgraph: out of memory (2)"); return (1); } memCpy (meshptr->vendtax, hmshptr->m.vendtax + hmshptr->m.baseval, hmshptr->vnohnbr * sizeof (Gnum)); /* Copy non-halo node part */ memCpy (meshptr->vendtax + hmshptr->vnohnbr, hmshptr->m.verttax + hmshptr->vnohnnd, hmshptr->m.vnodnbr - hmshptr->vnohnbr * sizeof (Gnum)); /* Create empty fake element part */ memCpy (meshptr->vendtax + hmshptr->m.vnodnbr, hmshptr->vehdtax + hmshptr->m.velmbas, hmshptr->m.velmnbr * sizeof (Gnum)); meshptr->velmnbr = hmshptr->m.velmnbr + hmshptr->m.vnodnbr - hmshptr->vnohnbr; /* Turn halo node vertices into element vertices */ meshptr->velmbas = hmshptr->vnohnnd; meshptr->velmnnd = hmshptr->m.velmnnd; } meshptr->vendtax -= meshptr->baseval; #ifdef SCOTCH_DEBUG_HMESH2 if (meshCheck (meshptr) != 0) { errorPrint ("hmeshMesh: internal error"); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ return (0); } scotch_6.0.9/src/libscotch/library_mapping.h0000644000302600021200000000655413303015264021355 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mapping.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the library ordering **/ /** structure. **/ /** **/ /** DATES : # Version 4.0 : from : 28 jun 2004 **/ /** to 28 jun 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 15 apr 2011 **/ /** to 23 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ User mapping option flags. +*/ #define LIBMAPPINGNONE 0x0000 /* No options set */ #define LIBMAPPINGFREEPART 0x0001 /* Free parttab array */ /* ** The type and structure definitions. */ /*+ User mapping. +*/ typedef struct LibMapping_ { Gnum flagval; Graph * grafptr; /*+ Graph data +*/ Arch * archptr; /*+ Architecture data +*/ Gnum * parttab; /*+ Mapping array +*/ } LibMapping; scotch_6.0.9/src/libscotch/kgraph_map_rb.h0000644000302600021200000002167413470115365021002 0ustar pelegrinpelegrin/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Dual Recursive Bipartitioning **/ /** mapping algorithm. **/ /** **/ /** DATES : # Version 0.0 : from : 23 mar 1993 **/ /** to 12 may 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 09 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 04 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 15 nov 1995 **/ /** to 15 nov 1995 **/ /** # Version 3.2 : from : 01 oct 1996 **/ /** to 10 jun 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 17 may 1999 **/ /** # Version 3.4 : from : 12 sep 2001 **/ /** to 06 nov 2001 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 05 may 2006 **/ /** # Version 5.1 : from : 07 oct 2008 **/ /** to 28 mar 2011 **/ /** # Version 6.0 : from : 07 aug 2014 **/ /** to 03 aug 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing terminal domain numbers. +*/ #define KGRAPHMAPRBVFLOHASHPRIME 17 /*+ Prime number for hashing +*/ /*+ Kinds of external edge processing. +*/ #define KGRAPHMAPRBVEEXNONE 0x0000 /* No options set */ #define KGRAPHMAPRBVEEXMAPP 0x0001 /* Graph mapping */ #define KGRAPHMAPRBVEEXVFIX 0x0002 /* Fixed vertices */ #define KGRAPHMAPRBVEEXREMA 0x0004 /* Remapping */ #define KGRAPHMAPRBVEEXEDGE (KGRAPHMAPRBVEEXMAPP | KGRAPHMAPRBVEEXVFIX) #define KGRAPHMAPRBVEEXVERT (KGRAPHMAPRBVEEXREMA) /* ** The type and structure definitions. */ /*+ Job selection policy types. +*/ typedef enum KgraphMapRbPolicy_ { KGRAPHMAPRBPOLIRANDOM = 0, /*+ Random job selection policy +*/ KGRAPHMAPRBPOLILEVEL, /*+ Select job with highest level +*/ KGRAPHMAPRBPOLISIZE, /*+ Select job with largest size +*/ KGRAPHMAPRBPOLINGLEVEL, /*+ Select job with most neighbors of higher level +*/ KGRAPHMAPRBPOLINGSIZE /*+ Select job with most neighbors of smaller size +*/ } KgraphMapRbPolicy; #define KGRAPHMAPRBPOLINEIGHBOR KGRAPHMAPRBPOLINGLEVEL /*+ Priority level computed with respect to neighbors +*/ /*+ Method parameters. +*/ typedef struct KgraphMapRbParam_ { int flagjobtie; /*+ Flag set of job pools are tied +*/ int flagmaptie; /*+ Flag set if mappings are tied +*/ KgraphMapRbPolicy polival; /*+ Job selection policy +*/ Strat * strat; /*+ Bipartitioning strategy used +*/ double kbalval; /*+ K-way imbalance ratio +*/ } KgraphMapRbParam; /*+ This structure holds the data passed to each bipartitioning job. +*/ typedef struct KgraphMapRbData_ { const Graph * grafptr; /*+ Pointer to top-level graph, possibly with fixed vertices +*/ Mapping * mappptr; /*+ Mapping to compute +*/ struct { /*+ Remapping structure +*/ const Mapping * mappptr; /*+ Old mapping (for remapping only) +*/ const Gnum * vmlotax; /*+ Array of vertex migration costs +*/ Gnum cmloval; /*+ Migration edge load for remapping +*/ Gnum crloval; /*+ Regular edge load for mapping +*/ } r; const Anum * pfixtax; /*+ Fixed vertex partition array +*/ const KgraphMapRbParam * paraptr; /*+ Pointer to mapping parameter structure +*/ double comploadrat; /*+ Ideal load balance per weight unit +*/ double comploadmin; /*+ Minimum vertex load per target load +*/ double comploadmax; /*+ Maximum vertex load per target load +*/ } KgraphMapRbData; /*+ Fixed vertex load type. An array of such cells stores the loads of strictly positive fixed vertices (zero ones are discarded) that must be assigned to some subdomain of the current domain to be bipartitioned. +*/ typedef struct KgraphMapRbVflo_ { Anum termnum; /*+ Terminal domain number +*/ Gnum veloval; /*+ Vertex load +*/ } KgraphMapRbVflo; /*+ Hash structure for merging fixed vertex domains with non-fixed vertex domains. +*/ typedef struct KgraphMapRbVfloHash_ { Anum termnum; /*+ Terminal domain number +*/ Anum domnnum; /*+ Domain number in domain array +*/ } KgraphMapRbVfloHash; /* ** The function prototypes. */ int kgraphMapRb (Kgraph * const, const KgraphMapRbParam * const); int kgraphMapRbVfloBuild (const Arch * restrict const, const Graph * restrict const, const Gnum, const Anum * restrict const, Graph * restrict const, Anum * restrict const, KgraphMapRbVflo * restrict * restrict const); void kgraphMapRbVfloSplit (const Arch * restrict const, const ArchDom * restrict const, const Anum, KgraphMapRbVflo * restrict const, Anum * restrict const, Gnum * restrict const); int kgraphMapRbVfloMerge (Mapping * restrict const, const Gnum, const Anum * restrict const, const Anum); int kgraphMapRbBgraph (const KgraphMapRbData * restrict const, Bgraph * restrict const, const Graph * restrict const, const Mapping * restrict const, const ArchDom * restrict const, const Gnum * restrict const); scotch_6.0.9/src/libscotch/mapping.c0000644000302600021200000004540613465610544017636 0ustar pelegrinpelegrin/* Copyright 2004,2007-2009,2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mapping.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles (partial) mappings. **/ /** **/ /** DATES : # Version 0.0 : from : 31 mar 1993 **/ /** to 31 mar 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 17 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 19 oct 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 14 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 07 sep 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 3.4 : from : 11 sep 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 16 jan 2004 **/ /** to 05 jan 2005 **/ /** # Version 5.1 : from : 25 jun 2008 **/ /** to 28 apr 2009 **/ /** # Version 6.0 : from : 04 mar 2011 **/ /** to 26 fev 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MAPPING #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" /***********************************/ /* */ /* These routines handle mappings. */ /* */ /***********************************/ /* This routine builds a mapping. ** It returns: ** - 0 : if mapping successfully initialized. ** - !0 : on error. */ void mapInit ( Mapping * restrict const mappptr, /*+ Mapping structure +*/ const Graph * restrict const grafptr, /*+ Graph data +*/ const Arch * restrict const archptr, /*+ Architecture data +*/ const ArchDom * restrict const domnptr) /*+ Target architecture initial domain +*/ { Anum domnmax; /* Maximum number of domains */ domnmax = (archVar (archptr) != 0) /* If target architecture is variable-sized */ ? MIN (1023, grafptr->vertnbr) /* Pre-set number of domains */ : archDomSize (archptr, domnptr); /* Else get architecture size */ domnmax ++; /* +1 for empty domain in mapBuild()/mapLoad() */ mapInit2 (mappptr, grafptr, archptr, domnptr, domnmax, 0); } void mapInit2 ( Mapping * restrict const mappptr, /*+ Mapping structure +*/ const Graph * restrict const grafptr, /*+ Graph data +*/ const Arch * restrict const archptr, /*+ Architecture data +*/ const ArchDom * restrict const domnptr, /*+ Target architecture initial domain +*/ const Anum domnmax, const Anum domnnbr) { mappptr->flagval = MAPPINGNONE; mappptr->grafptr = grafptr; mappptr->archptr = archptr; mappptr->parttax = NULL; mappptr->domntab = NULL; mappptr->domnnbr = domnnbr; mappptr->domnmax = domnmax; mappptr->domnorg = *domnptr; /* Use provided domain as original domain (e.g. when running a piece of parallel partitioning) */ } /* This routine allocates the contents of a mapping. ** It returns: ** - 0 : if mapping successfully allocated. ** - !0 : on error. */ int mapAlloc ( Mapping * restrict const mappptr) /*+ Mapping structure to fill +*/ { if ((mappptr->flagval & MAPPINGFREEPART) == 0) { /* If no private partition array yet */ Anum * restrict parttab; if ((parttab = (Anum *) memAlloc (mappptr->grafptr->vertnbr * sizeof (Anum))) == NULL) { errorPrint ("mapAlloc: out of memory (1)"); return (1); } mappptr->flagval |= MAPPINGFREEPART; mappptr->parttax = parttab - mappptr->grafptr->baseval; } if ((mappptr->flagval & MAPPINGFREEDOMN) == 0) { /* If no private domain array yet */ if ((mappptr->domntab = (ArchDom *) memAlloc (mappptr->domnmax * sizeof (ArchDom))) == NULL) { errorPrint ("mapAlloc: out of memory (2)"); return (1); } mappptr->flagval |= MAPPINGFREEDOMN; } return (0); } /* This routine resizes the domain array of a ** mapping and preserves its existing contents. ** It returns: ** - 0 : if mapping successfully allocated. ** - !0 : on error. */ int mapResize ( Mapping * restrict const mappptr, /*+ Mapping structure to fill +*/ const Anum domnmax) { int flagval; const ArchDom * restrict domntab; flagval = mappptr->flagval; /* Save old flag value */ domntab = mappptr->domntab; /* Save pointer to old domain array */ if (mapResize2 (mappptr, domnmax) != 0) /* Resize array */ return (1); if (flagval != mappptr->flagval) /* If a new private array has been created */ memCpy (mappptr->domntab, domntab, mappptr->domnnbr * sizeof (ArchDom)); return (0); } /* This routine resizes the domain array of a ** mapping without preserving its existing contents. ** It returns: ** - 0 : if mapping successfully allocated. ** - !0 : on error. */ int mapResize2 ( Mapping * restrict const mappptr, /*+ Mapping structure to fill +*/ const Anum domnmax) { ArchDom * domntab; domntab = ((mappptr->flagval & MAPPINGFREEDOMN) != 0) /* If it was a privately owned array */ ? memRealloc (mappptr->domntab, domnmax * sizeof (ArchDom)) /* Reallocate it */ : memAlloc (domnmax * sizeof (ArchDom)); /* Else allocate it privately */ if (domntab == NULL) { errorPrint ("mapResize2: out of memory"); return (1); } mappptr->domntab = domntab; mappptr->domnmax = domnmax; mappptr->flagval |= MAPPINGFREEDOMN; /* Array is now private anyway */ return (0); } /* This routine builds an initial mapping. ** It returns: ** - void : in all cases. */ void mapFrst ( Mapping * restrict const mappptr) /*+ Mapping structure to fill +*/ { mappptr->domnnbr = 1; /* One domain in mapping to date */ mappptr->domntab[0] = mappptr->domnorg; /* Set first domain */ memSet (mappptr->parttax + mappptr->grafptr->baseval, 0, mappptr->grafptr->vertnbr * sizeof (Anum)); /* Set parttax to first domain */ } /* This routine frees the contents ** of the given mapping. ** It returns: ** - void : in all cases. */ void mapFree ( Mapping * const mappptr) { if (((mappptr->flagval & MAPPINGFREEDOMN) != 0) && /* If domntab must be freed */ (mappptr->domntab != NULL)) /* And if exists */ memFree (mappptr->domntab); /* Free it */ if (((mappptr->flagval & MAPPINGFREEPART) != 0) && /* If parttax must be freed */ (mappptr->parttax != NULL)) /* And if exists */ memFree (mappptr->parttax + mappptr->grafptr->baseval); /* Free it */ mappptr->parttax = NULL; mappptr->domntab = NULL; } /* This routine frees the contents ** of the given mapping. ** It returns: ** - void : in all cases. */ void mapExit ( Mapping * const mappptr) { mapFree (mappptr); #ifdef SCOTCH_DEBUG_MAP2 memSet (mappptr, ~0, sizeof (Mapping)); #endif /* SCOTCH_DEBUG_MAP2 */ } /* This routine copies a mapping onto another. ** It returns: ** - 0 : if mapping successfully copied. ** - !0 : on error. */ int mapCopy ( Mapping * restrict const mappptr, /*+ Mapping to set +*/ const Mapping * restrict const mapoptr) /*+ Old mapping +*/ { Anum domnnbr; Gnum baseval; #ifdef SCOTCH_DEBUG_MAP2 if (mappptr->grafptr->vertnbr != mapoptr->grafptr->vertnbr) { errorPrint ("mapCopy: mappings do not match"); return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ baseval = mapoptr->grafptr->baseval; domnnbr = mapoptr->domnnbr; if (domnnbr > mappptr->domnmax) { /* If we have to resize domain array */ if (mapResize2 (mappptr, domnnbr) != 0) /* Resize it */ return (1); } mappptr->domnnbr = domnnbr; memCpy (mappptr->domntab, mapoptr->domntab, domnnbr * sizeof (ArchDom)); memCpy (mappptr->parttax + baseval, mapoptr->parttax + baseval, mapoptr->grafptr->vertnbr * sizeof (Anum)); return (0); } /* This routine builds a mapping from a ** terminal domain partition array. ** It returns: ** - 0 : if mapping successfully filled. ** - !0 : on error. */ static int mapBuild2 ( Mapping * restrict const mappptr, /*+ Mapping to set +*/ MappingHash * restrict * const hashtabptr, /*+ Pointer to hash table to set up +*/ Gnum * const hashsizptr) /*+ Size of hash table +*/ { ArchDom domndat; MappingHash * hashtab; Gnum hashnbr; /* Prospective number of cells in table */ Gnum hashsiz; /* Size of hash table */ const Arch * restrict const archptr = mappptr->archptr; #ifdef SCOTCH_DEBUG_MAP2 if (mappptr->domnmax < 1) { errorPrint ("mapBuild2: domain array is too small"); return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ archDomFrst (archptr, &domndat); hashnbr = (archVar (archptr) == 0) /* If fixed size architecture */ ? archDomSize (archptr, &domndat) /* Get maximum size of distinct terminal domains */ : mappptr->grafptr->vertnbr; /* Else take upper bound as number of vertices */ hashnbr ++; /* Add one extra slot for unknown terminal domain */ for (hashsiz = 32; hashsiz < hashnbr; hashsiz <<= 1) ; /* Get upper power of two */ hashsiz <<= 2; /* Fill hash table at 25% maximum */ if ((hashtab = (MappingHash *) memAlloc (hashsiz * sizeof (MappingHash))) == NULL) { errorPrint ("mapBuild2: out of memory"); return (1); } memSet (hashtab, ~0, hashsiz * sizeof (MappingHash)); /* Set all vertex numbers to ~0 */ *hashtabptr = hashtab; *hashsizptr = hashsiz; return (0); } static int mapBuild3 ( Mapping * restrict const mappptr, /*+ Mapping to fill +*/ MappingHash * restrict const hashtab, /*+ Hash table +*/ const Gnum hashsiz, /*+ Hash table size +*/ const Anum * restrict const termtax) /*+ Terminal array to load +*/ { ArchDom * restrict domntab; Anum domnnbr; Anum domnmax; Gnum hashmsk; Gnum vertnnd; Gnum vertnum; int o; const Arch * restrict const archptr = mappptr->archptr; Anum * restrict const parttax = mappptr->parttax; o = 1; /* Assume loop will fail */ hashmsk = hashsiz - 1; domntab = mappptr->domntab; domnnbr = mappptr->domnnbr; domnmax = mappptr->domnmax; for (vertnum = mappptr->grafptr->baseval, vertnnd = mappptr->grafptr->vertnnd; vertnum < vertnnd; vertnum ++) { Gnum hashnum; Anum termnum; Anum domnnum; termnum = termtax[vertnum]; if (termnum == ~0) /* If unknown part, skip it */ continue; for (hashnum = (termnum * MAPPINGHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].termnum == termnum) { /* If hash slot found */ domnnum = hashtab[hashnum].domnnum; /* Domain number found */ break; } if (hashtab[hashnum].termnum == ~0) { /* If hash slot empty */ hashtab[hashnum].termnum = termnum; /* Create slot */ hashtab[hashnum].domnnum = domnnbr; if (domnnbr == domnmax) { domnmax += (domnmax >> 2) + 8; /* Increase size by 25% */ if (mapResize (mappptr, domnmax) != 0) goto fail; domntab = mappptr->domntab; /* Re-read pointer in case it changed */ } archDomTerm (archptr, &domntab[domnnbr], termnum); /* Create slot with terminal number domain */ domnnum = domnnbr ++; /* Get position of new slot; one more slot created */ break; } } parttax[vertnum] = domnnum; /* Refer to the proper domain */ } o = 0; /* Success */ fail: mappptr->domnnbr = domnnbr; /* Set updated number of domains */ memFree (hashtab); /* Free hash table */ return (o); } int mapBuild ( Mapping * restrict const mappptr, /*+ Mapping to set +*/ const Anum * restrict const termtax) /*+ Terminal array to load +*/ { MappingHash * restrict hashtab; Gnum hashsiz; /* Size of hash table */ if (mapBuild2 (mappptr, &hashtab, &hashsiz) != 0) return (1); return (mapBuild3 (mappptr, hashtab, hashsiz, termtax)); } /* This routine updates a mapping with a ** terminal domain partition array. ** It returns: ** - 0 : if mapping successfully updated. ** - !0 : on error. */ int mapMerge ( Mapping * restrict const mappptr, /*+ Mapping to set +*/ const Anum * restrict const termtab) /*+ Terminal array to load +*/ { MappingHash * restrict hashtab; Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; Anum domnnbr; Anum domnnum; const Arch * restrict const archptr = mappptr->archptr; const ArchDom * restrict const domntab = mappptr->domntab; if (mapBuild2 (mappptr, &hashtab, &hashsiz) != 0) return (1); hashmsk = hashsiz - 1; for (domnnum = 0, domnnbr = mappptr->domnnbr; domnnum < domnnbr; domnnum ++) { const ArchDom * domnptr; Gnum hashnum; Anum termnum; domnptr = &domntab[domnnum]; if (archDomSize (archptr, domnptr) != 1) /* If domain is not terminal, skip it */ continue; termnum = archDomNum (archptr, domnptr); for (hashnum = (termnum * MAPPINGHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { /* Fill hash table with existing domains */ #ifdef SCOTCH_DEBUG_MAP2 if (hashtab[hashnum].termnum == termnum) { /* If hash slot found */ errorPrint ("mapMerge: internal error"); /* Multiple domains with same terminal number */ return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ if (hashtab[hashnum].termnum == ~0) { /* If hash slot empty */ hashtab[hashnum].termnum = termnum; /* Create slot */ hashtab[hashnum].domnnum = domnnum; break; } } } return (mapBuild3 (mappptr, hashtab, hashsiz, termtab)); /* Add new domains to existing domain array */ } /* This routine propagates back mapping ** information to a terminal part array. ** It returns: ** - void : in all cases. */ void mapTerm ( const Mapping * restrict const mappptr, Anum * restrict const termtax) { Gnum vertnnd; Gnum vertnum; const Arch * restrict const archptr = mappptr->archptr; const ArchDom * restrict const domntab = mappptr->domntab; const Anum * restrict const parttax = mappptr->parttax; vertnum = mappptr->grafptr->baseval; if (domntab != NULL) { for (vertnnd = mappptr->grafptr->vertnnd; vertnum < vertnnd; vertnum ++) termtax[vertnum] = archDomNum (archptr, &domntab[parttax[vertnum]]); } else memSet (termtax + vertnum, ~0, mappptr->grafptr->vertnbr * sizeof (Anum)); } scotch_6.0.9/src/libscotch/library_order.c0000644000302600021200000000621313560013261021020 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling centralized **/ /** graph orderings. **/ /** **/ /** DATES : # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /*****************************************/ /* */ /* These routines are the C API for */ /* ordering structure handling routines. */ /* */ /*****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** graph ordering structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Ordering * SCOTCH_orderAlloc () { return ((SCOTCH_Ordering *) memAlloc (sizeof (SCOTCH_Ordering))); } scotch_6.0.9/src/libscotch/library_graph_color_f.c0000644000302600021200000000636613560013261022522 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_coarsen_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph coloring routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 02 jan 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the coloring routine. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHCOLOR, graphcolor, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Num * const colotab, \ SCOTCH_Num * const coloptr, \ const SCOTCH_Num * const flagval, \ int * const revaptr), \ (grafptr, colotab, coloptr, flagval, revaptr)) { *revaptr = SCOTCH_graphColor (grafptr, colotab, coloptr, *flagval); } scotch_6.0.9/src/libscotch/library_graph_map_view.h0000644000302600021200000000753013542631530022712 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_view.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the mapping viewing routines. **/ /** **/ /** DATES : # Version 5.0 : from : 04 feb 2007 **/ /** to 04 feb 2007 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 24 sep 2019 **/ /** **/ /************************************************************/ #define LIBRARY_GRAPH_MAP_VIEW_H /* ** The type definitions. */ /*+ Complementary vertex structure. +*/ typedef struct GraphMapViewVertex_ { Gnum passnum; /*+ Number of pass when vertex selected +*/ Gnum vertdist; /*+ Current distance from diameter vertex +*/ } GraphMapViewVertex; /*+ Neighbor queue. +*/ typedef struct GraphMapViewQueue_ { Gnum * head; /*+ Head of distance queue +*/ Gnum * tail; /*+ Tail of distance queue +*/ Gnum * qtab; /*+ Array of queue elements +*/ } GraphMapViewQueue; /*+ This structure stores part lists. +*/ typedef struct GraphMapViewList_ { Gnum vertnum; /*+ Number of vertex of which part is neighbor +*/ Gnum nextidx; /*+ Pointer to index of next recorded neighbor +*/ } GraphMapViewList; /* ** The macro definitions. */ #define graphMapViewQueueFlush(queue) ((queue)->head = (queue)->tail = (queue)->qtab) #define graphMapViewQueueEmpty(queue) ((queue)->head <= (queue)->tail) #define graphMapViewQueuePut(queue,vnum) (* ((queue)->head ++) = (vnum)) #define graphMapViewQueueGet(queue) (* ((queue)->tail ++)) scotch_6.0.9/src/libscotch/vdgraph_separate_ml.c0000644000302600021200000010477313560013732022205 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_ml.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : This module contains the multi-level **/ /** separation strategy. **/ /** **/ /** DATES : # Version 5.0 : from : 07 mar 2006 **/ /** to : 01 mar 2008 **/ /** # Version 5.1 : from : 14 dec 2008 **/ /** to : 26 aug 2010 **/ /** # Version 6.0 : from : 11 sep 2012 **/ /** to : 28 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_ML #include "module.h" #include "common.h" #include "parser.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "vdgraph.h" #include "vdgraph_separate_ml.h" #include "vdgraph_separate_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** Dgraph that is given on input. The coarser ** Dgraphs differ at this stage from classical ** active Dgraphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse Dgraph has been built. ** - 1 : if threshold achieved or on error. */ static int vdgraphSeparateMlCoarsen ( Vdgraph * restrict const finegrafptr, /*+ Finer graph +*/ Vdgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ DgraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to based multinode table to build +*/ const VdgraphSeparateMlParam * const paraptr) /*+ Method parameters +*/ { int foldval; switch (paraptr->foldval) { case 0 : foldval = DGRAPHCOARSENNONE; break; case 1 : foldval = DGRAPHCOARSENFOLD; break; case 2 : foldval = DGRAPHCOARSENFOLDDUP; break; #ifdef SCOTCH_DEBUG_VDGRAPH2 default : errorPrint ("vdgraphSeparateMlCoarsen: invalid parameter"); return (1); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } if ((finegrafptr->s.vertglbnbr / finegrafptr->s.procglbnbr) > paraptr->foldmax) /* If no need to fold */ foldval = DGRAPHCOARSENNONE; *coarmultptr = NULL; /* Let the routine create the multinode array */ dgraphInit (&coargrafptr->s, finegrafptr->s.proccomm); /* Re-use fine graph communicator */ if (dgraphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, paraptr->passnbr, paraptr->coarnbr, paraptr->coarrat, foldval) != 0) return (1); /* Return if coarsening failed */ coargrafptr->fronloctab = NULL; coargrafptr->partgsttax = NULL; /* Do not allocate partition data yet */ if (coargrafptr->s.procglbnbr == 0) { /* Not a owner graph */ coargrafptr->s.vertlocnbr = 0; /* Set it to zero for vrcvdattab allocation */ return (0); } coargrafptr->levlnum = finegrafptr->levlnum + 1; /* Graph level is coarsening level */ if (coargrafptr->s.vertlocnbr <= finegrafptr->s.vertlocnbr) /* If (folded) coarser graph is smaller */ coargrafptr->fronloctab = finegrafptr->fronloctab; /* Re-use frontier array for coarser graph */ else { /* Else allocate new private frontier array */ if ((coargrafptr->fronloctab = memAlloc (coargrafptr->s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("vdgraphSeparateMlCoarsen: out of memory"); dgraphExit (&coargrafptr->s); /* Only free Dgraph since fronloctab not allocated */ memFree (*coarmultptr); /* Free un-based array */ return (1); } } *coarmultptr -= coargrafptr->s.baseval; /* Base the multinode array */ return (0); } /* This routine is the reduction-loc operator which ** returns in inout[2] the rank of the process which ** holds the best partition. ** It returns: ** - void : in all cases. */ static void vdgraphSeparateMlOpBest ( const Gnum * const in, /* First operand */ Gnum * const inout, /* Second and output operand */ const int * const len, /* Number of instances ; should be 1, not used */ const MPI_Datatype * const typedat) /* MPI datatype ; not used */ { inout[5] |= in[5]; /* Memory error flag */ if (inout[0] == 1) { /* Handle cases when at least one of them is erroneous */ if (in[0] == 1) { if (inout[1] > in[1]) { /* To enforce commutativity, always keep smallest process number */ inout[1] = in[1]; inout[2] = in[2]; } return; } inout[0] = in[0]; /* Validity flag */ inout[1] = in[1]; /* Lead process rank */ inout[2] = in[2]; /* Lead process color */ inout[3] = in[3]; /* Separator size */ inout[4] = in[4]; /* Parts imbalance */ return; } else if (in[0] == 1) return; if ((in[3] < inout[3]) || /* Select best partition */ ((in[3] == inout[3]) && ((in[4] < inout[4]) || ((in[4] == inout[4]) && (in[1] < inout[1]))))) { inout[1] = in[1]; inout[2] = in[2]; inout[3] = in[3]; inout[4] = in[4]; } } /* This routine packs the neighbor data to be sent ** to one of the neighbors by part number. ** It returns: ** - void : in all cases. */ static void vdgraphSeparateMlPack ( Gnum * restrict const dataloctab, const Gnum datalocidx, Gnum * restrict ssndcnttab) { Gnum finevertsndnbr0; Gnum finevertsndnbr1; Gnum finevertsndnbr2; Gnum datalocnbr; finevertsndnbr0 = ssndcnttab[0]; finevertsndnbr1 = ssndcnttab[1]; finevertsndnbr2 = ssndcnttab[2]; datalocnbr = finevertsndnbr0 + finevertsndnbr1 + finevertsndnbr2; if (datalocnbr <= datalocidx) { /* If arrays do not overlap */ Gnum * restrict datadsttab = dataloctab + datalocidx; const Gnum * restrict const datasrctab = dataloctab + datalocidx * 2; Gnum datasrcnum; Gnum partidxtab[3]; partidxtab[0] = 0; partidxtab[1] = finevertsndnbr0; partidxtab[2] = finevertsndnbr0 + finevertsndnbr1; for (datasrcnum = 0, datalocnbr <<= 1; datasrcnum < datalocnbr; ) { /* Work on pairs of Gnum's */ Gnum finevertglbnum; Gnum finepartval; finevertglbnum = datasrctab[datasrcnum ++]; finepartval = datasrctab[datasrcnum ++]; datadsttab[partidxtab[finepartval] ++] = finevertglbnum; } } else { /* Arrays do overlap */ Gnum datadstnum; Gnum datasrcnum; Gnum datasrcnnd; Gnum datasrcnxt; datadstnum = datalocidx; for (datasrcnum = datalocidx << 1, datasrcnnd = datasrcnum + (finevertsndnbr0 << 1), datasrcnxt = datasrcnnd; /* Work on pairs of Gnum's */ datasrcnum < datasrcnnd; ) { Gnum finevertglbnum; Gnum finepartval; finevertglbnum = dataloctab[datasrcnum ++]; finepartval = dataloctab[datasrcnum ++]; if (finepartval != 0) { Gnum finevertglbtmp; #ifdef SCOTCH_DEBUG_VDGRAPH2 if ((finepartval < 1) || (finepartval > 2)) { errorPrint ("vdgraphSeparateMlPack: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ while (dataloctab[datasrcnxt + 1] != 0) { /* Find first vertex of part zero in next block */ datasrcnxt += 2; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (datasrcnxt >= ((datalocidx + datalocnbr) << 1)) { errorPrint ("vdgraphSeparateMlPack: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } finevertglbtmp = dataloctab[datasrcnxt]; dataloctab[datasrcnxt ++] = finevertglbnum; dataloctab[datasrcnxt ++] = finepartval; finevertglbnum = finevertglbtmp; } dataloctab[datadstnum ++] = finevertglbnum; } for (datasrcnnd += finevertsndnbr1 << 1, datasrcnxt = datasrcnnd; /* Work on pairs of Gnum's */ datasrcnum < datasrcnnd; ) { Gnum finevertglbnum; Gnum finepartval; finevertglbnum = dataloctab[datasrcnum ++]; finepartval = dataloctab[datasrcnum ++]; if (finepartval != 1) { Gnum finevertglbtmp; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartval != 2) { errorPrint ("vdgraphSeparateMlPack: internal error (3)"); return; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ while (dataloctab[datasrcnxt + 1] != 1) { /* Find first vertex of part one in next block */ datasrcnxt += 2; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (datasrcnxt >= ((datalocidx + datalocnbr) << 1)) { errorPrint ("vdgraphSeparateMlPack: internal error (4)"); return; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } finevertglbtmp = dataloctab[datasrcnxt]; dataloctab[datasrcnxt ++] = finevertglbnum; dataloctab[datasrcnxt ++] = finepartval; finevertglbnum = finevertglbtmp; } dataloctab[datadstnum ++] = finevertglbnum; } for (datasrcnnd += finevertsndnbr2 << 1; datasrcnum < datasrcnnd; ) { /* Work on pairs of Gnum's */ Gnum finevertglbnum; finevertglbnum = dataloctab[datasrcnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (dataloctab[datasrcnum + 1] != 2) { errorPrint ("vdgraphSeparateMlPack: internal error (5)"); return; } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ datasrcnum += 2; dataloctab[datadstnum ++] = finevertglbnum; } } } /* This routine propagates the separation of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the separation is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to the fine graph. ** - !0 : on error. */ static int vdgraphSeparateMlUncoarsen ( Vdgraph * restrict finegrafptr, /*+ Finer graph +*/ const Vdgraph * restrict const coargrafptr, /*+ Coarser graph +*/ const DgraphCoarsenMulti * restrict const coarmulttax) /*+ Based multinode array +*/ { Gnum coarvertnum; Gnum finevertlocadj; Gnum finecomplocload0; Gnum finecomplocload2; Gnum finecomplocsize1; Gnum finecomplocsize2; Gnum * restrict srcvdattab; Gnum * ssnddattab; /* TRICK: holds vrcvcnttab, vsnddsptab, vrcvdsptab */ Gnum * vrcvdattab; /* TRICK: overlaps with vsnddattab before packing [norestrict:async] */ Gnum * vsnddattab; /* [norestrict:async] */ int * vrcvcnttab; int * vsndcnttab; int * vrcvdsptab; int * vsnddsptab; int vrcvdspnum; int vsnddspnum; Gnum vrcvdatnum; MPI_Datatype besttypedat; /* Data type for finding best bipartition */ MPI_Op bestoperdat; /* Handle of MPI operator for finding best bipartition */ Gnum reduloctab[6]; Gnum reduglbtab[6]; int procnum; const Gnum * restrict fineveloglbtax; GraphPart * restrict finepartglbtax; Gnum * restrict const finefronloctab = finegrafptr->fronloctab; reduloctab[5] = 0; /* Assume everything is fine */ if (finegrafptr->partgsttax == NULL) { /* If partition array not yet allocated */ if (dgraphGhst (&finegrafptr->s) != 0) { /* Create ghost edge array and compute vertgstnbr */ errorPrint ("vdgraphSeparateMlUncoarsen: cannot compute ghost edge array"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } else if ((finegrafptr->partgsttax = (GraphPart *) memAlloc (finegrafptr->s.vertgstnbr * sizeof (GraphPart))) == NULL) { errorPrint ("vdgraphSeparateMlUncoarsen: out of memory (1)"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } else finegrafptr->partgsttax -= finegrafptr->s.baseval; } if (coargrafptr == NULL) { /* If coarser graph not provided */ #ifdef SCOTCH_DEBUG_BDGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&reduloctab[5], &reduglbtab[5], 1, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ reduglbtab[5] = reduloctab[5]; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (reduglbtab[5] != 0) return (1); vdgraphZero (finegrafptr); /* Assign all vertices to part 0 */ return (0); } if (memAllocGroup ((void **) (void *) &vsndcnttab, (size_t) (finegrafptr->s.procglbnbr * sizeof (int)), /* TRICK: srcvdattab after ssnddattab, after vsndcnttab */ &ssnddattab, (size_t) (finegrafptr->s.procglbnbr * 3 * sizeof (Gnum)), /* TRICK: ssnddattab is vrcvcnttab, vsnddsptab, vrcvdsptab */ &srcvdattab, (size_t) (finegrafptr->s.procglbnbr * 3 * sizeof (Gnum)), &vsnddattab, (size_t) (coargrafptr->s.vertlocnbr * 2 * sizeof (Gnum)), /* TRICK: vsnddattab overlaps with vrcvdattab */ &vrcvdattab, (size_t) (MAX ((coargrafptr->s.vertlocnbr * 2), finegrafptr->s.vertlocnbr) * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vdgraphSeparateMlUncoarsen: out of memory (2)"); reduloctab[5] = 1; } if (coargrafptr->s.procglbnbr <= 0) { /* If unused folded coargrafptr */ reduloctab[0] = 1; /* Set it as invalid */ reduloctab[1] = 0; /* Useless rank */ reduloctab[2] = 1; /* Color is not the one of folded */ reduloctab[3] = /* Prevent Valgrind from yelling */ reduloctab[4] = 0; } else { reduloctab[0] = ((coargrafptr->compglbsize[0] == 0) || /* Empty separated parts are deemed invalid */ (coargrafptr->compglbsize[1] == 0)) ? 1 : 0; reduloctab[1] = finegrafptr->s.proclocnum; /* Set rank and color key according to coarse graph (sub)communicator */ reduloctab[2] = finegrafptr->s.prockeyval; reduloctab[3] = coargrafptr->compglbsize[2]; reduloctab[4] = coargrafptr->compglbloaddlt; } if ((MPI_Type_contiguous (6, GNUM_MPI, &besttypedat) != MPI_SUCCESS) || (MPI_Type_commit (&besttypedat) != MPI_SUCCESS) || (MPI_Op_create ((MPI_User_function *) vdgraphSeparateMlOpBest, 1, &bestoperdat) != MPI_SUCCESS)) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (2)"); return (1); } if (MPI_Allreduce (reduloctab, reduglbtab, 1, besttypedat, bestoperdat, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (3)"); return (1); } if ((MPI_Op_free (&bestoperdat) != MPI_SUCCESS) || (MPI_Type_free (&besttypedat) != MPI_SUCCESS)) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (4)"); return (1); } if (reduglbtab[5] != 0) { /* If memory error, return */ if (vsndcnttab != NULL) /* Partgsttax will be freed at the above level */ memFree (vsndcnttab); return (1); } if (reduglbtab[0] == 1) { /* If all possible partitions are invalid */ #ifdef SCOTCH_DEBUG_BDGRAPH2 errorPrintW ("vdgraphSeparateMlUncoarsen: no valid partition"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (1); /* All invalid partitions will lead to low method be applied at upper level */ } finevertlocadj = finegrafptr->s.procvrttab[finegrafptr->s.proclocnum] - finegrafptr->s.baseval; fineveloglbtax = (finegrafptr->s.veloloctax != NULL) ? (finegrafptr->s.veloloctax - finevertlocadj) : NULL; /* Array can be indexed with global vertex numbers */ finepartglbtax = finegrafptr->partgsttax - finevertlocadj; finegrafptr->complocload[0] = finegrafptr->complocload[1] = finegrafptr->complocload[2] = finegrafptr->complocsize[0] = finegrafptr->complocsize[1] = finegrafptr->complocsize[2] = 0; #ifdef SCOTCH_DEBUG_VDGRAPH2 memSet (finegrafptr->partgsttax + finegrafptr->s.baseval, 3, finegrafptr->s.vertgstnbr * sizeof (GraphPart)); /* Mark all vertices as unvisited */ #endif /* SCOTCH_DEBUG_VDGRAPH2 */ memSet (vsndcnttab, 0, ((byte *) srcvdattab) - ((byte *) vsndcnttab)); /* TRICK: Assume process has nothing to send in vsndcnttab and ssnddattab */ if (reduglbtab[2] == (Gnum) coargrafptr->s.prockeyval) { /* If we belong to the group of the lead process, we must browse and send local data */ Gnum fineveloval; Gnum finevertsndnbr1; Gnum finevertsndnbr2; Gnum finevertglbmin; Gnum finevertglbmax; Gnum finevertglbnnd; Gnum vsnddatnbr; Gnum vsnddatnum; Gnum vsnddattmp; const GraphPart * restrict const coarpartgsttax = coargrafptr->partgsttax; fineveloval = 1; /* Assume no vertex loads */ finevertglbmin = finegrafptr->s.procvrttab[finegrafptr->s.proclocnum]; finevertglbmax = finegrafptr->s.procvrttab[finegrafptr->s.proclocnum + 1]; finecomplocload0 = finecomplocload2 = finecomplocsize1 = finecomplocsize2 = 0; for (coarvertnum = coargrafptr->s.baseval, vsnddatnbr = 0; coarvertnum < coargrafptr->s.vertlocnnd; coarvertnum ++) { Gnum finevertglbnum; GraphPart coarpartval; coarpartval = coarpartgsttax[coarvertnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if ((coarpartval < 0) || (coarpartval > 2)) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finevertglbnum = coarmulttax[coarvertnum].vertglbnum[0]; while (1) { /* Loop on both fine vertices of multinode */ Gnum finepartval; finepartval = (Gnum) coarpartval; if ((finevertglbnum >= finevertglbmin) && (finevertglbnum < finevertglbmax)) { /* Vertex is a local one */ #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[finevertglbnum] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finepartglbtax[finevertglbnum] = coarpartval; finecomplocsize1 += finepartval & 1; /* One extra vertex created in part 1 if (coarpartval == 1) */ if (fineveloglbtax != NULL) fineveloval = fineveloglbtax[finevertglbnum]; if (coarpartval == 2) { finecomplocload2 += fineveloval; finefronloctab[finecomplocsize2 ++] = finevertglbnum - finevertlocadj; } else finecomplocload0 += fineveloval & (finepartval - 1); } else { /* Non local vertex */ vsnddattab[vsnddatnbr ++] = finevertglbnum; /* Store index and part */ vsnddattab[vsnddatnbr ++] = finepartval; } if (finevertglbnum == coarmulttax[coarvertnum].vertglbnum[1]) /* If single-vertex multinode or both vertices processed */ break; finevertglbnum = coarmulttax[coarvertnum].vertglbnum[1]; /* Process second multinode */ } } finegrafptr->complocload[0] = finecomplocload0; /* Account for local vertices already processed */ finegrafptr->complocload[2] = finecomplocload2; finegrafptr->complocsize[1] = finecomplocsize1; finegrafptr->complocsize[2] = finecomplocsize2; intSort2asc1 ((void *) vsnddattab, vsnddatnbr >> 1); /* Sort vertices to send by ascending global numbers */ finevertsndnbr1 = finevertsndnbr2 = 0; for (vsnddatnum = vsnddattmp = 0, procnum = 0, finevertglbnnd = finegrafptr->s.procvrttab[1]; vsnddatnum < vsnddatnbr; ) { Gnum finevertglbnum; Gnum finepartval; finevertglbnum = vsnddattab[vsnddatnum]; finepartval = vsnddattab[vsnddatnum + 1]; if (finevertglbnum >= finevertglbnnd) { Gnum finevertsndnbr; finevertsndnbr = (vsnddatnum - vsnddattmp) >> 1; finevertsndnbr2 >>= 1; vsndcnttab[procnum] = (int) finevertsndnbr; ssnddattab[3 * procnum] = finevertsndnbr - finevertsndnbr1 - finevertsndnbr2; ssnddattab[3 * procnum + 1] = finevertsndnbr1; ssnddattab[3 * procnum + 2] = finevertsndnbr2; vdgraphSeparateMlPack (vsnddattab, vsnddattmp >> 1, ssnddattab + (3 * procnum)); do finevertglbnnd = finegrafptr->s.procvrttab[(++ procnum) + 1]; while (finevertglbnum >= finevertglbnnd); vsnddattmp = vsnddatnum; /* Set startpoint for new neighbor */ finevertsndnbr1 = finevertsndnbr2 = 0; } vsnddatnum += 2; finevertsndnbr1 += finepartval & 1; /* Count number of vertices in part 1 */ finevertsndnbr2 += finepartval & 2; /* Count twice number of vertices in part 2 */ } finevertsndnbr2 >>= 1; /* Complete data for last receiver process */ vsndcnttab[procnum] = (int) ((vsnddatnum - vsnddattmp) >> 1); ssnddattab[3 * procnum] = ((vsnddatnum - vsnddattmp) >> 1) - finevertsndnbr1 - finevertsndnbr2; ssnddattab[3 * procnum + 1] = finevertsndnbr1; ssnddattab[3 * procnum + 2] = finevertsndnbr2; vdgraphSeparateMlPack (vsnddattab, (Gnum) vsnddattmp >> 1, ssnddattab + (3 * procnum)); #ifdef SCOTCH_DEBUG_VDGRAPH2 if ((ssnddattab[3 * finegrafptr->s.proclocnum] != 0) || /* One should never send something to itself */ (ssnddattab[3 * finegrafptr->s.proclocnum + 1] != 0) || (ssnddattab[3 * finegrafptr->s.proclocnum + 2] != 0)) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } if (MPI_Alltoall (ssnddattab, 3, GNUM_MPI, srcvdattab, 3, GNUM_MPI, finegrafptr->s.proccomm) != MPI_SUCCESS) { /* Exchange sizes */ errorPrint ("vdgraphSeparateMlUncoarsen: communication error (2)"); return (1); } vrcvcnttab = (int *) ssnddattab; /* TRICK: re-use ssnddattab */ vsnddsptab = vrcvcnttab + finegrafptr->s.procglbnbr; vrcvdsptab = vrcvcnttab + finegrafptr->s.procglbnbr * 2; for (procnum = 0, vsnddspnum = vrcvdspnum = 0; procnum < finegrafptr->s.procglbnbr; procnum ++) { /* Compute size of data to exchange */ vrcvcnttab[procnum] = (int) (srcvdattab[3 * procnum] + srcvdattab[3 * procnum + 1] + srcvdattab[3 * procnum + 2]); vrcvdsptab[procnum] = vrcvdspnum; vsnddsptab[procnum] = vsnddspnum; vrcvdspnum += vrcvcnttab[procnum]; vsnddspnum += vsndcnttab[procnum]; } if (MPI_Alltoallv (vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, /* Exchange data */ vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (3)"); return (1); } finecomplocload0 = finegrafptr->complocload[0]; finecomplocload2 = finegrafptr->complocload[2]; finecomplocsize1 = finegrafptr->complocsize[1]; finecomplocsize2 = finegrafptr->complocsize[2]; for (procnum = 0, vrcvdatnum = 0; /* Process partition data per process number */ procnum < finegrafptr->s.procglbnbr; procnum ++) { Gnum vrcvdatnnd; vrcvdatnnd = vrcvdatnum + srcvdattab[3 * procnum]; if (fineveloglbtax != NULL) { for ( ; vrcvdatnum < vrcvdatnnd; vrcvdatnum ++) { Gnum finevertglbnum; finevertglbnum = vrcvdattab[vrcvdatnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[finevertglbnum] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finepartglbtax[finevertglbnum] = 0; finecomplocload0 += fineveloglbtax[finevertglbnum]; } } else { finecomplocload0 += srcvdattab[3 * procnum]; for ( ; vrcvdatnum < vrcvdatnnd; vrcvdatnum ++) { #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[vrcvdattab[vrcvdatnum]] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finepartglbtax[vrcvdattab[vrcvdatnum]] = 0; } } finecomplocsize1 += srcvdattab[3 * procnum + 1]; vrcvdatnnd = vrcvdatnum + srcvdattab[3 * procnum + 1]; for ( ; vrcvdatnum < vrcvdatnnd; vrcvdatnum ++) { #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[vrcvdattab[vrcvdatnum]] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finepartglbtax[vrcvdattab[vrcvdatnum]] = 1; } vrcvdatnnd = vrcvdatnum + srcvdattab[3 * procnum + 2]; if (fineveloglbtax != NULL) { for ( ; vrcvdatnum < vrcvdatnnd; vrcvdatnum ++) { Gnum finevertglbnum; finevertglbnum = vrcvdattab[vrcvdatnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[finevertglbnum] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finefronloctab[finecomplocsize2 ++] = finevertglbnum - finevertlocadj; finepartglbtax[finevertglbnum] = 2; finecomplocload2 += fineveloglbtax[finevertglbnum]; } } else { finecomplocload2 += srcvdattab[3 * procnum + 2]; for ( ; vrcvdatnum < vrcvdatnnd; vrcvdatnum ++) { Gnum finevertglbnum; finevertglbnum = vrcvdattab[vrcvdatnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (finepartglbtax[finevertglbnum] != 3) { errorPrint ("vdgraphSeparateMlUncoarsen: internal error (9)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ finefronloctab[finecomplocsize2 ++] = finevertglbnum - finevertlocadj; finepartglbtax[finevertglbnum] = 2; } } } finegrafptr->complocload[0] = finecomplocload0; finegrafptr->complocload[1] = finegrafptr->s.velolocsum - finecomplocload0 - finecomplocload2; finegrafptr->complocload[2] = finecomplocload2; finegrafptr->complocsize[0] = finegrafptr->s.vertlocnbr - finecomplocsize1 - finecomplocsize2; finegrafptr->complocsize[1] = finecomplocsize1; finegrafptr->complocsize[2] = finecomplocsize2; memFree (vsndcnttab); /* Free group leader */ reduloctab[0] = finegrafptr->complocload[0]; reduloctab[1] = finegrafptr->complocload[1]; reduloctab[2] = finegrafptr->complocload[2]; reduloctab[3] = finegrafptr->complocsize[0]; reduloctab[4] = finegrafptr->complocsize[1]; reduloctab[5] = finegrafptr->complocsize[2]; if (MPI_Allreduce (reduloctab, reduglbtab, 6, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateMlUncoarsen: communication error (4)"); return (1); } finegrafptr->compglbload[0] = reduglbtab[0]; finegrafptr->compglbload[1] = reduglbtab[1]; finegrafptr->compglbload[2] = reduglbtab[2]; finegrafptr->compglbsize[0] = reduglbtab[3]; finegrafptr->compglbsize[1] = reduglbtab[4]; finegrafptr->compglbsize[2] = reduglbtab[5]; finegrafptr->compglbloaddlt = reduglbtab[0] - reduglbtab[1]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (finegrafptr) != 0) { errorPrint ("vdgraphSeparateMlUncoarsen: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ return (0); } /* This routine recursively performs the ** separation recursion. ** It returns: ** - 0 : if separator could be computed. ** - !0 : on error. */ static int vdgraphSeparateMl2 ( Vdgraph * restrict const grafptr, /* Vertex-separation graph */ const VdgraphSeparateMlParam * const paraptr) /* Method parameters */ { Vdgraph coargrafdat; DgraphCoarsenMulti * restrict coarmulttax; int o; if (grafptr->s.procglbnbr <= 1) { /* No need to stay parallel */ if (((o = vdgraphSeparateMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = vdgraphSeparateSt (grafptr, paraptr->stratseq)) != 0)) { #ifdef SCOTCH_DEBUG_VDGRAPH2 errorPrintW ("vdgraphSeparateMl2: cannot apply sequential strategy"); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } return (o); } coarmulttax = NULL; /* Assume multinode array is not allocated */ if (vdgraphSeparateMlCoarsen (grafptr, &coargrafdat, &coarmulttax, paraptr) == 0) { o = (coargrafdat.s.procglbnbr == 0) ? 0 : vdgraphSeparateMl2 (&coargrafdat, paraptr); /* Apply recursion on coarsened graph if it exists */ if ((o == 0) && ((o = vdgraphSeparateMlUncoarsen (grafptr, &coargrafdat, coarmulttax)) == 0) && ((o = vdgraphSeparateSt (grafptr, paraptr->stratasc)) != 0)) { /* Apply ascending strategy if uncoarsening worked */ #ifdef SCOTCH_DEBUG_VDGRAPH2 errorPrintW ("vdgraphSeparateMl2: cannot apply ascending strategy"); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } if (coargrafdat.fronloctab == grafptr->fronloctab) /* If coarse graph shares fronloctab with fine graph */ coargrafdat.fronloctab = NULL; /* Prevent fronloctab of fine graph from being freed */ vdgraphExit (&coargrafdat); if (coarmulttax != NULL) /* If multinode array has been allocated */ memFree (coarmulttax + grafptr->s.baseval); /* Free array */ if (o == 0) /* If multi-level failed, apply low strategy as fallback */ return (o); } if (((o = vdgraphSeparateMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = vdgraphSeparateSt (grafptr, paraptr->stratlow)) != 0)) { /* Apply low strategy */ #ifdef SCOTCH_DEBUG_VDGRAPH2 errorPrintW ("vdgraphSeparateMl2: cannot apply low strategy"); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the muti-level separation. ** It returns: ** - 0 : if separator could be computed. ** - 1 : on error. */ int vdgraphSeparateMl ( Vdgraph * const grafptr, /*+ Vertex-separation graph +*/ const VdgraphSeparateMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = grafptr->levlnum; /* Save graph level */ grafptr->levlnum = 0; /* Initialize coarsening level */ o = vdgraphSeparateMl2 (grafptr, paraptr); /* Perform multi-level separation */ grafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/hdgraph_gather.c0000644000302600021200000005247513470115365021153 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_gather.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized halo graph by **/ /** gathering the pieces of a distributed **/ /** halo graph. **/ /** **/ /** DATES : # Version 5.0 : from : 19 apr 2006 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 27 nov 2012 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_GATHER #include "module.h" #include "common.h" #include "comm.h" #include "graph.h" #include "hgraph.h" #include "dgraph.h" #include "hdgraph.h" /******************************/ /* */ /* These routines handle halo */ /* distributed source graphs. */ /* */ /******************************/ /* This function gathers the pieces of ** a distributed halo graph to build a ** centralized halo graph. ** There is no gathered vnumtab array if ** the original graph did not have one, as ** vertices are gathered in global order, or ** else the original vnumloctab is gathered. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int hdgraphGather ( Hdgraph * restrict const dgrfptr, /* Distributed halo graph */ Hgraph * restrict const cgrfptr) /* Centralized halo graph */ { Gnum vertlocnum; Gnum vertlocadj; /* Local vertex array adjust */ Gnum vhallocnnd; int vhallocnbr; /* Local copy for sending as a MPI_INT */ Gnum * restrict verthaltax; Gnum * restrict edgehaltax; Gnum edgehalnum; int ehallocnbr; /* Local copy for sending as a MPI_INT */ int rootnum; /* Index of root process */ Gnum reduloctab[4]; /* Arrays for reductions */ Gnum reduglbtab[4]; int * restrict recvcnttab; /* Arrays for parametrizing gather operations */ int * restrict recvdsptab; int cheklocval; int chekglbval; Gnum degrmax; if (cgrfptr != NULL) { /* If centralized graph provided */ reduloctab[0] = 1; /* This process is the root */ reduloctab[1] = (Gnum) dgrfptr->s.proclocnum; /* Get its rank */ } else { reduloctab[0] = /* This process is not the root */ reduloctab[1] = 0; } reduloctab[2] = dgrfptr->vhallocnbr; reduloctab[3] = dgrfptr->ehallocnbr; if (MPI_Allreduce (reduloctab, reduglbtab, 4, GNUM_MPI, MPI_SUM, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (1)"); return (1); } if (reduglbtab[0] != 1) { errorPrint ("hdgraphGather: should have only one root"); return (1); } rootnum = (int) reduglbtab[1]; /* Get rank of root process */ degrmax = dgrfptr->s.degrglbmax; /* Distributed degree does not account for halo edges */ cheklocval = 0; if (cgrfptr != NULL) { /* If process is root */ Gnum vnohnbr; Gnum vertnbr; Gnum velonbr; Gnum vnumnbr; Gnum * restrict velotax; Gnum * restrict vnumtax; Gnum edgenbr; vnohnbr = dgrfptr->s.vertglbnbr; vertnbr = vnohnbr + reduglbtab[2]; velonbr = (dgrfptr->s.veloloctax != NULL) ? vertnbr : 0; vnumnbr = (dgrfptr->s.vnumloctax != NULL) ? vnohnbr : 0; /* Vertex numbers only serve for non-halo vertices */ edgenbr = dgrfptr->s.edgeglbnbr + 2 * reduglbtab[3]; /* Twice since halo vertices will be created for real */ cgrfptr->s.flagval = GRAPHFREEEDGE | GRAPHEDGEGROUP | GRAPHFREEVERT | GRAPHVERTGROUP; /* In case of premature freeing on error */ recvcnttab = NULL; if (memAllocGroup ((void **) (void *) &cgrfptr->s.verttax, (size_t) ((vertnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &velotax, (size_t) (velonbr * sizeof (Gnum)), &vnumtax, (size_t) (vnumnbr * sizeof (Gnum)), &cgrfptr->vnhdtax, (size_t) (vnohnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hdgraphGather: out of memory (1)"); cheklocval = 1; } else if (cgrfptr->s.verttax -= dgrfptr->s.baseval, cgrfptr->s.velotax = (dgrfptr->s.veloloctax != NULL) ? velotax - dgrfptr->s.baseval : NULL, cgrfptr->s.vnumtax = (dgrfptr->s.vnumloctax != NULL) ? vnumtax - dgrfptr->s.baseval : NULL, cgrfptr->vnhdtax -= dgrfptr->s.baseval, ((cgrfptr->s.edgetax = (Gnum *) memAlloc (edgenbr * sizeof (Gnum))) == NULL)) { errorPrint ("hdgraphGather: out of memory (2)"); cheklocval = 1; } else if (cgrfptr->s.edgetax -= dgrfptr->s.baseval, memAllocGroup ((void **) (void *) &recvcnttab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), &recvdsptab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("hdgraphGather: out of memory (3)"); cheklocval = 1; } else { cgrfptr->s.baseval = dgrfptr->s.baseval; cgrfptr->s.vertnbr = vertnbr; cgrfptr->s.vertnnd = vertnbr + dgrfptr->s.baseval; cgrfptr->s.vendtax = cgrfptr->s.verttax + 1; /* Compact edge array */ cgrfptr->s.velosum = dgrfptr->s.veloglbsum + reduglbtab[2]; /* Halo vertices have unity vertex loads */ cgrfptr->s.vlbltax = NULL; cgrfptr->s.edgenbr = edgenbr; cgrfptr->s.edlotax = NULL; cgrfptr->s.edlosum = edgenbr; cgrfptr->s.procptr = NULL; /* Not a multi-sequential gather: no communication possible */ cgrfptr->vnohnbr = vnohnbr; cgrfptr->vnohnnd = vnohnbr + dgrfptr->s.baseval; cgrfptr->vnlosum = dgrfptr->s.veloglbsum; cgrfptr->enohnbr = cgrfptr->enlosum = dgrfptr->s.edgeglbnbr; cgrfptr->levlnum = dgrfptr->levlnum; } } if ((cheklocval == 0) && (memAllocGroup ((void **) (void *) &verthaltax, (size_t) (dgrfptr->vhallocnbr * sizeof (Gnum)), &edgehaltax, (size_t) (dgrfptr->ehallocnbr * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("hdgraphGather: out of memory (4)"); cheklocval = 1; } else { verthaltax -= dgrfptr->s.baseval; edgehaltax -= dgrfptr->s.baseval; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_SUM, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (2)"); return (1); } if (chekglbval != 0) { if (verthaltax != NULL) memFree (verthaltax + dgrfptr->s.baseval); if (cgrfptr != NULL) { /* If data were previously allocated */ if (recvcnttab != NULL) memFree (recvcnttab); hgraphExit (cgrfptr); } return (1); } if (dgrfptr->vhndloctax == dgrfptr->s.vertloctax + 1) { /* If distributed halo graph is compact */ Gnum procglbnum; Gnum edgenum; if (cgrfptr != NULL) { Gnum vertnum; cgrfptr->s.verttax[dgrfptr->s.baseval] = dgrfptr->s.baseval; if (commGatherv (dgrfptr->s.vertloctax + 1 + dgrfptr->s.baseval, /* Do not send first index, it is always equal to baseval */ dgrfptr->s.vertlocnbr, GNUM_MPI, cgrfptr->s.verttax + 1, /* First index will always be equal to baseval too, and procdsptab holds based values */ dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (3)"); return (1); } if (commGatherv (dgrfptr->s.vendloctax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GNUM_MPI, cgrfptr->vnhdtax, /* procdsptab holds based values */ dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (4)"); return (1); } for (procglbnum = 1, vertnum = dgrfptr->s.procdsptab[1] + 1; /* Adjust index sub-arrays for all processors except the first one */ procglbnum < dgrfptr->s.procglbnbr; procglbnum ++) { Gnum vertnnd; Gnum edgeadj; for (vertnnd = dgrfptr->s.procdsptab[procglbnum + 1] + 1, edgeadj = cgrfptr->s.verttax[vertnum - 1] - dgrfptr->s.baseval; vertnum < vertnnd; vertnum ++) { cgrfptr->s.verttax[vertnum] += edgeadj; cgrfptr->vnhdtax[vertnum - 1] += edgeadj; } } for (procglbnum = 0, edgenum = dgrfptr->s.baseval; /* Build arrays for MPI_Gatherv on edge arrays */ procglbnum < dgrfptr->s.procglbnbr; procglbnum ++) { recvcnttab[procglbnum] = cgrfptr->s.verttax[dgrfptr->s.procdsptab[procglbnum + 1]] - cgrfptr->s.verttax[dgrfptr->s.procdsptab[procglbnum]]; /* verttax used twice since centralized graph is compact */ recvdsptab[procglbnum] = edgenum; edgenum += recvcnttab[procglbnum]; } if (MPI_Gatherv (dgrfptr->s.edgeloctax + dgrfptr->s.baseval, /* Gather edge arrays with global vertex indices */ (int) (dgrfptr->s.edgelocnbr + dgrfptr->ehallocnbr), GNUM_MPI, cgrfptr->s.edgetax, recvcnttab, recvdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (5)"); return (1); } } else { if (MPI_Gatherv (dgrfptr->s.vertloctax + 1 + dgrfptr->s.baseval, /* Do not send first index, it is always equal to baseval */ (int) dgrfptr->s.vertlocnbr, GNUM_MPI, NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (6)"); return (1); } if (MPI_Gatherv (dgrfptr->s.vendloctax + dgrfptr->s.baseval, (int) dgrfptr->s.vertlocnbr, GNUM_MPI, NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (7)"); return (1); } if (MPI_Gatherv (dgrfptr->s.edgeloctax + dgrfptr->s.baseval, /* Gather edge arrays with global vertex indices */ (int) (dgrfptr->s.edgelocnbr + dgrfptr->ehallocnbr), GNUM_MPI, NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (8)"); return (1); } } } else { errorPrint ("hdgraphGather: Not implemented"); /* Not really necessary as all Hdgraph structures created by Scotch itself are compact */ return (1); } memSet (verthaltax + dgrfptr->s.baseval, 0, dgrfptr->vhallocnbr * sizeof (Gnum)); /* Initialize halo end vertex count array */ for (vertlocnum = dgrfptr->s.baseval; vertlocnum < dgrfptr->s.vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = dgrfptr->s.vendloctax[vertlocnum]; edgelocnum < dgrfptr->vhndloctax[vertlocnum]; edgelocnum ++) verthaltax[dgrfptr->s.edgeloctax[edgelocnum]] ++; /* One more edge to this halo vertex */ } vhallocnbr = (int) dgrfptr->vhallocnbr; if (MPI_Gather (&vhallocnbr, 1, MPI_INT, recvcnttab, 1, MPI_INT, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (9)"); return (1); } if (cgrfptr != NULL) { /* Build gather parameter array to receive halo edge counts */ Gnum procglbnum; Gnum vertnum; for (procglbnum = 0, vertnum = 0; procglbnum < dgrfptr->s.procglbnbr; procglbnum ++) { /* Displacements start from zero because adjusted later */ recvdsptab[procglbnum] = vertnum; vertnum += recvcnttab[procglbnum]; } if (MPI_Gatherv (verthaltax + dgrfptr->s.baseval, (int) dgrfptr->vhallocnbr, GNUM_MPI, /* Gather count arrays of halo vertices */ cgrfptr->s.verttax + cgrfptr->vnohnnd + 1, recvcnttab, recvdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (10)"); return (1); } for (procglbnum = 0, vertnum = dgrfptr->s.baseval; /* Adjust end vertex indices for halo edges */ procglbnum < dgrfptr->s.procglbnbr; procglbnum ++) { Gnum vertnnd; Gnum vertadj; for (vertnnd = dgrfptr->s.procdsptab[procglbnum + 1], vertadj = cgrfptr->vnohnbr + recvdsptab[procglbnum]; vertnum < vertnnd; vertnum ++) { Gnum edgenum; if (degrmax < (cgrfptr->s.vendtax[vertnum] - cgrfptr->s.verttax[vertnum])) /* Account for halo edges in maximum degree */ degrmax = (cgrfptr->s.vendtax[vertnum] - cgrfptr->s.verttax[vertnum]); for (edgenum = cgrfptr->vnhdtax[vertnum]; edgenum < cgrfptr->s.vendtax[vertnum]; edgenum ++) cgrfptr->s.edgetax[edgenum] += vertadj; } } } else { if (MPI_Gatherv (verthaltax + dgrfptr->s.baseval, (int) dgrfptr->vhallocnbr, GNUM_MPI, /* Gather count arrays of halo vertices */ NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (11)"); return (1); } } for (vertlocnum = edgehalnum = dgrfptr->s.baseval, vhallocnnd = dgrfptr->vhallocnbr + dgrfptr->s.baseval; vertlocnum < vhallocnnd; vertlocnum ++) { /* Prepare index array for edge collection */ Gnum degrlocval; degrlocval = verthaltax[vertlocnum]; verthaltax[vertlocnum] = edgehalnum; edgehalnum += degrlocval; } vertlocadj = dgrfptr->s.procdsptab[dgrfptr->s.proclocnum] - dgrfptr->s.baseval; for (vertlocnum = dgrfptr->s.baseval; vertlocnum < dgrfptr->s.vertlocnnd; vertlocnum ++) { /* Collect halo edge ends */ Gnum edgelocnum; for (edgelocnum = dgrfptr->s.vendloctax[vertlocnum]; edgelocnum < dgrfptr->vhndloctax[vertlocnum]; edgelocnum ++) edgehaltax[verthaltax[dgrfptr->s.edgeloctax[edgelocnum]] ++] = vertlocnum + vertlocadj; } ehallocnbr = (int) dgrfptr->ehallocnbr; if (MPI_Gather (&ehallocnbr, 1, MPI_INT, recvcnttab, 1, MPI_INT, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { /* Gather halo edge counts */ errorPrint ("hdgraphGather: communication error (12)"); return (1); } if (cgrfptr != NULL) { /* Compute receive arrays for edge sub-arrays of halo vertices */ Gnum procglbnum; Gnum edgeadj; for (procglbnum = 0, edgeadj = 0; procglbnum < dgrfptr->s.procglbnbr; procglbnum ++) { recvdsptab[procglbnum] = edgeadj; edgeadj += recvcnttab[procglbnum]; } if (MPI_Gatherv (edgehaltax + dgrfptr->s.baseval, (int) dgrfptr->ehallocnbr, GNUM_MPI, /* Gather edge arrays of halo vertices */ cgrfptr->s.edgetax + cgrfptr->enohnbr + reduglbtab[3] + dgrfptr->s.baseval, recvcnttab, recvdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (13)"); return (1); } } else { if (MPI_Gatherv (edgehaltax + dgrfptr->s.baseval, (int) dgrfptr->ehallocnbr, GNUM_MPI, /* Gather edge arrays of halo vertices */ NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (14)"); return (1); } } memFree (verthaltax + dgrfptr->s.baseval); /* Free group leader */ if (cgrfptr != NULL) { /* Finalize vertex and edge arrays of centralized graph */ Gnum vertnum; Gnum edgeadj; if (dgrfptr->s.veloloctax != NULL) { /* Get vertex loads if any */ if (commGatherv (dgrfptr->s.veloloctax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GNUM_MPI, cgrfptr->s.velotax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (15)"); return (1); } for (vertnum = cgrfptr->vnohnnd; vertnum < cgrfptr->s.vertnnd; vertnum ++) /* complete filling of vertex load array */ cgrfptr->s.velotax[vertnum] = 1; } if (dgrfptr->s.vnumloctax != NULL) { /* Get vertex numbers if any */ if (commGatherv (dgrfptr->s.vnumloctax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GNUM_MPI, cgrfptr->s.vnumtax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (16)"); return (1); } } memFree (recvcnttab); /* Free group leader */ for (vertnum = cgrfptr->vnohnnd + 1, edgeadj = cgrfptr->s.verttax[cgrfptr->vnohnnd]; /* Adjust vertex array for halo vertices */ vertnum <= cgrfptr->s.vertnnd; vertnum ++) { Gnum degrval; degrval = cgrfptr->s.verttax[vertnum]; if (degrmax < degrval) /* Account for halo edges in maximum degree */ degrmax = degrval; edgeadj += degrval; cgrfptr->s.verttax[vertnum] = edgeadj; } cgrfptr->s.degrmax = degrmax; } else { if (dgrfptr->s.veloloctax != NULL) { /* Get vertex loads if any */ if (MPI_Gatherv (dgrfptr->s.veloloctax + dgrfptr->s.baseval, (int) dgrfptr->s.vertlocnbr, GNUM_MPI, NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (17)"); return (1); } } if (dgrfptr->s.vnumloctax != NULL) { /* Get vertex numbers if any */ if (MPI_Gatherv (dgrfptr->s.vnumloctax + dgrfptr->s.baseval, (int) dgrfptr->s.vertlocnbr, GNUM_MPI, NULL, NULL, NULL, GNUM_MPI, rootnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (18)"); return (1); } } } #ifdef SCOTCH_DEBUG_HDGRAPH2 cheklocval = (cgrfptr != NULL) ? hgraphCheck (cgrfptr) : 0; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphGather: communication error (19)"); return (1); } if (chekglbval != 0) { errorPrint ("hdgraphGather: internal error"); if (cgrfptr != NULL) hgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/graph_induce.h0000644000302600021200000000721713465315041020630 0ustar pelegrinpelegrin/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_induce.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph sub-graph making **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 02 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 18 aug 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 28 nov 1995 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 17 sep 1998 **/ /** # Version 4.0 : from : 28 nov 2001 **/ /** to 28 nov 2001 **/ /** # Version 6.0 : from : 03 aug 2016 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ #ifdef GRAPH_INDUCE static int graphInduce2 (const Graph * const, Graph * const, const Gnum); static int graphInduce3 (const Graph * const, Graph * const, const Gnum, const Gnum); #endif /* GRAPH_INDUCE */ scotch_6.0.9/src/libscotch/hmesh_hgraph.c0000644000302600021200000003532613470115365020635 0ustar pelegrinpelegrin/* Copyright 2004,2007,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_hgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source halo **/ /** mesh to halo graph conversion function. **/ /** **/ /** DATES : # Version 4.0 : from : 30 nov 2003 **/ /** to 05 may 2004 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ /** # Version 6.0 : from : 28 apr 2019 **/ /** to : 28 apr 2019 **/ /** **/ /** NOTES : # From a given halo mesh is created a **/ /** halo graph, such that all vertices of **/ /** the graph represent the nodes of the **/ /** mesh, and there exists an edge **/ /** between two vertices if there exists **/ /** at least one element to which the two **/ /** associated nodes belong. **/ /** While all non-halo nodes become non- **/ /** halo vertices, some halo nodes may **/ /** disappear from the graph if their **/ /** elements are only connected to other **/ /** halo nodes. **/ /** Since the contents of vnumtab are **/ /** based with respect to s.baseval and **/ /** not to vnodbas, the vnumtab array can **/ /** simply be shared by the graph. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_HGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_hgraph.h" /************************************/ /* */ /* The halo graph building routine. */ /* */ /************************************/ /* This routine builds a halo graph from ** the given halo mesh. ** It returns: ** - 0 : if the halo graph has been successfully built. ** - 1 : on error. */ int hmeshHgraph ( const Hmesh * restrict const meshptr, /*+ Original mesh +*/ Hgraph * restrict const grafptr) /*+ Graph to build +*/ { Gnum hashnbr; /* Number of vertices in hash table */ Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ HmeshHgraphHash * restrict hashtab; /* Table of edges to other node vertices */ Gnum edgemax; /* Upper bound of number of edges in mesh */ Gnum edgennd; /* Based upper bound on number of edges */ Gnum enohnbr; /* Number of non-halo edges */ Gnum edgenum; /* Number of current graph edge */ Gnum vertnum; /* Number of current graph vertex */ Gnum degrmax; #ifdef SCOTCH_DEBUG_HMESH2 if (hmeshCheck (meshptr) != 0) { errorPrint ("hmeshHgraph: invalid input halo mesh"); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ grafptr->s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->s.baseval = meshptr->m.baseval; grafptr->s.vertnbr = meshptr->m.vnodnbr; grafptr->s.vertnnd = meshptr->m.vnodnbr + meshptr->m.baseval; grafptr->vnohnbr = meshptr->vnohnbr; grafptr->vnohnnd = meshptr->vnohnbr + grafptr->s.baseval; grafptr->vnlosum = meshptr->vnhlsum; for (hashsiz = 2, hashnbr = meshptr->m.degrmax * meshptr->m.degrmax * 2; /* Compute size of hash table */ hashsiz < hashnbr; hashsiz <<= 1) ; hashmsk = hashsiz - 1; if (memAllocGroup ((void **) (void *) &grafptr->s.verttax, (size_t) ((grafptr->s.vertnbr + 1) * sizeof (Gnum)), &grafptr->vnhdtax, (size_t) ( grafptr->vnohnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshHgraph: out of memory (1)"); return (1); } if ((hashtab = memAlloc (hashsiz * sizeof (HmeshHgraphHash))) == NULL) { errorPrint ("hmeshHgraph: out of memory (2)"); memFree (grafptr->s.verttax); return (1); } grafptr->s.verttax -= grafptr->s.baseval; grafptr->s.vendtax = grafptr->s.verttax + 1; grafptr->vnhdtax -= grafptr->s.baseval; if (meshptr->m.vnumtax != NULL) /* If (node) vertex index array present, point to its relevant part */ grafptr->s.vnumtax = meshptr->m.vnumtax + (meshptr->m.vnodbas - grafptr->s.baseval); /* Since GRAPHVERTGROUP, no problem on graphFree */ if (meshptr->m.vnlotax != NULL) /* Keep node part of mesh (node) vertex load array as graph vertex load array */ grafptr->s.velotax = meshptr->m.vnlotax + (meshptr->m.vnodbas - grafptr->s.baseval); /* Since GRAPHVERTGROUP, no problem on graphFree */ grafptr->s.velosum = meshptr->m.vnlosum; edgemax = ((meshptr->m.degrmax * meshptr->m.degrmax) / 2 + 1) * meshptr->m.vnodnbr; /* Compute estimated number of edges in graph */ #ifdef SCOTCH_DEBUG_HMESH2 edgemax = meshptr->m.degrmax + 4; /* Test dynamic reallocation of edge array; 4 guarantees that 25% > 0 */ #endif /* SCOTCH_DEBUG_HMESH2 */ if ((grafptr->s.edgetax = memAlloc (edgemax * sizeof (Gnum))) == NULL) { errorPrint ("hmeshHgraph: out of memory (3)"); hgraphFree (grafptr); memFree (hashtab); return (1); } grafptr->s.edgetax -= grafptr->s.baseval; memSet (hashtab, ~0, hashsiz * sizeof (HmeshHgraphHash)); /* Initialize hash table */ for (vertnum = edgenum = grafptr->s.baseval, edgennd = edgemax + grafptr->s.baseval, enohnbr = degrmax = 0; /* Build graph edges for non-halo vertices */ vertnum < grafptr->vnohnnd; vertnum ++) { Gnum vnodnum; Gnum hnodnum; Gnum enodnum; Gnum enhdnum; /* Index of first non-halo neighbor in edge array for current vertex */ grafptr->s.verttax[vertnum] = edgenum; vnodnum = vertnum + (meshptr->m.vnodbas - meshptr->m.baseval); hnodnum = (vnodnum * HMESHHGRAPHHASHPRIME) & hashmsk; /* Prevent adding loop edge */ hashtab[hnodnum].vertnum = vnodnum; hashtab[hnodnum].vertend = vnodnum; for (enodnum = meshptr->m.verttax[vnodnum], enhdnum = edgenum; enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; velmnum = meshptr->m.edgetax[enodnum]; for (eelmnum = meshptr->m.verttax[velmnum]; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodend; Gnum hnodend; vnodend = meshptr->m.edgetax[eelmnum]; for (hnodend = (vnodend * HMESHHGRAPHHASHPRIME) & hashmsk; ; hnodend = (hnodend + 1) & hashmsk) { if (hashtab[hnodend].vertnum != vnodnum) { /* If edge not yet created */ Gnum vertend; if (edgenum == edgennd) { /* If edge array already full */ Gnum edgemax; Gnum * restrict edgetmp; edgemax = edgennd - grafptr->s.baseval; /* Increase size by 25 % */ edgemax = edgemax + (edgemax >> 2); if ((edgetmp = memRealloc (grafptr->s.edgetax + grafptr->s.baseval, edgemax * sizeof (Gnum))) == NULL) { errorPrint ("hmeshHgraph: out of memory (4)"); hgraphFree (grafptr); memFree (hashtab); return (1); } grafptr->s.edgetax = edgetmp - grafptr->s.baseval; edgennd = edgemax + grafptr->s.baseval; } hashtab[hnodend].vertnum = vnodnum; /* Record new edge */ hashtab[hnodend].vertend = vnodend; vertend = vnodend - (meshptr->m.vnodbas - grafptr->s.baseval); if (vnodend >= meshptr->vnohnnd) /* If halo edge */ grafptr->s.edgetax[edgenum ++] = vertend; /* Build at end of array */ else { /* If non-halo edge */ if (edgenum != enhdnum) /* If already halo edges */ grafptr->s.edgetax[edgenum] = grafptr->s.edgetax[enhdnum]; /* Make room */ grafptr->s.edgetax[enhdnum ++] = vertend; /* Record new edge */ edgenum ++; /* One more edge created */ } break; } if (hashtab[hnodend].vertend == vnodend) /* If edge already exists */ break; /* Skip to next neighbor */ } } } grafptr->vnhdtax[vertnum] = enhdnum; /* Set end of non-halo edge array */ enohnbr += enhdnum - grafptr->s.verttax[vertnum]; if ((edgenum - grafptr->s.verttax[vertnum]) > degrmax) /* Compute maximum degree */ degrmax = (edgenum - grafptr->s.verttax[vertnum]); } grafptr->enlosum = /* Graph edges are not weighted */ grafptr->enohnbr = enohnbr; /* All other edges will be halo edges */ for ( ; vertnum < grafptr->s.vertnnd; vertnum ++) { /* Build graph edges for halo vertices */ Gnum vnodnum; Gnum enodnum; vnodnum = vertnum + (meshptr->m.vnodbas - meshptr->m.baseval); grafptr->s.verttax[vertnum] = edgenum; for (enodnum = meshptr->m.verttax[vnodnum]; enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; velmnum = meshptr->m.edgetax[enodnum]; for (eelmnum = meshptr->m.verttax[velmnum]; /* Only consider non-halo edges of elements this time */ eelmnum < meshptr->vehdtax[velmnum]; eelmnum ++) { Gnum vnodend; Gnum hnodend; vnodend = meshptr->m.edgetax[eelmnum]; #ifdef SCOTCH_DEBUG_HMESH2 if (vnodend >= meshptr->vnohnnd) { /* Not visiting halo edges should prevent this */ errorPrint ("hmeshHgraph: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ for (hnodend = (vnodend * HMESHHGRAPHHASHPRIME) & hashmsk; ; hnodend = (hnodend + 1) & hashmsk) { if (hashtab[hnodend].vertnum != vnodnum) { /* If edge not yet created */ Gnum vertend; if (edgenum == edgennd) { /* If edge array already full */ Gnum edgemax; Gnum * restrict edgetmp; edgemax = edgennd - grafptr->s.baseval; /* Increase size by 25 % */ edgemax = edgemax + (edgemax >> 2); if ((edgetmp = memRealloc (grafptr->s.edgetax + grafptr->s.baseval, edgemax * sizeof (Gnum))) == NULL) { errorPrint ("hmeshHgraph: out of memory (5)"); hgraphFree (grafptr); memFree (hashtab); return (1); } grafptr->s.edgetax = edgetmp - grafptr->s.baseval; edgennd = edgemax + grafptr->s.baseval; } hashtab[hnodend].vertnum = vnodnum; /* Record new edge */ hashtab[hnodend].vertend = vnodend; vertend = vnodend - (meshptr->m.vnodbas - grafptr->s.baseval); grafptr->s.edgetax[edgenum ++] = vertend; /* Build halo edge */ break; } if (hashtab[hnodend].vertend == vnodend) /* If edge already exists */ break; /* Skip to next neighbor */ } } } if ((edgenum - grafptr->s.verttax[vertnum]) > degrmax) /* Compute maximum degree */ degrmax = (edgenum - grafptr->s.verttax[vertnum]); } grafptr->s.verttax[vertnum] = edgenum; /* Set end of vertex array */ grafptr->s.edlosum = /* Graph edges are not weighted */ grafptr->s.edgenbr = edgenum - grafptr->s.baseval; grafptr->s.degrmax = degrmax; memFree (hashtab); #ifdef SCOTCH_DEBUG_HMESH2 if (hgraphCheck (grafptr) != 0) { errorPrint ("hmeshHgraph: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ return (0); } scotch_6.0.9/src/libscotch/bdgraph.c0000644000302600021200000002002313560005346017570 0ustar pelegrinpelegrin/* Copyright 2007,2008,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the distributed **/ /** bipartitioning graph data structure **/ /** handling routines. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to 31 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "dmapping.h" #include "bdgraph.h" /*************************************/ /* */ /* These routines handle distributed */ /* bipartition graphs. */ /* */ /*************************************/ /* This routine builds the active graph ** corresponding to the given bipartitioning ** job parameters. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int bdgraphInit ( Bdgraph * restrict const actgrafptr, /* Active graph */ const Dgraph * restrict const indgrafptr, /* Induced source subdgraph */ const Dgraph * restrict const srcgrafptr, /* Original source graph */ const Arch * restrict const archptr, /* Current mapping of halo vertices */ const ArchDom domnsubtab[]) /* Subdomains */ { Anum domndist; /* Distance between both subdomains */ Anum domnwght0; /* Processor workforce in each domain */ Anum domnwght1; domndist = archDomDist (archptr, &domnsubtab[0], &domnsubtab[1]); /* Get distance between subdomains */ domnwght0 = archDomWght (archptr, &domnsubtab[0]); /* Get weights of subdomains */ domnwght1 = archDomWght (archptr, &domnsubtab[1]); actgrafptr->s = *indgrafptr; /* Get source graph data */ actgrafptr->s.flagval &= ~DGRAPHFREEALL; /* Do not free contents of separation graph */ actgrafptr->s.vlblloctax = NULL; /* Never mind about vertex labels in the future */ actgrafptr->veexloctax = NULL; /* No external gain (yet) */ actgrafptr->veexglbsum = 0; actgrafptr->partgsttax = NULL; /* Do not allocate frontier arrays yet */ actgrafptr->fronloctab = NULL; bdgraphInit2 (actgrafptr, domndist, domnwght0, domnwght1); /* TODO: Compute external gains */ #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (actgrafptr) != 0) { errorPrint ("bdgraphInit: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } void bdgraphInit2 ( Bdgraph * restrict const actgrafptr, /* Active graph */ const Anum domndist, /* Distance between both subdomains */ const Anum domnwght0, /* Processor workforce in each domain */ const Anum domnwght1) { actgrafptr->fronlocnbr = /* No frontier vertices */ actgrafptr->fronglbnbr = 0; actgrafptr->complocload0 = actgrafptr->s.velolocsum; actgrafptr->compglbload0 = actgrafptr->s.veloglbsum; actgrafptr->compglbload0min = 0; /* No external constraints on bipartition (yet) */ actgrafptr->compglbload0max = actgrafptr->s.veloglbsum; actgrafptr->compglbload0avg = (Gnum) (((double) actgrafptr->s.veloglbsum * (double) domnwght0) / (double) (domnwght0 + domnwght1)); actgrafptr->compglbload0dlt = actgrafptr->s.veloglbsum - actgrafptr->compglbload0avg; actgrafptr->complocsize0 = actgrafptr->s.vertlocnbr; actgrafptr->compglbsize0 = actgrafptr->s.vertglbnbr; actgrafptr->commglbload = 0; actgrafptr->commglbloadextn0 = 0; actgrafptr->commglbgainextn = 0; actgrafptr->commglbgainextn0 = 0; actgrafptr->bbalglbval = (double) actgrafptr->compglbload0dlt / (double) actgrafptr->compglbload0avg; actgrafptr->domndist = domndist; actgrafptr->domnwght[0] = domnwght0; actgrafptr->domnwght[1] = domnwght1; actgrafptr->levlnum = 0; } /* This routine frees the contents ** of the given distributed active graph. ** It returns: ** - VOID : in all cases. */ void bdgraphExit ( Bdgraph * const grafptr) { if (grafptr->partgsttax != NULL) memFree (grafptr->partgsttax + grafptr->s.baseval); if (grafptr->fronloctab != NULL) memFree (grafptr->fronloctab); if (grafptr->veexloctax != NULL) memFree (grafptr->veexloctax + grafptr->s.baseval); dgraphExit (&grafptr->s); /* Free distributed source graph and its private data (flagval may be corrupted afterwards) */ #ifdef SCOTCH_DEBUG_BDGRAPH2 memSet (grafptr, ~0, sizeof (Bdgraph)); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } /* This routine moves all of the graph ** vertices to the first part. ** It returns: ** - VOID : in all cases. */ void bdgraphZero ( Bdgraph * const grafptr) { if (grafptr->partgsttax != NULL) memSet (grafptr->partgsttax + grafptr->s.baseval, 0, grafptr->s.vertgstnbr * sizeof (GraphPart)); /* Set all local and ghost vertices to part 0 */ grafptr->fronlocnbr = /* No frontier vertices */ grafptr->fronglbnbr = 0; grafptr->complocload0 = grafptr->s.velolocsum; grafptr->compglbload0 = grafptr->s.veloglbsum; grafptr->compglbload0dlt = grafptr->s.veloglbsum - grafptr->compglbload0avg; grafptr->complocsize0 = grafptr->s.vertlocnbr; grafptr->compglbsize0 = grafptr->s.vertglbnbr; grafptr->commglbload = grafptr->commglbloadextn0; grafptr->commglbgainextn = grafptr->commglbgainextn0; } scotch_6.0.9/src/libscotch/wgraph_part_gg.c0000644000302600021200000003471313470115365021172 0ustar pelegrinpelegrin/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_gg.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module is the vertex overlapped **/ /** graph partitioning rountine based on **/ /** a vertex-oriented version of the Greedy **/ /** Graph Growing algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 14 mar 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_GG #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "wgraph.h" #include "wgraph_part_gg.h" /* ** The static variables. */ static const Gnum wgraphpartggloadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int wgraphPartGg ( Wgraph * restrict const wgrafptr, /*+ Separation graph +*/ const WgraphPartGgParam * const paraptr) /*+ Method parameters +*/ { Gnum i; Gnum gain; Gnum fronnbr; /* Number of frontier vertices */ Gnum fronload; /* Load of frontier vertices */ Gnum frlobst; /* Best frontier load found */ Gnum fronnum; Gnum partval; Gnum vertnum; Gnum vertnum2; Gnum vertnum3; Gnum edgenum; Gnum edgenum2; Gnum palooth; /* Load of vertices in the remained unassigned part */ Gnum paloexc; /* Load of vertices in the current part excepting the frontier */ Gnum frloprt; /* Load of vertices in the frontier of the current part */ Gnum passnum; Gnum velomsk; const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum * restrict permtab; /* permutation table */ Gnum * restrict parttax; Gnum * restrict compload; /* Array of part load */ Gnum * restrict compsize; /* Array of part vertices number */ GainTabl * restrict tabl; /* Pointer to gain table */ WgraphPartGgVertex * vexxtax; /* Complementary vertex array */ GainLink * restrict gainlinkptr; WgraphPartGgVertex * restrict vertlist; /* List of vertices */ printf ("GG (" GNUMSTRING ")\n", wgrafptr->s.vertnbr); if (((tabl = gainTablInit (GAIN_LINMAX, WGRAPHSEPAGGSUBBITS)) == NULL) || /* Use logarithmic array only */ memAllocGroup((void **) (void *) &vexxtax, (size_t) (wgrafptr->s.vertnbr * sizeof (WgraphPartGgVertex)), &compload, (size_t) (wgrafptr->partnbr * sizeof (Gnum)), &compsize, (size_t) (wgrafptr->partnbr * sizeof (Gnum)), &parttax, (size_t) (wgrafptr->s.vertnbr * sizeof (Gnum)), &permtab, (size_t) (wgrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("wgraphPartGg: out of memory (1)"); gainTablExit (tabl); return (1); } vexxtax -= wgrafptr->s.baseval; /* Base access to vexxtax */ parttax -= wgrafptr->s.baseval; /* Base access to parttax */ for (vertnum = 0; vertnum < wgrafptr->s.vertnbr; vertnum ++) { /* Initialization of the permutation table */ i = intRandVal (vertnum + 1); permtab[vertnum] = permtab[i]; permtab[i] = vertnum; } if (wgrafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &wgraphpartggloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = wgrafptr->s.velotax; velomsk = ~((Gnum) 0); } frlobst = wgrafptr->s.velosum + 1; for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { fronload = fronnbr = 0; vertnum = -1; palooth = wgrafptr->s.velosum; memSet (compload, 0, wgrafptr->partnbr * sizeof (Gnum)); memSet (compsize, 0, wgrafptr->partnbr * sizeof (Gnum)); memSet (parttax + wgrafptr->s.baseval, 0, wgrafptr->s.vertnbr * sizeof (Gnum)); memSet (vexxtax + wgrafptr->s.baseval, 0, wgrafptr->s.vertnbr * sizeof (WgraphPartGgVertex)); gainTablFree (tabl); for (partval = 0; partval < wgrafptr->partnbr; partval ++) { paloexc = frloprt = 0; gainlinkptr = gainTablFrst (tabl); /* Try to take a vertex from the frontier of the last part */ gainTablFree (tabl); if (gainlinkptr != NULL) { /* If the table was not empty */ vertnum = (WgraphPartGgVertex *) gainlinkptr - vexxtax; for (edgenum = wgrafptr->s.verttax[vertnum]; /* search a neighbor vertex that is in the part 0 */ edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] == 0) { gainTablAdd(tabl, &(vexxtax[vertnum2].gainlink), 0); /* Add it in the table in order to be selected */ /* (the table will contain only this vertex) */ fronnbr ++; parttax[vertnum2] = -1; /* Move it in the seperator */ fronload += velobax[vertnum2 & velomsk]; compload[partval] += velobax[vertnum2 & velomsk]; compsize[partval] ++; break; } } } do { /* While the part is not big enought */ gainlinkptr = gainTablFrst(tabl); if (gainlinkptr != NULL) { vertnum = (WgraphPartGgVertex *) gainlinkptr - vexxtax; gainTablDel(tabl, gainlinkptr); } else { /* If the table was empty */ if ((2 * (paloexc + frloprt / 2)) * (wgrafptr->partnbr - partval + 1) <= palooth) { /* If the part load is not big enought */ for (i = 0; i < wgrafptr->s.vertnbr; i ++) { /* select a random vertex in the part 0 */ Gnum pos = i + intRandVal (wgrafptr->s.vertnbr - i); vertnum = permtab[pos]; permtab[pos] = permtab[i]; permtab[i] = vertnum; vertnum += wgrafptr->s.baseval; if (parttax[vertnum] == 0) { for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] > 0) { break; } } break; } } fronload += velobax[vertnum & velomsk]; frloprt += velobax[vertnum & velomsk]; compload[partval] += velobax[vertnum & velomsk]; parttax[vertnum] = -1; compsize[partval] ++; fronnbr ++; } else break; } fronnbr --; frloprt -= velobax[vertnum & velomsk]; fronload -= velobax[vertnum & velomsk]; paloexc += velobax[vertnum & velomsk]; parttax[vertnum] = partval; vertlist = NULL; for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if ((parttax[vertnum2] != -1) && (parttax[vertnum2] != partval)) { /* If the vertex is in a different part */ fronnbr ++; parttax[vertnum2] = -1; /* Move the vertex in the separator */ fronload += velobax[vertnum2 & velomsk]; frloprt += velobax[vertnum2 & velomsk]; compload[partval] += velobax[vertnum2 & velomsk]; compsize[partval] ++; vexxtax[vertnum2].partlvl = partval; /* Label the vertex for this part */ vexxtax[vertnum2].prev = vertlist; /* Add the vertex in the list */ vertlist = vexxtax + vertnum2; } else if (parttax[vertnum2] == -1) { if (vexxtax[vertnum2].partlvl == partval) { /* If the vertex is labeled for the current part */ if (vexxtax[vertnum2].gainlink.next != (GainLink * )~0) { /* If the vertex is in the table */ gainTablDel(tabl, &(vexxtax[vertnum2].gainlink)); /* Remove it from table */ vexxtax[vertnum2].prev = vertlist; /* Add the vertex in the list */ vertlist = vexxtax + vertnum2; } } else { frloprt += velobax[vertnum2 & velomsk]; compload[partval] += velobax[vertnum2 & velomsk]; compsize[partval] ++; vexxtax[vertnum2].partlvl = partval; /* Label it for the part */ vexxtax[vertnum2].gainlink.next = (GainLink * )~0; } } } while (vertlist != NULL) { /* For eack linked vertices */ vertnum2 = vertlist - vexxtax; gain = - velobax[vertnum2 & velomsk]; /* Compute gain */ for (edgenum2 = wgrafptr->s.verttax[vertnum2]; edgenum2 < wgrafptr->s.vendtax[vertnum2]; edgenum2 ++) { vertnum3 = wgrafptr->s.edgetax[edgenum2]; if ((parttax[vertnum3] != -1) && (parttax[vertnum3] != partval)) { gain += velobax[vertnum3 & velomsk]; } } gainTablAdd(tabl, &(vertlist->gainlink), gain); /* Add the vertex in the table */ vertlist = vertlist->prev; } } while ((paloexc + frloprt / 2) * (wgrafptr->partnbr - partval + 1) <= palooth); /* While the part is not big enought */ palooth -= (paloexc + frloprt / 2); } compload[0] = compsize[0] = 0; for (vertnum = wgrafptr->s.baseval; vertnum < wgrafptr->s.vertnnd; vertnum++) { /* Recompute load and size of part 0 */ if (parttax[vertnum] == 0) { compload[0] += velobax[vertnum & velomsk]; compsize[0] ++; } else if (parttax[vertnum] == -1) { for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] == 0) { compload[0] += velobax[vertnum & velomsk]; compsize[0] ++; break; } } } } if (frlobst > fronload) { /* If the pass frontier load is better than the better one */ wgrafptr->fronnbr = fronnbr; wgrafptr->fronload = fronload; memCpy (wgrafptr->compload, compload, sizeof (Gnum) * wgrafptr->partnbr); memCpy (wgrafptr->compsize, compsize, sizeof (Gnum) * wgrafptr->partnbr); memCpy (wgrafptr->parttax + wgrafptr->s.baseval, parttax + wgrafptr->s.baseval, sizeof (Gnum) * wgrafptr->s.vertnbr); for (vertnum = wgrafptr->s.baseval, fronnum = 0; vertnum < wgrafptr->s.vertnnd; vertnum ++) { /* Recompute frontab */ if (parttax[vertnum] == -1) wgrafptr->frontab[fronnum ++] = vertnum; } frlobst = fronload; /* This frontier load will the best found */ } } for (partval = 0; partval < wgrafptr->partnbr; partval ++) printf("\033[0;33mcompload[" GNUMSTRING "] " GNUMSTRING " " GNUMSTRING "\033[0m\n", partval, wgrafptr->compload[partval], wgrafptr->compsize[partval]); memFree(vexxtax + wgrafptr->s.baseval); /* Free work arrays */ gainTablExit (tabl); return (0); } scotch_6.0.9/src/libscotch/mesh_io_habo.c0000644000302600021200000003103113303015264020571 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_io_habo.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the I/O routines **/ /** for handling the Harwell-Boeing **/ /** elemental matrix format. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to 20 jan 2004 **/ /** # Version 6.0 : from : 15 may 2018 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH_IO_HABO #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "mesh.h" /* This routine loads the geometrical mesh ** in the Harwell-Boeing matrix format, and ** allocates the proper structures. ** - 0 : on success. ** - !0 : on error. */ int meshGeomLoadHabo ( Mesh * restrict const meshptr, /* Mesh to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { long habmattag; /* Matrix tag number in file */ long habmatnum; /* Current matrix number */ char habmatbuf[4][84]; /* Matrix header line buffers */ char habmattype[3]; /* Matrix type */ long habcrdnbr; /* Total number of data lines */ long habrhsnbr; /* Number of right hand side lines */ int habcolsiz; /* Size of column type */ int habnzrsiz; /* Size of non-zero type */ Gnum habvixnbr; /* Number of element matrix variable indices */ Gnum habeltnbr; /* Number of elements */ Gnum habvarnbr; /* Number of variables, that is, nodes */ Gnum velmnum; /* Number of current element vertex */ Gnum vnodnum; /* Number of current node vertex */ Gnum edgenum; /* Number of current edge (arc) */ Gnum edgesum; /* Accumulated number of edges in node part */ Gnum degrmax; /* Maximum degree */ int c; if (((habmattag = atol (dataptr)) == 0) && /* Get tag value */ (dataptr[0] != '0') && (dataptr[0] != '\0')) { errorPrint ("meshGeomLoadHabo: bad input (1)"); return (1); } for (habmatnum = 0; habmatnum <= habmattag; habmatnum ++) { /* Read headers and skip if necessary */ memSet (habmatbuf[0], ' ', &habmatbuf[3][83] - &habmatbuf[0][0]); /* Initialize header buffers */ if ((fgets (habmatbuf[0], 83, filesrcptr) == NULL) || /* Read mesh header */ (fgets (habmatbuf[1], 83, filesrcptr) == NULL) || (fgets (habmatbuf[2], 83, filesrcptr) == NULL) || (fgets (habmatbuf[3], 83, filesrcptr) == NULL)) { errorPrint ("meshGeomLoadHabo: bad input (2)"); return (1); } habmatbuf[1][70] = '\0'; /* Extract header values */ habrhsnbr = atol (&habmatbuf[1][56]); habmatbuf[1][14] = '\0'; habcrdnbr = atol (&habmatbuf[1][00]); habmattype[1] = toupper (habmatbuf[2][1]); habmattype[2] = toupper (habmatbuf[2][2]); #if 0 /* Not used */ habmattype[0] = toupper (habmatbuf[2][0]); habmatbuf[2][70] = '\0'; habevlnbr = (Gnum) atol (&habmatbuf[2][57]); /* NELTVL: number of element matrix values (not used) */ #endif habmatbuf[2][56] = '\0'; habvixnbr = (Gnum) atol (&habmatbuf[2][43]); /* VARIX */ habmatbuf[2][42] = '\0'; habeltnbr = (Gnum) atol (&habmatbuf[2][29]); /* NELT */ habmatbuf[2][28] = '\0'; habvarnbr = (Gnum) atol (&habmatbuf[2][14]); /* NVAR */ habmatbuf[2][14] = '\0'; if ((c = sscanf (habmatbuf[3], "(%*d%*[Ii]%d) (%*d%*[Ii]%d)", &habcolsiz, &habnzrsiz)) != 2) { errorPrint ("meshGeomLoadHabo: bad input (3, %d)", c); return (1); } if (habrhsnbr != 0) { while ((c = getc (filesrcptr)) != '\n'){ /* Skip RHS format line */ if (c == EOF) { errorPrint ("meshGeomLoadHabo: bad input (4)"); return (1); } } } if (habmatnum < habmattag) { /* If we have to skip file */ while (habcrdnbr -- > 0) { /* Skip all of file lines */ while ((c = getc (filesrcptr)) != '\n') { /* Skip line */ if (c == EOF) { errorPrint ("meshGeomLoadHabo: bad input (5)"); return (1); } } } } } if (habmattype[2] != 'E') { errorPrint ("meshGeomLoadHabo: only elemental matrices supported"); return (1); } if (habmattype[1] == 'R') { errorPrint ("meshGeomLoadHabo: rectangular matrices not supported"); return (1); } if (((meshptr->verttax = (Gnum *) memAlloc ((habeltnbr + habvarnbr + 1) * sizeof (Gnum))) == NULL) || ((meshptr->edgetax = (Gnum *) memAlloc (habvixnbr * 2 * sizeof (Gnum))) == NULL)) { errorPrint ("meshGeomLoadHabo: out of memory (1)"); if (meshptr->verttax != NULL) { memFree (meshptr->verttax); meshptr->verttax = NULL; } return (1); } meshptr->flagval = MESHFREETABS; /* Totally new mesh structure */ meshptr->baseval = 1; /* Harwell-Boeing meshs have base 1 */ meshptr->vendtax = meshptr->verttax; meshptr->verttax --; meshptr->edgenbr = habvixnbr * 2; meshptr->edgetax --; meshptr->velmnbr = habeltnbr; meshptr->velmbas = habvarnbr + 1; meshptr->velmnnd = habeltnbr + habvarnbr + 1; meshptr->vnodnbr = habvarnbr; meshptr->vnodbas = 1; meshptr->vnodnnd = meshptr->velmbas; meshptr->vnlosum = habvarnbr; for (velmnum = meshptr->velmbas; velmnum <= meshptr->velmnnd; velmnum ++) { /* Read ELTPTR as second part of vertex array */ Gnum habcolval; /* Current column value */ int habcolidx; /* Current index in column value */ while (((c = getc (filesrcptr)) == '\n') || (c == '\r')) ; habcolval = (c == ' ') ? 0 : (c - '0'); for (habcolidx = 1; habcolidx < habcolsiz; habcolidx ++) { if ((c = getc (filesrcptr)) != ' ') habcolval = habcolval * 10 + c - '0'; } if (c == EOF) { errorPrint ("meshGeomLoadHabo: bad input (6)"); meshFree (meshptr); return (1); } #ifdef SCOTCH_DEBUG_MESH2 if ((habcolval < 1) || (habcolval > (habvixnbr + 1))) { errorPrint ("meshGeomLoadHabo: bad input (7)"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ meshptr->verttax[velmnum] = habcolval + habvixnbr; } if (meshptr->verttax[velmnum - 1] != (habvixnbr + habvixnbr + 1)) { errorPrint ("meshGeomLoadHabo: bad input (8)"); meshFree (meshptr); return (1); } memSet (meshptr->verttax + 1, 0, habvarnbr * sizeof (Gnum)); /* Pre-set node adjacency array */ for (edgenum = habvixnbr + 1; edgenum <= meshptr->edgenbr; edgenum ++) { /* Read VARIND as second part of edge array */ Gnum habnodval; /* Current non-zero value */ int habnzridx; /* Current index in non-zero value */ while (((c = getc (filesrcptr)) == '\n') || (c == '\r')) ; habnodval = (c == ' ') ? 0 : (c - '0'); for (habnzridx = 1; habnzridx < habnzrsiz; habnzridx ++) { if ((c = getc (filesrcptr)) != ' ') habnodval = habnodval * 10 + c - '0'; } if (c == EOF) { errorPrint ("meshGeomLoadHabo: bad input (9)"); meshFree (meshptr); return (1); } #ifdef SCOTCH_DEBUG_MESH2 if ((habnodval < 1) || (habnodval > habvarnbr)) { errorPrint ("meshGeomLoadHabo: bad input (10)"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ meshptr->edgetax[edgenum] = habnodval; meshptr->verttax[habnodval] ++; } degrmax = 1; for (vnodnum = edgesum = 1; vnodnum < meshptr->vnodnnd; vnodnum ++) { /* Accumulate start indices for node part of vertex array */ Gnum degrval; degrval = meshptr->verttax[vnodnum]; if (degrval > degrmax) degrmax = degrval; meshptr->verttax[vnodnum] = edgesum; edgesum += degrval; } #ifdef SCOTCH_DEBUG_MESH2 if (edgesum != meshptr->verttax[meshptr->velmbas]) { errorPrint ("meshGeomLoadHabo: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ for (velmnum = meshptr->velmbas, edgenum = habvixnbr + 1; /* Re-scan element part of edge array to build node part of edge array */ velmnum < meshptr->velmnnd; velmnum ++) { if ((meshptr->vendtax[velmnum] - edgenum) > degrmax) degrmax = (meshptr->vendtax[velmnum] - edgenum); for ( ; edgenum < meshptr->vendtax[velmnum]; edgenum ++) { Gnum vnodnum; vnodnum = meshptr->edgetax[edgenum]; #ifdef SCOTCH_DEBUG_MESH2 if ((vnodnum < 1) || (vnodnum > habvarnbr)) { errorPrint ("meshGeomLoadHabo: internal error (2)"); return (1); } if (meshptr->verttax[vnodnum] > habvixnbr) { errorPrint ("meshGeomLoadHabo: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ meshptr->edgetax[meshptr->verttax[vnodnum] ++] = velmnum; } } meshptr->degrmax = degrmax; for (vnodnum = edgesum = 1; vnodnum < meshptr->vnodnnd; vnodnum ++) { /* Restore start indices for node part of vertex array */ Gnum edgenum; edgenum = meshptr->verttax[vnodnum]; meshptr->verttax[vnodnum] = edgesum; edgesum = edgenum; } #ifdef SCOTCH_DEBUG_MESH2 if (meshCheck (meshptr) != 0) { errorPrint ("meshGeomLoadHabo: inconsistent mesh data"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ return (0); } scotch_6.0.9/src/libscotch/arch_vhcub.c0000644000302600021200000002066013560005302020264 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_vhcub.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the variable-sized **/ /** hypercube target architecture. **/ /** **/ /** DATES : # Version 3.4 : from : 08 nov 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 04 nov 2003 **/ /** to 04 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 27 feb 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 26 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_VHCUB #include "module.h" #include "common.h" #include "arch.h" #include "arch_vhcub.h" /********************************/ /* */ /* These are the variable-sized */ /* hypercube handling routines. */ /* */ /********************************/ /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archVhcubDomNum ( const ArchVhcub * const archptr, const ArchVhcubDom * const domptr) { return (domptr->termnum); /* Return terminal number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archVhcubDomTerm ( const ArchVhcub * const archptr, ArchVhcubDom * const domptr, const ArchDomNum domnum) { Anum termnum; Anum termlvl; if (domnum != ARCHDOMNOTTERM) { /* If valid label */ if (domnum == 0) /* Not a legal domain */ return (2); domptr->termnum = domnum; /* Set the domain */ for (termnum = domnum, termlvl = 0; termnum > 1; termnum >>= 1, termlvl ++) ; /* Compute level */ domptr->termlvl = termlvl; /* Set level */ return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the domain. */ Anum archVhcubDomSize ( const ArchVhcub * const archptr, const ArchVhcubDom * const domptr) { return (1); /* All domains have same size for bipartitioning */ } /* This function returns the average ** distance between two subdomains. */ Anum archVhcubDomDist ( const ArchVhcub * const archptr, const ArchVhcubDom * const dom0ptr, const ArchVhcubDom * const dom1ptr) { Anum dom0num; Anum dom1num; Anum distval; if (dom0ptr->termlvl > dom1ptr->termlvl) { dom0num = dom0ptr->termnum >> (dom0ptr->termlvl - dom1ptr->termlvl); dom1num = dom1ptr->termnum; distval = (dom0ptr->termlvl - dom1ptr->termlvl) >> 1; /* One half of unknown bits */ } else { dom0num = dom0ptr->termnum; dom1num = dom1ptr->termnum >> (dom1ptr->termlvl - dom0ptr->termlvl); distval = (dom1ptr->termlvl - dom0ptr->termlvl) >> 1; /* One half of unknown bits */ } for (dom0num ^= dom1num; dom0num != 0; /* Compute Hamming distance */ distval += (dom0num & 1), dom0num >>= 1) ; return (distval); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVhcubDomFrst ( const ArchVhcub * const archptr, ArchVhcubDom * restrict const domptr) { domptr->termlvl = 0; /* First terminal number */ domptr->termnum = 1; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVhcubDomLoad ( const ArchVhcub * const archptr, ArchVhcubDom * restrict const domptr, FILE * const stream) { Anum termnum; Anum termlvl; if (intLoad (stream, &domptr->termnum) != 1) { errorPrint ("archVhcubDomLoad: bad input"); return (1); } for (termnum = domptr->termnum, termlvl = 0; termnum > 1; termnum >>= 1, termlvl ++) ; /* Compute level */ domptr->termlvl = termlvl; return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVhcubDomSave ( const ArchVhcub * const archptr, const ArchVhcubDom * const domptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " ", (Anum) domptr->termnum) == EOF) { errorPrint ("archVhcubDomSave: bad output"); return (1); } return (0); } /* This function splits a domain ** into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 2 : on error. */ int archVhcubDomBipart ( const ArchVhcub * const archptr, const ArchVhcubDom * const domptr, ArchVhcubDom * restrict const dom0ptr, ArchVhcubDom * restrict const dom1ptr) { dom0ptr->termlvl = /* Bipartition the domain */ dom1ptr->termlvl = domptr->termlvl + 1; dom0ptr->termnum = domptr->termnum << 1; dom1ptr->termnum = dom0ptr->termnum + 1; return ((dom1ptr->termnum < domptr->termnum) ? 2 : 0); /* Return error on overflow */ } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archVhcubDomIncl ( const ArchVhcub * const archptr, const ArchVhcubDom * const dom0ptr, const ArchVhcubDom * const dom1ptr) { if ((dom1ptr->termlvl >= dom0ptr->termlvl) && ((dom1ptr->termnum >> (dom1ptr->termlvl - dom0ptr->termlvl)) == dom0ptr->termnum)) return (1); return (0); } /* This function creates the MPI_Datatype for ** variable-sized hypercube domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archVhcubDomMpiType ( const ArchVhcub * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/vmesh_separate_gg.c0000644000302600021200000005551713303015264021657 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_gg.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates a node separation **/ /** mesh using an element-oriented version **/ /** of the Greedy Graph Growing algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 16 sep 2002 **/ /** to 18 aug 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 24 mar 2008 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_GG #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" #include "vmesh_separate_gg.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vmeshSeparateGg ( Vmesh * restrict const meshptr, /*+ Node separation mesh +*/ const VmeshSeparateGgParam * restrict const paraptr) /*+ Method parameters +*/ { GainTabl * restrict tablptr; /* Pointer to gain table */ byte * restrict vexxtab; /* Start of auxiliary arrays */ Gnum vexxsiz; /* Size of auxiliary arrays to be reset every pass */ VmeshSeparateGgElem * restrict velxtax; /* Based auxiliary element array */ VmeshSeparateGgNode * restrict vnoxtax; /* Based auxiliary node array */ Gnum * restrict velitax; /* Array of sums of weights of isolated neighboring nodes of elements */ Gnum * restrict velstax; /* Array of sums of weights of neighboring nodes of elements */ Gnum velssiz; /* Size of element neighboring node load sum array */ VmeshSeparateGgElem * sepaptr; /* Head of chained list of elements to re-link */ Gnum * restrict permtab; /* Element permutation table for finding new roots */ Gnum * permptr; /* Pointer to current permutation index */ INT passnum; /* Number of current pass */ Gnum ecmpsize0; /* Number of elements in part 0 */ Gnum ncmploaddlt; /* Current imbalance of bipartition */ Gnum ncmpload2; /* Current number of nodes in separator */ Gnum vnodnum; Gnum fronnum; Gnum ncmpsize1; Gnum ncmpsize2; if (meshptr->m.velmnbr == 0) { /* If only a single node or disconnected nodes */ vmeshZero (meshptr); /* Don't bother with parts */ return (0); } velssiz = (meshptr->m.vnlotax == NULL) ? 0 : meshptr->m.velmnbr; /* Compute size of vetex load sum array */ if (((tablptr = gainTablInit (GAINMAX, VMESHSEPAGGSUBBITS)) == NULL) || /* Use logarithmic array only */ ((vexxtab = (byte *) memAllocGroup ((void **) (void *) &velxtax, (size_t) (meshptr->m.velmnbr * sizeof (VmeshSeparateGgElem)), &vnoxtax, (size_t) (meshptr->m.vnodnbr * sizeof (VmeshSeparateGgNode)), &velitax, (size_t) (meshptr->m.velmnbr * sizeof (Gnum)), &velstax, (size_t) (velssiz * sizeof (Gnum)), NULL)) == NULL)) { /* Indicates end of group allocated array */ if (tablptr != NULL) gainTablExit (tablptr); errorPrint ("vmeshSeparateGg: out of memory (1)"); return (1); } vexxsiz = (byte *) velitax - vexxtab; /* Size of arrays that must be reset at each pass */ velxtax -= meshptr->m.velmbas; /* Base access to auxiliary arrays */ vnoxtax -= meshptr->m.vnodbas; velitax -= meshptr->m.velmbas; if (velssiz == 0) { /* If no vertex load array */ Gnum velmnum; for (velmnum = meshptr->m.velmbas; velmnum < meshptr->m.velmnnd; velmnum ++) { Gnum eelmnum; Gnum velisum; for (eelmnum = meshptr->m.verttax[velmnum], velisum = 0; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; vnodnum = meshptr->m.edgetax[eelmnum]; if ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]) == 1) velisum --; } velitax[velmnum] = velisum; } } else { Gnum velmnum; velstax -= meshptr->m.velmbas; for (velmnum = meshptr->m.velmbas; velmnum < meshptr->m.velmnnd; velmnum ++) { Gnum eelmnum; Gnum velisum; Gnum velssum; for (eelmnum = meshptr->m.verttax[velmnum], velisum = velssum = 0; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; Gnum vnloval; vnodnum = meshptr->m.edgetax[eelmnum]; vnloval = meshptr->m.vnlotax[vnodnum]; velssum += vnloval; if ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]) == 1) velisum -= vnloval; } velitax[velmnum] = velisum; velstax[velmnum] = velssum; } } permtab = NULL; /* Do not allocate permutation array yet */ for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { /* For all passes */ VmeshSeparateGgElem * velxptr; /* Pointer to selected element */ memSet (vexxtab, 0, vexxsiz); /* All vertices to part 0 */ gainTablFree (tablptr); /* Reset gain table */ permptr = NULL; /* No permutation built yet */ ecmpsize0 = meshptr->m.velmnbr; /* All elements to part 0 */ ncmpload2 = 0; /* Reset separation parameters */ ncmploaddlt = meshptr->m.vnlosum; velxptr = (VmeshSeparateGgElem *) vexxtab + intRandVal (meshptr->m.velmnbr); /* Randomly select first root element vertex */ do { /* Loop on root element vertices */ Gnum velmnum; /* Number of current element to process */ velxptr->gainlink.next = /* TRICK: allow deletion of root vertex */ velxptr->gainlink.prev = (GainLink *) velxptr; velmnum = velxptr - velxtax; /* Get root element number */ { Gnum ncmpgain1; /* Gain (2->1) */ Gnum ncmpgain2; /* Gain (0->2) */ ncmpgain2 = (meshptr->m.vnlotax == NULL) /* Set gains */ ? meshptr->m.vendtax[velmnum] - meshptr->m.verttax[velmnum] : velstax[velmnum]; ncmpgain1 = velitax[velmnum]; velxptr->ncmpgain2 = ncmpgain1 + ncmpgain2; velxptr->ncmpgaindlt = ncmpgain1 - ncmpgain2; } do { /* While element vertices can be retrieved */ Gnum eelmnum; /* Number of current element edge */ velmnum = velxptr - velxtax; /* Get based number of selected element */ if (ncmploaddlt < abs (ncmploaddlt + velxtax[velmnum].ncmpgaindlt)) { /* If swapping would cause imbalance */ permptr = permtab + meshptr->m.velmnbr; /* Terminate swapping process */ velxptr = NULL; break; } ecmpsize0 --; /* One less element in part 0 */ gainTablDel (tablptr, (GainLink *) velxptr); /* Remove element from table */ velxptr->gainlink.next = VMESHSEPAGGSTATEPART1; /* Move element to part 1 */ ncmpload2 += velxptr->ncmpgain2; /* Update partition parameters */ ncmploaddlt += velxptr->ncmpgaindlt; sepaptr = NULL; /* No frontier elements to relink yet */ for (eelmnum = meshptr->m.verttax[velmnum]; /* For all neighbor node vertices */ eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) { Gnum vnodnum; /* Number of current node neighbor */ vnodnum = meshptr->m.edgetax[eelmnum]; /* Get number of neighbor node */ #ifdef SCOTCH_DEBUG_VMESH2 if (vnoxtax[vnodnum].partval == 1) { errorPrint ("vmeshSeparateGg: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (vnoxtax[vnodnum].partval == 0) { /* If yet untouched neighbor node */ Gnum enodnum; /* Current egde of current neighbor node */ Gnum vnloval; vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; vnoxtax[vnodnum].partval = 2; /* Node now belongs to separator */ vnoxtax[vnodnum].commsize0 = meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum] - 1; vnoxtax[vnodnum].velmisum0 = - velmnum; for (enodnum = meshptr->m.verttax[vnodnum]; /* For all its elements */ enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmend; velmend = meshptr->m.edgetax[enodnum]; /* Get neighbor element */ vnoxtax[vnodnum].velmisum0 += velmend; /* Sum-up element indices for neighbor node */ #ifdef SCOTCH_DEBUG_VMESH2 if ((velxtax[velmend].gainlink.next == VMESHSEPAGGSTATEPART1) && (velmend != velmnum)) { errorPrint ("vmeshSeparateGg: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (velxtax[velmend].gainlink.next == VMESHSEPAGGSTATEPART0) { /* If untouched element */ Gnum ncmpgain1; /* Gain (2->1) */ Gnum ncmpgain2; /* Gain (0->2) */ #ifdef SCOTCH_DEBUG_VMESH2 Gnum eelmend; #endif /* SCOTCH_DEBUG_VMESH2 */ velxtax[velmend].gainlink.next = VMESHSEPAGGSTATEPART2; /* Move element to frontier */ velxtax[velmend].gainlink.prev = (GainLink *) sepaptr; /* Chain vertex */ sepaptr = &velxtax[velmend]; ncmpgain2 = (meshptr->m.vnlotax == NULL) /* Set gains */ ? meshptr->m.vendtax[velmend] - meshptr->m.verttax[velmend] - 1 : velstax[velmend] - vnloval; ncmpgain1 = velitax[velmend]; #ifdef SCOTCH_DEBUG_VMESH2 for (eelmend = meshptr->m.verttax[velmend]; /* For all its neighboring nodes */ eelmend < meshptr->m.vendtax[velmend]; eelmend ++) { Gnum vnodend; vnodend = meshptr->m.edgetax[eelmend]; if ((vnoxtax[vnodend].partval == 1) || ((vnoxtax[vnodend].partval == 2) && (vnodend != vnodnum))) { errorPrint ("vmeshSeparateGg: internal error (3)"); return (1); } if (meshptr->m.vendtax[vnodend] - meshptr->m.verttax[vnodend] == 1) { if (vnoxtax[vnodend].partval != 0) { errorPrint ("vmeshSeparateGg: internal error (4)"); return (1); } } } #endif /* SCOTCH_DEBUG_VMESH2 */ velxtax[velmend].ncmpgain2 = ncmpgain1 + ncmpgain2; velxtax[velmend].ncmpgaindlt = ncmpgain1 - ncmpgain2; } else { /* Neighbor element belongs to frontier */ velxtax[velmend].ncmpgain2 -= vnloval; /* One less node to add to separator for element */ velxtax[velmend].ncmpgaindlt += vnloval; /* One less node to remove from part 0 */ if (velxtax[velmend].gainlink.next >= VMESHSEPAGGSTATELINK) { gainTablDel (tablptr, (GainLink *) &velxtax[velmend]); /* Unlink vertex */ velxtax[velmend].gainlink.next = VMESHSEPAGGSTATEPART2; /* Chain vertex */ velxtax[velmend].gainlink.prev = (GainLink *) sepaptr; sepaptr = &velxtax[velmend]; } } } } else { /* Neighbor node already in separator */ vnoxtax[vnodnum].commsize0 --; /* One less neighbor element in part 0 */ vnoxtax[vnodnum].velmisum0 -= velmnum; /* Subtract index of removed element */ } if (vnoxtax[vnodnum].commsize0 == 0) /* If node no longer has neighbors in part 0 */ vnoxtax[vnodnum].partval = 1; /* Node moves from separator to part 1 */ else if (vnoxtax[vnodnum].commsize0 == 1) { /* If only one neighbor element in part 0 */ Gnum velmend; /* Index of remaining element in part 0 */ Gnum vnloval; velmend = vnoxtax[vnodnum].velmisum0; /* Get neighbor element from remaining index */ #ifdef SCOTCH_DEBUG_VMESH2 if (velxtax[velmend].gainlink.next < VMESHSEPAGGSTATEPART2) { /* Element should have been declared in part 0 at this stage */ errorPrint ("vmeshSeparateGg: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ vnloval = (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; velxtax[velmend].ncmpgain2 -= vnloval; velxtax[velmend].ncmpgaindlt -= vnloval; if (velxtax[velmend].gainlink.next >= VMESHSEPAGGSTATELINK) { gainTablDel (tablptr, (GainLink *) &velxtax[velmend]); /* Unlink vertex */ velxtax[velmend].gainlink.next = VMESHSEPAGGSTATEPART2; /* Chain vertex */ velxtax[velmend].gainlink.prev = (GainLink *) sepaptr; sepaptr = &velxtax[velmend]; } } } while (sepaptr != NULL) { /* For all vertices in chain list */ velxptr = sepaptr; /* Unlink vertex from list */ sepaptr = (VmeshSeparateGgElem *) velxptr->gainlink.prev; gainTablAdd (tablptr, (GainLink *) velxptr, velxptr->ncmpgain2); /* Relink it */ } #ifdef SCOTCH_DEBUG_VMESH3 if (vmeshSeparateGgCheck (meshptr, ncmpload2, ncmploaddlt, velxtax, vnoxtax) != 0) { errorPrint ("vmeshSeparateGg: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH3 */ } while ((velxptr = (VmeshSeparateGgElem *) gainTablFrst (tablptr)) != NULL); if (permptr == NULL) { /* If element permutation not yet built */ if (permtab == NULL) { /* If permutation array not yet allocated */ if ((permtab = (Gnum *) memAlloc (meshptr->m.velmnbr * sizeof (Gnum))) == NULL) { errorPrint ("vmeshSeparateGg: out of memory (2)"); memFree (vexxtab); gainTablExit (tablptr); return (1); } intAscn (permtab, meshptr->m.velmnbr, meshptr->m.baseval); /* Initialize permutation array */ } intPerm (permtab, meshptr->m.velmnbr); /* Build random permutation */ permptr = permtab; /* Start at beginning of permutation */ } for ( ; permptr < permtab + meshptr->m.velmnbr; permptr ++) { /* Find next root vertex */ #ifdef SCOTCH_DEBUG_VMESH2 if (velxtax[*permptr].gainlink.next >= VMESHSEPAGGSTATEPART2) { errorPrint ("vmeshSeparateGg: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (velxtax[*permptr].gainlink.next == VMESHSEPAGGSTATEPART0) { velxptr = velxtax + (*permptr ++); break; } } } while (velxptr != NULL); if ((passnum == 0) || /* If it is the first try */ ( (meshptr->ncmpload[2] > ncmpload2) || /* Or if better solution reached */ ((meshptr->ncmpload[2] == ncmpload2) && (abs (meshptr->ncmploaddlt) > abs (ncmploaddlt))))) { Gnum vertnum; meshptr->ecmpsize[0] = ecmpsize0; /* Set graph parameters */ meshptr->ncmpload[2] = ncmpload2; meshptr->ncmploaddlt = ncmploaddlt; for (vertnum = meshptr->m.velmbas; vertnum < meshptr->m.velmnnd; vertnum ++) /* Copy element bipartition state */ meshptr->parttax[vertnum] = (velxtax[vertnum].gainlink.next == VMESHSEPAGGSTATEPART1) ? 1 : 0; for (vertnum = meshptr->m.vnodbas; vertnum < meshptr->m.vnodnnd; vertnum ++) /* Copy node bipartition state */ meshptr->parttax[vertnum] = vnoxtax[vertnum].partval; } } meshptr->ecmpsize[1] = meshptr->m.velmnbr - meshptr->ecmpsize[0]; meshptr->ncmpload[1] = ((meshptr->m.vnlosum - meshptr->ncmpload[2]) - meshptr->ncmploaddlt) >> 1; meshptr->ncmpload[0] = (meshptr->m.vnlosum - meshptr->ncmpload[2]) - meshptr->ncmpload[1]; for (vnodnum = meshptr->m.vnodbas, fronnum = 0, ncmpsize1 = ncmpsize2 = 0; vnodnum < meshptr->m.vnodnnd; vnodnum ++) { Gnum partval; partval = meshptr->parttax[vnodnum]; ncmpsize1 += (partval & 1); /* Superscalar update */ ncmpsize2 += (partval >> 1); if (partval == 2) meshptr->frontab[fronnum ++] = vnodnum; /* Vertex belongs to frontier */ } meshptr->ncmpsize[0] = meshptr->m.vnodnbr - (ncmpsize1 + ncmpsize2); meshptr->ncmpsize[1] = ncmpsize1; meshptr->fronnbr = ncmpsize2; #ifdef SCOTCH_DEBUG_VMESH2 if (vmeshCheck (meshptr) != 0) { errorPrint ("vmeshSeparateGg: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ if (permtab != NULL) memFree (permtab); memFree (vexxtab); /* Free group leader */ gainTablExit (tablptr); /* printf ("GG Sepa\tsize=%ld\tload=%ld\tbal=%ld\n", (long) meshptr->fronnbr, (long) meshptr->ncmpload[2], (long) meshptr->ncmploaddlt); */ return (0); } /* This routine checks the consistency ** of the current bipartition. ** It returns: ** - 0 : if the bipartition is consistent. ** - !0 : on error. */ #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateGgCheck ( Vmesh * restrict const meshptr, const Gnum ncmpload2, const Gnum ncmploaddlt, const VmeshSeparateGgElem * restrict const velxtax, const VmeshSeparateGgNode * restrict const vnoxtax) { Gnum vnodnum; Gnum vnloval; Gnum ncmpsize0c; Gnum ncmpsize1c; Gnum ncmpsize2c; Gnum ncmpload0c; Gnum ncmpload1c; Gnum ncmpload2c; ncmpsize1c = ncmpsize2c = ncmpload1c = ncmpload2c = 0; vnloval = 1; for (vnodnum = meshptr->m.vnodbas; vnodnum < meshptr->m.vnodnnd; vnodnum ++) { int partval; Gnum partval1; Gnum partval2; partval = vnoxtax[vnodnum].partval; partval1 = partval & 1; partval2 = partval >> 1; if (meshptr->m.vnlotax != NULL) vnloval = meshptr->m.vnlotax[vnodnum]; if (partval > 2) { errorPrint ("vmeshSeparateGgCheck: invalid node part value"); return (1); } ncmpsize1c += partval1; ncmpsize2c += partval2; ncmpload1c += partval1 * vnloval; ncmpload2c += partval2 * vnloval; } ncmpsize0c = meshptr->m.vnodnbr - ncmpsize1c - ncmpsize2c; ncmpload0c = meshptr->m.vnlosum - ncmpload1c - ncmpload2c; if (ncmpload2c != ncmpload2) { errorPrint ("vmeshSeparateGgCheck: invalid separator size"); return (1); } if (ncmploaddlt != (ncmpload0c - ncmpload1c)) { errorPrint ("vmeshSeparateGgCheck: invalid separator balance"); return (1); } return (0); } #endif /* SCOTCH_DEBUG_VMESH3 */ scotch_6.0.9/src/libscotch/library_dgraph_gather.c0000644000302600021200000001220113560013261022476 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_gather.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 12 jul 2007 **/ /** to 17 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine gathers the data of a *** distributed graph on a centralized graph. *** It returns: *** - 0 : if the centralization succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphGather ( const SCOTCH_Dgraph * const dgrfptr, SCOTCH_Graph * const cgrfptr) { Dgraph * restrict srcdgrfptr; Gnum reduloctab[3]; Gnum reduglbtab[3]; srcdgrfptr = (Dgraph *) dgrfptr; if ((cgrfptr != NULL) && (((void *) cgrfptr) != ((void *) dgrfptr))) { /* If centralized graph provided */ reduloctab[0] = 1; /* Process is a potential root */ reduloctab[1] = (Gnum) srcdgrfptr->proclocnum; } else { /* Process is not a root */ reduloctab[0] = 0; reduloctab[1] = 0; } if (srcdgrfptr->edloloctax == NULL) /* Compute sum of edge loads for access to low-level routines */ reduloctab[2] = srcdgrfptr->edgelocnbr; else { Gnum vertlocnum; Gnum edlolocsum; for (vertlocnum = srcdgrfptr->baseval, edlolocsum = 0; vertlocnum < srcdgrfptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; for (edgelocnum = srcdgrfptr->vertloctax[vertlocnum], edgelocnnd = srcdgrfptr->vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) edlolocsum += srcdgrfptr->edloloctax[edgelocnum]; } reduloctab[2] = edlolocsum; } if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_SUM, srcdgrfptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphGather) ": communication error"); return (1); } if (reduglbtab[0] == 1) /* If only one single root */ return (dgraphGatherAll2 (srcdgrfptr, (Graph *) cgrfptr, reduglbtab[2], (int) reduglbtab[1])); else if (reduglbtab[0] == srcdgrfptr->procglbnbr) /* If all processes are roots */ return (dgraphGatherAll2 (srcdgrfptr, (Graph *) cgrfptr, reduglbtab[2], -1)); errorPrint (STRINGIFY (SCOTCH_dgraphGather) ": invalid number of roots"); return (1); } scotch_6.0.9/src/libscotch/bgraph_bipart_gg.c0000644000302600021200000004027413560005346021454 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2011,2013,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_gg.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Luca SCARANO (v3.1) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module computes a bipartition of **/ /** a bipartition graph by multiple runs of **/ /** the greedy graph growing algorithm. **/ /** **/ /** DATES : # Version 3.1 : from : 07 jan 1996 **/ /** to 07 jun 1996 **/ /** # Version 3.2 : from : 20 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 01 sep 2004 **/ /** # Version 5.0 : from : 02 jan 2007 **/ /** to 04 feb 2007 **/ /** # Version 5.1 : from : 21 nov 2007 **/ /** to 22 feb 2011 **/ /** # Version 6.0 : from : 23 feb 2011 **/ /** to 01 may 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_GG #define SCOTCH_TABLE_GAIN #include "module.h" #include "common.h" #include "gain.h" #include "fibo.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_gg.h" /* ** The static variables. */ static const Gnum bgraphbipartggloadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ #ifndef SCOTCH_TABLE_GAIN /* bgraphBipartFmCmpFunc(a,b) must return a negative ** number if a is "better" than b. The smaller, the ** better. */ static int bgraphBipartGgCmpFunc ( const FiboNode * const data0ptr, /* TRICK: BgraphBipartFmLink is FIRST in BgraphBipartFmVertex */ const FiboNode * const data1ptr) { const BgraphBipartGgVertex * const node0ptr = (BgraphBipartGgVertex *) data0ptr; const BgraphBipartGgVertex * const node1ptr = (BgraphBipartGgVertex *) data1ptr; if (node0ptr->commgain < node1ptr->commgain) return (-1); if (node0ptr->commgain > node1ptr->commgain) return (1); return (0); } #endif /* SCOTCH_TABLE_GAIN */ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartGg ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const BgraphBipartGgParam * const paraptr) /*+ Method parameters +*/ { BgraphBipartGgTabl tabldat; /* Gain table */ BgraphBipartGgVertex * vexxtax; /* Extended vertex array [norestrict] */ BgraphBipartGgVertex * vexxptr; /* Pointer to current vertex to swap */ Gnum * restrict permtab; /* Permutation table for finding new roots */ Gnum permnum; /* Current permutation index */ const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum velomsk; const Gnum * edlobax; /* Pointer to array or dummy value [norestrict] */ Gnum edlomsk; byte * restrict flagtax; Gnum vertnum; Gnum fronnum; Gnum compsize1; Gnum commgainextn; unsigned int passnum; Anum domndist; Anum domndist2; /* Two times domndist */ const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * const edlotax = grafptr->s.edlotax; /* [norestrict] */ const Gnum * restrict const veextax = grafptr->veextax; if ((bgraphBipartGgTablInit (&tabldat) != 0) || ((vexxtax = (BgraphBipartGgVertex *) memAlloc (grafptr->s.vertnbr * sizeof (BgraphBipartGgVertex))) == NULL)) { errorPrint ("bgraphBipartGg: out of memory (1)"); bgraphBipartGgTablExit (&tabldat); return (1); } vexxtax -= grafptr->s.baseval; /* Base access to vexxtax */ permtab = NULL; /* Do not allocate permutation array yet */ domndist = grafptr->domndist; domndist2 = grafptr->domndist * 2; if (edlotax == NULL) { /* If graph has no edge weights */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum commload; commload = (vendtax[vertnum] - verttax[vertnum]) * domndist; vexxtax[vertnum].commgain0 = (veextax == NULL) ? commload : commload + veextax[vertnum]; } edlobax = &bgraphbipartggloadone; edlomsk = 0; } else { /* Graph has edge weights */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum commload; Gnum edgenum; for (edgenum = verttax[vertnum], commload = 0; edgenum < vendtax[vertnum]; edgenum ++) commload += edlotax[edgenum]; commload *= domndist; vexxtax[vertnum].commgain0 = (veextax == NULL) ? commload : commload + veextax[vertnum]; } edlobax = edlotax; edlomsk = ~((Gnum) 0); /* TRICK: assume that ~0 is -1 */ } if (grafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &bgraphbipartggloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { /* For all passes */ Gnum vertnum; Gnum commload; Gnum compload0dlt; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { /* Reset extended vertex array */ bgraphBipartGgSetFree (&vexxtax[vertnum]); vexxtax[vertnum].commgain = vexxtax[vertnum].commgain0; } bgraphBipartGgTablFree (&tabldat); /* Reset gain table */ permnum = 0; /* No permutation built yet */ compload0dlt = grafptr->s.velosum - grafptr->compload0avg; /* Reset bipartition parameters */ commload = grafptr->commloadextn0; vexxptr = vexxtax + (grafptr->s.baseval + intRandVal (grafptr->s.vertnbr)); /* Randomly select first root vertex */ do { /* For all root vertices, till balance */ #ifdef SCOTCH_TABLE_GAIN vexxptr->gainlink.next = /* TRICK: allow deletion of root vertex */ vexxptr->gainlink.prev = (GainLink *) vexxptr; #ifdef SCOTCH_DEBUG_BGRAPH2 vexxptr->gainlink.tabl = NULL; #endif /* SCOTCH_DEBUG_BGRAPH2 */ #endif /* SCOTCH_TABLE_GAIN */ do { /* As long as vertices can be retrieved */ const Gnum * restrict edgeptr; /* Pointer to current end vertex index */ const Gnum * restrict edgetnd; /* Pointer to end of edge array */ const Gnum * restrict edloptr; /* Pointer to current edge load */ Gnum vertnum; /* Number of current vertex */ Gnum veloval; /* Load of selected vertex */ #ifndef SCOTCH_TABLE_GAIN if (bgraphBipartGgIsTabl (vexxptr)) #endif /* SCOTCH_TABLE_GAIN */ bgraphBipartGgTablDel (&tabldat, vexxptr); /* Remove vertex from table */ vertnum = vexxptr - vexxtax; /* Get number of selected vertex */ veloval = velobax[vertnum & velomsk]; if ((abs (compload0dlt - veloval) >= abs (compload0dlt)) && /* If swapping would cause imbalance */ (veloval > 0)) { /* And not a zero weight vertex */ #ifndef SCOTCH_TABLE_GAIN bgraphBipartGgNext (vexxptr) = BGRAPHBIPARTGGSTATELINK; /* Vertex belongs to frontier of part 0 */ #endif /* SCOTCH_TABLE_GAIN */ permnum = grafptr->s.vertnbr; /* Terminate swapping process */ vexxptr = NULL; break; } bgraphBipartGgSetUsed (vexxptr); /* Mark it as swapped */ compload0dlt -= veloval; /* Update partition parameters */ commload += vexxptr->commgain; for (edgeptr = edgetax + verttax[vertnum], /* (Re-)link neighbors */ edgetnd = edgetax + vendtax[vertnum], edloptr = edlobax + (verttax[vertnum] & edlomsk); edgeptr < edgetnd; edgeptr ++, edloptr -= edlomsk) { /* TRICK: assume that ~0 is -1 */ BgraphBipartGgVertex * vexxend; /* Pointer to end vertex of current edge */ vexxend = vexxtax + *edgeptr; /* Point to end vertex */ if (! bgraphBipartGgIsUsed (vexxend)) { /* If vertex needs to be updated */ vexxend->commgain -= *edloptr * domndist2; /* Adjust gain value */ if (bgraphBipartGgIsTabl (vexxend)) /* If vertex is linked */ bgraphBipartGgTablDel (&tabldat, vexxend); /* Remove it from table */ bgraphBipartGgTablAdd (&tabldat, vexxend); /* (Re-)link vertex in table */ } } } while ((vexxptr = (BgraphBipartGgVertex *) bgraphBipartGgTablFrst (&tabldat)) != NULL); if (permnum == 0) { /* If permutation has not been built yet */ if (permtab == NULL) { /* If permutation array not allocated yet */ if ((permtab = (Gnum *) memAlloc (grafptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("bgraphBipartGg: out of memory (3)"); memFree (vexxtax + grafptr->s.baseval); bgraphBipartGgTablExit (&tabldat); return (1); } intAscn (permtab, grafptr->s.vertnbr, grafptr->s.baseval); /* Initialize based permutation array */ } intPerm (permtab, grafptr->s.vertnbr); /* Build random permutation */ } for ( ; permnum < grafptr->s.vertnbr; permnum ++) { /* Find next root vertex */ if (bgraphBipartGgIsFree (&vexxtax[permtab[permnum]])) { vexxptr = vexxtax + permtab[permnum ++]; break; } } } while (vexxptr != NULL); if ((passnum == 0) || /* If first try */ ( (grafptr->commload > commload) || /* Or if better solution reached */ ((grafptr->commload == commload) && (abs (grafptr->compload0dlt) > abs (compload0dlt))))) { Gnum vertnum; grafptr->compload0dlt = compload0dlt; /* Set graph parameters */ grafptr->commload = commload; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) /* Copy bipartition state with flag 2 for tabled vertices */ grafptr->parttax[vertnum] = (bgraphBipartGgIsTabl (&vexxtax[vertnum])) ? 2 : (GraphPart) ((intptr_t) bgraphBipartGgNext (&vexxtax[vertnum])); } } flagtax = (byte *) (vexxtax + grafptr->s.baseval) - grafptr->s.baseval; /* Re-use extended vertex array for flag array */ memSet (flagtax + grafptr->s.baseval, ~0, grafptr->s.vertnbr * sizeof (byte)); for (vertnum = grafptr->s.baseval, fronnum = 0, compsize1 = 0, commgainextn = grafptr->commgainextn0; vertnum < grafptr->s.vertnnd; vertnum ++) { int partval; partval = grafptr->parttax[vertnum]; if (partval > 1) { /* If vertex belongs to frontier of part 0 */ Gnum edgenum; Gnum frontmp; /* Temporary count value for frontier */ grafptr->frontab[fronnum ++] = vertnum; /* Then it belongs to the frontier */ grafptr->parttax[vertnum] = 0; /* And it belongs to part 0 */ for (edgenum = verttax[vertnum], frontmp = 1; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; if (grafptr->parttax[vertend] == 1) { /* If vertex belongs to other part */ frontmp = 0; /* Then first frontier vertex was useful */ if (flagtax[vertend] != 0) { /* If vertex has not yet been flagged */ grafptr->frontab[fronnum ++] = vertend; /* Then add it to the frontier */ flagtax[vertend] = 0; /* Flag it */ } } } fronnum -= frontmp; /* Remove vertex from frontier if it was useless */ } partval &= 1; compsize1 += partval; if (veextax != NULL) commgainextn -= partval * 2 * veextax[vertnum]; } grafptr->fronnbr = fronnum; grafptr->compload0 = grafptr->compload0avg + grafptr->compload0dlt; grafptr->compsize0 = grafptr->s.vertnbr - compsize1; grafptr->commgainextn = commgainextn; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; if (permtab != NULL) /* Free work arrays */ memFree (permtab); memFree (vexxtax + grafptr->s.baseval); bgraphBipartGgTablExit (&tabldat); #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartGg: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hgraph_order_cp.c0000644000302600021200000007127413470115365021330 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_cp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders vertices by compres- **/ /** sing vertices with identical adjacency **/ /** structure. **/ /** **/ /** DATES : # Version 3.2 : from : 29 aug 1998 **/ /** to 12 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 03 jan 1999 **/ /** # Version 4.0 : from : 01 jan 2003 **/ /** to 05 jan 2005 **/ /** # Version 5.0 : from : 29 dec 2006 **/ /** to 22 may 2008 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 04 aug 2014 **/ /** to : 06 jun 2018 **/ /** **/ /** NOTES : # Pre-hashing proves itself extremely **/ /** efficient, since for graphs that **/ /** will be compressed very few writes **/ /** will be performed in the pre-hashing **/ /** array, and for others, for which pre- **/ /** hashing costs much more, it will save **/ /** time in the end. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_CP #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_cp.h" #include "hgraph_order_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderCp ( const Hgraph * restrict const finegrafptr, Order * restrict const fineordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HgraphOrderCpParam * const paraptr) { Hgraph coargrafdat; /* Compressed halo subgraph */ Order coarordedat; /* Ordering of compressed halo subgraph */ Gnum * coarperitab; /* Coarse permutation array */ const Gnum * restrict coarperitax; /* Temporary based access to coarperitab */ Gnum coarvertnbr; /* Number of compressed vertices */ Gnum coarvertnum; /* Number of current compressed vertex */ Gnum coarvnhdsiz; /* Size of non-halo end vertex array; zero if graph has no halo */ Gnum coarvsizsiz; /* Size of coarse vertex sizes array; zero if no fine vertex loads */ Gnum * restrict coarvsiztax; /* Array of coarse vertex sizes (as number of merged fine vertices) */ Gnum coaredgenbr; /* Number of compressed edges */ Gnum coaredgenum; /* Number of current compressed edge */ Gnum coarenohnnd; /* Position in edge array of first edge of first halo vertex */ Gnum * restrict coarvpostax; /* Position in fine permutation of fine vertices merged into same vertex */ Gnum * restrict finecoartax; /* Original to compressed vertex number array */ HgraphOrderCpMate * restrict finematetab; /* Array of fine vertices that may be compressed with current vertex */ HgraphOrderCpHash * restrict finehashtab; /* Neighbor hash table */ Gnum finehashmsk; /* Mask for access to hash table */ int * restrict finehasptab; /* Pre-hashing table */ Gnum finehaspmsk; /* Mask for access to pre-hashing table */ Gnum * restrict finehsumtax; /* Array of hash values for each original vertex */ Gnum finevertnum; /* Number of current original vertex */ Gnum finevsizsum; /* Sum of compressed vertex sizes to build fine inverse permutation */ void * dataptr; /* Flag of memory allocation success */ #ifdef SCOTCH_DEBUG_ORDER2 Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ #endif /* SCOTCH_DEBUG_ORDER2 */ Gnum * restrict const fineperitab = fineordeptr->peritab; const Gnum * restrict const fineverttax = finegrafptr->s.verttax; const Gnum * restrict const finevelotax = finegrafptr->s.velotax; const Gnum * restrict const finevendtax = finegrafptr->s.vendtax; const Gnum * restrict const finevnumtax = finegrafptr->s.vnumtax; const Gnum * restrict const finevnhdtax = finegrafptr->vnhdtax; const Gnum * restrict const fineedgetax = finegrafptr->s.edgetax; for (finehashmsk = 15; /* Set neighbor hash table sizes */ finehashmsk < finegrafptr->s.degrmax; finehashmsk = finehashmsk * 2 + 1) ; finehashmsk = finehashmsk * 4 + 3; /* Fill hash table at 1/4 of capacity */ if (((finecoartax = (Gnum *) memAlloc (finegrafptr->s.vertnbr * sizeof (Gnum))) == NULL) || (memAllocGroup ((void **) (void *) &finehashtab, (size_t) ((finehashmsk + 1) * sizeof (HgraphOrderCpHash)), &finematetab, (size_t) (finegrafptr->s.degrmax * sizeof (HgraphOrderCpMate)), NULL) == NULL) || ((finehsumtax = (Gnum *) memAlloc (finegrafptr->vnohnbr * sizeof (Gnum))) == NULL)) { errorPrint ("hgraphOrderCp: out of memory (1)"); if (finecoartax != NULL) { if (finehashtab != NULL) memFree (finehashtab); memFree (finecoartax); } return (1); } finehsumtax -= finegrafptr->s.baseval; /* TRICK: do not base finecoartax yet (see later) */ finehasptab = (int *) finecoartax; /* Use finecoartab as temporary pre-hash table */ for (finehaspmsk = 1; /* Get pre-hash mask that fits in finecoartab */ finehaspmsk < finegrafptr->s.vertnbr; /* Smallest (2^i)-1 value >= vertnbr */ finehaspmsk = finehaspmsk * 2 + 1) ; finehaspmsk >>= 1; /* Ensure masked data will always fit into finecoartab array */ finehaspmsk = (finehaspmsk * (sizeof (Gnum) / sizeof (int))) + ((sizeof (Gnum) / sizeof (int)) - 1); if (finehaspmsk >= ((sizeof (int) << (3 + 1)) - 1)) /* Only use 1/8 of array for pre-hashing, for increased cache locality */ finehaspmsk >>= 3; memSet (finehasptab, 0, (finehaspmsk + 1) * sizeof (int)); /* Initialize pre-hash table */ for (finevertnum = finegrafptr->s.baseval, coarvertnbr = finegrafptr->vnohnbr; /* For all non-halo vertices */ finevertnum < finegrafptr->vnohnnd; finevertnum ++) { Gnum fineedgenum; /* Current edge number */ Gnum finehsumval; /* Hash sum value */ Gnum finehsumbit; for (fineedgenum = fineverttax[finevertnum], finehsumval = finevertnum; /* For all edges, including halo edges */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) finehsumval += fineedgetax[fineedgenum]; finehsumtax[finevertnum] = finehsumval; finehsumbit = finehsumval & ((sizeof (int) << 3) - 1); /* Get bit mask and byte position (division should be optimized into a shift) */ finehsumval /= (sizeof (int) << 3); finehsumval &= finehaspmsk; /* Make hash sum value fit into finehasptab */ coarvertnbr -= (finehasptab[finehsumval] >> finehsumbit) & 1; /* If hash value already in pre-hash table, maybe one more vertex compressed */ finehasptab[finehsumval] |= (1 << finehsumbit); /* Put value into pre-hash table anyway */ } if ((double) coarvertnbr > ((double) finegrafptr->vnohnbr * paraptr->comprat)) { /* If graph needs not be compressed */ memFree (finehsumtax + finegrafptr->s.baseval); memFree (finehashtab); memFree (finecoartax); /* Not yet based */ return (hgraphOrderSt (finegrafptr, fineordeptr, ordenum, cblkptr, paraptr->stratunc)); } finecoartax -= finegrafptr->s.baseval; /* Base finecoartab array */ memSet (finehashtab, ~0, (finehashmsk + 1) * sizeof (HgraphOrderCpHash)); hgraphInit (&coargrafdat); /* Initialize compressed halo graph structure */ coargrafdat.s.baseval = 1; /* Base coarse graph to 1 because hgraphOrderHb and hgraphOrderHf prefer it */ for (finevertnum = finegrafptr->s.baseval, coarvertnbr = coargrafdat.s.baseval, coaredgenbr = finegrafptr->s.edgenbr; /* For all non-halo vertices */ finevertnum < finegrafptr->vnohnnd; finevertnum ++) { Gnum finedegrval; /* Degree of current fine vertex */ Gnum finehsumval; /* Current hash sum value */ Gnum finematenbr; /* Number of mates of current vertex */ Gnum fineedgenum; /* Current edge number */ finedegrval = finevendtax[finevertnum] - fineverttax[finevertnum]; finehsumval = finehsumtax[finevertnum]; finematenbr = 0; /* Reset potential mate array */ for (fineedgenum = fineverttax[finevertnum]; /* For all edges, including halo edges */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum finevertend; finevertend = fineedgetax[fineedgenum]; if ((finevertend < finevertnum) && /* If neighbor has same characteristics */ (finehsumval == finehsumtax[finevertend]) && (finedegrval == (finevendtax[finevertend] - fineverttax[finevertend]))) { Gnum finematenum; Gnum coarvertend; for (finematenum = 0, coarvertend = finecoartax[finevertend]; /* Search if end vertex has already been compressed with some mate */ (finematenum < finematenbr) && (finematetab[finematenum].coarvertend != coarvertend); finematenum ++) ; if (finematenum == finematenbr) { /* If new slot needed */ finematetab[finematenum].coarvertend = coarvertend; /* Build it */ finematetab[finematenum].finevertend = finevertend; finematenbr ++; } } } finecoartax[finevertnum] = coarvertnbr ++; /* Assume no mate found */ if (finematenbr > 0) { /* If potential mates exist */ Gnum fineedgenum; /* Current edge number */ Gnum finehashnum; for (fineedgenum = fineverttax[finevertnum]; /* For all edges, including halo edges */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum finevertend; finevertend = fineedgetax[fineedgenum]; /* Add end vertex to hash table */ for (finehashnum = (finevertend * HGRAPHORDERCPHASHPRIME) & finehashmsk; /* Search for empty slot in hash table */ finehashtab[finehashnum].vertnum == finevertnum; finehashnum = (finehashnum + 1) & finehashmsk) ; finehashtab[finehashnum].vertnum = finevertnum; finehashtab[finehashnum].vertend = finevertend; } for (finehashnum = (finevertnum * HGRAPHORDERCPHASHPRIME) & finehashmsk; /* Add current vertex to hash table */ finehashtab[finehashnum].vertnum == finevertnum; finehashnum = (finehashnum + 1) & finehashmsk) ; finehashtab[finehashnum].vertnum = finevertnum; finehashtab[finehashnum].vertend = finevertnum; finematenbr --; /* Point to first potential mate */ do { /* For all potential mates */ Gnum fineedgenum; /* Current edge number */ Gnum fineedgennd; for (fineedgenum = fineverttax[finematetab[finematenbr].finevertend], /* For all edges, including halo edges */ fineedgennd = finevendtax[finematetab[finematenbr].finevertend]; fineedgenum < fineedgennd; fineedgenum ++) { Gnum finevertend; finevertend = fineedgetax[fineedgenum]; for (finehashnum = (finevertend * HGRAPHORDERCPHASHPRIME) & finehashmsk; ; finehashnum = (finehashnum + 1) & finehashmsk) { if (finehashtab[finehashnum].vertnum != finevertnum) /* If mate neighbor not found in hash table */ goto loop_failed; /* Vertex cannot be merged to mate, so skip to next mate */ if (finehashtab[finehashnum].vertend == finevertend) /* Else if mate neighbor found in hash table */ break; /* Skip to next mate neighbor to find */ } } coarvertnbr --; /* Same adjacency structure */ finecoartax[finevertnum] = finematetab[finematenbr].coarvertend; /* Get number */ coaredgenbr -= finedegrval + 1; /* Remove exceeding edges */ break; loop_failed: ; } while (finematenbr -- > 0); } } coargrafdat.vnohnnd = coarvertnbr; /* Save number of non-halo vertices */ memFree (finehsumtax + finegrafptr->s.baseval); if ((double) (coarvertnbr - coargrafdat.s.baseval) > ((double) finegrafptr->vnohnbr * paraptr->comprat)) { /* If graph needs not be compressed */ memFree (finehashtab); memFree (finecoartax + finegrafptr->s.baseval); return (hgraphOrderSt (finegrafptr, fineordeptr, ordenum, cblkptr, paraptr->stratunc)); } for ( ; finevertnum < finegrafptr->s.vertnnd; finevertnum ++) /* For all halo vertices */ finecoartax[finevertnum] = coarvertnbr ++; /* Halo vertices are never compressed */ coargrafdat.s.flagval = GRAPHFREETABS | GRAPHVERTGROUP; /* Do not set HGRAPHFREEVNHD since vnhdtax allocated in group */ coargrafdat.s.vertnbr = coarvertnbr - coargrafdat.s.baseval; coargrafdat.s.vertnnd = coarvertnbr; coargrafdat.s.velosum = finegrafptr->s.velosum; coargrafdat.s.degrmax = finegrafptr->s.degrmax; coargrafdat.vnohnbr = coargrafdat.vnohnnd - coargrafdat.s.baseval; coargrafdat.vnlosum = finegrafptr->vnlosum; coarvnhdsiz = (finegrafptr->s.vertnbr == finegrafptr->vnohnbr) ? 0 : coargrafdat.vnohnbr; /* If no halo, no need for vnhdtax; will use vendtax */ coarvsizsiz = (finevelotax == NULL) ? 0 : coarvertnbr; /* If no fine vertex loads, use coarse velotax as coarvsiztax */ if ((dataptr = memAllocGroup ((void **) (void *) &coargrafdat.s.verttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coargrafdat.vnhdtax, (size_t) (coarvnhdsiz * sizeof (Gnum)), &coargrafdat.s.velotax, (size_t) (coarvertnbr * sizeof (Gnum)), &coarvsiztax, (size_t) (coarvsizsiz * sizeof (Gnum)), NULL)) != NULL) { dataptr = coargrafdat.s.edgetax = (Gnum *) memAlloc (coaredgenbr * sizeof (Gnum)); } if (dataptr == NULL) { errorPrint ("hgraphOrderCp: out of memory (2)"); hgraphExit (&coargrafdat); memFree (finehashtab); memFree (finecoartax + finegrafptr->s.baseval); return (1); } coargrafdat.s.verttax -= coargrafdat.s.baseval; coargrafdat.s.vendtax = coargrafdat.s.verttax + 1; /* Use compact representation of arrays */ coargrafdat.s.velotax -= coargrafdat.s.baseval; coargrafdat.s.edgetax -= coargrafdat.s.baseval; coargrafdat.vnhdtax = (finegrafptr->s.vertnbr == finegrafptr->vnohnbr) ? coargrafdat.s.vendtax : coargrafdat.vnhdtax - coargrafdat.s.baseval; coarvsiztax = (finevelotax == NULL) ? coargrafdat.s.velotax : coarvsiztax - coargrafdat.s.baseval; memSet (finehashtab, ~0, (finehashmsk + 1) * sizeof (HgraphOrderCpHash)); for (finevertnum = finegrafptr->s.baseval, coarvertnum = coaredgenum = coargrafdat.s.baseval; /* For all non-halo vertices */ finevertnum < finegrafptr->vnohnnd; finevertnum ++) { Gnum fineedgenum; /* Current edge number */ if (finecoartax[finevertnum] != coarvertnum) /* Skip fine vertices until we find one that is part of current coarse vertex */ continue; coargrafdat.s.verttax[coarvertnum] = coaredgenum; coarvsiztax[coarvertnum] = 1; /* Fill coargrafdat.s.velotax if finegrafptr has no vertex loads */ for (fineedgenum = fineverttax[finevertnum]; /* For all non-halo edges of vertex */ fineedgenum < finevnhdtax[finevertnum]; fineedgenum ++) { Gnum finevertend; Gnum finehashnum; finevertend = fineedgetax[fineedgenum]; if (finecoartax[finevertend] == coarvertnum) { /* If neighbor is merged into us, merge load but do not write edge */ coarvsiztax[coarvertnum] ++; /* Fill coargrafdat.s.velotax if finegrafptr has no vertex loads */ continue; } for (finehashnum = (finecoartax[finevertend] * HGRAPHORDERCPHASHPRIME) & finehashmsk; ; /* Search for end vertex in hash table */ finehashnum = (finehashnum + 1) & finehashmsk) { if (finehashtab[finehashnum].vertnum != coarvertnum) { finehashtab[finehashnum].vertnum = coarvertnum; finehashtab[finehashnum].vertend = coargrafdat.s.edgetax[coaredgenum ++] = finecoartax[finevertend]; break; } if (finehashtab[finehashnum].vertend == finecoartax[finevertend]) break; /* If edge already exists */ } } coargrafdat.vnhdtax[coarvertnum] = coaredgenum; /* Set end of non-halo edge sub-array */ for ( ; fineedgenum < finegrafptr->s.vendtax[finevertnum]; fineedgenum ++) { /* For edges linking to halo vertices */ Gnum finevertend; finevertend = fineedgetax[fineedgenum]; coargrafdat.s.edgetax[coaredgenum ++] = finecoartax[finevertend]; /* Halo vertices are always defined and unique */ } coarvertnum ++; } for (coarenohnnd = coaredgenum; finevertnum < finegrafptr->s.vertnnd; finevertnum ++) { /* For all halo vertices */ Gnum fineedgenum; /* Current edge number */ #ifdef SCOTCH_DEBUG_ORDER2 if (finecoartax[finevertnum] != coarvertnum) { errorPrint ("hgraphOrderCp: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ coargrafdat.s.verttax[coarvertnum] = coaredgenum; coarvsiztax[coarvertnum] = 1; /* Fill coargrafdat.s.velotax if finegrafptr has no vertex loads */ for (fineedgenum = fineverttax[finevertnum]; /* For all edges of halo vertex */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum finevertend; Gnum finehashnum; finevertend = fineedgetax[fineedgenum]; #ifdef SCOTCH_DEBUG_ORDER2 if (finecoartax[finevertend] == coarvertnum) { /* No neighbor can be merged into us since halo vertices are unique */ errorPrint ("hgraphOrderCp: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ for (finehashnum = (finecoartax[finevertend] * HGRAPHORDERCPHASHPRIME) & finehashmsk; ; /* Search for end vertex in hash table */ finehashnum = (finehashnum + 1) & finehashmsk) { if (finehashtab[finehashnum].vertnum != coarvertnum) { finehashtab[finehashnum].vertnum = coarvertnum; finehashtab[finehashnum].vertend = coargrafdat.s.edgetax[coaredgenum ++] = finecoartax[finevertend]; break; } if (finehashtab[finehashnum].vertend == finecoartax[finevertend]) break; /* If edge already exists */ } } coarvertnum ++; } coargrafdat.s.verttax[coarvertnum] = coaredgenum; /* Set end of compact vertex array */ coargrafdat.s.edlosum = coargrafdat.s.edgenbr = coaredgenum - coargrafdat.s.baseval; coargrafdat.enlosum = coargrafdat.enohnbr = coargrafdat.s.edgenbr - 2 * (coaredgenum - coarenohnnd); if (finevelotax != NULL) { /* If fine graph has vertex loads */ memSet (coargrafdat.s.velotax + coargrafdat.s.baseval, 0, coargrafdat.s.vertnbr * sizeof (Gnum)); for (finevertnum = finegrafptr->s.baseval; finevertnum < finegrafptr->s.vertnnd; finevertnum ++) /* Compute vertex loads for compressed graph */ coargrafdat.s.velotax[finecoartax[finevertnum]] += finevelotax[finevertnum]; } memFree (finehashtab); coargrafdat.s.edgetax = (Gnum *) memRealloc (coargrafdat.s.edgetax + coargrafdat.s.baseval, coargrafdat.s.edgenbr * sizeof (Gnum)) - coargrafdat.s.baseval; #ifdef SCOTCH_DEBUG_ORDER2 if (hgraphCheck (&coargrafdat) != 0) { errorPrint ("hgraphOrderCp: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ if ((coarperitab = memAlloc (coargrafdat.vnohnbr * sizeof (Gnum))) == NULL) { /* Coarse permutation only for non-halo vertices */ errorPrint ("hgraphOrderCp: out of memory (3)"); hgraphExit (&coargrafdat); memFree (finecoartax + finegrafptr->s.baseval); return (1); } orderInit (&coarordedat, coargrafdat.s.baseval, coargrafdat.vnohnbr, coarperitab); /* Build ordering of compressed subgraph */ if (hgraphOrderSt (&coargrafdat, &coarordedat, 0, &coarordedat.cblktre, paraptr->stratcpr) != 0) { memFree (coarperitab); hgraphExit (&coargrafdat); memFree (finecoartax + finegrafptr->s.baseval); return (1); } *cblkptr = coarordedat.cblktre; /* Link sub-tree to ordering */ coarordedat.cblktre.cblktab = NULL; /* Unlink sub-tree from sub-ordering */ #ifdef SCOTCH_DEBUG_ORDER2 finevertnbr = #endif /* SCOTCH_DEBUG_ORDER2 */ hgraphOrderCpTree (coarordedat.peritab, coarvsiztax, cblkptr, 0); /* Expand sub-tree */ #ifdef SCOTCH_DEBUG_ORDER2 if (finevertnbr != finegrafptr->vnohnbr) { errorPrint ("hgraphOrderCp: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ fineordeptr->treenbr += coarordedat.treenbr - 1; /* Adjust number of tree nodes */ fineordeptr->cblknbr += coarordedat.cblknbr - 1; /* Adjust number of column blocks */ coarvpostax = coargrafdat.s.verttax; /* Re-cycle verttab (not velotab as may be merged with coarvsiztab) */ coarperitax = coarperitab - coargrafdat.s.baseval; for (coarvertnum = coargrafdat.s.baseval, finevsizsum = 0; /* Compute initial indices for inverse permutation expansion */ coarvertnum < coargrafdat.vnohnnd; coarvertnum ++) { coarvpostax[coarperitax[coarvertnum]] = finevsizsum; finevsizsum += coarvsiztax[coarperitax[coarvertnum]]; } if (finevnumtax == NULL) { /* If fine graph is original graph */ for (finevertnum = finegrafptr->s.baseval; finevertnum < finegrafptr->vnohnnd; finevertnum ++) /* Compute fine permutation */ fineperitab[coarvpostax[finecoartax[finevertnum]] ++] = finevertnum; } else { /* Graph is not original graph */ for (finevertnum = finegrafptr->s.baseval; finevertnum < finegrafptr->vnohnnd; finevertnum ++) /* Compute fine permutation */ fineperitab[coarvpostax[finecoartax[finevertnum]] ++] = finevnumtax[finevertnum]; } memFree (coarperitab); memFree (finecoartax + finegrafptr->s.baseval); orderExit (&coarordedat); hgraphExit (&coargrafdat); /* Free coarvsiztab as part of vertex group */ return (0); } /* This routine turns the coarse elimination ** tree produced by the ordering of the coarse ** graph into a fine elimination tree, according ** to the cardinality of the coarse vertices. ** It returns: ** - !0 : overall number of fine vertices, in all cases. */ static Gnum hgraphOrderCpTree ( const Gnum * restrict const coarperitab, /* Coarse inverse permutation */ const Gnum * restrict const coarvsiztax, /* Array of fine sizes of coarse vertices */ OrderCblk * restrict const coficblkptr, /* Current coarse/fine column block cell */ const Gnum coarordenum) /* Compressed vertex to start expansion at */ { Gnum finevertnbr; /* Number of fine vertices in subtree */ finevertnbr = 0; /* No fine vertices yet */ if (coficblkptr->cblktab == NULL) { /* If leaf of column block tree */ Gnum coarvnumnum; for (coarvnumnum = coarordenum; coarvnumnum < coarordenum + coficblkptr->vnodnbr; coarvnumnum ++) finevertnbr += coarvsiztax[coarperitab[coarvnumnum]]; /* Sum-up fine vertices */ } else { Gnum coarvertnbr; /* Number of coarse vertices in cell */ Gnum coarvertsum; /* Number of coarse vertices in subtree */ Gnum coficblknum; /* Index in column block array */ for (coficblknum = 0, coarvertsum = coarordenum; /* Start at current coarse index */ coficblknum < coficblkptr->cblknbr; coficblknum ++) { coarvertnbr = coficblkptr->cblktab[coficblknum].vnodnbr; /* Save number of coarse vertices */ finevertnbr += hgraphOrderCpTree (coarperitab, coarvsiztax, &coficblkptr->cblktab[coficblknum], coarvertsum); coarvertsum += coarvertnbr; /* Sum-up coarse vertices */ } } coficblkptr->vnodnbr = finevertnbr; /* Set number of fine vertices */ return (finevertnbr); /* Return accumulated number */ } scotch_6.0.9/src/libscotch/library_graph_io_mmkt_f.c0000644000302600021200000001707613560013261023043 0ustar pelegrinpelegrin/* Copyright 2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_mmkt_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.0 : from : 14 mar 2008 **/ /** to 14 mar 2008 **/ /** # Version 5.1 : from : 11 oct 2008 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMLOADMMKT, graphgeomloadmmkt, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADMMKT)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomLoadMmkt (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMSAVEMMKT, graphgeomsavemmkt, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVEMMKT)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomSaveMmkt (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/library_dgraph_stat.h0000644000302600021200000000556613303015264022224 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /**********************************************************/ /* */ /* NAME : library_dgraph_stat.h */ /* */ /* AUTHOR : Francois PELLEGRINI */ /* */ /* FUNCTION : These lines are the data declarations */ /* for the distributed source graph */ /* analyzing routine. */ /* */ /* # Version 5.0 : from : 23 jun 2007 */ /* to 23 jun 2007 */ /* */ /**********************************************************/ /* ** The type and structure definitions. */ /* Communication structure for distributed graph statistics. */ typedef struct DgraphStatData_ { Gnum velomin; Gnum velomax; Gnum degrmin; Gnum degrmax; Gnum edlomin; Gnum edlomax; Gnum edlosum; double velodlt; double degrdlt; double edlodlt; } DgraphStatData; scotch_6.0.9/src/libscotch/bgraph_bipart_ml.c0000644000302600021200000003767113560005346021476 0ustar pelegrinpelegrin/* Copyright 2004,2007-2011,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_ml.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Luca SCARANO (v3.1) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module bipartitions an active **/ /** graph using a multi-level scheme. **/ /** **/ /** DATES : # Version 3.1 : from : 24 oct 1995 **/ /** to 19 sep 1996 **/ /** # Version 3.2 : from : 20 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 12 mar 1999 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 12 dec 2003 **/ /** to 20 mar 2005 **/ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 27 mar 2011 **/ /** # Version 6.0 : from : 09 mar 2011 **/ /** to 16 aug 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_ML #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "bgraph.h" #include "bgraph_bipart_ml.h" #include "bgraph_bipart_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** graph that is given on input. The coarser ** graphs differ at this stage from classical ** active graphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse graph has been built. ** - 1 : if threshold reached or on error. */ static int bgraphBipartMlCoarsen ( const Bgraph * const finegrafptr, /*+ Finer graph +*/ Bgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const BgraphBipartMlParam * const paraptr) /*+ Method parameters +*/ { Gnum comploadtmp; /* Increase of imbalance range for coarse graph */ *coarmultptr = NULL; /* Allocate multloctab along with coarse graph */ if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, paraptr->coarnbr, paraptr->coarrat, GRAPHCOARSENNONE, NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ if (finegrafptr->veextax != NULL) { /* Merge external gains for coarsened vertices */ GraphCoarsenMulti * restrict coarmulttab; Gnum * restrict coarveextab; Gnum coarvertnbr; Gnum coarvertnum; const Gnum * restrict const fineveextax = finegrafptr->veextax; if ((coarveextab = (Gnum *) memAlloc (coargrafptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("bgraphBipartMlCoarsen: out of memory"); graphExit (&coargrafptr->s); /* Only free Graph since veextab not allocated */ return (1); } coarmulttab = *coarmultptr; for (coarvertnum = 0, coarvertnbr = coargrafptr->s.vertnbr; coarvertnum < coarvertnbr; coarvertnum ++) { Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; coarveextab[coarvertnum] = (finevertnum0 != finevertnum1) ? fineveextax[finevertnum0] + fineveextax[finevertnum1] : fineveextax[finevertnum0]; } coargrafptr->s.flagval |= BGRAPHFREEVEEX; coargrafptr->veextax = coarveextab - coargrafptr->s.baseval; } else /* If fine graph does not have external gains */ coargrafptr->veextax = NULL; /* Coarse graph does not have external gains */ coargrafptr->s.flagval |= BGRAPHFREEPART; /* Only part array will have to be freed, as frontier is shared */ coargrafptr->parttax = NULL; /* Do not allocate partition data yet */ coargrafptr->frontab = finegrafptr->frontab; /* Use frontier array of finer graph as coarse frontier array */ comploadtmp = (finegrafptr->levlnum + 1) + (Gnum) (((double) MIN ((finegrafptr->compload0max - finegrafptr->compload0avg), (finegrafptr->compload0avg - finegrafptr->compload0min))) * 0.05); coargrafptr->compload0min = finegrafptr->compload0min - comploadtmp; /* Only set constant partition parameters as others will be set on uncoarsening */ coargrafptr->compload0max = finegrafptr->compload0max + comploadtmp; coargrafptr->compload0avg = finegrafptr->compload0avg; coargrafptr->commloadextn0 = finegrafptr->commloadextn0; coargrafptr->commgainextn0 = finegrafptr->commgainextn0; coargrafptr->domndist = finegrafptr->domndist; coargrafptr->domnwght[0] = finegrafptr->domnwght[0]; coargrafptr->domnwght[1] = finegrafptr->domnwght[1]; coargrafptr->vfixload[0] = finegrafptr->vfixload[0]; coargrafptr->vfixload[1] = finegrafptr->vfixload[1]; coargrafptr->levlnum = finegrafptr->levlnum + 1; return (0); } /* This routine propagates the bipartition of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the bipartition is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to fine graph. ** - !0 : on error. */ static int bgraphBipartMlUncoarsen ( Bgraph * restrict const finegrafptr, /*+ Finer graph +*/ const Bgraph * const coargrafptr, /*+ Coarser graph +*/ const GraphCoarsenMulti * const coarmulttab) /*+ Pointer to un-based multinode array +*/ { Gnum coarvertnnd; Gnum coarvertnum; Gnum coarfronnbr; Gnum coarfronnum; Gnum * restrict coarfrontab; GraphPart * restrict coarparttax; GraphPart * restrict fineparttax; Gnum finefronnbr; Gnum finecompsize1; const GraphCoarsenMulti * const coarmulttax = coarmulttab - finegrafptr->s.baseval; const Gnum * restrict const fineverttax = finegrafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const finevendtax = finegrafptr->s.vendtax; const Gnum * restrict const fineedgetax = finegrafptr->s.edgetax; if (finegrafptr->parttax == NULL) { /* If partition array not yet allocated */ if ((finegrafptr->parttax = (GraphPart *) memAlloc (finegrafptr->s.vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("bgraphBipartMlUncoarsen: out of memory"); return (1); /* Allocated data will be freed along with graph structure */ } finegrafptr->parttax -= finegrafptr->s.baseval; } if (coargrafptr == NULL) { /* If no coarse graph provided */ bgraphZero (finegrafptr); /* Assign all vertices to part 0 */ return (0); } coarparttax = coargrafptr->parttax; coarfrontab = coargrafptr->frontab; /* TRICK: also equal to finefrontab */ fineparttax = finegrafptr->parttax; finecompsize1 = coargrafptr->s.vertnbr - coargrafptr->compsize0; /* Pre-allocate sizes */ for (coarvertnum = coargrafptr->s.baseval, coarvertnnd = coargrafptr->s.vertnnd; coarvertnum < coarvertnnd; coarvertnum ++) { Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ GraphPart partval; finevertnum0 = coarmulttax[coarvertnum].vertnum[0]; finevertnum1 = coarmulttax[coarvertnum].vertnum[1]; partval = coarparttax[coarvertnum]; fineparttax[finevertnum0] = partval; if (finevertnum0 != finevertnum1) { fineparttax[finevertnum1] = partval; finecompsize1 += partval; /* Account for extra vertices created in part 1 */ } } finegrafptr->compload0 = coargrafptr->compload0; finegrafptr->compload0dlt = coargrafptr->compload0dlt; finegrafptr->compsize0 = finegrafptr->s.vertnbr - finecompsize1; finegrafptr->commload = coargrafptr->commload; finegrafptr->commgainextn = coargrafptr->commgainextn; finegrafptr->bbalval = coargrafptr->bbalval; for (coarfronnum = 0, finefronnbr = coarfronnbr = coargrafptr->fronnbr; /* Re-cycle frontier array from coarse to fine graph */ coarfronnum < coarfronnbr; coarfronnum ++) { Gnum coarvertnum; Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ coarvertnum = coarfrontab[coarfronnum]; finevertnum0 = coarmulttax[coarvertnum].vertnum[0]; finevertnum1 = coarmulttax[coarvertnum].vertnum[1]; if (finevertnum0 != finevertnum1) { /* If multinode is made of two distinct vertices */ GraphPart coarpartval; Gnum fineedgenum; coarpartval = coarparttax[coarvertnum]; #ifdef SCOTCH_DEBUG_BGRAPH2 coarfrontab[coarfronnum] = ~0; #endif /* SCOTCH_DEBUG_BGRAPH2 */ for (fineedgenum = fineverttax[finevertnum0]; fineedgenum < finevendtax[finevertnum0]; fineedgenum ++) { if (fineparttax[fineedgetax[fineedgenum]] != coarpartval) { /* If first vertex belongs to frontier */ coarfrontab[coarfronnum] = finevertnum0; /* Record it in lieu of the coarse frontier vertex */ break; } } if (fineedgenum >= finevendtax[finevertnum0]) { /* If first vertex not in frontier */ coarfrontab[coarfronnum] = finevertnum1; /* Then second vertex must be in frontier */ continue; /* Skip to next multinode */ } for (fineedgenum = fineverttax[finevertnum1]; /* Check if second vertex belong to frontier too */ fineedgenum < finevendtax[finevertnum1]; fineedgenum ++) { if (fineparttax[fineedgetax[fineedgenum]] != coarpartval) { /* If second vertex belongs to frontier */ coarfrontab[finefronnbr ++] = finevertnum1; /* Record it at the end of the recycled frontier array */ break; } } #ifdef SCOTCH_DEBUG_BGRAPH2 if (coarfrontab[coarfronnum] == ~0) { errorPrint ("bgraphBipartMlUncoarsen: internal error"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ } else /* If coarse vertex is single node */ coarfrontab[coarfronnum] = finevertnum0; /* Then it belongs to the frontier */ } finegrafptr->fronnbr = finefronnbr; #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (finegrafptr) != 0) { errorPrint ("bgraphBipartMlUncoarsen: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } /* This routine recursively performs the ** bipartitioning recursion. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ static int bgraphBipartMl2 ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const BgraphBipartMlParam * const paraptr) /*+ Method parameters +*/ { Bgraph coargrafdat; GraphCoarsenMulti * coarmulttab; int o; if (bgraphBipartMlCoarsen (grafptr, &coargrafdat, &coarmulttab, paraptr) == 0) { if (((o = bgraphBipartMl2 (&coargrafdat, paraptr)) == 0) && ((o = bgraphBipartMlUncoarsen (grafptr, &coargrafdat, coarmulttab)) == 0) && ((o = bgraphBipartSt (grafptr, paraptr->stratasc)) != 0)) /* Apply ascending strategy */ errorPrint ("bgraphBipartMl2: cannot apply ascending strategy"); bgraphExit (&coargrafdat); } else { if (((o = bgraphBipartMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = bgraphBipartSt (grafptr, paraptr->stratlow)) != 0)) /* Apply low strategy */ errorPrint ("bgraphBipartMl2: cannot apply low strategy"); } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the multi-level bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartMl ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const BgraphBipartMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = grafptr->levlnum; /* Save graph level */ grafptr->levlnum = 0; /* Initialize coarsening level */ o = bgraphBipartMl2 (grafptr, paraptr); /* Perform multi-level bipartitioning */ grafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/hgraph_order_nd.c0000644000302600021200000002705513470115365021325 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_nd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders graphs using the **/ /** nested dissection algorithm. **/ /** **/ /** DATES : # Version 3.2 : from : 17 oct 1996 **/ /** to : 21 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 13 mar 1999 **/ /** # Version 4.0 : from : 03 jan 2002 **/ /** to 24 dec 2004 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 25 jul 2007 **/ /** # Version 5.1 : from : 24 oct 2010 **/ /** to 24 oct 2010 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_ND #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_nd.h" #include "hgraph_order_st.h" #include "vgraph.h" #include "vgraph_separate_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderNd ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, const HgraphOrderNdParam * restrict const paraptr) { Hgraph indgrafdat; /* Halo graph data */ Gnum * vspvnumptr[3]; /* Pointers to vertex lists to fill */ VertList vsplisttab[3]; /* Array of separated part lists */ Vgraph vspgrafdat; /* Vertex separation graph data */ Gnum vspvertnum; /* Current vertex in separation graph */ int o; hgraphUnhalo (grafptr, &vspgrafdat.s); /* Keep only non-halo vertices for separation */ if ((vspgrafdat.frontab = (Gnum *) memAlloc (vspgrafdat.s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("hgraphOrderNd: out of memory (1)"); return (1); } if ((vspgrafdat.parttax = (GraphPart *) memAlloc (vspgrafdat.s.vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("hgraphOrderNd: out of memory (2)"); memFree (vspgrafdat.frontab); return (1); } memSet (vspgrafdat.parttax, 0, vspgrafdat.s.vertnbr * sizeof (GraphPart)); /* Set all vertices to part 0 */ vspgrafdat.parttax -= vspgrafdat.s.baseval; vspgrafdat.compload[0] = vspgrafdat.s.velosum; vspgrafdat.compload[1] = 0; vspgrafdat.compload[2] = 0; vspgrafdat.comploaddlt = vspgrafdat.s.velosum; vspgrafdat.compsize[0] = vspgrafdat.s.vertnbr; vspgrafdat.compsize[1] = 0; vspgrafdat.fronnbr = 0; vspgrafdat.levlnum = grafptr->levlnum; /* Set level of separation graph as level of halo graph */ if (vgraphSeparateSt (&vspgrafdat, paraptr->sepstrat) != 0) { /* Separate vertex-separation graph */ vgraphExit (&vspgrafdat); return (1); } if ((vspgrafdat.compsize[0] == 0) || /* If could not separate more */ (vspgrafdat.compsize[1] == 0)) { vgraphExit (&vspgrafdat); /* Free useless space */ hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, paraptr->ordstratlea); /* Order this leaf */ return (0); /* Leaf has been processed */ } vsplisttab[0].vnumnbr = vspgrafdat.compsize[0]; /* Build vertex lists within frontier array */ vsplisttab[0].vnumtab = vspgrafdat.frontab + vspgrafdat.fronnbr; vsplisttab[1].vnumnbr = vspgrafdat.compsize[1]; vsplisttab[1].vnumtab = vsplisttab[0].vnumtab + vsplisttab[0].vnumnbr; vsplisttab[2].vnumnbr = vspgrafdat.fronnbr; vsplisttab[2].vnumtab = vspgrafdat.frontab; vspvnumptr[0] = vsplisttab[0].vnumtab; vspvnumptr[1] = vsplisttab[1].vnumtab; vspvnumptr[2] = vsplisttab[2].vnumtab; for (vspvertnum = vspgrafdat.s.baseval; vspvertnum < vspgrafdat.s.vertnnd; vspvertnum ++) { /* Fill lists */ *vspvnumptr[vspgrafdat.parttax[vspvertnum]] ++ = vspvertnum; #ifdef SCOTCH_DEBUG_HGRAPH2 if (vspgrafdat.parttax[vspvertnum] != 2) { /* If vertex does not separate */ Gnum vspedgenum; GraphPart vsppartnum; vsppartnum = 1 - vspgrafdat.parttax[vspvertnum]; /* Get opposite part value */ for (vspedgenum = vspgrafdat.s.verttax[vspvertnum]; vspedgenum < vspgrafdat.s.vendtax[vspvertnum]; vspedgenum ++) { if (vspgrafdat.parttax[vspgrafdat.s.edgetax[vspedgenum]] == vsppartnum) { /* If an edge crosses the separator */ errorPrint ("hgraphOrderNd: internal error (1)"); vgraphExit (&vspgrafdat); return (1); } } } #endif /* SCOTCH_DEBUG_HGRAPH2 */ } #ifdef SCOTCH_DEBUG_HGRAPH2 if ((vspvnumptr[0] != vsplisttab[0].vnumtab + vsplisttab[0].vnumnbr) || (vspvnumptr[1] != vsplisttab[1].vnumtab + vsplisttab[1].vnumnbr) || (vspvnumptr[2] != vsplisttab[2].vnumtab + vsplisttab[2].vnumnbr)) { errorPrint ("hgraphOrderNd: internal error (2)"); vgraphExit (&vspgrafdat); return (1); } #endif /* SCOTCH_DEBUG_HGRAPH2 */ memFree (vspgrafdat.parttax + vspgrafdat.s.baseval); /* Free useless space */ #ifdef SCOTCH_DEBUG_HGRAPH2 vspgrafdat.parttax = NULL; /* Will cause bug if re-read */ #endif /* SCOTCH_DEBUG_HGRAPH2 */ cblkptr->typeval = ORDERCBLKNEDI; /* Node becomes a nested dissection node */ if ((cblkptr->cblktab = (OrderCblk *) memAlloc (3 * sizeof (OrderCblk))) == NULL) { errorPrint ("hgraphOrderNd: out of memory (2)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); } cblkptr->cblktab[0].typeval = ORDERCBLKOTHR; /* Build column blocks */ cblkptr->cblktab[0].vnodnbr = vsplisttab[0].vnumnbr; cblkptr->cblktab[0].cblknbr = 0; cblkptr->cblktab[0].cblktab = NULL; cblkptr->cblktab[1].typeval = ORDERCBLKOTHR; cblkptr->cblktab[1].vnodnbr = vsplisttab[1].vnumnbr; cblkptr->cblktab[1].cblknbr = 0; cblkptr->cblktab[1].cblktab = NULL; if (vsplisttab[2].vnumnbr != 0) { /* If separator not empty */ cblkptr->cblknbr = 3; /* It is a three-cell tree node */ ordeptr->cblknbr += 2; /* Two more column blocks created */ ordeptr->treenbr += 3; /* Three more tree nodes created */ cblkptr->cblktab[2].typeval = ORDERCBLKOTHR; cblkptr->cblktab[2].vnodnbr = vsplisttab[2].vnumnbr; cblkptr->cblktab[2].cblknbr = 0; cblkptr->cblktab[2].cblktab = NULL; if (graphInduceList (&grafptr->s, vsplisttab[2].vnumnbr, vsplisttab[2].vnumtab, &indgrafdat.s) != 0) { /* Perform non-halo induction for separator, as it will get highest numbers */ errorPrint ("hgraphOrderNd: cannot build induced subgraph (1)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); } indgrafdat.vnohnbr = indgrafdat.s.vertnbr; /* Fill halo graph structure of non-halo graph */ indgrafdat.vnohnnd = indgrafdat.s.vertnnd; indgrafdat.vnhdtax = indgrafdat.s.vendtax; indgrafdat.vnlosum = indgrafdat.s.velosum; indgrafdat.enohnbr = indgrafdat.s.edgenbr; indgrafdat.enlosum = indgrafdat.s.edlosum; indgrafdat.levlnum = grafptr->levlnum; /* Separator graph is at level of original graph */ o = hgraphOrderSt (&indgrafdat, ordeptr, ordenum + vsplisttab[0].vnumnbr + vsplisttab[1].vnumnbr, cblkptr->cblktab + 2, paraptr->ordstratsep); hgraphExit (&indgrafdat); } else { /* Separator is empty */ cblkptr->cblknbr = 2; /* It is a two-cell tree node */ ordeptr->cblknbr ++; /* One more column block created */ ordeptr->treenbr += 2; /* Two more tree nodes created */ o = 0; /* No separator ordering computed */ } if (o == 0) { if ((hgraphInduceList (grafptr, vsplisttab[0].vnumnbr, vsplisttab[0].vnumtab, vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { errorPrint ("hgraphOrderNd: cannot build induced subgraph (2)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); } o = hgraphOrderNd (&indgrafdat, ordeptr, ordenum, cblkptr->cblktab, paraptr); hgraphExit (&indgrafdat); } if (o == 0) { if ((hgraphInduceList (grafptr, vsplisttab[1].vnumnbr, vsplisttab[1].vnumtab, vsplisttab[2].vnumnbr + grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat)) != 0) { errorPrint ("hgraphOrderNd: cannot build induced subgraph (3)"); memFree (vspgrafdat.frontab); /* Free remaining space */ return (1); } o = hgraphOrderNd (&indgrafdat, ordeptr, ordenum + vsplisttab[0].vnumnbr, cblkptr->cblktab + 1, paraptr); hgraphExit (&indgrafdat); } memFree (vspgrafdat.frontab); /* Free remaining space */ return (o); } scotch_6.0.9/src/libscotch/hdgraph_order_si.c0000644000302600021200000001223013303015264021460 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_si.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders halo distributed **/ /** graph vertices using a simple method. **/ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 25 jul 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_ORDER_SI #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "hdgraph.h" #include "hdgraph_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hdgraphOrderSi ( const Hdgraph * restrict const grafptr, DorderCblk * restrict const cblkptr) /*+ Single column-block +*/ { Gnum * restrict periloctab; Gnum * restrict periloctax; Gnum vnohlocnbr; Gnum vertlocnum; #ifdef SCOTCH_DEBUG_HDGRAPH1 int cheklocval; int chekglbval; cheklocval = 0; #endif /* SCOTCH_DEBUG_HDGRAPH1 */ vnohlocnbr = grafptr->s.vertlocnbr; /* Get number of local non-halo vertices */ if ((periloctab = (Gnum *) memAlloc (vnohlocnbr * sizeof (Gnum))) == NULL) { /* Allocate local fragment */ errorPrint ("hdgraphOrderSi: out of memory"); #ifndef SCOTCH_DEBUG_HDGRAPH1 return (1); } #else /* SCOTCH_DEBUG_HDGRAPH1 */ } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->s.proccomm) != MPI_SUCCESS) { /* Communication cannot be merged with a useful one */ errorPrint ("hdgraphOrderSi: communication error (1)"); return (1); } if (chekglbval != 0) { if (periloctab != NULL) memFree (periloctab); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH1 */ cblkptr->typeval = DORDERCBLKLEAF; /* Fill node as leaf */ cblkptr->data.leaf.ordelocval = cblkptr->ordeglbval + grafptr->s.procdsptab[grafptr->s.proclocnum] - grafptr->s.baseval;; cblkptr->data.leaf.vnodlocnbr = vnohlocnbr; cblkptr->data.leaf.periloctab = periloctab; cblkptr->data.leaf.nodelocnbr = 0; cblkptr->data.leaf.nodeloctab = NULL; #ifdef SCOTCH_DEBUG_HDGRAPH2 cblkptr->data.leaf.cblklocnum = -1; #endif /* SCOTCH_DEBUG_HDGRAPH2 */ periloctax = periloctab - grafptr->s.baseval; if (grafptr->s.vnumloctax == NULL) { /* If graph is original graph */ Gnum vertglbadj; vertglbadj = grafptr->s.procdsptab[grafptr->s.proclocnum] - grafptr->s.baseval; /* Set adjustement for global ordering */ for (vertlocnum = grafptr->s.baseval; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) periloctax[vertlocnum] = vertlocnum + vertglbadj; } else { /* Graph is not original graph */ for (vertlocnum = grafptr->s.baseval; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) periloctax[vertlocnum] = grafptr->s.vnumloctax[vertlocnum]; } return (0); } scotch_6.0.9/src/libscotch/bgraph_bipart_st.c0000644000302600021200000004527613560005346021514 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009-2012,2016,2017 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the strategy and **/ /** method tables for graph bipartitioning **/ /** methods. **/ /** **/ /** DATES : # Version 3.2 : from : 08 oct 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 12 mar 1999 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 20 aug 2004 **/ /** # Version 5.0 : from : 27 nov 2006 **/ /** to 29 may 2007 **/ /** # Version 5.1 : from : 26 oct 2009 **/ /** to 15 apr 2011 **/ /** # Version 6.0 : from : 23 feb 2011 **/ /** to 02 jan 2017 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_ST #include "module.h" #include "common.h" #include "fibo.h" #include "gain.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "bgraph.h" #include "bgraph_bipart_bd.h" #include "bgraph_bipart_df.h" #include "bgraph_bipart_ex.h" #include "bgraph_bipart_fm.h" #include "bgraph_bipart_gg.h" #include "bgraph_bipart_gp.h" #include "bgraph_bipart_ml.h" #include "bgraph_bipart_zr.h" #include "bgraph_bipart_st.h" /* ** The static and global variables. */ static Bgraph bgraphdummy; /*+ Dummy active graph for offset computations +*/ static union { BgraphBipartBdParam param; StratNodeMethodData padding; } bgraphbipartstdefaultbd = { { 3, &stratdummy } }; static union { BgraphBipartDfParam param; StratNodeMethodData padding; } bgraphbipartstdefaultdf = { { 40, BGRAPHBIPARTDFTYPEBAL } }; static union { /* Default parameters for bipartitioning methods */ BgraphBipartFmParam param; /* Parameter zone */ StratNodeMethodData padding; /* To avoid reading out of structure */ } bgraphbipartstdefaultfm = { { 80, ~0, 0.01L, BGRAPHBIPARTFMTYPEBOUNDARY } }; static union { BgraphBipartGgParam param; StratNodeMethodData padding; } bgraphbipartstdefaultgg = { { 5 } }; static union { BgraphBipartGpParam param; StratNodeMethodData padding; } bgraphbipartstdefaultgp = { { 5 } }; static union { BgraphBipartMlParam param; StratNodeMethodData padding; } bgraphbipartstdefaultml = { { 100, 0.8L, &stratdummy, &stratdummy } }; static StratMethodTab bgraphbipartstmethtab[] = { /* Bipartitioning methods array */ { BGRAPHBIPARTSTMETHBD, "b", bgraphBipartBd, &bgraphbipartstdefaultbd }, { BGRAPHBIPARTSTMETHDF, "d", bgraphBipartDf, &bgraphbipartstdefaultdf }, { BGRAPHBIPARTSTMETHEX, "x", bgraphBipartEx, NULL }, { BGRAPHBIPARTSTMETHFM, "f", bgraphBipartFm, &bgraphbipartstdefaultfm }, { BGRAPHBIPARTSTMETHGG, "h", bgraphBipartGg, &bgraphbipartstdefaultgg }, { BGRAPHBIPARTSTMETHGP, "g", bgraphBipartGp, &bgraphbipartstdefaultgp }, { BGRAPHBIPARTSTMETHML, "m", bgraphBipartMl, &bgraphbipartstdefaultml }, { BGRAPHBIPARTSTMETHZR, "z", bgraphBipartZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab bgraphbipartstparatab[] = { /* Method parameter list */ { BGRAPHBIPARTSTMETHBD, STRATPARAMSTRAT, "bnd", (byte *) &bgraphbipartstdefaultbd.param, (byte *) &bgraphbipartstdefaultbd.param.stratbnd, (void *) &bgraphbipartststratab }, { BGRAPHBIPARTSTMETHBD, STRATPARAMSTRAT, "org", (byte *) &bgraphbipartstdefaultbd.param, (byte *) &bgraphbipartstdefaultbd.param.stratorg, (void *) &bgraphbipartststratab }, { BGRAPHBIPARTSTMETHBD, STRATPARAMINT, "width", (byte *) &bgraphbipartstdefaultbd.param, (byte *) &bgraphbipartstdefaultbd.param.distmax, NULL }, { BGRAPHBIPARTSTMETHDF, STRATPARAMINT, "pass", (byte *) &bgraphbipartstdefaultdf.param, (byte *) &bgraphbipartstdefaultdf.param.passnbr, NULL }, { BGRAPHBIPARTSTMETHDF, STRATPARAMCASE, "type", (byte *) &bgraphbipartstdefaultdf.param, (byte *) &bgraphbipartstdefaultdf.param.typeval, (void *) "bk" }, { BGRAPHBIPARTSTMETHFM, STRATPARAMINT, "move", (byte *) &bgraphbipartstdefaultfm.param, (byte *) &bgraphbipartstdefaultfm.param.movenbr, NULL }, { BGRAPHBIPARTSTMETHFM, STRATPARAMINT, "pass", (byte *) &bgraphbipartstdefaultfm.param, (byte *) &bgraphbipartstdefaultfm.param.passnbr, NULL }, { BGRAPHBIPARTSTMETHFM, STRATPARAMDOUBLE, "bal", (byte *) &bgraphbipartstdefaultfm.param, (byte *) &bgraphbipartstdefaultfm.param.deltval, NULL }, { BGRAPHBIPARTSTMETHFM, STRATPARAMCASE, "type", (byte *) &bgraphbipartstdefaultfm.param, (byte *) &bgraphbipartstdefaultfm.param.typeval, (void *) "ab" }, { BGRAPHBIPARTSTMETHGG, STRATPARAMINT, "pass", (byte *) &bgraphbipartstdefaultgg.param, (byte *) &bgraphbipartstdefaultgg.param.passnbr, NULL }, { BGRAPHBIPARTSTMETHGP, STRATPARAMINT, "pass", (byte *) &bgraphbipartstdefaultgp.param, (byte *) &bgraphbipartstdefaultgp.param.passnbr, NULL }, { BGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "asc", (byte *) &bgraphbipartstdefaultml.param, (byte *) &bgraphbipartstdefaultml.param.stratasc, (void *) &bgraphbipartststratab }, { BGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "low", (byte *) &bgraphbipartstdefaultml.param, (byte *) &bgraphbipartstdefaultml.param.stratlow, (void *) &bgraphbipartststratab }, { BGRAPHBIPARTSTMETHML, STRATPARAMINT, "vert", (byte *) &bgraphbipartstdefaultml.param, (byte *) &bgraphbipartstdefaultml.param.coarnbr, NULL }, { BGRAPHBIPARTSTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &bgraphbipartstdefaultml.param, (byte *) &bgraphbipartstdefaultml.param.coarrat, NULL }, { BGRAPHBIPARTSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab bgraphbipartstcondtab[] = { /* Active graph condition parameter table */ { STRATNODECOND, STRATPARAMDOUBLE, "bal", (byte *) &bgraphdummy, (byte *) &bgraphdummy.bbalval, NULL }, { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &bgraphdummy, (byte *) &bgraphdummy.s.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &bgraphdummy, (byte *) &bgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "lmin0", (byte *) &bgraphdummy, (byte *) &bgraphdummy.compload0min, NULL }, { STRATNODECOND, STRATPARAMINT, "lmax0", (byte *) &bgraphdummy, (byte *) &bgraphdummy.compload0max, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &bgraphdummy, (byte *) &bgraphdummy.s.velosum, NULL }, { STRATNODECOND, STRATPARAMINT, "load0", (byte *) &bgraphdummy, (byte *) &bgraphdummy.compload0, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &bgraphdummy, (byte *) &bgraphdummy.s.vertnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab bgraphbipartststratab = { /* Strategy tables for graph bipartitioning methods */ bgraphbipartstmethtab, bgraphbipartstparatab, bgraphbipartstcondtab }; /***********************************************/ /* */ /* This is the generic bipartitioning routine. */ /* */ /***********************************************/ /* This routine performs the bipartitioning of ** the given active graph according to the ** given strategy. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartSt ( Bgraph * restrict const grafptr, /*+ Active graph to bipartition +*/ const Strat * restrict const strat) /*+ Bipartitioning strategy +*/ { StratTest val; /* Result of condition evaluation */ BgraphStore savetab[2]; /* Results of the two strategies */ int o; int o2; #ifdef SCOTCH_DEBUG_BGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("bgraphBipartSt: invalid type specification for parser variables"); return (1); } if ((sizeof (BgraphBipartFmParam) > sizeof (StratNodeMethodData)) || (sizeof (BgraphBipartGgParam) > sizeof (StratNodeMethodData)) || (sizeof (BgraphBipartMlParam) > sizeof (StratNodeMethodData))) { errorPrint ("bgraphBipartSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ #ifdef SCOTCH_DEBUG_BGRAPH1 if (strat->tabl != &bgraphbipartststratab) { errorPrint ("bgraphBipartSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = bgraphBipartSt (grafptr, strat->data.concat.strat[0]); /* Apply the first strategy */ if (o == 0) /* If it worked all right */ o |= bgraphBipartSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_VGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("bgraphBipartSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = bgraphBipartSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = bgraphBipartSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : if (((bgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((bgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("bgraphBipartSt: out of memory"); bgraphStoreExit (&savetab[0]); return (1); } bgraphStoreSave (grafptr, &savetab[1]); /* Save initial bipartition */ o = bgraphBipartSt (grafptr, strat->data.select.strat[0]); /* Apply first strategy */ bgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ bgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ o2 = bgraphBipartSt (grafptr, strat->data.select.strat[1]); /* Apply second strategy */ if ((o == 0) || (o2 == 0)) { /* If at least one method did bipartition */ Gnum compload0; int b0; int b1; compload0 = grafptr->compload0avg + savetab[0].compload0dlt; b0 = ((compload0 < grafptr->compload0min) || (compload0 > grafptr->compload0max)) ? 1 : o; compload0 = grafptr->compload0avg + grafptr->compload0dlt; b1 = ((compload0 < grafptr->compload0min) || (compload0 > grafptr->compload0max)) ? 1 : o2; do { /* Do we want to restore partition 0 ? */ if (b0 > b1) break; if (b0 == b1) { /* If both are valid or invalid */ if (b0 == 0) { /* If both are valid */ if ( (savetab[0].commload > grafptr->commload) || /* Compare on cut */ ((savetab[0].commload == grafptr->commload) && (abs (savetab[0].compload0dlt) > abs (grafptr->compload0dlt)))) break; } else { /* If both are invalid */ if ( (abs (savetab[0].compload0dlt) > abs (grafptr->compload0dlt)) || /* Compare on imbalance */ ((abs (savetab[0].compload0dlt) == abs (grafptr->compload0dlt)) && (savetab[0].commload > grafptr->commload))) break; } } bgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ } while (0); } if (o2 < o) /* o = min(o,o2): if one biparts, then bipart */ o = o2; /* Else if one stops, then stop, else error */ bgraphStoreExit (&savetab[0]); /* Free both save areas */ bgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_BGRAPH2 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_BGRAPH2 */ default : #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_BGRAPH2 default : errorPrint ("bgraphBipartSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_BGRAPH2 */ } return (o); } scotch_6.0.9/src/libscotch/library_dgraph_band_f.c0000644000302600021200000000660713560013261022452 0ustar pelegrinpelegrin/* Copyright 2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_band_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed graph handling routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 03 nov 2011 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHBAND, dgraphband, ( \ SCOTCH_Dgraph * const srcgrafptr, \ const SCOTCH_Num fronlocnbr, \ SCOTCH_Num * const fronloctab, \ const SCOTCH_Num distval, \ SCOTCH_Dgraph * const bndgrafptr, \ int * const revaptr), \ (srcgrafptr, fronlocnbr, fronloctab, distval, bndgrafptr, revaptr)) { *revaptr = SCOTCH_dgraphBand (srcgrafptr, fronlocnbr, fronloctab, distval, bndgrafptr); } scotch_6.0.9/src/libscotch/library_graph_map_io_f.c0000644000302600021200000001653513560013261022647 0ustar pelegrinpelegrin/* Copyright 2012,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_io_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 03 jul 2012 **/ /** to 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ GRAPHTABLOAD, graphtabload, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Num * const parttab, \ const int * const fileptr, \ int * const revaptr), \ (grafptr, parttab, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphTabLoad (grafptr, parttab, stream); fclose (stream); /* This closes file descriptor too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHTABSAVE, graphtabsave, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const parttab, \ const int * const fileptr, \ int * const revaptr), \ (grafptr, parttab, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHTABSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphTabSave (grafptr, parttab, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPLOAD, graphmapload, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ const int * const fileptr, \ int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphMapLoad (grafptr, mappptr, stream); fclose (stream); /* This closes file descriptor too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPSAVE, graphmapsave, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Mapping * const mappptr, \ const int * const fileptr, \ int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphMapSave (grafptr, mappptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/library_dgraph_coarsen.c0000644000302600021200000001302213560013261022660 0ustar pelegrinpelegrin/* Copyright 2011,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the **/ /** distributed graph coarsening routine of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 11 sep 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "ptscotch.h" /************************************/ /* */ /* This routine is the C API for */ /* the distributed graph coarsening */ /* routine. */ /* */ /************************************/ /*+ This routine creates a distributed coarse graph *** from the given fine graph, unless the coarse graph *** is smaller than some threshold size or the *** coarsening ratio is above some other threshold. *** If the coarse graph is created, a coarse-to-fine *** vertex array is created, that contains a pair of *** fine indices for each coarse index. It is the *** user's responsibility to free this array when it *** is no longer needed. *** It returns: *** - 0 : if the graph has been coarsened. *** - 1 : if the graph could not be coarsened. *** - 2 : if folded graph not present *** - 3 : on error. +*/ int SCOTCH_dgraphCoarsen ( SCOTCH_Dgraph * restrict const finegrafptr, /* Fine graph structure to fill */ const SCOTCH_Num coarnbr, /* Minimum number of coarse vertices */ const double coarrat, /* Maximum contraction ratio */ const SCOTCH_Num flagval, /* Flag value */ SCOTCH_Dgraph * restrict const coargrafptr, /* Coarse graph */ SCOTCH_Num * restrict const multloctab) /* Pointer to multinode array */ { DgraphCoarsenMulti * restrict multlocptr; #ifdef SCOTCH_DEBUG_LIBRARY1 int o; MPI_Comm_compare (((Dgraph * restrict const) coargrafptr)->proccomm, ((Dgraph * restrict const) finegrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { errorPrint (STRINGIFY (SCOTCH_dgraphCoarsen) ": communicators are not congruent"); return (3); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ intRandInit (); /* Check that random number generator is initialized */ multlocptr = (DgraphCoarsenMulti * restrict) multloctab; /* User-provided multinode array */ switch (dgraphCoarsen ((Dgraph * restrict const) finegrafptr, (Dgraph * restrict const) coargrafptr, &multlocptr, 5, coarnbr, coarrat, (int) flagval)) { case 1 : return (1); case 2 : return (3); } if (multlocptr != (DgraphCoarsenMulti * restrict) multloctab) { /* If folding occurred */ if (multlocptr == NULL) return (2); memCpy (multloctab, multlocptr, /* Update array with folded multinode data */ ((Dgraph * restrict const) coargrafptr)->vertlocnbr * sizeof (DgraphCoarsenMulti)); memFree (multlocptr); /* Free allocated folded multinode array */ } return (0); } scotch_6.0.9/src/libscotch/vmesh_separate_gr.h0000644000302600021200000000600613465315041021671 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_gr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the the graph separation-based node **/ /** separation method. **/ /** **/ /** DATES : # Version 4.0 : from : 11 oct 2003 **/ /** to 11 oct 2003 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct VmeshSeparateGrParam_ { Strat * stratptr; /*+ Graph separation strategy +*/ } VmeshSeparateGrParam; /* ** The function prototypes. */ int vmeshSeparateGr (Vmesh * restrict const, const VmeshSeparateGrParam * restrict const); scotch_6.0.9/src/libscotch/kgraph_band.h0000644000302600021200000000600213303015264020422 0ustar pelegrinpelegrin/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_band.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the k-way band graph extraction **/ /** routine. **/ /** **/ /** DATES : # Version 6.0 : from : 15 sep 2014 **/ /** to 15 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing terminal domain numbers. +*/ #define KGRAPHBANDHASHPRIME 17 /*+ Prime number for hashing +*/ /* ** The type and structure definitions. */ /*+ Hash structure for linking fixed vertex domains with non-fixed vertex domains. +*/ typedef struct KgraphBandHash_ { Anum termnum; /*+ Terminal domain number +*/ Anum domnnum; /*+ Domain number in domain array +*/ } KgraphBandHash; scotch_6.0.9/src/libscotch/arch_deco.h0000644000302600021200000002051113560005302020067 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_deco.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the decomposition-defined target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 24 jul 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 20 jul 1996 **/ /** # Version 3.2 : from : 11 sep 1996 **/ /** to 28 sep 1998 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 14 jun 2004 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 27 sep 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #ifndef ARCH_DECO_H_STRUCT #define ARCH_DECO_H_STRUCT /*+ Decomposition architecture flags. +*/ #define ARCHDECONONE 0x0000 /*+ No options set +*/ #define ARCHDECOFREE 0x0001 /*+ Free arrays +*/ /* ** The type and structure definitions. */ /*+ The decomposition-described terminal vertex definition. +*/ typedef struct ArchDecoTermVert_ { ArchDomNum labl; /*+ Number for terminals, or ARCHDOMNOTTERM +*/ Anum wght; /*+ Weight of the domain (processor load) +*/ Anum num; /*+ Number of the terminal +*/ } ArchDecoTermVert; /*+ The decomposition-described architecture definitions. +*/ typedef struct ArchDecoVert_ { ArchDomNum labl; /*+ Smallest number of included terminal +*/ Anum size; /*+ Number of processors in the domain +*/ Anum wght; /*+ Weight of the domain (processor load) +*/ } ArchDecoVert; typedef struct ArchDeco_ { int flagval; /*+ Flag value +*/ Anum domtermnbr; /*+ Number of terminal domains +*/ Anum domvertnbr; /*+ Number of domains +*/ ArchDecoVert * domverttab; /*+ Table of domain "vertices" +*/ Anum * domdisttab; /*+ Table of domain distances +*/ } ArchDeco; typedef struct ArchDecoDom_ { Anum num; /*+ Domain number in the decomposition +*/ } ArchDecoDom; typedef struct ArchDecoMatch_ { Anum num; /*+ Domain number in the decomposition +*/ } ArchDecoMatch; #endif /* ARCH_DECO_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_DECO_H_PROTO #define ARCH_DECO_H_PROTO int archDecoArchBuild2 (ArchDeco * const, const Anum, const Anum, const ArchDecoTermVert * const, const Anum * const); int archDecoArchLoad (ArchDeco * const, FILE * restrict const); int archDecoArchSave (const ArchDeco * const, FILE * restrict const); int archDecoArchFree (ArchDeco * const); #define archDecoMatchInit NULL #define archDecoMatchExit NULL #define archDecoMatchMate NULL Anum archDecoArchSize (ArchDeco * const, const Anum); Anum archDecoArchDist (ArchDeco * const, const Anum, const Anum); Anum archDecoArchDistE (ArchDeco * const, const Anum, const Anum); ArchDomNum archDecoDomNum (const ArchDeco * const, const ArchDecoDom * const); int archDecoDomTerm (const ArchDeco * const, ArchDecoDom * restrict const, const ArchDomNum); Anum archDecoDomSize (const ArchDeco * const, const ArchDecoDom * const); Anum archDecoDomWght (const ArchDeco * const, const ArchDecoDom * const); Anum archDecoDomDist (const ArchDeco * const, const ArchDecoDom * const, const ArchDecoDom * const); int archDecoDomFrst (const ArchDeco * const, ArchDecoDom * restrict const); int archDecoDomLoad (const ArchDeco * const, ArchDecoDom * restrict const, FILE * restrict const); int archDecoDomSave (const ArchDeco * const, const ArchDecoDom * const, FILE * restrict const); int archDecoDomBipart (const ArchDeco * const, const ArchDecoDom * const, ArchDecoDom * restrict const, ArchDecoDom * restrict const); int archDecoDomIncl (const ArchDeco * const, const ArchDecoDom * const, const ArchDecoDom * const); #ifdef SCOTCH_PTSCOTCH int archDecoDomMpiType (const ArchDeco * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ /* ** The macro definitions. */ #define archDecoArchSize(d,i) ((d)->domverttab[(i) - 1].size) #define archDecoArchDist(d,i,j) ((d)->domdisttab[((i) >= (j)) ? (((i) - 1) * ((i) - 2)) / 2 + (j) - 1 \ : (((j) - 1) * ((j) - 2)) / 2 + (i) - 1]) #define archDecoArchDistE(d,i,j) (((i) == (j)) ? 0 : archDecoArchDist ((d), (i), (j))) #endif /* ARCH_DECO_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/vmesh_separate_zr.h0000644000302600021200000000533113465315041021714 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_zr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** mesh node separation method. **/ /** **/ /** DATES : # Version 4.0 : from : 10 sep 2002 **/ /** to 10 sep 2002 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int vmeshSeparateZr (Vmesh * const); scotch_6.0.9/src/libscotch/library_graph_diam_f.c0000644000302600021200000000611013560013261022301 0ustar pelegrinpelegrin/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_diam_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 26 jan 2017 **/ /** to 29 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHDIAMPV, graphdiampv, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Num * const diamptr), \ (grafptr, diamptr)) { *diamptr = SCOTCH_graphDiamPV (grafptr); } scotch_6.0.9/src/libscotch/bgraph_bipart_st.h0000644000302600021200000000776213560005346021517 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the strategy and method **/ /** tables and the generic entry point for **/ /** the graph bipartitioning methods. **/ /** **/ /** DATES : # Version 3.2 : from : 08 oct 1996 **/ /** to 13 sep 1998 **/ /** # Version 4.0 : from : 15 jan 2002 **/ /** to 15 jan 2002 **/ /** # Version 5.0 : from : 27 nov 2006 **/ /** to 13 jan 2007 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /** Method types. **/ typedef enum BgraphBipartStMethodType_ { BGRAPHBIPARTSTMETHBD = 0, /*+ Band +*/ BGRAPHBIPARTSTMETHDF, /*+ Diffusion +*/ BGRAPHBIPARTSTMETHEX, /*+ Exactifying +*/ BGRAPHBIPARTSTMETHFM, /*+ Fiduccia-Mattheyses +*/ BGRAPHBIPARTSTMETHGG, /*+ Greedy Graph Growing +*/ BGRAPHBIPARTSTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ BGRAPHBIPARTSTMETHML, /*+ Multi-level (strategy) +*/ BGRAPHBIPARTSTMETHZR, /*+ Move all to part zero +*/ BGRAPHBIPARTSTMETHNBR /*+ Number of methods +*/ } BgraphBipartStMethodType; /* ** The external declarations. */ extern StratTab bgraphbipartststratab; /* ** The function prototypes. */ int bgraphBipartSt (Bgraph * restrict const, const Strat * restrict const); scotch_6.0.9/src/libscotch/library_dgraph_order_f.c0000644000302600021200000001664113560013261022660 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed graph ordering routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 16 feb 2007 **/ /** to 31 may 2008 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERINIT, dgraphorderinit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ int * const revaptr), \ (grafptr, ordeptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderInit (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDEREXIT, dgraphorderexit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_dgraphOrderExit (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERSAVE, dgraphordersave, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if (*fileptr == -1) /* If process is not the root */ stream = NULL; else { /* Open stream for root process */ if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } } o = SCOTCH_dgraphOrderSave (grafptr, ordeptr, stream); if (stream != NULL) fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERCOMPUTE, dgraphordercompute, ( \ SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, ordeptr, straptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderCompute (grafptr, ordeptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERCOMPUTELIST, dgraphordercomputelist, ( \ SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ const SCOTCH_Num * listptr, \ const SCOTCH_Num * const listtab, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, ordeptr, listptr, listtab, straptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderComputeList (grafptr, ordeptr, *listptr, listtab, straptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATDGRAPHORDER, stratdgraphorder, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATDGRAPHORDER)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratDgraphOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } /* ** */ SCOTCH_FORTRAN ( \ STRATDGRAPHORDERBUILD, stratdgraphorderbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const procnbr, \ const SCOTCH_Num * const levlnbr, \ const double * const bbalval, \ int * const revaptr), \ (straptr, flagval, procnbr, levlnbr, bbalval, revaptr)) { *revaptr = SCOTCH_stratDgraphOrderBuild (straptr, *flagval, *procnbr, *levlnbr, *bbalval); } scotch_6.0.9/src/libscotch/vgraph_separate_st.c0000644000302600021200000004117113470115365022054 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011-2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the global **/ /** separation strategy and method tables. **/ /** **/ /** DATES : # Version 3.2 : from : 25 oct 1996 **/ /** to 14 nov 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 31 may 1999 **/ /** # Version 4.0 : from : 06 jan 2002 **/ /** to 28 mar 2006 **/ /** # Version 5.0 : from : 12 sep 2006 **/ /** to : 02 oct 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 09 mar 2011 **/ /** to 01 may 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_ST #include "module.h" #include "common.h" #include "gain.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "vgraph.h" #include "vgraph_separate_bd.h" #include "vgraph_separate_es.h" #include "vgraph_separate_fm.h" #include "vgraph_separate_gg.h" #include "vgraph_separate_gp.h" #include "vgraph_separate_ml.h" #include "vgraph_separate_th.h" #include "vgraph_separate_st.h" #include "vgraph_separate_vw.h" #include "vgraph_separate_zr.h" /* ** The static and global variables. */ static Vgraph vgraphdummy; /* Dummy separator graph for offset computations */ static union { VgraphSeparateBdParam param; StratNodeMethodData padding; } vgraphseparatedefaultbd = { { 3, &stratdummy, &stratdummy } }; static union { VgraphSeparateEsParam param; StratNodeMethodData padding; } vgraphseparatedefaultes = { { &stratdummy, VGRAPHSEPAESWIDTHTHIN } }; static union { VgraphSeparateFmParam param; StratNodeMethodData padding; } vgraphseparatedefaultfm = { { 200, 1000, 0.1L } }; static union { VgraphSeparateGgParam param; StratNodeMethodData padding; } vgraphseparatedefaultgg = { { 5 } }; static union { VgraphSeparateGpParam param; StratNodeMethodData padding; } vgraphseparatedefaultgp = { { 9 } }; static union { VgraphSeparateMlParam param; StratNodeMethodData padding; } vgraphseparatedefaultml = { { 100, 0.8L, GRAPHCOARHEM, &stratdummy, &stratdummy } }; static StratMethodTab vgraphseparatestmethtab[] = { /* Graph separation methods array */ { VGRAPHSEPASTMETHBD, "b", vgraphSeparateBd, &vgraphseparatedefaultbd }, { VGRAPHSEPASTMETHES, "e", vgraphSeparateEs, &vgraphseparatedefaultes }, { VGRAPHSEPASTMETHFM, "f", vgraphSeparateFm, &vgraphseparatedefaultfm }, { VGRAPHSEPASTMETHGG, "h", vgraphSeparateGg, &vgraphseparatedefaultgg }, { VGRAPHSEPASTMETHGP, "g", vgraphSeparateGp, &vgraphseparatedefaultgp }, { VGRAPHSEPASTMETHML, "m", vgraphSeparateMl, &vgraphseparatedefaultml }, { VGRAPHSEPASTMETHVW, "v", vgraphSeparateVw, NULL }, { VGRAPHSEPASTMETHZR, "z", vgraphSeparateZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab vgraphseparatestparatab[] = { /* Graph separation method parameter list */ { VGRAPHSEPASTMETHBD, STRATPARAMSTRAT, "bnd", (byte *) &vgraphseparatedefaultbd.param, (byte *) &vgraphseparatedefaultbd.param.stratbnd, (void *) &vgraphseparateststratab }, { VGRAPHSEPASTMETHBD, STRATPARAMSTRAT, "org", (byte *) &vgraphseparatedefaultbd.param, (byte *) &vgraphseparatedefaultbd.param.stratorg, (void *) &vgraphseparateststratab }, { VGRAPHSEPASTMETHBD, STRATPARAMINT, "width", (byte *) &vgraphseparatedefaultbd.param, (byte *) &vgraphseparatedefaultbd.param.distmax, NULL }, { VGRAPHSEPASTMETHES, STRATPARAMSTRAT, "strat", (byte *) &vgraphseparatedefaultes.param, (byte *) &vgraphseparatedefaultes.param.strat, (void *) &bgraphbipartststratab }, { VGRAPHSEPASTMETHES, STRATPARAMCASE, "type", (byte *) &vgraphseparatedefaultes.param, (byte *) &vgraphseparatedefaultes.param.widtval, (void *) "tf" }, { VGRAPHSEPASTMETHFM, STRATPARAMINT, "move", (byte *) &vgraphseparatedefaultfm.param, (byte *) &vgraphseparatedefaultfm.param.movenbr, NULL }, { VGRAPHSEPASTMETHFM, STRATPARAMINT, "pass", (byte *) &vgraphseparatedefaultfm.param, (byte *) &vgraphseparatedefaultfm.param.passnbr, NULL }, { VGRAPHSEPASTMETHFM, STRATPARAMDOUBLE, "bal", (byte *) &vgraphseparatedefaultfm.param, (byte *) &vgraphseparatedefaultfm.param.deltrat, NULL }, { VGRAPHSEPASTMETHGG, STRATPARAMINT, "pass", (byte *) &vgraphseparatedefaultgg.param, (byte *) &vgraphseparatedefaultgg.param.passnbr, NULL }, { VGRAPHSEPASTMETHGP, STRATPARAMINT, "pass", (byte *) &vgraphseparatedefaultgp.param, (byte *) &vgraphseparatedefaultgp.param.passnbr, NULL }, { VGRAPHSEPASTMETHML, STRATPARAMSTRAT, "asc", (byte *) &vgraphseparatedefaultml.param, (byte *) &vgraphseparatedefaultml.param.stratasc, (void *) &vgraphseparateststratab }, { VGRAPHSEPASTMETHML, STRATPARAMSTRAT, "low", (byte *) &vgraphseparatedefaultml.param, (byte *) &vgraphseparatedefaultml.param.stratlow, (void *) &vgraphseparateststratab }, { VGRAPHSEPASTMETHML, STRATPARAMCASE, "type", (byte *) &vgraphseparatedefaultml.param, (byte *) &vgraphseparatedefaultml.param.coartype, (void *) "hs" }, { VGRAPHSEPASTMETHML, STRATPARAMINT, "vert", (byte *) &vgraphseparatedefaultml.param, (byte *) &vgraphseparatedefaultml.param.coarnbr, NULL }, { VGRAPHSEPASTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &vgraphseparatedefaultml.param, (byte *) &vgraphseparatedefaultml.param.coarval, NULL }, { VGRAPHSEPASTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab vgraphseparatestcondtab[] = { /* Graph condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &vgraphdummy, (byte *) &vgraphdummy.s.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &vgraphdummy, (byte *) &vgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &vgraphdummy, (byte *) &vgraphdummy.s.velosum, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &vgraphdummy, (byte *) &vgraphdummy.s.vertnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab vgraphseparateststratab = { /* Strategy tables for vertex separation methods */ vgraphseparatestmethtab, vgraphseparatestparatab, vgraphseparatestcondtab }; /*******************************************/ /* */ /* This is the generic separation routine. */ /* */ /*******************************************/ /* This routine computes the separation of ** the given graph according to the given ** strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int vgraphSeparateSt ( Vgraph * restrict const grafptr, /*+ Separation graph +*/ const Strat * restrict const strat) /*+ Separation strategy +*/ { StratTest val; VgraphStore savetab[2]; /* Results of the two strategies */ Gnum compload2; /* Saved separator load */ int o; #ifdef SCOTCH_DEBUG_VGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("vgraphSeparateSt: invalid type specification for parser variables"); return (1); } if ((sizeof (VgraphSeparateFmParam) > sizeof (StratNodeMethodData)) || (sizeof (VgraphSeparateGgParam) > sizeof (StratNodeMethodData)) || (sizeof (VgraphSeparateGpParam) > sizeof (StratNodeMethodData)) || (sizeof (VgraphSeparateMlParam) > sizeof (StratNodeMethodData))) { errorPrint ("vgraphSeparateSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ #ifdef SCOTCH_DEBUG_VGRAPH1 if ((strat->tabl != &vgraphseparateststratab) && (strat != &stratdummy)) { errorPrint ("vgraphSeparateSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = vgraphSeparateSt (grafptr, strat->data.concat.strat[0]); /* Apply first strategy */ if (o == 0) /* If it worked all right */ o |= vgraphSeparateSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_VGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("vgraphSeparateSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = vgraphSeparateSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = vgraphSeparateSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : if (((vgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((vgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("vgraphSeparateSt: out of memory"); vgraphStoreExit (&savetab[0]); return (1); } vgraphStoreSave (grafptr, &savetab[1]); /* Save initial bipartition */ if (vgraphSeparateSt (grafptr, strat->data.select.strat[0]) != 0) { /* If first strategy didn't work */ vgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ vgraphStoreSave (grafptr, &savetab[0]); /* Save it as result */ } else { /* First strategy worked */ vgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ vgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ } if (vgraphSeparateSt (grafptr, strat->data.select.strat[1]) != 0) /* If second strategy didn't work */ vgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition as its result */ compload2 = grafptr->s.velosum - savetab[0].compload[0] - savetab[0].compload[1]; /* Compute saved separator load */ if ( (compload2 < grafptr->compload[2]) || /* If first strategy is better */ ((compload2 == grafptr->compload[2]) && (abs (savetab[0].comploaddlt) < abs (grafptr->comploaddlt)))) vgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ vgraphStoreExit (&savetab[0]); /* Free both save areas */ vgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_VGRAPH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_VGRAPH1 */ default : #endif /* SCOTCH_DEBUG_VGRAPH1 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_VGRAPH1 default : errorPrint ("vgraphSeparateSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_VGRAPH1 */ } return (o); } scotch_6.0.9/src/libscotch/library_graph.c0000644000302600021200000004357013560013261021015 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 18 aug 1998 **/ /** to 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 09 dec 2005 **/ /** # Version 5.0 : from : 10 sep 2006 **/ /** to 03 apr 2008 **/ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 04 dec 2012 **/ /** to 24 jul 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "graph_io.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** centralized graph structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Graph * SCOTCH_graphAlloc () { return ((SCOTCH_Graph *) memAlloc (sizeof (SCOTCH_Graph))); } /*+ This routine initializes the opaque *** graph structure used to handle graphs *** in the Scotch library. *** It returns: *** - 0 : if the initialization succeeded. *** - !0 : on error. +*/ int SCOTCH_graphInit ( SCOTCH_Graph * const grafptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_graphInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Graph) < sizeof (Graph)) { errorPrint (STRINGIFY (SCOTCH_graphInit) ": internal error (2)"); return (1); } return (graphInit ((Graph *) grafptr)); } /*+ This routine frees the contents of the *** given opaque graph structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphExit ( SCOTCH_Graph * const grafptr) { graphExit ((Graph *) grafptr); } /*+ This routine frees the contents of the *** given opaque graph structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphFree ( SCOTCH_Graph * const grafptr) { graphFree ((Graph *) grafptr); } /*+ This routine loads the given opaque graph *** structure with the data of the given stream. *** The base value allows the user to set the *** graph base to 0 or 1, or to the base value *** of the stream if the base value is equal *** to -1. On input, vertex loads are discarded if *** flagval is 1, edge loads are discarded if flagval *** is 2, and both if flagval is set to 3. *** It returns: *** - 0 : if the loading succeeded. *** - !0 : on error. +*/ int SCOTCH_graphLoad ( SCOTCH_Graph * const grafptr, FILE * const stream, const SCOTCH_Num baseval, const SCOTCH_Num flagval) { GraphFlag srcgrafflag; /* Graph flags */ if ((baseval < -1) || (baseval > 1)) { errorPrint (STRINGIFY (SCOTCH_graphLoad) ": invalid base parameter"); return (1); } if ((flagval < 0) || (flagval > 3)) { errorPrint (STRINGIFY (SCOTCH_graphLoad) ": invalid flag parameter"); return (1); } srcgrafflag = (((flagval & 1) != 0) ? GRAPHIONOLOADVERT : 0) + (((flagval & 2) != 0) ? GRAPHIONOLOADEDGE : 0); return (graphLoad ((Graph * const) grafptr, stream, (Gnum) baseval, srcgrafflag)); } /*+ This routine saves the contents of the given *** opaque graph structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_graphSave ( const SCOTCH_Graph * const grafptr, FILE * const stream) { return (graphSave ((const Graph * const) grafptr, stream)); } /*+ This routine fills the contents of the given *** opaque graph structure with the data provided *** by the user. The base value allows the user to *** set the graph base to 0 or 1. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphBuild ( SCOTCH_Graph * const grafptr, /* Graph structure to fill */ const SCOTCH_Num baseval, /* Base value */ const SCOTCH_Num vertnbr, /* Number of vertices */ const SCOTCH_Num * const verttab, /* Vertex array [vertnbr or vertnbr+1] */ const SCOTCH_Num * const vendtab, /* Vertex end array [vertnbr] */ const SCOTCH_Num * const velotab, /* Vertex load array */ const SCOTCH_Num * const vlbltab, /* Vertex label array */ const SCOTCH_Num edgenbr, /* Number of edges (arcs) */ const SCOTCH_Num * const edgetab, /* Edge array [edgenbr] */ const SCOTCH_Num * const edlotab) /* Edge load array */ { Graph * srcgrafptr; /* Pointer to source graph structure */ Gnum vertnum; /* Current vertex number */ Gnum degrmax; /* Maximum degree */ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Graph) < sizeof (Graph)) { errorPrint (STRINGIFY (SCOTCH_graphBuild) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((baseval < 0) || (baseval > 1)) { errorPrint (STRINGIFY (SCOTCH_graphBuild) ": invalid base parameter"); return (1); } srcgrafptr = (Graph *) grafptr; /* Use structure as source graph */ srcgrafptr->flagval = GRAPHNONE; srcgrafptr->baseval = baseval; srcgrafptr->vertnbr = vertnbr; srcgrafptr->vertnnd = vertnbr + baseval; srcgrafptr->verttax = (Gnum *) verttab - baseval; srcgrafptr->vendtax = ((vendtab == NULL) || (vendtab == verttab)) ? srcgrafptr->verttax + 1 : (Gnum *) vendtab - baseval; srcgrafptr->velotax = ((velotab == NULL) || (velotab == verttab)) ? NULL : (Gnum *) velotab - baseval; srcgrafptr->vnumtax = NULL; srcgrafptr->vlbltax = ((vlbltab == NULL) || (vlbltab == verttab)) ? NULL : (Gnum *) vlbltab - baseval; srcgrafptr->edgenbr = edgenbr; srcgrafptr->edgetax = (Gnum *) edgetab - baseval; srcgrafptr->edlotax = ((edlotab == NULL) || (edlotab == edgetab)) ? NULL : (Gnum *) edlotab - baseval; if (srcgrafptr->velotax == NULL) /* Compute vertex load sum */ srcgrafptr->velosum = vertnbr; else { Gnum velosum; /* Sum of vertex loads */ for (vertnum = srcgrafptr->baseval, velosum = 0; vertnum < srcgrafptr->vertnnd; vertnum ++) velosum += srcgrafptr->velotax[vertnum]; srcgrafptr->velosum = velosum; } if (srcgrafptr->edlotax == NULL) { /* If no edge loads */ srcgrafptr->edlosum = srcgrafptr->edgenbr; /* Edge load sum is known */ for (vertnum = srcgrafptr->baseval, degrmax = 0; /* Compute maximum degree only */ vertnum < srcgrafptr->vertnnd; vertnum ++) { Gnum degrval; /* Degree of current vertex */ degrval = srcgrafptr->vendtax[vertnum] - srcgrafptr->verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; } } else { /* Graph has edge loads, compute edge load sum */ Gnum edlosum; for (vertnum = srcgrafptr->baseval, edlosum = degrmax = 0; vertnum < srcgrafptr->vertnnd; vertnum ++) { Gnum edgenum; Gnum degrval; /* Degree of current vertex */ degrval = srcgrafptr->vendtax[vertnum] - srcgrafptr->verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; for (edgenum = srcgrafptr->verttax[vertnum]; edgenum < srcgrafptr->vendtax[vertnum]; edgenum ++) edlosum += srcgrafptr->edlotax[edgenum]; } srcgrafptr->edlosum = edlosum; } srcgrafptr->degrmax = degrmax; return (0); } /*+ This routine accesses graph size data. *** NULL pointers on input indicate unwanted *** data. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphSize ( const SCOTCH_Graph * const grafptr, SCOTCH_Num * const vertnbr, SCOTCH_Num * const edgenbr) { const Graph * srcgrafptr; srcgrafptr = (Graph *) grafptr; if (vertnbr != NULL) *vertnbr = (SCOTCH_Num) (srcgrafptr->vertnbr); if (edgenbr != NULL) *edgenbr = (SCOTCH_Num) srcgrafptr->edgenbr; } /*+ This routine accesses all of the graph data. *** NULL pointers on input indicate unwanted *** data. NULL pointers on output indicate *** unexisting arrays. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphData ( const SCOTCH_Graph * const grafptr, /* Graph structure to read */ SCOTCH_Num * const baseptr, /* Base value */ SCOTCH_Num * const vertptr, /* Number of vertices */ SCOTCH_Num ** const verttab, /* Vertex array [vertnbr+1] */ SCOTCH_Num ** const vendtab, /* Vertex array [vertnbr] */ SCOTCH_Num ** const velotab, /* Vertex load array */ SCOTCH_Num ** const vlbltab, /* Vertex label array */ SCOTCH_Num * const edgeptr, /* Number of edges (arcs) */ SCOTCH_Num ** const edgetab, /* Edge array [edgenbr] */ SCOTCH_Num ** const edlotab) /* Edge load array */ { const Graph * srcgrafptr; /* Pointer to source graph structure */ srcgrafptr = (const Graph *) grafptr; if (baseptr != NULL) *baseptr = srcgrafptr->baseval; if (vertptr != NULL) *vertptr = srcgrafptr->vertnbr; if (verttab != NULL) *verttab = srcgrafptr->verttax + srcgrafptr->baseval; if (vendtab != NULL) *vendtab = srcgrafptr->vendtax + srcgrafptr->baseval; if (velotab != NULL) *velotab = (srcgrafptr->velotax != NULL) ? srcgrafptr->velotax + srcgrafptr->baseval : NULL; if (vlbltab != NULL) *vlbltab = (srcgrafptr->vlbltax != NULL) ? srcgrafptr->vlbltax + srcgrafptr->baseval : NULL; if (edgeptr != NULL) *edgeptr = srcgrafptr->edgenbr; if (edgetab != NULL) *edgetab = srcgrafptr->edgetax + srcgrafptr->baseval; if (edlotab != NULL) *edlotab = (srcgrafptr->edlotax != NULL) ? srcgrafptr->edlotax + srcgrafptr->baseval : NULL; } /*+ This routine computes statistics *** on the given graph. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphStat ( const SCOTCH_Graph * const grafptr, SCOTCH_Num * const velominptr, SCOTCH_Num * const velomaxptr, SCOTCH_Num * const velosumptr, double * veloavgptr, double * velodltptr, SCOTCH_Num * const degrminptr, SCOTCH_Num * const degrmaxptr, double * degravgptr, double * degrdltptr, SCOTCH_Num * const edlominptr, SCOTCH_Num * const edlomaxptr, SCOTCH_Num * const edlosumptr, double * edloavgptr, double * edlodltptr) { const Graph * srcgrafptr; Gnum vertnum; Gnum vertnbr; Gnum velomin; Gnum velomax; double veloavg; double velodlt; Gnum degrval; Gnum degrmin; Gnum degrmax; double degravg; double degrdlt; Gnum edgenum; Gnum edlomin; Gnum edlomax; Gnum edlosum; double edloavg; double edlodlt; srcgrafptr = (Graph *) grafptr; vertnbr = srcgrafptr->vertnnd - srcgrafptr->baseval; velodlt = 0.0L; if (vertnbr > 0) { if (srcgrafptr->velotax != NULL) { /* If graph has vertex loads */ velomin = GNUMMAX; velomax = 0; veloavg = (double) srcgrafptr->velosum / (double) vertnbr; for (vertnum = srcgrafptr->baseval; vertnum < srcgrafptr->vertnnd; vertnum ++) { if (srcgrafptr->velotax[vertnum] < velomin) /* Account for vertex loads */ velomin = srcgrafptr->velotax[vertnum]; if (srcgrafptr->velotax[vertnum] > velomax) velomax = srcgrafptr->velotax[vertnum]; velodlt += fabs ((double) srcgrafptr->velotax[vertnum] - veloavg); } velodlt /= (double) vertnbr; } else { velomin = velomax = 1; veloavg = 1.0L; } } else { velomin = velomax = 0; veloavg = 0.0L; } if (velominptr != NULL) *velominptr = (SCOTCH_Num) velomin; if (velomaxptr != NULL) *velomaxptr = (SCOTCH_Num) velomax; if (velosumptr != NULL) *velosumptr = (SCOTCH_Num) srcgrafptr->velosum; if (veloavgptr != NULL) *veloavgptr = (double) veloavg; if (velodltptr != NULL) *velodltptr = (double) velodlt; degrmax = 0; degrdlt = 0.0L; if (vertnbr > 0) { degrmin = GNUMMAX; degravg = (double) srcgrafptr->edgenbr / (double) vertnbr; for (vertnum = srcgrafptr->baseval; vertnum < srcgrafptr->vertnnd; vertnum ++) { degrval = srcgrafptr->vendtax[vertnum] - srcgrafptr->verttax[vertnum]; /* Get vertex degree */ if (degrval < degrmin) degrmin = degrval; if (degrval > degrmax) degrmax = degrval; degrdlt += fabs ((double) degrval - degravg); } degrdlt /= (double) vertnbr; } else { degrmin = 0; degravg = 0.0L; } if (degrminptr != NULL) *degrminptr = (SCOTCH_Num) degrmin; if (degrmaxptr != NULL) *degrmaxptr = (SCOTCH_Num) degrmax; if (degravgptr != NULL) *degravgptr = (double) degravg; if (degrdltptr != NULL) *degrdltptr = (double) degrdlt; edlodlt = 0.0L; if (srcgrafptr->edgenbr > 0) { if (srcgrafptr->edlotax != NULL) { /* If graph has edge loads */ edlomin = GNUMMAX; edlomax = 0; edlosum = 0; for (vertnum = srcgrafptr->baseval; vertnum < srcgrafptr->vertnnd; vertnum ++) { for (edgenum = srcgrafptr->verttax[vertnum]; edgenum < srcgrafptr->vendtax[vertnum]; edgenum ++) { /* For all edges */ if (srcgrafptr->edlotax[edgenum] < edlomin) /* Account for edge load */ edlomin = srcgrafptr->edlotax[edgenum]; if (srcgrafptr->edlotax[edgenum] > edlomax) edlomax = srcgrafptr->edlotax[edgenum]; edlosum += srcgrafptr->edlotax[edgenum]; } } edloavg = (double) edlosum / (double) srcgrafptr->edgenbr; for (vertnum = srcgrafptr->baseval; vertnum < srcgrafptr->vertnnd; vertnum ++) { for (edgenum = srcgrafptr->verttax[vertnum]; edgenum < srcgrafptr->vendtax[vertnum]; edgenum ++) /* For all edges */ edlodlt += fabs ((double) srcgrafptr->edlotax[edgenum] - edloavg); } edlodlt /= (double) srcgrafptr->edgenbr; } else { edlomin = edlomax = 1; edlosum = srcgrafptr->edgenbr / 2; edloavg = 1.0L; } } else { edlomin = edlomax = 0; edlosum = 0; edloavg = 0.0L; } if (edlominptr != NULL) *edlominptr = (SCOTCH_Num) edlomin; if (edlomaxptr != NULL) *edlomaxptr = (SCOTCH_Num) edlomax; if (edlosumptr != NULL) *edlosumptr = (SCOTCH_Num) edlosum; if (edloavgptr != NULL) *edloavgptr = (double) edloavg; if (edlodltptr != NULL) *edlodltptr = (double) edlodlt; } scotch_6.0.9/src/libscotch/hdgraph.c0000644000302600021200000000700713303015264017600 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed graph general **/ /** purpose routines. **/ /** **/ /** DATES : # Version 5.0 : from : 21 apr 2006 **/ /** to : 21 apr 2006 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "hdgraph.h" /******************************/ /* */ /* These routines handle halo */ /* distributed source graphs. */ /* */ /******************************/ /* This routine destroys a distributed halo graph ** structure. It is not a collective routine, as no ** communication is needed to perform the freeing of ** memory structures. ** It returns: ** - 0 : on success. ** - !0 : on error. */ void hdgraphExit ( Hdgraph * restrict const grafptr) { if ((grafptr->vhndloctax != grafptr->s.vertloctax + 1) && /* If graph has a halo, with a separate end vertex array */ ((grafptr->s.flagval & HDGRAPHFREEVHND) != 0)) memFree (grafptr->vhndloctax); dgraphExit (&grafptr->s); /* Free distributed graph data (flagval may be corrupted afterwards) */ #ifdef SCOTCH_DEBUG_HDGRAPH1 memSet (grafptr, 0, sizeof (Hdgraph)); #endif /* SCOTCH_DEBUG_HDGRAPH1 */ } scotch_6.0.9/src/libscotch/library_graph_io_chac_f.c0000644000302600021200000001702613560013261022764 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_io_chac_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph i/o routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 23 nov 2005 **/ /** to 23 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMLOADCHAC, graphgeomloadchac, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot open input stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMLOADCHAC)) ": cannot open input stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomLoadChac (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ GRAPHGEOMSAVECHAC, graphgeomsavechac, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Geom * const geomptr, \ const int * const filegrfptr, \ const int * const filegeoptr, \ const char * const dataptr, /* No use */ \ int * const revaptr, \ const int datanbr), \ (grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr)) { FILE * filegrfstream; /* Streams to build from handles */ FILE * filegeostream; int filegrfnum; /* Duplicated handle */ int filegeonum; int o; if ((filegrfnum = dup (*filegrfptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot duplicate handle (1)"); *revaptr = 1; /* Indicate error */ return; } if ((filegeonum = dup (*filegeoptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot duplicate handle (2)"); close (filegrfnum); *revaptr = 1; /* Indicate error */ return; } if ((filegrfstream = fdopen (filegrfnum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot open output stream (1)"); close (filegrfnum); close (filegeonum); *revaptr = 1; return; } if ((filegeostream = fdopen (filegeonum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHGEOMSAVECHAC)) ": cannot open output stream (2)"); fclose (filegrfstream); close (filegeonum); *revaptr = 1; return; } o = SCOTCH_graphGeomSaveChac (grafptr, geomptr, filegrfstream, filegeostream, NULL); fclose (filegrfstream); /* This closes file descriptors too */ fclose (filegeostream); *revaptr = o; } scotch_6.0.9/src/libscotch/library_pt.h0000644000302600021200000002716613303015264020347 0ustar pelegrinpelegrin/* Copyright 2004,2007-2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_pt.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Declaration file for the LibPtscotch **/ /** parallel static mapping and sparse **/ /** matrix block ordering library. **/ /** **/ /** DATES : # Version 3.2 : from : 07 sep 1996 **/ /** to 22 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 31 may 1999 **/ /** # Version 3.4 : from : 10 oct 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 20 dec 2005 **/ /** # Version 5.0 : from : 26 apr 2006 **/ /** to : 20 feb 2008 **/ /** # Version 5.1 : from : 30 nov 2007 **/ /** to : 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ /** to 29 apr 2018 **/ /** **/ /************************************************************/ #ifndef PTSCOTCH_H #define PTSCOTCH_H /* ** The defines and includes. */ #ifndef SCOTCH_H #include "scotch.h" #endif /* SCOTCH_H */ /* ** The type and structure definitions. */ /*+ Parallel processing flag. +*/ #ifndef SCOTCH_PTSCOTCH #define SCOTCH_DUMMYPTFLAG #endif /* SCOTCH_PTSCOTCH */ /*+ Version flags. +*/ #ifdef SCOTCH_VERSION #if ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) #ifndef SCOTCH_WARNING_RENAME_UNSAFE #define SCOTCH_WARNING_RENAME_UNSAFE #endif /* SCOTCH_WARNING_RENAME_UNSAFE */ #endif /* ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) */ #endif /* SCOTCH_VERSION */ /*+ Opaque objects. The dummy sizes of these objects, computed at compile-time by program "dummysizes", are given as double values for proper padding +*/ typedef struct { double dummy[DUMMYSIZEDGRAPH]; } SCOTCH_Dgraph; typedef struct { double dummy[DUMMYSIZEDGRAPHHALOREQ]; } SCOTCH_DgraphHaloReq; typedef struct { double dummy[DUMMYSIZEDMAP]; } SCOTCH_Dmapping; typedef struct { double dummy[DUMMYSIZEDORDER]; } SCOTCH_Dordering; /* ** The function prototypes. */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ SCOTCH_Dgraph * SCOTCH_dgraphAlloc (void); int SCOTCH_dgraphInit (SCOTCH_Dgraph * const, MPI_Comm); void SCOTCH_dgraphExit (SCOTCH_Dgraph * const); void SCOTCH_dgraphFree (SCOTCH_Dgraph * const); int SCOTCH_dgraphLoad (SCOTCH_Dgraph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_dgraphSave (SCOTCH_Dgraph * const, FILE * const); int SCOTCH_dgraphCheck (const SCOTCH_Dgraph * const); int SCOTCH_dgraphBand (SCOTCH_Dgraph * const, const SCOTCH_Num, SCOTCH_Num * const, const SCOTCH_Num, SCOTCH_Dgraph * const); int SCOTCH_dgraphBuild (SCOTCH_Dgraph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_dgraphBuildGrid3D (SCOTCH_Dgraph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const int); int SCOTCH_dgraphCoarsen (SCOTCH_Dgraph * const, const SCOTCH_Num, const double, const SCOTCH_Num, SCOTCH_Dgraph * const, SCOTCH_Num * const); int SCOTCH_dgraphGather (const SCOTCH_Dgraph * const, SCOTCH_Graph * const); int SCOTCH_dgraphGrow (SCOTCH_Dgraph * const, const SCOTCH_Num, SCOTCH_Num * const, const SCOTCH_Num, SCOTCH_Num * const); int SCOTCH_dgraphInducePart (SCOTCH_Dgraph * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Dgraph * const); int SCOTCH_dgraphScatter (SCOTCH_Dgraph * const, const SCOTCH_Graph * const); int SCOTCH_dgraphRedist (SCOTCH_Dgraph * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Dgraph * const); void SCOTCH_dgraphSize (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_dgraphData (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, MPI_Comm * const); int SCOTCH_dgraphStat (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const); int SCOTCH_dgraphGhst (SCOTCH_Dgraph * const); int SCOTCH_dgraphHalo (SCOTCH_Dgraph * const, void * const, const MPI_Datatype); int SCOTCH_dgraphHaloAsync (SCOTCH_Dgraph * const, void * const, const MPI_Datatype, SCOTCH_DgraphHaloReq * const); SCOTCH_DgraphHaloReq * SCOTCH_dgraphHaloReqAlloc (void); int SCOTCH_dgraphHaloWait (SCOTCH_DgraphHaloReq * const); int SCOTCH_dgraphMapInit (const SCOTCH_Dgraph * const, SCOTCH_Dmapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const); void SCOTCH_dgraphMapExit (const SCOTCH_Dgraph * const, SCOTCH_Dmapping * const); int SCOTCH_dgraphMapSave (const SCOTCH_Dgraph * const, const SCOTCH_Dmapping * const, FILE * const); int SCOTCH_dgraphMapView (SCOTCH_Dgraph * const, const SCOTCH_Dmapping * const, FILE * const); int SCOTCH_dgraphMapCompute (SCOTCH_Dgraph * const, SCOTCH_Dmapping * const, SCOTCH_Strat * const); int SCOTCH_dgraphMap (SCOTCH_Dgraph * const, const SCOTCH_Arch * const, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_dgraphPart (SCOTCH_Dgraph * const, const SCOTCH_Num, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_dgraphCorderInit (const SCOTCH_Dgraph * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_dgraphCorderExit (const SCOTCH_Dgraph * const, SCOTCH_Ordering * const); int SCOTCH_dgraphOrderInit (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const); void SCOTCH_dgraphOrderExit (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const); int SCOTCH_dgraphOrderSave (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const); int SCOTCH_dgraphOrderSaveBlock (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const); int SCOTCH_dgraphOrderSaveMap (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const); int SCOTCH_dgraphOrderSaveTree (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const); int SCOTCH_dgraphOrderPerm (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Num * const); SCOTCH_Num SCOTCH_dgraphOrderCblkDist (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const); int SCOTCH_dgraphOrderTreeDist (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_dgraphOrderCompute (SCOTCH_Dgraph * const, SCOTCH_Dordering * const, SCOTCH_Strat * const); int SCOTCH_dgraphOrderComputeList (SCOTCH_Dgraph * const, SCOTCH_Dordering * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Strat * const); int SCOTCH_dgraphOrderGather (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Ordering * const); SCOTCH_Dmapping * SCOTCH_dmapAlloc (void); SCOTCH_Dordering * SCOTCH_dorderAlloc (void); int SCOTCH_stratDgraphMap (SCOTCH_Strat * const, const char * const); int SCOTCH_stratDgraphMapBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const double); int SCOTCH_stratDgraphClusterBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const double, const double); int SCOTCH_stratDgraphOrder (SCOTCH_Strat * const, const char * const); int SCOTCH_stratDgraphOrderBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const double); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* PTSCOTCH_H */ scotch_6.0.9/src/libscotch/library_graph_order.c0000644000302600021200000005224313560013261022205 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012-2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the graph **/ /** ordering routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 3.2 : from : 19 aug 1998 **/ /** to 22 aug 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 27 mar 1999 **/ /** # Version 4.0 : from : 29 jan 2002 **/ /** to 08 sep 2006 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 04 aug 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ /** to 29 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_st.h" #include "library_order.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph ordering routines. */ /* */ /************************************/ /*+ This routine initializes an API ordering *** with respect to the given source graph *** and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderInit ( const SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering structure to initialize +*/ SCOTCH_Num * const permtab, /*+ Direct permutation array +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Separator tree array +*/ { const Graph * srcgrafptr; LibOrder * libordeptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { errorPrint (STRINGIFY (SCOTCH_graphOrderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ srcgrafptr = (Graph *) grafptr; /* Use structure as source graph */ libordeptr = (LibOrder *) ordeptr; libordeptr->permtab = ((permtab == NULL) || ((void *) permtab == (void *) grafptr)) ? NULL : (Gnum *) permtab; libordeptr->peritab = ((peritab == NULL) || ((void *) peritab == (void *) grafptr)) ? NULL : (Gnum *) peritab; libordeptr->cblkptr = ((cblkptr == NULL) || ((void *) cblkptr == (void *) grafptr)) ? NULL : (Gnum *) cblkptr; libordeptr->rangtab = ((rangtab == NULL) || ((void *) rangtab == (void *) grafptr)) ? NULL : (Gnum *) rangtab; libordeptr->treetab = ((treetab == NULL) || ((void *) treetab == (void *) grafptr)) ? NULL : (Gnum *) treetab; return (orderInit (&libordeptr->o, srcgrafptr->baseval, srcgrafptr->vertnbr, libordeptr->peritab)); } /*+ This routine frees an API ordering. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_graphOrderExit ( const SCOTCH_Graph * const grafptr, SCOTCH_Ordering * const ordeptr) { orderExit (&((LibOrder *) ordeptr)->o); } /*+ This routine loads the contents of *** the given ordering from the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderLoad ( const SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Ordering * restrict const ordeptr, /*+ Ordering to load +*/ FILE * restrict const stream) /*+ Output stream +*/ { const Graph * srcgrafptr; LibOrder * libordeptr; srcgrafptr = (Graph *) grafptr; libordeptr = (LibOrder *) ordeptr; if (orderLoad (&libordeptr->o, srcgrafptr->vlbltax, stream) != 0) return (1); if (libordeptr->permtab != NULL) /* Build inverse permutation if wanted */ orderPeri (libordeptr->o.peritab, srcgrafptr->baseval, libordeptr->o.vnodnbr, libordeptr->permtab, srcgrafptr->baseval); return (0); } /*+ This routine saves the contents of *** the given ordering to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderSave ( const SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSave (&((LibOrder *) ordeptr)->o, ((Graph *) grafptr)->vlbltax, stream)); } /*+ This routine saves to the given stream *** the mapping data associated with the *** given ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderSaveMap ( const SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSaveMap (&((LibOrder *) ordeptr)->o, ((Graph *) grafptr)->vlbltax, stream)); } /*+ This routine saves to the given stream *** the separator tree data associated with *** the given ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderSaveTree ( const SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSaveTree (&((LibOrder *) ordeptr)->o, ((Graph *) grafptr)->vlbltax, stream)); } /*+ This routine computes an ordering *** of the API ordering structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderCompute ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering to compute +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { return (SCOTCH_graphOrderComputeList (grafptr, ordeptr, ((Graph *) grafptr)->vertnbr, NULL, stratptr)); } /*+ This routine computes a partial ordering *** of the listed vertices of the API ordering *** structure graph with respect to the given *** strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderComputeList ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering to compute +*/ const SCOTCH_Num listnbr, /*+ Number of vertices in list +*/ const SCOTCH_Num * const listtab, /*+ List of vertex indices to order +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { const Graph * restrict srcgrafptr; LibOrder * libordeptr; /* Pointer to ordering */ Hgraph halgrafdat; /* Halo source graph structure */ Hgraph halgraftmp; /* Halo source graph structure */ Hgraph * halgrafptr; /* Pointer to halo graph structure */ const Strat * ordstratptr; /* Pointer to ordering strategy */ OrderCblk * cblkptr; srcgrafptr = (Graph *) grafptr; libordeptr = (LibOrder *) ordeptr; /* Get ordering */ #ifdef SCOTCH_DEBUG_LIBRARY1 if ((listnbr < 0) || (listnbr > srcgrafptr->vertnbr)) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid parameters (1)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ #ifdef SCOTCH_DEBUG_LIBRARY2 if (graphCheck (srcgrafptr) != 0) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ if (listnbr == 0) { /* If empty list, return identity peremutation */ intAscn (libordeptr->o.peritab, srcgrafptr->vertnbr, srcgrafptr->baseval); return (0); } if (*((Strat **) stratptr) == NULL) /* Set default ordering strategy if necessary */ SCOTCH_stratGraphOrderBuild (stratptr, SCOTCH_STRATQUALITY, 0, 0.2); ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hgraphorderststratab) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": not an ordering strategy"); return (1); } memCpy (&halgrafdat.s, grafptr, sizeof (Graph)); /* Copy non-halo graph data */ halgrafdat.s.flagval &= ~GRAPHFREETABS; /* Do not allow to free arrays */ halgrafdat.s.edlotax = NULL; /* Don't mind about edge loads */ halgrafdat.vnohnbr = halgrafdat.s.vertnbr; /* All vertices are non-halo */ halgrafdat.vnohnnd = halgrafdat.s.vertnnd; /* No halo present */ halgrafdat.vnhdtax = halgrafdat.s.vendtax; /* End of non-halo vertices */ halgrafdat.vnlosum = halgrafdat.s.velosum; /* Sum of node vertex weights */ halgrafdat.enohnbr = halgrafdat.s.edgenbr; /* No halo present */ halgrafdat.enlosum = halgrafdat.s.edlosum; halgrafdat.levlnum = 0; /* No nested dissection yet */ if (listnbr == srcgrafptr->vertnbr) { /* If work on full graph */ halgrafptr = &halgrafdat; cblkptr = &libordeptr->o.cblktre; } else { Gnum * restrict peritax; Gnum listnum; Gnum vertnum; Gnum halonum; if ((cblkptr = (OrderCblk *) memAlloc (2 * sizeof (OrderCblk))) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": out of memory"); return (1); } libordeptr->o.treenbr = 3; libordeptr->o.cblknbr = 2; libordeptr->o.cblktre.typeval = ORDERCBLKNEDI; /* Node becomes a (fake) nested dissection node */ libordeptr->o.cblktre.vnodnbr = srcgrafptr->vertnbr; libordeptr->o.cblktre.cblknbr = 2; libordeptr->o.cblktre.cblktab = cblkptr; cblkptr[0].typeval = ORDERCBLKOTHR; /* Build column blocks */ cblkptr[0].vnodnbr = listnbr; cblkptr[0].cblknbr = 0; cblkptr[0].cblktab = NULL; cblkptr[1].typeval = ORDERCBLKOTHR; cblkptr[1].vnodnbr = srcgrafptr->vertnbr - listnbr; cblkptr[1].cblknbr = 0; cblkptr[1].cblktab = NULL; memSet (libordeptr->o.peritab, 0, srcgrafptr->vertnbr * sizeof (Gnum)); /* Fill inverse permutation with dummy values */ for (listnum = 0, peritax = libordeptr->o.peritab - srcgrafptr->baseval; listnum < listnbr; listnum ++) { #ifdef SCOTCH_DEBUG_LIBRARY2 if ((listtab[listnum] < srcgrafptr->baseval) || (listtab[listnum] >= srcgrafptr->vertnnd)) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ peritax[listtab[listnum]] = ~0; /* TRICK: use peritab as flag array to mark used vertices */ } for (vertnum = halonum = srcgrafptr->vertnnd - 1; vertnum >= srcgrafptr->baseval; vertnum --) { if (peritax[vertnum] == 0) peritax[halonum --] = vertnum; } #ifdef SCOTCH_DEBUG_LIBRARY2 if (halonum != (listnbr + srcgrafptr->baseval - 1)) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY2 */ if (hgraphInduceList (&halgrafdat, listnbr, (Gnum * const) listtab, srcgrafptr->vertnbr - listnbr, &halgraftmp) != 0) { errorPrint (STRINGIFY (SCOTCH_graphOrderComputeList) ": cannot create induced subgraph"); return (1); } halgrafptr = &halgraftmp; } intRandInit (); /* Check that random number generator is initialized */ hgraphOrderSt (halgrafptr, &libordeptr->o, 0, cblkptr, ordstratptr); if (halgrafptr != &halgrafdat) /* If induced subgraph created */ hgraphExit (halgrafptr); /* Free it */ #ifdef SCOTCH_DEBUG_LIBRARY2 if (orderCheck (&libordeptr->o) != 0) return (1); #endif /* SCOTCH_DEBUG_LIBRARY2 */ if (libordeptr->permtab != NULL) /* Build direct permutation if wanted */ orderPeri (libordeptr->o.peritab, srcgrafptr->baseval, libordeptr->o.vnodnbr, libordeptr->permtab, srcgrafptr->baseval); if (libordeptr->rangtab != NULL) /* Build range array if column block data wanted */ orderRang (&libordeptr->o, libordeptr->rangtab); if (libordeptr->treetab != NULL) /* Build separator tree array if wanted */ orderTree (&libordeptr->o, libordeptr->treetab); if (libordeptr->cblkptr != NULL) /* Set number of column blocks if wanted */ *(libordeptr->cblkptr) = libordeptr->o.cblknbr; return (0); } /*+ This routine computes an ordering *** of the API ordering structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrder ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ SCOTCH_Strat * const stratptr, /*+ Ordering strategy +*/ SCOTCH_Num * const permtab, /*+ Ordering permutation +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Separator tree array +*/ { SCOTCH_Ordering ordedat; int o; if (SCOTCH_graphOrderInit (grafptr, &ordedat, permtab, peritab, cblkptr, rangtab, treetab) != 0) return (1); o = SCOTCH_graphOrderCompute (grafptr, &ordedat, stratptr); SCOTCH_graphOrderExit (grafptr, &ordedat); return (o); } /*+ This routine computes an ordering *** of the subgraph of the API ordering *** structure graph induced by the given *** vertex list, with respect to the given *** strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderList ( SCOTCH_Graph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Num listnbr, /*+ Number of vertices in list +*/ const SCOTCH_Num * const listtab, /*+ List of vertex indices to order +*/ SCOTCH_Strat * const stratptr, /*+ Ordering strategy +*/ SCOTCH_Num * const permtab, /*+ Ordering permutation +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Column block range array +*/ { SCOTCH_Ordering ordedat; int o; SCOTCH_graphOrderInit (grafptr, &ordedat, permtab, peritab, cblkptr, rangtab, treetab); o = SCOTCH_graphOrderComputeList (grafptr, &ordedat, listnbr, listtab, stratptr); SCOTCH_graphOrderExit (grafptr, &ordedat); return (o); } /*+ This routine checks the consistency *** of the given graph ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphOrderCheck ( const SCOTCH_Graph * const grafptr, const SCOTCH_Ordering * const ordeptr) /*+ Ordering to check +*/ { return (orderCheck (&((LibOrder *) ordeptr)->o)); } /*+ This routine parses the given *** graph ordering strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratGraphOrder ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hgraphorderststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratGraphOrder) ": error in ordering strategy"); return (1); } return (0); } /*+ This routine provides predefined *** ordering strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratGraphOrderBuild ( SCOTCH_Strat * const stratptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num levlnbr, /*+ Number of nested dissection levels +*/ const double balrat) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char levltab[32]; char bbaltab[32]; char * sepaptr; char * tstsptr; char * oleaptr; char * osepptr; sprintf (bbaltab, "%lf", balrat); sprintf (levltab, GNUMSTRING, levlnbr); sprintf (bufftab, (((flagval & SCOTCH_STRATDISCONNECTED) != 0) ? "o{strat=%s}" : "%s"), "c{rat=0.7,cpr=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=},unc=n{sep=/()?m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}};,ole=,ose=}}"); switch (flagval & (SCOTCH_STRATLEVELMIN | SCOTCH_STRATLEVELMAX)) { case SCOTCH_STRATLEVELMIN : tstsptr = "(levl<)|(vert>240)"; break; case SCOTCH_STRATLEVELMAX : tstsptr = "(levl<)&(vert>240)"; break; case (SCOTCH_STRATLEVELMIN | SCOTCH_STRATLEVELMAX) : tstsptr = "levl<"; break; default : tstsptr = "vert>240"; break; } sepaptr = ((flagval & SCOTCH_STRATSPEED) != 0) ? "" : "|m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}}"; oleaptr = ((flagval & SCOTCH_STRATLEAFSIMPLE) != 0) ? "s" : "f{cmin=15,cmax=100000,frat=0.0}"; osepptr = ((flagval & SCOTCH_STRATSEPASIMPLE) != 0) ? "s" : "g"; stringSubst (bufftab, "", sepaptr); stringSubst (bufftab, "", tstsptr); stringSubst (bufftab, "", levltab); stringSubst (bufftab, "", oleaptr); stringSubst (bufftab, "", osepptr); stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratGraphOrder (stratptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratGraphOrderBuild) ": error in sequential ordering strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/bgraph_bipart_ex.h0000644000302600021200000000736613560005346021505 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_ex.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the exact-balance post-processing **/ /** module. **/ /** **/ /** DATES : # Version 2.0 : from : 25 oct 1994 **/ /** to 26 oct 1994 **/ /** # Version 3.0 : from : 18 nov 1995 **/ /** to 20 nov 1995 **/ /** # Version 3.1 : from : 20 nov 1995 **/ /** to 20 nov 1995 **/ /** # Version 3.2 : from : 15 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 11 dec 2003 **/ /** to 11 dec 2003 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ System-defined constants. +*/ #define BGRAPHBIPARTEXGAINTABLSUBBITS 1 #define BGRAPHBIPARTEXSTATEFREE ((GainLink *) 0) /*+ Vertex in initial state (TRICK: must be 0) +*/ #define BGRAPHBIPARTEXSTATEUSED ((GainLink *) 1) /*+ Swapped vertex +*/ #define BGRAPHBIPARTEXSTATELINK ((GainLink *) 2) /*+ Currently in gain table if higher +*/ /* ** The function prototypes. */ int bgraphBipartEx (Bgraph * restrict const); scotch_6.0.9/src/libscotch/bgraph_bipart_bd.h0000644000302600021200000000645013560005346021447 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_bd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the bipartition graph banding **/ /** module. **/ /** **/ /** DATES : Version 5.0 : from : 27 nov 2006 **/ /** to : 29 may 2007 **/ /** Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** Version 6.0 : from : 07 nov 2011 **/ /** to : 07 nov 2011 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BgraphBipartBdParam_ { Gnum distmax; /*+ Maximum distance to separator +*/ Strat * stratbnd; /*+ Strategy for band graph +*/ Strat * stratorg; /*+ Strategy for original graph +*/ } BgraphBipartBdParam; /* ** The function prototypes. */ int bgraphBipartBd (Bgraph * restrict const, const BgraphBipartBdParam * restrict const); scotch_6.0.9/src/libscotch/dgraph_build.c0000644000302600021200000006160313560005435020615 0ustar pelegrinpelegrin/* Copyright 2007,2010,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_build.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : These lines are the distributed source **/ /** graph building routines. **/ /** **/ /** DATES : # Version P0.1 : from : 01 apr 1997 **/ /** to : 20 jun 1997 **/ /** # Version P0.2 : from : 02 feb 2000 **/ /** to : 02 feb 2000 **/ /** # Version 5.0 : from : 22 jul 2005 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to : 03 nov 2010 **/ /** # Version 6.0 : from : 23 dec 2013 **/ /** to : 03 jun 2018 **/ /** **/ /************************************************************/ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "dgraph_build.h" /* This routine builds a distributed graph from ** the local arrays that are passed to it. If ** a vertex label array is given, it is assumed ** that edge ends are given with respect to these ** labels, and thus they are updated so as to be ** given with respect to the implicit (based) ** global numbering. ** As for all routines that build graphs, the private ** fields of the Dgraph structure have to be initialized ** if they are not already. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphBuild ( Dgraph * restrict const grafptr, /* Graph */ const Gnum baseval, /* Base for indexing */ const Gnum vertlocnbr, /* Number of local vertices */ const Gnum vertlocmax, /* Maximum number of local vertices */ Gnum * const vertloctax, /* Local vertex begin array */ Gnum * const vendloctax, /* Local vertex end array */ Gnum * const veloloctax, /* Local vertex load array (if any) */ Gnum * const vnumloctax, /* Local vertex number array (if any) */ Gnum * const vlblloctax, /* Local vertex label array (if any) */ const Gnum edgelocnbr, /* Number of local edges */ const Gnum edgelocsiz, /* Size of local edge array */ Gnum * const edgeloctax, /* Local edge array */ Gnum * const edgegsttax, /* Ghost edge array (if any); not const */ Gnum * const edloloctax) /* Local edge load array (if any) */ { Gnum vertlocnum; Gnum vertlocnnd; Gnum velolocsum; Gnum degrlocmax; /* Local maximum degree */ for (vertlocnum = baseval, vertlocnnd = vertlocnbr + baseval, degrlocmax = 0; vertlocnum < vertlocnnd; vertlocnum ++) { Gnum degrval; degrval = vendloctax[vertlocnum] - vertloctax[vertlocnum]; if (degrlocmax < degrval) degrlocmax = degrval; } if (veloloctax == NULL) /* Get local vertex load sum */ velolocsum = vertlocnbr; else { Gnum vertlocnum; for (vertlocnum = baseval, velolocsum = 0; vertlocnum < vertlocnnd; vertlocnum ++) velolocsum += veloloctax[vertlocnum]; } return (dgraphBuild2 (grafptr, baseval, vertlocnbr, vertlocmax, vertloctax, vendloctax, veloloctax, velolocsum, vnumloctax, vlblloctax, edgelocnbr, edgelocsiz, edgeloctax, edgegsttax, edloloctax, degrlocmax)); } /* This routine builds a distributed graph from ** the local arrays that are passed to it. If ** a vertex label array is given, it is assumed ** that edge ends are given with respect to these ** labels, and thus they are updated so as to be ** given with respect to the implicit (based) ** global numbering. ** As for all routines that build graphs, the private ** fields of the Dgraph structure have to be initialized ** if they are not already. ** These graphs do not have holes, since procvrttab ** points to procdsptab. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphBuild2 ( Dgraph * restrict const grafptr, /* Graph */ const Gnum baseval, /* Base for indexing */ const Gnum vertlocnbr, /* Number of local vertices */ const Gnum vertlocmax, /* Maximum number of local vertices */ Gnum * const vertloctax, /* Local vertex begin array */ Gnum * const vendloctax, /* Local vertex end array */ Gnum * const veloloctax, /* Local vertex load array (if any) */ const Gnum velolocsum, /* Local sum of vertex loads */ Gnum * const vnumloctax, /* Local vertex number array (if any) */ Gnum * const vlblloctax, /* Local vertex label array (if any) */ const Gnum edgelocnbr, /* Number of local edges */ const Gnum edgelocsiz, /* Size of local edge array */ Gnum * const edgeloctax, /* Local edge array */ Gnum * const edgegsttax, /* Ghost edge array (if any); not const */ Gnum * const edloloctax, /* Local edge load array (if any) */ const Gnum degrlocmax) { Gnum procnum; int reduloctab[2]; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocmax < vertlocnbr) || (edgelocsiz < edgelocnbr)) { errorPrint ("dgraphBuild2: invalid parameters"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (grafptr->procdsptab == NULL) { /* If private data not yet allocated */ int procglbnbr; procglbnbr = grafptr->procglbnbr; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &grafptr->procdsptab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &grafptr->procvrttab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &grafptr->proccnttab, (size_t) (procglbnbr * sizeof (Gnum)), &grafptr->procngbtab, (size_t) (procglbnbr * sizeof (int)), &grafptr->procrcvtab, (size_t) (procglbnbr * sizeof (int)), &grafptr->procsndtab, (size_t) (procglbnbr * sizeof (int)), NULL) == NULL) { int * dummtab; errorPrint ("dgraphBuild2: out of memory"); if ((dummtab = memAlloc ((procglbnbr * 2) * sizeof (int))) != NULL) { reduloctab[0] = reduloctab[1] = -1; if (MPI_Allgather (reduloctab, 2, MPI_INT, /* Use dummy receive array (if can be allocated too) */ dummtab, 2, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) errorPrint ("dgraphBuild2: communication error (1)"); memFree (dummtab); } return (1); } } reduloctab[0] = (int) vertlocnbr; reduloctab[1] = (int) vertlocmax; if (MPI_Allgather (reduloctab, 2, MPI_INT, /* Use procngbtab and procrcvtab as a joint allreduce receive array */ grafptr->procngbtab, 2, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphBuild2: communication error (2)"); return (1); } grafptr->procdsptab[0] = /* Build vertex-to-process array */ grafptr->procvrttab[0] = baseval; for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { if (grafptr->procngbtab[procnum] < 0) { /* If error notified by another process during memory allocation */ memFree (grafptr->procdsptab); grafptr->procdsptab = NULL; /* Free memory that has just been allocated */ return (1); } grafptr->procdsptab[procnum + 1] = grafptr->procdsptab[procnum] + (Gnum) grafptr->procngbtab[2 * procnum]; grafptr->procvrttab[procnum + 1] = grafptr->procvrttab[procnum] + (Gnum) grafptr->procngbtab[2 * procnum + 1]; grafptr->proccnttab[procnum] = grafptr->procdsptab[procnum + 1] - grafptr->procdsptab[procnum]; } grafptr->flagval |= DGRAPHFREEPRIV; return (dgraphBuild3 (grafptr, baseval, vertlocnbr, vertloctax, vendloctax, veloloctax, velolocsum, vnumloctax, vlblloctax, edgelocnbr, edgelocsiz, edgeloctax, edgegsttax, edloloctax, degrlocmax)); } /* This routine builds a distributed graph from ** the local arrays that are passed to it. If ** a vertex label array is given, it is assumed ** that edge ends are given with respect to these ** labels, and thus they are updated so as to be ** given with respect to the implicit (based) ** global numbering. ** This alternate interface assumes that the private ** fields of the Dgraph structure have already been ** initialized. ** It returns: ** - 0 : on success. ** - !0 : on error. */ DGRAPHALLREDUCEMAXSUMOP (17, 3) int dgraphBuild3 ( Dgraph * restrict const grafptr, /* Graph */ const Gnum baseval, /* Base for indexing */ const Gnum vertlocnbr, /* Number of local vertices */ Gnum * const vertloctax, /* Local vertex begin array */ Gnum * const vendloctax, /* Local vertex end array */ Gnum * const veloloctax, /* Local vertex load array (if any) */ const Gnum velolocsum, /* Local sum of vertex loads */ Gnum * const vnumloctax, /* Local vertex number array (if any) */ Gnum * const vlblloctax, /* Local vertex label array (if any) */ const Gnum edgelocnbr, /* Number of local edges */ const Gnum edgelocsiz, /* Minimum useful size of local edge array */ Gnum * const edgeloctax, /* Local edge array */ Gnum * const edgegsttax, /* Ghost edge array (if any); not const */ Gnum * const edloloctax, /* Local edge load array (if any) */ const Gnum degrlocmax) { int procglbnbr; /* Number of processes sharing graph data */ int procrcvnum; /* Number of process from which to receive */ int procsndnum; /* Number of process to which to send */ int procngbnbr; /* Number of neighbors processed */ int procngbnum; /* Number of current neighbor process */ int procngbsel; /* Value of the currently used neighbor buffers */ Gnum vertngbmin; /* Smallest vertex number of neighbor process */ Gnum vertlocnum; Gnum edgelocnum; const Gnum * vlbllocptr; /* Pointer to current vertex label */ DgraphLablSortVert * vesongbptr; /* Pointer to current sort cell */ DgraphLablSortVert * vesongbtnd; /* Pointer to end of current sort array */ DgraphLablSortVert * vesongbtab[2]; /* Neighbor vertex sorting array [norestrict:async] */ int vesongbnbr[2]; /* Sizes of both vertex sort arrays */ DgraphLablSortEdge * edsoloctab; /* Local edge sorting array */ DgraphLablSortEdge * edsoloctnd; /* Pointer to end of edge sort array */ DgraphLablSortEdge * edsolocptr; /* Pointer to current sort edge */ MPI_Request requloctab[2]; /* Arrays for pipelined communication */ MPI_Status statloctab[2]; int cheklocval; /* Local consistency flag */ int chekglbval; /* Global consistency flag */ Gnum reduloctab[20]; /* Arrays for reductions */ Gnum reduglbtab[20]; reduloctab[0] = baseval; /* Check argument consistency */ reduloctab[1] = - baseval; reduloctab[2] = (veloloctax != NULL) ? 1 : 0; reduloctab[3] = - reduloctab[2]; reduloctab[4] = (vnumloctax != NULL) ? 1 : 0; reduloctab[5] = - reduloctab[4]; reduloctab[6] = (vlblloctax != NULL) ? 1 : 0; reduloctab[7] = - reduloctab[6]; reduloctab[8] = (edloloctax != NULL) ? 1 : 0; reduloctab[9] = - reduloctab[8]; reduloctab[10] = (edgegsttax != NULL) ? 1 : 0; reduloctab[11] = - reduloctab[10]; reduloctab[12] = vertlocnbr; /* Get maximum number of local vertices */ reduloctab[13] = edgelocnbr; reduloctab[14] = edgelocsiz; reduloctab[15] = degrlocmax; reduloctab[16] = (grafptr->procdsptab == NULL) ? 1 : 0; /* Error if private data not yet allocated */ reduloctab[17] = vertlocnbr; /* Sum local sizes */ reduloctab[18] = velolocsum; reduloctab[19] = edgelocnbr; if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 17, 3, grafptr->proccomm) != 0) { errorPrint ("dgraphBuild3: cannot compute reductions"); return (1); } if (reduglbtab[16] != 0) { errorPrint ("dgraphBuild3: no private data"); return (1); } if ((reduglbtab[1] != - reduglbtab[0]) || (reduglbtab[3] != - reduglbtab[2]) || (reduglbtab[5] != - reduglbtab[4]) || (reduglbtab[7] != - reduglbtab[6]) || (reduglbtab[9] != - reduglbtab[8]) || (reduglbtab[11] != - reduglbtab[10])) { errorPrint ("dgraphBuild3: inconsistent parameters"); return (1); } grafptr->vertglbmax = reduglbtab[12]; /* Set maximum number of local vertices */ grafptr->edgeglbmax = reduglbtab[13]; /* Set maximum number of local edges */ grafptr->edgeglbsmx = reduglbtab[14]; /* Set maximum size of local edge arrays */ grafptr->degrglbmax = reduglbtab[15]; /* Set maximum degree */ grafptr->baseval = baseval; grafptr->vertglbnbr = reduglbtab[17]; /* Set global and local data */ grafptr->vertlocnbr = vertlocnbr; grafptr->vertlocnnd = vertlocnbr + baseval; grafptr->velolocsum = velolocsum; grafptr->veloglbsum = reduglbtab[18]; grafptr->vertloctax = vertloctax; grafptr->vendloctax = vendloctax; grafptr->veloloctax = veloloctax; grafptr->vnumloctax = vnumloctax; grafptr->vlblloctax = vlblloctax; grafptr->edgeglbnbr = reduglbtab[19]; grafptr->edgelocnbr = edgelocnbr; grafptr->edgelocsiz = edgelocsiz; grafptr->edgegsttax = edgegsttax; grafptr->edgeloctax = edgeloctax; grafptr->edloloctax = edloloctax; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procdsptab[grafptr->procglbnbr] - baseval) < grafptr->vertglbnbr) { errorPrint ("dgraphBuild3: invalid process vertex array"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (vlblloctax != NULL) { /* If vertex labels given */ procglbnbr = grafptr->procglbnbr; if (memAllocGroup ((void **) (void *) &vesongbtab[0], (size_t) (grafptr->vertglbmax * sizeof (DgraphLablSortVert)), &vesongbtab[1], (size_t) (grafptr->vertglbmax * sizeof (DgraphLablSortVert)), &edsoloctab, (size_t) (grafptr->edgeglbmax * sizeof (DgraphLablSortEdge)), NULL) == NULL) { errorPrint ("dgraphBuild3: out of memory"); return (1); } for (vertlocnum = 0, vesongbptr = vesongbtab[0], vlbllocptr = vlblloctax + baseval; vertlocnum < vertlocnbr; vertlocnum ++, vesongbptr ++, vlbllocptr ++) { vesongbptr->vlblglbnum = *vlbllocptr; /* Build vertex sort array */ vesongbptr->vertlocnum = vertlocnum; /* Local index is not based */ } intSort2asc1 (vesongbtab[0], vertlocnbr); vesongbnbr[0] = vertlocnbr; /* Set array size */ cheklocval = 0; for (vesongbptr = vesongbtab[0] + 1, vesongbtnd = vesongbtab[0] + vertlocnbr; vesongbptr < vesongbtnd; vesongbptr ++) { if (vesongbptr[0].vlblglbnum == vesongbptr[-1].vlblglbnum) { cheklocval = 1; break; } } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be merged with a useful one */ MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm); #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) { errorPrint ("dgraphBuild3: duplicate vertex label (1)"); memFree (vesongbtab[0]); return (1); } for (edsolocptr = edsoloctab, edsoloctnd = edsoloctab + edgelocnbr, edgelocnum = baseval; edsolocptr < edsoloctnd; edsolocptr ++, edgelocnum ++) { edsolocptr->vlblglbnum = edgeloctax[edgelocnum]; edsolocptr->edgelocnum = edgelocnum; } intSort2asc2 (edsoloctab, grafptr->edgelocnbr); procrcvnum = (grafptr->proclocnum + 1) % procglbnbr; /* Compute indices of neighbors */ procsndnum = (grafptr->proclocnum - 1 + procglbnbr) % procglbnbr; for (procngbnbr = 0, procngbsel = 0; /* For all processes */ procngbnbr < procglbnbr; procngbnbr ++, procngbsel = 1 - procngbsel) { procngbnum = (grafptr->proclocnum + procngbnbr) % procglbnbr; /* Get neighbor process */ vertngbmin = grafptr->procvrttab[procngbnum]; /* Get neighbor vertex number range */ if (procngbnbr < (procglbnbr - 1)) { /* If not last iteration */ MPI_Irecv (vesongbtab[1 - procngbsel], 2 * grafptr->vertglbmax, GNUM_MPI, procrcvnum, TAGVLBLLOCTAB, grafptr->proccomm, &requloctab[0]); MPI_Isend (vesongbtab[procngbsel], 2 * vesongbnbr[procngbsel], GNUM_MPI, procsndnum, TAGVLBLLOCTAB, grafptr->proccomm, &requloctab[1]); } if (vesongbnbr[procngbsel] > 0) { /* If neighbor vertex sort array not empty */ for (edsolocptr = edsoloctab, /* Replace label by global vertex number */ vesongbptr = vesongbtab[procngbsel], vesongbtnd = vesongbptr + vesongbnbr[procngbsel]; edsolocptr < edsoloctnd; ) { if (edsolocptr->vlblglbnum == vesongbptr->vlblglbnum) { if (edsolocptr->edgelocnum == -1) /* If edge label already replaced */ cheklocval = 1; /* Set error flag */ else { edgeloctax[edsolocptr->edgelocnum] = vertngbmin + vesongbptr->vertlocnum; edsolocptr->edgelocnum = -1; /* Edge has been processed */ } edsolocptr ++; /* One more edge processed */ continue; /* Go on as quickly as possible */ } if (edsolocptr->vlblglbnum < vesongbptr->vlblglbnum) { edsolocptr ++; /* One more edge processed */ continue; /* Go on as quickly as possible */ } while (edsolocptr->vlblglbnum > vesongbptr->vlblglbnum) { if (++ vesongbptr >= vesongbtnd) { /* Break if all labels processed */ edsolocptr = edsoloctnd; break; } } } } if (procngbnbr < (procglbnbr - 1)) { /* If not last iteration */ MPI_Waitall (2, requloctab, statloctab); /* Wait for communication completion */ MPI_Get_count (&statloctab[0], GNUM_MPI, &vesongbnbr[1 - procngbsel]); vesongbnbr[1 - procngbsel] /= 2; /* Count items, not fields */ } } memFree (vesongbtab[0]); #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be merged with a useful one */ MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm); #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) { errorPrint ("dgraphBuild3: duplicate vertex label (2)"); return (1); } } return (0); } /* This subroutine computes the reduced values ** of all of the distributed graph fields. ** It does not deal with vertex labels, nor with ** the ghost edge array. ** It returns: ** - 0 : on success. ** - !0 : on error. */ DGRAPHALLREDUCEMAXSUMOP (4, 3) int dgraphBuild4 ( Dgraph * restrict const grafptr) /* Distributed graph */ { Gnum reduloctab[7]; /* Arrays for reductions */ Gnum reduglbtab[7]; reduloctab[0] = grafptr->vertlocnbr; /* Get maximum over all processes */ reduloctab[1] = grafptr->edgelocnbr; reduloctab[2] = grafptr->edgelocsiz; reduloctab[3] = grafptr->degrglbmax; /* Here, degrglbmax may store only a local maximum degree before calling */ reduloctab[4] = grafptr->vertlocnbr; /* Sum local sizes */ reduloctab[5] = grafptr->velolocsum; reduloctab[6] = grafptr->edgelocnbr; if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 4, 3, grafptr->proccomm) != 0) { errorPrint ("dgraphBuild4: cannot compute reductions"); return (1); } grafptr->vertglbmax = reduglbtab[0]; /* Set maximum number of local vertices */ grafptr->edgeglbmax = reduglbtab[1]; /* Set maximum number of local edges */ grafptr->edgeglbsmx = reduglbtab[2]; /* Set maximum size of local edge arrays */ grafptr->degrglbmax = reduglbtab[3]; /* Set maximum degree */ grafptr->vertglbnbr = reduglbtab[4]; grafptr->veloglbsum = reduglbtab[5]; grafptr->edgeglbnbr = reduglbtab[6]; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procdsptab[grafptr->procglbnbr] - grafptr->baseval) < grafptr->vertglbnbr) { errorPrint ("dgraphBuild4: invalid process vertex array"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hmesh_order_hd.c0000644000302600021200000001571013303015264021135 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a submesh using **/ /** the block-oriented Halo Approximate **/ /** (Multiple) Minimum Degree algorithm, **/ /** with super-variable accounting **/ /** R2HAMDf4 v2.0). **/ /** **/ /** DATES : # Version 4.0 : from : 10 dec 2003 **/ /** to : 24 jan 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_HD #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hall_order_hd.h" #include "hall_order_hx.h" #include "hmesh_order_hd.h" #include "hmesh_order_hx.h" #include "hmesh_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderHd ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HmeshOrderHdParam * restrict const paraptr) { Gnum * restrict petab; Gnum pfree; Gnum iwlen; Gnum * restrict iwtab; Gnum * restrict lentab; Gnum * restrict nvartab; Gnum * restrict elentab; Gnum * restrict lasttab; Gnum * restrict leaftab; Gnum * restrict secntab; /* Array of index to first secondary variable */ Gnum * restrict nexttab; /* Array of index of next principal variable */ Gnum * restrict frsttab; Gnum ncmpa; Gnum n; /* Number of nodes to order */ int o; n = meshptr->m.velmnbr + meshptr->m.vnodnbr; if (n < paraptr->colmin) /* If graph is too small, order simply */ return (hmeshOrderSi (meshptr, ordeptr, ordenum, cblkptr)); iwlen = (Gnum) ((double) meshptr->m.edgenbr * HMESHORDERHDCOMPRAT) + 32; if (iwlen < n) /* Prepare to re-use array */ iwlen = n; if (memAllocGroup ((void **) (void *) &petab, (size_t) (n * sizeof (Gnum)), &iwtab, (size_t) (iwlen * sizeof (Gnum)), &lentab, (size_t) (n * sizeof (Gnum)), &nvartab, (size_t) (n * sizeof (Gnum)), &elentab, (size_t) (n * sizeof (Gnum)), &lasttab, (size_t) (n * sizeof (Gnum)), &leaftab, (size_t) (n * sizeof (Gnum)), &frsttab, (size_t) (n * sizeof (Gnum)), &secntab, (size_t) (n * sizeof (Gnum)), &nexttab, (size_t) (n * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshOrderHd: out of memory"); return (1); } hmeshOrderHxFill (meshptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHdHalmd (n, meshptr->m.velmnbr, iwlen, petab, pfree, lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, leaftab, secntab, nexttab, frsttab); if (ncmpa < 0) { errorPrint ("hmeshOrderHd: internal error"); memFree (petab); /* Free group leader */ return (1); } o = hallOrderHxBuild (meshptr->m.baseval, n, meshptr->vnohnbr, (meshptr->m.vnumtax == NULL) ? NULL : meshptr->m.vnumtax + (meshptr->m.vnodbas - meshptr->m.baseval), /* Point to node part of vnumtab array */ ordeptr, cblkptr, nvartab - meshptr->m.baseval, lentab - meshptr->m.baseval, petab - meshptr->m.baseval, frsttab - meshptr->m.baseval, nexttab - meshptr->m.baseval, secntab - meshptr->m.baseval, iwtab - meshptr->m.baseval, elentab - meshptr->m.baseval, ordeptr->peritab + ordenum, /* Use given inverse permutation as inverse permutation space, never based */ leaftab, paraptr->colmin, paraptr->colmax, (float) paraptr->fillrat); memFree (petab); /* Free group leader */ return (o); } scotch_6.0.9/src/libscotch/bgraph_bipart_gg.h0000644000302600021200000001632213560005346021456 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_gg.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Luca SCARANO (v3.1) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the function **/ /** declarations for the greedy graph **/ /** growing bipartitioning method. **/ /** **/ /** DATES : # Version 3.1 : from : 07 jan 1996 **/ /** to 29 apr 1996 **/ /** # Version 3.2 : from : 20 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 09 jan 2004 **/ /** # Version 6.0 : from : 23 feb 2011 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /** Method parameters. **/ typedef struct BgraphBipartGgParam_ { INT passnbr; /*+ Number of passes to do +*/ } BgraphBipartGgParam; #ifdef BGRAPH_BIPART_GG /* Private part of the module */ /*+ The complementary vertex structure. For trick reasons, the gain table data structure must be the first field of the structure. +*/ #ifdef SCOTCH_TABLE_GAIN typedef GainTabl * BgraphBipartGgTabl; typedef GainLink BgraphBipartGgLink; #else /* SCOTCH_TABLE_GAIN */ typedef FiboHeap BgraphBipartGgTabl; typedef FiboNode BgraphBipartGgLink; #endif /* SCOTCH_TABLE_GAIN */ typedef struct BgraphBipartGgVertex_ { BgraphBipartGgLink gainlink; /*+ Gain link: FIRST +*/ Gnum commgain0; /*+ Gain if vertex and neighbors in part 0 +*/ Gnum commgain; /*+ Gain value +*/ } BgraphBipartGgVertex; #endif /* BGRAPH_BIPART_GG */ /* ** The function prototypes. */ int bgraphBipartGg (Bgraph * restrict const, const BgraphBipartGgParam * const); /* ** The macro definitions. */ #ifdef SCOTCH_TABLE_GAIN /*+ Gain table subbits. +*/ #define BGRAPHBIPARTGGGAINTABLSUBBITS 1 /** Gain table vertex status. **/ #define BGRAPHBIPARTGGSTATEFREE ((GainLink *) 0) /*+ Vertex in initial state (TRICK: must be 0) +*/ #define BGRAPHBIPARTGGSTATEUSED ((GainLink *) 1) /*+ Swapped vertex +*/ #define BGRAPHBIPARTGGSTATELINK ((GainLink *) 2) /*+ Currently in gain table if higher +*/ /*+ Service routines. +*/ #define bgraphBipartGgTablInit(t) (((*(t)) = gainTablInit (GAIN_LINMAX, BGRAPHBIPARTGGGAINTABLSUBBITS)) == NULL) #define bgraphBipartGgTablFree(t) gainTablFree (*(t)) #define bgraphBipartGgTablExit(t) do { \ if (*(t) != NULL) \ gainTablExit (*(t)); \ } while (0) #define bgraphBipartGgTablAdd(t,v) gainTablAdd ((*(t)), &(v)->gainlink, (v)->commgain) #define bgraphBipartGgTablDel(t,v) gainTablDel ((*(t)), &(v)->gainlink) #define bgraphBipartGgTablFrst(t) gainTablFrst (*(t)) #define bgraphBipartGgIsFree(v) ((v)->gainlink.next == BGRAPHBIPARTGGSTATEFREE) #define bgraphBipartGgIsTabl(v) ((v)->gainlink.next >= BGRAPHBIPARTGGSTATELINK) #define bgraphBipartGgIsUsed(v) ((v)->gainlink.next == BGRAPHBIPARTGGSTATEUSED) #define bgraphBipartGgSetFree(v) ((v)->gainlink.next = BGRAPHBIPARTGGSTATEFREE) #define bgraphBipartGgSetUsed(v) ((v)->gainlink.next = BGRAPHBIPARTGGSTATEUSED) #define bgraphBipartGgNext(v) ((v)->gainlink.next) #else /* SCOTCH_TABLE_GAIN */ /*+ Gain table vertex status. +*/ #define BGRAPHBIPARTGGSTATEFREE ((FiboNode *) 0) /*+ Vertex in initial state (TRICK: must be 0) +*/ #define BGRAPHBIPARTGGSTATEUSED ((FiboNode *) 1) /*+ Swapped vertex +*/ #define BGRAPHBIPARTGGSTATELINK ((FiboNode *) 2) /*+ Currently in gain table if higher +*/ /*+ Service routines. +*/ #define bgraphBipartGgTablInit(t) (fiboHeapInit ((t), bgraphBipartGgCmpFunc)) #define bgraphBipartGgTablFree(t) fiboHeapFree (t) #define bgraphBipartGgTablExit(t) fiboHeapExit (t) #define bgraphBipartGgTablAdd(t,v) fiboHeapAdd ((t), &(v)->gainlink) #define bgraphBipartGgTablDel(t,v) fiboHeapDel ((t), &(v)->gainlink) #define bgraphBipartGgTablFrst(t) fiboHeapMin ((t)) #define bgraphBipartGgIsFree(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTGGSTATEFREE) #define bgraphBipartGgIsTabl(v) ((v)->gainlink.linkdat.nextptr >= BGRAPHBIPARTGGSTATELINK) #define bgraphBipartGgIsUsed(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTGGSTATEUSED) #define bgraphBipartGgSetFree(v) ((v)->gainlink.linkdat.nextptr = BGRAPHBIPARTGGSTATEFREE) #define bgraphBipartGgSetUsed(v) ((v)->gainlink.linkdat.nextptr = BGRAPHBIPARTGGSTATEUSED) #define bgraphBipartGgNext(v) ((v)->gainlink.linkdat.nextptr) #endif /* SCOTCH_TABLE_GAIN */ scotch_6.0.9/src/libscotch/graph_match.c0000644000302600021200000004401613470115365020451 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2011,2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_match.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source graph **/ /** matching functions, generated from the **/ /** generic pattern. **/ /** **/ /** DATES : # Version 6.0 : from : 05 oct 2012 **/ /** to 05 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_MATCH #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "graph_coarsen.h" #include "graph_match.h" /* ** The static variables. */ static void (* graphmatchfuncseqtab[]) (GraphCoarsenThread *) = { /* Array of sequential matching routines */ GRAPHMATCHFUNCBLOCK (Seq) }; #ifdef GRAPHMATCHTHREAD static void (* graphmatchfuncthrbegtab[]) (GraphCoarsenThread *) = { /* Array of threaded matching start routines */ GRAPHMATCHFUNCBLOCK (ThrBeg) }; static void (* graphmatchfuncthrmidtab[]) (GraphCoarsenThread *) = { /* Array of threaded matching intermediate routines */ GRAPHMATCHFUNCBLOCK (ThrMid) }; static void (* graphmatchfuncthrendtab[]) (GraphCoarsenThread *) = { /* Array of threaded matching end routines */ GRAPHMATCHFUNCBLOCK (ThrEnd) }; #endif /* GRAPHMATCHTHREAD */ /***************************/ /* */ /* The sequential matching */ /* subroutines. */ /* */ /***************************/ #define GRAPHMATCHSCANP1INPERT /* Perturbation scan for first pass */ #define GRAPHMATCHSCANP2INPERT /* Perturbation scan for second pass */ #define GRAPHMATCHSCANNAME graphMatchSeqNfNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchSeqNfNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchSeqNfVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchSeqNfVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANPFIXTAB #define GRAPHMATCHSCANNAME graphMatchSeqFxNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchSeqFxNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchSeqFxVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchSeqFxVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #undef GRAPHMATCHSCANPFIXTAB #undef GRAPHMATCHSCANP1INPERT #undef GRAPHMATCHSCANP2INPERT /*************************/ /* */ /* The threaded matching */ /* start subroutines. */ /* */ /*************************/ #ifdef GRAPHMATCHTHREAD /* Start subroutines */ #define GRAPHMATCHSCANP1INPERT /* Perturbation scan for first pass */ #define GRAPHMATCHSCANP2INPERT /* Perturbation scan for second pass */ #define GRAPHMATCHSCANP2OUTQUEUE /* Queue storage for second pass */ #define GRAPHMATCHSCANNAME graphMatchThrBegNfNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegNfNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegNfVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegNfVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANPFIXTAB #define GRAPHMATCHSCANNAME graphMatchThrBegFxNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegFxNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegFxVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrBegFxVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #undef GRAPHMATCHSCANPFIXTAB #undef GRAPHMATCHSCANP1INPERT #undef GRAPHMATCHSCANP2INPERT #undef GRAPHMATCHSCANP2OUTQUEUE /* Intermediate subroutines */ #define GRAPHMATCHSCANP2INQUEUE /* Read queue for second (only) pass */ #define GRAPHMATCHSCANP2OUTQUEUE /* Queue storage for second pass */ #define GRAPHMATCHSCANNAME graphMatchThrMidNfNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidNfNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidNfVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidNfVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANPFIXTAB #define GRAPHMATCHSCANNAME graphMatchThrMidFxNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidFxNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidFxVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrMidFxVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #undef GRAPHMATCHSCANPFIXTAB #undef GRAPHMATCHSCANP2INQUEUE #undef GRAPHMATCHSCANP2OUTQUEUE /* End subroutines */ #define GRAPHMATCHSCANP2INQUEUE /* Read queue for second (only) pass */ #define GRAPHMATCHSCANNAME graphMatchThrEndNfNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndNfNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndNfVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndNfVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANPFIXTAB #define GRAPHMATCHSCANNAME graphMatchThrEndFxNvNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndFxNvEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #define GRAPHMATCHSCANVELOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndFxVlEl #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANEDLOTAB #define GRAPHMATCHSCANNAME graphMatchThrEndFxVlNe #include "graph_match_scan.c" #undef GRAPHMATCHSCANNAME #undef GRAPHMATCHSCANVELOTAB #undef GRAPHMATCHSCANPFIXTAB #undef GRAPHMATCHSCANP2INQUEUE #endif /* GRAPHMATCHTHREAD */ /*************************/ /* */ /* The matching routine. */ /* */ /*************************/ /* This routine performs the sequential ** initialization of the global mating ** data structures, so as to indicate ** that no mating will be performed. ** It returns: ** - 0 : in all cases. */ void graphMatchNone ( GraphCoarsenData * restrict coarptr) { #ifdef SCOTCH_PTHREAD coarptr->finelocktax = NULL; coarptr->finequeutab = NULL; coarptr->fendptr = (void (*) (void *)) NULL; coarptr->fmidptr = (void (*) (void *)) NULL; #endif /* SCOTCH_PTHREAD */ coarptr->fbegptr = (void (*) (void *)) NULL; } /* This routine performs the sequential ** initialization of the global mating ** data structures, before the threads ** are launched. ** It returns: ** - 0 : if initialization could be performed. ** - 1 : on error. */ int graphMatchInit ( GraphCoarsenData * restrict coarptr) { int flagval; const Graph * restrict const finegrafptr = coarptr->finegrafptr; #if ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) const Gnum finevertnbr = finegrafptr->vertnbr; const Gnum baseval = finegrafptr->baseval; const int thrdnbr = coarptr->thrddat.thrdnbr; #endif /* ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) */ flagval = (finegrafptr->edlotax != NULL) ? 1 : 0; if (finegrafptr->velotax != NULL) flagval |= 2; if ((coarptr->finevfixnbr > 0) || (coarptr->fineparotax != NULL)) flagval |= 4; #if ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) if (thrdnbr > 1) { if (memAllocGroup ((void **) (void *) &coarptr->finequeutab, (size_t) (finevertnbr * sizeof (Gnum)), &coarptr->finelocktax, (size_t) (finevertnbr * sizeof (int)), NULL) == NULL) { errorPrint ("graphMatchInit: out of memory"); return (1); } coarptr->finelocktax -= baseval; coarptr->fbegptr = (void (*) (void *)) graphmatchfuncthrbegtab[flagval]; coarptr->fmidptr = (void (*) (void *)) graphmatchfuncthrmidtab[flagval]; coarptr->fendptr = (void (*) (void *)) graphmatchfuncthrendtab[flagval]; } else { coarptr->finequeutab = NULL; coarptr->finelocktax = NULL; /* If deterministic behavior wanted, no threaded mating */ coarptr->fbegptr = (void (*) (void *)) graphmatchfuncseqtab[flagval]; #ifdef SCOTCH_DEBUG_GRAPH2 coarptr->fmidptr = (void (*) (void *)) NULL; coarptr->fendptr = (void (*) (void *)) NULL; #endif /* SCOTCH_DEBUG_GRAPH2 */ } #else /* ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) */ coarptr->fbegptr = (void (*) (void *)) graphmatchfuncseqtab[flagval]; #endif /* ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) */ return (0); } /* This routine merges the results of two mating ** threads and re-launches a mating operation ** if necessary. */ #ifdef GRAPHMATCHTHREAD static void graphMatchReduce ( GraphCoarsenThread * restrict const tlocptr, /* Pointer to local thread */ void * restrict const vlocptr, /* Pointer to local value */ void * restrict const vremptr) /* Pointer to remote value */ { GraphCoarsenData * restrict const coarptr = (GraphCoarsenData *) (tlocptr->thrddat.grouptr); GraphCoarsenThread * restrict const tremptr = (GraphCoarsenThread *) vremptr; const int thrdnbr = coarptr->thrddat.thrdnbr; const int thrdnum = tlocptr->thrddat.thrdnum; Gnum qremnbr; qremnbr = tremptr->finequeunnd - tremptr->finequeubas; /* Number of enqueued fine vertices in second thread */ memMov (coarptr->finequeutab + tlocptr->finequeunnd, /* Merge queues */ coarptr->finequeutab + tremptr->finequeubas, qremnbr * sizeof (Gnum)); tlocptr->finequeunnd += qremnbr; tlocptr->coarvertnbr += tremptr->coarvertnbr; if ((thrdnum == 0) && (((tremptr - tlocptr) << 1) >= thrdnbr)) /* If last join */ coarptr->fendptr (tlocptr); /* Call end match routine */ else coarptr->fmidptr (tlocptr); /* Call intermediate match routine */ } #endif /* GRAPHMATCHTHREAD */ /* This routine matches the vertices of the given ** graph, according to various constraints. The ** matching can be either single-threaded or ** multi-threaded. ** It returns: ** - 0 : if matching could be performed. ** - 1 : on error. */ void graphMatch ( GraphCoarsenThread * restrict thrdptr) /*+ Pointer to incomplete match data array +*/ { Gnum finevertsiz; #ifdef SCOTCH_DEBUG_GRAPH2 Gnum finevertnum; #endif /* SCOTCH_DEBUG_GRAPH2 */ GraphCoarsenData * restrict const coarptr = (GraphCoarsenData *) (thrdptr->thrddat.grouptr); const Graph * restrict const finegrafptr = coarptr->finegrafptr; const Gnum finevertbas = thrdptr->finevertbas; /* Get fine vertex range */ const Gnum finevertnnd = thrdptr->finevertnnd; Gnum * restrict const finematetax = coarptr->finematetax; thrdptr->finequeubas = finevertbas; /* Assume matching range is fine vertex processing range */ thrdptr->finequeunnd = finevertnnd; thrdptr->coarvertnbr = 0; /* No coarse vertices created yet */ finevertsiz = finevertnnd - finevertbas; /* Compute fine vertex range */ memSet (finematetax + finevertbas, ~0, finevertsiz * sizeof (Gnum)); #if ((defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC)) if (coarptr->thrddat.thrdnbr > 1) { memSet (coarptr->finelocktax + finevertbas, 0, finevertsiz * sizeof (int)); /* Initialize local part of lock array for concurrent accesses */ threadBarrier (thrdptr); /* finematetax and finelocktax must have been globally initialized before we can go on */ coarptr->fbegptr (thrdptr); /* Perform bulk on local part */ threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) graphMatchReduce, 0); /* Reduce work on remaining vertices */ if (thrdptr->thrddat.thrdnum == 0) { coarptr->coarvertnbr = thrdptr->coarvertnbr; /* Global number of coarse vertices is reduced number */ memFree (coarptr->finequeutab); /* Free group leader of matching data */ } threadBarrier (thrdptr); /* coarptr->coarvertnbr must be known to all */ } else #else /* (defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC) */ #ifdef GRAPHCOARSENTHREAD /* If matching was called from a threaded environment */ if (coarptr->thrddat.thrdnbr > 1) { threadBarrier (thrdptr); /* finematetax must have been fully initialized before we go on */ thrdptr->finequeubas = finegrafptr->baseval; /* Thread 0 will handle all of fine graph vertices */ thrdptr->finequeunnd = finegrafptr->vertnnd; if (thrdptr->thrddat.thrdnum == 0) { /* Only thread 0 will do the job sequentially */ coarptr->fbegptr (thrdptr); /* Call sequential mating routine */ coarptr->coarvertnbr = thrdptr->coarvertnbr; /* Global number of coarse vertices is that computed by (sequential) thread 0 */ } threadBarrier (thrdptr); /* coarptr->coarvertnbr must be known to all */ } else #endif /* GRAPHCOARSENTHREAD */ #endif /* (defined GRAPHMATCHTHREAD) && ! (defined SCOTCH_DETERMINISTIC) */ { coarptr->fbegptr (thrdptr); /* Call sequential mating routine */ coarptr->coarvertnbr = thrdptr->coarvertnbr; /* Global number of coarse vertices is that computed by (sequential) thread 0 */ } #ifdef SCOTCH_DEBUG_GRAPH2 for (finevertnum = finevertbas; finevertnum < finevertnnd; finevertnum ++) { if (finematetax[finevertnum] == ~0) { /* If matching not aborted, this should not happen */ errorPrint ("graphMatch: internal error"); coarptr->coarvertnbr = coarptr->coarvertmax; } } #endif /* SCOTCH_DEBUG_GRAPH2 */ } scotch_6.0.9/src/libscotch/graph_io_habo.h0000644000302600021200000001020613465315041020751 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_habo.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the Harwell-Boeing matrix **/ /** format I/O module. **/ /** **/ /** DATES : # Version 3.2 : from : 06 nov 1997 **/ /** to 06 nov 1997 **/ /** # Version 3.3 : from : 13 dec 1998 **/ /** to 15 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 19 jan 2004 **/ /** # Version 5.0 : from : 06 jun 2007 **/ /** to 06 jun 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing vertex numbers. +*/ #define GRAPHGEOMHABOHASHPRIME 7 /*+ Prime number +*/ /* ** The type and structure definitions. */ /*+ This structure holds neighbor vertex hashing data. +*/ typedef struct GraphGeomHaboHash_ { Gnum vertnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum vertend; /*+ Adjacent end vertex number +*/ } GraphGeomHaboHash; /*+ This structure holds line formats for reading input data +*/ typedef struct GraphGeomHaboLine_ { int strtnbr; /*+ Number of starting blank characters +*/ int datanbr; /*+ Number of integers par line +*/ int datalen; /*+ Number of characters per integer +*/ } GraphGeomHaboLine; /* ** The function prototypes. */ static int graphGeomLoadHaboFormat (GraphGeomHaboLine * restrict const, const char * const); scotch_6.0.9/src/libscotch/graph_io_mmkt.h0000644000302600021200000000523313303015264021007 0ustar pelegrinpelegrin/* Copyright 2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_mmkt.h **/ /** **/ /** AUTHORS : Cedric CHEVALIER (v5.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the Input routines **/ /** for handling the Matrix Market format. **/ /** **/ /** DATES : # Version 5.0 : from : 17 jan 2008 **/ /** to : 14 mar 2008 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /* Structure representing edges to symmetrize. */ typedef struct GraphGeomMmktEdge_ { Gnum vertnum[2]; } GraphGeomMmktEdge; scotch_6.0.9/src/libscotch/mesh_induce_sepa.h0000644000302600021200000000573313303015264021467 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_induce_sepa.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the improved Fiduccia-Mattheyses **/ /** graph separation routine. **/ /** **/ /** DATES : # Version 4.0 : from : 04 feb 2003 **/ /** to 09 feb 2003 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing vertex numbers. +*/ #define MESHINDUCESEPAHASHPRIME 17 /*+ Prime number for hashing +*/ /* ** The type and structure definitions. */ /*+ The hash vertex structure. +*/ typedef struct MeshInduceSepaHash_ { Gnum orgvelmnum; /*+ Number of element in original mesh +*/ Gnum indvnodnum; /*+ Number of neighbor node vertex in induced mesh +*/ } MeshInduceSepaHash; scotch_6.0.9/src/libscotch/dgraph_match.c0000644000302600021200000003235013560005435020607 0ustar pelegrinpelegrin/* Copyright 2008-2010,2012,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed graph matching **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2008 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 03 oct 2012 **/ /** to : 10 oct 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_MATCH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "dgraph_match.h" /*************************************/ /* */ /* These routines handle distributed */ /* source graphs. */ /* */ /*************************************/ /* This routine initializes a distributed graph ** structure. In order to avoid collective ** communication whenever possible, the allocation ** of send and receive index arrays is not performed ** in the routine itself, but rather delegated to ** subsequent routines such as dgraphBuild. ** However, these arrays will not be freed by ** dgraphFree, but by dgraphExit. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphMatchInit ( DgraphMatchData * restrict const mateptr, const float probval) { Gnum * restrict procvgbtab; int procngbnum; Gnum vertlocnbr; Gnum vertgstnbr; Dgraph * restrict const grafptr = mateptr->c.finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; const Gnum * restrict const procvrttab = grafptr->procvrttab; vertlocnbr = grafptr->vertlocnbr; vertgstnbr = grafptr->vertgstnbr; if (memAllocGroup ((void **) (void *) &mateptr->procvgbtab, (size_t) ((grafptr->procngbnbr + 1) * sizeof (Gnum)), &mateptr->queuloctab, (size_t) (vertlocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphMatchInit: out of memory"); return (1); } mateptr->c.multlocnbr = 0; mateptr->mategsttax = mateptr->c.coargsttax; /* TRICK: re-use array */ mateptr->matelocnbr = 0; /* All vertices need to be processed */ mateptr->queulocnbr = 0; mateptr->probval = (grafptr->procngbnbr == 0) ? 1.0F : probval; memSet (mateptr->mategsttax + grafptr->vertlocnnd, ~0, (vertgstnbr - vertlocnbr) * sizeof (Gnum)); /* No ghost vertices matched to date */ for (procngbnum = 0, procvgbtab = mateptr->procvgbtab; procngbnum < grafptr->procngbnbr; procngbnum ++) procvgbtab[procngbnum] = (Gnum) procvrttab[procngbtab[procngbnum]]; procvgbtab[procngbnum] = (Gnum) procvrttab[grafptr->procglbnbr]; /* Mark end */ return (0); } /* This routine frees the contents of a matching ** data structure. ** It returns: ** - VOID : in all cases. */ void dgraphMatchExit ( DgraphMatchData * restrict const mateptr) { memFree (mateptr->procvgbtab); } /* These routines perform a round of computations ** among enqueued vertices to produce matching requests. ** They return: ** - 0 : on success. ** - !0 : on error. */ #define DGRAPHMATCHSCANNAME dgraphMatchSc /* Scan matching (no edge weights) */ #define DGRAPHMATCHSCANINIT \ probmax = (Gnum) (mateptr->probval * 32768.0); /* Compute integer threshold of random value */ #define DGRAPHMATCHSCANCOUNTDECL ; #define DGRAPHMATCHSCANCOUNTINIT \ probval = intRandVal (32768); /* Get proba for this vertex */ #define DGRAPHMATCHSCANCOUNTSELECT \ edgefrenbr ++; #define DGRAPHMATCHSCANFINDSELECT \ (edgefrenbr -- == 0) #include "dgraph_match_scan.c" #undef DGRAPHMATCHSCANFINDSELECT #undef DGRAPHMATCHSCANCOUNTSELECT #undef DGRAPHMATCHSCANCOUNTINIT #undef DGRAPHMATCHSCANCOUNTDECL #undef DGRAPHMATCHSCANINIT #undef DGRAPHMATCHSCANNAME #define DGRAPHMATCHSCANNAME dgraphMatchHy /* Heavy edge matching */ #define DGRAPHMATCHSCANINIT \ const Gnum * restrict const edloloctax = grafptr->edloloctax; \ if (edloloctax == NULL) { \ dgraphMatchSc (mateptr); \ return; \ } \ probmax = (Gnum) (mateptr->probval * 32768.0); /* Compute integer threshold of random value */ #define DGRAPHMATCHSCANCOUNTDECL \ Gnum edlolocmax; #define DGRAPHMATCHSCANCOUNTINIT \ edlolocmax = 0; \ probval = intRandVal (32768); /* Get proba for this vertex */ #define DGRAPHMATCHSCANCOUNTSELECT \ Gnum edlolocval; \ edlolocval = edloloctax[edgelocnum]; \ if (edlolocval > edlolocmax) { \ edlolocmax = edlolocval; \ edgefrenbr = 1; \ } \ else if (edlolocval == edlolocmax) \ edgefrenbr ++; #define DGRAPHMATCHSCANFINDSELECT \ ((edloloctax[edgelocnum] == edlolocmax) && \ (edgefrenbr -- == 0)) #include "dgraph_match_scan.c" #undef DGRAPHMATCHSCANFINDSELECT #undef DGRAPHMATCHSCANCOUNTSELECT #undef DGRAPHMATCHSCANCOUNTINIT #undef DGRAPHMATCHSCANCOUNTDECL #undef DGRAPHMATCHSCANINIT #undef DGRAPHMATCHSCANNAME #define DGRAPHMATCHSCANNAME dgraphMatchHl /* Heavy edge matching of lightest vertices */ #define DGRAPHMATCHSCANINIT \ const Gnum * restrict const veloloctax = grafptr->veloloctax; \ const Gnum * restrict const edloloctax = grafptr->edloloctax; \ if ((veloloctax == NULL) || (edloloctax == NULL)) { \ dgraphMatchHy (mateptr); \ return; \ } \ probmax = (1 * grafptr->veloglbsum) / (5 * grafptr->vertglbnbr); #define DGRAPHMATCHSCANCOUNTDECL \ Gnum edlolocmax; #define DGRAPHMATCHSCANCOUNTINIT \ edlolocmax = 0; \ probval = veloloctax[vertlocnum]; /* Process vertex if vertex weight smaller than threshold */ #define DGRAPHMATCHSCANCOUNTSELECT \ Gnum edlolocval; \ edlolocval = edloloctax[edgelocnum]; \ if (edlolocval > edlolocmax) { \ edlolocmax = edlolocval; \ edgefrenbr = 1; \ } \ else if (edlolocval == edlolocmax) \ edgefrenbr ++; #define DGRAPHMATCHSCANFINDSELECT \ ((edloloctax[edgelocnum] == edlolocmax) && \ (edgefrenbr -- == 0)) #include "dgraph_match_scan.c" #undef DGRAPHMATCHSCANFINDSELECT #undef DGRAPHMATCHSCANCOUNTSELECT #undef DGRAPHMATCHSCANCOUNTINIT #undef DGRAPHMATCHSCANCOUNTDECL #undef DGRAPHMATCHSCANINIT #undef DGRAPHMATCHSCANNAME #define DGRAPHMATCHSCANNAME dgraphMatchLc /* Local scan matching */ #define DGRAPHMATCHSCANINIT \ probmax = 0; /* Vertices will always be active */ #define DGRAPHMATCHSCANCOUNTDECL ; #define DGRAPHMATCHSCANCOUNTINIT \ probval = 0; /* Vertices will always be active */ #define DGRAPHMATCHSCANCOUNTSELECT \ if (vertgstend < vertlocnnd) \ edgefrenbr ++; \ else \ edgeendnbr --; #define DGRAPHMATCHSCANFINDSELECT \ ((vertgstend < vertlocnnd) && \ (edgefrenbr -- == 0)) #include "dgraph_match_scan.c" #undef DGRAPHMATCHSCANFINDSELECT #undef DGRAPHMATCHSCANCOUNTSELECT #undef DGRAPHMATCHSCANCOUNTINIT #undef DGRAPHMATCHSCANCOUNTDECL #undef DGRAPHMATCHSCANINIT #undef DGRAPHMATCHSCANNAME #define DGRAPHMATCHSCANNAME dgraphMatchLy /* Local heavy edge matching */ #define DGRAPHMATCHSCANINIT \ const Gnum * restrict const edloloctax = mateptr->c.finegrafptr->edloloctax; \ if (edloloctax == NULL) { \ dgraphMatchLc (mateptr); \ return; \ } \ probmax = 0; /* Vertices will always be active */ #define DGRAPHMATCHSCANCOUNTDECL \ Gnum edlolocmax; #define DGRAPHMATCHSCANCOUNTINIT \ edlolocmax = 0; \ probval = 0; /* Vertices will always be active */ #define DGRAPHMATCHSCANCOUNTSELECT \ if (vertgstend < vertlocnnd) { \ Gnum edlolocval; \ edlolocval = edloloctax[edgelocnum]; \ if (edlolocval > edlolocmax) { \ edlolocmax = edlolocval; \ edgefrenbr = 1; \ } \ else if (edlolocval == edlolocmax) \ edgefrenbr ++; \ } \ else \ edgeendnbr --; #define DGRAPHMATCHSCANFINDSELECT \ ((vertgstend < vertlocnnd) && \ (edloloctax[edgelocnum] == edlolocmax) && \ (edgefrenbr -- == 0)) #include "dgraph_match_scan.c" #undef DGRAPHMATCHSCANFINDSELECT #undef DGRAPHMATCHSCANCOUNTSELECT #undef DGRAPHMATCHSCANCOUNTINIT #undef DGRAPHMATCHSCANCOUNTDECL #undef DGRAPHMATCHSCANINIT #undef DGRAPHMATCHSCANNAME scotch_6.0.9/src/libscotch/vdgraph_separate_zr.c0000644000302600021200000000655413560013732022226 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_zr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** of the distributed separator graph to **/ /** the first subdomain. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 07 feb 2006 **/ /** # Version 6.0 : from : 23 feb 2018 **/ /** to 23 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_ZR #include "module.h" #include "common.h" #include "dgraph.h" #include "vdgraph.h" #include "vdgraph_separate_zr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine moves all of the graph vertices ** to the first part of the partition. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vdgraphSeparateZr ( Vdgraph * const grafptr) /*+ Active graph +*/ { if (grafptr->compglbsize[0] != grafptr->s.vertglbnbr) /* If not all vertices already in part zero */ vdgraphZero (grafptr); return (0); } scotch_6.0.9/src/libscotch/library_mesh_order.c0000644000302600021200000004042013560013261022032 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the mesh **/ /** ordering routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 3.2 : from : 19 aug 1998 **/ /** to 22 aug 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 27 mar 1999 **/ /** # Version 4.0 : from : 29 jan 2002 **/ /** to 20 dec 2005 **/ /** # Version 5.0 : from : 04 aug 2007 **/ /** to 31 may 2008 **/ /** # Version 5.1 : from : 29 mar 2010 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 14 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "mesh.h" #include "order.h" #include "hmesh.h" #include "hmesh_order_st.h" #include "library_order.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the mesh ordering routines. */ /* */ /************************************/ /*+ This routine initializes an API ordering *** with respect to the given source graph *** and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderInit ( const SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering structure to initialize +*/ SCOTCH_Num * const permtab, /*+ Direct permutation array +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Separator tree array +*/ { Mesh * srcmeshptr; LibOrder * libordeptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { errorPrint (STRINGIFY (SCOTCH_meshOrderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ srcmeshptr = (Mesh *) meshptr; /* Use structure as source mesh */ libordeptr = (LibOrder *) ordeptr; libordeptr->permtab = ((permtab == NULL) || ((void *) permtab == (void *) meshptr)) ? NULL : (Gnum *) permtab; libordeptr->peritab = ((peritab == NULL) || ((void *) peritab == (void *) meshptr)) ? NULL : (Gnum *) peritab; libordeptr->cblkptr = ((cblkptr == NULL) || ((void *) cblkptr == (void *) meshptr)) ? NULL : (Gnum *) cblkptr; libordeptr->rangtab = ((rangtab == NULL) || ((void *) rangtab == (void *) meshptr)) ? NULL : (Gnum *) rangtab; libordeptr->treetab = ((treetab == NULL) || ((void *) treetab == (void *) meshptr)) ? NULL : (Gnum *) treetab; return (orderInit (&libordeptr->o, srcmeshptr->baseval, srcmeshptr->vnodnbr, libordeptr->peritab)); } /*+ This routine frees an API ordering. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_meshOrderExit ( const SCOTCH_Mesh * const meshptr, SCOTCH_Ordering * const ordeptr) { orderExit (&((LibOrder *) ordeptr)->o); } /*+ This routine saves the contents of *** the given ordering to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderSave ( const SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSave (&((LibOrder *) ordeptr)->o, ((Mesh *) meshptr)->vlbltax, stream)); } /*+ This routine saves the mapping data *** associated with the given ordering *** to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderSaveMap ( const SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSaveMap (&((LibOrder *) ordeptr)->o, ((Mesh *) meshptr)->vlbltax, stream)); } /*+ This routine saves to the given stream *** the separator tree data associated with *** the given ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderSaveTree ( const SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ const SCOTCH_Ordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (orderSaveTree (&((LibOrder *) ordeptr)->o, ((Mesh *) meshptr)->vlbltax, stream)); } /*+ This routine computes an ordering *** of the API ordering structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderCompute ( SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering to compute +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { return (SCOTCH_meshOrderComputeList (meshptr, ordeptr, 0, NULL, stratptr)); } /*+ This routine computes a partial ordering *** of the listed nodes of the API ordering *** structure mesh with respect to the given *** strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderComputeList ( SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ SCOTCH_Ordering * const ordeptr, /*+ Ordering to compute +*/ const SCOTCH_Num listnbr, /*+ Number of vertices in list +*/ const SCOTCH_Num * const listtab, /*+ List of vertex indices to order +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { LibOrder * libordeptr; /* Pointer to ordering */ Mesh * srcmeshptr; /* Pointer to source mesh */ Hmesh srcmeshdat; /* Halo source mesh structure */ VertList srclistdat; /* Subgraph vertex list */ VertList * srclistptr; /* Pointer to subgraph vertex list */ const Strat * ordstratptr; /* Pointer to ordering strategy */ srcmeshptr = (Mesh *) meshptr; #ifdef SCOTCH_DEBUG_MESH2 if (meshCheck (srcmeshptr) != 0) { errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": invalid input mesh"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ if (*((Strat **) stratptr) == NULL) /* Set default ordering strategy if necessary */ SCOTCH_stratMeshOrderBuild (stratptr, SCOTCH_STRATQUALITY, 0.1); ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hmeshorderststratab) { errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": not a mesh ordering strategy"); return (1); } memCpy (&srcmeshdat.m, srcmeshptr, sizeof (Mesh)); /* Copy non-halo mesh data */ srcmeshdat.m.flagval &= ~MESHFREETABS; /* Do not allow to free arrays */ srcmeshdat.vehdtax = srcmeshdat.m.vendtax; /* End of non-halo vertices */ srcmeshdat.veihnbr = 0; /* No halo isolated elements */ srcmeshdat.vnohnbr = srcmeshdat.m.vnodnbr; /* All nodes are non-halo */ srcmeshdat.vnohnnd = srcmeshdat.m.vnodnnd; /* No halo present */ srcmeshdat.vnhlsum = srcmeshdat.m.vnlosum; /* Sum of node vertex weights */ srcmeshdat.enohnbr = srcmeshdat.m.edgenbr; /* All edges are non-halo */ srcmeshdat.levlnum = 0; /* Start from level zero */ libordeptr = (LibOrder *) ordeptr; /* Get ordering */ srclistdat.vnumnbr = (Gnum) listnbr; /* Build vertex list */ srclistdat.vnumtab = (Gnum *) listtab; srclistptr = ((srclistdat.vnumnbr == 0) || (srclistdat.vnumnbr == srcmeshdat.m.vnodnbr)) ? NULL : &srclistdat; /* Is the list really necessary */ if (srclistptr != NULL) { errorPrint (STRINGIFY (SCOTCH_meshOrderComputeList) ": node lists not yet implemented"); return (1); } intRandInit (); /* Check that random number generator is initialized */ hmeshOrderSt (&srcmeshdat, &libordeptr->o, 0, &libordeptr->o.cblktre, ordstratptr); #ifdef SCOTCH_DEBUG_LIBRARY2 orderCheck (&libordeptr->o); #endif /* SCOTCH_DEBUG_LIBRARY2 */ if (libordeptr->permtab != NULL) /* Build direct permutation if wanted */ orderPeri (libordeptr->o.peritab, libordeptr->o.baseval, libordeptr->o.vnodnbr, libordeptr->permtab, libordeptr->o.baseval); if (libordeptr->rangtab != NULL) /* Build range array if column block data wanted */ orderRang (&libordeptr->o, libordeptr->rangtab); if (libordeptr->treetab != NULL) /* Build separator tree array if wanted */ orderTree (&libordeptr->o, libordeptr->treetab); if (libordeptr->cblkptr != NULL) /* Set number of column blocks if wanted */ *(libordeptr->cblkptr) = libordeptr->o.cblknbr; meshExit (&srcmeshdat.m); /* Free in case mesh had been reordered */ return (0); } /*+ This routine computes an ordering *** of the API ordering structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrder ( SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ SCOTCH_Strat * const stratptr, /*+ Ordering strategy +*/ SCOTCH_Num * const permtab, /*+ Ordering permutation +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Separator tree array +*/ { SCOTCH_Ordering ordedat; int o; SCOTCH_meshOrderInit (meshptr, &ordedat, permtab, peritab, cblkptr, rangtab, treetab); o = SCOTCH_meshOrderCompute (meshptr, &ordedat, stratptr); SCOTCH_meshOrderExit (meshptr, &ordedat); return (o); } /*+ This routine computes an ordering *** of the submesh of the API ordering *** structure mesh induced by the given *** vertex list, with respect to the given *** strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderList ( SCOTCH_Mesh * const meshptr, /*+ Mesh to order +*/ const SCOTCH_Num listnbr, /*+ Number of vertices in list +*/ const SCOTCH_Num * const listtab, /*+ List of vertex indices to order +*/ SCOTCH_Strat * const stratptr, /*+ Ordering strategy +*/ SCOTCH_Num * const permtab, /*+ Ordering permutation +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Column block range array +*/ { SCOTCH_Ordering ordedat; int o; SCOTCH_meshOrderInit (meshptr, &ordedat, permtab, peritab, cblkptr, rangtab, treetab); o = SCOTCH_meshOrderComputeList (meshptr, &ordedat, listnbr, listtab, stratptr); SCOTCH_meshOrderExit (meshptr, &ordedat); return (o); } /*+ This routine checks the consistency *** of the given mesh ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshOrderCheck ( const SCOTCH_Mesh * const meshptr, const SCOTCH_Ordering * const ordeptr) /*+ Ordering to check +*/ { return (orderCheck (&((LibOrder *) ordeptr)->o)); } /*+ This routine parses the given *** mesh ordering strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratMeshOrder ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hmeshorderststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratMeshOrder) ": error in ordering strategy"); return (1); } return (0); } /*+ This routine provides predefined *** ordering strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratMeshOrderBuild ( SCOTCH_Strat * const stratptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const double balrat) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[32]; strcpy (bufftab, "c{rat=0.7,cpr=n{sep=/(vnod>120)?m{vnod=100,low=h{pass=10},asc=f{bal=}}:;,ole=v{strat=d{cmin=0,cmax=10000000,frat=0}},ose=g},unc=n{sep=/(vnod>120)?m{vnod=100,low=h{pass=10},asc=f{bal=}}:;,ole=v{strat=d{cmin=0,cmax=10000000,frat=0}},ose=g}}"); sprintf (bbaltab, "%lf", balrat); stringSubst (bufftab, "", bbaltab); if (SCOTCH_stratMeshOrder (stratptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratMeshOrderBuild) ": error in sequential ordering strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/arch_tleaf.c0000644000302600021200000006345213560005302020256 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2015,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_tleaf.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the tree-leaf **/ /** target architecture. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 20 jul 1996 **/ /** # Version 3.2 : from : 10 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 07 jun 2001 **/ /** to 07 jun 2001 **/ /** # Version 4.0 : from : 10 dec 2003 **/ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 03 may 2019 **/ /** **/ /** NOTES : # The ltleaf architecture was proposed **/ /** by Emmanuel Jeannot and Francois **/ /** Tessier. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_TLEAF #include "module.h" #include "common.h" #include "arch.h" #include "arch_tleaf.h" /*******************************************/ /* */ /* These are the tree-leaf graph routines. */ /* */ /*******************************************/ /* This routine loads the ** tree leaf architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archTleafArchLoad ( ArchTleaf * restrict const archptr, FILE * restrict const stream) { Anum sizeval; Anum levlnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchTleaf) > sizeof (ArchDummy)) || (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) { errorPrint ("archTleafArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (intLoad (stream, &archptr->levlnbr) != 1) { errorPrint ("archTleafArchLoad: bad input (1)"); return (1); } if ((archptr->sizetab = memAlloc ((archptr->levlnbr * 2 + 1) * sizeof (Anum))) == NULL) { /* TRICK: One more slot for linktab[-1] */ errorPrint ("archTleafArchLoad: out of memory"); return (1); } archptr->linktab = archptr->sizetab + archptr->levlnbr + 1; /* TRICK: One more slot */ archptr->linktab[-1] = 0; /* Dummy slot for for level-0 communication */ archptr->permtab = NULL; /* Assume no permutation array */ for (levlnum = 0, sizeval = 1; levlnum < archptr->levlnbr; levlnum ++) { if ((intLoad (stream, &archptr->sizetab[levlnum]) != 1) || (intLoad (stream, &archptr->linktab[levlnum]) != 1) || (archptr->sizetab[levlnum] < 2) || (archptr->linktab[levlnum] < 1)) { errorPrint ("archTleafArchLoad: bad input (2)"); return (1); } sizeval *= archptr->sizetab[levlnum]; } archptr->termnbr = sizeval; return (0); } /* This routine frees the tree ** leaf architecture structures. ** It returns: ** - 0 : if the architecture has been successfully freed. ** - !0 : on error. */ int archTleafArchFree ( ArchTleaf * const archptr) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchTleaf) > sizeof (ArchDummy)) || (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) { errorPrint ("archTleafArchFree: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ memFree (archptr->sizetab); /* Free group leader */ if (archptr->permtab != NULL) memFree (archptr->permtab); /* Free group leader */ #ifdef SCOTCH_DEBUG_ARCH2 archptr->sizetab = archptr->linktab = archptr->permtab = NULL; #endif /* SCOTCH_DEBUG_ARCH2 */ return (0); } /* This routine saves the ** tree leaf architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archTleafArchSave ( const ArchTleaf * const archptr, FILE * restrict const stream) { Anum levlnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchTleaf) > sizeof (ArchDummy)) || (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) { errorPrint ("archTleafArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING, (Anum) archptr->levlnbr) == EOF) { errorPrint ("archTleafArchSave: bad output (1)"); return (1); } for (levlnum = 0; levlnum < archptr->levlnbr; levlnum ++) { if (fprintf (stream, " " ANUMSTRING " " ANUMSTRING, (Anum) archptr->sizetab[levlnum], (Anum) archptr->linktab[levlnum]) == EOF) { errorPrint ("archTleafArchSave: bad output (2)"); return (1); } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archTleafArchSave: bad output (3)"); return (1); } return (0); } /* This routine initializes the matching ** data structure according to the number ** of vertices to be managed. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archTleafMatchInit ( ArchTleafMatch * restrict const matcptr, const ArchTleaf * restrict const archptr) { Anum multnbr; /* Maximum number of multinodes */ Anum vertnbr; /* Number of vertices in architecture */ Anum levlnnd; Anum levlnum; const Anum * restrict const sizetab = archptr->sizetab; for (levlnum = 0, levlnnd = archptr->levlnbr - 1, vertnbr = 1; /* Compute size of blocks save for last level */ levlnum < levlnnd; levlnum ++) vertnbr *= sizetab[levlnum]; multnbr = vertnbr * ((sizetab[levlnum] + 1) >> 1); /* Number of multinodes will account for half the number of vertices in last level */ vertnbr *= sizetab[levlnum]; if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { errorPrint ("archTleafMatchInit: out of memory"); return (1); } matcptr->archptr = archptr; matcptr->passnum = 0; matcptr->levlnum = levlnnd; matcptr->levlsiz = sizetab[levlnnd]; matcptr->vertnbr = vertnbr; return (0); } /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ void archTleafMatchExit ( ArchTleafMatch * restrict const matcptr) { memFree (matcptr->multtab); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ Anum archTleafMatchMate ( ArchTleafMatch * restrict const matcptr, ArchCoarsenMulti ** restrict const multptr) { ArchCoarsenMulti * restrict coarmulttab; Anum finevertnbr; Anum finevertnum; Anum coarvertnum; Anum levlsiz; /* Number of fine vertices in each block */ Anum bloksiz; /* Number of multinodes in each block */ Anum bloknbr; /* Number of blocks */ Anum passnum; levlsiz = matcptr->levlsiz; while (levlsiz == 1) { /* If has to change level */ Anum levlnum; levlnum = matcptr->levlnum - 1; if (levlnum < 0) /* If upper level exceeded */ return (-1); /* Return an error */ matcptr->passnum = 0; /* Reset pass at next level */ matcptr->levlnum = levlnum; levlsiz = matcptr->archptr->sizetab[levlnum]; } finevertnbr = matcptr->vertnbr; #ifdef SCOTCH_DEBUG_ARCH2 if (finevertnbr % levlsiz != 0) { errorPrint ("archTleafMatchMate: internal error (1)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ bloknbr = finevertnbr / levlsiz; if ((levlsiz & 1) != 0) passnum = matcptr->passnum ^= 1; else passnum = -1; bloksiz = levlsiz >> 1; /* Number of multinodes in each block */ levlsiz = (levlsiz + 1) >> 1; /* Number of coarse vertices in each block */ matcptr->levlsiz = levlsiz; matcptr->vertnbr = levlsiz * bloknbr; coarmulttab = matcptr->multtab; for (finevertnum = coarvertnum = 0; bloknbr > 0; bloknbr --) { Anum bloktmp; if (passnum == 0) { /* If block starts with a single node */ coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; coarvertnum ++; } for (bloktmp = bloksiz; bloktmp > 0; bloktmp --) { /* For all pairs of fine vertices within blocks */ coarmulttab[coarvertnum].vertnum[0] = finevertnum ++; /* Create multinode */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; coarvertnum ++; } if (passnum == 1) { /* If block ends with a single node */ coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ coarmulttab[coarvertnum].vertnum[1] = finevertnum ++; coarvertnum ++; } } #ifdef SCOTCH_DEBUG_ARCH2 if (finevertnum != finevertnbr) { errorPrint ("archTleafMatchMate: internal error (2)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ *multptr = coarmulttab; /* Always provide same mating array */ return (coarvertnum); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archTleafDomNum ( const ArchTleaf * const archptr, const ArchTleafDom * const domnptr) { Anum levlnum; Anum sizeval; sizeval = 1; /* Compute size of blocks below */ for (levlnum = domnptr->levlnum; levlnum < archptr->levlnbr; levlnum ++) sizeval *= archptr->sizetab[levlnum]; return (domnptr->indxmin * sizeval); } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archTleafDomTerm ( const ArchTleaf * const archptr, ArchTleafDom * const domnptr, const ArchDomNum domnnum) { #ifdef SCOTCH_DEBUG_ARCH2 if (domnnum < 0) { errorPrint ("archTleafDomTerm: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ if (domnnum < archptr->termnbr) { /* If valid label */ domnptr->levlnum = archptr->levlnbr; /* Set the domain */ domnptr->indxmin = domnnum; domnptr->indxnbr = 1; return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the subtree domain. */ Anum archTleafDomSize ( const ArchTleaf * const archptr, const ArchTleafDom * const domnptr) { Anum levlnum; Anum sizeval; sizeval = 1; /* Compute size of blocks below */ for (levlnum = domnptr->levlnum; levlnum < archptr->levlnbr; levlnum ++) sizeval *= archptr->sizetab[levlnum]; return (sizeval * domnptr->indxnbr); } /* This function returns the average ** distance between two tree leaf ** subdomains. */ Anum archTleafDomDist ( const ArchTleaf * const archptr, const ArchTleafDom * const dom0ptr, const ArchTleafDom * const dom1ptr) { Anum lev0num; Anum lev1num; Anum idx0min; Anum idx1min; Anum idx0nbr; Anum idx1nbr; Anum distval; const Anum * const linktab = archptr->linktab; const Anum * const sizetab = archptr->sizetab; lev0num = dom0ptr->levlnum; lev1num = dom1ptr->levlnum; idx0min = dom0ptr->indxmin; idx1min = dom1ptr->indxmin; idx0nbr = dom0ptr->indxnbr; idx1nbr = dom1ptr->indxnbr; distval = 0; if (lev0num != lev1num) { /* Get enclosing domain level */ if (lev0num > lev1num) { idx0nbr = 1; do { lev0num --; idx0min /= sizetab[lev0num]; distval += linktab[lev0num]; } while (lev0num > lev1num); } else { idx1nbr = 1; do { lev1num --; idx1min /= sizetab[lev1num]; distval += linktab[lev1num]; } while (lev1num > lev0num); } } if (idx0min <= idx1min) { /* Test for equality or inclusion */ if ((idx0min + idx0nbr) >= (idx1min + idx1nbr)) /* If dom1 included in dom0 */ return (distval / 2); } else { if ((idx0min + idx0nbr) <= (idx1min + idx1nbr)) /* If dom0 included in dom1 */ return (distval / 2); } do { #ifdef SCOTCH_DEBUG_ARCH2 if (lev0num == 0) { errorPrint ("archTleafDomDist: internal error"); return (0); } #endif /* SCOTCH_DEBUG_ARCH2 */ lev0num --; idx0min /= sizetab[lev0num]; idx1min /= sizetab[lev0num]; distval += linktab[lev0num]; } while (idx0min != idx1min); return (distval); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archTleafDomFrst ( const ArchTleaf * const archptr, ArchTleafDom * restrict const domnptr) { domnptr->levlnum = 0; domnptr->indxmin = 0; domnptr->indxnbr = 1; /* The root vertex is unique */ return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archTleafDomLoad ( const ArchTleaf * const archptr, ArchTleafDom * restrict const domnptr, FILE * const stream) { if ((intLoad (stream, &domnptr->levlnum) != 1) || (intLoad (stream, &domnptr->indxmin) != 1) || (intLoad (stream, &domnptr->indxnbr) != 1) || (domnptr->levlnum < 0) || (domnptr->levlnum > archptr->levlnbr)) { errorPrint ("archTleafDomLoad: bad input"); return (1); } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archTleafDomSave ( const ArchTleaf * const archptr, const ArchTleafDom * const domnptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING " ", (Anum) domnptr->levlnum, (Anum) domnptr->indxmin, (Anum) domnptr->indxnbr) == EOF) { errorPrint ("archTleafDomSave: bad output"); return (1); } return (0); } /* This function tries to split a tree leaf ** domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archTleafDomBipart ( const ArchTleaf * const archptr, const ArchTleafDom * const domnptr, ArchTleafDom * restrict const dom0ptr, ArchTleafDom * restrict const dom1ptr) { Anum sizeval; if (domnptr->indxnbr <= 1) { /* If subdomain has only one node at this level */ if (domnptr->levlnum >= archptr->levlnbr) /* Return if cannot bipartition more */ return (1); sizeval = archptr->sizetab[domnptr->levlnum]; /* Partition all the vertices of a new level */ dom0ptr->levlnum = dom1ptr->levlnum = domnptr->levlnum + 1; dom0ptr->indxmin = domnptr->indxmin * sizeval; } else { /* Subdomain has several indices */ sizeval = domnptr->indxnbr; /* Base on existing block size */ dom0ptr->levlnum = /* Stay at same level */ dom1ptr->levlnum = domnptr->levlnum; dom0ptr->indxmin = domnptr->indxmin; /* Start from the existing start index */ } dom0ptr->indxnbr = (sizeval + 1) >> 1; /* Subdomain 0 is always the largest one */ dom1ptr->indxmin = dom0ptr->indxmin + dom0ptr->indxnbr; dom1ptr->indxnbr = sizeval - dom0ptr->indxnbr; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archTleafDomIncl ( const ArchTleaf * const archptr, const ArchTleafDom * const dom0ptr, const ArchTleafDom * const dom1ptr) { Anum lev0num; Anum lev1num; Anum idx0min; Anum idx1min; Anum idx0nbr; Anum idx1nbr; const Anum * const sizetab = archptr->sizetab; lev0num = dom0ptr->levlnum; lev1num = dom1ptr->levlnum; idx0min = dom0ptr->indxmin; idx1min = dom1ptr->indxmin; idx0nbr = dom0ptr->indxnbr; idx1nbr = dom1ptr->indxnbr; if (lev0num != lev1num) { if (lev1num > lev0num) { idx1nbr = 1; do { lev1num --; idx1min /= sizetab[lev1num]; } while (lev1num > lev0num); } else return (0); } return (((idx0min >= (idx1min + idx1nbr)) || (idx1min >= (idx0min + idx0nbr))) ? 0 : 1); } /* This function creates the MPI_Datatype for ** tree-leaf domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archTleafDomMpiType ( const ArchTleaf * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (3, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ /***********************************/ /* */ /* These are the labeled tree-leaf */ /* graph routines. */ /* */ /***********************************/ /* This routine loads the labeled ** tree leaf architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archLtleafArchLoad ( ArchTleaf * restrict const archptr, FILE * restrict const stream) { Anum permnum; if (archTleafArchLoad (archptr, stream) != 0) /* Read tree part */ return (1); if ((intLoad (stream, &archptr->permnbr) != 1) || (archptr->permnbr <= 0)) { errorPrint ("archLtleafArchLoad: bad input (1)"); return (1); } #ifdef SCOTCH_DEBUG_ARCH2 if (archptr->permnbr != 1) { /* Valid empty permutation is of size 1 */ Anum levlnum; Anum sizeval; for (levlnum = archptr->levlnbr - 1, sizeval = archptr->sizetab[levlnum]; sizeval != archptr->permnbr; levlnum --, sizeval *= archptr->sizetab[levlnum]) { if (levlnum < 0) { errorPrint ("archLtleafArchLoad: permutation size does not match level boundaries"); return (1); } } } #endif /* SCOTCH_DEBUG_ARCH2 */ if ((archptr->permtab = memAlloc (archptr->permnbr * 2 * sizeof (Anum))) == NULL) { /* TRICK: space for peritab too */ errorPrint ("archLtleafArchLoad: out of memory"); return (1); } for (permnum = 0; permnum < archptr->permnbr; permnum ++) { #ifdef SCOTCH_DEBUG_ARCH2 Anum permtmp; #endif /* SCOTCH_DEBUG_ARCH2 */ if ((intLoad (stream, &archptr->permtab[permnum]) != 1) || (archptr->permtab[permnum] < 0) || (archptr->permtab[permnum] >= archptr->permnbr)) { errorPrint ("archLtleafArchLoad: bad input (2)"); return (1); } #ifdef SCOTCH_DEBUG_ARCH2 for (permtmp = 0; permtmp < permnum; permtmp ++) { if (archptr->permtab[permtmp] == archptr->permtab[permnum]) { errorPrint ("archLtleafArchLoad: duplicate permutation index"); return (1); } } #endif /* SCOTCH_DEBUG_ARCH2 */ } archptr->peritab = archptr->permtab + archptr->permnbr; for (permnum = 0; permnum < archptr->permnbr; permnum ++) /* Build inverse permutation */ archptr->peritab[archptr->permtab[permnum]] = permnum; return (0); } /* This routine saves the labeled ** tree leaf architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archLtleafArchSave ( const ArchTleaf * const archptr, FILE * restrict const stream) { Anum permnum; if (archTleafArchSave (archptr, stream) != 0) /* Save tree part */ return (1); if (fprintf (stream, ANUMSTRING, (Anum) archptr->permnbr) == EOF) { errorPrint ("archLtleafArchSave: bad output (1)"); return (1); } for (permnum = 0; permnum < archptr->permnbr; permnum ++) { if (fprintf (stream, " " ANUMSTRING, (Anum) archptr->permtab[permnum]) == EOF) { errorPrint ("archLtleafArchSave: bad output (2)"); return (1); } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archLtleafArchSave: bad output (3)"); return (1); } return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archLtleafDomNum ( const ArchTleaf * const archptr, const ArchTleafDom * const domnptr) { Anum levlnum; Anum sizeval; Anum domnnum; Anum permnum; sizeval = 1; /* Compute size of blocks below */ for (levlnum = domnptr->levlnum; levlnum < archptr->levlnbr; levlnum ++) sizeval *= archptr->sizetab[levlnum]; domnnum = domnptr->indxmin * sizeval; permnum = domnnum % archptr->permnbr; /* Get non permuted index as terminal domain */ return (domnnum - permnum + archptr->permtab[permnum]); /* Return permuted index */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archLtleafDomTerm ( const ArchTleaf * const archptr, ArchTleafDom * const domnptr, const ArchDomNum domnnum) { #ifdef SCOTCH_DEBUG_ARCH2 if (domnnum < 0) { errorPrint ("archLtleafDomTerm: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ if (domnnum < archptr->termnbr) { /* If valid label */ Anum permnum; permnum = domnnum % archptr->permnbr; /* Get permuted index as terminal domain */ domnptr->levlnum = archptr->levlnbr; /* Set the domain */ domnptr->indxmin = domnnum - permnum + archptr->peritab[permnum]; domnptr->indxnbr = 1; return (0); } return (1); /* Cannot set domain */ } scotch_6.0.9/src/libscotch/bdgraph_bipart_st.c0000644000302600021200000004743213560005346021654 0ustar pelegrinpelegrin/* Copyright 2007-2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_st.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the strategy and **/ /** method tables for distributed graph **/ /** bipartitioning methods. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to : 15 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to : 28 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_ST #include "module.h" #include "common.h" #include "gain.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "bdgraph.h" #include "bdgraph_bipart_bd.h" #include "bdgraph_bipart_df.h" #include "bdgraph_bipart_ex.h" #include "bdgraph_bipart_ml.h" #include "bdgraph_bipart_sq.h" #include "bdgraph_bipart_st.h" #include "bdgraph_bipart_zr.h" /* ** The static and global variables. */ static Bdgraph bdgraphdummy; /* Dummy distributed bipartitioned graph for offset computations */ static union { BdgraphBipartBdParam param; StratNodeMethodData padding; } bdgraphbipartstdefaultbd = { { 3, &stratdummy } }; static union { BdgraphBipartDfParam param; StratNodeMethodData padding; } bdgraphbipartstdefaultdf = { { 500, 1.0, 0.0, BDGRAPHBIPARTDFTYPEBAL } }; static union { BdgraphBipartExParam param; StratNodeMethodData padding; } bdgraphbipartstdefaultex = { { 5, 0.005 } }; static union { BdgraphBipartMlParam param; StratNodeMethodData padding; } bdgraphbipartstdefaultml = { { 5, 1000, 2, 10000, 0.8L, &stratdummy, &stratdummy, &stratdummy} }; static union { BdgraphBipartSqParam param; StratNodeMethodData padding; } bdgraphbipartstdefaultsq = { { &stratdummy } }; static StratMethodTab bdgraphbipartstmethtab[] = { /* Bipartitioning methods array */ { BDGRAPHBIPARTSTMETHBD, "b", bdgraphBipartBd, &bdgraphbipartstdefaultbd }, { BDGRAPHBIPARTSTMETHDF, "d", bdgraphBipartDf, &bdgraphbipartstdefaultdf }, { BDGRAPHBIPARTSTMETHEX, "x", bdgraphBipartEx, &bdgraphbipartstdefaultex }, { BDGRAPHBIPARTSTMETHML, "m", bdgraphBipartMl, &bdgraphbipartstdefaultml }, { BDGRAPHBIPARTSTMETHSQ, "q", bdgraphBipartSq, &bdgraphbipartstdefaultsq }, { BDGRAPHBIPARTSTMETHZR, "z", bdgraphBipartZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab bdgraphbipartstparatab[] = { /* Method parameter list */ { BDGRAPHBIPARTSTMETHBD, STRATPARAMINT, "width", (byte *) &bdgraphbipartstdefaultbd.param, (byte *) &bdgraphbipartstdefaultbd.param.distmax, NULL }, { BDGRAPHBIPARTSTMETHBD, STRATPARAMSTRAT, "bnd", (byte *) &bdgraphbipartstdefaultbd.param, (byte *) &bdgraphbipartstdefaultbd.param.stratbnd, (void *) &bdgraphbipartststratab }, { BDGRAPHBIPARTSTMETHBD, STRATPARAMSTRAT, "org", (byte *) &bdgraphbipartstdefaultbd.param, (byte *) &bdgraphbipartstdefaultbd.param.stratorg, (void *) &bdgraphbipartststratab }, { BDGRAPHBIPARTSTMETHDF, STRATPARAMINT, "pass", (byte *) &bdgraphbipartstdefaultdf.param, (byte *) &bdgraphbipartstdefaultdf.param.passnbr, NULL }, { BDGRAPHBIPARTSTMETHDF, STRATPARAMDOUBLE, "dif", (byte *) &bdgraphbipartstdefaultdf.param, (byte *) &bdgraphbipartstdefaultdf.param.cdifval, NULL }, { BDGRAPHBIPARTSTMETHDF, STRATPARAMDOUBLE, "rem", (byte *) &bdgraphbipartstdefaultdf.param, (byte *) &bdgraphbipartstdefaultdf.param.cremval, NULL }, { BDGRAPHBIPARTSTMETHDF, STRATPARAMCASE, "type", (byte *) &bdgraphbipartstdefaultdf.param, (byte *) &bdgraphbipartstdefaultdf.param.typeval, (void *) "bk" }, { BDGRAPHBIPARTSTMETHEX, STRATPARAMINT, "sbbt", (byte *) &bdgraphbipartstdefaultex.param, (byte *) &bdgraphbipartstdefaultex.param.sbbtnbr, NULL }, { BDGRAPHBIPARTSTMETHEX, STRATPARAMDOUBLE, "bal", (byte *) &bdgraphbipartstdefaultex.param, (byte *) &bdgraphbipartstdefaultex.param.deltval, NULL }, { BDGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "asc", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.stratasc, (void *) &bdgraphbipartststratab }, { BDGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "low", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.stratlow, (void *) &bdgraphbipartststratab }, { BDGRAPHBIPARTSTMETHML, STRATPARAMSTRAT, "seq", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.stratseq, (void *) &bdgraphbipartststratab }, { BDGRAPHBIPARTSTMETHML, STRATPARAMINT, "pass", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.passnbr, NULL }, { BDGRAPHBIPARTSTMETHML, STRATPARAMINT, "vert", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.coarnbr, NULL }, { BDGRAPHBIPARTSTMETHML, STRATPARAMINT, "dvert", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.foldmax, NULL }, { BDGRAPHBIPARTSTMETHML, STRATPARAMCASE, "fold", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.foldval, (void *) "nfd" }, { BDGRAPHBIPARTSTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &bdgraphbipartstdefaultml.param, (byte *) &bdgraphbipartstdefaultml.param.coarrat, NULL }, { BDGRAPHBIPARTSTMETHSQ, STRATPARAMSTRAT, "strat", (byte *) &bdgraphbipartstdefaultsq.param, (byte *) &bdgraphbipartstdefaultsq.param.strat, (void *) &bgraphbipartststratab }, { BDGRAPHBIPARTSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab bdgraphbipartstcondtab[] = { /* Active graph condition parameter table */ { STRATNODECOND, STRATPARAMDOUBLE, "bal", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.bbalglbval, NULL }, { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.s.edgeglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "lmin0", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.compglbload0min, NULL }, { STRATNODECOND, STRATPARAMINT, "lmax0", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.compglbload0max, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.s.veloglbsum, NULL }, { STRATNODECOND, STRATPARAMINT, "load0", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.compglbload0, NULL }, { STRATNODECOND, STRATPARAMINT, "proc", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.s.procglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "rank", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.s.proclocnum, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &bdgraphdummy, (byte *) &bdgraphdummy.s.vertglbnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab bdgraphbipartststratab = { /* Strategy tables for graph bipartitioning methods */ bdgraphbipartstmethtab, bdgraphbipartstparatab, bdgraphbipartstcondtab }; /***********************************************/ /* */ /* This is the generic bipartitioning routine. */ /* */ /***********************************************/ /* This routine performs the bipartitioning of ** the given active graph according to the ** given strategy. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bdgraphBipartSt ( Bdgraph * restrict const grafptr, /*+ Active graph to bipartition +*/ const Strat * restrict const strat) /*+ Bipartitioning strategy +*/ { StratTest val; /* Result of condition evaluation */ BdgraphStore savetab[2]; /* Results of the two strategies */ int o; int o2; #ifdef SCOTCH_DEBUG_BDGRAPH2 MPI_Comm proccommold; /*Save area for old communicator */ #endif /* SCOTCH_DEBUG_BDGRAPH2 */ #ifdef SCOTCH_DEBUG_BDGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("bdgraphBipartSt: invalid type specification for parser variables"); return (1); } if (/*(sizeof (BdgraphBipartFmParam) > sizeof (StratNodeMethodData)) || (sizeof (BdgraphBipartGgParam) > sizeof (StratNodeMethodData)) ||*/ (sizeof (BdgraphBipartMlParam) > sizeof (StratNodeMethodData))) { errorPrint ("bdgraphBipartSt: invalid type specification"); return (1); } /* TODO REMOVE */ #endif /* SCOTCH_DEBUG_BDGRAPH2 */ #ifdef SCOTCH_DEBUG_BDGRAPH1 if ((strat->tabl != &bdgraphbipartststratab) && (strat != &stratdummy)) { errorPrint ("bdgraphBipartSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = bdgraphBipartSt (grafptr, strat->data.concat.strat[0]); /* Apply the first strategy */ if (o == 0) /* If it worked all right */ o |= bdgraphBipartSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("bdgraphBipartSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = bdgraphBipartSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = bdgraphBipartSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : if (((bdgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((bdgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("bdgraphBipartSt: out of memory"); bdgraphStoreExit (&savetab[0]); return (1); } bdgraphStoreSave (grafptr, &savetab[1]); /* Save initial bipartition */ o = bdgraphBipartSt (grafptr, strat->data.select.strat[0]); /* Apply first strategy */ bdgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ bdgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial bipartition */ o2 = bdgraphBipartSt (grafptr, strat->data.select.strat[1]); /* Apply second strategy */ if ((o == 0) || (o2 == 0)) { /* If at least one method did bipartition */ Gnum compglbload0; int b0; int b1; compglbload0 = grafptr->compglbload0avg + savetab[0].compglbload0dlt; b0 = ((compglbload0 < grafptr->compglbload0min) || (compglbload0 > grafptr->compglbload0max)) ? 1 : o; compglbload0 = grafptr->compglbload0avg + savetab[1].compglbload0dlt; b1 = ((compglbload0 < grafptr->compglbload0min) || (compglbload0 > grafptr->compglbload0max)) ? 1 : o2; do { /* Do we want to restore partition 0 ? */ if (b0 > b1) break; if (b0 == b1) { /* If both are valid or invalid */ if (b0 == 0) { /* If both are valid */ if ( (savetab[0].commglbload > grafptr->commglbload) || /* Compare on cut */ ((savetab[0].commglbload == grafptr->commglbload) && (abs (savetab[0].compglbload0dlt) > abs (grafptr->compglbload0dlt)))) break; } else { /* If both are invalid */ if ( (abs (savetab[0].compglbload0dlt) > abs (grafptr->compglbload0dlt)) || /* Compare on imbalance */ ((abs (savetab[0].compglbload0dlt) == abs (grafptr->compglbload0dlt)) && (savetab[0].commglbload > grafptr->commglbload))) break; } } bdgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ } while (0); } if (o2 < o) /* o = min(o,o2): if one biparts, then bipart */ o = o2; /* Else if one stops, then stop, else error */ bdgraphStoreExit (&savetab[0]); /* Free both save areas */ bdgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_BDGRAPH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_BDGRAPH1 */ default : #endif /* SCOTCH_DEBUG_BDGRAPH1 */ #ifdef SCOTCH_DEBUG_BDGRAPH2 proccommold = grafptr->s.proccomm; /* Create new communicator to isolate method communications */ MPI_Comm_dup (proccommold, &grafptr->s.proccomm); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ o = (strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_BDGRAPH2 MPI_Comm_free (&grafptr->s.proccomm); /* Restore old communicator */ grafptr->s.proccomm = proccommold; #endif /* SCOTCH_DEBUG_BDGRAPH2 */ #ifdef SCOTCH_DEBUG_BDGRAPH1 break; default : errorPrint ("bdgraphBipartSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_BDGRAPH1 */ } return (o); } scotch_6.0.9/src/libscotch/library_dgraph_order.c0000644000302600021200000003030213560013261022341 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted graph ordering routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 25 apr 2006 **/ /** to 11 nov 2008 **/ /** # Version 5.1 : from : 29 mar 2010 **/ /** to 14 aug 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "dgraph.h" #include "dorder.h" #include "hdgraph.h" #include "hdgraph_order_st.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed graph ordering */ /* routines. */ /* */ /************************************/ /*+ This routine initializes an API ordering *** with respect to the given source graph *** and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderInit ( const SCOTCH_Dgraph * const grafptr, /*+ Distributed graph to order +*/ SCOTCH_Dordering * const ordeptr) /*+ Ordering structure to initialize +*/ { Dgraph * srcgrafptr; Dorder * srcordeptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dordering) < sizeof (Dorder)) { errorPrint (STRINGIFY (SCOTCH_graphDorderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ srcgrafptr = (Dgraph *) grafptr; /* Use structure as source graph */ srcordeptr = (Dorder *) ordeptr; return (dorderInit (srcordeptr, srcgrafptr->baseval, srcgrafptr->vertglbnbr, srcgrafptr->proccomm)); } /*+ This routine frees an API ordering. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphOrderExit ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Dordering * const ordeptr) { dorderExit ((Dorder *) ordeptr); } /*+ This routine saves the contents of *** the given ordering to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderSave ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Ordering to save +*/ FILE * const stream) /*+ Output stream +*/ { return (dorderSave ((Dorder *) ordeptr, (Dgraph *) grafptr, stream)); } /*+ This routine computes an ordering *** of the API ordering structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderCompute ( SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ SCOTCH_Dordering * const ordeptr, /*+ Ordering to compute +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { return (SCOTCH_dgraphOrderComputeList (grafptr, ordeptr, 0, NULL, stratptr)); } /*+ This routine computes a partial ordering *** of the listed vertices of the API ordering *** structure graph with respect to the given *** strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderComputeList ( SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ SCOTCH_Dordering * const ordeptr, /*+ Ordering to compute +*/ const SCOTCH_Num listnbr, /*+ Number of vertices in list +*/ const SCOTCH_Num * const listtab, /*+ List of vertex indices to order +*/ SCOTCH_Strat * const stratptr) /*+ Ordering strategy +*/ { Dorder * srcordeptr; /* Pointer to ordering */ DorderCblk * srccblkptr; /* Initial column block */ Dgraph * restrict srcgrafptr; /* Pointer to scotch graph */ Hdgraph srcgrafdat; /* Halo source graph structure */ Gnum srclistnbr; /* Number of items in list */ Gnum * restrict srclisttab; /* Subgraph vertex list */ const Strat * ordstratptr; /* Pointer to ordering strategy */ srcgrafptr = (Dgraph *) grafptr; #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (srcgrafptr) != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (*((Strat **) stratptr) == NULL) /* Set default ordering strategy if necessary */ SCOTCH_stratDgraphOrderBuild (stratptr, SCOTCH_STRATQUALITY, srcgrafptr->procglbnbr, 0, 0.2); ordstratptr = *((Strat **) stratptr); if (ordstratptr->tabl != &hdgraphorderststratab) { errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": not a distributed ordering strategy"); return (1); } srcgrafdat.s = *srcgrafptr; /* Copy non-halo graph data */ srcgrafdat.s.edloloctax = NULL; /* Never mind about edge loads */ srcgrafdat.s.vlblloctax = NULL; /* Do not propagate vertex labels */ srcgrafdat.vhallocnbr = 0; /* No halo on graph */ srcgrafdat.vhndloctax = srcgrafdat.s.vendloctax; srcgrafdat.ehallocnbr = 0; srcgrafdat.levlnum = 0; srcordeptr = (Dorder *) ordeptr; /* Get ordering */ srclistnbr = (Gnum) listnbr; /* Build vertex list */ srclisttab = (Gnum *) listtab; intRandInit (); /* Check that random number generator is initialized */ /* TODO: Take list into account */ dorderFree (srcordeptr); /* Clean all existing ordering data */ if ((srccblkptr = dorderFrst (srcordeptr)) == NULL) { errorPrint (STRINGIFY (SCOTCH_dgraphOrderComputeList) ": cannot create root column block"); return (1); } hdgraphOrderSt (&srcgrafdat, srccblkptr, ordstratptr); dorderDispose (srccblkptr); srcgrafptr->flagval |= srcgrafdat.s.flagval & (DGRAPHFREEEDGEGST | DGRAPHHASEDGEGST); srcgrafptr->edgegsttax = srcgrafdat.s.edgegsttax; /* Get edge ghost array from working graph if it gained one */ *srcgrafptr = srcgrafdat.s; /* Get back Dgraph structure, possibly updated (additional ghost data arrays) */ return (0); } /*+ This routine parses the given *** distributed graph ordering strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratDgraphOrder ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&hdgraphorderststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratDgraphOrder) ": error in ordering strategy"); return (1); } return (0); } /*+ This routine provides predefined *** ordering strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratDgraphOrderBuild ( SCOTCH_Strat * const stratptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num procnbr, /*+ Number of processes for running +*/ const SCOTCH_Num levlnbr, /*+ Number of nested dissection levels +*/ const double balrat) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[32]; char levltab[32]; char verttab[32]; Gnum vertnbr; char * tstpptr; char * tstsptr; char * oleaptr; char * osepptr; vertnbr = MAX (2000 * procnbr, 10000); vertnbr = MIN (vertnbr, 1000000); sprintf (bbaltab, "%lf", balrat); sprintf (levltab, GNUMSTRING, levlnbr); sprintf (verttab, GNUMSTRING, vertnbr); strcpy (bufftab, "n{sep=/()?m{vert=,asc=b{width=3,strat=q{strat=f}},low=q{strat=h},seq=q{strat=m{vert=120,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=h{pass=10}f{bal=}}}}};,ole=q{strat=n{sep=/()?m{vert=120,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=h{pass=10}f{bal=}}};,ole=,ose=}},ose=s,osq=n{sep=/()?m{vert=120,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=h{pass=10}f{bal=}}};,ole=,ose=}}"); switch (flagval & (SCOTCH_STRATLEVELMIN | SCOTCH_STRATLEVELMAX)) { case SCOTCH_STRATLEVELMIN : tstpptr = "0=0"; tstsptr = "(levl<)|(vert>240)"; break; case SCOTCH_STRATLEVELMAX : tstpptr = "(levl<)"; tstsptr = "(levl<)&(vert>240)"; break; case (SCOTCH_STRATLEVELMIN | SCOTCH_STRATLEVELMAX) : tstpptr = tstsptr = "levl<"; oleaptr = "s"; /* Simple ordering for leaves */ break; default : tstpptr = "0=0"; tstsptr = "vert>240"; break; } oleaptr = ((flagval & SCOTCH_STRATLEAFSIMPLE) != 0) ? "s" : "f{cmin=15,cmax=100000,frat=0.0}"; osepptr = ((flagval & SCOTCH_STRATSEPASIMPLE) != 0) ? "s" : "g"; stringSubst (bufftab, "", tstpptr); stringSubst (bufftab, "", tstsptr); stringSubst (bufftab, "", levltab); stringSubst (bufftab, "", oleaptr); stringSubst (bufftab, "", osepptr); stringSubst (bufftab, "", bbaltab); stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphOrder (stratptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratDgraphOrderBuild) ": error in parallel ordering strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/graph_match.h0000644000302600021200000001073313470115365020455 0ustar pelegrinpelegrin/* Copyright 2012,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_match.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the centralized source graph **/ /** matching routines. **/ /** **/ /** DATES : # Version 6.0 : from : 02 oct 2012 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #if (defined SCOTCH_PTHREAD) && (defined GRAPHCOARSENTHREAD) #define GRAPHMATCHTHREAD #endif /* (defined SCOTCH_PTHREAD) && (defined GRAPHCOARSENTHREAD) */ /** Prime number for cache-friendly perturbations. **/ #define GRAPHMATCHSCANPERTPRIME 179 /* Prime number */ /** Function block building macro. **/ #define GRAPHMATCHFUNCBLOCK(t) graphMatch##t##NfNvNe, \ graphMatch##t##NfNvEl, \ graphMatch##t##NfVlNe, \ graphMatch##t##NfVlEl, \ graphMatch##t##FxNvNe, \ graphMatch##t##FxNvEl, \ graphMatch##t##FxVlNe, \ graphMatch##t##FxVlEl #define GRAPHMATCHFUNCDECL(t) static void graphMatch##t##NfNvNe (GraphCoarsenThread *); \ static void graphMatch##t##NfNvEl (GraphCoarsenThread *); \ static void graphMatch##t##NfVlNe (GraphCoarsenThread *); \ static void graphMatch##t##NfVlEl (GraphCoarsenThread *); \ static void graphMatch##t##FxNvNe (GraphCoarsenThread *); \ static void graphMatch##t##FxNvEl (GraphCoarsenThread *); \ static void graphMatch##t##FxVlNe (GraphCoarsenThread *); \ static void graphMatch##t##FxVlEl (GraphCoarsenThread *); /* ** The function prototypes. */ #ifdef GRAPH_MATCH GRAPHMATCHFUNCDECL (Seq); GRAPHMATCHFUNCDECL (ThrBeg); GRAPHMATCHFUNCDECL (ThrMid); GRAPHMATCHFUNCDECL (ThrEnd); #endif /* GRAPH_MATCH */ void graphMatchNone (GraphCoarsenData *); int graphMatchInit (GraphCoarsenData *); void graphMatch (GraphCoarsenThread * restrict const); scotch_6.0.9/src/libscotch/dgraph_gather_all.c0000644000302600021200000005534113560005435021622 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_gather_all.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized graph on all **/ /** processes by gathering the pieces of **/ /** a distributed graph. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 17 jun 2008 **/ /** # Version 5.1 : from : 30 jul 2010 **/ /** to 30 jul 2010 **/ /** # Version 6.0 : from : 27 nov 2012 **/ /** to 27 nov 2012 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ /** the receive array should not be **/ /** written more than once. Great care **/ /** should be taken to enforce this rule, **/ /** especially when the number of **/ /** vertices in the centralized graph is **/ /** smaller than the number of **/ /** processes. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH #include "module.h" #include "common.h" #include "comm.h" #include "graph.h" #include "dgraph.h" /* This function gathers on all processes ** the pieces of a distributed graph to ** build a centralized graph. This function ** does not compute edlosum on the centralized ** graphs when it is already given in the passed ** value, as a non-negative number. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ static int dgraphGatherAll3 ( Gnum * const senddattab, const Gnum sendcntnbr, Gnum * const recvdattab, Gnum * const recvcnttab, Gnum * const recvdsptab, const int rootnum, MPI_Comm comm) { if (rootnum == -1) /* If collective communication wanted */ return (commAllgatherv (senddattab, sendcntnbr, GNUM_MPI, recvdattab, recvcnttab, recvdsptab, GNUM_MPI, comm)); else return (commGatherv (senddattab, sendcntnbr, GNUM_MPI, recvdattab, recvcnttab, recvdsptab, GNUM_MPI, rootnum, comm)); } int dgraphGatherAll2 ( const Dgraph * restrict const dgrfptr, /* Distributed graph */ Graph * restrict cgrfptr, /* Centralized graph */ const Gnum edlosum, /* -1 means recompute */ const int protnum) /* -1 means allgather */ { Gnum baseval; Gnum * restrict verttax; /* Target vertex array for root, dummy for non-roots */ Gnum * restrict velotax; /* Target vertex load array for root, dummy for non-roots */ Gnum * restrict vnumtax; /* Target vertex index array for root, dummy for non-roots */ Gnum * restrict vlbltax; /* Target vertex label array for root, dummy for non-roots */ Gnum * restrict edgetax; /* Target edge array for root, dummy for non-roots */ Gnum * restrict edlotax; /* Target edge load array for root, dummy for non-roots */ Gnum vertlocnbr; /* Size of temporary distributed vertex array */ Gnum * restrict vertloctax; /* Temporary vertex array if graph is not compact */ Gnum edgelocnbr; /* Size of temporary distributed edge array */ Gnum * restrict edgeloctab; /* Temporary edge array if distributed graph is not compact */ Gnum * restrict recvcnttab; /* Count array for gather operations */ Gnum * restrict recvdsptab; /* Displacement array for gather operations */ int cheklocval; int chekglbval; const Gnum * restrict const edgeloctax = dgrfptr->edgeloctax; #ifdef SCOTCH_DEBUG_DGRAPH1 cheklocval = 0; if (cgrfptr != NULL) /* Centralized graphs should be provided by all */ cheklocval = 1; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_SUM, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (1)"); return (1); } if (protnum == -1) { /* If collective gathering wanted */ if (chekglbval != dgrfptr->procglbnbr) { errorPrint ("dgraphGatherAll2: centralized graphs should be provided on every process"); return (1); } } else { /* Single gathering wanted */ if (chekglbval != 1) { errorPrint ("dgraphGatherAll2: should have only one root"); return (1); } } #endif /* SCOTCH_DEBUG_DGRAPH1 */ baseval = dgrfptr->baseval; cheklocval = 0; if (cgrfptr != NULL) { /* If root process */ Gnum velonbr; Gnum vnumnbr; Gnum vlblnbr; Gnum edlonbr; velonbr = (dgrfptr->veloloctax != NULL) ? dgrfptr->vertglbnbr : 0; vnumnbr = (dgrfptr->vnumloctax != NULL) ? dgrfptr->vertglbnbr : 0; vlblnbr = (dgrfptr->vlblloctax != NULL) ? dgrfptr->vertglbnbr : 0; edlonbr = (dgrfptr->edloloctax != NULL) ? dgrfptr->edgeglbnbr : 0; if (memAllocGroup ((void **) (void *) &cgrfptr->verttax, (size_t) ((dgrfptr->vertglbnbr + 1) * sizeof (Gnum)), &cgrfptr->velotax, (size_t) (velonbr * sizeof (Gnum)), &cgrfptr->vnumtax, (size_t) (vnumnbr * sizeof (Gnum)), &cgrfptr->vlbltax, (size_t) (vlblnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphGatherAll2: out of memory (1)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) &cgrfptr->edgetax, (size_t) (dgrfptr->edgeglbnbr * sizeof (Gnum)), &cgrfptr->edlotax, (size_t) (edlonbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphGatherAll2: out of memory (2)"); cheklocval = 1; } } if (dgrfptr->vendloctax == (dgrfptr->vertloctax + 1)) { /* If distributed graph is compact */ vertlocnbr = /* No need to recompact arrays */ edgelocnbr = 0; } else { /* Need extra space to compact vertex and edge arrays before sending */ vertlocnbr = dgrfptr->vertlocnbr; edgelocnbr = dgrfptr->edgelocnbr; } if (cheklocval == 0) { if (memAllocGroup ((void **) (void *) &recvcnttab, (size_t) (dgrfptr->procglbnbr * sizeof (Gnum)), /* Allocated for non-roots too but don't care as these are very small */ &recvdsptab, (size_t) (dgrfptr->procglbnbr * sizeof (Gnum)), &vertloctax, (size_t) (vertlocnbr * sizeof (Gnum)), &edgeloctab, (size_t) (edgelocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphGatherAll2: out of memory (3)"); cheklocval = 1; } } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (2)"); return (1); } #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) { if (recvcnttab != NULL) memFree (recvcnttab); if (cgrfptr->verttax != NULL) { if (cgrfptr->edgetax != NULL) memFree (cgrfptr->edgetax); /* Arrays are not based yet */ memFree (cgrfptr->verttax); } return (1); } if (cgrfptr != NULL) { verttax = cgrfptr->verttax - baseval; velotax = (dgrfptr->veloloctax != NULL) ? (cgrfptr->velotax - baseval) : NULL; vnumtax = (dgrfptr->vnumloctax != NULL) ? (cgrfptr->vnumtax - baseval) : NULL; vlbltax = (dgrfptr->vlblloctax != NULL) ? (cgrfptr->vlbltax - baseval) : NULL; edgetax = cgrfptr->edgetax - baseval; edlotax = (dgrfptr->edloloctax != NULL) ? (cgrfptr->edlotax - baseval) : NULL; cgrfptr->flagval = GRAPHFREEVERT | GRAPHVERTGROUP | GRAPHFREEEDGE | GRAPHEDGEGROUP; /* Other arrays are grouped, too */ cgrfptr->baseval = baseval; cgrfptr->vertnbr = dgrfptr->vertglbnbr; cgrfptr->vertnnd = dgrfptr->vertglbnbr + baseval; cgrfptr->verttax = verttax; cgrfptr->vendtax = verttax + 1; /* Compact edge array */ cgrfptr->velotax = velotax; cgrfptr->velosum = dgrfptr->veloglbsum; cgrfptr->vnumtax = vnumtax; cgrfptr->vlbltax = vlbltax; cgrfptr->edgenbr = dgrfptr->edgeglbnbr; cgrfptr->edgetax = edgetax; cgrfptr->edlotax = edlotax; cgrfptr->edlosum = edlosum; cgrfptr->degrmax = dgrfptr->degrglbmax; cgrfptr->procptr = NULL; /* This field exists only when compiled with SCOTCH_PTSCOTCH */ } #ifdef SCOTCH_DEBUG_DGRAPH2 /* Prevent Valgrind from yelling */ else { /* Process is not root */ verttax = velotax = vlbltax = edgetax = edlotax = NULL; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (dgrfptr->vendloctax == (dgrfptr->vertloctax + 1)) { /* If distributed graph is compact */ if (dgraphGatherAll3 (dgrfptr->vertloctax + baseval + 1, dgrfptr->vertlocnbr, /* Do not send first index, it is always equal to baseval */ verttax + 1, /* First index will always be equal to baseval too, and procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (3)"); return (1); } if (cgrfptr != NULL) { Gnum procnum; verttax[baseval] = baseval; for (procnum = 1; procnum < dgrfptr->procglbnbr; procnum ++) { /* Adjust index sub-arrays for all processes except the first one */ Gnum vertnum; Gnum vertnnd; Gnum edgedlt; for (vertnum = dgrfptr->procdsptab[procnum] + 1, vertnnd = dgrfptr->proccnttab[procnum] + vertnum, edgedlt = verttax[vertnum - 1] - baseval; vertnum < vertnnd; vertnum ++) verttax[vertnum] += edgedlt; } } } else { /* Distributed graph is not compact */ Gnum vertlocnum; Gnum * restrict edgelocptr; vertloctax -= baseval; /* Base temporary vertex array */ for (vertlocnum = baseval, edgelocptr = edgeloctab; /* Build vertex send array */ vertlocnum < dgrfptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; vertloctax[vertlocnum] = dgrfptr->vendloctax[vertlocnum] - dgrfptr->vertloctax[vertlocnum]; /* Get edge counts */ for (edgelocnum = dgrfptr->vertloctax[vertlocnum]; edgelocnum < dgrfptr->vendloctax[vertlocnum]; edgelocnum ++) *edgelocptr ++ = edgeloctax[edgelocnum]; } if (dgraphGatherAll3 (vertloctax + baseval, dgrfptr->vertlocnbr, verttax + 1, /* First index will always be equal to baseval, and procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (4)"); return (1); } if (cgrfptr != NULL) { Gnum vertnum; Gnum edgenum; verttax[baseval] = baseval; for (vertnum = baseval + 1, edgenum = baseval; /* Create compact centralized vertex array */ vertnum <= cgrfptr->vertnnd; vertnum ++) { edgenum += verttax[vertnum]; verttax[vertnum] = edgenum; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (verttax[cgrfptr->vertnnd] != (cgrfptr->edgenbr + baseval)) { errorPrint ("dgraphGatherAll2: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } } if (dgrfptr->veloloctax != NULL) { if (dgraphGatherAll3 (dgrfptr->veloloctax + baseval, dgrfptr->vertlocnbr, velotax, /* Based array since procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (5)"); return (1); } } if (dgrfptr->vnumloctax != NULL) { if (dgraphGatherAll3 (dgrfptr->vnumloctax + baseval, dgrfptr->vertlocnbr, vnumtax, /* Based array since procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (6)"); return (1); } } if (dgrfptr->vlblloctax != NULL) { if (dgraphGatherAll3 (dgrfptr->vlblloctax + baseval, dgrfptr->vertlocnbr, vlbltax, /* Based array since procdsptab holds based values */ dgrfptr->proccnttab, dgrfptr->procdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (7)"); return (1); } } if (cgrfptr != NULL) { Gnum procnum; Gnum edgenum; for (procnum = 0, edgenum = baseval; /* Build arrays for MPI_Gatherv on edge arrays */ procnum < dgrfptr->procglbnbr; procnum ++) { recvcnttab[procnum] = verttax[dgrfptr->procdsptab[procnum] + dgrfptr->proccnttab[procnum]] - verttax[dgrfptr->procdsptab[procnum]]; /* verttax used twice since centralized graph is compact */ recvdsptab[procnum] = edgenum; edgenum += recvcnttab[procnum]; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((recvdsptab[dgrfptr->procglbnbr - 1] + recvcnttab[dgrfptr->procglbnbr - 1]) != (cgrfptr->edgenbr + baseval)) { errorPrint ("dgraphGatherAll2: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } if (dgrfptr->vendloctax == (dgrfptr->vertloctax + 1)) { /* If distributed graph is compact */ if (dgraphGatherAll3 (dgrfptr->edgeloctax + baseval, dgrfptr->edgelocnbr, /* Send global indices */ edgetax, /* Based array as recvdsptab holds based values */ recvcnttab, recvdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (8)"); return (1); } if (dgrfptr->edloloctax != NULL) { if (dgraphGatherAll3 (dgrfptr->edloloctax + baseval, dgrfptr->edgelocnbr, edlotax, /* Based array as recvdsptab holds based values */ recvcnttab, recvdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (9)"); return (1); } } } else { /* Distributed graph is not compact */ if (dgraphGatherAll3 (edgeloctab, dgrfptr->edgelocnbr, edgetax, /* Based array as recvdsptab holds based values */ recvcnttab, recvdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (10)"); return (1); } if (dgrfptr->edloloctax != NULL) { Gnum vertlocnum; Gnum * restrict edlolocptr; for (vertlocnum = baseval, edlolocptr = edgeloctab; /* Recycle edge send array to build edge load send array */ vertlocnum < dgrfptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = dgrfptr->vertloctax[vertlocnum]; edgelocnum < dgrfptr->vendloctax[vertlocnum]; edgelocnum ++) *edlolocptr ++ = dgrfptr->edloloctax[edgelocnum]; } if (dgraphGatherAll3 (edgeloctab, dgrfptr->edgelocnbr, /* Send compacted edge load array */ edlotax, /* Based array as recvdsptab holds based values */ recvcnttab, recvdsptab, protnum, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (11)"); return (1); } } } if (cgrfptr != NULL) { if ((dgrfptr->procdsptab[dgrfptr->procglbnbr] != /* If graph has holes, relabel end vertices */ dgrfptr->procvrttab[dgrfptr->procglbnbr])) { Gnum procnum; for (procnum = 0; procnum < dgrfptr->procglbnbr; procnum ++) { /* Accelerate search per sender process */ Gnum vertlocmin; Gnum vertlocmax; Gnum vertlocadj; Gnum edgelocnum; Gnum edgelocnnd; vertlocmin = dgrfptr->procvrttab[procnum]; /* Initialize search accelerator */ vertlocmax = dgrfptr->procvrttab[procnum + 1]; vertlocadj = dgrfptr->procdsptab[procnum] - vertlocmin; for (edgelocnum = recvdsptab[procnum], edgelocnnd = edgelocnum + recvcnttab[procnum]; edgelocnum < edgelocnnd; edgelocnum ++) { Gnum vertlocend; vertlocend = cgrfptr->edgetax[edgelocnum]; if ((vertlocend >= vertlocmin) && /* If end vertex is local with respect to current process */ (vertlocend < vertlocmax)) cgrfptr->edgetax[edgelocnum] = vertlocend + vertlocadj; else { /* End vertex is not local */ int procngbmin; int procngbmax; for (procngbmin = 0, procngbmax = dgrfptr->procglbnbr; procngbmax - procngbmin > 1; ) { int procngbnum; procngbnum = (procngbmax + procngbmin) / 2; if (dgrfptr->procvrttab[procngbnum] <= vertlocend) procngbmin = procngbnum; else procngbmax = procngbnum; } cgrfptr->edgetax[edgelocnum] = vertlocend + dgrfptr->procdsptab[procngbmin] - dgrfptr->procvrttab[procngbmin]; } } } } if (cgrfptr->edlotax == NULL) /* If no edge loads */ cgrfptr->edlosum = cgrfptr->edgenbr; /* Edge load sum is trivial */ else { if (edlosum >= 0) /* If edge load sum already computed by library call */ cgrfptr->edlosum = edlosum; else { /* Compute it from scratch on every root process (small graph assumed) */ Gnum edgenum; Gnum edgennd; Gnum edlotmp; for (edgenum = cgrfptr->baseval, edgennd = edgenum + cgrfptr->edgenbr, edlotmp = 0; /* Edge load array is always compact */ edgenum < edgennd; edgenum ++) edlotmp += cgrfptr->edlotax[edgenum]; cgrfptr->edlosum = edlotmp; } } } memFree (recvcnttab); #ifdef SCOTCH_DEBUG_DGRAPH2 cheklocval = (cgrfptr != NULL) ? graphCheck (cgrfptr) : 0; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphGatherAll2: communication error (12)"); return (1); } if (chekglbval != 0) { errorPrint ("dgraphGatherAll2: inconsistent centralized graph data"); if (cgrfptr != NULL) graphFree (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } /* This function gathers on all processes ** the pieces of a distributed graph to ** build a centralized graph. ** Since the resulting centralized graphs are ** supposed to be small in the general case, ** edlosum is computed without communication ** on each of the processors. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int dgraphGatherAll ( const Dgraph * restrict const dgrfptr, /* Distributed graph */ Graph * restrict cgrfptr) /* Centralized graph */ { return (dgraphGatherAll2 (dgrfptr, cgrfptr, -1, -1)); } scotch_6.0.9/src/libscotch/library_pt_f.h0000644000302600021200000001257313303015264020650 0ustar pelegrinpelegrin!* Copyright 2004,2007,2009,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS !* !* This file is part of the Scotch software package for static mapping, !* graph partitioning and sparse matrix ordering. !* !* This software is governed by the CeCILL-C license under French law !* and abiding by the rules of distribution of free software. You can !* use, modify and/or redistribute the software under the terms of the !* CeCILL-C license as circulated by CEA, CNRS and INRIA at the following !* URL: "http://www.cecill.info". !* !* As a counterpart to the access to the source code and rights to copy, !* modify and redistribute granted by the license, users are provided !* only with a limited warranty and the software's author, the holder of !* the economic rights, and the successive licensors have only limited !* liability. !* !* In this respect, the user's attention is drawn to the risks associated !* with loading, using, modifying and/or developing or reproducing the !* software by the user in light of its specific status of free software, !* that may mean that it is complicated to manipulate, and that also !* therefore means that it is reserved for developers and experienced !* professionals having in-depth computer knowledge. Users are therefore !* encouraged to load and test the software's suitability as regards !* their requirements in conditions enabling the security of their !* systems and/or data to be ensured and, more generally, to use and !* operate it in the same conditions as regards security. !* !* The fact that you are presently reading this means that you have had !* knowledge of the CeCILL-C license and that you accept its terms. !* !*********************************************************** !* ** !* NAME : library_pt_f.h ** !* ** !* AUTHOR : Francois PELLEGRINI ** !* ** !* FUNCTION : FORTRAN declaration file for the ** !* LibPtscotch parallel static mapping and ** !* sparse matrix block ordering sequential ** !* library. ** !* ** !* DATES : # Version 3.4 : from : 04 feb 2000 ** !* to 22 oct 2001 ** !* # Version 4.0 : from : 16 jan 2004 ** !* to 16 jan 2004 ** !* # Version 5.0 : from : 26 apr 2006 ** !* to 26 apr 2006 ** !* # Version 5.1 : from : 26 mar 2009 ** !* to 12 feb 2011 ** !* # Version 6.0 : from : 22 oct 2011 ** !* to 27 nov 2012 ** !* ** !*********************************************************** !* Flag definitions for the coarsening !* routines. INTEGER SCOTCH_COARSENNOMERGE PARAMETER (SCOTCH_COARSENNOMERGE = 16384) !* Flag definitions for the strategy !* string selection routines. INTEGER SCOTCH_STRATDEFAULT INTEGER SCOTCH_STRATQUALITY INTEGER SCOTCH_STRATSPEED INTEGER SCOTCH_STRATBALANCE INTEGER SCOTCH_STRATSAFETY INTEGER SCOTCH_STRATSCALABILITY INTEGER SCOTCH_STRATRECURSIVE INTEGER SCOTCH_STRATREMAP INTEGER SCOTCH_STRATLEVELMAX INTEGER SCOTCH_STRATLEVELMIN INTEGER SCOTCH_STRATLEAFSIMPLE INTEGER SCOTCH_STRATSEPASIMPLE PARAMETER (SCOTCH_STRATDEFAULT = 0) PARAMETER (SCOTCH_STRATQUALITY = 1) PARAMETER (SCOTCH_STRATSPEED = 2) PARAMETER (SCOTCH_STRATBALANCE = 4) PARAMETER (SCOTCH_STRATSAFETY = 8) PARAMETER (SCOTCH_STRATSCALABILITY = 16) PARAMETER (SCOTCH_STRATRECURSIVE = 256) PARAMETER (SCOTCH_STRATREMAP = 512) PARAMETER (SCOTCH_STRATLEVELMAX = 4096) PARAMETER (SCOTCH_STRATLEVELMIN = 8192) PARAMETER (SCOTCH_STRATLEAFSIMPLE = 16384) PARAMETER (SCOTCH_STRATSEPASIMPLE = 32768) !* Size definitions for the SCOTCH opaque !* structures. These structures must be !* allocated as arrays of DOUBLEPRECISION !* values for proper padding. The dummy !* sizes are computed at compile-time by !* program "dummysizes". INTEGER SCOTCH_ARCHDIM INTEGER SCOTCH_DGRAPHDIM INTEGER SCOTCH_DGRAPHHALOREQDIM INTEGER SCOTCH_DORDERDIM INTEGER SCOTCH_GEOMDIM INTEGER SCOTCH_GRAPHDIM INTEGER SCOTCH_MAPDIM INTEGER SCOTCH_MESHDIM INTEGER SCOTCH_ORDERDIM INTEGER SCOTCH_STRATDIM PARAMETER (SCOTCH_ARCHDIM = DUMMYSIZEARCH) PARAMETER (SCOTCH_DGRAPHDIM = DUMMYSIZEDGRAPH) PARAMETER (SCOTCH_DGRAPHHALOREQDIM = DUMMYSIZEDGRAPHHALOREQ) PARAMETER (SCOTCH_DORDERDIM = DUMMYSIZEDORDER) PARAMETER (SCOTCH_GEOMDIM = DUMMYSIZEGEOM) PARAMETER (SCOTCH_GRAPHDIM = DUMMYSIZEGRAPH) PARAMETER (SCOTCH_MAPDIM = DUMMYSIZEMAP) PARAMETER (SCOTCH_MESHDIM = DUMMYSIZEMESH) PARAMETER (SCOTCH_ORDERDIM = DUMMYSIZEORDER) PARAMETER (SCOTCH_STRATDIM = DUMMYSIZESTRAT) scotch_6.0.9/src/libscotch/dgraph_band_grow.h0000644000302600021200000000641113560005435021461 0ustar pelegrinpelegrin/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_band_grow.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file provides the prototypes of **/ /** the generic band graph growing **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 26 sep 2012 **/ /** to : 26 sep 2012 **/ /** **/ /************************************************************/ /* ** The defines. */ #define DGRAPHBANDGROWNAMECOLL REPLACE (DGRAPHBANDGROWNAMECOLL2 (REPLACE (DGRAPHBANDGROWNAME))) #define DGRAPHBANDGROWNAMECOLL2(s) GLUE (s,Coll) #define DGRAPHBANDGROWNAMEPTOP REPLACE (DGRAPHBANDGROWNAMEPTOP2 (REPLACE (DGRAPHBANDGROWNAME))) #define DGRAPHBANDGROWNAMEPTOP2(s) GLUE (s,Ptop) /* ** The function prototypes. */ int DGRAPHBANDGROWNAMECOLL (Dgraph * restrict const, const Gnum, Gnum * restrict const, const Gnum, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); int DGRAPHBANDGROWNAMEPTOP (Dgraph * restrict const, const Gnum, Gnum * restrict const, const Gnum, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const); scotch_6.0.9/src/libscotch/graph_io_scot.c0000644000302600021200000003043013303015264020777 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_scot.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the I/O routines **/ /** for handling the Scotch graph format. **/ /** **/ /** DATES : # Version 3.2 : from : 06 nov 1997 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 13 dec 1998 **/ /** to 21 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 22 dec 2005 **/ /** # Version 5.0 : from : 13 sep 2006 **/ /** to 27 feb 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_IO_SCOT #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "graph_io_scot.h" /* This routine loads the geometrical graph ** in the Scotch graph format, and allocates ** the proper structures. ** - 0 : on success. ** - !0 : on error. */ int graphGeomLoadScot ( Graph * restrict const grafptr, /* Graph to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { void * coorfileptr; /* Temporary pointer to comply with C99 rules */ double * restrict coorfiletab; /* Pointer to geometric data read from file */ GraphGeomScotSort * restrict coorsorttab; /* Pointer to geometric data sorting array */ int coorsortflag; /* Flag set if geometric data sorted by label */ Gnum coornbr; /* Number of geometric coordinates in file */ Gnum coornum; /* Number of current coordinate */ GraphGeomScotSort * restrict vertsorttab; /* Pointer to graph sorting array */ int vertsortflag; /* Flag set if graph data sorted by label */ Gnum vertnum; /* Current graph vertex */ Gnum dimnnbr; /* Dimension of geometry file */ int o; if (filesrcptr != NULL) { if (graphLoad (grafptr, filesrcptr, -1, 0) != 0) return (1); } if (filegeoptr == NULL) return (0); if ((intLoad (filegeoptr, &dimnnbr) != 1) || /* Read type and number of geometry items */ (intLoad (filegeoptr, &coornbr) != 1) || (dimnnbr < 1) || (dimnnbr > 3)) { errorPrint ("graphGeomLoadScot: bad input (1)"); return (1); } if ((filesrcptr != NULL) && (grafptr->vertnbr != coornbr)) { errorPrint ("graphGeomLoadScot: inconsistent number of vertices"); return (1); } if (grafptr->vertnbr == 0) return (0); if ((geomptr->geomtab == NULL) && /* Allocate geometry if necessary */ ((geomptr->geomtab = (double *) memAlloc (grafptr->vertnbr * dimnnbr * sizeof (double))) == NULL)) { errorPrint ("graphGeomLoadScot: out of memory (1)"); return (1); } if (memAllocGroup ((void **) &coorfileptr, (size_t) (coornbr * dimnnbr * sizeof (double)), &coorsorttab, (size_t) (coornbr * sizeof (GraphGeomScotSort)), &vertsorttab, (size_t) (grafptr->vertnbr * sizeof (GraphGeomScotSort)), NULL) == NULL) { errorPrint ("graphGeomLoadScot: out of memory (2)"); return (1); } coorfiletab = coorfileptr; o = 0; coorsortflag = 1; /* Assume geometry data sorted */ for (coornum = 0; (o == 0) && (coornum < coornbr); coornum ++) { Gnum vlblnum; o = 1 - intLoad (filegeoptr, &vlblnum); coorsorttab[coornum].labl = vlblnum; coorsorttab[coornum].num = coornum; if ((coornum > 0) && /* Check if geometry data sorted */ (coorsorttab[coornum].labl < coorsorttab[coornum - 1].labl)) coorsortflag = 0; /* Geometry data not sorted */ o |= 1 - fscanf (filegeoptr, "%lf", /* Read X coordinate */ &coorfiletab[coornum * dimnnbr]); if (dimnnbr > 1) { o |= 1 - fscanf (filegeoptr, "%lf", /* Read Y coordinate */ &coorfiletab[(coornum * dimnnbr) + 1]); if (dimnnbr > 2) o |= 1 - fscanf (filegeoptr, "%lf", /* Read Z coordinate */ &coorfiletab[(coornum * dimnnbr) + 2]); } } if (o != 0) { errorPrint ("graphGeomLoadScot: bad input (2)"); memFree (coorfiletab); /* Free group leader */ return (1); } if (coorsortflag != 1) /* If geometry data not sorted */ intSort2asc1 (coorsorttab, coornbr); /* Sort sort area by ascending labels */ for (coornum = 1; coornum < coornbr; coornum ++) { /* Check geometric data integrity */ if (coorsorttab[coornum].labl == coorsorttab[coornum - 1].labl) { errorPrint ("graphGeomLoadScot: duplicate vertex label"); memFree (coorfiletab); /* Free group leader */ return (1); } } if (grafptr->vlbltax != NULL) { /* If graph has vertex labels */ vertsortflag = 1; /* Assume graph data sorted */ for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { vertsorttab[vertnum].labl = grafptr->vlbltax[vertnum + grafptr->baseval]; vertsorttab[vertnum].num = vertnum; if ((vertnum > 0) && /* Check if graph data sorted */ (vertsorttab[vertnum].labl < vertsorttab[vertnum - 1].labl)) vertsortflag = 0; /* Graph data not sorted */ } if (vertsortflag != 1) /* If graph data not sorted */ intSort2asc1 (vertsorttab, grafptr->vertnbr); /* Sort sort area by ascending labels */ } else { /* Graph does not have vertex labels */ for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) vertsorttab[vertnum].labl = vertsorttab[vertnum].num = vertnum; } for (coornum = vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { /* For all vertices in graph */ while ((coornum < coornbr) && (coorsorttab[coornum].labl < vertsorttab[vertnum].labl)) coornum ++; /* Search geometry vertex with same label */ if ((coornum >= coornbr) || (coorsorttab[coornum].labl > vertsorttab[vertnum].labl)) { /* If label does not exist */ errorPrint ("graphGeomLoadScot: vertex geometry data not found (%d)", vertsorttab[vertnum].labl); memFree (coorfiletab); /* Free group leader */ return (1); } memCpy (&geomptr->geomtab[vertsorttab[vertnum].num * dimnnbr], &coorfiletab[coorsorttab[coornum ++].num * dimnnbr], dimnnbr * sizeof (double)); } memFree (coorfiletab); /* Free group leader */ return (0); } /* This routine saves the source process graph ** in the Scotch source and geometry formats. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphGeomSaveScot ( const Graph * restrict const grafptr, /* Graph to save */ const Geom * restrict const geomptr, /* Geometry to save */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { Gnum vertnum; int dimnnbr; int o; if (filesrcptr != NULL) { if (graphSave (grafptr, filesrcptr) != 0) /* Save graph structural data */ return (1); } dimnnbr = geomptr->dimnnbr; o = 0; if (geomptr->geomtab != NULL) { /* If geometrical data present */ o = (fprintf (filegeoptr, GNUMSTRING "\n" GNUMSTRING "\n", /* Output file header */ (Gnum) geomptr->dimnnbr, (Gnum) grafptr->vertnbr) == EOF); switch (dimnnbr) { /* Output geometry data */ case 1 : for (vertnum = grafptr->baseval; (o == 0) && (vertnum < grafptr->vertnnd); vertnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\n", (Gnum) ((grafptr->vlbltax != NULL) ? grafptr->vlbltax[vertnum] : vertnum), (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr]) == EOF); break; case 2 : for (vertnum = grafptr->baseval; (o == 0) && (vertnum < grafptr->vertnnd); vertnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\t%lf\n", (Gnum) ((grafptr->vlbltax != NULL) ? grafptr->vlbltax[vertnum] : vertnum), (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr], (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr + 1]) == EOF); break; case 3 : for (vertnum = grafptr->baseval; (o == 0) && (vertnum < grafptr->vertnnd); vertnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\t%lf\t%lf\n", (Gnum) ((grafptr->vlbltax != NULL) ? grafptr->vlbltax[vertnum] : vertnum), (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr], (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr + 1], (double) geomptr->geomtab[(vertnum - grafptr->baseval) * dimnnbr + 2]) == EOF); break; #ifdef SCOTCH_DEBUG_GRAPH2 default : errorPrint ("graphGeomSaveScot: invalid geometry type"); return (1); #endif /* SCOTCH_DEBUG_GRAPH2 */ } if (o != 0) { errorPrint ("graphGeomSaveScot: bad output"); } } return (o); } scotch_6.0.9/src/libscotch/arch_cmplt.h0000644000302600021200000001534113560005302020301 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_cmplt.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the complete graph target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 24 jul 1995 **/ /** # Version 3.1 : from : 11 jun 1996 **/ /** to 11 jun 1996 **/ /** # Version 3.2 : from : 20 sep 1996 **/ /** to 13 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 19 jan 2008 **/ /** to 19 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_CMPLT_H_STRUCT #define ARCH_CMPLT_H_STRUCT /*+ The complete graph definitions. +*/ typedef struct ArchCmplt_ { Anum termnbr; /*+ Number of vertices +*/ } ArchCmplt; typedef struct ArchCmpltDom_ { Anum termmin; /*+ Minimum vertex number +*/ Anum termnbr; /*+ Number of vertices +*/ } ArchCmpltDom; typedef struct ArchCmpltMatch_ { ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Anum vertnbr; /*+ Number of vertices in fine graph +*/ Anum passnum; /*+ Pass number +*/ } ArchCmpltMatch; #endif /* ARCH_CMPLT_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_CMPLT_H_PROTO #define ARCH_CMPLT_H_PROTO int archCmpltArchLoad (ArchCmplt * restrict const, FILE * restrict const); int archCmpltArchSave (const ArchCmplt * const, FILE * restrict const); #define archCmpltArchFree NULL int archCmpltMatchInit (ArchCmpltMatch * restrict const, const ArchCmplt * restrict const); void archCmpltMatchExit (ArchCmpltMatch * restrict const); Anum archCmpltMatchMate (ArchCmpltMatch * restrict const, ArchCoarsenMulti ** restrict const); ArchDomNum archCmpltDomNum (const ArchCmplt * const, const ArchCmpltDom * const); int archCmpltDomTerm (const ArchCmplt * const, ArchCmpltDom * restrict const, const ArchDomNum); Anum archCmpltDomSize (const ArchCmplt * const, const ArchCmpltDom * const); #define archCmpltDomWght archCmpltDomSize Anum archCmpltDomDist (const ArchCmplt * const, const ArchCmpltDom * const, const ArchCmpltDom * const); int archCmpltDomFrst (const ArchCmplt * const, ArchCmpltDom * const); int archCmpltDomLoad (const ArchCmplt * const, ArchCmpltDom * const, FILE * const); int archCmpltDomSave (const ArchCmplt * const, const ArchCmpltDom * const, FILE * const); int archCmpltDomBipart (const ArchCmplt * const, const ArchCmpltDom * const, ArchCmpltDom * restrict const, ArchCmpltDom * restrict const); int archCmpltDomIncl (const ArchCmplt * const, const ArchCmpltDom * const, const ArchCmpltDom * const); #ifdef SCOTCH_PTSCOTCH int archCmpltDomMpiType (const ArchCmplt * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_CMPLT_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/library_dgraph_map_view_f.c0000644000302600021200000001053713560013261023352 0ustar pelegrinpelegrin/* Copyright 2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_map_view_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed mapping handling routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 27 jul 2008 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAPVIEW, dgraphmapview, ( \ SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Dmapping * const mapptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, mapptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if (*fileptr == -1) /* If process does not want to open a stream */ stream = NULL; else { if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPVIEW)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPVIEW)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } } o = SCOTCH_dgraphMapView (grafptr, mapptr, stream); if (stream != NULL) /* If process has an open stream */ fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/kdgraph_map_rb_map.h0000644000302600021200000000557013465315041021775 0ustar pelegrinpelegrin/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb_map.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Parallel Dual Recursive **/ /** Bipartitioning mapping algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 24 jun 2008 **/ /** to 24 jun 2008 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /* ** The function prototypes. */ int kdgraphMapRbMap (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); scotch_6.0.9/src/libscotch/dgraph_build.h0000644000302600021200000000671313560005435020623 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /**********************************************************/ /* */ /* NAME : dgraph_build.h */ /* */ /* AUTHOR : Francois PELLEGRINI */ /* Francois CHATENET (P0.0) */ /* Sebastien FOUCAULT (P0.0) */ /* Nicolas GICQUEL (P0.1) */ /* Jerome LACOSTE (P0.1) */ /* */ /* FUNCTION : Part of a parallel static mapper. */ /* These lines are the data declarations */ /* for the distributed source graph */ /* building routines. */ /* */ /* # Version P0.1 : from : 01 apr 1997 */ /* to 13 sep 2006 */ /* # Version 5.0 : from : 22 dec 2006 */ /* to 22 dec 2006 */ /* */ /**********************************************************/ /* ** The type and structure definitions. */ /* Sort structure for local vertices. First element used for intSort2asc1. */ typedef struct DgraphLablSortVert_ { Gnum vlblglbnum; /* Global vertex label: FIRST */ Gnum vertlocnum; /* Index in local vertex array */ } DgraphLablSortVert; /* Sort structure for local edges. */ typedef struct DgraphLablSortEdge_ { Gnum vlblglbnum; /* Global vertex label */ Gnum edgelocnum; /* Index of local edge */ } DgraphLablSortEdge; scotch_6.0.9/src/libscotch/kgraph_map_bd.c0000644000302600021200000003503313470115365020751 0ustar pelegrinpelegrin/* Copyright 2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_bd.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a partition of **/ /** the given k-way mapping graph by **/ /** creating a band graph of given **/ /** width around the current frontier, **/ /** computing an improved partition of the **/ /** band graph, and projecting back the **/ /** obtained frontier to the original **/ /** graph. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ /** to : 21 may 2018 **/ /** **/ /** NOTES : # Since only edges from local vertices **/ /** to local anchors are created in **/ /** kdgraphBand(), the communication cost **/ /** might be wrong if a local vertex of **/ /** the last layer is linked to a remote **/ /** vertex of different part which was **/ /** not in the band graph. Hence, commun- **/ /** ication costs have to be recomputed **/ /** from scratch. **/ /** **/ /** # This code derives from the code of **/ /** bdgraph_bipart_bd.c in version 5.1 **/ /** for direct k-way partitioning. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_BD #include "module.h" #include "common.h" #include "parser.h" #include "arch.h" #include "graph.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_map_bd.h" #include "kgraph_map_st.h" /* ** The static variables. */ /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a band graph of given ** width around the current frontier and applies ** partitioning routines to it. ** The graph is not guaranteed to be balanced ** at all. ** It returns: ** - 0 : if the band graph could be computed. ** - !0 : on error. */ int kgraphMapBd ( Kgraph * const orggrafptr, /*+ Graph +*/ const KgraphMapBdParam * const paraptr) /*+ Method parameters +*/ { Kgraph bndgrafdat; /* Partitioning band graph structure */ Gnum bndvertancnnd; /* End of local vertex array, without anchors */ Gnum bndvertnum; Gnum bndvertlvlnum; /* Based number of first band vertex in last layer */ Gnum orgfronnum; int * restrict orgflagtab; Gnum commload; Gnum commload2; /* Twice twice (4 times) the internal communication load of last layer */ Anum domnnum; Gnum * restrict bandvnumtax; /* Orignal numbers of vertices in band graph */ Gnum * vertnbrtab; Gnum vertnum; const Arch * restrict const archptr = orggrafptr->m.archptr; const Anum domnnbr = orggrafptr->m.domnnbr; Gnum * restrict const orgfrontab = orggrafptr->frontab; Gnum * restrict const orgparttax = orggrafptr->m.parttax; if (orggrafptr->fronnbr == 0) /* If no separator vertices, apply strategy to full (original) graph */ return (kgraphMapSt (orggrafptr, paraptr->stratorg)); if (kgraphBand (orggrafptr, paraptr->distmax, &bndgrafdat, &bndvertlvlnum, &bandvnumtax) != 0) { errorPrint ("kgraphMapBd: cannot create band graph"); return (1); } if ((vertnbrtab = memAlloc (domnnbr * sizeof(Gnum))) == NULL) { errorPrint ("kgraphMapBd: out of memory (1)"); return (1); } memSet (vertnbrtab, 0, domnnbr * sizeof(Gnum)); for (vertnum = orggrafptr->s.baseval; vertnum < orggrafptr->s.vertnnd; vertnum ++) vertnbrtab[orgparttax[vertnum]] ++; /* TODO check optimize? */ bndvertancnnd = bndgrafdat.s.vertnnd - domnnbr; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all anchor domains */ Gnum vertnum; vertnum = bndvertancnnd + domnnum; if (((bndgrafdat.s.verttax[vertnum + 1] - bndgrafdat.s.verttax[vertnum]) == 0) && (vertnbrtab[domnnum] != 0)) break; } memFree (vertnbrtab); if (domnnum != domnnbr) { /* If graph is too small to have any usable anchors, apply org strategy */ memFree (bandvnumtax + bndgrafdat.s.baseval); memFree (bndgrafdat.m.parttax + bndgrafdat.s.baseval); kgraphExit (&bndgrafdat); return (kgraphMapSt (orggrafptr, paraptr->stratorg)); } if (kgraphMapSt (&bndgrafdat, paraptr->stratbnd) != 0) { /* Partition band graph */ errorPrint ("kgraphMapBd: cannot partition band graph"); kgraphExit (&bndgrafdat); return (1); } if (bndgrafdat.m.domnnbr != orggrafptr->m.domnnbr) { errorPrint ("kgraphMapBd: change in band graph number of parts not supported"); kgraphExit (&bndgrafdat); return (1); } memCpy (orggrafptr->comploaddlt, bndgrafdat.comploaddlt, domnnbr * sizeof (Gnum)); /* Propagate back imbalance information */ for (bndvertnum = bndgrafdat.s.baseval; bndvertnum < bndvertancnnd; bndvertnum ++) /* Update part array of all vertices except anchors */ orgparttax[bandvnumtax[bndvertnum]] = bndgrafdat.m.parttax[bndvertnum]; commload = 0; for (bndvertnum = bndgrafdat.s.baseval; bndvertnum < bndvertlvlnum; bndvertnum ++) { /* For all vertices of band graph save for last layer */ Gnum bndedgenum; Gnum bndedgennd; Anum bndpartval; Anum bndpartlst; /* Part of last vertex for which a distance was computed */ Anum bnddistlst; /* Last distance computed */ int bndflagval; bndpartval = bndgrafdat.m.parttax[bndvertnum]; bndpartlst = -1; /* Invalid part to recompute distance */ bnddistlst = -1; /* To prevent compiler from yielding */ bndflagval = 0; for (bndedgenum = bndgrafdat.s.verttax[bndvertnum], bndedgennd = bndgrafdat.s.vendtax[bndvertnum]; bndedgenum < bndedgennd; bndedgenum ++) { Gnum bndpartend; bndpartend = bndgrafdat.m.parttax[bndgrafdat.s.edgetax[bndedgenum]]; if (bndpartval != bndpartend) { /* TODO maybe can be optimized */ Anum bnddistval; bndflagval |= 1; bnddistval = (bndpartend != bndpartlst) ? archDomDist (archptr, &bndgrafdat.m.domntab[bndpartval], &bndgrafdat.m.domntab[bndpartend]) : bnddistlst; bndpartlst = bndpartend; bnddistlst = bnddistval; commload += (Gnum) bnddistval * ((bndgrafdat.s.edlotax != NULL) ? bndgrafdat.s.edlotax[bndedgenum] : 1); } } } for ( ; bndvertnum < bndvertancnnd; bndvertnum ++) { /* For all vertices of last layer, remove communication loads to band vertices once */ Gnum bndedgenum; Gnum bndedgennd; Anum bndpartval; Anum bndpartlst; /* Part of last vertex for which a distance was computed */ Anum bnddistlst; /* Last distance computed */ int bndflagval; bndpartval = bndgrafdat.m.parttax[bndvertnum]; bndpartlst = -1; /* Invalid part to recompute distance */ bnddistlst = -1; /* To prevent compiler from yielding */ bndflagval = 0; for (bndedgenum = bndgrafdat.s.verttax[bndvertnum], bndedgennd = bndgrafdat.s.vendtax[bndvertnum] - 1; /* "-1" to avoid anchor edges */ bndedgenum < bndedgennd; bndedgenum ++) { Gnum bndpartend; bndpartend = bndgrafdat.m.parttax[bndgrafdat.s.edgetax[bndedgenum]]; if (bndpartval != bndpartend) { Anum bnddistval; bndflagval |= 1; bnddistval = (bndpartend != bndpartlst) ? archDomDist (archptr, &bndgrafdat.m.domntab[bndpartval], &bndgrafdat.m.domntab[bndpartend]) : bnddistlst; bndpartlst = bndpartend; bnddistlst = bnddistval; commload -= (Gnum) bnddistval * ((bndgrafdat.s.edlotax != NULL) ? bndgrafdat.s.edlotax[bndedgenum] : 1); /* Remove communication loads to band graph vertices once because afterwards they will be accounted for twice */ } } } if ((orgflagtab = memAlloc (kgraphMapBdFlagSize (orggrafptr->s.vertnnd) * sizeof (int))) == NULL) { errorPrint ("kgraphMapBd: out of memory (2)"); return (1); } memSet (orgflagtab, 0, kgraphMapBdFlagSize (orggrafptr->s.vertnnd) * sizeof (int)); /* Set vertices as not already considered */ orgfronnum = 0; commload2 = 0; for (bndvertnum = bndgrafdat.s.baseval; bndvertnum < bndvertancnnd; bndvertnum ++) { /* For all vertices */ Gnum orgedgenum; Gnum orgedgennd; Gnum orgvertnum; Anum orgpartval; int orgflagval; orgvertnum = bandvnumtax[bndvertnum]; orgpartval = bndgrafdat.m.parttax[bndvertnum]; orgflagval = 0; /* Assume vertex does not belong to the frontier */ for (orgedgenum = orggrafptr->s.verttax[orgvertnum], orgedgennd = orggrafptr->s.vendtax[orgvertnum]; orgedgenum < orgedgennd; orgedgenum ++) { Gnum orgvertend; Gnum orgpartend; Anum orgdistval; orgvertend = orggrafptr->s.edgetax[orgedgenum]; orgpartend = orgparttax[orgvertend]; orgdistval = archDomDist (orggrafptr->m.archptr, &orggrafptr->m.domntab[orgpartval], &orggrafptr->m.domntab[orgpartend]); if (orgpartval != orgpartend) { orgflagval = 1; commload2 += ((orggrafptr->s.edlotax != NULL) ? orggrafptr->s.edlotax[orgedgenum] : 1) * orgdistval; /* Internal load to band and original graph vertices are accounted for twice */ if ((orgvertend < orggrafptr->s.vertnnd) && (kgraphMapBdFlagVal (orgflagtab, orgvertend) == 0)) { orgfrontab[orgfronnum ++] = orgvertend; kgraphMapBdFlagSet (orgflagtab, orgvertend); } } } if ((orgflagval != 0) && (kgraphMapBdFlagVal (orgflagtab, orgvertnum) == 0)) orgfrontab[orgfronnum ++] = orgvertnum; kgraphMapBdFlagSet (orgflagtab, orgvertnum); /* Set vertex as processed anyway */ } commload += 2 * commload2; /* Add twice the communication load of original graph edges and once the one of band edges (one removed before) */ if (orggrafptr->pfixtax != NULL) { /* Add fixed vertices with fixed neighbours only in the frontier array */ Gnum vertnum; for (vertnum = orggrafptr->s.baseval; vertnum < orggrafptr->s.vertnnd; vertnum ++) { Gnum partval; Gnum edgenum; if ((orggrafptr->pfixtax[vertnum] == -1) || /* If it is not a fixed vertex */ (kgraphMapBdFlagVal (orgflagtab, vertnum) != 0)) /* Or has already been processed */ continue; /* Skip it */ partval = orggrafptr->m.parttax[vertnum]; for (edgenum = orggrafptr->s.verttax[vertnum]; edgenum < orggrafptr->s.vendtax[vertnum]; edgenum ++) { if (orggrafptr->m.parttax[orggrafptr->s.edgetax[edgenum]] != partval) { /* If first vertex belongs to frontier */ orggrafptr->frontab[orgfronnum] = vertnum; orgfronnum ++; break; } } } } orggrafptr->fronnbr = orgfronnum; orggrafptr->commload = commload / 2; memFree (orgflagtab); memFree (bandvnumtax + bndgrafdat.s.baseval); memFree (bndgrafdat.m.parttax + bndgrafdat.s.baseval); kgraphCost (orggrafptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (orggrafptr) != 0) { errorPrint ("kgraphMapBd: internal error"); kgraphExit (&bndgrafdat); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ kgraphExit (&bndgrafdat); return (0); } scotch_6.0.9/src/libscotch/library_dgraph_io_load.c0000644000302600021200000001030613560013261022636 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_io_load.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph loading routine of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 13 may 2007 **/ /** to 13 may 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "ptscotch.h" /****************************************/ /* */ /* These routines are the C API for the */ /* distributed graph handling routines. */ /* */ /****************************************/ /*+ This routine loads the given opaque graph *** structure with the data of the given stream. *** The base value allows the user to set the *** graph base to 0 or 1, or to the base value *** of the stream if the base value is equal *** to -1. On input, vertex loads are discarded if *** flagval is 1, edge loads are discarded if flagval *** is 2, and both if flagval is set to 3. *** It returns: *** - 0 : if the loading succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphLoad ( SCOTCH_Dgraph * const grafptr, FILE * const stream, const SCOTCH_Num baseval, const SCOTCH_Num flagval) { GraphFlag srcgrafflag; /* Graph flags */ if ((baseval < -1) || (baseval > 1)) { errorPrint (STRINGIFY (SCOTCH_dgraphLoad) ": invalid base parameter"); return (1); } if ((flagval < 0) || (flagval > 3)) { errorPrint (STRINGIFY (SCOTCH_dgraphLoad) ": invalid flag parameter"); return (1); } srcgrafflag = (((flagval & 1) != 0) ? GRAPHIONOLOADVERT : 0) + (((flagval & 2) != 0) ? GRAPHIONOLOADEDGE : 0); return (dgraphLoad ((Dgraph * const) grafptr, stream, (Gnum) baseval, srcgrafflag)); } scotch_6.0.9/src/libscotch/vgraph_separate_gp.c0000644000302600021200000002576313470115365022045 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2012,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_gp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates an active **/ /** graph using a vertex-oriented version **/ /** of the Gibbs-Poole-Stockmeyer **/ /** algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 15 may 2004 **/ /** to 17 may 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 12 sep 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 10 feb 2011 **/ /** to 15 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_GP #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_gp.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vgraphSeparateGp ( Vgraph * restrict const grafptr, /*+ Separation graph +*/ const VgraphSeparateGpParam * const paraptr) /*+ Method parameters +*/ { VgraphSeparateGpQueue queudat; /* Vertex queue */ VgraphSeparateGpVertex * restrict vexxtax; /* Complementary vertex array */ Gnum rootnum; Gnum vertnum; Gnum fronnum; Gnum compsize1; Gnum compsize2; Gnum compload2; Gnum comploaddlt; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; GraphPart * restrict const parttax = grafptr->parttax; Gnum * restrict const frontab = grafptr->frontab; if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part 0 */ vgraphZero (grafptr); /* Move all graph vertices to part 0 */ if (memAllocGroup ((void **) (void *) &queudat.queutab, (size_t) (grafptr->s.vertnbr * sizeof (Gnum)), &vexxtax, (size_t) (grafptr->s.vertnbr * sizeof (VgraphSeparateGpVertex)), NULL) == NULL) { errorPrint ("vgraphSeparateGp: out of memory"); return (1); } memSet (vexxtax, 0, grafptr->s.vertnbr * sizeof (VgraphSeparateGpVertex)); /* Initialize pass numbers */ vexxtax -= grafptr->s.baseval; compload2 = 0; /* All vertices to part 0 */ comploaddlt = grafptr->s.velosum; for (rootnum = grafptr->s.baseval; /* Loop on connected components */ (rootnum < grafptr->s.vertnnd) && (comploaddlt > 0); rootnum ++) { Gnum passnum; /* Pass number */ Gnum diamnum; /* Number of current diameter vertex */ Gnum diamval; /* Current diameter value */ Gnum diamdeg; /* Degree of current diameter vertex */ int diamflag; /* Flag set if improvement in diameter between passes */ Gnum veloval; while (vexxtax[rootnum].passnum != 0) /* Find first unallocated vertex */ rootnum ++; for (diamnum = rootnum, diamval = diamdeg = 0, diamflag = 1, passnum = 1; /* Start from root */ (passnum < paraptr->passnbr) && (diamflag -- != 0); passnum ++) { /* Loop if improvements */ vgraphSeparateGpQueueFlush (&queudat); /* Flush vertex queue */ vgraphSeparateGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].distval = 0; do { /* Loop on vertices in queue */ Gnum vertnum; Gnum distval; Gnum edgenum; vertnum = vgraphSeparateGpQueueGet (&queudat); /* Get vertex from queue */ distval = vexxtax[vertnum].distval; /* Get vertex distance */ if ((distval > diamval) || /* If vertex increases diameter */ ((distval == diamval) && /* Or is at diameter distance */ ((vendtax[vertnum] - verttax[vertnum]) < diamdeg))) { /* With smaller degree */ diamnum = vertnum; /* Set it as new diameter vertex */ diamval = distval; diamdeg = vendtax[vertnum] - verttax[vertnum]; diamflag = 1; } distval ++; /* Set neighbor distance */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* End vertex number */ vertend = edgetax[edgenum]; if (vexxtax[vertend].passnum < passnum) { /* If vertex not yet queued */ vgraphSeparateGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].distval = distval; } } } while (! vgraphSeparateGpQueueEmpty (&queudat)); /* As long as queue is not empty */ } vgraphSeparateGpQueueFlush (&queudat); /* Flush vertex queue */ vgraphSeparateGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].distval = 0; veloval = (velotax != NULL) ? velotax[diamnum] : 1; parttax[diamnum] = 2; /* Move diameter vertex to separator */ comploaddlt -= veloval; compload2 += veloval; do { /* Loop on vertices in queue */ Gnum vertnum; Gnum veloval; Gnum distval; Gnum edgenum; vertnum = vgraphSeparateGpQueueGet (&queudat); /* Get vertex from queue */ veloval = (velotax != NULL) ? velotax[vertnum] : 1; distval = vexxtax[vertnum].distval + 1; parttax[vertnum] = 1; /* Move selected vertex from separator to part 1 */ comploaddlt -= veloval; compload2 -= veloval; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; /* End vertex number */ Gnum veloval; vertend = edgetax[edgenum]; veloval = (velotax != NULL) ? velotax[vertend] : 1; if (vexxtax[vertend].passnum < passnum) { /* If vertex not yet queued */ vgraphSeparateGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].distval = distval; parttax[vertend] = 2; /* Move neighbor vertex to separator */ comploaddlt -= veloval; compload2 += veloval; } } } while ((comploaddlt > 0) && (! vgraphSeparateGpQueueEmpty (&queudat))); /* As long as balance not achieved and queue is not empty */ } grafptr->compload[0] = (grafptr->s.velosum + comploaddlt - compload2) / 2; grafptr->compload[1] = grafptr->s.velosum - compload2 - grafptr->compload[0]; grafptr->compload[2] = compload2; grafptr->comploaddlt = comploaddlt; memFree (queudat.queutab); /* Free group leader */ compsize1 = compsize2 = 0; for (vertnum = grafptr->s.baseval, fronnum = 0; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum partval; partval = (Gnum) parttax[vertnum]; compsize1 += (partval & 1); /* Superscalar update */ compsize2 += (partval >> 1); if (partval == 2) /* If vertex belongs to frontier */ frontab[fronnum ++] = vertnum; /* Record it in frontier array */ } grafptr->compsize[0] = grafptr->s.vertnbr - compsize1 - compsize2; grafptr->compsize[1] = compsize1; grafptr->fronnbr = compsize2; #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) { errorPrint ("vgraphSeparateGp: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/library_parser_f.c0000644000302600021200000001141313560013261021504 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_parser_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** strategy handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 17 jan 2004 **/ /** to 17 mar 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 07 jan 2014 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "scotch.h" /***************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering handling routines. */ /* */ /***************************************/ SCOTCH_FORTRAN ( \ STRATINIT, stratinit, ( \ SCOTCH_Strat * const stratptr, \ int * const revaptr), \ (stratptr, revaptr)) { *revaptr = SCOTCH_stratInit (stratptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATEXIT, stratexit, ( \ SCOTCH_Strat * const stratptr), \ (stratptr)) { SCOTCH_stratExit (stratptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATFREE, stratfree, ( \ SCOTCH_Strat * const stratptr), \ (stratptr)) { SCOTCH_stratFree (stratptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATSAVE, stratsave, ( \ SCOTCH_Strat * const stratptr, \ int * const fileptr, \ int * const revaptr), \ (stratptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_stratSave (stratptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/vgraph_separate_vw.h0000644000302600021200000000553013303015264022056 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_vw.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** separation method. **/ /** **/ /** DATES : # Version 3.3 : from : 31 may 1999 **/ /** to 31 may 1999 **/ /** # Version 4.0 : from : 18 may 2004 **/ /** to 18 may 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int vgraphSeparateVw (Vgraph * const); scotch_6.0.9/src/libscotch/arch_deco2.h0000644000302600021200000002001013560005302020143 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_deco2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the type-2 decomposition-defined **/ /** target architecture functions. **/ /** **/ /** DATES : # Version 6.0 : from : 01 may 2015 **/ /** to 28 may 2018 **/ /** **/ /** NOTES : # The internals of the "deco2" **/ /** architecture derive from those of **/ /** the "sub" architecture regarding **/ /** domain handling. Hence, most domain- **/ /** related routines are identical, and **/ /** amount to looking-up into dedicated **/ /** arrays. Hence, it was more efficient **/ /** to copy its code act as a sub-class **/ /** of the "sub" class. The main **/ /** difference with the latter is in the **/ /** distance computation routine, which **/ /** uses the graph hierarchy. **/ /** Matching in the "deco2" architecture **/ /** is identical to matching in the **/ /** "sub" architecture. **/ /** **/ /************************************************************/ /* ** The defines. */ #ifndef ARCH_DECO2_H_STRUCT #define ARCH_DECO2_H_STRUCT /*+ Depth of local search. +*/ #define ARCHDECO2PASSNBR 3 /*+ Decomposition architecture flags. +*/ #define ARCHDECONONE 0x0000 /*+ No options set +*/ #define ARCHDECOFREE 0x0001 /*+ Free arrays +*/ /* ** The internal type and structure definitions. */ #ifdef ARCH_DECO2 typedef struct ArchDeco2Levl_ { Graph grafdat; /*+ Graph at this level +*/ Gnum wdiaval; /*+ Graph weighted diameter +*/ } ArchDeco2Levl; /*+ Data related to each architecture domain. This structure extends ArchSubData in order to record vertex numbers associated with every domain and ascendent collapsed domains. +*/ typedef struct ArchDeco2Data_ { Anum levlnum; /*+ Deepest level where this domain exists +*/ Anum vnumidx; /*+ Index to vertex number index array +*/ } ArchDeco2Data; #endif /* ARCH_DECO2 */ /* ** The type and structure definitions. */ /*+ The type-2 decomposition-described target architecture. This architecture is based on the "sub" architecture for handling domains. Distance computations are specific. +*/ typedef struct ArchDeco2_ { Anum baseval; /*+ Base value for terminal numbers +*/ Anum termnbr; /*+ Number of terminals in architecture +*/ struct ArchSubTerm_ * termtab; /*+ Terminal domain array +*/ Anum domnnbr; /*+ Number of domains in domain array +*/ struct ArchSubData_ * domntab; /*+ Domain array [domnnbr] +*/ struct ArchDeco2Data_ * doextab; /*+ Extended domain array [domnnbr] +*/ Anum vnumnbr; /*+ Number of indices un vertex index array +*/ Anum * vnumtab; /*+ Level vertex index array [vnumnbr] +*/ Anum levlmax; /*+ Maximum level number in decomposition +*/ struct ArchDeco2Levl_ * levltab; /*+ Level array [levlnbr] +*/ } ArchDeco2; typedef struct ArchDeco2Dom_ { Anum domnidx; /*+ Domain index in domain array +*/ } ArchDeco2Dom; #endif /* ARCH_DECO2_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_DECO2_H_PROTO #define ARCH_DECO2_H_PROTO #define archDeco2ArchLoad NULL int archDeco2ArchLoad2 (ArchDeco2 * const, FILE * restrict const); int archDeco2ArchSave (const ArchDeco2 * const, FILE * restrict const); int archDeco2ArchFree (ArchDeco2 * const); int archDeco2MatchInit (struct ArchSubMatch_ * restrict const, const ArchDeco2 * restrict const); /* Use "sub" matching routines */ #define archDeco2MatchExit archSubMatchExit #define archDeco2MatchMate archSubMatchMate ArchDomNum archDeco2DomNum (const ArchDeco2 * const, const ArchDeco2Dom * const); int archDeco2DomTerm (const ArchDeco2 * const, ArchDeco2Dom * restrict const, const ArchDomNum); Anum archDeco2DomSize (const ArchDeco2 * const, const ArchDeco2Dom * const); Anum archDeco2DomWght (const ArchDeco2 * const, const ArchDeco2Dom * const); Anum archDeco2DomDist (const ArchDeco2 * const, const ArchDeco2Dom * const, const ArchDeco2Dom * const); int archDeco2DomFrst (const ArchDeco2 * const, ArchDeco2Dom * restrict const); int archDeco2DomLoad (const ArchDeco2 * const, ArchDeco2Dom * restrict const, FILE * restrict const); int archDeco2DomSave (const ArchDeco2 * const, const ArchDeco2Dom * const, FILE * restrict const); int archDeco2DomBipart (const ArchDeco2 * const, const ArchDeco2Dom * const, ArchDeco2Dom * restrict const, ArchDeco2Dom * restrict const); int archDeco2DomIncl (const ArchDeco2 * const, const ArchDeco2Dom * const, const ArchDeco2Dom * const); #ifdef SCOTCH_PTSCOTCH int archDecoDomMpiType (const ArchDeco2 * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_DECO2_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/graph_io_habo.c0000644000302600021200000004470413532672406020764 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_habo.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the I/O routines **/ /** for handling the Harwell-Boeing matrix **/ /** format. **/ /** **/ /** DATES : # Version 3.2 : from : 06 nov 1997 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 13 dec 1998 **/ /** to 24 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 21 mar 2005 **/ /** # Version 5.0 : from : 06 jun 2007 **/ /** to 31 aug 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 27 apr 2010 **/ /** # Version 6.0 : from : 04 aug 2016 **/ /** to 27 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_IO_HABO #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "graph_io_habo.h" /* This routine loads the geometrical graph ** in the Harwell-Boeing matrix format, and ** allocates the proper structures. ** - 0 : on success. ** - !0 : on error. */ int graphGeomLoadHabo ( Graph * restrict const grafptr, /* Graph to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* Tag value */ { Gnum habmattag; /* Matrix tag number in file */ Gnum habmatnum; /* Current matrix number */ char habmatbuf[4][84]; /* Matrix header line buffers */ char habmattype[3]; /* Matrix type */ Gnum habcrdnbr; /* Total number of data lines */ Gnum habrhsnbr; /* Number of right hand side lines */ GraphGeomHaboLine habcolfmt; /* Format of column line */ int habvalnum; /* Number of value in line */ Gnum habcolnbr; /* Number of columns */ Gnum habcolnum; /* Number of current column index */ Gnum * restrict habcoltab; /* Index array */ GraphGeomHaboLine habnzrfmt; /* Format of non-zero type */ Gnum habnzrnbr; /* Number of non-zero indices */ Gnum habnzrnum; /* Number of current row data */ Gnum * restrict habnzrtab; /* Row data array */ GraphGeomHaboHash * restrict hashtab; /* Neighbor hash table */ Gnum hashmsk; /* Mask for access to hash table */ Gnum vertnum; /* Number of current vertex */ Gnum edgenum; /* Number of current edge (arc) */ Gnum edgeold; /* Number of non-purged edge */ Gnum edgetmp; /* Temporary edge number */ Gnum degrmax; /* Maximum degree */ int c; habmattag = 0; /* Read first matrix by default */ if ((dataptr != NULL) && /* If tag value provided */ (dataptr[0] != '\0') && ((habmattag = (Gnum) atol (dataptr)) == 0) && /* Get tag value */ (dataptr[0] != '0')) { errorPrint ("graphGeomLoadHabo: invalid parameter"); return (1); } habmattype[0] = habmattype[1] = habmattype[2] = '\0'; for (habmatnum = 0; habmatnum <= habmattag; habmatnum ++) { /* Read headers and skip if necessary */ memSet (habmatbuf[0], ' ', &habmatbuf[3][83] - &habmatbuf[0][0]); /* Initialize header buffers */ if ((fgets (habmatbuf[0], 83, filesrcptr) == NULL) || /* Read graph header */ (fgets (habmatbuf[1], 83, filesrcptr) == NULL) || (fgets (habmatbuf[2], 83, filesrcptr) == NULL) || (fgets (habmatbuf[3], 83, filesrcptr) == NULL)) { errorPrint ("graphGeomLoadHabo: bad input (1)"); return (1); } habmatbuf[1][70] = '\0'; /* Extract header values */ habrhsnbr = (Gnum) atol (&habmatbuf[1][56]); habmatbuf[1][14] = '\0'; habcrdnbr = (Gnum) atol (&habmatbuf[1][00]); habmattype[0] = toupper (habmatbuf[2][0]); habmattype[1] = toupper (habmatbuf[2][1]); habmattype[2] = toupper (habmatbuf[2][2]); habmatbuf[2][56] = '\0'; habnzrnbr = (Gnum) atol (&habmatbuf[2][43]); habmatbuf[2][42] = '\0'; habcolnbr = (Gnum) atol (&habmatbuf[2][29]); #if 0 /* Number of rows not used since only square matrices considered */ habmatbuf[2][28] = '\0'; habrownbr = (Gnum) atol (&habmatbuf[2][14]); #endif habmatbuf[3][32] = '\0'; if (graphGeomLoadHaboFormat (&habnzrfmt, &habmatbuf[3][16]) != 0) { errorPrint ("graphGeomLoadHabo: bad input (2)"); return (1); } habmatbuf[3][16] = '\0'; if (graphGeomLoadHaboFormat (&habcolfmt, &habmatbuf[3][0]) != 0) { errorPrint ("graphGeomLoadHabo: bad input (3)"); return (1); } if (habrhsnbr != 0) { while ((c = getc (filesrcptr)) != '\n'){ /* Skip RHS format line */ if (c == EOF) { errorPrint ("graphGeomLoadHabo: bad input (4)"); return (1); } } } if (habmatnum < habmattag) { /* If we have to skip file */ while (habcrdnbr -- > 0) { /* Skip all of file lines */ while ((c = getc (filesrcptr)) != '\n') { /* Skip line */ if (c == EOF) { errorPrint ("graphGeomLoadHabo: bad input (5)"); return (1); } } } } } if (habmattype[2] != 'A') { errorPrint ("graphGeomLoadHabo: only assembled matrices supported; for unassembled matrices, use the mesh version of the tools"); return (1); } if (habmattype[1] == 'R') { errorPrint ("graphGeomLoadHabo: rectangular matrices not supported"); return (1); } if (((grafptr->verttax = (Gnum *) memAlloc ((habcolnbr + 1) * sizeof (Gnum))) == NULL) || (memAllocGroup ((void **) (void *) &grafptr->edgetax, (size_t) (habnzrnbr * 2 * sizeof (Gnum)), &habcoltab, (size_t) ((habcolnbr + 1) * sizeof (Gnum)), &habnzrtab, (size_t) (habnzrnbr * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("graphGeomLoadHabo: out of memory (1)"); if (grafptr->verttax != NULL) { memFree (grafptr->verttax); grafptr->verttax = NULL; } return (1); } grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = 1; /* Harwell-Boeing graphs have base 1 */ grafptr->vertnbr = (Gnum) habcolnbr; grafptr->vertnnd = grafptr->vertnbr + 1; grafptr->velosum = grafptr->vertnbr; grafptr->vendtax = grafptr->verttax; /* Use compact representation for array based at 1 */ grafptr->verttax --; /* Base verttab array at 1, with vendtab = verttab + 1 */ grafptr->edgetax --; grafptr->velotax = NULL; grafptr->vnumtax = NULL; grafptr->vlbltax = NULL; grafptr->edlotax = NULL; ungetc ('\n', filesrcptr); /* Create fake previous line */ for (habcolnum = 0, habvalnum = habcolfmt.datanbr; /* Eat up fake previous line */ habcolnum <= habcolnbr; habcolnum ++) { /* Read column indices */ Gnum habcolval; /* Current column value */ int habcolidx; /* Current index in column value */ c = getc (filesrcptr); if (habvalnum ++ >= habcolfmt.datanbr) { /* If all useful data read from line */ habvalnum = 1; /* Start at beginning of new line */ while ((c != '\n') && (c != '\r')) /* Eat up all remaining spaces */ c = getc (filesrcptr); while (((c = getc (filesrcptr)) == '\n') || (c == '\r')) ; /* Read till end of line */ for (habcolidx = 0; habcolidx < habcolfmt.strtnbr; habcolidx ++) /* Get start of line */ c = getc (filesrcptr); } habcolval = (c == ' ') ? 0 : (c - '0'); for (habcolidx = 1; habcolidx < habcolfmt.datalen; habcolidx ++) { if ((c = getc (filesrcptr)) != ' ') habcolval = habcolval * 10 + c - '0'; } if (c == EOF) { errorPrint ("graphGeomLoadHabo: bad input (6)"); graphFree (grafptr); return (1); } habcoltab[habcolnum] = habcolval; } if (habcoltab[habcolnbr] != (Gnum) habnzrnbr + 1) { errorPrint ("graphGeomLoadHabo: bad input (7)"); graphFree (grafptr); return (1); } memSet (grafptr->vendtax, 0, habcolnbr * sizeof (Gnum)); /* Here, vendtax = verttab */ for (vertnum = 1, habnzrnum = 0, habvalnum = habnzrfmt.datanbr; /* Start by eating end of previous line */ vertnum < grafptr->vertnnd; vertnum ++) { /* Read matrix pattern */ for ( ; habnzrnum < (habcoltab[vertnum] - 1); habnzrnum ++) { /* All right since vertnum is based at 1 */ Gnum habnzrval; /* Current non-zero value */ int habnzridx; /* Current index in non-zero value */ c = getc (filesrcptr); if (habvalnum ++ >= habnzrfmt.datanbr) { /* If all useful data read from line */ habvalnum = 1; /* Start at beginning of new line */ while ((c != '\n') && (c != '\r')) /* Eat up all remaining spaces */ c = getc (filesrcptr); while (((c = getc (filesrcptr)) == '\n') || (c == '\r')) ; /* Read till end of line */ for (habnzridx = 0; habnzridx < habnzrfmt.strtnbr; habnzridx ++) /* Get start of line */ c = getc (filesrcptr); } habnzrval = (c == ' ') ? 0 : (c - '0'); for (habnzridx = 1; habnzridx < habnzrfmt.datalen; habnzridx ++) { if ((c = getc (filesrcptr)) != ' ') habnzrval = habnzrval * 10 + c - '0'; } if (c == EOF) { errorPrint ("graphGeomLoadHabo: bad input (8)"); graphFree (grafptr); return (1); } habnzrtab[habnzrnum] = habnzrval; if (habnzrval != vertnum) { /* If not loop edge */ grafptr->verttax[vertnum] ++; /* Account for arc */ grafptr->verttax[habnzrval] ++; /* Add arc to symmetrize */ } } } degrmax = 1; for (vertnum = edgenum = 1; vertnum < grafptr->vertnnd; vertnum ++) { /* Build (superset of) vertex array */ Gnum edgetmp; edgetmp = grafptr->verttax[vertnum]; grafptr->verttax[vertnum] = edgenum; edgenum += edgetmp; if (edgetmp > degrmax) /* Update bound on maximum degree */ degrmax = edgetmp; } grafptr->verttax[vertnum] = edgenum; /* Set end of vertex array */ for (vertnum = 1, habnzrnum = 0; vertnum < grafptr->vertnnd; vertnum ++) { /* Build (superset of) edge array */ for ( ; habnzrnum < (habcoltab[vertnum] - 1); habnzrnum ++) { Gnum vertend; /* Number of end vertex */ vertend = habnzrtab[habnzrnum]; if (vertend != vertnum) { /* If not loop edge */ grafptr->edgetax[grafptr->verttax[vertnum] ++] = vertend; /* Build arc */ grafptr->edgetax[grafptr->verttax[vertend] ++] = vertnum; /* Symmetrize */ } } } for (hashmsk = 31; hashmsk < degrmax; hashmsk = hashmsk * 2 + 1) ; /* Set neighbor hash table size */ hashmsk = hashmsk * 4 + 3; if ((hashtab = (GraphGeomHaboHash *) memAlloc ((hashmsk + 1) * sizeof (GraphGeomHaboHash))) == NULL) { errorPrint ("graphGeomLoadHabo: out of memory (2)"); graphFree (grafptr); return (1); } memSet (hashtab, ~0, (hashmsk + 1) * sizeof (GraphGeomHaboHash)); /* Pre-set hash table */ degrmax = 1; for (vertnum = edgetmp = edgenum = 1; vertnum < grafptr->vertnnd; vertnum ++) { /* Remove duplicates from edge array */ for (edgeold = edgetmp, edgetmp = grafptr->verttax[vertnum], grafptr->verttax[vertnum] = edgenum; edgeold < edgetmp; edgeold ++) { Gnum vertend; /* Number of end vertex */ Gnum hashnum; /* Current hash index */ vertend = grafptr->edgetax[edgeold]; for (hashnum = (vertend * GRAPHGEOMHABOHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].vertnum != vertnum) { /* If edge not found */ hashtab[hashnum].vertnum = vertnum; hashtab[hashnum].vertend = vertend; grafptr->edgetax[edgenum ++] = vertend; break; } if (hashtab[hashnum].vertend == vertend) /* Do not add duplicate edges */ break; } } if ((edgenum - grafptr->verttax[vertnum]) > degrmax) /* Set real maximum degree */ degrmax = edgenum - grafptr->verttax[vertnum]; } grafptr->verttax[vertnum] = edgenum; /* Set end of vertex array */ grafptr->edgenbr = edgenum - 1; grafptr->edlosum = grafptr->edgenbr; grafptr->degrmax = degrmax; memFree (hashtab); grafptr->edgetax = ((Gnum *) memRealloc (grafptr->edgetax + 1, grafptr->edgenbr * sizeof (Gnum))) - 1; #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphGeomLoadHabo: internal error"); graphFree (grafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } /* This routine reads a Fortran format structure ** and returns the size of the integers to read. */ static int graphGeomLoadHaboFormat ( GraphGeomHaboLine * restrict const lineptr, /* Line format to fill */ const char * const dataptr) /* Format string */ { const char * restrict charptr; int number; /* Number to read */ lineptr->strtnbr = lineptr->datanbr = lineptr->datalen = 0; for (charptr = dataptr; ; charptr ++) { /* Skip to first '(' */ if (*charptr == '(') break; if (*charptr == '\0') /* Error if end of string */ return (1); } number = 0; /* Read number */ for (charptr ++ ; ; charptr ++) { if (*charptr == '\0') /* Error if end of string */ return (1); if (! isdigit ((int) (unsigned char) *charptr)) break; number = number * 10 + *charptr - '0'; } if ((*charptr == 'x') || (*charptr == 'X')) { /* If dummy characters at beginning of line */ lineptr->strtnbr = number; for (charptr ++; ; charptr ++) { /* Skip to first ',' */ if (*charptr == '\0') /* Error if end of string */ return (1); if (*charptr == ',') break; } number = 0; /* Read number */ for (charptr ++; *charptr != '\0'; charptr ++) { if (*charptr == '\0') /* Error if end of string */ return (1); if (! isdigit (*charptr < '0')) break; number = number * 10 + *charptr - '0'; } } if ((*charptr != 'I') && (*charptr != 'i')) /* If not integer specification */ return (1); lineptr->datanbr = number; number = 0; /* Read size of integer */ for (charptr ++; ; charptr ++) { if (*charptr == '\0') /* Error if end of string */ return (1); if (! isdigit ((int) (unsigned char) *charptr)) break; number = number * 10 + *charptr - '0'; } if (number == 0) return (1); lineptr->datalen = number; return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_ml.h0000644000302600021200000001005413303015264022027 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_ml.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the multi-level vertex separation **/ /** routines. **/ /** **/ /** DATES : # Version 3.2 : from : 28 oct 1997 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 02 feb 2004 **/ /** # Version 6.0 : from : 16 apr 2011 **/ /** to 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VgraphSeparateMlParam_ { INT coarnbr; /*+ Minimum number of vertices +*/ double coarval; /*+ Coarsening ratio +*/ GraphCoarsenType coartype; /*+ Edge matching function type +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ } VgraphSeparateMlParam; /* ** The function prototypes. */ #ifdef VGRAPH_SEPARATE_ML static int vgraphSeparateMlCoarsen (const Vgraph * const, Vgraph * const, GraphCoarsenMulti * restrict * const, const VgraphSeparateMlParam * const); static int vgraphSeparateMlUncoarsen (Vgraph * const, const Vgraph * const, const GraphCoarsenMulti * restrict const); static int vgraphSeparateMl2 (Vgraph * const, const VgraphSeparateMlParam * const); #endif /* VGRAPH_SEPARATE_ML */ int vgraphSeparateMl (Vgraph * const, const VgraphSeparateMlParam * const); scotch_6.0.9/src/libscotch/hgraph_order_hd.h0000644000302600021200000000742313465315041021316 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Degree **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 09 aug 1998 **/ /** to : 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 19 oct 1998 **/ /** # Version 4.0 : from : 14 jan 2003 **/ /** to : 24 jan 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #define HGRAPHORDERHDCOMPRAT 1.2L /*+ Compression ratio +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderHdParam_ { INT colmin; /*+ Minimum number of columns +*/ INT colmax; /*+ Maximum number of columns +*/ double fillrat; /*+ Fill-in ratio +*/ } HgraphOrderHdParam; /* ** The function prototypes. */ int hgraphOrderHd (const Hgraph * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HgraphOrderHdParam * restrict const); scotch_6.0.9/src/libscotch/wgraph_part_fm.c0000644000302600021200000011537713465315041021202 0ustar pelegrinpelegrin/* Copyright 2007-2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_fm.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module is the improved Fiduccia- **/ /** Mattheyses refinement routine for the **/ /** vertex overlapped graph partitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_FM #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "wgraph.h" #include "wgraph_part_gg.h" #include "wgraph_part_fm.h" /* ** The static variables. */ static const Gnum wgraphpartfmloadone = 1; /*********************************/ /* */ /* Gain table handling routines. */ /* */ /*********************************/ /* This routine returns the vertex of best gain ** whose swap will keep the balance correct. ** It returns: ** - !NULL : pointer to the vertex gainlink. ** - NULL : if no more vertices available. */ static WgraphPartFmLink * wgraphPartFmTablGet ( Wgraph * restrict const grafptr, /*+ Active graph +*/ WgraphPartFmVertex * hashtab, GainTabl * const tablptr, /*+ Gain table +*/ Gnum * restrict diffload) { Gnum gainbest; /* Separator gain of best link */ Gnum bestdiffload; const GainEntr * tablbest; /* Gain table entry of best link */ WgraphPartFmLink * linkptr; /* Pointer to current gain link */ WgraphPartFmLink * linkbest; /* Pointer to best link found */ linkbest = NULL; /* Assume no candidate vertex found yet */ tablbest = tablptr->tend; gainbest = GAINMAX; for (linkptr = (WgraphPartFmLink *) gainTablFrst (tablptr); /* Select candidate vertices */ (linkptr != NULL) && (linkptr->gainlink.tabl <= tablbest); linkptr = (WgraphPartFmLink *) gainTablNext (tablptr, (GainLink *) linkptr)) { Gnum vertpart; /* Part of current vertex */ Gnum gaincur; /* Separator gain of current link */ vertpart = linkptr->partval; gaincur = linkptr->gain; /* Get separator gain and vertex balance */ if (linkptr->minloadpartval == -1) { return (linkptr); /* Return best link found */ } if ((gaincur < gainbest) || /* And if it gives better gain than gain max */ ((gaincur == gainbest) && /* Or is in preferred part */ ((grafptr->compload[vertpart] - grafptr->compload[linkptr->minloadpartval]) <= bestdiffload))) { linkbest = linkptr; /* Select it */ gainbest = gaincur; tablbest = linkptr->gainlink.tabl; bestdiffload = grafptr->compload[vertpart] - grafptr->compload[linkptr->minloadpartval]; } } *diffload += bestdiffload; return (linkbest); /* Return best link found */ } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int wgraphPartFm ( Wgraph * restrict const grafptr, /*+ Active graph +*/ const WgraphPartFmParam * const paraptr) /*+ Method parameters +*/ { int passnbr; /* Maximum number of passes to go */ int moveflag; /* Flag set if useful moves made */ Gnum fronnum; /* Current index of frontier vertex */ Gnum partval; Gnum partnbr; Gnum vertnum; Gnum hashnum; Gnum velosum; Gnum minload; Gnum maxload; Gnum frlobst; Gnum linknbr; Gnum savenum; Gnum hashmax; /* Maximum number of elements in table */ Gnum hashsiz; /* Size of hash and save tables */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashnbr; /* Number of elements in hash table */ Gnum velomsk; Gnum * restrict movetab; GainTabl * restrict tablptr; /* Pointer to gain tables */ const Gnum * restrict velobax; /* Data for handling of optional arrays */ WgraphPartFmVertex * hashtab; /* Hash vertex table */ WgraphPartFmVertex * vexxptr; WgraphPartFmVertex * vertlist; WgraphPartFmVertex * locklist; WgraphPartFmSave * restrict savetab; WgraphPartFmLink * restrict linktab; WgraphPartFmPartList * restrict partlist; WgraphPartFmPartList * restrict partlistptr; WgraphPartFmPartList * restrict partlistloadptr; partnbr = grafptr->partnbr; for (partval = 0, velosum = 0; partval < partnbr; partval ++) velosum += grafptr->compload[partval]; if (grafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &wgraphpartfmloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } minload = velosum * (1. - paraptr->deltrat) / (float) (partnbr); maxload = velosum * (1. + paraptr->deltrat) / (float) (partnbr); if (grafptr->fronnbr == 0) { /* If no frontier defined */ for (partval = 0; partval < partnbr; partval ++) { if (grafptr->compload[partval] < minload /* If balance is not achieved */ || grafptr->compload[partval] > maxload) { /* Imbalance must be fought */ WgraphPartGgParam paradat; paradat.passnbr = 5; /* Use a standard algorithm */ wgraphPartGg (grafptr, ¶dat); if (grafptr->fronnbr == 0) /* If new partition has no frontier */ return (0); /* This algorithm is still useless */ } return (0); /* This algorithm is still useless */ } } hashnbr = 16 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax) + 1; if (hashnbr > grafptr->s.vertnbr) hashnbr = 4 * grafptr->s.vertnbr; hashnbr *= 2; for (hashsiz = 512; hashsiz < hashnbr; hashsiz <<= 1) ; /* Get upper power of two */ hashmsk = hashsiz - 1; hashmax = hashsiz >> 2; /* Use hash table at 1/4 of its capacity */ hashnbr = 0; if (((tablptr = gainTablInit (GAINMAX, WGRAPHSEPAFMGAINBITS)) == NULL) || /* Use logarithmic array only */ (memAllocGroup ((void **) (void *) &hashtab, (size_t) (hashsiz * sizeof (WgraphPartFmVertex)), &linktab, (size_t) (hashsiz * sizeof (WgraphPartFmLink)), &partlist,(size_t) (partnbr * sizeof (WgraphPartFmPartList)), &savetab, (size_t) (hashsiz * sizeof (WgraphPartFmSave)), &movetab, (size_t) (hashsiz * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("wgraphPartFm: out of memory (1)"); if (tablptr != NULL) gainTablExit (tablptr); return (1); } memSet (hashtab, ~0, hashsiz * sizeof (WgraphPartFmVertex)); memSet (linktab, ~0, hashsiz * sizeof (WgraphPartFmLink)); linknbr = 0; locklist = NULL; passnbr = paraptr->passnbr; frlobst = grafptr->fronload; for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { /* Set initial gains */ Gnum edgenum; Gnum compgain; Gnum minloadpartval; Gnum minloadpartload; Gnum secondloadpartval; WgraphPartFmLink * restrict linklist; WgraphPartFmLink * restrict linkptr; minloadpartval = secondloadpartval = -1; partlistptr = NULL; vertnum = grafptr->frontab[fronnum]; compgain = - velobax[vertnum & velomsk]; /* Gain initialised as negative value for the frontier */ memSet (partlist, 0, partnbr * sizeof (WgraphPartFmPartList)); for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) { Gnum vertnum2; WgraphPartFmVertex * vexxptr; vertnum2 = grafptr->s.edgetax[edgenum]; for (hashnum = (vertnum2 * WGRAPHSEPAFMHASHPRIME) & hashmsk; (hashtab[hashnum].vertnum != vertnum2) && (hashtab[hashnum].vertnum != ~0); hashnum = (hashnum + 1) & hashmsk); vexxptr = hashtab + hashnum; if (vexxptr->vertnum == ~0) { /* If vertex not found add it in the hash table */ vexxptr->vertnum = vertnum2; vexxptr->partval = grafptr->parttax[vertnum2]; vexxptr->linklist = NULL; hashnbr ++; if (hashnbr >= hashmax) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } } if (vexxptr->partval != -1) { /* If its part is not the separator */ if (partlist[vexxptr->partval].gain == 0) { /* and not yet linked */ partlist[vexxptr->partval].prev = partlistptr; /* link it */ partlistptr = partlist + vexxptr->partval; if (minloadpartval == -1 || minloadpartload > grafptr->compload[vexxptr->partval]) { secondloadpartval = minloadpartval; minloadpartval = vexxptr->partval; minloadpartload = grafptr->compload[minloadpartval]; } else if (secondloadpartval != vexxptr->partval) { secondloadpartval = vexxptr->partval; } } partlist[vexxptr->partval].gain -= velobax[vertnum2 & velomsk]; /* Store the gain of this vertex move for this part */ compgain += velobax[vertnum2 & velomsk]; /* Store the global gain of this vertex move */ } } for (hashnum = (vertnum * WGRAPHSEPAFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != vertnum && hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk); if (hashtab[hashnum].vertnum == ~0) { /* If vertex not found */ hashtab[hashnum].vertnum = vertnum; /* Add it in the hash table */ hashtab[hashnum].partval = -1; hashtab[hashnum].linklist = NULL; hashnbr ++; if (hashnbr >= hashmax) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } } hashtab[hashnum].linklist = (partlistptr != NULL) /* If selected vertex is not isolated */ ? linktab + linknbr /* Then first link will next element in linktab */ : NULL; /* Else, no link */ linklist = linkptr = NULL; /* Assume list is empty */ while (partlistptr != NULL) { /* For each linked part */ partval = partlistptr - partlist; partlistptr = partlistptr->prev; linkptr = linktab + linknbr; /* Create link at the end of linktab */ linkptr->partval = partval; linkptr->hashnum = hashnum; linkptr->gain = compgain + partlist[partval].gain; if (partval != minloadpartval) linkptr->minloadpartval = minloadpartval; else linkptr->minloadpartval = secondloadpartval; linkptr->minloadpartload = minloadpartload; if (linklist != NULL) /* Add link to the list */ linklist->next = linkptr; linklist = linkptr; gainTablAdd (tablptr, (GainLink *) (linktab + linknbr), linkptr->gain); /* add the link in the gain table */ linknbr ++; partlist[partval].prev = NULL; partlist[partval].gain = 0; } if (linkptr != NULL) linkptr->next = NULL; /* close the end of the list */ } movetab[0] = -1; do { /* As long as there is improvement */ Gnum partval2; Gnum movenbr; /* Number of uneffective moves done */ Gnum savenbr; /* Position of current move */ Gnum diffload; WgraphPartFmLink * restrict linkptr; movenbr = 0; /* No uneffective moves yet */ savenbr = 0; /* No recorded moves yet */ moveflag = 0; /* No moves to date */ diffload = 0; while ((movenbr < paraptr->movenbr) && /* As long as we can find effective vertices */ ((linkptr = wgraphPartFmTablGet (grafptr, hashtab, tablptr, &diffload)) != NULL)) { Gnum edgenum; WgraphPartFmVertex * vexxptr2; /* Pointer to current vertex */ WgraphPartFmVertex * vertlist2; movenbr ++; minload = velosum * (1. - paraptr->deltrat) / (float) (partnbr); maxload = velosum * (1. + paraptr->deltrat) / (float) (partnbr); partval = linkptr->partval; /* Get data from the selected link */ hashnum = linkptr->hashnum; vexxptr2 = hashtab + hashnum; vertnum = vexxptr2->vertnum; vertlist = NULL; /* and a list of vertex */ partlistptr = NULL; /* initialise an empty list of part */ partlistloadptr = NULL; vexxptr2->linked = 1; /* link the vertex */ vexxptr2->partval2 = partval; /* the vertex will move to the part partval */ vexxptr2->prev = vertlist; vertlist = hashtab + hashnum; for (edgenum = grafptr->s.verttax[vertnum]; /* for neighbours vertices */ edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) { WgraphPartFmVertex * vexxptr3; /* Pointer to current vertex */ Gnum vertnum2; Gnum edgenum2; vertnum2 = grafptr->s.edgetax[edgenum]; for (hashnum = (vertnum2 * WGRAPHSEPAFMHASHPRIME) & hashmsk; /* search the vertex in the hash table */ hashtab[hashnum].vertnum != vertnum2 && hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk); vexxptr3 = hashtab + hashnum; if (vexxptr3->vertnum == ~0) { /* if vertex not found */ vexxptr3->vertnum = vertnum2; /* add it in the hash table */ vexxptr3->partval = grafptr->parttax[vertnum2]; vexxptr3->linklist = NULL; hashnbr ++; if (hashnbr >= hashmax) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } } if (vexxptr3->partval == -1) { /* if vertex is in the separator */ if (vexxptr3->linked == ~0) { /* link the vertex */ vexxptr3->linked = 1; vexxptr3->prev = vertlist; vertlist = hashtab + hashnum; vexxptr3->partval2 = -1; /* the vertex will stay in the separator */ } } else if ((vexxptr3->partval != partval)) { /* or if it's not in the part of the selected vertex */ if (vexxptr3->linked == ~0) { /* link the vertex */ vexxptr3->linked = 1; vexxptr3->prev = vertlist; vertlist = hashtab + hashnum; vexxptr3->partval2 = -1; /* the vertex will move to the separator */ } for (edgenum2 = grafptr->s.verttax[vertnum2]; /* for neighbours vertices */ edgenum2 < grafptr->s.vendtax[vertnum2]; edgenum2 ++) { WgraphPartFmVertex * vexxptr4; /* Pointer to current vertex */ Gnum vertnum3; vertnum3 = grafptr->s.edgetax[edgenum2]; for (hashnum = (vertnum3 * WGRAPHSEPAFMHASHPRIME) & hashmsk; /* search the vertex in the hash table */ hashtab[hashnum].vertnum != vertnum3 && hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk); vexxptr4 = hashtab + hashnum; if (vexxptr4->vertnum == ~0) { /* if vertex not found */ vexxptr4->vertnum = vertnum3; /* add it in the hash table */ vexxptr4->partval = grafptr->parttax[vertnum3]; vexxptr4->linklist = NULL; hashnbr ++; if (hashnbr >= hashmax) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } } if (vexxptr4->partval == -1) { /* if vertex in separator */ if (vexxptr4->linked == ~0) { /* link the vertex */ vexxptr4->linked = 1; vexxptr4->prev = vertlist; vexxptr4->partval2 = -1; vertlist = hashtab + hashnum; } } } } } vertlist2 = vertlist; grafptr->fronload -= velobax[vertnum & velomsk]; /* Decrease the frontier load (due to the selected vertex) */ grafptr->fronnbr --; /* Decrease the frontier size (due to the selected vertex) */ while (vertlist != NULL) { /* For each vertex in the list of linked vertices */ Gnum newpart; /* Move vertex from part parval to part partval2 */ Gnum oldpart; Gnum vertnum2; vertnum2 = vertlist->vertnum; oldpart = vertlist->partval; newpart = vertlist->partval2; if (oldpart != newpart) moveflag = 1; if ((newpart == -1) && (oldpart != -1)) { /* If the vertex will move into separator */ grafptr->fronload += velobax[vertnum2 & velomsk]; /* Increase the frontier load */ grafptr->fronnbr ++; /* Increase the frontier size */ } if (oldpart != -1) { grafptr->compload[oldpart] -= velobax[vertnum2 & velomsk]; /* Decrease the load of the selected part */ grafptr->compsize[oldpart] --; /* Decrease the size of the selected part */ partlist[oldpart].loadgain -= velobax[vertnum2 & velomsk]; partlist[oldpart].sizegain --; if (partlist[oldpart].isinloadlist != 1) { partlist[oldpart].loadprev = partlistloadptr; partlistloadptr = partlist + oldpart; partlist[oldpart].isinloadlist = 1; } } if (newpart != -1) { grafptr->compload[newpart] += velobax[vertnum2 & velomsk]; /* increase the load of the selected part */ grafptr->compsize[newpart] ++; /* increase the size of the selected part */ partlist[newpart].loadgain += velobax[vertnum2 & velomsk]; partlist[newpart].sizegain ++; if (partlist[newpart].isinloadlist != 1) { partlist[newpart].loadprev = partlistloadptr; partlistloadptr = partlist + newpart; partlist[newpart].isinloadlist = 1; } } vertlist->partval2 = oldpart; /* exchange the old and the new parts */ vertlist->partval = newpart; if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVEMOVE; /* save the move */ savetab[savenbr].u.movedata.hashnum = vertlist - hashtab; savetab[savenbr].u.movedata.partval = vertlist->partval2; movetab[movenbr] = savenbr; savenbr ++; vertlist = vertlist->prev; } while (vertlist2 != NULL) { /* for each vertex in the same list of linked vertices */ Gnum vertnum2; vertnum2 = vertlist2->vertnum; if (vertlist2->partval2 == -1) { /* If vertex was in separator */ WgraphPartFmLink * restrict linkptr2; for (linkptr2 = vertlist2->linklist; /* For each link of the vertex */ linkptr2 != NULL; linkptr2 = linkptr2->next) { if (linkptr2->gainlink.next != NULL) { grafptr->compload[linkptr2->partval] -= velobax[vertnum2 & velomsk]; /* decrease the load of this part */ grafptr->compsize[linkptr2->partval]--; /* decrease the size of this part */ partlist[linkptr2->partval].loadgain -= velobax[vertnum2 & velomsk]; partlist[linkptr2->partval].sizegain --; if (partlist[linkptr2->partval].isinloadlist != 1) { partlist[linkptr2->partval].loadprev = partlistloadptr; partlistloadptr = partlist + linkptr2->partval; partlist[linkptr2->partval].isinloadlist = 1; } } if (linkptr2->gainlink.next != NULL) { if (linkptr2->gainlink.next != (GainLink *) 1) /* If link is in gain table */ gainTablDel (tablptr, (GainLink *) linkptr2); /* Remove link from table */ if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { /* TODO: Check if table resizing changes linkptr2 ? */ errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVELINKDEL; /* Save link removal from table */ savetab[savenbr].u.linkdata.linknum = linkptr2 - linktab; savetab[savenbr].u.linkdata.gain = linkptr2->gain; movetab[movenbr] = savenbr; savenbr ++; } linkptr2->gainlink.next = NULL; } } if (vertlist2->partval == -1) { /* if vertex move (or stay) in the separator */ Gnum gain; Gnum minloadpartval; Gnum minloadpartload; Gnum secondloadpartval; WgraphPartFmLink * restrict linklist; WgraphPartFmLink * restrict linkptr2; vertnum2 = vertlist2->vertnum; partlistptr = NULL; gain = -1; minloadpartval = -1; secondloadpartval = -1; for (hashnum = (vertnum2 * WGRAPHSEPAFMHASHPRIME) & hashmsk; /* search the vertex in the hash table */ hashtab[hashnum].vertnum != vertnum2; hashnum = (hashnum + 1) & hashmsk); vexxptr = hashtab + hashnum; for (edgenum = grafptr->s.verttax[vertnum2]; /* recompute the gain */ edgenum < grafptr->s.vendtax[vertnum2]; edgenum ++) { WgraphPartFmVertex * vexxptr4; /* Pointer to current vertex */ Gnum vertnum3; vertnum3 = grafptr->s.edgetax[edgenum]; for (hashnum = (vertnum3 * WGRAPHSEPAFMHASHPRIME) & hashmsk; /* search the vertex in the hash table */ hashtab[hashnum].vertnum != vertnum3 && hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk); vexxptr4 = hashtab + hashnum; if (vexxptr4->vertnum == ~0) { /* if vertex not found */ vexxptr4->vertnum = vertnum3; /* add it in the hash table */ vexxptr4->partval = grafptr->parttax[vertnum3]; vexxptr4->linklist = NULL; hashnbr ++; if (hashnbr >= hashmax) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } } if (vexxptr4->partval != -1) { /* if part is not the separator */ if (partlist[vexxptr4->partval].gain == 0) { /* and not yet linked */ partlist[vexxptr4->partval].prev = partlistptr; /* link it */ partlistptr = partlist + vexxptr4->partval; if (minloadpartval == -1 || minloadpartload > grafptr->compload[vexxptr4->partval]) { secondloadpartval = minloadpartval; minloadpartval = vexxptr4->partval; minloadpartload = grafptr->compload[minloadpartval]; } else if (secondloadpartval != vexxptr4->partval) { secondloadpartval = vexxptr4->partval; } } partlist[vexxptr4->partval].gain --; gain ++; } } for (linkptr2 = vexxptr->linklist, linklist = NULL; /* For each vertex link in list */ linkptr2 != NULL; linkptr2 = linkptr2->next) { linklist = linkptr2; partval2 = linkptr2->partval; if (partlist[partval2].gain != 0) { /* If part is linked */ hashtab[linkptr2->hashnum].vertnum = vertnum2; linkptr2->partval = partval2; linkptr2->gain = gain + partlist[partval2].gain; if (partval2 != minloadpartval) linkptr2->minloadpartval = minloadpartval; else linkptr2->minloadpartval = secondloadpartval; linkptr2->minloadpartload = minloadpartload; if (hashtab[linkptr2->hashnum].lockprev == (WgraphPartFmVertex *) ~0) { /* If vertex is not locked */ if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVELINKADD; savetab[savenbr].u.linkdata.linknum = linkptr2 - linktab; savetab[savenbr].u.linkdata.gain = linkptr2->gain; movetab[movenbr] = savenbr; savenbr ++; gainTablAdd(tablptr, (GainLink *) linkptr2, linkptr2->gain); /* add the link in the gain table of the part */ } else { if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVELINKADD; savetab[savenbr].u.linkdata.linknum = linkptr2 - linktab; savetab[savenbr].u.linkdata.gain = linkptr2->gain; movetab[movenbr] = savenbr; savenbr ++; linkptr2->gainlink.next = (GainLink *) 1; } partlist[partval2].gain = 0; grafptr->compload[linkptr2->partval] += velobax[hashtab[linkptr2->hashnum].vertnum & velomsk]; /* increase the load of this part */ grafptr->compsize[linkptr2->partval] ++; /* increase the size of this part */ partlist[linkptr2->partval].loadgain += velobax[hashtab[linkptr2->hashnum].vertnum & velomsk]; partlist[linkptr2->partval].sizegain ++; if (partlist[linkptr2->partval].isinloadlist != 1) { partlist[linkptr2->partval].isinloadlist = 1; partlist[linkptr2->partval].loadprev = partlistloadptr; partlistloadptr = partlist + linkptr2->partval; } } } while (partlistptr != NULL) { /* for each part in the linked list */ partval2 = partlistptr - partlist; if (partlist[partval2].gain != 0) { WgraphPartFmLink * restrict linkptr3; linkptr3 = linktab + linknbr; if (linklist != NULL) /* If vertex has a list of link */ linklist->next = linkptr3; /* Add link to the list */ else vexxptr->linklist = linkptr3; /* Else create the list */ linknbr ++; linkptr3->hashnum = vexxptr - hashtab; hashtab[linkptr3->hashnum].vertnum = vertnum2; linkptr3->partval = partval2; linkptr3->gain = gain + partlist[partval2].gain; if (partval2 != minloadpartval) linkptr3->minloadpartval = minloadpartval; else linkptr3->minloadpartval = secondloadpartval; linkptr3->minloadpartload = minloadpartload; if (vexxptr->lockprev == (WgraphPartFmVertex *) ~0/* || linkptr3->gain == -1 */) gainTablAdd(tablptr, (GainLink *) linkptr3, linkptr3->gain); /* add the link in the gain table of the part */ else linkptr3->gainlink.next = (GainLink *) 1; if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVELINKADD; savetab[savenbr].u.linkdata.linknum = linkptr3 - linktab; savetab[savenbr].u.linkdata.gain = linkptr3->gain; movetab[movenbr] = savenbr; savenbr ++; linklist = linkptr3; grafptr->compload[partval2] += velobax[vertnum2 & velomsk]; partlist[partval2].loadgain += velobax[vertnum2 & velomsk]; grafptr->compsize[partval2] ++; partlist[partval2].sizegain ++; if (partlist[partval2].isinloadlist != 1) { /* link the part in the load list */ partlist[partval2].isinloadlist = 1; partlist[partval2].loadprev = partlistloadptr; partlistloadptr = partlist + partval2; } partlist[partval2].gain = 0; } partlistptr = partlistptr->prev; partlist[partval2].prev = NULL; } if (linklist != NULL) linklist->next = NULL; } vertlist2->linked = ~0; vertlist2 = vertlist2->prev; } while (partlistloadptr != NULL) { /* For each part in the load list */ if (partlistloadptr->loadgain != 0) { if (savenbr >= hashsiz) { if (wgraphPartFmResize () != 0) { errorPrint ("wgraphPartFm: out of memory (2)"); return (1); } } savetab[savenbr].type = WGRAPHSEPAFMSAVELOAD; /* Save load variation */ savetab[savenbr].u.loaddata.partval = partlistloadptr - partlist; savetab[savenbr].u.loaddata.loaddiff = partlistloadptr->loadgain; savetab[savenbr].u.loaddata.sizediff = partlistloadptr->sizegain; movetab[movenbr] = savenbr; savenbr ++; velosum += partlistloadptr->loadgain; } partlistloadptr->loadgain = partlistloadptr->sizegain = partlistloadptr->isinloadlist = 0; partlistloadptr = partlistloadptr->loadprev; } vexxptr2->lockprev = locklist; /* Lock the selected vertex */ locklist = vexxptr2; if (grafptr->fronload < frlobst) { movenbr = savenbr = diffload = 0; moveflag = 1; frlobst = grafptr->fronload; } else if ((grafptr->fronload == frlobst) && (diffload < -1)) { movenbr = savenbr = diffload = 0; moveflag = 1; } else if (linkptr->minloadpartval == -1) { movenbr = savenbr = diffload = 0; } else if ((grafptr->compload[linkptr->partval] < minload) || (grafptr->compload[linkptr->partval] < grafptr->compload[linkptr->minloadpartval])) { movenbr = savenbr = diffload = 0; } } while (locklist != NULL) { /* For each locked vertex */ WgraphPartFmLink * restrict linkptr2; vexxptr = locklist; locklist = locklist->lockprev; /* Unlock it */ vexxptr->lockprev = (WgraphPartFmVertex *) ~0; for (linkptr2 = vexxptr->linklist; linkptr2 != NULL; linkptr2 = linkptr2->next) { if (linkptr2->gainlink.next == (GainLink *) 1) gainTablAdd(tablptr, (GainLink *) linkptr2, linkptr2->gain); /* Add link to part gain table */ } } locklist = NULL; for ( ; movenbr > 0; movenbr --) { /* For each move to undo */ for (savenum = movetab[movenbr]; savenum > movetab[movenbr - 1]; savenum --) { WgraphPartFmLink * restrict linkptr2; switch (savetab[savenum].type) { case WGRAPHSEPAFMSAVEMOVE : if (savetab[savenum].u.movedata.partval == -1) grafptr->fronload += velobax[hashtab[savetab[savenum].u.movedata.hashnum].vertnum & velomsk]; if (hashtab[savetab[savenum].u.movedata.hashnum].partval == -1) grafptr->fronload -= velobax[hashtab[savetab[savenum].u.movedata.hashnum].vertnum & velomsk]; hashtab[savetab[savenum].u.movedata.hashnum].partval = savetab[savenum].u.movedata.partval; break; case WGRAPHSEPAFMSAVELINKDEL : linkptr2 = linktab + savetab[savenum].u.linkdata.linknum; linkptr2->gain = savetab[savenum].u.linkdata.gain; gainTablAdd (tablptr, (GainLink *) linkptr2, linkptr2->gain); /* Add link into part gain table */ break; case WGRAPHSEPAFMSAVELINKADD : linkptr2 = linktab + savetab[savenum].u.linkdata.linknum; if (linkptr2->gainlink.next != (GainLink *) 1) { gainTablDel (tablptr, (GainLink *) linkptr2); /* Remove link from table */ linkptr2->gainlink.next = NULL; } break; case WGRAPHSEPAFMSAVELOAD: grafptr->compload[savetab[savenum].u.loaddata.partval] -= savetab[savenum].u.loaddata.loaddiff; grafptr->compsize[savetab[savenum].u.loaddata.partval] -= savetab[savenum].u.loaddata.sizediff; break; } } } } while ((moveflag != 0) && /* As long as vertices are moved */ (-- passnbr > 0)); /* and we are allowed to loop */ grafptr->fronload = 0; for (vexxptr = hashtab, fronnum = 0; /* Build new frontier */ vexxptr < hashtab + (hashmax << 2); vexxptr ++) { /* from all vertices in table */ Gnum vertnum; vertnum = vexxptr->vertnum; if (vertnum != ~0) { /* If vertex slot is used */ Gnum partval; /* New part of current vertex */ Gnum partold; /* Old part of current vertex */ partval = vexxptr->partval; partold = grafptr->parttax[vertnum]; /* Get old part value from array */ if (partval != partold) /* If vertex part changed */ grafptr->parttax[vertnum] = partval; /* Set new part value */ if (partval == -1) { grafptr->fronload += velobax[vertnum & velomsk]; grafptr->frontab[fronnum ++] = vexxptr->vertnum; } } } grafptr->fronnbr = fronnum; memFree (hashtab); /* Free group leader */ gainTablExit (tablptr); return (0); } /* This routine doubles the size all of the arrays ** involved in handling the hash table and hash ** vertex arrays. ** It returns: ** - 0 : if resizing succeeded. ** - !0 : if out of memory. */ static int wgraphPartFmResize () { errorPrint ("wgraphPartFmResize: not implemented"); return (1); } scotch_6.0.9/src/libscotch/parser.c0000644000302600021200000006342713470115365017477 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** This module is the strategy lexical and **/ /** syntactic analyzer. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 02 may 1996 **/ /** # Version 3.2 : from : 07 oct 1996 **/ /** to 19 oct 1996 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 10 sep 2001 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 02 feb 2004 **/ /** # Version 5.0 : from : 20 feb 2008 **/ /** to 20 feb 2008 **/ /** # Version 5.1 : from : 22 oct 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 01 jun 2012 **/ /** to 30 dec 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define PARSER #include "module.h" #include "common.h" #undef INTEGER /* In case someone defined them */ #undef DOUBLE #include "parser.h" #include "parser_yy.h" /* ** The static and global variables. */ static StratTab stratdummytab = { NULL, NULL, NULL }; /* Dummy strategy table for the dummy empty object */ Strat stratdummy = { &stratdummytab, STRATNODEEMPTY }; /* Dummy empty object for offset computations */ #ifdef COMMON_PTHREAD_MEMORY static int muteflag = 1; /*+ Flag for mutex initialization +*/ static pthread_mutex_t mutelocdat; /*+ Local mutex for parsing +*/ #endif /* COMMON_PTHREAD_MEMORY */ /**************************/ /* */ /* The strategy routines. */ /* */ /**************************/ /* This routine parses the given strategy ** string and builds the corresponding ** strategy tree. ** It returns: ** - !NULL : pointer to the strategy. ** - NULL : on error. */ Strat * stratInit ( const StratTab * const strattab, /*+ Pointer to strategy parsing table +*/ const char * const string) /*+ Strategy string to parse +*/ { Strat * o; #ifdef SCOTCH_DEBUG_PARSER1 if ((strattab == NULL) || (string == NULL)) { errorPrint ("stratInit: invalid parameter"); return (NULL); } #endif /* SCOTCH_DEBUG_PARSER1 */ #ifdef COMMON_PTHREAD_MEMORY if (muteflag != 0) { /* Unsafe code with respect to race conditions but should work; portable TSL needed */ muteflag = 0; pthread_mutex_init (&mutelocdat, NULL); /* Initialize local mutex */ } pthread_mutex_lock (&mutelocdat); /* Lock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ o = stratParserParse (strattab, string); /* Parse strategy string */ #ifdef COMMON_PTHREAD_MEMORY pthread_mutex_unlock (&mutelocdat); /* Unlock local mutex */ #endif /* COMMON_PTHREAD_MEMORY */ return (o); } /* This routine frees a strategy structure. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int stratExit ( Strat * const strat) { StratParamTab * paratab; /* Table of method parameters */ byte * paraofft; /* Offset of parameter within method structure */ unsigned int i; int o; if (strat == NULL) /* If node does not exist, abort */ return (0); o = 0; /* Assume everything will be all right */ switch (strat->type) { /* Recursively free sub-strategies */ case STRATNODECONCAT : o = stratExit (strat->data.concat.strat[0]); o |= stratExit (strat->data.concat.strat[1]); break; case STRATNODECOND : o = stratTestExit (strat->data.cond.test); o |= stratExit (strat->data.cond.strat[0]); if (strat->data.cond.strat[1] != NULL) o |= stratExit (strat->data.cond.strat[1]); break; case STRATNODESELECT : o = stratExit (strat->data.select.strat[0]); o |= stratExit (strat->data.select.strat[1]); break; case STRATNODEEMPTY : /* Empty strategy node */ if (strat == &stratdummy) /* If node is empty dummy node */ return (0); /* Return without freeing it */ break; case STRATNODEMETHOD : /* Method strategy node */ paratab = strat->tabl->paratab; /* Free the method parameters */ for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == strat->data.method.meth) && /* For all parameters of that method */ (paratab[i].type == STRATPARAMSTRAT)) { /* Which are non-deprecated strategy parameters */ paraofft = (byte *) &strat->data.method.data + /* Compute parameter offset within method */ (paratab[i].dataofft - paratab[i].database); o |= stratExit (*((Strat **) paraofft)); /* Perform recursion */ } } break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratExit: invalid strategy node"); o = 1; break; #endif /* SCOTCH_DEBUG_PARSER2 */ } memFree (strat); /* Free strategy structure itself */ return (o); /* Return output code */ } /* This routine displays the given ** strategy structure. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int stratSave ( const Strat * const strat, FILE * const stream) { unsigned int paraflag; /* Flag set if method has parameters */ StratParamTab * paratab; /* Pointer to method parameter table */ byte * paraofft; /* Offset of parameter within method structure */ unsigned int i; int o; o = 0; switch (strat->type) { /* Recursively view sub-strategies */ case STRATNODECOND : if ((fprintf (stream, "(/(") == EOF) || (stratTestSave (strat->data.cond.test, stream) != 0) || (fprintf (stream, ")?(") == EOF) || (stratSave (strat->data.cond.strat[0], stream) != 0)) o = 1; if ((o == 0) && (strat->data.cond.strat[1] != NULL)) { if ((fprintf (stream, "):(") == EOF) || (stratSave (strat->data.cond.strat[1], stream) != 0)) o = 1; } if (o == 0) o = (fprintf (stream, ");)") == EOF); break; case STRATNODECONCAT : if ((stratSave (strat->data.concat.strat[0], stream) != 0) || (stratSave (strat->data.concat.strat[1], stream) != 0)) o = 1; break; case STRATNODESELECT : if ((fprintf (stream, "(") == EOF) || (stratSave (strat->data.select.strat[0], stream) != 0) || (fprintf (stream, "|") == EOF) || (stratSave (strat->data.select.strat[1], stream) != 0) || (fprintf (stream, ")") == EOF)) o = 1; case STRATNODEEMPTY : break; case STRATNODEMETHOD : if (fprintf (stream, "%s", strat->tabl->methtab[strat->data.method.meth].name) == EOF) { /* Print method name */ o = 1; break; } paraflag = 0; /* No method parameters seen yet */ paratab = strat->tabl->paratab; for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == strat->data.method.meth) && /* For all parameters of that method */ ((paratab[i].type & STRATPARAMDEPRECATED) == 0)) { /* Which are not deprecated */ paraofft = (byte*) &strat->data.method.data + /* Compute parameter offset within method */ (paratab[i].dataofft - paratab[i].database); if (fprintf (stream, "%c%s=", /* Open or continue parameter list */ ((paraflag ++ == 0) ? '{' : ','), paratab[i].name) == EOF) { o = 1; break; } switch (paratab[i].type) { /* Print parameter value */ case STRATPARAMCASE : /* Case value */ o = (fprintf (stream, "%c", /* Print corresponding character */ ((char *) paratab[i].datasltr)[*((unsigned int *) paraofft)]) == EOF); break; case STRATPARAMINT : /* Integer value */ o = (fprintf (stream, INTSTRING, *((INT *) paraofft)) == EOF); break; case STRATPARAMDOUBLE : /* Double value */ o = (fprintf (stream, "%g", *((double *) paraofft)) == EOF); break; case STRATPARAMSTRAT : /* Strategy */ o = stratSave (*((Strat **) paraofft), stream); /* Perform recursion */ break; case STRATPARAMSTRING : /* String value */ o = (fprintf (stream, "%s", (char *) paraofft) == EOF); break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratSave: invalid parameter type"); return (1); #endif /* SCOTCH_DEBUG_PARSER2 */ } } if (o != 0) /* If an error has occured */ break; /* Abort the loop */ } if ((o == 0) && (paraflag != 0)) /* If there is a parameter list */ o |= (fprintf (stream, "}") == EOF); /* Close it */ break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratSave: invalid strategy node"); return (1); #endif /* SCOTCH_DEBUG_PARSER2 */ } if (o != 0) { errorPrint ("stratSave: bad output"); } return (o); } /*****************************************/ /* */ /* These routines handle strategy tests. */ /* */ /*****************************************/ /* This routine evaluates the ** given condition. ** It returns: ** - 0 : on success; eval updated. ** - !0 : on error. */ int stratTestEval ( const StratTest * restrict const test, StratTest * restrict const eval, /*+ Place where to return final value +*/ const void * restrict const data) /*+ Pointer to data structure where to read variables from +*/ { StratTest val[2]; /* Temporary evaluation variables */ StratTestType sign; /* Sign of comparison */ int o; #ifdef SCOTCH_DEBUG_PARSER1 if ((test == NULL) || (eval == NULL) || (data == NULL)) { errorPrint ("stratTestEval: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_PARSER1 */ o = 0; /* Assume no error */ switch (test->typetest) { case STRATTESTNOT : /* Not operator */ o = stratTestEval (test->data.test[0], eval, data); #ifdef SCOTCH_DEBUG_PARSER2 if ((o == 0) && (eval->typenode != STRATPARAMLOG)) { errorPrint ("stratTestEval: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ eval->data.val.vallog = 1 - eval->data.val.vallog; break; case STRATTESTAND : /* And operator */ o = stratTestEval (test->data.test[0], eval, data); #ifdef SCOTCH_DEBUG_PARSER2 if ((o == 0) && (eval->typenode != STRATPARAMLOG)) { errorPrint ("stratTestEval: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ if ((o == 0) && (eval->data.val.vallog == 1)) { o = stratTestEval (test->data.test[1], eval, data); #ifdef SCOTCH_DEBUG_PARSER2 if (eval->typenode != STRATPARAMLOG) { errorPrint ("stratTestEval: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ } break; case STRATTESTOR : /* Or operator */ o = stratTestEval (test->data.test[0], eval, data); #ifdef SCOTCH_DEBUG_PARSER2 if ((o == 0) && (eval->typenode != STRATPARAMLOG)) { errorPrint ("stratTestEval: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ if ((o == 0) && (eval->data.val.vallog == 0)) { o = stratTestEval (test->data.test[1], eval, data); #ifdef SCOTCH_DEBUG_PARSER2 if (eval->typenode != STRATPARAMLOG) { errorPrint ("stratTestEval: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ } break; case STRATTESTLT : /* Less-than operator */ case STRATTESTEQ : /* Equal-to operator */ case STRATTESTGT : /* Greater-than operator */ o = stratTestEval (test->data.test[0], &val[0], data); o |= stratTestEval (test->data.test[1], &val[1], data); o |= stratTestEvalCast (&val[0], &val[1]); if (o != 0) break; sign = STRATTESTNBR; /* In case of error */ switch (val[0].typenode) { case STRATPARAMDOUBLE : sign = (val[0].data.val.valdbl < val[1].data.val.valdbl) ? STRATTESTLT : ((val[0].data.val.valdbl > val[1].data.val.valdbl) ? STRATTESTGT : STRATTESTEQ); break; case STRATPARAMINT : sign = (val[0].data.val.valint < val[1].data.val.valint) ? STRATTESTLT : ((val[0].data.val.valint > val[1].data.val.valint) ? STRATTESTGT : STRATTESTEQ); break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratTestEval: internal error (6)"); o = 1; break; #endif /* SCOTCH_DEBUG_PARSER2 */ } eval->typenode = STRATPARAMLOG; /* Build test result */ eval->data.val.vallog = (sign == test->typetest); break; case STRATTESTADD : /* Addition operator */ o = stratTestEval (test->data.test[0], &val[0], data); o |= stratTestEval (test->data.test[1], &val[1], data); o |= stratTestEvalCast (&val[0], &val[1]); if (o != 0) break; if (val[0].typenode == STRATPARAMDOUBLE) eval->data.val.valdbl = val[0].data.val.valdbl + val[1].data.val.valdbl; else eval->data.val.valint = val[0].data.val.valint + val[1].data.val.valint; eval->typenode = val[0].typenode; break; case STRATTESTSUB : /* Subtraction operator */ o = stratTestEval (test->data.test[0], &val[0], data); o |= stratTestEval (test->data.test[1], &val[1], data); o |= stratTestEvalCast (&val[0], &val[1]); if (o != 0) break; if (val[0].typenode == STRATPARAMDOUBLE) eval->data.val.valdbl = val[0].data.val.valdbl - val[1].data.val.valdbl; else eval->data.val.valint = val[0].data.val.valint - val[1].data.val.valint; eval->typenode = val[0].typenode; break; case STRATTESTMUL : /* Multiplication operator */ o = stratTestEval (test->data.test[0], &val[0], data); o |= stratTestEval (test->data.test[1], &val[1], data); o |= stratTestEvalCast (&val[0], &val[1]); if (o != 0) break; if (val[0].typenode == STRATPARAMDOUBLE) eval->data.val.valdbl = val[0].data.val.valdbl * val[1].data.val.valdbl; else eval->data.val.valint = val[0].data.val.valint * val[1].data.val.valint; eval->typenode = val[0].typenode; break; case STRATTESTMOD : /* Modulus operator */ o = stratTestEval (test->data.test[0], &val[0], data); o |= stratTestEval (test->data.test[1], &val[1], data); o |= stratTestEvalCast (&val[0], &val[1]); if (o != 0) break; if (val[0].typenode == STRATPARAMDOUBLE) eval->data.val.valdbl = fmod (val[0].data.val.valdbl, val[1].data.val.valdbl); else eval->data.val.valint = val[0].data.val.valint % val[1].data.val.valint; eval->typenode = val[0].typenode; break; case STRATTESTVAL : /* Constant value */ *eval = *test; /* Copy value */ break; case STRATTESTVAR : /* Variable */ switch (test->typenode) { case STRATPARAMDOUBLE : eval->data.val.valdbl = *((double *) ((byte *) data + test->data.var.datadisp)); break; case STRATPARAMINT : eval->data.val.valint = *((INT *) ((byte *) data + test->data.var.datadisp)); break; #ifdef SCOTCH_DEBUG_PARSER1 default : errorPrint ("stratTestEval: internal error (7)"); o = 1; break; #endif /* SCOTCH_DEBUG_PARSER1 */ } eval->typenode = test->typenode; break; #ifdef SCOTCH_DEBUG_PARSER1 default : errorPrint ("stratTestEval: invalid condition type (%u)", test->typetest); o = 1; break; #endif /* SCOTCH_DEBUG_PARSER1 */ } eval->typetest = STRATTESTVAL; return (o); } /* This routine casts the type of one ** of the two input values so as to ** get the same type for both values. ** It returns: ** - VOID : in all cases; */ static int stratTestEvalCast ( StratTest * const test0, StratTest * const test1) { #ifdef SCOTCH_DEBUG_PARSER2 if (((test0->typenode != STRATPARAMINT) && (test0->typenode != STRATPARAMDOUBLE)) || ((test1->typenode != STRATPARAMINT) && (test1->typenode != STRATPARAMDOUBLE))) { errorPrint ("stratTestEvalCast: internal error"); return (1); } #endif /* SCOTCH_DEBUG_PARSER2 */ if (test0->typenode != test1->typenode) { /* If value types differ */ if (test0->typenode == STRATPARAMDOUBLE) { test1->typenode = STRATPARAMDOUBLE; test1->data.val.valdbl = (double) test1->data.val.valint; } else { test0->typenode = STRATPARAMDOUBLE; test0->data.val.valdbl = (double) test0->data.val.valint; } } return (0); } /* This routine fres the given ** strategy condition. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int stratTestExit ( StratTest * const test) { int o; /* Output condition flag */ #ifdef SCOTCH_DEBUG_PARSER1 if (test == NULL) { errorPrint ("stratTestExit: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_PARSER1 */ o = 0; switch (test->typetest) { case STRATTESTNOT : /* Not operator */ o = stratTestExit (test->data.test[0]); /* Free the son */ break; case STRATTESTAND : /* And operator */ case STRATTESTOR : /* Or operator */ case STRATTESTLT : /* Less-than operator */ case STRATTESTEQ : /* Equal-to operator */ case STRATTESTGT : /* Greater-than operator */ case STRATTESTMOD : /* Modulus operator */ case STRATTESTMUL : /* Multiplication operator */ case STRATTESTADD : /* Addition operator */ case STRATTESTSUB : /* Subtraction operator */ o = stratTestExit (test->data.test[0]); /* Free the sons */ o |= stratTestExit (test->data.test[1]); break; case STRATTESTVAL : /* Constant value */ case STRATTESTVAR : /* Variable */ break; #ifdef SCOTCH_DEBUG_PARSER1 default : errorPrint ("stratTestExit: invalid condition type (%u)", test->typetest); o = 1; break; #endif /* SCOTCH_DEBUG_PARSER1 */ } memFree (test); /* Free the structure */ return (o); } /* This routine displays the ** given strategy condition. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static char strattestsaveop[STRATTESTNBR] = "|&!=><+-*%##"; static char * strattestsavepa[2][2] = { { "(", ")" }, { "", "" } }; int stratTestSave ( const StratTest * const test, FILE * const stream) { int i; int o; #ifdef SCOTCH_DEBUG_PARSER1 if ((test == NULL) || (stream == NULL)) { errorPrint ("stratTestSave: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_PARSER1 */ o = 0; /* Assume no error */ switch (test->typetest) { case STRATTESTNOT : /* Not operator */ if ((fprintf (stream, "!(") == EOF) || (stratTestSave (test->data.test[0], stream) != 0) || (fprintf (stream, ")") == EOF)) o = 1; break; case STRATTESTAND : /* And operator */ case STRATTESTOR : /* Or operator */ case STRATTESTEQ : /* Equal-to operator */ case STRATTESTGT : /* Greater-than operator */ case STRATTESTLT : /* Less-than operator */ case STRATTESTADD : /* Addition operator */ case STRATTESTSUB : /* Subtraction operator */ case STRATTESTMUL : /* Multiplication operator */ case STRATTESTMOD : /* Modulus operator */ i = (test->data.test[0]->typetest < test->typetest) ? 1 : 0; fprintf (stream, "%s", strattestsavepa[i][0]); o = stratTestSave (test->data.test[0], stream); fprintf (stream, "%s", strattestsavepa[i][1]); if (o == 0) { fprintf (stream, "%c", strattestsaveop[test->typetest]); i = (test->data.test[1]->typetest < test->typetest) ? 1 : 0; fprintf (stream, "%s", strattestsavepa[i][0]); stratTestSave (test->data.test[1], stream); fprintf (stream, "%s", strattestsavepa[i][1]); } break; case STRATTESTVAL : /* Constant value */ switch (test->typenode) { case STRATPARAMDOUBLE : o = (fprintf (stream, "%lf", test->data.val.valdbl) == EOF); break; case STRATPARAMINT : o = (fprintf (stream, INTSTRING, (INT) test->data.val.valint) == EOF); break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratTestSave: invalid value type"); o = 1; #endif /* SCOTCH_DEBUG_PARSER2 */ } break; case STRATTESTVAR : /* Variable */ for (i = 0; test->data.var.datatab->condtab[i].name != NULL; i ++) { if ((test->data.var.datatab->condtab[i].dataofft - test->data.var.datatab->condtab[i].database) == test->data.var.datadisp) break; } if (test->data.var.datatab->condtab[i].name == NULL) { errorPrint ("stratTestSave: invalid variable displacement"); return (1); } o = (fprintf (stream, "%s", test->data.var.datatab->condtab[i].name) == EOF); break; #ifdef SCOTCH_DEBUG_PARSER2 default : errorPrint ("stratTestSave: invalid condition type (%u)", test->typetest); o = 1; #endif /* SCOTCH_DEBUG_PARSER2 */ } return (o); } scotch_6.0.9/src/libscotch/vdgraph_separate_ml.h0000644000302600021200000001111413465315041022176 0ustar pelegrinpelegrin/* Copyright 2007-2009,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_ml.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the sequential vertex separation **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to : 03 aug 2007 **/ /** # Version 5.1 : from : 14 dec 2008 **/ /** to : 29 may 2009 **/ /** # Version 6.0 : from : 28 sep 2014 **/ /** to : 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VdgraphSeparateMlParam_ { INT passnbr; /*+ Number of coarsening passes to go +*/ INT foldmax; /*+ Maximum number of vertices per processor to do folding +*/ int foldval; /*+ Type of folding +*/ INT coarnbr; /*+ Minimum number of vertices +*/ double coarrat; /*+ Coarsening ratio +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ Strat * stratseq; /*+ Strategy when running on a single processor +*/ } VdgraphSeparateMlParam; /* ** The function prototypes. */ #ifdef VDGRAPH_SEPARATE_ML static int vdgraphSeparateMlCoarsen (Vdgraph * const, Vdgraph * const, DgraphCoarsenMulti * restrict * const, const VdgraphSeparateMlParam * const); static int vdgraphSeparateMlUncoarsen (Vdgraph *, const Vdgraph * const, const DgraphCoarsenMulti * restrict const); static void vdgraphSeparateMlOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); static int vdgraphSeparateMl2 (Vdgraph * const, const VdgraphSeparateMlParam * const); #endif /* VDGRAPH_SEPARATE_ML */ int vdgraphSeparateMl (Vdgraph * const, const VdgraphSeparateMlParam * const); scotch_6.0.9/src/libscotch/graph_match_scan.c0000644000302600021200000004174213470115365021460 0ustar pelegrinpelegrin/* Copyright 2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_match_scan.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the stub of the **/ /** threaded and un-threaded centralized **/ /** graph matching functions. **/ /** **/ /** DATES : # Version 6.0 : from : 01 oct 2012 **/ /** to 14 aug 2015 **/ /** **/ /** NOTES : # This code partly derives from the **/ /** code of graph_match.c partly updated **/ /** in the early stages of release 6.0 **/ /** so as to account for fixed vertices **/ /** and an old partition. **/ /** **/ /************************************************************/ /***************************/ /* */ /* The matching subroutine */ /* pattern. */ /* */ /***************************/ /* This routine matches the vertices of the given ** centralized graph according to various constraints. ** It returns: ** - void : in all cases */ static void GRAPHMATCHSCANNAME ( GraphCoarsenThread * restrict thrdptr) /* Thread-dependent data */ { GraphCoarsenData * restrict const coarptr = (GraphCoarsenData *) (thrdptr->thrddat.grouptr); const Graph * restrict const finegrafptr = coarptr->finegrafptr; Gnum finevertnum; /* Current vertex index */ Gnum finevertnnd; /* Current end of vertex array */ #ifdef GRAPHMATCHSCANVELOTAB Gnum finevelomin = (1 * finegrafptr->velosum) / (4 * finegrafptr->vertnbr); /* Minimum load of neighbor */ Gnum coarvelomax = (4 * finegrafptr->velosum) / (1 * (coarptr->coarvertmax - coarptr->finevfixnbr)) + 1; #endif /* GRAPHMATCHSCANVELOTAB */ Gnum coarvertnbr = thrdptr->coarvertnbr; /* Current number of multinode vertices */ #if ((defined GRAPHMATCHSCANP1INPERT) || defined (GRAPHMATCHSCANP2INPERT)) const Gnum degrmax = finegrafptr->degrmax; Gnum pertbas; Gnum pertnnd; Gnum pertnbr; Gunum randval = thrdptr->randval; /* Unsigned to avoid negative random numbers */ #endif /* ((defined GRAPHMATCHSCANP1INPERT) || defined (GRAPHMATCHSCANP2INPERT)) */ #if ((defined GRAPHMATCHSCANP1INQUEUE) || defined (GRAPHMATCHSCANP2INQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) Gnum * const queutab = coarptr->finequeutab; volatile int * const locktax = coarptr->finelocktax; #endif /* ((defined GRAPHMATCHSCANP1INQUEUE) || defined (GRAPHMATCHSCANP2INQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) */ #if ((defined GRAPHMATCHSCANP1INQUEUE) || defined (GRAPHMATCHSCANP2INQUEUE)) Gnum queunnd; Gnum queunum; #endif /* ((defined GRAPHMATCHSCANP1INQUEUE) || defined (GRAPHMATCHSCANP2INQUEUE)) */ #if ((defined GRAPHMATCHSCANP1OUTQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) Gnum queunew; #endif /* ((defined GRAPHMATCHSCANP1OUTQUEUE) || defined (GRAPHMATCHSCANP2OUTQUEUE)) */ const int flagval = coarptr->flagval; const Gnum * restrict const fineverttax = finegrafptr->verttax; const Gnum * restrict const finevendtax = finegrafptr->vendtax; #ifdef GRAPHMATCHSCANVELOTAB const Gnum * restrict const finevelotax = finegrafptr->velotax; #endif /* GRAPHMATCHSCANVELOTAB */ const Gnum * restrict const fineedgetax = finegrafptr->edgetax; #ifdef GRAPHMATCHSCANEDLOTAB const Gnum * restrict const fineedlotax = finegrafptr->edlotax; #endif /* GRAPHMATCHSCANEDLOTAB */ volatile Gnum * restrict const finematetax = coarptr->finematetax; #ifdef GRAPHMATCHSCANPFIXTAB const Gnum * restrict const fineparotax = coarptr->fineparotax; const Gnum * restrict const finepfixtax = coarptr->finepfixtax; #endif /* GRAPHMATCHSCANPFIXTAB */ #ifdef GRAPHMATCHSCANP1INPERT /* First pass is only for start or sequential routines */ #ifdef GRAPHMATCHSCANVELOTAB #ifdef GRAPHMATCHSCANP1OUTQUEUE queunew = thrdptr->queubas; #endif /* GRAPHMATCHSCANP1OUTQUEUE */ #ifdef GRAPHMATCHSCANP1INQUEUE for (queunum = thrdptr->queubas, queunnd = thrdptr->queunnd; queunum < queunnd; queunum ++) { finevertnum = queutab[queunum]; #endif /* GRAPHMATCHSCANP1INQUEUE */ #ifdef GRAPHMATCHSCANP1INPERT for (pertbas = thrdptr->finequeubas, pertnnd = thrdptr->finequeunnd; pertbas < pertnnd; pertbas += pertnbr) { /* Run cache-friendly perturbation */ Gnum pertval; /* Current index in perturbation area */ pertnbr = degrmax * 2 + randval % (degrmax + 1) + 1; /* Compute perturbation area size (avoid DIV0 in random) */ if (pertnbr >= GRAPHMATCHSCANPERTPRIME) pertnbr = 32 + randval % (GRAPHMATCHSCANPERTPRIME - 34); if (pertbas + pertnbr > pertnnd) pertnbr = pertnnd - pertbas; pertval = 0; /* Start from first perturbation vertex */ do { /* Loop on perturbation vertices */ finevertnum = pertbas + pertval; /* Compute corresponding vertex number */ #endif /* GRAPHMATCHSCANP1INPERT */ { Gnum fineedgenum; Gnum finevertbst; #ifdef GRAPHMATCHSCANEDLOTAB Gnum fineedlobst = -1; /* Edge load of current best neighbor */ #endif /* GRAPHMATCHSCANEDLOTAB */ if (finematetax[finevertnum] >= 0) /* If vertex already mated, skip it without remembering it */ goto loop1; finevertbst = finevertnum; /* Assume we match with ourselves */ if ((finevelotax[finevertnum] >= finevelomin) || /* If vertex is not too light, skip it and record it */ (fineverttax[finevertnum] == finevendtax[finevertnum])) /* Same for isolated vertex: process later */ #ifdef GRAPHMATCHSCANP1OUTQUEUE goto record1; #else /* GRAPHMATCHSCANP1OUTQUEUE */ goto loop1; #endif /* GRAPHMATCHSCANP1OUTQUEUE */ for (fineedgenum = fineverttax[finevertnum]; fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum finevertend; finevertend = fineedgetax[fineedgenum]; if ((finematetax[finevertend] < 0) /* If unmatched vertex */ #ifdef GRAPHMATCHSCANPFIXTAB && ((finepfixtax == NULL) || (finepfixtax[finevertend] == finepfixtax[finevertnum])) /* We can only mate if potential mate has same value */ && ((fineparotax == NULL) || (fineparotax[finevertend] == fineparotax[finevertnum])) /* And is in the same old part */ #endif /* GRAPHMATCHSCANPFIXTAB */ #ifdef GRAPHMATCHSCANEDLOTAB && (fineedlotax[fineedgenum] > fineedlobst) /* And is better candidate */ #endif /* GRAPHMATCHSCANEDLOTAB */ ) { finevertbst = finevertend; #ifdef GRAPHMATCHSCANEDLOTAB fineedlobst = fineedlotax[fineedgenum]; #else /* GRAPHMATCHSCANEDLOTAB */ break; #endif /* GRAPHMATCHSCANEDLOTAB */ } } #ifdef GRAPHMATCHSCANP2OUTQUEUE if (__sync_lock_test_and_set (&locktax[finevertnum], 1)) /* If could not acquire local vertex */ goto loop1; /* Do not remember it as some other vertex has already acquired both */ if (finevertbst != finevertnum) { /* If we mated with another vertex */ if (__sync_lock_test_and_set (&locktax[finevertbst], 1)) { /* If could not acquire mate vertex */ __sync_lock_release (&locktax[finevertnum]); /* Release lock on local vertex */ #ifdef GRAPHMATCHSCANP1OUTQUEUE record1: queutab[queunew ++] = finevertnum; /* Postpone processing to next pass */ #endif /* GRAPHMATCHSCANP1OUTQUEUE */ goto loop1; } finematetax[finevertbst] = finevertnum; } #else /* GRAPHMATCHSCANP2OUTQUEUE */ finematetax[finevertbst] = finevertnum; /* If last (sequential) pass, always record */ #endif /* GRAPHMATCHSCANP2OUTQUEUE */ finematetax[finevertnum] = finevertbst; /* At this point or if last pass, record */ coarvertnbr ++; /* One more coarse vertex created */ loop1: ; } #ifdef GRAPHMATCHSCANP1INPERT pertval = (pertval + GRAPHMATCHSCANPERTPRIME) % pertnbr; /* Compute next perturbation index */ } while (pertval != 0); randval += finevertnum; /* Perturbation for thread-dependent pseudo-random number */ } #endif /* GRAPHMATCHSCANP1INPERT */ #ifdef GRAPHMATCHSCANP1INQUEUE } #endif /* GRAPHMATCHSCANP1INQUEUE */ #ifdef GRAPHMATCHSCANP1OUTQUEUE thrdptr->queunnd = queunew; /* Record queue index for next pass */ #endif /* GRAPHMATCHSCANP1OUTQUEUE */ #endif /* GRAPHMATCHSCANVELOTAB */ #endif /* GRAPHMATCHSCANP1INPERT */ #ifdef GRAPHMATCHSCANP2OUTQUEUE queunew = thrdptr->finequeubas; #endif /* GRAPHMATCHSCANP2OUTQUEUE */ #ifdef GRAPHMATCHSCANP2INQUEUE for (queunum = thrdptr->finequeubas, queunnd = thrdptr->finequeunnd; queunum < queunnd; queunum ++) { finevertnum = queutab[queunum]; #endif /* GRAPHMATCHSCANP2INQUEUE */ #ifdef GRAPHMATCHSCANP2INPERT for (pertbas = thrdptr->finequeubas, pertnnd = thrdptr->finequeunnd; pertbas < pertnnd; pertbas += pertnbr) { /* Run cache-friendly perturbation */ Gnum pertval; /* Current index in perturbation area */ pertnbr = degrmax * 2 + randval % (degrmax + 1) + 1; /* Compute perturbation area size (avoid DIV0 in random) */ if (pertnbr >= GRAPHMATCHSCANPERTPRIME) pertnbr = 32 + randval % (GRAPHMATCHSCANPERTPRIME - 34); if (pertbas + pertnbr > pertnnd) pertnbr = pertnnd - pertbas; pertval = 0; /* Start from first perturbation vertex */ do { /* Loop on perturbation vertices */ finevertnum = pertbas + pertval; /* Compute corresponding vertex number */ #endif /* GRAPHMATCHSCANP2INPERT */ { Gnum fineedgenum; Gnum finevertbst; if (finematetax[finevertnum] >= 0) /* If vertex already mated, skip it without remembering it */ goto loop2; if (((flagval & GRAPHCOARSENNOMERGE) == 0) && /* If merging isolated vertices is allowed */ (fineverttax[finevertnum] == finevendtax[finevertnum])) { /* And if isolated vertex */ #ifdef GRAPHMATCHSCANP2INPERT Gnum perttmp = pertnnd; do finevertbst = -- perttmp; #endif /* GRAPHMATCHSCANP2INPERT */ #ifdef GRAPHMATCHSCANP2INQUEUE Gnum queutmp = queunnd; do finevertbst = queutab[-- queutmp]; #endif /* GRAPHMATCHSCANP2INQUEUE */ while ((finematetax[finevertbst] >= 0) /* No test for overflow; we will always mate ourselves as we are isolated */ #ifdef GRAPHMATCHSCANPFIXTAB || ((finepfixtax != NULL) && (finepfixtax[finevertbst] != fineparotax[finevertnum])) || ((fineparotax != NULL) && (fineparotax[finevertbst] != fineparotax[finevertnum]))); #else /* GRAPHMATCHSCANPFIXTAB */ ); #ifdef GRAPHMATCHSCANP2INPERT pertnnd = perttmp; /* If no extra conditions on mating, no longer consider traversed array */ #endif /* GRAPHMATCHSCANP2INPERT */ #ifdef GRAPHMATCHSCANP2INQUEUE queunnd = queutmp; #endif /* GRAPHMATCHSCANP2INQUEUE */ #endif /* GRAPHMATCHSCANPFIXTAB */ } else { Gnum fineedgenum; #ifdef GRAPHMATCHSCANVELOTAB Gnum finevelodlt = coarvelomax - finevelotax[finevertnum]; #endif /* GRAPHMATCHSCANVELOTAB */ #ifdef GRAPHMATCHSCANEDLOTAB Gnum fineedlobst = -1; #endif /* GRAPHMATCHSCANEDLOTAB */ finevertbst = finevertnum; /* No matching neighbor found yet */ for (fineedgenum = fineverttax[finevertnum]; /* For all adjacent vertices */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum finevertend; finevertend = fineedgetax[fineedgenum]; if ((finematetax[finevertend] < 0) /* If unmatched vertex */ #ifdef GRAPHMATCHSCANPFIXTAB && ((finepfixtax == NULL) || (finepfixtax[finevertend] == finepfixtax[finevertnum])) /* And is in the same part */ && ((fineparotax == NULL) || (fineparotax[finevertend] == fineparotax[finevertnum])) #endif /* GRAPHMATCHSCANPFIXTAB */ #ifdef GRAPHMATCHSCANVELOTAB && (finevelodlt >= finevelotax[finevertend]) /* And does not create overloads */ #endif /* GRAPHMATCHSCANVELOTAB */ #ifdef GRAPHMATCHSCANEDLOTAB && (fineedlotax[fineedgenum] > fineedlobst) #endif /* GRAPHMATCHSCANEDLOTAB */ ) { /* And is better candidate */ finevertbst = finevertend; #ifdef GRAPHMATCHSCANEDLOTAB fineedlobst = fineedlotax[fineedgenum]; #else /* GRAPHMATCHSCANEDLOTAB */ break; /* First match will do if no edge loads */ #endif /* GRAPHMATCHSCANEDLOTAB */ } } } #ifdef GRAPHMATCHSCANP2OUTQUEUE if (__sync_lock_test_and_set (&locktax[finevertnum], 1)) /* If could not acquire local vertex */ goto loop2; /* Do not remember it as some other vertex has already acquired both */ if (finevertbst != finevertnum) { /* If we mated with another vertex */ if (__sync_lock_test_and_set (&locktax[finevertbst], 1)) { /* If could not acquire mate vertex */ __sync_lock_release (&locktax[finevertnum]); /* Release lock on local vertex */ queutab[queunew ++] = finevertnum; /* Postpone processing to next pass */ goto loop2; } finematetax[finevertbst] = finevertnum; } #else /* GRAPHMATCHSCANP2OUTQUEUE */ finematetax[finevertbst] = finevertnum; /* If last (sequential) pass, always record */ #endif /* GRAPHMATCHSCANP2OUTQUEUE */ finematetax[finevertnum] = finevertbst; /* At this point or if last pass, record */ coarvertnbr ++; /* One more coarse vertex created */ loop2: ; /* We may do something before looping */ } #ifdef GRAPHMATCHSCANP2INPERT pertval = (pertval + GRAPHMATCHSCANPERTPRIME) % pertnbr; /* Compute next perturbation index */ } while (pertval != 0); randval += finevertnum; /* Perturbation for thread-dependent pseudo-random number */ } #endif /* GRAPHMATCHSCANP2INPERT */ #ifdef GRAPHMATCHSCANP2INQUEUE } #endif /* GRAPHMATCHSCANP2INQUEUE */ #ifdef GRAPHMATCHSCANP2OUTQUEUE thrdptr->finequeunnd = queunew; /* Record queue index for next pass */ #endif /* GRAPHMATCHSCANP2OUTQUEUE */ thrdptr->coarvertnbr = coarvertnbr; /* Record subsequent number of multinode vertices */ } scotch_6.0.9/src/libscotch/library_graph_part_ovl_f.c0000644000302600021200000001126613560013261023225 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_part_ovl_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph partitioning routines with **/ /** overlap of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 29 may 2010 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the partitioning routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHPARTOVL, graphpartovl, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const partptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const parttab, \ int * const revaptr), \ (grafptr, partptr, straptr, parttab, revaptr)) { *revaptr = SCOTCH_graphPartOvl (grafptr, *partptr, straptr, parttab); } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ STRATGRAPHPARTOVL, stratgraphpartovl, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHPARTOVL)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratGraphPartOvl (straptr, strtab); /* Call original routine */ memFree (strtab); } /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHPARTOVLBUILD, stratgraphpartovlbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const partnbr, \ const double * const kbalval, \ int * const revaptr), \ (straptr, flagval, partnbr, kbalval, revaptr)) { *revaptr = SCOTCH_stratGraphPartOvlBuild (straptr, *flagval, *partnbr, *kbalval); /* Call original routine */ } scotch_6.0.9/src/libscotch/kgraph_map_ex.c0000644000302600021200000004521313470115365021001 0ustar pelegrinpelegrin/* Copyright 2011,2013,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_ex.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tries to balance the **/ /** subgraphs of the partition as best as **/ /** it can. **/ /** **/ /** DATES : # Version 6.0 : from : 27 may 2011 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_EX #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_map_ex.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the balanced mapping. ** It returns: ** - 0 : if mapping could be computed. ** - 1 : on error. */ int kgraphMapEx ( Kgraph * const grafptr, /*+ Graph to map +*/ const KgraphMapExParam * const paraptr) /*+ Method parameters +*/ { KgraphMapExDom * restrict doextab; KgraphMapExSort * restrict sorttab; KgraphMapExTerm * restrict termtab; KgraphMapExTree * restrict treetab; Anum * restrict parttax; Anum treemax; /* Maximum number of nodes in tree structure */ Anum treenbr; /* Number of nodes in tree structure */ const Arch * restrict archptr; ArchDom domndat; /* Root domain */ Anum domnnbr; Anum domnnum; Gnum sortnbr; /* Number of non-fixed vertices */ Gnum sortnum; Anum termnbr; /* Number of terminal domains in mapping */ Gnum vertnum; Gnum vertnnd; double velosum; /* Sum of vertex weights */ double wghtsum; /* Sum of architecture weights */ Anum wghttmp; /* Sum of architecture weights for archVar */ int flagval; /* Flag unset if load imbalance to fix */ const Gnum * restrict const velotax = grafptr->s.velotax; const Anum * restrict const pfixtax = grafptr->pfixtax; archptr = grafptr->m.archptr; archDomFrst (archptr, &domndat); grafptr->kbalval = paraptr->kbalval; /* Store last k-way imbalance ratio */ domnnbr = grafptr->m.domnnbr; sortnbr = grafptr->s.vertnbr - grafptr->vfixnbr; /* Only sort non-fixed vertices */ treemax = 2 * ((archVar (archptr)) ? domnnbr : archDomSize (archptr, &domndat)); /* At most twice the number of terminals in last rank */ if (memAllocGroup ((void **) (void *) &doextab, (size_t) (domnnbr * sizeof (KgraphMapExDom)), &sorttab, (size_t) (sortnbr * sizeof (KgraphMapExSort)), &termtab, (size_t) (domnnbr * sizeof (KgraphMapExTerm)), &treetab, (size_t) (treemax * sizeof (KgraphMapExTree)), NULL) == NULL) { errorPrint ("kgraphMapEx: out of memory"); return (1); } wghtsum = (double) archDomWght (archptr, &domndat); velosum = (double) grafptr->s.velosum; for (domnnum = 0, termnbr = 0, wghttmp = 0, flagval = 1; domnnum < domnnbr; domnnum ++) { const ArchDom * restrict domnptr; domnptr = &grafptr->m.domntab[domnnum]; if (archDomSize (archptr, domnptr) <= 1) { /* If domain is a terminal (even variable-sized) */ Anum termnum; wghttmp += /* Accumulate subdomain loads in case of variable-sized architectures */ doextab[domnnum].domnwght = archDomWght (archptr, domnptr); doextab[domnnum].compload = 0; doextab[domnnum].comploadmax = ((double) doextab[domnnum].domnwght * velosum * (1.0 + paraptr->kbalval)) / wghtsum; termnum = archDomNum (archptr, domnptr); termtab[termnbr].termnum = termnum; /* Record domain in terminal domain array */ termtab[termnbr].domnnum = domnnum; termnbr ++; /* One more terminal domain */ if ((grafptr->comploadavg[domnnum] + grafptr->comploaddlt[domnnum]) > doextab[domnnum].comploadmax) flagval = 0; /* Set flag if at least one domain is imbalanced */ } } if (archVar (archptr)) { /* If architecture is variable-sized */ Anum termnum; wghtsum = (double) wghttmp / wghtsum; /* Recompute real load sum */ for (termnum = 0; termnum < termnbr; termnum ++) { Anum domnnum; domnnum = termtab[termnum].domnnum; doextab[domnnum].comploadmax = ((double) doextab[domnnum].domnwght * velosum * (1.0 + paraptr->kbalval)) / wghtsum; if ((grafptr->comploadavg[domnnum] + grafptr->comploaddlt[domnnum]) > doextab[domnnum].comploadmax) flagval = 0; /* Set flag if at least one domain is imbalanced */ } } if (flagval != 0) { /* If nothing to do */ memFree (doextab); /* Free group leader */ return (0); } intSort2asc1 (termtab, termnbr); /* Sort terminal domains to allow for dichotomy */ treenbr = 0; /* Prepare to fill tree array; next slot to fill */ kgraphMapExTree (archptr, termtab, termnbr, doextab, treetab, &treenbr, &domndat); /* Recursively fill tree array */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (treenbr >= treemax) { errorPrint ("kgraphMapEx: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ parttax = grafptr->m.parttax; for (vertnum = grafptr->s.baseval, vertnnd = grafptr->s.vertnnd, sortnbr = 0; /* Get vertex weights */ vertnum < vertnnd; vertnum ++) { Gnum veloval; veloval = (velotax != NULL) ? velotax[vertnum] : 1; if ((pfixtax == NULL) || (pfixtax[vertnum] < 0)) { /* If vertex is not fixed */ sorttab[sortnbr].veloval = veloval; /* Record it for sorting */ sorttab[sortnbr].vertnum = vertnum; sortnbr ++; } else doextab[parttax[vertnum]].comploadmax -= veloval; /* Reduce available room in domain for non-fixed vertices */ } #ifdef SCOTCH_DEBUG_KGRAPH2 if (sortnbr != (grafptr->s.vertnbr - grafptr->vfixnbr)) { errorPrint ("kgraphMapEx: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (velotax != NULL) /* If vertices are weighted, sort them in ascending order */ intSort2asc1 (sorttab, sortnbr); for (sortnum = sortnbr - 1; sortnum >= 0; sortnum --) { /* For all sorted vertex indices, by descending weights */ Gnum vertnum; Gnum veloval; Anum domnnum; vertnum = sorttab[sortnum].vertnum; veloval = sorttab[sortnum].veloval; domnnum = parttax[vertnum]; if ((doextab[domnnum].compload + veloval) > doextab[domnnum].comploadmax) { /* If leaving vertex in place would cause imbalance */ domnnum = kgraphMapExFind (archptr, treetab, doextab, domnnum, veloval); /* Try to find better location for vertex load */ if (parttax[vertnum] != domnnum) { /* If vertex moved to another part */ parttax[vertnum] = domnnum; /* Set vertex to new part */ flagval = 0; /* Record change */ } } doextab[domnnum].compload += veloval; } memFree (doextab); /* Free group leader */ if (flagval == 0) { /* If something changed */ kgraphFron (grafptr); /* Recompute frontier */ kgraphCost (grafptr); } #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (grafptr) != 0) { errorPrint ("kgraphMapEx: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } /* This routine fills the tree structure ** with the relevant node information. ** It returns: ** - void : in all cases. */ static Anum kgraphMapExTree ( const Arch * restrict const archptr, const KgraphMapExTerm * restrict const termtab, const Anum termnbr, KgraphMapExDom * restrict const doextab, /*+ Extended domain array, for adding link to tree +*/ KgraphMapExTree * restrict const treetab, Anum * restrict const treeptr, const ArchDom * restrict const domnptr) /*+ Pointer to subdomain to consider for this node +*/ { Anum treenum; if (archDomSize (archptr, domnptr) > 1) { /* If not variable-sized architecture and can bipartition */ ArchDom domntab[2]; /* Temporary area to store subdomains */ Anum sonstab[2]; int i, j; #ifdef SCOTCH_DEBUG_KGRAPH2 int o; o = /* Only collect value in debug mode */ #endif /* SCOTCH_DEBUG_KGRAPH2 */ archDomBipart (archptr, domnptr, &domntab[0], &domntab[1]); #ifdef SCOTCH_DEBUG_KGRAPH2 if (o != 0) { errorPrint ("kgraphMapExTree: internal error"); return (-1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ sonstab[0] = kgraphMapExTree (archptr, termtab, termnbr, doextab, treetab, treeptr, &domntab[0]); sonstab[1] = kgraphMapExTree (archptr, termtab, termnbr, doextab, treetab, treeptr, &domntab[1]); if (sonstab[0] + sonstab[1] < -1) /* If both sub-branches do not exist */ return (-1); /* Return that this branch does not exist */ treenum = (*treeptr) ++; /* Reserve slot for node */ treetab[treenum].fathnum = /* Assume node has no father (yet) */ treetab[treenum].sonstab[1] = -1; /* Assume second node does not exist */ for (i = j = 0; i < 2; i ++) { /* For both prospective sons */ Anum sonsnum; sonsnum = sonstab[i]; if (sonsnum == -1) /* If this son does not exist, skip it */ continue; treetab[treenum].sonstab[j ++] = sonsnum; /* Link son to current node; one more son created */ treetab[sonsnum].fathnum = treenum; } treetab[treenum].domndat = *domnptr; } else { /* If domain is terminal */ Anum termmin; Anum termmax; Anum termnum; Anum domnnum; #ifdef SCOTCH_DEBUG_KGRAPH2 if (archVar (archptr)) { errorPrint ("kgraphMapExTree: not implemented"); return (-1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ termnum = archDomNum (archptr, domnptr); /* Get number of terminal domain */ for (termmin = 0, termmax = termnbr; (termmax - termmin) > 1; ) { Anum termmed; termmed = (termmax + termmin) / 2; if (termtab[termmed].termnum <= termnum) termmin = termmed; else termmax = termmed; } if (termtab[termmin].termnum != termnum) /* If terminal not found */ return (-1); /* This branch is dead */ treenum = (*treeptr) ++; /* Reserve slot for terminal */ domnnum = termtab[termmin].domnnum; /* Get domain location */ treetab[treenum].sonstab[0] = -1; /* Slot is terminal */ treetab[treenum].sonstab[1] = domnnum; /* Record domain number of tree node */ treetab[treenum].domndat = *domnptr; /* Record domain data */ doextab[domnnum].treenum = treenum; /* Record entry point in tree structure */ } return (treenum); } /* This routine tries to find a destination ** target vertex that creates the least imbalance. ** It returns: ** - 0 : if a suitable terminal vertex has been found. ** - 1 : if process has to be continued.. */ static Anum kgraphMapExFind ( const Arch * restrict const archptr, /*+ Target architecture +*/ const KgraphMapExTree * restrict const treetab, /*+ Subdomain tree structure +*/ const KgraphMapExDom * restrict const doextab, /*+ Extended domain array +*/ const Anum domnnum, /*+ Initial domain number +*/ const Gnum veloval) /*+ Weight of vertex to map +*/ { KgraphMapExFind bestdat; Anum treenum; bestdat.comploaddlt = (doextab[domnnum].compload + veloval - doextab[domnnum].comploadmax) / doextab[domnnum].domnwght; /* Compute weighted imbalance */ bestdat.domnnum = domnnum; treenum = doextab[domnnum].treenum; /* Start from leaf of subdomain tree */ while (1) { /* Traverse nodes up to the root */ Anum nodenum; /* Number of the son we come from */ Anum othrnum; /* Number of the other son */ nodenum = treenum; /* Record position of current node */ treenum = treetab[treenum].fathnum; /* Get father node */ if (treenum == -1) /* If already reached root of tree */ break; othrnum = treetab[treenum].sonstab[(treetab[treenum].sonstab[0] == nodenum) ? 1 : 0]; /* Don't consider the branch we come from */ if (othrnum != -1) { /* If we have a sibling */ if (kgraphMapExFind2 (archptr, treetab, doextab, &bestdat, treenum, othrnum, veloval) == 0) break; /* If the sibling is a proper candidate for moving some weight */ } } /* As long as proper candidate not found */ return (bestdat.domnnum); /* Return best candidate found */ } /* This routine tries to find a destination ** target vertex that creates the least imbalance. ** It returns: ** - 0 : if a suitable terminal vertex has been found. ** - 1 : if process has to be continued. */ static int kgraphMapExFind2 ( const Arch * restrict const archptr, const KgraphMapExTree * restrict const treetab, const KgraphMapExDom * restrict const doextab, KgraphMapExFind * restrict const bestptr, /*+ Pointer to structure that keeps best terminal found +*/ const Anum treenum, const Anum nodenum, const Gnum veloval) { Anum son0num; Anum son1num; son0num = treetab[nodenum].sonstab[0]; son1num = treetab[nodenum].sonstab[1]; if (son0num != -1) { /* If node is not a terminal */ int i; int o; if (son1num == -1) /* If node has only one son */ return (kgraphMapExFind2 (archptr, treetab, doextab, bestptr, treenum, son0num, veloval)); /* Process it directly */ i = (archDomDist (archptr, &treetab[treenum].domndat, &treetab[son0num].domndat) <= /* Get closest subdomain */ archDomDist (archptr, &treetab[treenum].domndat, &treetab[son1num].domndat)) ? 0 : 1; o = kgraphMapExFind2 (archptr, treetab, doextab, bestptr, treenum, treetab[nodenum].sonstab[i], veloval); /* Process closest branch */ if (o != 0) /* If didn't find suitable terminal in closest branch */ o = kgraphMapExFind2 (archptr, treetab, doextab, bestptr, treenum, treetab[nodenum].sonstab[i ^ 1], veloval); /* Process farthest one */ return (o); } else { /* If current node is terminal */ Anum domnnum; Gnum comploaddlt; domnnum = son1num; /* Second son records domain number */ comploaddlt = (doextab[domnnum].compload + veloval - doextab[domnnum].comploadmax) / doextab[domnnum].domnwght; /* Compute weighted imbalance */ if (comploaddlt < bestptr->comploaddlt) { /* If found vertex that potentially improves balance */ bestptr->comploaddlt = comploaddlt; bestptr->domnnum = domnnum; } return ((comploaddlt <= 0) ? 0 : 1); /* Return immediatly or go on whether found proper terminal to host vertex or not */ } } scotch_6.0.9/src/libscotch/common_file_compress.c0000644000302600021200000003451413560005430022367 0ustar pelegrinpelegrin/* Copyright 2008,2010,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_file_compress.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles compressed streams **/ /** for compression. **/ /** **/ /** DATES : # Version 5.0 : from : 13 mar 2008 **/ /** to : 15 may 2008 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 27 jun 2010 **/ /** # Version 6.0 : from : 27 apr 2015 **/ /** to 14 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_FILE #define COMMON_FILE_COMPRESS #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" #include "common_file.h" #include "common_file_compress.h" #ifdef COMMON_FILE_COMPRESS_BZ2 #include "bzlib.h" #endif /* COMMON_FILE_COMPRESS_BZ2 */ #ifdef COMMON_FILE_COMPRESS_GZ #include "zlib.h" #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA #include "lzma.h" #endif /* COMMON_FILE_COMPRESS_LZMA */ /* ** The static definitions. */ static FileCompressTab filetab[] = { #ifdef COMMON_FILE_COMPRESS_BZ2 { ".bz2", FILECOMPRESSTYPEBZ2, }, #else /* COMMON_FILE_COMPRESS_BZ2 */ { ".bz2", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_BZ */ #ifdef COMMON_FILE_COMPRESS_GZ { ".gz", FILECOMPRESSTYPEGZ, }, #else /* COMMON_FILE_COMPRESS_GZ */ { ".gz", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA { ".lzma", FILECOMPRESSTYPELZMA }, { ".xz", FILECOMPRESSTYPELZMA }, #else /* COMMON_FILE_COMPRESS_LZMA */ { ".lzma", FILECOMPRESSTYPENOTIMPL }, { ".xz", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_LZMA */ { NULL, FILECOMPRESSTYPENOTIMPL } }; /*********************************/ /* */ /* Basic routines for filenames. */ /* */ /*********************************/ /* This routine waits until the termination ** of the de/compressing task associated with ** the given file. ** It returns: ** - VOID : in all cases. */ void fileCompressExit ( File * const fileptr) { if (fileptr->compptr == NULL) /* If nothing to do */ return; #ifdef COMMON_PTHREAD_FILE pthread_join (fileptr->compptr->thrdval, NULL); /* Wait for (un)compression thread to terminate */ #else /* COMMON_PTHREAD_FILE */ waitpid (fileptr->compptr->procval, NULL, 0); #endif /* COMMON_PTHREAD_FILE */ memFree (fileptr->compptr); /* Free compression structure */ } /* This routine searches the given file name ** for relevant extensions and returns the ** corresponding code if it is the case. ** It returns: ** - FILECOMPRESSTYPENONE : no recognized file extension. ** - FILECOMPRESSTYPENOTIMPL : compression algorithm not implemented. ** - FILECOMPRESSTYPExxxx : implemented compression algorithm. */ int fileCompressType ( const char * const nameptr) /*+ Name string +*/ { int namelen; int i; namelen = strlen (nameptr); for (i = 0; filetab[i].name != NULL; i ++) { int extnlen; /* Name of extension string */ extnlen = strlen (filetab[i].name); if ((namelen >= extnlen) && (strncmp (filetab[i].name, nameptr + (namelen - extnlen), extnlen) == 0)) return (filetab[i].type); } return (FILECOMPRESSTYPENONE); } /* This routine creates a thread to compress the ** given stream according to the given compression ** algorithm. ** If threads are available, compression will be ** performed by an auxiliary thread. Else, a child process ** will be fork()'ed, and after completion this process ** will remain a zombie until the main process terminates. ** It returns: ** - !NULL : stream holding compressed data. ** - NULL : on error. */ static void * /* (void *) to comply to the Posix pthread API */ fileCompress2 ( FileCompress * const compptr) { switch (compptr->typeval) { #ifdef COMMON_FILE_COMPRESS_BZ2 case FILECOMPRESSTYPEBZ2 : fileCompressBz2 (compptr); break; #endif /* COMMON_FILE_COMPRESS_BZ2 */ #ifdef COMMON_FILE_COMPRESS_GZ case FILECOMPRESSTYPEGZ : fileCompressGz (compptr); break; #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA case FILECOMPRESSTYPELZMA : fileCompressLzma (compptr); break; #endif /* COMMON_FILE_COMPRESS_LZMA */ default : errorPrint ("fileCompress2: method not implemented"); } close (compptr->infdnum); /* Close writer's end */ memFree (compptr->bufftab); /* Free data buffer */ #ifdef COMMON_DEBUG compptr->bufftab = NULL; #endif /* COMMON_DEBUG */ return (NULL); /* Don't care anyway */ } int fileCompress ( File * const fileptr, /*+ Uncompressed stream +*/ const int typeval) /*+ Compression algorithm +*/ { int filetab[2]; FILE * writptr; FileCompress * compptr; if (typeval <= FILECOMPRESSTYPENONE) /* If nothing to do */ return (0); if (pipe (filetab) != 0) { errorPrint ("fileCompress: cannot create pipe"); return (1); } if ((writptr = fdopen (filetab[1], "w")) == NULL) { /* New stream master will write to */ errorPrint ("fileCompress: cannot create stream"); close (filetab[0]); close (filetab[1]); return (1); } if (((compptr = memAlloc (sizeof (FileCompress))) == NULL) || /* Compression structure to be freed by master */ ((compptr->bufftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL)) { errorPrint ("fileCompress: out of memory"); if (compptr != NULL) memFree (compptr); close (filetab[0]); fclose (writptr); return (1); } compptr->typeval = typeval; /* Fill structure to be passed to compression thread/process */ compptr->infdnum = filetab[0]; compptr->oustptr = fileptr->fileptr; /* Compressed stream to write to */ #ifdef COMMON_PTHREAD_FILE if (pthread_create (&compptr->thrdval, NULL, (void * (*) (void *)) fileCompress2, (void *) compptr) != 0) { /* If could not create thread */ errorPrint ("fileCompress: cannot create thread"); memFree (compptr->bufftab); memFree (compptr); close (filetab[0]); fclose (writptr); return (1); } #else /* COMMON_PTHREAD_FILE */ switch (compptr->procval = fork ()) { case -1 : /* Error */ errorPrint ("fileCompress: cannot create child process"); memFree (compptr->bufftab); memFree (compptr); close (filetab[0]); fclose (writptr); return (1); case 0 : /* We are the son process */ fclose (writptr); /* Close writer pipe stream */ fileCompress2 (compptr); /* Perform compression */ exit (EXIT_SUCCESS); /* Exit gracefully */ default : /* We are the father process */ close (filetab[0]); /* Close the reader pipe end */ } #endif /* COMMON_PTHREAD_FILE */ fileptr->fileptr = writptr; /* Master can write to pipe */ fileptr->compptr = compptr; return (0); } /* This routine compresses a stream in the ** bz2 format. ** It returns: ** - void : in all cases. Compression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_BZ2 static void fileCompressBz2 ( FileCompress * const compptr) { BZFILE * encoptr; int bytenbr; int flagval; if ((encoptr = BZ2_bzWriteOpen (&flagval, compptr->oustptr, 9, 0, 0)) == NULL) { errorPrint ("fileCompressBz2: cannot start compression"); BZ2_bzWriteClose (&flagval, encoptr, 1, NULL, NULL); return; } while ((bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ BZ2_bzWrite (&flagval, encoptr, compptr->bufftab, bytenbr); if (flagval != BZ_OK) { errorPrint ("fileCompressBz2: cannot write"); break; } } if (bytenbr < 0) { errorPrint ("fileCompressBz2: cannot read"); flagval = BZ_STREAM_END; /* Will set abandon flag to 1 in BZ2_bzWriteClose */ } BZ2_bzWriteClose (&flagval, encoptr, (flagval != BZ_OK) ? 1 : 0, NULL, NULL); fclose (compptr->oustptr); /* Do as zlib does */ } #endif /* COMMON_FILE_COMPRESS_BZ2 */ /* This routine compresses a stream in the ** gzip format. ** It returns: ** - void : in all cases. Compression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_GZ static void fileCompressGz ( FileCompress * const compptr) { gzFile encoptr; int bytenbr; if ((encoptr = gzdopen (fileno (compptr->oustptr), "wb")) == NULL) { errorPrint ("fileCompressGz: cannot start compression"); return; } gzsetparams (encoptr, 9, Z_DEFAULT_STRATEGY); /* Maximum compression */ while ((bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { /* Read from pipe */ if (gzwrite (encoptr, compptr->bufftab, bytenbr) != bytenbr) { errorPrint ("fileCompressGz: cannot write"); break; } } if (bytenbr < 0) errorPrint ("fileCompressGz: cannot read"); gzclose (encoptr); /* Closes oustptr */ } #endif /* COMMON_FILE_COMPRESS_GZ */ /* This routine compresses a stream in the ** LZMA format. ** It returns: ** - void : in all cases. Compression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_LZMA static void fileCompressLzma ( FileCompress * const compptr) { lzma_stream encodat = LZMA_STREAM_INIT; /* Encoder data */ lzma_action enacval; /* Encoder action value */ lzma_ret enreval; /* Encoder return value */ byte * obuftab; /* Encoder output buffer */ if ((obuftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL) { errorPrint ("fileCompressLzma: out of memory"); return; } if (lzma_easy_encoder (&encodat, LZMA_PRESET_EXTREME, LZMA_CHECK_CRC64) != LZMA_OK) { errorPrint ("fileCompressLzma: cannot start compression"); memFree (obuftab); return; } enacval = LZMA_RUN; enreval = LZMA_OK; encodat.avail_in = 0; encodat.next_out = obuftab; encodat.avail_out = FILECOMPRESSDATASIZE; do { if ((encodat.avail_in == 0) && (enacval == LZMA_RUN)) { ssize_t bytenbr; bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE); /* Read from pipe */ if (bytenbr < 0) { errorPrint ("fileCompressLzma: cannot read"); break; } if (bytenbr == 0) enacval = LZMA_FINISH; /* If end of stream, request completion of encoding */ encodat.next_in = (byte *) compptr->bufftab; encodat.avail_in = bytenbr; } enreval = lzma_code (&encodat, enacval); if ((encodat.avail_out == 0) || (enreval == LZMA_STREAM_END)) { /* Write when output buffer full or end of encoding */ size_t obufnbr; obufnbr = FILECOMPRESSDATASIZE - encodat.avail_out; /* Compute number of bytes to write */ if (fwrite (obuftab, 1, obufnbr, compptr->oustptr) != obufnbr) { errorPrint ("fileCompressLzma: cannot write"); break; } encodat.next_out = obuftab; encodat.avail_out = FILECOMPRESSDATASIZE; } } while (enreval == LZMA_OK); lzma_end (&encodat); memFree (obuftab); fclose (compptr->oustptr); /* Do as zlib does */ } #endif /* COMMON_FILE_COMPRESS_LZMA */ scotch_6.0.9/src/libscotch/hdgraph_induce.c0000644000302600021200000004362213470115365021142 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo source **/ /** graph subgraph-making functions. **/ /** **/ /** DATES : # Version 5.0 : from : 19 apr 2006 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 27 jun 2008 **/ /** to : 22 oct 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "hdgraph.h" /******************************/ /* */ /* These routines handle halo */ /* distributed source graphs. */ /* */ /******************************/ /* This routine builds the graph induced ** by the original graph and the list of ** selected vertices. ** The induced vnumtab array is the global ** translation of the list array if the ** original graph does not have a vnumtab, ** or the proper subset of the original ** vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hdgraphInduceList ( Hdgraph * restrict const orggrafptr, const Gnum indlistnbr, const Gnum * restrict const indlisttab, /* Local list of kept vertices */ Hdgraph * restrict const indgrafptr) { const Gnum * restrict orgvertloctax; const Gnum * restrict orgvendloctax; const Gnum * restrict orgveloloctax; const Gnum * restrict orgedgegsttax; const Gnum * restrict orgedgeloctax; Gnum * restrict orgindxgsttax; /* Based access to vertex translation array */ Gnum * restrict orgindxhaltax; /* Based access to halo vertex translation array */ Gnum * restrict indvertloctax; Gnum * restrict indveloloctax; Gnum indvertlocnnd; /* Based index of end of local vertex array */ Gnum indvertlocnum; /* Number of current vertex in induced graph */ Gnum indvertglbnum; /* Number of current vertex in global ordering */ Gnum * restrict indvendloctax; Gnum indvelolocnbr; /* Size of local vertex load array */ Gnum indvelolocsum; /* Sum of vertex loads */ Gnum indvhallocnum; /* Number of halo vertex to be declared */ Gnum * restrict indedgeloctax; Gnum indedgelocmax; /* (Approximate) number of edges in induced graph */ Gnum indedgelocsiz; /* Real size of edge array, including halo */ Gnum indedgelocnbr; /* Real number of edges in induced graph */ Gnum indedgelocnum; Gnum inddegrlocmax; /* Local maximum degree over non-halo vertices */ const Gnum * restrict indlisttax; /* Based access to list of kept vertices */ int cheklocval; int chekglbval; if (dgraphGhst (&orggrafptr->s) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("hdgraphInduceList: cannot compute ghost edge array"); return (1); } memSet (indgrafptr, 0, sizeof (Hdgraph)); /* Pre-initialize graph fields */ indgrafptr->s.proccomm = orggrafptr->s.proccomm; indgrafptr->s.procglbnbr = orggrafptr->s.procglbnbr; indgrafptr->s.proclocnum = orggrafptr->s.proclocnum; indgrafptr->s.flagval = (DGRAPHFREEALL ^ DGRAPHFREECOMM) | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* For premature freeing on error; do not free vhndloctab as it is grouped with vertloctab */ if (orggrafptr->s.veloloctax != NULL) { indvelolocnbr = indlistnbr; indvelolocsum = 0; } else { indvelolocnbr = 0; indvelolocsum = indlistnbr; } indedgelocmax = orggrafptr->s.edgelocnbr; /* Choose best upper bound on number of edges (avoid multiply overflow) */ if ((orggrafptr->s.degrglbmax > 0) && (indlistnbr < (indedgelocmax / orggrafptr->s.degrglbmax))) indedgelocmax = indlistnbr * orggrafptr->s.degrglbmax; indedgelocmax += orggrafptr->ehallocnbr; cheklocval = chekglbval = 0; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &indgrafptr->s.procdsptab, (size_t) ((orggrafptr->s.procglbnbr + 1) * sizeof (Gnum)), &indgrafptr->s.proccnttab, (size_t) (orggrafptr->s.procglbnbr * sizeof (Gnum)), &indgrafptr->s.procngbtab, (size_t) (orggrafptr->s.procglbnbr * sizeof (int)), &indgrafptr->s.procrcvtab, (size_t) (orggrafptr->s.procglbnbr * sizeof (int)), &indgrafptr->s.procsndtab, (size_t) (orggrafptr->s.procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("hdgraphInduceList: out of memory (1)"); cheklocval = 1; } else if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &indgrafptr->s.vertloctax, (size_t) ((indlistnbr + 1) * sizeof (Gnum)), /* Compact vertex arrays */ &indgrafptr->s.vendloctax, (size_t) (indlistnbr * sizeof (Gnum)), /* Vertex end array for non-halo vertices */ &indgrafptr->s.vnumloctax, (size_t) (indlistnbr * sizeof (Gnum)), &indgrafptr->s.veloloctax, (size_t) (indvelolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hdgraphInduceList: out of memory (2)"); cheklocval = 1; } else if (indgrafptr->s.vertloctax -= orggrafptr->s.baseval, indgrafptr->s.vendloctax -= orggrafptr->s.baseval, indgrafptr->s.vnumloctax -= orggrafptr->s.baseval, indgrafptr->s.veloloctax = ((orggrafptr->s.veloloctax != NULL) ? indgrafptr->s.veloloctax - orggrafptr->s.baseval : NULL), memAllocGroup ((void **) (void *) &indgrafptr->s.edgeloctax, (size_t) (indedgelocmax * sizeof (Gnum)), /* Pre-allocate space for edgeloctab */ &orgindxgsttax, (size_t) (orggrafptr->s.vertgstnbr * sizeof (Gnum)), /* orgindxgsttab and orgindxhaltab are at the end */ &orgindxhaltax, (size_t) (orggrafptr->vhallocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hdgraphInduceList: out of memory (3)"); cheklocval = 1; } else indgrafptr->s.edgeloctax -= orggrafptr->s.baseval; if (cheklocval != 0) { /* In case of memory error */ Gnum procngbnum; int dummyval; dummyval = -1; chekglbval = 1; if (MPI_Allgather (&dummyval, 1, GNUM_MPI, /* Use proccnttab of orggraf as dummy receive array (will be regenerated) */ orggrafptr->s.proccnttab, 1, GNUM_MPI, indgrafptr->s.proccomm) != MPI_SUCCESS) errorPrint ("hdgraphInduceList: communication error (1)"); for (procngbnum = 1; procngbnum <= orggrafptr->s.procglbnbr; procngbnum ++) /* Rebuild proccnttab of orggraf */ orggrafptr->s.proccnttab[procngbnum - 1] = orggrafptr->s.procdsptab[procngbnum] - orggrafptr->s.procdsptab[procngbnum - 1]; } else { indgrafptr->s.procvrttab = indgrafptr->s.procdsptab; /* Graph does not have holes */ indgrafptr->s.procdsptab[0] = indlistnbr; if (MPI_Allgather (&indgrafptr->s.procdsptab[0], 1, GNUM_MPI, &indgrafptr->s.proccnttab[0], 1, GNUM_MPI, indgrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("hdgraphInduceList: communication error (2)"); chekglbval = 1; } else { Gnum procngbnum; indgrafptr->s.procdsptab[0] = orggrafptr->s.baseval; /* Build vertex-to-process array */ for (procngbnum = 0; procngbnum < indgrafptr->s.procglbnbr; procngbnum ++) { /* Process potential error flags from other processes */ if (indgrafptr->s.proccnttab[procngbnum] < 0) { /* If error notified by another process */ chekglbval = 1; break; } indgrafptr->s.procdsptab[procngbnum + 1] = indgrafptr->s.procdsptab[procngbnum] + indgrafptr->s.proccnttab[procngbnum]; } } } if (chekglbval != 0) { /* If something went wrong in all of the above */ hdgraphExit (indgrafptr); return (1); } memSet (orgindxgsttax, ~0, orggrafptr->s.vertgstnbr * sizeof (Gnum)); /* Preset index arrays */ orgindxgsttax -= orggrafptr->s.baseval; memSet (orgindxhaltax, ~0, orggrafptr->vhallocnbr * sizeof (Gnum)); orgindxhaltax -= orggrafptr->s.baseval; indlisttax = indlisttab - orggrafptr->s.baseval; indvertlocnnd = indlistnbr + orggrafptr->s.baseval; for (indvertlocnum = orggrafptr->s.baseval, indvertglbnum = indgrafptr->s.procdsptab[indgrafptr->s.proclocnum]; /* Set adjustment for global ordering */ indvertlocnum < indvertlocnnd; indvertlocnum ++, indvertglbnum ++) orgindxgsttax[indlisttax[indvertlocnum]] = indvertglbnum; /* Mark selected vertices */ if (dgraphHaloSync (&orggrafptr->s, (byte *) (orgindxgsttax + orggrafptr->s.baseval), GNUM_MPI) != 0) { /* Share global indexing of subgraph vertices */ errorPrint ("hdgraphInduceList: cannot perform halo exchange"); hdgraphExit (indgrafptr); return (1); } orgvertloctax = orggrafptr->s.vertloctax; orgvendloctax = orggrafptr->s.vendloctax; orgveloloctax = orggrafptr->s.veloloctax; orgedgegsttax = orggrafptr->s.edgegsttax; orgedgeloctax = orggrafptr->s.edgeloctax; indvertloctax = indgrafptr->s.vertloctax; indvendloctax = indgrafptr->s.vendloctax; indveloloctax = indgrafptr->s.veloloctax; indedgeloctax = indgrafptr->s.edgeloctax; inddegrlocmax = 0; for (indvertlocnum = indedgelocnum = indvhallocnum = orggrafptr->s.baseval, indedgelocnbr = 0; indvertlocnum < indvertlocnnd; indvertlocnum ++) { Gnum orgvertlocnum; Gnum orgedgelocnum; Gnum orgdegrlocval; Gnum inddegrlocval; Gnum indedgelocnnd; orgvertlocnum = indlisttax[indvertlocnum]; orgdegrlocval = orgvendloctax[orgvertlocnum] - orgvertloctax[orgvertlocnum]; indvertloctax[indvertlocnum] = indedgelocnum; if (orgveloloctax != NULL) { /* If graph has vertex weights */ indvelolocsum += /* Accumulate vertex loads */ indveloloctax[indvertlocnum] = orgveloloctax[orgvertlocnum]; } indedgelocnnd = indedgelocnum + orgdegrlocval; #ifdef SCOTCH_DEBUG_HDGRAPH2 if (indedgelocnnd > (indedgelocmax + orggrafptr->s.baseval)) { errorPrint ("hdgraphInduceList: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ for (orgedgelocnum = orgvertloctax[orgvertlocnum]; /* Process local and ghost non-halo vertices */ orgedgelocnum < orgvendloctax[orgvertlocnum]; orgedgelocnum ++) { Gnum orgvertlocend; Gnum indvertgstend; orgvertlocend = orgedgegsttax[orgedgelocnum]; #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orgvertlocend < orggrafptr->s.baseval) || (orgvertlocend > orggrafptr->s.vertgstnnd)) { errorPrint ("hdgraphInduceList: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ indvertgstend = orgindxgsttax[orgvertlocend]; if (indvertgstend >= 0) /* If edge is local or halo */ indedgeloctax[indedgelocnum ++] = indvertgstend; /* Keep it as regular edge */ else { /* If edge is halo edge */ if (indvertgstend == ~0) /* If halo vertex not assigned yet */ orgindxgsttax[orgvertlocend] = indvertgstend = -2 - indvhallocnum ++; /* Set new halo number */ indedgeloctax[-- indedgelocnnd] = -2 - indvertgstend; } } #ifdef SCOTCH_DEBUG_HDGRAPH2 if (indedgelocnnd != indedgelocnum) { errorPrint ("hdgraphInduceList: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ indvendloctax[indvertlocnum] = indedgelocnum; inddegrlocval = indedgelocnum - indvertloctax[indvertlocnum]; indedgelocnbr += inddegrlocval; if (inddegrlocmax < inddegrlocval) inddegrlocmax = inddegrlocval; for (indedgelocnum = indvertloctax[indvertlocnum] + orgdegrlocval; /* Process local halo vertices */ orgedgelocnum < orggrafptr->vhndloctax[orgvertlocnum]; orgedgelocnum ++) { Gnum orgvhallocend; Gnum indvhallocend; orgvhallocend = orgedgeloctax[orgedgelocnum]; /* Halo vertices only exist in the edgeloctab array */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((orgvhallocend < orggrafptr->s.baseval) || (orgvhallocend >= (orggrafptr->vhallocnbr + orggrafptr->s.baseval))) { errorPrint ("hdgraphInduceList: inconsistent halo vertex numbers"); hdgraphExit (indgrafptr); return (1); } if (indedgelocnum >= (indedgelocmax + orggrafptr->s.baseval)) { errorPrint ("hdgraphInduceList: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ indvhallocend = orgindxhaltax[orgvhallocend]; if (indvhallocend == ~0) /* If halo vertex not assigned yet */ orgindxhaltax[orgvhallocend] = indvhallocend = indvhallocnum ++; /* Set new halo number */ indgrafptr->s.edgeloctax[indedgelocnum ++] = indvhallocend; } } indvertloctax[indvertlocnum] = indedgelocnum; /* Mark end of edge array for vhndloctax */ indedgelocsiz = indedgelocnum - orggrafptr->s.baseval; /* Global number of edges, both non-halo and halo */ indgrafptr->s.edgeloctax = memRealloc (indgrafptr->s.edgeloctax + orggrafptr->s.baseval, (size_t) (indedgelocsiz * sizeof (Gnum))); indgrafptr->s.edgeloctax -= orggrafptr->s.baseval; if (orggrafptr->s.vnumloctax != NULL) { /* Adjust vnumloctax */ for (indvertlocnum = orggrafptr->s.baseval; indvertlocnum < indvertlocnnd; indvertlocnum ++) indgrafptr->s.vnumloctax[indvertlocnum] = orggrafptr->s.vnumloctax[indlisttax[indvertlocnum]]; } else { Gnum orgvertglbadj; orgvertglbadj = orggrafptr->s.procvrttab[orggrafptr->s.proclocnum] - orggrafptr->s.baseval; /* Set adjustement for global ordering */ for (indvertlocnum = orggrafptr->s.baseval; indvertlocnum < indvertlocnnd; indvertlocnum ++) indgrafptr->s.vnumloctax[indvertlocnum] = indlisttax[indvertlocnum] + orgvertglbadj; } indgrafptr->vhallocnbr = indvhallocnum - orggrafptr->s.baseval; indgrafptr->vhndloctax = indgrafptr->s.vertloctax + 1; /* Compact edge array with halo vertices */ indgrafptr->ehallocnbr = indedgelocsiz - indedgelocnbr; /* Get number of halo edges by difference */ indgrafptr->levlnum = orggrafptr->levlnum + 1; /* Induced subgraph is one level below */ indgrafptr->s.baseval = orggrafptr->s.baseval; indgrafptr->s.vertlocnbr = indlistnbr; indgrafptr->s.vertlocnnd = indlistnbr + orggrafptr->s.baseval; indgrafptr->s.velolocsum = indvelolocsum; indgrafptr->s.edgelocnbr = indedgelocnbr; indgrafptr->s.edgelocsiz = indedgelocsiz; indgrafptr->s.degrglbmax = orggrafptr->s.degrglbmax; if (dgraphBuild4 (&indgrafptr->s) != 0) { errorPrint ("hdgraphInduceList: cannot build induced graph"); return (1); } #ifdef SCOTCH_DEBUG_HDGRAPH2 if (hdgraphCheck (indgrafptr) != 0) { /* Check graph consistency */ errorPrint ("hdgraphInduceList: internal error (5)"); hdgraphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hmesh_order_gr.h0000644000302600021200000000606013465315041021162 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_gr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the graph-based node ordering **/ /** routine. **/ /** **/ /** DATES : # Version 4.0 : from : 30 nov 2003 **/ /** to : 30 nov 2003 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderGrParam_ { Strat * stratptr; /*+ Graph ordering strategy +*/ } HmeshOrderGrParam; /* ** The function prototypes. */ int hmeshOrderGr (const Hmesh * const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderGrParam * const); scotch_6.0.9/src/libscotch/order_check.c0000644000302600021200000001430513303015264020432 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module checks the consistency of **/ /** orderings. **/ /** **/ /** DATES : # Version 4.0 : from : 19 dec 2001 **/ /** to 20 nov 2003 **/ /** # Version 5.0 : from : 26 jul 2007 **/ /** to 26 jul 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ORDER_CHECK #include "module.h" #include "common.h" #include "graph.h" #include "order.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine checks the consistency ** of the given ordering. ** It returns: ** - 0 : if ordering data are consistent. ** - !0 : on error. */ static int orderCheck2 ( const OrderCblk * restrict const cblkptr, Gnum * const cblknbr, Gnum * const treenbr) { if (cblkptr->vnodnbr < 1) { errorPrint ("orderCheck2: invalid number of vertex nodes (1)"); return (1); } if (cblkptr->cblktab != NULL) { /* If node has sons */ Gnum vnodnbr; Gnum cblknum; if (cblkptr->cblknbr <= 0) { errorPrint ("orderCheck2: invalid number of column blocks (1)"); return (1); } *cblknbr += cblkptr->cblknbr - 1; *treenbr += cblkptr->cblknbr; for (cblknum = vnodnbr = 0; cblknum < cblkptr->cblknbr; cblknum ++) { vnodnbr += cblkptr->cblktab[cblknum].vnodnbr; if (orderCheck2 (&cblkptr->cblktab[cblknum], cblknbr, treenbr) != 0) return (1); } if (vnodnbr != cblkptr->vnodnbr) { errorPrint ("orderCheck2: invalid number of vertex nodes (2)"); return (1); } } else if (cblkptr->cblknbr != 0) { errorPrint ("orderCheck2: invalid number of column blocks (2)"); return (1); } return (0); } int orderCheck ( const Order * restrict const ordeptr) { Gnum * restrict permtab; Gnum * restrict permtax; Gnum treenbr; Gnum cblknbr; Gnum vertnnd; Gnum vertnum; if (ordeptr->vnodnbr != ordeptr->cblktre.vnodnbr) { errorPrint ("orderCheck: invalid vertex count"); return (1); } if ((ordeptr->cblknbr < 0) || (ordeptr->cblknbr > ordeptr->treenbr)) { errorPrint ("orderCheck: invalid column block count (1)"); return (1); } if ((permtab = (Gnum *) memAlloc (ordeptr->vnodnbr * sizeof (Gnum))) == NULL) { errorPrint ("orderCheck: out of memory"); return (1); } memSet (permtab, ~0, ordeptr->cblktre.vnodnbr * sizeof (Gnum)); permtax = permtab - ordeptr->baseval; vertnnd = ordeptr->baseval + ordeptr->vnodnbr; for (vertnum = 0; vertnum < ordeptr->vnodnbr; vertnum ++) { if ((ordeptr->peritab[vertnum] < ordeptr->baseval) || /* If index not in range */ (ordeptr->peritab[vertnum] >= vertnnd)) { errorPrint ("orderCheck: invalid index"); memFree (permtab); return (1); } if (permtax[ordeptr->peritab[vertnum]] != ~0) { /* If index already used */ errorPrint ("orderCheck: duplicate index"); memFree (permtab); return (1); } permtax[ordeptr->peritab[vertnum]] = vertnum; /* Set who updated index */ } for (vertnum = 0; vertnum < ordeptr->vnodnbr; vertnum ++) { if (permtab[vertnum] == ~0) { /* If index not used */ errorPrint ("orderCheck: missing index"); memFree (permtab); return (1); } } memFree (permtab); treenbr = /* Assume there is just a root node */ cblknbr = 1; if (orderCheck2 (&ordeptr->cblktre, &cblknbr, &treenbr) != 0) return (1); if (cblknbr != ordeptr->cblknbr) { errorPrint ("orderCheck: invalid number of column blocks"); return (1); } if (treenbr != ordeptr->treenbr) { errorPrint ("orderCheck: invalid number of tree nodes"); return (1); } return (0); } scotch_6.0.9/src/libscotch/graph_io_mmkt.c0000644000302600021200000003111413470115365021007 0ustar pelegrinpelegrin/* Copyright 2008,2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_mmkt.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : This module contains the input/output **/ /** routines for handling the Matrix Market **/ /** format. **/ /** **/ /** DATES : # Version 5.0 : from : 17 jan 2008 **/ /** to : 21 mar 2008 **/ /** # Version 5.1 : from : 27 apr 2010 **/ /** to : 11 aug 2010 **/ /** # Version 6.0 : from : 04 aug 2016 **/ /** to 04 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_IO_MMKT #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "graph_io_mmkt.h" /********************************************************/ /* */ /* These routines handle source Matrix Market matrices. */ /* */ /********************************************************/ /* This routine loads a source graph from ** the given stream, corresponding to a MatrixMarket file. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int graphGeomLoadMmkt ( Graph * restrict const grafptr, /* Graph to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* Fake base value */ { Gnum baseval; Gnum mrownbr; Gnum mcolnbr; Gnum linenbr; Gnum linenum; Gnum vertnum; Gnum verttmp; GraphGeomMmktEdge * sorttab; Gnum sortnbr; Gnum sortnum; Gnum * edgetax; Gnum edgenum; Gnum edgetmp; Gnum degrmax; char linetab[1025]; char * lineptr; char c; baseval = 1; /* Regular MatrixMarket indices start from 1 */ if ((dataptr != NULL) && /* If base value provided */ (dataptr[0] != '\0') && ((baseval = (Gnum) atol (dataptr)) == 0) && /* Get base value */ (dataptr[0] != '0')) { errorPrint ("graphGeomLoadMmkt: invalid parameter"); return (1); } if (fgets (linetab, 1025, filesrcptr) == NULL) { /* Read header lines */ errorPrint ("graphGeomLoadMmkt: bad input (1)"); return (1); } if (strncmp (linetab, "%%MatrixMarket", 14) != 0) { errorPrint ("graphGeomLoadMmkt: invalid header"); return (1); } for (lineptr = linetab + 14; *lineptr != '\0'; lineptr ++) *lineptr = tolower (*lineptr); if (strstr (linetab + 14, "matrix") == NULL) { errorPrint ("graphGeomLoadMmkt: only matrix types supported"); return (1); } while ((c = fgetc (filesrcptr)) == '%') { /* Skip additional comment lines */ if (fgets (linetab, 1025, filesrcptr) == NULL) { errorPrint ("graphGeomLoadMmkt: bad input (2)"); return (1); } } ungetc (c, filesrcptr); if ((intLoad (filesrcptr, &mrownbr) != 1) || /* Read number of rows */ (intLoad (filesrcptr, &mcolnbr) != 1) || /* Read number of columns */ (intLoad (filesrcptr, &linenbr) != 1)) { /* Read number of lines */ errorPrint ("graphGeomLoadMmkt: bad input (3)"); return (1); } if (mrownbr != mcolnbr) { /* If not a square matrix */ errorPrint ("graphGeomLoadMmkt: not a square matrix"); return (1); } memSet (grafptr, 0, sizeof (Graph)); grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = baseval; grafptr->vertnbr = mrownbr; grafptr->vertnnd = grafptr->vertnbr + baseval; if ((grafptr->verttax = memAlloc ((grafptr->vertnbr + 1) * sizeof (Gnum))) == NULL) { errorPrint ("graphGeomLoadMmkt: out of memory (1)"); graphExit (grafptr); return (1); } grafptr->verttax -= baseval; grafptr->vendtax = grafptr->verttax + 1; grafptr->velosum = grafptr->vertnbr; grafptr->velotax = NULL; grafptr->vnumtax = NULL; grafptr->vlbltax = NULL; if ((sorttab = (GraphGeomMmktEdge *) memAlloc (2 * linenbr * sizeof (GraphGeomMmktEdge))) == NULL) { /* Twice the space for symmetric edges */ errorPrint ("graphGeomLoadMmkt: out of memory (2)"); graphExit (grafptr); return (1); } grafptr->edgetax = ((Gnum *) sorttab) - baseval; /* TRICK: will be freed if graph is freed */ grafptr->edlotax = NULL; for (linenum = sortnbr = 0; linenum < linenbr; linenum ++) { if ((intLoad (filesrcptr, &sorttab[sortnbr].vertnum[0]) != 1) || /* Read edge ends */ (intLoad (filesrcptr, &sorttab[sortnbr].vertnum[1]) != 1) || (fgets (linetab, 1025, filesrcptr) == NULL)) { /* Skip end of line */ errorPrint ("graphGeomLoadMmkt: bad input (4)"); graphExit (grafptr); return (1); } if ((sorttab[sortnbr].vertnum[0] < baseval) || (sorttab[sortnbr].vertnum[0] >= (mrownbr + baseval)) || (sorttab[sortnbr].vertnum[1] < baseval) || (sorttab[sortnbr].vertnum[1] >= (mrownbr + baseval))) { errorPrint ("graphGeomLoadMmkt: bad input (5)"); graphExit (grafptr); return (1); } if (sorttab[sortnbr].vertnum[0] != sorttab[sortnbr].vertnum[1]) { /* If not loop edge */ sorttab[sortnbr + 1].vertnum[0] = sorttab[sortnbr].vertnum[1]; /* Add symmetric edge */ sorttab[sortnbr + 1].vertnum[1] = sorttab[sortnbr].vertnum[0]; sortnbr += 2; } } intSort2asc2 (sorttab, sortnbr); /* Sort edges by increasing indices */ edgetax = grafptr->edgetax; /* TRICK: point to beginning of sorted edge array for re-use */ for (sortnum = degrmax = 0, vertnum = baseval - 1, edgetmp = edgenum = baseval; sortnum < sortnbr; sortnum ++) { Gnum vertend; if (vertnum < sorttab[sortnum].vertnum[0]) { /* If change of vertex index, that is, first edge end */ edgetmp = edgenum - edgetmp; /* Compute degree and see if it is maximum degree */ if (edgetmp > degrmax) degrmax = edgetmp; edgetmp = edgenum; grafptr->verttax[++ vertnum] = edgenum; /* Set beginning of new edge sub-array */ while (vertnum < sorttab[sortnum].vertnum[0]) /* Fill gaps with isolated vertices */ grafptr->verttax[++ vertnum] = edgenum; verttmp = baseval - 1; /* Make sure next edge will be considered as never seen before */ } vertend = sorttab[sortnum].vertnum[1]; /* Get end of current edge */ if (vertend != verttmp) /* If edge differs from previous one */ edgetax[edgenum ++] = verttmp = vertend; /* Add it to array and prevent duplicates */ } edgetmp = edgenum - edgetmp; /* Compute degree and see if it is maximum degree */ if (edgetmp > degrmax) degrmax = edgetmp; while (vertnum < mrownbr) /* Fill gaps with isolated vertices and mark beginning of new one */ grafptr->verttax[++ vertnum] = edgenum; grafptr->verttax[++ vertnum] = edgenum; /* Mark end of array */ #ifdef SCOTCH_DEBUG_GRAPH2 if (vertnum != grafptr->vertnnd) { errorPrint ("graphGeomLoadMmkt: internal error (1)"); graphExit (grafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ grafptr->edgenbr = edgenum - baseval; grafptr->edgetax = ((Gnum *) memRealloc (edgetax + baseval, grafptr->edgenbr * sizeof (Gnum))) - baseval; /* TRICK: keep only useful space in re-used array */ grafptr->edlotax = NULL; grafptr->edlosum = grafptr->edgenbr; grafptr->degrmax = degrmax; #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphGeomLoadMmkt: internal error (2)"); graphExit (grafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } /* This routine saves the geometrical graph ** in the Matrix Market symmetric graph format. ** It returns: ** - 0 : on succes ** - !0 : on error. */ int graphGeomSaveMmkt ( const Graph * restrict const grafptr, /* Graph to save */ const Geom * restrict const geomptr, /* Geometry to save */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { Gnum baseadj; /* Base adjustment */ Gnum vertnum; /* Current vertex */ Gnum edgenum; /* Current edge */ int o; baseadj = 1 - grafptr->baseval; /* Output base is always 1 */ o = (fprintf (filesrcptr, "%%%%MatrixMarket matrix coordinate pattern symmetric\n%% Produced by Scotch graphGeomSaveMmkt\n" GNUMSTRING " " GNUMSTRING " " GNUMSTRING "\n", /* Write graph header */ (Gnum) grafptr->vertnbr, (Gnum) grafptr->vertnbr, (Gnum) ((grafptr->edgenbr / 2) + grafptr->vertnbr)) == EOF); for (vertnum = grafptr->baseval; (o == 0) && (vertnum < grafptr->vertnnd); vertnum ++) { Gnum vlblnum; /* Vertex label to output */ vlblnum = ((grafptr->vlbltax != NULL) ? grafptr->vlbltax[vertnum] : vertnum) + baseadj; if (fprintf (filesrcptr, GNUMSTRING " " GNUMSTRING "\n", /* Write diagonal term */ (Gnum) vlblnum, (Gnum) vlblnum) < 0) { o = 1; break; } for (edgenum = grafptr->verttax[vertnum]; edgenum < grafptr->vendtax[vertnum]; edgenum ++) { Gnum vlblend; /* End vertex label to output */ vlblend = grafptr->edgetax[edgenum]; if (grafptr->vlbltax != NULL) vlblend = grafptr->vlbltax[vlblend]; vlblend += baseadj; if (vlblend < vlblnum) { if (fprintf (filesrcptr, GNUMSTRING " " GNUMSTRING "\n", (Gnum) vlblnum, (Gnum) vlblend) < 0) { o = 1; break; } } } } if (o != 0) errorPrint ("graphGeomSaveMmkt: bad output"); return (o); } scotch_6.0.9/src/libscotch/library_dgraph_map_f.c0000644000302600021200000002001013560013261022303 0ustar pelegrinpelegrin/* Copyright 2008,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_map_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** parallel mapping routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 28 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the parallel mapping routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAPINIT, dgraphmapinit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dmapping * const mappptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Num * const termloctab, \ int * const revaptr), \ (grafptr, mappptr, archptr, termloctab, revaptr)) { *revaptr = SCOTCH_dgraphMapInit (grafptr, mappptr, archptr, termloctab); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAPEXIT, dgraphmapexit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dmapping * const mappptr), \ (grafptr, mappptr)) { SCOTCH_dgraphMapExit (grafptr, mappptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAPSAVE, dgraphmapsave, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dmapping * const mappptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHMAPSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_dgraphMapSave (grafptr, mappptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAPCOMPUTE, dgraphmapcompute, ( \ SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dmapping * const mappptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, mappptr, straptr, revaptr)) { *revaptr = SCOTCH_dgraphMapCompute (grafptr, mappptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHMAP, dgraphmap, ( \ SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Arch * const archptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const partloctab, \ int * const revaptr), \ (grafptr, archptr, straptr, partloctab, revaptr)) { *revaptr = SCOTCH_dgraphMap (grafptr, archptr, straptr, partloctab); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHPART, dgraphpart, ( \ SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Num * const partnbr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const partloctab, \ int * const revaptr), \ (grafptr, partnbr, straptr, partloctab, revaptr)) { *revaptr = SCOTCH_dgraphPart (grafptr, *partnbr, straptr, partloctab); } /* String lengths are passed at the very ** end of the argument list. */ SCOTCH_FORTRAN ( \ STRATDGRAPHMAP, stratdgraphmap, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATDGRAPHMAP)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratDgraphMap (straptr, strtab); /* Call original routine */ memFree (strtab); } /* ** */ SCOTCH_FORTRAN ( \ STRATDGRAPHMAPBUILD, stratdgraphmapbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const procnbr, \ const SCOTCH_Num * const partnbr, \ const double * const kbalval, \ int * const revaptr), \ (straptr, flagval, procnbr, partnbr, kbalval, revaptr)) { *revaptr = SCOTCH_stratDgraphMapBuild (straptr, *flagval, *procnbr, *partnbr, *kbalval); } /* ** */ SCOTCH_FORTRAN ( \ STRATDGRAPHCLUSTERBUILD, stratdgraphclusterbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const procnbr, \ const SCOTCH_Num * const pwgtval, \ const double * const densval, \ const double * const bbalval, \ int * const revaptr), \ (straptr, flagval, procnbr, pwgtval, densval, bbalval, revaptr)) { *revaptr = SCOTCH_stratDgraphClusterBuild (straptr, *flagval, *procnbr, *pwgtval, *densval, *bbalval); } scotch_6.0.9/src/libscotch/kgraph_map_bd.h0000644000302600021200000000664213465315041020757 0ustar pelegrinpelegrin/* Copyright 2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_bd.h **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the band graph partitioning **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Flag array accessors. +*/ #define kgraphMapBdFlagSize(n) (((n) + (sizeof (int) << 3) - 1) / (sizeof (int) << 3)) #define kgraphMapBdFlagVal(a,n) (((a)[(n) / (sizeof (int) << 3)] >> ((n) & ((sizeof (int) << 3) - 1))) & 1) #define kgraphMapBdFlagSet(a,n) (a)[(n) / (sizeof (int) << 3)] |= (1 << ((n) & ((sizeof (int) << 3) - 1))) /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct KgraphMapBdParam_ { INT distmax; /*+ Width of band surrounding the frontier +*/ Strat * stratbnd; /*+ Strategy for band graph +*/ Strat * stratorg; /*+ Strategy for original graph +*/ } KgraphMapBdParam; /* ** The function prototypes. */ int kgraphMapBd (Kgraph * const, const KgraphMapBdParam * const); scotch_6.0.9/src/libscotch/hgraph_order_si.c0000644000302600021200000001037413303015264021323 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_si.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders halo graph vertices **/ /** using a simple method. **/ /** **/ /** DATES : # Version 3.2 : from : 01 nov 1996 **/ /** to 21 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 02 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 11 dec 2002 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to : 04 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_SI #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderSi ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr) /*+ Single column-block +*/ { Gnum vnohnnd; Gnum vertnum; Gnum vnumnum; Gnum * restrict const peritab = ordeptr->peritab; const Gnum * restrict const vnumtax = grafptr->s.vnumtax; vnohnnd = grafptr->vnohnnd; if (vnumtax == NULL) { /* If graph is original graph */ for (vertnum = grafptr->s.baseval, vnumnum = ordenum; vertnum < vnohnnd; vertnum ++, vnumnum ++) peritab[vnumnum] = vertnum; } else { /* Graph is not original graph */ for (vertnum = grafptr->s.baseval, vnumnum = ordenum; vertnum < vnohnnd; vertnum ++, vnumnum ++) peritab[vnumnum] = vnumtax[vertnum]; } return (0); } scotch_6.0.9/src/libscotch/vdgraph_separate_bd.c0000644000302600021200000002365113560013732022155 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_bd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : This module computes a separator of the **/ /** given distributed separator graph by **/ /** creating a band graph of given witdh **/ /** around the current separator, computing **/ /** an improved separator of the band **/ /** graph, and projecting back the obtained **/ /** separator in the original graph. **/ /** **/ /** DATES : # Version 5.0 : from : 04 mar 2006 **/ /** to : 07 nov 2007 **/ /** # Version 5.1 : from : 11 nov 2007 **/ /** to : 01 mar 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_BD #include "module.h" #include "common.h" #include "parser.h" #include "dgraph.h" #include "vdgraph.h" #include "vdgraph_separate_bd.h" #include "vdgraph_separate_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a distributed band graph ** of given width around the current separator and ** applies distributed separation routines to it. ** The distributed graph is not guaranteed to be ** balanced at at all. ** It returns: ** - 0 : if the distributed band graph could be computed. ** - !0 : on error. */ int vdgraphSeparateBd ( Vdgraph * const grafptr, /*+ Distributed graph +*/ const VdgraphSeparateBdParam * const paraptr) /*+ Method parameters +*/ { Vdgraph bandgrafdat; /* Vertex separator band graph structure */ Gnum bandvertancnnd; /* End of local vertex array, without anchors */ Gnum bandvertlocnbr1; /* Number of band graph vertices in part 1 except anchor 1 */ Gnum bandvertlocnum; Gnum bandvertlocancadj; /* Flag set when anchor(s) represent unexistent vertices */ Gnum bandvertglbancadj; /* Global adjustment of anchor vertices */ Gnum complocsizeadj0; Gnum complocsizeadj1; Gnum reduloctab[3]; Gnum reduglbtab[3]; Gnum * restrict edloloctax; /* Save value for edge loads while we pretend we don't have them */ Gnum fronlocnum; if (grafptr->compglbsize[2] == 0) /* If no frontier to base on */ return (0); /* Then do nothing */ if (paraptr->distmax < 1) /* If distance is 0 (or less) */ return (0); /* Then do nothing */ edloloctax = grafptr->s.edloloctax; /* Fake no edge loads on original graph as we do not need them */ grafptr->s.edloloctax = NULL; if (dgraphBand (&grafptr->s, grafptr->complocsize[2], grafptr->fronloctab, grafptr->partgsttax, grafptr->complocload[0] + grafptr->complocload[2], grafptr->complocload[1], paraptr->distmax, &bandgrafdat.s, &bandgrafdat.fronloctab, &bandgrafdat.partgsttax, NULL, &bandvertlocnbr1, &bandvertlocancadj) != 0) { grafptr->s.edloloctax = edloloctax; errorPrint ("vdgraphSeparateBd: cannot create band graph"); return (1); } grafptr->s.edloloctax = edloloctax; /* Restore edge loads, if any */ bandgrafdat.complocsize[0] = bandgrafdat.s.vertlocnbr - (bandvertlocnbr1 + 1) - grafptr->complocsize[2]; /* Add 1 for anchor vertex 1 */ bandgrafdat.complocsize[1] = bandvertlocnbr1 + 1; /* Add 1 for anchor vertex 1 */ complocsizeadj0 = grafptr->complocsize[0] - bandgrafdat.complocsize[0]; complocsizeadj1 = grafptr->complocsize[1] - bandgrafdat.complocsize[1]; reduloctab[0] = bandgrafdat.complocsize[0]; reduloctab[1] = bandgrafdat.complocsize[1]; reduloctab[2] = bandvertlocancadj; /* Sum increases in size and load */ if (MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 3, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateBd: communication error (1)"); return (1); } bandvertglbancadj = reduglbtab[2]; bandgrafdat.compglbload[0] = grafptr->compglbload[0] + bandvertglbancadj; /* All loads are kept in band graph */ bandgrafdat.compglbload[1] = grafptr->compglbload[1] + bandvertglbancadj; bandgrafdat.compglbload[2] = grafptr->compglbload[2]; bandgrafdat.compglbloaddlt = grafptr->compglbloaddlt; /* Balance is not changed by anchor vertices */ bandgrafdat.complocload[0] = grafptr->complocload[0] + bandvertlocancadj; bandgrafdat.complocload[1] = grafptr->complocload[1] + bandvertlocancadj; bandgrafdat.complocload[2] = grafptr->complocload[2]; bandgrafdat.compglbsize[0] = reduglbtab[0]; bandgrafdat.compglbsize[1] = reduglbtab[1]; bandgrafdat.compglbsize[2] = grafptr->compglbsize[2]; /* All separator vertices are kept in band graph */ bandgrafdat.complocsize[2] = grafptr->complocsize[2]; bandgrafdat.levlnum = grafptr->levlnum; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (&bandgrafdat) != 0) { errorPrint ("vdgraphSeparateBd: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ if (vdgraphSeparateSt (&bandgrafdat, paraptr->strat) != 0) { /* Separate distributed band graph */ errorPrint ("vdgraphSeparateBd: cannot separate band graph"); vdgraphExit (&bandgrafdat); return (1); } bandvertancnnd = bandgrafdat.s.vertlocnnd - 2; reduloctab[0] = ((bandgrafdat.partgsttax[bandvertancnnd] == 0) && /* Check if anchor vertices remain in their parts */ (bandgrafdat.partgsttax[bandvertancnnd + 1] == 1)) ? 0 : 1; reduloctab[1] = bandgrafdat.complocsize[0] + complocsizeadj0; reduloctab[2] = bandgrafdat.complocsize[1] + complocsizeadj1; if (MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 3, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateBd: communication error (2)"); return (1); } if (reduglbtab[0] != 0) { /* If at least one anchor changed of part */ vdgraphExit (&bandgrafdat); /* Then keep original partition */ return (0); } grafptr->compglbload[0] = bandgrafdat.compglbload[0] - bandvertglbancadj; grafptr->compglbload[1] = bandgrafdat.compglbload[1] - bandvertglbancadj; grafptr->compglbload[2] = bandgrafdat.compglbload[2]; grafptr->compglbloaddlt = bandgrafdat.compglbloaddlt; grafptr->compglbsize[0] = reduglbtab[1]; grafptr->compglbsize[1] = reduglbtab[2]; grafptr->compglbsize[2] = bandgrafdat.compglbsize[2]; grafptr->complocload[0] = bandgrafdat.complocload[0] - bandvertlocancadj; grafptr->complocload[1] = bandgrafdat.complocload[1] - bandvertlocancadj; grafptr->complocload[2] = bandgrafdat.complocload[2]; grafptr->complocsize[0] = reduloctab[1]; grafptr->complocsize[1] = reduloctab[2]; grafptr->complocsize[2] = bandgrafdat.complocsize[2]; for (fronlocnum = 0; fronlocnum < bandgrafdat.complocsize[2]; fronlocnum ++) /* Project back separator */ grafptr->fronloctab[fronlocnum] = bandgrafdat.s.vnumloctax[bandgrafdat.fronloctab[fronlocnum]]; for (bandvertlocnum = bandgrafdat.s.baseval; bandvertlocnum < bandvertancnnd; bandvertlocnum ++) /* For all vertices except anchors */ grafptr->partgsttax[bandgrafdat.s.vnumloctax[bandvertlocnum]] = bandgrafdat.partgsttax[bandvertlocnum]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (grafptr) != 0) { errorPrint ("vdgraphSeparateBd: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ vdgraphExit (&bandgrafdat); return (0); } scotch_6.0.9/src/libscotch/mesh.h0000644000302600021200000002100113470115365017122 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source mesh functions. **/ /** **/ /** DATES : # Version 4.0 : from : 29 dec 2001 **/ /** to 11 may 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Mesh option flags. +*/ #define MESHNONE 0x0000 /* No options set */ #define MESHFREEEDGE 0x0001 /* Free edgetab array */ #define MESHFREEVERT 0x0002 /* Free verttab array */ #define MESHFREEVEND 0x0004 /* Free verttab array */ #define MESHFREEVNUM 0x0008 /* Free vnumtab array */ #define MESHFREEOTHR 0x0010 /* Free all other arrays */ #define MESHFREETABS 0x001F /* Free all mesh arrays */ #define MESHVERTGROUP 0x0010 /* All vertex arrays grouped */ /*+ The Mesh flag type. +*/ typedef int MeshFlag; /*+ Mesh property flags +*/ /*+ Mesh structure. It is basically a graph structure. It is a bipartite graph in the sense that node vertices are adjacent to element vertices only, and that element vertices are adjacent to node vertices only. Node vertices can all be put before or after element vertices, but node and element vertices cannot be mixed. In most algorithms, elements are put at the beginning because critical algorithms, such as the mesh induction and mesh coarsening routines, start by scanning element edges, such that elements can then be built on the fly before nodes are processed. Furthermore, as halo meshes comprise halo nodes but not halo elements, all halo nodes will be put at the end of the node array, making un-haloing much easier and inexpensive. Vertex global indices are also different, as vnumtab is only valid for (non-halo) node vertices. The base of the vnumtax array is thus vnodbas, and not s.baseval . Moreover, the contents of vnumtab is based with respect to baseval, and not to vnodbas, so that building the inverse permutation does not require to know vnodbas to trim node indices. When vertex loads are available, node loads represent the number of degrees of freedom per node, and element loads should be set as the sum of the vertex loads of all of their adjacent nodes (used by routines such as vmeshSeparateGg). +*/ typedef struct Mesh_ { MeshFlag flagval; /*+ Graph properties +*/ Gnum baseval; /*+ Base index for edge/vertex arrays +*/ Gnum velmnbr; /*+ Number of element vertices +*/ Gnum velmbas; /*+ Based number of first element +*/ Gnum velmnnd; /*+ Based number of first non-element vertex +*/ Gnum veisnbr; /*+ Number of isolated element vertices +*/ Gnum vnodnbr; /*+ Number of node vertices in mesh +*/ Gnum vnodbas; /*+ Based number of first node +*/ Gnum vnodnnd; /*+ Based number of first non-node vertex +*/ Gnum * verttax; /*+ Vertex array [based] +*/ Gnum * vendtax; /*+ End vertex array [based] +*/ Gnum * velotax; /*+ Element vertex load array (if present) +*/ Gnum * vnlotax; /*+ Node vertex load array (if present) +*/ Gnum velosum; /*+ Sum of element vertex weights +*/ Gnum vnlosum; /*+ Sum of node vertex weights +*/ Gnum * vnumtax; /*+ Vertex number in ancestor graph +*/ Gnum * vlbltax; /*+ Vertex label (from file) +*/ Gnum edgenbr; /*+ Number of edges (arcs) in graph +*/ Gnum * edgetax; /*+ Edge array [based] +*/ Gnum degrmax; /*+ Maximum degree +*/ } Mesh; /* ** The function prototypes. */ int meshInit (Mesh * const); void meshExit (Mesh * const); void meshFree (Mesh * const); int meshLoad (Mesh * restrict const, FILE * restrict const, const Gnum); int meshSave (const Mesh * restrict const, FILE * restrict const); Gnum meshBase (Mesh * const, const Gnum); int meshGraph (const Mesh * restrict const, Graph * restrict const); int meshInduceList (const Mesh *, Mesh *, const VertList *); int meshInducePart (const Mesh *, Mesh *, const Gnum, const GraphPart *, const GraphPart); int meshInduceSepa (const Mesh * restrict const, const GraphPart * restrict const, const Gnum, const Gnum * restrict const, Mesh * restrict const); int meshCheck (const Mesh * const); int meshReorder (const Mesh * restrict const, Mesh * restrict const); #ifdef GEOM_H int meshGeomLoadHabo (Mesh * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int meshGeomLoadScot (Mesh * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int meshGeomSaveScot (const Mesh * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); #endif /* GEOM_H */ scotch_6.0.9/src/libscotch/vdgraph_separate_df.h0000644000302600021200000000713613465315041022170 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_df.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the parallel diffusion separation **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 05 nov 2007 **/ /** to : 07 nov 2007 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Small non-zero float value. +*/ #define VDGRAPHSEPARATEDFEPSILON (1.0F / (float) (GNUMMAX)) /*+ Sign masking operator. +*/ #define VDGRAPHSEPARATEDFGNUMSGNMSK(i) ((Gnum) 0 - (((Gunum) (i)) >> (sizeof (Gnum) * 8 - 1))) /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VdgraphSeparateDfParam_ { INT partval; /*+ Part to aggregate to separator +*/ INT passnbr; /*+ Number of passes to do +*/ double cdifval; /*+ Coefficient of diffused load +*/ double cremval; /*+ Coefficient of remaining load +*/ double deltval; /*+ Maximum imbalance ratio +*/ } VdgraphSeparateDfParam; /* ** The function prototypes. */ int vdgraphSeparateDf (Vdgraph * const, const VdgraphSeparateDfParam * const); scotch_6.0.9/src/libscotch/library_geom_f.c0000644000302600021200000000774613560013261021155 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_geom_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the graph geometry handling routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 15 jun 2005 **/ /** to 22 dec 2005 **/ /** # Version 5.1 : from : 15 apr 2010 **/ /** to 15 apr 2010 **/ /** # Version 6.0 : from : 11 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /******************************************/ /* */ /* These routines are the Fortran API for */ /* the graph geometry handling routines. */ /* */ /******************************************/ /* ** */ SCOTCH_FORTRAN ( \ GEOMINIT, geominit, ( \ SCOTCH_Geom * const geomptr, \ int * const revaptr), \ (geomptr, revaptr)) { *revaptr = SCOTCH_geomInit (geomptr); } /* ** */ SCOTCH_FORTRAN ( \ GEOMEXIT, geomexit, ( \ SCOTCH_Geom * const geomptr), \ (geomptr)) { SCOTCH_geomExit (geomptr); } /* ** */ SCOTCH_FORTRAN ( \ GEOMDATA, geomdata, ( \ const SCOTCH_Geom * const geomptr, \ const double * const indxptr, \ SCOTCH_Num * const dimnptr, \ SCOTCH_Idx * const geomidx), \ (geomptr, indxptr, dimnptr, geomidx)) { double * geomtab; SCOTCH_geomData (geomptr, dimnptr, &geomtab); *geomidx = (geomtab - indxptr) + 1; /* Add 1 since Fortran indices start at 1 */ } scotch_6.0.9/src/libscotch/hmesh_induce.c0000644000302600021200000004505613303015264020624 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo source **/ /** mesh subgraph-making functions. **/ /** **/ /** DATES : # Version 4.0 : from : 07 jan 2002 **/ /** to 11 may 2004 **/ /** # Version 5.0 : from : 22 dec 2006 **/ /** to 11 jun 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH #define HMESH_INDUCE #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "hmesh.h" /*********************************************/ /* */ /* These routines handle halo source meshes. */ /* */ /*********************************************/ /* This routine builds the halo mesh induced ** by the original halo mesh and the array of ** selected node vertices. Elements which are ** adjacent to the selected nodes are themselves ** selected, as well as their adjacent node ** vertices, which comprise the new halo. ** In the induced halo mesh, elements are ** placed first, then non-halo nodes, then ** halo nodes. This order is quite important ** as it eases the building of vertex separation ** meshes from halo meshes, just by ignoring ** halo nodes. ** The induced vnumtab array is a baseval-based ** list of the selected node vertices if the ** original halo mesh does not have a vnumtab, or ** the proper subset of the original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hmeshInducePart ( const Hmesh * restrict const orgmeshptr, /* Pointer to original graph */ const GraphPart * restrict const orgparttax, /* Array of vertex partition flags */ const GraphPart orgpartval, /* Partition value of vertices to keep (0 or 1) */ const Gnum orgvelmnbr, /* Number of (maybe isolated) element vertices in selected part */ const Gnum orgvnodnbr, /* Number of node vertices in selected part */ const Gnum orgvnspnbr, /* Number of node vertices in separator */ Hmesh * restrict const indmeshptr) /* Pointer to induced halo submesh */ { Gnum orgvelmnum; /* Number of current element vertex in original halo mesh */ Gnum orgvnodnum; /* Number of current node vertex in original halo mesh */ Gnum * restrict orgindxtax; /* Original to induced vertex number translation array */ Gnum indvertnbr; /* Upper bound on the number of vertices in induced halo mesh */ Gnum indvertnum; /* Number of current vertex in induced mesh graph */ Gnum indvelmnbr; /* Number of element vertices in induced halo mesh */ Gnum indveihnbr; /* Number of newly created halo-isolated elements */ Gnum indvnodnbr; /* Upper bound on the number of node vertices in induced halo mesh */ Gnum indvnodnum; /* Number of current node vertex in induced halo mesh */ Gnum * restrict indedgetax; /* Based access to induced mesh graph edge arrays */ Gnum indedgenbr; /* (Approximate) number of edges in induced halo mesh */ Gnum indedgenum; /* Number of current edge in induced halo mesh */ Gnum * restrict indvnuhtax; /* Array of vertex numbers for halo nodes (aka vnumtab) */ Gnum indvelonbr; Gnum indvelosum; Gnum indvnlonbr; Gnum indvnlosum; Gnum indvnhlsum; indvelmnbr = orgvelmnbr - orgmeshptr->veihnbr; /* Remove known halo-isolated elements */ if (orgpartval == 0) /* If submesh is part zero */ indvelmnbr -= orgmeshptr->m.veisnbr; /* Also remove isolated elements, which belong to it */ indvnodnbr = orgvnodnbr + orgvnspnbr + orgmeshptr->m.vnodnnd - orgmeshptr->vnohnnd; /* Compute upper bound on number of node vertices */ indvertnbr = indvnodnbr + indvelmnbr; indedgenbr = ((orgmeshptr->m.degrmax > 0) && (indvertnbr < (orgmeshptr->m.edgenbr / orgmeshptr->m.degrmax))) /* Choose best upper bound on number of edges (avoid multiply overflow) */ ? (indvertnbr * orgmeshptr->m.degrmax) : orgmeshptr->m.edgenbr; memSet (indmeshptr, 0, sizeof (Hmesh)); /* Initialize halo mesh fields */ indmeshptr->m.baseval = orgmeshptr->m.baseval; /* Inherit mesh properties */ indmeshptr->m.flagval = MESHFREETABS | MESHVERTGROUP; indmeshptr->m.velmnbr = indvelmnbr; indmeshptr->m.velmbas = indmeshptr->m.baseval; /* Elements are placed first */ indmeshptr->m.velmnnd = indmeshptr->m.vnodbas = orgvelmnbr + indmeshptr->m.baseval; /* Node vertices are placed after elements */ indmeshptr->m.veisnbr = 0; /* All isolated elements will be removed in submesh */ indvelonbr = (orgmeshptr->m.velotax != NULL) ? indmeshptr->m.velmnbr : 0; indvnlonbr = (orgmeshptr->m.vnlotax != NULL) ? indvnodnbr : 0; if (memAllocGroup ((void **) (void *) &indmeshptr->m.verttax, (size_t) ((indvertnbr + 1) * sizeof (Gnum)), &indmeshptr->vehdtax, (size_t) ( orgvelmnbr * sizeof (Gnum)), /* vehdtab is limited to elements */ &indmeshptr->m.velotax, (size_t) ( indvelonbr * sizeof (Gnum)), &indmeshptr->m.vnlotax, (size_t) ( indvnlonbr * sizeof (Gnum)), &indmeshptr->m.vnumtax, (size_t) ( orgvnodnbr * sizeof (Gnum)), NULL) == NULL) { /* vnumtab is of size vnohnbr */ errorPrint ("hmeshInducePart: out of memory (1)"); /* Allocate induced mesh graph structure */ return (1); } indmeshptr->m.verttax -= indmeshptr->m.baseval; indmeshptr->m.vendtax = indmeshptr->m.verttax + 1; /* Compact array */ indmeshptr->m.velotax = (indvelonbr != 0) ? (indmeshptr->m.velotax - indmeshptr->m.velmbas) : NULL; indmeshptr->m.vnlotax = (indvnlonbr != 0) ? (indmeshptr->m.vnlotax - indmeshptr->m.vnodbas) : NULL; indmeshptr->m.vnumtax -= indmeshptr->m.vnodbas; /* Only for non-halo nodes */ indmeshptr->m.degrmax = orgmeshptr->m.degrmax; indmeshptr->vnohnbr = orgvnodnbr; indmeshptr->vnohnnd = indmeshptr->m.vnodbas + orgvnodnbr; indmeshptr->vehdtax -= indmeshptr->m.velmbas; indmeshptr->vnhlsum = orgvnodnbr; /* Assume no vertex loads */ if (memAllocGroup ((void **) (void *) &indedgetax, (size_t) (indedgenbr * sizeof (Gnum)), &orgindxtax, (size_t) ((orgmeshptr->m.velmnbr + orgmeshptr->m.vnodnbr) * sizeof (Gnum)), &indvnuhtax, (size_t) ((orgvnspnbr + orgmeshptr->m.vnodnnd - orgmeshptr->vnohnnd) * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshInducePart: out of memory (2)"); /* Allocate induced mesh graph structure */ hmeshExit (indmeshptr); return (1); } indedgetax -= indmeshptr->m.baseval; orgindxtax -= orgmeshptr->m.baseval; indvnuhtax -= indmeshptr->vnohnnd; /* Base array so as to catch halo nodes only */ indvnhlsum = 0; for (orgvnodnum = orgmeshptr->m.vnodbas, /* For all original non-halo node vertices */ indvnodnum = indmeshptr->m.vnodbas; /* And assuming all elements will be kept */ orgvnodnum < orgmeshptr->vnohnnd; orgvnodnum ++) { if (orgparttax[orgvnodnum] == orgpartval) { /* If in right part */ orgindxtax[orgvnodnum] = indvnodnum; /* Set new index of node */ indmeshptr->m.vnumtax[indvnodnum] = orgvnodnum - (orgmeshptr->m.vnodbas - orgmeshptr->m.baseval); if (orgmeshptr->m.vnlotax != NULL) indvnhlsum += (indmeshptr->m.vnlotax[indvnodnum] = orgmeshptr->m.vnlotax[orgvnodnum]); indvnodnum ++; } else if (orgparttax[orgvnodnum] == 2) /* If node belongs to separator */ orgindxtax[orgvnodnum] = ~0; /* Pre-set array for separator nodes */ } #ifdef SCOTCH_DEBUG_HMESH2 if ((indvnodnum - indmeshptr->m.vnodbas) != orgvnodnbr) { errorPrint ("hmeshInducePart: internal error (1)"); memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ memSet (orgindxtax + orgmeshptr->vnohnnd, ~0, (orgmeshptr->m.vnodnnd - orgmeshptr->vnohnnd) * sizeof (Gnum)); /* Pre-set halo node vertices */ indveihnbr = 0; indvelosum = 0; indvnlosum = 0; for (orgvelmnum = orgmeshptr->m.velmbas, /* For all elements of original graph */ indvertnum = indedgenum = indmeshptr->m.baseval; /* Elements are placed first in vertex array */ orgvelmnum < orgmeshptr->m.velmnnd; orgvelmnum ++) { if (orgparttax[orgvelmnum] == orgpartval) { /* If element belongs to right part */ Gnum orgedgenum; Gnum indedgennd; /* Index of after-last edge position in edge array */ Gnum indedhdnum; /* Index of after-last edge linking to non-halo vertices */ orgedgenum = orgmeshptr->m.verttax[orgvelmnum]; if (orgedgenum == orgmeshptr->vehdtax[orgvelmnum]) /* If (halo-)isolated element vertex */ continue; /* Discard element in induced submesh */ #ifdef SCOTCH_DEBUG_HMESH2 if (indvertnum >= indmeshptr->m.velmnnd) { /* If too many element vertices kept */ errorPrint ("hmeshInducePart: internal error (2)"); /* Maybe a problem with veisnbr or veihnbr */ memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ indmeshptr->m.verttax[indvertnum] = indedgenum; indedhdnum = orgmeshptr->m.vendtax[orgvelmnum] - orgmeshptr->m.verttax[orgvelmnum] + indedgenum; indedgennd = indedhdnum; if (orgmeshptr->m.velotax != NULL) { Gnum orgveloval; orgveloval = orgmeshptr->m.velotax[orgvelmnum]; indmeshptr->m.velotax[indvertnum] = orgveloval; indvelosum += orgveloval; } for ( ; orgedgenum < orgmeshptr->m.vendtax[orgvelmnum]; orgedgenum ++) { Gnum orgvertend; orgvertend = orgmeshptr->m.edgetax[orgedgenum]; if (orgindxtax[orgvertend] == ~0) { /* If found yet un-numbered halo node */ #ifdef SCOTCH_DEBUG_HMESH2 if ((orgvertend < orgmeshptr->vnohnnd) && (orgparttax[orgvertend] != 2)) { errorPrint ("hmeshInducePart: internal error (3)"); memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ if (orgmeshptr->m.vnlotax != NULL) { Gnum orgvnloval; orgvnloval = orgmeshptr->m.vnlotax[orgvertend]; indmeshptr->m.vnlotax[indvnodnum] = orgvnloval; indvnlosum += orgvnloval; } orgindxtax[orgvertend] = indvnodnum; /* Set number of halo node */ indvnuhtax[indvnodnum] = orgvertend; /* Keep number of halo node */ indvnodnum ++; indedgetax[-- indedhdnum] = orgindxtax[orgvertend]; continue; } if (orgindxtax[orgvertend] < indmeshptr->vnohnnd) /* If non-halo vertex */ indedgetax[indedgenum ++] = orgindxtax[orgvertend]; else /* Else if halo vertex */ indedgetax[-- indedhdnum] = orgindxtax[orgvertend]; } #ifdef SCOTCH_DEBUG_HMESH2 if (indedgenum != indedhdnum) { errorPrint ("hmeshInducePart: internal error (4)"); memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ if (indedhdnum == indmeshptr->m.verttax[indvertnum]) /* If element has halo nodes only */ indveihnbr ++; /* One more halo-isolated element created */ indmeshptr->vehdtax[indvertnum] = indedhdnum; indedgenum = indedgennd; orgindxtax[orgvelmnum] = indvertnum; indvertnum ++; /* One more element created */ } else orgindxtax[orgvelmnum] = ~0; } #ifdef SCOTCH_DEBUG_HMESH2 if (indvertnum != indmeshptr->m.velmnnd) { errorPrint ("hmeshInducePart: internal error (5)"); /* Maybe a problem with veisnbr or veihnbr */ memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ indmeshptr->veihnbr = indveihnbr; indmeshptr->m.vnodnbr = indvnodnum - indmeshptr->m.vnodbas; indmeshptr->m.vnodnnd = indvertnum + indmeshptr->m.vnodnbr; indmeshptr->m.velosum = (indmeshptr->m.velotax != NULL) ? indvelosum : indmeshptr->m.velmnbr; if (indmeshptr->m.vnlotax != NULL) { /* If vertex loads wanted */ indmeshptr->m.vnlosum = indvnhlsum + indvnlosum; indmeshptr->vnhlsum = indvnhlsum; } else { indmeshptr->m.vnlosum = indmeshptr->m.vnodnbr; indmeshptr->vnhlsum = indmeshptr->vnohnbr; } indedgenbr = 2 * (indedgenum - indmeshptr->m.baseval); /* Twice as many arcs as element arcs */ for ( ; indvertnum < indmeshptr->vnohnnd; indvertnum ++) { /* For all non-halo induced node vertices */ Gnum orgvnodnum; Gnum orgedgenum; orgvnodnum = indmeshptr->m.vnumtax[indvertnum] + (orgmeshptr->m.vnodbas - orgmeshptr->m.baseval); /* Get number of original node */ indmeshptr->m.verttax[indvertnum] = indedgenum; for (orgedgenum = orgmeshptr->m.verttax[orgvnodnum]; orgedgenum < orgmeshptr->m.vendtax[orgvnodnum]; orgedgenum ++) { Gnum orgvertend; orgvertend = orgmeshptr->m.edgetax[orgedgenum]; #ifdef SCOTCH_DEBUG_HMESH2 if (orgindxtax[orgvertend] == ~0) { errorPrint ("hmeshInducePart: internal error (6)"); memFree (indedgetax + indmeshptr->m.baseval); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ indedgetax[indedgenum ++] = orgindxtax[orgvertend]; } } indmeshptr->enohnbr = indedgenum - indmeshptr->m.baseval; for ( ; indvertnum < indmeshptr->m.vnodnnd; indvertnum ++) { /* For all halo induced node vertices */ Gnum orgvnodnum; Gnum orgedgenum; orgvnodnum = indvnuhtax[indvertnum]; /* Get number of original node */ indmeshptr->m.verttax[indvertnum] = indedgenum; for (orgedgenum = orgmeshptr->m.verttax[orgvnodnum]; orgedgenum < orgmeshptr->m.vendtax[orgvnodnum]; orgedgenum ++) { Gnum orgvertend; orgvertend = orgmeshptr->m.edgetax[orgedgenum]; if (orgindxtax[orgvertend] != ~0) { /* If end element belongs to right part */ indedgetax[indedgenum ++] = orgindxtax[orgvertend]; } } } indmeshptr->m.verttax[indvertnum] = indedgenum; /* Set end of edge array */ indmeshptr->m.edgenbr = indedgenum - indmeshptr->m.baseval; indmeshptr->m.vnodnnd = indvertnum; /* Record number of induced non-element vertices */ indmeshptr->m.vnodnbr = indvertnum - indmeshptr->m.vnodbas; if (orgmeshptr->m.vnumtax != NULL) { /* If source mesh is not original mesh */ for (indvnodnum = indmeshptr->m.vnodbas; indvnodnum < indmeshptr->vnohnnd; indvnodnum ++) indmeshptr->m.vnumtax[indvnodnum] = orgmeshptr->m.vnumtax[indmeshptr->m.vnumtax[indvnodnum] + (orgmeshptr->m.vnodbas - orgmeshptr->m.baseval)]; } indmeshptr->m.edgetax = memRealloc (indedgetax + indmeshptr->m.baseval, indedgenbr * sizeof (Gnum)); indmeshptr->m.edgetax -= indmeshptr->m.baseval; #ifdef SCOTCH_DEBUG_HMESH2 if (hmeshCheck (indmeshptr) != 0) { /* Check halo mesh consistency */ errorPrint ("hmeshInducePart: inconsistent halo mesh data"); hmeshExit (indmeshptr); return (1); } #endif /* SCOTCH_DEBUG_HMESH2 */ return (0); } scotch_6.0.9/src/libscotch/dgraph_fold_comm.c0000644000302600021200000005724313560005435021462 0ustar pelegrinpelegrin/* Copyright 2007,2009-2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold_comm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes the communication **/ /** pattern of the distributed graph **/ /** folding process. **/ /** **/ /** DATES : # Version 5.0 : from : 23 may 2006 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 18 jan 2009 **/ /** to : 10 sep 2011 **/ /** **/ /************************************************************/ #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_fold_comm.h" /* This routine computes an optimized communication ** scheme for folding the data of a distributed graph. ** It is currently based on a maximum fixed number of ** communications per process. If this maximum is reached, ** the algorithm will fail. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphFoldComm ( const Dgraph * restrict const grafptr, const int partval, /* 0 for first half, 1 for second half */ int * restrict const commptr, /* Pointer to maximum number of communications per process */ int * restrict const commtypval, /* Process will be sender or receiver */ DgraphFoldCommData *restrict * restrict const commdatptr, /* Slots for communication */ Gnum *restrict * restrict const commvrtptr, /* Slots of starting global vertex send indices */ Gnum * restrict const proccnttab, /* Receive count array, for receivers */ int * restrict const vertadjnbrptr, /* Number of adjustment ranges, for receivers */ Gnum * restrict * restrict const vertadjptr, /* Pointer to global index adjustment array, for receivers */ Gnum * restrict * restrict const vertdltptr) /* Pointer to global delta adjustment array, for receivers */ { int commmax; /* Maximum number of communications per process */ int procnum; Gnum * restrict commvrttab; DgraphFoldCommData * restrict commdattab; DgraphFoldCommData * restrict procsrttab; /* Sort array */ int procsndbas; int procsndmnd; int procsndidx; int procrcvbas; int procrcvnnd; int procrcvidx; int fldprocnbr; Gnum * restrict vertadjtab; Gnum * restrict vertdlttab; int * restrict vertprmtab; /* Permutation array for adjustment range computations */ int i; #ifdef SCOTCH_DEBUG_DGRAPH2 DgraphFoldCommData * restrict procchktab; int chekloctab[2]; int chekglbtab[2]; if (grafptr->procglbnbr < 2) { errorPrint ("dgraphFoldComm: invalid parameters"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if ((procsrttab = memAlloc (grafptr->procglbnbr * sizeof (DgraphFoldCommData))) == NULL) { errorPrint ("dgraphFoldComm: out of memory (1)"); return (1); } for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { procsrttab[procnum].procnum = procnum; procsrttab[procnum].vertnbr = grafptr->proccnttab[procnum]; } fldprocnbr = (grafptr->procglbnbr + 1) / 2; /* Get number of processes in part 0 (always more than in part 1) */ intSort2asc1 (procsrttab, fldprocnbr); /* Sort both parts of processor array */ intSort2asc1 (procsrttab + fldprocnbr, grafptr->procglbnbr - fldprocnbr); if (partval == 0) { /* If part 0 will receive the data */ procrcvbas = 0; /* Receive by ascending weight order in first part */ procrcvnnd = fldprocnbr; procsndbas = grafptr->procglbnbr; /* Send by descending weight order in other part */ procsndmnd = fldprocnbr; } else { /* Part 1 will receive the data */ procrcvbas = fldprocnbr; /* Receive by ascending weight order in first part */ procrcvnnd = grafptr->procglbnbr; procsndbas = fldprocnbr; /* Send by descending weight order in other part */ procsndmnd = 0; fldprocnbr = grafptr->procglbnbr - fldprocnbr; } *commtypval = ((grafptr->proclocnum >= procrcvbas) && (grafptr->proclocnum < procrcvnnd)) ? DGRAPHFOLDCOMMRECV : DGRAPHFOLDCOMMSEND; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((*commtypval == DGRAPHFOLDCOMMRECV) && ((proccnttab == NULL) || (vertadjptr == NULL) || (vertdltptr == NULL))) { errorPrint ("dgraphFoldComm: internal error (1)"); memFree (procsrttab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (commmax = DGRAPHFOLDCOMMNBR, commdattab = NULL; ; commmax ++) { /* Start with small number of communications per process */ int procrcvnum; int procsndnum; int procsndnxt; /* Index of next sender to process after current sender */ Gnum vertglbsum; /* Global number of vertices already sent from all previous senders */ Gnum vertglbavg; /* Global average value of sent vertices to reach during current round */ Gnum vertsndrmn; /* Remaining number of vertices to send from current sending process */ int flagrcvval; /* Number of messages already sent by receiver and sender */ int flagsndval; int commtmp; if (commdattab != NULL) memFree (commdattab); commtmp = (proccnttab == NULL) ? 0 : commmax; if (memAllocGroup ((void **) (void *) &commdattab, (size_t) (commmax * sizeof (DgraphFoldCommData)), &commvrttab, (size_t) (commmax * sizeof (Gnum)), &vertadjtab, (size_t) (commtmp * grafptr->procglbnbr * sizeof (Gnum)), &vertdlttab, (size_t) (commtmp * grafptr->procglbnbr * sizeof (Gnum)), #ifdef SCOTCH_DEBUG_DGRAPH2 &procchktab, (size_t) (commmax * grafptr->procglbnbr * sizeof (DgraphFoldCommData)), #endif /* SCOTCH_DEBUG_DGRAPH2 */ &vertprmtab, (size_t) ((commmax + 1) * fldprocnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphFoldComm: out of memory (2)"); memFree (procsrttab); return (1); } for (i = 0; i < commmax; i ++) { /* Assume we will perform no communication at all */ commdattab[i].procnum = -1; commdattab[i].vertnbr = 0; } if (proccnttab != NULL) { /* If we are a receiver process, start filling count and adjustment arrays */ int procrcvtmp; memSet (vertprmtab, ~0, (commmax + 1) * fldprocnbr * sizeof (int)); /* Reset adjustment index arrays */ memSet (vertadjtab, ~0, commmax * grafptr->procglbnbr * sizeof (Gnum)); for (procrcvtmp = procrcvbas; procrcvtmp < procrcvnnd; procrcvtmp ++) { /* Fill count and adjustment arrays for receiver processes slots */ vertadjtab[procrcvtmp * commmax] = grafptr->procvrttab[procrcvtmp]; vertdlttab[procrcvtmp * commmax] = proccnttab[procrcvtmp - procrcvbas] = grafptr->proccnttab[procrcvtmp]; vertprmtab[(procrcvtmp - procrcvbas) * (commmax + 1)] = procrcvtmp * commmax; } } for (procrcvidx = procrcvbas; procrcvidx < (procrcvnnd - 1); procrcvidx ++, procrcvnnd --) { /* Overloaded receiver vertices will re-send some of their load */ Gnum vertsndnbr; /* Potential overload of receiver process */ procsndidx = procrcvnnd - 1; vertsndnbr = procsrttab[procsndidx].vertnbr - DATASIZE (grafptr->vertglbnbr, fldprocnbr, procsndidx - procrcvbas); if (vertsndnbr <= 0) /* If no further overload to improve, exit loop */ break; procrcvnum = procsrttab[procrcvidx].procnum; procsndnum = procsrttab[procsndidx].procnum; procsrttab[procrcvidx].vertnbr = - (procsrttab[procrcvidx].vertnbr + vertsndnbr); /* Flag as having had a communication */ if (proccnttab != NULL) { /* If we are a receiver process, fill count and adjustment arrays */ proccnttab[procrcvnum - procrcvbas] += vertsndnbr; proccnttab[procsndnum - procrcvbas] -= vertsndnbr; /* Vertices are transferred between receiver processes */ vertadjtab[procsndnum * commmax + 1] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndnbr; vertdlttab[procsndnum * commmax + 1] = vertsndnbr; vertdlttab[procsndnum * commmax] -= vertsndnbr; vertprmtab[(procrcvnum - procrcvbas) * (commmax + 1) + 1] = procsndnum * commmax + 1; if (procsndnum == grafptr->proclocnum) { /* If we are the sender receiver process */ *commtypval = DGRAPHFOLDCOMMSEND | DGRAPHFOLDCOMMRECV; /* Indicate it */ commdattab[0].procnum = procrcvnum; /* Record communication */ commdattab[0].vertnbr = vertsndnbr; commvrttab[0] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndnbr; /* Set starting global index of vertices to be sent */ } else if (procrcvnum == grafptr->proclocnum) { /* If we are the receiver receiver process */ commdattab[0].procnum = procsndnum; /* Record communication */ commdattab[0].vertnbr = vertsndnbr; commvrttab[0] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndnbr; /* Set starting global index of vertices to be sent */ } } } while ((procsndmnd < procsndbas) && (procsrttab[procsndmnd].vertnbr == 0)) /* Do not account for empty sender processes */ procsndmnd ++; if (procsndmnd >= procsndbas) /* If there are no more sender processes */ break; /* We have completed communication computation */ procsndidx = procsndbas - 1; procsndnxt = procsndidx - 1; vertsndrmn = procsrttab[procsndidx].vertnbr; flagsndval = 0; procrcvidx = procrcvbas; procrcvnum = procsrttab[procrcvidx].procnum; flagrcvval = 0; vertglbavg = DATASIZE (grafptr->vertglbnbr, fldprocnbr, 0); vertglbsum = procsrttab[procrcvidx].vertnbr; /* Account for vertices already present in receiver process */ if (vertglbsum < 0) { /* If first receiver has already received a communication */ flagrcvval = 1; vertglbsum = - vertglbsum; procsrttab[procrcvidx].vertnbr = vertglbsum; /* Un-flag */ } while (1) { Gnum vertrcvrmn; /* Remaining number of vertices to receive */ Gnum vertsndnbr; /* Number of vertices actually sent and received */ Gnum vertsndnxt; /* Adjustment to add to vertex count of next sender */ int mesgrcvrmn; /* Number of message slots to receive small messages */ int flagsndnxt; #ifdef SCOTCH_DEBUG_DGRAPH2 if (flagrcvval + flagsndval >= (commmax * 2)) { errorPrint ("dgraphFoldComm: internal error (2)"); memFree (commdattab); /* Free group leader */ memFree (procsrttab); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vertrcvrmn = (vertglbavg > vertglbsum) ? (vertglbavg - vertglbsum) : 0; /* Remaining space on receiver */ mesgrcvrmn = (vertsndrmn >= vertrcvrmn) ? (commmax - 1) : (commmax - 2); if ((procsndidx > procsndmnd) && /* If there remains small messages to be considered */ (((flagsndval == 0) && /* If sender has not sent anything yet or just started */ (flagrcvval < mesgrcvrmn)) || /* And receiver has space for larger messages to come */ ((flagrcvval == 0) && /* Or if receiver has not received anything yet */ (flagsndval < (commmax - 2)))) && /* And sender has enough slots to send */ (vertrcvrmn >= procsrttab[procsndmnd].vertnbr)) { /* And if receiver can hold small message entirely */ procsndnxt = procsndidx; /* Current large message will be processed next time */ procsndidx = procsndmnd; /* Process smallest message available to date */ flagsndnxt = flagsndval; /* Record location of next message to send */ flagsndval = 0; vertsndnxt = procsrttab[procsndnxt].vertnbr - vertsndrmn; /* Record vertices already sent */ vertsndnbr = /* All of its contents will be sent in one piece */ vertsndrmn = procsrttab[procsndmnd].vertnbr; procsndmnd ++; /* Small message has been processed */ } else { flagsndnxt = 0; vertsndnxt = 0; /* Next sender will not have been interrupted by a small message */ vertsndnbr = ((flagsndval >= (commmax - 1)) || /* If last chance to send for this process */ (((procrcvnnd - procrcvidx) * (commmax - 1) - flagrcvval) <= (procsndidx - procsndmnd))) /* Or if too few communications remain with sender receivers accounted for */ ? vertsndrmn /* Send all of the vertices to be sent */ : MIN (vertsndrmn, vertrcvrmn); /* Else just send what the receiver needs */ } procsndnum = procsrttab[procsndidx].procnum; if (vertsndnbr > 0) { /* If useful communication can take place */ if (proccnttab != NULL) { /* If we are a receiver process, fill count and adjustment arrays */ proccnttab[procrcvnum - procrcvbas] += vertsndnbr; vertadjtab[procsndnum * commmax + flagsndval] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndrmn; vertdlttab[procsndnum * commmax + flagsndval] = vertsndnbr; vertprmtab[(procrcvnum - procrcvbas) * (commmax + 1) + 1 + flagrcvval] = procsndnum * commmax + flagsndval; if (procrcvnum == grafptr->proclocnum) { /* If we are the receiver process */ commdattab[flagrcvval].procnum = procsndnum; /* Record communication */ commdattab[flagrcvval].vertnbr = vertsndnbr; commvrttab[flagrcvval] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndrmn; /* Set starting global index of vertices to be sent */ } } else if (procsndnum == grafptr->proclocnum) { /* If we are the sending process */ commdattab[flagsndval].procnum = procrcvnum; /* Record communication */ commdattab[flagsndval].vertnbr = vertsndnbr; commvrttab[flagsndval] = grafptr->procvrttab[procsndnum] + grafptr->proccnttab[procsndnum] - vertsndrmn; /* Set starting global index of vertices to be sent */ } vertglbsum += vertsndnbr; /* Account for vertices sent and received */ vertsndrmn -= vertsndnbr; flagsndval ++; flagrcvval ++; } if (vertsndrmn <= 0) { /* If sending process has sent everything */ procsndidx = procsndnxt; /* Process next vertex to send */ if (procsndidx < procsndmnd) /* If was last sending process, end loop */ break; procsndnxt = procsndidx - 1; /* Prepare next sender process */ flagsndval = flagsndnxt; /* Skip to next sending process */ vertsndrmn = procsrttab[procsndidx].vertnbr - vertsndnxt; } if ((flagrcvval >= commmax) || /* If receiver cannot receive more */ ((vertglbsum >= vertglbavg) && /* Or has received what it needed and is not forced to accept more */ (((procrcvnnd - procrcvidx) * (commmax - 1) - flagrcvval) > (procsndidx - procsndmnd)))) { if (++ procrcvidx >= procrcvnnd) /* If was last receiver, exit loop and go finalizing communication arrays */ break; procrcvnum = procsrttab[procrcvidx].procnum; /* Skip to next receiver process */ vertglbavg += DATASIZE (grafptr->vertglbnbr, fldprocnbr, procrcvidx - procrcvbas); if (procsrttab[procrcvidx].vertnbr >= 0) { /* If receiver did not receive from a sender receiver */ flagrcvval = 0; vertglbsum += procsrttab[procrcvidx].vertnbr; /* Account for vertices already present in receiver process */ } else { /* Receiver already received from a sender receiver */ flagrcvval = 1; /* Already a communication performed */ vertglbsum -= procsrttab[procrcvidx].vertnbr; /* Use negative value */ } } } if ((procsndidx <= procsndmnd) && (vertsndrmn <= 0)) /* If no sender vertex which has something to send remains */ break; /* Exit the loop on increasing number of communications */ } #ifdef SCOTCH_DEBUG_DGRAPH2 chekloctab[0] = - commmax; chekloctab[1] = commmax; if (MPI_Allreduce (chekloctab, chekglbtab, 2, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphFoldComm: communication error"); memFree (commdattab); /* Free group leader */ return (1); } if ((chekglbtab[0] != chekloctab[0]) || (chekglbtab[1] != chekloctab[1])) { errorPrint ("dgraphFoldComm: internal error (3)"); memFree (commdattab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (proccnttab != NULL) { /* If we are a receiver process */ int vertadjnbr; /* Number of adjustment slots */ Gnum vertadjsum; /* Current new starting position of current slot */ for (procnum = 0, vertadjsum = grafptr->baseval; procnum < ((commmax + 1) * fldprocnbr); procnum ++) { int vertprmnum; Gnum vertadjtmp; vertprmnum = vertprmtab[procnum]; if (vertprmnum == ~0) /* Skip empty slots */ continue; vertadjtmp = vertdlttab[vertprmnum]; /* Accumulate new slot indices and compute adjustments */ vertdlttab[vertprmnum] = vertadjsum - vertadjtab[vertprmnum]; vertadjsum += vertadjtmp; } for (procnum = vertadjnbr = 0; procnum < (commmax * grafptr->procglbnbr); procnum ++) { /* Compact vertex adjustment arrays */ if (vertadjtab[procnum] != -1) { vertadjtab[vertadjnbr] = vertadjtab[procnum]; vertdlttab[vertadjnbr] = vertdlttab[procnum]; vertadjnbr ++; } } vertadjtab[vertadjnbr] = grafptr->procvrttab[grafptr->procglbnbr]; /* Set upper bound on global vertex indices */ *vertadjnbrptr = vertadjnbr; *vertadjptr = vertadjtab; *vertdltptr = vertdlttab; } *commdatptr = commdattab; /* Set group leader */ *commvrtptr = commvrttab; *commptr = commmax; memFree (procsrttab); #ifdef SCOTCH_DEBUG_DGRAPH2 if (proccnttab == NULL) { /* If we are a sender process */ Gnum vertsndnbr; /* Number of vertices actually sent */ int i; for (i = 0, vertsndnbr = 0; (i < commmax) && (commdattab[i].procnum >= 0); i ++) vertsndnbr += commdattab[i].vertnbr; if (vertsndnbr != grafptr->vertlocnbr) { errorPrint ("dgraphFoldComm: internal error (4)"); memFree (commdattab); /* Free group leader */ return (1); } } if (MPI_Allgather (commdattab, 2 * commmax, GNUM_MPI, procchktab, 2 * commmax, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphFoldComm: communication error"); memFree (commdattab); /* Free group leader */ return (1); } for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { int commnum; for (commnum = 0; (commnum < commmax) && (procchktab[commmax * procnum + commnum].procnum != -1); commnum ++) { Gnum procend; Gnum vertnbr; int commend; procend = procchktab[commmax * procnum + commnum].procnum; vertnbr = procchktab[commmax * procnum + commnum].vertnbr; for (commend = 0; commend < commmax; commend ++) { if ((procchktab[commmax * procend + commend].procnum == procnum) && (procchktab[commmax * procend + commend].vertnbr == vertnbr)) break; } if (commend >= commmax) { errorPrint ("dgraphFoldComm: internal error (5)"); memFree (commdattab); /* Free group leader */ return (1); } } } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/library_graph_color.c0000644000302600021200000001352613560013261022211 0ustar pelegrinpelegrin/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_color.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the graph **/ /** coloring routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 6.0 : from : 02 jan 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "graph_coarsen.h" #include "scotch.h" /*********************************/ /* */ /* This routine is the C API for */ /* the graph coloring routine. */ /* */ /*********************************/ /*+ This routine creates a color array for the *** given graph. *** It returns: *** - 0 : if the graph has been coarsened. *** - 1 : if the graph could not be coarsened. *** - 2 : on error. +*/ int SCOTCH_graphColor ( const SCOTCH_Graph * restrict const grafptr, /* Graph to color */ SCOTCH_Num * restrict const colotab, /* Pointer to color array */ SCOTCH_Num * restrict const coloptr, /* Pointer to number of colors */ const SCOTCH_Num flagval) /* Flag value (not used) */ { Gnum baseval; Gnum vertnum; Gnum vertnbr; Gnum vertnnd; Gnum queunnd; Gnum * restrict queutax; Gnum * restrict randtax; Gnum colonum; Gnum * restrict colotax; const Gnum * restrict const verttax = ((Graph *) grafptr)->verttax; const Gnum * restrict const vendtax = ((Graph *) grafptr)->vendtax; const Gnum * restrict const edgetax = ((Graph *) grafptr)->edgetax; baseval = ((Graph *) grafptr)->baseval; vertnbr = ((Graph *) grafptr)->vertnbr; vertnnd = vertnbr + baseval; memSet (colotab, ~0, vertnbr * sizeof (Gnum)); colotax = ((Gnum *) colotab) - baseval; if (memAllocGroup ((void **) (void *) &queutax, (size_t) (vertnbr * sizeof (Gnum)), &randtax, (size_t) (vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphColor) ": out of memory"); return (1); } queutax -= baseval; randtax -= baseval; intRandInit (); /* Check that random number generator is initialized */ for (vertnum = baseval; vertnum < vertnnd; vertnum ++) randtax[vertnum] = intRandVal (32768); queunnd = vertnnd; for (colonum = 0; queunnd > baseval; colonum ++) { /* Color numbers are not based */ Gnum queuold; Gnum queunew; for (queunew = queuold = baseval; queuold < queunnd; queuold ++) { Gnum vertnum; Gnum edgenum; Gnum edgennd; Gnum randval; vertnum = (queunnd == vertnnd) ? queuold : queutax[queuold]; randval = randtax[vertnum]; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum vertend; Gnum randend; vertend = edgetax[edgenum]; if (colotax[vertend] >= 0) continue; randend = randtax[vertend]; if ((randend > randval) || ((randend == randval) && (vertend > vertnum))) /* Tie breaking when same random value */ break; } if (edgenum >= edgennd) colotax[vertnum] = colonum; else queutax[queunew ++] = vertnum; } queunnd = queunew; } *coloptr = colonum; /* Set number of colors found */ memFree (queutax + baseval); return (0); } scotch_6.0.9/src/libscotch/hmesh_order_cp.c0000644000302600021200000006045213465315041021154 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_cp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module performs compession of mesh **/ /** nodes, by merging nodes having the same **/ /** adjacency structure. **/ /** **/ /** DATES : # Version 4.0 : from : 08 feb 2004 **/ /** to 05 jan 2005 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 12 sep 2007 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to : 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_CP #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_cp.h" #include "hmesh_order_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderCp ( const Hmesh * restrict const finemeshptr, Order * restrict const fineordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HmeshOrderCpParam * restrict const paraptr) { Hmesh coarmeshdat; /* Compressed halo submesh */ Order coarordedat; /* Ordering of compressed halo submesh */ Gnum * restrict coarperitab; /* Coarse permutation array */ const Gnum * restrict coarperitax; /* Temporary based access to coarperitab */ Gnum coarvertnum; /* Number of current compressed vertex */ Gnum * restrict coarvsiztax; /* Array of coarse vertex sizes (as number of merged fine vertices) */ Gnum coaredgenum; /* Number of current compressed edge */ Gnum * restrict coarvpostax; /* Position in fine permutation of fine vertices merged into same vertex */ Gnum coarvnodmax; Gnum coarvertmax; Gnum * restrict finecoartax; /* Original to compressed vertex number array */ HmeshOrderCpHash * restrict finehashtab; /* Neighbor hash table */ Gnum finehashmsk; /* Mask for access to hash table */ int * restrict finehasptab; /* Pre-hashing table */ Gnum finehaspmsk; /* Mask for access to pre-hashing table */ Gnum * restrict finehsumtax; /* Array of hash values for each original vertex */ Gnum finevsizsum; /* Sum of compressed vertex sizes to build fine inverse permutation */ Gnum coarvsizsiz; /* Size of array of sizes of coarse nodes */ Gnum coarvelmnbr; /* Number of coarse element vertices */ Gnum * restrict coarverttax; Gnum * restrict coarvnlotax; Gnum * restrict coaredgetax; Gnum * restrict coarfinetax; Gnum finevnodnum; Gnum coarvnodnbr; Gnum finevelmnum; Gnum coarvnodnnd; Gnum coardegrmax; Gnum coarvnodnum; #ifdef SCOTCH_DEBUG_ORDER2 Gnum finevertnbr; /* Number of fine vertices in compressed elimination tree */ #endif /* SCOTCH_DEBUG_ORDER2 */ if (finemeshptr->vnohnbr != finemeshptr->m.vnodnbr) { errorPrint ("hmeshOrderCp: halo meshes not supported yet"); return (1); } coarvelmnbr = finemeshptr->m.velmnbr; /* To date, keep isolated elements */ coarvnodmax = (Gnum) ((double) finemeshptr->vnohnbr * paraptr->comprat) + (finemeshptr->m.vnodnbr - finemeshptr->vnohnbr); coarvertmax = coarvnodmax + coarvelmnbr; coarvsizsiz = (finemeshptr->m.vnlotax == NULL) ? 0 : coarvnodmax; for (finehashmsk = 15; /* Set neighbor hash table size */ finehashmsk < finemeshptr->m.degrmax; finehashmsk = finehashmsk * 2 + 1) ; finehashmsk = finehashmsk * 4 + 3; /* Fill hash table at 1/4 of capacity */ if (memAllocGroup ((void **) (void *) &coarverttax, (size_t) ((coarvertmax + 1) * sizeof (Gnum)), &coarvsiztax, (size_t) (coarvsizsiz * sizeof (Gnum)), /* TRICK: if no vertex loads, coarvsiztax points to coarvnodtax */ &coarvnlotax, (size_t) (coarvnodmax * sizeof (Gnum)), /* Only change node weights */ &finecoartax, (size_t) (finemeshptr->m.vnodnbr * sizeof (Gnum)), &coaredgetax, (size_t) (finemeshptr->m.edgenbr * sizeof (Gnum)), &finehsumtax, (size_t) (finemeshptr->m.vnodnbr * sizeof (Gnum)), &finehashtab, (size_t) ((finehashmsk + 1) * sizeof (HmeshOrderCpHash)), &coarperitab, (size_t) (coarvnodmax * sizeof (Gnum)), /* TODO: move after resize */ &coarfinetax, (size_t) (coarvnodmax * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshOrderCp: out of memory (1)"); return (1); } /* TODO : resize after success */ finehsumtax -= finemeshptr->m.vnodbas; /* TRICK: do not base finecoartax yet (see later) */ finehasptab = (int *) finecoartax; /* Use finecoartab as temporary pre-hash table */ for (finehaspmsk = 1; /* Get pre-hash mask that fits in finecoartab */ finehaspmsk <= finemeshptr->m.vnodnbr; /* Smallest (2^i)-1 value > vertnbr */ finehaspmsk = finehaspmsk * 2 + 1) ; finehaspmsk >>= 1; /* Ensure masked data will always fit into finecoartab array */ finehaspmsk = (finehaspmsk * (sizeof (Gnum) / sizeof (int))) + ((sizeof (Gnum) / sizeof (int)) - 1); if (finehaspmsk >= ((sizeof (int) << (3 + 1)) - 1)) /* Only use 1/8 of array for pre-hashing, for increased cache locality */ finehaspmsk >>= 3; memSet (finehasptab, 0, (finehaspmsk + 1) * sizeof (int)); /* Initialize pre-hash table */ for (finevnodnum = finemeshptr->m.vnodbas, coarvnodnbr = finemeshptr->m.vnodnbr; /* For all non-halo node vertices */ finevnodnum < finemeshptr->vnohnnd; finevnodnum ++) { Gnum fineenodnum; /* Current edge number */ Gnum finehsumval; /* Hash sum value */ Gnum finehsumbit; for (fineenodnum = finemeshptr->m.verttax[finevnodnum], finehsumval = 0; fineenodnum < finemeshptr->m.vendtax[finevnodnum]; fineenodnum ++) finehsumval += finemeshptr->m.edgetax[fineenodnum]; finehsumtax[finevnodnum] = finehsumval; finehsumbit = finehsumval & ((sizeof (int) << 3) - 1); /* Get bit mask and byte position (division should be optimized into a shift) */ finehsumval /= (sizeof (int) << 3); finehsumval &= finehaspmsk; /* Make hash sum value fit into finehasptab */ coarvnodnbr -= (finehasptab[finehsumval] >> finehsumbit) & 1; /* If hash value already in pre-hash table, maybe one more vertex compressed */ finehasptab[finehsumval] |= (1 << finehsumbit); /* Put value into pre-hash table anyway */ } if (coarvnodnbr > coarvnodmax) { /* If mesh needs not be compressed */ memFree (coarverttax); /* Group leader not yet based */ return (hmeshOrderSt (finemeshptr, fineordeptr, ordenum, cblkptr, paraptr->stratunc)); } memSet (finecoartax, ~0, finemeshptr->m.vnodnbr * sizeof (Gnum)); memSet (&coarmeshdat, 0, sizeof (Hmesh)); /* Initialize compressed halo mesh structure */ coarmeshdat.m.flagval = MESHFREEVERT | MESHVERTGROUP; /* Free only coarverttab as group leader */ coarmeshdat.m.baseval = finemeshptr->m.baseval; coarmeshdat.m.velmbas = coarmeshdat.m.baseval; coarmeshdat.m.velmnbr = coarvelmnbr; /* Mesh compression does not touch elements, apart from isolated elements */ coarmeshdat.m.velmnnd = coarmeshdat.m.vnodbas = coarvelmnbr + coarmeshdat.m.baseval; coarmeshdat.m.veisnbr = finemeshptr->m.veisnbr; /* To date, keep all isolated element vertices, if any */ coarmeshdat.m.velosum = finemeshptr->m.velosum; coarmeshdat.m.vnlosum = finemeshptr->m.vnlosum; coarverttax -= coarmeshdat.m.baseval; coarvsiztax -= coarmeshdat.m.vnodbas; /* TRICK: if no vertex loads, coarvsiztax points to coarvnodtax */ coarvnlotax -= coarmeshdat.m.vnodbas; coaredgetax -= coarmeshdat.m.baseval; finecoartax -= finemeshptr->m.vnodbas; coarmeshdat.m.verttax = coarverttax; coarmeshdat.m.vendtax = coarverttax + 1; /* Use compact representation of arrays */ coarmeshdat.m.velotax = finemeshptr->m.velotax; /* Re-use element vertex load array, if any */ coarmeshdat.m.vnlotax = coarvnlotax; coarmeshdat.m.edgetax = coaredgetax; coarfinetax -= coarmeshdat.m.vnodbas; memSet (finehashtab, ~0, (finehashmsk + 1) * sizeof (HmeshOrderCpHash)); for (finevelmnum = finemeshptr->m.velmbas, coarvertnum = coaredgenum = coarmeshdat.m.baseval, /* Build element arrays */ coarvnodnnd = coarmeshdat.m.baseval + finemeshptr->m.velmnbr, coardegrmax = 0; finevelmnum < finemeshptr->m.velmnnd; finevelmnum ++) { Gnum fineeelmnum; Gnum coardegrval; fineeelmnum = finemeshptr->m.verttax[finevelmnum]; #ifdef DEAD_CODE if (fineeelmnum == finemeshptr->m.vendtax[finevelmnum]) /* Skip isolated elements */ continue; #endif #ifdef SCOTCH_DEBUG_ORDER2 if (coarvertnum >= coarmeshdat.m.velmnnd) { /* If too many elements declared */ errorPrint ("hmeshOrderCp: internal error (1)"); /* Maybe problem with veisnbr */ return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ coarverttax[coarvertnum] = coaredgenum; for ( ; fineeelmnum < finemeshptr->m.vendtax[finevelmnum]; fineeelmnum ++) { Gnum finevnodnum; Gnum coarvnodnum; finevnodnum = finemeshptr->m.edgetax[fineeelmnum]; coarvnodnum = finecoartax[finevnodnum]; if (coarvnodnum != ~0) { /* If fine node already considered */ if (coarvnodnum >= 0) /* If node is leader of cluster */ coaredgetax[coaredgenum ++] = coarvnodnum; /* Add it to coarse mesh */ } else { /* Fine node not yet considered */ Gnum finehsumval; Gnum finedegrval; Gnum fineeelmngb; Gnum coarvsizval; /* Number of fine node vertices in coarse node vertex */ if (coarvnodnnd >= (coarvnodmax + coarmeshdat.m.vnodbas)) { /* If mesh needs not be compressed */ memFree (coarverttax + coarmeshdat.m.baseval); return (hmeshOrderSt (finemeshptr, fineordeptr, ordenum, cblkptr, paraptr->stratunc)); } coarvsizval = 1; /* Cluster leader it at least alone */ coarvnodnum = coarvnodnnd ++; /* Node is leader of future cluster */ finecoartax[finevnodnum] = coarvnodnum; /* Record node as cluster leader */ coaredgetax[coaredgenum ++] = coarvnodnum; /* Add leader to coarse mesh */ coarfinetax[coarvnodnum] = finevnodnum; /* Record node to build edge sub-array */ finehsumval = finehsumtax[finevnodnum]; /* Get hash sum of cluster leader */ finedegrval = finemeshptr->m.vendtax[finevnodnum] - finemeshptr->m.verttax[finevnodnum]; for (fineeelmngb = fineeelmnum + 1; /* For all remaining edges of current element */ fineeelmngb < finemeshptr->m.vendtax[finevelmnum]; fineeelmngb ++) { Gnum finevnodngb; Gnum fineenodngb; finevnodngb = finemeshptr->m.edgetax[fineeelmngb]; /* Get index of neighboring node */ if ((finecoartax[finevnodngb] != ~0) || /* If node has already been processed or */ (finehsumval != finehsumtax[finevnodngb]) || /* If hash sum does not match, skip node */ (finedegrval != (finemeshptr->m.vendtax[finevnodngb] - finemeshptr->m.verttax[finevnodngb]))) continue; if (finehashtab[(finevelmnum * HMESHORDERCPHASHPRIME) & finehashmsk].vnodnum != finevnodnum) { /* If hash table not yet filled */ Gnum fineenodnum; for (fineenodnum = finemeshptr->m.verttax[finevnodnum]; fineenodnum < finemeshptr->m.vendtax[finevnodnum]; fineenodnum ++) { Gnum finevelmend; Gnum finehelmend; finevelmend = finemeshptr->m.edgetax[fineenodnum]; for (finehelmend = (finevelmend * HMESHORDERCPHASHPRIME) & finehashmsk; finehashtab[finehelmend].vnodnum == finevnodnum; finehelmend = (finehelmend + 1) & finehashmsk) ; finehashtab[finehelmend].vnodnum = finevnodnum; /* Fill hash table with node adjacency */ finehashtab[finehelmend].velmnum = finevelmend; } } for (fineenodngb = finemeshptr->m.verttax[finevnodngb]; fineenodngb < finemeshptr->m.vendtax[finevnodngb]; fineenodngb ++) { Gnum finevelmngb; Gnum finehelmngb; finevelmngb = finemeshptr->m.edgetax[fineenodngb]; for (finehelmngb = (finevelmngb * HMESHORDERCPHASHPRIME) & finehashmsk; ; finehelmngb = (finehelmngb + 1) & finehashmsk) { if (finehashtab[finehelmngb].vnodnum != finevnodnum) /* If adjacencies differ, break */ goto loop_failed; if (finehashtab[finehelmngb].velmnum == finevelmngb) /* If neighbor found, process next neighbor */ break; } } finecoartax[finevnodngb] = -2 - coarvnodnum; /* Set index of cluster non-leader */ coarvsizval ++; /* One more non-leader in cluster */ loop_failed: ; } coarvsiztax[coarvnodnum] = coarvsizval; } } coardegrval = coaredgenum - coarverttax[coarvertnum]; if (coardegrval > coardegrmax) coardegrmax = coardegrval; coarvertnum ++; /* One more coarse element created */ } #ifdef SCOTCH_DEBUG_ORDER2 if (coarvertnum != coarmeshdat.m.velmnnd) { /* If too many elements declared */ errorPrint ("hmeshOrderCp: internal error (2)"); /* Maybe problem with veisnbr */ return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ coarmeshdat.m.vnodnnd = coarvnodnnd; coarmeshdat.m.vnodnbr = coarvnodnnd - coarmeshdat.m.vnodbas; #ifdef SCOTCH_DEBUG_ORDER2 for (finevnodnum = finemeshptr->m.vnodbas; finevnodnum < finemeshptr->m.vnodnnd; finevnodnum ++) { if (finecoartax[finevnodnum] == ~0) { errorPrint ("hmeshOrderCp: internal error (3)"); return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ for ( ; coarvertnum < coarmeshdat.m.vnodnnd; coarvertnum ++) { /* Build node arrays */ Gnum finevnodnum; Gnum fineenodnum; Gnum coardegrval; coarverttax[coarvertnum] = coaredgenum; finevnodnum = coarfinetax[coarvertnum]; coardegrval = finemeshptr->m.vendtax[finevnodnum] - finemeshptr->m.verttax[finevnodnum]; for (fineenodnum = finemeshptr->m.verttax[finevnodnum]; fineenodnum < finemeshptr->m.vendtax[finevnodnum]; fineenodnum ++) coaredgetax[coaredgenum ++] = finemeshptr->m.edgetax[fineenodnum] - (finemeshptr->m.velmbas - coarmeshdat.m.velmbas); if (coardegrval > coardegrmax) coardegrmax = coardegrval; } coarverttax[coarvertnum] = coaredgenum; /* Set end of vertex array */ coarmeshdat.m.edgenbr = coaredgenum - coarmeshdat.m.baseval; coarmeshdat.m.degrmax = coardegrmax; coarmeshdat.vnohnbr = coarmeshdat.m.vnodnbr; /* Halo meshes not yet supported */ coarmeshdat.vnohnnd = coarmeshdat.m.vnodnnd; coarmeshdat.vehdtax = coarmeshdat.m.vendtax; /* Only element part of vendtab will be accessed through vehdtab */ coarmeshdat.vnhlsum = coarmeshdat.m.vnlosum; coarmeshdat.enohnbr = coarmeshdat.m.edgenbr; if (finemeshptr->m.vnlotax != NULL) { /* If fine mesh has node vertex loads */ memSet (coarmeshdat.m.vnlotax + coarmeshdat.m.vnodbas, 0, coarmeshdat.m.vnodnbr * sizeof (Gnum)); for (finevnodnum = finemeshptr->m.vnodbas; finevnodnum < finemeshptr->m.vnodnnd; finevnodnum ++) { /* Compute vertex loads for compressed mesh */ coarmeshdat.m.vnlotax[finecoartax[finevnodnum]] += finemeshptr->m.vnlotax[finevnodnum]; } } #ifdef SCOTCH_DEBUG_ORDER2 if (hmeshCheck (&coarmeshdat) != 0) { errorPrint ("hmeshOrderCp: internal error (4)"); hmeshExit (&coarmeshdat); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ orderInit (&coarordedat, coarmeshdat.m.baseval, coarmeshdat.m.vnodnbr, coarperitab); /* Build ordering of compressed submesh */ if (hmeshOrderSt (&coarmeshdat, &coarordedat, 0, &coarordedat.cblktre, paraptr->stratcpr) != 0) { hmeshExit (&coarmeshdat); return (1); } coarvsiztax += (coarmeshdat.m.vnodbas - coarmeshdat.m.baseval); /* Adjust array to match permutation bounds */ *cblkptr = coarordedat.cblktre; /* Link sub-tree to ordering */ coarordedat.cblktre.cblktab = NULL; /* Unlink sub-tree from sub-ordering */ #ifdef SCOTCH_DEBUG_ORDER2 finevertnbr = #endif /* SCOTCH_DEBUG_ORDER2 */ hmeshOrderCpTree (coarordedat.peritab, coarvsiztax, cblkptr, 0); /* Expand sub-tree */ #ifdef SCOTCH_DEBUG_ORDER2 if (finevertnbr != finemeshptr->m.vnodnbr) { errorPrint ("hmeshOrderCp: internal error (5)"); hmeshExit (&coarmeshdat); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ fineordeptr->treenbr += coarordedat.cblknbr; /* Adjust number of tree nodes */ fineordeptr->cblknbr += coarordedat.cblknbr - 1; /* Adjust number of column blocks */ coarvpostax = coarmeshdat.m.verttax; /* Recycle verttab (not velotab as may be merged with coarvsiztab) */ coarperitax = coarperitab - coarmeshdat.m.vnodbas; for (coarvnodnum = coarmeshdat.m.vnodbas, finevsizsum = 0; /* Compute initial indices for inverse permutation expansion */ coarvnodnum < coarmeshdat.m.vnodnnd; coarvnodnum ++) { coarvpostax[coarperitax[coarvnodnum]] = finevsizsum; finevsizsum += coarvsiztax[coarperitax[coarvnodnum]]; } coarvpostax = coarmeshdat.m.verttax + (coarmeshdat.m.baseval - coarmeshdat.m.vnodbas); for (finevnodnum = finemeshptr->m.vnodbas; finevnodnum < finemeshptr->m.vnodnnd; finevnodnum ++) { /* Compute fine permutation */ Gnum coarvnodnum; coarvnodnum = finecoartax[finevnodnum]; /* Get index of corresponding coarse node */ if (coarvnodnum < 0) /* If node is not cluster leader */ coarvnodnum = -2 - coarvnodnum; /* Get index of cluster leader */ fineordeptr->peritab[coarvpostax[coarvnodnum] ++] = finevnodnum + (finemeshptr->m.baseval - finemeshptr->m.vnodbas); } orderExit (&coarordedat); hmeshExit (&coarmeshdat); return (0); } /* This routine turns the coarse elimination ** tree produced by the ordering of the coarse ** mesh into a fine elimination tree, according ** to the cardinality of the coarse vertices. ** It returns: ** - !0 : overall number of fine vertices, in all cases. */ static Gnum hmeshOrderCpTree ( const Gnum * restrict const coarperitab, /* Coarse inverse permutation */ const Gnum * restrict const coarvsiztax, /* Array of fine sizes of coarse vertices */ OrderCblk * restrict const coficblkptr, /* Current coarse/fine column block cell */ Gnum coarordenum) /* Compressed vertex to start expansion at */ { Gnum finevertnbr; /* Number of fine vertices in subtree */ finevertnbr = 0; /* No fine vertices yet */ if (coficblkptr->cblktab == NULL) { /* If leaf of column block tree */ Gnum coarvnumnum; for (coarvnumnum = coarordenum; coarvnumnum < coarordenum + coficblkptr->vnodnbr; coarvnumnum ++) finevertnbr += coarvsiztax[coarperitab[coarvnumnum]]; /* Sum-up fine vertices */ } else { Gnum coarvertnbr; /* Number of coarse vertices in cell */ Gnum coarvertsum; /* Number of coarse vertices in subtree */ Gnum coficblknum; /* Index in column block array */ for (coficblknum = 0, coarvertsum = coarordenum; /* Start at current coarse index */ coficblknum < coficblkptr->cblknbr; coficblknum ++) { coarvertnbr = coficblkptr->cblktab[coficblknum].vnodnbr; /* Save number of coarse vertices */ finevertnbr += hmeshOrderCpTree (coarperitab, coarvsiztax, &coficblkptr->cblktab[coficblknum], coarvertsum); coarvertsum += coarvertnbr; /* Sum-up coarse vertices */ } } coficblkptr->vnodnbr = finevertnbr; /* Set number of fine vertices */ return (finevertnbr); /* Return accumulated number */ } scotch_6.0.9/src/libscotch/dgraph_io_save.c0000644000302600021200000001671113560005435021143 0ustar pelegrinpelegrin/* Copyright 2007,2010,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_io_save.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the input/output routines for **/ /** distributed graphs. **/ /** **/ /** # Version P0.2 : from : 11 may 1999 **/ /** to 12 may 1999 **/ /** # Version 5.0 : from : 22 jul 2005 **/ /** to : 22 apr 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to : 11 aug 2010 **/ /** # Version 6.0 : from : 18 sep 2013 **/ /** to : 18 sep 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_IO #include "module.h" #include "common.h" #include "dgraph.h" /* This routine saves a distributed source ** graph to the given streams. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphSave ( Dgraph * restrict const grafptr, /* Not const since halo may update structure */ FILE * const stream) { Gnum * restrict vlblgsttax; /* Based index to ghost label array */ Gnum vertlocnum; char propstr[4]; /* Property string */ int o; #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { /* Synchronize for debugging */ errorPrint ("dgraphSave: communication error"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vlblgsttax = NULL; /* Assume ghost label array is free */ if ((grafptr->vlblloctax != NULL) || /* If graph has vertex labels or */ (grafptr->edgeloctax == NULL) || /* If no global index edge array present or */ (grafptr->procvrttab[grafptr->procglbnbr] != grafptr->procdsptab[grafptr->procglbnbr])) { /* If graph may have holes in its numbering */ if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array */ errorPrint ("dgraphSave: cannot compute ghost edge array"); return (1); } if ((vlblgsttax = (Gnum *) memAlloc (grafptr->vertgstnbr * sizeof (Gnum))) == NULL) { errorPrint ("dgraphSave: out of memory"); return (1); } if (grafptr->vlblloctax != NULL) memCpy (vlblgsttax, grafptr->vlblloctax + grafptr->baseval, grafptr->vertlocnbr * sizeof (Gnum)); else { for (vertlocnum = 0; vertlocnum < grafptr->vertlocnbr; vertlocnum ++) /* vlblgsttax is not based yet at this time */ vlblgsttax[vertlocnum] = grafptr->procvrttab[grafptr->proclocnum] + vertlocnum; } if (dgraphHaloSync (grafptr, (byte *) vlblgsttax, GNUM_MPI) != 0) { /* vlblgsttax is not based yet at this time */ errorPrint ("dgraphSave: cannot halo labels"); memFree (vlblgsttax); return (1); } vlblgsttax -= grafptr->baseval; } propstr[0] = (vlblgsttax != NULL) ? '1' : '0'; /* Set property string */ propstr[1] = (grafptr->edloloctax != NULL) ? '1' : '0'; propstr[2] = (grafptr->veloloctax != NULL) ? '1' : '0'; propstr[3] = '\0'; if (fprintf (stream, "2\n" GNUMSTRING "\t" GNUMSTRING "\n" GNUMSTRING "\t" GNUMSTRING "\n" GNUMSTRING "\t" GNUMSTRING "\n" GNUMSTRING "\t%3s\n", /* Write file header */ (Gnum) grafptr->procglbnbr, (Gnum) grafptr->proclocnum, (Gnum) grafptr->vertglbnbr, (Gnum) grafptr->edgeglbnbr, (Gnum) grafptr->vertlocnbr, (Gnum) grafptr->edgelocnbr, (Gnum) grafptr->baseval, propstr) == EOF) { errorPrint ("dgraphSave: bad output (1)"); return (1); } o = 0; for (vertlocnum = grafptr->baseval; (vertlocnum < grafptr->vertlocnnd) && (o == 0); vertlocnum ++) { Gnum edgelocnum; if (vlblgsttax != NULL) /* Write vertex label if necessary */ o = (fprintf (stream, GNUMSTRING "\t", (Gnum) vlblgsttax[vertlocnum]) == EOF); if (grafptr->veloloctax != NULL) /* Write vertex load if necessary */ o |= (fprintf (stream, GNUMSTRING "\t", (Gnum) grafptr->veloloctax[vertlocnum]) == EOF); o |= (fprintf (stream, GNUMSTRING, (Gnum) (grafptr->vendloctax[vertlocnum] - grafptr->vertloctax[vertlocnum])) == EOF); /* Write vertex degree */ for (edgelocnum = grafptr->vertloctax[vertlocnum]; edgelocnum < grafptr->vendloctax[vertlocnum]; edgelocnum ++) { o |= (putc ('\t', stream) == EOF); if (grafptr->edloloctax != NULL) /* Write edge load if necessary */ o |= (fprintf (stream, "\t" GNUMSTRING " ", (Gnum) grafptr->edloloctax[edgelocnum]) == EOF); o |= (fprintf (stream, GNUMSTRING, (Gnum) ((vlblgsttax != NULL) /* Write edge end */ ? vlblgsttax[grafptr->edgegsttax[edgelocnum]] : grafptr->edgeloctax[edgelocnum])) == EOF); } o |= (putc ('\n', stream) == EOF); } if (o != 0) errorPrint ("dgraphSave: bad output (2)"); if (vlblgsttax != NULL) /* Free ghost label array if used */ memFree (vlblgsttax + grafptr->baseval); return (o); } scotch_6.0.9/src/libscotch/graph_coarsen.h0000644000302600021200000002514613470115365021017 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011-2013,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_coarsen.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph coarsening **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 02 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 18 aug 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 28 nov 1995 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 17 sep 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 05 dec 2004 **/ /** # Version 6.0 : from : 09 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ #ifdef SCOTCH_PTHREAD #define GRAPHCOARSENTHREAD #endif /* SCOTCH_PTHREAD */ /*+ Graph option flags. Their values must be equal to those defined in library.h and library_f.h +*/ #define GRAPHCOARSENNONE 0x0000 /* No options set */ #define GRAPHCOARSENDSTMATE 0x0001 /* Matching/fine-to-coarse array destination provided */ #define GRAPHCOARSENDSTMULT 0x0002 /* Multinode array destination provided */ #define GRAPHCOARSENHASMULT 0x0004 /* Multinode array provided */ #define GRAPHCOARSENUSEMATE 0x0008 /* Matching array data provided */ #define GRAPHCOARSENNOMERGE 0x4000 /* Do not merge isolated vertices */ /*+ Prime number for hashing vertex numbers. +*/ #define GRAPHCOARSENHASHPRIME 1049 /*+ Prime number +*/ /* ** The type and structure definitions. */ /*+ Here are the edge matching function types for coarsening. +*/ typedef enum GraphCoarsenType_ { GRAPHCOARHEM, /*+ Heavy-edge matching +*/ GRAPHCOARSCN, /*+ Scanning (first) matching +*/ GRAPHCOARNBR /*+ Number of matching types +*/ } GraphCoarsenType; /*+ The multinode table element, which contains pairs of based indices of collapsed vertices. Both values are equal for uncollapsed vertices. As the base values of the fine and coarse graphs may be different, the values of the collapsed vertices are set with respect to the base value of the fine graph. +*/ typedef struct GraphCoarsenMulti_ { Gnum vertnum[2]; /*+ Numbers of the collapsed vertices of a multinode +*/ } GraphCoarsenMulti; /*+ A table made of such elements is used during coarsening to build the edge array of the new graph, after the labeling of the vertices. +*/ typedef struct GraphCoarsenHash_ { Gnum vertorgnum; /*+ Origin vertex (i.e. pass) number +*/ Gnum vertendnum; /*+ Other end vertex number +*/ Gnum edgenum; /*+ Number of corresponding edge +*/ } GraphCoarsenHash; /*+ The matching and coarsening routine parameter structure. It contains the thread-independent data. +*/ typedef struct GraphCoarsenData_ { ThreadGroupHeader thrddat; /*+ Thread handling data +*/ int flagval; /*+ Flags for controlling matching and coarsening +*/ const Graph * finegrafptr; /*+ Fine graph to perform matching on +*/ const Anum * fineparotax; /*+ Old part array +*/ const Anum * finepfixtax; /*+ Array of fixed vertices +*/ Gnum finevfixnbr; /*+ Number of fine fixed vertices +*/ Gnum * finematetax; /*+ Fine mate array / fine-to-coarse array +*/ Graph * coargrafptr; /*+ Coarse graph to build +*/ Gnum coarvertmax; /*+ Maximum number of vertices to get +*/ Gnum coarvertnbr; /*+ Global number of coarse vertices after matching +*/ Gnum * coarvfixptr; /*+ Pointer to number of coarse fixed vertices +*/ GraphCoarsenMulti * coarmulttab; /*+ Multinode array +*/ Gnum coarmultsiz; /*+ Size of multinode array allocated in graph +*/ Gnum coarhashmsk; /*+ Hash table mask +*/ #ifdef SCOTCH_PTHREAD int * restrict finelocktax; /*+ Matching lock array (if any) +*/ Gnum * restrict finequeutab; /*+ Matching queue array (if any) +*/ void (* fendptr) (void *); /*+ Pointer to final / sequential match routine +*/ void (* fmidptr) (void *); /*+ Pointer to intermediate match routine (if any) +*/ #endif /* SCOTCH_PTHREAD */ void (* fbegptr) (void *); /*+ Pointer to beginning match routine (if any) +*/ } GraphCoarsenData; /*+ The thread-specific data block. +*/ typedef struct GraphCoarsenThread_ { ThreadHeader thrddat; /*+ Thread management data +*/ Gunum randval; /*+ Per-thread unsigned random value +*/ GraphCoarsenHash * coarhashtab; /*+ End vertex hash table (may be local) +*/ Gnum coarvertnnd; /*+ After-last coarse vertex number +*/ Gnum coarvertbas; /*+ Minimum coarse vertex number; for prefix scan +*/ Gnum coarvertnbr; /*+ Number of coarse vertices to date; TRICK: scan dummy area +*/ Gnum coaredloadj; /*+ (Local) coarse edge load sum adjust +*/ Gnum coardegrmax; /*+ (Local) maximum degree +*/ Gnum coaredgebas; /*+ Minimum coarse edge number; for prefix scan +*/ Gnum finevertbas; /*+ Start of fine vertex range; TRICK: scan dummy area +*/ Gnum finevertnnd; /*+ End of fine vertex range +*/ Gnum finequeubas; /*+ Minimum perturbation or queue index for matching +*/ Gnum finequeunnd; /*+ After-last perturbation or queue index for matching +*/ } GraphCoarsenThread; /* ** The function prototypes. */ #ifdef GRAPH_COARSEN #ifdef GRAPHCOARSENTHREAD static void graphCoarsenEdgeCt (GraphCoarsenThread *); #endif /* GRAPHCOARSENTHREAD */ static void graphCoarsenEdgeLl (GraphCoarsenThread *); static void graphCoarsenEdgeLu (GraphCoarsenThread *); #endif /* GRAPH_COARSEN */ int graphCoarsen (const Graph * restrict const, Graph * restrict const, Gnum * restrict * restrict const, GraphCoarsenMulti * restrict * restrict const, const Gnum, const double, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, Gnum * restrict const); int graphCoarsenMatch (const Graph * restrict const, Gnum * restrict * restrict const, Gnum * restrict const, const double, const Gnum, const Anum * restrict const, const Anum * restrict const, const Gnum, Gnum * restrict const); int graphCoarsenBuild (const Graph * restrict const, Graph * restrict const, Gnum * restrict const, GraphCoarsenMulti * restrict * restrict const, const Gnum); scotch_6.0.9/src/libscotch/wgraph_part_rb.c0000644000302600021200000003767513466077161021220 0ustar pelegrinpelegrin/* Copyright 2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_rb.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module performs the vertex overla- **/ /** pped graph partitioning based on recur- **/ /** sive bipartitioning approach. **/ /** **/ /** DATES : # Version 6.0 : from : 16 mar 2010 **/ /** to 26 feb 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kgraph_map_rb_part.c for the vertex **/ /** overlapped graph partitioning. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_RB #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "arch_cmplt.h" #include "mapping.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "vgraph_separate_zr.h" #include "wgraph.h" #include "wgraph_part_rb.h" #include "scotch.h" /* ** The static variables. */ static const Gnum wgraphpartrbloadone = 1; /********************************************/ /* */ /* This is the entry point for the vertex */ /* overlapped graph partitioning based on */ /* recursive bipartitioning approach. */ /* */ /********************************************/ /* This routine runs recursive ** bipartitioning approach. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int wgraphPartRb3 ( const Graph * restrict const orggrafptr, /* Graph to induce and bipartition */ const GraphPart * restrict const orgparttax, /* Part array of original graph */ const GraphPart indpartval, /* Part of graph to consider */ const int domnnum, /* Index of domain onto which map the part */ Mapping * restrict const mappptr) /* Final mapping */ { Gnum vertnum; if (orgparttax == NULL) { /* If graph is full graph */ #ifdef SCOTCH_DEBUG_WGRAPH2 if ((orggrafptr->vnumtax != NULL) || (domnnum != 0)) { errorPrint ("wgraphPartRb3: internal error"); return (1); } #endif /* SCOTCH_DEBUG_WGRAPH2 */ memSet (mappptr->parttax + mappptr->grafptr->baseval, 0, orggrafptr->vertnbr * sizeof (ArchDomNum)); } else { /* Graph to consider is a subgraph of the original graph */ if (orggrafptr->vnumtax == NULL) { /* If original graph is not itself a subgraph */ for (vertnum = orggrafptr->baseval; vertnum < orggrafptr->vertnnd; vertnum ++) { /* For all graph vertices */ if (orgparttax[vertnum] == indpartval) /* If vertex belongs to the right part */ mappptr->parttax[vertnum] = domnnum; } } else { for (vertnum = orggrafptr->baseval; vertnum < orggrafptr->vertnnd; vertnum ++) { /* For all graph vertices */ if (orgparttax[vertnum] == indpartval) /* If vertex belongs to the right part */ mappptr->parttax[orggrafptr->vnumtax[vertnum]] = domnnum; } } } return (0); } static int wgraphPartRb2 ( WgraphPartRbData * restrict const dataptr, /* Top-level graph and partition data */ Graph * restrict const orggrafptr, /* Graph to induce and bipartition */ const GraphPart * restrict const orgparttax, /* Part array of original graph to consider */ const GraphPart indpartval, /* Part of graph to consider */ const int indvertnbr, /* Number of vertices in part or in graph */ const int domnnum) /* Index of domain onto which map the part */ { Graph indgrafdat; Graph * indgrafptr; Vgraph actgrafdat; Anum domnsubidx; Anum domnsubdlt; ArchDom domnsubtab[2]; /* Target subdomains */ Anum domnsubnum[2]; /* Index of subdomains in mapping */ Gnum grafsubsiz[2]; Gnum vertnum; Mapping * restrict mappptr; int i; int o; mappptr = &dataptr->mappdat; o = archDomBipart (mappptr->archptr, &mappptr->domntab[domnnum], &domnsubtab[0], &domnsubtab[1]); switch (o) { case 1 : /* If target domain is terminal */ return (wgraphPartRb3 (orggrafptr, orgparttax, indpartval, domnnum, mappptr)); /* Update mapping and return */ case 2 : /* On error */ errorPrint ("wgraphPartRb2: cannot bipartition domain"); return (1); } indgrafptr = orggrafptr; /* Assume we will work on the original graph */ if (orgparttax != NULL) { /* If not the case, build induced subgraph */ indgrafptr = &indgrafdat; if (graphInducePart (orggrafptr, orgparttax, indvertnbr, indpartval, &indgrafdat) != 0) { errorPrint ("wgraphPartRb2: cannot induce graph"); return (1); } } actgrafdat.s = *indgrafptr; actgrafdat.s.vlbltax = NULL; if ((actgrafdat.frontab = (Gnum *) memAlloc (actgrafdat.s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("wgraphPartRb2: out of memory (1)"); return (1); } if ((actgrafdat.parttax = (GraphPart *) memAlloc (actgrafdat.s.vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("wgraphPartRb2: out of memory (2)"); memFree (actgrafdat.frontab); return (1); } actgrafdat.parttax -= actgrafdat.s.baseval; vgraphZero (&actgrafdat); /* Create active graph */ if (vgraphSeparateSt (&actgrafdat, dataptr->stratptr) != 0) { /* Perform bipartitioning */ errorPrint ("wgraphPartRb2: cannot bipartition graph"); vgraphExit (&actgrafdat); return (1); } if (actgrafdat.s.vnumtax == NULL) { /* If the active graph is not itself a subgraph */ for (vertnum = actgrafdat.s.baseval; vertnum < actgrafdat.s.vertnnd; vertnum ++) { /* For all graph vertices */ if (actgrafdat.parttax[vertnum] == 2) { /* If vertex belongs to frontier */ mappptr->parttax[vertnum] = -1; actgrafdat.parttax[vertnum] = 3; } } } else { for (vertnum = actgrafdat.s.baseval; vertnum < actgrafdat.s.vertnnd; vertnum ++) { /* For all graph vertices */ if (actgrafdat.parttax[vertnum] == 2) { /* If vertex belongs to frontier */ mappptr->parttax[actgrafdat.s.vnumtax[vertnum]]= -1; actgrafdat.parttax[vertnum] = 3; } } } domnsubdlt = mappptr->domnnbr - domnnum; /* Increment in domain number */ domnsubidx = domnnum - domnsubdlt; /* Place where to insert subdomain */ mappptr->domnnbr --; /* One less subdomain as for now */ grafsubsiz[0] = actgrafdat.compsize[0]; grafsubsiz[1] = actgrafdat.compsize[1]; o = 0; for (i = 1; i >= 0; i --) { /* For all subparts */ if (grafsubsiz[i] <= 0) /* If subpart is empty, skip it */ continue; mappptr->domnnbr ++; /* One more subdomain to account for */ domnsubidx += domnsubdlt; /* Compute location of subdomain */ domnsubnum[i] = domnsubidx; /* Record it before recursion */ mappptr->domntab[domnsubidx] = domnsubtab[i]; /* Write it at this place */ } if (o == 0) { for (i = 1; i >= 0; i --) { /* For all subparts */ if (grafsubsiz[i] <= 0) /* If subpart is empty, skip it */ continue; if ((o = wgraphPartRb2 (dataptr, indgrafptr, actgrafdat.parttax, (GraphPart) i, grafsubsiz[i], domnsubnum[i])) != 0) return (1); /* If problem in recursion, stop */ } } memFree (actgrafdat.frontab); /* Frontier array of bipartitioning graph is no longer necessary */ memFree (actgrafdat.parttax + actgrafdat.s.baseval); /* Frontier array of bipartitioning graph is no longer necessary */ if (indgrafptr == &indgrafdat) /* If an induced subgraph had been created */ graphExit (indgrafptr); /* Free it */ return (o); } int wgraphPartRb ( Wgraph * restrict const grafptr, const WgraphPartRbParam * restrict const paraptr) { const Anum * restrict parttax; Gnum vertnum; Gnum velomsk; const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum * restrict frontab; Gnum fronnbr; Gnum fronload; Gnum * restrict compload; Gnum * restrict compsize; WgraphPartRbData datadat; Arch archdat; WgraphPartList * restrict listtab; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; if ((listtab = (WgraphPartList *) memAlloc ((grafptr->partnbr + 1) * sizeof (WgraphPartList))) == NULL) { /* TRICK: "+1" to create slot for a "-1" index */ errorPrint ("wgraphPartRb: out of memory (1)"); return (1); } listtab ++; /* TRICK: trim array so that listtab[-1] is valid */ memSet (listtab, ~0, grafptr->partnbr * sizeof (WgraphPartList)); /* Set vertex indices to ~0 */ datadat.grafptr = &grafptr->s; datadat.frontab = grafptr->frontab; /* Re-use frontier array */ datadat.fronnbr = 0; datadat.stratptr = paraptr->stratptr; datadat.mappdat.grafptr = &grafptr->s; datadat.mappdat.parttax = grafptr->parttax; /* Re-use part array */ datadat.mappdat.domnmax = grafptr->partnbr + 1; datadat.mappdat.domnnbr = 1; SCOTCH_archCmplt ((SCOTCH_Arch *) &archdat, grafptr->partnbr); /* Create a complete graph architecture */ datadat.mappdat.archptr = &archdat; archDomFrst (datadat.mappdat.archptr, &datadat.mappdat.domnorg); /* Get first domain of architecture */ if ((datadat.mappdat.domntab = (ArchDom *) memAlloc ((grafptr->partnbr + 2) * sizeof (ArchDom))) == NULL) { errorPrint ("wgraphPartRb: out of memory (2)"); memFree (listtab - 1); /* TRICK: free array using its real beginning */ return (1); } datadat.mappdat.domntab[0] = datadat.mappdat.domnorg; /* Set first domain */ if (wgraphPartRb2 (&datadat, &grafptr->s, NULL, 0, grafptr->s.vertnbr, 0) != 0) { errorPrint ("wgraphPartRb: internal error (1)"); return (1); } if (grafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &wgraphpartrbloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } compload = grafptr->compload; compsize = grafptr->compsize; memSet (compload, 0, grafptr->partnbr * sizeof (Gnum)); memSet (compsize, 0, grafptr->partnbr * sizeof (Gnum)); parttax = grafptr->parttax; frontab = grafptr->frontab; fronnbr = fronload = 0; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum partval; partval = parttax[vertnum]; if (partval >= 0) { compload[partval] += velobax[vertnum & velomsk]; compsize[partval] ++; } else { /* Vertex is in separator */ Gnum listidx; /* Index of first neighbor part */ Gnum edgenum; Gnum veloval; frontab[fronnbr ++] = vertnum; /* Add vertex to frontier */ fronload += velobax[vertnum & velomsk]; listidx = -1; /* No neighboring parts recorded yet */ listtab[-1].vertnum = vertnum; /* Separator neighbors will not be considered */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { /* Compute gain */ Gnum vertend; Gnum partend; vertend = edgetax[edgenum]; partend = parttax[vertend]; if (listtab[partend].vertnum != vertnum) { /* If part not yet considered */ listtab[partend].vertnum = vertnum; /* Link it in list of neighbors */ listtab[partend].nextidx = listidx; listidx = partend; } } veloval = velobax[vertnum & velomsk]; while (listidx != -1) { /* For all neighboring parts found */ compload[listidx] += veloval; /* Add load of separator vertex to part */ compsize[listidx] ++; listidx = listtab[listidx].nextidx; } } } grafptr->fronnbr = fronnbr; grafptr->fronload = fronload; #if 0 /* TODO REMOVE */ for (partval = 0; partval < grafptr->partnbr; partval ++) printf("\033[0;33mcompload[%d] %d %d\033[0m\n", partval, grafptr->compload[partval], grafptr->compsize[partval]); #endif memFree (datadat.mappdat.domntab); /* Free only newly allocated array of mapping */ memFree (listtab - 1); /* TRICK: free array using its real beginning */ #ifdef SCOTCH_DEBUG_WGRAPH2 if (wgraphCheck (grafptr) != 0) { errorPrint ("wgraphPartRb: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_WGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/bgraph_bipart_ex.c0000644000302600021200000001233513560005346021470 0ustar pelegrinpelegrin/* Copyright 2004,2007,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_ex.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tries to balance the **/ /** subgraphs of the partition as best as **/ /** it can. **/ /** **/ /** DATES : # Version 2.0 : from : 25 oct 1994 **/ /** to 03 nov 1994 **/ /** # Version 3.0 : from : 18 nov 1995 **/ /** to 18 nov 1995 **/ /** # Version 3.1 : from : 20 nov 1995 **/ /** to 29 nov 1995 **/ /** # Version 3.2 : from : 15 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 11 dec 2003 **/ /** to 11 dec 2003 **/ /** # Version 5.1 : from : 30 nov 2007 **/ /** to 30 nov 2007 **/ /** # Version 6.0 : from : 14 aug 2016 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes */ #define BGRAPH_BIPART_EX #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_ex.h" #include "bgraph_bipart_fm.h" #include "bgraph_bipart_gg.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartEx ( Bgraph * restrict const grafptr) { BgraphBipartFmParam parafmdat; /* Parameter area for the Fiduccia-Mattheyses algorithm */ if (grafptr->compload0dlt == 0) /* Return if nothing to do */ return (0); parafmdat.movenbr = grafptr->s.vertnbr; parafmdat.passnbr = ~0; parafmdat.deltval = 0.0L; /* Exact balance required */ parafmdat.typeval = BGRAPHBIPARTFMTYPEALL; /* All vertices involved */ if (bgraphBipartFm (grafptr, ¶fmdat) != 0) /* Return if error */ return (1); if ((grafptr->s.vertnbr > 1) && /* If graph has several vertices but is completely imbalanced */ ((grafptr->compsize0 == 0) || (grafptr->compsize0 == grafptr->s.vertnbr))) { BgraphBipartGgParam paraggdat; /* Parameter area for the Greedy Graph Growing algorithm */ paraggdat.passnbr = 4; if (bgraphBipartGg (grafptr, ¶ggdat) != 0) /* Return if error */ return (1); } #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartEx: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/kdgraph_map_st.h0000644000302600021200000000642713465315041021165 0ustar pelegrinpelegrin/* Copyright 2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_st.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the strategy and method **/ /** tables and the generic entry point for **/ /** the parallel multi-way static mapping **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 16 jun 2008 **/ /** to 16 jun 2008 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum KdgraphMapStMethodType_ { KDGRAPHMAPSTMETHRB = 0, /*+ Dual Recursive Bipartitioning +*/ KDGRAPHMAPSTMETHNBR /*+ Number of methods +*/ } KdgraphMapStMethodType; /* ** The external declarations. */ extern StratTab kdgraphmapststratab; /* ** The function prototypes. */ int kdgraphMapSt (Kdgraph * restrict const, Kdmapping * restrict const, const Strat * restrict const); scotch_6.0.9/src/libscotch/dgraph_allreduce.h0000644000302600021200000001070113560005435021454 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /**********************************************************/ /* */ /* NAME : dgraph_allreduce.h */ /* */ /* AUTHOR : Francois PELLEGRINI */ /* */ /* FUNCTION : These lines are the data declarations */ /* for the communication routines */ /* */ /* # Version 5.0 : from : 28 aug 2006 */ /* to 29 aug 2006 */ /* */ /**********************************************************/ /* ** The defines. */ /*+ Combined maximum-sum reduction operator +*/ #define DGRAPHALLREDUCEMAXSUMOP(m,s) \ static \ void \ dgraphAllreduceMaxSumOp##m##_##s ( \ const Gnum * const in, /* First operand */ \ Gnum * const inout, /* Second and output operand */ \ const int * const len, /* Number of instances ; should be 1, not used */ \ const MPI_Datatype * const typedat) /* MPI datatype ; not used */ \ { \ int i; \ \ for (i = 0; i < (m); i ++) /* Perform maximum on first part of data array */ \ if (in[i] > inout[i]) \ inout[i] = in[i]; \ \ for ( ; i < ((m) + (s)); i ++) /* Perform sum on second part of data array */ \ inout[i] += in[i]; \ } #define dgraphAllreduceMaxSum(rlt,rgt,m,s,comm) dgraphAllreduceMaxSum2 ((rlt), (rgt), (m) + (s), (MPI_User_function *) (dgraphAllreduceMaxSumOp##m##_##s), (comm)) /* ** The function prototypes. */ int dgraphAllreduceMaxSum2 (Gnum *, Gnum *, int, MPI_User_function *, MPI_Comm); scotch_6.0.9/src/libscotch/bdgraph_bipart_sq.c0000644000302600021200000003044013560005346021640 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_sq.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a bipartition of a **/ /** given bipartitioned distributed graph **/ /** by moving all (interesting) vertices of **/ /** the given graph to every processor, **/ /** executing a sequential bipartition **/ /** routine, and projecting back the best **/ /** result obtained. **/ /** **/ /** DATES : # Version 5.1 : from : 27 dec 2007 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 27 dec 2007 **/ /** to 31 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_SQ #include "module.h" #include "common.h" #include "comm.h" #include "arch.h" #include "parser.h" #include "graph.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "dgraph.h" #include "bdgraph.h" #include "bdgraph_bipart_sq.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine is the reduction-loc operator which ** returns in inout[2] the rank of the process which ** holds the best partition. ** It returns: ** - void : in all cases. */ static void bdgraphBipartSqOpBest ( const Gnum * const in, /* First operand */ Gnum * const inout, /* Second and output operand */ const int * const len, /* Number of instances; should be 1, not used */ const MPI_Datatype * const typedat) /* MPI datatype; not used */ { inout[5] |= in[5]; /* Propagate errors */ inout[4] += in[4]; /* Count cases for which a bipartitioning error occured */ if (inout[3] == 1) { /* Handle cases when at least one of them is erroneous */ if (in[3] == 1) return; inout[0] = in[0]; inout[1] = in[1]; inout[2] = in[2]; inout[3] = in[3]; return; } else if (in[3] == 1) return; if ((in[0] < inout[0]) || /* Select best partition */ ((in[0] == inout[0]) && ((in[1] < inout[1]) || ((in[1] == inout[1]) && (in[2] < inout[2]))))) { inout[0] = in[0]; inout[1] = in[1]; inout[2] = in[2]; } } /* This routine computes a partition of the ** given distributed graph by gathering as many ** copies of the graph as there are processes ** sharing the distributed graph, running a ** sequential algorithm on them, and collecting ** the best solution found. ** It returns: ** - 0 : if the bipartition could be computed. ** - !0 : on error. */ int bdgraphBipartSq ( Bdgraph * const dgrfptr, /*+ Distributed graph +*/ const BdgraphBipartSqParam * const paraptr) /*+ Method parameters +*/ { Bgraph cgrfdat; /* Centralized bipartitioned graph structure */ Gnum reduloctab[6]; /* Local array for best bipartition data (7 for Bcast) */ Gnum reduglbtab[6]; /* Global array for best bipartition data */ MPI_Datatype besttypedat; /* Data type for finding best bipartition */ MPI_Op bestoperdat; /* Handle of MPI operator for finding best bipartition */ int bestprocnum; /* Rank of process holding best partition */ Gnum * restrict vnumloctax; Gnum vertlocnum; Gnum complocsize1; Gnum complocload1; Gnum fronlocnbr; int o; if ((MPI_Type_contiguous (6, GNUM_MPI, &besttypedat) != MPI_SUCCESS) || (MPI_Type_commit (&besttypedat) != MPI_SUCCESS) || (MPI_Op_create ((MPI_User_function *) bdgraphBipartSqOpBest, 1, &bestoperdat) != MPI_SUCCESS)) { errorPrint ("bdgraphBipartSq: communication error (1)"); return (1); } reduloctab[0] = /* In case of error, maximum communication load */ reduloctab[1] = GNUMMAX; /* And maximum load imbalance */ reduloctab[2] = dgrfptr->s.proclocnum; reduloctab[3] = /* Assume sequential bipartioning went fine */ reduloctab[4] = 0; reduloctab[5] = 0; /* Assume no errors */ vnumloctax = dgrfptr->s.vnumloctax; /* No need for vertex number array when centralizing graph */ dgrfptr->s.vnumloctax = NULL; o = bdgraphGatherAll (dgrfptr, &cgrfdat); dgrfptr->s.vnumloctax = vnumloctax; /* Restore vertex number array */ if (o != 0) { errorPrint ("bdgraphBipartSq: cannot build centralized graph"); return (1); } if (bgraphBipartSt (&cgrfdat, paraptr->strat) != 0) { /* Bipartition centralized graph */ errorPrint ("bdgraphBipartSq: cannot bipartition centralized graph"); reduloctab[3] = reduloctab[4] = 1; } else { /* Fill local array with local bipartition data */ reduloctab[0] = ((cgrfdat.fronnbr != 0) || ((cgrfdat.compsize0 != 0) && ((cgrfdat.s.vertnbr - cgrfdat.compsize0) != 0))) ? cgrfdat.commload : GNUMMAX; /* Partitions with empty bipartitions unwanted if they are completely unbalanced */ reduloctab[1] = cgrfdat.compload0dlt; } if (dgrfptr->partgsttax == NULL) { if (dgraphGhst (&dgrfptr->s) != 0) { /* Compute ghost edge array if not already present, before copying graph fields */ errorPrint ("bdgraphBipartSq: cannot compute ghost edge array"); reduloctab[5] = 1; } else { if ((dgrfptr->partgsttax = (GraphPart *) memAlloc (dgrfptr->s.vertgstnbr * sizeof (GraphPart))) == NULL) { errorPrint ("bdgraphBipartSq: out of memory (1)"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } dgrfptr->partgsttax -= dgrfptr->s.baseval; } if ((dgrfptr->fronloctab = (Gnum *) memAlloc (dgrfptr->s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphBipartSq: out of memory (2)"); reduloctab[5] = 1; } } if (MPI_Allreduce (reduloctab, reduglbtab, 1, besttypedat, bestoperdat, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartSq: communication error (2)"); return (1); } if ((reduloctab[4] != 0) && (reduloctab[4] != dgrfptr->s.procglbnbr)) { errorPrint ("bdgraphBipartSq: internal error"); return (1); } if ((MPI_Op_free (&bestoperdat) != MPI_SUCCESS) || (MPI_Type_free (&besttypedat) != MPI_SUCCESS)) { errorPrint ("bdgraphBipartSq: communication error (3)"); return (1); } if (reduglbtab[3] != 0) { /* If none of the sequential methods succeeded */ bgraphExit (&cgrfdat); return (1); } bestprocnum = (int) reduglbtab[2]; if (dgrfptr->s.proclocnum == bestprocnum) { /* If process holds best partition */ reduloctab[0] = cgrfdat.compload0; /* Global values to share */ reduloctab[1] = cgrfdat.compsize0; reduloctab[2] = cgrfdat.commload; reduloctab[3] = cgrfdat.commgainextn; reduloctab[4] = cgrfdat.fronnbr; } if (MPI_Bcast (reduloctab, 5, GNUM_MPI, bestprocnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartSq: communication error (4)"); return (1); } dgrfptr->compglbload0 = reduloctab[0]; dgrfptr->compglbload0dlt = reduloctab[0] - dgrfptr->compglbload0avg; dgrfptr->compglbsize0 = reduloctab[1]; dgrfptr->commglbload = reduloctab[2]; dgrfptr->commglbgainextn = reduloctab[3]; dgrfptr->fronglbnbr = reduloctab[4]; if (commScatterv (cgrfdat.parttax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GRAPHPART_MPI, /* No base for sending as procdsptab holds based values */ dgrfptr->partgsttax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GRAPHPART_MPI, bestprocnum, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartSq: communication error (5)"); return (1); } if (dgraphHaloSync (&dgrfptr->s, (byte *) (dgrfptr->partgsttax + dgrfptr->s.baseval), GRAPHPART_MPI) != 0) { errorPrint ("bdgraphBipartSq: cannot perform halo exchange"); return (1); } complocsize1 = complocload1 = 0; for (vertlocnum = dgrfptr->s.baseval, fronlocnbr = 0; vertlocnum < dgrfptr->s.vertlocnnd; vertlocnum ++) { int partval; Gnum partval1; Gnum commcut; Gnum edgelocnum; partval = dgrfptr->partgsttax[vertlocnum]; partval1 = partval & 1; complocsize1 += partval1; /* Superscalar update */ if (dgrfptr->s.veloloctax != NULL) { Gnum veloval; veloval = dgrfptr->s.veloloctax[vertlocnum]; complocload1 += (-partval1) & veloval; /* Superscalar update */ } for (edgelocnum = dgrfptr->s.vertloctax[vertlocnum], commcut = 0; edgelocnum < dgrfptr->s.vendloctax[vertlocnum]; edgelocnum ++) { /* Build local frontier */ int partend; int partdlt; partend = dgrfptr->partgsttax[dgrfptr->s.edgegsttax[edgelocnum]]; partdlt = partval ^ partend; commcut |= partdlt; } if (commcut != 0) dgrfptr->fronloctab[fronlocnbr ++] = vertlocnum; } dgrfptr->fronlocnbr = fronlocnbr; dgrfptr->complocsize0 = dgrfptr->s.vertlocnbr - complocsize1; dgrfptr->complocload0 = (dgrfptr->s.veloloctax != NULL) ? (dgrfptr->s.velolocsum - complocload1) : dgrfptr->complocsize0; bgraphExit (&cgrfdat); #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (dgrfptr) != 0) { errorPrint ("bdgraphBipartSq: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/arch_deco.c0000644000302600021200000005502213560005302020067 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_deco.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the decomposition- **/ /** defined target architecture. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 14 sep 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 11 sep 1996 **/ /** to 28 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 17 may 1999 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 10 mar 2005 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to 28 feb 2008 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_DECO #include "module.h" #include "common.h" #include "arch.h" #include "arch_deco.h" #include "arch_deco2.h" /***************************************/ /* */ /* These are the decomposition-defined */ /* architecture routines. */ /* */ /***************************************/ /* This routine builds a compiled ** decomposition-defined architecture ** from the raw terminal tables that are ** passed to it. ** It returns: ** - 0 : if the decomposition has been successfully computed. ** - !0 : on error. */ int archDecoArchBuild2 ( ArchDeco * restrict const archptr, /*+ Architecture to build +*/ const Anum termdomnbr, /*+ Number of terminal domains (ie processors) +*/ const Anum termdommax, /*+ Maximum domain number given to a terminal domain +*/ const ArchDecoTermVert * const termverttab, /*+ Terminal vertex array +*/ const Anum * const termdisttab) /*+ Terminal distance map +*/ { Anum i, j, k; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco) > sizeof (ArchDummy)) || (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) { errorPrint ("archDecoArchBuild2: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ /* ,finegrafptr, &coargrafdat, &coarmulttab, 0, 1.0, NULL, NULL, 0, NULL) != 0) { */ if (memAllocGroup ((void **) (void *) &archptr->domverttab, (size_t) (termdommax * sizeof (ArchDecoVert)), &archptr->domdisttab, (size_t) ((((termdommax * (termdommax - 1)) / 2) + 1) * sizeof (Anum)), NULL) == NULL) { errorPrint ("archDecoArchBuild2: out of memory"); return (1); } archptr->flagval = ARCHDECOFREE; archptr->domtermnbr = termdomnbr; archptr->domvertnbr = termdommax; for (i = 0; i < termdommax; i ++) { archptr->domverttab[i].labl = ARCHDOMNOTTERM; /* Assume domain is not a terminal */ archptr->domverttab[i].size = 0; /* Assume domain is not used (yet) */ archptr->domverttab[i].wght = 0; /* Assume domain is not used (yet) */ } for (i = 0; i < termdomnbr; i ++) { /* Set terminal data of all declared terminals */ #ifdef SCOTCH_DEBUG_ARCH1 if (termverttab[i].num > termdommax) { /* If incorrect maximum terminal number */ errorPrint ("archDecoArchBuild2: bad maximum terminal"); archDecoArchFree (archptr); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ archptr->domverttab[termverttab[i].num - 1].labl = termverttab[i].labl; archptr->domverttab[termverttab[i].num - 1].size = 1; archptr->domverttab[termverttab[i].num - 1].wght = termverttab[i].wght; } for (i = termdommax - 1; i > 0; i --) { /* Accumulate data from terminals to root */ j = ((i - 1) >> 1); if (archptr->domverttab[i].labl != ARCHDOMNOTTERM) { if ((archptr->domverttab[j].labl == ARCHDOMNOTTERM) || /* Get smallest label */ (archptr->domverttab[j].labl > archptr->domverttab[i].labl)) archptr->domverttab[j].labl = archptr->domverttab[i].labl; archptr->domverttab[j].size += archptr->domverttab[i].size; archptr->domverttab[j].wght += archptr->domverttab[i].wght; } } #ifdef SCOTCH_DEBUG_ARCH1 if (archptr->domverttab[0].size != termdomnbr) { /* If incorrect accumulation */ errorPrint ("archDecoArchBuild2: bad terminal count"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ memSet (archptr->domdisttab, 0, termdommax * (termdommax - 1) * sizeof (Anum) / 2); /* Assume distance is not known */ for (i = 1, k = 0; i < termdomnbr; i ++) { /* Read the terminal distance map */ for (j = 0; j < i; j ++, k ++) archDecoArchDist (archptr, termverttab[i].num, termverttab[j].num) = termdisttab[k]; } for (j = termdommax; j > 0; j --) { /* Loop on domains */ if (archDecoArchSize (archptr, j) == 0) /* If domain is unused, skip it */ continue; for (i = termdommax; i > j; i --) { /* Double loop on distance array values */ if (archDecoArchSize (archptr, i) == 0) /* If domain is unused, skip it */ continue; if (archDecoArchSize (archptr, i) > 1) { /* If domain i has subdomains */ if (archDecoArchSize (archptr, j) > 1) /* If domain j has subdomains */ archDecoArchDist (archptr, i, j) = (archDecoArchDistE (archptr, 2 * i, 2 * j) + archDecoArchDistE (archptr, 2 * i, 2 * j + 1) + archDecoArchDistE (archptr, 2 * i + 1, 2 * j) + archDecoArchDistE (archptr, 2 * i + 1, 2 * j + 1) + 2) / 4; else /* If domain j is a terminal */ archDecoArchDist (archptr, i, j) = (archDecoArchDistE (archptr, 2 * i, j) + archDecoArchDistE (archptr, 2 * i + 1, j) + 1) / 2; } else { /* If domain i is a terminal */ if (archDecoArchSize (archptr, j) > 1) /* If domain j has subdomains */ archDecoArchDist (archptr, i, j) = (archDecoArchDistE (archptr, i, 2 * j) + archDecoArchDistE (archptr, i, 2 * j + 1) + 1) / 2; #ifdef SCOTCH_DEBUG_ARCH1 else { /* If both domain are terminals */ if (archDecoArchDist (archptr, i, j) == 0) { /* Distance value must be greater than zero */ errorPrint ("archDecoArchBuild2: invalid null distance"); archDecoArchFree (archptr); return (1); } } #endif /* SCOTCH_DEBUG_ARCH1 */ } } } return (0); } /* This routine loads and computes the ** decomposition-defined architecture ** tables. ** It returns: ** - 0 : if the decomposition has been successfully read. ** - !0 : on error. */ int archDecoArchLoad ( ArchDeco * restrict const archptr, FILE * restrict const stream) { INT typeval; /* Type of decomposition */ INT termdomnbr; /* Number of terminal domains (ie processors) */ INT termdommax; /* Maximum domain number given to a terminal domain */ ArchDecoTermVert * restrict termverttab; /* Table of terminal vertex data */ Anum * restrict termdisttab; /* Table of terminal-to-terminal distances */ INT i, j; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco) > sizeof (ArchDummy)) || (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) { errorPrint ("archDecoArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &typeval) != 1) || /* Read decomposition type */ (typeval < 0) || (typeval > 2)) { errorPrint ("archDecoArchLoad: bad input (1)"); return (1); } if (typeval == 2) { /* If type-2 decomposition */ archArch (archptr)->class = archClass2 ("deco", 1); /* Switch class for future routines */ return (archDeco2ArchLoad2 ((ArchDeco2 *) archptr, stream)); /* Call subclass loading routine */ } if ((intLoad (stream, &termdomnbr) != 1) || /* Proceed with type-0 and type-1 architectures */ (intLoad (stream, &termdommax) != 1) || (termdommax < termdomnbr) || (termdomnbr < 1)) { errorPrint ("archDecoArchLoad: bad input (2)"); return (1); } if (typeval == 0) { /* If raw decomposition */ if (memAllocGroup ((void **) (void *) &termverttab, (size_t) (termdomnbr * sizeof (ArchDecoTermVert)), &termdisttab, (size_t) ((((termdommax * (termdommax - 1)) / 2) + 1) * sizeof (Anum)), NULL) == NULL) { errorPrint ("archDecoArchLoad: out of memory (1)"); return (1); } for (i = 0; i < termdomnbr; i ++) { /* For all declared terminals */ INT termvertlabl; INT termvertwght; INT termvertnum; if ((intLoad (stream, &termvertlabl) != 1) || /* Read terminal data */ (intLoad (stream, &termvertwght) != 1) || (intLoad (stream, &termvertnum) != 1) || (termvertnum < 1) || (termvertnum > termdommax)) { errorPrint ("archDecoArchLoad: bad input (3)"); memFree (termverttab); /* Free group leader */ return (1); } termverttab[i].labl = (ArchDomNum) termvertlabl; termverttab[i].wght = (Anum) termvertwght; termverttab[i].num = (Anum) termvertnum; } for (i = 0, j = (termdomnbr * (termdomnbr - 1)) / 2; i < j; i ++) { /* Read terminal distance map */ INT termdistval; if ((intLoad (stream, &termdistval) != 1) || (termdistval < 1)) { errorPrint ("archDecoArchLoad: bad input (4)"); memFree (termverttab); /* Free group leader */ return (1); } termdisttab[i] = (Anum) termdistval; } archDecoArchBuild2 (archptr, termdomnbr, termdommax, termverttab, termdisttab); memFree (termverttab); /* Free group leader */ } else { /* If it is a compiled decomposition */ if (memAllocGroup ((void **) (void *) &archptr->domverttab, (size_t) (termdommax * sizeof (ArchDecoVert)), &archptr->domdisttab, (size_t) ((((termdommax * (termdommax - 1)) / 2) + 1) * sizeof (Anum)), NULL) == NULL) { errorPrint ("archDecoArchLoad: out of memory (2)"); return (1); } archptr->flagval = ARCHDECOFREE; archptr->domtermnbr = (Anum) termdomnbr; archptr->domvertnbr = (Anum) termdommax; for (i = 0; i < termdommax; i ++) { /* Read domain array */ INT domvertlabl; INT domvertsize; INT domvertwght; if ((intLoad (stream, &domvertlabl) != 1) || (intLoad (stream, &domvertsize) != 1) || (intLoad (stream, &domvertwght) != 1)) { errorPrint ("archDecoArchLoad: bad input (5)"); archDecoArchFree (archptr); return (1); } archptr->domverttab[i].labl = (ArchDomNum) domvertlabl; archptr->domverttab[i].size = (Anum) domvertsize; archptr->domverttab[i].wght = (Anum) domvertwght; } for (i = 0; i < (termdommax * (termdommax - 1)) / 2; i ++) { /* Read distance array */ INT domdistval; if (intLoad (stream, &domdistval) != 1) { errorPrint ("archDecoArchLoad: bad input (6)"); archDecoArchFree (archptr); return (1); } archptr->domdisttab[i] = domdistval; } } return (0); } /* This routine frees the decomposition ** architecture structures. ** It returns: ** - 0 : if the decomposition has been successfully freed. ** - !0 : on error. */ int archDecoArchFree ( ArchDeco * const archptr) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco) > sizeof (ArchDummy)) || (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) { errorPrint ("archDecoArchFree: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (((archptr->flagval & ARCHDECOFREE) != 0) && (archptr->domverttab != NULL)) memFree (archptr->domverttab); /* Free group leader */ archptr->domtermnbr = archptr->domvertnbr = 0; archptr->domverttab = NULL; archptr->domdisttab = NULL; return (0); } /* This routine saves the given target architecture ** as compiled decomposition tables. ** It returns: ** - 0 : if the decomposition has been successfully written. ** - !0 : on error. */ int archDecoArchSave ( const ArchDeco * const archptr, FILE * restrict const stream) { Anum i, j; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco) > sizeof (ArchDummy)) || (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) { errorPrint ("archDecoArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, "1\n" ANUMSTRING "\t" ANUMSTRING "\n", /* Write number of domains */ (Anum) archptr->domtermnbr, (Anum) archptr->domvertnbr) == EOF) { errorPrint ("archDecoArchSave: bad output (1)"); return (1); } for (i = 0; i < archptr->domvertnbr; i ++) { /* Write domain array */ if (fprintf (stream, ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\n", (Anum) archptr->domverttab[i].labl, (Anum) archptr->domverttab[i].size, (Anum) archptr->domverttab[i].wght) == EOF) { errorPrint ("archDecoArchSave: bad output (2)"); return (1); } } j = (archptr->domvertnbr * (archptr->domvertnbr - 1)) / 2; for (i = 0; i < j; i ++) { /* Write distance array */ if (fprintf (stream, ANUMSTRING "%c", (Anum) archptr->domdisttab[i], (((i % 8) == 7) && (i != (j - 1))) ? '\n' : '\t') == EOF) { errorPrint ("archDecoArchSave: bad output (3)"); return (1); } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archDecoArchSave: bad output (4)"); return (1); } return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archDecoDomNum ( const ArchDeco * const archptr, const ArchDecoDom * const domnptr) { return (archptr->domverttab[domnptr->num - 1].labl); } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archDecoDomTerm ( const ArchDeco * const archptr, ArchDecoDom * const domnptr, const ArchDomNum domnnum) { Anum domtermnum; Anum domvertnum; for (domtermnum = archptr->domtermnbr, domvertnum = archptr->domvertnbr - 1; domtermnum > 0; domvertnum --) { if (archptr->domverttab[domvertnum].size == 1) { /* If terminal vertex */ domtermnum --; /* One more terminal scanned */ if (archptr->domverttab[domvertnum].labl == domnnum) { /* If terminal domain number found */ domnptr->num = domvertnum; /* Set domain number */ return (0); } } } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the given domain. */ Anum archDecoDomSize ( const ArchDeco * const archptr, const ArchDecoDom * const domnptr) { return (archptr->domverttab[domnptr->num - 1].size); } /* This function returns the weight of ** the given domain. */ Anum archDecoDomWght ( const ArchDeco * const archptr, const ArchDecoDom * const domnptr) { return (archptr->domverttab[domnptr->num - 1].wght); } /* This function returns the average distance ** between two domains, which is extracted ** from the table. */ Anum archDecoDomDist ( const ArchDeco * const archptr, const ArchDecoDom * const dom0ptr, const ArchDecoDom * const dom1ptr) { return (archDecoArchDistE (archptr, dom0ptr->num, dom1ptr->num)); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDecoDomFrst ( const ArchDeco * const archptr, ArchDecoDom * restrict const domnptr) { domnptr->num = 1; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDecoDomLoad ( const ArchDeco * const archptr, ArchDecoDom * restrict const domnptr, FILE * restrict const stream) { if ((intLoad (stream, &domnptr->num) != 1) || (domnptr->num < 1) || (domnptr->num > archptr->domvertnbr)) { errorPrint ("archDecoDomLoad: bad input"); return (1); } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDecoDomSave ( const ArchDeco * const archptr, const ArchDecoDom * const domnptr, FILE * restrict const stream) { if (fprintf (stream, ANUMSTRING " ", (Anum) domnptr->num) == EOF) { errorPrint ("archDecoDomSave: bad output"); return (1); } return (0); } /* This function tries to split a ** decomposition domain into two ** subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archDecoDomBipart ( const ArchDeco * const archptr, const ArchDecoDom * const domnptr, ArchDecoDom * restrict const dom0ptr, ArchDecoDom * restrict const dom1ptr) { if (archptr->domverttab[domnptr->num - 1].size <= 1) /* Return if cannot bipartition more */ return (1); dom0ptr->num = domnptr->num << 1; /* Compute subdomain numbers from domain number */ dom1ptr->num = dom0ptr->num + 1; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archDecoDomIncl ( const ArchDeco * const archptr, const ArchDecoDom * const dom0ptr, const ArchDecoDom * const dom1ptr) { Anum dom0num; Anum dom1num; for (dom1num = dom1ptr->num, dom0num = dom0ptr->num; dom1num != 0; dom1num >>= 1) if (dom1num == dom0num) return (1); return (0); } /* This function creates the MPI_Datatype for ** decomposition-described domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archDecoDomMpiType ( const ArchDeco * const archptr, MPI_Datatype * const typeptr) { *typeptr = ANUM_MPI; return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/bgraph_bipart_df.c0000644000302600021200000002767713560005346021464 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011-2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_df.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a bipartition of **/ /** a bipartition graph by using a **/ /** diffusion scheme. **/ /** **/ /** NOTES : # This algorithm has been designed to **/ /** work on band graphs only, for which **/ /** the two anchor vertices are the two **/ /** last vertices, the before-last as **/ /** anchor of part 0, and the last as **/ /** anchor of part 1. **/ /** **/ /** DATES : # Version 5.0 : from : 09 jan 2007 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 27 mar 2011 **/ /** # Version 6.0 : from : 07 nov 2011 **/ /** to 08 aug 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_DF #ifdef SCOTCH_PTHREAD #define BGRAPHBIPARTDFTHREAD #endif /* SCOTCH_PTHREAD */ #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_df.h" /************************************/ /* */ /* The threaded reduction routines. */ /* */ /************************************/ #ifdef BGRAPHBIPARTDFTHREAD static void bgraphBipartDfReduceVanc ( BgraphBipartDfThread * restrict const tlocptr, /* Pointer to local thread */ void * restrict const vlocptr, /* Pointer to local value */ void * restrict const vremptr) /* Pointer to remote value */ { BgraphBipartDfThread * restrict const tremptr = (BgraphBipartDfThread *) vremptr; tlocptr->vanctab[0] += tremptr->vanctab[0]; /* Accumulate external gains */ tlocptr->vanctab[1] += tremptr->vanctab[1]; } static void bgraphBipartDfReduceVeex ( BgraphBipartDfThread * restrict const tlocptr, /* Pointer to local thread */ void * restrict const vlocptr, /* Pointer to local value */ void * restrict const vremptr) /* Pointer to remote value */ { BgraphBipartDfThread * restrict const tremptr = (BgraphBipartDfThread *) vremptr; tlocptr->veexsum += tremptr->veexsum; /* Accumulate external gains */ tlocptr->veexsum1 += tremptr->veexsum1; } #endif /* BGRAPHBIPARTDFTHREAD */ /********************************/ /* */ /* The sequential loop routine. */ /* */ /********************************/ #define BGRAPHBIPARTDFLOOPNAME bgraphBipartDfSeq #include "bgraph_bipart_df_loop.c" #undef BGRAPHBIPARTDFLOOPNAME /******************************/ /* */ /* The threaded loop routine. */ /* */ /******************************/ #ifdef BGRAPHBIPARTDFTHREAD #define BGRAPHBIPARTDFLOOPTHREAD #define BGRAPHBIPARTDFLOOPNAME bgraphBipartDfThr #include "bgraph_bipart_df_loop.c" #undef BGRAPHBIPARTDFLOOPNAME #undef BGRAPHMAPARTDFLOOPTHREAD #endif /* BGRAPHBIPARTDFTHREAD */ /******************************/ /* */ /* The threaded join routine. */ /* */ /******************************/ #ifdef BGRAPHBIPARTDFTHREAD int bgraphBipartDfJoin ( BgraphBipartDfThread * tlocptr, BgraphBipartDfThread * tremptr) { BgraphBipartDfData * restrict const loopptr = (BgraphBipartDfData *) tlocptr->thrddat.grouptr; Bgraph * restrict const grafptr = loopptr->grafptr; Gnum * restrict const frontab = grafptr->frontab; Gnum fronnbr; fronnbr = tremptr->fronnnd - (tremptr->vertbas - grafptr->s.baseval); memMov (frontab + tlocptr->fronnnd, /* Aggregate frontier array; TODO: we should do differently for large number of threads */ frontab + (tremptr->vertbas - grafptr->s.baseval), fronnbr * sizeof (Gnum)); tlocptr->fronnnd += fronnbr; /* Accumulate frontier vertices */ tlocptr->compload1 += tremptr->compload1; /* Accumulate graph properties */ tlocptr->compsize1 += tremptr->compsize1; tlocptr->commloadextn += tremptr->commloadextn; tlocptr->commloadintn += tremptr->commloadintn; tlocptr->commgainextn += tremptr->commgainextn; return (0); } #endif /* BGRAPHBIPARTDFTHREAD */ /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartDf ( Bgraph * restrict const grafptr, /*+ Active graph +*/ const BgraphBipartDfParam * const paraptr) /*+ Method parameters +*/ { BgraphBipartDfData loopdat; Gnum compload0; Gnum compload1; Gnum compsize1; Gnum commloadintn; Gnum commloadextn; Gnum commgainextn; #ifdef BGRAPHBIPARTDFTHREAD /* Threads can be accepted even when SCOTCH_DETERMINISTIC set */ int thrdnbr; #endif /* BGRAPHBIPARTDFTHREAD */ Gnum fronnbr; #ifdef SCOTCH_DEBUG_BGRAPH1 if ((grafptr->s.flagval & BGRAPHHASANCHORS) == 0) { /* Method valid only if graph has anchors */ errorPrint ("bgraphBipartDf: graph does not have anchors"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH1 */ if (memAllocGroup ((void **) (void *) &loopdat.difotax, (size_t) (grafptr->s.vertnbr * sizeof (float)), &loopdat.difntax, (size_t) (grafptr->s.vertnbr * sizeof (float)), NULL) == NULL) { errorPrint ("bgraphBipartDf: out of memory (1)"); return (1); } loopdat.grafptr = grafptr; loopdat.difotax -= grafptr->s.baseval; loopdat.difntax -= grafptr->s.baseval; loopdat.passnbr = paraptr->passnbr; compload0 = (paraptr->typeval == BGRAPHBIPARTDFTYPEBAL) /* If balanced parts wanted */ ? grafptr->compload0avg /* Target is average */ : ( (grafptr->compload0 < grafptr->compload0min) ? grafptr->compload0min : /* Else keep load if not off balance */ ((grafptr->compload0 > grafptr->compload0max) ? grafptr->compload0max : grafptr->compload0)); loopdat.vanctab[0] = (float) - compload0; /* Values to be injected to anchor vertices at every iteration */ loopdat.vanctab[1] = (float) (grafptr->s.velosum - compload0)- BGRAPHBIPARTDFEPSILON; /* Slightly tilt value to add to part 1 */ #ifdef BGRAPHBIPARTDFTHREAD /* Threads can be accepted even when SCOTCH_DETERMINISTIC set */ thrdnbr = SCOTCH_PTHREAD_NUMBER; loopdat.abrtval = 0; /* No one wants to abort yet */ if (thrdnbr > 1) { BgraphBipartDfThread * restrict thrdtab; int thrdnum; Gnum vertbas; if ((thrdtab = memAlloc (thrdnbr * sizeof (BgraphBipartDfThread))) == NULL) { errorPrint ("bgraphBipartDf: out of memory (2)"); memFree (loopdat.difotax + grafptr->s.baseval); return (1); } for (thrdnum = 0, vertbas = grafptr->s.baseval; /* For all threads except the last one */ thrdnum < (thrdnbr - 1); thrdnum ++) { thrdtab[thrdnum].vertbas = vertbas; thrdtab[thrdnum].vertnnd = vertbas += DATASIZE ((grafptr->s.vertnbr - 2), thrdnbr, thrdnum); /* Do not count anchors in distribution */ } thrdtab[thrdnum].vertbas = vertbas; thrdtab[thrdnum].vertnnd = grafptr->s.vertnnd; /* Both anchors will always be on the same thread */ threadLaunch (&loopdat, thrdtab, sizeof (BgraphBipartDfThread), (ThreadLaunchStartFunc) bgraphBipartDfThr, (ThreadLaunchJoinFunc) bgraphBipartDfJoin, thrdnbr, THREADCANBARRIER | THREADCANREDUCE); fronnbr = thrdtab[0].fronnnd; compload1 = thrdtab[0].compload1; compsize1 = thrdtab[0].compsize1; commloadextn = thrdtab[0].commloadextn; commloadintn = thrdtab[0].commloadintn; commgainextn = thrdtab[0].commgainextn; memFree (thrdtab); /* Free group leader */ } else #endif /* BGRAPHBIPARTDFTHREAD */ { BgraphBipartDfThread thrddat; thrddat.thrddat.grouptr = &loopdat; thrddat.vertbas = grafptr->s.baseval; /* Process all vertices, including both anchors */ thrddat.vertnnd = grafptr->s.vertnnd; #ifdef BGRAPHBIPARTDFTHREAD loopdat.thrddat.thrdnbr = 1; /* Thread is thread 0 of 1 */ thrddat.thrddat.thrdnum = 0; #endif /* BGRAPHBIPARTDFTHREAD */ bgraphBipartDfSeq (&thrddat); fronnbr = thrddat.fronnnd; compload1 = thrddat.compload1; compsize1 = thrddat.compsize1; commloadextn = thrddat.commloadextn; commloadintn = thrddat.commloadintn; commgainextn = thrddat.commgainextn; } memFree (loopdat.difotax + grafptr->s.baseval); /* Free group leader */ grafptr->fronnbr = fronnbr; grafptr->compload0 = grafptr->s.velosum - compload1; grafptr->compload0dlt = grafptr->compload0 - grafptr->compload0avg; grafptr->compsize0 = grafptr->s.vertnbr - compsize1; grafptr->commload = commloadextn + (commloadintn / 2) * grafptr->domndist; grafptr->commgainextn = commgainextn; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartDf: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_gg.c0000644000302600021200000003413513470115365022025 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_gg.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates an active **/ /** graph using a vertex-oriented version **/ /** of the Greedy Graph Growing algorithm. **/ /** **/ /** DATES : # Version 3.2 : from : 10 nov 1997 **/ /** to 15 jul 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 22 jan 2004 **/ /** # Version 5.0 : from : 02 jan 2007 **/ /** to 24 mar 2008 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** # Version 6.0 : from : 04 feb 2012 **/ /** to 26 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_GG #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_gg.h" /* ** The static variables. */ static const Gnum vgraphseparateggloadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int vgraphSeparateGg ( Vgraph * restrict const grafptr, /*+ Separation graph +*/ const VgraphSeparateGgParam * const paraptr) /*+ Method parameters +*/ { GainTabl * restrict tablptr; /* Pointer to gain table */ VgraphSeparateGgVertex * restrict vexxtax; /* Complementary vertex array */ Gnum vertnum; /* Index of current vertex */ Gnum * restrict permtab; /* Table for finding new roots */ Gnum permnum; /* Current permutation index */ Gnum fronnum; INT passnum; const Gnum * restrict velobax; /* Data for handling optional arrays */ Gnum velomsk; /* Mask for handling optional arrays */ Gnum comploaddlt; Gnum compload2; Gnum compsize1; Gnum compsize2; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; GraphPart * restrict const parttax = grafptr->parttax; Gnum * restrict const frontab = grafptr->frontab; if (((tablptr = gainTablInit (GAIN_LINMAX, VGRAPHSEPAGGSUBBITS)) == NULL) || /* Use logarithmic array only */ ((vexxtax = (VgraphSeparateGgVertex *) memAlloc (grafptr->s.vertnbr * sizeof (VgraphSeparateGgVertex))) == NULL)) { errorPrint ("vgraphSeparateGg: out of memory (1)"); if (tablptr != NULL) gainTablExit (tablptr); return (1); } vexxtax -= grafptr->s.baseval; /* Base access to vexxtax */ permtab = NULL; /* Do not allocate permutation array yet */ if (grafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &vgraphseparateggloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { /* For all passes */ VgraphSeparateGgVertex * vexxptr; /* Pointer to current vertex to swap */ memSet (vexxtax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (VgraphSeparateGgVertex)); /* All vertices to part 0 */ gainTablFree (tablptr); /* Reset gain table */ permnum = 0; /* No permutation built yet */ comploaddlt = grafptr->s.velosum; /* Reset separation parameters */ compload2 = 0; vexxptr = vexxtax + (grafptr->s.baseval + intRandVal (grafptr->s.vertnbr)); /* Randomly select first root vertex */ do { /* Loop on root vertices */ Gnum vertnum; /* Number of current vertex */ Gnum veloval; /* Load of selected vertex */ Gnum compgain2; vexxptr->gainlink.next = /* TRICK: allow deletion of root vertex */ vexxptr->gainlink.prev = (GainLink *) vexxptr; #ifdef SCOTCH_DEBUG_GAIN2 vexxptr->gainlink.tabl = NULL; #endif /* SCOTCH_DEBUG_GAIN2 */ vertnum = vexxptr - vexxtax; /* Get root vertex based number */ if (velomsk == 0) { /* If vertices are not weighted */ veloval = 1; compgain2 = vendtax[vertnum] - verttax[vertnum] - 1; } else { /* Graph vertices are weighted */ Gnum edgenum; veloval = velobax[vertnum]; compgain2 = - veloval; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) compgain2 += velobax[edgetax[edgenum]]; } vexxptr->compgain2 = compgain2; /* Set root gain (root not in separator) */ comploaddlt -= veloval; /* Move vertex from part 0 to separator */ compload2 += veloval; do { /* While vertices can be retrieved */ VgraphSeparateGgVertex * sepaptr; /* List of vertices in separator */ Gnum veloval; /* Load of selected vertex */ Gnum edgenum; vertnum = vexxptr - vexxtax; /* Get number of selected vertex */ veloval = velobax[vertnum & velomsk]; if (comploaddlt < abs (comploaddlt - veloval)) { /* If swapping would cause imbalance */ permnum = grafptr->s.vertnbr; /* Terminate swapping process */ vexxptr = NULL; break; } gainTablDel (tablptr, (GainLink *) vexxptr); /* Remove vertex from table */ vexxptr->gainlink.next = VGRAPHSEPAGGSTATEPART1; /* Put vertex in part 1 */ compload2 += vexxptr->compgain2; /* Update partition parameters */ comploaddlt -= vexxptr->compgain2 + 2 * veloval; sepaptr = NULL; /* No separator vertices to relink yet */ for (edgenum = verttax[vertnum]; /* (Re-)link neighbor vertices */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; VgraphSeparateGgVertex * vexxend; vertend = edgetax[edgenum]; /* Point to end vertex */ vexxend = vexxtax + vertend; if (vexxend->gainlink.next == VGRAPHSEPAGGSTATEPART0) { /* If end in part 0 */ Gnum veloend; Gnum edgtnum; Gnum compgain2; vexxend->gainlink.next = VGRAPHSEPAGGSTATEPART2; /* Move vertex to separator */ vexxend->gainlink.prev = (GainLink *) sepaptr; /* Chain vertex */ sepaptr = vexxend; veloend = velobax[vertend & velomsk]; compgain2 = - veloend; for (edgtnum = verttax[vertend]; edgtnum < vendtax[vertend]; edgtnum ++) { Gnum vertent; VgraphSeparateGgVertex * vexxent; vertent = edgetax[edgtnum]; /* Point to end vertex */ vexxent = vexxtax + vertent; if (vexxent->gainlink.next == VGRAPHSEPAGGSTATEPART0) compgain2 += velobax[vertent & velomsk]; else if (vexxent->gainlink.next >= VGRAPHSEPAGGSTATEPART2) { vexxent->compgain2 -= veloend; if (vexxent->gainlink.next >= VGRAPHSEPAGGSTATELINK) { gainTablDel (tablptr, (GainLink *) vexxent); /* Unlink vertex */ vexxent->gainlink.next = VGRAPHSEPAGGSTATEPART2; /* Chain vertex */ vexxent->gainlink.prev = (GainLink *) sepaptr; sepaptr = vexxent; } } } vexxend->compgain2 = compgain2; } } while (sepaptr != NULL) { /* For all vertices in chain list */ vexxptr = sepaptr; /* Unlink vertex from list */ sepaptr = (VgraphSeparateGgVertex *) vexxptr->gainlink.prev; gainTablAdd (tablptr, (GainLink *) vexxptr, vexxptr->compgain2); /* Relink it */ } } while ((vexxptr = (VgraphSeparateGgVertex *) gainTablFrst (tablptr)) != NULL); if (permnum == 0) { /* If permutation has not been built yet */ if (permtab == NULL) { /* If permutation array not allocated yet */ if ((permtab = (Gnum *) memAlloc (grafptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("vgraphSeparateGg: out of memory (2)"); memFree (vexxtax + grafptr->s.baseval); gainTablExit (tablptr); return (1); } intAscn (permtab, grafptr->s.vertnbr, grafptr->s.baseval); /* Initialize based permutation array */ } intPerm (permtab, grafptr->s.vertnbr); /* Build random permutation */ } for ( ; permnum < grafptr->s.vertnbr; permnum ++) { /* Find next root vertex */ if (vexxtax[permtab[permnum]].gainlink.next == VGRAPHSEPAGGSTATEPART0) { vexxptr = vexxtax + permtab[permnum ++]; break; } } } while (vexxptr != NULL); if ((passnum == 0) || /* If first try */ ( (grafptr->compload[2] > compload2) || /* Or if better solution reached */ ((grafptr->compload[2] == compload2) && (abs (grafptr->comploaddlt) > abs (comploaddlt))))) { Gnum vertnum; grafptr->comploaddlt = comploaddlt; /* Set graph parameters */ grafptr->compload[2] = compload2; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) /* Copy bipartition state */ parttax[vertnum] = (vexxtax[vertnum].gainlink.next <= VGRAPHSEPAGGSTATEPART2) ? (GraphPart) (intptr_t) vexxtax[vertnum].gainlink.next : (GraphPart) 2; } } if (permtab != NULL) /* Free work arrays */ memFree (permtab); memFree (vexxtax + grafptr->s.baseval); gainTablExit (tablptr); grafptr->compload[0] = (grafptr->s.velosum + grafptr->comploaddlt - grafptr->compload[2]) / 2; grafptr->compload[1] = grafptr->s.velosum - grafptr->compload[2] - grafptr->compload[0]; compsize1 = compsize2 = 0; for (vertnum = grafptr->s.baseval, fronnum = 0; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum partval; partval = (Gnum) parttax[vertnum]; compsize1 += (partval & 1); /* Superscalar update */ compsize2 += (partval >> 1); if (partval == 2) /* If vertex belongs to frontier */ frontab[fronnum ++] = vertnum; /* Record it in frontier array */ } grafptr->compsize[0] = grafptr->s.vertnbr - compsize1 - compsize2; grafptr->compsize[1] = compsize1; grafptr->fronnbr = compsize2; #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) { errorPrint ("vgraphSeparateGg: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/common_integer.c0000644000302600021200000004664313560005430021200 0ustar pelegrinpelegrin/* Copyright 2004,2007-2012,2014-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_integer.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the generic integer **/ /** type. **/ /** **/ /** DATES : # Version 0.0 : from : 07 sep 1998 **/ /** to 22 sep 1998 **/ /** # Version 0.1 : from : 07 jan 2002 **/ /** to 17 jan 2003 **/ /** # Version 1.0 : from : 23 aug 2005 **/ /** to : 19 dec 2006 **/ /** # Version 2.0 : from : 26 feb 2008 **/ /** to : 26 feb 2008 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 16 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 03 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_INTEGER #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" /********************************/ /* */ /* Basic routines for fast I/O. */ /* */ /********************************/ /* Fast read for INT values. ** It returns: ** - 1 : on success. ** - 0 : on error. */ int intLoad ( FILE * const stream, /*+ Stream to read from +*/ INT * const valptr) /*+ Area where to put value +*/ { int sign; /* Sign flag */ int car; /* Character read */ INT val; /* Value */ sign = 0; /* Assume positive constant */ for ( ; ; ) { /* Consume whitespaces and sign */ car = getc (stream); if (isspace (car)) continue; if ((car >= '0') && (car <= '9')) break; if (car == '-') { sign = 1; car = getc (stream); break; } if (car == '+') { car = getc (stream); break; } return (0); } if ((car < '0') || (car > '9')) /* If first char is non numeric */ return (0); /* Then it is an error */ val = car - '0'; /* Get first digit */ for ( ; ; ) { car = getc (stream); if ((car < '0') || (car > '9')) { ungetc (car, stream); break; } val = val * 10 + (car - '0'); /* Accumulate digits */ } *valptr = (sign != 0) ? (- val) : val; /* Set result */ return (1); } /* Write routine for INT values. ** It returns: ** - 1 : on success. ** - 0 : on error. */ int intSave ( FILE * const stream, /*+ Stream to write to +*/ const INT val) /*+ Value to write +*/ { return ((fprintf (stream, INTSTRING, (INT) val) == EOF) ? 0 : 1); } /**********************************/ /* */ /* Permutation building routines. */ /* */ /**********************************/ /* This routine fills an array with ** consecutive INT values, in ** ascending order. ** It returns: ** - VOID : in all cases. */ void intAscn ( INT * const permtab, /*+ Permutation array to build +*/ const INT permnbr, /*+ Number of entries in array +*/ const INT baseval) /*+ Base value +*/ { INT * permtax; INT permnum; INT permnnd; for (permnum = baseval, permnnd = baseval + permnbr, permtax = permtab - baseval; permnum < permnnd; permnum ++) permtax[permnum] = permnum; } /* This routine computes a random permutation ** of an array of INT values. ** It returns: ** - VOID : in all cases. */ void intPerm ( INT * const permtab, /*+ Permutation array to build +*/ const INT permnbr) /*+ Number of entries in array +*/ { INT * permptr; UINT permrmn; for (permptr = permtab, permrmn = (UINT) permnbr; /* Perform random permutation */ permrmn > 0; permptr ++, permrmn --) { UINT permnum; INT permtmp; permnum = intRandVal (permrmn); /* Select index to swap */ permtmp = permptr[0]; /* Swap it with current index */ permptr[0] = permptr[permnum]; permptr[permnum] = permtmp; } } /*************************************/ /* */ /* Pseudo-random generator routines. */ /* */ /*************************************/ static volatile int intrandflag = 0; /*+ Flag set if generator already initialized +*/ static UINT32 intrandproc = 0; /*+ Process number +*/ static UINT32 intrandseed = 1; /*+ Pseudo-random seed +*/ /* This routine sets the process number that is ** used to generate a different seed across all ** processes. In order for this number to be ** taken into account, it must be followed by ** a subsequent call to intRandInit(), ** intRandReset() or intRandSeed(). ** It returns: ** - VOID : in all cases. */ void intRandProc ( int procnum) { intrandproc = (UINT32) procnum; /* Set process number */ } /* This routine initializes the seed used by Scotch ** with the provided value. Hence, all subsequent ** calls to intRandInit() will start from this seed. ** It returns: ** - VOID : in all cases. */ #ifndef COMMON_RANDOM_SYSTEM static IntRandState intrandstat; /*+ Pseudo-random state value +*/ static void intRandSeed3 ( IntRandState * restrict randptr, UINT32 randval) { UINT32 randtmp; UINT32 i; UINT32 * restrict const randtab = randptr->randtab; /* Fast access */ randtmp = (UINT32) randval; randtab[0] = randtmp; /* Reset array contents */ for (i = 1; i < 623; i ++) { randtmp = (0x6c078965 * randtmp) ^ ((randtmp >> 30) + i); randtab[i] = randtmp; } randptr->randnum = 0; /* Reset array index */ } #endif /* COMMON_RANDOM_SYSTEM */ static void intRandSeed2 ( UINT32 seedval) { UINT32 randtmp; randtmp = seedval * (intrandproc + 1); /* Account for process index */ #ifdef COMMON_RANDOM_SYSTEM #ifdef COMMON_RANDOM_RAND srand ((unsigned int) randtmp); #else /* COMMON_RANDOM_RAND */ srandom ((unsigned int) randtmp); #endif /* COMMON_RANDOM_RAND */ #else /* COMMON_RANDOM_SYSTEM */ intRandSeed3 (&intrandstat, randtmp); /* Initialize state vector from random seed */ #endif /* COMMON_RANDOM_SYSTEM */ } void intRandSeed ( INT seedval) { intrandflag = 1; /* Generator has been initialized */ intrandseed = (UINT32) seedval; /* Save new seed */ intRandSeed2 (intrandseed); /* Initialize pseudo-random seed */ } /* This routine initializes the pseudo-random ** generator if necessary. In order for multi-sequential ** programs to have exactly the same behavior on any ** process, the random seed does not depend on process ** rank. This routine is not really thread-safe, so it ** should not be called concurrently when it has never ** been initialized before. ** It returns: ** - VOID : in all cases. */ void intRandInit (void) { if (intrandflag == 0) { /* Non thread-safe check */ intrandflag = 1; /* Generator has been initialized */ #if ! ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED)) intrandseed = (UINT32) time (NULL); /* Set random seed if needed */ #endif /* ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED)) */ intRandSeed2 (intrandseed); /* Initialize state vector from seed */ } } /* This routine reinitializes the pseudo-random ** generator to its initial value. This routine ** is not thread-safe. ** It returns: ** - VOID : in all cases. */ void intRandReset (void) { if (intrandflag == 0) /* Keep seed computed during first initialization */ intRandInit (); intRandSeed2 (intrandseed); } /* This routine loads the random state. ** It returns: ** - 0 : on success. ** - 1 : state cannot be loaded. ** - 2 : on error. */ #ifndef COMMON_RANDOM_SYSTEM static int intRandLoad2 ( IntRandState * restrict const randptr, /*+ Random state to load +*/ FILE * restrict const stream) /*+ Stream to read from +*/ { INT versval; INT randnum; int i; if (intLoad (stream, &versval) != 1) { /* Read version number */ errorPrint ("intRandLoad2: bad input (1)"); return (2); } if (versval != 0) { /* If version not zero */ errorPrint ("intRandLoad2: invalid version number"); return (2); } for (i = 0; i < 624; i ++) { INT randval; if (intLoad (stream, &randval) != 1) { /* Read state vector */ errorPrint ("intRandLoad2: bad input (2)"); return (2); } randptr->randtab[i] = (UINT32) randval; } if (intLoad (stream, &randnum) != 1) { /* Read state index */ errorPrint ("intRandLoad2: bad input (3)"); return (2); } if ((randnum < 0) || (randnum >= 624)) { errorPrint ("intRandLoad2: invalid array index"); return (2); } randptr->randnum = randnum; return (0); } #endif /* COMMON_RANDOM_SYSTEM */ int intRandLoad ( FILE * restrict const stream) /*+ Stream to read from +*/ { #ifndef COMMON_RANDOM_SYSTEM return (intRandLoad2 (&intrandstat, stream)); #else /* COMMON_RANDOM_SYSTEM */ return (1); #endif /* COMMON_RANDOM_SYSTEM */ } /* This routine saves the random state. ** It returns: ** - 0 : on success. ** - 1 : state cannot be saved. ** - 2 : on error. */ #ifndef COMMON_RANDOM_SYSTEM static int intRandSave2 ( IntRandState * restrict const randptr, /*+ Random state to load +*/ FILE * restrict const stream) /*+ Stream to read from +*/ { int i; if (fprintf (stream, "0\n") == EOF) { errorPrint ("intRandSave2: bad output (1)"); return (2); } for (i = 0; i < 624; i ++) { if (fprintf (stream, UINTSTRING "\n", (UINT) randptr->randtab[i]) == EOF) { errorPrint ("intRandLoad2: bad output (2)"); return (2); } } if (fprintf (stream, INTSTRING "\n", (INT) randptr->randnum) == EOF) { errorPrint ("intRandLoad2: bad output (3)"); return (2); } return (0); } #endif /* COMMON_RANDOM_SYSTEM */ int intRandSave ( FILE * restrict const stream) /*+ Stream to read from +*/ { #ifndef COMMON_RANDOM_SYSTEM return (intRandSave2 (&intrandstat, stream)); #else /* COMMON_RANDOM_SYSTEM */ return (1); #endif /* COMMON_RANDOM_SYSTEM */ } /* This routine computes a new pseudo-random ** 32bit value from the state that is passed ** to it. ** For speed and reproducibility reasons, ** this routine is not thread-safe. Providing ** a thread-safe routine would mean determinism ** could not be achieved in caller routines. ** It is the responsibility of application ** routines to call intRandVal() in a way that ** avoids concurrent execution and potentially ** enforces reproducibility. ** It returns: ** - x : pseudo-random value. */ #ifndef COMMON_RANDOM_SYSTEM static UINT32 intRandVal2 ( IntRandState * restrict randptr) { int randnum; UINT32 randval; UINT32 * restrict const randtab = randptr->randtab; /* Fast access */ #ifdef COMMON_DEBUG if (intrandflag == 0) { errorPrint ("intRandVal2: random generator not initialized"); return (~0); } #endif /* COMMON_DEBUG */ randnum = randptr->randnum; if (randnum == 0) { int i; for (i = 0; i < 624; i ++) { UINT32 randtmp; randtmp = (randtab[i] & 0x80000000) + (randtab[(i + 1) % 624] & 0x7FFFFFFF); randtmp = randtab[(i + 397) % 624] ^ (randtmp >> 1); if ((randtmp & 1) != 0) randtmp ^= 0x9908B0DF; randtab[i] = randtmp; } } randval = randtab[randnum]; randval ^= (randval >> 11); randval ^= (randval >> 7) & 0x9D2C5680; randval ^= (randval >> 15) & 0xEFC60000; randval ^= (randval >> 18); randptr->randnum = (randnum + 1) % 624; return (randval); } #endif /* COMMON_RANDOM_SYSTEM */ /* This routine returns a pseudo-random integer ** value in the range [0..randmax[. This routine ** is not thread-safe as it uses a global state ** variable. ** It returns: ** - x : pseudo-random value. */ #ifndef COMMON_RANDOM_SYSTEM UINT intRandVal ( UINT randmax) { return (((UINT) intRandVal2 (&intrandstat)) % randmax); } #endif /* COMMON_RANDOM_SYSTEM */ /*********************/ /* */ /* Sorting routines. */ /* */ /*********************/ /* This routine sorts an array of ** INT values in ascending order ** by their first value, used as key. ** It returns: ** - VOID : in all cases. */ #define INTSORTNAME intSort1asc1 #define INTSORTSIZE (sizeof (INT)) #define INTSORTSWAP(p,q) do { INT t; t = *((INT *) (p)); *((INT *) (p)) = *((INT *) (q)); *((INT *) (q)) = t; } while (0) #define INTSORTCMP(p,q) (*((INT *) (p)) < *((INT *) (q))) #include "common_sort.c" #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /* This routine sorts an array of pairs of ** INT values in ascending order by their ** first value, used as key. ** It returns: ** - VOID : in all cases. */ #define INTSORTNAME intSort2asc1 #define INTSORTSIZE (2 * sizeof (INT)) #define INTSORTSWAP(p,q) do { INT t, u; t = *((INT *) (p)); u = *((INT *) (p) + 1); *((INT *) (p)) = *((INT *) (q)); *((INT *) (p) + 1) = *((INT *) (q) + 1); *((INT *) (q)) = t; *((INT *) (q) + 1) = u; } while (0) #define INTSORTCMP(p,q) (*((INT *) (p)) < *((INT *) (q))) #include "common_sort.c" #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /* This routine sorts an array of pairs of ** INT values in ascending order by both ** of their values, used as primary and ** secondary keys. ** It returns: ** - VOID : in all cases. */ #define INTSORTNAME intSort2asc2 #define INTSORTSIZE (2 * sizeof (INT)) #define INTSORTSWAP(p,q) do { INT t, u; t = *((INT *) (p)); u = *((INT *) (p) + 1); *((INT *) (p)) = *((INT *) (q)); *((INT *) (p) + 1) = *((INT *) (q) + 1); *((INT *) (q)) = t; *((INT *) (q) + 1) = u; } while (0) #define INTSORTCMP(p,q) ((*((INT *) (p)) < *((INT *) (q))) || ((*((INT *) (p)) == *((INT *) (q))) && (*((INT *) (p) + 1) < *((INT *) (q) + 1)))) #include "common_sort.c" #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /* This routine sorts an array of 3-uples of ** INT values in ascending order by their ** first value, used as key. ** It returns: ** - VOID : in all cases. */ #define INTSORTNAME intSort3asc1 #define INTSORTSIZE (3 * sizeof (INT)) #define INTSORTSWAP(p,q) do { INT t, u, v; t = *((INT *) (p)); u = *((INT *) (p) + 1); v = *((INT *) (p) + 2); *((INT *) (p)) = *((INT *) (q)); *((INT *) (p) + 1) = *((INT *) (q) + 1); *((INT *) (p) + 2) = *((INT *) (q) + 2); *((INT *) (q)) = t; *((INT *) (q) + 1) = u; *((INT *) (q) + 2) = v; } while (0) #define INTSORTCMP(p,q) (*((INT *) (p)) < *((INT *) (q))) #include "common_sort.c" #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /* This routine sorts an array of 3-uples of ** INT values in ascending order by their ** first and second values, used as primary ** and secondary keys. ** It returns: ** - VOID : in all cases. */ #define INTSORTNAME intSort3asc2 #define INTSORTSIZE (3 * sizeof (INT)) #define INTSORTSWAP(p,q) do { INT t, u, v; t = *((INT *) (p)); u = *((INT *) (p) + 1); v = *((INT *) (p) + 2); *((INT *) (p)) = *((INT *) (q)); *((INT *) (p) + 1) = *((INT *) (q) + 1); *((INT *) (p) + 2) = *((INT *) (q) + 2); *((INT *) (q)) = t; *((INT *) (q) + 1) = u; *((INT *) (q) + 2) = v; } while (0) #define INTSORTCMP(p,q) ((*((INT *) (p)) < *((INT *) (q))) || ((*((INT *) (p)) == *((INT *) (q))) && (*((INT *) (p) + 1) < *((INT *) (q) + 1)))) #include "common_sort.c" #undef INTSORTNAME #undef INTSORTSIZE #undef INTSORTSWAP #undef INTSORTCMP /* This routine computes the greatest common ** divisor of two non-negative integers u and v. ** It returns: ** - x : the GCD of u and v. */ INT intGcd ( INT u, INT v) { INT t; if (v < u) { /* u should always be the biggest */ t = u; u = v; v = t; } while (v != 0) { t = v; v = u % v; u = t; } return (u); } scotch_6.0.9/src/libscotch/dorder.h0000644000302600021200000002443213465315041017455 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the generic **/ /** distributed ordering structure. **/ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 14 oct 2007 **/ /** # Version 5.1 : from : 28 nov 2007 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 08 may 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Tag for MPI communications. +*/ #define DORDERTAGPERI 0 /*+ Column block separation tree cell flags. The DORDERCBLKNEDI value must correspond to a single bit and be equal to the ORDERCBLKNEDI value. +*/ #define DORDERCBLKNONE 0x0000 /*+ Not yet assigned +*/ #define DORDERCBLKNEDI 0x0001 /*+ Nested dissection separator node +*/ #define DORDERCBLKLEAF 0x0004 /*+ Distributed leaf +*/ /* ** The type and structure definitions. */ /*+ Distributed index of column block tree cell. +*/ typedef struct DorderIndex_ { int proclocnum; /*+ Number of this process +*/ Gnum cblklocnum; /*+ Local index of column block +*/ } DorderIndex; /*+ Link structure to double-chain all column blocks into the distributed ordering structure. Nodes are inserted at end of list such that a simple traversal gives nodes in ascending creation order, which is essential for locally-rooted nodes when gathering them on a centralized ordering. +*/ typedef struct DorderLink_ { struct DorderLink_ * nextptr; /*+ Pointer to previous column block +*/ struct DorderLink_ * prevptr; /*+ Pointer to next column block +*/ } DorderLink; /*+ Centralized column block node. +*/ typedef struct DorderNode_ { Gnum fathnum; /*+ Number of father in centralized node array +*/ int typeval; /*+ Centralized type of tree node +*/ Gnum vnodnbr; /*+ Number of nodes in this column block +*/ Gnum cblknum; /*+ Rank of column block in father column block array +*/ } DorderNode; /*+ Distributed column-block tree cell. Each cell defines a distributed column block, which is either a nested dissection node, with its two subgraphs and its separator, or a leaf. Leaves which are located on a single process can be nested dissection sequential nodes, with the sequential tree folded as a node array. Column blocks are given in ascending order within all sub-arrays, for proper infix traversal. +*/ typedef struct DorderCblk_ { DorderLink linkdat; /*+ Link to other blocks. TRICK: FIRST +*/ struct Dorder_ * ordelocptr; /*+ Pointer to local distributed ordering +*/ int typeval; /*+ Distributed type of tree node +*/ DorderIndex fathnum; /*+ Master index of parent column block +*/ DorderIndex cblknum; /*+ Master index of this column block +*/ Gnum ordeglbval; /*+ Un-based starting index of inverse permutation +*/ Gnum vnodglbnbr; /*+ Number of node vertices in subtree +*/ Gnum cblkfthnum; /*+ Rank of node in father column block array +*/ union { struct { /*+ Fragment of inverse permutation +*/ Gnum ordelocval; /*+ Starting index of inverse permutation +*/ Gnum vnodlocnbr; /*+ Number of node vertices in fragment +*/ Gnum * periloctab; /*+ Pointer to inverse permutation fragment +*/ Gnum nodelocnbr; /*+ Number of local column blocks +*/ DorderNode * nodeloctab; /*+ Array of local column blocks +*/ Gnum cblklocnum; /*+ Local number of first local column block +*/ } leaf; struct { /*+ Fragment of inverse permutation +*/ Gnum cblkglbnbr; /*+ Number of descendent nodes (2 or 3) +*/ } nedi; } data; } DorderCblk; /*+ Distributed ordering structure. A distributed block ordering is defined by fragments of its inverse permutation, distributed across all of the participating processes. For the sake of consistency between orderings that have been produced either from graphs or meshes, whether centralized or distributed, all ordering values are based from baseval. +*/ typedef struct Dorder_ { Gnum baseval; /*+ Base value for structures +*/ Gnum vnodglbnbr; /*+ Global number of node vertices +*/ Gnum cblklocnbr; /*+ Local number of unique locally-rooted distributed and sequential column blocks +*/ DorderLink linkdat; /*+ Link to column blocks +*/ MPI_Comm proccomm; /*+ Ordering global communicator +*/ int proclocnum; /*+ Rank of this process in the communicator +*/ #ifdef SCOTCH_PTHREAD pthread_mutex_t mutelocdat; /*+ Local mutex for counter and link updates +*/ #endif /* SCOTCH_PTHREAD */ } Dorder; /* ** The function prototypes. */ int dorderInit (Dorder * const, const Gnum, const Gnum, MPI_Comm); void dorderExit (Dorder * const); void dorderFree (Dorder * const); #ifdef DGRAPH_H int dorderPerm (const Dorder * const, const Dgraph * const, Gnum * const); int dorderSave (const Dorder * const, const Dgraph * const, FILE * const); int dorderSaveBlock (const Dorder * const, const Dgraph * const, FILE * const); int dorderSaveMap (const Dorder * const, const Dgraph * const, FILE * const); int dorderSaveTree (const Dorder * const, const Dgraph * const, FILE * const); #ifdef ORDER_H int dorderSaveTree2 (const Dorder * restrict const, const Dgraph * restrict const, FILE * restrict const, int (*) (const Order * const, const Gnum * const, FILE * const)); #endif /* ORDER_H */ #endif /* DGRAPH_H */ Gnum dorderCblkDist (const Dorder * restrict const); int dorderTreeDist (const Dorder * restrict const, const Dgraph * restrict const, Gnum * restrict const, Gnum * restrict const); #ifdef ORDER_H int dorderGather (const Dorder * const, Order * const); int dorderGatherTree (const Dorder * const, Order * const, const int); #endif /* ORDER_H */ DorderCblk * dorderFrst (Dorder * const); DorderCblk * dorderNew (DorderCblk * const, MPI_Comm); DorderCblk * dorderNewSequ (DorderCblk * const); Gnum dorderNewSequIndex (DorderCblk * const, const Gnum); void dorderDispose (DorderCblk * const); scotch_6.0.9/src/libscotch/dgraph_halo.h0000644000302600021200000001042713560005435020444 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_halo.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the asynchronous halo **/ /** exchange routine. **/ /** **/ /** DATES : # Version 5.0 : from : 28 dec 2007 **/ /** to : 05 feb 2008 **/ /** # Version 5.1 : from : 28 aug 2008 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /* procsidtab-related values. */ #define DGRAPHGHSTSIDMAX ((int) ((unsigned int) (1 << (sizeof (int) * 8 - 1)) - 2U)) /* Maximum leap value for procsidtab entries */ /* ** The type and structure definitions. */ /* Sort structure for ghost edges. */ typedef struct DgraphHaloRequest_ { int flagval; #ifdef SCOTCH_PTHREAD Dgraph * grafptr; /* Pointer to graph data */ void * attrgsttab; /* Attribute array to share */ MPI_Datatype attrglbtype; /* Attribute datatype */ pthread_t thrdval; /* Data of asynchronous thread */ #else /* SCOTCH_PTHREAD */ #ifdef SCOTCH_MPI_ASYNC_COLL byte * attrsndtab; /* Group leader for memory freeing */ MPI_Request requval; /* MPI asynchronous communication request */ #endif /* SCOTCH_MPI_ASYNC_COLL */ #endif /* SCOTCH_PTHREAD */ } DgraphHaloRequest; /* ** The function prototypes. */ #ifdef DGRAPH_HALO #ifdef SCOTCH_PTHREAD static void * dgraphHaloAsync2 (DgraphHaloRequest * restrict); #endif /* SCOTCH_PTHREAD */ #endif /* DGRAPH_HALO */ void dgraphHaloAsync (Dgraph * restrict const, void * restrict const, const MPI_Datatype, DgraphHaloRequest * restrict); int dgraphHaloWait (DgraphHaloRequest * restrict); int dgraphHaloCheck (const Dgraph * restrict const); scotch_6.0.9/src/libscotch/wgraph.h0000644000302600021200000001235013465315041017462 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** Charles-Edmond BICHOT (5.1b) **/ /** **/ /** FUNCTION : This module contains the data declarat- **/ /** ions for the vertex overlapped graph **/ /** partitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ #define WGRAPH_H /* ** The type and structure definitions. */ /*+ The graph structure. +*/ #ifndef ARCH_H typedef INT Anum; /*+ Generic integer +*/ #endif /* ARCH_H */ typedef struct Wgraph_ { Graph s; /*+ Source graph +*/ Anum partnbr; /*+ Current number of parts +*/ Gnum fronnbr; /*+ Number of frontier vertices +*/ Gnum fronload; /*+ load for frontier +*/ Gnum * frontab; /*+ Array of frontier vertex numbers +*/ Gnum * compload; /*+ Array of part loads +*/ Gnum * compsize; /*+ Array of part number of vertives +*/ Anum * parttax; /*+ Part array; can be allocated separately +*/ Gnum levlnum; } Wgraph; /*+ The save graph structure. +*/ typedef struct WgraphStore_ { Anum partnbr; /*+ Number of parts +*/ Gnum fronnbr; /*+ Number of frontier vertices +*/ Gnum fronload; /*+ Frontier load +*/ byte * datatab; /*+ Variable-sized data array +*/ } WgraphStore; /*+ This structure stores part lists. +*/ typedef struct WgraphPartList_ { Gnum vertnum; /*+ Number of vertex of which part is neighbor +*/ Anum nextidx; /*+ Pointer to index of next recorded neighbor +*/ } WgraphPartList; /* ** The function prototypes. */ void wgraphInit (Wgraph * const, const Graph * restrict const, const Anum); void wgraphExit (Wgraph * const); int wgraphAlloc (Wgraph * const); void wgraphZero (Wgraph * const); int wgraphCheck (const Wgraph * const); int wgraphStoreInit (const Wgraph * const, WgraphStore * const); void wgraphStoreExit (WgraphStore * const); void wgraphStoreSave (const Wgraph * const, WgraphStore * const); void wgraphStoreUpdt (Wgraph * const, const WgraphStore * const); scotch_6.0.9/src/libscotch/library_dgraph_halo.c0000644000302600021200000001341513560013261022157 0ustar pelegrinpelegrin/* Copyright 2007,2009,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_halo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 17 jul 2007 **/ /** to 02 aug 2007 **/ /** # Version 5.1 : from : 02 jul 2008 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "dgraph_halo.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine requests the computation *** of the ghost edge array. *** It returns: *** - 0 : if the computation succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphGhst ( SCOTCH_Dgraph * const grafptr) { return (dgraphGhst ((Dgraph *) grafptr)); } /*+ This routine requests the computation of the *** ghost edge array in replacement of the global *** edge array. *** It returns: *** - 0 : if the computation succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphGhstReplace ( SCOTCH_Dgraph * const grafptr) { Dgraph * restrict srcgrafptr; /* Pointer to scotch graph */ DgraphFlag srcflagval; /* Graph properties */ int o; srcgrafptr = (Dgraph *) grafptr; srcflagval = srcgrafptr->flagval; srcgrafptr->flagval |= DGRAPHFREETABS; /* If edge array was not allocated internally, assume it was */ o = dgraphGhstReplace (srcgrafptr); srcgrafptr->flagval = (srcgrafptr->flagval & ~DGRAPHFREETABS) | srcflagval; /* Restore original allocation flag */ return (o); } /*+ This routine spreads local information *** borne by local vertices across the ghost *** vertices of the neighboring processes. *** It returns: *** - 0 : if the exchange succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphHalo ( SCOTCH_Dgraph * const grafptr, void * const datatab, const MPI_Datatype typeval) { return (dgraphHaloSync ((Dgraph *) grafptr, (byte *) datatab, typeval)); } /*+ This routine spreads local information *** borne by local vertices across the ghost *** vertices of the neighboring processes, in *** an asynchronous way. *** It returns: *** - 0 : if the exchange succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphHaloAsync ( SCOTCH_Dgraph * const grafptr, void * const datatab, const MPI_Datatype typeval, SCOTCH_DgraphHaloReq * const requptr) { dgraphHaloAsync ((Dgraph *) grafptr, (byte *) datatab, typeval, (DgraphHaloRequest *) requptr); return (0); } /*+ This routine waits for the termination of *** an asynchronous halo request. *** It returns: *** - 0 : if the exchange succeeded. *** - !0 : on error. +*/ int SCOTCH_dgraphHaloWait ( SCOTCH_DgraphHaloReq * const requptr) { return (dgraphHaloWait ((DgraphHaloRequest *) requptr)); } /*+ This routine reserves a memory area *** of a size sufficient to store a *** halo request structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_DgraphHaloReq * SCOTCH_dgraphHaloReqAlloc () { return ((SCOTCH_DgraphHaloReq *) memAlloc (sizeof (SCOTCH_DgraphHaloReq))); } scotch_6.0.9/src/libscotch/library_errcom.c0000644000302600021200000001230313560013261021171 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_errcom.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module redirects the errors **/ /** generated by the routines of the **/ /** libSCOTCH library to the standard **/ /** error processing routines. **/ /** **/ /** DATES : # Version 3.3 : from : 06 oct 1998 **/ /** to 13 oct 1998 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY_ERRCOM #ifndef SCOTCH_COMMON_EXTERNAL #define SCOTCH_COMMON_EXTERNAL /* Do not redefine errorPrint */ #endif /* SCOTCH_COMMON_EXTERNAL */ #include "module.h" #include "common.h" #include "scotch.h" /********************************/ /* */ /* The error handling routines. */ /* */ /********************************/ /* This routine prints an error message with ** a variable number of arguments, as printf () ** does, and exits. ** It returns: ** - EXIT : in all cases. */ void SCOTCH_errorPrint ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* Argument list of the call */ char errbuf[1024]; /* Error buffer */ va_start (errlist, errstr); /* Open variable-argument list */ #if ((defined X_ARCHi586_pc_linux2) || (defined X_ARCHi686_pc_linux2)) vsnprintf (errbuf, 1023, errstr, errlist); /* Write result to buffer */ #else vsprintf (errbuf, errstr, errlist); /* Write result to buffer */ #endif /* X_ARCHi586_pc_linux2 */ va_end (errlist); /* Close variable-argument list */ errbuf[1023] = '\0'; /* Set end of string */ errorPrint (errbuf); /* Print arguments */ exit (1); } /* This routine prints a warning message with ** a variable number of arguments, as printf () ** does. ** It returns: ** - VOID : in all cases. */ void SCOTCH_errorPrintW ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* Argument list of the call */ char errbuf[1024]; /* Error buffer */ va_start (errlist, errstr); /* Open variable-argument list */ #if ((defined X_ARCHi586_pc_linux2) || (defined X_ARCHi686_pc_linux2)) vsnprintf (errbuf, 1023, errstr, errlist); /* Write result to buffer */ #else vsprintf (errbuf, errstr, errlist); /* Write result to buffer */ #endif /* X_ARCHi586_pc_linux2 */ va_end (errlist); /* Close variable-argument list */ errbuf[1023] = '\0'; /* Set end of string */ errorPrintW (errbuf); /* Print arguments */ } scotch_6.0.9/src/libscotch/bgraph_bipart_df_loop.c0000644000302600021200000004020413560005346022472 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011-2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_df_loop.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a bipartition of **/ /** a bipartition graph by using a **/ /** diffusion scheme. **/ /** **/ /** NOTES : # This algorithm has been designed to **/ /** work on band graphs only, for which **/ /** the two anchor vertices are the two **/ /** last vertices, the before-last as **/ /** anchor of part 0, and the last as **/ /** anchor of part 1. **/ /** **/ /** DATES : # Version 5.0 : from : 09 jan 2007 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 29 oct 2007 **/ /** to 27 mar 2011 **/ /** # Version 6.0 : from : 07 nov 2011 **/ /** to : 03 jun 2018 **/ /** **/ /************************************************************/ /****************************/ /* */ /* The diffusion subroutine */ /* pattern. */ /* */ /****************************/ /* This routine computes the diffusion of two ** liquids on the given part of the bipartition ** graph. ** It returns: ** - void : in all cases */ static int BGRAPHBIPARTDFLOOPNAME ( BgraphBipartDfThread * restrict thrdptr) /* Thread-dependent data */ { float * restrict ielstax; /* Inverse of edge load sum array */ float * restrict difotax; /* Old diffusion value array */ float * restrict difntax; /* New diffusion value array */ Gnum vertnum; Gnum fronnum; Gnum compload1; Gnum compsize1; Gnum commloadintn; Gnum commloadextn; Gnum commgainextn; Gnum veexval; Gnum veexval1; /* Negative external gain to part 1 */ Gnum veexsum; Gnum veexsum1; /* Sum of negative external gains */ Gnum veloval; float velfval; INT passnum; Anum distval; BgraphBipartDfData * restrict const loopptr = (BgraphBipartDfData *) thrdptr->thrddat.grouptr; Bgraph * restrict const grafptr = loopptr->grafptr; const Gnum vertbas = thrdptr->vertbas; const Gnum vertnnd = thrdptr->vertnnd; const Gnum vancnnd = MIN (vertnnd, grafptr->s.vertnnd - 2); /* End of regular vertices */ const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const veextax = grafptr->veextax; GraphPart * restrict const parttax = grafptr->parttax; #ifdef BGRAPHBIPARTDFLOOPTHREAD const int thrdlst = loopptr->thrddat.thrdnbr - 1; #endif /* BGRAPHBIPARTDFLOOPTHREAD */ difotax = loopptr->difotax; difntax = loopptr->difntax; if ((ielstax = memAlloc ((vertnnd - vertbas) * sizeof (float))) == NULL) { /* Allocate here for memory affinity as it is a private array */ errorPrint (STRINGIFY (BGRAPHBIPARTDFLOOPNAME) ": out of memory"); #ifdef BGRAPHBIPARTDFLOOPTHREAD loopptr->abrtval = 1; #else /* BGRAPHBIPARTDFLOOPTHREAD */ return (1); #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } else { ielstax -= vertbas; /* Base access to local part of edge load sum array */ distval = grafptr->domndist; veexval = /* Assume no external gains */ veexval1 = 0; veexsum = veexsum1 = 0; for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) { /* Process all vertices, including anchors */ Gnum edlosum; if (edlotax == NULL) /* If graph doesn't have edge weights */ edlosum = vendtax[vertnum] - verttax[vertnum]; else { Gnum edgenum; Gnum edgennd; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum], edlosum = 0; edgenum < edgennd; edgenum ++) edlosum += edlotax[edgenum]; } edlosum *= distval; if (veextax != NULL) { veexval = veextax[vertnum]; veexval1 = veexval & BGRAPHBIPARTDFGNUMSGNMSK (veexval); /* Get negative external gain only, by superscalar update */ #ifdef SCOTCH_DEBUG_BGRAPH2 if (((veexval >= 0) && (veexval1 != 0)) || ((veexval < 0) && (veexval1 != veexval))) { errorPrint (STRINGIFY (BGRAPHBIPARTDFLOOPNAME) ": internal error"); #ifdef BGRAPHBIPARTDFLOOPTHREAD loopptr->abrtval = 1; #else /* BGRAPHBIPARTDFLOOPTHREAD */ return (1); #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } #endif /* SCOTCH_DEBUG_BGRAPH2 */ veexsum += veexval; /* Sum all external gains, positive and negative */ veexsum1 += veexval1; /* Sum all negative gains */ } difotax[vertnum] = 0.0; ielstax[vertnum] = 1.0F / (float) (edlosum + veexval - 2 * veexval1); /* Add absolute value of veexval */ } if (veextax != NULL) { #ifdef BGRAPHBIPARTDFLOOPTHREAD thrdptr->veexsum = veexsum; thrdptr->veexsum1 = veexsum1; threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) bgraphBipartDfReduceVeex, thrdlst); veexsum = thrdptr->veexsum; /* Will be useful for thread (thrdlst) only */ veexsum1 = thrdptr->veexsum1; if (thrdptr->thrddat.thrdnum == thrdlst) /* Last thread will handle anchors as root of reduction */ #endif /* BGRAPHBIPARTDFLOOPTHREAD */ { ielstax[vertnnd - 2] = 1.0F / (1.0F / ielstax[vertnnd - 2] + (float) (veexsum - veexsum1)); ielstax[vertnnd - 1] = 1.0F / (1.0F / ielstax[vertnnd - 1] - (float) veexsum1); } } #ifdef BGRAPHBIPARTDFLOOPTHREAD if (thrdptr->thrddat.thrdnum == thrdlst) /* Last thread will handle anchors as root of reduction */ #endif /* BGRAPHBIPARTDFLOOPTHREAD */ { difotax[vertnnd - 2] = loopptr->vanctab[0] * ielstax[vertnnd - 2]; /* Load anchor vertices for first pass */ difotax[vertnnd - 1] = loopptr->vanctab[1] * ielstax[vertnnd - 1]; } } #ifdef BGRAPHBIPARTDFLOOPTHREAD threadBarrier (thrdptr); /* Wait until all array values have been computed */ if (loopptr->abrtval == 1) { /* If process alone or some decided to quit */ if (ielstax != NULL) /* Free local array if necessary */ memFree (ielstax + vertbas); return (1); } #endif /* BGRAPHBIPARTDFLOOPTHREAD */ velfval = 1.0F; /* Assume no vertex loads */ for (passnum = loopptr->passnbr; passnum > 0; passnum --) { /* For all passes */ Gnum vertnum; Gnum vancnnt; float vancval; /* Value to load vertex with if anchor */ float * difttax; /* Temporary swap value */ float vancold0 = difotax[grafptr->s.vertnnd - 2]; /* Get for all threads */ float vancold1 = difotax[grafptr->s.vertnnd - 1]; float vancval0; /* External gain contributions from regular vertices to anchors */ float vancval1; vancval0 = vancval1 = 0.0F; vancval = 0.0F; /* At first vertices are not anchors */ vertnum = vertbas; /* Start processing regular vertices, then see */ vancnnt = vancnnd; /* Loop until end of (regular) vertex block */ while (1) { for ( ; vertnum < vancnnt; vertnum ++) { Gnum edgenum; Gnum edgennd; float diffval; edgenum = verttax[vertnum]; edgennd = vendtax[vertnum]; diffval = 0.0F; if (edlotax != NULL) for ( ; edgenum < edgennd; edgenum ++) diffval += difotax[edgetax[edgenum]] * (float) edlotax[edgenum]; else for ( ; edgenum < edgennd; edgenum ++) diffval += difotax[edgetax[edgenum]]; diffval *= (float) distval; if (veextax != NULL) { Gnum veexval; veexval = veextax[vertnum]; if (veexval != 0) { float veextmp; float vanctmp; veextmp = (float) veexval; vanctmp = veextmp * difotax[vertnum]; if (veexval > 0) { /* If external gain links to part 0 */ diffval += veextmp * vancold0; /* Spread contribution from anchor 0 */ vancval0 += vanctmp; } else { /* If external gain links to part 1 */ diffval -= veextmp * vancold1; /* Take opposite of negative value */ vancval1 -= vanctmp; } } } diffval += vancval; /* Add anchor contribution if anchor vertex */ if (velotax != NULL) velfval = (float) velotax[vertnum]; if (diffval >= 0.0F) { diffval -= velfval; if (diffval <= 0.0F) diffval = +BGRAPHBIPARTDFEPSILON; } else { diffval += velfval; if (diffval >= 0.0F) diffval = -BGRAPHBIPARTDFEPSILON; } if (isnan (diffval)) { /* If overflow occured (because of avalanche process) */ #ifdef SCOTCH_DEBUG_BGRAPH2 errorPrintW (STRINGIFY (BGRAPHBIPARTDFLOOPNAME) ": overflow"); #endif /* SCOTCH_DEBUG_BGRAPH2 */ #ifdef BGRAPHBIPARTDFLOOPTHREAD loopptr->abrtval = 1; /* Threads need to halt */ vertnum = vancnnt; /* Skip regular computations but synchronize */ #else /* BGRAPHBIPARTDFLOOPTHREAD */ goto abort; /* Exit this loop without swapping arrays */ #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } difntax[vertnum] = diffval * ielstax[vertnum]; } if (vertnum == vancnnd) { /* If first time we reach the end of regular vertices */ thrdptr->vanctab[0] = vancval0; thrdptr->vanctab[1] = vancval1; #ifdef BGRAPHBIPARTDFLOOPTHREAD if (veextax != NULL) threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) bgraphBipartDfReduceVanc, thrdlst); #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } if (vertnum >= vertnnd) /* If all vertices processed in range array, exit intermediate infinite loop */ break; vancnnt ++; /* Prepare to go only for one more run, to be done twice */ vancval = loopptr->vanctab[vertnum - vancnnd] + thrdptr->vanctab[vertnum - vancnnd]; /* Load variable with anchor value */ } difttax = (float *) difntax; /* Swap old and new diffusion arrays */ difntax = (float *) difotax; /* Casts to prevent IBM compiler from yelling */ difotax = (float *) difttax; #ifdef BGRAPHBIPARTDFLOOPTHREAD threadBarrier (thrdptr); if (loopptr->abrtval == 1) { /* If all threads need to abort */ difotax = (float *) difntax; /* Roll-back to keep last valid array */ break; } #endif /* BGRAPHBIPARTDFLOOPTHREAD */ } #ifndef BGRAPHBIPARTDFLOOPTHREAD abort : ; #endif /* BGRAPHBIPARTDFLOOPTHREAD */ for (vertnum = vertbas; vertnum < vertnnd; vertnum ++) /* Update part according to diffusion state */ parttax[vertnum] = (difotax[vertnum] <= 0.0F) ? 0 : 1; #ifdef BGRAPHBIPARTDFLOOPTHREAD threadBarrier (thrdptr); #endif /* BGRAPHBIPARTDFLOOPTHREAD */ veloval = 1; veexval = 0; for (vertnum = vertbas, fronnum = vertbas - grafptr->s.baseval, commloadextn = commgainextn = commloadintn = compload1 = compsize1 = 0; vertnum < vertnnd; vertnum ++) { Gnum edgenum; Gnum partval; Gnum commload; /* Vertex internal communication load */ partval = (Gnum) parttax[vertnum]; if (velotax != NULL) veloval = velotax[vertnum]; if (veextax != NULL) veexval = veextax[vertnum]; compsize1 += partval; compload1 += partval * veloval; commloadextn += partval * veexval; commgainextn += (1 - 2 * partval) * veexval; commload = 0; if (edlotax != NULL) { for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum partend; partend = (Gnum) parttax[edgetax[edgenum]]; commload += (partval ^ partend) * edlotax[edgenum]; } } else { for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) commload += partval ^ (Gnum) parttax[edgetax[edgenum]]; } commloadintn += commload; /* Internal loads will be added twice */ if (commload != 0) /* If end vertex is in the other part */ grafptr->frontab[fronnum ++] = vertnum; /* Then it belongs to the frontier */ } thrdptr->fronnnd = fronnum; /* Save state */ thrdptr->compload1 = compload1; thrdptr->compsize1 = compsize1; thrdptr->commloadextn = commloadextn; thrdptr->commloadintn = commloadintn; thrdptr->commgainextn = commgainextn; memFree (ielstax + vertbas); /* Free local part of (local part of) edge load sum array */ return (0); } scotch_6.0.9/src/libscotch/hmesh.h0000644000302600021200000001334013465315041017276 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the halo mesh **/ /** structure. **/ /** **/ /** DATES : # Version 4.0 : from : 31 dec 2001 **/ /** to 29 apr 2004 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Halo mesh structure. Only node vertices can be halo vertices, not element vertices. Halo node vertices are numbered with the highest available node numbers. Since un-haloing of a mesh should be costless, and since the vertex array must be continuous, when a halo mesh indeed bears halo nodes, it is preferrable that elements be numbered first, then non-halo node vertices, then halo vertices, so that the removal of the halo does not create holes in the vertex array. Else, the indices of the halo nodes must be reassigned to empty elements, which results in a larger structure until it is coarsened or induced. If no halo is present, the order of nodes and elements is not relevant. As for the halo graph structure, in the adjacency list of elements, halo node neighbors must all be put after non-halo node neighbors, so that the edge sub-array comprised between verttab[i] and vnhdtab[i] refer only to non-halo node neighbors, such that edgetab can be re-used by the un-halo-ed mesh. Since Hmesh halo meshes are used only for node ordering, the velotab and vnumtab arrays that are created by hmesh*() routines can be restricted to their node part. It must be guaranteed that this does not create problems at freeing time, for instance by grouping these arrays with verttab. +*/ typedef struct Hmesh_ { Mesh m; /*+ Source mesh +*/ Gnum * restrict vehdtax; /*+ End vertex array for elements [based] (non-halo nodes look at m.vendtax) +*/ Gnum veihnbr; /*+ Number of halo isolated element vertices, which have halo nodes only +*/ Gnum vnohnbr; /*+ Number of non-halo node vertices +*/ Gnum vnohnnd; /*+ Based number of first halo node vertex in mesh graph (m.vnodnnd if none) +*/ Gnum vnhlsum; /*+ Sum of non-halo node vertex weights +*/ Gnum enohnbr; /*+ Number of non-halo edges +*/ Gnum levlnum; /*+ Nested dissection level +*/ } Hmesh; /* ** The function prototypes. */ void hmeshExit (Hmesh * const); Gnum hmeshBase (Hmesh * const, const Gnum); #ifdef HGRAPH_H int hmeshHgraph (const Hmesh * restrict const, Hgraph * restrict const); #endif /* HGRAPH_H */ int hmeshInducePart (const Hmesh * const, const GraphPart * const, const GraphPart, const Gnum, const Gnum, const Gnum, Hmesh * const); int hmeshMesh (const Hmesh * restrict const, Mesh * restrict const); int hmeshCheck (const Hmesh *); scotch_6.0.9/src/libscotch/vgraph_separate_es.c0000644000302600021200000010353213470115365022035 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_es.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a matrix ordering software. **/ /** This module computes the node separator **/ /** of a graph based on the edge-separation **/ /** module of "bgraph_bipart_st.c". **/ /** **/ /** DATES : # Version 3.2 : from : 17 oct 1996 **/ /** to : 07 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 18 aug 2004 **/ /** to 20 aug 2004 **/ /** # Version 5.0 : from : 24 jan 2007 **/ /** to 12 sep 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** **/ /** NOTES : # This algorithm comes from: **/ /** "Computing the Block Triangular form **/ /** of a Sparse Matrix", A. Pothen and **/ /** C.-J. Fan, ACM Trans. on Mathematical **/ /** Software, 16 (4), pp 303-324, 1990. **/ /** and from: **/ /** "Implementations of $O(n^{1/2}\tau)$ **/ /** assignment algorithms", I. Duff and **/ /** T. Wieberg, ACM Trans. on Math. **/ /** Software, 4, pp 267-287, 1988. **/ /** **/ /** # The choice of the separator to take, **/ /** either HR u SC u VC or HR u SR u VC, **/ /** is made regarding the size of the **/ /** separator only, irrespective of its **/ /** balance. This choice is made because **/ /** else an imbalance ratio should be **/ /** provided for this method, and because **/ /** it is assumed that the edge biparti- **/ /** tioning method is assumed to have **/ /** reached suitable balance. When they **/ /** are equal, the choice is biased **/ /** towards SR, because the xC block is **/ /** the one which has less vertices so **/ /** removing more separator vertices from **/ /** it would mean increasing imbalance. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_ES #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "vgraph.h" #include "vgraph_separate_es.h" /*********************************************/ /* */ /* These routines compute a vertex separator */ /* from an edge separator represented as a */ /* bipartite graph, by minimum covering. */ /* */ /*********************************************/ /* This routine computes a vertex separator ** from an edge separator represented as a ** bipartite graph, by minimum covering. ** It returns: ** - 0 : if a separator could be computed. ** - !0 : on error. */ static int vgraphSeparateEsCover ( const Graph * restrict const grafptr, /* Bipartite graph to cover */ const Gnum partnbr, /* Number of vertices in first part */ Gnum * const sepatab, /* Array of covering vertices */ Gnum * const sepaptr) /* Pointer to size of the array */ { Gnum * restrict levltax; /* Array of vertex level values */ Gnum levlmax; /* Maximum level searched */ Gnum * restrict listtab; /* List of reachable augmenting rows */ Gnum listnbr; /* Number of items in list */ Gnum * restrict matetax; /* Matching array */ Gnum * queutab; /* Queue of (free) column nodes */ Gnum * restrict queuhead; /* Head of queue */ Gnum * restrict queutail; /* Tail of queue */ VgraphSeparateEsTrav * restrict travtax; /* Array of traversal flag values */ VgraphSeparateEsType * restrict typetax; /* Vertex type in the graph */ Gnum loadcval; /* Load of subset (HR u SC u VC) */ Gnum loadrval; /* Load of subset (HR u SR u VC) */ Gnum sizecval; /* Load of subset (HR u SC u VC) */ Gnum sizerval; /* Load of subset (HR u SR u VC) */ Gnum vertnum; #ifdef SCOTCH_DEBUG_VGRAPH2 if (sizeof (VgraphSeparateEsType) > sizeof (VgraphSeparateEsTrav)) { /* Assert next trick will work */ errorPrint ("vgraphSeparateEsCover: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (memAllocGroup ((void **) (void *) &travtax, (size_t) (grafptr->vertnbr * sizeof (VgraphSeparateEsTrav)), /* TRICK: VgraphSeparateEsType should also fit */ &matetax, (size_t) (grafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vgraphSeparateEsCover: out of memory (1)"); return (1); } if (memAllocGroup ((void **) (void *) &queutab, (size_t) (partnbr * sizeof (Gnum)), &levltax, (size_t) (grafptr->vertnbr * sizeof (Gnum)), &listtab, (size_t) (grafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vgraphSeparateEsCover: out of memory (2)"); memFree (travtax); /* Not based yet */ return (1); } travtax -= grafptr->baseval; matetax -= grafptr->baseval; levltax -= grafptr->baseval; memSet (matetax + (partnbr + grafptr->baseval), ~0, (grafptr->vertnbr - partnbr) * sizeof (Gnum)); for (vertnum = grafptr->baseval; /* Compute a cheap matching */ vertnum < (partnbr + grafptr->baseval); vertnum ++) { Gnum edgenum; Gnum matenum; for (edgenum = grafptr->verttax[vertnum], matenum = ~0; /* Search a matching end vertex */ edgenum < grafptr->vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = grafptr->edgetax[edgenum]; if (matetax[vertend] == ~0) { /* If an unmatched end vertex is found */ matenum = vertend; matetax[vertend] = vertnum; break; } } matetax[vertnum] = matenum; } do { /* Matching augmentation loop */ queuhead = /* Flush the data structures */ queutail = queutab; listnbr = 0; memSet (levltax + grafptr->baseval, 0, grafptr->vertnbr * sizeof (Gnum)); memSet (travtax + grafptr->baseval, 0, grafptr->vertnbr * sizeof (VgraphSeparateEsTrav)); levlmax = ~0; for (vertnum = grafptr->baseval; /* Enqueue unmatched column nodes */ vertnum < (partnbr + grafptr->baseval); vertnum ++) { if (matetax[vertnum] == ~0) { *queuhead ++ = vertnum; levltax[vertnum] = 1; } } while (queuhead > queutail) { /* As long as there are free columns */ Gnum vertcol; vertcol = *queutail ++; /* Get the free column vertex */ if (levltax[vertcol] < levlmax) { Gnum edgenum; travtax[vertcol] = VGRAPHSEPAESTRAVUSED; /* Column has been reached */ for (edgenum = grafptr->verttax[vertcol]; /* For all neighboring rows */ edgenum < grafptr->vendtax[vertcol]; edgenum ++) { Gnum vertrow; vertrow = grafptr->edgetax[edgenum]; if (travtax[vertrow] == VGRAPHSEPAESTRAVFREE) { /* If row not yet reached yet */ travtax[vertrow] = VGRAPHSEPAESTRAVUSED; /* Now it is */ if (matetax[vertrow] == ~0) { /* If row is unmatched */ listtab[listnbr ++] = vertrow; /* Put it in list */ levlmax = levltax[vertcol]; /* Do not go any further */ } else { /* Row is matched */ *queuhead ++ = matetax[vertrow]; /* Enqueue its matching column */ levltax[matetax[vertrow]] = levltax[vertcol] + 1; } } } } } if (listnbr <= 0) /* If no free rows could be reached */ break; /* Then the matching is maximal */ while (-- listnbr >= 0) /* For all rows in list, try to augment the matching */ vgraphSeparateEsCoverAugment (levltax, levlmax, matetax, travtax, grafptr->verttax, grafptr->vendtax, grafptr->edgetax, listtab[listnbr]); } while (1); memFree (queutab); /* Free group leader of arrays no longer in use */ typetax = (VgraphSeparateEsType *) travtax; /* TRICK: re-use traversal table as type table */ for (vertnum = grafptr->baseval; vertnum < (partnbr + grafptr->baseval); vertnum ++) /* Pre-set vertex types */ typetax[vertnum] = VGRAPHSEPAESTYPESC; for ( ; vertnum < grafptr->vertnnd; vertnum ++) typetax[vertnum] = VGRAPHSEPAESTYPESR; for (vertnum = grafptr->baseval; vertnum < (partnbr + grafptr->baseval); vertnum ++) /* For all column vertices */ if (matetax[vertnum] == ~0) /* If vertex is unmatched */ vgraphSeparateEsCoverCol (matetax, typetax, grafptr->verttax, grafptr->vendtax, grafptr->edgetax, vertnum); /* Find HC and HR */ for ( ; vertnum < grafptr->vertnnd; vertnum ++) /* For all row vertices */ if (matetax[vertnum] == ~0) /* If vertex is unmatched */ vgraphSeparateEsCoverRow (matetax, typetax, grafptr->verttax, grafptr->vendtax, grafptr->edgetax, vertnum); /* Find VC and VR */ sizecval = /* Reset sizes */ sizerval = 0; if (grafptr->velotax != NULL) { /* If graph vertices are weighted */ Gnum vertnum; loadcval = /* Reset loads */ loadrval = 0; for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { /* Accumulate loads */ VgraphSeparateEsType typeval; Gnum veloval; Gnum bitcval; Gnum bitrval; typeval = typetax[vertnum]; veloval = grafptr->velotax[vertnum]; bitcval = (typeval >> VGRAPHSEPAESTYPEBITC) & 1; bitrval = typeval >> VGRAPHSEPAESTYPEBITR; /* TRICK: highest bit so does not need mask */ loadcval += bitcval * veloval; /* Superscalar update */ loadrval += bitrval * veloval; sizecval += bitcval; sizerval += bitrval; } } else { /* Graph vertices are not weighted */ Gnum vertnum; for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { /* Accumulate vertex sizes */ sizecval += (typetax[vertnum] >> VGRAPHSEPAESTYPEBITC) & 1; /* Superscalar update */ sizerval += typetax[vertnum] >> VGRAPHSEPAESTYPEBITR; /* TRICK: highest bit so does not need mask */ } loadcval = sizecval; /* Loads equal sizes */ loadrval = sizerval; } if (loadcval < loadrval) { /* If separator with SC is smaller */ Gnum vertnum; Gnum sepanum; *sepaptr = sizecval; for (vertnum = grafptr->baseval, sepanum = 0; vertnum < grafptr->vertnnd; vertnum ++) { if ((typetax[vertnum] & VGRAPHSEPAESTYPEHRSCVC) != 0) { #ifdef SCOTCH_DEBUG_VGRAPH2 if ((sepanum >= sizecval) || ((typetax[vertnum] != VGRAPHSEPAESTYPEHR) && (typetax[vertnum] != VGRAPHSEPAESTYPESC) && (typetax[vertnum] != VGRAPHSEPAESTYPEVC))) { errorPrint ("vgraphSeparateEsCover: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ sepatab[sepanum ++] = vertnum; } } #ifdef SCOTCH_DEBUG_VGRAPH2 if (sepanum != sizecval) { errorPrint ("vgraphSeparateEsCover: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ } else { /* If separator with SR is smaller */ Gnum vertnum; Gnum sepanum; *sepaptr = sizerval; for (vertnum = grafptr->baseval, sepanum = 0; vertnum < grafptr->vertnnd; vertnum ++) { if ((typetax[vertnum] & VGRAPHSEPAESTYPEHRSRVC) != 0) { #ifdef SCOTCH_DEBUG_VGRAPH2 if ((sepanum >= sizerval) || ((typetax[vertnum] != VGRAPHSEPAESTYPEHR) && (typetax[vertnum] != VGRAPHSEPAESTYPESR) && (typetax[vertnum] != VGRAPHSEPAESTYPEVC))) { errorPrint ("vgraphSeparateEsCover: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ sepatab[sepanum ++] = vertnum; } } #ifdef SCOTCH_DEBUG_VGRAPH2 if (sepanum != sizerval) { errorPrint ("vgraphSeparateEsCover: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ } memFree (travtax + grafptr->baseval); /* Free group leader of remaining arrays */ return (0); } /* This routine augments the current matching ** by performing a backtracking depth-first ** search from a free row vertex to a free ** column vertex, guided by the level values. ** It returns: ** - 0 : backtracking succeeded. ** - !0 : could not find a valid return path. */ static int vgraphSeparateEsCoverAugment ( const Gnum * restrict const levltax, const Gnum levlcur, /* Current backtracking level */ Gnum * restrict const matetax, VgraphSeparateEsTrav * restrict const travtax, const Gnum * restrict const verttax, const Gnum * restrict const vendtax, const Gnum * restrict const edgetax, const Gnum vertrow) /* Row vertex to backtrack from */ { Gnum edgenum; travtax[vertrow] = VGRAPHSEPAESTRAVDRTY; /* Never re-use this row */ for (edgenum = verttax[vertrow]; edgenum < vendtax[vertrow]; edgenum ++) { Gnum vertcol; vertcol = edgetax[edgenum]; /* Get column vertex */ if ((travtax[vertcol] == VGRAPHSEPAESTRAVUSED) && /* If this column may be a backtracking path */ (levltax[vertcol] == levlcur)) { /* At the proper distance from a free column */ travtax[vertcol] = VGRAPHSEPAESTRAVDRTY; /* Never re-use this column */ if ((levlcur == 1) || /* If we have (recursively) reached a free column vertex */ (vgraphSeparateEsCoverAugment (levltax, levlcur - 1, matetax, travtax, verttax, vendtax, edgetax, matetax[vertcol]) == 0)) { matetax[vertcol] = vertrow; /* Switch the edges of the augmenting path */ matetax[vertrow] = vertcol; return (0); /* Backtracking process is under way */ } } } return (1); /* No improvement could be done */ } /* Starting from unmatched column and row vertices, ** these routines perform depth-first traversals of ** the bipartite graph, following alternating paths. ** It is assumed that the matchings are sufficently ** large, so that the depth of the trees is small ** and the stack will not overflow. ** They return: ** - VOID : in all cases. */ static void vgraphSeparateEsCoverCol ( const Gnum * restrict const matetax, VgraphSeparateEsType * restrict const typetax, const Gnum * restrict const verttax, const Gnum * restrict const vendtax, const Gnum * restrict const edgetax, const Gnum vertcol) /* Column vertex index */ { Gnum edgenum; if (typetax[vertcol] == VGRAPHSEPAESTYPEHC) /* If vertex already traversed */ return; typetax[vertcol] = VGRAPHSEPAESTYPEHC; for (edgenum = verttax[vertcol]; edgenum < vendtax[vertcol]; edgenum ++) { Gnum vertrow; vertrow = edgetax[edgenum]; if (typetax[vertrow] == VGRAPHSEPAESTYPEHR) /* If end vertex already traversed */ continue; /* Skip to next vertex */ typetax[vertrow] = VGRAPHSEPAESTYPEHR; if (matetax[vertrow] != ~0) /* If end vertex matched */ vgraphSeparateEsCoverCol (matetax, typetax, verttax, vendtax, edgetax, matetax[vertrow]); } } static void vgraphSeparateEsCoverRow ( const Gnum * restrict const matetax, VgraphSeparateEsType * restrict const typetax, const Gnum * restrict const verttax, const Gnum * restrict const vendtax, const Gnum * restrict const edgetax, const Gnum vertrow) /* Row vertex index */ { Gnum edgenum; if (typetax[vertrow] == VGRAPHSEPAESTYPEVR) /* If vertex already traversed */ return; typetax[vertrow] = VGRAPHSEPAESTYPEVR; for (edgenum = verttax[vertrow]; edgenum < vendtax[vertrow]; edgenum ++) { Gnum vertcol; vertcol = edgetax[edgenum]; if (typetax[vertcol] == VGRAPHSEPAESTYPEVC) /* If end vertex already traversed */ continue; /* Skip to next vertex */ typetax[vertcol] = VGRAPHSEPAESTYPEVC; if (matetax[vertcol] != ~0) /* If end vertex matched */ vgraphSeparateEsCoverRow (matetax, typetax, verttax, vendtax, edgetax, matetax[vertcol]); } } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine separates the given graph by first ** computing an edge separator, according to the ** given bipartitioning strategy, and then turning ** it into a vertex separator. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int vgraphSeparateEs ( Vgraph * restrict const grafptr, /*+ Active graph +*/ const VgraphSeparateEsParam * const paraptr) /*+ Method parameters +*/ { Bgraph actgrafdat; /* Active graph structure */ Graph bipgrafdat; /* Bipartite graph structure */ actgrafdat.s = grafptr->s; /* Initialize active graph */ actgrafdat.s.flagval = grafptr->s.flagval & ~(GRAPHFREETABS | BGRAPHFREEPART | BGRAPHFREEFRON); actgrafdat.s.vnumtax = NULL; actgrafdat.s.vlbltax = NULL; actgrafdat.veextax = NULL; /* No external gains */ actgrafdat.parttax = grafptr->parttax; /* Inherit arrays from vertex separation graph */ actgrafdat.frontab = grafptr->frontab; bgraphInit2 (&actgrafdat, 1, 1, 1, 0, 0); /* Complete initialization and set all vertices to part 0 */ if (bgraphBipartSt (&actgrafdat, paraptr->strat) != 0) { /* Bipartition active subgraph */ errorPrint ("vgraphSeparateEs: cannot bipartition active graph"); return (1); } grafptr->compload[0] = actgrafdat.compload0; /* Reset vertex counts */ grafptr->compload[1] = actgrafdat.s.velosum - actgrafdat.compload0; grafptr->compsize[0] = actgrafdat.compsize0; grafptr->compsize[1] = actgrafdat.s.vertnbr - actgrafdat.compsize0; if (actgrafdat.fronnbr > 0) { /* If edge separator is not empty */ if (paraptr->widtval == VGRAPHSEPAESWIDTHTHIN) { /* If thin vertex separator wanted */ Gnum * restrict actvnumtax; Gnum actfronnum; Gnum bipvelosum; Gnum bipedgenbr; /* Number of edges in bipartite graph (i.e. arcs) */ Gnum bipedgenbr0; /* Number of edges adjacent to part 0 */ Gnum bipedgenbr1; /* Number of edges adjacent to part 1 */ Gnum bipvertnbr0; /* Number of vertices in part 0 */ Gnum bipvertnbr1; /* Number of vertices in part 1 */ Gnum bipvertnbrp; /* Number of vertices in part put in first place */ Gnum bippartval; /* Part of bipartite graph to be put in first place */ Gnum compsizep; /* Number of vertices to be removed from part p */ Gnum compload01; /* Load of vertices to be removed from both parts */ Gnum comploadp; /* Load of vertices to be removed from part p */ if ((actvnumtax = (Gnum *) memAlloc (actgrafdat.s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("vgraphSeparateEs: out of memory (1)"); return (1); } #ifdef SCOTCH_DEBUG_VGRAPH2 memSet (actvnumtax, ~0, actgrafdat.s.vertnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_VGRAPH2 */ actvnumtax -= actgrafdat.s.baseval; bipedgenbr = 0; /* Initialize bipartite graph counts */ bipvertnbr0 = bipvertnbr1 = 0; for (actfronnum = 0; actfronnum < actgrafdat.fronnbr; actfronnum ++) { /* For all frontier vertices */ Gnum actvertnum; int actpartval; Gnum actedgenum; actvertnum = grafptr->frontab[actfronnum]; actpartval = grafptr->parttax[actvertnum]; if (actpartval == 0) { /* Count separator edges only for nodes of one side and multply by 2 */ for (actedgenum = actgrafdat.s.verttax[actvertnum]; actedgenum < actgrafdat.s.vendtax[actvertnum]; actedgenum ++) bipedgenbr += (actpartval ^ grafptr->parttax[actgrafdat.s.edgetax[actedgenum]]); } actvnumtax[actvertnum] = actpartval * (bipvertnbr1 - bipvertnbr0) + bipvertnbr0; /* Count and number separator vertices on each side */ bipvertnbr0 += actpartval ^ 1; /* Superscalar update */ bipvertnbr1 += actpartval; } bipedgenbr *= 2; /* Count both sides of arcs */ bipgrafdat.flagval = GRAPHFREEVERT | GRAPHVERTGROUP; /* Initialize bipartite graph structure */ bipgrafdat.baseval = 0; /* Base bipartite graph from 0 */ bipgrafdat.vertnbr = bipgrafdat.vertnnd = bipvertnbr0 + bipvertnbr1; if (memAllocGroup ((void **) (void *) &bipgrafdat.verttax, (size_t) ((bipgrafdat.vertnbr + 1) * sizeof (Gnum)), &bipgrafdat.velotax, (size_t) ((actgrafdat.s.velotax != NULL) ? (bipgrafdat.vertnbr * sizeof (Gnum)) : 0), &bipgrafdat.vnumtax, (size_t) (bipgrafdat.vertnbr * sizeof (Gnum)), &bipgrafdat.edgetax, (size_t) (bipedgenbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vgraphSeparateEs: out of memory (2)"); memFree (actvnumtax + actgrafdat.s.baseval); return (1); } bipgrafdat.vendtax = bipgrafdat.verttax + 1; if (actgrafdat.s.velotax == NULL) bipgrafdat.velotax = NULL; bipgrafdat.vlbltax = NULL; bipgrafdat.edgenbr = bipedgenbr; bipgrafdat.edlotax = NULL; bipgrafdat.edlosum = bipedgenbr; bipgrafdat.degrmax = grafptr->s.degrmax; bippartval = (bipvertnbr0 <= bipvertnbr1) ? 0 : 1; /* Select smallest part to be placed first */ if (bippartval == 0) { bipvertnbrp = bipvertnbr0; bipedgenbr0 = 0; bipedgenbr1 = bipedgenbr / 2; } else { bipvertnbrp = bipvertnbr1; bipedgenbr0 = bipedgenbr / 2; bipedgenbr1 = 0; } bipvelosum = 0; for (actfronnum = 0; actfronnum < actgrafdat.fronnbr; actfronnum ++) { /* For all frontier vertices */ Gnum actvertnum; int actpartval; Gnum bipvertnum; Gnum actedgenum; actvertnum = grafptr->frontab[actfronnum]; actpartval = grafptr->parttax[actvertnum]; bipvertnum = (actpartval ^ bippartval) * bipvertnbrp + actvnumtax[actvertnum]; if (bipgrafdat.velotax != NULL) { Gnum actveloval; actveloval = actgrafdat.s.velotax[actvertnum]; bipvelosum += actveloval; bipgrafdat.velotax[bipvertnum] = actveloval; } bipgrafdat.vnumtax[bipvertnum] = actvertnum; bipgrafdat.verttax[bipvertnum] = actpartval * (bipedgenbr1 - bipedgenbr0) + bipedgenbr0; for (actedgenum = actgrafdat.s.verttax[actvertnum]; /* Count separator edges */ actedgenum < actgrafdat.s.vendtax[actvertnum]; actedgenum ++) { Gnum actvertend; int actpartend; actvertend = actgrafdat.s.edgetax[actedgenum]; actpartend = grafptr->parttax[actvertend]; if (actpartend != actpartval) { Gnum bipedgenum; #ifdef SCOTCH_DEBUG_VGRAPH2 if (actvnumtax[actvertend] == ~0) { errorPrint ("vgraphSeparateEs: internal error (1)"); graphExit (&bipgrafdat); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bipedgenum = actpartval * (bipedgenbr1 - bipedgenbr0) + bipedgenbr0; bipedgenbr0 += actpartval ^ 1; /* Superscalar update */ bipedgenbr1 += actpartval; bipgrafdat.edgetax[bipedgenum] = actvnumtax[actvertend] + (actpartend ^ bippartval) * bipvertnbrp; } } } bipgrafdat.verttax[bipgrafdat.vertnbr] = bipgrafdat.edgenbr; bipgrafdat.velosum = (bipgrafdat.velotax != NULL) ? bipvelosum : bipgrafdat.vertnbr; memFree (actvnumtax + actgrafdat.s.baseval); #ifdef SCOTCH_DEBUG_VGRAPH2 if (((bipedgenbr0 - bipedgenbr1) * bippartval + bipedgenbr1) != bipgrafdat.edgenbr) { errorPrint ("vgraphSeparateEs: internal error (2)"); graphExit (&bipgrafdat); return (1); } if (graphCheck (&bipgrafdat) != 0) { errorPrint ("vgraphSeparateEs: internal error (3)"); graphExit (&bipgrafdat); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (vgraphSeparateEsCover (&bipgrafdat, bipvertnbrp, grafptr->frontab, &grafptr->fronnbr) != 0) { errorPrint ("vgraphSeparateEs: cannot compute cover"); graphExit (&bipgrafdat); return (1); } compsizep = 0; if (actgrafdat.s.velotax != NULL) { /* If vertices are weighted */ Gnum fronnum; compload01 = comploadp = 0; for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { Gnum bipvertnum; Gnum actvertnum; Gnum actveloval; bipvertnum = grafptr->frontab[fronnum]; actvertnum = bipgrafdat.vnumtax[bipvertnum]; actveloval = actgrafdat.s.velotax[actvertnum]; grafptr->frontab[fronnum] = actvertnum; /* Express vertices with respect to original graph */ grafptr->parttax[actvertnum] = 2; /* Write separator part for global renumbering */ compload01 += actveloval; if (bipvertnum < bipvertnbrp) { /* Update separator vertices */ compsizep ++; /* Superscalar update */ comploadp += actveloval; } } } else { /* Vertices are not weighted */ Gnum fronnum; for (fronnum = 0; fronnum < grafptr->fronnbr; fronnum ++) { Gnum bipvertnum; Gnum actvertnum; bipvertnum = grafptr->frontab[fronnum]; actvertnum = bipgrafdat.vnumtax[bipvertnum]; grafptr->frontab[fronnum] = actvertnum; /* Express vertices with respect to original graph */ grafptr->parttax[actvertnum] = 2; /* Write separator part for global renumbering */ if (bipvertnum < bipvertnbrp) /* Update separator vertices */ compsizep ++; /* Superscalar update */ } compload01 = grafptr->fronnbr; /* Loads are equivalent to sizes */ comploadp = compsizep; } grafptr->compsize[bippartval] -= compsizep; grafptr->compsize[bippartval ^ 1] -= grafptr->fronnbr - compsizep; grafptr->compload[bippartval] -= comploadp; grafptr->compload[bippartval ^ 1] -= compload01 - comploadp; graphExit (&bipgrafdat); } else { /* Fat separator wanted */ Gnum compsize1; /* Number of vertices to be removed from part 1 */ Gnum compload01; /* Load of vertices to be removed from both parts */ Gnum compload1; /* Load of vertices to be removed from part 1 */ compsize1 = 0; grafptr->fronnbr = actgrafdat.fronnbr; /* Keep separator as is */ if (actgrafdat.s.velotax != NULL) { /* If vertices are weighted */ Gnum fronnum; compload01 = compload1 = 0; for (fronnum = 0; fronnum < actgrafdat.fronnbr; fronnum ++) { Gnum vertnum; Gnum veloval; int partval; vertnum = grafptr->frontab[fronnum]; partval = grafptr->parttax[vertnum]; veloval = grafptr->s.velotax[vertnum]; compsize1 += partval; /* Superscalar update */ compload01 += veloval; compload1 += partval * veloval; grafptr->parttax[vertnum] = 2; /* Write separator part for global renumbering */ } } else { /* Vertices are not weighted */ Gnum fronnum; for (fronnum = 0; fronnum < actgrafdat.fronnbr; fronnum ++) { Gnum vertnum; int partval; vertnum = grafptr->frontab[fronnum]; partval = grafptr->parttax[vertnum]; compsize1 += partval; grafptr->parttax[vertnum] = 2; /* Write separator part for global renumbering */ } compload01 = actgrafdat.fronnbr; /* Loads are equivalent to sizes */ compload1 = compsize1; } grafptr->compsize[0] -= actgrafdat.fronnbr - compsize1; /* Update graph properties */ grafptr->compsize[1] -= compsize1; grafptr->compload[0] -= compload01 - compload1; grafptr->compload[1] -= compload1; } } grafptr->comploaddlt = grafptr->compload[0] - grafptr->compload[1]; grafptr->compload[2] = grafptr->s.velosum - grafptr->compload[0] - grafptr->compload[1]; grafptr->fronnbr = grafptr->s.vertnbr - grafptr->compsize[0] - grafptr->compsize[1]; #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) { errorPrint ("vgraphSeparateEs: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hgraph_order_bl.c0000644000302600021200000001234513303015264021305 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_bl.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module resizes block data using **/ /** the block splitting post-processing **/ /** algorithm. **/ /** **/ /** DATES : # Version 3.4 : from : 24 jun 2002 **/ /** to 24 jun 2002 **/ /** # Version 4.0 : from : 26 jun 2002 **/ /** to 17 mar 2005 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to : 25 jul 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_BL #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_bl.h" #include "hgraph_order_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderBl ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HgraphOrderBlParam * restrict const paraptr) { Gnum cblknbr; /* Number of old column blocks before splitting */ Gnum cblknum; /* Number of current column block */ if (paraptr->cblkmin <= 0) { errorPrint ("hgraphOrderBl: invalid minimum block size"); return (1); } if (hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, paraptr->strat) != 0) /* Perform ordering strategy */ return (1); if (cblkptr->cblktab == NULL) { /* If single column block */ if (cblkptr->vnodnbr < (2 * paraptr->cblkmin)) /* If block cannot be split */ return (0); cblknbr = cblkptr->vnodnbr / paraptr->cblkmin; /* Get new number of blocks */ if ((cblkptr->cblktab = (OrderCblk *) memAlloc (cblknbr * sizeof (OrderCblk))) == NULL) { errorPrint ("hgraphOrderBl: out of memory"); return (1); } ordeptr->treenbr += cblknbr; /* These more number of tree nodes */ ordeptr->cblknbr += cblknbr - 1; /* These more number of column blocks */ cblkptr->cblknbr = cblknbr; for (cblknum = 0; cblknum < cblknbr; cblknum ++) { cblkptr->cblktab[cblknum].typeval = ORDERCBLKOTHR; cblkptr->cblktab[cblknum].vnodnbr = ((cblkptr->vnodnbr + cblknbr - 1) - cblknum) / cblknbr; cblkptr->cblktab[cblknum].cblknbr = 0; cblkptr->cblktab[cblknum].cblktab = NULL; } } else { /* Block already partitioned */ for (cblknum = 0; cblknum < cblkptr->cblknbr; cblknum ++) { if (hgraphOrderBl (grafptr, ordeptr, ordenum, cblkptr->cblktab + cblknum, paraptr) != 0) return (1); } } return (0); } scotch_6.0.9/src/libscotch/library_dgraph_grow.c0000644000302600021200000001205513560013261022211 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_grow.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted graph growing routine of **/ /** the libScotch library. **/ /** **/ /** DATES : # Version 6.0 : from : 26 sep 2012 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_halo.h" #include "ptscotch.h" /**********************************/ /* */ /* Distance computation routines. */ /* */ /**********************************/ #define DGRAPHBANDGROWNAME dgraphGrow2 #define DGRAPHBANDGROWEDGE(n) /* No need to count edges */ #define DGRAPHBANDGROWENQ1 /* Color array already set */ #define DGRAPHBANDGROWENQ2 vnumgsttax[vertlocnum] /* Set vertex color */ #define DGRAPHBANDGROWENQ3 vsnddattab[nsndidxnum ++] = vnumgsttax[vertlocnum] /* Send color value */ #define DGRAPHBANDGROWENQ4 vrcvdatptr[vertrcvnum + 1] /* Get and set color */ #define DGRAPHBANDGROWSMUL(n) ((n) * 2) /* Add space for color value */ #include "dgraph_band_grow.h" #include "dgraph_band_grow.c" #undef DGRAPHBANDGROWNAME #undef DGRAPHBANDGROWEDGE #undef DGRAPHBANDGROWENQ1 #undef DGRAPHBANDGROWENQ2 #undef DGRAPHBANDGROWENQ3 #undef DGRAPHBANDGROWENQ4 #undef DGRAPHBANDGROWSMUL /*********************************/ /* */ /* This routine is the C API for */ /* the graph growing routine. */ /* */ /*********************************/ /*+ This routine grows areas from a given *** set of seeds of some color. Several *** seeds can have the same color. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphGrow ( SCOTCH_Dgraph * const orggrafptr, const SCOTCH_Num seedlocnbr, SCOTCH_Num * const seedloctab, const SCOTCH_Num distval, SCOTCH_Num * const partgsttab) { Gnum * bandpartgsttax; Gnum bandvertlocnbr; /* Not used */ Gnum bandvertlvlnum; /* Not used */ Gnum bandedgelocsiz; /* Not used */ Dgraph * restrict const grafptr = (Dgraph *) orggrafptr; if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint (STRINGIFY (SCOTCH_dgraphGrow) ": cannot compute ghost edge array"); return (1); } bandpartgsttax = (partgsttab != NULL) ? (Gnum *) partgsttab - grafptr->baseval : NULL; return ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphGrow2Ptop : dgraphGrow2Coll) (grafptr, seedlocnbr, seedloctab, distval, bandpartgsttax, &bandvertlvlnum, &bandvertlocnbr, &bandedgelocsiz)); } scotch_6.0.9/src/libscotch/graph_coarsen.c0000644000302600021200000007721313560012772021012 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2011-2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source graph **/ /** coarsening functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 31 oct 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 08 jun 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 17 sep 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 31 aug 2005 **/ /** # Version 5.0 : from : 13 dec 2006 **/ /** to 24 mar 2008 **/ /** # Version 5.1 : from : 30 oct 2009 **/ /** to 30 oct 2009 **/ /** # Version 6.0 : from : 09 mar 2011 **/ /** to 29 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_COARSEN #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "graph_coarsen.h" #include "graph_match.h" /***************************/ /* */ /* The coarsening routine. */ /* */ /***************************/ #ifdef GRAPHCOARSENTHREAD /* This routine aggregates a sum and max ** reduction of partial coarse graph ** parameters computed by multiple ** threads. */ static void graphCoarsenReduce ( GraphCoarsenThread * restrict const tlocptr, /* Pointer to local thread */ void * restrict const vlocptr, /* Pointer to local value */ void * restrict const vremptr) /* Pointer to remote value */ { GraphCoarsenThread * restrict const tremptr = (GraphCoarsenThread *) vremptr; tlocptr->coaredloadj += tremptr->coaredloadj; /* Sum edge load sum adjustments */ if (tremptr->coardegrmax > tlocptr->coardegrmax) /* Take maximum of degrees */ tlocptr->coardegrmax = tremptr->coardegrmax; } /* This routine performs a perfix scan ** sum operation on a single Gnum value. */ static void graphCoarsenScan ( GraphCoarsenThread * restrict const tlocptr, /* Pointer to local thread */ Gnum * restrict const vlocptr, /* Pointer to local value */ Gnum * restrict const vremptr, /* Pointer to remote value */ const int phasval) /* Phase index */ { vlocptr[1 - phasval] = vlocptr[phasval] + ((vremptr == NULL) ? 0 : vremptr[phasval]); } #endif /* GRAPHCOARSENTHREAD */ /* This routine is the threaded core of the building ** of the coarse graph from the fine graph. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ static int graphCoarsen3 ( void * dataptr) { Gnum baseval; Gnum finevertbas; Gnum finevertnnd; Gnum finevertnbr; Gnum finevertnum; Gnum coarvertnbr; Gnum coarvertnum; Gnum coarhashnbr; /* Size of neighbor vertex hash table */ GraphCoarsenMulti * restrict coarmulttax; Gnum coarmultsiz; /* Size of embedded multinode array */ #ifdef GRAPHCOARSENTHREAD int thrdnbr; int thrdnum; #endif /* GRAPHCOARSENTHREAD */ GraphCoarsenThread * restrict const thrdptr = (GraphCoarsenThread *) dataptr; volatile GraphCoarsenData * restrict const coarptr = (GraphCoarsenData *) (thrdptr->thrddat.grouptr); const Graph * restrict const finegrafptr = coarptr->finegrafptr; volatile Gnum * restrict const finecoartax = coarptr->finematetax; volatile Graph * restrict const coargrafptr = coarptr->coargrafptr; if ((coarptr->flagval & GRAPHCOARSENUSEMATE) == 0) { /* If matching data not provided */ graphMatch (thrdptr); /* Perform (threaded) matching */ coarvertnbr = coarptr->coarvertnbr; /* Get number of vertices actually created */ if (coarvertnbr >= coarptr->coarvertmax) /* If matching failed or if coarsened graph too large */ return (1); /* Do not proceed any further */ if (coargrafptr == NULL) /* If only matching wanted */ return (0); } else coarvertnbr = coarptr->coarvertnbr; /* Get provided number of vertices */ coarmultsiz = ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) ? coarvertnbr : 0 ; /* If coarmulttab is not user-provided, allocate it among graph data */ baseval = finegrafptr->baseval; #ifdef GRAPHCOARSENTHREAD thrdnbr = coarptr->thrddat.thrdnbr; thrdnum = thrdptr->thrddat.thrdnum; if (thrdnum == 0) /* Thread 0 populates the graph data structure */ #endif /* GRAPHCOARSENTHREAD */ { memSet (coargrafptr, 0, sizeof (Graph)); /* Initialize coarse graph on thread 0 */ coargrafptr->flagval = GRAPHFREEVERT | GRAPHVERTGROUP | GRAPHEDGEGROUP; coargrafptr->baseval = baseval; coargrafptr->vertnbr = coarvertnbr; coargrafptr->vertnnd = coarvertnbr + baseval; coargrafptr->velosum = finegrafptr->velosum; /* Keep load of finer graph */ if (memAllocGroup ((void **) (void *) &coargrafptr->verttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coargrafptr->velotax, (size_t) (coarvertnbr * sizeof (Gnum)), &coarmulttax, (size_t) (coarmultsiz * sizeof (GraphCoarsenMulti)), &coargrafptr->edgetax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), /* Pre-allocate space for edge arrays */ &coargrafptr->edlotax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("graphCoarsen3: out of memory (1)"); /* Allocate coarser graph structure */ return (2); } if (coarmultsiz > 0) /* If array created internally, record its location */ coarptr->coarmulttab = coarmulttax; /* Record un-based array location */ coarmulttax = coarptr->coarmulttab - baseval; /* Only thread 0 knows coarptr->coarmulttab */ coargrafptr->verttax -= baseval; /* Base coarse graph arrays */ coargrafptr->velotax -= baseval; coargrafptr->edgetax -= baseval; coargrafptr->edlotax -= baseval; } finevertnnd = thrdptr->finevertnnd; /* Will be used by many loops */ #ifdef GRAPHCOARSENTHREAD if (thrdnbr > 1) { /* If more than one thread */ Gnum coarvertnnd; for (finevertnum = thrdptr->finevertbas, coarvertnum = 0; finevertnum < finevertnnd; finevertnum ++) { Gnum finematenum; /* Number of current mate vertex */ finematenum = finecoartax[finevertnum]; /* Get mate number */ if (finematenum >= finevertnum) /* If mate has larger number */ coarvertnum ++; /* One more local multinode created */ } thrdptr->coarvertbas = (thrdnum == 0) ? (coarvertnum + baseval) : coarvertnum; threadScan (thrdptr, &thrdptr->coarvertbas, (ThreadScanFunc) graphCoarsenScan); /* Compute start indices for multinodes; barrier for coarptr->coarmulttab */ coarvertnum = thrdptr->coarvertbas - coarvertnum; coarmulttax = coarptr->coarmulttab - baseval; /* All threads know coarptr->coarmulttab */ for (finevertnum = thrdptr->finevertbas; finevertnum < finevertnnd; finevertnum ++) { Gnum finematenum; /* Number of current mate vertex */ finematenum = finecoartax[finevertnum]; /* Get mate number */ if (finematenum >= finevertnum) { /* If mate has larger number */ coarmulttax[coarvertnum].vertnum[0] = finevertnum; /* Build new multinode */ coarmulttax[coarvertnum].vertnum[1] = finematenum; /* Second index always biggest */ coarvertnum ++; /* One more local multinode created */ } } thrdptr->coarvertbas = DATASCAN (coarvertnbr, thrdnbr, thrdnum) + baseval; /* Set bounds for coarse vertex processing */ thrdptr->coarvertnnd = DATASIZE (coarvertnbr, thrdnbr, thrdnum) + thrdptr->coarvertbas; threadBarrier (thrdptr); /* Ensure all of coarmulttax has been written */ for (coarvertnum = thrdptr->coarvertbas, coarvertnnd = thrdptr->coarvertnnd; coarvertnum < coarvertnnd; coarvertnum ++) { finecoartax[coarmulttax[coarvertnum].vertnum[0]] = /* Build fine-to-coarse array */ finecoartax[coarmulttax[coarvertnum].vertnum[1]] = coarvertnum; } } else #endif /* GRAPHCOARSENTHREAD */ { for (finevertnum = thrdptr->finevertbas, coarvertnum = baseval; /* Finalize finecoartab array */ finevertnum < finevertnnd; finevertnum ++) { Gnum finematenum; /* Number of current mate vertex */ finematenum = finecoartax[finevertnum]; /* Get mate number */ if (finematenum >= finevertnum) { /* If mate has larger number */ coarmulttax[coarvertnum].vertnum[0] = finevertnum; /* Build new multinode */ coarmulttax[coarvertnum].vertnum[1] = finematenum; /* Second index always biggest */ finecoartax[finematenum] = /* Point to coarse vertex */ finecoartax[finevertnum] = coarvertnum; /* Always valid since coarvertnum <= finevertnum */ coarvertnum ++; /* One more multinode created */ } } thrdptr->coarvertbas = baseval; /* Set bounds for coarse vertex processing */ thrdptr->coarvertnnd = coarvertnbr + baseval; } coarhashnbr = coarptr->coarhashmsk + 1; if ((thrdptr->coarhashtab = memAlloc (coarhashnbr * sizeof (GraphCoarsenHash))) == NULL) { /* Allocate local thread memory */ errorPrint ("graphCoarsen3: out of memory (2)"); return (2); } memSet (thrdptr->coarhashtab, ~0, coarhashnbr * sizeof (GraphCoarsenHash)); /* Initialize (local) hash table */ #ifdef GRAPHCOARSENTHREAD if (thrdnbr > 1) { /* If more than one thread */ Gnum coaredgenbr; threadBarrier (thrdptr); /* Ensure all of finecoartax has been written */ thrdptr->coaredgebas = 0; /* No coarse edges accounted for yet */ graphCoarsenEdgeCt (thrdptr); /* Count number of coarse edges for each thread */ coaredgenbr = thrdptr->coaredgebas; /* Save number of local coarse edges */ if (thrdnum == 0) /* Prepare start index for edge index scan */ thrdptr->coaredgebas = coaredgenbr + baseval; threadScan (thrdptr, &thrdptr->coaredgebas, (ThreadScanFunc) graphCoarsenScan); /* Compute scan on coarse edge indices */ thrdptr->coaredgebas -= coaredgenbr; /* Adjust value to have real edge start index */ memSet (thrdptr->coarhashtab, ~0, coarhashnbr * sizeof (GraphCoarsenHash)); /* Re-initialize (local) hash table */ } else #endif /* GRAPHCOARSENTHREAD */ thrdptr->coaredgebas = baseval; /* We start from the beginning */ ((finegrafptr->edlotax != NULL) ? graphCoarsenEdgeLl : graphCoarsenEdgeLu) (thrdptr); /* Build coarse graph edge array */ memFree (thrdptr->coarhashtab); /* Free used (local) hash table */ #ifdef GRAPHCOARSENTHREAD if (thrdnbr > 1) threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) graphCoarsenReduce, 0); /* Sum edloadj and get maximum of degrmax */ if (thrdnum == 0) #endif /* GRAPHCOARSENTHREAD */ { coargrafptr->edlosum = thrdptr->coaredloadj + finegrafptr->edlosum; coargrafptr->degrmax = thrdptr->coardegrmax; } #ifdef GRAPHCOARSENTHREAD if (thrdnum == (thrdnbr - 1)) #endif /* GRAPHCOARSENTHREAD */ coargrafptr->verttax[coargrafptr->vertnnd] = thrdptr->coaredgebas; /* Mark end of edge array */ return (0); /* Joining all treads will serve as synchronization for coarse graph data */ } /* This routine is the sequential core of the ** matching and coarse graph building process. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ static int graphCoarsen2 ( GraphCoarsenData * restrict const coarptr) { Gnum coarvertnbr; /* Number of coarse vertices */ Gnum coarvertnum; /* Number of current multinode vertex */ Gnum coarvfixnbr; /* Coarse number of fixed vertices */ GraphCoarsenMulti * coarmultptr; GraphCoarsenMulti * restrict coarmulttax; /* Multinode array */ Gnum coarmultsiz; /* Size of embedded multinode array */ Gnum * finematetab; /* Pointer to locally allocated mate array */ Gnum finevertnum; /* Number of currently selected fine vertex */ Gnum coarhashmsk; /* Mask for access to hash table */ size_t coarmultoftval; size_t coarvelooftval; size_t coaredgeoftval; size_t coaredlooftval; #ifdef GRAPHCOARSENTHREAD int thrdnbr; #endif /* GRAPHCOARSENTHREAD */ int o; Graph * restrict const coargrafptr = coarptr->coargrafptr; const Graph * restrict const finegrafptr = coarptr->finegrafptr; const Gnum finevertnbr = finegrafptr->vertnbr; const Gnum baseval = finegrafptr->baseval; for (coarhashmsk = 31; coarhashmsk < finegrafptr->degrmax; coarhashmsk = coarhashmsk * 2 + 1) ; /* Compute size of hash table */ coarptr->coarhashmsk = coarhashmsk * 4 + 3; /* Record it for (local) hash table allocation */ #ifdef GRAPHCOARSENTHREAD thrdnbr = coarptr->thrddat.thrdnbr = SCOTCH_PTHREAD_NUMBER; /* Required by graphMatchInit */ #else /* GRAPHCOARSENTHREAD */ #ifdef COMMON_PTHREAD coarptr->thrddat.thrdnbr = 1; #endif /* COMMON_PTHREAD */ #endif /* GRAPHCOARSENTHREAD */ finematetab = NULL; /* Assume mating array provided */ if (coarptr->finematetax == NULL) { /* If no user-provided mating array */ if ((finematetab = (Gnum *) memAlloc (finevertnbr * sizeof (Gnum))) == NULL) { errorPrint ("graphCoarsen2: out of memory (1)"); /* Allocate coarse graph mating and indexing array */ return (2); } coarptr->finematetax = finematetab - baseval; } if ((coarptr->flagval & GRAPHCOARSENUSEMATE) != 0) /* If mating array provided */ graphMatchNone (coarptr); /* Initialize global data to avoid matching */ else { if (graphMatchInit (coarptr) != 0) { /* Initialize global data needed for matching */ if (finematetab != NULL) memFree (finematetab); return (1); } } if (coarptr->coarmulttab != NULL) /* Record that multinode array was provided */ coarptr->flagval |= GRAPHCOARSENHASMULT; #ifdef GRAPHCOARSENTHREAD if (thrdnbr > 1) { GraphCoarsenThread * restrict thrdtab; int thrdnum; Gnum finevertbas; if ((thrdtab = memAlloc (thrdnbr * sizeof (GraphCoarsenThread))) == NULL) { errorPrint ("graphCoarsen2: out of memory (2)"); if (finematetab != NULL) memFree (finematetab); return (2); } for (thrdnum = 0, finevertbas = baseval; thrdnum < thrdnbr; thrdnum ++) { thrdtab[thrdnum].randval = intRandVal (INT_MAX); thrdtab[thrdnum].finevertbas = finevertbas; thrdtab[thrdnum].finevertnnd = finevertbas += DATASIZE (finevertnbr, thrdnbr, thrdnum); thrdtab[thrdnum].coarvertnbr = 0; /* No coarse vertices yet */ } o = threadLaunch (coarptr, thrdtab, sizeof (GraphCoarsenThread), (ThreadLaunchStartFunc) graphCoarsen3, (ThreadLaunchJoinFunc) NULL, thrdnbr, THREADCANBARRIER | THREADCANREDUCE); memFree (thrdtab); /* Free group leader */ } else #endif /* GRAPHCOARSENTHREAD */ { GraphCoarsenThread thrddat; #ifdef GRAPHCOARSENTHREAD thrddat.thrddat.thrdnum = 0; /* Thread 0 of 1 */ #endif /* GRAPHCOARSENTHREAD */ thrddat.thrddat.grouptr = (void *) coarptr; thrddat.randval = intRandVal (INT_MAX); thrddat.finevertbas = baseval; thrddat.finevertnnd = baseval + finevertnbr; o = graphCoarsen3 (&thrddat); } if ((coarptr->flagval & GRAPHCOARSENDSTMATE) == 0) /* If mating array destination not provided */ memFree (finematetab); /* Do not keep mating data array */ if (o != 0) /* If coarsened graph is too small, abort here */ return (1); if (coargrafptr == NULL) /* If coarse graph not wanted */ return (0); coargrafptr->edgenbr = coargrafptr->verttax[coargrafptr->vertnnd] - baseval; /* Set exact number of edges */ coarvertnbr = coargrafptr->vertnbr; coarmultsiz = ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) ? coarvertnbr : 0; /* Tell whether we have to resize multloctab within coarse graph vertex group */ coarvelooftval = coargrafptr->velotax - coargrafptr->verttax; coaredgeoftval = coargrafptr->edgetax - coargrafptr->verttax; coaredlooftval = coargrafptr->edlotax - coargrafptr->verttax; coarmultoftval = (Gnum *) coarptr->coarmulttab - coargrafptr->verttax; if (memReallocGroup ((void *) (coargrafptr->verttax + baseval), /* Re-allocate data, wiping temporary arrays */ &coargrafptr->verttax, (size_t) ((coarvertnbr + 1) * sizeof (Gnum)), &coargrafptr->velotax, (size_t) (coarvertnbr * sizeof (Gnum)), &coarmultptr, (size_t) (coarmultsiz * sizeof (GraphCoarsenMulti)), &coargrafptr->edgetax, (size_t) (finegrafptr->edgenbr * sizeof (Gnum)), &coargrafptr->edlotax, (size_t) (coargrafptr->edgenbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("graphCoarsen2: cannot reallocate memory"); /* Allocate coarser graph structure */ return (2); } coargrafptr->verttax -= baseval; coargrafptr->vendtax = coargrafptr->verttax + 1; /* Use compact representation of arrays */ coargrafptr->velotax = coargrafptr->verttax + coarvelooftval; coargrafptr->edgetax = coargrafptr->verttax + coaredgeoftval; coargrafptr->edlotax = coargrafptr->verttax + coaredlooftval; if ((coarptr->flagval & GRAPHCOARSENHASMULT) == 0) /* If multinode array not user-provided */ coarptr->coarmulttab = ((GraphCoarsenMulti *) (coargrafptr->verttax + coarmultoftval)); /* Update pointer to un-based multinode array */ if (coarptr->coarvfixptr != NULL) *coarptr->coarvfixptr = coarvfixnbr = coarptr->finevfixnbr; /* TODO: compute real number ! */ #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (coargrafptr) != 0) { /* Check graph consistency */ errorPrint ("graphCoarsen2: inconsistent graph data"); graphFree (coargrafptr); return (2); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } /* This routine coarsens the given "finegraph" into ** "coargraph", as long as the coarsening ratio remains ** below some threshold value and the coarsened graph ** is not too small. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ int graphCoarsen ( const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ Gnum * restrict * restrict const finecoarptr, /*+ Pointer to un-based fine-to-coarse array to build +*/ GraphCoarsenMulti * restrict * restrict const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const Gnum coarvertnbr, /*+ Minimum number of coarse vertices +*/ const double coarval, /*+ Maximum contraction ratio +*/ const Gnum flagval, const Anum * restrict const fineparotax, const Anum * restrict const finepfixtax, const Gnum finevfixnbr, Gnum * restrict const coarvfixptr) { GraphCoarsenData coardat; /* Graph coarsening global data */ int o; #ifdef SCOTCH_DEBUG_GRAPH1 if (coarval < 0.5L) /* If impossible coarsening ratio wanted */ return (1); /* We will never succeed */ #endif /* SCOTCH_DEBUG_GRAPH1 */ coardat.coarvertmax = (Gnum) ((double) (finegrafptr->vertnbr - finevfixnbr) * coarval) + finevfixnbr; /* Maximum number of coarse vertices */ if (coardat.coarvertmax < coarvertnbr) /* If there will be too few vertices in graph */ return (1); /* It is useless to go any further */ if (finecoarptr != NULL) { /* If fine-to-coarse destination provided */ coardat.flagval = flagval | GRAPHCOARSENDSTMATE; /* Array will be provided and/or kept */ coardat.finematetax = (*finecoarptr == NULL) ? NULL : (*finecoarptr - finegrafptr->baseval); } else { coardat.flagval = flagval; /* No mating array nor array data provided */ coardat.finematetax = NULL; /* No user-provided mating array */ } coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ coardat.fineparotax = fineparotax; coardat.finepfixtax = finepfixtax; coardat.finevfixnbr = finevfixnbr; coardat.coargrafptr = coargrafptr; coardat.coarvfixptr = coarvfixptr; coardat.coarmulttab = *coarmultptr; o = graphCoarsen2 (&coardat); if (o != 0) return (o); *coarmultptr = coardat.coarmulttab; /* Give back location of multinode array */ if (finecoarptr != NULL) /* If fine-to-coarse destination provided */ *finecoarptr = coardat.finematetax + finegrafptr->baseval; /* Give back location of fine-to-coarse array */ return (0); } /* This routine coarsens the given "finegraph" into ** "coargraph", as long as the coarsening ratio remains ** below some threshold value and the coarsened graph ** is not too small. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ int graphCoarsenMatch ( const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ Gnum * restrict * restrict const finemateptr, /*+ Pointer to un-based mating array to build +*/ Gnum * restrict const coarvertptr, /*+ Minimum number of coarse vertices +*/ const double coarval, /*+ Maximum contraction ratio +*/ const Gnum flagval, /*+ Flag value +*/ const Anum * restrict const fineparotax, const Anum * restrict const finepfixtax, const Gnum finevfixnbr, Gnum * restrict const coarvfixptr) { GraphCoarsenData coardat; /* Graph coarsening global data */ int o; #ifdef SCOTCH_DEBUG_GRAPH1 if (coarval < 0.5L) /* If impossible coarsening ratio wanted */ return (1); /* We will never succeed */ #endif /* SCOTCH_DEBUG_GRAPH1 */ coardat.coarvertmax = (Gnum) ((double) (finegrafptr->vertnbr - finevfixnbr) * coarval) + finevfixnbr; /* Maximum number of coarse vertices */ if (coardat.coarvertmax < *coarvertptr) /* If there will be too few vertices in graph */ return (1); /* It is useless to go any further */ coardat.flagval = GRAPHCOARSENDSTMATE | (flagval & GRAPHCOARSENNOMERGE); /* Array will be provided and/or kept */ coardat.finematetax = (*finemateptr == NULL) ? NULL : (*finemateptr - finegrafptr->baseval); coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ coardat.fineparotax = fineparotax; coardat.finepfixtax = finepfixtax; coardat.finevfixnbr = finevfixnbr; coardat.coargrafptr = NULL; coardat.coarvfixptr = coarvfixptr; coardat.coarmulttab = NULL; o = graphCoarsen2 (&coardat); if (o != 0) return (o); *coarvertptr = coardat.coarvertnbr; *finemateptr = coardat.finematetax + finegrafptr->baseval; /* Give back location of fine-to-coarse array */ return (0); } /* This routine builds a coarse graph from the fine ** graph topology and a user-provided mating array. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ int graphCoarsenBuild ( const Graph * restrict const finegrafptr, /*+ Graph to coarsen +*/ Graph * restrict const coargrafptr, /*+ Coarse graph to build +*/ Gnum * restrict const finematetab, /*+ Pointer to un-based user-provided mating array +*/ GraphCoarsenMulti * restrict * restrict const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const Gnum coarvertnbr) /*+ User-provided number of coarse vertices +*/ { GraphCoarsenData coardat; /* Graph coarsening global data */ int o; coardat.flagval = GRAPHCOARSENDSTMATE | GRAPHCOARSENUSEMATE; /* Mating array data provided */ coardat.finegrafptr = finegrafptr; /* Fill caller part of matching data structure */ coardat.fineparotax = NULL; /* TODO: arrays not handled yet */ coardat.finepfixtax = NULL; coardat.finevfixnbr = 0; coardat.finematetax = finematetab - finegrafptr->baseval; /* User-provided mating array */ coardat.coargrafptr = coargrafptr; coardat.coarvertmax = finegrafptr->vertnbr + 1; /* Value that always succeeds */ coardat.coarvertnbr = coarvertnbr; /* Set number of coarse vertices */ coardat.coarvfixptr = NULL; /* TODO: arrays not handled yet */ coardat.coarmulttab = *coarmultptr; o = graphCoarsen2 (&coardat); if (o != 0) return (o); *coarmultptr = coardat.coarmulttab; /* Give back location of multinode array */ return (0); } /****************************************/ /* */ /* The edge array building subroutines. */ /* */ /****************************************/ #define GRAPHCOARSENEDGENAME graphCoarsenEdgeLl #define GRAPHCOARSENEDGEINIT const Gnum * restrict const fineedlotax = finegrafptr->edlotax #define GRAPHCOARSENEDGEEDLOINIT coaredlotax[coaredgenum] = fineedlotax[fineedgenum] #define GRAPHCOARSENEDGEEDLOADD coaredlotax[coarhashtab[h].edgenum] += fineedlotax[fineedgenum] #define GRAPHCOARSENEDGEEDLOSUB coaredloadj -= fineedlotax[fineedgenum] #include "graph_coarsen_edge.c" #undef GRAPHCOARSENEDGENAME #undef GRAPHCOARSENEDGEINIT #undef GRAPHCOARSENEDGEEDLOINIT #undef GRAPHCOARSENEDGEEDLOADD #undef GRAPHCOARSENEDGEEDLOSUB #define GRAPHCOARSENEDGENAME graphCoarsenEdgeLu #define GRAPHCOARSENEDGEINIT #define GRAPHCOARSENEDGEEDLOINIT coaredlotax[coaredgenum] = 1 #define GRAPHCOARSENEDGEEDLOADD coaredlotax[coarhashtab[h].edgenum] ++ #define GRAPHCOARSENEDGEEDLOSUB coaredloadj -- #include "graph_coarsen_edge.c" #undef GRAPHCOARSENEDGENAME #undef GRAPHCOARSENEDGEINIT #undef GRAPHCOARSENEDGEEDLOINIT #undef GRAPHCOARSENEDGEEDLOADD #undef GRAPHCOARSENEDGEEDLOSUB #ifdef GRAPHCOARSENTHREAD #define GRAPHCOARSENEDGECOUNT /* Local coarse edge count routine */ #define GRAPHCOARSENEDGENAME graphCoarsenEdgeCt #define GRAPHCOARSENEDGEINIT #define GRAPHCOARSENEDGEEDLOINIT #define GRAPHCOARSENEDGEEDLOADD #define GRAPHCOARSENEDGEEDLOSUB #include "graph_coarsen_edge.c" #undef GRAPHCOARSENEDGENAME #undef GRAPHCOARSENEDGEINIT #undef GRAPHCOARSENEDGEEDLOINIT #undef GRAPHCOARSENEDGEEDLOADD #undef GRAPHCOARSENEDGEEDLOSUB #undef GRAPHCOARSENEDGECOUNT #endif /* GRAPHCOARSENTHREAD */ scotch_6.0.9/src/libscotch/dgraph_build_grid3d.c0000644000302600021200000004471713560005435022060 0ustar pelegrinpelegrin/* Copyright 2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_build_grid3d.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (5.0) **/ /** **/ /** FUNCTION : These lines are the distributed source **/ /** graph building routines for 3D grid **/ /** graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 21 jul 2005 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 05 jun 2010 **/ /** to : 06 jun 2010 **/ /** **/ /************************************************************/ #define DGRAPH_BUILD_GRID3D #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_build_grid3d.h" /**************************************/ /* */ /* Vertex neighbor handling routines. */ /* */ /**************************************/ /* ** */ static Gnum dgraphBuildGrid3Dvertex26M ( const DgraphBuildGrid3DData * restrict const dataptr, const Gnum vertglbnum, Gnum edgelocnum, const Gnum posxval, const Gnum posyval, const Gnum poszval) { Gnum ngbxmin; Gnum ngbxmax; Gnum ngbxval; Gnum ngbymin; Gnum ngbymax; Gnum ngbyval; Gnum ngbzmin; Gnum ngbzmax; Gnum ngbzval; ngbxmin = (posxval > 0) ? -1 : 0; ngbymin = (posyval > 0) ? -1 : 0; ngbzmin = (poszval > 0) ? -1 : 0; ngbxmax = (posxval < (dataptr->dimxval - 1)) ? 1 : 0; ngbymax = (posyval < (dataptr->dimyval - 1)) ? 1 : 0; ngbzmax = (poszval < (dataptr->dimzval - 1)) ? 1 : 0; for (ngbzval = ngbzmin; ngbzval <= ngbzmax; ngbzval ++) { for (ngbyval = ngbymin; ngbyval <= ngbymax; ngbyval ++) { for (ngbxval = ngbxmin; ngbxval <= ngbxmax; ngbxval ++) { if ((ngbxval | ngbyval | ngbzval) != 0) /* If not loop edge */ DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, (posxval + dataptr->dimxval + ngbxval) % dataptr->dimxval, (posyval + dataptr->dimyval + ngbyval) % dataptr->dimyval, (poszval + dataptr->dimzval + ngbzval) % dataptr->dimzval); } } } return (edgelocnum); } /* ** */ static Gnum dgraphBuildGrid3Dvertex26T ( const DgraphBuildGrid3DData * restrict const dataptr, const Gnum vertglbnum, Gnum edgelocnum, const Gnum posxval, const Gnum posyval, const Gnum poszval) { Gnum ngbxmin; Gnum ngbxmax; Gnum ngbxval; Gnum ngbymin; Gnum ngbymax; Gnum ngbyval; Gnum ngbzmin; Gnum ngbzmax; Gnum ngbzval; ngbxmin = dataptr->t26.ngbxmin; ngbxmax = dataptr->t26.ngbxmax; ngbymin = dataptr->t26.ngbymin; ngbymax = dataptr->t26.ngbymax; ngbzmin = dataptr->t26.ngbzmin; ngbzmax = dataptr->t26.ngbzmax; for (ngbzval = ngbzmin; ngbzval <= ngbzmax; ngbzval ++) { for (ngbyval = ngbymin; ngbyval <= ngbymax; ngbyval ++) { for (ngbxval = ngbxmin; ngbxval <= ngbxmax; ngbxval ++) { Gnum vertglbend; vertglbend = (((poszval + ngbzval) % dataptr->dimzval) * dataptr->dimyval + ((posyval + ngbyval) % dataptr->dimyval)) * dataptr->dimxval + ((posxval + ngbxval) % dataptr->dimxval) + dataptr->baseval; if (vertglbend != vertglbnum) { /* If not loop edge */ if (dataptr->edloloctax != NULL) dataptr->edloloctax[edgelocnum] = ((vertglbend + vertglbnum) % 16) + 1; dataptr->edgeloctax[edgelocnum ++] = vertglbend; } } } } return (edgelocnum); } /* ** */ static Gnum dgraphBuildGrid3Dvertex6M ( const DgraphBuildGrid3DData * restrict const dataptr, const Gnum vertglbnum, Gnum edgelocnum, const Gnum posxval, const Gnum posyval, const Gnum poszval) { Gnum ngbxval; Gnum ngbyval; Gnum ngbzval; ngbxval = posxval - 1; if (ngbxval >= 0) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, ngbxval, posyval, poszval); ngbxval = posxval + 1; if (ngbxval < dataptr->dimxval) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, ngbxval, posyval, poszval); ngbyval = posyval - 1; if (ngbyval >= 0) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, ngbyval, poszval); ngbyval = posyval + 1; if (ngbyval < dataptr->dimyval) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, ngbyval, poszval); ngbzval = poszval - 1; if (ngbzval >= 0) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, posyval, ngbzval); ngbzval = poszval + 1; if (ngbzval < dataptr->dimzval) DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, posyval, ngbzval); return (edgelocnum); } /* ** */ static Gnum dgraphBuildGrid3Dvertex6T ( const DgraphBuildGrid3DData * restrict const dataptr, const Gnum vertglbnum, Gnum edgelocnum, const Gnum posxval, const Gnum posyval, const Gnum poszval) { Gnum ngbxval; Gnum ngbyval; Gnum ngbzval; if (dataptr->dimxval > 1) { ngbxval = (posxval + 1) % dataptr->dimxval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, ngbxval, posyval, poszval); if (dataptr->dimxval > 2) { ngbxval = (posxval + dataptr->dimxval - 1) % dataptr->dimxval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, ngbxval, posyval, poszval); } } if (dataptr->dimyval > 1) { ngbyval = (posyval + 1) % dataptr->dimyval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, ngbyval, poszval); if (dataptr->dimyval > 2) { ngbyval = (posyval + dataptr->dimyval - 1) % dataptr->dimyval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, ngbyval, poszval); } } if (dataptr->dimzval > 1) { ngbzval = (poszval + 1) % dataptr->dimzval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, posyval, ngbzval); if (dataptr->dimzval > 2) { ngbzval = (poszval + dataptr->dimzval - 1) % dataptr->dimzval; DGRAPHBUILDGRID3DNGB (dataptr, vertglbnum, edgelocnum ++, posxval, posyval, ngbzval); } } return (edgelocnum); } /*******************************************/ /* */ /* The distributed graph building routine. */ /* */ /*******************************************/ /* This routine builds a distrbuted grid graph ** of the given dimensions. ** hashval is the increment between two vertex ** indices (1 for sliced meshes). ** flagval is a combilation of: ** - 1 : 26-neighbor mesh (default: 6-neighbor mesh). ** - 2 : torus (default: mesh) ** - 4 : weighted vertices (default: no weights). ** - 8 : weighted edges (default: no weights). ** It returns: ** - 0 : graph created. ** - !0 : on error. */ int dgraphBuildGrid3D ( Dgraph * restrict const grafptr, /* Graph */ const Gnum baseval, /* Base value */ const Gnum dimxval, /* First dimension */ const Gnum dimyval, /* Second dimension */ const Gnum dimzval, /* Third dimension */ const Gnum incrval, /* Increment step */ const int flagval) /* Grid type */ { DgraphBuildGrid3DData datadat; /* Data structure for creating vertices */ Gnum proclocadj; /* Number of processes with most vertices */ Gnum vertglbmin; /* Minimum global index of local vertices */ Gnum vertglbnbr; Gnum vertlocnbr; Gnum vertlocnnd; Gnum vertlocnum; Gnum * vertloctax; Gnum velolocsiz; Gnum velolocsum; Gnum * veloloctax; Gnum * vlblloctax; Gnum vlbllocsiz; Gnum edgelocsiz; Gnum edgelocnum; Gnum * edgeloctab; Gnum edlolocsiz; Gnum * edloloctab; Gnum degrglbmax; #ifdef SCOTCH_DEBUG_DGRAPH1 if ((dimxval < 1) || (dimyval < 1) || (dimzval < 1)) { /* At least one vertex */ errorPrint ("dgraphBuildGrid3D: invalid parameters (1)"); return (1); } if (incrval < 1) { errorPrint ("dgraphBuildGrid3D: invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH1 */ vertglbnbr = dimxval * dimyval * dimzval; vertlocnbr = DATASIZE (vertglbnbr, grafptr->procglbnbr, grafptr->proclocnum); if ((flagval & 1) != 0) { /* If 26-neighbor mesh */ degrglbmax = 26; if ((flagval & 2) != 0) { /* If torus graph */ datadat.t26.ngbxmin = (dimxval > 1) ? (dimxval - 1) : dimxval; /* Avoid loop edges */ datadat.t26.ngbxmax = (dimxval > 2) ? (dimxval + 1) : dimxval; datadat.t26.ngbymin = (dimyval > 1) ? (dimyval - 1) : dimyval; datadat.t26.ngbymax = (dimyval > 2) ? (dimyval + 1) : dimyval; datadat.t26.ngbzmin = (dimzval > 1) ? (dimzval - 1) : dimzval; datadat.t26.ngbzmax = (dimzval > 2) ? (dimzval + 1) : dimzval; datadat.funcvrtptr = dgraphBuildGrid3Dvertex26T; } else datadat.funcvrtptr = dgraphBuildGrid3Dvertex26M; } else { /* If 6-neighbor mesh */ degrglbmax = 6; datadat.funcvrtptr = ((flagval & 2) != 0) ? dgraphBuildGrid3Dvertex6T : dgraphBuildGrid3Dvertex6M; } edgelocsiz = vertlocnbr * degrglbmax; /* (Possibly upper bound on) number of edges */ vlbllocsiz = (incrval != 1) ? vertlocnbr : 0; /* If no hashing, no need for vertex labels */ velolocsiz = ((flagval & 4) != 0) ? vertlocnbr : 0; edlolocsiz = ((flagval & 8) != 0) ? edgelocsiz : 0; if (memAllocGroup ((void **) (void *) &vertloctax, (size_t) ((vertlocnbr + 1) * sizeof (Gnum)), /* +1 to indicate end of array */ &veloloctax, (size_t) (velolocsiz * sizeof (Gnum)), &vlblloctax, (size_t) (vlbllocsiz * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphBuildGrid3D: out of memory (1)"); return (1); } if (memAllocGroup ((void **) (void *) &edgeloctab, (size_t) (edgelocsiz * sizeof (Gnum)), &edloloctab, (size_t) (edlolocsiz * sizeof (Gnum)), NULL) == NULL) { memFree (vertloctax); errorPrint ("dgraphBuildGrid3D: out of memory (2)"); return (1); } datadat.baseval = baseval; datadat.dimxval = dimxval; datadat.dimyval = dimyval; datadat.dimzval = dimzval; datadat.edgeloctax = edgeloctab - baseval; datadat.edloloctax = ((flagval & 8) != 0) ? (edloloctab - baseval) : NULL; vertloctax = vertloctax - baseval; veloloctax = ((flagval & 4) != 0) ? (veloloctax - baseval) : NULL; vlblloctax = (incrval != 1) ? (vlblloctax - baseval) : NULL; proclocadj = vertglbnbr % grafptr->procglbnbr; /* Number of processes with +1 number of vertices */ vertglbmin = (vertglbnbr / grafptr->procglbnbr) * grafptr->proclocnum + MIN (grafptr->proclocnum, proclocadj); edgelocnum = vertlocnum = baseval; vertlocnnd = baseval + vertlocnbr; velolocsum = (veloloctax == NULL) ? vertlocnbr : 0; if (incrval != 1) { /* If strided or pseudo-randomly distributed mesh */ Gnum vertglbidx; /* Un-based global index of current vertex */ Gnum rondlocnbr; /* Number of already completed rounds of increments */ Gnum a; Gnum b; a = (vertglbnbr > incrval) ? vertglbnbr : incrval; /* Get biggest of the two */ b = (vertglbnbr + incrval) - a; /* Get smallest of the two */ do { Gnum t; t = a % b; if (t == 0) break; a = b; b = t; } while (b > 1); /* Compute GCD of vertglbnbr and incrval in b */ rondlocnbr = (vertglbmin * b) / vertglbnbr; vertglbidx = (vertglbmin * incrval + rondlocnbr) % vertglbnbr; /* Compute skewed index, with rounds */ for ( ; vertlocnum < vertlocnnd; vertlocnum ++) { Gnum vertglbnum; Gnum positmp; Gnum posxval; Gnum posyval; Gnum poszval; poszval = vertglbidx / (dimxval * dimyval); positmp = vertglbidx % (dimxval * dimyval); posyval = positmp / dimxval; posxval = positmp % dimxval; vertglbnum = vertglbidx + baseval; vertloctax[vertlocnum] = edgelocnum; vlblloctax[vertlocnum] = vertglbnum; if (veloloctax != NULL) { velolocsum += veloloctax[vertlocnum] = (vertglbnum % 16) + 1; } edgelocnum = datadat.funcvrtptr (&datadat, vertglbnum, edgelocnum, posxval, posyval, poszval); #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum > (edgelocsiz + baseval)) { errorPrint ("dgraphBuildGrid3D: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vertglbidx = (vertglbidx + incrval) % vertglbnbr; /* Add increment to global index */ if (vertglbidx == rondlocnbr) { /* If we looped back to the current beginning */ rondlocnbr ++; /* Start a new round of increments */ vertglbidx = rondlocnbr; } } } else { /* Regularly sliced mesh */ Gnum vertglbnum; /* Based global vertex number */ Gnum positmp; Gnum posxval; Gnum posyval; Gnum poszval; poszval = vertglbmin / (dimxval * dimyval); positmp = vertglbmin % (dimxval * dimyval); posyval = positmp / dimxval; posxval = positmp % dimxval; for (vertglbnum = vertglbmin + baseval; vertlocnum < vertlocnnd; vertlocnum ++, vertglbnum ++) { vertloctax[vertlocnum] = edgelocnum; if (veloloctax != NULL) { velolocsum += veloloctax[vertlocnum] = (vertglbnum % 16) + 1; } edgelocnum = datadat.funcvrtptr (&datadat, vertglbnum, edgelocnum, posxval, posyval, poszval); #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum > (edgelocsiz + baseval)) { errorPrint ("dgraphBuildGrid3D: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (++ posxval >= dimxval) { posxval = 0; if (++ posyval >= dimyval) { posyval = 0; poszval ++; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((poszval >= dimzval) && (vertglbnum < (vertglbnbr + baseval - 1))){ errorPrint ("dgraphBuildGrid3D: internal error (X)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } } } } vertloctax[vertlocnum] = edgelocnum; /* Mark end of local vertex array */ grafptr->flagval = (DGRAPHFREETABS | DGRAPHVERTGROUP | DGRAPHEDGEGROUP); /* All arrays will be freed on exit */ if (dgraphBuild2 (grafptr, baseval, /* Build distributed graph */ vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, veloloctax, velolocsum, NULL, vlblloctax, edgelocnum - baseval, edgelocsiz, datadat.edgeloctax, NULL, datadat.edloloctax, degrglbmax) != 0) { memFree (datadat.edgeloctax + baseval); /* Free memory group leaders */ memFree (vertloctax + baseval); return (1); } return (0); } scotch_6.0.9/src/libscotch/hgraph_order_bl.h0000644000302600021200000000646513465315041021325 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_bl.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the block splitting algorithm. **/ /** **/ /** DATES : # Version 3.4 : from : 24 jun 2002 **/ /** to 24 jun 2002 **/ /** # Version 4.0 : from : 26 jun 2002 **/ /** to 29 dec 2004 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to : 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderBlParam_ { Strat * strat; /*+ Ordering strategy +*/ INT cblkmin; /*+ Block splitting size +*/ } HgraphOrderBlParam; /* ** The function prototypes. */ int hgraphOrderBl (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderBlParam * const); scotch_6.0.9/src/libscotch/dorder_io_block.c0000644000302600021200000001143013303015264021276 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_io_block.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 26 may 2008 **/ /** to 26 may 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "dgraph.h" #include "order.h" #include "dorder.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine saves a distributed ordering on ** a combined block ordering format. ** The distributed graph structure is provided ** to access the distribution of vertex labels, ** whenever present. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int dorderSaveBlock2 ( const Order * const cordptr, const Gnum * const vlbltab, FILE * const stream) { Gnum vertnum; Gnum * restrict rangtab; Gnum cblknum; int o; if ((rangtab = memAlloc ((cordptr->vnodnbr + 1) * sizeof (Gnum))) == NULL) { errorPrint ("dorderSaveBlock2: out of memory"); return (1); } orderRang (cordptr, rangtab); if (fprintf (stream, "0\n" GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) cordptr->cblknbr, (Gnum) cordptr->vnodnbr) < 0) { errorPrint ("dorderSaveBlock2: bad output (1)"); return (1); } for (cblknum = 0, o = 1; (o == 1) && (cblknum < cordptr->cblknbr); cblknum ++) { /* Save column-block range array */ o = intSave (stream, rangtab[cblknum]); putc (((cblknum & 7) == 7) ? '\n' : '\t', stream); } o = intSave (stream, rangtab[cblknum]); putc ('\n', stream); orderPeri (cordptr->peritab, cordptr->baseval, cordptr->vnodnbr, rangtab, cordptr->baseval); /* TRICK: re-use rangtab as permtab */ for (vertnum = 0; (o == 1) && (vertnum < (cordptr->vnodnbr - 1)); vertnum ++) { /* Save direct permutation */ o = intSave (stream, rangtab[vertnum]); putc (((vertnum & 7) == 7) ? '\n' : '\t', stream); } o = intSave (stream, rangtab[vertnum]); putc ('\n', stream); if (o != 1) errorPrint ("dorderSaveBlock2: bad output (2)"); return (1 - o); } int dorderSaveBlock ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, FILE * restrict const stream) { return (dorderSaveTree2 (ordeptr, grafptr, stream, dorderSaveBlock2)); } scotch_6.0.9/src/libscotch/hgraph_order_kp.c0000644000302600021200000001625713470115365021340 0ustar pelegrinpelegrin/* Copyright 2012,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_kp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a block ordering **/ /** from a k-way edge partition. **/ /** **/ /** DATES : # Version 5.0 : from : 17 oct 2012 **/ /** to : 17 oct 2012 **/ /** # Version 6.0 : from : 23 aug 2014 **/ /** to : 15 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_KP #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_kp.h" #include "hgraph_order_si.h" #include "kgraph.h" #include "kgraph_map_st.h" #include "scotch.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderKp ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HgraphOrderKpParam * restrict const paraptr) { Kgraph actgrafdat; Gnum * restrict ordetab; Gnum ordeadj; Anum * restrict parttax; Gnum partnbr; Gnum partnum; Gnum * restrict peritab; Gnum vertnnd; Gnum vertnum; Gnum cblknbr; if ((paraptr->partsiz < 1) || /* If nothing to do, order consecutively */ ((partnbr = grafptr->vnohnbr / paraptr->partsiz) <= 1)) return (hgraphOrderSi (grafptr, ordeptr, ordenum, cblkptr)); if ((cblkptr->cblktab = (OrderCblk *) memAlloc (partnbr * sizeof (OrderCblk))) == NULL) { /* Allocate first as it will remain */ errorPrint ("hgraphOrderKp: out of memory (1)"); return (1); } memSet (&actgrafdat, 0, sizeof (Kgraph)); /* Allow for freeing on subsequent error */ hgraphUnhalo (grafptr, &actgrafdat.s); /* Extract non-halo part of given graph */ actgrafdat.s.vnumtax = NULL; /* Do not keep numbers from nested dissection */ SCOTCH_archCmplt ((SCOTCH_Arch *) &actgrafdat.a, (SCOTCH_Num) partnbr); /* Build complete graph architecture */ if ((kgraphInit (&actgrafdat, &actgrafdat.s, &actgrafdat.a, NULL, 0, NULL, NULL, 1, 1, NULL) != 0) || (kgraphMapSt (&actgrafdat, paraptr->strat) != 0)) { errorPrint ("hgraphOrderKp: cannot compute partition"); memFree (cblkptr->cblktab); kgraphExit (&actgrafdat); cblkptr->cblktab = NULL; return (1); } if (memAllocGroup ((void **) (void *) &ordetab, (size_t) (partnbr * sizeof (Gnum)), &parttax, (size_t) (grafptr->vnohnbr * sizeof (Anum)), NULL) == NULL) { errorPrint ("hgraphOrderKp: out of memory (2)"); memFree (cblkptr->cblktab); kgraphExit (&actgrafdat); cblkptr->cblktab = NULL; return (1); } parttax -= actgrafdat.s.baseval; mapTerm (&actgrafdat.m, parttax); /* Get result of partitioning as terminal part array */ memSet (ordetab, 0, partnbr * sizeof (Gnum)); /* Reset part count array */ for (vertnum = actgrafdat.s.baseval, vertnnd = actgrafdat.s.vertnnd; vertnum < vertnnd; vertnum ++) { ordetab[parttax[vertnum]] ++; /* Count number of vertices in each part */ } for (partnum = 0, cblknbr = 0, ordeadj = ordenum; /* For all potential column blocks */ partnum < partnbr; partnum ++) { Gnum ordetmp; ordetmp = ordetab[partnum]; ordetab[partnum] = ordeadj; ordeadj += ordetmp; if (ordetmp != 0) { /* If part is not empty, one more column block */ cblkptr->cblktab[cblknbr].typeval = ORDERCBLKOTHR; cblkptr->cblktab[cblknbr].vnodnbr = ordetmp; cblkptr->cblktab[cblknbr].cblknbr = 0; cblkptr->cblktab[cblknbr].cblktab = NULL; cblknbr ++; } } ordeptr->treenbr += cblknbr; /* These more number of tree nodes */ ordeptr->cblknbr += cblknbr - 1; /* These more number of column blocks */ cblkptr->cblknbr = cblknbr; peritab = ordeptr->peritab; if (grafptr->s.vnumtax == NULL) { /* If graph is original graph */ for (vertnum = actgrafdat.s.baseval; vertnum < vertnnd; vertnum ++) peritab[ordetab[parttax[vertnum]] ++] = vertnum; } else { /* Graph is not original graph */ const Gnum * restrict vnumtax; vnumtax = grafptr->s.vnumtax; for (vertnum = actgrafdat.s.baseval; vertnum < vertnnd; vertnum ++) peritab[ordetab[parttax[vertnum]] ++] = vnumtax[vertnum]; } memFree (ordetab); /* Free group leader */ kgraphExit (&actgrafdat); return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_th.h0000644000302600021200000000553013303015264022035 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_th.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the the separator thinner **/ /** vertex separation method. **/ /** **/ /** DATES : # Version 3.3 : from : 17 oct 1998 **/ /** to 17 oct 1998 **/ /** # Version 4.0 : from : 12 dec 2001 **/ /** to 01 jan 2002 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int vgraphSeparateTh (Vgraph * const); scotch_6.0.9/src/libscotch/kgraph_map_ml.c0000644000302600021200000004553613470115365021005 0ustar pelegrinpelegrin/* Copyright 2010,2011,2012,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_ml.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module maps an active graph **/ /** to a specific architecture graph **/ /** using a multi-level scheme. **/ /** **/ /** DATES : # Version 5.1 : from : 13 jul 2010 **/ /** to 14 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 25 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_ML #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "kgraph.h" #include "kgraph_map_ml.h" #include "kgraph_map_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** graph that is given on input. The coarser ** graphs differ at this stage from classical ** active graphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse graph has been built. ** - 1 : if threshold reached or on error. */ static int kgraphMapMlCoarsen ( Kgraph * restrict const finegrafptr, /*+ Finer graph +*/ Kgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const KgraphMapMlParam * const paraptr) /*+ Method parameters +*/ { GraphCoarsenMulti * restrict coarmulttab; Gnum coarvertnum; /* Number of current multinode vertex */ const Anum * restrict const finepfixtax = finegrafptr->pfixtax; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((finegrafptr->comploadavg == NULL) || (finegrafptr->comploaddlt == NULL)) { errorPrint ("kgraphMapMlCoarsen: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, paraptr->coarnbr, paraptr->coarval, GRAPHCOARSENNONE, finegrafptr->r.m.parttax, finegrafptr->pfixtax, finegrafptr->vfixnbr, &coargrafptr->vfixnbr) != 0) return (1); /* Return if coarsening failed */ finegrafptr->s.flagval &= ~KGRAPHFREECOMP; /* Now it's the coarse graph job to handle the load array */ coargrafptr->s.flagval = (coargrafptr->s.flagval & ~KGRAPHFREEFRON) | KGRAPHFREECOMP; /* Share frontier array */ coargrafptr->comploadavg = finegrafptr->comploadavg; /* By default, use fine target load arrays as coarse load arrays */ coargrafptr->comploaddlt = finegrafptr->comploaddlt; coargrafptr->frontab = finegrafptr->frontab; /* Share frontier array of finer graph as coarse frontier array */ coargrafptr->a = finegrafptr->a; coargrafptr->m.parttax = NULL; /* Do not allocate partition data yet */ coargrafptr->m.domntab = finegrafptr->m.domntab; /* Get domain private array if any */ coargrafptr->m.archptr = &coargrafptr->a; coargrafptr->m.grafptr = &coargrafptr->s; coargrafptr->m.flagval = finegrafptr->m.flagval & MAPPINGFREEDOMN; /* Get fine private domain array, if any */ finegrafptr->m.flagval &= ~MAPPINGFREEDOMN; /* Now it's the coarse graph job to handle the domain array, if any */ coargrafptr->m.domnorg = finegrafptr->m.domnorg; coargrafptr->m.domnnbr = 0; /* Number of domains not known yet */ coargrafptr->m.domnmax = finegrafptr->m.domnmax; /* Propagate relevant estimation */ coarmulttab = *coarmultptr; if (finegrafptr->r.m.parttax != NULL) { const Gnum * restrict fineparotax; const Gnum * restrict finevmlotax; Gnum * coarparotab; Gnum * coarvmlotab; Gnum coarvertnbr; coarvertnbr = coargrafptr->s.vertnbr; if ((coarparotab = (Anum *) memAlloc (coarvertnbr * sizeof (Anum))) == NULL) { errorPrint ("kgraphMapMlCoarsen: out of memory (1)"); return (1); } if ((coarvmlotab = (Gnum *) memAlloc (coarvertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphMapMlCoarsen: out of memory (2)"); memFree (coarparotab); return (1); } fineparotax = finegrafptr->r.m.parttax; finevmlotax = finegrafptr->r.vmlotax; for (coarvertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { Gnum finevertnum0; Gnum finevertnum1; finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; coarparotab[coarvertnum] = fineparotax[finevertnum0]; coarvmlotab[coarvertnum] = (finevmlotax != NULL) ? ((finevertnum0 == finevertnum1) ? 0 : finevmlotax[finevertnum1]) + finevmlotax[finevertnum0] : ((finevertnum0 == finevertnum1) ? 1 : 2); #ifdef SCOTCH_DEBUG_KGRAPH2 if ((fineparotax[finevertnum1] != fineparotax[finevertnum0]) && /* If vertices were not in the same part */ ((finegrafptr->pfixtax == NULL) || ((finepfixtax[finevertnum1] == -1) && /* And both are not fixed */ (finepfixtax[finevertnum0] == -1)))) { errorPrint ("kgraphMapMlCoarsen: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } coargrafptr->r.m.flagval = MAPPINGFREEPART; coargrafptr->r.m.grafptr = &coargrafptr->s; coargrafptr->r.m.archptr = finegrafptr->r.m.archptr; coargrafptr->r.m.parttax = coarparotab - coargrafptr->s.baseval; /* Set coarse arrays */ coargrafptr->r.m.domntab = finegrafptr->r.m.domntab; /* Clone old domain array */ coargrafptr->r.m.domnnbr = finegrafptr->r.m.domnnbr; coargrafptr->r.m.domnmax = finegrafptr->r.m.domnmax; coargrafptr->r.vmlotax = coarvmlotab - coargrafptr->s.baseval; coargrafptr->s.flagval |= KGRAPHFREEVMLO; } else { /* No old mapping */ coargrafptr->r.m.flagval = MAPPINGNONE; coargrafptr->r.m.parttax = NULL; coargrafptr->r.vmlotax = NULL; } if (finepfixtax != NULL) { /* If we have fixed vertices */ Gnum coarvertnbr; Anum * restrict coarpfixtab; Gnum coarvfixnbr; coarvertnbr = coargrafptr->s.vertnbr; if ((coarpfixtab = (Anum *) memAlloc (coarvertnbr * sizeof (Anum))) == NULL) { errorPrint ("kgraphMapMlCoarsen: out of memory (3)"); return (1); } coarvfixnbr = coarvertnbr; /* Assume all vertices are fixed */ for (coarvertnum = 0; coarvertnum < coarvertnbr; coarvertnum ++) { Anum coarpfixval; coarpfixval = finepfixtax[coarmulttab[coarvertnum].vertnum[0]]; coarvfixnbr += coarpfixval >> (sizeof (Anum) * 8 - 1); /* Accumulate -1's, that is, non-fixed vertices */ coarpfixtab[coarvertnum] = coarpfixval; #ifdef SCOTCH_DEBUG_KGRAPH2 if (finepfixtax[coarmulttab[coarvertnum].vertnum[1]] != coarpfixval) { errorPrint ("kgraphMapMlCoarsen: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } coargrafptr->s.flagval |= KGRAPHFREEPFIX; coargrafptr->pfixtax = coarpfixtab - coargrafptr->s.baseval; coargrafptr->vfixnbr = coarvfixnbr; } else { coargrafptr->pfixtax = NULL; coargrafptr->vfixnbr = 0; } coargrafptr->comploadrat = finegrafptr->comploadrat; coargrafptr->r.cmloval = finegrafptr->r.cmloval; coargrafptr->r.crloval = finegrafptr->r.crloval; coargrafptr->kbalval = finegrafptr->kbalval; coargrafptr->levlnum = finegrafptr->levlnum + 1; return (0); } /* This routine propagates the partitioning of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the partitioning is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to fine graph. ** - !0 : on error. */ static int kgraphMapMlUncoarsen ( Kgraph * restrict const finegrafptr, /*+ Finer graph +*/ Kgraph * restrict const coargrafptr, /*+ Coarser graph +*/ const GraphCoarsenMulti * const coarmulttab) /*+ Pointer to multinode array +*/ { const Anum * restrict coarparttax; /* Only known when coagrafptr is not NULL */ Gnum coarvertnnd; Gnum coarvertnum; Gnum * restrict coarfrontab; /* Coarse and fine frontiers arrays are merged */ Gnum coarfronnbr; Gnum coarfronnum; Gnum finefronnum; Anum * restrict fineparttax; /* May not have been allocated yet */ const GraphCoarsenMulti * const coarmulttax = coarmulttab - finegrafptr->s.baseval; const Gnum * restrict const fineverttax = finegrafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const finevendtax = finegrafptr->s.vendtax; const Gnum * restrict const fineedgetax = finegrafptr->s.edgetax; if (coargrafptr == NULL) { /* If no coarse graph provided */ if (mapAlloc (&finegrafptr->m) != 0) { /* Allocate partition array if needed */ errorPrint ("kdgraphMapMlUncoarsen: cannot allocate mapping (1)"); return (1); } kgraphFrst (finegrafptr); /* Assign all vertices to first subdomain */ return (0); } #ifdef SCOTCH_DEBUG_KGRAPH2 if (((finegrafptr->m.flagval & MAPPINGFREEDOMN) != 0) && /* Fine graph should not have a private domain array because of coarsening */ (finegrafptr->m.domntab != NULL)) { errorPrint ("kdgraphMapMlUncoarsen: internal error"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ finegrafptr->m.domnnbr = coargrafptr->m.domnnbr; /* Propagate coarse domain array */ finegrafptr->m.domnmax = coargrafptr->m.domnmax; finegrafptr->m.domntab = coargrafptr->m.domntab; finegrafptr->m.flagval |= MAPPINGFREEDOMN; coargrafptr->m.domntab = NULL; /* No need to free coarse graph domain array as it has been transferred */ if (mapAlloc (&finegrafptr->m) != 0) { /* Allocate partition array if needed */ errorPrint ("kdgraphMapMlUncoarsen: cannot allocate mapping (2)"); return (1); } finegrafptr->s.flagval |= KGRAPHFREECOMP; finegrafptr->comploadavg = coargrafptr->comploadavg; /* Propagate part load data in case it was changed at the coarser levels */ finegrafptr->comploaddlt = coargrafptr->comploaddlt; coargrafptr->comploadavg = NULL; /* No need to free coarse graph load array as it has been transferred */ fineparttax = finegrafptr->m.parttax; /* Fine part array is now allocated */ coarparttax = coargrafptr->m.parttax; coarfrontab = coargrafptr->frontab; for (coarvertnum = coargrafptr->s.baseval, coarvertnnd = coargrafptr->s.vertnnd; coarvertnum < coarvertnnd; coarvertnum ++) { Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ Anum partval; finevertnum0 = coarmulttax[coarvertnum].vertnum[0]; finevertnum1 = coarmulttax[coarvertnum].vertnum[1]; partval = coarparttax[coarvertnum]; fineparttax[finevertnum0] = partval; if (finevertnum0 != finevertnum1) fineparttax[finevertnum1] = partval; } finegrafptr->commload = coargrafptr->commload; for (coarfronnum = 0, finefronnum = coarfronnbr = coargrafptr->fronnbr; /* Re-cycle frontier array from coarse to fine graph */ coarfronnum < coarfronnbr; coarfronnum ++) { Gnum coarvertnum; Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ coarvertnum = coarfrontab[coarfronnum]; finevertnum0 = coarmulttax[coarvertnum].vertnum[0]; finevertnum1 = coarmulttax[coarvertnum].vertnum[1]; if (finevertnum0 != finevertnum1) { /* If multinode si made of two distinct vertices */ Gnum fineedgenum; Gnum partval; partval = coarparttax[coarvertnum]; #ifdef SCOTCH_DEBUG_KGRAPH2 coarfrontab[coarfronnum] = ~0; #endif /* SCOTCH_DEBUG_KGRAPH2 */ for (fineedgenum = fineverttax[finevertnum0]; fineedgenum < finevendtax[finevertnum0]; fineedgenum ++) { if (fineparttax[fineedgetax[fineedgenum]] != partval) { /* If first vertex belongs to frontier */ coarfrontab[coarfronnum] = finevertnum0; /* Record it in lieu of the coarse frontier vertex */ break; } } if (fineedgenum >= finegrafptr->s.vendtax[finevertnum0]) { /* If first vertex not in frontier */ coarfrontab[coarfronnum] = finevertnum1; /* Then second vertex must be in frontier */ continue; /* Skip to next multinode */ } for (fineedgenum = fineverttax[finevertnum1]; /* Check if second vertex also belongs to frontier */ fineedgenum < finevendtax[finevertnum1]; fineedgenum ++) { if (fineparttax[fineedgetax[fineedgenum]] != partval) { /* If second vertex belongs to frontier */ coarfrontab[finefronnum ++] = finevertnum1; /* Record it at the end of the recycled frontier array */ break; } } #ifdef SCOTCH_DEBUG_KGRAPH2 if (coarfrontab[coarfronnum] == ~0) { errorPrint ("kgraphMapMlUncoarsen: internal error"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } else /* If coarse vertex is single node */ coarfrontab[coarfronnum] = finevertnum0; /* Then it belongs to the frontier */ } finegrafptr->fronnbr = finefronnum; #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (finegrafptr) != 0) { errorPrint ("kgraphMapMlUncoarsen: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } /* This routine performs the ** partitioning recursion. ** It returns: ** - 0 : if partitioning could be computed. ** - 1 : on error. */ static int kgraphMapMl2 ( Kgraph * restrict const grafptr, /*+ Active graph +*/ const KgraphMapMlParam * const paraptr) /*+ Method parameters +*/ { Kgraph coargrafdat; GraphCoarsenMulti * coarmulttab; /* Pointer to un-based multinode array */ int o; if (kgraphMapMlCoarsen (grafptr, &coargrafdat, &coarmulttab, paraptr) == 0) { if (((o = kgraphMapMl2 (&coargrafdat, paraptr)) == 0) && ((o = kgraphMapMlUncoarsen (grafptr, &coargrafdat, coarmulttab)) == 0) && ((o = kgraphMapSt (grafptr, paraptr->stratasc)) != 0)) /* Apply ascending strategy */ errorPrint ("kgraphMapMl2: cannot apply ascending strategy"); kgraphExit (&coargrafdat); } else { /* Cannot coarsen due to lack of memory or error */ if (((o = kgraphMapMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = kgraphMapSt (grafptr, paraptr->stratlow)) != 0)) /* Apply low strategy */ errorPrint ("kgraphMapMl2: cannot apply low strategy"); } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the multi-level mapping. ** It returns: ** - 0 : if mapping could be computed. ** - 1 : on error. */ int kgraphMapMl ( Kgraph * const grafptr, /*+ Active graph +*/ const KgraphMapMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = grafptr->levlnum; /* Save graph level */ grafptr->levlnum = 0; /* Initialize coarsening level */ o = kgraphMapMl2 (grafptr, paraptr); /* Perform multi-level mapping */ grafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/hgraph_order_st.c0000644000302600021200000004021413303015264021332 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the generic call to the **/ /** graph ordering module, using a given **/ /** strategy. **/ /** **/ /** DATES : # Version 3.2 : from : 19 oct 1996 **/ /** to 09 sep 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 07 sep 2001 **/ /** # Version 4.0 : from : 27 dec 2001 **/ /** to 05 jan 2005 **/ /** # Version 5.0 : from : 31 may 2008 **/ /** to 31 may 2008 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_ST #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_bl.h" #include "hgraph_order_cc.h" #include "hgraph_order_cp.h" #include "hgraph_order_gp.h" #include "hgraph_order_hd.h" #include "hgraph_order_hf.h" #include "hgraph_order_kp.h" #include "hgraph_order_nd.h" #include "hgraph_order_si.h" #include "hgraph_order_st.h" #include "kgraph.h" #include "kgraph_map_st.h" #include "vgraph.h" #include "vgraph_separate_st.h" /* ** The static and global variables. */ static Hgraph hgraphorderstgraphdummy; /* Dummy graph for offset computations */ static union { /* Default parameters for block splitting method */ HgraphOrderBlParam param; /* Parameter zone */ StratNodeMethodData padding; /* To avoid reading out of structure */ } hgraphorderstdefaultbl = { { &stratdummy, 8 } }; static union { HgraphOrderCcParam param; StratNodeMethodData padding; } hgraphorderstdefaultcc = { { &stratdummy } }; static union { HgraphOrderCpParam param; StratNodeMethodData padding; } hgraphorderstdefaultcp = { { 0.70L, &stratdummy, &stratdummy } }; static union { HgraphOrderGpParam param; StratNodeMethodData padding; } hgraphorderstdefaultgp = { { 3 } }; static union { HgraphOrderHdParam param; StratNodeMethodData padding; } hgraphorderstdefaulthd = { { 1, 10000, 0.08L } }; static union { HgraphOrderHfParam param; StratNodeMethodData padding; } hgraphorderstdefaulthf = { { 1, 1000000, 0.08L } }; static union { HgraphOrderKpParam param; StratNodeMethodData padding; } hgraphorderstdefaultkp = { { 1, &stratdummy } }; static union { /* Default parameters for nested dissection method */ HgraphOrderNdParam param; StratNodeMethodData padding; } hgraphorderstdefaultnd = { { &stratdummy, &stratdummy, &stratdummy } }; static StratMethodTab hgraphorderstmethtab[] = { /* Graph ordering methods array */ { HGRAPHORDERSTMETHBL, "b", hgraphOrderBl, &hgraphorderstdefaultbl }, { HGRAPHORDERSTMETHCC, "o", hgraphOrderCc, &hgraphorderstdefaultcc }, { HGRAPHORDERSTMETHCP, "c", hgraphOrderCp, &hgraphorderstdefaultcp }, { HGRAPHORDERSTMETHGP, "g", hgraphOrderGp, &hgraphorderstdefaultgp }, { HGRAPHORDERSTMETHHD, "d", hgraphOrderHd, &hgraphorderstdefaulthd }, { HGRAPHORDERSTMETHHF, "f", hgraphOrderHf, &hgraphorderstdefaulthf }, { HGRAPHORDERSTMETHKP, "k", hgraphOrderKp, &hgraphorderstdefaultkp }, { HGRAPHORDERSTMETHND, "n", hgraphOrderNd, &hgraphorderstdefaultnd }, { HGRAPHORDERSTMETHSI, "s", hgraphOrderSi, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab hgraphorderstparatab[] = { /* The method parameter list */ { HGRAPHORDERSTMETHBL, STRATPARAMSTRAT, "strat", (byte *) &hgraphorderstdefaultbl.param, (byte *) &hgraphorderstdefaultbl.param.strat, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHBL, STRATPARAMINT, "cmin", (byte *) &hgraphorderstdefaultbl.param, (byte *) &hgraphorderstdefaultbl.param.cblkmin, NULL }, { HGRAPHORDERSTMETHCC, STRATPARAMSTRAT, "strat", (byte *) &hgraphorderstdefaultcc.param, (byte *) &hgraphorderstdefaultcc.param.straptr, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHCP, STRATPARAMDOUBLE, "rat", (byte *) &hgraphorderstdefaultcp.param, (byte *) &hgraphorderstdefaultcp.param.comprat, NULL }, { HGRAPHORDERSTMETHCP, STRATPARAMSTRAT, "cpr", (byte *) &hgraphorderstdefaultcp.param, (byte *) &hgraphorderstdefaultcp.param.stratcpr, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHCP, STRATPARAMSTRAT, "unc", (byte *) &hgraphorderstdefaultcp.param, (byte *) &hgraphorderstdefaultcp.param.stratunc, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHGP, STRATPARAMINT, "pass", (byte *) &hgraphorderstdefaultgp.param, (byte *) &hgraphorderstdefaultgp.param.passnbr, NULL }, { HGRAPHORDERSTMETHHD, STRATPARAMINT, "cmin", (byte *) &hgraphorderstdefaulthd.param, (byte *) &hgraphorderstdefaulthd.param.colmin, NULL }, { HGRAPHORDERSTMETHHD, STRATPARAMINT, "cmax", (byte *) &hgraphorderstdefaulthd.param, (byte *) &hgraphorderstdefaulthd.param.colmax, NULL }, { HGRAPHORDERSTMETHHD, STRATPARAMDOUBLE, "frat", (byte *) &hgraphorderstdefaulthd.param, (byte *) &hgraphorderstdefaulthd.param.fillrat, NULL }, { HGRAPHORDERSTMETHHF, STRATPARAMINT, "cmin", (byte *) &hgraphorderstdefaulthf.param, (byte *) &hgraphorderstdefaulthf.param.colmin, NULL }, { HGRAPHORDERSTMETHHF, STRATPARAMINT, "cmax", (byte *) &hgraphorderstdefaulthf.param, (byte *) &hgraphorderstdefaulthf.param.colmax, NULL }, { HGRAPHORDERSTMETHHF, STRATPARAMDOUBLE, "frat", (byte *) &hgraphorderstdefaulthf.param, (byte *) &hgraphorderstdefaulthf.param.fillrat, NULL }, { HGRAPHORDERSTMETHKP, STRATPARAMINT, "siz", (byte *) &hgraphorderstdefaultkp.param, (byte *) &hgraphorderstdefaultkp.param.partsiz, NULL }, { HGRAPHORDERSTMETHKP, STRATPARAMSTRAT, "strat", (byte *) &hgraphorderstdefaultkp.param, (byte *) &hgraphorderstdefaultkp.param.strat, (void *) &kgraphmapststratab }, { HGRAPHORDERSTMETHND, STRATPARAMSTRAT, "sep", (byte *) &hgraphorderstdefaultnd.param, (byte *) &hgraphorderstdefaultnd.param.sepstrat, (void *) &vgraphseparateststratab }, { HGRAPHORDERSTMETHND, STRATPARAMSTRAT, "ole", (byte *) &hgraphorderstdefaultnd.param, (byte *) &hgraphorderstdefaultnd.param.ordstratlea, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHND, STRATPARAMSTRAT, "ose", (byte *) &hgraphorderstdefaultnd.param, (byte *) &hgraphorderstdefaultnd.param.ordstratsep, (void *) &hgraphorderststratab }, { HGRAPHORDERSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab hgraphorderstcondtab[] = { /* Graph condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &hgraphorderstgraphdummy, (byte *) &hgraphorderstgraphdummy.s.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &hgraphorderstgraphdummy, (byte *) &hgraphorderstgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &hgraphorderstgraphdummy, (byte *) &hgraphorderstgraphdummy.vnlosum, NULL }, { STRATNODECOND, STRATPARAMDOUBLE, "mdeg", (byte *) &hgraphorderstgraphdummy, (byte *) &hgraphorderstgraphdummy.s.degrmax, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &hgraphorderstgraphdummy, (byte *) &hgraphorderstgraphdummy.vnohnbr, /* Only consider non-halo vertices */ NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab hgraphorderststratab = { /* Strategy tables for graph ordering methods */ hgraphorderstmethtab, hgraphorderstparatab, hgraphorderstcondtab }; /************************************/ /* */ /* This routine is the entry point */ /* for the graph ordering routines. */ /* */ /************************************/ /* This routine computes an ordering ** with respect to a given strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hgraphOrderSt ( const Hgraph * restrict const grafptr, /*+ Subgraph to order +*/ Order * restrict const ordeptr, /*+ Ordering to complete +*/ const Gnum ordenum, /*+ Index to start ordering at +*/ OrderCblk * restrict const cblkptr, /*+ Current column block +*/ const Strat * restrict const strat) /*+ Graph ordering strategy +*/ { StratTest val; int o; if (grafptr->vnohnbr == 0) /* Return immediately if nothing to do */ return (0); o = 0; switch (strat->type) { case STRATNODECONCAT : errorPrint ("hgraphOrderSt: concatenation operator not available for graph ordering strategies"); return (1); case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_HGRAPH2 if ((val.typetest != STRATTESTVAL) && (val.typenode != STRATPARAMLOG)) { errorPrint ("hgraphOrderSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_HGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : hgraphOrderSi (grafptr, ordeptr, ordenum, cblkptr); /* Always maintain a consistent ordering */ break; case STRATNODESELECT : errorPrint ("hgraphOrderSt: selection operator not available for graph ordering strategies"); return (1); #ifdef SCOTCH_DEBUG_HGRAPH2 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_HGRAPH2 */ default : #endif /* SCOTCH_DEBUG_HGRAPH2 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, ordeptr, ordenum, cblkptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_HGRAPH2 default : errorPrint ("hgraphOrderSt: invalid parameter"); return (1); #endif /* SCOTCH_DEBUG_HGRAPH2 */ } return (o); } scotch_6.0.9/src/libscotch/arch_torus.c0000644000302600021200000001666213560005302020340 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2013 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_torus.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the torus graph **/ /** target architectures. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 07 may 1996 **/ /** to 22 jul 1996 **/ /** # Version 3.2 : from : 16 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 05 nov 2003 **/ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 27 mar 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_TORUS #include "module.h" #include "common.h" #include "arch.h" #include "arch_mesh.h" #include "arch_torus.h" /***********************************************/ /* */ /* These are the 2-dimensional torus routines. */ /* */ /***********************************************/ /* This function returns the average ** distance between two rectangular ** domains (in fact the distance between ** the centers of the domains). */ Anum archTorus2DomDist ( const ArchTorus2 * const archptr, const ArchTorus2Dom * const dom0ptr, const ArchTorus2Dom * const dom1ptr) { Anum dc0, dc1; Anum ds0, ds1; dc0 = abs (dom0ptr->c[0][0] + dom0ptr->c[0][1] - dom1ptr->c[0][0] - dom1ptr->c[0][1]); ds0 = (dc0 > archptr->c[0]) ? (2 * archptr->c[0] - dc0) : dc0; dc1 = abs (dom0ptr->c[1][0] + dom0ptr->c[1][1] - dom1ptr->c[1][0] - dom1ptr->c[1][1]); ds1 = (dc1 > archptr->c[1]) ? (2 * archptr->c[1] - dc1) : dc1; return ((ds0 + ds1) >> 1); } /***********************************************/ /* */ /* These are the 3-dimensional torus routines. */ /* */ /***********************************************/ /* This function returns the average distance ** between two cubic domains (in fact the ** distance between the centers of the domains). */ Anum archTorus3DomDist ( const ArchTorus3 * const archptr, const ArchTorus3Dom * const dom0ptr, const ArchTorus3Dom * const dom1ptr) { Anum dc0, dc1, dc2; Anum ds0, ds1, ds2; dc0 = abs (dom0ptr->c[0][0] + dom0ptr->c[0][1] - dom1ptr->c[0][0] - dom1ptr->c[0][1]); ds0 = (dc0 > archptr->c[0]) ? (2 * archptr->c[0] - dc0) : dc0; dc1 = abs (dom0ptr->c[1][0] + dom0ptr->c[1][1] - dom1ptr->c[1][0] - dom1ptr->c[1][1]); ds1 = (dc1 > archptr->c[1]) ? (2 * archptr->c[1] - dc1) : dc1; dc2 = abs (dom0ptr->c[2][0] + dom0ptr->c[2][1] - dom1ptr->c[2][0] - dom1ptr->c[2][1]); ds2 = (dc2 > archptr->c[2]) ? (2 * archptr->c[2] - dc2) : dc2; return ((ds0 + ds1 + ds2) >> 1); } /***********************************************/ /* */ /* These are the x-dimensional torus routines. */ /* */ /***********************************************/ /* This function returns the average distance ** between two X-dimensional domains (that is, ** the Manhattan distance between the centers ** of the domains). */ Anum archTorusXDomDist ( const ArchTorusX * const archptr, const ArchTorusXDom * const dom0ptr, const ArchTorusXDom * const dom1ptr) { Anum dimnnum; Anum distval; for (dimnnum = 0, distval = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { Anum disttmp; disttmp = abs (dom0ptr->c[dimnnum][0] + dom0ptr->c[dimnnum][1] - dom1ptr->c[dimnnum][0] - dom1ptr->c[dimnnum][1]); distval += (disttmp > archptr->c[dimnnum]) ? (2 * archptr->c[dimnnum] - disttmp) : disttmp; } return (distval >> 1); } /* This function creates the MPI_Datatype for ** xD torus domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archTorusXDomMpiType ( const ArchTorusX * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2 * archptr->dimmax, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/hdgraph_order_st.c0000644000302600021200000002547613470115365021523 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the generic call to the **/ /** distributed graph ordering module, **/ /** using a given strategy. **/ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 21 aug 2006 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to 11 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HDGRAPH_ORDER_ST #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_st.h" #include "dgraph.h" #include "dorder.h" #include "hdgraph.h" #include "hdgraph_order_nd.h" #include "hdgraph_order_si.h" #include "hdgraph_order_sq.h" #include "hdgraph_order_st.h" #include "vdgraph.h" #include "vdgraph_separate_st.h" /* ** The static and global variables. */ static Hdgraph hdgraphorderstgraphdummy; /* Dummy graph for offset computations */ static union { /* Default parameters for nested dissection method */ HdgraphOrderNdParam param; StratNodeMethodData padding; } hdgraphorderstdefaultnd = { { &stratdummy, &stratdummy, &stratdummy } }; static union { /* Default parameters for sequential method */ HdgraphOrderSqParam param; StratNodeMethodData padding; } hdgraphorderstdefaultsq = { { &stratdummy } }; static StratMethodTab hdgraphorderstmethtab[] = { /* Graph ordering methods array */ { HDGRAPHORDERSTMETHND, "n", hdgraphOrderNd, &hdgraphorderstdefaultnd }, { HDGRAPHORDERSTMETHSI, "s", hdgraphOrderSi, NULL }, { HDGRAPHORDERSTMETHSQ, "q", hdgraphOrderSq, &hdgraphorderstdefaultsq }, { -1, NULL, NULL, NULL } }; static StratParamTab hdgraphorderstparatab[] = { /* The method parameter list */ { HDGRAPHORDERSTMETHND, STRATPARAMSTRAT, "sep", (byte *) &hdgraphorderstdefaultnd.param, (byte *) &hdgraphorderstdefaultnd.param.sepstrat, (void *) &vdgraphseparateststratab }, { HDGRAPHORDERSTMETHND, STRATPARAMSTRAT, "ole", (byte *) &hdgraphorderstdefaultnd.param, (byte *) &hdgraphorderstdefaultnd.param.ordstratlea, (void *) &hdgraphorderststratab }, { HDGRAPHORDERSTMETHND, STRATPARAMSTRAT, "ose", (byte *) &hdgraphorderstdefaultnd.param, (byte *) &hdgraphorderstdefaultnd.param.ordstratsep, (void *) &hdgraphorderststratab }, { HDGRAPHORDERSTMETHND, STRATPARAMSTRAT, "osq", (byte *) &hdgraphorderstdefaultnd.param, (byte *) &hdgraphorderstdefaultnd.param.ordstratseq, (void *) &hgraphorderststratab }, { HDGRAPHORDERSTMETHSQ, STRATPARAMSTRAT, "strat", (byte *) &hdgraphorderstdefaultsq.param, (byte *) &hdgraphorderstdefaultsq.param.ordstratseq, (void *) &hgraphorderststratab }, { HDGRAPHORDERSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab hdgraphorderstcondtab[] = { /* Graph condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.edgeglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.veloglbsum, NULL }, { STRATNODECOND, STRATPARAMDOUBLE, "mdeg", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.degrglbmax, NULL }, { STRATNODECOND, STRATPARAMINT, "proc", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.procglbnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "rank", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.proclocnum, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &hdgraphorderstgraphdummy, (byte *) &hdgraphorderstgraphdummy.s.vertglbnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab hdgraphorderststratab = { /* Strategy tables for graph ordering methods */ hdgraphorderstmethtab, hdgraphorderstparatab, hdgraphorderstcondtab }; /************************************/ /* */ /* This routine is the entry point */ /* for the graph ordering routines. */ /* */ /************************************/ /* This routine computes an ordering ** with respect to a given strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int hdgraphOrderSt ( const Hdgraph * restrict const grafptr, /*+ Subgraph to order +*/ DorderCblk * restrict const cblkptr, /*+ Current column block +*/ const Strat * restrict const strat) /*+ Graph ordering strategy +*/ { StratTest val; int o; if (grafptr->s.vertglbnbr == 0) /* Return immediately if nothing to do */ return (0); o = 0; switch (strat->type) { case STRATNODECONCAT : errorPrint ("hdgraphOrderSt: concatenation operator not available for graph ordering strategies"); return (1); case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if ((val.typetest != STRATTESTVAL) && (val.typenode != STRATPARAMLOG)) { errorPrint ("hdgraphOrderSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = hdgraphOrderSt (grafptr, cblkptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = hdgraphOrderSt (grafptr, cblkptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : hdgraphOrderSi (grafptr, cblkptr); /* Always maintain a consistent ordering */ break; case STRATNODESELECT : errorPrint ("hdgraphOrderSt: selection operator not available for graph ordering strategies"); return (1); #ifdef SCOTCH_DEBUG_HDGRAPH2 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_HDGRAPH2 */ default : #endif /* SCOTCH_DEBUG_HDGRAPH2 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, cblkptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_HDGRAPH2 default : errorPrint ("hdgraphOrderSt: invalid parameter"); return (1); #endif /* SCOTCH_DEBUG_HDGRAPH2 */ } return (o); } scotch_6.0.9/src/libscotch/wgraph_part_gp.h0000644000302600021200000000675413465315041021211 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_gp.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the graph partitioning rountine **/ /** based on a vertex-oriented version of **/ /** the Gibbs-Poole-Stockmeyer algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ System-defined constants. +*/ #define WGRAPHSEPAGPSUBBITS 4 #define WGRAPHGPCHOOSELASTPART /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct WgraphPartGpParam_ { INT passnbr; /*+ Number of passes to do +*/ } WgraphPartGpParam; /*+ The complementary vertex structure. +*/ typedef struct WgraphPartGpVertex_ { Gnum partlvl; struct WgraphPartGpVertex_ * prev; struct WgraphPartGpVertex_ * next; Gnum isinstack; } WgraphPartGpVertex; /* ** The function prototypes. */ int wgraphPartGp (Wgraph * restrict const, const WgraphPartGpParam * restrict const); scotch_6.0.9/src/libscotch/dgraph_scatter.c0000644000302600021200000004332013560005435021157 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_scatter.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** **/ /** FUNCTION : This module contains the routine that **/ /** builds a distributed graph by evenly **/ /** distributing the pieces of a central- **/ /** ized graph across processors. **/ /** **/ /** # Version P0.0 : from : 01 apr 1997 **/ /** to 20 jun 1997 **/ /** # Version P0.1 : from : 14 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version P0.2 : from : 19 may 1999 **/ /** to 19 may 1999 **/ /** # Version 5.0 : from : 27 apr 2006 **/ /** to : 10 sep 2007 **/ /** **/ /** NOTES : # The definitions of MPI_Scatter and **/ /** MPI_Scatterv indicate that elements **/ /** in the send array should not be read **/ /** more than once. Great care should be **/ /** taken to enforce this rule, especial- **/ /** ly when the number of vertices in the **/ /** centralized graph is smaller than the **/ /** number of processors. **/ /** **/ /** # When the source graph is not compact, **/ /** compacted arrays are created prior to **/ /** sending parts of them. In a really **/ /** efficient implementation, these **/ /** should be created by pieces and sent **/ /** in a one-to-one way so as to save as **/ /** much memory as possible. This is yet **/ /** to be done. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_SCATTER #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" /* Service function which creates compact ** arrays from non-compact ones. */ static void dgraphScatter2 ( const Graph * restrict const cgrfptr, Gnum * restrict verttax, Gnum * restrict edgetax, Gnum * restrict edlotax) { Gnum vertnum; /* Current vertex number in compacted arrays */ Gnum edgenum; /* Current edge number in compacted arrays */ for (vertnum = edgenum = cgrfptr->baseval; vertnum < cgrfptr->vertnnd; vertnum ++) { Gnum edgetmp; Gnum edgetnd; verttax[vertnum] = edgenum; edgetmp = cgrfptr->verttax[vertnum]; edgetnd = cgrfptr->vendtax[vertnum]; for ( ; edgetmp < edgetnd; edgetmp ++, edgenum ++) edgetax[edgenum] = cgrfptr->edgetax[edgetmp]; if (edlotax != NULL) { for (edgetmp = cgrfptr->verttax[vertnum], edgenum = verttax[vertnum]; edgetmp < edgetnd; edgetmp ++, edgenum ++) edlotax[edgenum] = cgrfptr->edlotax[edgetmp]; } } verttax[vertnum] = edgenum; } /* This function evenly distributes the pieces ** of a centralized graph across processors. ** It returns: ** - 0 : if scattering has succeeded. ** - !0 : on error. */ int dgraphScatter ( Dgraph * restrict const grafptr, /* Distributed graph */ const Graph * restrict const cgrfptr) /* Centralized graph to scatter */ { Gnum baseval; /* Base value */ Gnum * restrict verttax; /* Array of vertices when edge array is not compact */ Gnum * restrict edgetax; /* Compact array of edges when edge aray is not compact */ Gnum * restrict edlotax; /* Compact array of edges weights */ Gnum vertlocnum; /* Current local vertex number */ Gnum vertlocnbr; /* Number of local vertices */ Gnum vertlocnnd; Gnum * restrict vertloctax; /* Array of local vertices */ Gnum * restrict veloloctax; /* Array of local vertex weights */ Gnum velolocnbr; Gnum vlbllocnbr; Gnum * restrict vlblloctax; /* Array of local vertex labels */ Gnum edgelocnbr; /* Number of local edges */ Gnum edlolocnbr; Gnum * restrict edgeloctax; /* Array of local edges */ Gnum * restrict edloloctax; /* Array of local edge weights */ int * restrict attrdsptab; /* Displacement array for scatter operations */ int * restrict attrcnttab; /* Count array for scatter operations */ Gnum * restrict attrdattab; /* Temporary array to avoid multiple scatter reads */ Gnum reduloctab[9]; /* Arrays for reductions */ Gnum reduglbtab[9]; Gnum vertlocadj; /* Local vertex array adjust */ int protnum; /* Root process */ if (cgrfptr != NULL) { /* If centralized graph provided */ if (cgrfptr->vendtax != (cgrfptr->verttax + 1)) { /* If edge array is not compact */ Gnum edlonbr; edlonbr = (cgrfptr->edlotax != NULL) ? cgrfptr->edgenbr : 0; if (memAllocGroup ((void **) (void *) &verttax, (size_t) ((cgrfptr->vertnbr + 1) * sizeof (Gnum)), &edgetax, (size_t) (cgrfptr->edgenbr * sizeof (Gnum)), &edlotax, (size_t) (edlonbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphScatter: out of memory (1)"); return (1); } verttax -= cgrfptr->baseval; edgetax -= cgrfptr->baseval; edlotax = (cgrfptr->edlotax != NULL) ? (edlotax - cgrfptr->baseval) : NULL; dgraphScatter2 (cgrfptr, verttax, edgetax, edlotax); } else { verttax = cgrfptr->verttax; edgetax = cgrfptr->edgetax; edlotax = cgrfptr->edlotax; } reduloctab[0] = 1; /* This process is the root */ reduloctab[1] = (Gnum) grafptr->proclocnum; /* Get its number */ reduloctab[2] = cgrfptr->baseval; reduloctab[3] = cgrfptr->vertnbr; reduloctab[4] = cgrfptr->edgenbr; reduloctab[5] = cgrfptr->velosum; reduloctab[6] = (cgrfptr->velotax != NULL) ? 1 : 0; reduloctab[7] = (cgrfptr->vlbltax != NULL) ? 1 : 0; reduloctab[8] = (cgrfptr->edlotax != NULL) ? 1 : 0; } else { reduloctab[0] = /* This process is not the root */ reduloctab[1] = reduloctab[2] = reduloctab[3] = reduloctab[4] = reduloctab[5] = reduloctab[6] = reduloctab[7] = reduloctab[8] = 0; } if (MPI_Allreduce (reduloctab, reduglbtab, 9, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (1)"); return (1); } if (reduglbtab[0] != 1) { errorPrint ("dgraphScatter: should have only one root"); return (1); } baseval = reduglbtab[2]; vertlocnbr = DATASIZE (reduglbtab[3], grafptr->procglbnbr, grafptr->proclocnum); velolocnbr = (reduglbtab[6] != 0) ? vertlocnbr : 0; vlbllocnbr = (reduglbtab[7] != 0) ? vertlocnbr : 0; if (memAllocGroup ((void **) (void *) &vertloctax, (size_t) ((vertlocnbr + 1) * sizeof (Gnum)), &veloloctax, (size_t) (velolocnbr * sizeof (Gnum)), &vlblloctax, (size_t) (vlbllocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphScatter: out of memory (2)"); if ((cgrfptr != NULL) && (cgrfptr->verttax != verttax)) memFree (verttax + baseval); /* Free group leader */ return (1); } vertloctax -= baseval; veloloctax = (reduglbtab[6] != 0) ? (veloloctax - baseval) : NULL; vlblloctax = (reduglbtab[7] != 0) ? (vlblloctax - baseval) : NULL; protnum = (int) reduglbtab[1]; if (cgrfptr != NULL) { /* If root process */ Gnum procnum; if (memAllocGroup ((void **) (void *) &attrdattab, (size_t) (grafptr->procglbnbr * sizeof (Gnum)), &attrdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &attrcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphScatter: out of memory (3)"); memFree (vertloctax + baseval); if (cgrfptr->verttax != verttax) memFree (verttax + baseval); /* Free group leader */ return (1); } attrdsptab[0] = 0; /* Build arrays for MPI_Scatterv */ attrcnttab[0] = DATASIZE (reduglbtab[3], grafptr->procglbnbr, 0); attrdattab[0] = verttax[attrdsptab[0] + attrcnttab[0] + baseval]; for (procnum = 1; procnum < grafptr->procglbnbr; procnum ++) { attrdsptab[procnum] = attrdsptab[procnum - 1] + attrcnttab[procnum - 1]; attrcnttab[procnum] = DATASIZE (reduglbtab[3], grafptr->procglbnbr, procnum); attrdattab[procnum] = verttax[attrdsptab[procnum] + attrcnttab[procnum] + baseval]; } if (MPI_Scatterv (verttax + baseval, attrcnttab, attrdsptab, GNUM_MPI, /* Perform two scatters since cannot avoid multiple reads with only one scatter */ vertloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (2)"); return (1); } if (MPI_Scatter (attrdattab, 1, GNUM_MPI, vertloctax + baseval + vertlocnbr, 1, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (3)"); return (1); } if (reduglbtab[6] != 0) { /* Scatter vertex loads */ if (MPI_Scatterv (cgrfptr->velotax + baseval, attrcnttab, attrdsptab, GNUM_MPI, veloloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (4)"); return (1); } } if (reduglbtab[7] != 0) { /* Scatter labels */ if (MPI_Scatterv (cgrfptr->vlbltax + baseval, attrcnttab, attrdsptab, GNUM_MPI, vlblloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (5)"); return (1); } } } else { /* Process is not root */ if (MPI_Scatterv (NULL, NULL, NULL, GNUM_MPI, vertloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (6)"); return (1); } if (MPI_Scatter (NULL, 1, GNUM_MPI, vertloctax + baseval + vertlocnbr, 1, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (7)"); return (1); } if (reduglbtab[6] != 0) { /* Scatter vertex loads */ if (MPI_Scatterv (NULL, NULL, NULL, GNUM_MPI, veloloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (8)"); return (1); } } if (reduglbtab[7] != 0) { /* Scatter labels */ if (MPI_Scatterv (NULL, NULL, NULL, GNUM_MPI, vlblloctax + baseval, vertlocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (9)"); return (1); } } } vertlocadj = vertloctax[baseval] - baseval; /* Compute local indices */ for (vertlocnum = baseval, vertlocnnd = vertlocnbr + baseval; vertlocnum <= vertlocnnd; vertlocnum ++) vertloctax[vertlocnum] -= vertlocadj; edgelocnbr = vertloctax[vertlocnnd] - vertloctax[baseval]; edlolocnbr = (reduglbtab[8] != 0) ? edgelocnbr : 0; if (memAllocGroup ((void **) (void *) &edgeloctax, (size_t) (edgelocnbr * sizeof (Gnum)), &edloloctax, (size_t) (edlolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphScatter: out of memory (4)"); if (cgrfptr != NULL) { memFree (attrdattab); /* Free group leader */ if (cgrfptr->verttax != verttax) memFree (verttax + baseval); /* Free group leader */ } memFree (vertloctax + baseval); return (1); } edgeloctax -= baseval; edloloctax = (reduglbtab[8] != 0) ? edloloctax - baseval : NULL; if (cgrfptr != NULL) { /* If root process */ Gnum procnum; for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { /* Build arrays for MPI_Scatterv */ attrcnttab[procnum] = verttax[attrdsptab[procnum] + attrcnttab[procnum]+baseval] - verttax[attrdsptab[procnum] + baseval]; attrdsptab[procnum] = verttax[attrdsptab[procnum] + baseval] - baseval; } if (MPI_Scatterv (edgetax + baseval, attrcnttab, attrdsptab, GNUM_MPI, edgeloctax + baseval, edgelocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (10)"); return (1); } if (reduglbtab[8] != 0) { if (MPI_Scatterv (edlotax + baseval, attrcnttab, attrdsptab, GNUM_MPI, edloloctax + baseval, edgelocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (11)"); return (1); } } memFree (attrdattab); /* Free group leader */ if (cgrfptr->verttax != verttax) memFree (verttax + baseval); } else { /* Process is not root */ if (MPI_Scatterv (NULL, NULL, NULL, GNUM_MPI, edgeloctax + baseval , edgelocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (12)"); return (1); } if (reduglbtab[8] != 0) { if (MPI_Scatterv (NULL, NULL, NULL, GNUM_MPI, edloloctax + baseval , edgelocnbr, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphScatter: communication error (13)"); return (1); } } } if (dgraphBuild (grafptr, baseval, vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, veloloctax, NULL, NULL, edgelocnbr, edgelocnbr, edgeloctax, NULL, edloloctax) != 0) { memFree (edgeloctax + baseval); memFree (vertloctax + baseval); return (1); } grafptr->flagval |= DGRAPHFREETABS | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* Give ownership of arrays to graph */ grafptr->vlblloctax = vlblloctax; /* Add labels afterwards, since relabeling already done */ return (0); } scotch_6.0.9/src/libscotch/bdgraph_bipart_bd.c0000644000302600021200000005370113560005346021607 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_bd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a bipartition of **/ /** the given distributed separator graph **/ /** by creating a band graph of given witdh **/ /** around the current frontier, computing **/ /** an improved bipartition of the band **/ /** graph, and projecting back the obtained **/ /** frontier to the original graph. **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to : 15 may 2018 **/ /** **/ /** NOTES : # Since only edges from local vertices **/ /** to local anchors are created in **/ /** dgraphBand(), the communication const **/ /** might be wrong if a local vertex of **/ /** the last layer is linked to a remote **/ /** vertex of different part which was **/ /** not in the band graph. Hence, commun- **/ /** ication costs have to be recomputed **/ /** from scratch. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_BD #include "module.h" #include "common.h" #include "parser.h" #include "arch.h" #include "dgraph.h" #include "dgraph_halo.h" #include "bdgraph.h" #include "bdgraph_bipart_bd.h" #include "bdgraph_bipart_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a distributed band graph ** of given width around the current frontier and ** applies distributed bipartitioning routines to it. ** The distributed graph is not guaranteed to be ** balanced at at all. ** It returns: ** - 0 : if the distributed band graph could be computed. ** - !0 : on error. */ int bdgraphBipartBd ( Bdgraph * const orggrafptr, /*+ Distributed graph +*/ const BdgraphBipartBdParam * const paraptr) /*+ Method parameters +*/ { Bdgraph bndgrafdat; /* Bipartitioning band graph structure */ Gnum bndvertancnnd; /* End of local vertex array, without anchors */ Gnum bndvertlocnbr1; /* Number of band graph vertices in part 1 except anchor 1 */ Gnum bndvertlocnum; Gnum bndvertlvlnum; /* Based number of first band vertex in last layer */ Gnum bndvertlocancadj; /* Flag set when anchor(s) represent unexistent vertices */ Gnum bndvertglbancadj; /* Global adjustment of anchor vertices */ Gnum bndveexlocsum; /* Local sum of veexloctax array cells for band graph */ Gnum bndveexlocsum0; /* Local sum of veexloctax array cells in part 0 for band graph */ Gnum bndedlolocval; Gnum bndfronlocnum; Gnum orgfronlocnum; int * restrict orgflagloctab; Gnum orgvertlocnum; Gnum orgedlolocval; const int * restrict orgprocsidtab; int orgprocsidnbr; int orgprocsidnum; int orgprocsidval; Gnum complocsizeadj0; Gnum commlocloadintn; Gnum commlocloadintn2; /* Twice twice (4 times) the internal communication load of last layer */ Gnum commlocloadextn; Gnum commlocgainextn; Gnum reduloctab[7]; Gnum reduglbtab[7]; DgraphHaloRequest requdat; if (orggrafptr->fronglbnbr == 0) /* If no separator vertices, apply strategy to full (original) graph */ return (bdgraphBipartSt (orggrafptr, paraptr->stratorg)); if (dgraphBand (&orggrafptr->s, orggrafptr->fronlocnbr, orggrafptr->fronloctab, orggrafptr->partgsttax, orggrafptr->complocload0, orggrafptr->s.velolocsum - orggrafptr->complocload0, paraptr->distmax, &bndgrafdat.s, &bndgrafdat.fronloctab, &bndgrafdat.partgsttax, &bndvertlvlnum, &bndvertlocnbr1, &bndvertlocancadj) != 0) { errorPrint ("bdgraphBipartBd: cannot create band graph"); return (1); } bndvertancnnd = bndgrafdat.s.vertlocnnd - 2; reduloctab[0] = 0; /* Assume no memory allocation problem */ bndveexlocsum = bndveexlocsum0 = 0; bndgrafdat.veexloctax = NULL; /* Assume no external gains */ if (orggrafptr->veexloctax != NULL) { if ((bndgrafdat.veexloctax = memAlloc (bndgrafdat.s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphBipartBd: out of memory (1)"); reduloctab[0] = 1; /* Memory error */ } else { Gnum bndvertlocnum; bndgrafdat.veexloctax -= bndgrafdat.s.baseval; for (bndvertlocnum = bndgrafdat.s.baseval; bndvertlocnum < bndvertancnnd; bndvertlocnum ++) { Gnum veexval; veexval = orggrafptr->veexloctax[bndgrafdat.s.vnumloctax[bndvertlocnum]]; bndgrafdat.veexloctax[bndvertlocnum] = veexval; bndveexlocsum += veexval; bndveexlocsum0 += veexval & (((Gnum) bndgrafdat.partgsttax[bndvertlocnum]) - 1); } } } reduloctab[1] = bndgrafdat.s.vendloctax[bndvertancnnd] - bndgrafdat.s.vertloctax[bndvertancnnd] - (orggrafptr->s.procglbnbr - 1); /* Anchor degrees */ reduloctab[2] = bndgrafdat.s.vendloctax[bndvertancnnd + 1] - bndgrafdat.s.vertloctax[bndvertancnnd + 1] - (orggrafptr->s.procglbnbr - 1); bndgrafdat.complocsize0 = bndgrafdat.s.vertlocnbr - (bndvertlocnbr1 + 1); /* Add 1 for anchor vertex 1 */ complocsizeadj0 = orggrafptr->complocsize0 - bndgrafdat.complocsize0; /* -1 less because of anchor 0 */ reduloctab[3] = bndgrafdat.complocsize0; reduloctab[4] = bndvertlocancadj; /* Sum increases in size and load */ reduloctab[5] = bndveexlocsum; reduloctab[6] = bndveexlocsum0; if (MPI_Allreduce (reduloctab, reduglbtab, 7, GNUM_MPI, MPI_SUM, orggrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartBd: communication error (1)"); return (1); } if (reduglbtab[0] != 0) { bdgraphExit (&bndgrafdat); return (1); } if ((reduglbtab[1] == 0) || /* If graph is too small to have any usable anchors */ (reduglbtab[2] == 0)) { bdgraphExit (&bndgrafdat); return (bdgraphBipartSt (orggrafptr, paraptr->stratorg)); } bndvertglbancadj = reduglbtab[4]; bndgrafdat.veexglbsum = orggrafptr->veexglbsum; /* All external gains preserved */ bndgrafdat.fronlocnbr = orggrafptr->fronlocnbr; /* All separator vertices are kept in band graph */ bndgrafdat.fronglbnbr = orggrafptr->fronglbnbr; bndgrafdat.complocload0 = orggrafptr->complocload0 + bndvertlocancadj; /* All loads are kept in band graph */ bndgrafdat.compglbload0 = orggrafptr->compglbload0 + bndvertglbancadj; bndgrafdat.compglbload0min = orggrafptr->compglbload0min + bndvertglbancadj; /* Tilt extrema loads according to adjustments */ bndgrafdat.compglbload0max = orggrafptr->compglbload0max + bndvertglbancadj; bndgrafdat.compglbload0avg = orggrafptr->compglbload0avg + bndvertglbancadj; /* Tilt average load according to adjustments */ bndgrafdat.compglbload0dlt = orggrafptr->compglbload0dlt; bndgrafdat.compglbsize0 = reduglbtab[3]; bndgrafdat.commglbload = orggrafptr->commglbload; bndgrafdat.commglbgainextn = orggrafptr->commglbgainextn; bndgrafdat.commglbloadextn0 = orggrafptr->commglbloadextn0; bndgrafdat.commglbgainextn0 = orggrafptr->commglbgainextn0; bndgrafdat.bbalglbval = orggrafptr->bbalglbval; bndgrafdat.domndist = orggrafptr->domndist; bndgrafdat.domnwght[0] = orggrafptr->domnwght[0]; bndgrafdat.domnwght[1] = orggrafptr->domnwght[1]; bndgrafdat.levlnum = orggrafptr->levlnum; if (bndgrafdat.veexloctax != NULL) { Gnum bndveexglbanc0; Gnum bndveexglbanc1; bndveexglbanc0 = (orggrafptr->veexglbsum + orggrafptr->commglbgainextn) / 2 - reduglbtab[6]; /* Compute global external gains of anchors */ bndveexglbanc1 = (orggrafptr->veexglbsum - bndveexglbanc0) - reduglbtab[5]; bndgrafdat.veexloctax[bndvertancnnd] = DATASIZE (bndveexglbanc0, bndgrafdat.s.procglbnbr, bndgrafdat.s.proclocnum); /* Spread gains across local anchors */ bndgrafdat.veexloctax[bndvertancnnd + 1] = DATASIZE (bndveexglbanc1, bndgrafdat.s.procglbnbr, bndgrafdat.s.proclocnum); } #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (&bndgrafdat) != 0) { errorPrint ("bdgraphBipartBd: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ if (bdgraphBipartSt (&bndgrafdat, paraptr->stratbnd) != 0) { /* Separate distributed band graph */ errorPrint ("bdgraphBipartBd: cannot separate band graph"); bdgraphExit (&bndgrafdat); return (1); } reduloctab[0] = (Gnum) bndgrafdat.partgsttax[bndvertancnnd]; /* Check if anchor vertices remain in their parts */ reduloctab[1] = (Gnum) bndgrafdat.partgsttax[bndvertancnnd + 1]; reduloctab[2] = complocsizeadj0; reduloctab[3] = 0; /* Assume memory allocation is all right */ if ((orgflagloctab = memAlloc (flagSize (orggrafptr->s.vertlocnnd) * sizeof (int))) == NULL) { /* Eventually keep space for based indices */ errorPrint ("bdgraphBipartBd: out of memory (2)"); reduloctab[3] = 1; } if (MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 4, GNUM_MPI, MPI_SUM, orggrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartBd: communication error (2)"); return (1); } if (((reduglbtab[0] + reduglbtab[1]) != orggrafptr->s.procglbnbr) || /* If not all anchors of initial same parts in same parts */ ((reduglbtab[0] != 0) && (reduglbtab[0] != orggrafptr->s.procglbnbr)) || (reduglbtab[3] != 0)) { if (orgflagloctab != NULL) memFree (orgflagloctab); bdgraphExit (&bndgrafdat); /* Apply original strategy to full graph */ return (bdgraphBipartSt (orggrafptr, paraptr->stratorg)); } if (dgraphGhst (&bndgrafdat.s) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("bdgraphBipartBd: cannot compute ghost edge array"); memFree (orgflagloctab); bdgraphExit (&bndgrafdat); return (1); } if (reduglbtab[0] == orggrafptr->s.procglbnbr) { /* If all anchors swapped parts, swap all parts of original vertices */ Gnum orgvertnum; orggrafptr->complocsize0 = orggrafptr->s.vertlocnbr - reduloctab[2] - bndgrafdat.s.vertlocnbr + bndgrafdat.complocsize0; orggrafptr->compglbsize0 = orggrafptr->s.vertglbnbr - reduglbtab[2] - bndgrafdat.s.vertglbnbr + bndgrafdat.compglbsize0; for (orgvertnum = orggrafptr->s.baseval; orgvertnum < orggrafptr->s.vertlocnnd; orgvertnum ++) orggrafptr->partgsttax[orgvertnum] ^= 1; } else { orggrafptr->complocsize0 = reduloctab[2] + bndgrafdat.complocsize0; orggrafptr->compglbsize0 = reduglbtab[2] + bndgrafdat.compglbsize0; } for (bndvertlocnum = bndgrafdat.s.baseval; bndvertlocnum < bndvertancnnd; bndvertlocnum ++) /* Update part array of all vertices except anchors */ orggrafptr->partgsttax[bndgrafdat.s.vnumloctax[bndvertlocnum]] = bndgrafdat.partgsttax[bndvertlocnum]; dgraphHaloAsync (&orggrafptr->s, (byte *) (orggrafptr->partgsttax + orggrafptr->s.baseval), GRAPHPART_MPI, &requdat); /* Share part array of full graph */ commlocloadintn = commlocloadextn = commlocgainextn = 0; bndedlolocval = 1; /* Assume no edge loads */ for (bndvertlocnum = bndgrafdat.s.baseval; bndvertlocnum < bndvertlvlnum; bndvertlocnum ++) { /* For all vertices of band graph save for last layer */ Gnum bndedgelocnum; Gnum bndedgelocnnd; Gnum bndpartval; bndpartval = (Gnum) bndgrafdat.partgsttax[bndvertlocnum]; if (bndgrafdat.veexloctax != NULL) { commlocloadextn += bndgrafdat.veexloctax[bndvertlocnum] * bndpartval; commlocgainextn += bndgrafdat.veexloctax[bndvertlocnum] * (1 - bndpartval * 2); } for (bndedgelocnum = bndgrafdat.s.vertloctax[bndvertlocnum], bndedgelocnnd = bndgrafdat.s.vendloctax[bndvertlocnum]; bndedgelocnum < bndedgelocnnd; bndedgelocnum ++) { Gnum bndvertlocend; Gnum bndpartend; bndvertlocend = bndgrafdat.s.edgegsttax[bndedgelocnum]; bndpartend = bndgrafdat.partgsttax[bndvertlocend]; if (bndgrafdat.s.edloloctax != NULL) bndedlolocval = bndgrafdat.s.edloloctax[bndedgelocnum]; commlocloadintn += (bndpartval ^ bndpartend) * bndedlolocval; /* Internal load is accounted for twice */ } } for ( ; bndvertlocnum < bndvertancnnd; bndvertlocnum ++) { /* For all vertices of last layer, remove internal loads to band vertices once */ Gnum bndedgelocnum; Gnum bndedgelocnnd; Gnum bndpartval; bndpartval = (Gnum) bndgrafdat.partgsttax[bndvertlocnum]; if (bndgrafdat.veexloctax != NULL) { commlocloadextn += bndgrafdat.veexloctax[bndvertlocnum] * bndpartval; commlocgainextn += bndgrafdat.veexloctax[bndvertlocnum] * (1 - bndpartval * 2); } for (bndedgelocnum = bndgrafdat.s.vertloctax[bndvertlocnum], bndedgelocnnd = bndgrafdat.s.vendloctax[bndvertlocnum] - 1; /* "-1" to avoid anchor edges */ bndedgelocnum < bndedgelocnnd; bndedgelocnum ++) { Gnum bndvertlocend; Gnum bndpartend; bndvertlocend = bndgrafdat.s.edgegsttax[bndedgelocnum]; bndpartend = bndgrafdat.partgsttax[bndvertlocend]; if (bndgrafdat.s.edloloctax != NULL) bndedlolocval = bndgrafdat.s.edloloctax[bndedgelocnum]; commlocloadintn -= (bndpartval ^ bndpartend) * bndedlolocval; /* Remove internal loads to band graph vertices once because afterwards they will be accounted for twice */ } } memSet (orgflagloctab, 0, flagSize (orggrafptr->s.vertlocnnd) * sizeof (int)); /* Set vertices as not already considered */ for (bndfronlocnum = orgfronlocnum = 0; bndfronlocnum < bndgrafdat.fronlocnbr; bndfronlocnum ++) { /* Project back separator except for last layer */ Gnum bndvertlocnum; bndvertlocnum = bndgrafdat.fronloctab[bndfronlocnum]; if (bndvertlocnum < bndvertlvlnum) { /* If vertex does not belong to last layer */ Gnum orgvertlocnum; orgvertlocnum = bndgrafdat.s.vnumloctax[bndvertlocnum]; flagSet (orgflagloctab, orgvertlocnum); /* Set vertex as processed */ orggrafptr->fronloctab[orgfronlocnum ++] = orgvertlocnum; } } if (dgraphHaloWait (&requdat) != 0) { errorPrint ("bdgraphBipartBd: cannot complete asynchronous halo exchange"); return (1); } orgedlolocval = 1; /* Assume no edge loads */ commlocloadintn2 = 0; for (bndvertlocnum = bndvertlvlnum; bndvertlocnum < bndvertancnnd; bndvertlocnum ++) { /* For all vertices of last layer */ Gnum orgedgelocnum; Gnum orgedgelocnnd; Gnum orgvertlocnum; GraphPart orgpartval; Gnum orgflagval; orgvertlocnum = bndgrafdat.s.vnumloctax[bndvertlocnum]; orgpartval = bndgrafdat.partgsttax[bndvertlocnum]; orgflagval = 0; /* Assume vertex does not belong to the frontier */ for (orgedgelocnum = orggrafptr->s.vertloctax[orgvertlocnum], orgedgelocnnd = orggrafptr->s.vendloctax[orgvertlocnum]; orgedgelocnum < orgedgelocnnd; orgedgelocnum ++) { Gnum orgvertlocend; Gnum orgpartend; Gnum orgflagtmp; orgvertlocend = orggrafptr->s.edgegsttax[orgedgelocnum]; orgpartend = orggrafptr->partgsttax[orgvertlocend]; orgflagtmp = orgpartval ^ orgpartend; if (bndgrafdat.s.edloloctax != NULL) orgedlolocval = orggrafptr->s.edloloctax[orgedgelocnum]; orgflagval |= orgflagtmp; commlocloadintn2 += orgflagtmp * orgedlolocval; /* Internal load to band and original graph vertices are accounted for twice */ if ((orgflagtmp != 0) && (orgvertlocend < orggrafptr->s.vertlocnnd) && (flagVal (orgflagloctab, orgvertlocend) == 0)) { orggrafptr->fronloctab[orgfronlocnum ++] = orgvertlocend; flagSet (orgflagloctab, orgvertlocend); } } if ((orgflagval != 0) && (flagVal (orgflagloctab, orgvertlocnum) == 0)) orggrafptr->fronloctab[orgfronlocnum ++] = orgvertlocnum; flagSet (orgflagloctab, orgvertlocnum); /* Set vertex as processed anyway */ } commlocloadintn += 2 * commlocloadintn2; /* Add twice the internal load of original graph edges and once the one of band edges (one removed before) */ orggrafptr->complocload0 = bndgrafdat.complocload0 - bndvertlocancadj; orggrafptr->compglbload0 = bndgrafdat.compglbload0 - bndvertglbancadj; orggrafptr->compglbload0dlt = orggrafptr->compglbload0 - orggrafptr->compglbload0avg; orgprocsidnbr = orggrafptr->s.procsidnbr; if (orgprocsidnbr == 0) goto loop_exit; orgvertlocnum = orggrafptr->s.baseval; orgprocsidnum = 0; orgprocsidtab = orggrafptr->s.procsidtab; orgprocsidval = orgprocsidtab[orgprocsidnum ++]; while (1) { /* Scan all vertices which have foreign neighbors */ while (orgprocsidval < 0) { orgvertlocnum -= (Gnum) orgprocsidval; orgprocsidval = orgprocsidtab[orgprocsidnum ++]; } if (flagVal (orgflagloctab, orgvertlocnum) == 0) { /* If vertex not already processed */ Gnum orgedgelocnum; Gnum orgedgelocnnd; GraphPart orgpartval; orgpartval = orggrafptr->partgsttax[orgvertlocnum]; for (orgedgelocnum = orggrafptr->s.vertloctax[orgvertlocnum], orgedgelocnnd = orggrafptr->s.vendloctax[orgvertlocnum]; orgedgelocnum < orgedgelocnnd; orgedgelocnum ++) { if (orggrafptr->partgsttax[orggrafptr->s.edgegsttax[orgedgelocnum]] != orgpartval) { orggrafptr->fronloctab[orgfronlocnum ++] = orgvertlocnum; break; } } } do { if (orgprocsidnum >= orgprocsidnbr) goto loop_exit; } while ((orgprocsidval = orgprocsidtab[orgprocsidnum ++]) >= 0); } loop_exit : memFree (orgflagloctab); reduloctab[0] = commlocloadintn; /* Twice the internal load; sum globally before dividing by two */ reduloctab[1] = commlocloadextn; reduloctab[2] = commlocgainextn; reduloctab[3] = orgfronlocnum; if (MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 4, GNUM_MPI, MPI_SUM, orggrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartBd: communication error (3)"); return (1); } orggrafptr->fronlocnbr = orgfronlocnum; orggrafptr->fronglbnbr = reduglbtab[3]; orggrafptr->commglbload = (reduglbtab[0] / 2) * orggrafptr->domndist + reduglbtab[1]; orggrafptr->commglbgainextn = reduglbtab[2]; orggrafptr->bbalglbval = (double) ((orggrafptr->compglbload0dlt < 0) ? (- orggrafptr->compglbload0dlt) : orggrafptr->compglbload0dlt) / (double) orggrafptr->compglbload0avg; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (orggrafptr) != 0) { errorPrint ("bdgraphBipartBd: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ bdgraphExit (&bndgrafdat); return (0); } scotch_6.0.9/src/libscotch/hmesh_order_gr.c0000644000302600021200000000737413303015264021161 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_gr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a halo mesh by **/ /** turning it into a graph and using a **/ /** graph separation strategy. **/ /** **/ /** DATES : # Version 4.0 : from : 30 nov 2003 **/ /** to 27 jan 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_GR #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_st.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_gr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderGr ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, const HmeshOrderGrParam * const paraptr) { Hgraph grafdat; int o; hgraphInit (&grafdat); if (hmeshHgraph (meshptr, &grafdat) != 0) { /* Build halo graph with improper vnumtab */ errorPrint ("hmeshOrderGr: cannot build halo graph"); return (1); } if ((o = hgraphOrderSt (&grafdat, ordeptr, ordenum, cblkptr, paraptr->stratptr)) != 0) errorPrint ("hmeshOrderGr: cannot order graph"); hgraphFree (&grafdat); /* Free graph structure */ return (o); } scotch_6.0.9/src/libscotch/dgraph.h0000644000302600021200000004016713560005435017445 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed source graph **/ /** structure. **/ /** **/ /** DATES : # Version P0.0 : from : 01 apr 1997 **/ /** to : 20 jun 1997 **/ /** # Version P0.1 : from : 07 apr 1998 **/ /** to : 20 jun 1998 **/ /** # Version P0.2 : from : 11 may 1999 **/ /** to : 02 feb 2000 **/ /** # Version P0.3 : from : 16 jun 2005 **/ /** to : 16 jun 2005 **/ /** # Version 5.0 : from : 22 jul 2005 **/ /** to : 03 aug 2007 **/ /** # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 30 aug 2012 **/ /** to : 28 dec 2015 **/ /** **/ /************************************************************/ #define DGRAPH_H #define PTSCOTCH_FOLD_DUP /* Activate folding on coarsening */ #ifndef SCOTCH_COMM_PTOP_RAT #define SCOTCH_COMM_PTOP_RAT 0.25 /* Percentage under which point-to-point is allowed */ #endif /* SCOTCH_COMM_PTOP_RAT */ /* ** The defines. */ /* Graph flags. */ #define DGRAPHNONE 0x0000 /* No options set */ #define DGRAPHFREEPRIV 0x0001 /* Set if private arrays freed on exit */ #define DGRAPHFREECOMM 0x0002 /* MPI communicator has to be freed */ #define DGRAPHFREETABS 0x0004 /* Set if local arrays freed on exit */ #define DGRAPHFREEPSID 0x0008 /* Set if procsidtab freed on exit */ #define DGRAPHFREEEDGEGST 0x0010 /* Set if edgegsttab freed on exit */ #define DGRAPHHASEDGEGST 0x0020 /* Edge ghost array computed */ #define DGRAPHVERTGROUP 0x0040 /* All vertex arrays grouped */ #define DGRAPHEDGEGROUP 0x0080 /* All edge arrays grouped */ #define DGRAPHFREEALL (DGRAPHFREEPRIV | DGRAPHFREECOMM | DGRAPHFREETABS | DGRAPHFREEPSID | DGRAPHFREEEDGEGST) #define DGRAPHCOMMPTOP 0x0100 /* Use point-to-point collective communication */ #define DGRAPHBITSUSED 0x01FF /* Significant bits for plain distributed graph routines */ #define DGRAPHBITSNOTUSED 0x0200 /* Value above which bits not used by plain distributed graph routines */ /* Used in algorithms */ #define COARPERTPRIME 31 /* Prime number */ #define COARHASHPRIME 179 /* Prime number */ /* ** The type and structure definitions. */ /* The graph basic types, which must be signed. */ #ifndef GNUMMAX /* If graph.h not included */ typedef INT Gnum; /* Vertex or edge number */ #define GNUMMAX (INTVALMAX) /* Maximum Gnum value */ #define GNUMMIN (-GNUMMAX - 1) /* Minimum signed Gnum value */ #define GNUMSTRING INTSTRING /* String to printf a Gnum */ #endif /* GNUMMAX */ #define GNUM_MPI COMM_INT /* MPI type for Gnum is MPI type for INT */ #define GRAPHPART_MPI COMM_BYTE /* Raw byte type for graph parts */ /* Tags used for point-to-point communications. */ typedef enum DgraphTag_ { TAGPROCVRTTAB = 0, /*+ procvrttab message +*/ TAGVERTLOCTAB, /*+ vertloctab message +*/ TAGVENDLOCTAB, /*+ vendloctab message +*/ TAGVELOLOCTAB, /*+ veloloctab message +*/ TAGVNUMLOCTAB, /*+ vnumloctab message +*/ TAGVLBLLOCTAB, /*+ vlblloctab message +*/ TAGEDGELOCTAB, /*+ edgeloctab message +*/ TAGEDLOLOCTAB, /*+ edloloctab message +*/ TAGDATALOCTAB, /*+ Generic data message +*/ TAGOK, /*+ Positive answer +*/ TAGBAD, /*+ Negative answer +*/ TAGHALO = 100, /*+ Tag class for halo +*/ TAGCOARSEN = 200, /*+ Tag class for coarsening +*/ TAGMATCH = 300, /*+ Tag class for matching +*/ TAGFOLD = 400, /*+ Tag class for folding +*/ TAGBAND = 500 /*+ Tag class for band graph +*/ } DgraphTag; /*+ The graph flag type. +*/ typedef int DgraphFlag; /*+ Graph property flags +*/ /*+ The vertex part type, in compressed form. From graph.h +*/ #ifndef GRAPH_H typedef byte GraphPart; #endif /* GRAPH_H */ /* The distributed graph structure. */ typedef struct Dgraph_ { DgraphFlag flagval; /*+ Graph properties +*/ Gnum baseval; /*+ Base index for edge/vertex arrays +*/ Gnum vertglbnbr; /*+ Global number of vertices +*/ Gnum vertglbmax; /*+ Maximum number of local vertices over all processes +*/ Gnum vertgstnbr; /*+ Number of local + ghost vertices +*/ Gnum vertgstnnd; /*+ vertgstnbr + baseval +*/ Gnum vertlocnbr; /*+ Local number of vertices +*/ Gnum vertlocnnd; /*+ Local number of vertices + baseval +*/ Gnum * vertloctax; /*+ Local vertex beginning index array [based] +*/ Gnum * vendloctax; /*+ Local vertex end index array [based] +*/ Gnum * veloloctax; /*+ Local vertex load array if present +*/ Gnum velolocsum; /*+ Local sum of all vertex loads +*/ Gnum veloglbsum; /*+ Global sum of all vertex loads +*/ Gnum * vnumloctax; /*+ Arrays of global vertex numbers in original graph +*/ Gnum * vlblloctax; /*+ Arrays of vertex labels (when read from file) +*/ Gnum edgeglbnbr; /*+ Global number of arcs +*/ Gnum edgeglbmax; /*+ Maximum number of local edges over all processes +*/ Gnum edgelocnbr; /*+ Number of local edges +*/ Gnum edgelocsiz; /*+ Size of local edge array (= edgelocnbr when compact) +*/ Gnum edgeglbsmx; /*+ Maximum size of local edge arrays over all processes +*/ Gnum * edgegsttax; /*+ Edge array holding local indices of neighbors [based] +*/ Gnum * edgeloctax; /*+ Edge array holding global neighbor numbers [based] +*/ Gnum * edloloctax; /*+ Edge load array +*/ Gnum degrglbmax; /*+ Maximum degree over all processes +*/ MPI_Comm proccomm; /*+ Graph communicator +*/ int prockeyval; /*+ Communicator key value: folded communicators are distinct +*/ int procglbnbr; /*+ Number of processes sharing graph data +*/ int proclocnum; /*+ Number of this process +*/ Gnum * procvrttab; /*+ Global array of vertex number ranges [+1,based] +*/ Gnum * proccnttab; /*+ Count array for local number of vertices +*/ Gnum * procdsptab; /*+ Displacement array with respect to proccnttab [+1,based] +*/ int procngbnbr; /*+ Number of neighboring processes +*/ int procngbmax; /*+ Maximum number of neighboring processes +*/ int * procngbtab; /*+ Array of neighbor process numbers [sorted] +*/ int * procrcvtab; /*+ Number of vertices to receive in ghost vertex sub-arrays +*/ int procsndnbr; /*+ Overall size of local send array +*/ int * procsndtab; /*+ Number of vertices to send in ghost vertex sub-arrays +*/ int * procsidtab; /*+ Array of indices to build communication vectors (send) +*/ int procsidnbr; /*+ Size of the send index array +*/ } Dgraph; /* ** The function prototypes. */ int dgraphInit (Dgraph * const, MPI_Comm); void dgraphExit (Dgraph * const); void dgraphFree (Dgraph * const); int dgraphLoad (Dgraph * const, FILE * const, const Gnum, const DgraphFlag); int dgraphSave (Dgraph * const, FILE * const); int dgraphBuild (Dgraph * const, const Gnum, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const, Gnum * const, Gnum * const, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const); int dgraphBuild2 (Dgraph * const, const Gnum, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const, const Gnum, Gnum * const, Gnum * const, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const, const Gnum); int dgraphBuild3 (Dgraph * const, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const, const Gnum, Gnum * const, Gnum * const, const Gnum, const Gnum, Gnum * const, Gnum * const, Gnum * const, const Gnum); int dgraphBuild4 (Dgraph * const); int dgraphBuildHcub (Dgraph * const, const Gnum, const Gnum, const Gnum); int dgraphBuildGrid3D (Dgraph * const, const Gnum, const Gnum, const Gnum, const Gnum, const Gnum, const int); int dgraphCheck (const Dgraph * const); int dgraphView (const Dgraph * const, FILE * const); int dgraphGhst2 (Dgraph * const, const int); int dgraphBand (Dgraph * restrict const, const Gnum, Gnum * restrict const, const GraphPart * restrict const, const Gnum, const Gnum, Gnum, Dgraph * restrict const, Gnum * restrict * const, GraphPart * restrict * const, Gnum * const, Gnum * const, Gnum * const); int dgraphFold (const Dgraph * restrict const, const int, Dgraph * restrict const, const void * restrict const, void ** restrict const, MPI_Datatype); int dgraphFold2 (const Dgraph * restrict const, const int, Dgraph * restrict const, MPI_Comm, const void * restrict const, void ** restrict const, MPI_Datatype); int dgraphFoldDup (const Dgraph * restrict const, Dgraph * restrict const, void * restrict const, void ** restrict const, MPI_Datatype); int dgraphInduce2 (Dgraph * restrict const, Gnum (*) (Dgraph * restrict const, Dgraph * restrict const, const void * restrict const, Gnum * restrict const), const void * const, const Gnum, Gnum *, Dgraph * restrict const); int dgraphInduceList (Dgraph * const, const Gnum, const Gnum * const, Dgraph * const); int dgraphInducePart (Dgraph * const, const GraphPart * restrict const, const Gnum, const GraphPart, Dgraph * const); #ifdef GRAPH_H int dgraphGather (const Dgraph * restrict const, Graph * restrict); int dgraphGather2 (const Dgraph * restrict const, Graph * restrict, const int, const Gnum); int dgraphGatherAll (const Dgraph * restrict const, Graph * restrict); int dgraphGatherAll2 (const Dgraph * restrict const, Graph * restrict, const Gnum, const int); int dgraphScatter (Dgraph * const, const Graph * const); #endif /* GRAPH_H */ int dgraphHaloSync (Dgraph * const, void * const, MPI_Datatype); /* ** The macro definitions. */ #define dgraphGhst(grafptr) dgraphGhst2 (grafptr, 0) /* Build ghost edge array in addition to local edge array */ #define dgraphGhstReplace(grafptr) dgraphGhst2 (grafptr, 1) /* Replace local edge array by ghost edge array */ #define dgraphHasGhst(grafptr) (((grafptr)->flagval & DGRAPHHASEDGEGST) != 0) /* If graph has a ghost edge array */ scotch_6.0.9/src/libscotch/arch.h0000644000302600021200000004512013560005302017100 0ustar pelegrinpelegrin/* Copyright 2004,2007-2011,2013-2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the generic target architecture **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 02 may 1996 **/ /** to 20 jul 1996 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 13 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 07 oct 1998 **/ /** # Version 3.4 : from : 08 nov 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 01 jan 2002 **/ /** to 07 dec 2004 **/ /** # Version 5.1 : from : 11 dec 2007 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ #define ARCH_H /* ** The defines. */ /*+ Architecture flags. +*/ #define ARCHNONE 0x0000 /*+ No options set +*/ #define ARCHPART 0x0001 /*+ Architecture without external gains +*/ #define ARCHVAR 0x0002 /*+ Variable-sized architecture +*/ #define ARCHFREE 0x0004 /*+ Architecture contents must be freed on exit +*/ #define ARCHBITSUSED 0x0007 /* Significant bits for plain arch routines */ #define ARCHBITSNOTUSED 0x0008 /* Value above which bits not used by plain arch routines */ /* ** The type and structure definitions. */ typedef INT Anum; /*+ Generic integer for architectures +*/ #define ANUMMAX INTVALMAX #define ANUMSTRING INTSTRING #define ANUM_MPI COMM_INT /*+ MPI type for Gnum is MPI type for INT +*/ /*+ The domain number type. +*/ typedef Anum ArchDomNum; /*+ Domain number +*/ #define ARCHDOMNOTTERM ((ArchDomNum) ~0) /*+ Not-terminal number +*/ /*+ The architecture multinode element, used for architecture coarsening. It is equivalent to the GraphCoarsenMulti structure. +*/ typedef struct ArchCoarsenMulti_ { Anum vertnum[2]; /*+ Numbers of the collapsed vertices of a multinode +*/ } ArchCoarsenMulti; /*+ The sub-includes for structure size computations. +*/ #define ARCH_NOPROTO #include "arch_cmplt.h" #include "arch_cmpltw.h" #include "arch_deco.h" #include "arch_deco2.h" #include "arch_dist.h" #include "arch_hcub.h" #include "arch_tleaf.h" #include "arch_mesh.h" #include "arch_sub.h" #include "arch_torus.h" #include "arch_vcmplt.h" #include "arch_vhcub.h" #undef ARCH_NOPROTO /*+ The architecture class type. +*/ typedef struct ArchClass_ { char * archname; /*+ Architecture name +*/ int flagval; /*+ Architecture flags of the class +*/ int (* archLoad) (); /*+ Architecture loading function +*/ int (* archSave) (); /*+ Architecture saving function +*/ int (* archFree) (); /*+ Architecture freeing function +*/ int (* matchInit) (); /*+ Architecture matching init function +*/ void (* matchExit) (); /*+ Architecture matching exit function +*/ Anum (* matchMate) (); /*+ Architecture matching function +*/ ArchDomNum (* domNum) (); /*+ Domain labeling function +*/ int (* domTerm) (); /*+ Terminal domain building function +*/ Anum (* domSize) (); /*+ Domain size function +*/ Anum (* domWght) (); /*+ Domain weight function +*/ Anum (* domDist) (); /*+ Distance computation function +*/ int (* domFrst) (); /*+ Compute biggest domain +*/ int (* domLoad) (); /*+ Domain loading routine +*/ int (* domSave) (); /*+ Domain saving routine +*/ int (* domBipart) (); /*+ Domain bipartitioning routine +*/ int (* domIncl) (); /*+ Domain inclusion routine +*/ #ifdef SCOTCH_PTSCOTCH int (* domMpiType) (); /*+ Domain MPI type building routine +*/ #endif /* SCOTCH_PTSCOTCH */ int domsizeof; /*+ Size in bytes of domain data +*/ } ArchClass; /*+ The architecture union type. +*/ typedef union { /*+ Architecture data +*/ ArchCmplt cmplt; /*+ Complete graph architecture +*/ ArchCmpltw cmpltw; /*+ Weighted complete graph architecture +*/ ArchDeco deco; /*+ Type-1 decomposition-described architecture +*/ ArchDeco2 deco2; /*+ Type-2 decomposition-described architecture +*/ ArchDist dist; /*+ Distance multiplicator pseudo-architecture +*/ ArchHcub hcub; /*+ Hypercube architecture +*/ ArchMeshX meshx; /*+ xD-mesh architecture (includes 2D and 3D) +*/ ArchSub sub; /*+ Sub-architecture meta-architecture +*/ ArchTleaf tleaf; /*+ Tree-leaf architecture +*/ ArchVcmplt vcmplt; /*+ Variable-sized complete graph architecture +*/ ArchVhcub vhcub; /*+ Variable-sized hypercube architecture +*/ } ArchDummy; /*+ The architecture type. +*/ typedef struct Arch_ { const ArchClass * class; /*+ Pointer to architecture class +*/ int flagval; /*+ (Possibly updated) architecture flags +*/ ArchDummy data; /*+ Architecture data +*/ } Arch; /*+ The architecture domain union type. +*/ typedef union { /*+ The domain data +*/ ArchCmpltDom cmplt; /*+ Complete graph domain +*/ ArchCmpltwDom cmpltw; /*+ Weighted complete graph domain +*/ ArchDecoDom deco; /*+ Type-1 decomposition-described domain +*/ ArchDeco2Dom deco2; /*+ Type-2 decomposition-described domain +*/ /*+ ArchDistDom dist; *+ Distance multiplicator domain is ArchDom +*/ ArchHcubDom hcub; /*+ Hypercube domain +*/ ArchMeshXDom meshx; /*+ xD-mesh domain +*/ ArchSubDom sub; /*+ Sub-architecture meta-architecture +*/ ArchTleafDom tleaf; /*+ Tree-leaf domain +*/ ArchVcmpltDom vcmplt; /*+ Variable-sized complete graph domain +*/ ArchVhcubDom vhcub; /*+ Variable-sized hypercube domain +*/ } ArchDomDummy; /*+ The domain structure type. +*/ typedef struct ArchDom_ { ArchDomDummy data; /*+ The domain data +*/ } ArchDom; /*+ The architecture match union type. +*/ typedef union { /*+ Architecture data +*/ ArchCmpltMatch cmplt; /*+ Complete graph architecture +*/ /* ArchMatchCmpltw cmpltw; *+ Weighted complete graph architecture +*/ ArchDecoMatch deco; /*+ Type-1 decomposition-described architecture +*/ /* ArchMatchDist dist; *+ Distance multiplicator pseudo-architecture +*/ ArchHcubMatch hcub; /*+ Hypercube architecture +*/ ArchMeshXMatch meshx; /*+ xD-mesh architecture +*/ ArchSubMatch sub; /*+ Sub-architecture meta-architecture +*/ ArchTleafMatch tleaf; /*+ Tree-leaf architecture +*/ } ArchMatchDummy; /*+ The architecture type. +*/ typedef struct ArchMatch_ { ArchMatchDummy data; /*+ Architecture matching data +*/ } ArchMatch; /* ** The function prototypes. */ int archInit (Arch * restrict const); int archExit (Arch * restrict const); int archFree (Arch * restrict const); int archLoad (Arch * restrict const, FILE * const); int archSave (const Arch * const, FILE * const); char * archName (const Arch * const); const ArchClass * archClass (const char * const); const ArchClass * archClass2 (const char * const, const int); ArchDomNum archDomNum (const Arch * const, const ArchDom * const); int archDomTerm (const Arch * const, ArchDom * const, const ArchDomNum); Anum archDomSize (const Arch * const, const ArchDom * const); Anum archDomWght (const Arch * const, const ArchDom * const); Anum archDomDist (const Arch * const, const ArchDom * const, const ArchDom * const); int archDomFrst (const Arch * const, ArchDom * const); int archDomLoad (const Arch * const, ArchDom * const, FILE * const); int archDomSave (const Arch * const, const ArchDom * const, FILE * const); int archDomBipart (const Arch * const, const ArchDom * const, ArchDom * const, ArchDom * const); int archDomIncl (const Arch * const, const ArchDom * const, const ArchDom * const); #ifdef SCOTCH_PTSCOTCH int archDomMpiType (const Arch * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ /* ** The macro definitions. */ #define archDomSizeof(a) ((a)->class->domsizeof) #define archName(a) (((a)->class == NULL) ? "" : (a)->class->archname) #define archPart(a) ((((a)->flagval) & ARCHPART) != 0) #define archVar(a) ((((a)->flagval) & ARCHVAR) != 0) #define archArch(a) ((Arch *) ((char *) (a) - ((char *) (&(((Arch *) (NULL))->data)) - (char *) (NULL)))) #if ((! defined SCOTCH_DEBUG_ARCH2) || (defined ARCH)) #define archDomNum2(arch,dom) (((ArchDomNum (*) (const void * const, const void * const)) (arch)->class->domNum) ((const void * const) &(arch)->data, (const void * const) &(dom)->data)) #define archDomTerm2(arch,dom,num) (((int (*) (const void * const, void * const, const ArchDomNum)) (arch)->class->domTerm) ((void *) &(arch)->data, (void *) &(dom)->data, (num))) #define archDomSize2(arch,dom) (((Anum (*) (const void * const, const void * const)) (arch)->class->domSize) ((void *) &(arch)->data, (void *) &(dom)->data)) #define archDomWght2(arch,dom) (((Anum (*) (const void * const, const void * const)) (arch)->class->domWght) ((void *) &(arch)->data, (void *) &(dom)->data)) #define archDomDist2(arch,dom0,dom1) (((Anum (*) (const void * const, const void * const, const void * const)) (arch)->class->domDist) ((const void *) &(arch)->data, (const void *) &(dom0)->data, (const void *) &(dom1)->data)) #define archDomFrst2(arch,dom) (((int (*) (const void * const, void * const)) (arch)->class->domFrst) ((const void * const) &(arch)->data, (void * const) &(dom)->data)) #define archDomBipart2(arch,dom,dom0,dom1) (((int (*) (const void * const, const void * const, void * const, void * const)) (arch)->class->domBipart) ((const void * const) &(arch)->data, (const void * const) &(dom)->data, (void * const) &(dom0)->data, (void * const) &(dom1)->data)) #define archDomIncl2(arch,dom0,dom1) (((int (*) (const void * const, const void * const, void * const)) (arch)->class->domIncl) ((const void * const) &(arch)->data, (void * const) &(dom0)->data, (void * const) &(dom1)->data)) #endif #ifndef SCOTCH_DEBUG_ARCH2 #define archDomNum archDomNum2 #define archDomTerm archDomTerm2 #define archDomSize archDomSize2 #define archDomWght archDomWght2 #define archDomDist archDomDist2 #define archDomFrst archDomFrst2 #define archDomBipart archDomBipart2 #define archDomIncl archDomIncl2 #endif /* SCOTCH_DEBUG_ARCH2 */ #ifdef SCOTCH_PTSCOTCH #define ARCHCLASSBLOCK(s,n,f) { s, f, \ arch##n##ArchLoad, \ arch##n##ArchSave, \ arch##n##ArchFree, \ arch##n##MatchInit, \ arch##n##MatchExit, \ arch##n##MatchMate, \ arch##n##ArchLoad, \ arch##n##DomTerm, \ arch##n##DomSize, \ arch##n##DomWght, \ arch##n##DomDist, \ arch##n##DomFrst, \ arch##n##DomLoad, \ arch##n##DomSave, \ arch##n##DomBipart, \ arch##n##DomIncl, \ arch##n##DomMpiType, \ sizeof (Arch##n##Dom) } #else /* SCOTCH_PTSCOTCH */ #define ARCHCLASSBLOCK(s,n,f) { s, f, \ arch##n##ArchLoad, \ arch##n##ArchSave, \ arch##n##ArchFree, \ arch##n##MatchInit, \ arch##n##MatchExit, \ arch##n##MatchMate, \ arch##n##DomNum, \ arch##n##DomTerm, \ arch##n##DomSize, \ arch##n##DomWght, \ arch##n##DomDist, \ arch##n##DomFrst, \ arch##n##DomLoad, \ arch##n##DomSave, \ arch##n##DomBipart, \ arch##n##DomIncl, \ sizeof (Arch##n##Dom) } #endif /* SCOTCH_PTSCOTCH */ #define ARCHCLASSBLOCKNULL { NULL, ARCHNONE } #define ARCH_H_END scotch_6.0.9/src/libscotch/kgraph_map_fm.h0000644000302600021200000002442013465315041020766 0ustar pelegrinpelegrin/* Copyright 2004,2010-2012,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_fm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the k-way Fiduccia-Mattheyses **/ /** mapping algorithm. **/ /** **/ /** DATES : # Version 3.3 : from : 10 may 1999 **/ /** to 20 jun 1999 **/ /** # Version 3.4 : from : 27 sep 1999 **/ /** to 13 nov 1999 **/ /** # Version 5.0 : from : 11 oct 2006 **/ /** to 12 oct 2006 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing vertex numbers. +*/ #define KGRAPHMAPFMHASHPRIME 17 /*+ Prime number for hashing +*/ /*+ Ratio of unused slots before compacting extended edge array. +*/ #define KGRAPHMAPFMEDXXCOMP 5 /*+ Compact if edxunbr > (edxxnbr / KGRAPHMAPFMEDXXCOMP) */ /*+ Save type identifier +*/ #define KGRAPHMAPPFMSAVEVEXX 0 #define KGRAPHMAPPFMSAVEEDXX 1 #define KGRAPHMAPPFMSAVELINK 2 /* Bit value for KGRAPHMAPPFMSAVELINKADD and KGRAPHMAPPFMSAVELINKDEL */ #define KGRAPHMAPPFMSAVELINKDEL 2 #define KGRAPHMAPPFMSAVELINKADD 3 /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct KgraphMapFmParam_ { INT movenbr; /*+ Maximum number of uneffective moves that can be done +*/ INT passnbr; /*+ Number of passes to be performed (-1 : infinite) +*/ double deltval; /*+ Maximum weight imbalance ratio +*/ } KgraphMapFmParam; /*+ The extended edge structure. In fact, this structure does not represent edges, but possible moves in another domain. For trick reasons, the gain table data structure must be the first field of the structure. +*/ #ifdef SCOTCH_TABLE_GAIN typedef GainTabl * KgraphMapFmTabl; typedef GainLink KgraphMapFmLink; #else /* SCOTCH_TABLE_GAIN */ typedef FiboHeap KgraphMapFmTabl; typedef FiboNode KgraphMapFmLink; #endif /* SCOTCH_TABLE_GAIN */ typedef struct KgraphMapFmEdge_ { KgraphMapFmLink gainlink; /*+ Gain link; TRICK: FIRST +*/ Gnum commgain; /*+ Communication gain +*/ Gnum cmiggain; /*+ Migration communication gain +*/ Gnum cmigmask; /*+ Migration communication mask +*/ Gnum edlosum; /*+ Sum of edge loads linking to the domain +*/ Gnum edgenbr; /*+ Number of edges linking to the domain +*/ Anum domnnum; /*+ Destination domain index +*/ Anum distval; /*+ Distance between the two domains +*/ Gnum vexxidx; /*+ Index of owner vertex in vertex array +*/ Gnum edxxidx; /*+ Index of next edge in edge array +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ } KgraphMapFmEdge; /*+ The hash vertex structure. +*/ typedef struct KgraphMapFmVertex_ { struct KgraphMapFmVertex_ * lockptr; /*+ Pointer to next vertex in lock list or NULL; FIRST +*/ Gnum vertnum; /*+ Number of vertex +*/ Gnum cmigload; /*+ Migration communication load +*/ Gnum edlosum; /*+ Sum of edge loads linking to self domain +*/ Gnum edgenbr; /*+ Number of edges linking to self domain +*/ Anum domnnum; /*+ Domain number +*/ ArchDom * domoptr; /*+ Domain in old mapping (for repartitioning) +*/ Gnum veloval; /*+ Vertex load; negative when locked +*/ Gnum edxxidx; /*+ Index of first element in edge array +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ } KgraphMapFmVertex; /*+ The move recording structures. +*/ typedef struct KgraphMapFmSave_ { Gnum type; union { struct { Gnum vexxidx; /*+ Index of vertex slot in hash table (vexxhab) +*/ Gnum veloval; /*+ Vertex load +*/ Anum domnnum; /*+ Original vertex domain +*/ Gnum commload; /*+ Communication load for current domain +*/ Gnum cmigload; /*+ Migration communication load +*/ Gnum edlosum; /*+ Sum of edge loads linking to self domain +*/ Gnum edgenbr; /*+ Number of edges linking to self domain +*/ } vexxdat; struct { Gnum edxxidx; /*+ Index of edge in edge array +*/ Anum domnnum; /*+ Destination domain index +*/ Anum distval; /*+ Distance between the two domains +*/ Gnum commgain; /*+ Communication gain +*/ Gnum cmiggain; /*+ Migration communication gain +*/ Gnum edlosum; /*+ Sum of edge loads linking to the domain +*/ Gnum edgenbr; /*+ Number of edges linking to the domain +*/ } edxxdat; struct { Gnum edxxidx; /*+ Index of extended vertex or edge +*/ Gnum vexxidx; /*+ Index of vertex slot in hash table (vexxhab) +*/ } linkdat; } u; } KgraphMapFmSave; /* ** The function prototypes. */ int kgraphMapFm (Kgraph * restrict const, const KgraphMapFmParam * const); /* ** The macro definitions. */ #ifdef SCOTCH_TABLE_GAIN /*+ Gain table subbits. +*/ #define KGRAPHMAPFMSUBBITS 4 /*+ Service routines. +*/ #define kgraphMapFmTablInit(t) (((*(t)) = gainTablInit (GAINMAX, KGRAPHMAPFMSUBBITS)) == NULL) #define kgraphMapFmTablFree(t) gainTablFree (*(t)) #define kgraphMapFmTablExit(t) do { \ if (*(t) != NULL) \ gainTablExit (*(t)); \ } while (0) #define kgraphMapFmTablAdd(t,e) gainTablAdd ((*(t)), &(e)->gainlink, ((e)->commgain + (((e)->cmiggain) & ((e)->cmigmask))) * (e)->distval) #define kgraphMapFmTablDel(t,e) gainTablDel ((*(t)), &(e)->gainlink) #else /* SCOTCH_TABLE_GAIN */ /*+ Service routines. +*/ #define kgraphMapFmTablInit(t) (fiboHeapInit ((t), kgraphMapFmCmpFunc)) #define kgraphMapFmTablFree(t) fiboHeapFree (t) #define kgraphMapFmTablExit(t) fiboHeapExit (t) #define kgraphMapFmTablAdd(t,e) fiboHeapAdd ((t), &(e)->gainlink) #define kgraphMapFmTablDel(t,e) fiboHeapDel ((t), &(e)->gainlink) #endif /* SCOTCH_TABLE_GAIN */ #define kgraphMapFmLock(l,v) do { \ (v)->lockptr = (KgraphMapFmVertex *) (l); \ (l) = (v); \ } while (0) #define kgraphMapFmLockNext(v) ((KgraphMapFmVertex *) (v)->lockptr) scotch_6.0.9/src/libscotch/hmesh_order_hf.c0000644000302600021200000001636313303015264021144 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_hf.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a submesh using **/ /** the block-oriented Halo Approximate **/ /** (Multiple) Minimum Fill algorithm, **/ /** with super-variable accounting **/ /** R2HAMDf4 v2.0). **/ /** **/ /** DATES : # Version 4.0 : from : 08 dec 2003 **/ /** to : 09 dec 2003 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_HF #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hall_order_hf.h" #include "hall_order_hx.h" #include "hmesh_order_hf.h" #include "hmesh_order_hx.h" #include "hmesh_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderHf ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HmeshOrderHfParam * restrict const paraptr) { Gnum nbbuck; Gnum * restrict petab; Gnum pfree; Gnum iwlen; Gnum * restrict iwtab; Gnum * restrict lentab; Gnum * restrict nvartab; Gnum * restrict elentab; Gnum * restrict lasttab; Gnum * restrict leaftab; Gnum * restrict secntab; /* Array of index to first secondary variable */ Gnum * restrict nexttab; /* Array of index of next principal variable */ Gnum * restrict frsttab; Gnum * restrict headtab; /* Head array : nbbuck = 2 * n */ Gnum ncmpa; Gnum n; /* Number of nodes to order */ int o; n = meshptr->m.velmnbr + meshptr->m.vnodnbr; if (n < paraptr->colmin) /* If graph is too small, order simply */ return (hmeshOrderSi (meshptr, ordeptr, ordenum, cblkptr)); nbbuck = n * 2; iwlen = (Gnum) ((double) meshptr->m.edgenbr * HMESHORDERHFCOMPRAT) + 32; if (iwlen < n) /* Prepare to re-use array */ iwlen = n; if (memAllocGroup ((void **) (void *) &petab, (size_t) (n * sizeof (Gnum)), &iwtab, (size_t) (iwlen * sizeof (Gnum)), &lentab, (size_t) (n * sizeof (Gnum)), &nvartab, (size_t) (n * sizeof (Gnum)), &elentab, (size_t) (n * sizeof (Gnum)), &lasttab, (size_t) (n * sizeof (Gnum)), &leaftab, (size_t) (n * sizeof (Gnum)), &frsttab, (size_t) (n * sizeof (Gnum)), &secntab, (size_t) (n * sizeof (Gnum)), &nexttab, (size_t) (n * sizeof (Gnum)), &headtab, (size_t) ((nbbuck + 2) * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hmeshOrderHf: out of memory"); return (1); } hmeshOrderHxFill (meshptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHfR2hamdf4 (n, meshptr->m.velmnbr, nbbuck, iwlen, petab, pfree, lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, leaftab, secntab, nexttab, frsttab, headtab); if (ncmpa < 0) { errorPrint ("hmeshOrderHf: internal error"); memFree (petab); /* Free group leader */ return (1); } o = hallOrderHxBuild (meshptr->m.baseval, n, meshptr->vnohnbr, (meshptr->m.vnumtax == NULL) ? NULL : meshptr->m.vnumtax + (meshptr->m.vnodbas - meshptr->m.baseval), /* Point to node part of vnumtab array */ ordeptr, cblkptr, nvartab - meshptr->m.baseval, lentab - meshptr->m.baseval, petab - meshptr->m.baseval, frsttab - meshptr->m.baseval, nexttab - meshptr->m.baseval, secntab - meshptr->m.baseval, iwtab - meshptr->m.baseval, elentab - meshptr->m.baseval, ordeptr->peritab + ordenum, /* Use given inverse permutation as inverse permutation space, never based */ leaftab, paraptr->colmin, paraptr->colmax, (float) paraptr->fillrat); memFree (petab); /* Free group leader */ return (o); } scotch_6.0.9/src/libscotch/library_mesh_order_f.c0000644000302600021200000002623613560013261022350 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh_order_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** mesh ordering routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 14 jan 2004 **/ /** to 20 dec 2005 **/ /** # Version 5.0 : from : 04 aug 2007 **/ /** to 04 aug 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ MESHORDERINIT, meshorderinit, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (meshptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_meshOrderInit (meshptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDEREXIT, meshorderexit, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr), \ (meshptr, ordeptr)) { SCOTCH_meshOrderExit (meshptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERSAVE, meshordersave, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_meshOrderSave (meshptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERSAVEMAP, meshordersavemap, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVEMAP)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVEMAP)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_meshOrderSaveMap (meshptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERSAVETREE, meshordersavetree, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (meshptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVETREE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (MESHORDERSAVETREE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_meshOrderSaveTree (meshptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERCOMPUTE, meshordercompute, ( \ SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (meshptr, ordeptr, straptr, revaptr)) { *revaptr = SCOTCH_meshOrderCompute (meshptr, ordeptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERCOMPUTELIST, meshordercomputelist, ( \ SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ const SCOTCH_Num * listptr, \ const SCOTCH_Num * const listtab, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (meshptr, ordeptr, listptr, listtab, straptr, revaptr)) { *revaptr = SCOTCH_meshOrderComputeList (meshptr, ordeptr, *listptr, listtab, straptr); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDER, meshorder, ( \ SCOTCH_Mesh * const meshptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (meshptr, straptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_meshOrder (meshptr, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERLIST, meshorderlist, ( \ SCOTCH_Mesh * const meshptr, \ const SCOTCH_Num * listptr, \ const SCOTCH_Num * const listtab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (meshptr, listptr, listtab, straptr, \ permtab, peritab, cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_meshOrderList (meshptr, *listptr, listtab, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ MESHORDERCHECK, meshordercheck, ( \ const SCOTCH_Mesh * const meshptr, \ SCOTCH_Ordering * const ordeptr, \ int * const revaptr), \ (meshptr, ordeptr, revaptr)) { *revaptr = SCOTCH_meshOrderCheck (meshptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATMESHORDER, stratmeshorder, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATMESHORDER)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratMeshOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } /* ** */ SCOTCH_FORTRAN ( \ STRATMESHORDERBUILD, stratmeshorderbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const double * const balrat, \ int * const revaptr), \ (straptr, flagval, balrat, revaptr)) { *revaptr = SCOTCH_stratMeshOrderBuild (straptr, *flagval, *balrat); } scotch_6.0.9/src/libscotch/bgraph_bipart_bd.c0000644000302600021200000007047713560005346021454 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014,2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_bd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module builds a band graph around **/ /** the frontier in order to decrease **/ /** problem size for the strategy to be **/ /** applied. **/ /** **/ /** DATES : # Version 5.0 : from : 27 nov 2006 **/ /** to : 23 dec 2007 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 26 mar 2011 **/ /** # Version 6.0 : from : 07 nov 2011 **/ /** to : 31 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_BD #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_bd.h" #include "bgraph_bipart_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int bgraphBipartBd ( Bgraph * restrict const orggrafptr, /*+ Active graph +*/ const BgraphBipartBdParam * const paraptr) /*+ Method parameters +*/ { Gnum * restrict queutab; Gnum queuheadval; Gnum queutailval; Gnum distmax; /* Maximum distance allowed */ Gnum * restrict orgindxtax; /* Based access to index array for original graph */ Gnum orgfronnum; Gnum ancfronnum; Gnum bndfronnum; Bgraph bndgrafdat; /* Band graph structure */ Gnum bndvertnbr; /* Number of regular vertices in band graph (without anchors) */ Gnum bndvertnnd; const Gnum * restrict bndvnumtax; /* Band vertex number array, recycling queutab */ Gnum * restrict bndveextax; /* External gain array of band graph, if present */ Gnum bndveexnbr; /* Number of external array vertices */ Gnum bndvelosum; /* Load of regular vertices in band graph */ Gnum bndedlosum; /* Sum of edge loads */ Gnum bndcompsize1; /* Number of regular vertices in part 1 of band graph */ Gnum bndcompload1; /* Load of regular vertices in part 1 */ Gnum bndvlvlnum; /* Index of first band graph vertex to belong to the last layer */ Gnum bndvertnum; Gnum bndeancnbr; /* Number of anchor edges */ Gnum bndedgenbr; /* Upper bound on the number of edges, including anchor edges */ Gnum bndedgenum; Gnum * restrict bndedgetax; Gnum * restrict bndedlotax; Gnum bndedgetmp; Gnum bnddegrmax; Gnum bndcommgainextn; /* Sum of all external gains in band graph */ Gnum bndcommgainextn1; /* Sum of external gains accounted for in load, since in part 1 */ size_t bndedlooftval; /* Offset of edge load array with respect to edge array */ const Gnum * restrict const orgverttax = orggrafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgvelotax = orggrafptr->s.velotax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; const Gnum * restrict const orgedlotax = orggrafptr->s.edlotax; GraphPart * restrict const orgparttax = orggrafptr->parttax; Gnum * restrict const orgfrontab = orggrafptr->frontab; if (orggrafptr->fronnbr == 0) /* If no separator vertices, apply strategy to full (original) graph */ return (bgraphBipartSt (orggrafptr, paraptr->stratorg)); distmax = (Gnum) paraptr->distmax; if (distmax < 1) /* Always at least one layer of vertices around separator */ distmax = 1; if (memAllocGroup ((void **) (void *) &queutab, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), &orgindxtax, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("bgraphBipartBd: out of memory (1)"); return (1); } memSet (orgindxtax, ~0, orggrafptr->s.vertnbr * sizeof (Gnum)); /* Initialize index array */ orgindxtax -= orggrafptr->s.baseval; queuheadval = orggrafptr->fronnbr; /* First layer is vertices in frontier array */ for (orgfronnum = 0, bndvertnnd = orggrafptr->s.baseval; /* Flag vertices belonging to frontier as band vertices */ orgfronnum < queuheadval; orgfronnum ++) { Gnum orgvertnum; orgvertnum = orgfrontab[orgfronnum]; orgindxtax[orgvertnum] = bndvertnnd ++; queutab[orgfronnum] = orgvertnum; /* Copy frontier array in queue array */ } bndvelosum = 0; bndedgenbr = 0; /* Estimate upper bound on the number of edges */ bndcompsize1 = 0; bndcompload1 = 0; queutailval = 0; bndvlvlnum = 0; /* Assume first layer is last layer */ while (distmax -- > 0) { /* For all passes except the last one */ bndvlvlnum = queuheadval; /* Record start of last layer */ while (queutailval < bndvlvlnum) { /* For all vertices in queue */ Gnum orgvertnum; Gnum orgedgenum; Gnum orgpartval; orgvertnum = queutab[queutailval ++]; #ifdef SCOTCH_DEBUG_BGRAPH2 if ((orgvertnum < orggrafptr->s.baseval) || (orgvertnum >= orggrafptr->s.vertnnd)) { errorPrint ("bgraphBipartBd: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ bndedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Exact number of edges */ orgpartval = orgparttax[orgvertnum]; bndcompsize1 += orgpartval; /* Count vertices in part 1 */ if (orgvelotax != NULL) { Gnum orgveloval; orgveloval = orgvelotax[orgvertnum]; bndvelosum += orgveloval; bndcompload1 += orgveloval * orgpartval; } for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum orgvertend; orgvertend = orgedgetax[orgedgenum]; if (orgindxtax[orgvertend] == ~0) { /* If vertex not visited yet */ orgindxtax[orgvertend] = bndvertnnd ++; /* Flag it as enqueued */ queutab[queuheadval ++] = orgvertend; /* Enqueue it */ } } } } bndedgenbr += queuheadval - queutailval; /* As many edges from anchors as remaining vertices */ while (queutailval < queuheadval) { /* Process vertices in last layer */ Gnum orgvertnum; Gnum orgpartval; orgvertnum = queutab[queutailval ++]; #ifdef SCOTCH_DEBUG_BGRAPH2 if ((orgvertnum < orggrafptr->s.baseval) || (orgvertnum >= orggrafptr->s.vertnnd)) { errorPrint ("bgraphBipartBd: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ bndedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Upper bound on number of edges, including anchor edge */ orgpartval = orgparttax[orgvertnum]; bndcompsize1 += orgpartval; /* Count vertices in part 1 */ if (orgvelotax != NULL) { Gnum orgveloval; orgveloval = orgvelotax[orgvertnum]; bndvelosum += orgveloval; bndcompload1 += orgveloval * orgpartval; } } bndvertnbr = bndvertnnd - orggrafptr->s.baseval; if (orgvelotax == NULL) { bndvelosum = bndvertnbr; bndcompload1 = bndcompsize1; } if ((bndcompsize1 >= (orggrafptr->s.vertnbr - orggrafptr->compsize0)) || /* If either part has all of its vertices in band, use plain graph instead */ ((bndvertnbr - bndcompsize1) >= orggrafptr->compsize0)) { memFree (queutab); return (bgraphBipartSt (orggrafptr, paraptr->stratorg)); } /* TRICK: since always at least one missing vertex per part, there is room for anchor vertices */ queutab[bndvertnbr] = /* Anchor vertices do not have original vertex numbers */ queutab[bndvertnbr + 1] = -1; memSet (&bndgrafdat, 0, sizeof (Bgraph)); bndgrafdat.s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP | BGRAPHHASANCHORS; /* All Bgraph arrays are non-freeable by bgraphExit() */ bndgrafdat.s.baseval = orggrafptr->s.baseval; bndgrafdat.s.vertnbr = bndvertnbr += 2; /* "+ 2" for anchor vertices */ bndgrafdat.s.vertnnd = bndvertnnd + 2; bndveexnbr = (orggrafptr->veextax != NULL) ? bndvertnbr : 0; if (memAllocGroup ((void **) (void *) /* Do not allocate vnumtax but keep queutab instead */ &bndgrafdat.s.verttax, (size_t) ((bndvertnbr + 1) * sizeof (Gnum)), &bndgrafdat.s.velotax, (size_t) (bndvertnbr * sizeof (Gnum)), &bndveextax, (size_t) (bndveexnbr * sizeof (Gnum)), &bndgrafdat.frontab, (size_t) (bndvertnbr * sizeof (Gnum)), &bndgrafdat.parttax, (size_t) (bndvertnbr * sizeof (GraphPart)), NULL) == NULL) { errorPrint ("bgraphBipartBd: out of memory (2)"); memFree (queutab); return (1); } bndgrafdat.parttax -= orggrafptr->s.baseval; /* From now on we should free a Bgraph and not a Graph */ bndgrafdat.s.verttax -= orggrafptr->s.baseval; bndgrafdat.s.vendtax = bndgrafdat.s.verttax + 1; /* Band graph is compact */ bndgrafdat.s.velotax -= orggrafptr->s.baseval; bndgrafdat.s.vnumtax = queutab - orggrafptr->s.baseval; /* TRICK: re-use queue array as vertex number array since vertices taken in queue order; will not be freed as graph vertex arrays are said to be grouped */ bndgrafdat.s.velosum = orggrafptr->s.velosum; bndgrafdat.s.velotax[bndvertnnd] = orggrafptr->compload0 - (bndvelosum - bndcompload1); /* Set loads of anchor vertices */ bndgrafdat.s.velotax[bndvertnnd + 1] = orggrafptr->s.velosum - orggrafptr->compload0 - bndcompload1; if (bndveexnbr != 0) { bndveextax -= orggrafptr->s.baseval; bndgrafdat.veextax = bndveextax; } else bndveextax = NULL; if (memAllocGroup ((void **) (void *) &bndgrafdat.s.edgetax, (size_t) (bndedgenbr * sizeof (Gnum)), &bndgrafdat.s.edlotax, (size_t) (bndedgenbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("bgraphBipartBd: out of memory (3)"); bgraphExit (&bndgrafdat); memFree (queutab); return (1); } bndgrafdat.s.edgetax -= orggrafptr->s.baseval; bndgrafdat.s.edlotax -= orggrafptr->s.baseval; bndedgetax = bndgrafdat.s.edgetax; bndedlotax = bndgrafdat.s.edlotax; bndvnumtax = bndgrafdat.s.vnumtax; bndvlvlnum += orggrafptr->s.baseval; /* Now bndvlvlnum is based */ for (bndvertnum = bndedgenum = orggrafptr->s.baseval, bnddegrmax = bndedlosum = bndcommgainextn = bndcommgainextn1 = 0; bndvertnum < bndvlvlnum; bndvertnum ++) { /* Fill index array for vertices not belonging to last level */ Gnum orgvertnum; GraphPart orgpartval; Gnum orgedgenum; Gnum orgedloval; Gnum bnddegrval; orgvertnum = bndvnumtax[bndvertnum]; orgpartval = orgparttax[orgvertnum]; bndgrafdat.s.verttax[bndvertnum] = bndedgenum; bndgrafdat.s.velotax[bndvertnum] = (orgvelotax != NULL) ? orgvelotax[orgvertnum] : 1; bndgrafdat.parttax[bndvertnum] = orgpartval; if (bndveextax != NULL) { Gnum orgveexval; orgveexval = orggrafptr->veextax[orgvertnum]; bndveextax[bndvertnum] = orgveexval; bndcommgainextn += orgveexval; bndcommgainextn1 += orgveexval * (Gnum) orgpartval; } orgedloval = 1; /* Assume unity edge loads if not present */ for (orgedgenum = orgverttax[orgvertnum]; /* All edges of first levels are kept */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++, bndedgenum ++) { #ifdef SCOTCH_DEBUG_BGRAPH2 if ((bndedgenum >= (bndedgenbr + orggrafptr->s.baseval)) || (orgindxtax[orgedgetax[orgedgenum]] < 0)) { errorPrint ("bgraphBipartBd: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (orgedlotax != NULL) orgedloval = orgedlotax[orgedgenum]; bndedlosum += orgedloval; bndedgetax[bndedgenum] = orgindxtax[orgedgetax[orgedgenum]]; bndedlotax[bndedgenum] = orgedloval; } bnddegrval = bndedgenum - bndgrafdat.s.verttax[bndvertnum]; if (bnddegrmax < bnddegrval) bnddegrmax = bnddegrval; } bndeancnbr = 0; for ( ; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill index array for vertices belonging to last level */ Gnum orgvertnum; Gnum orgedgenum; GraphPart orgpartval; Gnum bnddegrval; Gnum orgedloval; Gnum ancedloval; /* Accumulated edge load for anchor edge */ orgvertnum = bndvnumtax[bndvertnum]; orgpartval = orgparttax[orgvertnum]; bndgrafdat.s.verttax[bndvertnum] = bndedgenum; bndgrafdat.s.velotax[bndvertnum] = (orgvelotax != NULL) ? orgvelotax[orgvertnum] : 1; bndgrafdat.parttax[bndvertnum] = orgpartval; /* Record part for vertices of last level */ if (bndveextax != NULL) { Gnum orgveexval; orgveexval = orggrafptr->veextax[orgvertnum]; bndveextax[bndvertnum] = orgveexval; bndcommgainextn += orgveexval; bndcommgainextn1 += orgveexval * (Gnum) orgpartval; } ancedloval = 0; orgedloval = 1; /* Assume unity edge loads if not present */ for (orgedgenum = orgverttax[orgvertnum]; /* Keep only band edges */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum bndvertend; #ifdef SCOTCH_DEBUG_BGRAPH2 if (bndedgenum >= (bndedgenbr + orggrafptr->s.baseval)) { errorPrint ("bgraphBipartBd: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (orgedlotax != NULL) orgedloval = orgedlotax[orgedgenum]; bndedlosum += orgedloval; /* Normal arcs are accounted for twice; anchor arcs only once */ bndvertend = orgindxtax[orgedgetax[orgedgenum]]; if (bndvertend != ~0) { bndedgetax[bndedgenum] = bndvertend; bndedlotax[bndedgenum ++] = orgedloval; } else ancedloval += orgedloval; /* Accumulate loads of edges linking to anchor vertex */ } bndedlosum += ancedloval; /* Account for anchor edges a second time */ if (ancedloval > 0) { /* If vertex is connected to rest of part */ bndedlotax[bndedgenum] = ancedloval; bndedgetax[bndedgenum ++] = bndvertnnd + (Gnum) orgpartval; /* Add anchor edge to proper anchor vertex */ bndeancnbr ++; } bnddegrval = bndedgenum - bndgrafdat.s.verttax[bndvertnum]; if (bnddegrmax < bnddegrval) bnddegrmax = bnddegrval; } bndgrafdat.parttax[bndvertnnd] = 0; /* Set parts of anchor vertices */ bndgrafdat.parttax[bndvertnnd + 1] = 1; bndgrafdat.s.edlosum = bndedlosum; bndgrafdat.s.verttax[bndvertnnd] = bndedgenum; /* Mark end of regular edge array and start of first anchor edge array */ bndedgetmp = bndedgenum + bndeancnbr; #ifdef SCOTCH_DEBUG_BGRAPH2 if ((bndedgetmp - 1) >= (bndedgenbr + orggrafptr->s.baseval)) { errorPrint ("bgraphBipartBd: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ bndgrafdat.s.edgenbr = bndedgetmp - orggrafptr->s.baseval; bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ if (bndgrafdat.s.verttax[bndvertnum + 1] > bndgrafdat.s.verttax[bndvertnum]) { /* If vertex is not isolated */ Gnum bndedgelst; /* Number of last edge */ Gnum bndvertend; bndedgelst = bndgrafdat.s.verttax[bndvertnum + 1] - 1; bndvertend = bndedgetax[bndedgelst]; /* Get last neighbor of its edge sub-array */ if (bndvertend >= bndvertnnd) { /* If it is an anchor */ Gnum bndedloval; bndedloval = bndedlotax[bndedgelst]; bndedlosum += bndedloval; if (bndvertend == bndvertnnd) { /* Add edge from proper anchor */ bndedgetax[bndedgenum] = bndvertnum; bndedlotax[bndedgenum ++] = bndedloval; } else { bndedgetax[-- bndedgetmp] = bndvertnum; bndedlotax[bndedgetmp] = bndedloval; } } } } bndgrafdat.s.verttax[bndvertnnd + 1] = bndedgenum; /* Mark end of edge array of first anchor and start of second */ #ifdef SCOTCH_DEBUG_BGRAPH2 if (bndedgenum != bndedgetmp) { errorPrint ("bgraphBipartBd: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ if ((bndedgenum == bndgrafdat.s.verttax[bndvertnnd]) || /* If any of the anchor edges is isolated */ (bndedgenum == bndgrafdat.s.verttax[bndvertnnd + 2])) { bgraphExit (&bndgrafdat); /* Free all band graph related data */ memFree (queutab); return (bgraphBipartSt (orggrafptr, paraptr->stratorg)); /* Work on original graph */ } if (bnddegrmax < (bndgrafdat.s.verttax[bndvertnnd + 1] - bndgrafdat.s.verttax[bndvertnnd])) bnddegrmax = (bndgrafdat.s.verttax[bndvertnnd + 1] - bndgrafdat.s.verttax[bndvertnnd]); if (bnddegrmax < (bndgrafdat.s.verttax[bndvertnnd + 2] - bndgrafdat.s.verttax[bndvertnnd + 1])) bnddegrmax = (bndgrafdat.s.verttax[bndvertnnd + 2] - bndgrafdat.s.verttax[bndvertnnd + 1]); bndgrafdat.s.degrmax = bnddegrmax; bndedlooftval = bndedlotax - bndedgetax; bndgrafdat.s.edgetax = (Gnum *) memRealloc (bndedgetax + bndgrafdat.s.baseval, (bndedlooftval + bndgrafdat.s.edgenbr) * sizeof (Gnum)) - bndgrafdat.s.baseval; bndgrafdat.s.edlotax = bndgrafdat.s.edgetax + bndedlooftval; /* Use old index into old array as new index */ bndedgetax = bndgrafdat.s.edgetax; bndedlotax = bndgrafdat.s.edlotax; for (bndfronnum = 0, bndvertnum = orggrafptr->s.baseval; /* Fill band frontier array with first vertex indices as they make the separator */ bndfronnum < orggrafptr->fronnbr; bndfronnum ++, bndvertnum ++) bndgrafdat.frontab[bndfronnum] = bndvertnum; if (bndveextax != NULL) { Gnum bndcommloadintn; Gnum bndfronnnd; Gnum bndvertnum; Gnum bndedgenum; bndcommloadintn = 0; for (bndvertnum = orggrafptr->s.baseval, bndfronnnd = bndvertnum + orggrafptr->fronnbr; /* Compute communication load at frontier */ bndvertnum < bndfronnnd; bndvertnum ++) { Gnum bndpartval; bndpartval = (Gnum) bndgrafdat.parttax[bndvertnum]; if (bndpartval != 0) /* Process only frontier vertices in part 0 */ continue; for (bndedgenum = bndgrafdat.s.verttax[bndvertnum]; bndedgenum < bndgrafdat.s.vendtax[bndvertnum]; bndedgenum ++) { Gnum bndpartend; bndpartend = (Gnum) bndgrafdat.parttax[bndedgetax[bndedgenum]]; bndcommloadintn += bndedlotax[bndedgenum] * bndpartend; } } bndcommloadintn *= orggrafptr->domndist; bndveextax[bndvertnnd + 1] = (orggrafptr->commload - orggrafptr->commloadextn0 - bndcommloadintn) - bndcommgainextn1; bndveextax[bndvertnnd] = (orggrafptr->commload - orggrafptr->commloadextn0 - bndcommloadintn) - bndcommgainextn + bndcommgainextn1 + orggrafptr->commgainextn; } bndgrafdat.fronnbr = orggrafptr->fronnbr; bndgrafdat.compload0 = orggrafptr->compload0; bndgrafdat.compload0min = orggrafptr->compload0min; bndgrafdat.compload0max = orggrafptr->compload0max; bndgrafdat.compload0avg = orggrafptr->compload0avg; bndgrafdat.compload0dlt = orggrafptr->compload0dlt; bndgrafdat.compsize0 = bndvertnbr - bndcompsize1 - 1; /* "- 1" for anchor vertex in part 0 */ bndgrafdat.commload = orggrafptr->commload; bndgrafdat.commloadextn0 = orggrafptr->commloadextn0; bndgrafdat.commgainextn = orggrafptr->commgainextn; bndgrafdat.commgainextn0 = orggrafptr->commgainextn0; bndgrafdat.domndist = orggrafptr->domndist; bndgrafdat.domnwght[0] = orggrafptr->domnwght[0]; bndgrafdat.domnwght[1] = orggrafptr->domnwght[1]; bndgrafdat.vfixload[0] = orggrafptr->vfixload[0]; bndgrafdat.vfixload[1] = orggrafptr->vfixload[1]; bndgrafdat.bbalval = orggrafptr->bbalval; bndgrafdat.levlnum = orggrafptr->levlnum; #ifdef SCOTCH_DEBUG_BGRAPH2 if ((graphCheck (&bndgrafdat.s) != 0) || /* Check band graph consistency */ (bgraphCheck (&bndgrafdat) != 0)) { errorPrint ("bgraphBipartBd: inconsistent band graph data"); bgraphExit (&bndgrafdat); memFree (queutab); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ if (bgraphBipartSt (&bndgrafdat, paraptr->stratbnd) != 0) { /* Apply strategy to band graph */ errorPrint ("bgraphBipartBd: cannot bipartition band graph"); bgraphExit (&bndgrafdat); memFree (queutab); return (1); } if (bndgrafdat.parttax[bndvertnnd] == /* If band graph was too small and anchors went to the same part, apply strategy on full graph */ bndgrafdat.parttax[bndvertnnd + 1]) { bgraphExit (&bndgrafdat); memFree (queutab); return (bgraphBipartSt (orggrafptr, paraptr->stratorg)); } orggrafptr->compload0 = bndgrafdat.compload0; orggrafptr->compload0dlt = bndgrafdat.compload0dlt; orggrafptr->commload = bndgrafdat.commload; orggrafptr->commgainextn = bndgrafdat.commgainextn; orggrafptr->bbalval = bndgrafdat.bbalval; if (bndgrafdat.parttax[bndvertnnd] != 0) { /* If anchors swapped parts, swap all parts of original vertices */ Gnum orgvertnum; orggrafptr->compsize0 = orggrafptr->s.vertnbr - orggrafptr->compsize0 - bndcompsize1 + bndgrafdat.compsize0 - 1; /* "- 1" for anchor 0 */ for (orgvertnum = orggrafptr->s.baseval; orgvertnum < orggrafptr->s.vertnnd; orgvertnum ++) orgparttax[orgvertnum] ^= 1; } else orggrafptr->compsize0 = orggrafptr->compsize0 - (bndvertnbr - bndcompsize1) + bndgrafdat.compsize0 + 1; /* "+ 1" for anchor 0 */ for (bndvertnum = bndgrafdat.s.baseval; bndvertnum < bndvertnnd; bndvertnum ++) /* Update part array of full graph */ orgparttax[bndvnumtax[bndvertnum]] = bndgrafdat.parttax[bndvertnum]; for (bndfronnum = orgfronnum = ancfronnum = 0; /* Update frontier array of full graph */ bndfronnum < bndgrafdat.fronnbr; bndfronnum ++) { Gnum bndvertnum; Gnum orgvertnum; bndvertnum = bndgrafdat.frontab[bndfronnum]; orgvertnum = bndvnumtax[bndvertnum]; if (orgvertnum != -1) /* If frontier vertex is not an anchor vertex */ orgfrontab[orgfronnum ++] = orgvertnum; /* Record it as original frontier vertex */ else bndgrafdat.frontab[ancfronnum ++] = bndvertnum; /* Else record it for future processing */ } while (ancfronnum > 0) { /* For all recorded frontier anchor vertices */ Gnum bndvertnum; /* Index of frontier anchor vertex in band graph */ GraphPart ancpartval; bndvertnum = bndgrafdat.frontab[-- ancfronnum]; ancpartval = bndgrafdat.parttax[bndvertnum]; for (bndedgenum = bndgrafdat.s.verttax[bndvertnum]; bndedgenum < bndgrafdat.s.vendtax[bndvertnum]; bndedgenum ++) { Gnum bndvertend; /* Index of neighbor of anchor vertex in band graph */ Gnum orgvertnum; /* Index of neighbor of anchor vertex in original graph */ Gnum orgedgenum; bndvertend = bndedgetax[bndedgenum]; if (bndgrafdat.parttax[bndvertend] == ancpartval) /* If neighbor is in same part as anchor, skip to next */ continue; orgvertnum = bndvnumtax[bndvertend]; for (orgedgenum = orgverttax[orgvertnum]; /* For all neighbors of neighbor */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum orgvertend; orgvertend = orgedgetax[orgedgenum]; /* Get end vertex in original graph */ if (orgindxtax[orgvertend] == ~0) { /* If vertex never considered before */ #ifdef SCOTCH_DEBUG_BGRAPH2 if (orgparttax[orgvertend] != ancpartval) { /* Original vertex should always be in same part as anchor */ errorPrint ("bgraphBipartBd: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ orggrafptr->frontab[orgfronnum ++] = orgvertend; /* Add vertex to frontier array */ orgindxtax[orgvertend] = 0; /* Flag vertex as already enqueued */ } } } } orggrafptr->fronnbr = orgfronnum; bgraphExit (&bndgrafdat); /* Free band graph structures */ memFree (queutab); #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (orggrafptr) != 0) { errorPrint ("bgraphBipartBd: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/wgraph_part_zr.c0000644000302600021200000000672613470115365021233 0ustar pelegrinpelegrin/* Copyright 2007-2010,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_zr.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** to the first subdomain of the **/ /** partition. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 14 mar 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_ZR #include "module.h" #include "common.h" #include "graph.h" #include "wgraph.h" #include "wgraph_part_zr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine moves all of the graph vertices ** to the first part of the partition. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int wgraphPartZr ( Wgraph * const grafptr) /*+ Active graph +*/ { if (grafptr->compsize[0] != grafptr->s.vertnbr) /* If not all vertices already in part zero */ wgraphZero (grafptr); return (0); } scotch_6.0.9/src/libscotch/library_dgraph_order_tree_dist_f.c0000644000302600021200000000750213560013261024716 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_tree_dist_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed ordering distributed tree **/ /** building routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.1 : from : 30 nov 2007 **/ /** to 30 nov 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ DGRAPHORDERCBLKDIST, dgraphordercblkdist, ( \ SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ SCOTCH_Num * const cblkglbptr), \ (grafptr, ordeptr, cblkglbptr)) { *cblkglbptr = SCOTCH_dgraphOrderCblkDist (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERTREEDIST, dgraphordertreedist, ( \ SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const ordeptr, \ SCOTCH_Num * const treeglbtab, \ SCOTCH_Num * const sizeglbtab, \ int * const revaptr), \ (grafptr, ordeptr, treeglbtab, sizeglbtab, revaptr)) { *revaptr = SCOTCH_dgraphOrderTreeDist (grafptr, ordeptr, treeglbtab, sizeglbtab); } scotch_6.0.9/src/libscotch/vmesh_separate_st.c0000644000302600021200000003322013465315041021700 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the global mesh **/ /** separation strategy and method tables. **/ /** **/ /** DATES : # Version 4.0 : from : 20 sep 2002 **/ /** to 08 feb 2003 **/ /** # Version 5.0 : from : 04 aug 2007 **/ /** to 04 aug 2007 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_SEPARATE_ST #include "module.h" #include "common.h" #include "gain.h" #include "parser.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "mesh.h" #include "mesh_coarsen.h" #include "vmesh.h" #include "vmesh_separate_fm.h" #include "vmesh_separate_gg.h" #include "vmesh_separate_gr.h" #include "vmesh_separate_ml.h" #include "vmesh_separate_zr.h" #include "vmesh_separate_st.h" /* ** The static and global variables. */ static Vmesh vmeshdummy; /* Dummy separator mesh for offset computations */ static union { VmeshSeparateFmParam param; StratNodeMethodData padding; } vmeshseparatedefaultfm = { { 200, 1000, 0.1L } }; static union { VmeshSeparateGgParam param; StratNodeMethodData padding; } vmeshseparatedefaultgg = { { 5 } }; #ifdef SCOTCH_DEBUG_VMESH2 static union { VmeshSeparateGrParam param; StratNodeMethodData padding; } vmeshseparatedefaultgr = { { &stratdummy } }; #endif /* SCOTCH_DEBUG_VMESH2 */ static union { VmeshSeparateMlParam param; StratNodeMethodData padding; } vmeshseparatedefaultml = { { 1000, 0.8L, MESHCOARSENNGB, &stratdummy, &stratdummy } }; static StratMethodTab vmeshseparatestmethtab[] = { /* Mesh separation methods array */ { VMESHSEPASTMETHFM, "f", vmeshSeparateFm, &vmeshseparatedefaultfm }, { VMESHSEPASTMETHGG, "h", vmeshSeparateGg, &vmeshseparatedefaultgg }, #ifdef SCOTCH_DEBUG_VMESH2 { VMESHSEPASTMETHGR, "v", vmeshSeparateGr, &vmeshseparatedefaultgr }, #endif /* SCOTCH_DEBUG_VMESH2 */ { VMESHSEPASTMETHML, "m", vmeshSeparateMl, &vmeshseparatedefaultml }, { VMESHSEPASTMETHZR, "z", vmeshSeparateZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab vmeshseparatestparatab[] = { /* Mesh separation method parameter list */ { VMESHSEPASTMETHFM, STRATPARAMINT, "move", (byte *) &vmeshseparatedefaultfm.param, (byte *) &vmeshseparatedefaultfm.param.movenbr, NULL }, { VMESHSEPASTMETHFM, STRATPARAMINT, "pass", (byte *) &vmeshseparatedefaultfm.param, (byte *) &vmeshseparatedefaultfm.param.passnbr, NULL }, { VMESHSEPASTMETHFM, STRATPARAMDOUBLE, "bal", (byte *) &vmeshseparatedefaultfm.param, (byte *) &vmeshseparatedefaultfm.param.deltrat, NULL }, { VMESHSEPASTMETHGG, STRATPARAMINT, "pass", (byte *) &vmeshseparatedefaultgg.param, (byte *) &vmeshseparatedefaultgg.param.passnbr, NULL }, #ifdef SCOTCH_DEBUG_VMESH2 { VMESHSEPASTMETHGR, STRATPARAMSTRAT, "strat", (byte *) &vmeshseparatedefaultgr.param, (byte *) &vmeshseparatedefaultgr.param.stratptr, (void *) &vgraphseparateststratab }, #endif /* SCOTCH_DEBUG_VMESH2 */ { VMESHSEPASTMETHML, STRATPARAMSTRAT, "asc", (byte *) &vmeshseparatedefaultml.param, (byte *) &vmeshseparatedefaultml.param.stratasc, (void *) &vmeshseparateststratab }, { VMESHSEPASTMETHML, STRATPARAMSTRAT, "low", (byte *) &vmeshseparatedefaultml.param, (byte *) &vmeshseparatedefaultml.param.stratlow, (void *) &vmeshseparateststratab }, { VMESHSEPASTMETHML, STRATPARAMCASE, "type", (byte *) &vmeshseparatedefaultml.param, (byte *) &vmeshseparatedefaultml.param.coartype, (void *) "hsn" }, { VMESHSEPASTMETHML, STRATPARAMINT, "vnod", (byte *) &vmeshseparatedefaultml.param, (byte *) &vmeshseparatedefaultml.param.vnodnbr, NULL }, { VMESHSEPASTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &vmeshseparatedefaultml.param, (byte *) &vmeshseparatedefaultml.param.coarrat, NULL }, { VMESHSEPASTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab vmeshseparatestcondtab[] = { /* Mesh condition parameter table */ { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &vmeshdummy, (byte *) &vmeshdummy.m.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &vmeshdummy, (byte *) &vmeshdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "load", (byte *) &vmeshdummy, (byte *) &vmeshdummy.m.vnlosum, NULL }, { STRATNODECOND, STRATPARAMINT, "velm", (byte *) &vmeshdummy, (byte *) &vmeshdummy.m.velmnbr, NULL }, { STRATNODECOND, STRATPARAMINT, "vnod", (byte *) &vmeshdummy, (byte *) &vmeshdummy.m.vnodnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab vmeshseparateststratab = { /* Strategy tables for mesh separation methods */ vmeshseparatestmethtab, vmeshseparatestparatab, vmeshseparatestcondtab }; /*******************************************/ /* */ /* This is the generic separation routine. */ /* */ /*******************************************/ /* This routine computes the separation of ** the given graph according to the given ** strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int vmeshSeparateSt ( Vmesh * restrict const meshptr, /*+ Separation mesh +*/ const Strat * restrict const strat) /*+ Separation strategy +*/ { StratTest val; VmeshStore save[2]; /* Results of the two strategies */ int o; #ifdef SCOTCH_DEBUG_VMESH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("vmeshSeparateSt: invalid type specification for parser variables"); return (1); } if ((sizeof (VmeshSeparateFmParam) > sizeof (StratNodeMethodData)) || (sizeof (VmeshSeparateGgParam) > sizeof (StratNodeMethodData)) || (sizeof (VmeshSeparateGrParam) > sizeof (StratNodeMethodData)) || (sizeof (VmeshSeparateMlParam) > sizeof (StratNodeMethodData))) { errorPrint ("vmeshSeparateSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_VMESH2 */ #ifdef SCOTCH_DEBUG_VMESH1 if (strat->tabl != &vmeshseparateststratab) { errorPrint ("vmeshSeparateSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_VMESH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = vmeshSeparateSt (meshptr, strat->data.concat.strat[0]); /* Apply first strategy */ if (o == 0) /* If it worked all right */ o |= vmeshSeparateSt (meshptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) meshptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_VMESH2 if ((val.typetest != STRATTESTVAL) && (val.typenode != STRATPARAMLOG)) { errorPrint ("vmeshSeparateSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_VMESH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = vmeshSeparateSt (meshptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = vmeshSeparateSt (meshptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : if (((vmeshStoreInit (meshptr, &save[0])) != 0) || /* Allocate save areas */ ((vmeshStoreInit (meshptr, &save[1])) != 0)) { errorPrint ("vmeshSeparateSt: out of memory"); vmeshStoreExit (&save[0]); return (1); } vmeshStoreSave (meshptr, &save[1]); /* Save initial bipartition */ vmeshSeparateSt (meshptr, strat->data.select.strat[0]); /* Apply first strategy */ vmeshStoreSave (meshptr, &save[0]); /* Save its result */ vmeshStoreUpdt (meshptr, &save[1]); /* Restore initial bipartition */ vmeshSeparateSt (meshptr, strat->data.select.strat[1]); /* Apply second strategy */ if ( (save[0].fronnbr < meshptr->fronnbr) || /* If first strategy is better */ ((save[0].fronnbr == meshptr->fronnbr) && (abs (save[0].ncmploaddlt) < abs (meshptr->ncmploaddlt)))) vmeshStoreUpdt (meshptr, &save[0]); /* Restore its result */ vmeshStoreExit (&save[0]); /* Free both save areas */ vmeshStoreExit (&save[1]); break; #ifdef SCOTCH_DEBUG_VMESH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_VMESH1 */ default : #endif /* SCOTCH_DEBUG_VMESH1 */ return (strat->tabl->methtab[strat->data.method.meth].func (meshptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_VMESH1 default : errorPrint ("vmeshSeparateSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_VMESH1 */ } return (o); } scotch_6.0.9/src/libscotch/library_graph_part_ovl.c0000644000302600021200000001447013560013261022720 0ustar pelegrinpelegrin/* Copyright 2010,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_part_ovl.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the graph **/ /** partitioning routines with overlap of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 28 may 2010 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "wgraph.h" #include "wgraph_part_st.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* graph partitioning with overlap. */ /* */ /************************************/ /*+ This routine computes a partition with *** overlap of the given graph structure *** with respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphPartOvl ( SCOTCH_Graph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Strat * const straptr, /*+ Partitioning strategy +*/ SCOTCH_Num * const parttab) /*+ Partition array +*/ { Wgraph grafdat; const Strat * partstraptr; int o; if (*((Strat **) straptr) == NULL) /* Set default partitioning strategy if necessary */ SCOTCH_stratGraphPartOvlBuild (straptr, SCOTCH_STRATQUALITY, (Gnum) partnbr, (double) 0.05); partstraptr = *((Strat **) straptr); if (partstraptr->tabl != &wgraphpartststratab) { errorPrint (STRINGIFY (SCOTCH_graphPartOvl) ": not a graph partitioning with overlap strategy"); return (1); } intRandInit (); /* Check that random number generator is initialized */ wgraphInit (&grafdat, (Graph *) grafptr, partnbr); /* Initialize graph from given graph */ grafdat.parttax = ((Gnum *) parttab) - grafdat.s.baseval; /* Directly use given part array */ grafdat.levlnum = 0; if (wgraphAlloc (&grafdat) != 0) { /* Always allocate graph data when calling */ errorPrint (STRINGIFY (SCOTCH_graphPartOvl) ": out of memory"); return (1); } o = wgraphPartSt (&grafdat, partstraptr); wgraphExit (&grafdat); return (o); } /*+ This routine parses the given *** partitioning strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratGraphPartOvl ( SCOTCH_Strat * const straptr, const char * const string) { if (*((Strat **) straptr) != NULL) stratExit (*((Strat **) straptr)); if ((*((Strat **) straptr) = stratInit (&wgraphpartststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratGraphPartOvl) ": error in sequential overlap partitioning strategy"); return (1); } return (0); } /*+ This routine provides predefined *** overlap partitioning strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratGraphPartOvlBuild ( SCOTCH_Strat * const straptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num partnbr, /*+ Number of expected parts/size +*/ const double balrat) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char kbaltab[64]; sprintf (bufftab, "m{vert=%ld,low=r{sep=m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}}|m{rat=0.7,vert=100,low=h{pass=10},asc=b{width=3,bnd=f{bal=},org=(|h{pass=10})f{bal=}}}},asc=f{bal=}}", (long) (20 * partnbr)); sprintf (kbaltab, "%lf", balrat); stringSubst (bufftab, "", kbaltab); if (SCOTCH_stratGraphPartOvl (straptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratGraphPartOvlBuild) ": error in sequential overlap partitioning strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/arch_vcmplt.h0000644000302600021200000001312513560005302020465 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_vcmplt.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the variable-sized complete graph **/ /** target architecture functions. **/ /** **/ /** DATES : # Version 3.0 : from : 01 jul 1995 **/ /** to 09 aug 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 20 jul 1996 **/ /** # Version 3.2 : from : 15 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 08 nov 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 05 nov 2003 **/ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_VCMPLT_H_STRUCT #define ARCH_VCMPLT_H_STRUCT /*+ The variable-sized complete graph bipartitioning definitions. +*/ typedef struct ArchVcmplt_ { int padding; /*+ No data needed +*/ } ArchVcmplt; typedef struct ArchVcmpltDom_ { Anum termlvl; /*+ Terminal depth +*/ Anum termnum; /*+ Terminal number +*/ } ArchVcmpltDom; #endif /* ARCH_VCMPLT_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_VCMPLT_H_PROTO #define ARCH_VCMPLT_H_PROTO #define archVcmpltArchLoad NULL #define archVcmpltArchSave NULL #define archVcmpltArchFree NULL #define archVcmpltMatchInit NULL #define archVcmpltMatchExit NULL #define archVcmpltMatchMate NULL ArchDomNum archVcmpltDomNum (const ArchVcmplt * const, const ArchVcmpltDom * const); int archVcmpltDomTerm (const ArchVcmplt * const, ArchVcmpltDom * restrict const, const ArchDomNum); Anum archVcmpltDomSize (const ArchVcmplt * const, const ArchVcmpltDom * const); #define archVcmpltDomWght archVcmpltDomSize Anum archVcmpltDomDist (const ArchVcmplt * const, const ArchVcmpltDom * const, const ArchVcmpltDom * const); int archVcmpltDomFrst (const ArchVcmplt * const, ArchVcmpltDom * const); int archVcmpltDomLoad (const ArchVcmplt * const, ArchVcmpltDom * const, FILE * const); int archVcmpltDomSave (const ArchVcmplt * const, const ArchVcmpltDom * const, FILE * const); int archVcmpltDomBipart (const ArchVcmplt * const, const ArchVcmpltDom * const, ArchVcmpltDom * restrict const, ArchVcmpltDom * restrict const); int archVcmpltDomIncl (const ArchVcmplt * const, const ArchVcmpltDom * const, const ArchVcmpltDom * const); #ifdef SCOTCH_PTSCOTCH int archVcmpltDomMpiType (const ArchVcmplt * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_VCMPLT_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/bdgraph_bipart_sq.h0000644000302600021200000000627613560005346021657 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_sq.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the sequential bipartitioning **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 19 nov 2007 **/ /** to : 20 nov 2007 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BdgraphBipartSqParam_ { Strat * strat; /*+ Sequential bipartitioning strategy used +*/ } BdgraphBipartSqParam; /* ** The function prototypes. */ #ifdef BDGRAPH_BIPART_SQ static void bdgraphBipartSqOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); #endif /* BDGRAPH_BIPART_SQ */ int bdgraphBipartSq (Bdgraph * const, const BdgraphBipartSqParam * const); scotch_6.0.9/src/libscotch/dorder.c0000644000302600021200000003073513560012725017452 0ustar pelegrinpelegrin/* Copyright 2004,2007,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 18 apr 2006 **/ /** to 28 jul 2006 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine initializes a distributed ** ordering with respect to the given parameters. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dorderInit ( Dorder * restrict const ordeptr, const Gnum baseval, const Gnum vnodglbnbr, MPI_Comm proccomm) { ordeptr->baseval = baseval; ordeptr->vnodglbnbr = vnodglbnbr; ordeptr->cblklocnbr = 0; ordeptr->linkdat.nextptr = &ordeptr->linkdat; /* Loop double-chained list */ ordeptr->linkdat.prevptr = &ordeptr->linkdat; MPI_Comm_dup (proccomm, &ordeptr->proccomm); /* Duplicate communicator to avoid lifespan problems */ MPI_Comm_rank (ordeptr->proccomm, &ordeptr->proclocnum); #ifdef SCOTCH_PTHREAD pthread_mutex_init (&ordeptr->mutelocdat, NULL); /* Initialize local mutex */ #endif /* SCOTCH_PTHREAD */ return (0); } /* This routine frees the column blocks ** of the given distributed ordering. ** It returns: ** - void : in all cases. */ static void dorderFreeCblk ( DorderCblk * restrict const cblkptr) { #ifdef SCOTCH_DEBUG_DORDER2 if ((cblkptr->typeval != DORDERCBLKNONE) && /* If sub-ordering has been computed elsewhere by hdgraphOrderSq() */ (cblkptr->typeval != DORDERCBLKNEDI) && (cblkptr->typeval != DORDERCBLKLEAF) && (cblkptr->typeval != (DORDERCBLKNEDI | DORDERCBLKLEAF))) /* If distributed leaf of a local sequential nested dissection */ errorPrint ("dorderFreeCblk: invalid column block type"); #endif /* SCOTCH_DEBUG_DORDER2 */ if ((cblkptr->typeval & DORDERCBLKLEAF) != 0) { memFree (cblkptr->data.leaf.periloctab); if (cblkptr->data.leaf.nodeloctab != NULL) memFree (cblkptr->data.leaf.nodeloctab); } memFree (cblkptr); /* Free column block structure */ } void dorderFree ( Dorder * restrict const ordeptr) { DorderCblk * cblkptr; DorderLink * linkptr; for (linkptr = ordeptr->linkdat.nextptr; linkptr != &ordeptr->linkdat; ) { cblkptr = (DorderCblk *) linkptr; /* TRICK: FIRST */ linkptr = linkptr->nextptr; dorderFreeCblk (cblkptr); } ordeptr->linkdat.nextptr = /* Loop double-chained list */ ordeptr->linkdat.prevptr = &ordeptr->linkdat; } /* This routine frees the contents ** of the given ordering. ** It returns: ** - void : in all cases. */ void dorderExit ( Dorder * restrict const ordeptr) { dorderFree (ordeptr); MPI_Comm_free (&ordeptr->proccomm); /* Free duplicated communicator */ #ifdef SCOTCH_PTHREAD pthread_mutex_destroy (&ordeptr->mutelocdat); /* Destroy local mutex */ #endif /* SCOTCH_PTHREAD */ #ifdef SCOTCH_DEBUG_DORDER2 memSet (ordeptr, ~0, sizeof (Dorder)); #endif /* SCOTCH_DEBUG_DORDER2 */ } /* This routine creates the root column ** block slot in the given distributed ** ordering structure. ** It returns: ** - !NULL : root column block. ** - NULL : on error. */ DorderCblk * dorderFrst ( Dorder * const ordeptr) { DorderCblk cblkdat; DorderCblk * cblkptr; cblkdat.ordelocptr = ordeptr; /* Fake father node */ cblkdat.cblknum.proclocnum = 0; /* Belongs to process 0 to ease displacement computations */ cblkdat.cblknum.cblklocnum = -1; if ((cblkptr = dorderNew (&cblkdat, ordeptr->proccomm)) == NULL) return (NULL); cblkptr->ordeglbval = 0; /* Un-based inverse permutation index */ cblkptr->vnodglbnbr = ordeptr->vnodglbnbr; cblkptr->cblkfthnum = 0; return (cblkptr); } /* This routine gives back a new distributed ** column block slot in the same ordering ** structure as the given column block. ** It returns: ** - !NULL : new column block. ** - NULL : on error. */ DorderCblk * dorderNew ( DorderCblk * const cblkptr, /* One of the column blocks */ MPI_Comm proccomm) /* Communicator sharing the block */ { Dorder * restrict ordeptr; DorderCblk * restrict cblknewptr; Gnum reduloctab[3]; Gnum reduglbtab[3]; int proclocnum; MPI_Comm_rank (proccomm, &proclocnum); ordeptr = cblkptr->ordelocptr; reduloctab[1] = /* Assume process is not root for this column block */ reduloctab[2] = 0; if ((cblknewptr = (DorderCblk *) memAlloc (sizeof (DorderCblk))) == NULL) { errorPrint ("dorderNew: out of memory"); reduloctab[0] = 2; /* Indicate error without doubt */ } else { reduloctab[0] = 0; if (proclocnum == 0) { /* If root of sub-tree */ reduloctab[0] = 1; /* Indicate it is the root */ reduloctab[1] = ordeptr->proclocnum; /* Broadcast global rank of block root */ #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&ordeptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ reduloctab[2] = ordeptr->cblklocnbr ++; /* One more root block in local ordering */ #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&ordeptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ } } if (MPI_Allreduce (&reduloctab, &reduglbtab, 3, GNUM_MPI, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("dorderNew: communication error"); return (NULL); } if (reduglbtab[0] != 1) { errorPrint ("dorderNew: cannot create new node"); if (cblknewptr != NULL) memFree (cblknewptr); return (NULL); } cblknewptr->ordelocptr = ordeptr; cblknewptr->typeval = DORDERCBLKNONE; cblknewptr->fathnum = cblkptr->cblknum; cblknewptr->cblknum.proclocnum = (int) reduglbtab[1]; cblknewptr->cblknum.cblklocnum = reduglbtab[2]; #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&ordeptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ cblknewptr->linkdat.nextptr = &ordeptr->linkdat; /* Link new block at end of local ordering node list */ cblknewptr->linkdat.prevptr = ordeptr->linkdat.prevptr; ordeptr->linkdat.prevptr->nextptr = &cblknewptr->linkdat; ordeptr->linkdat.prevptr = &cblknewptr->linkdat; #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&ordeptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ return (cblknewptr); } /* This routine gives back a new centralized ** column block slot in the same ordering ** structure as the given column block. ** It returns: ** - !NULL : new column block. ** - NULL : on error. */ DorderCblk * dorderNewSequ ( DorderCblk * const cblkptr) /* One of the column blocks */ { Dorder * restrict ordeptr; DorderCblk * restrict cblknewptr; if ((cblknewptr = (DorderCblk *) memAlloc (sizeof (DorderCblk))) == NULL) { errorPrint ("dorderNewSequ: out of memory"); return (NULL); } ordeptr = cblkptr->ordelocptr; cblknewptr->ordelocptr = ordeptr; cblknewptr->typeval = DORDERCBLKNONE; cblknewptr->fathnum = cblkptr->cblknum; cblknewptr->cblknum.proclocnum = ordeptr->proclocnum; /* Node belongs to this process */ #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&ordeptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ cblknewptr->cblknum.cblklocnum = ordeptr->cblklocnbr ++; /* One more locally-rooted block in ordering */ cblknewptr->linkdat.nextptr = &ordeptr->linkdat; /* Link new block at end of local ordering node list */ cblknewptr->linkdat.prevptr = ordeptr->linkdat.prevptr; ordeptr->linkdat.prevptr->nextptr = &cblknewptr->linkdat; ordeptr->linkdat.prevptr = &cblknewptr->linkdat; #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&ordeptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ return (cblknewptr); } /* This routine gives back a new centralized ** index range in the same ordering structure ** as the given column block. ** It returns: ** - !NULL : new column block. ** - NULL : on error. */ Gnum dorderNewSequIndex ( DorderCblk * const cblkptr, /* One of the column blocks */ const Gnum cblknbr) /* Number of indices to reserve */ { Dorder * restrict ordeptr; Gnum cblklocnum; ordeptr = cblkptr->ordelocptr; #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&ordeptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ cblklocnum = ordeptr->cblklocnbr; /* Get current local index number */ ordeptr->cblklocnbr += cblknbr; /* These more root blocks in local ordering */ #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&ordeptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ return (cblklocnum); } /* This routine removes a no longer used ** column block from the given distributed ** ordering. Leaves or locally-rooted column ** blocks are kept, others are removed. ** It returns: ** - void : in all cases. */ void dorderDispose ( DorderCblk * const cblkptr) /* Column block to consider */ { Dorder * restrict ordeptr; ordeptr = cblkptr->ordelocptr; if (cblkptr->cblknum.proclocnum == ordeptr->proclocnum) /* If node is local root of column block, keep it */ return; if ((cblkptr->typeval & DORDERCBLKLEAF) == 0) { /* If node is not non-rooted leaf of distributed ordering */ #ifdef SCOTCH_PTHREAD pthread_mutex_lock (&ordeptr->mutelocdat); /* Lock local mutex */ #endif /* SCOTCH_PTHREAD */ cblkptr->linkdat.nextptr->prevptr = cblkptr->linkdat.prevptr; /* Unchain node from double-chained list */ cblkptr->linkdat.prevptr->nextptr = cblkptr->linkdat.nextptr; #ifdef SCOTCH_PTHREAD pthread_mutex_unlock (&ordeptr->mutelocdat); /* Unlock local mutex */ #endif /* SCOTCH_PTHREAD */ memFree (cblkptr); } } scotch_6.0.9/src/libscotch/hgraph_order_hf.c0000644000302600021200000001632213303015264021304 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_hf.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a subgraph using **/ /** the block-oriented Halo Approximate **/ /** (Multiple) Minimum Fill algorithm, **/ /** with super-variable accounting **/ /** R2HAMDf4 v2.0). **/ /** **/ /** DATES : # Version 3.4 : from : 15 may 2001 **/ /** to : 23 nov 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 24 jan 2004 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_HF #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hall_order_hf.h" #include "hall_order_hx.h" #include "hgraph_order_hf.h" #include "hgraph_order_hx.h" #include "hgraph_order_si.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderHf ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Multiple column-block +*/ const HgraphOrderHfParam * restrict const paraptr) { Gnum nbbuck; Gnum * restrict petab; Gnum pfree; Gnum iwlen; Gnum * restrict iwtab; Gnum * restrict lentab; Gnum * restrict nvartab; Gnum * restrict elentab; Gnum * restrict lasttab; Gnum * restrict leaftab; Gnum * restrict secntab; /* Array of index to first secondary variable */ Gnum * restrict nexttab; /* Array of index of next principal variable */ Gnum * restrict frsttab; Gnum * restrict headtab; /* Head array : nbbuck = 2 * n */ Gnum ncmpa; Gnum n; /* Number of nodes to order (with halo or not) */ int o; if (grafptr->s.vertnbr < paraptr->colmin) /* If graph is too small, order simply */ return (hgraphOrderSi (grafptr, ordeptr, ordenum, cblkptr)); n = grafptr->s.vertnbr; nbbuck = n * 2; iwlen = (Gnum) ((double) grafptr->s.edgenbr * HGRAPHORDERHFCOMPRAT) + 32; if (iwlen < n) /* Prepare to re-use array */ iwlen = n; if (memAllocGroup ((void **) (void *) &petab, (size_t) (n * sizeof (Gnum)), &iwtab, (size_t) (iwlen * sizeof (Gnum)), &lentab, (size_t) (n * sizeof (Gnum)), &nvartab, (size_t) (n * sizeof (Gnum)), &elentab, (size_t) (n * sizeof (Gnum)), &lasttab, (size_t) (n * sizeof (Gnum)), &leaftab, (size_t) (n * sizeof (Gnum)), &frsttab, (size_t) (n * sizeof (Gnum)), &secntab, (size_t) (n * sizeof (Gnum)), &nexttab, (size_t) (n * sizeof (Gnum)), &headtab, (size_t) ((nbbuck + 2) * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hgraphOrderHf: out of memory"); return (1); } hgraphOrderHxFill (grafptr, petab, lentab, iwtab, nvartab, elentab, &pfree); hallOrderHfR2hamdf4 (n, 0, nbbuck, iwlen, petab, pfree, /* No elements here */ lentab, iwtab, nvartab, elentab, lasttab, &ncmpa, leaftab, secntab, nexttab, frsttab, headtab); if (ncmpa < 0) { errorPrint ("hgraphOrderHf: internal error"); memFree (petab); /* Free group leader */ return (1); } o = hallOrderHxBuild (grafptr->s.baseval, n, grafptr->vnohnbr, grafptr->s.vnumtax, ordeptr, cblkptr, nvartab - grafptr->s.baseval, lentab - grafptr->s.baseval, petab - grafptr->s.baseval, frsttab - grafptr->s.baseval, nexttab - grafptr->s.baseval, secntab - grafptr->s.baseval, iwtab - grafptr->s.baseval, elentab - grafptr->s.baseval, ordeptr->peritab + ordenum, /* Use given inverse permutation as inverse permutation space, never based */ leaftab, paraptr->colmin, paraptr->colmax, (float) paraptr->fillrat); memFree (petab); /* Free group leader */ return (o); } scotch_6.0.9/src/libscotch/bgraph_bipart_zr.c0000644000302600021200000000741713560005346021514 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_zr.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** to the first subdomain of the **/ /** bipartition. **/ /** **/ /** DATES : # Version 3.2 : from : 23 aug 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 01 jun 2001 **/ /** # Version 4.0 : from : 01 nov 2003 **/ /** to 29 may 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_BIPART_ZR #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_zr.h" /********************************/ /* */ /* Zero bipartitioning routine. */ /* */ /********************************/ /* This routine moves all the vertices ** of the given graph to the first part. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bgraphBipartZr ( Bgraph * restrict const grafptr) /*+ Active graph +*/ { if (grafptr->compload0 != grafptr->s.velosum) /* If not all vertices already in part zero */ bgraphZero (grafptr); #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) { errorPrint ("bgraphBipartZr: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/dgraph_ghst.c0000644000302600021200000003740213560005435020463 0ustar pelegrinpelegrin/* Copyright 2007-2009,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_ghst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** This module contains the halo building **/ /** routine. **/ /** **/ /** # Version P0.0 : from : 01 apr 1997 **/ /** to 20 jun 1997 **/ /** # Version P0.1 : from : 14 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version 5.0 : from : 28 feb 2006 **/ /** to 10 sep 2007 **/ /** # Version 5.1 : from : 02 jul 2008 **/ /** to 20 feb 2011 **/ /** # Version 6.0 : from : 21 nov 2011 **/ /** to 21 nov 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_GHST #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "dgraph_ghst.h" #include "dgraph_halo.h" /* This routine builds the ghost structures ** required by the halo routines. If flagval ** is set to 0, the ghost edge array is built ** in addition to the local edge array, while ** if flagval is set to 1, the ghost edge array ** replaces the local edge array. This latter ** option is useful to save memory when processing ** intermediate graphs that are not visible to ** the user. ** It returns: ** - 0 : on success. ** - !0 : on error. */ DGRAPHALLREDUCEMAXSUMOP (2, 1) int dgraphGhst2 ( Dgraph * restrict const grafptr, /* Graph structure */ const int flagval) /* Replacement flag */ { int procngbnbr; /* Number of neighboring processes */ int * restrict procsndtab; Gnum procsndnbr; int * restrict procsidtab; /* Send index array */ int procsidnbr; /* Number of entries in send index array */ Gnum vertsidnum; /* Last vertex index in send index array */ Gnum vertlocmin; /* Smallest index of local vertices */ Gnum vertlocmax; /* Largest index of local vertices, + 1 */ Gnum vertlocbas; /* Base index for ghost edge array */ Gnum vertlocnum; /* Current vertex number (based) */ Gnum * restrict vertsidtab; /* Flag array for building procs(i|n)dtab */ Gnum vertgstnum; /* Number of current ghost vertex */ DgraphGhstSort * restrict sortloctab; /* Array for sorting ghost vertices */ Gnum sortlocnbr; /* Number of ghost edges in sort array */ Gnum sortlocnum; Gnum * edgegsttax; /* Pointer to ghost edge array, maybe the same */ Gnum reduloctab[3]; /* Gnum to perform a maxsum operator */ Gnum reduglbtab[3]; int cheklocval; const Gnum * restrict const procvrttab = grafptr->procvrttab; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; /* Pointer to original edgeloctax array */ if ((grafptr->flagval & DGRAPHHASEDGEGST) != 0) /* If ghost edge array already computed, do nothing */ return (0); cheklocval = 0; if (grafptr->edgegsttax == NULL) { /* If ghost edge array not allocated yet */ if ((flagval == 0) || ((grafptr->flagval & DGRAPHFREETABS) == 0)) { /* If no replacement or cannot modify array */ if ((grafptr->edgegsttax = (Gnum *) memAlloc (grafptr->edgelocsiz * sizeof (Gnum))) == NULL) { errorPrint ("dgraphGhst: out of memory (1)"); cheklocval = 1; } else { grafptr->edgegsttax -= grafptr->baseval; grafptr->flagval |= DGRAPHFREEEDGEGST; /* Free array on exit */ } } else { /* Replace edgeloctab by edgegsttab */ grafptr->edgegsttax = grafptr->edgeloctax; grafptr->edgeloctax = NULL; if ((grafptr->flagval & DGRAPHFREETABS) != 0) grafptr->flagval |= DGRAPHFREEEDGEGST; /* It is edgegsttax which will free edloloctax if edge arrays are grouped */ } } if ((cheklocval == 0) && (memAllocGroup ((void **) (void *) &procsidtab, (size_t) ((grafptr->edgelocnbr + grafptr->vertlocnbr) * sizeof (int)), &vertsidtab, (size_t) (grafptr->procglbnbr * sizeof (Gnum)), &sortloctab, (size_t) ((grafptr->edgelocnbr + 1) * sizeof (DgraphGhstSort)), NULL) == NULL)) { errorPrint ("dgraphGhst: out of memory (2)"); cheklocval = 1; } reduloctab[0] = 1; /* Assume memory error and prepare data for aborting */ reduloctab[1] = reduloctab[2] = 0; if (cheklocval != 0) { /* TRICK: Processes not on error will perform collective communication at end of routine */ if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 2, 1, grafptr->proccomm) != 0) { errorPrint ("dgraphGhst: communication error (1)"); return (1); } } vertlocmin = procvrttab[grafptr->proclocnum]; vertlocmax = procvrttab[grafptr->proclocnum + 1]; vertlocbas = vertlocmin - grafptr->baseval; memSet (grafptr->procrcvtab, 0, grafptr->procglbnbr * sizeof (int)); memSet (grafptr->procsndtab, 0, grafptr->procglbnbr * sizeof (int)); memSet (vertsidtab, ~0, grafptr->procglbnbr * sizeof (Gnum)); edgegsttax = grafptr->edgegsttax; procsndtab = grafptr->procsndtab; for (vertlocnum = vertsidnum = grafptr->baseval, sortlocnbr = 0, procsidnbr = 0; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = vertloctax[vertlocnum]; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertlocend; vertlocend = edgeloctax[edgelocnum]; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocend < grafptr->baseval) || (vertlocend >= (procvrttab[grafptr->procglbnbr]))) { errorPrint ("dgraphGhst: invalid edge array"); if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 2, 1, grafptr->proccomm) != 0) errorPrint ("dgraphGhst: communication error (2)"); memFree (procsidtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if ((vertlocend >= vertlocmin) && (vertlocend < vertlocmax)) /* If edge is local */ edgegsttax[edgelocnum] = vertlocend - vertlocbas; /* Adjust its index */ else { /* End vertex is not local */ int procngbnum; int procngbmax; sortloctab[sortlocnbr].vertglbnum = vertlocend; /* Add it to sort array */ sortloctab[sortlocnbr].edgegstnum = edgelocnum; sortlocnbr ++; for (procngbnum = 0, procngbmax = grafptr->procglbnbr; procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (procvrttab[procngbmed] <= vertlocend) procngbnum = procngbmed; else procngbmax = procngbmed; } if (vertsidtab[procngbnum] != vertlocnum) { /* If vertex not already sent to process */ vertsidtab[procngbnum] = vertlocnum; /* Neighbor process will receive vertex */ procsndtab[procngbnum] ++; /* One more vertex to send to this neighbor */ while ((vertlocnum - vertsidnum) >= DGRAPHGHSTSIDMAX) { /* If Gnum range too long for int */ procsidtab[procsidnbr ++] = -DGRAPHGHSTSIDMAX; /* Decrease by maximum int distance */ vertsidnum += DGRAPHGHSTSIDMAX; } if (vertsidnum != vertlocnum) { /* If communication concerns new local vertex */ procsidtab[procsidnbr ++] = - (vertlocnum - vertsidnum); /* Encode jump in procsidtab */ vertsidnum = vertlocnum; /* Current local vertex is last send vertex */ } procsidtab[procsidnbr ++] = procngbnum; /* Send this vertex data to this processor */ } } } } vertgstnum = grafptr->vertlocnnd; /* No ghost vertices yet */ procngbnbr = 0; /* No neighbor processes yet */ procsndnbr = 0; /* No vertex to send yet */ if (sortlocnbr > 0) { /* If there are ghost vertices */ Gnum vertgstbas; /* Number of current ghost vertex */ int procngbnum; intSort2asc1 (sortloctab, sortlocnbr); /* Sort them by ascending end vertex */ sortlocnum = 0; /* Start adjacency search from beginning */ procngbnum = -1; /* Start neighbor search from begnning */ do { /* For each distinct neighbor process */ vertgstbas = vertgstnum; /* Record first ghost number used for it */ edgegsttax[sortloctab[sortlocnum].edgegstnum] = vertgstnum; /* First ghost is always allocated */ while (procvrttab[++ procngbnum + 1] <= sortloctab[sortlocnum].vertglbnum) { /* Find owner process */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((procngbnum > grafptr->procglbnbr) || /* If we have skipped a neighbor to which we have to send something */ (procsndtab[procngbnum] != 0)) { errorPrint ("dgraphGhst: internal error (1)"); if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 2, 1, grafptr->proccomm) != 0) errorPrint ("dgraphGhst: communication error (3)"); memFree (procsidtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } #ifdef SCOTCH_DEBUG_DGRAPH2 if (procsndtab[procngbnum] == 0) { /* If we had in fact no edges to send to this neighbor */ errorPrint ("dgraphGhst: internal error (2)"); if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 2, 1, grafptr->proccomm) != 0) errorPrint ("dgraphGhst: communication error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ procsndnbr += procsndtab[procngbnum]; /* Sum-up vertices to send */ grafptr->procngbtab[procngbnbr ++] = procngbnum; /* Add it to neighbor process array */ while (++ sortlocnum < sortlocnbr) { /* For all following ghost edges */ if (sortloctab[sortlocnum].vertglbnum != /* If new ghost vertex */ sortloctab[sortlocnum - 1].vertglbnum) { vertgstnum ++; /* Allocate new ghost vertex number */ if (procvrttab[procngbnum + 1] <= sortloctab[sortlocnum].vertglbnum) { /* If new neighbor */ grafptr->procrcvtab[procngbnum] = vertgstnum - vertgstbas; /* Sum-up data for old neighbor */ break; /* Process new neighbor */ } } edgegsttax[sortloctab[sortlocnum].edgegstnum] = vertgstnum; /* Allocate ghost */ } } while (sortlocnum < sortlocnbr); vertgstnum ++; /* Size is one above last number */ grafptr->procrcvtab[procngbnum] = vertgstnum - vertgstbas; /* Sum-up data for last neighbor */ } grafptr->vertgstnbr = vertgstnum - grafptr->baseval; grafptr->vertgstnnd = grafptr->vertgstnbr + grafptr->baseval; grafptr->procngbnbr = procngbnbr; grafptr->procsndnbr = procsndnbr; grafptr->procsidtab = memRealloc (procsidtab, procsidnbr * sizeof (int)); /* Reallocate send index array */ grafptr->procsidnbr = procsidnbr; reduloctab[0] = 0; /* No memory error */ reduloctab[1] = /* Set maximum number of neighbors */ reduloctab[2] = grafptr->procngbnbr; if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 2, 1, grafptr->proccomm) != 0) { errorPrint ("dgraphGhst: communication error (5)"); return (1); } if (reduglbtab[0] != 0) /* If error, propagated by some previous reduction operator */ return (1); grafptr->procngbmax = reduglbtab[1]; grafptr->flagval |= DGRAPHFREEPSID | DGRAPHHASEDGEGST; /* Graph now has a valid ghost edge array */ #ifndef SCOTCH_COMM_COLL #ifndef SCOTCH_COMM_PTOP if (((float) reduglbtab[2]) <= ((float) grafptr->procglbnbr * (float) (grafptr->procglbnbr - 1) * (float) SCOTCH_COMM_PTOP_RAT)) #endif /* SCOTCH_COMM_PTOP */ grafptr->flagval |= DGRAPHCOMMPTOP; /* If too few communications, use point-to-point instead */ #endif /* SCOTCH_COMM_COLL */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphHaloCheck (grafptr) != 0) { errorPrint ("dgraphGhst: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hgraph.c0000644000302600021200000001205113470115365017437 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source graph **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 17 jan 2002 **/ /** to 01 dec 2003 **/ /** # Version 5.0 : from : 19 dec 2006 **/ /** to 30 may 2008 **/ /** # Version 6.0 : from : 17 oct 2012 **/ /** to 23 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "hgraph.h" /****************************************/ /* */ /* These routines handle source graphs. */ /* */ /****************************************/ /* This routine initializes a source graph ** structure. ** It returns: ** - 0 : in all cases. */ int hgraphInit ( Hgraph * restrict const grafptr) { memSet (grafptr, 0, sizeof (Hgraph)); /* Initialize graph fields */ grafptr->s.flagval = GRAPHFREETABS; /* By default, free all arrays */ return (0); } /* This routine frees a source graph structure. ** It returns: ** - VOID : in all cases. */ void hgraphExit ( Hgraph * restrict const grafptr) { hgraphFree (grafptr); } /* This routine frees a source graph structure. ** It returns: ** - VOID : in all cases. */ void hgraphFree ( Hgraph * restrict const grafptr) { if ((grafptr->vnhdtax != NULL) && /* Free end vertex array for non-halo vertices */ ((grafptr->s.flagval & HGRAPHFREEVNHD) != 0)) memFree (grafptr->vnhdtax + grafptr->s.baseval); graphFree (&grafptr->s); /* Free graph data */ #ifdef SCOTCH_DEBUG_HGRAPH2 memSet (grafptr, ~0, sizeof (Hgraph)); /* Purge graph fields */ #endif /* SCOTCH_DEBUG_HGRAPH2 */ } /* This routine creates a non-halo graph from a ** halo graph. ** It returns: ** - VOID : in all cases. */ void hgraphUnhalo ( const Hgraph * restrict const grafptr, Graph * restrict const ugrfptr) { ugrfptr->flagval = grafptr->s.flagval & (GRAPHBITSUSED & ~GRAPHFREETABS); /* Remove extended graph class flags and do not allow freeing */ ugrfptr->baseval = grafptr->s.baseval; ugrfptr->vertnbr = grafptr->vnohnbr; ugrfptr->vertnnd = grafptr->vnohnnd; ugrfptr->verttax = grafptr->s.verttax; ugrfptr->vendtax = grafptr->vnhdtax; ugrfptr->velotax = grafptr->s.velotax; ugrfptr->velosum = grafptr->vnlosum; ugrfptr->vnumtax = grafptr->s.vnumtax; ugrfptr->vlbltax = NULL; ugrfptr->edgenbr = grafptr->enohnbr; ugrfptr->edgetax = grafptr->s.edgetax; ugrfptr->edlotax = grafptr->s.edlotax; ugrfptr->edlosum = grafptr->enlosum; ugrfptr->degrmax = grafptr->s.degrmax; /* Upper bound */ ugrfptr->procptr = grafptr->s.procptr; } scotch_6.0.9/src/libscotch/library_dgraph_io_save_f.c0000644000302600021200000001024113560013261023160 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_io_save_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 16 may 2007 **/ /** to 16 may 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHSAVE, dgraphsave, ( \ SCOTCH_Dgraph * const grafptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_dgraphSave (grafptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/bdgraph.h0000644000302600021200000001737013560005346017610 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for distributed edge bipartition- **/ /** ing routines. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Graph option flags. +*/ #define BDGRAPHFREEFRON (DGRAPHBITSNOTUSED) /* Free part array */ #define BDGRAPHFREEPART (DGRAPHBITSNOTUSED << 1) /* Free frontier array */ #define BDGRAPHFREEVEEX (DGRAPHBITSNOTUSED << 2) /* Free external gain array */ /*+ Active graph structure. +*/ typedef struct Bdgraph_ { Dgraph s; /*+ Distributed source graph +*/ Gnum * veexloctax; /*+ Local vertex external gain array if moved to 1 +*/ Gnum veexglbsum; /*+ Global sum of veexloctax array cells +*/ GraphPart * partgsttax; /*+ Based local part array: 0,1: part +*/ Gnum * fronloctab; /*+ Array of local frontier vertex numbers +*/ Gnum fronlocnbr; /*+ Number of local frontier vertices +*/ Gnum fronglbnbr; /*+ Number of global frontier vertices +*/ Gnum complocload0; /*+ Local load of part 0 +*/ Gnum compglbload0; /*+ Global load of part 0 +*/ Gnum compglbload0min; /*+ Minimum allowed load in part 0 (strategy variable) +*/ Gnum compglbload0max; /*+ Maximum allowed load in part 0 (strategy variable) +*/ Gnum compglbload0avg; /*+ Global average load of part 0 +*/ Gnum compglbload0dlt; /*+ Load difference from the average +*/ Gnum complocsize0; /*+ Number of local vertices in part 0 +*/ Gnum compglbsize0; /*+ Number of global vertices in part 0 +*/ Gnum commglbload; /*+ Global communication load +*/ Gnum commglbgainextn; /*+ Global external gain if all swapped +*/ Gnum commglbloadextn0; /*+ Global communication load if all moved to part 0 +*/ Gnum commglbgainextn0; /*+ Global external gain if all swapped from part 0 +*/ double bbalglbval; /*+ Bipartitioning imbalance ratio (strategy variable) +*/ Anum domndist; /*+ Distance between subdomains +*/ Anum domnwght[2]; /*+ Weights for each subdomain +*/ INT levlnum; /*+ Graph coarsening level +*/ } Bdgraph; /*+ The distributed save graph structure. +*/ typedef struct BdgraphStore_ { Gnum fronlocnbr; /*+ Number of local frontier vertices +*/ Gnum fronglbnbr; /*+ Number of frontier vertices +*/ Gnum complocload0; /*+ Local load in part 0 +*/ Gnum compglbload0; /*+ Load in part 0 +*/ Gnum compglbload0dlt; /*+ Difference from the average +*/ Gnum complocsize0; /*+ Number of local vertices in part 0 +*/ Gnum compglbsize0; /*+ Number of global vertices in part 0 +*/ Gnum commglbload; Gnum commglbgainextn; byte * datatab; /*+ Variable-sized data array +*/ } BdgraphStore; /* ** The function prototypes. */ #ifdef DMAPPING_H int bdgraphInit (Bdgraph * const, const Dgraph * const, const Dgraph * const, const Arch * const, const ArchDom[]); #endif /* DMAPPING_H */ void bdgraphInit2 (Bdgraph * const, const Anum, const Anum, const Anum); #ifdef DMAPPING_H int bdgraphInit3 (Bdgraph * const, const Dgraph * const, const Dmapping * const, const ArchDom[]); #endif /* DMAPPING_H */ void bdgraphExit (Bdgraph * restrict const); void bdgraphFree (Bdgraph * restrict const); void bdgraphZero (Bdgraph * restrict const); int bdgraphCheck (const Bdgraph * restrict const); #ifdef BGRAPH_H int bdgraphGatherAll (const Bdgraph * restrict const, Bgraph * restrict); #endif /* BGRAPH_H */ int bdgraphStoreInit (const Bdgraph * const, BdgraphStore * const); void bdgraphStoreExit (BdgraphStore * const); void bdgraphStoreSave (const Bdgraph * const , BdgraphStore * const); void bdgraphStoreUpdt (Bdgraph * const, const BdgraphStore * const); scotch_6.0.9/src/libscotch/arch_hcub.h0000644000302600021200000001473113560005302020105 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_hcub.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the hypercube graph target **/ /** architecture functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 09 aug 1995 **/ /** # Version 3.1 : from : 11 jun 1996 **/ /** to 11 jun 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 may 1998 **/ /** # Version 4.0 : from : 11 nov 2003 **/ /** to 11 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_HCUB_H_STRUCT #define ARCH_HCUB_H_STRUCT /*+ The binary hypercube definitions. +*/ typedef struct ArchHcub_ { Anum dimnnbr; /*+ Number of hypercube dimensions +*/ } ArchHcub; typedef struct ArchHcubDom_ { Anum dimncur; /*+ Current dimension to be set +*/ Anum bitsset; /*+ Bit set of set dimensions +*/ } ArchHcubDom; typedef struct ArchHcubMatch_ { ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Anum vertnbr; /*+ Number of vertices in fine graph +*/ } ArchHcubMatch; #endif /* ARCH_HCUB_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_HCUB_H_PROTO #define ARCH_HCUB_H_PROTO int archHcubArchLoad (ArchHcub * restrict const, FILE * restrict const); int archHcubArchSave (const ArchHcub * const, FILE * restrict const); #define archHcubArchFree NULL int archHcubMatchInit (ArchHcubMatch * restrict const, const ArchHcub * restrict const); void archHcubMatchExit (ArchHcubMatch * restrict const); Anum archHcubMatchMate (ArchHcubMatch * restrict const, ArchCoarsenMulti ** restrict const); ArchDomNum archHcubDomNum (const ArchHcub * const, const ArchHcubDom * const); int archHcubDomTerm (const ArchHcub * const, ArchHcubDom * restrict const, const ArchDomNum); Anum archHcubDomSize (const ArchHcub * const, const ArchHcubDom * const); #define archHcubDomWght archHcubDomSize Anum archHcubDomDist (const ArchHcub * const, const ArchHcubDom * const, const ArchHcubDom * const); int archHcubDomFrst (const ArchHcub * const, ArchHcubDom * restrict const); int archHcubDomLoad (const ArchHcub * const, ArchHcubDom * restrict const, FILE * restrict const); int archHcubDomSave (const ArchHcub * const, const ArchHcubDom * const, FILE * restrict const); int archHcubDomBipart (const ArchHcub * const, const ArchHcubDom * const, ArchHcubDom * restrict const, ArchHcubDom * restrict const); int archHcubDomIncl (const ArchHcub * const, const ArchHcubDom * const, const ArchHcubDom * const); #ifdef SCOTCH_PTSCOTCH int archHcubDomMpiType (const ArchHcub * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_HCUB_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/common_file.h0000644000302600021200000000547513560005430020465 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_file.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the file and file name handling **/ /** routines. **/ /** **/ /** DATES : # Version P0.5 : from : 21 may 2007 **/ /** to 21 may 2007 **/ /** **/ /************************************************************/ #define COMMON_FILE_H /* ** The type and structure definitions. */ /* Expansion string size and associated format string. */ #define FILENAMEDISTEXPANDNBR 10 /* TRICK: Change this value in ssprintf() format strings too */ #define FILENAMEDISTEXPANDSTR "%-10d" /* TRICK: Change this value if FILENAMEDISTEXPANDNBR changes */ scotch_6.0.9/src/libscotch/vdgraph_separate_bd.h0000644000302600021200000000615613465315041022165 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_bd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the band vertex separation **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 04 mar 2006 **/ /** to : 04 mar 2006 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VdgraphSeparateBdParam_ { INT distmax; /*+ Width of band surrounding the separator +*/ Strat * strat; /*+ Separation strategy used on the band garph +*/ } VdgraphSeparateBdParam; /* ** The function prototypes. */ int vdgraphSeparateBd (Vdgraph * const, const VdgraphSeparateBdParam * const); scotch_6.0.9/src/libscotch/hmesh_order_si.h0000644000302600021200000000541513465315041021170 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_si.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the simple halo mesh ordering **/ /** routine. **/ /** **/ /** DATES : # Version 4.0 : from : 01 jan 2002 **/ /** to 28 sep 2002 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int hmeshOrderSi (const Hmesh * const, Order * const, const Gnum, OrderCblk * const); scotch_6.0.9/src/libscotch/parser_yy.h0000644000302600021200000001015013560013555020204 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_yy.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the declarations for **/ /** the strategy strings syntactic parser. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 30 may 1996 **/ /** # Version 3.2 : from : 03 oct 1996 **/ /** to 19 oct 1996 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 21 dec 2001 **/ /** # Version 5.1 : from : 09 jun 2009 **/ /** to 07 aug 2010 **/ /** # Version 6.0 : from : 27 apr 2018 **/ /** to 26 oct 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Change some function names. */ #if ((defined SCOTCH_RENAME_PARSER) || (defined yylex)) /* If prefix renaming */ #define scotchyyparse stratParserParse2 /* Parser function name */ #ifndef yylval #define yylval SCOTCH_NAME_MACRO3 (scotchyy, SCOTCH_NAME_SUFFIXC, lval) /* It should be Yacc/Bison's job to redefine it! */ #endif /* yylval */ #else /* SCOTCH_RENAME_PARSER */ #define yylex stratParserLex /* Lexical analyzer */ #define yyparse stratParserParse2 /* Parser function name */ #endif /* SCOTCH_RENAME_PARSER */ /* ** The function prototypes. */ Strat * stratParserParse (const StratTab * const, const char * const); int yylex (void); int yyparse (void); #ifdef PARSER_YY static int yyerror (const char * const); #endif /* PARSER_YY */ scotch_6.0.9/src/libscotch/kdgraph_map_rb.h0000644000302600021200000000744613465315041021144 0ustar pelegrinpelegrin/* Copyright 2008,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Parallel Dual Recursive **/ /** Bipartitioning mapping algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 16 apr 2008 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct KdgraphMapRbParam_ { Strat * stratsep; /*+ Bipartitioning strategy used +*/ Strat * stratseq; /*+ Sequential mapping strategy +*/ double kbalval; /*+ K-way imbalance ratio +*/ } KdgraphMapRbParam; /* ** The function prototypes. */ DmappingFrag * kdgraphMapRbAdd2 (const Gnum, const Anum); int kdgraphMapRbAddBoth (const Dgraph * restrict const, Dmapping * restrict const, const ArchDom * restrict const, const GraphPart * restrict const); int kdgraphMapRbAddOne (const Dgraph * restrict const, Dmapping * restrict const, const ArchDom * restrict const); int kdgraphMapRbAddPart (const Dgraph * restrict const, Dmapping * restrict const, const ArchDom * restrict const, const Gnum, const GraphPart * const, const GraphPart); int kdgraphMapRb (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); scotch_6.0.9/src/libscotch/dgraph_match_check.c0000644000302600021200000002472713560005435021755 0ustar pelegrinpelegrin/* Copyright 2008,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed graph matching **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 25 dec 2008 **/ /** to : 08 apr 2009 **/ /** # Version 6.0 : from : 15 may 2018 **/ /** to : 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_MATCH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "dgraph_match.h" /*************************************/ /* */ /* These routines handle distributed */ /* matchings. */ /* */ /*************************************/ /* This routine checks the consistency of a ** given complete matching. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphMatchCheck ( DgraphMatchData * restrict const mateptr) { Gnum baseval; Gnum * restrict flaggsttax; int procngbnum; Gnum multlocnbr; Gnum multlocnum; Gnum vertlocnbr; Gnum vertlocnnd; Gnum vertlocnum; Gnum vertlocadj; int cheklocval; int chekglbval; Dgraph * restrict const grafptr = mateptr->c.finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; const Gnum * restrict const mategsttax = mateptr->mategsttax; DgraphCoarsenVert * restrict const vsnddattab = mateptr->c.vsnddattab; const DgraphCoarsenMulti * restrict const multloctab = mateptr->c.multloctab; const int * restrict const procgsttax = mateptr->c.procgsttax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; int * restrict const nsndidxtab = mateptr->c.nsndidxtab; baseval = grafptr->baseval; cheklocval = 0; multlocnbr = mateptr->c.multlocnbr; if ((multlocnbr < 0) || (multlocnbr > grafptr->vertlocnbr)) { errorPrint ("dgraphMatchCheck: invalid number of multinodes"); cheklocval = 1; } vertlocnbr = grafptr->vertlocnbr; for (vertlocnum = baseval; vertlocnum < vertlocnbr; vertlocnum ++) { if (mategsttax[vertlocnum] < 0) { errorPrint ("dgraphMatchCheck: unmatched local vertex"); cheklocval = 1; break; } } if ((flaggsttax = memAlloc (grafptr->vertgstnbr * sizeof (Gnum))) == NULL) { errorPrint ("dgraphMatchCheck: out of memory"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_SUM, mateptr->c.finegrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchCheck: communication error (1)"); chekglbval = 1; } if (chekglbval != 0) { if (flaggsttax != NULL) memFree (flaggsttax); return (1); } for (procngbnum = 0; procngbnum < grafptr->procngbnbr; procngbnum ++) /* Reset indices for sending messages */ nsndidxtab[procngbnum] = mateptr->c.vsnddsptab[procngbtab[procngbnum]]; memSet (flaggsttax, ~0, grafptr->vertgstnbr * sizeof (Gnum)); flaggsttax -= baseval; vertlocnnd = grafptr->vertlocnnd; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - baseval; for (multlocnum = 0; multlocnum < multlocnbr; multlocnum ++) { Gnum vertglbnum; Gnum vertlocnum; Gnum vertglbend; vertglbnum = multloctab[multlocnum].vertglbnum[0]; vertlocnum = vertglbnum - vertlocadj; /* First vertex is always local */ if ((vertlocnum < baseval) || (vertlocnum >= vertlocnnd)) { errorPrint ("dgraphMatchCheck: invalid multinode vertex (1)"); goto abort; } if (flaggsttax[vertlocnum] != -1) { errorPrint ("dgraphMatchCheck: duplicate multinode vertex (1)"); goto abort; } flaggsttax[vertlocnum] = multlocnum + vertlocadj; vertglbend = multloctab[multlocnum].vertglbnum[1]; if (vertglbend < 0) { /* If end vertex is remote */ Gnum edgelocnum; Gnum vertgstend; int vsndidxnum; int procngbnum; edgelocnum = -2 - vertglbend; if ((edgelocnum < grafptr->baseval) || (edgelocnum >= (grafptr->edgelocsiz + grafptr->baseval))) { errorPrint ("dgraphMatchCheck: invalid multinode vertex (2)"); goto abort; } vertglbend = edgeloctax[edgelocnum]; if (mategsttax[vertlocnum] != vertglbend) { errorPrint ("dgraphMatchCheck: invalid mate array (1)"); goto abort; } vertgstend = edgegsttax[edgelocnum]; if (flaggsttax[vertgstend] != -1) { errorPrint ("dgraphMatchCheck: duplicate multinode vertex (2)"); goto abort; } flaggsttax[vertgstend] = multlocnum + vertlocadj; if (mategsttax[vertgstend] != vertglbnum) { errorPrint ("dgraphMatchCheck: invalid mate array (2)"); goto abort; } procngbnum = procgsttax[vertgstend]; /* Find neighbor owner process */ if ((procngbnum < 0) || (procngbnum >= grafptr->procngbnbr)) { /* If neighbor had not been computed or is wrong */ errorPrint ("dgraphMatchCheck: internal error (1)"); goto abort; } if ((grafptr->procvrttab[procngbtab[procngbnum]] > vertglbend) || (grafptr->procvrttab[procngbtab[procngbnum] + 1] <= vertglbend)) { errorPrint ("dgraphMatchCheck: internal error (2)"); goto abort; } vsndidxnum = nsndidxtab[procngbnum] ++; /* Get position of message in send array */ if (vsndidxnum >= mateptr->c.vsnddsptab[procngbtab[procngbnum] + 1]) { errorPrint ("dgraphMatchCheck: internal error (3)"); goto abort; } vsnddattab[vsndidxnum].datatab[0] = vertglbnum; vsnddattab[vsndidxnum].datatab[1] = vertglbend; } else { /* End vertex is local */ Gnum vertlocend; Gnum edgelocnum; Gnum edgelocnnd; if (mategsttax[vertlocnum] != vertglbend) { errorPrint ("dgraphMatchCheck: invalid mate array (3)"); goto abort; } if (vertglbend == vertglbnum) /* If single multinode */ continue; vertlocend = vertglbend - vertlocadj; if ((vertlocend < baseval) || (vertlocend >= vertlocnnd)) { errorPrint ("dgraphMatchCheck: invalid multinode vertex (3)"); goto abort; } edgelocnum = vertloctax[vertlocnum]; edgelocnnd = vendloctax[vertlocnum]; if (edgelocnum != edgelocnnd) { /* If first multinode vertex is not an isolated vertex */ for ( ; ; edgelocnum ++) { /* Loop on edges of first multinode vertex */ if (edgelocnum >= edgelocnnd) { /* If not a valid neighbor */ errorPrint ("dgraphMatchCheck: invalid multinode vertex (4)"); goto abort; } if (edgeloctax[edgelocnum] == vertglbend) /* If edge to end vertex found */ break; } } if (flaggsttax[vertlocend] != -1) { errorPrint ("dgraphMatchCheck: duplicate multinode vertex (3)"); goto abort; } flaggsttax[vertlocend] = multlocnum + vertlocadj; if (mategsttax[vertlocend] != vertglbnum) { errorPrint ("dgraphMatchCheck: invalid mate array (4)"); goto abort; } } } cheklocval = -1; abort: cheklocval ++; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_SUM, mateptr->c.finegrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchCheck: communication error (2)"); chekglbval = 1; } if (chekglbval != 0) { memFree (flaggsttax + baseval); return (1); } /* TODO: Send messages and check consistency of matching on the receiving side */ memFree (flaggsttax + baseval); return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_fm.c0000644000302600021200000013406113470115365022031 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_fm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module separates an active **/ /** graph using a vertex-oriented version **/ /** of our improved Fiduccia-Mattheyses **/ /** heuristics, similar in principle to **/ /** the algorithm of Ashcraft and Liu 1994. **/ /** **/ /** DATES : # Version 3.2 : from : 02 nov 1997 **/ /** to 17 jul 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 31 dec 1998 **/ /** # Version 4.0 : from : 07 jan 2002 **/ /** to 18 aug 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to 22 may 2008 **/ /** # Version 5.1 : from : 10 nov 2008 **/ /** to 01 jun 2010 **/ /** # Version 6.0 : from : 31 mar 2014 **/ /** to 01 apr 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_FM #include "module.h" #include "common.h" #include "gain.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_gg.h" #include "vgraph_separate_fm.h" /* ** The static definitions. */ static VgraphSeparateFmVertex vexxdat; /* Dummy structure for computing offsets */ /*********************************/ /* */ /* Gain table handling routines. */ /* */ /*********************************/ /* This routine returns the vertex of best gain ** whose swap will keep the balance correct. ** It returns: ** - !NULL : pointer to the vertex gainlink. ** - NULL : if no more vertices available. */ static GainLink * vgraphSeparateFmTablGet ( GainTabl * const tablptr, /* Gain table */ const Gnum deltcur, /* Current imbalance */ const Gnum deltmax, /* Maximum imbalance */ const int partval) /* Current preferred */ { const VgraphSeparateFmVertex * vexxptr; /* Pointer to vertex of current link */ const GainLink * linkptr; /* Pointer to current gain link */ const GainLink * linkbest; /* Pointer to best link found */ const GainEntr * tablbest; /* Gain table entry of best link */ Gnum gaincur; /* Separator gain of current link */ Gnum gainbest; /* Separator gain of best link */ linkbest = NULL; /* Assume no candidate vertex found yet */ tablbest = tablptr->tend; gainbest = GAINMAX; for (linkptr = gainTablFrst (tablptr); /* Select candidate vertices */ (linkptr != NULL) && (linkptr->tabl <= tablbest); linkptr = gainTablNext (tablptr, linkptr)) { int vertpart; /* Part of current vertex */ vertpart = 0; /* Assume we point to gainlink0 */ vexxptr = (VgraphSeparateFmVertex *) linkptr; /* TRICK: gainlink0 is at beginning */ if (vexxptr->veloval >= 0) { /* If in fact we point to gainlink1 */ vertpart = 1; /* Then point to vertex structure */ vexxptr = (VgraphSeparateFmVertex *) ((byte *) vexxptr - ((byte *) &vexxdat.gainlink1 - (byte *) &vexxdat)); } gaincur = vexxptr->compgain[vertpart]; /* Get separator gain and vertex balance */ if (gaincur == vexxptr->veloval) /* If vertex is isolated separator vertex */ return ((GainLink *) linkptr); /* Select it immediatly */ if (abs (deltcur + (1 - 2 * vertpart) * (gaincur - 2 * vexxptr->veloval)) <= deltmax) { /* If vertex enforces balance */ if ((gaincur < gainbest) || /* And if it gives better gain */ ((gaincur == gainbest) && /* Or is in preferred part */ (partval == vertpart))) { linkbest = linkptr; /* Select it */ tablbest = linkptr->tabl; gainbest = gaincur; } } } return ((GainLink *) linkbest); /* Return best link found */ } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int vgraphSeparateFm ( Vgraph * restrict const grafptr, /*+ Active graph +*/ const VgraphSeparateFmParam * const paraptr) /*+ Method parameters +*/ { GainTabl * restrict tablptr; /* Pointer to gain tables */ INT passnbr; /* Maximum number of passes to go */ Gnum movenbr; /* Number of uneffective moves done */ int moveflag; /* Flag set if useful moves made */ Gnum savenbr; /* Position of current move */ VgraphSeparateFmSave * restrict savetab; /* Pointer to move array */ Gnum hashmax; /* Maximum number of elements in table */ Gnum hashsiz; /* Size of hash and save tables */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashnbr; /* Number of elements in hash table */ VgraphSeparateFmVertex * hashtab; /* Hash vertex table */ GainLink lockdat; /* Double linked list of locked vertices */ VgraphSeparateFmVertex * vexxptr; /* Pointer to current vertex */ VgraphSeparateFmVertex * sepaptr; /* Pointer to current vertex in table */ Gnum fronnum; /* Current index of frontier vertex */ Gnum comploaddlt; /* Current load imbalance */ Gnum comploaddltmat; /* Theoretical maximum unbalance */ Gnum comploaddltmax; /* Largest unbalance allowed */ Gnum comploaddltbst; /* Unbalance of best solution to date */ Gnum compload2; /* Current load of separator */ Gnum compload2bst; /* Separator load of best solution to date */ Gnum mswpnum; /* Number of current move sweep */ Gnum compsize1add; /* Number of vertices to add to counters */ Gnum compsize1sub; const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; GraphPart * restrict const parttax = grafptr->parttax; comploaddltmat = (paraptr->deltrat > 0.0L) ? MAX ((Gnum) ((grafptr->compload[0] + grafptr->compload[1]) * paraptr->deltrat), ((2 * grafptr->s.velosum) / grafptr->s.vertnbr)) : 0; if (grafptr->fronnbr == 0) { /* If no frontier defined */ if (abs (grafptr->comploaddlt) <= comploaddltmat) /* If balance is achieved */ return (0); /* This algorithm is useless */ else { /* Imbalance must be fought */ VgraphSeparateGgParam paradat; paradat.passnbr = 4; /* Use a standard algorithm */ vgraphSeparateGg (grafptr, ¶dat); if (grafptr->fronnbr == 0) /* If new partition has no frontier */ return (0); /* This algorithm is still useless */ } } hashnbr = 16 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax) + 1; #ifdef SCOTCH_DEBUG_VGRAPH2 hashnbr /= 8; /* Ensure resizing routine will be called */ #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (hashnbr > grafptr->s.vertnbr) hashnbr = grafptr->s.vertnbr; for (hashsiz = 512; hashsiz < hashnbr; hashsiz <<= 1) ; /* Get upper power of two */ hashmsk = hashsiz - 1; hashmax = hashsiz >> 2; /* Use hash table at 1/4 of its capacity */ if (((tablptr = gainTablInit (GAINMAX, VGRAPHSEPAFMGAINBITS)) == NULL) || /* Use logarithmic array only */ (memAllocGroup ((void **) (void *) &hashtab, (size_t) (hashsiz * sizeof (VgraphSeparateFmVertex)), &savetab, (size_t) (hashsiz * sizeof (VgraphSeparateFmSave)), NULL) == NULL)) { errorPrint ("vgraphSeparateFm: out of memory (1)"); if (tablptr != NULL) gainTablExit (tablptr); return (1); } memSet (hashtab, ~0, hashsiz * sizeof (VgraphSeparateFmVertex)); /* Set all vertex numbers to ~0 */ for (fronnum = 0, hashnbr = grafptr->fronnbr; /* Set initial gains */ fronnum < hashnbr; fronnum ++) { Gnum vertnum; Gnum hashnum; vertnum = grafptr->frontab[fronnum]; #ifdef SCOTCH_DEBUG_VGRAPH2 if (parttax[vertnum] != 2) { errorPrint ("vgraphSeparateFm: vertex not in separator"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ for (hashnum = (vertnum * VGRAPHSEPAFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk) ; if (velotax != NULL) { /* If vertex loads present */ Gnum edgenum; Gnum veloval; Gnum compgain0; Gnum compgain01; for (edgenum = verttax[vertnum], compgain0 = compgain01 = 0; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum partend; Gnum veloend; vertend = edgetax[edgenum]; partend = (Gnum) parttax[vertend]; veloend = velotax[vertend]; compgain0 += (partend & 1) * veloend; compgain01 += (2 - (partend & 2)) * veloend; } veloval = velotax[vertnum]; hashtab[hashnum].veloval = - veloval; /* TRICK: -veloval: stored value is opposite of load */ hashtab[hashnum].compgain[0] = compgain0 - veloval; hashtab[hashnum].compgain[1] = (compgain01 >> 1) - compgain0 - veloval; } else { /* No vertex loads */ Gnum edgenum; Gnum compgain0; Gnum compgain2; for (edgenum = verttax[vertnum], compgain0 = compgain2 = 0; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum partend; vertend = edgetax[edgenum]; partend = (Gnum) parttax[vertend]; compgain0 += (partend & 1); compgain2 += (partend & 2); } hashtab[hashnum].veloval = -1; /* TRICK: -veloval */ hashtab[hashnum].compgain[0] = compgain0 - 1; hashtab[hashnum].compgain[1] = vendtax[vertnum] - verttax[vertnum] - (compgain2 >> 1) - compgain0 - 1; } hashtab[hashnum].partval = 2; hashtab[hashnum].vertnum = vertnum; gainTablAdd (tablptr, &hashtab[hashnum].gainlink0, hashtab[hashnum].compgain[0]); /* Link both directions of separator vertex */ gainTablAdd (tablptr, &hashtab[hashnum].gainlink1, hashtab[hashnum].compgain[1]); } comploaddltmax = MAX (comploaddltmat, abs (grafptr->comploaddlt)); /* Set current maximum distance */ comploaddltbst = grafptr->comploaddlt; compload2bst = grafptr->compload[2]; #ifdef SCOTCH_DEBUG_VGRAPH3 if (vgraphSeparateFmCheck (grafptr, hashtab, hashmsk, compload2bst, comploaddltbst) != 0) { errorPrint ("vgraphSeparateFm: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH3 */ passnbr = paraptr->passnbr; /* Set remaining number of passes */ savenbr = 0; /* For empty backtrack of first pass */ mswpnum = -1; /* Will be incremented afterwards */ lockdat.next = /* List of locked vertices is empty */ lockdat.prev = &lockdat; do { /* As long as there is improvement */ Gnum comploadabsdltbst; while (savenbr -- > 0) { /* Delete exceeding moves */ Gnum hashnum; int partval; hashnum = savetab[savenbr].hashnum; partval = savetab[savenbr].partval; hashtab[hashnum].partval = partval; /* Restore vertex data */ hashtab[hashnum].compgain[0] = savetab[savenbr].compgain[0]; hashtab[hashnum].compgain[1] = savetab[savenbr].compgain[1]; if (hashtab[hashnum].gainlink0.next >= VGRAPHSEPAFMSTATELINK) { /* If vertex is linked */ gainTablDel (tablptr, &hashtab[hashnum].gainlink0); /* Unlink it */ gainTablDel (tablptr, &hashtab[hashnum].gainlink1); hashtab[hashnum].gainlink0.next = VGRAPHSEPAFMSTATEFREE; /* Set it as free */ } if ((hashtab[hashnum].gainlink0.next == VGRAPHSEPAFMSTATEFREE) && (partval == 2)) { /* If vertex not locked and in separator */ gainTablAdd (tablptr, &hashtab[hashnum].gainlink0, hashtab[hashnum].compgain[0]); /* Re-link it */ gainTablAdd (tablptr, &hashtab[hashnum].gainlink1, hashtab[hashnum].compgain[1]); } } compload2 = compload2bst; /* Restore best separator parameters */ comploaddlt = comploaddltbst; comploadabsdltbst = abs (comploaddltbst); if (comploadabsdltbst > comploaddltmax) /* If the former state had a higher maximum imbalance ratio */ comploaddltmax = comploadabsdltbst; /* Restore this maximum imbalance ratio */ mswpnum ++; /* Forget all recorded moves */ #ifdef SCOTCH_DEBUG_VGRAPH3 if (vgraphSeparateFmCheck (grafptr, hashtab, hashmsk, compload2, comploaddlt) != 0) { errorPrint ("vgraphSeparateFm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH3 */ while (lockdat.next != &lockdat) { /* For all vertices in locked list */ VgraphSeparateFmVertex * vexxptr; vexxptr = (VgraphSeparateFmVertex *) ((byte *) lockdat.next - ((byte *) &vexxdat.gainlink1 - (byte *) &vexxdat)); lockdat.next = (GainLink *) vexxptr->gainlink1.next; /* Unlink vertex from list */ if (vexxptr->partval == 2) { /* If vertex belongs to separator */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (vexxptr->gainlink0.next != VGRAPHSEPAFMSTATEUSED) { errorPrint ("vgraphSeparateFm: linked non-used vertex"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ gainTablAdd (tablptr, &vexxptr->gainlink0, vexxptr->compgain[0]); /* Link it */ gainTablAdd (tablptr, &vexxptr->gainlink1, vexxptr->compgain[1]); } else /* Vertex does not belong to separator */ vexxptr->gainlink0.next = VGRAPHSEPAFMSTATEFREE; /* Set it as free for this run */ } lockdat.prev = &lockdat; /* Restore backward chaining */ moveflag = 0; /* No moves to date */ movenbr = /* No uneffective moves yet */ savenbr = 0; /* No recorded moves yet */ while ((movenbr < paraptr->movenbr) && /* As long as we can find effective vertices */ ((vexxptr = (VgraphSeparateFmVertex *) vgraphSeparateFmTablGet (tablptr, comploaddlt, comploaddltmax, (passnbr & 1))) != NULL)) { Gnum comploadabsdlt; int partval; /* Part of current vertex */ Gnum vertnum; Gnum edgenum; partval = 0; /* Assume we point to gainlink0 */ if (vexxptr->veloval >= 0) { /* If in fact we point to gainlink1 */ partval = 1; /* Then point to vertex structure */ vexxptr = (VgraphSeparateFmVertex *) ((byte *) vexxptr - ((byte *) &vexxptr->gainlink1 - (byte *) vexxptr)); } #ifdef SCOTCH_DEBUG_VGRAPH2 if (vexxptr->partval != 2) { errorPrint ("vgraphSeparateFm: linked non-separator vertex (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ gainTablDel (tablptr, &vexxptr->gainlink0); /* Remove it from table */ gainTablDel (tablptr, &vexxptr->gainlink1); vexxptr->gainlink0.next = VGRAPHSEPAFMSTATESUCH; /* Mark it as used and avoid chaining */ vexxptr->gainlink1.prev = &lockdat; /* Lock it */ vexxptr->gainlink1.next = lockdat.next; lockdat.next->prev = &vexxptr->gainlink1; lockdat.next = &vexxptr->gainlink1; vertnum = vexxptr->vertnum; /* Get vertex number */ compload2 += vexxptr->compgain[partval]; comploaddlt -= (2 * partval - 1) * (vexxptr->compgain[partval] - 2 * vexxptr->veloval); /* TRICK: -veloval */ if (vexxptr->mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxptr->mswpnum = mswpnum; savetab[savenbr].hashnum = vexxptr - hashtab; savetab[savenbr].partval = 2; savetab[savenbr].compgain[0] = vexxptr->compgain[0]; savetab[savenbr].compgain[1] = vexxptr->compgain[1]; savenbr ++; /* One more move recorded */ } movenbr ++; /* One more move done */ sepaptr = NULL; /* No separator vertices to relink yet */ for (edgenum = verttax[vertnum]; /* Update neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum hashnum; vertend = edgetax[edgenum]; for (hashnum = (vertend * VGRAPHSEPAFMHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { VgraphSeparateFmVertex * vexxend; /* Pointer to neighbor of current vertex */ vexxend = hashtab + hashnum; /* Point to neighbor */ if (vexxend->vertnum == ~0) { /* If neighbor does not exist yet */ if (parttax[vertend] == partval) /* If no use to create it */ break; /* Skip to next vertex */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (parttax[vertend] != (1 - partval)) { errorPrint ("vgraphSeparateFm: undeclared separator vertex"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ vexxend->vertnum = vertend; /* Set its number (TRICK: mswpnum assumed to be always -1) */ vexxend->partval = 1 - partval; /* Vertex will be in separator */ vexxend->veloval = - ((velotax != NULL) ? velotax[vertend] : 1); vexxend->gainlink0.next = VGRAPHSEPAFMSTATEFREE; /* Vertex will be linked */ hashnbr ++; /* One more vertex in hash table */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (hashnbr > hashmsk) { errorPrint ("vgraphSeparateFm: hash table overflow"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ } if (vexxend->vertnum == vertend) { /* If end vertex has been found */ if (vexxend->partval == 2) { /* If already in separator or chained */ if (vexxend->mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxend->mswpnum = mswpnum; savetab[savenbr].hashnum = hashnum; savetab[savenbr].partval = 2; savetab[savenbr].compgain[0] = vexxend->compgain[0]; savetab[savenbr].compgain[1] = vexxend->compgain[1]; savenbr ++; /* One more move recorded */ } vexxend->compgain[1 - partval] -= vexxptr->veloval; /* TRICK: -veloval */ if (vexxend->gainlink0.next >= VGRAPHSEPAFMSTATELINK) { /* If vertex is linked */ gainTablDel (tablptr, &vexxend->gainlink0); /* Unlink it temporarily */ gainTablDel (tablptr, &vexxend->gainlink1); /* TRICK: gainlink1.next != NULL */ vexxend->gainlink0.next = VGRAPHSEPAFMSTATEFREE; /* Mark separator vertex as temporarily unlinked */ vexxend->gainlink0.prev = (GainLink *) sepaptr; /* Chain it for relinking */ sepaptr = vexxend; } else if (vexxend->gainlink0.next == VGRAPHSEPAFMSTATEUSED) { vexxend->gainlink0.next = VGRAPHSEPAFMSTATESUCH; /* Mark separator vertex as chained-used */ vexxend->gainlink0.prev = (GainLink *) sepaptr; /* Chain it for relinking */ sepaptr = vexxend; } } else if (vexxend->partval == (1 - partval)) { /* Vertex is in other part */ Gnum edgeend; Gnum compgainp; /* Gain to be added to gain of part partval */ if (vexxend->mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxend->mswpnum = mswpnum; savetab[savenbr].hashnum = hashnum; savetab[savenbr].partval = 1 - partval; savetab[savenbr].compgain[0] = /* Vertex not in separator so gains are not relevant */ savetab[savenbr].compgain[1] = 0; savenbr ++; /* One more move recorded */ } vexxend->partval = 2; /* Vertex will be in separator */ vexxend->compgain[partval] = vexxend->veloval; /* Moved vertex still in separator */ vexxend->compgain[1 - partval] = vexxend->veloval - vexxptr->veloval; /* TRICK: -veloval */ for (edgeend = verttax[vertend], compgainp = 0; edgeend < vendtax[vertend]; edgeend ++) { Gnum vertent; Gnum hashnum; vertent = edgetax[edgeend]; for (hashnum = (vertent * VGRAPHSEPAFMHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { VgraphSeparateFmVertex * vexxent; /* Pointer to neighbor of neighbor of current vertex */ vexxent = hashtab + hashnum; if (vexxent->vertnum == ~0) { /* If neighbor does not exist */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (parttax[vertent] != (1 - partval)) { errorPrint ("vgraphSeparateFm: broken separator (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ compgainp += (velotax != NULL) ? velotax[vertent] : 1; break; /* Skip to next vertex */ } if (vexxent->vertnum == vertent) { /* If end vertex found */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (vexxent->partval == partval) { errorPrint ("vgraphSeparateFm: broken separator (2)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (vexxent->partval == 2) { /* If vertex is in separator (or is vexxptr) */ if (vexxent->mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxent->mswpnum = mswpnum; savetab[savenbr].hashnum = hashnum; savetab[savenbr].partval = 2; savetab[savenbr].compgain[0] = vexxent->compgain[0]; savetab[savenbr].compgain[1] = vexxent->compgain[1]; savenbr ++; /* One more move recorded */ } vexxent->compgain[partval] += vexxend->veloval; /* TRICK: -veloval */ if (vexxent->gainlink0.next >= VGRAPHSEPAFMSTATELINK) { /* If not already chained */ gainTablDel (tablptr, &vexxent->gainlink0); /* Unlink it temporarily */ gainTablDel (tablptr, &vexxent->gainlink1); /* TRICK: gainlink1.next != NULL */ vexxent->gainlink0.next = VGRAPHSEPAFMSTATEFREE; /* Mark separator vertex as temporarily unlinked */ vexxent->gainlink0.prev = (GainLink *) sepaptr; /* Chain it */ sepaptr = vexxent; } else if (vexxent->gainlink0.next == VGRAPHSEPAFMSTATEUSED) { vexxent->gainlink0.next = VGRAPHSEPAFMSTATESUCH; /* Mark separator vertex as chained-used */ vexxent->gainlink0.prev = (GainLink *) sepaptr; /* Chain it for relinking */ sepaptr = vexxent; } } else /* Vertex is in same part as vexxend */ compgainp -= vexxent->veloval; /* TRICK: -veloval */ break; } } } vexxend->compgain[partval] += compgainp; if (vexxend->gainlink0.next == VGRAPHSEPAFMSTATEUSED) /* If vertex was already used */ vexxend->gainlink0.next = VGRAPHSEPAFMSTATESUCH; /* Set it as separator-used-chained */ vexxend->gainlink0.prev = (GainLink *) sepaptr; /* Chain it for relinking */ sepaptr = vexxend; } break; /* If in same part, ignore */ } } } vexxptr->gainlink0.next = VGRAPHSEPAFMSTATEUSED; /* Mark it as used and not chained */ vexxptr->partval = partval; /* Set vertex part last */ while (sepaptr != NULL) { /* For all vertices in chain list */ vexxptr = sepaptr; /* Unlink vertex from list */ sepaptr = (VgraphSeparateFmVertex *) vexxptr->gainlink0.prev; #ifdef SCOTCH_DEBUG_VGRAPH2 if (vexxptr->partval != 2) { errorPrint ("vgraphSeparateFm: linked non-separator vertex (2)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (vexxptr->gainlink0.next == VGRAPHSEPAFMSTATEFREE) { /* If vertex is not used */ gainTablAdd (tablptr, &vexxptr->gainlink0, vexxptr->compgain[0]); /* Link it */ gainTablAdd (tablptr, &vexxptr->gainlink1, vexxptr->compgain[1]); } else { vexxptr->gainlink0.next = VGRAPHSEPAFMSTATEUSED; if (vexxptr->compgain[partval] == vexxptr->veloval) { /* If immediate gain */ vexxptr->gainlink1.next->prev = vexxptr->gainlink1.prev; /* Remove vertex from lock list */ vexxptr->gainlink1.prev->next = vexxptr->gainlink1.next; gainTablAdd (tablptr, &vexxptr->gainlink0, vexxptr->compgain[0]); /* Link it */ gainTablAdd (tablptr, &vexxptr->gainlink1, vexxptr->compgain[1]); } } } #ifdef SCOTCH_DEBUG_VGRAPH3 if (vgraphSeparateFmCheck (grafptr, hashtab, hashmsk, compload2, comploaddlt) != 0) { errorPrint ("vgraphSeparateFm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH3 */ if (hashnbr >= hashmax) { if (vgraphSeparateFmResize (&hashtab, &hashmax, &hashmsk, &savetab, savenbr, tablptr, &lockdat) != 0) { errorPrint ("vgraphSeparateFm: out of memory (2)"); return (1); } } comploadabsdltbst = abs (comploaddltbst); comploadabsdlt = abs (comploaddlt); if ((comploadabsdlt < comploaddltmat) || /* Record move only if it is within bounds */ (comploadabsdltbst > comploaddltmat)) { /* Or if we have always been out of bounds */ if (compload2 < compload2bst) { /* If move improves the cost */ compload2bst = compload2; /* This move was effective */ comploaddltbst = comploaddlt; movenbr = savenbr = 0; moveflag = 1; mswpnum ++; } else if (compload2 == compload2bst) { if (comploadabsdlt < comploadabsdltbst) { comploaddltbst = comploaddlt; /* This move was effective */ movenbr = savenbr = 0; moveflag = 1; mswpnum ++; } else if (comploadabsdlt == comploadabsdltbst) { comploaddltbst = comploaddlt; /* Might be the opposite, so record */ savenbr = 0; /* Forget backtracking */ mswpnum ++; } } } if (comploadabsdlt > comploaddltmax) /* If an isolated vertex unbalanced the partition */ comploaddltmax = comploadabsdlt; /* Record that we degraded maximum load imbalance */ else if (comploaddltmax > comploaddltmat) { /* Else if we must restrict distance bounds */ Gnum comploaddlttmp; comploaddlttmp = comploaddltmax; /* Save old working compdeltmax value */ comploaddltmax = MAX (comploaddltmat, comploadabsdlt); /* Restrict at most to the maximum */ if ((comploadabsdltbst > comploaddltmat) && /* If we have never achieved balance yet */ (comploaddltmax < comploaddlttmp)) { /* And if we have done something useful */ compload2bst = compload2; /* Then record best move done */ comploaddltbst = comploaddlt; movenbr = /* Never set moveflag so as not to create an infinite loop */ savenbr = 0; mswpnum ++; } } } } while ((moveflag != 0) && /* As long as vertices are moved */ (-- passnbr != 0)); /* And we are allowed to loop (TRICK for negative values) */ while (savenbr -- > 0) { /* Delete exceeding moves */ Gnum hashnum; int partval; hashnum = savetab[savenbr].hashnum; partval = savetab[savenbr].partval; hashtab[hashnum].partval = partval; /* Restore vertex part only for update computation */ } compload2 = compload2bst; /* Restore best separator parameters */ comploaddlt = comploaddltbst; compsize1add = /* Variables for superscalar update */ compsize1sub = 0; for (vexxptr = hashtab, fronnum = 0; /* Build new frontier */ vexxptr < hashtab + (hashmax << 2); vexxptr ++) { /* From all vertices in table */ Gnum vertnum; vertnum = vexxptr->vertnum; if (vertnum != ~0) { /* If vertex slot is used */ int partval; /* New part of current vertex */ int partold; /* Old part of current vertex */ partval = vexxptr->partval; partold = parttax[vexxptr->vertnum]; /* Get old part value from array */ if (partval != partold) { /* If vertex part changed */ parttax[vertnum] = partval; /* Set new part value */ compsize1add += (partval & 1); /* Superscalar update */ compsize1sub += (partold & 1); } if (partval == 2) /* If vertex belongs to cut */ grafptr->frontab[fronnum ++] = vertnum; /* Add vertex to frontier */ } } grafptr->compload[0] = ((grafptr->s.velosum - compload2) + comploaddlt) / 2; grafptr->compload[1] = ((grafptr->s.velosum - compload2) - comploaddlt) / 2; grafptr->compload[2] = compload2; grafptr->comploaddlt = comploaddlt; grafptr->compsize[1] = grafptr->compsize[1] + compsize1add - compsize1sub; grafptr->compsize[0] = grafptr->s.vertnbr - grafptr->compsize[1] - fronnum; grafptr->fronnbr = fronnum; #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) { errorPrint ("vgraphSeparateFm: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ memFree (hashtab); /* Free group leader */ gainTablExit (tablptr); return (0); } /* This routine doubles the size all of the arrays ** involved in handling the hash table and hash ** vertex arrays. ** It returns: ** - 0 : if resizing succeeded. ** - !0 : if out of memory. */ static int vgraphSeparateFmResize ( VgraphSeparateFmVertex * restrict * hashtabptr, /*+ Pointer to hash vertex table +*/ Gnum * const hashmaxptr, /*+ Pointer to maximum number of elements in table +*/ Gnum * const hashmskptr, /*+ Pointer to hash table mask +*/ VgraphSeparateFmSave * restrict * savetabptr, /*+ Pointer to move array +*/ const Gnum savenbr, /*+ Current number of active slots in move array +*/ GainTabl * const tablptr, /*+ Gain table +*/ GainLink * const lockptr) { VgraphSeparateFmVertex * restrict hashtab; /* Pointer to new hash table */ VgraphSeparateFmSave * savetab; /* Pointer to new save array */ VgraphSeparateFmSave * saveold; /* Pointer to translated old save array */ Gnum savenum; Gnum hashold; /* Size of old hash table (half of new) */ Gnum hashsiz; Gnum hashmax; Gnum hashmsk; Gnum hashsta; /* Start index of range of hash indices to move */ Gnum hashend; /* End index of range of hash indices to move */ Gnum hashnum; hashmax = *hashmaxptr << 1; /* Compute new sizes */ hashold = *hashmaxptr << 2; hashsiz = *hashmaxptr << 3; hashmsk = hashsiz - 1; if (memReallocGroup ((void *) *hashtabptr, &hashtab, (size_t) (hashsiz * sizeof (VgraphSeparateFmVertex)), &savetab, (size_t) (hashsiz * sizeof (VgraphSeparateFmSave)), NULL) == NULL) { errorPrint ("vgraphSeparateFmResize: out of memory"); return (1); } saveold = (VgraphSeparateFmSave *) ((byte *) hashtab + ((byte *) *savetabptr - (byte *) *hashtabptr)); for (savenum = savenbr - 1; savenum >= 0; savenum --) { /* Move save array, in reverse order */ savetab[savenum].compgain[1] = saveold[savenum].compgain[1]; savetab[savenum].compgain[0] = saveold[savenum].compgain[0]; savetab[savenum].partval = saveold[savenum].partval; savetab[savenum].hashnum = hashtab[saveold[savenum].hashnum].vertnum; /* Temporarily translate from hash index to number */ } *hashtabptr = hashtab; *hashmaxptr = hashmax; *hashmskptr = hashmsk; *savetabptr = savetab; memSet (hashtab + hashold, ~0, hashold * sizeof (VgraphSeparateFmVertex)); gainTablFree (tablptr); /* Reset gain table */ lockptr->next = /* Rebuild lock list */ lockptr->prev = lockptr; for (hashsta = hashold - 1; hashtab[hashsta].vertnum != ~0; hashsta --) ; /* Start index of first segment to reconsider is last empty slot */ hashend = hashold; /* First segment to reconsider ends at the end of the old array */ while (hashend != hashsta) { /* For each of the two segments to consider */ for (hashnum = hashsta; hashnum < hashend; hashnum ++) { /* Re-compute position of vertices in new table */ Gnum vertnum; vertnum = hashtab[hashnum].vertnum; if (vertnum != ~0) { /* If hash slot used */ Gnum hashnew; for (hashnew = (vertnum * VGRAPHSEPAFMHASHPRIME) & hashmsk; ; hashnew = (hashnew + 1) & hashmsk) { if (hashnew == hashnum) /* If hash slot is the same */ break; /* There is nothing to do */ if (hashtab[hashnew].vertnum == ~0) { /* If new slot is empty */ #ifdef SCOTCH_DEBUG_VGRAPH2 if ((hashnew > hashnum) && (hashnew < hashend)) { /* If vertex is not moved either before its old position or after the end of the segment */ errorPrint ("vgraphSeparateFmResize: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ hashtab[hashnew] = hashtab[hashnum]; /* Copy data to new slot */ hashtab[hashnum].mswpnum = ~0; /* TRICK: not tested at creation */ hashtab[hashnum].vertnum = ~0; /* Make old slot empty */ break; } } if (hashtab[hashnew].gainlink0.next >= VGRAPHSEPAFMSTATELINK) { /* If vertex was linked, re-link it */ gainTablAdd (tablptr, &hashtab[hashnew].gainlink0, hashtab[hashnew].compgain[0]); gainTablAdd (tablptr, &hashtab[hashnew].gainlink1, hashtab[hashnew].compgain[1]); } else if (hashtab[hashnew].gainlink0.next == VGRAPHSEPAFMSTATEUSED) { /* Re-lock used vertices */ hashtab[hashnew].gainlink1.prev = lockptr; /* Lock it */ hashtab[hashnew].gainlink1.next = lockptr->next; lockptr->next->prev = &hashtab[hashnew].gainlink1; lockptr->next = &hashtab[hashnew].gainlink1; } } } hashend = hashsta; /* End of second segment to consider is start of first one */ hashsta = 0; /* Start of second segment is beginning of array */ } /* After second segment, hashsta = hashend = 0 and loop stops */ for (savenum = 0; savenum < savenbr; savenum ++) { Gnum vertnum; Gnum hashnum; vertnum = savetab[savenum].hashnum; /* Get vertex number temporarily saved */ for (hashnum = (vertnum * VGRAPHSEPAFMHASHPRIME) & hashmsk; hashtab[hashnum].vertnum != vertnum; hashnum = (hashnum + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_VGRAPH2 if (hashtab[hashnum].vertnum == ~0) { errorPrint ("vgraphSeparateFmResize: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ } savetab[savenum].hashnum = hashnum; /* Set new hash table index */ } return (0); } /* This routine checks the consistency of ** the hash structures. ** It returns: ** - 0 : in case of success. ** - !0 : in case of error. */ #ifdef SCOTCH_DEBUG_VGRAPH3 static int vgraphSeparateFmCheck ( const Vgraph * restrict const grafptr, const VgraphSeparateFmVertex * restrict const hashtab, const Gnum hashmsk, const Gnum compload2, const Gnum comploaddlt) { Gnum hashnum; Gnum comploadtmp[3]; const Gnum * restrict const verttax = grafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const GraphPart * restrict const parttax = grafptr->parttax; comploadtmp[0] = grafptr->compload[0]; comploadtmp[1] = grafptr->compload[1]; comploadtmp[2] = grafptr->compload[2]; for (hashnum = 0; hashnum <= hashmsk; hashnum ++) { /* For all vertex slots */ Gnum vertnum; int partval; vertnum = hashtab[hashnum].vertnum; if (vertnum == ~0) /* If unallocated slot */ continue; /* Skip to next slot */ if (hashtab[hashnum].veloval != - ((velotax == NULL) ? 1 : velotax[vertnum])) { errorPrint ("vgraphSeparateFmCheck: invalid vertex load (1)"); return (1); } partval = hashtab[hashnum].partval; if ((partval < 0) || (partval > 2)) { errorPrint ("vgraphSeparateFmCheck: invalid part value"); return (1); } if (partval != parttax[vertnum]) { comploadtmp[parttax[vertnum]] += hashtab[hashnum].veloval; /* TRICK: -veloval */ comploadtmp[partval] -= hashtab[hashnum].veloval; } if (partval < 2) { /* If not separator vertex */ if (hashtab[hashnum].gainlink0.next >= VGRAPHSEPAFMSTATELINK) { errorPrint ("vgraphSeparateFmCheck: linked non-separator vertex"); return (1); } } else { /* Separator vertex */ Gnum compload[3]; Gnum edgenum; if (hashtab[hashnum].gainlink0.next == VGRAPHSEPAFMSTATEFREE) { errorPrint ("vgraphSeparateFmCheck: free separator vertex"); return (1); } compload[0] = compload[1] = compload[2] = 0; for (edgenum = verttax[vertnum]; /* For all element neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum hashnum; int partend; Gnum veloend; vertend = edgetax[edgenum]; for (hashnum = (vertend * VGRAPHSEPAFMHASHPRIME) & hashmsk; ; hashnum = (hashnum + 1) & hashmsk) { if (hashtab[hashnum].vertnum == vertend) { /* If end vertex found */ partend = hashtab[hashnum].partval; veloend = hashtab[hashnum].veloval; if (veloend != - ((velotax == NULL) ? 1 : velotax[vertend])) { errorPrint ("vgraphSeparateFmCheck: invalid vertex load (2)"); return (1); } break; } if (hashtab[hashnum].vertnum == ~0) { /* If element not present */ partend = parttax[vertend]; veloend = - ((velotax == NULL) ? 1 : velotax[vertend]); break; } } compload[partend] += veloend; } if ((hashtab[hashnum].compgain[0] != (hashtab[hashnum].veloval - compload[1])) || (hashtab[hashnum].compgain[1] != (hashtab[hashnum].veloval - compload[0]))) { errorPrint ("vgraphSeparateFmCheck: invalid vertex gains"); return (1); } } } if (compload2 != comploadtmp[2]) { errorPrint ("vgraphSeparateFmCheck: invalid frontier load"); return (1); } if (comploaddlt != (comploadtmp[0] - comploadtmp[1])) { errorPrint ("vgraphSeparateFmCheck: invalid separator balance"); return (1); } return (0); } #endif /* SCOTCH_DEBUG_VGRAPH3 */ scotch_6.0.9/src/libscotch/vmesh_check.c0000644000302600021200000002030713303015264020440 0ustar pelegrinpelegrin/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the consistency **/ /** checker for separation meshes. **/ /** **/ /** DATES : # Version 4.0 : from : 21 mar 2003 **/ /** to 11 may 2004 **/ /** # Version 6.0 : from : 02 jun 2014 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" /*************************/ /* */ /* These routines handle */ /* separator meshes. */ /* */ /*************************/ /* This routine checks the consistency ** of the given separator mesh. ** It returns: ** - 0 : if mesh data are consistent. ** - !0 : on error. */ int vmeshCheck ( const Vmesh * const meshptr) { Gnum velmnum; /* Number of current element vertex */ Gnum vnodnum; /* Number of current node vertex */ Gnum fronnum; /* Number of current frontier vertex */ int * restrict frontax; /* Frontier flag array */ Gnum ecmpsize[2]; /* Elements never in separator */ Gnum ncmpsize[3]; Gnum ncmpload[3]; int o; if ((meshptr->ecmpsize[0] + meshptr->ecmpsize[1]) > meshptr->m.velmnbr) { errorPrint ("vmeshCheck: invalid element balance"); return (1); } if (meshptr->ncmploaddlt != (meshptr->ncmpload[0] - meshptr->ncmpload[1])) { errorPrint ("vmeshCheck: invalid node balance"); return (1); } ecmpsize[0] = ecmpsize[1] = 0; for (velmnum = meshptr->m.velmbas; velmnum < meshptr->m.velmnnd; velmnum ++) { Gnum edgecut[3]; /* Array of cut edges */ Gnum partnum; /* Part of current vertex */ Gnum eelmnum; /* Number of current edge */ partnum = meshptr->parttax[velmnum]; if ((partnum < 0) || (partnum > 1)) { errorPrint ("vmeshCheck: invalid part array (1)"); return (1); } ecmpsize[partnum] ++; if ((partnum != 0) && (meshptr->m.verttax[velmnum] == meshptr->m.vendtax[velmnum])) { errorPrint ("vmeshCheck: isolated element not in part 0"); return (1); } edgecut[0] = edgecut[1] = edgecut[2] = 0; for (eelmnum = meshptr->m.verttax[velmnum]; eelmnum < meshptr->m.vendtax[velmnum]; eelmnum ++) edgecut[meshptr->parttax[meshptr->m.edgetax[eelmnum]]] ++; if (edgecut[1 - partnum] != 0) { errorPrint ("vmeshCheck: element connected to nodes in other part (%ld)", (long) velmnum); return (1); } } if ((meshptr->ecmpsize[0] != ecmpsize[0]) || (meshptr->ecmpsize[1] != ecmpsize[1])) { errorPrint ("vmeshCheck: invalid element parameters"); return (1); } ncmpload[0] = ncmpload[1] = ncmpload[2] = 0; ncmpsize[0] = ncmpsize[1] = ncmpsize[2] = 0; for (vnodnum = meshptr->m.vnodbas; vnodnum < meshptr->m.vnodnnd; vnodnum ++) { Gnum edgecut[3]; /* Array of cut edges */ Gnum partnum; /* Part of current vertex */ Gnum enodnum; /* Number of current edge */ partnum = meshptr->parttax[vnodnum]; if ((partnum < 0) || (partnum > 2)) { errorPrint ("vmeshCheck: invalid part array (2)"); return (1); } ncmpsize[partnum] ++; ncmpload[partnum] += (meshptr->m.vnlotax == NULL) ? 1 : meshptr->m.vnlotax[vnodnum]; edgecut[0] = edgecut[1] = edgecut[2] = 0; for (enodnum = meshptr->m.verttax[vnodnum]; enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) edgecut[meshptr->parttax[meshptr->m.edgetax[enodnum]]] ++; #ifdef SCOTCH_DEBUG_VMESH3 if (partnum == 2) { if ((edgecut[0] == 0) || (edgecut[1] == 0)) errorPrint ("vmeshCheck: no-use separator vertex%s (%ld)", /* Warning only */ ((meshptr->levlnum == 0) ? " at level 0" : ""), (long) vnodnum); } else { #else if (partnum != 2) { #endif /* SCOTCH_DEBUG_VMESH3 */ if (edgecut[1 - partnum] != 0) { errorPrint ("vmeshCheck: node should be in separator (%ld)", (long) vnodnum); return (1); } } } if ((meshptr->ncmpload[0] != ncmpload[0]) || (meshptr->ncmpload[1] != ncmpload[1]) || (meshptr->ncmpload[2] != ncmpload[2]) || (meshptr->ncmpsize[0] != ncmpsize[0]) || (meshptr->ncmpsize[1] != ncmpsize[1]) || (meshptr->fronnbr != ncmpsize[2])) { errorPrint ("vmeshCheck: invalid node parameters"); return (1); } if ((meshptr->fronnbr < 0) || (meshptr->fronnbr > meshptr->m.vnodnbr)) { errorPrint ("vmeshCheck: invalid number of frontier vertices"); return (1); } if ((frontax = memAlloc (meshptr->m.vnodnbr * sizeof (int))) == NULL) { errorPrint ("vmeshCheck: out of memory"); return (1); } memSet (frontax, 0, meshptr->m.vnodnbr * sizeof (int)); frontax -= meshptr->m.vnodbas; o = 1; /* Assume failure when checking */ for (fronnum = 0; fronnum < meshptr->fronnbr; fronnum ++) { Gnum vnodnum; vnodnum = meshptr->frontab[fronnum]; if ((vnodnum < meshptr->m.vnodbas) || (vnodnum >= meshptr->m.vnodnnd)) { errorPrint ("vmeshCheck: invalid vertex in frontier array"); goto fail; } if (meshptr->parttax[vnodnum] != 2) { errorPrint ("vmeshCheck: invalid frontier array"); goto fail; } if (frontax[vnodnum] != 0) { errorPrint ("vmeshCheck: duplicate node in frontier array"); goto fail; } frontax[vnodnum] = 1; } o = 0; /* Everything turned well */ fail : memFree (frontax + meshptr->m.vnodbas); return (o); } scotch_6.0.9/src/libscotch/hgraph_order_nd.h0000644000302600021200000000712113465315041021317 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_nd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the halo graph nested dissection **/ /** ordering algorithm. **/ /** **/ /** DATES : # Version 3.2 : from : 17 oct 1996 **/ /** to : 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 13 mar 1999 **/ /** # Version 4.0 : from : 03 jan 2002 **/ /** to 24 apr 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HgraphOrderNdParam_ { Strat * sepstrat; /*+ Separation strategy +*/ Strat * ordstratlea; /*+ Leaf ordering strategy +*/ Strat * ordstratsep; /*+ Separator ordering strategy +*/ } HgraphOrderNdParam; /* ** The function prototypes. */ int hgraphOrderNd (const Hgraph * const, Order * const, const Gnum, OrderCblk * const, const HgraphOrderNdParam * const); scotch_6.0.9/src/libscotch/library_graph_check_f.c0000644000302600021200000000651013560013261022450 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_check_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 02 dec 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 22 apr 2004 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHCHECK, graphcheck, ( \ const SCOTCH_Graph * const grafptr, \ int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_graphCheck (grafptr); } scotch_6.0.9/src/libscotch/library_error.c0000644000302600021200000001423413560013261021040 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_error.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module provides error handling **/ /** routines to process errors generated by **/ /** the routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.3 : from : 02 oct 1998 **/ /** to 02 oct 1998 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 5.0 : from : 06 mar 2008 **/ /** to 24 may 2008 **/ /** # Version 5.1 : from : 27 sep 2008 **/ /** to 17 jul 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY_ERROR #include "module.h" #include "common.h" #include "scotch.h" /********************************/ /* */ /* The error handling routines. */ /* */ /********************************/ static char _SCOTCHerrorProgName[32] = ""; /* This routine sets the program name for ** error reporting. ** It returns: ** - VOID : in all cases. */ void SCOTCH_errorProg ( const char * const progstr) /*+ Program name +*/ { int charnbr; const char * nsrcptr; char * ndstptr; nsrcptr = progstr; ndstptr = _SCOTCHerrorProgName; charnbr = strlen (progstr); if (charnbr > 31) { _SCOTCHerrorProgName[0] = _SCOTCHerrorProgName[1] = _SCOTCHerrorProgName[2] = '.'; ndstptr += 3; nsrcptr += charnbr - 28; charnbr = 28; } strncpy (ndstptr, nsrcptr, charnbr); _SCOTCHerrorProgName[31] = '\0'; } /* This routine prints an error message with ** a variable number of arguments, as printf () ** does, and exits. ** It returns: ** - void : in all cases. */ void SCOTCH_errorPrint ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* The argument list of the call */ #ifdef SCOTCH_PTSCOTCH int proclocnum; #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "%s", _SCOTCHerrorProgName); #ifdef SCOTCH_PTSCOTCH if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) && (proclocnum != 0) && (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS)) fprintf (stderr, "(%d): ", proclocnum); else fprintf (stderr, ": "); #else /* SCOTCH_PTSCOTCH */ if (_SCOTCHerrorProgName[0] != '\0') fprintf (stderr, ": "); #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "ERROR: "); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ } /* This routine prints a warning message with ** a variable number of arguments, as printf () ** does. ** It returns: ** - VOID : in all cases. */ void SCOTCH_errorPrintW ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* The argument list of the call */ #ifdef SCOTCH_PTSCOTCH int proclocnum; #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "%s", _SCOTCHerrorProgName); #ifdef SCOTCH_PTSCOTCH if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) && (proclocnum != 0) && (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS)) fprintf (stderr, "(%d): ", proclocnum); else fprintf (stderr, ": "); #else /* SCOTCH_PTSCOTCH */ if (_SCOTCHerrorProgName[0] != '\0') fprintf (stderr, ": "); #endif /* SCOTCH_PTSCOTCH */ fprintf (stderr, "WARNING: "); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ } scotch_6.0.9/src/libscotch/bdgraph_gather_all.c0000644000302600021200000002646113560005346021766 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_gather_all.c **/ /** **/ /** AUTHORS : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the routine which **/ /** builds a centralized Bgraph on all **/ /** processors by gathering the pieces of **/ /** a distributed Bdgraph. **/ /** **/ /** DATES : # Version 5.1 : from : 21 dec 2007 **/ /** to 14 apr 2011 **/ /** # Version 6.0 : from : 29 aug 2014 **/ /** to 07 jun 2018 **/ /** **/ /** NOTES : # The definitions of MPI_Gather and **/ /** MPI_Gatherv indicate that elements in **/ /** the receive array should not be **/ /** written more than once. Great care **/ /** should be taken to enforce this rule, **/ /** especially when the number of **/ /** vertices in the centralized graph is **/ /** smaller than the number of **/ /** processors. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include "module.h" #include "common.h" #include "comm.h" #include "arch.h" #include "graph.h" #include "bgraph.h" #include "dgraph.h" #include "bdgraph.h" /* This function gathers on all processors ** the pieces of a distributed Bdgraph to ** build a centralized Bgraph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int bdgraphGatherAll ( const Bdgraph * restrict const dgrfptr, /* Distributed graph */ Bgraph * restrict cgrfptr) /* Centralized graph */ { int * restrict froncnttab; /* Count array for gather operations */ int * restrict fronvrttab; /* Displacement array for gather operations */ int fronlocnbr; /* Also int to enforce MPI standard */ #ifdef SCOTCH_DEBUG_BDGRAPH1 int cheklocval; int chekglbval; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ int procnum; #ifdef SCOTCH_DEBUG_BDGRAPH1 cheklocval = 0; if (cgrfptr == NULL) /* Centralized graphs should be provided by all */ cheklocval = 1; if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (1)"); return (1); } if (chekglbval != 0) { errorPrint ("bdgraphGatherAll: centralized graphs should be provided on every process"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (dgraphGatherAll (&dgrfptr->s, &cgrfptr->s) != 0) { errorPrint ("bdgraphGatherAll: cannot build centralized graph"); return (1); } cgrfptr->s.flagval |= BGRAPHFREEFRON | BGRAPHFREEPART | BGRAPHFREEVEEX; cgrfptr->veextax = NULL; /* In case of error */ cgrfptr->parttax = NULL; cgrfptr->frontab = NULL; if ((cgrfptr->frontab = (Gnum *) memAlloc (cgrfptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphGatherAll: out of memory (1)"); #ifndef SCOTCH_DEBUG_BDGRAPH1 bgraphExit (cgrfptr); return (1); #else /* SCOTCH_DEBUG_BDGRAPH1 */ cheklocval = 1; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ } else if ((cgrfptr->parttax = (GraphPart *) memAlloc (cgrfptr->s.vertnbr * sizeof (GraphPart))) == NULL) { errorPrint ("bdgraphGatherAll: out of memory (2)"); #ifndef SCOTCH_DEBUG_BDGRAPH1 bgraphExit (cgrfptr); return (1); #else /* SCOTCH_DEBUG_BDGRAPH1 */ cheklocval = 1; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ } else { cgrfptr->parttax -= cgrfptr->s.baseval; if (dgrfptr->veexloctax != NULL) { if ((cgrfptr->veextax = (Gnum *) memAlloc (cgrfptr->s.vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphGatherAll: out of memory (3)"); #ifndef SCOTCH_DEBUG_BDGRAPH1 bgraphExit (cgrfptr); return (1); #else /* SCOTCH_DEBUG_BDGRAPH1 */ cheklocval = 1; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ } else cgrfptr->veextax -= cgrfptr->s.baseval; } } #ifdef SCOTCH_DEBUG_BDGRAPH1 if (cheklocval == 0) { #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (memAllocGroup ((void **) (void *) /* Allocate tempory arrays to gather frontiers */ &froncnttab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), &fronvrttab, (size_t) (dgrfptr->s.procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("bdgraphGatherAll: out of memory (4)"); #ifndef SCOTCH_DEBUG_BDGRAPH1 bgraphExit (cgrfptr); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ cheklocval = 1; } } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (2)"); return (1); } if (chekglbval != 0) { if (froncnttab != NULL) memFree (froncnttab); /* Free group leader */ bgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH1 */ cgrfptr->compload0min = dgrfptr->compglbload0min; /* Set constant fields of the centralized graph as those of the distibuted graph */ cgrfptr->compload0max = dgrfptr->compglbload0max; cgrfptr->compload0avg = dgrfptr->compglbload0avg; cgrfptr->commloadextn0 = dgrfptr->commglbloadextn0; cgrfptr->commgainextn0 = dgrfptr->commglbgainextn0; cgrfptr->domndist = dgrfptr->domndist; cgrfptr->domnwght[0] = dgrfptr->domnwght[0]; cgrfptr->domnwght[1] = dgrfptr->domnwght[1]; cgrfptr->vfixload[0] = /* Fixed vertices will soon be available in PT-Scotch */ cgrfptr->vfixload[1] = 0; cgrfptr->levlnum = dgrfptr->levlnum; if (dgrfptr->partgsttax == NULL) { /* If distributed graph does not have a part array yet */ bgraphZero (cgrfptr); memFree (froncnttab); /* Free group leader */ return (0); } if (commAllgatherv (dgrfptr->partgsttax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GRAPHPART_MPI, /* Get parttax of distributed graph */ cgrfptr->parttax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GRAPHPART_MPI, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (4)"); return (1); } if (dgrfptr->veexloctax != NULL) { if (commAllgatherv (dgrfptr->veexloctax + dgrfptr->s.baseval, dgrfptr->s.vertlocnbr, GNUM_MPI, /* Get veextax of distributed graph */ cgrfptr->veextax, dgrfptr->s.proccnttab, dgrfptr->s.procdsptab, GNUM_MPI, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (5)"); return (1); } } fronlocnbr = (int) dgrfptr->fronlocnbr; if (MPI_Allgather (&fronlocnbr, 1, MPI_INT, /* Compute how frontiers are distributed */ froncnttab, 1, MPI_INT, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (6)"); return (1); } fronvrttab[0] = 0; /* Offset 0 for first process */ for (procnum = 1; procnum < dgrfptr->s.procglbnbr; procnum ++) /* Adjust index sub-arrays for all processors except the first one */ fronvrttab[procnum] = fronvrttab[procnum - 1] + froncnttab[procnum - 1]; if (MPI_Allgatherv (dgrfptr->fronloctab, (int) dgrfptr->fronlocnbr, GNUM_MPI, /* Gather frontiers */ cgrfptr->frontab, froncnttab, fronvrttab, GNUM_MPI, dgrfptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphGatherAll: communication error (7)"); return (1); } for (procnum = 1; procnum < dgrfptr->s.procglbnbr; procnum ++) { /* Adjust index sub-arrays for all processors except the first one */ Gnum vertnum; Gnum vertnnd; for (vertnum = (Gnum) fronvrttab[procnum], vertnnd = (Gnum) fronvrttab[procnum] + (Gnum) froncnttab[procnum]; vertnum < vertnnd; vertnum ++) cgrfptr->frontab[vertnum] += (Gnum) dgrfptr->s.procdsptab[procnum] - dgrfptr->s.baseval; } memFree (froncnttab); /* Free group leader */ for (procnum = 0; procnum < dgrfptr->s.proclocnum; procnum ++) /* Desynchronize random generators across processes */ intRandVal (2); intPerm (cgrfptr->frontab, dgrfptr->fronglbnbr); /* Compute permutation of frontier array to have different solutions on every process */ cgrfptr->compload0 = dgrfptr->compglbload0; /* Update other fields */ cgrfptr->compload0dlt = dgrfptr->compglbload0dlt; cgrfptr->compsize0 = dgrfptr->compglbsize0; cgrfptr->commload = dgrfptr->commglbload; cgrfptr->commgainextn = dgrfptr->commglbgainextn; cgrfptr->commgainextn0 = dgrfptr->commglbgainextn0; cgrfptr->fronnbr = dgrfptr->fronglbnbr; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bgraphCheck (cgrfptr) != 0) { errorPrint ("bdgraphGatherAll: internal error"); bgraphExit (cgrfptr); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/kdgraph_map_rb_part.c0000644000302600021200000004773213560013072022162 0ustar pelegrinpelegrin/* Copyright 2008-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb_part.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm **/ /** in parallel. It does so for complete **/ /** graph architectures, hence performing **/ /** plain graph partitioning, which **/ /** avoids to take care of what the other **/ /** processes are doing. **/ /** **/ /** DATES : # Version 5.1 : from : 21 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 03 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KDGRAPH_MAP_RB #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_map_st.h" #include "dgraph.h" #include "dmapping.h" #include "bdgraph.h" #include "bdgraph_bipart_st.h" #include "kdgraph.h" #include "kdgraph_map_rb.h" #include "kdgraph_map_rb_part.h" #include "kdgraph_map_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine sequentially computes a mapping ** of the given subgraph and adds its result to ** the given distributed mapping. Since no ** cocycle data is needed, the un-synchronized ** sequential Scotch routine can be used as is. ** It returns: ** - 0 : if the mapping could be computed. ** - !0 : on error. */ static int kdgraphMapRbPartSequ ( KdgraphMapRbPartGraph * restrict const grafptr, Dmapping * restrict const mappptr, const KdgraphMapRbPartData * restrict const dataptr) { Graph * restrict cgrfptr; Kgraph kgrfdat; /* Centralized mapping graph */ DmappingFrag * restrict fragptr; cgrfptr = &grafptr->data.cgrfdat; if (kgraphInit (&kgrfdat, cgrfptr, &mappptr->archdat, &grafptr->domnorg, 0, NULL, NULL, 1, 1, NULL) != 0) { errorPrint ("kdgraphMapRbPartSequ: cannot initialize centralized graph"); return (1); } kgrfdat.s.flagval = (kgrfdat.s.flagval & ~GRAPHBITSUSED) | cgrfptr->flagval; /* Free sequential graph along with mapping data */ kgrfdat.s.vnumtax = NULL; /* Remove index array if any */ kgrfdat.comploadrat = dataptr->comploadrat; /* Use ideal load of full graph and not of subgraph */ if (kgraphMapSt (&kgrfdat, dataptr->paraptr->stratseq) != 0) { /* Compute sequential mapping */ kgraphExit (&kgrfdat); return (1); } if (((fragptr = memAlloc (sizeof (DmappingFrag))) == NULL) || ((fragptr->vnumtab = memAlloc (cgrfptr->vertnbr * sizeof (Gnum))) == NULL)) { errorPrint ("kdgraphMapRbPartSequ: out of memory"); if (fragptr != NULL) memFree (fragptr); kgraphExit (&kgrfdat); return (1); } fragptr->vertnbr = cgrfptr->vertnbr; fragptr->parttab = kgrfdat.m.parttax + kgrfdat.s.baseval; fragptr->domnnbr = kgrfdat.m.domnnbr; fragptr->domntab = kgrfdat.m.domntab; kgrfdat.m.parttax = NULL; /* Keep sequential mapping arrays for distributed mapping fragment */ kgrfdat.m.domntab = NULL; if (kgrfdat.m.domnmax > kgrfdat.m.domnnbr) fragptr->domntab = memRealloc (fragptr->domntab, kgrfdat.m.domnnbr * sizeof (ArchDom)); /* Reallocate mapping array */ if (cgrfptr->vnumtax != NULL) memCpy (fragptr->vnumtab, cgrfptr->vnumtax + cgrfptr->baseval, cgrfptr->vertnbr * sizeof (Gnum)); else { Gnum vertadj; Gnum vertnum; for (vertnum = 0, vertadj = cgrfptr->baseval; vertnum < cgrfptr->vertnbr; vertnum ++) fragptr->vnumtab[vertnum] = vertadj + vertnum; } dmapAdd (mappptr, fragptr); /* Add mapping fragment */ kgraphExit (&kgrfdat); /* Free mapping without some of its arrays */ return (0); } /* This routine builds either a centralized or a ** distributed subgraph, according to the number ** of processes in the given part. The calling ** conventions of this routine have been designed ** so as to allow for multi-threading. */ static void * kdgraphMapRbPartFold2 ( void * const dataptr) /* Pointer to thread data */ { KdgraphMapRbPartThread * fldthrdptr; /* Thread input parameters */ KdgraphMapRbPartGraph * restrict fldgrafptr; /* Pointer to folded graph area */ Dgraph indgrafdat; /* Induced distributed graph */ void * o; fldthrdptr = (KdgraphMapRbPartThread *) dataptr; fldgrafptr = fldthrdptr->fldgrafptr; if (fldthrdptr->fldprocnbr == 0) /* If recursion stopped, build mapping of graph part */ return ((void *) (intptr_t) kdgraphMapRbAddPart (fldthrdptr->orggrafptr, fldthrdptr->mappptr, fldthrdptr->inddomnptr, fldthrdptr->indvertnbr, fldthrdptr->indparttax + fldthrdptr->orggrafptr->baseval, fldthrdptr->indpartval)); dgraphInit (&indgrafdat, fldthrdptr->orggrafptr->proccomm); /* Re-use communicator of original graph */ if (dgraphInducePart (fldthrdptr->orggrafptr, fldthrdptr->indparttax, /* Compute unfinished induced subgraph on all processes */ fldthrdptr->indvertnbr, fldthrdptr->indpartval, &indgrafdat) != 0) return ((void *) 1); if (fldthrdptr->fldprocnbr > 1) { /* If subpart has several processes, fold a distributed graph */ o = (void *) (intptr_t) dgraphFold2 (&indgrafdat, fldthrdptr->fldpartval, /* Fold temporary induced subgraph from all processes */ &fldgrafptr->data.dgrfdat, fldthrdptr->fldproccomm, NULL, NULL, MPI_INT); fldgrafptr->data.dgrfdat.flagval |= DGRAPHFREECOMM; /* Split communicator has to be freed */ } else { /* Create a centralized graph */ Graph * restrict fldcgrfptr; fldcgrfptr = (fldthrdptr->fldprocnum == 0) ? &fldgrafptr->data.cgrfdat : NULL; /* See if we are the receiver */ o = (void *) (intptr_t) dgraphGather (&indgrafdat, fldcgrfptr); /* Gather centralized subgraph from all other processes */ } dgraphExit (&indgrafdat); /* Free temporary induced graph */ return (o); } static int kdgraphMapRbPartFold ( Bdgraph * restrict const actgrafptr, Dmapping * restrict const mappptr, const ArchDom * restrict const domnsubtab, KdgraphMapRbPartGraph * restrict const fldgrafptr) { KdgraphMapRbPartThread fldthrdtab[2]; int fldprocnbr0; /* Number of processes in first part */ int fldprocnum; int fldproccol; int fldpartval; Gnum indvertlocmax; /* Local number of vertices in biggest subgraph */ Gnum indflagtab[2]; /* Array of subjob continuation flags */ GraphPart indpartmax; /* Induced part having most vertices */ #ifdef SCOTCH_PTHREAD Dgraph orggrafdat; /* Structure for copying graph fields except communicator */ pthread_t thrdval; /* Data of second thread */ #endif /* SCOTCH_PTHREAD */ int o; indflagtab[0] = /* Assume both jobs will not continue */ indflagtab[1] = 0; if ((actgrafptr->compglbsize0 != 0) && /* If graph has been bipartitioned */ (actgrafptr->compglbsize0 != actgrafptr->s.vertglbnbr)) { if (archVar (&mappptr->archdat)) { /* If architecture is variable-sized */ if (actgrafptr->compglbsize0 > 1) /* If graph is not single vertex, go on */ indflagtab[0] = ~0; /* All bits set to 1 */ if ((actgrafptr->s.vertglbnbr - actgrafptr->compglbsize0) > 1) indflagtab[1] = ~0; } else { /* Architecture is not variable-sized */ if (archDomSize (&mappptr->archdat, &domnsubtab[0]) > 1) /* Stop when target is one vertex */ indflagtab[0] = ~0; if (archDomSize (&mappptr->archdat, &domnsubtab[1]) > 1) indflagtab[1] = ~0; } } if ((indflagtab[0] | indflagtab[1]) == 0) { /* If both subjobs stop */ fldgrafptr->procnbr = 0; /* Nothing to do on return */ return (kdgraphMapRbAddBoth (&actgrafptr->s, mappptr, domnsubtab, actgrafptr->partgsttax + actgrafptr->s.baseval)); /* Map both subdomains in the same time */ } if ((2 * actgrafptr->compglbsize0) >= actgrafptr->s.vertglbnbr) { /* Get part of largest subgraph */ indpartmax = 0; indvertlocmax = actgrafptr->complocsize0; } else { indpartmax = 1; indvertlocmax = actgrafptr->s.vertlocnbr - actgrafptr->complocsize0; } fldprocnbr0 = (actgrafptr->s.procglbnbr + 1) / 2; /* Get number of processes in part 0 (always more than in part 1) */ fldthrdtab[0].mappptr = mappptr; /* Load data to pass to the subgraph building routines */ fldthrdtab[0].orggrafptr = &actgrafptr->s; fldthrdtab[0].inddomnptr = &domnsubtab[indpartmax]; fldthrdtab[0].indvertnbr = indvertlocmax; fldthrdtab[0].indpartval = indpartmax; fldthrdtab[0].indparttax = actgrafptr->partgsttax; fldthrdtab[0].fldgrafptr = fldgrafptr; fldthrdtab[0].fldpartval = 0; fldthrdtab[0].fldprocnbr = indflagtab[indpartmax] & fldprocnbr0; /* Stop if domain limited to one vertex */ fldthrdtab[1].mappptr = mappptr; fldthrdtab[1].orggrafptr = &actgrafptr->s; /* Assume jobs won't be run concurrently */ fldthrdtab[1].inddomnptr = &domnsubtab[indpartmax ^ 1]; fldthrdtab[1].indvertnbr = actgrafptr->s.vertlocnbr - indvertlocmax; fldthrdtab[1].indpartval = indpartmax ^ 1; fldthrdtab[1].indparttax = actgrafptr->partgsttax; fldthrdtab[1].fldgrafptr = fldgrafptr; fldthrdtab[1].fldpartval = 1; fldthrdtab[1].fldprocnbr = indflagtab[indpartmax ^ 1] & (actgrafptr->s.procglbnbr - fldprocnbr0); /* Stop if domain limited to one vertex */ if (actgrafptr->s.proclocnum < fldprocnbr0) { /* Compute color and rank in our future subpart */ fldpartval = 0; fldprocnum = actgrafptr->s.proclocnum; } else { fldpartval = 1; fldprocnum = actgrafptr->s.proclocnum - fldprocnbr0; } fldgrafptr->domnorg = *fldthrdtab[fldpartval].inddomnptr; /* Set data of our folded graph */ fldgrafptr->procnbr = fldthrdtab[fldpartval].fldprocnbr; fldgrafptr->levlnum = actgrafptr->levlnum + 1; /* One level down in the DRB process */ fldproccol = fldpartval; /* Split color is the part value */ if (fldgrafptr->procnbr <= 1) /* If our part will have only one processor or will stop */ fldproccol = MPI_UNDEFINED; /* Do not create any sub-communicator for it */ if (MPI_Comm_split (actgrafptr->s.proccomm, fldproccol, fldprocnum, &fldthrdtab[fldpartval].fldproccomm) != MPI_SUCCESS) { /* Assign folded communicator to proper part */ errorPrint ("kdgraphMapRbPartFold: communication error"); return (1); } fldthrdtab[fldpartval].fldprocnum = fldprocnum; /* This will be our rank afterwards */ fldthrdtab[fldpartval ^ 1].fldprocnum = -1; /* Other part will not be in communicator */ fldthrdtab[fldpartval ^ 1].fldproccomm = MPI_COMM_NULL; #ifdef SCOTCH_PTHREAD if ((indflagtab[0] & indflagtab[1]) != 0) { /* If both subjobs have meaningful things to do in parallel */ orggrafdat = actgrafptr->s; /* Create a separate graph structure to change its communicator */ orggrafdat.flagval = (orggrafdat.flagval & ~DGRAPHFREEALL) | DGRAPHFREECOMM; fldthrdtab[1].orggrafptr = &orggrafdat; MPI_Comm_dup (actgrafptr->s.proccomm, &orggrafdat.proccomm); /* Duplicate communicator to avoid interferences in communications */ if (pthread_create (&thrdval, NULL, kdgraphMapRbPartFold2, (void *) &fldthrdtab[1]) != 0) /* If could not create thread */ o = ((int) (intptr_t) kdgraphMapRbPartFold2 ((void *) &fldthrdtab[0])) || /* Perform inductions in sequence */ ((int) (intptr_t) kdgraphMapRbPartFold2 ((void *) &fldthrdtab[1])); else { /* Newly created thread is processing subgraph 1, so let's process subgraph 0 */ void * o2; o = (int) (intptr_t) kdgraphMapRbPartFold2 ((void *) &fldthrdtab[0]); /* Work on copy with private communicator */ pthread_join (thrdval, &o2); o |= (int) (intptr_t) o2; } MPI_Comm_free (&orggrafdat.proccomm); } else #endif /* SCOTCH_PTHREAD */ o = ((int) (intptr_t) kdgraphMapRbPartFold2 ((void *) &fldthrdtab[0])) || /* Perform inductions in sequence */ ((int) (intptr_t) kdgraphMapRbPartFold2 ((void *) &fldthrdtab[1])); return (o); } /* This routine performs the Dual Recursive ** Bipartitioning mapping in parallel. ** It returns: ** - 0 : if the mapping could be computed. ** - !0 : on error. */ static int kdgraphMapRbPart2 ( KdgraphMapRbPartGraph * restrict const grafptr, const KdgraphMapRbPartData * restrict const dataptr) { ArchDom domnsubtab[2]; /* Temporary subdomains */ Bdgraph actgrafdat; /* Active bipartitioning graph */ KdgraphMapRbPartGraph indgrafdat; /* Induced folded graph area */ Gnum comploadavg; Dmapping * mappptr; int o; mappptr = dataptr->mappptr; o = ((archVar (&mappptr->archdat)) && /* If architecture is variable-sized */ (grafptr->data.dgrfdat.vertglbnbr <= 1)) /* And source subgraph is of minimal size */ ? 1 /* Then do not bipartition target more */ : archDomBipart (&mappptr->archdat, &grafptr->domnorg, &domnsubtab[0], &domnsubtab[1]); switch (o) { case 1 : /* If target domain is terminal */ return (kdgraphMapRbAddOne (&grafptr->data.dgrfdat, mappptr, &grafptr->domnorg)); /* Update mapping and return */ case 2 : /* On error */ errorPrint ("kdgraphMapRbPart2: cannot bipartition domain"); return (1); } if (dgraphGhst (&grafptr->data.dgrfdat) != 0) { /* Compute ghost edge array if not already present, to have vertgstnbr (and procsidtab) */ errorPrint ("kdgraphMapRbPart2: cannot compute ghost edge array"); return (1); } o = bdgraphInit (&actgrafdat, &grafptr->data.dgrfdat, NULL, &mappptr->archdat, domnsubtab); /* Create active graph */ actgrafdat.levlnum = grafptr->levlnum; /* Initial level of bipartition graph is DRB recursion level */ comploadavg = (double) actgrafdat.s.veloglbsum / (double) archDomWght (&mappptr->archdat, &grafptr->domnorg); actgrafdat.compglbload0min = actgrafdat.compglbload0avg - (Gnum) MIN ((dataptr->comploadmax - comploadavg) * actgrafdat.domnwght[0], (comploadavg - dataptr->comploadmin) * actgrafdat.domnwght[1]); actgrafdat.compglbload0max = actgrafdat.compglbload0avg + (Gnum) MIN ((comploadavg - dataptr->comploadmin) * actgrafdat.domnwght[0], (dataptr->comploadmax - comploadavg) * actgrafdat.domnwght[1]); if ((o != 0) || (bdgraphBipartSt (&actgrafdat, dataptr->paraptr->stratsep) != 0)) { /* Bipartition edge-separation graph */ bdgraphExit (&actgrafdat); return (1); } o = kdgraphMapRbPartFold (&actgrafdat, mappptr, domnsubtab, &indgrafdat); bdgraphExit (&actgrafdat); /* Free additional bipartitioning data */ dgraphExit (&grafptr->data.dgrfdat); /* Free graph before going to next level */ if (o == 0) { if (indgrafdat.procnbr == 1) /* If sequential job */ o = kdgraphMapRbPartSequ (&indgrafdat, mappptr, dataptr); else if (indgrafdat.procnbr > 1) /* If distributed job */ o = kdgraphMapRbPart2 (&indgrafdat, dataptr); } return (o); } int kdgraphMapRbPart ( Kdgraph * restrict const grafptr, Kdmapping * restrict const mappptr, const KdgraphMapRbParam * restrict const paraptr) { KdgraphMapRbPartGraph grafdat; KdgraphMapRbPartData datadat; grafdat.domnorg = grafptr->m.domnorg; /* Used in all cases */ grafdat.procnbr = grafptr->s.procglbnbr; grafdat.levlnum = 0; /* Set initial DRB level to zero */ datadat.mappptr = mappptr->mappptr; datadat.paraptr = paraptr; datadat.comploadrat = (double) grafptr->s.veloglbsum / (double) archDomWght (&mappptr->mappptr->archdat, &grafptr->m.domnorg); datadat.comploadmin = (1.0 - paraptr->kbalval) * datadat.comploadrat; datadat.comploadmax = (1.0 + paraptr->kbalval) * datadat.comploadrat; if (grafptr->s.procglbnbr <= 1) { /* If single process, switch immediately to sequential mode */ if (dgraphGather (&grafptr->s, &grafdat.data.cgrfdat) != 0) { errorPrint ("kdgraphMapRbPart: cannot centralize graph"); return (1); } return (kdgraphMapRbPartSequ (&grafdat, mappptr->mappptr, &datadat)); } grafdat.data.dgrfdat = grafptr->s; /* Create a clone graph that will never be freed */ grafdat.data.dgrfdat.flagval &= ~DGRAPHFREEALL; return (kdgraphMapRbPart2 (&grafdat, &datadat)); /* Perform DRB */ } scotch_6.0.9/src/libscotch/bdgraph_bipart_df.h0000644000302600021200000000736513560005346021625 0ustar pelegrinpelegrin/* Copyright 2007,2009,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_df.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the parallel diffusion bipartition- **/ /** ing routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 16 nov 2007 **/ /** to : 14 apr 2011 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Small non-zero float value. +*/ #define BDGRAPHBIPARTDFEPSILON (1.0F / (float) (GNUMMAX)) /*+ Sign masking operator. +*/ #define BDGRAPHBIPARTDFGNUMSGNMSK(i) ((Gnum) 0 - (((Gunum) (i)) >> (sizeof (Gnum) * 8 - 1))) /* ** The type and structure definitions. */ /*+ Job selection policy types. +*/ typedef enum BdgraphBipartDfType_ { BDGRAPHBIPARTDFTYPEBAL = 0, /*+ Balance to average +*/ BDGRAPHBIPARTDFTYPEKEEP /*+ Preserve current imbalance +*/ } BdgraphBipartDfType; /*+ Method parameters. +*/ typedef struct BdgraphBipartDfParam_ { INT passnbr; /*+ Number of passes to do +*/ double cdifval; /*+ Coefficient of diffused load +*/ double cremval; /*+ Coefficient of remaining load +*/ BdgraphBipartDfType typeval; /*+ Type of balance to reach +*/ } BdgraphBipartDfParam; /* ** The function prototypes. */ int bdgraphBipartDf (Bdgraph * const, const BdgraphBipartDfParam * const); scotch_6.0.9/src/libscotch/dgraph_redist.c0000644000302600021200000005744013560005435021014 0ustar pelegrinpelegrin/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_redist.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file implements the distributed **/ /** graph redistribution method. **/ /** **/ /** DATES : # Version 6.0 : from : 10 may 2010 **/ /** to : 13 sep 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_REDIST #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_redist.h" /**********************************/ /* */ /* Graph redistribution routines. */ /* */ /**********************************/ /* This routine creates a redistributed ** destination graph by redistributing ** the contents of the given source graph ** according to the provided information. ** It returns: ** - 0 : if the redistributed graph has been created. ** - !0 : on error. */ int dgraphRedist ( Dgraph * restrict const srcgrafptr, /* Source distributed graph */ const Gnum * restrict const srcpartloctax, /* Array of process destinations */ const Gnum * restrict const srcpermgsttax, /* Redistribution permutation array */ const Gnum dstvertlocdlt, /* Extra size of local vertex array */ const Gnum dstedgelocdlt, /* Extra size of local edge array */ Dgraph * restrict const dstgrafptr) /* Destination distributed graph */ { Gnum * restrict permgsttax; const Gnum * restrict permgsttmp; Gnum permgstnbr; Gnum * restrict procdsptab; Gnum * restrict procvrttab; Gnum * restrict vadjloctab; Gnum * restrict vadjglbtab; Gnum vadjglbnbr; Gnum vertlocnum; int cheklocval; int chekglbval; Gnum procdspval; Gnum procvrtval; int procglbnbr; int procnum; int o; if (srcpartloctax == NULL) { errorPrint ("dgraphRedist: part array must be provided"); return (1); } cheklocval = 0; procglbnbr = srcgrafptr->procglbnbr; if (srcpermgsttax != NULL) { /* Do not allocate permutation array if already provided */ permgstnbr = vadjglbnbr = 0; } else { if (dgraphGhst (srcgrafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("dgraphRedist: cannot compute ghost edge array"); return (1); } permgstnbr = srcgrafptr->vertgstnbr; vadjglbnbr = procglbnbr; } if (memAllocGroup ((void **) (void *) &procvrttab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &procdsptab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &vadjloctab, (size_t) (procglbnbr * sizeof (Gnum)), &vadjglbtab, (size_t) (vadjglbnbr * sizeof (Gnum)), &permgsttax, (size_t) (permgstnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphRedist: out of memory"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_DGRAPH2 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (chekglbval != 0) { if (procvrttab != NULL) memFree (procvrttab); return (1); } memSet (vadjloctab, 0, procglbnbr * sizeof (Gnum)); for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) /* Count number of vertices for each processor */ vadjloctab[srcpartloctax[vertlocnum]] ++; if (MPI_Allreduce (vadjloctab, procdsptab, procglbnbr, GNUM_MPI, MPI_SUM, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist: communication error (2)"); return (1); } for (procnum = 0, procdspval = procvrtval = srcgrafptr->baseval; procnum < procglbnbr; procnum ++) { /* Create vertex range arrays */ Gnum procglbval; procglbval = procdsptab[procnum]; procdsptab[procnum] = procdspval; /* Build displacement array */ procdspval += procglbval; procvrttab[procnum] = procvrtval; /* Build vertex index array by adding vertlocdlt */ procvrtval += procglbval + dstvertlocdlt; } procdsptab[procnum] = procdspval; /* Set end of vertex range arrays */ procvrttab[procnum] = procvrtval; if (srcpermgsttax == NULL) { permgsttax -= srcgrafptr->baseval; if (MPI_Scan (vadjloctab, vadjglbtab, procglbnbr, GNUM_MPI, MPI_SUM, srcgrafptr->proccomm) != MPI_SUCCESS) { /* Compute permutation start indices */ errorPrint ("dgraphRedist: communication error (3)"); return (1); } for (procnum = 0; procnum < procglbnbr; procnum ++) /* Finalize permutation start indices */ vadjglbtab[procnum] -= vadjloctab[procnum] - procvrttab[procnum]; for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) /* Renumber local vertices */ permgsttax[vertlocnum] = vadjglbtab[srcpartloctax[vertlocnum]] ++; if (dgraphHaloSync (srcgrafptr, permgsttax + srcgrafptr->baseval, GNUM_MPI) != 0) { errorPrint ("dgraphRedist: cannot compute halo"); memFree (procvrttab); /* Free group leader */ return (1); } permgsttmp = permgsttax; } else permgsttmp = srcpermgsttax; o = dgraphRedist2 (srcgrafptr, srcpartloctax, permgsttmp, procdsptab, procvrttab, 0, dstedgelocdlt, dstgrafptr); memFree (procvrttab); /* Free group leader */ return (o); } static int dgraphRedist2 ( Dgraph * restrict const srcgrafptr, /* Source distributed graph */ const Gnum * restrict const srcpartloctax, /* Array of process destinations */ const Gnum * restrict const srcpermgsttax, /* Redistribution permutation array */ const Gnum * const dstprocdsptab, /* New distribution of graph vertices */ const Gnum * const dstprocvrttab, /* New distribution of graph vertices */ const Gnum dstvertlocdlt, /* Extra size of local vertex array */ const Gnum dstedgelocdlt, /* Extra size of local edge array */ Dgraph * restrict const dstgrafptr) /* Destination distributed graph */ { Gnum baseval; int flveval; /* Number of data to send per vertex */ int fledval; /* Number of data to send per edge */ Gnum * drcvdattab; /* Receive array for vertex and edge data [norestrict] */ Gnum * dsnddattab; /* Send array for vertex and edge data [norestrict] */ int * restrict drcvcnttab; /* Count array for received data */ int * restrict dsndcnttab; /* Count array for sent data */ int * restrict drcvdsptab; /* Displacement array for received data */ int * restrict dsnddsptab; /* Displacement array for sent data */ int drcvdatnbr; /* Amount of data to allocate */ int dsnddatnbr; int drcvdatidx; int dsnddatidx; Gnum srcvertlocnum; Gnum srcvertlocnnd; Gnum srcvertlocadj; Gnum * restrict dstvertloctax; Gnum dstvertlocadj; Gnum dstvertlocnbr; Gnum dstvertlocnnd; Gnum dstvertlocnum; Gnum * restrict dstveloloctax; Gnum dstvelolocsiz; Gnum dstvelolocsum; Gnum * restrict dstvlblloctax; Gnum * dstedgeloctax; /* Pointer to destination edge array [norestrict] */ Gnum dstedgelocnbr; Gnum dstedgelocsiz; Gnum dstedgelocnum; Gnum * dstedloloctax; /* Pointer to destination edge load array [norestrict] */ Gnum dstedlolocsiz; int dstvertloctmp; /* Vertex and edge numbers, as (int)s */ int dstedgeloctmp; Gnum procdspval; int procglbnbr; int cheklocval; int chekglbval; int procnum; const Gnum * restrict const srcvertloctax = srcgrafptr->vertloctax; const Gnum * restrict const srcvendloctax = srcgrafptr->vendloctax; const Gnum * restrict const srcveloloctax = srcgrafptr->veloloctax; const Gnum * restrict const srcvlblloctax = srcgrafptr->vlblloctax; const Gnum * restrict const srcedgegsttax = srcgrafptr->edgegsttax; const Gnum * restrict const srcedloloctax = srcgrafptr->edloloctax; dstgrafptr->flagval |= (DGRAPHFREEALL ^ DGRAPHFREECOMM) | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; cheklocval = 0; procglbnbr = srcgrafptr->procglbnbr; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &dstgrafptr->procdsptab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &dstgrafptr->procvrttab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &dstgrafptr->proccnttab, (size_t) (procglbnbr * sizeof (Gnum)), &dstgrafptr->procngbtab, (size_t) (procglbnbr * sizeof (int)), &dstgrafptr->procrcvtab, (size_t) (procglbnbr * sizeof (int)), &dstgrafptr->procsndtab, (size_t) (procglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphRedist2: out of memory (1)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist2: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_DGRAPH2 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (chekglbval != 0) { dgraphFree (dstgrafptr); return (1); } dsndcnttab = (int *) dstgrafptr->procdsptab; /* TRICK: use procdsptab and procvrttab as paired send count arrays */ drcvcnttab = (int *) dstgrafptr->proccnttab; /* TRICK: use proccnttab and procngbtab as paired receive arrays */ dsnddsptab = (int *) dstgrafptr->procrcvtab; drcvdsptab = (int *) dstgrafptr->procsndtab; memSet (dsndcnttab, 0, procglbnbr * 2 * sizeof (int)); /* TRICK: Pairs of vertex and edge counts will be exchanged */ baseval = srcgrafptr->baseval; for (srcvertlocnum = baseval, srcvertlocnnd = srcgrafptr->vertlocnnd; srcvertlocnum < srcvertlocnnd; srcvertlocnum ++) { Gnum procngbnum; procngbnum = srcpartloctax[srcvertlocnum]; dsndcnttab[2 * procngbnum] ++; /* One more vertex */ dsndcnttab[2 * procngbnum + 1] += (int) (srcvendloctax[srcvertlocnum] - srcvertloctax[srcvertlocnum]); /* More edges */ } if (MPI_Alltoall (dsndcnttab, 2, MPI_INT, /* Get amounts of vertex and edge data to receive */ drcvcnttab, 2, MPI_INT, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist2: communication error (2)"); return (1); } fledval = ((srcgrafptr->edloloctax != NULL) ? 1 : 0) + 1; /* Amount of data to exchange per edge */ flveval = ((srcgrafptr->veloloctax != NULL) ? 1 : 0) + 3; /* Number, degree and label count for 3 */ for (procnum = 0, drcvdatidx = dsnddatidx = 0, dstvertloctmp = dstedgeloctmp = 0; procnum < procglbnbr; procnum ++) { /* Compute start indices for data send and receive arrays */ int dsndcntval; int drcvcntval; dsndcntval = dsndcnttab[2 * procnum] * flveval + dsndcnttab[2 * procnum + 1] * fledval; drcvcntval = drcvcnttab[2 * procnum] * flveval + drcvcnttab[2 * procnum + 1] * fledval; dstvertloctmp += drcvcnttab[2 * procnum]; /* Accumulate number of vertices and edges */ dstedgeloctmp += drcvcnttab[2 * procnum + 1]; dsnddsptab[procnum] = dsnddatidx; dsnddatidx += dsndcntval; drcvdsptab[procnum] = drcvdatidx; drcvdatidx += drcvcntval; } dsnddatnbr = dsnddatidx; /* Preserve amount of data to allocate for sending and receiving */ drcvdatnbr = drcvdatidx; for (procnum = procglbnbr - 1; procnum >= 0; procnum --) { /* Compute count arrays for data send and receive arrays */ int dsnddspval; int drcvdspval; dsnddspval = dsnddsptab[procnum]; dsndcnttab[procnum] = dsnddatidx - dsnddspval; dsnddatidx = dsnddspval; drcvdspval = drcvdsptab[procnum]; drcvcnttab[procnum] = drcvdatidx - drcvdspval; drcvdatidx = drcvdspval; } dstvertlocnbr = (Gnum) dstvertloctmp; dstedgelocnbr = (Gnum) dstedgeloctmp; dstedgelocsiz = dstedgelocnbr + dstedgelocdlt; dstvelolocsiz = (srcgrafptr->veloloctax != NULL) ? dstvertlocnbr + dstvertlocdlt : 0; dstedlolocsiz = (srcgrafptr->edloloctax != NULL) ? dstedgelocsiz : 0; if (memAllocGroup ((void **) (void *) &dstvertloctax, (size_t) ((dstvertlocnbr + dstvertlocdlt + 1) * sizeof (Gnum)), /* Create compact array */ &dstveloloctax, (size_t) ( dstvelolocsiz * sizeof (Gnum)), &dstvlblloctax, (size_t) ((dstvertlocnbr + dstvertlocdlt) * sizeof (Gnum)), NULL) == NULL) { /* Vertex labels always present */ errorPrint ("dgraphRedist2: out of memory (2)"); cheklocval = 1; } else if (dstvertloctax -= baseval, dstveloloctax = ((srcgrafptr->veloloctax != NULL) ? dstveloloctax - baseval : NULL), dstvlblloctax -= baseval, memAllocGroup ((void **) (void *) &dstedgeloctax, (size_t) ((dstedlolocsiz + /* TRICK: extra space required only if edge loads */ MAX (dstedgelocdlt, srcgrafptr->degrglbmax)) * sizeof (Gnum)), /* TRICK: degrmax to avoid overlap */ &dsnddattab, (size_t) (dsnddatnbr * sizeof (Gnum)), /* TRICK: send space will be edgeloctab or edloloctab */ &drcvdattab, (size_t) (drcvdatnbr * sizeof (Gnum)), NULL) == NULL) { /* TRICK: Remaining space will be freed */ errorPrint ("dgraphRedist2: out of memory (3)"); cheklocval = 1; } else { dstedgeloctax -= baseval; dstedloloctax = (srcgrafptr->edloloctax != NULL) ? (dstedgeloctax + dstedgelocsiz) : NULL; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist2: communication error (3)"); return (1); } #else /* SCOTCH_DEBUG_DGRAPH2 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (chekglbval != 0) { dgraphFree (dstgrafptr); return (1); } srcvertlocadj = srcgrafptr->procvrttab[srcgrafptr->proclocnum] - baseval; for (srcvertlocnum = baseval; srcvertlocnum < srcvertlocnnd; srcvertlocnum ++) { /* Record data to send */ Gnum procngbnum; int dsnddatidx; Gnum srcedgelocnum; Gnum srcedgelocnnd; Gnum srcdegrval; procngbnum = srcpartloctax[srcvertlocnum]; /* Retrieve destination process number */ dsnddatidx = dsnddsptab[procngbnum]; srcedgelocnum = srcvertloctax[srcvertlocnum]; srcedgelocnnd = srcvendloctax[srcvertlocnum]; srcdegrval = srcedgelocnnd - srcedgelocnum; dsnddattab[dsnddatidx ++] = srcpermgsttax[srcvertlocnum]; /* Record destination vertex global number */ dsnddattab[dsnddatidx ++] = srcdegrval; /* Record number of edges */ dsnddattab[dsnddatidx ++] = (srcvlblloctax != NULL) /* Record source vertex global number or label */ ? srcvlblloctax[srcvertlocnum] : srcvertlocnum + srcvertlocadj; if (srcveloloctax != NULL) dsnddattab[dsnddatidx ++] = srcveloloctax[srcvertlocnum]; /* Record vertex load if needed */ if (srcedloloctax != NULL) { /* If edge loads have to be sent too */ memCpy (dsnddattab + dsnddatidx, srcedloloctax + srcedgelocnum, srcdegrval * sizeof (Gnum)); /* Copy edge loads */ dsnddatidx += srcdegrval; } for ( ; srcedgelocnum < srcedgelocnnd; srcedgelocnum ++) /* Record translated edge array */ dsnddattab[dsnddatidx ++] = srcpermgsttax[srcedgegsttax[srcedgelocnum]]; dsnddsptab[procngbnum] = dsnddatidx; } for (procnum = 0, dsnddatidx = 0; /* Recompute dsnddsptab */ procnum < procglbnbr; procnum ++) { dsnddsptab[procnum] = dsnddatidx; dsnddatidx += dsndcnttab[procnum]; } if (MPI_Alltoallv (dsnddattab, dsndcnttab, dsnddsptab, GNUM_MPI, /* Exchange graph data */ drcvdattab, drcvcnttab, drcvdsptab, GNUM_MPI, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphRedist2: communication error (4)"); return (1); } dstvertlocadj = dstprocvrttab[srcgrafptr->proclocnum] - baseval; for (drcvdatidx = 0; drcvdatidx < drcvdatnbr; ) { Gnum dstvertlocnum; Gnum dstdegrval; dstvertlocnum = drcvdattab[drcvdatidx ++] - dstvertlocadj; /* Get vertex index */ dstdegrval = drcvdattab[drcvdatidx ++]; /* Get number of edges */ dstvertloctax[dstvertlocnum] = dstdegrval; /* Record vertex degree to compute index array */ dstvlblloctax[dstvertlocnum] = drcvdatidx; /* TRICK: record data position in label array */ drcvdatidx += dstdegrval * fledval + (flveval - 2); /* Increase index by proper value */ } dstvelolocsum = (dstveloloctax != NULL) ? 0 : dstvertlocnbr; /* Set local vertex load sum if no vertex loads present */ for (dstvertlocnum = dstedgelocnum = baseval, dstvertlocnnd = dstvertlocnbr + baseval; /* Copy edge information in due place */ dstvertlocnum < dstvertlocnnd; dstvertlocnum ++) { int drcvdatidx; Gnum dstdegrval; drcvdatidx = dstvlblloctax[dstvertlocnum]; dstdegrval = dstvertloctax[dstvertlocnum]; dstvertloctax[dstvertlocnum] = dstedgelocnum; dstvlblloctax[dstvertlocnum] = drcvdattab[drcvdatidx ++]; /* Set vertex label */ if (dstveloloctax != NULL) { dstvelolocsum += dstveloloctax[dstvertlocnum] = drcvdattab[drcvdatidx ++]; /* Set vertex load */ } if (dstedloloctax != NULL) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (abs ((dstedloloctax + dstedgelocnum) - (drcvdattab + drcvdatidx)) < dstdegrval) { /* Memory areas should never overlap */ errorPrint ("dgraphRedist2: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ memCpy (dstedloloctax + dstedgelocnum, drcvdattab + drcvdatidx, dstdegrval * sizeof (Gnum)); drcvdatidx += dstdegrval; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (abs ((dstedgeloctax + dstedgelocnum) - (drcvdattab + drcvdatidx)) < dstdegrval) { /* TRICK: memory areas should never overlap because of degrmax */ errorPrint ("dgraphRedist2: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ memCpy (dstedgeloctax + dstedgelocnum, drcvdattab + drcvdatidx, dstdegrval * sizeof (Gnum)); /* TRICK: will never overlap */ dstedgelocnum += dstdegrval; } dstvertloctax[dstvertlocnum] = dstedgelocnum; /* Set end of compact vertex array */ dstedgeloctax = memRealloc (dstedgeloctax + baseval, dstedgelocsiz * fledval * sizeof (Gnum)); #ifdef SCOTCH_DEBUG_DGRAPH2 if (dstedgeloctax == NULL) { /* Shrinking should never fail */ errorPrint ("dgraphRedist2: out of memory (4)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ dstedgeloctax -= baseval; if (dstedloloctax != NULL) dstedloloctax = dstedgeloctax + dstedgelocsiz; dstgrafptr->procglbnbr = procglbnbr; dstgrafptr->proclocnum = srcgrafptr->proclocnum; memCpy (dstgrafptr->procvrttab, dstprocvrttab, (procglbnbr + 1) * sizeof (Gnum)); /* Set vertex range array (possibly with holes) */ memCpy (dstgrafptr->procdsptab, dstprocdsptab, (procglbnbr + 1) * sizeof (Gnum)); /* Set vertex displacement array */ for (procnum = procglbnbr - 1, procdspval = dstprocdsptab[procglbnbr]; /* Set vertex count array */ procnum >= 0; procnum --) { Gnum procdsptmp; procdsptmp = dstprocdsptab[procnum]; dstgrafptr->proccnttab[procnum] = procdspval - procdsptmp; procdspval = procdsptmp; } if (dgraphBuild3 (dstgrafptr, baseval, dstvertlocnbr, dstvertloctax, dstvertloctax + 1, dstveloloctax, dstvelolocsum, NULL, NULL, dstedgelocnbr, dstedgelocsiz, dstedgeloctax, NULL, dstedloloctax, srcgrafptr->degrglbmax) != 0) { errorPrint ("dgraphRedist2: cannot build redistributed graph"); dgraphFree (dstgrafptr); return (1); } dstgrafptr->vlblloctax = dstvlblloctax; /* Set label array after building so that labels not taken into account at build time */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (dstgrafptr) != 0) { /* Check graph consistency */ errorPrint ("dgraphRedist2: inconsistent graph data"); dgraphFree (dstgrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/wgraph_check.c0000644000302600021200000001565513465315041020625 0ustar pelegrinpelegrin/* Copyright 2007-2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_check.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module check the graph consistency **/ /** for the vertex overlapped graph partit- **/ /** ioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_CHECK #include "module.h" #include "common.h" #include "graph.h" #include "wgraph.h" /* ** The static variables. */ static const Gnum wgraphcheckloadone = 1; /*************************/ /* */ /* These routines handle */ /* separator graphs. */ /* */ /*************************/ /* This routine checks the consistency ** of the given separator graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int wgraphCheck ( const Wgraph * const grafptr) { Gnum vertnum; /* Number of current vertex */ const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum velomsk; Gnum edgenum; Gnum partnum; Gnum fronnum; /* Current number of frontier vertex */ Gnum fronload; Gnum * restrict compload; Gnum * restrict compsize; Gnum * restrict flagtab; if (memAllocGroup ((void **) (void *) &flagtab, (size_t) (grafptr->partnbr * sizeof (Gnum)), &compload, (size_t) (grafptr->partnbr * sizeof (Gnum)), &compsize, (size_t) (grafptr->partnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("wgraphCheck: out of memory (1)"); return (1); } if (grafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &wgraphcheckloadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = grafptr->s.velotax; velomsk = ~((Gnum) 0); } fronnum = fronload = 0; memSet (compload, 0, grafptr->partnbr * sizeof (Gnum)); /* Reset loads */ memSet (compsize, 0, grafptr->partnbr * sizeof (Gnum)); memSet (flagtab, ~0, grafptr->partnbr * sizeof (Gnum)); /* Reset flag array */ for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if ((grafptr->parttax[vertnum] >= grafptr->partnbr) || (grafptr->parttax[vertnum] < -1)) { errorPrint ("wgraphCheck: invalid part array"); memFree (flagtab); /* Free group leader */ return (1); } if (grafptr->parttax[vertnum] == -1) { fronnum ++; fronload += velobax[vertnum & velomsk]; for (edgenum = grafptr->s.verttax[vertnum]; edgenum < grafptr->s.vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = grafptr->s.edgetax[edgenum]; if ((grafptr->parttax[vertend] != -1) && (flagtab[grafptr->parttax[vertend]] != vertnum)) { compload[grafptr->parttax[vertend]] += velobax[vertnum & velomsk]; compsize[grafptr->parttax[vertend]] ++; flagtab[grafptr->parttax[vertend]] = vertnum; } } } else { compload[grafptr->parttax[vertnum]] += velobax[vertnum & velomsk]; compsize[grafptr->parttax[vertnum]] ++; } } for (partnum = 0; partnum < grafptr->partnbr; partnum ++) { if (grafptr->compsize[partnum] != compsize[partnum]) { errorPrint ("wgraphCheck: invalid part size %d %d %d", grafptr->compsize[partnum], compsize[partnum], partnum); memFree (flagtab); return (1); } if (grafptr->compload[partnum] != compload[partnum]) { errorPrintW ("wgraphCheck: invalid part load %d %d %d", grafptr->compload[partnum], compload[partnum], partnum); memFree (flagtab); return (1); } } if (grafptr->fronload != fronload) { errorPrint ("wgraphCheck: invalid frontier load %d %d", grafptr->fronload, fronload); memFree (flagtab); return (1); } if (grafptr->fronnbr != fronnum) { errorPrint ("wgraphCheck: invalid frontier size %d %d", grafptr->fronnbr, fronnum); memFree (flagtab); return (1); } for(fronnum = 0; fronnum < grafptr->fronnbr; fronnum++) { vertnum = grafptr->frontab[fronnum]; if (grafptr->parttax[vertnum] != -1) { errorPrint ("wgraphCheck: invalid frontab"); memFree (flagtab); return (1); } } memFree (flagtab); return (0); } scotch_6.0.9/src/libscotch/vmesh_store.c0000644000302600021200000001414313303015264020520 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_store.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for node **/ /** separation meshes. **/ /** **/ /** DATES : # Version 4.0 : from : 10 sep 2002 **/ /** to : 10 sep 2002 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH_STORE #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" /*********************************/ /* */ /* Store mesh handling routines. */ /* */ /*********************************/ /* This routine builds a save structure ** for the given node separation mesh. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int vmeshStoreInit ( const Vmesh * const meshptr, VmeshStore * const storptr) { Gnum savsize; savsize = (meshptr->m.velmnbr + meshptr->m.vnodnbr) * (sizeof (GraphPart) + sizeof (Gnum)); /* Compute size for frontier and part arrays */ if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("vmeshStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a mesh node ** separation save structure. ** It returns: ** - VOID : in all cases. */ void vmeshStoreExit ( VmeshStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_VMESH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_VMESH2 */ } /* This routine saves partition data from the ** given node separation mesh to the given ** save structure. ** It returns: ** - VOID : in all cases. */ void vmeshStoreSave ( const Vmesh * const meshptr, VmeshStore * const storptr) { byte * parttab; /* Pointer to part data save area */ byte * frontab; /* Pointer to frontier data save area */ storptr->ecmpsize[0] = meshptr->ecmpsize[0]; /* Save partition parameters */ storptr->ecmpsize[1] = meshptr->ecmpsize[1]; storptr->ncmpload[0] = meshptr->ncmpload[0]; storptr->ncmpload[1] = meshptr->ncmpload[1]; storptr->ncmpload[2] = meshptr->ncmpload[2]; storptr->ncmploaddlt = meshptr->ncmploaddlt; storptr->ncmpsize[0] = meshptr->ncmpsize[0]; storptr->ncmpsize[1] = meshptr->ncmpsize[1]; storptr->fronnbr = meshptr->fronnbr; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + meshptr->fronnbr * sizeof (Gnum); memCpy (frontab, meshptr->frontab, meshptr->fronnbr * sizeof (Gnum)); memCpy (parttab, meshptr->parttax + meshptr->m.baseval, (meshptr->m.velmnbr + meshptr->m.vnodnbr) * sizeof (GraphPart)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void vmeshStoreUpdt ( Vmesh * const meshptr, const VmeshStore * const storptr) { byte * frontab; /* Pointer to frontier data save area */ byte * parttab; /* Pointer to part data save area */ meshptr->ecmpsize[0] = storptr->ecmpsize[0]; /* Load partition parameters */ meshptr->ecmpsize[1] = storptr->ecmpsize[1]; meshptr->ncmpload[0] = storptr->ncmpload[0]; meshptr->ncmpload[1] = storptr->ncmpload[1]; meshptr->ncmpload[2] = storptr->ncmpload[2]; meshptr->ncmploaddlt = storptr->ncmploaddlt; meshptr->ncmpsize[0] = storptr->ncmpsize[0]; meshptr->ncmpsize[1] = storptr->ncmpsize[1]; meshptr->fronnbr = storptr->fronnbr; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + storptr->fronnbr * sizeof (Gnum); memCpy (meshptr->frontab, frontab, storptr->fronnbr * sizeof (Gnum)); memCpy (meshptr->parttax + meshptr->m.baseval, parttab, (meshptr->m.velmnbr + meshptr->m.vnodnbr) * sizeof (GraphPart)); } scotch_6.0.9/src/libscotch/hgraph_order_gp.c0000644000302600021200000002750013303015264021315 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_gp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a subgraph (most **/ /** likely a separator) using the Gibbs, **/ /** Poole, and Stockmeyer algorithm. **/ /** **/ /** DATES : # Version 3.2 : from : 31 oct 1996 **/ /** to 27 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 4.0 : from : 28 jun 2002 **/ /** to : 01 dec 2003 **/ /** # Version 4.0 : from : 10 sep 2007 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_GP #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_gp.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderGp ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HgraphOrderGpParam * restrict const paraptr) { HgraphOrgerGpQueue queudat; /* Neighbor queue */ HgraphOrderGpVertex * restrict vexxtax; /* Based access to vertex array */ Gnum passnum; /* Pass number */ Gnum rootnum; /* Number of root vertex */ Gnum diamnum; /* Vertex which achieves diameter */ int diamflag; /* Flag set if diameter changed */ Gnum diamdist; /* Maximum diameter value found */ Gnum vertdist; /* DIstance of current vertex */ Gnum vertnum; /* Number of current vertex */ Gnum edgenum; /* Number of current edge */ Gnum ordeval; /* Current ordering value */ Gnum ordevnd; /* End value of ordering */ const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vnumtax = grafptr->s.vnumtax; const Gnum * restrict const vnhdtax = grafptr->vnhdtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; if (memAllocGroup ((void **) (void *) &queudat.qtab, (size_t) (grafptr->vnohnbr * sizeof (Gnum)), &vexxtax, (size_t) (grafptr->vnohnbr * sizeof (HgraphOrderGpVertex)), NULL) == NULL) { errorPrint ("hgraphOrderGp: out of memory"); return (1); } memSet (vexxtax, 0, grafptr->vnohnbr * sizeof (HgraphOrderGpVertex)); /* Initialize pass numbers */ vexxtax -= grafptr->s.baseval; #ifdef SCOTCH_DEBUG_ORDER2 memSet (ordeptr->peritab + ordenum, ~0, grafptr->vnohnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_ORDER2 */ for (ordeval = ordenum, rootnum = grafptr->s.baseval, /* For all connected components */ ordevnd = ordeval + grafptr->vnohnbr; ordeval < ordevnd; ) { while (vexxtax[rootnum].passnum != 0) { /* Find first unallocated root */ rootnum ++; #ifdef SCOTCH_DEBUG_ORDER2 if (rootnum >= grafptr->vnohnnd) { errorPrint ("hgraphOrderGp: internal error (1)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ } diamnum = rootnum; /* Start from found root */ diamdist = 0; for (diamflag = 0, passnum = 1; /* Loop if modifications */ (diamflag ++ == 0) && (passnum <= paraptr->passnbr); passnum ++) { Gnum diamdegr; /* Degree of current pseudo-peripherial vertex */ hgraphOrderGpQueueFlush (&queudat); /* Flush vertex queue */ hgraphOrderGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].vertdist = 0; /* It is at distance zero */ diamdegr = vnhdtax[diamnum] - verttax[diamnum]; do { /* Loop on vertices in queue */ vertnum = hgraphOrderGpQueueGet (&queudat); /* Get vertex from queue */ #ifdef SCOTCH_DEBUG_ORDER2 if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->vnohnnd)) { errorPrint ("hgraphOrderGp: internal error (2)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ vertdist = vexxtax[vertnum].vertdist; /* Get vertex distance */ if ((vertdist > diamdist) || /* If vertex increases diameter */ ((vertdist == diamdist) && /* Or is at diameter distance */ ((vnhdtax[vertnum] - verttax[vertnum]) < diamdegr))) { /* With smaller degree */ diamnum = vertnum; /* Set it as new diameter vertex */ diamdist = vertdist; diamdegr = vnhdtax[vertnum] - verttax[vertnum]; diamflag = 0; } vertdist ++; /* Set neighbor distance */ for (edgenum = verttax[vertnum]; edgenum < vnhdtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; #ifdef SCOTCH_DEBUG_ORDER2 if ((vertend < grafptr->s.baseval) || (vertend >= grafptr->vnohnnd)) { errorPrint ("hgraphOrderGp: internal error (3)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ if (vexxtax[vertend].passnum < passnum) { /* If vertex not queued yet */ hgraphOrderGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].vertdist = vertdist; } } } while (! hgraphOrderGpQueueEmpty (&queudat)); /* As long as queue is not empty */ } hgraphOrderGpQueueFlush (&queudat); /* Flush vertex queue */ hgraphOrderGpQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* Vertex has been enqueued */ do { /* Loop on vertices in queue */ vertnum = hgraphOrderGpQueueGet (&queudat); /* Get vertex from queue */ if (vexxtax[vertnum].passnum > passnum) /* If vertex already ordered (by-level ordering) */ continue; /* Skip to next vertex in queue */ vertdist = vexxtax[vertnum].vertdist; /* Get vertex distance */ do { /* Loop on vertices in layer */ Gnum edgennd; /* End of edge sub-array */ ordeptr->peritab[ordeval ++] = (vnumtax == NULL) ? vertnum : vnumtax[vertnum]; vexxtax[vertnum].passnum = passnum + 1; /* Set vertex as ordered */ for (edgenum = verttax[vertnum], edgennd = vnhdtax[vertnum], vertnum = ~0; edgenum < edgennd; edgenum ++) { /* Need edgennd because vertnum is overwritten */ Gnum vertend; vertend = edgetax[edgenum]; if ((vexxtax[vertend].vertdist == vertdist) && /* If neighbor vertex in same layer */ (vexxtax[vertend].passnum <= passnum)) { /* And not yet ordered */ vertnum = vertend; /* Set neighbor as next vertex */ edgenum ++; /* Process next neighbors, not this one again */ break; /* Process next neighbors without further testing */ } if (vexxtax[vertend].passnum < passnum) { /* Else if vertex not yet enqueued */ hgraphOrderGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; /* Set it as enqueued */ } } for ( ; edgenum < edgennd; edgenum ++) { /* Enqueue remaining neighbors */ Gnum vertend; vertend = edgetax[edgenum]; if (vexxtax[vertend].passnum < passnum) { /* If neighbor not yet enqueued */ hgraphOrderGpQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; /* Set it as enqueued */ } } } while (vertnum != ~0); } while (! hgraphOrderGpQueueEmpty (&queudat)); /* As long as queue is not empty */ } #ifdef SCOTCH_DEBUG_ORDER2 for (ordeval = ordenum; ordeval < ordenum + grafptr->vnohnbr; ordeval ++) { if (ordeptr->peritab[ordeval] == ~0) { errorPrint ("hgraphOrderGp: internal error (4)"); memFree (queudat.qtab); /* Free group leader */ return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ memFree (queudat.qtab); /* Group freeing */ return (0); } scotch_6.0.9/src/libscotch/dorder_perm.h0000644000302600021200000000547113303015264020475 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /**********************************************************/ /* */ /* NAME : dorder_perm.h */ /* */ /* AUTHOR : Francois PELLEGRINI */ /* */ /* FUNCTION : These lines are the data declarations */ /* for the distributed source graph */ /* folding routines. */ /* */ /* # Version 5.0 : from : 14 oct 2007 */ /* to 14 oct 2007 */ /* */ /**********************************************************/ /* ** The type and structure definitions. */ /*+ The sort structure, used to sort permuted vertices. Field vertnum is first because of intSort2asc1. +*/ typedef struct DorderPermSort_ { Gnum vertnum; /*+ Vertex number: FIRST +*/ Gnum permnum; /*+ Direct permutation index +*/ } DorderPermSort; scotch_6.0.9/src/libscotch/graph_io.h0000644000302600021200000000705413465315041017767 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph input/output **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 02 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 18 aug 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 28 nov 1995 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 may 1999 **/ /** # Version 4.0 : from : 25 nov 2001 **/ /** to 25 nov 2001 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int graphLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * const, const Gnum, const Gnum * const); scotch_6.0.9/src/libscotch/kgraph_map_cp.c0000644000302600021200000000771713465315041020773 0ustar pelegrinpelegrin/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_cp.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This method copies a given old mapping **/ /** as a mapping result. **/ /** **/ /** DATES : # Version 6.0 : from : 16 jan 2012 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_CP #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "parser.h" #include "kgraph.h" #include "kgraph_map_cp.h" #include "kgraph_map_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the k-way partitioning. ** It returns: ** - 0 : if k-partition could be computed. ** - 1 : on error. */ /* TODO handle the case when the old and the new architectures are different. */ int kgraphMapCp ( Kgraph * restrict const grafptr) /*+ Graph +*/ { const Anum * restrict const pfixtax = grafptr->pfixtax; if (grafptr->r.m.parttax == NULL) { /* If we do not have an old partition */ errorPrint ("kgraphMapCp: inconsistent old mapping data"); return (1); } if (mapCopy (&grafptr->m, &grafptr->r.m) != 0) { errorPrint ("kgraphMapCp: cannot copy old mapping"); return (1); } if (pfixtax != NULL) { /* If we have fixed vertices */ if (mapMerge (&grafptr->m, pfixtax) != 0) { errorPrint ("kgraphMapCp: cannot merge with fixed vertices"); return (1); } } kgraphFron (grafptr); kgraphCost (grafptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (grafptr) != 0) { errorPrint ("kgraphMapCp: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/arch_deco2.c0000644000302600021200000007161113560005302020153 0ustar pelegrinpelegrin/* Copyright 2015-2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_deco2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the type-2 **/ /** decomposition-defined target **/ /** architecture. **/ /** **/ /** DATES : # Version 6.0 : from : 30 apr 2015 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_DECO2 #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "arch_deco2.h" #include "arch_sub.h" /***************************************/ /* */ /* These are the type-2 decomposition- */ /* defined architecture routines. */ /* */ /***************************************/ /* This routine frees the decomposition ** architecture structures. ** It returns: ** - 0 : if the decomposition has been successfully freed. ** - !0 : on error. */ int archDeco2ArchFree ( ArchDeco2 * const archptr) { ArchDeco2Levl * levltab; if (archptr->vnumtab != NULL) memFree (archptr->vnumtab); if ((levltab = archptr->levltab) != NULL) { ArchDeco2Levl * levlptr; for (levlptr = levltab + archptr->levlmax; levlptr >= levltab; levlptr --) graphExit (&levlptr->grafdat); memFree (levltab); } if (archptr->termtab != NULL) /* Free group leader */ memFree (archptr->termtab); return (0); } /* This routine loads and computes the version-2, ** decomposition-defined architecture tables. ** It is called by archDecoArchLoad. ** It returns: ** - 0 : if the decomposition has been successfully read. ** - !0 : on error. */ int archDeco2ArchLoad2 ( ArchDeco2 * restrict const archptr, FILE * restrict const stream) { ArchSubTerm * restrict termtab; Anum termnbr; Anum termnum; ArchSubData * restrict domntab; Anum domnnbr; Anum domnnum; ArchDeco2Data * restrict doextab; ArchDeco2Levl * restrict levltab; Anum levlnbr; Anum levlnum; Anum * restrict vnumtab; Anum vnummax; Anum vnumnbr; Anum vnumnum; Gnum vertnbr; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco2) > sizeof (ArchDummy)) || (sizeof (ArchDeco2Dom) > sizeof (ArchDomDummy))) { errorPrint ("archDeco2ArchLoad2: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->termnbr) != 1) || (intLoad (stream, &archptr->levlmax) != 1) || /* Read levlnbr, not lvlmax */ (intLoad (stream, &archptr->vnumnbr) != 1) || (archptr->termnbr < 1) || (archptr->levlmax <= 0)) { errorPrint ("archDeco2ArchLoad2: bad input (1)"); return (1); } archptr->termtab = NULL; /* Assume nothing allocated yet */ archptr->vnumtab = NULL; archptr->levltab = NULL; termnbr = archptr->termnbr; domnnbr = 2 * termnbr - 1; levlnbr = archptr->levlmax --; /* Get levlmax */ if (memAllocGroup ((void **) (void *) &archptr->termtab, (size_t) (termnbr * sizeof (ArchSubTerm)), &archptr->domntab, (size_t) (domnnbr * sizeof (ArchSubData)), &archptr->doextab, (size_t) (domnnbr * sizeof (ArchDeco2Data)), NULL) == NULL) { errorPrint ("archDeco2ArchLoad2: out of memory (1)"); return (1); } termtab = archptr->termtab; domntab = archptr->domntab; doextab = archptr->doextab; for (termnum = 0; termnum < termnbr; termnum ++) { /* For all declared terminals */ if ((intLoad (stream, &termtab[termnum].domnidx) != 1) || (intLoad (stream, &termtab[termnum].termnum) != 1) || (termtab[termnum].domnidx < 0) || (termtab[termnum].domnidx >= domnnbr) || (termtab[termnum].termnum < 0)) { errorPrint ("archDeco2ArchLoad2: bad input (2)"); goto abort; } } vnummax = -1; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all declared domains */ if ((intLoad (stream, &domntab[domnnum].domnnum) != 1) || (intLoad (stream, &domntab[domnnum].domnsiz) != 1) || (intLoad (stream, &domntab[domnnum].domnwgt) != 1) || (intLoad (stream, &domntab[domnnum].termnum) != 1) || (intLoad (stream, &domntab[domnnum].dfatidx) != 1) || (intLoad (stream, &domntab[domnnum].dsubidx[0]) != 1) || (intLoad (stream, &domntab[domnnum].dsubidx[1]) != 1) || (intLoad (stream, &doextab[domnnum].levlnum) != 1) || (intLoad (stream, &doextab[domnnum].vnumidx) != 1) || (domntab[domnnum].domnnum < 0) || (domntab[domnnum].domnsiz < 1) || (domntab[domnnum].domnwgt < 1) || (domntab[domnnum].termnum < 0) || (domntab[domnnum].termnum >= termnbr) || (domntab[domnnum].dfatidx < -1) || (domntab[domnnum].dfatidx >= domnnbr) || (domntab[domnnum].dsubidx[0] < -1) || (domntab[domnnum].dsubidx[0] >= domnnbr) || (domntab[domnnum].dsubidx[1] < -1) || (domntab[domnnum].dsubidx[1] >= domnnbr) || (doextab[domnnum].levlnum < 0) || (doextab[domnnum].levlnum >= levlnbr) || (doextab[domnnum].vnumidx < 0)) { errorPrint ("archDeco2ArchLoad2: bad input (3)"); goto abort; } if (doextab[domnnum].vnumidx > vnummax) /* Keep track of max index */ vnummax = doextab[domnnum].vnumidx; } if ((levltab = memAlloc (levlnbr * sizeof (ArchDeco2Levl))) == NULL) { errorPrint ("archDeco2ArchLoad2: out of memory (2)"); goto abort; } archptr->levltab = levltab; for (levlnum = 0; levlnum < levlnbr; levlnum ++) { if (graphLoad (&levltab[levlnum].grafdat, stream, -1, 0) != 0) { errorPrint ("archDeco2ArchLoad2: bad input (4)"); archptr->levlmax = levlnum - 1; /* Only free existing levels */ goto abort; } if (intLoad (stream, &levltab[levlnum].wdiaval) != 1) { /* Read graph diameter */ errorPrint ("archDeco2ArchLoad2: bad input (5)"); archptr->levlmax = levlnum; /* Free this level as well */ goto abort; } } archptr->levlmax = levlnbr - 1; /* All levels have been read */ archptr->baseval = levltab[0].grafdat.baseval; /* Get base value */ vnumnbr = archptr->vnumnbr; if (vnummax >= vnumnbr) { errorPrint ("archDeco2ArchLoad2: bad input (6)"); goto abort; } if ((vnumtab = memAlloc (vnumnbr * sizeof (Anum))) == NULL) { errorPrint ("archDeco2ArchLoad2: out of memory (3)"); goto abort; } archptr->vnumtab = vnumtab; vertnbr = levltab[0].grafdat.vertnbr; /* Size of largest graph */ for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all vertex indices */ if ((intLoad (stream, &vnumtab[vnumnum]) != 1) || (vnumtab[vnumnum] < 0) || (vnumtab[vnumnum] >= vertnbr)) { errorPrint ("archDeco2ArchLoad2: bad input (7)"); goto abort; } } #ifdef SCOTCH_DEBUG_ARCH1 for (domnnum = 0; domnnum < domnnbr; domnnum ++) { if (doextab[domnnum].vnumidx > vnumnbr) { errorPrint ("archDeco2ArchLoad2: bad input (8)"); goto abort; } } #endif /* SCOTCH_DEBUG_ARCH1 */ return (0); abort: archDeco2ArchFree (archptr); return (1); } /* This routine saves the given target architecture ** as compiled decomposition tables. ** It returns: ** - 0 : if the decomposition has been successfully written. ** - !0 : on error. */ int archDeco2ArchSave ( const ArchDeco2 * restrict const archptr, FILE * restrict const stream) { Anum termnum; Anum domnnum; Anum levlnum; Anum vnumnum; int o; const Anum termnbr = archptr->termnbr; const ArchSubTerm * restrict const termtab = archptr->termtab; const Anum domnnbr = archptr->domnnbr; const ArchSubData * restrict const domntab = archptr->domntab; const ArchDeco2Data * restrict const doextab = archptr->doextab; const Anum levlmax = archptr->levlmax; const ArchDeco2Levl * restrict const levltab = archptr->levltab; const Anum vnumnbr = archptr->vnumnbr; const Anum * restrict const vnumtab = archptr->vnumtab; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchDeco2) > sizeof (ArchDummy)) || (sizeof (ArchDeco2Dom) > sizeof (ArchDomDummy))) { errorPrint ("archDeco2ArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, "2\n" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\n", /* Write file header */ (Anum) archptr->termnbr, (Anum) (archptr->levlmax + 1), (Anum) archptr->vnumnbr) == EOF) { errorPrint ("archDeco2ArchSave: bad output (1)"); return (1); } for (termnum = 0; termnum < termnbr; termnum ++) { if (fprintf (stream, ANUMSTRING "\t" ANUMSTRING "\n", (Anum) termtab[termnum].domnidx, (Anum) termtab[termnum].termnum) == EOF) { errorPrint ("archDeco2ArchSave: bad output (2)"); return (1); } } for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* For all declared domains */ if (fprintf (stream, ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\t" ANUMSTRING "\n", (Anum) domntab[domnnum].domnnum, (Anum) domntab[domnnum].domnsiz, (Anum) domntab[domnnum].domnwgt, (Anum) domntab[domnnum].termnum, (Anum) domntab[domnnum].dfatidx, (Anum) domntab[domnnum].dsubidx[0], (Anum) domntab[domnnum].dsubidx[1], (Anum) doextab[domnnum].levlnum, (Anum) doextab[domnnum].vnumidx) == EOF) { errorPrint ("archDeco2ArchSave: bad output (3)"); return (1); } } for (levlnum = 0; levlnum <= levlmax; levlnum ++) { if (graphSave (&levltab[levlnum].grafdat, stream) != 0) { errorPrint ("archDeco2ArchSave: bad output (4)"); return (1); } if (fprintf (stream, ANUMSTRING "\n", (Anum) levltab[levlnum].wdiaval) == EOF) { errorPrint ("archDeco2ArchSave: bad output (5)"); return (1); } } o = 0; for (vnumnum = 0; vnumnum < (vnumnbr - 1); vnumnum ++) { if (fprintf (stream, ANUMSTRING "\t", (Anum) vnumtab[vnumnum]) == EOF) { o = 1; break; } } if (vnumnum < vnumnbr) { if (fprintf (stream, ANUMSTRING "\n", (Anum) vnumtab[vnumnum]) == EOF) o = 1; } if (o != 0) { errorPrint ("archDeco2ArchSave: bad output (6)"); return (1); } return (0); } /* This routine initializes the matching data ** structure according to the number of vertices ** to be managed. ** Its purpose is to help compute a "sub" ** architecture of a "deco2" architecture. ** Since "deco2" and "sub" architectures posess ** the same hierarchical domain structure, it ** can be re-used at no additional cost. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archDeco2MatchInit ( ArchSubMatch * restrict const matcptr, /* Use "sub" matching data structure instead of propre one */ const ArchDeco2 * restrict const archptr) { Anum termnbr; Anum termnum; Anum domnmax; Anum levlnbr; Anum multnbr; const ArchSubTerm * restrict const termtab = archptr->termtab; const ArchSubData * restrict const domntab = archptr->domntab; for (termnum = 0, termnbr = archptr->termnbr, domnmax = 0; /* Get maximum domain number */ termnum < termnbr; termnum ++) { Anum domnval; domnval = domntab[termtab[termnum].domnidx].domnnum; if (domnval > domnmax) domnmax = domnval; } for (levlnbr = 1; domnmax > 0; levlnbr ++, domnmax >>= 1) ; /* Compute maximum recursion level in bipartitioning tree */ multnbr = 1 << levlnbr; /* Maximum number of multinodes is the size of last level */ if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { errorPrint ("archDeco2MatchInit: out of memory"); return (1); } matcptr->domntab = archptr->domntab; /* Keep pointer to sub-architecture domain array */ matcptr->levlnum = matcptr->levlmax = levlnbr - 1; return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archDeco2DomNum ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const domnptr) { return (archptr->domntab[domnptr->domnidx].termnum + archptr->baseval); /* Return based terminal number from un-based number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archDeco2DomTerm ( const ArchDeco2 * const archptr, ArchDeco2Dom * const domnptr, const ArchDomNum termnum) { Gnum termtmp; termtmp = termnum - archptr->baseval; /* Un-base terminal number */ if ((termtmp < 0) || /* Check if it was not un-based */ (termtmp >= archptr->termnbr)) return (1); domnptr->domnidx = archptr->termtab[termtmp].domnidx; return (0); } /* This function returns the number of ** elements in the given domain. */ Anum archDeco2DomSize ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const domnptr) { return (archptr->domntab[domnptr->domnidx].domnsiz); } /* This function returns the weight of ** the given domain. */ Anum archDeco2DomWght ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const domnptr) { return (archptr->domntab[domnptr->domnidx].domnwgt); } /* This function returns the average distance ** between two domains, which is extracted ** from the table. */ Anum archDeco2DomDist ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const dom0ptr, const ArchDeco2Dom * const dom1ptr) { Anum levlnum; Anum levlnum0; Anum levlnum1; Anum domnidx0; Anum domnidx1; const ArchDeco2Levl * levlptr; Gnum * restrict queutab; Gnum * restrict disttax; Anum distmin; Gnum baseval; Gnum vertnbr; #ifdef SCOTCH_DEBUG_ARCH2 Anum domnnum0; Anum domnnum1; #endif /* SCOTCH_DEBUG_ARCH2 */ const ArchSubData * restrict const domntab = archptr->domntab; const ArchDeco2Data * restrict const doextab = archptr->doextab; const Gnum * restrict const vnumtab = archptr->vnumtab; domnidx0 = dom0ptr->domnidx; domnidx1 = dom1ptr->domnidx; if (domnidx0 == domnidx1) /* If same domains, zero distance */ return (0); levlnum0 = doextab[domnidx0].levlnum; levlnum1 = doextab[domnidx1].levlnum; levlnum = MAX (levlnum0, levlnum1); /* Level where to start distance computations */ levlptr = &archptr->levltab[levlnum]; /* Point to start level for distance computation */ vertnbr = levlptr->grafdat.vertnbr; /* Get upper bound on number of vertices */ #ifdef SCOTCH_DEBUG_ARCH2 if (vertnbr <= 1) { /* If coarsest graph hit without exiting before */ errorPrint ("archDeco2DomDist: internal error (1)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ #ifdef SCOTCH_DEBUG_ARCH2 domnnum0 = domntab[domnidx0].domnnum; domnnum1 = domntab[domnidx1].domnnum; if ((domntab[domnidx0].domnnum != domnnum0) || (domntab[domnidx1].domnnum != domnnum1)) { errorPrint ("archDeco2DomDist: internal error (2)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ while (levlnum0 < levlnum1) { /* Level subdomains as much as possible */ Anum domntmp0; Anum levltmp0; domntmp0 = domntab[domnidx0].dfatidx; levltmp0 = doextab[domntmp0].levlnum; if (levltmp0 > levlnum1) /* If cannot find coarser subdomain */ break; domnidx0 = domntmp0; /* Father domain becomes current domain */ levlnum0 = levltmp0; /* Set new current level for new domain */ #ifdef SCOTCH_DEBUG_ARCH2 domnnum0 >>= 1; if ((doextab[domnidx0].levlnum != levlnum0) || (domntab[domnidx0].domnnum != domnnum0)) { errorPrint ("archDeco2DomDist: internal error (3)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ } while (levlnum1 < levlnum0) { /* Level subdomains as much as possible */ Anum domntmp1; Anum levltmp1; domntmp1 = domntab[domnidx1].dfatidx; levltmp1 = doextab[domntmp1].levlnum; if (levltmp1 > levlnum0) /* If cannot find coarser subdomain */ break; domnidx1 = domntmp1; levlnum1 = levltmp1; #ifdef SCOTCH_DEBUG_ARCH2 domnnum1 >>= 1; if ((doextab[domnidx1].levlnum != levlnum1) || (domntab[domnidx1].domnnum != domnnum1)) { errorPrint ("archDeco2DomDist: internal error (4)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ } if (domnidx0 == domnidx1) /* If same domains after leveling, half distance of largest domain */ return (levlptr->grafdat.velotax[vnumtab[domnidx0]]); if (memAllocGroup ((void **) (void *) &queutab, (size_t) ((vertnbr + ARCHDECO2PASSNBR + 1) * sizeof (Anum)), /* Room for pass markers */ &disttax, (size_t) (vertnbr * sizeof (Anum)), NULL) == NULL) { errorPrint ("archDeco2DomDist: out of memory"); return (0); /* Nothing to free because group allocation failed */ } baseval = levlptr->grafdat.baseval; disttax -= baseval; while (1) { /* As long as coarsest graph not hit */ const Gnum * restrict verttax; const Gnum * restrict vendtax; const Gnum * restrict velotax; const Gnum * restrict edgetax; const Gnum * restrict edlotax; Gnum vertnum0; Gnum vertnum1; Anum domntmp0; Anum domntmp1; Gnum queuheadidx; Gnum queutailidx; int passnbr; int flagval; vertnum0 = vnumtab[doextab[domnidx0].vnumidx - (levlnum - levlnum0)]; /* Find vertices at proper level for domain indices */ vertnum1 = vnumtab[doextab[domnidx1].vnumidx - (levlnum - levlnum1)]; #ifdef SCOTCH_DEBUG_ARCH2 if ((vertnum0 < 0) || (vertnum0 >= vertnbr) || (vertnum1 < 0) || (vertnum1 >= vertnbr)) { errorPrint ("archDeco2DomDist: internal error (5)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ distmin = GNUMMAX; flagval = 1; verttax = levlptr->grafdat.verttax; vendtax = levlptr->grafdat.vendtax; velotax = levlptr->grafdat.velotax; edgetax = levlptr->grafdat.edgetax; edlotax = levlptr->grafdat.edlotax; memSet (disttax + baseval, ~0, vertnbr * sizeof (Gnum)); /* Set flag and distance array to -1 */ disttax[vertnum0] = (velotax != NULL) ? ((velotax[vertnum0] + velotax[vertnum1]) / 2) /* Account for half of traversal costs of end vertices */ : 0; passnbr = ARCHDECO2PASSNBR; queutab[0] = vertnum0; queutab[1] = -1; /* Enqueue pass marker as end of pass 0 */ queutailidx = 0; queuheadidx = 2; while (queutailidx != queuheadidx) { Gnum vertnum; Gnum edgenum; Gnum edgennd; Gnum distval; loop: vertnum = queutab[queutailidx ++]; /* Get vertex number from queue */ if (vertnum < 0) { /* If vertex is pass marker */ if (passnbr == 0) /* If vertex found or passes exhausted */ break; queutab[queuheadidx ++] = vertnum; /* Re-enqueue pass marker */ passnbr --; /* One more pass completed */ goto loop; /* Get another vertex number from queue */ } distval = disttax[vertnum]; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum vertend; Gnum disttmp; vertend = edgetax[edgenum]; disttmp = distval + ((edlotax != NULL) ? edlotax[edgenum] : 1); if (vertend == vertnum1) { /* If path to end vertex found */ if (disttmp < distmin) distmin = disttmp; passnbr = 0; /* Abort at end of this pass */ flagval = 0; /* Record path found for this pass */ } else { disttmp += (velotax != NULL) ? velotax[vertend] : 0; /* Vertex will have to be traversed fully */ if (disttax[vertend] < 0) { /* If vertex not already considered */ queutab[queuheadidx ++] = vertend; /* Enqueue new vertex */ disttax[vertend] = disttmp; } else if (disttax[vertend] > disttmp) /* If path improves distance at this pass */ disttax[vertend] = disttmp; } } } if (flagval == 0) /* If path found, don't search in coarser graphs */ break; levlnum ++; levlptr ++; /* Consider coarser level */ vertnbr = levlptr->grafdat.vertnbr; /* Reduce size of work arrays */ domntmp0 = domntab[domnidx0].dfatidx; /* For both subdomains independently */ if (doextab[domntmp0].levlnum <= levlnum) { /* If father domain is at proper level */ domnidx0 = domntmp0; /* Father domain becomes current domain */ levlnum0 = levlnum; /* Set new current level for new domain */ #ifdef SCOTCH_DEBUG_ARCH2 domnnum0 >>= 1; if ((doextab[domnidx0].levlnum != levlnum0) || (domntab[domnidx0].domnnum != domnnum0)) { errorPrint ("archDeco2DomDist: internal error (6)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ } domntmp1 = domntab[domnidx1].dfatidx; if (doextab[domntmp1].levlnum <= levlnum) { domnidx1 = domntmp1; levlnum1 = levlnum; #ifdef SCOTCH_DEBUG_ARCH2 domnnum1 >>= 1; if ((doextab[domnidx1].levlnum != levlnum1) || (domntab[domnidx1].domnnum != domnnum1)) { errorPrint ("archDeco2DomDist: internal error (7)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ } if (domnidx0 == domnidx1) { /* If same domains after leveling, half distance of largest domain */ distmin = levlptr->grafdat.velotax[vnumtab[domnidx0]]; break; } #ifdef SCOTCH_DEBUG_ARCH2 if (vertnbr <= 1) { /* If coarsest graph hit without exiting before */ errorPrint ("archDeco2DomDist: internal error (8)"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ } memFree (queutab); /* Free group leader */ return (distmin); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDeco2DomFrst ( const ArchDeco2 * const archptr, ArchDeco2Dom * restrict const domnptr) { domnptr->domnidx = 0; /* First domain index is slot 0 */ return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDeco2DomLoad ( const ArchDeco2 * const archptr, ArchDeco2Dom * restrict const domnptr, FILE * restrict const stream) { if ((intLoad (stream, &domnptr->domnidx) != 1) || (domnptr->domnidx < 0) || (domnptr->domnidx >= archptr->domnnbr)) { errorPrint ("archDeco2DomLoad: bad input"); return (1); } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDeco2DomSave ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const domnptr, FILE * restrict const stream) { if (fprintf (stream, ANUMSTRING " ", (Anum) domnptr->domnidx) == EOF) { errorPrint ("archDeco2DomSave: bad output"); return (1); } return (0); } /* This function tries to split a ** decomposition domain into two ** subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archDeco2DomBipart ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const domnptr, ArchDeco2Dom * restrict const dom0ptr, ArchDeco2Dom * restrict const dom1ptr) { Anum dom0idx; dom0idx = archptr->domntab[domnptr->domnidx].dsubidx[0]; if (dom0idx < 0) /* If domain is terminal */ return (1); dom0ptr->domnidx = dom0idx; dom1ptr->domnidx = archptr->domntab[domnptr->domnidx].dsubidx[1]; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archDeco2DomIncl ( const ArchDeco2 * const archptr, const ArchDeco2Dom * const dom0ptr, const ArchDeco2Dom * const dom1ptr) { Anum dom0num; Anum dom1num; for (dom1num = archptr->domntab[dom1ptr->domnidx].domnnum, dom0num = archptr->domntab[dom0ptr->domnidx].domnnum; dom1num != 0; dom1num >>= 1) if (dom1num == dom0num) return (1); return (0); } /* This function creates the MPI_Datatype for ** decomposition-described domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archDeco2DomMpiType ( const ArchDeco2 * const archptr, MPI_Datatype * const typeptr) { *typeptr = ANUM_MPI; return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/common_string.c0000644000302600021200000001076413560005430021044 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_string.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are common routines used **/ /** by all modules. **/ /** **/ /** DATES : # Version 5.1 : from : 23 jul 2010 **/ /** to 23 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include #include "common.h" /********************************/ /* */ /* String substitution routine. */ /* */ /********************************/ static void stringSubst2 ( char * const bsrcptr, char * const bdstptr, const char * const pattstr, const char * const replstr, const int pattsiz, const int replsiz) { char * pattptr; int pattidx; pattptr = strstr (bsrcptr, pattstr); /* Search for the pattern in the remaining source string */ pattidx = (pattptr == NULL) ? (strlen (bsrcptr) + 1): (pattptr - bsrcptr); /* Get length of unchanged part */ if (replsiz < pattsiz) /* If replacement is smaller, pre-move unchanged part */ memMov (bdstptr, bsrcptr, pattidx * sizeof (char)); if (pattptr != NULL) /* If remaining part of string has to be processed */ stringSubst2 (pattptr + pattsiz, bdstptr + pattidx + replsiz, pattstr, replstr, pattsiz, replsiz); if (replsiz > pattsiz) /* If replacement is longer, post-move unchanged part */ memMov (bdstptr, bsrcptr, pattidx * sizeof (char)); if (pattptr != NULL) /* If there is something to replace */ memCpy (bdstptr + pattidx, replstr, replsiz * sizeof (char)); /* Write replacement string */ return; } void stringSubst ( char * const buffptr, /* String to search into */ const char * const pattstr, /* Pattern to search for */ const char * const replstr) /* Replacement string */ { int pattsiz; int replsiz; pattsiz = strlen (pattstr); replsiz = strlen (replstr); stringSubst2 (buffptr, buffptr, pattstr, replstr, pattsiz, replsiz); } scotch_6.0.9/src/libscotch/dgraph_fold.c0000644000302600021200000011003013560005435020427 0ustar pelegrinpelegrin/* Copyright 2007-2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the distributed **/ /** source graph folding function. **/ /** **/ /** DATES : # Version 5.0 : from : 10 aug 2006 **/ /** to : 27 jun 2008 **/ /** # Version 5.1 : from : 12 nov 2008 **/ /** to : 04 jan 2011 **/ /** # Version 6.0 : from : 28 sep 2014 **/ /** to : 28 sep 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_fold.h" #include "dgraph_fold_comm.h" /******************************/ /* */ /* This routine handles */ /* distributed source graphs. */ /* */ /******************************/ /* This routine builds a folded graph by merging graph ** data to the processes of the first half or to the ** second half of the communicator. ** The key value of the folded communicator is not ** changed as it is not relevant. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphFold ( const Dgraph * restrict const orggrafptr, const int partval, /* 0 for first half, 1 for second half */ Dgraph * restrict const fldgrafptr, const void * restrict const orgdataptr, /* Un-based array of data which must be folded, e.g. coarmulttab */ void ** restrict const flddataptr, /* Un-based array of data which must be folded, e.g. coarmulttab */ MPI_Datatype datatype) { int fldprocnbr; int fldprocnum; /* Index of local process in folded communicator */ int fldproccol; /* Color of receiver or not wanted in communicator */ MPI_Comm fldproccomm; /* Communicator of folded part */ int o; fldprocnbr = (orggrafptr->procglbnbr + 1) / 2; fldprocnum = orggrafptr->proclocnum; if (partval == 1) { fldprocnum = fldprocnum - fldprocnbr; fldprocnbr = orggrafptr->procglbnbr - fldprocnbr; } fldproccol = ((fldprocnum >= 0) && (fldprocnum < fldprocnbr)) ? 0 : MPI_UNDEFINED; if (MPI_Comm_split (orggrafptr->proccomm, fldproccol, fldprocnum, &fldproccomm) != MPI_SUCCESS) { errorPrint ("dgraphFold: communication error"); return (1); } o = dgraphFold2 (orggrafptr, partval, fldgrafptr, fldproccomm, orgdataptr, flddataptr, datatype); fldgrafptr->prockeyval = fldproccol; /* Key of folded communicator is always zero if no duplication occurs */ return (o); } int dgraphFold2 ( const Dgraph * restrict const orggrafptr, const int partval, /* 0 for first half, 1 for second half */ Dgraph * restrict const fldgrafptr, MPI_Comm fldproccomm, const void * restrict const orgdataptr, /* Un-based array of data which must be kept, e.g. coarmulttab */ void ** restrict const flddataptr, /* Un-based array of data which must be kept, e.g. coarmulttab */ MPI_Datatype datatype) { int fldcommtypval; /* Type of communication for this process */ DgraphFoldCommData * restrict fldcommdattab; /* Array of two communication data */ Gnum * restrict fldcommvrttab; /* Starting global send indices of communications */ Gnum * restrict fldvertidxtab; /* Start indices of vertex arrays */ Gnum * restrict fldedgeidxtab; /* Start indices of edge arrays */ Gnum * restrict fldedgecnttab; /* Number of edges exchanged during each communication */ Gnum * restrict fldedgecnptab; /* Temporary save for fldedgecnttab for MPI standard */ Gnum fldvertlocnbr; /* Number of vertices in local folded part */ Gnum fldedgelocsiz; /* (Upper bound of) number of edges in folded graph */ Gnum fldedlolocsiz; /* (Upper bound of) number of edge loads in folded graph */ int fldprocglbnbr; int fldproclocnum; /* Index of local process in folded communicator */ int fldvertadjnbr; Gnum * restrict fldvertadjtab; /* Array of global start indices for adjustment slots */ Gnum * restrict fldvertdlttab; /* Array of index adjustments for original global indices */ int cheklocval; int chekglbval; int commmax; int commnbr; int requnbr; MPI_Request * restrict requtab; int infosiz; /* Size of one information */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (orggrafptr->vendloctax != (orggrafptr->vertloctax + 1)) { errorPrint ("dgraphFold2: graph must be compact"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ fldprocglbnbr = (orggrafptr->procglbnbr + 1) / 2; if (partval == 1) { fldproclocnum = orggrafptr->proclocnum - fldprocglbnbr; fldprocglbnbr = orggrafptr->procglbnbr - fldprocglbnbr; } else fldproclocnum = orggrafptr->proclocnum; fldcommtypval = ((fldproclocnum >= 0) && (fldproclocnum < fldprocglbnbr)) ? DGRAPHFOLDCOMMRECV : DGRAPHFOLDCOMMSEND; if (orgdataptr != NULL) MPI_Type_size (datatype, &infosiz); cheklocval = 0; fldcommdattab = NULL; fldvertidxtab = NULL; if (fldcommtypval == DGRAPHFOLDCOMMRECV) { /* If we are going to receive */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (fldgrafptr == NULL) { errorPrint ("dgraphFold2: invalid parameters (1)"); return (1); } if (fldproccomm == MPI_COMM_NULL) { errorPrint ("dgraphFold2: invalid parameters (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ memSet (fldgrafptr, 0, sizeof (Dgraph)); /* Pre-initialize graph fields */ fldgrafptr->proccomm = fldproccomm; fldgrafptr->procglbnbr = fldprocglbnbr; fldgrafptr->proclocnum = fldproclocnum; fldgrafptr->flagval = DGRAPHFREEALL | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; /* For premature freeing on error */ if (memAllocGroup ((void **) (void *) /* Allocate distributed graph private data */ &fldgrafptr->procdsptab, (size_t) ((fldprocglbnbr + 1) * sizeof (Gnum)), &fldgrafptr->proccnttab, (size_t) (fldprocglbnbr * sizeof (Gnum)), &fldgrafptr->procngbtab, (size_t) (fldprocglbnbr * sizeof (int)), &fldgrafptr->procrcvtab, (size_t) (fldprocglbnbr * sizeof (int)), &fldgrafptr->procsndtab, (size_t) (fldprocglbnbr * sizeof (int)), NULL) == NULL) { errorPrint ("dgraphFold2: out of memory (1)"); cheklocval = 1; } else if (dgraphFoldComm (orggrafptr, partval, &commmax, &fldcommtypval, &fldcommdattab, &fldcommvrttab, /* Process can become a sender receiver */ fldgrafptr->proccnttab, &fldvertadjnbr, &fldvertadjtab, &fldvertdlttab) != 0) { errorPrint ("dgraphFold2: cannot compute folding communications (1)"); cheklocval = 1; } else { Gnum fldvelolocnbr; if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver */ int i; for (i = 0, fldvertlocnbr = 0; (i < commmax) && (fldcommdattab[i].procnum != -1); i ++) fldvertlocnbr += fldcommdattab[i].vertnbr; commnbr = i; fldedgelocsiz = orggrafptr->edgeglbsmx * i; /* Upper bound on received edges */ if ((orggrafptr->degrglbmax > 0) && (fldvertlocnbr < (fldedgelocsiz / orggrafptr->degrglbmax))) /* Choose best upper bound on number of edges (avoid multiply overflow) */ fldedgelocsiz = fldvertlocnbr * orggrafptr->degrglbmax; fldedgelocsiz += orggrafptr->edgelocnbr; /* Add local edges and vertices */ fldvertlocnbr += orggrafptr->vertlocnbr; } else { /* Process is a sender receiver */ fldvertlocnbr = fldcommvrttab[0] - orggrafptr->procvrttab[orggrafptr->proclocnum]; /* Communications will remove vertices */ fldedgelocsiz = orggrafptr->vertloctax[fldvertlocnbr + orggrafptr->baseval] - orggrafptr->baseval; /* Exact number of edges */ fldgrafptr->edgelocnbr = fldgrafptr->edgelocsiz = fldedgelocsiz; } fldvelolocnbr = (orggrafptr->veloloctax != NULL) ? fldvertlocnbr : 0; if (memAllocGroup ((void **) (void *) /* Allocate distributed graph public data */ &fldgrafptr->vertloctax, (size_t) ((fldvertlocnbr + 1) * sizeof (Gnum)), &fldgrafptr->vnumloctax, (size_t) ( fldvertlocnbr * sizeof (Gnum)), &fldgrafptr->veloloctax, (size_t) ( fldvelolocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphFold2: out of memory (2)"); cheklocval = 1; } else if (fldgrafptr->vertloctax -= orggrafptr->baseval, fldgrafptr->vnumloctax -= orggrafptr->baseval, fldgrafptr->vendloctax = fldgrafptr->vertloctax + 1, /* Folded graph is compact */ fldgrafptr->veloloctax = ((orggrafptr->veloloctax != NULL) ? (fldgrafptr->veloloctax - orggrafptr->baseval) : NULL), fldedlolocsiz = ((orggrafptr->edloloctax != NULL) ? fldedgelocsiz : 0), (fldgrafptr->edgeloctax = memAlloc ((fldedgelocsiz + fldedlolocsiz) * sizeof (Gnum))) == NULL) { /* Allocate single array for both edge arrays */ errorPrint ("dgraphFold2: out of memory (3)"); cheklocval = 1; } else { if (orgdataptr != NULL) { if ((*flddataptr = (byte *) memAlloc (fldvertlocnbr * infosiz)) == NULL) { errorPrint ("dgraphFold2: out of memory (4)"); cheklocval = 1; } } fldgrafptr->edgeloctax -= orggrafptr->baseval; /* Do not care about the validity of edloloctax at this stage */ } } } else { /* Process is a sender */ #ifdef SCOTCH_DEBUG_HDGRAPH2 if (fldproccomm != MPI_COMM_NULL) { errorPrint ("dgraphFold2: invalid parameters (3)"); return (1); } #endif /* SCOTCH_DEBUG_HDGRAPH2 */ if (dgraphFoldComm (orggrafptr, partval, &commmax, &fldcommtypval, &fldcommdattab, &fldcommvrttab, NULL, NULL, NULL, NULL) != 0) { errorPrint ("dgraphFold2: cannot compute folding communications (2)"); cheklocval = 1; } } if ((cheklocval == 0) && (memAllocGroup ((void **) (void *) /* Allocate folding data */ &fldvertidxtab, (size_t) (commmax * sizeof (Gnum)), &fldedgeidxtab, (size_t) (commmax * sizeof (Gnum)), &fldedgecnttab, (size_t) (commmax * sizeof (Gnum)), &fldedgecnptab, (size_t) (commmax * sizeof (Gnum)), &requtab, (size_t) (commmax * DGRAPHFOLDTAGNBR * sizeof (MPI_Request)), NULL) == NULL)) { errorPrint ("dgraphFold2: out of memory (5)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, orggrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (1)"); chekglbval = 1; } #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) { if ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) { if (fldvertidxtab != NULL) memFree (fldvertidxtab); /* Free group leader */ if (fldcommdattab != NULL) memFree (fldcommdattab); dgraphExit (fldgrafptr); } return (1); } requnbr = 0; /* Communications without further processing are placed at beginning of array */ if ((fldcommtypval & DGRAPHFOLDCOMMSEND) != 0) { /* If process is (also) a sender */ Gnum vertsndbas; Gnum vertsndnbr; int i; vertsndnbr = ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) ? (fldcommvrttab[0] - orggrafptr->procvrttab[orggrafptr->proclocnum]) : 0; /* If process is also a receiver, start sending after kept vertices */ for (i = 0, vertsndbas = orggrafptr->baseval; /* For all send communications to perform */ (i < commmax) && (fldcommdattab[i].procnum != -1) && (cheklocval == 0); i ++) { vertsndbas += vertsndnbr; vertsndnbr = fldcommdattab[i].vertnbr; fldvertidxtab[i] = vertsndbas; fldedgeidxtab[i] = orggrafptr->vertloctax[vertsndbas]; fldedgecnptab[i] = /* Save fldedgecnttab in temporary array to read it while MPI communication in progress */ fldedgecnttab[i] = orggrafptr->vertloctax[vertsndbas + vertsndnbr] - orggrafptr->vertloctax[vertsndbas]; /* Graph is compact */ if (MPI_Isend (&fldedgecnptab[i], 1, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVLBLLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (2)"); cheklocval = 1; } } commnbr = i; for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->vertloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVERTLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (3)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->edgeloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGEDGELOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (4)"); cheklocval = 1; } } if (orggrafptr->veloloctax != NULL) { for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Isend (orggrafptr->veloloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVELOLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (5)"); cheklocval = 1; } } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { int procsndnum; /* Rank of process to send to */ procsndnum = fldcommdattab[i].procnum; if ((orggrafptr->edloloctax != NULL) && (MPI_Isend (orggrafptr->edloloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, procsndnum, TAGFOLD + TAGEDLOLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("dgraphFold2: communication error (6)"); cheklocval = 1; } else if ((orggrafptr->vnumloctax != NULL) && (MPI_Isend (orggrafptr->vnumloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, procsndnum, TAGFOLD + TAGVNUMLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("dgraphFold2: communication error (7)"); cheklocval = 1; } else if ((orgdataptr != NULL) && (MPI_Isend ((byte *) orgdataptr + ((fldvertidxtab[i] - orggrafptr->baseval) * infosiz), fldcommdattab[i].vertnbr, datatype, procsndnum, TAGFOLD + TAGDATALOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("dgraphFold2: communication error (8)"); cheklocval = 1; } } } /* Communications of sender-receivers will be completed in the receiving phase */ if ((fldcommtypval & DGRAPHFOLDCOMMRECV) != 0) { /* If process is (also) a receiver */ Gnum orgvertlocnbr; Gnum orgvertlocnnd; Gnum orgvertlocmin; Gnum orgvertlocmax; Gnum fldvertlocadj; Gnum fldvelolocsum; Gnum fldedgelocnum; Gnum fldedgelocnnd; int fldprocnum; int procngbmin; int procngbmax; int i; const Gnum * restrict const orgedgeloctax = orggrafptr->edgeloctax; Gnum * restrict const fldedgeloctax = fldgrafptr->edgeloctax; fldgrafptr->procvrttab = fldgrafptr->procdsptab; /* Graph does not have holes */ fldgrafptr->procdsptab[0] = orggrafptr->baseval; /* Build private data of folded graph and array */ for (fldprocnum = 0; fldprocnum < fldprocglbnbr; fldprocnum ++) /* New subdomain indices start from baseval */ fldgrafptr->procdsptab[fldprocnum + 1] = fldgrafptr->procdsptab[fldprocnum] + fldgrafptr->proccnttab[fldprocnum]; if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver */ Gnum fldedgelocbas; Gnum fldvertrcvbas; Gnum fldvertrcvnbr; for (i = 0, fldvertrcvbas = orggrafptr->vertlocnnd, fldvertrcvnbr = 0; /* For all receive communications to perform */ (i < commnbr) && (cheklocval == 0); i ++) { fldvertrcvbas += fldvertrcvnbr; fldvertrcvnbr = fldcommdattab[i].vertnbr; fldvertidxtab[i] = fldvertrcvbas; if (MPI_Irecv (&fldedgecnttab[i], 1, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVLBLLOCTAB, orggrafptr->proccomm, &requtab[DGRAPHFOLDTAGENBR * commmax + i]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (9)"); cheklocval = 1; } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { /* Let these communications progress while we process the edge size messages */ if (MPI_Irecv (fldgrafptr->vertloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVERTLOCTAB, orggrafptr->proccomm, &requtab[DGRAPHFOLDTAGVERT * commmax + i]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (10)"); cheklocval = 1; } } MPI_Waitall (commnbr, &requtab[DGRAPHFOLDTAGENBR * commmax], MPI_STATUSES_IGNORE); for (i = 0, fldedgelocbas = orggrafptr->vertloctax[orggrafptr->vertlocnnd]; (i < commnbr) && (cheklocval == 0); i ++) { fldedgeidxtab[i] = fldedgelocbas; fldedgelocbas += fldedgecnttab[i]; if (MPI_Irecv (fldgrafptr->edgeloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGEDGELOCTAB, orggrafptr->proccomm, &requtab[DGRAPHFOLDTAGEDGE * commmax + i]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (11)"); cheklocval = 1; } } fldgrafptr->edgelocnbr = /* Get number of local edges */ fldgrafptr->edgelocsiz = fldedgelocbas - orggrafptr->baseval; if (orggrafptr->veloloctax != NULL) { for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Irecv (fldgrafptr->veloloctax + fldvertidxtab[i], fldcommdattab[i].vertnbr, GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGVELOLOCTAB, orggrafptr->proccomm, &requtab[DGRAPHFOLDTAGVELO * commmax + i]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (12)"); cheklocval = 1; } } } if (orggrafptr->edloloctax != NULL) { fldgrafptr->edloloctax = fldgrafptr->edgeloctax + fldgrafptr->edgelocnbr; /* Set start index of edge load array */ for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { if (MPI_Irecv (fldgrafptr->edloloctax + fldedgeidxtab[i], fldedgecnttab[i], GNUM_MPI, fldcommdattab[i].procnum, TAGFOLD + TAGEDLOLOCTAB, orggrafptr->proccomm, &requtab[DGRAPHFOLDTAGEDLO * commmax + i]) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (13)"); cheklocval = 1; } } } for (i = 0; (i < commnbr) && (cheklocval == 0); i ++) { int procrcvnum; /* Rank of process to receive from */ Gnum vertrcvnbr; procrcvnum = fldcommdattab[i].procnum; vertrcvnbr = fldcommdattab[i].vertnbr; if ((orggrafptr->vnumloctax != NULL) && (MPI_Irecv (fldgrafptr->vnumloctax + fldvertidxtab[i], vertrcvnbr, GNUM_MPI, procrcvnum, TAGFOLD + TAGVNUMLOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("dgraphFold2: communication error (14)"); cheklocval = 1; } else if ((orgdataptr != NULL) && (MPI_Irecv ((byte *) (*flddataptr) + ((fldvertidxtab[i] - orggrafptr->baseval) * infosiz), vertrcvnbr, datatype, procrcvnum, TAGFOLD + TAGDATALOCTAB, orggrafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS)) { errorPrint ("dgraphFold2: communication error (15)"); cheklocval = 1; } } orgvertlocnbr = orggrafptr->vertlocnbr; /* Process all local vertices */ orgvertlocnnd = orggrafptr->vertlocnnd; if (orggrafptr->vnumloctax == NULL) { /* If original graph does not have vertex numbers, create remote parts of vertex number array */ Gnum fldvertlocnum; Gnum fldvertlocadj; int i; Gnum * restrict const fldvnumloctax = fldgrafptr->vnumloctax; for (i = 0, fldvertlocnum = orgvertlocnnd; i < commnbr; i ++) { Gnum fldvertlocnnd; for (fldvertlocnnd = fldvertlocnum + fldcommdattab[i].vertnbr, fldvertlocadj = fldcommvrttab[i]; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvnumloctax[fldvertlocnum] = fldvertlocadj ++; } } fldedgelocnnd = orggrafptr->vertloctax[orggrafptr->vertlocnnd]; fldvelolocsum = orggrafptr->velolocsum; /* In case there are vertex loads, we keep all of existing load */ } else { /* Receiver process is also a sender */ orgvertlocnbr = fldvertlocnbr; /* Process only remaining local vertices */ orgvertlocnnd = fldvertlocnbr + orggrafptr->baseval; if (orggrafptr->veloloctax != NULL) { /* If original graph has vertex loads */ Gnum fldvertlocnum; for (fldvertlocnum = orggrafptr->baseval, fldvelolocsum = 0; /* Accumulate load sum of remaining part */ fldvertlocnum < orgvertlocnnd; fldvertlocnum ++) fldvelolocsum += orggrafptr->veloloctax[fldvertlocnum]; } fldedgelocnnd = orggrafptr->vertloctax[orgvertlocnnd]; /* Reorder remaining local part of edge array */ if (orggrafptr->edloloctax != NULL) fldgrafptr->edloloctax = fldgrafptr->edgeloctax + fldgrafptr->edgelocnbr; /* Set start index of edge load array */ commnbr = 0; /* Turn sender-receiver into normal receiver without any communications to perform */ } for (procngbmin = 0, procngbmax = fldvertadjnbr; /* Initialize search accelerator */ procngbmax - procngbmin > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbmin) / 2; if (fldvertadjtab[procngbmed] <= orggrafptr->procvrttab[orggrafptr->proclocnum]) procngbmin = procngbmed; else procngbmax = procngbmed; } orgvertlocmin = fldvertadjtab[procngbmin]; orgvertlocmax = fldvertadjtab[procngbmax]; fldvertlocadj = fldvertdlttab[procngbmin]; for (fldedgelocnum = orggrafptr->baseval; fldedgelocnum < fldedgelocnnd; fldedgelocnum ++) { Gnum orgvertlocend; orgvertlocend = orgedgeloctax[fldedgelocnum]; if ((orgvertlocend >= orgvertlocmin) && /* If end vertex is local */ (orgvertlocend < orgvertlocmax)) fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertlocadj; else { /* End vertex is not local */ int procngbnum; int procngbmax; for (procngbnum = 0, procngbmax = fldvertadjnbr; procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fldvertadjtab[procngbmed] <= orgvertlocend) procngbnum = procngbmed; else procngbmax = procngbmed; } fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertdlttab[procngbnum]; } } if (orggrafptr->veloloctax != NULL) /* If original graph has vertex loads */ memCpy (fldgrafptr->veloloctax + orggrafptr->baseval, /* Copy local part of vertex load array */ orggrafptr->veloloctax + orggrafptr->baseval, orgvertlocnbr * sizeof (Gnum)); if (orggrafptr->edloloctax != NULL) /* If original graph has edge loads */ memCpy (fldgrafptr->edloloctax + orggrafptr->baseval, /* Copy local part of edge load array */ orggrafptr->edloloctax + orggrafptr->baseval, (orggrafptr->vertloctax[orgvertlocnnd] - orggrafptr->baseval) * sizeof (Gnum)); if (orggrafptr->vnumloctax != NULL) /* If original graph has vertex numbers */ memCpy (fldgrafptr->vnumloctax + orggrafptr->baseval, /* Copy local part of vertex number array */ orggrafptr->vnumloctax + orggrafptr->baseval, orgvertlocnbr * sizeof (Gnum)); else { /* Build local part of vertex number array */ Gnum fldvertlocnum; Gnum fldvertlocadj; for (fldvertlocnum = orggrafptr->baseval, fldvertlocadj = orggrafptr->procvrttab[orggrafptr->proclocnum]; fldvertlocnum < orgvertlocnnd; fldvertlocnum ++) fldgrafptr->vnumloctax[fldvertlocnum] = fldvertlocadj ++; } memCpy (fldgrafptr->vertloctax + orggrafptr->baseval, /* Copy local part of vertex array, since it is compact */ orggrafptr->vertloctax + orggrafptr->baseval, orgvertlocnbr * sizeof (Gnum)); /* Last value is not copied */ fldgrafptr->vertloctax[fldvertlocnbr + orggrafptr->baseval] = fldgrafptr->edgelocnbr + orggrafptr->baseval; if (orgdataptr != NULL) /* If additional data present */ memCpy ((byte *) (*flddataptr), (byte *) orgdataptr, orgvertlocnbr * infosiz); /* Copy local part */ for (i = 0; i < commnbr; i ++) { int j; if (MPI_Waitany (commnbr, &requtab[DGRAPHFOLDTAGVERT * commmax], &j, MPI_STATUS_IGNORE) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (16)"); cheklocval = 1; } else { /* Adjust first remote part of vertex array */ Gnum fldvertlocnum; Gnum fldvertlocnnd; Gnum fldvertlocadj; Gnum * restrict const fldvertloctax = fldgrafptr->vertloctax; fldvertlocnum = fldvertidxtab[j]; fldvertlocadj = fldedgeidxtab[j] - fldgrafptr->vertloctax[fldvertlocnum]; for (fldvertlocnnd = fldvertlocnum + fldcommdattab[j].vertnbr; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvertloctax[fldvertlocnum] += fldvertlocadj; } } for (i = 0; i < commnbr; i ++) { MPI_Status statdat; int j; if (MPI_Waitany (commnbr, &requtab[DGRAPHFOLDTAGEDGE * commmax], &j, &statdat) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (17)"); cheklocval = 1; } else if (cheklocval == 0) { /* Adjust remote part(s) of edge array */ Gnum orgvertlocmin; Gnum orgvertlocmax; Gnum fldvertlocadj; int procngbnum; int procngbmax; Gnum * restrict const fldedgeloctax = fldgrafptr->edgeloctax; #ifdef SCOTCH_DEBUG_DGRAPH2 int fldedgercvnbr; MPI_Get_count (&statdat, GNUM_MPI, &fldedgercvnbr); if (fldedgercvnbr != fldedgecnttab[j]) { errorPrint ("dgraphFold2: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (procngbnum = 0, procngbmax = fldvertadjnbr; /* Initialize search accelerator */ procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fldvertadjtab[procngbmed] <= fldcommvrttab[j]) procngbnum = procngbmed; else procngbmax = procngbmed; } orgvertlocmin = fldvertadjtab[procngbnum]; orgvertlocmax = fldvertadjtab[procngbmax]; fldvertlocadj = fldvertdlttab[procngbnum]; for (fldedgelocnum = fldedgeidxtab[j], fldedgelocnnd = fldedgelocnum + fldedgecnttab[j]; fldedgelocnum < fldedgelocnnd; fldedgelocnum ++) { /* Reorder end vertices */ Gnum orgvertlocend; #ifdef SCOTCH_DEBUG_DGRAPH2 if (fldedgelocnum >= (fldgrafptr->edgelocnbr + orggrafptr->baseval)) { errorPrint ("dgraphFold2: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ orgvertlocend = fldedgeloctax[fldedgelocnum]; if ((orgvertlocend >= orgvertlocmin) && /* If end vertex is local */ (orgvertlocend < orgvertlocmax)) fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertlocadj; else { int procngbnum; int procngbmax; for (procngbnum = 0, procngbmax = fldvertadjnbr; procngbmax - procngbnum > 1; ) { int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fldvertadjtab[procngbmed] <= orgvertlocend) procngbnum = procngbmed; else procngbmax = procngbmed; } fldedgeloctax[fldedgelocnum] = orgvertlocend + fldvertdlttab[procngbnum]; } } } } if (orggrafptr->veloloctax == NULL) /* If no vertex loads, reset graph vertex load to number of vertices */ fldvelolocsum = fldvertlocnbr; else { /* Graph has vertex loads and load of local part has already been computed */ for (i = 0; i < commnbr; i ++) { int j; if (MPI_Waitany (commnbr, &requtab[DGRAPHFOLDTAGVELO * commmax], &j, MPI_STATUS_IGNORE) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (18)"); cheklocval = 1; } else if (cheklocval == 0) { /* Accumulate vertex loads for received vertex load array */ Gnum fldvertlocnum; Gnum fldvertlocnnd; for (fldvertlocnum = fldvertidxtab[j], fldvertlocnnd = fldvertlocnum + fldcommdattab[j].vertnbr; fldvertlocnum < fldvertlocnnd; fldvertlocnum ++) fldvelolocsum += fldgrafptr->veloloctax[fldvertlocnum]; } } } if ((fldcommtypval & DGRAPHFOLDCOMMSEND) == 0) { /* If process is a normal receiver, edge arrays may have been oversized */ Gnum fldedgeloctmp; fldedgeloctmp = fldgrafptr->edgelocnbr; if (orggrafptr->edloloctax != NULL) { fldedgeloctmp *= 2; if (MPI_Waitall (commnbr, &requtab[DGRAPHFOLDTAGEDLO * commmax], MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for edge load sub-arrays */ errorPrint ("dgraphFold2: communication error (19)"); cheklocval = 1; } } fldgrafptr->edgeloctax = memRealloc (fldgrafptr->edgeloctax + orggrafptr->baseval, fldedgeloctmp * sizeof (Gnum)); fldgrafptr->edgeloctax -= orggrafptr->baseval; if (orggrafptr->edloloctax != NULL) fldgrafptr->edloloctax = fldgrafptr->edgeloctax + fldgrafptr->edgelocnbr; } fldgrafptr->baseval = orggrafptr->baseval; fldgrafptr->vertlocnbr = fldvertlocnbr; fldgrafptr->vertlocnnd = fldvertlocnbr + orggrafptr->baseval; fldgrafptr->velolocsum = fldvelolocsum; fldgrafptr->degrglbmax = orggrafptr->degrglbmax; if (dgraphBuild4 (fldgrafptr) != 0) { errorPrint ("dgraphFold2: cannot build folded graph"); dgraphExit (fldgrafptr); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (fldgrafptr) != 0) { /* Check graph consistency; vnumloctab is not checked so no need to wait for it */ errorPrint ("dgraphFold2: internal error (3)"); dgraphExit (fldgrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } memFree (fldcommdattab); /* Free group leader */ if (MPI_Waitall (requnbr, requtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for all graph data to arrive because graph could be freed afterwards */ errorPrint ("dgraphFold2: communication error (20)"); cheklocval = 1; } memFree (fldvertidxtab); /* Free group leader including request array */ #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, orggrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphFold2: communication error (21)"); chekglbval = 1; } #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ return (chekglbval); } scotch_6.0.9/src/libscotch/graph_coarsen_edge.c0000644000302600021200000002034413470115365021771 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2012 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_coarsen_edge.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This commodity file contains the edge **/ /** arrays building subroutine which is **/ /** duplicated, with minor modifications, **/ /** into graph_coarsen.c. **/ /** **/ /** DATES : # Version 4.0 : from : 17 dec 2001 **/ /** to 25 feb 2004 **/ /** # Version 5.0 : from : 13 dec 2006 **/ /** to 14 dec 2006 **/ /** # Version 5.1 : from : 30 oct 2009 **/ /** to 30 oct 2009 **/ /** # Version 6.0 : from : 28 oct 2012 **/ /** to 28 feb 2015 **/ /** **/ /************************************************************/ static void GRAPHCOARSENEDGENAME ( GraphCoarsenThread * thrdptr) { Gnum coarvertnum; Gnum coarvertnnd; Gnum coaredgenum; Gnum coardegrmax; Gnum coaredloadj; /* Edge load sum adjust with respect to fine graph edge load sum */ GraphCoarsenData * restrict coarptr = (GraphCoarsenData *) (thrdptr->thrddat.grouptr); const Graph * restrict const finegrafptr = coarptr->finegrafptr; const Gnum * restrict const fineverttax = finegrafptr->verttax; const Gnum * restrict const finevendtax = finegrafptr->vendtax; const Gnum * restrict const finevelotax = finegrafptr->velotax; const Gnum * restrict const fineedgetax = finegrafptr->edgetax; Gnum * restrict const finecoartax = coarptr->finematetax; const Graph * restrict const coargrafptr = coarptr->coargrafptr; #ifndef GRAPHCOARSENEDGECOUNT Gnum * restrict const coarverttax = coargrafptr->verttax; Gnum * restrict const coarvelotax = coargrafptr->velotax; Gnum * restrict const coaredgetax = coargrafptr->edgetax; Gnum * restrict const coaredlotax = coargrafptr->edlotax; #endif /* GRAPHCOARSENEDGECOUNT */ GraphCoarsenHash * restrict const coarhashtab = thrdptr->coarhashtab; /* Hash table is thread-dependent for memory locality */ const Gnum coarhashmsk = coarptr->coarhashmsk; const GraphCoarsenMulti * restrict const coarmulttax = coarptr->coarmulttab - finegrafptr->baseval; GRAPHCOARSENEDGEINIT; coaredloadj = 0; for (coarvertnum = thrdptr->coarvertbas, coardegrmax = 0, /* For all local coarse vertices */ coarvertnnd = thrdptr->coarvertnnd, coaredgenum = thrdptr->coaredgebas; coarvertnum < coarvertnnd; coarvertnum ++) { Gnum finevertnum; int i; #ifndef GRAPHCOARSENEDGECOUNT /* If we do not only want to count */ Gnum coarveloval; /* Load of coarse vertex */ Gnum coaredgetmp; /* Current index in edge array */ coarverttax[coarvertnum] = /* Set vertex edge index */ coaredgetmp = coaredgenum; coarveloval = 0; #endif /* GRAPHCOARSENEDGECOUNT */ i = 0; do { /* For all fine edges of multinode vertices */ Gnum fineedgenum; finevertnum = coarmulttax[coarvertnum].vertnum[i]; #ifndef GRAPHCOARSENEDGECOUNT /* If we do not only want to count */ coarveloval += (finevelotax != NULL) ? finevelotax[finevertnum] : 1; #endif /* GRAPHCOARSENEDGECOUNT */ for (fineedgenum = fineverttax[finevertnum]; fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum coarvertend; /* Number of coarse vertex which is end of fine edge */ Gnum h; coarvertend = finecoartax[fineedgetax[fineedgenum]]; if (coarvertend != coarvertnum) { /* If not end of collapsed edge */ for (h = (coarvertend * GRAPHCOARSENHASHPRIME) & coarhashmsk; ; h = (h + 1) & coarhashmsk) { if (coarhashtab[h].vertorgnum != coarvertnum) { /* If old slot */ coarhashtab[h].vertorgnum = coarvertnum; /* Mark it in reference array */ coarhashtab[h].vertendnum = coarvertend; coarhashtab[h].edgenum = coaredgenum; #ifndef GRAPHCOARSENEDGECOUNT /* If we do not only want to count */ coaredgetax[coaredgenum] = coarvertend; /* One more edge created */ GRAPHCOARSENEDGEEDLOINIT; /* Initialize edge load entry */ #endif /* GRAPHCOARSENEDGECOUNT */ coaredgenum ++; break; /* Give up hashing */ } if (coarhashtab[h].vertendnum == coarvertend) { /* If coarse edge already exists */ #ifndef GRAPHCOARSENEDGECOUNT GRAPHCOARSENEDGEEDLOADD; /* Accumulate edge load */ #endif /* GRAPHCOARSENEDGECOUNT */ break; /* Give up hashing */ } } } #ifndef GRAPHCOARSENEDGECOUNT else { GRAPHCOARSENEDGEEDLOSUB; } #endif /* GRAPHCOARSENEDGECOUNT */ } } while (i ++, finevertnum != coarmulttax[coarvertnum].vertnum[1]); /* Skip to next matched vertex if both vertices not equal */ #ifndef GRAPHCOARSENEDGECOUNT /* If we do not only want to count */ coarvelotax[coarvertnum] = coarveloval; /* Create coarse vertex load array */ coaredgetmp = coaredgenum - coaredgetmp; /* Compute degree of current vertex */ if (coardegrmax < coaredgetmp) coardegrmax = coaredgetmp; #endif /* GRAPHCOARSENEDGECOUNT */ } /* End of (local) edge array not marked since will be done by next or main thread */ thrdptr->coaredgebas = coaredgenum; /* Record counted number of edges */ #ifndef GRAPHCOARSENEDGECOUNT thrdptr->coaredloadj = coaredloadj; thrdptr->coardegrmax = coardegrmax; #endif /* GRAPHCOARSENEDGECOUNT */ } scotch_6.0.9/src/libscotch/bdgraph_store.c0000644000302600021200000001731113560005346021012 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_store.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for dis- **/ /** tributed bipartition graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 22 oct 2008 **/ /** # Version 6.0 : from : 11 sep 2011 **/ /** to 11 sep 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_STORE #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "bdgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int bdgraphStoreInit ( const Bdgraph * restrict const grafptr, BdgraphStore * restrict const storptr) { Gnum savsize; savsize = grafptr->s.vertlocnbr * (sizeof (GraphPart) + sizeof (Gnum)); /* Compute size for frontier and part arrays */ if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("bdgraphStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void bdgraphStoreExit ( BdgraphStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_BDGRAPH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void bdgraphStoreSave ( const Bdgraph * const grafptr, BdgraphStore * const storptr) { byte * partloctab; /* Pointer to part data save area */ byte * fronloctab; /* Pointer to frontier data save area */ storptr->fronlocnbr = grafptr->fronlocnbr; /* Save partition parameters */ storptr->fronglbnbr = grafptr->fronglbnbr; storptr->complocload0 = grafptr->complocload0; storptr->compglbload0 = grafptr->compglbload0; storptr->compglbload0dlt = grafptr->compglbload0dlt; storptr->complocsize0 = grafptr->complocsize0; storptr->compglbsize0 = grafptr->compglbsize0; storptr->commglbload = grafptr->commglbload; storptr->commglbgainextn = grafptr->commglbgainextn; fronloctab = storptr->datatab; /* Compute data offsets within save structure */ partloctab = fronloctab + grafptr->fronlocnbr * sizeof (Gnum); if (grafptr->fronloctab != NULL) /* If frontier array allocated */ memCpy (fronloctab, grafptr->fronloctab, grafptr->fronlocnbr * sizeof (Gnum)); #ifdef SCOTCH_DEBUG_BDGRAPH2 else if (grafptr->fronglbnbr != 0) errorPrint ("bdgraphStoreSave: inconsistent graph data (1)"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ if (grafptr->partgsttax != NULL) memCpy (partloctab, grafptr->partgsttax + grafptr->s.baseval, grafptr->s.vertlocnbr * sizeof (GraphPart)); else { #ifdef SCOTCH_DEBUG_BDGRAPH2 if (grafptr->compglbload0 != grafptr->s.veloglbsum) errorPrint ("bdgraphStoreSave: inconsistent graph data (2)"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ memSet (partloctab, 0, grafptr->s.vertlocnbr * sizeof (GraphPart)); /* In case part array is allocated before update */ } } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void bdgraphStoreUpdt ( Bdgraph * const grafptr, const BdgraphStore * const storptr) { byte * fronloctab; /* Pointer to frontier data save area */ byte * partloctab; /* Pointer to part data save area */ grafptr->fronlocnbr = storptr->fronlocnbr; /* Save partition parameters */ grafptr->fronglbnbr = storptr->fronglbnbr; grafptr->complocload0 = storptr->complocload0; grafptr->compglbload0 = storptr->compglbload0; grafptr->compglbload0dlt = storptr->compglbload0dlt; grafptr->complocsize0 = storptr->complocsize0; grafptr->compglbsize0 = storptr->compglbsize0; grafptr->commglbload = storptr->commglbload; grafptr->commglbgainextn = storptr->commglbgainextn; grafptr->bbalglbval = (double) ((grafptr->compglbload0dlt < 0) ? (- grafptr->compglbload0dlt) : grafptr->compglbload0dlt) / (double) grafptr->compglbload0avg; fronloctab = storptr->datatab; /* Compute data offsets within save structure */ partloctab = fronloctab + grafptr->fronlocnbr * sizeof (Gnum); if (grafptr->fronloctab != NULL) memCpy (grafptr->fronloctab, fronloctab, grafptr->fronlocnbr * sizeof (Gnum)); #ifdef SCOTCH_DEBUG_BDGRAPH2 else if (grafptr->fronglbnbr != 0) errorPrint ("bdgraphStoreUpdt: inconsistent graph data (1)"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ if (grafptr->partgsttax != NULL) memCpy (grafptr->partgsttax + grafptr->s.baseval, partloctab, grafptr->s.vertlocnbr * sizeof (GraphPart)); #ifdef SCOTCH_DEBUG_BDGRAPH2 else if (grafptr->compglbload0 != grafptr->s.veloglbsum) errorPrint ("bdgraphStoreUpdt: inconsistent graph data (2)"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (grafptr) != 0) errorPrint ("bdgraphStoreUpdt: inconsistent graph data (3)"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } scotch_6.0.9/src/libscotch/vgraph.h0000644000302600021200000001200313470115365017457 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for vertex separation routines. **/ /** **/ /** DATES : # Version 3.2 : from : 24 aug 1996 **/ /** to : 17 oct 1997 **/ /** # Version 3.3 : from : 13 mar 1999 **/ /** to : 13 mar 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to : 07 jan 2002 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ #define VGRAPH_H /* ** The type and structure definitions. */ /*+ Active graph structure. +*/ typedef struct Vgraph_ { Graph s; /*+ Source graph +*/ GraphPart * parttax; /*+ Based part array: 0,1: part; 2: separator +*/ Gnum compload[3]; /*+ Size of both parts and separator +*/ Gnum comploaddlt; /*+ Load difference between both parts +*/ Gnum compsize[2]; /*+ Number of vertices in parts (separator is fronnbr) +*/ Gnum fronnbr; /*+ Number of frontier vertices; TRICK: compsize[2] +*/ Gnum * frontab; /*+ Array of frontier vertex numbers +*/ Gnum levlnum; /*+ Nested dissection or coarsening level +*/ } Vgraph; /*+ The graph separator storing structure. +*/ typedef struct VgraphStore_ { Gnum fronnbr; /*+ Number of frontier nodes +*/ Gnum comploaddlt; /*+ Difference from the average +*/ Gnum compload[2]; /*+ Load in both parts +*/ Gnum compsize0; /*+ Number of vertices in part 0 +*/ byte * datatab; /*+ Variable-sized data array +*/ } VgraphStore; /* ** The function prototypes. */ void vgraphExit (Vgraph * const); void vgraphZero (Vgraph * const); int vgraphCheck (const Vgraph * const); int vgraphStoreInit (const Vgraph * const, VgraphStore * const); void vgraphStoreExit (VgraphStore * const); void vgraphStoreSave (const Vgraph * const , VgraphStore * const); void vgraphStoreUpdt (Vgraph * const, const VgraphStore * const); scotch_6.0.9/src/libscotch/library_dorder.c0000644000302600021200000000645613560013261021175 0ustar pelegrinpelegrin/* Copyright 2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dorder.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling distributed **/ /** graph orderings. **/ /** **/ /** DATES : # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /*****************************************/ /* */ /* These routines are the C API for */ /* ordering structure handling routines. */ /* */ /*****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** distributed ordering structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Dordering * SCOTCH_dorderAlloc () { return ((SCOTCH_Dordering *) memAlloc (sizeof (SCOTCH_Dordering))); } scotch_6.0.9/src/libscotch/dgraph_match_sync_ptop.c0000644000302600021200000006146613560005435022717 0ustar pelegrinpelegrin/* Copyright 2008,2009,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_match_sync_ptop.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed graph matching **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2008 **/ /** to : 22 apr 2009 **/ /** # Version 6.0 : from : 03 apr 2012 **/ /** to : 03 apr 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_MATCH #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "dgraph_match.h" /*************************************/ /* */ /* These routines handle distributed */ /* source graphs. */ /* */ /*************************************/ /* This routine performs a round of point-to-point ** communication to synchronize enqueued matching ** requests across processors. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphMatchSyncPtop ( DgraphMatchData * restrict const mateptr) { Gnum queulocnbr; Gnum queulocnum; Gnum matelocnbr; Gnum multlocnbr; Gnum vertlocadj; Gnum edgekptnbr; int procngbnbr; int procngbidx; int procngbnum; int vrcvreqnbr; Dgraph * restrict const grafptr = mateptr->c.finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; int * restrict const procgsttax = mateptr->c.procgsttax; const Gnum * restrict const procvgbtab = mateptr->procvgbtab; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; Gnum * restrict const queuloctab = mateptr->queuloctab; Gnum * restrict const mategsttax = mateptr->mategsttax; DgraphCoarsenMulti * restrict const multloctab = mateptr->c.multloctab; int * restrict const nsndidxtab = mateptr->c.nsndidxtab; DgraphCoarsenVert * const vsnddattab = mateptr->c.vsnddattab; /* [norestrict:async] */ procngbnbr = grafptr->procngbnbr; #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgeloctax == NULL) { errorPrint ("dgraphMatchSyncPtop: not implemented"); return (1); } if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) /* Reset indices for sending messages */ nsndidxtab[procngbnum] = mateptr->c.vsnddsptab[procngbtab[procngbnum]]; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; for (queulocnum = 0, queulocnbr = mateptr->queulocnbr; queulocnum < queulocnbr; queulocnum ++) { Gnum vertlocnum; Gnum vertgstnum; Gnum edgelocnum; Gnum mategstnum; Gnum mateglbnum; int procngbnum; int vsndidxnum; vertlocnum = queuloctab[queulocnum]; /* Get local vertex index */ mategstnum = mategsttax[vertlocnum]; /* Get mate (edge ?) index */ if (mategstnum >= -1) /* If vertex not willing to mate or matched locally after being considered during matching phase */ continue; edgelocnum = -2 - mategstnum; /* Get local edge to mate ghost vertex */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((edgelocnum < grafptr->baseval) || (edgelocnum >= (grafptr->edgelocsiz + grafptr->baseval)) || (mategsttax[edgegsttax[edgelocnum]] != -1)) { errorPrint ("dgraphMatchSyncPtop: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mateglbnum = edgeloctax[edgelocnum]; vertgstnum = edgegsttax[edgelocnum]; procngbnum = procgsttax[vertgstnum]; /* Find neighbor owner process */ if (procngbnum < 0) { /* If neighbor not yet computed */ int procngbmax; procngbnum = 0; procngbmax = procngbnbr; while ((procngbmax - procngbnum) > 1) { /* Find owner process by dichotomy on procvgbtab */ int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (procvgbtab[procngbmed] > mateglbnum) procngbmax = procngbmed; else procngbnum = procngbmed; } procgsttax[vertgstnum] = procngbnum; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procvrttab[procngbtab[procngbnum]] > mateglbnum) || (grafptr->procvrttab[procngbtab[procngbnum] + 1] <= mateglbnum)) { errorPrint ("dgraphMatchSyncPtop: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vsndidxnum = nsndidxtab[procngbnum] ++; /* Get position of message in send array */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (vsndidxnum >= mateptr->c.vsnddsptab[procngbtab[procngbnum] + 1]) { errorPrint ("dgraphMatchSyncPtop: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vsnddattab[vsndidxnum].datatab[0] = vertlocnum + vertlocadj; vsnddattab[vsndidxnum].datatab[1] = mateglbnum; } for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { /* Post receives of mating requests in descending order */ int procngbnum; int procglbnum; procngbnum = (mateptr->c.procngbnxt + (procngbnbr - 1) - procngbidx) % procngbnbr; procglbnum = procngbtab[procngbnum]; if (MPI_Irecv (mateptr->c.vrcvdattab + mateptr->c.vrcvdsptab[procglbnum], 2 * (mateptr->c.vrcvdsptab[procglbnum + 1] - mateptr->c.vrcvdsptab[procglbnum]), GNUM_MPI, procglbnum, TAGMATCH, grafptr->proccomm, &mateptr->c.nrcvreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (2)"); return (1); } } for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { /* Post sends of mating requests in ascending order */ int procngbnum; int procglbnum; procngbnum = (procngbidx + mateptr->c.procngbnxt) % procngbnbr; procglbnum = procngbtab[procngbnum]; if (MPI_Isend (vsnddattab + mateptr->c.vsnddsptab[procglbnum], 2 * (nsndidxtab[procngbnum] - mateptr->c.vsnddsptab[procglbnum]), GNUM_MPI, procglbnum, TAGMATCH, grafptr->proccomm, &mateptr->c.nsndreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (3)"); return (1); } } matelocnbr = mateptr->matelocnbr; multlocnbr = mateptr->c.multlocnbr; edgekptnbr = mateptr->c.edgekptnbr; for (vrcvreqnbr = procngbnbr; vrcvreqnbr > 0; vrcvreqnbr --) { /* For all pending receive requests */ int procglbnum; int procngbnum; int vrcvidxnnd; int requrcvnum; int requnxtnum; /* Index of location where to pack requests to process when all messages arrive */ MPI_Status statdat; int statsiz; int o; #ifdef SCOTCH_DETERMINISTIC procngbnum = vrcvreqnbr - 1; o = MPI_Wait (&mateptr->c.nrcvreqtab[procngbnum], &statdat); #else /* SCOTCH_DETERMINISTIC */ o = MPI_Waitany (procngbnbr, mateptr->c.nrcvreqtab, &procngbnum, &statdat); #endif /* SCOTCH_DETERMINISTIC */ if ((o != MPI_SUCCESS) || (MPI_Get_count (&statdat, GNUM_MPI, &statsiz) != MPI_SUCCESS)) { errorPrint ("dgraphMatchSyncPtop: communication error (4)"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (statdat.MPI_SOURCE != procngbtab[procngbnum]) { errorPrint ("dgraphMatchSyncPtop: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ procglbnum = procngbtab[procngbnum]; vrcvidxnnd = mateptr->c.vrcvdsptab[procglbnum]; if (statsiz <= 0) { /* If query message is empty */ mateptr->c.nrcvidxtab[procngbnum] = -1; /* No need to send a reply */ continue; /* Skip message processing */ } else { Gnum vertsndnbr; /* Number of vertices to be sent to requesting neighbor */ Gnum edgesndnbr; /* Number of edges to be sent to requesting neighbor */ DgraphCoarsenVert * restrict const vrcvdattab = mateptr->c.vrcvdattab; /* Local restrict pointer only when data available (has been received) */ vertsndnbr = edgesndnbr = 0; for (requrcvnum = requnxtnum = vrcvidxnnd, vrcvidxnnd += (statsiz / 2); /* TRICK: each message item costs 2 Gnum's */ requrcvnum < vrcvidxnnd; requrcvnum ++) { Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum vmatglbnum; /* Global number of requesting mate (sender of message) */ Gnum mategstnum; /* The mate we wanted to ask for */ vmatglbnum = vrcvdattab[requrcvnum].datatab[0]; /* Names are opposite because receiving side */ vertglbnum = vrcvdattab[requrcvnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching request is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphMatchSyncPtop: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mategstnum = mategsttax[vertlocnum]; /* Get our local mating decision data */ if (mategstnum == -1) { /* If local vertex wanted for mating is free */ Gnum edgelocnum; for (edgelocnum = vertloctax[vertlocnum]; edgeloctax[edgelocnum] != vmatglbnum; edgelocnum ++) { #ifdef SCOTCH_DEBUG_DGRAPH2 if (edgelocnum >= vendloctax[vertlocnum]) { errorPrint ("dgraphMatchSyncPtop: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } mategsttax[edgegsttax[edgelocnum]] = vertglbnum; /* We are no longer free */ mategsttax[vertlocnum] = vmatglbnum; /* Leave message as is to acknowledge it */ matelocnbr ++; vertsndnbr ++; edgesndnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else if (mategstnum < -1) { /* If local vertex is also asking for mating */ Gnum edgelocnum; Gnum mateglbnum; edgelocnum = -2 - mategstnum; mateglbnum = edgeloctax[edgelocnum]; /* Get global number of our remote mate */ if (mateglbnum == vmatglbnum) { /* If it is with the sender */ Gnum flagval; /* Flag for choosing side to create multinode */ mategsttax[vertlocnum] = mateglbnum; /* Say we are mated to inform future requesting processes in same pass */ mategsttax[edgegsttax[edgelocnum]] = vertglbnum; flagval = (mateglbnum > vertglbnum) ? 1 : 0; /* Compute pseudo-random flag always opposite for both ends */ flagval = ((mateglbnum + (mateglbnum - vertglbnum) * flagval) & 1) ^ flagval; if (flagval == 0) { /* If flag is even, create multinode */ multloctab[multlocnbr].vertglbnum[0] = vertglbnum; multloctab[multlocnbr].vertglbnum[1] = mategstnum; /* Remote mate: negative value */ multlocnbr ++; /* One more coarse vertex created */ edgekptnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else { /* If flag is odd, prepare to send vertex data at build time */ vertsndnbr ++; edgesndnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } /* Go on by destroying message in all cases since both ends know what it is about */ vrcvdattab[requrcvnum --] = vrcvdattab[-- vrcvidxnnd]; /* Replace current message with another one and process it */ matelocnbr ++; /* One more local vertex mated on each side; no messages will tell it */ } else { /* If willing to mate but not with the sender, tell later with whom */ DgraphCoarsenVert vertdat; /* Temporary storage data for swapping vertices */ vertdat = vrcvdattab[requnxtnum]; /* Pack requests to process later at beginning of message */ vrcvdattab[requnxtnum].datatab[0] = vmatglbnum; vrcvdattab[requnxtnum].datatab[1] = -2 - vertlocnum; /* Build appropriate answer to mating request later, when all messages arrived */ if (requnxtnum ++ != requrcvnum) vrcvdattab[requrcvnum] = vertdat; /* Swap vertices if not already at the right place */ } } else /* If already matched, inform sender */ vrcvdattab[requrcvnum].datatab[1] = mategstnum; } mateptr->c.dcntloctab[procglbnum].vertsndnbr += vertsndnbr; mateptr->c.dcntloctab[procglbnum].edgesndnbr += edgesndnbr; } mateptr->c.nrcvidxtab[procngbnum] = vrcvidxnnd; } if (MPI_Waitall (procngbnbr, mateptr->c.nsndreqtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for send requests of mating requests to complete */ errorPrint ("dgraphMatchSyncPtop: communication error (5)"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (6)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vrcvreqnbr = procngbnbr; /* Count number of receive requests we will have to consider */ for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { /* Post receives of mating replies in descending order */ int procngbnum; int procglbnum; procngbnum = (mateptr->c.procngbnxt + (procngbnbr - 1) - procngbidx) % procngbnbr; procglbnum = procngbtab[procngbnum]; if (nsndidxtab[procngbnum] <= mateptr->c.vsnddsptab[procglbnum]) { /* If we had sent an empty query message, do not expect any reply */ mateptr->c.nrcvreqtab[procngbnum] = MPI_REQUEST_NULL; vrcvreqnbr --; /* One less receive request to wait for */ continue; } if (MPI_Irecv (vsnddattab + mateptr->c.vsnddsptab[procglbnum], 2 * (mateptr->c.vsnddsptab[procglbnum + 1] - mateptr->c.vsnddsptab[procglbnum]), GNUM_MPI, procglbnum, TAGMATCH + 1, grafptr->proccomm, &mateptr->c.nrcvreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (7)"); return (1); } } for (procngbidx = 0; procngbidx < procngbnbr; procngbidx ++) { /* Post sends of mating requests in ascending order */ int procngbnum; int procglbnum; int vsndidxnnd; procngbnum = (procngbidx + mateptr->c.procngbnxt) % procngbnbr; procglbnum = procngbtab[procngbnum]; vsndidxnnd = mateptr->c.nrcvidxtab[procngbnum]; /* Re-send (or not) the messages we have received to acknowledge */ if (vsndidxnnd >= 0) { /* If we had received a non-empty message (but reply might be empty) */ int vsndidxnum; DgraphCoarsenVert * restrict const vrcvdattab = mateptr->c.vrcvdattab; /* Local restrict pointer only when data available */ for (vsndidxnum = mateptr->c.vrcvdsptab[procglbnum]; /* Finalize unfinished messages */ vsndidxnum < vsndidxnnd; vsndidxnum ++) { Gnum vertlocnum; Gnum mateglbnum; vertlocnum = vrcvdattab[vsndidxnum].datatab[1]; if (vertlocnum >= 0) /* If no more unfinished messages to process, quit scanning */ break; vertlocnum = -2 - vertlocnum; mateglbnum = mategsttax[vertlocnum]; if (mateglbnum >= 0) /* If vertex we wanted to mate with has been mated in this round */ vrcvdattab[vsndidxnum].datatab[1] = mateglbnum; /* Propagate this information back to the requester */ else { /* Vertex mating data not yet available (maybe in answer) */ vrcvdattab[vsndidxnum] = vrcvdattab[-- vsndidxnnd]; /* Remove message as no reply means not willing */ if (vrcvdattab[vsndidxnum].datatab[1] < 0) /* If replacing message is also to be processed */ vsndidxnum --; /* Do not skip replaced message in next iteration */ } } if (MPI_Isend (vrcvdattab + mateptr->c.vrcvdsptab[procglbnum], 2 * (vsndidxnnd - mateptr->c.vrcvdsptab[procglbnum]), GNUM_MPI, procglbnum, TAGMATCH + 1, grafptr->proccomm, &mateptr->c.nsndreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (8)"); return (1); } } #ifdef SCOTCH_DEBUG_DGRAPH2 else { if (mateptr->c.nsndreqtab[procngbnum] != MPI_REQUEST_NULL) { /* Should have been set by previous MPI_Waitall() */ errorPrint ("dgraphMatchSyncPtop: internal error (7)"); return (1); } } #endif /* SCOTCH_DEBUG_DGRAPH2 */ } #ifdef SCOTCH_DETERMINISTIC vrcvreqnbr = procngbnbr; /* For deterministic behavior, consider all neighbors in order, whether communicating or not */ #endif /* SCOTCH_DETERMINISTIC */ for ( ; vrcvreqnbr > 0; vrcvreqnbr --) { /* For all pending receive requests */ int vrcvidxnnd; int vrcvidxnum; int procngbnum; MPI_Status statdat; int statsiz; int o; #ifdef SCOTCH_DETERMINISTIC procngbnum = vrcvreqnbr - 1; if (mateptr->c.nrcvreqtab[procngbnum] == MPI_REQUEST_NULL) /* If we do not expect this message, skip it */ continue; o = MPI_Wait (&mateptr->c.nrcvreqtab[procngbnum], &statdat); #else /* SCOTCH_DETERMINISTIC */ o = MPI_Waitany (procngbnbr, mateptr->c.nrcvreqtab, &procngbnum, &statdat); #endif /* SCOTCH_DETERMINISTIC */ if ((o != MPI_SUCCESS) || (MPI_Get_count (&statdat, GNUM_MPI, &statsiz) != MPI_SUCCESS)) { errorPrint ("dgraphMatchSyncPtop: communication error (9)"); return (1); } for (vrcvidxnum = mateptr->c.vsnddsptab[procngbtab[procngbnum]], vrcvidxnnd = vrcvidxnum + (statsiz / 2); /* TRICK: each message item costs 2 Gnum's */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum edgelocnum; Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum vmatglbnum; /* Global number of vertex to which the mate is mated */ Gnum mategstnum; /* The mate we wanted to ask for */ vertglbnum = vsnddattab[vrcvidxnum].datatab[0]; vmatglbnum = vsnddattab[vrcvidxnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching reply is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphMatchSyncPtop: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ mategstnum = mategsttax[vertlocnum]; /* Get our local mating decision data */ edgelocnum = -2 - mategstnum; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((mategstnum >= -1) || /* If we did not ask anything or if we were already matched, no reply message should come to us */ ((mategsttax[edgegsttax[edgelocnum]] >= 0) && /* Also, if our prospective mate was itself already set as matched by a previous reply */ (mategsttax[edgegsttax[edgelocnum]] != vertglbnum) && /* And this message is not the positive reply which acknowledges this mating */ (mategsttax[edgegsttax[edgelocnum]] != vmatglbnum))) { /* Or an informative negative reply which gives again the mate of the ghost */ errorPrint ("dgraphMatchSyncPtop: internal error (9)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (edgeloctax[edgelocnum] == vmatglbnum) { /* If positive answer from the mate we wanted */ mategsttax[vertlocnum] = vmatglbnum; /* Set local vertex as matched with the mate */ mategsttax[edgegsttax[edgelocnum]] = vertglbnum; /* Update state of ghost mate */ multloctab[multlocnbr].vertglbnum[0] = vertglbnum; multloctab[multlocnbr].vertglbnum[1] = mategstnum; /* Remote mate: negative value */ multlocnbr ++; /* One more coarse vertex created */ matelocnbr ++; edgekptnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; } else { /* If negative answer from the mate we wanted */ mategsttax[vertlocnum] = -1; /* Reset local vertex as free for mating */ mategsttax[edgegsttax[edgelocnum]] = vmatglbnum; /* Update state of unwilling ghost mate */ } } } mateptr->matelocnbr = matelocnbr; mateptr->c.multlocnbr = multlocnbr; mateptr->c.edgekptnbr = edgekptnbr; if (MPI_Waitall (procngbnbr, mateptr->c.nsndreqtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for send requests of mating requests to complete */ errorPrint ("dgraphMatchSyncPtop: communication error (10)"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphMatchSyncPtop: communication error (11)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/hmesh_order_gp.c0000644000302600021200000002772513303015264021161 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_gp.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a subgraph (most **/ /** likely a separator) using the Gibbs, **/ /** Poole, and Stockmeyer algorithm. **/ /** **/ /** DATES : # Version 3.2 : from : 31 oct 1996 **/ /** to 27 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 4.0 : from : 05 nov 2002 **/ /** to : 27 jan 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH_ORDER_GP #include "module.h" #include "common.h" #include "graph.h" #include "order.h" #include "mesh.h" #include "hmesh.h" #include "hmesh_order_gp.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hmeshOrderGp ( const Hmesh * restrict const meshptr, Order * restrict const ordeptr, const Gnum ordenum, OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HmeshOrderGpParam * restrict const paraptr) { HmeshOrderGpQueue queue; /* Neighbor queue */ HmeshOrderGpVertex * restrict vexxtax; /* Based access to vertex array */ HmeshOrderGpVertex * rootptr; /* Pointer to root vertex */ Gnum passnum; /* Pass number */ int passflag; /* Flag set if diameter changed */ Gnum vdianum; /* Vertex which achieves diameter */ Gnum vdiadist; /* Maximum diameter value found */ Gnum vnodnbr; /* Number of vertices found yet */ Gnum ordeval; /* Current ordering value */ if (memAllocGroup ((void **) (void *) &queue.qtab, (size_t) ((meshptr->vnohnnd - meshptr->m.baseval) * sizeof (Gnum)), &vexxtax, (size_t) ((meshptr->m.velmnbr + meshptr->m.vnodnbr) * sizeof (HmeshOrderGpVertex)), NULL) == NULL) { errorPrint ("hmeshOrderGp: out of memory"); return (1); } vexxtax -= meshptr->m.baseval; /* Base vexxtab array */ memSet (vexxtax + meshptr->m.velmbas, 0, meshptr->m.velmnbr * sizeof (HmeshOrderGpVertex)); /* Initialize pass numbers for */ memSet (vexxtax + meshptr->m.vnodbas, 0, (meshptr->vnohnnd - meshptr->m.vnodbas) * sizeof (HmeshOrderGpVertex)); /* All but halo node vertices */ for (vnodnbr = 0, ordeval = ordenum, rootptr = vexxtax + meshptr->m.vnodbas, passnum = 1; /* For all connected components */ vnodnbr < meshptr->vnohnbr; passnum ++) { while (rootptr->passnum != 0) /* Find first unallocated root */ rootptr ++; vdianum = rootptr - vexxtax; /* Start from found root */ vdiadist = 0; for (passflag = 1; (passflag -- != 0) && (passnum <= paraptr->passnbr); passnum ++) { /* Loop if modifications */ hmeshOrderGpQueueFlush (&queue); /* Flush vertex queue */ hmeshOrderGpQueuePut (&queue, vdianum); /* Start from diameter vertex */ vexxtax[vdianum].passnum = passnum; /* It has been enqueued */ vexxtax[vdianum].vertdist = 0; /* It is at distance zero */ do { /* Loop on vertices in queue */ Gnum vnodnum; /* Number of current vertex */ Gnum vnoddist; /* Distance of current vertex */ Gnum enodnum; vnodnum = hmeshOrderGpQueueGet (&queue); /* Get vertex from queue */ vnoddist = vexxtax[vnodnum].vertdist; /* Get vertex distance */ if ((vnoddist > vdiadist) || /* If vertex increases diameter */ ((vnoddist == vdiadist) && /* Or is at diameter distance */ ((meshptr->m.vendtax[vnodnum] - meshptr->m.verttax[vnodnum]) < /* With smaller degree */ (meshptr->m.vendtax[vdianum] - meshptr->m.verttax[vdianum])))) { vdianum = vnodnum; /* Set it as new diameter vertex */ vdiadist = vnoddist; passflag = 1; } vnoddist ++; /* Set neighbor distance */ for (enodnum = meshptr->m.verttax[vnodnum]; enodnum < meshptr->m.vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; velmnum = meshptr->m.edgetax[enodnum]; /* Get neighboring element */ if (vexxtax[velmnum].passnum >= passnum) /* If element already scanned */ continue; /* Skip to next element */ vexxtax[velmnum].passnum = passnum; /* Set element as scanned */ for (eelmnum = meshptr->m.verttax[velmnum]; /* For all neighboring non-halo nodes */ eelmnum < meshptr->vehdtax[velmnum]; eelmnum ++) { Gnum vnodend; /* Neighboring node */ vnodend = meshptr->m.edgetax[eelmnum]; /* Get neighboring node */ if (vexxtax[vnodend].passnum < passnum) { /* If node vertex not yet enqueued */ hmeshOrderGpQueuePut (&queue, vnodend); /* Enqueue neighbor vertex */ vexxtax[vnodend].passnum = passnum; vexxtax[vnodend].vertdist = vnoddist; } } } } while (! hmeshOrderGpQueueEmpty (&queue)); /* As long as queue is not empty */ } hmeshOrderGpQueueFlush (&queue); /* Flush vertex queue */ hmeshOrderGpQueuePut (&queue, vdianum); /* Start from diameter vertex */ vexxtax[vdianum].passnum = passnum; /* It has been enqueued */ do { /* Loop on vertices in queue */ Gnum vnodnum; /* Number of current vertex */ Gnum vnoddist; /* Distance of current vertex */ vnodnum = hmeshOrderGpQueueGet (&queue); /* Get vertex from queue */ if (vexxtax[vnodnum].passnum > passnum) /* If vertex already ordered */ continue; /* Skip to next vertex in queue */ vnoddist = vexxtax[vnodnum].vertdist; /* Get vertex distance */ do { /* Loop on vertices in layer */ Gnum enodnum; Gnum enodnnd; ordeptr->peritab[ordeval] = (meshptr->m.vnumtax == NULL) /* Order node vertex */ ? vnodnum - (meshptr->m.vnodbas - meshptr->m.baseval) : meshptr->m.vnumtax[vnodnum]; #ifdef SCOTCH_DEBUG_ORDER2 if ((ordeptr->peritab[ordeval] < ordeptr->baseval) || (ordeptr->peritab[ordeval] >= (ordeptr->baseval + ordeptr->vnodnbr))) { errorPrint ("hmeshOrderGp: invalid permutation index"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ ordeval ++; vexxtax[vnodnum].passnum = (passnum + 1); /* Set vertex as ordered */ vnodnbr ++; /* Count it */ for (enodnum = meshptr->m.verttax[vnodnum], enodnnd = meshptr->m.vendtax[vnodnum], vnodnum = ~0; enodnum < enodnnd; enodnum ++) { /* Order node vertices with high locality */ Gnum velmnum; /* Neighboring element */ Gnum eelmnum; velmnum = meshptr->m.edgetax[enodnum]; /* Get neighboring element */ if (vexxtax[velmnum].passnum >= passnum) /* If element already scanned */ continue; /* Skip to next element */ vexxtax[velmnum].passnum = passnum; /* Set element as scanned */ for (eelmnum = meshptr->m.verttax[velmnum]; /* For all neighboring non-halo nodes */ eelmnum < meshptr->vehdtax[velmnum]; eelmnum ++) { Gnum vnodend; /* Neighboring node */ vnodend = meshptr->m.edgetax[eelmnum]; /* Get neighboring node */ if (vexxtax[vnodend].passnum <= passnum) { /* If vertex not ordered yet */ if ((vnodnum == ~0) && /* If no next vertex set yet */ (vexxtax[vnodend].vertdist == vnoddist)) /* And in same layer */ vnodnum = vnodend; /* Set neighbor as next vertex */ else if (vexxtax[vnodend].passnum < passnum) { /* If not enqueued yet */ hmeshOrderGpQueuePut (&queue, vnodend); /* Enqueue neighbor vertex */ vexxtax[vnodend].passnum = passnum; /* Set it as enqueued */ } } } } } while (vnodnum != ~0); } while (! hmeshOrderGpQueueEmpty (&queue)); /* As long as queue is not empty */ } #ifdef SCOTCH_DEBUG_ORDER2 for (ordeval = ordenum; ordeval < (ordenum + meshptr->vnohnbr); ordeval ++) { if (ordeptr->peritab[ordeval] == ~0) { errorPrint ("hmeshOrderGp: internal error"); memFree (queue.qtab); /* Free group leader */ return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ memFree (queue.qtab); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/arch_vcmplt.c0000644000302600021200000002205413560005302020461 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_vcmplt.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the variable-sized **/ /** complete graph target architecture. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 16 aug 1995 **/ /** # Version 3.1 : from : 20 jul 1996 **/ /** to 20 jul 1996 **/ /** # Version 3.2 : from : 15 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 14 sep 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 05 nov 2003 **/ /** to 05 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 26 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_VCMPLT #include "module.h" #include "common.h" #include "arch.h" #include "arch_vcmplt.h" /*****************************************/ /* */ /* These are the variable-sized complete */ /* graph handling routines. */ /* */ /*****************************************/ /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archVcmpltDomNum ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const domptr) { return (domptr->termnum); /* Return terminal number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archVcmpltDomTerm ( const ArchVcmplt * const archptr, ArchVcmpltDom * const domptr, const ArchDomNum domnum) { Anum termnum; Anum termlvl; if (domnum != ARCHDOMNOTTERM) { /* If valid label */ if (domnum == 0) /* Not a legal domain */ return (2); domptr->termnum = domnum; /* Set the domain */ for (termnum = domnum, termlvl = 0; termnum > 1; termnum >>= 1, termlvl ++) ; /* Compute level */ domptr->termlvl = termlvl; /* Set level */ return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the domain. */ Anum archVcmpltDomSize ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const domptr) { return (1); /* All domains have same size for bipartitioning */ } /* This function returns the average ** distance between two subdomains. */ Anum archVcmpltDomDist ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const dom0ptr, const ArchVcmpltDom * const dom1ptr) { return ((dom0ptr->termnum == dom1ptr->termnum) ? 0 : 1); /* All distinct terminals are at distance 1 */ } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVcmpltDomFrst ( const ArchVcmplt * const archptr, ArchVcmpltDom * restrict const domptr) { domptr->termlvl = 0; /* First terminal number */ domptr->termnum = 1; return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVcmpltDomLoad ( const ArchVcmplt * const archptr, ArchVcmpltDom * restrict const domptr, FILE * const stream) { Anum termnum; Anum termlvl; if (intLoad (stream, &domptr->termnum) != 1) { errorPrint ("archVcmpltDomLoad: bad input"); return (1); } for (termnum = domptr->termnum, termlvl = 0; termnum > 1; termnum >>= 1, termlvl ++) ; /* Compute level */ domptr->termlvl = termlvl; return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archVcmpltDomSave ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const domptr, FILE * const stream) { if (fprintf (stream, ANUMSTRING " ", (Anum) domptr->termnum) == EOF) { errorPrint ("archVcmpltDomSave: bad output"); return (1); } return (0); } /* This function splits a domain ** into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 2 : on error. */ int archVcmpltDomBipart ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const domptr, ArchVcmpltDom * restrict const dom0ptr, ArchVcmpltDom * restrict const dom1ptr) { dom0ptr->termlvl = /* Bipartition the domain */ dom1ptr->termlvl = domptr->termlvl + 1; dom0ptr->termnum = domptr->termnum << 1; dom1ptr->termnum = dom0ptr->termnum + 1; return ((dom1ptr->termnum < domptr->termnum) ? 2 : 0); /* Return error on overflow */ } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archVcmpltDomIncl ( const ArchVcmplt * const archptr, const ArchVcmpltDom * const dom0ptr, const ArchVcmpltDom * const dom1ptr) { if ((dom1ptr->termlvl >= dom0ptr->termlvl) && ((dom1ptr->termnum >> (dom1ptr->termlvl - dom0ptr->termlvl)) == dom0ptr->termnum)) return (1); return (0); } /* This function creates the MPI_Datatype for ** variable-sized complete graph domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archVcmpltDomMpiType ( const ArchVcmplt * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/library_graph_coarsen_f.c0000644000302600021200000001112713560013261023025 0ustar pelegrinpelegrin/* Copyright 2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_coarsen_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph coarsening routine of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 07 aug 2011 **/ /** to 07 aug 2011 **/ /** # Version 6.0 : from : 28 feb 2015 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the coarsening routine. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHCOARSEN, graphcoarsen, ( \ SCOTCH_Graph * const finegrafptr, \ const SCOTCH_Num * const coarvertptr, \ const double * const coarnbr, \ const SCOTCH_Num * const flagval, \ SCOTCH_Graph * const coargrafptr, \ SCOTCH_Num * const coarmulttab, \ int * const revaptr), \ (finegrafptr, coarvertptr, coarnbr, flagval, coargrafptr, coarmulttab, revaptr)) { *revaptr = SCOTCH_graphCoarsen (finegrafptr, *coarvertptr, *coarnbr, *flagval, coargrafptr, coarmulttab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHCOARSENMATCH, graphcoarsenmatch, ( \ SCOTCH_Graph * const finegrafptr, \ SCOTCH_Num * const coarvertptr, \ const double * const coarnbr, \ const SCOTCH_Num * const flagval, \ SCOTCH_Num * const finematetab, \ int * const revaptr), \ (finegrafptr, coarvertptr, coarnbr, flagval, finematetab, revaptr)) { *revaptr = SCOTCH_graphCoarsenMatch (finegrafptr, coarvertptr, *coarnbr, *flagval, finematetab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHCOARSENBUILD, graphcoarsenbuild, ( \ SCOTCH_Graph * const finegrafptr, \ SCOTCH_Num * const coarvertptr, \ SCOTCH_Num * const finematetab, \ SCOTCH_Graph * const coargrafptr, \ SCOTCH_Num * const coarmulttab, \ int * const revaptr), \ (finegrafptr, coarvertptr, finematetab, coargrafptr, coarmulttab, revaptr)) { *revaptr = SCOTCH_graphCoarsenBuild (finegrafptr, *coarvertptr, finematetab, coargrafptr, coarmulttab); } scotch_6.0.9/src/libscotch/library_dgraph_induce.c0000644000302600021200000001641513560013261022506 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the **/ /** distributed graph induction routine of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 30 aug 2012 **/ /** to 25 apr 2018 **/ /** **/ /** NOTES : # This code is directly derived from **/ /** the code of dgraphInducePart() and **/ /** of its subroutines. The only change **/ /** is that it uses Gnum's instead of **/ /** GraphPart's as part values. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "ptscotch.h" /***********************************/ /* */ /* This routine is the C API for */ /* the distributed graph induction */ /* routine. */ /* */ /***********************************/ /*+ This routine creates a distributed induced graph *** from the given graph, according to the partition *** map that is passed to the routine. *** It returns: *** - 0 : if the induced graph has been created. *** - !0 : on error. +*/ typedef struct _SCOTCHDgraphInducePartData_ { const Gnum * orgpartloctax; /* In the public interface, parts are represented as Gnum's */ Gnum indpartval; } _SCOTCHDgraphInducePartData; static Gnum _SCOTCHdgraphInducePart2 ( Dgraph * restrict const indgrafptr, Dgraph * restrict const orggrafptr, const void * restrict const orgdataptr, Gnum * restrict const orgindxgsttax) { Gnum orgvertlocnnd; Gnum orgvertlocnum; Gnum indvertlocnum; Gnum indvertglbnum; Gnum indedgelocmax; const Gnum * restrict const orgvertloctax = orggrafptr->vertloctax; const Gnum * restrict const orgvendloctax = orggrafptr->vendloctax; const Gnum * restrict const orgpartloctax = ((const _SCOTCHDgraphInducePartData * restrict const) orgdataptr)->orgpartloctax; const Gnum indpartval = ((const _SCOTCHDgraphInducePartData * restrict const) orgdataptr)->indpartval; Gnum * restrict const indvnumloctax = indgrafptr->vnumloctax; for (orgvertlocnum = indvertlocnum = orggrafptr->baseval, indvertglbnum = indgrafptr->procvrttab[indgrafptr->proclocnum], /* Fill index array while recomputing tighter upper bound on arcs */ orgvertlocnnd = orggrafptr->vertlocnnd, indedgelocmax = 0; orgvertlocnum < orgvertlocnnd; orgvertlocnum ++) { if (orgpartloctax[orgvertlocnum] == indpartval) { orgindxgsttax[orgvertlocnum] = indvertglbnum; /* Mark selected vertices */ indvnumloctax[indvertlocnum] = orgvertlocnum; indedgelocmax += orgvendloctax[orgvertlocnum] - orgvertloctax[orgvertlocnum]; indvertlocnum ++, indvertglbnum ++; } else orgindxgsttax[orgvertlocnum] = ~0; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((indvertlocnum - orggrafptr->baseval) != indgrafptr->vertlocnbr) { errorPrint ("dgraphInducePart2: inconsistent data"); dgraphExit (indgrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ return (indedgelocmax); } int SCOTCH_dgraphInducePart ( SCOTCH_Dgraph * const orggrafptr, /* Original graph */ const SCOTCH_Num * const orgpartloctab, /* Partition array */ const SCOTCH_Num indpartval, /* Part value of induced subgraph */ const SCOTCH_Num indvertlocnbr, /* Number of local vertices in part */ SCOTCH_Dgraph * const indgrafptr) /* Induced subgraph */ { _SCOTCHDgraphInducePartData orgdatadat; Gnum indvertloctmp; int o; #ifdef SCOTCH_DEBUG_LIBRARY1 MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) indgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { errorPrint (STRINGIFY (SCOTCH_dgraphInducePart) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if (indvertlocnbr < 0) { /* If number of kept vertices is not known, compute it */ Gnum orgvertlocnum; Gnum orgvertlocnbr; for (orgvertlocnum = indvertloctmp = 0, orgvertlocnbr = ((Dgraph * restrict const) orggrafptr)->vertlocnbr; orgvertlocnum < orgvertlocnbr; orgvertlocnum ++) { if (orgpartloctab[orgvertlocnum] == indpartval) indvertloctmp ++; } } else indvertloctmp = indvertlocnbr; orgdatadat.orgpartloctax = orgpartloctab - ((Dgraph *) orggrafptr)->baseval; orgdatadat.indpartval = indpartval; o = dgraphInduce2 ((Dgraph *) orggrafptr, _SCOTCHdgraphInducePart2, &orgdatadat, indvertloctmp, NULL, (Dgraph *) indgrafptr); ((Dgraph *) indgrafptr)->vnumloctax = NULL; /* Do not impact subsequent inductions */ return (o); } scotch_6.0.9/src/libscotch/vgraph_separate_bd.c0000644000302600021200000005327413470115365022022 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_bd.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : This module builds a band graph around **/ /** the frontier in order to decrease **/ /** problem size for the strategy to be **/ /** applied. **/ /** **/ /** DATES : # Version 5.0 : from : 18 oct 2004 **/ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to : 09 nov 2008 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to : 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_SEPARATE_BD #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "vgraph.h" #include "vgraph_separate_bd.h" #include "vgraph_separate_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ int vgraphSeparateBd ( Vgraph * restrict const orggrafptr, /*+ Active graph +*/ const VgraphSeparateBdParam * const paraptr) /*+ Method parameters +*/ { VgraphSeparateBdQueue queudat; /* Neighbor queue */ Gnum * restrict orgdisttax; /* Based access to distance array for original graph */ Gnum orgdistmax; /* Maximum distance allowed */ #define orgindxtax orgdisttax /* Recycle distance array as number indexing array */ Vgraph bndgrafdat; /* Band graph structure */ Gnum bndvertnbr; /* Number of regular vertices in band graph (without anchors) */ Gnum bndvertnnd; Gnum * restrict bndvnumtax; /* Band vertex number array, recycling queudat.qtab */ Gnum bndcompsize1; /* Number of regular vertices in part 1 of band graph */ Gnum bndcompload1; /* Load of regular vertices in part 1 */ Gnum bndvlvlnum; /* Index of first band graph vertex to belong to the last layer */ Gnum bndvertnum; Gnum bndvelosum; /* Load of regular vertices in band graph */ Gnum * restrict bndedgetax; Gnum bndedgenbr; /* Upper bound on the number of edges, including anchor edges */ Gnum bndeancnbr; /* Number of anchor edges */ Gnum bndedgenum; Gnum bndedgetmp; Gnum bnddegrmax; Gnum fronnum; const Gnum * restrict const orgverttax = orggrafptr->s.verttax; /* Fast accesses */ const Gnum * restrict const orgvendtax = orggrafptr->s.vendtax; const Gnum * restrict const orgvelotax = orggrafptr->s.velotax; const Gnum * restrict const orgedgetax = orggrafptr->s.edgetax; if (orggrafptr->fronnbr == 0) /* If no separator vertices, apply strategy to full graph */ return (vgraphSeparateSt (orggrafptr, paraptr->stratorg)); orgdistmax = (Gnum) paraptr->distmax; if (orgdistmax < 1) /* To simplify algorithm, always at least one layer of vertices around separator */ orgdistmax = 1; if (memAllocGroup ((void **) (void *) &queudat.qtab, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), /* TRICK: no need of "+ 2" for anchor vertices (see below) */ &orgdisttax, (size_t) (orggrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vgraphSeparateBd: out of memory (1)"); return (1); } memSet (orgdisttax, ~0, orggrafptr->s.vertnbr * sizeof (Gnum)); /* Initialize distance array */ orgdisttax -= orggrafptr->s.baseval; vgraphSeparateBdQueueFlush (&queudat); /* Flush vertex queue */ bndedgenbr = 0; /* Guess upper bound on the number of edges */ bndvelosum = 0; for (fronnum = 0; fronnum < orggrafptr->fronnbr; fronnum ++) { /* Enqueue separator vertices */ Gnum orgvertnum; orgvertnum = orggrafptr->frontab[fronnum]; #ifdef SCOTCH_DEBUG_VGRAPH2 if ((orgvertnum < orggrafptr->s.baseval) || (orgvertnum >= orggrafptr->s.vertnnd)) { errorPrint ("vgraphSeparateBd: internal error (1)"); memFree (queudat.qtab); /* Free group leader */ return (1); } if (orgdisttax[orgvertnum] != ~0) { errorPrint ("vgraphSeparateBd: internal error (2)"); memFree (queudat.qtab); /* Free group leader */ return (1); } if (orggrafptr->parttax[orgvertnum] != 2) { errorPrint ("vgraphSeparateBd: internal error (3)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ orgdisttax[orgvertnum] = 0; vgraphSeparateBdQueuePut (&queudat, orgvertnum); if (orgvelotax != NULL) bndvelosum += orgvelotax[orgvertnum]; } bndcompsize1 = 0; bndcompload1 = 0; do { /* Loop on vertices in queue */ Gnum orgvertnum; Gnum orgedgenum; Gnum orgdistval; orgvertnum = vgraphSeparateBdQueueGet (&queudat); #ifdef SCOTCH_DEBUG_VGRAPH2 if ((orgvertnum < orggrafptr->s.baseval) || (orgvertnum >= orggrafptr->s.vertnnd)) { errorPrint ("vgraphSeparateBd: internal error (4)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bndedgenbr += orgvendtax[orgvertnum] - orgverttax[orgvertnum]; /* Exact or upper bound on number of edges, including anchor edge(s) */ orgdistval = orgdisttax[orgvertnum]; /* Get vertex distance */ if (orgdistval >= orgdistmax) { /* If we belong to the farthest layer */ bndedgenbr ++; /* One more anchor edge, for the opposite */ continue; } orgdistval ++; /* Distance of neighbors */ for (orgedgenum = orgverttax[orgvertnum]; orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum orgvertend; Gnum orgpartval1; orgvertend = orgedgetax[orgedgenum]; if (orgdisttax[orgvertend] == ~0) { /* If vertex not visited yet */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (orggrafptr->parttax[orgvertend] > 1) { errorPrint ("vgraphSeparateBd: internal error (5)"); memFree (queudat.qtab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ orgpartval1 = orggrafptr->parttax[orgvertend] & 1; orgdisttax[orgvertend] = orgdistval; /* Enqueue vertex */ vgraphSeparateBdQueuePut (&queudat, orgvertend); bndcompsize1 += orgpartval1; /* Count vertices in part 1 */ if (orgvelotax != NULL) { bndvelosum += orgvelotax[orgvertend]; bndcompload1 += orgvelotax[orgvertend] * orgpartval1; } } } } while (! vgraphSeparateBdQueueEmpty (&queudat)); /* As long as queue is not empty */ bndvertnbr = queudat.head - queudat.qtab; /* Number of regular band graph vertices (withour anchors) is number of enqueued vertices */ if (orgvelotax == NULL) { bndvelosum = bndvertnbr; bndcompload1 = bndcompsize1; } if ((bndcompsize1 >= orggrafptr->compsize[1]) || /* If either part has all of its vertices in band, use plain graph instead */ ((bndvertnbr - bndcompsize1 - orggrafptr->fronnbr) >= orggrafptr->compsize[0])) { memFree (queudat.qtab); /* Free group leader */ return (vgraphSeparateSt (orggrafptr, paraptr->stratorg)); } /* TRICK: since always at least one missing vertex per part, there is room for anchor vertices */ bndvertnnd = bndvertnbr + orggrafptr->s.baseval; bndvnumtax = queudat.qtab - orggrafptr->s.baseval; /* TRICK: re-use queue array as vertex number array as vertices taken in queue order */ for (bndvertnum = orggrafptr->s.baseval; bndvertnum < bndvertnnd; bndvertnum ++) { /* For vertices not belonging to last layer */ Gnum orgvertnum; orgvertnum = bndvnumtax[bndvertnum]; /* Get distance index of vertex */ if (orgindxtax[orgvertnum] >= paraptr->distmax) /* If vertex belongs to last layer */ break; orgindxtax[orgvertnum] = bndvertnum; } bndvlvlnum = bndvertnum; /* Get index of first vertex of last layer */ for ( ; bndvertnum < bndvertnnd; bndvertnum ++) /* For vertices belonging to last layer */ orgindxtax[bndvnumtax[bndvertnum]] = bndvertnum; memSet (&bndgrafdat, 0, sizeof (Vgraph)); bndgrafdat.s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; bndgrafdat.s.baseval = orggrafptr->s.baseval; bndgrafdat.s.vertnbr = bndvertnbr + 2; /* "+ 2" for anchor vertices */ bndgrafdat.s.vertnnd = bndvertnnd + 2; if (memAllocGroup ((void **) (void *) /* Do not allocate vnumtab but keep queudat.qtab instead */ &bndgrafdat.s.verttax, (size_t) ((bndvertnbr + 3) * sizeof (Gnum)), &bndgrafdat.s.velotax, (size_t) ((bndvertnbr + 2) * sizeof (Gnum)), NULL) == NULL) { errorPrint ("vgraphSeparateBd: out of memory (2)"); memFree (queudat.qtab); return (1); } bndgrafdat.s.verttax -= orggrafptr->s.baseval; /* Adjust base of arrays */ bndgrafdat.s.vendtax = bndgrafdat.s.verttax + 1; /* Band graph is compact */ bndgrafdat.s.velotax -= orggrafptr->s.baseval; bndgrafdat.s.vnumtax = bndvnumtax; bndgrafdat.s.velosum = orggrafptr->s.velosum; bndgrafdat.s.velotax[bndvertnnd] = orggrafptr->compload[0] - (bndvelosum - orggrafptr->compload[2] - bndcompload1); /* Set loads of anchor vertices */ bndgrafdat.s.velotax[bndvertnnd + 1] = orggrafptr->compload[1] - bndcompload1; if (((bndgrafdat.s.edgetax = (Gnum *) memAlloc (bndedgenbr * sizeof (Gnum))) == NULL) || (bndgrafdat.s.edgetax -= orggrafptr->s.baseval, ((bndgrafdat.parttax = (GraphPart *) memAlloc ((bndvertnbr + 2) * sizeof (GraphPart))) == NULL))) { errorPrint ("vgraphSeparateBd: out of memory (3)"); graphExit (&bndgrafdat.s); memFree (queudat.qtab); return (1); } bndgrafdat.parttax -= orggrafptr->s.baseval; /* From now on we should free a Vgraph and not a Graph */ bndedgetax = bndgrafdat.s.edgetax; for (bndvertnum = bndedgenum = orggrafptr->s.baseval, bnddegrmax = 0; /* Fill index array for vertices not belonging to last level */ bndvertnum < bndvlvlnum; bndvertnum ++) { Gnum orgvertnum; Gnum orgedgenum; orgvertnum = bndvnumtax[bndvertnum]; bndgrafdat.s.verttax[bndvertnum] = bndedgenum; bndgrafdat.s.velotax[bndvertnum] = (orgvelotax != NULL) ? orgvelotax[orgvertnum] : 1; for (orgedgenum = orgverttax[orgvertnum]; /* All edges of first levels are kept */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++, bndedgenum ++) { #ifdef SCOTCH_DEBUG_VGRAPH2 if ((bndedgenum >= (bndedgenbr + orggrafptr->s.baseval)) || (orgindxtax[orgedgetax[orgedgenum]] < 0)) { errorPrint ("vgraphSeparateBd: internal error (6)"); vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bndedgetax[bndedgenum] = orgindxtax[orgedgetax[orgedgenum]]; } bndgrafdat.parttax[bndvertnum] = orggrafptr->parttax[orgvertnum]; /* Copy part array */ if (bnddegrmax < (bndedgenum - bndgrafdat.s.verttax[bndvertnum])) bnddegrmax = (bndedgenum - bndgrafdat.s.verttax[bndvertnum]); } bndeancnbr = 0; for ( ; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill index array for vertices belonging to last level */ Gnum orgvertnum; Gnum orgedgenum; GraphPart orgpartval; Gnum bnddegrval; orgvertnum = bndvnumtax[bndvertnum]; bndgrafdat.s.verttax[bndvertnum] = bndedgenum; bndgrafdat.s.velotax[bndvertnum] = (orgvelotax != NULL) ? orgvelotax[orgvertnum] : 1; for (orgedgenum = orgverttax[orgvertnum]; /* Keep only band edges */ orgedgenum < orgvendtax[orgvertnum]; orgedgenum ++) { Gnum bndvertend; #ifdef SCOTCH_DEBUG_VGRAPH2 if (bndedgenum >= (bndedgenbr + orggrafptr->s.baseval)) { errorPrint ("vgraphSeparateBd: internal error (7)"); vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bndvertend = orgindxtax[orgedgetax[orgedgenum]]; if (bndvertend != ~0) bndedgetax[bndedgenum ++] = bndvertend; } orgpartval = orggrafptr->parttax[orgvertnum]; bndgrafdat.parttax[bndvertnum] = orgpartval; /* Record part for vertices of last level */ bnddegrval = bndedgenum - bndgrafdat.s.verttax[bndvertnum]; if (bnddegrval < (orgvendtax[orgvertnum] - orgverttax[orgvertnum])) { /* If vertex is connected to rest of part */ bndedgetax[bndedgenum ++] = bndvertnnd + (Gnum) orgpartval; /* Add anchor edge to proper anchor vertex */ bndeancnbr ++; bnddegrval ++; /* One more (anchor) edge added to this vertex */ } if (bnddegrmax < bnddegrval) bnddegrmax = bnddegrval; } bndgrafdat.parttax[bndvertnnd] = 0; /* Set parts of anchor vertices */ bndgrafdat.parttax[bndvertnnd + 1] = 1; bndgrafdat.s.verttax[bndvertnnd] = bndedgenum; /* Mark end of regular edge array and start of first anchor edge array */ bndedgetmp = bndedgenum + bndeancnbr; #ifdef SCOTCH_DEBUG_VGRAPH2 if ((bndedgetmp - 1) >= (bndedgenbr + orggrafptr->s.baseval)) { errorPrint ("vgraphSeparateBd: internal error (8)"); vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ bndgrafdat.s.edgenbr = bndgrafdat.s.edlosum = bndedgetmp - orggrafptr->s.baseval; /* Since edge load array not kept */ bndgrafdat.s.verttax[bndvertnnd + 2] = bndedgetmp; /* Mark end of edge array with anchor vertices */ for (bndvertnum = bndvlvlnum; bndvertnum < bndvertnnd; bndvertnum ++) { /* Fill anchor edge arrays */ if (bndgrafdat.s.verttax[bndvertnum + 1] > bndgrafdat.s.verttax[bndvertnum]) { /* If vertex is not isolated */ Gnum bndvertend; bndvertend = bndedgetax[bndgrafdat.s.verttax[bndvertnum + 1] - 1]; /* Get last neighbor of its edge sub-array */ if (bndvertend >= bndvertnnd) { /* If it is an anchor */ if (bndvertend == bndvertnnd) /* Add edge from proper anchor */ bndedgetax[bndedgenum ++] = bndvertnum; else bndedgetax[-- bndedgetmp] = bndvertnum; } } } bndgrafdat.s.verttax[bndvertnnd + 1] = bndedgenum; /* Mark end of edge array of first anchor and start of second */ #ifdef SCOTCH_DEBUG_VGRAPH2 if (bndedgenum != bndedgetmp) { errorPrint ("vgraphSeparateBd: internal error (9)"); vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (bnddegrmax < (bndgrafdat.s.verttax[bndvertnnd + 1] - bndgrafdat.s.verttax[bndvertnnd])) bnddegrmax = (bndgrafdat.s.verttax[bndvertnnd + 1] - bndgrafdat.s.verttax[bndvertnnd]); if (bnddegrmax < (bndgrafdat.s.verttax[bndvertnnd + 2] - bndgrafdat.s.verttax[bndvertnnd + 1])) bnddegrmax = (bndgrafdat.s.verttax[bndvertnnd + 2] - bndgrafdat.s.verttax[bndvertnnd + 1]); bndgrafdat.s.degrmax = bnddegrmax; bndgrafdat.s.edgetax = (Gnum *) memRealloc ((void *) (bndgrafdat.s.edgetax + orggrafptr->s.baseval), bndgrafdat.s.edgenbr * sizeof (Gnum)) - orggrafptr->s.baseval; bndgrafdat.frontab = queudat.qtab + bndgrafdat.s.vertnbr; /* Recycle end of queue array and part of index array as band frontier array */ for (fronnum = 0, bndvertnum = orggrafptr->s.baseval; /* Fill band frontier array with first vertex indices as they make the separator */ fronnum < orggrafptr->fronnbr; fronnum ++, bndvertnum ++) bndgrafdat.frontab[fronnum] = bndvertnum; bndgrafdat.compload[0] = orggrafptr->compload[0]; bndgrafdat.compload[1] = orggrafptr->compload[1]; bndgrafdat.compload[2] = orggrafptr->compload[2]; bndgrafdat.comploaddlt = orggrafptr->comploaddlt; bndgrafdat.compsize[0] = bndvertnbr - bndcompsize1 - orggrafptr->fronnbr + 1; /* "+ 1" for anchor vertices */ bndgrafdat.compsize[1] = bndcompsize1 + 1; bndgrafdat.fronnbr = orggrafptr->fronnbr; bndgrafdat.levlnum = orggrafptr->levlnum; #ifdef SCOTCH_DEBUG_VGRAPH2 if ((graphCheck (&bndgrafdat.s) != 0) || /* Check band graph consistency */ (vgraphCheck (&bndgrafdat) != 0)) { errorPrint ("vgraphSeparateBd: inconsistent band graph data"); bndgrafdat.frontab = NULL; /* Do not free frontab as it is not allocated */ vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ if (vgraphSeparateSt (&bndgrafdat, paraptr->stratbnd) != 0) { /* Apply strategy to band graph */ errorPrint ("vgraphSeparateBd: cannot separate band graph"); bndgrafdat.frontab = NULL; /* Do not free frontab as it is not allocated */ vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (1); } if ((bndgrafdat.parttax[bndvertnnd] != 0) || /* If band graph was too small and anchors changed parts, apply strategy on full graph */ (bndgrafdat.parttax[bndvertnnd + 1] != 1)) { bndgrafdat.frontab = NULL; /* Do not free frontab as it is not allocated */ vgraphExit (&bndgrafdat); memFree (queudat.qtab); return (vgraphSeparateSt (orggrafptr, paraptr->stratorg)); } orggrafptr->compload[0] = bndgrafdat.compload[0]; orggrafptr->compload[1] = bndgrafdat.compload[1]; orggrafptr->compload[2] = bndgrafdat.compload[2]; orggrafptr->comploaddlt = bndgrafdat.comploaddlt; orggrafptr->compsize[0] = orggrafptr->compsize[0] - (bndvertnbr - bndcompsize1 - orggrafptr->fronnbr) + bndgrafdat.compsize[0] - 1; /* "- 1" for anchors */ orggrafptr->compsize[1] = orggrafptr->compsize[1] - bndcompsize1 + bndgrafdat.compsize[1] - 1; orggrafptr->fronnbr = bndgrafdat.fronnbr; for (bndvertnum = bndgrafdat.s.baseval; bndvertnum < bndvertnnd; bndvertnum ++) /* Update part array of full graph */ orggrafptr->parttax[bndvnumtax[bndvertnum]] = bndgrafdat.parttax[bndvertnum]; for (fronnum = 0; fronnum < bndgrafdat.fronnbr; fronnum ++) /* Update frontier array of full graph */ orggrafptr->frontab[fronnum] = bndgrafdat.s.vnumtax[bndgrafdat.frontab[fronnum]]; bndgrafdat.frontab = NULL; /* Do not free frontab as it is not allocated */ vgraphExit (&bndgrafdat); /* Free band graph structures */ memFree (queudat.qtab); #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (orggrafptr) != 0) { errorPrint ("vgraphSeparateBd: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/library_mapping.c0000644000302600021200000000617713560013261021351 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mapping.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling centralized **/ /** graph mappings. **/ /** **/ /** DATES : # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /****************************************/ /* */ /* These routines are the C API for */ /* mapping structure handling routines. */ /* */ /****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** graph mapping structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Mapping * SCOTCH_mapAlloc () { return ((SCOTCH_Mapping *) memAlloc (sizeof (SCOTCH_Mapping))); } scotch_6.0.9/src/libscotch/vdgraph_store.c0000644000302600021200000001465113560013732021040 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_store.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for **/ /** distributed separation graphs. **/ /** **/ /** DATES : # Version 4.0 : from : 08 mar 2006 **/ /** to : 01 mar 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_STORE #include "module.h" #include "common.h" #include "dgraph.h" #include "vdgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int vdgraphStoreInit ( const Vdgraph * restrict const grafptr, VdgraphStore * restrict const storptr) { Gnum savsize; savsize = grafptr->s.vertlocnbr * (sizeof (GraphPart) + sizeof (Gnum)); /* Compute size for frontier and part arrays */ if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("vdgraphStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void vdgraphStoreExit ( VdgraphStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_VDGRAPH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void vdgraphStoreSave ( const Vdgraph * const grafptr, VdgraphStore * const storptr) { byte * partloctab; /* Pointer to part data save area */ byte * fronloctab; /* Pointer to frontier data save area */ storptr->fronglbnbr = grafptr->compglbsize[2]; /* Save partition parameters */ storptr->compglbloaddlt = grafptr->compglbloaddlt; storptr->compglbload[0] = grafptr->compglbload[0]; storptr->compglbload[1] = grafptr->compglbload[1]; storptr->compglbsize0 = grafptr->compglbsize[0]; storptr->complocsize0 = grafptr->complocsize[0]; storptr->fronlocnbr = grafptr->complocsize[2]; fronloctab = storptr->datatab; /* Compute data offsets within save structure */ partloctab = fronloctab + grafptr->complocsize[2] * sizeof (Gnum); memCpy (fronloctab, grafptr->fronloctab, grafptr->complocsize[2] * sizeof (Gnum)); memCpy (partloctab, grafptr->partgsttax + grafptr->s.baseval, grafptr->s.vertlocnbr * sizeof (GraphPart)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void vdgraphStoreUpdt ( Vdgraph * const grafptr, const VdgraphStore * const storptr) { byte * fronloctab; /* Pointer to frontier data save area */ byte * partloctab; /* Pointer to part data save area */ grafptr->compglbload[0] = storptr->compglbload[0]; /* Load partition parameters */ grafptr->compglbload[1] = storptr->compglbload[1]; grafptr->compglbload[2] = grafptr->s.veloglbsum - (storptr->compglbload[0] + storptr->compglbload[1]); grafptr->compglbloaddlt = storptr->compglbloaddlt; grafptr->compglbsize[0] = storptr->compglbsize0; grafptr->compglbsize[1] = grafptr->s.vertglbnbr - (storptr->compglbsize0 + storptr->fronglbnbr); grafptr->compglbsize[2] = storptr->fronglbnbr; grafptr->complocsize[0] = storptr->complocsize0; grafptr->complocsize[1] = grafptr->s.vertlocnbr - (storptr->complocsize0 + storptr->fronlocnbr); grafptr->complocsize[2] = storptr->fronlocnbr; fronloctab = storptr->datatab; /* Compute data offsets within save structure */ partloctab = fronloctab + grafptr->complocsize[2] * sizeof (Gnum); memCpy (grafptr->fronloctab, fronloctab, grafptr->complocsize[2] * sizeof (Gnum)); memCpy (grafptr->partgsttax + grafptr->s.baseval, partloctab, grafptr->s.vertlocnbr * sizeof (GraphPart)); #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (grafptr) != 0) errorPrint ("vdgraphStoreUpdt: inconsistent graph data"); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } scotch_6.0.9/src/libscotch/library_dmapping.h0000644000302600021200000000537513303015264021521 0ustar pelegrinpelegrin/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dmapping.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the library ordering **/ /** structure. **/ /** **/ /** DATES : # Version 5.1 : from : 16 jun 2008 **/ /** to 04 nov 2010 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Distributed mapping. +*/ typedef struct LibDmapping_ { Dmapping m; /*+ Distributed mapping data +*/ Gnum * termloctab; /*+ Local mapping array +*/ } LibDmapping; scotch_6.0.9/src/libscotch/library_parser.c0000644000302600021200000001150213560013261021176 0ustar pelegrinpelegrin/* Copyright 2004,2007,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_parser.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the generic **/ /** strategy handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 19 aug 1998 **/ /** to 19 aug 1998 **/ /** DATES : # Version 3.3 : from : 01 oct 1998 **/ /** to 31 may 1999 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 23 dec 2001 **/ /** to : 23 dec 2001 **/ /** # Version 6.0 : from : 07 jan 2014 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the strategy handling routines. */ /* */ /************************************/ /* This routine initializes a strategy ** structure. ** It returns: ** - 0 : in all cases. */ int SCOTCH_stratInit ( SCOTCH_Strat * const stratptr) { if (sizeof (SCOTCH_Strat) < sizeof (Strat *)) { errorPrint (STRINGIFY (SCOTCH_stratInit) ": internal error (1)"); return (1); } *((Strat **) stratptr) = NULL; /* Initialize pointer to strategy */ return (0); } /* This routine frees a strategy structure. ** It returns: ** - VOID : in all cases. */ void SCOTCH_stratExit ( SCOTCH_Strat * const stratptr) { if (*((Strat **) stratptr) != NULL) /* If strategy is not null */ stratExit (*((Strat **) stratptr)); /* Free strategy structure */ } /* This routine frees the contents of a ** strategy structure and cleans it for ** future use. ** It returns: ** - VOID : in all cases. */ void SCOTCH_stratFree ( SCOTCH_Strat * const stratptr) { if (*((Strat **) stratptr) != NULL) { /* If strategy is not null */ stratExit (*((Strat **) stratptr)); /* Free strategy structure */ *((Strat **) stratptr) = NULL; /* Initialize pointer to strategy */ } } /* This routine outputs the contents of the ** given strategy to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int SCOTCH_stratSave ( const SCOTCH_Strat * const stratptr, FILE * const stream) { return (stratSave (*((Strat **) stratptr), stream)); } scotch_6.0.9/src/libscotch/library_graph_map_view_f.c0000644000302600021200000001035313560013261023202 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_view_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** mapping routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 4.0 : from : 21 nov 2005 **/ /** to 21 nov 2005 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the mapping routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHMAPVIEW, graphmapview, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Mapping * const mappptr, \ const int * const fileptr, \ int * const revaptr), \ (grafptr, mappptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPVIEW)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHMAPVIEW)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphMapView (grafptr, mappptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/dorder_perm.c0000644000302600021200000002457213303015264020473 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_gather.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.0 : from : 13 oct 2007 **/ /** to 21 oct 2007 **/ /** # Version 5.1 : from : 26 sep 2008 **/ /** to 26 sep 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "dorder_perm.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This function builds a distributed direct ** permutation from the information stored ** in the distributed ordering structure. ** It returns: ** - 0 : if the distributed permutation could be computed. ** - !0 : on error. */ int dorderPerm ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, Gnum * restrict const permloctab) { Gnum * restrict permloctax; int * restrict sendcnttab; int * restrict senddsptab; int * restrict recvcnttab; int * restrict recvdsptab; DorderPermSort * restrict sortsndtab; DorderPermSort * restrict sortrcvtab; const DorderLink * restrict linklocptr; Gnum vnodlocnbr; Gnum vnodlocnum; int vnodrcvnbr; int vnodsndnbr; int procnum; Gnum reduloctab[2]; Gnum reduglbtab[2]; for (linklocptr = ordeptr->linkdat.nextptr, vnodlocnbr = 0; /* For all nodes in local ordering structure */ linklocptr != &ordeptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) /* If node is leaf */ vnodlocnbr += cblklocptr->data.leaf.vnodlocnbr; /* And more node vertices */ #ifdef SCOTCH_DEBUG_DORDER2 else if (cblklocptr->typeval != DORDERCBLKNEDI) { errorPrint ("dorderPerm: invalid parameters (1)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } reduloctab[0] = vnodlocnbr; reduloctab[1] = 0; if (memAllocGroup ((void **) (void *) &senddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &sendcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &recvdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &recvcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &sortsndtab, (size_t) ((vnodlocnbr + 1) * sizeof (DorderPermSort)), /* "+1" for end marker */ &sortrcvtab, (size_t) (grafptr->vertlocnbr * sizeof (DorderPermSort)), NULL) == NULL) { errorPrint ("dorderPerm: out of memory"); reduloctab[1] = 1; } if (MPI_Allreduce (reduloctab, reduglbtab, 2, GNUM_MPI, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderPerm: communication error (1)"); reduglbtab[1] = 1; } if (reduglbtab[1] != 0) { if (senddsptab != NULL) memFree (senddsptab); /* Free group leader */ return (1); } if (reduglbtab[0] == 0) { /* If ordering structure is empty */ Gnum ordelocval; /* Based permutation start index */ memFree (senddsptab); /* Free group leader */ for (vnodlocnum = 0, ordelocval = grafptr->procvrttab[grafptr->proclocnum]; /* Build identity permutation */ vnodlocnum < grafptr->vertlocnbr; vnodlocnum ++) permloctab[vnodlocnum] = ordelocval ++; return (0); } if (reduglbtab[0] != grafptr->vertglbnbr) { errorPrint ("dorderPerm: invalid parameters (2)"); memFree (senddsptab); /* Free group leader */ return (1); } for (linklocptr = ordeptr->linkdat.nextptr, vnodlocnum = 0; /* For all nodes in local ordering structure */ linklocptr != &ordeptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if ((cblklocptr->typeval & DORDERCBLKLEAF) != 0) { /* If node is leaf */ Gnum leaflocnbr; Gnum leaflocnum; Gnum ordelocval; /* Based permutation start index */ for (leaflocnum = 0, leaflocnbr = cblklocptr->data.leaf.vnodlocnbr, ordelocval = cblklocptr->data.leaf.ordelocval + ordeptr->baseval; leaflocnum < leaflocnbr; leaflocnum ++, vnodlocnum ++) { sortsndtab[vnodlocnum].vertnum = cblklocptr->data.leaf.periloctab[leaflocnum]; sortsndtab[vnodlocnum].permnum = ordelocval + leaflocnum; #ifdef SCOTCH_DEBUG_DORDER2 if ((sortsndtab[vnodlocnum].vertnum < ordeptr->baseval) || (sortsndtab[vnodlocnum].vertnum > (ordeptr->baseval + ordeptr->vnodglbnbr)) || (sortsndtab[vnodlocnum].permnum < ordeptr->baseval) || (sortsndtab[vnodlocnum].permnum > (ordeptr->baseval + ordeptr->vnodglbnbr))) { errorPrint ("dorderPerm: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } } } sortsndtab[vnodlocnbr].vertnum = /* Set end marker */ sortsndtab[vnodlocnbr].permnum = GNUMMAX; intSort2asc1 (sortsndtab, vnodlocnbr); /* Sort permutation array by original vertex numbers, without marker */ for (vnodlocnum = 0, procnum = 0; procnum < grafptr->procglbnbr; ) { Gnum vnodsndnbr; Gnum procdspval; vnodsndnbr = 0; procdspval = grafptr->procdsptab[procnum + 1]; while (sortsndtab[vnodlocnum].vertnum < procdspval) { vnodsndnbr ++; vnodlocnum ++; #ifdef SCOTCH_DEBUG_DORDER2 if (vnodlocnum > vnodlocnbr) { /* If beyond regular indices plus end marker */ errorPrint ("dorderPerm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ } sendcnttab[procnum ++] = (int) (vnodsndnbr * 2); /* Communication array for MPI, so (int), and "*2" because a Sort is 2 Gnums */ } #ifdef SCOTCH_DEBUG_DORDER2 if (vnodlocnum != vnodlocnbr) { errorPrint ("dorderPerm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ if (MPI_Alltoall (sendcnttab, 1, MPI_INT, recvcnttab, 1, MPI_INT, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderPerm: communication error (2)"); return (1); } for (procnum = 0, vnodrcvnbr = vnodsndnbr = 0; procnum < grafptr->procglbnbr; procnum ++) { /* Accumulate send and receive indices */ recvdsptab[procnum] = vnodrcvnbr; vnodrcvnbr += recvcnttab[procnum]; /* Accumulate "*2" values as counts */ senddsptab[procnum] = vnodsndnbr; vnodsndnbr += sendcnttab[procnum]; } if (MPI_Alltoallv (sortsndtab, sendcnttab, senddsptab, GNUM_MPI, sortrcvtab, recvcnttab, recvdsptab, GNUM_MPI, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderPerm: communication error (3)"); return (1); } #ifdef SCOTCH_DEBUG_DORDER2 memSet (permloctab, ~0, grafptr->vertlocnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_DORDER2 */ permloctax = permloctab - grafptr->procdsptab[grafptr->proclocnum]; /* Base local array through global indices */ for (vnodlocnum = 0; vnodlocnum < grafptr->vertlocnbr; vnodlocnum ++) { #ifdef SCOTCH_DEBUG_DORDER2 if (permloctax[sortrcvtab[vnodlocnum].vertnum] != ~0) { errorPrint ("dorderPerm: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ permloctax[sortrcvtab[vnodlocnum].vertnum] = sortrcvtab[vnodlocnum].permnum; } #ifdef SCOTCH_DEBUG_DORDER2 for (vnodlocnum = 0; vnodlocnum < grafptr->vertlocnbr; vnodlocnum ++) { if (permloctab[vnodlocnum] == ~0) { errorPrint ("dorderPerm: internal error (5)"); return (1); } } #endif /* SCOTCH_DEBUG_DORDER2 */ memFree (senddsptab); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/library_geom.c0000644000302600021200000001212013560013261020626 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_geom.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the geom **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 10 oct 1999 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 19 jan 2004 **/ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 25 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "scotch.h" /****************************************/ /* */ /* These routines are the C API for the */ /* graph geometry handling routines. */ /* */ /****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** geometry structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Geom * SCOTCH_geomAlloc () { return ((SCOTCH_Geom *) memAlloc (sizeof (SCOTCH_Geom))); } /*+ This routine initializes the opaque *** geom structure used to handle graph *** geometry in the Scotch library. *** It returns: *** - 0 : if the initialization succeeded. *** - !0 : on error. +*/ int SCOTCH_geomInit ( SCOTCH_Geom * const geomptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_geomInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Geom) < sizeof (Geom)) { errorPrint (STRINGIFY (SCOTCH_geomInit) ": internal error (2)"); return (1); } return (geomInit ((Geom *) geomptr)); } /*+ This routine frees the contents of the *** given opaque geometry structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_geomExit ( SCOTCH_Geom * const geomptr) { geomExit ((Geom *) geomptr); } /*+ This routine accesses all of the geometry data. *** NULL pointers on input indicate unwanted *** data. NULL pointers on output indicate *** unexisting arrays. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_geomData ( const SCOTCH_Geom * const geomptr, /* Geometry structure to read */ SCOTCH_Num * const dimnptr, /* Number of dimensions */ double ** const geomtab) /* Geometry array [vertnbr] */ { const Geom * srcgeomptr; /* Pointer to source geometry structure */ srcgeomptr = (const Geom *) geomptr; if (dimnptr != NULL) *dimnptr = srcgeomptr->dimnnbr; if (geomtab != NULL) *geomtab = (double *) srcgeomptr->geomtab; } scotch_6.0.9/src/libscotch/library_dgraph_redist.c0000644000302600021200000001076513560013261022533 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_redist.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the graph redistribution **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 28 mar 2012 **/ /** to : 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "dgraph_redist.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /*+ This routine computes a distributed graph *** that matches the provided partition. *** It returns: *** - 0 : if redistributed graph created. *** - !0 : on error. +*/ int SCOTCH_dgraphRedist ( SCOTCH_Dgraph * const orggrafptr, const SCOTCH_Num * const partloctab, /* Array of part numbers for each local vertex */ const SCOTCH_Num * const permgsttab, /* Redistribution permutation array */ const SCOTCH_Num vertlocdlt, /* Extra size of local vertex array */ const SCOTCH_Num edgelocdlt, /* Extra size of local edge array */ SCOTCH_Dgraph * const redgrafptr) { SCOTCH_Num baseval; #ifdef SCOTCH_DEBUG_LIBRARY1 int o; MPI_Comm_compare (((Dgraph * restrict const) orggrafptr)->proccomm, ((Dgraph * restrict const) redgrafptr)->proccomm, &o); if ((o != MPI_IDENT) && (o != MPI_CONGRUENT)) { errorPrint (STRINGIFY (SCOTCH_dgraphRedist) ": communicators are not congruent"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ baseval = ((Dgraph *) orggrafptr)->baseval; return (dgraphRedist ((Dgraph *) orggrafptr, ((partloctab != NULL) && (partloctab != (SCOTCH_Num *) orggrafptr)) ? (const Gnum * restrict const) (partloctab - baseval) : NULL, ((permgsttab != NULL) && (permgsttab != (SCOTCH_Num *) orggrafptr)) ? (const Gnum * restrict const) (permgsttab - baseval) : NULL, (vertlocdlt < 0) ? 0 : vertlocdlt, (edgelocdlt < 0) ? 0 : edgelocdlt, (Dgraph *) redgrafptr)); } scotch_6.0.9/src/libscotch/arch_build.c0000644000302600021200000004446013560005302020260 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_build.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module builds a decomposition- **/ /** based architecture from a source graph. **/ /** **/ /** DATES : # Version 3.2 : from : 29 may 1997 **/ /** to 30 aug 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 3.4 : from : 30 oct 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to 10 mar 2005 **/ /** # Version 5.0 : from : 10 sep 2007 **/ /** to 03 apr 2008 **/ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 28 jun 2011 **/ /** # Version 6.0 : from : 28 jun 2011 **/ /** to 15 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_BUILD #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "arch_deco.h" #include "arch_vcmplt.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "arch_build.h" /************************************/ /* */ /* These routines handle job pools. */ /* */ /************************************/ /* This routine frees the contents of ** the given job pool. ** It returns: ** - VOID : in all cases. */ static void archDecoBuildJobExit ( ArchDecoBuildJob * const jobtab) { ArchDecoBuildJob * jobptr; jobptr = jobtab; do { graphExit (&jobptr->grafdat); jobptr = jobptr->joblink; } while (jobptr != NULL); } /********************************************/ /* */ /* The main routine, which computes the */ /* decomposition-based target architecture. */ /* */ /********************************************/ /* ** This routine builds a target architecture from ** the given source graph and the optional vertex ** list. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDecoArchBuild ( Arch * restrict const tgtarchptr, /*+ Decomposition architecture to build +*/ const Graph * const tgtgrafptr, /*+ Source graph modeling the architecture +*/ const VertList * const tgtlistptr, /*+ Subset of source graph vertices +*/ const Strat * const mapstrat) /*+ Bipartitioning strategy +*/ { Arch archdat; /* Variable-sized architecture for bipartitioning */ ArchDom domsub0; /* Temporary space for subdomain 0 */ Gnum termdomnbr; /* Number of terminal domains */ Gnum termdommax; /* Maximum terminal number */ ArchDecoTermVert * restrict termverttab; /* Terminal vertex table */ Anum * restrict termdisttab; /* Vertex distance table */ ArchDecoBuildDistElem * restrict disttax; /* Distance table */ ArchDecoBuildQueuElem * restrict queutab; /* Distance queue table */ Gnum queuhead; /* Head-of-queue index */ Gnum queutail; /* Tail-of-queue index */ Mapping mappdat; /* Partial and final mapping data */ ArchDecoBuildJob * restrict jobtab; /* Job array */ ArchDecoBuildJob * joblink; /* Linked list of jobs to process */ ArchDecoBuildJob * joborgptr; /* Pointer to original job and first subjob */ ArchDecoBuildJob * jobsubptr; /* Pointer to second subjob */ Bgraph actgrafdat; /* Active graph for bipartitioning */ Gnum invedlosiz; /* Size of inversed edge load array */ Gnum * restrict invedlotax; /* Inversed edge load array for cutting */ Gnum * restrict actfrontab; /* Frontier array for all bipartitionings */ GraphPart * restrict actparttax; /* Part array for all bipartitionings */ GraphPart actpartval; /* Part value to put to subjob */ Gnum actpartnbr; /* Size of part value to put to subjob */ Gnum termdomnum; const Gnum * restrict const tgtverttax = tgtgrafptr->verttax; const Gnum * restrict const tgtvendtax = tgtgrafptr->vendtax; const Gnum * restrict const tgtedgetax = tgtgrafptr->edgetax; const Gnum * restrict const tgtedlotax = tgtgrafptr->edlotax; archInit (tgtarchptr); /* Initialize architecture body */ tgtarchptr->class = archClass ("deco"); /* Set architecture class */ termdomnbr = (tgtlistptr != NULL) ? tgtlistptr->vnumnbr : tgtgrafptr->vertnbr; if (termdomnbr == 0) /* If nothing to do */ return (0); intRandInit (); /* Initialize random generator */ invedlosiz = (tgtedlotax != NULL) ? tgtgrafptr->edgenbr : 0; if ((memAllocGroup ((void **) (void *) &jobtab, (size_t) (termdomnbr * sizeof (ArchDecoBuildJob)), &actfrontab, (size_t) (termdomnbr * sizeof (Gnum)), &actparttax, (size_t) (termdomnbr * sizeof (GraphPart)), &invedlotax, (size_t) (invedlosiz * sizeof (Gnum)), NULL) == NULL) || ((mappdat.parttax = memAlloc (tgtgrafptr->vertnbr * sizeof (ArchDomNum))) == NULL) || /* Final mapping array is for all graph vertices */ ((mappdat.domntab = memAlloc (termdomnbr * sizeof (ArchDom))) == NULL)) { errorPrint ("archDecoBuild: out of memory (1)"); if (jobtab != NULL) { memFree (jobtab); if (mappdat.parttax != NULL) memFree (mappdat.parttax); } return (1); } memSet (mappdat.parttax, 0, tgtgrafptr->vertnbr * sizeof (ArchDomNum)); actparttax -= tgtgrafptr->baseval; mappdat.flagval = MAPPINGFREEPART | MAPPINGFREEDOMN; mappdat.grafptr = tgtgrafptr; mappdat.archptr = &archdat; mappdat.parttax -= tgtgrafptr->baseval; mappdat.domnmax = termdomnbr; archInit (&archdat); /* Initialize terminal architecture */ archdat.class = archClass ("varcmplt"); /* Set architecture class */ archDomFrst (&archdat, &mappdat.domntab[0]); /* Get initial domain */ mappdat.domnnbr = 1; jobtab[0].domnum = 0; /* All vertices mapped to first domain */ if ((tgtlistptr != NULL) && (tgtlistptr->vnumtab != NULL)) /* If vertex list given */ graphInduceList (tgtgrafptr, tgtlistptr->vnumnbr, tgtlistptr->vnumtab, &jobtab[0].grafdat); /* Restrict initial job */ else { /* If no vertex list given */ memCpy (&jobtab[0].grafdat, tgtgrafptr, sizeof (Graph)); /* Job takes whole graph */ jobtab[0].grafdat.flagval &= ~GRAPHFREETABS; /* Graph is a clone */ jobtab[0].grafdat.vnumtax = NULL; /* Assume we have no vertex index array */ } if (tgtedlotax != NULL) { /* If architecture graph has edge loads */ invedlotax -= tgtgrafptr->baseval; /* Base inversed edge load array */ graphIelo (&jobtab[0].grafdat, jobtab[0].grafdat.edlotax, invedlotax); /* Compute inverse of edge loads */ jobtab[0].grafdat.edlotax = invedlotax; /* Replace potentially induced edge array with inversed one */ } /* Edge array will be freed along with jobtab group leader */ actgrafdat.veextax = NULL; /* No external gain array */ actgrafdat.parttax = actparttax; /* Set global auxiliary arrays */ actgrafdat.frontab = actfrontab; joblink = NULL; /* Initialize job list */ if (jobtab[0].grafdat.vertnbr > 1) { /* If job is worth bipartitioning */ jobtab[0].joblink = joblink; /* Add initial job to list */ joblink = &jobtab[0]; } while (joblink != NULL) { /* For all jobs in list */ joborgptr = joblink; /* Get job */ joblink = joblink->joblink; /* Remove job from list */ joborgptr->joblink = NULL; /* In case of freeing */ memCpy (&actgrafdat.s, &joborgptr->grafdat, sizeof (Graph)); actgrafdat.s.flagval = joborgptr->grafdat.flagval & ~GRAPHFREETABS; bgraphInit2 (&actgrafdat, 1, 1, 1, 0, 0); /* Create active graph */ if (bgraphBipartSt (&actgrafdat, mapstrat) != 0) { /* Perform bipartitioning */ errorPrint ("archDecoBuild: internal error"); archDecoBuildJobExit (joborgptr); archDecoBuildJobExit (joblink); archExit (&archdat); mapExit (&mappdat); memFree (jobtab); return (1); } if ((actgrafdat.compsize0 == 0) || /* If one of the jobs is empty */ (actgrafdat.compsize0 == actgrafdat.s.vertnbr)) { errorPrint ("archDecoBuild: strategy leads to empty domains"); graphExit (&actgrafdat.s); /* Only free graph part, global arrays kept */ archDecoBuildJobExit (joborgptr); archDecoBuildJobExit (joblink); archExit (&archdat); mapExit (&mappdat); memFree (jobtab); return (1); } archVcmpltDomBipart ((const ArchVcmplt * const) (void *) &archdat, /* Update mapping domains */ (const ArchVcmpltDom * const) (void *) &mappdat.domntab[joborgptr->domnum], (ArchVcmpltDom * const) (void *) &domsub0, (ArchVcmpltDom * const) (void *) &mappdat.domntab[mappdat.domnnbr]); mappdat.domntab[joborgptr->domnum] = domsub0; actpartval = actgrafdat.parttax[actgrafdat.s.baseval]; /* Always keep first vertex in sub0 */ actpartnbr = (actpartval == 0) ? actgrafdat.compsize0 : (actgrafdat.s.vertnbr - actgrafdat.compsize0); if (actgrafdat.s.vnumtax != NULL) { /* Update mapping fraction */ Gnum actvertnum; for (actvertnum = actgrafdat.s.baseval; actvertnum < actgrafdat.s.vertnnd; actvertnum ++) { if (actgrafdat.parttax[actvertnum] != actpartval) mappdat.parttax[actgrafdat.s.vnumtax[actvertnum]] = mappdat.domnnbr; } } else { Gnum actvertnum; for (actvertnum = actgrafdat.s.baseval; actvertnum < actgrafdat.s.vertnnd; actvertnum ++) { if (actgrafdat.parttax[actvertnum] != actpartval) mappdat.parttax[actvertnum] = mappdat.domnnbr; } } jobsubptr = jobtab + mappdat.domnnbr; /* Point to new subjob */ jobsubptr->domnum = mappdat.domnnbr ++; /* Build subjobs */ actgrafdat.s.flagval = joborgptr->grafdat.flagval; /* Active is now main copy */ if (actpartnbr < (actgrafdat.s.vertnbr - 1)) { /* If part 1 splittable */ graphInducePart (&actgrafdat.s, actgrafdat.parttax, actgrafdat.s.vertnbr - actpartnbr, 1 - actpartval, &jobsubptr->grafdat); jobsubptr->joblink = joblink; /* Link subjobs in list */ joblink = jobsubptr; } if (actpartnbr > 1) { /* If part 0 splittable */ graphInducePart (&actgrafdat.s, actgrafdat.parttax, actpartnbr, actpartval, &joborgptr->grafdat); joborgptr->joblink = joblink; /* Link subjobs in list */ joblink = joborgptr; } graphExit (&actgrafdat.s); /* Only free graph part, global arrays kept */ } memFree (jobtab); /* Free group leader */ if (memAllocGroup ((void **) (void *) &termverttab, (size_t) (termdomnbr * sizeof (ArchDecoTermVert)), &termdisttab, (size_t) (((termdomnbr * (termdomnbr - 1)) / 2) * sizeof (Anum)), &disttax, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchDecoBuildDistElem)), &queutab, (size_t) (tgtgrafptr->vertnbr * sizeof (ArchDecoBuildQueuElem)), NULL) == NULL) { errorPrint ("archDecoBuild: out of memory (2)"); mapExit (&mappdat); archExit (&archdat); return (1); } for (termdomnum = 0, termdommax = 0; termdomnum < termdomnbr; termdomnum ++) { /* Set terminal vertex array */ Gnum tgtvertnum; tgtvertnum = (tgtlistptr != NULL) ? tgtlistptr->vnumtab[termdomnum] : (termdomnum + tgtgrafptr->baseval); termverttab[termdomnum].labl = tgtvertnum; termverttab[termdomnum].wght = (tgtgrafptr->velotax != NULL) ? tgtgrafptr->velotax[tgtvertnum] : 1; termverttab[termdomnum].num = archDomNum (&archdat, mapDomain (&mappdat, tgtvertnum - tgtgrafptr->baseval)); if (termverttab[termdomnum].num > termdommax) /* Find maximum terminal number */ termdommax = termverttab[termdomnum].num; } disttax -= tgtgrafptr->baseval; for (termdomnum = 1; termdomnum < termdomnbr; termdomnum ++) { /* For all active terminal vertices except the first */ Gnum termdomend; Gnum tgtvertnum; for (tgtvertnum = tgtgrafptr->baseval; tgtvertnum < (tgtgrafptr->vertnbr + tgtgrafptr->baseval); tgtvertnum ++) { disttax[tgtvertnum].queued = 0; /* Vertex not queued */ disttax[tgtvertnum].distval = INTVALMAX; /* Assume maximum distance */ } queuhead = /* Reset the queue */ queutail = 0; tgtvertnum = termverttab[termdomnum].labl; queutab[queutail].vertnum = tgtvertnum; /* Insert root vertex */ queutab[queutail ++].distval = 0; disttax[tgtvertnum].queued = 1; /* Mark vertex as queued */ disttax[tgtvertnum].distval = 0; while (queuhead < queutail) { /* As long as there are vertices in queue */ Gnum vertnum; /* Number of current vertex */ Gnum vertdist; /* Current distance value */ Gnum edgenum; vertnum = queutab[queuhead].vertnum; /* Retrieve vertex from queue */ vertdist = queutab[queuhead ++].distval; for (edgenum = tgtverttax[vertnum]; /* For all vertex edges */ edgenum < tgtvendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = tgtedgetax[edgenum]; if (disttax[vertend].queued == 0) { /* If end vertex not queued */ queutab[queutail].vertnum = vertend; /* Queue the vertex */ queutab[queutail ++].distval = disttax[vertend].distval = vertdist + ((tgtedlotax != NULL) ? tgtedlotax[edgenum] : 1); disttax[vertend].queued = 1; /* Mark vertex as queued */ } } } for (termdomend = 0; termdomend < termdomnum; termdomend ++) /* For all previous terminal domains */ termdisttab[((termdomnum * (termdomnum - 1)) / 2) + termdomend] = /* Retrieve distance */ disttax[termverttab[termdomend].labl].distval; } archDecoArchBuild2 ((ArchDeco *) (void *) &tgtarchptr->data, termdomnbr, termdommax, termverttab, termdisttab); memFree (termverttab); /* Free group leader */ mapExit (&mappdat); archExit (&archdat); return (0); } scotch_6.0.9/src/libscotch/library_strat.c0000644000302600021200000000621013560013261021037 0ustar pelegrinpelegrin/* Copyright 2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_strat.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling strategy **/ /** strings. **/ /** **/ /** DATES : # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /*****************************************/ /* */ /* These routines are the C API for */ /* ordering structure handling routines. */ /* */ /*****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** distributed ordering structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Strat * SCOTCH_stratAlloc () { return ((SCOTCH_Strat *) memAlloc (sizeof (SCOTCH_Strat))); } scotch_6.0.9/src/libscotch/bgraph_bipart_fm.h0000644000302600021200000002577613560005346021500 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_fm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for our Improved Fiduccia-Mattheyses **/ /** bipartitioning algorithm. **/ /** **/ /** DATES : # Version 1.0 : from : 30 sep 1993 **/ /** to 09 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 13 apr 1994 **/ /** # Version 2.0 : from : 04 jul 1994 **/ /** to 25 nov 1994 **/ /** # Version 3.0 : from : 06 jul 1995 **/ /** to 06 jul 1995 **/ /** # Version 3.1 : from : 06 nov 1995 **/ /** to 07 jun 1996 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 12 mar 1999 **/ /** # Version 4.0 : from : 27 aug 2004 **/ /** to 27 aug 2004 **/ /** # Version 6.0 : from : 23 feb 2011 **/ /** to 27 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Prime number for hashing vertex numbers. +*/ #define BGRAPHBIPARTFMHASHPRIME 17 /*+ Prime number for hashing +*/ /* ** The type and structure definitions. */ /*+ Move type. +*/ typedef enum BgraphBipartFmType_ { BGRAPHBIPARTFMTYPEALL, /*+ All vertices +*/ BGRAPHBIPARTFMTYPEBOUNDARY /*+ Boundary vertices only +*/ } BgraphBipartFmType; /*+ This structure holds the method parameters. +*/ typedef struct BgraphBipartFmParam_ { INT movenbr; /*+ Maximum number of uneffective moves that can be done +*/ INT passnbr; /*+ Number of passes to be performed (-1 : infinite) +*/ double deltval; /*+ Maximum weight imbalance ratio +*/ BgraphBipartFmType typeval; /*+ Whether considered vertices are boundary or all +*/ } BgraphBipartFmParam; #ifdef BGRAPH_BIPART_FM /* Private part of the module */ /*+ The hash vertex structure. For trick reasons, the gain table data structure must be the first field of the structure. +*/ #ifdef SCOTCH_TABLE_GAIN typedef GainTabl * BgraphBipartFmTabl; typedef GainLink BgraphBipartFmLink; #else /* SCOTCH_TABLE_GAIN */ typedef FiboHeap BgraphBipartFmTabl; typedef FiboNode BgraphBipartFmLink; #endif /* SCOTCH_TABLE_GAIN */ typedef struct BgraphBipartFmVertex_ { BgraphBipartFmLink gainlink; /*+ Gain link: FIRST +*/ Gnum vertnum; /*+ Number of vertex +*/ int partval; /*+ Vertex part +*/ Gnum compgain; /*+ Computation gain +*/ Gnum commgain; /*+ Communication gain +*/ Gnum commcut; /*+ Cut edges +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ } BgraphBipartFmVertex; /*+ The move recording structure. +*/ typedef struct BgraphBipartFmSave_ { Gnum hashnum; /*+ Number of vertex slot +*/ int partval; /*+ Vertex part +*/ Gnum compgain; /*+ Computation gain +*/ Gnum commgain; /*+ Communication gain +*/ Gnum commcut; /*+ Cut edges +*/ } BgraphBipartFmSave; /* ** The function prototypes. */ static BgraphBipartFmVertex * bgraphBipartFmTablGet (BgraphBipartFmTabl * restrict const, const Gnum, const Gnum, const Gnum); static int bgraphBipartFmResize (BgraphBipartFmVertex * restrict *, Gnum * restrict const, Gnum * const, BgraphBipartFmSave * restrict *, const Gnum, BgraphBipartFmTabl * const, BgraphBipartFmVertex ** const); #ifdef SCOTCH_DEBUG_BGRAPH3 static int bgraphBipartFmCheck (const Bgraph * restrict const, const BgraphBipartFmVertex * restrict const, const Gnum, const int, const Gnum, const Gnum, const Gnum); #endif /* SCOTCH_DEBUG_BGRAPH3 */ #endif /* BGRAPH_BIPART_FM */ int bgraphBipartFm (Bgraph * restrict const, const BgraphBipartFmParam * const); /* ** The macro definitions. */ #ifdef SCOTCH_TABLE_GAIN /*+ Gain table subbits. +*/ #define BGRAPHBIPARTFMSUBBITS 4 /** Gain table vertex status. **/ #define BGRAPHBIPARTFMSTATEFREE ((GainLink *) 0) /*+ Vertex in initial state +*/ #define BGRAPHBIPARTFMSTATEUSED ((GainLink *) 1) /*+ Swapped vertex +*/ #define BGRAPHBIPARTFMSTATELINK ((GainLink *) 2) /*+ Currently in gain table if higher +*/ /*+ Service routines. +*/ #define bgraphBipartFmTablInit(t) (((*(t)) = gainTablInit (GAINMAX, BGRAPHBIPARTFMSUBBITS)) == NULL) #define bgraphBipartFmTablFree(t) gainTablFree (*(t)) #define bgraphBipartFmTablExit(t) do { \ if (*(t) != NULL) \ gainTablExit (*(t)); \ } while (0) #define bgraphBipartFmTablAdd(t,v) gainTablAdd ((*(t)), &(v)->gainlink, (v)->commgain) #define bgraphBipartFmTablDel(t,v) gainTablDel ((*(t)), &(v)->gainlink) #define bgraphBipartFmIsFree(v) ((v)->gainlink.next == BGRAPHBIPARTFMSTATEFREE) #define bgraphBipartFmIsTabl(v) ((v)->gainlink.next >= BGRAPHBIPARTFMSTATELINK) #define bgraphBipartFmIsUsed(v) ((v)->gainlink.next == BGRAPHBIPARTFMSTATEUSED) #define bgraphBipartFmSetFree(v) do { \ (v)->gainlink.next = BGRAPHBIPARTFMSTATEFREE; \ } while (0) #define bgraphBipartFmSetUsed(v) do { \ (v)->gainlink.next = BGRAPHBIPARTFMSTATEUSED; \ } while (0) #define bgraphBipartFmChain(l,v) do { \ (v)->gainlink.prev = (GainLink *) *(l); \ *(l) = (v); \ } while (0) #define bgraphBipartFmChainNext(v) ((BgraphBipartFmVertex *) (v)->gainlink.prev) #else /* SCOTCH_TABLE_GAIN */ /** Gain table vertex status. **/ #define BGRAPHBIPARTFMSTATEFREE ((FiboNode *) 0) /*+ Vertex in initial state +*/ #define BGRAPHBIPARTFMSTATEUSED ((FiboNode *) 1) /*+ Swapped vertex +*/ #define BGRAPHBIPARTFMSTATELINK ((FiboNode *) 2) /*+ Currently in gain table if higher +*/ /*+ Service routines. +*/ #define bgraphBipartFmTablInit(t) (fiboHeapInit ((t), bgraphBipartFmCmpFunc)) #define bgraphBipartFmTablFree(t) fiboHeapFree (t) #define bgraphBipartFmTablExit(t) fiboHeapExit (t) #define bgraphBipartFmTablAdd(t,v) fiboHeapAdd ((t), &(v)->gainlink) #define bgraphBipartFmTablDel(t,v) fiboHeapDel ((t), &(v)->gainlink) #define bgraphBipartFmIsFree(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTFMSTATEFREE) #define bgraphBipartFmIsTabl(v) ((v)->gainlink.linkdat.nextptr >= BGRAPHBIPARTFMSTATELINK) #define bgraphBipartFmIsUsed(v) ((v)->gainlink.linkdat.nextptr == BGRAPHBIPARTFMSTATEUSED) #define bgraphBipartFmSetFree(v) do { \ (v)->gainlink.linkdat.nextptr = BGRAPHBIPARTFMSTATEFREE; \ } while (0) #define bgraphBipartFmSetUsed(v) do { \ (v)->gainlink.linkdat.nextptr = BGRAPHBIPARTFMSTATEUSED; \ } while (0) #define bgraphBipartFmChain(l,v) do { \ (v)->gainlink.linkdat.prevptr = (FiboNode *) *(l); \ *(l) = (v); \ } while (0) #define bgraphBipartFmChainNext(v) ((BgraphBipartFmVertex *) (v)->gainlink.linkdat.prevptr) #endif /* SCOTCH_TABLE_GAIN */ scotch_6.0.9/src/libscotch/dgraph_fold_dup.c0000644000302600021200000001666713560005435021324 0ustar pelegrinpelegrin/* Copyright 2007-2009 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold_dup.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module folds a distributed graph **/ /** into two distinct copies, which may **/ /** be different when the number of **/ /** processes is odd. **/ /** **/ /** DATES : # Version 5.0 : from : 10 aug 2006 **/ /** to : 20 jun 2007 **/ /** # Version 5.1 : from : 14 nov 2008 **/ /** to : 28 oct 2009 **/ /** # Version 6.0 : from : 28 sep 2014 **/ /** to : 28 sep 2014 **/ /** **/ /************************************************************/ #define DGRAPH #define DGRAPH_FOLD_DUP #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_fold_dup.h" /******************************/ /* */ /* This routine handles */ /* distributed source graphs. */ /* */ /******************************/ /* This routine builds two folded graphs of ** a given graph on each of the two halves ** of the processes. The number of processes ** does not need to be even. There is a ** multi-threaded version, as well as a ** sequential one. ** It returns: ** - 0 : on success. ** - !0 : on error. */ #ifdef SCOTCH_PTHREAD static void * dgraphFoldDup2 ( void * const dataptr) /* Pointer to thread data */ { DgraphFoldDupData * fldthrdptr; fldthrdptr = (DgraphFoldDupData *) dataptr; return ((void *) (intptr_t) dgraphFold2 (fldthrdptr->orggrafptr, fldthrdptr->partval, fldthrdptr->fldgrafptr, fldthrdptr->fldproccomm, fldthrdptr->orgdataptr, fldthrdptr->flddataptr, fldthrdptr->datatype)); } #endif /* SCOTCH_PTHREAD */ int dgraphFoldDup ( const Dgraph * restrict const orggrafptr, Dgraph * restrict const fldgrafptr, void * restrict const orgdataptr, /* Un-based array of data which must be folded, e.g. coarmulttab */ void ** restrict const flddataptr, /* Un-based array of data which must be folded, e.g. coarmulttab */ MPI_Datatype datatype) { int fldprocnbr; int fldprocnum; int fldproccol; MPI_Comm fldproccommtab[2]; #ifdef SCOTCH_PTHREAD Dgraph orggrafdat; DgraphFoldDupData fldthrdtab[2]; pthread_t thrdval; /* Data of second thread */ #endif /* SCOTCH_PTHREAD */ int o; fldprocnbr = (orggrafptr->procglbnbr + 1) / 2; /* Median cut on number of processors */ if (orggrafptr->proclocnum < fldprocnbr) { /* Compute color and rank in two subparts */ fldproccol = 0; fldprocnum = orggrafptr->proclocnum; fldproccommtab[1] = MPI_COMM_NULL; } else { fldproccol = 1; fldprocnum = orggrafptr->proclocnum - fldprocnbr; fldproccommtab[0] = MPI_COMM_NULL; } if (MPI_Comm_split (orggrafptr->proccomm, fldproccol, fldprocnum, &fldproccommtab[fldproccol]) != MPI_SUCCESS) { errorPrint ("dgraphFoldDup: communication error (1)"); return (1); } #ifdef SCOTCH_PTHREAD orggrafdat = *orggrafptr; /* Create a separate graph structure to change its communicator */ fldthrdtab[0].orggrafptr = orggrafptr; fldthrdtab[0].fldgrafptr = fldgrafptr; fldthrdtab[0].fldproccomm = fldproccommtab[0]; fldthrdtab[0].partval = 0; fldthrdtab[0].orgdataptr = orgdataptr; fldthrdtab[0].flddataptr = flddataptr; fldthrdtab[0].datatype = datatype; fldthrdtab[1].orggrafptr = &orggrafdat; fldthrdtab[1].fldgrafptr = fldgrafptr; fldthrdtab[1].fldproccomm = fldproccommtab[1]; fldthrdtab[1].partval = 1; fldthrdtab[1].orgdataptr = orgdataptr; fldthrdtab[1].flddataptr = flddataptr; fldthrdtab[1].datatype = datatype; if (MPI_Comm_dup (orggrafptr->proccomm, &orggrafdat.proccomm) != MPI_SUCCESS) { /* Duplicate communicator to avoid interferences in communications */ errorPrint ("dgraphFoldDup: communication error (2)"); return (1); } if (pthread_create (&thrdval, NULL, dgraphFoldDup2, (void *) &fldthrdtab[1]) != 0) /* If could not create thread */ o = (int) (intptr_t) dgraphFold2 (orggrafptr, 0, fldgrafptr, fldproccommtab[0], orgdataptr, flddataptr, datatype) || /* Call routines in sequence */ (int) (intptr_t) dgraphFold2 (orggrafptr, 1, fldgrafptr, fldproccommtab[1], orgdataptr, flddataptr, datatype); else { /* Newly created thread is processing subgraph 1, so let's process subgraph 0 */ void * o2; o = (int) (intptr_t) dgraphFoldDup2 ((void *) &fldthrdtab[0]); /* Work on copy with private communicator */ pthread_join (thrdval, &o2); o |= (int) (intptr_t) o2; } MPI_Comm_free (&orggrafdat.proccomm); #else /* SCOTCH_PTHREAD */ o = (dgraphFold2 (orggrafptr, 0, fldgrafptr, fldproccommtab[0], orgdataptr, flddataptr, datatype) || /* Call routines in sequence */ dgraphFold2 (orggrafptr, 1, fldgrafptr, fldproccommtab[1], orgdataptr, flddataptr, datatype)); #endif /* SCOTCH_PTHREAD */ fldgrafptr->prockeyval = fldproccol; /* Discriminate between folded communicators at same level */ return (o); } scotch_6.0.9/src/libscotch/kdgraph.h0000644000302600021200000000744013465315041017616 0ustar pelegrinpelegrin/* Copyright 2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the data declarations **/ /** for the parallel k-way graph partiton- **/ /** ing structures and routines. **/ /** **/ /** DATES : # Version 5.1 : from : 31 mar 2008 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 29 aug 2012 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ The dynamic mapping structure. +*/ typedef struct Kdmapping_ { Dmapping * mappptr; /*+ Resulting mapping +*/ ArchDom domnorg; /*+ Initial domain +*/ } Kdmapping; /*+ The graph structure. +*/ typedef struct Kdgraph_ { Dgraph s; /*+ Source graph +*/ Kdmapping m; /*+ Mapping +*/ INT levlnum; } Kdgraph; /* ** The function prototypes. */ int kdgraphInit (Kdgraph * const, const Dgraph * restrict const, Dmapping * restrict const); void kdgraphExit (Kdgraph * const); int kdgraphFold (const Kdgraph *, const int, Kdgraph * const); int kdgraphFold2 (const Kdgraph *, const int, Kdgraph * const, MPI_Comm); #ifdef KGRAPH_H int kdgraphGather (Kdgraph *, Kgraph *); #endif /* KGRAPH_H */ scotch_6.0.9/src/libscotch/bgraph.h0000644000302600021200000002027313560005346017440 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the job control routines of the **/ /** Dual Recursive Bipartitioning method. **/ /** **/ /** DATES : # Version 0.0 : from : 23 mar 1993 **/ /** to 12 may 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 09 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 04 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 15 nov 1995 **/ /** to 15 nov 1995 **/ /** # Version 3.2 : from : 24 aug 1996 **/ /** to 03 nov 1997 **/ /** # Version 3.3 : from : 01 dec 1998 **/ /** to 02 dec 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 05 may 2006 **/ /** # Version 5.0 : from : 30 nov 2006 **/ /** to 30 nov 2006 **/ /** # Version 5.1 : from : 08 jan 2008 **/ /** to 18 mar 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ #define BGRAPH_H /* ** The type and structure definitions. */ /*+ Graph option flags. +*/ #define BGRAPHFREEFRON (GRAPHBITSNOTUSED) /* Free frontier array */ #define BGRAPHFREEPART (GRAPHBITSNOTUSED << 1) /* Free part array */ #define BGRAPHFREEVEEX (GRAPHBITSNOTUSED << 2) /* Free external gain array */ #define BGRAPHHASANCHORS (GRAPHBITSNOTUSED << 3) /* If graph has anchor vertices */ /*+ The bipartition graph structure. +*/ typedef struct Bgraph_ { Graph s; /*+ Source graph data +*/ Gnum * veextax; /*+ Array of vertex external gain if moved to part 1 +*/ GraphPart * parttax; /*+ Array of parts for every vertex +*/ Gnum * frontab; /*+ Array of frontier vertex numbers +*/ Gnum fronnbr; /*+ Number of frontier vertices +*/ Gnum compload0min; /*+ Minimum allowed load in part 0 (strategy variable) +*/ Gnum compload0max; /*+ Maximum allowed load in part 0 (strategy variable) +*/ Gnum compload0avg; /*+ Average load of part 0 +*/ Gnum compload0dlt; /*+ Difference from the average +*/ Gnum compload0; /*+ Load in part 0 (strategy variable) +*/ Gnum compsize0; /*+ Number of vertices in part 0 +*/ Gnum commload; /*+ Communication load +*/ Gnum commloadextn0; /*+ Communication load if all moved to part 0 +*/ Gnum commgainextn0; /*+ External gain if all swapped from part 0 +*/ Gnum commgainextn; /*+ External gain if all swapped +*/ double bbalval; /*+ Bipartitioning imbalance ratio (strategy variable) +*/ Anum domndist; /*+ Distance between subdomains +*/ Gnum domnwght[2]; /*+ Weights of the two subdomains +*/ Gnum vfixload[2]; /*+ Vertex load biases of the two subdomains +*/ INT levlnum; /*+ Coarsening level +*/ } Bgraph; /*+ The save graph structure. +*/ typedef struct BgraphStore_ { Gnum fronnbr; /*+ Number of frontier nodes +*/ Gnum compload0dlt; /*+ Difference from the average +*/ Gnum compsize0; /*+ Number of vertices in part 0 +*/ Gnum commload; /*+ Communication load +*/ Gnum commgainextn; /*+ External gain if all swapped +*/ byte * datatab; /*+ Variable-sized data array +*/ } BgraphStore; /* ** The function prototypes. */ int bgraphInit (Bgraph * restrict const, const Graph * restrict const, const Arch * restrict const, const ArchDom * restrict const, const Gnum * restrict const); void bgraphInit2 (Bgraph * restrict const, const Anum, const Anum, const Anum, const Gnum, const Gnum); void bgraphExit (Bgraph * restrict const); void bgraphSwal (Bgraph * restrict const); void bgraphZero (Bgraph * restrict const); int bgraphCheck (const Bgraph * restrict const); int bgraphStoreInit (const Bgraph * const, BgraphStore * const); void bgraphStoreExit (BgraphStore * const); void bgraphStoreSave (const Bgraph * const, BgraphStore * const); void bgraphStoreUpdt (Bgraph * const, const BgraphStore * const); scotch_6.0.9/src/libscotch/common.c0000644000302600021200000001217613560005430017455 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** David GOUDIN **/ /** Pascal HENON **/ /** Pierre RAMET **/ /** Yves SECRETAN (v5.1) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are common routines used **/ /** by all modules. **/ /** **/ /** DATES : # Version 0.0 : from : 08 may 1998 **/ /** to 14 sep 1998 **/ /** # Version 2.0 : from : 27 sep 2004 **/ /** to 27 sep 2004 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 23 nov 2010 **/ /** # Version 6.0 : from : 21 sep 2013 **/ /** to 21 sep 2013 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" /*******************/ /* */ /* Timing routine. */ /* */ /*******************/ double clockGet (void) { #ifdef MPI_INT return (MPI_Wtime ()); #else /* MPI_INT */ #if defined COMMON_WINDOWS double res = 0.0; LARGE_INTEGER fq; if (QueryPerformanceFrequency (&fq) == 0) { FILETIME ft; ULARGE_INTEGER t; GetSystemTimeAsFileTime (&ft); t.LowPart = ft.dwLowDateTime; t.HighPart = ft.dwHighDateTime; res = (double) t.QuadPart / 10000000.0; } else { LARGE_INTEGER pc; QueryPerformanceCounter (&pc); res = (double) pc.QuadPart / (double) fq.QuadPart; } return (res); #elif defined COMMON_TIMING_OLD /* Old Unix timing routine */ struct rusage data; getrusage (RUSAGE_SELF, &data); return (((double) data.ru_utime.tv_sec + (double) data.ru_stime.tv_sec) + ((double) data.ru_utime.tv_usec + (double) data.ru_stime.tv_usec) * 1.0e-6L); #else /* COMMON_TIMING_OLD */ #if defined (_POSIX_TIMERS) && (_POSIX_TIMERS >= 200112L) struct timespec tp; clock_gettime (CLOCK_REALTIME, &tp); /* Elapsed time */ return ((double) tp.tv_sec + (double) tp.tv_nsec * 1.0e-9L); #else /* defined (_POSIX_TIMERS) && (_POSIX_TIMERS >= 200112L) */ struct timeval tv; gettimeofday (&tv, NULL); return ((double) tv.tv_sec + (double) tv.tv_usec * 1.0e-6L); #endif /* defined (_POSIX_TIMERS) && (_POSIX_TIMERS >= 200112L) */ #endif /* COMMON_TIMING_OLD */ #endif /* MPI_INT */ } /***************************/ /* */ /* Usage printing routine. */ /* */ /***************************/ void usagePrint ( FILE * const stream, const char ** const data) { const char ** cptr; fprintf (stream, "Usage is:\n"); for (cptr = data; *cptr != NULL; cptr ++) fprintf (stream, " %s\n", *cptr); } scotch_6.0.9/src/libscotch/library_graph_induce.c0000644000302600021200000001110413560013261022330 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_induce.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 14 jan 2018 **/ /** to 21 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /* This routine builds the graph induced ** by the original graph and the list of ** selected vertices. ** The induced vnumtab array is the list ** array if the original graph does not have ** a vnumtab, or the proper subset of the ** original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int SCOTCH_graphInduceList ( const SCOTCH_Graph * restrict const orggrafptr, const SCOTCH_Num vnumnbr, const SCOTCH_Num * restrict const vnumtab, SCOTCH_Graph * restrict const indgrafptr) { return (graphInduceList ((const Graph * restrict const) orggrafptr, (const Gnum) vnumnbr, (const Gnum * restrict const) vnumtab, (Graph * const) indgrafptr)); } /* This routine builds the graph induced ** by the original graph and the vector ** of selected vertices. ** The induced vnumtab array is the list of ** selected vertices if the original graph ** does not have a vnumtab, or the proper ** subset of the original vnumtab else. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int SCOTCH_graphInducePart ( const SCOTCH_Graph * restrict const orggrafptr, const SCOTCH_Num vnumnbr, const SCOTCH_GraphPart2 * restrict const parttab, const SCOTCH_GraphPart2 partval, SCOTCH_Graph * restrict const indgrafptr) { return (graphInducePart ((const Graph * restrict const) orggrafptr, ((GraphPart * restrict const) parttab) - ((const Graph * const) orggrafptr)->baseval, (const Gnum) vnumnbr, (const GraphPart) partval, (Graph * restrict const) indgrafptr)); } scotch_6.0.9/src/libscotch/library_dgraph_order_gather_f.c0000644000302600021200000001021513560013261024201 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_gather_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed ordering gathering routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 21 jul 2007 **/ /** to 22 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ DGRAPHCORDERINIT, dgraphcorderinit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Ordering * const ordeptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (grafptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_dgraphCorderInit (grafptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHCORDEREXIT, dgraphcorderexit, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Ordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_dgraphCorderExit (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ DGRAPHORDERGATHER, dgraphordergather, ( \ const SCOTCH_Dgraph * const grafptr, \ SCOTCH_Dordering * const dordptr, \ SCOTCH_Ordering * const cordptr, \ int * const revaptr), \ (grafptr, dordptr, cordptr, revaptr)) { *revaptr = SCOTCH_dgraphOrderGather (grafptr, dordptr, cordptr); } scotch_6.0.9/src/libscotch/mesh_io_scot.c0000644000302600021200000003004113466077161020646 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_io_scot.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the I/O routines **/ /** for handling the Scotch mesh format. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to 19 jan 2004 **/ /** # Version 5.0 : from : 13 sep 2006 **/ /** to 27 feb 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 28 apr 2019 **/ /** to 28 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH_IO_SCOT #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" #include "mesh.h" #include "mesh_io_scot.h" /* This routine loads the geometrical mesh ** in the Scotch graph format, and allocates ** the proper structures. ** - 0 : on success. ** - !0 : on error. */ int meshGeomLoadScot ( Mesh * restrict const meshptr, /* Graph to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { double * restrict coorfiletab; /* Pointer to geometric data read from file */ MeshGeomScotSort * restrict coorsorttab; /* Pointer to geometric data sorting array */ int coorsortflag; /* Flag set if geometric data sorted by label */ Gnum coornbr; /* Number of geometric coordinates in file */ Gnum coornum; /* Number of current coordinate */ MeshGeomScotSort * restrict vnodsorttab; /* Pointer to graph sorting array */ int vnodsortflag; /* Flag set if graph data sorted by label */ Gnum vnodnum; /* Current graph vertex */ Gnum dimnnbr; /* Dimension of geometry file */ int o; if (filesrcptr != NULL) { if (meshLoad (meshptr, filesrcptr, -1) != 0) return (1); } if (filegeoptr == NULL) return (0); if ((intLoad (filegeoptr, &dimnnbr) != 1) || /* Read type and number of geometry items */ (intLoad (filegeoptr, &coornbr) != 1) || (dimnnbr < 1) || (dimnnbr > 3)) { errorPrint ("meshGeomLoadScot: bad input (1)"); return (1); } if ((filesrcptr != NULL) && (meshptr->vnodnbr != coornbr)) { errorPrint ("meshGeomLoadScot: inconsistent number of vertices"); return (1); } if (meshptr->vnodnbr == 0) return (0); if ((geomptr->geomtab == NULL) && /* Allocate geometry if necessary */ ((geomptr->geomtab = (double *) memAlloc (meshptr->vnodnbr * dimnnbr * sizeof (double))) == NULL)) { errorPrint ("meshGeomLoadScot: out of memory (1)"); return (1); } if (memAllocGroup ((void **) &coorfiletab, (size_t) (coornbr * dimnnbr * sizeof (double)), &coorsorttab, (size_t) (coornbr * sizeof (MeshGeomScotSort)), &vnodsorttab, (size_t) (meshptr->vnodnbr * sizeof (MeshGeomScotSort)), NULL) == NULL) { errorPrint ("meshGeomLoadScot: out of memory (2)"); return (1); } o = 0; coorsortflag = 1; /* Assume geometry data sorted */ for (coornum = 0; (o == 0) && (coornum < coornbr); coornum ++) { Gnum vlblnum; o = 1 - intLoad (filegeoptr, &vlblnum); coorsorttab[coornum].labl = vlblnum; coorsorttab[coornum].num = coornum; if ((coornum > 0) && /* Check if geometry data sorted */ (coorsorttab[coornum].labl < coorsorttab[coornum - 1].labl)) coorsortflag = 0; /* Geometry data not sorted */ o |= 1 - fscanf (filegeoptr, "%lf", /* Read X coordinate */ &coorfiletab[coornum * dimnnbr]); if (dimnnbr > 1) { o |= 1 - fscanf (filegeoptr, "%lf", /* Read Y coordinate */ &coorfiletab[(coornum * dimnnbr) + 1]); if (dimnnbr > 2) o |= 1 - fscanf (filegeoptr, "%lf", /* Read Z coordinate */ &coorfiletab[(coornum * dimnnbr) + 2]); } } if (o != 0) { errorPrint ("meshGeomLoadScot: bad input (2)"); memFree (coorfiletab); /* Free group leader */ return (1); } if (coorsortflag != 1) /* If geometry data not sorted */ intSort2asc1 (coorsorttab, coornbr); /* Sort sort area by ascending labels */ for (coornum = 1; coornum < coornbr; coornum ++) { /* Check geometric data integrity */ if (coorsorttab[coornum].labl == coorsorttab[coornum - 1].labl) { errorPrint ("meshGeomLoadScot: duplicate vertex label"); memFree (coorfiletab); /* Free group leader */ return (1); } } if (meshptr->vlbltax != NULL) { /* If graph has vertex labels */ vnodsortflag = 1; /* Assume graph data sorted */ for (vnodnum = 0; vnodnum < meshptr->vnodnbr; vnodnum ++) { vnodsorttab[vnodnum].labl = meshptr->vlbltax[vnodnum + meshptr->baseval]; vnodsorttab[vnodnum].num = vnodnum; if ((vnodnum > 0) && /* Check if graph data sorted */ (vnodsorttab[vnodnum].labl < vnodsorttab[vnodnum - 1].labl)) vnodsortflag = 0; /* Graph data not sorted */ } if (vnodsortflag != 1) /* If graph data not sorted */ intSort2asc1 (vnodsorttab, meshptr->vnodnbr); /* Sort sort area by ascending labels */ } else { /* Graph does not have vertex labels */ for (vnodnum = 0; vnodnum < meshptr->vnodnbr; vnodnum ++) vnodsorttab[vnodnum].labl = vnodsorttab[vnodnum].num = vnodnum; } for (coornum = vnodnum = 0; vnodnum < meshptr->vnodnbr; vnodnum ++) { /* For all vertices in graph */ while ((coornum < coornbr) && (coorsorttab[coornum].labl < vnodsorttab[vnodnum].labl)) coornum ++; /* Search geometry vertex with same label */ if ((coornum >= coornbr) || (coorsorttab[coornum].labl > vnodsorttab[vnodnum].labl)) { /* If label does not exist */ errorPrint ("meshGeomLoadScot: vertex geometry data not found (%d)", vnodsorttab[vnodnum].labl); memFree (coorfiletab); /* Free group leader */ return (1); } memCpy (&geomptr->geomtab[vnodsorttab[vnodnum].num * dimnnbr], &coorfiletab[coorsorttab[coornum ++].num * dimnnbr], dimnnbr * sizeof (double)); } memFree (coorfiletab); /* Free group leader */ return (0); } /* This routine saves the source mesh ** in the Scotch mesh and geometry formats. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int meshGeomSaveScot ( const Mesh * restrict const meshptr, /* Mesh to save */ const Geom * restrict const geomptr, /* Geometry to save */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { Gnum vnodnum; int dimnnbr; int o; if (filesrcptr != NULL) { if (meshSave (meshptr, filesrcptr) != 0) /* Save mesh structural data */ return (1); } dimnnbr = geomptr->dimnnbr; o = 0; if (geomptr->geomtab != NULL) { /* If geometrical data present */ o = (fprintf (filegeoptr, GNUMSTRING "\n" GNUMSTRING "\n", /* Output file header */ (Gnum) geomptr->dimnnbr, (Gnum) meshptr->vnodnbr) == EOF); switch (dimnnbr) { /* Output geometry data */ case 1 : for (vnodnum = meshptr->vnodbas; (o == 0) && (vnodnum < meshptr->vnodnnd); vnodnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\n", (Gnum) ((meshptr->vlbltax != NULL) ? meshptr->vlbltax[vnodnum] : vnodnum), (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr]) == EOF); break; case 2 : for (vnodnum = meshptr->vnodbas; (o == 0) && (vnodnum < meshptr->vnodnnd); vnodnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\t%lf\n", (Gnum) ((meshptr->vlbltax != NULL) ? meshptr->vlbltax[vnodnum] : vnodnum), (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr], (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr + 1]) == EOF); break; case 3 : for (vnodnum = meshptr->vnodbas; (o == 0) && (vnodnum < meshptr->vnodnnd); vnodnum ++) o |= (fprintf (filegeoptr, GNUMSTRING "\t%lf\t%lf\t%lf\n", (Gnum) ((meshptr->vlbltax != NULL) ? meshptr->vlbltax[vnodnum] : vnodnum), (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr], (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr + 1], (double) geomptr->geomtab[(vnodnum - meshptr->vnodbas) * dimnnbr + 2]) == EOF); break; #ifdef SCOTCH_DEBUG_MESH2 default : errorPrint ("meshGeomSaveScot: invalid geometry type"); return (1); #endif /* SCOTCH_DEBUG_MESH2 */ } if (o != 0) { errorPrint ("meshGeomSaveScot: bad output"); } } return (o); } scotch_6.0.9/src/libscotch/dmapping_io.c0000644000302600021200000002766113303015264020461 0ustar pelegrinpelegrin/* Copyright 2008,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dmapping_io.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** mappings. **/ /** **/ /** DATES : # Version 5.1 : from : 13 jun 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 29 oct 2014 **/ /** to 29 oct 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "comm.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "arch.h" #include "dmapping.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ DGRAPHALLREDUCEMAXSUMOP (1, 5) /* This routine saves a distributed mapping. ** The distributed graph structure is provided ** to access the distribution of vertex labels, ** whenever present. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dmapSave ( const Dmapping * restrict const dmapptr, const Dgraph * restrict const grafptr, FILE * restrict const stream) { const DmappingFrag * restrict fragptr; Gnum fragglbnbr; Gnum * restrict termloctab; Gnum * restrict termrcvtab; Gnum vertrcvmax; Gnum vertglbnbr; Gnum * restrict vlbltax; Gnum reduloctab[6]; Gnum reduglbtab[6]; int protnum; reduloctab[0] = dmapptr->vertlocmax; reduloctab[1] = dmapptr->vertlocnbr; reduloctab[2] = dmapptr->fragnbr; if (stream != NULL) { /* If file provided */ reduloctab[3] = 1; /* This process is the root */ reduloctab[4] = grafptr->proclocnum; /* Get its rank */ } else { reduloctab[3] = /* This process is not the root */ reduloctab[4] = 0; } reduloctab[5] = (grafptr->vlblloctax != NULL) ? 1 : 0; /* See if vertex labels provided */ if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 1, 5, grafptr->proccomm) != 0) { errorPrint ("dmapSave: communication error (1)"); return (1); } if (reduglbtab[3] != 1) { errorPrint ("dmapSave: should have only one root"); return (1); } if ((reduglbtab[5] != 0) && (reduglbtab[5] != grafptr->procglbnbr)) { errorPrint ("dmapSave: inconsistent parameters"); return (1); } if ((reduglbtab[1] < 0) && (reduglbtab[1] > grafptr->procglbnbr)) { errorPrint ("dmapSave: invalid mapping (1)"); return (1); } vertrcvmax = reduglbtab[0]; /* Size of largest fragment to receive */ vertglbnbr = reduglbtab[1]; fragglbnbr = reduglbtab[2]; protnum = (int) reduglbtab[4]; /* Get rank of root process */ reduloctab[0] = 0; if (protnum == grafptr->proclocnum) { Gnum vlblnbr; vlblnbr = (grafptr->vlblloctax != NULL) ? grafptr->vertglbnbr : 0; if ((termloctab = memAllocGroup ((void **) (void *) /* termloctab not used on root processor, but used only for freeing the block */ &termrcvtab, (size_t) (vertrcvmax * 2 * sizeof (Gnum)), /* TRICK: "*2" as vnumrcvtab is sent after termrcvtab */ &vlbltax, (size_t) (vlblnbr * sizeof (Gnum)), NULL)) == NULL) { errorPrint ("dmapSave: out of memory (1)"); reduloctab[0] = 1; } else if (fprintf (stream, GNUMSTRING "\n", (Gnum) vertglbnbr) == EOF) { errorPrint ("dmapSave: bad output (1)"); reduloctab[0] = 1; } } else { vlbltax = NULL; /* Prevent Valgrind from yelling */ if ((termloctab = memAlloc (dmapptr->vertlocmax * sizeof (Gnum))) == NULL) { errorPrint ("dmapSave: out of memory (2)"); reduloctab[0] = 1; } } #ifdef SCOTCH_DEBUG_DMAP1 /* This communication cannot be covered by a useful one */ if (MPI_Allreduce (reduloctab, reduglbtab, 1, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapSave: communication error (2)"); reduglbtab[0] = 1; } #else /* SCOTCH_DEBUG_DMAP1 */ reduglbtab[0] = reduloctab[0]; #endif /* SCOTCH_DEBUG_DMAP1 */ if (reduglbtab[0] != 0) { if (termloctab != NULL) memFree (termloctab); /* Free group leader */ return (1); } if (grafptr->vlblloctax != NULL) { if (commGatherv (grafptr->vlblloctax + grafptr->baseval, grafptr->vertlocnbr, GNUM_MPI, vlbltax, grafptr->proccnttab, grafptr->procdsptab, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapSave: communication error (3)"); return (1); } vlbltax -= grafptr->baseval; /* Base label array */ } if (protnum == grafptr->proclocnum) { Gnum vertrcvnbr; Gnum * restrict vnumrcvptr; Gnum * restrict termrcvptr; for (fragptr = dmapptr->fragptr; fragptr != NULL; fragptr = fragptr->nextptr) { /* Output local fragments */ Gnum fraglocnum; for (fraglocnum = 0; fraglocnum < fragptr->vertnbr; fraglocnum ++) { Gnum vnumnum; Gnum termnum; vnumnum = fragptr->vnumtab[fraglocnum]; #ifdef SCOTCH_DEBUG_DMAP2 if ((vnumnum < 0) || (vnumnum >= (grafptr->vertglbnbr + grafptr->baseval))) { errorPrint ("dmapSave: invalid mapping (2)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ termnum = archDomNum (&dmapptr->archdat, &fragptr->domntab[fragptr->parttab[fraglocnum]]); if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((grafptr->vlblloctax != NULL) ? vlbltax[vnumnum] : vnumnum), (Gnum) termnum) == EOF) { errorPrint ("dmapSave: bad output (2)"); reduloctab[0] = 1; break; } } } for (fragglbnbr -= dmapptr->fragnbr; fragglbnbr > 0; fragglbnbr --) { /* For all non-local fragments */ Gnum * restrict termrcvnnd; MPI_Status statdat; int recvnbr; if (MPI_Recv (termrcvtab, (int) (vertrcvmax * 2), GNUM_MPI, MPI_ANY_SOURCE, MPI_ANY_TAG, grafptr->proccomm, &statdat) != MPI_SUCCESS) { errorPrint ("dmapSave: communication error (4)"); /* TRICK: "*2" as vnumrcvtab is sent after termrcvtab */ return (1); } if (reduloctab[0] != 0) continue; MPI_Get_count (&statdat, GNUM_MPI, &recvnbr); vertrcvnbr = (Gnum) (recvnbr / 2); /* We received a composite message made of both vectors */ vnumrcvptr = termrcvtab + vertrcvnbr; /* Vertex index array is just after terminal number array */ for (termrcvptr = termrcvtab, termrcvnnd = termrcvtab + vertrcvnbr; termrcvptr < termrcvnnd; termrcvptr ++, vnumrcvptr ++) { if (fprintf (stream, GNUMSTRING "\t" GNUMSTRING "\n", (Gnum) ((grafptr->vlblloctax != NULL) ? vlbltax[*vnumrcvptr] : *vnumrcvptr), (Gnum) *termrcvptr) == EOF) { errorPrint ("dmapSave: bad output (3)"); reduloctab[0] = 1; break; } } } } else { int typecnttab[2]; MPI_Aint typedsptab[2]; MPI_Datatype typedat; for (fragptr = dmapptr->fragptr; fragptr != NULL; fragptr = fragptr->nextptr) { /* Output local fragments */ Gnum fraglocnum; for (fraglocnum = 0; fraglocnum < fragptr->vertnbr; fraglocnum ++) { #ifdef SCOTCH_DEBUG_DMAP2 Gnum vnumnum; vnumnum = fragptr->vnumtab[fraglocnum]; if ((vnumnum < 0) || (vnumnum >= (grafptr->vertglbnbr + grafptr->baseval))) { errorPrint ("dmapSave: invalid mapping (3)"); return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ termloctab[fraglocnum] = archDomNum (&dmapptr->archdat, &fragptr->domntab[fragptr->parttab[fraglocnum]]); } #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Address (termloctab, &typedsptab[0]); MPI_Address (fragptr->vnumtab, &typedsptab[1]); #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Get_address (termloctab, &typedsptab[0]); MPI_Get_address (fragptr->vnumtab, &typedsptab[1]); #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ typedsptab[1] -= typedsptab[0]; typedsptab[0] = 0; typecnttab[0] = typecnttab[1] = (int) fragptr->vertnbr; #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Type_hindexed (2, typecnttab, typedsptab, GNUM_MPI, &typedat); #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Type_create_hindexed (2, typecnttab, typedsptab, GNUM_MPI, &typedat); #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Type_commit (&typedat); if (MPI_Send (termloctab, 1, typedat, protnum, 0, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapSave: communication error (5)"); return (1); } MPI_Type_free (&typedat); } } memFree (termloctab); /* Free group leader */ #ifdef SCOTCH_DEBUG_DMAP1 /* This communication cannot be covered by a useful one */ if (MPI_Allreduce (reduloctab, reduglbtab, 1, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dmapSave: communication error (6)"); reduglbtab[0] = 1; } #else /* SCOTCH_DEBUG_DMAP1 */ reduglbtab[0] = reduloctab[0]; #endif /* SCOTCH_DEBUG_DMAP1 */ return ((int) reduglbtab[0]); } scotch_6.0.9/src/libscotch/library_dgraph_stat.c0000644000302600021200000003007513560013261022210 0ustar pelegrinpelegrin/* Copyright 2007,2008,2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_stat.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 23 jun 2007 **/ /** to 03 apr 2008 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "library_dgraph_stat.h" #include "ptscotch.h" /* ** The static variables. */ static int dgraphstatblentab[2] = { 7, 3 }; static MPI_Datatype dgraphstattypetab[2] = { GNUM_MPI, MPI_DOUBLE }; /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /* This routine is the reduction-loc operator which ** returns in inout[2] the rank of the process which ** holds the best partition. ** It returns: ** - void : in all cases. */ static void dgraphStatReduceAll ( const DgraphStatData * const in, /* First operand */ DgraphStatData * const inout, /* Second and output operand */ const int * const len, /* Number of instances; should be 1, not used */ const MPI_Datatype * const typedat) /* MPI datatype; not used */ { if (inout->velomin > in->velomin) inout->velomin = in->velomin; if (inout->velomax < in->velomax) inout->velomax = in->velomax; if (inout->degrmin > in->degrmin) inout->degrmin = in->degrmin; if (inout->degrmax < in->degrmax) inout->degrmax = in->degrmax; if (inout->edlomin > in->edlomin) inout->edlomin = in->edlomin; if (inout->edlomax < in->edlomax) inout->edlomax = in->edlomax; inout->edlosum += in->edlosum; inout->velodlt += in->velodlt; inout->degrdlt += in->degrdlt; inout->edlodlt += in->edlodlt; } /*+ This routine computes statistics *** on the given distributed graph. *** It returns: *** - VOID : in all cases. +*/ int SCOTCH_dgraphStat ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Num * const velominptr, SCOTCH_Num * const velomaxptr, SCOTCH_Num * const velosumptr, double * veloavgptr, double * velodltptr, SCOTCH_Num * const degrminptr, SCOTCH_Num * const degrmaxptr, double * degravgptr, double * degrdltptr, SCOTCH_Num * const edlominptr, SCOTCH_Num * const edlomaxptr, SCOTCH_Num * const edlosumptr, double * edloavgptr, double * edlodltptr) { const Dgraph * srcgrafptr; DgraphStatData srcgstadat; DgraphStatData srclstadat; MPI_Datatype srctypedat; MPI_Aint srcdisptab[2]; MPI_Op srcoperdat; Gnum vertlocnum; double veloglbavg; double velolocdlt; Gnum degrlocmin; Gnum degrlocmax; double degrglbavg; double degrlocdlt; Gnum edloglbsum; double edloglbavg; double edlolocdlt; int o; srcgrafptr = (Dgraph *) grafptr; velolocdlt = 0.0L; if (srcgrafptr->vertglbnbr > 0) { if (srcgrafptr->veloloctax != NULL) { /* If graph has vertex loads */ const Gnum * restrict veloloctax; Gnum velolocmin; Gnum velolocmax; veloloctax = srcgrafptr->veloloctax; velolocmin = GNUMMAX; velolocmax = 0; veloglbavg = (double) srcgrafptr->veloglbsum / (double) srcgrafptr->vertglbnbr; for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) { Gnum velolocval; velolocval = veloloctax[vertlocnum]; if (velolocval < velolocmin) velolocmin = velolocval; if (velolocval > velolocmax) velolocmax = velolocval; velolocdlt += fabs ((double) velolocval - veloglbavg); } srclstadat.velomin = velolocmin; srclstadat.velomax = velolocmax; } else { srclstadat.velomin = srclstadat.velomax = 1; veloglbavg = 1.0L; } } else { srclstadat.velomin = srclstadat.velomax = 0; veloglbavg = 0.0L; } srclstadat.velodlt = velolocdlt; degrlocmax = 0; degrlocdlt = 0.0L; if (srcgrafptr->vertglbnbr > 0) { degrlocmin = GNUMMAX; degrglbavg = (double) srcgrafptr->edgeglbnbr / (double) srcgrafptr->vertglbnbr; for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) { Gnum degrlocval; degrlocval = srcgrafptr->vendloctax[vertlocnum] - srcgrafptr->vertloctax[vertlocnum]; /* Get vertex degree */ if (degrlocval < degrlocmin) degrlocmin = degrlocval; if (degrlocval > degrlocmax) degrlocmax = degrlocval; degrlocdlt += fabs ((double) degrlocval - degrglbavg); } } else { degrlocmin = 0; degrglbavg = 0.0L; } srclstadat.degrmin = degrlocmin; srclstadat.degrmax = degrlocmax; srclstadat.degrdlt = degrlocdlt; edlolocdlt = 0.0L; if (srcgrafptr->edgeglbnbr > 0) { if (srcgrafptr->edloloctax != NULL) { /* If graph has edge loads */ Gnum edlolocmin; Gnum edlolocmax; Gnum edlolocsum; edlolocmin = GNUMMAX; edlolocmax = 0; edlolocsum = 0; for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = srcgrafptr->vertloctax[vertlocnum]; edgelocnum < srcgrafptr->vendloctax[vertlocnum]; edgelocnum ++) { Gnum edlolocval; edlolocval = srcgrafptr->edloloctax[edgelocnum]; edlolocsum += edlolocval; if (edlolocval < edlolocmin) /* Account for edge load */ edlolocmin = edlolocval; if (edlolocval > edlolocmax) edlolocmax = edlolocval; } } if (MPI_Allreduce (&edlolocsum, &edloglbsum, 1, GNUM_MPI, MPI_SUM, srcgrafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphStat) ": communication error (1)"); return (1); } edloglbavg = (double) edloglbsum / (double) (2 * srcgrafptr->edgeglbnbr); for (vertlocnum = srcgrafptr->baseval; vertlocnum < srcgrafptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; for (edgelocnum = srcgrafptr->vertloctax[vertlocnum]; edgelocnum < srcgrafptr->vendloctax[vertlocnum]; edgelocnum ++) edlolocdlt += fabs ((double) srcgrafptr->edloloctax[edgelocnum] - edloglbavg); } } else { srclstadat.edlomin = srclstadat.edlomax = 1; edloglbsum = srcgrafptr->edgeglbnbr / 2; edloglbavg = 1.0L; } } else { srclstadat.edlomin = srclstadat.edlomax = 0; edloglbsum = 0; edloglbavg = 0.0L; } srclstadat.edlodlt = edlolocdlt; #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) MPI_Address (&srclstadat.velomin, &srcdisptab[0]); MPI_Address (&srclstadat.velodlt, &srcdisptab[1]); #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ MPI_Get_address (&srclstadat.velomin, &srcdisptab[0]); MPI_Get_address (&srclstadat.velodlt, &srcdisptab[1]); #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ srcdisptab[1] -= srcdisptab[0]; srcdisptab[0] = 0; o = 1; /* Assume something will go wrong */ #if ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) if ((MPI_Type_struct (2, dgraphstatblentab, srcdisptab, dgraphstattypetab, &srctypedat) == MPI_SUCCESS) && #else /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ if ((MPI_Type_create_struct (2, dgraphstatblentab, srcdisptab, dgraphstattypetab, &srctypedat) == MPI_SUCCESS) && #endif /* ((defined COMMON_MPI_VERSION) && (COMMON_MPI_VERSION <= 100)) */ (MPI_Type_commit (&srctypedat) == MPI_SUCCESS)) { if (MPI_Op_create ((MPI_User_function *) dgraphStatReduceAll, 0, &srcoperdat) == MPI_SUCCESS) { if (MPI_Allreduce (&srclstadat, &srcgstadat, 1, srctypedat, srcoperdat, srcgrafptr->proccomm) == MPI_SUCCESS) o = 0; MPI_Op_free (&srcoperdat); } MPI_Type_free (&srctypedat); } if (o != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphStat) ": communication error (2)"); return (1); } if (velominptr != NULL) *velominptr = (SCOTCH_Num) srcgstadat.velomin; if (velomaxptr != NULL) *velomaxptr = (SCOTCH_Num) srcgstadat.velomax; if (velosumptr != NULL) *velosumptr = (SCOTCH_Num) srcgrafptr->veloglbsum; if (veloavgptr != NULL) *veloavgptr = (double) veloglbavg; if (velodltptr != NULL) *velodltptr = srcgstadat.velodlt / (double) srcgrafptr->vertglbnbr; if (degrminptr != NULL) *degrminptr = (SCOTCH_Num) srcgstadat.degrmin; if (degrmaxptr != NULL) *degrmaxptr = (SCOTCH_Num) srcgstadat.degrmax; if (degravgptr != NULL) *degravgptr = (double) degrglbavg; if (degrdltptr != NULL) *degrdltptr = srcgstadat.degrdlt / (double) srcgrafptr->vertglbnbr; if (edlominptr != NULL) *edlominptr = (SCOTCH_Num) srcgstadat.edlomin; if (edlomaxptr != NULL) *edlomaxptr = (SCOTCH_Num) srcgstadat.edlomax; if (edlosumptr != NULL) *edlosumptr = (SCOTCH_Num) edloglbsum; if (edloavgptr != NULL) *edloavgptr = (double) edloglbavg; if (edlodltptr != NULL) *edlodltptr = srcgstadat.edlodlt / (double) srcgrafptr->edgeglbnbr; return (0); } scotch_6.0.9/src/libscotch/graph_band.c0000644000302600021200000001743313470115365020264 0ustar pelegrinpelegrin/* Copyright 2010,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_band.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a band graph **/ /** from the given frontier array. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2010 **/ /** to : 22 sep 2011 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** dgraph_band.c in version 5.1. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_BAND #include "module.h" #include "common.h" #include "graph.h" /**********************************/ /* */ /* Distance computation routines. */ /* */ /**********************************/ /* This routine computes an index array ** of given width around the current separator. ** It returns: ** - 0 : if the index array could be computed. ** - !0 : on error. */ int graphBand ( const Graph * restrict const grafptr, /*+ Graph +*/ const Gnum queunbr, /*+ Number of frontier vertices, start size for vertex queue +*/ Gnum * restrict const queutab, /*+ Array of frontier vertices, re-used as queue array +*/ const Gnum distmax, /*+ Maximum distance from separator vertices +*/ Gnum * restrict * restrict const vnumptr, /*+ Pointer to vnumtax +*/ Gnum * restrict const bandvertlvlptr, /*+ Pointer to based start index of last level +*/ Gnum * restrict const bandvertptr, /*+ Pointer to bandvertnbr +*/ Gnum * restrict const bandedgeptr, /*+ Pointer to bandedgenbr +*/ const Gnum * restrict const pfixtax, /*+ Fixed partition array +*/ Gnum * restrict const bandvfixptr) /*+ Pointer to bandvfixnbr +*/ { Gnum queunum; Gnum * restrict vnumtax; /* Index array for vertices kept in band graph */ Gnum queuheadidx; /* Index of head of queue */ Gnum queutailidx; /* Index of tail of queue */ Gnum bandvertlvlnum; Gnum bandvertnum; Gnum bandedgenbr; Gnum distval; Gnum bandvfixnbr; /* Number of band fixed vertices */ const Gnum * restrict const verttax = grafptr->verttax; const Gnum * restrict const vendtax = grafptr->vendtax; const Gnum * restrict const edgetax = grafptr->edgetax; if ((vnumtax = memAlloc (grafptr->vertnbr * sizeof (Gnum))) == NULL) { errorPrint ("graphBand: out of memory (1)"); return (1); } bandvertlvlnum = /* Start index of last level is start index */ bandvertnum = grafptr->baseval; /* Reset number of band vertices */ bandedgenbr = bandvfixnbr = 0; memSet (vnumtax, ~0, grafptr->vertnbr * sizeof (Gnum)); /* Reset part array */ vnumtax -= grafptr->baseval; for (queunum = 0; queunum < queunbr; queunum ++) { /* All frontier vertices will be first vertices of band graph */ Gnum vertnum; vertnum = queutab[queunum]; if ((pfixtax != NULL) && (pfixtax[vertnum] != -1)) { /* It is a fixed vertex */ vnumtax[vertnum] = -2; /* Set vertex as fixed */ bandvfixnbr ++; } else vnumtax[vertnum] = bandvertnum ++; /* Keep frontier vertex in band */ bandedgenbr += vendtax[vertnum] - verttax[vertnum]; /* Account for its edges */ } queuheadidx = 0; /* No queued vertex read yet */ queutailidx = queunbr; /* All frontier vertices are already in queue */ for (distval = 0; ++ distval <= distmax; ) { Gnum queunextidx; /* Tail index for enqueuing vertices of next band */ bandvertlvlnum = bandvertnum; *bandvertlvlptr = bandvertlvlnum; /* Save start index of current level, based */ for (queunextidx = queutailidx; queuheadidx < queutailidx; ) { /* For all vertices in queue */ Gnum vertnum; Gnum edgenum; vertnum = queutab[queuheadidx ++]; /* Dequeue vertex */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; if (vnumtax[vertend] != ~0) /* If end vertex has already been processed */ continue; /* Skip to next vertex */ if ((pfixtax != NULL) && (pfixtax[vertend] != -1)) { /* If fixed vertex */ vnumtax[vertend] = -2; /* Set vertex as fixed */ bandvfixnbr ++; } else vnumtax[vertend] = bandvertnum ++; /* Enqueue vertex label */ bandedgenbr += vendtax[vertend] - verttax[vertend]; /* Account for its edges */ queutab[queunextidx ++] = vertend; /* Enqueue vertex for next pass */ } } queutailidx = queunextidx; /* Prepare queue for next sweep */ } *vnumptr = vnumtax; *bandvfixptr = bandvfixnbr; *bandvertptr = bandvertnum - grafptr->baseval; *bandedgeptr = bandedgenbr; return (0); } scotch_6.0.9/src/libscotch/kgraph_map_fm.c0000644000302600021200000024536213470115365020776 0ustar pelegrinpelegrin/* Copyright 2004,2010-2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_fm.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module refines a k-way mapping of **/ /** the given mapping graph by applying a **/ /** Fiduccia-Mattheyses-like gradient **/ /** method. **/ /** **/ /** DATES : # Version 6.0 : from : 03 mar 2011 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_FM #define SCOTCH_TABLE_GAIN #include "module.h" #include "common.h" #include "gain.h" #include "fibo.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "parser.h" #include "kgraph.h" #include "kgraph_map_fm.h" #include "kgraph_map_st.h" /* ** The static variables. */ static const Gnum kgraphloadone = 1; static const Gnum kgraphnotfixed = -1; /*********************************/ /* */ /* Gain table handling routines. */ /* */ /*********************************/ /* This routine returns the vertex of best gain ** whose swap will keep the balance correct. ** It returns: ** - !NULL : pointer to the vertex. ** - NULL : if no more vertices available. */ #ifdef SCOTCH_TABLE_GAIN static KgraphMapFmEdge * kgraphMapFmTablGet ( KgraphMapFmTabl * restrict const tablptr, /*+ Gain table +*/ KgraphMapFmVertex * restrict const vexxtab, /*+ Extended vertex hash table array +*/ const Gnum * restrict const comploaddlt, /*+ Current imbalance array +*/ const Gnum * restrict const comploadmax, /*+ Maximum imbalance array +*/ Gnum * restrict comploaddiff, Gnum * restrict flagval) { GainTabl * gaintab; KgraphMapFmEdge * edxxptr; KgraphMapFmEdge * edxxbest; Gnum gainbest; const GainEntr * restrict tablbest; Gnum deltbest; gaintab = *tablptr; tablbest = gaintab->tend; /* Assume no candidate vertex found yet */ gainbest = GAINMAX; edxxbest = NULL; deltbest = GNUMMAX; for (edxxptr = (KgraphMapFmEdge *) gainTablFrst (gaintab); /* Select candidate edges */ (edxxptr != NULL) && (edxxptr->gainlink.tabl < tablbest); edxxptr = (KgraphMapFmEdge *) gainTablNext (gaintab, &edxxptr->gainlink)) { Gnum vexxidx; Gnum veloval; Anum domnnumold; Anum domnnumnew; Gnum deltvalold; Gnum deltvalnew; Gnum deltnew; Gnum commgain; vexxidx = edxxptr->vexxidx; veloval = vexxtab[vexxidx].veloval; #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].lockptr != NULL) { /* If vertex is locked */ errorPrint ("kgraphMapFmTablGet: internal error (1)"); return (NULL); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ domnnumold = vexxtab[vexxidx].domnnum; domnnumnew = edxxptr->domnnum; deltvalold = abs (comploaddlt[domnnumold] - veloval); deltvalnew = abs (comploaddlt[domnnumnew] + veloval); if (((deltvalold > comploadmax[domnnumold]) && (deltvalold >= abs (comploaddlt[domnnumold]))) || /* If vertex does not enforce or improve balance, skip it */ ((deltvalnew > comploadmax[domnnumnew]) && (deltvalnew >= abs (comploaddlt[domnnumnew])))) { if (edxxptr->cmigmask == ~0) { edxxptr->cmigmask = 0; kgraphMapFmTablDel (&gaintab, edxxptr); kgraphMapFmTablAdd (&gaintab, edxxptr); } continue; } deltnew = deltvalold - abs (comploaddlt[domnnumold]) + /* Compute difference in imbalance load sum */ deltvalnew - abs (comploaddlt[domnnumnew]); commgain = edxxptr->commgain + edxxptr->cmiggain; if ((commgain < gainbest) || /* And if it gives better gain */ ((commgain == gainbest) && /* Or if it gives better load */ (deltnew < deltbest))) { tablbest = edxxptr->gainlink.tabl; /* Select it */ gainbest = commgain; edxxbest = edxxptr; deltbest = deltnew; if ((abs (comploaddlt[domnnumold]) > comploadmax[domnnumold]) || (abs (comploaddlt[domnnumnew]) > comploadmax[domnnumnew])) *flagval = 1; else *flagval = 0; } } if (edxxbest != NULL) *comploaddiff += deltbest; return (edxxbest); } #else /* SCOTCH_TABLE_GAIN */ /* kgraphMapFmCmpFunc(a,b) must return a negative ** number if a is "better" than b. The smaller, the ** better. */ static int kgraphMapFmCmpFunc ( const FiboNode * const data0ptr, /* TRICK: KgraphMapFmLink is FIRST in KgraphMapFmEdge */ const FiboNode * const data1ptr) { const KgraphMapFmEdge * const node0ptr = (KgraphMapFmEdge *) data0ptr; const KgraphMapFmEdge * const node1ptr = (KgraphMapFmEdge *) data1ptr; Gnum node0val; Gnum node1val; node0val = node0ptr->commgain + node0ptr->cmiggain; node1val = node1ptr->commgain + node1ptr->cmiggain; if (node0val < node1val) return (-1); if (node0val > node1val) return (1); return (0); } static KgraphMapFmEdge * kgraphMapFmTablGet ( KgraphMapFmTabl * restrict const tablptr, /*+ Gain table +*/ KgraphMapFmVertex * restrict const vexxtab, /*+ Extended vertex hash table array +*/ const Gnum * restrict const comploaddlt, /*+ Current imbalance array +*/ const Gnum * restrict const comploadmax, /*+ Maximum imbalance array +*/ Gnum * restrict comploaddiff, Gnum * restrict flagval) { FiboNode * remoptr; /* List of removed links */ KgraphMapFmEdge * edxxptr; Gnum deltnew; FiboNode * linkptr; /* Pointer to current gain link */ edxxptr = NULL; remoptr = NULL; while ((linkptr = fiboHeapMin (tablptr)) != NULL) { /* Select candidate vertices */ Gnum vexxidx; Gnum veloval; Anum domnnumold; Anum domnnumnew; Gnum deltvalold; Gnum deltvalnew; edxxptr = (KgraphMapFmEdge *) linkptr; vexxidx = edxxptr->vexxidx; veloval = vexxtab[vexxidx].veloval; #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].lockptr != NULL) { /* If vertex is locked */ errorPrint ("kgraphMapFmTablGet: internal error (2)"); return (NULL); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ fiboHeapDel (tablptr, linkptr); /* Remove vertex link from table */ linkptr->linkdat.prevptr = remoptr; /* Node has been removed but is not kept */ remoptr = linkptr; /* It will be chained back afterwards */ domnnumold = vexxtab[vexxidx].domnnum; domnnumnew = edxxptr->domnnum; deltvalold = abs (comploaddlt[domnnumold] - veloval); deltvalnew = abs (comploaddlt[domnnumnew] + veloval); if (((deltvalold <= comploadmax[domnnumold]) || (deltvalold < abs (comploaddlt[domnnumold]))) && /* If vertex does enforce or improve balance, keep it */ ((deltvalnew <= comploadmax[domnnumnew]) || (deltvalnew < abs (comploaddlt[domnnumnew])))) { deltnew = deltvalold - abs (comploaddlt[domnnumold]) + /* Compute difference in imbalance load sum */ deltvalnew - abs (comploaddlt[domnnumnew]); if ((abs (comploaddlt[domnnumold]) > comploadmax[domnnumold]) || (abs (comploaddlt[domnnumnew]) > comploadmax[domnnumnew])) *flagval = 1; break; } else { if (edxxptr->cmigmask == ~0) { edxxptr->cmigmask = 0; kgraphMapFmTablDel (&gaintab, edxxptr); kgraphMapFmTablAdd (&gaintab, edxxptr); } } } while (remoptr != NULL) { /* Put back all temporarily removed nodes */ FiboNode * tempptr; tempptr = remoptr; /* Get pointer to node */ remoptr = remoptr->linkdat.prevptr; /* Find next node */ fiboHeapAdd (tablptr, tempptr); /* Re-link node */ } if (linkptr == NULL) return (NULL); *comploaddiff += deltnew; return (edxxptr); } #endif /* SCOTCH_TABLE_GAIN */ /* This routine checks the consistency of ** the hash structures. ** It returns: ** - 0 : in case of success. ** - !0 : in case of error. */ #ifdef SCOTCH_DEBUG_KGRAPH3 static int kgraphMapFmCheck ( KgraphMapFmTabl * restrict const tablptr, /*+ Gain table +*/ const Kgraph * restrict const grafptr, const KgraphMapFmVertex * restrict const vexxtab, const KgraphMapFmEdge * const edxxtab, /*+ Extended edge array +*/ const Gnum hashmsk, const Gnum commload, Gnum * const chektab) { Gnum vexxidx; Gnum edxxidx; Gnum commloadtmp; Anum domnnum; Anum * restrict const parttax = grafptr->m.parttax; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const vmlotax = grafptr->r.vmlotax; Gnum * const edlosumtab = chektab; Gnum * const edgenbrtab = chektab + grafptr->m.domnnbr; Gnum * const commgaintab = chektab + (grafptr->m.domnnbr * 2); commloadtmp = 0; for (vexxidx = 0; vexxidx <= hashmsk; vexxidx ++) { /* For all vertex slots */ Gnum vertnum; Gnum edgenum; Anum domnorg; Anum domnlst; /* Domain of last vertex for which a distance was computed */ Anum distlst; /* Last distance computed */ Gnum commloadloctmp; Gnum edlosum; Gnum edgenbr; commloadloctmp = 0; vertnum = vexxtab[vexxidx].vertnum; if ((vertnum == ~0)) /* If unallocated */ continue; /* Skip to next slot */ domnorg = vexxtab[vexxidx].domnnum; if ((domnorg < 0) || (domnorg >= grafptr->m.domnnbr)) { errorPrint ("kgraphMapFmCheck: invalid vertex part value"); return (1); } if (domnorg != parttax[vertnum]) { errorPrint ("kgraphMapFmCheck: invalid extended vertex part value"); return (1); } edxxidx = vexxtab[vexxidx].edxxidx; if ((edxxidx >= 0) && (edxxtab[edxxidx].vexxidx != vexxidx)) { errorPrint ("kgraphMapFmCheck: invalid extended vertex pointer in extended edge"); return (1); } edlosum = edgenbr = 0; domnlst = -1; /* Invalid domnain to recompute distance */ memSet (edlosumtab, 0, grafptr->m.domnnbr * 3 * sizeof(Gnum)); /* Reset edlosumtab, edgenbrtab and commgaintab */ for (edgenum = verttax[vertnum]; /* For all neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Anum domnend; Gnum edloval; vertend = edgetax[edgenum]; domnend = parttax[vertend]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; if (domnorg != domnend) { Anum distval; distval = (domnend != domnlst) ? archDomDist (grafptr->m.archptr, &grafptr->m.domntab[domnorg], &grafptr->m.domntab[domnend]) : distlst; distlst = distval; domnlst = domnend; edlosumtab[domnend] += edloval; edgenbrtab[domnend] ++; commloadloctmp += (Gnum) distval * edloval * grafptr->r.crloval; for (edxxidx = vexxtab[vexxidx].edxxidx; (edxxidx != -1) && (edxxtab[edxxidx].domnnum != domnend) ; edxxidx = edxxtab[edxxidx].edxxidx) ; /* Search if edge slot exists */ if (edxxidx == -1) { Gnum vertndd; Gnum vexxndd; vertndd = edgetax[edgenum]; for (vexxndd = 0; (vexxtab[vexxndd].vertnum != vertndd) && (vexxndd <= hashmsk); vexxndd ++) ; /* For all vertex slots */ errorPrint ("kgraphMapFmCheck: no link for migration of vertex %d to domain %d", vexxtab[vexxidx].vertnum, domnend); return (1); } } else { edlosum += edloval; edgenbr ++; } } if (edlosum != vexxtab[vexxidx].edlosum) { errorPrint ("kgraphMapFmCheck: invalid edge load sum for vertex %d", vexxtab[vexxidx].vertnum); return (1); } if (edgenbr != vexxtab[vexxidx].edgenbr) { errorPrint ("kgraphMapFmCheck: invalid edge number for vertex %d", vexxtab[vexxidx].vertnum); return (1); } commloadtmp += commloadloctmp; for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { Gnum domncur; Gnum domnflg; domnflg = 0; domncur = edxxtab[edxxidx].domnnum; commgaintab[domncur] = -commloadloctmp; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Anum domnend; Gnum edloval; vertend = edgetax[edgenum]; domnend = parttax[vertend]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; if (domnend == domncur) { domnflg = 1; continue; } edloval *= grafptr->r.crloval; commgaintab[domncur] += edloval /* Add edge contribution to target domain */ * archDomDist (&grafptr->a, &grafptr->m.domntab[domncur], &grafptr->m.domntab[domnend]); } if (domnflg == 0) { errorPrint ("kgraphMapFmCheck: extra link for migration of vertex %d to domain %d", vexxtab[vexxidx].vertnum, domncur); return (1); } } if ((vexxtab[vexxidx].domoptr != NULL) && (vexxtab[vexxidx].cmigload != (archDomIncl (grafptr->m.archptr, &grafptr->m.domntab[domnorg], vexxtab[vexxidx].domoptr) == 1) ? 0 : grafptr->r.cmloval * ((vmlotax != NULL) ? vmlotax[vertnum] : 1) * archDomDist (grafptr->m.archptr, &grafptr->m.domntab[domnorg], vexxtab[vexxidx].domoptr))) { errorPrint ("kgraphMapFmCheck: invalid migration communication load for extended vertex"); return (1); } for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { /* For vertex links */ if (edlosumtab[edxxtab[edxxidx].domnnum] != edxxtab[edxxidx].edlosum) { errorPrint ("kgraphMapFmCheck: invalid extended edge edlosum value"); return (1); } if (edgenbrtab[edxxtab[edxxidx].domnnum] != edxxtab[edxxidx].edgenbr) { errorPrint ("kgraphMapFmCheck: invalid extended edge edgenbr value"); return (1); } if (commgaintab[edxxtab[edxxidx].domnnum] != edxxtab[edxxidx].commgain) { errorPrint ("kgraphMapFmCheck: invalid extended edge commgain value"); return (1); } if ((vexxtab[vexxidx].domoptr != NULL) && (edxxtab[edxxidx].cmiggain + vexxtab[vexxidx].cmigload != (archDomIncl (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr) == 1) ? 0 : grafptr->r.cmloval * ((vmlotax != NULL) ? vmlotax[vertnum] : 1) * archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr))) { errorPrint ("kgraphMapFmCheck: invalid migration communication gain for extended edge"); return (1); } } } if (grafptr->pfixtax != NULL) { /* We have fixed vertices */ Anum domnlst; /* Domnain of last vertex for which a distance was computed */ Anum distlst; /* Last distance computed */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if (grafptr->pfixtax[vertnum] != -1) { /* If vertex is fixed */ Gnum domnorg; Gnum edgenum; domnorg = parttax[vertnum]; domnlst = -1; /* Invalid part to recompute distance */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Anum domnend; Gnum edloval; vertend = edgetax[edgenum]; domnend = parttax[vertend]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; edloval *= grafptr->r.crloval; if (domnorg != domnend) { Anum distval; distval = (domnend != domnlst) ? archDomDist (grafptr->m.archptr, &grafptr->m.domntab[domnorg], &grafptr->m.domntab[domnend]) : distlst; distlst = distval; domnlst = domnend; commloadtmp += (Gnum) distval * edloval; } } } } } if (commload != commloadtmp / 2) { errorPrint ("kgraphMapFmCheck: invalid communication load"); return (1); } return (0); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ /*****************************/ /* */ /* These routines handle the */ /* insertion of vertices */ /* into the gain arrays. */ /* */ /*****************************/ static int kgraphMapFmEdgeResize ( KgraphMapFmVertex * restrict const vexxtab, /*+ Extended vertex hash table array +*/ Gnum vexxidx, KgraphMapFmEdge * restrict * const edxxtabptr, Gnum * restrict const edxxsizptr, Gnum const edxxnbr, KgraphMapFmTabl * restrict const tablptr) { KgraphMapFmEdge * restrict edxxtmp; KgraphMapFmEdge * restrict edxxtab; Gnum edxxsiz; edxxtab = *edxxtabptr; edxxsiz = *edxxsizptr; edxxsiz *= 2; /* Compute new array size */ *edxxsizptr = edxxsiz; /* Propagate back new size */ if ((edxxtmp = memRealloc (edxxtab, edxxsiz * sizeof (KgraphMapFmEdge))) == NULL) { errorPrint ("kgraphMapFmEdgeResize: out of memory"); return (1); } if (edxxtmp != edxxtab) { /* If array has been reallocated, re-link all edges */ Gnum edxxidx; edxxtab = *edxxtabptr = edxxtmp; /* Point to new array location */ kgraphMapFmTablFree (tablptr); /* Free all edges in gain structure */ for (edxxidx = 0; edxxidx < edxxnbr; edxxidx ++) { if ((vexxtab[edxxtab[edxxidx].vexxidx].lockptr == NULL) && /* Vertex is not locked */ (edxxtab[edxxidx].vexxidx != vexxidx) && /* Edge of current vertex will be added later */ (edxxtab[edxxidx].edxxidx != -2)) /* Skip deprecated extended edges */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxidx]); } } return (0); } static int kgraphMapFmPartAdd2 ( const Kgraph * restrict const grafptr, KgraphMapFmVertex * restrict const vexxtab, /*+ Extended vertex hash table array +*/ Gnum vexxidx, KgraphMapFmEdge * restrict * const edxxtabptr, Gnum * restrict const edxxsizptr, Gnum * restrict const edxxnbrptr, Anum domnnum, /*+ Vertex domain +*/ Anum domnend, /*+ Domain of the extended edge to add +*/ Gnum edloval, /*+ Load of the edge to domnend +*/ KgraphMapFmTabl * restrict const tablptr) { KgraphMapFmEdge * restrict edxxtab; Gnum edxxidx; Gnum edxxtmp; Gnum commgain; if (*edxxnbrptr >= *edxxsizptr) /* If new slot would not fit */ kgraphMapFmEdgeResize (vexxtab, -1, edxxtabptr, edxxsizptr, *edxxnbrptr, tablptr); /* No vexxidx because vertex extended edges will be readd later */ edxxtab = *edxxtabptr; edxxidx = (*edxxnbrptr) ++; /* Allocate new slot */ edxxtab[edxxidx].domnnum = domnend; /* Set extended edge data */ edxxtab[edxxidx].distval = archDomDist (&grafptr->a, &grafptr->m.domntab[domnnum], &grafptr->m.domntab[domnend]); edxxtab[edxxidx].edlosum = edloval; edxxtab[edxxidx].edgenbr = 1; edxxtab[edxxidx].vexxidx = vexxidx; edxxtab[edxxidx].mswpnum = 0; commgain = 0; /* Compute commgain */ for (edxxtmp = vexxtab[vexxidx].edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) { commgain += edxxtab[edxxtmp].edlosum * (archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxtmp].domnnum], &grafptr->m.domntab[domnend]) - edxxtab[edxxtmp].distval); } commgain += (vexxtab[vexxidx].edlosum - edloval) * edxxtab[edxxidx].distval; edxxtab[edxxidx].commgain = commgain * grafptr->r.crloval; edxxtab[edxxidx].edxxidx = vexxtab[vexxidx].edxxidx; /* Link edge to vertex */ vexxtab[vexxidx].edxxidx = edxxidx; edxxtab[edxxidx].cmiggain = 0; /* Compute migration commgain */ edxxtab[edxxidx].cmigmask = 0; if (vexxtab[vexxidx].domoptr != NULL) { Gnum migcoef; /* Equal to -migedloval if vertex was mapped in old mapping */ migcoef = grafptr->r.cmloval * ((grafptr->r.vmlotax != NULL) ? grafptr->r.vmlotax[vexxtab[vexxidx].vertnum] : 1); edxxtab[edxxidx].cmiggain = (archDomIncl (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr) == 1) ? 0 : migcoef * archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr); edxxtab[edxxidx].cmiggain -= vexxtab[vexxidx].cmigload; edxxtab[edxxidx].cmigmask = ~0; } if (vexxtab[vexxidx].lockptr == NULL) /* If value has to be linked */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxidx]); return (0); } /* This routine adds a vertex to hash table. */ static int kgraphMapFmPartAdd ( const Kgraph * restrict const grafptr, const Gnum vertnum, const Gnum vexxidx, /* Hash value for insertion in vexxtab */ KgraphMapFmVertex * restrict const vexxtab, KgraphMapFmEdge ** edxxtabptr, Gnum * restrict const edxxsizptr, Gnum * restrict const edxxnbrptr, KgraphMapFmTabl * restrict const tablptr) { Gnum oldvertnum; /* Number of current vertex */ KgraphMapFmEdge * restrict edxxtab; Gnum edxxidx; Gnum edgenum; Gnum edlosum; Gnum edgenbr; Anum domnnum; Gnum commload; /* Communication load for local domain */ const Anum * restrict const parttax = grafptr->m.parttax; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].vertnum != ~0) { errorPrint ("kgraphMapFmPartAdd: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ domnnum = parttax[vertnum]; vexxtab[vexxidx].vertnum = vertnum; vexxtab[vexxidx].domnnum = domnnum; vexxtab[vexxidx].veloval = (grafptr->s.velotax != NULL) ? grafptr->s.velotax[vertnum] : 1; /* Vertex will be linked since value is positive */ vexxtab[vexxidx].mswpnum = 0; /* Implicitly set slot as used */ vexxtab[vexxidx].edxxidx = -1; /* No target domains yet */ vexxtab[vexxidx].lockptr = NULL; /* No locked yet */ oldvertnum = ((grafptr->s.vnumtax != NULL) && /* If there is ancestor graph vertex numbers */ (grafptr->s.flagval & KGRAPHHASANCHORS) == 0) /* That are not the ones of the band graph */ ? grafptr->s.vnumtax[vertnum] : vertnum; /* Get vertex number in original graph */ if ((grafptr->r.m.parttax != NULL) && /* If we are doing a repartitioning */ (grafptr->r.m.parttax[oldvertnum] != -1)) /* And if vertex was mapped to an old domain */ vexxtab[vexxidx].domoptr = mapDomain (&grafptr->r.m, oldvertnum); /* Domain in which the vertex was previously mapped */ else vexxtab[vexxidx].domoptr = NULL; edxxtab = *edxxtabptr; /* Compute and link edges */ edgenbr = 0; for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { Gnum domnend; domnend = edxxtab[edxxidx].domnnum; edxxtab[edxxidx].edlosum = 0; edxxtab[edxxidx].edgenbr = 0; edxxtab[edxxidx].distval = archDomDist (&grafptr->a, &grafptr->m.domntab[domnnum], &grafptr->m.domntab[domnend]); } commload = 0; /* Load associated with vertex edges */ edlosum = 0; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum edxxidx; Gnum vertend; Anum domnend; Gnum edloval; vertend = edgetax[edgenum]; domnend = parttax[vertend]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; /* Do not account for crloval yet */ if (domnend == domnnum) { /* If end vertex belongs to same domain */ edlosum += edloval; /* Record local edge load sum */ edgenbr ++; /* Record local edge */ continue; /* Skip further processing */ } for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { /* Search for edge */ if (edxxtab[edxxidx].domnnum == domnend) /* If edge slot found */ break; } if (edxxidx == -1) { /* If edge slot not found */ if (*edxxnbrptr >= *edxxsizptr) /* If new slot would not fit */ kgraphMapFmEdgeResize (vexxtab, vexxidx, edxxtabptr, edxxsizptr, *edxxnbrptr, tablptr); edxxidx = (*edxxnbrptr) ++; /* Allocate new slot */ edxxtab = *edxxtabptr; /* Update edxxtab */ edxxtab[edxxidx].commgain = 0; edxxtab[edxxidx].cmiggain = 0; edxxtab[edxxidx].cmigmask = (grafptr->r.m.parttax != NULL) ? ~0 : 0; edxxtab[edxxidx].domnnum = domnend; edxxtab[edxxidx].distval = archDomDist (&grafptr->a, &grafptr->m.domntab[domnnum], &grafptr->m.domntab[domnend]); edxxtab[edxxidx].edlosum = 0; edxxtab[edxxidx].edgenbr = 0; edxxtab[edxxidx].vexxidx = vexxidx; edxxtab[edxxidx].edxxidx = vexxtab[vexxidx].edxxidx; /* Link edge to vertex */ vexxtab[vexxidx].edxxidx = edxxidx; edxxtab[edxxidx].mswpnum = 0; } commload += edloval * edxxtab[edxxidx].distval; edxxtab[edxxidx].edlosum += edloval; edxxtab[edxxidx].edgenbr ++; } commload *= grafptr->r.crloval; /* Multiply all local loads by crloval */ vexxtab[vexxidx].edlosum = edlosum; vexxtab[vexxidx].edgenbr = edgenbr; for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { Gnum domncur; Gnum edxxtmp; Gnum commgain; domncur = edxxtab[edxxidx].domnnum; commgain = 0; for (edxxtmp = vexxtab[vexxidx].edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) { Anum domnend; if (edxxtmp == edxxidx) continue; domnend = edxxtab[edxxtmp].domnnum; commgain += edxxtab[edxxtmp].edlosum * /* Add edge contribution to target domain */ archDomDist (&grafptr->a, &grafptr->m.domntab[domncur], &grafptr->m.domntab[domnend]); } commgain += vexxtab[vexxidx].edlosum * edxxtab[edxxidx].distval; edxxtab[edxxidx].commgain = commgain * grafptr->r.crloval - commload; } vexxtab[vexxidx].cmigload = 0; if (vexxtab[vexxidx].domoptr != NULL) { Gnum migcoef; /* Equal to -migedloval if vertex was mapped in old mapping */ migcoef = grafptr->r.cmloval * ((grafptr->r.vmlotax != NULL) ? grafptr->r.vmlotax[vertnum] : 1); vexxtab[vexxidx].cmigload = (archDomIncl (&grafptr->a, &grafptr->m.domntab[domnnum], vexxtab[vexxidx].domoptr) == 1) ? 0 : migcoef * archDomDist (&grafptr->a, &grafptr->m.domntab[domnnum], vexxtab[vexxidx].domoptr); for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { edxxtab[edxxidx].cmiggain = (archDomIncl (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr) == 1) ? 0 : migcoef * archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxidx].domnnum], vexxtab[vexxidx].domoptr); edxxtab[edxxidx].cmiggain -= vexxtab[vexxidx].cmigload; edxxtab[edxxidx].cmigmask = ~0; } } if (vexxtab[vexxidx].lockptr == NULL) { /* If value has to be (re)linked */ for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) /* Insert edges to neighbors in gain arrays */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxidx]); } return (0); } /* This routine doubles the size all of the arrays ** involved in handling the hash table and hash ** vertex arrays. ** It returns: ** - 0 : if resizing succeeded. ** - !0 : if out of memory. */ static int kgraphMapFmResize ( KgraphMapFmVertex * restrict * vexxtabptr, /*+ Extended vertex array +*/ Gnum * restrict const hashmaxptr, /*+ Size of vertex array +*/ Gnum * const hashmskptr, /*+ Pointer to hash table mask +*/ KgraphMapFmSave * restrict savetab, /*+ Move array +*/ const Gnum savenbr, /*+ Number of moves recorded +*/ KgraphMapFmTabl * const tablptr, /*+ Gain table +*/ KgraphMapFmEdge * edxxtab, /*+ Extended edge array +*/ KgraphMapFmVertex ** const lockptr) /*+ Pointer to locked list +*/ { KgraphMapFmVertex * restrict vexxtab; /* Extended vertex array */ Gnum savenum; Gnum hashold; /* Size of old hash table (half of new) */ Gnum hashsiz; Gnum hashmax; Gnum hashmsk; Gnum vexxidx; hashmax = *hashmaxptr << 1; /* Compute new sizes */ hashold = *hashmaxptr << 2; hashsiz = *hashmaxptr << 3; hashmsk = hashsiz - 1; #ifdef SCOTCH_DEBUG_KGRAPH2 if (sizeof (KgraphMapFmVertex) < sizeof (KgraphMapFmSave)) { /* Should always be true */ errorPrint ("kgraphMapFmResize: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if ((vexxtab = memRealloc (*vexxtabptr, (size_t) hashsiz * sizeof (KgraphMapFmVertex))) == NULL) { errorPrint ("kgraphMapFmResize: out of memory"); return (1); } for (savenum = savenbr - 1; savenum >= 0; savenum --) { /* Move save array, in reverse order */ if (savetab[savenum].type == KGRAPHMAPPFMSAVEVEXX) savetab[savenum].u.vexxdat.vexxidx = vexxtab[savetab[savenum].u.vexxdat.vexxidx].vertnum; /* Temporarily translate from hash index to number */ else if ((savetab[savenum].type & KGRAPHMAPPFMSAVELINK) != 0) savetab[savenum].u.linkdat.vexxidx = vexxtab[savetab[savenum].u.linkdat.vexxidx].vertnum; /* Temporarily translate from hash index to number */ } *vexxtabptr = vexxtab; *hashmaxptr = hashmax; *hashmskptr = hashmsk; memSet (vexxtab + hashold, ~0, hashold * sizeof (KgraphMapFmVertex)); /* Set new slots to ~0 */ kgraphMapFmTablFree (tablptr); /* Reset gain table */ *lockptr = (KgraphMapFmVertex *) -1; /* Rebuild lock list */ if (vexxtab[0].vertnum != ~0) { /* If vertex overflowing may have occured in old hash table */ Gnum hashtmp; Gnum hashnew; for (hashtmp = hashold - 1, hashnew = 0; /* Temporarily move vertices away from end of old table to prevent overflowing */ vexxtab[hashtmp].vertnum != ~0; hashtmp --) { while (vexxtab[++ hashnew].vertnum != ~0) ; /* Find an empty slot to receive moved vertex */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (hashnew >= hashtmp) { errorPrint ("kgraphMapFmResize: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ vexxtab[hashnew] = vexxtab[hashtmp]; /* Move vertex from end of table */ vexxtab[hashtmp].vertnum = ~0; /* Set old slot as free */ } } for (vexxidx = 0; vexxidx < hashold; vexxidx ++) { /* Re-compute position of vertices in new table */ Gnum vertnum; vertnum = vexxtab[vexxidx].vertnum; if (vertnum != ~0) { /* If hash slot used */ Gnum hashnew; Gnum edxxtmp; for (hashnew = (vertnum * KGRAPHMAPFMHASHPRIME) & hashmsk; ; hashnew = (hashnew + 1) & hashmsk) { if (hashnew == vexxidx) /* If hash slot is the same */ break; /* There is nothing to do */ if (vexxtab[hashnew].vertnum == ~0) { /* If new slot is empty */ vexxtab[hashnew] = vexxtab[vexxidx]; /* Copy data to new slot */ vexxtab[vexxidx].mswpnum = ~0; /* TRICK: not tested at creation */ vexxtab[vexxidx].vertnum = ~0; /* Make old slot empty */ break; } } if ((hashnew > vexxidx) && (hashnew < hashold)) /* If vertex was an overflowed vertex which will be replaced at end of old table */ continue; /* It will be re-processed again and re-linked once for good at the end of the loop */ for (edxxtmp = vexxtab[hashnew].edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) /* Insert edges to neighbors in gain arrays */ edxxtab[edxxtmp].vexxidx = hashnew; edxxtmp = vexxtab[hashnew].edxxidx; /* vertices lock is done through their first links */ if (vexxtab[hashnew].lockptr == NULL) { /* If vertex was linked, re-link its edges */ for ( ; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) /* Insert edges to neighbors in gain arrays */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxtmp]); } else /* Re-lock vertices */ kgraphMapFmLock (*lockptr, &vexxtab[hashnew]); } } for (savenum = 0; savenum < savenbr; savenum ++) { if (savetab[savenum].type == KGRAPHMAPPFMSAVEVEXX) { Gnum vertnum; Gnum vexxidx; vertnum = savetab[savenum].u.vexxdat.vexxidx; /* Get vertex number */ for (vexxidx = (vertnum * KGRAPHMAPFMHASHPRIME) & hashmsk; vexxtab[vexxidx].vertnum != vertnum; vexxidx = (vexxidx + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].vertnum == ~0) { errorPrint ("kgraphMapFmResize: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } savetab[savenum].u.vexxdat.vexxidx = vexxidx; /* Set new hash table index */ } else if ((savetab[savenum].type & KGRAPHMAPPFMSAVELINK) != 0) { Gnum vertnum; Gnum vexxidx; vertnum = savetab[savenum].u.linkdat.vexxidx; /* Get vertex number */ for (vexxidx = (vertnum * KGRAPHMAPFMHASHPRIME) & hashmsk; vexxtab[vexxidx].vertnum != vertnum; vexxidx = (vexxidx + 1) & hashmsk) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].vertnum == ~0) { errorPrint ("kgraphMapFmResize: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } savetab[savenum].u.linkdat.vexxidx = vexxidx; /* Set new hash table index */ } } return (0); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the k-way partitioning. ** It returns: ** - 0 : if k-partition could be computed. ** - 1 : on error. */ int kgraphMapFm ( Kgraph * restrict const grafptr, /*+ Active graph +*/ const KgraphMapFmParam * const paraptr) /*+ Method parameters +*/ { KgraphMapFmSave * savetab; /* Pointer to move array */ KgraphMapFmVertex * restrict vexxtab; /* Extended vertex hash table array */ KgraphMapFmEdge * edxxtab; /* Edge extended array */ Gnum edxxnbr; /* Current number of links in link array */ Gnum edxxsiz; Gnum edxxnum; Gnum edxxcdx; /* Index for extended edge copy */ Gnum edcunbr; /* Current number of unused extended edge slots */ Gnum edxunbr; /* Number of unused extended edge slots */ Gnum * comploadmax; /* Array of maximum imbalances */ Gnum * comploaddlt; Gnum commload; Gnum cmigload; KgraphMapFmTabl * restrict tablptr; /* Pointer to gain table for easy access */ KgraphMapFmTabl tabldat; /* Gain table */ KgraphMapFmVertex * lockptr; Gnum fronnum; Gnum fronnbr; Gnum commloadbst; Gnum cmigloadbst; Gnum moveflag; /* Flag set if useful moves made */ Gnum edcpflag; /* Extended edge array compacting flag */ Gnum comploaddiff; Gnum flagval; Anum domnnum; Gnum vexxidx; Gnum passnbr; /* Maximum number of passes to go */ Gnum movenbr; /* Number of uneffective moves done */ Gnum savenbr; /* Number of recorded backtrack moves */ Gnum savesiz; /* Size of save array */ Gnum mswpnum; /* Current number of recording sweep */ Gnum vertnum; Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ Gnum hashnum; /* Hash value */ Gnum hashmax; /* Maximum number of entries in vertex hash table */ Gnum hashnbr; /* Current number of entries in vertex hash table */ #ifdef SCOTCH_DEBUG_KGRAPH3 Gnum * chektab; /* Extra memory needed for the check routine */ #endif /* SCOTCH_DEBUG_KGRAPH3 */ Anum * restrict const parttax = grafptr->m.parttax; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const pfixtax = grafptr->pfixtax; #ifdef SCOTCH_DEBUG_KGRAPH3 /* Allocation of extra memory needed for the check routine */ if ((chektab = memAlloc (grafptr->m.domnnbr * 3 * sizeof(Gnum))) == NULL) { errorPrint ("kgraphMapFm: out of memory (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ tablptr = &tabldat; grafptr->kbalval = paraptr->deltval; /* Store last k-way imbalance ratio */ kgraphCost (grafptr); grafptr->commload *= grafptr->r.crloval; /* crloval must be 1 if we are not doing a repartitioning of a no-band graph */ if (memAllocGroup ((void **) (void *) /* Allocation and initialization of imbalance arrays */ &comploadmax, (size_t) (grafptr->m.domnnbr * sizeof (Gnum)), &comploaddlt, (size_t) (grafptr->m.domnnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphMapFm: out of memory (2)"); return (1); } for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) { comploadmax[domnnum] = (Gnum) ((double) grafptr->comploadavg[domnnum] * paraptr->deltval); comploaddlt[domnnum] = grafptr->comploaddlt[domnnum]; } if (grafptr->fronnbr == 0) { /* If no current frontier */ Anum domnnum; for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) { if (abs (grafptr->comploaddlt[domnnum]) > comploadmax[domnnum]) break; } if (domnnum == grafptr->m.domnnbr) { /* If balance is correct */ memFree (comploadmax); /* Nothing to do */ return (0); } else { /* Imbalance must be fought */ const Strat * strat; strat = stratInit (&kgraphmapststratab, "r{sep=h{pass=10}}"); /* Use a standard algorithm */ kgraphMapSt (grafptr, strat); /* Perform mapping */ if (grafptr->fronnbr == 0) { /* If new partition has no frontier */ memFree (comploadmax); return (0); /* This algorithm is still useless */ } if (memReallocGroup ((void *) comploadmax, /* domnnbr has changed after mapping */ &comploadmax, (size_t) (grafptr->m.domnnbr * sizeof (Gnum)), &comploaddlt, (size_t) (grafptr->m.domnnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphMapFm: out of memory (3)"); return (1); } for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) { /* Else update compload{max,dlt} according to new partition */ comploadmax[domnnum] = (Gnum) ((double) grafptr->comploadavg[domnnum] * paraptr->deltval); comploaddlt[domnnum] = grafptr->comploaddlt[domnnum]; } } } #ifdef SCOTCH_DEBUG_KGRAPH2 /* Allocation of extended vertex hash table and extended edge array */ hashnbr = 2 * grafptr->fronnbr + 1; /* Ensure resizing will be performed, for maximum code coverage */ savesiz = 2 * grafptr->fronnbr + 1; /* Ensure resizing will be performed, for maximum code coverage */ edxxsiz = 2 * grafptr->fronnbr + 1; /* Ensure resizing will be performed, for maximum code coverage */ #else /* SCOTCH_DEBUG_KGRAPH2 */ hashnbr = 4 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax); savesiz = 4 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax) * 2; edxxsiz = 4 * (grafptr->fronnbr + paraptr->movenbr + grafptr->s.degrmax) * 4; #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (hashnbr > grafptr->s.vertnbr) hashnbr = grafptr->s.vertnbr; if (edxxsiz > grafptr->s.edgenbr) edxxsiz = grafptr->s.edgenbr; for (hashsiz = 256; hashsiz < hashnbr; hashsiz <<= 1) ; /* Get upper power of two */ hashmsk = hashsiz - 1; hashmax = hashsiz >> 2; if (kgraphMapFmTablInit (tablptr) != 0) { errorPrint ("kgraphMapFm: internal error (1)"); /* Unable to do proper initialization */ kgraphMapFmTablExit (tablptr); return (1); } else { if (((vexxtab = memAlloc ((size_t) hashsiz * sizeof (KgraphMapFmVertex))) == NULL) || ((savetab = memAlloc ((size_t) savesiz * sizeof (KgraphMapFmSave))) == NULL) || ((edxxtab = memAlloc ((size_t) edxxsiz * sizeof (KgraphMapFmEdge))) == NULL)) { errorPrint ("kgraphMapFm: out of memory (4)"); kgraphMapFmTablExit (tablptr); return (1); } } memSet (vexxtab, ~0, hashsiz * sizeof (KgraphMapFmVertex)); /* Set all vertex numbers to ~0 */ memSet (edxxtab, ~0, edxxsiz * sizeof (KgraphMapFmEdge)); /* Set all edge numbers to ~0 */ hashnbr = grafptr->fronnbr; while (hashnbr >= hashmax) { if (kgraphMapFmResize (&vexxtab, &hashmax, &hashmsk, savetab, 0, tablptr, edxxtab, &lockptr) != 0) { errorPrint ("kgraphMapFm: out of memory (5)"); memFree (vexxtab); /* Free group leader */ kgraphMapFmTablExit (tablptr); return (1); } } edxxnbr = 0; for (fronnum = 0; fronnum < hashnbr; fronnum ++) { /* Set initial gains */ Gnum vertnum; vertnum = grafptr->frontab[fronnum]; if ((pfixtax == NULL) || (pfixtax[vertnum] == -1)) { /* Add only not fixed vertices */ for (hashnum = (vertnum * KGRAPHMAPFMHASHPRIME) & hashmsk; vexxtab[hashnum].vertnum != ~0; hashnum = (hashnum + 1) & hashmsk) ; kgraphMapFmPartAdd (grafptr, vertnum, hashnum, vexxtab, &edxxtab, &edxxsiz, &edxxnbr, tablptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[hashnum].edxxidx == -1) { /* If vertex does not have any neighbor */ errorPrint ("kgraphMapFm: vertex does not belong to frontier"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } } #ifdef SCOTCH_DEBUG_KGRAPH2 if (hashnbr >= hashmax) { /* Hash table too small (must not occur) */ errorPrint ("kgraphMapFm: hash table to small"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ commloadbst = grafptr->commload; /* Start from initial situation */ cmigloadbst = 0; /* Do not take initial migration cost situation into account */ #ifdef SCOTCH_DEBUG_KGRAPH3 if (kgraphMapFmCheck (tablptr, grafptr, vexxtab, edxxtab, hashmsk, commloadbst, chektab) != 0) { errorPrint ("kgraphMapFm: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ passnbr = paraptr->passnbr; /* Set remaining number of passes */ savenbr = 0; /* For empty backtrack of first pass */ mswpnum = 0; /* Will be incremented afterwards */ lockptr = (KgraphMapFmVertex *) -1; /* Locked list is empty */ edxunbr = 0; do { /* As long as there are improvements */ KgraphMapFmEdge * edxxptr; Gnum oldsavenbr; oldsavenbr = savenbr; while (savenbr -- > 0) { /* Delete exceeding moves */ /* Restore last correct state of the graph * All unlocked vertices have all there valid extended edges in the table * Any of the deprecated edges are in the table * Any of locked vertices have extended edges in the table */ Gnum vexxidx; Gnum oldveloval; Anum domnnum; Anum domnorg; Gnum edxxidx; Gnum * edxiptr; switch (savetab[savenbr].type) { case KGRAPHMAPPFMSAVEVEXX: vexxidx = savetab[savenbr].u.vexxdat.vexxidx; domnnum = savetab[savenbr].u.vexxdat.domnnum; domnorg = vexxtab[vexxidx].domnnum; oldveloval = vexxtab[vexxidx].veloval; vexxtab[vexxidx].domnnum = domnnum; /* Restore vertex data */ vexxtab[vexxidx].veloval = savetab[savenbr].u.vexxdat.veloval; vexxtab[vexxidx].cmigload = savetab[savenbr].u.vexxdat.cmigload; vexxtab[vexxidx].edlosum = savetab[savenbr].u.vexxdat.edlosum; vexxtab[vexxidx].edgenbr = savetab[savenbr].u.vexxdat.edgenbr; parttax[vexxtab[vexxidx].vertnum] = domnnum; comploaddlt[domnorg] -= oldveloval; /* Update domain load delta */ comploaddlt[domnnum] += oldveloval; break; case KGRAPHMAPPFMSAVEEDXX: edxxidx = savetab[savenbr].u.edxxdat.edxxidx; /* Restore extended edge data */ edxxtab[edxxidx].domnnum = savetab[savenbr].u.edxxdat.domnnum; edxxtab[edxxidx].commgain = savetab[savenbr].u.edxxdat.commgain; edxxtab[edxxidx].cmiggain = savetab[savenbr].u.edxxdat.cmiggain; edxxtab[edxxidx].cmigmask = (grafptr->r.m.parttax != NULL) ? ~0 : 0; edxxtab[edxxidx].edlosum = savetab[savenbr].u.edxxdat.edlosum; edxxtab[edxxidx].edgenbr = savetab[savenbr].u.edxxdat.edgenbr; edxxtab[edxxidx].distval = savetab[savenbr].u.edxxdat.distval; break; case KGRAPHMAPPFMSAVELINKDEL: edxxidx = savetab[savenbr].u.linkdat.edxxidx; vexxidx = savetab[savenbr].u.linkdat.vexxidx; if (edxxtab[edxxidx].vexxidx != vexxidx) /* Restore correct vexxidx after resize */ edxxtab[edxxidx].vexxidx = vexxidx; edxxtab[edxxidx].edxxidx = vexxtab[vexxidx].edxxidx; /* Add it back to vertex list and set it as used */ vexxtab[vexxidx].edxxidx = edxxidx; edxunbr --; /* One more used edge slot */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (edxunbr < 0) { errorPrint ("kgraphMapFm: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (vexxtab[vexxidx].lockptr == NULL) kgraphMapFmTablAdd (tablptr, &edxxtab[edxxidx]); /* Link it back */ break; case KGRAPHMAPPFMSAVELINKADD: edxxidx = savetab[savenbr].u.linkdat.edxxidx; vexxidx = savetab[savenbr].u.linkdat.vexxidx; if (edxxtab[edxxidx].vexxidx != vexxidx) /* Restore correct vexxidx after resize */ edxxtab[edxxidx].vexxidx = vexxidx; if (vexxtab[vexxidx].lockptr == NULL) kgraphMapFmTablDel (tablptr, &edxxtab[edxxidx]); /* Unlink it */ for (edxiptr = &vexxtab[vexxidx].edxxidx; (*edxiptr != edxxidx) && (*edxiptr != -1); edxiptr = &edxxtab[*edxiptr].edxxidx) ; #ifdef SCOTCH_DEBUG_KGRAPH2 if (*edxiptr == -1) { /* Since it has been added to the list, extended edge must be in it */ errorPrint ("kgraphMapFm: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ *edxiptr = edxxtab[edxxidx].edxxidx; /* Remove it from the vertex list */ edxxtab[edxxidx].edxxidx = -2; /* Set slot as unused */ edxunbr ++; /* One more unused edge slot */ break; } } edcpflag = 0; /* Assume that extended edge array not need to be compacted */ if (edxunbr > (edxxnbr / KGRAPHMAPFMEDXXCOMP)) { /* If more than 20% of edxxtab is unused, compact edxxtab */ edcpflag = 1; for (vexxidx = 0; vexxidx <= hashmsk; vexxidx ++) /* Extended edge list must be recomputed */ vexxtab[vexxidx].edxxidx = -1; edxxcdx = 0; edcunbr = 0; kgraphMapFmTablFree (tablptr); /* Free all edges in gain structure */ for (edxxnum = 0; edxxnum < edxxnbr; edxxnum ++) { /* Remove unused slots of edxxtab */ if (edxxtab[edxxnum].edxxidx == -2) { if (edcunbr > 0) { memmove (&edxxtab[edxxcdx], &edxxtab[edxxcdx + edcunbr], (edxxnum - edxxcdx - edcunbr) * sizeof (KgraphMapFmEdge)); /* Since there is overlapping, use memmove */ edxxcdx = edxxnum - edcunbr; } else edxxcdx = edxxnum; edcunbr ++; } else { vexxidx = edxxtab[edxxnum].vexxidx; edxxtab[edxxnum].edxxidx = vexxtab[vexxidx].edxxidx; /* Link edge to vertex */ vexxtab[vexxidx].edxxidx = edxxnum - edcunbr; /* Set to new index */ } } if ((edcunbr > 0) && (edxxtab[edxxnbr - 1].edxxidx != -2)) memmove (&edxxtab[edxxcdx], &edxxtab[edxxcdx + edcunbr], (edxxnum - edxxcdx - edcunbr) * sizeof (KgraphMapFmEdge)); edxxnbr -= edcunbr; edxunbr = 0; } else { while (oldsavenbr -- > 0) { /* Must be sure that all parttax is correct before recompute vertices gains */ if (savetab[oldsavenbr].type == KGRAPHMAPPFMSAVEVEXX) { Gnum vexxidx; Gnum edxxtmp; vexxidx = savetab[oldsavenbr].u.vexxdat.vexxidx; if (vexxtab[vexxidx].lockptr == NULL) { for (edxxtmp = vexxtab[vexxidx].edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) { /* Relink all vertex links */ kgraphMapFmTablDel (tablptr, &edxxtab[edxxtmp]); kgraphMapFmTablAdd (tablptr, &edxxtab[edxxtmp]); } } } } } while (lockptr != (KgraphMapFmVertex *) -1) { /* Unlock locked vertices */ KgraphMapFmVertex * vexxptr; Gnum edxxtmp; vexxptr = lockptr; /* Get vertex associated with lock list */ lockptr = kgraphMapFmLockNext (lockptr); /* Point to next vertex to unlock */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxptr->lockptr == NULL) { errorPrint ("kgraphMapFm: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ vexxptr->lockptr = NULL; /* Set vertex as unlocked */ if (edcpflag == 0) /* It has not been done during edxxtab compacting */ for (edxxtmp = vexxptr->edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) /* Relink all vertex links */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxtmp]); } if (edcpflag == 1) for (edxxnum = 0; edxxnum < edxxnbr; edxxnum ++) kgraphMapFmTablAdd (tablptr, &edxxtab[edxxnum]); /* Add all used links, all vertices will be unlocked */ commload = commloadbst; cmigload = cmigloadbst; mswpnum ++; /* Forget all recorded moves */ #ifdef SCOTCH_DEBUG_KGRAPH3 if (kgraphMapFmCheck (tablptr, grafptr, vexxtab, edxxtab, hashmsk, commload, chektab) != 0) { errorPrint ("kgraphMapFm: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ moveflag = 0; /* No useful moves made */ movenbr = 0; /* No ineffective moves recorded yet */ savenbr = 0; /* Back up to beginning of table */ comploaddiff = 0; flagval = 0; while ((movenbr < paraptr->movenbr) && ((edxxptr = (KgraphMapFmEdge *) kgraphMapFmTablGet (tablptr, vexxtab, comploaddlt, comploadmax, &comploaddiff, &flagval)) != NULL)) { /* Move one vertex */ Gnum vexxidx; Gnum edxxtmp; Gnum veloval; Gnum edgenum; Anum domnnum; Gnum edlosum; Gnum edgenbr; Anum domnend; Gnum edxxidx; Gnum * edxpptr; Gnum * vpexptr; vexxidx = edxxptr->vexxidx; /* Get relevant information */ vertnum = vexxtab[vexxidx].vertnum; veloval = vexxtab[vexxidx].veloval; domnnum = vexxtab[vexxidx].domnnum; edlosum = vexxtab[vexxidx].edlosum; edgenbr = vexxtab[vexxidx].edgenbr; domnend = edxxptr->domnnum; /* Save moved vertex information */ if (vexxtab[vexxidx].mswpnum != mswpnum) { /* If extended vertex data not yet recorded */ vexxtab[vexxidx].mswpnum = mswpnum; savetab[savenbr].type = KGRAPHMAPPFMSAVEVEXX; /* Save extended vertex data */ savetab[savenbr].u.vexxdat.vexxidx = vexxidx; savetab[savenbr].u.vexxdat.veloval = veloval; savetab[savenbr].u.vexxdat.domnnum = domnnum; savetab[savenbr].u.vexxdat.cmigload = vexxtab[vexxidx].cmigload; savetab[savenbr].u.vexxdat.edlosum = edlosum; savetab[savenbr].u.vexxdat.edgenbr = edgenbr; savenbr ++; /* One more data recorded */ } for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxxidx = edxxtab[edxxidx].edxxidx) { /* Save vertex links */ if (edxxtab[edxxidx].mswpnum != mswpnum) { /* If extended edge data not yet recorded */ edxxtab[edxxidx].mswpnum = mswpnum; savetab[savenbr].type = KGRAPHMAPPFMSAVEEDXX; /* Save extended edge data */ savetab[savenbr].u.edxxdat.edxxidx = edxxidx; savetab[savenbr].u.edxxdat.domnnum = edxxtab[edxxidx].domnnum; savetab[savenbr].u.edxxdat.commgain = edxxtab[edxxidx].commgain; savetab[savenbr].u.edxxdat.cmiggain = edxxtab[edxxidx].cmiggain; savetab[savenbr].u.edxxdat.edlosum = edxxtab[edxxidx].edlosum; savetab[savenbr].u.edxxdat.edgenbr = edxxtab[edxxidx].edgenbr; savetab[savenbr].u.edxxdat.distval = edxxtab[edxxidx].distval; savenbr ++; /* One more data recorded */ } } movenbr ++; /* One more move done */ commload += edxxptr->commgain; cmigload += edxxptr->cmiggain; #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].lockptr != NULL) { /* Vertex is locked */ errorPrint ("kgraphMapFm: internal error (7)"); return (1); } if (vexxtab[vexxidx].edxxidx == -1) { /* Vertex not in the frontier */ errorPrint ("kgraphMapFm: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ kgraphMapFmLock (lockptr, &vexxtab[vexxidx]); /* Set part as having changed (lock vertex) */ for (edxxtmp = vexxtab[vexxidx].edxxidx; edxxtmp != -1; edxxtmp = edxxtab[edxxtmp].edxxidx) /* Unlink all vertex links from gain arrays */ kgraphMapFmTablDel (tablptr, &edxxtab[edxxtmp]); edxxtmp = vexxtab[vexxidx].edxxidx; /* Lock vertex through its first link */ /* Switch information with corresponding extended edge * No add or del of extended edges needed. */ parttax[vertnum] = domnend; /* Change vertex part */ comploaddlt[domnnum] -= veloval; /* Account for move */ comploaddlt[domnend] += veloval; vexxtab[vexxidx].domnnum = domnend; /* Swap edges */ edxxptr->domnnum = domnnum; vexxtab[vexxidx].edlosum = edxxptr->edlosum; edxxptr->edlosum = edlosum; vexxtab[vexxidx].edgenbr = edxxptr->edgenbr; edxxptr->edgenbr = edgenbr; vexxtab[vexxidx].cmigload += edxxptr->cmiggain; edxpptr = &vexxtab[vexxidx].edxxidx; for (edxxidx = vexxtab[vexxidx].edxxidx; edxxidx != -1; edxpptr = &edxxtab[edxxidx].edxxidx, edxxidx = edxxtab[edxxidx].edxxidx) { /* Update vertex links */ Gnum domncur; domncur = edxxtab[edxxidx].domnnum; if (domncur == domnnum) { vpexptr = edxpptr; continue; } edxxtab[edxxidx].commgain -= edxxptr->commgain; edxxtab[edxxidx].cmiggain -= edxxptr->cmiggain; edxxtab[edxxidx].distval = archDomDist (&grafptr->a, &grafptr->m.domntab[domnend], &grafptr->m.domntab[domncur]); } edxxptr->commgain = - edxxptr->commgain; edxxptr->cmiggain = - edxxptr->cmiggain; if (edgenbr == 0) { Gnum edxxidx; edxxidx = *vpexptr; savetab[savenbr].type = KGRAPHMAPPFMSAVELINKDEL; /* Save it */ savetab[savenbr].u.linkdat.edxxidx = edxxidx; savetab[savenbr].u.linkdat.vexxidx = vexxidx; savenbr ++; /* One more data recorded */ *vpexptr = edxxtab[edxxidx].edxxidx; /* Remove it from extended vertex list */ edxxtab[edxxidx].edxxidx = -2; /* Set extended edge slot as unused */ edxunbr ++; /* One more unused edge slot */ } for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { /* (Re-)link neighbors */ /* - Add the vertex in vexxtab if not yet inserted * - Del the edge to the vertnum old domain if it was the only vertex * linked to this domain. * - Add and edge to the vertnum new domain if it was the first vertex * linked to this domain. * - Update commgain of other edges. * - Relink extended edges */ Gnum edxxend; Gnum vexxend; Gnum edxoidx; /* Index of extended edge to old domain */ Gnum * edxcptr; /* Pointer to index of current extended edge */ Gnum * edxoptr; /* Pointer to index of extended edge to old domain */ Gnum edxnidx; /* index of extended edge to new domain */ Gnum vertend; /* Number of current end neighbor vertex */ Gnum edxfidx; /* Index of first extended edge to update */ Anum divoval; /* Distance between current neighbor domain and old domain */ Anum divnval; /* Distance between current neighbor domain and new domain */ Gnum edloval; vertend = edgetax[edgenum]; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; if ((pfixtax != NULL) && (pfixtax[vertend] != -1)) /* Do not link fixed vertices */ continue; if (savenbr >= (savesiz - (grafptr->m.domnnbr + 4) * 4)) { KgraphMapFmSave * saveptr; /* Pointer to move array */ while (savenbr >= (savesiz - (grafptr->m.domnnbr + 4) * 4)) savesiz += savesiz / 2; if ((saveptr = memRealloc (savetab, savesiz * sizeof (KgraphMapFmSave))) == NULL) { errorPrint ("kgraphMapFm: out of memory (6)"); memFree (savetab); /* Free group leader */ return (1); } savetab = saveptr; } if (hashnbr >= hashmax) { /* If extended vertex table is already full */ if (kgraphMapFmResize (&vexxtab, &hashmax, &hashmsk, savetab, savenbr, tablptr, edxxtab, &lockptr) != 0) { errorPrint ("kgraphMapFm: out of memory (7)"); memFree (vexxtab); /* Free group leader */ kgraphMapFmTablExit (tablptr); return (1); } } for (vexxend = (vertend * KGRAPHMAPFMHASHPRIME) & hashmsk; /* Search for vertex or first free slot */ (vexxtab[vexxend].vertnum != vertend) && (vexxtab[vexxend].vertnum != ~0); vexxend = (vexxend + 1) & hashmsk) ; if (vexxtab[vexxend].vertnum == ~0) { /* If neighbor vertex not yet inserted, create it */ kgraphMapFmPartAdd (grafptr, vertend, vexxend, vexxtab, &edxxtab, &edxxsiz, &edxxnbr, tablptr); hashnbr ++; /* One more vertex in hash table */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxend].edxxidx == -1) { errorPrint ("kgraphMapFm: internal error (9)"); return (1); } if (edxxtab[vexxtab[vexxend].edxxidx].domnnum != domnend) { errorPrint ("kgraphMapFm: internal error (10)"); return (1); } if (edxxtab[vexxtab[vexxend].edxxidx].edxxidx != -1) { errorPrint ("kgraphMapFm: internal error (11)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ vexxtab[vexxend].mswpnum = mswpnum; savetab[savenbr].type = KGRAPHMAPPFMSAVEVEXX; /* Save extended vertex data */ savetab[savenbr].u.vexxdat.vexxidx = vexxend; savetab[savenbr].u.vexxdat.veloval = vexxtab[vexxend].veloval; savetab[savenbr].u.vexxdat.domnnum = vexxtab[vexxend].domnnum; savetab[savenbr].u.vexxdat.cmigload = vexxtab[vexxend].cmigload; savetab[savenbr].u.vexxdat.edlosum = vexxtab[vexxend].edlosum + edloval; /* Save state before vertex move */ savetab[savenbr].u.vexxdat.edgenbr = vexxtab[vexxend].edgenbr + 1; savenbr ++; /* One more data saved */ savetab[savenbr].type = KGRAPHMAPPFMSAVELINKADD; /* Save extended edge creation */ savetab[savenbr].u.linkdat.edxxidx = vexxtab[vexxend].edxxidx; savetab[savenbr].u.linkdat.vexxidx = vexxend; savenbr ++; /* One more data recorded */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (savenbr > savesiz) { errorPrint ("kgraphMapFm: save array error (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; } if (vexxtab[vexxend].mswpnum != mswpnum) { /* If vertex data not yet recorded */ vexxtab[vexxend].mswpnum = mswpnum; savetab[savenbr].type = KGRAPHMAPPFMSAVEVEXX; /* Save extended vertex data */ savetab[savenbr].u.vexxdat.vexxidx = vexxend; savetab[savenbr].u.vexxdat.veloval = vexxtab[vexxend].veloval; savetab[savenbr].u.vexxdat.domnnum = vexxtab[vexxend].domnnum; savetab[savenbr].u.vexxdat.cmigload = vexxtab[vexxend].cmigload; savetab[savenbr].u.vexxdat.edlosum = vexxtab[vexxend].edlosum; savetab[savenbr].u.vexxdat.edgenbr = vexxtab[vexxend].edgenbr; savenbr ++; /* One more data saved */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (savenbr > savesiz) { errorPrint ("kgraphMapFm: save array error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } edxoidx = edxnidx = -1; /* Assume there are no extended edges to domnnum or domnend */ for (edxcptr = &vexxtab[vexxend].edxxidx, edxxidx = vexxtab[vexxend].edxxidx; edxxidx != -1; edxcptr = &edxxtab[edxxidx].edxxidx, edxxidx = edxxtab[edxxidx].edxxidx) { /* Loop on domains */ Gnum domncur; /* Save vertex links */ domncur = edxxtab[edxxidx].domnnum; if (edxxtab[edxxidx].mswpnum != mswpnum) { /* If extended edge data not yet recorded */ edxxtab[edxxidx].mswpnum = mswpnum; savetab[savenbr].type = KGRAPHMAPPFMSAVEEDXX; /* Save extended edge data */ savetab[savenbr].u.edxxdat.edxxidx = edxxidx; savetab[savenbr].u.edxxdat.domnnum = domncur; savetab[savenbr].u.edxxdat.commgain = edxxtab[edxxidx].commgain; savetab[savenbr].u.edxxdat.cmiggain = edxxtab[edxxidx].cmiggain; savetab[savenbr].u.edxxdat.edlosum = edxxtab[edxxidx].edlosum; savetab[savenbr].u.edxxdat.edgenbr = edxxtab[edxxidx].edgenbr; savetab[savenbr].u.edxxdat.distval = edxxtab[edxxidx].distval; savenbr ++; /* One more data recorded */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (savenbr > savesiz) { errorPrint ("kgraphMapFm: save array error (3)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } if (domncur == domnnum) { edxoidx = edxxidx; edxoptr = edxcptr; edxxtab[edxxidx].edlosum -= edloval; edxxtab[edxxidx].edgenbr --; divoval = edxxtab[edxxidx].distval; } else if (domncur == domnend) { edxnidx = edxxidx; edxxtab[edxxidx].edlosum += edloval; edxxtab[edxxidx].edgenbr ++; divnval = edxxtab[edxxidx].distval; } } #ifdef SCOTCH_DEBUG_KGRAPH2 if ((edxoidx == -1) && (vexxtab[vexxend].domnnum != domnnum)) { errorPrint ("kgraphMapFm: internal error (12)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (vexxtab[vexxend].domnnum == domnend) { vexxtab[vexxend].edlosum += edloval; vexxtab[vexxend].edgenbr ++; divnval = 0; } if (vexxtab[vexxend].domnnum == domnnum) { /* Remove edge from neighbor domain */ vexxtab[vexxend].edlosum -= edloval; vexxtab[vexxend].edgenbr --; divoval = 0; } else { if (edxxtab[edxoidx].edgenbr == 0) { /* If it was the last edge in the end domain, save it */ savetab[savenbr].type = KGRAPHMAPPFMSAVELINKDEL; savetab[savenbr].u.linkdat.edxxidx = edxoidx; savetab[savenbr].u.linkdat.vexxidx = vexxend; savenbr ++; /* One more data recorded */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (savenbr > savesiz) { errorPrint ("kgraphMapFm: save array error (4)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ *edxoptr = edxxtab[edxoidx].edxxidx; /* Remove it from extended vertex list */ if (vexxtab[vexxend].lockptr == NULL) /* If edge is of use (vertex not locked) */ kgraphMapFmTablDel (tablptr, &edxxtab[edxoidx]); /* Remove it */ edxxtab[edxoidx].edxxidx = -2; /* Set extended edge slot as unused */ edxunbr ++; /* One more unused edge slot */ } } if ((edxnidx == -1) && (vexxtab[vexxend].domnnum != domnend)) { /* If was first vertex linked to this domain, add edge to new domain */ #ifdef SCOTCH_DEBUG_KGRAPH2 Gnum edxxidx; #endif /* SCOTCH_DEBUG_KGRAPH2 */ kgraphMapFmPartAdd2 (grafptr, vexxtab, vexxend, &edxxtab, &edxxsiz, &edxxnbr, vexxtab[vexxend].domnnum, domnend, edloval, tablptr); /* Add new extended edge */ #ifdef SCOTCH_DEBUG_KGRAPH2 for (edxxidx = vexxtab[vexxend].edxxidx; (edxxidx != -1) && (edxxtab[edxxidx].domnnum != domnend); edxxidx = edxxtab[edxxidx].edxxidx) ; if (edxxidx == -1) { errorPrint ("kgraphMapFm: internal error (13)"); return (1); } if (edxxidx != edxxnbr - 1) { errorPrint ("kgraphMapFm: internal error (14)"); return (1); } if (edxxtab[edxxidx].domnnum != domnend) { errorPrint ("kgraphMapFm: internal error (15)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ savetab[savenbr].type = KGRAPHMAPPFMSAVELINKADD; /* Save extended edge creation */ savetab[savenbr].u.linkdat.edxxidx = edxxnbr - 1; savetab[savenbr].u.linkdat.vexxidx = vexxend; savenbr ++; /* One more data recorded */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (savenbr > savesiz) { errorPrint ("kgraphMapFm: save array error (5)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ divnval = edxxtab[edxxnbr - 1].distval; edxfidx = edxxtab[edxxnbr - 1].edxxidx; /* Skip update of the newly added extended edge */ } else edxfidx = vexxtab[vexxend].edxxidx; edloval *= grafptr->r.crloval; for (edxxend = edxfidx; edxxend != -1; edxxend = edxxtab[edxxend].edxxidx) /* Update vertex links */ edxxtab[edxxend].commgain -= edloval * (divnval - archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxend].domnnum], &grafptr->m.domntab[domnend]) - divoval + archDomDist (&grafptr->a, &grafptr->m.domntab[edxxtab[edxxend].domnnum], &grafptr->m.domntab[domnnum])); if (vexxtab[vexxend].lockptr == NULL) { /* If vertex is not locked */ for (edxxend = edxfidx; edxxend != -1; edxxend = edxxtab[edxxend].edxxidx) { /* Relink its extended edges */ kgraphMapFmTablDel (tablptr, &edxxtab[edxxend]); /* Remove it and re-link it */ kgraphMapFmTablAdd (tablptr, &edxxtab[edxxend]); } } } if (flagval == 1) { /* If move improves balance and we do not respect it */ commloadbst = commload; /* This move was effective */ cmigloadbst = cmigload; moveflag = 1; movenbr = savenbr = 0; flagval = 0; comploaddiff = 0; mswpnum ++; } else if ((commload + cmigload) < (commloadbst + cmigloadbst)) { /* If move improves the cost */ commloadbst = commload; /* This move was effective */ cmigloadbst = cmigload; moveflag = 1; movenbr = savenbr = 0; flagval = 0; comploaddiff = 0; mswpnum ++; } else if (((commload + cmigload) == (commloadbst + cmigloadbst)) && (comploaddiff < 0)) { /* If move improves balance and cut does not decrease */ commloadbst = commload; /* This move was effective */ cmigloadbst = cmigload; moveflag = 1; movenbr = savenbr = 0; flagval = 0; comploaddiff = 0; mswpnum ++; } else if (((commload + cmigload) == (commloadbst + cmigloadbst)) && (comploaddiff == 0)) { commloadbst = commload; /* Forget backtracking */ cmigloadbst = cmigload; movenbr = savenbr = 0; flagval = 0; mswpnum ++; } #ifdef SCOTCH_DEBUG_KGRAPH3 if (kgraphMapFmCheck (tablptr, grafptr, vexxtab, edxxtab, hashmsk, commload, chektab) != 0) { errorPrint ("kgraphMapFm: internal error (16)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ } #ifdef SCOTCH_DEBUG_KGRAPH3 if (kgraphMapFmCheck (tablptr, grafptr, vexxtab, edxxtab, hashmsk, commload, chektab) != 0) { errorPrint ("kgraphMapFm: internal error (17)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ } while ((moveflag != 0) && /* As long as vertices are moved */ (-- passnbr != 0)); /* And we are allowed to loop (TRICK for negative values) */ #ifdef SCOTCH_DEBUG_KGRAPH3 if (kgraphMapFmCheck (tablptr, grafptr, vexxtab, edxxtab, hashmsk, commload, chektab) != 0) { errorPrint ("kgraphMapFm: internal error (18)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH3 */ while (savenbr -- > 0) { /* Delete exceeding moves */ Gnum vexxidx; Anum domnnum; Gnum veloval; if (savetab[savenbr].type == KGRAPHMAPPFMSAVEVEXX) { vexxidx = savetab[savenbr].u.vexxdat.vexxidx; domnnum = savetab[savenbr].u.vexxdat.domnnum; veloval = savetab[savenbr].u.vexxdat.veloval; comploaddlt[vexxtab[vexxidx].domnnum] -= veloval; comploaddlt[domnnum] += veloval; vexxtab[vexxidx].domnnum = domnnum; /* Restore vertex data */ parttax[vexxtab[vexxidx].vertnum] = domnnum; } } commload = 0; for (vexxidx = fronnbr = 0; /* Build new frontier, compute commload, update parttax */ vexxidx <= hashmsk; vexxidx ++) { /* hashsiz no longer valid after resizing, so use hashmsk */ Gnum vertnum; Gnum edgenum; Anum domnnum; Anum domnlst; /* Domain of last vertex for which a distance was computed */ Anum distlst; /* Last distance computed */ Gnum commcut; vertnum = vexxtab[vexxidx].vertnum; /* Get vertex data from slot */ if (vertnum != ~0) { commcut = 0; domnnum = parttax[vertnum]; domnlst = -1; /* Invalid domnain to recompute distance */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (vexxtab[vexxidx].domnnum != parttax[vertnum]) { errorPrint ("kgraphMapFm: internal error (19)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum domnend; vertend = edgetax[edgenum]; domnend = parttax[vertend]; if (domnend != domnnum) { Anum distval; Gnum edloval; distval = (domnend != domnlst) ? archDomDist (grafptr->m.archptr, &grafptr->m.domntab[domnnum], &grafptr->m.domntab[domnend]) : distlst; distlst = distval; domnlst = domnend; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; commload += (Gnum) distval * edloval; commcut = 1; } } if (commcut != 0) grafptr->frontab[fronnbr ++] = vertnum; } } if (grafptr->pfixtax != NULL) { /* We have fixed vertices */ Gnum vertnum; for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { if ((grafptr->pfixtax != NULL) && (grafptr->pfixtax[vertnum] != -1)) { /* If vertex is fixed */ Gnum edgenum; Anum domnnum; Gnum commcut; Anum domnlst; /* Domain of last vertex for which a distance was computed */ Anum distlst; /* Last distance computed */ commcut = 0; domnnum = parttax[vertnum]; domnlst = -1; /* Invalid domnain to recompute distance */ for (edgenum = verttax[vertnum]; /* For all neighbors */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum domnend; vertend = edgetax[edgenum]; domnend = parttax[vertend]; if (domnend != domnnum) { Anum distval; Gnum edloval; distval = (domnend != domnlst) ? archDomDist (grafptr->m.archptr, &grafptr->m.domntab[domnnum], &grafptr->m.domntab[domnend]) : distlst; distlst = distval; domnlst = domnend; edloval = (edlotax != NULL) ? edlotax[edgenum] : 1; commload += (Gnum) distval * edloval; commcut = 1; } } if (commcut != 0) grafptr->frontab[fronnbr ++] = vertnum; } } } grafptr->fronnbr = fronnbr; grafptr->commload = commload / 2; for (domnnum = 0; domnnum < grafptr->m.domnnbr; domnnum ++) /* Update graph information */ grafptr->comploaddlt[domnnum] = comploaddlt[domnnum]; #ifdef SCOTCH_DEBUG_KGRAPH3 memFree (chektab); /* Free group leader */ #endif /* SCOTCH_DEBUG_KGRAPH3 */ memFree (comploadmax); /* Free group leader */ memFree (vexxtab); memFree (savetab); memFree (edxxtab); kgraphMapFmTablExit (tablptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (grafptr) != 0) { errorPrint ("kgraphMapFm: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/mesh_check.c0000644000302600021200000002167313303015264020261 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the source mesh **/ /** functions. **/ /** **/ /** DATES : # Version 4.0 : from : 29 dec 2001 **/ /** to 11 may 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" /****************************************/ /* */ /* These routines handle source meshes. */ /* */ /****************************************/ /* This routine checks the consistency ** of the given mesh. ** It returns: ** - 0 : if mesh data are consistent. ** - !0 : on error. */ int meshCheck ( const Mesh * const meshptr) { Gnum vertnnd; /* Maximum vertex index */ Gnum vertnum; /* Number of current vertex */ Gnum veisnbr; /* Number of isolated element vertices */ Gnum velosum; /* Vertex element load sum */ Gnum vnlosum; /* Vertex node load sum */ Gnum degrmax; /* Maximum degree */ if ((meshptr->velmbas > meshptr->velmnnd) || (meshptr->vnodbas > meshptr->vnodnnd) || ((meshptr->velmnnd != meshptr->vnodbas) && (meshptr->vnodnnd != meshptr->velmbas))) { errorPrint ("meshCheck: invalid node and element numbers"); return (1); } vertnnd = meshptr->velmnbr + meshptr->vnodnbr + meshptr->baseval; degrmax = 0; veisnbr = 0; for (vertnum = meshptr->velmbas; vertnum < meshptr->velmnnd; vertnum ++) { /* For all element vertices */ Gnum degrval; Gnum edgenum; if ((meshptr->verttax[vertnum] < meshptr->baseval) || (meshptr->vendtax[vertnum] < meshptr->verttax[vertnum])) { errorPrint ("meshCheck: invalid vertex arrays (1)"); return (1); } degrval = meshptr->vendtax[vertnum] - meshptr->verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; else if (degrval == 0) veisnbr ++; for (edgenum = meshptr->verttax[vertnum]; edgenum < meshptr->vendtax[vertnum]; edgenum ++) { Gnum vertend; /* Number of end vertex */ Gnum edgeend; /* Number of end vertex edge */ vertend = meshptr->edgetax[edgenum]; if ((vertend < meshptr->baseval) || (vertend >= vertnnd)) { /* If invalid edge end */ errorPrint ("meshCheck: invalid edge array (1)"); return (1); } if ((vertend >= meshptr->velmbas) && (vertend < meshptr->velmnnd)) { errorPrint ("meshCheck: element vertices must not be connected together"); return (1); } for (edgeend = meshptr->verttax[vertend]; /* Search for matching arc */ (edgeend < meshptr->vendtax[vertend]) && (meshptr->edgetax[edgeend] != vertnum); edgeend ++) ; if (edgeend >= meshptr->vendtax[vertend]) { errorPrint ("meshCheck: arc data do not match (1)"); return (1); } for (edgeend ++; /* Search for duplicate arcs */ (edgeend < meshptr->vendtax[vertend]) && (meshptr->edgetax[edgeend] != vertnum); edgeend ++) ; if (edgeend < meshptr->vendtax[vertend]) { errorPrint ("meshCheck: duplicate arc (1)"); return (1); } } } if (veisnbr != meshptr->veisnbr) { errorPrint ("meshCheck: invalid number of isolated element vertices (1)"); return (1); } for (vertnum = meshptr->vnodbas; vertnum < meshptr->vnodnnd; vertnum ++) { /* For all node vertices */ Gnum edgenum; if ((meshptr->verttax[vertnum] < meshptr->baseval) || (meshptr->vendtax[vertnum] < meshptr->verttax[vertnum])) { errorPrint ("meshCheck: invalid vertex arrays (2)"); return (1); } if ((meshptr->vendtax[vertnum] - meshptr->verttax[vertnum]) > degrmax) degrmax = meshptr->vendtax[vertnum] - meshptr->verttax[vertnum]; for (edgenum = meshptr->verttax[vertnum]; edgenum < meshptr->vendtax[vertnum]; edgenum ++) { Gnum vertend; /* Number of end vertex */ Gnum edgeend; /* Number of end vertex edge */ vertend = meshptr->edgetax[edgenum]; if ((vertend < meshptr->baseval) || (vertend >= vertnnd)) { /* If invalid edge end */ errorPrint ("meshCheck: invalid edge array (2)"); return (1); } if ((vertend >= meshptr->vnodbas) && (vertend < meshptr->vnodnnd)) { errorPrint ("meshCheck: node vertices must not be connected together"); return (1); } for (edgeend = meshptr->verttax[vertend]; /* Search for matching arc */ (edgeend < meshptr->vendtax[vertend]) && (meshptr->edgetax[edgeend] != vertnum); edgeend ++) ; if (edgeend >= meshptr->vendtax[vertend]) { errorPrint ("meshCheck: arc data do not match (2)"); return (1); } for (edgeend ++; /* Search for duplicate arcs */ (edgeend < meshptr->vendtax[vertend]) && (meshptr->edgetax[edgeend] != vertnum); edgeend ++) ; if (edgeend < meshptr->vendtax[vertend]) { errorPrint ("meshCheck: duplicate arc (2)"); return (1); } } } if (meshptr->velotax == NULL) /* Recompute node vertex load sum */ velosum = meshptr->velmnnd - meshptr->velmbas; else { for (vertnum = meshptr->velmbas, velosum = 0; vertnum < meshptr->velmnnd; vertnum ++) { if (meshptr->velotax[vertnum] < 1) { errorPrint ("meshCheck: invalid element vertex load"); return (1); } velosum += meshptr->velotax[vertnum]; } } if (velosum != meshptr->velosum) { errorPrint ("meshCheck: invalid element vertex load sum"); return (1); } if (meshptr->vnlotax == NULL) /* Recompute node vertex load sum */ vnlosum = meshptr->vnodnnd - meshptr->vnodbas; else { for (vertnum = meshptr->vnodbas, vnlosum = 0; vertnum < meshptr->vnodnnd; vertnum ++) { if (meshptr->vnlotax[vertnum] < 1) { errorPrint ("meshCheck: invalid node vertex load"); return (1); } vnlosum += meshptr->vnlotax[vertnum]; } } if (vnlosum != meshptr->vnlosum) { errorPrint ("meshCheck: invalid node vertex load sum"); return (1); } if (meshptr->degrmax < degrmax) { errorPrint ("meshCheck: invalid maximum degree"); return (1); } return (0); } scotch_6.0.9/src/libscotch/library_graph_f.c0000644000302600021200000002445613560013261021324 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 02 dec 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 17 mar 2005 **/ /** # Version 5.0 : from : 11 jul 2007 **/ /** to 11 jul 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 15 apr 2010 **/ /** # Version 6.0 : from : 20 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHINIT, graphinit, ( \ SCOTCH_Graph * const grafptr, \ int * const revaptr), \ (grafptr, revaptr)) { *revaptr = SCOTCH_graphInit (grafptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHEXIT, graphexit, ( \ SCOTCH_Graph * const grafptr), \ (grafptr)) { SCOTCH_graphExit (grafptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHFREE, graphfree, ( \ SCOTCH_Graph * const grafptr), \ (grafptr)) { SCOTCH_graphFree (grafptr); } /* When an input stream is built from the given ** file handle, it is set as unbuffered, so as to ** allow for multiple stream reads from the same ** file handle. If it were buffered, too many ** input characters would be read on the first ** block read. */ SCOTCH_FORTRAN ( \ GRAPHLOAD, graphload, ( \ SCOTCH_Graph * const grafptr, \ int * const fileptr, \ const SCOTCH_Num * const baseval, \ const SCOTCH_Num * const flagval, \ int * const revaptr), \ (grafptr, fileptr, baseval, flagval, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } setbuf (stream, NULL); /* Do not buffer on input */ o = SCOTCH_graphLoad (grafptr, stream, *baseval, *flagval); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHSAVE, graphsave, ( \ const SCOTCH_Graph * const grafptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphSave (grafptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHBUILD, graphbuild, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const baseval, \ const SCOTCH_Num * const vertnbr, \ const SCOTCH_Num * const verttab, \ const SCOTCH_Num * const vendtab, \ const SCOTCH_Num * const velotab, \ const SCOTCH_Num * const vlbltab, \ const SCOTCH_Num * const edgenbr, \ const SCOTCH_Num * const edgetab, \ const SCOTCH_Num * const edlotab, \ int * const revaptr), \ (grafptr, baseval, vertnbr, verttab, vendtab, \ velotab, vlbltab, edgenbr, edgetab, edlotab, \ revaptr)) { *revaptr = SCOTCH_graphBuild (grafptr, *baseval, *vertnbr, verttab, vendtab, velotab, vlbltab, *edgenbr, edgetab, edlotab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHSIZE, graphsize, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Num * const vertptr, \ SCOTCH_Num * const edgeptr), \ (grafptr, vertptr, edgeptr)) { SCOTCH_graphSize (grafptr, vertptr, edgeptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHDATA, graphdata, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const indxptr, \ SCOTCH_Num * const baseptr, \ SCOTCH_Num * const vertptr, \ SCOTCH_Idx * const vertidx, \ SCOTCH_Idx * const vendidx, \ SCOTCH_Idx * const veloidx, \ SCOTCH_Idx * const vlblidx, \ SCOTCH_Num * const edgeptr, \ SCOTCH_Idx * const edgeidx, \ SCOTCH_Idx * const edloidx), \ (grafptr, indxptr, baseptr, \ vertptr, vertidx, vendidx, veloidx, vlblidx, \ edgeptr, edgeidx, edloidx)) { SCOTCH_Num * verttab; /* Pointer to graph arrays */ SCOTCH_Num * vendtab; SCOTCH_Num * velotab; SCOTCH_Num * vlbltab; SCOTCH_Num * edgetab; SCOTCH_Num * edlotab; SCOTCH_graphData (grafptr, baseptr, vertptr, &verttab, &vendtab, &velotab, &vlbltab, edgeptr, &edgetab, &edlotab); *vertidx = (verttab - indxptr) + 1; /* Add 1 since Fortran indices start at 1 */ *vendidx = (vendtab - indxptr) + 1; *veloidx = (velotab != NULL) ? (velotab - indxptr) + 1 : *vertidx; *vlblidx = (vlbltab != NULL) ? (vlbltab - indxptr) + 1 : *vertidx; *edgeidx = (edgetab - indxptr) + 1; *edloidx = (edlotab != NULL) ? (edlotab - indxptr) + 1 : *edgeidx; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHSTAT, graphstat, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Num * const velominptr, \ SCOTCH_Num * const velomaxptr, \ SCOTCH_Num * const velosumptr, \ double * veloavgptr, \ double * velodltptr, \ SCOTCH_Num * const degrminptr, \ SCOTCH_Num * const degrmaxptr, \ double * degravgptr, \ double * degrdltptr, \ SCOTCH_Num * const edlominptr, \ SCOTCH_Num * const edlomaxptr, \ SCOTCH_Num * const edlosumptr, \ double * edloavgptr, \ double * edlodltptr), \ (grafptr, velominptr, velomaxptr, velosumptr, \ veloavgptr, velodltptr, degrminptr, \ degrmaxptr, degravgptr, degrdltptr, \ edlominptr, edlomaxptr, edlosumptr, \ edloavgptr, edlodltptr)) { SCOTCH_graphStat (grafptr, velominptr, velomaxptr, velosumptr, veloavgptr, velodltptr, degrminptr, degrmaxptr, degravgptr, degrdltptr, edlominptr, edlomaxptr, edlosumptr, edloavgptr, edlodltptr); } scotch_6.0.9/src/libscotch/bdgraph_bipart_bd.h0000644000302600021200000000630113560005346021606 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_bd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the band graph bipartitioning **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 15 jul 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BdgraphBipartBdParam_ { INT distmax; /*+ Width of band surrounding the frontier +*/ Strat * stratbnd; /*+ Strategy for band graph +*/ Strat * stratorg; /*+ Strategy for original graph +*/ } BdgraphBipartBdParam; /* ** The function prototypes. */ int bdgraphBipartBd (Bdgraph * const, const BdgraphBipartBdParam * const); scotch_6.0.9/src/libscotch/wgraph_part_gp.c0000644000302600021200000003317413470115365021203 0ustar pelegrinpelegrin/* Copyright 2007-2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_gp.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module is the vertex overlapped **/ /** graph partitioning rountine based on **/ /** a vertex-oriented version of the Gibbs- **/ /** Poole-Stockmeyer algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to : 29 oct 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_GP #include "module.h" #include "common.h" #include "graph.h" #include "wgraph.h" #include "wgraph_part_gp.h" /* ** The static variables. */ static const Gnum wgraphpartgploadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the bipartitioning. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int wgraphPartGp ( Wgraph * restrict const wgrafptr, /*+ Separation graph +*/ const WgraphPartGpParam * const paraptr) /*+ Method parameters +*/ { Gnum i; Gnum head; Gnum tail; Gnum fronnum; Gnum fronnbr; /* number of frontier vertices */ Gnum fronload; /* load of frontier vertices */ Gnum frlobst; /* best frontier load found */ Gnum partval; Gnum vertnum; Gnum vertnum2; Gnum edgenum; Gnum palooth; /* load of vertices in the remained unassigned part */ Gnum paloexc; /* load of vertices in the current part excepting the frontier */ Gnum frloprt; /* load of vertices in the frontier of the current part */ Gnum passnum; Gnum velomsk; const Gnum * restrict velobax; /* Data for handling of optional arrays */ Gnum * restrict compload; /* array of part load */ Gnum * restrict compsize; /* array of part vertices number */ Gnum * restrict permtab; /* permutation table */ Gnum * restrict stack; /* Pointer to stack */ Gnum * restrict parttax; WgraphPartGpVertex * vexxtax; /* Complementary vertex array */ WgraphPartGpVertex * restrict vertlist; /* list of vertices */ if (memAllocGroup((void **) (void *) &vexxtax, (size_t) (wgrafptr->s.vertnbr * sizeof (WgraphPartGpVertex)), &compload, (size_t) (wgrafptr->partnbr * sizeof (Gnum)), &compsize, (size_t) (wgrafptr->partnbr * sizeof (Gnum)), &stack , (size_t) (wgrafptr->s.vertnbr * sizeof (Gnum)), &parttax, (size_t) (wgrafptr->s.vertnbr * sizeof (Gnum)), &permtab, (size_t) (wgrafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("wgraphPartGp: out of memory (1)"); return (1); } vexxtax -= wgrafptr->s.baseval; /* Base access to vexxtax */ parttax -= wgrafptr->s.baseval; /* Base access to parttax */ for (vertnum = 0; vertnum < wgrafptr->s.vertnbr; vertnum ++) { /* Initialization of the permutation table */ i = intRandVal (vertnum + 1); permtab[vertnum] = permtab[i]; permtab[i] = vertnum; } if (wgrafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ velobax = &wgraphpartgploadone; /* In case vertices not weighted (least often) */ velomsk = 0; } else { velobax = wgrafptr->s.velotax; velomsk = ~((Gnum) 0); } frlobst = wgrafptr->s.velosum + 1; /* The first solution that will be found will be better than frlobst */ for (passnum = 0; passnum < paraptr->passnbr; passnum ++) { fronnbr = /* Begin with empty separators */ fronload = 0; vertnum = -1; palooth = wgrafptr->s.velosum; memSet (compload, 0, wgrafptr->partnbr * sizeof (Gnum)); memSet (compsize, 0, wgrafptr->partnbr * sizeof (Gnum)); memSet (parttax + wgrafptr->s.baseval, 0, wgrafptr->s.vertnbr * sizeof (Gnum)); memSet (vexxtax + wgrafptr->s.baseval, 0, wgrafptr->s.vertnbr * sizeof (WgraphPartGpVertex)); head = tail = 0; for (partval = 0; partval < wgrafptr->partnbr; partval ++) { frloprt = paloexc = 0; if (tail > head) /* try to take a vertex from the frontier of the last part */ vertnum = stack[tail % wgrafptr->s.vertnbr]; else vertnum = -1; head = tail = 0; if (vertnum != -1) { /* if the stack was not empty */ for (edgenum = wgrafptr->s.verttax[vertnum]; /* search a neighbor vertex that is in the part 0 */ edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] == 0) { fronnbr ++; compsize[partval] ++; parttax[vertnum2] = -1; /* move it in the seperator */ fronload += velobax[vertnum2 & velomsk]; /* update load and size of parts */ compload[partval] += velobax[vertnum2 & velomsk]; vexxtax[vertnum2].isinstack = 0; stack[(head ++) % (wgrafptr->s.vertnbr)] = vertnum2; break; } } } do { /* while the part is not big enought */ if (head > tail) /* select a vertex */ vertnum = stack[tail % wgrafptr->s.vertnbr]; else vertnum = -1; if (vertnum != -1) { tail ++; } else /* if the stack was empty */ { if ((2 * (paloexc + frloprt / 2)) * (wgrafptr->partnbr - partval + 1) <= palooth) { /* if the part load is not big enought */ for (i = 0; i < wgrafptr->s.vertnbr; i ++) { /* select a random vertex in the part 0 */ Gnum pos = i + intRandVal (wgrafptr->s.vertnbr - i); vertnum = permtab[pos]; permtab[pos] = permtab[i]; permtab[i] = vertnum; vertnum += wgrafptr->s.baseval; if (parttax[vertnum] == 0) { for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] > 0) { break; } } break; } } fronnbr ++; parttax[vertnum] = -1; frloprt += velobax[vertnum & velomsk]; fronload += velobax[vertnum & velomsk]; compload[partval] += velobax[vertnum & velomsk]; compsize[partval] ++; } else break; } fronnbr --; vertlist = NULL; parttax[vertnum] = partval; /* Move selected vertex in the current part */ paloexc += velobax[vertnum & velomsk]; frloprt -= velobax[vertnum & velomsk]; fronload -= velobax[vertnum & velomsk]; for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; /* for each neighbor vertex */ if (parttax[vertnum2] != -1 && parttax[vertnum2] != partval) { parttax[vertnum2] = -1; /* Move the part in the separator */ fronnbr ++; fronload += velobax[vertnum2 & velomsk]; frloprt += velobax[vertnum2 & velomsk]; compload[partval] += velobax[vertnum2 & velomsk]; compsize[partval] ++; vexxtax[vertnum2].partlvl = partval; /* Label the vertex for this part */ vexxtax[vertnum2].prev = vertlist; /* Add the vertex in the list */ vertlist = vexxtax + vertnum2; } else if (parttax[vertnum2] == -1) { /* If the vertex is in the separator */ if (vexxtax[vertnum2].partlvl == partval) { if (vexxtax[vertnum2].isinstack != 1) { /* If the vertex is in the stack */ } } else { /* If the vertex is not labeled for the current part */ frloprt += velobax[vertnum2 & velomsk]; compload[partval] += velobax[vertnum2 & velomsk]; compsize[partval] ++; vexxtax[vertnum2].partlvl = partval; /* Label it for the part */ vexxtax[vertnum2].isinstack = 1; } } } while (vertlist != NULL) { /* For eack linked vertices */ vertnum2 = vertlist - vexxtax; stack[head ++ % wgrafptr->s.vertnbr] = vertnum2; vexxtax[vertnum2].isinstack = 0; vertlist = vertlist->prev; } } while ((paloexc + frloprt / 2) * (wgrafptr->partnbr - partval + 1) <= palooth); /* While the part is not big enought */ palooth -= (paloexc + frloprt / 2); } compload[0] = compsize[0] = 0; for (vertnum = wgrafptr->s.baseval; vertnum < wgrafptr->s.vertnnd; vertnum ++) { /* Recompute load and size of part 0 */ if (parttax[vertnum] == 0) { compload[0] += velobax[vertnum & velomsk]; compsize[0] ++; } else if (parttax[vertnum] == -1) { for (edgenum = wgrafptr->s.verttax[vertnum]; edgenum < wgrafptr->s.vendtax[vertnum]; edgenum ++) { vertnum2 = wgrafptr->s.edgetax[edgenum]; if (parttax[vertnum2] == 0) { compload[0] += velobax[vertnum & velomsk]; compsize[0] ++; break; } } } } if (frlobst > fronload) { /* If the pass frontier load is better than the better one */ wgrafptr->fronnbr = fronnbr; wgrafptr->fronload = fronload; memCpy (wgrafptr->compload, compload, sizeof (Gnum) * wgrafptr->partnbr); memCpy (wgrafptr->compsize, compsize, sizeof (Gnum) * wgrafptr->partnbr); memCpy (wgrafptr->parttax + wgrafptr->s.baseval, parttax + wgrafptr->s.baseval, sizeof (Gnum) * wgrafptr->s.vertnbr); for (vertnum = wgrafptr->s.baseval, fronnum = 0; vertnum < wgrafptr->s.vertnnd; vertnum ++) { /* Recompute frontab */ if (parttax[vertnum] == -1) wgrafptr->frontab[fronnum ++] = vertnum; } frlobst = fronload; } } for (partval = 0; partval < wgrafptr->partnbr; partval ++) /* for each part */ printf("\033[0;33mcompload[" GNUMSTRING "] " GNUMSTRING " " GNUMSTRING "\033[0m\n", partval, wgrafptr->compload[partval], wgrafptr->compsize[partval]); printf("\033[0;33mfronload " GNUMSTRING " " GNUMSTRING "\033[0m\n", wgrafptr->fronload, wgrafptr->fronnbr); memFree(vexxtax + wgrafptr->s.baseval); /* Free work arrays */ return (0); } scotch_6.0.9/src/libscotch/kgraph_store.c0000644000302600021200000001505613470115365020666 0ustar pelegrinpelegrin/* Copyright 2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_store.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for k-par- **/ /** tition graphs. **/ /** **/ /** DATES : # Version 6.0 : from : 16 aug 2011 **/ /** to 16 aug 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_STORE #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "kgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int kgraphStoreInit ( const Kgraph * const grafptr, KgraphStore * const storptr) { ArchDom domnfrst; /* Largest domain in the architecture */ archDomFrst (&grafptr->a, &domnfrst); /* Get architecture domain */ storptr->partnbr = (Gnum) archDomSize (&grafptr->a, &domnfrst); /* Get architecture size */ if (memAllocGroup ((void **) (void *) /* Allocate save structure */ &storptr->parttab, (size_t) (grafptr->s.vertnbr * sizeof (Anum)), &storptr->domntab, (size_t) (grafptr->m.domnmax * sizeof (ArchDom)), &storptr->frontab, (size_t) (grafptr->s.vertnbr * sizeof (Gnum)), &storptr->comploadavg, (size_t) (storptr->partnbr * sizeof (Gnum)), &storptr->comploaddlt, (size_t) (storptr->partnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphStoreInit out of memory (1)"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void kgraphStoreExit ( KgraphStore * const storptr) { memFree (storptr->parttab); /* Free group leader */ #ifdef SCOTCH_DEBUG_KGRAPH2 storptr->parttab = NULL; storptr->domntab = NULL; storptr->frontab = NULL; storptr->comploadavg = NULL; storptr->comploaddlt = NULL; #endif /* SCOTCH_DEBUG_KGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void kgraphStoreSave ( const Kgraph * const grafptr, KgraphStore * const storptr) { storptr->mflaval = grafptr->commload; storptr->domnnbr = grafptr->m.domnnbr; storptr->fronnbr = grafptr->fronnbr; storptr->kbalval = grafptr->kbalval; storptr->commload = grafptr->commload; memCpy (storptr->parttab, grafptr->m.parttax + grafptr->s.baseval, grafptr->s.vertnbr * sizeof (Anum)); memCpy (storptr->domntab, grafptr->m.domntab, grafptr->m.domnnbr * sizeof (ArchDom)); memCpy (storptr->frontab, grafptr->frontab, storptr->fronnbr * sizeof (Gnum)); memCpy (storptr->comploadavg, grafptr->comploadavg, storptr->partnbr * sizeof (Gnum)); memCpy (storptr->comploaddlt, grafptr->comploaddlt, storptr->partnbr * sizeof (Gnum)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void kgraphStoreUpdt ( Kgraph * const grafptr, const KgraphStore * const storptr) { grafptr->commload = storptr->mflaval; grafptr->m.domnnbr = storptr->domnnbr; grafptr->fronnbr = storptr->fronnbr; grafptr->kbalval = storptr->kbalval; grafptr->commload = storptr->commload; memCpy (grafptr->m.parttax + grafptr->s.baseval, storptr->parttab, grafptr->s.vertnbr * sizeof (Anum)); memCpy (grafptr->m.domntab, storptr->domntab, grafptr->m.domnnbr * sizeof (ArchDom)); memCpy (grafptr->frontab, storptr->frontab, storptr->fronnbr * sizeof (Gnum)); memCpy (grafptr->comploadavg, storptr->comploadavg, storptr->partnbr * sizeof (Gnum)); memCpy (grafptr->comploaddlt, storptr->comploaddlt, storptr->partnbr * sizeof (Gnum)); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (grafptr) != 0) errorPrint ("kgraphStoreUpdt: inconsistent graph data"); #endif /* SCOTCH_DEBUG_KGRAPH2 */ } scotch_6.0.9/src/libscotch/library_dgraph_build.c0000644000302600021200000001417713560013261022341 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_build.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 23 feb 2007 **/ /** to 18 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "ptscotch.h" /****************************************/ /* */ /* These routines are the C API for the */ /* distributed graph handling routines. */ /* */ /****************************************/ /*+ This routine fills the contents of the given *** opaque distributed graph structure with the *** data provided by the user. The base value *** allows the user to set the graph base to 0 or 1. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphBuild ( SCOTCH_Dgraph * const grafptr, /* Distributed graph structure to fill */ const Gnum baseval, /* Base for indexing */ const Gnum vertlocnbr, /* Number of local vertices */ const Gnum vertlocmax, /* Maximum number of local vertices */ Gnum * const vertloctab, /* Local vertex begin array */ Gnum * const vendloctab, /* Local vertex end array */ Gnum * const veloloctab, /* Local vertex load array (if any) */ Gnum * const vlblloctab, /* Local vertex label array (if any) */ const Gnum edgelocnbr, /* Number of local edges */ const Gnum edgelocsiz, /* Size of local edge array */ Gnum * const edgeloctab, /* Local edge array */ Gnum * const edgegsttab, /* Ghost edge array (if any); not const */ Gnum * const edloloctab) /* Local edge load array (if any) */ { Dgraph * srcgrafptr; /* Pointer to source graph structure */ Gnum * vertloctax; Gnum * vendloctax; Gnum * veloloctax; Gnum * vlblloctax; Gnum * edgeloctax; Gnum * edgegsttax; Gnum * edloloctax; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dgraph) < sizeof (Dgraph)) { errorPrint (STRINGIFY (SCOTCH_dgraphBuild) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((baseval < 0) || (baseval > 1)) { errorPrint (STRINGIFY (SCOTCH_dgraphBuild) ": invalid base parameter"); return (1); } srcgrafptr = (Dgraph *) grafptr; /* Use structure as source graph */ vertloctax = (Gnum *) vertloctab - baseval; vendloctax = ((vendloctab == NULL) || (vendloctab == vertloctab + 1)) ? vertloctax + 1 : (Gnum *) vendloctab - baseval; veloloctax = ((veloloctab == NULL) || (veloloctab == vertloctab)) ? NULL : (Gnum *) veloloctab - baseval; vlblloctax = ((vlblloctab == NULL) || (vlblloctab == vertloctab)) ? NULL : (Gnum *) vlblloctab - baseval; edgeloctax = (Gnum *) edgeloctab - baseval; edgegsttax = ((edgegsttab == NULL) || (edgegsttab == edgeloctab)) ? NULL : (Gnum *) edgegsttab - baseval; edloloctax = ((edloloctab == NULL) || (edloloctab == edgeloctab)) ? NULL : (Gnum *) edloloctab - baseval; return (dgraphBuild (srcgrafptr, baseval, vertlocnbr, vertlocmax, vertloctax, vendloctax, veloloctax, NULL, vlblloctax, edgelocnbr, edgelocsiz, edgeloctax, edgegsttax, edloloctax)); } scotch_6.0.9/src/libscotch/library_dgraph_order_gather.c0000644000302600021200000001550613560013261023704 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_gather.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted ordering gathering routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 21 jul 2007 **/ /** to 04 aug 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "order.h" #include "dorder.h" #include "library_order.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed ordering */ /* handling routines. */ /* */ /************************************/ /*+ This routine initializes an API centralized *** ordering with respect to the given distributed *** source graph and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphCorderInit ( const SCOTCH_Dgraph * const grafptr, /*+ Distributed graph to order +*/ SCOTCH_Ordering * const cordptr, /*+ Ordering structure to initialize +*/ SCOTCH_Num * const permtab, /*+ Direct permutation array +*/ SCOTCH_Num * const peritab, /*+ Inverse permutation array +*/ SCOTCH_Num * const cblkptr, /*+ Pointer to number of column blocks +*/ SCOTCH_Num * const rangtab, /*+ Column block range array +*/ SCOTCH_Num * const treetab) /*+ Separator tree array +*/ { Dgraph * srcgrafptr; LibOrder * libcordptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Ordering) < sizeof (LibOrder)) { errorPrint (STRINGIFY (SCOTCH_dgraphCorderInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ srcgrafptr = (Dgraph *) grafptr; /* Use structure as distributed source graph */ libcordptr = (LibOrder *) cordptr; libcordptr->permtab = ((permtab == NULL) || ((void *) permtab == (void *) grafptr)) ? NULL : (Gnum *) permtab; libcordptr->peritab = ((peritab == NULL) || ((void *) peritab == (void *) grafptr)) ? NULL : (Gnum *) peritab; libcordptr->cblkptr = ((cblkptr == NULL) || ((void *) cblkptr == (void *) grafptr)) ? NULL : (Gnum *) cblkptr; libcordptr->rangtab = ((rangtab == NULL) || ((void *) rangtab == (void *) grafptr)) ? NULL : (Gnum *) rangtab; libcordptr->treetab = ((treetab == NULL) || ((void *) treetab == (void *) grafptr)) ? NULL : (Gnum *) treetab; return (orderInit (&libcordptr->o, srcgrafptr->baseval, srcgrafptr->vertglbnbr, libcordptr->peritab)); } /*+ This routine frees an API centralized ordering. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphCorderExit ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Ordering * const cordptr) { orderExit (&((LibOrder *) cordptr)->o); } /*+ This routine gathers the contents of *** the given distributed ordering into the *** given centralized ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderGather ( const SCOTCH_Dgraph * const grafptr, /*+ Not used +*/ const SCOTCH_Dordering * const dordptr, /*+ Distributed ordering +*/ SCOTCH_Ordering * const cordptr) /*+ Centralized ordering +*/ { LibOrder * libcordptr; /* Pointer to ordering */ if ((cordptr != NULL) && ((void *) cordptr != (void *) dordptr)) { /* If potential root process */ libcordptr = (LibOrder *) cordptr; /* Get centralized ordering */ if (dorderGather ((Dorder *) dordptr, &libcordptr->o) != 0) return (1); if (libcordptr->permtab != NULL) /* Build direct permutation if wanted */ orderPeri (libcordptr->o.peritab, libcordptr->o.baseval, libcordptr->o.vnodnbr, libcordptr->permtab, libcordptr->o.baseval); if (libcordptr->rangtab != NULL) /* Build range array if column block data wanted */ orderRang (&libcordptr->o, libcordptr->rangtab); if (libcordptr->treetab != NULL) /* Build separator tree array if wanted */ orderTree (&libcordptr->o, libcordptr->treetab); if (libcordptr->cblkptr != NULL) /* Set number of column blocks if wanted */ *(libcordptr->cblkptr) = libcordptr->o.cblknbr; return (0); } else return (dorderGather ((Dorder *) dordptr, NULL)); } scotch_6.0.9/src/libscotch/vdgraph_separate_df.c0000644000302600021200000004267213560013732022165 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_df.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a separator of the **/ /** given distributed separator graph by **/ /** applying a diffusion method to what is **/ /** assumed to be a distributed band graph. **/ /** **/ /** DATES : # Version 5.1 : from : 05 nov 2007 **/ /** to : 09 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH_SEPARATE_DF #include "module.h" #include "common.h" #include "dgraph.h" #include "vdgraph.h" #include "vdgraph_separate_df.h" /* ** The static variables. */ static const Gnum vdgraphseparatedfloadone = 1; /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a distributed separator ** by diffusion across what is assumed to be a ** distributed band graph. ** It returns: ** - 0 : if the separator could be computed. ** - !0 : on error. */ int vdgraphSeparateDf ( Vdgraph * const grafptr, /*+ Distributed graph +*/ const VdgraphSeparateDfParam * const paraptr) /*+ Method parameters +*/ { float * restrict ielsloctax; /* Inverse of degree array */ float * restrict difogsttax; /* Old diffusion value array */ float * restrict difngsttax; /* New diffusion value array */ const Gnum * restrict edgegsttax; Gnum fronlocnum; float compglbavg; Gnum complocload1; Gnum complocload2; Gnum complocsize1; const Gnum * restrict velolocbax; Gnum velolocmsk; float vanclocval[2]; float valolocval[2]; /* Fraction of load to remove from anchor vertices at each step */ Gnum vanclocnnd; Gnum vertlocnum; Gnum reduloctab[4]; /* Local degree of both anchor vertices, minus edges to other anchors, and their loads */ Gnum reduglbtab[4]; Gnum passnum; float cdifval; float cremval; Gnum psepval; /* Separator part */ int ovflval; /* Overflow flag value */ if (dgraphGhst (&grafptr->s) != 0) { /* Compute ghost edge array if not already present */ errorPrint ("vdgraphSeparateDf: cannot compute ghost edge array"); return (1); } reduloctab[0] = grafptr->s.vendloctax[grafptr->s.vertlocnnd - 2] - grafptr->s.vertloctax[grafptr->s.vertlocnnd - 2] - (grafptr->s.procglbnbr - 1); reduloctab[1] = grafptr->s.vendloctax[grafptr->s.vertlocnnd - 1] - grafptr->s.vertloctax[grafptr->s.vertlocnnd - 1] - (grafptr->s.procglbnbr - 1); if (grafptr->s.veloloctax == NULL) reduloctab[2] = reduloctab[3] = 1; else { reduloctab[2] = grafptr->s.veloloctax[grafptr->s.vertlocnnd - 2]; reduloctab[3] = grafptr->s.veloloctax[grafptr->s.vertlocnnd - 1]; } if (memAllocGroup ((void **) (void *) &ielsloctax, (size_t) (grafptr->s.vertlocnbr * sizeof (float)), &difogsttax, (size_t) (grafptr->s.vertgstnbr * sizeof (float)), &difngsttax, (size_t) (grafptr->s.vertgstnbr * sizeof (float)), NULL) == NULL) { errorPrint ("vdgraphSeparateDf: out of memory"); reduloctab[0] = -1; } else { ielsloctax -= grafptr->s.baseval; difogsttax -= grafptr->s.baseval; difngsttax -= grafptr->s.baseval; } if (MPI_Allreduce (reduloctab, reduglbtab, 4, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("vdgraphSeparateDf: communication error (1)"); return (1); } if (reduglbtab[0] < 0) { /* If memory error */ if (ielsloctax != NULL) memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ } if ((reduglbtab[0] == 0) || /* If graph is too small to have any usable anchors, leave partition as is */ (reduglbtab[1] == 0)) { memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (0); } psepval = paraptr->partval & 1; /* Coerce part in the {0,1} range */ compglbavg = (float) (grafptr->compglbload[0] + grafptr->compglbload[1]) * 0.5F; vanclocval[0] = (float) grafptr->compglbload[0]; if (vanclocval[0] < (compglbavg * (1.0F - (float) paraptr->deltval))) /* Enforce balance constraint */ vanclocval[0] = compglbavg * (1.0F - (float) paraptr->deltval); else if (vanclocval[0] > (compglbavg * (1.0F + (float) paraptr->deltval))) vanclocval[0] = compglbavg * (1.0F + (float) paraptr->deltval); vanclocval[1] = (float) (grafptr->compglbload[0] + grafptr->compglbload[1]) - vanclocval[0]; valolocval[0] = (float) reduglbtab[2]; /* Compute values to remove from anchor vertices */ valolocval[1] = (float) reduglbtab[3]; if (vanclocval[0] < valolocval[0]) /* If anchor in part 0 too large to reduce imbalance */ psepval = 1; /* Separator must be taken from part 1 to stick to anchor 0 */ else if (vanclocval[1] < valolocval[1]) /* Else if anchor in part 1 too large to reduce imbalance */ psepval = 0; /* It is from part 0 that separator must be extracted */ vanclocval[psepval] += (float) grafptr->compglbload[2]; /* Aggregate separator to proper part */ vanclocval[0] = - vanclocval[0]; /* Part 0 holds negative values */ vanclocval[1] -= VDGRAPHSEPARATEDFEPSILON; /* Slightly tilt value to add to part 1 */ for (vertlocnum = grafptr->s.baseval, vanclocnnd = grafptr->s.vertlocnnd - 2; /* Do not account for anchor vertices in diffusion computations */ vertlocnum < vanclocnnd; vertlocnum ++) { #ifdef SCOTCH_DEBUG_VDGRAPH2 if ((grafptr->s.vendloctax[vertlocnum] - grafptr->s.vertloctax[vertlocnum]) == 0) { errorPrint ("vdgraphSeparateDf: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ ielsloctax[vertlocnum] = 1.0F / (float) (grafptr->s.vendloctax[vertlocnum] - grafptr->s.vertloctax[vertlocnum]); difogsttax[vertlocnum] = 0.0F; } ielsloctax[vanclocnnd] = 1.0F / (float) reduglbtab[0]; ielsloctax[vanclocnnd + 1] = 1.0F / (float) reduglbtab[1]; difogsttax[vanclocnnd] = vanclocval[0] * ielsloctax[vanclocnnd]; /* Load anchor vertices for first pass */ difogsttax[vanclocnnd + 1] = vanclocval[1] * ielsloctax[vanclocnnd + 1]; difngsttax[vanclocnnd] = /* In case of isolated anchors, do not risk overflow because of NaN */ difngsttax[vanclocnnd + 1] = 0.0F; if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (difogsttax + grafptr->s.baseval), MPI_FLOAT) != 0) { /* Perform initial diffusion (and build communication structures) */ errorPrint ("vdgraphSeparateDf: cannot propagate diffusion data (1)"); memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (1); } ovflval = 0; cdifval = paraptr->cdifval; cremval = paraptr->cremval; edgegsttax = grafptr->s.edgegsttax; for (passnum = 0; ; ) { /* For all passes */ if (ovflval == 0) { /* If no overflow occured */ Gnum vertlocnum; float * diftgsttax; /* Temporary swap value */ float veloval; veloval = 1.0F; /* Assume no vertex loads */ for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) { Gnum edgelocnum; Gnum edgelocnnd; float diffval; diffval = 0.0F; for (edgelocnum = grafptr->s.vertloctax[vertlocnum], edgelocnnd = grafptr->s.vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) diffval += difogsttax[edgegsttax[edgelocnum]]; diffval *= cdifval; diffval += (difogsttax[vertlocnum] * cremval) / ielsloctax[vertlocnum]; if (grafptr->s.veloloctax != NULL) veloval = (float) grafptr->s.veloloctax[vertlocnum]; if (diffval >= 0.0F) { diffval = (diffval - veloval) * ielsloctax[vertlocnum]; if (diffval <= 0.0F) diffval = +VDGRAPHSEPARATEDFEPSILON; } else { diffval = (diffval + veloval) * ielsloctax[vertlocnum]; if (diffval >= 0.0F) diffval = -VDGRAPHSEPARATEDFEPSILON; } if (isnan (diffval)) { /* If overflow occured */ ovflval = 1; /* We are in state of overflow */ goto abort; /* Exit this loop without swapping arrays */ } difngsttax[vertlocnum] = diffval; } for ( ; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { /* For the two local anchor vertices */ Gnum edgelocnum; Gnum edgelocnnd; float diffval; diffval = 0.0F; edgelocnum = grafptr->s.vertloctax[vertlocnum] + grafptr->s.procglbnbr - 1; /* Skip links to other anchors */ edgelocnnd = grafptr->s.vendloctax[vertlocnum]; if (edgelocnum == edgelocnnd) /* If isolated anchor */ continue; /* Barrel is empty */ for ( ; edgelocnum < edgelocnnd; edgelocnum ++) diffval += difogsttax[edgegsttax[edgelocnum]]; diffval *= cdifval; diffval += vanclocval[vertlocnum - vanclocnnd] + (difogsttax[vertlocnum] * cremval) / ielsloctax[vertlocnum]; if (diffval >= 0.0F) { diffval = (diffval - valolocval[vertlocnum - vanclocnnd]) * ielsloctax[vertlocnum]; if (diffval <= 0.0F) diffval = +VDGRAPHSEPARATEDFEPSILON; } else { diffval = (diffval + valolocval[vertlocnum - vanclocnnd]) * ielsloctax[vertlocnum]; if (diffval >= 0.0F) diffval = -VDGRAPHSEPARATEDFEPSILON; } if (isnan (diffval)) { /* If overflow occured */ ovflval = 1; /* We are in state of overflow */ goto abort; /* Exit this loop without swapping arrays */ } difngsttax[vertlocnum] = diffval; } diftgsttax = (float *) difngsttax; /* Swap old and new diffusion arrays */ difngsttax = (float *) difogsttax; /* Casts to prevent IBM compiler from yelling */ difogsttax = (float *) diftgsttax; } abort : /* If overflow occured, resume here */ if (++ passnum >= paraptr->passnbr) /* If maximum number of passes reached */ break; /* Exit main loop */ if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (difogsttax + grafptr->s.baseval), MPI_FLOAT) != 0) { errorPrint ("vdgraphSeparateDf: cannot propagate diffusion data (2)"); memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ return (1); } } for (vertlocnum = grafptr->s.baseval; vertlocnum < vanclocnnd; vertlocnum ++) /* Pre-set parts without separator */ grafptr->partgsttax[vertlocnum] = (difogsttax[vertlocnum] <= 0.0F) ? 0 : 1; grafptr->partgsttax[vanclocnnd] = 0; /* Set up parts in case anchors are isolated */ grafptr->partgsttax[vanclocnnd + 1] = 1; if (grafptr->s.veloloctax != NULL) { velolocbax = grafptr->s.veloloctax; velolocmsk = ~((Gnum) 0); } else { velolocbax = &vdgraphseparatedfloadone; velolocmsk = 0; } memFree (ielsloctax + grafptr->s.baseval); /* Free group leader */ if (dgraphHaloSync (&grafptr->s, (byte *) (void *) (grafptr->partgsttax + grafptr->s.baseval), GRAPHPART_MPI) != 0) { errorPrint ("vdgraphSeparateDf: cannot propagate part data"); return (1); } for (vertlocnum = grafptr->s.baseval, fronlocnum = complocsize1 = complocload1 = complocload2 = 0; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { Gnum partval; GraphPart partend; Gnum veloval; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (grafptr->partgsttax[vertlocnum] > 1) { errorPrint ("vdgraphSeparateDf: internal error (2)"); break; /* Do not break upcoming collective communications */ } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ partend = grafptr->partgsttax[vertlocnum] ^ 1; partval = (Gnum) grafptr->partgsttax[vertlocnum]; veloval = velolocbax[vertlocnum & velolocmsk]; complocsize1 += partval; /* Here, part is 0 or 1 only */ complocload1 += partval * veloval; if (partval == psepval) { /* Only vertices of aggregated part can be in separator */ Gnum edgelocnum; for (edgelocnum = grafptr->s.vertloctax[vertlocnum]; edgelocnum < grafptr->s.vendloctax[vertlocnum]; edgelocnum ++) { #ifdef SCOTCH_DEBUG_VDGRAPH2 if (grafptr->partgsttax[edgegsttax[edgelocnum]] > 2) { errorPrint ("vdgraphSeparateDf: internal error (3)"); vertlocnum = grafptr->s.vertlocnnd; break; /* Do not break upcoming collective communications */ } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ if (grafptr->partgsttax[edgegsttax[edgelocnum]] == partend) { /* If end vertex is in other part (and not in separator) */ grafptr->fronloctab[fronlocnum ++] = vertlocnum; /* Record it as member of the separator */ grafptr->partgsttax[vertlocnum] = 2; complocload2 += veloval; break; /* No need to go further */ } } } } grafptr->complocload[0] = grafptr->s.velolocsum - complocload1; grafptr->complocload[1] = complocload1; grafptr->complocload[2] = complocload2; grafptr->complocload[psepval] -= complocload2; grafptr->complocsize[0] = grafptr->s.vertlocnbr - complocsize1; grafptr->complocsize[1] = complocsize1; grafptr->complocsize[psepval] -= fronlocnum; grafptr->complocsize[2] = fronlocnum; if (MPI_Allreduce (&grafptr->complocload[0], &grafptr->compglbload[0], 6, GNUM_MPI, MPI_SUM, grafptr->s.proccomm) != MPI_SUCCESS) { /* TRICK: all arrays */ errorPrint ("vdgraphSeparateDf: communication error (2)"); return (1); } grafptr->compglbloaddlt = grafptr->compglbload[0] - grafptr->compglbload[1]; #ifdef SCOTCH_DEBUG_VDGRAPH2 if (vdgraphCheck (grafptr) != 0) { errorPrint ("vdgraphSeparateDf: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_VDGRAPH2 */ if (grafptr->s.proclocnum == 0) fprintf (stderr, "BROL " GNUMSTRING "," GNUMSTRING "," GNUMSTRING "(" GNUMSTRING ")\n", (Gnum) grafptr->compglbload[0], (Gnum) grafptr->compglbload[1], (Gnum) grafptr->compglbload[2], (Gnum) grafptr->compglbloaddlt); return (0); } scotch_6.0.9/src/libscotch/bdgraph_bipart_st.h0000644000302600021200000000727213560005346021657 0ustar pelegrinpelegrin/* Copyright 2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_st.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the strategy and method **/ /** tables and the generic entry point for **/ /** the distributed graph bipartitioning **/ /** methods. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 16 jul 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum BdgraphBipartStMethodType_ { BDGRAPHBIPARTSTMETHBD = 0, /*+ Band (strategy) +*/ BDGRAPHBIPARTSTMETHDF, /*+ Diffusion +*/ BDGRAPHBIPARTSTMETHEX, /*+ Exactifier +*/ BDGRAPHBIPARTSTMETHML, /*+ Multi-level (strategy) +*/ BDGRAPHBIPARTSTMETHSQ, /*+ Sequential Method +*/ BDGRAPHBIPARTSTMETHZR, /*+ Move all to part zero +*/ BDGRAPHBIPARTSTMETHNBR /*+ Number of methods +*/ } BdgraphBipartStMethodType; /* ** The external declarations. */ extern StratTab bdgraphbipartststratab; /* ** The function prototypes. */ int bdgraphBipartSt (Bdgraph * const, const Strat * const); scotch_6.0.9/src/libscotch/bdgraph_bipart_ml.c0000644000302600021200000010652113560005346021631 0ustar pelegrinpelegrin/* Copyright 2007-2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_ml.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module bipartitions a distributed **/ /** graph using a multi-level scheme. **/ /** **/ /** DATES : # Version 5.1 : from : 30 oct 2007 **/ /** to : 14 apr 2011 **/ /** : # Version 6.0 : from : 11 sep 2011 **/ /** to : 31 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_ML #include "module.h" #include "common.h" #include "parser.h" #include "arch.h" #include "dgraph.h" #include "dgraph_coarsen.h" #include "bdgraph.h" #include "bdgraph_bipart_ml.h" #include "bdgraph_bipart_st.h" /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** Dgraph that is given on input. The coarser ** Dgraphs differ at this stage from classical ** active Dgraphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse Dgraph has been built. ** - 1 : if threshold reached or on error. */ static int bdgraphBipartMlCoarsen ( Bdgraph * restrict const finegrafptr, /*+ Finer graph +*/ Bdgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ DgraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to multinode table to build +*/ const BdgraphBipartMlParam * const paraptr) /*+ Method parameters +*/ { int foldval; switch (paraptr->foldval) { case 0 : foldval = DGRAPHCOARSENNONE; break; case 1 : foldval = DGRAPHCOARSENFOLD; break; case 2 : foldval = DGRAPHCOARSENFOLDDUP; break; #ifdef SCOTCH_DEBUG_BGRAPH2 default : errorPrint ("bdgraphBipartMlCoarsen: invalid parameter"); return (1); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } if ((finegrafptr->s.vertglbnbr / finegrafptr->s.procglbnbr) > paraptr->foldmax) /* If no need to fold */ foldval = DGRAPHCOARSENNONE; *coarmultptr = NULL; /* Let the routine create the multinode array */ dgraphInit (&coargrafptr->s, finegrafptr->s.proccomm); /* Re-use fine graph communicator */ if (dgraphCoarsen (&finegrafptr->s, &coargrafptr->s, coarmultptr, paraptr->passnbr, paraptr->coarnbr, paraptr->coarrat, foldval) != 0) return (1); /* Return if coarsening failed */ *coarmultptr -= coargrafptr->s.baseval; /* Base pointer to multinode array */ coargrafptr->partgsttax = NULL; /* Do not allocate partition data yet */ coargrafptr->fronloctab = NULL; coargrafptr->fronglbnbr = 0; if (coargrafptr->s.procglbnbr == 0) { /* Not owner of graph */ coargrafptr->veexloctax = NULL; return (0); } if (finegrafptr->veexloctax != NULL) { /* Merge external gains for coarsened vertices */ DgraphCoarsenMulti * restrict coarmulttax; Gnum * restrict coarveexloctax; Gnum coarvertlocnum; if ((coarveexloctax = (Gnum *) memAlloc (coargrafptr->s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphBipartMlCoarsen: out of memory"); dgraphExit (&coargrafptr->s); /* Only free Dgraph since veexloctax not allocated */ memFree (*coarmultptr + coargrafptr->s.baseval); return (1); } coarveexloctax -= coargrafptr->s.baseval; coargrafptr->veexloctax = coarveexloctax; coarmulttax = *coarmultptr; for (coarvertlocnum = coargrafptr->s.baseval; coarvertlocnum < coargrafptr->s.vertlocnnd; coarvertlocnum++) { Gnum finevertnum0; /* First multinode vertex */ Gnum finevertnum1; /* Second multinode vertex */ finevertnum0 = coarmulttax[coarvertlocnum].vertglbnum[0]; finevertnum1 = coarmulttax[coarvertlocnum].vertglbnum[1]; coarveexloctax[coarvertlocnum] = (finevertnum0 != finevertnum1) ? finegrafptr->veexloctax[finevertnum0] + finegrafptr->veexloctax[finevertnum1] : finegrafptr->veexloctax[finevertnum0]; } } else /* If fine graph does not have external gains */ coargrafptr->veexloctax = NULL; /* Coarse graph does not have external gains */ coargrafptr->veexglbsum = finegrafptr->veexglbsum; coargrafptr->compglbload0min = finegrafptr->compglbload0min; /* Only set constant partition parameters as others will be set on uncoarsening */ coargrafptr->compglbload0max = finegrafptr->compglbload0max; coargrafptr->compglbload0avg = finegrafptr->compglbload0avg; coargrafptr->commglbloadextn0 = finegrafptr->commglbloadextn0; coargrafptr->commglbgainextn0 = finegrafptr->commglbgainextn0; coargrafptr->domndist = finegrafptr->domndist; coargrafptr->domnwght[0] = finegrafptr->domnwght[0]; coargrafptr->domnwght[1] = finegrafptr->domnwght[1]; coargrafptr->levlnum = finegrafptr->levlnum + 1; return (0); } /* This routine is the reduction-loc operator which ** returns in inout[2] the rank of the process which ** holds the best partition. ** It returns: ** - void : in all cases. */ static void bdgraphBipartMlOpBest ( const Gnum * const in, /* First operand */ Gnum * const inout, /* Second and output operand */ const int * const len, /* Number of instances ; should be 1, not used */ const MPI_Datatype * const typedat) /* MPI datatype ; not used */ { inout[5] |= in[5]; /* Memory error flag */ if (inout[0] == 1) { /* Handle cases when at least one of them is erroneous */ if (in[0] == 1) { if (inout[1] > in[1]) { /* To enforce commutativity, always keep smallest process number */ inout[1] = in[1]; inout[2] = in[2]; } return; } inout[0] = in[0]; /* Validity flag */ inout[1] = in[1]; /* Lead process rank */ inout[2] = in[2]; /* Lead process color */ inout[3] = in[3]; /* Communication load */ inout[4] = in[4]; /* Load imbalance */ return; } else if (in[0] == 1) return; if ((in[3] < inout[3]) || /* Select best partition */ ((in[3] == inout[3]) && ((in[4] < inout[4]) || ((in[4] == inout[4]) && (in[1] < inout[1]))))) { inout[1] = in[1]; inout[2] = in[2]; inout[3] = in[3]; inout[4] = in[4]; } } /* This routine propagates the bipartitioning of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the bipartitioning is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to fine graph. ** - !0 : on error. */ static int bdgraphBipartMlUncoarsen ( Bdgraph * restrict finegrafptr, /*+ Finer graph +*/ const Bdgraph * restrict const coargrafptr, /*+ Coarser graph +*/ const DgraphCoarsenMulti * restrict const coarmulttax) /*+ Multinode array +*/ { Gnum baseval; Gnum finefronlocnbr; Gnum finefronlocnum; Gnum fineedlolocval; Gnum finevertlocadj; /* Global vertex adjustment */ Gnum finevertlocnnd; /* Index for frontier array fronloctab */ Gnum finecomplocsize1; Gnum finecomplocload1; Gnum finecommlocloadintn; Gnum finecommlocloadextn; Gnum finecommlocgainextn; int vrcvdspnbr; int vsnddspnbr; int * restrict vrcvcnttab; int * restrict vsndcnttab; int * restrict vrcvdsptab; int * restrict vsnddsptab; Gnum * restrict vrcvdattab; Gnum * restrict vsnddattab; Gnum * restrict vsndidxtab; BdgraphBipartMlSort * restrict sortloctab; /* Array of vertices to send to their owner */ Gnum sortlocnbr; Gnum sortlocnum; int procnum; MPI_Datatype besttypedat; /* Data type for finding best bipartition */ MPI_Op bestoperdat; /* Handle of MPI operator for finding best bipartition */ Gnum reduloctab[6]; /* "6": both for selecting best and propagating data */ Gnum reduglbtab[6]; const Gnum * restrict coarfronloctab; GraphPart * restrict coarpartgsttax; GraphPart * restrict finepartgsttax; Gnum * restrict finefronloctab; #ifdef SCOTCH_DEBUG_BDGRAPH2 Gnum finevertlocnum; #endif /* SCOTCH_DEBUG_BDGRAPH2 */ const int fineprocglbnbr = finegrafptr->s.procglbnbr; const Gnum * restrict const fineprocvrttab = finegrafptr->s.procvrttab; const Gnum * restrict const fineedgegsttax = finegrafptr->s.edgegsttax; const Gnum * restrict const finevertloctax = finegrafptr->s.vertloctax; const Gnum * restrict const finevendloctax = finegrafptr->s.vendloctax; const Gnum * restrict const fineveloloctax = finegrafptr->s.veloloctax; const Gnum * restrict const fineveexloctax = finegrafptr->veexloctax; const Gnum * restrict const fineedloloctax = finegrafptr->s.edloloctax; reduloctab[5] = 0; /* Assume everything is fine */ if (finegrafptr->partgsttax == NULL) { /* If partition array not yet allocated */ if (dgraphGhst (&finegrafptr->s) != 0) { /* Create ghost edge array and compute vertgstnbr */ errorPrint ("bdgraphBipartMlUncoarsen: cannot compute ghost edge array"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } else if ((finegrafptr->partgsttax = (GraphPart *) memAlloc (finegrafptr->s.vertgstnbr * sizeof (GraphPart))) == NULL) { errorPrint ("bdgraphBipartMlUncoarsen: out of memory (1)"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } else if (finegrafptr->partgsttax -= finegrafptr->s.baseval, (finegrafptr->fronloctab = (Gnum *) memAlloc (finegrafptr->s.vertlocnbr * sizeof (Gnum))) == NULL) { errorPrint ("bdgraphBipartMlUncoarsen: out of memory (2)"); reduloctab[5] = 1; /* Allocated data will be freed along with graph structure */ } } if (coargrafptr == NULL) { /* If coarser graph not provided */ #ifdef SCOTCH_DEBUG_BDGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&reduloctab[5], &reduglbtab[5], 1, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (1)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ reduglbtab[5] = reduloctab[5]; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (reduglbtab[5] != 0) return (1); bdgraphZero (finegrafptr); /* Assign all vertices to part 0 */ #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (finegrafptr) != 0) { errorPrint ("bdgraphBipartMlUncoarsen: inconsistent graph data (1)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } if (coargrafptr->s.procglbnbr <= 0) { /* If unused folded coargrafptr */ reduloctab[0] = 1; /* Set it as invalid */ reduloctab[1] = 0; /* Useless rank */ reduloctab[2] = 1; /* Color is not the one of folded */ reduloctab[3] = /* Prevent Valgrind from yelling */ reduloctab[4] = 0; } else { reduloctab[0] = ((coargrafptr->compglbload0 == 0) || /* Empty subdomains are deemed invalid */ (coargrafptr->compglbload0 == coargrafptr->s.veloglbsum)) ? 1 : 0; reduloctab[1] = finegrafptr->s.proclocnum; /* Set rank and color key according to coarse graph (sub)communicator */ reduloctab[2] = finegrafptr->s.prockeyval; reduloctab[3] = coargrafptr->commglbload; reduloctab[4] = coargrafptr->compglbload0dlt; } if ((MPI_Type_contiguous (6, GNUM_MPI, &besttypedat) != MPI_SUCCESS) || (MPI_Type_commit (&besttypedat) != MPI_SUCCESS) || (MPI_Op_create ((MPI_User_function *) bdgraphBipartMlOpBest, 1, &bestoperdat) != MPI_SUCCESS)) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (2)"); return (1); } if (MPI_Allreduce (reduloctab, reduglbtab, 1, besttypedat, bestoperdat, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (3)"); return (1); } if ((MPI_Op_free (&bestoperdat) != MPI_SUCCESS) || (MPI_Type_free (&besttypedat) != MPI_SUCCESS)) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (4)"); return (1); } if (reduglbtab[5] != 0) /* If memory error, return */ return (1); if (reduglbtab[0] == 1) { /* If all possible partitions are invalid */ #ifdef SCOTCH_DEBUG_BDGRAPH2 errorPrintW ("bdgraphBipartMlUncoarsen: no valid partition"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (1); /* All invalid partitions will lead to low method be applied at upper level */ } if (memAllocGroup ((void **) (void *) &vrcvcnttab, (size_t) (fineprocglbnbr * sizeof (int)), &vrcvdsptab, (size_t) (fineprocglbnbr * sizeof (int)), &vsnddsptab, (size_t) (fineprocglbnbr * sizeof (int)), &vsndcnttab, (size_t) (fineprocglbnbr * sizeof (int)), &vsndidxtab, (size_t) (fineprocglbnbr * sizeof (Gnum) * 4), /* TRICK: sortloctab after vsndidxtab after vsndcnttab */ &sortloctab, (size_t) (2 * coargrafptr->s.vertlocnbr * sizeof (BdgraphBipartMlSort)), NULL) == NULL) { errorPrint ("bdgraphBipartMlUncoarsen: out of memory (3)"); reduloctab[5] = 1; } #ifdef SCOTCH_DEBUG_BDGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&reduloctab[5], &reduglbtab[5], 1, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (5)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ reduglbtab[5] = reduloctab[5]; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (reduglbtab[5] != 0) { if (vrcvcnttab != NULL) memFree (vrcvcnttab); return (1); } memSet (vsndcnttab, 0, ((byte *) sortloctab) - ((byte *) vsndcnttab)); /* TRICK: sortloctab after vsndidxtab after vsndcnttab */ baseval = finegrafptr->s.baseval; coarfronloctab = coargrafptr->fronloctab; coarpartgsttax = coargrafptr->partgsttax; finepartgsttax = finegrafptr->partgsttax; finevertlocnnd = finegrafptr->s.vertlocnnd; finevertlocadj = finegrafptr->s.procvrttab[finegrafptr->s.proclocnum] - baseval; finefronloctab = finegrafptr->fronloctab; finecomplocsize1 = 0; finecomplocload1 = 0; finecommlocloadextn = 0; finecommlocgainextn = 0; #ifdef SCOTCH_DEBUG_BDGRAPH2 memSet (finepartgsttax + baseval, ~0, finegrafptr->s.vertgstnbr * sizeof (GraphPart)); /* All vertices are unvisited */ #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finefronlocnbr = 0; sortlocnbr = 0; if (reduglbtab[2] == (Gnum) coargrafptr->s.prockeyval) { /* If we belong to the group of the lead process, we must browse and send local data */ Gnum coarfronlocnum; Gnum coarvertlocnum; for (coarfronlocnum = 0; coarfronlocnum < coargrafptr->fronlocnbr; coarfronlocnum ++) coarpartgsttax[coarfronloctab[coarfronlocnum]] |= 2; /* Flag vertex as belonging to frontier */ for (coarvertlocnum = baseval; coarvertlocnum < coargrafptr->s.vertlocnnd; coarvertlocnum ++) { GraphPart coarpartval; Gnum coarpartmsk; Gnum finevertglbnum; Gnum finevertlocnum; int i; coarpartval = coarpartgsttax[coarvertlocnum]; coarpartmsk = (Gnum) (coarpartval & 1); i = 0; do { finevertglbnum = coarmulttax[coarvertlocnum].vertglbnum[i]; finevertlocnum = finevertglbnum - finevertlocadj; if ((finevertlocnum >= baseval) && /* If vertex is local */ (finevertlocnum < finevertlocnnd)) { #ifdef SCOTCH_DEBUG_BDGRAPH2 if (finepartgsttax[finevertlocnum] != ((GraphPart) ~0)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finepartgsttax[finevertlocnum] = (coarpartval & 1); finecomplocsize1 += coarpartmsk; /* One extra vertex created in part 1 if (coarpartval == 1) */ if ((coarpartval & 2) != 0) /* If coarse frontier vertex, add fine vertex to fine frontier */ finefronloctab[finefronlocnbr ++] = finevertlocnum; if (fineveloloctax != NULL) { Gnum veloval; veloval = fineveloloctax[finevertlocnum]; finecomplocload1 += veloval & (- coarpartmsk); } if (fineveexloctax != NULL) { Gnum veexval; veexval = fineveexloctax[finevertlocnum]; finecommlocloadextn += veexval * coarpartmsk; finecommlocgainextn += veexval * (1 - 2 * coarpartmsk); } } else { int procngbnum; int procngbmax; procngbnum = 0; procngbmax = fineprocglbnbr; while ((procngbmax - procngbnum) > 1) { /* Find owner process by dichotomy on procvgbtab */ int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (fineprocvrttab[procngbmed] > finevertglbnum) procngbmax = procngbmed; else procngbnum = procngbmed; } vsndidxtab[4 * procngbnum + coarpartval] ++; /* One of four counters per process number will be incremented */ sortloctab[sortlocnbr].vertnum = finevertglbnum; sortloctab[sortlocnbr].procnum = ((procngbnum + (fineprocglbnbr * coarpartmsk)) ^ (- (Gnum) (coarpartval >> 1))); /* Embed part and frontier information */ sortlocnbr ++; } i ++; /* Process next multinode vertex */ } while (finevertglbnum != coarmulttax[coarvertlocnum].vertglbnum[1]); /* If not single node */ } for (procnum = 0; procnum < fineprocglbnbr; procnum ++) { /* Aggregate data to be sent */ vsndcnttab[procnum] = vsndidxtab[4 * procnum] + vsndidxtab[4 * procnum + 1] + vsndidxtab[4 * procnum + 2] + vsndidxtab[4 * procnum + 3]; if (vsndcnttab[procnum] != 0) /* If we will send data to neighbor */ vsndcnttab[procnum] += 3; /* Add control data to message size */ } } if (MPI_Alltoall (vsndcnttab, 1, MPI_INT, vrcvcnttab, 1, MPI_INT, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (6)"); return (1); } for (procnum = 0, vrcvdspnbr = vsnddspnbr = 0; /* Build communication index arrays */ procnum < fineprocglbnbr; procnum ++) { vrcvdsptab[procnum] = vrcvdspnbr; vsnddsptab[procnum] = vsnddspnbr; vrcvdspnbr += vrcvcnttab[procnum]; vsnddspnbr += vsndcnttab[procnum]; } if (memAllocGroup ((void **) (void *) &vrcvdattab, (size_t) (vrcvdspnbr * sizeof (Gnum)), &vsnddattab, (size_t) (vsnddspnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("bdgraphBipartMlUncoarsen: out of memory (4)"); reduloctab[5] = 1; } #ifdef SCOTCH_DEBUG_BDGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&reduloctab[5], &reduglbtab[5], 1, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (7)"); return (1); } #else /* SCOTCH_DEBUG_BDGRAPH1 */ reduglbtab[5] = reduloctab[5]; #endif /* SCOTCH_DEBUG_BDGRAPH1 */ if (reduglbtab[5] != 0) { if (vrcvdattab != NULL) memFree (vrcvdattab); if (vrcvcnttab != NULL) memFree (vrcvcnttab); return (1); } for (procnum = 0; procnum < fineprocglbnbr; procnum ++) { Gnum vsnddspval; vsnddspval = vsnddsptab[procnum]; if (vsndcnttab[procnum] != 0) { Gnum vsndidxnum; vsnddattab[vsnddspval] = vsndidxtab[4 * procnum]; vsnddattab[vsnddspval + 1] = vsndidxtab[4 * procnum + 1]; vsnddattab[vsnddspval + 2] = vsndidxtab[4 * procnum + 2]; vsnddspval += 3; /* Compute sub-array indices to pack vertices to be sent */ vsndidxnum = vsndidxtab[4 * procnum]; vsndidxtab[4 * procnum] = vsnddspval; vsnddspval += vsndidxnum; vsndidxnum = vsndidxtab[4 * procnum + 1]; vsndidxtab[4 * procnum + 1] = vsnddspval; vsnddspval += vsndidxnum; vsndidxnum = vsndidxtab[4 * procnum + 2]; vsndidxtab[4 * procnum + 2] = vsnddspval; vsnddspval += vsndidxnum; vsndidxtab[4 * procnum + 3] = vsnddspval; } } for (sortlocnum = 0; sortlocnum < sortlocnbr; sortlocnum ++) { /* For all vertices to send */ Gnum vertglbend; Gnum procngbnum; int partval; vertglbend = sortloctab[sortlocnum].vertnum; procngbnum = sortloctab[sortlocnum].procnum; partval = 0; /* Extract frontier and part data from process number */ if (procngbnum < 0) { partval = 2; procngbnum ^= (Gnum) -1; } if (procngbnum >= fineprocglbnbr) { partval |= 1; procngbnum -= fineprocglbnbr; } #ifdef SCOTCH_DEBUG_BDGRAPH2 if (((partval < 3) && (vsndidxtab[4 * procngbnum + partval] >= vsndidxtab[4 * procngbnum + partval + 1])) || (vsndidxtab[4 * procngbnum + partval] >= (vsnddsptab[procngbnum] + vsndcnttab[procngbnum]))) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ vsnddattab[vsndidxtab[4 * procngbnum + partval] ++] = vertglbend; /* Pack vertex in proper sub-array */ } if (MPI_Alltoallv (vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, finegrafptr->s.proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphBipartMlUncoarsen: communication error (8)"); return (1); } for (procnum = 0; procnum < fineprocglbnbr; ++ procnum) { /* Update local ones from the buffer for receiving data */ Gnum vrcvidxnum; Gnum vrcvidxnnd; if (vrcvcnttab[procnum] == 0) /* If nothing received from this process, skip it */ continue; finecomplocsize1 += (vrcvcnttab[procnum] - 3) - vrcvdattab[vrcvdsptab[procnum]] - vrcvdattab[vrcvdsptab[procnum] + 2]; for (vrcvidxnum = vrcvdsptab[procnum] + 3, vrcvidxnnd = vrcvidxnum + vrcvdattab[vrcvdsptab[procnum]]; /* Vertices in sub-array 0 */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum finevertlocnum; finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finepartgsttax[finevertlocnum] = 0; } for (vrcvidxnnd = vrcvidxnum + vrcvdattab[vrcvdsptab[procnum] + 1]; /* Vertices in sub-array 1 */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum finevertlocnum; finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finepartgsttax[finevertlocnum] = 1; if (fineveloloctax != NULL) finecomplocload1 += fineveloloctax[finevertlocnum]; if (fineveexloctax != NULL) { Gnum veexval; veexval = fineveexloctax[finevertlocnum]; finecommlocloadextn += veexval; finecommlocgainextn -= veexval; } } for (vrcvidxnnd = vrcvidxnum + vrcvdattab[vrcvdsptab[procnum] + 2]; /* Vertices in sub-array 2 */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum finevertlocnum; finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finepartgsttax[finevertlocnum] = 0; finefronloctab[finefronlocnbr ++] = finevertlocnum; } for (vrcvidxnnd = vrcvdsptab[procnum] + vrcvcnttab[procnum]; /* Vertices in sub-array 3 */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum finevertlocnum; finevertlocnum = vrcvdattab[vrcvidxnum] - finevertlocadj; #ifdef SCOTCH_DEBUG_BDGRAPH2 if ((finevertlocnum < baseval) || (finevertlocnum >= finevertlocnnd)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ finepartgsttax[finevertlocnum] = 1; finefronloctab[finefronlocnbr ++] = finevertlocnum; if (fineveloloctax != NULL) finecomplocload1 += fineveloloctax[finevertlocnum]; if (fineveexloctax != NULL) { Gnum veexval; veexval = fineveexloctax[finevertlocnum]; finecommlocloadextn += veexval; finecommlocgainextn -= veexval; } } } #ifdef SCOTCH_DEBUG_BDGRAPH2 for (finevertlocnum = baseval; finevertlocnum < finevertlocnnd; finevertlocnum ++) { if (finepartgsttax[finevertlocnum] == ((GraphPart) ~0)) { errorPrint ("bdgraphBipartMlUncoarsen: internal error (7)"); return (1); } } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ if (dgraphHaloSync (&finegrafptr->s, (byte *) (finepartgsttax + baseval), GRAPHPART_MPI) != 0) { errorPrint ("bdgraphBipartMlUncoarsen: cannot perform halo exchange"); return (1); } finecommlocloadintn = 0; fineedlolocval = 1; /* Assume edges are not weighted */ for (finefronlocnum = 0; finefronlocnum < finefronlocnbr; finefronlocnum ++) { Gnum finevertlocnum; Gnum fineedgelocnum; Gnum partval; Gnum commcut; finevertlocnum = finefronloctab[finefronlocnum]; partval = finepartgsttax[finevertlocnum]; for (fineedgelocnum = finevertloctax[finevertlocnum], commcut = 0; fineedgelocnum < finevendloctax[finevertlocnum]; fineedgelocnum ++) { Gnum partdlt; partdlt = partval ^ finepartgsttax[fineedgegsttax[fineedgelocnum]]; commcut += partdlt; if (fineedloloctax != NULL) fineedlolocval = fineedloloctax[fineedgelocnum]; finecommlocloadintn += partdlt * fineedlolocval; /* Counted in both part, should be divided by 2 in summing up phase */ } if (commcut == 0) /* If vertex does not really belong to frontier */ finefronloctab[finefronlocnum --] = finefronloctab[-- finefronlocnbr]; /* Replace vertex and redo */ } memFree (vrcvdattab); /* Free group leaders */ memFree (vrcvcnttab); finegrafptr->fronlocnbr = finefronlocnbr; finegrafptr->complocsize0 = finegrafptr->s.vertlocnbr - finecomplocsize1; finegrafptr->complocload0 = (fineveloloctax == NULL) ? finegrafptr->complocsize0 : (finegrafptr->s.velolocsum - finecomplocload1); reduloctab[0] = finegrafptr->complocload0; reduloctab[1] = finegrafptr->complocsize0; reduloctab[2] = finegrafptr->fronlocnbr; reduloctab[3] = finecommlocloadintn; reduloctab[4] = finecommlocloadextn; reduloctab[5] = finecommlocgainextn; MPI_Allreduce (reduloctab, reduglbtab, 6, GNUM_MPI, MPI_SUM, finegrafptr->s.proccomm); finegrafptr->compglbload0 = reduglbtab[0]; finegrafptr->compglbload0dlt = finegrafptr->compglbload0 - finegrafptr->compglbload0avg; finegrafptr->compglbsize0 = reduglbtab[1]; finegrafptr->fronglbnbr = reduglbtab[2]; finegrafptr->commglbload = ((reduglbtab[3] / 2) * finegrafptr->domndist + reduglbtab[4] + finegrafptr->commglbloadextn0); finegrafptr->commglbgainextn = reduglbtab[5]; finegrafptr->bbalglbval = coargrafptr->bbalglbval; #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (finegrafptr) != 0) { errorPrint ("bdgraphBipartMlUncoarsen: inconsistent graph data (2)"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } /* This routine performs the ** bipartitioning recursion. ** It returns: ** - 0 : if bipartitioning could be computed. ** - !0 : on error. */ static int bdgraphBipartMl2 ( Bdgraph * restrict const grafptr, /* Active graph */ const BdgraphBipartMlParam * const paraptr) /* Method parameters */ { Bdgraph coargrafdat; DgraphCoarsenMulti * restrict coarmulttax; int o; if (grafptr->s.procglbnbr <= 1) { /* Enter into sequential mode */ if (((o = bdgraphBipartMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = bdgraphBipartSt (grafptr, paraptr->stratseq)) != 0)) { #ifdef SCOTCH_DEBUG_BDGRAPH2 errorPrintW ("bdgraphBipartMl2: cannot apply sequential strategy"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } return (o); } coarmulttax = NULL; /* Assume multinode array is not allocated */ if (bdgraphBipartMlCoarsen (grafptr, &coargrafdat, &coarmulttax, paraptr) == 0) { o = (coargrafdat.s.procglbnbr == 0) ? 0 : bdgraphBipartMl2 (&coargrafdat, paraptr); /* Apply recursion on coarsened graph if it exists */ if ((o == 0) && ((o = bdgraphBipartMlUncoarsen (grafptr, &coargrafdat, coarmulttax)) == 0) && ((o = bdgraphBipartSt (grafptr, paraptr->stratasc)) != 0)) { /* Apply ascending strategy if uncoarsening worked */ #ifdef SCOTCH_DEBUG_BDGRAPH2 errorPrintW ("bdgraphBipartMl2: cannot apply ascending strategy"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } bdgraphExit (&coargrafdat); if (coarmulttax != NULL) /* If multinode array has been allocated */ memFree (coarmulttax + grafptr->s.baseval); /* Free array */ if (o == 0) /* If multi-level failed, apply low strategy as fallback */ return (o); } if (((o = bdgraphBipartMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = bdgraphBipartSt (grafptr, paraptr->stratlow)) != 0)) { /* Apply low strategy */ #ifdef SCOTCH_DEBUG_BDGRAPH2 errorPrintW ("bdgraphBipartMl2: cannot apply low strategy"); #endif /* SCOTCH_DEBUG_BDGRAPH2 */ } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the muti-level bipartitioning. ** It returns: ** - 0 : if bipartitioning could be computed. ** - 1 : on error. */ int bdgraphBipartMl ( Bdgraph * const grafptr, /*+ Active graph +*/ const BdgraphBipartMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = grafptr->levlnum; /* Save graph level */ grafptr->levlnum = 0; /* Initialize coarsening level */ o = bdgraphBipartMl2 (grafptr, paraptr); /* Perform multi-level bipartitioning */ grafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/library_arch_dom.c0000644000302600021200000001353013560013261021461 0ustar pelegrinpelegrin/* Copyright 2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch_dom.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Amaury JACQUES (v6.0) **/ /** **/ /** FUNCTION : This module is the API for the target **/ /** architecture domain handling routines **/ /** of the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 16 apr 2019 **/ /** to 25 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "scotch.h" /***************************************/ /* */ /* These routines are the C API for */ /* the architecture domain handling */ /* routines. */ /* */ /***************************************/ /*+ This function returns the smallest number *** of terminal domain included within the *** given domain. *** It returns: *** - SCOTCH_Num : in all cases. +*/ SCOTCH_Num SCOTCH_archDomNum ( SCOTCH_Arch * const archptr, const SCOTCH_ArchDom * const domnptr) { return (archDomNum ((Arch * const) archptr, (const ArchDom * const) domnptr)); } /*+ This function computes the terminal domain *** associated with the given terminal number. *** It returns: *** - 0 : if label is valid and domain has been updated. *** - 1 : if label is invalid. *** - 2 : on error. +*/ int SCOTCH_archDomTerm ( SCOTCH_Arch * const archptr, SCOTCH_ArchDom * const domnptr, const SCOTCH_Num domnnum) { return (archDomTerm ((Arch * const) archptr, (ArchDom * const) domnptr, domnnum)); } /*+ This function returns the number *** of elements in the given domain. *** It returns: *** - >0 : size of the domain. *** - 0 : on error. +*/ SCOTCH_Num SCOTCH_archDomSize ( SCOTCH_Arch * const archptr, const SCOTCH_ArchDom * const domnptr) { return (archDomSize ((Arch * const) archptr, (const ArchDom * const) domnptr)); } /*+ This function returns the weight *** of the given domain. *** It returns: *** - >0 : weight of the domain. *** - 0 : on error. +*/ SCOTCH_Num SCOTCH_archDomWght ( SCOTCH_Arch * const archptr, const SCOTCH_ArchDom * const domnptr) { return (archDomWght ((Arch * const) archptr, (const ArchDom * const) domnptr)); } /*+ This function yields the average *** distance between two domains. *** It returns: *** - !-1 : distance between subdomains. *** - -1 : on error. +*/ SCOTCH_Num SCOTCH_archDomDist ( SCOTCH_Arch * const archptr, const SCOTCH_ArchDom * const dom0ptr, const SCOTCH_ArchDom * const dom1ptr) { return (archDomDist ((Arch * const) archptr, (const ArchDom * const) dom0ptr, (const ArchDom * const) dom1ptr)); } /*+ This routine fills the contents of the *** given domain with the biggest domain *** of the given target architecture. *** It returns: *** - 0 : if domain could be created. *** - !0 : on error. +*/ int SCOTCH_archDomFrst ( SCOTCH_Arch * const archptr, SCOTCH_ArchDom * const domnptr) { return (archDomFrst ((Arch * const) archptr, (ArchDom * const) domnptr)); } /*+ This function tries to split a domain into *** two subdomains. The two subdomains are created *** so that subdomain 0 has same T_domNum as *** original domain. *** It returns: *** - 0 : if bipartitioning succeeded. *** - 1 : if bipartitioning could not be performed. *** - 2 : on error. +*/ int SCOTCH_archDomBipart ( SCOTCH_Arch * const archptr, const SCOTCH_ArchDom * const domnptr, SCOTCH_ArchDom * const dom0ptr, SCOTCH_ArchDom * const dom1ptr) { return (archDomBipart ((Arch * const) archptr, (const ArchDom * const) domnptr, (ArchDom * const) dom0ptr, (ArchDom * const) dom1ptr)); } scotch_6.0.9/src/libscotch/library_random.c0000644000302600021200000001002413560013261021160 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2014,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_random.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the random **/ /** generator control routine. **/ /** **/ /** DATES : # Version 4.0 : from : 15 jan 2005 **/ /** to 15 jun 2005 **/ /** # Version 6.0 : from : 08 oct 2012 **/ /** to 19 mar 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the random handling routines. */ /* */ /************************************/ /*+ This routine loads a random state. *** It returns: *** - 0 : if state successfully loaded. *** - 1 : state cannot be loaded. *** - 2 : on error. +*/ int SCOTCH_randomLoad ( FILE * stream) { return (intRandLoad (stream)); } /*+ This routine saves the random state. *** It returns: *** - 0 : if state successfully saved. *** - 1 : state cannot be saved. *** - 2 : on error. +*/ int SCOTCH_randomSave ( FILE * stream) { return (intRandSave (stream)); } /*+ This routine sets the process number that *** is used to generate a different seed across *** all processes. *** It returns: *** - void : in all cases. +*/ void SCOTCH_randomProc ( int procnum) { intRandProc (procnum); } /*+ This routine resets the random generator *** to simulate a start from scratch. *** It returns: *** - void : in all cases. +*/ void SCOTCH_randomReset () { intRandReset (); } /*+ This routine sets the value of the *** random seed. *** It returns: *** - void : in all cases. +*/ void SCOTCH_randomSeed ( INT seedval) { intRandSeed (seedval); } scotch_6.0.9/src/libscotch/arch_vhcub.h0000644000302600021200000001216313560005302020270 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_vhcub.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the variable-sized hypercube **/ /** target architecture functions. **/ /** **/ /** DATES : # Version 3.4 : from : 08 nov 2001 **/ /** to 08 nov 2001 **/ /** # Version 4.0 : from : 04 nov 2003 **/ /** to 04 nov 2003 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_VHCUB_H_STRUCT #define ARCH_VHCUB_H_STRUCT /*+ The variable-sized hypercube bipartitioning definitions. +*/ typedef struct ArchVhcub_ { int padding; /*+ No data needed +*/ } ArchVhcub; typedef struct ArchVhcubDom_ { Anum termlvl; /*+ Terminal depth +*/ Anum termnum; /*+ Terminal number +*/ } ArchVhcubDom; #endif /* ARCH_VHCUB_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_VHCUB_H_PROTO #define ARCH_VHCUB_H_PROTO #define archVhcubArchLoad NULL #define archVhcubArchSave NULL #define archVhcubArchFree NULL #define archVhcubMatchInit NULL #define archVhcubMatchExit NULL #define archVhcubMatchMate NULL ArchDomNum archVhcubDomNum (const ArchVhcub * const, const ArchVhcubDom * const); int archVhcubDomTerm (const ArchVhcub * const, ArchVhcubDom * restrict const, const ArchDomNum); Anum archVhcubDomSize (const ArchVhcub * const, const ArchVhcubDom * const); #define archVhcubDomWght archVhcubDomSize Anum archVhcubDomDist (const ArchVhcub * const, const ArchVhcubDom * const, const ArchVhcubDom * const); int archVhcubDomFrst (const ArchVhcub * const, ArchVhcubDom * const); int archVhcubDomLoad (const ArchVhcub * const, ArchVhcubDom * const, FILE * const); int archVhcubDomSave (const ArchVhcub * const, const ArchVhcubDom * const, FILE * const); int archVhcubDomBipart (const ArchVhcub * const, const ArchVhcubDom * const, ArchVhcubDom * restrict const, ArchVhcubDom * restrict const); int archVhcubDomIncl (const ArchVhcub * const, const ArchVhcubDom * const, const ArchVhcubDom * const); #ifdef SCOTCH_PTSCOTCH int archVhcubDomMpiType (const ArchVhcub * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_VHCUB_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/library_mesh.c0000644000302600021200000004343213560013261020645 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_mesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** mesh handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 23 sep 2002 **/ /** to 11 may 2004 **/ /** # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 25 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the mesh handling routines. */ /* */ /************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** centralized mesh structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Mesh * SCOTCH_meshAlloc () { return ((SCOTCH_Mesh *) memAlloc (sizeof (SCOTCH_Mesh))); } /*+ This routine initializes the opaque *** mesh structure used to handle meshes *** in the Scotch library. *** It returns: *** - 0 : if the initialization succeeded. *** - !0 : on error. +*/ int SCOTCH_meshInit ( SCOTCH_Mesh * const meshptr) { if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_meshInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Mesh) < sizeof (Mesh)) { errorPrint (STRINGIFY (SCOTCH_meshInit) ": internal error (2)"); return (1); } return (meshInit ((Mesh *) meshptr)); } /*+ This routine frees the contents of the *** given opaque mesh structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_meshExit ( SCOTCH_Mesh * const meshptr) { meshExit ((Mesh *) meshptr); } /*+ This routine loads the given opaque mesh *** structure with the data of the given stream. *** The base value allows the user to set the *** mesh base to 0 or 1, or to the base value *** of the stream if the base value is equal *** to -1. *** It returns: *** - 0 : if the loading succeeded. *** - !0 : on error. +*/ int SCOTCH_meshLoad ( SCOTCH_Mesh * const meshptr, FILE * const stream, const SCOTCH_Num baseval) { if ((baseval < -1) || (baseval > 1)) { errorPrint (STRINGIFY (SCOTCH_meshLoad) ": invalid base parameter"); return (1); } return (meshLoad ((Mesh * const) meshptr, stream, (Gnum) baseval)); } /*+ This routine saves the contents of the given *** opaque mesh structure to the given stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_meshSave ( const SCOTCH_Mesh * const meshptr, FILE * const stream) { return (meshSave ((const Mesh * const) meshptr, stream)); } /*+ This routine fills the contents of the given *** opaque mesh structure with the data provided *** by the user. The base value allows the user to *** set the mesh base to 0 or 1. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshBuild ( SCOTCH_Mesh * const meshptr, /* Mesh structure to fill */ const SCOTCH_Num velmbas, /* Base index for element vertices */ const SCOTCH_Num vnodbas, /* Base index for node vertices */ const SCOTCH_Num velmnbr, /* Number of elements in mesh graph */ const SCOTCH_Num vnodnbr, /* Number of vertices in mesh graph */ const SCOTCH_Num * const verttab, /* Vertex array [vertnbr or vertnbr+1] */ const SCOTCH_Num * const vendtab, /* Vertex end array [vertnbr] */ const SCOTCH_Num * const velotab, /* Element vertex load array */ const SCOTCH_Num * const vnlotab, /* Node vertex load array */ const SCOTCH_Num * const vlbltab, /* Vertex label array */ const SCOTCH_Num edgenbr, /* Number of edges (arcs) */ const SCOTCH_Num * const edgetab) /* Edge array [edgenbr] */ { Mesh * srcmeshptr; /* Pointer to source mesh structure */ Gnum degrmax; /* Maximum degree */ Gnum veisnbr; /* Number of isolated element vertices */ Gnum vertnum; /* Current vertex number */ #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Mesh) < sizeof (Mesh)) { errorPrint (STRINGIFY (SCOTCH_meshBuild) ": internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((velmbas < 0) || (vnodbas < 0) || ((velmbas > 1) && (vnodbas > 1))) { errorPrint (STRINGIFY (SCOTCH_meshBuild) ": invalid base parameters"); return (1); } if (((velmbas + velmnbr) != vnodbas) && ((vnodbas + vnodnbr) != velmbas)) { errorPrint (STRINGIFY (SCOTCH_meshBuild) ": invalid element or node range"); return (1); } srcmeshptr = (Mesh *) meshptr; /* Use structure as source mesh */ srcmeshptr->flagval = MESHNONE; srcmeshptr->baseval = MIN (velmbas, vnodbas); srcmeshptr->velmnbr = velmnbr; srcmeshptr->velmbas = velmbas; srcmeshptr->velmnnd = velmbas + velmnbr; srcmeshptr->vnodnbr = vnodnbr; srcmeshptr->vnodbas = vnodbas; srcmeshptr->vnodnnd = vnodbas + vnodnbr; srcmeshptr->verttax = (Gnum *) verttab - srcmeshptr->baseval; srcmeshptr->vendtax = ((vendtab == NULL) || (vendtab == verttab) || (vendtab == verttab + 1)) ? srcmeshptr->verttax + 1 : (Gnum *) vendtab - srcmeshptr->baseval; srcmeshptr->velotax = ((velotab == NULL) || (velotab == verttab)) ? NULL : (Gnum *) velotab - srcmeshptr->velmbas; srcmeshptr->vnlotax = ((vnlotab == NULL) || (vnlotab == verttab)) ? NULL : (Gnum *) vnlotab - srcmeshptr->vnodbas; srcmeshptr->vlbltax = ((vlbltab == NULL) || (vlbltab == verttab)) ? NULL : (Gnum *) vlbltab - srcmeshptr->baseval; srcmeshptr->edgenbr = edgenbr; srcmeshptr->edgetax = (Gnum *) edgetab - srcmeshptr->baseval; if (srcmeshptr->velotax == NULL) /* Compute element vertex load sum */ srcmeshptr->velosum = srcmeshptr->velmnbr; else { Gnum velosum; /* Sum of element vertex loads */ for (vertnum = srcmeshptr->velmbas, velosum = 0; vertnum < srcmeshptr->velmnnd; vertnum ++) velosum += srcmeshptr->velotax[vertnum]; srcmeshptr->velosum = velosum; } if (srcmeshptr->vnlotax == NULL) /* Compute node vertex load sum */ srcmeshptr->vnlosum = srcmeshptr->vnodnbr; else { Gnum vnlosum; /* Sum of node vertex loads */ for (vertnum = srcmeshptr->vnodbas, vnlosum = 0; vertnum < srcmeshptr->vnodnnd; vertnum ++) vnlosum += srcmeshptr->vnlotax[vertnum]; srcmeshptr->vnlosum = vnlosum; } for (vertnum = srcmeshptr->velmbas, veisnbr = degrmax = 0; /* Compute maximum degree */ vertnum < srcmeshptr->velmnnd; vertnum ++) { Gnum degrval; /* Degree of current vertex */ degrval = srcmeshptr->vendtax[vertnum] - srcmeshptr->verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; else if (degrval == 0) /* Count number of isolated element vertices */ veisnbr ++; } srcmeshptr->veisnbr = veisnbr; for (vertnum = srcmeshptr->vnodbas; /* Compute maximum degree */ vertnum < srcmeshptr->vnodnnd; vertnum ++) { Gnum degrval; /* Degree of current vertex */ degrval = srcmeshptr->vendtax[vertnum] - srcmeshptr->verttax[vertnum]; if (degrval > degrmax) degrmax = degrval; } srcmeshptr->degrmax = degrmax; #ifdef SCOTCH_DEBUG_LIBRARY1 if (meshCheck (srcmeshptr) != 0) { errorPrint (STRINGIFY (SCOTCH_meshBuild) ": internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ return (0); } /*+ This routine checks the consistency *** of the given mesh. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_meshCheck ( const SCOTCH_Mesh * const meshptr) { return (meshCheck ((const Mesh * const) meshptr)); } /*+ This routine accesses mesh size data. *** NULL pointers on input indicate unwanted *** data. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_meshSize ( const SCOTCH_Mesh * const meshptr, SCOTCH_Num * const velmnbr, SCOTCH_Num * const vnodnbr, SCOTCH_Num * const edgenbr) { const Mesh * srcmeshptr; srcmeshptr = (Mesh *) meshptr; if (velmnbr != NULL) *velmnbr = (SCOTCH_Num) srcmeshptr->velmnbr; if (vnodnbr != NULL) *vnodnbr = (SCOTCH_Num) srcmeshptr->vnodnbr; if (edgenbr != NULL) *edgenbr = (SCOTCH_Num) srcmeshptr->edgenbr; } /*+ This routine accesses all of the mesh data. *** NULL pointers on input indicate unwanted *** data. NULL pointers on output indicate *** unexisting arrays. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_meshData ( const SCOTCH_Mesh * const meshptr, /* Mesh structure to read */ SCOTCH_Num * const velmbas, /* Base index for elements */ SCOTCH_Num * const vnodbas, /* Base index for nodes */ SCOTCH_Num * const velmnbr, /* Number of elements */ SCOTCH_Num * const vnodnbr, /* Number of nodes */ SCOTCH_Num ** const verttab, /* Vertex array [vertnbr+1] */ SCOTCH_Num ** const vendtab, /* Vertex array [vertnbr] */ SCOTCH_Num ** const velotab, /* Element vertex load array */ SCOTCH_Num ** const vnlotab, /* Vertex load array */ SCOTCH_Num ** const vlbltab, /* Vertex label array */ SCOTCH_Num * const edgenbr, /* Number of edges (arcs) */ SCOTCH_Num ** const edgetab, /* Edge array [edgenbr] */ SCOTCH_Num * const degrnbr) /* Maximum degree */ { const Mesh * srcmeshptr; /* Pointer to source mesh structure */ srcmeshptr = (const Mesh *) meshptr; if (velmnbr != NULL) *velmnbr = srcmeshptr->velmnbr; if (vnodnbr != NULL) *vnodnbr = srcmeshptr->vnodnbr; if (velmbas != NULL) *velmbas = srcmeshptr->velmbas; if (vnodbas != NULL) *vnodbas = srcmeshptr->vnodbas; if (verttab != NULL) *verttab = srcmeshptr->verttax + srcmeshptr->baseval; if (vendtab != NULL) *vendtab = srcmeshptr->vendtax + srcmeshptr->baseval; if (velotab != NULL) *velotab = (srcmeshptr->velotax != NULL) ? (srcmeshptr->velotax + srcmeshptr->velmbas) : NULL; if (vnlotab != NULL) *vnlotab = (srcmeshptr->vnlotax != NULL) ? (srcmeshptr->vnlotax + srcmeshptr->vnodbas) : NULL; if (vlbltab != NULL) *vlbltab = (srcmeshptr->vlbltax != NULL) ? (srcmeshptr->vlbltax + srcmeshptr->baseval) : NULL; if (edgenbr != NULL) *edgenbr = srcmeshptr->edgenbr; if (edgetab != NULL) *edgetab = srcmeshptr->edgetax + srcmeshptr->baseval; if (degrnbr != NULL) *degrnbr = srcmeshptr->degrmax; } /*+ This routine computes statistics *** on the given graph. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_meshStat ( const SCOTCH_Mesh * const meshptr, SCOTCH_Num * const vnlominptr, /* Vertex loads only for nodes */ SCOTCH_Num * const vnlomaxptr, SCOTCH_Num * const vnlosumptr, double * const vnloavgptr, double * const vnlodltptr, SCOTCH_Num * const edegminptr, /* Element degree data */ SCOTCH_Num * const edegmaxptr, double * const edegavgptr, double * const edegdltptr, SCOTCH_Num * const ndegminptr, /* Node degree data */ SCOTCH_Num * const ndegmaxptr, double * const ndegavgptr, double * const ndegdltptr) { const Mesh * restrict srcmeshptr; Gnum vnlomin; Gnum vnlomax; double vnloavg; double vnlodlt; Gnum degrmin; Gnum degrmax; double degravg; double degrdlt; srcmeshptr = (Mesh *) meshptr; vnlodlt = 0.0L; if (srcmeshptr->vnodnbr > 0) { if (srcmeshptr->vnlotax != NULL) { /* If mesh has node vertex loads */ Gnum vnodnum; vnlomin = GNUMMAX; vnlomax = 0; vnloavg = (double) srcmeshptr->vnlosum / (double) srcmeshptr->vnodnbr; for (vnodnum = srcmeshptr->vnodbas; vnodnum < srcmeshptr->vnodnnd; vnodnum ++) { if (srcmeshptr->vnlotax[vnodnum] < vnlomin) /* Account for vertex loads */ vnlomin = srcmeshptr->vnlotax[vnodnum]; if (srcmeshptr->vnlotax[vnodnum] > vnlomax) vnlomax = srcmeshptr->vnlotax[vnodnum]; vnlodlt += fabs ((double) srcmeshptr->vnlotax[vnodnum] - vnloavg); } vnlodlt /= (double) srcmeshptr->vnodnbr; } else { vnlomin = vnlomax = 1; vnloavg = 1.0L; } } else { vnlomin = vnlomax = 0; vnloavg = 0.0L; } if (vnlominptr != NULL) *vnlominptr = (SCOTCH_Num) vnlomin; if (vnlomaxptr != NULL) *vnlomaxptr = (SCOTCH_Num) vnlomax; if (vnlosumptr != NULL) *vnlosumptr = (SCOTCH_Num) srcmeshptr->vnlosum; if (vnloavgptr != NULL) *vnloavgptr = (double) vnloavg; if (vnlodltptr != NULL) *vnlodltptr = (double) vnlodlt; degrmax = 0; degrdlt = 0.0L; if (srcmeshptr->velmnbr > 0) { Gnum velmnum; degrmin = GNUMMAX; degravg = (double) srcmeshptr->edgenbr / (double) (2 * srcmeshptr->velmnbr); for (velmnum = srcmeshptr->velmbas; velmnum < srcmeshptr->velmnnd; velmnum ++) { Gnum degrval; degrval = srcmeshptr->vendtax[velmnum] - srcmeshptr->verttax[velmnum]; /* Get element degree */ if (degrval < degrmin) degrmin = degrval; if (degrval > degrmax) degrmax = degrval; degrdlt += fabs ((double) degrval - degravg); } degrdlt /= (double) srcmeshptr->velmnbr; } else { degrmin = 0; degravg = 0.0L; } if (edegminptr != NULL) *edegminptr = (SCOTCH_Num) degrmin; if (edegmaxptr != NULL) *edegmaxptr = (SCOTCH_Num) degrmax; if (edegavgptr != NULL) *edegavgptr = (double) degravg; if (edegdltptr != NULL) *edegdltptr = (double) degrdlt; degrmax = 0; degrdlt = 0.0L; if (srcmeshptr->vnodnbr > 0) { Gnum vnodnum; degrmin = GNUMMAX; degravg = (double) srcmeshptr->edgenbr / (double) (2 * srcmeshptr->vnodnbr); for (vnodnum = srcmeshptr->vnodbas; vnodnum < srcmeshptr->vnodnnd; vnodnum ++) { Gnum degrval; degrval = srcmeshptr->vendtax[vnodnum] - srcmeshptr->verttax[vnodnum]; /* Get element degree */ if (degrval < degrmin) degrmin = degrval; if (degrval > degrmax) degrmax = degrval; degrdlt += fabs ((double) degrval - degravg); } degrdlt /= (double) srcmeshptr->vnodnbr; } else { degrmin = 0; degravg = 0.0L; } if (ndegminptr != NULL) *ndegminptr = (SCOTCH_Num) degrmin; if (ndegmaxptr != NULL) *ndegmaxptr = (SCOTCH_Num) degrmax; if (ndegavgptr != NULL) *ndegavgptr = (double) degravg; if (ndegdltptr != NULL) *ndegdltptr = (double) degrdlt; } scotch_6.0.9/src/libscotch/bgraph_store.c0000644000302600021200000001506313560005346020650 0ustar pelegrinpelegrin/* Copyright 2004,2007,2011 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_store.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for bipar- **/ /** tition graphs. **/ /** **/ /** DATES : # Version 3.3 : from : 17 oct 1998 **/ /** to 17 oct 1998 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 16 jun 2004 **/ /** # Version 5.1 : from : 22 feb 2011 **/ /** to 22 feb 2011 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BGRAPH_STORE #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "bgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int bgraphStoreInit ( const Bgraph * const grafptr, BgraphStore * const storptr) { Gnum savsize; savsize = (grafptr->s.vertnnd - grafptr->s.baseval) * (sizeof (GraphPart) + sizeof (Gnum)); /* Compute size for frontier and part arrays */ if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("bgraphStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void bgraphStoreExit ( BgraphStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_BGRAPH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_BGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void bgraphStoreSave ( const Bgraph * const grafptr, BgraphStore * const storptr) { Gnum vertnbr; /* Number of vertices in graph */ byte * parttab; /* Pointer to part data save area */ byte * frontab; /* Pointer to frontier data save area */ storptr->fronnbr = grafptr->fronnbr; /* Save partition parameters */ storptr->compload0dlt = grafptr->compload0dlt; storptr->compsize0 = grafptr->compsize0; storptr->commload = grafptr->commload; storptr->commgainextn = grafptr->commgainextn; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + grafptr->fronnbr * sizeof (Gnum); vertnbr = grafptr->s.vertnnd - grafptr->s.baseval; memCpy (frontab, grafptr->frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (parttab, grafptr->parttax + grafptr->s.baseval, vertnbr * sizeof (GraphPart)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void bgraphStoreUpdt ( Bgraph * const grafptr, const BgraphStore * const storptr) { Gnum vertnbr; /* Number of vertices in graph */ byte * frontab; /* Pointer to frontier data save area */ byte * parttab; /* Pointer to part data save area */ grafptr->fronnbr = storptr->fronnbr; /* Load partition parameters */ grafptr->compload0 = storptr->compload0dlt + grafptr->compload0avg; grafptr->compload0dlt = storptr->compload0dlt; grafptr->compsize0 = storptr->compsize0; grafptr->commload = storptr->commload; grafptr->commgainextn = storptr->commgainextn; grafptr->bbalval = (double) ((grafptr->compload0dlt < 0) ? (- grafptr->compload0dlt) : grafptr->compload0dlt) / (double) grafptr->compload0avg; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + grafptr->fronnbr * sizeof (Gnum); vertnbr = grafptr->s.vertnnd - grafptr->s.baseval; memCpy (grafptr->frontab, frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (grafptr->parttax + grafptr->s.baseval, parttab, vertnbr * sizeof (GraphPart)); #ifdef SCOTCH_DEBUG_BGRAPH2 if (bgraphCheck (grafptr) != 0) errorPrint ("bgraphStoreUpdt: inconsistent graph data"); #endif /* SCOTCH_DEBUG_BGRAPH2 */ } scotch_6.0.9/src/libscotch/library_graph_induce_f.c0000644000302600021200000000763713560013261022655 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_diam_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the source graph handling routines of **/ /** the libSCOTCH library. **/ /** **/ /** DATES : # Version 6.0 : from : 14 jan 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHINDUCELIST, graphinducelist, ( \ SCOTCH_Graph * restrict const orggrafptr, \ const SCOTCH_Num vnumnbr, \ const SCOTCH_Num * restrict const vnumtab, \ SCOTCH_Graph * restrict const indgrafptr, \ int * const revaptr), \ (orggrafptr, vnumnbr, vnumtab, indgrafptr, revaptr)) { *revaptr = SCOTCH_graphInduceList (orggrafptr, vnumnbr, vnumtab, indgrafptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHINDUCEPART, graphinducepart, ( \ SCOTCH_Graph * restrict const orggrafptr, \ const SCOTCH_Num vnumnbr, \ const SCOTCH_GraphPart2 * restrict const parttab, \ const SCOTCH_GraphPart2 partval, \ SCOTCH_Graph * restrict const indgrafptr, \ int * const revaptr), \ (orggrafptr, vnumnbr, parttab, partval, indgrafptr, revaptr)) { *revaptr = SCOTCH_graphInducePart (orggrafptr, vnumnbr, parttab, partval, indgrafptr); } scotch_6.0.9/src/libscotch/comm.h0000644000302600021200000000753713560005430017132 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : comm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for communication functions. **/ /** **/ /** DATES : # Version 5.1 : from : 30 jul 2010 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ #define COMM_H /* ** The type and structure definitions. */ #ifndef GNUMMAX /* If dgraph.h not included */ typedef INT Gnum; /* Vertex and edge numbers */ typedef UINT Gunum; /* Unsigned type of same width */ #define GNUMMAX (INTVALMAX) /* Maximum signed Gnum value */ #define GNUMSTRING INTSTRING /* String to printf a Gnum */ #endif /* GNUMMAX */ /* ** The function prototypes. */ int commAllgatherv (void * const, const Gnum, MPI_Datatype, void * const, const Gnum * const, const Gnum * const, MPI_Datatype, MPI_Comm); int commGatherv (void * const, const Gnum, MPI_Datatype, void * const, const Gnum * const, const Gnum * const, MPI_Datatype, const int, MPI_Comm); int commScatterv (void * const, const Gnum * const, const Gnum * const, MPI_Datatype, void * const, const Gnum, MPI_Datatype, const int, MPI_Comm); /* ** The macro definitions. */ #ifndef COMM #ifndef INTSIZE64 #define commAllgatherv MPI_Allgatherv #define commGatherv MPI_Gatherv #define commScatterv MPI_Scatterv #endif /* INTSIZE64 */ #endif /* COMM */ scotch_6.0.9/src/libscotch/library_dmapping.c0000644000302600021200000000643413560013261021511 0ustar pelegrinpelegrin/* Copyright 2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dmapping.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains miscellaneous **/ /** routines for handling distributed **/ /** graph mappings. **/ /** **/ /** DATES : # Version 5.1 : from : 17 nov 2010 **/ /** to 17 nov 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /****************************************/ /* */ /* These routines are the C API for */ /* mapping structure handling routines. */ /* */ /****************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** graph mapping structure. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Dmapping * SCOTCH_dmapAlloc () { return ((SCOTCH_Dmapping *) memAlloc (sizeof (SCOTCH_Dmapping))); } scotch_6.0.9/src/libscotch/vgraph_separate_st.h0000644000302600021200000001026013303015264022044 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the global separation **/ /** strategy and method tables. **/ /** **/ /** DATES : # Version 3.2 : from : 24 oct 1996 **/ /** to 14 nov 1997 **/ /** # Version 3.3 : from : 31 may 1999 **/ /** to 31 may 1999 **/ /** # Version 4.0 : from : 06 jan 2002 **/ /** to 19 aug 2004 **/ /** # Version 5.0 : from : 12 sep 2006 **/ /** to : 17 feb 2007 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to : 30 oct 2007 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum VgraphSeparateStMethodType_ { VGRAPHSEPASTMETHBD = 0, /*+ Banding strategy +*/ VGRAPHSEPASTMETHES, /*+ Edge separation strategy +*/ VGRAPHSEPASTMETHFM, /*+ Fiduccia-Mattheyses +*/ VGRAPHSEPASTMETHGG, /*+ Greedy Graph Growing +*/ VGRAPHSEPASTMETHGP, /*+ Gibbs-Poole-Stockmeyer +*/ VGRAPHSEPASTMETHML, /*+ Multi-level separation +*/ VGRAPHSEPASTMETHVW, /*+ Partition viewer +*/ VGRAPHSEPASTMETHZR, /*+ Zero method +*/ VGRAPHSEPASTMETHNBR /*+ Number of methods +*/ } VgraphSeparateStMethodType; /* ** The external declarations. */ extern StratTab vgraphseparateststratab; /* ** The function prototypes. */ int vgraphSeparateSt (Vgraph * const, const Strat * const); scotch_6.0.9/src/libscotch/last_resort/0000755000302600021200000000000013560015275020363 5ustar pelegrinpelegrinscotch_6.0.9/src/libscotch/last_resort/parser_yy.c0000644000302600021200000024052513470121077022552 0ustar pelegrinpelegrin/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, 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 "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse scotchyyparse #define yylex scotchyylex #define yyerror scotchyyerror #define yydebug scotchyydebug #define yynerrs scotchyynerrs #define yylval scotchyylval #define yychar scotchyychar /* Copy the first part of user declarations. */ #line 1 "parser_yy.y" /* yacc.c:339 */ /* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_yy.y **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the syntactic parser **/ /** which processes strategy strings. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 13 jun 1996 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to 27 feb 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 11 jun 2004 **/ /** # Version 5.1 : from : 30 oct 2007 **/ /** to 24 jul 2011 **/ /** # Version 6.0 : from : 30 sep 2014 **/ /** to 27 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define PARSER_YY #include "module.h" #include "common.h" #undef INTEGER /* In case someone defined them */ #undef DOUBLE #include "parser.h" #include "parser_ll.h" #include "parser_yy.h" /* #define SCOTCH_DEBUG_PARSER3 */ #ifdef SCOTCH_DEBUG_PARSER3 extern int yydebug; #define YYDEBUG 1 #endif /* SCOTCH_DEBUG_PARSER3 */ /* ** The static and global definitions. ** See also at the end of this file. */ static const StratTab * parserstrattab; /* Pointer to parsing tables */ static Strat * parserstratcurr = NULL; /* Pointer to current strategy node */ static StratParamTab * parserparamcurr = NULL; /* Pointer to current parameter */ extern unsigned int parsermethtokentab[]; /* Pre-definition for stupid compilers */ #line 165 "y.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ #ifndef YY_SCOTCHYY_Y_TAB_H_INCLUDED # define YY_SCOTCHYY_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int scotchyydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { METHODNAME = 258, PARAMNAME = 259, VALCASE = 260, VALDOUBLE = 261, VALINT = 262, VALSTRING = 263, VALSTRAT = 264, VALPARAM = 265, VALTEST = 266 }; #endif /* Tokens. */ #define METHODNAME 258 #define PARAMNAME 259 #define VALCASE 260 #define VALDOUBLE 261 #define VALINT 262 #define VALSTRING 263 #define VALSTRAT 264 #define VALPARAM 265 #define VALTEST 266 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 92 "parser_yy.y" /* yacc.c:355 */ char CASEVAL; /* Case value */ StratTest * TEST; /* Test type */ StratTestType TESTOP; /* Relational type */ double DOUBLE; /* Double-precision */ INT INTEGER; /* Integer */ char STRING[PARSERSTRINGLEN]; /* Character string */ struct { const StratTab * tabl; /* Current tables */ Strat * strat; /* Current method */ StratParamTab * param; /* Current parameter */ } SAVE; /* Parameter type */ Strat * STRAT; /* Strategy tree */ #line 242 "y.tab.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE scotchyylval; int scotchyyparse (void); #endif /* !YY_SCOTCHYY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ #line 259 "y.tab.c" /* yacc.c:358 */ #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; #else typedef signed char 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 # 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 #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # 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 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #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 EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS 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_alloc; YYSTYPE yyvs_alloc; }; /* 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) # define YYCOPY_NEEDED 1 /* 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_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 13 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 93 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 31 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 37 /* YYNRULES -- Number of rules. */ #define YYNRULES 65 /* YYNSTATES -- Number of states. */ #define YYNSTATES 93 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 266 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ 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, 24, 2, 2, 2, 30, 23, 2, 17, 18, 29, 27, 21, 28, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 15, 25, 22, 26, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 12, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 132, 132, 138, 156, 159, 161, 176, 194, 198, 202, 198, 226, 229, 234, 239, 243, 247, 246, 308, 312, 308, 316, 319, 320, 324, 323, 362, 397, 412, 427, 444, 444, 468, 476, 479, 497, 500, 518, 521, 537, 541, 544, 563, 567, 571, 577, 593, 596, 600, 606, 622, 625, 631, 647, 650, 656, 660, 661, 664, 679, 696, 737, 741, 744, 748 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 0 /* 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", "METHODNAME", "PARAMNAME", "VALCASE", "VALDOUBLE", "VALINT", "VALSTRING", "VALSTRAT", "VALPARAM", "VALTEST", "'|'", "'/'", "'?'", "';'", "':'", "'('", "')'", "'{'", "'}'", "','", "'='", "'&'", "'!'", "'<'", "'>'", "'+'", "'-'", "'*'", "'%'", "$accept", "STRAT", "STRATSELECT", "STRATEMPTY", "STRATCONCAT", "STRATTEST", "$@1", "$@2", "STRATTESTELSE", "STRATGROUP", "STRATMETHOD", "$@3", "METHODPARAM", "$@4", "$@5", "PARAMLIST", "PARAMPARAM", "@6", "PARAMVAL", "@7", "TEST", "TESTOR", "TESTAND", "TESTNOT", "TESTREL", "TESTRELOP", "TESTEXPR1", "TESTEXPR1OP", "TESTEXPR2", "TESTEXPR2OP", "TESTEXPR3", "TESTEXPR3OP", "TESTEXPR4", "TESTVAL", "TESTVAR", "VALSDOUBLE", "VALSINT", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 124, 47, 63, 59, 58, 40, 41, 123, 125, 44, 61, 38, 33, 60, 62, 43, 45, 42, 37 }; # endif #define YYPACT_NINF -33 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-33))) #define YYTABLE_NINF -32 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int8 yypact[] = { 5, -33, 5, 10, 7, -33, 5, -33, 4, -33, -33, 19, 40, -33, 5, -33, 27, -33, 20, -33, -33, -33, -33, -33, 27, 27, -33, -33, -33, 28, 3, -33, -33, 47, -1, 33, 13, -33, -33, -33, -33, -33, 44, 41, 39, -33, 42, 27, 27, -33, -33, -33, 43, 43, -33, -33, -33, 43, -33, 43, -33, 55, -33, -33, -33, 5, 3, -33, 43, -4, 33, 13, -33, 46, 44, 57, -9, 14, 8, -33, -33, 5, 63, -33, -33, -33, -33, 5, -33, -33, 7, -33, 7 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 6, 17, 6, 0, 2, 4, 5, 8, 0, 12, 16, 22, 0, 1, 6, 7, 0, 18, 0, 15, 3, 61, 63, 65, 0, 0, 48, 49, 10, 34, 36, 38, 41, 0, 0, 47, 51, 54, 57, 58, 59, 60, 0, 0, 0, 39, 0, 0, 0, 44, 43, 45, 0, 0, 62, 64, 52, 0, 55, 0, 25, 20, 24, 40, 56, 6, 35, 37, 0, 42, 46, 50, 53, 0, 0, 0, 14, 0, 0, 23, 21, 6, 0, 33, 27, 30, 26, 6, 28, 29, 13, 11, 32 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -33, -33, -2, 66, -33, 75, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, 9, -33, -33, -33, -33, 58, 37, -21, -33, -33, -22, -32, 34, -33, 29, -33, 30, -33, -33, 12, 15 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 3, 4, 5, 6, 7, 8, 46, 82, 9, 10, 11, 17, 18, 75, 61, 62, 73, 86, 87, 28, 29, 30, 31, 32, 52, 33, 34, 35, 57, 36, 59, 37, 38, 39, 40, 41 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int8 yytable[] = { 12, 53, 44, 14, 45, 54, 55, 81, 1, 83, 13, -31, 53, 84, 22, 23, 85, 16, -9, 14, -31, -31, 2, 26, 27, -31, 48, 67, -31, -31, 69, 21, 64, 22, 23, 26, 27, 53, -19, 42, 47, 26, 27, 58, 24, 53, 77, 21, 60, 22, 23, 25, 14, 47, 26, 27, 65, 64, 19, 63, 68, 49, 56, 76, 50, 51, 26, 27, 78, 49, 26, 27, 50, 51, 26, 27, 74, 80, 91, 90, 20, 15, 43, 79, 66, 92, 71, 70, 0, 72, 88, 0, 0, 89 }; static const yytype_int8 yycheck[] = { 2, 33, 24, 12, 25, 6, 7, 16, 3, 1, 0, 3, 44, 5, 6, 7, 8, 13, 13, 12, 12, 13, 17, 27, 28, 17, 23, 48, 20, 21, 52, 4, 18, 6, 7, 27, 28, 69, 19, 19, 12, 27, 28, 30, 17, 77, 68, 4, 4, 6, 7, 24, 12, 12, 27, 28, 14, 18, 18, 18, 17, 22, 29, 65, 25, 26, 27, 28, 22, 22, 27, 28, 25, 26, 27, 28, 21, 20, 15, 81, 14, 6, 24, 74, 47, 87, 57, 53, -1, 59, 78, -1, -1, 78 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 17, 32, 33, 34, 35, 36, 37, 40, 41, 42, 33, 0, 12, 36, 13, 43, 44, 18, 34, 4, 6, 7, 17, 24, 27, 28, 51, 52, 53, 54, 55, 57, 58, 59, 61, 63, 64, 65, 66, 67, 19, 52, 57, 54, 38, 12, 23, 22, 25, 26, 56, 58, 6, 7, 29, 60, 30, 62, 4, 46, 47, 18, 18, 14, 53, 54, 17, 57, 59, 61, 63, 48, 21, 45, 33, 57, 22, 47, 20, 16, 39, 1, 5, 8, 49, 50, 66, 67, 33, 15, 33 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 31, 32, 33, 33, 34, 34, 35, 35, 37, 38, 36, 36, 39, 39, 40, 40, 42, 41, 44, 45, 43, 43, 46, 46, 48, 47, 49, 49, 49, 49, 50, 49, 49, 51, 52, 52, 53, 53, 54, 54, 54, 55, 56, 56, 56, 57, 57, 58, 58, 59, 59, 60, 61, 61, 62, 63, 63, 63, 64, 64, 65, 66, 66, 67, 67 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 3, 1, 1, 0, 2, 1, 0, 0, 8, 1, 2, 0, 3, 1, 0, 3, 0, 0, 5, 0, 3, 1, 0, 4, 1, 1, 1, 1, 0, 2, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 2, 1 }; #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 #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* 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 (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule); \ } while (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. */ static YYSIZE_T yystrlen (const char *yystr) { 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. */ static char * yystpcpy (char *yydest, const char *yysrc) { 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ 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 yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* 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 = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (void) { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ 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_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, 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)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END 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 133 "parser_yy.y" /* yacc.c:1646 */ { parserstratcurr = ((yyvsp[0].STRAT)); /* Save pointer to root of tree */ } #line 1408 "y.tab.c" /* yacc.c:1646 */ break; case 3: #line 139 "parser_yy.y" /* yacc.c:1646 */ { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (2)"); stratExit ((yyvsp[-2].STRAT)); stratExit ((yyvsp[0].STRAT)); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODESELECT; strat->data.select.strat[0] = ((yyvsp[-2].STRAT)); strat->data.select.strat[1] = ((yyvsp[0].STRAT)); ((yyval.STRAT)) = strat; } #line 1430 "y.tab.c" /* yacc.c:1646 */ break; case 6: #line 161 "parser_yy.y" /* yacc.c:1646 */ { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (3)"); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODEEMPTY; ((yyval.STRAT)) = strat; } #line 1448 "y.tab.c" /* yacc.c:1646 */ break; case 7: #line 177 "parser_yy.y" /* yacc.c:1646 */ { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (4)"); stratExit ((yyvsp[-1].STRAT)); stratExit ((yyvsp[0].STRAT)); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODECONCAT; strat->data.concat.strat[0] = ((yyvsp[-1].STRAT)); strat->data.concat.strat[1] = ((yyvsp[0].STRAT)); ((yyval.STRAT)) = strat; } #line 1470 "y.tab.c" /* yacc.c:1646 */ break; case 9: #line 198 "parser_yy.y" /* yacc.c:1646 */ { stratParserSelect (VALTEST); /* Parse parameter tokens */ } #line 1478 "y.tab.c" /* yacc.c:1646 */ break; case 10: #line 202 "parser_yy.y" /* yacc.c:1646 */ { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } #line 1486 "y.tab.c" /* yacc.c:1646 */ break; case 11: #line 206 "parser_yy.y" /* yacc.c:1646 */ { Strat * strat; if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (1)"); stratExit ((yyvsp[-2].STRAT)); if (((yyvsp[-1].STRAT)) != NULL) stratExit ((yyvsp[-1].STRAT)); stratTestExit ((yyvsp[-5].TEST)); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODECOND; strat->data.cond.test = ((yyvsp[-5].TEST)); strat->data.cond.strat[0] = ((yyvsp[-2].STRAT)); strat->data.cond.strat[1] = ((yyvsp[-1].STRAT)); ((yyval.STRAT)) = strat; } #line 1511 "y.tab.c" /* yacc.c:1646 */ break; case 13: #line 230 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.STRAT)) = ((yyvsp[0].STRAT)); } #line 1519 "y.tab.c" /* yacc.c:1646 */ break; case 14: #line 234 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.STRAT)) = NULL; } #line 1527 "y.tab.c" /* yacc.c:1646 */ break; case 15: #line 240 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.STRAT)) = ((yyvsp[-1].STRAT)); } #line 1535 "y.tab.c" /* yacc.c:1646 */ break; case 17: #line 247 "parser_yy.y" /* yacc.c:1646 */ { Strat * strat; int meth; int methlen; StratMethodTab * methtab; int i, j; meth = methlen = 0; /* No method recognized yet */ methtab = parserstrattab->methtab; /* Point to the method table */ for (i = 0; methtab[i].name != NULL; i ++) { if ((strncasecmp (((yyvsp[0].STRING)), /* Find longest matching code name */ methtab[i].name, j = strlen (methtab[i].name)) == 0) && (j > methlen)) { meth = methtab[i].meth; methlen = j; } } if (methlen == 0) { /* If method name not known */ errorPrint ("stratParserParse: invalid method name \"%s\", before \"%s\"", ((yyvsp[0].STRING)), stratParserRemain ()); YYABORT; } if ((strat = (Strat *) memAlloc (sizeof (Strat))) == NULL) { errorPrint ("stratParserParse: out of memory (5)"); YYABORT; } strat->tabl = parserstrattab; strat->type = STRATNODEMETHOD; strat->data.method.meth = meth; /* Set method type */ if (methtab[meth].data != NULL) /* If default values exist */ memcpy (&strat->data.method.data, /* Set values to default */ methtab[meth].data, sizeof (StratNodeMethodData)); parserstratcurr = strat; /* Structure available for parameter processing */ } #line 1579 "y.tab.c" /* yacc.c:1646 */ break; case 18: #line 287 "parser_yy.y" /* yacc.c:1646 */ { StratParamTab * paratab; int i; paratab = parserstrattab->paratab; /* Point to the parameter table */ for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == parserstratcurr->data.method.meth) && /* If a strategy parameter found for this method */ (paratab[i].type == STRATPARAMSTRAT)) { if (*((Strat **) ((byte *) &parserstratcurr->data.method.data + /* And this parameter has not been set */ (paratab[i].dataofft - paratab[i].database))) == NULL) errorPrintW ("stratParserParse: strategy parameter \"%s\" of method \"%s\" not set, before \"%s\"", paratab[i].name, parserstrattab->methtab[parserstratcurr->data.method.meth].name, stratParserRemain ()); } } ((yyval.STRAT)) = parserstratcurr; /* Return current structure */ parserstratcurr = NULL; /* No current structure */ } #line 1602 "y.tab.c" /* yacc.c:1646 */ break; case 19: #line 308 "parser_yy.y" /* yacc.c:1646 */ { stratParserSelect (VALPARAM); /* Parse parameter tokens */ } #line 1610 "y.tab.c" /* yacc.c:1646 */ break; case 20: #line 312 "parser_yy.y" /* yacc.c:1646 */ { stratParserSelect (VALSTRAT); /* Parse strategy tokens */ } #line 1618 "y.tab.c" /* yacc.c:1646 */ break; case 25: #line 324 "parser_yy.y" /* yacc.c:1646 */ { int para; int paralen; StratParamTab * paratab; int i, j; para = paralen = 0; /* No parameter recognized yet */ paratab = parserstrattab->paratab; /* Point to the parameter table */ for (i = 0; paratab[i].name != NULL; i ++) { if ((paratab[i].meth == parserstratcurr->data.method.meth) && (strncasecmp (((yyvsp[0].STRING)), /* Find longest matching parameter name */ paratab[i].name, j = strlen (paratab[i].name)) == 0) && (j > paralen)) { para = i; paralen = j; } } if (paralen == 0) { errorPrint ("stratParserParse: invalid method parameter name \"%s\", before \"%s\"", ((yyvsp[0].STRING)), stratParserRemain ()); YYABORT; } ((yyval.SAVE)).tabl = parserstrattab; /* Save current strategy tables */ parserparamcurr = ¶tab[para]; /* Save current parameter value */ stratParserSelect (parsermethtokentab[parserparamcurr->type & ~STRATPARAMDEPRECATED]); /* Get non-deprecated type */ if (parserparamcurr->type == STRATPARAMSTRAT) /* If parameter is a strategy */ parserstrattab = (StratTab *) parserparamcurr->datasltr; /* Use new strategy tables */ } #line 1654 "y.tab.c" /* yacc.c:1646 */ break; case 26: #line 356 "parser_yy.y" /* yacc.c:1646 */ { stratParserSelect (VALPARAM); /* Go-on reading parameters */ parserstrattab = ((yyvsp[-2].SAVE)).tabl; /* Restore current strategy tables */ } #line 1663 "y.tab.c" /* yacc.c:1646 */ break; case 27: #line 363 "parser_yy.y" /* yacc.c:1646 */ { char c; /* Character read */ char * p; /* Pointer to selector string */ int i; /* Index in selector string */ if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ c = ((yyvsp[0].CASEVAL)); /* First, use char as is */ for (p = (char *) parserparamcurr->datasltr, i = 0; (*p != '\0') && (*p != c); p ++, i ++) ; if (*p == '\0') { /* Char was not found */ c = tolower (c); /* Convert char to lower case */ for (p = (char *) parserparamcurr->datasltr, i = 0; (*p != '\0') && (*p != c); p ++, i ++) ; if (*p == '\0') { errorPrint ("stratParserParse: invalid method parameter switch \"%s=%c\", before \"%s\"", parserparamcurr->name, ((yyvsp[0].CASEVAL)), stratParserRemain ()); YYABORT; } } #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (int)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (1)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((int *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = i; } } #line 1702 "y.tab.c" /* yacc.c:1646 */ break; case 28: #line 398 "parser_yy.y" /* yacc.c:1646 */ { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (double)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (2)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((double *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = ((yyvsp[0].DOUBLE)); } } #line 1721 "y.tab.c" /* yacc.c:1646 */ break; case 29: #line 413 "parser_yy.y" /* yacc.c:1646 */ { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (INT)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (3)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((INT *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = (INT) ((yyvsp[0].INTEGER)); } } #line 1740 "y.tab.c" /* yacc.c:1646 */ break; case 30: #line 428 "parser_yy.y" /* yacc.c:1646 */ { if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + strlen ((yyvsp[0].STRING)) + 1) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (4)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ strcpy ((char *) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database)), ((yyvsp[0].STRING))); } } #line 1760 "y.tab.c" /* yacc.c:1646 */ break; case 31: #line 444 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.SAVE)).strat = parserstratcurr; ((yyval.SAVE)).param = parserparamcurr; parserstratcurr = NULL; parserparamcurr = NULL; } #line 1771 "y.tab.c" /* yacc.c:1646 */ break; case 32: #line 451 "parser_yy.y" /* yacc.c:1646 */ { parserstratcurr = ((yyvsp[-1].SAVE)).strat; /* Restore current method */ parserparamcurr = ((yyvsp[-1].SAVE)).param; /* Restore current parameter */ if ((parserparamcurr->type & STRATPARAMDEPRECATED) == 0) { /* If parameter is not deprecated */ #ifdef SCOTCH_DEBUG_PARSER2 if ((parserparamcurr->dataofft - parserparamcurr->database + sizeof (Strat *)) > sizeof (StratNodeMethodData)) { errorPrint ("stratParserParse: internal error (5)"); YYABORT; } #endif /* SCOTCH_DEBUG_PARSER2 */ *((Strat **) ((byte *) &parserstratcurr->data.method.data + (parserparamcurr->dataofft - parserparamcurr->database))) = ((yyvsp[0].STRAT)); } } #line 1793 "y.tab.c" /* yacc.c:1646 */ break; case 33: #line 469 "parser_yy.y" /* yacc.c:1646 */ { errorPrint ("stratParserParse: invalid value for parameter \"%s\" of method \"%s\", before \"%s\"", parserparamcurr->name, parserstratcurr->tabl->methtab[parserstratcurr->data.method.meth].name, stratParserRemain ()); YYABORT; } #line 1803 "y.tab.c" /* yacc.c:1646 */ break; case 35: #line 480 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (6)"); stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = STRATTESTOR; test->typenode = STRATPARAMLOG; test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1825 "y.tab.c" /* yacc.c:1646 */ break; case 37: #line 501 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (7)"); stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = STRATTESTAND; test->typenode = STRATPARAMLOG; test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1847 "y.tab.c" /* yacc.c:1646 */ break; case 39: #line 522 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (8)"); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = STRATTESTNOT; test->typenode = STRATPARAMLOG; test->data.test[0] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1867 "y.tab.c" /* yacc.c:1646 */ break; case 40: #line 538 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TEST)) = ((yyvsp[-1].TEST)); } #line 1875 "y.tab.c" /* yacc.c:1646 */ break; case 42: #line 545 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (9)"); stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = ((yyvsp[-1].TESTOP)); test->typenode = STRATPARAMLOG; test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1896 "y.tab.c" /* yacc.c:1646 */ break; case 43: #line 564 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTLT; } #line 1904 "y.tab.c" /* yacc.c:1646 */ break; case 44: #line 568 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTEQ; } #line 1912 "y.tab.c" /* yacc.c:1646 */ break; case 45: #line 572 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTGT; } #line 1920 "y.tab.c" /* yacc.c:1646 */ break; case 46: #line 578 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (10)"); stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = ((yyvsp[-1].TESTOP)); test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1940 "y.tab.c" /* yacc.c:1646 */ break; case 48: #line 597 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTADD; } #line 1948 "y.tab.c" /* yacc.c:1646 */ break; case 49: #line 601 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTSUB; } #line 1956 "y.tab.c" /* yacc.c:1646 */ break; case 50: #line 607 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); errorPrint ("stratParserParse: out of memory (11)"); YYABORT; } test->typetest = ((yyvsp[-1].TESTOP)); test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 1976 "y.tab.c" /* yacc.c:1646 */ break; case 52: #line 626 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTMUL; } #line 1984 "y.tab.c" /* yacc.c:1646 */ break; case 53: #line 632 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (12)"); stratTestExit ((yyvsp[-2].TEST)); stratTestExit ((yyvsp[0].TEST)); YYABORT; } test->typetest = ((yyvsp[-1].TESTOP)); test->data.test[0] = ((yyvsp[-2].TEST)); test->data.test[1] = ((yyvsp[0].TEST)); ((yyval.TEST)) = test; } #line 2004 "y.tab.c" /* yacc.c:1646 */ break; case 55: #line 651 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TESTOP)) = STRATTESTMOD; } #line 2012 "y.tab.c" /* yacc.c:1646 */ break; case 56: #line 657 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.TEST)) = ((yyvsp[-1].TEST)); } #line 2020 "y.tab.c" /* yacc.c:1646 */ break; case 59: #line 665 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (13)"); YYABORT; } test->typetest = STRATTESTVAL; test->typenode = STRATPARAMDOUBLE; test->data.val.valdbl = ((yyvsp[0].DOUBLE)); ((yyval.TEST)) = test; } #line 2039 "y.tab.c" /* yacc.c:1646 */ break; case 60: #line 680 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (14)"); YYABORT; } test->typetest = STRATTESTVAL; test->typenode = STRATPARAMINT; test->data.val.valint = ((yyvsp[0].INTEGER)); ((yyval.TEST)) = test; } #line 2058 "y.tab.c" /* yacc.c:1646 */ break; case 61: #line 697 "parser_yy.y" /* yacc.c:1646 */ { StratTest * test; StratParamTab * condtab; int para; int paralen; int i, j; para = paralen = 0; /* No parameter recognized yet */ condtab = parserstrattab->condtab; /* Point to parameter table */ for (i = 0; condtab[i].name != NULL; i ++) { if ((strncasecmp (((yyvsp[0].STRING)), /* Find longest matching parameter name */ condtab[i].name, j = strlen (condtab[i].name)) == 0) && (j > paralen)) { para = i; paralen = j; } } if (paralen == 0) { errorPrint ("stratParserParse: invalid graph parameter name \"%s\", before \"%s\"", ((yyvsp[0].STRING)), stratParserRemain ()); YYABORT; } if ((test = (StratTest *) memAlloc (sizeof (StratTest))) == NULL) { errorPrint ("stratParserParse: out of memory (15)"); YYABORT; } test->typetest = STRATTESTVAR; test->typenode = condtab[para].type; test->data.var.datatab = parserstrattab; test->data.var.datadisp = condtab[para].dataofft - condtab[para].database; ((yyval.TEST)) = test; } #line 2101 "y.tab.c" /* yacc.c:1646 */ break; case 62: #line 738 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.DOUBLE)) = (((yyvsp[-1].TESTOP)) == STRATTESTSUB) ? - ((yyvsp[0].DOUBLE)) : ((yyvsp[0].DOUBLE)); } #line 2109 "y.tab.c" /* yacc.c:1646 */ break; case 64: #line 745 "parser_yy.y" /* yacc.c:1646 */ { ((yyval.INTEGER)) = (((yyvsp[-1].TESTOP)) == STRATTESTSUB) ? - ((yyvsp[0].INTEGER)) : ((yyvsp[0].INTEGER)); } #line 2117 "y.tab.c" /* yacc.c:1646 */ break; #line 2121 "y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ 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: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead 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); yychar = YYEMPTY; } } /* Else will try to reuse lookahead 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 whose 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 (!yypact_value_is_default (yyn)) { 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); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* 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; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 751 "parser_yy.y" /* yacc.c:1906 */ /* ** The static and global definitions (bis). ** These are put at the end of the file because ** the token values that they use are not yet ** defined in the first section of the file. */ unsigned int parsermethtokentab[] = { /* Table for parameter/token type conversion */ VALCASE, VALDOUBLE, VALINT, -1, /* No logical parameters */ VALSTRAT, VALSTRING, -1 /* One more value to detect array overflow */ }; /************************************/ /* */ /* These routines drive the parser. */ /* */ /************************************/ /* This routine is the entry point for ** the strategy parser. ** It returns: ** - !NULL : pointer to the strategy. ** - NULL : on error. */ Strat * stratParserParse ( const StratTab * const strattab, /*+ Pointer to parsing tables +*/ const char * const string) /*+ Strategy string to parse +*/ { yyclearin; /* Reset the parser state */ #ifdef SCOTCH_DEBUG_PARSER3 yydebug = 1; /* Set debugging if needed */ #endif /* SCOTCH_DEBUG_PARSER3 */ stratParserInit (string); /* Initialize the lexical parser */ parserstrattab = strattab; /* Point to the parsing tables */ parserstratcurr = NULL; /* Clear up the temporary strategy pointer */ if (yyparse () != 0) { /* Parse the strategy string */ if (parserstratcurr != NULL) stratExit (parserstratcurr); return (NULL); } return (parserstratcurr); /* Return strategy pointer */ } /* This routine displays the parser error message. ** It returns: ** - 1 : in all cases. */ static int yyerror ( const char * const errstr) { errorPrint ("stratParserParse: invalid strategy string, before \"%s\"", stratParserRemain ()); return (1); } scotch_6.0.9/src/libscotch/last_resort/parser_ll.c0000644000302600021200000016036013470121076022515 0ustar pelegrinpelegrin#line 2 "lex.yy.c" #line 4 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define yy_create_buffer scotchyy_create_buffer #define yy_delete_buffer scotchyy_delete_buffer #define yy_flex_debug scotchyy_flex_debug #define yy_init_buffer scotchyy_init_buffer #define yy_flush_buffer scotchyy_flush_buffer #define yy_load_buffer_state scotchyy_load_buffer_state #define yy_switch_to_buffer scotchyy_switch_to_buffer #define yyin scotchyyin #define yyleng scotchyyleng #define yylex scotchyylex #define yylineno scotchyylineno #define yyout scotchyyout #define yyrestart scotchyyrestart #define yytext scotchyytext #define yywrap scotchyywrap #define yyalloc scotchyyalloc #define yyrealloc scotchyyrealloc #define yyfree scotchyyfree #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #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; /* 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 /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #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) /* 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 (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 (((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 scotchyyrestart(scotchyyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #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 extern int scotchyyleng; extern FILE *scotchyyin, *scotchyyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up scotchyytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up scotchyytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #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. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int 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 scotchyyrestart()), so that the user can continue scanning by * just pointing scotchyyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* 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 ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(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 (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when scotchyytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int scotchyyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow scotchyywrap()'s to do buffer switches * instead of setting up a fresh scotchyyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void scotchyyrestart (FILE *input_file ); void scotchyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE scotchyy_create_buffer (FILE *file,int size ); void scotchyy_delete_buffer (YY_BUFFER_STATE b ); void scotchyy_flush_buffer (YY_BUFFER_STATE b ); void scotchyypush_buffer_state (YY_BUFFER_STATE new_buffer ); void scotchyypop_buffer_state (void ); static void scotchyyensure_buffer_stack (void ); static void scotchyy_load_buffer_state (void ); static void scotchyy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER scotchyy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE scotchyy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE scotchyy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE scotchyy_scan_bytes (yyconst char *bytes,int len ); void *scotchyyalloc (yy_size_t ); void *scotchyyrealloc (void *,yy_size_t ); void scotchyyfree (void * ); #define yy_new_buffer scotchyy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ scotchyyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ scotchyy_create_buffer(scotchyyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ scotchyyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ scotchyy_create_buffer(scotchyyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; FILE *scotchyyin = NULL, *scotchyyout = NULL; typedef int yy_state_type; extern int scotchyylineno; int scotchyylineno = 1; extern char *scotchyytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr scotchyytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yynoreturn yy_fatal_error (yyconst char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up scotchyytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ scotchyyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 13 #define YY_END_OF_BUFFER 14 /* 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[53] = { 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 12, 11, 11, 1, 2, 3, 4, 5, 12, 8, 10, 11, 2, 0, 4, 0, 0, 5, 0, 0, 7, 0, 8, 0, 10, 4, 0, 4, 6, 0, 6, 9, 0, 9, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 5, 6, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 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 } ; static yyconst YY_CHAR yy_meta[10] = { 0, 1, 2, 2, 1, 1, 1, 3, 3, 3 } ; static yyconst flex_uint16_t yy_base[58] = { 0, 0, 2, 0, 0, 2, 0, 5, 0, 57, 56, 55, 54, 56, 55, 8, 0, 58, 65, 0, 0, 65, 0, 65, 12, 16, 53, 20, 0, 0, 0, 49, 0, 25, 48, 0, 28, 50, 65, 39, 0, 31, 0, 32, 36, 33, 35, 30, 27, 38, 24, 21, 65, 47, 22, 17, 50, 3 } ; static yyconst flex_int16_t yy_def[58] = { 0, 53, 53, 2, 3, 2, 5, 5, 7, 2, 2, 2, 2, 2, 2, 2, 15, 52, 52, 54, 54, 52, 55, 52, 52, 52, 56, 52, 57, 54, 55, 52, 24, 52, 52, 25, 52, 56, 52, 52, 27, 52, 57, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 52, 52, 52, 52, 52 } ; static yyconst flex_uint16_t yy_nxt[75] = { 0, 52, 19, 20, 19, 20, 42, 21, 21, 21, 22, 22, 23, 23, 23, 27, 28, 28, 31, 32, 30, 33, 34, 35, 29, 36, 39, 40, 51, 41, 44, 51, 45, 47, 48, 48, 50, 48, 51, 43, 45, 33, 46, 45, 36, 49, 49, 41, 18, 18, 18, 37, 37, 37, 38, 46, 43, 38, 52, 26, 26, 25, 25, 24, 24, 17, 52, 52, 52, 52, 52, 52, 52, 52, 52 } ; static yyconst flex_int16_t yy_chk[75] = { 0, 0, 1, 1, 2, 2, 57, 3, 3, 3, 5, 5, 7, 7, 7, 15, 15, 15, 24, 24, 55, 24, 25, 25, 54, 25, 27, 27, 51, 27, 33, 50, 33, 36, 48, 36, 41, 47, 41, 43, 45, 43, 46, 44, 46, 49, 39, 49, 53, 53, 53, 56, 56, 56, 37, 34, 31, 26, 17, 14, 13, 12, 11, 10, 9, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int scotchyy_flex_debug; int scotchyy_flex_debug = 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 char *scotchyytext; #line 1 "parser_ll.l" #line 2 "parser_ll.l" /* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_ll.l **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the lexical parser **/ /** which processes strategy strings. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 23 aug 1996 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to 05 jun 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 11 sep 2001 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 23 dec 2001 **/ /** # Version 5.1 : from : 09 jun 2009 **/ /** to 24 jul 2011 **/ /** **/ /** NOTES : # In order for flex to read its input **/ /** with getc() instead of fread, we set **/ /** YY_ALWAYS_INTERACTIVE to 1. This may **/ /** not always work with future releases. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define PARSER_LL #include "module.h" #include "common.h" #undef INTEGER /* In case someone defined them */ #undef DOUBLE #include "parser.h" #include "parser_ll.h" #include "parser_yy.h" #include "parser_ly.h" /*+ Definitions produced by yacc +*/ /* Assume no interactive parsing. */ #ifdef X_OSDOS /* Available only with MKS LEX */ #ifdef YY_INTERACTIVE #undef YY_INTERACTIVE #endif /* YY_INTERACTIVE */ #define YY_INTERACTIVE 0 #endif /* X_OSDOS */ #ifdef FLEX_SCANNER #define YY_ALWAYS_INTERACTIVE 1 /* Set the parser as interactive and read one char at a time */ #define YY_INPUT(buf,result,max_size) { int c = stratParserInput (); result = (c == 0) ? YY_NULL : ((buf)[0] = c, 1); } #else /* FLEX_SCANNER */ #undef getc /* Redirect I/O functions */ #define getc yygetc #undef yygetc #define yygetc(stream) stratParserInput () #endif /* FLEX_SCANNER */ #define YY_NO_UNPUT /* No prototype for yyunput as not defined */ #define YY_SKIP_YYWRAP /* No prototype for scotchyywrap as defined as macro */ #define scotchyywrap() (1) /* Always return end-of-file on end-of-string */ /* ** The static variables. */ static const char * stratparserstringptr; /* Pointer to the string to parse */ #line 611 "lex.yy.c" #define INITIAL 0 #define lstrat 1 #define lparam 2 #define lparamcase 3 #define lparamdouble 4 #define lparamint 5 #define lparamstring 6 #define ltest 7 #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 static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int scotchyylex_destroy (void ); int scotchyyget_debug (void ); void scotchyyset_debug (int debug_flag ); YY_EXTRA_TYPE scotchyyget_extra (void ); void scotchyyset_extra (YY_EXTRA_TYPE user_defined ); FILE *scotchyyget_in (void ); void scotchyyset_in (FILE * _in_str ); FILE *scotchyyget_out (void ); void scotchyyset_out (FILE * _out_str ); int scotchyyget_leng (void ); char *scotchyyget_text (void ); int scotchyyget_lineno (void ); void scotchyyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int scotchyywrap (void ); #else extern int scotchyywrap (void ); #endif #endif #ifndef YY_NO_UNPUT static void yyunput (int c,char *buf_ptr ); #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #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 do { if (fwrite( scotchyytext, (size_t) scotchyyleng, 1, scotchyyout )) {} } while (0) #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 = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( scotchyyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( scotchyyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, max_size, scotchyyin))==0 && ferror(scotchyyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(scotchyyin); \ } \ }\ \ #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 ) #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 scotchyylex (void); #define YY_DECL int scotchyylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after scotchyytext and scotchyyleng * 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 /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! scotchyyin ) scotchyyin = stdin; if ( ! scotchyyout ) scotchyyout = stdout; if ( ! YY_CURRENT_BUFFER ) { scotchyyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = scotchyy_create_buffer(scotchyyin,YY_BUF_SIZE ); } scotchyy_load_buffer_state( ); } { #line 121 "parser_ll.l" #line 838 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of scotchyytext. */ *yy_cp = (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 = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (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 >= 53 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 65 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; 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 = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 122 "parser_ll.l" { strncpy (yylval.STRING, scotchyytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (METHODNAME); } YY_BREAK case 2: YY_RULE_SETUP #line 128 "parser_ll.l" { strncpy (yylval.STRING, scotchyytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (PARAMNAME); } YY_BREAK case 3: YY_RULE_SETUP #line 134 "parser_ll.l" { yylval.CASEVAL = scotchyytext[0]; return (VALCASE); } YY_BREAK case 4: YY_RULE_SETUP #line 139 "parser_ll.l" { yylval.DOUBLE = atof (scotchyytext); return (VALDOUBLE); } YY_BREAK case 5: YY_RULE_SETUP #line 144 "parser_ll.l" { yylval.INTEGER = (INT) atol (scotchyytext); return (VALINT); } YY_BREAK case 6: YY_RULE_SETUP #line 148 "parser_ll.l" { yylval.INTEGER = (INT) atof (scotchyytext); /* FLOAT is put after so that INTEGER can be matched */ return (VALINT); } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 153 "parser_ll.l" { scotchyytext[scotchyyleng - 1] = '\0'; /* Remove the heading and trailing \" */ strncpy (yylval.STRING, scotchyytext + 1, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (VALSTRING); } YY_BREAK case 8: YY_RULE_SETUP #line 160 "parser_ll.l" { yylval.INTEGER = (INT) atol (scotchyytext); return (VALINT); } YY_BREAK case 9: YY_RULE_SETUP #line 164 "parser_ll.l" { yylval.DOUBLE = atof (scotchyytext); return (VALDOUBLE); } YY_BREAK case 10: YY_RULE_SETUP #line 168 "parser_ll.l" { strncpy (yylval.STRING, scotchyytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (PARAMNAME); } YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP #line 174 "parser_ll.l" ; YY_BREAK case 12: YY_RULE_SETUP #line 175 "parser_ll.l" return (scotchyytext[0]); YY_BREAK case 13: YY_RULE_SETUP #line 177 "parser_ll.l" ECHO; YY_BREAK #line 997 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(lstrat): case YY_STATE_EOF(lparam): case YY_STATE_EOF(lparamcase): case YY_STATE_EOF(lparamdouble): case YY_STATE_EOF(lparamint): case YY_STATE_EOF(lparamstring): case YY_STATE_EOF(ltest): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (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 scotchyyin at a new source and called * scotchyylex(). 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. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = scotchyyin; 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 ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* 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 ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( scotchyywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * scotchyytext, 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. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (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 user's declarations */ } /* end of scotchyylex */ /* 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 (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(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 ( (yy_c_buf_p) - (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 = (yy_size_t) ((yy_c_buf_p) - (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 = (yy_n_chars) = 0; else { int 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_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int 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. */ scotchyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (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]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; scotchyyrestart(scotchyyin ); } 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 ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) scotchyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (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 (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (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 >= 53 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) 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 ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (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 >= 53 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 52); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT static void yyunput (int c, char * yy_bp ) { char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up scotchyytext */ *yy_cp = (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. */ int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 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 = (yy_n_chars) = (int) 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; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(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 ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { 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. */ scotchyyrestart(scotchyyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( scotchyywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve scotchyytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void scotchyyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ scotchyyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = scotchyy_create_buffer(scotchyyin,YY_BUF_SIZE ); } scotchyy_init_buffer(YY_CURRENT_BUFFER,input_file ); scotchyy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void scotchyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * scotchyypop_buffer_state(); * scotchyypush_buffer_state(new_buffer); */ scotchyyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; scotchyy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (scotchyywrap()) processing, but the only time this flag * is looked at is after scotchyywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void scotchyy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; scotchyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(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. * * @return the allocated buffer state. */ YY_BUFFER_STATE scotchyy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) scotchyyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in scotchyy_create_buffer()" ); b->yy_buf_size = (yy_size_t)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 *) scotchyyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in scotchyy_create_buffer()" ); b->yy_is_our_buffer = 1; scotchyy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with scotchyy_create_buffer() * */ void scotchyy_delete_buffer (YY_BUFFER_STATE b ) { 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 ) scotchyyfree((void *) b->yy_ch_buf ); scotchyyfree((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a scotchyyrestart() or at EOF. */ static void scotchyy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; scotchyy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then scotchyy_init_buffer was _probably_ * called from scotchyyrestart() 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. * */ void scotchyy_flush_buffer (YY_BUFFER_STATE b ) { 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 ) scotchyy_load_buffer_state( ); } /** 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. * */ void scotchyypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; scotchyyensure_buffer_stack(); /* This block is copied from scotchyy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from scotchyy_switch_to_buffer. */ scotchyy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void scotchyypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; scotchyy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { scotchyy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void scotchyyensure_buffer_stack (void) { int num_to_alloc; if (!(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; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)scotchyyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in scotchyyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)scotchyyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in scotchyyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (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 * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE scotchyy_scan_buffer (char * base, yy_size_t size ) { 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 NULL; b = (YY_BUFFER_STATE) scotchyyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in scotchyy_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 = NULL; 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; scotchyy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to scotchyylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * scotchyy_scan_bytes() instead. */ YY_BUFFER_STATE scotchyy_scan_string (yyconst char * yystr ) { return scotchyy_scan_bytes(yystr,(int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to scotchyylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE scotchyy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) scotchyyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in scotchyy_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 = scotchyy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in scotchyy_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 yynoreturn yy_fatal_error (yyconst char* msg ) { (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 scotchyytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ scotchyytext[scotchyyleng] = (yy_hold_char); \ (yy_c_buf_p) = scotchyytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ scotchyyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int scotchyyget_lineno (void) { return scotchyylineno; } /** Get the input stream. * */ FILE *scotchyyget_in (void) { return scotchyyin; } /** Get the output stream. * */ FILE *scotchyyget_out (void) { return scotchyyout; } /** Get the length of the current token. * */ int scotchyyget_leng (void) { return scotchyyleng; } /** Get the current token. * */ char *scotchyyget_text (void) { return scotchyytext; } /** Set the current line number. * @param _line_number line number * */ void scotchyyset_lineno (int _line_number ) { scotchyylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see scotchyy_switch_to_buffer */ void scotchyyset_in (FILE * _in_str ) { scotchyyin = _in_str ; } void scotchyyset_out (FILE * _out_str ) { scotchyyout = _out_str ; } int scotchyyget_debug (void) { return scotchyy_flex_debug; } void scotchyyset_debug (int _bdebug ) { scotchyy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from scotchyylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT scotchyyin = stdin; scotchyyout = stdout; #else scotchyyin = NULL; scotchyyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * scotchyylex_init() */ return 0; } /* scotchyylex_destroy is for both reentrant and non-reentrant scanners. */ int scotchyylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ scotchyy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; scotchyypop_buffer_state(); } /* Destroy the stack itself. */ scotchyyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * scotchyylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { 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 ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *scotchyyalloc (yy_size_t size ) { return malloc(size); } void *scotchyyrealloc (void * ptr, yy_size_t size ) { /* 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 realloc(ptr, size); } void scotchyyfree (void * ptr ) { free( (char *) ptr ); /* see scotchyyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 177 "parser_ll.l" /*******************************************/ /* */ /* These routines handle data input to the */ /* lexical analyzer. */ /* */ /*******************************************/ /* This routine initializes the ** lexical analyzer. ** It returns: ** - VOID : in all cases. */ void stratParserInit ( const char * const string) /*+ Strategy string to parse +*/ { #ifdef FLEX_SCANNER scotchyyrestart (scotchyyin); /* (Re-)initialize the parser */ #endif /* FLEX_SCANNER */ stratParserSelect (VALSTRAT); /* Begin with a strategy */ stratparserstringptr = string; /* Point to beginning of string */ } /* This routine reads a single character ** from the input string. ** It returns: ** - 0 : if end of string reached. ** - !0 : character from string. */ static int stratParserInput () { if (*stratparserstringptr == '\0') /* If end-of-string reached */ return (0); /* Return end-of-file token */ else /* Else return the character */ return ((int) (unsigned char) *stratparserstringptr ++); } /* This routine returns the pointer to the ** remaining part of the string. */ const char * stratParserRemain () { return (stratparserstringptr); } /* This routine selects the sub-parser ** to parse the input. ** It returns: ** - VOID : in all cases. */ void stratParserSelect ( unsigned int type) { switch (type) { case VALCASE : BEGIN lparamcase; break; case VALDOUBLE : BEGIN lparamdouble; break; case VALINT : BEGIN lparamint; break; case VALSTRING : BEGIN lparamstring; break; case VALPARAM : BEGIN lparam; break; case VALSTRAT : BEGIN lstrat; break; case VALTEST : BEGIN ltest; break; } } scotch_6.0.9/src/libscotch/last_resort/parser_ly.h0000644000302600021200000000650313470121077022536 0ustar pelegrinpelegrin/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, 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. */ #ifndef YY_SCOTCHYY_Y_TAB_H_INCLUDED # define YY_SCOTCHYY_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int scotchyydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { METHODNAME = 258, PARAMNAME = 259, VALCASE = 260, VALDOUBLE = 261, VALINT = 262, VALSTRING = 263, VALSTRAT = 264, VALPARAM = 265, VALTEST = 266 }; #endif /* Tokens. */ #define METHODNAME 258 #define PARAMNAME 259 #define VALCASE 260 #define VALDOUBLE 261 #define VALINT 262 #define VALSTRING 263 #define VALSTRAT 264 #define VALPARAM 265 #define VALTEST 266 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 92 "parser_yy.y" /* yacc.c:1909 */ char CASEVAL; /* Case value */ StratTest * TEST; /* Test type */ StratTestType TESTOP; /* Relational type */ double DOUBLE; /* Double-precision */ INT INTEGER; /* Integer */ char STRING[PARSERSTRINGLEN]; /* Character string */ struct { const StratTab * tabl; /* Current tables */ Strat * strat; /* Current method */ StratParamTab * param; /* Current parameter */ } SAVE; /* Parameter type */ Strat * STRAT; /* Strategy tree */ #line 91 "y.tab.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE scotchyylval; int scotchyyparse (void); #endif /* !YY_SCOTCHYY_Y_TAB_H_INCLUDED */ scotch_6.0.9/src/libscotch/kgraph.c0000644000302600021200000003657613470115365017464 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Part of a bipartitioning mapper. **/ /** This module handles the k-way active **/ /** graph and save data structure handling **/ /** routines. **/ /** **/ /** DATES : # Version 3.2 : from : 03 oct 1997 **/ /** to 26 may 1998 **/ /** # Version 3.4 : from : 30 oct 2001 **/ /** to 30 oct 2001 **/ /** # Version 4.0 : from : 24 jun 2004 **/ /** to 16 feb 2005 **/ /** # Version 5.1 : from : 28 sep 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 26 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "kgraph.h" /***********************************/ /* */ /* Active graph handling routines. */ /* */ /***********************************/ /* This routine builds the active graph ** corresponding to the given k-way ** partition parameters. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphInit ( Kgraph * restrict const actgrafptr, /*+ Active graph +*/ const Graph * restrict const srcgrafptr, /*+ Source graph +*/ const Arch * restrict const archptr, /*+ Target architecture +*/ const ArchDom * restrict const domnptr, /*+ Target architecture initial domain +*/ const Gnum vfixnbr, /*+ Number of fixed vertices in array +*/ const Anum * restrict const pfixtax, /*+ Fixed vertex part array +*/ const Anum * restrict const parotax, /*+ Pointer to old part array +*/ const Gnum crloval, /*+ Coefficient load for regular edges +*/ const Gnum cmloval, /*+ Coefficient load for migration edges +*/ const Gnum * restrict const vmlotax) /*+ Vertex migration cost array +*/ { ArchDom domndat; /* First, largest domain */ #ifdef SCOTCH_DEBUG_KGRAPH2 if ((crloval < 1) || (cmloval < 0)) { errorPrint ("kgraphInit: invalid parameters"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ archDomFrst (archptr, &domndat); /* Get first, largest domain */ if (srcgrafptr != &actgrafptr->s) { /* If graph not already in place */ actgrafptr->s = *srcgrafptr; /* Clone source graph */ actgrafptr->s.flagval &= (GRAPHBITSUSED & ~GRAPHFREETABS); /* Remove extended graph class flags and do not allow freeing */ } if (archptr != &actgrafptr->a) /* If architecture not already in place */ actgrafptr->a = *archptr; /* Clone it */ mapInit (&actgrafptr->m, &actgrafptr->s, &actgrafptr->a, ((domnptr == NULL) ? &domndat : domnptr)); /* Use largest domain if none provided */ mapInit (&actgrafptr->r.m, &actgrafptr->s, &actgrafptr->a, ((domnptr == NULL) ? &domndat : domnptr)); if (parotax != NULL) { /* If old part array provided */ if ((mapAlloc (&actgrafptr->r.m) != 0) || (mapBuild (&actgrafptr->r.m, parotax) != 0)) { errorPrint ("kgraphInit: cannot initialize remapping"); return (1); } } actgrafptr->r.crloval = crloval; actgrafptr->r.cmloval = cmloval; actgrafptr->r.vmlotax = vmlotax; /* Set vertex migration load array or NULL */ actgrafptr->vfixnbr = vfixnbr; actgrafptr->pfixtax = pfixtax; if (mapAlloc (&actgrafptr->m) != 0) { errorPrint ("kgraphInit: cannot initialize mapping"); return (1); } if (((actgrafptr->frontab = memAlloc (actgrafptr->s.vertnbr * sizeof (Gnum))) == NULL) || /* Allocation and initialization of imbalance arrays */ (memAllocGroup ((void **) (void *) &actgrafptr->comploadavg, (size_t) (actgrafptr->m.domnmax * sizeof (Gnum)), /* TRICK: can send both compload arrays in one piece */ &actgrafptr->comploaddlt, (size_t) (actgrafptr->m.domnmax * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("kgraphInit: out of memory"); if (actgrafptr->frontab != NULL) memFree (actgrafptr->frontab); return (1); } actgrafptr->s.flagval |= KGRAPHFREECOMP | KGRAPHFREEFRON; /* comploadavg and comploaddlt are always grouped */ actgrafptr->comploadavg[0] = actgrafptr->s.velosum; actgrafptr->comploaddlt[0] = 0; actgrafptr->fronnbr = 0; /* No frontier yet */ actgrafptr->comploadrat = (double) srcgrafptr->velosum / (double) archDomWght (archptr, &domndat); /* Always balance with respect to whole original graph */ actgrafptr->commload = 0; actgrafptr->levlnum = 0; actgrafptr->kbalval = 1; /* No information on imbalance yet */ return (0); } /* This routine frees the contents ** of the given active graph and ** updates the mapping data accordingly. ** It returns: ** - VOID : in all cases. */ void kgraphExit ( Kgraph * restrict const grafptr) { mapExit (&grafptr->m); mapExit (&grafptr->r.m); if (((grafptr->s.flagval & KGRAPHFREEVMLO) != 0) && /* If vmlotax must be freed */ (grafptr->r.vmlotax != NULL)) /* And if it exists */ memFree (grafptr->r.vmlotax + grafptr->s.baseval); /* Free it */ if (((grafptr->s.flagval & KGRAPHFREEPFIX) != 0) && /* If pfixtax must be freed */ (grafptr->pfixtax != NULL)) /* And if it exists */ memFree (grafptr->pfixtax + grafptr->s.baseval); /* Free it */ if (((grafptr->s.flagval & KGRAPHFREEFRON) != 0) && /* If frontab must be freed */ (grafptr->frontab != NULL)) /* And if it exists */ memFree (grafptr->frontab); /* Free it */ if (((grafptr->s.flagval & KGRAPHFREECOMP) != 0) && /* If comptabs must be freed */ (grafptr->comploadavg != NULL)) /* And if it exists */ memFree (grafptr->comploadavg); /* Free it */ graphExit (&grafptr->s); #ifdef SCOTCH_DEBUG_KGRAPH2 memSet (grafptr, ~0, sizeof (Kgraph)); /* Purge kgraph fields */ #endif /* SCOTCH_DEBUG_KGRAPH2 */ } /* This routine moves all of the graph ** vertices to the first subdomain, and ** computes the resulting gains. ** It returns: ** - VOID : in all cases. */ void kgraphFrst ( Kgraph * restrict const grafptr) { grafptr->m.domnnbr = 1; grafptr->m.domntab[0] = grafptr->m.domnorg; /* Use initial (sub)domain as root */ memSet (grafptr->m.parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (Anum)); /* Set all vertices to subdomain 0 */ memSet (grafptr->comploadavg + 1, 0, (2 * grafptr->m.domnmax - 1) * sizeof (Gnum)); grafptr->comploadavg[0] = grafptr->s.velosum; grafptr->commload = 0; grafptr->fronnbr = 0; /* No frontier vertices */ } /* This routine computes the cost of the ** current partition. ** It returns: ** - VOID : in all cases. */ void kgraphCost ( Kgraph * restrict const grafptr) { Gnum vertnum; Gnum * restrict compload; Gnum commload; double fdomwgt; Gnum fvelsum; Gnum velosum; Anum domnnum; ArchDom domndat; double domnrat; const Arch * restrict const archptr = &grafptr->a; const ArchDom * restrict const domntab = grafptr->m.domntab; Anum * restrict const parttax = grafptr->m.parttax; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Anum domnnbr = grafptr->m.domnnbr; commload = 0; compload = grafptr->comploaddlt; /* Use delta array as temporary storage */ memSet (compload, 0, domnnbr * sizeof (Gnum)); for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) { Gnum edgenum; Gnum edgennd; Anum partval; /* Part of current vertex */ Anum partlst; /* Part of last vertex for which a distance was computed */ Anum distlst; /* Last distance computed */ Gnum veloval; partval = parttax[vertnum]; partlst = -1; /* Invalid part to recompute distance */ distlst = -1; /* To prevent compiler from yielding */ #ifdef SCOTCH_DEBUG_KGRAPH2 if ((partval < 0) || (partval >= domnnbr)) { errorPrint ("kgraphCost: invalid part number (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ veloval = (velotax != NULL) ? velotax[vertnum] : 1; compload[partval] += veloval; for (edgenum = verttax[vertnum], edgennd = vendtax[vertnum]; edgenum < edgennd; edgenum ++) { Gnum vertend; Anum partend; vertend = edgetax[edgenum]; if (vertend > vertnum) /* Compute loads only once */ continue; partend = parttax[vertend]; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((partend < 0) || (partend >= domnnbr)) { errorPrint ("kgraphCost: invalid part number (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (partval != partend) { Anum distval; distval = (partend != partlst) ? archDomDist (archptr, &domntab[partval], &domntab[partend]) : distlst; distlst = distval; partlst = partend; commload += (Gnum) distval * ((edlotax != NULL) ? edlotax[edgenum] : 1); } } } grafptr->commload = commload; fdomwgt = 0; fvelsum = 0; if ((grafptr->s.flagval & KGRAPHHASANCHORS) != 0) { const Gnum vertancnnd = grafptr->s.vertnnd - domnnbr; Gnum veloval; for (domnnum = 0; domnnum < domnnbr; domnnum ++) if ((grafptr->s.verttax[vertancnnd + domnnum + 1] - grafptr->s.verttax[vertancnnd + domnnum]) != 0) continue; if (domnnum != domnnbr) { for (domnnum = 0; domnnum < domnnbr; domnnum ++) { if ((grafptr->s.verttax[vertancnnd + domnnum + 1] - grafptr->s.verttax[vertancnnd + domnnum]) == 0) { veloval = grafptr->s.velotax[vertancnnd + domnnum]; fdomwgt += (double) archDomWght (archptr, &grafptr->m.domntab[domnnum]); fvelsum += veloval; compload[domnnum] -= grafptr->comploadavg[domnnum] = veloval; #ifdef SCOTCH_DEBUG_KGRAPH2 if (compload[domnnum] != 0) { errorPrint ("kgraphCost: invalid load difference"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } } } } archDomFrst (archptr, &domndat); domnrat = (double) archDomWght (archptr, &domndat); domnrat -= fdomwgt; velosum = grafptr->s.velosum - fvelsum; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { compload[domnnum] -= grafptr->comploadavg[domnnum] = (Gnum) ((double) velosum * ((double) archDomWght (archptr, &grafptr->m.domntab[domnnum]) / domnrat)); } } /* This routine computes the frontier ** array of the current partition. ** It returns: ** - VOID : in all cases. */ void kgraphFron ( Kgraph * restrict const grafptr) { Gnum vertnum; Gnum vertnnd; Gnum fronnbr; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Anum * restrict const parttax = grafptr->m.parttax; Gnum * restrict const frontab = grafptr->frontab; for (vertnum = grafptr->s.baseval, vertnnd = grafptr->s.vertnnd, fronnbr = 0; vertnum < vertnnd; vertnum ++) { Anum partval; /* Part of current vertex */ Gnum edgenum; /* Number of current edge */ partval = parttax[vertnum]; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { if (parttax[edgetax[edgenum]] != partval) { /* If neighbor does not belong to the same part */ frontab[fronnbr ++] = vertnum; break; } } } grafptr->fronnbr = fronnbr; } scotch_6.0.9/src/libscotch/vdgraph_separate_sq.h0000644000302600021200000000630613465315041022220 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_sq.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the sequential vertex separation **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 15 feb 2006 **/ /** to : 01 mar 2006 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VdgraphSeparateSqParam_ { Strat * strat; /*+ Sequential separation strategy used +*/ } VdgraphSeparateSqParam; /* ** The function prototypes. */ #ifdef VDGRAPH_SEPARATE_SQ static void vdgraphSeparateSqOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); #endif /* VDGRAPH_SEPARATE_SQ */ int vdgraphSeparateSq (Vdgraph * const, const VdgraphSeparateSqParam * const); scotch_6.0.9/src/libscotch/hmesh_order_bl.h0000644000302600021200000000626313465315041021154 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_bl.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the block splitting algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 28 sep 2002 **/ /** to 04 jan 2005 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderBlParam_ { Strat * strat; /*+ Ordering strategy +*/ INT cblkmin; /*+ Block splitting size +*/ } HmeshOrderBlParam; /* ** The function prototypes. */ int hmeshOrderBl (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderBlParam * const); scotch_6.0.9/src/libscotch/vgraph_separate_gp.h0000644000302600021200000001014613303015264022027 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_gp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Gibbs, Poole, and Stockmeyer **/ /** graph separation algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 14 may 2004 **/ /** to 17 may 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct VgraphSeparateGpParam_ { INT passnbr; /*+ Number of passes to do +*/ } VgraphSeparateGpParam; /*+ Complementary vertex structure. +*/ typedef struct VgraphSeparateGpVertex_ { Gnum passnum; /*+ Number of pass when vertex selected +*/ Gnum distval; /*+ Current distance from diameter vertex +*/ } VgraphSeparateGpVertex; /*+ Neighbor queue. +*/ typedef struct VgraphSeparateGpQueue_ { Gnum headnum; /*+ Head of distance queue +*/ Gnum tailnum; /*+ Tail of distance queue +*/ Gnum * queutab; /*+ Array of queue elements +*/ } VgraphSeparateGpQueue; /* ** The function prototypes. */ int vgraphSeparateGp (Vgraph * restrict const, const VgraphSeparateGpParam * restrict const); /* ** The macro definitions. */ #define vgraphSeparateGpQueueFlush(queue) ((queue)->headnum = (queue)->tailnum = 0) #define vgraphSeparateGpQueueEmpty(queue) ((queue)->headnum <= (queue)->tailnum) #define vgraphSeparateGpQueuePut(queue,vnum) ((queue)->queutab[(queue)->headnum ++] = (vnum)) #define vgraphSeparateGpQueueGet(queue) ((queue)->queutab[(queue)->tailnum ++]) scotch_6.0.9/src/libscotch/hall_order_hd.c0000644000302600021200000011562613560013017020757 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hd.c **/ /** **/ /** AUTHOR : Patrick AMESTOY **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a halo graph or mesh **/ /** structure using the block-oriented Halo **/ /** Approximate (Multiple) Minimum Degree **/ /** algorithm, with super-variable **/ /** accounting (HaloAMD v2.0). **/ /** **/ /** DATES : # Version 3.2 : from : 09 aug 1998 **/ /** to 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 05 jan 1999 **/ /** # Version 4.0 : from : 14 jan 2003 **/ /** to : 29 aug 2007 **/ /** # Version 6.0 : from : 08 mar 2012 **/ /** to : 30 apr 2018 **/ /** **/ /** NOTES : # This module contains pieces of code **/ /** that belong to other people; see **/ /** below. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HALL_ORDER_HD #include "module.h" #include "common.h" #include "graph.h" #include "hall_order_hd.h" /* -- translated by f2c (version 19970219). */ /** -------------------------------------------------------------------- **/ /** December 8th 2003 **/ /** Unique version for both graph of variables and graphs of elements **/ /** Let us refer to as **/ /** Gv a graph with only variables **/ /** Ge a graph with both variables and elements **/ /** **/ /** Notations used: **/ /** **/ /** Let V be the set of nodes **/ /** V = Ve + V0 + V1 **/ /** V0 = Set of variable nodes (not in halo) **/ /** V1 = Set of variable nodes (in halo) **/ /** Ve = Set of element nodes **/ /** **/ /** All 3 sets are disjoint, Ve and V1 can be empty **/ /** **/ /** Modifications w.r.t. previous version : **/ /** **/ /** New Input: **/ /** --------- **/ /** nbelts : integer holding size of Ve **/ /** =0 if Gv (graph of variables) **/ /** >0 if Ge **/ /** **/ /** Extension of the meaning of input entry len for nodes in Ve **/ /** --------- **/ /** len(i) = | Adj(i) | if i \in V0 U Ve **/ /** ( Note that in the case of a GE graph **/ /** if v\in V0 then len(v) = nb of elements adjacent to v ) **/ /** len(i) = - | Adj(i) | if i \in V1 **/ /** or -N -1 if | Adj(i) | = 0 and i \in V1 **/ /** **/ /** Modified the meaning of input entry elen **/ /** --------- **/ /** if e \in Ve then elen (e) = -N-1 **/ /** if v \in V0 then elen (v) = External degree of v **/ /** Gv : elen (v) = len(v) **/ /** Ge : elen (v) **/ /** should be computed in SCOTCH **/ /** if v \in V1 then elen (v) = 0 **/ /** **/ /** **/ /** Output is unchanged **/ /** --------- **/ /** **/ /** **/ /** End remarks done on December 8th 2003 **/ /** ---------------------------------------------------------------------**/ void hallOrderHdHalmd ( const Gnum n, /* Matrix order */ const Gnum nbelts, /* Number of elements */ const Gnum iwlen, /* Length of array iw */ Gnum * restrict pe, /* Array of indexes in iw of start of row i */ Gnum pfree, /* Useful size in iw */ Gnum * restrict len, /* Array of lengths of adjacency lists */ Gnum * restrict iw, /* Adjacency list array */ Gnum * restrict nv, /* Array of element degrees */ Gnum * restrict elen, /* Array that holds the inverse permutation */ Gnum * restrict last, /* Array that holds the permutation */ Gnum * restrict ncmpa, /* Number of times array iw was compressed */ Gnum * restrict degree, /* Array that holds degree data */ Gnum * restrict head, /* Linked list structure */ Gnum * restrict next, /* Linked list structure */ Gnum * restrict w) /* Flag array */ { Gnum deg, degme, dext, dmax, e, elenme, eln, hash, hmod, i, ilast, inext, j, jlast, jnext, k, knt1, knt2, knt3, lenj, ln, me = 0, mem, mindeg, nel, newmem, nleft, nvi, nvj, nvpiv, slenme, we, wflg, wnvi, x, nbflag, nreal, lastd, nelme; Gnum p, p1, p2, p3, pdst, pend, pj, pme, pme1, pme2, pn, psrc; /** -------------------------------------------------------------------- **/ /** HALOAMD_V6: (January 1999, P. Amestoy) **/ /** *********** **/ /** 1/ ERROR 2 detection followed by stop statement suppressed. **/ /** 2/ Pb 1 identified in V5 was not correctly solved. **/ /** **/ /** HALOAMD_V5: (December 1998, P. Amestoy) **/ /** *********** **/ /** 1/ Solved problem with matrix psmigr 1, because upper bound degree **/ /** DEG>N was considered as a node of V1. **/ /** **/ /** HALOAMD_V4: (October 1998, P. Amestoy) **/ /** *********** **/ /** Only MA41 interface (ok for both scotch and MA41) is included in **/ /** this file. **/ /** **/ /** HALOAMD_V3: (August 1998, P. Amestoy) **/ /** ********** **/ /** Solved problem in version 2: variables of V1 with len(i)=0 were not **/ /** well processed. See modification of the input to characterize those **/ /** variables. **/ /** Problem detected by Jacko Koster while experimenting with C version **/ /** 2 of haloAMD in the context of multiple front method based on **/ /** MA27: "if for an interface variable i, row i in the matrix has only **/ /** a nonzero entry on the diagonal, we first remove this entry and **/ /** len(i) is set to zero on input to HALOAMD. However, this means that **/ /** HALOAMD will treat variable i as an interior variable (in V0) **/ /** instead as an interface variable (in V1). It is indeed a bit **/ /** strange to have such interface variables but we encountered some **/ /** in our debugging experiments with some random partitionings. **/ /** Solution: **/ /** IF on input i \in V1 and len(i)=0 (that is adjlist(i)={}) THEN **/ /** len(i) must be set on input to -N-1. **/ /** ENDIF **/ /** Therefore, all variables i / len(i) < 0 and only those are in V1. **/ /** Variables with len(i) = -N-1 are then processed differently at the **/ /** beginning of the code. **/ /** **/ /** HALOAMD_V2: (April 1998) **/ /** ********** **/ /** The end of the tree (including links to block of flagged indices **/ /** is built) . The list of flagged indices is considered as a dense **/ /** amalgamated node. **/ /** Tested on rosanna: ~amestoy/MA41_NEW/SUN_RISC_dbl/SOFT **/ /** **/ /** Comments on the OUTPUT: **/ /** ---------------------- **/ /** **/ /** Let V= V0 U V1 the nodes of the initial graph (|V|=n). **/ /** The assembly tree corresponds to the tree of the supernodes (or **/ /** supervariables). Each node of the assembly tree is then composed of **/ /** one principal variable and a list of secondary variables. The list **/ /** of variable of a node (principal + secondary variables) then **/ /** describes the structure of the diagonal bloc of the supernode. **/ /** The elimination tree denotes the tree of all the variables(=nodes) **/ /** and is therefore of order n. The arrays NV(N) and PE(N) give a **/ /** description of the assembly tree. **/ /** **/ /** 1/ Description of array nv(N) (on OUPUT) **/ /** nv(i)=0 i is a secondary variable. **/ /** N+1> nv(i) >0 i is a principal variable, nv(i) holds the number **/ /** of elements in column i of L (true degree of i) **/ /** nv(i) = N+1 then i is a flagged variable (belonging to V1) **/ /** **/ /** 2/ Description of array PE(N) (on OUPUT) **/ /** pe(i) = -(father of variable/node i) in the elimination tree. **/ /** If nv (i) .gt. 0, then i represents a node in the assembly tree, **/ /** and the parent of i is -pe (i), or zero if i is a root. **/ /** If nv (i) = 0, then (i,-pe (i)) represents an edge in a **/ /** subtree, the root of which is a node in the assembly tree. **/ /** **/ /** 3/ Example: **/ /** Let If be a root node father of Is in the assembly tree. **/ /** If is the principal variable of the node If and let If1, If2, If3 **/ /** be the secondary variables of node If. Is is the principal **/ /** variable of the node Is and let Is1, Is2 be the secondary **/ /** variables of node Is. **/ /** Then: **/ /** NV(If1)=NV(If2)=NV(If3) = 0 (secondary variables) **/ /** NV(Is1)=NV(Is2) = 0 (secondary variables) **/ /** NV(If) > 0 (principal variable) **/ /** NV(Is) > 0 (principal variable) **/ /** PE(If) = 0 (root node) **/ /** PE(Is) = -If (If is the father of Is in the assembly tree) **/ /** PE(If1)=PE(If2)=PE(If3)= -If (If is the principal variable) **/ /** PE(Is1)=PE(Is2)= -Is (Is is the principal variable) **/ /** **/ /** HALOAMD_V1: (September 1997) **/ /** ********** **/ /** Initial version designed to experiment the numerical (fill-in) **/ /** impact of taking into account the halo. This code should be able to **/ /** experiment no-halo, partial halo, complete halo. **/ /** -------------------------------------------------------------------- **/ /** HALOAMD is designed to process a graph composed of two types **/ /** of nodes, V0 and V1, extracted from a larger gragh. **/ /** V0^V1 = {}, **/ /** We used Min. degree heuristic to order only **/ /** nodes in V0, but the adjacency to nodes **/ /** in V1 is taken into account during ordering. **/ /** Nodes in V1 are odered at last. **/ /** Adjacency between nodes of V1 need not be provided, **/ /** however |len(i)| must always corresponds to the number of **/ /** edges effectively provided in the adjacency list of i. **/ /** On input : **/ /** ******** **/ /** Nodes INODE in V1 are flagged with len(INODE) = -degree **/ /** Update version HALO V3 (August 1998): **/ /** if len(i)=0 and i \in V1 then len(i) must be set **/ /** on input to -N-1. **/ /** ERROR return : **/ /** ************ **/ /** Negative value in ncmpa indicates an error detected **/ /** by HALOAMD. **/ /** **/ /** The graph provided MUST follow the rule: **/ /** if (i,j) is an edge in the gragh then **/ /** j must be in the adjacency list of i AND **/ /** i must be in the adjacency list of j. **/ /** **/ /** REMARKS : **/ /** ------- **/ /** 1/ Providing edges between nodes of V1 should not **/ /** affect the final ordering, only the amount of edges **/ /** of the halo should effectively affect the solution. **/ /** This code should work in the following cases: **/ /** 1/ halo not provided **/ /** 2/ halo partially provided **/ /** 3/ complete halo **/ /** 4/ complete halo+interconnection between nodes of V1. **/ /** **/ /** 1/ should run and provide identical results (w.r.t to **/ /** current implementation of AMD in SCOTCH). **/ /** 3/ and 4/ should provide identical results. **/ /** **/ /** 2/ All modifications of the MC47 initial code are indicated **/ /** with begin HALO .. end HALO **/ /** **/ /** Ordering of nodes in V0 is based on Approximate Minimum Degree **/ /** ordering algorithm, with aggressive absorption: **/ /** Given a representation of the nonzero pattern of a symmetric matrix, **/ /** A, (excluding the diagonal) perform an approximate minimum **/ /** (UMFPACK/MA38-style) degree ordering to compute a pivot order **/ /** such that fill-in in the Cholesky **/ /** factors A = LL^T is kept low. At each step, the pivot **/ /** selected is the one with the minimum UMFPACK/MA38-style **/ /** upper-bound on the external degree. Aggresive absorption is **/ /** used to tighten the bound on the degree. This can result an **/ /** significant improvement in the quality of the ordering for **/ /** some matrices. **/ /** The approximate degree algorithm implemented here is the **/ /** symmetric analogue of the degree update algorithm in MA38, by **/ /** Davis and Duff, also in the Harwell Subroutine Library. **/ /** **/ /** **** CAUTION: ARGUMENTS ARE NOT CHECKED FOR ERRORS ON INPUT. ***** **/ /** ** If you want error checking, a more versatile input format, and ** **/ /** ** a simpler user interface, then use MC47A/AD in the Harwell ** **/ /** ** Subroutine Library, which checks for errors, transforms the ** **/ /** ** input, and calls MC47B/BD. ** **/ /** ******************************************************************** **/ /** References: (UF Tech Reports are available via anonymous ftp **/ /** to ftp.cis.ufl.edu:cis/tech-reports). **/ /** [1] Timothy A. Davis and Iain Duff, "An unsymmetric-pattern **/ /** multifrontal method for sparse LU factorization", **/ /** SIAM J. Matrix Analysis and Applications, to appear. **/ /** also Univ. of Florida Technical Report TR-94-038. **/ /** Discuss UMFPACK / MA38. **/ /** [2] Patrick Amestoy, Timothy A. Davis, and Iain S. Duff, **/ /** "An approximate minimum degree ordering algorithm," **/ /** SIAM J. Matrix Analysis and Applications (to appear), **/ /** also Univ. of Florida Technical Report TR-94-039. **/ /** Discusses this routine. **/ /** [3] Alan George and Joseph Liu, "The evolution of the **/ /** minimum degree ordering algorithm," SIAM Review, vol. **/ /** 31, no. 1, pp. 1-19, March 1989. We list below the **/ /** features mentioned in that paper that this code **/ /** includes: **/ /** mass elimination: **/ /** Yes. MA27 relied on supervariable detection for mass **/ /** elimination. **/ /** indistinguishable nodes: **/ /** Yes (we call these "supervariables"). This was also **/ /** in the MA27 code - although we modified the method of **/ /** detecting them (the previous hash was the true degree, **/ /** which we no longer keep track of). A supervariable is **/ /** a set of rows with identical nonzero pattern. All **/ /** variables in a supervariable are eliminated together. **/ /** Each supervariable has as its numerical name that of **/ /** one of its variables (its principal variable). **/ /** quotient graph representation: **/ /** Yes. We use the term "element" for the cliques formed **/ /** during elimination. This was also in the MA27 code. **/ /** The algorithm can operate in place, but it will work **/ /** more efficiently if given some "elbow room." **/ /** element absorption: **/ /** Yes. This was also in the MA27 code. **/ /** external degree: **/ /** Yes. The MA27 code was based on the true degree. **/ /** incomplete degree update and multiple elimination: **/ /** No. This was not in MA27, either. Our method of **/ /** degree update within MC47B/BD is element-based, not **/ /** variable-based. It is thus not well-suited for use **/ /** with incomplete degree update or multiple elimination. **/ /** -------------------------------------------------------------------- **/ /** Authors, and Copyright (C) 1995 by: **/ /** Timothy A. Davis, Patrick Amestoy, Iain S. Duff, & **/ /** John K. Reid. **/ /** Modified (V1) by P.R. Amestoy ENSEEIHT (1997) **/ /** Modified (V2) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V3) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V4) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V5) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V6) by P.R. Amestoy ENSEEIHT (1999) **/ /** **/ /** Dates: September, 1995 **/ /** September, 1997 (halo AMD V1) **/ /** April, 1998 (halo AMD V2) **/ /** August, 1998 (halo AMD V3) **/ -- w; /* Parameter adjustments */ -- next; -- head; -- degree; -- last; -- elen; -- nv; -- len; -- pe; -- iw; wflg = 2; mindeg = 1; *ncmpa = 0; nel = 0; hmod = MAX (1, (n - 1)); dmax = 0; mem = pfree - 1; nbflag = 0; lastd = 0; memSet (last + 1, 0, n * sizeof (Gnum)); memSet (head + 1, 0, n * sizeof (Gnum)); if (nbelts == 0) { /* Patch 8/12/03 */ memSet (elen + 1, 0, n * sizeof (Gnum)); for (i = 1; i <= n; i ++) { w[i] = 1; if (len[i] < 0) { degree[i] = n + 1; nbflag ++; if (len[i] == - (n + 1)) { /* Patch 09/08/98 */ len[i] = 0; pe[i] = 0; /* Patch 12/12/03 : Because of compress, we force skipping those entries (which are anyway empty) */ } else len[i] = - len[i]; } else degree[i] = len[i]; } } else { /* Patch 08/12/03 : Duplicate part of previous loop to avoid sytematic testing for elements */ for (i = 1; i <= n; i ++) { w[i] = 1; if (len[i] < 0) { /* i \in V1 */ degree[i] = n + 1; nbflag ++; if (len[i] == - (n + 1)) { /* Patch 09/08/98 */ len[i] = 0; pe[i] = 0; /* Patch 12/12/03 : because of compress, we force skipping those entries (which are anyway empty) */ elen[i] = 0; /* Patch 16/12/03 */ } else { len[i] = - len[i]; elen[i] = len[i]; /* Patch 16/12/03 : only elements are adjacent to a variable */ } } else { /* i \in Ve or V0 */ if (elen[i] < 0) { /* i \in Ve */ nel ++; degree[i] = len[i]; elen[i] = - nel; dmax = MAX (dmax, degree[i]); /* Patch 11/03/04 */ } else { degree[i] = elen[i]; elen[i] = len[i]; /* Patch 16/12/03 : only elements are adjacent to a variable */ } } } } #ifdef SCOTCH_DEBUG_ORDER2 if (nbelts != nel) /* Temporary Patch 8/12/03 */ printf ("error 8Dec2003\n"); #endif /* SCOTCH_DEBUG_ORDER2 */ nreal = n - nbflag; for (i = 1; i <= n; i ++) { if (elen[i] < 0 ) /* Patch 16/12/03 : Skip elements */ continue; deg = degree[i]; if (deg == (n + 1)) { deg = n; if (lastd == 0) { lastd = i; head[deg] = i; next[i] = 0; last[i] = 0; } else { next[lastd] = i; last[i] = lastd; lastd = i; next[i] = 0; } } else if (deg > 0) { inext = head[deg]; if (inext != 0) last[inext] = i; next[i] = inext; head[deg] = i; } else { nel ++; elen[i] = - nel; pe[i] = 0; w[i] = 0; } } /* L20: */ nleft = n - nel; /* Patch v5 12/12/98 */ while (nel < nreal) { /* WHILE (selecting pivots) DO */ for (deg = mindeg; deg <= n; deg ++) { /* Patch 17/11/97 */ me = head[deg]; if (me > 0) break; /* GO to 50 */ } /* L40: */ mindeg = deg; if (me <= 0) { /* Error 1 */ *ncmpa = -n; return; } inext = next[me]; if (inext != 0) last[inext] = 0; head[deg] = inext; elenme = elen[me]; elen[me] = - (nel + 1); nvpiv = nv[me]; nel += nvpiv; nv[me] = - nvpiv; degme = 0; if (elenme == 0) { pme1 = pe[me]; pme2 = pme1 - 1; for (p = pme1; p <= pme1 + len[me] - 1; p ++) { i = iw[p]; nvi = nv[i]; if (nvi > 0) { degme += nvi; nv[i] = - nvi; pme2 ++; iw[pme2] = i; if (degree[i] <= n) { ilast = last[i]; inext = next[i]; if (inext != 0) last[inext] = ilast; if (ilast != 0) next[ilast] = inext; else head[degree[i]] = inext; } } } /* L60: */ newmem = 0; } else { p = pe[me]; pme1 = pfree; slenme = len[me] - elenme; for (knt1 = 1; knt1 <= elenme + 1; knt1 ++) { if (knt1 > elenme) { e = me; pj = p; ln = slenme; } else { e = iw[p ++]; pj = pe[e]; ln = len[e]; } for (knt2 = 1; knt2 <= ln; knt2 ++) { i = iw[pj ++]; nvi = nv[i]; if (nvi > 0) { if (pfree > iwlen) { pe[me] = p; len[me] -= knt1; if (len[me] == 0) pe[me] = 0; pe[e] = pj; len[e] = ln - knt2; if (len[e] == 0) pe[e] = 0; (*ncmpa) ++; for (j = 1; j <= n; j ++) { pn = pe[j]; if (pn > 0) { pe[j] = iw[pn]; iw[pn] = - j; } } /* L70: */ pdst = 1; psrc = 1; pend = pme1 - 1; while (psrc <= pend) { /* L80: */ j = - iw[psrc ++]; if (j > 0) { iw[pdst] = pe[j]; pe[j] = pdst ++; lenj = len[j]; for (knt3 = 0; knt3 <= lenj - 2; knt3 ++) iw[pdst + knt3] = iw[psrc + knt3]; pdst = pdst + (lenj - 1); psrc = psrc + (lenj - 1); } } p1 = pdst; for (psrc = pme1; psrc <= pfree - 1; psrc ++, pdst ++) /* L100: */ iw[pdst] = iw[psrc]; pme1 = p1; pfree = pdst; pj = pe[e]; p = pe[me]; } degme += nvi; nv[i] = - nvi; iw[pfree] = i; pfree ++; if (degree[i] <= n) { ilast = last[i]; inext = next[i]; if (inext != 0) last[inext] = ilast; if (ilast != 0) next[ilast] = inext; else head[degree[i]] = inext; } } } /* L110: */ if (e != me) { pe[e] = -me; w[e] = 0; } } /* L120: */ pme2 = pfree - 1; newmem = pfree - pme1; mem += newmem; } degree[me] = degme; pe[me] = pme1; len[me] = pme2 - pme1 + 1; if (wflg + n <= wflg) { for (x = 1; x <= n; x ++) { if (w[x] != 0) w[x] = 1; } /* L130: */ wflg = 2; } for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; eln = elen[i]; if (eln > 0) { nvi = - nv[i]; wnvi = wflg - nvi; for (p = pe[i]; p < pe[i] + eln; p ++) { e = iw[p]; we = w[e]; if (we >= wflg) we -= nvi; else if (we != 0) we = degree[e] + wnvi; w[e] = we; } /* L140: */ } } /* L150: */ for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; p1 = pe[i]; p2 = p1 + elen[i] - 1; pn = p1; hash = 0; deg = 0; for (p = p1; p <= p2; p ++) { e = iw[p]; dext = w[e] - wflg; if (dext > 0) { deg += dext; iw[pn ++] = e; hash += e; } else if (dext == 0) { pe[e] = -me; w[e] = 0; } } /* L160: */ elen[i] = pn - p1 + 1; p3 = pn; for (p = p2 + 1; p < p1 + len[i]; p ++) { j = iw[p]; nvj = nv[j]; if (nvj > 0) { deg += nvj; iw[pn ++] = j; hash += j; } } /* L170: */ if (degree[i] == (n + 1)) deg = n + 1; if (deg == 0) { pe[i] = - me; nvi = - nv[i]; degme -= nvi; nvpiv += nvi; nel += nvi; nv[i] = 0; elen[i] = 0; } else { if (degree[i] != (n + 1)) { /* Patch v6 05/01/99 */ deg = MIN (nleft, deg); /* Patch v5 12/12/98 */ degree[i] = MIN (degree[i], deg); } iw[pn] = iw[p3]; iw[p3] = iw[p1]; iw[p1] = me; len[i] = pn - p1 + 1; if (deg <= n) { hash = (hash % hmod) + 1; j = head[hash]; if (j <= 0) { next[i] = - j; head[hash] = - i; } else { next[i] = last[j]; last[j] = i; } last[i] = hash; } } } /* L180: */ degree[me] = degme; dmax = MAX (dmax, degme); wflg += dmax; if (wflg + n <= wflg) { for (x = 1; x <= n; x ++) { if (w[x] != 0) w[x] = 1; } wflg = 2; } for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; if ((nv[i] < 0) && (degree[i] <= n)) { hash = last[i]; j = head[hash]; if (j == 0) continue; if (j < 0) { i = - j; head[hash] = 0; } else { i = last[j]; last[j] = 0; } if (i == 0) continue; L200: /* WHILE LOOP: */ if (next[i] != 0) { ln = len[i]; eln = elen[i]; for (p = pe[i] + 1; p < pe[i] + ln; p ++) w[iw[p]] = wflg; jlast = i; j = next[i]; L220: /* WHILE LOOP: */ if (j != 0) { if (len[j] != ln) goto L240; if (elen[j] != eln) goto L240; for (p = pe[j] + 1; p < pe[j] + ln; p ++) { if (w[iw[p]] != wflg) goto L240; } /* L230: */ pe[j] = -i; nv[i] += nv[j]; nv[j] = 0; elen[j] = 0; j = next[j]; next[jlast] = j; goto L220; L240: jlast = j; j = next[j]; goto L220; } wflg ++; i = next[i]; if (i != 0) goto L200; } } } p = pme1; nleft = n - nel; for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; nvi = - nv[i]; if (nvi > 0) { nv[i] = nvi; if (degree[i] <= n) { deg = MIN (degree[i] + degme, nleft) - nvi; inext = head[deg]; if (inext != 0) last[inext] = i; next[i] = inext; last[i] = 0; head[deg] = i; mindeg = MIN (mindeg, deg); degree[i] = deg; } iw[p ++] = i; } } /* L260: */ nv[me] = nvpiv + degme; len[me] = p - pme1; if (len[me] == 0) { pe[me] = 0; w[me] = 0; } if (newmem != 0) { pfree = p; mem = mem - newmem + len[me]; } } /* END WHILE (selecting pivots) */ if (nel < n) { /* Patch 12/12/98 (old: nreal < n) */ for (deg = mindeg; deg <= n; deg ++) { me = head[deg]; if (me > 0) break; } mindeg = deg; nelme = - (nel + 1); for (x = 1; x <= n; x ++) { if ((pe[x] > 0) && (elen[x] < 0)) pe[x] = - me; else if (degree[x] == (n + 1)) { nel += nv[x]; pe[x] = - me; elen[x] = 0; nv[x] = 0; /* Patch 12/12/98 (old: n + 1) */ } } elen[me] = nelme; nv[me] = n - nreal; /* Patch 12/12/98 (old: n + 1) */ pe[me] = 0; if (nel != n) { /* Error 2 */ *ncmpa = - (n + 1); return; } } for (i = 1; i <= n; i ++) { if (elen[i] == 0) { j = - pe[i]; while (elen[j] >= 0) /* L270: */ j = - pe[j]; e = j; k = - elen[e]; j = i; while (elen[j] >= 0) { /* L280: */ jnext = - pe[j]; pe[j] = - e; if (elen[j] == 0) elen[j] = k ++; j = jnext; } elen[e] = - k; } } /* L290: */ #ifdef DEAD_CODE /* No need for permutations */ for (i = 1; i <= n; i ++) { /* Patch 19/10/98 */ k = abs (elen[i]); last[k] = i; elen[i] = k; } /* L300: */ #endif /* DEAD_CODE */ } scotch_6.0.9/src/libscotch/library.h0000644000302600021200000006117613560013331017641 0ustar pelegrinpelegrin/* Copyright 2004,2007-2012,2014-2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Jun-Ho HER (v6.0) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Declaration file for the LibScotch **/ /** static mapping and sparse matrix block **/ /** ordering library. **/ /** **/ /** DATES : # Version 3.2 : from : 07 sep 1996 **/ /** to 22 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to 31 may 1999 **/ /** # Version 3.4 : from : 10 oct 1999 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 20 dec 2005 **/ /** # Version 5.0 : from : 26 apr 2006 **/ /** to : 20 feb 2008 **/ /** # Version 5.1 : from : 30 nov 2007 **/ /** to : 07 aug 2011 **/ /** # Version 6.0 : from : 12 sep 2008 **/ /** to 24 sep 2019 **/ /** **/ /************************************************************/ #ifndef SCOTCH_H #define SCOTCH_H /* ** The type and structure definitions. */ /*+ Integer type. +*/ typedef DUMMYIDX SCOTCH_Idx; typedef DUMMYINT SCOTCH_Num; #define SCOTCH_NUMMAX DUMMYMAXINT #define SCOTCH_NUMSTRING DUMMYNUMSTRING /*+ Version flags. +*/ #if ((! defined SCOTCH_H_UNIQUE) && (! defined SCOTCH_RENAME_ALL)) #define SCOTCH_VERSION DUMMYVERSION #define SCOTCH_RELEASE DUMMYRELEASE #define SCOTCH_PATCHLEVEL DUMMYPATCHLEVEL #else /* ((! defined SCOTCH_H_UNIQUE) && (! defined SCOTCH_RENAME_ALL)) */ #if ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) #ifndef SCOTCH_WARNING_RENAME_UNSAFE #define SCOTCH_WARNING_RENAME_UNSAFE #endif /* SCOTCH_WARNING_RENAME_UNSAFE */ #endif /* ((SCOTCH_VERSION != DUMMYVERSION) || (SCOTCH_RELEASE != DUMMYRELEASE) || (SCOTCH_PATCHLEVEL != DUMMYPATCHLEVEL)) */ #endif /* SCOTCH_H_UNIQUE */ /*+ Coarsening flags +*/ #ifndef SCOTCH_COARSENNONE #define SCOTCH_COARSENNONE 0x0000 #define SCOTCH_COARSENFOLD 0x0100 #define SCOTCH_COARSENFOLDDUP 0x0300 #define SCOTCH_COARSENNOMERGE 0x4000 #endif /* SCOTCH_COARSENNONE */ /*+ Strategy string parametrization values +*/ #ifndef SCOTCH_STRATDEFAULT #define SCOTCH_STRATDEFAULT 0x00000 #define SCOTCH_STRATQUALITY 0x00001 #define SCOTCH_STRATSPEED 0x00002 #define SCOTCH_STRATBALANCE 0x00004 #define SCOTCH_STRATSAFETY 0x00008 #define SCOTCH_STRATSCALABILITY 0x00010 #define SCOTCH_STRATRECURSIVE 0x00100 #define SCOTCH_STRATREMAP 0x00200 #define SCOTCH_STRATLEVELMAX 0x01000 #define SCOTCH_STRATLEVELMIN 0x02000 #define SCOTCH_STRATLEAFSIMPLE 0x04000 #define SCOTCH_STRATSEPASIMPLE 0x08000 #define SCOTCH_STRATDISCONNECTED 0x10000 #endif /* SCOTCH_STRATDEFAULT */ /*+ Opaque objects. The dummy sizes of these objects, computed at compile-time by program "dummysizes", are given as double values for proper padding +*/ #ifndef SCOTCH_H_UNIQUE typedef unsigned char SCOTCH_GraphPart2; #endif /* SCOTCH_H_UNIQUE */ typedef struct { double dummy[DUMMYSIZEARCH]; } SCOTCH_Arch; typedef struct { double dummy[DUMMYSIZEARCHDOM]; } SCOTCH_ArchDom; typedef struct { double dummy[DUMMYSIZEGEOM]; } SCOTCH_Geom; typedef struct { double dummy[DUMMYSIZEGRAPH]; } SCOTCH_Graph; typedef struct { double dummy[DUMMYSIZEMESH]; } SCOTCH_Mesh; typedef struct { double dummy[DUMMYSIZEMAP]; } SCOTCH_Mapping; typedef struct { double dummy[DUMMYSIZEORDER]; } SCOTCH_Ordering; typedef struct { double dummy[DUMMYSIZESTRAT]; } SCOTCH_Strat; /* ** The function prototypes. */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ SCOTCH_Arch * SCOTCH_archAlloc (void); int SCOTCH_archInit (SCOTCH_Arch * const); void SCOTCH_archExit (SCOTCH_Arch * const); int SCOTCH_archLoad (SCOTCH_Arch * const, FILE * const); int SCOTCH_archSave (const SCOTCH_Arch * const, FILE * const); int SCOTCH_archBuild (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const); int SCOTCH_archBuild0 (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const); int SCOTCH_archBuild2 (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const); char * SCOTCH_archName (const SCOTCH_Arch * const); SCOTCH_Num SCOTCH_archSize (const SCOTCH_Arch * const); int SCOTCH_archVar (const SCOTCH_Arch * const); int SCOTCH_archCmplt (SCOTCH_Arch * const, const SCOTCH_Num); int SCOTCH_archCmpltw (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_archHcub (SCOTCH_Arch * const, const SCOTCH_Num); int SCOTCH_archMesh2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archMesh3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archMeshX (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_archSub (SCOTCH_Arch * const, SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_archTleaf (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const); int SCOTCH_archTorus2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archTorus3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_archTorusX (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_archVcmplt (SCOTCH_Arch * const); int SCOTCH_archVhcub (SCOTCH_Arch * const); SCOTCH_Num SCOTCH_archDomNum (SCOTCH_Arch * const, const SCOTCH_ArchDom * const); int SCOTCH_archDomTerm (SCOTCH_Arch * const, SCOTCH_ArchDom * const, const SCOTCH_Num); SCOTCH_Num SCOTCH_archDomSize (SCOTCH_Arch * const, const SCOTCH_ArchDom * const); SCOTCH_Num SCOTCH_archDomWght (SCOTCH_Arch * const, const SCOTCH_ArchDom * const); SCOTCH_Num SCOTCH_archDomDist (SCOTCH_Arch * const, const SCOTCH_ArchDom * const, const SCOTCH_ArchDom * const); int SCOTCH_archDomFrst (SCOTCH_Arch * const, SCOTCH_ArchDom * const); int SCOTCH_archDomBipart (SCOTCH_Arch * const, const SCOTCH_ArchDom * const, SCOTCH_ArchDom * const, SCOTCH_ArchDom * const); void SCOTCH_errorProg (const char * const); void SCOTCH_errorPrint (const char * const, ...); void SCOTCH_errorPrintW (const char * const, ...); SCOTCH_Geom * SCOTCH_geomAlloc (void); int SCOTCH_geomInit (SCOTCH_Geom * const); void SCOTCH_geomExit (SCOTCH_Geom * const); void SCOTCH_geomData (const SCOTCH_Geom * const, SCOTCH_Num * const, double ** const); SCOTCH_Graph * SCOTCH_graphAlloc (void); int SCOTCH_graphInit (SCOTCH_Graph * const); void SCOTCH_graphExit (SCOTCH_Graph * const); void SCOTCH_graphFree (SCOTCH_Graph * const); int SCOTCH_graphLoad (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num); int SCOTCH_graphSave (const SCOTCH_Graph * const, FILE * const); int SCOTCH_graphBuild (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const); SCOTCH_Num SCOTCH_graphBase (SCOTCH_Graph * const, const SCOTCH_Num); int SCOTCH_graphCheck (const SCOTCH_Graph * const); int SCOTCH_graphCoarsen (const SCOTCH_Graph * const, const SCOTCH_Num, const double, const SCOTCH_Num, SCOTCH_Graph * const, SCOTCH_Num * const); int SCOTCH_graphCoarsenMatch (const SCOTCH_Graph * const, SCOTCH_Num * const, const double, const SCOTCH_Num, SCOTCH_Num * const); int SCOTCH_graphCoarsenBuild (const SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Graph * const, SCOTCH_Num * const); int SCOTCH_graphColor (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num); void SCOTCH_graphData (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const); void SCOTCH_graphSize (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_graphStat (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const); SCOTCH_Num SCOTCH_graphDiamPV (const SCOTCH_Graph * const); int SCOTCH_graphGeomLoadChac (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomLoadHabo (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomLoadMmkt (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomLoadScot (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomSaveChac (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomSaveMmkt (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphGeomSaveScot (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const); int SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const); int SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const); void SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const); int SCOTCH_graphMapLoad (const SCOTCH_Graph * const, SCOTCH_Mapping * const, FILE * const); int SCOTCH_graphMapSave (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const); int SCOTCH_graphMapCompute (SCOTCH_Graph * const, SCOTCH_Mapping * const, SCOTCH_Strat * const); int SCOTCH_graphMapFixedCompute (SCOTCH_Graph * const, SCOTCH_Mapping * const, SCOTCH_Strat * const); int SCOTCH_graphMap (SCOTCH_Graph * const, const SCOTCH_Arch * const, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphMapFixed (SCOTCH_Graph * const, const SCOTCH_Arch * const, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphMapView (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const); int SCOTCH_graphPart (SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphPartFixed (SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphPartOvl (SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphPartOvlView (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, FILE * const); int SCOTCH_graphRemap (SCOTCH_Graph * const, const SCOTCH_Arch * const, SCOTCH_Num *, const double, const SCOTCH_Num *, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphRemapFixed (SCOTCH_Graph * const, const SCOTCH_Arch * const, SCOTCH_Num *, const double, const SCOTCH_Num *, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphRemapCompute (SCOTCH_Graph * const, SCOTCH_Mapping * const, SCOTCH_Mapping * const, const double, const SCOTCH_Num *, SCOTCH_Strat * const); int SCOTCH_graphRemapFixedCompute (SCOTCH_Graph * const, SCOTCH_Mapping * const, SCOTCH_Mapping * const, const double, const SCOTCH_Num *, SCOTCH_Strat * const); int SCOTCH_graphRemapView (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, const SCOTCH_Mapping * const, const double, SCOTCH_Num *, FILE * const); int SCOTCH_graphRemapViewRaw (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, const SCOTCH_Mapping * const, const double, SCOTCH_Num *, FILE * const); int SCOTCH_graphRepart (SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Num * const, const double, const SCOTCH_Num *, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphRepartFixed (SCOTCH_Graph * const, const SCOTCH_Num, SCOTCH_Num * const, const double, const SCOTCH_Num *, SCOTCH_Strat * const, SCOTCH_Num * const); int SCOTCH_graphTabLoad (const SCOTCH_Graph * const, SCOTCH_Num * const, FILE * const); int SCOTCH_graphTabSave (const SCOTCH_Graph * const, const SCOTCH_Num * const, FILE * const); int SCOTCH_graphOrderInit (const SCOTCH_Graph * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_graphOrderExit (const SCOTCH_Graph * const, SCOTCH_Ordering * const); int SCOTCH_graphOrderLoad (const SCOTCH_Graph * const, SCOTCH_Ordering * const, FILE * const); int SCOTCH_graphOrderSave (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_graphOrderSaveMap (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_graphOrderSaveTree (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_graphOrderCompute (SCOTCH_Graph * const, SCOTCH_Ordering * const, SCOTCH_Strat * const); int SCOTCH_graphOrderComputeList (SCOTCH_Graph * const, SCOTCH_Ordering * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Strat * const); int SCOTCH_graphOrderFactor (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, SCOTCH_Graph * const); int SCOTCH_graphOrderView (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_graphOrder (SCOTCH_Graph * const, SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_graphOrderList (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_graphOrderCheck (const SCOTCH_Graph * const, const SCOTCH_Ordering * const); SCOTCH_Mapping * SCOTCH_mapAlloc (void); void SCOTCH_memFree (void * const); SCOTCH_Idx SCOTCH_memCur (void); SCOTCH_Idx SCOTCH_memMax (void); int SCOTCH_meshInit (SCOTCH_Mesh * const); void SCOTCH_meshExit (SCOTCH_Mesh * const); int SCOTCH_meshLoad (SCOTCH_Mesh * const, FILE * const, const SCOTCH_Num); int SCOTCH_meshSave (const SCOTCH_Mesh * const, FILE * const); int SCOTCH_meshBuild (SCOTCH_Mesh * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const); int SCOTCH_meshCheck (const SCOTCH_Mesh * const); void SCOTCH_meshSize (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_meshData (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num * const); void SCOTCH_meshStat (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const); int SCOTCH_meshGraph (const SCOTCH_Mesh * const, SCOTCH_Graph * const); int SCOTCH_meshGeomLoadHabo (SCOTCH_Mesh * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_meshGeomLoadScot (SCOTCH_Mesh * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_meshGeomSaveScot (const SCOTCH_Mesh * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); int SCOTCH_meshOrderInit (const SCOTCH_Mesh * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); void SCOTCH_meshOrderExit (const SCOTCH_Mesh * const, SCOTCH_Ordering * const); int SCOTCH_meshOrderSave (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_meshOrderSaveMap (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_meshOrderSaveTree (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const); int SCOTCH_meshOrderCompute (SCOTCH_Mesh * const, SCOTCH_Ordering * const, SCOTCH_Strat * const); int SCOTCH_meshOrderComputeList (SCOTCH_Mesh * const, SCOTCH_Ordering * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Strat * const); int SCOTCH_meshOrder (SCOTCH_Mesh * const, SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_meshOrderList (SCOTCH_Mesh * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const); int SCOTCH_meshOrderCheck (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const); int SCOTCH_numSizeof (void); SCOTCH_Ordering * SCOTCH_orderAlloc (void); int SCOTCH_randomLoad (FILE *); int SCOTCH_randomSave (FILE *); void SCOTCH_randomProc (int); void SCOTCH_randomReset (void); void SCOTCH_randomSeed (SCOTCH_Num); SCOTCH_Strat * SCOTCH_stratAlloc (void); int SCOTCH_stratInit (SCOTCH_Strat * const); void SCOTCH_stratExit (SCOTCH_Strat * const); void SCOTCH_stratFree (SCOTCH_Strat * const); int SCOTCH_stratSave (const SCOTCH_Strat * const, FILE * const); int SCOTCH_stratGraphBipart (SCOTCH_Strat * const, const char * const); int SCOTCH_stratGraphMap (SCOTCH_Strat * const, const char * const); int SCOTCH_stratGraphMapBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const double); int SCOTCH_stratGraphClusterBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const double, const double); int SCOTCH_stratGraphPartOvl (SCOTCH_Strat * const, const char * const); int SCOTCH_stratGraphPartOvlBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const double); int SCOTCH_stratGraphOrder (SCOTCH_Strat * const, const char * const); int SCOTCH_stratGraphOrderBuild (SCOTCH_Strat * const, const SCOTCH_Num, const SCOTCH_Num, const double); int SCOTCH_stratMeshOrder (SCOTCH_Strat * const, const char * const); int SCOTCH_stratMeshOrderBuild (SCOTCH_Strat * const, const SCOTCH_Num, const double); void SCOTCH_version (int * const, int * const, int * const); #ifdef __cplusplus } #endif /* __cplusplus */ #define SCOTCH_H_UNIQUE /* For symbols that need only be defined once */ #endif /* SCOTCH_H */ scotch_6.0.9/src/libscotch/hdgraph_order_st.h0000644000302600021200000000664213465315041021517 0ustar pelegrinpelegrin/* Copyright 2007,2008,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data **/ /** declarations for the main distributed **/ /** graph ordering routine. **/ /** **/ /** DATES : # Version 5.0 : from : 14 apr 2006 **/ /** to : 14 apr 2006 **/ /** # Version 5.1 : from : 11 nov 2008 **/ /** to : 11 nov 2008 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum HdgraphOrderStMethodType_ { HDGRAPHORDERSTMETHND = 0, /*+ Nested Dissection +*/ HDGRAPHORDERSTMETHSI, /*+ Simple +*/ HDGRAPHORDERSTMETHSQ, /*+ Sequential method +*/ HDGRAPHORDERSTMETHNBR /*+ Number of methods +*/ } HdgraphOrderStMethodType; /* ** The external declarations. */ extern StratTab hdgraphorderststratab; /* ** The function prototypes. */ int hdgraphOrderSt (const Hdgraph * restrict const, DorderCblk * restrict const, const Strat * const); scotch_6.0.9/src/libscotch/bdgraph_bipart_zr.c0000644000302600021200000000663213560005346021656 0ustar pelegrinpelegrin/* Copyright 2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_zr.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : This module moves all of the vertices **/ /** to the first subdomain of the **/ /** bipartition. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 26 oct 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define BDGRAPH_BIPART_ZR #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "bdgraph.h" #include "bdgraph_bipart_zr.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine moves all of the graph vertices ** to the first part of the partition. ** It returns: ** - 0 : if the bipartitioning could be computed. ** - !0 : on error. */ int bdgraphBipartZr ( Bdgraph * const grafptr) /*+ Active graph +*/ { if (grafptr->compglbload0 != grafptr->s.veloglbsum) /* If not all vertices already in part zero */ bdgraphZero (grafptr); #ifdef SCOTCH_DEBUG_BDGRAPH2 if (bdgraphCheck (grafptr) != 0) { errorPrint ("bdgraphBipartZr: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_BDGRAPH2 */ return (0); } scotch_6.0.9/src/libscotch/wgraph_part_rb.h0000644000302600021200000000736313465315041021203 0ustar pelegrinpelegrin/* Copyright 2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_rb.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the vertex overlapped graph partit- **/ /** ioning based on recursive bipartitioni- **/ /** ng approach. **/ /** **/ /** DATES : # Version 6.0 : from : 16 mar 2010 **/ /** to 31 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kgraph_map_rb_part.h for the vertex **/ /** overlapped graph partitioning. **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct WgraphPartRbParam_ { Strat * stratptr; /*+ Bipartitioning strategy used +*/ } WgraphPartRbParam; /*+ This structure holds global data. +*/ typedef struct WgraphPartRbData_ { const Graph * grafptr; /*+ Pointer to top-level graph +*/ Gnum * frontab; /*+ Pointer to top-level frontier array +*/ Gnum fronnbr; /*+ Current number of frontier vertices +*/ Mapping mappdat; /*+ Current state of mapping +*/ Strat * stratptr; /*+ Bipartitioning strategy used +*/ } WgraphPartRbData; /* ** The function prototypes. */ int wgraphPartRb (Wgraph * restrict const, const WgraphPartRbParam * restrict const); scotch_6.0.9/src/libscotch/bgraph_bipart_gp.h0000644000302600021200000001070113560005346021462 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_gp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Gibbs, Poole, and Stockmeyer **/ /** bipartitioning algorithm. **/ /** **/ /** DATES : # Version 2.0 : from : 06 jun 1994 **/ /** to 28 oct 1994 **/ /** # Version 3.2 : from : 21 sep 1996 **/ /** to 13 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 01 nov 2003 **/ /** to 20 aug 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct BgraphBipartGpParam_ { INT passnbr; /*+ Number of passes to do +*/ } BgraphBipartGpParam; /*+ Complementary vertex structure. +*/ typedef struct BgraphBipartGpVertex_ { Gnum passnum; /*+ Number of pass when vertex selected +*/ Gnum distval; /*+ Current distance from diameter vertex +*/ } BgraphBipartGpVertex; /*+ Neighbor queue. +*/ typedef struct BgraphBipartGpQueue_ { Gnum headnum; /*+ Head of distance queue +*/ Gnum tailnum; /*+ Tail of distance queue +*/ Gnum * queutab; /*+ Array of queue elements +*/ } BgraphBipartGpQueue; /* ** The function prototypes. */ int bgraphBipartGp (Bgraph * restrict const, const BgraphBipartGpParam * const); /* ** The macro definitions. */ #define bgraphBipartGpQueueFlush(queue) ((queue)->headnum = (queue)->tailnum = 0) #define bgraphBipartGpQueueEmpty(queue) ((queue)->headnum <= (queue)->tailnum) #define bgraphBipartGpQueuePut(queue,vnum) ((queue)->queutab[(queue)->headnum ++] = (vnum)) #define bgraphBipartGpQueueGet(queue) ((queue)->queutab[(queue)->tailnum ++]) scotch_6.0.9/src/libscotch/mapping_io.h0000644000302600021200000001120113303015264020301 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mapping_io.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the declarations for **/ /** the mapping handling routines. **/ /** **/ /** DATES : # Version 0.0 : from : 15 dec 1992 **/ /** to 01 apr 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 02 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 04 jul 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 06 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 13 nov 2005 **/ /** # Version 5.0 : from : 13 sep 2006 **/ /** to 13 sep 2006 **/ /** **/ /************************************************************/ #define MAPPING_H /* ** The defines. */ /*+ Ordering option flags. +*/ #define MAPNONE 0x0000 /* No options set */ #define MAPFREEPART 0x0001 /* Free partition array */ /* ** The type definitions. */ /*+ This structure defines a source label to target label mapping element. +*/ typedef struct MappingLoadMap_ { Gnum slblnum; /*+ Source graph vertex label: FIRST +*/ Gnum tlblnum; /*+ Target architecture vertex label +*/ } MappingLoadMap; /*+ The source graph sort structure, used to sort vertices by increasing label value. +*/ typedef struct MappingLoadPerm { Gnum vlblnum; /*+ Vertex label: FIRST +*/ Gnum vertnum; /*+ Vertex number +*/ } MappingLoadPerm; scotch_6.0.9/src/libscotch/library_graph_map_view.c0000644000302600021200000007660013560013261022704 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2015,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_map_view.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module is the API for the mapping **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 19 aug 1998 **/ /** to 20 aug 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 30 mar 1999 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to 01 nov 2001 **/ /** # Version 4.0 : from : 13 jan 2004 **/ /** to 30 nov 2006 **/ /** # Version 5.0 : from : 04 feb 2007 **/ /** to 03 apr 2008 **/ /** # Version 5.1 : from : 27 jul 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #define LIBRARY_GRAPH_MAP_VIEW #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "kgraph.h" #include "library_mapping.h" #include "library_graph_map_view.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the mapping routines. */ /* */ /************************************/ /*+ This routine computes the pseudo-diameter of *** the given part. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ static Gnum graphMapView3 ( const Graph * const grafptr, /*+ Graph +*/ const Anum * const parttax, /*+ Part array +*/ const Anum partval) /*+ Part value +*/ { GraphMapViewQueue queudat; /* Neighbor queue */ GraphMapViewVertex * restrict vexxtax; /* Based access to vexxtab */ Gnum rootnum; /* Number of current root vertex */ Gnum vertdist; /* Vertex distance */ int diamflag; /* Flag set if diameter changed */ Gnum diambase; /* Base distance for connected components */ Gnum diamdist; /* Current diameter distance */ Gnum passnum; /* Pass number */ const Gnum * restrict verttax; /* Based access to vertex array */ const Gnum * restrict vendtax; /* Based access to vertex end array */ const Gnum * restrict edgetax; if (memAllocGroup ((void **) (void *) &queudat.qtab, (size_t) (grafptr->vertnbr * sizeof (Gnum)), &vexxtax, (size_t) (grafptr->vertnbr * sizeof (GraphMapViewVertex)), NULL) == NULL) { errorPrint ("graphMapView3: out of memory"); return (-1); } memSet (vexxtax, 0, grafptr->vertnbr * sizeof (GraphMapViewVertex)); /* Initialize pass numbers */ edgetax = grafptr->edgetax; verttax = grafptr->verttax; vendtax = grafptr->vendtax; vexxtax -= grafptr->baseval; diamdist = 0; /* Start distances from zero */ for (passnum = 1, rootnum = grafptr->baseval; ; passnum ++) { /* For all connected components */ Gnum diamnum; /* Vertex which achieves diameter */ while ((rootnum < grafptr->vertnbr) && ((vexxtax[rootnum].passnum != 0) || /* Find first unallocated vertex */ (parttax[rootnum] != partval))) rootnum ++; if (rootnum >= grafptr->vertnbr) /* Exit if all of graph processed */ break; diambase = ++ diamdist; /* Start from previous distance */ diamnum = rootnum; /* Start from found root */ for (diamflag = 1; diamflag -- != 0; passnum ++) { /* Loop if modifications */ graphMapViewQueueFlush (&queudat); /* Flush vertex queue */ graphMapViewQueuePut (&queudat, diamnum); /* Start from diameter vertex */ vexxtax[diamnum].passnum = passnum; /* It has been enqueued */ vexxtax[diamnum].vertdist = diambase; /* It is at base distance */ do { /* Loop on vertices in queue */ Gnum vertnum; Gnum edgenum; vertnum = graphMapViewQueueGet (&queudat); /* Get vertex from queue */ vertdist = vexxtax[vertnum].vertdist; /* Get vertex distance */ if ((vertdist > diamdist) || /* If vertex increases diameter */ ((vertdist == diamdist) && /* Or is at diameter distance */ ((vendtax[vertnum] - verttax[vertnum]) < /* With smaller degree */ (vendtax[diamnum] - verttax[diamnum])))) { diamnum = vertnum; /* Set it as new diameter vertex */ diamdist = vertdist; diamflag = 1; } vertdist ++; /* Set neighbor distance */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; if ((vexxtax[vertend].passnum < passnum) && /* If vertex not queued yet */ (parttax[vertend] == partval)) { /* And of proper part */ graphMapViewQueuePut (&queudat, vertend); /* Enqueue neighbor vertex */ vexxtax[vertend].passnum = passnum; vexxtax[vertend].vertdist = vertdist; } } } while (! graphMapViewQueueEmpty (&queudat)); /* As long as queue is not empty */ } } memFree (queudat.qtab); /* Free group leader */ return (diamdist); } /*+ This routine writes standard or raw *** mapping or remapping statistics to *** the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ static int graphMapView2 ( const SCOTCH_Graph * const libgrafptr, /*+ Ordered graph +*/ const SCOTCH_Mapping * const libmappptr, /*+ Computed mapping +*/ const SCOTCH_Mapping * const libmapoptr, /*+ Old mapping (equal to NULL if no repartitioning) +*/ const double emraval, /*+ Edge migration ratio +*/ SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ Gnum flagval, /*+ 0: standard output, !0: raw output for curves +*/ FILE * const stream) /*+ Output stream +*/ { const Graph * restrict grafptr; const Arch * restrict archptr; LibMapping * restrict lmapptr; LibMapping * restrict lmaoptr; Anum * restrict parttax; /* Part array */ Anum * restrict parotax; /* Old part array */ MappingSort * restrict domntab; /* Pointer to domain sort array */ ArchDom domnfrst; /* Largest domain in architecture */ ArchDom domnorg; /* Vertex domain */ ArchDom domnend; /* End domain */ ArchDom domnold; /* Vertex old domain */ Anum tgtnbr; /* Number of processors in target topology */ Anum mapnbr; /* Number of processors effectively used */ Anum mapnum; double mapavg; /* Average mapping weight */ Gnum mapmin; Gnum mapmax; Gnum mapsum; /* (Partial) sum of vertex loads */ double mapdlt; double mapmmy; /* Maximum / average ratio */ Anum * restrict nghbtab; /* Table storing neighbors of current subdomain */ Anum nghbnbr; Anum nghbmin; Anum nghbmax; Anum nghbsum; Gnum vertnum; Gnum veloval; Gnum edloval; Gnum commdist[256]; /* Array of load distribution */ Gnum commload; /* Total edge load (edge sum) */ Gnum commdilat; /* Total edge dilation */ Gnum commexpan; /* Total edge expansion */ Anum distmax; Anum distval; Gnum diammin; Gnum diammax; Gnum diamsum; Gnum migrnbr; double migrloadavg; double migrdistavg; double migrcostsum; Gnum * restrict vmlotax; const Gnum * restrict const verttax = ((Graph *) libgrafptr)->verttax; const Gnum * restrict const vendtax = ((Graph *) libgrafptr)->vendtax; const Gnum * restrict const velotax = ((Graph *) libgrafptr)->velotax; const Gnum * restrict const edgetax = ((Graph *) libgrafptr)->edgetax; const Gnum * restrict const edlotax = ((Graph *) libgrafptr)->edlotax; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Mapping) < sizeof (LibMapping)) { errorPrint (STRINGIFY (SCOTCH_graphMapView) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ lmapptr = (LibMapping *) libmappptr; grafptr = lmapptr->grafptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if ((Graph *) libgrafptr != grafptr) { errorPrint (STRINGIFY (SCOTCH_graphMapView) ": input graph must be the same as mapping graph"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ if ((grafptr->vertnbr == 0) || /* Return if nothing to do */ (grafptr->edgenbr == 0)) return (0); if (libmapoptr != NULL) { lmaoptr = (LibMapping *) libmapoptr; parotax = lmaoptr->parttab; } else { lmaoptr = NULL; parotax = NULL; } if (vmlotab != NULL) vmlotax = (Gnum *) vmlotab - grafptr->baseval; else vmlotax = NULL; #ifdef SCOTCH_DEBUG_LIBRARY1 if (lmapptr->parttab == NULL) { errorPrint (STRINGIFY (SCOTCH_graphMapView) ": the mapping given in input must contain a valid partition array"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ archptr = lmapptr->archptr; parttax = lmapptr->parttab; if (memAllocGroup ((void **) (void *) &domntab, (size_t) ((grafptr->vertnbr + 1) * sizeof (MappingSort)), &nghbtab, (size_t) ((grafptr->vertnbr + 2) * sizeof (Anum)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphMapView) ": out of memory"); return (1); } for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { domntab[vertnum].labl = parttax[vertnum]; /* Un-based array at this stage */ domntab[vertnum].peri = vertnum + grafptr->baseval; /* Build inverse permutation */ } parttax -= grafptr->baseval; domntab[grafptr->vertnbr].labl = ARCHDOMNOTTERM; /* TRICK: avoid testing (i+1) */ domntab[grafptr->vertnbr].peri = ~0; /* Prevent Valgrind from yelling */ intSort2asc2 (domntab, grafptr->vertnbr); /* Sort domain label array by increasing target labels */ archDomFrst (archptr, &domnfrst); /* Get architecture domain */ tgtnbr = archDomSize (archptr, &domnfrst); /* Get architecture size */ mapsum = 0; mapnbr = 0; veloval = 1; /* Assume unweighted vertices */ for (vertnum = 0; domntab[vertnum].labl != ARCHDOMNOTTERM; vertnum ++) { parttax[domntab[vertnum].peri] = mapnbr; /* Build map of partition parts starting from 0 */ if (domntab[vertnum].labl != domntab[vertnum + 1].labl) /* TRICK: if new (or end) domain label */ mapnbr ++; if (velotax != NULL) veloval = velotax[domntab[vertnum].peri]; mapsum += veloval; } mapavg = (mapnbr == 0) ? 0.0L : (double) mapsum / (double) mapnbr; mapsum = 0; mapmin = GNUMMAX; mapmax = 0; mapdlt = 0.0L; for (vertnum = 0; domntab[vertnum].labl != ARCHDOMNOTTERM; vertnum ++) { if (velotax != NULL) veloval = velotax[domntab[vertnum].peri]; mapsum += veloval; if (domntab[vertnum].labl != domntab[vertnum + 1].labl) { /* TRICK: if new (or end) domain label */ if (mapsum < mapmin) mapmin = mapsum; if (mapsum > mapmax) mapmax = mapsum; mapdlt += fabs ((double) mapsum - mapavg); mapsum = 0; /* Reset domain load sum */ } } mapdlt = (mapnbr != 0) ? mapdlt / ((double) mapnbr * mapavg) : 0.0L; mapmmy = (mapnbr != 0) ? (double) mapmax / (double) mapavg : 0.0L; if (mapnbr > tgtnbr) { /* If more subdomains than architecture size */ #ifdef SCOTCH_DEBUG_MAP2 if (! archVar (archptr)) { /* If not a variable-sized architecture */ errorPrint (STRINGIFY (SCOTCH_graphMapView) ": invalid mapping"); memFree (domntab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ tgtnbr = mapnbr; /* Assume it is a variable-sized architecture */ } if (flagval == 0) { fprintf (stream, "M\tProcessors " GNUMSTRING "/" GNUMSTRING " (%g)\n", (Gnum) mapnbr, (Gnum) tgtnbr, (double) mapnbr / (double) tgtnbr); fprintf (stream, "M\tTarget min=" GNUMSTRING "\tmax=" GNUMSTRING "\tavg=%g\tdlt=%g\tmaxavg=%g\n", (Gnum) mapmin, (Gnum) mapmax, mapavg, mapdlt, mapmmy); } nghbnbr = 0; nghbmin = ANUMMAX; nghbmax = 0; nghbsum = 0; nghbtab[0] = -2; for (vertnum = 0; domntab[vertnum].labl != ARCHDOMNOTTERM; vertnum ++) { Gnum edgenum; Gnum edgennd; Anum partnum; partnum = parttax[domntab[vertnum].peri]; for (edgenum = verttax[domntab[vertnum].peri], edgennd = vendtax[domntab[vertnum].peri]; edgenum < edgennd; edgenum ++) { Anum partend; partend = parttax[edgetax[edgenum]]; if ((partend != partnum) && /* If edge is not internal */ (partend != nghbtab[nghbnbr])) { /* And neighbor is not sole neighbor or has not just been found */ Anum partmin; Anum partmax; partmin = 0; partmax = nghbnbr; while ((partmax - partmin) > 1) { Anum partmed; partmed = (partmax + partmin) >> 1; if (nghbtab[partmed] > partend) partmax = partmed; else partmin = partmed; } if (nghbtab[partmin] == partend) /* If neighboring part found, skip to next neighbor */ continue; #ifdef SCOTCH_DEBUG_MAP2 if (nghbnbr >= (grafptr->vertnbr + 1)) { errorPrint (STRINGIFY (SCOTCH_graphMapView) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_MAP2 */ nghbnbr ++; for (partmax = nghbnbr; partmax > (partmin + 1); partmax --) nghbtab[partmax] = nghbtab[partmax - 1]; nghbtab[partmin + 1] = partend; /* Add new neighbor part in the right place */ } } if (domntab[vertnum].labl != domntab[vertnum + 1].labl) { /* TRICK: if new (or end) domain label */ if (nghbnbr < nghbmin) nghbmin = nghbnbr; if (nghbnbr > nghbmax) nghbmax = nghbnbr; nghbsum += nghbnbr; nghbnbr = 0; } } if (flagval == 0) { fprintf (stream, "M\tNeighbors min=" GNUMSTRING "\tmax=" GNUMSTRING "\tsum=" GNUMSTRING "\n", (Gnum) nghbmin, (Gnum) nghbmax, (Gnum) nghbsum); } memSet (commdist, 0, 256 * sizeof (Gnum)); /* Initialize the data */ commload = commdilat = commexpan = 0; edloval = 1; for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { Gnum edgenum; if (parttax[vertnum] == ~0) /* Skip unmapped vertices */ continue; for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { if (parttax[edgetax[edgenum]] == ~0) continue; archDomTerm (archptr, &domnorg, parttax[vertnum]); /* Get terminal domains */ archDomTerm (archptr, &domnend, parttax[edgetax[edgenum]]); distval = archDomDist (archptr, &domnorg, &domnend); if (edlotax != NULL) /* Get edge weight if any */ edloval = edlotax[edgenum]; commdist[(distval > 255) ? 255 : distval] += edloval; commload += edloval; commdilat += distval; commexpan += distval * edloval; } } if (lmaoptr != NULL) { migrnbr = 0; migrdistavg = 0; migrloadavg = 0; migrcostsum = 0; for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { if ((parttax[vertnum] == -1) || (parotax[vertnum] == -1)) continue; if (parotax[vertnum] != parttax[vertnum]) { migrnbr ++; archDomTerm (archptr, &domnorg, parotax[vertnum]); /* Get terminal domains */ archDomTerm (archptr, &domnold, parotax[vertnum]); migrdistavg += archDomDist (archptr, &domnorg, &domnold); migrloadavg += (grafptr->velotax == NULL) ? 1 : grafptr->velotax[vertnum]; migrcostsum += emraval * ((vmlotax != NULL) ? vmlotax[vertnum] : 1); } } if (migrnbr > 0) { migrdistavg /= migrnbr; migrloadavg /= migrnbr; } } if (flagval == 0) { fprintf (stream, "M\tCommDilat=%f\t(" GNUMSTRING ")\n", /* Print expansion parameters */ (double) commdilat / grafptr->edgenbr, (Gnum) (commdilat / 2)); fprintf (stream, "M\tCommExpan=%f\t(" GNUMSTRING ")\n", ((commload == 0) ? (double) 0.0L : (double) commexpan / (double) commload), (Gnum) (commexpan / 2)); fprintf (stream, "M\tCommCutSz=%f\t(" GNUMSTRING ")\n", ((commload == 0) ? (double) 0.0L : (double) (commload - commdist[0]) / (double) commload), (Gnum) ((commload - commdist[0]) / 2)); fprintf (stream, "M\tCommDelta=%f\n", (((double) commload * (double) commdilat) == 0.0L) ? (double) 0.0L : ((double) commexpan * (double) grafptr->edgenbr) / ((double) commload * (double) commdilat)); } for (distmax = 255; distmax != -1; distmax --) /* Find longest distance */ if (commdist[distmax] != 0) break; if (flagval == 0) { for (distval = 0; distval <= distmax; distval ++) /* Print distance histogram */ fprintf (stream, "M\tCommLoad[" ANUMSTRING "]=%f\n", (Anum) distval, (double) commdist[distval] / (double) commload); } diammin = GNUMMAX; diammax = 0; diamsum = 0; for (mapnum = 0; mapnum < mapnbr; mapnum ++) { Gnum diamval; diamval = graphMapView3 (grafptr, parttax, mapnum); diamsum += diamval; if (diamval < diammin) diammin = diamval; if (diamval > diammax) diammax = diamval; } if (flagval == 0) { fprintf (stream, "M\tPartDiam\tmin=" GNUMSTRING "\tmax=" GNUMSTRING "\tavg=%lf\n", (Gnum) diammin, (Gnum) diammax, (double) diamsum / (double) mapnbr); } if ((flagval == 0) && (lmaoptr != NULL)) { fprintf (stream, "M\tMigrNbr=" GNUMSTRING "(%lf %%)\n", migrnbr, (((double) migrnbr) / ((double) grafptr->vertnbr))*100); fprintf (stream, "M\tAvgMigrDist=%lf\n", (double) migrdistavg); fprintf (stream, "M\tAvgMigrLoad=%lf\n", (double) migrloadavg); fprintf (stream, "M\tMigrCost=%lf\n", (double) migrcostsum); } if (flagval != 0) { /* If raw output */ fprintf (stream, "" GNUMSTRING "\t" GNUMSTRING "\t" GNUMSTRING "\t" GNUMSTRING "\t%g\t%g\t%g\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf", /* Print standard data */ (Gnum) mapnbr, (Gnum) tgtnbr, (Gnum) mapmin, (Gnum) mapmax, mapavg, mapdlt, mapmmy, (double) commload, (double) commexpan, (double) commdilat / grafptr->edgenbr, ((commload == 0) ? (double) 0.0L : (double) commexpan / (double) commload), ((commload == 0) ? (double) 0.0L : (double) (commload - commdist[0]) / (double) commload), (((double) commload * (double) commdilat) == 0.0L) ? (double) 0.0L : ((double) commexpan * (double) grafptr->edgenbr) / ((double) commload * (double) commdilat)); if (lmaoptr != NULL) /* If we are doing repartitioning */ fprintf (stream, "\t%lf\t%lf\t%lf\t%lf\t%lf", /* Print repartitioning data */ (double) emraval, (double) migrnbr / (double) grafptr->vertnbr, (double) migrdistavg, (double) migrloadavg, (double) migrcostsum); fprintf (stream, "\n"); } memFree (domntab); /* Free group leader */ return (0); } /*+ This routine writes mapping statistics *** to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapView ( const SCOTCH_Graph * const libgrafptr, /*+ Ordered graph +*/ const SCOTCH_Mapping * const libmappptr, /*+ Computed mapping +*/ FILE * const stream) /*+ Output stream +*/ { return (graphMapView2 (libgrafptr, libmappptr, NULL, 0, NULL, 0, stream)); } /*+ This routine writes remapping statistics *** to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemapView ( const SCOTCH_Graph * const libgrafptr, /*+ Ordered graph +*/ const SCOTCH_Mapping * const libmappptr, /*+ Computed mapping +*/ const SCOTCH_Mapping * const libmapoptr, /*+ Old mapping (equal to NULL if no repartitioning) +*/ const double emraval, /*+ Edge migration ratio +*/ SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ FILE * const stream) /*+ Output stream +*/ { return (graphMapView2 (libgrafptr, libmappptr, libmapoptr, emraval, vmlotab, 0, stream)); } /*+ This routine writes raw mapping statistics *** to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphMapViewRaw ( const SCOTCH_Graph * const libgrafptr, /*+ Ordered graph +*/ const SCOTCH_Mapping * const libmappptr, /*+ Computed mapping +*/ FILE * const stream) /*+ Output stream +*/ { return (graphMapView2 (libgrafptr, libmappptr, NULL, 0, NULL, 1, stream)); } /*+ This routine writes raw remapping statistics *** to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_graphRemapViewRaw ( const SCOTCH_Graph * const libgrafptr, /*+ Ordered graph +*/ const SCOTCH_Mapping * const libmappptr, /*+ Computed mapping +*/ const SCOTCH_Mapping * const libmapoptr, /*+ Old mapping (equal to NULL if no repartitioning) +*/ const double emraval, /*+ Edge migration ratio +*/ SCOTCH_Num * vmlotab, /*+ Vertex migration cost array +*/ FILE * const stream) /*+ Output stream +*/ { return (graphMapView2 (libgrafptr, libmappptr, libmapoptr, emraval, vmlotab, 1, stream)); } /* This routine writes the characteristics ** of the given overlap partition to the ** given stream. ** It returns : ** - void : in case of success ** - exit : on error (because of errorPrint) */ int SCOTCH_graphPartOvlView ( const SCOTCH_Graph * restrict const libgrafptr, const SCOTCH_Num partnbr, const SCOTCH_Num * restrict const parttab, FILE * const stream) { const Gnum * restrict parttax; Gnum partnum; GraphMapViewList * restrict listtab; Gnum vertnum; Gnum fronnbr; Gnum fronload; Gnum * restrict compload; Gnum * restrict compsize; Gnum comploadsum; Gnum comploadmax; Gnum comploadmin; double comploadavg; const Graph * restrict const grafptr = (Graph *) libgrafptr; const Gnum * restrict const verttax = grafptr->verttax; const Gnum * restrict const velotax = grafptr->velotax; const Gnum * restrict const vendtax = grafptr->vendtax; const Gnum * restrict const edgetax = grafptr->edgetax; if (memAllocGroup ((void **) (void *) &compload, (size_t) (partnbr * sizeof (Gnum)), &compsize, (size_t) (partnbr * sizeof (Gnum)), &listtab, (size_t) ((partnbr + 1) * sizeof (GraphMapViewList)), NULL) == NULL) { errorPrint (STRINGIFY (SCOTCH_graphPartOvlView) ": out of memory"); } listtab ++; /* TRICK: Trim array so that listtab[-1] is valid */ memSet (listtab, ~0, partnbr * sizeof (GraphMapViewList)); /* Set vertex indices to ~0 */ memSet (compload, 0, partnbr * sizeof (Gnum)); memSet (compsize, 0, partnbr * sizeof (Gnum)); parttax = ((Gnum *) parttab) - grafptr->baseval; fronnbr = fronload = 0; for (vertnum = grafptr->baseval; vertnum < grafptr->vertnnd; vertnum ++) { Gnum partval; partval = parttax[vertnum]; if (partval >= 0) { compload[partval] += (velotax != NULL) ? velotax[vertnum] : 1; compsize[partval] ++; } else { /* Vertex is in separator */ Gnum listidx; /* Index of first neighbor part */ Gnum edgenum; Gnum veloval; veloval = (velotax != NULL) ? velotax[vertnum] : 1; fronnbr ++; /* Add vertex to frontier */ fronload += veloval; listidx = -1; /* No neighboring parts recorded yet */ listtab[-1].vertnum = vertnum; /* Separator neighbors will not be considered */ for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { /* Compute gain */ Gnum vertend; Gnum partend; vertend = edgetax[edgenum]; partend = parttax[vertend]; if (listtab[partend].vertnum != vertnum) { /* If part not yet considered */ listtab[partend].vertnum = vertnum; /* Link it in list of neighbors */ listtab[partend].nextidx = listidx; listidx = partend; } } while (listidx != -1) { /* For all neighboring parts found */ compload[listidx] += veloval; /* Add load of separator vertex to part */ compsize[listidx] ++; listidx = listtab[listidx].nextidx; } } } comploadsum = 0; for (partnum = 0; partnum < partnbr; partnum ++) comploadsum += compload[partnum]; comploadmax = 0; comploadmin = comploadsum; for (partnum = 0; partnum < partnbr; partnum ++) { if (compload[partnum] > comploadmax) comploadmax = compload[partnum]; if (compload[partnum] < comploadmin) comploadmin = compload[partnum]; } comploadavg = (double) comploadsum / (double) partnbr; fprintf (stream, "P\tsep=" GNUMSTRING "\n", (Gnum) fronload); fprintf (stream, "P\tmin=" GNUMSTRING "\tmax=" GNUMSTRING "\tavg=%g\n", (Gnum) comploadmin, (Gnum) comploadmax, (double) comploadavg); #if 0 /* TODO REMOVE */ for (partnum = 0; partnum < partnbr; partnum ++) fprintf (stream, "P\tload[" GNUMSTRING "]=" GNUMSTRING "\n", (Gnum) partnum, (Gnum) compload[partnum]); #endif fprintf (stream, "P\tmaxavg=%g\tminavg=%g\n", ((double) comploadmax / comploadavg), ((double) comploadmin / comploadavg)); memFree (compload); return (0); } scotch_6.0.9/src/libscotch/wgraph_part_ml.c0000644000302600021200000003214613470115365021203 0ustar pelegrinpelegrin/* Copyright 2007-2011,2014,2015 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_ml.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module conducts multilevel framew- **/ /** ork for the vertex overlapped graph pa- **/ /** rtitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to 16 aug 2015 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_ML #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "wgraph.h" #include "wgraph_part_ml.h" #include "wgraph_part_st.h" /* ** The static variables. */ static const Gnum wgraphpartmlloadone = 1; /*********************************************/ /* */ /* The coarsening and uncoarsening routines. */ /* */ /*********************************************/ /* This routine builds a coarser graph from the ** graph that is given on input. The coarser ** graphs differ at this stage from classical ** active graphs as their internal gains are not ** yet computed. ** It returns: ** - 0 : if the coarse graph has been built. ** - 1 : if threshold achieved or on error. */ static int wgraphPartMlCoarsen ( const Wgraph * restrict const finegrafptr, /*+ Finer graph +*/ Wgraph * restrict const coargrafptr, /*+ Coarser graph to build +*/ GraphCoarsenMulti * restrict * const coarmultptr, /*+ Pointer to un-based multinode table to build +*/ const WgraphPartMlParam * const paraptr) /*+ Method parameters +*/ { *coarmultptr = NULL; /* Allocate coarmulttab along with coarse graph */ if (graphCoarsen (&finegrafptr->s, &coargrafptr->s, NULL, coarmultptr, (paraptr->coarnbr * finegrafptr->partnbr), paraptr->coarval, GRAPHCOARSENNONE, NULL, NULL, 0, NULL) != 0) return (1); /* Return if coarsening failed */ coargrafptr->parttax = NULL; /* Do not allocate partition data yet */ coargrafptr->compload = NULL; coargrafptr->partnbr = finegrafptr->partnbr; coargrafptr->levlnum = finegrafptr->levlnum + 1; /* Graph level is coarsening level */ return (0); } /* This routine propagates the separation of the ** coarser graph back to the finer graph, according ** to the multinode table of collapsed vertices. ** After the separation is propagated, it finishes ** to compute the parameters of the finer graph that ** were not computed at the coarsening stage. ** It returns: ** - 0 : if coarse graph data has been propagated to fine graph. ** - !0 : on error. */ static int wgraphPartMlUncoarsen ( Wgraph * restrict const finegrafptr, /*+ Finer graph +*/ const Wgraph * restrict const coargrafptr, /*+ Coarser graph +*/ const GraphCoarsenMulti * restrict const coarmulttab) /*+ Un-based multinode array +*/ { Gnum coarvertnbr; Gnum coarvertnum; /* Number of current coarse vertex */ const Anum * restrict coarparttab; Anum * restrict fineparttax; Gnum * restrict finefrontab; Gnum finefronnbr; /* Number of frontier vertices in fine graph */ Gnum finevertnum; WgraphPartList * restrict finelisttab; Gnum finevelomsk; const Gnum * restrict finevelobax; /* Data for handling of optional arrays */ Gnum * restrict finecompload; Gnum * restrict finecompsize; const Gnum * restrict const fineverttax = finegrafptr->s.verttax; const Gnum * restrict const finevendtax = finegrafptr->s.vendtax; const Gnum * restrict const fineedgetax = finegrafptr->s.edgetax; if ((finegrafptr->levlnum > 0) && /* If partition data not yet allocated */ (wgraphAlloc (finegrafptr) != 0)) { /* Allocate tables before processing */ errorPrint ("wgraphPartMlUncoarsen: out of memory (1)"); return (1); } if (coargrafptr == NULL) { /* If no coarse graph provided */ wgraphZero (finegrafptr); return (0); } finecompload = finegrafptr->compload; finecompsize = finegrafptr->compsize; if ((finelisttab = (WgraphPartList *) memAlloc ((finegrafptr->partnbr + 1) * sizeof (WgraphPartList))) == NULL) { /* TRICK: "+1" to create slot for a "-1" index */ errorPrint ("wgraphPartMlUncoarsen: out of memory (2)"); return (1); } finelisttab ++; /* TRICK: trim array so that finelisttab[-1] is valid */ memSet (finelisttab, ~0, finegrafptr->partnbr * sizeof (WgraphPartList)); /* Set vertex indices to ~0 */ memSet (finecompload, 0, finegrafptr->partnbr * sizeof (Gnum)); /* Reset load arrays to 0 */ memSet (finecompsize, 0, finegrafptr->partnbr * sizeof (Gnum)); if (finegrafptr->s.velotax == NULL) { /* Set accesses to optional arrays */ finevelobax = &wgraphpartmlloadone; /* In case vertices not weighted */ finevelomsk = 0; } else { finevelobax = finegrafptr->s.velotax; finevelomsk = ~((Gnum) 0); } finefronnbr = 0; finefrontab = finegrafptr->frontab; fineparttax = finegrafptr->parttax; coarparttab = coargrafptr->parttax + coargrafptr->s.baseval; for (coarvertnum = 0, coarvertnbr = coargrafptr->s.vertnbr; coarvertnum < coarvertnbr; coarvertnum ++) { Anum coarpartval; /* Value of current multinode part */ Gnum finevertnum0; Gnum finevertnum1; coarpartval = coarparttab[coarvertnum]; finevertnum0 = coarmulttab[coarvertnum].vertnum[0]; finevertnum1 = coarmulttab[coarvertnum].vertnum[1]; fineparttax[finevertnum0] = coarpartval; if (coarpartval >= 0) { /* If vertex is not in separator */ if (finevertnum0 != finevertnum1) fineparttax[finevertnum1] = coarpartval; } else { /* Vertex is in separator */ finefrontab[finefronnbr ++] = finevertnum0; if (finevertnum0 != finevertnum1) { fineparttax[finevertnum1] = coarpartval; finefrontab[finefronnbr ++] = finevertnum1; /* One extra vertex in separator */ } } } finegrafptr->fronnbr = finefronnbr; finegrafptr->fronload = coargrafptr->fronload; for (finevertnum = finegrafptr->s.baseval; finevertnum < finegrafptr->s.vertnnd; finevertnum ++) { Anum finepartval; finepartval = fineparttax[finevertnum]; if (finepartval >= 0) { finecompload[finepartval] += finevelobax[finevertnum & finevelomsk]; finecompsize[finepartval] ++; } else { /* Fine vertex is in separator */ Gnum finelistidx; /* Index of first neighbor part */ Gnum fineedgenum; Gnum fineveloval; finelistidx = -1; /* No neighboring parts recorded yet */ finelisttab[-1].vertnum = finevertnum; /* Separator neighbors will not be considered */ for (fineedgenum = fineverttax[finevertnum]; fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { /* Compute gain */ Gnum finevertend; Anum finepartend; finevertend = fineedgetax[fineedgenum]; finepartend = fineparttax[finevertend]; if (finelisttab[finepartend].vertnum != finevertnum) { /* If part not yet considered */ finelisttab[finepartend].vertnum = finevertnum; /* Link it in list of neighbors */ finelisttab[finepartend].nextidx = finelistidx; finelistidx = finepartend; } } fineveloval = finevelobax[finevertnum & finevelomsk]; while (finelistidx != -1) { /* For all neighboring parts found */ finecompload[finelistidx] += fineveloval; /* Add load of separator vertex to part */ finecompsize[finelistidx] ++; finelistidx = finelisttab[finelistidx].nextidx; } } } memFree (finelisttab - 1); /* TRICK: free array using its real beginning */ #ifdef SCOTCH_DEBUG_WGRAPH2 if (wgraphCheck (finegrafptr) != 0) { errorPrint ("wgraphPartMlUncoarsen: inconsistent graph data"); return (1); } #endif /* SCOTCH_DEBUG_WGRAPH2 */ return (0); } /* This routine recursively performs the partitioning. ** It returns: ** - 0 : if separator could be computed. ** - !0 : on error. */ static int wgraphPartMl2 ( Wgraph * restrict const grafptr, const WgraphPartMlParam * const paraptr) { Wgraph coargrafdat; GraphCoarsenMulti * restrict coarmulttab; int o; if (wgraphPartMlCoarsen (grafptr, &coargrafdat, &coarmulttab, paraptr) == 0) { if (((o = wgraphPartMl2 (&coargrafdat, paraptr)) == 0) && ((o = wgraphPartMlUncoarsen (grafptr, &coargrafdat, coarmulttab)) == 0) && ((o = wgraphPartSt (grafptr, paraptr->stratasc)) != 0)) /* Apply ascending strategy */ errorPrint ("wgraphPartMl2: cannot apply ascending strategy"); wgraphExit (&coargrafdat); } else { /* Cannot coarsen due to lack of memory or error */ if (((o = wgraphPartMlUncoarsen (grafptr, NULL, NULL)) == 0) && /* Finalize graph */ ((o = wgraphPartSt (grafptr, paraptr->stratlow)) != 0)) /* Apply low strategy */ errorPrint ("wgraphPartMl2: cannot apply low strategy"); } return (o); } /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the muti-level separation. ** It returns: ** - 0 : if separator could be computed. ** - 1 : on error. */ int wgraphPartMl ( Wgraph * const wgrafptr, /*+ Vertex-separation graph +*/ const WgraphPartMlParam * const paraptr) /*+ Method parameters +*/ { Gnum levlnum; /* Save value for graph level */ int o; levlnum = wgrafptr->levlnum; /* Save graph level */ wgrafptr->levlnum = 0; /* Initialize coarsening level */ o = wgraphPartMl2 (wgrafptr, paraptr); /* Perform multi-level separation */ wgrafptr->levlnum = levlnum; /* Restore graph level */ return (o); } scotch_6.0.9/src/libscotch/vmesh.c0000644000302600021200000000765213303015264017313 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the separator **/ /** handling routines. **/ /** **/ /** DATES : # Version 4.0 : from : 06 feb 2003 **/ /** to 05 mar 2003 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to 09 nov 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VMESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "vmesh.h" /*************************/ /* */ /* These routines handle */ /* separator meshes. */ /* */ /*************************/ /* This routine frees the contents ** of the given active mesh. ** It returns: ** - VOID : in all cases. */ void vmeshExit ( Vmesh * const meshptr) { if (meshptr->parttax != NULL) /* Free leader of group (parttab + frontab) */ memFree (meshptr->parttax + meshptr->m.baseval); meshFree (&meshptr->m); /* Free source mesh */ #ifdef SCOTCH_DEBUG_VMESH2 memSet (meshptr, ~0, sizeof (Vmesh)); #endif /* SCOTCH_DEBUG_VMESH2 */ } /* This routine moves all of the mesh ** elements to the first part. ** It returns: ** - VOID : in all cases. */ void vmeshZero ( Vmesh * const meshptr) { memSet (meshptr->parttax + meshptr->m.baseval, 0, (meshptr->m.velmnbr + meshptr->m.vnodnbr) * sizeof (GraphPart)); meshptr->ecmpsize[0] = meshptr->m.velmnbr; meshptr->ecmpsize[1] = 0; meshptr->ncmpload[0] = meshptr->m.vnlosum; meshptr->ncmpload[1] = meshptr->ncmpload[2] = 0; meshptr->ncmploaddlt = meshptr->m.vnlosum; meshptr->ncmpsize[0] = meshptr->m.vnodnbr; meshptr->ncmpsize[1] = meshptr->fronnbr = 0; } scotch_6.0.9/src/libscotch/graph_io_chac.c0000644000302600021200000003354313470115365020745 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2013,2016 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph_io_chac.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the I/O routines **/ /** for handling the Chaco graph format. **/ /** **/ /** DATES : # Version 3.2 : from : 06 nov 1997 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 13 dec 1998 **/ /** to 24 dec 1998 **/ /** # Version 3.4 : from : 05 oct 1999 **/ /** to : 04 feb 2000 **/ /** # Version 4.0 : from : 18 dec 2001 **/ /** to 19 jan 2004 **/ /** # Version 5.0 : from : 04 feb 2007 **/ /** to 21 may 2008 **/ /** # Version 5.1 : from : 02 dec 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 10 oct 2013 **/ /** to 03 aug 2016 **/ /** # Version 6.1 : from : 03 aug 2016 **/ /** to 03 aug 2016 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GRAPH_IO_CHAC #include "module.h" #include "common.h" #include "geom.h" #include "graph.h" /* This routine loads the geometrical graph ** in the Chaco graph format, and allocates ** the proper structures. ** - 0 : on success. ** - !0 : on error. */ int graphGeomLoadChac ( Graph * restrict const grafptr, /* Graph to load */ Geom * restrict const geomptr, /* Geometry to load */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { char chalinetab[80]; /* Header line */ long chavertnbr; /* Number of vertices */ Gnum chavertnum; /* Number of vertex read */ long chaedgenbr; /* Number of edges */ long chaflagval; /* Flag on numeric form */ char chaflagstr[4]; /* Flag for optional data */ int chabuffcar; /* Buffer for line processing */ Gnum vertnum; Gnum velosiz; Gnum velosum; Gnum vlblsiz; Gnum vlblmax; Gnum edgenum; Gnum edlosiz; Gnum edlosum; Gnum degrmax; do { /* Skip comment lines */ chabuffcar = getc (filesrcptr); /* Read first character */ if (chabuffcar == '%') { /* If comment line */ fscanf (filesrcptr, "%*[^\n]"); /* Purge line */ getc (filesrcptr); /* Purge newline */ } } while (chabuffcar == '%'); ungetc (chabuffcar, filesrcptr); chaflagval = 0; if ((fscanf (filesrcptr, "%79[^\n]%*[^\n]", chalinetab) != 1) || /* Read graph header */ (sscanf (chalinetab, "%ld%ld%ld", &chavertnbr, &chaedgenbr, &chaflagval) < 2)) { errorPrint ("graphGeomLoadChac: bad input (1)"); return (1); } getc (filesrcptr); /* Purge newline; cannot be merged with fscanf above */ chaflagstr[0] = /* Pre-set flag array */ chaflagstr[1] = chaflagstr[2] = chaflagstr[3] = '\0'; chaflagstr[0] = '0' + ((chaflagval / 100) % 10); /* Set the flags */ chaflagstr[1] = '0' + ((chaflagval / 10) % 10); chaflagstr[2] = '0' + ((chaflagval) % 10); grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = 1; /* Chaco graphs are based */ grafptr->vertnbr = chavertnbr; grafptr->vertnnd = chavertnbr + 1; grafptr->edgenbr = chaedgenbr * 2; /* We are counting arcs */ vlblsiz = (chaflagstr[0] != '0') ? grafptr->vertnbr : 0; velosiz = (chaflagstr[1] != '0') ? grafptr->vertnbr : 0; edlosiz = (chaflagstr[2] != '0') ? grafptr->edgenbr : 0; if ((memAllocGroup ((void **) (void *) &grafptr->verttax, (size_t) (grafptr->vertnnd * sizeof (Gnum)), &grafptr->velotax, (size_t) (velosiz * sizeof (Gnum)), &grafptr->vlbltax, (size_t) (vlblsiz * sizeof (Gnum)), NULL) == NULL) || (memAllocGroup ((void **) (void *) &grafptr->edgetax, (size_t) (grafptr->edgenbr * sizeof (Gnum)), &grafptr->edlotax, (size_t) (edlosiz * sizeof (Gnum)), NULL) == NULL)) { if (grafptr->verttax != NULL) memFree (grafptr->verttax); errorPrint ("graphGeomLoadChac: out of memory"); return (1); } grafptr->verttax --; grafptr->vendtax = grafptr->verttax + 1; grafptr->vlbltax = (chaflagstr[0] != '0') ? (grafptr->vlbltax - 1) : NULL; grafptr->edgetax --; if (chaflagstr[1] != '0') { grafptr->velotax --; velosum = 0; } else { grafptr->velotax = NULL; velosum = grafptr->vertnbr; /* No vertex loads */ } if (chaflagstr[2] != '0') { grafptr->edlotax --; edlosum = 0; } else { grafptr->edlotax = NULL; edlosum = grafptr->edgenbr; } for (vertnum = edgenum = 1, degrmax = vlblmax = 0; vertnum < grafptr->vertnnd; vertnum ++) { do { /* Skip comment lines */ chabuffcar = getc (filesrcptr); /* Read first character */ if (chabuffcar == '%') { /* If comment line */ fscanf (filesrcptr, "%*[^\n]"); /* Purge line */ getc (filesrcptr); /* Purge newline */ } } while (chabuffcar == '%'); ungetc (chabuffcar, filesrcptr); /* Put character back to filesrcptr */ if (grafptr->vlbltax != NULL) { if ((intLoad (filesrcptr, &grafptr->vlbltax[vertnum]) != 1) || (grafptr->vlbltax[vertnum] < 1) || (grafptr->vlbltax[vertnum] > chavertnbr)) { errorPrint ("graphGeomLoadChac: bad input (2)"); graphFree (grafptr); return (1); } if (grafptr->vlbltax[vertnum] > vlblmax) vlblmax = grafptr->vlbltax[vertnum]; } if (grafptr->velotax != NULL) { if ((intLoad (filesrcptr, &grafptr->velotax[vertnum]) != 1) || (grafptr->velotax[vertnum] < 1)) { errorPrint ("graphGeomLoadChac: bad input (3)"); graphFree (grafptr); return (1); } velosum += grafptr->velotax[vertnum]; } grafptr->verttax[vertnum] = edgenum; /* Set based edge array index */ while (1) { /* Read graph edges */ fscanf (filesrcptr, "%*[ \t\r]"); /* Skip white spaces except '\n' */ chabuffcar = getc (filesrcptr); /* Read next char */ if (chabuffcar == EOF) /* If end of file reached */ chabuffcar = '\n'; /* Indicate line as complete */ if (chabuffcar == '\n') /* Exit loop if line is complete */ break; ungetc (chabuffcar, filesrcptr); /* Else put character back to stream */ if ((intLoad (filesrcptr, &chavertnum) != 1) || (chavertnum < 1) || (chavertnum > chavertnbr) || ((grafptr->edlotax != NULL) && ((intLoad (filesrcptr, &grafptr->edlotax[edgenum]) != 1) || (edlosum += grafptr->edlotax[edgenum], grafptr->edlotax[edgenum] < 1)))) { errorPrint ("graphGeomLoadChac: bad input (4)"); graphFree (grafptr); return (1); } if (edgenum > (grafptr->edgenbr + 1)) { /* Test edge array overflow */ errorPrint ("graphGeomLoadChac: bad input (5)"); graphFree (grafptr); return (1); } grafptr->edgetax[edgenum ++] = chavertnum; } if ((edgenum - grafptr->verttax[vertnum]) > degrmax) degrmax = edgenum - grafptr->verttax[vertnum]; } grafptr->verttax[vertnum] = edgenum; /* Set end of based vertex array */ grafptr->velosum = velosum; grafptr->edlosum = edlosum; grafptr->degrmax = degrmax; if (grafptr->vlbltax != NULL) { /* If graph has labels */ if (graphLoad2 (1, grafptr->vertnnd, /* Un-label graph data */ grafptr->verttax, grafptr->vendtax, grafptr->edgetax, vlblmax, grafptr->vlbltax) != 0) { errorPrint ("graphGeomLoadChac: cannot relabel graph"); graphFree (grafptr); return (1); } } #ifdef SCOTCH_DEBUG_GRAPH2 if (graphCheck (grafptr) != 0) { /* Check graph consistency */ errorPrint ("graphGeomLoadChac: internal error"); graphFree (grafptr); return (1); } #endif /* SCOTCH_DEBUG_GRAPH2 */ return (0); } /* This routine saves the geometrical graph ** in the Chaco graph format. ** It returns: ** - 0 : on succes ** - !0 : on error. */ int graphGeomSaveChac ( const Graph * restrict const grafptr, /* Graph to save */ const Geom * restrict const geomptr, /* Geometry to save */ FILE * const filesrcptr, /* Topological data */ FILE * const filegeoptr, /* No use */ const char * const dataptr) /* No use */ { Gnum baseadj; /* Base adjustment */ Gnum vertnum; /* Current vertex */ Gnum edgenum; /* Current edge */ char * sepaptr; /* Separator string */ int o; baseadj = 1 - grafptr->baseval; /* Output base is always 1 */ o = (fprintf (filesrcptr, GNUMSTRING "\t" GNUMSTRING "\t%c%c%c\n", /* Write graph header */ (Gnum) grafptr->vertnbr, (Gnum) (grafptr->edgenbr / 2), ((grafptr->vlbltax != NULL) ? '1' : '0'), ((grafptr->velotax != NULL) ? '1' : '0'), ((grafptr->edlotax != NULL) ? '1' : '0')) < 0); for (vertnum = grafptr->baseval; (o == 0) && (vertnum < grafptr->vertnnd); vertnum ++) { sepaptr = ""; /* Start lines as is */ if (grafptr->vlbltax != NULL) { o |= (fprintf (filesrcptr, GNUMSTRING, (Gnum) (grafptr->vlbltax[vertnum] + baseadj)) < 0); sepaptr = "\t"; } if (grafptr->velotax != NULL) { o |= (fprintf (filesrcptr, "%s" GNUMSTRING, sepaptr, (Gnum) grafptr->velotax[vertnum]) < 0); sepaptr = "\t"; } for (edgenum = grafptr->verttax[vertnum]; (o == 0) && (edgenum < grafptr->vendtax[vertnum]); edgenum ++) { if (grafptr->vlbltax != NULL) o |= (fprintf (filesrcptr, "%s" GNUMSTRING, sepaptr, (Gnum) (grafptr->vlbltax[grafptr->edgetax[edgenum]] + baseadj)) < 0); else o |= (fprintf (filesrcptr, "%s" GNUMSTRING, sepaptr, (Gnum) (grafptr->edgetax[edgenum] + baseadj)) < 0); if (grafptr->edlotax != NULL) o |= (fprintf (filesrcptr, " " GNUMSTRING, (Gnum) grafptr->edlotax[edgenum]) < 0); sepaptr = "\t"; } o |= (fprintf (filesrcptr, "\n") < 0); } if (o != 0) errorPrint ("graphGeomSaveChac: bad output"); return (o); } scotch_6.0.9/src/libscotch/vgraph_separate_fm.h0000644000302600021200000001535413303015264022031 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_fm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the improved Fiduccia-Mattheyses **/ /** graph separation routine. **/ /** **/ /** DATES : # Version 3.2 : from : 02 nov 1997 **/ /** to 20 nov 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 28 dec 1998 **/ /** # Version 4.0 : from : 13 dec 2001 **/ /** to 18 aug 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Gain table subbits. +*/ #define VGRAPHSEPAFMGAINBITS 4 /*+ Prime number for hashing vertex numbers. +*/ #define VGRAPHSEPAFMHASHPRIME 17 /*+ Prime number for hashing +*/ /*+ Gain table vertex status. +*/ #define VGRAPHSEPAFMSTATEFREE ((GainLink *) 0) /*+ Vertex is free or separator-chained +*/ #define VGRAPHSEPAFMSTATESUCH ((GainLink *) 1) /*+ Separator vertex is used and chained +*/ #define VGRAPHSEPAFMSTATEUSED ((GainLink *) 2) /*+ Vertex already swapped once +*/ #define VGRAPHSEPAFMSTATELINK ((GainLink *) 3) /*+ Currently in gain table if higher +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VgraphSeparateFmParam_ { INT movenbr; /*+ Maximum number of uneffective moves that can be done +*/ INT passnbr; /*+ Number of passes to be performed (-1 : infinite) +*/ double deltrat; /*+ Maximum weight imbalance ratio +*/ } VgraphSeparateFmParam; /*+ The hash vertex structure. For trick reasons, one of the gain table data structures is followed by a negative integer, and the other by a positive one. Thus, one can deduce the value of the pointer to the structure from a pointer to any of the gain table data structures. Moreover, some fields have special meaning: - gainlink0.next: state of vertex (see VGRAPHSEPAFMSTATEXXXX). - gainlink0.prev: simple chaining for separator vertices, if vertex is in chained state (((vertpart == 2) && (gainlink0.next == VGRAPHSEPAFMSTATEFREE)) || (gainlink0.next == VGRAPHSEPAFMSTATESUCH)). - gainlink1: double chained list of locked vertices, if ((gainlink0.next == VGRAPHSEPAFMSTATESUCH) || (gainlink0.next == VGRAPHSEPAFMSTATEUSED)). +*/ typedef struct VgraphSeparateFmVertex_ { GainLink gainlink0; /*+ Gain link if moved to part 0; FIRST +*/ Gnum veloval; /*+ TRICK: opposite of vertex load +*/ GainLink gainlink1; /*+ Gain link if moved to part 1; TRICK: before vertpart +*/ Gnum partval; /*+ Vertex part TRICK: same type as vertload +*/ Gnum compgain[2]; /*+ Separator gain if moved to given part; TRICK: not first +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ Gnum vertnum; /*+ Number of vertex in hash table +*/ } VgraphSeparateFmVertex; /*+ The move recording structure. +*/ typedef struct VgraphSeparateFmSave_ { Gnum hashnum; /*+ Number of hash slot for saved vertex +*/ int partval; /*+ Saved vertex part value +*/ Gnum compgain[2]; /*+ Saved vertex gain +*/ } VgraphSeparateFmSave; /* ** The function prototypes. */ #ifdef VGRAPH_SEPARATE_FM static int vgraphSeparateFmResize (VgraphSeparateFmVertex * restrict * hashtabptr, Gnum * const, Gnum * const, VgraphSeparateFmSave * restrict *, const Gnum, GainTabl * const, GainLink * const); static GainLink * vgraphSeparateFmTablGet (GainTabl * const, const Gnum, const Gnum, const int); #ifdef SCOTCH_DEBUG_VGRAPH3 static int vgraphSeparateFmCheck (const Vgraph * const, const VgraphSeparateFmVertex * restrict const, const Gnum, const Gnum, const Gnum); #endif /* SCOTCH_DEBUG_VGRAPH3 */ #endif /* VGRAPH_SEPARATE_FM */ int vgraphSeparateFm (Vgraph * const, const VgraphSeparateFmParam * const); scotch_6.0.9/src/libscotch/common_stub.c0000644000302600021200000000621113560005430020503 0ustar pelegrinpelegrin/* Copyright 2008,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_stub.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are common stub routines **/ /** for several systems, used by all **/ /** modules. **/ /** **/ /** DATES : # Version 5.0 : from : 11 may 2008 **/ /** to 11 may 2008 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 01 jul 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" /* ** The static and global variables. */ int commonStubDummy; /* Dummy variable so that the object file will never be empty */ /******************/ /* */ /* Stub routines. */ /* */ /******************/ #ifdef COMMON_STUB_FORK int fork () { errorPrint ("fork() not implemented on this system"); return (-1); } #endif /* COMMON_STUB_FORK */ scotch_6.0.9/src/libscotch/library_arch_build_f.c0000644000302600021200000001047713560013261022315 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch_build_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the target architecture building **/ /** routine of the libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 17 mar 2005 **/ /** to 17 mar 2005 **/ /** # Version 6.0 : from : 21 apr 2018 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /****************************************/ /* */ /* These routines are the Fortran API */ /* for the target architecture building */ /* routines. */ /* */ /****************************************/ /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHBIPART, stratgraphbipart, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHBIPART)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratGraphBipart (straptr, strtab); /* Call original routine */ memFree (strtab); } /* ** */ SCOTCH_FORTRAN ( \ ARCHBUILD, archbuild, ( \ SCOTCH_Arch * const archptr, \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * const listnbr, \ const SCOTCH_Num * const listptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (archptr, grafptr, listnbr, listptr, straptr, revaptr)) { *revaptr = SCOTCH_archBuild (archptr, grafptr, *listnbr, listptr, straptr); } scotch_6.0.9/src/libscotch/hdgraph_fold.h0000644000302600021200000000654113303015264020613 0ustar pelegrinpelegrin/* Copyright 2007-2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_fold.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed source graph **/ /** folding routines. **/ /** **/ /** # Version 5.0 : from : 06 sep 2006 **/ /** to 06 sep 2006 **/ /** # Version 5.1 : from : 03 jan 2009 **/ /** to 03 jan 2009 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Slot indices used for point-to-point folding communications. First indices are used for communications without further processing. At the moment, there is one anonymous slot: vnumloctab. */ typedef enum HdgraphFoldTag_ { HDGRAPHFOLDTAGENBR = 1, /*+ Edge size message +*/ HDGRAPHFOLDTAGVERT, /*+ vertloctab message +*/ HDGRAPHFOLDTAGVEND, /*+ vendloctab message +*/ HDGRAPHFOLDTAGVELO, /*+ veloloctab message +*/ HDGRAPHFOLDTAGEDGE, /*+ edgeloctab message +*/ HDGRAPHFOLDTAGNBR /*+ Number of tags +*/ } HdgraphFoldTag; scotch_6.0.9/src/libscotch/hall_order_hf.c0000644000302600021200000013053313560013017020753 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hf.c **/ /** **/ /** AUTHOR : Patrick AMESTOY **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a halo graph or mesh **/ /** structure using the block-oriented Halo **/ /** Approximate (Multiple) Minimum Fill **/ /** algorithm, with super-variable **/ /** accounting R2HAMDf4 (v2.0). **/ /** **/ /** DATES : # Version 3.4 : from : 15 may 2001 **/ /** to : 23 nov 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 29 aug 2007 **/ /** # Version 5.1 : from : 08 dec 2010 **/ /** to : 08 dec 2010 **/ /** # Version 6.0 : from : 08 mar 2012 **/ /** to : 30 apr 2018 **/ /** **/ /** NOTES : # This module contains pieces of code **/ /** that belong to other people; see **/ /** below. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HALL_ORDER_HF #include "module.h" #include "common.h" #include "graph.h" #include "hall_order_hf.h" /* -- translated by f2c (version 19970219). */ /** -------------------------------------------------------------------- **/ /** December 8th 2003 **/ /** Unique version for both graph of variables and graphs of elements **/ /** Let us refer to as **/ /** Gv a graph with only variables **/ /** Ge a graph with both variables and elements **/ /** **/ /** Notations used: **/ /** **/ /** Let V be the set of nodes **/ /** V = Ve + V0 + V1 **/ /** V0 = Set of variable nodes (not in halo) **/ /** V1 = Set of variable nodes (in halo) **/ /** Ve = Set of element nodes **/ /** **/ /** All 3 sets are disjoint, Ve and V1 can be empty **/ /** **/ /** Modifications w.r.t. previous version : **/ /** **/ /** New Input: **/ /** --------- **/ /** nbelts : integer holding size of Ve **/ /** =0 if Gv (graph of variables) **/ /** >0 if Ge **/ /** **/ /** Extension of the meaning of input entry len for nodes in Ve **/ /** --------- **/ /** len(i) = | Adj(i) | if i \in V0 U Ve **/ /** ( Note that in the case of a GE graph **/ /** if v\in V0 then len(v) = nb of elements adjacent to v ) **/ /** len(i) = - | Adj(i) | if i \in V1 **/ /** or -N -1 if | Adj(i) | = 0 and i \in V1 **/ /** **/ /** Modified the meaning of input entry elen **/ /** --------- **/ /** if e \in Ve then elen (e) = -N-1 **/ /** if v \in V0 then elen (v) = External degree of v **/ /** Gv : elen (v) = len(v) **/ /** Ge : elen (v) **/ /** should be computed in SCOTCH **/ /** if v \in V1 then elen (v) = 0 **/ /** **/ /** **/ /** Output is unchanged **/ /** --------- **/ /** **/ /** **/ /** End remarks done on December 8th 2003 **/ /** ---------------------------------------------------------------------**/ /** **/ /** **/ /** AMF4 (version used on newton for uns tests) **/ /** given to Francois on Nov 31 2000 **/ /** Approximation of level4 of the minimum fill heuristic **/ /** (best approx of Min fill currently available based on collaborative **/ /** work between P. Amestoy, T. Davis and I. Duff) **/ /** **/ /** Remarks: **/ /** ------- **/ /** 1/ !!!!!!!! WARNING !!!!!!!!!! **/ /** TWO additionnal parameters w.r.t HALOAMD **/ /** -------------------------- **/ /** NBBUCK : integer greater than 1 (advised value is 2*N) **/ /** HEAD : HEAD(0:NBBUCK+1) integer array of size NBBUCK+2 **/ /** NOTE that it starts at index 0 !! **/ /** **/ /** 2/ Interface for MA41 or SCOTCH **/ /** **/ /** 3/ Nodes of V1 are amalgamated in one root supervariable **/ /** the complete tree (of V0+V1) is correct in the sense of **/ /** MC47B output interface (NV for V1 nodes is ok). **/ /** Output data (PE,NV) can then be exploited by MA41LD. **/ /** Variable in V1 cannot be characterized on output. **/ /** -------------------------------------------------------------------- **/ void hallOrderHfR2hamdf4 ( const Gnum n, /* Matrix order */ const Gnum nbelts, /* Number of elements */ const Gnum nbbuck, /* Number of buckets */ const Gnum iwlen, /* Length of array iw */ Gnum * restrict pe /* [] */, /* Array of indexes in iw of start of row i */ Gnum pfree, /* Useful size in iw */ Gnum * restrict len /* [] */, /* Array of lengths of adjacency lists */ Gnum * restrict iw /* [] */, /* Adjacency list array */ Gnum * restrict nv /* [] */, /* Array of element degrees (weights) */ Gnum * restrict elen /* [] */, /* Array that holds the inverse permutation */ Gnum * restrict last /* [] */, /* Array that holds the permutation */ Gnum * restrict ncmpaptr, /* Number of times array iw was compressed */ Gnum * restrict degree /* [] */, /* Array that holds degree data */ Gnum * restrict wf /* [] */, /* Flag array */ Gnum * restrict next /* [] */, /* Linked list structure */ Gnum * restrict w /* [] */, /* Flag array */ Gnum * restrict head /* [] */) /* Linked list structure */ { Gnum hash, pend, hmod, lenj, dmax, wflg, dext, psrc, pdst, wnvi, e, i, j, k, p, degme, x, nelme, nreal, lastd, nleft, ilast, jlast, inext, jnext, n2, p1, nvpiv, p2, p3, me = 0, nbflag, ln, we, pj, pn, mindeg, elenme, slenme, maxmem, newmem, wf3, wf4, deg, eln, mem, nel, pme, pas, nvi, nvj, pme1, pme2, knt1, knt2, knt3; Gnum ncmpa; float rmf, rmf1; /** Min fill approximation one extra array of size NBBUCK+2 is needed **/ /** INTEGER HEAD(0:NBBUCK+1) **/ /** -------------------------------------------------------------------- **/ /** HALOAMD_V6: (January 1999, P. Amestoy) **/ /** *********** **/ /** 1/ ERROR 2 detection followed by stop statement suppressed. **/ /** 2/ Pb 1 identified in V5 was not correctly solved. **/ /** **/ /** HALOAMD_V5: (December 1998, P. Amestoy) **/ /** *********** **/ /** 1/ Solved problem with matrix psmigr 1, because upper bound degree **/ /** DEG>N was considered as a node of V1. **/ /** **/ /** HALOAMD_V4: (October 1998, P. Amestoy) **/ /** *********** **/ /** Only MA41 interface (ok for both scotch and MA41) is included in **/ /** this file. **/ /** **/ /** HALOAMD_V3: (August 1998, P. Amestoy) **/ /** ********** **/ /** Solved problem in version 2: variables of V1 with len(i)=0 were not **/ /** well processed. See modification of the input to characterize those **/ /** variables. **/ /** Problem detected by Jacko Koster while experimenting with C version **/ /** 2 of haloAMD in the context of multiple front method based on **/ /** MA27: "if for an interface variable i, row i in the matrix has only **/ /** a nonzero entry on the diagonal, we first remove this entry and **/ /** len(i) is set to zero on input to HALOAMD. However, this means that **/ /** HALOAMD will treat variable i as an interior variable (in V0) **/ /** instead as an interface variable (in V1). It is indeed a bit **/ /** strange to have such interface variables but we encountered some **/ /** in our debugging experiments with some random partitionings. **/ /** Solution: **/ /** IF on input i \in V1 and len(i)=0 (that is adjlist(i)={}) THEN **/ /** len(i) must be set on input to -N-1. **/ /** ENDIF **/ /** Therefore, all variables i / len(i) < 0 and only those are in V1. **/ /** Variables with len(i) = -N-1 are then processed differently at the **/ /** beginning of the code. **/ /** **/ /** HALOAMD_V2: (April 1998) **/ /** ********** **/ /** The end of the tree (including links to block of flagged indices **/ /** is built) . The list of flagged indices is considered as a dense **/ /** amalgamated node. **/ /** Tested on rosanna: ~amestoy/MA41_NEW/SUN_RISC_dbl/SOFT **/ /** **/ /** Comments on the OUTPUT: **/ /** ---------------------- **/ /** **/ /** Let V= V0 U V1 the nodes of the initial graph (|V|=n). **/ /** The assembly tree corresponds to the tree of the supernodes (or **/ /** supervariables). Each node of the assembly tree is then composed of **/ /** one principal variable and a list of secondary variables. The list **/ /** of variable of a node (principal + secondary variables) then **/ /** describes the structure of the diagonal bloc of the supernode. **/ /** The elimination tree denotes the tree of all the variables(=nodes) **/ /** and is therefore of order n. The arrays NV(N) and PE(N) give a **/ /** description of the assembly tree. **/ /** **/ /** 1/ Description of array nv(N) (on OUPUT) **/ /** nv(i)=0 i is a secondary variable. **/ /** N+1> nv(i) >0 i is a principal variable, nv(i) holds the number **/ /** of elements in column i of L (true degree of i) **/ /** nv(i) = N+1 then i is a flagged variable (belonging to V1) **/ /** **/ /** 2/ Description of array PE(N) (on OUPUT) **/ /** pe(i) = -(father of variable/node i) in the elimination tree. **/ /** If nv (i) .gt. 0, then i represents a node in the assembly tree, **/ /** and the parent of i is -pe (i), or zero if i is a root. **/ /** If nv (i) = 0, then (i,-pe (i)) represents an edge in a **/ /** subtree, the root of which is a node in the assembly tree. **/ /** **/ /** 3/ Example: **/ /** Let If be a root node father of Is in the assembly tree. **/ /** If is the principal variable of the node If and let If1, If2, If3 **/ /** be the secondary variables of node If. Is is the principal **/ /** variable of the node Is and let Is1, Is2 be the secondary **/ /** variables of node Is. **/ /** Then: **/ /** NV(If1)=NV(If2)=NV(If3) = 0 (secondary variables) **/ /** NV(Is1)=NV(Is2) = 0 (secondary variables) **/ /** NV(If) > 0 (principal variable) **/ /** NV(Is) > 0 (principal variable) **/ /** PE(If) = 0 (root node) **/ /** PE(Is) = -If (If is the father of Is in the assembly tree) **/ /** PE(If1)=PE(If2)=PE(If3)= -If (If is the principal variable) **/ /** PE(Is1)=PE(Is2)= -Is (Is is the principal variable) **/ /** **/ /** HALOAMD_V1: (September 1997) **/ /** ********** **/ /** Initial version designed to experiment the numerical (fill-in) **/ /** impact of taking into account the halo. This code should be able to **/ /** experiment no-halo, partial halo, complete halo. **/ /** -------------------------------------------------------------------- **/ /** HALOAMD is designed to process a graph composed of two types **/ /** of nodes, V0 and V1, extracted from a larger gragh. **/ /** V0^V1 = {}, **/ /** We used Min. degree heuristic to order only **/ /** nodes in V0, but the adjacency to nodes **/ /** in V1 is taken into account during ordering. **/ /** Nodes in V1 are odered at last. **/ /** Adjacency between nodes of V1 need not be provided, **/ /** however |len(i)| must always corresponds to the number of **/ /** edges effectively provided in the adjacency list of i. **/ /** On input : **/ /** ******** **/ /** Nodes INODE in V1 are flagged with len(INODE) = -degree **/ /** Update version HALO V3 (August 1998): **/ /** if len(i)=0 and i \in V1 then len(i) must be set **/ /** on input to -N-1. **/ /** ERROR return : **/ /** ************ **/ /** Negative value in ncmpa indicates an error detected **/ /** by HALOAMD. **/ /** **/ /** The graph provided MUST follow the rule: **/ /** if (i,j) is an edge in the gragh then **/ /** j must be in the adjacency list of i AND **/ /** i must be in the adjacency list of j. **/ /** **/ /** REMARKS : **/ /** ------- **/ /** 1/ Providing edges between nodes of V1 should not **/ /** affect the final ordering, only the amount of edges **/ /** of the halo should effectively affect the solution. **/ /** This code should work in the following cases: **/ /** 1/ halo not provided **/ /** 2/ halo partially provided **/ /** 3/ complete halo **/ /** 4/ complete halo+interconnection between nodes of V1. **/ /** **/ /** 1/ should run and provide identical results (w.r.t to **/ /** current implementation of AMD in SCOTCH). **/ /** 3/ and 4/ should provide identical results. **/ /** **/ /** 2/ All modifications of the MC47 initial code are indicated **/ /** with begin HALO .. end HALO **/ /** **/ /** Ordering of nodes in V0 is based on Approximate Minimum Degree **/ /** ordering algorithm, with aggressive absorption: **/ /** Given a representation of the nonzero pattern of a symmetric matrix, **/ /** A, (excluding the diagonal) perform an approximate minimum **/ /** (UMFPACK/MA38-style) degree ordering to compute a pivot order **/ /** such that fill-in in the Cholesky **/ /** factors A = LL^T is kept low. At each step, the pivot **/ /** selected is the one with the minimum UMFPACK/MA38-style **/ /** upper-bound on the external degree. Aggresive absorption is **/ /** used to tighten the bound on the degree. This can result an **/ /** significant improvement in the quality of the ordering for **/ /** some matrices. **/ /** The approximate degree algorithm implemented here is the **/ /** symmetric analogue of the degree update algorithm in MA38, by **/ /** Davis and Duff, also in the Harwell Subroutine Library. **/ /** **/ /** **** CAUTION: ARGUMENTS ARE NOT CHECKED FOR ERRORS ON INPUT. ***** **/ /** ** If you want error checking, a more versatile input format, and ** **/ /** ** a simpler user interface, then use MC47A/AD in the Harwell ** **/ /** ** Subroutine Library, which checks for errors, transforms the ** **/ /** ** input, and calls MC47B/BD. ** **/ /** ******************************************************************** **/ /** References: (UF Tech Reports are available via anonymous ftp **/ /** to ftp.cis.ufl.edu:cis/tech-reports). **/ /** [1] Timothy A. Davis and Iain Duff, "An unsymmetric-pattern **/ /** multifrontal method for sparse LU factorization", **/ /** SIAM J. Matrix Analysis and Applications, to appear. **/ /** also Univ. of Florida Technical Report TR-94-038. **/ /** Discuss UMFPACK / MA38. **/ /** [2] Patrick Amestoy, Timothy A. Davis, and Iain S. Duff, **/ /** "An approximate minimum degree ordering algorithm," **/ /** SIAM J. Matrix Analysis and Applications (to appear), **/ /** also Univ. of Florida Technical Report TR-94-039. **/ /** Discusses this routine. **/ /** [3] Alan George and Joseph Liu, "The evolution of the **/ /** minimum degree ordering algorithm," SIAM Review, vol. **/ /** 31, no. 1, pp. 1-19, March 1989. We list below the **/ /** features mentioned in that paper that this code **/ /** includes: **/ /** mass elimination: **/ /** Yes. MA27 relied on supervariable detection for mass **/ /** elimination. **/ /** indistinguishable nodes: **/ /** Yes (we call these "supervariables"). This was also **/ /** in the MA27 code - although we modified the method of **/ /** detecting them (the previous hash was the true degree, **/ /** which we no longer keep track of). A supervariable is **/ /** a set of rows with identical nonzero pattern. All **/ /** variables in a supervariable are eliminated together. **/ /** Each supervariable has as its numerical name that of **/ /** one of its variables (its principal variable). **/ /** quotient graph representation: **/ /** Yes. We use the term "element" for the cliques formed **/ /** during elimination. This was also in the MA27 code. **/ /** The algorithm can operate in place, but it will work **/ /** more efficiently if given some "elbow room." **/ /** element absorption: **/ /** Yes. This was also in the MA27 code. **/ /** external degree: **/ /** Yes. The MA27 code was based on the true degree. **/ /** incomplete degree update and multiple elimination: **/ /** No. This was not in MA27, either. Our method of **/ /** degree update within MC47B/BD is element-based, not **/ /** variable-based. It is thus not well-suited for use **/ /** with incomplete degree update or multiple elimination. **/ /** -------------------------------------------------------------------- **/ /** Authors, and Copyright (C) 1995 by: **/ /** Timothy A. Davis, Patrick Amestoy, Iain S. Duff, & **/ /** John K. Reid. **/ /** Modified (V1) by P.R. Amestoy ENSEEIHT (1997) **/ /** Modified (V2) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V3) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V4) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V5) by P.R. Amestoy ENSEEIHT (1998) **/ /** Modified (V6) by P.R. Amestoy ENSEEIHT (1999) **/ /** **/ /** Dates: September, 1995 **/ /** September, 1997 (halo AMD V1) **/ /** April, 1998 (halo AMD V2) **/ /** August, 1998 (halo AMD V3) **/ -- w; /* Parameter adjustments */ -- next; -- wf; -- degree; -- last; -- elen; -- nv; -- len; -- pe; -- iw; /* -- head; Array head not updated since starts from 0 */ n2 = - (nbbuck + 1); /* pas = n / 8; [Update F.P. 20020715 selon hamf_20020220] Distance betweeen elements of the N, ..., NBBUCK entries of HEAD */ pas = MAX ((n / 8), 1); /* Distance betweeen elements of the N, ..., NBBUCK entries of HEAD */ wflg = 2; ncmpa = 0; nel = 0; hmod = MAX (1, nbbuck - 1); dmax = 0; mem = pfree - 1; maxmem = mem; mindeg = 0; rmf = (float) (n) * (float) (n - 1); /* Average sparsity of matrix; diagonal entry is not in mem */ nbflag = 0; lastd = 0; memSet (head, 0, (nbbuck + 2) * sizeof (Gnum)); memSet (last + 1, 0, n * sizeof (Gnum)); if (nbelts == 0) { /* Patch 8/12/03 */ memSet (elen + 1, 0, n * sizeof (Gnum)); for (i = 1; i <= n; i ++) { w[i] = 1; if (len[i] < 0) { degree[i] = n2; nbflag ++; if (len[i] == - (n + 1)) { /* Patch 09/08/98 */ len[i] = 0; pe[i] = 0; /* Patch 12/12/03 : Because of compress, we force skipping those entries (which are anyway empty) */ } else len[i] = - len[i]; } else degree[i] = len[i]; } } else { /* Patch 08/12/03 : Duplicate part of previous loop to avoid sytematic testing for elements */ for (i = 1; i <= n; i ++) { w[i] = 1; if (len[i] < 0) { /* i \in V1 */ degree[i] = n2; nbflag ++; if (len[i] == - (n + 1)) { /* Patch 09/08/98 */ len[i] = 0; pe[i] = 0; /* Patch 12/12/03 : because of compress, we force skipping those entries (which are anyway empty) */ elen[i] = 0; /* Patch 16/12/03 */ } else { len[i] = - len[i]; elen[i] = len[i]; /* Patch 16/12/03 : only elements are adjacent to a variable */ } } else { /* i \in Ve or V0 */ if (elen[i] < 0) { /* i \in Ve */ nel ++; degree[i] = len[i]; elen[i] = - nel; dmax = MAX (dmax, degree[i]); /* Patch 11/03/04 */ } else { degree[i] = elen[i]; elen[i] = len[i]; /* Patch 16/12/03 : only elements are adjacent to a variable */ } } } } #ifdef SCOTCH_DEBUG_ORDER2 if (nbelts != nel) /* Temporary Patch 8/12/03 */ printf ("error 8Dec2003\n"); #endif /* SCOTCH_DEBUG_ORDER2 */ nreal = n - nbflag; for (i = 1; i <= n; i ++) { if (elen[i] < 0 ) /* Patch 16/12/03 : Skip elements */ continue; deg = degree[i]; if (deg == n2) { deg = nbbuck + 1; if (lastd == 0) { lastd = i; head[deg] = i; next[i] = 0; last[i] = 0; } else { next[lastd] = i; last[i] = lastd; lastd = i; next[i] = 0; } } else if (deg > 0) { if (nbelts != 0) { /* Patch 04/01/04 */ Gnum l; /* Size of largest adjacent element */ Gnum m; /* Current edge being visited */ for (m = pe[i], l = 0; m < pe[i] + elen[i]; m ++) { Gnum o; /* Current element being visited */ o = iw[m]; if (len[o] > l) l = len[o]; } deg = (Gnum) ((float) deg * (float) (deg - 1) - (float) l * (float) (l - 1)) / 2; if (deg < 0) /* Patch 04/01/04 */ deg = 0; } wf[i] = deg; /* Patch 14/01/04 */ if (deg > n) deg = MIN ((deg - n) / pas + n, nbbuck); inext = head[deg]; if (inext != 0) last[inext] = i; next[i] = inext; head[deg] = i; } else { nel ++; elen[i] = - nel; pe[i] = 0; w[i] = 0; } } /* L20: */ nleft = n - nel; /* Patch v5 12/12/98 */ while (nel < nreal) { /* WHILE (selecting pivots) DO */ for (deg = mindeg; deg <= nbbuck; deg ++) { me = head[deg]; if (me > 0) break; /* GO to 50 */ } /* L40: */ mindeg = deg; if (me <= 0) { /* Error 1 */ *ncmpaptr = -n; return; } if (deg > n) { j = next[me]; k = wf[me]; while (j > 0) { if (wf[j] < k) { me = j; k = wf[me]; } j = next[j]; } ilast = last[me]; inext = next[me]; if (inext != 0) last[inext] = ilast; if (ilast != 0) next[ilast] = inext; else head[deg] = inext; /* me is at the head of the degree list */ } else { inext = next[me]; if (inext != 0) last[inext] = 0; head[deg] = inext; } elenme = elen[me]; elen[me] = - (nel + 1); nvpiv = nv[me]; nel += nvpiv; nv[me] = - nvpiv; degme = 0; if (elenme == 0) { pme1 = pe[me]; pme2 = pme1 - 1; for (p = pme1; p <= pme1 + len[me] - 1; p ++) { i = iw[p]; nvi = nv[i]; if (nvi > 0) { degme += nvi; nv[i] = - nvi; pme2 ++; iw[pme2] = i; if (degree[i] != n2) { ilast = last[i]; inext = next[i]; if (inext != 0) last[inext] = ilast; if (ilast != 0) next[ilast] = inext; else { if (wf[i] > n) deg = MIN ((wf[i] - n) / pas + n, nbbuck); else deg = wf[i]; head[deg] = inext; } } } } /* L60: */ newmem = 0; } else { p = pe[me]; pme1 = pfree; slenme = len[me] - elenme; for (knt1 = 1; knt1 <= elenme + 1; knt1 ++) { if (knt1 > elenme) { e = me; pj = p; ln = slenme; } else { e = iw[p ++]; pj = pe[e]; ln = len[e]; } for (knt2 = 1; knt2 <= ln; knt2 ++) { i = iw[pj ++]; nvi = nv[i]; if (nvi > 0) { if (pfree > iwlen) { pe[me] = p; len[me] -= knt1; if (len[me] == 0) pe[me] = 0; pe[e] = pj; len[e] = ln - knt2; if (len[e] == 0) pe[e] = 0; ncmpa ++; for (j = 1; j <= n; j ++) { pn = pe[j]; if (pn > 0) { pe[j] = iw[pn]; iw[pn] = - j; } } /* L70: */ pdst = 1; psrc = 1; pend = pme1 - 1; while (psrc <= pend) { /* L80: */ j = - iw[psrc ++]; if (j > 0) { iw[pdst] = pe[j]; pe[j] = pdst ++; lenj = len[j]; for (knt3 = 0; knt3 <= lenj - 2; knt3 ++) iw[pdst + knt3] = iw[psrc + knt3]; pdst = pdst + (lenj - 1); psrc = psrc + (lenj - 1); } } p1 = pdst; for (psrc = pme1; psrc <= pfree - 1; psrc ++, pdst ++) /* L100: */ iw[pdst] = iw[psrc]; pme1 = p1; pfree = pdst; pj = pe[e]; p = pe[me]; } degme += nvi; nv[i] = - nvi; iw[pfree] = i; pfree ++; if (degree[i] != n2) { ilast = last[i]; inext = next[i]; if (inext != 0) last[inext] = ilast; if (ilast != 0) next[ilast] = inext; else { if (wf[i] > n) deg = MIN ((wf[i] - n) / pas + n, nbbuck); else deg = wf[i]; head[deg] = inext; } } } } /* L110: */ if (e != me) { pe[e] = -me; w[e] = 0; } } /* L120: */ pme2 = pfree - 1; newmem = pfree - pme1; mem += newmem; maxmem = MAX (maxmem, mem); } degree[me] = degme; pe[me] = pme1; len[me] = pme2 - pme1 + 1; if (wflg + n <= wflg) { for (x = 1; x <= n; x ++) { if (w[x] != 0) w[x] = 1; } /* L130: */ wflg = 2; } for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; eln = elen[i]; if (eln > 0) { nvi = - nv[i]; wnvi = wflg - nvi; for (p = pe[i]; p < pe[i] + eln; p ++) { e = iw[p]; we = w[e]; if (we >= wflg) we -= nvi; else if (we != 0) { we = degree[e] + wnvi; wf[e] = 0; } w[e] = we; } /* L140: */ } } /* L150: */ for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; p1 = pe[i]; p2 = p1 + elen[i] - 1; pn = p1; hash = 0; deg = 0; wf3 = 0; wf4 = 0; nvi = - nv[i]; for (p = p1; p <= p2; p ++) { e = iw[p]; dext = w[e] - wflg; if (dext > 0) { if (wf[e] == 0) wf[e] = dext * ((2 * degree[e]) - dext - 1); wf4 += wf[e]; deg += dext; iw[pn ++] = e; hash += e; } else if (dext == 0) { pe[e] = -me; w[e] = 0; } } /* L160: */ elen[i] = pn - p1 + 1; p3 = pn; for (p = p2 + 1; p < p1 + len[i]; p ++) { j = iw[p]; nvj = nv[j]; if (nvj > 0) { deg += nvj; wf3 += nvj; iw[pn ++] = j; hash += j; } } /* L170: */ if (degree[i] == n2) deg = n2; if (deg == 0) { pe[i] = - me; nvi = - nv[i]; degme -= nvi; nvpiv += nvi; nel += nvi; nv[i] = 0; elen[i] = 0; } else { if (degree[i] != n2) { if (degree[i] < deg) { wf4 = 0; wf3 = 0; } else degree[i] = deg; } wf[i] = wf4 + 2 * nvi * wf3; iw[pn] = iw[p3]; iw[p3] = iw[p1]; iw[p1] = me; len[i] = pn - p1 + 1; if (deg != n2) { hash = (hash % hmod) + 1; j = head[hash]; if (j <= 0) { next[i] = - j; head[hash] = - i; } else { next[i] = last[j]; last[j] = i; } last[i] = hash; } } } /* L180: */ degree[me] = degme; dmax = MAX (dmax, degme); wflg += dmax; if (wflg + n <= wflg) { for (x = 1; x <= n; x ++) { if (w[x] != 0) w[x] = 1; } wflg = 2; } for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; if ((nv[i] < 0) && (degree[i] != n2)) { hash = last[i]; j = head[hash]; if (j == 0) continue; if (j < 0) { i = - j; head[hash] = 0; } else { i = last[j]; last[j] = 0; } if (i == 0) continue; L200: /* WHILE LOOP: */ if (next[i] != 0) { ln = len[i]; eln = elen[i]; for (p = pe[i] + 1; p < pe[i] + ln; p ++) w[iw[p]] = wflg; jlast = i; j = next[i]; L220: /* WHILE LOOP: */ if (j != 0) { if (len[j] != ln) goto L240; if (elen[j] != eln) goto L240; for (p = pe[j] + 1; p < pe[j] + ln; p ++) { if (w[iw[p]] != wflg) goto L240; } /* L230: */ pe[j] = -i; if (wf[j] > wf[i]) wf[i] = wf[j]; nv[i] += nv[j]; nv[j] = 0; elen[j] = 0; j = next[j]; next[jlast] = j; goto L220; L240: jlast = j; j = next[j]; goto L220; } wflg ++; i = next[i]; if (i != 0) goto L200; } } } p = pme1; nleft = n - nel; for (pme = pme1; pme <= pme2; pme ++) { i = iw[pme]; nvi = - nv[i]; if (nvi > 0) { nv[i] = nvi; if (degree[i] != n2) { deg = MIN (degree[i] + degme, nleft) - nvi; if (degree[i] + degme > nleft) { deg = degree[i]; rmf1 = (float) deg * (float) (deg - 1 + (2 * degme)) - (float) wf[i]; degree[i] = nleft - nvi; deg = degree[i]; rmf = (float) deg * (float) (deg - 1) - (float) (degme - nvi) * (float) (degme - nvi - 1); rmf = MIN (rmf, rmf1); } else { deg = degree[i]; degree[i] = degree[i] + degme - nvi; rmf = (float) deg * (float) (deg - 1 + (2 * degme)) - (float) wf[i]; } wf[i] = (Gnum) (rmf / (float) (nvi + 1) + 0.5F); /* Patch 08/12/2010 */ wf[i] = MAX (0, wf[i]); deg = wf[i]; if (deg > n) deg = MIN ((deg - n) / pas + n, nbbuck); inext = head[deg]; if (inext != 0) last[inext] = i; next[i] = inext; last[i] = 0; head[deg] = i; mindeg = MIN (mindeg, deg); } iw[p ++] = i; } } /* L260: */ nv[me] = nvpiv + degme; len[me] = p - pme1; if (len[me] == 0) { pe[me] = 0; w[me] = 0; } if (newmem != 0) { pfree = p; mem = mem - newmem + len[me]; } } /* END WHILE (selecting pivots) */ if (nel < n) { /* Patch 12/12/98 (old: nreal < n) */ for (deg = mindeg; deg <= (nbbuck + 1); deg ++) { me = head[deg]; if (me > 0) break; } mindeg = deg; nelme = - (nel + 1); for (x = 1; x <= n; x ++) { if ((pe[x] > 0) && (elen[x] < 0)) pe[x] = - me; else if (degree[x] == n2) { nel += nv[x]; pe[x] = - me; elen[x] = 0; nv[x] = 0; /* Patch 12/12/98 (old: n + 1) */ } } elen[me] = nelme; nv[me] = n - nreal; /* Patch 12/12/98 (old: n + 1) */ pe[me] = 0; if (nel != n) { /* Error 2 */ *ncmpaptr = - (n + 1); return; } } for (i = 1; i <= n; i ++) { if (elen[i] == 0) { j = - pe[i]; while (elen[j] >= 0) /* L270: */ j = - pe[j]; e = j; k = - elen[e]; j = i; while (elen[j] >= 0) { /* L280: */ jnext = - pe[j]; pe[j] = - e; if (elen[j] == 0) elen[j] = k ++; j = jnext; } elen[e] = - k; } } /* L290: */ #ifdef DEAD_CODE for (i = 1; i <= n; i ++) { /* Patch 19/10/98 */ k = abs (elen[i]); last[k] = i; elen[i] = k; } /* L300: */ #endif /* DEAD_CODE */ /* pfree = maxmem; Patch 08/03/12 No need to update pfree */ *ncmpaptr = ncmpa; } scotch_6.0.9/src/libscotch/library_dgraph_scatter_f.c0000644000302600021200000000646213560013261023212 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_scatter_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 16 feb 2007 **/ /** to 12 jul 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the distributed graph handling */ /* routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ DGRAPHSCATTER, dgraphscatter, ( \ SCOTCH_Dgraph * const dgrfptr, \ SCOTCH_Graph * const cgrfptr, \ int * const revaptr), \ (dgrfptr, cgrfptr, revaptr)) { *revaptr = SCOTCH_dgraphScatter (dgrfptr, cgrfptr); } scotch_6.0.9/src/libscotch/vgraph_separate_bd.h0000644000302600021200000000763213303015264022014 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_bd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** : Cedric CHEVALIER **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the separation graph banding **/ /** module. **/ /** **/ /** DATES : Version 5.0 : from : 18 oct 2004 **/ /** to : 16 sep 2006 **/ /** Version 5.1 : from : 30 oct 2007 **/ /** to : 04 nov 2010 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VgraphSeparateBdParam_ { Gnum distmax; /*+ Maximum distance to separator +*/ Strat * stratbnd; /*+ Strategy for band graph +*/ Strat * stratorg; /*+ Strategy for original graph +*/ } VgraphSeparateBdParam; /*+ Neighbor queue. +*/ typedef struct VgraphSeparateBdQueue_ { Gnum * head; /*+ Head of distance queue +*/ Gnum * tail; /*+ Tail of distance queue +*/ Gnum * qtab; /*+ Array of queue elements +*/ } VgraphSeparateBdQueue; /* ** The function prototypes. */ int vgraphSeparateBd (Vgraph * restrict const, const VgraphSeparateBdParam * restrict const); /* ** The macro definitions. */ #define vgraphSeparateBdQueueFlush(queue) ((queue)->head = (queue)->tail = (queue)->qtab) #define vgraphSeparateBdQueueEmpty(queue) ((queue)->head <= (queue)->tail) #define vgraphSeparateBdQueuePut(queue,vnum) (* ((queue)->head ++) = (vnum)) #define vgraphSeparateBdQueueGet(queue) (* ((queue)->tail ++)) scotch_6.0.9/src/libscotch/wgraph.c0000644000302600021200000001332213470115365017460 0ustar pelegrinpelegrin/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** Charles-Edmond BICHOT (5.1b) **/ /** **/ /** FUNCTION : This module contains the data structure **/ /** handling routines for the vertex overl- **/ /** apped graph partitioning **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 28 may 2010 **/ /** to : 29 may 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH #include "module.h" #include "common.h" #include "graph.h" #include "wgraph.h" /***********************************/ /* */ /* Active graph handling routines. */ /* */ /***********************************/ /* This routine initialize the active graph ** corresponding to the source graph ** It returns: ** - VOID : in all cases. */ void wgraphInit ( Wgraph * restrict const actgrafptr, /* Active graph */ const Graph * restrict const srcgrafptr, /* Source graph */ const Anum partnbr) { actgrafptr->s = *srcgrafptr; /* Clone source graph */ actgrafptr->s.flagval &= ~GRAPHFREETABS; /* Do not free its contents */ actgrafptr->compload = NULL; /* No group leader yet */ actgrafptr->partnbr = partnbr; actgrafptr->parttax = NULL; /* No part array yet */ } /* This routine frees the contents ** of the given active graph ** It returns: ** - VOID : in all cases. */ void wgraphExit ( Wgraph * const grafptr) /* Active graph */ { if (grafptr->compload != NULL) memFree (grafptr->compload); /* Free group leader */ graphExit (&grafptr->s); /* Free source graph */ #ifdef SCOTCH_DEBUG_WGRAPH2 memSet (grafptr, ~0, sizeof (Wgraph)); #endif /* SCOTCH_DEBUG_WGRAPH2 */ } /* This routine builds the active graph ** It returns: ** - 0 : on success. ** - !0 : on error. */ int wgraphAlloc ( Wgraph * const grafptr) /* Active graph */ { Gnum partsiz; Gnum * restrict parttab; partsiz = (grafptr->parttax == NULL) ? grafptr->s.vertnbr : 0; /* Allocate part array only if not already */ if (memAllocGroup ((void **) (void *) &grafptr->compload, (size_t) (grafptr->partnbr * sizeof (Gnum)), &grafptr->compsize, (size_t) (grafptr->partnbr * sizeof (Gnum)), &parttab, (size_t) (partsiz * sizeof (Anum)), &grafptr->frontab, (size_t) (grafptr->s.vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("wgraphAlloc: out of memory (1)"); return (1); } if (grafptr->parttax == NULL) /* Part array does not need flag as will be group freed */ grafptr->parttax = parttab - grafptr->s.baseval; return (0); } /* This routine moves all of the graph ** vertices to the first part. ** It returns: ** - VOID : in all cases. */ void wgraphZero ( Wgraph * const grafptr) { memSet (grafptr->compload, 0, grafptr->partnbr * sizeof (Gnum)); memSet (grafptr->compsize, 0, grafptr->partnbr * sizeof (Gnum)); grafptr->compload[0] = grafptr->s.velosum; grafptr->compsize[0] = grafptr->s.vertnbr; grafptr->fronload = 0; grafptr->fronnbr = 0; memSet (grafptr->parttax + grafptr->s.baseval, 0, grafptr->s.vertnbr * sizeof (Anum)); /* Set all vertices to part 0 */ } scotch_6.0.9/src/libscotch/mesh_graph.c0000644000302600021200000002267113470115365020314 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mesh_graph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the source mesh **/ /** to graph conversion function. **/ /** **/ /** DATES : # Version 4.0 : from : 11 oct 2003 **/ /** to 05 may 2004 **/ /** # Version 5.1 : from : 19 nov 2009 **/ /** to 19 nov 2009 **/ /** # Version 6.0 : from : 15 aug 2016 **/ /** to 13 feb 2018 **/ /** **/ /** NOTES : # From a given mesh is created a graph, **/ /** such that all vertices of the graph **/ /** represent the nodes of the mesh, and **/ /** there exists an edge between two **/ /** vertices if there exists at least one **/ /** element to which the two associated **/ /** nodes belong. **/ /** In order to extract mesh vertex **/ /** partitions from graph vertex **/ /** partitions easily, the vertices of **/ /** the graph are numbered in the same **/ /** order as the nodes of the mesh. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MESH_GRAPH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "mesh_graph.h" /*******************************/ /* */ /* The graph building routine. */ /* */ /*******************************/ /* This routine builds a graph from the ** given mesh. ** It returns: ** - 0 : if the graph has been successfully built. ** - 1 : on error. */ int meshGraph ( const Mesh * restrict const meshptr, /*+ Original mesh +*/ Graph * restrict const grafptr) /*+ Graph to build +*/ { Gnum hashnbr; /* Number of vertices in hash table */ Gnum hashsiz; /* Size of hash table */ Gnum hashmsk; /* Mask for access to hash table */ MeshGraphHash * restrict hashtab; /* Table of edges to other node vertices */ Gnum edgemax; /* Upper bound of number of edges in mesh */ Gnum edgennd; /* Based upper bound on number of edges */ Gnum edgenum; /* Number of current graph edge */ Gnum vertnum; /* Number of current graph vertex */ Gnum degrmax; grafptr->flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP; grafptr->baseval = meshptr->baseval; grafptr->vertnbr = meshptr->vnodnbr; grafptr->vertnnd = meshptr->vnodnbr + meshptr->baseval; for (hashsiz = 32, hashnbr = meshptr->degrmax * meshptr->degrmax * 2; /* Compute size of hash table */ hashsiz < hashnbr; hashsiz <<= 1) ; hashmsk = hashsiz - 1; if (((grafptr->verttax = memAlloc ((meshptr->vnodnbr + 1) * sizeof (Gnum))) == NULL) || ((hashtab = memAlloc (hashsiz * sizeof (MeshGraphHash))) == NULL)) { errorPrint ("meshGraph: out of memory (1)"); if (grafptr->verttax != NULL) memFree (grafptr->verttax); return (1); } grafptr->verttax -= grafptr->baseval; grafptr->vendtax = grafptr->verttax + 1; grafptr->velotax = (meshptr->vnlotax != NULL) /* Keep node part of mesh vertex load array as graph vertex load array */ ? meshptr->vnlotax + meshptr->vnodbas - grafptr->baseval /* Since GRAPHVERTGROUP, no problem on graphFree */ : NULL; grafptr->velosum = meshptr->vnlosum; edgemax = 2 * meshptr->edgenbr; /* Compute lower bound on number of edges in graph */ #ifdef SCOTCH_DEBUG_MESH2 edgemax = meshptr->degrmax + 1; /* Allow testing dynamic reallocation of edge array */ #endif /* SCOTCH_DEBUG_MESH2 */ if ((grafptr->edgetax = memAlloc (edgemax * sizeof (Gnum))) == NULL) { errorPrint ("meshGraph: out of memory (2)"); graphFree (grafptr); return (1); } grafptr->edgetax -= grafptr->baseval; memSet (hashtab, ~0, hashsiz * sizeof (MeshGraphHash)); /* Initialize hash table */ for (vertnum = edgenum = grafptr->baseval, edgennd = edgemax + grafptr->baseval, degrmax = 0; /* Build graph edges */ vertnum < grafptr->vertnnd; vertnum ++) { Gnum vnodnum; Gnum hnodnum; Gnum enodnum; grafptr->verttax[vertnum] = edgenum; vnodnum = vertnum + (meshptr->vnodbas - meshptr->baseval); hnodnum = (vnodnum * MESHGRAPHHASHPRIME) & hashmsk; /* Prevent adding loop edge */ hashtab[hnodnum].vertnum = vnodnum; hashtab[hnodnum].vertend = vnodnum; for (enodnum = meshptr->verttax[vnodnum]; enodnum < meshptr->vendtax[vnodnum]; enodnum ++) { Gnum velmnum; Gnum eelmnum; velmnum = meshptr->edgetax[enodnum]; for (eelmnum = meshptr->verttax[velmnum]; eelmnum < meshptr->vendtax[velmnum]; eelmnum ++) { Gnum vnodend; Gnum hnodend; vnodend = meshptr->edgetax[eelmnum]; for (hnodend = (vnodend * MESHGRAPHHASHPRIME) & hashmsk; ; hnodend = (hnodend + 1) & hashmsk) { if (hashtab[hnodend].vertnum != vnodnum) { /* If edge not yet created */ if (edgenum == edgennd) { /* If edge array already full */ Gnum edgemax; Gnum * restrict edgetmp; edgemax = edgennd - grafptr->baseval; /* Increase size by 25 % */ edgemax = edgemax + (edgemax >> 2); if ((edgetmp = memRealloc (grafptr->edgetax + grafptr->baseval, edgemax * sizeof (Gnum))) == NULL) { errorPrint ("meshGraph: out of memory (3)"); graphFree (grafptr); memFree (hashtab); return (1); } grafptr->edgetax = edgetmp - grafptr->baseval; edgennd = edgemax + grafptr->baseval; } hashtab[hnodend].vertnum = vnodnum; /* Record new edge */ hashtab[hnodend].vertend = vnodend; grafptr->edgetax[edgenum ++] = vnodend - (meshptr->vnodbas - grafptr->baseval); /* Build new edge */ break; } if (hashtab[hnodend].vertend == vnodend) /* If edge already exists */ break; /* Skip to next neighbor */ } } } if ((edgenum - grafptr->verttax[vertnum]) > degrmax) /* Compute maximum degree */ degrmax = (edgenum - grafptr->verttax[vertnum]); } grafptr->verttax[vertnum] = edgenum; /* Set end of vertex array */ grafptr->edlosum = grafptr->edgenbr = edgenum - grafptr->baseval; grafptr->degrmax = degrmax; memFree (hashtab); #ifdef SCOTCH_DEBUG_MESH2 if (graphCheck (grafptr) != 0) { errorPrint ("meshGraph: internal error"); return (1); } #endif /* SCOTCH_DEBUG_MESH2 */ return (0); } scotch_6.0.9/src/libscotch/hdgraph_order_si.h0000644000302600021200000000536013465315041021500 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hdgraph_order_si.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the simple halo graph **/ /** ordering routine. **/ /** **/ /** DATES : # Version 5.0 : from : 15 apr 2006 **/ /** to 15 apr 2006 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int hdgraphOrderSi (const Hdgraph * const, DorderCblk * const); scotch_6.0.9/src/libscotch/kgraph_band.c0000644000302600021200000007755413470115365020451 0ustar pelegrinpelegrin/* Copyright 2009-2011,2013-2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_band.c **/ /** **/ /** AUTHOR : Sebastien FOURESTIER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module computes a k-way band **/ /** graph from the given frontier **/ /** array. **/ /** **/ /** DATES : # Version 6.0 : from : 05 jan 2009 **/ /** to : 28 apr 2019 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** kdgraph_band.c in version 5.2 for **/ /** direct k-way partitioning. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_BAND #include "module.h" #include "common.h" #include "arch.h" #include "graph.h" #include "mapping.h" #include "kgraph.h" #include "kgraph_band.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine computes a index array of given ** width around the current separator. ** It returns: ** - 0 : if the index array could be computed. ** - !0 : on error. */ int kgraphBand ( Kgraph * restrict const grafptr, /*+ Pointer to original graph +*/ const Gnum distmax, /*+ Maximum distance from separator vertices +*/ Kgraph * restrict const bandgrafptr, /*+ Pointer to band graph structure to fill +*/ Gnum * const bandvertlvlptr, /*+ Pointer to based start index of last level +*/ Gnum * restrict * restrict const bandvnumptr) /*+ Pointer to bandvnumtax +*/ { Gnum bandvertnbr; /* Number of band vertices (including anchor vertices) */ Gnum bandvertnnd; /* Based end of band vertex array (without anchor vertices) */ Gnum bandvertnum; Gnum * restrict bandverttax; Gnum * restrict bandvelotax; Gnum * restrict bandvmlotax; Gnum * restrict bandvnumtax; /* Original numbers of vertices in band graph */ #define bandedgetab bandcompload /* TRICK: use delta array to compute edge offsets */ Gnum * restrict bandedgetax; Gnum * restrict bandedlotax; Gnum * restrict bandeeextab; Gnum bandedgenbr; Gnum bandedgenum; Gnum banddegrmax; Gnum * restrict bandfrontab; Anum * restrict bandparttax; Anum * restrict bandparotax; Gnum bandvfixnbr; Gnum bandvertlvlnum; /* Index of first band vertex belonging to last level */ Gnum bandvertancadj; /* Flag set when anchor(s) represent inexistent vertices */ Gnum * restrict vnumotbdtax; /* Original to band graph vertex numbers (~0 if not in band graph, -2 for fixed vertices) */ Gnum * restrict bandanlotab; /* Temporary array to store loads to anchors */ Gnum bandedlonbr; /* Size of local band edge load array */ Gnum bandedlosum; Gnum * restrict bandcompload; Gnum * restrict compload; /* Load of parts in original graph */ Gnum fronnum; Anum domnnbr; Anum domnnum; Gnum veloval; Gnum vertnum; Gnum vfixnum; Gnum vfixflag; KgraphBandHash * restrict termhashtab; Anum termhashmsk; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vendtax = grafptr->s.vendtax; const Gnum * restrict const velotax = grafptr->s.velotax; const Gnum * restrict const edgetax = grafptr->s.edgetax; const Gnum * restrict const edlotax = grafptr->s.edlotax; const Gnum * restrict const frontab = grafptr->frontab; const Gnum * restrict const pfixtax = grafptr->pfixtax; const Anum * restrict const parttax = grafptr->m.parttax; const Anum * restrict const parotax = grafptr->r.m.parttax; const Gnum * restrict const vmlotax = grafptr->r.vmlotax; if (graphBand (&grafptr->s, grafptr->fronnbr, grafptr->frontab, distmax, &vnumotbdtax, &bandvertlvlnum, &bandvertnbr, &bandedgenbr, pfixtax, &bandvfixnbr) != 0) { /* Get vertices to keep in band graph */ errorPrint ("kgraphBand: cannot number graph vertices"); return (1); } if (bandvertlvlptr != NULL) *bandvertlvlptr = bandvertlvlnum; domnnbr = grafptr->m.domnnbr; termhashtab = NULL; bandanlotab = NULL; bandeeextab = NULL; if (pfixtax != NULL) { /* Fixed vertices may be neighbors of band graph vertices and may not belong to the band graph */ Anum termhashsiz; const Arch * restrict const tgtarchptr = grafptr->m.archptr; for (termhashsiz = 0, termhashmsk = domnnbr; termhashmsk != 0; termhashsiz ++, termhashmsk >>= 1) ; /* Get upper power of two */ termhashsiz = 1 << (termhashsiz + 2); /* Fill hash table at 25% maximum */ termhashmsk = termhashsiz - 1; if (memAllocGroup ((void **) (void *) /* Allocation and initialization of fixed vertices temporary arrays */ &termhashtab, (size_t) (termhashsiz * sizeof (KgraphBandHash)), &bandanlotab, (size_t) (domnnbr * sizeof (Gnum)), &bandeeextab, (size_t) (domnnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphBand: out of memory (1)"); return (1); } memSet (termhashtab, ~0, termhashsiz * sizeof (KgraphBandHash)); memSet (bandanlotab, 0, domnnbr * sizeof (Gnum)); /* Assume there are no extra loads to anchors */ memSet (bandeeextab, 0, domnnbr * sizeof (Gnum)); for (domnnum = 0; domnnum < domnnbr; domnnum ++) { ArchDom * domnptr; domnptr = &grafptr->m.domntab[domnnum]; if (archDomSize (tgtarchptr, domnptr) == 1) { /* If domain is terminal */ Gnum termhashnum; Anum termnum; termnum = archDomNum (tgtarchptr, domnptr); /* Get terminal domain number */ for (termhashnum = (termnum * KGRAPHBANDHASHPRIME) & termhashmsk; ; termhashnum = (termhashnum + 1) & termhashmsk) { if (termhashtab[termhashnum].termnum == ~0) { /* If hash slot empty */ termhashtab[termhashnum].termnum = termnum; /* Create slot */ termhashtab[termhashnum].domnnum = domnnum; break; } #ifdef SCOTCH_DEBUG_KGRAPH2 if (termhashtab[termhashnum].termnum == termnum) { /* If hash slot found */ errorPrint ("kgraphBand: duplicate terminal domain in domain array"); memFree (termhashtab); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } } } } bandedgenbr += 2 * (bandvertnbr + grafptr->s.baseval - bandvertlvlnum) + /* Add edges to and from anchors */ grafptr->s.degrmax * grafptr->vfixnbr; /* A band graph vertex that is the neighbour of a fixed vertex will get an extra edge, even if the fixed vertex is not in the band graph */ bandvertnbr += domnnbr; /* Add anchor vertices */ bandedlonbr = ((edlotax != NULL) || (pfixtax != NULL)) ? bandedgenbr : 0; graphInit (&bandgrafptr->s); bandgrafptr->s.flagval = GRAPHFREETABS | GRAPHVERTGROUP | GRAPHEDGEGROUP | /* Arrays created by the routine itself */ KGRAPHFREEFRON | KGRAPHFREECOMP | KGRAPHHASANCHORS; bandgrafptr->s.baseval = grafptr->s.baseval; bandgrafptr->s.vertnbr = bandvertnbr; bandgrafptr->s.vertnnd = bandvertnbr + bandgrafptr->s.baseval; /* With anchor vertices */ bandgrafptr->a = grafptr->a; mapInit2 (&bandgrafptr->m, &bandgrafptr->s, &bandgrafptr->a, &grafptr->m.domnorg, grafptr->m.domnmax, grafptr->m.domnnbr); mapInit2 (&bandgrafptr->r.m, &bandgrafptr->s, &bandgrafptr->a, &grafptr->m.domnorg, grafptr->r.m.domnmax, grafptr->r.m.domnnbr); bandgrafptr->r.m.domntab = grafptr->r.m.domntab; /* Band old mapping domain array is a clone of old mapping (no freeing) */ bandgrafptr->r.m.domnnbr = grafptr->r.m.domnnbr; bandgrafptr->r.crloval = grafptr->r.crloval; bandgrafptr->r.cmloval = grafptr->r.cmloval; bandgrafptr->r.vmlotax = NULL; bandgrafptr->vfixnbr = 0; /* Band graphs do not have fixed vertices */ bandgrafptr->pfixtax = NULL; bandgrafptr->frontab = NULL; /* Frontier array not yet allocated */ bandgrafptr->comploadavg = NULL; /* Computation load arrays not yet allocated */ bandgrafptr->comploaddlt = NULL; bandgrafptr->commload = grafptr->commload; /* Communication load is preserved */ bandgrafptr->kbalval = grafptr->kbalval; bandgrafptr->levlnum = grafptr->levlnum; if (memAllocGroup ((void **) (void *) /* Allocate graph data */ &bandgrafptr->s.verttax, (size_t) ((bandvertnbr + 1) * sizeof (Gnum)), /* Compact vertex array */ &bandgrafptr->s.velotax, (size_t) (bandvertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("kgraphBand: out of memory (2)"); return (1); } bandgrafptr->s.verttax -= bandgrafptr->s.baseval; bandgrafptr->s.velotax -= bandgrafptr->s.baseval; if ((bandvnumtax = memAlloc ((bandvertnbr) * sizeof (Gnum))) == NULL) { /* Allocate alone since it is an output */ errorPrint ("kgraphBand: out of memory (3)"); kgraphExit (bandgrafptr); return (1); } bandvmlotax = NULL; if (vmlotax != NULL) { if ((bandvmlotax = memAlloc (bandvertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (4)"); kgraphExit (bandgrafptr); memFree (bandvnumtax); return (1); } memSet (bandvnumtax + bandvertnbr - domnnbr, ~0, domnnbr * sizeof (Gnum)); /* Prevent Valgrind from yelling when centralizing band graphs */ bandvmlotax -= bandgrafptr->s.baseval; bandgrafptr->r.vmlotax = bandvmlotax; bandgrafptr->s.flagval |= KGRAPHFREEVMLO; } bandparotax = NULL; if (parotax != NULL) { if ((bandparotax = memAlloc (bandvertnbr * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (5)"); if (bandvmlotax != NULL) memFree (bandvmlotax + bandgrafptr->s.baseval); kgraphExit (bandgrafptr); memFree (bandvnumtax); return (1); } memSet (bandparotax + bandvertnbr - bandgrafptr->r.m.domnnbr, ~0, bandgrafptr->r.m.domnnbr * sizeof (Gnum)); /* Prevent Valgrind from yelling when centralizing band graphs */ bandparotax -= bandgrafptr->s.baseval; bandgrafptr->r.m.parttax = bandparotax; bandgrafptr->r.m.flagval |= MAPPINGFREEPART; } if ((bandgrafptr->s.edgetax = memAlloc ((bandedgenbr + bandedlonbr) * sizeof (Gnum))) == NULL) { errorPrint ("kgraphBand: out of memory (6)"); kgraphExit (bandgrafptr); memFree (bandvnumtax); return (1); } bandvnumtax -= bandgrafptr->s.baseval; bandedlotax = NULL; bandedgetax = bandgrafptr->s.edgetax -= bandgrafptr->s.baseval; if ((edlotax != NULL) || (pfixtax != NULL)) { bandgrafptr->s.edlotax = bandedlotax = bandedgetax + bandedgenbr; } if (((bandgrafptr->frontab = memAlloc (bandvertnbr * sizeof (Gnum))) == NULL) || /* Allocation and initialization of imbalance arrays */ (memAllocGroup ((void **) (void *) &bandgrafptr->comploadavg, (size_t) ((domnnbr + 2) * sizeof (Gnum)), /* TRICK: always keep two slots for collective communication */ &bandgrafptr->comploaddlt, (size_t) ((domnnbr + 2) * sizeof (Gnum)), NULL) == NULL)) { errorPrint ("kgraphBand: out of memory (7)"); if (bandgrafptr->frontab != NULL) memFree (bandgrafptr->frontab); return (1); } bandfrontab = bandgrafptr->frontab; if ((bandparttax = memAlloc (bandvertnbr * sizeof (Anum))) == NULL) { errorPrint ("kgraphBand: out of memory (8)"); return (1); } bandgrafptr->m.parttax = bandparttax -= bandgrafptr->s.baseval; if ((bandgrafptr->m.domntab = memAlloc (domnnbr * sizeof (ArchDom))) == NULL) { errorPrint ("kgraphBand: out of memory (9)"); return (1); } bandgrafptr->m.flagval |= MAPPINGFREEDOMN; #ifdef SCOTCH_DEBUG_KGRAPH2 memSet (bandvnumtax + bandgrafptr->s.baseval, ~0, (bandvertnbr * sizeof (Gnum))); #endif /* SCOTCH_DEBUG_KGRAPH2 */ vfixnum = 0; for (fronnum = 0, bandvertnum = bandgrafptr->s.baseval; fronnum < grafptr->fronnbr; fronnum ++) { /* Turn all graph frontier vertices into band frontier vertices */ Gnum vertnum; vertnum = frontab[fronnum]; if ((pfixtax != NULL) && (pfixtax[vertnum] != -1)) /* It is a fixed vertex */ vfixnum ++; else { bandfrontab[bandvertnum - bandgrafptr->s.baseval] = bandvertnum; /* All frontier vertices are first vertices of band graph */ bandvnumtax[bandvertnum] = vertnum; bandvertnum ++; } } bandgrafptr->fronnbr = grafptr->fronnbr - vfixnum; /* Remove fixed vertices from frontier */ for (bandvertnnd = bandvertnbr + bandgrafptr->s.baseval - domnnbr; /* Pick selected band vertices from rest of frontier array without anchors */ bandvertnum < bandvertnnd + bandvfixnbr - vfixnum; fronnum ++) { Gnum vertnum; vertnum = frontab[fronnum]; if ((pfixtax != NULL) && (pfixtax[vertnum] != -1)) /* It is a fixed vertex */ vfixnum ++; else { bandvnumtax[bandvertnum] = vertnum; bandvertnum ++; } } #ifdef SCOTCH_DEBUG_KGRAPH2 if (vfixnum != bandvfixnbr) { errorPrint ("kgraphBand: internal error (1)"); /* All fixed vertices indices must be at the beginning of frontab */ return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ memSet (bandvnumtax + bandvertnnd, ~0, domnnbr * sizeof (Gnum)); /* Prevent Valgrind from yelling when centralizing band graphs */ bandverttax = bandgrafptr->s.verttax; bandvelotax = bandgrafptr->s.velotax; banddegrmax = 0; bandcompload = bandgrafptr->comploaddlt; /* TRICK: use delta array to compute load sums */ memSet (bandcompload, 0, domnnbr * sizeof (Gnum)); bandedlosum = 0; vfixflag = 0; for (bandvertnum = bandedgenum = bandgrafptr->s.baseval; /* Build vertex array of band graph */ bandvertnum < bandvertlvlnum; bandvertnum ++) { /* For all vertices that do not belong to the last level */ Gnum vertnum; Gnum edgenum; Anum partval; Gnum degrval; vertnum = bandvnumtax[bandvertnum]; if (vfixflag == 1) { /* Last vertex had neighbours fixed vertices */ memSet (bandanlotab, 0, domnnbr * sizeof (Gnum)); /* Reset loads to anchors */ vfixflag = 0; /* Guess that these are no extra loads to anchors */ } if (vmlotax != NULL) bandvmlotax[bandvertnum] = vmlotax[vertnum]; if (parotax != NULL) bandparotax[bandvertnum] = parotax[vertnum]; partval = parttax[vertnum]; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((partval < 0) || (partval >= domnnbr)) { errorPrint ("kgraphBand: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ bandparttax[bandvertnum] = partval; bandverttax[bandvertnum] = bandedgenum; veloval = (velotax != NULL) ? velotax[vertnum] : 1; bandcompload[partval] += veloval; /* Sum vertex load for each part */ bandvelotax[bandvertnum] = veloval; degrval = vendtax[vertnum] - verttax[vertnum]; if (banddegrmax < degrval) banddegrmax = degrval; for (edgenum = verttax[vertnum]; /* For all original edges */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; #ifdef SCOTCH_DEBUG_KGRAPH2 if (vnumotbdtax[vertend] == -1) { /* All ends should belong to the band graph too */ errorPrint ("kgraphBand: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (bandedlotax != NULL) { /* If graph has edge weights (always true when fixed vertices present) */ Gnum edloval; Gnum termnum; edloval = (edlotax == NULL) ? 1 : edlotax[edgenum]; if ((pfixtax != NULL) && ((termnum = pfixtax[vertend]) >= 0)) { /* If end vertex is fixed */ Gnum termhashnum; for (termhashnum = (termnum * KGRAPHBANDHASHPRIME) & termhashmsk; ; termhashnum = (termhashnum + 1) & termhashmsk) { if (termhashtab[termhashnum].termnum == termnum) { /* If hash slot found */ bandanlotab[termhashtab[termhashnum].domnnum] += edloval; vfixflag = 1; /* Vertex have some end vertices fixed */ break; } #ifdef SCOTCH_DEBUG_KGRAPH2 if (termhashtab[termhashnum].termnum == ~0) { /* If hash slot not found */ errorPrint ("kgraphBand: missing terminal domain in domain array (1)"); memFree (termhashtab); kgraphExit (bandgrafptr); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } } else { /* End vertex is not fixed */ bandedlosum += edloval; bandedlotax[bandedgenum] = edloval; bandedgetax[bandedgenum ++] = vnumotbdtax[vertend]; } } else bandedgetax[bandedgenum ++] = vnumotbdtax[vertend]; } if (vfixflag == 1) { /* If vertex has at least one neighbours that is fixed */ Gnum edloval; edloval = 0; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* Traverse bandanlotab to handle loads to anchors */ if (bandanlotab[domnnum] != 0) /* Fixed neighbours are linked to this domain */ edloval += bandanlotab[domnnum]; /* Add load induced by edges to fixed vertices */ if (edloval != 0) { /* We have to add an edge to the anchor */ Gnum degrval; bandedlotax[bandedgenum] = edloval; bandedlosum += edloval; bandedgetax[bandedgenum ++] = bandvertnnd + domnnum; /* Add edge to anchor of proper part */ bandeeextab[domnnum] ++; /* One more extra edge to the anchor */ degrval = bandedgenum - bandverttax[bandvertnum]; if (banddegrmax < degrval) banddegrmax = degrval; edloval = 0; } } } } for ( ; bandvertnum < bandvertnnd; bandvertnum ++) { /* For all vertices that belong to the last level except anchors */ Gnum vertnum; Gnum edgenum; Anum partval; vertnum = bandvnumtax[bandvertnum]; if (vfixflag == 1) { /* Last vertex had neighbours fixed vertices */ memSet (bandanlotab, 0, domnnbr * sizeof (Gnum)); /* Reset loads to anchors */ vfixflag = 0; /* Guess that these are no extra loads to anchors */ } if (vmlotax != NULL) bandvmlotax[bandvertnum] = vmlotax[vertnum]; if (parotax != NULL) bandparotax[bandvertnum] = parotax[vertnum]; partval = parttax[vertnum]; #ifdef SCOTCH_DEBUG_KGRAPH2 if ((partval < 0) || (partval >= domnnbr)) { errorPrint ("kgraphBand: internal error (4)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ bandparttax[bandvertnum] = partval; bandverttax[bandvertnum] = bandedgenum; veloval = (velotax != NULL) ? velotax[vertnum] : 1; bandcompload[partval] += veloval; /* Sum vertex load for each part */ bandvelotax[bandvertnum] = veloval; for (edgenum = verttax[vertnum]; /* For all original edges */ edgenum < vendtax[vertnum]; edgenum ++) { Gnum vertend; Gnum bandvertend; vertend = edgetax[edgenum]; bandvertend = vnumotbdtax[vertend]; if (bandedlotax != NULL) { /* If graph has edge weights, copy load */ Gnum edloval; Gnum termnum; edloval = (edlotax == NULL) ? 1 : edlotax[edgenum]; if ((pfixtax != NULL) && ((termnum = pfixtax[vertend]) >= 0)) { /* If end vertex is fixed */ Gnum termhashnum; for (termhashnum = (termnum * KGRAPHBANDHASHPRIME) & termhashmsk; ; termhashnum = (termhashnum + 1) & termhashmsk) { if (termhashtab[termhashnum].termnum == termnum) { /* If hash slot found */ bandanlotab[termhashtab[termhashnum].domnnum] += edloval; vfixflag = 1; /* Vertex have some end vertices fixed */ break; } #ifdef SCOTCH_DEBUG_KGRAPH2 if (termhashtab[termhashnum].termnum == ~0) { /* If hash slot not found */ errorPrint ("kgraphBand: missing terminal domain in domain array (2)"); memFree (termhashtab); kgraphExit (bandgrafptr); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } } else if (bandvertend >= 0) { /* If end vertex is not fixed and in the band graph */ bandedlosum += edloval; bandedlotax[bandedgenum] = edloval; } } if (bandvertend >= 0) /* If end vertex is not fixed and in the band graph */ bandedgetax[bandedgenum ++] = vnumotbdtax[vertend]; } if (vfixflag == 1) { /* If vertex has at least one fixed neighbor */ Gnum edloval; for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* Traverse bandanlotab to handle loads to anchors */ edloval = 0; if (domnnum == partval) /* The current vertex is mapped to current domain */ edloval += 1; /* Add basic edge load to anchor */ if (bandanlotab[domnnum] != 0) /* Fixed neighbours are linked to this domain */ edloval += bandanlotab[domnnum]; /* Add load induced by edges to fixed vertices */ if (edloval != 0) { /* We have to add an edge to the anchor */ Gnum degrval; bandedlotax[bandedgenum] = edloval; bandedlosum += edloval; bandedgetax[bandedgenum ++] = bandvertnnd + domnnum; /* Add edge to anchor of proper part */ if (domnnum != partval) bandeeextab[domnnum] ++; /* One more extra edge to the anchor */ degrval = bandedgenum - bandverttax[bandvertnum]; if (banddegrmax < degrval) banddegrmax = degrval; edloval = 0; } } } else { Gnum degrval; if (bandedlotax != NULL) { /* If graph has edge weights */ bandedlotax[bandedgenum] = 1; /* Edge to anchor has load 1 */ bandedlosum ++; } bandedgetax[bandedgenum ++] = bandvertnnd + partval; /* Add edge to anchor of proper part */ degrval = bandedgenum - bandverttax[bandvertnum]; if (banddegrmax < degrval) banddegrmax = degrval; } } memFree (vnumotbdtax + bandgrafptr->s.baseval); /* Free useless space */ compload = bandgrafptr->comploadavg; /* Use average array to store actual part loads */ memSet (compload, 0, domnnbr * sizeof (Gnum)); for (vertnum = grafptr->s.baseval; vertnum < grafptr->s.vertnnd; vertnum ++) compload[parttax[vertnum]] += (velotax != NULL) ? velotax[vertnum] : 1; for (domnnum = 0, bandvertancadj = 0; domnnum < domnnbr; domnnum ++) { /* For all anchors */ Gnum bandveloval; bandveloval = compload[domnnum] - bandcompload[domnnum]; /* Get load of anchor */ bandparttax[bandvertnnd + domnnum] = domnnum; /* Set parts of anchor vertices */ bandvelotax[bandvertnnd + domnnum] = bandveloval; if (bandveloval == 0) bandvertancadj = 1; } if (bandvertancadj == 1) /* Anchors have to be adjusted */ for (domnnum = 0; domnnum < domnnbr; domnnum ++) /* Increase weight of all anchors to keep balance */ bandvelotax[bandvertnnd + domnnum] ++; bandverttax[bandvertnum] = bandedgenum; /* Fill last element without anchors */ if (pfixtax != NULL) memCpy (bandedgetab, bandeeextab, domnnbr * sizeof (Gnum)); else memSet (bandedgetab, 0, domnnbr * sizeof (Gnum)); for (bandvertnum = bandvertlvlnum; bandvertnum < bandvertnnd; bandvertnum ++) bandedgetab[bandparttax[bandvertnum]] ++; /* Fill array of anchors' degrees */ for (domnnum = 0; domnnum < domnnbr; domnnum ++) { /* Set bandverttax for anchors vertices and pre-set bandedgetab */ Gnum degrval; /* to be able to quickly fill bandedgetax in next loop */ Gnum dispval; degrval = bandedgetab[domnnum]; dispval = bandverttax[bandvertnnd + domnnum]; if (banddegrmax < degrval) /* Update maximum degree value */ banddegrmax = degrval; bandverttax[bandvertnnd + domnnum + 1] = dispval + degrval; bandedgetab[domnnum] = dispval; /* Start index for edges to vertices of last layer */ } if (pfixtax != NULL) { /* We have fixed vertices */ memFree (termhashtab); /* Free group leader */ for (bandvertnum = bandgrafptr->s.baseval, bandedgenum = 0; bandvertnum < bandvertnnd; bandvertnum ++) { /* Link anchors to vertices */ for ( ; bandedgenum < bandverttax[bandvertnum + 1]; bandedgenum ++) { Gnum bandvertend; bandvertend = bandedgetax[bandedgenum]; if (bandvertend >= bandvertnnd) { /* If it is an edge to an anchor */ Gnum partval; /* Add the symmetric edge from the anchor */ Gnum edloval; partval = bandvertend - bandvertnnd; edloval = bandedlotax[bandedgenum]; bandedlotax[bandedgetab[partval]] = edloval; bandedlosum += edloval; bandedgetax[bandedgetab[partval] ++] = bandvertnum; } } } } else { if (bandedlotax != NULL) { /* If graph has edge weights */ Gnum edgenum; Gnum edgennd; for (bandvertnum = bandgrafptr->s.baseval; /* For all vertices not belonging to last level */ bandvertnum < bandvertlvlnum; bandvertnum ++) { Gnum vertnum; Gnum bandedgenum; vertnum = bandvnumtax[bandvertnum]; bandedgenum = bandverttax[bandvertnum]; memCpy (&bandedlotax[bandedgenum], &edlotax[verttax[vertnum]], /* Copy edge load array */ (bandverttax[bandvertnum + 1] - bandedgenum) * sizeof (Gnum)); } /* Vertices of last level have been processed before */ for (edgenum = bandverttax[bandvertnnd], /* Loads of anchor edges are all 1's too */ edgennd = bandverttax[bandvertnnd + domnnbr]; edgenum < edgennd; edgenum ++) bandedlotax[edgenum] = 1; } for (bandvertnum = bandvertlvlnum; bandvertnum < bandvertnnd; /* We do not have fixed vertices */ bandvertnum ++) { /* Link anchors to vertices of last level */ Anum partval; partval = bandparttax[bandvertnum]; bandedgetax[bandedgetab[partval] ++] = bandvertnum; if (bandedlotax != NULL) bandedlotax[bandedgetab[partval] - 1] = 1; bandedlosum ++; } #ifdef SCOTCH_DEBUG_KGRAPH2 for (domnnum = 0; domnnum < domnnbr; domnnum ++) { if (bandedgetab[domnnum] != bandverttax[bandvertnnd + 1 + domnnum]) { errorPrint ("kgraphBand: internal error (6)"); return (1); } } #endif /* SCOTCH_DEBUG_KGRAPH2 */ } bandedgenbr = bandgrafptr->s.verttax[bandvertnnd + domnnbr] - bandgrafptr->s.baseval; /* Set real number of edges */ bandgrafptr->s.vendtax = bandgrafptr->s.verttax + 1; /* Band graph is compact */ bandgrafptr->s.velosum = grafptr->s.velosum + domnnbr * bandvertancadj; bandgrafptr->s.edgenbr = bandedgenbr; if (bandedlotax == NULL) bandedlosum = bandedgenbr; bandgrafptr->s.edlosum = bandedlosum; bandgrafptr->s.degrmax = banddegrmax; /* Local maximum degree will be turned into global maximum degree */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (graphCheck (&bandgrafptr->s) != 0) { errorPrint ("kgraphBand: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ memCpy (bandgrafptr->m.domntab, grafptr->m.domntab, domnnbr * sizeof (ArchDom)); if (pfixtax != NULL) kgraphFron (bandgrafptr); kgraphCost (bandgrafptr); #ifdef SCOTCH_DEBUG_KGRAPH2 if (kgraphCheck (bandgrafptr) != 0) { errorPrint ("kgraphBand: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ *bandvnumptr = bandvnumtax; return (0); } scotch_6.0.9/src/libscotch/common.h0000644000302600021200000004775713560005430017477 0ustar pelegrinpelegrin/* Copyright 2004,2007-2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common.h **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** David GOUDIN **/ /** Pascal HENON **/ /** Pierre RAMET **/ /** Cedric CHEVALIER (v5.0) **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** These lines are the common data **/ /** declarations for all modules. **/ /** **/ /** DATES : # Version 0.0 : from : 08 may 1998 **/ /** to : 08 jan 2001 **/ /** # Version 1.0 : from : 06 jun 2002 **/ /** to : 06 jun 2002 **/ /** # Version 2.0 : from : 13 jun 2005 **/ /** to : 01 jul 2008 **/ /** # Version 5.1 : from : 09 nov 2008 **/ /** to : 23 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 30 oct 2019 **/ /** **/ /************************************************************/ #define COMMON_H /* ** The includes. */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif /* _XOPEN_SOURCE */ #ifndef __USE_XOPEN2K #define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ #endif /* __USE_XOPEN2K */ #ifdef COMMON_WINDOWS #include /* For _pipe () */ #include /* Fow Windows _pipe () call */ #include /* For intptr_t */ #include #define HAVE_STDINT_H #define HAVE_UINT_T #define HAVE_NOT_SYS_WAIT_H #ifdef _MSC_VER #define HAVE_NOT_STRINGS_H #endif /* _MSC_VER */ #ifdef _WIN32 #define strncasecmp strnicmp #define strcasecmp stricmp #endif /* _WIN32 */ #define pipe(fd) _pipe (fd, 32768, O_BINARY) #endif /* COMMON_WINDOWS */ #include #include #include #include #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #ifdef HAVE_MALLOC_H #include /* Deprecated, but required on some old systems */ #endif /* HAVE_MALLOC_H */ #include #ifndef HAVE_NOT_STRINGS_H #include #endif /* HAVE_NOT_STRINGS_H */ #include /* For the effective calls to clock () */ #include #include #include #if ((defined COMMON_TIMING_OLD) || (defined HAVE_SYS_TIME_H)) #include #endif /* ((defined COMMON_TIMING_OLD) || (defined HAVE_SYS_TIME_H)) */ #if ((defined COMMON_TIMING_OLD) || (defined HAVE_SYS_RESOURCE_H)) #include #endif /* ((defined COMMON_TIMING_OLD) || (defined HAVE_SYS_RESOURCE_H)) */ #if ((! defined COMMON_WINDOWS) && (! defined HAVE_NOT_UNISTD_H)) #include #endif /* ((! defined COMMON_WINDOWS) && (! defined HAVE_NOT_UNISTD_H)) */ #ifdef COMMON_MPI #include #endif /* COMMON_MPI */ #ifdef COMMON_PTHREAD #include #else /* COMMON_PTHREAD */ #ifndef HAVE_NOT_SYS_WAIT_H #include /* For waitpid () */ #endif /* HAVE_NOT_SYS_WAIT_H */ #endif /* COMMON_PTHREAD */ /* ** Working definitions. */ #ifdef COMMON_MEMORY_TRACE #define memAlloc(size) memAllocRecord ((size) | 8) #define memRealloc(ptr,size) memReallocRecord ((ptr), ((size) | 8)) #define memFree(ptr) memFreeRecord ((void *) (ptr)) #else /* COMMON_MEMORY_TRACE */ #define memAlloc(size) malloc ((size) | 8) /* For platforms which return NULL for malloc(0) */ #define memRealloc(ptr,size) realloc ((ptr),((size) | 8)) #define memFree(ptr) free ((char *) (ptr)) #endif /* COMMON_MEMORY_TRACE */ #define memSet(ptr,val,siz) memset ((void *) (ptr), (val), (siz)) #define memCpy(dst,src,siz) memcpy ((void *) (dst), (void *) (src), (siz)) #define memMov(dst,src,siz) memmove ((void *) (dst), (void *) (src), (siz)) #ifndef MIN #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #endif /* MIN */ #ifndef MAX #define MAX(x,y) (((x) < (y)) ? (y) : (x)) #endif /* MAX */ #ifndef ABS #define ABS(x) MAX ((x), -(x)) #endif /* ABS */ #ifndef SIGN #define SIGN(x) (((x) < 0) ? -1 : 1) #endif /* SIGN */ /* ** Handling of generic types. */ #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) #define UINT32 uint32_t #else /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) */ #define UINT32 u_int32_t #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) */ #ifndef INT /* If type not externally overriden */ #ifdef INTSIZE32 #define INT int32_t #define UINT UINT32 #define COMM_INT MPI_INTEGER4 #ifdef PRId32 #define INTSTRING "%" PRId32 #define UINTSTRING "%" PRIu32 #else /* PRId32 */ #define INTSTRING "%d" #define UINTSTRING "%u" #endif /* PRId32 */ #else /* INTSIZE32 */ #ifdef INTSIZE64 #define INT int64_t #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) #define UINT uint64_t #else /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) */ #define UINT u_int64_t #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_UINT_T)) */ #define COMM_INT MPI_LONG_LONG #ifdef PRId64 #define INTSTRING "%" PRId64 #define UINTSTRING "%" PRIu64 #else /* PRId64 */ #define INTSTRING "%lld" #define UINTSTRING "%llu" #endif /* PRId64 */ #else /* INTSIZE64 */ #ifdef LONG /* Better not use it */ #define INT long /* Long integer type */ #define UINT unsigned long #define COMM_INT MPI_LONG #define INTSTRING "%ld" #define UINTSTRING "%lu" #else /* LONG */ #define INT int /* Default integer type */ #define UINT unsigned int #define COMM_INT MPI_INT /* Generic MPI integer type */ #define INTSTRING "%d" #define UINTSTRING "%u" #endif /* LONG */ #endif /* INTSIZE64 */ #endif /* INTSIZE32 */ #endif /* INT */ #ifndef IDX /* If type not externally overriden */ #ifdef IDXSIZE32 #define IDX int32_t #else /* IDXSIZE32 */ #ifdef IDXSIZE64 #define IDX int64_t #else /* IDXSIZE64 */ #define IDX INT #endif /* IDXSIZE64 */ #endif /* IDXSIZE32 */ #endif /* IDX */ #ifndef INTSIZEBITS #define INTSIZEBITS (sizeof (INT) << 3) #endif /* INTSIZEBITS */ #define INTVALMAX ((INT) (((UINT) 1 << (INTSIZEBITS - 1)) - 1)) #define byte unsigned char /* Byte type */ #ifndef BYTE #define BYTE byte #endif /* BYTE */ #ifndef COMM_BYTE #define COMM_BYTE MPI_BYTE #endif /* COMM_BYTE */ #define COMM_PART COMM_BYTE /* ** Handling of pseudo-random numbers. */ /* The pseudo-random state structure. It is based on a Mersenne twister generator, also referred to as MT19937. */ typedef struct IntRandState_ { UINT32 randtab[624]; /* State vector */ int randnum; /* Index value */ } IntRandState; /* ** Handling of flag arrays. */ #define flagSize(n) (((n) + (sizeof (int) << 3) - 1) / (sizeof (int) << 3)) #define flagVal(a,n) (((a)[(n) / (sizeof (int) << 3)] >> ((n) & ((sizeof (int) << 3) - 1))) & 1) #define flagSet(a,n) (a)[(n) / (sizeof (int) << 3)] |= (1 << ((n) & ((sizeof (int) << 3) - 1))) /* ** Handling of timers. */ /** The clock type. **/ typedef struct Clock_ { double time[2]; /*+ The start and accumulated times +*/ } Clock; /* ** Handling of threads. */ /** The thread creation flags **/ #define THREADNONE 0x0000 /* Thread capabilities */ #define THREADHASBARRIER 0x0001 #define THREADCANBARRIER THREADHASBARRIER #define THREADCANSCAN THREADHASBARRIER #define THREADCANREDUCE THREADHASBARRIER /** The thread barrier structure and routines **/ #ifdef COMMON_PTHREAD_BARRIER #ifndef PTHREAD_BARRIER_SERIAL_THREAD #define PTHREAD_BARRIER_SERIAL_THREAD -1 #endif /* PTHREAD_BARRIER_SERIAL_THREAD */ typedef struct ThreadBarrier_ { int thrdnbr; /*+ Number of threads to wait for +*/ volatile int thrdcur; /*+ Number of threads currently blocked +*/ volatile int instnum; /*+ Number of barrier instance +*/ pthread_mutex_t mutedat; pthread_cond_t conddat; } ThreadBarrier; int threadBarrierDestroy (ThreadBarrier *); int threadBarrierInit (ThreadBarrier *, void *, int); /* Thread attribute not used */ int threadBarrierWait (ThreadBarrier *); #else /* COMMON_PTHREAD_BARRIER */ #define ThreadBarrier pthread_barrier_t #define threadBarrierDestroy pthread_barrier_destroy #define threadBarrierInit pthread_barrier_init #define threadBarrierWait pthread_barrier_wait #endif /* COMMON_PTHREAD_BARRIER */ #define threadBarrier(t) threadBarrierWait (&(((ThreadGroupHeader *) (((ThreadHeader *) (void *) (t))->grouptr))->barrdat)) /** The thread service routines auxiliary function types **/ typedef int (* ThreadLaunchJoinFunc) (void * const, void * const); typedef int (* ThreadLaunchStartFunc) (void * const); typedef void (* ThreadReduceFunc) (void * const, void * const, void * const); typedef void (* ThreadScanFunc) (void * const, void * const, void * const, const int); /** The thread group header block. **/ typedef struct ThreadGroupHeader_ { int flagval; /*+ Thread block flags +*/ #ifdef COMMON_PTHREAD size_t datasiz; /*+ Size of data array cell +*/ int thrdnbr; /*+ Number of threads +*/ ThreadLaunchStartFunc stafptr; /*+ Pointer to start routine +*/ ThreadLaunchJoinFunc joifptr; /*+ Pointer to join routine +*/ ThreadBarrier barrdat; /*+ Barrier data structure +*/ #endif /* COMMON_PTHREAD */ } ThreadGroupHeader; /** The thread header block. **/ typedef struct ThreadHeader_ { void * grouptr; /*+ Pointer to thread group +*/ #ifdef COMMON_PTHREAD pthread_t thidval; /*+ Thread ID +*/ int thrdnum; /*+ Thread instance number +*/ #endif /* COMMON_PTHREAD */ } ThreadHeader; /* ** Handling of files. */ /** The file flags **/ #define FILEMODE 0x0001 #define FILEMODER 0x0000 #define FILEMODEW 0x0001 #define FILEFREENAME 0x0002 /** The file structure. **/ typedef struct File_ { int flagval; /*+ File mode +*/ char * nameptr; /*+ File name +*/ FILE * fileptr; /*+ File pointer +*/ struct FileCompress_ * compptr; /*+ (De)compression data +*/ } File; /* ** Function prototypes. */ void * memAllocGroup (void **, ...); void * memReallocGroup (void *, ...); void * memOffset (void *, ...); #ifdef COMMON_MEMORY_TRACE void * memAllocRecord (size_t); void * memReallocRecord (void * const, size_t); void memFreeRecord (void * const); IDX memCur (); /* What is internally an intptr_t has to be turned into an interface type */ IDX memMax (); #endif /* COMMON_MEMORY_TRACE */ void usagePrint (FILE * const, const char (* [])); void fileBlockInit (File * const, const int); int fileBlockOpen (File * const, const int); int fileBlockOpenDist (File * const, const int, const int, const int, const int); void fileBlockClose (File * const, const int); int fileCompress (File * const, const int); void fileCompressExit (File * const); int fileCompressType (const char * const); int fileDecompress (File * const, const int); int fileDecompressType (const char * const); char * fileNameDistExpand (char * const, const int, const int); void errorProg (const char * const); void errorPrint (const char * const, ...); void errorPrintW (const char * const, ...); int intLoad (FILE * const, INT * const); int intSave (FILE * const, const INT); void intAscn (INT * const, const INT, const INT); void intPerm (INT * const, const INT); void intRandInit (void); int intRandLoad (FILE * const); void intRandProc (int); void intRandReset (void); int intRandSave (FILE * const); void intRandSeed (INT); #ifndef COMMON_RANDOM_SYSTEM UINT intRandVal (UINT); #endif /* COMMON_RANDOM_SYSTEM */ void intSort1asc1 (void * const, const INT); void intSort2asc1 (void * const, const INT); void intSort2asc2 (void * const, const INT); void intSort3asc1 (void * const, const INT); void intSort3asc2 (void * const, const INT); INT intSearchDicho (const INT * const, const INT, const INT, const INT); INT intGcd (INT, INT); void clockInit (Clock * const); void clockStart (Clock * const); void clockStop (Clock * const); double clockVal (Clock * const); double clockGet (void); void stringSubst (char * const, const char * const, const char * const); #ifdef COMMON_PTHREAD int threadLaunch (void * const, void * const, const size_t, int (*) (void *), int (*) (void *, void *), const int, const int); void threadReduce (void * const, void * const, ThreadReduceFunc const, const int); void threadScan (void * const, void * const, ThreadScanFunc const); #endif /* COMMON_PTHREAD */ /* ** Macro definitions. */ #define clockInit(clk) ((clk)->time[0] = (clk)->time[1] = 0) #define clockStart(clk) ((clk)->time[0] = clockGet ()) #define clockStop(clk) ((clk)->time[1] += (clockGet () - (clk)->time[0])) #define clockVal(clk) ((clk)->time[1]) #define fileBlockFile(b,i) ((b)[i].fileptr) #define fileBlockMode(b,i) ((b)[i].modeptr) #define fileBlockName(b,i) ((b)[i].nameptr) #ifdef COMMON_RANDOM_SYSTEM #ifdef COMMON_RANDOM_RAND #define intRandVal(ival) ((UINT) (((UINT) rand ()) % ((UINT) (ival)))) #else /* COMMON_RANDOM_RAND */ #define intRandVal(ival) ((UINT) (((UINT) random ()) % ((UINT) (ival)))) #endif /* COMMON_RANDOM_RAND */ #endif /* COMMON_RANDOM_SYSTEM */ #define DATASIZE(n,p,i) ((INT) (((n) + ((p) - 1 - (i))) / (p))) #define DATASCAN(n,p,i) ((i) * ((INT) (n) / (INT) (p)) + (((i) > ((n) % (p))) ? ((n) % (p)) : (i))) #define FORTRAN(nu,nl,pl,pc) FORTRAN2(REPLACE(nu),REPLACE(nl),pl,pc) #define FORTRAN2(nu,nl,pl,pc) \ void nu pl; \ void nl pl \ { nu pc; } \ void GLUE(nl,_) pl \ { nu pc; } \ void GLUE(nl,__) pl \ { nu pc; } \ void nu pl #define REPLACE(s) s #define GLUE(p,s) p##s #define STRINGIFY2(n) #n #define STRINGIFY(n) STRINGIFY2(n) scotch_6.0.9/src/libscotch/arch_mesh.h0000644000302600021200000002554313560005302020123 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_mesh.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the mesh graph target architecture **/ /** functions. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 12 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 30 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 17 aug 1995 **/ /** # Version 3.1 : from : 22 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 16 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 09 jan 2004 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 21 jan 2008 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 28 may 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ #ifndef ARCH_MESH_H_STRUCT #define ARCH_MESH_H_STRUCT /*+ Maximum dimension. +*/ #define ARCHMESHDIMNMAX 5 /* Maximum dimension (at least 3) */ /*+ The xD-mesh definitions. +*/ typedef struct ArchMeshX_ { Anum dimnnbr; /*+ Number of mesh dimensions +*/ Anum c[ARCHMESHDIMNMAX]; /*+ Mesh dimensions +*/ } ArchMeshX; typedef struct ArchMeshXDom_ { Anum c[ARCHMESHDIMNMAX][2]; /*+ Inclusive X and Y coordinates +*/ } ArchMeshXDom; typedef struct ArchMeshXMatch_ { ArchCoarsenMulti * multtab; /*+ Multinode array for all coarsenings +*/ Anum dimnnbr; /*+ Number of mesh dimensions +*/ Anum dimnnum; /*+ Current dimension to coarsen +*/ Anum dimntab[ARCHMESHDIMNMAX]; /*+ Mesh dimensions +*/ int passtab[ARCHMESHDIMNMAX]; /*+ Flags for coarsening along dimensions +*/ } ArchMeshXMatch; /*+ The 2D-mesh definitions. +*/ #define ArchMesh2 ArchMeshX #define ArchMesh2Dom ArchMeshXDom #define ArchMesh2Match ArchMeshXMatch /*+ The 3D-mesh definitions. +*/ #define ArchMesh3 ArchMeshX #define ArchMesh3Dom ArchMeshXDom #define ArchMesh3Match ArchMeshXMatch #endif /* ARCH_MESH_H_STRUCT */ /* ** The function prototypes. */ #ifndef ARCH_NOPROTO #ifndef ARCH_MESH_H_PROTO #define ARCH_MESH_H_PROTO int archMesh2ArchLoad (ArchMesh2 * restrict const, FILE * restrict const); int archMesh2ArchSave (const ArchMesh2 * const, FILE * restrict const); #define archMesh2ArchFree NULL #define archMesh2MatchInit archMeshXMatchInit #define archMesh2MatchExit archMeshXMatchExit #define archMesh2MatchMate archMeshXMatchMate ArchDomNum archMesh2DomNum (const ArchMesh2 * const, const ArchMesh2Dom * const); int archMesh2DomTerm (const ArchMesh2 * const, ArchMesh2Dom * restrict const, const ArchDomNum); Anum archMesh2DomSize (const ArchMesh2 * const, const ArchMesh2Dom * const); #define archMesh2DomWght archMesh2DomSize Anum archMesh2DomDist (const ArchMesh2 * const, const ArchMesh2Dom * const, const ArchMesh2Dom * const); #define archMesh2DomFrst archMeshXDomFrst #define archMesh2DomLoad archMeshXDomLoad #define archMesh2DomSave archMeshXDomSave int archMesh2DomBipart (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); int archMesh2DomBipartO (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); int archMesh2DomBipartU (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); int archMesh2DomIncl (const ArchMesh2 * const, const ArchMesh2Dom * const, const ArchMesh2Dom * const); #ifdef SCOTCH_PTSCOTCH int archMesh2DomMpiType (const ArchMesh2 * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ int archMesh3ArchLoad (ArchMesh3 * restrict const, FILE * restrict const); int archMesh3ArchSave (const ArchMesh3 * const, FILE * restrict const); #define archMesh3ArchFree NULL #define archMesh3MatchInit archMeshXMatchInit #define archMesh3MatchExit archMeshXMatchExit #define archMesh3MatchMate archMeshXMatchMate ArchDomNum archMesh3DomNum (const ArchMesh3 * const, const ArchMesh3Dom * const); int archMesh3DomTerm (const ArchMesh3 * const, ArchMesh3Dom * restrict const, const ArchDomNum); Anum archMesh3DomSize (const ArchMesh3 * const, const ArchMesh3Dom * const); #define archMesh3DomWght archMesh3DomSize Anum archMesh3DomDist (const ArchMesh3 * const, const ArchMesh3Dom * const, const ArchMesh3Dom * const); #define archMesh3DomFrst archMeshXDomFrst #define archMesh3DomLoad archMeshXDomLoad #define archMesh3DomSave archMeshXDomSave int archMesh3DomBipart (const ArchMesh3 * const, const ArchMesh3Dom * const, ArchMesh3Dom * restrict const, ArchMesh3Dom * restrict const); int archMesh3DomIncl (const ArchMesh3 * const, const ArchMesh3Dom * const, const ArchMesh3Dom * const); #ifdef SCOTCH_PTSCOTCH int archMesh3DomMpiType (const ArchMesh3 * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ int archMeshXArchLoad (ArchMeshX * restrict const, FILE * restrict const); int archMeshXArchSave (const ArchMeshX * const, FILE * restrict const); #define archMeshXArchFree NULL int archMeshXMatchInit (ArchMeshXMatch * restrict const, const ArchMeshX * restrict const); int archMeshXMatchInit2 (ArchMeshXMatch * restrict const, const Anum, const Anum * restrict const); void archMeshXMatchExit (ArchMeshXMatch * restrict const); Anum archMeshXMatchMate (ArchMeshXMatch * restrict const, ArchCoarsenMulti ** restrict const); ArchDomNum archMeshXDomNum (const ArchMeshX * const, const ArchMeshXDom * const); int archMeshXDomTerm (const ArchMeshX * const, ArchMeshXDom * restrict const, const ArchDomNum); Anum archMeshXDomSize (const ArchMeshX * const, const ArchMeshXDom * const); #define archMeshXDomWght archMeshXDomSize Anum archMeshXDomDist (const ArchMeshX * const, const ArchMeshXDom * const, const ArchMeshXDom * const); int archMeshXDomFrst (const ArchMeshX * const, ArchMeshXDom * const); int archMeshXDomLoad (const ArchMeshX * const, ArchMeshXDom * const, FILE * restrict const); int archMeshXDomSave (const ArchMeshX * const, const ArchMeshXDom * const, FILE * restrict const); int archMeshXDomBipart (const ArchMeshX * const, const ArchMeshXDom * const, ArchMeshXDom * restrict const, ArchMeshXDom * restrict const); int archMeshXDomIncl (const ArchMeshX * const, const ArchMeshXDom * const, const ArchMeshXDom * const); #ifdef SCOTCH_PTSCOTCH int archMeshXDomMpiType (const ArchMeshX * const, MPI_Datatype * const); #endif /* SCOTCH_PTSCOTCH */ #endif /* ARCH_MESH_H_PROTO */ #endif /* ARCH_NOPROTO */ scotch_6.0.9/src/libscotch/graph.h0000644000302600021200000002655713470115365017314 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014-2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : graph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the source graph functions. **/ /** **/ /** DATES : # Version 0.0 : from : 02 dec 1992 **/ /** to 18 may 1993 **/ /** # Version 1.3 : from : 30 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 18 aug 1994 **/ /** # Version 3.0 : from : 07 jul 1995 **/ /** to 28 sep 1995 **/ /** # Version 3.1 : from : 28 nov 1995 **/ /** to 28 nov 1995 **/ /** # Version 3.2 : from : 07 sep 1996 **/ /** to 15 sep 1998 **/ /** # Version 3.3 : from : 28 sep 1998 **/ /** to 23 mar 1999 **/ /** # Version 3.4 : from : 20 mar 2000 **/ /** to 20 mar 2000 **/ /** # Version 4.0 : from : 24 nov 2001 **/ /** to 03 mar 2006 **/ /** # Version 5.0 : from : 03 mar 2006 **/ /** to 01 jun 2008 **/ /** # Version 5.1 : from : 11 aug 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 10 may 2019 **/ /** **/ /************************************************************/ #define GRAPH_H /* ** The defines. */ /*+ Graph option flags. +*/ #define GRAPHNONE 0x0000 /*+ No options set +*/ #define GRAPHFREEEDGE 0x0001 /*+ Free edgetab array +*/ #define GRAPHFREEVERT 0x0002 /*+ Free verttab array +*/ #define GRAPHFREEVNUM 0x0004 /*+ Free vnumtab array +*/ #define GRAPHFREEOTHR 0x0008 /*+ Free all other arrays +*/ #define GRAPHFREETABS 0x000F /*+ Free all graph arrays +*/ #define GRAPHVERTGROUP 0x0010 /*+ All vertex arrays grouped +*/ #define GRAPHEDGEGROUP 0x0020 /*+ All edge arrays grouped +*/ #define GRAPHBITSUSED 0x003F /*+ Significant bits for plain graph routines +*/ #define GRAPHBITSNOTUSED 0x0040 /*+ Value above which bits not used by plain graph routines +*/ #define GRAPHIONOLOADVERT 1 /*+ Remove vertex loads on loading +*/ #define GRAPHIONOLOADEDGE 2 /*+ Remove edge loads on loading +*/ /* ** The type and structure definitions. */ #ifndef GNUMMAX /* If dgraph.h not included */ typedef INT Gnum; /* Vertex and edge numbers */ typedef UINT Gunum; /* Unsigned type of same width */ #define GNUMMAX INTVALMAX /* Maximum signed Gnum value */ #define GNUMMIN (-GNUMMAX - 1) /* Minimum signed Gnum value */ #define GNUMSTRING INTSTRING /* String to printf a Gnum */ #endif /* GNUMMAX */ /*+ The vertex part type, in compressed form. +*/ typedef byte GraphPart; /*+ The vertex list structure. Since a vertex list always refers to a given graph, vertex indices contained in the vertex list array are based with respect to the base value of the associated graph. However, the array itself is not based. +*/ typedef struct VertList_ { Gnum vnumnbr; /*+ Number of vertices in list +*/ Gnum * vnumtab; /*+ Pointer to vertex array +*/ } VertList; /*+ The graph flag type. +*/ typedef int GraphFlag; /*+ Graph property flags +*/ /*+ The graph parallel context structure. +*/ #ifdef SCOTCH_PTSCOTCH typedef struct GraphProc_ { MPI_Comm proccomm; /*+ Communicator used for parallel algorithm +*/ int procglbnbr; /*+ Number of processes in communicator +*/ int proclocnum; /*+ Rank of process in current communicator +*/ } GraphProc; #endif /* SCOTCH_PTSCOTCH */ /*+ The graph structure. +*/ typedef struct Graph_ { GraphFlag flagval; /*+ Graph properties +*/ Gnum baseval; /*+ Base index for edge/vertex arrays +*/ Gnum vertnbr; /*+ Number of vertices in graph +*/ Gnum vertnnd; /*+ Number of vertices in graph, plus baseval +*/ Gnum * verttax; /*+ Vertex array [based] +*/ Gnum * vendtax; /*+ End vertex array [based] +*/ Gnum * velotax; /*+ Vertex load array (if present) +*/ Gnum velosum; /*+ Overall graph vertex load +*/ Gnum * vnumtax; /*+ Vertex number in ancestor graph +*/ Gnum * vlbltax; /*+ Vertex label (from file) +*/ Gnum edgenbr; /*+ Number of edges (arcs) in graph +*/ Gnum * edgetax; /*+ Edge array [based] +*/ Gnum * edlotax; /*+ Edge load array (if present) +*/ Gnum edlosum; /*+ Sum of edge (in fact arc) loads +*/ Gnum degrmax; /*+ Maximum degree +*/ struct GraphProc_ * procptr; /*+ Pointer to parallel context (if any) +*/ } Graph; /* ** The function prototypes. */ int listInit (VertList *); void listExit (VertList *); int listAlloc (VertList *, Gnum); int listFree (VertList *); int listLoad (VertList *, FILE *); int listSave (VertList *, FILE *); void listSort (VertList *); int listCopy (VertList *, VertList *); int graphInit (Graph * const); void graphExit (Graph * const); void graphFree (Graph * const); Gnum graphBase (Graph * const, const Gnum); int graphBand (const Graph * restrict const, const Gnum, Gnum * restrict const, const Gnum, Gnum * restrict * restrict const, Gnum * restrict const, Gnum * restrict const, Gnum * restrict const, const Gnum * restrict const, Gnum * restrict const); int graphCheck (const Graph *); int graphClone (const Graph *, Graph *); Gnum graphDiamPV (const Graph * const); Gnum graphIelo (const Graph * const, Gnum * const, Gnum * const); int graphInduceList (const Graph * restrict const, const Gnum, const Gnum * restrict const, Graph * restrict const); int graphInducePart (const Graph * restrict const, const GraphPart * restrict const, const Gnum, const GraphPart, Graph * restrict const); int graphLoad (Graph * const, FILE * const, const Gnum, const GraphFlag); int graphLoad2 (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * restrict const, const Gnum, const Gnum * const); int graphSave (const Graph * const, FILE * const); #ifdef GEOM_H int graphGeomLoadChac (Graph * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomSaveChac (const Graph * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomLoadHabo (Graph * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomLoadMmkt (Graph * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomSaveMmkt (const Graph * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomLoadScot (Graph * restrict const, Geom * restrict const, FILE * const, FILE * const, const char * const); int graphGeomSaveScot (const Graph * restrict const, const Geom * restrict const, FILE * const, FILE * const, const char * const); #endif /* GEOM_H */ scotch_6.0.9/src/libscotch/common_file_decompress.c0000644000302600021200000003476513560005430022710 0ustar pelegrinpelegrin/* Copyright 2008,2010,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_file_decompress.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles compressed streams **/ /** for decompression. **/ /** **/ /** DATES : # Version 5.0 : from : 11 mar 2008 **/ /** to : 15 may 2008 **/ /** # Version 5.1 : from : 27 jun 2010 **/ /** to 27 jun 2010 **/ /** # Version 6.0 : from : 27 apr 2015 **/ /** to 14 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_FILE #define COMMON_FILE_DECOMPRESS #ifndef COMMON_NOMODULE #include "module.h" #endif /* COMMON_NOMODULE */ #include "common.h" #include "common_file.h" #include "common_file_compress.h" #ifdef COMMON_FILE_COMPRESS_BZ2 #include "bzlib.h" #endif /* COMMON_FILE_COMPRESS_BZ2 */ #ifdef COMMON_FILE_COMPRESS_GZ #include "zlib.h" #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA #include "lzma.h" #endif /* COMMON_FILE_COMPRESS_LZMA */ /* ** The static definitions. */ static FileCompressTab filetab[] = { #ifdef COMMON_FILE_COMPRESS_BZ2 { ".bz2", FILECOMPRESSTYPEBZ2, }, #else /* COMMON_FILE_COMPRESS_BZ2 */ { ".bz2", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_BZ */ #ifdef COMMON_FILE_COMPRESS_GZ { ".gz", FILECOMPRESSTYPEGZ, }, #else /* COMMON_FILE_COMPRESS_GZ */ { ".gz", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA { ".lzma", FILECOMPRESSTYPELZMA }, { ".xz", FILECOMPRESSTYPELZMA }, #else /* COMMON_FILE_COMPRESS_LZMA */ { ".lzma", FILECOMPRESSTYPENOTIMPL }, { ".xz", FILECOMPRESSTYPENOTIMPL }, #endif /* COMMON_FILE_COMPRESS_LZMA */ { NULL, FILECOMPRESSTYPENOTIMPL } }; /*********************************/ /* */ /* Basic routines for filenames. */ /* */ /*********************************/ /* This routine searches the given file name ** for relevant extensions and returns the ** corresponding code if it is the case. ** It returns: ** - FILECOMPRESSTYPENONE : no recognized file extension. ** - FILECOMPRESSTYPENOTIMPL : compression algorithm not implemented. ** - FILECOMPRESSTYPExxxx : implemented compression algorithm. */ int fileDecompressType ( const char * const nameptr) /*+ Name string +*/ { int namelen; int i; namelen = strlen (nameptr); for (i = 0; filetab[i].name != NULL; i ++) { int extnlen; /* Name of extension string */ extnlen = strlen (filetab[i].name); if ((namelen >= extnlen) && (strncmp (filetab[i].name, nameptr + (namelen - extnlen), extnlen) == 0)) return (filetab[i].type); } return (FILECOMPRESSTYPENONE); } /* This routine creates a thread to decompress the ** given stream according to the given (un)compression ** algorithm. ** If threads are available, decompression will be ** performed by an auxiliary thread. Else, a child process ** will be fork()'ed, and after completion this process ** will remain a zombie until the main process terminates. ** It returns: ** - !NULL : stream holding decompressed data. ** - NULL : on error. */ static void * /* (void *) to comply to the Posix pthread API */ fileDecompress2 ( FileCompress * const compptr) { switch (compptr->typeval) { #ifdef COMMON_FILE_COMPRESS_BZ2 case FILECOMPRESSTYPEBZ2 : fileDecompressBz2 (compptr); break; #endif /* COMMON_FILE_COMPRESS_BZ2 */ #ifdef COMMON_FILE_COMPRESS_GZ case FILECOMPRESSTYPEGZ : fileDecompressGz (compptr); break; #endif /* COMMON_FILE_COMPRESS_GZ */ #ifdef COMMON_FILE_COMPRESS_LZMA case FILECOMPRESSTYPELZMA : fileDecompressLzma (compptr); break; #endif /* COMMON_FILE_COMPRESS_LZMA */ default : errorPrint ("fileDecompress2: method not implemented"); } close (compptr->infdnum); /* Close writer's end */ memFree (compptr->bufftab); /* Free data buffer */ #ifdef COMMON_DEBUG compptr->bufftab = NULL; #endif /* COMMON_DEBUG */ return (NULL); /* Don't care anyway */ } int fileDecompress ( File * const fileptr, /*+ Compressed input stream +*/ const int typeval) /*+ (Un)compression algorithm +*/ { int filetab[2]; FILE * readptr; FileCompress * compptr; if (typeval <= FILECOMPRESSTYPENONE) /* If nothing to do */ return (0); if (pipe (filetab) != 0) { errorPrint ("fileDecompress: cannot create pipe"); return (1); } if ((readptr = fdopen (filetab[0], "r")) == NULL) { /* New stream master will read from */ errorPrint ("fileDecompress: cannot create stream"); close (filetab[0]); close (filetab[1]); return (1); } if (((compptr = memAlloc (sizeof (FileCompress))) == NULL) || /* Compression structure to be freed by master */ ((compptr->bufftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL)) { errorPrint ("fileDecompress: out of memory"); if (compptr != NULL) memFree (compptr); fclose (readptr); close (filetab[1]); return (1); } compptr->typeval = typeval; /* Fill structure to be passed to decompression thread/process */ compptr->infdnum = filetab[1]; compptr->oustptr = fileptr->fileptr; /* Compressed stream to read from */ #ifdef COMMON_PTHREAD_FILE if (pthread_create (&compptr->thrdval, NULL, (void * (*) (void *)) fileDecompress2, (void *) compptr) != 0) { /* If could not create thread */ errorPrint ("fileDecompress: cannot create thread"); memFree (compptr->bufftab); memFree (compptr); fclose (readptr); close (filetab[1]); return (1); } #else /* COMMON_PTHREAD_FILE */ switch (compptr->procval = fork ()) { case -1 : /* Error */ errorPrint ("fileDecompress: cannot create child process"); memFree (compptr->bufftab); memFree (compptr); fclose (readptr); close (filetab[1]); return (1); case 0 : /* We are the son process */ fclose (readptr); /* Close reader pipe stream */ fileDecompress2 (compptr); /* Perform decompression */ exit (EXIT_SUCCESS); /* Exit gracefully */ default : /* We are the father process */ close (filetab[1]); /* Close the writer pipe end */ } #endif /* COMMON_PTHREAD_FILE */ fileptr->fileptr = readptr; /* Master can read from pipe */ fileptr->compptr = compptr; return (0); } /* This routine decompresses a stream compressed ** in the bzip2 format. ** It returns: ** - void : in all cases. Decompression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_BZ2 static void fileDecompressBz2 ( FileCompress * const compptr) { BZFILE * decoptr; int bytenbr; int flagval; if (FILECOMPRESSDATASIZE < (BZ_MAX_UNUSED)) { errorPrint ("fileDecompressBz2: cannot start decompression (1)"); return; } if ((decoptr = BZ2_bzReadOpen (&flagval, compptr->oustptr, 0, 0, NULL, 0)) == NULL) { errorPrint ("fileDecompressBz2: cannot start decompression (2)"); BZ2_bzReadClose (&flagval, decoptr); return; } while ((bytenbr = BZ2_bzRead (&flagval, decoptr, compptr->bufftab, FILECOMPRESSDATASIZE), flagval) >= BZ_OK) { /* If BZ_OK or BZ_STREAM_END */ if (write (compptr->infdnum, compptr->bufftab, bytenbr) != bytenbr) { errorPrint ("fileDecompressBz2: cannot write"); flagval = BZ_STREAM_END; /* Avoid other error message */ break; } if (flagval == BZ_STREAM_END) { /* If end of compressed stream */ void * byunptr; int byunnbr; BZ2_bzReadGetUnused (&flagval, decoptr, &byunptr, &byunnbr); /* Get remaining chars in stream */ if ((byunnbr == 0) && (feof (compptr->oustptr) != 0)) { /* If end of decompressed stream too */ flagval = BZ_STREAM_END; break; } memMov (compptr->bufftab, byunptr, byunnbr); BZ2_bzReadClose (&flagval, decoptr); if ((decoptr = BZ2_bzReadOpen (&flagval, compptr->oustptr, 0, 0, compptr->bufftab, byunnbr)) == NULL) { errorPrint ("fileDecompressBz2: cannot start decompression (3)"); flagval = BZ_STREAM_END; break; } } } if (flagval != BZ_STREAM_END) errorPrint ("fileDecompressBz2: cannot read"); BZ2_bzReadClose (&flagval, decoptr); fclose (compptr->oustptr); /* Do as zlib does */ } #endif /* COMMON_FILE_COMPRESS_BZ2 */ /* This routine decompresses a stream compressed ** in the gzip format. ** It returns: ** - void : in all cases. Decompression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_GZ static void fileDecompressGz ( FileCompress * const compptr) { gzFile decoptr; int bytenbr; if ((decoptr = gzdopen (fileno (compptr->oustptr), "rb")) == NULL) { errorPrint ("fileDecompressGz: cannot start decompression"); return; } while ((bytenbr = gzread (decoptr, compptr->bufftab, FILECOMPRESSDATASIZE)) > 0) { if (write (compptr->infdnum, compptr->bufftab, bytenbr) != bytenbr) { errorPrint ("fileDecompressGz: cannot write"); break; } } if (bytenbr < 0) errorPrint ("fileDecompressGz: cannot read"); gzclose (decoptr); } #endif /* COMMON_FILE_COMPRESS_GZ */ /* This routine decompresses a stream compressed ** in the lzma format. ** It returns: ** - void : in all cases. Decompression stops ** immediately in case of error. */ #ifdef COMMON_FILE_COMPRESS_LZMA static void fileDecompressLzma ( FileCompress * const compptr) { lzma_stream decodat = LZMA_STREAM_INIT; /* Decoder data */ lzma_action deacval; /* Decoder action value */ lzma_ret dereval; /* Decoder return value */ byte * obuftab; /* Decoder output buffer */ if ((obuftab = memAlloc (FILECOMPRESSDATASIZE)) == NULL) { errorPrint ("fileDecompressLzma: out of memory"); return; } if (lzma_stream_decoder (&decodat, UINT64_MAX, LZMA_CONCATENATED) != LZMA_OK) { errorPrint ("fileDecompressLzma: cannot start decompression"); memFree (obuftab); return; } deacval = LZMA_RUN; dereval = LZMA_OK; decodat.avail_in = 0; decodat.next_out = obuftab; decodat.avail_out = FILECOMPRESSDATASIZE; do { if ((decodat.avail_in == 0) && (deacval == LZMA_RUN)) { ssize_t bytenbr; bytenbr = fread (compptr->bufftab, 1, FILECOMPRESSDATASIZE, compptr->oustptr); /* Read from pipe */ if (bytenbr < 0) { errorPrint ("fileDecompressLzma: cannot read"); break; } if (bytenbr == 0) deacval = LZMA_FINISH; /* If end of stream, request completion of encoding */ decodat.next_in = compptr->bufftab; decodat.avail_in = bytenbr; } dereval = lzma_code (&decodat, deacval); if ((decodat.avail_out == 0) || (dereval == LZMA_STREAM_END)) { /* Write when output buffer full or end of encoding */ size_t obufnbr; obufnbr = FILECOMPRESSDATASIZE - decodat.avail_out; /* Compute number of bytes to write */ if (write (compptr->infdnum, obuftab, obufnbr) != obufnbr) { errorPrint ("fileDecompressLzma: cannot write"); break; } decodat.next_out = obuftab; decodat.avail_out = FILECOMPRESSDATASIZE; } } while (dereval == LZMA_OK); lzma_end (&decodat); memFree (obuftab); fclose (compptr->oustptr); /* Do as zlib does */ } #endif /* COMMON_FILE_COMPRESS_LZMA */ scotch_6.0.9/src/libscotch/library_graph_order_f.c0000644000302600021200000002672313560013261022516 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_order_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** graph ordering routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.4 : from : 02 feb 2000 **/ /** to 15 nov 2001 **/ /** # Version 4.0 : from : 02 feb 2002 **/ /** to 13 dec 2005 **/ /** # Version 5.0 : from : 04 aug 2007 **/ /** to 31 may 2008 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 25 jul 2010 **/ /** # Version 6.0 : from : 08 jan 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "scotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERINIT, graphorderinit, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Ordering * const ordeptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (grafptr, ordeptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_graphOrderInit (grafptr, ordeptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDEREXIT, graphorderexit, ( \ const SCOTCH_Graph * const grafptr, \ SCOTCH_Ordering * const ordeptr), \ (grafptr, ordeptr)) { SCOTCH_graphOrderExit (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERSAVE, graphordersave, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphOrderSave (grafptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERSAVEMAP, graphordersavemap, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVEMAP)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVEMAP)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphOrderSaveMap (grafptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERSAVETREE, graphordersavetree, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Ordering * const ordeptr, \ int * const fileptr, \ int * const revaptr), \ (grafptr, ordeptr, fileptr, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVETREE)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "w")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (GRAPHORDERSAVETREE)) ": cannot open output stream"); close (filenum); *revaptr = 1; return; } o = SCOTCH_graphOrderSaveTree (grafptr, ordeptr, stream); fclose (stream); /* This closes filenum too */ *revaptr = o; } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERCOMPUTE, graphordercompute, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Ordering * const ordeptr, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, ordeptr, straptr, revaptr)) { *revaptr = SCOTCH_graphOrderCompute (grafptr, ordeptr, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERCOMPUTELIST, graphordercomputelist, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Ordering * const ordeptr, \ const SCOTCH_Num * listptr, \ const SCOTCH_Num * const listtab, \ SCOTCH_Strat * const straptr, \ int * const revaptr), \ (grafptr, ordeptr, listptr, listtab, straptr, revaptr)) { *revaptr = SCOTCH_graphOrderComputeList (grafptr, ordeptr, *listptr, listtab, straptr); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDER, graphorder, ( \ SCOTCH_Graph * const grafptr, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (grafptr, straptr, permtab, peritab, \ cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_graphOrder (grafptr, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERLIST, graphorderlist, ( \ SCOTCH_Graph * const grafptr, \ const SCOTCH_Num * listptr, \ const SCOTCH_Num * const listtab, \ SCOTCH_Strat * const straptr, \ SCOTCH_Num * const permtab, \ SCOTCH_Num * const peritab, \ SCOTCH_Num * const cblkptr, \ SCOTCH_Num * const rangtab, \ SCOTCH_Num * const treetab, \ int * const revaptr), \ (grafptr, listptr, listtab, straptr, \ permtab, peritab, cblkptr, rangtab, treetab, revaptr)) { *revaptr = SCOTCH_graphOrderList (grafptr, *listptr, listtab, straptr, permtab, peritab, cblkptr, rangtab, treetab); } /* ** */ SCOTCH_FORTRAN ( \ GRAPHORDERCHECK, graphordercheck, ( \ const SCOTCH_Graph * const grafptr, \ const SCOTCH_Ordering * const ordeptr, \ int * const revaptr), \ (grafptr, ordeptr, revaptr)) { *revaptr = SCOTCH_graphOrderCheck (grafptr, ordeptr); } /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHORDER, stratgraphorder, ( \ SCOTCH_Strat * const straptr, \ const char * const string, \ int * const revaptr, \ const int strnbr), \ (straptr, string, revaptr, strnbr)) { char * restrict strtab; /* Pointer to null-terminated string */ if ((strtab = (char *) memAlloc (strnbr + 1)) == NULL) { /* Allocate temporary space */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (STRATGRAPHORDER)) ": out of memory"); *revaptr = 1; return; } memCpy (strtab, string, strnbr); /* Copy string contents */ strtab[strnbr] = '\0'; /* Terminate string */ *revaptr = SCOTCH_stratGraphOrder (straptr, strtab); /* Call original routine */ memFree (strtab); /* Prevent compiler warnings */ } /* ** */ SCOTCH_FORTRAN ( \ STRATGRAPHORDERBUILD, stratgraphorderbuild, ( \ SCOTCH_Strat * const straptr, \ const SCOTCH_Num * const flagval, \ const SCOTCH_Num * const levlnbr, \ const double * const kbalval, \ int * const revaptr), \ (straptr, flagval, levlnbr, kbalval, revaptr)) { *revaptr = SCOTCH_stratGraphOrderBuild (straptr, *levlnbr, *flagval, *kbalval); } scotch_6.0.9/src/libscotch/dgraph_band_grow.c0000644000302600021200000007064113560005435021462 0ustar pelegrinpelegrin/* Copyright 2007-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_band_grow.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module flags vertices according **/ /** to a breadth-first search traversal of **/ /** the distributed graph. It is used both **/ /** by dgraphBand() and **/ /** SCOTCH_dgraphGrow(). **/ /** **/ /** DATES : # Version 5.1 : from : 11 nov 2007 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 03 apr 2012 **/ /** to : 21 may 2018 **/ /** **/ /** NOTES : # This code derives from the code of **/ /** vdgraph_separate_bd.c in version **/ /** 5.0. It was first moved to **/ /** dgraph_band.c, then to here to be **/ /** mutualized between dgraphBand and **/ /** dgraphGrow. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPHBANDGROWNSTR STRINGIFY (DGRAPHBANDGROWNAME) /**********************************/ /* */ /* Distance computation routines. */ /* */ /**********************************/ /* This routine computes a distributed index array ** of given width around the current separator, ** using collective communication. ** It returns: ** - 0 : if the index array could be computed. ** - !0 : on error. */ int DGRAPHBANDGROWNAMECOLL ( Dgraph * restrict const grafptr, /*+ Distributed graph +*/ const Gnum queulocnbr, /*+ Number of frontier vertices, start size for vertex queue +*/ Gnum * restrict const queuloctab, /*+ Array of frontier vertices, re-used as queue array +*/ const Gnum distmax, /*+ Maximum distance from separator vertices +*/ Gnum * restrict const vnumgsttax, /*+ Flag or index array to fill +*/ Gnum * restrict const bandvertlvlptr, /*+ Pointer to based start index of last level +*/ Gnum * restrict const bandvertlocptr, /*+ Pointer to bandvertlocnnd +*/ Gnum * restrict const bandedgelocptr) /*+ Pointer to bandedgelocnbr +*/ { Gnum vertlocnnd; Gnum vrcvdatsiz; /* Sizes of data send and receive arrays */ Gnum vsnddatsiz; Gnum * vrcvdattab; /* Data arrays [norestrict:async] */ Gnum * restrict vsnddattab; Gnum * restrict procvgbtab; /* Array of neighbor bounds [+1] */ int procngbnbr; int procngbnum; int * restrict vrcvcnttab; int * restrict vsndcnttab; int * restrict vrcvdsptab; int * restrict vsnddsptab; int * restrict nsndidxtab; int vrcvdspnum; int vsnddspnum; Gnum queuheadidx; /* Index of head of queue */ Gnum queutailidx; /* Index of tail of queue */ Gnum bandvertlvlnum; Gnum bandvertlocnnd; Gnum bandedgelocnbr; Gnum distval; #ifdef SCOTCH_DEBUG_DGRAPH1 Gnum reduloctab[3]; Gnum reduglbtab[3]; #else /* SCOTCH_DEBUG_DGRAPH1 */ Gnum reduglbtab[1]; #endif /* SCOTCH_DEBUG_DGRAPH1 */ const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; procngbnbr = grafptr->procngbnbr; reduglbtab[0] = 0; /* Assume everything is all right */ vrcvdatsiz = DGRAPHBANDGROWSMUL (grafptr->procsndnbr); /* Senders and receivers inverted because we send local, not halo vertices */ vsnddatsiz = DGRAPHBANDGROWSMUL (grafptr->vertgstnbr - grafptr->vertlocnbr); procvgbtab = NULL; /* In case of error */ if ((vnumgsttax == NULL) || (memAllocGroup ((void **) (void *) &procvgbtab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), &nsndidxtab, (size_t) (procngbnbr * sizeof (int)), &vrcvcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &vsndcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), /* TRICK: vsndcnttab, vrcvdsptab, vrcvdattab, vrcvdattab joined */ &vrcvdsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &vsnddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &vrcvdattab, (size_t) (vrcvdatsiz * sizeof (Gnum)), &vsnddattab, (size_t) (vsnddatsiz * sizeof (Gnum)), NULL) == NULL)) { errorPrint (DGRAPHBANDGROWNSTR "Coll: out of memory (1)"); reduglbtab[0] = 1; } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication not needed and not absorbable by the algorithm */ reduloctab[0] = reduglbtab[0]; reduloctab[1] = distmax; reduloctab[2] = - distmax; if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Coll: communication error (1)"); return (1); } if (reduglbtab[1] != - reduglbtab[2]) { errorPrint (DGRAPHBANDGROWNSTR "Coll: invalid parameters"); reduglbtab[0] = 1; } #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (reduglbtab[0] != 0) { if (procvgbtab != NULL) memFree (procvgbtab); /* Free group leader */ return (1); } memSet (vsndcnttab, 0, (((int *) vrcvdattab) - vsndcnttab) * sizeof (int)); /* TRICK: vsndcnttab, vrcvdsptab, vrcvdattab, vrcvdattab joined */ for (procngbnum = 0, vrcvdspnum = vsnddspnum = 0; /* Build communication index arrays */ procngbnum < procngbnbr; procngbnum ++) { int procglbnum; procglbnum = grafptr->procngbtab[procngbnum]; procvgbtab[procngbnum] = grafptr->procvrttab[procglbnum]; vrcvdsptab[procglbnum] = vrcvdspnum; vsnddsptab[procglbnum] = vsnddspnum; vrcvdspnum += DGRAPHBANDGROWSMUL (grafptr->procsndtab[procglbnum]); /* Senders and receivers are reversed */ vsnddspnum += DGRAPHBANDGROWSMUL (grafptr->procrcvtab[procglbnum]); } procvgbtab[procngbnum] = grafptr->procvrttab[grafptr->procglbnbr]; bandvertlvlnum = /* Start index of last level is start index */ bandvertlocnnd = grafptr->baseval; /* Reset number of band vertices, plus base */ bandedgelocnbr = 0; /* No edges accounted for yet */ DGRAPHBANDGROWENQ1; /* Record queued vertices in index array and account for their edges */ vertlocnnd = grafptr->vertlocnnd; queuheadidx = 0; /* No queued vertex read yet */ queutailidx = queulocnbr; /* All frontier vertices are already in queue */ for (distval = 0; ++ distval <= distmax; ) { Gnum queunextidx; /* Tail index for enqueuing vertices of next band */ int procngbnum; bandvertlvlnum = bandvertlocnnd; /* Save start index of current level, based */ *bandvertlvlptr = bandvertlvlnum; for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) /* Build communication index arrays */ nsndidxtab[procngbnum] = vsnddsptab[grafptr->procngbtab[procngbnum]]; for (queunextidx = queutailidx; queuheadidx < queutailidx; ) { /* For all vertices in queue */ Gnum vertlocnum; Gnum edgelocnum; vertlocnum = queuloctab[queuheadidx ++]; /* Dequeue vertex */ for (edgelocnum = vertloctax[vertlocnum]; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertlocend; vertlocend = edgegsttax[edgelocnum]; if (vnumgsttax[vertlocend] != ~0) /* If end vertex has already been processed */ continue; /* Skip to next vertex */ if (vertlocend < vertlocnnd) { /* If end vertex is local */ vnumgsttax[vertlocend] = DGRAPHBANDGROWENQ2; /* Label vertex as enqueued */ queuloctab[queunextidx ++] = vertlocend; /* Enqueue vertex for next pass */ DGRAPHBANDGROWEDGE (vertlocend); /* Account for its edges */ } else { /* End vertex is a ghost */ Gnum vertglbend; int procngbnum; int procngbmax; int nsndidxnum; vnumgsttax[vertlocend] = 0; /* Label ghost vertex as enqueued */ vertglbend = edgeloctax[edgelocnum]; /* Get global number of end vertex */ procngbnum = 0; procngbmax = procngbnbr; while ((procngbmax - procngbnum) > 1) { /* Find owner process by dichotomy on procvgbtab */ int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (procvgbtab[procngbmed] > vertglbend) procngbmax = procngbmed; else procngbnum = procngbmed; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procvrttab[grafptr->procngbtab[procngbnum]] > vertglbend) || (grafptr->procvrttab[grafptr->procngbtab[procngbnum] + 1] <= vertglbend) || (nsndidxtab[procngbnum] >= (vsnddsptab[grafptr->procngbtab[procngbnum]] + grafptr->procrcvtab[grafptr->procngbtab[procngbnum]]))) { errorPrint (DGRAPHBANDGROWNSTR "Coll: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ nsndidxnum = nsndidxtab[procngbnum]; vsnddattab[nsndidxnum ++] = vertglbend - procvgbtab[procngbnum] + grafptr->baseval; /* Buffer local value on neighbor processor */ DGRAPHBANDGROWENQ3; /* Send additional data if needed */ nsndidxtab[procngbnum] = nsndidxnum; } } } for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { int procglbnum; procglbnum = grafptr->procngbtab[procngbnum]; vsndcnttab[procglbnum] = nsndidxtab[procngbnum] - vsnddsptab[procglbnum]; } if (MPI_Alltoall (vsndcnttab, 1, MPI_INT, vrcvcnttab, 1, MPI_INT, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Coll: communication error (2)"); return (1); } if (MPI_Alltoallv (vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, vrcvdattab, vrcvcnttab, vrcvdsptab, GNUM_MPI, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Coll: communication error (3)"); return (1); } for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { /* For all receive buffers */ Gnum * restrict vrcvdatptr; int vertrcvnum; int procglbnum; int statsiz; procglbnum = grafptr->procngbtab[procngbnum]; vrcvdatptr = vrcvdattab + vrcvdsptab[procglbnum]; statsiz = vrcvcnttab[procglbnum]; for (vertrcvnum = 0; vertrcvnum < statsiz; vertrcvnum += DGRAPHBANDGROWSMUL (1)) { Gnum vertlocend; vertlocend = vrcvdatptr[vertrcvnum]; /* Get local vertex from message */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocend < grafptr->baseval) || (vertlocend >= vertlocnnd)) { errorPrint (DGRAPHBANDGROWNSTR "Coll: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (vnumgsttax[vertlocend] != ~0) /* If end vertex has already been processed */ continue; /* Skip to next vertex */ vnumgsttax[vertlocend] = DGRAPHBANDGROWENQ4; /* Label vertex as enqueued */ queuloctab[queunextidx ++] = vertlocend; /* Enqueue vertex for next pass */ DGRAPHBANDGROWEDGE (vertlocend); /* Account for its edges */ } } queutailidx = queunextidx; /* Prepare queue for next sweep */ } memFree (procvgbtab); /* Free group leader */ *bandvertlocptr = bandvertlocnnd - grafptr->baseval; *bandedgelocptr = bandedgelocnbr; return (0); } /* This routine computes a distributed index array ** of given width around the current separator, ** using point-to-point communication. ** It returns: ** - 0 : if the index array could be computed. ** - !0 : on error. */ int DGRAPHBANDGROWNAMEPTOP ( Dgraph * restrict const grafptr, /*+ Distributed graph +*/ const Gnum queulocnbr, /*+ Number of frontier vertices, start size for vertex queue +*/ Gnum * restrict const queuloctab, /*+ Array of frontier vertices, re-used as queue array +*/ const Gnum distmax, /*+ Maximum distance from separator vertices +*/ Gnum * restrict const vnumgsttax, /*+ Flag or index array to fill +*/ Gnum * restrict const bandvertlvlptr, /*+ Pointer to based start index of last level +*/ Gnum * restrict const bandvertlocptr, /*+ Pointer to bandvertlocnnd +*/ Gnum * restrict const bandedgelocptr) /*+ Pointer to bandedgelocnbr +*/ { Gnum vertlocnnd; Gnum vrcvdatsiz; /* Sizes of data send and receive arrays */ Gnum vsnddatsiz; Gnum * vrcvdattab; /* Data arrays [norestrict:async] */ Gnum * vsnddattab; Gnum * restrict procvgbtab; /* Array of neighbor bounds [+1] */ int procngbnbr; int procngbnum; int procngbnxt; Gnum * restrict nrcvdsptab; Gnum * restrict nsnddsptab; Gnum nrcvdspnum; Gnum nsnddspnum; Gnum * restrict nsndidxtab; Gnum queuheadidx; /* Index of head of queue */ Gnum queutailidx; /* Index of tail of queue */ MPI_Request * nrcvreqtab; /* Array of receive requests */ MPI_Request * nsndreqtab; /* Array of receive requests */ Gnum bandvertlvlnum; Gnum bandvertlocnnd; Gnum bandedgelocnbr; Gnum distval; #ifdef SCOTCH_DEBUG_DGRAPH1 Gnum reduloctab[3]; Gnum reduglbtab[3]; #else /* SCOTCH_DEBUG_DGRAPH1 */ Gnum reduglbtab[1]; #endif /* SCOTCH_DEBUG_DGRAPH1 */ const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; procngbnbr = grafptr->procngbnbr; reduglbtab[0] = 0; /* Assume everything is all right */ vrcvdatsiz = DGRAPHBANDGROWSMUL (grafptr->procsndnbr); /* Senders and receivers inverted because we send local, not halo vertices */ vsnddatsiz = DGRAPHBANDGROWSMUL (grafptr->vertgstnbr - grafptr->vertlocnbr); if (memAllocGroup ((void **) (void *) &procvgbtab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), &nrcvdsptab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), /* +1 to check against end of array */ &nsnddsptab, (size_t) ((procngbnbr + 1) * sizeof (Gnum)), /* +1 to check against end of array */ &nsndidxtab, (size_t) (procngbnbr * sizeof (Gnum)), /* Here Gnum's since point-to-point */ &nrcvreqtab, (size_t) (procngbnbr * sizeof (MPI_Request)), &nsndreqtab, (size_t) (procngbnbr * sizeof (MPI_Request)), &vrcvdattab, (size_t) (vrcvdatsiz * sizeof (Gnum)), &vsnddattab, (size_t) (vsnddatsiz * sizeof (Gnum)), NULL) == NULL) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: out of memory (1)"); reduglbtab[0] = 1; } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication not needed and not absorbable by the algorithm */ reduloctab[0] = reduglbtab[0]; reduloctab[1] = distmax; reduloctab[2] = - distmax; if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (1)"); return (1); } if (reduglbtab[1] != - reduglbtab[2]) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: invalid parameters"); reduglbtab[0] = 1; } #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (reduglbtab[0] != 0) { if (vnumgsttax != NULL) { if (procvgbtab != NULL) memFree (procvgbtab); /* Free group leader */ memFree (vnumgsttax); } return (1); } for (procngbnum = 0, nrcvdspnum = nsnddspnum = procngbnxt = 0; /* Build communication index arrays */ procngbnum < procngbnbr; procngbnum ++) { int procglbnum; procglbnum = grafptr->procngbtab[procngbnum]; if ((procngbnxt == 0) && (procglbnum > grafptr->proclocnum)) /* Find index of first neighbor of higher rank */ procngbnxt = procngbnum; procvgbtab[procngbnum] = grafptr->procvrttab[procglbnum]; nrcvdsptab[procngbnum] = nrcvdspnum; /* Arrays are indexed per neighbor since we are doing point-to-point communication */ nsnddsptab[procngbnum] = nsnddspnum; nrcvdspnum += DGRAPHBANDGROWSMUL (grafptr->procsndtab[procglbnum]); /* Senders and receivers are reversed */ nsnddspnum += DGRAPHBANDGROWSMUL (grafptr->procrcvtab[procglbnum]); } procvgbtab[procngbnum] = grafptr->procvrttab[grafptr->procglbnbr]; nrcvdsptab[procngbnum] = nrcvdspnum; /* Mark end of communication index arrays */ nsnddsptab[procngbnum] = nsnddspnum; procngbnum = procngbnxt; /* Create receive requests in descending order */ if (procngbnbr != 0) { do { procngbnum = (procngbnum + (procngbnbr - 1)) % procngbnbr; /* Pre-decrement neighbor rank */ if (MPI_Recv_init (vrcvdattab + nrcvdsptab[procngbnum], (int) (nrcvdsptab[procngbnum + 1] - nrcvdsptab[procngbnum]), GNUM_MPI, grafptr->procngbtab[procngbnum], TAGBAND, grafptr->proccomm, nrcvreqtab + procngbnum) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (2)"); return (1); } } while (procngbnum != procngbnxt); } bandvertlvlnum = /* Start index of last level is start index */ bandvertlocnnd = grafptr->baseval; /* Reset number of band vertices, plus base */ bandedgelocnbr = 0; /* No edges accounted for yet */ DGRAPHBANDGROWENQ1; /* Record queued vertices in index array and account for their edges */ vertlocnnd = grafptr->vertlocnnd; queuheadidx = 0; /* No queued vertex read yet */ queutailidx = queulocnbr; /* All frontier vertices are already in queue */ for (distval = 0; ++ distval <= distmax; ) { Gnum queunextidx; /* Tail index for enqueuing vertices of next band */ int vrcvreqnbr; if (MPI_Startall (procngbnbr, nrcvreqtab) != MPI_SUCCESS) { /* Start all receive operations from neighbors */ errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (3)"); return (1); } bandvertlvlnum = bandvertlocnnd; /* Save start index of current level, based */ *bandvertlvlptr = bandvertlvlnum; memCpy (nsndidxtab, nsnddsptab, procngbnbr * sizeof (Gnum)); /* Reset send buffer indices */ for (queunextidx = queutailidx; queuheadidx < queutailidx; ) { /* For all vertices in queue */ Gnum vertlocnum; Gnum edgelocnum; vertlocnum = queuloctab[queuheadidx ++]; /* Dequeue vertex */ for (edgelocnum = vertloctax[vertlocnum]; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertlocend; vertlocend = edgegsttax[edgelocnum]; if (vnumgsttax[vertlocend] != ~0) /* If end vertex has already been processed */ continue; /* Skip to next vertex */ if (vertlocend < vertlocnnd) { /* If end vertex is local */ vnumgsttax[vertlocend] = DGRAPHBANDGROWENQ2; /* Label vertex as enqueued */ queuloctab[queunextidx ++] = vertlocend; /* Enqueue vertex for next pass */ DGRAPHBANDGROWEDGE (vertlocend); /* Account for its edges */ } else { /* End vertex is a ghost */ Gnum vertglbend; int procngbnum; int procngbmax; int nsndidxnum; vnumgsttax[vertlocend] = 0; /* Label ghost vertex as enqueued */ vertglbend = edgeloctax[edgelocnum]; /* Get global number of end vertex */ procngbnum = 0; procngbmax = procngbnbr; while ((procngbmax - procngbnum) > 1) { /* Find owner process by dichotomy on procvgbtab */ int procngbmed; procngbmed = (procngbmax + procngbnum) / 2; if (procvgbtab[procngbmed] > vertglbend) procngbmax = procngbmed; else procngbnum = procngbmed; } #ifdef SCOTCH_DEBUG_DGRAPH2 if ((grafptr->procvrttab[grafptr->procngbtab[procngbnum]] > vertglbend) || (grafptr->procvrttab[grafptr->procngbtab[procngbnum] + 1] <= vertglbend) || (nsndidxtab[procngbnum] >= nsnddsptab[procngbnum + 1])) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ nsndidxnum = nsndidxtab[procngbnum]; vsnddattab[nsndidxnum ++] = vertglbend - procvgbtab[procngbnum] + grafptr->baseval; /* Buffer local value on neighbor processor */ DGRAPHBANDGROWENQ3; /* Send additional data if needed */ nsndidxtab[procngbnum] = nsndidxnum; } } } procngbnum = procngbnxt; /* Send all buffers to neighbors */ if (procngbnbr != 0) { do { if (MPI_Isend (vsnddattab + nsnddsptab[procngbnum], nsndidxtab[procngbnum] - nsnddsptab[procngbnum], GNUM_MPI, grafptr->procngbtab[procngbnum], TAGBAND, grafptr->proccomm, nsndreqtab + procngbnum) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (4)"); return (1); } procngbnum = (procngbnum + 1) % procngbnbr; /* Post-increment neighbor rank */ } while (procngbnum != procngbnxt); } for (vrcvreqnbr = procngbnbr; vrcvreqnbr > 0; vrcvreqnbr --) { /* For all pending receive requests */ Gnum * restrict vrcvdatptr; int vertrcvnum; MPI_Status statdat; int statsiz; int o; #ifdef SCOTCH_DETERMINISTIC procngbnum = vrcvreqnbr - 1; o = MPI_Wait (&nrcvreqtab[procngbnum], &statdat); #else /* SCOTCH_DETERMINISTIC */ o = MPI_Waitany (procngbnbr, nrcvreqtab, &procngbnum, &statdat); #endif /* SCOTCH_DETERMINISTIC */ if ((o != MPI_SUCCESS) || (MPI_Get_count (&statdat, GNUM_MPI, &statsiz) != MPI_SUCCESS)) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (5)"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (statdat.MPI_SOURCE != grafptr->procngbtab[procngbnum]) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vrcvdatptr = vrcvdattab + nrcvdsptab[procngbnum]; for (vertrcvnum = 0; vertrcvnum < statsiz; vertrcvnum += DGRAPHBANDGROWSMUL (1)) { Gnum vertlocend; vertlocend = vrcvdatptr[vertrcvnum]; /* Get local vertex from message */ #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocend < grafptr->baseval) || (vertlocend >= vertlocnnd)) { errorPrint (DGRAPHBANDGROWNSTR "dgraphBandPtop: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (vnumgsttax[vertlocend] != ~0) /* If end vertex has already been processed */ continue; /* Skip to next vertex */ vnumgsttax[vertlocend] = DGRAPHBANDGROWENQ4; /* Label vertex as enqueued */ queuloctab[queunextidx ++] = vertlocend; /* Enqueue vertex for next pass */ DGRAPHBANDGROWEDGE (vertlocend); /* Account for its edges */ } } queutailidx = queunextidx; /* Prepare queue for next sweep */ if (MPI_Waitall (procngbnbr, nsndreqtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait until all send operations completed */ errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (6)"); return (1); } } for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { /* Free persistent receive requests */ if (MPI_Request_free (nrcvreqtab + procngbnum) != MPI_SUCCESS) { errorPrint (DGRAPHBANDGROWNSTR "Ptop: communication error (7)"); return (1); } } memFree (procvgbtab); /* Free group leader */ *bandvertlocptr = bandvertlocnnd - grafptr->baseval; *bandedgelocptr = bandedgelocnbr; return (0); } scotch_6.0.9/src/libscotch/library_dgraph_map_view.c0000644000302600021200000004020713560013261023042 0ustar pelegrinpelegrin/* Copyright 2008-2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_map_view.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted mapping routines of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.1 : from : 26 jul 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #define LIBRARY_DGRAPH_MAP_VIEW #include "module.h" #include "common.h" #include "parser.h" #include "dgraph.h" #include "dgraph_halo.h" #include "arch.h" #include "dmapping.h" #include "kdgraph.h" #include "library_dmapping.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the mapping routines. */ /* */ /************************************/ /*+ This routine writes distributed mapping *** statistics to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphMapView ( SCOTCH_Dgraph * const libgrafptr, const SCOTCH_Dmapping * const libmappptr, FILE * const stream) { Dgraph * restrict grafptr; const LibDmapping * restrict mappptr; ArchDom domnfrst; /* Largest domain in architecture */ unsigned int * restrict nmskloctab; /* Local neighbor bitfield */ unsigned int * restrict nmskglbtab; /* Local neighbor bitfield */ int nmskidxnbr; /* Size of bitfield; int since sent by MPI */ Gnum * restrict tgloloctab; /* Local array of terminal domain loads */ Gnum * restrict tgloglbtab; /* Global array of terminal domain loads */ Gnum * restrict termgsttax; /* Terminal domain ghost mapping array */ Anum tgtnbr; /* Number of processors in target topology */ Anum tgtnum; Anum mapnbr; /* Number of processors effectively used */ double mapavg; /* Average mapping weight */ Gnum mapmin; Gnum mapmax; Gnum mapsum; /* (Partial) sum of vertex loads */ double mapdlt; double mapmmy; /* Maximum / average ratio */ Anum ngbsum; Anum ngbmin; Anum ngbmax; Gnum vertlocnum; Gnum veloval; Gnum edloval; Gnum commlocdist[256 + 3]; /* Array of local load distribution */ Gnum commglbdist[256 + 3]; Gnum commlocload; /* Total local edge load (edge sum) */ Gnum commlocdilat; /* Total edge dilation */ Gnum commlocexpan; /* Total edge expansion */ Anum distmax; Anum distval; int cheklocval; int chekglbval; DgraphHaloRequest requdat; grafptr = (Dgraph *) libgrafptr; mappptr = (LibDmapping *) libmappptr; if ((grafptr->vertglbnbr == 0) || /* Return if nothing to do */ (grafptr->edgeglbnbr == 0)) return (0); archDomFrst (&mappptr->m.archdat, &domnfrst); /* Get architecture domain */ tgtnbr = archDomSize (&mappptr->m.archdat, &domnfrst); /* Get architecture size */ if (archVar (&mappptr->m.archdat)) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": not implemented"); return (1); } if (dgraphGhst (grafptr) != 0) { /* Compute ghost edge array if not already present */ errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot compute ghost edge array"); return (1); } nmskidxnbr = (tgtnbr + 1 + ((sizeof (int) << 3) - 1)) / (sizeof (int) << 3); /* Size of neighbor subdomain bitfield; TRICK: "+1" to have a "-1" cell for unmapped vertices */ cheklocval = 0; if (memAllocGroup ((void **) (void *) &nmskloctab, (size_t) (nmskidxnbr * sizeof (unsigned int)), &nmskglbtab, (size_t) (nmskidxnbr * sizeof (unsigned int)), &tgloloctab, (size_t) ((tgtnbr + 1) * sizeof (Gnum)), /* TRICK: "+1" to have a "-1" cell for unmapped vertices */ &tgloglbtab, (size_t) (tgtnbr * sizeof (Gnum)), &termgsttax, (size_t) (grafptr->vertgstnbr * sizeof (Gnum)), NULL) == NULL) { cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (1)"); return (1); } if (chekglbval != 0) { if (nmskloctab != NULL) memFree (nmskloctab); errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": out of memory"); return (1); } if (dmapTerm (&mappptr->m, grafptr, termgsttax) != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot build local terminal array"); memFree (nmskloctab); return (1); } dgraphHaloAsync (grafptr, termgsttax, GNUM_MPI, &requdat); termgsttax -= grafptr->baseval; memSet (tgloloctab, 0, (tgtnbr + 1) * sizeof (Gnum)); tgloloctab ++; /* TRICK: trim array for "-1" cell */ veloval = 1; for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { #ifdef SCOTCH_DEBUG_DMAP2 if ((termgsttax[vertlocnum] < -1) || (termgsttax[vertlocnum] >= tgtnbr)) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": invalid local terminal array"); memFree (nmskloctab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DMAP2 */ if (grafptr->veloloctax != NULL) veloval = grafptr->veloloctax[vertlocnum]; tgloloctab[termgsttax[vertlocnum]] += veloval; /* One more vertex of given weight assigned to this target */ } if (MPI_Allreduce (tgloloctab, tgloglbtab, tgtnbr, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (2)"); memFree (nmskloctab); /* Free group leader */ return (1); } mapmin = GNUMMAX; mapmax = 0; mapsum = 0; mapnbr = 0; for (tgtnum = 0; tgtnum < tgtnbr; tgtnum ++) { Gnum tgtsum; tgtsum = tgloglbtab[tgtnum]; if (tgtsum != 0) { mapnbr ++; mapsum += tgtsum; if (tgtsum < mapmin) mapmin = tgtsum; if (tgtsum > mapmax) mapmax = tgtsum; } } mapavg = (mapnbr == 0) ? 0.0L : ((double) mapsum / (double) mapnbr); mapdlt = 0.0L; for (tgtnum = 0; tgtnum < tgtnbr; tgtnum ++) mapdlt += fabs ((double) tgloglbtab[tgtnum] - mapavg); mapdlt = (mapnbr != 0) ? mapdlt / ((double) mapnbr * mapavg) : 0.0L; mapmmy = (mapnbr != 0) ? (double) mapmax / (double) mapavg : 0.0L; if (stream != NULL) { fprintf (stream, "M\tProcessors " GNUMSTRING "/" GNUMSTRING "(%g)\n", (Gnum) mapnbr, (Gnum) tgtnbr, (double) mapnbr / (double) tgtnbr); fprintf (stream, "M\tTarget min=" GNUMSTRING "\tmax=" GNUMSTRING "\tavg=%g\tdlt=%g\tmaxavg=%g\n", (Gnum) mapmin, (Gnum) mapmax, mapavg, mapdlt, mapmmy); } if (dgraphHaloWait (&requdat) != 0) { /* Wait for ghost terminal data to be exchanged */ errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": cannot complete asynchronous halo exchange"); memFree (nmskloctab); /* Free group leader */ return (1); } ngbmin = ANUMMAX; ngbmax = 0; ngbsum = 0; for (tgtnum = 0; tgtnum < tgtnbr; tgtnum ++) { /* For all subdomain indices */ int nmskidxnum; Gnum vertlocnum; Anum ngbnbr; if (tgloglbtab[tgtnum] <= 0) /* If empty subdomain, skip it */ continue; memSet (nmskloctab, 0, nmskidxnbr * sizeof (int)); /* Reset neighbor bit mask */ for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { /* For all local vertices */ Gnum termnum; Gnum edgelocnum; Gnum edgelocnnd; termnum = termgsttax[vertlocnum]; if (termnum != tgtnum) /* If vertex does not belong to current part or is not mapped, skip it */ continue; for (edgelocnum = grafptr->vertloctax[vertlocnum], edgelocnnd = grafptr->vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) { Gnum termend; termend = termgsttax[grafptr->edgegsttax[edgelocnum]]; if (termend != tgtnum) { /* If edge is not internal */ termend ++; /* TRICK: turn unmapped to 0 and so on */ nmskloctab[termend / (sizeof (int) << 3)] |= 1 << (termend & ((sizeof (int) << 3) - 1)); /* Flag neighbor in bit array */ } } } nmskloctab[0] &= ~1; /* Do not account for unmapped vertices (terminal domain 0 because of "+1") */ if (MPI_Allreduce (nmskloctab, nmskglbtab, nmskidxnbr, MPI_INT, MPI_BOR, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (3)"); memFree (nmskloctab); /* Free group leader */ return (1); } for (nmskidxnum = 0, ngbnbr = 0; nmskidxnum < nmskidxnbr; nmskidxnum ++) { unsigned int nmskbitval; for (nmskbitval = nmskglbtab[nmskidxnum]; nmskbitval != 0; nmskbitval >>= 1) ngbnbr += nmskbitval & 1; } ngbsum += ngbnbr; if (ngbnbr < ngbmin) ngbmin = ngbnbr; if (ngbnbr > ngbmax) ngbmax = ngbnbr; } if (stream != NULL) { fprintf (stream, "M\tNeighbors min=" GNUMSTRING "\tmax=" GNUMSTRING "\tsum=" GNUMSTRING "\n", (Gnum) ngbmin, (Gnum) ngbmax, (Gnum) ngbsum); } memSet (commlocdist, 0, 256 * sizeof (Gnum)); /* Initialize the data */ commlocload = commlocdilat = commlocexpan = 0; edloval = 1; for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { /* For all local vertices */ Gnum termlocnum; ArchDom termdomdat; Gnum edgelocnum; Gnum edgelocnnd; termlocnum = termgsttax[vertlocnum]; if (termlocnum == ~0) /* Skip unmapped vertices */ continue; archDomTerm (&mappptr->m.archdat, &termdomdat, termlocnum); for (edgelocnum = grafptr->vertloctax[vertlocnum], edgelocnnd = grafptr->vendloctax[vertlocnum]; edgelocnum < edgelocnnd; edgelocnum ++) { ArchDom termdomend; Gnum termgstend; Anum distval; termgstend = termgsttax[grafptr->edgegsttax[edgelocnum]]; if (termgstend == ~0) /* Skip unmapped end vertices */ continue; distval = 0; if (grafptr->edloloctax != NULL) /* Get edge weight if any */ edloval = grafptr->edloloctax[edgelocnum]; if (termgstend != termlocnum) { /* If not same domain, compute distance */ archDomTerm (&mappptr->m.archdat, &termdomend, termgstend); distval = archDomDist (&mappptr->m.archdat, &termdomdat, &termdomend); } commlocdist[(distval > 255) ? 255 : distval] += edloval; commlocload += edloval; commlocdilat += distval; commlocexpan += distval * edloval; } } commlocdist[256] = commlocload; commlocdist[256 + 1] = commlocdilat; commlocdist[256 + 2] = commlocexpan; if (MPI_Allreduce (commlocdist, commglbdist, 256 + 3, GNUM_MPI, MPI_SUM, grafptr->proccomm) != MPI_SUCCESS) { errorPrint (STRINGIFY (SCOTCH_dgraphMapView) ": communication error (4)"); memFree (nmskloctab); /* Free group leader */ return (1); } if (stream != NULL) { Gnum commglbload; commglbload = commglbdist[256]; fprintf (stream, "M\tCommDilat=%f\t(" GNUMSTRING ")\n", /* Print expansion parameters */ (double) commglbdist[256 + 1] / grafptr->edgeglbnbr, (Gnum) (commglbdist[256 + 1] / 2)); fprintf (stream, "M\tCommExpan=%f\t(" GNUMSTRING ")\n", ((commglbload == 0) ? (double) 0.0L : (double) commglbdist[256 + 2] / (double) commglbload), (Gnum) (commglbdist[256 + 2] / 2)); fprintf (stream, "M\tCommCutSz=%f\t(" GNUMSTRING ")\n", ((commglbload == 0) ? (double) 0.0L : (double) (commglbload - commglbdist[0]) / (double) commglbload), (Gnum) ((commglbload - commglbdist[0]) / 2)); fprintf (stream, "M\tCommDelta=%f\n", (((double) commglbload * (double) commglbdist[256 + 1]) == 0.0L) ? (double) 0.0L : ((double) commglbdist[256 + 2] * (double) grafptr->edgeglbnbr) / ((double) commglbload * (double) commglbdist[256 + 2])); for (distmax = 255; distmax != -1; distmax --) /* Find longest distance */ if (commglbdist[distmax] != 0) break; for (distval = 0; distval <= distmax; distval ++) /* Print distance histogram */ fprintf (stream, "M\tCommLoad[" ANUMSTRING "]=%f\n", (Anum) distval, (double) commglbdist[distval] / (double) commglbload); } memFree (nmskloctab); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/dgraph_io_load.c0000644000302600021200000011261113560005435021120 0ustar pelegrinpelegrin/* Copyright 2007-2009,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_io_load.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the input/output routines for **/ /** distributed graphs. **/ /** **/ /** # Version 5.0 : from : 28 apr 2007 **/ /** to : 24 mar 2008 **/ /** # Version 5.1 : from : 23 jun 2008 **/ /** to : 27 jan 2009 **/ /** # Version 6.0 : from : 25 aug 2012 **/ /** to : 18 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_IO_LOAD #include "module.h" #include "common.h" #include "graph.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "dgraph_io_load.h" /* This routine loads a distributed source ** graph from the given stream(s). Either ** one processor holds a non-NULL stream ** of a centralized graph, or all of them ** hold valid streams to either a centralized ** or a distributed graph. ** It returns: ** - 0 : on success. ** - !0 : on error. */ DGRAPHALLREDUCEMAXSUMOP (6, 3) DGRAPHALLREDUCEMAXSUMOP (10, 2) int dgraphLoad ( Dgraph * restrict const grafptr, /* Not const since halo may update structure */ FILE * const stream, /* One single centralized stream or distributed ones */ const Gnum baseval, /* Base value (-1 means keep file base) */ const DgraphFlag flagval) /* Graph loading flags */ { Gnum reduloctab[12]; Gnum reduglbtab[12]; Gnum versval; #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (grafptr->proccomm) != MPI_SUCCESS) { /* Synchronize for debugging */ errorPrint ("dgraphLoad: communication error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ reduloctab[0] = baseval; /* Exchange baseval to check it is the same for all */ reduloctab[1] = - baseval; reduloctab[2] = flagval; /* Exchange flagval to check it is the same for all */ reduloctab[3] = - flagval; reduloctab[4] = 0; /* Set uneffective values for versval */ reduloctab[5] = -2; reduloctab[6] = /* Assume everything will be fine */ reduloctab[7] = /* Assume does not have a stream */ reduloctab[8] = 0; if (stream != NULL) { if (intLoad (stream, &versval) != 1) { /* Read version number */ errorPrint ("dgraphLoad: bad input (1)"); versval = 0; reduloctab[6] = 1; } else if ((versval != 0) && (versval != 2)) { /* If not a graph format */ errorPrint ("dgraphLoad: not a graph format"); reduloctab[6] = 1; } reduloctab[4] = versval; reduloctab[5] = - versval; reduloctab[7] = 1; /* One more process involved in loading */ reduloctab[8] = grafptr->proclocnum; } if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 6, 3, grafptr->proccomm) != 0) { errorPrint ("dgraphLoad: communication error (2)"); return (1); } if (reduglbtab[6] != 0) /* Return from previous errors */ return (1); if ((reduglbtab[0] != - reduglbtab[1])) { errorPrint ("dgraphLoad: inconsistent base value"); return (1); } if ((reduglbtab[2] != - reduglbtab[3])) { errorPrint ("dgraphLoad: inconsistent flag value"); return (1); } if ((reduglbtab[7] != 0) && (reduglbtab[4] != - reduglbtab[5])) { errorPrint ("dgraphLoad: inconsistent graph file version value"); return (1); } if (reduglbtab[4] == 2) { /* If distributed graph format */ if (reduglbtab[7] == grafptr->procglbnbr) /* If as many input streams as processors */ return (dgraphLoadDist (grafptr, stream, baseval, flagval)); /* Read distributed graph */ } else { /* If centralized graph format */ if (reduglbtab[7] == 1) /* If only one reader stream */ return (dgraphLoadCent (grafptr, stream, baseval, flagval, reduglbtab[8])); /* Distribute centralized graph from known root */ else if (reduglbtab[7] == grafptr->procglbnbr) return (dgraphLoadMulti (grafptr, stream, baseval, flagval)); /* Read multi-centralized graph */ } errorPrint ((reduglbtab[7] == 0) ? "dgraphLoad: no input stream provided" : "dgraphLoad: invalid number of input streams"); return (1); } /* This routine loads a centralized source ** graph from a single stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int dgraphLoadCent ( Dgraph * restrict const grafptr, /* Distributed graph to load */ FILE * const stream, /* One single centralized stream */ Gnum baseval, /* Base value (-1 means keep file base) */ const DgraphFlag flagval, /* Graph loading flags */ const int protnum) /* Root process number */ { Gnum vertglbnbr; Gnum vertglbmax; Gnum vertlocnbr; Gnum * vertloctax; /* [norestrict:async] */ Gnum * vertlocptr; Gnum * restrict vertredtax; Gnum velolocnbr; Gnum velolocsum; Gnum * veloloctax; Gnum * restrict veloredtax; Gnum vlbllocnbr; Gnum * vlblloctax; Gnum * restrict vlblredtax; Gnum edgelocnbr; Gnum * edgeloctax; Gnum edgeredmnd; Gnum * restrict edgeredtax; Gnum * edloloctax; Gnum * restrict edloredtax; Gnum degrglbmax; Gnum baseadj; Gnum reduglbtab[5]; char proptab[4]; /* Property string array */ int cheklocval; int chekglbval; int o; #ifdef SCOTCH_DEBUG_DGRAPH2 if (((stream != NULL) && (protnum != grafptr->proclocnum)) || /* Enforce single stream */ ((stream == NULL) && (protnum == grafptr->proclocnum))) { errorPrint ("dgraphLoadCent: invalid parameter (1)"); return (1); } if ((protnum < 0) || (protnum >= grafptr->procglbnbr)) { errorPrint ("dgraphLoadCent: invalid parameter (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ reduglbtab[0] = 0; /* Assume everything will be fine */ if (stream != NULL) { if ((intLoad (stream, &reduglbtab[1]) != 1) || /* Read rest of header */ (intLoad (stream, &reduglbtab[2]) != 1) || (intLoad (stream, &reduglbtab[3]) != 1) || (intLoad (stream, &reduglbtab[4]) != 1) || (reduglbtab[4] < 0) || (reduglbtab[4] > 111)) { errorPrint ("dgraphLoadCent: bad input (1)"); cheklocval = 1; } } if (MPI_Bcast (&reduglbtab[0], 5, GNUM_MPI, protnum, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (1)"); return (1); } if (reduglbtab[0] != 0) return (1); if (baseval == -1) { /* If keep file graph base */ baseval = reduglbtab[3]; /* Set graph base as file base */ baseadj = 0; /* No base adjustment needed */ } else /* If set graph base */ baseadj = baseval - reduglbtab[3]; /* Update base adjust */ vertglbnbr = reduglbtab[1]; vertglbmax = DATASIZE (vertglbnbr, grafptr->procglbnbr, 0); vertlocnbr = DATASIZE (vertglbnbr, grafptr->procglbnbr, grafptr->proclocnum); sprintf (proptab, "%3.3d", (int) reduglbtab[4]); /* Compute file properties */ proptab[0] -= '0'; /* Vertex labels flag */ proptab[1] -= '0'; /* Edge weights flag */ proptab[2] -= '0'; /* Vertex loads flag */ velolocnbr = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? vertglbmax : 0; vlbllocnbr = (proptab[0] != 0) ? vertglbmax : 0; vlblloctax = veloloctax = vertloctax = edgeloctax = /* Send arrays not allocated yet for root process */ edgeredtax = NULL; /* No read edge array yet */ cheklocval = 0; if ((vertlocptr = memAlloc ((vertglbmax + 2 + velolocnbr + vlbllocnbr) * sizeof (Gnum))) == NULL) { /* TRICK: "+2" for space for velolocsum */ errorPrint ("dgraphLoadCent: out of memory (1)"); cheklocval = 1; } else { vertloctax = vertlocptr -= baseval; vertlocptr += vertglbmax + 2; /* TRICK: "+2" for space for velolocsum */ if (proptab[2] != 0) { veloloctax = vertlocptr; vertlocptr += vertglbmax; } if (proptab[0] != 0) { vlblloctax = vertlocptr; baseadj = 0; /* No vertex adjustments if vertex labels */ } if (stream != NULL) { /* Allocate read edge array */ Gnum edgeredmax; Gnum edloredmax; edgeredmax = reduglbtab[2] / grafptr->procglbnbr + 1; edgeredmax += (edgeredmax >> 2) + 4; /* Add 25% more space for edges than average */ edloredmax = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? edgeredmax : 0; if ((edgeredtax = memAlloc ((edgeredmax + edloredmax) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadCent: out of memory (2)"); cheklocval = 1; } else { edgeredtax -= baseval; edloredtax = (edloredmax != 0) ? (edgeredtax + edgeredmax) : NULL; vertredtax = vertloctax; /* Prepare read vertex arrays, which will never move */ veloredtax = veloloctax; vlblredtax = vlblloctax; } edgeredmnd = edgeredmax + baseval; } } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (2)"); chekglbval = 1; } if (chekglbval != 0) { if (edgeredtax != NULL) memFree (edgeredtax + baseval); if (vertloctax != NULL) memFree (vertloctax + baseval); return (1); } degrglbmax = 0; /* No maximum degree yet */ if (stream != NULL) { Gnum procnum; for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { Gnum vertrednnd; Gnum vertrednum; Gnum edgerednum; Gnum veloredsum; for (vertrednum = edgerednum = baseval, veloredsum = 0, vertrednnd = DATASIZE (vertglbnbr, grafptr->procglbnbr, procnum) + baseval; vertrednum < vertrednnd; vertrednum ++) { Gnum degrredval; if (vlblredtax != NULL) { /* If must read label */ Gnum vlblredval; /* Vertex label value to be read */ if (intLoad (stream, &vlblredval) != 1) { /* Read label data */ errorPrint ("dgraphLoadCent: bad input (2)"); cheklocval = 1; break; } vlblredtax[vertrednum] = vlblredval; } if (proptab[2] != 0) { /* If must read vertex load */ Gnum veloredval; if (intLoad (stream, &veloredval) != 1) { /* Read vertex load data */ errorPrint ("dgraphLoadCent: bad input (3)"); cheklocval = 1; break; } if (veloredtax != NULL) veloredsum += veloredtax[vertrednum] = veloredval; } if (intLoad (stream, °rredval) != 1) { /* Read vertex degree */ errorPrint ("dgraphLoadCent: bad input (4)"); cheklocval = 1; break; } if (degrglbmax < degrredval) /* Set maximum degree */ degrglbmax = degrredval; vertredtax[vertrednum] = edgerednum; /* Set index in edge array */ degrredval += edgerednum; if (degrredval > edgeredmnd) { /* Check if edge array overflows */ Gnum edgeredmax; Gnum edgenewmax; Gnum edgenewsiz; Gnum * restrict edgenewtab; edgenewmax = edgeredmax = edgeredmnd - baseval; do /* Increase edge array size by 25 % */ edgenewmax += (edgenewmax >> 2) + 4; while (edgenewmax < (degrredval - baseval)); edgenewsiz = (edloredtax != NULL) ? (2 * edgenewmax) : edgenewmax; if ((edgenewtab = memRealloc (edgeredtax + baseval, edgenewsiz * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadCent: out of memory (3)"); cheklocval = 1; break; } edgeredtax = edgenewtab - baseval; edgeredmnd = edgenewmax + baseval; if (edloredtax != NULL) { /* Move edge load array if present */ memMov (edgenewtab + edgenewmax, edgenewtab + edgeredmax, (edgerednum - baseval) * sizeof (Gnum)); edloredtax = edgeredtax + edgenewmax; } } for ( ; edgerednum < degrredval; edgerednum ++) { Gnum edgeredval; /* Value where to read edge end */ if (proptab[1] != 0) { /* If must read edge load */ Gnum edloredval; /* Value where to read edge load */ if (intLoad (stream, &edloredval) != 1) { /* Read edge load data */ errorPrint ("dgraphLoadCent: bad input (5)"); cheklocval = 1; break; } if (edloredtax != NULL) edloredtax[edgerednum] = edloredval; } if (intLoad (stream, &edgeredval) != 1) { /* Read edge data */ errorPrint ("dgraphLoadCent: bad input (6)"); cheklocval = 1; break; } edgeredtax[edgerednum] = edgeredval + baseadj; } if (cheklocval != 0) break; } vertredtax[vertrednum ++] = edgerednum; /* Set end of edge array */ if (cheklocval == 0) { if (procnum != grafptr->proclocnum) { /* If arrays have to be sent */ MPI_Request requtab[5]; MPI_Status stattab[5]; int requnbr; vertredtax[baseval] = edgerednum - baseval; /* First slot is number of edges */ vertredtax[vertrednum] = (veloredtax != NULL) ? veloredsum : (vertrednnd - baseval); /* Add vertex load sum to send vertex array */ if (MPI_Isend (vertredtax + baseval, vertrednnd - baseval + 2, /* TRICK: "+2" and not "+1" because of space for velolocsum */ GNUM_MPI, procnum, TAGVERTLOCTAB, grafptr->proccomm, &requtab[0]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (5)"); return (1); /* Dirty exit as we can do nothing */ } requnbr = 1; if (veloredtax != NULL) { if (MPI_Isend (veloredtax + baseval, vertrednnd - baseval, GNUM_MPI, procnum, TAGVELOLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (6)"); return (1); } } if (vlblredtax != NULL) { if (MPI_Isend (vlblredtax + baseval, vertrednnd - baseval, GNUM_MPI, procnum, TAGVLBLLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (7)"); return (1); } } if (MPI_Recv (&reduglbtab[0], 0, MPI_INT, procnum, MPI_ANY_TAG, grafptr->proccomm, &stattab[0]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (8)"); return (1); } if (stattab[0].MPI_TAG != TAGOK) /* If receiver could not allocate memory for edge arrays */ cheklocval = 1; else { if (MPI_Isend (edgeredtax + baseval, edgerednum - baseval, GNUM_MPI, procnum, TAGEDGELOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (9)"); return (1); } if (edloredtax != NULL) { if (MPI_Isend (edloredtax + baseval, edgerednum - baseval, GNUM_MPI, procnum, TAGEDLOLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (10)"); return (1); } } MPI_Waitall (requnbr, &requtab[0], &stattab[0]); } } else { /* Arrays are local */ velolocsum = (veloredtax != NULL) ? veloredsum : vertlocnbr; /* Save accumulated values as local data */ edgelocnbr = edgerednum - baseval; if (edgeredmnd - edgerednum > 10000) { /* If array can be compacted */ if (edloredtax != NULL) { memMov (edgeredtax + edgerednum, edloredtax + baseval, edgelocnbr * sizeof (Gnum)); edgeredtax = memRealloc (edgeredtax + baseval, edgelocnbr * 2 * sizeof (Gnum)); edgeredtax -= baseval; edloredtax = edgeredtax + edgelocnbr; } else { edgeredtax = memRealloc (edgeredtax + baseval, edgelocnbr * sizeof (Gnum)); edgeredtax -= baseval; } } edgeloctax = edgeredtax; /* Keep read edge array as local edge array */ edloloctax = edloredtax; if (grafptr->proclocnum == (grafptr->procglbnbr - 1)) { /* If root process is last process */ vertredtax = /* No need to reallocate read arrays */ edgeredtax = NULL; break; /* And we can exit now */ } if ((vertlocptr = memAlloc ((vertglbmax + 2 + velolocnbr + vlbllocnbr) * sizeof (Gnum))) == NULL) { /* TRICK: "+2" for space for velolocsum */ errorPrint ("dgraphLoadCent: out of memory (4)"); cheklocval = 1; } else { Gnum edgeredmax; Gnum edloredmax; vertredtax = vertlocptr -= baseval; vertlocptr += vertglbmax + 2; /* TRICK: "+2" for space for velolocsum */ if (veloredtax != NULL) { veloredtax = vertlocptr; vertlocptr += vertglbmax; } if (vlblredtax != NULL) vlblredtax = vertlocptr; edgeredmax = edgeredmnd - baseval; edloredmax = (edloloctax != NULL) ? edgeredmax : 0; if ((edgeredtax = memAlloc ((edgeredmax + edloredmax) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadCent: out of memory (5)"); cheklocval = 1; } else { edgeredtax -= baseval; if (edloredtax != NULL) edloredtax = edgeredtax + edgeredmax; } } } } if (cheklocval != 0) { /* If error encountered */ for ( ; procnum < grafptr->procglbnbr; procnum ++) { /* Send abortion messages */ if (procnum != grafptr->proclocnum) { /* Abortion messages complete vertloctab receives */ if (MPI_Send (vertredtax + baseval, 0, GNUM_MPI, procnum, TAGVERTLOCTAB, grafptr->proccomm) != MPI_SUCCESS) errorPrint ("dgraphLoadCent: communication error (11)"); } } break; } } if (vertredtax != NULL) { /* Free reader arrays if reallocated */ if (vertredtax != vertloctax) /* If equal, vertloctax will be deallocated afterwards */ memFree (vertredtax + baseval); memFree (edgeredtax + baseval); } } else { /* Process is not reader */ MPI_Request requtab[5]; MPI_Status stattab[5]; int requnbr; int vertrcvnbr; /* int because of the MPI API */ if (MPI_Irecv (vertloctax + baseval, vertlocnbr + 2, GNUM_MPI, /* TRICK: "+2" and not "+1" because of velolocsum */ protnum, TAGVERTLOCTAB, grafptr->proccomm, &requtab[2]) != MPI_SUCCESS) { /* requtab[2] is first surely available slot */ errorPrint ("dgraphLoadCent: communication error (10)"); return (1); /* Dirty exit as we can do nothing */ } requnbr = 0; if (veloloctax != NULL) { if (MPI_Irecv (veloloctax + baseval, vertlocnbr, GNUM_MPI, protnum, TAGVELOLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (11)"); return (1); } } if (vlblloctax != NULL) { if (MPI_Irecv (vlblloctax + baseval, vertlocnbr, GNUM_MPI, protnum, TAGVLBLLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (12)"); return (1); } } MPI_Wait (&requtab[2], &stattab[2]); /* Wait until vertloctab received */ MPI_Get_count (&stattab[2], GNUM_MPI, &vertrcvnbr); /* Get size of received array */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (((Gnum) vertrcvnbr != 0) && /* vertrcvnbr == 0 in the case of abortion message */ ((Gnum) vertrcvnbr != (vertlocnbr + 2))) { /* TRICK: "+2" and not "+1" because of velolocsum */ errorPrint ("dgraphLoadCent: invalid vertex array size"); vertrcvnbr = 0; } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (vertrcvnbr == 0) { /* Empty message means abortion wanted */ while (requnbr > 0) { /* Cancel all pending requests */ requnbr --; MPI_Cancel (&requtab[requnbr]); MPI_Request_free (&requtab[requnbr]); } /* No more pending requests */ } else { Gnum edlolocnbr; edgelocnbr = vertloctax[baseval]; /* edgelocnbr is first cell */ vertloctax[baseval] = baseval; /* First cell is always baseval */ velolocsum = vertloctax[vertlocnbr + baseval + 1]; /* TRICK: get velolocsum */ edlolocnbr = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? edgelocnbr : 0; edloloctax = NULL; /* Assume no edge load array */ if ((edgeloctax = memAlloc ((edgelocnbr + edlolocnbr) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadCent: out of memory (6)"); MPI_Send (&cheklocval, 0, MPI_INT, protnum, TAGBAD, grafptr->proccomm); /* Memory could not be allocated */ cheklocval = 1; } else { if (MPI_Irecv (edgeloctax, edgelocnbr, GNUM_MPI, protnum, TAGEDGELOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (13)"); return (1); } if (edlolocnbr != 0) { edloloctax = edgeloctax + edgelocnbr; if (MPI_Irecv (edloloctax, edgelocnbr, GNUM_MPI, protnum, TAGEDLOLOCTAB, grafptr->proccomm, &requtab[requnbr ++]) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (14)"); return (1); } edloloctax -= baseval; } edgeloctax -= baseval; MPI_Isend (&cheklocval, 0, MPI_INT, protnum, TAGOK, grafptr->proccomm, &requtab[requnbr ++]); /* Send ready to receive */ } } MPI_Waitall (requnbr, &requtab[0], &stattab[0]); /* Wait until all pending communications completed and all arrays received */ } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphLoadCent: communication error (15)"); chekglbval = 1; } if (chekglbval != 0) { if (edgeloctax != NULL) memFree (edgeloctax + baseval); memFree (vertloctax + baseval); return (1); } o = dgraphBuild2 (grafptr, baseval, /* Build distributed graph */ vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, veloloctax, velolocsum, NULL, vlblloctax, edgelocnbr, edgelocnbr, edgeloctax, NULL, edloloctax, degrglbmax); /* Non-readers will have degrglbmax set to 0 */ grafptr->flagval |= DGRAPHFREETABS | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; return (o); } /* This routine loads a distributed source ** graph from a distributed source graph ** file spread across all of the streams. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int dgraphLoadDist ( Dgraph * restrict const grafptr, /* Distributed graph to load */ FILE * const stream, /* One single centralized stream */ Gnum baseval, /* Base value (-1 means keep file base) */ const DgraphFlag flagval) /* Graph loading flags */ { Gnum proclocnum; Gnum vertlocnbr; Gnum vertlocnnd; Gnum vertlocnum; Gnum * restrict vertloctax; Gnum * vertlocptr; Gnum velolocnbr; Gnum velolocsum; Gnum * restrict veloloctax; Gnum vlbllocnbr; Gnum * restrict vlblloctax; Gnum edgelocnbr; Gnum edgelocnnd; Gnum edgelocnum; Gnum * restrict edgeloctax; Gnum * restrict edloloctax; Gnum degrlocmax; Gnum baseadj; Gnum reduloctab[12]; Gnum reduglbtab[12]; char proptab[4]; /* Property string array */ int cheklocval; int chekglbval; int o; #ifdef SCOTCH_DEBUG_DGRAPH2 if (stream == NULL) { errorPrint ("dgraphLoadDist: invalid parameter"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ reduloctab[0] = 0; /* Assume everything will be fine */ o = intLoad (stream, &reduloctab[1]); /* Read rest of header */ o += intLoad (stream, &proclocnum); o += intLoad (stream, &reduloctab[3]); o += intLoad (stream, &reduloctab[5]); o += intLoad (stream, &reduloctab[10]); o += intLoad (stream, &reduloctab[11]); o += intLoad (stream, &reduloctab[7]); o += intLoad (stream, &reduloctab[9]); if ((o != 8) || (reduloctab[9] < 0) || (reduloctab[9] > 111)) { errorPrint ("dgraphLoadDist: bad input (1)"); reduloctab[0] = 2; /* Immediate abort has maximum value so as to be propagated by MAX reduce */ } reduloctab[2] = - reduloctab[1]; reduloctab[4] = - reduloctab[3]; reduloctab[6] = - reduloctab[5]; reduloctab[8] = - reduloctab[7]; if ((int) proclocnum != grafptr->proclocnum) /* If fragment is not read by proper process */ reduloctab[0] |= 1; if ((int) reduloctab[1] != grafptr->procglbnbr) { errorPrint ("dgraphLoadDist: wrong number of processors to read distributed graph"); reduloctab[0] = 2; } if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 10, 2, grafptr->proccomm) != 0) { errorPrint ("dgraphLoadDist: communication error (1)"); reduglbtab[0] = 2; } if (reduglbtab[0] >= 2) /* If has to abort immediately */ return (1); if ((reduglbtab[2] != - reduglbtab[1]) || (reduglbtab[4] != - reduglbtab[3]) || (reduglbtab[6] != - reduglbtab[5]) || (reduglbtab[8] != - reduglbtab[7])) { errorPrint ("dgraphLoadDist: inconsistent distributed graph headers"); return (1); } if (reduloctab[0] == 1) errorPrint ("dgraphLoadDist: distributed graph file not read by proper process"); if (reduglbtab[0] != 0) /* If cannot go on anyway */ return (1); if ((reduglbtab[10] != reduloctab[3]) || (reduglbtab[11] != reduloctab[5])) errorPrint ("dgraphLoadDist: bad input (2)"); if ((reduglbtab[10] != reduglbtab[3]) || (reduglbtab[11] != reduglbtab[5])) return (1); if (baseval == -1) { /* If keep file graph base */ baseval = reduglbtab[7]; /* Set graph base as file base */ baseadj = 0; /* No base adjustment needed */ } else /* If set graph base */ baseadj = baseval - reduglbtab[7]; /* Update base adjust */ vertlocnbr = reduloctab[10]; edgelocnbr = reduloctab[11]; sprintf (proptab, "%3.3d", (int) reduglbtab[9]); /* Compute file properties */ proptab[0] -= '0'; /* Vertex labels flag */ proptab[1] -= '0'; /* Edge weights flag */ proptab[2] -= '0'; /* Vertex loads flag */ velolocnbr = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? vertlocnbr : 0; vlbllocnbr = (proptab[0] != 0) ? vertlocnbr : 0; vlblloctax = veloloctax = vertloctax = edgeloctax = NULL; cheklocval = 0; if ((vertlocptr = memAlloc ((vertlocnbr + 1 + velolocnbr + vlbllocnbr) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadDist: out of memory (1)"); cheklocval = 1; } else { Gnum edlolocnbr; vertloctax = vertlocptr -= baseval; vertlocptr += vertlocnbr + 1; if ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) { veloloctax = vertlocptr; vertlocptr += vertlocnbr; } if (proptab[0] != 0) { vlblloctax = vertlocptr; baseadj = 0; /* No vertex adjustments if vertex labels */ } edlolocnbr = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? edgelocnbr : 0; if ((edgeloctax = memAlloc ((edgelocnbr + edlolocnbr) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphLoadDist: out of memory (2)"); cheklocval = 1; } else { edgeloctax -= baseval; edloloctax = ((proptab[1] != 0) && ((flagval & GRAPHIONOLOADEDGE) == 0)) ? (edgeloctax + edgelocnbr) : NULL; } } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphLoadDist: communication error (2)"); chekglbval = 1; } if (chekglbval != 0) { if (edgeloctax != NULL) memFree (edgeloctax + baseval); if (vertloctax != NULL) memFree (vertloctax + baseval); return (1); } degrlocmax = 0; /* No maximum degree yet */ velolocsum = (veloloctax != NULL) ? 0 : vertlocnbr; for (vertlocnum = edgelocnum = baseval, vertlocnnd = vertlocnbr + baseval, edgelocnnd = edgelocnbr + baseval; vertlocnum < vertlocnnd; vertlocnum ++) { Gnum degrlocval; if (vlblloctax != NULL) { /* If must read label */ Gnum vlbllocval; /* Vertex label value to be read */ if (intLoad (stream, &vlbllocval) != 1) { /* Read label data */ errorPrint ("dgraphLoadDist: bad input (2)"); cheklocval = 1; break; } vlblloctax[vertlocnum] = vlbllocval; } if (proptab[2] != 0) { /* If must read vertex load */ Gnum velolocval; if (intLoad (stream, &velolocval) != 1) { /* Read vertex load data */ errorPrint ("dgraphLoadDist: bad input (3)"); cheklocval = 1; break; } if (veloloctax != NULL) velolocsum += veloloctax[vertlocnum] = velolocval; } if (intLoad (stream, °rlocval) != 1) { /* Read vertex degree */ errorPrint ("dgraphLoadDist: bad input (4)"); cheklocval = 1; break; } if (degrlocmax < degrlocval) /* Set maximum degree */ degrlocmax = degrlocval; vertloctax[vertlocnum] = edgelocnum; /* Set index in edge array */ degrlocval += edgelocnum; if (degrlocval > edgelocnnd) { /* Check if edge array overflows */ errorPrint ("dgraphLoadDist: invalid arc count (1)"); cheklocval = 1; break; } for ( ; edgelocnum < degrlocval; edgelocnum ++) { Gnum edgelocval; /* Value where to read edge end */ if (proptab[1] != 0) { /* If must read edge load */ Gnum edlolocval; /* Value where to read edge load */ if (intLoad (stream, &edlolocval) != 1) { /* Read edge load data */ errorPrint ("dgraphLoadDist: bad input (5)"); cheklocval = 1; break; } if (edloloctax != NULL) edloloctax[edgelocnum] = edlolocval; } if (intLoad (stream, &edgelocval) != 1) { /* Read edge data */ errorPrint ("dgraphLoadDist: bad input (6)"); cheklocval = 1; break; } edgeloctax[edgelocnum] = edgelocval + baseadj; } if (cheklocval != 0) break; } vertloctax[vertlocnum] = edgelocnum; /* Set end of edge array */ if (edgelocnum != edgelocnnd) { /* Check if number of edges is valid */ errorPrint ("dgraphLoadDist: invalid arc count (2)"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, grafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphLoadDist: communication error (17)"); chekglbval = 1; } if (chekglbval != 0) { memFree (edgeloctax + baseval); memFree (vertloctax + baseval); return (1); } o = dgraphBuild2 (grafptr, baseval, /* Build distributed graph */ vertlocnbr, vertlocnbr, vertloctax, vertloctax + 1, veloloctax, velolocsum, NULL, vlblloctax, edgelocnbr, edgelocnbr, edgeloctax, NULL, edloloctax, degrlocmax); grafptr->flagval |= DGRAPHFREETABS | DGRAPHVERTGROUP | DGRAPHEDGEGROUP; return (o); } /* This routine loads a distributed source ** graph from a centralized source graph ** file replicated on all of the streams. ** It returns: ** - 0 : on success. ** - !0 : on error. */ static int dgraphLoadMulti ( Dgraph * restrict const grafptr, /* Distributed graph to load */ FILE * const stream, /* One single centralized stream */ Gnum baseval, /* Base value (-1 means keep file base) */ const DgraphFlag flagval) /* Graph loading flags */ { errorPrint ("dgraphLoadMulti: not implemented"); return (1); } scotch_6.0.9/src/libscotch/library_dgraph_order_perm_f.c0000644000302600021200000000664413560013261023705 0ustar pelegrinpelegrin/* Copyright 2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_perm_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the Fortran API for the **/ /** distributed ordering permutation **/ /** building routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.0 : from : 18 oct 2007 **/ /** to 18 oct 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the ordering routines. */ /* */ /**************************************/ SCOTCH_FORTRAN ( \ DGRAPHORDERPERM, dgraphorderperm, ( \ const SCOTCH_Dgraph * const grafptr, \ const SCOTCH_Dordering * const ordeptr, \ SCOTCH_Num * const permloctab, \ int * const revaptr), \ (grafptr, ordeptr, permloctab, revaptr)) { *revaptr = SCOTCH_dgraphOrderPerm (grafptr, ordeptr, permloctab); } scotch_6.0.9/src/libscotch/bdgraph_check.c0000644000302600021200000003201313560005346020727 0ustar pelegrinpelegrin/* Copyright 2007,2008,2011,2013,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_check.c **/ /** **/ /** AUTHORS : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the distributed **/ /** bipartition graph consistency checking **/ /** routine. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 22 jul 2008 **/ /** # Version 6.0 : from : 03 sep 2011 **/ /** to 31 aug 2014 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include "module.h" #include "common.h" #include "arch.h" #include "dgraph.h" #include "bdgraph.h" int bdgraphCheck ( const Bdgraph * restrict const grafptr) { Dgraph grafdat; /* Dummy graph for ghost edge array */ MPI_Comm proccomm; /* Graph communicator */ int * restrict flagloctax; /* Frontier flag array */ GraphPart * restrict partgsttax; Gnum fronlocnum; Gnum vertlocnum; /* Number of current vertex */ Gnum complocload[2]; Gnum complocsize[2]; Gnum commcut[2]; Gnum commlocloadintn; Gnum commlocloadextn; Gnum commlocgainextn; Gnum edlolocval; Gnum reduloctab[21]; /* Arrays for reductions */ Gnum reduglbtab[21]; int chekglbval; /* Global consistency flag */ int cheklocval; /* Local consistency flag */ proccomm = grafptr->s.proccomm; if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize */ errorPrint ("bdgraphCheck: communication error (1)"); return (1); } cheklocval = 0; /* Assume everything is all right */ if ((grafptr->compglbload0min < 0) || (grafptr->compglbload0max > grafptr->s.veloglbsum)) { errorPrint ("bdgraphCheck: invalid extrema loads"); cheklocval = 1; } if (grafptr->compglbload0 != (grafptr->compglbload0avg + grafptr->compglbload0dlt)) { errorPrint ("bdgraphCheck: invalid global balance"); cheklocval |= 2; } if ((grafptr->fronlocnbr < 0) || (grafptr->fronlocnbr > grafptr->s.vertlocnbr)) { errorPrint ("bdgraphCheck: invalid number of local frontier vertices"); cheklocval |= 4; } if (grafptr->partgsttax != NULL) { for (vertlocnum = grafptr->s.baseval; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { if ((grafptr->partgsttax[vertlocnum] | 1) != 1) { /* If part is neither 0 nor 1 */ errorPrint ("bdgraphCheck: invalid local part array"); cheklocval |= 8; break; } } } grafdat = grafptr->s; /* Copy minimal distributed graph data */ if (dgraphGhst (&grafdat) != 0) { /* Create ghost edge array if did not exist */ errorPrint ("bdgraphCheck: cannot compute ghost edge array"); cheklocval |= 16; } if (memAllocGroup ((void **) (void *) &partgsttax, (size_t) (grafdat.vertgstnbr * sizeof (GraphPart)), &flagloctax, (size_t) (grafptr->s.vertlocnbr * sizeof (int)), NULL) == NULL) { errorPrint ("bdgraphCheck: out of memory"); cheklocval |= 32; } else { memSet (flagloctax, ~0, grafptr->s.vertlocnbr * sizeof (int)); flagloctax -= grafptr->s.baseval; for (fronlocnum = 0; fronlocnum < grafptr->fronlocnbr; fronlocnum ++) { Gnum vertlocnum; vertlocnum = grafptr->fronloctab[fronlocnum]; if ((vertlocnum < grafptr->s.baseval) || (vertlocnum >= grafptr->s.vertlocnnd)) { errorPrint ("bdgraphCheck: invalid vertex index in frontier array"); cheklocval |= 64; break; } if (flagloctax[vertlocnum] != ~0) { errorPrint ("bdgraphCheck: duplicate vertex in frontier array"); cheklocval |= 128; break; } flagloctax[vertlocnum] = 0; } } reduloctab[0] = grafptr->commglbload; reduloctab[1] = - grafptr->commglbload; reduloctab[2] = grafptr->compglbload0; reduloctab[3] = - grafptr->compglbload0; reduloctab[4] = grafptr->s.veloglbsum - grafptr->compglbload0; reduloctab[5] = - grafptr->s.veloglbsum + grafptr->compglbload0; reduloctab[6] = grafptr->compglbsize0; reduloctab[7] = - grafptr->compglbsize0; reduloctab[8] = grafptr->s.vertglbnbr - grafptr->compglbsize0; reduloctab[9] = - grafptr->s.vertglbnbr + grafptr->compglbsize0; reduloctab[10] = grafptr->commglbgainextn; reduloctab[11] = - grafptr->commglbgainextn; reduloctab[12] = grafptr->commglbgainextn0; reduloctab[13] = - grafptr->commglbgainextn0; reduloctab[14] = grafptr->commglbloadextn0; reduloctab[15] = - grafptr->commglbloadextn0; reduloctab[16] = grafptr->fronglbnbr; reduloctab[17] = - grafptr->fronglbnbr; reduloctab[18] = grafptr->levlnum; reduloctab[19] = - grafptr->levlnum; reduloctab[20] = cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 21, GNUM_MPI, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphCheck: communication error (2)"); return (1); } if (reduglbtab[20] != 0) { /* Exit and Return information of previous errors */ if (partgsttax != NULL) memFree (partgsttax); /* Free yet unbased group leader */ return ((int) reduglbtab[20]); } if ((reduglbtab[1] != - reduglbtab[0]) || (reduglbtab[3] != - reduglbtab[2]) || (reduglbtab[5] != - reduglbtab[4]) || (reduglbtab[7] != - reduglbtab[6]) || (reduglbtab[9] != - reduglbtab[8]) || (reduglbtab[11] != - reduglbtab[10]) || (reduglbtab[13] != - reduglbtab[12]) || (reduglbtab[15] != - reduglbtab[14]) || (reduglbtab[17] != - reduglbtab[16]) || (reduglbtab[19] != - reduglbtab[18])) { errorPrint ("bdgraphCheck: inconsistent global graph data"); return (1); } if (grafptr->partgsttax != NULL) memCpy (partgsttax, grafptr->partgsttax + grafptr->s.baseval, grafptr->s.vertlocnbr * sizeof (GraphPart)); /* Copy local part data */ else memSet (partgsttax, 0, grafptr->s.vertlocnbr * sizeof (GraphPart)); dgraphHaloSync (&grafdat, partgsttax, GRAPHPART_MPI); /* Spread yet unbased halo part data across neighboring processes */ partgsttax -= grafptr->s.baseval; cheklocval = 0; for (fronlocnum = 0; fronlocnum < grafptr->fronlocnbr; fronlocnum ++) { Gnum vertlocnum; Gnum edgelocnum; GraphPart commcut; GraphPart partval; vertlocnum = grafptr->fronloctab[fronlocnum]; partval = partgsttax[vertlocnum]; for (edgelocnum = grafptr->s.vertloctax[vertlocnum], commcut = 0; edgelocnum < grafptr->s.vendloctax[vertlocnum]; edgelocnum ++) { GraphPart partdlt; partdlt = partgsttax[grafdat.edgegsttax[edgelocnum]] ^ partval; commcut |= partdlt; } if (commcut == 0) { errorPrint ("bdgraphCheck: invalid vertex in frontier array"); cheklocval |= 1; break; } } complocload[0] = complocload[1] = 0; complocsize[0] = complocsize[1] = 0; commlocloadintn = 0; commlocloadextn = 0; commlocgainextn = 0; edlolocval = 1; /* Assume edges are not weighted */ for (vertlocnum = grafptr->s.baseval; vertlocnum < grafptr->s.vertlocnnd; vertlocnum ++) { Gnum partval; /* Part of current vertex */ Gnum edgelocnum; /* Number of current edge */ partval = (Gnum) partgsttax[vertlocnum]; if (grafptr->veexloctax != NULL) { Gnum veexval; veexval = grafptr->veexloctax[vertlocnum]; commlocloadextn += veexval * partval; commlocgainextn += veexval * (1 - 2 * partval); } complocload[partval] += (grafptr->s.veloloctax == NULL) ? 1 : grafptr->s.veloloctax[vertlocnum]; complocsize[partval] ++; commcut[0] = commcut[1] = 0; for (edgelocnum = grafptr->s.vertloctax[vertlocnum]; edgelocnum < grafptr->s.vendloctax[vertlocnum]; edgelocnum ++) { int partend; int partdlt; if (grafptr->s.edloloctax != NULL) edlolocval = grafptr->s.edloloctax[edgelocnum]; partend = partgsttax[grafdat.edgegsttax[edgelocnum]]; partdlt = partval ^ partend; commcut[partend] ++; commlocloadintn += partdlt * edlolocval; /* Internal load is accounted for twice */ } if ((commcut[0] != 0) && (commcut[1] != 0) && /* If vertex should be in separator */ (flagloctax[vertlocnum] != 0)) { errorPrint ("bdgraphCheck: vertex should be in separator"); cheklocval |= 2; } } if (grafptr->s.edgegsttax != grafdat.edgegsttax) /* If ghost edge array was allocated here, free it manually */ memFree (grafdat.edgegsttax + grafptr->s.baseval); if (grafptr->s.procsidtab != grafdat.procsidtab) /* The same for procsidtab */ memFree (grafdat.procsidtab); memFree (partgsttax + grafptr->s.baseval); /* Free group leader */ if ((cheklocval == 0) && ((complocsize[0] != grafptr->complocsize0) || (complocsize[1] != (grafptr->s.vertlocnbr - grafptr->complocsize0)))) { errorPrint ("bdgraphCheck: invalid local part size"); cheklocval |= 4; } reduloctab[0] = complocload[0]; reduloctab[1] = complocsize[0]; reduloctab[2] = commlocloadintn; /* Twice the internal load; sum globally before dividing by two */ reduloctab[3] = commlocloadextn; reduloctab[4] = commlocgainextn; reduloctab[5] = cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 6, GNUM_MPI, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphCheck: communication error (3)"); return (1); } if (reduglbtab[5] != 0) /* Return from previous errors */ return (1); if (grafptr->compglbload0 != reduglbtab[0]) { errorPrint ("bdgraphCheck: invalid global part loads"); cheklocval |= 8; } if (grafptr->compglbsize0 != reduglbtab[1]) { errorPrint ("bdgraphCheck: invalid global part sizes"); cheklocval |= 16; } if (grafptr->commglbload != ((reduglbtab[2] / 2) * grafptr->domndist + reduglbtab[3] + grafptr->commglbloadextn0)) { errorPrint ("bdgraphCheck: invalid global communication loads"); cheklocval |= 32; } if (grafptr->commglbgainextn != reduglbtab[4]) { errorPrint ("bdgraphCheck: invalid global communication gains"); cheklocval |= 64; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("bdgraphCheck: communication error (4)"); return (1); } return (chekglbval); } scotch_6.0.9/src/libscotch/arch_mesh.c0000644000302600021200000010770313560005302020115 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_mesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module handles the mesh graph **/ /** target architectures. **/ /** **/ /** DATES : # Version 0.0 : from : 01 dec 1992 **/ /** to : 24 mar 1993 **/ /** # Version 1.2 : from : 04 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 1.3 : from : 20 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to : 23 dec 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to : 29 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 08 sep 1995 **/ /** # Version 3.1 : from : 22 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 16 oct 1996 **/ /** to 14 may 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 09 jan 2004 **/ /** to 10 mar 2005 **/ /** # Version 5.1 : from : 21 jan 2008 **/ /** to 11 aug 2010 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 15 may 2018 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ /** t(0,0) = 0, t(1,0) = 1, **/ /** t(dX - 1, 0) = dX - 1, t(0,1) = dX, **/ /** and t(x,y) = (y * dX) + x. **/ /** The same holds for meshes of higher **/ /** dimensions: index increases in higher **/ /** dimensions result in higher terminal **/ /** domain numbers. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_MESH #include "module.h" #include "common.h" #include "arch.h" #include "arch_mesh.h" /***********************************************/ /* */ /* These are the 2-dimensional mesh routines. */ /* */ /***********************************************/ /* This routine loads the ** bidimensional mesh architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archMesh2ArchLoad ( ArchMesh2 * restrict const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMesh2) > sizeof (ArchDummy)) || (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) { errorPrint ("archMesh2ArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->c[0]) != 1) || (intLoad (stream, &archptr->c[1]) != 1) || (archptr->c[0] < 1) || (archptr->c[1] < 1)) { errorPrint ("archMesh2ArchLoad: bad input"); return (1); } archptr->dimnnbr = 2; return (0); } /* This routine saves the ** bidimensional mesh architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archMesh2ArchSave ( const ArchMesh2 * const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMesh2) > sizeof (ArchDummy)) || (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) { errorPrint ("archMesh2ArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING " " ANUMSTRING "\n", (Anum) archptr->c[0], (Anum) archptr->c[1]) == EOF) { errorPrint ("archMesh2ArchSave: bad output"); return (1); } return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archMesh2DomNum ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const domptr) { return ((domptr->c[1][0] * archptr->c[0]) + domptr->c[0][0]); /* Return vertex number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archMesh2DomTerm ( const ArchMesh2 * const archptr, ArchMesh2Dom * const domptr, const ArchDomNum domnum) { if (domnum < (archptr->c[0] * archptr->c[1])) { /* If valid label */ domptr->c[0][0] = /* Set the domain */ domptr->c[0][1] = domnum % archptr->c[0]; domptr->c[1][0] = domptr->c[1][1] = domnum / archptr->c[0]; return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the rectangular domain. */ Anum archMesh2DomSize ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const domptr) { return ((domptr->c[0][1] - domptr->c[0][0] + 1) * (domptr->c[1][1] - domptr->c[1][0] + 1)); } /* This function returns the average ** distance between two rectangular ** domains (in fact the distance between ** the centers of the domains). */ Anum archMesh2DomDist ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const dom0ptr, const ArchMesh2Dom * const dom1ptr) { return (((abs (dom0ptr->c[0][0] + dom0ptr->c[0][1] - dom1ptr->c[0][0] - dom1ptr->c[0][1]) + 1) / 2) + ((abs (dom0ptr->c[1][0] + dom0ptr->c[1][1] - dom1ptr->c[1][0] - dom1ptr->c[1][1]) + 1) / 2)); } /* These functions try to split a rectangular ** domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archMesh2DomBipart ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const domptr, ArchMesh2Dom * restrict const dom0ptr, ArchMesh2Dom * restrict const dom1ptr) { Anum dimsiz[2]; int dimval; /* Dimension along which to split */ dimsiz[0] = domptr->c[0][1] - domptr->c[0][0]; dimsiz[1] = domptr->c[1][1] - domptr->c[1][0]; if ((dimsiz[0] | dimsiz[1]) == 0) /* Return if cannot bipartition more */ return (1); dimval = 1; if ((dimsiz[0] > dimsiz[1]) || /* Split domain in two along largest dimension */ ((dimsiz[0] == dimsiz[1]) && (archptr->c[0] > archptr->c[1]))) dimval = 0; if (dimval == 0) { /* Split across the X dimension */ dom0ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1]) / 2; dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; } else { /* Split across the Y dimension */ dom0ptr->c[0][0] = dom1ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1]) / 2; dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; dom1ptr->c[1][1] = domptr->c[1][1]; } return (0); } int archMesh2DomBipartO ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const domptr, ArchMesh2Dom * restrict const dom0ptr, ArchMesh2Dom * restrict const dom1ptr) { if ((domptr->c[0][0] == domptr->c[0][1]) && /* Return if cannot bipartition more */ (domptr->c[1][0] == domptr->c[1][1])) return (1); if (domptr->c[1][1] == domptr->c[1][0]) { /* If the Y dimension cannot be cut */ dom0ptr->c[0][0] = domptr->c[0][0]; /* Cut in the X dimension */ dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1]) / 2; dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; } else { /* If the Y dimension can be cut, cut it */ dom0ptr->c[0][0] = dom1ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1]) / 2; dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; dom1ptr->c[1][1] = domptr->c[1][1]; } return (0); } int archMesh2DomBipartU ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const domptr, ArchMesh2Dom * restrict const dom0ptr, ArchMesh2Dom * restrict const dom1ptr) { if ((domptr->c[0][0] == domptr->c[0][1]) && /* Return if cannot bipartition more */ (domptr->c[1][0] == domptr->c[1][1])) return (1); if ((domptr->c[0][1] - domptr->c[0][0]) > /* Split domain unevenly along largest dimension */ (domptr->c[1][1] - domptr->c[1][0])) { dom0ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1] + domptr->c[0][1]) / 3; dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; } else { dom0ptr->c[0][0] = dom1ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1] + domptr->c[1][1]) / 3; dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; dom1ptr->c[1][1] = domptr->c[1][1]; } return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archMesh2DomIncl ( const ArchMesh2 * const archptr, const ArchMesh2Dom * const dom0ptr, const ArchMesh2Dom * const dom1ptr) { if ((dom0ptr->c[0][0] <= dom1ptr->c[0][0]) && (dom0ptr->c[0][1] >= dom1ptr->c[0][1]) && (dom0ptr->c[1][0] <= dom1ptr->c[1][0]) && (dom0ptr->c[1][1] >= dom1ptr->c[1][1])) return (1); return (0); } /* This function creates the MPI_Datatype for ** 2D mesh domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archMesh2DomMpiType ( const ArchMesh2 * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (4, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ /***********************************************/ /* */ /* These are the 3-dimensional mesh routines. */ /* */ /***********************************************/ /* This routine loads the ** tridimensional mesh architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archMesh3ArchLoad ( ArchMesh3 * restrict const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMesh3) > sizeof (ArchDummy)) || (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) { errorPrint ("archMesh3ArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->c[0]) != 1) || (intLoad (stream, &archptr->c[1]) != 1) || (intLoad (stream, &archptr->c[2]) != 1) || (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) { errorPrint ("archMesh3ArchLoad: bad input"); return (1); } archptr->dimnnbr = 3; return (0); } /* This routine saves the ** tridimensional mesh architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archMesh3ArchSave ( const ArchMesh3 * const archptr, FILE * restrict const stream) { #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMesh3) > sizeof (ArchDummy)) || (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) { errorPrint ("archMesh3ArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING " " ANUMSTRING " " ANUMSTRING "\n", (Anum) archptr->c[0], (Anum) archptr->c[1], (Anum) archptr->c[2]) == EOF) { errorPrint ("archMesh3ArchSave: bad output"); return (1); } return (0); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archMesh3DomNum ( const ArchMesh3 * const archptr, const ArchMesh3Dom * const domptr) { return ((((domptr->c[2][0] * archptr->c[1]) + /* Return the vertex number */ domptr->c[1][0]) * archptr->c[0]) + domptr->c[0][0]); } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archMesh3DomTerm ( const ArchMesh3 * const archptr, ArchMesh3Dom * const domptr, const ArchDomNum domnum) { if (domnum < (archptr->c[0] * archptr->c[1] * archptr->c[2])) { /* If valid label */ domptr->c[0][0] = /* Set the domain */ domptr->c[0][1] = domnum % archptr->c[0]; domptr->c[1][0] = domptr->c[1][1] = (domnum / archptr->c[0]) % archptr->c[1]; domptr->c[2][0] = domptr->c[2][1] = domnum / (archptr->c[0] * archptr->c[1]); return (0); } return (1); /* Cannot set domain */ } /* This function returns the number of ** elements in the cubic domain. */ Anum archMesh3DomSize ( const ArchMesh3 * const archptr, const ArchMesh3Dom * const domptr) { return ((domptr->c[0][1] - domptr->c[0][0] + 1) * (domptr->c[1][1] - domptr->c[1][0] + 1) * (domptr->c[2][1] - domptr->c[2][0] + 1)); } /* This function returns the average distance ** between two cubic domains (in fact the ** distance between the centers of the domains). */ Anum archMesh3DomDist ( const ArchMesh3 * const archptr, const ArchMesh3Dom * const dom0ptr, const ArchMesh3Dom * const dom1ptr) { return (((abs (dom0ptr->c[0][0] + dom0ptr->c[0][1] - dom1ptr->c[0][0] - dom1ptr->c[0][1]) + 1) / 2) + ((abs (dom0ptr->c[1][0] + dom0ptr->c[1][1] - dom1ptr->c[1][0] - dom1ptr->c[1][1]) + 1) / 2) + ((abs (dom0ptr->c[2][0] + dom0ptr->c[2][1] - dom1ptr->c[2][0] - dom1ptr->c[2][1]) + 1) / 2)); } /* This function tries to split a cubic ** domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archMesh3DomBipart ( const ArchMesh3 * const archptr, const ArchMesh3Dom * const domptr, ArchMesh3Dom * restrict const dom0ptr, ArchMesh3Dom * restrict const dom1ptr) { Anum dimsiz[3]; int dimtmp; int dimval; dimsiz[0] = domptr->c[0][1] - domptr->c[0][0]; dimsiz[1] = domptr->c[1][1] - domptr->c[1][0]; dimsiz[2] = domptr->c[2][1] - domptr->c[2][0]; if ((dimsiz[0] | dimsiz[1] | dimsiz[2]) == 0) /* Return if cannot bipartition more */ return (1); dimval = (archptr->c[1] > archptr->c[0]) ? 1 : 0; /* Assume all subdomain dimensions are equal */ if (archptr->c[2] > archptr->c[dimval]) /* Find priviledged dimension */ dimval = 2; dimtmp = dimval; /* Find best dimension */ if (dimsiz[(dimtmp + 1) % 3] > dimsiz[dimval]) dimval = (dimtmp + 1) % 3; if (dimsiz[(dimtmp + 2) % 3] > dimsiz[dimval]) dimval = (dimtmp + 2) % 3; if (dimval == 0) { /* Split domain in two along largest dimension */ dom0ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = (domptr->c[0][0] + domptr->c[0][1]) / 2; dom1ptr->c[0][0] = dom0ptr->c[0][1] + 1; dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; dom0ptr->c[2][0] = dom1ptr->c[2][0] = domptr->c[2][0]; dom0ptr->c[2][1] = dom1ptr->c[2][1] = domptr->c[2][1]; } else if (dimval == 1) { dom0ptr->c[0][0] = dom1ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = (domptr->c[1][0] + domptr->c[1][1]) / 2; dom1ptr->c[1][0] = dom0ptr->c[1][1] + 1; dom1ptr->c[1][1] = domptr->c[1][1]; dom0ptr->c[2][0] = dom1ptr->c[2][0] = domptr->c[2][0]; dom0ptr->c[2][1] = dom1ptr->c[2][1] = domptr->c[2][1]; } else { dom0ptr->c[0][0] = dom1ptr->c[0][0] = domptr->c[0][0]; dom0ptr->c[0][1] = dom1ptr->c[0][1] = domptr->c[0][1]; dom0ptr->c[1][0] = dom1ptr->c[1][0] = domptr->c[1][0]; dom0ptr->c[1][1] = dom1ptr->c[1][1] = domptr->c[1][1]; dom0ptr->c[2][0] = domptr->c[2][0]; dom0ptr->c[2][1] = (domptr->c[2][0] + domptr->c[2][1]) / 2; dom1ptr->c[2][0] = dom0ptr->c[2][1] + 1; dom1ptr->c[2][1] = domptr->c[2][1]; } return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archMesh3DomIncl ( const ArchMesh3 * const archptr, const ArchMesh3Dom * const dom0ptr, const ArchMesh3Dom * const dom1ptr) { if ((dom0ptr->c[0][0] <= dom1ptr->c[0][0]) && (dom0ptr->c[0][1] >= dom1ptr->c[0][1]) && (dom0ptr->c[1][0] <= dom1ptr->c[1][0]) && (dom0ptr->c[1][1] >= dom1ptr->c[1][1]) && (dom0ptr->c[2][0] <= dom1ptr->c[2][0]) && (dom0ptr->c[2][1] >= dom1ptr->c[2][1])) return (1); return (0); } /* This function creates the MPI_Datatype for ** 3D mesh domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archMesh3DomMpiType ( const ArchMesh3 * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (6, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ /**********************************************/ /* */ /* These are the x-dimensional mesh routines. */ /* */ /**********************************************/ /* This routine loads the X-dimensional mesh ** architecture. ** It returns: ** - 0 : if the architecture has been successfully read. ** - !0 : on error. */ int archMeshXArchLoad ( ArchMeshX * restrict const archptr, FILE * restrict const stream) { Anum dimnnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMeshX) > sizeof (ArchDummy)) || (sizeof (ArchMeshXDom) > sizeof (ArchDomDummy))) { errorPrint ("archMeshXArchLoad: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if ((intLoad (stream, &archptr->dimnnbr) != 1) || (archptr->dimnnbr > ARCHMESHDIMNMAX)) { errorPrint ("archMeshXArchLoad: bad input (1)"); return (1); } for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { if ((intLoad (stream, &archptr->c[dimnnum]) != 1) || (archptr->c[dimnnum] < 1)) { errorPrint ("archMeshXArchLoad: bad input (2)"); return (1); } } return (0); } /* This routine saves the ** tridimensional torus architecture. ** It returns: ** - 0 : if the architecture has been successfully written. ** - !0 : on error. */ int archMeshXArchSave ( const ArchMeshX * const archptr, FILE * restrict const stream) { Anum dimnnum; #ifdef SCOTCH_DEBUG_ARCH1 if ((sizeof (ArchMeshX) > sizeof (ArchDummy)) || (sizeof (ArchMeshXDom) > sizeof (ArchDomDummy))) { errorPrint ("archMeshXArchSave: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ if (fprintf (stream, ANUMSTRING " ", (Anum) archptr->dimnnbr) == EOF) { errorPrint ("archMeshXArchSave: bad output (1)"); return (1); } for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { if (fprintf (stream, ANUMSTRING " ", (Anum) archptr->c[dimnnum]) == EOF) { errorPrint ("archMeshXArchSave: bad output (2)"); return (1); } } if (fprintf (stream, "\n") == EOF) { errorPrint ("archMeshArchSave: bad output (3)"); return (1); } return (0); } /* This routine initializes the matching ** data structure according to the number ** of vertices to be managed. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ int archMeshXMatchInit ( ArchMeshXMatch * restrict const matcptr, const ArchMeshX * restrict const archptr) { Anum dimnnbr; Anum dimnnum; Anum multnbr; const Anum * restrict const dimntab = archptr->c; dimnnbr = archptr->dimnnbr; multnbr = (dimntab[0] + 1) >> 1; /* In case dimension 0, which will be coarsened first, is odd */ for (dimnnum = 1; dimnnum < dimnnbr; dimnnum ++) multnbr *= dimntab[dimnnum]; if ((matcptr->multtab = memAlloc (multnbr * sizeof (ArchCoarsenMulti))) == NULL) { errorPrint ("archMeshXMatchInit: out of memory"); return (1); } matcptr->dimnnbr = dimnnbr; /* Set number of dimensions */ matcptr->dimnnum = 0; /* Set first dimension to consider for coarsening */ memCpy (matcptr->dimntab, dimntab, dimnnbr * sizeof (Anum)); memSet (matcptr->passtab, 0, dimnnbr * sizeof (int)); return (0); } /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ void archMeshXMatchExit ( ArchMeshXMatch * restrict const matcptr) { memFree (matcptr->multtab); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ Anum archMeshXMatchMate ( ArchMeshXMatch * restrict const matcptr, ArchCoarsenMulti ** restrict const multptr) { ArchCoarsenMulti * restrict coarmulttab; Anum coarvertnum; Anum finevertnbr; Anum finevertnum; Anum finevertdlt; /* Span of blocks of fine vertices that have same characteristics */ Anum fineverttmp; /* Next fine vertex index that will result in change in dimension index */ Anum * restrict dimntab; /* Array of mesh dimensions */ Anum dimnnbr; Anum dimntmp; Anum dimnnum; /* Number of dimension that will be coarsened */ Anum indxnbr; /* NUmber of fine indices in coarsened dimension */ Anum indxnum; /* Current fine vertex index in coarsened dimension */ Anum indxval; /* Value of dimension index that will hold single nodes */ int passnum; /* Flag that indicates whether even or odd dimension indices are matched */ dimnnbr = matcptr->dimnnbr; dimntab = matcptr->dimntab; for (dimnnum = matcptr->dimnnum, dimntmp = (dimnnum + dimnnbr - 1) % dimnnbr; /* Search for a dimension to coarsen */ dimntab[dimnnum] <= 1; dimnnum = (dimnnum + 1) % dimnnbr) { if (dimnnum == dimntmp) /* If no dimension can be coarsened, abort */ return (-1); } matcptr->dimnnum = (dimnnum + 1) % dimnnbr; /* Record next dimension to process */ for (dimntmp = 0, finevertdlt = 1; /* Compute stride of blocks of fine vertices to be coarsened according to selected dimension */ dimntmp < dimnnum; dimntmp ++) finevertdlt *= dimntab[dimntmp]; for (finevertnbr = finevertdlt; /* Compute number of fine vertices */ dimntmp < dimnnbr; dimntmp ++) finevertnbr *= dimntab[dimntmp]; indxnbr = dimntab[dimnnum]; /* Get size of selected dimension */ dimntab[dimnnum] = (indxnbr + 1) >> 1; /* Record new size of selected dimension */ if ((indxnbr & 1) != 0) { /* If dimension to consider is odd */ passnum = matcptr->passtab[dimnnum] ^= 1; /* Record that pass did matter for this dimension */ indxval = (passnum != 0) ? 0 : indxnbr - 1; /* Set index that will contain single nodes */ } else { passnum = 0; /* Start multinodes from first index */ indxval = -1; /* No need to have single nodes */ } coarmulttab = matcptr->multtab; for (finevertnum = coarvertnum = indxnum = 0, fineverttmp = finevertdlt - 1; finevertnum < finevertnbr; finevertnum ++) { if (indxnum == indxval) { /* If dimension index is that of single nodes */ coarmulttab[coarvertnum].vertnum[0] = /* Create single node */ coarmulttab[coarvertnum].vertnum[1] = finevertnum; coarvertnum ++; } else if ((indxnum & 1) == passnum) { /* Else if dimension index is that of first mate */ coarmulttab[coarvertnum].vertnum[0] = finevertnum; /* Create multinode */ coarmulttab[coarvertnum].vertnum[1] = finevertnum + finevertdlt; coarvertnum ++; } if (finevertnum == fineverttmp) { /* If dimension stride reached */ indxnum = (indxnum + 1) % indxnbr; /* Increase dimension index */ fineverttmp += finevertdlt; /* Compute next step to reach */ } } #ifdef SCOTCH_DEBUG_ARCH2 if (coarvertnum * indxnbr != finevertnbr * ((indxnbr + 1) >> 1)) { errorPrint ("archMeshXMatchMate: internal error"); return (-1); } #endif /* SCOTCH_DEBUG_ARCH2 */ *multptr = coarmulttab; /* Always provide same mating array */ return (coarvertnum); } /* This function returns the smallest number ** of terminal domain included in the given ** domain. */ ArchDomNum archMeshXDomNum ( const ArchMeshX * const archptr, const ArchMeshXDom * const domnptr) { Anum dimnnum; Anum domnnum; for (dimnnum = archptr->dimnnbr - 2, domnnum = domnptr->c[archptr->dimnnbr - 1][0]; dimnnum >= 0; dimnnum --) domnnum = (domnnum * archptr->c[dimnnum]) + domnptr->c[dimnnum][0]; return (domnnum); /* Return vertex number */ } /* This function returns the terminal domain associated ** with the given terminal number in the architecture. ** It returns: ** - 0 : if label is valid and domain has been updated. ** - 1 : if label is invalid. ** - 2 : on error. */ int archMeshXDomTerm ( const ArchMeshX * const archptr, ArchMeshXDom * const domnptr, const ArchDomNum domnnum) { Anum dimnnum; Anum domntmp; for (dimnnum = 0, domntmp = domnnum; dimnnum < archptr->dimnnbr; dimnnum ++) { /* Set the domain */ domnptr->c[dimnnum][0] = domnptr->c[dimnnum][1] = domntmp % archptr->c[dimnnum]; domntmp /= archptr->c[dimnnum]; } if (domntmp > 0) /* If residual is not zero, terminal domain number is invalid since too high */ return (1); return (0); } /* This function returns the number of ** elements in the cubic domain. */ Anum archMeshXDomSize ( const ArchMeshX * const archptr, const ArchMeshXDom * const domnptr) { Anum dimnnum; Anum domnsiz; for (dimnnum = 0, domnsiz = 1; dimnnum < archptr->dimnnbr; dimnnum ++) domnsiz *= domnptr->c[dimnnum][1] - domnptr->c[dimnnum][0] + 1; return (domnsiz); } /* This function returns the average distance ** between two cubic domains (in fact the ** distance between the centers of the domains). */ Anum archMeshXDomDist ( const ArchMeshX * const archptr, const ArchMeshXDom * const dom0ptr, const ArchMeshXDom * const dom1ptr) { Anum dimnnum; Anum distval; Anum disttmp; for (dimnnum = 0, distval = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { disttmp = abs (dom0ptr->c[dimnnum][0] + dom0ptr->c[dimnnum][1] - dom1ptr->c[dimnnum][0] - dom1ptr->c[dimnnum][1]); distval += (disttmp > archptr->c[dimnnum]) ? (2 * archptr->c[dimnnum] - disttmp) : disttmp; } return (distval >> 1); } /* This function sets the biggest ** domain available for this ** architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archMeshXDomFrst ( const ArchMeshX * const archptr, ArchMeshXDom * restrict const domptr) { Anum dimnnum; for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { domptr->c[dimnnum][0] = 0; domptr->c[dimnnum][1] = archptr->c[dimnnum] - 1; } return (0); } /* This routine reads domain information ** from the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archMeshXDomLoad ( const ArchMeshX * const archptr, ArchMeshXDom * restrict const domptr, FILE * restrict const stream) { Anum dimnnum; for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { if ((intLoad (stream, &domptr->c[dimnnum][0]) != 1) || (intLoad (stream, &domptr->c[dimnnum][1]) != 1) || (domptr->c[dimnnum][0] > domptr->c[dimnnum][1]) || (domptr->c[dimnnum][0] < 0)) { errorPrint ("archMeshXDomLoad: bad input"); return (1); } } return (0); } /* This routine saves domain information ** to the given stream. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archMeshXDomSave ( const ArchMeshX * const archptr, const ArchMeshXDom * const domptr, FILE * restrict const stream) { Anum dimnnum; for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { if (fprintf (stream, ANUMSTRING " " ANUMSTRING " ", (Anum) domptr->c[dimnnum][0], (Anum) domptr->c[dimnnum][1]) == EOF) { errorPrint ("archMeshXDomSave: bad output"); return (1); } } return (0); } /* This function tries to split a cubic ** domain into two subdomains. ** It returns: ** - 0 : if bipartitioning succeeded. ** - 1 : if bipartitioning could not be performed. ** - 2 : on error. */ int archMeshXDomBipart ( const ArchMeshX * const archptr, const ArchMeshXDom * const domptr, ArchMeshXDom * restrict const dom0ptr, ArchMeshXDom * restrict const dom1ptr) { Anum archdimsizmax; /* Maximum span on largest architecture dimension */ Anum domndimsizmax; /* Maximum span on largest domain dimension */ Anum domndimval; /* Dimension to be split */ Anum domndimflg; /* Flag set if subdomain can be bipartitioned */ Anum domndimtmp; Anum dimnnum; for (dimnnum = domndimval = archptr->dimnnbr - 1, archdimsizmax = domndimflg = 0, domndimsizmax = -1; dimnnum >= 0; dimnnum --) { Anum archdimsiz; Anum domndimsiz; Anum domndim0; Anum domndim1; dom0ptr->c[dimnnum][0] = /* Set up subdomain data as copy of original domain data */ dom1ptr->c[dimnnum][0] = domndim0 = domptr->c[dimnnum][0]; dom0ptr->c[dimnnum][1] = dom1ptr->c[dimnnum][1] = domndim1 = domptr->c[dimnnum][1]; domndimsiz = domndim1 - domndim0; /* Span on current dimension */ domndimflg |= domndimsiz; /* Flag set if at least one is not zero */ if (domndimsiz < domndimsizmax) /* If dimension is too small, skip it */ continue; archdimsiz = archptr->c[dimnnum]; if ((domndimsiz == domndimsizmax) && /* If dimension to split is not priviledged, skip it */ (archdimsiz <= archdimsizmax)) continue; archdimsizmax = archdimsiz; /* Record dimension to split */ domndimsizmax = domndimsiz; domndimval = dimnnum; } if (domndimflg == 0) /* Return if cannot bipartition more */ return (1); domndimtmp = (domptr->c[domndimval][0] + domptr->c[domndimval][1]) / 2; dom0ptr->c[domndimval][1] = domndimtmp; dom1ptr->c[domndimval][0] = domndimtmp + 1; return (0); } /* This function checks if dom1 is ** included in dom0. ** It returns: ** - 0 : if dom1 is not included in dom0. ** - 1 : if dom1 is included in dom0. ** - 2 : on error. */ int archMeshXDomIncl ( const ArchMeshX * const archptr, const ArchMeshXDom * const dom0ptr, const ArchMeshXDom * const dom1ptr) { Anum dimnnum; for (dimnnum = 0; dimnnum < archptr->dimnnbr; dimnnum ++) { if ((dom1ptr->c[dimnnum][0] < dom0ptr->c[dimnnum][0]) || (dom1ptr->c[dimnnum][1] > dom0ptr->c[dimnnum][1])) return (0); } return (1); } /* This function creates the MPI_Datatype for ** xD torus domains. ** It returns: ** - 0 : if type could be created. ** - 1 : on error. */ #ifdef SCOTCH_PTSCOTCH int archMeshXDomMpiType ( const ArchMeshX * const archptr, MPI_Datatype * const typeptr) { MPI_Type_contiguous (2 * archptr->dimnnbr, ANUM_MPI, typeptr); return (0); } #endif /* SCOTCH_PTSCOTCH */ scotch_6.0.9/src/libscotch/dgraph_check.c0000644000302600021200000005762613560005435020605 0ustar pelegrinpelegrin/* Copyright 2007-2010,2012,2014,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_check.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** This module contains the distributed **/ /** graph consistency checking routine. **/ /** **/ /** # Version P0.0 : from : 01 apr 1997 **/ /** to 20 jun 1997 **/ /** # Version P0.1 : from : 14 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version P0.2 : from : 11 may 1999 **/ /** to 02 feb 2000 **/ /** # Version 5.0 : from : 04 jul 2005 **/ /** to : 10 sep 2007 **/ /** # Version 5.1 : from : 20 nov 2008 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 29 sep 2012 **/ /** to : 31 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH_CHECK #include "module.h" #include "common.h" #include "dgraph.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This function checks the consistency ** of the given distributed graph. ** It returns: ** - 0 : if graph data are consistent. ** - !0 : on error. */ int dgraphCheck ( const Dgraph * restrict const grafptr) { MPI_Comm proccomm; /* Graph communicator */ int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ int procrcvnum; /* Number of process from which to receive */ int procsndnum; /* Number of process to which to send */ int procngbsel; /* Value of the currently used neighbor buffers */ int procngbnum; /* Number of current neighbor process */ Gnum * procngbtab; /* Array of neighbor vertex ranges */ int procnum; Gnum vertlocnum; Gnum vertngbmin; /* Smallest vertex number of neighbor process */ Gnum vertngbmax; /* Largest vertex number of neighbor process */ int vertngbnbr[2]; /* Size of the neighbor vertex arrays */ Gnum * restrict vertngbtab[2]; /* Array of two neighbor vertex arrays */ Gnum * restrict vertngbptr; /* Pointer to working neighbor vertex array */ Gnum * restrict vendngbtab[2]; /* Array of two neighbor end vertex arrays */ Gnum * restrict vendngbptr; /* Pointer to working neighbor end vertex array */ Gnum edgelocnbr; /* Local number of edges */ int edgengbnbr[2]; /* Size of the neighbor vertex arrays */ Gnum * restrict edgengbtab[2]; /* Array of two neighbor edge arrays */ Gnum * restrict edgengbptr; /* Pointer to working neighbor edge array */ Gnum * restrict edlongbtab[2]; /* Array of two neighbor edge load arrays */ Gnum * restrict edlongbptr; /* Pointer to working neighbor edge load array */ Gnum edlolocsiz; /* Size of neighbor edge load array (if any) */ int cheklocval; /* Local consistency flag */ int chekglbval; /* Global consistency flag */ Gnum reduloctab[20]; /* Arrays for reductions */ Gnum reduglbtab[20]; MPI_Request requloctab[8]; /* Arrays for pipelined communications */ MPI_Status statloctab[8]; Gnum * restrict const vertloctax = grafptr->vertloctax; Gnum * restrict const vendloctax = grafptr->vendloctax; Gnum * restrict const veloloctax = grafptr->veloloctax; Gnum * restrict const edgeloctax = grafptr->edgeloctax; Gnum * restrict const edgegsttax = grafptr->edgegsttax; Gnum * restrict const edloloctax = grafptr->edloloctax; proccomm = grafptr->proccomm; /* Simplify */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize */ errorPrint ("dgraphCheck: communication error (1)"); return (1); } cheklocval = /* Assume everything is all right */ chekglbval = 0; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); if ((grafptr->procglbnbr != procglbnbr) || (grafptr->proclocnum != proclocnum) || ((grafptr->procdsptab == NULL) && (grafptr->vertlocnbr != 0))) { errorPrint ("dgraphCheck: inconsistent communication data (1)"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (2)"); return (1); } if (chekglbval != 0) return (1); reduloctab[0] = (grafptr->procdsptab == NULL) ? 0 : 1; /* If private data not initialized */ if (MPI_Allreduce (reduloctab, reduglbtab, 1, GNUM_MPI, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (3)"); return (1); } if (reduglbtab[0] == 0) /* If distributed graph is empty */ return (0); /* Do not go any further */ if (reduglbtab[0] != procglbnbr) { /* If private data not consistently here */ errorPrint ("dgraphCheck: inconsistent communication data (2)"); return (1); } for (procrcvnum = 0; procrcvnum < grafptr->procglbnbr; procrcvnum ++) { if ((grafptr->proccnttab[procrcvnum] < 0) || (grafptr->proccnttab[procrcvnum] != (grafptr->procdsptab[procrcvnum + 1] - grafptr->procdsptab[procrcvnum])) || (grafptr->proccnttab[procrcvnum] > (grafptr->procvrttab[procrcvnum + 1] - grafptr->procvrttab[procrcvnum]))) { errorPrint ("dgraphCheck: inconsistent communication data (3)"); cheklocval = 1; } } if (grafptr->proccnttab[proclocnum] != grafptr->vertlocnbr) { errorPrint ("dgraphCheck: inconsistent communication data (4)"); cheklocval = 1; } procrcvnum = (proclocnum + 1) % procglbnbr; /* Compute indices of neighbors */ procsndnum = (proclocnum - 1 + procglbnbr) % procglbnbr; if ((procngbtab = (Gnum *) memAlloc ((procglbnbr + 1) * sizeof (Gnum))) == NULL) { errorPrint ("dgraphCheck: out of memory (1)"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (4)"); return (1); } if (chekglbval != 0) { if (procngbtab != NULL) memFree (procngbtab); return (1); } MPI_Sendrecv (grafptr->procdsptab, procglbnbr + 1, GNUM_MPI, procsndnum, TAGPROCVRTTAB, /* Check vertex range array */ procngbtab, procglbnbr + 1, GNUM_MPI, procrcvnum, TAGPROCVRTTAB, proccomm, &statloctab[0]); for (procngbnum = 0; procngbnum <= procglbnbr; procngbnum ++) { if (grafptr->procdsptab[procngbnum] != procngbtab[procngbnum]) { errorPrint ("dgraphCheck: inconsistent communication data (5)"); cheklocval = 1; break; } } MPI_Sendrecv (grafptr->procvrttab, procglbnbr + 1, GNUM_MPI, procsndnum, TAGPROCVRTTAB, /* Check vertex range array */ procngbtab, procglbnbr + 1, GNUM_MPI, procrcvnum, TAGPROCVRTTAB, proccomm, &statloctab[0]); for (procngbnum = 0; procngbnum <= procglbnbr; procngbnum ++) { if (grafptr->procvrttab[procngbnum] != procngbtab[procngbnum]) { errorPrint ("dgraphCheck: inconsistent communication data (6)"); cheklocval = 1; break; } } memFree (procngbtab); if ((grafptr->baseval < 0) || /* Elementary constraints on graph fields */ (grafptr->vertlocnbr < 0) || (grafptr->vertlocnnd != (grafptr->vertlocnbr + grafptr->baseval)) || (((grafptr->flagval & DGRAPHHASEDGEGST) != 0) && ((grafptr->vertgstnbr < grafptr->vertlocnbr) || (grafptr->vertgstnnd != (grafptr->vertgstnbr + grafptr->baseval)))) || (grafptr->edgelocnbr < 0) || (grafptr->edgelocsiz < grafptr->edgelocnbr)) { errorPrint ("dgraphCheck: inconsistent local graph data"); cheklocval = 1; } reduloctab[ 0] = grafptr->flagval; reduloctab[ 1] = - grafptr->flagval; reduloctab[ 2] = grafptr->baseval; reduloctab[ 3] = - grafptr->baseval; reduloctab[ 4] = grafptr->vertglbnbr; reduloctab[ 5] = - grafptr->vertglbnbr; reduloctab[ 6] = grafptr->vertglbmax; reduloctab[ 7] = - grafptr->vertglbmax; reduloctab[ 8] = grafptr->vertlocnbr; reduloctab[ 9] = grafptr->edgeglbnbr; reduloctab[10] = - grafptr->edgeglbnbr; reduloctab[11] = grafptr->edgeglbmax; reduloctab[12] = - grafptr->edgeglbmax; reduloctab[13] = grafptr->edgelocnbr; reduloctab[14] = grafptr->edgelocsiz; reduloctab[15] = grafptr->edgeglbsmx; reduloctab[16] = - grafptr->edgeglbsmx; reduloctab[17] = grafptr->degrglbmax; reduloctab[18] = - grafptr->degrglbmax; reduloctab[19] = (Gnum) cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 20, GNUM_MPI, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (5)"); return (1); } if (reduglbtab[19] != 0) return (1); if ((reduglbtab[ 1] != - reduglbtab[ 0]) || /* Check if global graph data match */ (reduglbtab[ 3] != - reduglbtab[ 2]) || (reduglbtab[ 5] != - reduglbtab[ 4]) || (reduglbtab[ 7] != - reduloctab[ 6]) || (reduglbtab[ 8] != reduloctab[ 6]) || (reduglbtab[10] != - reduglbtab[ 9]) || (reduglbtab[12] != - reduglbtab[11]) || (reduglbtab[13] != reduloctab[11]) || /* Recompute and test maximum number of local edges */ (reduglbtab[14] != reduloctab[15]) || /* Recompute and test maximum size of local edge array */ (reduglbtab[16] != - reduloctab[15]) || (reduglbtab[18] != - reduloctab[17])) { errorPrint ("dgraphCheck: inconsistent global graph data (1)"); cheklocval = 1; } reduloctab[0] = (veloloctax != NULL) ? 1 : 0; /* Check consistency */ reduloctab[1] = (edgegsttax != NULL) ? 1 : 0; reduloctab[2] = (edloloctax != NULL) ? 1 : 0; reduloctab[3] = (grafptr->vnumloctax != NULL) ? 1 : 0; reduloctab[4] = grafptr->vertlocnbr; /* Recompute local sizes */ reduloctab[5] = grafptr->edgelocnbr; reduloctab[6] = (Gnum) cheklocval; if (MPI_Allreduce (reduloctab, reduglbtab, 7, GNUM_MPI, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (6)"); return (1); } if (reduglbtab[6] != 0) return (1); if (((reduglbtab[0] != 0) && (reduglbtab[0] != procglbnbr)) || ((reduglbtab[1] != 0) && (reduglbtab[1] != procglbnbr)) || ((reduglbtab[2] != 0) && (reduglbtab[2] != procglbnbr)) || ((reduglbtab[3] != 0) && (reduglbtab[3] != procglbnbr)) || (reduglbtab[4] != grafptr->vertglbnbr) || (reduglbtab[5] != grafptr->edgeglbnbr)) { errorPrint ("dgraphCheck: inconsistent global graph data (2)"); cheklocval = 1; } for (vertlocnum = grafptr->baseval, edgelocnbr = 0; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { Gnum edgelocnum; if ((vendloctax[vertlocnum] < vertloctax[vertlocnum]) || (vendloctax[vertlocnum] > (grafptr->edgelocsiz + grafptr->baseval))) { errorPrint ("dgraphCheck: inconsistent local vertex arrays"); edgelocnbr = grafptr->edgelocnbr; /* Avoid unwanted cascaded error messages */ cheklocval = 1; break; } edgelocnbr += vendloctax[vertlocnum] - vertloctax[vertlocnum]; if ((grafptr->flagval & DGRAPHHASEDGEGST) != 0) { /* If ghost edge array is valid */ for (edgelocnum = vertloctax[vertlocnum]; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { if ((edgegsttax[edgelocnum] < grafptr->baseval) || (edgegsttax[edgelocnum] >= grafptr->vertgstnnd)) { errorPrint ("dgraphCheck: inconsistent ghost edge array"); edgelocnbr = grafptr->edgelocnbr; /* Avoid unwanted cascaded error messages */ vertlocnum = grafptr->vertlocnnd; /* Exit outer loop */ cheklocval = 1; break; } if ((edloloctax != NULL) && (edloloctax[edgelocnum] <= 0)) { errorPrint ("dgraphCheck: invalid edge load"); edgelocnbr = grafptr->edgelocnbr; /* Avoid unwanted cascaded error messages */ vertlocnum = grafptr->vertlocnnd; /* Exit outer loop */ cheklocval = 1; break; } } } } if (edgelocnbr != grafptr->edgelocnbr) { errorPrint ("dgraphCheck: invalid local number of edges"); cheklocval = 1; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (7)"); return (1); } if (chekglbval != 0) return (1); if (veloloctax != NULL) { /* Check vertex load consistency */ Gnum velolocsum; Gnum veloglbsum; for (vertlocnum = grafptr->baseval, velolocsum = 0; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { Gnum veloval; veloval = veloloctax[vertlocnum]; if ((veloval < 0) && (cheklocval == 0)) { errorPrint ("dgraphCheck: invalid vertex load"); cheklocval = 1; } velolocsum += veloval; } MPI_Allreduce (&velolocsum, &veloglbsum, 1, GNUM_MPI, MPI_SUM, proccomm); if (velolocsum != grafptr->velolocsum) { errorPrint ("dgraphCheck: invalid local vertex load sum"); cheklocval = 1; } if (veloglbsum != grafptr->veloglbsum) { errorPrint ("dgraphCheck: invalid global vertex load sum"); cheklocval = 1; } MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm); if (chekglbval != 0) return (1); } edlolocsiz = (edloloctax != NULL) ? grafptr->edgeglbsmx : 0; if (memAllocGroup ((void **) (void *) &vertngbtab[0], (size_t) (grafptr->vertglbmax * sizeof (Gnum)), /* Send vertex and vertex end arrays, even when they are compact */ &vertngbtab[1], (size_t) (grafptr->vertglbmax * sizeof (Gnum)), &vendngbtab[0], (size_t) (grafptr->vertglbmax * sizeof (Gnum)), &vendngbtab[1], (size_t) (grafptr->vertglbmax * sizeof (Gnum)), &edgengbtab[0], (size_t) (grafptr->edgeglbsmx * sizeof (Gnum)), &edgengbtab[1], (size_t) (grafptr->edgeglbsmx * sizeof (Gnum)), &edlongbtab[0], (size_t) (edlolocsiz * sizeof (Gnum)), &edlongbtab[1], (size_t) (edlolocsiz * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphCheck: out of memory (2)"); cheklocval = 1; } edgengbtab[0] -= grafptr->baseval; /* Base edges arrays only */ edgengbtab[1] -= grafptr->baseval; if (edloloctax == NULL) { /* If graph edges are not weighted */ edlongbtab[0] = /* Edge load arrays are fake */ edlongbtab[1] = NULL; } else { edlongbtab[0] -= grafptr->baseval; edlongbtab[1] -= grafptr->baseval; } if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCheck: communication error (8)"); return (1); } if (chekglbval != 0) { if (cheklocval == 0) memFree (vertngbtab[0]); /* Free group leader */ return (1); } procngbsel = 0; /* Initial work array selector */ vertngbptr = vertloctax + grafptr->baseval; /* Start working on self arrays */ vendngbptr = vendloctax + grafptr->baseval; /* Un-base vertex arrays */ edgengbptr = edgeloctax; /* Edge arrays are based */ edlongbptr = edloloctax; vertngbnbr[0] = grafptr->vertlocnbr; /* Set number of local vertices and edges to send */ edgengbnbr[0] = grafptr->edgelocsiz; /* Send all of edge array is case graph is not compact */ for (procnum = 0; procnum < procglbnbr; procnum ++) { /* For all processes including self */ Gnum procngbnum; Gnum vertlocnum; Gnum vertglbnum; procngbnum = (proclocnum + procnum) % procglbnbr; /* Compute neighbor process number */ vertngbmin = grafptr->procvrttab[procngbnum]; /* Get neighbor vertex number range */ vertngbmax = grafptr->procvrttab[procngbnum + 1]; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertngbnbr[procngbsel] != grafptr->proccnttab[procngbnum]) || (vertngbnbr[procngbsel] > (vertngbmax - vertngbmin))) { errorPrint ("dgraphCheck: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (procnum < (procglbnbr - 1)) { /* For all rounds except the last one */ MPI_Irecv (vertngbtab[1 - procngbsel], grafptr->vertglbmax, GNUM_MPI, procrcvnum, TAGVERTLOCTAB, proccomm, &requloctab[4]); MPI_Irecv (vendngbtab[1 - procngbsel], grafptr->vertglbmax, GNUM_MPI, procrcvnum, TAGVENDLOCTAB, proccomm, &requloctab[5]); MPI_Irecv (edgengbtab[1 - procngbsel] + grafptr->baseval, grafptr->edgeglbsmx, GNUM_MPI, procrcvnum, TAGEDGELOCTAB, proccomm, &requloctab[6]); MPI_Isend (vertngbptr, vertngbnbr[procngbsel], GNUM_MPI, procsndnum, TAGVERTLOCTAB, proccomm, &requloctab[1]); MPI_Isend (vendngbptr, vertngbnbr[procngbsel], GNUM_MPI, procsndnum, TAGVENDLOCTAB, proccomm, &requloctab[2]); MPI_Isend (edgengbptr + grafptr->baseval, edgengbnbr[procngbsel], GNUM_MPI, procsndnum, TAGEDGELOCTAB, proccomm, &requloctab[3]); if (edlongbptr != NULL) { MPI_Irecv (edlongbtab[1 - procngbsel] + grafptr->baseval, grafptr->edgeglbsmx, GNUM_MPI, procrcvnum, TAGEDLOLOCTAB, proccomm, &requloctab[7]); MPI_Isend (edlongbptr + grafptr->baseval, edgengbnbr[procngbsel], GNUM_MPI, procsndnum, TAGEDLOLOCTAB, proccomm, &requloctab[0]); /* Complete communications before accessing arrays being sent */ MPI_Waitall (8, &requloctab[0], &statloctab[0]); } else MPI_Waitall (6, &requloctab[1], &statloctab[1]); MPI_Get_count (&statloctab[4], GNUM_MPI, &vertngbnbr[1 - procngbsel]); MPI_Get_count (&statloctab[6], GNUM_MPI, &edgengbnbr[1 - procngbsel]); } for (vertlocnum = grafptr->baseval, vertglbnum = grafptr->procvrttab[proclocnum]; vertlocnum < grafptr->vertlocnnd; vertlocnum ++, vertglbnum ++) { Gnum edgelocnum; for (edgelocnum = vertloctax[vertlocnum]; edgelocnum < vendloctax[vertlocnum]; edgelocnum ++) { Gnum vertglbend; vertglbend = edgeloctax[edgelocnum]; if ((vertglbend >= vertngbmin) && /* If end vertex belongs to current neighbor process */ (vertglbend < vertngbmax)) { Gnum edgengbnum; Gnum edgengbnnd; Gnum edgengbsum; for (edgengbnum = vertngbptr[vertglbend - vertngbmin], edgengbnnd = vendngbptr[vertglbend - vertngbmin], edgengbsum = 0; edgengbnum < edgengbnnd; edgengbnum ++) { if (edgengbptr[edgengbnum] == vertglbnum) { /* If matching edge found */ edgengbsum ++; /* Account for it */ if ((edlongbptr != NULL) && /* If edge weights do not match */ (edlongbptr[edgengbnum] != edloloctax[edgelocnum])) cheklocval = 3; } } if (edgengbsum < 1) /* If matching edge not found */ cheklocval = 1; else if (edgengbsum > 1) /* If duplicate edge */ cheklocval = 2; } } } MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, proccomm); if (chekglbval != 0) { /* Error number ranges from 1 to 3 */ if (chekglbval == 1) errorPrint ("dgraphCheck: arc data do not match"); else if (chekglbval == 2) errorPrint ("dgraphCheck: duplicate arc"); else errorPrint ("dgraphCheck: arc load data do not match"); memFree (vertngbtab[0]); /* Free group leader */ return (1); } procngbsel ^= 1; /* Swap work and receive buffers */ vertngbptr = vertngbtab[procngbsel]; /* Point to future work buffers */ vendngbptr = vendngbtab[procngbsel]; /* Vertex pointers are unbased */ edgengbptr = edgengbtab[procngbsel]; /* Edge pointers are based */ edlongbptr = edlongbtab[procngbsel]; } memFree (vertngbtab[0]); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/parser_ll.h0000644000302600021200000000655113470115365020166 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_ll.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the declarations for **/ /** the strategy strings lexical parser. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 13 jun 1996 **/ /** # Version 3.2 : from : 03 oct 1996 **/ /** to 19 oct 1996 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 20 dec 2001 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ #ifdef PARSER_LL static int stratParserInput (void); #endif /* PARSER_LL */ void stratParserInit (const char * const); int stratParserLex (void); const char * stratParserRemain (void); void stratParserSelect (unsigned int); scotch_6.0.9/src/libscotch/wgraph_part_st.c0000644000302600021200000003133713470115365021222 0ustar pelegrinpelegrin/* Copyright 2007-2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_part_st.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Sebastien FOURESTIER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module contains the global **/ /** vertex overlapped graph partitioning **/ /** strategy and method tables. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2009 **/ /** to 26 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_PART_ST #include "module.h" #include "common.h" #include "gain.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "graph_coarsen.h" #include "vgraph.h" #include "vgraph_separate_st.h" #include "wgraph.h" #include "wgraph_part_fm.h" #include "wgraph_part_gg.h" #include "wgraph_part_gp.h" #include "wgraph_part_ml.h" #include "wgraph_part_rb.h" #include "wgraph_part_st.h" #include "wgraph_part_zr.h" /* ** The static and global variables. */ #if 0 /* Not used */ static Wgraph wgraphdummy; /* Dummy overlap graph for offset computations */ #endif static union { WgraphPartFmParam param; StratNodeMethodData padding; } wgraphpartdefaultfm = { { 10, 40, 0.1L } }; static union { WgraphPartGgParam param; StratNodeMethodData padding; } wgraphpartdefaultgg = { { 10 } }; static union { WgraphPartGpParam param; StratNodeMethodData padding; } wgraphpartdefaultgp = { { 5 } }; static union { WgraphPartMlParam param; StratNodeMethodData padding; } wgraphpartdefaultml = { { 20, 0.8L, &stratdummy, &stratdummy } }; static union { WgraphPartRbParam param; StratNodeMethodData padding; } wgraphpartdefaultrb = { { &stratdummy } }; static StratMethodTab wgraphpartstmethtab[] = { /* Graph overlap partitioning methods array */ { WGRAPHSEPASTMETHGG, "h", wgraphPartGg, &wgraphpartdefaultgg }, { WGRAPHSEPASTMETHGP, "g", wgraphPartGp, &wgraphpartdefaultgp }, { WGRAPHSEPASTMETHFM, "f", wgraphPartFm, &wgraphpartdefaultfm }, { WGRAPHSEPASTMETHML, "m", wgraphPartMl, &wgraphpartdefaultml }, { WGRAPHSEPASTMETHRB, "r", wgraphPartRb, &wgraphpartdefaultrb }, { WGRAPHSEPASTMETHZR, "z", wgraphPartZr, NULL }, { -1, NULL, NULL, NULL } }; static StratParamTab wgraphpartstparatab[] = { /* Method parameter list */ { WGRAPHSEPASTMETHFM, STRATPARAMINT, "pass", (byte *) &wgraphpartdefaultfm.param, (byte *) &wgraphpartdefaultfm.param.passnbr, NULL }, { WGRAPHSEPASTMETHFM, STRATPARAMINT, "move", (byte *) &wgraphpartdefaultfm.param, (byte *) &wgraphpartdefaultfm.param.movenbr, NULL }, { WGRAPHSEPASTMETHFM, STRATPARAMDOUBLE, "bal", (byte *) &wgraphpartdefaultfm.param, (byte *) &wgraphpartdefaultfm.param.deltrat, NULL }, { WGRAPHSEPASTMETHGG, STRATPARAMINT, "pass", (byte *) &wgraphpartdefaultgg.param, (byte *) &wgraphpartdefaultgg.param.passnbr, NULL }, { WGRAPHSEPASTMETHGP, STRATPARAMINT, "pass", (byte *) &wgraphpartdefaultgp.param, (byte *) &wgraphpartdefaultgp.param.passnbr, NULL }, { WGRAPHSEPASTMETHML, STRATPARAMSTRAT, "asc", (byte *) &wgraphpartdefaultml.param, (byte *) &wgraphpartdefaultml.param.stratasc, (void *) &wgraphpartststratab }, { WGRAPHSEPASTMETHML, STRATPARAMSTRAT, "low", (byte *) &wgraphpartdefaultml.param, (byte *) &wgraphpartdefaultml.param.stratlow, (void *) &wgraphpartststratab }, { WGRAPHSEPASTMETHML, STRATPARAMINT, "vert", (byte *) &wgraphpartdefaultml.param, (byte *) &wgraphpartdefaultml.param.coarnbr, NULL }, { WGRAPHSEPASTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &wgraphpartdefaultml.param, (byte *) &wgraphpartdefaultml.param.coarval, NULL }, { WGRAPHSEPASTMETHRB, STRATPARAMSTRAT, "sep", (byte *) &wgraphpartdefaultrb.param, (byte *) &wgraphpartdefaultrb.param.stratptr, (void *) &vgraphseparateststratab }, { WGRAPHSEPASTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab wgraphpartstcondtab[] = { /* Overlap graph condition parameter table*/ { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab wgraphpartststratab = { /* Strategy tables for overlap partitioning methods */ wgraphpartstmethtab, wgraphpartstparatab, wgraphpartstcondtab }; /*********************************************/ /* */ /* This is the generic partitioning routine. */ /* */ /*********************************************/ /* This routine computes the separation of ** the given graph according to the given ** strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int wgraphPartSt ( Wgraph * restrict const grafptr, /*+ Overlap partitioning graph +*/ const Strat * restrict const strat) /*+ Overlap partitioning strategy +*/ { StratTest val; /* Result of condition evaluation */ WgraphStore savetab[2]; /* Results of the two strategies */ int o; int o2; #ifdef SCOTCH_DEBUG_WGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("wgraphPartSt: invalid type specification for parser variables"); return (1); } if ((sizeof (WgraphPartFmParam) > sizeof (StratNodeMethodData)) || (sizeof (WgraphPartGgParam) > sizeof (StratNodeMethodData)) || (sizeof (WgraphPartGpParam) > sizeof (StratNodeMethodData)) || (sizeof (WgraphPartMlParam) > sizeof (StratNodeMethodData)) || (sizeof (WgraphPartRbParam) > sizeof (StratNodeMethodData))) { errorPrint ("wgraphPartSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_WGRAPH2 */ #ifdef SCOTCH_DEBUG_WGRAPH1 if ((strat->tabl != &wgraphpartststratab) && (strat != &stratdummy)) { errorPrint ("wgraphPartSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_WGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = wgraphPartSt (grafptr, strat->data.concat.strat[0]); /* Apply the first strategy */ if (o == 0) /* If it worked all right */ o |= wgraphPartSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_WGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("wgraphPartSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_WGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = wgraphPartSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = wgraphPartSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : if (((wgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((wgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("wgraphPartSt: out of memory"); wgraphStoreExit (&savetab[0]); return (1); } wgraphStoreSave (grafptr, &savetab[1]); /* Save initial partition */ o = wgraphPartSt (grafptr, strat->data.select.strat[0]); /* Apply first strategy */ wgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ wgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial partition */ o2 = wgraphPartSt (grafptr, strat->data.select.strat[1]); /* Apply second strategy */ if ((o == 0) || (o2 == 0)) { /* If at least one method make a k-partition */ if (savetab[0].fronload < grafptr->fronload) /* If first strategy is better */ wgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ } wgraphStoreExit (&savetab[0]); /* Free both save areas */ wgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_WGRAPH2 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_WGRAPH2 */ default : #endif /* SCOTCH_DEBUG_WGRAPH2 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_WGRAPH2 default : errorPrint ("wgraphPartSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_WGRAPH2 */ } return (o); } scotch_6.0.9/src/libscotch/dorder_tree_dist.c0000644000302600021200000003316413303015264021507 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dorder_tree_dist.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles distributed **/ /** orderings. **/ /** **/ /** DATES : # Version 5.1 : from : 28 nov 2007 **/ /** to 09 may 2008 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DORDER #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This function returns to all processes the ** number of distributed leaf column blocks ** possessed by the ordering. ** It returns: ** - >=0 : number of distributed column blocks. ** - <0 : on error. */ Gnum dorderCblkDist ( const Dorder * restrict const ordeptr) { const DorderLink * restrict linklocptr; Gnum dblklocnbr; /* Local number of locally-rooted distributed column blocks */ Gnum dblkglbnbr; for (linklocptr = ordeptr->linkdat.nextptr, dblklocnbr = 0; /* For all nodes in local ordering structure */ linklocptr != &ordeptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if (cblklocptr->cblknum.proclocnum == ordeptr->proclocnum) dblklocnbr ++; } if (MPI_Allreduce (&dblklocnbr, &dblkglbnbr, 1, GNUM_MPI, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderCblkDist: communication error"); return ((Gnum) -1); } return (dblkglbnbr); } /* This function returns on all of the procesors the ** distributed part of the distributed structure of ** the given distributed ordering. The two array ** pointers which must be passed should both point to ** arrays of size dorderCblkDist(). ** It returns: ** - 0 : if the distributed tree structure could be computed. ** - !0 : on error. */ int dorderTreeDist ( const Dorder * restrict const ordeptr, const Dgraph * restrict const grafptr, Gnum * restrict const treeglbtab, Gnum * restrict const sizeglbtab) { const DorderLink * restrict linklocptr; Gnum * restrict dataloctab; Gnum * restrict dataglbtab; Gnum dblklocnum; Gnum dblklocnbr; /* Local number of distributed column blocks */ Gnum dblkglbnbr; /* Global number of distributed column blocks */ Gnum dblkglbnum; Gnum dblkglbtmp; int * restrict dblkcnttab; int * restrict dblkdsptab; int * restrict cblkdsptab; Gnum cblkglbtmp; Gnum * restrict srt1glbtab; Gnum * restrict srt2glbtab; int procglbnbr; int procnum; Gnum reduloctab[3]; Gnum reduglbtab[3]; for (linklocptr = ordeptr->linkdat.nextptr, dblklocnbr = 0; /* For all nodes in local ordering structure */ linklocptr != &ordeptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if (cblklocptr->cblknum.proclocnum == ordeptr->proclocnum) { #ifdef SCOTCH_DEBUG_DORDER2 Gnum cblklocnum; cblklocnum = cblklocptr->cblknum.cblklocnum; if ((cblklocnum < 0) || (cblklocnum >= ordeptr->cblklocnbr)) { errorPrint ("dorderTreeDist: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ dblklocnbr ++; } } if (MPI_Allreduce (&dblklocnbr, &dblkglbnbr, 1, GNUM_MPI, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { /* Get overall number of distributed blocks */ errorPrint ("dorderTreeDist: communication error (1)"); return (1); } MPI_Comm_size (ordeptr->proccomm, &procglbnbr); reduloctab[0] = reduloctab[1] = reduloctab[2] = 0; if (memAllocGroup ((void **) (void *) &dblkcnttab, (size_t) ( procglbnbr * sizeof (int)), &dblkdsptab, (size_t) ( procglbnbr * sizeof (int)), /* TRICK: cblkdsptab used as secondary array after cblkcnttab */ &cblkdsptab, (size_t) ((procglbnbr + 1) * sizeof (int)), /* TRICK: have an array at least of size 2 */ &dataloctab, (size_t) ( dblklocnbr * 4 * sizeof (Gnum)), &dataglbtab, (size_t) ( dblkglbnbr * 4 * sizeof (Gnum)), &srt1glbtab, (size_t) ( dblkglbnbr * 2 * sizeof (Gnum)), /* TRICK: one more slot for root node */ &srt2glbtab, (size_t) ( dblkglbnbr * 2 * sizeof (Gnum)), NULL) == NULL) { /* TRICK: one more slot for root node */ errorPrint ("dorderTreeDist: out of memory"); reduloctab[0] = 1; /* Memory error */ } else { if (treeglbtab != NULL) reduloctab[1] = 1; /* Compute the "or" of any array being non-null */ if (sizeglbtab != NULL) { reduloctab[2] = reduloctab[1]; /* Compute the "and" of any array being non-null */ reduloctab[1] = 1; } } #ifdef SCOTCH_DEBUG_DORDER1 /* Communication cannot be merged with a useful one */ if (MPI_Allreduce (reduloctab, reduglbtab, 3, GNUM_MPI, MPI_SUM, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderTreeDist: communication error (1)"); reduglbtab[0] = /* Post-process error below */ reduglbtab[1] = /* Prevent Valgrind from yelling */ reduglbtab[2] = 1; } #else /* SCOTCH_DEBUG_DORDER1 */ reduglbtab[0] = reduloctab[0]; reduglbtab[1] = procglbnbr - 1 + reduloctab[1]; reduglbtab[2] = procglbnbr - 1 + reduloctab[2]; #endif /* SCOTCH_DEBUG_DORDER1 */ if (reduglbtab[1] != reduglbtab[2]) { /* If not both arrays provided on each of the candidate processors */ if (reduloctab[1] != reduloctab[2]) errorPrint ("dorderTreeDist: invalid parameters (1)"); reduglbtab[0] = 1; } if (reduglbtab[2] != procglbnbr) { errorPrint ("dorderTreeDist: invalid parameters (2)"); reduglbtab[0] = 1; } if (reduglbtab[0] != 0) { if (dblkcnttab != NULL) memFree (dblkcnttab); /* Free group leader */ return (1); } cblkdsptab[0] = (int) dblklocnbr; /* MPI only supports int as count type */ cblkdsptab[1] = (int) ordeptr->cblklocnbr; /* TRICK: cblkdsptab is at least of size 2 */ if (MPI_Allgather (cblkdsptab, 2, MPI_INT, dblkcnttab, 2, MPI_INT, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderTreeDist: communication error (2)"); return (1); } for (procnum = cblkglbtmp = 0; procnum < procglbnbr; procnum ++) { /* Accumulate un-based global start indices for all column blocks */ cblkdsptab[procnum] = cblkglbtmp; dblkcnttab[procnum] = dblkcnttab[2 * procnum] * 4; /* Four times for dataloctab */ cblkglbtmp += dblkcnttab[2 * procnum + 1]; } for (procnum = dblkglbtmp = 0; procnum < procglbnbr; procnum ++) { /* Accumulate un-based global start indices for distributed column blocks */ dblkdsptab[procnum] = dblkglbtmp; dblkglbtmp += dblkcnttab[procnum]; } for (linklocptr = ordeptr->linkdat.nextptr, dblklocnum = 0; /* For all nodes in local ordering structure */ linklocptr != &ordeptr->linkdat; linklocptr = linklocptr->nextptr) { const DorderCblk * restrict cblklocptr; cblklocptr = (DorderCblk *) linklocptr; /* TRICK: FIRST */ if (cblklocptr->cblknum.proclocnum == ordeptr->proclocnum) { /* If node is local */ dataloctab[4 * dblklocnum] = cblkdsptab[ordeptr->proclocnum] + cblklocptr->cblknum.cblklocnum; dataloctab[4 * dblklocnum + 1] = cblklocptr->ordeglbval; dataloctab[4 * dblklocnum + 2] = cblkdsptab[cblklocptr->fathnum.proclocnum] + cblklocptr->fathnum.cblklocnum; dataloctab[4 * dblklocnum + 3] = cblklocptr->vnodglbnbr; dblklocnum ++; } } if (MPI_Allgatherv (dataloctab, 4 * dblklocnbr, GNUM_MPI, dataglbtab, dblkcnttab, dblkdsptab, GNUM_MPI, ordeptr->proccomm) != MPI_SUCCESS) { errorPrint ("dorderTreeDist: communication error (3)"); return (1); } for (dblkglbnum = 0; dblkglbnum < dblkglbnbr; dblkglbnum ++) { srt1glbtab[2 * dblkglbnum] = dataglbtab[4 * dblkglbnum + 1]; srt1glbtab[2 * dblkglbnum + 1] = dataglbtab[4 * dblkglbnum]; } intSort2asc2 (srt1glbtab, dblkglbnbr); /* Sort nodes by ascending inverse start index to get permutation of column block indices */ for (dblkglbnum = 0; dblkglbnum < dblkglbnbr; dblkglbnum ++) { srt1glbtab[2 * dblkglbnum] = srt1glbtab[2 * dblkglbnum + 1]; srt1glbtab[2 * dblkglbnum + 1] = dblkglbnum; } intSort2asc2 (srt1glbtab, dblkglbnbr); /* Sort nodes by ascending column block index to match with the ones of dataglbtab */ for (dblkglbnum = 0; dblkglbnum < dblkglbnbr; dblkglbnum ++) { srt2glbtab[2 * dblkglbnum] = dataglbtab[4 * dblkglbnum + 2]; srt2glbtab[2 * dblkglbnum + 1] = dblkglbnum; } intSort2asc2 (srt2glbtab, dblkglbnbr); /* Sort father indices by ascending column block indices */ #ifdef SCOTCH_DEBUG_DORDER2 if (srt2glbtab[0] != -1) { /* If tree has no root */ errorPrint ("dorderTreeDist: internal error (2)"); memFree (dblkcnttab); /* Free group leader */ return (1); } if ((dblkglbnbr > 1) && (srt2glbtab[2] == -1)) { /* If tree has multiple roots */ errorPrint ("dorderTreeDist: internal error (3)"); memFree (dblkcnttab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ for (dblkglbnum = 1, dblkglbtmp = 0; dblkglbnum < dblkglbnbr; ) { /* Replace in block data the father column block indices by the new permuted indices */ if (srt2glbtab[2 * dblkglbnum] == srt1glbtab[2 * dblkglbtmp]) dataglbtab[4 * srt2glbtab[2 * (dblkglbnum ++) + 1] + 2] = srt1glbtab[2 * dblkglbtmp + 1]; else { #ifdef SCOTCH_DEBUG_DORDER2 if ((srt2glbtab[2 * dblkglbnum] < srt1glbtab[2 * dblkglbtmp]) || /* If column block index not found in table */ (dblkglbtmp >= (dblkglbnbr - 1))) { errorPrint ("dorderTreeDist: internal error (4)"); memFree (dblkcnttab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ dblkglbtmp ++; } } for (dblkglbnum = 0; dblkglbnum < dblkglbnbr; dblkglbnum ++) { srt2glbtab[2 * dblkglbnum] = dataglbtab[4 * dblkglbnum]; srt2glbtab[2 * dblkglbnum + 1] = dblkglbnum; } intSort2asc2 (srt2glbtab, dblkglbnbr); /* Sort father indices by ascending column block indices */ for (dblkglbnum = 0; dblkglbnum < dblkglbnbr; dblkglbnum ++) { #ifdef SCOTCH_DEBUG_DORDER2 if (srt1glbtab[2 * dblkglbnum] != srt2glbtab[2 * dblkglbnum]) { errorPrint ("dorderTreeDist: internal error (5)"); memFree (dblkcnttab); /* Free group leader */ return (1); } #endif /* SCOTCH_DEBUG_DORDER2 */ treeglbtab[srt1glbtab[2 * dblkglbnum + 1]] = dataglbtab[4 * srt2glbtab[2 * dblkglbnum + 1] + 2]; sizeglbtab[srt1glbtab[2 * dblkglbnum + 1]] = dataglbtab[4 * srt2glbtab[2 * dblkglbnum + 1] + 3]; } memFree (dblkcnttab); /* Free group leader */ return (0); } scotch_6.0.9/src/libscotch/kgraph_map_st.h0000644000302600021200000001022213470115365021010 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_st.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the strategy and method **/ /** tables and the generic entry point for **/ /** the graph multipartitioning methods. **/ /** **/ /** DATES : # Version 3.2 : from : 15 oct 1996 **/ /** to 29 sep 1997 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 09 dec 1998 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 12 jan 2004 **/ /** # Version 5.1 : from : 13 jul 2010 **/ /** to 13 jul 2010 **/ /** # Version 6.0 : from : 08 jun 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type definitions. */ /*+ Method types. +*/ typedef enum KgraphMapStMethodType_ { KGRAPHMAPSTMETHBD = 0, /*+ Band (strategy) +*/ KGRAPHMAPSTMETHCP, /*+ Old mapping copy +*/ KGRAPHMAPSTMETHDF, /*+ Diffusion +*/ KGRAPHMAPSTMETHEX, /*+ Exactifier +*/ KGRAPHMAPSTMETHFM, /*+ Fiduccia-Mattheyses +*/ KGRAPHMAPSTMETHML, /*+ Multi-level (strategy) +*/ KGRAPHMAPSTMETHRB, /*+ Dual Recursive Bipartitioning +*/ KGRAPHMAPSTMETHNBR /*+ Number of methods +*/ } KgraphMapStMethodType; /* ** The external declarations. */ extern StratTab kgraphmapststratab; /* ** The function prototypes. */ int kgraphMapSt (Kgraph * restrict const, const Strat * restrict const); scotch_6.0.9/src/libscotch/kgraph_map_rb_map.c0000644000302600021200000013401213560013237021614 0ustar pelegrinpelegrin/* Copyright 2004,2007-2009,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_rb_map.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module performs the Dual Recursive **/ /** Bipartitioning mapping algorithm. **/ /** **/ /** DATES : # Version 0.0 : from : 31 mar 1993 **/ /** to 31 mar 1993 **/ /** # Version 1.0 : from : 04 oct 1993 **/ /** to 06 oct 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 11 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 17 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 19 oct 1995 **/ /** # Version 3.1 : from : 30 oct 1995 **/ /** to 14 jun 1996 **/ /** # Version 3.2 : from : 23 aug 1996 **/ /** to 07 sep 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 08 dec 1998 **/ /** # Version 3.4 : from : 01 jun 2001 **/ /** to 07 nov 2001 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 06 mar 2005 **/ /** # Version 5.1 : from : 22 nov 2007 **/ /** to 04 feb 2009 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 21 jun 2019 **/ /** **/ /** NOTES : # This code is a complete rewrite of **/ /** the original code of kgraphMapRb(), **/ /** hence the kept history. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_RB_MAP #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "arch.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "kgraph.h" #include "kgraph_map_rb.h" #include "kgraph_map_rb_map.h" /* ** The static variables. */ static KgraphMapRbMapPoolLink kgraphmaprbmappooldummy; /* Dummy links for pool routines; TRICK */ /************************************/ /* */ /* These routines handle job pools. */ /* */ /************************************/ /* This routine initializes the job pool ** structures. ** It returns: ** - 0 : in case of success. ** - !0 : on error. */ static int kgraphMapRbMapPoolInit ( KgraphMapRbMapPoolData * restrict const poolptr, const KgraphMapRbData * restrict const dataptr) { int flagval; Mapping * restrict const mappptr = dataptr->mappptr; flagval = 0; if (archVar (mappptr->archptr) != 0) flagval |= KGRAPHMAPRBMAPARCHVAR; if (archPart (mappptr->archptr) != 0) { flagval |= KGRAPHMAPRBMAPARCHCMPLT; poolptr->polival = KGRAPHMAPRBPOLILEVEL; /* A simple policy will do */ poolptr->grafptr = NULL; /* We don't need top level graph data */ } else { poolptr->polival = dataptr->paraptr->polival; /* Enforce original policy */ poolptr->grafptr = dataptr->grafptr; /* We will need top-level graph data */ } poolptr->pfixtax = dataptr->pfixtax; poolptr->linktab[0].prev = /* Initialize doubly linked list as empty, pointing to the dummy element */ poolptr->linktab[0].next = poolptr->linktab[1].prev = poolptr->linktab[1].next = &kgraphmaprbmappooldummy; poolptr->pooltab[0] = &poolptr->linktab[0]; poolptr->pooltab[1] = (dataptr->paraptr->flagjobtie != 0) ? &poolptr->linktab[0] : &poolptr->linktab[1]; if ((poolptr->jobtab = (KgraphMapRbMapJob *) memAlloc (mappptr->domnmax * sizeof (KgraphMapRbMapJob))) == NULL) { errorPrint ("kgraphMapRbMapPoolInit: out of memory (2)"); return (1); } poolptr->jobtab[0].poolflag = 0; /* In case kgraphMapRbPoolExit() is called just afterwards on single-domain mapping */ poolptr->mappptr = mappptr; poolptr->domntab[0] = mappptr->domntab; /* Use original domain array */ if (dataptr->paraptr->flagmaptie != 0) { /* If mappings are tied, use same domain array */ poolptr->domntab[1] = mappptr->domntab; flagval |= KGRAPHMAPRBMAPPARTHALF; /* Updates will only involve half of the vertices */ } else { if ((poolptr->domntab[1] = (ArchDom *) memAlloc (mappptr->domnmax * sizeof (ArchDom))) == NULL) { errorPrint ("kgraphMapRbMapPoolInit: out of memory (3)"); memFree (poolptr->jobtab); return (1); } } poolptr->flagval = flagval; return (0); } /* This routine frees all of the internal arrays ** involved in the DRB algorithms. Great care ** should be taken that this routine always ** succeeds, whatever part of the algorithm it ** is called from. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolExit ( KgraphMapRbMapPoolData * restrict const poolptr) { Anum domnnbr; Anum jobnum; Mapping * restrict const mappptr = poolptr->mappptr; domnnbr = mappptr->domnnbr; for (jobnum = 0; jobnum < domnnbr; jobnum ++) { /* For all potential jobs in both pools */ if (poolptr->jobtab[jobnum].poolflag != 0) { /* If job slot is active */ graphExit (&poolptr->jobtab[jobnum].grafdat); /* Free job graph, if not clone of original graph */ } } if (mappptr->domntab != poolptr->domntab[1]) { /* If current mapping domain array is not original domain array */ if ((mappptr->flagval & MAPPINGFREEDOMN) != 0) /* If mapping domain array was privately owned, free it */ memFree (mappptr->domntab); mappptr->flagval |= MAPPINGFREEDOMN; /* Keep current domain array as private mapping domain array */ mappptr->domntab = poolptr->domntab[1]; } memFree (poolptr->jobtab); } /* This routine swaps the internal arrays ** involved in the DRB algorithms. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolSwap ( KgraphMapRbMapPoolData * restrict const poolptr) { KgraphMapRbMapPoolLink * linktmp; ArchDom * domntmp; linktmp = poolptr->pooltab[0]; poolptr->pooltab[0] = poolptr->pooltab[1]; poolptr->pooltab[1] = linktmp; domntmp = poolptr->domntab[0]; poolptr->domntab[0] = poolptr->domntab[1]; poolptr->domntab[1] = domntmp; } /* This routine doubles the size all of the arrays ** involved in handling the target architecture, ** to make room for new domains of variable-sized ** architectures. ** It returns: ** - 0 : if resize succeeded. ** - !0 : if out of memory. */ static int kgraphMapRbMapPoolResize ( KgraphMapRbMapPoolData * restrict const poolptr) { KgraphMapRbMapJob * restrict jobtab; /* Pointer to (new) job array */ Anum domnnbr; /* Current (max) number of domains */ Anum domnmax; /* New maximum number of domains */ int i; domnnbr = poolptr->mappptr->domnmax; /* Current max size */ domnmax = domnnbr + (domnnbr >> 2) + 8; /* Increase size by 25% */ if ((jobtab = (KgraphMapRbMapJob *) memRealloc (poolptr->jobtab, domnmax * sizeof (KgraphMapRbMapJob))) == NULL) { errorPrint ("kgraphMapRbMapPoolResize: out of memory (1)"); return (1); } if (jobtab != poolptr->jobtab) { /* If job array moved */ KgraphMapRbMapJob * joboldtab; /* Pointer to start of old job array */ KgraphMapRbMapJob * joboldtnd; /* Pointer to end of old job array */ Anum jobnum; /* Temporary job index */ intptr_t jobdlt; /* Address delta value */ joboldtab = poolptr->jobtab; joboldtnd = joboldtab + domnnbr; jobdlt = (byte *) jobtab - (byte *) joboldtab; /* Compute delta between new and old addresses */ for (jobnum = 0; jobnum < domnnbr; jobnum ++) { if ((jobtab[jobnum].poollink.prev >= (KgraphMapRbMapPoolLink *) joboldtab) && /* If old pointers within bounds of old array, adjust them */ (jobtab[jobnum].poollink.prev < (KgraphMapRbMapPoolLink *) joboldtnd)) jobtab[jobnum].poollink.prev = (KgraphMapRbMapPoolLink *) ((byte *) jobtab[jobnum].poollink.prev + jobdlt); if ((jobtab[jobnum].poollink.next >= (KgraphMapRbMapPoolLink *) joboldtab) && (jobtab[jobnum].poollink.next < (KgraphMapRbMapPoolLink *) joboldtnd)) jobtab[jobnum].poollink.next = (KgraphMapRbMapPoolLink *) ((byte *) jobtab[jobnum].poollink.next + jobdlt); } if (poolptr->linktab[0].next != &kgraphmaprbmappooldummy) /* Update first pool pointer */ poolptr->linktab[0].next = (KgraphMapRbMapPoolLink *) ((byte *) poolptr->linktab[0].next + jobdlt); if (poolptr->pooltab[0] != poolptr->pooltab[1]) { /* If job pools not tied */ if (poolptr->linktab[1].next != &kgraphmaprbmappooldummy) /* Update second pool pointer */ poolptr->linktab[1].next = (KgraphMapRbMapPoolLink *) ((byte *) poolptr->linktab[1].next + jobdlt); } poolptr->jobtab = jobtab; /* Set new memory location of job array */ } i = (poolptr->domntab[1] == poolptr->mappptr->domntab) ? 1 : 0; /* Find which domain array is that of the mapping */ if (mapResize (poolptr->mappptr, domnmax) != 0) { errorPrint ("kgraphMapRbMapPoolResize: out of memory (2)"); return (1); } if (poolptr->domntab[1] != poolptr->domntab[0]) { /* If two domain arrays present */ ArchDom * domntab; if ((domntab = (ArchDom *) memRealloc (poolptr->domntab[i ^ 1], domnmax * sizeof (ArchDom))) == NULL) { /* Reallocate other domain array */ errorPrint ("kgraphMapRbMapPoolResize: out of memory (3)"); return (1); } poolptr->domntab[i ^ 1] = domntab; /* Set (possibly new) memory location of other domain array */ } else poolptr->domntab[i ^ 1] = poolptr->mappptr->domntab; /* Both domain arrays point to the same (new) location */ poolptr->domntab[i] = poolptr->mappptr->domntab; /* Set (possibly new) memory location of mapping domain array */ return (0); } /**********************************************/ /* */ /* These routines handle bipartitioning jobs. */ /* */ /**********************************************/ /* This routine adds a job to pool 1 of the ** given pool data structure. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolAdd ( KgraphMapRbMapPoolLink * restrict const linkptr, KgraphMapRbMapJob * const jobptr) { jobptr->poollink.prev = linkptr; /* Link job in pool: TRICK */ jobptr->poollink.next = linkptr->next; jobptr->poolflag = 1; /* Job is in pool */ jobptr->poolptr = linkptr; /* Point to the pool */ linkptr->next->prev = &jobptr->poollink; linkptr->next = &jobptr->poollink; } /* This routine gets the best job available from ** the given pool, according to the given policy. ** It returns: ** - !NULL : pointer to the job. ** - NULL : if the pool is empty. */ static KgraphMapRbMapJob * kgraphMapRbMapPoolGet ( KgraphMapRbMapPoolData * const poolptr) { KgraphMapRbMapJob * jobbest; /* Best job found */ KgraphMapRbMapJob * jobptr; jobbest = (KgraphMapRbMapJob *) poolptr->pooltab[0]->next; /* Get first job in pool */ for (jobptr = jobbest; /* For all jobs in pool */ jobptr != (KgraphMapRbMapJob *) (void *) &kgraphmaprbmappooldummy; jobptr = (KgraphMapRbMapJob *) jobptr->poollink.next) { if (jobptr->priolvl > jobbest->priolvl) /* If the current job has stronger priority */ jobbest = jobptr; /* Select it as the best job */ } if (jobbest != (KgraphMapRbMapJob *) (void *) &kgraphmaprbmappooldummy) { /* If job found */ jobbest->poollink.next->prev = jobbest->poollink.prev; /* Remove it from pool */ jobbest->poollink.prev->next = jobbest->poollink.next; /* But do not mark it unused */ } else /* Dummy job means no job found */ jobbest = NULL; return (jobbest); } /* This routine adds a job to the given pool ** as the first bipartitioning job. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolFrst ( KgraphMapRbMapPoolData * const poolptr, KgraphMapRbMapJob * const jobptr) /* Job to be added */ { switch (poolptr->polival) { /* Set job priority value */ case KGRAPHMAPRBPOLIRANDOM : jobptr->prioval = jobptr->priolvl = intRandVal (INTVALMAX); break; case KGRAPHMAPRBPOLILEVEL : case KGRAPHMAPRBPOLINGLEVEL : jobptr->prioval = jobptr->grafdat.vertnbr; jobptr->priolvl = 0; break; case KGRAPHMAPRBPOLISIZE : case KGRAPHMAPRBPOLINGSIZE : jobptr->prioval = jobptr->priolvl = jobptr->grafdat.vertnbr; break; #ifdef SCOTCH_DEBUG_KGRAPH2 default : errorPrint ("kgraphMapRbMapPoolFrst: unknown job selection policy"); jobptr->prioval = 0; jobptr->priolvl = 0; return; #endif /* SCOTCH_DEBUG_KGRAPH2 */ } kgraphMapRbMapPoolAdd (poolptr->pooltab[0], jobptr); /* Add job to pool */ } /* This routine updates the given job ** table with both of the given subjob ** data. ** This routine can be called only if ** the parent jobs of the vertices to ** be updated still exist. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolUpdt1 ( KgraphMapRbMapPoolData * const poolptr, const KgraphMapRbMapJob * const joboldptr, /* Job to be removed */ const GraphPart * const parttax, KgraphMapRbMapJob * const jobnewptr, /* Its only active subjob */ const GraphPart partval) { Gnum prioval; Gnum priolvl; priolvl = 0; /* Prepare for neighbor updating methods */ switch (poolptr->polival) { /* Set job priority value */ case KGRAPHMAPRBPOLIRANDOM : prioval = priolvl = intRandVal (INTVALMAX); break; case KGRAPHMAPRBPOLILEVEL : priolvl = joboldptr->priolvl + 1; case KGRAPHMAPRBPOLINGLEVEL : prioval = joboldptr->prioval - 1; break; case KGRAPHMAPRBPOLISIZE : priolvl = jobnewptr->grafdat.vertnbr; case KGRAPHMAPRBPOLINGSIZE : prioval = jobnewptr->grafdat.vertnbr; break; #ifdef SCOTCH_DEBUG_KGRAPH2 default : errorPrint ("kgraphMapRbMapPoolUpdt1: unknown job selection policy"); jobnewptr->prioval = 0; jobnewptr->priolvl = 0; return; #endif /* SCOTCH_DEBUG_KGRAPH2 */ } jobnewptr->prioval = prioval; if (poolptr->polival >= KGRAPHMAPRBPOLINEIGHBOR) { /* If neighbors have to be updated */ Gnum prioold; KgraphMapRbMapJob * restrict const jobtab = poolptr->jobtab; const Anum * restrict const mapparttax = poolptr->mappptr->parttax; /* Based pointer to mapping part array */ const Anum * restrict const toppfixtax = poolptr->pfixtax; const Gnum * restrict const topverttax = poolptr->grafptr->verttax; /* Point to top-level graph arrays */ const Gnum * restrict const topvendtax = poolptr->grafptr->vendtax; const Gnum * restrict const topedgetax = poolptr->grafptr->edgetax; prioold = joboldptr->prioval; if (joboldptr->grafdat.vertnbr < poolptr->grafptr->vertnbr) { /* If subgraph is not top graph, change priority of neighboring jobs of old job */ Gnum jobvertnnd; Gnum jobvertnum; const Gnum * restrict const jobverttax = joboldptr->grafdat.verttax; const Gnum * restrict const jobvendtax = joboldptr->grafdat.vendtax; const Gnum * restrict const jobvnumtax = joboldptr->grafdat.vnumtax; jobnewptr->poolflag = 0; /* TRICK: avoid new job being considered for update */ for (jobvertnum = joboldptr->grafdat.baseval, jobvertnnd = joboldptr->grafdat.vertnnd; jobvertnum < jobvertnnd; jobvertnum ++) { Gnum topvertnum; Gnum topedgenum; if (parttax[jobvertnum] == partval) /* If vertex belongs to part which is still alive */ continue; /* Do not consider update part as removed */ topvertnum = jobvnumtax[jobvertnum]; /* If graph is smaller than top graph, then vnumtax must exist */ if ((topvendtax[topvertnum] - topverttax[topvertnum]) == /* If vertex is internal, skip it */ (jobvendtax[jobvertnum] - jobverttax[jobvertnum])) continue; for (topedgenum = topverttax[topvertnum]; topedgenum < topvendtax[topvertnum]; topedgenum ++) { KgraphMapRbMapJob * restrict jobnghbptr; /* (Old ?) job of neighbor vertex */ Gnum topvertend; topvertend = topedgetax[topedgenum]; if ((toppfixtax != NULL) && (toppfixtax[topvertend] >= 0)) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[topvertend] != ~0) { errorPrint ("kgraphMapRbMapPoolUpdt1: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; } jobnghbptr = &jobtab[mapparttax[topvertend]]; /* Get pointer to neighboring job */ if ((jobnghbptr->poolflag != 0) && /* If neighbor is active */ (jobnghbptr->prioval <= prioold)) /* And had not already a stronger priority */ jobnghbptr->priolvl ++; /* Update neighbor priority */ } } jobnewptr->poolflag = 1; /* TRICK: new job is active again */ } if (jobnewptr->grafdat.vertnbr < poolptr->grafptr->vertnbr) { /* If subgraph is not top graph, update priority of neighbors of new job only */ Gnum jobvertnnd; Gnum jobvertnum; const Gnum * restrict const jobverttax = jobnewptr->grafdat.verttax; const Gnum * restrict const jobvendtax = jobnewptr->grafdat.vendtax; const Gnum * restrict const jobvnumtax = jobnewptr->grafdat.vnumtax; for (jobvertnum = jobnewptr->grafdat.baseval, jobvertnnd = jobnewptr->grafdat.vertnnd; jobvertnum < jobvertnnd; jobvertnum ++) { Gnum topvertnum; Gnum topedgenum; topvertnum = jobvnumtax[jobvertnum]; /* For subjobs jobvnumtax always exists */ if ((topvendtax[topvertnum] - topverttax[topvertnum]) == /* If vertex is internal, skip it */ (jobvendtax[jobvertnum] - jobverttax[jobvertnum])) continue; for (topedgenum = topverttax[topvertnum]; topedgenum < topvendtax[topvertnum]; topedgenum ++) { KgraphMapRbMapJob * restrict jobnghbptr; /* (Old ?) job of neighbor vertex */ Gnum topvertend; topvertend = topedgetax[topedgenum]; if ((toppfixtax != NULL) && (toppfixtax[topvertend] >= 0)) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[topvertend] != ~0) { errorPrint ("kgraphMapRbMapPoolUpdt1: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; } jobnghbptr = &jobtab[mapparttax[topvertend]]; /* Get pointer to neighboring job */ if (jobnghbptr == jobnewptr) /* If it is the current job, do not consider the edge */ continue; if ((jobnghbptr->poolflag == 0) || /* If neighbor is not active */ (prioval > jobnghbptr->prioval)) /* Or if we have higher priority */ priolvl ++; /* Increase our priority */ else if ((prioval < jobnghbptr->prioval) && /* Else if neighbor has higher one */ (prioold >= jobnghbptr->prioval)) /* Which it did not already have */ jobnghbptr->priolvl ++; /* Update neighbor priority */ } } } } jobnewptr->priolvl = priolvl; kgraphMapRbMapPoolAdd (poolptr->pooltab[1], jobnewptr); /* Add job to pool */ } static void kgraphMapRbMapPoolUpdt2 ( KgraphMapRbMapPoolData * const poolptr, const KgraphMapRbMapJob * const joboldptr, /* Job to be removed */ const GraphPart * const parttax, KgraphMapRbMapJob * const jobnewptr0, /* Its two subjobs */ KgraphMapRbMapJob * const jobnewptr1) { KgraphMapRbMapJob * restrict jobnewtab[2]; int i; jobnewtab[0] = jobnewptr0; jobnewtab[1] = jobnewptr1; for (i = 1; i >= 0; i --) { KgraphMapRbMapJob * jobnewptr; Gnum prioval; Gnum priolvl; jobnewptr = jobnewtab[i]; /* Get concerned subjob */ priolvl = 0; /* Prepare for neighbor updating methods */ switch (poolptr->polival) { /* Set job priority value */ case KGRAPHMAPRBPOLIRANDOM : prioval = priolvl = intRandVal (INTVALMAX); break; case KGRAPHMAPRBPOLILEVEL : priolvl = joboldptr->priolvl + 1; case KGRAPHMAPRBPOLINGLEVEL : prioval = joboldptr->prioval - 1; break; case KGRAPHMAPRBPOLISIZE : priolvl = jobnewptr->grafdat.vertnbr; case KGRAPHMAPRBPOLINGSIZE : prioval = jobnewptr->grafdat.vertnbr; break; #ifdef SCOTCH_DEBUG_KGRAPH2 default : errorPrint ("kgraphMapRbMapPoolUpdt2: unknown job selection policy"); jobnewptr->prioval = 0; jobnewptr->priolvl = 0; return; #endif /* SCOTCH_DEBUG_KGRAPH2 */ } jobnewptr0->prioval = prioval + 1; /* TRICK: when processing subdomain 1, subdomain 0 has higher priority value */ jobnewptr->prioval = prioval; /* Then in its turn subdomain 0 will have its proper priority value */ if (poolptr->polival >= KGRAPHMAPRBPOLINEIGHBOR) { /* If neighbors have to be updated */ Gnum jobvertnnd; Gnum jobvertnum; Gnum prioold; KgraphMapRbMapJob * restrict const jobtab = poolptr->jobtab; const Anum * restrict const mapparttax = poolptr->mappptr->parttax; /* Based pointer to mapping part array */ const Anum * restrict const toppfixtax = poolptr->pfixtax; const Gnum * restrict const topverttax = poolptr->grafptr->verttax; /* Point to top-level graph arrays */ const Gnum * restrict const topvendtax = poolptr->grafptr->vendtax; const Gnum * restrict const topedgetax = poolptr->grafptr->edgetax; const Gnum * restrict const jobverttax = jobnewptr->grafdat.verttax; const Gnum * restrict const jobvendtax = jobnewptr->grafdat.vendtax; const Gnum * restrict const jobvnumtax = jobnewptr->grafdat.vnumtax; prioold = joboldptr->prioval; for (jobvertnum = jobnewptr->grafdat.baseval, jobvertnnd = jobnewptr->grafdat.vertnnd; jobvertnum < jobvertnnd; jobvertnum ++) { Gnum topvertnum; Gnum topedgenum; topvertnum = jobvnumtax[jobvertnum]; /* For subjobs jobvnumtax always exists */ if ((topvendtax[topvertnum] - topverttax[topvertnum]) == /* If vertex is internal, skip it */ (jobvendtax[jobvertnum] - jobverttax[jobvertnum])) continue; for (topedgenum = topverttax[topvertnum]; topedgenum < topvendtax[topvertnum]; topedgenum ++) { KgraphMapRbMapJob * jobnghbptr; /* (Old ?) job of neighbor vertex */ Gnum topvertend; topvertend = topedgetax[topedgenum]; if ((toppfixtax != NULL) && (toppfixtax[topvertend] >= 0)) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[topvertend] != ~0) { errorPrint ("kgraphMapRbMapPoolUpdt2: internal error"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; } jobnghbptr = &jobtab[mapparttax[topvertend]]; /* Get pointer to neighboring job */ if ((jobnghbptr->poolflag != 0) && /* If neighbor is in active job */ (jobnghbptr->prioval > prioval) && /* Which gained priority over us */ (jobnghbptr->prioval <= prioold)) { jobnghbptr->priolvl ++; /* Update neighbor priority */ } if ((jobnghbptr->poolflag == 0) || /* If neighbor is fully known */ (jobnghbptr->prioval < prioval)) /* Or has smaller priority value */ priolvl ++; /* Then we should be processed */ } } } jobnewptr->priolvl = priolvl; /* Set new priority */ kgraphMapRbMapPoolAdd (poolptr->pooltab[1], jobnewptr); /* Add job to pool */ } } /* ** This routine removes the influence of the ** given job from its neighbor jobs. ** It returns: ** - VOID : in all cases. */ static void kgraphMapRbMapPoolRemv ( KgraphMapRbMapPoolData * const poolptr, const KgraphMapRbMapJob * const joboldptr) /* Job to be removed */ { if (poolptr->polival >= KGRAPHMAPRBPOLINEIGHBOR) { /* If neighbors have to be modified */ Gnum jobvertnnd; Gnum jobvertnum; Gnum prioold; KgraphMapRbMapJob * restrict const jobtab = poolptr->jobtab; const Anum * restrict const mapparttax = poolptr->mappptr->parttax; /* Based pointer to mapping part array */ const Anum * restrict const toppfixtax = poolptr->pfixtax; const Gnum * restrict const topverttax = poolptr->grafptr->verttax; /* Point to top-level graph arrays */ const Gnum * restrict const topvendtax = poolptr->grafptr->vendtax; const Gnum * restrict const topedgetax = poolptr->grafptr->edgetax; const Gnum * restrict const jobverttax = joboldptr->grafdat.verttax; const Gnum * restrict const jobvendtax = joboldptr->grafdat.vendtax; const Gnum * restrict const jobvnumtax = joboldptr->grafdat.vnumtax; prioold = joboldptr->prioval; for (jobvertnum = joboldptr->grafdat.baseval, jobvertnnd = joboldptr->grafdat.vertnnd; jobvertnum < jobvertnnd; jobvertnum ++) { Gnum topvertnum; /* Source graph vertex number */ Gnum topedgenum; /* Source graph edge number */ topvertnum = (jobvnumtax == NULL) ? jobvertnum : jobvnumtax[jobvertnum]; if ((topvendtax[topvertnum] - topverttax[topvertnum]) == /* If vertex is internal, skip it */ (jobvendtax[jobvertnum] - jobverttax[jobvertnum])) continue; for (topedgenum = topverttax[topvertnum]; topedgenum < topvendtax[topvertnum]; topedgenum ++) { KgraphMapRbMapJob * jobnghbptr; /* (Old ?) job of neighbor vertex */ Gnum topvertend; topvertend = topedgetax[topedgenum]; if ((toppfixtax != NULL) && (toppfixtax[topvertend] >= 0)) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[topvertend] != ~0) { errorPrint ("kgraphMapRbMapPoolRemv: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ continue; } jobnghbptr = &jobtab[mapparttax[topvertend]]; /* Get pointer to neighboring job */ if ((jobnghbptr->poolflag != 0) && /* If neighbor job is active */ (jobnghbptr->prioval <= prioold)) /* And had not already a stronger priority */ jobnghbptr->priolvl ++; /* Increase its priority since we are now inactive */ } } } } /**********************************************/ /* */ /* These routines handle the pool part array. */ /* */ /**********************************************/ static void kgraphMapRbMapPartBoth ( KgraphMapRbMapPoolData * restrict const poolptr, const Bgraph * restrict const actgrafptr, const Anum * restrict const jobsubnum) { Gnum actvertnum; const GraphPart * restrict actparttax; Anum * restrict mapparttax; Anum mappartval1; Anum mappartdlt; actparttax = actgrafptr->parttax; mapparttax = poolptr->mappptr->parttax; mappartval1 = jobsubnum[1]; mappartdlt = jobsubnum[0] - jobsubnum[1]; if (actgrafptr->s.vnumtax != NULL) { const Gnum * restrict actvnumtax; actvnumtax = actgrafptr->s.vnumtax; for (actvertnum = actgrafptr->s.baseval; actvertnum < actgrafptr->s.vertnnd; actvertnum ++) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[actvnumtax[actvertnum]] == ~0) { errorPrint ("kgraphMapRbMapPartBoth: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[actvnumtax[actvertnum]] = mappartval1 + ((((Anum) actparttax[actvertnum]) - 1) & mappartdlt); } } else { for (actvertnum = actgrafptr->s.baseval; actvertnum < actgrafptr->s.vertnnd; actvertnum ++) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[actvertnum] == ~0) { errorPrint ("kgraphMapRbMapPartBoth: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[actvertnum] = mappartval1 + ((((Anum) actparttax[actvertnum]) - 1) & mappartdlt); } } } static void kgraphMapRbMapPartOne ( KgraphMapRbMapPoolData * restrict const poolptr, const Bgraph * restrict const actgrafptr, const Anum jobsubnum1) { Gnum actvertnum; const GraphPart * restrict actparttax; Anum * restrict mapparttax; actparttax = actgrafptr->parttax; mapparttax = poolptr->mappptr->parttax; if (actgrafptr->s.vnumtax != NULL) { const Gnum * restrict actvnumtax; actvnumtax = actgrafptr->s.vnumtax; for (actvertnum = actgrafptr->s.baseval; actvertnum < actgrafptr->s.vertnnd; actvertnum ++) { if (actparttax[actvertnum] == 1) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[actvnumtax[actvertnum]] == ~0) { errorPrint ("kgraphMapRbMapPartOne: internal error (1)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[actvnumtax[actvertnum]] = jobsubnum1; } } } else { for (actvertnum = actgrafptr->s.baseval; actvertnum < actgrafptr->s.vertnnd; actvertnum ++) { if (actparttax[actvertnum] == 1) { #ifdef SCOTCH_DEBUG_KGRAPH2 if (mapparttax[actvertnum] == ~0) { errorPrint ("kgraphMapRbMapPartOne: internal error (2)"); return; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ mapparttax[actvertnum] = jobsubnum1; } } } } /********************************************/ /* */ /* This is the entry point for the Dual */ /* Recursive Bipartitioning mapping method. */ /* */ /********************************************/ /* This routine runs the Dual Recursive ** Bipartitioning algorithm. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapRbMap ( const KgraphMapRbData * restrict const dataptr, /*+ Global mapping data +*/ const Graph * restrict const grafptr, /*+ Graph to map, without fixed vertices +*/ const Anum vflonbr, /*+ Number of fixed vertex load slots +*/ KgraphMapRbVflo * restrict const vflotab) /*+ Array of fixed vertex load slots +*/ { KgraphMapRbMapPoolData pooldat; /* Data for handling jobs and job pools */ ArchDom domnsubtab[2]; /* Subdomains of current job domain */ KgraphMapRbMapJob joborgdat; /* Aera to save original job data */ Anum jobsubnum[2]; /* Number of subjob slots in job array */ Gnum jobsubsiz[2]; /* Sizes of subjobs */ Bgraph actgrafdat; /* Bipartition graph */ double comploadmin; /* Minimum vertex load per target load */ double comploadmax; /* Maximum vertex load per target load */ int i; Mapping * restrict const mappptr = dataptr->mappptr; mapFrst (mappptr); /* Initialize mapping */ #ifdef SCOTCH_DEBUG_KGRAPH2 if (dataptr->pfixtax != NULL) { /* In debug mode, fixed vertex parts are set to ~0 */ Gnum vertnnd; Gnum vertnum; Anum * restrict const parttax = mappptr->parttax; const Anum * restrict const pfixtax = dataptr->pfixtax; for (vertnum = dataptr->grafptr->baseval, vertnnd = dataptr->grafptr->vertnnd; vertnum < vertnnd; vertnum ++) { if (pfixtax[vertnum] >= 0) parttax[vertnum] = ~0; } } mappptr->domnmax = 1; /* Force resizing of job arrays, for debugging */ #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (kgraphMapRbMapPoolInit (&pooldat, dataptr) != 0) /* Initialize pool data; done first for kgraphMapRbMapPoolExit() to succeed afterwards */ return (1); if ((((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) == 0) && (archDomSize (mappptr->archptr, &mappptr->domnorg) <= 1)) || /* If single-vertex domain */ (((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) != 0) && (grafptr->vertnbr <= 1))) { /* Or if variable-sized architecture with single vertex graph */ kgraphMapRbMapPoolExit (&pooldat); return (0); /* Job already done */ } pooldat.jobtab[0].domnorg = mappptr->domnorg; /* Build first job */ pooldat.jobtab[0].grafdat = *grafptr; /* Clone induced graph as first job graph */ pooldat.jobtab[0].grafdat.flagval &= ~GRAPHFREETABS; /* Do not free its arrays on exit */ pooldat.jobtab[0].vflonbr = vflonbr; /* Record initial list of fixed load slots */ pooldat.jobtab[0].vflotab = vflotab; kgraphMapRbMapPoolFrst (&pooldat, &pooldat.jobtab[0]); /* Add initial job */ comploadmin = (1.0 - dataptr->paraptr->kbalval) * dataptr->comploadrat; /* Ratio can have been tilted when working on subgraph */ comploadmax = (1.0 + dataptr->paraptr->kbalval) * dataptr->comploadrat; while (! kgraphMapRbMapPoolEmpty (&pooldat)) { /* For all non-empty pools */ KgraphMapRbMapJob * joborgptr; /* Pointer to current job */ while ((joborgptr = kgraphMapRbMapPoolGet (&pooldat)) != NULL) { /* For all jobs in pool */ Gnum vflonbrtab[2]; Gnum vflowgttab[2]; int partval; jobsubnum[0] = joborgptr - pooldat.jobtab; /* Get current (and first son) job slot number before possible move of pointers */ joborgdat = *joborgptr; /* Save current job data (clone graph) */ if (archDomBipart (mappptr->archptr, &joborgdat.domnorg, &domnsubtab[0], &domnsubtab[1]) != 0) { errorPrint ("kgraphMapRbMap: cannot bipartition domain"); kgraphMapRbMapPoolExit (&pooldat); /* Copied graph will be freed as not yet removed */ return (1); } kgraphMapRbVfloSplit (mappptr->archptr, domnsubtab, /* Split fixed vertex load slots, if any */ joborgdat.vflonbr, joborgdat.vflotab, vflonbrtab, vflowgttab); if (kgraphMapRbBgraph (dataptr, &actgrafdat, &joborgdat.grafdat, pooldat.mappptr, domnsubtab, vflowgttab) != 0) { /* Create bipartition graph */ errorPrint ("kgraphMapRbMap: cannot create bipartition graph"); kgraphMapRbMapPoolExit (&pooldat); /* Copied graph will be freed as not yet removed */ return (1); } actgrafdat.s.flagval |= (joborgdat.grafdat.flagval & GRAPHFREETABS); /* Bipartition graph is responsible for freeing the cloned graph data fields */ joborgptr->poolflag = 0; /* Original slot is now considered unused so that cloned graph data will not be freed twice */ if ((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) == 0) { /* If not variable-sized, impose constraints on bipartition */ double comploadavg; comploadavg = (double) actgrafdat.s.velosum / (double) archDomWght (mappptr->archptr, &joborgdat.domnorg); actgrafdat.compload0min = actgrafdat.compload0avg - (Gnum) MIN ((comploadmax - comploadavg) * (double) actgrafdat.domnwght[0], (comploadavg - comploadmin) * (double) actgrafdat.domnwght[1]); actgrafdat.compload0max = actgrafdat.compload0avg + (Gnum) MIN ((comploadavg - comploadmin) * (double) actgrafdat.domnwght[0], (comploadmax - comploadavg) * (double) actgrafdat.domnwght[1]); } if (bgraphBipartSt (&actgrafdat, dataptr->paraptr->strat) != 0) { /* Perform bipartitioning */ errorPrint ("kgraphMapRbMap: cannot bipartition job"); bgraphExit (&actgrafdat); kgraphMapRbMapPoolExit (&pooldat); return (1); } if ((partval = 1, actgrafdat.compsize0 == 0) || /* If no bipartition found */ (partval = 0, actgrafdat.compsize0 == actgrafdat.s.vertnbr)) { if ((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) != 0) { /* If architecture is variable-sized */ pooldat.domntab[0][jobsubnum[0]] = joborgdat.domnorg; /* Propagate domain in next pool */ kgraphMapRbMapPoolRemv (&pooldat, &joborgdat); /* Remove job from pool as long as graph exists */ bgraphExit (&actgrafdat); /* Free bipartitioning data as well as current graph */ continue; /* Process next job in current pool */ } if (archDomSize (mappptr->archptr, &domnsubtab[partval]) <= 1) { /* If domain is terminal */ pooldat.domntab[0][jobsubnum[0]] = domnsubtab[partval]; /* Refine domain in next pool */ kgraphMapRbMapPoolRemv (&pooldat, &joborgdat); /* Remove job from pool as long as graph exists */ bgraphExit (&actgrafdat); /* Free bipartitioning data as well as current graph */ continue; /* Process next job in current pool */ } else { /* Re-use job slot and graph for further bipartitioning */ pooldat.domntab[0][jobsubnum[0]] = /* Update domain in next pool */ joborgptr->domnorg = domnsubtab[partval]; /* New job takes same graph and non-empty subdomain */ joborgptr->vflonbr = vflonbrtab[partval]; joborgptr->vflotab = joborgdat.vflotab + (partval * vflonbrtab[0]); /* Point to proper sub-array */ kgraphMapRbMapPoolUpdt1 (&pooldat, &joborgdat, actgrafdat.parttax, joborgptr, partval); /* Add job to pool */ actgrafdat.s.flagval &= ~GRAPHFREETABS; /* Since graph will be re-used, never free its internal arrays */ bgraphExit (&actgrafdat); /* Free bipartitioning data */ continue; /* Process next job in current pool */ } } if ((pooldat.mappptr->domnnbr == pooldat.mappptr->domnmax) && /* If all job slots busy and if cannot resize */ (kgraphMapRbMapPoolResize (&pooldat) != 0)) { errorPrint ("kgraphMapRbMap: cannot resize structures"); kgraphMapRbMapPoolExit (&pooldat); return (1); } jobsubnum[1] = pooldat.mappptr->domnnbr ++; /* Get slot number of new subdomain */ jobsubsiz[1] = actgrafdat.s.vertnbr - actgrafdat.compsize0; jobsubsiz[0] = actgrafdat.compsize0; pooldat.jobtab[jobsubnum[1]].poolflag = 0; /* Assume that new job is inactive in case of premature freeing */ pooldat.domntab[1][jobsubnum[1]] = joborgdat.domnorg; /* Copy original domain to new subdomain as old mapping shares parttax with new */ pooldat.domntab[0][jobsubnum[0]] = domnsubtab[0]; /* Set subdomains of second mapping before relinking subjobs in pool */ pooldat.domntab[0][jobsubnum[1]] = domnsubtab[1]; if ((pooldat.flagval & KGRAPHMAPRBMAPPARTHALF) != 0) /* If can only update second half */ kgraphMapRbMapPartOne (&pooldat, &actgrafdat, jobsubnum[1]); else kgraphMapRbMapPartBoth (&pooldat, &actgrafdat, jobsubnum); for (i = 1; i >= 0; i --) { /* For both subdomains */ KgraphMapRbMapJob * jobsubptr; jobsubptr = &pooldat.jobtab[jobsubnum[i]]; /* Point to subdomain job slot */ jobsubptr->poollink.prev = /* Prevent Valgrind from yelling in kgraphMapRbMapPoolResize() */ jobsubptr->poollink.next = NULL; jobsubptr->prioval = /* Prevent Valgrind from yelling in kgraphMapRbMapPoolRemv()/Updt1()/Updt2() */ jobsubptr->priolvl = 0; if ((((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) == 0) && (archDomSize (mappptr->archptr, &domnsubtab[i]) <= 1)) || /* If single-vertex domain */ (((pooldat.flagval & KGRAPHMAPRBMAPARCHVAR) != 0) && (jobsubsiz[i] <= 1))) { /* Or if variable-sized architecture with single vertex graph */ jobsubsiz[i] = 0; /* Cancel subjob */ continue; } partval = i; /* At least this subjob works */ if (graphInducePart (&actgrafdat.s, actgrafdat.parttax, jobsubsiz[i], (GraphPart) i, &jobsubptr->grafdat) != 0) { errorPrint ("kgraphMapRbMap: cannot create induced subgraph"); bgraphExit (&actgrafdat); kgraphMapRbMapPoolExit (&pooldat); return (1); } jobsubptr->poolflag = 1; /* So that graph is freed in case of error on other part */ jobsubptr->domnorg = domnsubtab[i]; jobsubptr->vflonbr = vflonbrtab[i]; jobsubptr->vflotab = joborgdat.vflotab + (i * vflonbrtab[0]); /* Point to proper sub-array */ } if ((jobsubsiz[0] | jobsubsiz[1]) == 0) /* If both subjobs do not need further processing */ kgraphMapRbMapPoolRemv (&pooldat, &joborgdat); else if (jobsubsiz[1 - partval] == 0) /* If one of the subjobs only needs further processing */ kgraphMapRbMapPoolUpdt1 (&pooldat, &joborgdat, actgrafdat.parttax, &pooldat.jobtab[jobsubnum[partval]], (GraphPart) partval); else kgraphMapRbMapPoolUpdt2 (&pooldat, &joborgdat, actgrafdat.parttax, &pooldat.jobtab[jobsubnum[0]], &pooldat.jobtab[jobsubnum[1]]); bgraphExit (&actgrafdat); /* Free bipartition graph data */ } kgraphMapRbMapPoolSwap (&pooldat); /* Swap current and next levels */ } kgraphMapRbMapPoolExit (&pooldat); /* Free internal structures and propagate back new partition */ return (0); } scotch_6.0.9/src/libscotch/order.c0000644000302600021200000002404413303015264017276 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles generic orderings. **/ /** **/ /** DATES : # Version 3.2 : from : 19 oct 1996 **/ /** to 27 aug 1998 **/ /** # Version 4.0 : from : 19 dec 2001 **/ /** to 26 dec 2004 **/ /** # Version 5.0 : from : 25 jul 2007 **/ /** to 25 jul 2007 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ORDER #include "module.h" #include "common.h" #include "graph.h" #include "order.h" /************************************/ /* */ /* These routines handle orderings. */ /* */ /************************************/ /* This routine initializes an ordering ** with respect to a given source graph. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int orderInit ( Order * restrict const ordeptr, const Gnum baseval, const Gnum vnodnbr, Gnum * restrict const peritab) { ordeptr->flagval = ORDERNONE; ordeptr->baseval = baseval; ordeptr->vnodnbr = vnodnbr; ordeptr->treenbr = /* Initialize a simple blocking */ ordeptr->cblknbr = 1; ordeptr->cblktre.typeval = ORDERCBLKOTHR; ordeptr->cblktre.vnodnbr = vnodnbr; ordeptr->cblktre.cblknbr = 0; ordeptr->cblktre.cblktab = NULL; ordeptr->peritab = peritab; if (ordeptr->peritab == NULL) { /* Inverse permutation must be allocated */ ordeptr->flagval |= ORDERFREEPERI; /* Flag it so it will be freed */ if ((ordeptr->peritab = (Gnum *) memAlloc (vnodnbr * sizeof (Gnum))) == NULL) { errorPrint ("orderInit: out of memory"); return (1); } } #ifdef SCOTCH_DEBUG_ORDER2 memSet (ordeptr->peritab, ~0, vnodnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_ORDER2 */ return (0); } /* This routine frees the contents ** of the given ordering. ** It returns: ** - 0 : on success. ** - !0 : on error. */ void orderExit ( Order * restrict const ordeptr) { if (ordeptr->cblktre.cblktab != NULL) /* Free column block tree */ orderExit2 (ordeptr->cblktre.cblktab, ordeptr->cblktre.cblknbr); if ((ordeptr->peritab != NULL) && ((ordeptr->flagval & ORDERFREEPERI) != 0)) /* If peritab is group leader */ memFree (ordeptr->peritab); /* Free group leader */ #ifdef SCOTCH_DEBUG_ORDER2 memSet (ordeptr, ~0, sizeof (Order)); #endif /* SCOTCH_DEBUG_ORDER2 */ } static void orderExit2 ( OrderCblk * restrict const cblktab, const Gnum cblknbr) { Gnum cblknum; for (cblknum = 0; cblknum < cblknbr; cblknum ++) { if (cblktab[cblknum].cblktab != NULL) orderExit2 (cblktab[cblknum].cblktab, cblktab[cblknum].cblknbr); } memFree (cblktab); } /* This routine computes the inverse permutation ** of the given permutation, according to the ** direct and inverse base values. ** It returns: ** - VOID : in all cases. */ void orderPeri ( const Gnum * restrict const permtab, /* Permutation to invert */ const Gnum permbas, /* Permutation base value */ const Gnum permnbr, /* Number of permutation indices */ Gnum * restrict const peritab, /* Array of inverse permutation */ const Gnum peribas) /* Base value of inverse permutation */ { Gnum permnum; for (permnum = 0; permnum < permnbr; permnum ++) peritab[permtab[permnum] - permbas] = permnum + peribas; } /* This routine computes the column block ** range array of the given ordering. ** It returns: ** - VOID : in all cases. */ void orderRang ( const Order * restrict const ordeptr, /* Ordering */ Gnum * restrict const rangtab) /* Column block range array [+1] */ { Gnum * rangptr; Gnum ordenum; rangptr = rangtab; /* Set beginning of range array */ ordenum = ordeptr->baseval; /* Set initial number */ orderRang2 (&rangptr, &ordenum, &ordeptr->cblktre); *rangptr = ordenum; /* Set end of range array */ } static void orderRang2 ( Gnum ** restrict const rangppt, Gnum * restrict const ordeppt, const OrderCblk * restrict const cblkptr) { Gnum cblknum; #ifdef SCOTCH_DEBUG_ORDER2 Gnum * restrict rangtmp; if (cblkptr->vnodnbr < 1) errorPrint ("orderRang2: internal error (1)"); #endif /* SCOTCH_DEBUG_ORDER2 */ if (cblkptr->cblktab == NULL) { /* If leaf of column block tree */ *(*rangppt) ++ = *ordeppt; /* Set beginning of column block */ *ordeppt += cblkptr->vnodnbr; /* Advance by column block size */ } else { #ifdef SCOTCH_DEBUG_ORDER2 rangtmp = *rangppt; #endif /* SCOTCH_DEBUG_ORDER2 */ for (cblknum = 0; cblknum < cblkptr->cblknbr; cblknum ++) orderRang2 (rangppt, ordeppt, &cblkptr->cblktab[cblknum]); #ifdef SCOTCH_DEBUG_ORDER2 if ((*ordeppt - *rangtmp) != cblkptr->vnodnbr) errorPrint ("orderRang2: internal error (2)"); #endif /* SCOTCH_DEBUG_ORDER2 */ } } /* This routine computes the separator tree ** array of the given ordering. ** It returns: ** - VOID : in all cases. */ void orderTree ( const Order * restrict const ordeptr, /* Ordering */ Gnum * restrict const treetab) /* Column block separator tree array */ { Gnum cblanum; cblanum = ordeptr->cblknbr + ordeptr->baseval - 1; /* Set number of last column block */ orderTree2 (treetab - ordeptr->baseval, &cblanum, &ordeptr->cblktre, -1); #ifdef SCOTCH_DEBUG_ORDER2 if (cblanum != ordeptr->baseval - 1) errorPrint ("orderTree: internal error"); #endif /* SCOTCH_DEBUG_ORDER2 */ } static void orderTree2 ( Gnum * restrict const treetax, /* Based access to tree table */ Gnum * restrict const cblaptr, /* Pointer to current number of last column block, in descending order */ const OrderCblk * restrict const cblkptr, /* Current column block tree node */ Gnum cbfanum) /* Current number of ancestor separator column block */ { #ifdef SCOTCH_DEBUG_ORDER2 if (cblkptr->vnodnbr < 1) errorPrint ("orderTree2: internal error (1)"); #endif /* SCOTCH_DEBUG_ORDER2 */ if (cblkptr->cblktab == NULL) /* If leaf of column block tree */ treetax[(*cblaptr) --] = cbfanum; /* Set its ancestor */ else { /* Node has sub-nodes */ Gnum cblknum; cblknum = cblkptr->cblknbr - 1; /* Assume all column blocks will be scanned */ if ((cblkptr->cblknbr == 3) && /* If node is a nested dissection node */ (cblkptr->typeval == ORDERCBLKNEDI)) { /* With a non-empty separator */ Gnum cblanum; cblanum = *cblaptr; /* Save number of last column block of separator */ orderTree2 (treetax, cblaptr, &cblkptr->cblktab[cblknum], cbfanum); /* Scan separator apart */ cbfanum = cblanum; /* Separator becomes most recent ancestor of parts */ cblknum = 1; /* Only scan the two parts, not the separator */ } for ( ; cblknum >= 0; cblknum --) { orderTree2 (treetax, cblaptr, &cblkptr->cblktab[cblknum], cbfanum); #ifdef SCOTCH_DEBUG_ORDER2 if (*cblaptr < -1) errorPrint ("orderTree2: internal error (2)"); #endif /* SCOTCH_DEBUG_ORDER2 */ } } } scotch_6.0.9/src/libscotch/hgraph_order_cc.c0000644000302600021200000002051113465315041021274 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hgraph_order_cc.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module orders a subgraph by **/ /** ordering separately its connected **/ /** components. **/ /** **/ /** DATES : # Version 6.0 : from : 04 apr 2018 **/ /** to : 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HGRAPH_ORDER_CC #include "module.h" #include "common.h" #include "parser.h" #include "graph.h" #include "order.h" #include "hgraph.h" #include "hgraph_order_cc.h" #include "hgraph_order_st.h" /*****************************/ /* */ /* This is the main routine. */ /* */ /*****************************/ /* This routine performs the ordering. ** It returns: ** - 0 : if the ordering could be computed. ** - !0 : on error. */ int hgraphOrderCc ( const Hgraph * restrict const grafptr, Order * restrict const ordeptr, const Gnum ordenum, /*+ Zero-based ordering number +*/ OrderCblk * restrict const cblkptr, /*+ Single column-block +*/ const HgraphOrderCcParam * restrict const paraptr) { Hgraph indgrafdat; Gnum indordenum; Gnum * restrict flagtax; /* Flag array */ Gnum * restrict roottab; /* Array of root indices in queutab */ Gnum rootnbr; /* Number of connected components */ Gnum rootnum; Gnum vrotnum; /* Number of found root vertex */ Gnum * restrict queutab; /* Vertex queue and sub-lists */ Gnum qhedidx; Gnum qtalidx; const Gnum * restrict const verttax = grafptr->s.verttax; const Gnum * restrict const vnhdtax = grafptr->vnhdtax; const Gnum * restrict const edgetax = grafptr->s.edgetax; if (memAllocGroup ((void **) (void *) &queutab, (size_t) ( grafptr->vnohnbr * sizeof (Gnum)), &roottab, (size_t) ((grafptr->vnohnbr + 1) * sizeof (Gnum)), /* TRICK: +1 to store end index */ &flagtax, (size_t) ( grafptr->vnohnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("hgraphOrderCc: out of memory"); return (1); } memSet (flagtax, ~0, grafptr->vnohnbr * sizeof (Gnum)); /* Initialize flag array */ flagtax -= grafptr->s.baseval; rootnbr = 0; qhedidx = qtalidx = 0; vrotnum = grafptr->s.baseval; while (qtalidx < grafptr->vnohnbr) { while (flagtax[vrotnum] >= 0) /* Search for an unflagged vertex */ vrotnum ++; roottab[rootnbr] = qtalidx; /* Record start vertex of component */ flagtax[vrotnum] = rootnbr; /* Flag vertex as enqueued */ queutab[qtalidx ++] = vrotnum; /* Enqueue found root vertex */ while (qhedidx < qtalidx) { Gnum vertnum; Gnum edgenum; vertnum = queutab[qhedidx ++]; /* Get vertex from queue */ #ifdef SCOTCH_DEBUG_ORDER2 if ((vertnum < grafptr->s.baseval) || (vertnum >= grafptr->vnohnnd)) { errorPrint ("hgraphOrderCc: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_ORDER2 */ for (edgenum = verttax[vertnum]; edgenum < vnhdtax[vertnum]; edgenum ++) { Gnum vertend; vertend = edgetax[edgenum]; if (flagtax[vertend] < 0) { /* If end vertex has never been enqueued */ flagtax[vertend] = rootnbr; /* Flag end vertex */ queutab[qtalidx ++] = vertend; /* Enqueue it */ } #ifdef SCOTCH_DEBUG_ORDER2 else { if (flagtax[vertend] != rootnbr) { errorPrint ("hgraphOrderCc: internal error (2)"); return (1); } } #endif /* SCOTCH_DEBUG_ORDER2 */ } } rootnbr ++; /* One more connected component */ } roottab[rootnbr] = qtalidx; /* Record end index */ if (rootnbr == 1) { /* If only one connected component */ memFree (queutab); /* Free group leader */ return (hgraphOrderSt (grafptr, ordeptr, ordenum, cblkptr, paraptr->straptr)); /* Perform strategy on whole graph */ } if ((cblkptr->cblktab = (OrderCblk *) memAlloc (rootnbr * sizeof (OrderCblk))) == NULL) { errorPrint ("hgraphOrderCc: out of memory"); memFree (queutab); return (1); } ordeptr->treenbr += rootnbr; /* These more number of tree nodes */ ordeptr->cblknbr += rootnbr - 1; /* These more number of column blocks */ cblkptr->cblknbr = rootnbr; cblkptr->typeval = ORDERCBLKDICO; /* Disconnected components node */ for (rootnum = 0; rootnum < rootnbr; rootnum ++) { /* Initialize tree node array */ cblkptr->cblktab[rootnum].typeval = ORDERCBLKOTHR; cblkptr->cblktab[rootnum].vnodnbr = roottab[rootnum + 1] - roottab[rootnum]; cblkptr->cblktab[rootnum].cblknbr = 0; cblkptr->cblktab[rootnum].cblktab = NULL; } for (rootnum = 0, indordenum = 0; rootnum < rootnbr; rootnum ++) { Gnum indvnohnbr; int o; indvnohnbr = roottab[rootnum + 1] - roottab[rootnum]; if (hgraphInduceList (grafptr, indvnohnbr, &queutab[roottab[rootnum]], grafptr->s.vertnbr - grafptr->vnohnbr, &indgrafdat) != 0) { errorPrint ("hgraphOrderCc: cannot create induced graph"); memFree (queutab); return (1); } o = hgraphOrderSt (&indgrafdat, ordeptr, indordenum, &cblkptr->cblktab[rootnum], paraptr->straptr); /* Perform strategy on induced subgraph */ hgraphExit (&indgrafdat); if (o != 0) { errorPrint ("hgraphOrderCc: cannot compute ordering on induced graph"); memFree (queutab); return (1); } indordenum += indvnohnbr; } memFree (queutab); return (0); } scotch_6.0.9/src/libscotch/common_error.c0000644000302600021200000001073513560005430020665 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : common_error.c **/ /** **/ /** AUTHORS : David GOUDIN **/ /** Pascal HENON **/ /** Francois PELLEGRINI **/ /** Pierre RAMET **/ /** **/ /** FUNCTION : Part of a parallel direct block solver. **/ /** This module handles errors. **/ /** **/ /** DATES : # Version 0.0 : from : 08 may 1998 **/ /** to 02 oct 1998 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define COMMON_ERROR #include "common.h" /********************************/ /* */ /* The error handling routines. */ /* */ /********************************/ static char errorProgName[32] = ""; /* This routine sets the program name for ** error reporting. ** It returns: ** - VOID : in all cases. */ void errorProg ( const char * const progstr) /*+ Program name +*/ { strncpy (errorProgName, progstr, 29); errorProgName[29] = '\0'; strcat (errorProgName, ": "); } /* This routine prints an error message with ** a variable number of arguments, as printf () ** does, and exits. ** It returns: ** - EXIT : in all cases. */ void errorPrint ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* Argument list of the call */ fprintf (stderr, "%sERROR: ", errorProgName); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ } /* This routine prints a warning message with ** a variable number of arguments, as printf () ** does. ** It returns: ** - VOID : in all cases. */ void errorPrintW ( const char * const errstr, /*+ printf-like variable argument list */ ...) { va_list errlist; /* Argument list of the call */ fprintf (stderr, "%sWARNING: ", errorProgName); va_start (errlist, errstr); vfprintf (stderr, errstr, errlist); /* Print arguments */ va_end (errlist); fprintf (stderr, "\n"); fflush (stderr); /* In case it has been set to buffered mode */ } scotch_6.0.9/src/libscotch/dgraph_coarsen.c0000644000302600021200000014124513560005435021151 0ustar pelegrinpelegrin/* Copyright 2007-2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : This file implements the coarsening **/ /** phase of the multi-level method. **/ /** The implementation uses several **/ /** processes, which could have several **/ /** threads each (3 at this time). **/ /** **/ /** DATES : # Version 5.0 : from : 27 jul 2005 **/ /** to : 15 may 2008 **/ /** # Version 5.1 : from : 23 jun 2008 **/ /** to : 20 feb 2011 **/ /** # Version 6.0 : from : 11 sep 2012 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ #define DGRAPH_COARSEN #include "module.h" #include "common.h" #include "dgraph.h" #include "dgraph_allreduce.h" #include "dgraph_coarsen.h" #include "dgraph_match.h" /******************************/ /* */ /* Graph coarsening routines. */ /* */ /******************************/ static int dgraphCoarsenInit ( DgraphCoarsenData * restrict const coarptr, /*+ Coarsening data structure +*/ Dgraph * restrict const finegrafptr, /*+ Graph to coarsen +*/ Dgraph * restrict const coargrafptr) /*+ Coarse graph to build +*/ { int procglbnbr; int procglbnum; int procngbnbr; int procngbnum; int procngbnxt; int vertrcvnbr; int vertsndnbr; Gnum vertlocnbr; Gnum vertgstnbr; int vdsprcvnum; int vdspsndnum; byte * bufftab; size_t buffsiz; const int * restrict const fineprocngbtab = finegrafptr->procngbtab; const int * restrict const fineprocrcvtab = finegrafptr->procrcvtab; const int * restrict const fineprocsndtab = finegrafptr->procsndtab; vertlocnbr = finegrafptr->vertlocnbr; vertgstnbr = finegrafptr->vertgstnbr; procglbnbr = finegrafptr->procglbnbr; procngbnbr = finegrafptr->procngbnbr; vertrcvnbr = vertgstnbr - vertlocnbr; vertsndnbr = finegrafptr->procsndnbr; coarptr->coarprvptr = NULL; /* Assume nothing to free on error */ coarptr->multloctmp = NULL; coarptr->nsndidxtab = NULL; coarptr->nrcvidxtab = NULL; if ((coarptr->coarprvptr = memAllocGroup ((void **) (void *) /* Allocate distributed coarse graph private data */ &coargrafptr->procdsptab, (size_t) ((procglbnbr + 1) * sizeof (Gnum)), &coargrafptr->proccnttab, (size_t) (procglbnbr * sizeof (Gnum)), &coargrafptr->procngbtab, (size_t) (procglbnbr * sizeof (int)), &coargrafptr->procrcvtab, (size_t) (procglbnbr * sizeof (int)), &coargrafptr->procsndtab, (size_t) (procglbnbr * sizeof (int)), NULL)) == NULL) { errorPrint ("dgraphCoarsenInit: out of memory (1)"); return (1); } coargrafptr->procvrttab = coargrafptr->procdsptab; /* Coarse graph has no holes */ if (coarptr->multloctab == NULL) { /* If no multinode array provided */ if ((coarptr->multloctab = memAlloc (vertlocnbr * sizeof (DgraphCoarsenMulti))) == NULL) { errorPrint ("dgraphCoarsenInit: out of memory (2)"); dgraphCoarsenExit (coarptr); return (1); } coarptr->multloctmp = coarptr->multloctab; /* Array will have to be freed on error */ } if (memAllocGroup ((void **) (void *) /* Data used up to edge exchange phase at coarse graph build time */ &coarptr->nrcvidxtab, (size_t) (procngbnbr * sizeof (int)), &coarptr->vrcvdsptab, (size_t) ((procglbnbr + 1) * sizeof (int)), /* TRICK: "+1" for size count */ &coarptr->coargsttax, (size_t) (vertgstnbr * sizeof (Gnum)), &coarptr->procgsttax, (size_t) (vertrcvnbr * sizeof (int)), /* TRICK: Only purely ghost part of array will be used */ &coarptr->vrcvdattab, (size_t) (vertrcvnbr * sizeof (DgraphCoarsenVert)), NULL) == NULL) { errorPrint ("dgraphCoarsenInit: out of memory (3)"); dgraphCoarsenExit (coarptr); return (1); } buffsiz = 2 * MAX ((procngbnbr * sizeof (MPI_Request)), (procglbnbr * sizeof (int))); if (memAllocGroup ((void **) (void *) /* Data released after coarse vertex index exchange phase */ &coarptr->nsndidxtab, (size_t) (procngbnbr * sizeof (int)), &coarptr->vsnddsptab, (size_t) ((procglbnbr + 1) * sizeof (int)), /* TRICK: "+1" for size count check */ &bufftab, (size_t) buffsiz, &coarptr->dcntloctab, (size_t) (procglbnbr * sizeof (DgraphCoarsenCount)), &coarptr->dcntglbtab, (size_t) (procglbnbr * sizeof (DgraphCoarsenCount)), &coarptr->vsnddattab, (size_t) (vertsndnbr * sizeof (DgraphCoarsenVert)), NULL) == NULL) { errorPrint ("dgraphCoarsenInit: out of memory (4)"); dgraphCoarsenExit (coarptr); return (1); } coarptr->nrcvreqtab = (MPI_Request *) (void *) bufftab; /* TRICK: point-to-point requests and collective arrays share same space */ coarptr->nsndreqtab = coarptr->nrcvreqtab + procngbnbr; coarptr->vrcvcnttab = (int *) (void *) bufftab; coarptr->vsndcnttab = coarptr->vrcvcnttab + procglbnbr; for (procglbnum = 0, vdsprcvnum = vdspsndnum = 0; /* Build communication index arrays */ procglbnum < procglbnbr; procglbnum ++) { coarptr->vrcvdsptab[procglbnum] = vdsprcvnum; coarptr->vsnddsptab[procglbnum] = vdspsndnum; vdsprcvnum += fineprocrcvtab[procglbnum]; vdspsndnum += fineprocsndtab[procglbnum]; } coarptr->vrcvdsptab[procglbnum] = vdsprcvnum; /* Mark end of communication index arrays */ coarptr->vsnddsptab[procglbnum] = vdspsndnum; for (procngbnum = procngbnxt = 0; procngbnum < procngbnbr; procngbnum ++) { if ((procngbnxt == 0) && (fineprocngbtab[procngbnum] > finegrafptr->proclocnum)) { /* Find index of first neighbor of higher rank */ procngbnxt = procngbnum; break; } } coarptr->procngbnxt = procngbnxt; coarptr->coargsttax -= finegrafptr->baseval; coarptr->finegrafptr = finegrafptr; coarptr->coargrafptr = coargrafptr; memSet (coarptr->dcntloctab, 0, procglbnbr * sizeof (DgraphCoarsenCount)); memSet (coarptr->procgsttax, ~0, vertrcvnbr * sizeof (int)); /* Values have not yet been computed */ coarptr->procgsttax -= vertlocnbr + finegrafptr->baseval; /* TRICK: base array such that only purely ghost part is used */ coarptr->edgekptnbr = 0; return (0); } static void dgraphCoarsenExit ( DgraphCoarsenData * restrict const coarptr) /*+ Coarsening data structure +*/ { if (coarptr->nsndidxtab != NULL) /* Auxiliary array is released after first phase of coarse graph building */ memFree (coarptr->nsndidxtab); if (coarptr->nrcvidxtab != NULL) memFree (coarptr->nrcvidxtab); if (coarptr->multloctmp != NULL) /* If multinode array not provided nor passed back to calling routine */ memFree (coarptr->multloctmp); if (coarptr->coarprvptr != NULL) /* If ownership of coarse graph private data not yet transferred to it */ memFree (coarptr->coarprvptr); } static int dgraphCoarsenBuildColl ( DgraphCoarsenData * restrict const coarptr) { Gnum vertlocadj; int procngbnbr; int procngbnum; MPI_Comm proccomm = coarptr->finegrafptr->proccomm; Dgraph * restrict const grafptr = coarptr->finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; Gnum * restrict const coargsttax = coarptr->coargsttax; int * restrict const vsndcnttab = coarptr->vsndcnttab; int * restrict const vrcvdsptab = coarptr->coargrafptr->procrcvtab; /* TRICK: use coarse graph procrcvtab and procsndtab */ int * restrict const vsnddsptab = coarptr->coargrafptr->procsndtab; int * restrict const nrcvidxtab = coarptr->nrcvidxtab; int * restrict const nsndidxtab = coarptr->nsndidxtab; procngbnbr = grafptr->procngbnbr; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; memSet (vsndcnttab, 0, grafptr->procglbnbr * sizeof (int)); memSet (vrcvdsptab, 0, grafptr->procglbnbr * sizeof (int)); memSet (vsnddsptab, 0, grafptr->procglbnbr * sizeof (int)); for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { int procglbnum; procglbnum = procngbtab[procngbnum]; vsndcnttab[procglbnum] = 2 * (nsndidxtab[procngbnum] - coarptr->vsnddsptab[procglbnum]); vrcvdsptab[procglbnum] = 2 * coarptr->vrcvdsptab[procglbnum]; vsnddsptab[procglbnum] = 2 * coarptr->vsnddsptab[procglbnum]; } if (MPI_Alltoall (vsndcnttab, 1, MPI_INT, coarptr->vrcvcnttab, 1, MPI_INT, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuildColl: communication error (1)"); return (1); } if (MPI_Alltoallv (coarptr->vsnddattab, vsndcnttab, vsnddsptab, GNUM_MPI, coarptr->vrcvdattab, coarptr->vrcvcnttab, vrcvdsptab, GNUM_MPI, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuildColl: communication error (2)"); return (1); } for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) { /* For all received data chunks */ int vrcvidxnnd; int vrcvidxnum; int procglbnum; int statsiz; const DgraphCoarsenVert * restrict const vrcvdattab = coarptr->vrcvdattab; /* After data is received */ procglbnum = procngbtab[procngbnum]; statsiz = coarptr->vrcvcnttab[procglbnum]; for (vrcvidxnum = coarptr->vrcvdsptab[procglbnum], vrcvidxnnd = vrcvidxnum + (statsiz / 2); /* TRICK: each message item costs 2 Gnum's */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum multglbnum; /* Global number of coarse vertex */ vertglbnum = vrcvdattab[vrcvidxnum].datatab[0]; multglbnum = vrcvdattab[vrcvidxnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching request is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphCoarsenBuildColl: internal error"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coargsttax[vertlocnum] = multglbnum; } nrcvidxtab[procngbnum] = vrcvidxnnd; /* Keep receive end index for preparing edge arrays */ } return (0); } static int dgraphCoarsenBuildPtop ( DgraphCoarsenData * restrict const coarptr) { Gnum vertlocadj; int procngbnbr; int procngbnum; int vrcvreqnbr; MPI_Comm proccomm = coarptr->finegrafptr->proccomm; Dgraph * restrict const grafptr = coarptr->finegrafptr; const int * restrict const procngbtab = grafptr->procngbtab; Gnum * restrict const coargsttax = coarptr->coargsttax; const int * restrict const vrcvdsptab = coarptr->vrcvdsptab; const int * restrict const vsnddsptab = coarptr->vsnddsptab; int * restrict const nrcvidxtab = coarptr->nrcvidxtab; int * restrict const nsndidxtab = coarptr->nsndidxtab; procngbnbr = grafptr->procngbnbr; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; if (procngbnbr > 0) { /* No communication else */ procngbnum = coarptr->procngbnxt; /* Post receives in descending order */ do { int procglbnum; procngbnum = (procngbnum + (procngbnbr - 1)) % procngbnbr; /* Pre-decrement neighbor rank */ procglbnum = procngbtab[procngbnum]; if (MPI_Irecv (coarptr->vrcvdattab + vrcvdsptab[procglbnum], 2 * (vrcvdsptab[procglbnum + 1] - vrcvdsptab[procglbnum]), GNUM_MPI, procglbnum, TAGCOARSEN, proccomm, &coarptr->nrcvreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuildPtop: communication error (1)"); return (1); } } while (procngbnum != coarptr->procngbnxt); procngbnum = coarptr->procngbnxt; /* Post sends in ascending order */ do { int procglbnum; procglbnum = procngbtab[procngbnum]; if (MPI_Isend (coarptr->vsnddattab + vsnddsptab[procglbnum], 2 * (nsndidxtab[procngbnum] - vsnddsptab[procglbnum]), GNUM_MPI, procglbnum, TAGCOARSEN, proccomm, &coarptr->nsndreqtab[procngbnum]) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuildPtop: communication error (2)"); return (1); } procngbnum = (procngbnum + 1) % procngbnbr; /* Post-increment neighbor rank */ } while (procngbnum != coarptr->procngbnxt); } for (vrcvreqnbr = procngbnbr; vrcvreqnbr > 0; vrcvreqnbr --) { /* For all pending receive requests */ int vrcvidxnnd; int vrcvidxnum; int procngbnum; MPI_Status statdat; int statsiz; int o; #ifdef SCOTCH_DETERMINISTIC procngbnum = vrcvreqnbr - 1; o = MPI_Wait (&coarptr->nrcvreqtab[procngbnum], &statdat); #else /* SCOTCH_DETERMINISTIC */ o = MPI_Waitany (procngbnbr, coarptr->nrcvreqtab, &procngbnum, &statdat); #endif /* SCOTCH_DETERMINISTIC */ if ((o != MPI_SUCCESS) || (MPI_Get_count (&statdat, GNUM_MPI, &statsiz) != MPI_SUCCESS)) { errorPrint ("dgraphCoarsenBuildPtop: communication error (3)"); return (1); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (statdat.MPI_SOURCE != procngbtab[procngbnum]) { errorPrint ("dgraphCoarsenBuildPtop: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ { const DgraphCoarsenVert * restrict const vrcvdattab = coarptr->vrcvdattab; /* After data is received */ for (vrcvidxnum = vrcvdsptab[procngbtab[procngbnum]], vrcvidxnnd = vrcvidxnum + (statsiz / 2); /* TRICK: each message item costs 2 Gnum's */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum vertglbnum; /* Our global number (the one seen as mate by sender) */ Gnum vertlocnum; /* Our local number (the one seen as mate by sender) */ Gnum multglbnum; /* Global number of coarse vertex */ vertglbnum = vrcvdattab[vrcvidxnum].datatab[0]; multglbnum = vrcvdattab[vrcvidxnum].datatab[1]; vertlocnum = vertglbnum - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum < grafptr->baseval) || /* If matching request is not directed towards our process */ (vertlocnum >= grafptr->vertlocnnd)) { errorPrint ("dgraphCoarsenBuildPtop: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coargsttax[vertlocnum] = multglbnum; } nrcvidxtab[procngbnum] = vrcvidxnnd; /* Keep receive end index for preparing edge arrays */ } } if (MPI_Waitall (procngbnbr, coarptr->nsndreqtab, MPI_STATUSES_IGNORE) != MPI_SUCCESS) { /* Wait for send requests to complete */ errorPrint ("dgraphCoarsenBuildPtop: communication error (4)"); return (1); } return (0); } /* This routine performs the coarsening of edges ** with respect to the coarmulttax array computed ** by dgraphMatch. All data must be available when ** running (all receptions done). This function is ** inspired by libscotch/src/graph_coarsen_edge.c. */ DGRAPHALLREDUCEMAXSUMOP (3, 1) static int dgraphCoarsenBuild ( DgraphCoarsenData * restrict const coarptr) { Gnum vertlocadj; Gnum edgelocnbr; Gnum edlolocval; Gnum * restrict ercvdattab; Gnum * restrict esnddattab; int * restrict ercvcnttab; int * restrict esndcnttab; int * restrict ercvdsptab; int * restrict esnddsptab; int ercvdspval; int esnddspval; int ercvdatsiz; int esnddatsiz; DgraphCoarsenMulti * restrict multloctax; Gnum multlocnum; Gnum multlocadj; int procngbnbr; int procngbnum; int procnum; Gnum coarvertglbnum; Gnum coarvertlocnum; Gnum coarvertlocnnd; Gnum * restrict coarvertloctax; Gnum * restrict coarveloloctax; Gnum coarvelolocsum; Gnum coardegrlocmax; Gnum coaredgelocnum; Gnum * restrict coaredgeloctax; Gnum * restrict coaredloloctax; Gnum coarhashnbr; /* Size of hash table */ Gnum coarhashmsk; /* Mask for access hash table */ DgraphCoarsenHash * restrict coarhashtab; /* Table of edges to other multinodes */ Gnum reduloctab[4]; Gnum reduglbtab[4]; int cheklocval; int chekglbval; #ifdef SCOTCH_DEBUG_DGRAPH2 Gnum vertlocnum; int * restrict ercvdbgtab; #endif /* SCOTCH_DEBUG_DGRAPH2 */ MPI_Comm proccomm = coarptr->finegrafptr->proccomm; Dgraph * restrict const grafptr = coarptr->finegrafptr; Dgraph * restrict const coargrafptr = coarptr->coargrafptr; Gnum * restrict const coargsttax = coarptr->coargsttax; const int * restrict const procngbtab = grafptr->procngbtab; const int * restrict const procgsttax = coarptr->procgsttax; const Gnum * restrict const vertloctax = grafptr->vertloctax; const Gnum * restrict const vendloctax = grafptr->vendloctax; const Gnum * restrict const veloloctax = grafptr->veloloctax; const Gnum * restrict const edgeloctax = grafptr->edgeloctax; const Gnum * restrict const edgegsttax = grafptr->edgegsttax; const Gnum * restrict const edloloctax = grafptr->edloloctax; const DgraphCoarsenMulti * restrict const multloctab = coarptr->multloctab; DgraphCoarsenVert * const vrcvdattab = coarptr->vrcvdattab; /* [norestrict:async] */ DgraphCoarsenVert * restrict const vsnddattab = coarptr->vsnddattab; int * restrict const nsndidxtab = coarptr->nsndidxtab; #ifdef SCOTCH_DEBUG_DGRAPH2 memSet (coargsttax + grafptr->baseval, ~0, grafptr->vertgstnbr * sizeof (Gnum)); #endif /* SCOTCH_DEBUG_DGRAPH2 */ procngbnbr = grafptr->procngbnbr; for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) /* Reset indices for sending messages */ nsndidxtab[procngbnum] = coarptr->vsnddsptab[procngbtab[procngbnum]]; vertlocadj = grafptr->procvrttab[grafptr->proclocnum] - grafptr->baseval; multlocadj = coarptr->coargrafptr->procdsptab[grafptr->proclocnum]; for (multlocnum = 0; multlocnum < coarptr->multlocnbr; multlocnum ++) { Gnum vertlocnum0; Gnum vertlocnum1; vertlocnum0 = multloctab[multlocnum].vertglbnum[0] - vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum0 < grafptr->baseval) || (vertlocnum0 >= grafptr->vertlocnnd)) { errorPrint ("dgraphCoarsenBuild: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coargsttax[vertlocnum0] = multlocnum + multlocadj; vertlocnum1 = multloctab[multlocnum].vertglbnum[1]; if (vertlocnum1 >= 0) { /* If second vertex is local */ vertlocnum1 -= vertlocadj; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((vertlocnum1 < grafptr->baseval) || (vertlocnum1 >= grafptr->vertlocnnd)) { errorPrint ("dgraphCoarsenBuild: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coargsttax[vertlocnum1] = multlocnum + multlocadj; /* Don't care if single multinode */ } else { Gnum edgelocnum; Gnum vertglbnum1; Gnum vertgstnum1; int coarsndidx; int procngbnum; edgelocnum = -2 - vertlocnum1; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((edgelocnum < grafptr->baseval) || (edgelocnum >= (grafptr->edgelocsiz + grafptr->baseval))) { errorPrint ("dgraphCoarsenBuild: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vertglbnum1 = edgeloctax[edgelocnum]; vertgstnum1 = edgegsttax[edgelocnum]; procngbnum = procgsttax[vertgstnum1]; /* Find neighbor owner process */ if (procngbnum < 0) { /* If neighbor had not been computed */ errorPrint ("dgraphCoarsenBuild: internal error (4)"); return (1); } coarsndidx = nsndidxtab[procngbnum] ++; /* Get position of message in send array */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (coarsndidx >= coarptr->vsnddsptab[procngbtab[procngbnum] + 1]) { errorPrint ("dgraphCoarsenBuild: internal error (5)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ vsnddattab[coarsndidx].datatab[0] = vertglbnum1; vsnddattab[coarsndidx].datatab[1] = multlocnum + multlocadj; /* Send multinode value */ } } if (coarptr->multloctmp != NULL) { /* If we allocated the multinode array */ coarptr->multloctmp = coarptr->multloctab = memRealloc (coarptr->multloctab, coarptr->multlocnbr * sizeof (DgraphCoarsenMulti)); /* In the mean time, resize multinode array */ } if ((((grafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphCoarsenBuildPtop : dgraphCoarsenBuildColl) (coarptr) != 0) return (1); #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Barrier (proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuild: communication error (1)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ ercvcnttab = coarptr->coargrafptr->procrcvtab; /* TRICK: re-use some private coarse graph arrays after vertex exchange phase */ ercvdsptab = coarptr->coargrafptr->procsndtab; for (procnum = 0, ercvdspval = 0; procnum < grafptr->procglbnbr; procnum ++) { /* TRICK: dcntglbtab array no longer needed afterwards; can be freed */ ercvdsptab[procnum] = ercvdspval; ercvcnttab[procnum] = coarptr->dcntglbtab[procnum].vertsndnbr * ((veloloctax != NULL) ? 2 : 1) + coarptr->dcntglbtab[procnum].edgesndnbr * ((edloloctax != NULL) ? 2 : 1); ercvdspval += ercvcnttab[procnum]; } memFree (coarptr->nsndidxtab); /* Free now useless work memory */ coarptr->nsndidxtab = NULL; /* This block won't be reclaimed */ #ifdef SCOTCH_DEBUG_DGRAPH2 for (vertlocnum = grafptr->baseval; vertlocnum < grafptr->vertlocnnd; vertlocnum ++) { if (coargsttax[vertlocnum] < 0) { errorPrint ("dgraphCoarsenBuild: invalid matching"); return (1); } } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (dgraphHaloSync (grafptr, coargsttax + grafptr->baseval, GNUM_MPI) != 0) { errorPrint ("dgraphCoarsenBuild: cannot propagate multinode indices"); return (1); } edgelocnbr = coarptr->edgekptnbr + coarptr->edgercvnbr; /* Upper bound on number of edges */ ercvdatsiz = coarptr->vertrcvnbr + coarptr->edgercvnbr; /* Basic size: degrees plus edge data */ esnddatsiz = coarptr->vertsndnbr + coarptr->edgesndnbr; if (grafptr->veloloctax != NULL) { /* Add vertex loads if necessary */ ercvdatsiz += coarptr->vertrcvnbr; esnddatsiz += coarptr->vertsndnbr; } if (grafptr->edloloctax != NULL) { /* Add edge loads if necessary */ ercvdatsiz += coarptr->edgercvnbr; esnddatsiz += coarptr->edgesndnbr; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (ercvdspval != ercvdatsiz) { errorPrint ("dgraphCoarsenBuild: internal error (6)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ for (coarhashmsk = 31; coarhashmsk < grafptr->degrglbmax; coarhashmsk = coarhashmsk * 2 + 1) ; coarhashmsk = coarhashmsk * 4 + 3; coarhashnbr = coarhashmsk + 1; cheklocval = 0; coargrafptr->flagval = DGRAPHFREETABS | DGRAPHFREEPRIV | DGRAPHVERTGROUP; /* Coarse graph is not yet based */ coarptr->coarprvptr = NULL; /* Transfer ownership of private arrays to coarse graph */ if (memAllocGroup ((void **) (void *) &coargrafptr->vertloctax, (size_t) ((coarptr->multlocnbr + 1) * sizeof (Gnum)), &coargrafptr->veloloctax, (size_t) ( coarptr->multlocnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("dgraphCoarsenBuild: out of memory (1)"); cheklocval = 1; } else if ((coargrafptr->edgeloctax = memAlloc (edgelocnbr * sizeof (Gnum))) == NULL) { errorPrint ("dgraphCoarsenBuild: out of memory (2)"); cheklocval = 1; } else if ((coargrafptr->edloloctax = memAlloc (edgelocnbr * sizeof (Gnum))) == NULL) { errorPrint ("dgraphCoarsenBuild: out of memory (3)"); cheklocval = 1; } else if ((coarptr->nsndidxtab = memAllocGroup ((void **) (void *) /* TRICK: allow data array to be released on error */ &esndcnttab, (size_t) (grafptr->procglbnbr * sizeof (int)), &esnddsptab, (size_t) (grafptr->procglbnbr * sizeof (int)), &esnddattab, (size_t) (esnddatsiz * sizeof (Gnum)), &ercvdattab, (size_t) (ercvdatsiz * sizeof (Gnum)), #ifdef SCOTCH_DEBUG_DGRAPH2 &ercvdbgtab, (size_t) (grafptr->procglbnbr * sizeof (int)), #endif /* SCOTCH_DEBUG_DGRAPH2 */ &coarhashtab, (size_t) (coarhashnbr * sizeof (DgraphCoarsenHash)), NULL)) == NULL) { errorPrint ("dgraphCoarsenBuild: out of memory (4)"); cheklocval = 1; } #ifdef SCOTCH_DEBUG_DGRAPH1 /* Communication cannot be overlapped by a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_SUM, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuild: communication error (2)"); chekglbval = 1; } #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) { dgraphFree (coargrafptr); return (1); } memSet (coarhashtab, ~0, coarhashnbr * sizeof (DgraphCoarsenHash)); coargrafptr->baseval = grafptr->baseval; coargrafptr->vertlocnnd = coargrafptr->baseval + coargrafptr->vertlocnbr; coargrafptr->vertloctax -= coargrafptr->baseval; coargrafptr->vendloctax = coargrafptr->vertloctax + 1; /* Graph is compact */ coargrafptr->veloloctax -= coargrafptr->baseval; coargrafptr->edgeloctax -= coargrafptr->baseval; coargrafptr->edloloctax -= coargrafptr->baseval; for (procngbnum = procnum = 0, esnddspval = 0; procngbnum < procngbnbr; procngbnum ++) { int procglbnum; int vrcvidxnnd; int vrcvidxnum; procglbnum = procngbtab[procngbnum]; while (procnum < procglbnum) { /* Fill empty slots */ esnddsptab[procnum] = esnddspval; esndcnttab[procnum] = 0; procnum ++; } esnddsptab[procnum] = esnddspval; for (vrcvidxnum = coarptr->vrcvdsptab[procglbnum], vrcvidxnnd = coarptr->nrcvidxtab[procngbnum]; /* For all multinode requests received, in order */ vrcvidxnum < vrcvidxnnd; vrcvidxnum ++) { Gnum vertlocnum; Gnum edgelocnum; Gnum edgelocnnd; vertlocnum = vrcvdattab[vrcvidxnum].datatab[0] - vertlocadj; edgelocnum = vertloctax[vertlocnum]; edgelocnnd = vendloctax[vertlocnum]; #ifdef SCOTCH_DEBUG_DGRAPH2 if ((esnddspval + ((veloloctax != NULL) ? 2 : 1) + ((edloloctax != NULL) ? 2 : 1) * (edgelocnnd - edgelocnum)) > esnddatsiz) { errorPrint ("dgraphCoarsenBuild: internal error (7)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ esnddattab[esnddspval ++] = (edgelocnnd - edgelocnum); /* Write degree */ if (veloloctax != NULL) esnddattab[esnddspval ++] = veloloctax[vertlocnum]; if (edloloctax != NULL) { for ( ; edgelocnum < edgelocnnd; edgelocnum ++) { esnddattab[esnddspval ++] = coargsttax[edgegsttax[edgelocnum]]; esnddattab[esnddspval ++] = edloloctax[edgelocnum]; } } else { for ( ; edgelocnum < edgelocnnd; edgelocnum ++) esnddattab[esnddspval ++] = coargsttax[edgegsttax[edgelocnum]]; } } esndcnttab[procnum] = esnddspval - esnddsptab[procnum]; procnum ++; } while (procnum < grafptr->procglbnbr) { /* Complete fill-in of empty slots */ esnddsptab[procnum] = esnddspval; esndcnttab[procnum] = 0; procnum ++; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (esnddspval != esnddatsiz) { errorPrint ("dgraphCoarsenBuild: internal error (8)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ while (procnum < grafptr->procglbnbr) { /* Complete edge data send displacement array */ esnddsptab[procnum] = esnddspval; esndcnttab[procnum] = 0; procnum ++; } #ifdef SCOTCH_DEBUG_DGRAPH2 if (MPI_Alltoall (esndcnttab, 1, MPI_INT, ercvdbgtab, 1, MPI_INT, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuild: communication error (3)"); return (1); } for (procnum = 0; procnum < grafptr->procglbnbr; procnum ++) { if (ercvdbgtab[procnum] != ercvcnttab[procnum]) { errorPrint ("dgraphCoarsenBuild: internal error (9)"); return (1); } } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (MPI_Alltoallv (esnddattab, esndcnttab, esnddsptab, GNUM_MPI, ercvdattab, ercvcnttab, ercvdsptab, GNUM_MPI, proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsenBuild: communication error (4)"); return (1); } for (procngbnum = 0; procngbnum < procngbnbr; procngbnum ++) ercvdsptab[procngbnum] = ercvdsptab[procngbtab[procngbnum]]; multloctax = coarptr->multloctab - grafptr->baseval; edlolocval = 1; coarvelolocsum = 0; coardegrlocmax = 0; coarvertloctax = coargrafptr->vertloctax; coarveloloctax = coargrafptr->veloloctax; coaredgeloctax = coargrafptr->edgeloctax; coaredloloctax = coargrafptr->edloloctax; for (coarvertlocnum = coaredgelocnum = grafptr->baseval, coarvertglbnum = multlocadj, coarvertlocnnd = coarvertlocnum + coargrafptr->vertlocnbr; coarvertlocnum < coarvertlocnnd; coarvertlocnum ++, coarvertglbnum ++) { Gnum coarvelolocval; Gnum vertlocnum; int i; coarvertloctax[coarvertlocnum] = coaredgelocnum; i = 0; coarvelolocval = 0; vertlocnum = multloctax[coarvertlocnum].vertglbnum[0] - vertlocadj; while (1) { /* Pseudo-infinite loop on both vertices of the multinode */ Gnum vertglbnum; Gnum edgelocnum; Gnum edgelocnnd; Gnum degrlocval; int procngbnum; int ercvidxnum; coarvelolocval += (veloloctax != NULL) ? veloloctax[vertlocnum] : 1; for (edgelocnum = vertloctax[vertlocnum], edgelocnnd = vendloctax[vertlocnum]; /* Loop on edges of first (and sometimes second) local mate */ edgelocnum < edgelocnnd; edgelocnum ++) { Gnum coarvertglbend; Gnum h; coarvertglbend = coargsttax[edgegsttax[edgelocnum]]; if (coarvertglbend == coarvertglbnum) /* If end of collapsed edge */ continue; if (edloloctax != NULL) edlolocval = edloloctax[edgelocnum]; for (h = (coarvertglbend * COARHASHPRIME) & coarhashmsk; ; h = (h + 1) & coarhashmsk) { if (coarhashtab[h].vertorgnum != coarvertglbnum) { /* If old slot */ coarhashtab[h].vertorgnum = coarvertglbnum; /* Mark it in reference array */ coarhashtab[h].vertendnum = coarvertglbend; coarhashtab[h].edgelocnum = coaredgelocnum; #ifdef SCOTCH_DEBUG_DGRAPH2 if (coaredgelocnum >= (edgelocnbr + coargrafptr->baseval)) { errorPrint ("dgraphCoarsenBuild: internal error (10)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coaredgeloctax[coaredgelocnum] = coarvertglbend; /* One more edge created */ coaredloloctax[coaredgelocnum] = edlolocval; coaredgelocnum ++; break; /* Give up hashing */ } if (coarhashtab[h].vertendnum == coarvertglbend) { /* If coarse edge already exists */ coaredloloctax[coarhashtab[h].edgelocnum] += edlolocval; break; /* Give up hashing */ } } } if (i ++ > 0) /* If second local vertex has been processed, exit */ break; vertglbnum = multloctax[coarvertlocnum].vertglbnum[1]; if (vertglbnum >= 0) { /* If second multinode vertex is local */ if ((vertglbnum - vertlocadj) == vertlocnum) /* If single multinode */ break; vertlocnum = (vertglbnum - vertlocadj); continue; } edgelocnum = -2 - vertglbnum; multloctax[coarvertlocnum].vertglbnum[1] = edgeloctax[edgelocnum]; /* Set second vertex of multinode */ procngbnum = procgsttax[edgegsttax[edgelocnum]]; ercvidxnum = ercvdsptab[procngbnum]; degrlocval = ercvdattab[ercvidxnum ++]; coarvelolocval += (veloloctax != NULL) ? ercvdattab[ercvidxnum ++] : 1; while (degrlocval -- > 0) { Gnum coarvertglbend; Gnum h; coarvertglbend = ercvdattab[ercvidxnum ++]; if (edloloctax != NULL) edlolocval = ercvdattab[ercvidxnum ++]; if (coarvertglbend == coarvertglbnum) /* If end of collapsed edge */ continue; for (h = (coarvertglbend * COARHASHPRIME) & coarhashmsk; ; h = (h + 1) & coarhashmsk) { if (coarhashtab[h].vertorgnum != coarvertglbnum) { /* If old slot */ coarhashtab[h].vertorgnum = coarvertglbnum; /* Mark it in reference array */ coarhashtab[h].vertendnum = coarvertglbend; coarhashtab[h].edgelocnum = coaredgelocnum; #ifdef SCOTCH_DEBUG_DGRAPH2 if (coaredgelocnum >= (edgelocnbr + coargrafptr->baseval)) { errorPrint ("dgraphCoarsenBuild: internal error (11)"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ coaredgeloctax[coaredgelocnum] = coarvertglbend; /* One more edge created */ coaredloloctax[coaredgelocnum] = edlolocval; coaredgelocnum ++; break; /* Give up hashing */ } if (coarhashtab[h].vertendnum == coarvertglbend) { /* If coarse edge already exists */ coargrafptr->edloloctax[coarhashtab[h].edgelocnum] += edlolocval; break; /* Give up hashing */ } } } ercvdsptab[procngbnum] = ercvidxnum; /* Write back updated receive index */ break; /* Exit loop after processing remote mate */ } coarvelolocsum += coarvelolocval; coarveloloctax[coarvertlocnum] = coarvelolocval; if (coardegrlocmax < (coaredgelocnum - coarvertloctax[coarvertlocnum])) coardegrlocmax = (coaredgelocnum - coarvertloctax[coarvertlocnum]); } coarvertloctax[coarvertlocnum] = coaredgelocnum; /* Set end of compact edge array */ coargrafptr->velolocsum = coarvelolocsum; coargrafptr->veloglbsum = grafptr->veloglbsum; coargrafptr->edgelocnbr = coargrafptr->edgelocsiz = coaredgelocnum - coargrafptr->baseval; coargrafptr->edgeloctax = memRealloc (coaredgeloctax + coargrafptr->baseval, coargrafptr->edgelocnbr * sizeof (Gnum)); coargrafptr->edgeloctax -= coargrafptr->baseval; coargrafptr->edloloctax = memRealloc (coaredloloctax + coargrafptr->baseval, coargrafptr->edgelocnbr * sizeof (Gnum)); coargrafptr->edloloctax -= coargrafptr->baseval; reduloctab[0] = coargrafptr->vertlocnbr; /* Get maximum over all processes */ reduloctab[1] = coargrafptr->edgelocnbr; reduloctab[2] = coardegrlocmax; /* Get local maximum degree */ reduloctab[3] = coargrafptr->edgelocnbr; if (dgraphAllreduceMaxSum (reduloctab, reduglbtab, 3, 1, proccomm) != 0) { errorPrint ("dgraphCoarsenBuild: communication error (5)"); return (1); } coargrafptr->vertglbmax = reduglbtab[0]; coargrafptr->edgeglbmax = reduglbtab[1]; coargrafptr->degrglbmax = reduglbtab[2]; /* It is now a real global maximum degree */ coargrafptr->edgeglbnbr = reduglbtab[3]; coargrafptr->edgeglbsmx = coargrafptr->edgeglbmax; return (0); } /***************************/ /* */ /* The coarsening routine. */ /* */ /***************************/ /* This routine coarsens the given fine distributed ** graph, as long as the coarsening ratio remains ** below some threshold value and the coarsened graph ** is not too small. ** If a multinode array is provided (*multlocptr != NULL), ** it must be of a size sufficient to hold multinode data ** in any configuration, including in the case of folding ** with duplication, where folded data is spread across ** floor(P/2) processes. ** It returns: ** - 0 : if the graph has been coarsened. ** - 1 : if the graph could not be coarsened. ** - 2 : on error. */ int dgraphCoarsen ( Dgraph * restrict const finegrafptr, /*+ Graph to coarsen +*/ Dgraph * restrict const coargrafptr, /*+ Coarse graph to build +*/ DgraphCoarsenMulti * restrict * const multlocptr, /*+ Pointer to un-based multinode array +*/ const Gnum passnbr, /*+ Number of coarsening passes to go +*/ const Gnum coarnbr, /*+ Minimum number of coarse vertices +*/ const double coarrat, /*+ Maximum contraction ratio +*/ const int flagval) /*+ Flag value +*/ { DgraphMatchData matedat; /* Matching state data; includes coarsening handling data */ Gnum vertrcvnbr; /* Overall number of vertices to be received from neighbors */ Gnum edgercvnbr; /* Overall number of edges to be received from neighbors */ Gnum vertsndnbr; /* Overall number of vertices to be sent to neighbors */ Gnum edgesndnbr; /* Overall number of edges to be sent to neighbors */ int cheklocval; int chekglbval; Gnum coarvertmax; Gnum passnum; int procnum; int o; #ifdef SCOTCH_DEBUG_DGRAPH1 if (coarrat < 0.5L) /* If impossible coarsening ratio wanted */ return (1); /* We will never succeed */ #endif /* SCOTCH_DEBUG_DGRAPH1 */ coarvertmax = (Gnum) ((double) finegrafptr->vertglbnbr * coarrat); /* Maximum number of coarse vertices */ if (coarvertmax < coarnbr) /* If there are too few vertices in graph */ return (1); /* It is useless to go any further */ if (dgraphGhst (finegrafptr) != 0) { /* Compute ghost edge array of fine graph if not already present */ errorPrint ("dgraphCoarsen: cannot compute ghost edge array"); return (2); } matedat.c.flagval = flagval; matedat.c.multloctab = *multlocptr; /* Propagate the provided multinode array or NULL if it has to be allocated */ cheklocval = dgraphCoarsenInit (&matedat.c, finegrafptr, coargrafptr); cheklocval |= dgraphMatchInit (&matedat, 0.5F); #ifdef SCOTCH_DEBUG_DGRAPH1 /* This communication cannot be covered by a useful one */ if (MPI_Allreduce (&cheklocval, &chekglbval, 1, MPI_INT, MPI_MAX, finegrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsen: communication error (1)"); return (2); } #else /* SCOTCH_DEBUG_DGRAPH1 */ chekglbval = cheklocval; #endif /* SCOTCH_DEBUG_DGRAPH1 */ if (chekglbval != 0) return (2); for (passnum = 0; passnum < passnbr; passnum ++) { ((passnum == 0) ? dgraphMatchHl : dgraphMatchHy) (&matedat); /* If first pass, process lightest vertices first */ if ((((finegrafptr->flagval & DGRAPHCOMMPTOP) != 0) ? dgraphMatchSyncPtop : dgraphMatchSyncColl) (&matedat) != 0) { errorPrint ("dgraphCoarsen: cannot perform matching"); dgraphMatchExit (&matedat); dgraphCoarsenExit (&matedat.c); return (2); } } dgraphMatchLy (&matedat); /* All remaining vertices are matched locally */ #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphMatchCheck (&matedat) != 0) { errorPrint ("dgraphCoarsen: invalid matching"); dgraphMatchExit (&matedat); dgraphCoarsenExit (&matedat.c); return (2); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ dgraphMatchExit (&matedat); vertsndnbr = edgesndnbr = 0; for (procnum = 0; procnum < finegrafptr->procglbnbr; procnum ++) { vertsndnbr += matedat.c.dcntloctab[procnum].vertsndnbr; edgesndnbr += matedat.c.dcntloctab[procnum].edgesndnbr; matedat.c.dcntloctab[procnum].vertlocnbr = matedat.c.multlocnbr; } matedat.c.vertsndnbr = vertsndnbr; matedat.c.edgesndnbr = edgesndnbr; if (MPI_Alltoall (matedat.c.dcntloctab, 3, GNUM_MPI, matedat.c.dcntglbtab, 3, GNUM_MPI, finegrafptr->proccomm) != MPI_SUCCESS) { errorPrint ("dgraphCoarsen: communication error (2)"); return (2); } vertrcvnbr = edgercvnbr = 0; coargrafptr->procdsptab[0] = finegrafptr->baseval; /* Build vertex-to-process array */ for (procnum = 0; procnum < finegrafptr->procglbnbr; procnum ++) { Gnum proccntval; vertrcvnbr += matedat.c.dcntglbtab[procnum].vertsndnbr; edgercvnbr += matedat.c.dcntglbtab[procnum].edgesndnbr; proccntval = matedat.c.dcntglbtab[procnum].vertlocnbr; coargrafptr->proccnttab[procnum] = proccntval; coargrafptr->procdsptab[procnum + 1] = coargrafptr->procdsptab[procnum] + proccntval; } coargrafptr->vertlocnbr = matedat.c.multlocnbr; coargrafptr->vertglbnbr = coargrafptr->procdsptab[finegrafptr->procglbnbr] - finegrafptr->baseval; matedat.c.vertrcvnbr = vertrcvnbr; matedat.c.edgercvnbr = edgercvnbr; if (coargrafptr->vertglbnbr > coarvertmax) { /* If coarsening ratio not met */ dgraphCoarsenExit (&matedat.c); return (1); } if (dgraphCoarsenBuild (&matedat.c) != 0) { /* Build coarse graph */ dgraphCoarsenExit (&matedat.c); return (2); } #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (coargrafptr) != 0) { /* Check graph consistency */ errorPrint ("dgraphCoarsen: inconsistent graph data"); dgraphFree (coargrafptr); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ matedat.c.multloctmp = NULL; /* So that it will not be freed */ dgraphCoarsenExit (&matedat.c); /* Free all other temporary arrays */ o = 0; /* Assume everything is now all right */ #ifdef PTSCOTCH_FOLD_DUP if (((flagval & DGRAPHCOARSENFOLDDUP) != 0) && /* If some form of folding is requested */ (coargrafptr->procglbnbr >= 2)) { /* And if there is need to it */ Dgraph coargrafdat; /* Coarse graph data before folding */ DgraphCoarsenMulti * coarmultptr; /* Pointer to folded multinode array */ MPI_Datatype coarmultype; MPI_Type_contiguous (2, GNUM_MPI, &coarmultype); /* Define type for MPI transfer */ MPI_Type_commit (&coarmultype); /* Commit new type */ coargrafdat = *coargrafptr; /* Copy unfolded coarse graph data to save area */ coarmultptr = NULL; /* Assume we will not get a multinode array */ if ((flagval & DGRAPHCOARSENFOLDDUP) == DGRAPHCOARSENFOLD) { /* Do a simple folding */ memSet (coargrafptr, 0, sizeof (Dgraph)); /* Also reset procglbnbr for unused processes */ o = dgraphFold (&coargrafdat, 0, coargrafptr, (void *) matedat.c.multloctab, (void **) (void *) &coarmultptr, coarmultype); } else { /* Do a duplicant-folding */ int loopval; o = dgraphFoldDup (&coargrafdat, coargrafptr, (void *) matedat.c.multloctab, (void **) (void *) &coarmultptr, coarmultype); loopval = intRandVal (finegrafptr->proclocnum + intRandVal (finegrafptr->proclocnum * 2 + 1) + 1); while (loopval --) /* Desynchronize pseudo-random generator across processes */ intRandVal (2); } dgraphExit (&coargrafdat); /* Free unfolded graph */ MPI_Type_free (&coarmultype); if (*multlocptr == NULL) /* If unfolded multinode array was not user-provided, free it */ memFree (matedat.c.multloctab); *multlocptr = coarmultptr; /* Return folded multinode array or NULL */ } else /* No folding at all */ #endif /* PTSCOTCH_FOLD_DUP */ *multlocptr = matedat.c.multloctab; /* Return un-based pointer (maybe the same as initially user-provided) */ return (o); } scotch_6.0.9/src/libscotch/library_dgraph_io_load_f.c0000644000302600021200000001151513560013261023146 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_io_load_f.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the Fortran API for **/ /** the distributed source graph handling **/ /** routines of the libSCOTCH library. **/ /** **/ /** DATES : # Version 5.0 : from : 13 may 2007 **/ /** to 13 may 2007 **/ /** # Version 5.1 : from : 27 mar 2010 **/ /** to 27 mar 2010 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "ptscotch.h" /**************************************/ /* */ /* These routines are the Fortran API */ /* for the graph handling routines. */ /* */ /**************************************/ /* When an input stream is built from the given ** file handle, it is set as unbuffered, so as to ** allow for multiple stream reads from the same ** file handle. If it were buffered, too many ** input characters would be read on the first ** block read. */ SCOTCH_FORTRAN ( \ DGRAPHLOAD, dgraphload, ( \ SCOTCH_Dgraph * const grafptr, \ int * const fileptr, \ const SCOTCH_Num * const baseval, \ const SCOTCH_Num * const flagval, \ int * const revaptr), \ (grafptr, fileptr, baseval, flagval, revaptr)) { FILE * stream; /* Stream to build from handle */ int filenum; /* Duplicated handle */ int o; if (*fileptr == -1) /* If process does not want to open a stream */ stream = NULL; else { if ((filenum = dup (*fileptr)) < 0) { /* If cannot duplicate file descriptor */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHLOAD)) ": cannot duplicate handle"); *revaptr = 1; /* Indicate error */ return; } if ((stream = fdopen (filenum, "r")) == NULL) { /* Build stream from handle */ errorPrint (STRINGIFY (SCOTCH_NAME_PUBLICFU (DGRAPHLOAD)) ": cannot open input stream"); close (filenum); *revaptr = 1; return; } setbuf (stream, NULL); /* Do not buffer on input */ } o = SCOTCH_dgraphLoad (grafptr, stream, *baseval, *flagval); if (stream != NULL) /* If process has an open stream */ fclose (stream); /* This closes filenum too */ *revaptr = o; } scotch_6.0.9/src/libscotch/hmesh_order_cp.h0000644000302600021200000001030613465315041021152 0ustar pelegrinpelegrin/* Copyright 2004,2007,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_cp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the mesh compression algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 08 feb 2004 **/ /** to 08 feb 2004 **/ /** # Version 5.1 : from : 04 nov 2010 **/ /** to 04 nov 2010 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /** Prime number for hashing vertex numbers. **/ #define HMESHORDERCPHASHPRIME 17 /* Prime number */ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderCpParam_ { double comprat; /*+ Compression ratio threshold +*/ Strat * stratcpr; /*+ Compressed submesh ordering strategy +*/ Strat * stratunc; /*+ Uncompressed submesh ordering strategy +*/ } HmeshOrderCpParam; /*+ This structure holds fine neighbor hashing data. +*/ typedef struct HmeshOrderCpHash_ { Gnum vnodnum; /*+ Origin node vertex (i.e. pass) number +*/ Gnum velmnum; /*+ Adjacent end element vertex number +*/ } HmeshOrderCpHash; /*+ This structure holds coarse neighbor mate data. +*/ typedef struct HgraphOrderCpMate_ { Gnum coarvertend; /*+ Adjacent coarse end vertex number +*/ Gnum finevertend; /*+ Adjacent end vertex number +*/ } HgraphOrderCpMate; /* ** The function prototypes. */ #ifdef HMESH_ORDER_CP static Gnum hmeshOrderCpTree (const Gnum * const, const Gnum * const, OrderCblk * const, Gnum); #endif /* HMESH_ORDER_CP */ int hmeshOrderCp (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderCpParam * const); scotch_6.0.9/src/libscotch/bdgraph_bipart_ml.h0000644000302600021200000001126613560005346021637 0ustar pelegrinpelegrin/* Copyright 2007-2009,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_ml.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the multi-level bipartition **/ /** routine for distributed graphs. **/ /** **/ /** DATES : # Version 5.1 : from : 30 oct 2007 **/ /** to : 29 oct 2009 **/ /** # Version 6.0 : from : 28 sep 2014 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct BdgraphBipartMlParam_ { INT passnbr; /*+ Number of coarsening passes to go +*/ INT foldmax; /*+ Maximum number of vertices per processor to do folding +*/ int foldval; /*+ Type of folding +*/ INT coarnbr; /*+ Minimum number of vertices +*/ double coarrat; /*+ Coarsening ratio +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ Strat * stratseq; /*+ Strategy when running on a single processor +*/ } BdgraphBipartMlParam; typedef struct BdgraphBipartMlSort_ { Gnum vertnum; /*+ Global vertex index for uncoarsening +*/ Gnum procnum; /*+ Gnum to have same type +*/ } BdgraphBipartMlSort; /* ** The function prototypes. */ #ifdef BDGRAPH_BIPART_ML static int bdgraphBipartMlCoarsen (Bdgraph * const, Bdgraph * const, DgraphCoarsenMulti * restrict * const, const BdgraphBipartMlParam * const); static int bdgraphBipartMlUncoarsen (Bdgraph *, const Bdgraph * const, const DgraphCoarsenMulti * restrict const); static void bdgraphBipartMlOpBest (const Gnum * const, Gnum * const, const int * const, const MPI_Datatype * const); static int bdgraphBipartMl2 (Bdgraph * const, const BdgraphBipartMlParam * const); #endif /* BDGRAPH_BIPART_ML */ int bdgraphBipartMl (Bdgraph * const, const BdgraphBipartMlParam * const); scotch_6.0.9/src/libscotch/hmesh_order_nd.h0000644000302600021200000000635113465315041021156 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_nd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the halo mesh nested dissection **/ /** ordering algorithm. **/ /** **/ /** DATES : # Version 4.0 : from : 06 jan 2002 **/ /** to 23 jan 2004 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderNdParam_ { Strat * sepstrat; /*+ Separation strategy +*/ Strat * ordstratlea; /*+ Leaf ordering strategy +*/ Strat * ordstratsep; /*+ Separator ordering strategy +*/ } HmeshOrderNdParam; /* ** The function prototypes. */ int hmeshOrderNd (const Hmesh * restrict const, Order * restrict const, const Gnum, OrderCblk * restrict const, const HmeshOrderNdParam * const); scotch_6.0.9/src/libscotch/dgraph_redist.h0000644000302600021200000000573113560005435021015 0ustar pelegrinpelegrin/* Copyright 2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_redist.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the graph redistribution **/ /** routine. **/ /** **/ /** DATES : # Version 6.0 : from : 10 may 2010 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ #ifdef DGRAPH_REDIST static int dgraphRedist2 (Dgraph * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * const, const Gnum * const, const Gnum, const Gnum, Dgraph * restrict const); #endif /* DGRAPH_REDIST */ int dgraphRedist (Dgraph * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum, const Gnum, Dgraph * restrict const); scotch_6.0.9/src/libscotch/wgraph_store.c0000644000302600021200000001534313303015264020671 0ustar pelegrinpelegrin/* Copyright 2007-2010 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : wgraph_store.c **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** Charles-Edmond BICHOT (v5.1b) **/ /** **/ /** FUNCTION : This module contains the data store re- **/ /** lated rountines for the vertex overlap- **/ /** ped graph partitioning. **/ /** **/ /** DATES : # Version 5.1 : from : 01 dec 2007 **/ /** to : 01 jul 2008 **/ /** # Version 6.0 : from : 05 nov 2010 **/ /** to : 30 may 2010 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define WGRAPH_STORE #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "wgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int wgraphStoreInit ( const Wgraph * const grafptr, WgraphStore * const storptr) { Gnum savsize; savsize = 2 * grafptr->partnbr * sizeof (Gnum) + /* Compute size for frontier, part arrays, communication load and size */ grafptr->s.vertnbr * (sizeof (Gnum) + sizeof (Anum)); if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("wgraphStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void wgraphStoreExit ( WgraphStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_WGRAPH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_WGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void wgraphStoreSave ( const Wgraph * const grafptr, WgraphStore * const storptr) { byte * compload; /* Pointer to part load data save area */ byte * compsize; /* Pointer to part size data save area */ byte * frontab; /* Pointer to frontier data save area */ byte * parttab; /* Pointer to partition data save area */ storptr->partnbr = grafptr->partnbr; /* Save partition parameters */ storptr->fronnbr = grafptr->fronnbr; storptr->fronload = grafptr->fronload; compload = storptr->datatab; /* Compute data offsets within save structure */ compsize = compload + grafptr->partnbr * sizeof (Gnum); frontab = compsize + grafptr->partnbr * sizeof (Gnum); parttab = frontab + grafptr->fronnbr * sizeof (Gnum); memCpy (compload, grafptr->compload, grafptr->partnbr * sizeof (Gnum)); memCpy (compsize, grafptr->compsize, grafptr->partnbr * sizeof (Gnum)); memCpy (frontab, grafptr->frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (parttab, grafptr->parttax + grafptr->s.baseval, grafptr->s.vertnbr * sizeof (Anum)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void wgraphStoreUpdt ( Wgraph * const grafptr, const WgraphStore * const storptr) { byte * compload; /* Pointer to part load data save area */ byte * compsize; /* Pointer to part size data save area */ byte * frontab; /* Pointer to frontier data save area */ byte * parttab; /* Pointer to partition data save area */ grafptr->partnbr = storptr->partnbr; /* Load partition parameters */ grafptr->fronnbr = storptr->fronnbr; grafptr->fronload = storptr->fronload; compload = storptr->datatab; /* Compute data offsets within save structure */ compsize = compload + grafptr->partnbr * sizeof (Gnum); frontab = compsize + grafptr->partnbr * sizeof (Gnum); parttab = frontab + grafptr->fronnbr * sizeof (Gnum); memCpy (grafptr->compload, compload, grafptr->partnbr * sizeof (Gnum)); memCpy (grafptr->compsize, compsize, grafptr->partnbr * sizeof (Gnum)); memCpy (grafptr->frontab, frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (grafptr->parttax + grafptr->s.baseval, parttab, grafptr->s.vertnbr * sizeof (Anum)); #ifdef SCOTCH_DEBUG_WGRAPH2 if (wgraphCheck (grafptr) != 0) errorPrint ("wgraphStoreUpdt: inconsistent graph data"); #endif /* SCOTCH_DEBUG_WGRAPH2 */ } scotch_6.0.9/src/libscotch/library_graph_base.c0000644000302600021200000000625613560013261022007 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_graph_base.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the source **/ /** graph handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 4.0 : from : 22 apr 2004 **/ /** to 22 apr 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "scotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the graph handling routines. */ /* */ /************************************/ /* This routine sets the base of the given ** graph to the given base value, and returns ** the old base value. ** It returns: ** - old base value : in all cases. */ SCOTCH_Num SCOTCH_graphBase ( SCOTCH_Graph * const grafptr, const SCOTCH_Num baseval) { return ((SCOTCH_Num) graphBase ((Graph * const) grafptr, (Gnum) baseval)); } scotch_6.0.9/src/libscotch/library_dgraph_order_tree_dist.c0000644000302600021200000001020713560013261024405 0ustar pelegrinpelegrin/* Copyright 2007,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_order_tree_dist.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted ordering distributed tree **/ /** building routine of the libSCOTCH **/ /** library. **/ /** **/ /** DATES : # Version 5.1 : from : 30 nov 2007 **/ /** to 30 nov 2007 **/ /** # Version 6.0 : from : 29 nov 2012 **/ /** to 29 nov 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "dgraph.h" #include "dorder.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the distributed ordering */ /* handling routines. */ /* */ /************************************/ /*+ This routine returns the number of *** distributed column blocks contained *** in the given distributed ordering. *** It returns: *** - >=0 : on success. *** - <0 : on error. +*/ SCOTCH_Num SCOTCH_dgraphOrderCblkDist ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr) /*+ Computed ordering +*/ { return (dorderCblkDist ((Dorder *) ordeptr)); } /*+ This routine fills the given distributed *** permutation array with the permutation *** stored in the given distributed ordering. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphOrderTreeDist ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to order +*/ const SCOTCH_Dordering * const ordeptr, /*+ Computed ordering +*/ SCOTCH_Num * const treeglbtab, /*+ Father array +*/ SCOTCH_Num * const sizeglbtab) /*+ Size array +*/ { return (dorderTreeDist ((Dorder *) ordeptr, (Dgraph *) grafptr, treeglbtab, sizeglbtab)); } scotch_6.0.9/src/libscotch/bdgraph_bipart_zr.h0000644000302600021200000000543613560005346021664 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bdgraph_bipart_zr.h **/ /** **/ /** AUTHOR : Jun-Ho HER (v6.0) **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** distributed bipartitioning module. **/ /** **/ /** DATES : # Version 5.1 : from : 10 sep 2007 **/ /** to 26 oct 2007 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int bdgraphBipartZr (Bdgraph * restrict const); scotch_6.0.9/src/libscotch/bgraph_bipart_zr.h0000644000302600021200000000603613560005346021515 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : bgraph_bipart_zr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a static mapper. **/ /** These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** bipartitioning module. **/ /** **/ /** DATES : # Version 3.2 : from : 23 aug 1996 **/ /** to 19 oct 1996 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 01 nov 2003 **/ /** to 01 nov 2003 **/ /** # Version 6.0 : from : 05 apr 2018 **/ /** to 05 apr 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int bgraphBipartZr (Bgraph * restrict const); scotch_6.0.9/src/libscotch/hmesh_check.c0000644000302600021200000001124213303015264020420 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo source **/ /** mesh functions. **/ /** **/ /** DATES : # Version 4.0 : from : 12 sep 2002 **/ /** to 11 may 2004 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "hmesh.h" /****************************************/ /* */ /* These routines handle source meshes. */ /* */ /****************************************/ /* This routine checks the consistency ** of the given halo mesh. ** It returns: ** - 0 : if halo mesh data are consistent. ** - !0 : on error. */ int hmeshCheck ( const Hmesh * const meshptr) { Gnum vnhlsum; if ((meshptr->vnohnnd < meshptr->m.vnodbas) || (meshptr->vnohnnd > meshptr->m.vnodnnd)) { errorPrint ("hmeshCheck: invalid halo node numbers"); return (1); } if (meshCheck (&meshptr->m) != 0) { errorPrint ("hmeshCheck: invalid non-halo mesh structure"); return (1); } if (meshptr->vehdtax != meshptr->m.vendtax) { Gnum veihnbr; Gnum velmnum; for (velmnum = meshptr->m.velmbas, veihnbr = 0; /* For all element vertices */ velmnum < meshptr->m.velmnnd; velmnum ++) { if ((meshptr->vehdtax[velmnum] < meshptr->m.verttax[velmnum]) || (meshptr->vehdtax[velmnum] > meshptr->m.vendtax[velmnum])) { errorPrint ("hmeshCheck: invalid non-halo end vertex array"); return (1); } if (meshptr->vehdtax[velmnum] == meshptr->m.verttax[velmnum]) veihnbr ++; } if (veihnbr != meshptr->veihnbr) { errorPrint ("hmeshCheck: invalid number of halo-isolated element vertices (1)"); return (1); } } else { if (meshptr->veihnbr != 0) { errorPrint ("hmeshCheck: invalid number of halo-isolated element vertices (2)"); return (1); } } if (meshptr->m.vnlotax == NULL) /* Recompute non-halo node vertex load sum */ vnhlsum = meshptr->vnohnnd - meshptr->m.vnodbas; else { Gnum vnodnum; for (vnodnum = meshptr->m.vnodbas, vnhlsum = 0; vnodnum < meshptr->vnohnnd; vnodnum ++) vnhlsum += meshptr->m.vnlotax[vnodnum]; } if (vnhlsum != meshptr->vnhlsum) { errorPrint ("hmeshCheck: invalid non-halo vertex load sum"); return (1); } return (0); } scotch_6.0.9/src/libscotch/library_dgraph_map.c0000644000302600021200000003660013560013261022012 0ustar pelegrinpelegrin/* Copyright 2008-2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_dgraph_map.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the API for the distri- **/ /** buted graph mapping routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 5.1 : from : 12 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 14 nov 2012 **/ /** to 25 apr 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "parser.h" #include "dgraph.h" #include "arch.h" #include "dmapping.h" #include "kdgraph.h" #include "kdgraph_map_st.h" #include "library_dmapping.h" #include "ptscotch.h" /************************************/ /* */ /* These routines are the C API for */ /* the parallel mapping routines. */ /* */ /************************************/ /*+ This routine initializes an API opaque *** mapping with respect to the given source *** graph and the locations of output parameters. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphMapInit ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to map +*/ SCOTCH_Dmapping * const mappptr, /*+ Mapping structure to initialize +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture used to map +*/ SCOTCH_Num * const termloctab) /*+ Mapping array +*/ { LibDmapping * restrict srcmappptr; #ifdef SCOTCH_DEBUG_LIBRARY1 if (sizeof (SCOTCH_Dmapping) < sizeof (LibDmapping)) { errorPrint (STRINGIFY (SCOTCH_dgraphMapInit) ": internal error"); return (1); } #endif /* SCOTCH_DEBUG_LIBRARY1 */ srcmappptr = (LibDmapping *) mappptr; srcmappptr->termloctab = ((termloctab == NULL) || ((void *) termloctab == (void *) grafptr)) ? NULL : termloctab; return (dmapInit (&srcmappptr->m, (Arch *) archptr)); } /*+ This routine frees an API mapping. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_dgraphMapExit ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Dmapping * const mappptr) { dmapExit (&((LibDmapping *) mappptr)->m); } /*+ This routine saves the contents of *** the given mapping to the given stream. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphMapSave ( const SCOTCH_Dgraph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Dmapping * const mappptr, /*+ Mapping to save +*/ FILE * const stream) /*+ Output stream +*/ { return (dmapSave (&((LibDmapping *) mappptr)->m, (Dgraph *) grafptr, stream)); } /*+ This routine computes a mapping *** of the API mapping structure with *** respect to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphMapCompute ( SCOTCH_Dgraph * const grafptr, /*+ Graph to map +*/ SCOTCH_Dmapping * const mappptr, /*+ Mapping to compute +*/ SCOTCH_Strat * const stratptr) /*+ Mapping strategy +*/ { Kdgraph mapgrafdat; /* Effective mapping graph */ Kdmapping mapmappdat; /* Initial mapping domain */ const Strat * mapstratptr; /* Pointer to mapping strategy */ LibDmapping * restrict srcmappptr; Dgraph * srcgrafptr; int o; srcgrafptr = (Dgraph *) grafptr; srcmappptr = (LibDmapping *) mappptr; #ifdef SCOTCH_DEBUG_DGRAPH2 if (dgraphCheck (srcgrafptr) != 0) { errorPrint (STRINGIFY (SCOTCH_dgraphMapCompute) ": invalid input graph"); return (1); } #endif /* SCOTCH_DEBUG_DGRAPH2 */ if (*((Strat **) stratptr) == NULL) { /* Set default mapping strategy if necessary */ ArchDom archdomnorg; archDomFrst (&srcmappptr->m.archdat, &archdomnorg); if (archVar (&srcmappptr->m.archdat)) SCOTCH_stratDgraphClusterBuild (stratptr, 0, srcgrafptr->procglbnbr, 1, 1.0, 0.05); else SCOTCH_stratDgraphMapBuild (stratptr, 0, srcgrafptr->procglbnbr, archDomSize (&srcmappptr->m.archdat, &archdomnorg), 0.05); } mapstratptr = *((Strat **) stratptr); if (mapstratptr->tabl != &kdgraphmapststratab) { errorPrint (STRINGIFY (SCOTCH_dgraphMapCompute) ": not a parallel graph mapping strategy"); return (1); } intRandInit (); /* Check that random number generator is initialized */ if (kdgraphInit (&mapgrafdat, srcgrafptr, &srcmappptr->m) != 0) return (1); mapmappdat.mappptr = &srcmappptr->m; if (((o = kdgraphMapSt (&mapgrafdat, &mapmappdat, mapstratptr)) == 0) && /* Perform mapping */ (srcmappptr->termloctab != NULL)) o = dmapTerm (&srcmappptr->m, &mapgrafdat.s, srcmappptr->termloctab); /* Use "&mapgrafdat.s" to take advantage of ghost arrays */ kdgraphExit (&mapgrafdat); return (o); } /*+ This routine computes a mapping of the *** given graph structure onto the given *** target architecture with respect to the *** given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphMap ( SCOTCH_Dgraph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Arch * const archptr, /*+ Target architecture +*/ SCOTCH_Strat * const stratptr, /*+ Mapping strategy +*/ SCOTCH_Num * const termloctab) /*+ Mapping array +*/ { SCOTCH_Dmapping mappdat; int o; SCOTCH_dgraphMapInit (grafptr, &mappdat, archptr, termloctab); o = SCOTCH_dgraphMapCompute (grafptr, &mappdat, stratptr); SCOTCH_dgraphMapExit (grafptr, &mappdat); return (o); } /*+ This routine computes a partition of *** the given graph structure with respect *** to the given strategy. *** It returns: *** - 0 : on success. *** - !0 : on error. +*/ int SCOTCH_dgraphPart ( SCOTCH_Dgraph * const grafptr, /*+ Graph to map +*/ const SCOTCH_Num partnbr, /*+ Number of parts +*/ SCOTCH_Strat * const stratptr, /*+ Mapping strategy +*/ SCOTCH_Num * const termloctab) /*+ Mapping array +*/ { SCOTCH_Arch archdat; int o; SCOTCH_archInit (&archdat); SCOTCH_archCmplt (&archdat, partnbr); o = SCOTCH_dgraphMap (grafptr, &archdat, stratptr, termloctab); SCOTCH_archExit (&archdat); return (o); } /*+ This routine parses the given *** mapping strategy. *** It returns: *** - 0 : if string successfully scanned. *** - !0 : on error. +*/ int SCOTCH_stratDgraphMap ( SCOTCH_Strat * const stratptr, const char * const string) { if (*((Strat **) stratptr) != NULL) stratExit (*((Strat **) stratptr)); if ((*((Strat **) stratptr) = stratInit (&kdgraphmapststratab, string)) == NULL) { errorPrint (STRINGIFY (SCOTCH_stratDgraphMap) ": error in parallel mapping strategy"); return (1); } return (0); } /*+ This routine provides predefined *** mapping strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratDgraphMapBuild ( SCOTCH_Strat * const stratptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num procnbr, /*+ Number of processes for running +*/ const SCOTCH_Num partnbr, /*+ Number of expected parts +*/ const double kbalval) /*+ Desired imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[32]; char kbaltab[32]; char verttab[32]; Gnum vertnbr; char * difpptr; char * difsptr; char * exapptr; char * exasptr; char * muceptr; sprintf (kbaltab, "%lf", kbalval); sprintf (bbaltab, "%lf", kbalval); vertnbr = MAX (2000 * procnbr, 10000); vertnbr = MIN (vertnbr, 100000); sprintf (verttab, GNUMSTRING, vertnbr); strcpy (bufftab, "r{bal=,sep=m{vert=,asc=b{bnd=,org=},low=q{strat=(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}})},seq=q{strat=(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}})}},seq=r{bal=,poli=S,sep=(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}})}}"); stringSubst (bufftab, "", ((flagval & SCOTCH_STRATSPEED) != 0) ? "" : "m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}}|"); if ((flagval & SCOTCH_STRATSCALABILITY) != 0) muceptr = "/(edge<10000000)?q{strat=f};"; /* Multi-centralization */ else muceptr = "q{strat=f}"; if ((flagval & SCOTCH_STRATBALANCE) != 0) { exapptr = "x{bal=0}"; exasptr = "f{bal=0}"; } else { exapptr = "x{bal=}"; /* Parallel exactifier */ exasptr = ""; } if ((flagval & SCOTCH_STRATSAFETY) != 0) { difpptr = ""; difsptr = ""; } else { difpptr = "(d{pass=40}|)"; difsptr = "(d{pass=40}|)"; } stringSubst (bufftab, "", muceptr); stringSubst (bufftab, "", exapptr); stringSubst (bufftab, "", exasptr); stringSubst (bufftab, "", difpptr); stringSubst (bufftab, "", difsptr); stringSubst (bufftab, "", bbaltab); stringSubst (bufftab, "", kbaltab); stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphMap (stratptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratDgraphMapBuild) ": error in parallel mapping strategy"); return (1); } return (0); } /*+ This routine provides predefined *** clustering strategies. *** It returns: *** - 0 : if string successfully initialized. *** - !0 : on error. +*/ int SCOTCH_stratDgraphClusterBuild ( SCOTCH_Strat * const stratptr, /*+ Strategy to create +*/ const SCOTCH_Num flagval, /*+ Desired characteristics +*/ const SCOTCH_Num procnbr, /*+ Number of processes for running +*/ const SCOTCH_Num pwgtval, /*+ Threshold part load +*/ const double densval, /*+ Threshold density value +*/ const double bbalval) /*+ Maximum imbalance ratio +*/ { char bufftab[8192]; /* Should be enough */ char bbaltab[32]; char denstab[32]; char pwgttab[32]; char verttab[32]; Gnum vertnbr; char * difpptr; char * difsptr; char * exapptr; char * exasptr; char * muceptr; sprintf (bbaltab, "%lf", bbalval); sprintf (denstab, "%lf", densval); sprintf (pwgttab, GNUMSTRING, pwgtval); vertnbr = MAX (2000 * procnbr, 10000); vertnbr = MIN (vertnbr, 100000); sprintf (verttab, GNUMSTRING, vertnbr); strcpy (bufftab, "r{sep=/((load>)&!(edge>vert**(vert-1)))?m{vert=,asc=b{bnd=,org=},low=q{strat=(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}})},seq=q{strat=/((load>)&!(edge>vert**(vert-1)))?(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}});}};,seq=r{sep=/((load>)&!(edge>vert**(vert-1)))?(m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}});}}"); stringSubst (bufftab, "", ((flagval & SCOTCH_STRATSPEED) != 0) ? "" : "m{vert=80,low=h{pass=10}f{bal=,move=80},asc=b{bnd=f{bal=,move=80},org=f{bal=,move=80}}}|"); if ((flagval & SCOTCH_STRATSCALABILITY) != 0) muceptr = "/(edge<10000000)?q{strat=f};"; /* Multi-centralization */ else muceptr = "q{strat=f}"; if ((flagval & SCOTCH_STRATBALANCE) != 0) { exapptr = "x{bal=0}"; exasptr = "f{bal=0}"; } else { exapptr = "x{bal=}"; /* Parallel exactifier */ exasptr = ""; } if ((flagval & SCOTCH_STRATSAFETY) != 0) { difpptr = ""; difsptr = ""; } else { difpptr = "(d{pass=40}|)"; difsptr = "(d{pass=40}|)"; } stringSubst (bufftab, "", muceptr); stringSubst (bufftab, "", exapptr); stringSubst (bufftab, "", exasptr); stringSubst (bufftab, "", difpptr); stringSubst (bufftab, "", difsptr); stringSubst (bufftab, "", bbaltab); stringSubst (bufftab, "", denstab); stringSubst (bufftab, "", pwgttab); stringSubst (bufftab, "", verttab); if (SCOTCH_stratDgraphMap (stratptr, bufftab) != 0) { errorPrint (STRINGIFY (SCOTCH_stratDgraphClusterBuild) ": error in parallel mapping strategy"); return (1); } return (0); } scotch_6.0.9/src/libscotch/vdgraph_separate_zr.h0000644000302600021200000000532613465315041022231 0ustar pelegrinpelegrin/* Copyright 2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph_separate_zr.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the move-all-to-first-subdomain **/ /** distributed separation method. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 07 feb 2006 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int vdgraphSeparateZr (Vdgraph * const); scotch_6.0.9/src/libscotch/dgraph.c0000644000302600021200000002016113560005435017430 0ustar pelegrinpelegrin/* Copyright 2007,2010,2012 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Francois CHATENET (P0.0) **/ /** Sebastien FOUCAULT (P0.0) **/ /** Nicolas GICQUEL (P0.1) **/ /** Jerome LACOSTE (P0.1) **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : This module contains the distributed **/ /** graph data structure handling **/ /** routines. **/ /** **/ /** DATES : # Version P0.0 : from : 01 apr 1997 **/ /** to 01 apr 1997 **/ /** # Version P0.1 : from : 12 apr 1998 **/ /** to 20 jun 1998 **/ /** # Version 5.0 : from : 16 feb 2005 **/ /** to : 17 jul 2008 **/ /** # Version 5.1 : from : 21 jun 2008 **/ /** to : 30 jul 2010 **/ /** # Version 6.0 : from : 12 sep 2012 **/ /** to : 12 sep 2012 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGRAPH #include "module.h" #include "common.h" #include "dgraph.h" /*************************************/ /* */ /* These routines handle distributed */ /* source graphs. */ /* */ /*************************************/ /* This routine initializes a distributed graph ** structure. In order to avoid collective ** communication whenever possible, the allocation ** of send and receive index arrays is not performed ** in the routine itself, but rather delegated to ** subsequent routines such as dgraphBuild. ** However, these arrays will not be freed by ** dgraphFree, but by dgraphExit. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int dgraphInit ( Dgraph * restrict const grafptr, /* Distributed graph structure */ MPI_Comm proccomm) /* Communicator to be used for all communications */ { memSet (grafptr, 0, sizeof (Dgraph)); /* Clear public and private graph fields */ grafptr->proccomm = proccomm; /* Set private fields */ MPI_Comm_size (proccomm, &grafptr->procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &grafptr->proclocnum); return (0); } /* This routine frees the public and private data ** of the given distributed graph, but not its ** communicator. ** Private data could have been kept and freed only ** in dgraphExit(). Yet, freeing it along with the ** graph public data is a way to avoid memory ** fragmentation. Moreover, it allows to use compact ** private data if some graphs are known not to have ** holes. ** It is not a collective routine, as no communication ** is needed to perform the freeing of memory structures. ** It returns: ** - VOID : in all cases. */ static void dgraphFree2 ( Dgraph * restrict const grafptr) { if ((grafptr->flagval & DGRAPHFREETABS) != 0) { /* If local arrays must be freed */ if (grafptr->vertloctax != NULL) memFree (grafptr->vertloctax + grafptr->baseval); if ((grafptr->flagval & DGRAPHVERTGROUP) == 0) { /* If vertex arrays not grouped */ if (grafptr->vendloctax != (grafptr->vertloctax + 1)) memFree (grafptr->vendloctax + grafptr->baseval); if (grafptr->veloloctax != NULL) memFree (grafptr->veloloctax + grafptr->baseval); if (grafptr->vnumloctax != NULL) memFree (grafptr->vnumloctax + grafptr->baseval); if (grafptr->vlblloctax != NULL) memFree (grafptr->vlblloctax + grafptr->baseval); } if (grafptr->edgeloctax != NULL) memFree (grafptr->edgeloctax + grafptr->baseval); if ((grafptr->flagval & DGRAPHEDGEGROUP) == 0) { /* If edge arrays not grouped */ if (grafptr->edloloctax != NULL) memFree (grafptr->edloloctax + grafptr->baseval); } } if ((grafptr->flagval & DGRAPHFREEPSID) != 0) { /* If process send arrays must be freed */ if (grafptr->procsidtab != NULL) memFree (grafptr->procsidtab); } if ((grafptr->flagval & DGRAPHFREEEDGEGST) != 0) { /* If ghost array must be freed */ if (grafptr->edgegsttax != NULL) memFree (grafptr->edgegsttax + grafptr->baseval); } if ((grafptr->flagval & DGRAPHFREEPRIV) != 0) /* If private data has to be freed */ if (grafptr->procdsptab != NULL) memFree (grafptr->procdsptab); /* Free group leader of graph private data */ } void dgraphFree ( Dgraph * restrict const grafptr) { DgraphFlag flagval; MPI_Comm proccomm; /* Data for temporarily saving private data */ int procglbnbr; int proclocnum; dgraphFree2 (grafptr); /* Free all user fields */ flagval = grafptr->flagval & DGRAPHFREECOMM; proccomm = grafptr->proccomm; /* Save private fields only */ procglbnbr = grafptr->procglbnbr; proclocnum = grafptr->proclocnum; memSet (grafptr, 0, sizeof (Dgraph)); /* Reset graph structure */ grafptr->flagval = flagval; /* Restore private fields */ grafptr->proccomm = proccomm; grafptr->procglbnbr = procglbnbr; grafptr->proclocnum = proclocnum; return; } /* This routine destroys a distributed graph structure. ** It is not a collective routine, as no communication ** is needed to perform the freeing of memory structures. ** Private data are always destroyed. If this is not ** wanted, use dgraphFree() instead. ** It returns: ** - VOID : in all cases. */ void dgraphExit ( Dgraph * restrict const grafptr) { if ((grafptr->flagval & DGRAPHFREECOMM) != 0) /* If communicator has to be freed */ MPI_Comm_free (&grafptr->proccomm); /* Free it */ dgraphFree2 (grafptr); #ifdef SCOTCH_DEBUG_DGRAPH1 memSet (grafptr, 0, sizeof (Dgraph)); #endif /* SCOTCH_DEBUG_DGRAPH1 */ } scotch_6.0.9/src/libscotch/vdgraph.h0000644000302600021200000001304713465315041017631 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for distributed vertex separation **/ /** routines. **/ /** **/ /** DATES : # Version 5.0 : from : 06 feb 2006 **/ /** to : 29 apr 2006 **/ /** # Version 5.1 : from : 07 nov 2007 **/ /** to : 04 nov 2010 **/ /** # Version 6.0 : from : 06 jun 2018 **/ /** to 06 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Active graph structure. +*/ typedef struct Vdgraph_ { Dgraph s; /*+ Source distributed graph +*/ GraphPart * partgsttax; /*+ Based local part array: 0,1: part; 2: separator +*/ Gnum compglbloaddlt; /*+ Load difference between both parts +*/ Gnum compglbload[3]; /*+ Global loads of both parts and of separator; TRICK: before compglbsize[] +*/ Gnum compglbsize[3]; /*+ Number of vertices in parts; compglbsize[2] is fronglbnbr, the separator +*/ Gnum complocload[3]; /*+ Local loads of both parts and of separator; TRICK: before complocsize[] +*/ Gnum complocsize[3]; /*+ Number of vertices in parts; complocsize[2] is fronlocnbr, the separator +*/ Gnum * fronloctab; /*+ Array of local frontier vertex numbers +*/ Gnum levlnum; /*+ Nested dissection or coarsening level +*/ } Vdgraph; /*+ The graph separator storing structure. +*/ typedef struct VdgraphStore_ { Gnum fronglbnbr; /*+ Number of frontier nodes +*/ Gnum compglbloaddlt; /*+ Difference from the average +*/ Gnum compglbload[2]; /*+ Load in both parts +*/ Gnum compglbsize0; /*+ Number of vertices in part 0 +*/ Gnum complocsize0; /*+ Number of vertices in parts +*/ Gnum fronlocnbr; /*+ Number of local frontier vertices +*/ byte * datatab; /*+ Variable-sized data array +*/ } VdgraphStore; /* ** The function prototypes. */ int vdgraphInit (Vdgraph * restrict const, MPI_Comm); void vdgraphExit (Vdgraph * const); void vdgraphZero (Vdgraph * const); int vdgraphCheck (const Vdgraph * const); #ifdef VGRAPH_H int vdgraphGatherAll (const Vdgraph * restrict const, Vgraph * restrict); #endif /* VGRAPH_H */ int vdgraphStoreInit (const Vdgraph * const, VdgraphStore * const); void vdgraphStoreExit (VdgraphStore * const); void vdgraphStoreSave (const Vdgraph * const , VdgraphStore * const); void vdgraphStoreUpdt (Vdgraph * const, const VdgraphStore * const); scotch_6.0.9/src/libscotch/vgraph_store.c0000644000302600021200000001431313470115365020674 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_store.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the save data **/ /** structure handling routines for separa- **/ /** tion graphs. **/ /** **/ /** DATES : # Version 3.3 : from : 17 oct 1998 **/ /** to 17 oct 1998 **/ /** # Version 3.4 : from : 11 dec 2001 **/ /** to : 11 dec 2001 **/ /** # Version 4.0 : from : 01 jan 2002 **/ /** to : 06 jan 2002 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VGRAPH_STORE #include "module.h" #include "common.h" #include "graph.h" #include "vgraph.h" /**********************************/ /* */ /* Store graph handling routines. */ /* */ /**********************************/ /* This routine builds a save structure ** for the given active graph. ** It returns: ** - 0 : if allocation succeeded. ** - !0 : on error. */ int vgraphStoreInit ( const Vgraph * restrict const grafptr, VgraphStore * restrict const storptr) { Gnum savsize; savsize = grafptr->s.vertnbr * (sizeof (GraphPart) + sizeof (Gnum)); /* Compute size for frontier and part arrays */ if ((storptr->datatab = (byte *) memAlloc (savsize)) == NULL) { /* Allocate save structure */ errorPrint ("vgraphStoreInit: out of memory"); return (1); } return (0); } /* This routine frees a save structure. ** It returns: ** - VOID : in all cases. */ void vgraphStoreExit ( VgraphStore * const storptr) { memFree (storptr->datatab); #ifdef SCOTCH_DEBUG_VGRAPH2 storptr->datatab = NULL; #endif /* SCOTCH_DEBUG_VGRAPH2 */ } /* This routine saves partition data from the ** given active graph to the given save structure. ** It returns: ** - VOID : in all cases. */ void vgraphStoreSave ( const Vgraph * const grafptr, VgraphStore * const storptr) { byte * parttab; /* Pointer to part data save area */ byte * frontab; /* Pointer to frontier data save area */ storptr->fronnbr = grafptr->fronnbr; /* Save partition parameters */ storptr->comploaddlt = grafptr->comploaddlt; storptr->compload[0] = grafptr->compload[0]; storptr->compload[1] = grafptr->compload[1]; storptr->compsize0 = grafptr->compsize[0]; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + grafptr->fronnbr * sizeof (Gnum); memCpy (frontab, grafptr->frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (parttab, grafptr->parttax + grafptr->s.baseval, grafptr->s.vertnbr * sizeof (GraphPart)); } /* This routine updates partition data of the ** given active graph, using the given save graph. ** It returns: ** - VOID : in all cases. */ void vgraphStoreUpdt ( Vgraph * const grafptr, const VgraphStore * const storptr) { byte * frontab; /* Pointer to frontier data save area */ byte * parttab; /* Pointer to part data save area */ grafptr->compload[0] = storptr->compload[0]; /* Load partition parameters */ grafptr->compload[1] = storptr->compload[1]; grafptr->compload[2] = grafptr->s.velosum - (storptr->compload[0] + storptr->compload[1]); grafptr->comploaddlt = storptr->comploaddlt; grafptr->compsize[0] = storptr->compsize0; grafptr->compsize[1] = grafptr->s.vertnbr - (storptr->compsize0 + storptr->fronnbr); grafptr->fronnbr = storptr->fronnbr; frontab = storptr->datatab; /* Compute data offsets within save structure */ parttab = frontab + grafptr->fronnbr * sizeof (Gnum); memCpy (grafptr->frontab, frontab, grafptr->fronnbr * sizeof (Gnum)); memCpy (grafptr->parttax + grafptr->s.baseval, parttab, grafptr->s.vertnbr * sizeof (GraphPart)); #ifdef SCOTCH_DEBUG_VGRAPH2 if (vgraphCheck (grafptr) != 0) errorPrint ("vgraphStoreUpdt: inconsistent graph data"); #endif /* SCOTCH_DEBUG_VGRAPH2 */ } scotch_6.0.9/src/libscotch/parser_ll.l0000644000302600021200000002234313470115365020167 0ustar pelegrinpelegrin%{ /* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : parser_ll.l **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module is the lexical parser **/ /** which processes strategy strings. **/ /** **/ /** DATES : # Version 3.1 : from : 07 nov 1995 **/ /** to 23 aug 1996 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to 05 jun 1997 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 11 sep 2001 **/ /** # Version 4.0 : from : 20 dec 2001 **/ /** to 23 dec 2001 **/ /** # Version 5.1 : from : 09 jun 2009 **/ /** to 24 jul 2011 **/ /** **/ /** NOTES : # In order for flex to read its input **/ /** with getc() instead of fread, we set **/ /** YY_ALWAYS_INTERACTIVE to 1. This may **/ /** not always work with future releases. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define PARSER_LL #include "module.h" #include "common.h" #undef INTEGER /* In case someone defined them */ #undef DOUBLE #include "parser.h" #include "parser_ll.h" #include "parser_yy.h" #include "parser_ly.h" /*+ Definitions produced by yacc +*/ /* Assume no interactive parsing. */ #ifdef X_OSDOS /* Available only with MKS LEX */ #ifdef YY_INTERACTIVE #undef YY_INTERACTIVE #endif /* YY_INTERACTIVE */ #define YY_INTERACTIVE 0 #endif /* X_OSDOS */ #ifdef FLEX_SCANNER #define YY_ALWAYS_INTERACTIVE 1 /* Set the parser as interactive and read one char at a time */ #define YY_INPUT(buf,result,max_size) { int c = stratParserInput (); result = (c == 0) ? YY_NULL : ((buf)[0] = c, 1); } #else /* FLEX_SCANNER */ #undef getc /* Redirect I/O functions */ #define getc yygetc #undef yygetc #define yygetc(stream) stratParserInput () #endif /* FLEX_SCANNER */ #define YY_NO_UNPUT /* No prototype for yyunput as not defined */ #define YY_SKIP_YYWRAP /* No prototype for yywrap as defined as macro */ #define yywrap() (1) /* Always return end-of-file on end-of-string */ /* ** The static variables. */ static const char * stratparserstringptr; /* Pointer to the string to parse */ %} IDENT [A-Za-z][0-9A-Za-z]* INTEGER [0-9]+ FLOAT [0-9]+(\.[0-9]+)?([Ee][-+]?[0-9]+)? STRING \"[^\"]*\" %s lstrat %s lparam %s lparamcase %s lparamdouble %s lparamint %s lparamstring %s ltest %% [0-9A-Za-z] { strncpy (yylval.STRING, yytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (METHODNAME); } {IDENT} { strncpy (yylval.STRING, yytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (PARAMNAME); } [0-9A-Za-z] { yylval.CASEVAL = yytext[0]; return (VALCASE); } ({FLOAT}|{INTEGER}) { yylval.DOUBLE = atof (yytext); return (VALDOUBLE); } {INTEGER} { yylval.INTEGER = (INT) atol (yytext); return (VALINT); } {FLOAT} { yylval.INTEGER = (INT) atof (yytext); /* FLOAT is put after so that INTEGER can be matched */ return (VALINT); } {STRING} { yytext[yyleng - 1] = '\0'; /* Remove the heading and trailing \" */ strncpy (yylval.STRING, yytext + 1, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (VALSTRING); } {INTEGER} { yylval.INTEGER = (INT) atol (yytext); return (VALINT); } {FLOAT} { yylval.DOUBLE = atof (yytext); return (VALDOUBLE); } {IDENT} { strncpy (yylval.STRING, yytext, PARSERSTRINGLEN); yylval.STRING[PARSERSTRINGLEN - 1] = '\0'; return (PARAMNAME); } [ \t\n]* ; . return (yytext[0]); %% /*******************************************/ /* */ /* These routines handle data input to the */ /* lexical analyzer. */ /* */ /*******************************************/ /* This routine initializes the ** lexical analyzer. ** It returns: ** - VOID : in all cases. */ void stratParserInit ( const char * const string) /*+ Strategy string to parse +*/ { #ifdef FLEX_SCANNER yyrestart (yyin); /* (Re-)initialize the parser */ #endif /* FLEX_SCANNER */ stratParserSelect (VALSTRAT); /* Begin with a strategy */ stratparserstringptr = string; /* Point to beginning of string */ } /* This routine reads a single character ** from the input string. ** It returns: ** - 0 : if end of string reached. ** - !0 : character from string. */ static int stratParserInput () { if (*stratparserstringptr == '\0') /* If end-of-string reached */ return (0); /* Return end-of-file token */ else /* Else return the character */ return ((int) (unsigned char) *stratparserstringptr ++); } /* This routine returns the pointer to the ** remaining part of the string. */ const char * stratParserRemain () { return (stratparserstringptr); } /* This routine selects the sub-parser ** to parse the input. ** It returns: ** - VOID : in all cases. */ void stratParserSelect ( unsigned int type) { switch (type) { case VALCASE : BEGIN lparamcase; break; case VALDOUBLE : BEGIN lparamdouble; break; case VALINT : BEGIN lparamint; break; case VALSTRING : BEGIN lparamstring; break; case VALPARAM : BEGIN lparam; break; case VALSTRAT : BEGIN lstrat; break; case VALTEST : BEGIN ltest; break; } } scotch_6.0.9/src/libscotch/fibo.h0000644000302600021200000003440413465315041017115 0ustar pelegrinpelegrin/* Copyright 2010,2011,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : fibo.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the definitions of **/ /** the generic Fibonacci trees. **/ /** **/ /** DATES : # Version 5.1 : from : 01 may 2010 **/ /** to 12 may 2010 **/ /** # Version 6.0 : from : 22 oct 2011 **/ /** to 07 jun 2018 **/ /** **/ /** NOTES : # Since this module is to be used as **/ /** the gain keeping data structure for **/ /** local optimization algorithms, the **/ /** computation of the best node needs **/ /** only to be done when actually picking **/ /** the vertex, while many insertions and **/ /** deletions (neighbor vertices) can **/ /** take place in the mean time. This is **/ /** why this data structure does not keep **/ /** track of the best node, as most **/ /** implementations do. **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Degree range. +*/ #ifndef FIBO_DEGRMAX #define FIBO_DEGRMAX (sizeof (INT) << 3) /* Assume maximum degree derives from an integer range */ #endif /* FIBO_DEGRMAX */ /* ** The type and structure definitions. */ /* The doubly linked list structure. */ typedef struct FiboLink_ { struct FiboNode_ * prevptr; /*+ Pointer to previous sibling element +*/ struct FiboNode_ * nextptr; /*+ Pointer to next sibling element +*/ } FiboLink; /* The tree node data structure. The deflval variable merges degree and flag variables. The degree of a node is smaller than "bitsizeof (INT)", so it can hold on an "int". The flag value is stored in the lowest bit of the value. */ typedef struct FiboNode_ { struct FiboNode_ * pareptr; /*+ Pointer to parent element, if any +*/ struct FiboNode_ * chldptr; /*+ Pointer to first child element, if any +*/ FiboLink linkdat; /*+ Pointers to sibling elements +*/ int deflval; /*+ Lowest bit: flag value; other bits: degree value +*/ } FiboNode; /* The tree data structure. The fake dummy node aims at handling root node insertion without any test. This is important as many insertions have to be performed. */ typedef struct FiboHeap_ { FiboNode rootdat; /*+ Dummy node for fast root insertion +*/ FiboNode ** restrict degrtab; /*+ Consolidation array of size "bitsizeof (INT)" +*/ int (* cmpfptr) (const FiboNode * const, const FiboNode * const); /*+ Comparison routine +*/ } FiboHeap; /* ** The marco definitions. */ #define fiboHeapLinkAfter(o,n) do { \ FiboNode * nextptr; \ nextptr = (o)->linkdat.nextptr; \ (n)->linkdat.nextptr = nextptr; \ (n)->linkdat.prevptr = (o); \ nextptr->linkdat.prevptr = (n); \ (o)->linkdat.nextptr = (n); \ } while (0) #define fiboHeapUnlink(n) do { \ (n)->linkdat.prevptr->linkdat.nextptr = (n)->linkdat.nextptr; \ (n)->linkdat.nextptr->linkdat.prevptr = (n)->linkdat.prevptr; \ } while (0) #define fiboHeapAddMacro(t,n) do { \ (n)->pareptr = NULL; \ (n)->chldptr = NULL; \ (n)->deflval = 0; \ fiboHeapLinkAfter (&((t)->rootdat), (n)); \ } while (0) #define fiboHeapMinMacro(t) (fiboHeapConsolidate (t)) #define fiboHeapMoveToRoot(t,n,p) do { \ FiboNode * rghtptr; \ int deflval; \ rghtptr = (n)->linkdat.nextptr; \ fiboHeapUnlink (n); \ (n)->pareptr = NULL; \ (n)->deflval &= ~1; \ deflval = (p)->deflval - 2; \ (p)->deflval = deflval; \ (p)->chldptr = (deflval <= 1) ? NULL : rghtptr; \ fiboHeapLinkAfter (&((t)->rootdat), (n)); \ } while (0) #define fiboHeapDecreaseMacro(t,n) do { \ FiboNode * pareptr; \ pareptr = (n)->pareptr; \ if ((pareptr != NULL) && \ (treeptr->cmpfptr (nodeptr, pareptr) < 0)) { \ FiboNode * gdpaptr; \ fiboHeapMoveToRoot (treeptr, nodeptr, pareptr); \ gdpaptr = pareptr->pareptr; \ while (gdpaptr != NULL) { \ if ((pareptr->deflval & 1) == 0) { \ pareptr->deflval |= 1; \ break; \ } \ fiboHeapMoveToRoot (treeptr, pareptr, gdpaptr); \ pareptr = gdpaptr; \ gdpaptr = gdpaptr->pareptr; \ } \ } \ } while (0) #define fiboHeapCutChildren(t,n) do { \ FiboNode * chldptr; \ chldptr = (n)->chldptr; \ if (chldptr != NULL) { \ FiboNode * cendptr; \ cendptr = chldptr; \ do { \ FiboNode * nextptr; \ nextptr = chldptr->linkdat.nextptr; \ chldptr->pareptr = NULL; \ fiboHeapLinkAfter (&((t)->rootdat), chldptr); \ chldptr = nextptr; \ } while (chldptr != cendptr); \ } \ } while (0) #define fiboHeapDelMacro(t,n) do { \ FiboNode * pareptr; \ FiboNode * rghtptr; \ pareptr = (n)->pareptr; \ fiboHeapUnlink (n); \ fiboHeapCutChildren ((t), (n)); \ if (pareptr == NULL) \ break; \ rghtptr = (n)->linkdat.nextptr; \ while (1) { \ FiboNode * gdpaptr; \ int deflval; \ deflval = pareptr->deflval - 2; \ pareptr->deflval = deflval | 1; \ gdpaptr = pareptr->pareptr; \ pareptr->chldptr = (deflval <= 1) ? NULL : rghtptr; \ if (((deflval & 1) == 0) || (gdpaptr == NULL)) \ break; \ rghtptr = pareptr->linkdat.nextptr; \ fiboHeapUnlink (pareptr); \ pareptr->pareptr = NULL; \ fiboHeapLinkAfter (&((t)->rootdat), pareptr); \ pareptr = gdpaptr; \ } \ } while (0) /* ** The function prototypes. */ #define fiboHeapAddIsMacro #define fiboHeapMinIsMacro int fiboHeapInit (FiboHeap * const, int (*) (const FiboNode * const, const FiboNode * const)); void fiboHeapExit (FiboHeap * const); void fiboHeapFree (FiboHeap * const); FiboNode * fiboHeapConsolidate (FiboHeap * const); #ifndef fiboHeapAddIsMacro void fiboHeapAdd (FiboHeap * const, FiboNode * const); #else /* fiboHeapAddIsMacro */ #define fiboHeapAdd fiboHeapAddMacro #endif /* fiboHeapAddIsMacro */ #ifndef fiboHeapDecreaseIsMacro void fiboHeapDecrease (FiboHeap * const, FiboNode * const); #else /* fiboHeapDecreaseIsMacro */ #define fiboHeapDecrease fiboHeapDecreaseMacro #endif /* fiboHeapDecreaseIsMacro */ #ifndef fiboHeapDelIsMacro void fiboHeapDel (FiboHeap * const, FiboNode * const); #else /* fiboHeapDelIsMacro */ #define fiboHeapDel fiboHeapDelMacro #endif /* fiboHeapDelIsMacro */ #ifndef fiboHeapMinIsMacro FiboNode * fiboHeapMin (FiboHeap * const); #else /* fiboHeapMinIsMacro */ #define fiboHeapMin fiboHeapMinMacro #endif /* fiboHeapMinIsMacro */ #ifdef SCOTCH_DEBUG_FIBO3 #ifdef FIBO static int fiboHeapCheck2 (const FiboNode * const); #endif /* FIBO */ int fiboHeapCheck (const FiboHeap * const); #endif /* SCOTCH_DEBUG_FIBO3 */ scotch_6.0.9/src/libscotch/arch_build2.c0000644000302600021200000007634413560005302020350 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : arch_build2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module builds a type-2 **/ /** decomposition-described architecture **/ /** from a source graph. **/ /** **/ /** DATES : # Version 6.0 : from : 02 may 2015 **/ /** to 22 feb 2018 **/ /** **/ /** NOTES : # The code of the main routine derives **/ /** from that of archSubArchBuild(). **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ARCH_DECO2 #define ARCH_BUILD2 #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "arch_sub.h" #include "arch_deco2.h" #include "graph_coarsen.h" #include "arch_build2.h" /***********************************/ /* */ /* The matching handling routines. */ /* */ /***********************************/ /* This routine frees the matching data ** structure. ** It returns: ** - void : in all cases. */ static void archDeco2BuildMatchExit ( ArchDeco2BuildMatch * restrict const matcptr) { ArchDeco2BuildLevl * lewgtab; ArchDeco2Levl * levltab; if ((lewgtab = matcptr->lewgtab) != NULL) { ArchDeco2BuildLevl * lewgptr; for (lewgptr = lewgtab + matcptr->levlnum; lewgptr >= lewgtab; lewgptr --) { Gnum * edwgtab; if ((edwgtab = lewgptr->edwgtab) != NULL) memFree (edwgtab); /* Free group leader */ } memFree (lewgtab); } if ((levltab = matcptr->levltab) != NULL) { ArchDeco2Levl * levlptr; for (levlptr = levltab + matcptr->levlnum; levlptr >= levltab; levlptr --) graphExit (&levlptr->grafdat); memFree (levltab); } memFree (matcptr->multtab); /* Free group leader */ memFree (matcptr->hashtab); } /* This routine initializes the matching ** data structure according to the original ** graph to be coarsened. ** It returns: ** - 0 : if the data structure has been ** successfully initialized. ** - !0 : on error. */ static int archDeco2BuildMatchInit ( ArchDeco2BuildMatch * restrict const matcptr, const Graph * restrict const grafptr) { Gnum verttmp; Gnum levlmax; /* Estimated upper bound on number of coarsening levels */ Gnum multnbr; Gnum hashmax; Gnum hashsiz; const Gnum vertnbr = grafptr->vertnbr; #ifdef SCOTCH_DEBUG_ARCH1 if (sizeof (ArchCoarsenMulti) != sizeof (GraphCoarsenMulti)) { errorPrint ("archDeco2BuildMatchInit: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ for (hashsiz = 32, hashmax = grafptr->degrmax * 4; /* Compute size of hash table */ hashsiz < hashmax; hashsiz *= 2) ; matcptr->hashsiz = hashsiz; if ((matcptr->hashtab = memAlloc (hashsiz * sizeof (ArchDeco2BuildHash))) == NULL) { errorPrint ("archDeco2BuildMatchInit: out of memory (1)"); return (1); } multnbr = vertnbr - 1; /* In case graph is star-like, only one matching will take place */ if (memAllocGroup ((void **) (void *) &matcptr->multtab, (size_t) (multnbr * sizeof (ArchCoarsenMulti)), &matcptr->ficotab, (size_t) (vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("archDeco2BuildMatchInit: out of memory (2)"); memFree (matcptr->hashtab); return (1); } for (verttmp = vertnbr, levlmax = 1; verttmp != 0; verttmp >>= 1, levlmax ++) ; levlmax *= 2; /* Compute estimated upper bound on number of coarsening levels */ #ifdef SCOTCH_DEBUG_ARCH2 levlmax = 1; /* Set levlmax to a small value to test reallocation */ #endif /* SCOTCH_DEBUG_ARCH2 */ matcptr->levltab = NULL; /* In case of error */ matcptr->levlmax = levlmax; matcptr->levlnum = 0; if ((matcptr->lewgtab = memAlloc (levlmax * sizeof (ArchDeco2BuildLevl))) == NULL) { errorPrint ("archDeco2BuildMatchInit: out of memory (3)"); archDeco2BuildMatchExit (matcptr); return (1); } matcptr->lewgtab[0].edwgtab = NULL; /* TRICK: in case of error */ matcptr->lewgtab[0].vewgtab = NULL; /* No vertex traversal cost at level 0 */ matcptr->lewgtab[0].vewgsum = 0; matcptr->lewgtab[0].edwgsum = grafptr->edlosum; /* Assume graph has no edge weights */ if ((matcptr->levltab = memAlloc (levlmax * sizeof (ArchDeco2Levl))) == NULL) { errorPrint ("archDeco2BuildMatchInit: out of memory (4)"); archDeco2BuildMatchExit (matcptr); return (1); } if (graphClone (grafptr, &matcptr->levltab[0].grafdat) != 0) { /* Clone original graph in level 0 */ errorPrint ("archDeco2BuildMatchInit: cannot create clone graph"); archDeco2BuildMatchExit (matcptr); return (1); } if (matcptr->levltab[0].grafdat.edlotax != NULL) { /* If original graph has edge loads */ Gnum edgenbr; edgenbr = matcptr->levltab[0].grafdat.edgenbr; if ((matcptr->lewgtab[0].edwgtab = memAlloc (edgenbr * sizeof (Gnum))) == NULL) { errorPrint ("archDeco2BuildMatchInit: out of memory (5)"); archDeco2BuildMatchExit (matcptr); return (1); } matcptr->lewgtab[0].edwgsum = grafptr->edlosum; /* Record edge load sum for finest graph */ memCpy (matcptr->lewgtab[0].edwgtab, matcptr->levltab[0].grafdat.edlotax + grafptr->baseval, edgenbr * sizeof (Gnum)); /* Keep edge costs (if any) */ matcptr->levltab[0].grafdat.edlosum = /* Record edge load sum of inversed loads */ graphIelo (&matcptr->levltab[0].grafdat, matcptr->levltab[0].grafdat.edlotax, matcptr->levltab[0].grafdat.edlotax); /* Inverse edge costs for coarsening */ } return (0); } /* This routine computes a matching from ** the current state of the matching structure. ** It returns: ** - >=0 : size of matching. ** - <0 : on error. */ Anum archDeco2BuildMatchMate ( ArchDeco2BuildMatch * restrict const matcptr, ArchCoarsenMulti * restrict * restrict const multptr) { const Graph * restrict finegrafptr; const Gnum * restrict fineedwgtax; const Gnum * restrict finevewgtax; const Gnum * restrict fineedgetax; const Gnum * restrict fineverttax; const Gnum * restrict finevendtax; Anum finevertnbr; Gnum * restrict finecoartax; const ArchDeco2Levl * restrict finelevlptr; ArchDeco2Levl * restrict coarlevlptr; ArchCoarsenMulti * restrict coarmulttax; Graph * restrict coargrafptr; Gnum * restrict coaredwgtax; Gnum * restrict coarvewgtax; Gnum coarvewgsum; Gnum coaredwgsum; Gnum coarvertnnd; Gnum coarvertnum; Gnum coarvertsum; /* Sum of all coarse vertices kept in coarsening tree */ Gnum * restrict coarvelotax; Gnum coaredgenum; ArchDeco2BuildHash * restrict coarhashtab; Gnum coarhashmax; Gnum coarhashsiz; Gnum coarhashmsk; Gnum levlmax; Gnum levlnum; levlnum = matcptr->levlnum; finelevlptr = &matcptr->levltab[levlnum]; finevertnbr = finelevlptr->grafdat.vertnbr; if (finevertnbr <= 1) /* This routine is not meant to handle single-vertex graphs */ return (-1); levlmax = matcptr->levlmax; if (++ levlnum >= levlmax) { /* If level array already full */ ArchDeco2BuildLevl * lewgtmp; ArchDeco2Levl * levltmp; levlmax += (levlmax >> 2) + 1; /* Increase size by 25% */ if ((lewgtmp = memRealloc (matcptr->lewgtab, levlmax * sizeof (ArchDeco2BuildLevl))) == NULL) { errorPrint ("archDeco2BuildMatchMate: out of memory (1)"); return (-1); } matcptr->lewgtab = lewgtmp; if ((levltmp = memRealloc (matcptr->levltab, levlmax * sizeof (ArchDeco2Levl))) == NULL) { errorPrint ("archDeco2BuildMatchMate: out of memory (2)"); return (-1); } matcptr->levltab = levltmp; matcptr->levlmax = levlmax; finelevlptr = &levltmp[levlnum - 1]; /* In case array was moved */ } *multptr = /* Provide address of multinode array */ coarmulttax = matcptr->multtab; /* Un-based multinode array */ finecoartax = matcptr->ficotab; /* Un-based fine-to-coarse array */ finegrafptr = &finelevlptr->grafdat; coarlevlptr = &matcptr->levltab[levlnum]; coargrafptr = &coarlevlptr->grafdat; if (graphCoarsen (&finelevlptr->grafdat, coargrafptr, (Gnum **) &finecoartax, (GraphCoarsenMulti **) &coarmulttax, 0, 1.0, GRAPHCOARSENNONE, NULL, NULL, 0, NULL) != 0) { errorPrint ("archDeco2BuildMatchMate: cannot coarsen graph"); return (-1); } matcptr->levlnum = levlnum; /* Record new level since coarse graph must be freed */ matcptr->lewgtab[levlnum].edwgtab = NULL; /* Group leader not yet allocated */ for (coarhashsiz = matcptr->hashsiz, coarhashmax = coargrafptr->degrmax * 4; /* Recompute size of hash table */ coarhashsiz < coarhashmax; coarhashsiz *= 2) ; if (coarhashsiz > matcptr->hashsiz) { /* Reallocate hash table if it has to be expanded */ ArchDeco2BuildHash * coarhashtmp; if ((coarhashtmp = memRealloc (matcptr->hashtab, coarhashsiz * sizeof (ArchDeco2BuildHash))) == NULL) { errorPrint ("archDeco2BuildMatchMate: out of memory (3)"); return (-1); } matcptr->hashtab = coarhashtmp; matcptr->hashsiz = coarhashsiz; } coarhashmsk = coarhashsiz - 1; coarhashtab = matcptr->hashtab; memSet (coarhashtab, ~0, coarhashsiz * sizeof (ArchDeco2BuildHash)); /* Initialize hash table area */ if (memAllocGroup ((void **) (void *) &matcptr->lewgtab[levlnum].edwgtab, (size_t) (coargrafptr->edgenbr * sizeof (Gnum)), &matcptr->lewgtab[levlnum].vewgtab, (size_t) (coargrafptr->vertnbr * sizeof (Gnum)), NULL) == NULL) { errorPrint ("archDeco2BuildMatchMate: out of memory (4)"); return (-1); } coarvewgtax = matcptr->lewgtab[levlnum].vewgtab - coargrafptr->baseval; coaredwgtax = matcptr->lewgtab[levlnum].edwgtab - coargrafptr->baseval; coarvelotax = coargrafptr->velotax; coarmulttax -= coargrafptr->baseval; finecoartax -= coargrafptr->baseval; fineverttax = finegrafptr->verttax; finevendtax = finegrafptr->vendtax; fineedgetax = finegrafptr->edgetax; finevewgtax = matcptr->lewgtab[levlnum - 1].vewgtab; fineedwgtax = matcptr->lewgtab[levlnum - 1].edwgtab; if (finevewgtax != NULL) /* Fine edge and vertex weight arrays may be NULL */ finevewgtax-= finegrafptr->baseval; if (fineedwgtax != NULL) fineedwgtax-= finegrafptr->baseval; coarvewgsum = coaredwgsum = 0; for (coarvertnum = coaredgenum = coargrafptr->baseval, coarvertnnd = coargrafptr->vertnnd, coarvertsum = 0; coarvertnum < coarvertnnd; coarvertnum ++) { Gnum coaredgetmp; Gnum coarvewgval; /* Aggregated vertex traversal cost */ Gnum coaredwgval; /* Aggregated edge traversal cost */ Gnum finevertnum; int i; if (coarvelotax[coarvertnum] != 0) /* If coarse vertex does not have a zero weight */ coarvertsum ++; /* Account for it in tree */ coaredgetmp = coaredgenum; /* Record edge position in array */ coarvewgval = 0; /* Accumulate coarse vertex traversal costs */ coaredwgval = 0; /* Accumulate coarse edge traversal costs for collapsed edges */ i = 0; do { /* For all fine edges of multinode vertices */ Gnum fineedgenum; finevertnum = coarmulttax[coarvertnum].vertnum[i]; coarvewgval += (finevewgtax != NULL) ? finevewgtax[finevertnum] : 0; /* Accumulate vertex traversal costs */ for (fineedgenum = fineverttax[finevertnum]; fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { Gnum coarvertend; /* Number of coarse vertex which is end of fine edge */ Gnum h; coarvertend = finecoartax[fineedgetax[fineedgenum]]; if (coarvertend != coarvertnum) { /* If not end of collapsed edge */ for (h = (coarvertend * GRAPHCOARSENHASHPRIME) & coarhashmsk; ; h = (h + 1) & coarhashmsk) { if (coarhashtab[h].coarvertnum != coarvertnum) { /* If old slot */ coarhashtab[h].coarvertnum = coarvertnum; /* Mark it in reference array */ coarhashtab[h].coarvertend = coarvertend; coarhashtab[h].coaredgenum = coaredgenum; /* Edge location in coarse graph */ coarhashtab[h].fineedwgmin = (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; coaredwgtax[coaredgenum] = h; /* Record edge location for summing up */ coaredgenum ++; /* One more edge created */ break; /* Give up hashing */ } if (coarhashtab[h].coarvertend == coarvertend) { /* If coarse edge already exists */ Gnum fineedwgval; fineedwgval = (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; if (coarhashtab[h].fineedwgmin > fineedwgval) /* Take minimum of edge weights */ coarhashtab[h].fineedwgmin = fineedwgval; break; /* Give up hashing */ } } } else /* If collapsed edge, accumulate traversal cost (twice: once for each arc) */ coaredwgval += (fineedwgtax != NULL) ? fineedwgtax[fineedgenum] : 1; } } while (i ++, finevertnum != coarmulttax[coarvertnum].vertnum[1]); /* Skip to next matched vertex if both vertices not equal */ coarvewgsum += /* Accumulate vertex load sum of coarse graph */ coarvewgtax[coarvertnum] = coarvewgval + coaredwgval; /* Add vertex traversal cost plus edge traversal cost */ #ifdef SCOTCH_DEBUG_ARCH2 if (coaredgenum != coargrafptr->verttax[coarvertnum + 1]) { /* If not same number of coarse edges found */ errorPrint ("archDeco2BuildMatchMate: internal error (1)"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ for ( ; coaredgetmp < coaredgenum; coaredgetmp ++) { /* Finalize building of edge traversal cost array */ Gnum h; h = coaredwgtax[coaredgetmp]; /* Replace hash table index with average edge traversal cost */ #ifdef SCOTCH_DEBUG_ARCH2 if (coarhashtab[h].coaredgenum != coaredgetmp) { errorPrint ("archDeco2BuildMatchMate: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ coaredwgsum += coaredwgtax[coaredgetmp] = coarhashtab[h].fineedwgmin; } } matcptr->lewgtab[levlnum].edwgsum = coaredwgsum; matcptr->lewgtab[levlnum].vewgsum = coarvewgsum; matcptr->vertsum += coarvertsum; /* Sum all vertices in coarsening tree */ return (coargrafptr->vertnbr); } /******************************************/ /* */ /* The main routine, which computes the */ /* type-2, decomposition-described target */ /* architecture. */ /* */ /******************************************/ /* This routine collapses the recursive coarsening tree ** into a decomposition-defined tree, by removing single ** vertices that have not been collapsed. Unlike the ** archSubArchBuild3() routine from which it derives, it ** preserves some information on removed single vertices, ** so as to identify the relevant vertices at each level, ** to start distance computations. ** It returns: ** - the first free index in the domain array. */ static Anum archDeco2BuildBuild3 ( ArchDeco2Build3 * restrict const dataptr, /*+ Data area +*/ const ArchSubTree * restrict const treeptr, /*+ Pointer to current node being traversed +*/ const Anum domnnum, /*+ Domain number of current node +*/ const Anum domnidx, /*+ Current first free slot in domain array +*/ const Anum levlnum) /*+ Current tree level +*/ { Anum termnum; const ArchSubTree * son0ptr; const ArchSubTree * son1ptr; const ArchSubTree * sonsptr; Anum levltmp; Anum didxtmp; Gnum vnumidx; ArchSubData * restrict const domntab = dataptr->domntab; ArchDeco2Data * restrict const doextab = dataptr->doextab; ArchSubTerm * restrict const termtab = dataptr->termtab; vnumidx = dataptr->vnumidx ++; /* One more slot for vertex number */ dataptr->vnumtab[vnumidx] = treeptr->vertnum; /* Record vertex number of collapsed node */ son0ptr = treeptr->sonstab[0]; son1ptr = treeptr->sonstab[1]; sonsptr = NULL; levltmp = levlnum - 1; /* Level 0 is finest graph, so proceed in decreasing order */ if (son0ptr != NULL) /* If node is a single node, traverse it without any processing */ sonsptr = son0ptr; if (son1ptr != NULL) sonsptr = (sonsptr != NULL) ? NULL : son1ptr; if (sonsptr != NULL) return (archDeco2BuildBuild3 (dataptr, sonsptr, domnnum, domnidx, levltmp)); domntab[domnidx].domnnum = domnnum; domntab[domnidx].domnsiz = treeptr->domnsiz; domntab[domnidx].domnwgt = treeptr->domnwgt; termnum = domntab[domnidx].termnum = treeptr->termnum; doextab[domnidx].levlnum = levlnum; doextab[domnidx].vnumidx = vnumidx; /* Record index of vertex number for this level */ didxtmp = domnidx + 1; if (son0ptr != NULL) { /* If node is a branch node */ Anum domntmp; domntmp = domnnum * 2; /* Domain number of first son */ domntab[didxtmp].dfatidx = domnidx; domntab[domnidx].dsubidx[0] = didxtmp; didxtmp = archDeco2BuildBuild3 (dataptr, son0ptr, domntmp, didxtmp, levltmp); domntab[didxtmp].dfatidx = domnidx; domntab[domnidx].dsubidx[1] = didxtmp; didxtmp = archDeco2BuildBuild3 (dataptr, son1ptr, domntmp + 1, didxtmp, levltmp); } else { domntab[domnidx].dsubidx[0] = domntab[domnidx].dsubidx[1] = -1; termtab[termnum].domnidx = domnidx; } return (didxtmp); } /* ** This routine builds a type-2 target architecture ** from the given source graph and the optional ** vertex list. If vnumtab is null, all vertices ** are part of the target architecture. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int archDeco2ArchBuild ( Arch * restrict const archptr, /*+ Decomposition architecture to build +*/ const Graph * const grafptr, /*+ Source graph modeling the architecture +*/ const Gnum vnumnbr, /*+ Number of vertices in list +*/ const Gnum * restrict const vnumtab) /*+ vertex array +*/ { ArchDeco2Build3 datadat; /* Data for building decomposition tree */ ArchDeco2BuildMatch matcdat; /* Data for successive matchings */ ArchSubTree * rootptr; ArchSubTree * treetab; ArchSubTree * treetmp; ArchSubTerm * termtab; ArchSubData * domntab; ArchDeco2Data * doextab; Anum domnnbr; /* Number of domains */ Gnum vertnum; Gnum * restrict velotmp; /* Temporary vertex load array */ Anum vnumnum; Gnum * vnumtmp; Anum levlnum; const char * messptr; /* Pointer to error message */ ArchDeco2 * restrict const decoptr = &archptr->data.deco2; const Gnum baseval = grafptr->baseval; const Gnum vertnbr = grafptr->vertnbr; /* Number of terminals in original graph */ const Gnum * restrict const velotab = (grafptr->velotax != NULL) ? grafptr->velotax + baseval : NULL; /* Un-based original vertex load array */ if (baseval != 0) { /* Because of current limitations in archSubArchBuild2() */ errorPrint ("archDeco2ArchBuild: input graph must have base value set to 0"); return (1); } #ifdef SCOTCH_DEBUG_ARCH1 if ((vnumnbr < 0) || (vnumnbr > vertnbr)) { errorPrint ("archDeco2ArchBuild: invalid number of terminal domains"); return (1); } #endif /* SCOTCH_DEBUG_ARCH1 */ archInit (archptr); /* Initialize architecture body */ archptr->class = archClass2 ("deco", 1); /* Set type-2 architecture class */ domnnbr = 2 * vnumnbr - 1; if (memAllocGroup ((void **) (void *) &termtab, (size_t) (vnumnbr * sizeof (ArchSubTerm)), &domntab, (size_t) (domnnbr * sizeof (ArchSubData)), &doextab, (size_t) (domnnbr * sizeof (ArchDeco2Data)), NULL) == NULL) { errorPrint ("archDeco2ArchBuild: out of memory (1)"); return (1); } if ((treetab = memAlloc ((vertnbr + 1) * sizeof (ArchSubTree))) == NULL) { /* TRICK: One more slot to link to coarser array */ errorPrint ("archDeco2ArchBuild: out of memory (2)"); memFree (termtab); /* Free group leader */ return (1); } velotmp = NULL; /* Assume no need for temporary load array */ if (vnumnbr < vertnbr) { /* If restriction of the target architecture */ if ((velotmp = memAlloc (vertnbr * sizeof (Gnum))) == NULL) { /* Create temporary load array */ errorPrint ("archDeco2ArchBuild: out of memory (3)"); memFree (treetab); memFree (termtab); return (1); } memSet (velotmp, 0, vertnbr * sizeof (Gnum)); /* Assume no vertex kept in target architecture */ } treetab ++; /* TRICK: Hide first slot */ for (vertnum = 0; vertnum < vertnbr; vertnum ++) { /* Initialize values for all vertices of original architecture */ treetab[vertnum].domnsiz = treetab[vertnum].domnwgt = 0; treetab[vertnum].termnum = treetab[vertnum].vertnum = ANUMMAX; treetab[vertnum].sonstab[0] = treetab[vertnum].sonstab[1] = NULL; } messptr = NULL; for (vnumnum = 0; vnumnum < vnumnbr; vnumnum ++) { /* For all kept terminal numbers */ Gnum vertnum; /* Terminal number in original architecture */ vertnum = (vnumtab != NULL) ? (vnumtab[vnumnum] - baseval) : vnumnum; /* Un-base vertex number */ if ((vertnum < 0) || (vertnum >= vertnbr)) messptr = "archDeco2ArchBuild: invalid vertex number in vertex list"; else if (treetab[vertnum].domnsiz != 0) messptr = "archDeco2ArchBuild: duplicate vertex number in vertex list"; if (messptr != NULL) { errorPrint (messptr); if (velotmp != NULL) memFree (velotmp); memFree (treetab - 1); memFree (termtab); return (1); } termtab[vnumnum].termnum = vertnum; /* Record number of original terminal number */ if (velotmp != NULL) velotmp[vertnum] = 1; /* Vertex belongs to restricted architecture */ treetab[vertnum].domnsiz = 1; /* Here lies one terminal vertex */ treetab[vertnum].domnwgt = (velotab != NULL) ? velotab[vertnum] : 1; treetab[vertnum].vertnum = vertnum; /* Record number of original vertex in original graph */ treetab[vertnum].termnum = vnumnum; /* Sub-architecture terminal number in original architecture */ } if (archDeco2BuildMatchInit (&matcdat, grafptr) != 0) { /* Initialize matching structure */ errorPrint ("archDeco2ArchBuild: cannot initialize matching structure"); if (velotmp != NULL) memFree (velotmp); memFree (treetab - 1); memFree (termtab); return (1); } if (velotmp != NULL) { /* If restricted architecture, keep track of present vertices */ matcdat.levltab[0].grafdat.velotax = velotmp - baseval; /* Graph is cloned, so velotax can be modified */ matcdat.levltab[0].grafdat.velosum = vnumnbr; } decoptr->baseval = baseval; decoptr->termnbr = vnumnbr; decoptr->termtab = termtab; /* From now on, termtab will be freed on its own */ decoptr->domnnbr = domnnbr; decoptr->domntab = domntab; decoptr->doextab = doextab; #ifdef SCOTCH_DEBUG_ARCH1 decoptr->vnumtab = NULL; #endif /* SCOTCH_DEBUG_ARCH1 */ intRandInit (); /* Initialize random generator for coarsening */ matcdat.vertsum = vnumnbr; /* Account for kept vertices of original graph */ rootptr = archSubArchBuild2 (&matcdat, (Anum (*) (void *, ArchCoarsenMulti * restrict *)) archDeco2BuildMatchMate, treetab, vnumnbr); if (velotmp != NULL) /* Temporary vertex load array will no longer be necessary */ memFree (velotmp); if (rootptr == NULL) { errorPrint ("archDeco2ArchBuild: cannot create sub-architecture (1)"); archDeco2BuildMatchExit (&matcdat); memFree (treetab - 1); return (1); } #ifdef SCOTCH_DEBUG_ARCH2 if (rootptr->domnsiz != vnumnbr) { errorPrint ("archDeco2ArchBuild: internal error (2)"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ for (levlnum = matcdat.levlnum; levlnum >= 0; levlnum --) { ArchDeco2BuildLevl * lewgptr; ArchDeco2Levl * levlptr; lewgptr = &matcdat.lewgtab[levlnum]; levlptr = &matcdat.levltab[levlnum]; if (lewgptr->vewgtab != NULL) { memCpy (levlptr->grafdat.velotax + levlptr->grafdat.baseval, lewgptr->vewgtab, levlptr->grafdat.vertnbr * sizeof (Gnum)); levlptr->grafdat.velosum = lewgptr->vewgsum; } else { levlptr->grafdat.velotax = NULL; levlptr->grafdat.velosum = levlptr->grafdat.vertnbr; } if (lewgptr->edwgtab != NULL) { memCpy (levlptr->grafdat.edlotax + levlptr->grafdat.baseval, lewgptr->edwgtab, levlptr->grafdat.edgenbr * sizeof (Gnum)); levlptr->grafdat.edlosum = lewgptr->edwgsum; memFree (lewgptr->edwgtab); lewgptr->edwgtab = NULL; } else { levlptr->grafdat.edlotax = NULL; levlptr->grafdat.edlosum = levlptr->grafdat.edgenbr; } #ifdef SCOTCH_DEBUG_ARCH2 if (graphCheck (&levlptr->grafdat) != 0) { errorPrint ("archDeco2ArchBuild: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ if ((levlptr->wdiaval = graphDiamPV (&levlptr->grafdat)) < 0) { errorPrint ("archDeco2ArchBuild: cannot compute graph diameter"); return (1); } if (levlptr->wdiaval < 1) /* No division by zero allowed */ levlptr->wdiaval = 1; } if ((vnumtmp = memAlloc (matcdat.vertsum * sizeof (Gnum))) == NULL) { errorPrint ("archDeco2ArchBuild: out of memory (4)"); archDeco2BuildMatchExit (&matcdat); memFree (treetab - 1); return (1); } decoptr->vnumnbr = matcdat.vertsum; decoptr->vnumtab = vnumtmp; datadat.domntab = domntab; datadat.doextab = doextab; datadat.termtab = termtab; datadat.vnumtab = vnumtmp; datadat.vnumidx = 0; /* Vertex number index array is empty */ if (archDeco2BuildBuild3 (&datadat, rootptr, 1, 0, matcdat.levlnum) != domnnbr) { errorPrint ("archDeco2ArchBuild: cannot create sub-architecture (2)"); memFree (treetab - 1); return (1); } domntab[0].dfatidx = -1; /* Set index of root father as -1 */ #ifdef SCOTCH_DEBUG_ARCH2 if (datadat.vnumidx != matcdat.vertsum) { errorPrint ("archDeco2ArchBuild: internal error (3)"); return (1); } #endif /* SCOTCH_DEBUG_ARCH2 */ for (treetab --; treetab != NULL; treetab = treetmp) { /* Free all tree blocks */ treetmp = treetab[0].sonstab[0]; /* Get pointer to next tree block */ memFree (treetab); } decoptr->levlmax = matcdat.levlnum; /* Save maximum level number */ decoptr->levltab = matcdat.levltab; /* Reuse graph array for architecture */ matcdat.levltab = NULL; /* Will not be freed in archDeco2BuildMatchExit() */ archDeco2BuildMatchExit (&matcdat); /* Free data structures used for matching */ return (0); } scotch_6.0.9/src/libscotch/vgraph_separate_es.h0000644000302600021200000001341313303015264022030 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vgraph_separate_es.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the edge-separation-based node **/ /** separation module. **/ /** **/ /** DATES : # Version 3.2 : from : 24 oct 1996 **/ /** to : 07 sep 1998 **/ /** # Version 3.3 : from : 01 oct 1998 **/ /** to 01 oct 1998 **/ /** # Version 4.0 : from : 18 aug 2004 **/ /** to 19 aug 2004 **/ /** # Version 6.0 : from : 30 apr 2018 **/ /** to : 30 apr 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ Separator type. +*/ typedef enum VgraphSeparateEsWidth_ { VGRAPHSEPAESWIDTHTHIN, /*+ Thin vertex separator +*/ VGRAPHSEPAESWIDTHFAT /*+ Fat vertex separator +*/ } VgraphSeparateEsWidth; /*+ This structure holds the method parameters. +*/ typedef struct VgraphSeparateEsParam_ { Strat * strat; /*+ Edge bipartitioning strategy used +*/ VgraphSeparateEsWidth widtval; /*+ Separator width +*/ } VgraphSeparateEsParam; /*+ These are the type of subgraphs vertices belong to, used to represent the Dulmage- Mendelsohn decomposition. TRICK: item numbers have been carefully chosen, so that one can easily sort out vertices that belong to (HR u SC u VC) and to (HR u SR u VC). +*/ typedef enum VgraphSeparateEsType_ { VGRAPHSEPAESTYPEHC = 0x0000, VGRAPHSEPAESTYPEVR = 0x0001, VGRAPHSEPAESTYPEHRSCVC = 0x0002, /* Bit mask for testing */ VGRAPHSEPAESTYPESC = 0x0003, VGRAPHSEPAESTYPEHRSRVC = 0x0004, /* Bit mask for testing */ VGRAPHSEPAESTYPESR = 0x0005, VGRAPHSEPAESTYPEHR = 0x0006, VGRAPHSEPAESTYPEVC = 0x0007 } VgraphSeparateEsType; #define VGRAPHSEPAESTYPEBITC 1 /* Bit index for VGRAPHSEPAESTYPEHRSCVC */ #define VGRAPHSEPAESTYPEBITR 2 /* Bit index for VGRAPHSEPAESTYPEHRSRVC */ /*+ Vertex traversal flag. +*/ typedef enum VgraphSeparateEsTrav_ { VGRAPHSEPAESTRAVFREE = 0, /*+ Vertex not traversed +*/ VGRAPHSEPAESTRAVUSED, /*+ Vertex traversed by search for free rows +*/ VGRAPHSEPAESTRAVDRTY /*+ Vertex traversed by backtracking search for free columns +*/ } VgraphSeparateEsTrav; /* ** The function prototypes. */ #ifdef VGRAPH_SEPARATE_ES static int vgraphSeparateEsCover (const Graph * const, const Gnum, Gnum * const, Gnum * const); static int vgraphSeparateEsCoverAugment (const Gnum * restrict const, const Gnum, Gnum * restrict const, VgraphSeparateEsTrav * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); static void vgraphSeparateEsCoverCol (const Gnum * restrict const, VgraphSeparateEsType * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); static void vgraphSeparateEsCoverRow (const Gnum * restrict const, VgraphSeparateEsType * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum * restrict const, const Gnum); #endif /* VGRAPH_SEPARATE_ES */ int vgraphSeparateEs (Vgraph * const, const VgraphSeparateEsParam * const); scotch_6.0.9/src/libscotch/kgraph_map_cp.h0000644000302600021200000000524413465315041020771 0ustar pelegrinpelegrin/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_cp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the mapping method that copy the **/ /** old mapping has a mapping result. **/ /** **/ /** DATES : # Version 6.0 : from : 16 jan 2012 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ int kgraphMapCp (Kgraph * restrict const); scotch_6.0.9/src/libscotch/kgraph_map_st.c0000644000302600021200000004615013470115365021014 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009-2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_st.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module contains the strategy and **/ /** method tables for the multi-way static **/ /** mapping routines. **/ /** **/ /** DATES : # Version 3.2 : from : 15 oct 1996 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to 17 may 1999 **/ /** # Version 3.4 : from : 12 sep 2001 **/ /** to 12 sep 2001 **/ /** # Version 4.0 : from : 12 jan 2004 **/ /** to 05 jan 2005 **/ /** # Version 5.1 : from : 04 oct 2009 **/ /** to 29 mar 2011 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 04 aug 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define KGRAPH_MAP_ST #include "module.h" #include "common.h" #include "parser.h" #include "gain.h" #include "fibo.h" #include "graph.h" #include "arch.h" #include "graph_coarsen.h" #include "mapping.h" #include "bgraph.h" #include "bgraph_bipart_st.h" #include "kgraph.h" #include "kgraph_map_bd.h" #include "kgraph_map_cp.h" #include "kgraph_map_df.h" #include "kgraph_map_ex.h" #include "kgraph_map_fm.h" #include "kgraph_map_ml.h" #include "kgraph_map_rb.h" #include "kgraph_map_st.h" /* ** The static and global variables. */ static Kgraph kgraphdummy; /*+ Dummy active graph for offset computations +*/ static union { KgraphMapBdParam param; StratNodeMethodData padding; } kgraphmapstdefaultbd = { { 3, &stratdummy, &stratdummy } }; static union { StratNodeMethodData padding; } kgraphmapstdefaultcp; static union { KgraphMapDfParam param; StratNodeMethodData padding; } kgraphmapstdefaultdf = { { 40, 1.0F, 0.0F } }; static union { KgraphMapExParam param; StratNodeMethodData padding; } kgraphmapstdefaultex = { { 0.05 } }; static union { KgraphMapFmParam param; StratNodeMethodData padding; } kgraphmapstdefaultfm = { { 200, ~0, 0.05 } }; static union { KgraphMapMlParam param; StratNodeMethodData padding; } kgraphmapstdefaultml = { { 100, 0.8, &stratdummy, &stratdummy, 0 } }; static union { KgraphMapRbParam param; StratNodeMethodData padding; } kgraphmapstdefaultrb = { { 1, 1, KGRAPHMAPRBPOLINGSIZE, &stratdummy, 0.05 } }; static StratMethodTab kgraphmapstmethtab[] = { /* Mapping methods array */ { KGRAPHMAPSTMETHBD, "b", kgraphMapBd, &kgraphmapstdefaultbd }, { KGRAPHMAPSTMETHCP, "c", kgraphMapCp, &kgraphmapstdefaultcp }, { KGRAPHMAPSTMETHDF, "d", kgraphMapDf, &kgraphmapstdefaultdf }, { KGRAPHMAPSTMETHEX, "x", kgraphMapEx, &kgraphmapstdefaultex }, { KGRAPHMAPSTMETHFM, "f", kgraphMapFm, &kgraphmapstdefaultfm }, { KGRAPHMAPSTMETHML, "m", kgraphMapMl, &kgraphmapstdefaultml }, { KGRAPHMAPSTMETHRB, "r", kgraphMapRb, &kgraphmapstdefaultrb }, { -1, NULL, NULL, NULL } }; static StratParamTab kgraphmapstparatab[] = { /* Method parameter list */ { KGRAPHMAPSTMETHBD, STRATPARAMINT, "width", (byte *) &kgraphmapstdefaultbd.param, (byte *) &kgraphmapstdefaultbd.param.distmax, NULL }, { KGRAPHMAPSTMETHBD, STRATPARAMSTRAT, "bnd", (byte *) &kgraphmapstdefaultbd.param, (byte *) &kgraphmapstdefaultbd.param.stratbnd, (void *) &kgraphmapststratab }, { KGRAPHMAPSTMETHBD, STRATPARAMSTRAT, "org", (byte *) &kgraphmapstdefaultbd.param, (byte *) &kgraphmapstdefaultbd.param.stratorg, (void *) &kgraphmapststratab }, { KGRAPHMAPSTMETHDF, STRATPARAMINT, "pass", (byte *) &kgraphmapstdefaultdf.param, (byte *) &kgraphmapstdefaultdf.param.passnbr, NULL }, { KGRAPHMAPSTMETHDF, STRATPARAMDOUBLE, "dif", (byte *) &kgraphmapstdefaultdf.param, (byte *) &kgraphmapstdefaultdf.param.cdifval, NULL }, { KGRAPHMAPSTMETHDF, STRATPARAMDOUBLE, "rem", (byte *) &kgraphmapstdefaultdf.param, (byte *) &kgraphmapstdefaultdf.param.cremval, NULL }, { KGRAPHMAPSTMETHEX, STRATPARAMDOUBLE, "bal", (byte *) &kgraphmapstdefaultex.param, (byte *) &kgraphmapstdefaultex.param.kbalval, (void *) &kgraphmapststratab }, { KGRAPHMAPSTMETHFM, STRATPARAMINT, "move", (byte *) &kgraphmapstdefaultfm.param, (byte *) &kgraphmapstdefaultfm.param.movenbr, NULL }, { KGRAPHMAPSTMETHFM, STRATPARAMINT, "pass", (byte *) &kgraphmapstdefaultfm.param, (byte *) &kgraphmapstdefaultfm.param.passnbr, NULL }, { KGRAPHMAPSTMETHFM, STRATPARAMDOUBLE, "bal", (byte *) &kgraphmapstdefaultfm.param, (byte *) &kgraphmapstdefaultfm.param.deltval, NULL }, { KGRAPHMAPSTMETHML, STRATPARAMSTRAT, "asc", (byte *) &kgraphmapstdefaultml.param, (byte *) &kgraphmapstdefaultml.param.stratasc, (void *) &kgraphmapststratab }, { KGRAPHMAPSTMETHML, STRATPARAMSTRAT, "low", (byte *) &kgraphmapstdefaultml.param, (byte *) &kgraphmapstdefaultml.param.stratlow, (void *) &kgraphmapststratab }, { KGRAPHMAPSTMETHML, STRATPARAMINT, "vert", (byte *) &kgraphmapstdefaultml.param, (byte *) &kgraphmapstdefaultml.param.coarnbr, NULL }, { KGRAPHMAPSTMETHML, STRATPARAMDOUBLE, "rat", (byte *) &kgraphmapstdefaultml.param, (byte *) &kgraphmapstdefaultml.param.coarval, NULL }, { KGRAPHMAPSTMETHML, STRATPARAMCASE, "type", (byte *) &kgraphmapstdefaultml.param, (byte *) &kgraphmapstdefaultml.param.typeval, (void *) "hscd" }, { KGRAPHMAPSTMETHRB, STRATPARAMCASE, "job", (byte *) &kgraphmapstdefaultrb.param, (byte *) &kgraphmapstdefaultrb.param.flagjobtie, (void *) "ut" }, { KGRAPHMAPSTMETHRB, STRATPARAMDOUBLE, "bal", (byte *) &kgraphmapstdefaultrb.param, (byte *) &kgraphmapstdefaultrb.param.kbalval, NULL }, { KGRAPHMAPSTMETHRB, STRATPARAMCASE, "map", (byte *) &kgraphmapstdefaultrb.param, (byte *) &kgraphmapstdefaultrb.param.flagmaptie, (void *) "ut" }, { KGRAPHMAPSTMETHRB, STRATPARAMCASE, "poli", (byte *) &kgraphmapstdefaultrb.param, (byte *) &kgraphmapstdefaultrb.param.polival, (void *) "rlsLS" }, { KGRAPHMAPSTMETHRB, STRATPARAMSTRAT, "sep", (byte *) &kgraphmapstdefaultrb.param, (byte *) &kgraphmapstdefaultrb.param.strat, (void *) &bgraphbipartststratab }, { KGRAPHMAPSTMETHNBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; static StratParamTab kgraphmapstcondtab[] = { /* Graph condition parameter table */ { STRATNODECOND, STRATPARAMINT, "load", (byte *) &kgraphdummy, (byte *) &kgraphdummy.s.velosum, NULL }, { STRATNODECOND, STRATPARAMINT, "levl", (byte *) &kgraphdummy, (byte *) &kgraphdummy.levlnum, NULL }, { STRATNODECOND, STRATPARAMINT, "edge", (byte *) &kgraphdummy, (byte *) &kgraphdummy.s.edgenbr, NULL }, { STRATNODECOND, STRATPARAMINT, "vert", (byte *) &kgraphdummy, (byte *) &kgraphdummy.s.vertnbr, NULL }, { STRATNODENBR, STRATPARAMINT, NULL, NULL, NULL, NULL } }; StratTab kgraphmapststratab = { /* Strategy tables for graph mapping methods */ kgraphmapstmethtab, kgraphmapstparatab, kgraphmapstcondtab }; /****************************************/ /* */ /* This is the generic mapping routine. */ /* */ /****************************************/ /* This routine computes the given ** mapping according to the given ** strategy. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int kgraphMapSt ( Kgraph * restrict const grafptr, /*+ Mapping graph +*/ const Strat * restrict const strat) /*+ Mapping strategy +*/ { StratTest val; /* Result of condition evaluation */ KgraphStore savetab[2]; /* Results of the two strategies */ Gnum comploaddltasu[2]; /* Absolute sum of computation load delta */ ArchDom domnfrst; /* Largest domain in the architecture */ Anum partnbr; /* Number of processors in the target topology */ Anum partnum; int o; int o2; #ifdef SCOTCH_DEBUG_KGRAPH2 if (sizeof (Gnum) != sizeof (INT)) { errorPrint ("kgraphMapSt: invalid type specification for parser variables"); return (1); } if ((sizeof (KgraphMapRbParam) > sizeof (StratNodeMethodData))) { errorPrint ("kgraphMapSt: invalid type specification"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH2 */ #ifdef SCOTCH_DEBUG_KGRAPH1 if ((strat->tabl != &kgraphmapststratab) && (strat != &stratdummy)) { errorPrint ("kgraphMapSt: invalid parameter (1)"); return (1); } #endif /* SCOTCH_DEBUG_KGRAPH1 */ o = 0; switch (strat->type) { case STRATNODECONCAT : o = kgraphMapSt (grafptr, strat->data.concat.strat[0]); /* Apply first strategy */ if (o == 0) /* If it worked all right */ o |= kgraphMapSt (grafptr, strat->data.concat.strat[1]); /* Then apply second strategy */ break; case STRATNODECOND : o = stratTestEval (strat->data.cond.test, &val, (void *) grafptr); /* Evaluate expression */ if (o == 0) { /* If evaluation was correct */ #ifdef SCOTCH_DEBUG_KGRAPH2 if ((val.typetest != STRATTESTVAL) || (val.typenode != STRATPARAMLOG)) { errorPrint ("kgraphMapSt: invalid test result"); o = 1; break; } #endif /* SCOTCH_DEBUG_KGRAPH2 */ if (val.data.val.vallog == 1) /* If expression is true */ o = kgraphMapSt (grafptr, strat->data.cond.strat[0]); /* Apply first strategy */ else { /* Else if expression is false */ if (strat->data.cond.strat[1] != NULL) /* And if there is an else statement */ o = kgraphMapSt (grafptr, strat->data.cond.strat[1]); /* Apply second strategy */ } } break; case STRATNODEEMPTY : break; case STRATNODESELECT : archDomFrst (&grafptr->a, &domnfrst); /* Get architecture domain */ partnbr = archDomSize (&grafptr->a, &domnfrst); /* Get architecture size */ if (((kgraphStoreInit (grafptr, &savetab[0])) != 0) || /* Allocate save areas */ ((kgraphStoreInit (grafptr, &savetab[1])) != 0)) { errorPrint ("kgraphMapSt: out of memory"); kgraphStoreExit (&savetab[0]); return (1); } kgraphStoreSave (grafptr, &savetab[1]); /* Save initial partition */ o = kgraphMapSt (grafptr, strat->data.select.strat[0]); /* Apply first strategy */ kgraphStoreSave (grafptr, &savetab[0]); /* Save its result */ kgraphStoreUpdt (grafptr, &savetab[1]); /* Restore initial partition */ o2 = kgraphMapSt (grafptr, strat->data.select.strat[1]); /* Apply second strategy */ if ((o == 0) || (o2 == 0)) { /* If at least one method has computed a partition */ Gnum comploadadlt; int b0; int b1; comploaddltasu[0] = comploaddltasu[1] = 0; b0 = o; /* Assume that balance is invalid if partitioning has failed */ b1 = o2; for (partnum = 0; partnum < partnbr; partnum ++) { comploadadlt = abs (savetab[0].comploaddlt[partnum]); if (comploadadlt > ((Gnum) ((double) savetab[0].comploadavg[partnum] * savetab[0].kbalval))) b0 |= 1; comploaddltasu[0] += comploadadlt; comploadadlt = abs (grafptr->comploaddlt[partnum]); if (comploadadlt > ((Gnum) ((double) grafptr->comploadavg[partnum] * grafptr->kbalval))) b1 |= 1; comploaddltasu[1] += comploadadlt; } do { /* Do we want to restore partition 0? */ if (b0 > b1) break; if (b0 == b1) { /* If both are valid or invalid */ if (b0 == 0) { /* If both are valid */ if ( (savetab[0].commload > grafptr->commload) || /* Compare on cut */ ((savetab[0].commload == grafptr->commload) && (comploaddltasu[0] > comploaddltasu[1]))) break; } else { /* If both are invalid */ if ( (comploaddltasu[0] > comploaddltasu[1]) || /* Compare on imbalance */ ((comploaddltasu[0] == comploaddltasu[1]) && (savetab[0].commload > grafptr->commload))) break; } } kgraphStoreUpdt (grafptr, &savetab[0]); /* Restore its result */ } while (0); } if (o2 < o) /* o = min(o,o2): if one parts, then part */ o = o2; /* Else if one stops, then stop, else error */ kgraphStoreExit (&savetab[0]); /* Free both save areas */ kgraphStoreExit (&savetab[1]); break; #ifdef SCOTCH_DEBUG_KGRAPH1 case STRATNODEMETHOD : #else /* SCOTCH_DEBUG_KGRAPH1 */ default : #endif /* SCOTCH_DEBUG_KGRAPH1 */ return (strat->tabl->methtab[strat->data.method.meth].func (grafptr, (void *) &strat->data.method.data)); #ifdef SCOTCH_DEBUG_KGRAPH1 default : errorPrint ("kgraphMapSt: invalid parameter (2)"); return (1); #endif /* SCOTCH_DEBUG_KGRAPH1 */ } return (o); } scotch_6.0.9/src/libscotch/hmesh_order_gp.h0000644000302600021200000001054613465315041021164 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh_order_gp.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the Gibbs-Poole-Stockmeyer **/ /** node ordering routine. **/ /** **/ /** DATES : # Version 3.2 : from : 31 oct 1996 **/ /** to : 27 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 4.0 : from : 04 nov 2002 **/ /** to : 01 dec 2003 **/ /** # Version 5.1 : from : 01 oct 2009 **/ /** to : 01 oct 2009 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct HmeshOrderGpParam_ { INT passnbr; /*+ Number of passes to do +*/ } HmeshOrderGpParam; /*+ Complementary vertex structure. +*/ typedef struct HmeshOrderGpVertex_ { Gnum passnum; /*+ Number of pass when vertex selected +*/ Gnum vertdist; /*+ Current distance from diameter vertex +*/ } HmeshOrderGpVertex; /*+ Neighbor queue. +*/ typedef struct HmeshOrderGpQueue_ { Gnum * head; /*+ Head of distance queue +*/ Gnum * tail; /*+ Tail of distance queue +*/ Gnum * qtab; /*+ Array of queue elements +*/ } HmeshOrderGpQueue; /* ** The function prototypes. */ int hmeshOrderGp (const Hmesh * const, Order * const, const Gnum, OrderCblk * const, const HmeshOrderGpParam * restrict const); /* ** The macro definitions. */ #define hmeshOrderGpQueueFlush(queue) ((queue)->head = (queue)->tail = (queue)->qtab) #define hmeshOrderGpQueueEmpty(queue) ((queue)->head <= (queue)->tail) #define hmeshOrderGpQueuePut(queue,vnum) (* ((queue)->head ++) = (vnum)) #define hmeshOrderGpQueueGet(queue) (* ((queue)->tail ++)) scotch_6.0.9/src/libscotch/vmesh_separate_fm.h0000644000302600021200000001635513465315041021673 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_fm.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the improved Fiduccia-Mattheyses **/ /** mesh element separation routine. **/ /** **/ /** DATES : # Version 4.0 : from : 26 feb 2003 **/ /** to 06 may 2004 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Gain table subbits. +*/ #define VMESHSEPAFMGAINBITS 4 /*+ Prime number for hashing vertex numbers. +*/ #define VMESHSEPAFMHASHPRIME 11 /*+ Prime number for hashing +*/ /*+ Gain table vertex status. +*/ #define VMESHSEPAFMSTATEFREE ((GainLink *) 0) /*+ Element is free or separator-chained +*/ #define VMESHSEPAFMSTATEUSED ((GainLink *) 1) /*+ Element already swapped +*/ #define VMESHSEPAFMSTATELINK ((GainLink *) 2) /*+ Currently in gain table if higher +*/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct VmeshSeparateFmParam_ { INT movenbr; /*+ Maximum number of uneffective moves that can be done +*/ INT passnbr; /*+ Number of passes to be performed (-1 : infinite) +*/ double deltrat; /*+ Maximum weight imbalance ratio +*/ } VmeshSeparateFmParam; /*+ The hash element structure. The goal of both hash arrays is to record partition data that supercedes the one contained in the calling Vmesh structure, until the newly computed partition is written back to the Vmesh. +*/ typedef struct VmeshSeparateFmElement_ { GainLink gainlink; /*+ Gain link if moved to other part; FIRST +*/ Gnum velmnum; /*+ Number of vertex in hash table +*/ int vertpart; /*+ Vertex part +*/ Gnum ncmpcut2; /*+ Number of neighbor nodes in separator +*/ Gnum ncmpgain2; /*+ Separator gain if moved to given part +*/ Gnum ncmpgaindlt; /*+ Node load imbalance if element swapped +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ } VmeshSeparateFmElement; /*+ The hash node structure. +*/ typedef struct VmeshSeparateFmNode_ { Gnum vnodnum; /*+ Number of vertex in hash table +*/ Gnum vnloval; /*+ Vertex load +*/ int vertpart; /*+ Vertex part +*/ Gnum ecmpsize0; /*+ Number of element neighbors in part 0 +*/ Gnum mswpnum; /*+ Number of move sweep when data recorded +*/ } VmeshSeparateFmNode; /*+ The move recording structure. +*/ typedef struct VmeshSeparateFmSave_ { Gnum hertnum; /*+ Hash index of vertex, (helmnum) or (-1 - hnodnum) +*/ union { /*+ Stored data to recover +*/ struct { /*+ Recovery data for element +*/ int vertpart; /*+ Vertex part +*/ Gnum ncmpcut2; /*+ Number of neighbor nodes in separator +*/ Gnum ncmpgain2; /*+ Separator gain if moved to given part +*/ Gnum ncmpgaindlt; /*+ Node load imbalance if element swapped +*/ } elem; struct { /*+ Recovery data for node +*/ int vertpart; /*+ Vertex part +*/ Gnum ecmpsize0; /*+ Number of element neighbors in part 0 +*/ } node; } data; } VmeshSeparateFmSave; /* ** The function prototypes. */ #ifdef VMESH_SEPARATE_FM static VmeshSeparateFmElement * vmeshSeparateFmTablGet (GainTabl * const, const Gnum, const Gnum); static int vmeshSeparateFmResize (GainTabl * restrict const, VmeshSeparateFmElement * restrict * const, VmeshSeparateFmNode * restrict * const, VmeshSeparateFmSave * restrict * const, const Gnum, VmeshSeparateFmElement **, VmeshSeparateFmElement **, const Gnum); #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateFmCheck (const Vmesh * const, const VmeshSeparateFmElement * restrict, const VmeshSeparateFmNode * restrict, const Gnum, const Gnum, const Gnum); #endif /* SCOTCH_DEBUG_VMESH3 */ #endif /* VMESH_SEPARATE_FM */ int vmeshSeparateFm (Vmesh * restrict const, const VmeshSeparateFmParam * restrict const); scotch_6.0.9/src/libscotch/common_sort.c0000644000302600021200000002123213560005430020515 0ustar pelegrinpelegrin/* This file is part of the Scotch distribution. It does ** not have the standard Scotch header with the INRIA & co. ** copyright notice because it is a very slight adaptation ** of the qsort routine of glibc 2.4, taylored to match ** Scotch needs. As Scotch is distributed according to the ** CeCILL-C license, which is LGPL-compatible, no further ** notices are required. Hence, this "common_sort.c" file ** is distributed according the terms of the LGPL, see ** copyright notice just below. */ /* Copyright (C) 1991,1992,1996,1997,1999,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Douglas C. Schmidt (schmidt@ics.uci.edu). The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* If you consider tuning this algorithm, you should consult first: Engineering a sort function; Jon Bentley and M. Douglas McIlroy; Software - Practice and Experience; Vol. 23 (11), 1249-1265, 1993. */ #ifndef MAX_THRESH #define MAX_THRESH 6 #define max_thresh (MAX_THRESH * INTSORTSIZE) /* Variable turned into constant */ /* Stack node declarations used to store unfulfilled partition obligations. */ typedef struct { char *lo; char *hi; } stack_node; /* The next 4 #defines implement a very fast in-line stack abstraction. */ /* The stack needs log (total_elements) entries (we could even subtract log(MAX_THRESH)). Since total_elements has type size_t, we get as upper bound for log (total_elements): bits per byte (CHAR_BIT) * sizeof(size_t). */ #define STACK_SIZE (CHAR_BIT * sizeof (INT)) #define PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (high)), ++top)) #define POP(low, high) ((void) (--top, (low = top->lo), (high = top->hi))) #define STACK_NOT_EMPTY (stack < top) #endif /* MAX_THRESH */ /* Order size using quicksort. This implementation incorporates four optimizations discussed in Sedgewick: 1. Non-recursive, using an explicit stack of pointer that store the next array partition to sort. To save time, this maximum amount of space required to store an array of SIZE_MAX is allocated on the stack. Assuming a 32-bit (64 bit) integer for size_t, this needs only 32 * sizeof(stack_node) == 256 bytes (for 64 bit: 1024 bytes). Pretty cheap, actually. 2. Chose the pivot element using a median-of-three decision tree. This reduces the probability of selecting a bad pivot value and eliminates certain extraneous comparisons. 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving insertion sort to order the MAX_THRESH items within each partition. This is a big win, since insertion sort is faster for small, mostly sorted array segments. 4. The larger of the two sub-partitions is always pushed onto the stack first, with the algorithm then concentrating on the smaller partition. This *guarantees* no more than log (total_elems) stack size is needed (actually O(1) in this case)! */ /* To be defined : ** INTSORTQUAL : whether the function is "static" or not ** INTSORTNAME : Name of function ** INTSORTSIZE : Size of elements to sort ** INTSORTSWAP : Swapping macro ** INTSORTCMP : Comparison function */ #ifdef INTSORTQUAL INTSORTQUAL #endif /* INTSORTQUAL */ void INTSORTNAME ( void * const pbase, /*+ Array to sort +*/ const INT total_elems) /*+ Number of entries to sort +*/ { register char *base_ptr = (char *) pbase; if (total_elems == 0) /* Avoid lossage with unsigned arithmetic below. */ return; if (total_elems > MAX_THRESH) { char *lo = base_ptr; char *hi = &lo[INTSORTSIZE * (total_elems - 1)]; stack_node stack[STACK_SIZE]; stack_node *top = stack; PUSH (NULL, NULL); while (STACK_NOT_EMPTY) { char *left_ptr; char *right_ptr; /* Select median value from among LO, MID, and HI. Rearrange LO and HI so the three values are sorted. This lowers the probability of picking a pathological pivot value and skips a comparison for both the LEFT_PTR and RIGHT_PTR in the while loops. */ char *mid = lo + INTSORTSIZE * ((hi - lo) / INTSORTSIZE >> 1); if (INTSORTCMP ((void *) mid, (void *) lo)) INTSORTSWAP (mid, lo); if (INTSORTCMP ((void *) hi, (void *) mid)) INTSORTSWAP (mid, hi); else goto jump_over; if (INTSORTCMP ((void *) mid, (void *) lo)) INTSORTSWAP (mid, lo); jump_over:; left_ptr = lo + INTSORTSIZE; right_ptr = hi - INTSORTSIZE; /* Here's the famous ``collapse the walls'' section of quicksort. Gotta like those tight inner loops! They are the main reason that this algorithm runs much faster than others. */ do { while (INTSORTCMP ((void *) left_ptr, (void *) mid)) left_ptr += INTSORTSIZE; while (INTSORTCMP ((void *) mid, (void *) right_ptr)) right_ptr -= INTSORTSIZE; if (left_ptr < right_ptr) { INTSORTSWAP (left_ptr, right_ptr); if (mid == left_ptr) mid = right_ptr; else if (mid == right_ptr) mid = left_ptr; left_ptr += INTSORTSIZE; right_ptr -= INTSORTSIZE; } else if (left_ptr == right_ptr) { left_ptr += INTSORTSIZE; right_ptr -= INTSORTSIZE; break; } } while (left_ptr <= right_ptr); /* Set up pointers for next iteration. First determine whether left and right partitions are below the threshold size. If so, ignore one or both. Otherwise, push the larger partition's bounds on the stack and continue sorting the smaller one. */ if ((size_t) (right_ptr - lo) <= max_thresh) { if ((size_t) (hi - left_ptr) <= max_thresh) /* Ignore both small partitions. */ POP (lo, hi); else /* Ignore small left partition. */ lo = left_ptr; } else if ((size_t) (hi - left_ptr) <= max_thresh) /* Ignore small right partition. */ hi = right_ptr; else if ((right_ptr - lo) > (hi - left_ptr)) { /* Push larger left partition indices. */ PUSH (lo, right_ptr); lo = left_ptr; } else { /* Push larger right partition indices. */ PUSH (left_ptr, hi); hi = right_ptr; } } } /* Once the BASE_PTR array is partially sorted by quicksort the rest is completely sorted using insertion sort, since this is efficient for partitions below MAX_THRESH size. BASE_PTR points to the beginning of the array to sort, and END_PTR points at the very last element in the array (*not* one beyond it!). */ { char *const end_ptr = &base_ptr[INTSORTSIZE * (total_elems - 1)]; char *tmp_ptr = base_ptr; char *thresh = MIN (end_ptr, base_ptr + max_thresh); register char *run_ptr; /* Find smallest element in first threshold and place it at the array's beginning. This is the smallest array element, and the operation speeds up insertion sort's inner loop. */ for (run_ptr = tmp_ptr + INTSORTSIZE; run_ptr <= thresh; run_ptr += INTSORTSIZE) if (INTSORTCMP ((void *) run_ptr, (void *) tmp_ptr)) tmp_ptr = run_ptr; if (tmp_ptr != base_ptr) INTSORTSWAP (tmp_ptr, base_ptr); /* Insertion sort, running from left-hand-side up to right-hand-side. */ run_ptr = base_ptr + INTSORTSIZE; while ((run_ptr += INTSORTSIZE) <= end_ptr) { tmp_ptr = run_ptr - INTSORTSIZE; while (INTSORTCMP ((void *) run_ptr, (void *) tmp_ptr)) tmp_ptr -= INTSORTSIZE; tmp_ptr += INTSORTSIZE; if (tmp_ptr != run_ptr) { char *trav; trav = run_ptr + INTSORTSIZE; while (--trav >= run_ptr) { char c = *trav; char *hi, *lo; for (hi = lo = trav; (lo -= INTSORTSIZE) >= tmp_ptr; hi = lo) *hi = *lo; *hi = c; } } } } } scotch_6.0.9/src/libscotch/hall_order_hd.h0000644000302600021200000000612313465315041020761 0ustar pelegrinpelegrin/* Copyright 2004,2007,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hall_order_hd.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the block-oriented Halo **/ /** Approximate (Multiple) Minimum Degree **/ /** ordering routine. **/ /** **/ /** DATES : # Version 3.4 : from : 15 may 2001 **/ /** to : 15 may 2001 **/ /** # Version 4.0 : from : 10 jan 2003 **/ /** to : 10 dec 2003 **/ /** # Version 6.0 : from : 08 mar 2012 **/ /** to : 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The function prototypes. */ void hallOrderHdHalmd (const Gnum n, const Gnum nbelts, const Gnum iwlen, Gnum pe[], Gnum pfree, Gnum len[], Gnum iw[], Gnum nv[], Gnum elen[], Gnum last[], Gnum * ncmpa, Gnum degree[], Gnum head[], Gnum next[], Gnum w[]); scotch_6.0.9/src/libscotch/dgraph_fold.h0000644000302600021200000000662213560005435020447 0ustar pelegrinpelegrin/* Copyright 2007-2009 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgraph_fold.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the distributed source graph **/ /** folding routines. **/ /** **/ /** # Version 5.0 : from : 06 sep 2006 **/ /** to 06 sep 2006 **/ /** # Version 5.1 : from : 31 dec 2008 **/ /** to 01 jan 2009 **/ /** **/ /************************************************************/ /* ** The defines. */ /* Slot indices used for point-to-point folding communications. First indices are used for communications without further processing. At the moment, there are two anonymous slots: the first one for vnumloctab, and the second one for vertinfotab. */ typedef enum DgraphFoldTag_ { DGRAPHFOLDTAGENBR = 2, /*+ Edge size message +*/ DGRAPHFOLDTAGVERT, /*+ vertloctab message +*/ DGRAPHFOLDTAGVELO, /*+ veloloctab message +*/ DGRAPHFOLDTAGEDGE, /*+ edgeloctab message +*/ DGRAPHFOLDTAGEDLO, /*+ edgeloctab message +*/ DGRAPHFOLDTAGNBR /*+ Number of tags +*/ } DgraphFoldTag; scotch_6.0.9/src/libscotch/vmesh_separate_gg.h0000644000302600021200000001161113465315041021654 0ustar pelegrinpelegrin/* Copyright 2004,2007,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vmesh_separate_gg.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the the greedy mesh growing node **/ /** separation method. **/ /** **/ /** DATES : # Version 4.0 : from : 16 sep 2002 **/ /** to 07 apr 2004 **/ /** # Version 6.0 : from : 31 may 2018 **/ /** to 31 may 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ System-defined constants. +*/ #define VMESHSEPAGGSUBBITS 4 #define VMESHSEPAGGSTATEPART0 ((GainLink *) 0) /*+ Element vertex in part 0 (initial state) +*/ #define VMESHSEPAGGSTATEPART1 ((GainLink *) 1) /*+ Element vertex in part 1 +*/ #define VMESHSEPAGGSTATEPART2 ((GainLink *) 2) /*+ Element vertex in part 2, chained +*/ #define VMESHSEPAGGSTATELINK ((GainLink *) 3) /*+ Currently in gain table if higher +*/ /* ** The type and structure definitions. */ /*+ Method parameters. +*/ typedef struct VmeshSeparateGgParam_ { INT passnbr; /*+ Number of passes to perform +*/ } VmeshSeparateGgParam; /*+ The complementary element vertex structure. For trick reasons, the gain table data structure must be the first field of the structure. +*/ typedef struct VmeshSeparateGgElem_ { GainLink gainlink; /*+ Gain link: FIRST +*/ Gnum ncmpgain2; /*+ Computation gain in separator: (0->2) - (2->1) +*/ Gnum ncmpgaindlt; /*+ Overall computation delta: - (0->2) - (2->1) +*/ } VmeshSeparateGgElem; /*+ The complementary vertex structure. Only partval is always valid. Other fields are valid only when vertex belongs to separator. +*/ typedef struct VmeshSeparateGgNode_ { int partval; /*+ Part to which node vertex belongs +*/ Gnum commsize0; /*+ Number of neighbors in part 0 +*/ Gnum velmisum0; /*+ Sum of all element indices in part 0; the last one is the right one +*/ } VmeshSeparateGgNode; /* ** The function prototypes. */ #ifdef VMESH_SEPARATE_GG #ifdef SCOTCH_DEBUG_VMESH3 static int vmeshSeparateGgCheck (Vmesh * restrict const, const Gnum, const Gnum, const VmeshSeparateGgElem * restrict const, const VmeshSeparateGgNode * restrict const vnoxtax); #endif /* SCOTCH_DEBUG_VMESH3 */ #endif /* VMESH_SEPARATE_GG */ int vmeshSeparateGg (Vmesh * restrict const, const VmeshSeparateGgParam * restrict const); scotch_6.0.9/src/libscotch/kdgraph_map_rb_part.h0000644000302600021200000001224413470115365022165 0ustar pelegrinpelegrin/* Copyright 2008,2010,2011,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kdgraph_map_rb_part.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : These lines are the data declaration **/ /** for the Parallel Dual Recursive **/ /** Bipartitioning mapping algorithm. **/ /** **/ /** DATES : # Version 5.1 : from : 23 jun 2008 **/ /** to 31 aug 2011 **/ /** # Version 6.0 : from : 07 jun 2018 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds folded graph data, whether centralized or distributed +*/ typedef struct KdgraphMapRbPartGraph_ { ArchDom domnorg; /*+ Domain to bipartition at this stage +*/ int procnbr; /*+ Number of processes holding graph +*/ INT levlnum; /*+ Level number +*/ union { Graph cgrfdat; /*+ Centralized graph +*/ Dgraph dgrfdat; /*+ Distributed graph +*/ } data; } KdgraphMapRbPartGraph; /*+ This structure holds the data passed to the subgraph building threads. +*/ typedef struct KdgraphMapRbPartThread_ { Dmapping * mappptr; /*+ Pointer to mapping structure +*/ Dgraph * orggrafptr; /*+ Pointer to original graph +*/ const ArchDom * inddomnptr; /*+ Pointer to subjob domain +*/ Gnum indvertnbr; /*+ Local number of vertices in subgraph +*/ GraphPart indpartval; /*+ Graph part from which to extract subgraph +*/ GraphPart * indparttax; /*+ Based local vertex partition flags in subgraph +*/ KdgraphMapRbPartGraph * fldgrafptr; /*+ Pointer to folded graph union area +*/ int fldpartval; /*+ Part of processor array to which to fold to +*/ int fldprocnbr; /*+ Number of processes in folded communicator +*/ int fldprocnum; /*+ Rank of process in folded communicator, or -1 +*/ MPI_Comm fldproccomm; /*+ Communicator for the folded graph, if any +*/ } KdgraphMapRbPartThread; /*+ This structure holds the data passed to each bipartitioning job. +*/ typedef struct KdgraphMapRbPartData_ { Dmapping * mappptr; const KdgraphMapRbParam * paraptr; double comploadrat; /*+ Ideal vertex load per target load +*/ double comploadmin; /*+ Minimum vertex load per target load +*/ double comploadmax; /*+ Maximum vertex load per target load +*/ } KdgraphMapRbPartData; /* ** The function prototypes. */ int kdgraphMapRbPart (Kdgraph * const, Kdmapping * const, const KdgraphMapRbParam * const); scotch_6.0.9/src/libscotch/library_arch.c0000644000302600021200000004460213560013261020626 0ustar pelegrinpelegrin/* Copyright 2004,2007,2009-2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : library_arch.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : This module is the API for the target **/ /** architecture handling routines of the **/ /** libSCOTCH library. **/ /** **/ /** DATES : # Version 3.2 : from : 18 aug 1998 **/ /** to : 18 aug 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 29 mar 1999 **/ /** # Version 3.4 : from : 01 nov 2001 **/ /** to : 01 nov 2001 **/ /** # Version 4.0 : from : 13 jan 2004 **/ /** to : 13 jan 2004 **/ /** # Version 5.0 : from : 12 sep 2007 **/ /** to : 12 sep 2007 **/ /** # Version 5.1 : from : 05 jun 2009 **/ /** to : 13 feb 2011 **/ /** # Version 6.0 : from : 14 feb 2011 **/ /** to 05 jun 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define LIBRARY #include "module.h" #include "common.h" #include "graph.h" #include "arch.h" #include "arch_cmplt.h" #include "arch_cmpltw.h" #include "arch_hcub.h" #include "arch_mesh.h" #include "arch_sub.h" #include "arch_tleaf.h" #include "arch_torus.h" #include "arch_vcmplt.h" #include "arch_vhcub.h" #include "scotch.h" /***************************************/ /* */ /* These routines are the C API for */ /* the architecture handling routines. */ /* */ /***************************************/ /*+ This routine reserves a memory area *** of a size sufficient to store a *** target architecture. *** It returns: *** - !NULL : if the initialization succeeded. *** - NULL : on error. +*/ SCOTCH_Arch * SCOTCH_archAlloc () { return ((SCOTCH_Arch *) memAlloc (sizeof (SCOTCH_Arch))); } /*+ This routine initializes the opaque *** architecture structure used to handle *** target architectures in the Scotch library. *** It returns: *** - 0 : if the initialization succeeded. *** - !0 : on error. +*/ int SCOTCH_archInit ( SCOTCH_Arch * const archptr) { if (sizeof (SCOTCH_Num) != sizeof (Anum)) { errorPrint (STRINGIFY (SCOTCH_archInit) ": internal error (1)"); return (1); } if (sizeof (SCOTCH_Arch) < sizeof (Arch)) { errorPrint (STRINGIFY (SCOTCH_archInit) ": internal error (2)"); return (1); } return (archInit ((Arch *) archptr)); } /*+ This routine frees the contents of the *** given opaque architecture structure. *** It returns: *** - VOID : in all cases. +*/ void SCOTCH_archExit ( SCOTCH_Arch * const archptr) { archExit ((Arch *) archptr); } /*+ This routine loads the given opaque *** architecture structure with the data of *** the given stream. *** It returns: *** - 0 : if the loading succeeded. *** - !0 : on error. +*/ int SCOTCH_archLoad ( SCOTCH_Arch * const archptr, FILE * const stream) { return (archLoad ((Arch *) archptr, stream)); } /*+ This routine saves the given opaque *** architecture structure to the given *** stream. *** It returns: *** - 0 : if the saving succeeded. *** - !0 : on error. +*/ int SCOTCH_archSave ( const SCOTCH_Arch * const archptr, FILE * const stream) { return (archSave ((Arch *) archptr, stream)); } /*+ This routine returns the name of the *** given target architecture. *** It returns: *** - !NULL : pointer to the name of the *** target architecture. +*/ char * SCOTCH_archName ( const SCOTCH_Arch * const archptr) { return (archName ((const Arch * const) archptr)); } /*+ This routine returns the size of the *** given target architecture. *** It returns: *** - !0 : size of the target architecture. +*/ SCOTCH_Num SCOTCH_archSize ( const SCOTCH_Arch * const archptr) { ArchDom domdat; archDomFrst ((Arch *) archptr, &domdat); /* Get first domain */ return (archDomSize ((Arch *) archptr, &domdat)); /* Return domain size */ } /*+ This routine tells if the given architecture *** is a variable-sized architecture or not. *** It returns: *** - 0 : if the architecture is not variable-sized. *** - 1 : if the architecture is variable-sized. +*/ int SCOTCH_archVar ( const SCOTCH_Arch * const archptr) { return ((archVar ((Arch *) archptr) != 0) ? 1 : 0); } /*+ These routines fill the contents of the given *** opaque target structure so as to yield target *** architectures of the given types. *** It returns: *** - 0 : if the computation succeeded. *** - !0 : on error. +*/ int SCOTCH_archCmplt ( SCOTCH_Arch * const archptr, const SCOTCH_Num termnbr) { Arch * tgtarchptr; ArchCmplt * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archCmplt) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchCmplt *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("cmplt"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->termnbr = (Anum) termnbr; return (0); } /* ** */ int SCOTCH_archCmpltw ( SCOTCH_Arch * const archptr, const SCOTCH_Num vertnbr, const SCOTCH_Num * const velotab) { Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archCmpltw) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchptr->class = archClass ("cmpltw"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ return (archCmpltwArchBuild ((ArchCmpltw *) (void *) (&tgtarchptr->data), vertnbr, velotab)); } /* ** */ int SCOTCH_archHcub ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimnnbr) /*+ Number of dimensions +*/ { Arch * tgtarchptr; ArchHcub * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archHcub) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchHcub *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("hcub"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = (Anum) dimnnbr; return (0); } /* ** */ int SCOTCH_archMesh2 ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimxval, const SCOTCH_Num dimyval) { Arch * tgtarchptr; ArchMesh2 * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archMesh2) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchMesh2 *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("mesh2D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = 2; tgtarchdatptr->c[0] = (Anum) dimxval; tgtarchdatptr->c[1] = (Anum) dimyval; return (0); } /* ** */ int SCOTCH_archMesh3 ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimxval, const SCOTCH_Num dimyval, const SCOTCH_Num dimzval) { Arch * tgtarchptr; ArchMesh3 * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archMesh3) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchMesh3 *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("mesh3D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = 3; tgtarchdatptr->c[0] = (Anum) dimxval; tgtarchdatptr->c[1] = (Anum) dimyval; tgtarchdatptr->c[2] = (Anum) dimzval; return (0); } /* ** */ int SCOTCH_archMeshX ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimnnbr, /*+ Number of dimensions in architecture +*/ const SCOTCH_Num * const dimntab) /*+ Array of dimensions +*/ { Arch * tgtarchptr; ArchMeshX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archMeshX) ": internal error"); return (1); } if (dimnnbr > ARCHMESHDIMNMAX) { errorPrint (STRINGIFY (SCOTCH_archMeshX) ": too many dimensions"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchMeshX *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("meshXD"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = dimnnbr; memCpy (tgtarchdatptr->c, dimntab, dimnnbr * sizeof (SCOTCH_Num)); /* Copy dimension array */ return (0); } /* ** */ int SCOTCH_archSub ( SCOTCH_Arch * const subarchptr, SCOTCH_Arch * const orgarchptr, const SCOTCH_Num vnumnbr, /*+ Number of dimensions +*/ const SCOTCH_Num * const vnumtab) { Arch * tgtarchptr; ArchSub * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archSub) ": internal error"); return (2); } tgtarchptr = (Arch *) subarchptr; tgtarchdatptr = (ArchSub *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("sub"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ return (archSubArchBuild (tgtarchdatptr, (Arch *) orgarchptr, (Gnum) vnumnbr, (Gnum *) vnumtab)); } /* ** */ int SCOTCH_archTleaf ( SCOTCH_Arch * const archptr, const SCOTCH_Num levlnbr, /*+ Number of levels in architecture +*/ const SCOTCH_Num * const sizetab, /*+ Size array, by increasing level number +*/ const SCOTCH_Num * const linktab) /*+ Link cost array, by increasing level number +*/ { Anum levlnum; Anum sizeval; Arch * tgtarchptr; ArchTleaf * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archTleaf) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTleaf *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("tleaf"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ if ((tgtarchdatptr->sizetab = memAlloc ((levlnbr * 2 + 1) * sizeof (Anum))) == NULL) { /* TRICK: One more slot for linktab[-1] */ errorPrint (STRINGIFY (SCOTCH_archTleaf) ": out of memory"); return (1); } tgtarchdatptr->levlnbr = (Anum) levlnbr; tgtarchdatptr->linktab = tgtarchdatptr->sizetab + tgtarchdatptr->levlnbr + 1; tgtarchdatptr->linktab[-1] = 0; /* TRICK: Dummy slot for for level-0 communication */ tgtarchdatptr->permtab = NULL; /* Assume no permutation array */ for (levlnum = 0, sizeval = 1; levlnum < tgtarchdatptr->levlnbr; levlnum ++) { tgtarchdatptr->sizetab[levlnum] = sizetab[levlnum]; tgtarchdatptr->linktab[levlnum] = linktab[levlnum]; sizeval *= tgtarchdatptr->sizetab[levlnum]; } tgtarchdatptr->termnbr = sizeval; return (0); } /* ** */ int SCOTCH_archLtleaf ( SCOTCH_Arch * const archptr, const SCOTCH_Num levlnbr, /*+ Number of levels in architecture +*/ const SCOTCH_Num * const sizetab, /*+ Size array, by increasing level number +*/ const SCOTCH_Num * const linktab, /*+ Link cost array, by increasing level number +*/ const SCOTCH_Num permnbr, /*+ Number of permutation indices +*/ const SCOTCH_Num * const permtab) /*+ Permutation array +*/ { Anum permnum; Arch * tgtarchptr; ArchTleaf * tgtarchdatptr; if (SCOTCH_archTleaf (archptr, levlnbr, sizetab, linktab) != 0) /* Build tree part */ return (1); tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTleaf *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("ltleaf"); /* Override class */ if ((tgtarchdatptr->permtab = memAlloc (permnbr * 2 * sizeof (Anum))) == NULL) { /* TRICK: space for peritab too */ errorPrint (STRINGIFY (SCOTCH_archLtleaf) ": out of memory"); return (1); } tgtarchdatptr->permnbr = (Anum) permnbr; tgtarchdatptr->peritab = tgtarchdatptr->permtab + permnbr; for (permnum = 0; permnum < tgtarchdatptr->permnbr; permnum ++) tgtarchdatptr->permtab[permnum] = permtab[permnum]; for (permnum = 0; permnum < tgtarchdatptr->permnbr; permnum ++) /* Build inverse permutation */ tgtarchdatptr->peritab[tgtarchdatptr->permtab[permnum]] = permnum; return (0); } /* ** */ int SCOTCH_archTorus2 ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimxval, const SCOTCH_Num dimyval) { Arch * tgtarchptr; ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archTorus2) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("torus2D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = 2; tgtarchdatptr->c[0] = (Anum) dimxval; tgtarchdatptr->c[1] = (Anum) dimyval; return (0); } /* ** */ int SCOTCH_archTorus3 ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimxval, const SCOTCH_Num dimyval, const SCOTCH_Num dimzval) { Arch * tgtarchptr; ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archTorus3) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("torus3D"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = 3; tgtarchdatptr->c[0] = (Anum) dimxval; tgtarchdatptr->c[1] = (Anum) dimyval; tgtarchdatptr->c[2] = (Anum) dimzval; return (0); } /* ** */ int SCOTCH_archTorusX ( SCOTCH_Arch * const archptr, const SCOTCH_Num dimnnbr, /*+ Number of dimensions in architecture +*/ const SCOTCH_Num * const dimntab) /*+ Array of dimensions +*/ { Arch * tgtarchptr; ArchTorusX * tgtarchdatptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archTorusX) ": internal error"); return (1); } if (dimnnbr > ARCHMESHDIMNMAX) { errorPrint (STRINGIFY (SCOTCH_archTorusX) ": too many dimensions"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchdatptr = (ArchTorusX *) (void *) (&tgtarchptr->data); tgtarchptr->class = archClass ("torusXD"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ tgtarchdatptr->dimnnbr = dimnnbr; memCpy (tgtarchdatptr->c, dimntab, dimnnbr * sizeof (SCOTCH_Num)); /* Copy dimension array */ return (0); } /* ** */ int SCOTCH_archVcmplt ( SCOTCH_Arch * const archptr) { Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archVcmplt) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchptr->class = archClass ("varcmplt"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ return (0); } /* ** */ int SCOTCH_archVhcub ( SCOTCH_Arch * const archptr) { Arch * tgtarchptr; if (sizeof (SCOTCH_Num) != sizeof (Gnum)) { errorPrint (STRINGIFY (SCOTCH_archVhcub) ": internal error"); return (1); } tgtarchptr = (Arch *) archptr; tgtarchptr->class = archClass ("varhcub"); tgtarchptr->flagval = tgtarchptr->class->flagval; /* Copy architecture flag */ return (0); } scotch_6.0.9/src/libscotch/vdgraph.c0000644000302600021200000001215213560013732017616 0ustar pelegrinpelegrin/* Copyright 2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : vdgraph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the distributed **/ /** separator handling routines. **/ /** **/ /** DATES : # Version 5.0 : from : 07 feb 2006 **/ /** to 13 mar 2006 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define VDGRAPH #include "module.h" #include "common.h" #include "dgraph.h" #include "vdgraph.h" /*************************************/ /* */ /* These routines handle distributed */ /* separator graphs. */ /* */ /*************************************/ /* This routine initializes a distributed ** separator graph structure. As for the Dgraph ** structure, in order to avoid collective ** communication whenever possible, the allocation ** of send and receive index arrays is not performed ** in the routine itself, but rather delegated to ** subsequent routines such as dgraphBuild. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int vdgraphInit ( Vdgraph * restrict const grafptr, /* Distributed separator graph structure */ MPI_Comm proccomm) /* Communicator to be used for all communications */ { memSet (grafptr, 0, sizeof (Vdgraph)); /* Clear public and private graph fields */ grafptr->s.proccomm = proccomm; /* Set private fields */ MPI_Comm_size (proccomm, &grafptr->s.procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &grafptr->s.proclocnum); return (0); } /* This routine frees the contents ** of the given distributed active graph. ** It returns: ** - VOID : in all cases. */ void vdgraphExit ( Vdgraph * const grafptr) { if (grafptr->partgsttax != NULL) memFree (grafptr->partgsttax + grafptr->s.baseval); if (grafptr->fronloctab != NULL) memFree (grafptr->fronloctab); dgraphExit (&grafptr->s); /* Free distributed source graph and its private data (flagval may be corrupted afterwards) */ #ifdef SCOTCH_DEBUG_VDGRAPH2 memSet (grafptr, ~0, sizeof (Vdgraph)); #endif /* SCOTCH_DEBUG_VDGRAPH2 */ } /* This routine moves all of the graph ** vertices to the first part. ** It returns: ** - VOID : in all cases. */ void vdgraphZero ( Vdgraph * const grafptr) { memSet (grafptr->partgsttax + grafptr->s.baseval, 0, grafptr->s.vertgstnbr * sizeof (GraphPart)); /* Set all local and ghost vertices to part 0 */ grafptr->compglbloaddlt = grafptr->s.veloglbsum; grafptr->compglbload[0] = grafptr->s.veloglbsum; /* No frontier vertices */ grafptr->compglbload[1] = grafptr->compglbload[2] = 0; grafptr->compglbsize[0] = grafptr->s.vertglbnbr; grafptr->compglbsize[1] = grafptr->compglbsize[2] = 0; grafptr->complocload[0] = grafptr->s.velolocsum; grafptr->complocload[1] = grafptr->complocload[2] = 0; grafptr->complocsize[0] = grafptr->s.vertlocnbr; grafptr->complocsize[1] = grafptr->complocsize[2] = 0; } scotch_6.0.9/src/libscotch/hmesh.c0000644000302600021200000001067513303015264017274 0ustar pelegrinpelegrin/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : hmesh.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module handles the halo source **/ /** mesh functions. **/ /** **/ /** DATES : # Version 4.0 : from : 12 sep 2002 **/ /** to 10 feb 2003 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define HMESH #include "module.h" #include "common.h" #include "graph.h" #include "mesh.h" #include "hmesh.h" /****************************************/ /* */ /* These routines handle source meshes. */ /* */ /****************************************/ /* This routine frees a source halo mesh structure. ** It returns: ** - VOID : in all cases. */ void hmeshExit ( Hmesh * const meshptr) { if ((meshptr->vehdtax != NULL) && /* Exit halo mesh data */ (meshptr->vehdtax != (meshptr->m.vendtax + (meshptr->m.baseval - meshptr->m.velmbas))) && ((meshptr->m.flagval & MESHVERTGROUP) == 0)) memFree (meshptr->vehdtax + meshptr->m.velmbas); meshExit (&meshptr->m); /* Exit mesh data */ #ifdef SCOTCH_DEBUG_HMESH2 memSet (meshptr, ~0, sizeof (Hmesh)); /* Purge halo mesh fields */ #endif /* SCOTCH_DEBUG_HMESH2 */ } /* This routine sets the base of the given ** halo mesh to the given base value, and ** returns the old base value. ** It returns: ** - old base value : in all cases. */ Gnum hmeshBase ( Hmesh * const meshptr, const Gnum baseval) { Gnum baseold; /* Old base value */ Gnum baseadj; /* Base adjustment */ Gnum velmnum; if (meshptr->m.baseval == baseval) /* If nothing to do */ return (baseval); baseold = meshptr->m.baseval; /* Record old base value */ baseadj = baseval - baseold; /* Compute adjustment */ meshBase (&meshptr->m, baseval); /* Change base of mesh */ for (velmnum = meshptr->m.velmbas; velmnum < meshptr->m.velmnnd; velmnum ++) meshptr->vehdtax[velmnum] += baseadj; /* Change base of array */ meshptr->vnohnnd += baseadj; meshptr->vehdtax -= baseadj; return (baseold); /* Return old base value */ } scotch_6.0.9/src/libscotch/kgraph_map_ml.h0000644000302600021200000000752013470115365021001 0ustar pelegrinpelegrin/* Copyright 2010,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : kgraph_map_ml.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : These lines are the data declarations **/ /** for the multi-level graph mapping **/ /** routines. **/ /** **/ /** DATES : # Version 5.1 : from : 10 jul 2010 **/ /** to 10 jul 2010 **/ /** # Version 6.0 : from : 03 mar 2011 **/ /** to 07 jun 2018 **/ /** **/ /************************************************************/ /* ** The type and structure definitions. */ /*+ This structure holds the method parameters. +*/ typedef struct KgraphMapMlParam_ { INT coarnbr; /*+ Minimum number of vertices +*/ double coarval; /*+ Coarsening ratio +*/ Strat * stratlow; /*+ Strategy at lowest level +*/ Strat * stratasc; /*+ Strategy at ascending levels +*/ int typeval; /*+ Not used +*/ } KgraphMapMlParam; /* ** The function prototypes. */ #ifdef KGRAPH_MAP_ML static int kgraphMapMlCoarsen (Kgraph * const, Kgraph * restrict const, GraphCoarsenMulti * restrict * const, const KgraphMapMlParam * const); static int kgraphMapMlUncoarsen (Kgraph * restrict const, Kgraph * const, const GraphCoarsenMulti * const); static int kgraphMapMl2 (Kgraph * restrict const, const KgraphMapMlParam * const); #endif /* KGRAPH_MAP_ML */ int kgraphMapMl (Kgraph * restrict const, const KgraphMapMlParam * const); scotch_6.0.9/src/scotch/0000755000302600021200000000000013470125017015327 5ustar pelegrinpelegrinscotch_6.0.9/src/scotch/mmk_m3.h0000644000302600021200000000665013303015264016667 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mmk_m3.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the tridimensional finite **/ /** element grid mesh building program. **/ /** **/ /** DATES : # Version 4.0 : from : 26 sep 2002 **/ /** to : 26 sep 2002 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamemshout fileBlockName (C_fileTab, 0) /* Source mesh output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 1) /* Geometry mesh output file name */ #define C_filepntrmshout fileBlockFile (C_fileTab, 0) /* Source mesh output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 1) /* Geometry mesh output file */ /*+ Process flags. +*/ #define C_FLAGGEOOUT 0x0001 /* Output mesh geometry */ #define C_FLAGDEFAULT 0x0000 /* Default flags */ scotch_6.0.9/src/scotch/amk_hy.h0000644000302600021200000000734713303015264016760 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_hy.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the target architecture file **/ /** for hypercube graphs. **/ /** Here are the data declaration for the **/ /** target machine architecture functions. **/ /** **/ /** DATES : # Version 2.0 : from : 14 nov 1994 **/ /** to : 14 nov 1994 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to : 07 jul 1995 **/ /** # Version 3.1 : from : 30 may 1996 **/ /** to : 30 may 1996 **/ /** # Version 3.2 : from : 31 may 1997 **/ /** to : 31 may 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 1 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenametgtout fileBlockName (C_fileTab, 0) /* Architecture output file name */ #define C_filepntrtgtout fileBlockFile (C_fileTab, 0) /* Architecture output file */ /* ** The macro definitions. */ #ifndef abs #define abs(a) (((a) >= 0) ? (a) : -(a)) #endif /* abs */ scotch_6.0.9/src/scotch/gcv.c0000644000302600021200000002343513542631177016272 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gcv.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Bruno MARCUSSEAU (v3.1) **/ /** **/ /** FUNCTION : Part of a graph file converter. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 0.0 : from : 02 apr 1993 **/ /** to 02 apr 1993 **/ /** # Version 2.0 : from : 28 oct 1994 **/ /** to 16 nov 1994 **/ /** # Version 3.0 : from : 08 sep 1995 **/ /** to 20 sep 1995 **/ /** # Version 3.1 : from : 22 mar 1996 **/ /** to 22 mar 1996 **/ /** # Version 3.2 : from : 04 oct 1996 **/ /** to 26 may 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 21 dec 1998 **/ /** # Version 3.4 : from : 05 oct 1999 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to : 19 jan 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 11 jun 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GCV #include "module.h" #include "common.h" #include "scotch.h" #include "gcv.h" /* ** The static and global variables. */ static int C_inpFormatType = 0; /* Input graph format */ static char * C_inpFormatData = "\0"; /* Pointer to auxiliary data */ static const C_Format C_inpFormatTab[] = { /* Table of input formats */ { 'B', SCOTCH_graphGeomLoadHabo }, { 'b', SCOTCH_graphGeomLoadHabo }, { 'C', SCOTCH_graphGeomLoadChac }, { 'c', SCOTCH_graphGeomLoadChac }, { 'M', SCOTCH_graphGeomLoadMmkt }, { 'm', SCOTCH_graphGeomLoadMmkt }, { 'S', SCOTCH_graphGeomLoadScot }, { 's', SCOTCH_graphGeomLoadScot }, { '\0', NULL } }; static int C_outFormatType = 4; /* Output graph format */ static char * C_outFormatData = "\0"; /* Pointer to auxiliary data */ static C_Format C_outFormatTab[] = { /* Table of output formats */ { 'C', SCOTCH_graphGeomSaveChac }, { 'c', SCOTCH_graphGeomSaveChac }, { 'M', SCOTCH_graphGeomSaveMmkt }, { 'm', SCOTCH_graphGeomSaveMmkt }, { 'S', SCOTCH_graphGeomSaveScot }, { 's', SCOTCH_graphGeomSaveScot }, { '\0', NULL } }; static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "gcv [ [ []]] ", " -h : Display this help", " -i : Select input file format", " b : Boeing-Harwell format (matrices)", " c : Chaco v2.0 format (adjacency)", " m : Matrix Market format (edges, symmetrized)", " s : Scotch v3.0 format (adjacency)", " -o : Select output file format", " c : Chaco v2.0 format (adjacency)", " m : Matrix Market symmetric pattern format (edges)", " s : Scotch v3.0 format (adjacency)", " -V : Print program version and copyright", "", "Default option set is : '-Ib -Os'", NULL }; /*****************************/ /* */ /* This is the main function */ /* */ /*****************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; SCOTCH_Geom geomdat; int i, j; errorProg ("gcv"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give help */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'I' : /* Select input file type */ case 'i' : for (j = 0; C_inpFormatTab[j].code != '\0'; j ++) { /* Find proper format code */ if (C_inpFormatTab[j].code == argv[i][2]) { C_inpFormatType = j; C_inpFormatData = &argv[i][3]; break; } } if (C_inpFormatTab[j].code == '\0') errorPrint ("main: unprocessed option '%s'", argv[i]); break; case 'O' : /* Select input file type */ case 'o' : for (j = 0; C_outFormatTab[j].code != '\0'; j ++) { /* Find proper format code */ if (C_outFormatTab[j].code == argv[i][2]) { C_outFormatType = j; C_outFormatData = &argv[i][3]; break; } } if (C_inpFormatTab[j].code == '\0') errorPrint ("main: unprocessed option '%s'", argv[i]); break; case 'V' : fprintf (stderr, "gcv, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); SCOTCH_geomInit (&geomdat); C_inpFormatTab[C_inpFormatType].func (&grafdat, &geomdat, C_filepntrsrcinp, NULL, C_inpFormatData); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_graphCheck (&grafdat) != 0) errorPrint ("main: bad graph structure"); #endif /* SCOTCH_DEBUG_ALL */ C_outFormatTab[C_outFormatType].func (&grafdat, &geomdat, C_filepntrsrcout, C_filepntrgeoout, C_outFormatData); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_geomExit (&geomdat); SCOTCH_graphExit (&grafdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/mmk_m3.c0000644000302600021200000003005713542631133016664 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mmk_m3.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the source meshes for **/ /** tridimensional mesh source graphs. **/ /** **/ /** DATES : # Version 4.0 : from : 26 sep 2002 **/ /** to : 17 feb 2004 **/ /** # Version 5.0 : from : 13 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The nodes and elements of the **/ /** (dX,dY,dZ) mesh are numbered so that **/ /** t(0,0,0) = 0, t(1,0,0) = 1, **/ /** t(dX - 1, 0, 0) = dX - 1, t(0,1,0) = **/ /** dX, t (0, 0, 1) = dX * dY - 1, **/ /** and t(x,y,z) = (z * dY + y) * dX + x. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MMK_M3 #include "module.h" #include "common.h" #include "scotch.h" #include "mmk_m3.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW }, { FILEMODEW } }; static const int C_nghbTab[4] = { 8, 4, 2, 1 }; static const char * C_usageList[] = { "mmk_m3 [ [ []]] ", " -g : Output mesh geometry to ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source graph description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num e[3] = { 1, 1, 1 }; /* Mesh element dimensions */ SCOTCH_Num n[3]; /* Mesh node dimensions */ SCOTCH_Num c[3]; /* Vertex coordinates */ SCOTCH_Num velmnbr; /* First node number */ int flagval; /* Process flags */ int i; errorProg ("mmk_m3"); flagval = C_FLAGDEFAULT; /* Set default flags */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 3) { /* If number of parameters not reached */ if ((e[C_paraNum ++] = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'G' : /* Output mesh geometry */ case 'g' : flagval |= C_FLAGGEOOUT; if (argv[i][2] != '\0') C_filenamegeoout = &argv[i][2]; break; case 'H' : /* Give program usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "mmk_m3, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ n[0] = e[0] + 1; n[1] = e[1] + 1; n[2] = e[2] + 1; velmnbr = e[0] * e[1] * e[2]; fprintf (C_filepntrmshout, "1\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n0\t" SCOTCH_NUMSTRING "\t000\n", /* Print mesh file header */ (SCOTCH_Num) velmnbr, (SCOTCH_Num) (n[0] * n[1] * n[2]), (SCOTCH_Num) ((velmnbr + (n[0] * n[1] * n[2]) - (n[0] * n[1] + n[0] * n[2] + n[1] * n[2]) + n[0] + n[1] + n[2] - 1) * 8), (SCOTCH_Num) velmnbr); for (c[2] = 0; c[2] < e[2]; c[2] ++) { /* Output element neighbor list */ for (c[1] = 0; c[1] < e[1]; c[1] ++) { for (c[0] = 0; c[0] < e[0]; c[0] ++) fprintf (C_filepntrmshout, "8\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Output neighbors of element */ (SCOTCH_Num) ((c[2] * n[1] + c[1]) * n[0] + c[0]), (SCOTCH_Num) ((c[2] * n[1] + c[1]) * n[0] + (c[0] + 1)), (SCOTCH_Num) ((c[2] * n[1] + (c[1] + 1)) * n[0] + c[0]), (SCOTCH_Num) ((c[2] * n[1] + (c[1] + 1)) * n[0] + (c[0] + 1)), (SCOTCH_Num) (((c[2] + 1) * n[1] + c[1]) * n[0] + c[0]), (SCOTCH_Num) (((c[2] + 1) * n[1] + c[1]) * n[0] + (c[0] + 1)), (SCOTCH_Num) (((c[2] + 1) * n[1] + (c[1] + 1)) * n[0] + c[0]), (SCOTCH_Num) (((c[2] + 1) * n[1] + (c[1] + 1)) * n[0] + (c[0] + 1))); } } for (c[2] = 0; c[2] < n[2]; c[2] ++) { /* Output node neighbor list */ for (c[1] = 0; c[1] < n[1]; c[1] ++) { for (c[0] = 0; c[0] < n[0]; c[0] ++) { fprintf (C_filepntrmshout, "%d", /* Output number of neighboring elements */ C_nghbTab[(((c[0] != 0) && (c[0] != e[0])) ? 0 : 1) + (((c[1] != 0) && (c[1] != e[1])) ? 0 : 1) + (((c[2] != 0) && (c[2] != e[2])) ? 0 : 1)]); if (c[2] != 0) { /* Output neighbors of nodes */ if (c[1] != 0) { if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] - 1) * e[1] + (c[1] - 1)) * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] - 1) * e[1] + (c[1] - 1)) * e[0] + c[0])); } if (c[1] != e[1]) { if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] - 1) * e[1] + c[1]) * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] - 1) * e[1] + c[1]) * e[0] + c[0])); } } if (c[2] != e[2]) { if (c[1] != 0) { if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * e[1] + (c[1] - 1)) * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * e[1] + (c[1] - 1)) * e[0] + c[0])); } if (c[1] != e[1]) { if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * e[1] + c[1]) * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * e[1] + c[1]) * e[0] + c[0])); } } fprintf (C_filepntrmshout, "\n"); } } } if (flagval & C_FLAGGEOOUT) { /* If geometry is wanted */ fprintf (C_filepntrgeoout, "3\n" SCOTCH_NUMSTRING "\n", /* Output geometry file header */ (SCOTCH_Num) (velmnbr + n[0] * n[1] * n[2])); for (c[2] = 0; c[2] < e[2]; c[2] ++) { /* Output element coordinates */ for (c[1] = 0; c[1] < e[1]; c[1] ++) { for (c[0] = 0; c[0] < e[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING ".5\t" SCOTCH_NUMSTRING ".5\t" SCOTCH_NUMSTRING ".5\n", (SCOTCH_Num) (((c[2] * e[1]) + c[1]) * e[0] + c[0]), (SCOTCH_Num) c[0], (SCOTCH_Num) (e[1] - 1 - c[1]), (SCOTCH_Num) c[2]); } } for (c[2] = 0; c[2] <= e[2]; c[2] ++) { /* Output node coordinates */ for (c[1] = 0; c[1] <= e[1]; c[1] ++) { for (c[0] = 0; c[0] <= e[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (velmnbr + ((c[2] * n[1]) + c[1]) * n[0] + c[0]), (SCOTCH_Num) c[0], (SCOTCH_Num) (e[1] - c[1]), (SCOTCH_Num) c[2]); } } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gmk_hy.c0000644000302600021200000001656213542631177016774 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_hy.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the source graph for hypercube **/ /** graphs. **/ /** **/ /** DATES : # Version 2.0 : from : 03 nov 1994 **/ /** to 03 nov 1994 **/ /** # Version 3.0 : from : 11 jul 1995 **/ /** to 11 jul 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 06 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 map 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMK_HY #include "module.h" #include "common.h" #include "scotch.h" #include "gmk_hy.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW } }; static const char * C_usageList[] = { "gmk_hy [] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source graph description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num hdim = 1; /* Graph dimension */ SCOTCH_Num hnbr; /* Number of vertices */ SCOTCH_Num hbit; /* Most significant bit */ SCOTCH_Num hvrt; SCOTCH_Num hngb; int i; errorProg ("gmk_hy"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((hdim = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gmk_hy, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ hnbr = 1 << hdim; /* Compute number of vertices */ hbit = 1 << (hdim - 1); /* Compute highest bit value */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n0\t000\n", (SCOTCH_Num) hnbr, /* Print number of vertices */ (SCOTCH_Num) (hdim * hnbr)); /* Print number of edges (arcs) */ for (hvrt = 0; hvrt < hnbr; hvrt ++) { /* For all vertices */ fprintf (C_filepntrsrcout, "" SCOTCH_NUMSTRING "", (SCOTCH_Num) hdim); /* Output number of neighbors */ for (hngb = hbit; hngb > 0; hngb >>= 1) /* For all vertex bits */ fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, /* Write corresponding neighbor */ (SCOTCH_Num) (hvrt ^ hngb)); fprintf (C_filepntrsrcout, "\n"); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gmk_m3.c0000644000302600021200000003063513542631177016670 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_m3.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the source graph for **/ /** tridimensional mesh source graphs. **/ /** **/ /** DATES : # Version 4.0 : from : 11 feb 2002 **/ /** to : 18 may 2004 **/ /** # Version 5.0 : from : 13 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The vertices of the (dX,dY,dZ) mesh **/ /** are numbered as terminals so that **/ /** t(0,0,0) = 0, t(1,0,0) = 1, **/ /** t(dX - 1, 0, 0) = dX - 1, t(0,1,0) = **/ /** dX, t (0, 0, 1) = dX * dY - 1, **/ /** and t(x,y,z) = (z * dY + y) * dX + x. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMK_M3 #include "module.h" #include "common.h" #include "scotch.h" #include "gmk_m3.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "gmk_m3 [ [ []]] ", " -b : Set base value for output (0 or 1)", " -g : Output the geometry to ", " -h : Display this help", " -t : Build a torus rather than a mesh", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source graph description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { int flagval; /* Process flags */ SCOTCH_Num baseval; /* Base value */ SCOTCH_Num d[3] = { 1, 1, 1 }; /* Mesh dimensions */ SCOTCH_Num c[3]; /* Vertex coordinates */ int i; errorProg ("gmk_m3"); flagval = C_FLAGDEFAULT; /* Set default flags */ baseval = 0; if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 3) { /* If number of parameters not reached */ if ((d[C_paraNum ++] = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'B' : /* Set base value */ case 'b' : baseval = (SCOTCH_Num) atol (&argv[i][2]); if ((baseval < 0) || (baseval > 1)) { errorPrint ("main: invalid base value '" SCOTCH_NUMSTRING "'", (SCOTCH_Num) baseval); } break; case 'G' : /* Output the geometry */ case 'g' : flagval |= C_FLAGGEOOUT; if (argv[i][2] != '\0') C_filenamegeoout = &argv[i][2]; break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'T' : /* Build a torus */ case 't' : flagval |= C_FLAGTORUS; break; case 'V' : fprintf (stderr, "gmk_m3, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ if (flagval & C_FLAGTORUS) { /* Build a torus */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t000\n", (SCOTCH_Num) (d[0] * d[1] * d[2]), /* Print number of vertices */ (SCOTCH_Num) ((6 * d[0] * d[1] * d[2]) - /* Print number of edges (arcs) */ ((d[0] < 3) ? (2 * d[1] * d[2]) : 0) - ((d[1] < 3) ? (2 * d[0] * d[2]) : 0) - ((d[2] < 3) ? (2 * d[0] * d[1]) : 0)), (SCOTCH_Num) baseval); for (c[2] = 0; c[2] < d[2]; c[2] ++) { /* Output neighbor list */ for (c[1] = 0; c[1] < d[1]; c[1] ++) { for (c[0] = 0; c[0] < d[0]; c[0] ++) { fprintf (C_filepntrsrcout, SCOTCH_NUMSTRING, (SCOTCH_Num) (((d[0] > 2) ? 3 : d[0]) + /* Output number of neighbors */ ((d[1] > 2) ? 3 : d[1]) + ((d[2] > 2) ? 3 : d[2]) - 3)); if (d[2] > 2) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, /* Output the neighbors */ (SCOTCH_Num) ((((c[2] + d[2] - 1) % d[2]) * d[1] + c[1]) * d[0] + c[0] + baseval)); if (d[1] > 2) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + ((c[1] + d[1] - 1) % d[1])) * d[0] + c[0] + baseval)); if (d[0] > 2) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] * d[1] + c[1]) * d[0] + (c[0] + d[0] - 1) % d[0])) + baseval); if (d[0] > 1) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + c[1]) * d[0] + ((c[0] + 1) % d[0]) + baseval)); if (d[1] > 1) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + ((c[1] + 1) % d[1])) * d[0] + c[0] + baseval)); if (d[2] > 1) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((((c[2] + 1) % d[2]) * d[1] + c[1]) * d[0] + c[0] + baseval)); fprintf (C_filepntrsrcout, "\n"); } } } } else { /* Build a mesh */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t000\n", (SCOTCH_Num) (d[0] * d[1] * d[2]), (SCOTCH_Num) ((d[0] * d[1] * d[2] * 3 - (d[0] * d[1] + d[0] * d[2] + d[1] * d[2])) * 2), (SCOTCH_Num) baseval); for (c[2] = 0; c[2] < d[2]; c[2] ++) { /* Output neighbor list */ for (c[1] = 0; c[1] < d[1]; c[1] ++) { for (c[0] = 0; c[0] < d[0]; c[0] ++) { fprintf (C_filepntrsrcout, "%d", ((c[0] == 0) ? 0 : 1) + /* Output number of neighbors */ ((c[0] == (d[0] - 1)) ? 0 : 1) + ((c[1] == 0) ? 0 : 1) + ((c[1] == (d[1] - 1)) ? 0 : 1) + ((c[2] == 0) ? 0 : 1) + ((c[2] == (d[2] - 1)) ? 0 : 1)); if (c[2] != 0) /* Output the neighbors */ fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] - 1) * d[1] + c[1]) * d[0] + c[0] + baseval)); if (c[1] != 0) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + c[1] - 1) * d[0] + c[0] + baseval)); if (c[0] != 0) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + c[1]) * d[0] + c[0] - 1 + baseval)); if (c[0] != (d[0] - 1)) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + c[1]) * d[0] + c[0] + 1 + baseval)); if (c[1] != (d[1] - 1)) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[2] * d[1] + c[1] + 1) * d[0] + c[0] + baseval)); if (c[2] != (d[2] - 1)) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[2] + 1) * d[1] + c[1]) * d[0] + c[0] + baseval)); fprintf (C_filepntrsrcout, "\n"); } } } } if (flagval & C_FLAGGEOOUT) { /* If geometry is wanted */ fprintf (C_filepntrgeoout, "3\n" SCOTCH_NUMSTRING "\n", /* Output geometry file header */ (SCOTCH_Num) (d[0] * d[1] * d[2])); for (c[2] = 0; c[2] < d[2]; c[2] ++) { /* Output mesh coordinates */ for (c[1] = 0; c[1] < d[1]; c[1] ++) { for (c[0] = 0; c[0] < d[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) ((c[2] * d[1] + c[1]) * d[0] + c[0] + baseval), (SCOTCH_Num) c[0], (SCOTCH_Num) (d[1] - 1 - c[1]), (SCOTCH_Num) c[2]); } } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gout_o.c0000644000302600021200000012624413542631177017011 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2012,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gout_o.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a result viewer. **/ /** This module contains output routines. **/ /** **/ /** DATES : # Version 2.0 : from : 07 oct 1994 **/ /** to 23 dec 1994 **/ /** # Version 3.0 : from : 14 jul 1995 **/ /** to 03 oct 1995 **/ /** # Version 3.1 : from : 28 mar 1996 **/ /** to 03 jun 1996 **/ /** # Version 3.2 : from : 02 dec 1996 **/ /** to 05 jun 1998 **/ /** # Version 3.3 : from : 29 may 1999 **/ /** to : 03 jun 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 11 dec 2001 **/ /** # Version 5.0 : from : 25 may 2007 **/ /** to 18 jun 2007 **/ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes */ #define GOUT #include "module.h" #include "common.h" #include "scotch.h" #include "gout_c.h" #include "gout_o.h" /* ** The static and global variables */ static O_OutParam O_outParam = { /* Parameter structure */ O_OUTTYPEINVMESH, /* Default output type */ { 'c', 'v' }, /* OpenInventor mesh defaults */ { 'f' }, /* PostScript matrix defaults */ { 'f', 'g', /* PostScript mesh defaults */ 'v', 'd', 's', { { 0.0, 0.0 } }, { { 1.0, 1.0 } } }, { 'c', 'v', 'a' } }; /* Tulip graph defaults */ static C_ParseCode O_outList[] = { /* Output code list */ { O_OUTTYPEINVMESH, "i" }, { O_OUTTYPEPOSMATR, "m" }, { O_OUTTYPEPOSMESH, "p" }, { O_OUTTYPETULMESH, "t" }, { O_OUTTYPENBR, NULL } }; static C_ParseArg O_outArg[] = { /* Output type argument list */ { "c", O_OUTTYPEINVMESH, NULL, &O_outParam.InvMesh.color }, { "g", O_OUTTYPEINVMESH, NULL, &O_outParam.InvMesh.color }, { "r", O_OUTTYPEINVMESH, NULL, &O_outParam.InvMesh.edge }, { "v", O_OUTTYPEINVMESH, NULL, &O_outParam.InvMesh.edge }, { "e", O_OUTTYPEPOSMATR, NULL, &O_outParam.PosMatr.type }, { "f", O_OUTTYPEPOSMATR, NULL, &O_outParam.PosMatr.type }, { "c", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.color }, { "g", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.color }, { "e", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.type }, { "f", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.type }, { "l", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.clip }, { "s", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.clip }, { "a", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.disk }, { "d", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.disk }, { "r", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.edge }, { "v", O_OUTTYPEPOSMESH, NULL, &O_outParam.PosMesh.edge }, { "x", O_OUTTYPEPOSMESH, "%lf", &O_outParam.PosMesh.min.x }, { "X", O_OUTTYPEPOSMESH, "%lf", &O_outParam.PosMesh.max.x }, { "y", O_OUTTYPEPOSMESH, "%lf", &O_outParam.PosMesh.min.y }, { "Y", O_OUTTYPEPOSMESH, "%lf", &O_outParam.PosMesh.max.y }, { "b", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.color }, { "c", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.color }, { "r", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.edge }, { "v", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.edge }, { "a", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.disk }, { "d", O_OUTTYPETULMESH, NULL, &O_outParam.TulMesh.disk }, { NULL, O_OUTTYPENBR, "", NULL } }; static double outcolorcoltab[16][3] = { /* Color list */ { 1.00, 0.00, 0.00 }, /* Red */ { 0.00, 1.00, 0.00 }, /* Green */ { 1.00, 1.00, 0.00 }, /* Yellow */ { 0.00, 0.00, 1.00 }, /* Blue */ { 1.00, 0.00, 1.00 }, /* Magenta */ { 0.00, 1.00, 1.00 }, /* Cyan */ { 1.00, 0.50, 0.20 }, /* Orange */ { 0.30, 0.55, 0.00 }, /* Olive */ { 0.72, 0.47, 0.47 }, /* Dark pink */ { 0.33, 0.33, 0.81 }, /* Sea blue */ { 1.00, 0.63, 0.63 }, /* Pink */ { 0.62, 0.44, 0.65 }, /* Violet */ { 0.60, 0.80, 0.70 }, /* Pale green */ { 0.47, 0.20, 0.00 }, /* Brown */ { 0.00, 0.68, 0.68 }, /* Turquoise */ { 0.81, 0.00, 0.40 } }; /* Purple */ static double outcolorblwtab[8][3] = { /* Grey list */ { 1.00, 1.00, 1.00 }, { 0.20, 0.20, 0.20 }, { 0.50, 0.50, 0.50 }, { 0.80, 0.80, 0.80 }, { 0.30, 0.30, 0.30 }, { 0.90, 0.90, 0.90 }, { 0.40, 0.40, 0.40 }, { 0.70, 0.70, 0.70 } }; /****************************************/ /* */ /* This is the color selection routine. */ /* */ /****************************************/ void outColorBlw ( const SCOTCH_Num labl, double color[]) { if (labl == (-1)) { color[0] = color[1] = color[2] = 1.0L; } else { color[0] = (double) outcolorblwtab[labl % 8][0]; color[1] = (double) outcolorblwtab[labl % 8][1]; color[2] = (double) outcolorblwtab[labl % 8][2]; } } void outColorColor ( const SCOTCH_Num labl, double color[]) { if (labl == (-1)) { color[0] = color[1] = color[2] = 1.0L; } else { color[0] = (double) outcolorcoltab[labl % 16][0]; color[1] = (double) outcolorcoltab[labl % 16][1]; color[2] = (double) outcolorcoltab[labl % 16][2]; } } /****************************/ /* */ /* The main output routine. */ /* */ /****************************/ /* This routine parses the output ** option string. ** It returns: ** - 0 : if string successfully scanned. ** - 1 : if invalid options ** - 2 : if invalid option arguments. ** - 3 : if syntax error in string. */ int outDrawParse ( char * const string) { return (C_parse (O_outList, O_outArg, (int * const) (void *) &O_outParam.type, string)); } /* This routine is the generic output call. ** It returns: ** - VOID : in all cases. */ void outDraw ( const C_Graph * const grafptr, /* Graph structure */ const C_Geometry * const geomptr, /* Graph geometry */ const C_Mapping * const mapptr, /* Result mapping */ FILE * const stream) /* Output stream */ { switch (O_outParam.type) { case O_OUTTYPEINVMESH : /* Mesh OpenInventor output type */ outDrawInvMesh (grafptr, geomptr, mapptr, stream); break; case O_OUTTYPEPOSMATR : /* Matrix PostScript output type */ outDrawPosMatr (grafptr, geomptr, mapptr, stream); break; case O_OUTTYPEPOSMESH : /* Mesh PostScript output type */ outDrawPosMesh (grafptr, geomptr, mapptr, stream); break; case O_OUTTYPETULMESH : /* Mesh Tulip output type */ outDrawTulMesh (grafptr, geomptr, mapptr, stream); break; default : errorPrint ("outDraw: invalid output method '%d'", O_outParam.type); } } /****************************************/ /* */ /* This is the Inventor output routine. */ /* */ /****************************************/ int outDrawInvMesh ( const C_Graph * const grafptr, /* Graph structure, sorted by vertex index */ const C_Geometry * const geomptr, /* Graph geometry, sorted by vertex label */ const C_Mapping * const mapptr, /* Result mapping, sorted by vertex label */ FILE * const stream) /* Output stream */ { void (* outcolor) (const SCOTCH_Num, double[]); /* Color routine */ O_InvMeshPath * pattab; /* Array of path building data */ int * idxtab; /* Array of indexes */ int idxnbr; /* Number of indexes */ time_t pictime; /* Creation time */ double color[3]; /* Vertex color */ int i, j, k; if (geomptr->verttab == NULL) { errorPrint ("outDrawInvMesh: geometry not provided"); return (1); } time (&pictime); /* Get current time */ outcolor = (O_outParam.InvMesh.color == 'c') ? outColorColor : outColorBlw; /* Select color output routine */ if (((idxtab = (int *) memAlloc ((grafptr->edgenbr / 2) * 3 * sizeof (int))) == NULL) || ((pattab = (O_InvMeshPath *) memAlloc (grafptr->vertnbr * sizeof (O_InvMeshPath))) == NULL)) { errorPrint ("outDrawInvMesh: out of memory"); if (idxtab != NULL) memFree (idxtab); return (1); } idxnbr = 0; /* No indexes yet */ for (i = 0, j = 0; i < grafptr->vertnbr; i ++) { /* For all vertices */ pattab[i].nbr = 0; /* Compute the number of output paths */ pattab[i].idx = grafptr->verttab[i]; for ( ; j < grafptr->vendtab[i]; j ++) { if ((grafptr->edgetab[j] > i) && /* If it can be an output edge */ ((O_outParam.InvMesh.edge != 'r') || /* And this edge can be drawn */ (mapptr->labltab[i] == mapptr->labltab[grafptr->edgetab[j]]))) pattab[i].nbr ++; /* One more path to higher vertices */ } } for (i = 0; i < grafptr->vertnbr; ) { /* For all vertices */ if (pattab[i].nbr == 0) { /* If no output path for this vertex */ i ++; /* Skip to next vertex */ continue; } j = i; /* Begin with this vertex */ idxtab[idxnbr ++] = j; /* Add it to the current segment */ do { for (k = pattab[j].idx; k < grafptr->vendtab[j]; k ++) { /* Search for first output */ if ((grafptr->edgetab[k] > j) && /* If it can be an output edge */ ((O_outParam.InvMesh.edge != 'r') || /* And this edge can be drawn */ (mapptr->labltab[j] == mapptr->labltab[grafptr->edgetab[k]]))) break; } pattab[j].nbr --; /* One less output path remaining */ pattab[j].idx = k + 1; /* Search from the next position */ j = grafptr->edgetab[k]; /* Get the path end vertex number */ idxtab[idxnbr ++] = j; /* Add it to the current segment */ } while (pattab[j].nbr > 0); /* As long as there is a path */ idxtab[idxnbr ++] = ~0; /* Mark end of path */ } fprintf (stream, "#Inventor V2.0 ascii\n"); /* Write header */ fprintf (stream, "#Title: %s %s %s\n", C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); fprintf (stream, "#Creator: out (F. Pellegrini, LaBRI, Bordeaux)\n"); fprintf (stream, "#CreationDate: %s", ctime (&pictime)); if (idxnbr == 0) /* If nothing to write */ return (0); fprintf (stream, "Separator {\n"); fprintf (stream, " LightModel {\n model\t\tBASE_COLOR\n }\n"); fprintf (stream, " DrawStyle {\n style\t\tLINES\n }\n"); fprintf (stream, " MaterialBinding {\n value\t\tPER_VERTEX\n }\n"); fprintf (stream, " Coordinate3 {\n point [\n\t%g\t%g\t%g", /* Write vertex coordinates */ geomptr->verttab[0].x, geomptr->verttab[0].y, geomptr->verttab[0].z); for (i = 1; i < grafptr->vertnbr; i ++) fprintf (stream, ",\n\t%g\t%g\t%g", geomptr->verttab[i].x, geomptr->verttab[i].y, geomptr->verttab[i].z); fprintf (stream, " ]\n }\n"); fprintf (stream, " BaseColor {\n rgb ["); /* Write color vector */ for (i = 0; i < idxnbr - 2; i ++) { if (idxtab[i] != ~0) { outcolor (mapptr->labltab[idxtab[i]], color); fprintf (stream, "\n\t%g\t%g\t%g,", (double) color[0], (double) color[1], (double) color[2]); } } outcolor (mapptr->labltab[idxtab[idxnbr - 2]], color); fprintf (stream, "\n\t%g\t%g\t%g ]\n }\n", (double) color[0], (double) color[1], (double) color[2]); fprintf (stream, " IndexedLineSet {\n coordIndex ["); /* Write set of lines */ for (i = 0; i < idxnbr - 1; i ++) { if ((i % 8) == 0) fprintf (stream, "\n"); fprintf (stream, "\t%d,", idxtab[i]); /* ~0 is "1" */ } if (((idxnbr - 1) % 8) == 0) fprintf (stream, "\n"); fprintf (stream, "\t-1 ]\n }\n"); fprintf (stream, "}\n"); /* Write end of separator */ #if 0 for (i = 0; i < grafptr->vertnbr; i ++) { /* For all vertices */ outcolor (mapptr->labltab[i], color); fprintf (stream, "Separator { Translation { translation %lg %lg %lg } BaseColor { rgb [ %lg %lg %lg ] } Sphere { radius 0.3 } }\n", geomptr->verttab[i].x, geomptr->verttab[i].y, geomptr->verttab[i].z, (double) color[0], (double) color[1], (double) color[2]); } #endif memFree (pattab); /* Free path array */ memFree (idxtab); /* Free index array */ return (0); } /*************************************************/ /* */ /* This is the PostScript matrix output routine. */ /* */ /*************************************************/ int outDrawPosMatr ( const C_Graph * const grafptr, /* Graph structure, sorted by vertex index */ const C_Geometry * const geomptr, /* Graph geometry, sorted by vertex label */ const C_Mapping * const mapptr, /* Result mapping, sorted by vertex label */ FILE * const stream) /* Output stream */ { SCOTCH_Num * nonztab; /* Array of non-zero entries */ SCOTCH_Num nonzfrst; /* First non-zero entry of area */ SCOTCH_Num nonzlast; /* Last non-zero entry of area */ double pictsize; /* Number of distinct coordinates */ double pictdisp; /* Size of the matrix display (in inches) */ time_t picttime; /* Creation time */ SCOTCH_Num colnum; SCOTCH_Num vertnum; SCOTCH_Num * edgeptr; if ((nonztab = memAlloc ((grafptr->vertnbr + 1) * sizeof (SCOTCH_Num))) == NULL) { errorPrint ("outDrawPosMatr: out of memory"); return (1); } time (&picttime); /* Get current time */ pictsize = (double) (grafptr->vertnbr + 1); /* Get matrix size */ pictdisp = MIN (O_PSPICTWIDTH, O_PSPICTHEIGHT); if (O_outParam.PosMatr.type == 'e') { /* EPSF-type output */ fprintf (stream, "%%!PS-Adobe-2.0 EPSF-2.0\n"); fprintf (stream, "%%%%Title: %s %s %s\n", C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); fprintf (stream, "%%%%Creator: out (F. Pellegrini, LaBRI, Bordeaux)\n"); fprintf (stream, "%%%%CreationDate: %s", ctime (&picttime)); fprintf (stream, "%%%%BoundingBox: 0 0 %d %d\n", (int) (pictdisp * O_PSDPI), (int) (pictdisp * O_PSDPI)); fprintf (stream, "%%%%Pages: 0\n"); fprintf (stream, "%%%%EndComments\n"); } else { /* Full page output */ fprintf (stream, "%%!PS-Adobe-2.0\n"); fprintf (stream, "%%%%Title: %s %s %s\n", C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); fprintf (stream, "%%%%Creator: out (F. Pellegrini, LaBRI, Bordeaux)\n"); fprintf (stream, "%%%%CreationDate: %s", ctime (&picttime)); } fprintf (stream, "/p { pop } bind def\n"); fprintf (stream, "/h { 3 1 roll exch 2 copy moveto 2 copy 1 add 5 -3 roll 3 1 roll add exch 2 copy lineto 1 add lineto lineto fill } bind def\n"); fprintf (stream, "/v { 3 copy pop moveto 2 copy add exch pop exch 3 copy pop pop 1 add dup 3 -1 roll lineto exch dup 3 1 roll lineto lineto fill } bind def\n"); fprintf (stream, "/b { 3 copy v 3 copy h pop pop } bind def\n"); fprintf (stream, "/c { 1 3 copy v 3 copy h pop pop } bind def\n"); fprintf (stream, "gsave\n"); /* Save the context */ fprintf (stream, "0 setlinecap\n"); /* Perform miter caps */ if (O_outParam.PosMatr.type == 'f') /* If full page output */ fprintf (stream, "%d %d translate\n", /* Center the picture */ (int) (O_PSDPI * (O_PSPAGEWIDTH - pictdisp)) / 2, (int) (O_PSDPI * (O_PSPAGEWIDTH - pictdisp)) / 2); fprintf (stream, "%f %f scale\n", /* Print scaling factor */ (double) O_PSDPI * pictdisp / pictsize, (double) O_PSDPI * pictdisp / pictsize); fprintf (stream, "[ 1 0 0 -1 0 %d ] concat\n", /* Reverse Y coordinate */ (int) (grafptr->vertnbr + 1)); fprintf (stream, "0 setgray newpath\n"); /* Select black color */ for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { colnum = (mapptr->labltab[vertnum] == ~0) ? vertnum : mapptr->labltab[vertnum]; fprintf (stream, SCOTCH_NUMSTRING "\n", /* Set column value */ (SCOTCH_Num) colnum); memset (nonztab, 0, (colnum + 2) * sizeof (SCOTCH_Num)); for (edgeptr = grafptr->edgetab + grafptr->verttab[colnum]; edgeptr < grafptr->edgetab + grafptr->vendtab[colnum]; edgeptr ++) { if (*edgeptr < colnum) nonztab[*edgeptr] = 1; } nonztab[colnum] = 1; /* Diagonal is non-zero */ for (nonzfrst = 0; nonzfrst <= vertnum; nonzfrst ++) { if (nonztab[nonzfrst] != 0) { /* A non-zero has been found */ for (nonzlast = nonzfrst; nonztab[nonzlast] != 0; nonzlast ++) ; if ((nonzlast - nonzfrst) > 1) /* Draw row block coefficient */ fprintf (stream, SCOTCH_NUMSTRING " " SCOTCH_NUMSTRING " b\n", (SCOTCH_Num) nonzfrst, (SCOTCH_Num) (nonzlast - nonzfrst)); else fprintf (stream, SCOTCH_NUMSTRING " c\n", (SCOTCH_Num) nonzfrst); nonzfrst = nonzlast - 1; } } fprintf (stream, "p "); /* Close the column */ } fprintf (stream, "\ngrestore\n"); /* Restore context */ if (O_outParam.PosMatr.type == 'f') /* If full page output */ fprintf (stream, "showpage\n"); /* Display the page */ memFree (nonztab); return (0); } /***********************************************/ /* */ /* This is the PostScript mesh output routine. */ /* */ /***********************************************/ int outDrawPosMesh ( const C_Graph * const grafptr, /* Graph structure, sorted by vertex index */ const C_Geometry * const geomptr, /* Graph geometry, sorted by vertex label */ const C_Mapping * const mapptr, /* Result mapping, sorted by vertex label */ FILE * const stream) /* Output stream */ { int idxnbr; /* Number of indexes */ int * idxtab; /* Array of indexes */ O_PosMeshPath * pattab; /* Array of path building data */ O_PosMeshVertex * pictab; /* Array of 2D coordinates, sorted by vertex index */ O_Point picmin; /* Picture minimum and maximum coordinates */ O_Point picmax; O_Point picdelt; double picscale; /* Scaling factor */ double picsrad; /* Square of circle radius */ time_t pictime; /* Creation time */ double color[3]; /* Color values */ int i, j, k; if (geomptr->verttab == NULL) { errorPrint ("outDrawPosMesh: geometry not provided"); return (1); } time (&pictime); /* Get current time */ if (((pictab = (O_PosMeshVertex *) memAlloc (grafptr->vertnbr * sizeof (O_PosMeshVertex))) == NULL) || ((idxtab = (int *) memAlloc ((grafptr->edgenbr / 2) * 3 * sizeof (int))) == NULL) || ((pattab = (O_PosMeshPath *) memAlloc (grafptr->vertnbr * sizeof (O_PosMeshPath))) == NULL)) { errorPrint ("outDrawPosMesh: out of memory"); if (pictab != NULL) { if (idxtab != NULL) memFree (idxtab); memFree (pictab); } return (1); } for (i = 0; i < grafptr->vertnbr; i ++) { /* For all vertex indices */ pictab[i].pos.x = geomptr->verttab[i].x + /* Project 3D coordinates into 2D ones */ geomptr->verttab[i].z * (O_POSMESHISOCOS * O_POSMESHISOREDUC); pictab[i].pos.y = geomptr->verttab[i].y + geomptr->verttab[i].z * (O_POSMESHISOSIN * O_POSMESHISOREDUC); } picmin.x = picmin.y = 1e30; /* Pre-set coordinates extrema */ picmax.x = picmax.y = -1e30; if (O_outParam.PosMesh.clip == 'l') { /* If clipping encompasses disks */ for (i = 0, j = 0; i < grafptr->vertnbr; i ++) { pictab[i].rad = 1e30; /* Assume a huge square of radius */ for ( ; j < grafptr->vendtab[i]; j ++) { k = grafptr->edgetab[j]; picsrad = (pictab[i].pos.x - pictab[k].pos.x) * (pictab[i].pos.x - pictab[k].pos.x) + (pictab[i].pos.y - pictab[k].pos.y) * (pictab[i].pos.y - pictab[k].pos.y); if (picsrad < pictab[i].rad) /* Get the smallest square of radius */ pictab[i].rad = picsrad; } pictab[i].rad = sqrt (pictab[i].rad) / 2.0; /* Keep the half-distance for radius */ if ((pictab[i].pos.x - pictab[i].rad) < picmin.x) /* Update extrema if necessary */ picmin.x = pictab[i].pos.x - pictab[i].rad; if ((pictab[i].pos.y - pictab[i].rad) < picmin.y) picmin.y = pictab[i].pos.y - pictab[i].rad; if ((pictab[i].pos.x + pictab[i].rad) > picmax.x) picmax.x = pictab[i].pos.x + pictab[i].rad; if ((pictab[i].pos.y + pictab[i].rad) > picmax.y) picmax.y = pictab[i].pos.y + pictab[i].rad; } } else { /* Border clipping */ for (i = 0; i < grafptr->vertnbr; i ++) { /* For all vertex indices */ if (pictab[i].pos.x < picmin.x) /* Update extrema if necessary */ picmin.x = pictab[i].pos.x; if (pictab[i].pos.y < picmin.y) picmin.y = pictab[i].pos.y; if (pictab[i].pos.x > picmax.x) picmax.x = pictab[i].pos.x; if (pictab[i].pos.y > picmax.y) picmax.y = pictab[i].pos.y; } } picdelt.x = picmax.x - picmin.x; /* Compute picture extents */ picdelt.y = picmax.y - picmin.y; picmin.x += picdelt.x * O_outParam.PosMesh.min.x; /* Resize picture (if necessary) */ picmin.y += picdelt.y * O_outParam.PosMesh.min.y; picmax.x -= picdelt.x * (1.0L - O_outParam.PosMesh.max.x); picmax.y -= picdelt.y * (1.0L - O_outParam.PosMesh.max.y); picdelt.x = picmax.x - picmin.x; /* Recompute picture extents */ picdelt.y = picmax.y - picmin.y; picscale = (picdelt.x == 0.0L) /* Compute scaling factor */ ? ((picdelt.y == 0.0L) ? 1.0L : (O_PSPICTHEIGHT / picdelt.y)) : ((picdelt.y == 0.0L) ? (O_PSPICTWIDTH / picdelt.x) : MIN (O_PSPICTWIDTH / picdelt.x, O_PSPICTHEIGHT / picdelt.y)); picdelt.x *= picscale * O_POSMESHPICTRESOL; /* Rescale extents */ picdelt.y *= picscale * O_POSMESHPICTRESOL; for (i = 0; i < grafptr->vertnbr; i ++) { pictab[i].pos.x = (pictab[i].pos.x - picmin.x) * picscale * O_POSMESHPICTRESOL; /* Rescale coordinates */ pictab[i].pos.y = (pictab[i].pos.y - picmin.y) * picscale * O_POSMESHPICTRESOL; } if (O_outParam.PosMesh.disk == 'd') { /* If disks wanted */ for (i = 0, j = 0; i < grafptr->vertnbr; i ++) { pictab[i].rad = 1e30; /* Assume huge square of radius */ for ( ; j < grafptr->vendtab[i]; j ++) { k = grafptr->edgetab[j]; picsrad = (pictab[i].pos.x - pictab[k].pos.x) * (pictab[i].pos.x - pictab[k].pos.x) + (pictab[i].pos.y - pictab[k].pos.y) * (pictab[i].pos.y - pictab[k].pos.y); if (picsrad < pictab[i].rad) /* Get smallest square of radius */ pictab[i].rad = picsrad; } pictab[i].rad = sqrt (pictab[i].rad) / 2.0; /* Keep the half-distance for radius */ if (pictab[i].rad < 1.0L) /* Always get a non-zero radius */ pictab[i].rad = 1.0L; pictab[i].vis = ((pictab[i].pos.x > - pictab[i].rad) && /* Compute vertex visibility */ (pictab[i].pos.x < picdelt.x + pictab[i].rad) && (pictab[i].pos.y > - pictab[i].rad) && (pictab[i].pos.y < picdelt.y + pictab[i].rad)) ? 1 : 0; } } else { /* If disks not wanted */ for (i = 0; i < grafptr->vertnbr; i ++) pictab[i].vis = ((pictab[i].pos.x > 0.0L) && /* Compute vertex visibility */ (pictab[i].pos.x < picdelt.x) && (pictab[i].pos.y > 0.0L) && (pictab[i].pos.y < picdelt.y)) ? 1 : 0; } for (i = 0; i < grafptr->vertnbr; i ++) { pictab[i].pos.x += 0.5L; /* Prepare to switch to integer coordinates */ pictab[i].pos.y += 0.5L; } picdelt.x += 0.5L; picdelt.y += 0.5L; if (O_outParam.PosMesh.color == 'c') { /* If color output */ for (i = 0; i < grafptr->vertnbr; i ++) /* Select color for all vertices */ pictab[i].col = mapptr->labltab[i] % O_POSMESHCOLNBR; } else { /* If gray level output */ for (i = 0; i < grafptr->vertnbr; i ++) { /* Select color for all vertices */ for (j = mapptr->labltab[i] & 255, k = 7, pictab[i].col = 0; /* Half-tone color */ j > 0; /* As long as there are subdivision bits */ j >>= 1, k --) /* (Same as reversing the last 8 bits ) */ pictab[i].col |= ((j & 1) << k); } } for (i = 0, j = 0; i < grafptr->vertnbr; i ++) { /* For all vertices */ pattab[i].nbr = 0; /* Compute the number of output paths */ pattab[i].idx = grafptr->verttab[i]; for ( ; j < grafptr->vendtab[i]; j ++) { if ((grafptr->edgetab[j] > i) && /* If it can be an output edge */ ((pictab[i].vis | pictab[grafptr->edgetab[j]].vis) != 0) && /* And it is visible */ ((O_outParam.PosMesh.edge != 'r') || /* And it can be drawn */ (mapptr->labltab[i] == mapptr->labltab[grafptr->edgetab[j]]))) pattab[i].nbr ++; /* One more path to higher vertices */ } } idxnbr = 0; /* No indexes yet */ for (i = 0; i < grafptr->vertnbr; ) { if (pattab[i].nbr == 0) { /* If no output path */ i ++; /* Skip to the next vertex */ continue; } j = i; /* Begin with this vertex */ idxtab[idxnbr ++] = j; /* Add it to the current segment */ do { for (k = pattab[j].idx; k < grafptr->vendtab[j]; k ++) { /* Search for first output */ if ((grafptr->edgetab[k] > j) && /* If it can be an output edge */ ((pictab[j].vis | pictab[grafptr->edgetab[k]].vis) != 0) && /* And it is visible */ ((O_outParam.InvMesh.edge != 'r') || /* And it can be drawn */ (mapptr->labltab[j] == mapptr->labltab[grafptr->edgetab[k]]))) break; } pattab[j].nbr --; /* One less output path remaining */ pattab[j].idx = k + 1; /* Search from the next position */ j = grafptr->edgetab[k]; /* Get the path end vertex number */ idxtab[idxnbr ++] = j; /* Add it to the current segment */ } while (pattab[j].nbr > 0); /* As long as there is a path */ idxtab[idxnbr ++] = ~0; /* Mark end of path */ } if (O_outParam.PosMesh.type == 'e') { /* EPSF-type output */ fprintf (stream, "%%!PS-Adobe-2.0 EPSF-2.0\n"); fprintf (stream, "%%%%Title: %s %s %s\n", C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); fprintf (stream, "%%%%Creator: out (F. Pellegrini, LaBRI, Bordeaux)\n"); fprintf (stream, "%%%%CreationDate: %s", ctime (&pictime)); fprintf (stream, "%%%%BoundingBox: 0 0 %d %d\n", (int) ((picdelt.x * O_PSDPI) / O_POSMESHPICTRESOL), (int) ((picdelt.y * O_PSDPI) / O_POSMESHPICTRESOL)); fprintf (stream, "%%%%Pages: 0\n"); fprintf (stream, "%%%%EndComments\n"); } else { /* Full page output */ fprintf (stream, "%%!PS-Adobe-2.0\n"); fprintf (stream, "%%%%Title: %s %s %s\n", C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); fprintf (stream, "%%%%Creator: out (F. Pellegrini, LaBRI, Bordeaux)\n"); fprintf (stream, "%%%%CreationDate: %s", ctime (&pictime)); } fprintf (stream, "/A { 0 360 arc fill } bind def\n"); /* Macro definitions */ if (O_outParam.PosMesh.color == 'c') { /* If color output */ for (i = 0; i < O_POSMESHCOLNBR; i ++) { /* Build color indexes */ outColorColor (i, color); fprintf (stream, "/C%c { %g %g %g setrgbcolor } bind def\n", ('a' + i), color[0], color[1], color[2]); } } fprintf (stream, "/G { 255 div setgray } bind def\n"); fprintf (stream, "/L { lineto stroke } bind def\n"); fprintf (stream, "/l { lineto } bind def\n"); fprintf (stream, "/m { moveto } bind def\n"); fprintf (stream, "gsave\n"); /* Save the context */ fprintf (stream, "1 setlinecap\n"); /* Perform round caps */ if (O_outParam.PosMesh.type == 'f') /* If full page output */ fprintf (stream, "%d %d translate\n", /* Center the picture */ (int) ((O_PSDPI * (O_PSPAGEWIDTH * O_POSMESHPICTRESOL - picdelt.x)) / (2 * O_POSMESHPICTRESOL)), (int) ((O_PSDPI * (O_PSPAGEHEIGHT * O_POSMESHPICTRESOL - picdelt.y)) / (2 * O_POSMESHPICTRESOL))); fprintf (stream, "%f %f scale\n", /* Print scaling factor */ (double) O_PSDPI / O_POSMESHPICTRESOL, (double) O_PSDPI / O_POSMESHPICTRESOL); fprintf (stream, "newpath 0 0 m %d 0 l %d %d l 0 %d l closepath clip\n", /* Clip picture */ (int) picdelt.x, (int) picdelt.x, (int) picdelt.y, (int) picdelt.y); fprintf (stream, "0 G\n"); /* Select black color */ for (i = 0; i < idxnbr; i ++) { fprintf (stream, "%d\t%d\tm\n", /* Set initial point */ (int) pictab[idxtab[i]].pos.x, (int) pictab[idxtab[i]].pos.y); for (i ++; idxtab[i] != ~0; i ++ ) { /* Build path */ fprintf (stream, "%d\t%d\t%c\n", (int) pictab[idxtab[i]].pos.x, (int) pictab[idxtab[i]].pos.y, (idxtab[i + 1] == ~0) ? 'L' : 'l'); } } if (O_outParam.PosMesh.disk == 'd') { /* If disks wanted */ for (i = 0, j = ~0; i < grafptr->vertnbr; i ++) { if ((pictab[i].vis > 0) && /* If disk is visible */ (mapptr->labltab[i] != (-1))) { /* And is mapped */ if ((j == ~0) || (pictab[i].col != pictab[j].col)) { /* Update drawing color */ if (O_outParam.PosMesh.color == 'c') fprintf (stream, "C%c\n", 'a' + pictab[i].col); else fprintf (stream, "%d G\n", pictab[i].col); j = i; /* Record the new current color */ } fprintf (stream, "%d %d %d A\n", /* Draw the disk */ (int) pictab[i].pos.x, (int) pictab[i].pos.y, (int) pictab[i].rad); } } } fprintf (stream, "grestore\n"); /* Restore the context */ if (O_outParam.PosMesh.type == 'f') /* If full page output */ fprintf (stream, "showpage\n"); /* Display the page */ memFree (pattab); memFree (idxtab); memFree (pictab); return (0); } /*************************************/ /* */ /* This is the Tulip output routine. */ /* */ /*************************************/ int outDrawTulMesh ( const C_Graph * const grafptr, /* Graph structure, sorted by vertex index */ const C_Geometry * const geomptr, /* Graph geometry, sorted by vertex label */ const C_Mapping * const mapptr, /* Result mapping, sorted by vertex label */ FILE * const stream) /* Output stream */ { time_t pictime; /* Creation time */ char * pictimeptr; char pictimestr[64]; double color[3]; /* Vertex color */ SCOTCH_Num vertnum; const SCOTCH_Num * edgetax; SCOTCH_Num edgeidx; char c; if (geomptr->verttab == NULL) { errorPrint ("outDrawInvMesh: geometry not provided"); return (1); } time (&pictime); /* Get current time */ pictimeptr = ctime (&pictime); strncpy (pictimestr, pictimeptr, 63); pictimestr[63] = '\0'; pictimestr[strlen (pictimestr) - 1] = '\0'; fprintf (stream, "(tlp \"2.0\"\n(author \"out (F. Pellegrini, LaBRI, Bordeaux)\")\n(date \"%s\")\n(comment \"%s %s %s\")\n", /* Write header */ pictimestr, C_filenamesrcinp, C_filenamegeoinp, C_filenamemapinp); if (grafptr->vertnbr == 0) { /* If nothing to write */ fprintf (stream, ")\n"); return (0); } fprintf (stream, "(nodes\n"); /* Write node list */ for (vertnum = 0; vertnum < (grafptr->vertnbr - 1); vertnum ++) fprintf (stream, SCOTCH_NUMSTRING "%c", (SCOTCH_Num) (vertnum + grafptr->baseval), ((vertnum & 7) == 7) ? '\n' : '\t'); fprintf (stream, SCOTCH_NUMSTRING ")\n", (SCOTCH_Num) (vertnum + grafptr->baseval)); edgetax = grafptr->edgetab - grafptr->baseval; for (vertnum = 0, edgeidx = grafptr->baseval; vertnum < grafptr->vertnbr; vertnum ++) { SCOTCH_Num edgenum; SCOTCH_Num edgennd; for (edgenum = grafptr->verttab[vertnum], edgennd = grafptr->vendtab[vertnum]; edgenum < edgennd; edgenum ++) { SCOTCH_Num vertend; vertend = edgetax[edgenum]; if (vertend <= vertnum) /* True even if baseval=1 and as vertnum unbased */ continue; fprintf (stream, "(edge " SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING ")\n", (SCOTCH_Num) (edgeidx ++), (SCOTCH_Num) (vertnum + grafptr->baseval), (SCOTCH_Num) vertend); } } fprintf (stream, "(property 0 layout \"viewLayout\"\n"); /* Write node coordinates */ c = '\n'; for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { if (vertnum == (grafptr->vertnbr - 1)) c = ')'; fprintf (stream, "(node " SCOTCH_NUMSTRING "\t\"(%lf,%lf,%lf)\")%c", (SCOTCH_Num) (vertnum + grafptr->baseval), (double) geomptr->verttab[vertnum].x, (double) geomptr->verttab[vertnum].y, (double) geomptr->verttab[vertnum].z, c); } fprintf (stream, "\n"); if (O_outParam.TulMesh.color == 'c') { fprintf (stream, "(property 0 color \"viewColor\"\n(default \"(255,255,255,255)\" \"(0,0,0,0)\")\n"); /* Write node color values */ c = '\n'; for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { if (vertnum == (grafptr->vertnbr - 1)) c = ')'; outColorColor (mapptr->labltab[vertnum], color); fprintf (stream, "(node " SCOTCH_NUMSTRING " \"(%d,%d,%d,255)\")%c", (SCOTCH_Num) (vertnum + grafptr->baseval), (int) (color[0] * 255.0), (int) (color[1] * 255.0), (int) (color[2] * 255.0), c); } fprintf (stream, "\n"); } fprintf (stream, "(property 0 size \"viewSize\"\n(default \"(0,0,0)\" \"(0,0,0)\")"); /* Write default node size */ if (O_outParam.TulMesh.disk == 'd') { /* If disks wanted */ const C_GeoVert * geomtax; geomtax = geomptr->verttab - grafptr->baseval; fprintf (stream, "\n"); c = '\n'; for (vertnum = 0; vertnum < grafptr->vertnbr; vertnum ++) { SCOTCH_Num edgenum; SCOTCH_Num edgennd; double distmin; C_GeoVert vertpos; if (vertnum == (grafptr->vertnbr - 1)) c = ')'; distmin = 1e30; /* Huge distance assumed */ vertpos.x = geomptr->verttab[vertnum].x; vertpos.y = geomptr->verttab[vertnum].y; vertpos.z = geomptr->verttab[vertnum].z; for (edgenum = grafptr->verttab[vertnum], edgennd = grafptr->vendtab[vertnum]; edgenum < edgennd; edgenum ++) { SCOTCH_Num vertend; double distval; vertend = edgetax[edgenum]; distval = (geomtax[vertend].x - vertpos.x) * (geomtax[vertend].x - vertpos.x) + (geomtax[vertend].y - vertpos.y) * (geomtax[vertend].y - vertpos.y) + (geomtax[vertend].z - vertpos.z) * (geomtax[vertend].z - vertpos.z); if (distval < distmin) distmin = distval; } distmin = sqrt (distmin) * (0.5 * O_TULMESHDISKRATIO); fprintf (stream, "(node " SCOTCH_NUMSTRING " \"(%lf,%lf,%lf)\")%c", (SCOTCH_Num) (vertnum + grafptr->baseval), distmin, distmin, distmin, c); } fprintf (stream, "\n"); } else fprintf (stream, ")\n"); fprintf (stream, ")\n"); return (0); } scotch_6.0.9/src/scotch/amk_p2.h0000644000302600021200000000655513303015264016661 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_p2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the target architecture file **/ /** for a weighted path with two vertices **/ /** used to bipartition graphs in parts of **/ /** different sizes. **/ /** Here are the data declaration for the **/ /** target machine architecture functions. **/ /** **/ /** DATES : # Version 3.0 : from : 17 jul 1995 **/ /** to : 17 jul 1995 **/ /** # Version 3.2 : from : 02 jun 1997 **/ /** to : 02 jun 1997 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 1 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenametgtout fileBlockName (C_fileTab, 0) /* Architecture output file name */ #define C_filepntrtgtout fileBlockFile (C_fileTab, 0) /* Architecture output file */ scotch_6.0.9/src/scotch/Makefile0000644000302600021200000002711013303015264016765 0ustar pelegrinpelegrin## Copyright 2004,2007-2012 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## bindir = ../../bin includedir = ../../include libdir = ../../lib ## ## General inference rules. ## include ../Makefile.inc %$(EXE) : %$(OBJ) $(CC) $(CFLAGS) -I$(includedir) -I../libscotch $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit $(LDFLAGS) %$(OBJ) : %.c $(CC) $(CFLAGS) -I$(includedir) -I../libscotch -c $(<) -o $(@) %$(EXE) : %.c $(CC) $(CFLAGS) -I$(includedir) -I../libscotch $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit $(LDFLAGS) ## ## Project rules. ## .PHONY : ptscotch scotch ptinstall install clean realclean scotch : $(MAKE) CC="$(CCS)" SCOTCHLIB=scotch \ acpl$(EXE) \ amk_ccc$(EXE) \ amk_fft2$(EXE) \ amk_grf$(EXE) \ amk_hy$(EXE) \ amk_m2$(EXE) \ amk_p2$(EXE) \ atst$(EXE) \ gbase$(EXE) \ gcv$(EXE) \ gmap$(EXE) \ gmk_hy$(EXE) \ gmk_m2$(EXE) \ gmk_m3$(EXE) \ gmk_msh$(EXE) \ gmk_ub2$(EXE) \ gmtst$(EXE) \ gord$(EXE) \ gotst$(EXE) \ gout$(EXE) \ gpart$(EXE) \ gscat$(EXE) \ gtst$(EXE) \ mcv$(EXE) \ mmk_m2$(EXE) \ mmk_m3$(EXE) \ mord$(EXE) \ mtst$(EXE) ptscotch : $(MAKE) CC="$(CCP)" SCOTCHLIB=ptscotch \ dggath$(EXE) \ dgmap$(EXE) \ dgord$(EXE) \ dgpart$(EXE) \ dgscat$(EXE) \ dgtst$(EXE) install : scotch -$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) gpart$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir) ptinstall : ptscotch -$(CP) dggath$(EXE) dgmap$(EXE) dgord$(EXE) dgpart$(EXE) dgscat$(EXE) dgtst$(EXE) $(bindir) clean : -$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *ggath$(EXE) *gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) realclean : clean ## ## Todo list. ## acpl$(EXE) : acpl.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ acpl.h amk_ccc$(EXE) : amk_ccc.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_ccc.h amk_fft2$(EXE) : amk_fft2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_fft2.h amk_grf$(EXE) : amk_grf.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_grf.h amk_hy$(EXE) : amk_hy.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_hy.h amk_m2$(EXE) : amk_m2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_m2.h amk_p2$(EXE) : amk_p2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ amk_p2.h atst$(EXE) : atst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ atst.h dggath$(EXE) : dggath.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dggath.h dgmap$(EXE) : dgmap.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dgmap.h dgord$(EXE) : dgord.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dgord.h dgpart$(EXE) : dgmap.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dgmap.h $(CC) $(CFLAGS) -I$(includedir) -I../libscotch $(<) -DSCOTCH_COMPILE_PART -o $(@) -L$(libdir) -lptscotch -lscotch -lptscotcherrexit $(LDFLAGS) dgscat$(EXE) : dgscat.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dgscat.h dgtst$(EXE) : dgtst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/ptscotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libptscotch$(LIB) \ $(libdir)/libptscotcherrexit$(LIB) \ dgtst.h gbase$(EXE) : gbase.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gbase.h gcv$(EXE) : gcv.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gcv.h gmap$(EXE) : gmap.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmap.h gmk_hy$(EXE) : gmk_hy.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmk_hy.h gmk_m2$(EXE) : gmk_m2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmk_m2.h gmk_m3$(EXE) : gmk_m3.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmk_m3.h gmk_msh$(EXE) : gmk_msh.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmk_msh.h gmk_ub2$(EXE) : gmk_ub2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmk_ub2.h gmtst$(EXE) : gmtst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmtst.h gord$(EXE) : gord.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gord.h gotst$(EXE) : gotst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gotst.h gout$(EXE) : gout_c.c \ gout_o.c \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) $(CC) $(CFLAGS) -I../libscotch -I$(includedir) gout_c.c gout_o.c -o $(@) -L$(libdir) -lscotch -lscotcherrexit $(LDFLAGS) gpart$(EXE) : gmap.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gmap.h $(CC) $(CFLAGS) -I$(includedir) -I../libscotch $(<) -DSCOTCH_COMPILE_PART -o $(@) -L$(libdir) -lscotch -lscotcherrexit $(LDFLAGS) gscat$(EXE) : gscat.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gscat.h gtst$(EXE) : gtst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ gtst.h mcv$(EXE) : mcv.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ mcv.h mmk_m2$(EXE) : mmk_m2.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ mmk_m2.h mmk_m3$(EXE) : mmk_m3.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ mmk_m3.h mord$(EXE) : mord.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ mord.h mtst$(EXE) : mtst.c \ ../libscotch/module.h \ ../libscotch/common.h \ $(includedir)/scotch.h \ $(libdir)/libscotch$(LIB) \ $(libdir)/libscotcherrexit$(LIB) \ mtst.h scotch_6.0.9/src/scotch/amk_fft2.h0000644000302600021200000001400713303015264017170 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_fft2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for FFT **/ /** graphs, to be used to build the archi- **/ /** tecture description files for these **/ /** graphs. **/ /** **/ /** DATES : # Version 1.3 : from : 19 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to : 04 jul 1995 **/ /** # Version 3.2 : from : 07 may 1997 **/ /** to : 07 may 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 5.0 : from : 01 jan 2008 **/ /** to : 01 jan 2008 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The type and structure definitions */ /*+ File name aliases. +*/ #define C_FILENBR 1 /* Number of files in list */ #define C_filenamearcout fileBlockName (C_fileTab, 0) /* Architecture output file name */ #define C_filepntrarcout fileBlockFile (C_fileTab, 0) /* Architecture output file */ /*+ This structure defines an FFT vertex. +*/ typedef struct C_Vertex_ { SCOTCH_Num lvl; /*+ Vertex level +*/ SCOTCH_Num pos; /*+ Vertex position +*/ } C_Vertex; /*+ This structure defines a vertex distance information. +*/ typedef struct C_VertDist_ { int queued; /*+ Flag set if vertex queued +*/ SCOTCH_Num dist; /*+ Distance to initial vertex +*/ } C_VertDist; /*+ This is a neighbor queue element. +*/ typedef struct C_QueueElem_ { C_Vertex vert; /*+ Vertex number +*/ SCOTCH_Num dist; /*+ Distance reached +*/ } C_QueueElem; /*+ This is the distance queue. +*/ typedef struct C_Queue_ { C_QueueElem * tab; /*+ Pointer to queue data +*/ SCOTCH_Num min; /*+ Pointer to first element +*/ SCOTCH_Num max; /*+ Pointer to last element +*/ } C_Queue; /* ** The macro definitions. */ #define C_vertLabl(v) (((v)->lvl << fdim) | (v)->pos) #define C_queueInit(q,n) ((((q)->tab = (C_QueueElem *) memAlloc ((n) * sizeof (C_QueueElem))) == NULL) ? 1 : 0) #define C_queueExit(q) memFree ((q)->tab) #define C_queueFlush(q) (q)->min = \ (q)->max = 0 #define C_queuePut(q,v,d) ((q)->tab[(q)->max].vert = *(v), \ (q)->tab[(q)->max ++].dist = (d)) #define C_queueGet(q,v,d) (((q)->min < (q)->max) ? (*(v) = (q)->tab[(q)->min].vert, \ *(d) = (q)->tab[(q)->min ++].dist, \ 1) \ : 0) #define C_distaRoot(v) (C_queueFlush (&C_distaQueue), \ C_queuePut (&C_distaQueue, (v), 0), \ C_distaTab[C_vertLabl (v)].queued = 1) #define C_distaGet(v,d) (C_queueGet (&C_distaQueue, (v), (d))) #define C_distaPut(v,d) ((C_distaTab[C_vertLabl (v)].queued == 0) \ ? C_queuePut (&C_distaQueue, (v), d), \ C_distaTab[C_vertLabl (v)].queued = 1 \ : 0) scotch_6.0.9/src/scotch/mcv.c0000644000302600021200000002005613542631133016264 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mcv.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh file converter. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to : 19 jan 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MCV #include "module.h" #include "common.h" #include "scotch.h" #include "mcv.h" /* ** The static and global variables. */ static int C_inpFormatType = 0; /* Input mesh format */ static char * C_inpFormatData = "\0"; /* Pointer to auxiliary data */ static const C_Format C_inpFormatTab[] = { /* Table of input formats */ { 'B', SCOTCH_meshGeomLoadHabo }, { 'b', SCOTCH_meshGeomLoadHabo }, { 'S', SCOTCH_meshGeomLoadScot }, { 's', SCOTCH_meshGeomLoadScot }, { '\0', NULL } }; static int C_outFormatType = 0; /* Output mesh format */ static char * C_outFormatData = "\0"; /* Pointer to auxiliary data */ static C_Format C_outFormatTab[] = { /* Table of output formats */ { 'S', SCOTCH_meshGeomSaveScot }, { 's', SCOTCH_meshGeomSaveScot }, { '\0', NULL } }; static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "mcv [ [ []]] ", " -h : Display this help", " -i : Select input file format", " b : Boeing-Harwell format (elemental)", " s : Scotch format", " -o : Select output file format", " s : Scotch format", " -V : Print program version and copyright", "", "Default option set is : '-Ib -Os'", NULL }; /*****************************/ /* */ /* This is the main function */ /* */ /*****************************/ int main ( int argc, char * argv[]) { SCOTCH_Mesh meshdat; SCOTCH_Geom geomdat; int i, j; errorProg ("mcv"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give help */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'I' : /* Select input file type */ case 'i' : for (j = 0; C_inpFormatTab[j].code != '\0'; j ++) { /* Find proper format code */ if (C_inpFormatTab[j].code == argv[i][2]) { C_inpFormatType = j; C_inpFormatData = &argv[i][3]; break; } } if (C_inpFormatTab[j].code == '\0') errorPrint ("main: unprocessed option '%s'", argv[i]); break; case 'O' : /* Select input file type */ case 'o' : for (j = 0; C_outFormatTab[j].code != '\0'; j ++) { /* Find proper format code */ if (C_outFormatTab[j].code == argv[i][2]) { C_outFormatType = j; C_outFormatData = &argv[i][3]; break; } } if (C_inpFormatTab[j].code == '\0') errorPrint ("main: unprocessed option '%s'", argv[i]); break; case 'V' : fprintf (stderr, "mcv, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_meshInit (&meshdat); SCOTCH_geomInit (&geomdat); C_inpFormatTab[C_inpFormatType].func (&meshdat, &geomdat, C_filepntrsrcinp, NULL, C_inpFormatData); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_meshCheck (&meshdat) != 0) errorPrint ("main: bad graph structure"); #endif /* SCOTCH_DEBUG_ALL */ C_outFormatTab[C_outFormatType].func (&meshdat, &geomdat, C_filepntrsrcout, C_filepntrgeoout, C_outFormatData); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_geomExit (&geomdat); SCOTCH_meshExit (&meshdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/dgord.c0000644000302600021200000003767613465315041016617 0ustar pelegrinpelegrin/* Copyright 2007-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgord.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER (v5.0) **/ /** **/ /** FUNCTION : Part of a parallel sparse matrix **/ /** ordering software. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 5.0 : from : 30 apr 2006 **/ /** to : 16 jun 2008 **/ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGORD #define SCOTCH_PTSCOTCH #include #include "module.h" #include "common.h" #include "ptscotch.h" #include "dgord.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODEW }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "dgord [ [ []]] ", " -b : Output block ordering data instead of plain ordering data", " -c : Choose default ordering strategy according to one or several of :", " b : enforce load balance as much as possible", " q : privilege quality over speed (default)", " s : privilege speed over quality", " t : enforce safety", " x : enforce scalability", " -h : Display this help", " -m : Save column block mapping data to ", " -o : Set parallel ordering strategy (see user's manual)", " -r : Set root process for centralized files (default is 0)", " -t : Save partitioning tree data to ", " -V : Print program version and copyright", " -v : Set verbose mode to :", " a : memory allocation information", " s : strategy information", " t : timing information", "", "See default strategy with option '-vs'", NULL }; /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Dgraph grafdat; SCOTCH_Dordering ordedat; SCOTCH_Strat stradat; SCOTCH_Num straval; char * straptr; int flagval; int procglbnbr; int proclocnum; int protglbnum; /* Root process */ Clock runtime[2]; /* Timing variables */ double reduloctab[12]; /* 3 * (min, max, sum) */ double reduglbtab[12]; MPI_Datatype redutype; MPI_Op reduop; int i, j; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ errorProg ("dgord"); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ MPI_Comm_size (MPI_COMM_WORLD, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum); protglbnum = 0; /* Assume root process is process 0 */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } SCOTCH_randomProc (proclocnum); /* Record process number to initialize pseudo-random seed */ flagval = C_FLAGNONE; /* Default behavior */ straval = 0; /* No strategy flags */ straptr = NULL; SCOTCH_stratInit (&stradat); fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'B' : case 'b' : flagval |= C_FLAGBLOCK; break; case 'C' : case 'c' : /* Strategy selection parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'B' : case 'b' : straval |= SCOTCH_STRATBALANCE; break; case 'Q' : case 'q' : straval |= SCOTCH_STRATQUALITY; break; case 'S' : case 's' : straval |= SCOTCH_STRATSPEED; break; case 'T' : case 't' : straval |= SCOTCH_STRATSAFETY; break; case 'X' : case 'x' : straval |= SCOTCH_STRATSCALABILITY; break; default : errorPrint ("main: invalid strategy selection option '%c'", argv[i][j]); } } break; #ifdef SCOTCH_DEBUG_ALL case 'D' : case 'd' : flagval |= C_FLAGDEBUG; break; #endif /* SCOTCH_DEBUG_ALL */ case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : /* Output separator mapping */ case 'm' : flagval |= C_FLAGMAPOUT; if (argv[i][2] != '\0') C_filenamemapout = &argv[i][2]; break; case 'O' : /* Ordering strategy */ case 'o' : straptr = &argv[i][2]; SCOTCH_stratExit (&stradat); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrder (&stradat, straptr); break; case 'R' : /* Root process (if necessary) */ case 'r' : protglbnum = atoi (&argv[i][2]); if ((protglbnum < 0) || (protglbnum >= procglbnbr) || ((protglbnum == 0) && (argv[i][2] != '0'))) errorPrint ("main: invalid root process number"); break; case 'T' : /* Output separator tree */ case 't' : flagval |= C_FLAGTREOUT; if (argv[i][2] != '\0') C_filenametreout = &argv[i][2]; break; case 'V' : fprintf (stderr, "dgord, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); case 'v' : /* Output control info */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'A' : case 'a' : #ifdef COMMON_MEMORY_TRACE flagval |= C_FLAGVERBMEM; #else /* COMMON_MEMORY_TRACE */ errorPrint ("main: not compiled with COMMON_MEMORY_TRACE"); #endif /* COMMON_MEMORY_TRACE */ break; case 'S' : case 's' : flagval |= C_FLAGVERBSTR; break; case 'T' : case 't' : flagval |= C_FLAGVERBTIM; break; default : errorPrint ("main: unprocessed parameter '%c' in '%s'", argv[i][j], argv[i]); } } break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) { fprintf (stderr, "Proc %4d of %d, pid %d\n", proclocnum, procglbnbr, getpid ()); if (proclocnum == protglbnum) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } MPI_Barrier (MPI_COMM_WORLD); } #endif /* SCOTCH_DEBUG_ALL */ fileBlockOpenDist (C_fileTab, C_FILENBR, procglbnbr, proclocnum, protglbnum); /* Open all files */ clockInit (&runtime[0]); clockStart (&runtime[0]); SCOTCH_dgraphInit (&grafdat, MPI_COMM_WORLD); SCOTCH_dgraphLoad (&grafdat, C_filepntrsrcinp, -1, 0); if (straval != 0) { if (straptr != NULL) errorPrint ("main: options '-c' and '-o' are exclusive"); SCOTCH_stratDgraphOrderBuild (&stradat, straval, (SCOTCH_Num) procglbnbr, 0, 0.2); } clockStop (&runtime[0]); /* Get input time */ clockInit (&runtime[1]); #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[1]); SCOTCH_dgraphGhst (&grafdat); /* Compute it once for good */ SCOTCH_dgraphOrderInit (&grafdat, &ordedat); SCOTCH_dgraphOrderCompute (&grafdat, &ordedat, &stradat); clockStop (&runtime[1]); /* Get ordering time */ #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[0]); if (proclocnum == protglbnum) { if ((flagval & C_FLAGBLOCK) == 0) SCOTCH_dgraphOrderSave (&grafdat, &ordedat, C_filepntrordout); else SCOTCH_dgraphOrderSaveBlock (&grafdat, &ordedat, C_filepntrordout); if ((flagval & C_FLAGMAPOUT) != 0) /* If mapping wanted */ SCOTCH_dgraphOrderSaveMap (&grafdat, &ordedat, C_filepntrmapout); /* Write mapping */ if ((flagval & C_FLAGTREOUT) != 0) /* If separator tree wanted */ SCOTCH_dgraphOrderSaveTree (&grafdat, &ordedat, C_filepntrtreout); /* Write tree */ } else { if ((flagval & C_FLAGBLOCK) == 0) SCOTCH_dgraphOrderSave (&grafdat, &ordedat, NULL); else SCOTCH_dgraphOrderSaveBlock (&grafdat, &ordedat, NULL); if ((flagval & C_FLAGMAPOUT) != 0) SCOTCH_dgraphOrderSaveMap (&grafdat, &ordedat, NULL); if ((flagval & C_FLAGTREOUT) != 0) SCOTCH_dgraphOrderSaveTree (&grafdat, &ordedat, NULL); } clockStop (&runtime[0]); #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ MPI_Type_contiguous (3, MPI_DOUBLE, &redutype); MPI_Type_commit (&redutype); MPI_Op_create ((MPI_User_function *) dgordStatReduceOp, 1, &reduop); if ((flagval & C_FLAGVERBTIM) != 0) { reduloctab[0] = reduloctab[1] = reduloctab[2] = (double) clockVal (&runtime[1]); reduloctab[3] = reduloctab[4] = reduloctab[5] = (double) clockVal (&runtime[0]); reduloctab[6] = reduloctab[7] = reduloctab[8] = reduloctab[0] + reduloctab[3]; MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 3, redutype, reduop, MPI_COMM_WORLD); } #ifdef COMMON_MEMORY_TRACE if ((flagval & C_FLAGVERBMEM) != 0) { reduloctab[9] = reduloctab[10] = reduloctab[11] = (double) memMax (); MPI_Allreduce (&reduloctab[9], &reduglbtab[9], 1, redutype, reduop, MPI_COMM_WORLD); } #endif /* COMMON_MEMORY_TRACE */ MPI_Op_free (&reduop); MPI_Type_free (&redutype); if (C_filepntrlogout != NULL) { if ((flagval & C_FLAGVERBSTR) != 0) { fprintf (C_filepntrlogout, "S\tStrat="); SCOTCH_stratSave (&stradat, C_filepntrlogout); putc ('\n', C_filepntrlogout); } if ((flagval & C_FLAGVERBTIM) != 0) { fprintf (C_filepntrlogout, "T\tOrder\tmin=%g\tmax=%g\tavg=%g\nT\tI/O\tmin=%g\tmax=%g\tavg=%g\nT\tTotal\tmin=%g\tmax=%g\tavg=%g\n", reduglbtab[0], reduglbtab[1], reduglbtab[2] / (double) procglbnbr, reduglbtab[3], reduglbtab[4], reduglbtab[5] / (double) procglbnbr, reduglbtab[6], reduglbtab[7], reduglbtab[8] / (double) procglbnbr); } #ifdef COMMON_MEMORY_TRACE if ((flagval & C_FLAGVERBMEM) != 0) fprintf (C_filepntrlogout, "A\tMemory\tmin=%g\tmax=%g\tavg=%g\n", reduglbtab[9], reduglbtab[10], reduglbtab[11] / (double) procglbnbr); #endif /* COMMON_MEMORY_TRACE */ } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_dgraphOrderExit (&grafdat, &ordedat); SCOTCH_dgraphExit (&grafdat); SCOTCH_stratExit (&stradat); MPI_Finalize (); return (EXIT_SUCCESS); } /* Reduction routine for statistics output. */ void dgordStatReduceOp ( double * in, double * inout, int * len, MPI_Datatype * datatype) { int i; for (i = 0; i < *len; i ++) { inout[3 * i] = MIN (in[3 * i], inout[3 * i]); inout[3 * i + 1] = MAX (in[3 * i + 1], inout[3 * i + 1]); inout[3 * i + 2] = in[3 * i + 2] + inout[3 * i + 2]; } } scotch_6.0.9/src/scotch/amk_ccc.c0000644000302600021200000002476213542631133017067 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_ccc.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for CCC **/ /** graphs, to be used to build the archi- **/ /** tecture description files for these **/ /** graphs. **/ /** **/ /** DATES : # Version 1.3 : from : 24 apr 1994 **/ /** to : 24 apr 1994 **/ /** # Version 2.0 : from : 13 jul 1994 **/ /** to : 12 nov 1994 **/ /** # Version 3.0 : from : 18 sep 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.2 : from : 07 may 1997 **/ /** to : 07 may 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_CCC #include "module.h" #include "common.h" #include "scotch.h" #include "amk_ccc.h" /* ** The static and global definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW } }; static C_VertDist * C_distaTab; /* Pointer to distance map table */ static C_Queue C_distaQueue; /* Distance queue */ static const char * C_usageList[] = { /* Usage list */ "amk_ccc [] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /*************************************************/ /* */ /* The main routine, which computes the distance */ /* triangular table. */ /* */ /*************************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num ccdim; /* Dimension of the graph */ SCOTCH_Num ccnbr; /* Number of vertices */ SCOTCH_Num ccbit; /* Mask variable */ SCOTCH_Num ccmax; /* Maximum terminal */ C_Vertex v, w, x; /* Vertex variables */ SCOTCH_Num d; /* Vertex distance to root */ SCOTCH_Num t; /* Vertex terminal value */ SCOTCH_Num i, j, k; errorProg ("amk_ccc"); ccdim = 2; if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((ccdim = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_FILENBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "amk_ccc, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ ccnbr = ccdim * (1 << ccdim); /* Compute number of vertices */ ccbit = (1 << ccdim) - 1; /* Get maximum position number */ for (ccmax = ((1 << (ccdim + 1)) - 1), i = ccdim - 1; /* Compute biggest terminal value */ i != 0; i >>= 1) ccmax = (ccmax << 1) | (i & 1); fprintf (C_filepntrarcout, "deco\n0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Print the file header */ (SCOTCH_Num) ccnbr, /* Print number of terminal domains */ (SCOTCH_Num) ccmax); /* Print biggest terminal value */ for (v.lvl = 0; v.lvl < ccdim; v.lvl ++) { /* For all levels */ for (v.pos = 0; v.pos <= ccbit; v.pos ++) { /* For all positions in these levels */ t = (1 << ccdim) | v.pos; /* Perform the hypercube cuts */ for (i = v.lvl, j = ccdim; j != 1; ) { /* Perform the cycle cuts */ t <<= 1; k = (j + 1) >> 1; if (i >= k) { /* If upper (smallest) half */ t |= 1; i -= k; j -= k; } else /* If lower (biggest) half */ j = k; } fprintf (C_filepntrarcout, SCOTCH_NUMSTRING "\t1\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) C_vertLabl (&v), /* Print terminal label */ (SCOTCH_Num) t); /* Print terminal number */ } } if ((C_queueInit (&C_distaQueue, ccmax) != 0) || /* Allocate the distance array */ ((C_distaTab = (C_VertDist *) memAlloc (ccmax * sizeof (C_VertDist))) == NULL)) errorPrint ("main: out of memory"); for (v.lvl = 0; v.lvl < ccdim; v.lvl ++) { /* For all levels */ for (v.pos = 0; v.pos <= ccbit; v.pos ++) { /* For all positions in these levels */ for (i = 0; i < ccnbr; i ++) /* Initialize vertex table */ C_distaTab[i].queued = 0; /* Vertex not queued yet */ C_distaRoot (&v); /* Set the queue with root v */ while (C_distaGet (&w, &d)) { /* As long as the queue is not empty */ C_distaTab[C_vertLabl (&w)].dist = d; /* Keep the distance information */ d ++; /* Search for neighbors at next level */ x.lvl = w.lvl; /* Add neighbors to queue */ x.pos = w.pos ^ (1 << x.lvl); C_distaPut (&x, d); x.lvl = (w.lvl == 0) ? (ccdim - 1) : (w.lvl - 1); x.pos = w.pos; C_distaPut (&x, d); x.lvl = (w.lvl == (ccdim - 1)) ? 0 : (w.lvl + 1); C_distaPut (&x, d); } if (v.lvl + v.pos > 0) { /* Print distance triangular map line */ fprintf (C_filepntrarcout, SCOTCH_NUMSTRING, (SCOTCH_Num) C_distaTab[0].dist); for (i = 1; i < C_vertLabl (&v); i ++) fprintf (C_filepntrarcout, " " SCOTCH_NUMSTRING, (SCOTCH_Num) C_distaTab[i].dist); fprintf (C_filepntrarcout, "\n"); } } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ C_queueExit (&C_distaQueue); memFree (C_distaTab); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/mcv.h0000644000302600021200000000734013303015264016266 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mcv.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh file converter. **/ /** This module contains the data declara- **/ /** tions for the main module. **/ /** **/ /** DATES : # Version 4.0 : from : 19 jan 2004 **/ /** to : 19 jan 2004 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines */ /*+ File name aliases. +*/ #define C_FILENBR 3 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* External mesh input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Source mesh output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 2) /* Source mesh geometry file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* External mesh input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Source mesh output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 2) /* Source mesh geometry file */ /* ** The type and structure definitions. */ /*+ This structure defines the method array element. +*/ typedef struct C_Format_ { char code; /* Format type code */ int (* func) (); /* Function to call */ } C_Format; scotch_6.0.9/src/scotch/gtst.c0000644000302600021200000001740613542631177016475 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gtst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program gives statistics on source **/ /** graphs. **/ /** **/ /** DATES : # Version 2.0 : from : 31 oct 1994 **/ /** to 03 nov 1994 **/ /** # Version 3.0 : from : 15 sep 1995 **/ /** to 19 sep 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 25 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to : 19 oct 1998 **/ /** # Version 3.4 : from : 10 oct 1999 **/ /** to 12 oct 1999 **/ /** # Version 4.0 : from : 10 sep 2003 **/ /** to : 10 sep 2003 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GTST #include "module.h" #include "common.h" #include "scotch.h" #include "gtst.h" /* ** The static definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "gtst [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; /* Source graph */ SCOTCH_Num vertnbr; SCOTCH_Num velomin; SCOTCH_Num velomax; SCOTCH_Num velosum; double veloavg; double velodlt; SCOTCH_Num degrmin; SCOTCH_Num degrmax; double degravg; double degrdlt; SCOTCH_Num edgenbr; SCOTCH_Num edlomin; SCOTCH_Num edlomax; SCOTCH_Num edlosum; double edloavg; double edlodlt; int i; errorProg ("gtst"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gtst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, 0); SCOTCH_graphCheck (&grafdat); SCOTCH_graphSize (&grafdat, &vertnbr, &edgenbr); SCOTCH_graphStat (&grafdat, &velomin, &velomax, &velosum, &veloavg, &velodlt, °rmin, °rmax, °ravg, °rdlt, &edlomin, &edlomax, &edlosum, &edloavg, &edlodlt); if (C_filepntrdatout != NULL) { fprintf (C_filepntrdatout, "S\tVertex\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) vertnbr); fprintf (C_filepntrdatout, "S\tVertex load\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) velomin, (SCOTCH_Num) velomax, (SCOTCH_Num) velosum, veloavg, velodlt); fprintf (C_filepntrdatout, "S\tVertex degree\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) degrmin, (SCOTCH_Num) degrmax, (SCOTCH_Num) edgenbr, degravg, degrdlt); fprintf (C_filepntrdatout, "S\tEdge\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (edgenbr / 2)); fprintf (C_filepntrdatout, "S\tEdge load\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) edlomin, (SCOTCH_Num) edlomax, (SCOTCH_Num) edlosum, edloavg, edlodlt); } SCOTCH_graphExit (&grafdat); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gscat.c0000644000302600021200000002647113542631177016617 0ustar pelegrinpelegrin/* Copyright 2009-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gscat.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program writes a centralized **/ /** source graph file in the form of a **/ /** distributed source graph. **/ /** **/ /** DATES : # Version 5.1 : from : 26 apr 2009 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GSCAT #include "module.h" #include "common.h" #include "scotch.h" #include "gscat.h" /* ** The static variables. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gscat ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Num p[1] = { 1 }; /* Number of parts */ int i; errorProg ("gscat"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((p[C_paraNum ++] = atoi (argv[i])) < 1) /* Get number of parts */ errorPrint ("main: invalid number of parts '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gscat, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, 1); /* Open input graph file */ C_graphScat (C_filepntrsrcinp, p[0], C_filenamesrcout); fileBlockClose (C_fileTab, 1); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } static int C_graphScat ( FILE * const stream, SCOTCH_Num procnbr, char * const nameptr) { SCOTCH_Num versval; SCOTCH_Num propval; char proptab[4]; int flagtab[3]; SCOTCH_Num baseval; SCOTCH_Num vertglbnbr; SCOTCH_Num edgeglbnbr; SCOTCH_Num procnum; if (intLoad (stream, &versval) != 1) { /* Read version number */ errorPrint ("C_graphScat: bad input (1)"); return (1); } if (versval != 0) { /* If version not zero */ errorPrint ("C_graphScat: only centralized graphs supported"); return (1); } if ((intLoad (stream, &vertglbnbr) != 1) || /* Read rest of header */ (intLoad (stream, &edgeglbnbr) != 1) || (intLoad (stream, &baseval) != 1) || (intLoad (stream, &propval) != 1) || (propval < 0) || (propval > 111)) { errorPrint ("C_graphScat: bad input (2)"); return (1); } sprintf (proptab, "%3.3d", (int) propval); /* Compute file properties */ flagtab[0] = proptab[0] - '0'; /* Vertex labels flag */ flagtab[1] = proptab[1] - '0'; /* Edge weights flag */ flagtab[2] = proptab[2] - '0'; /* Vertex loads flag */ for (procnum = 0; procnum < procnbr; procnum ++) { char * naexptr; /* Expanded name */ FILE * ostream; SCOTCH_Num vertlocnbr; SCOTCH_Num vertlocnum; SCOTCH_Num edgelocnbr; ostream = NULL; naexptr = fileNameDistExpand (nameptr, procnbr, procnum); if (naexptr == nameptr) { errorPrint ("C_graphScat: not a distributed file name"); return (1); } if (naexptr == NULL) { errorPrint ("C_graphScat: cannot create distributed file name"); return (1); } ostream = fopen (naexptr, "w+"); memFree (naexptr); /* Expanded name no longer needed anyway */ if (ostream == NULL) { errorPrint ("C_graphScat: cannot open file"); return (1); } vertlocnbr = DATASIZE (vertglbnbr, procnbr, procnum); if (fprintf (ostream, "2\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t%015d\n" SCOTCH_NUMSTRING "\t%3s\n", /* Write file header */ (SCOTCH_Num) procnbr, (SCOTCH_Num) procnum, (SCOTCH_Num) vertglbnbr, (SCOTCH_Num) edgeglbnbr, (SCOTCH_Num) vertlocnbr, 0, /* Number of edges not yet known */ (SCOTCH_Num) baseval, proptab) == EOF) { errorPrint ("C_graphScat: bad output (1)"); fclose (ostream); return (1); } for (vertlocnum = edgelocnbr = 0; vertlocnum < vertlocnbr; vertlocnum ++) { SCOTCH_Num degrval; if (flagtab[0] != 0) { /* If must read label */ SCOTCH_Num vlblval; /* Value where to read vertex label */ if (intLoad (stream, &vlblval) != 1) { /* Read label data */ errorPrint ("C_graphScat: bad input (3)"); fclose (ostream); return (1); } intSave (ostream, vlblval); putc ('\t', ostream); } if (flagtab[2] != 0) { /* If must read vertex load */ SCOTCH_Num veloval; /* Value where to read vertex load */ if (intLoad (stream, &veloval) != 1) { /* Read vertex load data */ errorPrint ("C_graphScat: bad input (4)"); fclose (ostream); return (1); } intSave (ostream, veloval); putc ('\t', ostream); } if (intLoad (stream, °rval) != 1) { /* Read vertex degree */ errorPrint ("C_graphScat: bad input (5)"); fclose (ostream); return (1); } intSave (ostream, degrval); edgelocnbr += degrval; for ( ; degrval > 0; degrval --) { SCOTCH_Num edgeval; /* Value where to read edge end */ if (flagtab[1] != 0) { /* If must read edge load */ SCOTCH_Num edloval; /* Value where to read edge load */ if (intLoad (stream, &edloval) != 1) { /* Read edge load data */ errorPrint ("C_graphScat: bad input (6)"); fclose (ostream); return (1); } putc ('\t', ostream); intSave (ostream, edloval); } if (intLoad (stream, &edgeval) != 1) { /* Read edge data */ errorPrint ("C_graphScat: bad input (7)"); fclose (ostream); return (1); } putc ('\t', ostream); intSave (ostream, edgeval); } putc ('\n', ostream); } rewind (ostream); if (fprintf (ostream, "2\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t%015lld\n" SCOTCH_NUMSTRING "\t%3s\n", /* Write file header */ (SCOTCH_Num) procnbr, (SCOTCH_Num) procnum, (SCOTCH_Num) vertglbnbr, (SCOTCH_Num) edgeglbnbr, (SCOTCH_Num) vertlocnbr, (long long) edgelocnbr, /* Now we know the exact number of edges */ (SCOTCH_Num) baseval, proptab) == EOF) { errorPrint ("C_graphScat: bad output (2)"); return (1); } fclose (ostream); } return (0); } scotch_6.0.9/src/scotch/dgmap.c0000644000302600021200000004773713465315041016607 0ustar pelegrinpelegrin/* Copyright 2008-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgmap.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel static mapping **/ /** software. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 5.0 : from : 12 jun 2008 **/ /** to : 28 aug 2008 **/ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 31 aug 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGMAP #define SCOTCH_PTSCOTCH #include #include "module.h" #include "common.h" #include "ptscotch.h" #include "dgmap.h" /* ** The static variables. */ static int C_partNbr = 1; /* Default number of parts / cluster load */ static int C_paraNum = 0; /* Number of parameters */ static int C_paraNbr = 0; /* No parameters for mapping */ static int C_fileNum = 0; /* Number of file in arg list */ static int C_fileNbr = 4; /* Number of files for mapping */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODER }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "dgmap [ [ [ []]]] ", "dgpart [] [ [ []]] ", " -b : Load imbalance tolerance (default: 0.05)", " -c : Choose default mapping strategy according to one or several of :", " b : enforce load balance as much as possible", " q : privilege quality over speed (default)", " s : privilege speed over quality", " t : enforce safety", " x : enforce scalability", " -h : Display this help", " -m : Set parallel mapping strategy (see user's manual)", " -q : Do graph clustering instead of graph partitioning (for dgpart)", " -q : Do graph clustering instead of static mapping (for dgmap)", " -r : Set root process for centralized files (default is 0)", " -s : Force unity weights on :", " e : edges", " v : vertices", " -V : Print program version and copyright", " -v : Set verbose mode to :", " a : memory allocation information", " m : mapping information", " s : strategy information", " t : timing information", "", "See default strategy with option '-vs'", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Dgraph grafdat; /* Source graph */ SCOTCH_Num grafflag; /* Source graph properties */ SCOTCH_Arch archdat; /* Target architecture */ SCOTCH_Dmapping mappdat; /* Mapping data */ SCOTCH_Strat stradat; /* Mapping strategy */ SCOTCH_Num straval; char * straptr; int flagval; double kbalval; /* Imbalance tolerance value */ int procglbnbr; int proclocnum; int protglbnum; /* Root process */ Clock runtime[2]; /* Timing variables */ double reduloctab[12]; /* 3 * (min, max, sum) */ double reduglbtab[12]; MPI_Datatype redutype; MPI_Op reduop; int i, j; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ flagval = C_FLAGNONE; /* Default behavior */ kbalval = 0.05; /* Default imbalance */ straval = 0; /* No strategy flags */ straptr = NULL; #ifdef SCOTCH_COMPILE_PART flagval |= C_FLAGPART; C_paraNbr = 1; /* One more parameter */ C_fileNbr = 3; /* One less file to provide */ errorProg ("dgpart"); #else errorProg ("dgmap"); #endif /* SCOTCH_COMPILE_PART */ #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ MPI_Comm_size (MPI_COMM_WORLD, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum); protglbnum = 0; /* Assume root process is process 0 */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } SCOTCH_randomProc (proclocnum); /* Record process number to initialize pseudo-random seed */ grafflag = 0; /* Use vertex and edge weights */ SCOTCH_stratInit (&stradat); fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < C_paraNbr) { /* If number of parameters not reached */ if ((C_partNbr = atoi (argv[i])) < 1) /* Get the number of parts */ errorPrint ("main: invalid number of parts '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_fileNbr) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'B' : case 'b' : flagval |= C_FLAGKBALVAL; kbalval = atof (&argv[i][2]); if ((kbalval < 0.0) || (kbalval > 1.0) || ((kbalval == 0.0) && ((argv[i][2] != '0') && (argv[i][2] != '.')))) { errorPrint ("main: invalid load imbalance ratio"); } break; case 'C' : case 'c' : /* Strategy selection parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'B' : case 'b' : straval |= SCOTCH_STRATBALANCE; break; case 'Q' : case 'q' : straval |= SCOTCH_STRATQUALITY; break; case 'S' : case 's' : straval |= SCOTCH_STRATSPEED; break; case 'T' : case 't' : straval |= SCOTCH_STRATSAFETY; break; case 'X' : case 'x' : straval |= SCOTCH_STRATSCALABILITY; break; default : errorPrint ("main: invalid strategy selection option '%c'", argv[i][j]); } } break; #ifdef SCOTCH_DEBUG_ALL case 'D' : case 'd' : flagval |= C_FLAGDEBUG; break; #endif /* SCOTCH_DEBUG_ALL */ case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : case 'm' : straptr = &argv[i][2]; SCOTCH_stratExit (&stradat); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphMap (&stradat, straptr); break; case 'Q' : case 'q' : flagval |= C_FLAGCLUSTER; if ((flagval & C_FLAGPART) != 0) { /* If partitioning program */ if (argv[i][2] != '\0') errorPrint ("main: invalid parameter '%s' after '-q' for dgpart", argv[i] + 2); } else { if (argv[i][1] == '\0') errorPrint ("main: missing parameter after '-q' for dgmap"); if ((C_partNbr = atoi (argv[i] + 2)) < 1) /* Get maximum cluster load */ errorPrint ("main: invalid cluster load '%s'", argv[i] + 2); } break; case 'R' : /* Root process (if necessary) */ case 'r' : protglbnum = atoi (&argv[i][2]); if ((protglbnum < 0) || (protglbnum >= procglbnbr) || ((protglbnum == 0) && (argv[i][2] != '0'))) errorPrint ("main: invalid root process number"); break; case 'S' : case 's' : /* Source graph parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'E' : case 'e' : grafflag |= 2; /* Do not load edge weights */ break; case 'V' : case 'v' : grafflag |= 1; /* Do not load vertex weights */ break; default : errorPrint ("main: invalid source graph option '%c'", argv[i][j]); } } break; case 'V' : fprintf (stderr, "dgmap/dgpart, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); case 'v' : /* Output control info */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'A' : case 'a' : #ifdef COMMON_MEMORY_TRACE flagval |= C_FLAGVERBMEM; #else /* COMMON_MEMORY_TRACE */ errorPrint ("main: not compiled with COMMON_MEMORY_TRACE"); #endif /* COMMON_MEMORY_TRACE */ break; case 'M' : case 'm' : flagval |= C_FLAGVERBMAP; break; case 'S' : case 's' : flagval |= C_FLAGVERBSTR; break; case 'T' : case 't' : flagval |= C_FLAGVERBTIM; break; default : errorPrint ("main: unprocessed parameter '%c' in '%s'", argv[i][j], argv[i]); } } break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } if ((flagval & C_FLAGPART) != 0) { /* If program run as the partitioner */ fileBlockName (C_fileTab, 3) = fileBlockName (C_fileTab, 2); /* Put provided file names at their right place */ fileBlockName (C_fileTab, 2) = fileBlockName (C_fileTab, 1); fileBlockName (C_fileTab, 1) = "-"; } #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) { fprintf (stderr, "Proc %4d of %d, pid %d\n", proclocnum, procglbnbr, getpid ()); if (proclocnum == protglbnum) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } MPI_Barrier (MPI_COMM_WORLD); } #endif /* SCOTCH_DEBUG_ALL */ fileBlockOpenDist (C_fileTab, C_FILENBR, procglbnbr, proclocnum, protglbnum); /* Open all files */ clockInit (&runtime[0]); clockStart (&runtime[0]); SCOTCH_dgraphInit (&grafdat, MPI_COMM_WORLD); /* Initialize distributed source graph */ SCOTCH_dgraphLoad (&grafdat, C_filepntrsrcinp, -1, 0); SCOTCH_archInit (&archdat); /* Create architecture structure */ if ((flagval & C_FLAGPART) != 0) { /* If program run as the partitioner */ if ((flagval & C_FLAGCLUSTER) != 0) /* If program run as graph clustering */ SCOTCH_archVcmplt (&archdat); /* Create a variable-sized complete graph */ else /* Program is run as plain graph partitioner */ SCOTCH_archCmplt (&archdat, C_partNbr); /* Create a complete graph of proper size */ } else { if (C_filepntrtgtinp == NULL) errorPrint ("main: target architecture file not provided"); SCOTCH_archLoad (&archdat, C_filepntrtgtinp); /* Read target architecture */ if ((flagval & C_FLAGCLUSTER) == 0) /* If part size not to be preserved */ C_partNbr = SCOTCH_archSize (&archdat); else { if (SCOTCH_archVar (&archdat) == 0) errorPrint ("main: non variable-sized architecture provided while '-q' flag set"); } } if (((straval != 0) || ((flagval & C_FLAGKBALVAL) != 0)) && (straptr != NULL)) errorPrint ("main: options '-b' / '-c' and '-m' are exclusive"); if ((flagval & C_FLAGCLUSTER) != 0) /* If clustering wanted */ SCOTCH_stratDgraphClusterBuild (&stradat, straval, (SCOTCH_Num) procglbnbr, (SCOTCH_Num) C_partNbr, 1.0, kbalval); else SCOTCH_stratDgraphMapBuild (&stradat, straval, (SCOTCH_Num) procglbnbr, (SCOTCH_Num) C_partNbr, kbalval); clockStop (&runtime[0]); /* Get input time */ clockInit (&runtime[1]); #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[1]); SCOTCH_dgraphGhst (&grafdat); /* Compute it once for good */ SCOTCH_dgraphMapInit (&grafdat, &mappdat, &archdat, NULL); SCOTCH_dgraphMapCompute (&grafdat, &mappdat, &stradat); /* Perform mapping */ clockStop (&runtime[1]); /* Get computation time */ #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[0]); SCOTCH_dgraphMapSave (&grafdat, &mappdat, (proclocnum == protglbnum) ? C_filepntrmapout : NULL); /* Write mapping */ clockStop (&runtime[0]); /* Get output time */ #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) MPI_Barrier (MPI_COMM_WORLD); #endif /* SCOTCH_DEBUG_ALL */ MPI_Type_contiguous (3, MPI_DOUBLE, &redutype); MPI_Type_commit (&redutype); MPI_Op_create ((MPI_User_function *) dgmapStatReduceOp, 1, &reduop); if ((flagval & C_FLAGVERBTIM) != 0) { reduloctab[0] = reduloctab[1] = reduloctab[2] = (double) clockVal (&runtime[1]); reduloctab[3] = reduloctab[4] = reduloctab[5] = (double) clockVal (&runtime[0]); reduloctab[6] = reduloctab[7] = reduloctab[8] = reduloctab[0] + reduloctab[3]; MPI_Allreduce (&reduloctab[0], &reduglbtab[0], 3, redutype, reduop, MPI_COMM_WORLD); } #ifdef COMMON_MEMORY_TRACE if ((flagval & C_FLAGVERBMEM) != 0) { reduloctab[9] = reduloctab[10] = reduloctab[11] = (double) memMax (); MPI_Allreduce (&reduloctab[9], &reduglbtab[9], 1, redutype, reduop, MPI_COMM_WORLD); } #endif /* COMMON_MEMORY_TRACE */ MPI_Op_free (&reduop); MPI_Type_free (&redutype); if (C_filepntrlogout != NULL) { if ((flagval & C_FLAGVERBSTR) != 0) { fprintf (C_filepntrlogout, "S\tStrat="); SCOTCH_stratSave (&stradat, C_filepntrlogout); putc ('\n', C_filepntrlogout); } if ((flagval & C_FLAGVERBTIM) != 0) { fprintf (C_filepntrlogout, "T\tMapping\tmin=%g\tmax=%g\tavg=%g\nT\tI/O\tmin=%g\tmax=%g\tavg=%g\nT\tTotal\tmin=%g\tmax=%g\tavg=%g\n", reduglbtab[0], reduglbtab[1], reduglbtab[2] / (double) procglbnbr, reduglbtab[3], reduglbtab[4], reduglbtab[5] / (double) procglbnbr, reduglbtab[6], reduglbtab[7], reduglbtab[8] / (double) procglbnbr); } #ifdef COMMON_MEMORY_TRACE if ((flagval & C_FLAGVERBMEM) != 0) fprintf (C_filepntrlogout, "A\tMemory\tmin=%g\tmax=%g\tavg=%g\n", reduglbtab[9], reduglbtab[10], reduglbtab[11] / (double) procglbnbr); #endif /* COMMON_MEMORY_TRACE */ } if (flagval & C_FLAGVERBMAP) SCOTCH_dgraphMapView (&grafdat, &mappdat, C_filepntrlogout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_dgraphMapExit (&grafdat, &mappdat); SCOTCH_dgraphExit (&grafdat); SCOTCH_stratExit (&stradat); SCOTCH_archExit (&archdat); MPI_Finalize (); return (EXIT_SUCCESS); } /* Reduction routine for statistics output. */ void dgmapStatReduceOp ( double * in, double * inout, int * len, MPI_Datatype * datatype) { int i; for (i = 0; i < *len; i ++) { inout[3 * i] = MIN (in[3 * i], inout[3 * i]); inout[3 * i + 1] = MAX (in[3 * i + 1], inout[3 * i + 1]); inout[3 * i + 2] = in[3 * i + 2] + inout[3 * i + 2]; } } scotch_6.0.9/src/scotch/acpl.h0000644000302600021200000000721513303015264016421 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : acpl.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the target archi- **/ /** tecture compilation function defini- **/ /** tions. **/ /** **/ /** DATES : # Version 2.0 : from : 12 nov 1994 **/ /** to : 12 nov 1994 **/ /** # Version 3.0 : from : 06 jul 1995 **/ /** to : 06 jul 1995 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to : 01 jun 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenametgtinp fileBlockName (C_fileTab, 0) /* Target architecture input file name */ #define C_filenametgtout fileBlockName (C_fileTab, 1) /* Target architecture output file name */ #define C_filepntrtgtinp fileBlockFile (C_fileTab, 0) /* Target architecture input file */ #define C_filepntrtgtout fileBlockFile (C_fileTab, 1) /* Target architecture output file */ scotch_6.0.9/src/scotch/amk_grf.h0000644000302600021200000001072413465610544017122 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_grf.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Decomposition architecture builder. **/ /** These lines are the data declarations **/ /** for the program routines. **/ /** **/ /** DATES : # Version 3.0 : from : 06 jul 1995 **/ /** to : 02 oct 1995 **/ /** # Version 3.1 : from : 26 mar 1996 **/ /** to : 26 mar 1996 **/ /** # Version 3.2 : from : 23 apr 1997 **/ /** to : 02 jun 1997 **/ /** # Version 3.3 : from : 15 may 1999 **/ /** to : 15 may 1999 **/ /** # Version 5.1 : from : 17 jul 2011 **/ /** to : 17 jul 2011 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 11 feb 2018 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 3 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamegrfinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenametgtout fileBlockName (C_fileTab, 1) /* Architecture output file name */ #define C_filenamevrtinp fileBlockName (C_fileTab, 2) /* Vertex list input file name */ #define C_filepntrgrfinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrtgtout fileBlockFile (C_fileTab, 1) /* Architecture output file */ #define C_filepntrvrtinp fileBlockFile (C_fileTab, 2) /* Vertex list input file */ /*+ Process flags. +*/ #define C_FLAGVRTINP 0x0001 /* Input vertex list */ #define C_FLAGDECO2 0x0002 /* Type-2 architecture */ #define C_FLAGNONE 0x0000 /* Default flags */ /* ** The type and structure definitions. */ /*+ The sort structure, used to sort graph vertices by label. +*/ typedef struct C_VertSort_ { SCOTCH_Num vlblnum; /*+ Vertex label +*/ SCOTCH_Num vertnum; /*+ Vertex number +*/ } C_VertSort; scotch_6.0.9/src/scotch/gmk_hy.h0000644000302600021200000000665413303015264016766 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_hy.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the hypercube source graph **/ /** building program. **/ /** **/ /** DATES : # Version 2.0 : from : 03 nov 1994 **/ /** to 03 nov 1994 **/ /** # Version 3.0 : from : 11 jul 1995 **/ /** to 11 jul 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 06 oct 1998 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 1 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamesrcout fileBlockName (C_fileTab, 0) /* Source graph output file name */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 0) /* Source graph output file */ scotch_6.0.9/src/scotch/dggath.c0000644000302600021200000002050013465315041016730 0ustar pelegrinpelegrin/* Copyright 2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dggath.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program gathers the fragments of a **/ /** distributed graph and saves it as a **/ /** centralized source graph. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGGATH #define SCOTCH_PTSCOTCH #include "module.h" #include "common.h" #include "ptscotch.h" #include "dggath.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "dggath [ []] ", " -c : Check the input graph after loading", " -h : Display this help", " -r : Set root process for centralized files (default is 0)", " -V : Print program version and copyright", NULL }; /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Graph * cgrfptr; SCOTCH_Graph cgrfdat; SCOTCH_Dgraph dgrfdat; int procglbnbr; int proclocnum; int protglbnum; /* Root process */ int flagval; int i; int reduloctab[2]; int reduglbtab[2]; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ errorProg ("dggath"); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ MPI_Comm_size (MPI_COMM_WORLD, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum); protglbnum = 0; /* Assume root process is process 0 */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } flagval = C_FLAGNONE; fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'C' : case 'c' : flagval |= C_FLAGCHECK; break; #ifdef SCOTCH_DEBUG_ALL case 'D' : case 'd' : flagval |= C_FLAGDEBUG; break; #endif /* SCOTCH_DEBUG_ALL */ case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'R' : /* Root process (if necessary) */ case 'r' : protglbnum = atoi (&argv[i][2]); if ((protglbnum < 0) || (protglbnum >= procglbnbr) || ((protglbnum == 0) && (argv[i][2] != '0'))) { errorPrint ("main: invalid root process number"); } break; case 'V' : case 'v' : fprintf (stderr, "dggath, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) { fprintf (stderr, "Proc %4d of %d, pid %d\n", proclocnum, procglbnbr, getpid ()); if (proclocnum == protglbnum) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } MPI_Barrier (MPI_COMM_WORLD); } #endif /* SCOTCH_DEBUG_ALL */ fileBlockOpenDist (C_fileTab, C_FILENBR, procglbnbr, proclocnum, protglbnum); /* Open all files */ if (C_filepntrsrcout == NULL) { cgrfptr = NULL; reduloctab[0] = reduloctab[1] = 0; } else { cgrfptr = &cgrfdat; reduloctab[0] = 1; reduloctab[1] = proclocnum; } if (MPI_Allreduce (reduloctab, reduglbtab, 2, MPI_INT, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) errorPrint ("main: communication error"); if (reduglbtab[0] != 1) errorPrint ("main: should have only one root"); if (reduglbtab[1] != protglbnum) errorPrint ("main: root process mismatch"); SCOTCH_dgraphInit (&dgrfdat, MPI_COMM_WORLD); SCOTCH_dgraphLoad (&dgrfdat, C_filepntrsrcinp, -1, 0); if ((flagval & C_FLAGCHECK) != 0) SCOTCH_dgraphCheck (&dgrfdat); SCOTCH_graphInit (&cgrfdat); SCOTCH_dgraphGather (&dgrfdat, cgrfptr); if (cgrfptr != NULL) SCOTCH_graphSave (cgrfptr, C_filepntrsrcout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_graphExit (&cgrfdat); SCOTCH_dgraphExit (&dgrfdat); MPI_Finalize (); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/mmk_m2.c0000644000302600021200000002362513542631133016666 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mmk_m2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates source meshes for tridimen- **/ /** sional finite element grids. **/ /** **/ /** DATES : # Version 4.0 : from : 26 sep 2002 **/ /** to : 06 feb 2003 **/ /** # Version 5.0 : from : 13 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The nodes and elements of the **/ /** (dX,dY) mesh are numbered so that **/ /** t(0,0) = 0, t(1,0) = 1, **/ /** t(dX - 1, 0) = dX - 1, t(0,1) = **/ /** dX, and t(x,y) = y * dX + x. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MMK_M2 #include "module.h" #include "common.h" #include "scotch.h" #include "mmk_m2.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW }, { FILEMODEW } }; static const int C_nghbTab[3] = { 4, 2, 1 }; static const char * C_usageList[] = { "mmk_m2 [ []] ", " -g : Output mesh geometry to ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source mesh description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num e[2] = { 1, 1 }; /* Mesh element dimensions */ SCOTCH_Num n[2]; /* Mesh node dimensions */ SCOTCH_Num c[2]; /* Vertex coordinates */ SCOTCH_Num velmnbr; /* First node number */ int flagval; /* Process flags */ int i; errorProg ("mmk_m2"); flagval = C_FLAGDEFAULT; /* Set default flags */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 2) { /* If number of parameters not reached */ if ((e[C_paraNum ++] = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'G' : /* Output mesh geometry */ case 'g' : flagval |= C_FLAGGEOOUT; if (argv[i][2] != '\0') C_filenamegeoout = &argv[i][2]; break; case 'H' : /* Give program usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "mmk_m2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ n[0] = e[0] + 1; n[1] = e[1] + 1; velmnbr = e[0] * e[1]; fprintf (C_filepntrmshout, "1\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n0\t" SCOTCH_NUMSTRING "\t000\n", /* Print mesh file header */ (SCOTCH_Num) velmnbr, (SCOTCH_Num) (n[0] * n[1]), (SCOTCH_Num) (((velmnbr + n[0] * n[1]) - (e[0] + e[1] + 1)) * 4), (SCOTCH_Num) velmnbr); for (c[1] = 0; c[1] < e[1]; c[1] ++) { /* Output element neighbor list */ for (c[0] = 0; c[0] < e[0]; c[0] ++) { fprintf (C_filepntrmshout, "4\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Output neighbors of element */ (SCOTCH_Num) (c[1] * n[0] + c[0]), (SCOTCH_Num) (c[1] * n[0] + c[0] + 1), (SCOTCH_Num) ((c[1] + 1) * n[0] + c[0]), (SCOTCH_Num) ((c[1] + 1) * n[0] + c[0] + 1)); } } for (c[1] = 0; c[1] < n[1]; c[1] ++) { /* Output node neighbor list */ for (c[0] = 0; c[0] < n[0]; c[0] ++) { fprintf (C_filepntrmshout, "%d", /* Output number of neighboring elements */ C_nghbTab[(((c[0] != 0) && (c[0] != e[0])) ? 0 : 1) + (((c[1] != 0) && (c[1] != e[1])) ? 0 : 1)]); if (c[1] != 0) { /* Output neighbors of nodes */ if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[1] - 1) * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[1] - 1) * e[0] + c[0])); } if (c[1] != e[1]) { if (c[0] != 0) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (c[1] * e[0] + (c[0] - 1))); if (c[0] != e[0]) fprintf (C_filepntrmshout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (c[1] * e[0] + c[0])); } fprintf (C_filepntrmshout, "\n"); } } if (flagval & C_FLAGGEOOUT) { /* If geometry is wanted */ fprintf (C_filepntrgeoout, "2\n" SCOTCH_NUMSTRING "\n", /* Output geometry file header */ (SCOTCH_Num) (velmnbr + n[0] * n[1])); for (c[1] = 0; c[1] < e[1]; c[1] ++) { /* Output element coordinates */ for (c[0] = 0; c[0] < e[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING ".5\t" SCOTCH_NUMSTRING ".5\n", (SCOTCH_Num) (c[1] * e[0] + c[0]), (SCOTCH_Num) c[0], (SCOTCH_Num) (e[1] - 1 - c[1])); } for (c[1] = 0; c[1] < n[1]; c[1] ++) { /* Output node coordinates */ for (c[0] = 0; c[0] < n[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (velmnbr + c[1] * n[0] + c[0]), (SCOTCH_Num) c[0], (SCOTCH_Num) (e[1] - c[1])); } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/dgmap.h0000644000302600021200000001044213303015264016566 0ustar pelegrinpelegrin/* Copyright 2008,2010,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgmap.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel static mapper. **/ /** These lines are the data declaration **/ /** for the main routine. **/ /** **/ /** DATES : # Version 5.1 : from : 12 jun 2008 **/ /** to : 18 jul 2011 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to : 10 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 4 /* Number of files in list */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenametgtinp fileBlockName (C_fileTab, 1) /* Target architecture input file name */ #define C_filenamemapout fileBlockName (C_fileTab, 2) /* Mapping result output file name */ #define C_filenamelogout fileBlockName (C_fileTab, 3) /* Log file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrtgtinp fileBlockFile (C_fileTab, 1) /* Target architecture input file */ #define C_filepntrmapout fileBlockFile (C_fileTab, 2) /* Mapping result output file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 3) /* Log file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGPART 0x0001 /* Partitioning */ #define C_FLAGVERBSTR 0x0002 /* Verbose flags */ #define C_FLAGVERBTIM 0x0004 #define C_FLAGVERBMAP 0x0008 #define C_FLAGVERBMEM 0x0010 #define C_FLAGDEBUG 0x0020 /* Debugging */ #define C_FLAGKBALVAL 0x0040 /* Imbalance tolerance */ #define C_FLAGCLUSTER 0x0080 /* Clustering */ /* ** The function prototypes. */ void dgmapStatReduceOp (double *, double *, int *, MPI_Datatype *); scotch_6.0.9/src/scotch/gcv.h0000644000302600021200000001113013303015264016250 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gcv.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a graph file converter. **/ /** This module contains the data declara- **/ /** tions for the main module. **/ /** **/ /** DATES : # Version 0.0 : from : 02 apr 1993 **/ /** to 02 apr 1993 **/ /** # Version 2.0 : from : 28 oct 1994 **/ /** to 16 nov 1994 **/ /** # Version 3.0 : from : 08 sep 1995 **/ /** to 17 sep 1995 **/ /** # Version 3.1 : from : 22 mar 1996 **/ /** to 22 mar 1996 **/ /** # Version 3.2 : from : 04 oct 1996 **/ /** to 04 mar 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 06 oct 1998 **/ /** # Version 3.4 : from : 13 oct 1999 **/ /** to : 14 oct 1999 **/ /** # Version 4.0 : from : 29 nov 2003 **/ /** to : 29 nov 2003 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines */ /*+ File name aliases. +*/ #define C_FILENBR 3 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* External graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Source graph output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 2) /* Source graph geometry file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* External graph input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Source graph output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 2) /* Source graph geometry file */ /* ** The type and structure definitions. */ /*+ This structure defines the method array element. +*/ typedef struct C_Format_ { char code; /* Format type code */ int (* func) (); /* Function to call */ } C_Format; scotch_6.0.9/src/scotch/dgtst.c0000644000302600021200000002216113465315041016624 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgtst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program gives statistics on **/ /** distributed source graphs. **/ /** **/ /** DATES : # Version 5.0 : from : 23 jun 2007 **/ /** to : 16 jun 2008 **/ /** # Version 5.1 : from : 26 oct 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGTST #define SCOTCH_PTSCOTCH #include "module.h" #include "common.h" #include "ptscotch.h" #include "dgtst.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "dgtst [ []] ", " -h : Display this help", " -r : Set root process for centralized files (default is 0)", " -V : Print program version and copyright", NULL }; /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Dgraph grafdat; int procglbnbr; int proclocnum; int protglbnum; /* Root process */ SCOTCH_Num vertnbr; SCOTCH_Num velomin; SCOTCH_Num velomax; SCOTCH_Num velosum; double veloavg; double velodlt; SCOTCH_Num degrmin; SCOTCH_Num degrmax; double degravg; double degrdlt; SCOTCH_Num edgenbr; SCOTCH_Num edlomin; SCOTCH_Num edlomax; SCOTCH_Num edlosum; double edloavg; double edlodlt; int i; #ifdef SCOTCH_DEBUG_ALL int flagval; #endif /* SCOTCH_DEBUG_ALL */ #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ errorProg ("dgtst"); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ MPI_Comm_size (MPI_COMM_WORLD, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum); protglbnum = 0; /* Assume root process is process 0 */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } #ifdef SCOTCH_DEBUG_ALL flagval = C_FLAGNONE; #endif /* SCOTCH_DEBUG_ALL */ fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '+') && /* If found a file name */ ((argv[i][0] != '-') || (argv[i][1] == '\0'))) { if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { #ifdef SCOTCH_DEBUG_ALL case 'D' : case 'd' : flagval |= C_FLAGDEBUG; break; #endif /* SCOTCH_DEBUG_ALL */ case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'R' : /* Root process (if necessary) */ case 'r' : protglbnum = atoi (&argv[i][2]); if ((protglbnum < 0) || (protglbnum >= procglbnbr) || ((protglbnum == 0) && (argv[i][2] != '0'))) errorPrint ("main: invalid root process number"); break; case 'V' : case 'v' : fprintf (stderr, "dgtst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) { fprintf (stderr, "Proc %4d of %d, pid %d\n", proclocnum, procglbnbr, getpid ()); if (proclocnum == protglbnum) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } MPI_Barrier (MPI_COMM_WORLD); } #endif /* SCOTCH_DEBUG_ALL */ fileBlockOpenDist (C_fileTab, C_FILENBR, procglbnbr, proclocnum, protglbnum); /* Open all files */ SCOTCH_dgraphInit (&grafdat, MPI_COMM_WORLD); SCOTCH_dgraphLoad (&grafdat, C_filepntrsrcinp, -1, 0); SCOTCH_dgraphCheck (&grafdat); SCOTCH_dgraphSize (&grafdat, &vertnbr, NULL, &edgenbr, NULL); SCOTCH_dgraphStat (&grafdat, &velomin, &velomax, &velosum, &veloavg, &velodlt, °rmin, °rmax, °ravg, °rdlt, &edlomin, &edlomax, &edlosum, &edloavg, &edlodlt); if (C_filepntrdatout != NULL) { fprintf (C_filepntrdatout, "S\tVertex\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) vertnbr); fprintf (C_filepntrdatout, "S\tVertex load\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) velomin, (SCOTCH_Num) velomax, (SCOTCH_Num) velosum, veloavg, velodlt); fprintf (C_filepntrdatout, "S\tVertex degree\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) degrmin, (SCOTCH_Num) degrmax, (SCOTCH_Num) edgenbr, degravg, degrdlt); fprintf (C_filepntrdatout, "S\tEdge\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (edgenbr / 2)); fprintf (C_filepntrdatout, "S\tEdge load\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) edlomin, (SCOTCH_Num) edlomax, (SCOTCH_Num) edlosum, edloavg, edlodlt); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gmk_ub2.h0000644000302600021200000000665413303015264017036 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_ub2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the de Bruijn source graph **/ /** building program. **/ /** **/ /** DATES : # Version 2.0 : from : 05 nov 1994 **/ /** to 05 nov 1994 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 07 jun 1999 **/ /** to : 07 jun 1999 **/ /** # Version 3.3 : from : 07 jun 1999 **/ /** to : 07 jun 1999 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 1 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamesrcout fileBlockName (C_fileTab, 0) /* Source graph output file name */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 0) /* Source graph output file */ scotch_6.0.9/src/scotch/gmtst.h0000644000302600021200000001020413542631236016640 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmtst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program computes statistics on **/ /** graph mappings. **/ /** **/ /** DATES : # Version 3.1 : from : 17 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 02 jun 1997 **/ /** to 02 jun 1997 **/ /** # Version 3.3 : from : 06 jun 1999 **/ /** to 07 jun 1999 **/ /** # Version 4.0 : from : 12 feb 2004 **/ /** to 29 nov 2005 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 4 /* Number of files in list */ #define C_FILEARGNBR 4 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph file name */ #define C_filenametgtinp fileBlockName (C_fileTab, 1) /* Target architecture file name */ #define C_filenamemapinp fileBlockName (C_fileTab, 2) /* Mapping result file name */ #define C_filenamedatout fileBlockName (C_fileTab, 3) /* Statistics file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrtgtinp fileBlockFile (C_fileTab, 1) /* Target architecture file */ #define C_filepntrmapinp fileBlockFile (C_fileTab, 2) /* Mapping result input file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 3) /* Statistics output file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGPARTOVL 0x0002 /* Partitioning with overlap */ scotch_6.0.9/src/scotch/gmk_m2.h0000644000302600021200000001004013303015264016644 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_m2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the bidimensional mesh source **/ /** graph building program. **/ /** **/ /** DATES : # Version 2.0 : from : 30 oct 1994 **/ /** to 08 nov 1994 **/ /** # Version 3.0 : from : 11 jul 1995 **/ /** to 11 jul 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 06 oct 1998 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamesrcout fileBlockName (C_fileTab, 0) /* Source graph output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 1) /* Geometry graph output file name */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 0) /* Source graph output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 1) /* Geometry graph output file */ /*+ Process flags. +*/ #define C_FLAGGEOOUT 0x0001 /* Output the geometry graph */ #define C_FLAGTORUS 0x0002 /* Build a torus rather than a mesh */ #define C_FLAGELEM 0x0004 /* Build a 8-neighbor grid rather than a 4-neighbor one */ #define C_FLAGDEFAULT 0x0000 /* Default flags */ scotch_6.0.9/src/scotch/acpl.c0000644000302600021200000001465513542631133016426 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : acpl.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module compiles target architec- **/ /** ture decomposition files for fast **/ /** loading. **/ /** **/ /** DATES : # Version 2.0 : from : 12 nov 1994 **/ /** to : 12 nov 1994 **/ /** # Version 3.0 : from : 06 jul 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to : 12 may 1998 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 09 feb 2004 **/ /** to : 09 feb 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ACPL #include "module.h" #include "common.h" #include "scotch.h" #include "acpl.h" /* ** The static variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "acpl [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Arch arch; /* Architecture read and written */ int i; errorProg ("acpl"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "acpl, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_archInit (&arch); /* Initialize architecture structure */ SCOTCH_archLoad (&arch, C_filepntrtgtinp); /* Load architecture */ if (strcmp (SCOTCH_archName (&arch), "deco") != 0) /* If not a decomposition */ errorPrint ("main: architecture is not decomposition-defined"); SCOTCH_archSave (&arch, C_filepntrtgtout); /* Save the compiled architecture */ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_archExit (&arch); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gmtst.c0000644000302600021200000002033713542631177016647 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmtst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program computes statistics on **/ /** graph mappings. **/ /** **/ /** DATES : # Version 3.1 : from : 17 jul 1996 **/ /** to 23 jul 1996 **/ /** # Version 3.2 : from : 02 jun 1997 **/ /** to : 16 jul 1997 **/ /** # Version 3.3 : from : 07 jun 1999 **/ /** to : 07 jun 1999 **/ /** # Version 4.0 : from : 12 feb 2004 **/ /** to 16 nov 2005 **/ /** # Version 5.0 : from : 22 jan 2008 **/ /** to 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMTST #include "module.h" #include "common.h" #include "scotch.h" #include "gmtst.h" /* ** The static variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODER }, { FILEMODER }, { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gmtst [ [ [ []]]] ", " -h : Display this help", " -o : Consider it is a partitioning with overlap (from gpart)", " -V : Print program version and copyright", "", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; /* Source graph */ SCOTCH_Num vertnbr; /* Source graph size */ SCOTCH_Num * vlbltab; /* Source graph vertex label array */ SCOTCH_Arch archdat; /* Target architecture */ SCOTCH_Mapping mappdat; /* Mapping data */ int flagval; int i; errorProg ("gmtst"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ flagval = C_FLAGNONE; /* Default behavior */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'O' : case 'o' : flagval |= C_FLAGPARTOVL; break; case 'V' : fprintf (stderr, "gmtst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); /* Create graph structure */ SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, 0); /* Read source graph */ SCOTCH_graphData (&grafdat, NULL, /* Get graph characteristics */ &vertnbr, NULL, NULL, NULL, &vlbltab, NULL, NULL, NULL); SCOTCH_archInit (&archdat); /* Create architecture structure */ SCOTCH_archLoad (&archdat, C_filepntrtgtinp); /* Read target architecture */ if (strcmp (SCOTCH_archName (&archdat), "term") == 0) /* If target architecture is variable-sized */ errorPrint ("main: variable-sized architectures cannot be mapped"); if ((flagval & C_FLAGPARTOVL) != 0) { /* If we are considering a partition with overlap */ SCOTCH_Num archsiz; SCOTCH_Num * parttab; if (strcmp (SCOTCH_archName (&archdat), "cmplt") != 0) /* If the given target architecture is not a complete graph */ errorPrint ("main: option '-o' only valid for graph partitioning"); archsiz = SCOTCH_archSize (&archdat); if ((parttab = memAlloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) errorPrint ("main: out of memory"); SCOTCH_graphTabLoad (&grafdat, parttab, C_filepntrmapinp); SCOTCH_graphPartOvlView (&grafdat, archsiz, parttab, C_filepntrdatout); /* Display mapping statistics */ memFree (parttab); } else { SCOTCH_graphMapInit (&grafdat, &mappdat, &archdat, NULL); /* Create mapping structure */ SCOTCH_graphMapLoad (&grafdat, &mappdat, C_filepntrmapinp); SCOTCH_graphMapView (&grafdat, &mappdat, C_filepntrdatout); /* Display mapping statistics */ SCOTCH_graphMapExit (&grafdat, &mappdat); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_archExit (&archdat); SCOTCH_graphExit (&grafdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/dggath.h0000644000302600021200000000701613303015264016737 0ustar pelegrinpelegrin/* Copyright 2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dggath.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module contains the data declara- **/ /** tions for the distributed graph file **/ /** gathering program. **/ /** **/ /** DATES : # Version 5.1 : from : 26 oct 2008 **/ /** to : 26 oct 2008 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to : 10 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Source graph output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Source graph output file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGCHECK 0x0001 /* Check distributed source graph */ #define C_FLAGDEBUG 0x0002 /* Enable easy debugger attachment */ scotch_6.0.9/src/scotch/amk_grf.c0000644000302600021200000002623013542631133017105 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_grf.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the architecture description **/ /** file for any source graph. **/ /** **/ /** DATES : # Version 3.0 : from : 06 jul 1995 **/ /** to : 02 oct 1995 **/ /** # Version 3.1 : from : 26 mar 1996 **/ /** to : 26 mar 1996 **/ /** # Version 3.2 : from : 23 apr 1997 **/ /** to : 03 jun 1998 **/ /** # Version 3.3 : from : 15 may 1999 **/ /** to : 15 may 1999 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to : 17 mar 2005 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 11 dec 2008 **/ /** to : 17 jul 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_GRF #include "module.h" #include "common.h" #include "scotch.h" #include "amk_grf.h" /* ** The static variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODER } }; static const char * C_usageList[] = { /* Usage */ "amk_grf [ []] ", " -2 : Create a 'deco 2' instead of a 'deco 0' architecture", " -b : Apply bipartitioning strategy (for 'deco 0' architectures)", " -h : Display this help", " -l : Load vertex list from ", " -V : Print program version and copyright", "", "Default option set is : '-Bhf{move=1000}/((load0=load)|(load0=0))?x;'", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Strat bipastrat; /* Bipartitioning strategy */ SCOTCH_Arch archdat; /* Target (terminal) architecture */ SCOTCH_Graph grafdat; /* Source graph to turn into architecture */ SCOTCH_Num vertnbr; /* Number of vertices in graph */ SCOTCH_Num * vlbltab; /* Pointer to vertex label array, if present */ SCOTCH_Num listnbr; /* Size of list array */ SCOTCH_Num * listtab; /* Pointer to list array */ C_VertSort * sorttab; /* Vertex label sort area */ SCOTCH_Num baseval; int flagval; /* Process flags */ int i; errorProg ("amk_grf"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } flagval = C_FLAGNONE; SCOTCH_stratInit (&bipastrat); fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case '2' : /* Type-2 architecture */ flagval |= C_FLAGDECO2; break; case 'B' : /* Bipartitioning strategy */ case 'b' : SCOTCH_stratExit (&bipastrat); SCOTCH_stratInit (&bipastrat); if ((SCOTCH_stratGraphBipart (&bipastrat, &argv[i][2])) != 0) errorPrint ("main: invalid bipartitioning strategy"); break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'L' : /* Input vertex list */ case 'l' : flagval |= C_FLAGVRTINP; if (argv[i][2] != '\0') C_filenamevrtinp = &argv[i][2]; break; case 'V' : fprintf (stderr, "amk_grf, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); /* Create graph structure */ SCOTCH_graphLoad (&grafdat, C_filepntrgrfinp, -1, 0); /* Load source graph */ SCOTCH_graphData (&grafdat, &baseval, &vertnbr, NULL, NULL, NULL, /* Get graph data */ &vlbltab, NULL, NULL, NULL); listnbr = 0; /* Initialize vertex list */ listtab = NULL; if (flagval & C_FLAGVRTINP) { /* If list of vertices provided */ SCOTCH_Num listnum; if ((intLoad (C_filepntrvrtinp, &listnbr) != 1) || /* Read list size */ (listnbr < 0) || (listnbr > vertnbr)) errorPrint ("main: bad list input (1)"); if ((listtab = (SCOTCH_Num *) memAlloc (listnbr * sizeof (SCOTCH_Num))) == NULL) errorPrint ("main: out of memory (1)"); for (listnum = 0; listnum < listnbr; listnum ++) { /* Read list data */ if (intLoad (C_filepntrvrtinp, &listtab[listnum]) != 1) errorPrint ("main: bad list input (2)"); } intSort1asc1 (listtab, listnbr); for (listnum = 0; listnum < listnbr - 1; listnum ++) { /* Search for duplicates */ if (listtab[listnum] == listtab[listnum + 1]) errorPrint ("main: duplicate list labels"); } if (vlbltab != NULL) { /* If graph has vertex labels */ SCOTCH_Num vertnum; if ((sorttab = (C_VertSort *) memAlloc (vertnbr * sizeof (C_VertSort))) == NULL) errorPrint ("main: out of memory (2)"); for (vertnum = 0; vertnum < vertnbr; vertnum ++) { /* Initialize sort area */ sorttab[vertnum].vlblnum = vlbltab[vertnum]; sorttab[vertnum].vertnum = vertnum; } intSort2asc1 (sorttab, vertnbr); /* Sort by ascending labels */ for (listnum = 0, vertnum = 0; listnum < listnbr; listnum ++) { /* For all labels in list */ while ((vertnum < vertnbr) && (sorttab[vertnum].vlblnum < listtab[listnum])) vertnum ++; /* Search vertex graph with corresponding label */ if ((vertnum >= vertnbr) || /* If label not found */ (sorttab[vertnum].vlblnum > listtab[listnum])) errorPrint ("main: list label '" SCOTCH_NUMSTRING "' not in graph", (SCOTCH_Num) listtab[listnum]); listtab[listnum] = sorttab[vertnum ++].vertnum; /* Replace label by number */ } memFree (sorttab); /* Free sort area */ } } SCOTCH_archInit (&archdat); /* Initialize target architecture */ if ((flagval & C_FLAGDECO2) != 0) SCOTCH_archBuild2 (&archdat, &grafdat, listnbr, listtab); /* Compute type-2 architecture */ else SCOTCH_archBuild0 (&archdat, &grafdat, listnbr, listtab, &bipastrat); /* Compute type-0 architecture */ SCOTCH_archSave (&archdat, C_filepntrtgtout); /* Write target architecture */ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end potential (un)compression tasks */ SCOTCH_graphExit (&grafdat); /* Free target graph */ SCOTCH_archExit (&archdat); /* Free target architecture */ SCOTCH_stratExit (&bipastrat); /* Free strategy string */ if (listtab != NULL) /* If vertex list provided */ memFree (listtab); /* Free it */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gotst.c0000644000302600021200000004247613542631177016661 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gotst.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** Bruno MARCUSSEAU (v3.1) **/ /** **/ /** FUNCTION : Graph symbolic factorizer. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 4.0 : from : 27 jan 2004 **/ /** to : 28 nov 2005 **/ /** # Version 5.0 : from : 25 jun 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 20 apr 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The cost analysis routine leaves the **/ /** memory management to malloc and free **/ /** because it is assumed to be the most **/ /** efficient to merge free blocks and **/ /** reallocate them. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GOTST #include "module.h" #include "common.h" #include "scotch.h" #include "gotst.h" /* ** The static and global variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[3] = { /* File array */ { FILEMODER }, { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "gotst [ [ []]] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /*****************************/ /* */ /* This is the main function */ /* */ /*****************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; SCOTCH_Num vertnbr; SCOTCH_Num * verttab; SCOTCH_Num * vendtab; SCOTCH_Num edgenbr; SCOTCH_Num * edgetab; SCOTCH_Num baseval; SCOTCH_Ordering ordedat; SCOTCH_Num * permtab; SCOTCH_Num * peritab; int i; errorProg ("gotst"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give help */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gotst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); SCOTCH_graphLoad (&grafdat, C_filepntrgrfinp, -1, 3); SCOTCH_graphData (&grafdat, &baseval, &vertnbr, &verttab, &vendtab, NULL, NULL, &edgenbr, &edgetab, NULL); #ifdef SCOTCH_DEBUG_ALL if (vendtab != (verttab + 1)) errorPrint ("main: graph should be compact"); #endif /* SCOTCH_DEBUG_ALL */ if (memAllocGroup ((void **) (void *) &peritab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), &permtab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), NULL) == NULL) errorPrint ("main: out of memory"); SCOTCH_graphOrderInit (&grafdat, &ordedat, permtab, peritab, NULL, NULL, NULL); SCOTCH_graphOrderLoad (&grafdat, &ordedat, C_filepntrordinp); if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) errorPrint ("main: invalid ordering"); factorView (baseval, vertnbr, verttab, edgenbr, edgetab, permtab, peritab, C_filepntrdatout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ memFree (peritab); SCOTCH_graphOrderExit (&grafdat, &ordedat); SCOTCH_graphExit (&grafdat); return (EXIT_SUCCESS); } /*************************************/ /* */ /* These routines compute statistics */ /* on orderings. */ /* */ /*************************************/ static int factorView ( const SCOTCH_Num baseval, const SCOTCH_Num vertnbr, const SCOTCH_Num * const verttab, const SCOTCH_Num edgenbr, const SCOTCH_Num * const edgetab, const SCOTCH_Num * const permtab, const SCOTCH_Num * const peritab, FILE * restrict const stream) { SCOTCH_Num * restrict ldadtab; SCOTCH_Num * restrict lsontab; SCOTCH_Num * restrict lbrotab; SCOTCH_Num * restrict fnnztab; double fopcsum; double heigsum; FactorStat statdat; SCOTCH_Num vertnum; int o; if (memAllocGroup ((void **) (void *) &ldadtab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), &lsontab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), &lbrotab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), &fnnztab, (size_t) (vertnbr * sizeof (SCOTCH_Num)), NULL) == NULL) { errorPrint ("factorView: out of memory"); return (1); } statdat.ldadtax = ldadtab - baseval; statdat.lsontax = lsontab - baseval; statdat.lbrotax = lbrotab - baseval; statdat.fnnztax = fnnztab - baseval; if (factorView2 (baseval, vertnbr, verttab - baseval, edgetab - baseval, permtab - baseval, peritab - baseval, ldadtab - baseval, lsontab - baseval, lbrotab - baseval, fnnztab - baseval) != 0) { errorPrint ("factorView: factored matrix too large"); memFree (ldadtab); /* Free group leader */ return (1); } statdat.heigmin = SCOTCH_NUMMAX; statdat.heigmax = statdat.heignbr = 0; heigsum = 0.0L; for (vertnum = 0; vertnum < vertnbr; vertnum ++) { /* Get height sum */ if (ldadtab[vertnum] == -1) /* If column is a root */ factorView3 (&statdat, 1, vertnum + baseval, &heigsum); /* Scan subtree */ } statdat.heigavg = heigsum / (double) statdat.heignbr; statdat.heigdlt = 0.0L; statdat.fnnzsum = 0.0L; fopcsum = 0.0L; for (vertnum = 0; vertnum < vertnbr; vertnum ++) { /* Get delta */ if (ldadtab[vertnum] == -1) /* If column is a root */ factorView4 (&statdat, 1, vertnum + baseval, &fopcsum); } statdat.heigdlt /= (double) statdat.heignbr; o = (fprintf (stream, "O\tLeaf=" SCOTCH_NUMSTRING "\nO\tHeight min=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tavg=%f\tdlt=%f (%5.2f)\n", /* Write tree height statistics */ (SCOTCH_Num) statdat.heignbr, (SCOTCH_Num) statdat.heigmin, (SCOTCH_Num) statdat.heigmax, statdat.heigavg, statdat.heigdlt, ((statdat.heigdlt / statdat.heigavg) * (double) 100.0L)) == EOF); o |= (fprintf (stream, "O\tNNZ=%e\nO\tOPC=%e\n", statdat.fnnzsum, fopcsum) == EOF); if (o != 0) errorPrint ("factorView: bad output"); memFree (ldadtab); /* Free group leader */ return (o); } static int factorView2 ( const SCOTCH_Num baseval, const SCOTCH_Num vertnbr, const SCOTCH_Num * const verttax, const SCOTCH_Num * const edgetax, const SCOTCH_Num * const permtax, const SCOTCH_Num * const peritax, SCOTCH_Num * restrict ldadtax, SCOTCH_Num * restrict lsontax, SCOTCH_Num * restrict lbrotax, SCOTCH_Num * restrict fnnztax) { SCOTCH_Num * restrict frowtab; SCOTCH_Num * restrict fnxttab; SCOTCH_Num ** restrict facttax; SCOTCH_Num vertnnd; SCOTCH_Num pcolnum; memSet (lsontax + baseval, ~0, vertnbr * sizeof (SCOTCH_Num)); /* Assume columns have no sons at all */ if (memAllocGroup ((void **) (void *) &frowtab, (size_t) ((vertnbr + 1) * sizeof (SCOTCH_Num)), &fnxttab, (size_t) ((vertnbr + 1) * sizeof (SCOTCH_Num)), &facttax, (size_t) (vertnbr * sizeof (SCOTCH_Num *)), NULL) == NULL) { errorPrint ("factorView2: out of memory (1)"); return (1); } memSet (facttax, 0, vertnbr * sizeof (SCOTCH_Num *)); /* Set all factored column pointers to NULL */ facttax -= baseval; vertnnd = vertnbr + baseval; for (pcolnum = baseval; pcolnum < vertnnd; pcolnum ++) { /* For all columns of the permuted matrix */ SCOTCH_Num * fcoltab; SCOTCH_Num * restrict fcolptr; SCOTCH_Num frownbr; SCOTCH_Num frowidx; SCOTCH_Num frowidd; SCOTCH_Num scolnum; SCOTCH_Num icolnum; SCOTCH_Num irownum; SCOTCH_Num dcolnum; icolnum = peritax[pcolnum]; /* Get the original number of the column */ frownbr = 1; /* Start array of factored terms for column */ frowtab[0] = pcolnum; /* Add diagonal element as unmoveable starter */ for (irownum = verttax[icolnum]; irownum < verttax[icolnum + 1]; irownum ++) { SCOTCH_Num prownum; prownum = permtax[edgetax[irownum]]; /* Get permuted row */ if (prownum >= pcolnum) frowtab[frownbr ++] = prownum; } intSort1asc1 (frowtab + 1, frownbr - 1); /* Sort rows in ascending order */ frowtab[frownbr ++] = vertnnd; /* Add trailer */ for (frowidx = 0; frowidx < (frownbr - 1); frowidx ++) /* Create initial links */ fnxttab[frowidx] = frowidx + 1; frowidd = frowidx; /* Save index of trailer */ for (scolnum = lsontax[pcolnum]; scolnum != -1; scolnum = lbrotax[scolnum]) { /* For all son columns in elimination tree */ const SCOTCH_Num * restrict srowtab; SCOTCH_Num srownbr; SCOTCH_Num srowidx; SCOTCH_Num frowidx; SCOTCH_Num foldidx; SCOTCH_Num frownum; srowtab = facttax[scolnum]; /* Point to array of factors for son column */ srownbr = fnnztax[scolnum]; /* Get size of array */ for (srowidx = 1, frowidx = 0, foldidx = -1, frownum = frowtab[frowidx]; srowidx < srownbr; srowidx ++) { SCOTCH_Num srownum; srownum = srowtab[srowidx]; while (frownum < srownum) { /* While factor to add not in place */ foldidx = frowidx; /* Skip to next position */ frowidx = fnxttab[frowidx]; frownum = frowtab[frowidx]; } if (srownum == frownum) /* If factor already in column */ continue; frowtab[frownbr] = srownum; /* Add new slot */ fnxttab[frownbr] = frowidx; /* Link new slot */ fnxttab[foldidx] = frownbr; foldidx = frownbr ++; } memFree ((void *) srowtab); /* Free now useless factored column */ #ifdef SCOTCH_DEBUG_ALL facttax[scolnum] = NULL; #endif /* SCOTCH_DEBUG_ALL */ } frownbr -= 2; /* Remove markers from number of extra-diagonals */ fnnztax[pcolnum] = frownbr; /* Save number of extra-diagonals */ if (frownbr <= 0) { /* If factored column has no extra-diagonals */ ldadtax[pcolnum] = -1; /* Column has no father */ #ifdef SCOTCH_DEBUG_ALL lbrotax[pcolnum] = -1; #endif /* SCOTCH_DEBUG_ALL */ continue; /* Skip to next column without allocating or linking */ } if ((fcoltab = memAlloc (frownbr * sizeof (SCOTCH_Num))) == NULL) { /* Allocate array for factored column */ errorPrint ("factorView2: out of memory (2)"); return (1); } for (frowidx = fnxttab[0], fcolptr = fcoltab; frowidx != frowidd; frowidx = fnxttab[frowidx]) /* Fill factored array for column */ *fcolptr ++ = frowtab[frowidx]; dcolnum = fcoltab[0]; /* Get number of father, that it, first extra-diagonal */ ldadtax[pcolnum] = dcolnum; /* Link factored column to the separation tree */ lbrotax[pcolnum] = lsontax[dcolnum]; lsontax[dcolnum] = pcolnum; facttax[pcolnum] = fcoltab; /* Save factored array */ } memFree (frowtab); /* Free group leader */ return (0); } static void factorView3 ( FactorStat * restrict const statptr, SCOTCH_Num levlnum, SCOTCH_Num vertnum, double * restrict const hsumptr) { double hsumtmp; hsumtmp = 0.0; if (statptr->lsontax[vertnum] != -1) { /* If node has descendants */ SCOTCH_Num csonnum; for (csonnum = statptr->lsontax[vertnum]; csonnum != -1; csonnum = statptr->lbrotax[csonnum]) factorView3 (statptr, levlnum + 1, csonnum, &hsumtmp); } else { hsumtmp = (double) levlnum; statptr->heignbr ++; if (levlnum < statptr->heigmin) statptr->heigmin = levlnum; if (levlnum > statptr->heigmax) statptr->heigmax = levlnum; } *hsumptr += hsumtmp; } static void factorView4 ( FactorStat * restrict const statptr, SCOTCH_Num levlnum, SCOTCH_Num vertnum, double * restrict const fopcptr) { SCOTCH_Num fnnztmp; double fopctmp; fnnztmp = statptr->fnnztax[vertnum] + 1; /* Get extra-diagonals, plus diagonal */ fopctmp = (double) fnnztmp; statptr->fnnzsum += fopctmp; fopctmp *= fopctmp; if (statptr->lsontax[vertnum] != -1) { /* If node has descendants */ SCOTCH_Num csonnum; for (csonnum = statptr->lsontax[vertnum]; csonnum != -1; csonnum = statptr->lbrotax[csonnum]) factorView4 (statptr, levlnum + 1, csonnum, &fopctmp); /* Accumulate OPC on local sum */ } else statptr->heigdlt += fabs ((double) levlnum - statptr->heigavg); *fopcptr += fopctmp; /* Aggregate local sum at higher level */ } scotch_6.0.9/src/scotch/mord.c0000644000302600021200000002724013542631133016442 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mord.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh reordering software. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 4.0 : from : 15 nov 2002 **/ /** to : 06 jan 2006 **/ /** # Version 5.0 : from : 22 jan 2008 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 08 sep 2008 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MORD #include "module.h" #include "common.h" #include "scotch.h" #include "mord.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "mord [ [ []]] ", " -c : Choose default ordering strategy according to one or several of :", " b : enforce load balance as much as possible", " q : privilege quality over speed (default)", " s : privilege speed over quality", " t : enforce safety", " -h : Display this help", " -m : Save column block mapping data to ", " -o : Use mesh ordering strategy (see user's manual)", " (see default strategy with option '-vs')", " -t : Save partitioning tree data to ", " -V : Print program version and copyright", " -v : Set verbose mode to :", " s : strategy information", " t : timing information", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Num vnodnbr; /* Number of nodes */ SCOTCH_Mesh meshdat; /* Source graph */ SCOTCH_Ordering ordedat; /* Graph ordering */ SCOTCH_Num * permtab; /* Permutation array */ SCOTCH_Strat stradat; /* Ordering strategy */ SCOTCH_Num straval; char * straptr; int flagval; Clock runtime[2]; /* Timing variables */ int i, j; errorProg ("mord"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } flagval = C_FLAGNONE; /* Default behavior */ straval = 0; /* No strategy flags */ straptr = NULL; SCOTCH_stratInit (&stradat); fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'C' : case 'c' : /* Strategy selection parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'B' : case 'b' : straval |= SCOTCH_STRATBALANCE; break; case 'Q' : case 'q' : straval |= SCOTCH_STRATQUALITY; break; case 'S' : case 's' : straval |= SCOTCH_STRATSPEED; break; case 'T' : case 't' : straval |= SCOTCH_STRATSAFETY; break; default : errorPrint ("main: invalid strategy selection option '%c'", argv[i][j]); } } break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : /* Output separator mapping */ case 'm' : flagval |= C_FLAGMAPOUT; if (argv[i][2] != '\0') C_filenamemapout = &argv[i][2]; break; case 'O' : /* Ordering strategy */ case 'o' : straptr = &argv[i][2]; SCOTCH_stratExit (&stradat); SCOTCH_stratInit (&stradat); if ((SCOTCH_stratMeshOrder (&stradat, straptr)) != 0) errorPrint ("main: invalid ordering strategy"); break; case 'V' : fprintf (stderr, "mord, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); break; case 'v' : /* Output control info */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'S' : case 's' : flagval |= C_FLAGVERBSTR; break; case 'T' : case 't' : flagval |= C_FLAGVERBTIM; break; default : errorPrint ("main: unprocessed parameter '%c' in '%s'", argv[i][j], argv[i]); } } break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ clockInit (&runtime[0]); clockStart (&runtime[0]); SCOTCH_meshInit (&meshdat); /* Create mesh structure */ SCOTCH_meshLoad (&meshdat, C_filepntrsrcinp, -1); /* Read source mesh */ SCOTCH_meshSize (&meshdat, NULL, &vnodnbr, NULL); /* Get number of nodes */ if (straval != 0) { if (straptr != NULL) errorPrint ("main: options '-c' and '-o' are exclusive"); SCOTCH_stratMeshOrderBuild (&stradat, straval, 0.1); } clockStop (&runtime[0]); /* Get input time */ clockInit (&runtime[1]); clockStart (&runtime[1]); if ((permtab = (SCOTCH_Num *) memAlloc (vnodnbr * sizeof (SCOTCH_Num))) == NULL) errorPrint ("main: out of memory"); SCOTCH_meshOrderInit (&meshdat, &ordedat, permtab, NULL, NULL, NULL, NULL); /* Create ordering */ SCOTCH_meshOrderCompute (&meshdat, &ordedat, &stradat); /* Perform ordering */ clockStop (&runtime[1]); /* Get ordering time */ #ifdef SCOTCH_DEBUG_ALL SCOTCH_meshOrderCheck (&meshdat, &ordedat); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[0]); SCOTCH_meshOrderSave (&meshdat, &ordedat, C_filepntrordout); /* Write ordering */ if (flagval & C_FLAGMAPOUT) /* If mapping wanted */ SCOTCH_meshOrderSaveMap (&meshdat, &ordedat, C_filepntrmapout); /* Write mapping */ clockStop (&runtime[0]); /* Get output time */ if (flagval & C_FLAGVERBSTR) { fprintf (C_filepntrlogout, "S\tStrat="); SCOTCH_stratSave (&stradat, C_filepntrlogout); putc ('\n', C_filepntrlogout); } if (flagval & C_FLAGVERBTIM) { fprintf (C_filepntrlogout, "T\tOrder\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n", (double) clockVal (&runtime[1]), (double) clockVal (&runtime[0]), (double) clockVal (&runtime[0]) + (double) clockVal (&runtime[1])); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_meshOrderExit (&meshdat, &ordedat); SCOTCH_stratExit (&stradat); SCOTCH_meshExit (&meshdat); memFree (permtab); return (EXIT_SUCCESS); } /*******************************************/ /* */ /* Stubs to avoid including target module. */ /* */ /*******************************************/ SCOTCH_Num T_domWght ( const void * const arch, const void * const dom) { errorPrint ("T_domWghtMord: internal error"); return (1); } SCOTCH_Num _SCOTCHTdomWght ( const void * const arch, const void * const dom) { errorPrint ("T_domWghtMord: internal error"); return (1); } SCOTCH_Num T_domDist ( const void * const arch, const void * const dom0, const void * const dom1) { errorPrint ("T_domDistMord: internal error"); return (1); } SCOTCH_Num _SCOTCHTdomDist ( const void * const arch, const void * const dom0, const void * const dom1) { errorPrint ("T_domDistMord: internal error"); return (1); } scotch_6.0.9/src/scotch/gmap.h0000644000302600021200000001465413542631236016443 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010,2011,2014,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmap.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Part of a graph static mapper. **/ /** These lines are the data declaration **/ /** for the main routine. **/ /** **/ /** DATES : # Version 0.0 : from : 05 jan 1993 **/ /** to 12 may 1993 **/ /** # Version 1.3 : from : 09 apr 1994 **/ /** to 30 apr 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 08 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 09 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 15 aug 1995 **/ /** # Version 3.1 : from : 07 nov 1995 **/ /** to 10 nov 1995 **/ /** # Version 3.2 : from : 04 oct 1996 **/ /** to 18 jul 1997 **/ /** # Version 3.3 : from : 07 oct 1998 **/ /** to : 31 may 1999 **/ /** # Version 4.0 : from : 16 jan 2004 **/ /** to : 16 jan 2004 **/ /** # Version 5.0 : from : 12 jun 2008 **/ /** to : 18 jun 2008 **/ /** # Version 5.1 : from : 28 aug 2010 **/ /** to : 18 jul 2011 **/ /** # Version 6.0 : from : 29 may 2010 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 7 /* Number of files in list */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenametgtinp fileBlockName (C_fileTab, 1) /* Target architecture input file name */ #define C_filenamemapout fileBlockName (C_fileTab, 2) /* Mapping result output file name */ #define C_filenamelogout fileBlockName (C_fileTab, 3) /* Log file name */ #define C_filenamevfxinp fileBlockName (C_fileTab, 4) /* Fixed vertex file */ #define C_filenamemaoinp fileBlockName (C_fileTab, 5) /* Old mapping file */ #define C_filenamevmlinp fileBlockName (C_fileTab, 6) /* Vertex migration load file */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrtgtinp fileBlockFile (C_fileTab, 1) /* Target architecture input file */ #define C_filepntrmapout fileBlockFile (C_fileTab, 2) /* Mapping result output file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 3) /* Log file */ #define C_filepntrvfxinp fileBlockFile (C_fileTab, 4) /* Fixed vertex file */ #define C_filepntrmaoinp fileBlockFile (C_fileTab, 5) /* Old mapping file */ #define C_filepntrvmlinp fileBlockFile (C_fileTab, 6) /* Vertex migration load file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGPART 0x0001 /* Partitioning */ #define C_FLAGPARTOVL 0x0002 /* Partitioning with overlap */ #define C_FLAGVERBSTR 0x0004 /* Verbose flags */ #define C_FLAGVERBTIM 0x0008 #define C_FLAGVERBMAP 0x0010 #define C_FLAGKBALVAL 0x0020 /* Imbalance tolerance */ #define C_FLAGCLUSTER 0x0040 /* Clustering */ #define C_FLAGFIXED 0x0080 /* Fixed vertices input file */ #define C_FLAGRMAPOLD 0x0100 /* Old mapping file */ #define C_FLAGRMAPRAT 0x0200 /* Edge migration ratio */ #define C_FLAGRMAPCST 0x0400 /* Vertex migration cost file */ scotch_6.0.9/src/scotch/gmap.c0000644000302600021200000005461313542631177016441 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmap.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Sebastien FOURESTIER (v6.0) **/ /** **/ /** FUNCTION : Part of a graph mapping software. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 0.0 : from : 05 jan 1993 **/ /** to 12 may 1993 **/ /** # Version 1.1 : from : 15 oct 1993 **/ /** to 15 oct 1993 **/ /** # Version 1.3 : from : 06 apr 1994 **/ /** to 18 may 1994 **/ /** # Version 2.0 : from : 06 jun 1994 **/ /** to 17 nov 1994 **/ /** # Version 2.1 : from : 07 apr 1995 **/ /** to 18 jun 1995 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to 02 oct 1995 **/ /** # Version 3.1 : from : 07 nov 1995 **/ /** to 25 apr 1996 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to 26 may 1998 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to : 30 mar 1999 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 16 jan 2004 **/ /** to : 27 dec 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 18 jun 2008 **/ /** # Version 5.1 : from : 30 jun 2010 **/ /** to : 31 aug 2011 **/ /** # Version 6.0 : from : 29 may 2010 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMAP #include "module.h" #include "common.h" #include "scotch.h" #include "gmap.h" /* ** The static variables. */ static int C_partNbr = 1; /* Default number of parts / cluster size */ static int C_paraNum = 0; /* Number of parameters */ static int C_paraNbr = 0; /* No parameters for mapping */ static int C_fileNum = 0; /* Number of file in arg list */ static int C_fileNbr = 4; /* Number of files for mapping */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODER }, { FILEMODEW }, { FILEMODEW }, { FILEMODER }, { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { /* Usage */ "gmap [ [ [ []]]] ", "gpart [] [ [ []]] ", " -b : Load imbalance tolerance (default: 0.05)", " -c : Choose default mapping strategy according to one or several of :", " b : enforce load balance as much as possible", " q : privilege quality over speed (default)", " r : use only recursive bipartitioning", " s : privilege speed over quality", " t : enforce safety", " -f : Fixed vertices input file", " -h : Display this help", " -m : Set mapping strategy (see user's manual)", " -o : Use partitioning with overlap (only for gpart)", " -q : Do graph clustering instead of graph partitioning (for gpart)", " -q : Do graph clustering instead of static mapping (for gmap)", " -ro : Old mapping input file (for remapping)", " -rr : Edge migration ratio (for remapping, default: 1)", " -rv : Vertex migration cost input file (for remapping)", " -s : Force unity weights on :", " e : edges", " v : vertices", " -V : Print program version and copyright", " -v : Set verbose mode to :", " m : mapping information", " s : strategy information", " t : timing information", "", "See default strategy with option '-vs'", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; /* Source graph */ SCOTCH_Num grafflag; /* Source graph properties */ SCOTCH_Arch archdat; /* Target architecture */ SCOTCH_Strat stradat; /* Mapping strategy */ char * straptr; /* Strategy string to use */ SCOTCH_Num straval; SCOTCH_Mapping mappdat; /* Mapping data */ SCOTCH_Mapping mapodat; /* Old mapping data */ SCOTCH_Num * restrict parttab; /* Partition array */ SCOTCH_Num * restrict vmlotab; /* Vertex migration cost array */ SCOTCH_Num vertnbr; /* Number of graph vertices */ Clock runtime[2]; /* Timing variables */ int flagval; double kbalval; /* Imbalance tolerance value */ double emraval; /* Edge migration ratio */ int i, j; flagval = C_FLAGNONE; /* Default behavior */ kbalval = 0.01; /* Default imbalance */ emraval = 1; /* Default edge migration ratio */ straval = 0; /* No strategy flags */ straptr = NULL; vmlotab = NULL; #ifdef SCOTCH_COMPILE_PART flagval |= C_FLAGPART; C_paraNbr = 1; /* One more parameter */ C_fileNbr = 3; /* One less file to provide */ errorProg ("gpart"); #else errorProg ("gmap"); #endif /* SCOTCH_COMPILE_PART */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } grafflag = 0; /* Use vertex and edge weights */ SCOTCH_stratInit (&stradat); /* Set default mapping strategy */ fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < C_paraNbr) { /* If number of parameters not reached */ if ((C_partNbr = atoi (argv[i])) < 1) /* Get the number of parts */ errorPrint ("main: invalid number of parts '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_fileNbr) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'B' : case 'b' : flagval |= C_FLAGKBALVAL; kbalval = atof (&argv[i][2]); if ((kbalval < 0.0) || (kbalval > 1.0) || ((kbalval == 0.0) && ((argv[i][2] != '0') && (argv[i][2] != '.')))) { errorPrint ("main: invalid load imbalance ratio"); } break; case 'C' : case 'c' : /* Strategy selection parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'B' : case 'b' : straval |= SCOTCH_STRATBALANCE; break; case 'Q' : case 'q' : straval |= SCOTCH_STRATQUALITY; break; case 'R' : case 'r' : straval |= SCOTCH_STRATRECURSIVE; break; case 'S' : case 's' : straval |= SCOTCH_STRATSPEED; break; case 'T' : case 't' : straval |= SCOTCH_STRATSAFETY; break; default : errorPrint ("main: invalid strategy selection option '%c' after '-C'", argv[i][j]); } } break; case 'F' : case 'f' : /* Fixed vertex file */ flagval |= C_FLAGFIXED; C_filenamevfxinp = &argv[i][2]; break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : case 'm' : straptr = &argv[i][2]; break; case 'O' : case 'o' : flagval |= C_FLAGPARTOVL; break; case 'Q' : case 'q' : flagval |= C_FLAGCLUSTER; if ((flagval & C_FLAGPART) != 0) { /* If partitioning program */ if (argv[i][2] != '\0') errorPrint ("main: invalid parameter '%s' after '-q' for gpart", argv[i] + 2); } else { if (argv[i][1] == '\0') errorPrint ("main: missing parameter after '-q' for gmap"); if ((C_partNbr = atoi (argv[i] + 2)) < 1) /* Get maximum cluster load */ errorPrint ("main: invalid cluster load '%s'", argv[i] + 2); } break; case 'R' : case 'r' : /* Remapping parameters */ switch (argv[i][2]) { case 'O' : case 'o' : /* Old mapping input file */ flagval |= C_FLAGRMAPOLD; C_filenamemaoinp = &argv[i][3]; break; case 'R' : case 'r' : /* Edge migration ratio */ flagval |= C_FLAGRMAPRAT; emraval = atof (&argv[i][3]); if (emraval <= 0.0) errorPrint ("main: invalid edge migration ratio"); break; case 'V' : case 'v' : /* Vertex migration cost */ flagval |= C_FLAGRMAPCST; C_filenamevmlinp = &argv[i][3]; break; default : errorPrint ("main: invalid remapping option '%c'", argv[i][2]); } break; case 'S' : case 's' : /* Source graph parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'E' : case 'e' : grafflag |= 2; /* Do not load edge weights */ break; case 'V' : case 'v' : grafflag |= 1; /* Do not load vertex weights */ break; default : errorPrint ("main: invalid source graph option '%c'", argv[i][j]); } } break; case 'V' : fprintf (stderr, "gmap/gpart, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); case 'v' : /* Output control info */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'M' : case 'm' : flagval |= C_FLAGVERBMAP; break; case 'S' : case 's' : flagval |= C_FLAGVERBSTR; break; case 'T' : case 't' : flagval |= C_FLAGVERBTIM; break; default : errorPrint ("main: unprocessed parameter '%c' in '%s'", argv[i][j], argv[i]); } } break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } if ((flagval & C_FLAGPART) != 0) { /* If program run as the partitioner */ fileBlockName (C_fileTab, 3) = fileBlockName (C_fileTab, 2); /* Put provided file names at their right place */ fileBlockName (C_fileTab, 2) = fileBlockName (C_fileTab, 1); fileBlockName (C_fileTab, 1) = "-"; } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ clockInit (&runtime[0]); clockStart (&runtime[0]); SCOTCH_graphInit (&grafdat); /* Create graph structure */ SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag); /* Read source graph */ SCOTCH_archInit (&archdat); /* Create architecture structure */ if ((flagval & C_FLAGPART) != 0) { /* If program run as the partitioner */ if ((flagval & C_FLAGCLUSTER) != 0) /* If program run as graph clustering */ SCOTCH_archVcmplt (&archdat); /* Create a variable-sized complete graph */ else /* Program is run as plain graph partitioner */ SCOTCH_archCmplt (&archdat, C_partNbr); /* Create a complete graph of proper size */ } else { SCOTCH_archLoad (&archdat, C_filepntrtgtinp); /* Read target architecture */ if ((flagval & C_FLAGCLUSTER) == 0) /* If part size not to be preserved */ C_partNbr = SCOTCH_archSize (&archdat); else { if (SCOTCH_archVar (&archdat) == 0) errorPrint ("main: non variable-sized architecture provided while '-q' flag set"); } } if (((flagval & (C_FLAGPART | C_FLAGPARTOVL)) == C_FLAGPARTOVL) && /* If the mapper was asked to compute an overlap */ (strcmp (SCOTCH_archName (&archdat), "cmplt") != 0)) /* And the given target architecture is not a complete graph */ errorPrint ("main: option '-o' only valid for graph partitioning"); if ((flagval & (C_FLAGPARTOVL | C_FLAGCLUSTER)) == (C_FLAGPARTOVL | C_FLAGCLUSTER)) errorPrint ("main: options '-o' and '-q' are exclusive"); if ((flagval & (C_FLAGPARTOVL | C_FLAGFIXED)) == (C_FLAGPARTOVL | C_FLAGFIXED)) errorPrint ("main: options '-o' and '-f' are exclusive"); if ((flagval & (C_FLAGPARTOVL | C_FLAGRMAPOLD)) == (C_FLAGPARTOVL | C_FLAGRMAPOLD)) errorPrint ("main: options '-o' and '-ro' are exclusive"); if (((flagval & C_FLAGRMAPOLD) == 0) && (((flagval & C_FLAGRMAPRAT) != 0) || ((flagval & C_FLAGRMAPCST) != 0))) errorPrint ("main: an old mapping file must be provided ('-ro' flag) when '-rr' or '-rv' flags are set"); if ((straval != 0) || ((flagval & C_FLAGKBALVAL) != 0)) { if (straptr != NULL) errorPrint ("main: options '-b' / '-c' and '-m' are exclusive"); if ((flagval & C_FLAGPARTOVL) != 0) /* If overlap partitioning wanted */ SCOTCH_stratGraphPartOvlBuild (&stradat, straval, (SCOTCH_Num) C_partNbr, kbalval); else if ((flagval & C_FLAGCLUSTER) != 0) /* If clustering wanted */ SCOTCH_stratGraphClusterBuild (&stradat, straval, (SCOTCH_Num) C_partNbr, 1.0, kbalval); else SCOTCH_stratGraphMapBuild (&stradat, straval, (SCOTCH_Num) C_partNbr, kbalval); } SCOTCH_graphSize (&grafdat, &vertnbr, NULL); if ((parttab = memAlloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) /* Allocate by hand in case of overlap partitioning */ errorPrint ("main: out of memory"); if ((flagval & C_FLAGPARTOVL) == 0) { if ((flagval & C_FLAGFIXED) != 0) SCOTCH_graphTabLoad (&grafdat, parttab, C_filepntrvfxinp); if ((flagval & C_FLAGRMAPOLD) != 0) { SCOTCH_graphMapInit (&grafdat, &mapodat, &archdat, NULL); SCOTCH_graphMapLoad (&grafdat, &mapodat, C_filepntrmaoinp); if ((flagval & C_FLAGRMAPCST) != 0) { if ((vmlotab = memAlloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) errorPrint ("main: out of memory (2)"); SCOTCH_graphTabLoad (&grafdat, vmlotab, C_filepntrvmlinp); } } } clockStop (&runtime[0]); /* Get input time */ clockInit (&runtime[1]); clockStart (&runtime[1]); if ((flagval & C_FLAGPARTOVL) != 0) { /* If overlap partitioning wanted */ SCOTCH_graphPartOvl (&grafdat, C_partNbr, &stradat, parttab); /* Perform overlap partitioning */ clockStop (&runtime[1]); /* Get computation time */ clockStart (&runtime[0]); SCOTCH_graphTabSave (&grafdat, parttab, C_filepntrmapout); /* Write partitioning */ } else { /* Regular partitioning / mapping / clustering wanted */ if (straptr != NULL) /* Set static mapping strategy if needed */ SCOTCH_stratGraphMap (&stradat, straptr); SCOTCH_graphMapInit (&grafdat, &mappdat, &archdat, parttab); if ((flagval & C_FLAGRMAPOLD) != 0) { if ((flagval & C_FLAGFIXED) != 0) SCOTCH_graphRemapFixedCompute (&grafdat, &mappdat, &mapodat, emraval, vmlotab, &stradat); /* Perform remapping */ else SCOTCH_graphRemapCompute (&grafdat, &mappdat, &mapodat, emraval, vmlotab, &stradat); } else { if ((flagval & C_FLAGFIXED) != 0) SCOTCH_graphMapFixedCompute (&grafdat, &mappdat, &stradat); /* Perform mapping */ else SCOTCH_graphMapCompute (&grafdat, &mappdat, &stradat); } clockStop (&runtime[1]); /* Get computation time */ clockStart (&runtime[0]); SCOTCH_graphMapSave (&grafdat, &mappdat, C_filepntrmapout); /* Write mapping */ } clockStop (&runtime[0]); /* Get output time */ if (flagval & C_FLAGVERBSTR) { fprintf (C_filepntrlogout, "S\tStrat="); SCOTCH_stratSave (&stradat, C_filepntrlogout); putc ('\n', C_filepntrlogout); } if (flagval & C_FLAGVERBTIM) { fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n", (double) clockVal (&runtime[1]), (double) clockVal (&runtime[0]), (double) clockVal (&runtime[0]) + (double) clockVal (&runtime[1])); } if ((flagval & C_FLAGPARTOVL) != 0) { /* If overlap partitioning wanted */ if (flagval & C_FLAGVERBMAP) SCOTCH_graphPartOvlView (&grafdat, C_partNbr, parttab, C_filepntrlogout); } else { /* Regular partitioning / mapping wanted */ if (flagval & C_FLAGVERBMAP) { if ((flagval & C_FLAGRMAPOLD) != 0) SCOTCH_graphRemapView (&grafdat, &mappdat, &mapodat, emraval, vmlotab, C_filepntrlogout); else SCOTCH_graphMapView (&grafdat, &mappdat, C_filepntrlogout); } SCOTCH_graphMapExit (&grafdat, &mappdat); /* Free mapping structure only when used, that is, not for overlay */ if ((flagval & C_FLAGRMAPOLD) != 0) { SCOTCH_graphMapExit (&grafdat, &mapodat); if ((flagval & C_FLAGRMAPCST) != 0) memFree (vmlotab); } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_graphExit (&grafdat); SCOTCH_stratExit (&stradat); SCOTCH_archExit (&archdat); memFree (parttab); /* Free hand-made partition array */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/amk_ccc.h0000644000302600021200000001404013303015264017054 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_ccc.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for CCC **/ /** graphs, to be used to build the **/ /** architecture description files for **/ /** these graphs. **/ /** **/ /** DATES : # Version 1.3 : from : 24 apr 1994 **/ /** to : 24 apr 1994 **/ /** # Version 2.0 : from : 13 jul 1994 **/ /** to : 18 jul 1994 **/ /** # Version 3.0 : from : 18 sep 1995 **/ /** to : 18 sep 1995 **/ /** # Version 3.2 : from : 07 may 1997 **/ /** to : 07 may 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 1 /* Number of files in list */ #define C_filenamearcout fileBlockName (C_fileTab, 0) /* Architecture output file name */ #define C_filepntrarcout fileBlockFile (C_fileTab, 0) /* Architecture output file */ /* ** The type and structure definitions. */ /*+ This structure defines a CCC vertex. +*/ typedef struct C_Vertex_ { SCOTCH_Num lvl; /*+ Vertex level +*/ SCOTCH_Num pos; /*+ Vertex position +*/ } C_Vertex; /*+ This structure defines a vertex distance information. +*/ typedef struct C_VertDist_ { int queued; /*+ Flag set if vertex queued +*/ SCOTCH_Num dist; /*+ Distance to initial vertex +*/ } C_VertDist; /*+ This is a neighbor queue element. +*/ typedef struct C_QueueElem_ { C_Vertex vert; /*+ Vertex number +*/ SCOTCH_Num dist; /*+ Distance reached +*/ } C_QueueElem; /*+ This is the distance queue. +*/ typedef struct C_Queue_ { C_QueueElem * tab; /*+ Pointer to queue data +*/ SCOTCH_Num min; /*+ Pointer to first element +*/ SCOTCH_Num max; /*+ Pointer to last element +*/ } C_Queue; /* ** The macro definitions. */ #define C_vertLabl(v) (((v)->lvl << ccdim) | (v)->pos) #define C_queueInit(q,n) ((((q)->tab = (C_QueueElem *) memAlloc ((n) * sizeof (C_QueueElem))) == NULL) ? 1 : 0) #define C_queueExit(q) memFree ((q)->tab) #define C_queueFlush(q) (q)->min = \ (q)->max = 0 #define C_queuePut(q,v,d) ((q)->tab[(q)->max].vert = *(v), \ (q)->tab[(q)->max ++].dist = (d)) #define C_queueGet(q,v,d) (((q)->min < (q)->max) ? (*(v) = (q)->tab[(q)->min].vert, \ *(d) = (q)->tab[(q)->min ++].dist, \ 1) \ : 0) #define C_distaRoot(v) (C_queueFlush (&C_distaQueue), \ C_queuePut (&C_distaQueue, (v), 0), \ C_distaTab[C_vertLabl (v)].queued = 1) #define C_distaGet(v,d) (C_queueGet (&C_distaQueue, (v), (d))) #define C_distaPut(v,d) ((C_distaTab[C_vertLabl (v)].queued == 0) \ ? C_queuePut (&C_distaQueue, (v), d), \ C_distaTab[C_vertLabl (v)].queued = 1 \ : 0) scotch_6.0.9/src/scotch/amk_m2.c0000644000302600021200000002663313542631133016654 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_m2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for **/ /** bidimensional mesh graphs, to be used **/ /** to build the architecture description **/ /** files for these graphs. **/ /** **/ /** DATES : # Version 1.3 : from : 21 apr 1994 **/ /** to : 21 apr 1994 **/ /** # Version 2.0 : from : 12 jul 1994 **/ /** to : 12 nov 1994 **/ /** # Version 3.0 : from : 17 jul 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.2 : from : 31 may 1997 **/ /** to : 02 jun 1997 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 09 feb 2004 **/ /** to : 09 feb 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 21 apr 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ /** t (0,0)=0, t (1,0) = 1, **/ /** t (dX - 1, 0) = dX - 1, **/ /** t (0,1) = dX, and **/ /** t(x,y) = (y * dX) + x. **/ /** **/ /** # The nested dissection method should **/ /** behave like the architecture built in **/ /** the mapper. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_M2 #include "module.h" #include "common.h" #include "scotch.h" #include "arch.h" #include "arch_mesh.h" #include "amk_m2.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODEW } }; static const char * C_usageList[] = { "amk_m2 [ []] ", " -h : Display this help", " -m : Decomposition method", " n : Nested dissection (cut biggest dimension)", " o : One-way dissection (y, then x)", " -V : Print program version and copyright", "", "Default option set is : '-Mn'", NULL }; /*************************************************/ /* */ /* The main routine, which computes the distance */ /* triangular table. */ /* */ /*************************************************/ int main ( int argc, char * argv[]) { ArchMesh2 arch; /* Mesh dimensions */ ArchMesh2Dom dom; /* Initial domain */ C_MethType methtype; /* Bipartitioning method */ Anum termnbr; /* Number of terminal domains */ Anum termnum; Anum termmax; /* Maximum terminal number */ Anum * termtab; /* Terminal numbers table */ Anum x0, y0, x1, y1; int i; errorProg ("amk_m2"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } methtype = C_METHNESTED; arch.c[0] = /* Preset mesh dimensions */ arch.c[1] = 1; fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 2) { /* If number of parameters not reached */ if ((arch.c[C_paraNum ++] = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'M' : /* Use a built-in method */ case 'm' : switch (argv[i][2]) { case 'N' : /* Nested dissection */ case 'n' : methtype = C_METHNESTED; break; case 'O' : /* One-way dissection */ case 'o' : methtype = C_METHONEWAY; break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "amk_m2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ dom.c[0][0] = 0; /* Set the initial domain */ dom.c[0][1] = arch.c[0] - 1; dom.c[1][0] = 0; dom.c[1][1] = arch.c[1] - 1; termnbr = arch.c[0] * arch.c[1]; /* Compute number of terminals */ termmax = 0; /* Maximum terminal value not known yet */ if ((termtab = (Anum *) memAlloc (termnbr * sizeof (Anum))) == NULL) /* Allocate terminal array */ errorPrint ("main: out of memory"); memset (termtab, -1, termnbr * sizeof (unsigned int)); /* Initilize mapping table */ C_termBipart (&arch, &dom, 1, termtab, &termmax, /* Compute terminal numbers */ (methtype == C_METHNESTED) ? archMesh2DomBipart : archMesh2DomBipartO); fprintf (C_filepntrarcout, "deco\n0\n" ANUMSTRING "\t" ANUMSTRING "\n", /* Print file header */ termnbr, termmax); for (termnum = 0; termnum < termnbr; termnum ++) /* For all terminals */ fprintf (C_filepntrarcout, ANUMSTRING "\t1\t" ANUMSTRING "\n", /* Print terminal data */ termnum, termtab[termnum]); for (y0 = 0; y0 < arch.c[1]; y0 ++) { /* For all vertices */ for (x0 = 0; x0 < arch.c[0]; x0 ++) { for (y1 = 0; y1 <= y0; y1 ++) { /* Compute distance to smaller vertices */ for (x1 = 0; (x1 < arch.c[0]) && ((y1 < y0) || (x1 < x0)); x1 ++) fprintf (C_filepntrarcout, ((x1 == 0) && (y1 == 0)) ? ANUMSTRING : " " ANUMSTRING, C_termDist (x0, y0, x1, y1)); } fprintf (C_filepntrarcout, "\n"); } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ memFree (termtab); /* Free terminal number array */ return (EXIT_SUCCESS); } /* This routine recursively determines the values ** of all the terminal vertices of the mesh domain, ** and puts them in table. */ void C_termBipart ( ArchMesh2 * archptr, ArchMesh2Dom * domptr, Anum num, Anum * termtab, Anum * termmax, int (* methfunc) ()) { ArchMesh2Dom dom0; ArchMesh2Dom dom1; if (methfunc (archptr, domptr, &dom0, &dom1) == 0) { /* If we can bipartition */ C_termBipart (archptr, &dom0, num + num, termtab, termmax, methfunc); /* Bipartition recursively */ C_termBipart (archptr, &dom1, num + num + 1, termtab, termmax, methfunc); } else { /* If we have reached the end */ termtab[domptr->c[1][0] * archptr->c[0] + /* Set the terminal number */ domptr->c[0][0]] = num; if (*termmax < num) /* If we have reached a new maximum */ *termmax = num; /* Record it */ } } scotch_6.0.9/src/scotch/gbase.h0000644000302600021200000000627013303015264016563 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gbase.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the declarations **/ /** for the source graph base changer. **/ /** **/ /** DATES : # Version 4.0 : from : 12 may 2006 **/ /** to : 12 may 2006 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Source graph output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Source graph output file */ scotch_6.0.9/src/scotch/amk_p2.c0000644000302600021200000001423413542631133016651 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_p2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the target architecture file **/ /** for a weighted path with two vertices **/ /** used to bipartition graphs in parts of **/ /** different sizes. **/ /** **/ /** DATES : # Version 3.0 : from : 17 jul 1995 **/ /** to : 17 jul 1995 **/ /** # Version 3.2 : from : 02 jun 1997 **/ /** to : 02 jun 1997 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.1 : from : 16 dec 2007 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_P2 #include "module.h" #include "common.h" #include "scotch.h" #include "amk_p2.h" /* ** The static variables. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODEW } }; static const char * C_usageList[] = { "amk_p2 [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /************************************/ /* */ /* The main routine, which computes */ /* the decomposition. */ /* */ /************************************/ int main ( int argc, char * argv[]) { int wght[2] = {1, 1}; /* Vertex weights */ int i; errorProg ("amk_p2"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 2) { /* If number of parameters not reached */ if ((wght[C_paraNum ++] = atoi (argv[i])) < 1) /* Get vertex weights */ errorPrint ("main: invalid weight '%s'", argv[i]); continue; /* Process remaining parameters */ } if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "amk_p2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ fprintf (C_filepntrtgtout, "cmpltw\t2\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Print target description */ (SCOTCH_Num) wght[0], (SCOTCH_Num) wght[1]); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/dgtst.h0000644000302600021200000000706513303015264016632 0ustar pelegrinpelegrin/* Copyright 2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgtst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel sparse matrix **/ /** ordering software. **/ /** This module contains the data declara- **/ /** tions for the distributed source graph **/ /** analyzer. **/ /** **/ /** DATES : # Version 5.0 : from : 23 jun 2007 **/ /** to : 24 jun 2007 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to : 10 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenamedatout fileBlockName (C_fileTab, 1) /* Statistics output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 1) /* Statistics output file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGDEBUG 0x0001 /* Enable easy debugger attachment */ scotch_6.0.9/src/scotch/gmk_msh.c0000644000302600021200000001333013542631177017131 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_msh.c **/ /** **/ /** AUTHORS : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh-to-graph converter. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 4.0 : from : 21 jan 2004 **/ /** to : 21 jan 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMK_MSH #include "module.h" #include "common.h" #include "scotch.h" #include "gmk_msh.h" /* ** The static and global variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[2] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "gmk_msh [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /*****************************/ /* */ /* This is the main function */ /* */ /*****************************/ int main ( int argc, char * argv[]) { SCOTCH_Mesh meshdat; SCOTCH_Graph grafdat; int i; errorProg ("gmk_msh"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give help */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gmk_msh, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_meshInit (&meshdat); SCOTCH_graphInit (&grafdat); SCOTCH_meshLoad (&meshdat, C_filepntrmshinp, -1); SCOTCH_meshCheck (&meshdat); SCOTCH_meshGraph (&meshdat, &grafdat); #ifdef SCOTCH_DEBUG_ALL if (SCOTCH_graphCheck (&grafdat) != 0) errorPrint ("main: bad graph structure"); #endif /* SCOTCH_DEBUG_ALL */ SCOTCH_graphSave (&grafdat, C_filepntrgrfout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_graphExit (&grafdat); SCOTCH_meshExit (&meshdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gtst.h0000644000302600021200000000705613303015264016466 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gtst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the declarations **/ /** for the source graph analyzer. **/ /** **/ /** DATES : # Version 2.0 : from : 31 oct 1993 **/ /** to 31 oct 1993 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 19 oct 1998 **/ /** to : 19 oct 1998 **/ /** # Version 4.0 : from : 10 sep 2003 **/ /** to : 10 sep 2003 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenamedatout fileBlockName (C_fileTab, 1) /* Statistics output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 1) /* Statistics output file */ scotch_6.0.9/src/scotch/mtst.h0000644000302600021200000000626013303015264016470 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mtst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the declarations **/ /** for the source mesh analyzer. **/ /** **/ /** DATES : # Version 4.0 : from : 25 feb 2003 **/ /** to 27 jan 2004 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source mesh input file name */ #define C_filenamedatout fileBlockName (C_fileTab, 1) /* Statistics output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source mesh input file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 1) /* Statistics output file */ scotch_6.0.9/src/scotch/dgscat.c0000644000302600021200000001726413465315041016754 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgscat.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program distributes a source graph **/ /** across processors and saves it as a **/ /** distributed source graph. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 5.0 : from : 17 may 2007 **/ /** to : 16 jun 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define DGSCAT #define SCOTCH_PTSCOTCH #include "module.h" #include "common.h" #include "ptscotch.h" #include "dgscat.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "dgscat [ []] ", " -c : Check the input graph after loading", " -h : Display this help", " -r : Set root process for centralized files (default is 0)", " -V : Print program version and copyright", NULL }; /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Dgraph grafdat; int procglbnbr; int proclocnum; int protglbnum; /* Root process */ int flagval; int i; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ errorProg ("dgscat"); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ MPI_Comm_size (MPI_COMM_WORLD, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum); protglbnum = 0; /* Assume root process is process 0 */ if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } flagval = C_FLAGNONE; fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'C' : case 'c' : flagval |= C_FLAGCHECK; break; #ifdef SCOTCH_DEBUG_ALL case 'D' : case 'd' : flagval |= C_FLAGDEBUG; break; #endif /* SCOTCH_DEBUG_ALL */ case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'R' : /* Root process (if necessary) */ case 'r' : protglbnum = atoi (&argv[i][2]); if ((protglbnum < 0) || (protglbnum >= procglbnbr) || ((protglbnum == 0) && (argv[i][2] != '0'))) errorPrint ("main: invalid root process number"); break; case 'V' : case 'v' : fprintf (stderr, "dgscat, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } #ifdef SCOTCH_DEBUG_ALL if ((flagval & C_FLAGDEBUG) != 0) { fprintf (stderr, "Proc %4d of %d, pid %d\n", proclocnum, procglbnbr, getpid ()); if (proclocnum == protglbnum) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } MPI_Barrier (MPI_COMM_WORLD); } #endif /* SCOTCH_DEBUG_ALL */ fileBlockOpenDist (C_fileTab, C_FILENBR, procglbnbr, proclocnum, protglbnum); /* Open all files */ SCOTCH_dgraphInit (&grafdat, MPI_COMM_WORLD); SCOTCH_dgraphLoad (&grafdat, C_filepntrsrcinp, -1, 0); if ((flagval & C_FLAGCHECK) != 0) SCOTCH_dgraphCheck (&grafdat); SCOTCH_dgraphSave (&grafdat, C_filepntrsrcout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/amk_hy.c0000644000302600021200000001751413542631133016754 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_hy.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for hypercube **/ /** graphs, to be used to build the archi- **/ /** tecture description files for these **/ /** graphs. **/ /** **/ /** DATES : # Version 2.0 : from : 14 nov 1994 **/ /** to : 14 nov 1994 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.2 : from : 31 may 1997 **/ /** to : 02 jun 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_HY #include "module.h" #include "common.h" #include "scotch.h" #include "amk_hy.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW } }; static const char * C_usageList[] = { "amk_hy [] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /*************************************************/ /* */ /* The main routine, which computes the distance */ /* triangular table. */ /* */ /*************************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num hdim; /* Hypercube dimension */ SCOTCH_Num hnbr; /* Number of hypercube vertices */ SCOTCH_Num hmax; /* Number of domains */ SCOTCH_Num hv0, hv1; SCOTCH_Num i, j; errorProg ("amk_hy"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } hdim = 1; /* Preset hypercube dimension */ fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((hdim = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "amk_hy, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ hnbr = 1 << hdim; /* Compute number of terminals */ hmax = (1 << (hdim + 1)) - 1; /* Maximum terminal value */ fprintf (C_filepntrtgtout, "deco\n0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Print the file header */ (SCOTCH_Num) hnbr, /* Print number of terminal domains */ (SCOTCH_Num) hmax); /* Print the biggest terminal value */ for (i = 0; i < hnbr; i ++) /* For all vertices */ fprintf (C_filepntrtgtout, SCOTCH_NUMSTRING "\t1\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) i, /* Print terminal label */ (SCOTCH_Num) (hnbr + i)); /* Print terminal number */ for (hv0 = 1; hv0 < hnbr; hv0 ++) { /* For all vertices */ for (hv1 = 0; hv1 < hv0; hv1 ++) { for (i = hv0 ^ hv1, j = 0; i > 0; i >>=1) j += (i & 1); fprintf (C_filepntrtgtout, (hv1 == 0) ? SCOTCH_NUMSTRING : " " SCOTCH_NUMSTRING, (SCOTCH_Num) j); } fprintf (C_filepntrtgtout, "\n"); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gout_c.h0000644000302600021200000002057613303015264016767 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gout_c.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a result viewer. **/ /** This module contains the data declara- **/ /** tions for the main module. **/ /** **/ /** DATES : # Version 2.0 : from : 06 oct 1994 **/ /** to 01 nov 1994 **/ /** # Version 3.0 : from : 14 jul 1995 **/ /** to 02 oct 1995 **/ /** # Version 3.2 : from : 02 dec 1996 **/ /** to 05 jun 1998 **/ /** # Version 3.3 : from : 01 jun 1999 **/ /** to 01 jun 1999 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 11 dec 2001 **/ /** # Version 5.0 : from : 13 dec 2007 **/ /** to 15 mar 2008 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 4 /* Number of files in list */ #define C_FILEARGNBR 4 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph file name */ #define C_filenamegeoinp fileBlockName (C_fileTab, 1) /* Source graph geometry file name */ #define C_filenamemapinp fileBlockName (C_fileTab, 2) /* Mapping result file name */ #define C_filenamedatout fileBlockName (C_fileTab, 3) /* Output data file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrgeoinp fileBlockFile (C_fileTab, 1) /* Source graph geometry file */ #define C_filepntrmapinp fileBlockFile (C_fileTab, 2) /* Mapping result input file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 3) /* Data output file */ #define C_filemodemapinp fileBlockMode (C_fileTab, 2) /* Mapping result mode */ /*+ Dimension definitions. +*/ #define x c[0] #define y c[1] #define z c[2] /*+ Geometry flags. +*/ #define C_GEOFLAGDEFAULT 0x0001 /* Default geometry flag */ #define C_GEOFLAGUSE 0x0001 /* Use geometry */ #define C_GEOFLAGROTATE 0x0002 /* Rotate the picture by 90 degrees */ #define C_GEOFLAGPERMUT 0x0004 /* Permute Y and Z dimensions */ /* ** The type and structure definitions. */ /*+ This structure defines a source graph. +*/ typedef struct C_Graph_ { SCOTCH_Graph grafdat; /*+ Source graph data +*/ SCOTCH_Num baseval; /*+ Base value +*/ SCOTCH_Num vertnbr; /*+ Number of vertices +*/ SCOTCH_Num * verttab; /*+ Vertex array +*/ SCOTCH_Num * vendtab; /*+ Vertex end array +*/ SCOTCH_Num * vlbltab; /*+ Vertex label array +*/ SCOTCH_Num edgenbr; /*+ Number of edges +*/ SCOTCH_Num * edgetab; /*+ Edge array +*/ } C_Graph; /*+ This structure defines a geometrical vertex. +*/ typedef struct C_GeoVert_ { double c[3]; /*+ Vertex coordinates (x,y,z) +*/ } C_GeoVert; /*+ This structure defines a geometrical mapping which contains the positions of the graph vertices. +*/ typedef struct C_Geometry_ { const C_Graph * grafptr; /*+ Pointer to source graph +*/ C_GeoVert * verttab; /*+ Pointer to coordinates array +*/ } C_Geometry; /*+ This structure defines a domain label mapping, which contains the reference to the mapping source graph. +*/ typedef struct C_Mapping_ { const C_Graph * grafptr; /*+ Pointer to source graph +*/ SCOTCH_Num * labltab; /*+ Pointer to label array +*/ } C_Mapping; /*+ The sort structure, used to sort graph vertices by label. +*/ typedef struct C_VertSort_ { SCOTCH_Num labl; /*+ Vertex label +*/ SCOTCH_Num num; /*+ Vertex number +*/ } C_VertSort; /*+ This structure is the code name array entries. +*/ typedef struct C_ParseCode_ { int code; /*+ Code value +*/ char * name; /*+ Code name +*/ } C_ParseCode; /* This structure defines the code argument array entries. */ typedef struct C_ParseArg_ { const char * name; /*+ Name of the argument +*/ int code; /*+ Code value +*/ const char * format; /*+ scanf-like format; NULL means char, no value +*/ const void * ptr; /*+ Pointer to the argument location +*/ int (* func) (); /*+ Pointer to the argument test function +*/ } C_ParseArg; /* ** The global data declarations. */ extern File C_fileTab[C_FILENBR]; /*+ File array +*/ /* ** The function prototypes. */ int C_geoParse (const char * const); void C_geoInit (C_Geometry * const, const C_Graph * const); void C_geoExit (C_Geometry * const); int C_geoLoad (C_Geometry * const, FILE * const); void C_mapInit (C_Mapping * const, const C_Graph * const); void C_mapExit (C_Mapping * const); int C_mapLoad (C_Mapping * const, FILE * const); int C_parse (const C_ParseCode * const, const C_ParseArg * const, int * const, char * const); scotch_6.0.9/src/scotch/atst.c0000644000302600021200000002243113542631133016451 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : atst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Target architecture graph analyzer. **/ /** **/ /** DATES : # Version 1.3 : from : 17 may 1994 **/ /** to : 17 may 1994 **/ /** # Version 2.0 : from : 11 nov 1994 **/ /** to : 11 nov 1994 **/ /** # Version 3.0 : from : 05 jul 1995 **/ /** to : 19 aug 1995 **/ /** # Version 3.2 : from : 24 sep 1996 **/ /** to : 12 may 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 09 feb 2004 **/ /** to : 23 nov 2005 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define ATST #include "module.h" #include "common.h" #include "scotch.h" #include "atst.h" /* ** The static variables. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "atst [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main (argc, argv) int argc; char * argv[]; { SCOTCH_Arch archdat; SCOTCH_ArchDom domndat; SCOTCH_ArchDom * restrict termtab; SCOTCH_Num termnbr; SCOTCH_Num termnum; SCOTCH_Num ter0num; SCOTCH_Num ter1num; SCOTCH_Num distmin; SCOTCH_Num distmax; SCOTCH_Num distsum; double distavg; double distdlt; int i; errorProg ("atst"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "atst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_archInit (&archdat); /* Initialize architecture structure */ if (SCOTCH_archLoad (&archdat, C_filepntrtgtinp) != 0) /* Load architecture */ SCOTCH_errorPrint ("main: cannot load architecture"); SCOTCH_archDomFrst (&archdat, &domndat); termnbr = SCOTCH_archDomSize (&archdat, &domndat); if ((termtab = (SCOTCH_ArchDom *) malloc (termnbr * sizeof (SCOTCH_ArchDom))) == NULL) SCOTCH_errorPrint ("main: out of memory"); termnum = 0; if ((C_termList (&archdat, termtab, termnbr, &termnum, &domndat) != 0) || (termnum != termnbr)) SCOTCH_errorPrint ("main: cannot enumerate terminal domains"); distmin = (SCOTCH_Num) (((unsigned long) ((SCOTCH_Num) -1)) >> 1); /* Set to maximum number in Anum */ distmax = 0; distsum = 0; for (ter0num = 0; ter0num < termnbr; ter0num ++) { /* For all pairs of terminal domains */ for (ter1num = ter0num + 1; ter1num < termnbr; ter1num ++) { SCOTCH_Num distval; distval = SCOTCH_archDomDist (&archdat, &termtab[ter0num], &termtab[ter1num]); /* Compute distance between pairs */ if (distmin > distval) distmin = distval; if (distmax < distval) distmax = distval; distsum += distval; } } distavg = (termnbr > 1) ? (double) distsum / ((double) termnbr * (double) (termnbr - 1) / 2.0) : 0.0L; distdlt = 0.0L; for (ter0num = 0; ter0num < termnbr; ter0num ++) { /* For all pairs of terminal domains */ for (ter1num = 0; ter1num < termnbr; ter1num ++) { if (ter1num == ter0num) continue; distdlt += fabs ((double) SCOTCH_archDomDist (&archdat, &termtab[ter0num], &termtab[ter1num]) - distavg); } } if (termnbr > 1) distdlt /= (double) termnbr * (double) (termnbr - 1) / 2.0; fprintf (C_filepntrlogout, "A\tTerminals\tnbr=" SCOTCH_NUMSTRING "\n", termnbr); fprintf (C_filepntrlogout, "A\tDistance\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", distmin, distmax, distavg, distdlt); free (termtab); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_archExit (&archdat); return (EXIT_SUCCESS); } /* This routine recursively enumerates all terminal ** domains of an architecture. ** It returns: ** - 0 : if architecture successfully traversed. ** - 1 : on error. */ int C_termList ( SCOTCH_Arch * restrict const archptr, SCOTCH_ArchDom * restrict const termtab, const SCOTCH_Num termnum, SCOTCH_Num * const termptr, SCOTCH_ArchDom * const domnptr) { SCOTCH_ArchDom domntab[2]; int o; if (SCOTCH_archDomSize (archptr, domnptr) == 1) { /* If domain is terminal */ if (*termptr >= termnum) /* If too many terminals */ return (1); termtab[(*termptr) ++] = *domnptr; /* Copy terminal domain to array */ return (0); } o = SCOTCH_archDomBipart (archptr, domnptr, &domntab[0], &domntab[1]); if (o != 0) return (o - 1); return (C_termList (archptr, termtab, termnum, termptr, &domntab[0]) || /* Anticipated return in case of error */ C_termList (archptr, termtab, termnum, termptr, &domntab[1])); } scotch_6.0.9/src/scotch/gord.h0000644000302600021200000001102413303015264016426 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gord.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a sparse matrix graph orderer. **/ /** This module contains the data declara- **/ /** tions for the main routine. **/ /** **/ /** DATES : # Version 3.2 : from : 24 aug 1996 **/ /** to : 20 oct 1997 **/ /** # Version 3.3 : from : 07 oct 1998 **/ /** to : 31 may 1999 **/ /** # Version 4.0 : from : 11 dec 2002 **/ /** to : 27 dec 2004 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 5 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenameordout fileBlockName (C_fileTab, 1) /* Ordering output file name */ #define C_filenamelogout fileBlockName (C_fileTab, 2) /* Log file name */ #define C_filenamemapout fileBlockName (C_fileTab, 3) /* Separator mapping file name */ #define C_filenametreout fileBlockName (C_fileTab, 4) /* Separator tree file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrordout fileBlockFile (C_fileTab, 1) /* Ordering output file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 2) /* Log file */ #define C_filepntrmapout fileBlockFile (C_fileTab, 3) /* Separator mapping file */ #define C_filepntrtreout fileBlockFile (C_fileTab, 4) /* Separator tree file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGMAPOUT 0x0001 /* Output mapping data */ #define C_FLAGTREOUT 0x0002 /* Output separator tree data */ #define C_FLAGVERBSTR 0x0004 /* Output strategy string */ #define C_FLAGVERBTIM 0x0008 /* Output timing information */ scotch_6.0.9/src/scotch/mtst.c0000644000302600021200000001623213542631133016467 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mtst.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program gives statistics on source **/ /** meshes. **/ /** **/ /** DATES : # Version 4.0 : from : 25 feb 2003 **/ /** to 27 jan 2004 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define MTST #include "module.h" #include "common.h" #include "scotch.h" #include "mtst.h" /* ** The static definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "mtst [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Mesh meshdat; SCOTCH_Num velmnbr; SCOTCH_Num vnodnbr; SCOTCH_Num vnlomin; SCOTCH_Num vnlomax; SCOTCH_Num vnlosum; double vnloavg; double vnlodlt; SCOTCH_Num edegmin; SCOTCH_Num edegmax; double edegavg; double edegdlt; SCOTCH_Num ndegmin; SCOTCH_Num ndegmax; double ndegavg; double ndegdlt; SCOTCH_Num edgenbr; int i; errorProg ("mtst"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "mtst, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_meshInit (&meshdat); SCOTCH_meshLoad (&meshdat, C_filepntrsrcinp, -1); SCOTCH_meshCheck (&meshdat); SCOTCH_meshSize (&meshdat, &velmnbr, &vnodnbr, &edgenbr); SCOTCH_meshStat (&meshdat, &vnlomin, &vnlomax, &vnlosum, &vnloavg, &vnlodlt, &edegmin, &edegmax, &edegavg, &edegdlt, &ndegmin, &ndegmax, &ndegavg, &ndegdlt); fprintf (C_filepntrdatout, "S\tElements\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) velmnbr); fprintf (C_filepntrdatout, "S\tNodes\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) vnodnbr); fprintf (C_filepntrdatout, "S\tNode load\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) vnlomin, (SCOTCH_Num) vnlomax, (SCOTCH_Num) vnlosum, vnloavg, vnlodlt); fprintf (C_filepntrdatout, "S\tElement degree\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) edegmin, (SCOTCH_Num) edegmax, (SCOTCH_Num) (edgenbr / 2), edegavg, edegdlt); fprintf (C_filepntrdatout, "S\tNode degree\tmin=" SCOTCH_NUMSTRING "\tmax=" SCOTCH_NUMSTRING "\tsum=" SCOTCH_NUMSTRING "\tavg=%g\tdlt=%g\n", (SCOTCH_Num) ndegmin, (SCOTCH_Num) ndegmax, (SCOTCH_Num) (edgenbr / 2), ndegavg, ndegdlt); fprintf (C_filepntrdatout, "S\tEdge\tnbr=" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (edgenbr / 2)); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_meshExit (&meshdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gord.c0000644000302600021200000002701213542631177016441 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gord.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a sparse matrix graph ordering **/ /** software. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 3.2 : from : 24 aug 1996 **/ /** to : 21 aug 1998 **/ /** # Version 3.3 : from : 07 oct 1998 **/ /** to : 31 may 1999 **/ /** # Version 3.4 : from : 07 oct 1998 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 02 feb 2002 **/ /** to : 08 jan 2006 **/ /** # Version 5.0 : from : 26 jan 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GORD #include "module.h" #include "common.h" #include "scotch.h" #include "gord.h" /* ** The static and global definitions. */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* File array */ { FILEMODER }, { FILEMODEW }, { FILEMODEW }, { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "gord [ [ []]] ", " -c : Choose default ordering strategy according to one or several of :", " b : enforce load balance as much as possible", " q : privilege quality over speed (default)", " s : privilege speed over quality", " t : enforce safety", " -h : Display this help", " -m : Save column block mapping data to ", " -o : Set ordering strategy (see user's manual)", " -t : Save partitioning tree data to ", " -V : Print program version and copyright", " -v : Set verbose mode to :", " s : strategy information", " t : timing information", "", "See default strategy with option '-vs'", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Num vertnbr; /* Number of vertices */ SCOTCH_Graph grafdat; /* Source graph */ SCOTCH_Ordering ordedat; /* Graph ordering */ SCOTCH_Num * permtab; /* Permutation array */ SCOTCH_Strat stradat; /* Ordering strategy */ SCOTCH_Num straval; char * straptr; int flagval; Clock runtime[2]; /* Timing variables */ int i, j; errorProg ("gord"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } flagval = C_FLAGNONE; /* Default behavior */ straval = 0; /* No strategy flags */ straptr = NULL; SCOTCH_stratInit (&stradat); fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'C' : case 'c' : /* Strategy selection parameters */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'B' : case 'b' : straval |= SCOTCH_STRATBALANCE; break; case 'Q' : case 'q' : straval |= SCOTCH_STRATQUALITY; break; case 'S' : case 's' : straval |= SCOTCH_STRATSPEED; break; case 'T' : case 't' : straval |= SCOTCH_STRATSAFETY; break; default : errorPrint ("main: invalid strategy selection option '%c'", argv[i][j]); } } break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : /* Output separator mapping */ case 'm' : flagval |= C_FLAGMAPOUT; if (argv[i][2] != '\0') C_filenamemapout = &argv[i][2]; break; case 'O' : /* Ordering strategy */ case 'o' : straptr = &argv[i][2]; SCOTCH_stratExit (&stradat); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrder (&stradat, straptr); break; case 'T' : /* Output separator tree */ case 't' : flagval |= C_FLAGTREOUT; if (argv[i][2] != '\0') C_filenametreout = &argv[i][2]; break; case 'V' : fprintf (stderr, "gord, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); case 'v' : /* Output control info */ for (j = 2; argv[i][j] != '\0'; j ++) { switch (argv[i][j]) { case 'S' : case 's' : flagval |= C_FLAGVERBSTR; break; case 'T' : case 't' : flagval |= C_FLAGVERBTIM; break; default : errorPrint ("main: unprocessed parameter '%c' in '%s'", argv[i][j], argv[i]); } } break; default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ clockInit (&runtime[0]); clockStart (&runtime[0]); SCOTCH_graphInit (&grafdat); /* Create graph structure */ SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, 2); /* Read source graph */ SCOTCH_graphSize (&grafdat, &vertnbr, NULL); /* Get graph characteristics */ if (straval != 0) { if (straptr != NULL) errorPrint ("main: options '-c' and '-o' are exclusive"); SCOTCH_stratGraphOrderBuild (&stradat, straval, 0, 0.2); } clockStop (&runtime[0]); /* Get input time */ clockInit (&runtime[1]); clockStart (&runtime[1]); if ((permtab = (SCOTCH_Num *) memAlloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) errorPrint ("main: out of memory"); SCOTCH_graphOrderInit (&grafdat, &ordedat, permtab, NULL, NULL, NULL, NULL); /* Create ordering */ SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat); /* Perform ordering */ clockStop (&runtime[1]); /* Get ordering time */ #ifdef SCOTCH_DEBUG_ALL SCOTCH_graphOrderCheck (&grafdat, &ordedat); #endif /* SCOTCH_DEBUG_ALL */ clockStart (&runtime[0]); SCOTCH_graphOrderSave (&grafdat, &ordedat, C_filepntrordout); /* Write ordering */ if (flagval & C_FLAGMAPOUT) /* If mapping wanted */ SCOTCH_graphOrderSaveMap (&grafdat, &ordedat, C_filepntrmapout); /* Write mapping */ if (flagval & C_FLAGTREOUT) /* If separator tree wanted */ SCOTCH_graphOrderSaveTree (&grafdat, &ordedat, C_filepntrtreout); /* Write tree */ clockStop (&runtime[0]); /* Get output time */ if (flagval & C_FLAGVERBSTR) { fprintf (C_filepntrlogout, "S\tStrat="); SCOTCH_stratSave (&stradat, C_filepntrlogout); putc ('\n', C_filepntrlogout); } if (flagval & C_FLAGVERBTIM) { fprintf (C_filepntrlogout, "T\tOrder\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n", (double) clockVal (&runtime[1]), (double) clockVal (&runtime[0]), (double) clockVal (&runtime[0]) + (double) clockVal (&runtime[1])); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_graphOrderExit (&grafdat, &ordedat); SCOTCH_stratExit (&stradat); SCOTCH_graphExit (&grafdat); memFree (permtab); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/dgscat.h0000644000302600021200000000722113303015264016744 0ustar pelegrinpelegrin/* Copyright 2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgscat.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a parallel sparse matrix **/ /** ordering software. **/ /** This module contains the data declara- **/ /** tions for the graph file scattering **/ /** program. **/ /** **/ /** DATES : # Version 5.0 : from : 21 may 2007 **/ /** to : 21 may 2007 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to : 10 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Source graph output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Source graph output file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGCHECK 0x0001 /* Check distributed source graph */ #define C_FLAGDEBUG 0x0002 /* Enable easy debugger attachment */ scotch_6.0.9/src/scotch/gmk_ub2.c0000644000302600021200000002144213542631177017035 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_ub2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the source graph for undirected **/ /** de Bruijn graphs, to be used to build **/ /** the architecture description files for **/ /** these graphs. **/ /** **/ /** DATES : # Version 1.2 : from : 11 feb 1994 **/ /** to : 11 feb 1994 **/ /** # Version 2.0 : from : 05 nov 1994 **/ /** to 05 nov 1994 **/ /** # Version 3.0 : from : 11 jul 1995 **/ /** to 12 jul 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 07 jun 1999 **/ /** to : 07 jun 1999 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.0 : from : 22 jan 2008 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMK_UB2 #include "module.h" #include "common.h" #include "scotch.h" #include "gmk_ub2.h" #define ngbadd(v) do { \ int t; \ t = (v); \ if (t != vertnum) { \ int k; \ for (k = 0; k < ngbnbr; k ++) \ if (t == ngbtab[k]) \ break; \ if (k == ngbnbr) \ ngbtab[ngbnbr ++] = t; \ } \ } while (0); /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW } }; static const char * C_usageList[] = { "gmk_ub2 [] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source graph description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num ubdim = 1; /* Graph dimension */ SCOTCH_Num ubnbr; /* Number of vertices */ SCOTCH_Num ubbit; /* Most significant bit */ SCOTCH_Num ngbtab[4]; /* Array of neighbors */ int ngbnbr; /* Current number of neighbors */ SCOTCH_Num vertnum; /* Current vertex number */ int i, j; errorProg ("gmk_ub2"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((ubdim = (SCOTCH_Num) atol (argv[i])) < 1) /* Get dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gmk_ub2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ ubnbr = 1 << ubdim; /* Compute number of vertices */ ubbit = 1 << (ubdim - 1); /* Bit to add on the left */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n0\t000\n", (SCOTCH_Num) ubnbr, /* Print number of vertices */ (SCOTCH_Num) (4 * ubnbr - 6)); /* Print number of edges (arcs) */ for (vertnum = 0; vertnum < ubnbr; vertnum ++) { /* For all vertices */ ngbnbr = 0; /* No neighbors defined yet */ ngbadd ((vertnum << 1) & (ubnbr - 1)); /* Register vertex neighbors */ ngbadd (((vertnum << 1) & (ubnbr - 1)) | 1); ngbadd ((vertnum >> 1) & (ubnbr - 1)); ngbadd (((vertnum >> 1) & (ubnbr - 1)) | ubbit); fprintf (C_filepntrsrcout, "%d", ngbnbr); /* Output number of neighbors */ for (j = 0; j < ngbnbr; j ++) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ngbtab[j]); fprintf (C_filepntrsrcout, "\n"); } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/amk_m2.h0000644000302600021200000001100513465315041016645 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_m2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the target architecture file **/ /** for bidimensional mesh graphs. **/ /** Here are the data declaration for the **/ /** target machine architecture functions. **/ /** **/ /** DATES : # Version 1.3 : from : 21 apr 1994 **/ /** to : 22 apr 1994 **/ /** # Version 2.0 : from : 12 jul 1994 **/ /** to : 13 nov 1994 **/ /** # Version 2.0 : from : 18 sep 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.1 : from : 30 may 1996 **/ /** to : 30 may 1996 **/ /** # Version 3.2 : from : 31 may 1997 **/ /** to : 02 jun 1997 **/ /** # Version 4.0 : from : 09 feb 2004 **/ /** to : 09 feb 2004 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 16 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 1 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamearcout fileBlockName (C_fileTab, 0) /* Architecture output file name */ #define C_filepntrarcout fileBlockFile (C_fileTab, 0) /* Architecture output file */ /* ** The type and structure definitions. */ /** The method type. **/ typedef enum C_MethType_ { C_METHNESTED, /*+ Nested decomposition +*/ C_METHONEWAY /*+ One-way decomposition +*/ } C_MethType; /* ** The function prototypes. */ void C_termBipart (ArchMesh2 *, ArchMesh2Dom *, Anum, Anum *, Anum *, int (*) ()); int C_methBipartOne (const ArchMesh2 * const, const ArchMesh2Dom * const, ArchMesh2Dom * restrict const, ArchMesh2Dom * restrict const); /* ** The macro definitions. */ #ifndef abs #define abs(a) (((a) >= 0) ? (a) : -(a)) #endif /* abs */ #define C_termDist(x0,y0,x1,y1) (abs ((x0) - (x1)) + abs ((y0) - (y1))) scotch_6.0.9/src/scotch/gout_o.h0000644000302600021200000002055013303015264016773 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gout_o.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a result viewer. **/ /** This module contains the data declara- **/ /** tions for the output module. **/ /** **/ /** DATES : # Version 2.0 : from : 08 oct 1994 **/ /** to 02 nov 1994 **/ /** # Version 3.0 : from : 14 jul 1995 **/ /** to 03 oct 1995 **/ /** # Version 3.1 : from : 05 apr 1996 **/ /** to 05 apr 1996 **/ /** # Version 3.2 : from : 03 dec 1996 **/ /** to 05 jun 1998 **/ /** # Version 3.3 : from : 02 jun 1999 **/ /** to 02 jun 1999 **/ /** # Version 5.0 : from : 25 may 2007 **/ /** to 25 may 2007 **/ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 26 oct 2007 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ Generic PostScript output definitions. +*/ #define O_PSDPI 72 /* PostScript dots-per-inch */ #define O_PSPAGEHEIGHT 11.6 /* PostScript page height (in inches) */ #define O_PSPAGEWIDTH 8.2 /* PostScript page witdh (in inches) */ #define O_PSPICTHEIGHT 10.0 /* PostScript picture height (in inches) */ #define O_PSPICTWIDTH 6.6 /* PostScript picture witdh (in inches) */ /*+ PostScript mesh output definitions. +*/ #define O_POSMESHPICTRESOL 10000.0 /* Picture resolution */ #define O_POSMESHISOCOS 0.866025404 /* cos(30 degrees) */ #define O_POSMESHISOSIN 0.5 /* sin(30 degrees) */ #define O_POSMESHISOREDUC 0.20 /* Z-axis reduction coefficient */ #define O_POSMESHCOLNBR 16 /* Number of colors */ /*+ Tulip graph output definitions. +*/ #define O_TULMESHDISKRATIO 0.1 /* Node disk ratio */ /* ** The type and structure definitions. */ /*+ The 2D point type. +*/ typedef struct O_Point_ { double c[2]; /*+ Page coordinates +*/ } O_Point; /*+ The output type type. +*/ typedef enum O_OutType_ { O_OUTTYPEINVMESH, /*+ Mesh SGI Open Inventor (3D) +*/ O_OUTTYPEPOSMATR, /*+ Matrix PostScript (2D) +*/ O_OUTTYPEPOSMESH, /*+ Mesh PostScript (2D) +*/ O_OUTTYPETULMESH, /*+ Mesh Tulip (3D) +*/ O_OUTTYPENBR /*+ Number of output types +*/ } O_OutType; /*+ The output parameter data structure. +*/ typedef struct O_OutParam_ { O_OutType type; /*+ Output type +*/ struct { /*+ Inventor mesh structure +*/ char color; /*+ 'c' : color; 'g' : gray +*/ char edge; /*+ 'r' : remove; 'v' : view +*/ } InvMesh; struct { /*+ PostScript matrix structure +*/ char type; /*+ 'f' : page; 'e' : EPSF +*/ } PosMatr; struct { /*+ PostScript mesh structure +*/ char type; /*+ 'f' : page; 'e' : EPSF +*/ char color; /*+ 'c' : color; 'g' : gray +*/ char edge; /*+ 'r' : remove; 'v' : view +*/ char disk; /*+ 'd' : draw; 'a' : avoid +*/ char clip; /*+ 'l' : large; 's' : short +*/ O_Point min; /*+ Clipping ratios +*/ O_Point max; } PosMesh; struct { /*+ Tulip graph structure +*/ char color; /*+ 'b' : b/w; 'c' : color +*/ char edge; /*+ 'r' : remove; 'v' : view +*/ char disk; /*+ 'd' : draw; 'a' : avoid +*/ } TulMesh; } O_OutParam; /*+ The Inventor path array element. +*/ typedef struct O_InvMeshPath_ { SCOTCH_Num nbr; /*+ Number of output paths +*/ SCOTCH_Num idx; /*+ Index from which to search +*/ } O_InvMeshPath; /*+ The PostScript path array element. +*/ typedef struct O_PosMeshPath_ { SCOTCH_Num nbr; /*+ Number of output paths +*/ SCOTCH_Num idx; /*+ Index from which to search +*/ } O_PosMeshPath; /*+ The PostScript mesh graph vertex. +*/ typedef struct O_PosMeshVertex_ { int vis; /*+ Visibility flag +*/ O_Point pos; /*+ Point position +*/ double rad; /*+ Disk radius +*/ int col; /*+ Disk color index +*/ } O_PosMeshVertex; /* ** The function prototypes. */ void outColorBlw (const SCOTCH_Num, double[]); void outColorColor (const SCOTCH_Num, double[]); int outDrawParse (char * const); void outDraw (const C_Graph * const, const C_Geometry * const, const C_Mapping * const, FILE * const); int outDrawInvMesh (const C_Graph * const, const C_Geometry * const, const C_Mapping * const, FILE * const); int outDrawPosMatr (const C_Graph * const, const C_Geometry * const, const C_Mapping * const, FILE * const); int outDrawPosMesh (const C_Graph * const, const C_Geometry * const, const C_Mapping * const, FILE * const); int outDrawTulMesh (const C_Graph * const, const C_Geometry * const, const C_Mapping * const, FILE * const); scotch_6.0.9/src/scotch/gout_c.c0000644000302600021200000007673213542631177017003 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gout_c.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a result viewer. **/ /** This module contains the main function. **/ /** **/ /** DATES : # Version 2.0 : from : 06 oct 1994 **/ /** to 23 dec 1994 **/ /** # Version 3.0 : from : 14 jul 1995 **/ /** to 11 oct 1995 **/ /** # Version 3.1 : from : 27 mar 1996 **/ /** to 03 apr 1996 **/ /** # Version 3.2 : from : 02 dec 1996 **/ /** to 05 jun 1998 **/ /** # Version 3.3 : from : 29 may 1999 **/ /** to : 03 jun 1999 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 4.0 : from : 11 dec 2001 **/ /** to 08 feb 2004 **/ /** # Version 5.0 : from : 25 may 2007 **/ /** to 25 may 2007 **/ /** # Version 5.1 : from : 25 oct 2007 **/ /** to 14 feb 2011 **/ /** # Version 6.0 : from : 16 oct 2010 **/ /** to : 17 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes */ #define GOUT #include "module.h" #include "common.h" #include "scotch.h" #include "gout_c.h" #include "gout_o.h" /* ** The static and global variables */ static int C_fileNum = 0; /* Number of file in arg list */ File C_fileTab[C_FILENBR] = { /* The file array; public */ { FILEMODER }, { FILEMODER }, { FILEMODER }, { FILEMODEW } }; static unsigned int C_geoFlag = C_GEOFLAGDEFAULT; /* Geometry flag */ static const char * C_usageList[] = { /* Usage */ "gout [ [ [ []]]] ", " -g : Geometry parameters :", " n : do not read geometry data (matrix display)", " p : permute Y and Z geometry dimensions", " r : rotate geometry by 90 degrees", " -h : Display this help", " -mn : Do not read mapping data", " -Oi[{}] : Open Inventor mesh file :", " c : color output", " g : gray level output", " r : remove cut edges", " v : view cut edges", " -Om[{}] : PostScript matrix file :", " e : EPSF-type output", " f : full-page output", " -Op[{}] : PostScript mesh file :", " c : color output", " g : gray level output", " e : EPSF-type output", " f : full-page output", " s : short clipping (disks excluded)", " l : large clipping (disks included)", " a : avoid displaying disks", " d : display disks", " r : remove cut edges", " v : view cut edges", " X= : maximum x clipping ratio (in [0.0;1.0])", " x= : minimum x clipping ratio", " Y= : maximum y clipping ratio", " y= : minimum y clipping ratio", " -Ot[{}] : Tulip graph file :", " b : b/w output", " c : color output", " a : avoid displaying disks", " d : display disks", " r : remove cut edges", " v : view cut edges", " -V : Print program version and copyright", "", "Default option set is : -Oi{c,v}", NULL }; /*****************************/ /* */ /* This is the main function */ /* */ /*****************************/ int main ( int argc, char * argv[]) { C_Graph grafdat; /* Source graph */ C_Geometry geo; /* Graph geometry */ C_Mapping map; /* Result mapping */ int i, j; errorProg ("gout"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_fileNum < C_FILEARGNBR) /* File name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'G' : /* Geometry parameters */ case 'g' : if ((j = C_geoParse (&argv[i][2])) != 0) errorPrint ("main: error in geometry option string '%d'", j); break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'M' : /* No-mapping flag */ case 'm' : if (((argv[i][2] != 'N') && (argv[i][2] != 'n')) || (argv[i][3] != '\0')) errorPrint ("main: error in mapping option string '%s'", &argv[i][2]); C_filenamemapinp = "-"; /* Default name to avoid opening */ C_filepntrmapinp = NULL; /* NULL file pointer means no file */ break; case 'O' : /* Output parameters */ case 'o' : if ((j = outDrawParse (&argv[i][2])) != 0) errorPrint ("main: error in output option string (%d)", j); break; case 'V' : fprintf (stderr, "gout, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: Unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat.grafdat); /* Create graph structure */ SCOTCH_graphLoad (&grafdat.grafdat, C_filepntrsrcinp, 0, 3); /* Read source graph */ SCOTCH_graphData (&grafdat.grafdat, &grafdat.baseval, &grafdat.vertnbr, &grafdat.verttab, &grafdat.vendtab, NULL, &grafdat.vlbltab, &grafdat.edgenbr, &grafdat.edgetab, NULL); C_geoInit (&geo, &grafdat); /* Create geometry structure */ if (C_geoFlag & C_GEOFLAGUSE) /* If geometry is wanted */ C_geoLoad (&geo, C_filepntrgeoinp); /* Read graph geometry */ C_mapInit (&map, &grafdat); /* Create mapping structure */ C_mapLoad (&map, C_filepntrmapinp); /* Read result mapping */ outDraw (&grafdat, &geo, &map, C_filepntrdatout); /* Build and write the output */ fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ C_mapExit (&map); /* Free data structures */ C_geoExit (&geo); SCOTCH_graphExit (&grafdat.grafdat); return (EXIT_SUCCESS); } /***********************************/ /* */ /* These routines handle geometry. */ /* */ /***********************************/ /* This routine parses the source graph ** option string. ** It returns: ** - 0 : if string successfully scanned. ** - 1 : if invalid options ** - 2 : if invalid option arguments. ** - 3 : if syntax error in string. */ int C_geoParse ( const char * const string) { const char * cptr; for (cptr = string; ; cptr ++) { switch (*cptr) { case 'N' : /* Do not read geometry data */ case 'n' : C_geoFlag &= ~C_GEOFLAGUSE; break; case 'P' : /* Permute Y and Z */ case 'p' : C_geoFlag |= C_GEOFLAGPERMUT; break; case 'R' : /* If want to rotate */ case 'r' : C_geoFlag |= C_GEOFLAGROTATE; break; case '\0' : return (0); default : return (1); } } } /* This routine creates a geometry with ** respect to a given source graph. ** It returns: ** - VOID : in all cases. */ void C_geoInit ( C_Geometry * const geomptr, const C_Graph * const grafptr) { geomptr->grafptr = grafptr; geomptr->verttab = NULL; } /* This routine deletes a geometry. ** It returns: ** - VOID : in all cases. */ void C_geoExit ( C_Geometry * const geomptr) { if (geomptr->verttab != NULL) /* If there is a geometry array */ memFree (geomptr->verttab); /* Free it */ } /* This routine loads a mapping. ** It returns: ** - 0 : on success. ** - !0 : on error. */ /* This is the comparison function used by the quicksort algorithm, to sort by increasing labels. */ static int C_geoLoad2 ( const C_VertSort * const vert0, const C_VertSort * const vert1) { return ((vert0->labl > vert1->labl) ? 1 : -1); } /** This is the loading routine. **/ int C_geoLoad ( C_Geometry * const geomptr, FILE * const stream) { C_VertSort * vertsorttab; /* Pointer to graph sorting array */ int vertsortflag; /* Flag set if graph data sorted by label */ C_VertSort * geomsorttab; /* Pointer to geometric data sorting array */ int geomsortflag; /* Flag set if geometric data sorted by label */ int geomfiletype; /* Type of geometry file */ SCOTCH_Num geomfilenbr; /* Number of geometric coordinates in file */ SCOTCH_Num geomfileval; /* Value of maximum size for compatibility */ C_GeoVert * geomfiletab; /* Pointer to geometric data read from file */ SCOTCH_Num vertlablval; /* Value of maximum size for compatibility */ SCOTCH_Num i, j; int o; if ((geomptr->verttab == NULL) && /* Allocate geometry if necessary */ ((geomptr->verttab = (C_GeoVert *) memAlloc (geomptr->grafptr->vertnbr * sizeof (C_GeoVert))) == NULL)) { errorPrint ("C_geoLoad: out of memory (1)"); return (1); } if ((fscanf (stream, "%d" SCOTCH_NUMSTRING, /* Read type and number of geometry items */ &geomfiletype, &geomfileval) != 2) || (geomfiletype < 1) || (geomfiletype > 3) || (geomfileval < 1)) { errorPrint ("C_geoLoad: bad input (1)"); return (1); } geomfilenbr = (SCOTCH_Num) geomfileval; if (memAllocGroup ((void **) (void *) &geomfiletab, (size_t) (geomfilenbr * sizeof (C_GeoVert)), &geomsorttab, (size_t) (geomfilenbr * sizeof (C_VertSort)), &vertsorttab, (size_t) (geomptr->grafptr->vertnbr * sizeof (C_VertSort)), NULL) == NULL) { errorPrint ("C_geoLoad: out of memory (2)"); return (1); } o = 0; geomsortflag = 1; /* Assume geometry data sorted */ switch (geomfiletype) { case 1 : /* Load 2D coordinates array */ for (i = 0; (i < geomfilenbr) && (o == 0); i ++) { if (fscanf (stream, SCOTCH_NUMSTRING "%lf", &vertlablval, &geomfiletab[i].x) != 2) o = 1; geomsorttab[i].labl = (SCOTCH_Num) vertlablval; geomfiletab[i].y = /* No Y and Z coordinates */ geomfiletab[i].z = 0.0; geomsorttab[i].num = i; if (C_geoFlag & C_GEOFLAGROTATE) { /* Rotate picture if necessary */ double t; /* Temporary swap variable */ t = geomfiletab[i].y; geomfiletab[i].y = geomfiletab[i].x; geomfiletab[i].x = - t; } if ((i > 0) && /* Check if geometry data sorted */ (geomsorttab[i].labl < geomsorttab[i - 1].labl)) geomsortflag = 0; /* Geometry data not sorted */ } break; case 2 : /* Load 2D coordinates array */ for (i = 0; (i < geomfilenbr) && (o == 0); i ++) { if (fscanf (stream, SCOTCH_NUMSTRING "%lf%lf", &vertlablval, &geomfiletab[i].x, &geomfiletab[i].y) != 3) o = 1; geomsorttab[i].labl = (SCOTCH_Num) vertlablval; geomfiletab[i].z = 0.0; /* No Z coordinate */ geomsorttab[i].num = i; if (C_geoFlag & C_GEOFLAGROTATE) { /* Rotate picture if necessary */ double t; /* Temporary swap variable */ t = geomfiletab[i].y; geomfiletab[i].y = geomfiletab[i].x; geomfiletab[i].x = - t; } if ((i > 0) && /* Check if geometry data sorted */ (geomsorttab[i].labl < geomsorttab[i - 1].labl)) geomsortflag = 0; /* Geometry data are not sorted */ } break; case 3 : /* Load 3D coordinates array */ for (i = 0; (i < geomfilenbr) && (o == 0); i ++) { if (fscanf (stream, SCOTCH_NUMSTRING "%lf%lf%lf", &vertlablval, &geomfiletab[i].x, &geomfiletab[i].y, &geomfiletab[i].z) != 4) o = 1; geomsorttab[i].labl = (SCOTCH_Num) vertlablval; geomsorttab[i].num = i; if (C_geoFlag & C_GEOFLAGPERMUT) { /* Rotate picture if necessary */ double t; /* Temporary swap variable */ t = geomfiletab[i].z; geomfiletab[i].z = geomfiletab[i].y; geomfiletab[i].y = t; } if ((i > 0) && /* Check if geometry data sorted */ (geomsorttab[i].labl < geomsorttab[i - 1].labl)) geomsortflag = 0; /* Geometry data not sorted */ } break; default : errorPrint ("C_geoLoad: invalid geometry type (%d)", geomfiletype); memFree (geomfiletab); /* Free group leader */ return (1); } if (o != 0) { errorPrint ("C_geoLoad: bad input (2)"); memFree (geomfiletab); /* Free group leader */ return (1); } if (geomsortflag != 1) /* If geometry data not sorted */ qsort ((char *) geomsorttab, geomfilenbr, /* Sort sort area by ascending labels */ sizeof (C_VertSort), (int (*) (const void *, const void *)) C_geoLoad2); for (i = 1; i < geomfilenbr; i ++) { /* Check geometric data integrity */ if (geomsorttab[i].labl == geomsorttab[i - 1].labl) { errorPrint ("C_geoLoad: duplicate vertex label"); memFree (geomfiletab); /* Free group leader */ return (1); } } if (geomptr->grafptr->vlbltab != NULL) { /* If graph has vertex labels */ vertsortflag = 1; /* Assume graph data sorted */ for (i = 0; i < geomptr->grafptr->vertnbr; i ++) { vertsorttab[i].labl = geomptr->grafptr->vlbltab[i]; vertsorttab[i].num = i; if ((i > 0) && /* Check if graph data sorted */ (vertsorttab[i].labl < vertsorttab[i - 1].labl)) vertsortflag = 0; /* Graph data not sorted */ } if (vertsortflag != 1) /* If graph data not sorted */ qsort ((char *) vertsorttab, geomptr->grafptr->vertnbr, /* Sort sort area by ascending labels */ sizeof (C_VertSort), (int (*) (const void *, const void *)) C_geoLoad2); } else { /* Graph does not have vertex labels */ for (i = 0; i < geomptr->grafptr->vertnbr; i ++) { vertsorttab[i].labl = i + geomsorttab[0].labl; /* Use first index as base value */ vertsorttab[i].num = i; } } for (i = 0, j = 0; i < geomptr->grafptr->vertnbr; i ++) { /* For all vertices in graph */ while ((j < geomfilenbr) && (geomsorttab[j].labl < vertsorttab[i].labl)) j ++; /* Search geometry vertex with same label */ if ((j >= geomfilenbr) || (geomsorttab[j].labl > vertsorttab[i].labl)) { /* If label does not exist */ errorPrint ("C_geoLoad: vertex geometry data not found for label '" SCOTCH_NUMSTRING "'", vertsorttab[i].labl); memFree (geomfiletab); /* Free group leader */ return (1); } geomptr->verttab[vertsorttab[i].num] = geomfiletab[geomsorttab[j ++].num]; } memFree (geomfiletab); /* Free group leader */ return (0); } /***********************************/ /* */ /* These routines handle mappings. */ /* */ /***********************************/ /* This routine creates a mapping with ** respect to a given source graph. ** It returns: ** - VOID : in all cases. */ void C_mapInit ( C_Mapping * const mapptr, const C_Graph * const grafptr) { mapptr->grafptr = grafptr; mapptr->labltab = NULL; } /* This routine deletes a mapping. ** It returns: ** - VOID : in all cases. */ void C_mapExit ( C_Mapping * const mapptr) { if (mapptr->labltab != NULL) /* If there is a domain array */ memFree (mapptr->labltab); /* Free it */ } /* This routine loads a mapping. ** It returns: ** - 0 : on success. ** - !0 : on error. */ int C_mapLoad ( C_Mapping * const mapptr, FILE * const stream) { C_VertSort * vertsorttab; /* Pointer to graph sorting array */ int vertsortflag; /* Flag set if graph data sorted by label */ C_VertSort * mapsorttab; /* Pointer to mapping data sorting array */ int mapsortflag; /* Flag set if mapping data sorted by label */ SCOTCH_Num mapsortval; /* Value of maximum size for compatibility */ SCOTCH_Num mapfileval; /* Value of maximum size for compatibility */ SCOTCH_Num mapfilenbr; /* Number of mapping pairs in file */ SCOTCH_Num * mapfiletab; /* Pointer to mapping data read from file */ SCOTCH_Num i, j; if ((mapptr->labltab == NULL) && /* Allocate array if necessary */ ((mapptr->labltab = (SCOTCH_Num *) memAlloc (mapptr->grafptr->vertnbr * sizeof (SCOTCH_Num))) == NULL)) { errorPrint ("C_mapLoad: out of memory (1)"); return (1); } memset (mapptr->labltab, ~0, mapptr->grafptr->vertnbr * sizeof (SCOTCH_Num)); /* Pre-initialize mapping */ if (stream == NULL) /* If stream is invalid */ return (0); if ((fscanf (stream, SCOTCH_NUMSTRING, /* Read number of mapping pairs */ &mapfileval) != 1) || (mapfileval < 1)) { errorPrint ("C_mapLoad: bad input (1)"); return (1); } mapfilenbr = (SCOTCH_Num) mapfileval; if (memAllocGroup ((void **) (void *) &mapfiletab, (size_t) (mapfilenbr * sizeof (SCOTCH_Num)), &mapsorttab, (size_t) (mapfilenbr * sizeof (C_VertSort)), &vertsorttab, (size_t) (mapptr->grafptr->vertnbr * sizeof (C_VertSort)), NULL) == NULL) { errorPrint ("C_mapLoad: out of memory (2)"); return (1); } mapsortflag = 1; /* Assume mapping data sorted */ for (i = 0; i < mapfilenbr; i ++) { if (fscanf (stream, SCOTCH_NUMSTRING SCOTCH_NUMSTRING, &mapsortval, &mapfileval) != 2) { errorPrint ("C_mapLoad: bad input (2)"); memFree (mapfiletab); /* Free group leader */ return (1); } mapsorttab[i].labl = mapsortval; mapsorttab[i].num = i; mapfiletab[i] = mapfileval; if ((i > 0) && /* Check if mapping data sorted */ (mapsorttab[i].labl < mapsorttab[i - 1].labl)) mapsortflag = 0; /* Mapping data not sorted */ } if (mapsortflag != 1) /* If mapping data not sorted */ qsort ((char *) mapsorttab, mapfilenbr, /* Sort sort area by ascending labels */ sizeof (C_VertSort), (int (*) (const void *, const void *)) C_geoLoad2); for (i = 1; i < mapfilenbr; i ++) { /* Check mapping data integrity */ if (mapsorttab[i].labl == mapsorttab[i - 1].labl) { errorPrint ("C_mapLoad: duplicate vertex label"); memFree (mapfiletab); /* Free group leader */ return (1); } } if (mapptr->grafptr->vlbltab != NULL) { /* If graph has vertex labels */ vertsortflag = 1; /* Assume graph data sorted */ for (i = 0; i < mapptr->grafptr->vertnbr; i ++) { vertsorttab[i].labl = mapptr->grafptr->vlbltab[i]; vertsorttab[i].num = i; if ((i > 0) && /* Check if graph data sorted */ (vertsorttab[i].labl < vertsorttab[i - 1].labl)) vertsortflag = 0; /* Graph data not sorted */ } if (vertsortflag != 1) /* If graph data not sorted */ qsort ((char *) vertsorttab, mapptr->grafptr->vertnbr, /* Sort sort area by ascending labels */ sizeof (C_VertSort), (int (*) (const void *, const void *)) C_geoLoad2); } else { /* Graph does not have vertex labels */ for (i = 0; i < mapptr->grafptr->vertnbr; i ++) { vertsorttab[i].labl = i + mapptr->grafptr->baseval; vertsorttab[i].num = i; } } for (i = 0, j = 0; i < mapptr->grafptr->vertnbr; i ++) { /* For all vertices in graph */ while ((j < mapfilenbr) && (mapsorttab[j].labl < vertsorttab[i].labl)) j ++; /* Search mapping vertex with same label */ if ((j >= mapfilenbr) || (mapsorttab[j].labl > vertsorttab[i].labl)) /* If label does not exist */ continue; /* This vertex has no related mapping data */ mapptr->labltab[vertsorttab[i].num] = mapfiletab[mapsorttab[j ++].num]; } memFree (mapfiletab); /* Free group leader */ return (0); } /**************************************/ /* */ /* The option string parsing routine. */ /* */ /**************************************/ /* This routine parses an option string. ** It returns: ** - 0 : if string successfully scanned. ** - 1 : if invalid code name. ** - 2 : if invalid arguments for the code. ** - 3 : if syntax error in string. */ int C_parse ( const C_ParseCode * const codeptr, /* Pointer to the code array */ const C_ParseArg * const argptr, /* Pointer to the code argument array */ int * const codeval, /* Pointer to the code value to set */ char * const string) /* Pointer to the string to parse */ { int code; /* Code found */ int codelen; /* Code name length */ char argbuf[128]; /* Buffer for argument scanning */ int arglen; /* Length of the current argument */ char * argbeg; /* Pointer to beginning of argument */ char * argend; /* Pointer to end of argument */ char * argequ; /* Position of the '=' character */ int i, j; code = codelen = 0; /* No code recognized yet */ for (i = 0; codeptr[i].name != NULL; i ++) { /* For all the codes */ if ((strncasecmp (string, /* Find the longest matching code name */ codeptr[i].name, j = strlen (codeptr[i].name)) == 0) && (j > codelen)) { code = codeptr[i].code; codelen = j; } } if (codelen == 0) /* If no code recognized */ return (1); /* Return the error value */ *codeval = code; /* Set the code value */ argbeg = string + codelen; /* Point to the end of the code name */ if (*argbeg == '{') { /* If there are arguments */ argbeg ++; /* Point to argument beginning */ do { /* For all arguments */ argend = strpbrk (argbeg, ",}\0"); /* Search for the argument end */ if (*argend == '\0') /* If there is no end delimiter */ return (3); /* Return the syntax error value */ arglen = ((argend - argbeg) < 127) /* Get argument bounded length */ ? (argend - argbeg) : 127; strncpy (argbuf, argbeg, arglen); /* Copy the argument to the buffer */ argbuf[arglen] = '\0'; /* Mark the end of the argument */ argequ = strpbrk (argbuf, "="); /* Search for the '=' character */ if (argequ != NULL) /* If it exists */ *argequ++ = '\0'; /* Turn it into a separating null */ for (i = 0, j = -1; argptr[i].name != NULL; i ++) { /* Scan all the possible arguments */ if ((argptr[i].code == code) && /* If the proper name is found */ (strcmp (argbuf, argptr[i].name) == 0)) { j = i; /* Record the position */ break; /* Exit the loop */ } } if (j == -1) /* If invalid argument */ return (2); /* Return the proper value */ if (argptr[j].format != NULL) { /* If there is a value to read */ if (argequ == NULL) /* If none has been given however */ return (2); /* Return the error value */ if (sscanf (argequ, /* Try to read the argument value */ argptr[j].format, argptr[j].ptr) != 1) return (2); /* Return if error */ if (argptr[j].func != NULL) /* If there is a control function */ if (argptr[j].func (argptr[j].ptr) != 0) /* If the function fails */ return (2); /* Return the error value */ } else { /* If no value needed */ if (argequ != NULL) /* If there is one however */ return (2); /* Return the error code */ *((char *) argptr[j].ptr) = argbuf[0]; /* Copy the first argument char */ } argbeg = argend + 1; /* Skip the processed argument */ } while (*argend != '}'); /* Loop as long as there are arguments */ } return ((*argbeg == '\0') ? 0 : 3); /* Check if no extraneous characters */ } scotch_6.0.9/src/scotch/dgord.h0000644000302600021200000001154613303015264016603 0ustar pelegrinpelegrin/* Copyright 2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : dgord.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** Cedric CHEVALIER **/ /** **/ /** FUNCTION : Part of a parallel sparse matrix **/ /** ordering software. **/ /** This module contains the data declara- **/ /** tions for the main routine. **/ /** **/ /** DATES : # Version 5.0 : from : 30 apr 2006 **/ /** to : 27 may 2008 **/ /** # Version 5.1 : from : 22 nov 2008 **/ /** to : 22 nov 2008 **/ /** # Version 6.0 : from : 10 nov 2014 **/ /** to : 10 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 5 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenameordout fileBlockName (C_fileTab, 1) /* Ordering output file name */ #define C_filenamelogout fileBlockName (C_fileTab, 2) /* Log file name */ #define C_filenamemapout fileBlockName (C_fileTab, 3) /* Separator mapping file name */ #define C_filenametreout fileBlockName (C_fileTab, 4) /* Separator tree file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrordout fileBlockFile (C_fileTab, 1) /* Ordering output file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 2) /* Log file */ #define C_filepntrmapout fileBlockFile (C_fileTab, 3) /* Separator mapping file */ #define C_filepntrtreout fileBlockFile (C_fileTab, 4) /* Separator tre file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGMAPOUT 0x0001 /* Output mapping data */ #define C_FLAGTREOUT 0x0002 /* Output separator tree data */ #define C_FLAGVERBSTR 0x0004 /* Output strategy string */ #define C_FLAGVERBTIM 0x0008 /* Output timing information */ #define C_FLAGVERBMEM 0x0010 /* Output memory information */ #define C_FLAGBLOCK 0x0020 /* Output block ordering */ #define C_FLAGDEBUG 0x0040 /* Debugging */ /* ** The function prototypes. */ void dgordStatReduceOp (double *, double *, int *, MPI_Datatype *); scotch_6.0.9/src/scotch/gmk_m3.h0000644000302600021200000000702113303015264016652 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_m3.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the tridimensional mesh **/ /** source graph building program. **/ /** **/ /** DATES : # Version 4.0 : from : 11 feb 2002 **/ /** to : 11 feb 2002 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamesrcout fileBlockName (C_fileTab, 0) /* Source graph output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 1) /* Geometry graph output file name */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 0) /* Source graph output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 1) /* Geometry graph output file */ /*+ Process flags. +*/ #define C_FLAGGEOOUT 0x0001 /* Output the geometry graph */ #define C_FLAGTORUS 0x0002 /* Build a torus rather than a mesh */ #define C_FLAGDEFAULT 0x0000 /* Default flags */ scotch_6.0.9/src/scotch/mmk_m2.h0000644000302600021200000000665013303015264016666 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mmk_m2.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the bidimensional finite **/ /** element grid mesh building program. **/ /** **/ /** DATES : # Version 4.0 : from : 26 sep 2002 **/ /** to : 26 sep 2002 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 1 /* Number of files which can be arguments */ #define C_filenamemshout fileBlockName (C_fileTab, 0) /* Source mesh output file name */ #define C_filenamegeoout fileBlockName (C_fileTab, 1) /* Geometry mesh output file name */ #define C_filepntrmshout fileBlockFile (C_fileTab, 0) /* Source mesh output file */ #define C_filepntrgeoout fileBlockFile (C_fileTab, 1) /* Geometry mesh output file */ /*+ Process flags. +*/ #define C_FLAGGEOOUT 0x0001 /* Output mesh geometry */ #define C_FLAGDEFAULT 0x0000 /* Default flags */ scotch_6.0.9/src/scotch/gotst.h0000644000302600021200000001215113303015264016635 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gotst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a graph scalar factorizer. **/ /** This module contains the data declara- **/ /** tions for the main module. **/ /** **/ /** DATES : # Version 4.0 : from : 27 jan 2004 **/ /** to : 27 jan 2004 **/ /** # Version 5.0 : from : 25 jun 2007 **/ /** to : 25 jul 2007 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines */ /*+ File name aliases. +*/ #define C_FILENBR 3 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamegrfinp fileBlockName (C_fileTab, 0) /* Graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Ordering input file name */ #define C_filenamedatout fileBlockName (C_fileTab, 2) /* Output data file name */ #define C_filepntrgrfinp fileBlockFile (C_fileTab, 0) /* Graph input file */ #define C_filepntrordinp fileBlockFile (C_fileTab, 1) /* Ordering output file */ #define C_filepntrdatout fileBlockFile (C_fileTab, 2) /* Output data file */ /* ** The type and structure definitions. */ /* Factorization node */ typedef struct C_FactorNode_ { struct C_FactorNode_ * linkdad; /*+ Father of node +*/ struct C_FactorNode_ * linkson; /*+ First son of node +*/ struct C_FactorNode_ * linkbro; /*+ Brother of node +*/ } C_FactorNode; /* Data structure for computing factored matrix statistics. */ typedef struct FactorStat_ { const SCOTCH_Num * ldadtax; const SCOTCH_Num * lsontax; const SCOTCH_Num * lbrotax; SCOTCH_Num heigmin; SCOTCH_Num heigmax; SCOTCH_Num heignbr; double heigavg; double heigdlt; const SCOTCH_Num * fnnztax; double fnnzsum; } FactorStat; /* ** The function prototypes. */ static int factorView (const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, FILE * restrict const); static int factorView2 (const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, SCOTCH_Num * restrict, SCOTCH_Num * restrict, SCOTCH_Num * restrict, SCOTCH_Num * restrict); static void factorView3 (FactorStat * restrict const, SCOTCH_Num, SCOTCH_Num, double * restrict const); static void factorView4 (FactorStat * restrict const, SCOTCH_Num, SCOTCH_Num, double * restrict const); scotch_6.0.9/src/scotch/gmk_msh.h0000644000302600021200000000703513303015264017127 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_msh.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh-to-graph converter. **/ /** This module contains the data declara- **/ /** tions for the main module. **/ /** **/ /** DATES : # Version 4.0 : from : 21 jan 2004 **/ /** to : 21 jan 2004 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamemshinp fileBlockName (C_fileTab, 0) /* External graph input file name */ #define C_filenamegrfout fileBlockName (C_fileTab, 1) /* Source graph output file name */ #define C_filepntrmshinp fileBlockFile (C_fileTab, 0) /* External graph input file */ #define C_filepntrgrfout fileBlockFile (C_fileTab, 1) /* Source graph output file */ /* ** The type and structure definitions. */ /*+ This structure defines the method array element. +*/ typedef struct C_Format_ { char code; /* Format type code */ int (* func) (); /* Function to call */ } C_Format; scotch_6.0.9/src/scotch/gscat.h0000644000302600021200000000662413303015264016606 0ustar pelegrinpelegrin/* Copyright 2009,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gscat.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This file contains the data declara- **/ /** tions for the sequential graph scatter- **/ /** ing program. **/ /** **/ /** DATES : # Version 5.1 : from : 26 apr 2009 **/ /** to : 26 apr 2009 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Centralized source graph input file name */ #define C_filenamesrcout fileBlockName (C_fileTab, 1) /* Distributed source graph output file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Centralized source graph input file */ #define C_filepntrsrcout fileBlockFile (C_fileTab, 1) /* Distributed source graph output file */ /* ** The function prototypes. */ static int C_graphScat (FILE * const, SCOTCH_Num, char * const); scotch_6.0.9/src/scotch/atst.h0000644000302600021200000000731113466077161016470 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : atst.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Target architecture graph analyzer. **/ /** **/ /** DATES : # Version 1.3 : from : 17 may 1994 **/ /** to : 17 may 1994 **/ /** # Version 2.0 : from : 11 nov 1994 **/ /** to : 11 nov 1994 **/ /** # Version 3.0 : from : 05 jul 1995 **/ /** to : 05 jul 1995 **/ /** # Version 3.2 : from : 01 jun 1997 **/ /** to : 01 jun 1997 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 28 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines. */ /** File name aliases. **/ #define C_FILENBR 2 /* Number of files in list */ #define C_FILEARGNBR 2 /* Number of files which can be arguments */ #define C_filenametgtinp fileBlockName (C_fileTab, 0) /* Target graph input file name */ #define C_filenamelogout fileBlockName (C_fileTab, 1) /* Statistics output file name */ #define C_filepntrtgtinp fileBlockFile (C_fileTab, 0) /* Target graph input file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 1) /* Statistics output file */ /* ** The function prototypes. */ int C_termList (SCOTCH_Arch * restrict const, SCOTCH_ArchDom * restrict const, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_ArchDom * const); scotch_6.0.9/src/scotch/gbase.c0000644000302600021200000001422513542631177016571 0ustar pelegrinpelegrin/* Copyright 2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gbase.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This program changes the base of source **/ /** graphs. **/ /** **/ /** DATES : # Version 4.0 : from : 12 may 2006 **/ /** to : 12 may 2006 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GBASE #include "module.h" #include "common.h" #include "scotch.h" #include "gbase.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODER }, { FILEMODEW } }; static const char * C_usageList[] = { "gbase [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /******************************/ /* */ /* This is the main function. */ /* */ /******************************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; /* Source graph */ int baseval; int i; errorProg ("gbase"); if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ baseval = 0; /* Assume base 0 by default */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ C_paraNum ++; /* One more parameter */ baseval = atoi (argv[i]); /* Get the base value */ if ((baseval < 0) || (baseval > 1)) errorPrint ("main: invalid base value '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "gbase, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ SCOTCH_graphInit (&grafdat); SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, (SCOTCH_Num) baseval, 0); SCOTCH_graphSave (&grafdat, C_filepntrsrcout); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ SCOTCH_graphExit (&grafdat); return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/mord.h0000644000302600021200000000773213303015264016447 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2014 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : mord.h **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Part of a mesh orderer. **/ /** This module contains the data declara- **/ /** tions for the main routine. **/ /** **/ /** DATES : # Version 4.0 : from : 15 nov 2002 **/ /** to : 22 oct 2003 **/ /** # Version 6.0 : from : 12 nov 2014 **/ /** to : 12 nov 2014 **/ /** **/ /************************************************************/ /* ** The defines. */ /*+ File name aliases. +*/ #define C_FILENBR 4 /* Number of files in list */ #define C_FILEARGNBR 3 /* Number of files which can be arguments */ #define C_filenamesrcinp fileBlockName (C_fileTab, 0) /* Source graph input file name */ #define C_filenameordout fileBlockName (C_fileTab, 1) /* Ordering output file name */ #define C_filenamelogout fileBlockName (C_fileTab, 2) /* Log file name */ #define C_filenamemapout fileBlockName (C_fileTab, 3) /* Separator mapping file name */ #define C_filepntrsrcinp fileBlockFile (C_fileTab, 0) /* Source graph input file */ #define C_filepntrordout fileBlockFile (C_fileTab, 1) /* Ordering output file */ #define C_filepntrlogout fileBlockFile (C_fileTab, 2) /* Log file */ #define C_filepntrmapout fileBlockFile (C_fileTab, 3) /* Separator mapping file */ /*+ Process flags. +*/ #define C_FLAGNONE 0x0000 /* No flags */ #define C_FLAGMAPOUT 0x0001 /* Output mapping data */ #define C_FLAGVERBSTR 0x0002 /* Output strategy string */ #define C_FLAGVERBTIM 0x0004 /* Output timing information */ scotch_6.0.9/src/scotch/amk_fft2.c0000644000302600021200000002645013542631133017174 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : amk_fft2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the distance map for FFT **/ /** graphs, to be used to build the archi- **/ /** tecture description files for these **/ /** graphs. **/ /** **/ /** DATES : # Version 1.3 : from : 19 apr 1994 **/ /** to : 20 apr 1994 **/ /** # Version 3.0 : from : 01 jul 1995 **/ /** to : 19 sep 1995 **/ /** # Version 3.2 : from : 07 may 1997 **/ /** to : 07 may 1997 **/ /** # Version 3.3 : from : 02 oct 1998 **/ /** to : 02 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 03 feb 2000 **/ /** # Version 5.0 : from : 23 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define AMK_FFT2 #include "module.h" #include "common.h" #include "scotch.h" #include "amk_fft2.h" /* ** The static and global definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW } }; static C_VertDist * C_distaTab; /* Pointer to distance map table */ static C_Queue C_distaQueue; /* Distance queue */ static const char * C_usageList[] = { /* Usage list */ "amk_fft2 [ []] ", " -h : Display this help", " -V : Print program version and copyright", NULL }; /*************************************************/ /* */ /* The main routine, which computes the distance */ /* triangular table. */ /* */ /*************************************************/ int main ( int argc, char * argv[]) { SCOTCH_Num fdim; /* FFT dimension */ SCOTCH_Num fnbr; /* Number of FFT vertices */ SCOTCH_Num fmax; /* Maximum terminal number */ SCOTCH_Num fmsk; /* Position bit mask */ C_Vertex v; /* A FFT vertex (lvl, pos) */ SCOTCH_Num i; /* Loop counter */ SCOTCH_Num t; /* Vertex terminal value */ errorProg ("amk_fft2"); fdim = 2; if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 1) { /* If number of parameters not reached */ if ((fdim = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); C_paraNum ++; continue; /* Process the other parameters */ } if (C_fileNum < C_FILENBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'V' : fprintf (stderr, "amk_fft2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ fnbr = (fdim + 1) * (1 << fdim); /* Compute number of vertices */ fmsk = (1 << fdim) - 1; /* Get maximum position number */ for (i = fdim, fmax = 1; i > 0; i --) /* Compute maximum terminal number */ fmax = (fmax << 2) | 2; fmax |= 1; fprintf (C_filepntrarcout, "deco\n0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", /* Print file header */ (SCOTCH_Num) fnbr, /* Print number of terminal domains */ (SCOTCH_Num) fmax); /* Print the biggest terminal value */ for (v.lvl = 0; v.lvl <= fdim; v.lvl ++) { /* For all vertices */ for (v.pos = 0; v.pos <= fmsk; v.pos ++) { SCOTCH_Num b; /* Bitmask value */ for (i = v.lvl, b = 1 << (fdim - 1), t = 1; /* Recurse through the vertical + horizontal cuts */ i <= fdim; i ++, b >>= 1) { t <<= 1; /* Vertical cut: tell if vertex is in left or... */ t |= (v.pos & b) ? 1 : 0; /* right part from the position heaviest bits */ t <<= 1; /* Vertex is still in upper part of horizontal cut */ } if (v.lvl == 0) /* If vertex is in the first level... */ t >>= 2; /* We have gone one step too far */ else { /* Else */ t |= 1; /* This time vertex is in the lower part */ t <<= (v.lvl - 1); /* Make space for the chain bipartition */ t |= v.pos & ((1 << (v.lvl - 1)) - 1); /* Bipartition the chain following the lowest bits */ } fprintf (C_filepntrarcout, SCOTCH_NUMSTRING "\t1\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) C_vertLabl (&v), /* Print terminal label */ (SCOTCH_Num) t); /* Print terminal number */ } } if ((C_queueInit (&C_distaQueue, fnbr) != 0) || /* Allocate distance array */ ((C_distaTab = (C_VertDist *) memAlloc (fnbr * sizeof (C_VertDist))) == NULL)) errorPrint ("main: out of memory"); for (v.lvl = 0; v.lvl <= fdim; v.lvl ++) { /* For all vertices */ for (v.pos = 0; v.pos <= fmsk; v.pos ++) { C_Vertex w; /* Current vertex */ SCOTCH_Num d; /* Distance value */ for (i = 0; i < fnbr; i ++) /* Initialize the vertex table */ C_distaTab[i].queued = 0; /* Vertex not queued yet */ C_distaRoot (&v); /* Set the queue with root v */ while (C_distaGet (&w, &d)) { /* As long as the queue is not empty */ C_distaTab[C_vertLabl (&w)].dist = d; /* Keep the distance information */ d ++; /* Search for neighbors at next level */ if (w.lvl > 0) { /* Add new neighbors to the queue */ C_Vertex x; /* Neighbor vertex */ x.lvl = w.lvl - 1; x.pos = w.pos; C_distaPut (&x, d); x.pos = w.pos ^ (1 << (w.lvl - 1)); C_distaPut (&x, d); } if (w.lvl < fdim) { C_Vertex x; /* Neighbor vertex */ x.lvl = w.lvl + 1; x.pos = w.pos; C_distaPut (&x, d); x.pos = w.pos ^ (1 << w.lvl); C_distaPut (&x, d); } } if (v.lvl + v.pos > 0) { /* Print the distance triangular map line */ fprintf (C_filepntrarcout, SCOTCH_NUMSTRING, (SCOTCH_Num) C_distaTab[0].dist); for (i = 1; i < (v.lvl << fdim) + v.pos; i ++) fprintf (C_filepntrarcout, " " SCOTCH_NUMSTRING, (SCOTCH_Num) C_distaTab[i].dist); fprintf (C_filepntrarcout, "\n"); } } } C_queueExit (&C_distaQueue); memFree (C_distaTab); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/scotch/gmk_m2.c0000644000302600021200000002736513542631177016675 0ustar pelegrinpelegrin/* Copyright 2004,2007,2008,2010-2012,2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : gmk_m2.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : Creates the source graph for 2D mesh **/ /** graphs. **/ /** **/ /** DATES : # Version 2.0 : from : 30 oct 1994 **/ /** to 08 nov 1994 **/ /** # Version 3.0 : from : 11 jul 1995 **/ /** to 02 oct 1995 **/ /** # Version 3.2 : from : 03 jun 1997 **/ /** to : 03 jun 1997 **/ /** # Version 3.3 : from : 06 oct 1998 **/ /** to : 06 oct 1998 **/ /** # Version 3.4 : from : 03 feb 2000 **/ /** to : 18 may 2004 **/ /** # Version 5.0 : from : 13 dec 2007 **/ /** to : 16 mar 2008 **/ /** # Version 5.1 : from : 01 jul 2010 **/ /** to : 14 feb 2011 **/ /** # Version 6.0 : from : 01 jan 2012 **/ /** to : 24 sep 2019 **/ /** **/ /** NOTES : # The vertices of the (dX,dY) mesh are **/ /** numbered as terminals so that **/ /** t(0,0) = 0, t(1,0) = 1, **/ /** t(dX - 1, 0) = dX - 1, t(0,1) = dX, **/ /** and t(x,y) = (y * dX) + x. **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #define GMK_M2 #include "module.h" #include "common.h" #include "scotch.h" #include "gmk_m2.h" /* ** The static definitions. */ static int C_paraNum = 0; /* Number of parameters */ static int C_fileNum = 0; /* Number of file in arg list */ static File C_fileTab[C_FILENBR] = { /* The file array */ { FILEMODEW }, { FILEMODEW } }; static const char * C_usageList[] = { "gmk_m2 [ []] ", " -b : Set base value for output (0 or 1)", " -e : Build a 8-neighbor grid rather than a 4-neighbor one", " -g : Output the geometry to ", " -h : Display this help", " -t : Build a torus rather than a mesh", " -V : Print program version and copyright", NULL }; /****************************************/ /* */ /* The main routine, which computes the */ /* source graph description. */ /* */ /****************************************/ int main ( int argc, char * argv[]) { int flagval; /* Process flags */ SCOTCH_Num baseval; /* Base value */ SCOTCH_Num d[2] = { 1, 1 }; /* Mesh dimensions */ SCOTCH_Num c[2]; /* Vertex coordinates */ int i; errorProg ("gmk_m2"); flagval = C_FLAGDEFAULT; /* Set default flags */ baseval = 0; if ((argc >= 2) && (argv[1][0] == '?')) { /* If need for help */ usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ for (i = 1; i < argc; i ++) { /* Loop for all option codes */ if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */ if (C_paraNum < 2) { /* If number of parameters not reached */ if ((d[C_paraNum ++] = atoi (argv[i])) < 1) /* Get the dimension */ errorPrint ("main: invalid dimension '%s'", argv[i]); continue; /* Process the other parameters */ } if (C_fileNum < C_FILEARGNBR) /* A file name has been given */ fileBlockName (C_fileTab, C_fileNum ++) = argv[i]; else errorPrint ("main: too many file names given"); } else { /* If found an option name */ switch (argv[i][1]) { case 'B' : /* Set base value */ case 'b' : baseval = (SCOTCH_Num) atol (&argv[i][2]); if ((baseval < 0) || (baseval > 1)) { errorPrint ("main: invalid base value '" SCOTCH_NUMSTRING "'", (SCOTCH_Num) baseval); } break; case 'E' : /* Build a finite-element grid */ case 'e' : flagval |= C_FLAGELEM; break; case 'G' : /* Output the geometry */ case 'g' : flagval |= C_FLAGGEOOUT; if (argv[i][2] != '\0') C_filenamegeoout = &argv[i][2]; break; case 'H' : /* Give the usage message */ case 'h' : usagePrint (stdout, C_usageList); return (EXIT_SUCCESS); case 'T' : /* Build a torus */ case 't' : flagval |= C_FLAGTORUS; break; case 'V' : fprintf (stderr, "gmk_m2, version " SCOTCH_VERSION_STRING "\n"); fprintf (stderr, SCOTCH_COPYRIGHT_STRING "\n"); fprintf (stderr, SCOTCH_LICENSE_STRING "\n"); return (EXIT_SUCCESS); default : errorPrint ("main: unprocessed option '%s'", argv[i]); } } } fileBlockOpen (C_fileTab, C_FILENBR); /* Open all files */ if ((flagval & C_FLAGELEM) != 0) /* Build a 8-neighbor grid */ errorPrint ("main: elements not supported"); if (flagval & C_FLAGTORUS) { /* Build a torus */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t000\n", (SCOTCH_Num) (d[0] * d[1]), /* Print number of vertices */ (SCOTCH_Num) ((4 * d[0] * d[1]) - /* Print number of edges (arcs) */ ((d[0] < 3) ? (2 * d[1]) : 0) - ((d[1] < 3) ? (2 * d[0]) : 0)), (SCOTCH_Num) baseval); for (c[1] = 0; c[1] < d[1]; c[1] ++) { /* Output neighbor list */ for (c[0] = 0; c[0] < d[0]; c[0] ++) { fprintf (C_filepntrsrcout, SCOTCH_NUMSTRING, (SCOTCH_Num) (((d[0] > 2) ? 3 : d[0]) + /* Output number of neighbors */ ((d[1] > 2) ? 3 : d[1]) - 2)); if (d[1] > 2) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, /* Output the neighbors */ (SCOTCH_Num) (((c[1] + d[1] - 1) % d[1]) * d[0] + c[0] + baseval)); if (d[0] > 2) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[1] * d[0] + (c[0] + d[0] - 1) % d[0]) + baseval)); if (d[0] > 1) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (c[1] * d[0] + ((c[0] + 1) % d[0]) + baseval)); if (d[1] > 1) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (((c[1] + 1) % d[1]) * d[0] + c[0] + baseval)); fprintf (C_filepntrsrcout, "\n"); } } } else { /* Build a mesh */ fprintf (C_filepntrsrcout, "0\n" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n" SCOTCH_NUMSTRING "\t000\n", (SCOTCH_Num) (d[0] * d[1]), (SCOTCH_Num) ((d[0] * d[1] * 2 - (d[0] + d[1])) * 2), (SCOTCH_Num) baseval); for (c[1] = 0; c[1] < d[1]; c[1] ++) { /* Output neighbor list */ for (c[0] = 0; c[0] < d[0]; c[0] ++) { fprintf (C_filepntrsrcout, "%d", ((c[0] == 0) ? 0 : 1) + /* Output number of neighbors */ ((c[0] == (d[0] - 1)) ? 0 : 1) + ((c[1] == 0) ? 0 : 1) + ((c[1] == (d[1] - 1)) ? 0 : 1)); if (c[1] != 0) /* Output the neighbors */ fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[1] - 1) * d[0] + c[0] + baseval)); if (c[0] != 0) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (c[1] * d[0] + (c[0] - 1) + baseval)); if (c[0] != (d[0] - 1)) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) (c[1] * d[0] + (c[0] + 1) + baseval)); if (c[1] != (d[1] - 1)) fprintf (C_filepntrsrcout, "\t" SCOTCH_NUMSTRING, (SCOTCH_Num) ((c[1] + 1) * d[0] + c[0] + baseval)); fprintf (C_filepntrsrcout, "\n"); } } } if (flagval & C_FLAGGEOOUT) { /* If geometry is wanted */ fprintf (C_filepntrgeoout, "2\n" SCOTCH_NUMSTRING "\n", /* Output geometry file header */ (SCOTCH_Num) (d[0] * d[1])); for (c[1] = 0; c[1] < d[1]; c[1] ++) { /* Output mesh coordinates */ for (c[0] = 0; c[0] < d[0]; c[0] ++) fprintf (C_filepntrgeoout, SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\t" SCOTCH_NUMSTRING "\n", (SCOTCH_Num) (c[1] * d[0] + c[0] + baseval), (SCOTCH_Num) c[0], (SCOTCH_Num) (d[1] - 1 - c[1])); } } fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (un)compression tasks */ return (EXIT_SUCCESS); } scotch_6.0.9/src/check/0000755000302600021200000000000013470125357015130 5ustar pelegrinpelegrinscotch_6.0.9/src/check/data/0000755000302600021200000000000013532672140016035 5ustar pelegrinpelegrinscotch_6.0.9/src/check/data/m4x4_b1_elv.grf0000644000302600021200000000054513531054131020556 0ustar pelegrinpelegrin0 16 48 1 111 4 1 2 7 6 1 3 6 2 3 7 4 3 13 2 12 13 2 3 3 6 1 25 3 17 25 1 2 1 13 2 0 3 3 3 1 4 3 12 2 5 12 2 4 2 6 3 3 2 17 1 14 17 1 4 3 13 2 12 1 0 3 2 0 1 3 2 25 1 17 4 9 5 1 3 2 3 1 14 1 7 14 2 4 1 12 1 5 6 2 1 11 2 3 4 3 17 6 14 1 9 3 1 9 2 3 4 0 1 2 1 19 7 1 2 1 5 7 11 11 3 3 1 14 7 7 1 1 1 1 3 3 2 1 11 2 19 19 2 2 1 9 2 1 scotch_6.0.9/src/check/data/small_0.grf0000644000302600021200000000005213466077161020071 0ustar pelegrinpelegrin2 4 0 12 34 3 7 0 000 2 1 3 3 0 2 4 2 1 5 scotch_6.0.9/src/check/data/m4x4_b1_ev.grf0000644000302600021200000000047513531054131020404 0ustar pelegrinpelegrin0 16 48 1 011 1 2 7 2 1 5 2 3 7 1 3 3 2 6 2 3 3 2 1 4 3 7 1 2 1 3 2 8 3 3 1 1 3 6 2 9 2 4 2 2 3 5 2 7 1 10 1 4 3 3 2 6 1 8 3 11 1 3 2 4 1 7 4 12 1 3 2 5 1 10 1 13 2 4 1 6 1 9 6 11 1 14 3 4 3 7 6 10 1 12 3 15 2 3 4 8 1 11 1 16 1 2 1 9 7 14 3 3 1 10 7 13 1 15 1 3 3 11 1 14 2 16 2 2 1 12 2 15 scotch_6.0.9/src/check/data/m4x4.grf0000644000302600021200000000023713303015264017325 0ustar pelegrinpelegrin0 16 48 0 000 2 1 4 3 0 2 5 3 1 3 6 2 2 7 3 0 5 8 4 1 4 6 9 4 2 5 7 10 3 3 6 11 3 4 9 12 4 5 8 10 13 4 6 9 11 14 3 7 10 15 2 8 13 3 9 12 14 3 10 13 15 2 11 14 scotch_6.0.9/src/check/data/small_1.grf0000644000302600021200000000006113466077161020072 0ustar pelegrinpelegrin2 4 1 12 34 3 10 0 000 3 0 4 6 4 1 3 5 7 3 2 4 8 scotch_6.0.9/src/check/data/bump_b1.grf0000644000302600021200000112145313303015264020063 0ustar pelegrinpelegrin0 9800 57978 1 000 3 414 408 7 4 9772 44 9773 45 4 77 1475 1476 78 3 1243 148 149 3 694 207 208 3 522 349 350 4 8 413 414 1 4 7 413 9 648 4 10 3239 648 8 4 3236 3239 9 11 4 12 3234 3236 10 4 3235 3234 11 13 4 3685 3235 12 14 4 15 419 3685 13 4 16 418 419 14 4 15 418 17 3089 4 18 3087 3089 16 4 17 3087 3088 19 4 3088 18 3096 20 4 3096 19 3097 21 4 22 415 3097 20 4 21 415 1172 23 4 1172 22 1173 24 4 1173 23 1174 25 4 1174 24 1527 26 4 1527 25 27 9782 4 28 3853 9782 26 4 29 2180 3853 27 4 28 2180 2181 30 4 2181 29 31 2504 4 32 2506 2504 30 4 2509 2506 31 33 4 3331 2509 34 32 4 3331 33 3332 35 4 36 2249 3332 34 4 35 2249 2250 37 4 2250 36 2251 38 4 39 417 2251 37 4 40 416 417 38 4 39 416 2195 41 4 2195 40 2196 42 4 2196 41 2197 43 3 2197 42 44 4 43 2197 9772 2 4 9770 9773 2 46 4 47 9769 9770 45 4 48 428 9769 46 4 49 427 428 47 4 48 427 50 412 4 51 411 412 49 4 50 411 52 422 4 51 422 423 53 4 423 52 4651 54 4 4651 53 4652 55 4 4658 4652 54 56 4 5381 4658 55 57 4 58 431 5381 56 4 57 431 430 59 4 60 409 430 58 4 59 409 2219 61 4 2219 60 2220 62 4 2220 61 2221 63 4 2221 62 2222 64 4 2222 63 2223 65 4 6702 2223 64 66 4 6702 65 6704 67 4 6704 66 3506 68 4 69 3453 3506 67 4 70 3452 3453 68 4 3442 3452 69 71 4 72 2492 3442 70 4 71 2492 2493 73 4 74 410 2493 72 4 73 410 75 429 4 74 429 76 1604 4 75 1604 1605 77 4 3 1475 1605 76 4 1476 3 1477 79 4 1477 78 1478 80 4 1478 79 1479 81 4 1479 80 1480 82 4 1480 81 1481 83 4 1481 82 1482 84 4 1482 83 1483 85 4 1483 84 1484 86 4 87 1161 1484 85 4 86 1161 1162 88 4 1162 87 1163 89 4 1163 88 1164 90 4 1164 89 1187 91 4 1187 90 1186 92 4 1186 91 1188 93 4 1188 92 1189 94 4 1189 93 1190 95 4 1190 94 1191 96 4 1191 95 1192 97 4 1192 96 1193 98 4 1193 97 1194 99 4 1194 98 1195 100 4 1195 99 1196 101 4 1196 100 1197 102 4 1197 101 1198 103 4 1198 102 1199 104 4 1199 103 1200 105 4 1200 104 1201 106 4 1201 105 1202 107 4 1202 106 1203 108 4 1203 107 1204 109 4 1204 108 1205 110 4 1205 109 1206 111 4 1206 110 1207 112 4 1207 111 1208 113 4 1208 112 1209 114 4 1209 113 1210 115 4 1210 114 1211 116 4 1211 115 1212 117 4 1212 116 1213 118 4 1213 117 1214 119 4 1214 118 1215 120 4 1215 119 1216 121 4 1216 120 1217 122 4 1217 121 1218 123 4 1218 122 1219 124 4 1219 123 1220 125 4 1220 124 1221 126 4 1221 125 1222 127 4 1222 126 1223 128 4 1223 127 1224 129 4 1224 128 1225 130 4 1225 129 1226 131 4 1226 130 1227 132 4 1227 131 1228 133 4 1228 132 1229 134 4 1229 133 1230 135 4 1230 134 1231 136 4 1231 135 1232 137 4 1232 136 1233 138 4 1233 137 1234 139 4 1234 138 1235 140 4 1235 139 1236 141 4 1236 140 1237 142 4 1237 141 1238 143 4 1238 142 1239 144 4 1239 143 1240 145 4 1240 144 1241 146 4 1241 145 1242 147 4 1242 146 1243 148 3 1243 147 4 4 1243 4 1244 150 4 1244 149 1245 151 4 1245 150 1246 152 4 1246 151 1247 153 4 1247 152 1248 154 4 1248 153 1249 155 4 156 924 1249 154 4 155 924 925 157 4 925 156 926 158 4 926 157 927 159 4 927 158 928 160 4 928 159 929 161 4 929 160 930 162 4 930 161 931 163 4 931 162 932 164 4 165 652 932 163 4 164 652 653 166 4 653 165 654 167 4 654 166 655 168 4 655 167 656 169 4 656 168 657 170 4 657 169 658 171 4 658 170 659 172 4 659 171 660 173 4 660 172 661 174 4 661 173 662 175 4 662 174 663 176 4 663 175 664 177 4 664 176 665 178 4 665 177 666 179 4 666 178 667 180 4 667 179 668 181 4 668 180 669 182 4 669 181 670 183 4 670 182 671 184 4 671 183 672 185 4 672 184 673 186 4 673 185 674 187 4 674 186 675 188 4 675 187 676 189 4 676 188 677 190 4 677 189 678 191 4 678 190 679 192 4 679 191 680 193 4 680 192 681 194 4 681 193 682 195 4 682 194 683 196 4 683 195 684 197 4 684 196 685 198 4 685 197 686 199 4 686 198 687 200 4 687 199 688 201 4 688 200 689 202 4 689 201 690 203 4 690 202 691 204 4 691 203 692 205 4 692 204 693 206 3 693 205 207 4 693 206 694 5 3 694 5 209 4 694 208 695 210 4 695 209 696 211 4 696 210 697 212 4 697 211 698 213 4 698 212 699 214 4 699 213 700 215 4 700 214 701 216 4 701 215 702 217 4 702 216 703 218 4 703 217 704 219 4 704 218 705 220 4 705 219 706 221 4 706 220 707 222 4 707 221 708 223 4 708 222 709 224 4 709 223 710 225 4 710 224 711 226 4 711 225 712 227 4 712 226 713 228 4 713 227 714 229 4 714 228 715 230 4 715 229 716 231 4 716 230 717 232 4 717 231 718 233 4 718 232 719 234 4 719 233 720 235 4 720 234 721 236 4 721 235 722 237 4 722 236 723 238 4 723 237 724 239 4 724 238 725 240 4 725 239 726 241 4 726 240 727 242 4 727 241 728 243 4 728 242 729 244 4 729 243 730 245 4 730 244 731 246 4 731 245 732 247 4 732 246 733 248 4 733 247 734 249 4 734 248 735 250 4 735 249 736 251 4 736 250 737 252 4 737 251 738 253 4 738 252 739 254 4 739 253 740 255 4 740 254 741 256 4 741 255 742 257 4 742 256 743 258 4 259 432 743 257 4 258 432 433 260 4 433 259 434 261 4 434 260 435 262 4 435 261 436 263 4 436 262 437 264 4 437 263 438 265 4 438 264 439 266 4 439 265 440 267 4 440 266 441 268 4 441 267 442 269 4 442 268 443 270 4 443 269 444 271 4 444 270 445 272 4 445 271 446 273 4 446 272 447 274 4 447 273 448 275 4 448 274 449 276 4 449 275 450 277 4 450 276 451 278 4 451 277 452 279 4 452 278 453 280 4 453 279 454 281 4 454 280 455 282 4 455 281 456 283 4 456 282 457 284 4 457 283 458 285 4 458 284 459 286 4 459 285 460 287 4 460 286 461 288 4 461 287 462 289 4 462 288 463 290 4 463 289 464 291 4 464 290 465 292 4 465 291 466 293 4 466 292 467 294 4 467 293 468 295 4 468 294 469 296 4 469 295 470 297 4 470 296 471 298 4 471 297 472 299 4 472 298 473 300 4 473 299 474 301 4 474 300 475 302 4 475 301 476 303 4 476 302 477 304 4 477 303 478 305 4 478 304 479 306 4 479 305 480 307 4 480 306 481 308 4 481 307 482 309 4 482 308 483 310 4 483 309 484 311 4 484 310 485 312 4 485 311 486 313 4 486 312 487 314 4 487 313 488 315 4 488 314 489 316 4 489 315 490 317 4 490 316 491 318 4 491 317 492 319 4 492 318 493 320 4 493 319 494 321 4 494 320 495 322 4 495 321 496 323 4 496 322 497 324 4 497 323 498 325 4 498 324 499 326 4 499 325 500 327 4 500 326 501 328 4 501 327 502 329 4 502 328 503 330 4 503 329 504 331 4 504 330 505 332 4 505 331 506 333 4 506 332 507 334 4 507 333 508 335 4 508 334 509 336 4 509 335 510 337 4 510 336 511 338 4 511 337 512 339 4 512 338 513 340 4 513 339 514 341 4 514 340 515 342 4 515 341 516 343 4 516 342 517 344 4 517 343 518 345 4 518 344 519 346 4 519 345 520 347 4 520 346 521 348 4 521 347 522 349 3 522 348 6 4 522 6 523 351 4 523 350 524 352 4 524 351 525 353 4 525 352 526 354 4 526 353 527 355 4 527 354 528 356 4 528 355 529 357 4 529 356 530 358 4 530 357 531 359 4 531 358 532 360 4 532 359 533 361 4 533 360 534 362 4 534 361 535 363 4 535 362 536 364 4 536 363 537 365 4 537 364 538 366 4 538 365 539 367 4 539 366 540 368 4 540 367 541 369 4 541 368 542 370 4 542 369 543 371 4 543 370 544 372 4 544 371 545 373 4 545 372 546 374 4 546 373 547 375 4 547 374 548 376 4 551 548 375 377 4 551 376 552 378 4 552 377 553 379 4 553 378 554 380 4 557 554 379 381 4 567 557 380 382 4 567 381 568 383 4 568 382 569 384 4 569 383 570 385 4 570 384 571 386 4 426 571 387 385 4 388 424 426 386 4 387 424 425 389 4 580 425 390 388 4 585 580 389 391 4 585 390 586 392 4 586 391 587 393 4 587 392 421 394 4 395 420 421 393 4 394 420 595 396 4 397 597 595 395 4 623 597 396 398 4 623 397 624 399 4 624 398 625 400 4 399 625 627 401 4 627 400 629 402 4 631 629 403 401 4 631 402 632 404 4 403 632 2098 405 4 406 650 2098 404 4 649 650 405 407 4 649 406 414 408 3 414 407 1 6 59 60 430 2219 2546 2842 6 73 74 2493 2494 1607 429 6 50 51 412 4522 4516 422 6 50 411 49 427 4515 4516 6 7 8 414 648 647 649 6 7 413 649 407 408 1 6 21 22 1172 3883 3129 3097 6 39 40 417 2195 2253 9705 6 39 416 38 2251 2252 2253 6 15 16 419 3089 3099 3100 6 15 418 14 3100 3101 3685 6 394 395 421 594 589 595 6 394 420 587 393 588 589 6 51 52 423 5238 4522 411 6 422 52 53 4651 9685 5238 6 387 388 425 426 578 576 6 424 388 578 579 580 389 6 387 424 573 571 386 576 6 48 49 428 412 4515 5613 6 48 427 47 5613 7501 9769 6 74 75 1604 1606 1607 410 6 59 409 431 58 2842 9691 6 57 58 430 9690 5381 9691 6 258 259 433 743 744 745 6 432 259 260 434 745 746 6 433 260 261 435 746 747 6 434 261 262 436 747 748 6 435 262 263 437 748 749 6 436 263 264 438 749 750 6 437 264 265 439 750 751 6 438 265 266 440 751 752 6 439 266 267 441 752 753 6 440 267 268 442 753 754 6 441 268 269 443 754 755 6 442 269 270 444 755 756 6 443 270 271 445 756 757 6 444 271 272 446 757 758 6 445 272 273 447 758 759 6 446 273 274 448 759 760 6 447 274 275 449 760 761 6 448 275 276 450 761 762 6 449 276 277 451 762 763 6 450 277 278 452 763 764 6 451 278 279 453 764 765 6 452 279 280 454 765 766 6 453 280 281 455 766 767 6 454 281 282 456 767 768 6 455 282 283 457 768 769 6 456 283 284 458 769 770 6 457 284 285 459 770 771 6 458 285 286 460 771 772 6 459 286 287 461 772 773 6 460 287 288 462 773 774 6 461 288 289 463 774 775 6 462 289 290 464 775 776 6 463 290 291 465 776 777 6 464 291 292 466 777 778 6 465 292 293 467 778 779 6 466 293 294 468 779 780 6 467 294 295 469 780 781 6 468 295 296 470 781 782 6 469 296 297 471 782 783 6 470 297 298 472 783 784 6 471 298 299 473 784 785 6 472 299 300 474 785 786 6 473 300 301 475 786 787 6 474 301 302 476 787 788 6 475 302 303 477 788 789 6 476 303 304 478 789 790 6 477 304 305 479 790 791 6 478 305 306 480 791 792 6 479 306 307 481 792 793 6 480 307 308 482 793 794 6 481 308 309 483 794 795 6 482 309 310 484 795 796 6 483 310 311 485 796 797 6 484 311 312 486 797 798 6 485 312 313 487 798 799 6 486 313 314 488 799 800 6 487 314 315 489 800 801 6 488 315 316 490 801 802 6 489 316 317 491 802 803 6 490 317 318 492 803 804 6 491 318 319 493 804 805 6 492 319 320 494 805 806 6 493 320 321 495 806 807 6 494 321 322 496 807 808 6 495 322 323 497 808 809 6 496 323 324 498 809 810 6 497 324 325 499 810 811 6 498 325 326 500 811 812 6 499 326 327 501 812 813 6 500 327 328 502 813 814 6 501 328 329 503 814 815 6 502 329 330 504 815 816 6 503 330 331 505 816 817 6 504 331 332 506 817 818 6 505 332 333 507 818 819 6 506 333 334 508 819 820 6 507 334 335 509 820 821 6 508 335 336 510 821 822 6 509 336 337 511 822 823 6 510 337 338 512 823 824 6 511 338 339 513 824 825 6 512 339 340 514 825 826 6 513 340 341 515 826 827 6 514 341 342 516 827 828 6 515 342 343 517 828 829 6 516 343 344 518 829 830 6 517 344 345 519 830 831 6 518 345 346 520 831 832 6 519 346 347 521 832 833 6 520 347 348 522 833 834 7 521 348 349 6 350 523 834 6 522 350 351 524 834 835 5 523 351 352 525 835 6 524 352 353 526 835 836 6 525 353 354 527 836 837 6 526 354 355 528 837 838 6 527 355 356 529 838 839 6 528 356 357 530 839 840 6 529 357 358 531 840 841 6 530 358 359 532 841 842 6 531 359 360 533 842 843 6 532 360 361 534 843 844 6 533 361 362 535 844 845 6 534 362 363 536 845 846 6 535 363 364 537 846 847 6 536 364 365 538 847 848 6 537 365 366 539 848 849 6 538 366 367 540 849 850 6 539 367 368 541 850 851 6 540 368 369 542 854 851 6 541 369 370 543 856 854 6 542 370 371 544 856 857 6 543 371 372 545 857 858 6 544 372 373 546 858 859 6 545 373 374 547 859 860 6 546 374 375 548 549 860 6 547 375 549 550 551 376 6 547 548 550 860 861 862 6 549 548 551 862 863 864 6 550 548 376 377 552 864 6 551 377 378 553 864 865 6 552 378 379 554 555 865 6 553 379 555 556 557 380 6 553 554 556 558 865 866 6 555 554 557 558 559 566 6 556 554 380 566 567 381 6 555 556 559 560 866 867 6 558 556 560 561 562 566 6 558 559 561 867 868 869 6 560 559 562 563 923 869 6 561 559 563 564 565 566 6 561 562 564 922 921 923 6 563 562 565 9744 922 9745 6 564 562 566 567 9745 568 6 565 562 559 556 557 567 6 566 557 381 382 568 565 6 567 382 383 569 9745 565 6 568 383 384 570 9745 9740 6 569 384 385 571 572 9740 6 570 385 572 573 426 386 6 570 571 573 574 9740 9741 6 572 571 426 574 575 576 6 572 573 575 9741 9742 917 6 574 573 576 577 917 916 6 575 573 426 577 578 424 6 575 576 578 916 2475 1516 6 577 576 424 425 579 1516 6 578 425 580 581 582 1516 6 579 425 389 581 585 390 6 579 580 582 583 584 585 6 579 581 583 1516 1517 1518 6 582 581 584 1518 1509 1507 6 583 581 585 586 590 1507 6 584 581 580 390 391 586 6 585 391 392 587 590 584 6 586 392 393 421 588 590 6 587 421 589 590 591 592 6 588 421 592 593 594 420 6 587 588 591 586 584 1507 6 590 588 592 1507 1508 1515 6 591 588 589 593 600 1515 6 592 589 594 598 599 600 6 593 589 420 595 596 598 6 594 420 395 596 597 396 6 594 595 597 598 622 607 6 596 595 622 623 397 396 6 594 596 593 599 606 607 6 593 598 600 601 605 606 6 593 599 601 602 1515 592 6 600 599 602 603 604 605 6 600 601 603 1514 1515 1540 6 602 601 604 1540 1541 1584 6 603 601 605 1603 1584 609 6 604 601 599 606 608 609 6 605 599 598 607 608 615 6 606 598 622 621 596 615 6 605 606 609 610 611 615 6 605 608 610 1603 604 1601 6 609 608 611 612 1600 1601 6 610 608 612 613 614 615 6 610 611 613 6558 1599 1600 6 612 611 614 616 3765 6558 6 613 611 615 616 617 621 6 614 611 621 607 606 608 6 613 614 617 618 3761 3765 6 616 614 618 619 620 621 6 616 617 619 3761 3762 626 6 618 617 620 624 625 626 6 619 617 621 622 624 623 6 620 617 614 615 622 607 6 620 621 607 596 597 623 6 622 597 397 398 624 620 6 623 398 399 625 619 620 6 624 399 619 626 627 400 6 619 625 627 628 3762 618 6 626 625 628 629 400 401 6 626 627 629 630 3762 3763 6 628 627 630 631 402 401 6 628 629 631 636 3763 633 6 630 629 402 403 632 633 6 631 403 633 634 404 2098 6 631 632 634 635 636 630 6 633 632 635 2098 651 642 6 633 634 636 637 638 642 6 633 635 637 3218 3763 630 6 636 635 638 639 3218 3219 6 637 635 639 640 641 642 6 637 638 640 3219 3220 3221 6 639 638 641 3221 3240 3241 6 640 638 642 643 644 3240 6 641 638 643 634 651 635 6 641 642 644 645 646 651 6 641 643 645 3238 3237 3240 6 644 643 646 647 648 3238 6 645 643 647 649 650 651 5 645 646 648 413 649 7 645 647 413 9 3239 3238 8 7 413 647 646 650 406 407 414 6 649 646 651 406 405 2098 6 650 646 634 2098 642 643 6 164 165 653 932 933 934 6 652 165 166 654 934 935 6 653 166 167 655 935 936 6 654 167 168 656 936 937 6 655 168 169 657 937 938 6 656 169 170 658 938 939 6 657 170 171 659 939 940 6 658 171 172 660 940 941 6 659 172 173 661 941 942 6 660 173 174 662 942 943 6 661 174 175 663 943 944 6 662 175 176 664 944 945 6 663 176 177 665 945 946 6 664 177 178 666 946 947 6 665 178 179 667 947 948 6 666 179 180 668 948 949 6 667 180 181 669 949 950 6 668 181 182 670 950 951 6 669 182 183 671 951 952 6 670 183 184 672 952 953 6 671 184 185 673 953 954 6 672 185 186 674 954 955 6 673 186 187 675 955 956 6 674 187 188 676 956 957 6 675 188 189 677 957 958 6 676 189 190 678 958 959 6 677 190 191 679 959 960 6 678 191 192 680 960 961 6 679 192 193 681 961 962 6 680 193 194 682 962 963 6 681 194 195 683 963 964 6 682 195 196 684 964 965 6 683 196 197 685 965 966 6 684 197 198 686 966 967 6 685 198 199 687 967 968 6 686 199 200 688 968 969 6 687 200 201 689 969 970 6 688 201 202 690 970 971 6 689 202 203 691 971 972 6 690 203 204 692 972 973 6 691 204 205 693 973 974 7 692 205 206 207 694 974 695 6 693 207 5 208 209 695 7 694 209 210 696 974 693 975 6 695 210 211 697 975 976 6 696 211 212 698 976 977 6 697 212 213 699 977 978 6 698 213 214 700 978 979 6 699 214 215 701 979 980 6 700 215 216 702 980 981 6 701 216 217 703 981 982 6 702 217 218 704 982 983 6 703 218 219 705 983 984 6 704 219 220 706 984 985 6 705 220 221 707 985 986 6 706 221 222 708 986 987 6 707 222 223 709 987 988 6 708 223 224 710 988 989 6 709 224 225 711 989 990 6 710 225 226 712 990 991 6 711 226 227 713 991 992 6 712 227 228 714 992 993 6 713 228 229 715 993 994 6 714 229 230 716 994 995 6 715 230 231 717 995 996 6 716 231 232 718 996 997 6 717 232 233 719 997 998 6 718 233 234 720 998 999 6 719 234 235 721 999 1000 6 720 235 236 722 1000 1001 6 721 236 237 723 1001 1002 6 722 237 238 724 1002 1003 6 723 238 239 725 1003 1004 6 724 239 240 726 1004 1005 6 725 240 241 727 1005 1006 6 726 241 242 728 1006 1007 6 727 242 243 729 1007 1008 6 728 243 244 730 1008 1009 6 729 244 245 731 1009 1010 6 730 245 246 732 1010 1011 6 731 246 247 733 1011 1012 6 732 247 248 734 1012 1013 6 733 248 249 735 1013 1014 6 734 249 250 736 1017 1014 6 735 250 251 737 1017 1018 6 736 251 252 738 1018 1019 6 737 252 253 739 1019 1020 6 738 253 254 740 1020 1021 6 739 254 255 741 1021 1022 6 740 255 256 742 1022 1023 6 741 256 257 743 1023 1024 6 742 257 258 432 744 1024 6 743 432 745 1024 1025 1026 6 744 432 433 746 1026 1027 6 745 433 434 747 1027 1028 6 746 434 435 748 1028 1029 6 747 435 436 749 1029 1030 6 748 436 437 750 1030 1031 6 749 437 438 751 1031 1032 6 750 438 439 752 1032 1033 6 751 439 440 753 1033 1034 6 752 440 441 754 1034 1035 6 753 441 442 755 1035 1036 6 754 442 443 756 1036 1037 6 755 443 444 757 1037 1038 6 756 444 445 758 1038 1039 6 757 445 446 759 1039 1040 6 758 446 447 760 1040 1041 6 759 447 448 761 1041 1042 6 760 448 449 762 1042 1043 6 761 449 450 763 1043 1044 6 762 450 451 764 1044 1045 6 763 451 452 765 1045 1046 6 764 452 453 766 1046 1047 6 765 453 454 767 1047 1048 6 766 454 455 768 1048 1049 6 767 455 456 769 1049 1050 6 768 456 457 770 1050 1051 6 769 457 458 771 1051 1052 6 770 458 459 772 1052 1053 6 771 459 460 773 1053 1054 6 772 460 461 774 1054 1055 6 773 461 462 775 1055 1056 6 774 462 463 776 1056 1057 6 775 463 464 777 1057 1058 6 776 464 465 778 1058 1059 6 777 465 466 779 1059 1060 6 778 466 467 780 1060 1061 6 779 467 468 781 1061 1062 6 780 468 469 782 1062 1063 6 781 469 470 783 1063 1064 6 782 470 471 784 1064 1065 6 783 471 472 785 1065 1066 6 784 472 473 786 1066 1067 6 785 473 474 787 1067 1068 6 786 474 475 788 1068 1069 6 787 475 476 789 1069 1070 6 788 476 477 790 1070 1071 6 789 477 478 791 1071 1072 6 790 478 479 792 1072 1073 6 791 479 480 793 1073 1074 6 792 480 481 794 1074 1075 6 793 481 482 795 1075 1076 6 794 482 483 796 1076 1077 6 795 483 484 797 1077 1078 6 796 484 485 798 1078 1079 6 797 485 486 799 1079 1080 6 798 486 487 800 1080 1081 6 799 487 488 801 1081 1082 6 800 488 489 802 1082 1083 6 801 489 490 803 1083 1084 6 802 490 491 804 1084 1085 6 803 491 492 805 1085 1086 6 804 492 493 806 1086 1087 6 805 493 494 807 1087 1088 6 806 494 495 808 1088 1089 6 807 495 496 809 1089 1090 6 808 496 497 810 1090 1091 6 809 497 498 811 1091 1092 6 810 498 499 812 1092 1093 6 811 499 500 813 1093 1094 6 812 500 501 814 1094 1095 6 813 501 502 815 1095 1096 6 814 502 503 816 1096 1097 6 815 503 504 817 1097 1098 6 816 504 505 818 1098 1099 6 817 505 506 819 1099 1100 6 818 506 507 820 1100 1101 6 819 507 508 821 1101 1102 6 820 508 509 822 1102 1103 6 821 509 510 823 1103 1104 6 822 510 511 824 1104 1105 6 823 511 512 825 1105 1106 6 824 512 513 826 1106 1107 6 825 513 514 827 1107 1108 6 826 514 515 828 1108 1109 6 827 515 516 829 1109 1110 6 828 516 517 830 1110 1111 6 829 517 518 831 1111 1112 6 830 518 519 832 1112 1113 6 831 519 520 833 1113 1114 6 832 520 521 834 1114 1115 6 833 521 522 523 835 1115 6 834 523 524 525 836 1115 7 835 525 526 837 1115 1116 1117 6 836 526 527 838 1117 1118 6 837 527 528 839 1118 1119 6 838 528 529 840 1119 1120 6 839 529 530 841 1120 1121 6 840 530 531 842 1121 1122 6 841 531 532 843 1122 1123 6 842 532 533 844 1123 1124 6 843 533 534 845 1124 1125 6 844 534 535 846 1125 1126 6 845 535 536 847 1126 1127 6 846 536 537 848 1127 1128 6 847 537 538 849 1128 1129 6 848 538 539 850 1129 1130 6 849 539 540 851 852 1130 6 850 540 852 853 854 541 6 850 851 853 1130 1131 1132 6 852 851 854 855 1132 1133 6 853 851 855 856 542 541 6 853 854 856 1133 1134 1135 6 855 854 542 543 857 1135 6 856 543 544 858 1135 1136 6 857 544 545 859 1136 1137 6 858 545 546 860 1137 1138 6 859 546 547 549 861 1138 6 860 549 862 1138 1139 1140 6 861 549 550 863 1140 1141 6 862 550 864 1141 1142 1143 6 863 550 551 552 865 1143 6 864 552 553 555 866 1143 6 865 555 558 867 1143 1144 6 866 558 560 868 1144 1145 6 867 560 869 870 1145 1146 6 868 560 870 871 923 561 6 868 869 871 872 1146 1147 6 870 869 872 873 874 923 6 870 871 873 1147 1148 1149 6 872 871 874 875 1152 1149 6 873 871 875 876 923 921 6 873 874 876 877 1171 1152 6 875 874 877 878 920 921 6 875 876 878 879 880 1171 6 877 876 879 919 883 920 6 877 878 880 881 882 883 6 877 879 881 885 887 1171 6 880 879 882 885 886 892 6 881 879 883 884 892 893 6 882 879 884 918 919 878 6 882 883 913 893 914 918 6 880 881 886 887 888 889 6 885 881 889 890 891 892 6 880 885 888 1965 1170 1171 6 887 885 889 1966 1965 2076 6 888 885 886 890 2076 2077 6 889 886 891 2077 2078 2082 6 890 886 892 894 895 2082 6 891 886 881 882 893 894 6 892 882 894 897 913 884 6 892 893 891 895 896 897 6 891 894 896 898 899 2082 6 895 894 897 898 910 911 6 896 894 893 911 912 913 6 895 896 899 900 901 910 6 895 898 900 902 2082 2081 6 899 898 901 902 903 907 6 900 898 907 908 909 910 6 899 900 903 904 2081 2083 6 902 900 904 905 906 907 6 902 903 905 2083 2084 2085 6 904 903 906 2085 2086 1566 6 905 903 907 1564 1565 1566 6 906 903 900 901 908 1564 6 907 901 909 1544 1564 1537 6 908 901 910 1523 1524 1537 6 909 901 898 896 911 1523 6 910 896 897 912 1521 1523 6 911 897 913 1522 1521 915 6 912 897 893 884 914 915 6 913 884 915 916 917 918 6 913 914 916 2475 1522 912 6 915 914 917 575 577 2475 6 916 914 918 9742 574 575 6 917 914 884 883 919 9742 6 918 883 878 920 9743 9742 6 919 878 876 921 922 9743 6 920 876 922 563 923 874 6 920 921 563 9744 9743 564 6 563 921 874 871 869 561 6 155 156 925 1249 1250 1251 6 924 156 157 926 1251 1252 6 925 157 158 927 1252 1253 6 926 158 159 928 1253 1254 6 927 159 160 929 1254 1255 6 928 160 161 930 1255 1256 6 929 161 162 931 1256 1257 6 930 162 163 932 1257 1258 6 931 163 164 652 933 1258 6 932 652 934 1258 1259 1260 6 933 652 653 935 1260 1261 6 934 653 654 936 1261 1262 6 935 654 655 937 1262 1263 6 936 655 656 938 1263 1264 6 937 656 657 939 1264 1265 6 938 657 658 940 1265 1266 6 939 658 659 941 1266 1267 6 940 659 660 942 1267 1268 6 941 660 661 943 1268 1269 6 942 661 662 944 1269 1270 6 943 662 663 945 1270 1271 6 944 663 664 946 1271 1272 6 945 664 665 947 1272 1273 6 946 665 666 948 1273 1274 6 947 666 667 949 1274 1275 6 948 667 668 950 1275 1276 6 949 668 669 951 1276 1277 6 950 669 670 952 1277 1278 6 951 670 671 953 1278 1279 6 952 671 672 954 1279 1280 6 953 672 673 955 1280 1281 6 954 673 674 956 1281 1282 6 955 674 675 957 1282 1283 6 956 675 676 958 1283 1284 6 957 676 677 959 1284 1285 6 958 677 678 960 1285 1286 6 959 678 679 961 1286 1287 6 960 679 680 962 1287 1288 6 961 680 681 963 1288 1289 6 962 681 682 964 1289 1290 6 963 682 683 965 1290 1291 6 964 683 684 966 1291 1292 6 965 684 685 967 1292 1293 6 966 685 686 968 1293 1294 6 967 686 687 969 1294 1295 6 968 687 688 970 1295 1296 6 969 688 689 971 1296 1297 6 970 689 690 972 1297 1298 6 971 690 691 973 1298 1299 6 972 691 692 974 1299 1300 6 973 692 693 695 975 1300 5 974 695 696 976 1300 6 975 696 697 977 1300 1301 6 976 697 698 978 1301 1302 6 977 698 699 979 1302 1303 6 978 699 700 980 1303 1304 6 979 700 701 981 1304 1305 6 980 701 702 982 1305 1306 6 981 702 703 983 1306 1307 6 982 703 704 984 1307 1308 6 983 704 705 985 1308 1309 6 984 705 706 986 1309 1310 6 985 706 707 987 1310 1311 6 986 707 708 988 1311 1312 6 987 708 709 989 1312 1313 6 988 709 710 990 1313 1314 6 989 710 711 991 1314 1315 6 990 711 712 992 1315 1316 6 991 712 713 993 1316 1317 6 992 713 714 994 1317 1318 6 993 714 715 995 1318 1319 6 994 715 716 996 1319 1320 6 995 716 717 997 1320 1321 6 996 717 718 998 1321 1322 6 997 718 719 999 1322 1323 6 998 719 720 1000 1323 1324 6 999 720 721 1001 1324 1325 6 1000 721 722 1002 1325 1326 6 1001 722 723 1003 1326 1327 6 1002 723 724 1004 1327 1328 6 1003 724 725 1005 1328 1329 6 1004 725 726 1006 1329 1330 6 1005 726 727 1007 1330 1331 6 1006 727 728 1008 1331 1332 6 1007 728 729 1009 1332 1333 6 1008 729 730 1010 1333 1334 6 1009 730 731 1011 1334 1335 6 1010 731 732 1012 1335 1336 6 1011 732 733 1013 1336 1337 6 1012 733 734 1014 1015 1337 6 1013 734 1015 1016 1017 735 6 1013 1014 1016 1337 1338 1339 6 1015 1014 1017 1339 1340 1341 6 1016 1014 735 736 1018 1341 6 1017 736 737 1019 1341 1342 6 1018 737 738 1020 1342 1343 6 1019 738 739 1021 1343 1344 6 1020 739 740 1022 1344 1345 6 1021 740 741 1023 1345 1346 6 1022 741 742 1024 1346 1347 6 1023 742 743 744 1025 1347 6 1024 744 1026 1347 1348 1349 6 1025 744 745 1027 1349 1350 6 1026 745 746 1028 1350 1351 6 1027 746 747 1029 1351 1352 6 1028 747 748 1030 1352 1353 6 1029 748 749 1031 1353 1354 6 1030 749 750 1032 1354 1355 6 1031 750 751 1033 1355 1356 6 1032 751 752 1034 1356 1357 6 1033 752 753 1035 1357 1358 6 1034 753 754 1036 1358 1359 6 1035 754 755 1037 1359 1360 6 1036 755 756 1038 1360 1361 6 1037 756 757 1039 1361 1362 6 1038 757 758 1040 1362 1363 6 1039 758 759 1041 1363 1364 6 1040 759 760 1042 1364 1365 6 1041 760 761 1043 1365 1366 6 1042 761 762 1044 1366 1367 6 1043 762 763 1045 1367 1368 6 1044 763 764 1046 1368 1369 6 1045 764 765 1047 1369 1370 6 1046 765 766 1048 1370 1371 6 1047 766 767 1049 1371 1372 6 1048 767 768 1050 1372 1373 6 1049 768 769 1051 1373 1374 6 1050 769 770 1052 1374 1375 6 1051 770 771 1053 1375 1376 6 1052 771 772 1054 1376 1377 6 1053 772 773 1055 1377 1378 6 1054 773 774 1056 1378 1379 6 1055 774 775 1057 1379 1380 6 1056 775 776 1058 1380 1381 6 1057 776 777 1059 1381 1382 6 1058 777 778 1060 1382 1383 6 1059 778 779 1061 1383 1384 6 1060 779 780 1062 1384 1385 6 1061 780 781 1063 1385 1386 6 1062 781 782 1064 1386 1387 6 1063 782 783 1065 1387 1388 6 1064 783 784 1066 1388 1389 6 1065 784 785 1067 1389 1390 6 1066 785 786 1068 1390 1391 6 1067 786 787 1069 1391 1392 6 1068 787 788 1070 1392 1393 6 1069 788 789 1071 1393 1394 6 1070 789 790 1072 1394 1395 6 1071 790 791 1073 1395 1396 6 1072 791 792 1074 1396 1397 6 1073 792 793 1075 1397 1398 6 1074 793 794 1076 1398 1399 6 1075 794 795 1077 1399 1400 6 1076 795 796 1078 1400 1401 6 1077 796 797 1079 1401 1402 6 1078 797 798 1080 1402 1403 6 1079 798 799 1081 1403 1404 6 1080 799 800 1082 1404 1405 6 1081 800 801 1083 1405 1406 6 1082 801 802 1084 1406 1407 6 1083 802 803 1085 1407 1408 6 1084 803 804 1086 1408 1409 6 1085 804 805 1087 1409 1410 6 1086 805 806 1088 1410 1411 6 1087 806 807 1089 1411 1412 6 1088 807 808 1090 1412 1413 6 1089 808 809 1091 1413 1414 6 1090 809 810 1092 1414 1415 6 1091 810 811 1093 1415 1416 6 1092 811 812 1094 1416 1417 6 1093 812 813 1095 1417 1418 6 1094 813 814 1096 1418 1419 6 1095 814 815 1097 1419 1420 6 1096 815 816 1098 1420 1421 6 1097 816 817 1099 1421 1422 6 1098 817 818 1100 1422 1423 6 1099 818 819 1101 1423 1424 6 1100 819 820 1102 1424 1425 6 1101 820 821 1103 1425 1426 6 1102 821 822 1104 1426 1427 6 1103 822 823 1105 1427 1428 6 1104 823 824 1106 1428 1429 6 1105 824 825 1107 1429 1430 6 1106 825 826 1108 1430 1431 6 1107 826 827 1109 1431 1432 6 1108 827 828 1110 1432 1433 6 1109 828 829 1111 1433 1434 6 1110 829 830 1112 1434 1435 6 1111 830 831 1113 1435 1436 6 1112 831 832 1114 1436 1437 6 1113 832 833 1115 1437 1116 6 1114 833 834 835 836 1116 6 1115 836 1117 1437 1114 1438 5 1116 836 837 1118 1438 6 1117 837 838 1119 1438 1439 6 1118 838 839 1120 1439 1440 6 1119 839 840 1121 1440 1441 6 1120 840 841 1122 1441 1442 6 1121 841 842 1123 1442 1443 6 1122 842 843 1124 1443 1444 6 1123 843 844 1125 1444 1445 6 1124 844 845 1126 1445 1446 6 1125 845 846 1127 1446 1447 6 1126 846 847 1128 1447 1448 6 1127 847 848 1129 1448 1449 6 1128 848 849 1130 1449 1450 6 1129 849 850 852 1131 1450 6 1130 852 1132 1450 1451 1452 6 1131 852 853 1133 1452 1453 6 1132 853 855 1134 1453 1454 6 1133 855 1135 1457 1454 1153 6 1134 855 856 857 1136 1153 6 1135 857 858 1137 1153 1154 6 1136 858 859 1138 1154 1155 6 1137 859 860 861 1139 1155 6 1138 861 1140 1155 1156 1157 6 1139 861 862 1141 1157 1158 6 1140 862 863 1142 1158 1159 6 1141 863 1143 1159 1160 1144 6 1142 863 864 865 866 1144 6 1143 866 867 1145 1160 1142 6 1144 867 868 1146 1499 1160 6 1145 868 870 1147 1499 1500 6 1146 870 872 1148 1165 1500 6 1147 872 1149 1150 1165 1166 6 1148 872 1150 1151 1152 873 6 1148 1149 1151 1166 1167 1168 6 1150 1149 1152 1168 1169 1170 6 1151 1149 873 1170 1171 875 6 1135 1136 1154 1474 1457 1134 6 1153 1136 1137 1155 1474 1491 6 1154 1137 1138 1139 1156 1491 6 1155 1139 1157 1491 1492 1493 6 1156 1139 1140 1158 1493 1494 6 1157 1140 1141 1159 1494 1495 6 1158 1141 1142 1160 1498 1495 6 1159 1142 1144 1145 1499 1498 6 86 87 1162 1484 1485 1489 6 1161 87 88 1163 1175 1489 6 1162 88 89 1164 1175 1176 6 1163 89 90 1176 1178 1187 6 1147 1148 1166 1500 1528 1529 6 1165 1148 1150 1167 1529 1534 6 1166 1150 1168 1536 1534 1542 6 1167 1150 1151 1169 1542 1963 6 1168 1151 1170 1963 1964 1965 6 1169 1151 1152 1171 887 1965 6 1170 1152 875 887 880 877 6 415 22 23 1173 3338 3883 6 1172 23 24 1174 1525 3338 6 1173 24 25 1525 1526 1527 6 1162 1163 1176 1177 1489 1490 6 1175 1163 1177 1164 1178 1179 6 1175 1176 1490 1643 1644 1179 6 1176 1164 1179 1180 1187 1184 6 1176 1178 1180 1181 1644 1177 6 1179 1178 1181 1182 1183 1184 6 1179 1180 1182 1644 1645 1646 6 1181 1180 1183 1646 1647 1648 6 1182 1180 1184 1185 3098 1648 6 1183 1180 1185 1186 1187 1178 6 1183 1184 1186 3098 2242 1188 6 1185 1184 1187 91 92 1188 6 1186 1184 1178 1164 90 91 6 1186 92 93 1189 2242 1185 6 1188 93 94 1190 2242 1660 6 1189 94 95 1191 1661 1660 6 1190 95 96 1192 1663 1661 6 1191 96 97 1193 1671 1663 6 1192 97 98 1194 1671 1672 6 1193 98 99 1195 1672 1673 6 1194 99 100 1196 1673 1674 6 1195 100 101 1197 1674 1675 6 1196 101 102 1198 1675 1676 6 1197 102 103 1199 1501 1676 6 1198 103 104 1200 1458 1501 6 1199 104 105 1201 1458 1459 6 1200 105 106 1202 1459 1460 6 1201 106 107 1203 1460 1461 6 1202 107 108 1204 1461 1686 6 1203 108 109 1205 1688 1686 6 1204 109 110 1206 1688 1689 6 1205 110 111 1207 1689 1690 6 1206 111 112 1208 1690 1691 6 1207 112 113 1209 1694 1691 6 1208 113 114 1210 1694 1695 6 1209 114 115 1211 1695 1696 6 1210 115 116 1212 1557 1696 6 1211 116 117 1213 1547 1557 6 1212 117 118 1214 1547 1548 6 1213 118 119 1215 1548 1549 6 1214 119 120 1216 1549 1550 6 1215 120 121 1217 1550 1551 6 1216 121 122 1218 1554 1551 6 1217 122 123 1219 1556 1554 6 1218 123 124 1220 1717 1556 6 1219 124 125 1221 1717 1718 6 1220 125 126 1222 1718 1719 6 1221 126 127 1223 1719 1720 6 1222 127 128 1224 1720 1721 6 1223 128 129 1225 1721 1722 6 1224 129 130 1226 1722 1723 6 1225 130 131 1227 1723 1724 6 1226 131 132 1228 1727 1724 6 1227 132 133 1229 1727 1728 6 1228 133 134 1230 1728 1729 6 1229 134 135 1231 1729 1730 6 1230 135 136 1232 1730 1731 6 1231 136 137 1233 1734 1731 6 1232 137 138 1234 1734 1735 6 1233 138 139 1235 1735 1736 6 1234 139 140 1236 1736 1737 6 1235 140 141 1237 1737 1738 6 1236 141 142 1238 1738 1739 6 1237 142 143 1239 1739 1740 6 1238 143 144 1240 1740 1741 6 1239 144 145 1241 1741 1742 6 1240 145 146 1242 1742 1743 6 1241 146 147 1243 1743 1744 7 1242 147 148 4 149 1244 1744 5 1243 149 150 1245 1744 6 1244 150 151 1246 1744 1745 6 1245 151 152 1247 1745 1746 6 1246 152 153 1248 1746 1747 6 1247 153 154 1249 1747 1748 6 1248 154 155 924 1250 1748 6 1249 924 1251 1748 1749 1750 6 1250 924 925 1252 1750 1751 6 1251 925 926 1253 1751 1752 6 1252 926 927 1254 1752 1753 6 1253 927 928 1255 1753 1754 6 1254 928 929 1256 1754 1755 6 1255 929 930 1257 1755 1756 6 1256 930 931 1258 1756 1757 6 1257 931 932 933 1259 1757 6 1258 933 1260 1757 1758 1759 6 1259 933 934 1261 1759 1760 6 1260 934 935 1262 1760 1761 6 1261 935 936 1263 1761 1762 6 1262 936 937 1264 1762 1763 6 1263 937 938 1265 1763 1764 6 1264 938 939 1266 1764 1765 6 1265 939 940 1267 1765 1766 6 1266 940 941 1268 1766 1767 6 1267 941 942 1269 1767 1768 6 1268 942 943 1270 1768 1769 6 1269 943 944 1271 1769 1770 6 1270 944 945 1272 1770 1771 6 1271 945 946 1273 1771 1772 6 1272 946 947 1274 1772 1773 6 1273 947 948 1275 1773 1774 6 1274 948 949 1276 1774 1775 6 1275 949 950 1277 1775 1776 6 1276 950 951 1278 1776 1777 6 1277 951 952 1279 1777 1778 6 1278 952 953 1280 1778 1779 6 1279 953 954 1281 1779 1780 6 1280 954 955 1282 1780 1781 6 1281 955 956 1283 1781 1782 6 1282 956 957 1284 1782 1783 6 1283 957 958 1285 1783 1784 6 1284 958 959 1286 1784 1785 6 1285 959 960 1287 1785 1786 6 1286 960 961 1288 1786 1787 6 1287 961 962 1289 1787 1788 6 1288 962 963 1290 1788 1789 6 1289 963 964 1291 1789 1790 6 1290 964 965 1292 1790 1791 6 1291 965 966 1293 1791 1792 6 1292 966 967 1294 1792 1793 6 1293 967 968 1295 1793 1794 6 1294 968 969 1296 1794 1795 6 1295 969 970 1297 1795 1796 6 1296 970 971 1298 1796 1797 6 1297 971 972 1299 1797 1798 6 1298 972 973 1300 1798 1301 6 1299 973 974 975 976 1301 7 1300 976 977 1302 1798 1299 2101 6 1301 977 978 1303 2101 2102 6 1302 978 979 1304 2102 2103 6 1303 979 980 1305 2103 2104 6 1304 980 981 1306 2104 2105 6 1305 981 982 1307 2105 2106 6 1306 982 983 1308 2106 2107 6 1307 983 984 1309 1799 2107 6 1308 984 985 1310 1799 1800 6 1309 985 986 1311 1800 1801 6 1310 986 987 1312 1801 1802 6 1311 987 988 1313 1802 1803 6 1312 988 989 1314 1803 1804 6 1313 989 990 1315 1804 1805 6 1314 990 991 1316 1805 1806 6 1315 991 992 1317 1806 1807 6 1316 992 993 1318 1807 1808 6 1317 993 994 1319 1808 1809 6 1318 994 995 1320 1809 1810 6 1319 995 996 1321 1810 1811 6 1320 996 997 1322 1811 1812 6 1321 997 998 1323 1812 1813 6 1322 998 999 1324 1813 1814 6 1323 999 1000 1325 1814 1815 6 1324 1000 1001 1326 1815 1816 6 1325 1001 1002 1327 1816 1817 6 1326 1002 1003 1328 1817 1818 6 1327 1003 1004 1329 1818 1819 6 1328 1004 1005 1330 1819 1820 6 1329 1005 1006 1331 1820 1821 6 1330 1006 1007 1332 1821 1822 6 1331 1007 1008 1333 1822 1823 6 1332 1008 1009 1334 1823 1824 6 1333 1009 1010 1335 1824 1825 6 1334 1010 1011 1336 1825 1826 6 1335 1011 1012 1337 1826 1827 6 1336 1012 1013 1015 1338 1827 6 1337 1015 1339 1827 1828 1829 6 1338 1015 1016 1340 1829 1830 6 1339 1016 1341 1830 1831 1832 6 1340 1016 1017 1018 1342 1832 6 1341 1018 1019 1343 1832 1833 6 1342 1019 1020 1344 1833 1834 6 1343 1020 1021 1345 1834 1835 6 1344 1021 1022 1346 1835 1836 6 1345 1022 1023 1347 1836 1837 6 1346 1023 1024 1025 1348 1837 6 1347 1025 1349 1837 1838 1839 6 1348 1025 1026 1350 1839 1840 6 1349 1026 1027 1351 1840 1841 6 1350 1027 1028 1352 1841 1842 6 1351 1028 1029 1353 1842 1843 6 1352 1029 1030 1354 1843 1844 6 1353 1030 1031 1355 1844 1845 6 1354 1031 1032 1356 1845 1846 6 1355 1032 1033 1357 1846 1847 6 1356 1033 1034 1358 1847 1848 6 1357 1034 1035 1359 1848 1849 6 1358 1035 1036 1360 1849 1850 6 1359 1036 1037 1361 1850 1851 6 1360 1037 1038 1362 1851 1852 6 1361 1038 1039 1363 1852 1853 6 1362 1039 1040 1364 1853 1854 6 1363 1040 1041 1365 1854 1855 6 1364 1041 1042 1366 1855 1856 6 1365 1042 1043 1367 1856 1857 6 1366 1043 1044 1368 1857 1858 6 1367 1044 1045 1369 1858 1859 6 1368 1045 1046 1370 1859 1860 6 1369 1046 1047 1371 1860 1861 6 1370 1047 1048 1372 1861 1862 6 1371 1048 1049 1373 1862 1863 6 1372 1049 1050 1374 1863 1864 6 1373 1050 1051 1375 1864 1865 6 1374 1051 1052 1376 1865 1866 6 1375 1052 1053 1377 1866 1867 6 1376 1053 1054 1378 1867 1868 6 1377 1054 1055 1379 1868 1869 6 1378 1055 1056 1380 1869 1870 6 1379 1056 1057 1381 1870 1871 6 1380 1057 1058 1382 1871 1872 6 1381 1058 1059 1383 1872 1873 6 1382 1059 1060 1384 1873 1874 6 1383 1060 1061 1385 1874 1875 6 1384 1061 1062 1386 1875 1876 6 1385 1062 1063 1387 1876 1877 6 1386 1063 1064 1388 1877 1878 6 1387 1064 1065 1389 1878 1879 6 1388 1065 1066 1390 1879 1880 6 1389 1066 1067 1391 1880 1881 6 1390 1067 1068 1392 1881 1882 6 1391 1068 1069 1393 1882 1883 6 1392 1069 1070 1394 1883 1884 6 1393 1070 1071 1395 1884 1885 6 1394 1071 1072 1396 1885 1886 6 1395 1072 1073 1397 1886 1887 6 1396 1073 1074 1398 1887 1888 6 1397 1074 1075 1399 1888 1889 6 1398 1075 1076 1400 1889 1890 6 1399 1076 1077 1401 1890 1891 6 1400 1077 1078 1402 1891 1892 6 1401 1078 1079 1403 1892 1893 6 1402 1079 1080 1404 1893 1894 6 1403 1080 1081 1405 1894 1895 6 1404 1081 1082 1406 1895 1896 6 1405 1082 1083 1407 1896 1897 6 1406 1083 1084 1408 1897 1898 6 1407 1084 1085 1409 1898 1899 6 1408 1085 1086 1410 1899 1900 6 1409 1086 1087 1411 1900 1901 6 1410 1087 1088 1412 1901 1902 6 1411 1088 1089 1413 1902 1903 6 1412 1089 1090 1414 1903 1904 6 1413 1090 1091 1415 1904 1905 6 1414 1091 1092 1416 1905 1906 6 1415 1092 1093 1417 1906 1907 6 1416 1093 1094 1418 1907 1908 6 1417 1094 1095 1419 1908 1909 6 1418 1095 1096 1420 1909 1910 6 1419 1096 1097 1421 1910 1911 6 1420 1097 1098 1422 1911 1912 6 1421 1098 1099 1423 1912 1913 6 1422 1099 1100 1424 1913 1914 6 1423 1100 1101 1425 1914 1915 6 1424 1101 1102 1426 1915 1916 6 1425 1102 1103 1427 1916 1917 6 1426 1103 1104 1428 1917 1918 6 1427 1104 1105 1429 1918 1919 6 1428 1105 1106 1430 1919 1920 6 1429 1106 1107 1431 1920 1921 6 1430 1107 1108 1432 1921 1922 6 1431 1108 1109 1433 1922 1923 6 1432 1109 1110 1434 1923 1924 6 1433 1110 1111 1435 1924 1925 6 1434 1111 1112 1436 1925 1926 6 1435 1112 1113 1437 1926 1927 6 1436 1113 1114 1116 1438 1927 6 1437 1116 1117 1118 1439 1927 6 1438 1118 1119 1440 1927 1928 6 1439 1119 1120 1441 1928 1929 6 1440 1120 1121 1442 1929 1930 6 1441 1121 1122 1443 1930 1931 6 1442 1122 1123 1444 1931 1932 6 1443 1123 1124 1445 1932 1933 6 1444 1124 1125 1446 1462 1933 6 1445 1125 1126 1447 1462 1463 6 1446 1126 1127 1448 1463 1464 6 1447 1127 1128 1449 1464 1465 6 1448 1128 1129 1450 1465 1466 6 1449 1129 1130 1131 1451 1466 6 1450 1131 1452 1466 1467 1468 6 1451 1131 1132 1453 1468 1469 6 1452 1132 1133 1454 1455 1469 6 1453 1133 1455 1456 1457 1134 6 1453 1454 1456 1469 1470 1471 6 1455 1454 1457 1471 1472 1473 6 1456 1454 1134 1473 1474 1153 6 1199 1200 1459 1501 1502 1680 6 1458 1200 1201 1460 1680 1681 6 1459 1201 1202 1461 1681 1682 6 1460 1202 1203 1682 1685 1686 6 1445 1446 1463 1933 1934 1935 6 1462 1446 1447 1464 1935 1936 6 1463 1447 1448 1465 1936 1937 6 1464 1448 1449 1466 1937 1938 6 1465 1449 1450 1451 1467 1938 6 1466 1451 1468 1938 1939 1940 6 1467 1451 1452 1469 1940 1941 6 1468 1452 1453 1455 1470 1941 6 1469 1455 1471 1941 1942 1943 6 1470 1455 1456 1472 1943 1944 6 1471 1456 1473 1944 1945 1946 6 1472 1456 1457 1474 1946 1947 6 1473 1457 1153 1154 1491 1947 7 77 3 1476 1609 1605 1610 1619 6 1475 3 78 1477 1621 1619 6 1476 78 79 1478 1621 1622 6 1477 79 80 1479 1622 1623 6 1478 80 81 1480 1631 1623 6 1479 81 82 1481 1631 1632 6 1480 82 83 1482 1632 1633 6 1481 83 84 1483 1636 1633 6 1482 84 85 1484 1486 1636 6 1483 85 86 1161 1485 1486 6 1484 1161 1486 1487 1488 1489 6 1484 1485 1487 1503 1636 1483 6 1486 1485 1488 1503 1504 1505 6 1487 1485 1489 1505 1506 1490 6 1488 1485 1161 1162 1175 1490 6 1489 1175 1177 1506 1488 1643 6 1474 1154 1155 1156 1492 1947 6 1491 1156 1493 1947 1948 1949 6 1492 1156 1157 1494 1949 1950 6 1493 1157 1158 1495 1496 1950 6 1494 1158 1496 1497 1498 1159 6 1494 1495 1497 1952 1950 1953 6 1496 1495 1498 1953 1531 1530 6 1497 1495 1159 1160 1499 1530 6 1145 1146 1500 1160 1498 1530 6 1499 1146 1147 1165 1528 1530 6 1198 1199 1458 1502 1676 1677 6 1501 1458 1677 1678 1679 1680 6 1486 1487 1504 1638 1635 1636 6 1503 1487 1505 1638 1639 1640 6 1504 1487 1488 1506 1640 1641 6 1505 1488 1490 1641 1642 1643 6 584 590 591 1508 1509 583 6 1507 591 1509 1510 1514 1515 6 1507 1508 1510 1511 1518 583 6 1509 1508 1511 1512 1513 1514 6 1509 1510 1512 1518 1519 1520 6 1511 1510 1513 1524 1520 1538 6 1512 1510 1514 1538 1539 1540 6 1513 1510 1508 1515 602 1540 6 1514 1508 602 600 592 591 6 578 579 582 1517 2475 577 6 1516 582 1518 1519 1522 2475 6 1517 582 583 1509 1511 1519 6 1518 1511 1520 1521 1522 1517 6 1519 1511 1521 1523 1524 1512 6 1519 1520 1522 912 911 1523 6 1519 1521 912 1517 2475 915 6 911 1521 1520 1524 909 910 6 1523 1520 1512 909 1537 1538 6 1173 1174 1526 3338 3339 4251 6 1525 1174 1527 3131 2206 4251 6 1526 1174 25 26 3131 9782 6 1500 1165 1529 1530 1531 1532 6 1528 1165 1166 1532 1533 1534 6 1498 1499 1500 1528 1531 1497 6 1530 1528 1532 1953 1497 1954 6 1531 1528 1529 1533 1954 1955 6 1532 1529 1534 1535 1955 1956 6 1533 1529 1535 1536 1167 1166 6 1533 1534 1536 1956 1957 1958 6 1535 1534 1167 1542 1961 1958 6 909 1524 1538 1543 1544 908 6 1537 1524 1512 1513 1539 1543 6 1538 1513 1540 1541 1546 1543 6 1539 1513 1514 602 603 1541 6 1540 603 1539 1583 1546 1584 6 1536 1167 1168 1961 1962 1963 6 1537 1538 1544 1545 1546 1539 6 1537 1543 1545 1563 1564 908 6 1544 1543 1546 1563 1581 1578 6 1545 1543 1539 1583 1581 1541 6 1212 1213 1548 1557 1558 1559 6 1547 1213 1214 1549 1562 1559 6 1548 1214 1215 1550 1711 1562 6 1549 1215 1216 1551 1552 1711 6 1550 1216 1552 1553 1554 1217 6 1550 1551 1553 1711 1712 1713 6 1552 1551 1554 1555 1713 1714 6 1553 1551 1555 1556 1218 1217 6 1553 1554 1556 1714 1715 1716 6 1555 1554 1218 1716 1717 1219 6 1211 1212 1547 1558 1696 1697 6 1557 1547 1559 1560 1697 1698 6 1558 1547 1560 1561 1562 1548 6 1558 1559 1561 1698 1699 1700 6 1560 1559 1562 1700 1701 1710 6 1561 1559 1548 1710 1711 1549 6 1544 1545 1564 1565 1577 1578 6 1544 1563 1565 906 908 907 6 1564 1563 906 1566 1567 1577 6 906 1565 1567 1568 2086 905 6 1566 1565 1568 1569 1570 1577 6 1566 1567 1569 2086 3767 3768 6 1568 1567 1570 1571 1572 3768 6 1569 1567 1571 1575 1576 1577 6 1569 1570 1572 1573 1574 1575 7 1569 1571 1573 3770 3768 6318 6320 5 1572 1571 1574 6320 6321 7 1573 1571 1575 6321 6362 6361 2476 6 1574 1571 1570 1576 1579 2476 6 1575 1570 1577 1578 1579 1580 6 1576 1570 1567 1565 1563 1578 6 1577 1563 1576 1580 1581 1545 6 1575 1576 1580 1587 1588 2476 6 1579 1576 1578 1581 1582 1587 6 1580 1578 1545 1582 1583 1546 6 1580 1581 1583 1585 1586 1587 6 1582 1581 1546 1541 1584 1585 6 1583 1541 1585 1603 604 603 6 1583 1584 1582 1586 1602 1603 6 1582 1585 1587 1592 1589 1602 6 1582 1586 1580 1579 1588 1589 6 1579 1587 1589 1590 2476 2477 6 1588 1587 1590 1591 1592 1586 6 1588 1589 1591 6355 6354 2477 6 1590 1589 1592 1593 1595 6355 6 1591 1589 1586 1593 1594 1602 6 1591 1592 1594 1595 1596 1597 6 1593 1592 1600 1597 1601 1602 6 1591 1593 1596 6359 6357 6355 6 1595 1593 1597 1598 3971 6359 6 1596 1593 1598 1599 1600 1594 6 1596 1597 1599 3971 3970 6557 6 1598 1597 1600 6557 6558 612 6 1599 1597 1594 1601 612 610 6 1600 1594 1602 1603 609 610 6 1601 1594 1592 1586 1585 1603 6 1601 1602 1585 1584 604 609 6 75 76 1605 429 1606 1609 5 1604 76 77 1609 1475 6 429 1604 1607 1608 1609 3520 6 429 1606 1608 2494 410 3517 6 1607 1606 3519 3517 1614 3520 7 1606 1604 1605 1475 1610 1611 3520 5 1609 1475 1611 1612 1619 6 1609 1610 1612 1613 1614 3520 6 1611 1610 1613 1617 1618 1619 6 1611 1612 1614 1615 1616 1617 7 1611 1613 1615 3519 1608 3520 3524 6 1614 1613 1616 3524 3525 3529 6 1615 1613 1617 3094 3545 3529 6 1616 1613 1612 1618 3094 3095 6 1617 1612 1619 1620 3095 1625 7 1618 1612 1620 1621 1476 1610 1475 6 1618 1619 1621 1622 1624 1625 5 1620 1619 1476 1477 1622 6 1621 1477 1478 1623 1624 1620 6 1622 1478 1624 1630 1631 1479 6 1622 1623 1620 1625 1626 1630 7 1620 1624 1626 1627 1618 3095 4368 6 1625 1624 1627 1628 1629 1630 5 1625 1626 1628 4377 4368 7 1627 1626 1629 4378 4377 2863 7216 6 1628 1626 1630 2862 1634 2863 6 1629 1626 1624 1623 1631 2862 6 1630 1623 1479 1480 1632 2862 6 1631 1480 1481 1633 1634 2862 6 1632 1481 1634 1635 1636 1482 7 1632 1633 1635 1637 2862 1629 2863 6 1634 1633 1636 1637 1638 1503 6 1635 1633 1482 1503 1486 1483 5 1634 1635 1638 2863 2864 7 1637 1635 1503 1504 1639 2864 2865 5 1638 1504 1640 2865 2866 6 1639 1504 1505 1641 2866 2867 6 1640 1505 1506 1642 2867 2868 6 1641 1506 1643 2480 2491 2868 6 1642 1506 1490 1177 1644 2480 6 1643 1177 1179 1181 1645 2480 6 1644 1181 1646 2480 2481 2482 6 1645 1181 1182 1647 2482 1651 6 1646 1182 1648 1649 1650 1651 6 1647 1182 1649 1656 3098 1183 6 1647 1648 1650 1654 1655 1656 6 1647 1649 1651 1652 1653 1654 6 1647 1650 1652 2482 1646 2496 6 1651 1650 1653 2496 2497 2498 6 1652 1650 1654 2498 2499 2500 6 1653 1650 1649 1655 2500 2501 6 1654 1649 1656 1657 2501 2502 6 1655 1649 1648 1657 1658 3098 6 1655 1656 1658 1659 2502 2813 6 1657 1656 1659 1660 2242 3098 6 1657 1658 1660 1661 1662 2813 6 1659 1658 1661 1190 1189 2242 6 1659 1660 1662 1663 1191 1190 6 1659 1661 1663 1664 1665 2813 6 1662 1661 1664 1671 1192 1191 6 1662 1663 1665 1666 1670 1671 6 1662 1664 1666 1667 2813 2812 6 1665 1664 1667 1668 1669 1670 6 1665 1666 1668 2812 2814 2815 6 1667 1666 1669 2815 2816 2817 6 1668 1666 1670 2817 2822 2823 6 1669 1666 1664 1671 1672 2823 6 1670 1664 1663 1192 1193 1672 6 1671 1193 1194 1673 2823 1670 6 1672 1194 1195 1674 2824 2823 6 1673 1195 1196 1675 3148 2824 6 1674 1196 1197 1676 3148 3413 6 1675 1197 1198 1501 1677 3413 6 1676 1501 1502 1678 3413 3414 6 1677 1502 1679 3414 3415 3416 6 1678 1502 1680 3416 5382 5383 6 1679 1502 1458 1459 1681 5382 6 1680 1459 1460 1682 1683 5382 6 1681 1460 1461 1683 1684 1685 6 1681 1682 1684 3775 5384 5382 6 1683 1682 1685 3775 3776 3777 6 1684 1682 1461 1686 1687 3777 6 1685 1461 1687 1688 1204 1203 6 1685 1686 1688 3777 3778 3782 6 1687 1686 1204 1205 1689 3782 6 1688 1205 1206 1690 3782 3783 6 1689 1206 1207 1691 1692 3783 6 1690 1207 1692 1693 1694 1208 6 1690 1691 1693 3783 3784 3785 6 1692 1691 1694 3785 3786 3787 6 1693 1691 1208 1209 1695 3787 6 1694 1209 1210 1696 3787 3417 6 1695 1210 1211 1557 1697 3417 6 1696 1557 1558 1698 3417 3418 6 1697 1558 1560 1699 3418 3419 6 1698 1560 1700 1704 2224 3419 6 1699 1560 1561 1701 1702 1704 6 1700 1561 1702 1703 1709 1710 6 1700 1701 1703 1704 1705 1706 6 1702 1701 1706 1707 1708 1709 6 1700 1702 1705 1699 2224 2225 6 1704 1702 1706 2225 2226 2227 6 1705 1702 1703 1707 2227 2228 6 1706 1703 1708 2228 2229 2230 6 1707 1703 1709 2230 2231 2232 6 1708 1703 1701 1710 1712 2232 6 1709 1701 1561 1562 1711 1712 6 1710 1562 1549 1550 1552 1712 6 1711 1552 1713 2232 1709 1710 6 1712 1552 1553 1714 2233 2232 6 1713 1553 1555 1715 2241 2233 6 1714 1555 1716 2241 2561 2565 6 1715 1555 1556 1717 2565 2566 6 1716 1556 1219 1220 1718 2566 6 1717 1220 1221 1719 2566 2567 6 1718 1221 1222 1720 2570 2567 6 1719 1222 1223 1721 3464 2570 6 1720 1223 1224 1722 3463 3464 6 1721 1224 1225 1723 3470 3463 6 1722 1225 1226 1724 1725 3470 6 1723 1226 1725 1726 1727 1227 6 1723 1724 1726 2173 3468 3470 6 1725 1724 1727 2173 2174 2175 6 1726 1724 1227 1228 1728 2175 6 1727 1228 1229 1729 2175 2176 6 1728 1229 1230 1730 2176 2177 6 1729 1230 1231 1731 1732 2177 6 1730 1231 1732 1733 1734 1232 6 1730 1731 1733 2179 2177 2809 6 1732 1731 1734 3405 2809 3406 6 1733 1731 1232 1233 1735 3406 6 1734 1233 1234 1736 3406 3407 6 1735 1234 1235 1737 3407 3408 6 1736 1235 1236 1738 3408 3409 6 1737 1236 1237 1739 3409 3410 6 1738 1237 1238 1740 3410 3411 6 1739 1238 1239 1741 3411 3412 6 1740 1239 1240 1742 3198 3412 6 1741 1240 1241 1743 3192 3198 6 1742 1241 1242 1744 3192 1745 6 1743 1242 1243 1244 1245 1745 7 1744 1245 1246 1746 3192 1743 3200 6 1745 1246 1247 1747 2894 3200 6 1746 1247 1248 1748 2752 2894 6 1747 1248 1249 1250 1749 2752 6 1748 1250 1750 2234 2752 2753 6 1749 1250 1251 1751 2234 2235 6 1750 1251 1252 1752 2238 2235 6 1751 1252 1253 1753 2248 2238 6 1752 1253 1254 1754 2248 2254 6 1753 1254 1255 1755 2254 2255 6 1754 1255 1256 1756 2255 2256 6 1755 1256 1257 1757 2256 2257 6 1756 1257 1258 1259 1758 2257 6 1757 1259 1759 2257 2258 2259 6 1758 1259 1260 1760 2259 2260 6 1759 1260 1261 1761 2260 2261 6 1760 1261 1262 1762 2261 2262 6 1761 1262 1263 1763 2262 2263 6 1762 1263 1264 1764 2263 2264 6 1763 1264 1265 1765 2264 2265 6 1764 1265 1266 1766 2265 2266 6 1765 1266 1267 1767 2266 2267 6 1766 1267 1268 1768 2267 2268 6 1767 1268 1269 1769 2268 2269 6 1768 1269 1270 1770 2269 2270 6 1769 1270 1271 1771 2270 2271 6 1770 1271 1272 1772 2271 2272 6 1771 1272 1273 1773 2272 2273 6 1772 1273 1274 1774 2273 2274 6 1773 1274 1275 1775 2274 2275 6 1774 1275 1276 1776 2275 2276 6 1775 1276 1277 1777 2276 2277 6 1776 1277 1278 1778 2277 2278 6 1777 1278 1279 1779 2278 2279 6 1778 1279 1280 1780 2279 2280 6 1779 1280 1281 1781 2280 2281 6 1780 1281 1282 1782 2281 2282 6 1781 1282 1283 1783 2282 2283 6 1782 1283 1284 1784 2283 2284 6 1783 1284 1285 1785 2284 2285 6 1784 1285 1286 1786 2285 2286 6 1785 1286 1287 1787 2286 2287 6 1786 1287 1288 1788 2287 2288 6 1787 1288 1289 1789 2288 2289 6 1788 1289 1290 1790 2289 2290 6 1789 1290 1291 1791 2290 2291 6 1790 1291 1292 1792 2291 2292 6 1791 1292 1293 1793 2292 2293 6 1792 1293 1294 1794 2293 2294 6 1793 1294 1295 1795 2294 2295 6 1794 1295 1296 1796 2295 2296 6 1795 1296 1297 1797 2099 2296 6 1796 1297 1298 1798 2099 2100 6 1797 1298 1299 1301 2100 2101 6 1308 1309 1800 2107 2108 2109 6 1799 1309 1310 1801 2109 2110 6 1800 1310 1311 1802 2110 2111 6 1801 1311 1312 1803 2111 2112 6 1802 1312 1313 1804 2112 2113 6 1803 1313 1314 1805 2113 2114 6 1804 1314 1315 1806 2114 2115 6 1805 1315 1316 1807 2115 2116 6 1806 1316 1317 1808 2116 2117 6 1807 1317 1318 1809 2117 2118 6 1808 1318 1319 1810 2118 2119 6 1809 1319 1320 1811 2119 2120 6 1810 1320 1321 1812 2120 2121 6 1811 1321 1322 1813 2121 2122 6 1812 1322 1323 1814 2122 2123 6 1813 1323 1324 1815 2123 2124 6 1814 1324 1325 1816 2124 2125 6 1815 1325 1326 1817 2125 2126 6 1816 1326 1327 1818 2126 2127 6 1817 1327 1328 1819 2127 2128 6 1818 1328 1329 1820 2128 2129 6 1819 1329 1330 1821 2129 2130 6 1820 1330 1331 1822 2130 2131 6 1821 1331 1332 1823 2131 2132 6 1822 1332 1333 1824 2132 2133 6 1823 1333 1334 1825 2133 2134 6 1824 1334 1335 1826 2134 2135 6 1825 1335 1336 1827 2135 2136 6 1826 1336 1337 1338 1828 2136 6 1827 1338 1829 2136 2137 2138 6 1828 1338 1339 1830 2138 2139 6 1829 1339 1340 1831 2139 2140 6 1830 1340 1832 2140 2141 2142 6 1831 1340 1341 1342 1833 2142 6 1832 1342 1343 1834 2142 2143 6 1833 1343 1344 1835 2143 2144 6 1834 1344 1345 1836 2144 2145 6 1835 1345 1346 1837 2145 2146 6 1836 1346 1347 1348 1838 2146 6 1837 1348 1839 2151 2146 2166 6 1838 1348 1349 1840 2166 2167 6 1839 1349 1350 1841 2167 2168 6 1840 1350 1351 1842 2168 2169 6 1841 1351 1352 1843 2172 2169 6 1842 1352 1353 1844 2350 2172 6 1843 1353 1354 1845 2350 2351 6 1844 1354 1355 1846 2351 2352 6 1845 1355 1356 1847 2352 2353 6 1846 1356 1357 1848 2353 2354 6 1847 1357 1358 1849 2354 2355 6 1848 1358 1359 1850 2355 2356 6 1849 1359 1360 1851 2356 2357 6 1850 1360 1361 1852 2357 2358 6 1851 1361 1362 1853 2358 2359 6 1852 1362 1363 1854 2359 2360 6 1853 1363 1364 1855 2360 2361 6 1854 1364 1365 1856 2361 2362 6 1855 1365 1366 1857 1967 2362 6 1856 1366 1367 1858 1967 1968 6 1857 1367 1368 1859 1968 1969 6 1858 1368 1369 1860 1969 1970 6 1859 1369 1370 1861 1970 1971 6 1860 1370 1371 1862 1971 1972 6 1861 1371 1372 1863 1972 1973 6 1862 1372 1373 1864 1973 1974 6 1863 1373 1374 1865 1974 1975 6 1864 1374 1375 1866 1975 1976 6 1865 1375 1376 1867 1976 1977 6 1866 1376 1377 1868 1977 1978 6 1867 1377 1378 1869 1978 1979 6 1868 1378 1379 1870 1979 1980 6 1869 1379 1380 1871 1980 1981 6 1870 1380 1381 1872 1981 1982 6 1871 1381 1382 1873 1982 1983 6 1872 1382 1383 1874 1983 1984 6 1873 1383 1384 1875 1984 1985 6 1874 1384 1385 1876 1985 1986 6 1875 1385 1386 1877 1986 1987 6 1876 1386 1387 1878 1987 1988 6 1877 1387 1388 1879 1988 1989 6 1878 1388 1389 1880 1989 1990 6 1879 1389 1390 1881 1990 1991 6 1880 1390 1391 1882 1991 1992 6 1881 1391 1392 1883 1992 1993 6 1882 1392 1393 1884 1993 1994 6 1883 1393 1394 1885 1994 1995 6 1884 1394 1395 1886 1995 1996 6 1885 1395 1396 1887 1996 1997 6 1886 1396 1397 1888 1997 1998 6 1887 1397 1398 1889 1998 1999 6 1888 1398 1399 1890 1999 2000 6 1889 1399 1400 1891 2000 2001 6 1890 1400 1401 1892 2001 2002 6 1891 1401 1402 1893 2002 2003 6 1892 1402 1403 1894 2003 2004 6 1893 1403 1404 1895 2004 2005 6 1894 1404 1405 1896 2005 2006 6 1895 1405 1406 1897 2006 2007 6 1896 1406 1407 1898 2007 2008 6 1897 1407 1408 1899 2008 2009 6 1898 1408 1409 1900 2009 2010 6 1899 1409 1410 1901 2010 2011 6 1900 1410 1411 1902 2011 2012 6 1901 1411 1412 1903 2012 2013 6 1902 1412 1413 1904 2013 2014 6 1903 1413 1414 1905 2014 2015 6 1904 1414 1415 1906 2015 2016 6 1905 1415 1416 1907 2016 2017 6 1906 1416 1417 1908 2017 2018 6 1907 1417 1418 1909 2018 2019 6 1908 1418 1419 1910 2019 2020 6 1909 1419 1420 1911 2020 2021 6 1910 1420 1421 1912 2021 2022 6 1911 1421 1422 1913 2022 2023 6 1912 1422 1423 1914 2023 2024 6 1913 1423 1424 1915 2024 2025 6 1914 1424 1425 1916 2025 2026 6 1915 1425 1426 1917 2026 2027 6 1916 1426 1427 1918 2027 2028 6 1917 1427 1428 1919 2028 2029 6 1918 1428 1429 1920 2029 2030 6 1919 1429 1430 1921 2030 2031 6 1920 1430 1431 1922 2031 2032 6 1921 1431 1432 1923 2032 2033 6 1922 1432 1433 1924 2033 2034 6 1923 1433 1434 1925 2034 2035 6 1924 1434 1435 1926 2035 2036 6 1925 1435 1436 1927 2036 1928 6 1926 1436 1437 1438 1439 1928 7 1927 1439 1440 1929 2036 1926 2037 6 1928 1440 1441 1930 2037 2038 6 1929 1441 1442 1931 2038 2039 6 1930 1442 1443 1932 2039 2040 6 1931 1443 1444 1933 2040 2041 7 1932 1444 1445 1462 1934 2041 2042 5 1933 1462 1935 2042 2043 6 1934 1462 1463 1936 2043 2044 6 1935 1463 1464 1937 2044 2045 6 1936 1464 1465 1938 2045 2046 6 1937 1465 1466 1467 1939 2046 6 1938 1467 1940 2046 2047 2048 6 1939 1467 1468 1941 2048 2049 6 1940 1468 1469 1470 1942 2049 6 1941 1470 1943 2049 2050 2051 6 1942 1470 1471 1944 2051 2052 6 1943 1471 1472 1945 2052 2053 6 1944 1472 1946 2053 2054 2055 6 1945 1472 1473 1947 2055 1948 6 1946 1473 1474 1491 1492 1948 6 1947 1492 1949 2055 1946 2056 6 1948 1492 1493 1950 1951 2056 6 1949 1493 1951 1952 1496 1494 6 1949 1950 1952 2056 2057 2058 6 1951 1950 1496 1953 2058 2059 6 1952 1496 1497 1531 1954 2059 6 1953 1531 1532 1955 2059 2060 6 1954 1532 1533 1956 2060 2061 6 1955 1533 1535 1957 2061 2062 6 1956 1535 1958 1959 2062 2063 6 1957 1535 1959 1960 1961 1536 6 1957 1958 1960 2063 2064 2065 6 1959 1958 1961 2065 2066 2067 6 1960 1958 1536 1542 1962 2067 6 1961 1542 1963 2067 2068 2069 6 1962 1542 1168 1169 1964 2069 6 1963 1169 1965 1966 2071 2069 6 1964 1169 1966 888 887 1170 6 1964 1965 888 2073 2071 2076 6 1856 1857 1968 2362 2363 2364 6 1967 1857 1858 1969 2364 2365 6 1968 1858 1859 1970 2365 2366 6 1969 1859 1860 1971 2366 2367 6 1970 1860 1861 1972 2367 2368 6 1971 1861 1862 1973 2368 2369 6 1972 1862 1863 1974 2369 2370 6 1973 1863 1864 1975 2370 2371 6 1974 1864 1865 1976 2371 2372 6 1975 1865 1866 1977 2372 2373 6 1976 1866 1867 1978 2373 2374 6 1977 1867 1868 1979 2374 2375 6 1978 1868 1869 1980 2375 2376 6 1979 1869 1870 1981 2376 2377 6 1980 1870 1871 1982 2377 2378 6 1981 1871 1872 1983 2378 2379 6 1982 1872 1873 1984 2379 2380 6 1983 1873 1874 1985 2380 2381 6 1984 1874 1875 1986 2381 2382 6 1985 1875 1876 1987 2382 2383 6 1986 1876 1877 1988 2383 2384 6 1987 1877 1878 1989 2384 2385 6 1988 1878 1879 1990 2385 2386 6 1989 1879 1880 1991 2386 2387 6 1990 1880 1881 1992 2387 2388 6 1991 1881 1882 1993 2388 2389 6 1992 1882 1883 1994 2389 2390 6 1993 1883 1884 1995 2390 2391 6 1994 1884 1885 1996 2391 2392 6 1995 1885 1886 1997 2392 2393 6 1996 1886 1887 1998 2393 2394 6 1997 1887 1888 1999 2394 2395 6 1998 1888 1889 2000 2395 2396 6 1999 1889 1890 2001 2396 2397 6 2000 1890 1891 2002 2397 2398 6 2001 1891 1892 2003 2398 2399 6 2002 1892 1893 2004 2399 2400 6 2003 1893 1894 2005 2400 2401 6 2004 1894 1895 2006 2401 2402 6 2005 1895 1896 2007 2402 2403 6 2006 1896 1897 2008 2403 2404 6 2007 1897 1898 2009 2404 2405 6 2008 1898 1899 2010 2405 2406 6 2009 1899 1900 2011 2406 2407 6 2010 1900 1901 2012 2407 2408 6 2011 1901 1902 2013 2408 2409 6 2012 1902 1903 2014 2409 2410 6 2013 1903 1904 2015 2410 2411 6 2014 1904 1905 2016 2411 2412 6 2015 1905 1906 2017 2412 2413 6 2016 1906 1907 2018 2413 2414 6 2017 1907 1908 2019 2414 2415 6 2018 1908 1909 2020 2415 2416 6 2019 1909 1910 2021 2416 2417 6 2020 1910 1911 2022 2417 2418 6 2021 1911 1912 2023 2418 2419 6 2022 1912 1913 2024 2419 2420 6 2023 1913 1914 2025 2420 2421 6 2024 1914 1915 2026 2421 2422 6 2025 1915 1916 2027 2422 2423 6 2026 1916 1917 2028 2423 2424 6 2027 1917 1918 2029 2424 2425 6 2028 1918 1919 2030 2425 2426 6 2029 1919 1920 2031 2426 2427 6 2030 1920 1921 2032 2427 2428 6 2031 1921 1922 2033 2428 2429 6 2032 1922 1923 2034 2429 2430 6 2033 1923 1924 2035 2430 2431 6 2034 1924 1925 2036 2431 2432 6 2035 1925 1926 1928 2037 2432 5 2036 1928 1929 2038 2432 6 2037 1929 1930 2039 2432 2433 6 2038 1930 1931 2040 2433 2434 6 2039 1931 1932 2041 2434 2435 7 2040 1932 1933 2042 2435 2436 2437 5 2041 1933 1934 2043 2437 7 2042 1934 1935 2044 2437 2438 2439 6 2043 1935 1936 2045 2439 2440 6 2044 1936 1937 2046 2440 2441 6 2045 1937 1938 1939 2047 2441 6 2046 1939 2048 2441 2442 2443 6 2047 1939 1940 2049 2443 2444 6 2048 1940 1941 1942 2050 2444 6 2049 1942 2051 2444 2445 2449 6 2050 1942 1943 2052 2449 2450 6 2051 1943 1944 2053 2450 2451 6 2052 1944 1945 2054 2451 2452 6 2053 1945 2055 2452 2453 2454 6 2054 1945 1946 1948 2056 2454 6 2055 1948 1949 1951 2057 2454 6 2056 1951 2058 2454 2455 2456 6 2057 1951 1952 2059 2456 2457 6 2058 1952 1953 1954 2060 2457 6 2059 1954 1955 2061 2457 2458 6 2060 1955 1956 2062 2458 2459 6 2061 1956 1957 2063 2459 2460 6 2062 1957 1959 2064 2460 2461 6 2063 1959 2065 2461 2462 2463 6 2064 1959 1960 2066 2463 2464 6 2065 1960 2067 2464 2465 2466 6 2066 1960 1961 1962 2068 2466 6 2067 1962 2069 2070 2466 2467 6 2068 1962 1963 2070 2071 1964 6 2068 2069 2071 2072 2467 2470 6 2070 2069 1964 2072 2073 1966 6 2070 2071 2073 2074 2470 2471 6 2072 2071 1966 2074 2075 2076 6 2072 2073 2075 2474 2471 2087 6 2074 2073 2076 2077 2079 2087 6 2075 2073 1966 888 889 2077 6 2076 889 890 2078 2079 2075 6 2077 890 2079 2080 2081 2082 6 2077 2078 2080 2075 2087 2088 6 2079 2078 2081 2097 2088 2083 6 2080 2078 2082 899 902 2083 6 2081 2078 890 891 895 899 6 2081 902 904 2084 2097 2080 6 2083 904 2085 2097 2096 9777 6 2084 904 905 2086 6094 9777 6 2085 905 1566 1568 3767 6094 6 2075 2079 2088 2089 2474 2074 6 2087 2079 2089 2090 2097 2080 6 2087 2088 2090 2091 2092 2474 6 2089 2088 2091 2095 2096 2097 6 2089 2090 2092 2093 2094 2095 6 2089 2091 2093 2490 2473 2474 6 2092 2091 2094 2490 5948 5949 6 2093 2091 2095 3136 5948 3133 6 2094 2091 2090 2096 3132 3133 6 2095 2090 2097 3132 2084 9777 6 2096 2090 2088 2080 2083 2084 6 632 404 634 651 650 405 6 1796 1797 2100 2296 2297 2298 6 2099 1797 1798 2101 2298 2102 5 2100 1798 1301 1302 2102 6 2101 1302 1303 2103 2298 2100 6 2102 1303 1304 2104 2298 2299 6 2103 1304 1305 2105 2299 2300 6 2104 1305 1306 2106 2300 2301 6 2105 1306 1307 2107 2301 2302 7 2106 1307 1308 1799 2108 2302 2303 5 2107 1799 2109 2303 2304 6 2108 1799 1800 2110 2304 2305 6 2109 1800 1801 2111 2305 2306 6 2110 1801 1802 2112 2306 2307 6 2111 1802 1803 2113 2307 2308 6 2112 1803 1804 2114 2308 2309 6 2113 1804 1805 2115 2309 2310 6 2114 1805 1806 2116 2310 2311 6 2115 1806 1807 2117 2311 2312 6 2116 1807 1808 2118 2312 2313 6 2117 1808 1809 2119 2313 2314 6 2118 1809 1810 2120 2314 2315 6 2119 1810 1811 2121 2315 2316 6 2120 1811 1812 2122 2316 2317 6 2121 1812 1813 2123 2317 2318 6 2122 1813 1814 2124 2318 2319 6 2123 1814 1815 2125 2319 2320 6 2124 1815 1816 2126 2320 2321 6 2125 1816 1817 2127 2321 2322 6 2126 1817 1818 2128 2322 2323 6 2127 1818 1819 2129 2323 2324 6 2128 1819 1820 2130 2324 2325 6 2129 1820 1821 2131 2325 2326 6 2130 1821 1822 2132 2326 2327 6 2131 1822 1823 2133 2327 2328 6 2132 1823 1824 2134 2152 2328 6 2133 1824 1825 2135 2152 2153 6 2134 1825 1826 2136 2153 2154 6 2135 1826 1827 1828 2137 2154 6 2136 1828 2138 2154 2155 2156 6 2137 1828 1829 2139 2156 2157 6 2138 1829 1830 2140 2157 2158 6 2139 1830 1831 2141 2158 2159 6 2140 1831 2142 2147 2159 2160 6 2141 1831 1832 1833 2143 2147 6 2142 1833 1834 2144 2147 2148 6 2143 1834 1835 2145 2148 2149 6 2144 1835 1836 2146 2149 2150 6 2145 1836 1837 2150 2151 1838 6 2141 2142 2143 2148 2160 2161 6 2147 2143 2144 2149 2161 2162 6 2148 2144 2145 2150 2162 2163 6 2149 2145 2146 2151 2163 2164 6 2150 2146 1838 2164 2165 2166 6 2133 2134 2153 2328 2329 2330 6 2152 2134 2135 2154 2330 2331 6 2153 2135 2136 2137 2155 2331 6 2154 2137 2156 2331 2332 2333 6 2155 2137 2138 2157 2333 2334 6 2156 2138 2139 2158 2334 2335 6 2157 2139 2140 2159 2335 2336 6 2158 2140 2141 2160 2336 2337 6 2159 2141 2147 2161 2337 2338 6 2160 2147 2148 2162 2338 2339 6 2161 2148 2149 2163 2339 2340 6 2162 2149 2150 2164 2340 2341 6 2163 2150 2151 2165 2341 2342 6 2164 2151 2166 2342 2343 2344 6 2165 2151 1838 1839 2167 2344 6 2166 1839 1840 2168 2344 2345 6 2167 1840 1841 2169 2170 2345 6 2168 1841 2170 2171 2172 1842 6 2168 2169 2171 2345 2346 2347 6 2170 2169 2172 2347 2348 2349 6 2171 2169 1842 2349 2350 1843 6 1725 1726 2174 3469 3468 4748 6 2173 1726 2175 2805 3396 4748 6 2174 1726 1727 1728 2176 2805 6 2175 1728 1729 2177 2178 2805 6 2176 1729 2178 2179 1732 1730 6 2176 2177 2179 2805 2806 2807 6 2178 2177 1732 2807 2808 2809 6 28 29 2181 2182 3852 3853 6 2180 29 30 2182 2183 2504 6 2180 2181 2183 2184 2200 3852 6 2182 2181 2184 2185 2503 2504 6 2182 2183 2185 2186 2199 2200 6 2184 2183 2186 2187 2194 2503 6 2184 2185 2187 2188 2198 2199 6 2186 2185 2188 2189 2193 2194 6 2186 2187 2189 2190 2198 9714 6 2188 2187 2190 2191 2192 2193 7 2188 2189 2191 9710 9709 9713 9714 5 2190 2189 2192 9711 9710 6 2191 2189 2193 2511 2513 9711 6 2192 2189 2187 2194 2511 2507 6 2193 2187 2185 2503 2505 2507 6 416 40 41 2196 9705 6489 6 2195 41 42 2197 6489 9706 7 2196 42 43 9706 44 9772 9774 6 2186 2188 2199 9714 9715 9721 6 2186 2198 2184 2200 2201 9721 6 2184 2199 2201 2202 2182 3852 6 2200 2199 2202 2203 9721 2218 6 2200 2201 2203 2204 3130 3852 6 2202 2201 2204 2205 2218 2209 6 2202 2203 2205 2206 3130 3131 6 2204 2203 2206 2207 2208 2209 6 2204 2205 2207 3131 1526 4251 6 2206 2205 2208 3344 3342 4251 6 2207 2205 2209 2210 3344 3345 6 2208 2205 2210 2211 2218 2203 6 2208 2209 2211 2212 3345 3346 6 2210 2209 2212 2213 2217 2218 6 2210 2211 2213 2214 3349 3346 6 2212 2211 2214 2215 2216 2217 6 2212 2213 2215 6523 6524 3349 6 2214 2213 2216 9717 9720 6523 6 2215 2213 2217 9717 9716 9715 6 2216 2213 2211 2218 9715 9721 6 2217 2211 2209 2203 9721 2201 6 409 60 61 2220 2546 2547 6 2219 61 62 2221 2550 2547 6 2220 62 63 2222 2550 2552 6 2221 63 64 2223 2552 6703 6 2222 64 6702 6701 6703 65 6 1699 1704 2225 3419 3420 3421 6 2224 1704 1705 2226 3421 3422 6 2225 1705 2227 3422 3423 3427 6 2226 1705 1706 2228 3427 3428 6 2227 1706 1707 2229 3428 3429 6 2228 1707 2230 3429 3430 3431 6 2229 1707 1708 2231 2239 3431 6 2230 1708 2232 2233 2239 2240 6 2231 1708 2233 1713 1712 1709 6 2231 2232 1713 2240 2241 1714 6 1749 1750 2235 2236 2243 2753 6 2234 1750 2236 2237 2238 1751 6 2234 2235 2237 2243 2244 2245 6 2236 2235 2238 2245 2246 2247 6 2237 2235 1751 2247 2248 1752 6 2230 2231 2240 3431 3432 3436 6 2239 2231 2233 2241 3436 2562 6 2240 2233 1714 1715 2561 2562 6 1188 1189 1660 1658 3098 1185 6 2234 2236 2244 2753 2754 2755 6 2243 2236 2245 2755 2756 2757 6 2244 2236 2237 2246 2757 2758 6 2245 2237 2247 2758 2759 2760 6 2246 2237 2238 2248 2760 2761 6 2247 2238 1752 1753 2254 2761 6 35 36 2250 3332 3333 3334 6 2249 36 37 2251 3337 3334 6 2250 37 38 417 2252 3337 7 2251 417 2253 6491 6492 9707 3337 5 2252 417 416 6491 9705 6 2248 1753 1754 2255 2761 2762 6 2254 1754 1755 2256 2762 2763 6 2255 1755 1756 2257 2763 2764 6 2256 1756 1757 1758 2258 2764 6 2257 1758 2259 2764 2765 2766 6 2258 1758 1759 2260 2766 2767 6 2259 1759 1760 2261 2767 2768 6 2260 1760 1761 2262 2768 2769 6 2261 1761 1762 2263 2769 2770 6 2262 1762 1763 2264 2572 2770 6 2263 1763 1764 2265 2572 2573 6 2264 1764 1765 2266 2573 2574 6 2265 1765 1766 2267 2574 2575 6 2266 1766 1767 2268 2575 2576 6 2267 1767 1768 2269 2576 2577 6 2268 1768 1769 2270 2577 2578 6 2269 1769 1770 2271 2578 2579 6 2270 1770 1771 2272 2579 2580 6 2271 1771 1772 2273 2580 2581 6 2272 1772 1773 2274 2581 2582 6 2273 1773 1774 2275 2582 2583 6 2274 1774 1775 2276 2583 2584 6 2275 1775 1776 2277 2584 2585 6 2276 1776 1777 2278 2585 2586 6 2277 1777 1778 2279 2586 2587 6 2278 1778 1779 2280 2587 2588 6 2279 1779 1780 2281 2588 2589 6 2280 1780 1781 2282 2589 2590 6 2281 1781 1782 2283 2590 2591 6 2282 1782 1783 2284 2591 2592 6 2283 1783 1784 2285 2592 2593 6 2284 1784 1785 2286 2593 2594 6 2285 1785 1786 2287 2594 2595 6 2286 1786 1787 2288 2595 2596 6 2287 1787 1788 2289 2596 2597 6 2288 1788 1789 2290 2597 2598 6 2289 1789 1790 2291 2598 2599 6 2290 1790 1791 2292 2599 2600 6 2291 1791 1792 2293 2600 2601 6 2292 1792 1793 2294 2601 2602 6 2293 1793 1794 2295 2602 2603 6 2294 1794 1795 2296 2603 2604 6 2295 1795 1796 2099 2297 2604 6 2296 2099 2298 2604 2605 2606 7 2297 2099 2100 2102 2103 2299 2606 6 2298 2103 2104 2300 2606 2607 6 2299 2104 2105 2301 2607 2608 6 2300 2105 2106 2302 2608 2609 6 2301 2106 2107 2303 2609 2610 6 2302 2107 2108 2304 2610 2611 6 2303 2108 2109 2305 2611 2612 6 2304 2109 2110 2306 2612 2613 6 2305 2110 2111 2307 2613 2614 6 2306 2111 2112 2308 2614 2615 6 2307 2112 2113 2309 2615 2616 6 2308 2113 2114 2310 2616 2617 6 2309 2114 2115 2311 2620 2617 6 2310 2115 2116 2312 2620 2621 6 2311 2116 2117 2313 2621 2622 6 2312 2117 2118 2314 2622 2623 6 2313 2118 2119 2315 2623 2624 6 2314 2119 2120 2316 2624 2625 6 2315 2120 2121 2317 2625 2626 6 2316 2121 2122 2318 2626 2627 6 2317 2122 2123 2319 2627 2628 6 2318 2123 2124 2320 2628 2629 6 2319 2124 2125 2321 2629 2630 6 2320 2125 2126 2322 2630 2631 6 2321 2126 2127 2323 2631 2632 6 2322 2127 2128 2324 2632 2633 6 2323 2128 2129 2325 2633 2634 6 2324 2129 2130 2326 2634 2635 6 2325 2130 2131 2327 2635 2636 6 2326 2131 2132 2328 2636 2637 6 2327 2132 2133 2152 2329 2637 6 2328 2152 2330 2637 2638 2639 6 2329 2152 2153 2331 2642 2639 6 2330 2153 2154 2155 2332 2642 6 2331 2155 2333 2643 2642 2644 6 2332 2155 2156 2334 2644 2645 6 2333 2156 2157 2335 2645 2646 6 2334 2157 2158 2336 2646 2647 6 2335 2158 2159 2337 2647 2648 6 2336 2159 2160 2338 2648 2649 6 2337 2160 2161 2339 2649 2650 6 2338 2161 2162 2340 2650 2651 6 2339 2162 2163 2341 2651 2652 6 2340 2163 2164 2342 2652 2653 6 2341 2164 2165 2343 2653 2654 6 2342 2165 2344 2654 2655 2656 6 2343 2165 2166 2167 2345 2656 6 2344 2167 2168 2170 2346 2656 6 2345 2170 2347 2656 2657 2658 6 2346 2170 2171 2348 2658 2659 6 2347 2171 2349 2659 2660 2661 6 2348 2171 2172 2350 2661 2662 6 2349 2172 1843 1844 2351 2662 6 2350 1844 1845 2352 2662 2663 6 2351 1845 1846 2353 2663 2664 6 2352 1846 1847 2354 2664 2665 6 2353 1847 1848 2355 2665 2666 6 2354 1848 1849 2356 2666 2667 6 2355 1849 1850 2357 2667 2668 6 2356 1850 1851 2358 2668 2669 6 2357 1851 1852 2359 2669 2670 6 2358 1852 1853 2360 2670 2671 6 2359 1853 1854 2361 2671 2672 6 2360 1854 1855 2362 2672 2673 6 2361 1855 1856 1967 2363 2673 6 2362 1967 2364 2673 2674 2675 6 2363 1967 1968 2365 2675 2676 6 2364 1968 1969 2366 2676 2677 6 2365 1969 1970 2367 2677 2678 6 2366 1970 1971 2368 2678 2679 6 2367 1971 1972 2369 2679 2680 6 2368 1972 1973 2370 2680 2681 6 2369 1973 1974 2371 2681 2682 6 2370 1974 1975 2372 2682 2683 6 2371 1975 1976 2373 2683 2684 6 2372 1976 1977 2374 2684 2685 6 2373 1977 1978 2375 2685 2686 6 2374 1978 1979 2376 2686 2687 6 2375 1979 1980 2377 2687 2688 6 2376 1980 1981 2378 2688 2689 6 2377 1981 1982 2379 2689 2690 6 2378 1982 1983 2380 2690 2691 6 2379 1983 1984 2381 2691 2692 6 2380 1984 1985 2382 2692 2693 6 2381 1985 1986 2383 2693 2694 6 2382 1986 1987 2384 2694 2695 6 2383 1987 1988 2385 2695 2696 6 2384 1988 1989 2386 2696 2697 6 2385 1989 1990 2387 2697 2698 6 2386 1990 1991 2388 2698 2699 6 2387 1991 1992 2389 2699 2700 6 2388 1992 1993 2390 2700 2701 6 2389 1993 1994 2391 2701 2702 6 2390 1994 1995 2392 2702 2703 6 2391 1995 1996 2393 2703 2704 6 2392 1996 1997 2394 2704 2705 6 2393 1997 1998 2395 2705 2706 6 2394 1998 1999 2396 2706 2707 6 2395 1999 2000 2397 2707 2708 6 2396 2000 2001 2398 2708 2709 6 2397 2001 2002 2399 2709 2710 6 2398 2002 2003 2400 2514 2710 6 2399 2003 2004 2401 2514 2515 6 2400 2004 2005 2402 2515 2516 6 2401 2005 2006 2403 2516 2517 6 2402 2006 2007 2404 2517 2518 6 2403 2007 2008 2405 2518 2519 6 2404 2008 2009 2406 2519 2520 6 2405 2009 2010 2407 2520 2521 6 2406 2010 2011 2408 2521 2522 6 2407 2011 2012 2409 2522 2523 6 2408 2012 2013 2410 2523 2524 6 2409 2013 2014 2411 2524 2525 6 2410 2014 2015 2412 2525 2526 6 2411 2015 2016 2413 2526 2527 6 2412 2016 2017 2414 2527 2528 6 2413 2017 2018 2415 2528 2529 6 2414 2018 2019 2416 2529 2530 6 2415 2019 2020 2417 2530 2531 6 2416 2020 2021 2418 2531 2532 6 2417 2021 2022 2419 2532 2533 6 2418 2022 2023 2420 2533 2534 6 2419 2023 2024 2421 2534 2535 6 2420 2024 2025 2422 2535 2536 6 2421 2025 2026 2423 2536 2537 6 2422 2026 2027 2424 2537 2538 6 2423 2027 2028 2425 2538 2539 6 2424 2028 2029 2426 2539 2540 6 2425 2029 2030 2427 2540 2541 6 2426 2030 2031 2428 2541 2542 6 2427 2031 2032 2429 2542 2543 6 2428 2032 2033 2430 2543 2544 6 2429 2033 2034 2431 2544 2545 6 2430 2034 2035 2432 2545 2433 6 2431 2035 2036 2037 2038 2433 7 2432 2038 2039 2434 2545 2431 2557 6 2433 2039 2040 2435 2557 2558 6 2434 2040 2041 2436 2558 2559 6 2435 2041 2437 2559 2560 2438 5 2436 2041 2042 2043 2438 6 2437 2043 2439 2560 2436 2746 6 2438 2043 2044 2440 2746 2747 7 2439 2044 2045 2441 2747 2748 2749 6 2440 2045 2046 2047 2442 2749 6 2441 2047 2443 2749 2750 2751 6 2442 2047 2048 2444 2751 2446 6 2443 2048 2049 2050 2445 2446 6 2444 2050 2446 2447 2448 2449 6 2444 2445 2447 2751 2443 3061 6 2446 2445 2448 3061 3062 3063 6 2447 2445 2449 3063 3064 3065 6 2448 2445 2050 2051 2450 3065 6 2449 2051 2052 2451 3065 3066 6 2450 2052 2053 2452 3066 3067 6 2451 2053 2054 2453 3067 3068 6 2452 2054 2454 3068 3069 2455 6 2453 2054 2055 2056 2057 2455 6 2454 2057 2456 3069 2453 3075 6 2455 2057 2058 2457 3075 3076 6 2456 2058 2059 2060 2458 3076 6 2457 2060 2061 2459 3076 3077 6 2458 2061 2062 2460 3077 3078 6 2459 2062 2063 2461 3078 3079 6 2460 2063 2064 2462 3079 3080 6 2461 2064 2463 3080 3081 3082 6 2462 2064 2065 2464 3082 3083 6 2463 2065 2066 2465 3083 3084 6 2464 2066 2466 2468 2483 3084 6 2465 2066 2067 2068 2467 2468 6 2466 2068 2070 2468 2469 2470 6 2466 2467 2469 2465 2483 2484 6 2468 2467 2470 2472 2478 2484 6 2469 2467 2070 2072 2471 2472 6 2470 2072 2472 2473 2474 2074 6 2470 2471 2473 2469 2478 2479 6 2472 2471 2474 2490 2479 2092 6 2473 2471 2074 2092 2089 2087 6 1517 1522 915 916 577 1516 6 1579 1588 2477 1575 6362 1574 6 2476 1588 1590 6354 6360 6362 6 2469 2472 2479 2484 2485 2486 6 2478 2472 2486 2489 2490 2473 6 1643 1644 1645 2481 1642 2491 6 2480 1645 2482 2491 2495 2870 6 2481 1645 1646 1651 2495 2496 6 2465 2468 2484 3086 3084 3927 6 2483 2468 2469 2478 2485 3927 6 2484 2478 2486 2487 3927 3151 6 2485 2478 2479 2487 2488 2489 6 2485 2486 2488 3149 3150 3151 6 2487 2486 2489 3149 3968 3162 6 2488 2486 2479 2490 5949 3968 6 2489 2479 2473 2092 2093 5949 6 1642 2480 2481 2868 2869 2870 6 71 72 2493 3437 3438 3442 6 2492 72 73 410 2494 3437 6 2493 410 1607 3516 3437 3517 6 2481 2482 2496 2870 2871 2872 6 2495 2482 1651 1652 2497 2872 6 2496 1652 2498 2872 2873 2883 6 2497 1652 1653 2499 2883 2884 6 2498 1653 2500 2884 4093 4094 6 2499 1653 1654 2501 2810 4094 6 2500 1654 1655 2502 2810 2811 6 2501 1655 1657 2811 2812 2813 6 2185 2183 2504 2194 2505 2506 6 2503 2183 31 2506 30 2181 6 2194 2503 2506 2507 2508 2509 6 2505 2503 2509 32 31 2504 6 2194 2505 2508 2510 2511 2193 6 2507 2505 2509 2510 3331 3881 6 2508 2505 2506 32 3331 33 6 2507 2508 2511 2512 3881 3882 6 2507 2510 2512 2513 2192 2193 6 2511 2510 2513 6500 6499 3882 6 2511 2512 2192 6499 6501 9711 6 2399 2400 2515 2710 2711 2712 6 2514 2400 2401 2516 2712 2713 6 2515 2401 2402 2517 2713 2714 6 2516 2402 2403 2518 2714 2715 6 2517 2403 2404 2519 2715 2716 6 2518 2404 2405 2520 2716 2717 6 2519 2405 2406 2521 2717 2718 6 2520 2406 2407 2522 2718 2719 6 2521 2407 2408 2523 2719 2720 6 2522 2408 2409 2524 2720 2721 6 2523 2409 2410 2525 2721 2722 6 2524 2410 2411 2526 2722 2723 6 2525 2411 2412 2527 2723 2724 6 2526 2412 2413 2528 2724 2725 6 2527 2413 2414 2529 2725 2726 6 2528 2414 2415 2530 2726 2727 6 2529 2415 2416 2531 2727 2728 6 2530 2416 2417 2532 2728 2729 6 2531 2417 2418 2533 2729 2730 6 2532 2418 2419 2534 2730 2731 6 2533 2419 2420 2535 2731 2732 6 2534 2420 2421 2536 2732 2733 6 2535 2421 2422 2537 2733 2734 6 2536 2422 2423 2538 2734 2735 6 2537 2423 2424 2539 2735 2736 6 2538 2424 2425 2540 2736 2737 6 2539 2425 2426 2541 2737 2738 6 2540 2426 2427 2542 2553 2738 6 2541 2427 2428 2543 2553 2554 6 2542 2428 2429 2544 2554 2555 6 2543 2429 2430 2545 2555 2556 6 2544 2430 2431 2433 2556 2557 6 409 2219 2547 2548 2842 2843 6 2546 2219 2548 2549 2550 2220 6 2546 2547 2549 2843 2846 2847 6 2548 2547 2550 2551 2858 2847 6 2549 2547 2220 2221 2551 2552 6 2549 2550 2552 6692 2857 2858 7 2551 2550 2221 2222 6703 6691 6692 6 2541 2542 2554 2738 2739 2740 6 2553 2542 2543 2555 2740 2741 6 2554 2543 2544 2556 2571 2741 6 2555 2544 2545 2557 2571 2558 5 2556 2545 2433 2434 2558 7 2557 2434 2435 2559 2571 2556 2743 5 2558 2435 2436 2560 2743 7 2559 2436 2438 2743 2744 2745 2746 6 2241 1715 2562 2563 2564 2565 6 2241 2561 2563 3436 2240 3447 6 2562 2561 2564 3447 3448 3449 6 2563 2561 2565 3449 3450 2568 6 2564 2561 1715 1716 2566 2568 6 2565 1716 1717 1718 2567 2568 6 2566 1718 2568 2569 2570 1719 6 2566 2567 2569 3450 2564 2565 6 2568 2567 2570 3459 3456 3450 6 2569 2567 1719 3464 3459 1720 6 2555 2556 2558 2741 2742 2743 6 2263 2264 2573 2770 2771 2772 6 2572 2264 2265 2574 2772 2773 6 2573 2265 2266 2575 2773 2774 6 2574 2266 2267 2576 2774 2775 6 2575 2267 2268 2577 2775 2776 6 2576 2268 2269 2578 2776 2777 6 2577 2269 2270 2579 2777 2778 6 2578 2270 2271 2580 2778 2779 6 2579 2271 2272 2581 2779 2780 6 2580 2272 2273 2582 2780 2781 6 2581 2273 2274 2583 2781 2782 6 2582 2274 2275 2584 2782 2783 6 2583 2275 2276 2585 2783 2784 6 2584 2276 2277 2586 2784 2785 6 2585 2277 2278 2587 2785 2786 6 2586 2278 2279 2588 2786 2787 6 2587 2279 2280 2589 2787 2788 6 2588 2280 2281 2590 2788 2789 6 2589 2281 2282 2591 2789 2790 6 2590 2282 2283 2592 2790 2791 6 2591 2283 2284 2593 2791 2792 6 2592 2284 2285 2594 2792 2793 6 2593 2285 2286 2595 2793 2794 6 2594 2286 2287 2596 2794 2795 6 2595 2287 2288 2597 2795 2796 6 2596 2288 2289 2598 2796 2797 6 2597 2289 2290 2599 2797 2798 6 2598 2290 2291 2600 2798 2799 6 2599 2291 2292 2601 2799 2800 6 2600 2292 2293 2602 2800 2801 6 2601 2293 2294 2603 2801 2802 6 2602 2294 2295 2604 2802 2803 6 2603 2295 2296 2297 2605 2803 6 2604 2297 2606 2803 2804 2607 5 2605 2297 2298 2299 2607 7 2606 2299 2300 2608 2804 2605 2827 5 2607 2300 2301 2609 2827 7 2608 2301 2302 2610 2827 2828 2829 6 2609 2302 2303 2611 2829 2830 6 2610 2303 2304 2612 2830 2831 6 2611 2304 2305 2613 2831 2832 6 2612 2305 2306 2614 2832 2833 6 2613 2306 2307 2615 2833 2834 6 2614 2307 2308 2616 2834 2835 6 2615 2308 2309 2617 2618 2835 6 2616 2309 2618 2619 2620 2310 6 2616 2617 2619 2835 2836 2837 6 2618 2617 2620 2837 2838 2839 6 2619 2617 2310 2311 2621 2839 6 2620 2311 2312 2622 2841 2839 6 2621 2312 2313 2623 2960 2841 6 2622 2313 2314 2624 2960 2961 6 2623 2314 2315 2625 2961 2962 6 2624 2315 2316 2626 2962 2963 6 2625 2316 2317 2627 2963 2964 6 2626 2317 2318 2628 2967 2964 6 2627 2318 2319 2629 2967 2968 6 2628 2319 2320 2630 2968 2969 6 2629 2320 2321 2631 2969 2970 6 2630 2321 2322 2632 2970 2971 6 2631 2322 2323 2633 2971 2972 6 2632 2323 2324 2634 2972 2973 6 2633 2324 2325 2635 2973 2974 6 2634 2325 2326 2636 2974 2975 6 2635 2326 2327 2637 2975 2976 6 2636 2327 2328 2329 2638 2976 6 2637 2329 2639 2640 2976 2977 6 2638 2329 2640 2641 2642 2330 6 2638 2639 2641 2977 2978 2979 6 2640 2639 2642 2643 2979 2980 6 2641 2639 2643 2332 2331 2330 6 2641 2642 2332 2644 2980 2981 6 2643 2332 2333 2645 2981 2982 6 2644 2333 2334 2646 2982 2983 6 2645 2334 2335 2647 2983 2984 6 2646 2335 2336 2648 2984 2985 6 2647 2336 2337 2649 2985 2986 6 2648 2337 2338 2650 2986 2987 6 2649 2338 2339 2651 2987 2988 6 2650 2339 2340 2652 2988 2989 6 2651 2340 2341 2653 2989 2990 6 2652 2341 2342 2654 2990 2991 6 2653 2342 2343 2655 2991 2992 6 2654 2343 2656 2992 2993 2657 6 2655 2343 2344 2345 2346 2657 6 2656 2346 2658 2993 2655 2994 6 2657 2346 2347 2659 2994 2995 6 2658 2347 2348 2660 2995 2996 6 2659 2348 2661 2996 2997 2998 6 2660 2348 2349 2662 2998 2999 6 2661 2349 2350 2351 2663 2999 6 2662 2351 2352 2664 2999 3000 6 2663 2352 2353 2665 3000 3001 6 2664 2353 2354 2666 3001 3002 6 2665 2354 2355 2667 3002 3003 6 2666 2355 2356 2668 3003 3566 6 2667 2356 2357 2669 3566 3567 6 2668 2357 2358 2670 3567 3568 6 2669 2358 2359 2671 3568 3569 6 2670 2359 2360 2672 3569 3570 6 2671 2360 2361 2673 3570 3571 6 2672 2361 2362 2363 2674 3571 6 2673 2363 2675 3571 3572 3573 6 2674 2363 2364 2676 3573 3574 6 2675 2364 2365 2677 3392 3574 6 2676 2365 2366 2678 3392 3393 6 2677 2366 2367 2679 3393 3394 6 2678 2367 2368 2680 3394 3395 6 2679 2368 2369 2681 3395 3580 6 2680 2369 2370 2682 3580 3581 6 2681 2370 2371 2683 3581 3582 6 2682 2371 2372 2684 3582 3583 6 2683 2372 2373 2685 3583 3584 6 2684 2373 2374 2686 3584 3585 6 2685 2374 2375 2687 3585 3586 6 2686 2375 2376 2688 3586 3587 6 2687 2376 2377 2689 3587 3588 6 2688 2377 2378 2690 3588 3589 6 2689 2378 2379 2691 3279 3589 6 2690 2379 2380 2692 3279 3280 6 2691 2380 2381 2693 3280 3281 6 2692 2381 2382 2694 3281 3282 6 2693 2382 2383 2695 3282 3283 6 2694 2383 2384 2696 3283 3284 6 2695 2384 2385 2697 3284 3285 6 2696 2385 2386 2698 3285 3286 6 2697 2386 2387 2699 3286 3287 6 2698 2387 2388 2700 3287 3288 6 2699 2388 2389 2701 3288 3289 6 2700 2389 2390 2702 3289 3290 6 2701 2390 2391 2703 3290 3291 6 2702 2391 2392 2704 3004 3291 6 2703 2392 2393 2705 3004 3005 6 2704 2393 2394 2706 3005 3006 6 2705 2394 2395 2707 3006 3007 6 2706 2395 2396 2708 3007 3008 6 2707 2396 2397 2709 3008 3009 6 2708 2397 2398 2710 3009 3010 6 2709 2398 2399 2514 2711 3010 6 2710 2514 2712 3010 3011 3012 6 2711 2514 2515 2713 3012 3013 6 2712 2515 2516 2714 3013 3014 6 2713 2516 2517 2715 3014 3015 6 2714 2517 2518 2716 3015 3016 6 2715 2518 2519 2717 3016 3017 6 2716 2519 2520 2718 3017 3018 6 2717 2520 2521 2719 3018 3019 6 2718 2521 2522 2720 3019 3020 6 2719 2522 2523 2721 3020 3021 6 2720 2523 2524 2722 3021 3022 6 2721 2524 2525 2723 3022 3023 6 2722 2525 2526 2724 3023 3024 6 2723 2526 2527 2725 3024 3025 6 2724 2527 2528 2726 3025 3026 6 2725 2528 2529 2727 3026 3027 6 2726 2529 2530 2728 3027 3028 6 2727 2530 2531 2729 3028 3029 6 2728 2531 2532 2730 3029 3030 6 2729 2532 2533 2731 3030 3031 6 2730 2533 2534 2732 3031 3032 6 2731 2534 2535 2733 3032 3033 6 2732 2535 2536 2734 3033 3034 6 2733 2536 2537 2735 3034 3035 6 2734 2537 2538 2736 3035 3036 6 2735 2538 2539 2737 3036 3037 6 2736 2539 2540 2738 3037 3038 6 2737 2540 2541 2553 2739 3038 6 2738 2553 2740 3038 3039 3040 6 2739 2553 2554 2741 3040 3041 6 2740 2554 2555 2571 2742 3041 6 2741 2571 2743 3041 3042 2744 6 2742 2571 2558 2559 2560 2744 6 2743 2560 2745 3042 2742 3050 5 2744 2560 2746 3050 3051 6 2745 2560 2438 2439 2747 3051 6 2746 2439 2440 2748 3051 3052 6 2747 2440 2749 3052 3053 2750 5 2748 2440 2441 2442 2750 6 2749 2442 2751 3053 2748 3059 7 2750 2442 2443 2446 3059 3060 3061 6 1747 1748 1749 2753 2894 2895 6 2752 1749 2234 2243 2754 2895 6 2753 2243 2755 2895 2896 2897 6 2754 2243 2244 2756 2897 2898 6 2755 2244 2757 2898 2899 2900 6 2756 2244 2245 2758 2900 2901 6 2757 2245 2246 2759 2901 2902 6 2758 2246 2760 2902 2903 2904 6 2759 2246 2247 2761 2904 2905 6 2760 2247 2248 2254 2762 2905 6 2761 2254 2255 2763 2905 2906 6 2762 2255 2256 2764 2906 2907 6 2763 2256 2257 2258 2765 2907 6 2764 2258 2766 2907 2908 2909 6 2765 2258 2259 2767 2909 2910 6 2766 2259 2260 2768 2910 2911 6 2767 2260 2261 2769 2911 2912 6 2768 2261 2262 2770 2912 2913 6 2769 2262 2263 2572 2771 2913 6 2770 2572 2772 2913 2914 2915 6 2771 2572 2573 2773 2915 2916 6 2772 2573 2574 2774 2916 2917 6 2773 2574 2575 2775 2917 2918 6 2774 2575 2576 2776 2918 2919 6 2775 2576 2577 2777 2919 2920 6 2776 2577 2578 2778 2920 2921 6 2777 2578 2579 2779 2921 2922 6 2778 2579 2580 2780 2922 2923 6 2779 2580 2581 2781 2923 2924 6 2780 2581 2582 2782 2924 2925 6 2781 2582 2583 2783 2925 2926 6 2782 2583 2584 2784 2926 2927 6 2783 2584 2585 2785 2927 2928 6 2784 2585 2586 2786 2928 2929 6 2785 2586 2587 2787 2929 2930 6 2786 2587 2588 2788 2930 2931 6 2787 2588 2589 2789 2931 2932 6 2788 2589 2590 2790 2932 2933 6 2789 2590 2591 2791 2933 2934 6 2790 2591 2592 2792 2934 2935 6 2791 2592 2593 2793 2935 2936 6 2792 2593 2594 2794 2936 2937 6 2793 2594 2595 2795 2937 2938 6 2794 2595 2596 2796 2938 2939 6 2795 2596 2597 2797 2939 2940 6 2796 2597 2598 2798 2940 2941 6 2797 2598 2599 2799 2941 2942 6 2798 2599 2600 2800 2942 2943 6 2799 2600 2601 2801 2943 2944 6 2800 2601 2602 2802 2944 2945 6 2801 2602 2603 2803 2945 2825 6 2802 2603 2604 2605 2804 2825 6 2803 2605 2607 2825 2826 2827 6 2174 2175 2176 2178 2806 3396 6 2805 2178 2807 3396 3397 3401 6 2806 2178 2179 2808 3401 3402 6 2807 2179 2809 3402 3403 3404 6 2808 2179 1732 3404 3405 1733 6 2500 2501 2811 4096 4094 4389 6 2810 2501 2502 2812 4389 2814 6 2811 2502 2813 1665 1667 2814 6 2812 2502 1657 1659 1662 1665 6 2812 1667 2815 3140 4389 2811 6 2814 1667 1668 2816 2818 3140 6 2815 1668 2817 2818 2819 2820 6 2816 1668 1669 2820 2821 2822 6 2815 2816 2819 3140 3141 3142 6 2818 2816 2820 3142 3143 3144 6 2819 2816 2817 2821 3144 3145 6 2820 2817 2822 3145 3146 3147 6 2821 2817 1669 2823 2824 3147 6 2822 1669 2824 1673 1672 1670 6 2822 2823 1673 3147 3148 1674 6 2803 2804 2826 2945 2802 2946 6 2825 2804 2827 2946 2947 2828 6 2826 2804 2607 2608 2609 2828 6 2827 2609 2829 2947 2826 2948 5 2828 2609 2610 2830 2948 6 2829 2610 2611 2831 2948 2949 6 2830 2611 2612 2832 2949 2950 6 2831 2612 2613 2833 2950 2951 6 2832 2613 2614 2834 2951 2952 6 2833 2614 2615 2835 2952 2953 7 2834 2615 2616 2618 2836 2953 2954 5 2835 2618 2837 2954 2955 6 2836 2618 2619 2838 2955 2956 6 2837 2619 2839 2840 2956 2957 6 2838 2619 2840 2841 2621 2620 6 2838 2839 2841 2957 2958 2959 6 2840 2839 2621 2959 2960 2622 6 409 2546 2843 2844 9691 430 6 2842 2546 2844 2845 2548 2846 6 2842 2843 2845 3169 9689 9691 6 2844 2843 3169 3166 3163 2846 6 2843 2548 2847 2848 3163 2845 6 2846 2548 2848 2849 2549 2858 6 2846 2847 2849 2850 3163 3164 6 2848 2847 2850 2851 2852 2858 6 2848 2849 2851 2853 2859 3164 6 2850 2849 2852 2853 2854 2855 6 2851 2849 2855 2856 2857 2858 6 2850 2851 2854 2859 2860 2861 5 2853 2851 2855 2861 6677 7 2854 2851 2852 2856 6677 6678 6679 7 2855 2852 2857 6690 6687 6681 6679 6 2856 2852 2858 6692 6690 2551 6 2857 2852 2849 2551 2549 2847 6 2850 2853 2860 3181 3164 6662 7 2859 2853 2861 6662 6675 6667 6663 6 2860 2853 2854 6676 6675 6677 5 1632 1634 1629 1630 1631 6 1629 1634 1637 2864 1628 7216 7 2863 1637 1638 2865 7217 7216 7218 5 2864 1638 1639 2866 7218 7 2865 1639 1640 2867 7218 7219 7220 7 2866 1640 1641 2868 3190 3215 7220 6 2867 1641 1642 2491 2869 3190 6 2868 2491 2870 3190 3191 3182 6 2869 2491 2481 2495 2871 3182 6 2870 2495 2872 2874 2885 3182 6 2871 2495 2496 2497 2873 2874 6 2872 2497 2874 2875 2882 2883 6 2872 2873 2875 2876 2871 2885 6 2874 2873 2876 2877 2881 2882 6 2874 2875 2877 2878 2885 2886 6 2876 2875 2878 2879 2880 2881 6 2876 2877 2879 2886 2887 2888 6 2878 2877 2880 2888 2889 2890 6 2879 2877 2881 2893 2890 7601 6 2880 2877 2875 2882 4087 7601 6 2881 2875 2873 2883 4087 4088 6 2882 2873 2497 2498 2884 4088 6 2883 2498 2499 4088 4089 4093 6 2871 2874 2876 2886 3182 3183 6 2885 2876 2878 2887 3183 3184 6 2886 2878 2888 3184 3185 3186 6 2887 2878 2879 2889 3189 3186 6 2888 2879 2890 2891 3960 3189 6 2889 2879 2891 2892 2893 2880 6 2889 2890 2892 3962 3960 7593 6 2891 2890 2893 7593 7594 7595 6 2892 2890 2880 7601 7598 7595 6 1746 1747 2752 2895 3200 3199 6 2894 2752 2753 2754 2896 3199 6 2895 2754 2897 3199 3201 3202 6 2896 2754 2755 2898 3202 3203 6 2897 2755 2756 2899 3203 3204 6 2898 2756 2900 3204 3205 3206 6 2899 2756 2757 2901 3206 3207 6 2900 2757 2758 2902 3207 3208 6 2901 2758 2759 2903 3208 3209 6 2902 2759 2904 3209 3210 3211 6 2903 2759 2760 2905 3214 3211 6 2904 2760 2761 2762 2906 3214 6 2905 2762 2763 2907 3484 3214 6 2906 2763 2764 2765 2908 3484 6 2907 2765 2909 3483 3213 3484 7 2908 2765 2766 2910 3501 3483 3698 6 2909 2766 2767 2911 3698 3699 6 2910 2767 2768 2912 3699 3700 6 2911 2768 2769 2913 3700 3701 6 2912 2769 2770 2771 2914 3701 6 2913 2771 2915 3701 3702 3703 6 2914 2771 2772 2916 3703 3704 6 2915 2772 2773 2917 3704 3705 6 2916 2773 2774 2918 3705 3706 6 2917 2774 2775 2919 3706 3707 6 2918 2775 2776 2920 3707 3708 6 2919 2776 2777 2921 3708 3709 6 2920 2777 2778 2922 3709 3710 6 2921 2778 2779 2923 3710 3711 6 2922 2779 2780 2924 3711 3712 6 2923 2780 2781 2925 3712 3713 6 2924 2781 2782 2926 3713 3714 6 2925 2782 2783 2927 3714 3715 6 2926 2783 2784 2928 3715 3716 6 2927 2784 2785 2929 3716 3717 6 2928 2785 2786 2930 3717 3718 6 2929 2786 2787 2931 3718 3719 6 2930 2787 2788 2932 3719 3720 6 2931 2788 2789 2933 3720 3721 6 2932 2789 2790 2934 3721 3722 6 2933 2790 2791 2935 3722 3723 6 2934 2791 2792 2936 3723 3724 6 2935 2792 2793 2937 3724 3725 6 2936 2793 2794 2938 3725 3726 6 2937 2794 2795 2939 3726 3727 6 2938 2795 2796 2940 3727 3728 6 2939 2796 2797 2941 3728 3729 6 2940 2797 2798 2942 3729 3730 6 2941 2798 2799 2943 3730 3731 6 2942 2799 2800 2944 3731 3732 6 2943 2800 2801 2945 3732 3733 6 2944 2801 2802 2825 2946 3733 6 2945 2825 2826 2947 3733 3734 6 2946 2826 2828 2948 3734 3735 6 2947 2828 2829 2830 2949 3735 7 2948 2830 2831 2950 3735 3736 3737 6 2949 2831 2832 2951 3243 3737 6 2950 2832 2833 2952 3243 3244 6 2951 2833 2834 2953 3244 3245 6 2952 2834 2835 2954 3245 3246 5 2953 2835 2836 2955 3246 7 2954 2836 2837 2956 3246 3247 3248 6 2955 2837 2838 2957 3248 3249 6 2956 2838 2840 2958 3249 3250 6 2957 2840 2959 3250 3251 3252 6 2958 2840 2841 2960 3252 3253 6 2959 2841 2622 2623 2961 3253 6 2960 2623 2624 2962 3255 3253 6 2961 2624 2625 2963 3255 3256 6 2962 2625 2626 2964 2965 3256 6 2963 2626 2965 2966 2967 2627 6 2963 2964 2966 3256 3257 3258 6 2965 2964 2967 3258 3259 3260 6 2966 2964 2627 2628 2968 3260 6 2967 2628 2629 2969 3260 3261 6 2968 2629 2630 2970 3261 3262 6 2969 2630 2631 2971 3262 3263 6 2970 2631 2632 2972 3263 3264 6 2971 2632 2633 2973 3264 3265 6 2972 2633 2634 2974 3265 3266 6 2973 2634 2635 2975 3266 3267 6 2974 2635 2636 2976 3267 3268 6 2975 2636 2637 2638 2977 3268 6 2976 2638 2640 2978 3268 3269 6 2977 2640 2979 3269 3270 3271 6 2978 2640 2641 2980 3271 3272 6 2979 2641 2643 2981 3272 3273 6 2980 2643 2644 2982 3273 3274 6 2981 2644 2645 2983 3274 3275 6 2982 2645 2646 2984 3275 3276 6 2983 2646 2647 2985 3276 3277 6 2984 2647 2648 2986 3277 3278 6 2985 2648 2649 2987 3278 3825 6 2986 2649 2650 2988 3546 3825 6 2987 2650 2651 2989 3546 3547 6 2988 2651 2652 2990 3547 3548 6 2989 2652 2653 2991 3548 3549 6 2990 2653 2654 2992 3549 3550 6 2991 2654 2655 2993 3550 3551 6 2992 2655 2657 2994 3551 3552 6 2993 2657 2658 2995 3552 3553 6 2994 2658 2659 2996 3553 3554 6 2995 2659 2660 2997 3554 3555 6 2996 2660 2998 3555 3556 3557 6 2997 2660 2661 2999 3557 3558 6 2998 2661 2662 2663 3000 3558 6 2999 2663 2664 3001 3558 3559 6 3000 2664 2665 3002 3559 3560 6 3001 2665 2666 3003 3560 3561 6 3002 2666 2667 3561 3562 3566 6 2703 2704 3005 3291 3292 3293 6 3004 2704 2705 3006 3293 3294 6 3005 2705 2706 3007 3294 3295 6 3006 2706 2707 3008 3295 3296 6 3007 2707 2708 3009 3296 3297 6 3008 2708 2709 3010 3297 3298 6 3009 2709 2710 2711 3011 3298 6 3010 2711 3012 3298 3299 3300 6 3011 2711 2712 3013 3300 3301 6 3012 2712 2713 3014 3301 3302 6 3013 2713 2714 3015 3302 3303 6 3014 2714 2715 3016 3303 3304 6 3015 2715 2716 3017 3304 3305 6 3016 2716 2717 3018 3305 3306 6 3017 2717 2718 3019 3306 3307 6 3018 2718 2719 3020 3307 3308 6 3019 2719 2720 3021 3308 3309 6 3020 2720 2721 3022 3309 3310 6 3021 2721 2722 3023 3310 3311 6 3022 2722 2723 3024 3311 3312 6 3023 2723 2724 3025 3312 3313 6 3024 2724 2725 3026 3313 3314 6 3025 2725 2726 3027 3314 3315 6 3026 2726 2727 3028 3315 3316 6 3027 2727 2728 3029 3316 3317 6 3028 2728 2729 3030 3317 3318 6 3029 2729 2730 3031 3318 3319 6 3030 2730 2731 3032 3319 3320 6 3031 2731 2732 3033 3320 3321 6 3032 2732 2733 3034 3321 3322 6 3033 2733 2734 3035 3322 3323 6 3034 2734 2735 3036 3043 3323 6 3035 2735 2736 3037 3043 3044 6 3036 2736 2737 3038 3044 3045 6 3037 2737 2738 2739 3039 3045 6 3038 2739 3040 3045 3046 3047 6 3039 2739 2740 3041 3047 3048 6 3040 2740 2741 2742 3042 3048 6 3041 2742 2744 3048 3049 3050 6 3035 3036 3044 3323 3324 3325 6 3043 3036 3037 3045 3325 3326 6 3044 3037 3038 3039 3046 3326 6 3045 3039 3047 3326 3327 3328 6 3046 3039 3040 3048 3054 3328 6 3047 3040 3041 3042 3049 3054 6 3048 3042 3050 3054 3055 3056 6 3049 3042 2744 2745 3051 3056 6 3050 2745 2746 2747 3052 3056 6 3051 2747 2748 3053 3056 3057 6 3052 2748 2750 3057 3058 3059 6 3047 3048 3049 3055 3328 3329 6 3054 3049 3056 3329 3330 3057 6 3055 3049 3050 3051 3052 3057 7 3056 3052 3053 3058 3330 3055 3642 5 3057 3053 3059 3642 3643 7 3058 3053 2750 2751 3060 3643 3644 6 3059 2751 3061 3644 3645 3062 5 3060 2751 2446 2447 3062 6 3061 2447 3063 3645 3060 3911 6 3062 2447 2448 3064 3911 3912 6 3063 2448 3065 3070 3912 3913 6 3064 2448 2449 2450 3066 3070 6 3065 2450 2451 3067 3070 3071 6 3066 2451 2452 3068 3071 3072 6 3067 2452 2453 3069 3072 3073 6 3068 2453 2455 3073 3074 3075 6 3064 3065 3066 3071 3913 3914 6 3070 3066 3067 3072 3914 3915 6 3071 3067 3068 3073 3915 3916 6 3072 3068 3069 3074 3916 3917 6 3073 3069 3075 3917 3918 3919 6 3074 3069 2455 2456 3076 3919 6 3075 2456 2457 2458 3077 3919 6 3076 2458 2459 3078 3350 3919 6 3077 2459 2460 3079 3350 3351 6 3078 2460 2461 3080 3108 3351 6 3079 2461 2462 3081 3108 3109 6 3080 2462 3082 3092 3109 3110 6 3081 2462 2463 3083 3092 3093 6 3082 2463 2464 3084 3085 3093 6 3083 2464 3085 3086 2483 2465 6 3083 3084 3086 3093 3113 3360 6 3085 3084 2483 3927 3153 3360 6 17 18 3088 3089 3090 3091 6 3087 18 19 3096 3127 3091 6 17 3087 3090 3099 418 16 6 3089 3087 3091 3099 3104 3105 6 3090 3087 3105 3106 3088 3127 6 3081 3082 3093 3110 3111 3112 6 3092 3082 3083 3085 3112 3113 5 1616 1617 3095 4100 3545 6 3094 1617 1618 4368 4100 1625 6 3088 19 20 3097 3126 3127 6 3096 20 21 3126 3129 415 6 2242 1658 1656 1648 1183 1185 6 3089 3090 418 3100 3103 3104 6 418 3099 419 3101 3102 3103 6 419 3100 3102 3229 3230 3685 6 3101 3100 3103 3227 3229 3499 7 3102 3100 3099 3104 3114 3499 3498 6 3103 3099 3090 3105 3114 3115 6 3104 3090 3091 3106 3107 3115 6 3105 3091 3107 3127 3125 3119 6 3105 3106 3117 3115 3118 3119 6 3079 3080 3109 3351 3352 3353 6 3108 3080 3081 3110 3353 3354 6 3109 3081 3092 3111 3354 3355 6 3110 3092 3112 3355 3356 3357 6 3111 3092 3093 3113 3357 3358 6 3112 3093 3085 3358 3359 3360 5 3103 3104 3115 3116 3498 6 3114 3104 3116 3117 3107 3105 7 3114 3115 3117 3498 3505 3502 3496 6 3116 3115 3107 3118 6713 3505 6 3117 3107 3119 3120 6713 6712 6 3118 3107 3120 3121 3125 3106 6 3118 3119 3121 3122 6712 6714 6 3120 3119 3122 3123 3124 3125 6 3120 3121 3123 3885 3888 6714 6 3122 3121 3124 3128 3884 3885 6 3123 3121 3125 3126 3128 3129 6 3124 3121 3119 3126 3127 3106 6 3124 3125 3127 3129 3096 3097 6 3126 3125 3106 3096 3088 3091 6 3123 3124 3129 3883 3340 3884 6 3128 3124 3126 415 3883 3097 6 2202 2204 3131 3852 3853 9782 6 3130 2204 2206 1526 1527 9782 6 2095 2096 3133 3134 9777 3139 6 2095 3132 3134 3135 3136 2094 6 3133 3132 3135 3137 3138 3139 6 3133 3134 3136 3137 5947 5946 6 3133 3135 5946 5944 5948 2094 6 3135 3134 3138 6091 6092 5947 6 3137 3134 3139 6091 6090 6093 6 3138 3134 6093 6094 9777 3132 6 2814 2815 2818 3141 4389 4387 6 3140 2818 3142 4386 4385 4387 6 3141 2818 2819 3143 4391 4386 6 3142 2819 3144 7768 4391 7769 6 3143 2819 2820 3145 7775 7769 6 3144 2820 2821 3146 7775 7776 6 3145 2821 3147 4232 7776 9792 6 3146 2821 2822 2824 3148 4232 6 3147 2824 1674 1675 3413 4232 6 2487 2488 3150 3157 3158 3162 6 2487 3149 3151 3152 3156 3157 6 2487 3150 3152 3153 3927 2485 6 3151 3150 3153 3154 3155 3156 6 3151 3152 3154 3927 3086 3360 6 3153 3152 3155 3359 3360 3361 6 3154 3152 3156 3361 3362 3363 6 3155 3152 3150 3157 3678 3363 6 3156 3150 3149 3158 3159 3678 6 3157 3149 3159 3160 3161 3162 6 3157 3158 3160 3677 3678 3946 6 3159 3158 3161 3946 3947 3963 6 3160 3158 3162 3963 3964 3965 6 3161 3158 3149 3968 3965 2488 6 2846 2848 3164 3165 3166 2845 6 3163 2848 3165 3181 2859 2850 6 3163 3164 3166 3167 3178 3181 6 3163 3165 3167 3168 3169 2845 6 3166 3165 3168 3178 3175 3172 6 3166 3167 3169 3170 3171 3172 6 3166 3168 3170 2844 2845 9689 6 3169 3168 3171 9688 9687 9689 5 3170 3168 3172 3173 9688 6 3171 3168 3173 3174 3175 3167 6 3171 3172 3174 9692 9688 6654 7 3173 3172 3175 3176 6655 6653 6654 6 3174 3172 3176 3177 3178 3167 5 3174 3175 3177 3451 6655 6 3176 3175 3178 3179 3180 3451 6 3177 3175 3179 3167 3165 3181 6 3177 3178 3180 3181 6661 6662 6 3177 3179 3451 6658 6660 6661 6 3178 3165 3179 3164 2859 6662 6 2870 2871 2885 3183 3191 2869 6 3182 2885 2886 3184 3217 3191 6 3183 2886 2887 3185 3194 3217 6 3184 2887 3186 3187 3193 3194 6 3185 2887 3187 3188 3189 2888 6 3185 3186 3188 3193 3197 7585 6 3187 3186 3189 3959 7587 7585 6 3188 3186 2888 3959 3960 2889 6 2868 2869 3191 2867 3215 3216 6 3190 2869 3182 3216 3217 3183 6 1742 1743 1745 3198 3199 3200 6 3185 3187 3194 3195 3196 3197 6 3185 3193 3195 7223 3217 3184 7 3194 3193 3196 7223 7222 7205 7204 6 3195 3193 3197 7197 7198 7204 6 3196 3193 3187 7584 7197 7585 6 1741 1742 3192 3199 3412 3201 7 3198 3192 3200 2894 2895 2896 3201 5 3199 3192 1745 1746 2894 6 3199 2896 3202 3412 3198 9752 6 3201 2896 2897 3203 3471 9752 6 3202 2897 2898 3204 3471 3472 6 3203 2898 2899 3205 3472 3473 6 3204 2899 3206 3473 3474 3475 6 3205 2899 2900 3207 3475 3476 6 3206 2900 2901 3208 3476 3477 6 3207 2901 2902 3209 3477 3478 6 3208 2902 2903 3210 3478 3479 6 3209 2903 3211 3212 3479 3480 6 3210 2903 3212 3213 3214 2904 6 3210 3211 3213 3480 3481 3482 7 3212 3211 3214 3482 3483 2908 3484 6 3213 3211 2904 3484 2906 2905 6 2867 3190 3216 7221 7220 7222 6 3215 3190 3191 3217 7222 7223 6 3216 3191 3183 7223 3194 3184 6 636 637 3219 4041 3764 3763 6 3218 637 639 3220 3485 4041 6 3219 639 3221 3222 3223 3485 6 3220 639 640 3222 3241 3242 6 3220 3221 3223 3224 3225 3242 6 3220 3222 3224 3485 3486 3487 6 3223 3222 3225 3226 3487 3488 6 3224 3222 3226 3227 3228 3242 6 3224 3225 3227 3494 3488 3495 7 3226 3225 3228 3229 3102 3495 3499 6 3227 3225 3229 3230 3231 3242 5 3227 3228 3102 3101 3230 6 3101 3229 3228 3231 3232 3685 6 3230 3228 3232 3233 3242 3241 6 3230 3231 3233 3234 3235 3685 6 3232 3231 3234 3241 3240 3237 7 3232 3233 3235 12 11 3236 3237 5 3232 3234 12 3685 13 6 11 3234 3237 3238 3239 10 6 3236 3234 3238 644 3240 3233 6 3236 3237 3239 648 645 644 5 3236 3238 10 9 648 6 644 3237 641 640 3241 3233 6 640 3240 3221 3242 3231 3233 6 3221 3241 3222 3225 3228 3231 6 2950 2951 3244 3737 3738 3739 6 3243 2951 2952 3245 3739 3740 6 3244 2952 2953 3246 3740 3741 7 3245 2953 2954 2955 3247 3741 3742 5 3246 2955 3248 3742 3743 6 3247 2955 2956 3249 3743 3744 6 3248 2956 2957 3250 3744 3745 6 3249 2957 2958 3251 3745 3746 6 3250 2958 3252 3746 3747 3748 6 3251 2958 2959 3253 3254 3748 6 3252 2959 3254 3255 2961 2960 6 3252 3253 3255 3748 3749 3750 6 3254 3253 2961 2962 3256 3750 6 3255 2962 2963 2965 3257 3750 6 3256 2965 3258 3750 3751 3752 6 3257 2965 2966 3259 3752 3753 6 3258 2966 3260 3753 3754 3755 6 3259 2966 2967 2968 3261 3755 6 3260 2968 2969 3262 3755 3756 6 3261 2969 2970 3263 3756 3757 6 3262 2970 2971 3264 3757 3758 6 3263 2971 2972 3265 3758 3759 6 3264 2972 2973 3266 3759 3760 7 3265 2973 2974 3267 3760 4055 4052 5 3266 2974 2975 3268 4055 6 3267 2975 2976 2977 3269 4055 7 3268 2977 2978 3270 4055 4054 4056 5 3269 2978 3271 4056 4057 6 3270 2978 2979 3272 4057 4058 6 3271 2979 2980 3273 4058 4059 6 3272 2980 2981 3274 4059 4060 6 3273 2981 2982 3275 4060 4061 6 3274 2982 2983 3276 4061 4062 6 3275 2983 2984 3277 4065 4062 6 3276 2984 2985 3278 4065 4066 6 3277 2985 2986 3827 4066 3825 6 2690 2691 3280 3589 3590 3591 6 3279 2691 2692 3281 3591 3592 6 3280 2692 2693 3282 3592 3593 6 3281 2693 2694 3283 3593 3594 6 3282 2694 2695 3284 3594 3595 6 3283 2695 2696 3285 3595 3596 6 3284 2696 2697 3286 3596 3597 6 3285 2697 2698 3287 3597 3598 6 3286 2698 2699 3288 3598 3599 6 3287 2699 2700 3289 3599 3600 6 3288 2700 2701 3290 3600 3601 6 3289 2701 2702 3291 3601 3602 6 3290 2702 2703 3004 3292 3602 6 3291 3004 3293 3602 3603 3604 6 3292 3004 3005 3294 3604 3605 6 3293 3005 3006 3295 3605 3606 6 3294 3006 3007 3296 3606 3607 6 3295 3007 3008 3297 3607 3608 6 3296 3008 3009 3298 3608 3609 6 3297 3009 3010 3011 3299 3609 6 3298 3011 3300 3609 3610 3611 6 3299 3011 3012 3301 3611 3612 6 3300 3012 3013 3302 3612 3613 6 3301 3013 3014 3303 3613 3614 6 3302 3014 3015 3304 3614 3615 6 3303 3015 3016 3305 3615 3616 6 3304 3016 3017 3306 3616 3617 6 3305 3017 3018 3307 3617 3618 6 3306 3018 3019 3308 3618 3619 6 3307 3019 3020 3309 3619 3620 6 3308 3020 3021 3310 3620 3621 6 3309 3021 3022 3311 3621 3622 6 3310 3022 3023 3312 3622 3623 6 3311 3023 3024 3313 3623 3624 6 3312 3024 3025 3314 3624 3625 6 3313 3025 3026 3315 3625 3626 6 3314 3026 3027 3316 3626 3627 6 3315 3027 3028 3317 3627 3628 6 3316 3028 3029 3318 3628 3629 6 3317 3029 3030 3319 3629 3630 6 3318 3030 3031 3320 3630 3631 6 3319 3031 3032 3321 3631 3632 6 3320 3032 3033 3322 3632 3633 6 3321 3033 3034 3323 3633 3634 6 3322 3034 3035 3043 3324 3634 6 3323 3043 3325 3634 3635 3636 6 3324 3043 3044 3326 3636 3637 6 3325 3044 3045 3046 3327 3637 6 3326 3046 3328 3637 3638 3639 6 3327 3046 3047 3054 3329 3639 6 3328 3054 3055 3330 3639 3640 6 3329 3055 3057 3640 3641 3642 6 2508 2509 33 34 3332 3881 6 3331 34 35 2249 3333 3881 6 3332 2249 3334 3335 3881 3882 6 3333 2249 3335 3336 3337 2250 6 3333 3334 3336 9708 6500 3882 6 3335 3334 3337 9707 6493 9708 6 3336 3334 2250 2251 2252 9707 6 1172 1173 1525 3339 3340 3883 6 3338 1525 3340 3341 3342 4251 6 3338 3339 3341 3883 3128 3884 6 3340 3339 3342 3343 3886 3884 6 3341 3339 3343 3344 2207 4251 6 3341 3342 3344 3862 6718 3886 6 3343 3342 2207 2208 3345 3862 6 3344 2208 2210 3346 3347 3862 6 3345 2210 3347 3348 3349 2212 6 3345 3346 3348 3862 3863 3864 6 3347 3346 3349 6533 3864 6525 6 3348 3346 2212 2214 6524 6525 6 3077 3078 3351 3919 3918 3920 6 3350 3078 3079 3108 3352 3920 6 3351 3108 3353 3920 3921 3922 6 3352 3108 3109 3354 3922 3923 6 3353 3109 3110 3355 3923 3924 6 3354 3110 3111 3356 3924 3925 6 3355 3111 3357 3925 3926 3375 6 3356 3111 3112 3358 3369 3375 6 3357 3112 3113 3359 3368 3369 6 3358 3113 3360 3154 3361 3368 6 3359 3113 3154 3086 3153 3085 6 3359 3154 3155 3362 3364 3368 6 3361 3155 3363 3364 3365 3679 6 3362 3155 3156 3678 3676 3679 6 3361 3362 3365 3366 3367 3368 6 3364 3362 3366 3679 3668 3669 6 3364 3365 3367 3374 3371 3669 6 3364 3366 3368 3369 3370 3371 6 3364 3367 3369 3361 3359 3358 6 3368 3367 3370 3358 3357 3375 6 3369 3367 3371 3372 3375 3376 6 3370 3367 3372 3373 3374 3366 6 3370 3371 3373 3376 3377 3378 6 3372 3371 3374 3378 3379 3380 6 3373 3371 3366 3380 3381 3669 6 3357 3369 3370 3376 3926 3356 7 3375 3370 3372 3377 3944 3926 4343 5 3376 3372 3378 4343 4344 6 3377 3372 3373 3379 4344 4345 6 3378 3373 3380 3646 4348 4345 6 3379 3373 3374 3381 3382 3646 6 3380 3374 3382 3383 3669 3657 6 3380 3381 3383 3384 3385 3646 6 3382 3381 3384 3391 3388 3657 6 3382 3383 3385 3386 3387 3388 6 3382 3384 3386 3646 3647 3648 6 3385 3384 3387 3648 3649 3650 6 3386 3384 3388 3389 3650 3651 6 3387 3384 3389 3390 3391 3383 6 3387 3388 3390 3651 3652 3653 6 3389 3388 3391 3653 3654 3655 6 3390 3388 3383 3655 3656 3657 6 2676 2677 3393 3574 3575 3576 6 3392 2677 2678 3394 3576 3577 6 3393 2678 2679 3395 3577 3578 6 3394 2679 2680 3578 3579 3580 6 2174 2805 2806 3397 3398 4748 6 3396 2806 3398 3399 3400 3401 6 3396 3397 3399 3893 4748 4747 6 3398 3397 3400 3893 3894 3895 6 3399 3397 3401 3895 3896 3897 6 3400 3397 2806 2807 3402 3897 6 3401 2807 2808 3403 3897 3898 6 3402 2808 3404 3898 3899 3900 6 3403 2808 2809 3405 3900 3901 6 3404 2809 1733 3406 3680 3901 6 3405 1733 1734 1735 3407 3680 6 3406 1735 1736 3408 3680 3681 6 3407 1736 1737 3409 3681 3682 6 3408 1737 1738 3410 3684 3682 6 3409 1738 1739 3411 3471 3684 6 3410 1739 1740 3412 9752 3471 6 3411 1740 1741 3198 3201 9752 6 3148 1675 1676 1677 3414 4232 6 3413 1677 1678 3415 9792 4232 6 3414 1678 3416 7779 7777 9792 6 3415 1678 1679 7779 7780 5383 6 1696 1697 3418 3787 1695 3788 6 3417 1697 1698 3419 3788 3790 6 3418 1698 1699 2224 3420 3790 6 3419 2224 3421 3790 3791 3792 6 3420 2224 2225 3422 3792 3793 6 3421 2225 2226 3423 3424 3793 6 3422 2226 3424 3425 3426 3427 6 3422 3423 3425 3795 3793 3796 6 3424 3423 3426 3796 3797 3798 6 3425 3423 3427 3798 3799 3800 6 3426 3423 2226 2227 3428 3800 6 3427 2227 2228 3429 3800 3801 6 3428 2228 2229 3430 3801 3802 6 3429 2229 3431 3802 3803 3433 6 3430 2229 2230 2239 3432 3433 6 3431 2239 3433 3434 3435 3436 6 3431 3432 3434 3443 3803 3430 6 3433 3432 3435 3443 3444 3445 6 3434 3432 3436 3445 3446 3447 6 3435 3432 2239 2240 2562 3447 6 2492 2493 3438 3439 3516 2494 6 2492 3437 3439 3440 3441 3442 6 3438 3437 3440 3514 3515 3516 6 3438 3439 3441 3509 3510 3514 6 3438 3440 3442 3452 3454 3509 6 3438 3441 2492 71 3452 70 6 3433 3434 3444 3803 3804 3805 6 3443 3434 3445 3805 3806 3807 6 3444 3434 3435 3446 3807 3808 6 3445 3435 3447 3808 3809 3448 6 3446 3435 3436 2562 2563 3448 6 3447 2563 3449 3809 3446 4108 6 3448 2563 2564 3450 3455 4108 6 3449 2564 2568 3455 3456 2569 7 3176 3177 3180 6656 6655 6657 6658 6 3442 3441 70 69 3453 3454 6 69 3452 3454 68 3506 3507 6 3453 3452 3441 3507 3508 3509 6 3449 3450 3456 3457 4108 4109 6 3455 3450 3457 3458 3459 2569 6 3455 3456 3458 3465 4111 4109 6 3457 3456 3459 3460 3461 3465 6 3458 3456 3460 3464 2570 2569 6 3458 3459 3461 3462 3463 3464 6 3458 3460 3462 3465 3466 3467 6 3461 3460 3463 3467 3468 3470 6 3462 3460 3464 1722 3470 1721 6 3463 3460 3459 2570 1721 1720 6 3457 3458 3461 3466 4395 4111 6 3465 3461 3467 4405 4395 4746 6 3466 3461 3462 3468 3469 4746 6 3467 3462 3469 2173 1725 3470 6 3467 3468 2173 4746 4747 4748 6 1725 3468 1723 1722 3463 3462 7 3202 3203 3472 9752 3411 3410 3684 6 3471 3203 3204 3473 3682 3684 6 3472 3204 3205 3474 3683 3682 6 3473 3205 3475 3686 3903 3683 6 3474 3205 3206 3476 3686 3687 6 3475 3206 3207 3477 3687 3688 6 3476 3207 3208 3478 3688 3689 6 3477 3208 3209 3479 3689 3690 6 3478 3209 3210 3480 3690 3691 6 3479 3210 3212 3481 3691 3692 6 3480 3212 3482 3500 3695 3692 6 3481 3212 3213 3483 3500 3501 5 3482 3213 2908 3501 2909 5 2908 3213 3214 2906 2907 6 3219 3220 3223 3486 4040 4041 6 3485 3223 3487 3490 3969 4040 6 3486 3223 3224 3488 3489 3490 6 3487 3224 3489 3493 3494 3226 6 3487 3488 3490 3491 3492 3493 6 3487 3489 3491 3486 3969 3970 6 3490 3489 3492 3970 3971 3972 6 3491 3489 3493 3972 9748 6556 6 3492 3489 3488 3494 3497 9748 6 3493 3488 3226 3495 3496 3497 6 3494 3226 3227 3496 3498 3499 6 3494 3495 3497 3498 3502 3116 6 3494 3496 3493 3502 3503 9748 6 3496 3495 3499 3103 3114 3116 5 3498 3495 3227 3102 3103 6 3481 3482 3501 3695 3696 3697 6 3500 3482 3483 2909 3697 3698 6 3497 3496 3503 3504 3505 3116 6 3497 3502 3504 9748 6707 9749 6 3503 3502 3505 6713 6711 9749 5 3504 3502 3116 6713 3117 6 68 3453 3507 6698 6704 67 6 3506 3453 3454 3508 6698 6705 6 3507 3454 3509 3511 4523 6705 6 3508 3454 3441 3440 3510 3511 6 3509 3440 3511 3512 3513 3514 6 3509 3510 3512 3771 3508 4523 6 3511 3510 3513 3771 3772 3773 6 3512 3510 3514 3773 3774 3521 6 3513 3510 3440 3439 3515 3521 6 3514 3439 3516 3521 3522 3518 6 3515 3439 3437 2494 3517 3518 6 3516 2494 3518 3519 1608 1607 6 3516 3517 3519 3522 3515 3523 6 3518 3517 1608 1614 3523 3524 5 1614 1608 1606 1609 1611 6 3514 3515 3522 3774 3513 4532 6 3521 3515 3518 3523 4117 4532 6 3522 3518 3519 3524 3526 4117 6 3523 3519 1614 1615 3525 3526 6 3524 1615 3526 3527 3528 3529 6 3524 3525 3527 3523 4117 4118 6 3526 3525 3528 3530 4118 4119 6 3527 3525 3529 3530 3531 3544 6 3528 3525 1615 3544 3545 1616 6 3527 3528 3531 3532 4119 9787 6 3530 3528 3532 3533 3543 3544 6 3530 3531 3533 3534 9787 9788 6 3532 3531 3534 3535 3542 3543 6 3532 3533 3535 3536 9788 9789 6 3534 3533 3536 3537 3541 3542 6 3534 3535 3537 3538 9789 7179 6 3536 3535 3538 3539 3540 3541 6 3536 3537 3539 7183 7180 7179 6 3538 3537 3540 7183 7184 7185 6 3539 3537 3541 7185 7186 7213 6 3540 3537 3535 3542 7213 4373 6 3541 3535 3533 3543 4373 4098 6 3542 3533 3531 3544 4097 4098 6 3543 3531 3528 3529 3545 4097 6 3544 3529 1616 4100 4097 3094 6 2987 2988 3547 3825 3826 3830 6 3546 2988 2989 3548 3830 3831 6 3547 2989 2990 3549 3831 3832 6 3548 2990 2991 3550 3832 3833 6 3549 2991 2992 3551 3833 3834 6 3550 2992 2993 3552 3810 3834 6 3551 2993 2994 3553 3810 3811 6 3552 2994 2995 3554 3811 3812 6 3553 2995 2996 3555 3812 3813 6 3554 2996 2997 3556 3813 3814 6 3555 2997 3557 3814 3815 3816 6 3556 2997 2998 3558 3816 3817 6 3557 2998 2999 3000 3559 3817 6 3558 3000 3001 3560 3817 3818 6 3559 3001 3002 3561 3818 3819 6 3560 3002 3003 3562 3563 3819 6 3561 3003 3563 3564 3565 3566 6 3561 3562 3564 3819 3820 3821 6 3563 3562 3565 3821 3822 3823 6 3564 3562 3566 3823 3824 3567 6 3565 3562 3003 2667 2668 3567 6 3566 2668 2669 3568 3824 3565 6 3567 2669 2670 3569 3851 3824 6 3568 2670 2671 3570 3880 3851 6 3569 2671 2672 3571 3892 3880 6 3570 2672 2673 2674 3572 3892 6 3571 2674 3573 4238 3892 4258 6 3572 2674 2675 3574 4258 4259 6 3573 2675 2676 3392 3575 4259 6 3574 3392 3576 4259 4260 4264 6 3575 3392 3393 3577 4264 4265 6 3576 3393 3394 3578 4265 4266 6 3577 3394 3395 3579 4266 4267 6 3578 3395 3580 4267 4268 4269 6 3579 3395 2680 2681 3581 4269 6 3580 2681 2682 3582 4142 4269 6 3581 2682 2683 3583 4142 4143 6 3582 2683 2684 3584 4143 4144 6 3583 2684 2685 3585 4144 4145 6 3584 2685 2686 3586 4145 4146 6 3585 2686 2687 3587 4146 4147 6 3586 2687 2688 3588 4147 4148 6 3587 2688 2689 3589 4148 4149 6 3588 2689 2690 3279 3590 4149 6 3589 3279 3591 4149 4150 4151 6 3590 3279 3280 3592 4151 4152 6 3591 3280 3281 3593 4152 4153 6 3592 3281 3282 3594 4153 4154 6 3593 3282 3283 3595 4154 4155 6 3594 3283 3284 3596 4155 4156 6 3595 3284 3285 3597 4156 4157 6 3596 3285 3286 3598 4157 4158 6 3597 3286 3287 3599 4158 4159 6 3598 3287 3288 3600 4159 4160 6 3599 3288 3289 3601 4160 4161 6 3600 3289 3290 3602 4161 4162 6 3601 3290 3291 3292 3603 4162 6 3602 3292 3604 4162 4163 4164 6 3603 3292 3293 3605 4164 4165 6 3604 3293 3294 3606 4165 4166 6 3605 3294 3295 3607 4166 4167 6 3606 3295 3296 3608 4167 4168 6 3607 3296 3297 3609 4168 4169 6 3608 3297 3298 3299 3610 4169 6 3609 3299 3611 4169 4170 4171 6 3610 3299 3300 3612 4171 4172 6 3611 3300 3301 3613 4172 4173 6 3612 3301 3302 3614 4173 4174 6 3613 3302 3303 3615 4174 4175 6 3614 3303 3304 3616 4175 4176 6 3615 3304 3305 3617 4176 4177 6 3616 3305 3306 3618 4177 4178 6 3617 3306 3307 3619 4178 4179 6 3618 3307 3308 3620 4179 4180 6 3619 3308 3309 3621 4180 4181 6 3620 3309 3310 3622 4181 4182 6 3621 3310 3311 3623 4182 4183 6 3622 3311 3312 3624 4183 4184 6 3623 3312 3313 3625 4184 4185 6 3624 3313 3314 3626 4185 4186 6 3625 3314 3315 3627 4186 4187 6 3626 3315 3316 3628 4187 4188 6 3627 3316 3317 3629 4188 4189 6 3628 3317 3318 3630 4189 4190 6 3629 3318 3319 3631 4190 4191 6 3630 3319 3320 3632 4191 4192 6 3631 3320 3321 3633 4192 4193 6 3632 3321 3322 3634 4193 4194 6 3633 3322 3323 3324 3635 4194 6 3634 3324 3636 3904 4194 4195 6 3635 3324 3325 3637 3904 3905 6 3636 3325 3326 3327 3638 3905 6 3637 3327 3639 3905 3906 3907 6 3638 3327 3328 3329 3640 3907 6 3639 3329 3330 3641 3907 3908 6 3640 3330 3642 3908 3909 3643 5 3641 3330 3057 3058 3643 7 3642 3058 3059 3644 3909 3641 3928 6 3643 3059 3060 3645 3910 3928 5 3644 3060 3062 3910 3911 6 3382 3385 3647 3380 3379 4348 6 3646 3385 3648 4348 4349 4350 6 3647 3385 3386 3649 4353 4350 6 3648 3386 3650 3658 4353 4354 6 3649 3386 3387 3651 3658 3659 6 3650 3387 3389 3652 3659 3660 6 3651 3389 3653 3660 3661 3662 6 3652 3389 3390 3654 3662 3663 6 3653 3390 3655 3663 3664 3665 6 3654 3390 3391 3656 3665 3666 6 3655 3391 3657 3666 3667 3668 6 3656 3391 3383 3668 3669 3381 6 3649 3650 3659 4354 4355 4359 6 3658 3650 3651 3660 4372 4359 6 3659 3651 3652 3661 9794 4372 6 3660 3652 3662 4907 4909 9794 6 3661 3652 3653 3663 3670 4907 6 3662 3653 3654 3664 3670 3671 6 3663 3654 3665 3671 3672 3673 6 3664 3654 3655 3666 3673 3674 6 3665 3655 3656 3667 3674 3675 6 3666 3656 3668 3675 3676 3679 6 3667 3656 3657 3669 3365 3679 6 3668 3657 3381 3365 3366 3374 6 3662 3663 3671 4904 4906 4907 6 3670 3663 3664 3672 4903 4904 6 3671 3664 3673 5919 4903 3952 6 3672 3664 3665 3674 3951 3952 6 3673 3665 3666 3675 3945 3951 6 3674 3666 3667 3676 3677 3945 6 3675 3667 3677 3678 3363 3679 6 3675 3676 3678 3159 3945 3946 6 3677 3676 3159 3157 3156 3363 6 3363 3676 3362 3365 3668 3667 6 3405 3406 3407 3681 3901 3902 6 3680 3407 3408 3682 3683 3902 7 3681 3408 3683 3473 3472 3684 3409 6 3681 3682 3473 3902 3903 3474 5 3472 3682 3409 3410 3471 7 419 3101 3230 3232 3235 13 14 7 3474 3475 3687 3903 4666 4665 4689 5 3686 3475 3476 3688 4689 7 3687 3476 3477 3689 4689 4690 4691 6 3688 3477 3478 3690 4691 4692 6 3689 3478 3479 3691 4692 4693 6 3690 3479 3480 3692 3693 4693 6 3691 3480 3693 3694 3695 3481 6 3691 3692 3694 4693 4694 4695 6 3693 3692 3695 4695 4696 4697 6 3694 3692 3481 3500 3696 4697 6 3695 3500 3697 4697 4698 4699 6 3696 3500 3501 3698 4699 4700 6 3697 3501 2909 2910 3699 4700 6 3698 2910 2911 3700 3973 4700 6 3699 2911 2912 3701 3973 3974 6 3700 2912 2913 2914 3702 3974 6 3701 2914 3703 3974 3975 3976 6 3702 2914 2915 3704 3976 3977 6 3703 2915 2916 3705 3977 3978 6 3704 2916 2917 3706 3978 3979 6 3705 2917 2918 3707 3979 3980 6 3706 2918 2919 3708 3980 3981 6 3707 2919 2920 3709 3981 3982 6 3708 2920 2921 3710 3982 3983 6 3709 2921 2922 3711 3983 3984 6 3710 2922 2923 3712 3984 3985 6 3711 2923 2924 3713 3985 3986 6 3712 2924 2925 3714 3986 3987 6 3713 2925 2926 3715 3987 3988 6 3714 2926 2927 3716 3988 3989 6 3715 2927 2928 3717 3989 3990 6 3716 2928 2929 3718 3990 3991 6 3717 2929 2930 3719 3991 3992 6 3718 2930 2931 3720 3992 3993 6 3719 2931 2932 3721 3993 3994 6 3720 2932 2933 3722 3994 3995 6 3721 2933 2934 3723 3995 3996 6 3722 2934 2935 3724 3996 3997 6 3723 2935 2936 3725 3997 3998 6 3724 2936 2937 3726 3998 3999 6 3725 2937 2938 3727 3999 4000 6 3726 2938 2939 3728 4000 4001 6 3727 2939 2940 3729 4001 4002 6 3728 2940 2941 3730 4002 4003 6 3729 2941 2942 3731 4003 4004 6 3730 2942 2943 3732 4004 4005 6 3731 2943 2944 3733 4005 4006 6 3732 2944 2945 2946 3734 4006 6 3733 2946 2947 3735 4006 4007 6 3734 2947 2948 2949 3736 4007 6 3735 2949 3737 4007 4008 3738 5 3736 2949 2950 3243 3738 6 3737 3243 3739 4008 3736 4013 6 3738 3243 3244 3740 4013 4014 6 3739 3244 3245 3741 4014 4015 6 3740 3245 3246 3742 4015 4016 6 3741 3246 3247 3743 4016 4017 6 3742 3247 3248 3744 4017 4018 6 3743 3248 3249 3745 4018 4019 6 3744 3249 3250 3746 4019 4020 6 3745 3250 3251 3747 4020 4021 6 3746 3251 3748 4021 4022 4023 6 3747 3251 3252 3254 3749 4023 6 3748 3254 3750 4023 4024 4025 7 3749 3254 3255 3256 3257 3751 4025 5 3750 3257 3752 4025 4026 6 3751 3257 3258 3753 4026 4027 6 3752 3258 3259 3754 4030 4027 7 3753 3259 3755 4038 4030 4047 3756 5 3754 3259 3260 3261 3756 6 3755 3261 3262 3757 4047 3754 6 3756 3262 3263 3758 4047 4048 6 3757 3263 3264 3759 4048 4049 6 3758 3264 3265 3760 4049 4050 6 3759 3265 3266 4050 4051 4052 6 616 618 3762 3765 3766 3764 6 3761 618 626 628 3763 3764 6 3762 628 3764 3218 636 630 6 3762 3763 3766 3761 4041 3218 6 616 3761 3766 4039 6558 613 6 3765 3761 3764 4039 4040 4041 5 2086 1568 3768 3769 6094 6 3767 1568 3769 3770 1572 1569 6 3767 3768 3770 6093 6094 6095 7 3769 3768 1572 6095 6089 6318 6319 6 3511 3512 3772 4523 4524 4525 6 3771 3512 3773 4525 4526 4529 6 3772 3512 3513 3774 4529 4530 6 3773 3513 3521 4530 4531 4532 6 1683 1684 3776 5392 5386 5384 6 3775 1684 3777 5621 5392 3779 6 3776 1684 1685 1687 3778 3779 6 3777 1687 3779 3780 3781 3782 6 3777 3778 3780 7792 5621 3776 6 3779 3778 3781 7799 7793 7792 6 3780 3778 3782 7799 3784 3783 6 3781 3778 1687 1688 1689 3783 6 3782 1689 1690 1692 3784 3781 6 3783 1692 3785 7799 3781 7800 6 3784 1692 1693 3786 7800 7801 6 3785 1693 3787 3788 3789 7801 6 3786 1693 1694 1695 3417 3788 6 3787 3417 3418 3786 3789 3790 6 3786 3788 3790 7801 7802 3791 6 3789 3788 3418 3419 3420 3791 6 3790 3420 3792 7802 3789 7803 6 3791 3420 3421 3793 3794 7803 6 3792 3421 3794 3795 3424 3422 6 3792 3793 3795 7803 7804 7805 6 3794 3793 3424 3796 7805 7806 6 3795 3424 3425 3797 7810 7806 6 3796 3425 3798 3953 7810 7811 6 3797 3425 3426 3799 3953 3954 6 3798 3426 3800 3954 3955 3956 6 3799 3426 3427 3428 3801 3956 6 3800 3428 3429 3802 3956 3957 6 3801 3429 3430 3803 3957 3958 6 3802 3430 3433 3443 3804 3958 6 3803 3443 3805 3958 4101 4240 6 3804 3443 3444 3806 4101 4102 6 3805 3444 3807 4102 4103 4104 6 3806 3444 3445 3808 4104 4105 6 3807 3445 3446 3809 4105 4106 6 3808 3446 3448 4106 4107 4108 6 3551 3552 3811 3834 3835 3836 6 3810 3552 3553 3812 3836 3837 6 3811 3553 3554 3813 3837 3838 6 3812 3554 3555 3814 3838 3839 6 3813 3555 3556 3815 3839 3840 6 3814 3556 3816 3840 3841 3842 6 3815 3556 3557 3817 3842 3843 6 3816 3557 3558 3559 3818 3843 6 3817 3559 3560 3819 3843 3844 6 3818 3560 3561 3563 3820 3844 6 3819 3563 3821 3844 3845 3846 6 3820 3563 3564 3822 3846 3847 6 3821 3564 3823 3847 3848 3849 6 3822 3564 3565 3824 3849 3850 6 3823 3565 3567 3850 3851 3568 6 2987 3546 3826 3827 3278 2986 6 3825 3546 3827 3828 3829 3830 6 3825 3826 3828 4070 4066 3278 6 3827 3826 3829 4757 4070 4764 6 3828 3826 3830 4764 4765 4766 6 3829 3826 3546 3547 3831 4766 6 3830 3547 3548 3832 4766 4767 6 3831 3548 3549 3833 4767 4768 6 3832 3549 3550 3834 4771 4768 6 3833 3550 3551 3810 3835 4771 6 3834 3810 3836 5017 4771 5025 6 3835 3810 3811 3837 5025 5026 6 3836 3811 3812 3838 5026 5027 6 3837 3812 3813 3839 4406 5027 6 3838 3813 3814 3840 3865 4406 6 3839 3814 3815 3841 3865 3866 6 3840 3815 3842 3866 3867 3868 6 3841 3815 3816 3843 3854 3868 6 3842 3816 3817 3818 3844 3854 6 3843 3818 3819 3820 3845 3854 6 3844 3820 3846 3854 3855 3856 6 3845 3820 3821 3847 3856 3857 6 3846 3821 3822 3848 3857 3858 6 3847 3822 3849 3861 3858 3877 6 3848 3822 3823 3850 3877 3878 6 3849 3823 3824 3851 3878 3879 6 3850 3824 3568 3879 3880 3569 6 2182 2200 2180 3853 2202 3130 6 2180 3852 28 27 3130 9782 6 3842 3843 3844 3845 3855 3868 6 3854 3845 3856 3868 3869 3870 6 3855 3845 3846 3857 3870 3871 6 3856 3846 3847 3858 3859 3871 6 3857 3847 3859 3860 3861 3848 6 3857 3858 3860 3871 3872 3873 6 3859 3858 3861 3873 3874 3875 6 3860 3858 3848 3875 3876 3877 6 3344 3345 3347 3863 6718 3343 6 3862 3347 3864 6717 6716 6718 7 3863 3347 6533 6532 3348 6534 6717 6 3839 3840 3866 4406 4407 4408 6 3865 3840 3841 3867 4408 4409 6 3866 3841 3868 4409 4410 3869 6 3867 3841 3842 3854 3855 3869 6 3868 3855 3870 4410 3867 4421 6 3869 3855 3856 3871 4421 4422 6 3870 3856 3857 3859 3872 4422 6 3871 3859 3873 4422 4423 4424 6 3872 3859 3860 3874 4424 4425 6 3873 3860 3875 4425 4426 4427 6 3874 3860 3861 3876 4427 4428 6 3875 3861 3877 4428 4429 3889 6 3876 3861 3848 3849 3878 3889 6 3877 3849 3850 3879 3889 3890 6 3878 3850 3851 3880 3890 3891 6 3879 3851 3569 3891 3892 3570 6 2508 3331 2510 3882 3332 3333 6 2510 3881 3335 6500 2512 3333 6 3338 3340 3128 1172 415 3129 6 3128 3340 3123 3885 3886 3341 6 3123 3884 3886 3887 3888 3122 6 3885 3884 3887 3343 6718 3341 6 3885 3886 3888 6539 6716 6718 6 3885 3887 3122 6714 6715 6539 6 3877 3878 3890 4429 3876 4252 6 3889 3878 3879 3891 4237 4252 6 3890 3879 3880 3892 4237 4238 6 3891 3880 3570 4238 3572 3571 6 3398 3399 3894 4747 4745 4744 6 3893 3399 3895 4744 4749 4750 6 3894 3399 3400 3896 4753 4750 6 3895 3400 3897 4662 4759 4753 6 3896 3400 3401 3402 3898 4662 6 3897 3402 3403 3899 4662 4663 6 3898 3403 3900 4663 4664 4665 6 3899 3403 3404 3901 4665 4666 6 3900 3404 3405 3680 3902 4666 6 3901 3680 3681 3683 3903 4666 5 3902 3683 3474 4666 3686 6 3635 3636 3905 4195 4196 4197 6 3904 3636 3637 3638 3906 4197 6 3905 3638 3907 4197 4198 4199 6 3906 3638 3639 3640 3908 4199 6 3907 3640 3641 3909 4199 4200 6 3908 3641 3643 3928 4200 4201 5 3644 3645 3911 3928 3929 7 3910 3645 3062 3063 3912 3929 3930 7 3911 3063 3064 3913 3930 3931 3932 6 3912 3064 3070 3914 3932 3933 6 3913 3070 3071 3915 3933 3934 6 3914 3071 3072 3916 3934 3935 6 3915 3072 3073 3917 3935 3936 6 3916 3073 3074 3918 3936 3937 6 3917 3074 3919 3350 3920 3937 6 3918 3074 3075 3076 3077 3350 6 3918 3350 3351 3352 3921 3937 6 3920 3352 3922 3937 3938 3939 6 3921 3352 3353 3923 3939 3940 6 3922 3353 3354 3924 3940 3941 6 3923 3354 3355 3925 3941 3942 6 3924 3355 3356 3926 3942 3943 6 3925 3356 3375 3943 3944 3376 6 3086 2483 2484 2485 3151 3153 6 3909 3643 3644 3910 3929 4201 6 3928 3910 3911 3930 4201 4202 6 3929 3911 3912 3931 4202 4203 6 3930 3912 3932 4203 4204 4205 5 3931 3912 3913 3933 4205 6 3932 3913 3914 3934 4205 4206 6 3933 3914 3915 3935 4206 4207 6 3934 3915 3916 3936 4207 4208 6 3935 3916 3917 3937 4208 3938 6 3936 3917 3918 3920 3921 3938 6 3937 3921 3939 4208 3936 4336 6 3938 3921 3922 3940 4336 4337 6 3939 3922 3923 3941 4337 4338 6 3940 3923 3924 3942 4338 4339 6 3941 3924 3925 3943 4339 4340 6 3942 3925 3926 3944 4340 4341 6 3943 3926 3376 4341 4342 4343 6 3674 3675 3677 3946 3951 3948 6 3945 3677 3159 3160 3947 3948 6 3946 3160 3948 3949 5923 3963 6 3946 3947 3949 3950 3951 3945 6 3948 3947 3950 5921 5922 5923 6 3948 3949 3951 3952 5920 5921 6 3948 3950 3952 3673 3674 3945 6 3951 3950 3673 5919 3672 5920 6 3797 3798 3954 7811 7812 7813 6 3953 3798 3799 3955 7813 7814 6 3954 3799 3956 7814 7815 7816 6 3955 3799 3800 3801 3957 7816 6 3956 3801 3802 3958 4239 7816 6 3957 3802 3803 3804 4239 4240 6 3188 3189 3960 3961 7589 7587 6 3959 3189 3961 3962 2891 2889 6 3959 3960 3962 7589 7590 7591 6 3961 3960 2891 7591 7592 7593 6 3160 3161 3964 5923 3947 5924 6 3963 3161 3965 3966 5924 5925 6 3964 3161 3966 3967 3968 3162 6 3964 3965 3967 5925 5943 5944 6 3966 3965 3968 5944 5949 5948 6 3967 3965 3162 5949 2489 2488 6 3486 3490 3970 6557 4039 4040 6 3969 3490 3491 3971 1598 6557 6 3970 3491 3972 6359 1596 1598 6 3971 3491 3492 6556 6358 6359 6 3699 3700 3974 4700 4701 4702 6 3973 3700 3701 3702 3975 4702 6 3974 3702 3976 4702 4703 4704 6 3975 3702 3703 3977 4704 4705 6 3976 3703 3704 3978 4705 4706 6 3977 3704 3705 3979 4706 4707 6 3978 3705 3706 3980 4707 4708 6 3979 3706 3707 3981 4708 4709 6 3980 3707 3708 3982 4709 4710 6 3981 3708 3709 3983 4710 4711 6 3982 3709 3710 3984 4711 4712 6 3983 3710 3711 3985 4712 4713 6 3984 3711 3712 3986 4713 4714 6 3985 3712 3713 3987 4714 4715 6 3986 3713 3714 3988 4715 4716 6 3987 3714 3715 3989 4716 4717 6 3988 3715 3716 3990 4717 4718 6 3989 3716 3717 3991 4718 4719 6 3990 3717 3718 3992 4719 4720 6 3991 3718 3719 3993 4720 4721 6 3992 3719 3720 3994 4721 4722 6 3993 3720 3721 3995 4440 4722 6 3994 3721 3722 3996 4440 4441 6 3995 3722 3723 3997 4441 4442 6 3996 3723 3724 3998 4442 4443 6 3997 3724 3725 3999 4443 4444 6 3998 3725 3726 4000 4444 4445 6 3999 3726 3727 4001 4445 4446 6 4000 3727 3728 4002 4446 4447 6 4001 3728 3729 4003 4071 4447 6 4002 3729 3730 4004 4009 4071 6 4003 3730 3731 4005 4009 4010 6 4004 3731 3732 4006 4010 4011 6 4005 3732 3733 3734 4007 4011 6 4006 3734 3735 3736 4008 4011 6 4007 3736 3738 4011 4012 4013 6 4003 4004 4010 4071 4072 4073 6 4009 4004 4005 4011 4073 4012 6 4010 4005 4006 4007 4008 4012 6 4011 4008 4013 4073 4010 4074 6 4012 4008 3738 3739 4014 4074 6 4013 3739 3740 4015 4074 4075 7 4014 3740 3741 4016 4075 4076 4077 6 4015 3741 3742 4017 4077 4078 6 4016 3742 3743 4018 4078 4079 6 4017 3743 3744 4019 4079 4080 6 4018 3744 3745 4020 4080 4081 6 4019 3745 3746 4021 4081 4082 6 4020 3746 3747 4022 4082 4083 6 4021 3747 4023 4031 4083 4084 6 4022 3747 3748 3749 4024 4031 6 4023 3749 4025 4031 4032 4033 6 4024 3749 3750 3751 4026 4033 6 4025 3751 3752 4027 4028 4033 6 4026 3752 4028 4029 4030 3753 6 4026 4027 4029 4033 4034 4035 6 4028 4027 4030 4035 4036 4037 6 4029 4027 3753 4037 4038 3754 6 4022 4023 4024 4032 4084 4085 6 4031 4024 4033 4085 4086 4034 6 4032 4024 4025 4026 4028 4034 6 4033 4028 4035 4086 4032 4463 6 4034 4028 4029 4036 4042 4463 6 4035 4029 4037 4042 4043 4044 6 4036 4029 4030 4038 4044 4045 6 4037 4030 3754 4045 4046 4047 6 3765 3766 4040 6557 6558 3969 6 4039 3766 4041 3969 3486 3485 6 4040 3766 3764 3218 3485 3219 6 4035 4036 4043 4463 4464 4465 6 4042 4036 4044 4465 4466 4467 6 4043 4036 4037 4045 4467 4468 6 4044 4037 4038 4046 4468 4469 6 4045 4038 4047 4469 4470 4048 6 4046 4038 3754 3756 3757 4048 6 4047 3757 3758 4049 4470 4046 6 4048 3758 3759 4050 4470 4471 6 4049 3759 3760 4051 4471 4210 6 4050 3760 4052 4053 4209 4210 6 4051 3760 4053 4054 4055 3266 6 4051 4052 4054 4209 4222 4223 6 4053 4052 4055 3269 4056 4223 6 4054 4052 3266 3267 3268 3269 5 4054 3269 3270 4057 4223 7 4056 3270 3271 4058 4223 4224 4225 7 4057 3271 3272 4059 4225 4226 4227 6 4058 3272 3273 4060 4227 4228 6 4059 3273 3274 4061 4228 4229 6 4060 3274 3275 4062 4063 4229 6 4061 3275 4063 4064 4065 3276 6 4061 4062 4064 4231 4229 4503 6 4063 4062 4065 4067 4068 4503 6 4064 4062 3276 3277 4066 4067 6 4065 3277 4067 4070 3827 3278 6 4065 4066 4064 4068 4069 4070 6 4064 4067 4069 4514 4503 4755 6 4068 4067 4070 4755 4756 4757 6 4069 4067 4066 3827 4757 3828 6 4002 4003 4009 4072 4447 4448 6 4071 4009 4073 4448 4449 4450 6 4072 4009 4010 4012 4074 4450 6 4073 4012 4013 4014 4075 4450 6 4074 4014 4015 4076 4450 4451 6 4075 4015 4077 4451 4452 4453 5 4076 4015 4016 4078 4453 6 4077 4016 4017 4079 4453 4454 6 4078 4017 4018 4080 4454 4455 6 4079 4018 4019 4081 4455 4456 6 4080 4019 4020 4082 4456 4457 6 4081 4020 4021 4083 4457 4458 6 4082 4021 4022 4084 4458 4459 6 4083 4022 4031 4085 4459 4460 6 4084 4031 4032 4086 4460 4461 6 4085 4032 4034 4461 4462 4463 6 2881 2882 4088 4090 7600 7601 6 4087 2882 2883 2884 4089 4090 6 4088 2884 4090 4091 4092 4093 7 4088 4089 4091 7599 7600 4087 7752 6 4090 4089 4092 7752 7754 4380 6 4091 4089 4093 4095 4379 4380 6 4092 4089 2884 2499 4094 4095 6 4093 2499 4095 4096 2810 2500 6 4093 4094 4096 4092 4379 4388 6 4095 4094 2810 4388 4387 4389 6 3543 3544 4098 4099 4100 3545 6 3543 4097 4099 4366 4373 3542 6 4098 4097 4100 4366 4367 4368 6 4099 4097 3545 4368 3095 3094 6 3804 3805 4102 4240 4241 4242 6 4101 3805 3806 4103 4242 4243 6 4102 3806 4104 4243 4244 4245 6 4103 3806 3807 4105 4112 4245 6 4104 3807 3808 4106 4112 4113 6 4105 3808 3809 4107 4113 4114 6 4106 3809 4108 4109 4110 4114 6 4107 3809 3448 3449 3455 4109 6 4108 3455 4107 4110 4111 3457 6 4107 4109 4111 4114 4115 4116 6 4110 4109 3457 4116 4395 3465 6 4104 4105 4113 4245 4246 4247 6 4112 4105 4106 4114 4250 4247 6 4113 4106 4107 4110 4115 4250 6 4114 4110 4116 4250 4392 4393 6 4115 4110 4111 4393 4394 4395 7 3523 3526 4118 4531 4532 3522 4120 5 4117 3526 3527 4119 4120 6 4118 3527 4120 4121 3530 9787 7 4118 4119 4121 4122 9785 4531 4117 6 4120 4119 4122 4123 9787 9790 6 4120 4121 4123 4124 4396 9785 6 4122 4121 4124 4125 9790 7173 6 4122 4123 4125 4126 4127 4396 6 4124 4123 4126 7172 4141 7173 6 4124 4125 4127 4128 4129 4141 6 4124 4126 4128 4396 4397 4398 6 4127 4126 4129 4130 4131 4398 6 4128 4126 4130 4137 4140 4141 6 4128 4129 4131 4132 4136 4137 6 4128 4130 4132 4133 4398 4399 6 4131 4130 4133 4134 4135 4136 6 4131 4132 4134 4402 4399 4411 6 4133 4132 4135 4411 4412 4413 6 4134 4132 4136 4413 4414 7165 6 4135 4132 4130 4137 4138 7165 6 4136 4130 4129 4138 4139 4140 6 4136 4137 4139 7164 7162 7165 6 4138 4137 4140 7169 7164 7170 6 4139 4137 4129 4141 7170 7171 6 4140 4129 4126 7171 7172 4125 6 3581 3582 4143 4269 4270 4271 6 4142 3582 3583 4144 4271 4272 6 4143 3583 3584 4145 4272 4273 6 4144 3584 3585 4146 4273 4274 6 4145 3585 3586 4147 4274 4275 6 4146 3586 3587 4148 4275 4276 6 4147 3587 3588 4149 4276 4277 6 4148 3588 3589 3590 4150 4277 6 4149 3590 4151 4277 4278 4279 6 4150 3590 3591 4152 4279 4280 6 4151 3591 3592 4153 4280 4281 6 4152 3592 3593 4154 4281 4282 6 4153 3593 3594 4155 4282 4283 6 4154 3594 3595 4156 4283 4284 6 4155 3595 3596 4157 4284 4285 6 4156 3596 3597 4158 4285 4286 6 4157 3597 3598 4159 4286 4287 6 4158 3598 3599 4160 4287 4288 6 4159 3599 3600 4161 4288 4289 6 4160 3600 3601 4162 4289 4290 6 4161 3601 3602 3603 4163 4290 6 4162 3603 4164 4290 4291 4292 6 4163 3603 3604 4165 4292 4293 6 4164 3604 3605 4166 4293 4294 6 4165 3605 3606 4167 4294 4295 6 4166 3606 3607 4168 4295 4296 6 4167 3607 3608 4169 4296 4297 6 4168 3608 3609 3610 4170 4297 6 4169 3610 4171 4297 4298 4299 6 4170 3610 3611 4172 4299 4300 6 4171 3611 3612 4173 4300 4301 6 4172 3612 3613 4174 4301 4302 6 4173 3613 3614 4175 4302 4303 6 4174 3614 3615 4176 4303 4304 6 4175 3615 3616 4177 4304 4305 6 4176 3616 3617 4178 4305 4306 6 4177 3617 3618 4179 4306 4307 6 4178 3618 3619 4180 4307 4308 6 4179 3619 3620 4181 4308 4309 6 4180 3620 3621 4182 4309 4310 6 4181 3621 3622 4183 4310 4311 6 4182 3622 3623 4184 4311 4312 6 4183 3623 3624 4185 4312 4313 6 4184 3624 3625 4186 4313 4314 6 4185 3625 3626 4187 4314 4315 6 4186 3626 3627 4188 4315 4316 6 4187 3627 3628 4189 4316 4317 6 4188 3628 3629 4190 4317 4318 6 4189 3629 3630 4191 4318 4319 6 4190 3630 3631 4192 4319 4320 6 4191 3631 3632 4193 4320 4321 6 4192 3632 3633 4194 4321 4322 6 4193 3633 3634 3635 4195 4322 6 4194 3635 3904 4196 4322 4323 6 4195 3904 4197 4323 4324 4325 6 4196 3904 3905 3906 4198 4325 6 4197 3906 4199 4325 4326 4327 6 4198 3906 3907 3908 4200 4327 6 4199 3908 3909 4201 4327 4328 6 4200 3909 3928 3929 4202 4328 6 4201 3929 3930 4203 4328 4329 6 4202 3930 3931 4204 4329 4330 6 4203 3931 4205 4330 4331 4332 6 4204 3931 3932 3933 4206 4332 6 4205 3933 3934 4207 4332 4333 6 4206 3934 3935 4208 4333 4334 7 4207 3935 3936 3938 4334 4335 4336 6 4051 4053 4210 4211 4212 4222 6 4051 4209 4211 4471 4050 4478 6 4210 4209 4212 4213 4478 4479 6 4211 4209 4213 4214 4221 4222 6 4211 4212 4214 4215 4479 4480 6 4213 4212 4215 4216 4217 4221 6 4213 4214 4216 4480 4481 4482 6 4215 4214 4217 4218 4482 4483 6 4216 4214 4218 4219 4220 4221 6 4216 4217 4219 4233 4483 4484 6 4218 4217 4220 4233 4234 4235 6 4219 4217 4221 4225 4235 4224 6 4220 4217 4214 4212 4222 4224 6 4221 4212 4209 4053 4223 4224 6 4222 4053 4054 4056 4057 4224 6 4223 4057 4225 4222 4221 4220 6 4224 4057 4058 4226 4235 4220 6 4225 4058 4227 4236 4235 4489 5 4226 4058 4059 4228 4489 7 4227 4059 4060 4229 4230 4488 4489 6 4228 4060 4230 4231 4063 4061 6 4228 4229 4231 4490 4488 4501 6 4230 4229 4063 4501 4502 4503 6 3148 3413 3147 3146 9792 3414 6 4218 4219 4234 4484 4485 4486 6 4233 4219 4235 4236 4486 4487 6 4234 4219 4236 4226 4225 4220 6 4234 4235 4226 4487 4488 4489 6 3890 3891 4238 4252 4253 4257 6 4237 3891 3892 3572 4257 4258 6 3957 3958 4240 7816 7817 4504 6 4239 3958 3804 4101 4241 4504 6 4240 4101 4242 4504 4505 4506 6 4241 4101 4102 4243 4506 4507 6 4242 4102 4103 4244 4417 4507 6 4243 4103 4245 4417 4418 4419 6 4244 4103 4104 4112 4246 4419 6 4245 4112 4247 4248 4419 4420 6 4246 4112 4248 4249 4250 4113 6 4246 4247 4249 4420 7830 7831 6 4248 4247 4250 4392 4740 7831 6 4249 4247 4113 4114 4115 4392 6 3342 3339 1525 1526 2206 2207 6 3890 4237 4253 4254 4429 3889 6 4252 4237 4254 4255 4256 4257 6 4252 4253 4255 4648 4429 6893 6 4254 4253 4256 4730 4731 6893 6 4255 4253 4257 4730 4262 4261 6 4256 4253 4237 4238 4258 4261 6 4257 4238 3572 3573 4259 4261 6 4258 3573 3574 3575 4260 4261 6 4259 3575 4261 4262 4263 4264 6 4259 4260 4262 4257 4258 4256 6 4261 4260 4263 4733 4730 4256 6 4262 4260 4264 6902 4733 6903 6 4263 4260 3575 3576 4265 6903 6 4264 3576 3577 4266 5232 6903 6 4265 3577 3578 4267 5232 5233 6 4266 3578 3579 4268 5233 5234 6 4267 3579 4269 5234 5235 4270 6 4268 3579 3580 3581 4142 4270 6 4269 4142 4271 5235 4268 5452 6 4270 4142 4143 4272 5452 5453 6 4271 4143 4144 4273 5453 5454 6 4272 4144 4145 4274 5454 5455 6 4273 4145 4146 4275 5458 5455 6 4274 4146 4147 4276 5470 5458 6 4275 4147 4148 4277 5470 5471 6 4276 4148 4149 4150 4278 5471 6 4277 4150 4279 5471 5472 5473 6 4278 4150 4151 4280 5473 5474 6 4279 4151 4152 4281 5474 5475 6 4280 4152 4153 4282 5047 5475 6 4281 4153 4154 4283 5047 5048 6 4282 4154 4155 4284 5048 5049 6 4283 4155 4156 4285 5049 5050 6 4284 4156 4157 4286 5050 5051 6 4285 4157 4158 4287 5051 5052 6 4286 4158 4159 4288 5052 5053 6 4287 4159 4160 4289 4924 5053 6 4288 4160 4161 4290 4924 4925 6 4289 4161 4162 4163 4291 4925 6 4290 4163 4292 4925 4926 4927 6 4291 4163 4164 4293 4927 4928 6 4292 4164 4165 4294 4928 4929 6 4293 4165 4166 4295 4929 4930 6 4294 4166 4167 4296 4930 4931 6 4295 4167 4168 4297 4931 4932 6 4296 4168 4169 4170 4298 4932 6 4297 4170 4299 4772 4932 4933 6 4298 4170 4171 4300 4772 4773 6 4299 4171 4172 4301 4773 4774 6 4300 4172 4173 4302 4774 4775 6 4301 4173 4174 4303 4775 4776 6 4302 4174 4175 4304 4776 4777 6 4303 4175 4176 4305 4777 4778 6 4304 4176 4177 4306 4778 4779 6 4305 4177 4178 4307 4779 4780 6 4306 4178 4179 4308 4780 4781 6 4307 4179 4180 4309 4781 4782 6 4308 4180 4181 4310 4782 4783 6 4309 4181 4182 4311 4567 4783 6 4310 4182 4183 4312 4567 4568 6 4311 4183 4184 4313 4568 4569 6 4312 4184 4185 4314 4569 4570 6 4313 4185 4186 4315 4570 4571 6 4314 4186 4187 4316 4571 4572 6 4315 4187 4188 4317 4572 4573 6 4316 4188 4189 4318 4573 4574 6 4317 4189 4190 4319 4574 4575 6 4318 4190 4191 4320 4575 4576 6 4319 4191 4192 4321 4576 4577 6 4320 4192 4193 4322 4577 4578 6 4321 4193 4194 4195 4323 4578 6 4322 4195 4196 4324 4578 4579 6 4323 4196 4325 4579 4580 4581 6 4324 4196 4197 4198 4326 4581 6 4325 4198 4327 4581 4582 4583 6 4326 4198 4199 4200 4328 4583 6 4327 4200 4201 4202 4329 4583 6 4328 4202 4203 4330 4583 4584 6 4329 4203 4204 4331 4584 4585 6 4330 4204 4332 4585 4586 4590 7 4331 4204 4205 4206 4333 4590 4591 6 4332 4206 4207 4334 4591 4592 6 4333 4207 4208 4335 4592 4593 6 4334 4208 4336 4337 4430 4593 5 4335 4208 3938 3939 4337 6 4336 3939 3940 4338 4335 4430 6 4337 3940 3941 4339 4430 4431 6 4338 3941 3942 4340 4431 4432 6 4339 3942 3943 4341 4432 4433 6 4340 3943 3944 4342 4433 4434 6 4341 3944 4343 4434 4435 4436 6 4342 3944 3376 3377 4344 4436 6 4343 3377 3378 4345 4346 4436 6 4344 3378 4346 4347 4348 3379 6 4344 4345 4347 4436 4437 4438 6 4346 4345 4348 4438 4439 4349 6 4347 4345 3379 3646 3647 4349 6 4348 3647 4350 4351 4439 4347 6 4349 3647 4351 4352 4353 3648 6 4349 4350 4352 4602 4439 4603 6 4351 4350 4353 4603 4604 4605 6 4352 4350 3648 3649 4354 4605 6 4353 3649 3658 4355 4356 4605 6 4354 3658 4356 4357 4358 4359 6 4354 4355 4357 4605 4606 4607 6 4356 4355 4358 4362 4363 4607 6 4357 4355 4359 4360 4361 4362 6 4358 4355 4360 4372 3659 3658 6 4358 4359 4361 4369 4370 4372 6 4358 4360 4362 4365 4369 4615 6 4358 4361 4357 4363 4364 4365 6 4357 4362 4364 4607 4608 4609 6 4363 4362 4365 4612 4609 4613 6 4364 4362 4361 4613 4614 4615 6 4098 4099 4367 4373 4374 4375 6 4366 4099 4368 4375 4376 4377 7 4367 4099 4100 3095 4377 1627 1625 6 4361 4360 4370 4371 4615 4616 6 4369 4360 4371 4372 9795 9794 6 4369 4370 9795 4643 4638 4616 6 4370 4360 4359 3659 9794 3660 6 4098 4366 4374 7213 3541 3542 6 4373 4366 4375 7213 7211 7210 6 4374 4366 4367 4376 7210 7214 6 4375 4367 4377 4378 7214 7215 6 4376 4367 4368 4378 1628 1627 5 4376 4377 1628 7215 7216 6 4092 4095 4380 4381 4382 4388 7 4092 4379 4381 7754 4091 7753 7755 6 4380 4379 4382 4383 7755 7756 6 4381 4379 4383 4384 4385 4388 6 4381 4382 4384 7756 7757 7765 6 4383 4382 4385 4386 4390 7765 6 4384 4382 4386 3141 4387 4388 6 4384 4385 3141 4390 4391 3142 6 3141 4385 4388 4096 4389 3140 6 4387 4385 4382 4379 4095 4096 6 4387 4096 2810 2811 2814 3140 6 4384 4386 4391 7765 7766 7767 6 4390 4386 3142 7767 7768 3143 6 4250 4115 4393 4249 4740 4741 6 4392 4115 4116 4394 4403 4741 6 4393 4116 4395 4403 4404 4405 6 4394 4116 4111 3465 4405 3466 5 4122 4124 4127 4397 9785 7 4396 4127 4398 4400 4529 4530 9785 6 4397 4127 4128 4131 4399 4400 6 4398 4131 4400 4401 4402 4133 6 4398 4399 4401 4526 4529 4397 5 4400 4399 4402 4528 4526 7 4401 4399 4133 4411 4535 4528 4536 6 4393 4394 4404 4741 4742 4743 6 4403 4394 4405 4743 4744 4745 6 4404 4394 4395 3466 4745 4746 6 3838 3839 3865 4407 5027 5028 6 4406 3865 4408 5028 5029 5030 6 4407 3865 3866 4409 5030 5031 6 4408 3866 3867 4410 5031 5032 6 4409 3867 3869 4421 5032 5033 6 4402 4133 4134 4412 4536 4537 6 4411 4134 4413 4546 4540 4537 6 4412 4134 4135 4414 4415 4546 6 4413 4135 4415 4416 7165 7166 6 4413 4414 4416 4546 4545 4649 6 4415 4414 4650 4649 7166 7167 6 4243 4244 4418 4507 4508 4509 6 4417 4244 4419 4509 4510 4511 6 4418 4244 4245 4246 4420 4511 6 4419 4246 4248 7829 4511 7830 6 4410 3869 3870 4422 5033 5034 6 4421 3870 3871 3872 4423 5034 6 4422 3872 4424 5034 5035 5036 6 4423 3872 3873 4425 5036 5037 6 4424 3873 3874 4426 4644 5037 6 4425 3874 4427 4644 4645 4646 6 4426 3874 3875 4428 4646 4647 6 4427 3875 3876 4429 4647 4648 6 4428 3876 3889 4648 4254 4252 6 4335 4337 4338 4431 4593 4594 6 4430 4338 4339 4432 4594 4595 6 4431 4339 4340 4433 4595 4596 6 4432 4340 4341 4434 4596 4597 6 4433 4341 4342 4435 4597 4598 6 4434 4342 4436 4598 4599 4437 6 4435 4342 4343 4344 4346 4437 6 4436 4346 4438 4599 4435 4600 6 4437 4346 4347 4439 4600 4601 6 4438 4347 4349 4601 4602 4351 6 3994 3995 4441 4722 4723 4724 6 4440 3995 3996 4442 4724 4725 6 4441 3996 3997 4443 4725 4726 6 4442 3997 3998 4444 4726 4727 6 4443 3998 3999 4445 4727 4728 6 4444 3999 4000 4446 4728 4729 6 4445 4000 4001 4447 4729 4659 6 4446 4001 4002 4071 4448 4659 6 4447 4071 4072 4449 4659 4660 6 4448 4072 4450 4660 4661 4451 6 4449 4072 4073 4074 4075 4451 6 4450 4075 4076 4452 4661 4449 6 4451 4076 4453 4670 4739 4661 6 4452 4076 4077 4078 4454 4670 6 4453 4078 4079 4455 4670 4671 6 4454 4079 4080 4456 4671 4672 6 4455 4080 4081 4457 4672 4673 6 4456 4081 4082 4458 4673 4674 6 4457 4082 4083 4459 4674 4675 6 4458 4083 4084 4460 4675 4676 6 4459 4084 4085 4461 4676 4677 6 4460 4085 4086 4462 4677 4678 6 4461 4086 4463 4678 4679 4680 7 4462 4086 4034 4035 4042 4464 4680 5 4463 4042 4465 4680 4681 6 4464 4042 4043 4466 4472 4681 6 4465 4043 4467 4472 4473 4474 6 4466 4043 4044 4468 4474 4475 6 4467 4044 4045 4469 4475 4476 6 4468 4045 4046 4470 4476 4477 6 4469 4046 4048 4049 4471 4477 6 4470 4049 4050 4210 4477 4478 6 4465 4466 4473 4681 4682 4683 6 4472 4466 4474 4683 4684 4685 6 4473 4466 4467 4475 4685 4686 6 4474 4467 4468 4476 4686 4687 6 4475 4468 4469 4477 4687 4688 6 4476 4469 4470 4471 4478 4688 6 4477 4471 4210 4211 4479 4688 6 4478 4211 4213 4480 4688 5214 6 4479 4213 4215 4481 5214 5215 6 4480 4215 4482 5215 5216 5217 6 4481 4215 4216 4483 4491 5217 6 4482 4216 4218 4484 4491 4492 6 4483 4218 4233 4485 4492 4493 6 4484 4233 4486 4493 4494 4495 6 4485 4233 4234 4487 4495 4496 6 4486 4234 4236 4488 4490 4496 6 4487 4236 4489 4228 4490 4230 5 4488 4236 4228 4227 4226 6 4487 4488 4230 4496 4497 4501 6 4482 4483 4492 4982 4990 5217 6 4491 4483 4484 4493 4982 4983 6 4492 4484 4485 4494 4983 4984 6 4493 4485 4495 4984 4985 4986 6 4494 4485 4486 4496 4986 4498 6 4495 4486 4487 4490 4497 4498 6 4496 4490 4498 4499 4500 4501 6 4496 4497 4499 4986 4495 4987 6 4498 4497 4500 4987 4988 4989 5 4499 4497 4501 4989 4512 7 4500 4497 4490 4230 4231 4502 4512 6 4501 4231 4503 4512 4513 4514 6 4502 4231 4063 4514 4068 4064 6 4240 4241 4505 7817 4239 7818 6 4504 4241 4506 7818 7819 7820 6 4505 4241 4242 4507 7820 7821 6 4506 4242 4243 4417 4508 7821 6 4507 4417 4509 7821 7822 7823 6 4508 4417 4418 4510 7823 7824 6 4509 4418 4511 7824 7825 7826 6 4510 4418 4419 7826 7829 4420 7 4501 4502 4513 4989 4500 5003 5000 6 4512 4502 4514 4755 4760 5003 5 4513 4502 4503 4068 4755 6 427 412 4516 4517 5612 5613 6 4515 412 4517 4518 4522 411 6 4515 4516 4518 4519 5612 5616 6 4517 4516 4519 4520 4521 4522 6 4517 4518 4520 9735 7509 5616 6 4519 4518 4521 5236 9735 9679 6 4520 4518 4522 5236 5237 5238 6 4521 4518 4516 411 5238 422 7 3508 3511 3771 4524 6694 6696 6705 6 4523 3771 4525 6695 6694 4533 6 4524 3771 3772 4526 4527 4533 7 4525 3772 4527 4528 4401 4400 4529 6 4525 4526 4528 4533 4534 4535 5 4527 4526 4401 4535 4402 6 4400 4526 3772 3773 4530 4397 6 4529 3773 3774 4531 4397 9785 6 4530 3774 4532 4117 4120 9785 5 4531 3774 4117 3522 3521 6 4525 4527 4534 5157 4524 6695 6 4533 4527 4535 5157 5158 4667 6 4534 4527 4528 4402 4536 4667 6 4535 4402 4411 4537 4538 4667 6 4536 4411 4538 4539 4540 4412 6 4536 4537 4539 4667 4668 4669 6 4538 4537 4540 4541 4547 4669 6 4539 4537 4541 4542 4546 4412 6 4539 4540 4542 4543 4547 4548 6 4541 4540 4543 4544 4545 4546 6 4541 4542 4544 4551 4548 4552 6 4543 4542 4545 4552 4553 4554 6 4544 4542 4546 4415 4649 4554 6 4545 4542 4540 4412 4413 4415 6 4539 4541 4548 4549 9763 4669 6 4547 4541 4549 4550 4551 4543 6 4547 4548 4550 4558 4561 9763 6 4549 4548 4551 4558 4559 4560 6 4550 4548 4543 4552 6764 4560 6 4551 4543 4544 4553 7145 6764 6 4552 4544 4554 4555 7146 7145 6 4553 4544 4555 4556 4545 4649 6 4553 4554 4556 4557 7146 7147 6 4555 4554 4557 4649 4650 7154 6 4555 4556 7147 7149 7150 7154 6 4549 4550 4559 4561 4562 4563 6 4558 4550 4560 4566 4563 6765 6 4559 4550 6764 6763 6765 4551 7 4549 4558 4562 9763 9762 6676 9793 6 4561 4558 4563 4564 6675 6676 6 4562 4558 4564 4565 4566 4559 6 4562 4563 4565 6666 6667 6675 6 4564 4563 4566 6674 6666 6791 6 4565 4563 4559 6765 6766 6791 6 4310 4311 4568 4783 4784 4785 6 4567 4311 4312 4569 4785 4786 6 4568 4312 4313 4570 4786 4787 6 4569 4313 4314 4571 4787 4788 6 4570 4314 4315 4572 4788 4789 6 4571 4315 4316 4573 4789 4790 6 4572 4316 4317 4574 4790 4791 6 4573 4317 4318 4575 4791 4792 6 4574 4318 4319 4576 4792 4793 6 4575 4319 4320 4577 4793 4794 6 4576 4320 4321 4578 4794 4795 6 4577 4321 4322 4323 4579 4795 6 4578 4323 4324 4580 4795 4796 6 4579 4324 4581 4796 4797 4798 6 4580 4324 4325 4326 4582 4798 6 4581 4326 4583 4798 4799 4584 6 4582 4326 4327 4328 4329 4584 6 4583 4329 4330 4585 4799 4582 7 4584 4330 4331 4586 4587 4805 4799 6 4585 4331 4587 4588 4589 4590 5 4585 4586 4588 4805 4806 6 4587 4586 4589 4806 4807 4808 6 4588 4586 4590 4808 4809 4810 6 4589 4586 4331 4332 4591 4810 5 4590 4332 4333 4592 4810 6 4591 4333 4334 4593 4810 4811 6 4592 4334 4335 4430 4594 4811 6 4593 4430 4431 4595 4811 4812 6 4594 4431 4432 4596 4812 4813 6 4595 4432 4433 4597 4813 4814 6 4596 4433 4434 4598 4814 4815 6 4597 4434 4435 4599 4815 4816 6 4598 4435 4437 4600 4816 4817 6 4599 4437 4438 4601 4817 4818 6 4600 4438 4439 4602 4818 4819 6 4601 4439 4351 4603 4822 4819 6 4602 4351 4352 4604 4822 4823 6 4603 4352 4605 4826 4823 4827 7 4604 4352 4353 4354 4356 4606 4827 5 4605 4356 4607 4827 4828 6 4606 4356 4357 4363 4608 4828 5 4607 4363 4609 4610 4828 6 4608 4363 4610 4611 4612 4364 7 4608 4609 4611 4828 4829 4830 4831 6 4610 4609 4612 4831 4832 4833 6 4611 4609 4364 4613 4833 4835 6 4612 4364 4365 4614 4838 4835 6 4613 4365 4615 4617 4618 4838 6 4614 4365 4361 4369 4616 4617 7 4615 4369 4617 4638 4635 4620 4371 6 4615 4616 4614 4618 4619 4620 6 4614 4617 4619 4838 4623 4839 6 4618 4617 4620 4621 4622 4623 6 4619 4617 4621 4634 4635 4616 6 4619 4620 4622 4629 4630 4634 6 4619 4621 4623 4624 4625 4629 6 4619 4622 4624 4841 4839 4618 6 4623 4622 4625 4626 4841 4842 6 4624 4622 4626 4627 4628 4629 6 4624 4625 4627 4842 4861 4854 6 4626 4625 4628 4861 4862 4863 6 4627 4625 4629 4863 4864 4631 6 4628 4625 4622 4621 4630 4631 6 4629 4621 4631 4632 4633 4634 6 4629 4630 4632 4864 4628 4865 6 4631 4630 4633 4639 4869 4865 6 4632 4630 4634 4639 4640 4636 6 4633 4630 4621 4620 4635 4636 6 4634 4620 4636 4637 4638 4616 6 4634 4635 4637 4640 4633 4641 6 4636 4635 4638 4641 4642 4643 5 4637 4635 4616 4643 4371 6 4632 4633 4640 4869 4913 9761 6 4639 4633 4636 4641 4913 4914 6 4640 4636 4637 4642 4917 4914 6 4641 4637 4643 4911 4917 4910 7 4642 4637 4638 4909 4910 9795 4371 6 4425 4426 4645 5037 5038 5045 6 4644 4426 4646 5046 5045 6890 6 4645 4426 4427 4647 6891 6890 6 4646 4427 4428 4648 6891 6892 6 4647 4428 4429 4254 6892 6893 6 4545 4415 4554 4556 4650 4416 6 4556 4649 4416 7167 7155 7154 6 423 53 54 4652 4653 9685 6 4651 54 4653 4654 4658 55 6 4651 4652 4654 4655 9684 9685 6 4653 4652 4655 4656 4657 4658 6 4653 4654 4656 9683 9681 9684 6 4655 4654 4657 9683 9686 9687 7 4656 4654 4658 5381 9689 9687 9690 6 4657 4654 4652 55 5381 56 6 4447 4448 4660 4729 4446 4737 6 4659 4448 4449 4661 4737 4738 6 4660 4449 4451 4738 4739 4452 6 3896 3897 3898 4663 7842 4759 6 4662 3898 3899 4664 7842 7843 6 4663 3899 4665 7843 4690 4689 6 4664 3899 3900 4666 3686 4689 6 4665 3900 3901 3902 3903 3686 6 4535 4536 4538 4668 5158 4534 6 4667 4538 4669 9751 5158 9762 6 4668 4538 4539 9762 9763 4547 7 4452 4453 4454 4671 4981 4739 5195 6 4670 4454 4455 4672 5195 5196 6 4671 4455 4456 4673 5196 5197 6 4672 4456 4457 4674 5197 5198 6 4673 4457 4458 4675 5198 5199 6 4674 4458 4459 4676 5199 5200 6 4675 4459 4460 4677 5200 5201 6 4676 4460 4461 4678 5201 5202 6 4677 4461 4462 4679 5202 5203 6 4678 4462 4680 5203 5204 5205 6 4679 4462 4463 4464 4681 5205 7 4680 4464 4465 4472 4682 5205 5206 5 4681 4472 4683 5206 5207 7 4682 4472 4473 4684 5207 5208 5209 5 4683 4473 4685 5209 5210 7 4684 4473 4474 4686 5210 5211 5212 6 4685 4474 4475 4687 5212 5213 6 4686 4475 4476 4688 5213 5214 6 4687 4476 4477 4478 4479 5214 6 4665 3686 3687 3688 4690 4664 6 4689 3688 4691 7843 4664 7844 6 4690 3688 3689 4692 7844 7845 6 4691 3689 3690 4693 5159 7845 6 4692 3690 3691 3693 4694 5159 6 4693 3693 4695 5159 5160 5161 6 4694 3693 3694 4696 5161 5162 6 4695 3694 4697 5162 5163 5164 6 4696 3694 3695 3696 4698 5164 6 4697 3696 4699 5164 5165 5166 6 4698 3696 3697 4700 5166 4701 6 4699 3697 3698 3699 3973 4701 6 4700 3973 4702 5166 4699 7855 6 4701 3973 3974 3975 4703 7855 6 4702 3975 4704 7309 7855 7856 6 4703 3975 3976 4705 7309 7310 6 4704 3976 3977 4706 7310 7311 6 4705 3977 3978 4707 7311 7312 6 4706 3978 3979 4708 7312 7313 6 4707 3979 3980 4709 5171 7313 6 4708 3980 3981 4710 5171 5172 6 4709 3981 3982 4711 5172 5173 6 4710 3982 3983 4712 5173 5174 6 4711 3983 3984 4713 5174 5175 6 4712 3984 3985 4714 5175 5176 6 4713 3985 3986 4715 5176 5177 6 4714 3986 3987 4716 5177 5178 6 4715 3987 3988 4717 4966 5178 6 4716 3988 3989 4718 4966 4967 6 4717 3989 3990 4719 4967 4968 6 4718 3990 3991 4720 4968 4969 6 4719 3991 3992 4721 4969 4970 6 4720 3992 3993 4722 4970 4971 6 4721 3993 3994 4440 4723 4971 6 4722 4440 4724 4971 4972 4973 6 4723 4440 4441 4725 4973 4974 6 4724 4441 4442 4726 4974 4975 6 4725 4442 4443 4727 4734 4975 6 4726 4443 4444 4728 4734 4735 6 4727 4444 4445 4729 4735 4736 6 4728 4445 4446 4659 4736 4737 6 4255 4256 4731 4732 4733 4262 6 4255 4730 4732 6893 6894 6895 6 4731 4730 4733 6895 6896 6897 6 4732 4730 4262 6897 6902 4263 6 4726 4727 4735 4975 4976 4977 6 4734 4727 4728 4736 4977 4978 6 4735 4728 4729 4737 4978 4979 6 4736 4729 4659 4660 4738 4979 6 4737 4660 4661 4739 4979 4980 6 4738 4661 4452 4980 4981 4670 6 4249 4392 4741 5004 7831 7832 6 4740 4392 4393 4403 4742 5004 6 4741 4403 4743 4754 5004 5005 6 4742 4403 4404 4744 4754 4749 6 4743 4404 4745 3893 3894 4749 6 4744 4404 4405 4746 4747 3893 6 4745 4405 3466 3467 3469 4747 6 4746 3469 4748 3398 3893 4745 6 4747 3469 2173 2174 3396 3398 6 4744 3894 4750 4751 4754 4743 6 4749 3894 4751 4752 4753 3895 6 4749 4750 4752 5006 4754 7838 6 4751 4750 4753 4758 7838 7839 6 4752 4750 3895 4758 4759 3896 6 4742 4743 4749 5005 5006 4751 7 4514 4068 4069 4756 4513 4760 4761 5 4755 4069 4757 4761 4762 7 4756 4069 4070 3828 4762 4763 4764 6 4752 4753 4759 7839 7840 7841 6 4758 4753 3896 7841 7842 4662 6 4513 4755 4761 5007 5003 5002 5 4760 4755 4756 4762 5007 7 4761 4756 4757 4763 5007 5008 5009 6 4762 4757 4764 5009 5010 5011 6 4763 4757 3828 3829 4765 5011 6 4764 3829 4766 5011 5012 5013 6 4765 3829 3830 3831 4767 5013 6 4766 3831 3832 4768 4769 5013 6 4767 3832 4769 4770 4771 3833 7 4767 4768 4770 5013 5012 5014 5015 6 4769 4768 4771 5015 5016 5017 6 4770 4768 3833 5017 3835 3834 6 4298 4299 4773 4933 4934 4935 6 4772 4299 4300 4774 4935 4936 6 4773 4300 4301 4775 4936 4937 6 4774 4301 4302 4776 4937 4938 6 4775 4302 4303 4777 4938 4939 6 4776 4303 4304 4778 4939 4940 6 4777 4304 4305 4779 4940 4941 6 4778 4305 4306 4780 4941 4942 6 4779 4306 4307 4781 4942 4943 6 4780 4307 4308 4782 4943 4944 6 4781 4308 4309 4783 4944 4945 6 4782 4309 4310 4567 4784 4945 6 4783 4567 4785 4945 4946 4947 6 4784 4567 4568 4786 4947 4948 6 4785 4568 4569 4787 4948 4949 6 4786 4569 4570 4788 4949 4950 6 4787 4570 4571 4789 4950 4951 6 4788 4571 4572 4790 4951 4952 6 4789 4572 4573 4791 4952 4953 6 4790 4573 4574 4792 4953 4954 6 4791 4574 4575 4793 4954 4955 6 4792 4575 4576 4794 4800 4955 6 4793 4576 4577 4795 4800 4801 6 4794 4577 4578 4579 4796 4801 6 4795 4579 4580 4797 4801 4802 6 4796 4580 4798 4802 4803 4804 6 4797 4580 4581 4582 4799 4804 6 4798 4582 4584 4804 4805 4585 6 4793 4794 4801 4955 4956 4957 6 4800 4794 4795 4796 4802 4957 6 4801 4796 4797 4803 4957 4958 6 4802 4797 4804 4958 4959 4960 6 4803 4797 4798 4799 4805 4960 6 4804 4799 4585 4587 4806 4960 6 4805 4587 4588 4807 4919 4960 6 4806 4588 4808 4919 4920 4921 6 4807 4588 4589 4809 4921 4922 6 4808 4589 4810 4922 4923 4811 6 4809 4589 4590 4591 4592 4811 7 4810 4592 4593 4594 4812 4923 4809 5 4811 4594 4595 4813 4923 6 4812 4595 4596 4814 4965 4923 6 4813 4596 4597 4815 5094 4965 6 4814 4597 4598 4816 5094 5095 6 4815 4598 4599 4817 5095 5096 6 4816 4599 4600 4818 5096 5097 6 4817 4600 4601 4819 4820 5097 6 4818 4601 4820 4821 4822 4602 6 4818 4819 4821 5097 5098 5099 6 4820 4819 4822 5099 5100 4824 6 4821 4819 4602 4603 4823 4824 6 4822 4603 4824 4825 4826 4604 6 4822 4823 4825 5100 4821 5101 6 4824 4823 4826 5101 5102 5103 6 4825 4823 4604 4827 5103 5104 6 4826 4604 4605 4606 4828 5104 7 4827 4606 4607 4608 4610 4829 5104 6 4828 4610 4830 5104 5103 5105 6 4829 4610 4831 5105 5106 5107 6 4830 4610 4611 4832 5107 5108 6 4831 4611 4833 4834 5114 5108 5 4832 4611 4612 4834 4835 6 4832 4833 4835 4836 5114 5115 7 4834 4833 4612 4836 4837 4838 4613 6 4834 4835 4837 5115 4846 4845 6 4836 4835 4838 4839 4840 4845 6 4837 4835 4613 4614 4618 4839 6 4837 4838 4840 4841 4623 4618 6 4837 4839 4841 4843 4844 4845 6 4840 4839 4623 4624 4842 4843 6 4841 4624 4843 4626 4853 4854 6 4841 4842 4840 4844 4853 4851 6 4840 4843 4845 4846 4847 4851 5 4840 4844 4846 4836 4837 7 4845 4844 4847 4848 5115 4836 5116 6 4846 4844 4848 4849 4850 4851 6 4846 4847 4849 5118 5116 5119 6 4848 4847 4850 5119 5120 5121 6 4849 4847 4851 4852 5121 5122 6 4850 4847 4852 4853 4843 4844 6 4850 4851 4853 4855 4856 5122 6 4852 4851 4843 4842 4854 4855 6 4853 4842 4855 4858 4861 4626 6 4852 4853 4854 4856 4857 4858 6 4852 4855 4857 5122 5123 5124 6 4856 4855 4858 4859 5124 5125 6 4857 4855 4854 4859 4860 4861 6 4857 4858 4860 5125 5126 5130 6 4859 4858 4861 5130 5131 4862 6 4860 4858 4854 4626 4627 4862 6 4861 4627 4863 5131 4860 5132 6 4862 4627 4628 4864 4866 5132 6 4863 4628 4631 4865 4866 4867 6 4864 4631 4867 4868 4869 4632 6 4863 4864 4867 5132 5133 5137 6 4866 4864 4865 4868 5137 5138 6 4867 4865 4869 4870 4871 5138 6 4868 4865 4632 4639 4870 9761 6 4868 4869 4871 4872 4873 9761 6 4868 4870 4872 5138 5139 5140 6 4871 4870 4873 4874 5151 5140 6 4872 4870 4874 4875 4876 9761 6 4872 4873 4875 5150 5148 5151 6 4874 4873 4876 4877 4878 5150 6 4875 4873 4877 9761 4913 4915 6 4875 4876 4878 4879 4880 4915 6 4875 4877 4879 5156 5150 4883 6 4878 4877 4880 4881 4882 4883 6 4879 4877 4881 4915 4916 9754 7 4879 4880 4882 9754 9755 9757 9758 6 4879 4881 4883 4884 4885 9758 6 4879 4882 4884 5156 4878 5370 6 4883 4882 4885 4886 5370 5371 6 4884 4882 4886 4887 9758 4896 6 4884 4885 4887 4888 4889 5371 6 4886 4885 4888 4895 4892 4896 6 4886 4887 4889 4890 4891 4892 6 4886 4888 4890 5373 5371 5900 6 4889 4888 4891 5899 5897 5900 6 4890 4888 4892 4893 5899 5902 6 4891 4888 4893 4894 4895 4887 6 4891 4892 4894 5902 5903 5904 6 4893 4892 4895 5913 5904 5914 6 4894 4892 4887 4896 4897 5914 7 4895 4887 4897 4898 9758 9757 4885 6 4895 4896 4898 4899 4900 5914 5 4897 4896 4899 9757 9760 6 4897 4898 4900 4901 4902 9760 6 4897 4899 4901 5914 5915 5918 6 4900 4899 4902 4903 5918 5919 6 4901 4899 4903 4904 4905 9760 6 4901 4902 4904 5919 3672 3671 6 4903 4902 4905 4906 3670 3671 6 4904 4902 4906 9755 4912 9760 6 4904 4905 3670 4907 4908 4912 6 3670 4906 4908 4909 3662 3661 6 4907 4906 4909 4910 4911 4912 7 4907 4908 4910 4643 3661 9794 9795 5 4909 4908 4911 4643 4642 6 4910 4908 4912 4918 4917 4642 6 4911 4908 4906 9755 4918 4905 6 4639 4640 4914 4915 9761 4876 6 4913 4640 4915 4916 4917 4641 6 4913 4914 4916 4876 4877 4880 6 4915 4914 4917 4918 9754 4880 6 4916 4914 4918 4911 4642 4641 6 4916 4917 4911 9754 9755 4912 6 4806 4807 4920 4960 4959 4961 6 4919 4807 4921 4961 4962 4963 6 4920 4807 4808 4922 4963 4964 6 4921 4808 4809 4923 4964 4965 6 4922 4809 4811 4965 4813 4812 6 4288 4289 4925 5053 5054 5055 6 4924 4289 4290 4291 4926 5055 6 4925 4291 4927 5055 5056 5057 6 4926 4291 4292 4928 5057 5058 6 4927 4292 4293 4929 5058 5059 6 4928 4293 4294 4930 5059 5060 6 4929 4294 4295 4931 5060 5061 6 4930 4295 4296 4932 5061 5062 6 4931 4296 4297 4298 4933 5062 6 4932 4298 4772 4934 5062 5063 6 4933 4772 4935 5063 5064 5065 6 4934 4772 4773 4936 5065 5066 6 4935 4773 4774 4937 5066 5067 6 4936 4774 4775 4938 5067 5068 6 4937 4775 4776 4939 5068 5069 6 4938 4776 4777 4940 5069 5070 6 4939 4777 4778 4941 5070 5071 6 4940 4778 4779 4942 5071 5072 6 4941 4779 4780 4943 5072 5073 6 4942 4780 4781 4944 5073 5074 6 4943 4781 4782 4945 5074 5075 6 4944 4782 4783 4784 4946 5075 6 4945 4784 4947 5075 5076 5077 6 4946 4784 4785 4948 5077 5078 6 4947 4785 4786 4949 5078 5079 6 4948 4786 4787 4950 5079 5080 6 4949 4787 4788 4951 5080 5081 6 4950 4788 4789 4952 5081 5082 6 4951 4789 4790 4953 5082 5083 6 4952 4790 4791 4954 5083 5084 6 4953 4791 4792 4955 5084 5085 6 4954 4792 4793 4800 4956 5085 6 4955 4800 4957 5085 5086 5087 6 4956 4800 4801 4802 4958 5087 6 4957 4802 4803 4959 5089 5087 6 4958 4803 4960 4919 4961 5089 6 4959 4803 4804 4805 4806 4919 6 4959 4919 4920 4962 5089 5090 6 4961 4920 4963 5090 5091 5092 6 4962 4920 4921 4964 5092 5093 6 4963 4921 4922 4965 5093 5094 6 4964 4922 4923 4813 5094 4814 6 4716 4717 4967 5178 5179 5180 6 4966 4717 4718 4968 5180 5181 6 4967 4718 4719 4969 5181 5182 6 4968 4719 4720 4970 5182 5183 6 4969 4720 4721 4971 5183 5184 6 4970 4721 4722 4723 4972 5184 6 4971 4723 4973 5184 5185 5186 6 4972 4723 4724 4974 5186 5187 6 4973 4724 4725 4975 5187 5188 6 4974 4725 4726 4734 4976 5188 6 4975 4734 4977 5188 5189 5190 6 4976 4734 4735 4978 5190 5191 6 4977 4735 4736 4979 5191 5192 6 4978 4736 4737 4738 4980 5192 6 4979 4738 4739 4981 5192 5193 6 4980 4739 4670 5193 5194 5195 6 4491 4492 4983 4990 4991 4992 6 4982 4492 4493 4984 4992 4993 6 4983 4493 4494 4985 4993 4994 6 4984 4494 4986 4994 4995 4996 6 4985 4494 4495 4498 4987 4996 6 4986 4498 4499 4988 4996 4997 6 4987 4499 4989 4997 4998 4999 6 4988 4499 4500 4512 4999 5000 6 4491 4982 4991 5217 5218 5219 6 4990 4982 4992 5219 5220 5221 6 4991 4982 4983 4993 5221 5222 6 4992 4983 4984 4994 5222 5223 6 4993 4984 4985 4995 5223 5224 6 4994 4985 4996 5224 5225 5226 6 4995 4985 4986 4987 4997 5226 6 4996 4987 4988 4998 5226 5227 6 4997 4988 4999 5227 5228 5229 6 4998 4988 4989 5000 5001 5229 6 4999 4989 5001 5002 5003 4512 6 4999 5000 5002 5229 5230 5231 7 5001 5000 5003 4760 5007 5167 5231 5 5002 5000 4512 4513 4760 6 4740 4741 4742 5005 7832 7835 6 5004 4742 4754 5006 7835 7836 6 5005 4754 4751 7836 7837 7838 7 4760 4761 4762 5008 5022 5002 5167 6 5007 4762 5009 5022 5023 5024 6 5008 4762 4763 5010 5024 5019 6 5009 4763 5011 5012 5018 5019 5 5010 4763 4764 4765 5012 7 5011 4765 5013 4769 5014 5010 5018 5 5012 4765 4766 4767 4769 6 5012 4769 5015 5021 5018 5242 6 5014 4769 4770 5016 5242 5243 6 5015 4770 5017 5243 5244 5025 5 5016 4770 4771 3835 5025 6 5010 5012 5019 5020 5021 5014 7 5010 5018 5020 5024 5009 5239 6834 6 5019 5018 5021 5239 5240 5241 5 5020 5018 5014 5241 5242 5 5007 5008 5023 5167 5168 6 5022 5008 5024 5168 5169 5170 6 5023 5008 5009 5019 5170 6834 7 5017 3835 3836 5026 5244 5016 5245 6 5025 3836 3837 5027 5245 5246 6 5026 3837 3838 4406 5028 5246 6 5027 4406 4407 5029 5246 5247 6 5028 4407 5030 5250 5247 6845 6 5029 4407 4408 5031 6845 6846 6 5030 4408 4409 5032 6846 6847 6 5031 4409 4410 5033 6850 6847 6 5032 4410 4421 5034 6850 6851 6 5033 4421 4422 4423 5035 6851 6 5034 4423 5036 6851 6852 6853 6 5035 4423 4424 5037 6853 5039 6 5036 4424 4425 4644 5038 5039 6 5037 4644 5039 5040 5041 5045 6 5037 5038 5040 6853 5036 6854 6 5039 5038 5041 5042 6857 6854 6 5040 5038 5042 5043 5044 5045 6 5040 5041 5043 6859 6857 6864 6 5042 5041 5044 6879 6880 6864 6 5043 5041 5045 5046 6881 6879 6 5044 5041 5046 4645 4644 5038 6 5044 5045 4645 6881 6882 6890 6 4281 4282 5048 5475 5476 5477 6 5047 4282 4283 5049 5477 5478 6 5048 4283 4284 5050 5478 5479 6 5049 4284 4285 5051 5479 5480 6 5050 4285 4286 5052 5480 5481 6 5051 4286 4287 5053 5481 5482 6 5052 4287 4288 4924 5054 5482 6 5053 4924 5055 5482 5483 5484 6 5054 4924 4925 4926 5056 5484 6 5055 4926 5057 5484 5485 5486 6 5056 4926 4927 5058 5486 5487 6 5057 4927 4928 5059 5487 5488 6 5058 4928 4929 5060 5488 5489 6 5059 4929 4930 5061 5489 5490 6 5060 4930 4931 5062 5490 5491 6 5061 4931 4932 4933 5063 5491 6 5062 4933 4934 5064 5491 5492 6 5063 4934 5065 5251 5492 5493 6 5064 4934 4935 5066 5251 5252 6 5065 4935 4936 5067 5252 5253 6 5066 4936 4937 5068 5253 5254 6 5067 4937 4938 5069 5254 5255 6 5068 4938 4939 5070 5255 5256 6 5069 4939 4940 5071 5256 5257 6 5070 4940 4941 5072 5257 5258 6 5071 4941 4942 5073 5258 5259 6 5072 4942 4943 5074 5259 5260 6 5073 4943 4944 5075 5260 5261 6 5074 4944 4945 4946 5076 5261 6 5075 4946 5077 5261 5262 5263 6 5076 4946 4947 5078 5263 5264 6 5077 4947 4948 5079 5264 5265 6 5078 4948 4949 5080 5265 5266 6 5079 4949 4950 5081 5266 5267 6 5080 4950 4951 5082 5267 5268 6 5081 4951 4952 5083 5268 5269 6 5082 4952 4953 5084 5269 5270 6 5083 4953 4954 5085 5270 5271 6 5084 4954 4955 4956 5086 5271 6 5085 4956 5087 5088 5271 5272 6 5086 4956 4957 5088 5089 4958 6 5086 5087 5089 5272 5273 5090 6 5088 5087 4958 4959 4961 5090 6 5089 4961 4962 5091 5273 5088 6 5090 4962 5092 5273 5274 5275 6 5091 4962 4963 5093 5275 5276 6 5092 4963 4964 5094 5276 5277 7 5093 4964 4965 4814 4815 5095 5277 6 5094 4815 4816 5096 5277 5278 6 5095 4816 4817 5097 5278 5279 6 5096 4817 4818 4820 5098 5279 6 5097 4820 5099 5279 5280 5281 6 5098 4820 4821 5100 5281 5282 6 5099 4821 4824 5101 5282 5283 6 5100 4824 4825 5102 5283 5153 6 5101 4825 5103 5105 5152 5153 6 5102 4825 4826 5104 4829 5105 5 5103 4826 4827 4828 4829 6 5103 4829 4830 5106 5102 5152 7 5105 4830 5107 5155 5152 5288 5289 6 5106 4830 4831 5108 5109 5289 6 5107 4831 5109 5110 5114 4832 6 5107 5108 5110 5111 5289 5290 6 5109 5108 5111 5112 5113 5114 6 5109 5110 5112 5290 5291 5295 6 5111 5110 5113 5295 5296 5117 6 5112 5110 5114 5115 5116 5117 6 5113 5110 5108 4832 4834 5115 6 5114 4834 4836 4846 5116 5113 6 5115 4846 5113 5117 5118 4848 6 5113 5116 5118 5296 5112 5297 6 5117 5116 4848 5119 5300 5297 6 5118 4848 4849 5120 5300 5301 6 5119 4849 5121 5301 5302 5303 5 5120 4849 4850 5122 5303 6 5121 4850 4852 4856 5123 5303 6 5122 4856 5124 5319 5303 5320 6 5123 4856 4857 5125 5322 5320 6 5124 4857 4859 5126 5127 5322 6 5125 4859 5127 5128 5129 5130 6 5125 5126 5128 5323 5322 5324 6 5127 5126 5129 5324 5325 5329 6 5128 5126 5130 5337 5329 5338 6 5129 5126 4859 4860 5131 5338 6 5130 4860 4862 5132 5338 5339 7 5131 4862 4863 4866 5133 5134 5339 6 5132 4866 5134 5135 5136 5137 5 5132 5133 5135 5339 5340 6 5134 5133 5136 5340 5341 5342 6 5135 5133 5137 5347 5345 5342 6 5136 5133 4866 4867 5138 5347 6 5137 4867 4868 4871 5139 5347 6 5138 4871 5140 5141 5345 5347 6 5139 4871 5141 5142 4872 5151 6 5139 5140 5142 5143 5346 5345 6 5141 5140 5143 5144 5145 5151 6 5141 5142 5144 5346 5361 5360 7 5143 5142 5145 5146 5361 5358 5362 6 5144 5142 5146 5147 5148 5151 6 5144 5145 5147 5362 5363 5367 5 5146 5145 5148 5149 5367 6 5147 5145 5149 5150 4874 5151 7 5147 5148 5150 5156 5367 5368 5369 6 5149 5148 4874 5156 4878 4875 6 4874 5148 4872 5140 5142 5145 6 5102 5105 5153 5154 5155 5106 6 5102 5152 5154 5283 5101 5284 6 5153 5152 5155 5284 5285 5286 6 5154 5152 5106 5286 5287 5288 6 5149 5150 4878 4883 5369 5370 7 4533 4534 5158 6683 6684 6685 6695 6 5157 4534 4667 6683 9751 4668 5 4692 4693 4694 5160 7845 7 5159 4694 5161 7845 7846 7847 7848 6 5160 4694 4695 5162 7848 7849 6 5161 4695 4696 5163 7849 7850 6 5162 4696 5164 7850 7851 7852 6 5163 4696 4697 4698 5165 7852 6 5164 4698 5166 7852 7853 7854 6 5165 4698 4699 4701 7854 7855 5 5002 5007 5022 5168 5231 8 5167 5022 5023 5169 5230 5231 6827 6825 6 5168 5023 5170 6827 6828 6831 7 5169 5023 5024 6831 6832 6833 6834 6 4708 4709 5172 7313 7314 7315 6 5171 4709 4710 5173 7315 7316 6 5172 4710 4711 5174 7316 7317 6 5173 4711 4712 5175 7317 7318 6 5174 4712 4713 5176 7318 7319 6 5175 4713 4714 5177 7319 7320 6 5176 4714 4715 5178 7320 7321 6 5177 4715 4716 4966 5179 7321 6 5178 4966 5180 7321 7322 7323 6 5179 4966 4967 5181 7323 7324 6 5180 4967 4968 5182 5412 7324 6 5181 4968 4969 5183 5412 5413 6 5182 4969 4970 5184 5413 5414 6 5183 4970 4971 4972 5185 5414 6 5184 4972 5186 5414 5415 5416 6 5185 4972 4973 5187 5404 5416 6 5186 4973 4974 5188 5404 5405 6 5187 4974 4975 4976 5189 5405 6 5188 4976 5190 5405 5406 5407 6 5189 4976 4977 5191 5407 5408 6 5190 4977 4978 5192 5408 5409 6 5191 4978 4979 4980 5193 5409 6 5192 4980 4981 5194 5409 5410 6 5193 4981 5195 5410 5411 5196 5 5194 4981 4670 4671 5196 6 5195 4671 4672 5197 5411 5194 7 5196 4672 4673 5198 5424 5411 5432 5 5197 4673 4674 5199 5432 7 5198 4674 4675 5200 5432 5433 5434 6 5199 4675 4676 5201 5434 5435 6 5200 4676 4677 5202 5435 5436 6 5201 4677 4678 5203 5436 5437 6 5202 4678 4679 5204 5437 5438 6 5203 4679 5205 5438 5439 5440 6 5204 4679 4680 4681 5206 5440 5 5205 4681 4682 5207 5440 7 5206 4682 4683 5208 5440 5441 5442 6 5207 4683 5209 5442 5443 5444 6 5208 4683 4684 5210 5425 5444 7 5209 4684 4685 5211 5425 5426 5427 5 5210 4685 5212 5427 5428 7 5211 4685 4686 5213 5428 5216 5215 5 5212 4686 4687 5214 5215 6 5213 4687 4688 4479 4480 5215 6 5214 4480 4481 5216 5212 5213 6 5215 4481 5217 5428 5212 5218 6 5216 4481 4482 4491 4990 5218 7 5217 4990 5219 5448 5428 5216 6811 6 5218 4990 4991 5220 6811 6812 6 5219 4991 5221 6812 6813 6814 6 5220 4991 4992 5222 6814 6815 5 5221 4992 4993 5223 6815 7 5222 4993 4994 5224 6815 6816 6817 5 5223 4994 4995 5225 6817 7 5224 4995 5226 6817 6818 6819 6820 6 5225 4995 4996 4997 5227 6820 6 5226 4997 4998 5228 6820 6821 6 5227 4998 5229 6821 6822 6823 6 5228 4998 4999 5001 5230 6823 7 5229 5001 5231 5168 6823 6824 6825 5 5230 5001 5168 5167 5002 6 4265 4266 5233 6903 6904 5459 6 5232 4266 4267 5234 5449 5459 6 5233 4267 4268 5235 5449 5450 6 5234 4268 4270 5450 5451 5452 6 4520 4521 5237 9678 9679 9680 6 5236 4521 5238 9680 9684 9685 6 5237 4521 4522 423 9685 422 6 5019 5020 5240 6833 6834 6835 6 5239 5020 5241 5649 6835 6836 6 5240 5020 5021 5242 5649 5650 7 5241 5021 5014 5015 5243 5650 5651 5 5242 5015 5016 5244 5651 7 5243 5016 5025 5245 5653 5651 5654 6 5244 5025 5026 5246 5654 5248 6 5245 5026 5027 5028 5247 5248 6 5246 5028 5248 5249 5250 5029 6 5246 5247 5249 5654 5245 6841 6 5248 5247 5250 6842 6841 6843 6 5249 5247 5029 6843 6844 6845 6 5064 5065 5252 5493 5494 5495 6 5251 5065 5066 5253 5495 5496 6 5252 5066 5067 5254 5496 5497 6 5253 5067 5068 5255 5497 5498 6 5254 5068 5069 5256 5498 5499 6 5255 5069 5070 5257 5499 5500 6 5256 5070 5071 5258 5500 5501 6 5257 5071 5072 5259 5501 5502 6 5258 5072 5073 5260 5502 5503 6 5259 5073 5074 5261 5503 5504 6 5260 5074 5075 5076 5262 5504 6 5261 5076 5263 5504 5505 5506 6 5262 5076 5077 5264 5506 5507 6 5263 5077 5078 5265 5507 5508 6 5264 5078 5079 5266 5508 5509 6 5265 5079 5080 5267 5509 5510 6 5266 5080 5081 5268 5510 5511 6 5267 5081 5082 5269 5511 5512 6 5268 5082 5083 5270 5512 5513 6 5269 5083 5084 5271 5513 5514 6 5270 5084 5085 5086 5272 5514 6 5271 5086 5088 5273 5514 5515 6 5272 5088 5090 5091 5274 5515 6 5273 5091 5275 5515 5516 5517 6 5274 5091 5092 5276 5520 5517 6 5275 5092 5093 5277 5520 5278 5 5276 5093 5094 5095 5278 6 5277 5095 5096 5279 5520 5276 6 5278 5096 5097 5098 5280 5520 6 5279 5098 5281 5520 5519 5521 6 5280 5098 5099 5282 5521 5378 6 5281 5099 5100 5283 5377 5378 6 5282 5100 5101 5153 5284 5377 6 5283 5153 5154 5285 5380 5377 6 5284 5154 5286 5525 5380 5526 6 5285 5154 5155 5287 5526 5527 6 5286 5155 5288 5527 5528 5292 6 5287 5155 5106 5289 5292 5290 5 5288 5106 5107 5109 5290 6 5289 5109 5111 5291 5292 5288 6 5290 5111 5292 5293 5294 5295 7 5290 5291 5293 5528 5287 5288 5529 6 5292 5291 5294 5529 5530 5534 5 5293 5291 5295 5534 5535 6 5294 5291 5111 5112 5296 5535 6 5295 5112 5117 5297 5298 5535 6 5296 5117 5298 5299 5300 5118 6 5296 5297 5299 5535 5536 5543 6 5298 5297 5300 5543 5544 5545 6 5299 5297 5118 5119 5301 5545 6 5300 5119 5120 5302 5305 5545 6 5301 5120 5303 5304 5305 5306 7 5302 5120 5304 5319 5123 5121 5122 6 5302 5303 5309 5306 5310 5319 6 5301 5302 5306 5307 5544 5545 6 5305 5302 5307 5308 5309 5304 6 5305 5306 5308 5544 5546 5547 6 5307 5306 5309 5312 5313 5547 6 5308 5306 5304 5310 5311 5312 6 5309 5304 5311 5317 5318 5319 6 5309 5310 5312 5315 5316 5317 6 5309 5311 5308 5313 5314 5315 6 5308 5312 5314 5547 5548 5549 6 5313 5312 5315 5549 5550 5551 6 5314 5312 5311 5316 5554 5551 6 5315 5311 5317 5556 5554 5559 6 5316 5311 5310 5318 5559 5560 6 5317 5310 5319 5320 5321 5560 6 5318 5310 5304 5303 5123 5320 6 5319 5123 5318 5321 5322 5124 6 5318 5320 5322 5323 5560 5561 6 5321 5320 5323 5127 5125 5124 6 5321 5322 5127 5324 5561 5562 6 5323 5127 5128 5325 5326 5562 6 5324 5128 5326 5327 5328 5329 6 5324 5325 5327 5562 5563 5564 6 5326 5325 5328 5573 5564 5574 6 5327 5325 5329 5330 5331 5574 6 5328 5325 5330 5337 5129 5128 6 5328 5329 5331 5332 5333 5337 6 5328 5330 5332 5574 5575 5576 6 5331 5330 5333 5334 5576 5577 6 5332 5330 5334 5335 5336 5337 6 5332 5333 5335 5577 5578 5579 6 5334 5333 5336 5579 5341 5340 6 5335 5333 5337 5338 5339 5340 6 5336 5333 5330 5329 5129 5338 6 5337 5129 5130 5131 5336 5339 6 5336 5338 5131 5132 5134 5340 6 5339 5134 5135 5341 5335 5336 6 5340 5135 5342 5343 5579 5335 6 5341 5135 5343 5344 5345 5136 6 5341 5342 5344 5349 5350 5579 6 5343 5342 5345 5346 5348 5349 7 5344 5342 5346 5141 5139 5347 5136 6 5344 5345 5141 5143 5348 5360 5 5139 5345 5136 5137 5138 6 5344 5346 5349 5352 5353 5360 6 5344 5348 5343 5350 5351 5352 6 5343 5349 5351 5579 5578 5580 6 5350 5349 5352 5580 5581 5585 6 5351 5349 5348 5353 5354 5585 6 5352 5348 5354 5355 5356 5360 6 5352 5353 5355 5609 5585 5610 6 5354 5353 5356 5357 5808 5610 6 5355 5353 5357 5358 5360 5361 6 5355 5356 5358 5359 5808 5809 6 5357 5356 5359 5361 5144 5362 7 5357 5358 5809 5810 5811 5364 5362 6 5356 5353 5348 5361 5143 5346 5 5356 5360 5143 5144 5358 6 5358 5144 5146 5363 5364 5359 6 5362 5146 5364 5365 5366 5367 5 5362 5363 5365 5811 5359 6 5364 5363 5366 5811 5812 5403 7 5365 5363 5367 5403 5402 5368 5376 6 5366 5363 5146 5147 5149 5368 6 5367 5149 5369 5375 5366 5376 6 5368 5149 5156 5370 5372 5375 6 5369 5156 4883 4884 5371 5372 6 5370 4884 5372 5373 4889 4886 6 5370 5371 5373 5374 5375 5369 6 5372 5371 5374 4889 5394 5900 6 5372 5373 5375 5376 5393 5394 5 5372 5374 5376 5369 5368 6 5375 5374 5393 5366 5368 5402 6 5282 5283 5378 5379 5380 5284 6 5282 5377 5379 5521 5281 5522 6 5378 5377 5380 5522 5523 5524 6 5379 5377 5284 5524 5525 5285 6 4657 4658 56 9690 431 57 6 1680 1681 1679 5383 5384 1683 6 1679 5382 5384 5385 7780 3416 6 5383 5382 5385 5386 3775 1683 6 5383 5384 5386 5387 7780 7781 6 5385 5384 5387 5388 5392 3775 6 5385 5386 5388 5389 7781 7782 6 5387 5386 5389 5390 5391 5392 6 5387 5388 5390 5617 7782 7783 6 5389 5388 5391 5617 5618 5619 6 5390 5388 5392 5619 5620 5621 6 5391 5388 5386 3775 5621 3776 6 5376 5374 5394 5395 5402 5399 6 5393 5374 5395 5373 5396 5900 6 5393 5394 5396 5397 5398 5399 5 5395 5394 5397 5900 5895 6 5395 5396 5398 5894 5891 5895 6 5395 5397 5399 5400 5890 5891 6 5395 5398 5400 5401 5402 5393 6 5399 5398 5401 5881 5889 5890 7 5399 5400 5402 5403 5888 5882 5881 6 5399 5401 5403 5366 5376 5393 6 5402 5401 5888 5812 5365 5366 6 5186 5187 5405 5416 5417 5418 6 5404 5187 5188 5189 5406 5418 6 5405 5189 5407 5418 5419 5420 6 5406 5189 5190 5408 5420 5421 6 5407 5190 5191 5409 5421 5422 6 5408 5191 5192 5193 5410 5422 6 5409 5193 5194 5411 5422 5423 6 5410 5194 5196 5423 5424 5197 6 5181 5182 5413 7324 7325 7326 6 5412 5182 5183 5414 7326 7327 6 5413 5183 5184 5185 5415 7327 6 5414 5185 5416 7327 7328 7329 6 5415 5185 5186 5404 5417 7329 6 5416 5404 5418 7329 7330 7331 6 5417 5404 5405 5406 5419 7331 6 5418 5406 5420 6792 7331 7332 6 5419 5406 5407 5421 6792 6793 6 5420 5407 5408 5422 5429 6793 6 5421 5408 5409 5410 5423 5429 6 5422 5410 5411 5424 5429 5430 6 5423 5411 5197 5430 5431 5432 6 5209 5210 5426 5444 5445 5446 6 5425 5210 5427 5446 5447 5448 5 5426 5210 5211 5428 5448 6 5427 5211 5212 5216 5448 5218 6 5421 5422 5423 5430 6793 6794 6 5429 5423 5424 5431 6794 6795 6 5430 5424 5432 6795 6796 5433 6 5431 5424 5197 5198 5199 5433 5 5432 5199 5434 6796 5431 6 5433 5199 5200 5435 6796 6797 6 5434 5200 5201 5436 6797 6798 6 5435 5201 5202 5437 6798 6799 6 5436 5202 5203 5438 6799 6800 6 5437 5203 5204 5439 6800 6801 6 5438 5204 5440 6801 6802 6803 7 5439 5204 5205 5206 5207 5441 6803 5 5440 5207 5442 6803 6804 6 5441 5207 5208 5443 6804 6805 6 5442 5208 5444 6805 6806 5445 5 5443 5208 5209 5425 5445 6 5444 5425 5446 6806 5443 6807 6 5445 5425 5426 5447 6807 6808 6 5446 5426 5448 6808 6809 6810 7 5447 5426 5427 5428 5218 6810 6811 6 5233 5234 5450 5459 5460 5461 6 5449 5234 5235 5451 5461 5462 6 5450 5235 5452 5462 5463 5464 6 5451 5235 4270 4271 5453 5464 6 5452 4271 4272 5454 5464 5465 6 5453 4272 4273 5455 5456 5465 6 5454 4273 5456 5457 5458 4274 6 5454 5455 5457 5465 5466 5467 6 5456 5455 5458 5467 5468 5469 6 5457 5455 4274 5469 5470 4275 6 5233 5449 5460 6904 5232 6905 6 5459 5449 5461 6905 6906 6907 6 5460 5449 5450 5462 6907 6908 6 5461 5450 5451 5463 6908 6909 6 5462 5451 5464 6909 6910 6911 6 5463 5451 5452 5453 5465 6911 6 5464 5453 5454 5456 5466 6911 6 5465 5456 5467 6911 6912 6913 6 5466 5456 5457 5468 6913 6914 6 5467 5457 5469 6914 6915 6916 6 5468 5457 5458 5470 6916 6917 6 5469 5458 4275 4276 5471 6917 6 5470 4276 4277 4278 5472 6917 6 5471 4278 5473 6917 6918 6919 6 5472 4278 4279 5474 6919 6920 6 5473 4279 4280 5475 6920 6921 6 5474 4280 4281 5047 5476 6921 6 5475 5047 5477 6921 6922 6923 6 5476 5047 5048 5478 6923 6924 6 5477 5048 5049 5479 6924 6925 6 5478 5049 5050 5480 6925 6926 6 5479 5050 5051 5481 6926 6927 6 5480 5051 5052 5482 5655 6927 6 5481 5052 5053 5054 5483 5655 6 5482 5054 5484 5655 5656 5657 6 5483 5054 5055 5056 5485 5657 6 5484 5056 5486 5657 5658 5659 6 5485 5056 5057 5487 5659 5660 6 5486 5057 5058 5488 5660 5661 6 5487 5058 5059 5489 5661 5662 6 5488 5059 5060 5490 5622 5662 6 5489 5060 5061 5491 5622 5623 6 5490 5061 5062 5063 5492 5623 6 5491 5063 5064 5493 5623 5624 6 5492 5064 5251 5494 5624 5625 6 5493 5251 5495 5625 5626 5627 6 5494 5251 5252 5496 5627 5628 6 5495 5252 5253 5497 5628 5629 6 5496 5253 5254 5498 5629 5630 6 5497 5254 5255 5499 5630 5631 6 5498 5255 5256 5500 5631 5632 6 5499 5256 5257 5501 5632 5633 6 5500 5257 5258 5502 5633 5634 6 5501 5258 5259 5503 5634 5635 6 5502 5259 5260 5504 5635 5636 6 5503 5260 5261 5262 5505 5636 6 5504 5262 5506 5636 5637 5638 6 5505 5262 5263 5507 5638 5639 6 5506 5263 5264 5508 5639 5640 6 5507 5264 5265 5509 5640 5641 6 5508 5265 5266 5510 5641 5642 6 5509 5266 5267 5511 5642 5643 6 5510 5267 5268 5512 5643 5644 6 5511 5268 5269 5513 5644 5645 6 5512 5269 5270 5514 5645 5646 6 5513 5270 5271 5272 5515 5646 6 5514 5272 5273 5274 5516 5646 6 5515 5274 5517 5518 5646 5647 6 5516 5274 5518 5519 5520 5275 6 5516 5517 5519 5647 5648 5521 5 5518 5517 5520 5280 5521 7 5519 5517 5275 5276 5278 5279 5280 7 5519 5280 5281 5378 5522 5648 5518 5 5521 5378 5379 5523 5648 7 5522 5379 5524 5686 5648 5685 5687 6 5523 5379 5380 5525 5688 5687 6 5524 5380 5285 5526 5688 5689 6 5525 5285 5286 5527 5689 5690 6 5526 5286 5287 5528 5690 5691 6 5527 5287 5292 5529 5691 5692 6 5528 5292 5293 5530 5531 5692 6 5529 5293 5531 5532 5533 5534 5 5529 5530 5532 5692 5693 6 5531 5530 5533 5693 5694 5695 7 5532 5530 5534 5695 5696 5539 5537 6 5533 5530 5293 5294 5535 5537 7 5534 5294 5295 5296 5298 5536 5537 6 5535 5298 5537 5538 5542 5543 6 5535 5536 5538 5539 5533 5534 6 5537 5536 5539 5540 5541 5542 6 5537 5538 5540 5696 5533 5697 6 5539 5538 5541 5697 5698 5699 7 5540 5538 5542 5699 5700 5701 9796 5 5541 5538 5536 5543 9796 6 5542 5536 5298 5299 5544 9796 7 5543 5299 5545 5305 5307 5546 9796 5 5544 5299 5305 5301 5300 6 5544 5307 5547 5702 5701 9796 6 5546 5307 5308 5313 5548 5702 6 5547 5313 5549 5702 5703 5704 6 5548 5313 5314 5550 5704 5705 6 5549 5314 5551 5552 5705 5706 6 5550 5314 5552 5553 5554 5315 6 5550 5551 5553 5706 5707 5708 6 5552 5551 5554 5555 5708 5709 6 5553 5551 5315 5555 5556 5316 6 5553 5554 5556 5557 5709 5710 6 5555 5554 5316 5557 5558 5559 6 5555 5556 5558 5710 5711 5712 6 5557 5556 5559 5715 5712 5716 6 5558 5556 5316 5317 5560 5716 6 5559 5317 5318 5321 5561 5716 6 5560 5321 5323 5562 5717 5716 6 5561 5323 5324 5326 5563 5717 6 5562 5326 5564 5565 5718 5717 6 5563 5326 5565 5566 5573 5327 6 5563 5564 5566 5567 5718 5714 6 5565 5564 5567 5568 5572 5573 6 5565 5566 5568 5569 5754 5714 6 5567 5566 5569 5570 5571 5572 6 5567 5568 5570 5753 5754 5755 6 5569 5568 5571 5755 5756 5771 6 5570 5568 5572 5770 5768 5771 6 5571 5568 5566 5573 5770 5772 6 5572 5566 5564 5327 5574 5772 6 5573 5327 5328 5331 5575 5772 6 5574 5331 5576 5772 5773 5774 6 5575 5331 5332 5577 5774 5595 7 5576 5332 5334 5578 5595 5590 5775 6 5577 5334 5579 5350 5580 5775 6 5578 5334 5335 5341 5343 5350 6 5578 5350 5351 5581 5582 5775 6 5580 5351 5582 5583 5584 5585 6 5580 5581 5583 5586 5587 5775 6 5582 5581 5584 5586 5606 5607 6 5583 5581 5585 5607 5608 5609 6 5584 5581 5351 5352 5609 5354 6 5582 5583 5587 5588 5606 5598 6 5582 5586 5588 5589 5590 5775 6 5587 5586 5589 5596 5597 5598 6 5587 5588 5590 5591 5592 5596 6 5587 5589 5591 5595 5577 5775 6 5590 5589 5592 5593 5595 5774 6 5591 5589 5593 5594 5596 5779 6 5591 5592 5594 5774 5773 5776 6 5593 5592 5776 5777 5778 5779 5 5590 5591 5774 5576 5577 6 5592 5589 5588 5597 5779 5780 6 5596 5588 5598 5599 5600 5780 6 5597 5588 5599 5603 5606 5586 6 5597 5598 5600 5601 5602 5603 6 5597 5599 5601 5780 5781 5782 6 5600 5599 5602 5782 5790 5791 6 5601 5599 5603 5604 5791 5792 6 5602 5599 5604 5605 5598 5606 6 5602 5603 5605 5795 5792 5796 6 5604 5603 5796 5797 5607 5606 6 5603 5598 5586 5583 5607 5605 6 5606 5583 5584 5608 5797 5605 6 5607 5584 5609 5611 5799 5797 6 5608 5584 5585 5354 5610 5611 7 5609 5354 5611 5801 5807 5808 5355 5 5609 5610 5608 5801 5799 6 4515 4517 5613 5614 5615 5616 6 4515 5612 5614 428 427 7501 6 5613 5612 5615 7501 7502 7506 6 5614 5612 5616 7506 7507 7508 6 5615 5612 4517 7508 7509 4519 6 5389 5390 5618 7783 7784 7785 6 5617 5390 5619 7785 7786 7787 6 5618 5390 5391 5620 7787 7790 6 5619 5391 5621 7790 7791 7792 6 5620 5391 5392 3776 3779 7792 6 5489 5490 5623 5662 5663 5664 6 5622 5490 5491 5492 5624 5664 6 5623 5492 5493 5625 5664 5665 6 5624 5493 5494 5626 5665 5666 6 5625 5494 5627 5666 5667 5668 6 5626 5494 5495 5628 5668 5669 6 5627 5495 5496 5629 5669 5670 6 5628 5496 5497 5630 5670 5671 6 5629 5497 5498 5631 5671 5672 6 5630 5498 5499 5632 5672 5673 6 5631 5499 5500 5633 5673 5674 6 5632 5500 5501 5634 5674 5675 6 5633 5501 5502 5635 5675 5676 6 5634 5502 5503 5636 5676 5677 6 5635 5503 5504 5505 5637 5677 6 5636 5505 5638 5677 5678 5679 6 5637 5505 5506 5639 5679 5680 6 5638 5506 5507 5640 5680 5681 6 5639 5507 5508 5641 5681 5682 6 5640 5508 5509 5642 5682 5683 6 5641 5509 5510 5643 5683 5684 6 5642 5510 5511 5644 5684 5685 6 5643 5511 5512 5645 5685 5686 6 5644 5512 5513 5646 5686 5647 6 5645 5513 5514 5515 5516 5647 6 5646 5516 5518 5648 5686 5645 6 5647 5518 5521 5686 5523 5522 6 5240 5241 5650 6836 6837 6838 6 5649 5241 5242 5651 5652 6838 6 5650 5242 5652 5653 5244 5243 6 5650 5651 5653 6838 6839 6840 6 5652 5651 5244 5654 6840 6841 5 5653 5244 5245 5248 6841 6 5481 5482 5483 5656 6927 6928 6 5655 5483 5657 6928 6929 6930 6 5656 5483 5484 5485 5658 6930 6 5657 5485 5659 6930 6931 6932 6 5658 5485 5486 5660 5832 6932 6 5659 5486 5487 5661 5832 5833 6 5660 5487 5488 5662 5833 5834 6 5661 5488 5489 5622 5663 5834 6 5662 5622 5664 5834 5835 5836 6 5663 5622 5623 5624 5665 5836 6 5664 5624 5625 5666 5836 5814 6 5665 5625 5626 5667 5813 5814 6 5666 5626 5668 5813 5817 5818 6 5667 5626 5627 5669 5860 5818 6 5668 5627 5628 5670 5860 5861 6 5669 5628 5629 5671 5861 5862 6 5670 5629 5630 5672 5862 5863 6 5671 5630 5631 5673 5863 5864 6 5672 5631 5632 5674 5864 5865 6 5673 5632 5633 5675 5865 5866 6 5674 5633 5634 5676 5866 5867 6 5675 5634 5635 5677 5867 5868 6 5676 5635 5636 5637 5678 5868 6 5677 5637 5679 5868 5869 5694 6 5678 5637 5638 5680 5694 5870 6 5679 5638 5639 5681 5870 5871 6 5680 5639 5640 5682 5871 5872 6 5681 5640 5641 5683 5872 5689 6 5682 5641 5642 5684 5689 5688 6 5683 5642 5643 5685 5687 5688 6 5684 5643 5644 5686 5523 5687 6 5685 5644 5645 5647 5648 5523 5 5685 5523 5684 5688 5524 6 5684 5687 5524 5525 5689 5683 7 5688 5525 5526 5690 5872 5682 5683 5 5689 5526 5527 5691 5872 7 5690 5527 5528 5692 5872 5871 5693 5 5691 5528 5529 5531 5693 7 5692 5531 5532 5694 5871 5691 5870 7 5693 5532 5695 5869 5678 5679 5870 6 5694 5532 5533 5696 9699 5869 6 5695 5533 5539 5697 9700 9699 6 5696 5539 5540 5698 5719 9700 6 5697 5540 5699 5719 5720 5721 6 5698 5540 5541 5700 5721 5722 6 5699 5541 5701 5702 5722 5723 5 5700 5541 5702 5546 9796 7 5700 5701 5546 5547 5548 5703 5723 6 5702 5548 5704 5723 5724 5728 6 5703 5548 5549 5705 5728 5729 6 5704 5549 5550 5706 5729 5730 6 5705 5550 5552 5707 5733 5730 6 5706 5552 5708 5733 5734 5735 6 5707 5552 5553 5709 5738 5735 6 5708 5553 5555 5710 5738 5739 6 5709 5555 5557 5711 5748 5739 6 5710 5557 5712 5713 5748 5749 6 5711 5557 5713 5714 5715 5558 6 5711 5712 5714 5749 5750 5754 7 5713 5712 5715 5718 5565 5754 5567 6 5714 5712 5558 5716 5717 5718 6 5715 5558 5717 5561 5560 5559 6 5715 5716 5718 5563 5562 5561 5 5715 5717 5563 5565 5714 7 5697 5698 5720 9697 5866 9698 9700 6 5719 5698 5721 9697 9696 9701 6 5720 5698 5699 5722 9701 9702 7 5721 5699 5700 5723 5724 5725 9702 5 5722 5700 5702 5703 5724 7 5723 5703 5722 5725 5726 5727 5728 6 5722 5724 5726 6096 9702 9703 6 5725 5724 5727 6096 6097 6098 6 5726 5724 5728 6098 5731 5729 5 5727 5724 5703 5704 5729 6 5728 5704 5705 5730 5731 5727 6 5729 5705 5731 5732 5733 5706 7 5729 5730 5732 6098 5727 6099 6100 6 5731 5730 5733 6100 6101 6102 6 5732 5730 5706 5707 5734 6102 6 5733 5707 5735 5736 6102 6103 6 5734 5707 5736 5737 5738 5708 6 5734 5735 5737 6106 6103 6107 6 5736 5735 5738 6107 6108 5740 6 5737 5735 5708 5709 5739 5740 6 5738 5709 5740 5741 5748 5710 6 5738 5739 5741 5742 6108 5737 6 5740 5739 5742 5743 5747 5748 6 5740 5741 5743 5744 6108 6109 6 5742 5741 5744 5745 5746 5747 6 5742 5743 5745 6112 6109 6113 6 5744 5743 5746 6113 6114 6115 6 5745 5743 5747 5751 6122 6115 6 5746 5743 5741 5748 5749 5751 6 5747 5741 5739 5710 5711 5749 6 5748 5711 5713 5750 5747 5751 6 5749 5713 5751 5752 5753 5754 6 5747 5749 5746 5750 5752 6122 5 5751 5750 5753 6122 5950 6 5752 5750 5754 5569 5755 5950 6 5753 5750 5713 5714 5569 5567 6 5753 5569 5570 5756 5757 5950 6 5755 5570 5757 5758 5759 5771 6 5755 5756 5758 5950 5951 5952 6 5757 5756 5759 5760 5952 5953 6 5758 5756 5760 5761 5762 5771 6 5758 5759 5761 5953 5954 5958 6 5760 5759 5762 5763 5764 5958 6 5761 5759 5763 5767 5768 5771 6 5761 5762 5764 5765 5766 5767 6 5761 5763 5765 5958 5959 5989 6 5764 5763 5766 5990 5989 5991 6 5765 5763 5767 5991 5992 5777 6 5766 5763 5762 5768 5769 5777 6 5767 5762 5769 5770 5571 5771 6 5767 5768 5770 5773 5776 5777 6 5769 5768 5571 5572 5772 5773 6 5571 5768 5570 5762 5756 5759 6 5770 5572 5573 5574 5575 5773 7 5772 5575 5774 5593 5776 5770 5769 6 5773 5575 5576 5595 5591 5593 6 5590 5577 5587 5582 5580 5578 5 5773 5593 5594 5777 5769 7 5776 5594 5778 5992 5766 5769 5767 6 5777 5594 5779 5993 5992 5783 6 5778 5594 5592 5596 5780 5783 6 5779 5596 5597 5600 5781 5783 6 5780 5600 5782 5783 5784 5785 6 5781 5600 5601 5785 5786 5790 6 5780 5781 5784 5993 5778 5779 6 5783 5781 5785 5994 5993 5997 7 5784 5781 5782 5786 5787 5997 5998 6 5785 5782 5787 5788 5789 5790 6 5785 5786 5788 5998 5999 6000 6 5787 5786 5789 6003 6000 6004 6 5788 5786 5790 6010 6004 6200 6 5789 5786 5782 5601 5791 6200 6 5790 5601 5602 5792 5793 6200 6 5791 5602 5793 5794 5795 5604 6 5791 5792 5794 6199 6200 6198 6 5793 5792 5795 6198 6201 6222 6 5794 5792 5604 5796 6222 6220 6 5795 5604 5605 5797 5798 6220 6 5796 5605 5798 5799 5608 5607 6 5796 5797 5799 5800 6219 6220 6 5798 5797 5608 5800 5801 5611 6 5798 5799 5801 5802 5803 6219 7 5800 5799 5611 5610 5802 5806 5807 6 5800 5801 5803 5804 5805 5806 6 5800 5802 5804 6218 6210 6219 6 5803 5802 5805 5824 5825 6218 6 5804 5802 5806 5824 5831 5840 6 5805 5802 5801 5807 5809 5840 5 5806 5801 5610 5808 5809 5 5807 5610 5355 5357 5809 7 5808 5357 5359 5810 5840 5806 5807 6 5809 5359 5811 5839 5840 5887 7 5810 5359 5364 5365 5812 5886 5887 6 5811 5365 5885 5886 5888 5403 6 5666 5667 5814 5815 5816 5817 6 5666 5813 5815 5836 5665 5843 6 5814 5813 5816 5843 5844 5845 6 5815 5813 5817 5820 5821 5845 6 5816 5813 5667 5818 5819 5820 6 5817 5667 5819 5860 5858 5668 6 5817 5818 5820 5823 5858 5855 6 5817 5819 5816 5821 5822 5823 6 5816 5820 5822 5845 5846 5847 6 5821 5820 5823 5853 5850 5847 6 5822 5820 5819 5853 5854 5855 6 5804 5805 5825 5826 5827 5831 5 5804 5824 5826 6217 6218 7 5825 5824 5827 5828 6217 6216 6022 6 5826 5824 5828 5829 5830 5831 6 5826 5827 5829 6020 6021 6022 6 5828 5827 5830 5837 5873 6020 6 5829 5827 5831 5837 5838 5839 6 5830 5827 5824 5805 5839 5840 6 5659 5660 5833 6932 6933 6934 6 5832 5660 5661 5834 5841 6934 6 5833 5661 5662 5663 5835 5841 6 5834 5663 5836 5841 5842 5843 6 5835 5663 5664 5665 5814 5843 6 5829 5830 5838 5873 5874 5884 6 5837 5830 5839 5886 5884 5887 6 5838 5830 5831 5840 5810 5887 6 5839 5831 5810 5809 5806 5805 6 5833 5834 5835 5842 6934 6935 6 5841 5835 5843 6935 6936 5844 6 5842 5835 5836 5814 5815 5844 6 5843 5815 5845 6019 6936 5842 6 5844 5815 5816 5821 5846 6019 6 5845 5821 5847 5848 6019 6941 6 5846 5821 5848 5849 5850 5822 6 5846 5847 5849 6941 6942 6943 6 5848 5847 5850 5851 6946 6943 6 5849 5847 5851 5852 5853 5822 5 5849 5850 5852 6946 6386 6 5851 5850 5853 6104 6105 6386 6 5852 5850 5822 5823 5854 6104 6 5853 5823 5855 5856 6101 6104 6 5854 5823 5856 5857 5858 5819 6 5854 5855 5857 6099 6100 6101 6 5856 5855 5858 5859 6385 6099 6 5857 5855 5859 5860 5818 5819 6 5857 5858 5860 5861 6384 6385 6 5859 5858 5818 5668 5669 5861 6 5860 5669 5670 5862 6384 5859 6 5861 5670 5671 5863 9704 6384 6 5862 5671 5672 5864 9695 9704 6 5863 5672 5673 5865 9695 9696 6 5864 5673 5674 5866 9696 9697 7 5865 5674 5675 5867 9697 5719 9698 5 5866 5675 5676 5868 9698 7 5867 5676 5677 5678 5869 9698 9699 5 5868 5678 5694 5695 9699 5 5694 5679 5680 5871 5693 6 5870 5680 5681 5872 5691 5693 6 5871 5681 5682 5689 5690 5691 6 5829 5837 5874 5875 9737 6020 6 5873 5837 5875 5876 5883 5884 6 5873 5874 5876 5877 9737 6042 6 5875 5874 5877 5878 5879 5883 6 5875 5876 5878 6049 6042 6043 6 5877 5876 5879 5880 6050 6049 6 5878 5876 5880 5881 5882 5883 6 5878 5879 5881 6050 6051 5889 6 5880 5879 5882 5401 5400 5889 6 5881 5879 5883 5885 5888 5401 6 5882 5879 5876 5874 5884 5885 6 5883 5874 5837 5885 5886 5838 6 5883 5884 5886 5812 5882 5888 6 5885 5884 5838 5812 5811 5887 5 5811 5886 5838 5839 5810 5 5882 5885 5812 5403 5401 6 5881 5400 5890 6054 6051 5880 6 5889 5400 5398 5891 5892 6054 6 5890 5398 5892 5893 5894 5397 6 5890 5891 5893 6057 6054 6058 6 5892 5891 5894 6058 6059 6060 6 5893 5891 5397 5895 5896 6060 6 5894 5397 5896 5897 5900 5396 6 5894 5895 5897 5898 6060 6062 6 5896 5895 5898 5899 4890 5900 6 5896 5897 5899 5901 6062 6063 6 5898 5897 4890 4891 5901 5902 7 4890 5897 5895 5396 5394 5373 4889 6 5898 5899 5902 6066 6063 6067 6 5901 5899 4891 4893 5903 6067 6 5902 4893 5904 5905 5906 6067 6 5903 4893 5905 5912 5913 4894 6 5903 5904 5906 5907 5908 5912 6 5903 5905 5907 6067 6071 6068 7 5906 5905 5908 5909 6076 6073 6071 6 5907 5905 5909 5910 5911 5912 5 5907 5908 5910 5935 6076 7 5909 5908 5911 5933 5930 5934 5935 6 5910 5908 5912 5933 9753 5916 6 5911 5908 5905 5904 5913 5916 6 5912 5904 4894 5914 5915 5916 6 5913 4894 4895 4897 4900 5915 6 5914 4900 5913 5916 5917 5918 6 5913 5915 5917 5912 9753 5911 6 5916 5915 5918 9753 9756 9759 6 5917 5915 4900 4901 5919 9759 7 5918 4901 4903 3672 3952 5920 9759 6 5919 3952 3950 5921 9756 9759 5 5920 3950 3949 5922 9756 6 5921 3949 5923 5931 5932 9756 6 5922 3949 3947 3963 5924 5931 6 5923 3963 3964 5925 5926 5931 6 5924 3964 3966 5926 5927 5943 6 5924 5925 5927 5928 5930 5931 6 5926 5925 5928 5929 5942 5943 5 5926 5927 5929 5930 5934 7 5928 5927 5936 5934 5937 5941 5942 7 5926 5928 5931 5932 5933 5910 5934 6 5926 5930 5932 5924 5923 5922 6 5931 5930 5922 5933 9753 9756 5 5932 5930 5910 5911 9753 6 5910 5930 5935 5936 5929 5928 6 5910 5934 5936 6075 6076 5909 6 5935 5934 5929 5937 5938 6075 6 5936 5929 5938 5939 5940 5941 5 5936 5937 5939 6075 6077 6 5938 5937 5940 6077 6078 6087 6 5939 5937 5941 6088 6087 6092 7 5940 5937 5929 5942 5945 6092 5947 5 5941 5929 5927 5943 5945 6 5942 5927 5925 3966 5944 5945 7 5943 3966 3967 5945 5946 3136 5948 6 5943 5944 5942 5941 5946 5947 5 5945 5944 5947 3135 3136 6 5945 5946 3135 6092 5941 3137 6 3136 5944 2094 2093 5949 3967 6 2093 5948 3967 3968 2489 2490 6 5755 5757 5951 5753 5752 6122 6 5950 5757 5952 6167 6121 6122 6 5951 5757 5758 5953 6167 6165 6 5952 5758 5760 5954 5955 6165 6 5953 5760 5955 5956 5957 5958 6 5953 5954 5956 6163 6162 6165 6 5955 5954 5957 5961 5968 6163 6 5956 5954 5958 5959 5960 5961 6 5957 5954 5760 5761 5764 5959 6 5958 5764 5957 5960 5964 5989 6 5957 5959 5961 5962 5963 5964 6 5957 5960 5962 5965 5968 5956 6 5961 5960 5963 5965 5966 5983 6 5962 5960 5964 5984 5983 5985 6 5963 5960 5959 5988 5985 5989 6 5961 5962 5966 5967 5968 5969 6 5965 5962 5967 5983 5981 5972 6 5965 5966 5969 5970 5971 5972 6 5961 5965 5956 5969 6164 6163 7 5968 5965 5967 5970 6157 6158 6164 6 5969 5967 5971 6448 6446 6157 6 5970 5967 5972 5973 6448 6449 6 5971 5967 5973 5974 5966 5981 6 5971 5972 5974 5975 5976 6449 6 5973 5972 5975 5979 5980 5981 6 5973 5974 5976 5977 5978 5979 6 5973 5975 5977 6449 6450 6451 6 5976 5975 5978 6451 6609 6610 6 5977 5975 5979 6610 6613 6614 6 5978 5975 5974 5980 6614 6615 6 5979 5974 5981 5982 6641 6615 6 5980 5974 5982 5983 5966 5972 6 5980 5981 5983 5984 6641 6642 6 5982 5981 5984 5963 5962 5966 6 5982 5983 5963 5985 5986 6642 6 5984 5963 5986 5987 5988 5964 6 5984 5985 5987 6644 6642 6169 6 5986 5985 5988 5995 6168 6169 6 5987 5985 5964 5989 5990 5995 6 5988 5964 5959 5990 5765 5764 6 5988 5989 5765 5991 5994 5995 6 5990 5765 5766 5992 5993 5994 5 5991 5766 5993 5778 5777 6 5991 5992 5778 5994 5784 5783 7 5991 5993 5784 5990 5995 5996 5997 6 5990 5994 5996 5987 5988 6168 6 5995 5994 5997 5998 5999 6168 5 5996 5994 5784 5785 5998 5 5996 5997 5999 5785 5787 7 5996 5998 5787 6000 6001 6170 6168 6 5999 5787 6001 6002 6003 5788 5 5999 6000 6002 6170 6171 6 6001 6000 6003 6171 6172 6006 6 6002 6000 5788 6004 6005 6006 6 6003 5788 6005 6009 6010 5789 6 6003 6004 6006 6007 6008 6009 6 6003 6005 6007 6172 6002 6173 6 6006 6005 6008 6011 6173 6174 6 6007 6005 6009 6011 6012 6016 6 6008 6005 6004 6010 6018 6016 6 6009 6004 5789 6199 6018 6200 6 6007 6008 6012 6013 6180 6174 6 6011 6008 6013 6014 6015 6016 6 6011 6012 6014 6181 6180 6187 6 6013 6012 6015 6191 6188 6187 6 6014 6012 6016 6017 6191 6192 6 6015 6012 6017 6018 6009 6008 6 6015 6016 6018 6192 6195 6196 6 6017 6016 6009 6199 6196 6010 6 5844 5845 5846 6938 6936 6941 6 5828 5829 6021 9737 6039 5873 6 5828 6020 6022 6023 6024 6039 6 5828 6021 6023 6216 5826 6223 6 6022 6021 6024 6025 6026 6223 6 6023 6021 6025 6038 6029 6039 6 6023 6024 6026 6027 6028 6029 6 6023 6025 6027 6223 6226 6224 6 6026 6025 6028 6226 6227 6033 6 6027 6025 6029 6030 6032 6033 6 6028 6025 6030 6031 6038 6024 6 6028 6029 6031 6032 6034 6035 6 6030 6029 6035 6036 6037 6038 6 6028 6030 6033 6034 6248 6240 6 6028 6032 6227 6027 6228 6240 6 6032 6030 6035 6248 6247 6249 6 6034 6030 6031 6036 6249 6250 6 6035 6031 6037 6250 6264 6265 6 6036 6031 6038 6040 6041 6265 6 6037 6031 6029 6024 6039 6040 6 6038 6024 6040 9737 6020 6021 6 6038 6039 6037 6041 6042 9737 7 6037 6040 6042 6043 6044 6266 6265 6 6041 6040 6043 9737 5875 5877 6 6041 6042 6044 6045 6049 5877 5 6041 6043 6045 6046 6266 6 6044 6043 6046 6047 6048 6049 7 6044 6045 6047 6263 6266 6262 6267 6 6046 6045 6048 6270 6267 6281 6 6047 6045 6049 6050 6052 6281 6 6048 6045 6043 6050 5878 5877 6 6048 6049 5878 5880 6051 6052 6 6050 5880 6052 6053 6054 5889 6 6050 6051 6053 6055 6281 6048 6 6052 6051 6054 6055 6056 6057 6 6053 6051 5889 5890 6057 5892 7 6052 6053 6056 6280 6281 6279 6282 6 6055 6053 6057 6284 6282 6285 6 6056 6053 6054 5892 6058 6285 6 6057 5892 5893 6059 6061 6285 6 6058 5893 6060 6061 6288 6289 6 6059 5893 5894 5896 6062 6289 6 6058 6059 6285 6286 6287 6288 6 6060 5896 5898 6063 6064 6289 6 6062 5898 6064 6065 6066 5901 7 6062 6063 6065 6289 6292 6290 6293 5 6064 6063 6066 6293 6069 6 6065 6063 5901 6067 6068 6069 6 6066 5901 5902 5903 5906 6068 6 6066 6067 6069 6070 6071 5906 7 6066 6068 6070 6293 6065 6294 6295 5 6069 6068 6071 6072 6295 6 6070 6068 5906 6072 6073 5907 7 6070 6071 6073 6074 6297 6295 6298 6 6072 6071 6074 6075 6076 5907 6 6072 6073 6075 6298 6079 6077 7 6074 6073 6076 5935 5936 5938 6077 5 6075 6073 5935 5909 5907 6 6075 5938 5939 6078 6079 6074 6 6077 5939 6079 6080 6087 6084 6 6077 6078 6080 6081 6298 6074 6 6079 6078 6081 6082 6083 6084 6 6079 6080 6082 6298 6299 6302 6 6081 6080 6083 6302 6303 6315 6 6082 6080 6084 6085 6314 6315 6 6083 6080 6085 6086 6087 6078 7 6083 6084 6086 6089 6314 6316 6319 6 6085 6084 6087 6088 6089 6090 6 6086 6084 6088 5940 5939 6078 6 6086 6087 5940 6090 6091 6092 6 6085 6086 6090 6095 3770 6319 7 6089 6086 6088 6091 3138 6093 6095 5 6090 6088 6092 3137 3138 6 6091 6088 5940 5941 5947 3137 6 6090 3138 3139 6094 3769 6095 7 6093 3139 3769 3767 2086 2085 9777 5 6093 3769 3770 6089 6090 6 5725 5726 6097 6384 9703 9704 6 6096 5726 6098 6099 6384 6385 5 6097 5726 5727 5731 6099 7 6097 6098 5731 6100 6385 5857 5856 5 6099 5731 5732 6101 5856 7 6100 5732 6102 6103 6104 5856 5854 5 6101 5732 5733 5734 6103 7 6102 5734 6101 6104 6105 6106 5736 6 6101 6103 6105 5854 5853 5852 6 6104 6103 6106 5852 6386 6387 5 6105 6103 5736 6107 6387 7 6106 5736 5737 6108 6387 6388 6110 6 6107 5737 5740 5742 6109 6110 6 6108 5742 6110 6111 6112 5744 6 6108 6109 6111 6388 6107 6389 6 6110 6109 6112 6389 6390 6391 6 6111 6109 5744 6113 6394 6391 6 6112 5744 5745 6114 6116 6394 6 6113 5745 6115 6116 6117 6118 6 6114 5745 6121 6118 6122 5746 6 6113 6114 6117 6394 9738 9739 6 6116 6114 6118 6119 6123 9739 6 6117 6114 6119 6120 6121 6115 6 6117 6118 6120 6123 6124 6166 5 6119 6118 6121 6167 6166 6 6120 6118 6115 6122 6167 5951 7 6121 6115 5746 5751 5752 5950 5951 6 6117 6119 6124 6125 6132 9739 6 6123 6119 6125 6126 6166 6161 6 6123 6124 6126 6127 6128 6132 6 6125 6124 6127 6153 6161 6159 6 6125 6126 6128 6129 6152 6153 6 6125 6127 6129 6130 6131 6132 6 6128 6127 6130 6151 6150 6152 6 6128 6129 6131 6151 6138 6135 6 6128 6130 6132 6133 6134 6135 6 6128 6131 6133 9739 6123 6125 6 6132 6131 6134 6399 9738 9739 6 6133 6131 6135 6136 6398 6399 6 6134 6131 6136 6137 6138 6130 6 6134 6135 6137 6398 6400 6401 6 6136 6135 6138 6139 6401 6402 6 6137 6135 6139 6140 6151 6130 6 6137 6138 6140 6141 6402 6403 6 6139 6138 6141 6142 6149 6151 6 6139 6140 6142 6143 6403 6404 6 6141 6140 6143 6144 6145 6149 6 6141 6142 6144 6404 6405 6406 6 6143 6142 6145 6146 6406 6437 6 6144 6142 6146 6147 6148 6149 6 6144 6145 6147 6438 6437 6439 6 6146 6145 6148 6439 6440 6441 6 6147 6145 6149 6150 6441 6442 6 6148 6145 6142 6140 6150 6151 6 6148 6149 6151 6129 6152 6442 6 6150 6149 6140 6138 6130 6129 6 6150 6129 6127 6153 6154 6442 6 6152 6127 6126 6154 6155 6159 6 6152 6153 6155 6156 6442 6443 6 6154 6153 6156 6157 6158 6159 6 6154 6155 6157 6445 6443 6446 6 6156 6155 6158 5970 6446 5969 6 6157 6155 6159 6160 5969 6164 6 6158 6155 6153 6160 6161 6126 6 6158 6159 6161 6162 6163 6164 6 6160 6159 6126 6162 6124 6166 6 6160 6161 6163 5955 6165 6166 6 6160 6162 6164 5968 5956 5955 5 6160 6163 5968 6158 5969 6 5955 6162 6166 6167 5952 5953 7 6165 6162 6167 6120 6119 6124 6161 6 6165 6166 6120 6121 5951 5952 6 5995 5996 5987 6169 6170 5999 6 5987 6168 6170 6644 5986 9784 6 6169 6168 5999 6001 6171 9784 7 6170 6001 6002 6172 6790 9784 9783 7 6171 6002 6006 6173 6789 6787 6790 6 6172 6006 6007 6174 6175 6789 6 6173 6007 6175 6176 6011 6180 6 6173 6174 6176 6177 6785 6789 6 6175 6174 6177 6178 6179 6180 6 6175 6176 6178 6783 6782 6785 6 6177 6176 6179 9797 6783 9798 6 6178 6176 6180 6181 6182 9797 6 6179 6176 6181 6013 6011 6174 6 6179 6180 6182 6183 6187 6013 6 6179 6181 6183 6184 9797 9800 6 6182 6181 6184 6185 6186 6187 6 6182 6183 6185 6363 6646 9800 6 6184 6183 6186 6363 6364 6368 6 6185 6183 6187 6188 6189 6368 6 6186 6183 6181 6188 6013 6014 6 6186 6187 6189 6190 6191 6014 6 6186 6188 6190 6368 6369 6370 6 6189 6188 6191 6370 6373 6193 6 6190 6188 6014 6015 6192 6193 6 6191 6015 6017 6193 6194 6195 6 6191 6192 6194 6373 6190 6374 6 6193 6192 6195 6383 6374 6204 6 6194 6192 6017 6196 6197 6204 6 6195 6017 6197 6198 6199 6018 6 6195 6196 6198 6201 6202 6204 6 6197 6196 6199 5793 5794 6201 6 6198 6196 6018 6010 6200 5793 6 6199 6010 5793 5791 5790 5789 6 6198 5794 6197 6202 6203 6222 6 6197 6201 6203 6204 6205 6206 6 6202 6201 6206 6207 6221 6222 6 6197 6202 6205 6383 6194 6195 6 6204 6202 6206 6383 6460 6382 6 6205 6202 6203 6207 6208 6460 6 6206 6203 6208 6209 6210 6221 6 6206 6207 6209 6211 6212 6460 6 6208 6207 6210 6211 6215 6218 6 6209 6207 5803 6218 6219 6221 6 6208 6209 6212 6213 6214 6215 6 6208 6211 6213 6457 6459 6460 7 6212 6211 6214 6224 6225 6455 6457 5 6213 6211 6215 6216 6224 6 6214 6211 6209 6216 6217 6218 7 6214 6215 6217 5826 6022 6223 6224 5 6216 6215 6218 5825 5826 7 6217 6215 5825 5804 5803 6210 6209 6 5803 6210 5800 5798 6220 6221 6 5798 6219 6221 6222 5795 5796 6 6220 6219 6210 6207 6203 6222 6 6220 6221 6203 6201 5794 5795 5 6216 6022 6023 6026 6224 7 6216 6223 6214 6213 6225 6226 6026 7 6213 6224 6226 6455 6232 6227 6229 5 6225 6224 6026 6027 6227 6 6226 6027 6033 6228 6229 6225 6 6227 6033 6229 6230 6239 6240 6 6227 6228 6230 6231 6232 6225 6 6229 6228 6231 6238 6235 6239 6 6229 6230 6232 6233 6234 6235 6 6229 6231 6233 6455 6225 6456 6 6232 6231 6234 6456 6461 6462 6 6233 6231 6235 6236 6462 6463 6 6234 6231 6236 6237 6238 6230 6 6234 6235 6237 6463 6464 6472 6 6236 6235 6238 6474 6472 6477 6 6237 6235 6230 6239 6477 6242 6 6238 6230 6228 6240 6241 6242 6 6239 6228 6241 6248 6032 6033 6 6239 6240 6242 6243 6244 6248 6 6239 6241 6243 6477 6238 6478 6 6242 6241 6244 6245 6478 6480 6 6243 6241 6245 6246 6247 6248 6 6243 6244 6246 6482 6480 6483 6 6245 6244 6247 6483 6254 6252 6 6246 6244 6248 6034 6249 6252 6 6247 6244 6241 6240 6032 6034 6 6247 6034 6035 6250 6251 6252 6 6249 6035 6036 6251 6264 6256 6 6249 6250 6252 6253 6255 6256 6 6249 6251 6253 6254 6246 6247 6 6252 6251 6254 6255 6485 6486 6 6252 6253 6483 6246 6484 6485 6 6253 6251 6256 6257 6258 6486 6 6255 6251 6257 6264 6261 6250 6 6255 6256 6258 6259 6260 6261 6 6255 6257 6259 6486 6494 6495 6 6258 6257 6260 6495 6496 6497 7 6259 6257 6261 6262 6497 6274 6268 6 6260 6257 6262 6263 6264 6256 6 6260 6261 6263 6046 6267 6268 6 6262 6261 6264 6265 6266 6046 6 6263 6261 6265 6256 6250 6036 6 6263 6264 6266 6036 6041 6037 5 6263 6265 6046 6044 6041 6 6046 6262 6268 6269 6270 6047 6 6262 6267 6269 6273 6274 6260 6 6268 6267 6270 6271 6272 6273 6 6269 6267 6047 6271 6280 6281 6 6269 6270 6272 6278 6279 6280 6 6269 6271 6273 6276 6277 6278 6 6269 6272 6268 6274 6275 6276 6 6268 6273 6275 6497 6260 6498 6 6274 6273 6276 6501 6498 6502 6 6275 6273 6272 6277 6502 6503 6 6276 6272 6278 6503 6504 6505 6 6277 6272 6271 6279 6505 6506 7 6278 6271 6280 6055 6282 6283 6506 5 6279 6271 6270 6281 6055 6 6280 6270 6047 6055 6052 6048 5 6279 6055 6283 6284 6056 6 6279 6282 6284 6507 6506 6508 6 6283 6282 6056 6285 6508 6286 6 6284 6056 6057 6058 6061 6286 6 6285 6061 6287 6508 6284 6509 7 6286 6061 6288 6509 6329 6512 6291 6 6287 6061 6059 6289 6290 6291 6 6288 6059 6060 6062 6064 6290 5 6288 6289 6291 6292 6064 5 6288 6290 6292 6329 6287 7 6291 6290 6064 6293 6327 6328 6329 6 6292 6064 6065 6069 6294 6327 6 6293 6069 6295 6296 6326 6327 6 6294 6069 6070 6296 6297 6072 6 6294 6295 6297 6300 6325 6326 6 6296 6295 6072 6298 6299 6300 6 6297 6072 6074 6079 6081 6299 6 6298 6081 6297 6300 6301 6302 5 6297 6299 6301 6325 6296 6 6300 6299 6302 6304 6324 6325 6 6301 6299 6081 6082 6303 6304 6 6302 6082 6304 6305 6309 6315 6 6302 6303 6305 6306 6324 6301 6 6304 6303 6306 6307 6308 6309 6 6304 6305 6307 6324 6338 6339 6 6306 6305 6308 6339 6342 6343 6 6307 6305 6309 6310 6343 6344 6 6308 6305 6303 6310 6311 6315 6 6308 6309 6311 6312 6344 6347 6 6310 6309 6312 6313 6314 6315 6 6310 6311 6313 6322 6323 6347 6 6312 6311 6314 6316 6317 6322 6 6313 6311 6315 6083 6085 6316 6 6314 6311 6083 6082 6303 6309 6 6314 6085 6313 6317 6318 6319 6 6313 6316 6318 6320 6321 6322 6 6317 6316 6319 3770 1572 6320 5 6318 6316 3770 6085 6089 5 6318 1572 1573 6321 6317 7 6320 1573 1574 6317 6322 6323 6361 5 6317 6321 6323 6313 6312 7 6322 6321 6312 6348 6347 6349 6361 6 6304 6306 6301 6325 6336 6338 7 6301 6324 6300 6296 6326 6337 6336 6 6296 6325 6294 6327 6337 6332 6 6294 6326 6293 6292 6328 6332 6 6292 6327 6329 6330 6331 6332 6 6292 6328 6330 6512 6287 6291 6 6329 6328 6331 6511 6512 6520 7 6330 6328 6332 6333 6334 6520 6519 6 6331 6328 6333 6337 6326 6327 6 6331 6332 6334 6335 6336 6337 5 6331 6333 6335 6519 6521 6 6334 6333 6336 6521 6529 6530 7 6335 6333 6337 6325 6324 6338 6530 5 6336 6333 6332 6326 6325 6 6336 6324 6306 6339 6340 6530 6 6338 6306 6307 6340 6341 6342 6 6338 6339 6341 6531 6528 6530 5 6340 6339 6342 6546 6531 6 6341 6339 6307 6343 6547 6546 6 6342 6307 6308 6344 6345 6547 6 6343 6308 6345 6346 6347 6310 6 6343 6344 6346 6547 6544 6548 6 6345 6344 6347 6348 6550 6548 6 6346 6344 6348 6323 6312 6310 6 6346 6347 6323 6349 6350 6550 6 6348 6323 6350 6351 6360 6361 6 6348 6349 6351 6352 6551 6550 6 6350 6349 6352 6353 6354 6360 6 6350 6351 6353 6553 6551 6554 6 6352 6351 6354 6355 6356 6554 6 6353 6351 6355 1590 2477 6360 7 6353 6354 6356 6357 1595 1591 1590 6 6353 6355 6357 6358 6554 6555 5 6356 6355 6358 6359 1595 6 6356 6357 6359 6555 6556 3972 6 6358 6357 1595 3972 3971 1596 6 2477 6354 6351 6349 6361 6362 6 6360 6349 6362 1574 6321 6323 5 6360 6361 1574 2476 2477 6 6184 6185 6364 6365 6645 6646 6 6363 6185 6365 6366 6367 6368 6 6363 6364 6366 6645 6649 6650 6 6365 6364 6367 9728 9674 6650 6 6366 6364 6368 9728 9729 6369 6 6367 6364 6185 6186 6189 6369 6 6368 6189 6370 6371 9729 6367 6 6369 6189 6190 6371 6372 6373 6 6369 6370 6372 9729 9730 9731 6 6371 6370 6373 6375 6376 9731 6 6372 6370 6190 6193 6374 6375 6 6373 6193 6375 6383 6381 6194 6 6373 6374 6372 6376 6377 6381 6 6372 6375 6377 6378 6468 9731 6 6376 6375 6378 6379 6380 6381 5 6376 6377 6379 9694 6468 7 6378 6377 6380 6458 6456 6461 9694 6 6379 6377 6381 6382 6458 6459 6 6380 6377 6382 6383 6374 6375 6 6380 6381 6383 6460 6459 6205 6 6382 6381 6374 6194 6204 6205 7 6096 6097 6385 9704 5862 5861 5859 5 6384 6097 6099 5857 5859 6 5852 6105 6387 6946 5851 6947 7 6386 6105 6106 6107 6388 6947 6948 5 6387 6107 6110 6389 6948 6 6388 6110 6111 6390 6948 6949 6 6389 6111 6391 6392 6949 6950 6 6390 6111 6392 6393 6394 6112 6 6390 6391 6393 6395 6396 6950 6 6392 6391 6394 6395 9738 6399 6 6393 6391 6112 6113 6116 9738 6 6392 6393 6396 6397 6398 6399 6 6392 6395 6397 6950 6951 6952 6 6396 6395 6398 6952 6953 6400 6 6397 6395 6399 6134 6136 6400 6 6398 6395 6134 6133 9738 6393 6 6398 6136 6401 6953 6397 6954 6 6400 6136 6137 6402 6954 6955 6 6401 6137 6139 6403 6955 6961 6 6402 6139 6141 6404 6961 6411 6 6403 6141 6143 6405 6409 6411 6 6404 6143 6406 6407 6408 6409 6 6405 6143 6144 6407 6437 6435 6 6405 6406 6408 6432 6430 6435 6 6405 6407 6409 6410 6429 6430 6 6405 6408 6410 6404 6411 6412 6 6409 6408 6412 6413 6414 6429 6 6404 6409 6412 6960 6961 6403 6 6411 6409 6410 6413 6960 6962 6 6412 6410 6414 6415 6964 6962 6 6413 6410 6415 6416 6428 6429 6 6413 6414 6416 6417 6964 6965 6 6415 6414 6417 6418 6419 6428 6 6415 6416 6418 6559 6560 6965 6 6417 6416 6419 6420 6559 6566 6 6418 6416 6420 6421 6428 6425 6 6418 6419 6421 6422 6574 6566 6 6420 6419 6422 6423 6424 6425 6 6420 6421 6423 6574 6573 6575 6 6422 6421 6424 6581 6578 6575 6 6423 6421 6425 6426 6581 6582 6 6424 6421 6426 6427 6428 6419 6 6424 6425 6427 6585 6582 6431 6 6426 6425 6428 6429 6430 6431 6 6427 6425 6419 6416 6414 6429 6 6428 6414 6410 6408 6427 6430 6 6427 6429 6408 6431 6432 6407 6 6427 6430 6432 6433 6585 6426 6 6431 6430 6407 6433 6434 6435 6 6431 6432 6434 6585 6586 6587 6 6433 6432 6435 6436 6590 6587 6 6434 6432 6436 6437 6406 6407 6 6434 6435 6437 6438 6590 6591 6 6436 6435 6406 6438 6146 6144 6 6436 6437 6146 6439 6591 6592 6 6438 6146 6147 6440 6592 6593 6 6439 6147 6441 6596 6593 6444 6 6440 6147 6148 6442 6443 6444 6 6441 6148 6150 6152 6154 6443 6 6442 6154 6441 6444 6445 6156 6 6441 6443 6445 6596 6440 6454 6 6444 6443 6156 6446 6447 6454 6 6445 6156 6447 6448 5970 6157 6 6445 6446 6448 6450 6453 6454 6 6447 6446 5970 5971 6449 6450 5 6448 5971 5973 5976 6450 7 6449 5976 6448 6451 6452 6453 6447 7 6450 5976 5977 6452 6608 6599 6609 6 6450 6451 6453 6597 6598 6599 5 6450 6452 6447 6454 6597 6 6447 6453 6596 6444 6445 6597 5 6213 6225 6232 6456 6457 7 6455 6232 6457 6458 6379 6233 6461 6 6455 6456 6458 6459 6212 6213 5 6457 6456 6379 6380 6459 6 6458 6380 6457 6212 6460 6382 6 6212 6459 6208 6382 6205 6206 5 6456 6233 6462 9694 6379 6 6461 6233 6234 6463 6466 9694 6 6462 6234 6236 6464 6465 6466 6 6463 6236 6465 6470 6471 6472 6 6463 6464 6466 6467 6469 6470 6 6463 6465 6462 6467 6468 9694 6 6466 6465 6468 6469 9732 9733 7 6466 6467 9694 6378 6376 9731 9732 6 6467 6465 6470 7510 7511 9733 7 6469 6465 6464 6471 7508 7510 7507 6 6470 6464 6472 6473 7507 7506 6 6471 6464 6236 6473 6474 6237 6 6471 6472 6474 6475 7505 7506 6 6473 6472 6237 6475 6476 6477 7 6473 6474 6476 7504 7505 9693 9781 6 6475 6474 6477 6478 6479 9693 6 6476 6474 6237 6238 6242 6478 6 6477 6242 6243 6476 6479 6480 7 6476 6478 6480 6481 9693 9779 9780 6 6479 6478 6243 6481 6482 6245 6 6479 6480 6482 6488 9706 9779 6 6481 6480 6245 6483 6487 6488 6 6482 6245 6246 6254 6484 6487 5 6483 6254 6485 6487 6490 7 6484 6254 6253 6486 6490 6491 6492 7 6485 6253 6255 6258 6492 6493 6494 6 6483 6484 6482 6488 6489 6490 5 6482 6487 6489 9706 6481 7 6488 6487 6490 9705 2195 2196 9706 6 6489 6487 6484 6485 6491 9705 6 6490 6485 6492 2252 2253 9705 6 6491 6485 6486 6493 2252 9707 6 6492 6486 6494 9707 3336 9708 5 6493 6486 6258 6495 9708 6 6494 6258 6259 6496 9708 6500 6 6495 6259 6497 6498 6499 6500 5 6496 6259 6260 6274 6498 6 6497 6274 6496 6499 6501 6275 6 6496 6498 6500 2512 2513 6501 7 6496 6499 2512 3335 9708 3882 6495 6 2513 6499 6498 6275 6502 9711 6 6501 6275 6276 6503 9710 9711 6 6502 6276 6277 6504 9709 9710 6 6503 6277 6505 6513 9709 9712 6 6504 6277 6278 6506 6507 6513 5 6505 6278 6507 6283 6279 7 6505 6506 6283 6508 6513 6514 6510 6 6507 6283 6284 6286 6509 6510 6 6508 6286 6287 6510 6511 6512 6 6508 6509 6511 6514 6507 6515 7 6510 6509 6512 6330 6515 6516 6520 5 6511 6509 6330 6329 6287 6 6504 6505 6507 6514 9712 9718 5 6513 6507 6510 6515 9718 7 6514 6510 6511 6516 6517 9718 9719 6 6515 6511 6517 6518 6519 6520 6 6515 6516 6518 9719 9720 6523 6 6517 6516 6519 6521 6522 6523 6 6518 6516 6520 6331 6334 6521 5 6519 6516 6511 6330 6331 7 6519 6334 6335 6518 6522 6526 6529 6 6518 6521 6523 6524 6525 6526 7 6518 6522 6524 2215 9720 6517 2214 5 6523 6522 6525 2214 3349 7 6524 6522 6526 6527 3349 3348 6533 6 6525 6522 6521 6527 6528 6529 6 6525 6526 6528 6531 6532 6533 6 6527 6526 6529 6531 6340 6530 5 6528 6526 6521 6335 6530 6 6529 6335 6336 6340 6528 6338 7 6527 6528 6532 6341 6546 6340 6535 6 6527 6531 6533 3864 6534 6535 5 6527 6532 3864 3348 6525 6 3864 6532 6535 6536 6537 6717 6 6534 6532 6536 6545 6546 6531 6 6534 6535 6537 6538 6545 6542 6 6534 6536 6538 6539 6716 6717 6 6537 6536 6539 6540 6541 6542 7 6537 6538 6540 6715 3888 3887 6716 6 6539 6538 6541 6715 6719 6720 6 6540 6538 6542 6543 6720 6709 6 6541 6538 6543 6544 6545 6536 6 6541 6542 6544 6548 6549 6709 6 6543 6542 6545 6547 6345 6548 6 6544 6542 6536 6535 6546 6547 6 6545 6535 6547 6342 6341 6531 6 6545 6546 6544 6342 6343 6345 6 6544 6345 6543 6549 6550 6346 6 6543 6548 6550 6551 6552 6709 6 6549 6548 6346 6348 6551 6350 6 6549 6550 6552 6553 6352 6350 6 6549 6551 6553 6706 6708 6709 6 6552 6551 6352 6554 6555 6706 5 6553 6352 6353 6356 6555 6 6554 6356 6358 6556 6553 6706 7 6555 6358 3972 6706 6707 9748 3492 6 3970 1598 1599 6558 4039 3969 6 6557 1599 4039 3765 613 612 6 6417 6418 6560 6561 6565 6566 6 6417 6559 6561 6562 6965 6966 6 6560 6559 6562 6563 6564 6565 6 6560 6561 6563 6966 6967 6968 6 6562 6561 6564 6986 6984 6968 6 6563 6561 6565 6986 6987 6568 6 6564 6561 6559 6566 6567 6568 6 6565 6559 6418 6567 6574 6420 6 6565 6566 6568 6569 6570 6574 6 6565 6567 6569 6987 6564 6988 6 6568 6567 6570 6571 6991 6988 6 6569 6567 6571 6572 6573 6574 6 6569 6570 6572 6998 6991 6999 6 6571 6570 6573 6576 7002 6999 6 6572 6570 6574 6422 6575 6576 6 6573 6570 6567 6566 6420 6422 6 6573 6422 6576 6577 6578 6423 6 6573 6575 6577 7004 7002 6572 6 6576 6575 6578 6579 7004 7005 6 6577 6575 6579 6580 6581 6423 6 6577 6578 6580 7005 7006 7007 6 6579 6578 6581 7007 7008 6583 6 6580 6578 6423 6424 6582 6583 6 6581 6424 6583 6584 6585 6426 6 6581 6582 6584 7008 6580 7009 6 6583 6582 6585 6721 7009 6586 6 6584 6582 6426 6431 6433 6586 6 6585 6433 6587 6588 6721 6584 6 6586 6433 6588 6589 6590 6434 6 6586 6587 6589 6721 6722 6729 6 6588 6587 6590 6729 6730 6731 6 6589 6587 6434 6436 6591 6731 6 6590 6436 6438 6592 6731 6732 6 6591 6438 6439 6593 6594 6732 6 6592 6439 6594 6595 6596 6440 6 6592 6593 6595 6732 6733 6734 7 6594 6593 6596 6601 6734 6598 6597 6 6595 6593 6440 6444 6454 6597 6 6596 6454 6453 6452 6598 6595 6 6597 6452 6599 6600 6601 6595 6 6598 6452 6600 6607 6608 6451 6 6598 6599 6601 6602 6603 6607 5 6598 6600 6602 6734 6595 6 6601 6600 6603 6604 6735 6734 6 6602 6600 6604 6605 6606 6607 7 6602 6603 6605 6735 6736 6737 6738 5 6604 6603 6606 6738 6739 7 6605 6603 6607 6739 6740 6749 6746 6 6606 6603 6600 6599 6608 6749 6 6607 6599 6451 6609 6748 6749 6 6608 6451 5977 6610 6611 6748 6 6609 5977 5978 6611 6612 6613 6 6609 6610 6612 6748 6747 6750 6 6611 6610 6613 6620 6621 6750 6 6612 6610 5978 6614 6617 6620 6 6613 5978 5979 6615 6616 6617 6 6614 5979 6616 6640 6641 5980 6 6614 6615 6617 6618 6639 6640 6 6614 6616 6618 6619 6620 6613 6 6617 6616 6619 6637 6638 6639 6 6617 6618 6620 6622 6623 6637 6 6617 6619 6613 6612 6621 6622 6 6612 6620 6622 6751 6750 6627 6 6621 6620 6619 6623 6624 6627 6 6622 6619 6624 6625 6636 6637 6 6622 6623 6625 6626 6627 6628 6 6624 6623 6626 6634 6635 6636 6 6624 6625 6628 6629 6633 6634 6 6622 6624 6628 6751 6621 6752 6 6627 6624 6626 6629 6630 6752 6 6628 6626 6630 6631 6632 6633 6 6628 6629 6631 6757 6754 6752 6 6630 6629 6632 6757 6758 6759 6 6631 6629 6633 6759 6767 6768 6 6632 6629 6626 6634 6768 6769 6 6633 6626 6625 6635 6769 6770 6 6634 6625 6636 6770 6771 6772 6 6635 6625 6623 6637 9786 6772 6 6636 6623 6619 6618 6638 9786 6 6637 6618 6639 6786 6784 9786 6 6638 6618 6616 6640 9778 6786 6 6639 6616 6615 6641 9778 6643 6 6640 6615 5980 5982 6642 6643 6 6641 5982 5984 6643 6644 5986 7 6641 6642 6644 9778 6640 6788 9783 6 6643 6642 5986 6169 9783 9784 6 6363 6365 6646 6647 6648 6649 6 6363 6645 6184 6647 9725 9800 6 6646 6645 6648 9724 9725 6656 6 6647 6645 6649 6653 6655 6656 6 6648 6645 6365 6650 6651 6653 6 6649 6365 6651 6652 9674 6366 6 6649 6650 6652 6653 6654 9671 6 6651 6650 9671 9672 9673 9674 6 6649 6651 6654 6648 6655 3174 6 6653 6651 9671 9692 3173 3174 6 6648 6653 3174 6656 3451 3176 6 6648 6655 3451 6657 9724 6647 6 6656 3451 6658 6659 9722 9724 6 6657 3451 6659 3180 6660 6668 6 6657 6658 6668 6669 6670 9722 6 6658 3180 6661 6664 6665 6668 6 6660 3180 3179 6662 6663 6664 6 6661 3179 3181 2859 2860 6663 5 6661 6662 6664 6667 2860 6 6661 6663 6660 6665 6666 6667 6 6660 6664 6666 6668 6669 6673 7 6665 6664 6667 6673 6674 4565 4564 6 6666 6664 6663 4564 6675 2860 5 6660 6665 6669 6659 6658 7 6668 6665 6659 6670 6671 6672 6673 6 6659 6669 6671 6775 6776 9722 6 6670 6669 6672 6774 6773 6775 6 6671 6669 6673 6674 6791 6774 5 6672 6669 6665 6666 6674 5 6673 6666 4565 6672 6791 6 4564 6667 4562 6676 2861 2860 6 4562 6675 2861 6677 4561 9793 6 6676 2861 2854 2855 6678 9793 6 6677 2855 6679 6680 6682 9793 5 6678 2855 6680 6681 2856 6 6678 6679 6681 6682 6683 6684 6 6680 6679 6686 6684 6687 2856 6 6678 6680 6683 9751 9762 9793 6 6682 6680 6684 5157 5158 9751 6 6683 6680 5157 6685 6686 6681 6 5157 6684 6686 6693 6694 6695 6 6685 6684 6681 6687 6688 6693 6 6686 6681 6688 6689 6690 2856 6 6686 6687 6689 6693 6697 6700 6 6688 6687 6690 6691 6700 6701 6 6689 6687 6691 6692 2857 2856 6 6689 6690 6692 6701 6703 2552 5 6691 6690 2857 2551 2552 6 6686 6688 6685 6694 6696 6697 6 6685 6693 6695 4524 4523 6696 5 6685 6694 4524 4533 5157 6 4523 6694 6693 6697 6698 6705 6 6696 6693 6688 6698 6699 6700 7 6696 6697 6699 6704 3506 3507 6705 6 6698 6697 6700 6701 6702 6704 5 6699 6697 6688 6689 6701 7 6700 6689 6691 6699 6702 2223 6703 6 6699 6701 2223 65 66 6704 5 2223 6701 6691 2552 2222 6 6699 6702 66 67 6698 3506 5 6698 3507 3508 4523 6696 7 6553 6555 6556 6707 6552 6708 9750 6 6706 6556 9748 3503 9749 9750 6 6552 6706 6709 6710 6711 9750 7 6552 6708 6710 6720 6541 6549 6543 6 6709 6708 6711 6712 6719 6720 7 6710 6708 6712 6713 3504 9749 9750 7 6710 6711 6713 3118 3120 6714 6719 6 6712 6711 3504 3505 3117 3118 6 6712 3120 3122 3888 6715 6719 5 6714 3888 6539 6540 6719 6 6539 3887 6537 6717 3863 6718 5 6537 6716 6534 3864 3863 6 3863 6716 3862 3343 3886 3887 6 6715 6540 6714 6712 6710 6720 5 6719 6540 6541 6710 6709 6 6586 6588 6722 6723 7009 6584 6 6721 6588 6723 6724 6728 6729 6 6721 6722 6724 6725 7010 7009 6 6723 6722 6725 6726 6727 6728 6 6723 6724 6726 7010 7011 7012 6 6725 6724 6727 7023 7012 7024 6 6726 6724 6728 7024 7027 7028 6 6727 6724 6722 6729 7028 7031 6 6728 6722 6588 6589 6730 7031 6 6729 6589 6731 7031 7032 7033 6 6730 6589 6590 6591 6732 7033 6 6731 6591 6592 6594 6733 7033 6 6732 6594 6734 6735 7033 7034 6 6733 6594 6735 6602 6601 6595 6 6733 6734 6602 6604 6736 7034 6 6735 6604 6737 7034 7035 7036 6 6736 6604 6738 6741 7036 7037 5 6737 6604 6605 6739 6741 7 6738 6605 6606 6740 6741 6742 6743 6 6739 6606 6743 6744 6745 6746 6 6737 6738 6739 6742 7037 7038 6 6741 6739 6743 7038 7039 7040 6 6742 6739 6740 6744 7040 7041 7 6743 6740 6745 7041 7042 6755 7043 5 6744 6740 6746 6747 7043 6 6745 6740 6747 6748 6749 6606 7 6745 6746 6748 6611 6750 6751 7043 6 6747 6746 6749 6608 6609 6611 5 6748 6746 6608 6606 6607 5 6747 6611 6751 6621 6612 7 6747 6750 6621 6627 6752 6753 7043 6 6751 6627 6753 6754 6630 6628 5 6751 6752 6754 6755 7043 6 6753 6752 6755 6756 6757 6630 7 6753 6754 6756 7042 6744 7043 7142 5 6755 6754 6757 7142 6760 6 6756 6754 6630 6631 6758 6760 6 6757 6631 6759 6760 6761 6762 6 6758 6631 6632 6762 6763 6767 6 6757 6758 6761 7142 6756 7143 6 6760 6758 6762 7143 7144 7145 6 6761 6758 6759 6763 6764 7145 6 6762 6759 6764 4560 6765 6767 6 6762 6763 4560 4552 7145 4551 6 4560 6763 4559 4566 6766 6767 5 4566 6765 6767 6791 6768 6 6766 6765 6763 6759 6632 6768 6 6767 6632 6633 6769 6791 6766 6 6768 6633 6634 6770 6774 6791 6 6769 6634 6635 6771 6773 6774 6 6770 6635 6772 6773 6778 6779 6 6771 6635 6779 6780 6636 9786 6 6770 6771 6774 6671 6775 6778 6 6770 6773 6671 6672 6791 6769 6 6671 6773 6670 6776 6777 6778 6 6670 6775 6777 9722 9723 9799 7 6776 6775 6778 6779 6781 9798 9799 5 6777 6775 6773 6771 6779 6 6778 6771 6772 6780 6781 6777 6 6779 6772 6781 6782 6784 9786 6 6779 6780 6782 6783 6777 9798 6 6781 6780 6783 6177 6784 6785 5 6781 6782 6177 6178 9798 6 6782 6780 6785 6786 6638 9786 7 6782 6784 6177 6175 6786 6787 6789 7 6785 6784 6787 6788 9778 6639 6638 6 6785 6786 6788 6789 6172 6790 6 6787 6786 9778 6643 9783 6790 5 6785 6787 6172 6173 6175 5 6172 6787 6171 6788 9783 8 6672 6674 6774 4565 4566 6766 6769 6768 6 5419 5420 6793 7332 7333 7334 6 6792 5420 5421 5429 6794 7334 6 6793 5429 5430 6795 7334 7335 6 6794 5430 5431 6796 7335 7336 6 6795 5431 5433 5434 6797 7336 6 6796 5434 5435 6798 7336 7337 6 6797 5435 5436 6799 7337 7338 6 6798 5436 5437 6800 7338 7339 6 6799 5437 5438 6801 7339 7340 6 6800 5438 5439 6802 7340 7341 6 6801 5439 6803 7341 7342 7343 6 6802 5439 5440 5441 6804 7343 6 6803 5441 5442 6805 7343 7344 6 6804 5442 5443 6806 7344 7345 6 6805 5443 5445 6807 7345 7346 6 6806 5445 5446 6808 7346 7347 6 6807 5446 5447 6809 7347 7348 6 6808 5447 6810 7348 7349 7350 6 6809 5447 5448 6811 7350 6812 5 6810 5448 5218 5219 6812 6 6811 5219 5220 6813 7350 6810 5 6812 5220 6814 7350 7351 6 6813 5220 5221 6815 7351 7352 7 6814 5221 5222 5223 6816 7352 7353 5 6815 5223 6817 7353 7354 7 6816 5223 5224 5225 6818 7354 7355 5 6817 5225 6819 7355 7356 6 6818 5225 6820 7356 7357 7358 6 6819 5225 5226 5227 6821 7358 5 6820 5227 5228 6822 7358 6 6821 5228 6823 7358 7359 7360 7 6822 5228 5229 5230 6824 7360 7361 5 6823 5230 6825 6826 7361 5 6824 5230 6826 6827 5168 7 6824 6825 6827 6828 6829 7363 7361 5 6826 6825 5168 5169 6828 6 6827 5169 6826 6829 6830 6831 6 6826 6828 6830 7363 7364 7365 6 6829 6828 6831 7365 7366 7367 6 6830 6828 5169 5170 6832 7367 7 6831 5170 6833 7367 7368 7369 6835 5 6832 5170 6834 5239 6835 5 6833 5170 5239 5019 5024 6 6833 5239 5240 6836 7369 6832 6 6835 5240 5649 6837 7376 7369 7 6836 5649 6838 7376 7375 7377 7378 6 6837 5649 5650 5652 6839 7378 6 6838 5652 6840 7378 7379 7380 6 6839 5652 5653 6841 6842 7380 6 6840 5653 5654 5248 6842 5249 6 6840 6841 5249 6843 7380 7381 6 6842 5249 5250 6844 7381 7382 6 6843 5250 6845 7382 7383 7384 6 6844 5250 5029 5030 6846 7384 6 6845 5030 5031 6847 6848 7384 6 6846 5031 6848 6849 6850 5032 6 6846 6847 6849 7385 7384 7386 6 6848 6847 6850 7386 7387 7388 6 6849 6847 5032 5033 6851 7388 6 6850 5033 5034 5035 6852 7388 6 6851 5035 6853 7388 7389 6855 6 6852 5035 5036 5039 6854 6855 6 6853 5039 6855 6856 6857 5040 6 6853 6854 6856 7389 6852 7390 6 6855 6854 6857 6858 6860 7390 6 6856 6854 5040 6858 6859 5042 6 6856 6857 6859 6860 6861 6862 6 6858 6857 5042 6862 6863 6864 6 6856 6858 6861 7390 7391 7398 6 6860 6858 6862 7398 7399 7400 6 6861 6858 6859 6863 7400 7401 6 6862 6859 6864 6865 6866 7401 6 6863 6859 6865 5043 6880 5042 6 6863 6864 6866 6867 6880 6874 6 6863 6865 6867 6868 7401 7402 6 6866 6865 6868 6869 6873 6874 6 6866 6867 6869 6870 7402 7403 6 6868 6867 6870 6871 6872 6873 6 6868 6869 6871 7406 7403 7407 6 6870 6869 6872 7413 7407 7414 6 6871 6869 6873 7420 7417 7414 6 6872 6869 6867 6874 6875 7420 6 6873 6867 6875 6876 6865 6880 6 6873 6874 6876 6877 7420 7419 6 6875 6874 6877 6878 6879 6880 6 6875 6876 6878 6884 6885 7419 6 6877 6876 6879 6881 6883 6884 6 6878 6876 6880 6881 5044 5043 6 6879 6876 5043 6864 6865 6874 6 6878 6879 5044 5046 6882 6883 6 6881 5046 6883 6888 6889 6890 6 6881 6882 6878 6884 6887 6888 6 6878 6883 6877 6885 6886 6887 6 6877 6884 6886 7419 7421 7427 6 6885 6884 6887 7427 7428 7429 6 6886 6884 6883 6888 7429 7430 6 6887 6883 6882 6889 7430 7431 6 6888 6882 6890 6891 7431 7434 6 6889 6882 5046 6891 4646 4645 6 6889 6890 4646 4647 6892 7434 6 6891 4647 4648 6893 7434 6894 6 6892 4648 4254 4255 4731 6894 6 6893 4731 6895 7434 6892 7433 6 6894 4731 4732 6896 6898 7433 6 6895 4732 6897 6898 6899 6900 6 6896 4732 4733 6900 6901 6902 6 6895 6896 6899 7433 7432 7435 6 6898 6896 6900 7435 7436 7437 6 6899 6896 6897 6901 7437 7438 6 6900 6897 6902 7438 6905 6904 6 6901 6897 4733 4263 6903 6904 6 6902 4263 4264 4265 5232 6904 6 6903 5232 5459 6905 6901 6902 6 6904 5459 5460 6906 7438 6901 6 6905 5460 6907 7438 7439 7440 6 6906 5460 5461 6908 7440 7441 6 6907 5461 5462 6909 7263 7441 6 6908 5462 5463 6910 7263 7264 6 6909 5463 6911 7264 7265 6912 6 6910 5463 5464 5465 5466 6912 6 6911 5466 6913 7265 6910 7266 6 6912 5466 5467 6914 7266 7267 6 6913 5467 5468 6915 7267 7268 6 6914 5468 6916 7268 7269 7270 6 6915 5468 5469 6917 6918 7270 6 6916 5469 5470 5471 5472 6918 6 6916 6917 5472 6919 7270 7271 6 6918 5472 5473 6920 7271 7272 6 6919 5473 5474 6921 7272 7273 6 6920 5474 5475 5476 6922 7273 6 6921 5476 6923 7275 7273 7276 6 6922 5476 5477 6924 7276 7277 6 6923 5477 5478 6925 7277 7278 6 6924 5478 5479 6926 7278 7279 6 6925 5479 5480 6927 7279 7280 6 6926 5480 5481 5655 6928 7280 6 6927 5655 5656 6929 7282 7280 6 6928 5656 6930 7282 7283 7284 6 6929 5656 5657 5658 6931 7284 6 6930 5658 6932 7284 7285 7286 6 6931 5658 5659 5832 6933 7286 6 6932 5832 6934 7286 7287 7288 6 6933 5832 5833 5841 6935 7288 6 6934 5841 5842 6936 6937 7288 6 6935 5842 5844 6937 6938 6019 6 6935 6936 6938 6939 7288 7289 6 6937 6936 6019 6939 6940 6941 6 6937 6938 6940 7289 7290 7291 6 6939 6938 6941 7291 7292 6942 6 6940 6938 6019 5846 5848 6942 6 6941 5848 6943 6944 7292 6940 6 6942 5848 6944 6945 6946 5849 6 6942 6943 6945 7292 7293 7294 6 6944 6943 6946 7294 7295 7296 7 6945 6943 5849 5851 6386 6947 7296 6 6946 6386 6387 6948 7296 7297 6 6947 6387 6388 6389 6949 7297 6 6948 6389 6390 6950 7297 7298 7 6949 6390 6392 6396 6951 7298 7299 6 6950 6396 6952 7299 7301 7302 6 6951 6396 6397 6953 7044 7302 6 6952 6397 6400 6954 7044 7045 6 6953 6400 6401 6955 6956 7045 6 6954 6401 6402 6956 6957 6961 6 6954 6955 6957 6958 7045 7046 6 6956 6955 6958 6959 6960 6961 6 6956 6957 6959 7046 7049 7050 6 6958 6957 6960 6962 6963 7050 6 6959 6957 6961 6411 6412 6962 6 6960 6957 6955 6402 6403 6411 6 6960 6412 6959 6963 6964 6413 6 6959 6962 6964 7052 7050 7053 6 6963 6962 6413 6415 6965 7053 6 6964 6415 6417 6560 6966 7053 6 6965 6560 6562 6967 7053 6972 6 6966 6562 6968 6969 6971 6972 6 6967 6562 6969 6970 6563 6984 6 6967 6968 6970 6971 6975 6976 6 6969 6968 6982 6976 6983 6984 6 6967 6969 6972 6973 6974 6975 6 6967 6971 6973 7053 6966 7052 6 6972 6971 6974 7052 7051 7054 6 6973 6971 6975 7063 7054 7064 6 6974 6971 6969 6976 6977 7064 6 6975 6969 6977 6978 6982 6970 6 6975 6976 6978 6979 7064 7065 6 6977 6976 6979 6980 6981 6982 6 6977 6978 6980 7065 7066 7067 6 6979 6978 6981 7067 7068 7072 6 6980 6978 6982 7072 7073 7074 6 6981 6978 6976 6970 6983 7074 6 6982 6970 6984 6985 7074 7075 6 6983 6970 6985 6986 6563 6968 6 6983 6984 6986 7075 7076 7077 6 6985 6984 6563 6564 6987 7077 6 6986 6564 6568 6988 6989 7077 6 6987 6568 6989 6990 6991 6569 6 6987 6988 6990 6992 7077 7078 6 6989 6988 6991 6992 6993 6997 6 6990 6988 6997 6998 6571 6569 6 6989 6990 6993 6994 7078 7079 6 6992 6990 6994 6995 6996 6997 6 6992 6993 6995 7079 7082 7083 6 6994 6993 6996 7083 7086 7087 6 6995 6993 6997 7087 7088 7089 6 6996 6993 6990 6991 6998 7089 6 6997 6991 6571 6999 7000 7089 6 6998 6571 7000 7001 7002 6572 6 6998 6999 7001 7089 7090 7093 6 7000 6999 7002 7003 7093 7094 6 7001 6999 7003 7004 6576 6572 6 7001 7002 7004 7094 7095 7096 6 7003 7002 6576 6577 7005 7096 6 7004 6577 6579 7006 7096 7097 6 7005 6579 7007 7097 7098 7099 6 7006 6579 6580 7008 7013 7099 6 7007 6580 6583 7009 7010 7013 6 7008 6583 7010 6723 6721 6584 6 7008 7009 6723 6725 7011 7013 6 7010 6725 7012 7013 7014 7015 6 7011 6725 7023 7021 7015 6726 6 7010 7011 7008 7007 7014 7099 6 7013 7011 7015 7016 7099 7100 6 7014 7011 7016 7017 7021 7012 6 7014 7015 7017 7018 7100 7101 6 7016 7015 7018 7019 7020 7021 6 7016 7017 7019 7108 7101 7114 6 7018 7017 7020 7115 7114 7116 6 7019 7017 7021 7022 7116 7117 6 7020 7017 7015 7022 7023 7012 6 7020 7021 7023 7025 7117 7118 6 7022 7021 7012 6726 7024 7025 6 7023 6726 6727 7025 7026 7027 6 7022 7023 7024 7026 7118 7119 6 7025 7024 7027 7119 7120 7121 6 7026 7024 6727 7028 7029 7121 6 7027 6727 6728 7029 7030 7031 6 7027 7028 7030 7123 7121 7124 6 7029 7028 7031 7124 7035 7032 6 7030 7028 6728 6729 6730 7032 6 7031 6730 7033 7035 7030 7034 6 7032 6730 6731 6732 6733 7034 6 7033 6733 6735 6736 7035 7032 6 7034 6736 7036 7124 7030 7032 5 7035 6736 6737 7037 7124 6 7036 6737 6741 7038 7124 7123 7 7037 6741 6742 7039 7123 7125 7126 6 7038 6742 7040 7136 7126 7137 6 7039 6742 6743 7041 7137 7138 6 7040 6743 6744 7042 7138 7139 5 7041 6744 6755 7142 7139 6 6755 6744 6745 6747 6751 6753 6 6952 6953 7045 7302 7303 7047 6 7044 6953 6954 6956 7046 7047 6 7045 6956 6958 7047 7048 7049 6 7045 7046 7048 7303 7044 7304 6 7047 7046 7049 7304 7057 7055 6 7048 7046 6958 7050 7051 7055 6 7049 6958 7051 7052 6963 6959 6 7049 7050 7052 6973 7054 7055 6 7051 7050 6963 7053 6972 6973 6 7052 6963 6964 6965 6966 6972 6 7051 6973 7055 7056 7063 6974 6 7051 7054 7056 7057 7048 7049 6 7055 7054 7057 7058 7059 7063 6 7055 7056 7058 7304 7048 7305 6 7057 7056 7059 7060 7308 7305 6 7058 7056 7060 7061 7062 7063 6 7058 7059 7061 7308 7477 7478 6 7060 7059 7062 7478 7479 7480 6 7061 7059 7063 7064 7065 7480 6 7062 7059 7056 7054 6974 7064 6 7063 6974 6975 6977 7062 7065 6 7062 7064 6977 6979 7066 7480 6 7065 6979 7067 7480 7481 7482 6 7066 6979 6980 7068 7069 7482 6 7067 6980 7069 7070 7071 7072 6 7067 7068 7070 7484 7482 7463 6 7069 7068 7071 7463 7485 7486 6 7070 7068 7072 7486 7487 7488 6 7071 7068 6980 6981 7073 7488 6 7072 6981 7074 7488 7489 7493 6 7073 6981 6982 6983 7075 7493 6 7074 6983 6985 7076 7494 7493 6 7075 6985 7077 7494 7080 7078 6 7076 6985 6986 6987 6989 7078 6 7077 6989 6992 7079 7080 7076 6 7078 6992 6994 7080 7081 7082 6 7078 7079 7081 7692 7494 7076 6 7080 7079 7082 7224 7225 7692 6 7081 7079 6994 7083 7084 7224 6 7082 6994 6995 7084 7085 7086 6 7082 7083 7085 7227 7224 7228 6 7084 7083 7086 7228 7229 7230 6 7085 7083 6995 7087 7233 7230 6 7086 6995 6996 7088 7233 7234 6 7087 6996 7089 7090 7091 7234 6 7088 6996 6997 6998 7000 7090 6 7089 7000 7088 7091 7092 7093 6 7088 7090 7092 7234 7235 7236 6 7091 7090 7093 7236 7237 7238 6 7092 7090 7000 7001 7094 7238 6 7093 7001 7003 7095 7238 7239 6 7094 7003 7096 7239 7240 7104 6 7095 7003 7004 7005 7097 7104 6 7096 7005 7006 7098 7103 7104 6 7097 7006 7099 7100 7102 7103 6 7098 7006 7007 7013 7014 7100 6 7099 7014 7016 7101 7102 7098 6 7100 7016 7102 7107 7108 7018 6 7100 7101 7098 7103 7106 7107 6 7098 7102 7097 7104 7105 7106 6 7097 7103 7105 7240 7095 7096 6 7104 7103 7106 7242 7240 7243 6 7105 7103 7102 7107 7243 7244 6 7106 7102 7101 7108 7109 7244 6 7107 7101 7018 7109 7110 7114 6 7107 7108 7110 7111 7244 7245 6 7109 7108 7111 7112 7113 7114 6 7109 7110 7112 7248 7245 7249 6 7111 7110 7113 7249 7250 7251 6 7112 7110 7114 7115 7251 7252 6 7113 7110 7115 7019 7018 7108 6 7113 7114 7019 7116 7252 7255 6 7115 7019 7020 7117 7255 7256 6 7116 7020 7022 7118 7259 7256 6 7117 7022 7025 7119 7259 7260 6 7118 7025 7026 7120 7260 7129 6 7119 7026 7121 7122 7128 7129 6 7120 7026 7122 7123 7029 7027 6 7120 7121 7123 7125 7127 7128 7 7122 7121 7029 7124 7037 7038 7125 6 7123 7029 7030 7035 7036 7037 5 7123 7038 7126 7127 7122 5 7125 7038 7127 7136 7039 7 7125 7126 7122 7128 7131 7132 7136 6 7122 7127 7120 7129 7130 7131 6 7120 7128 7130 7262 7260 7119 6 7129 7128 7131 7262 7533 7531 6 7130 7128 7127 7132 7133 7533 6 7131 7127 7133 7134 7135 7136 6 7131 7132 7134 7533 7532 7534 6 7133 7132 7135 7534 7535 7536 6 7134 7132 7136 7536 7537 7137 6 7135 7132 7127 7126 7039 7137 6 7136 7039 7040 7138 7537 7135 6 7137 7040 7041 7139 7140 7537 6 7138 7041 7140 7141 7142 7042 6 7138 7139 7141 7149 7151 7537 6 7140 7139 7142 7143 7148 7149 7 7141 7139 7042 6755 6756 6760 7143 6 7141 7142 6760 6761 7144 7148 6 7143 6761 7145 7146 7147 7148 7 7144 6761 7146 4553 4552 6764 6762 5 7144 7145 4553 4555 7147 6 7146 4555 4557 7144 7148 7149 5 7144 7147 7149 7141 7143 7 7148 7147 4557 7141 7140 7150 7151 6 7149 4557 7151 7152 7153 7154 6 7149 7150 7140 7152 7537 7536 6 7151 7150 7153 7536 7535 7538 6 7152 7150 7154 7155 7156 7538 6 7153 7150 7155 4650 4556 4557 6 7153 7154 7156 7157 7167 4650 6 7153 7155 7157 7158 7538 7539 6 7156 7155 7158 7159 7160 7167 6 7156 7157 7159 7539 7540 7555 6 7158 7157 7160 7161 7555 7556 6 7159 7157 7161 7162 7163 7167 6 7159 7160 7162 7164 7168 7556 6 7161 7160 7163 7164 4138 7165 5 7162 7160 7165 7166 7167 6 7161 7162 4138 7168 7169 4139 7 4138 7162 7163 7166 4414 4135 4136 5 7165 7163 4414 4416 7167 7 4416 7166 7163 7160 7157 7155 4650 6 7161 7164 7169 7556 7557 7561 7 7168 7164 4139 7170 7561 7562 7563 5 7169 4139 4140 7171 7563 7 7170 4140 4141 7172 7563 7564 7565 6 7171 4141 4125 7173 7174 7565 6 7172 4125 7174 7175 4123 9790 6 7172 7173 7175 7176 7177 7565 6 7174 7173 7176 9789 9788 9790 6 7174 7175 7177 7178 7179 9789 7 7174 7176 7178 7565 7564 7569 7570 6 7177 7176 7179 7180 7181 7570 6 7178 7176 7180 9789 3536 3538 6 7178 7179 7181 7182 7183 3538 6 7178 7180 7182 7571 7570 7572 6 7181 7180 7183 7572 7573 7574 6 7182 7180 3538 3539 7184 7574 6 7183 3539 7185 7576 7574 7188 6 7184 3539 3540 7186 7187 7188 6 7185 3540 7187 7212 7211 7213 6 7185 7186 7188 7189 7212 7193 6 7185 7187 7189 7190 7576 7184 6 7188 7187 7190 7191 7192 7193 6 7188 7189 7191 7576 7577 7580 6 7190 7189 7192 7194 7580 7581 6 7191 7189 7193 7194 7195 7199 6 7192 7189 7199 7200 7212 7187 6 7191 7192 7195 7196 7581 7582 6 7194 7192 7196 7197 7198 7199 6 7194 7195 7197 7582 7583 7584 6 7196 7195 7198 7584 3197 3196 6 7197 7195 7199 3196 7201 7204 6 7198 7195 7192 7193 7200 7201 6 7199 7193 7201 7202 7212 7209 6 7199 7200 7202 7203 7204 7198 6 7201 7200 7203 7207 7208 7209 6 7201 7202 7204 7205 7206 7207 6 7201 7203 7205 3195 3196 7198 6 7204 7203 7206 7221 7222 3195 6 7205 7203 7207 9746 7219 7221 6 7206 7203 7202 7208 9746 9747 6 7207 7202 7209 7210 9747 7214 6 7208 7202 7210 7211 7212 7200 6 7208 7209 7211 4374 4375 7214 6 7210 7209 7212 7186 7213 4374 6 7211 7209 7200 7193 7187 7186 6 7211 7186 3540 3541 4373 4374 6 7210 4375 4376 7215 9747 7208 6 7214 4376 4378 7216 7217 9747 6 7215 4378 7217 2864 1628 2863 6 7215 7216 2864 7218 9746 9747 6 7217 2864 2865 2866 7219 9746 6 7218 2866 7220 7221 7206 9746 5 7219 2866 7221 3215 2867 6 7219 7220 3215 7222 7206 7205 6 7221 3215 3216 7223 3195 7205 5 7222 3216 3217 3194 3195 6 7081 7082 7225 7226 7227 7084 6 7081 7224 7226 7692 7691 7693 6 7225 7224 7227 7693 7694 7675 6 7226 7224 7084 7228 7675 7695 6 7227 7084 7085 7229 7695 7696 6 7228 7085 7230 7231 7696 7697 6 7229 7085 7231 7232 7233 7086 6 7229 7230 7232 7697 7698 7702 6 7231 7230 7233 7702 7703 7704 6 7232 7230 7086 7087 7234 7704 6 7233 7087 7088 7091 7235 7704 6 7234 7091 7236 7719 7705 7704 6 7235 7091 7092 7237 7719 7718 6 7236 7092 7238 7718 7720 7721 6 7237 7092 7093 7094 7239 7721 6 7238 7094 7095 7240 7241 7721 6 7239 7095 7104 7241 7242 7105 6 7239 7240 7242 7721 7722 7723 6 7241 7240 7105 7243 7723 7726 6 7242 7105 7106 7244 7246 7726 6 7243 7106 7107 7109 7245 7246 6 7244 7109 7246 7247 7248 7111 6 7244 7245 7247 7729 7726 7243 6 7246 7245 7248 7965 7729 7966 6 7247 7245 7111 7249 7966 7967 6 7248 7111 7112 7250 7967 7968 6 7249 7112 7251 7512 7968 7969 6 7250 7112 7113 7252 7253 7512 6 7251 7113 7115 7253 7254 7255 6 7251 7252 7254 7512 7513 7517 6 7253 7252 7255 7257 9776 7517 6 7254 7252 7115 7116 7256 7257 6 7255 7116 7257 7258 7259 7117 6 7255 7256 7258 7524 7254 9776 6 7257 7256 7259 7261 7525 7524 6 7258 7256 7117 7118 7260 7261 6 7259 7118 7119 7261 7262 7129 6 7259 7260 7262 7530 7525 7258 6 7261 7260 7129 7130 7531 7530 6 6908 6909 7264 7441 7443 7444 6 7263 6909 6910 7265 7444 7445 6 7264 6910 6912 7266 7445 7446 6 7265 6912 6913 7267 7446 7447 6 7266 6913 6914 7268 7450 7447 6 7267 6914 6915 7269 7450 7451 6 7268 6915 7270 7451 7452 7453 6 7269 6915 6916 6918 7271 7453 6 7270 6918 6919 7272 7453 7454 6 7271 6919 6920 7273 7274 7454 6 7272 6920 7274 7275 6922 6921 6 7272 7273 7275 7454 7455 7456 6 7274 7273 6922 7276 7456 7457 6 7275 6922 6923 7277 7457 7458 6 7276 6923 6924 7278 7458 7459 6 7277 6924 6925 7279 7459 7460 6 7278 6925 6926 7280 7281 7460 6 7279 6926 7281 7282 6928 6927 6 7279 7280 7282 7460 7461 7465 6 7281 7280 6928 6929 7283 7465 6 7282 6929 7284 7465 7466 7467 6 7283 6929 6930 6931 7285 7467 6 7284 6931 7286 7467 7468 7469 6 7285 6931 6932 6933 7287 7469 6 7286 6933 7288 7469 7470 7289 6 7287 6933 6934 6935 6937 7289 6 7288 6937 6939 7290 7470 7287 6 7289 6939 7291 7470 7471 7472 6 7290 6939 6940 7292 7472 7473 6 7291 6940 6942 6944 7293 7473 6 7292 6944 7294 7473 7474 7475 6 7293 6944 6945 7295 7475 7300 6 7294 6945 7296 7298 7299 7300 6 7295 6945 6946 6947 7297 7298 5 7296 6947 6948 6949 7298 6 7297 6949 6950 7296 7295 7299 6 7295 7298 6950 6951 7300 7301 5 7295 7299 7301 7475 7294 7 7300 7299 6951 7302 7475 7306 7303 5 7301 6951 6952 7044 7303 6 7302 7044 7047 7304 7306 7301 6 7303 7047 7048 7057 7305 7306 6 7304 7057 7306 7307 7308 7058 6 7304 7305 7307 7475 7301 7303 6 7306 7305 7308 7475 7474 7476 6 7307 7305 7058 7060 7476 7477 5 4703 4704 7310 7856 7857 6 7309 4704 4705 7311 7857 7858 6 7310 4705 4706 7312 7858 7859 6 7311 4706 4707 7313 7859 7860 6 7312 4707 4708 5171 7314 7860 6 7313 5171 7315 7860 7861 7862 6 7314 5171 5172 7316 7862 7863 6 7315 5172 5173 7317 7863 7864 6 7316 5173 5174 7318 7864 7865 6 7317 5174 5175 7319 7865 7866 6 7318 5175 5176 7320 7866 7867 6 7319 5176 5177 7321 7867 7868 6 7320 5177 5178 5179 7322 7868 6 7321 5179 7323 7868 7869 7870 6 7322 5179 5180 7324 7870 7871 6 7323 5180 5181 5412 7325 7871 6 7324 5412 7326 7871 7872 7873 6 7325 5412 5413 7327 7873 7874 6 7326 5413 5414 5415 7328 7874 6 7327 5415 7329 7874 7875 7876 6 7328 5415 5416 5417 7330 7876 6 7329 5417 7331 7876 7877 7878 6 7330 5417 5418 5419 7332 7878 6 7331 5419 6792 7333 7878 7879 6 7332 6792 7334 7879 7880 7881 6 7333 6792 6793 6794 7335 7881 6 7334 6794 6795 7336 7881 7882 6 7335 6795 6796 6797 7337 7882 6 7336 6797 6798 7338 7882 7883 6 7337 6798 6799 7339 7883 7884 6 7338 6799 6800 7340 7884 7885 6 7339 6800 6801 7341 7885 7886 6 7340 6801 6802 7342 7886 7887 6 7341 6802 7343 7887 7888 7889 6 7342 6802 6803 6804 7344 7889 6 7343 6804 6805 7345 7889 7890 6 7344 6805 6806 7346 7890 7891 6 7345 6806 6807 7347 7891 7892 6 7346 6807 6808 7348 7892 7893 6 7347 6808 6809 7349 7893 7894 6 7348 6809 7350 7894 7895 7896 7 7349 6809 6810 6812 6813 7351 7896 6 7350 6813 6814 7352 7896 7897 6 7351 6814 6815 7353 7897 7898 5 7352 6815 6816 7354 7898 7 7353 6816 6817 7355 7898 7899 7900 5 7354 6817 6818 7356 7900 7 7355 6818 6819 7357 7900 7901 7902 6 7356 6819 7358 7902 7903 7904 7 7357 6819 6820 6821 6822 7359 7904 6 7358 6822 7360 7904 7905 7906 6 7359 6822 6823 7361 7362 7906 6 7360 6823 6824 7362 7363 6826 6 7360 7361 7363 7906 7907 7908 6 7362 7361 6826 6829 7364 7908 6 7363 6829 7365 7908 7909 7910 5 7364 6829 6830 7366 7910 7 7365 6830 7367 7370 7372 7910 7911 6 7366 6830 6831 6832 7368 7370 6 7367 6832 7369 7370 7371 7376 5 7368 6832 7376 6836 6835 6 7367 7368 7371 7366 7372 7373 6 7370 7368 7373 7374 7375 7376 6 7366 7370 7373 7911 7912 7913 6 7372 7370 7371 7374 7913 7914 6 7373 7371 7375 7914 7915 7916 6 7374 7371 7376 6837 7377 7916 6 7375 7371 7368 7369 6836 6837 6 7375 6837 7378 7916 7917 7918 6 7377 6837 6838 6839 7379 7918 5 7378 6839 7380 7602 7918 6 7379 6839 6840 6842 7381 7602 6 7380 6842 6843 7382 7602 7603 6 7381 6843 6844 7383 7606 7603 6 7382 6844 7384 7385 7606 7607 6 7383 6844 7385 6848 6846 6845 6 7383 7384 6848 7386 7607 7608 6 7385 6848 6849 7387 7608 7393 6 7386 6849 7388 7389 7392 7393 6 7387 6849 6850 6851 6852 7389 6 7388 6852 6855 7390 7392 7387 6 7389 6855 6856 6860 7391 7392 6 7390 6860 7392 7397 7394 7398 6 7390 7391 7389 7387 7393 7394 6 7387 7392 7394 7395 7608 7386 6 7393 7392 7395 7396 7397 7391 6 7393 7394 7396 7608 7609 7612 6 7395 7394 7397 7612 7613 7623 6 7396 7394 7391 7398 7623 7624 6 7397 7391 6860 6861 7399 7624 5 7398 6861 7400 7624 7625 6 7399 6861 6862 7401 7625 7626 7 7400 6862 6863 6866 7402 7626 7627 6 7401 6866 6868 7403 7404 7627 6 7402 6868 7404 7405 7406 6870 6 7402 7403 7405 7627 7628 7629 6 7404 7403 7406 7409 7629 7630 6 7405 7403 6870 7407 7408 7409 6 7406 6870 7408 7412 7413 6871 6 7406 7407 7409 7410 7411 7412 6 7406 7408 7405 7410 7633 7630 6 7409 7408 7411 7633 7634 7635 6 7410 7408 7412 7635 7636 7643 6 7411 7408 7407 7413 7643 7644 6 7412 7407 6871 7414 7415 7644 6 7413 6871 7415 7416 7417 6872 6 7413 7414 7416 7644 7645 7646 6 7415 7414 7417 7418 7646 7647 6 7416 7414 7418 7419 7420 6872 6 7416 7417 7419 7421 7422 7647 7 7418 7417 7420 6875 6877 6885 7421 5 7419 7417 6872 6873 6875 6 7419 6885 7418 7422 7423 7427 6 7418 7421 7423 7424 7647 7648 6 7422 7421 7424 7425 7426 7427 6 7422 7423 7425 7648 7649 7650 6 7424 7423 7426 7650 7651 7652 6 7425 7423 7427 7652 7653 7428 6 7426 7423 7421 6885 6886 7428 6 7427 6886 7429 7653 7426 7654 6 7428 6886 6887 7430 7654 7655 6 7429 6887 6888 7431 7432 7655 6 7430 6888 6889 7432 7433 7434 6 7430 7431 7433 6898 7435 7655 6 7432 7431 7434 6894 6895 6898 6 7433 7431 6889 6891 6892 6894 6 7432 6898 6899 7436 7656 7655 6 7435 6899 7437 7656 7657 7661 6 7436 6899 6900 7438 7661 7439 6 7437 6900 6901 6905 6906 7439 6 7438 6906 7440 7661 7437 7662 6 7439 6906 6907 7441 7442 7662 6 7440 6907 6908 7263 7442 7443 6 7440 7441 7443 7662 7663 7664 6 7442 7441 7263 7444 7664 7665 6 7443 7263 7264 7445 7665 7666 6 7444 7264 7265 7446 7666 7667 6 7445 7265 7266 7447 7448 7667 6 7446 7266 7448 7449 7450 7267 6 7446 7447 7449 7669 7667 7672 6 7448 7447 7450 7672 7677 7674 6 7449 7447 7267 7268 7451 7677 6 7450 7268 7269 7452 7677 7678 6 7451 7269 7453 7678 7679 7683 6 7452 7269 7270 7271 7454 7683 6 7453 7271 7272 7274 7455 7683 6 7454 7274 7456 7683 7682 7684 6 7455 7274 7275 7457 7687 7684 6 7456 7275 7276 7458 7687 7688 6 7457 7276 7277 7459 7688 7689 6 7458 7277 7278 7460 7689 7462 6 7459 7278 7279 7281 7461 7462 6 7460 7281 7462 7463 7464 7465 6 7460 7461 7463 7689 7459 7485 7 7462 7461 7464 7484 7069 7070 7485 6 7463 7461 7465 7484 7483 7466 6 7464 7461 7281 7282 7283 7466 6 7465 7283 7467 7483 7464 7495 6 7466 7283 7284 7285 7468 7495 6 7467 7285 7469 7495 7496 7497 6 7468 7285 7286 7287 7470 7497 6 7469 7287 7289 7290 7471 7497 6 7470 7290 7472 7497 7498 7499 6 7471 7290 7291 7473 7499 7476 6 7472 7291 7292 7293 7474 7476 5 7473 7293 7475 7307 7476 7 7474 7293 7294 7300 7301 7306 7307 7 7474 7307 7308 7477 7499 7472 7473 5 7476 7308 7060 7478 7499 6 7477 7060 7061 7479 7498 7499 7 7478 7061 7480 7481 7498 7496 7500 6 7479 7061 7062 7065 7066 7481 6 7479 7480 7066 7482 7483 7500 6 7481 7066 7483 7484 7069 7067 7 7481 7482 7484 7464 7466 7495 7500 5 7483 7482 7069 7463 7464 5 7463 7070 7486 7689 7462 6 7485 7070 7071 7487 7688 7689 6 7486 7071 7488 7687 7688 7686 7 7487 7071 7072 7073 7489 7490 7686 6 7488 7073 7490 7491 7492 7493 5 7488 7489 7491 7686 7685 6 7490 7489 7492 7685 7690 7691 6 7491 7489 7493 7494 7691 7692 6 7492 7489 7494 7075 7074 7073 6 7492 7493 7075 7076 7692 7080 6 7483 7466 7467 7468 7496 7500 6 7495 7468 7497 7498 7479 7500 6 7496 7468 7469 7470 7471 7498 6 7497 7471 7499 7478 7479 7496 6 7498 7471 7472 7478 7477 7476 5 7496 7479 7481 7483 7495 6 428 5613 5614 7502 7503 9769 6 7501 5614 7503 7504 7505 7506 6 7501 7502 7504 9769 9770 9771 6 7503 7502 7505 6475 9771 9781 5 7504 7502 6475 6473 7506 7 6473 7505 7502 5614 5615 7507 6471 5 7506 5615 7508 6470 6471 6 7507 5615 5616 7509 7510 6470 6 7508 5616 7510 7511 9735 4519 5 7508 7509 7511 6470 6469 6 7510 7509 6469 9733 9734 9735 6 7250 7251 7253 7513 7514 7969 6 7512 7253 7514 7515 7516 7517 6 7512 7513 7515 7969 7970 7971 6 7514 7513 7516 7971 7972 7973 6 7515 7513 7517 7518 7519 7973 6 7516 7513 7253 7518 9776 7254 6 7516 7517 7519 7520 7521 9776 6 7516 7518 7520 7973 7974 7978 6 7519 7518 7521 7522 7978 7979 6 7520 7518 7522 7523 7524 9776 6 7520 7521 7523 7990 7979 7527 6 7522 7521 7524 7525 7526 7527 6 7523 7521 7525 7257 7258 9776 6 7523 7524 7526 7261 7530 7258 6 7523 7525 7527 7528 7529 7530 6 7523 7526 7528 7990 7522 7991 6 7527 7526 7529 7991 7547 7546 6 7528 7526 7530 7531 7532 7546 6 7529 7526 7531 7262 7261 7525 6 7529 7530 7262 7532 7533 7130 7 7529 7531 7533 7133 7534 7544 7546 5 7532 7531 7130 7131 7133 6 7532 7133 7134 7535 7545 7544 6 7534 7134 7536 7152 7538 7545 6 7535 7134 7135 7537 7151 7152 6 7536 7135 7137 7138 7140 7151 6 7535 7152 7153 7156 7539 7545 6 7538 7156 7158 7540 7541 7545 6 7539 7158 7541 7542 7554 7555 6 7539 7540 7542 7543 7544 7545 6 7541 7540 7543 7548 7554 7551 6 7541 7542 7544 7546 7547 7548 6 7541 7543 7545 7534 7532 7546 6 7541 7544 7534 7535 7538 7539 6 7532 7544 7543 7547 7528 7529 6 7546 7543 7548 7549 7991 7528 6 7547 7543 7542 7549 7550 7551 6 7547 7548 7550 7991 7990 7992 6 7549 7548 7551 7552 7992 7993 6 7550 7548 7552 7553 7554 7542 6 7550 7551 7553 7993 7995 7996 7 7552 7551 7554 7558 7557 7559 7996 6 7553 7551 7542 7540 7555 7558 6 7554 7540 7158 7159 7556 7558 6 7555 7159 7161 7168 7557 7558 7 7556 7168 7558 7553 7559 7560 7561 5 7556 7557 7555 7554 7553 5 7553 7557 7560 7996 7997 7 7559 7557 7561 7997 8000 7567 7562 5 7560 7557 7168 7169 7562 6 7561 7169 7563 7566 7567 7560 6 7562 7169 7170 7171 7564 7566 6 7563 7171 7565 7177 7566 7569 5 7564 7171 7172 7174 7177 6 7563 7564 7562 7567 7568 7569 6 7562 7566 7568 8000 7560 8001 6 7567 7566 7569 7570 7571 8001 5 7568 7566 7564 7177 7570 6 7569 7177 7568 7571 7181 7178 6 7568 7570 7181 7572 8001 8002 6 7571 7181 7182 7573 8002 8003 6 7572 7182 7574 7575 8003 8004 6 7573 7182 7575 7576 7184 7183 6 7573 7574 7576 7577 7578 8004 6 7575 7574 7184 7188 7190 7577 6 7576 7190 7575 7578 7579 7580 6 7575 7577 7579 8004 8005 8006 6 7578 7577 7580 8006 8007 8008 6 7579 7577 7190 7191 7581 8008 6 7580 7191 7194 7582 8008 8009 6 7581 7194 7196 7583 8009 8010 6 7582 7196 7584 7586 8013 8010 6 7583 7196 7197 3197 7585 7586 6 7584 3197 3187 7586 7587 3188 6 7584 7585 7587 7588 7583 8013 6 7586 7585 7588 7589 3959 3188 6 7586 7587 7589 7730 8014 8013 6 7588 7587 3959 3961 7590 7730 6 7589 3961 7591 7730 7731 7732 6 7590 3961 3962 7592 7732 7733 6 7591 3962 7593 7739 7733 7740 6 7592 3962 2891 2892 7594 7740 6 7593 2892 7595 7596 7740 7741 6 7594 2892 7596 7597 7598 2893 6 7594 7595 7597 7741 7742 7746 6 7596 7595 7598 7599 7746 7747 6 7597 7595 7599 7600 7601 2893 6 7597 7598 7600 4090 7747 7752 5 7599 7598 7601 4090 4087 6 7600 7598 4087 2881 2880 2893 7 7379 7380 7381 7603 7604 7918 7919 6 7602 7381 7604 7605 7606 7382 6 7602 7603 7605 7927 7921 7919 5 7604 7603 7606 7927 7928 7 7605 7603 7382 7383 7607 7610 7928 6 7606 7383 7385 7608 7609 7610 6 7607 7385 7386 7393 7395 7609 6 7608 7395 7607 7610 7611 7612 6 7607 7609 7611 7930 7928 7606 6 7610 7609 7612 7614 7617 7930 6 7611 7609 7395 7396 7613 7614 6 7612 7396 7614 7615 7622 7623 6 7612 7613 7615 7616 7617 7611 6 7614 7613 7616 7620 7621 7622 6 7614 7615 7617 7618 7619 7620 6 7614 7616 7618 8158 7930 7611 6 7617 7616 7619 8156 8158 8157 6 7618 7616 7620 8157 8159 8160 6 7619 7616 7615 7621 8160 8161 6 7620 7615 7622 8161 8162 8163 6 7621 7615 7613 7623 8163 8164 6 7622 7613 7396 7397 7624 8164 6 7623 7397 7398 7399 7625 8164 6 7624 7399 7400 7626 8164 8165 6 7625 7400 7401 7627 8165 7628 5 7626 7401 7402 7404 7628 6 7627 7404 7629 8165 7626 8166 6 7628 7404 7405 7630 7631 8166 6 7629 7405 7631 7632 7633 7409 6 7629 7630 7632 8166 8167 8168 6 7631 7630 7633 8171 8168 8172 6 7632 7630 7409 7410 7634 8172 6 7633 7410 7635 8174 8172 8175 6 7634 7410 7411 7636 7637 8175 6 7635 7411 7637 7638 7642 7643 6 7635 7636 7638 7639 8175 8176 6 7637 7636 7639 7640 7641 7642 6 7637 7638 7640 8176 8177 8178 6 7639 7638 7641 8178 8179 8180 6 7640 7638 7642 8180 8181 8182 6 7641 7638 7636 7643 8182 8183 6 7642 7636 7411 7412 7644 8183 6 7643 7412 7413 7415 7645 8183 6 7644 7415 7646 8184 8183 8185 6 7645 7415 7416 7647 8185 8186 6 7646 7416 7418 7422 7648 8186 6 7647 7422 7424 7649 8186 8187 6 7648 7424 7650 8187 8188 8189 6 7649 7424 7425 7651 8189 8190 6 7650 7425 7652 8190 8191 8192 6 7651 7425 7426 7653 8192 8193 6 7652 7426 7428 7654 8193 7658 6 7653 7428 7429 7655 7656 7658 6 7654 7429 7430 7656 7435 7432 6 7654 7655 7435 7436 7657 7658 6 7656 7436 7658 7659 7660 7661 6 7656 7657 7659 8193 7653 7654 6 7658 7657 7660 8193 8194 8195 6 7659 7657 7661 8195 7663 7662 6 7660 7657 7436 7437 7439 7662 6 7661 7439 7440 7442 7663 7660 6 7662 7442 7664 8195 7660 8196 6 7663 7442 7443 7665 8209 8196 6 7664 7443 7444 7666 8209 8208 6 7665 7444 7445 7667 7668 8208 6 7666 7445 7668 7669 7448 7446 6 7666 7667 7669 7670 8207 8208 6 7668 7667 7448 7670 7671 7672 6 7668 7669 7671 7699 8207 9791 6 7670 7669 7672 7673 7696 9791 6 7671 7669 7448 7449 7673 7674 6 7671 7672 7674 7675 7696 7695 6 7673 7672 7675 7676 7677 7449 7 7673 7674 7676 7694 7226 7227 7695 6 7675 7674 7677 7678 7680 7694 6 7676 7674 7449 7450 7451 7678 6 7677 7451 7452 7679 7680 7676 6 7678 7452 7680 7681 7682 7683 7 7678 7679 7681 7676 7694 7693 7690 5 7680 7679 7682 7690 7685 6 7681 7679 7683 7455 7684 7685 6 7682 7679 7452 7453 7454 7455 6 7682 7455 7685 7686 7687 7456 7 7682 7684 7686 7490 7491 7690 7681 6 7685 7684 7687 7487 7488 7490 6 7686 7684 7456 7457 7688 7487 6 7687 7457 7458 7487 7486 7689 6 7486 7688 7458 7459 7462 7485 6 7685 7491 7691 7693 7680 7681 6 7690 7491 7492 7692 7225 7693 6 7691 7492 7494 7080 7081 7225 6 7691 7225 7226 7694 7680 7690 5 7693 7226 7675 7676 7680 5 7675 7227 7228 7696 7673 7 7695 7228 7229 7697 7671 7673 9791 6 7696 7229 7231 7698 7699 9791 6 7697 7231 7699 7700 7701 7702 6 7697 7698 7700 8207 7670 9791 6 7699 7698 7701 8206 8204 8207 6 7700 7698 7702 8319 8206 7708 6 7701 7698 7231 7232 7703 7708 6 7702 7232 7704 7705 7706 7708 6 7703 7232 7705 7235 7234 7233 6 7703 7704 7706 7707 7719 7235 6 7703 7705 7707 7708 7709 7710 6 7706 7705 7710 7711 7712 7719 6 7703 7706 7709 8319 7701 7702 6 7708 7706 7710 8319 8482 8318 6 7709 7706 7707 7711 8482 8483 6 7710 7707 7712 7713 7714 8483 6 7711 7707 7713 7717 7718 7719 6 7711 7712 7714 7715 7716 7717 6 7711 7713 7715 8483 8484 8485 6 7714 7713 7716 8485 9766 8487 6 7715 7713 7717 9766 7724 9768 6 7716 7713 7712 7718 9768 7720 6 7717 7712 7719 7236 7237 7720 6 7718 7712 7707 7705 7235 7236 6 7718 7237 7721 9768 7717 7722 6 7720 7237 7238 7239 7241 7722 6 7721 7241 7723 7724 9768 7720 6 7722 7241 7242 7724 7725 7726 7 7722 7723 7725 7727 9766 7716 9768 6 7724 7723 7726 7727 7728 7729 6 7725 7723 7729 7246 7243 7242 6 7724 7725 7728 7963 9766 9765 6 7727 7725 7729 7963 7964 7965 6 7728 7725 7726 7246 7965 7247 6 7588 7589 7590 7731 8014 8015 6 7730 7590 7732 8015 8016 7735 6 7731 7590 7591 7733 7734 7735 6 7732 7591 7734 7738 7739 7592 6 7732 7733 7735 7736 7737 7738 6 7732 7734 7736 8016 7731 8017 6 7735 7734 7737 8017 8018 8019 6 7736 7734 7738 8019 8020 8021 6 7737 7734 7733 7739 8021 8022 6 7738 7733 7592 7740 9767 8022 6 7739 7592 7593 7594 7741 9767 6 7740 7594 7596 7742 7743 9767 6 7741 7596 7743 7744 7745 7746 6 7741 7742 7744 8026 8024 9767 6 7743 7742 7745 8026 8027 8028 6 7744 7742 7746 7748 7749 8028 6 7745 7742 7596 7597 7747 7748 6 7746 7597 7599 7748 7751 7752 6 7746 7747 7745 7749 7750 7751 6 7745 7748 7750 8028 8032 8033 6 7749 7748 7751 8033 8037 7760 6 7750 7748 7747 7752 7753 7760 7 7751 7747 7599 4090 4091 7753 7754 7 7751 7752 7754 4380 7755 7759 7760 4 7753 7752 4091 4380 5 7753 4380 4381 7756 7759 6 7755 4381 4383 7757 7758 7759 6 7756 4383 7758 7763 7764 7765 6 7756 7757 7759 7761 7762 7763 6 7756 7758 7755 7753 7760 7761 6 7753 7759 7761 8037 7750 7751 5 7760 7759 7758 7762 8037 7 7761 7758 7763 8037 8641 8636 8036 7 7762 7758 7757 7764 8853 8640 8641 6 7763 7757 7765 7766 8853 8854 6 7764 7757 4383 4384 4390 7766 6 7764 7765 4390 7767 8320 8854 6 7766 4390 4391 7768 8320 8321 6 7767 4391 3143 7769 7770 8321 6 7768 3143 7770 7771 7775 3144 6 7768 7769 7771 7772 8323 8321 6 7770 7769 7772 7773 7774 7775 6 7770 7771 7773 8323 8324 8325 6 7772 7771 7774 8325 8326 7778 6 7773 7771 7775 7776 7777 7778 6 7774 7771 7769 3144 3145 7776 6 7775 3145 7774 7777 3146 9792 6 7774 7776 7778 7779 3415 9792 6 7774 7777 7779 8326 7773 8327 6 7778 7777 3415 3416 7780 8327 6 7779 3416 5383 5385 7781 8327 6 7780 5385 5387 7782 8327 8328 6 7781 5387 5389 7783 8330 8328 6 7782 5389 5617 7784 8330 8331 6 7783 5617 7785 8331 8332 8333 6 7784 5617 5618 7786 8038 8333 6 7785 5618 7787 7788 8038 8039 6 7786 5618 5619 7788 7789 7790 6 7786 7787 7789 8039 8040 8041 6 7788 7787 7790 8046 8041 7795 6 7789 7787 5619 5620 7791 7795 6 7790 5620 7792 7793 7794 7795 6 7791 5620 7793 3780 3779 5621 6 7791 7792 7794 7798 7799 3780 6 7791 7793 7795 7796 7797 7798 6 7791 7794 7796 8046 7789 7790 6 7795 7794 7797 8046 8047 8048 6 7796 7794 7798 8049 8048 8050 6 7797 7794 7793 7799 8050 7800 6 7798 7793 3780 3781 3784 7800 6 7799 3784 3785 7801 8050 7798 6 7800 3785 3786 3789 7802 8050 6 7801 3789 3791 7803 8049 8050 6 7802 3791 3792 3794 7804 8049 6 7803 3794 7805 7807 8048 8049 6 7804 3794 3795 7806 7807 7808 6 7805 3795 7808 7809 7810 3796 6 7804 7805 7808 8047 8048 8344 6 7807 7805 7806 7809 8345 8344 6 7808 7806 7810 8345 8346 7931 6 7809 7806 3796 3797 7811 7931 6 7810 3797 3953 7812 7931 7932 6 7811 3953 7813 7932 7933 7937 6 7812 3953 3954 7814 7937 7938 6 7813 3954 3955 7815 7938 7939 6 7814 3955 7816 7939 7940 7817 6 7815 3955 3956 3957 4239 7817 6 7816 4239 4504 7818 7940 7815 6 7817 4504 4505 7819 7940 7941 6 7818 4505 7820 7941 7942 7943 6 7819 4505 4506 7821 7943 7944 6 7820 4506 4507 4508 7822 7944 6 7821 4508 7823 7944 7945 7946 6 7822 4508 4509 7824 7946 7947 6 7823 4509 4510 7825 7947 7948 6 7824 4510 7826 7827 7948 7949 6 7825 4510 4511 7827 7828 7829 6 7825 7826 7828 7949 7950 7951 6 7827 7826 7829 7951 7952 7953 6 7828 7826 4511 4420 7830 7953 6 7829 4420 4248 7831 7953 7833 6 7830 4248 4249 4740 7832 7833 6 7831 4740 5004 7833 7834 7835 6 7831 7832 7834 7953 7830 7954 6 7833 7832 7835 7954 7955 7956 6 7834 7832 5004 5005 7836 7956 6 7835 5005 5006 7837 7956 7957 6 7836 5006 7838 7957 7958 7959 6 7837 5006 4751 4752 7839 7959 6 7838 4752 4758 7840 7959 7960 6 7839 4758 7841 7960 7961 7847 6 7840 4758 4759 7842 7847 7962 6 7841 4759 4662 4663 7843 7962 6 7842 4663 4664 4690 7844 7962 6 7843 4690 4691 7845 7962 7846 6 7844 4691 4692 5159 5160 7846 5 7845 5160 7847 7962 7844 7 7846 5160 7848 7961 7840 7841 7962 6 7847 5160 5161 7849 8083 7961 6 7848 5161 5162 7850 8083 8084 6 7849 5162 5163 7851 8084 8085 6 7850 5163 7852 8085 8086 8087 6 7851 5163 5164 5165 7853 8087 6 7852 5165 7854 8087 8088 8089 6 7853 5165 5166 7855 8089 8090 7 7854 5166 4701 4702 4703 7856 8090 5 7855 4703 7309 7857 8090 7 7856 7309 7310 7858 8090 8091 8092 7 7857 7310 7311 7859 8092 8093 8094 6 7858 7311 7312 7860 8094 8095 6 7859 7312 7313 7314 7861 8095 6 7860 7314 7862 8095 8096 8097 6 7861 7314 7315 7863 8097 8098 6 7862 7315 7316 7864 8098 8099 6 7863 7316 7317 7865 8099 8100 6 7864 7317 7318 7866 8100 8101 6 7865 7318 7319 7867 8101 8102 6 7866 7319 7320 7868 8102 8103 6 7867 7320 7321 7322 7869 8103 6 7868 7322 7870 8103 8104 8105 6 7869 7322 7323 7871 8105 8106 6 7870 7323 7324 7325 7872 8106 6 7871 7325 7873 8106 8107 8108 6 7872 7325 7326 7874 8108 8109 6 7873 7326 7327 7328 7875 8109 6 7874 7328 7876 8109 8110 8111 6 7875 7328 7329 7330 7877 8111 6 7876 7330 7878 8111 8112 8113 6 7877 7330 7331 7332 7879 8113 6 7878 7332 7333 7880 8113 8114 6 7879 7333 7881 8114 8115 8116 6 7880 7333 7334 7335 7882 8116 6 7881 7335 7336 7337 7883 8116 6 7882 7337 7338 7884 8116 8117 7 7883 7338 7339 7885 8117 8118 8119 6 7884 7339 7340 7886 8119 8120 6 7885 7340 7341 7887 8120 8121 6 7886 7341 7342 7888 8121 8122 6 7887 7342 7889 8122 8123 8124 6 7888 7342 7343 7344 7890 8124 6 7889 7344 7345 7891 8124 8125 6 7890 7345 7346 7892 8125 8126 6 7891 7346 7347 7893 8126 8127 6 7892 7347 7348 7894 8127 8128 6 7893 7348 7349 7895 8128 8129 6 7894 7349 7896 8129 8130 8131 6 7895 7349 7350 7351 7897 8131 6 7896 7351 7352 7898 8131 8132 7 7897 7352 7353 7354 7899 8132 8133 5 7898 7354 7900 8133 8134 7 7899 7354 7355 7356 7901 8134 8135 6 7900 7356 7902 8135 8136 8137 5 7901 7356 7357 7903 8137 7 7902 7357 7904 8137 8138 8139 7905 5 7903 7357 7358 7359 7905 6 7904 7359 7906 8139 7903 8140 6 7905 7359 7360 7362 7907 8140 6 7906 7362 7908 8140 8141 8142 6 7907 7362 7363 7364 7909 8142 6 7908 7364 7910 8142 8143 8144 6 7909 7364 7365 7366 7911 8144 6 7910 7366 7372 7912 8144 8145 6 7911 7372 7913 8145 8146 8147 5 7912 7372 7373 7914 8147 7 7913 7373 7374 7915 8147 8148 8149 6 7914 7374 7916 8149 8150 8151 6 7915 7374 7375 7377 7917 8151 6 7916 7377 7918 7919 7920 8151 6 7917 7377 7378 7379 7602 7919 6 7918 7602 7917 7920 7921 7604 6 7917 7919 7921 7922 7923 8151 6 7920 7919 7922 7926 7927 7604 6 7920 7921 7923 7924 7925 7926 6 7920 7922 7924 8151 8152 8150 6 7923 7922 7925 8152 8153 8154 6 7924 7922 7926 8154 8155 8156 6 7925 7922 7921 7927 8156 7929 6 7926 7921 7604 7605 7928 7929 6 7927 7605 7929 7930 7610 7606 6 7927 7928 7930 8156 7926 8158 6 7929 7928 7610 8158 7617 7611 6 7810 7811 7932 8051 8346 7809 6 7931 7811 7812 7933 7934 8051 6 7932 7812 7934 7935 7936 7937 6 7932 7933 7935 8051 8052 8053 6 7934 7933 7936 8053 8054 8058 6 7935 7933 7937 8060 8058 8061 6 7936 7933 7812 7813 7938 8061 6 7937 7813 7814 7939 8061 8062 6 7938 7814 7815 7940 8062 8063 6 7939 7815 7817 7818 7941 8063 6 7940 7818 7819 7942 8063 8064 6 7941 7819 7943 8064 8065 8066 6 7942 7819 7820 7944 8066 8067 6 7943 7820 7821 7822 7945 8067 6 7944 7822 7946 8067 8068 8069 6 7945 7822 7823 7947 8069 8070 6 7946 7823 7824 7948 8070 8071 6 7947 7824 7825 7949 8071 8072 6 7948 7825 7827 7950 8072 8073 6 7949 7827 7951 8073 8074 8075 6 7950 7827 7828 7952 8075 8076 6 7951 7828 7953 8076 8077 7954 6 7952 7828 7829 7830 7833 7954 6 7953 7833 7834 7955 8077 7952 6 7954 7834 7956 8077 8078 8079 6 7955 7834 7835 7836 7957 8079 6 7956 7836 7837 7958 8079 8080 6 7957 7837 7959 8080 8081 8082 6 7958 7837 7838 7839 7960 8082 6 7959 7839 7840 7961 8082 8083 5 7960 7840 7847 8083 7848 6 7847 7841 7842 7843 7844 7846 6 7727 7728 7964 8467 8469 9765 6 7963 7728 7965 8467 8488 8489 6 7964 7728 7729 7247 7966 8489 6 7965 7247 7248 7967 8489 8490 6 7966 7248 7249 7968 8490 8491 6 7967 7249 7250 7969 8491 8492 6 7968 7250 7512 7514 7970 8492 6 7969 7514 7971 8494 8492 8495 6 7970 7514 7515 7972 8495 8496 6 7971 7515 7973 8496 8497 7975 6 7972 7515 7516 7519 7974 7975 6 7973 7519 7975 7976 7977 7978 6 7973 7974 7976 8497 7972 8498 6 7975 7974 7977 8501 8498 7982 6 7976 7974 7978 7980 7981 7982 6 7977 7974 7519 7520 7979 7980 6 7978 7520 7980 7989 7990 7522 6 7978 7979 7977 7981 7988 7989 6 7977 7980 7982 7983 7987 7988 6 7977 7981 7983 7984 8501 7976 6 7982 7981 7984 7985 7986 7987 6 7982 7983 7985 8501 8502 8503 6 7984 7983 7986 8503 8504 8505 6 7985 7983 7987 8505 8506 8507 6 7986 7983 7981 7988 8507 7994 7 7987 7981 7980 7989 7992 7993 7994 5 7988 7980 7979 7990 7992 7 7989 7979 7522 7527 7991 7549 7992 5 7990 7527 7528 7547 7549 6 7990 7549 7550 7993 7988 7989 6 7992 7550 7552 7988 7994 7995 6 7988 7993 7995 8507 7987 8508 6 7994 7993 7552 8508 7998 7996 6 7552 7553 7559 7997 7998 7995 6 7996 7559 7560 7998 7999 8000 6 7996 7997 7999 8508 7995 8509 6 7998 7997 8000 8509 8510 8511 6 7999 7997 7560 7567 8001 8511 6 8000 7567 7568 7571 8002 8511 7 8001 7571 7572 8003 8511 8523 8512 6 8002 7572 7573 8004 8523 8524 7 8003 7573 7575 7578 8005 8521 8524 7 8004 7578 8006 8520 8518 8521 8542 5 8005 7578 7579 8007 8542 6 8006 7579 8008 8611 8541 8542 6 8007 7579 7580 7581 8009 8611 6 8008 7581 7582 8010 8011 8611 6 8009 7582 8011 8012 8013 7583 8 8009 8010 8012 8610 8538 8539 8541 8611 5 8011 8010 8013 8014 8610 6 8012 8010 8014 7588 7583 7586 7 8012 8013 7588 7730 8015 8609 8610 6 8014 7730 7731 8016 8608 8609 6 8015 7731 7735 8017 8612 8608 6 8016 7735 7736 8018 8612 8613 6 8017 7736 8019 8613 8614 8615 6 8018 7736 7737 8020 8615 8616 6 8019 7737 8021 8616 8619 8620 6 8020 7737 7738 8022 8023 8620 6 8021 7738 8023 8024 9767 7739 6 8021 8022 8024 8025 8620 8621 6 8023 8022 8025 8026 7743 9767 6 8023 8024 8026 8621 8622 8029 6 8025 8024 7743 7744 8027 8029 6 8026 7744 8028 8029 8030 8031 6 8027 7744 7745 7749 8031 8032 6 8026 8027 8030 8622 8025 8623 6 8029 8027 8031 8629 8623 8630 6 8030 8027 8028 8032 8034 8630 6 8031 8028 7749 8033 8034 8035 6 8032 7749 7750 8035 8036 8037 6 8031 8032 8035 8630 8631 8632 6 8034 8032 8033 8036 8632 8633 6 8035 8033 8037 7762 8636 8633 6 8036 8033 7750 7760 7761 7762 6 7785 7786 8039 8333 8334 8335 6 8038 7786 7788 8040 8042 8335 6 8039 7788 8041 8042 8043 8044 6 8040 7788 8044 8045 8046 7789 6 8039 8040 8043 8335 8336 8337 6 8042 8040 8044 8337 8338 8342 6 8043 8040 8041 8045 8342 8343 6 8044 8041 8046 8343 8344 8047 6 8045 8041 7789 7795 7796 8047 6 8046 7796 8048 7807 8344 8045 6 8047 7796 7807 7804 8049 7797 6 7804 8048 7797 7803 7802 8050 6 7802 8049 7797 7798 7800 7801 6 7931 7932 7934 8052 8346 8347 6 8051 7934 8053 8347 8348 8349 6 8052 7934 7935 8054 8055 8349 6 8053 7935 8055 8056 8057 8058 6 8053 8054 8056 8349 8350 8351 6 8055 8054 8057 8351 8352 8353 6 8056 8054 8058 8059 8353 8354 6 8057 8054 8059 8060 7936 7935 6 8057 8058 8060 8354 8355 8356 6 8059 8058 7936 8061 8356 8357 6 8060 7936 7937 7938 8062 8357 6 8061 7938 7939 8063 8357 8359 6 8062 7939 7940 7941 8064 8359 6 8063 7941 7942 8065 8360 8359 6 8064 7942 8066 8360 8361 8362 6 8065 7942 7943 8067 8362 8363 6 8066 7943 7944 7945 8068 8363 6 8067 7945 8069 8363 8364 8365 6 8068 7945 7946 8070 8365 8366 6 8069 7946 7947 8071 8366 8367 6 8070 7947 7948 8072 8367 8368 6 8071 7948 7949 8073 8368 8369 6 8072 7949 7950 8074 8369 8370 6 8073 7950 8075 8370 8371 8372 6 8074 7950 7951 8076 8372 8373 6 8075 7951 7952 8077 8373 8374 6 8076 7952 7954 7955 8078 8374 6 8077 7955 8079 8376 8374 8377 6 8078 7955 7956 7957 8080 8377 6 8079 7957 7958 8081 8377 8378 6 8080 7958 8082 8210 8378 8379 6 8081 7958 7959 7960 8083 8210 7 8082 7960 7961 7848 7849 8084 8210 6 8083 7849 7850 8085 8210 8211 6 8084 7850 7851 8086 8211 8212 6 8085 7851 8087 8212 8213 8214 6 8086 7851 7852 7853 8088 8214 6 8087 7853 8089 8214 8215 8216 6 8088 7853 7854 8090 8216 8091 6 8089 7854 7855 7856 7857 8091 5 8090 7857 8092 8216 8089 7 8091 7857 7858 8093 8216 8217 8218 5 8092 7858 8094 8218 8219 6 8093 7858 7859 8095 8219 8220 6 8094 7859 7860 7861 8096 8220 6 8095 7861 8097 8220 8221 8222 6 8096 7861 7862 8098 8222 8223 6 8097 7862 7863 8099 8223 8224 6 8098 7863 7864 8100 8224 8225 6 8099 7864 7865 8101 8225 8226 6 8100 7865 7866 8102 8226 8227 6 8101 7866 7867 8103 8227 8228 6 8102 7867 7868 7869 8104 8228 6 8103 7869 8105 8228 8229 8230 6 8104 7869 7870 8106 8230 8231 6 8105 7870 7871 7872 8107 8231 6 8106 7872 8108 8231 8232 8233 6 8107 7872 7873 8109 8233 8234 6 8108 7873 7874 7875 8110 8234 6 8109 7875 8111 8234 8235 8236 6 8110 7875 7876 7877 8112 8236 6 8111 7877 8113 8236 8237 8238 6 8112 7877 7878 7879 8114 8238 6 8113 7879 7880 8115 8238 8239 6 8114 7880 8116 8239 8240 8117 6 8115 7880 7881 7882 7883 8117 6 8116 7883 7884 8118 8240 8115 6 8117 7884 8119 8240 8241 8242 5 8118 7884 7885 8120 8242 6 8119 7885 7886 8121 8242 8243 6 8120 7886 7887 8122 8243 8244 6 8121 7887 7888 8123 8244 8245 6 8122 7888 8124 8245 8246 8247 6 8123 7888 7889 7890 8125 8247 6 8124 7890 7891 8126 8247 8248 6 8125 7891 7892 8127 8248 8249 6 8126 7892 7893 8128 8249 8250 6 8127 7893 7894 8129 8250 8251 6 8128 7894 7895 8130 8251 8252 6 8129 7895 8131 8252 8253 8254 6 8130 7895 7896 7897 8132 8254 6 8131 7897 7898 8133 8254 8255 5 8132 7898 7899 8134 8255 7 8133 7899 7900 8135 8255 8256 8257 5 8134 7900 7901 8136 8257 7 8135 7901 8137 8257 8258 8259 8260 6 8136 7901 7902 7903 8138 8260 6 8137 7903 8139 8260 8261 8262 6 8138 7903 7905 8140 8262 8263 6 8139 7905 7906 7907 8141 8263 6 8140 7907 8142 8263 8264 8265 6 8141 7907 7908 7909 8143 8265 6 8142 7909 8144 8265 8266 8267 6 8143 7909 7910 7911 8145 8267 6 8144 7911 7912 8146 8267 8268 6 8145 7912 8147 8268 8269 8270 6 8146 7912 7913 7914 8148 8270 6 8147 7914 8149 8270 8271 8272 6 8148 7914 7915 8150 8152 8272 5 8149 7915 8151 8152 7923 6 8150 7915 7916 7917 7920 7923 7 8149 8150 7923 7924 8153 8272 8273 5 8152 7924 8154 8273 8274 7 8153 7924 7925 8155 8274 8275 8276 6 8154 7925 8156 8157 8276 8277 7 8155 7925 8157 7926 7929 8158 7618 6 8155 8156 7618 7619 8159 8277 5 8156 7929 7930 7617 7618 6 8157 7619 8160 8277 8278 8279 6 8159 7619 7620 8161 8279 8280 7 8160 7620 7621 8162 8280 8281 8282 5 8161 7621 8163 8282 8283 7 8162 7621 7622 8164 8283 8284 8165 6 8163 7622 7623 7624 7625 8165 7 8164 7625 7626 7628 8166 8284 8163 6 8165 7628 7629 7631 8167 8284 6 8166 7631 8168 8169 8284 8283 6 8167 7631 8169 8170 8171 7632 6 8167 8168 8170 8283 8285 8286 6 8169 8168 8171 8286 8287 8288 6 8170 8168 7632 8172 8173 8288 6 8171 7632 8173 8174 7634 7633 6 8171 8172 8174 8288 8289 8290 6 8173 8172 7634 8175 8290 8291 6 8174 7634 7635 7637 8176 8291 6 8175 7637 7639 8177 8291 8292 6 8176 7639 8178 8292 8293 8294 6 8177 7639 7640 8179 8294 8295 6 8178 7640 8180 8295 8296 8297 6 8179 7640 7641 8181 8297 8298 6 8180 7641 8182 8308 8298 8309 6 8181 7641 7642 8183 8184 8309 6 8182 7642 8184 7645 7644 7643 6 8182 8183 7645 8185 8309 8310 6 8184 7645 7646 8186 8310 8311 7 8185 7646 7647 7648 8187 8311 8312 6 8186 7648 7649 8188 8312 8313 6 8187 7649 8189 8313 8314 8315 6 8188 7649 7650 8190 8315 8316 6 8189 7650 7651 8191 8316 8201 6 8190 7651 8192 8198 8200 8201 6 8191 7651 7652 8193 8198 8194 6 8192 7652 7653 7658 7659 8194 6 8193 7659 8195 8197 8198 8192 6 8194 7659 7660 7663 8196 8197 6 8195 7663 8197 8209 8205 7664 6 8195 8196 8194 8198 8199 8205 6 8194 8197 8199 8200 8191 8192 6 8198 8197 8200 8203 8204 8205 6 8198 8199 8191 8201 8202 8203 6 8191 8200 8202 8316 8190 8317 6 8201 8200 8203 8317 8318 8319 6 8202 8200 8199 8204 8206 8319 6 8203 8199 8205 8206 7700 8207 7 8204 8199 8207 8208 8209 8196 8197 5 8203 8204 7700 8319 7701 7 7700 8204 8205 7699 7670 7668 8208 6 7668 8207 8205 8209 7665 7666 5 8208 8205 8196 7664 7665 6 8081 8082 8083 8084 8211 8379 5 8210 8084 8085 8212 8379 6 8211 8085 8086 8213 8379 8380 6 8212 8086 8214 8380 8381 8382 6 8213 8086 8087 8088 8215 8382 6 8214 8088 8216 8382 8383 8217 6 8215 8088 8089 8091 8092 8217 6 8216 8092 8218 8383 8215 8384 6 8217 8092 8093 8219 8384 8385 6 8218 8093 8094 8220 8385 8386 6 8219 8094 8095 8096 8221 8386 5 8220 8096 8222 8386 8387 6 8221 8096 8097 8223 8387 8388 6 8222 8097 8098 8224 8388 8389 6 8223 8098 8099 8225 8389 8390 6 8224 8099 8100 8226 8390 8391 6 8225 8100 8101 8227 8391 8392 6 8226 8101 8102 8228 8392 8393 6 8227 8102 8103 8104 8229 8393 6 8228 8104 8230 8393 8394 8395 6 8229 8104 8105 8231 8395 8396 6 8230 8105 8106 8107 8232 8396 6 8231 8107 8233 8396 8397 8398 6 8232 8107 8108 8234 8398 8399 6 8233 8108 8109 8110 8235 8399 6 8234 8110 8236 8399 8400 8401 6 8235 8110 8111 8112 8237 8401 6 8236 8112 8238 8401 8402 8403 6 8237 8112 8113 8114 8239 8403 6 8238 8114 8115 8240 8403 8404 6 8239 8115 8117 8118 8241 8404 6 8240 8118 8242 8404 8405 8406 6 8241 8118 8119 8120 8243 8406 6 8242 8120 8121 8244 8406 8407 6 8243 8121 8122 8245 8407 8408 6 8244 8122 8123 8246 8408 8409 6 8245 8123 8247 8409 8410 8411 6 8246 8123 8124 8125 8248 8411 6 8247 8125 8126 8249 8411 8412 6 8248 8126 8127 8250 8412 8413 6 8249 8127 8128 8251 8413 8414 6 8250 8128 8129 8252 8414 8415 6 8251 8129 8130 8253 8415 8416 6 8252 8130 8254 8416 8417 8418 6 8253 8130 8131 8132 8255 8418 7 8254 8132 8133 8134 8256 8418 8419 5 8255 8134 8257 8419 8420 7 8256 8134 8135 8136 8258 8420 8421 5 8257 8136 8259 8421 8422 6 8258 8136 8260 8422 8423 8261 5 8259 8136 8137 8138 8261 6 8260 8138 8262 8423 8259 8424 6 8261 8138 8139 8263 8424 8425 6 8262 8139 8140 8141 8264 8425 6 8263 8141 8265 8425 8426 8427 6 8264 8141 8142 8143 8266 8427 6 8265 8143 8267 8427 8428 8429 7 8266 8143 8144 8145 8268 8429 8430 6 8267 8145 8146 8269 8430 8431 6 8268 8146 8270 8431 8432 8433 6 8269 8146 8147 8148 8271 8433 6 8270 8148 8272 8433 8434 8435 6 8271 8148 8149 8152 8273 8435 5 8272 8152 8153 8274 8435 7 8273 8153 8154 8275 8435 8436 8437 6 8274 8154 8276 8437 8438 8439 6 8275 8154 8155 8277 8439 8278 5 8276 8155 8157 8159 8278 6 8277 8159 8279 8439 8276 8440 6 8278 8159 8160 8280 8440 8441 7 8279 8160 8161 8281 8441 8442 8446 6 8280 8161 8282 8446 8447 8285 5 8281 8161 8162 8283 8285 7 8282 8162 8163 8284 8167 8169 8285 5 8283 8163 8165 8166 8167 6 8283 8169 8286 8447 8281 8282 6 8285 8169 8170 8287 8447 8448 6 8286 8170 8288 8448 8450 8451 6 8287 8170 8171 8173 8289 8451 6 8288 8173 8290 8451 8452 8453 6 8289 8173 8174 8291 8453 8454 6 8290 8174 8175 8176 8292 8454 6 8291 8176 8177 8293 8454 8455 6 8292 8177 8294 8455 8456 8457 6 8293 8177 8178 8295 8457 8458 6 8294 8178 8179 8296 8458 8459 6 8295 8179 8297 8462 8459 8300 6 8296 8179 8180 8298 8299 8300 6 8297 8180 8299 8308 8306 8181 6 8297 8298 8300 8301 8302 8306 6 8297 8299 8301 8462 8296 8463 6 8300 8299 8302 8303 8463 8464 6 8301 8299 8303 8304 8305 8306 6 8301 8302 8304 8464 8465 8466 6 8303 8302 8305 8466 8467 8468 6 8304 8302 8306 8307 8471 8468 6 8305 8302 8299 8307 8308 8298 6 8305 8306 8308 8471 8472 8473 6 8307 8306 8298 8181 8309 8473 6 8308 8181 8182 8184 8310 8473 6 8309 8184 8185 8311 8473 8474 6 8310 8185 8186 8312 8474 8475 5 8311 8186 8187 8313 8475 6 8312 8187 8188 8314 8475 8476 6 8313 8188 8315 8479 8476 8480 6 8314 8188 8189 8316 8480 8481 6 8315 8189 8190 8201 8317 8481 5 8316 8201 8202 8318 8481 6 8317 8202 8319 8481 8482 7709 7 8318 8202 8203 8206 7701 7708 7709 6 7766 7767 8321 8322 8854 8855 6 8320 7767 7768 8322 8323 7770 7 8320 8321 8323 8855 8856 8857 8324 5 8322 8321 7770 7772 8324 6 8323 7772 8325 8857 8322 8858 6 8324 7772 7773 8326 8858 8329 6 8325 7773 7778 8327 8328 8329 6 8326 7778 7779 7780 7781 8328 6 8327 7781 8326 8329 8330 7782 6 8326 8328 8330 8858 8325 8859 6 8329 8328 7782 7783 8331 8859 6 8330 7783 7784 8332 8859 8860 6 8331 7784 8333 8866 8863 8860 6 8332 7784 7785 8038 8334 8866 6 8333 8038 8335 8867 8866 8868 6 8334 8038 8039 8042 8336 8868 6 8335 8042 8337 8868 8869 8870 6 8336 8042 8043 8338 8339 8870 6 8337 8043 8339 8340 8341 8342 6 8337 8338 8340 8870 8871 8875 6 8339 8338 8341 8875 8876 8348 6 8340 8338 8342 8348 8347 8877 6 8341 8338 8043 8044 8343 8877 6 8342 8044 8045 8344 8345 8877 6 8343 8045 8345 7808 7807 8047 6 8343 8344 7808 7809 8346 8877 6 8345 7809 7931 8051 8347 8877 6 8346 8051 8052 8348 8341 8877 6 8347 8052 8349 8876 8340 8341 6 8348 8052 8053 8055 8350 8876 6 8349 8055 8351 8903 8876 8902 6 8350 8055 8056 8352 8902 8904 6 8351 8056 8353 8904 8905 8906 6 8352 8056 8057 8354 8906 8907 6 8353 8057 8059 8355 8907 8908 6 8354 8059 8356 8908 8909 8910 6 8355 8059 8060 8357 8358 8910 6 8356 8060 8061 8062 8358 8359 6 8356 8357 8359 8360 8910 8911 6 8358 8357 8062 8063 8360 8064 6 8358 8359 8064 8065 8361 8911 6 8360 8065 8362 8913 8911 8914 6 8361 8065 8066 8363 8914 8915 6 8362 8066 8067 8068 8364 8915 6 8363 8068 8365 8917 8915 8918 6 8364 8068 8069 8366 8918 8919 6 8365 8069 8070 8367 8919 8920 6 8366 8070 8071 8368 8920 8921 6 8367 8071 8072 8369 8921 8922 6 8368 8072 8073 8370 8922 8923 6 8369 8073 8074 8371 8923 8924 6 8370 8074 8372 8924 8925 8926 6 8371 8074 8075 8373 8926 8927 6 8372 8075 8076 8374 8375 8927 6 8373 8076 8077 8375 8376 8078 6 8373 8374 8376 8927 8928 8929 6 8375 8374 8078 8377 8929 8930 6 8376 8078 8079 8080 8378 8930 6 8377 8080 8081 8379 8930 8380 6 8378 8081 8210 8211 8212 8380 7 8379 8212 8213 8381 8930 8378 8931 5 8380 8213 8382 8931 8932 7 8381 8213 8214 8215 8383 8744 8932 6 8382 8215 8217 8384 8642 8744 6 8383 8217 8218 8385 8642 8643 6 8384 8218 8219 8386 8643 8644 6 8385 8219 8220 8221 8387 8644 7 8386 8221 8222 8388 8644 8645 8646 6 8387 8222 8223 8389 8646 8647 6 8388 8223 8224 8390 8647 8648 6 8389 8224 8225 8391 8648 8649 7 8390 8225 8226 8392 8649 8650 8651 6 8391 8226 8227 8393 8651 8652 6 8392 8227 8228 8229 8394 8652 6 8393 8229 8395 8652 8653 8654 6 8394 8229 8230 8396 8654 8655 6 8395 8230 8231 8232 8397 8655 5 8396 8232 8398 8655 8656 6 8397 8232 8233 8399 8656 8657 7 8398 8233 8234 8235 8400 8657 8658 5 8399 8235 8401 8658 8659 7 8400 8235 8236 8237 8402 8659 8660 5 8401 8237 8403 8660 8661 6 8402 8237 8238 8239 8404 8661 6 8403 8239 8240 8241 8405 8661 6 8404 8241 8406 8661 8662 8663 6 8405 8241 8242 8243 8407 8663 6 8406 8243 8244 8408 8663 8664 7 8407 8244 8245 8409 8664 8665 8666 6 8408 8245 8246 8410 8666 8667 6 8409 8246 8411 8667 8668 8669 6 8410 8246 8247 8248 8412 8669 6 8411 8248 8249 8413 8669 8670 6 8412 8249 8250 8414 8670 8671 6 8413 8250 8251 8415 8671 8672 6 8414 8251 8252 8416 8672 8673 6 8415 8252 8253 8417 8673 8674 6 8416 8253 8418 8674 8675 8676 6 8417 8253 8254 8255 8419 8676 6 8418 8255 8256 8420 8676 8677 6 8419 8256 8257 8421 8677 8678 6 8420 8257 8258 8422 8678 8679 6 8421 8258 8259 8423 8679 8680 6 8422 8259 8261 8424 8680 8681 7 8423 8261 8262 8425 8681 8682 8683 6 8424 8262 8263 8264 8426 8683 6 8425 8264 8427 8683 8684 8688 6 8426 8264 8265 8266 8428 8688 6 8427 8266 8429 8688 8689 8690 6 8428 8266 8267 8430 8690 8691 5 8429 8267 8268 8431 8691 6 8430 8268 8269 8432 8543 8691 6 8431 8269 8433 8543 8544 8545 6 8432 8269 8270 8271 8434 8545 6 8433 8271 8435 8545 8546 8547 7 8434 8271 8272 8273 8274 8436 8547 6 8435 8274 8437 8547 8548 8549 6 8436 8274 8275 8438 8549 8550 6 8437 8275 8439 8550 8551 8440 5 8438 8275 8276 8278 8440 7 8439 8278 8279 8441 8551 8438 8552 6 8440 8279 8280 8442 8443 8552 6 8441 8280 8443 8444 8445 8446 6 8441 8442 8444 8552 8553 8554 6 8443 8442 8445 8554 8555 8556 7 8444 8442 8446 8447 8448 8449 8556 5 8445 8442 8280 8281 8447 6 8446 8281 8285 8286 8448 8445 6 8447 8286 8287 8445 8449 8450 5 8445 8448 8450 8556 8557 6 8449 8448 8287 8451 8557 8558 7 8450 8287 8288 8289 8452 8558 8559 6 8451 8289 8453 8559 8560 8561 6 8452 8289 8290 8454 8561 8562 6 8453 8290 8291 8292 8455 8562 6 8454 8292 8293 8456 8562 8563 6 8455 8293 8457 8563 8564 8565 6 8456 8293 8294 8458 8565 8566 6 8457 8294 8295 8459 8460 8566 6 8458 8295 8460 8461 8462 8296 6 8458 8459 8461 8566 8567 8568 6 8460 8459 8462 8568 8569 8570 6 8461 8459 8296 8300 8463 8570 6 8462 8300 8301 8464 8570 8571 6 8463 8301 8303 8465 8571 8572 6 8464 8303 8466 8572 8573 8574 6 8465 8303 8304 8467 8574 8488 7 8466 8304 8468 8469 7963 7964 8488 6 8467 8304 8469 8470 8471 8305 6 8467 8468 8470 7963 9764 9765 7 8469 8468 8471 9095 8486 9764 8487 6 8470 8468 8305 8307 8472 9095 6 8471 8307 8473 8477 9095 8474 6 8472 8307 8308 8309 8310 8474 6 8473 8310 8311 8475 8477 8472 6 8474 8311 8312 8313 8476 8477 6 8475 8313 8477 8478 8479 8314 7 8475 8476 8478 8486 9095 8472 8474 6 8477 8476 8479 8484 8485 8486 6 8478 8476 8314 8480 8484 8483 6 8479 8314 8315 8481 8483 8482 6 8480 8315 8316 8317 8318 8482 6 8481 8318 7709 7710 8483 8480 7 8482 7710 7711 7714 8484 8479 8480 5 8483 7714 8485 8478 8479 6 8484 7714 7715 8478 8486 8487 6 8478 8485 8487 8470 9095 8477 6 8486 8485 9766 9764 8470 7715 5 8467 7964 8489 8574 8466 7 8488 7964 7965 7966 8490 8574 8575 5 8489 7966 7967 8491 8575 7 8490 7967 7968 8492 8493 8575 8576 6 8491 7968 8493 8494 7970 7969 5 8491 8492 8494 8576 8577 6 8493 8492 7970 8495 8577 8578 6 8494 7970 7971 8496 8578 8579 6 8495 7971 7972 8497 8579 8580 6 8496 7972 7975 8498 8499 8580 6 8497 7975 8499 8500 8501 7976 6 8497 8498 8500 8580 8581 8582 6 8499 8498 8501 8582 8583 8502 6 8500 8498 7976 7982 7984 8502 6 8501 7984 8503 8583 8500 8584 6 8502 7984 7985 8504 8587 8584 6 8503 7985 8505 8528 8587 8527 6 8504 7985 7986 8506 8527 8589 6 8505 7986 8507 8589 8514 8590 6 8506 7986 7987 7994 8508 8590 6 8507 7994 7995 7998 8509 8590 6 8508 7998 7999 8510 8514 8590 6 8509 7999 8511 8512 8513 8514 6 8510 7999 8000 8001 8002 8512 6 8510 8511 8513 8522 8523 8002 6 8510 8512 8514 8515 8516 8522 7 8510 8513 8515 8589 8506 8590 8509 6 8514 8513 8516 8517 8527 8589 6 8515 8513 8517 8518 8521 8522 6 8515 8516 8518 8519 8525 8527 6 8517 8516 8519 8520 8005 8521 6 8517 8518 8520 8525 8526 8532 6 8519 8518 8005 8542 8540 8532 6 8005 8518 8004 8516 8522 8524 6 8521 8516 8513 8512 8523 8524 5 8522 8512 8002 8003 8524 5 8523 8003 8522 8521 8004 6 8517 8519 8526 8527 8528 8529 6 8525 8519 8529 8530 8531 8532 7 8517 8525 8528 8504 8505 8589 8515 5 8527 8525 8529 8587 8504 6 8528 8525 8526 8530 8588 8587 6 8529 8526 8531 8603 8588 8604 6 8530 8526 8532 8533 8534 8604 6 8531 8526 8533 8520 8540 8519 6 8531 8532 8534 8535 8539 8540 6 8531 8533 8535 8536 8604 8605 6 8534 8533 8536 8537 8538 8539 6 8534 8535 8537 8605 8606 8607 6 8536 8535 8538 8607 8608 8609 6 8537 8535 8539 8609 8610 8011 6 8538 8535 8533 8540 8541 8011 6 8539 8533 8541 8542 8520 8532 6 8539 8540 8542 8011 8611 8007 6 8541 8540 8520 8007 8006 8005 6 8431 8432 8544 8691 8692 8693 6 8543 8432 8545 8693 8694 8695 6 8544 8432 8433 8434 8546 8695 6 8545 8434 8547 8695 8696 8548 5 8546 8434 8435 8436 8548 6 8547 8436 8549 8696 8546 8697 6 8548 8436 8437 8550 8697 8698 6 8549 8437 8438 8551 8698 8699 6 8550 8438 8440 8552 8699 8553 5 8551 8440 8441 8443 8553 7 8552 8443 8554 8699 8551 8700 8701 6 8553 8443 8444 8555 8701 8702 6 8554 8444 8556 8702 8703 8704 6 8555 8444 8445 8449 8557 8704 6 8556 8449 8450 8558 8704 8705 6 8557 8450 8451 8559 8705 8706 6 8558 8451 8452 8560 8706 8707 6 8559 8452 8561 8707 8708 8709 5 8560 8452 8453 8562 8709 6 8561 8453 8454 8455 8563 8709 6 8562 8455 8456 8564 8709 8710 6 8563 8456 8565 8710 8711 8712 6 8564 8456 8457 8566 8712 8713 7 8565 8457 8458 8460 8567 8713 8714 5 8566 8460 8568 8714 8715 6 8567 8460 8461 8569 8715 8716 6 8568 8461 8570 8716 8717 8718 6 8569 8461 8462 8463 8571 8718 7 8570 8463 8464 8572 8591 8593 8718 5 8571 8464 8465 8573 8591 7 8572 8465 8574 8575 8576 8577 8591 6 8573 8465 8466 8488 8489 8575 6 8574 8489 8490 8491 8576 8573 5 8575 8491 8493 8577 8573 7 8576 8493 8494 8578 8573 8591 8592 6 8577 8494 8495 8579 8595 8592 6 8578 8495 8496 8580 8595 8596 6 8579 8496 8497 8499 8581 8596 6 8580 8499 8582 8596 8597 8598 6 8581 8499 8500 8583 8598 8599 6 8582 8500 8502 8584 8585 8599 6 8583 8502 8585 8586 8587 8503 6 8583 8584 8586 8599 8600 8601 6 8585 8584 8587 8588 8601 8602 7 8586 8584 8588 8529 8528 8504 8503 6 8586 8587 8529 8602 8603 8530 5 8527 8505 8506 8514 8515 5 8514 8506 8507 8509 8508 6 8573 8577 8592 8572 8571 8593 6 8591 8577 8593 8594 8595 8578 5 8571 8591 8592 8594 8718 7 8593 8592 8595 8718 8717 8719 8720 6 8594 8592 8578 8579 8596 8720 7 8595 8579 8580 8581 8597 8720 8721 6 8596 8581 8598 8721 8722 8723 6 8597 8581 8582 8599 8723 8724 6 8598 8582 8583 8585 8600 8724 6 8599 8585 8601 8724 8725 8726 6 8600 8585 8586 8602 8726 8727 6 8601 8586 8588 8603 8727 8728 5 8602 8588 8530 8604 8728 6 8603 8530 8531 8534 8605 8728 6 8604 8534 8536 8606 8728 8729 6 8605 8536 8607 8729 8732 8733 6 8606 8536 8537 8608 8612 8733 6 8607 8537 8609 8612 8016 8015 6 8608 8537 8538 8610 8015 8014 5 8609 8538 8011 8014 8012 5 8011 8541 8009 8008 8007 6 8607 8608 8016 8017 8613 8733 6 8612 8017 8018 8614 8733 8734 6 8613 8018 8615 8734 8735 8736 6 8614 8018 8019 8616 8617 8736 6 8615 8019 8020 8617 8618 8619 6 8615 8616 8618 8736 8737 8738 6 8617 8616 8619 8738 8739 8740 6 8618 8616 8020 8620 8740 8743 6 8619 8020 8021 8023 8621 8743 6 8620 8023 8025 8622 8625 8743 6 8621 8025 8029 8623 8624 8625 6 8622 8029 8624 8628 8629 8030 6 8622 8623 8625 8626 8627 8628 6 8622 8624 8626 8742 8743 8621 6 8625 8624 8627 8838 8742 8839 6 8626 8624 8628 8839 8840 8841 6 8627 8624 8623 8629 8841 8842 6 8628 8623 8030 8630 8842 8843 6 8629 8030 8031 8034 8631 8843 6 8630 8034 8632 8843 8844 8845 6 8631 8034 8035 8633 8634 8845 6 8632 8035 8634 8635 8636 8036 6 8632 8633 8635 8845 8846 8847 6 8634 8633 8636 8637 8638 8847 6 8635 8633 8637 8641 7762 8036 6 8635 8636 8638 8639 8640 8641 6 8635 8637 8639 8847 8849 8850 6 8638 8637 8640 8850 8851 8852 6 8639 8637 8641 8852 8853 7763 5 8640 8637 8636 7762 7763 6 8383 8384 8643 8744 8745 8746 6 8642 8384 8385 8644 8746 8747 6 8643 8385 8386 8387 8645 8747 6 8644 8387 8646 8747 8748 8749 6 8645 8387 8388 8647 8749 8750 6 8646 8388 8389 8648 8750 8751 6 8647 8389 8390 8649 8751 8752 6 8648 8390 8391 8650 8752 8753 6 8649 8391 8651 8753 8754 8755 5 8650 8391 8392 8652 8755 6 8651 8392 8393 8394 8653 8755 6 8652 8394 8654 8755 8756 8757 6 8653 8394 8395 8655 8757 8758 6 8654 8395 8396 8397 8656 8758 6 8655 8397 8398 8657 8758 8759 7 8656 8398 8399 8658 8759 8760 8761 5 8657 8399 8400 8659 8761 7 8658 8400 8401 8660 8761 8762 8763 5 8659 8401 8402 8661 8763 8 8660 8402 8403 8404 8405 8662 8763 8764 5 8661 8405 8663 8764 8765 6 8662 8405 8406 8407 8664 8765 6 8663 8407 8408 8665 8765 8766 6 8664 8408 8666 8766 8767 8768 5 8665 8408 8409 8667 8768 6 8666 8409 8410 8668 8768 8769 6 8667 8410 8669 8769 8770 8771 6 8668 8410 8411 8412 8670 8771 6 8669 8412 8413 8671 8771 8772 6 8670 8413 8414 8672 8772 8773 6 8671 8414 8415 8673 8773 8774 6 8672 8415 8416 8674 8774 8775 6 8673 8416 8417 8675 8775 8776 6 8674 8417 8676 8776 8777 8778 6 8675 8417 8418 8419 8677 8778 6 8676 8419 8420 8678 8778 8779 6 8677 8420 8421 8679 8779 8780 6 8678 8421 8422 8680 8780 8781 6 8679 8422 8423 8681 8781 8782 6 8680 8423 8424 8682 8782 8783 6 8681 8424 8683 8783 8784 8685 6 8682 8424 8425 8426 8684 8685 6 8683 8426 8685 8686 8687 8688 5 8683 8684 8686 8784 8682 6 8685 8684 8687 8784 8785 8786 6 8686 8684 8688 8786 8787 8788 7 8687 8684 8426 8427 8428 8689 8788 5 8688 8428 8690 8788 8789 6 8689 8428 8429 8691 8789 8790 7 8690 8429 8430 8431 8543 8692 8790 6 8691 8543 8693 8790 8791 8792 5 8692 8543 8544 8694 8792 7 8693 8544 8695 8792 8793 8794 8795 6 8694 8544 8545 8546 8696 8795 6 8695 8546 8548 8697 8795 8796 7 8696 8548 8549 8698 8796 8797 8798 6 8697 8549 8550 8699 8798 8799 6 8698 8550 8551 8553 8700 8799 6 8699 8553 8701 8799 8800 8801 6 8700 8553 8554 8702 8801 8804 6 8701 8554 8555 8703 8804 8805 6 8702 8555 8704 8805 8806 8807 6 8703 8555 8556 8557 8705 8807 6 8704 8557 8558 8706 8807 8808 6 8705 8558 8559 8707 8808 8809 6 8706 8559 8560 8708 8809 8810 6 8707 8560 8709 8810 8811 8812 7 8708 8560 8561 8562 8563 8710 8812 5 8709 8563 8564 8711 8812 7 8710 8564 8712 8812 8813 8814 8815 6 8711 8564 8565 8713 8815 8816 6 8712 8565 8566 8714 8816 8817 5 8713 8566 8567 8715 8817 7 8714 8567 8568 8716 8817 8818 8819 6 8715 8568 8569 8717 8819 8820 6 8716 8569 8718 8594 8719 8820 6 8717 8569 8570 8571 8593 8594 6 8717 8594 8720 8820 8821 8721 5 8719 8594 8595 8596 8721 6 8720 8596 8597 8722 8821 8719 6 8721 8597 8723 8821 8822 8823 5 8722 8597 8598 8724 8823 6 8723 8598 8599 8600 8725 8823 6 8724 8600 8726 8823 8824 8825 6 8725 8600 8601 8727 8825 8826 6 8726 8601 8602 8728 8826 8730 7 8727 8602 8603 8604 8605 8729 8730 6 8728 8605 8606 8730 8731 8732 5 8728 8729 8731 8826 8727 6 8730 8729 8732 8826 8828 8829 6 8731 8729 8606 8733 8829 8830 7 8732 8606 8607 8612 8613 8734 8830 6 8733 8613 8614 8735 8831 8830 6 8734 8614 8736 8831 8832 8737 5 8735 8614 8615 8617 8737 6 8736 8617 8738 8832 8735 8833 6 8737 8617 8618 8739 8833 8834 6 8738 8618 8740 8741 8834 8835 6 8739 8618 8619 8741 8742 8743 6 8739 8740 8742 8835 8836 8837 7 8741 8740 8743 8625 8837 8838 8626 6 8742 8740 8625 8621 8620 8619 6 8382 8383 8642 8745 8932 8933 5 8744 8642 8746 8933 8934 6 8745 8642 8643 8747 8934 8935 6 8746 8643 8644 8645 8748 8935 6 8747 8645 8749 8935 8936 8937 6 8748 8645 8646 8750 8937 8938 6 8749 8646 8647 8751 8938 8939 6 8750 8647 8648 8752 8939 8940 6 8751 8648 8649 8753 8940 8941 6 8752 8649 8650 8754 8941 8942 6 8753 8650 8755 8942 8943 8944 7 8754 8650 8651 8652 8653 8756 8944 5 8755 8653 8757 8944 8945 6 8756 8653 8654 8758 8945 8946 6 8757 8654 8655 8656 8759 8946 7 8758 8656 8657 8760 8946 8947 8948 5 8759 8657 8761 8948 8949 6 8760 8657 8658 8659 8762 8949 6 8761 8659 8763 8949 8950 8951 6 8762 8659 8660 8661 8764 8951 5 8763 8661 8662 8765 8951 7 8764 8662 8663 8664 8766 8951 8952 6 8765 8664 8665 8767 8952 8953 6 8766 8665 8768 8953 8954 8955 6 8767 8665 8666 8667 8769 8955 6 8768 8667 8668 8770 8955 8956 6 8769 8668 8771 8956 8957 8958 6 8770 8668 8669 8670 8772 8958 6 8771 8670 8671 8773 8958 8959 6 8772 8671 8672 8774 8959 8960 6 8773 8672 8673 8775 8960 8961 6 8774 8673 8674 8776 8961 8962 6 8775 8674 8675 8777 8962 8963 6 8776 8675 8778 8963 8964 8965 6 8777 8675 8676 8677 8779 8965 6 8778 8677 8678 8780 8965 8966 6 8779 8678 8679 8781 8966 8967 6 8780 8679 8680 8782 8967 8968 6 8781 8680 8681 8783 8968 8969 6 8782 8681 8682 8784 8969 8970 6 8783 8682 8685 8686 8785 8970 6 8784 8686 8786 8970 8971 8972 6 8785 8686 8687 8787 8972 8973 6 8786 8687 8788 8973 8974 8975 6 8787 8687 8688 8689 8789 8975 6 8788 8689 8690 8790 8975 8976 6 8789 8690 8691 8692 8791 8976 6 8790 8692 8792 8976 8977 8978 6 8791 8692 8693 8694 8793 8978 6 8792 8694 8794 8978 8979 8980 6 8793 8694 8795 8980 8981 8796 5 8794 8694 8695 8696 8796 6 8795 8696 8697 8797 8981 8794 6 8796 8697 8798 8981 8982 8983 6 8797 8697 8698 8799 8983 8800 5 8798 8698 8699 8700 8800 6 8799 8700 8801 8802 8983 8798 6 8800 8700 8701 8802 8803 8804 6 8800 8801 8803 8983 8984 8985 6 8802 8801 8804 8985 8986 8987 6 8803 8801 8701 8702 8805 8987 6 8804 8702 8703 8806 8987 8988 6 8805 8703 8807 8988 8989 8990 6 8806 8703 8704 8705 8808 8990 6 8807 8705 8706 8809 8990 8991 7 8808 8706 8707 8810 8993 8991 8994 5 8809 8707 8708 8811 8994 6 8810 8708 8812 8994 8995 8813 6 8811 8708 8709 8710 8711 8813 6 8812 8711 8814 8995 8811 8996 6 8813 8711 8815 8996 8997 8998 6 8814 8711 8712 8816 8998 8999 5 8815 8712 8713 8817 8999 7 8816 8713 8714 8715 8818 8999 9000 6 8817 8715 8819 9000 9001 9002 6 8818 8715 8716 8820 9002 9003 6 8819 8716 8717 8719 8821 9003 6 8820 8719 8721 8722 8822 9003 6 8821 8722 8823 9003 9004 8824 6 8822 8722 8723 8724 8725 8824 6 8823 8725 8825 9004 8822 9005 6 8824 8725 8726 8826 8827 9005 7 8825 8726 8727 8730 8731 8827 8828 6 8825 8826 8828 9005 9006 9007 6 8827 8826 8731 8829 9013 9007 6 8828 8731 8732 8830 8831 9013 5 8829 8732 8831 8734 8733 7 8829 8830 8734 8735 8832 9012 9013 6 8831 8735 8737 8833 9014 9012 7 8832 8737 8738 8834 9014 9015 9016 6 8833 8738 8739 8835 9016 9017 6 8834 8739 8741 8836 9017 9018 6 8835 8741 8837 9018 9019 9020 6 8836 8741 8742 8838 9020 9021 5 8837 8742 8626 8839 9021 6 8838 8626 8627 8840 9021 9022 6 8839 8627 8841 9022 9023 9024 6 8840 8627 8628 8842 9024 9025 6 8841 8628 8629 8843 9025 9026 6 8842 8629 8630 8631 8844 9026 6 8843 8631 8845 9026 9027 9031 6 8844 8631 8632 8634 8846 9031 6 8845 8634 8847 8848 9032 9031 6 8846 8634 8635 8638 8848 8849 6 8846 8847 8849 9032 9033 9034 6 8848 8847 8638 8850 9043 9034 6 8849 8638 8639 8851 9044 9043 6 8850 8639 8852 9044 9045 9046 6 8851 8639 8640 8853 9046 9049 6 8852 8640 7763 7764 8854 9049 6 8853 7764 7766 8320 8855 9049 6 8854 8320 8322 8856 9048 9049 6 8855 8322 8857 9048 9050 9051 5 8856 8322 8324 8858 9051 7 8857 8324 8325 8329 8859 9051 8861 6 8858 8329 8330 8331 8860 8861 6 8859 8331 8861 8862 8863 8332 6 8859 8860 8862 9051 8858 9052 6 8861 8860 8863 8864 9052 9053 6 8862 8860 8864 8865 8866 8332 6 8862 8863 8865 8878 9059 9053 6 8864 8863 8866 8867 8878 8879 6 8865 8863 8867 8334 8333 8332 6 8865 8866 8334 8868 8879 8880 6 8867 8334 8335 8336 8869 8880 6 8868 8336 8870 8880 8881 8872 6 8869 8336 8337 8339 8871 8872 6 8870 8339 8872 8873 8874 8875 6 8870 8871 8873 8895 8881 8869 6 8872 8871 8874 8897 8895 8898 6 8873 8871 8875 8898 8899 8903 6 8874 8871 8339 8340 8876 8903 6 8875 8340 8348 8903 8350 8349 6 8347 8341 8342 8343 8345 8346 5 8864 8865 8879 9059 8883 6 8878 8865 8867 8880 8882 8883 6 8879 8867 8868 8869 8881 8882 6 8880 8869 8882 8894 8895 8872 6 8880 8881 8879 8883 8884 8894 6 8879 8882 8884 8885 9059 8878 6 8883 8882 8885 8886 8893 8894 6 8883 8884 8886 8887 8888 9059 6 8885 8884 8887 8891 8892 8893 6 8885 8886 8888 8889 8890 8891 6 8885 8887 8889 9059 9058 9060 6 8888 8887 8890 9060 9061 9062 6 8889 8887 8891 9062 9063 9064 6 8890 8887 8886 8892 9064 9065 6 8891 8886 8893 9065 9066 9067 6 8892 8886 8884 8894 9067 8896 6 8893 8884 8882 8881 8895 8896 6 8894 8881 8896 8897 8873 8872 6 8894 8895 8897 9067 8893 9068 6 8896 8895 8873 8898 9068 9069 6 8897 8873 8874 8899 8900 9069 6 8898 8874 8900 8901 8902 8903 6 8898 8899 8901 9069 9070 9071 6 8900 8899 8902 9071 9072 8904 6 8901 8899 8903 8350 8351 8904 6 8902 8899 8874 8875 8876 8350 6 8902 8351 8352 8905 9072 8901 6 8904 8352 8906 9072 9073 9074 6 8905 8352 8353 8907 9074 9075 6 8906 8353 8354 8908 9075 9076 6 8907 8354 8355 8909 9076 9077 6 8908 8355 8910 9077 9078 8912 6 8909 8355 8356 8358 8911 8912 6 8910 8358 8912 8913 8361 8360 6 8910 8911 8913 9078 8909 9079 6 8912 8911 8361 8914 9079 9080 6 8913 8361 8362 8915 8916 9080 6 8914 8362 8363 8916 8917 8364 6 8914 8915 8917 9080 9081 9082 6 8916 8915 8364 8918 9082 9083 6 8917 8364 8365 8919 9083 9084 6 8918 8365 8366 8920 9084 9085 6 8919 8366 8367 8921 9094 9085 6 8920 8367 8368 8922 9094 9101 6 8921 8368 8369 8923 9101 9102 6 8922 8369 8370 8924 9102 9103 6 8923 8370 8371 8925 9103 9104 6 8924 8371 8926 9104 9105 9106 6 8925 8371 8372 8927 9106 9107 6 8926 8372 8373 8375 8928 9107 6 8927 8375 8929 9107 9108 8932 6 8928 8375 8376 8930 8932 8931 6 8929 8376 8377 8378 8380 8931 5 8930 8380 8381 8932 8929 8 8931 8381 8382 8744 8933 9108 8928 8929 5 8932 8744 8745 8934 9108 8 8933 8745 8746 8935 9108 9107 9106 9109 6 8934 8746 8747 8748 8936 9109 6 8935 8748 8937 9109 9110 9111 6 8936 8748 8749 8938 9111 9112 6 8937 8749 8750 8939 9112 9113 6 8938 8750 8751 8940 9113 9114 6 8939 8751 8752 8941 9114 9115 6 8940 8752 8753 8942 9115 9116 6 8941 8753 8754 8943 9116 9117 6 8942 8754 8944 9117 9118 8945 5 8943 8754 8755 8756 8945 7 8944 8756 8757 8946 9118 8943 9119 7 8945 8757 8758 8759 8947 9119 9120 5 8946 8759 8948 9120 9121 6 8947 8759 8760 8949 9121 9122 7 8948 8760 8761 8762 8950 9122 9123 6 8949 8762 8951 9123 9124 8952 6 8950 8762 8763 8764 8765 8952 6 8951 8765 8766 8953 9124 8950 6 8952 8766 8767 8954 9124 9125 6 8953 8767 8955 9125 9126 9127 6 8954 8767 8768 8769 8956 9127 6 8955 8769 8770 8957 9127 9128 6 8956 8770 8958 9128 9129 9130 6 8957 8770 8771 8772 8959 9130 6 8958 8772 8773 8960 9130 9131 6 8959 8773 8774 8961 9131 9132 6 8960 8774 8775 8962 9132 9133 6 8961 8775 8776 8963 9133 9134 6 8962 8776 8777 8964 9134 9135 6 8963 8777 8965 9135 9136 9137 6 8964 8777 8778 8779 8966 9137 6 8965 8779 8780 8967 9137 9138 6 8966 8780 8781 8968 9138 9139 6 8967 8781 8782 8969 9139 9140 6 8968 8782 8783 8970 9140 9141 7 8969 8783 8784 8785 8971 9141 9142 5 8970 8785 8972 9142 9143 7 8971 8785 8786 8973 9143 9144 9145 6 8972 8786 8787 8974 9145 9146 6 8973 8787 8975 9146 9147 9148 6 8974 8787 8788 8789 8976 9148 6 8975 8789 8790 8791 8977 9148 6 8976 8791 8978 9148 9149 9150 6 8977 8791 8792 8793 8979 9150 6 8978 8793 8980 9150 9151 9152 6 8979 8793 8794 8981 9152 9153 6 8980 8794 8796 8797 8982 9153 6 8981 8797 8983 9153 9154 8984 6 8982 8797 8798 8800 8802 8984 6 8983 8802 8985 9154 8982 9155 6 8984 8802 8803 8986 9155 9156 6 8985 8803 8987 9156 9157 9158 7 8986 8803 8804 8805 8988 9158 9159 5 8987 8805 8806 8989 9159 7 8988 8806 8990 8991 8992 9159 9160 5 8989 8806 8807 8808 8991 6 8990 8808 8989 8992 8993 8809 6 8989 8991 8993 9160 9161 9162 6 8992 8991 8809 8994 9165 9162 6 8993 8809 8810 8811 8995 9165 6 8994 8811 8813 8996 9165 9166 7 8995 8813 8814 8997 9166 9168 9169 5 8996 8814 8998 9169 9170 6 8997 8814 8815 8999 9170 9171 7 8998 8815 8816 8817 9000 9171 9172 5 8999 8817 8818 9001 9172 6 9000 8818 9002 9172 9173 9174 6 9001 8818 8819 9003 9174 9004 6 9002 8819 8820 8821 8822 9004 6 9003 8822 8824 9005 9174 9002 6 9004 8824 8825 8827 9006 9174 6 9005 8827 9007 9008 9009 9174 6 9006 8827 9008 9012 9013 8828 6 9006 9007 9009 9010 9011 9012 6 9006 9008 9010 9174 9173 9175 5 9009 9008 9011 9175 9178 6 9010 9008 9012 9014 9178 9015 7 9011 9008 9007 9013 9014 8832 8831 5 9012 9007 8831 8829 8828 5 9011 9012 8832 8833 9015 6 9014 8833 9016 9178 9011 9179 6 9015 8833 8834 9017 9182 9179 5 9016 8834 8835 9018 9182 7 9017 8835 8836 9019 9182 9183 9189 6 9018 8836 9020 9189 9190 9191 6 9019 8836 8837 9021 9191 9192 6 9020 8837 8838 8839 9022 9192 6 9021 8839 8840 9023 9192 9193 6 9022 8840 9024 9193 9196 9197 6 9023 8840 8841 9025 9197 9198 6 9024 8841 8842 9026 9198 9028 6 9025 8842 8843 8844 9027 9028 6 9026 8844 9028 9029 9030 9031 6 9026 9027 9029 9198 9025 9199 6 9028 9027 9030 9199 9200 9204 5 9029 9027 9031 9032 9204 6 9030 9027 8844 9032 8846 8845 7 9030 9031 8846 8848 9033 9204 9205 6 9032 8848 9034 9035 9205 9206 6 9033 8848 9035 9036 9043 8849 6 9033 9034 9036 9037 9038 9206 6 9035 9034 9037 9041 9042 9043 6 9035 9036 9038 9039 9040 9041 6 9035 9037 9039 9206 9207 9208 6 9038 9037 9040 9208 9209 9210 6 9039 9037 9041 9210 9063 9062 6 9040 9037 9036 9042 9062 9061 6 9041 9036 9043 9044 9061 9211 6 9042 9036 9034 8849 9044 8850 6 9042 9043 8850 8851 9045 9211 7 9044 8851 9046 9047 9056 9057 9211 6 9045 8851 8852 9047 9048 9049 6 9045 9046 9048 9054 9056 9050 6 9047 9046 9049 8855 8856 9050 6 9048 9046 8852 8855 8854 8853 6 9048 8856 9051 9052 9054 9047 6 9050 8856 8857 8858 8861 9052 6 9051 8861 8862 9053 9054 9050 6 9052 8862 9054 9055 9059 8864 6 9052 9053 9055 9056 9047 9050 6 9054 9053 9056 9057 9058 9059 5 9054 9055 9047 9045 9057 6 9045 9056 9055 9058 9060 9211 5 9057 9055 9059 8888 9060 8 9058 9055 9053 8864 8878 8883 8885 8888 6 9058 8888 8889 9061 9211 9057 6 9060 8889 9062 9041 9042 9211 6 9061 8889 8890 9063 9040 9041 6 9062 8890 9064 9210 9040 9212 6 9063 8890 8891 9065 9212 9213 6 9064 8891 8892 9066 9213 9214 6 9065 8892 9067 9214 9215 9216 6 9066 8892 8893 8896 9068 9216 6 9067 8896 8897 9069 9216 9217 6 9068 8897 8898 8900 9070 9217 6 9069 8900 9071 9217 9218 9219 6 9070 8900 8901 9072 9219 9220 7 9071 8901 8904 8905 9073 9220 9221 5 9072 8905 9074 9221 9222 7 9073 8905 8906 9075 9222 9223 9224 6 9074 8906 8907 9076 9224 9226 6 9075 8907 8908 9077 9226 9227 5 9076 8908 8909 9078 9227 7 9077 8909 8912 9079 9227 9228 9229 5 9078 8912 8913 9080 9229 6 9079 8913 8914 8916 9081 9229 6 9080 8916 9082 9229 9230 9231 6 9081 8916 8917 9083 9231 9232 6 9082 8917 8918 9084 9232 9233 6 9083 8918 8919 9085 9086 9233 6 9084 8919 9086 9087 9094 8920 6 9084 9085 9087 9088 9233 9234 6 9086 9085 9088 9089 9093 9094 6 9086 9087 9089 9090 9234 9235 6 9088 9087 9090 9091 9092 9093 6 9088 9089 9091 9096 9235 9236 6 9090 9089 9092 9096 9097 9098 6 9091 9089 9093 9098 9099 9100 6 9092 9089 9087 9094 9100 9101 6 9093 9087 9085 8920 8921 9101 5 8470 8471 8486 8477 8472 6 9090 9091 9097 9236 9237 9238 6 9096 9091 9098 9238 9239 9240 6 9097 9091 9092 9099 9240 9241 6 9098 9092 9100 9241 9242 9243 6 9099 9092 9093 9101 9243 9102 6 9100 9093 9094 8921 8922 9102 6 9101 8922 8923 9103 9243 9100 6 9102 8923 8924 9104 9243 9244 6 9103 8924 8925 9105 9244 9245 6 9104 8925 9106 9110 9245 9109 6 9105 8925 8926 9107 8934 9109 6 9106 8926 8927 8928 9108 8934 5 9107 8928 8932 8933 8934 6 9106 8934 8935 8936 9110 9105 5 9109 8936 9111 9245 9105 7 9110 8936 8937 9112 9246 9245 9349 6 9111 8937 8938 9113 9351 9349 5 9112 8938 8939 9114 9351 6 9113 8939 8940 9115 9351 9352 6 9114 8940 8941 9116 9352 9353 6 9115 8941 8942 9117 9353 9354 6 9116 8942 8943 9118 9247 9354 6 9117 8943 8945 9119 9247 9248 6 9118 8945 8946 9120 9248 9249 5 9119 8946 8947 9121 9249 7 9120 8947 8948 9122 9249 9250 9251 6 9121 8948 8949 9123 9251 9252 5 9122 8949 8950 9124 9252 6 9123 8950 8952 8953 9125 9252 6 9124 8953 8954 9126 9252 9253 6 9125 8954 9127 9253 9254 9255 6 9126 8954 8955 8956 9128 9255 6 9127 8956 8957 9129 9255 9256 6 9128 8957 9130 9256 9257 9258 6 9129 8957 8958 8959 9131 9258 6 9130 8959 8960 9132 9258 9259 6 9131 8960 8961 9133 9259 9260 6 9132 8961 8962 9134 9260 9261 6 9133 8962 8963 9135 9261 9262 6 9134 8963 8964 9136 9262 9263 6 9135 8964 9137 9263 9264 9265 6 9136 8964 8965 8966 9138 9265 6 9137 8966 8967 9139 9265 9266 6 9138 8967 8968 9140 9266 9267 6 9139 8968 8969 9141 9267 9268 6 9140 8969 8970 9142 9268 9269 5 9141 8970 8971 9143 9269 7 9142 8971 8972 9144 9269 9270 9271 6 9143 8972 9145 9271 9272 9273 5 9144 8972 8973 9146 9273 6 9145 8973 8974 9147 9273 9274 6 9146 8974 9148 9274 9275 9149 6 9147 8974 8975 8976 8977 9149 6 9148 8977 9150 9275 9147 9276 6 9149 8977 8978 8979 9151 9276 6 9150 8979 9152 9276 9277 9278 6 9151 8979 8980 9153 9278 9279 7 9152 8980 8981 8982 9154 9279 9280 6 9153 8982 8984 9155 9280 9281 6 9154 8984 8985 9156 9281 9282 6 9155 8985 8986 9157 9282 9283 6 9156 8986 9158 9283 9284 9285 6 9157 8986 8987 9159 9285 9286 6 9158 8987 8988 8989 9160 9286 6 9159 8989 8992 9161 9286 9287 6 9160 8992 9162 9163 9287 9288 6 9161 8992 9163 9164 9165 8993 6 9161 9162 9164 9288 9289 9290 6 9163 9162 9165 9166 9167 9290 6 9164 9162 8993 8994 8995 9166 6 9165 8995 8996 9164 9167 9168 6 9164 9166 9168 9290 9291 9187 6 9167 9166 8996 9169 9187 9186 6 9168 8996 8997 9170 9186 9185 7 9169 8997 8998 9171 9185 9180 9177 6 9170 8998 8999 9172 9177 9176 6 9171 8999 9000 9001 9173 9176 6 9172 9001 9174 9009 9175 9176 7 9173 9001 9002 9004 9005 9006 9009 6 9173 9009 9010 9176 9177 9178 5 9173 9175 9177 9171 9172 6 9176 9175 9178 9180 9170 9171 7 9177 9175 9010 9011 9015 9179 9180 6 9178 9015 9180 9181 9182 9016 6 9178 9179 9181 9185 9170 9177 6 9180 9179 9182 9183 9184 9185 6 9181 9179 9016 9017 9018 9183 6 9182 9018 9181 9184 9188 9189 6 9181 9183 9185 9186 9187 9188 6 9181 9184 9186 9169 9170 9180 5 9185 9184 9187 9168 9169 6 9186 9184 9188 9291 9167 9168 6 9187 9184 9183 9189 9291 9292 6 9188 9183 9018 9019 9190 9292 5 9189 9019 9191 9292 9293 6 9190 9019 9020 9192 9293 9194 6 9191 9020 9021 9022 9193 9194 6 9192 9022 9023 9194 9195 9196 6 9192 9193 9195 9293 9191 9294 6 9194 9193 9196 9294 9295 9296 6 9195 9193 9023 9197 9296 9297 6 9196 9023 9024 9198 9303 9297 7 9197 9024 9025 9028 9199 9303 9304 6 9198 9028 9029 9200 9201 9304 6 9199 9029 9201 9202 9203 9204 6 9199 9200 9202 9304 9302 9305 6 9201 9200 9203 9305 9306 9307 6 9202 9200 9204 9307 9308 9205 6 9203 9200 9029 9030 9032 9205 7 9204 9032 9033 9206 9308 9203 9207 5 9205 9033 9035 9038 9207 6 9206 9038 9208 9308 9205 9309 6 9207 9038 9039 9209 9309 9310 6 9208 9039 9210 9310 9311 9315 6 9209 9039 9040 9063 9212 9315 6 9061 9042 9044 9060 9057 9045 6 9210 9063 9064 9213 9315 9316 6 9212 9064 9065 9214 9316 9317 6 9213 9065 9066 9215 9320 9317 6 9214 9066 9216 9320 9321 9322 6 9215 9066 9067 9068 9217 9322 6 9216 9068 9069 9070 9218 9322 7 9217 9070 9219 9322 9321 9323 9324 5 9218 9070 9071 9220 9324 7 9219 9071 9072 9221 9324 9325 9326 5 9220 9072 9073 9222 9326 7 9221 9073 9074 9223 9326 9327 9328 6 9222 9074 9224 9225 9328 9329 5 9223 9074 9075 9225 9226 6 9223 9224 9226 9329 9330 9331 6 9225 9224 9075 9076 9227 9331 7 9226 9076 9077 9078 9228 9331 9332 6 9227 9078 9229 9332 9333 9230 6 9228 9078 9079 9080 9081 9230 7 9229 9081 9231 9333 9228 9334 9335 6 9230 9081 9082 9232 9335 9336 6 9231 9082 9083 9233 9336 9337 7 9232 9083 9084 9086 9234 9337 9338 5 9233 9086 9088 9235 9338 7 9234 9088 9090 9236 9338 9339 9340 5 9235 9090 9096 9237 9340 7 9236 9096 9238 9340 9341 9342 9343 6 9237 9096 9097 9239 9343 9344 6 9238 9097 9240 9344 9345 9346 6 9239 9097 9098 9241 9346 9347 6 9240 9098 9099 9242 9347 9348 6 9241 9099 9243 9348 9246 9244 6 9242 9099 9100 9102 9103 9244 6 9243 9103 9104 9245 9246 9242 6 9244 9104 9246 9111 9110 9105 6 9244 9245 9111 9348 9242 9349 6 9117 9118 9248 9354 9355 9356 6 9247 9118 9119 9249 9356 9357 6 9248 9119 9120 9121 9250 9357 6 9249 9121 9251 9357 9358 9359 6 9250 9121 9122 9252 9359 9253 6 9251 9122 9123 9124 9125 9253 7 9252 9125 9126 9254 9359 9251 9360 5 9253 9126 9255 9360 9361 7 9254 9126 9127 9128 9256 9361 9362 6 9255 9128 9129 9257 9362 9363 6 9256 9129 9258 9363 9364 9365 6 9257 9129 9130 9131 9259 9365 7 9258 9131 9132 9260 9365 9366 9367 6 9259 9132 9133 9261 9367 9368 6 9260 9133 9134 9262 9368 9369 6 9261 9134 9135 9263 9369 9370 6 9262 9135 9136 9264 9370 9371 6 9263 9136 9265 9371 9372 9373 6 9264 9136 9137 9138 9266 9373 6 9265 9138 9139 9267 9373 9374 6 9266 9139 9140 9268 9374 9375 6 9267 9140 9141 9269 9375 9376 7 9268 9141 9142 9143 9270 9376 9377 5 9269 9143 9271 9377 9378 6 9270 9143 9144 9272 9378 9382 6 9271 9144 9273 9382 9383 9384 6 9272 9144 9145 9146 9274 9384 6 9273 9146 9147 9275 9384 9385 6 9274 9147 9149 9276 9385 9386 7 9275 9149 9150 9151 9277 9386 9387 5 9276 9151 9278 9387 9389 6 9277 9151 9152 9279 9389 9390 6 9278 9152 9153 9280 9390 9391 6 9279 9153 9154 9281 9391 9392 5 9280 9154 9155 9282 9392 6 9281 9155 9156 9283 9394 9392 6 9282 9156 9157 9284 9394 9395 6 9283 9157 9285 9395 9396 9397 6 9284 9157 9158 9286 9397 9398 6 9285 9158 9159 9160 9287 9398 6 9286 9160 9161 9288 9398 9399 5 9287 9161 9163 9289 9399 7 9288 9163 9290 9399 9400 9401 9402 6 9289 9163 9164 9167 9291 9402 7 9290 9167 9187 9188 9292 9403 9402 6 9291 9188 9189 9190 9293 9403 7 9292 9190 9191 9194 9294 9403 9401 6 9293 9194 9195 9295 9401 9404 6 9294 9195 9296 9404 9405 9406 6 9295 9195 9196 9297 9298 9406 6 9296 9196 9298 9299 9303 9197 6 9296 9297 9299 9300 9406 9407 6 9298 9297 9300 9301 9302 9303 6 9298 9299 9301 9410 9407 9411 6 9300 9299 9302 9411 9412 9413 7 9301 9299 9303 9304 9201 9305 9413 6 9302 9299 9297 9197 9198 9304 5 9303 9198 9199 9201 9302 5 9302 9201 9202 9306 9413 7 9305 9202 9307 9413 9414 9415 9419 5 9306 9202 9203 9308 9419 6 9307 9203 9205 9207 9309 9419 6 9308 9207 9208 9310 9418 9419 6 9309 9208 9209 9311 9312 9418 6 9310 9209 9312 9313 9314 9315 6 9310 9311 9313 9417 9418 9420 6 9312 9311 9314 9420 9421 9425 7 9313 9311 9315 9425 9426 9318 9316 6 9314 9311 9209 9210 9212 9316 6 9315 9212 9213 9317 9318 9314 6 9316 9213 9318 9319 9320 9214 6 9316 9317 9319 9426 9314 9427 6 9318 9317 9320 9427 9428 9429 6 9319 9317 9214 9215 9321 9429 6 9320 9215 9322 9218 9323 9429 5 9321 9215 9216 9217 9218 6 9321 9218 9324 9429 9430 9431 6 9323 9218 9219 9220 9325 9431 6 9324 9220 9326 9431 9432 9433 6 9325 9220 9221 9222 9327 9433 6 9326 9222 9328 9433 9434 9435 6 9327 9222 9223 9329 9435 9436 5 9328 9223 9225 9330 9436 7 9329 9225 9331 9436 9437 9438 9439 6 9330 9225 9226 9227 9332 9439 6 9331 9227 9228 9333 9439 9440 6 9332 9228 9230 9334 9443 9440 6 9333 9230 9335 9443 9444 9447 5 9334 9230 9231 9336 9447 6 9335 9231 9232 9337 9447 9448 6 9336 9232 9233 9338 9448 9449 6 9337 9233 9234 9235 9339 9449 6 9338 9235 9340 9449 9450 9451 6 9339 9235 9236 9237 9341 9451 6 9340 9237 9342 9451 9452 9453 6 9341 9237 9343 9453 9454 9455 6 9342 9237 9238 9344 9455 9456 5 9343 9238 9239 9345 9456 7 9344 9239 9346 9456 9457 9458 9459 6 9345 9239 9240 9347 9459 9350 5 9346 9240 9241 9348 9350 6 9347 9241 9242 9246 9349 9350 6 9348 9246 9350 9351 9112 9111 7 9348 9349 9351 9459 9346 9347 9352 6 9350 9349 9112 9113 9114 9352 7 9351 9114 9115 9353 9459 9350 9460 6 9352 9115 9116 9354 9460 9461 6 9353 9116 9117 9247 9355 9461 6 9354 9247 9356 9461 9462 9463 6 9355 9247 9248 9357 9463 9464 6 9356 9248 9249 9250 9358 9464 6 9357 9250 9359 9464 9465 9466 6 9358 9250 9251 9253 9360 9466 5 9359 9253 9254 9361 9466 7 9360 9254 9255 9362 9466 9467 9468 5 9361 9255 9256 9363 9468 6 9362 9256 9257 9364 9468 9469 6 9363 9257 9365 9469 9470 9471 6 9364 9257 9258 9259 9366 9471 6 9365 9259 9367 9471 9472 9473 5 9366 9259 9260 9368 9473 6 9367 9260 9261 9369 9473 9474 6 9368 9261 9262 9370 9474 9475 6 9369 9262 9263 9371 9475 9476 6 9370 9263 9264 9372 9476 9477 6 9371 9264 9373 9477 9478 9479 6 9372 9264 9265 9266 9374 9479 6 9373 9266 9267 9375 9479 9480 6 9374 9267 9268 9376 9480 9481 6 9375 9268 9269 9377 9481 9482 6 9376 9269 9270 9378 9379 9482 7 9377 9270 9271 9379 9380 9381 9382 5 9377 9378 9380 9482 9483 6 9379 9378 9381 9483 9484 9485 6 9380 9378 9382 9485 9486 9383 5 9381 9378 9271 9272 9383 6 9382 9272 9384 9486 9381 9487 7 9383 9272 9273 9274 9385 9487 9488 6 9384 9274 9275 9386 9488 9489 6 9385 9275 9276 9387 9388 9489 5 9386 9276 9277 9388 9389 6 9386 9387 9389 9489 9490 9491 7 9388 9387 9277 9278 9390 9491 9492 6 9389 9278 9279 9391 9492 9493 6 9390 9279 9280 9392 9393 9493 6 9391 9280 9393 9394 9282 9281 6 9391 9392 9394 9493 9494 9495 6 9393 9392 9282 9283 9395 9495 6 9394 9283 9284 9396 9495 9496 6 9395 9284 9397 9496 9497 9498 6 9396 9284 9285 9398 9499 9498 6 9397 9285 9286 9287 9399 9499 6 9398 9287 9288 9289 9400 9499 6 9399 9289 9401 9499 9405 9404 7 9400 9289 9402 9403 9293 9294 9404 5 9401 9289 9403 9291 9290 5 9401 9402 9291 9292 9293 5 9401 9294 9295 9405 9400 6 9404 9295 9406 9499 9400 9408 6 9405 9295 9296 9298 9407 9408 6 9406 9298 9408 9409 9410 9300 6 9406 9407 9409 9498 9499 9405 6 9408 9407 9410 9497 9498 9500 6 9409 9407 9300 9411 9500 9501 6 9410 9300 9301 9412 9501 9502 6 9411 9301 9413 9502 9503 9414 6 9412 9301 9302 9305 9306 9414 6 9413 9306 9415 9416 9503 9412 6 9414 9306 9416 9417 9418 9419 6 9414 9415 9417 9503 9504 9505 6 9416 9415 9418 9312 9420 9505 6 9417 9415 9419 9309 9310 9312 6 9418 9415 9309 9308 9307 9306 6 9417 9312 9313 9421 9422 9505 6 9420 9313 9422 9423 9424 9425 6 9420 9421 9423 9505 9506 9507 6 9422 9421 9424 9507 9508 9509 6 9423 9421 9425 9512 9509 9513 6 9424 9421 9313 9314 9426 9513 5 9425 9314 9318 9427 9513 6 9426 9318 9319 9428 9513 9514 6 9427 9319 9429 9514 9515 9430 6 9428 9319 9320 9321 9323 9430 6 9429 9323 9431 9518 9515 9428 6 9430 9323 9324 9325 9432 9518 6 9431 9325 9433 9525 9518 9526 6 9432 9325 9326 9327 9434 9526 6 9433 9327 9435 9526 9527 9528 6 9434 9327 9328 9436 9528 9529 6 9435 9328 9329 9330 9437 9529 6 9436 9330 9438 9529 9531 9532 6 9437 9330 9439 9532 9533 9441 6 9438 9330 9331 9332 9440 9441 6 9439 9332 9441 9442 9443 9333 5 9439 9440 9442 9533 9438 7 9441 9440 9443 9444 9445 9533 9534 5 9442 9440 9333 9334 9444 6 9443 9334 9442 9445 9446 9447 5 9442 9444 9446 9534 9535 6 9445 9444 9447 9535 9536 9537 7 9446 9444 9334 9335 9336 9448 9537 6 9447 9336 9337 9449 9537 9538 6 9448 9337 9338 9339 9450 9538 6 9449 9339 9451 9538 9539 9452 5 9450 9339 9340 9341 9452 7 9451 9341 9453 9539 9450 9540 9541 6 9452 9341 9342 9454 9541 9542 6 9453 9342 9455 9542 9543 9544 6 9454 9342 9343 9456 9544 9545 6 9455 9343 9344 9345 9457 9545 6 9456 9345 9458 9545 9546 9462 6 9457 9345 9459 9462 9461 9460 6 9458 9345 9346 9350 9352 9460 5 9459 9352 9353 9461 9458 6 9460 9353 9354 9355 9462 9458 6 9461 9355 9463 9546 9457 9458 5 9462 9355 9356 9464 9546 7 9463 9356 9357 9358 9465 9546 9547 6 9464 9358 9466 9547 9548 9549 7 9465 9358 9359 9360 9361 9467 9549 6 9466 9361 9468 9549 9550 9551 6 9467 9361 9362 9363 9469 9551 6 9468 9363 9364 9470 9551 9552 6 9469 9364 9471 9552 9553 9554 6 9470 9364 9365 9366 9472 9554 6 9471 9366 9473 9554 9555 9556 6 9472 9366 9367 9368 9474 9556 6 9473 9368 9369 9475 9556 9557 6 9474 9369 9370 9476 9557 9558 6 9475 9370 9371 9477 9558 9559 6 9476 9371 9372 9478 9559 9560 6 9477 9372 9479 9560 9561 9562 6 9478 9372 9373 9374 9480 9562 6 9479 9374 9375 9481 9562 9563 6 9480 9375 9376 9482 9563 9564 6 9481 9376 9377 9379 9483 9564 6 9482 9379 9380 9484 9564 9565 6 9483 9380 9485 9565 9566 9567 6 9484 9380 9381 9486 9567 9568 6 9485 9381 9383 9487 9568 9569 6 9486 9383 9384 9488 9569 9570 6 9487 9384 9385 9489 9570 9571 6 9488 9385 9386 9388 9490 9571 6 9489 9388 9491 9571 9572 9573 6 9490 9388 9389 9492 9573 9574 6 9491 9389 9390 9493 9574 9575 6 9492 9390 9391 9393 9494 9575 6 9493 9393 9495 9575 9576 9577 6 9494 9393 9394 9395 9496 9577 6 9495 9395 9396 9497 9577 9578 6 9496 9396 9498 9409 9500 9578 6 9497 9396 9409 9408 9499 9397 7 9408 9498 9397 9398 9399 9400 9405 5 9497 9409 9410 9501 9578 7 9500 9410 9411 9502 9578 9579 9580 6 9501 9411 9412 9503 9580 9581 6 9502 9412 9414 9416 9504 9581 6 9503 9416 9505 9581 9582 9583 7 9504 9416 9417 9420 9422 9506 9583 5 9505 9422 9507 9583 9584 6 9506 9422 9423 9508 9584 9585 6 9507 9423 9509 9510 9585 9586 6 9508 9423 9510 9511 9512 9424 6 9508 9509 9511 9586 9587 9588 6 9510 9509 9512 9519 9588 9522 6 9511 9509 9424 9513 9519 9520 7 9512 9424 9425 9426 9427 9514 9520 6 9513 9427 9428 9515 9516 9520 6 9514 9428 9516 9517 9518 9430 6 9514 9515 9517 9520 9519 9521 6 9516 9515 9518 9524 9521 9525 6 9517 9515 9430 9431 9525 9432 6 9511 9512 9520 9516 9521 9522 5 9519 9512 9513 9514 9516 6 9519 9516 9522 9523 9524 9517 6 9519 9521 9523 9588 9511 9589 6 9522 9521 9524 9589 9590 9591 6 9523 9521 9517 9525 9591 9592 6 9524 9517 9518 9432 9526 9592 7 9525 9432 9433 9434 9527 9592 9593 5 9526 9434 9528 9593 9594 6 9527 9434 9435 9529 9530 9594 6 9528 9435 9436 9437 9530 9531 6 9528 9529 9531 9594 9595 9596 6 9530 9529 9437 9532 9596 9597 6 9531 9437 9438 9533 9597 9598 7 9532 9438 9441 9442 9534 9598 9599 5 9533 9442 9445 9535 9599 7 9534 9445 9446 9536 9599 9600 9601 6 9535 9446 9537 9601 9602 9603 7 9536 9446 9447 9448 9538 9603 9604 6 9537 9448 9449 9450 9539 9604 6 9538 9450 9452 9540 9604 9605 6 9539 9452 9541 9605 9606 9607 6 9540 9452 9453 9542 9607 9608 5 9541 9453 9454 9543 9608 7 9542 9454 9544 9608 9609 9610 9611 5 9543 9454 9455 9545 9611 7 9544 9455 9456 9457 9546 9611 9547 6 9545 9457 9462 9463 9464 9547 6 9546 9464 9465 9548 9611 9545 6 9547 9465 9549 9611 9610 9550 5 9548 9465 9466 9467 9550 6 9549 9467 9551 9610 9548 9612 6 9550 9467 9468 9469 9552 9612 6 9551 9469 9470 9553 9612 9613 6 9552 9470 9554 9613 9614 9615 6 9553 9470 9471 9472 9555 9615 6 9554 9472 9556 9615 9616 9617 6 9555 9472 9473 9474 9557 9617 6 9556 9474 9475 9558 9617 9618 6 9557 9475 9476 9559 9618 9619 6 9558 9476 9477 9560 9619 9620 6 9559 9477 9478 9561 9620 9621 6 9560 9478 9562 9621 9622 9623 6 9561 9478 9479 9480 9563 9623 6 9562 9480 9481 9564 9623 9624 6 9563 9481 9482 9483 9565 9624 6 9564 9483 9484 9566 9624 9625 6 9565 9484 9567 9625 9626 9627 6 9566 9484 9485 9568 9627 9628 6 9567 9485 9486 9569 9628 9629 7 9568 9486 9487 9570 9629 9630 9631 6 9569 9487 9488 9571 9631 9632 6 9570 9488 9489 9490 9572 9632 6 9571 9490 9573 9632 9633 9634 6 9572 9490 9491 9574 9634 9635 6 9573 9491 9492 9575 9635 9636 6 9574 9492 9493 9494 9576 9636 6 9575 9494 9577 9636 9637 9579 6 9576 9494 9495 9496 9578 9579 6 9577 9496 9497 9500 9501 9579 6 9578 9501 9580 9637 9576 9577 6 9579 9501 9502 9581 9637 9582 5 9580 9502 9503 9504 9582 6 9581 9504 9583 9637 9580 9638 6 9582 9504 9505 9506 9584 9638 6 9583 9506 9507 9585 9638 9639 6 9584 9507 9508 9586 9639 9634 6 9585 9508 9510 9587 9634 9633 6 9586 9510 9588 9633 9640 9630 6 9587 9510 9511 9522 9589 9630 6 9588 9522 9523 9590 9630 9629 6 9589 9523 9591 9629 9628 9641 6 9590 9523 9524 9592 9641 9642 6 9591 9524 9525 9526 9593 9642 6 9592 9526 9527 9594 9642 9643 7 9593 9527 9528 9530 9595 9643 9644 5 9594 9530 9596 9644 9645 6 9595 9530 9531 9597 9645 9646 6 9596 9531 9532 9598 9646 9647 6 9597 9532 9533 9599 9647 9648 6 9598 9533 9534 9535 9600 9648 5 9599 9535 9601 9648 9649 7 9600 9535 9536 9602 9649 9650 9651 5 9601 9536 9603 9651 9652 6 9602 9536 9537 9604 9652 9605 5 9603 9537 9538 9539 9605 6 9604 9539 9540 9606 9652 9603 6 9605 9540 9607 9652 9653 9654 6 9606 9540 9541 9608 9654 9614 6 9607 9541 9542 9543 9609 9614 6 9608 9543 9610 9614 9613 9612 6 9609 9543 9611 9548 9550 9612 6 9610 9543 9544 9545 9547 9548 6 9610 9550 9551 9552 9613 9609 5 9612 9552 9553 9614 9609 7 9613 9553 9615 9654 9607 9608 9609 6 9614 9553 9554 9555 9616 9654 6 9615 9555 9617 9654 9653 9655 6 9616 9555 9556 9557 9618 9655 6 9617 9557 9558 9619 9655 9656 6 9618 9558 9559 9620 9656 9657 6 9619 9559 9560 9621 9657 9658 6 9620 9560 9561 9622 9658 9659 6 9621 9561 9623 9659 9660 9661 6 9622 9561 9562 9563 9624 9661 6 9623 9563 9564 9565 9625 9661 7 9624 9565 9566 9626 9661 9662 9663 5 9625 9566 9627 9663 9664 7 9626 9566 9567 9628 9664 9665 9641 6 9627 9567 9568 9629 9590 9641 6 9628 9568 9569 9630 9589 9590 7 9629 9569 9631 9640 9587 9588 9589 5 9630 9569 9570 9632 9640 6 9631 9570 9571 9572 9633 9640 6 9632 9572 9634 9586 9587 9640 7 9633 9572 9573 9635 9639 9585 9586 6 9634 9573 9574 9636 9638 9639 6 9635 9574 9575 9576 9637 9638 6 9636 9576 9579 9580 9582 9638 7 9637 9582 9583 9584 9639 9636 9635 5 9638 9584 9585 9634 9635 5 9633 9587 9630 9631 9632 6 9628 9590 9591 9642 9665 9627 6 9641 9591 9592 9593 9643 9665 6 9642 9593 9594 9644 9665 9664 6 9643 9594 9595 9645 9664 9663 7 9644 9595 9596 9646 9663 9662 9666 7 9645 9596 9597 9647 9666 9660 9667 6 9646 9597 9598 9648 9667 9668 6 9647 9598 9599 9600 9649 9668 6 9648 9600 9601 9650 9668 9669 6 9649 9601 9651 9669 9657 9656 6 9650 9601 9602 9652 9656 9670 7 9651 9602 9603 9605 9606 9653 9670 6 9652 9606 9654 9616 9655 9670 6 9653 9606 9607 9614 9615 9616 6 9653 9616 9617 9618 9656 9670 7 9655 9618 9619 9657 9650 9651 9670 6 9656 9619 9620 9658 9669 9650 5 9657 9620 9621 9659 9669 6 9658 9621 9622 9660 9669 9667 6 9659 9622 9661 9666 9646 9667 7 9660 9622 9623 9624 9625 9662 9666 5 9661 9625 9663 9645 9666 6 9662 9625 9626 9664 9644 9645 6 9663 9626 9627 9665 9643 9644 5 9664 9627 9641 9642 9643 5 9662 9645 9646 9660 9661 6 9660 9646 9647 9668 9669 9659 5 9667 9647 9648 9649 9669 7 9668 9649 9650 9657 9658 9659 9667 5 9656 9651 9652 9653 9655 6 6654 6651 6652 9672 9692 9682 6 9671 6652 9673 9677 9681 9682 6 9672 6652 9674 9675 9676 9677 6 9673 6652 9675 6650 9728 6366 6 9673 9674 9676 9726 9727 9728 6 9673 9675 9677 9678 9679 9726 6 9673 9676 9678 9680 9681 9672 5 9677 9676 9679 5236 9680 7 9678 9676 5236 9735 4520 9726 9734 6 9678 5236 5237 9677 9681 9684 7 9677 9680 9672 9682 9683 4655 9684 6 9672 9681 9683 9692 9671 9686 5 9682 9681 4655 4656 9686 6 4655 9681 9680 5237 4653 9685 6 4653 9684 4651 423 5238 5237 6 9683 4656 9687 9688 9692 9682 6 9686 4656 9688 3170 9689 4657 6 9686 9687 3170 3171 9692 3173 7 3170 9687 4657 9690 3169 2844 9691 5 9689 4657 5381 431 9691 6 2844 9689 9690 431 2842 430 6 9686 9688 3173 6654 9671 9682 6 6476 6479 6475 9780 9775 9781 6 6461 6462 6466 6468 6378 6379 6 5863 5864 9696 9703 9704 9701 6 9695 5864 5865 9697 5720 9701 5 9696 5865 5866 5719 5720 6 5719 5866 5867 5868 9699 9700 6 9698 5868 9700 5696 5695 5869 5 9698 9699 5696 5697 5719 6 9696 5720 5721 9702 9703 9695 5 9701 5721 5722 5725 9703 6 9702 5725 6096 9704 9695 9701 6 9703 6096 6384 9695 5863 5862 6 6491 2253 416 2195 6489 6490 7 6489 2196 6488 6481 2197 9774 9779 5 2252 6492 3337 6493 3336 6 3336 6493 3335 6500 6494 6495 6 6503 6504 9710 2190 9712 9713 6 6503 9709 2190 6502 9711 2191 6 6502 9710 6501 2191 2192 2513 7 9709 6504 6513 9713 9716 9717 9718 5 9709 9712 2190 9714 9716 6 2190 9713 2188 2198 9715 9716 6 2198 9714 9716 2216 2217 9721 6 9715 9714 9713 9712 9717 2216 7 9716 9712 9718 9719 9720 2215 2216 6 9717 9712 6513 6514 6515 9719 5 9718 6515 6517 9720 9717 5 9719 6517 9717 2215 6523 6 9715 2217 2218 2201 2199 2198 6 6670 6776 9723 9724 6657 6659 5 9722 6776 9724 9725 9799 6 9722 9723 9725 6647 6657 6656 6 9724 9723 6647 6646 9800 9799 6 9676 9675 9727 9679 9734 9736 6 9726 9675 9728 9730 9736 9729 6 9727 9675 9674 6366 6367 9729 6 9728 6367 6369 6371 9730 9727 6 9729 6371 9731 9732 9736 9727 6 9730 6371 6372 6376 6468 9732 6 9731 6468 6467 9733 9736 9730 6 9732 6467 6469 7511 9734 9736 6 9733 7511 9735 9736 9679 9726 6 9734 7511 7509 4519 4520 9679 6 9733 9734 9732 9730 9727 9726 6 6042 6040 6039 6020 5873 5875 6 6133 6399 6393 6394 6116 9739 6 9738 6116 6117 6133 6132 6123 6 570 572 9741 9745 569 9744 6 9740 572 574 9742 9743 9744 6 9741 574 917 918 9743 919 6 9741 9742 919 9744 922 920 6 9741 9743 922 564 9745 9740 6 9744 564 565 568 569 9740 6 7206 7207 9747 7219 7218 7217 6 9746 7207 7208 7214 7217 7215 6 3492 3493 3497 3503 6707 6556 5 6707 3503 9750 3504 6711 5 6707 9749 6711 6708 6706 5 6683 5158 4668 6682 9762 5 3202 3471 3411 3201 3412 6 5933 5911 5916 5917 9756 5932 5 4916 4918 9755 4881 4880 7 9754 4918 4912 4881 9757 4905 9760 7 9753 5917 5932 5922 5921 5920 9759 6 4881 9755 9758 4896 4898 9760 5 4881 9757 4896 4885 4882 5 5920 9756 5919 5917 5918 6 9755 4905 4902 4899 4898 9757 6 4639 4913 4876 4873 4870 4869 7 6682 9751 4668 4669 9763 4561 9793 5 9762 4669 4547 4549 4561 5 8469 8470 9765 9766 8487 5 8469 9764 9766 7727 7963 7 9765 9764 8487 7715 7716 7724 7727 6 8024 8022 7739 7740 7741 7743 5 7724 7716 7717 7720 7722 6 428 7501 7503 9770 47 46 6 9769 7503 9771 9773 45 46 7 9770 7503 7504 9772 9773 9775 9781 7 2197 44 2 9773 9771 9774 9775 5 9772 2 9771 9770 45 6 2197 9772 9775 9706 9779 9780 6 9774 9772 9771 9780 9693 9781 6 7254 7257 7524 7521 7518 7517 6 2096 2084 2085 6094 3139 3132 5 6639 6640 6643 6788 6786 5 9706 9774 9780 6479 6481 5 9779 9774 9775 9693 6479 5 9693 9775 6475 9771 7504 6 3853 3130 27 26 1527 3131 6 6788 6643 6644 9784 6790 6171 5 9783 6644 6169 6170 6171 6 4397 4530 4396 4122 4120 4531 6 6638 6784 6780 6637 6636 6772 6 4119 3530 3532 9788 9790 4121 6 9787 3532 3534 9789 7175 9790 6 9788 3534 3536 7179 7176 7175 6 9788 7175 9787 4121 4123 7173 5 7671 7696 7697 7699 7670 6 7776 3146 4232 3414 3415 7777 6 4561 6676 6677 6678 6682 9762 6 3660 3661 4909 9795 4370 4372 5 9794 4909 4643 4371 4370 6 5544 5546 5701 5541 5542 5543 6 6178 6179 9798 9799 6182 9800 6 6783 6178 9797 9799 6777 6781 7 9798 9797 6777 9800 9725 9723 6776 6 9797 6182 6184 6646 9725 9799 scotch_6.0.9/src/check/data/small_2.grf0000644000302600021200000000006313466077161020075 0ustar pelegrinpelegrin2 4 2 12 34 3 10 0 000 3 3 7 9 4 4 6 8 10 3 5 7 11 scotch_6.0.9/src/check/data/m4x4_vertlist.txt0000644000302600021200000000001513465315041021321 0ustar pelegrinpelegrin5 5 3 12 7 2 scotch_6.0.9/src/check/data/m16x16_b1.grf0000644000302600021200000000760713303015264020065 0ustar pelegrinpelegrin0 256 960 1 000 2 2 17 3 1 3 18 3 2 4 19 3 3 5 20 3 4 6 21 3 5 7 22 3 6 8 23 3 7 9 24 3 8 10 25 3 9 11 26 3 10 12 27 3 11 13 28 3 12 14 29 3 13 15 30 3 14 16 31 2 15 32 3 1 18 33 4 2 17 19 34 4 3 18 20 35 4 4 19 21 36 4 5 20 22 37 4 6 21 23 38 4 7 22 24 39 4 8 23 25 40 4 9 24 26 41 4 10 25 27 42 4 11 26 28 43 4 12 27 29 44 4 13 28 30 45 4 14 29 31 46 4 15 30 32 47 3 16 31 48 3 17 34 49 4 18 33 35 50 4 19 34 36 51 4 20 35 37 52 4 21 36 38 53 4 22 37 39 54 4 23 38 40 55 4 24 39 41 56 4 25 40 42 57 4 26 41 43 58 4 27 42 44 59 4 28 43 45 60 4 29 44 46 61 4 30 45 47 62 4 31 46 48 63 3 32 47 64 3 33 50 65 4 34 49 51 66 4 35 50 52 67 4 36 51 53 68 4 37 52 54 69 4 38 53 55 70 4 39 54 56 71 4 40 55 57 72 4 41 56 58 73 4 42 57 59 74 4 43 58 60 75 4 44 59 61 76 4 45 60 62 77 4 46 61 63 78 4 47 62 64 79 3 48 63 80 3 49 66 81 4 50 65 67 82 4 51 66 68 83 4 52 67 69 84 4 53 68 70 85 4 54 69 71 86 4 55 70 72 87 4 56 71 73 88 4 57 72 74 89 4 58 73 75 90 4 59 74 76 91 4 60 75 77 92 4 61 76 78 93 4 62 77 79 94 4 63 78 80 95 3 64 79 96 3 65 82 97 4 66 81 83 98 4 67 82 84 99 4 68 83 85 100 4 69 84 86 101 4 70 85 87 102 4 71 86 88 103 4 72 87 89 104 4 73 88 90 105 4 74 89 91 106 4 75 90 92 107 4 76 91 93 108 4 77 92 94 109 4 78 93 95 110 4 79 94 96 111 3 80 95 112 3 81 98 113 4 82 97 99 114 4 83 98 100 115 4 84 99 101 116 4 85 100 102 117 4 86 101 103 118 4 87 102 104 119 4 88 103 105 120 4 89 104 106 121 4 90 105 107 122 4 91 106 108 123 4 92 107 109 124 4 93 108 110 125 4 94 109 111 126 4 95 110 112 127 3 96 111 128 3 97 114 129 4 98 113 115 130 4 99 114 116 131 4 100 115 117 132 4 101 116 118 133 4 102 117 119 134 4 103 118 120 135 4 104 119 121 136 4 105 120 122 137 4 106 121 123 138 4 107 122 124 139 4 108 123 125 140 4 109 124 126 141 4 110 125 127 142 4 111 126 128 143 3 112 127 144 3 113 130 145 4 114 129 131 146 4 115 130 132 147 4 116 131 133 148 4 117 132 134 149 4 118 133 135 150 4 119 134 136 151 4 120 135 137 152 4 121 136 138 153 4 122 137 139 154 4 123 138 140 155 4 124 139 141 156 4 125 140 142 157 4 126 141 143 158 4 127 142 144 159 3 128 143 160 3 129 146 161 4 130 145 147 162 4 131 146 148 163 4 132 147 149 164 4 133 148 150 165 4 134 149 151 166 4 135 150 152 167 4 136 151 153 168 4 137 152 154 169 4 138 153 155 170 4 139 154 156 171 4 140 155 157 172 4 141 156 158 173 4 142 157 159 174 4 143 158 160 175 3 144 159 176 3 145 162 177 4 146 161 163 178 4 147 162 164 179 4 148 163 165 180 4 149 164 166 181 4 150 165 167 182 4 151 166 168 183 4 152 167 169 184 4 153 168 170 185 4 154 169 171 186 4 155 170 172 187 4 156 171 173 188 4 157 172 174 189 4 158 173 175 190 4 159 174 176 191 3 160 175 192 3 161 178 193 4 162 177 179 194 4 163 178 180 195 4 164 179 181 196 4 165 180 182 197 4 166 181 183 198 4 167 182 184 199 4 168 183 185 200 4 169 184 186 201 4 170 185 187 202 4 171 186 188 203 4 172 187 189 204 4 173 188 190 205 4 174 189 191 206 4 175 190 192 207 3 176 191 208 3 177 194 209 4 178 193 195 210 4 179 194 196 211 4 180 195 197 212 4 181 196 198 213 4 182 197 199 214 4 183 198 200 215 4 184 199 201 216 4 185 200 202 217 4 186 201 203 218 4 187 202 204 219 4 188 203 205 220 4 189 204 206 221 4 190 205 207 222 4 191 206 208 223 3 192 207 224 3 193 210 225 4 194 209 211 226 4 195 210 212 227 4 196 211 213 228 4 197 212 214 229 4 198 213 215 230 4 199 214 216 231 4 200 215 217 232 4 201 216 218 233 4 202 217 219 234 4 203 218 220 235 4 204 219 221 236 4 205 220 222 237 4 206 221 223 238 4 207 222 224 239 3 208 223 240 3 209 226 241 4 210 225 227 242 4 211 226 228 243 4 212 227 229 244 4 213 228 230 245 4 214 229 231 246 4 215 230 232 247 4 216 231 233 248 4 217 232 234 249 4 218 233 235 250 4 219 234 236 251 4 220 235 237 252 4 221 236 238 253 4 222 237 239 254 4 223 238 240 255 3 224 239 256 2 225 242 3 226 241 243 3 227 242 244 3 228 243 245 3 229 244 246 3 230 245 247 3 231 246 248 3 232 247 249 3 233 248 250 3 234 249 251 3 235 250 252 3 236 251 253 3 237 252 254 3 238 253 255 3 239 254 256 2 240 255 scotch_6.0.9/src/check/data/small_3.grf0000644000302600021200000000005513466077161020077 0ustar pelegrinpelegrin2 4 3 12 34 3 7 0 000 2 6 10 3 7 9 11 2 8 10 scotch_6.0.9/src/check/data/m16x16.grf0000644000302600021200000000760013303015264017474 0ustar pelegrinpelegrin0 256 960 0 000 2 1 16 3 0 2 17 3 1 3 18 3 2 4 19 3 3 5 20 3 4 6 21 3 5 7 22 3 6 8 23 3 7 9 24 3 8 10 25 3 9 11 26 3 10 12 27 3 11 13 28 3 12 14 29 3 13 15 30 2 14 31 3 0 17 32 4 1 16 18 33 4 2 17 19 34 4 3 18 20 35 4 4 19 21 36 4 5 20 22 37 4 6 21 23 38 4 7 22 24 39 4 8 23 25 40 4 9 24 26 41 4 10 25 27 42 4 11 26 28 43 4 12 27 29 44 4 13 28 30 45 4 14 29 31 46 3 15 30 47 3 16 33 48 4 17 32 34 49 4 18 33 35 50 4 19 34 36 51 4 20 35 37 52 4 21 36 38 53 4 22 37 39 54 4 23 38 40 55 4 24 39 41 56 4 25 40 42 57 4 26 41 43 58 4 27 42 44 59 4 28 43 45 60 4 29 44 46 61 4 30 45 47 62 3 31 46 63 3 32 49 64 4 33 48 50 65 4 34 49 51 66 4 35 50 52 67 4 36 51 53 68 4 37 52 54 69 4 38 53 55 70 4 39 54 56 71 4 40 55 57 72 4 41 56 58 73 4 42 57 59 74 4 43 58 60 75 4 44 59 61 76 4 45 60 62 77 4 46 61 63 78 3 47 62 79 3 48 65 80 4 49 64 66 81 4 50 65 67 82 4 51 66 68 83 4 52 67 69 84 4 53 68 70 85 4 54 69 71 86 4 55 70 72 87 4 56 71 73 88 4 57 72 74 89 4 58 73 75 90 4 59 74 76 91 4 60 75 77 92 4 61 76 78 93 4 62 77 79 94 3 63 78 95 3 64 81 96 4 65 80 82 97 4 66 81 83 98 4 67 82 84 99 4 68 83 85 100 4 69 84 86 101 4 70 85 87 102 4 71 86 88 103 4 72 87 89 104 4 73 88 90 105 4 74 89 91 106 4 75 90 92 107 4 76 91 93 108 4 77 92 94 109 4 78 93 95 110 3 79 94 111 3 80 97 112 4 81 96 98 113 4 82 97 99 114 4 83 98 100 115 4 84 99 101 116 4 85 100 102 117 4 86 101 103 118 4 87 102 104 119 4 88 103 105 120 4 89 104 106 121 4 90 105 107 122 4 91 106 108 123 4 92 107 109 124 4 93 108 110 125 4 94 109 111 126 3 95 110 127 3 96 113 128 4 97 112 114 129 4 98 113 115 130 4 99 114 116 131 4 100 115 117 132 4 101 116 118 133 4 102 117 119 134 4 103 118 120 135 4 104 119 121 136 4 105 120 122 137 4 106 121 123 138 4 107 122 124 139 4 108 123 125 140 4 109 124 126 141 4 110 125 127 142 3 111 126 143 3 112 129 144 4 113 128 130 145 4 114 129 131 146 4 115 130 132 147 4 116 131 133 148 4 117 132 134 149 4 118 133 135 150 4 119 134 136 151 4 120 135 137 152 4 121 136 138 153 4 122 137 139 154 4 123 138 140 155 4 124 139 141 156 4 125 140 142 157 4 126 141 143 158 3 127 142 159 3 128 145 160 4 129 144 146 161 4 130 145 147 162 4 131 146 148 163 4 132 147 149 164 4 133 148 150 165 4 134 149 151 166 4 135 150 152 167 4 136 151 153 168 4 137 152 154 169 4 138 153 155 170 4 139 154 156 171 4 140 155 157 172 4 141 156 158 173 4 142 157 159 174 3 143 158 175 3 144 161 176 4 145 160 162 177 4 146 161 163 178 4 147 162 164 179 4 148 163 165 180 4 149 164 166 181 4 150 165 167 182 4 151 166 168 183 4 152 167 169 184 4 153 168 170 185 4 154 169 171 186 4 155 170 172 187 4 156 171 173 188 4 157 172 174 189 4 158 173 175 190 3 159 174 191 3 160 177 192 4 161 176 178 193 4 162 177 179 194 4 163 178 180 195 4 164 179 181 196 4 165 180 182 197 4 166 181 183 198 4 167 182 184 199 4 168 183 185 200 4 169 184 186 201 4 170 185 187 202 4 171 186 188 203 4 172 187 189 204 4 173 188 190 205 4 174 189 191 206 3 175 190 207 3 176 193 208 4 177 192 194 209 4 178 193 195 210 4 179 194 196 211 4 180 195 197 212 4 181 196 198 213 4 182 197 199 214 4 183 198 200 215 4 184 199 201 216 4 185 200 202 217 4 186 201 203 218 4 187 202 204 219 4 188 203 205 220 4 189 204 206 221 4 190 205 207 222 3 191 206 223 3 192 209 224 4 193 208 210 225 4 194 209 211 226 4 195 210 212 227 4 196 211 213 228 4 197 212 214 229 4 198 213 215 230 4 199 214 216 231 4 200 215 217 232 4 201 216 218 233 4 202 217 219 234 4 203 218 220 235 4 204 219 221 236 4 205 220 222 237 4 206 221 223 238 3 207 222 239 3 208 225 240 4 209 224 226 241 4 210 225 227 242 4 211 226 228 243 4 212 227 229 244 4 213 228 230 245 4 214 229 231 246 4 215 230 232 247 4 216 231 233 248 4 217 232 234 249 4 218 233 235 250 4 219 234 236 251 4 220 235 237 252 4 221 236 238 253 4 222 237 239 254 3 223 238 255 2 224 241 3 225 240 242 3 226 241 243 3 227 242 244 3 228 243 245 3 229 244 246 3 230 245 247 3 231 246 248 3 232 247 249 3 233 248 250 3 234 249 251 3 235 250 252 3 236 251 253 3 237 252 254 3 238 253 255 2 239 254 scotch_6.0.9/src/check/data/p2-p2.grf0000644000302600021200000000003413303015264017364 0ustar pelegrinpelegrin0 4 4 0 000 1 1 1 0 1 3 1 2 scotch_6.0.9/src/check/data/bump.grf0000644000302600021200000112143513303015264017501 0ustar pelegrinpelegrin0 9800 57978 0 000 3 413 407 6 4 9771 43 9772 44 4 76 1474 1475 77 3 1242 147 148 3 693 206 207 3 521 348 349 4 7 412 413 0 4 6 412 8 647 4 9 3238 647 7 4 3235 3238 8 10 4 11 3233 3235 9 4 3234 3233 10 12 4 3684 3234 11 13 4 14 418 3684 12 4 15 417 418 13 4 14 417 16 3088 4 17 3086 3088 15 4 16 3086 3087 18 4 3087 17 3095 19 4 3095 18 3096 20 4 21 414 3096 19 4 20 414 1171 22 4 1171 21 1172 23 4 1172 22 1173 24 4 1173 23 1526 25 4 1526 24 26 9781 4 27 3852 9781 25 4 28 2179 3852 26 4 27 2179 2180 29 4 2180 28 30 2503 4 31 2505 2503 29 4 2508 2505 30 32 4 3330 2508 33 31 4 3330 32 3331 34 4 35 2248 3331 33 4 34 2248 2249 36 4 2249 35 2250 37 4 38 416 2250 36 4 39 415 416 37 4 38 415 2194 40 4 2194 39 2195 41 4 2195 40 2196 42 3 2196 41 43 4 42 2196 9771 1 4 9769 9772 1 45 4 46 9768 9769 44 4 47 427 9768 45 4 48 426 427 46 4 47 426 49 411 4 50 410 411 48 4 49 410 51 421 4 50 421 422 52 4 422 51 4650 53 4 4650 52 4651 54 4 4657 4651 53 55 4 5380 4657 54 56 4 57 430 5380 55 4 56 430 429 58 4 59 408 429 57 4 58 408 2218 60 4 2218 59 2219 61 4 2219 60 2220 62 4 2220 61 2221 63 4 2221 62 2222 64 4 6701 2222 63 65 4 6701 64 6703 66 4 6703 65 3505 67 4 68 3452 3505 66 4 69 3451 3452 67 4 3441 3451 68 70 4 71 2491 3441 69 4 70 2491 2492 72 4 73 409 2492 71 4 72 409 74 428 4 73 428 75 1603 4 74 1603 1604 76 4 2 1474 1604 75 4 1475 2 1476 78 4 1476 77 1477 79 4 1477 78 1478 80 4 1478 79 1479 81 4 1479 80 1480 82 4 1480 81 1481 83 4 1481 82 1482 84 4 1482 83 1483 85 4 86 1160 1483 84 4 85 1160 1161 87 4 1161 86 1162 88 4 1162 87 1163 89 4 1163 88 1186 90 4 1186 89 1185 91 4 1185 90 1187 92 4 1187 91 1188 93 4 1188 92 1189 94 4 1189 93 1190 95 4 1190 94 1191 96 4 1191 95 1192 97 4 1192 96 1193 98 4 1193 97 1194 99 4 1194 98 1195 100 4 1195 99 1196 101 4 1196 100 1197 102 4 1197 101 1198 103 4 1198 102 1199 104 4 1199 103 1200 105 4 1200 104 1201 106 4 1201 105 1202 107 4 1202 106 1203 108 4 1203 107 1204 109 4 1204 108 1205 110 4 1205 109 1206 111 4 1206 110 1207 112 4 1207 111 1208 113 4 1208 112 1209 114 4 1209 113 1210 115 4 1210 114 1211 116 4 1211 115 1212 117 4 1212 116 1213 118 4 1213 117 1214 119 4 1214 118 1215 120 4 1215 119 1216 121 4 1216 120 1217 122 4 1217 121 1218 123 4 1218 122 1219 124 4 1219 123 1220 125 4 1220 124 1221 126 4 1221 125 1222 127 4 1222 126 1223 128 4 1223 127 1224 129 4 1224 128 1225 130 4 1225 129 1226 131 4 1226 130 1227 132 4 1227 131 1228 133 4 1228 132 1229 134 4 1229 133 1230 135 4 1230 134 1231 136 4 1231 135 1232 137 4 1232 136 1233 138 4 1233 137 1234 139 4 1234 138 1235 140 4 1235 139 1236 141 4 1236 140 1237 142 4 1237 141 1238 143 4 1238 142 1239 144 4 1239 143 1240 145 4 1240 144 1241 146 4 1241 145 1242 147 3 1242 146 3 4 1242 3 1243 149 4 1243 148 1244 150 4 1244 149 1245 151 4 1245 150 1246 152 4 1246 151 1247 153 4 1247 152 1248 154 4 155 923 1248 153 4 154 923 924 156 4 924 155 925 157 4 925 156 926 158 4 926 157 927 159 4 927 158 928 160 4 928 159 929 161 4 929 160 930 162 4 930 161 931 163 4 164 651 931 162 4 163 651 652 165 4 652 164 653 166 4 653 165 654 167 4 654 166 655 168 4 655 167 656 169 4 656 168 657 170 4 657 169 658 171 4 658 170 659 172 4 659 171 660 173 4 660 172 661 174 4 661 173 662 175 4 662 174 663 176 4 663 175 664 177 4 664 176 665 178 4 665 177 666 179 4 666 178 667 180 4 667 179 668 181 4 668 180 669 182 4 669 181 670 183 4 670 182 671 184 4 671 183 672 185 4 672 184 673 186 4 673 185 674 187 4 674 186 675 188 4 675 187 676 189 4 676 188 677 190 4 677 189 678 191 4 678 190 679 192 4 679 191 680 193 4 680 192 681 194 4 681 193 682 195 4 682 194 683 196 4 683 195 684 197 4 684 196 685 198 4 685 197 686 199 4 686 198 687 200 4 687 199 688 201 4 688 200 689 202 4 689 201 690 203 4 690 202 691 204 4 691 203 692 205 3 692 204 206 4 692 205 693 4 3 693 4 208 4 693 207 694 209 4 694 208 695 210 4 695 209 696 211 4 696 210 697 212 4 697 211 698 213 4 698 212 699 214 4 699 213 700 215 4 700 214 701 216 4 701 215 702 217 4 702 216 703 218 4 703 217 704 219 4 704 218 705 220 4 705 219 706 221 4 706 220 707 222 4 707 221 708 223 4 708 222 709 224 4 709 223 710 225 4 710 224 711 226 4 711 225 712 227 4 712 226 713 228 4 713 227 714 229 4 714 228 715 230 4 715 229 716 231 4 716 230 717 232 4 717 231 718 233 4 718 232 719 234 4 719 233 720 235 4 720 234 721 236 4 721 235 722 237 4 722 236 723 238 4 723 237 724 239 4 724 238 725 240 4 725 239 726 241 4 726 240 727 242 4 727 241 728 243 4 728 242 729 244 4 729 243 730 245 4 730 244 731 246 4 731 245 732 247 4 732 246 733 248 4 733 247 734 249 4 734 248 735 250 4 735 249 736 251 4 736 250 737 252 4 737 251 738 253 4 738 252 739 254 4 739 253 740 255 4 740 254 741 256 4 741 255 742 257 4 258 431 742 256 4 257 431 432 259 4 432 258 433 260 4 433 259 434 261 4 434 260 435 262 4 435 261 436 263 4 436 262 437 264 4 437 263 438 265 4 438 264 439 266 4 439 265 440 267 4 440 266 441 268 4 441 267 442 269 4 442 268 443 270 4 443 269 444 271 4 444 270 445 272 4 445 271 446 273 4 446 272 447 274 4 447 273 448 275 4 448 274 449 276 4 449 275 450 277 4 450 276 451 278 4 451 277 452 279 4 452 278 453 280 4 453 279 454 281 4 454 280 455 282 4 455 281 456 283 4 456 282 457 284 4 457 283 458 285 4 458 284 459 286 4 459 285 460 287 4 460 286 461 288 4 461 287 462 289 4 462 288 463 290 4 463 289 464 291 4 464 290 465 292 4 465 291 466 293 4 466 292 467 294 4 467 293 468 295 4 468 294 469 296 4 469 295 470 297 4 470 296 471 298 4 471 297 472 299 4 472 298 473 300 4 473 299 474 301 4 474 300 475 302 4 475 301 476 303 4 476 302 477 304 4 477 303 478 305 4 478 304 479 306 4 479 305 480 307 4 480 306 481 308 4 481 307 482 309 4 482 308 483 310 4 483 309 484 311 4 484 310 485 312 4 485 311 486 313 4 486 312 487 314 4 487 313 488 315 4 488 314 489 316 4 489 315 490 317 4 490 316 491 318 4 491 317 492 319 4 492 318 493 320 4 493 319 494 321 4 494 320 495 322 4 495 321 496 323 4 496 322 497 324 4 497 323 498 325 4 498 324 499 326 4 499 325 500 327 4 500 326 501 328 4 501 327 502 329 4 502 328 503 330 4 503 329 504 331 4 504 330 505 332 4 505 331 506 333 4 506 332 507 334 4 507 333 508 335 4 508 334 509 336 4 509 335 510 337 4 510 336 511 338 4 511 337 512 339 4 512 338 513 340 4 513 339 514 341 4 514 340 515 342 4 515 341 516 343 4 516 342 517 344 4 517 343 518 345 4 518 344 519 346 4 519 345 520 347 4 520 346 521 348 3 521 347 5 4 521 5 522 350 4 522 349 523 351 4 523 350 524 352 4 524 351 525 353 4 525 352 526 354 4 526 353 527 355 4 527 354 528 356 4 528 355 529 357 4 529 356 530 358 4 530 357 531 359 4 531 358 532 360 4 532 359 533 361 4 533 360 534 362 4 534 361 535 363 4 535 362 536 364 4 536 363 537 365 4 537 364 538 366 4 538 365 539 367 4 539 366 540 368 4 540 367 541 369 4 541 368 542 370 4 542 369 543 371 4 543 370 544 372 4 544 371 545 373 4 545 372 546 374 4 546 373 547 375 4 550 547 374 376 4 550 375 551 377 4 551 376 552 378 4 552 377 553 379 4 556 553 378 380 4 566 556 379 381 4 566 380 567 382 4 567 381 568 383 4 568 382 569 384 4 569 383 570 385 4 425 570 386 384 4 387 423 425 385 4 386 423 424 388 4 579 424 389 387 4 584 579 388 390 4 584 389 585 391 4 585 390 586 392 4 586 391 420 393 4 394 419 420 392 4 393 419 594 395 4 396 596 594 394 4 622 596 395 397 4 622 396 623 398 4 623 397 624 399 4 398 624 626 400 4 626 399 628 401 4 630 628 402 400 4 630 401 631 403 4 402 631 2097 404 4 405 649 2097 403 4 648 649 404 406 4 648 405 413 407 3 413 406 0 6 58 59 429 2218 2545 2841 6 72 73 2492 2493 1606 428 6 49 50 411 4521 4515 421 6 49 410 48 426 4514 4515 6 6 7 413 647 646 648 6 6 412 648 406 407 0 6 20 21 1171 3882 3128 3096 6 38 39 416 2194 2252 9704 6 38 415 37 2250 2251 2252 6 14 15 418 3088 3098 3099 6 14 417 13 3099 3100 3684 6 393 394 420 593 588 594 6 393 419 586 392 587 588 6 50 51 422 5237 4521 410 6 421 51 52 4650 9684 5237 6 386 387 424 425 577 575 6 423 387 577 578 579 388 6 386 423 572 570 385 575 6 47 48 427 411 4514 5612 6 47 426 46 5612 7500 9768 6 73 74 1603 1605 1606 409 6 58 408 430 57 2841 9690 6 56 57 429 9689 5380 9690 6 257 258 432 742 743 744 6 431 258 259 433 744 745 6 432 259 260 434 745 746 6 433 260 261 435 746 747 6 434 261 262 436 747 748 6 435 262 263 437 748 749 6 436 263 264 438 749 750 6 437 264 265 439 750 751 6 438 265 266 440 751 752 6 439 266 267 441 752 753 6 440 267 268 442 753 754 6 441 268 269 443 754 755 6 442 269 270 444 755 756 6 443 270 271 445 756 757 6 444 271 272 446 757 758 6 445 272 273 447 758 759 6 446 273 274 448 759 760 6 447 274 275 449 760 761 6 448 275 276 450 761 762 6 449 276 277 451 762 763 6 450 277 278 452 763 764 6 451 278 279 453 764 765 6 452 279 280 454 765 766 6 453 280 281 455 766 767 6 454 281 282 456 767 768 6 455 282 283 457 768 769 6 456 283 284 458 769 770 6 457 284 285 459 770 771 6 458 285 286 460 771 772 6 459 286 287 461 772 773 6 460 287 288 462 773 774 6 461 288 289 463 774 775 6 462 289 290 464 775 776 6 463 290 291 465 776 777 6 464 291 292 466 777 778 6 465 292 293 467 778 779 6 466 293 294 468 779 780 6 467 294 295 469 780 781 6 468 295 296 470 781 782 6 469 296 297 471 782 783 6 470 297 298 472 783 784 6 471 298 299 473 784 785 6 472 299 300 474 785 786 6 473 300 301 475 786 787 6 474 301 302 476 787 788 6 475 302 303 477 788 789 6 476 303 304 478 789 790 6 477 304 305 479 790 791 6 478 305 306 480 791 792 6 479 306 307 481 792 793 6 480 307 308 482 793 794 6 481 308 309 483 794 795 6 482 309 310 484 795 796 6 483 310 311 485 796 797 6 484 311 312 486 797 798 6 485 312 313 487 798 799 6 486 313 314 488 799 800 6 487 314 315 489 800 801 6 488 315 316 490 801 802 6 489 316 317 491 802 803 6 490 317 318 492 803 804 6 491 318 319 493 804 805 6 492 319 320 494 805 806 6 493 320 321 495 806 807 6 494 321 322 496 807 808 6 495 322 323 497 808 809 6 496 323 324 498 809 810 6 497 324 325 499 810 811 6 498 325 326 500 811 812 6 499 326 327 501 812 813 6 500 327 328 502 813 814 6 501 328 329 503 814 815 6 502 329 330 504 815 816 6 503 330 331 505 816 817 6 504 331 332 506 817 818 6 505 332 333 507 818 819 6 506 333 334 508 819 820 6 507 334 335 509 820 821 6 508 335 336 510 821 822 6 509 336 337 511 822 823 6 510 337 338 512 823 824 6 511 338 339 513 824 825 6 512 339 340 514 825 826 6 513 340 341 515 826 827 6 514 341 342 516 827 828 6 515 342 343 517 828 829 6 516 343 344 518 829 830 6 517 344 345 519 830 831 6 518 345 346 520 831 832 6 519 346 347 521 832 833 7 520 347 348 5 349 522 833 6 521 349 350 523 833 834 5 522 350 351 524 834 6 523 351 352 525 834 835 6 524 352 353 526 835 836 6 525 353 354 527 836 837 6 526 354 355 528 837 838 6 527 355 356 529 838 839 6 528 356 357 530 839 840 6 529 357 358 531 840 841 6 530 358 359 532 841 842 6 531 359 360 533 842 843 6 532 360 361 534 843 844 6 533 361 362 535 844 845 6 534 362 363 536 845 846 6 535 363 364 537 846 847 6 536 364 365 538 847 848 6 537 365 366 539 848 849 6 538 366 367 540 849 850 6 539 367 368 541 853 850 6 540 368 369 542 855 853 6 541 369 370 543 855 856 6 542 370 371 544 856 857 6 543 371 372 545 857 858 6 544 372 373 546 858 859 6 545 373 374 547 548 859 6 546 374 548 549 550 375 6 546 547 549 859 860 861 6 548 547 550 861 862 863 6 549 547 375 376 551 863 6 550 376 377 552 863 864 6 551 377 378 553 554 864 6 552 378 554 555 556 379 6 552 553 555 557 864 865 6 554 553 556 557 558 565 6 555 553 379 565 566 380 6 554 555 558 559 865 866 6 557 555 559 560 561 565 6 557 558 560 866 867 868 6 559 558 561 562 922 868 6 560 558 562 563 564 565 6 560 561 563 921 920 922 6 562 561 564 9743 921 9744 6 563 561 565 566 9744 567 6 564 561 558 555 556 566 6 565 556 380 381 567 564 6 566 381 382 568 9744 564 6 567 382 383 569 9744 9739 6 568 383 384 570 571 9739 6 569 384 571 572 425 385 6 569 570 572 573 9739 9740 6 571 570 425 573 574 575 6 571 572 574 9740 9741 916 6 573 572 575 576 916 915 6 574 572 425 576 577 423 6 574 575 577 915 2474 1515 6 576 575 423 424 578 1515 6 577 424 579 580 581 1515 6 578 424 388 580 584 389 6 578 579 581 582 583 584 6 578 580 582 1515 1516 1517 6 581 580 583 1517 1508 1506 6 582 580 584 585 589 1506 6 583 580 579 389 390 585 6 584 390 391 586 589 583 6 585 391 392 420 587 589 6 586 420 588 589 590 591 6 587 420 591 592 593 419 6 586 587 590 585 583 1506 6 589 587 591 1506 1507 1514 6 590 587 588 592 599 1514 6 591 588 593 597 598 599 6 592 588 419 594 595 597 6 593 419 394 595 596 395 6 593 594 596 597 621 606 6 595 594 621 622 396 395 6 593 595 592 598 605 606 6 592 597 599 600 604 605 6 592 598 600 601 1514 591 6 599 598 601 602 603 604 6 599 600 602 1513 1514 1539 6 601 600 603 1539 1540 1583 6 602 600 604 1602 1583 608 6 603 600 598 605 607 608 6 604 598 597 606 607 614 6 605 597 621 620 595 614 6 604 605 608 609 610 614 6 604 607 609 1602 603 1600 6 608 607 610 611 1599 1600 6 609 607 611 612 613 614 6 609 610 612 6557 1598 1599 6 611 610 613 615 3764 6557 6 612 610 614 615 616 620 6 613 610 620 606 605 607 6 612 613 616 617 3760 3764 6 615 613 617 618 619 620 6 615 616 618 3760 3761 625 6 617 616 619 623 624 625 6 618 616 620 621 623 622 6 619 616 613 614 621 606 6 619 620 606 595 596 622 6 621 596 396 397 623 619 6 622 397 398 624 618 619 6 623 398 618 625 626 399 6 618 624 626 627 3761 617 6 625 624 627 628 399 400 6 625 626 628 629 3761 3762 6 627 626 629 630 401 400 6 627 628 630 635 3762 632 6 629 628 401 402 631 632 6 630 402 632 633 403 2097 6 630 631 633 634 635 629 6 632 631 634 2097 650 641 6 632 633 635 636 637 641 6 632 634 636 3217 3762 629 6 635 634 637 638 3217 3218 6 636 634 638 639 640 641 6 636 637 639 3218 3219 3220 6 638 637 640 3220 3239 3240 6 639 637 641 642 643 3239 6 640 637 642 633 650 634 6 640 641 643 644 645 650 6 640 642 644 3237 3236 3239 6 643 642 645 646 647 3237 6 644 642 646 648 649 650 5 644 645 647 412 648 7 644 646 412 8 3238 3237 7 7 412 646 645 649 405 406 413 6 648 645 650 405 404 2097 6 649 645 633 2097 641 642 6 163 164 652 931 932 933 6 651 164 165 653 933 934 6 652 165 166 654 934 935 6 653 166 167 655 935 936 6 654 167 168 656 936 937 6 655 168 169 657 937 938 6 656 169 170 658 938 939 6 657 170 171 659 939 940 6 658 171 172 660 940 941 6 659 172 173 661 941 942 6 660 173 174 662 942 943 6 661 174 175 663 943 944 6 662 175 176 664 944 945 6 663 176 177 665 945 946 6 664 177 178 666 946 947 6 665 178 179 667 947 948 6 666 179 180 668 948 949 6 667 180 181 669 949 950 6 668 181 182 670 950 951 6 669 182 183 671 951 952 6 670 183 184 672 952 953 6 671 184 185 673 953 954 6 672 185 186 674 954 955 6 673 186 187 675 955 956 6 674 187 188 676 956 957 6 675 188 189 677 957 958 6 676 189 190 678 958 959 6 677 190 191 679 959 960 6 678 191 192 680 960 961 6 679 192 193 681 961 962 6 680 193 194 682 962 963 6 681 194 195 683 963 964 6 682 195 196 684 964 965 6 683 196 197 685 965 966 6 684 197 198 686 966 967 6 685 198 199 687 967 968 6 686 199 200 688 968 969 6 687 200 201 689 969 970 6 688 201 202 690 970 971 6 689 202 203 691 971 972 6 690 203 204 692 972 973 7 691 204 205 206 693 973 694 6 692 206 4 207 208 694 7 693 208 209 695 973 692 974 6 694 209 210 696 974 975 6 695 210 211 697 975 976 6 696 211 212 698 976 977 6 697 212 213 699 977 978 6 698 213 214 700 978 979 6 699 214 215 701 979 980 6 700 215 216 702 980 981 6 701 216 217 703 981 982 6 702 217 218 704 982 983 6 703 218 219 705 983 984 6 704 219 220 706 984 985 6 705 220 221 707 985 986 6 706 221 222 708 986 987 6 707 222 223 709 987 988 6 708 223 224 710 988 989 6 709 224 225 711 989 990 6 710 225 226 712 990 991 6 711 226 227 713 991 992 6 712 227 228 714 992 993 6 713 228 229 715 993 994 6 714 229 230 716 994 995 6 715 230 231 717 995 996 6 716 231 232 718 996 997 6 717 232 233 719 997 998 6 718 233 234 720 998 999 6 719 234 235 721 999 1000 6 720 235 236 722 1000 1001 6 721 236 237 723 1001 1002 6 722 237 238 724 1002 1003 6 723 238 239 725 1003 1004 6 724 239 240 726 1004 1005 6 725 240 241 727 1005 1006 6 726 241 242 728 1006 1007 6 727 242 243 729 1007 1008 6 728 243 244 730 1008 1009 6 729 244 245 731 1009 1010 6 730 245 246 732 1010 1011 6 731 246 247 733 1011 1012 6 732 247 248 734 1012 1013 6 733 248 249 735 1016 1013 6 734 249 250 736 1016 1017 6 735 250 251 737 1017 1018 6 736 251 252 738 1018 1019 6 737 252 253 739 1019 1020 6 738 253 254 740 1020 1021 6 739 254 255 741 1021 1022 6 740 255 256 742 1022 1023 6 741 256 257 431 743 1023 6 742 431 744 1023 1024 1025 6 743 431 432 745 1025 1026 6 744 432 433 746 1026 1027 6 745 433 434 747 1027 1028 6 746 434 435 748 1028 1029 6 747 435 436 749 1029 1030 6 748 436 437 750 1030 1031 6 749 437 438 751 1031 1032 6 750 438 439 752 1032 1033 6 751 439 440 753 1033 1034 6 752 440 441 754 1034 1035 6 753 441 442 755 1035 1036 6 754 442 443 756 1036 1037 6 755 443 444 757 1037 1038 6 756 444 445 758 1038 1039 6 757 445 446 759 1039 1040 6 758 446 447 760 1040 1041 6 759 447 448 761 1041 1042 6 760 448 449 762 1042 1043 6 761 449 450 763 1043 1044 6 762 450 451 764 1044 1045 6 763 451 452 765 1045 1046 6 764 452 453 766 1046 1047 6 765 453 454 767 1047 1048 6 766 454 455 768 1048 1049 6 767 455 456 769 1049 1050 6 768 456 457 770 1050 1051 6 769 457 458 771 1051 1052 6 770 458 459 772 1052 1053 6 771 459 460 773 1053 1054 6 772 460 461 774 1054 1055 6 773 461 462 775 1055 1056 6 774 462 463 776 1056 1057 6 775 463 464 777 1057 1058 6 776 464 465 778 1058 1059 6 777 465 466 779 1059 1060 6 778 466 467 780 1060 1061 6 779 467 468 781 1061 1062 6 780 468 469 782 1062 1063 6 781 469 470 783 1063 1064 6 782 470 471 784 1064 1065 6 783 471 472 785 1065 1066 6 784 472 473 786 1066 1067 6 785 473 474 787 1067 1068 6 786 474 475 788 1068 1069 6 787 475 476 789 1069 1070 6 788 476 477 790 1070 1071 6 789 477 478 791 1071 1072 6 790 478 479 792 1072 1073 6 791 479 480 793 1073 1074 6 792 480 481 794 1074 1075 6 793 481 482 795 1075 1076 6 794 482 483 796 1076 1077 6 795 483 484 797 1077 1078 6 796 484 485 798 1078 1079 6 797 485 486 799 1079 1080 6 798 486 487 800 1080 1081 6 799 487 488 801 1081 1082 6 800 488 489 802 1082 1083 6 801 489 490 803 1083 1084 6 802 490 491 804 1084 1085 6 803 491 492 805 1085 1086 6 804 492 493 806 1086 1087 6 805 493 494 807 1087 1088 6 806 494 495 808 1088 1089 6 807 495 496 809 1089 1090 6 808 496 497 810 1090 1091 6 809 497 498 811 1091 1092 6 810 498 499 812 1092 1093 6 811 499 500 813 1093 1094 6 812 500 501 814 1094 1095 6 813 501 502 815 1095 1096 6 814 502 503 816 1096 1097 6 815 503 504 817 1097 1098 6 816 504 505 818 1098 1099 6 817 505 506 819 1099 1100 6 818 506 507 820 1100 1101 6 819 507 508 821 1101 1102 6 820 508 509 822 1102 1103 6 821 509 510 823 1103 1104 6 822 510 511 824 1104 1105 6 823 511 512 825 1105 1106 6 824 512 513 826 1106 1107 6 825 513 514 827 1107 1108 6 826 514 515 828 1108 1109 6 827 515 516 829 1109 1110 6 828 516 517 830 1110 1111 6 829 517 518 831 1111 1112 6 830 518 519 832 1112 1113 6 831 519 520 833 1113 1114 6 832 520 521 522 834 1114 6 833 522 523 524 835 1114 7 834 524 525 836 1114 1115 1116 6 835 525 526 837 1116 1117 6 836 526 527 838 1117 1118 6 837 527 528 839 1118 1119 6 838 528 529 840 1119 1120 6 839 529 530 841 1120 1121 6 840 530 531 842 1121 1122 6 841 531 532 843 1122 1123 6 842 532 533 844 1123 1124 6 843 533 534 845 1124 1125 6 844 534 535 846 1125 1126 6 845 535 536 847 1126 1127 6 846 536 537 848 1127 1128 6 847 537 538 849 1128 1129 6 848 538 539 850 851 1129 6 849 539 851 852 853 540 6 849 850 852 1129 1130 1131 6 851 850 853 854 1131 1132 6 852 850 854 855 541 540 6 852 853 855 1132 1133 1134 6 854 853 541 542 856 1134 6 855 542 543 857 1134 1135 6 856 543 544 858 1135 1136 6 857 544 545 859 1136 1137 6 858 545 546 548 860 1137 6 859 548 861 1137 1138 1139 6 860 548 549 862 1139 1140 6 861 549 863 1140 1141 1142 6 862 549 550 551 864 1142 6 863 551 552 554 865 1142 6 864 554 557 866 1142 1143 6 865 557 559 867 1143 1144 6 866 559 868 869 1144 1145 6 867 559 869 870 922 560 6 867 868 870 871 1145 1146 6 869 868 871 872 873 922 6 869 870 872 1146 1147 1148 6 871 870 873 874 1151 1148 6 872 870 874 875 922 920 6 872 873 875 876 1170 1151 6 874 873 876 877 919 920 6 874 875 877 878 879 1170 6 876 875 878 918 882 919 6 876 877 879 880 881 882 6 876 878 880 884 886 1170 6 879 878 881 884 885 891 6 880 878 882 883 891 892 6 881 878 883 917 918 877 6 881 882 912 892 913 917 6 879 880 885 886 887 888 6 884 880 888 889 890 891 6 879 884 887 1964 1169 1170 6 886 884 888 1965 1964 2075 6 887 884 885 889 2075 2076 6 888 885 890 2076 2077 2081 6 889 885 891 893 894 2081 6 890 885 880 881 892 893 6 891 881 893 896 912 883 6 891 892 890 894 895 896 6 890 893 895 897 898 2081 6 894 893 896 897 909 910 6 895 893 892 910 911 912 6 894 895 898 899 900 909 6 894 897 899 901 2081 2080 6 898 897 900 901 902 906 6 899 897 906 907 908 909 6 898 899 902 903 2080 2082 6 901 899 903 904 905 906 6 901 902 904 2082 2083 2084 6 903 902 905 2084 2085 1565 6 904 902 906 1563 1564 1565 6 905 902 899 900 907 1563 6 906 900 908 1543 1563 1536 6 907 900 909 1522 1523 1536 6 908 900 897 895 910 1522 6 909 895 896 911 1520 1522 6 910 896 912 1521 1520 914 6 911 896 892 883 913 914 6 912 883 914 915 916 917 6 912 913 915 2474 1521 911 6 914 913 916 574 576 2474 6 915 913 917 9741 573 574 6 916 913 883 882 918 9741 6 917 882 877 919 9742 9741 6 918 877 875 920 921 9742 6 919 875 921 562 922 873 6 919 920 562 9743 9742 563 6 562 920 873 870 868 560 6 154 155 924 1248 1249 1250 6 923 155 156 925 1250 1251 6 924 156 157 926 1251 1252 6 925 157 158 927 1252 1253 6 926 158 159 928 1253 1254 6 927 159 160 929 1254 1255 6 928 160 161 930 1255 1256 6 929 161 162 931 1256 1257 6 930 162 163 651 932 1257 6 931 651 933 1257 1258 1259 6 932 651 652 934 1259 1260 6 933 652 653 935 1260 1261 6 934 653 654 936 1261 1262 6 935 654 655 937 1262 1263 6 936 655 656 938 1263 1264 6 937 656 657 939 1264 1265 6 938 657 658 940 1265 1266 6 939 658 659 941 1266 1267 6 940 659 660 942 1267 1268 6 941 660 661 943 1268 1269 6 942 661 662 944 1269 1270 6 943 662 663 945 1270 1271 6 944 663 664 946 1271 1272 6 945 664 665 947 1272 1273 6 946 665 666 948 1273 1274 6 947 666 667 949 1274 1275 6 948 667 668 950 1275 1276 6 949 668 669 951 1276 1277 6 950 669 670 952 1277 1278 6 951 670 671 953 1278 1279 6 952 671 672 954 1279 1280 6 953 672 673 955 1280 1281 6 954 673 674 956 1281 1282 6 955 674 675 957 1282 1283 6 956 675 676 958 1283 1284 6 957 676 677 959 1284 1285 6 958 677 678 960 1285 1286 6 959 678 679 961 1286 1287 6 960 679 680 962 1287 1288 6 961 680 681 963 1288 1289 6 962 681 682 964 1289 1290 6 963 682 683 965 1290 1291 6 964 683 684 966 1291 1292 6 965 684 685 967 1292 1293 6 966 685 686 968 1293 1294 6 967 686 687 969 1294 1295 6 968 687 688 970 1295 1296 6 969 688 689 971 1296 1297 6 970 689 690 972 1297 1298 6 971 690 691 973 1298 1299 6 972 691 692 694 974 1299 5 973 694 695 975 1299 6 974 695 696 976 1299 1300 6 975 696 697 977 1300 1301 6 976 697 698 978 1301 1302 6 977 698 699 979 1302 1303 6 978 699 700 980 1303 1304 6 979 700 701 981 1304 1305 6 980 701 702 982 1305 1306 6 981 702 703 983 1306 1307 6 982 703 704 984 1307 1308 6 983 704 705 985 1308 1309 6 984 705 706 986 1309 1310 6 985 706 707 987 1310 1311 6 986 707 708 988 1311 1312 6 987 708 709 989 1312 1313 6 988 709 710 990 1313 1314 6 989 710 711 991 1314 1315 6 990 711 712 992 1315 1316 6 991 712 713 993 1316 1317 6 992 713 714 994 1317 1318 6 993 714 715 995 1318 1319 6 994 715 716 996 1319 1320 6 995 716 717 997 1320 1321 6 996 717 718 998 1321 1322 6 997 718 719 999 1322 1323 6 998 719 720 1000 1323 1324 6 999 720 721 1001 1324 1325 6 1000 721 722 1002 1325 1326 6 1001 722 723 1003 1326 1327 6 1002 723 724 1004 1327 1328 6 1003 724 725 1005 1328 1329 6 1004 725 726 1006 1329 1330 6 1005 726 727 1007 1330 1331 6 1006 727 728 1008 1331 1332 6 1007 728 729 1009 1332 1333 6 1008 729 730 1010 1333 1334 6 1009 730 731 1011 1334 1335 6 1010 731 732 1012 1335 1336 6 1011 732 733 1013 1014 1336 6 1012 733 1014 1015 1016 734 6 1012 1013 1015 1336 1337 1338 6 1014 1013 1016 1338 1339 1340 6 1015 1013 734 735 1017 1340 6 1016 735 736 1018 1340 1341 6 1017 736 737 1019 1341 1342 6 1018 737 738 1020 1342 1343 6 1019 738 739 1021 1343 1344 6 1020 739 740 1022 1344 1345 6 1021 740 741 1023 1345 1346 6 1022 741 742 743 1024 1346 6 1023 743 1025 1346 1347 1348 6 1024 743 744 1026 1348 1349 6 1025 744 745 1027 1349 1350 6 1026 745 746 1028 1350 1351 6 1027 746 747 1029 1351 1352 6 1028 747 748 1030 1352 1353 6 1029 748 749 1031 1353 1354 6 1030 749 750 1032 1354 1355 6 1031 750 751 1033 1355 1356 6 1032 751 752 1034 1356 1357 6 1033 752 753 1035 1357 1358 6 1034 753 754 1036 1358 1359 6 1035 754 755 1037 1359 1360 6 1036 755 756 1038 1360 1361 6 1037 756 757 1039 1361 1362 6 1038 757 758 1040 1362 1363 6 1039 758 759 1041 1363 1364 6 1040 759 760 1042 1364 1365 6 1041 760 761 1043 1365 1366 6 1042 761 762 1044 1366 1367 6 1043 762 763 1045 1367 1368 6 1044 763 764 1046 1368 1369 6 1045 764 765 1047 1369 1370 6 1046 765 766 1048 1370 1371 6 1047 766 767 1049 1371 1372 6 1048 767 768 1050 1372 1373 6 1049 768 769 1051 1373 1374 6 1050 769 770 1052 1374 1375 6 1051 770 771 1053 1375 1376 6 1052 771 772 1054 1376 1377 6 1053 772 773 1055 1377 1378 6 1054 773 774 1056 1378 1379 6 1055 774 775 1057 1379 1380 6 1056 775 776 1058 1380 1381 6 1057 776 777 1059 1381 1382 6 1058 777 778 1060 1382 1383 6 1059 778 779 1061 1383 1384 6 1060 779 780 1062 1384 1385 6 1061 780 781 1063 1385 1386 6 1062 781 782 1064 1386 1387 6 1063 782 783 1065 1387 1388 6 1064 783 784 1066 1388 1389 6 1065 784 785 1067 1389 1390 6 1066 785 786 1068 1390 1391 6 1067 786 787 1069 1391 1392 6 1068 787 788 1070 1392 1393 6 1069 788 789 1071 1393 1394 6 1070 789 790 1072 1394 1395 6 1071 790 791 1073 1395 1396 6 1072 791 792 1074 1396 1397 6 1073 792 793 1075 1397 1398 6 1074 793 794 1076 1398 1399 6 1075 794 795 1077 1399 1400 6 1076 795 796 1078 1400 1401 6 1077 796 797 1079 1401 1402 6 1078 797 798 1080 1402 1403 6 1079 798 799 1081 1403 1404 6 1080 799 800 1082 1404 1405 6 1081 800 801 1083 1405 1406 6 1082 801 802 1084 1406 1407 6 1083 802 803 1085 1407 1408 6 1084 803 804 1086 1408 1409 6 1085 804 805 1087 1409 1410 6 1086 805 806 1088 1410 1411 6 1087 806 807 1089 1411 1412 6 1088 807 808 1090 1412 1413 6 1089 808 809 1091 1413 1414 6 1090 809 810 1092 1414 1415 6 1091 810 811 1093 1415 1416 6 1092 811 812 1094 1416 1417 6 1093 812 813 1095 1417 1418 6 1094 813 814 1096 1418 1419 6 1095 814 815 1097 1419 1420 6 1096 815 816 1098 1420 1421 6 1097 816 817 1099 1421 1422 6 1098 817 818 1100 1422 1423 6 1099 818 819 1101 1423 1424 6 1100 819 820 1102 1424 1425 6 1101 820 821 1103 1425 1426 6 1102 821 822 1104 1426 1427 6 1103 822 823 1105 1427 1428 6 1104 823 824 1106 1428 1429 6 1105 824 825 1107 1429 1430 6 1106 825 826 1108 1430 1431 6 1107 826 827 1109 1431 1432 6 1108 827 828 1110 1432 1433 6 1109 828 829 1111 1433 1434 6 1110 829 830 1112 1434 1435 6 1111 830 831 1113 1435 1436 6 1112 831 832 1114 1436 1115 6 1113 832 833 834 835 1115 6 1114 835 1116 1436 1113 1437 5 1115 835 836 1117 1437 6 1116 836 837 1118 1437 1438 6 1117 837 838 1119 1438 1439 6 1118 838 839 1120 1439 1440 6 1119 839 840 1121 1440 1441 6 1120 840 841 1122 1441 1442 6 1121 841 842 1123 1442 1443 6 1122 842 843 1124 1443 1444 6 1123 843 844 1125 1444 1445 6 1124 844 845 1126 1445 1446 6 1125 845 846 1127 1446 1447 6 1126 846 847 1128 1447 1448 6 1127 847 848 1129 1448 1449 6 1128 848 849 851 1130 1449 6 1129 851 1131 1449 1450 1451 6 1130 851 852 1132 1451 1452 6 1131 852 854 1133 1452 1453 6 1132 854 1134 1456 1453 1152 6 1133 854 855 856 1135 1152 6 1134 856 857 1136 1152 1153 6 1135 857 858 1137 1153 1154 6 1136 858 859 860 1138 1154 6 1137 860 1139 1154 1155 1156 6 1138 860 861 1140 1156 1157 6 1139 861 862 1141 1157 1158 6 1140 862 1142 1158 1159 1143 6 1141 862 863 864 865 1143 6 1142 865 866 1144 1159 1141 6 1143 866 867 1145 1498 1159 6 1144 867 869 1146 1498 1499 6 1145 869 871 1147 1164 1499 6 1146 871 1148 1149 1164 1165 6 1147 871 1149 1150 1151 872 6 1147 1148 1150 1165 1166 1167 6 1149 1148 1151 1167 1168 1169 6 1150 1148 872 1169 1170 874 6 1134 1135 1153 1473 1456 1133 6 1152 1135 1136 1154 1473 1490 6 1153 1136 1137 1138 1155 1490 6 1154 1138 1156 1490 1491 1492 6 1155 1138 1139 1157 1492 1493 6 1156 1139 1140 1158 1493 1494 6 1157 1140 1141 1159 1497 1494 6 1158 1141 1143 1144 1498 1497 6 85 86 1161 1483 1484 1488 6 1160 86 87 1162 1174 1488 6 1161 87 88 1163 1174 1175 6 1162 88 89 1175 1177 1186 6 1146 1147 1165 1499 1527 1528 6 1164 1147 1149 1166 1528 1533 6 1165 1149 1167 1535 1533 1541 6 1166 1149 1150 1168 1541 1962 6 1167 1150 1169 1962 1963 1964 6 1168 1150 1151 1170 886 1964 6 1169 1151 874 886 879 876 6 414 21 22 1172 3337 3882 6 1171 22 23 1173 1524 3337 6 1172 23 24 1524 1525 1526 6 1161 1162 1175 1176 1488 1489 6 1174 1162 1176 1163 1177 1178 6 1174 1175 1489 1642 1643 1178 6 1175 1163 1178 1179 1186 1183 6 1175 1177 1179 1180 1643 1176 6 1178 1177 1180 1181 1182 1183 6 1178 1179 1181 1643 1644 1645 6 1180 1179 1182 1645 1646 1647 6 1181 1179 1183 1184 3097 1647 6 1182 1179 1184 1185 1186 1177 6 1182 1183 1185 3097 2241 1187 6 1184 1183 1186 90 91 1187 6 1185 1183 1177 1163 89 90 6 1185 91 92 1188 2241 1184 6 1187 92 93 1189 2241 1659 6 1188 93 94 1190 1660 1659 6 1189 94 95 1191 1662 1660 6 1190 95 96 1192 1670 1662 6 1191 96 97 1193 1670 1671 6 1192 97 98 1194 1671 1672 6 1193 98 99 1195 1672 1673 6 1194 99 100 1196 1673 1674 6 1195 100 101 1197 1674 1675 6 1196 101 102 1198 1500 1675 6 1197 102 103 1199 1457 1500 6 1198 103 104 1200 1457 1458 6 1199 104 105 1201 1458 1459 6 1200 105 106 1202 1459 1460 6 1201 106 107 1203 1460 1685 6 1202 107 108 1204 1687 1685 6 1203 108 109 1205 1687 1688 6 1204 109 110 1206 1688 1689 6 1205 110 111 1207 1689 1690 6 1206 111 112 1208 1693 1690 6 1207 112 113 1209 1693 1694 6 1208 113 114 1210 1694 1695 6 1209 114 115 1211 1556 1695 6 1210 115 116 1212 1546 1556 6 1211 116 117 1213 1546 1547 6 1212 117 118 1214 1547 1548 6 1213 118 119 1215 1548 1549 6 1214 119 120 1216 1549 1550 6 1215 120 121 1217 1553 1550 6 1216 121 122 1218 1555 1553 6 1217 122 123 1219 1716 1555 6 1218 123 124 1220 1716 1717 6 1219 124 125 1221 1717 1718 6 1220 125 126 1222 1718 1719 6 1221 126 127 1223 1719 1720 6 1222 127 128 1224 1720 1721 6 1223 128 129 1225 1721 1722 6 1224 129 130 1226 1722 1723 6 1225 130 131 1227 1726 1723 6 1226 131 132 1228 1726 1727 6 1227 132 133 1229 1727 1728 6 1228 133 134 1230 1728 1729 6 1229 134 135 1231 1729 1730 6 1230 135 136 1232 1733 1730 6 1231 136 137 1233 1733 1734 6 1232 137 138 1234 1734 1735 6 1233 138 139 1235 1735 1736 6 1234 139 140 1236 1736 1737 6 1235 140 141 1237 1737 1738 6 1236 141 142 1238 1738 1739 6 1237 142 143 1239 1739 1740 6 1238 143 144 1240 1740 1741 6 1239 144 145 1241 1741 1742 6 1240 145 146 1242 1742 1743 7 1241 146 147 3 148 1243 1743 5 1242 148 149 1244 1743 6 1243 149 150 1245 1743 1744 6 1244 150 151 1246 1744 1745 6 1245 151 152 1247 1745 1746 6 1246 152 153 1248 1746 1747 6 1247 153 154 923 1249 1747 6 1248 923 1250 1747 1748 1749 6 1249 923 924 1251 1749 1750 6 1250 924 925 1252 1750 1751 6 1251 925 926 1253 1751 1752 6 1252 926 927 1254 1752 1753 6 1253 927 928 1255 1753 1754 6 1254 928 929 1256 1754 1755 6 1255 929 930 1257 1755 1756 6 1256 930 931 932 1258 1756 6 1257 932 1259 1756 1757 1758 6 1258 932 933 1260 1758 1759 6 1259 933 934 1261 1759 1760 6 1260 934 935 1262 1760 1761 6 1261 935 936 1263 1761 1762 6 1262 936 937 1264 1762 1763 6 1263 937 938 1265 1763 1764 6 1264 938 939 1266 1764 1765 6 1265 939 940 1267 1765 1766 6 1266 940 941 1268 1766 1767 6 1267 941 942 1269 1767 1768 6 1268 942 943 1270 1768 1769 6 1269 943 944 1271 1769 1770 6 1270 944 945 1272 1770 1771 6 1271 945 946 1273 1771 1772 6 1272 946 947 1274 1772 1773 6 1273 947 948 1275 1773 1774 6 1274 948 949 1276 1774 1775 6 1275 949 950 1277 1775 1776 6 1276 950 951 1278 1776 1777 6 1277 951 952 1279 1777 1778 6 1278 952 953 1280 1778 1779 6 1279 953 954 1281 1779 1780 6 1280 954 955 1282 1780 1781 6 1281 955 956 1283 1781 1782 6 1282 956 957 1284 1782 1783 6 1283 957 958 1285 1783 1784 6 1284 958 959 1286 1784 1785 6 1285 959 960 1287 1785 1786 6 1286 960 961 1288 1786 1787 6 1287 961 962 1289 1787 1788 6 1288 962 963 1290 1788 1789 6 1289 963 964 1291 1789 1790 6 1290 964 965 1292 1790 1791 6 1291 965 966 1293 1791 1792 6 1292 966 967 1294 1792 1793 6 1293 967 968 1295 1793 1794 6 1294 968 969 1296 1794 1795 6 1295 969 970 1297 1795 1796 6 1296 970 971 1298 1796 1797 6 1297 971 972 1299 1797 1300 6 1298 972 973 974 975 1300 7 1299 975 976 1301 1797 1298 2100 6 1300 976 977 1302 2100 2101 6 1301 977 978 1303 2101 2102 6 1302 978 979 1304 2102 2103 6 1303 979 980 1305 2103 2104 6 1304 980 981 1306 2104 2105 6 1305 981 982 1307 2105 2106 6 1306 982 983 1308 1798 2106 6 1307 983 984 1309 1798 1799 6 1308 984 985 1310 1799 1800 6 1309 985 986 1311 1800 1801 6 1310 986 987 1312 1801 1802 6 1311 987 988 1313 1802 1803 6 1312 988 989 1314 1803 1804 6 1313 989 990 1315 1804 1805 6 1314 990 991 1316 1805 1806 6 1315 991 992 1317 1806 1807 6 1316 992 993 1318 1807 1808 6 1317 993 994 1319 1808 1809 6 1318 994 995 1320 1809 1810 6 1319 995 996 1321 1810 1811 6 1320 996 997 1322 1811 1812 6 1321 997 998 1323 1812 1813 6 1322 998 999 1324 1813 1814 6 1323 999 1000 1325 1814 1815 6 1324 1000 1001 1326 1815 1816 6 1325 1001 1002 1327 1816 1817 6 1326 1002 1003 1328 1817 1818 6 1327 1003 1004 1329 1818 1819 6 1328 1004 1005 1330 1819 1820 6 1329 1005 1006 1331 1820 1821 6 1330 1006 1007 1332 1821 1822 6 1331 1007 1008 1333 1822 1823 6 1332 1008 1009 1334 1823 1824 6 1333 1009 1010 1335 1824 1825 6 1334 1010 1011 1336 1825 1826 6 1335 1011 1012 1014 1337 1826 6 1336 1014 1338 1826 1827 1828 6 1337 1014 1015 1339 1828 1829 6 1338 1015 1340 1829 1830 1831 6 1339 1015 1016 1017 1341 1831 6 1340 1017 1018 1342 1831 1832 6 1341 1018 1019 1343 1832 1833 6 1342 1019 1020 1344 1833 1834 6 1343 1020 1021 1345 1834 1835 6 1344 1021 1022 1346 1835 1836 6 1345 1022 1023 1024 1347 1836 6 1346 1024 1348 1836 1837 1838 6 1347 1024 1025 1349 1838 1839 6 1348 1025 1026 1350 1839 1840 6 1349 1026 1027 1351 1840 1841 6 1350 1027 1028 1352 1841 1842 6 1351 1028 1029 1353 1842 1843 6 1352 1029 1030 1354 1843 1844 6 1353 1030 1031 1355 1844 1845 6 1354 1031 1032 1356 1845 1846 6 1355 1032 1033 1357 1846 1847 6 1356 1033 1034 1358 1847 1848 6 1357 1034 1035 1359 1848 1849 6 1358 1035 1036 1360 1849 1850 6 1359 1036 1037 1361 1850 1851 6 1360 1037 1038 1362 1851 1852 6 1361 1038 1039 1363 1852 1853 6 1362 1039 1040 1364 1853 1854 6 1363 1040 1041 1365 1854 1855 6 1364 1041 1042 1366 1855 1856 6 1365 1042 1043 1367 1856 1857 6 1366 1043 1044 1368 1857 1858 6 1367 1044 1045 1369 1858 1859 6 1368 1045 1046 1370 1859 1860 6 1369 1046 1047 1371 1860 1861 6 1370 1047 1048 1372 1861 1862 6 1371 1048 1049 1373 1862 1863 6 1372 1049 1050 1374 1863 1864 6 1373 1050 1051 1375 1864 1865 6 1374 1051 1052 1376 1865 1866 6 1375 1052 1053 1377 1866 1867 6 1376 1053 1054 1378 1867 1868 6 1377 1054 1055 1379 1868 1869 6 1378 1055 1056 1380 1869 1870 6 1379 1056 1057 1381 1870 1871 6 1380 1057 1058 1382 1871 1872 6 1381 1058 1059 1383 1872 1873 6 1382 1059 1060 1384 1873 1874 6 1383 1060 1061 1385 1874 1875 6 1384 1061 1062 1386 1875 1876 6 1385 1062 1063 1387 1876 1877 6 1386 1063 1064 1388 1877 1878 6 1387 1064 1065 1389 1878 1879 6 1388 1065 1066 1390 1879 1880 6 1389 1066 1067 1391 1880 1881 6 1390 1067 1068 1392 1881 1882 6 1391 1068 1069 1393 1882 1883 6 1392 1069 1070 1394 1883 1884 6 1393 1070 1071 1395 1884 1885 6 1394 1071 1072 1396 1885 1886 6 1395 1072 1073 1397 1886 1887 6 1396 1073 1074 1398 1887 1888 6 1397 1074 1075 1399 1888 1889 6 1398 1075 1076 1400 1889 1890 6 1399 1076 1077 1401 1890 1891 6 1400 1077 1078 1402 1891 1892 6 1401 1078 1079 1403 1892 1893 6 1402 1079 1080 1404 1893 1894 6 1403 1080 1081 1405 1894 1895 6 1404 1081 1082 1406 1895 1896 6 1405 1082 1083 1407 1896 1897 6 1406 1083 1084 1408 1897 1898 6 1407 1084 1085 1409 1898 1899 6 1408 1085 1086 1410 1899 1900 6 1409 1086 1087 1411 1900 1901 6 1410 1087 1088 1412 1901 1902 6 1411 1088 1089 1413 1902 1903 6 1412 1089 1090 1414 1903 1904 6 1413 1090 1091 1415 1904 1905 6 1414 1091 1092 1416 1905 1906 6 1415 1092 1093 1417 1906 1907 6 1416 1093 1094 1418 1907 1908 6 1417 1094 1095 1419 1908 1909 6 1418 1095 1096 1420 1909 1910 6 1419 1096 1097 1421 1910 1911 6 1420 1097 1098 1422 1911 1912 6 1421 1098 1099 1423 1912 1913 6 1422 1099 1100 1424 1913 1914 6 1423 1100 1101 1425 1914 1915 6 1424 1101 1102 1426 1915 1916 6 1425 1102 1103 1427 1916 1917 6 1426 1103 1104 1428 1917 1918 6 1427 1104 1105 1429 1918 1919 6 1428 1105 1106 1430 1919 1920 6 1429 1106 1107 1431 1920 1921 6 1430 1107 1108 1432 1921 1922 6 1431 1108 1109 1433 1922 1923 6 1432 1109 1110 1434 1923 1924 6 1433 1110 1111 1435 1924 1925 6 1434 1111 1112 1436 1925 1926 6 1435 1112 1113 1115 1437 1926 6 1436 1115 1116 1117 1438 1926 6 1437 1117 1118 1439 1926 1927 6 1438 1118 1119 1440 1927 1928 6 1439 1119 1120 1441 1928 1929 6 1440 1120 1121 1442 1929 1930 6 1441 1121 1122 1443 1930 1931 6 1442 1122 1123 1444 1931 1932 6 1443 1123 1124 1445 1461 1932 6 1444 1124 1125 1446 1461 1462 6 1445 1125 1126 1447 1462 1463 6 1446 1126 1127 1448 1463 1464 6 1447 1127 1128 1449 1464 1465 6 1448 1128 1129 1130 1450 1465 6 1449 1130 1451 1465 1466 1467 6 1450 1130 1131 1452 1467 1468 6 1451 1131 1132 1453 1454 1468 6 1452 1132 1454 1455 1456 1133 6 1452 1453 1455 1468 1469 1470 6 1454 1453 1456 1470 1471 1472 6 1455 1453 1133 1472 1473 1152 6 1198 1199 1458 1500 1501 1679 6 1457 1199 1200 1459 1679 1680 6 1458 1200 1201 1460 1680 1681 6 1459 1201 1202 1681 1684 1685 6 1444 1445 1462 1932 1933 1934 6 1461 1445 1446 1463 1934 1935 6 1462 1446 1447 1464 1935 1936 6 1463 1447 1448 1465 1936 1937 6 1464 1448 1449 1450 1466 1937 6 1465 1450 1467 1937 1938 1939 6 1466 1450 1451 1468 1939 1940 6 1467 1451 1452 1454 1469 1940 6 1468 1454 1470 1940 1941 1942 6 1469 1454 1455 1471 1942 1943 6 1470 1455 1472 1943 1944 1945 6 1471 1455 1456 1473 1945 1946 6 1472 1456 1152 1153 1490 1946 7 76 2 1475 1608 1604 1609 1618 6 1474 2 77 1476 1620 1618 6 1475 77 78 1477 1620 1621 6 1476 78 79 1478 1621 1622 6 1477 79 80 1479 1630 1622 6 1478 80 81 1480 1630 1631 6 1479 81 82 1481 1631 1632 6 1480 82 83 1482 1635 1632 6 1481 83 84 1483 1485 1635 6 1482 84 85 1160 1484 1485 6 1483 1160 1485 1486 1487 1488 6 1483 1484 1486 1502 1635 1482 6 1485 1484 1487 1502 1503 1504 6 1486 1484 1488 1504 1505 1489 6 1487 1484 1160 1161 1174 1489 6 1488 1174 1176 1505 1487 1642 6 1473 1153 1154 1155 1491 1946 6 1490 1155 1492 1946 1947 1948 6 1491 1155 1156 1493 1948 1949 6 1492 1156 1157 1494 1495 1949 6 1493 1157 1495 1496 1497 1158 6 1493 1494 1496 1951 1949 1952 6 1495 1494 1497 1952 1530 1529 6 1496 1494 1158 1159 1498 1529 6 1144 1145 1499 1159 1497 1529 6 1498 1145 1146 1164 1527 1529 6 1197 1198 1457 1501 1675 1676 6 1500 1457 1676 1677 1678 1679 6 1485 1486 1503 1637 1634 1635 6 1502 1486 1504 1637 1638 1639 6 1503 1486 1487 1505 1639 1640 6 1504 1487 1489 1640 1641 1642 6 583 589 590 1507 1508 582 6 1506 590 1508 1509 1513 1514 6 1506 1507 1509 1510 1517 582 6 1508 1507 1510 1511 1512 1513 6 1508 1509 1511 1517 1518 1519 6 1510 1509 1512 1523 1519 1537 6 1511 1509 1513 1537 1538 1539 6 1512 1509 1507 1514 601 1539 6 1513 1507 601 599 591 590 6 577 578 581 1516 2474 576 6 1515 581 1517 1518 1521 2474 6 1516 581 582 1508 1510 1518 6 1517 1510 1519 1520 1521 1516 6 1518 1510 1520 1522 1523 1511 6 1518 1519 1521 911 910 1522 6 1518 1520 911 1516 2474 914 6 910 1520 1519 1523 908 909 6 1522 1519 1511 908 1536 1537 6 1172 1173 1525 3337 3338 4250 6 1524 1173 1526 3130 2205 4250 6 1525 1173 24 25 3130 9781 6 1499 1164 1528 1529 1530 1531 6 1527 1164 1165 1531 1532 1533 6 1497 1498 1499 1527 1530 1496 6 1529 1527 1531 1952 1496 1953 6 1530 1527 1528 1532 1953 1954 6 1531 1528 1533 1534 1954 1955 6 1532 1528 1534 1535 1166 1165 6 1532 1533 1535 1955 1956 1957 6 1534 1533 1166 1541 1960 1957 6 908 1523 1537 1542 1543 907 6 1536 1523 1511 1512 1538 1542 6 1537 1512 1539 1540 1545 1542 6 1538 1512 1513 601 602 1540 6 1539 602 1538 1582 1545 1583 6 1535 1166 1167 1960 1961 1962 6 1536 1537 1543 1544 1545 1538 6 1536 1542 1544 1562 1563 907 6 1543 1542 1545 1562 1580 1577 6 1544 1542 1538 1582 1580 1540 6 1211 1212 1547 1556 1557 1558 6 1546 1212 1213 1548 1561 1558 6 1547 1213 1214 1549 1710 1561 6 1548 1214 1215 1550 1551 1710 6 1549 1215 1551 1552 1553 1216 6 1549 1550 1552 1710 1711 1712 6 1551 1550 1553 1554 1712 1713 6 1552 1550 1554 1555 1217 1216 6 1552 1553 1555 1713 1714 1715 6 1554 1553 1217 1715 1716 1218 6 1210 1211 1546 1557 1695 1696 6 1556 1546 1558 1559 1696 1697 6 1557 1546 1559 1560 1561 1547 6 1557 1558 1560 1697 1698 1699 6 1559 1558 1561 1699 1700 1709 6 1560 1558 1547 1709 1710 1548 6 1543 1544 1563 1564 1576 1577 6 1543 1562 1564 905 907 906 6 1563 1562 905 1565 1566 1576 6 905 1564 1566 1567 2085 904 6 1565 1564 1567 1568 1569 1576 6 1565 1566 1568 2085 3766 3767 6 1567 1566 1569 1570 1571 3767 6 1568 1566 1570 1574 1575 1576 6 1568 1569 1571 1572 1573 1574 7 1568 1570 1572 3769 3767 6317 6319 5 1571 1570 1573 6319 6320 7 1572 1570 1574 6320 6361 6360 2475 6 1573 1570 1569 1575 1578 2475 6 1574 1569 1576 1577 1578 1579 6 1575 1569 1566 1564 1562 1577 6 1576 1562 1575 1579 1580 1544 6 1574 1575 1579 1586 1587 2475 6 1578 1575 1577 1580 1581 1586 6 1579 1577 1544 1581 1582 1545 6 1579 1580 1582 1584 1585 1586 6 1581 1580 1545 1540 1583 1584 6 1582 1540 1584 1602 603 602 6 1582 1583 1581 1585 1601 1602 6 1581 1584 1586 1591 1588 1601 6 1581 1585 1579 1578 1587 1588 6 1578 1586 1588 1589 2475 2476 6 1587 1586 1589 1590 1591 1585 6 1587 1588 1590 6354 6353 2476 6 1589 1588 1591 1592 1594 6354 6 1590 1588 1585 1592 1593 1601 6 1590 1591 1593 1594 1595 1596 6 1592 1591 1599 1596 1600 1601 6 1590 1592 1595 6358 6356 6354 6 1594 1592 1596 1597 3970 6358 6 1595 1592 1597 1598 1599 1593 6 1595 1596 1598 3970 3969 6556 6 1597 1596 1599 6556 6557 611 6 1598 1596 1593 1600 611 609 6 1599 1593 1601 1602 608 609 6 1600 1593 1591 1585 1584 1602 6 1600 1601 1584 1583 603 608 6 74 75 1604 428 1605 1608 5 1603 75 76 1608 1474 6 428 1603 1606 1607 1608 3519 6 428 1605 1607 2493 409 3516 6 1606 1605 3518 3516 1613 3519 7 1605 1603 1604 1474 1609 1610 3519 5 1608 1474 1610 1611 1618 6 1608 1609 1611 1612 1613 3519 6 1610 1609 1612 1616 1617 1618 6 1610 1611 1613 1614 1615 1616 7 1610 1612 1614 3518 1607 3519 3523 6 1613 1612 1615 3523 3524 3528 6 1614 1612 1616 3093 3544 3528 6 1615 1612 1611 1617 3093 3094 6 1616 1611 1618 1619 3094 1624 7 1617 1611 1619 1620 1475 1609 1474 6 1617 1618 1620 1621 1623 1624 5 1619 1618 1475 1476 1621 6 1620 1476 1477 1622 1623 1619 6 1621 1477 1623 1629 1630 1478 6 1621 1622 1619 1624 1625 1629 7 1619 1623 1625 1626 1617 3094 4367 6 1624 1623 1626 1627 1628 1629 5 1624 1625 1627 4376 4367 7 1626 1625 1628 4377 4376 2862 7215 6 1627 1625 1629 2861 1633 2862 6 1628 1625 1623 1622 1630 2861 6 1629 1622 1478 1479 1631 2861 6 1630 1479 1480 1632 1633 2861 6 1631 1480 1633 1634 1635 1481 7 1631 1632 1634 1636 2861 1628 2862 6 1633 1632 1635 1636 1637 1502 6 1634 1632 1481 1502 1485 1482 5 1633 1634 1637 2862 2863 7 1636 1634 1502 1503 1638 2863 2864 5 1637 1503 1639 2864 2865 6 1638 1503 1504 1640 2865 2866 6 1639 1504 1505 1641 2866 2867 6 1640 1505 1642 2479 2490 2867 6 1641 1505 1489 1176 1643 2479 6 1642 1176 1178 1180 1644 2479 6 1643 1180 1645 2479 2480 2481 6 1644 1180 1181 1646 2481 1650 6 1645 1181 1647 1648 1649 1650 6 1646 1181 1648 1655 3097 1182 6 1646 1647 1649 1653 1654 1655 6 1646 1648 1650 1651 1652 1653 6 1646 1649 1651 2481 1645 2495 6 1650 1649 1652 2495 2496 2497 6 1651 1649 1653 2497 2498 2499 6 1652 1649 1648 1654 2499 2500 6 1653 1648 1655 1656 2500 2501 6 1654 1648 1647 1656 1657 3097 6 1654 1655 1657 1658 2501 2812 6 1656 1655 1658 1659 2241 3097 6 1656 1657 1659 1660 1661 2812 6 1658 1657 1660 1189 1188 2241 6 1658 1659 1661 1662 1190 1189 6 1658 1660 1662 1663 1664 2812 6 1661 1660 1663 1670 1191 1190 6 1661 1662 1664 1665 1669 1670 6 1661 1663 1665 1666 2812 2811 6 1664 1663 1666 1667 1668 1669 6 1664 1665 1667 2811 2813 2814 6 1666 1665 1668 2814 2815 2816 6 1667 1665 1669 2816 2821 2822 6 1668 1665 1663 1670 1671 2822 6 1669 1663 1662 1191 1192 1671 6 1670 1192 1193 1672 2822 1669 6 1671 1193 1194 1673 2823 2822 6 1672 1194 1195 1674 3147 2823 6 1673 1195 1196 1675 3147 3412 6 1674 1196 1197 1500 1676 3412 6 1675 1500 1501 1677 3412 3413 6 1676 1501 1678 3413 3414 3415 6 1677 1501 1679 3415 5381 5382 6 1678 1501 1457 1458 1680 5381 6 1679 1458 1459 1681 1682 5381 6 1680 1459 1460 1682 1683 1684 6 1680 1681 1683 3774 5383 5381 6 1682 1681 1684 3774 3775 3776 6 1683 1681 1460 1685 1686 3776 6 1684 1460 1686 1687 1203 1202 6 1684 1685 1687 3776 3777 3781 6 1686 1685 1203 1204 1688 3781 6 1687 1204 1205 1689 3781 3782 6 1688 1205 1206 1690 1691 3782 6 1689 1206 1691 1692 1693 1207 6 1689 1690 1692 3782 3783 3784 6 1691 1690 1693 3784 3785 3786 6 1692 1690 1207 1208 1694 3786 6 1693 1208 1209 1695 3786 3416 6 1694 1209 1210 1556 1696 3416 6 1695 1556 1557 1697 3416 3417 6 1696 1557 1559 1698 3417 3418 6 1697 1559 1699 1703 2223 3418 6 1698 1559 1560 1700 1701 1703 6 1699 1560 1701 1702 1708 1709 6 1699 1700 1702 1703 1704 1705 6 1701 1700 1705 1706 1707 1708 6 1699 1701 1704 1698 2223 2224 6 1703 1701 1705 2224 2225 2226 6 1704 1701 1702 1706 2226 2227 6 1705 1702 1707 2227 2228 2229 6 1706 1702 1708 2229 2230 2231 6 1707 1702 1700 1709 1711 2231 6 1708 1700 1560 1561 1710 1711 6 1709 1561 1548 1549 1551 1711 6 1710 1551 1712 2231 1708 1709 6 1711 1551 1552 1713 2232 2231 6 1712 1552 1554 1714 2240 2232 6 1713 1554 1715 2240 2560 2564 6 1714 1554 1555 1716 2564 2565 6 1715 1555 1218 1219 1717 2565 6 1716 1219 1220 1718 2565 2566 6 1717 1220 1221 1719 2569 2566 6 1718 1221 1222 1720 3463 2569 6 1719 1222 1223 1721 3462 3463 6 1720 1223 1224 1722 3469 3462 6 1721 1224 1225 1723 1724 3469 6 1722 1225 1724 1725 1726 1226 6 1722 1723 1725 2172 3467 3469 6 1724 1723 1726 2172 2173 2174 6 1725 1723 1226 1227 1727 2174 6 1726 1227 1228 1728 2174 2175 6 1727 1228 1229 1729 2175 2176 6 1728 1229 1230 1730 1731 2176 6 1729 1230 1731 1732 1733 1231 6 1729 1730 1732 2178 2176 2808 6 1731 1730 1733 3404 2808 3405 6 1732 1730 1231 1232 1734 3405 6 1733 1232 1233 1735 3405 3406 6 1734 1233 1234 1736 3406 3407 6 1735 1234 1235 1737 3407 3408 6 1736 1235 1236 1738 3408 3409 6 1737 1236 1237 1739 3409 3410 6 1738 1237 1238 1740 3410 3411 6 1739 1238 1239 1741 3197 3411 6 1740 1239 1240 1742 3191 3197 6 1741 1240 1241 1743 3191 1744 6 1742 1241 1242 1243 1244 1744 7 1743 1244 1245 1745 3191 1742 3199 6 1744 1245 1246 1746 2893 3199 6 1745 1246 1247 1747 2751 2893 6 1746 1247 1248 1249 1748 2751 6 1747 1249 1749 2233 2751 2752 6 1748 1249 1250 1750 2233 2234 6 1749 1250 1251 1751 2237 2234 6 1750 1251 1252 1752 2247 2237 6 1751 1252 1253 1753 2247 2253 6 1752 1253 1254 1754 2253 2254 6 1753 1254 1255 1755 2254 2255 6 1754 1255 1256 1756 2255 2256 6 1755 1256 1257 1258 1757 2256 6 1756 1258 1758 2256 2257 2258 6 1757 1258 1259 1759 2258 2259 6 1758 1259 1260 1760 2259 2260 6 1759 1260 1261 1761 2260 2261 6 1760 1261 1262 1762 2261 2262 6 1761 1262 1263 1763 2262 2263 6 1762 1263 1264 1764 2263 2264 6 1763 1264 1265 1765 2264 2265 6 1764 1265 1266 1766 2265 2266 6 1765 1266 1267 1767 2266 2267 6 1766 1267 1268 1768 2267 2268 6 1767 1268 1269 1769 2268 2269 6 1768 1269 1270 1770 2269 2270 6 1769 1270 1271 1771 2270 2271 6 1770 1271 1272 1772 2271 2272 6 1771 1272 1273 1773 2272 2273 6 1772 1273 1274 1774 2273 2274 6 1773 1274 1275 1775 2274 2275 6 1774 1275 1276 1776 2275 2276 6 1775 1276 1277 1777 2276 2277 6 1776 1277 1278 1778 2277 2278 6 1777 1278 1279 1779 2278 2279 6 1778 1279 1280 1780 2279 2280 6 1779 1280 1281 1781 2280 2281 6 1780 1281 1282 1782 2281 2282 6 1781 1282 1283 1783 2282 2283 6 1782 1283 1284 1784 2283 2284 6 1783 1284 1285 1785 2284 2285 6 1784 1285 1286 1786 2285 2286 6 1785 1286 1287 1787 2286 2287 6 1786 1287 1288 1788 2287 2288 6 1787 1288 1289 1789 2288 2289 6 1788 1289 1290 1790 2289 2290 6 1789 1290 1291 1791 2290 2291 6 1790 1291 1292 1792 2291 2292 6 1791 1292 1293 1793 2292 2293 6 1792 1293 1294 1794 2293 2294 6 1793 1294 1295 1795 2294 2295 6 1794 1295 1296 1796 2098 2295 6 1795 1296 1297 1797 2098 2099 6 1796 1297 1298 1300 2099 2100 6 1307 1308 1799 2106 2107 2108 6 1798 1308 1309 1800 2108 2109 6 1799 1309 1310 1801 2109 2110 6 1800 1310 1311 1802 2110 2111 6 1801 1311 1312 1803 2111 2112 6 1802 1312 1313 1804 2112 2113 6 1803 1313 1314 1805 2113 2114 6 1804 1314 1315 1806 2114 2115 6 1805 1315 1316 1807 2115 2116 6 1806 1316 1317 1808 2116 2117 6 1807 1317 1318 1809 2117 2118 6 1808 1318 1319 1810 2118 2119 6 1809 1319 1320 1811 2119 2120 6 1810 1320 1321 1812 2120 2121 6 1811 1321 1322 1813 2121 2122 6 1812 1322 1323 1814 2122 2123 6 1813 1323 1324 1815 2123 2124 6 1814 1324 1325 1816 2124 2125 6 1815 1325 1326 1817 2125 2126 6 1816 1326 1327 1818 2126 2127 6 1817 1327 1328 1819 2127 2128 6 1818 1328 1329 1820 2128 2129 6 1819 1329 1330 1821 2129 2130 6 1820 1330 1331 1822 2130 2131 6 1821 1331 1332 1823 2131 2132 6 1822 1332 1333 1824 2132 2133 6 1823 1333 1334 1825 2133 2134 6 1824 1334 1335 1826 2134 2135 6 1825 1335 1336 1337 1827 2135 6 1826 1337 1828 2135 2136 2137 6 1827 1337 1338 1829 2137 2138 6 1828 1338 1339 1830 2138 2139 6 1829 1339 1831 2139 2140 2141 6 1830 1339 1340 1341 1832 2141 6 1831 1341 1342 1833 2141 2142 6 1832 1342 1343 1834 2142 2143 6 1833 1343 1344 1835 2143 2144 6 1834 1344 1345 1836 2144 2145 6 1835 1345 1346 1347 1837 2145 6 1836 1347 1838 2150 2145 2165 6 1837 1347 1348 1839 2165 2166 6 1838 1348 1349 1840 2166 2167 6 1839 1349 1350 1841 2167 2168 6 1840 1350 1351 1842 2171 2168 6 1841 1351 1352 1843 2349 2171 6 1842 1352 1353 1844 2349 2350 6 1843 1353 1354 1845 2350 2351 6 1844 1354 1355 1846 2351 2352 6 1845 1355 1356 1847 2352 2353 6 1846 1356 1357 1848 2353 2354 6 1847 1357 1358 1849 2354 2355 6 1848 1358 1359 1850 2355 2356 6 1849 1359 1360 1851 2356 2357 6 1850 1360 1361 1852 2357 2358 6 1851 1361 1362 1853 2358 2359 6 1852 1362 1363 1854 2359 2360 6 1853 1363 1364 1855 2360 2361 6 1854 1364 1365 1856 1966 2361 6 1855 1365 1366 1857 1966 1967 6 1856 1366 1367 1858 1967 1968 6 1857 1367 1368 1859 1968 1969 6 1858 1368 1369 1860 1969 1970 6 1859 1369 1370 1861 1970 1971 6 1860 1370 1371 1862 1971 1972 6 1861 1371 1372 1863 1972 1973 6 1862 1372 1373 1864 1973 1974 6 1863 1373 1374 1865 1974 1975 6 1864 1374 1375 1866 1975 1976 6 1865 1375 1376 1867 1976 1977 6 1866 1376 1377 1868 1977 1978 6 1867 1377 1378 1869 1978 1979 6 1868 1378 1379 1870 1979 1980 6 1869 1379 1380 1871 1980 1981 6 1870 1380 1381 1872 1981 1982 6 1871 1381 1382 1873 1982 1983 6 1872 1382 1383 1874 1983 1984 6 1873 1383 1384 1875 1984 1985 6 1874 1384 1385 1876 1985 1986 6 1875 1385 1386 1877 1986 1987 6 1876 1386 1387 1878 1987 1988 6 1877 1387 1388 1879 1988 1989 6 1878 1388 1389 1880 1989 1990 6 1879 1389 1390 1881 1990 1991 6 1880 1390 1391 1882 1991 1992 6 1881 1391 1392 1883 1992 1993 6 1882 1392 1393 1884 1993 1994 6 1883 1393 1394 1885 1994 1995 6 1884 1394 1395 1886 1995 1996 6 1885 1395 1396 1887 1996 1997 6 1886 1396 1397 1888 1997 1998 6 1887 1397 1398 1889 1998 1999 6 1888 1398 1399 1890 1999 2000 6 1889 1399 1400 1891 2000 2001 6 1890 1400 1401 1892 2001 2002 6 1891 1401 1402 1893 2002 2003 6 1892 1402 1403 1894 2003 2004 6 1893 1403 1404 1895 2004 2005 6 1894 1404 1405 1896 2005 2006 6 1895 1405 1406 1897 2006 2007 6 1896 1406 1407 1898 2007 2008 6 1897 1407 1408 1899 2008 2009 6 1898 1408 1409 1900 2009 2010 6 1899 1409 1410 1901 2010 2011 6 1900 1410 1411 1902 2011 2012 6 1901 1411 1412 1903 2012 2013 6 1902 1412 1413 1904 2013 2014 6 1903 1413 1414 1905 2014 2015 6 1904 1414 1415 1906 2015 2016 6 1905 1415 1416 1907 2016 2017 6 1906 1416 1417 1908 2017 2018 6 1907 1417 1418 1909 2018 2019 6 1908 1418 1419 1910 2019 2020 6 1909 1419 1420 1911 2020 2021 6 1910 1420 1421 1912 2021 2022 6 1911 1421 1422 1913 2022 2023 6 1912 1422 1423 1914 2023 2024 6 1913 1423 1424 1915 2024 2025 6 1914 1424 1425 1916 2025 2026 6 1915 1425 1426 1917 2026 2027 6 1916 1426 1427 1918 2027 2028 6 1917 1427 1428 1919 2028 2029 6 1918 1428 1429 1920 2029 2030 6 1919 1429 1430 1921 2030 2031 6 1920 1430 1431 1922 2031 2032 6 1921 1431 1432 1923 2032 2033 6 1922 1432 1433 1924 2033 2034 6 1923 1433 1434 1925 2034 2035 6 1924 1434 1435 1926 2035 1927 6 1925 1435 1436 1437 1438 1927 7 1926 1438 1439 1928 2035 1925 2036 6 1927 1439 1440 1929 2036 2037 6 1928 1440 1441 1930 2037 2038 6 1929 1441 1442 1931 2038 2039 6 1930 1442 1443 1932 2039 2040 7 1931 1443 1444 1461 1933 2040 2041 5 1932 1461 1934 2041 2042 6 1933 1461 1462 1935 2042 2043 6 1934 1462 1463 1936 2043 2044 6 1935 1463 1464 1937 2044 2045 6 1936 1464 1465 1466 1938 2045 6 1937 1466 1939 2045 2046 2047 6 1938 1466 1467 1940 2047 2048 6 1939 1467 1468 1469 1941 2048 6 1940 1469 1942 2048 2049 2050 6 1941 1469 1470 1943 2050 2051 6 1942 1470 1471 1944 2051 2052 6 1943 1471 1945 2052 2053 2054 6 1944 1471 1472 1946 2054 1947 6 1945 1472 1473 1490 1491 1947 6 1946 1491 1948 2054 1945 2055 6 1947 1491 1492 1949 1950 2055 6 1948 1492 1950 1951 1495 1493 6 1948 1949 1951 2055 2056 2057 6 1950 1949 1495 1952 2057 2058 6 1951 1495 1496 1530 1953 2058 6 1952 1530 1531 1954 2058 2059 6 1953 1531 1532 1955 2059 2060 6 1954 1532 1534 1956 2060 2061 6 1955 1534 1957 1958 2061 2062 6 1956 1534 1958 1959 1960 1535 6 1956 1957 1959 2062 2063 2064 6 1958 1957 1960 2064 2065 2066 6 1959 1957 1535 1541 1961 2066 6 1960 1541 1962 2066 2067 2068 6 1961 1541 1167 1168 1963 2068 6 1962 1168 1964 1965 2070 2068 6 1963 1168 1965 887 886 1169 6 1963 1964 887 2072 2070 2075 6 1855 1856 1967 2361 2362 2363 6 1966 1856 1857 1968 2363 2364 6 1967 1857 1858 1969 2364 2365 6 1968 1858 1859 1970 2365 2366 6 1969 1859 1860 1971 2366 2367 6 1970 1860 1861 1972 2367 2368 6 1971 1861 1862 1973 2368 2369 6 1972 1862 1863 1974 2369 2370 6 1973 1863 1864 1975 2370 2371 6 1974 1864 1865 1976 2371 2372 6 1975 1865 1866 1977 2372 2373 6 1976 1866 1867 1978 2373 2374 6 1977 1867 1868 1979 2374 2375 6 1978 1868 1869 1980 2375 2376 6 1979 1869 1870 1981 2376 2377 6 1980 1870 1871 1982 2377 2378 6 1981 1871 1872 1983 2378 2379 6 1982 1872 1873 1984 2379 2380 6 1983 1873 1874 1985 2380 2381 6 1984 1874 1875 1986 2381 2382 6 1985 1875 1876 1987 2382 2383 6 1986 1876 1877 1988 2383 2384 6 1987 1877 1878 1989 2384 2385 6 1988 1878 1879 1990 2385 2386 6 1989 1879 1880 1991 2386 2387 6 1990 1880 1881 1992 2387 2388 6 1991 1881 1882 1993 2388 2389 6 1992 1882 1883 1994 2389 2390 6 1993 1883 1884 1995 2390 2391 6 1994 1884 1885 1996 2391 2392 6 1995 1885 1886 1997 2392 2393 6 1996 1886 1887 1998 2393 2394 6 1997 1887 1888 1999 2394 2395 6 1998 1888 1889 2000 2395 2396 6 1999 1889 1890 2001 2396 2397 6 2000 1890 1891 2002 2397 2398 6 2001 1891 1892 2003 2398 2399 6 2002 1892 1893 2004 2399 2400 6 2003 1893 1894 2005 2400 2401 6 2004 1894 1895 2006 2401 2402 6 2005 1895 1896 2007 2402 2403 6 2006 1896 1897 2008 2403 2404 6 2007 1897 1898 2009 2404 2405 6 2008 1898 1899 2010 2405 2406 6 2009 1899 1900 2011 2406 2407 6 2010 1900 1901 2012 2407 2408 6 2011 1901 1902 2013 2408 2409 6 2012 1902 1903 2014 2409 2410 6 2013 1903 1904 2015 2410 2411 6 2014 1904 1905 2016 2411 2412 6 2015 1905 1906 2017 2412 2413 6 2016 1906 1907 2018 2413 2414 6 2017 1907 1908 2019 2414 2415 6 2018 1908 1909 2020 2415 2416 6 2019 1909 1910 2021 2416 2417 6 2020 1910 1911 2022 2417 2418 6 2021 1911 1912 2023 2418 2419 6 2022 1912 1913 2024 2419 2420 6 2023 1913 1914 2025 2420 2421 6 2024 1914 1915 2026 2421 2422 6 2025 1915 1916 2027 2422 2423 6 2026 1916 1917 2028 2423 2424 6 2027 1917 1918 2029 2424 2425 6 2028 1918 1919 2030 2425 2426 6 2029 1919 1920 2031 2426 2427 6 2030 1920 1921 2032 2427 2428 6 2031 1921 1922 2033 2428 2429 6 2032 1922 1923 2034 2429 2430 6 2033 1923 1924 2035 2430 2431 6 2034 1924 1925 1927 2036 2431 5 2035 1927 1928 2037 2431 6 2036 1928 1929 2038 2431 2432 6 2037 1929 1930 2039 2432 2433 6 2038 1930 1931 2040 2433 2434 7 2039 1931 1932 2041 2434 2435 2436 5 2040 1932 1933 2042 2436 7 2041 1933 1934 2043 2436 2437 2438 6 2042 1934 1935 2044 2438 2439 6 2043 1935 1936 2045 2439 2440 6 2044 1936 1937 1938 2046 2440 6 2045 1938 2047 2440 2441 2442 6 2046 1938 1939 2048 2442 2443 6 2047 1939 1940 1941 2049 2443 6 2048 1941 2050 2443 2444 2448 6 2049 1941 1942 2051 2448 2449 6 2050 1942 1943 2052 2449 2450 6 2051 1943 1944 2053 2450 2451 6 2052 1944 2054 2451 2452 2453 6 2053 1944 1945 1947 2055 2453 6 2054 1947 1948 1950 2056 2453 6 2055 1950 2057 2453 2454 2455 6 2056 1950 1951 2058 2455 2456 6 2057 1951 1952 1953 2059 2456 6 2058 1953 1954 2060 2456 2457 6 2059 1954 1955 2061 2457 2458 6 2060 1955 1956 2062 2458 2459 6 2061 1956 1958 2063 2459 2460 6 2062 1958 2064 2460 2461 2462 6 2063 1958 1959 2065 2462 2463 6 2064 1959 2066 2463 2464 2465 6 2065 1959 1960 1961 2067 2465 6 2066 1961 2068 2069 2465 2466 6 2067 1961 1962 2069 2070 1963 6 2067 2068 2070 2071 2466 2469 6 2069 2068 1963 2071 2072 1965 6 2069 2070 2072 2073 2469 2470 6 2071 2070 1965 2073 2074 2075 6 2071 2072 2074 2473 2470 2086 6 2073 2072 2075 2076 2078 2086 6 2074 2072 1965 887 888 2076 6 2075 888 889 2077 2078 2074 6 2076 889 2078 2079 2080 2081 6 2076 2077 2079 2074 2086 2087 6 2078 2077 2080 2096 2087 2082 6 2079 2077 2081 898 901 2082 6 2080 2077 889 890 894 898 6 2080 901 903 2083 2096 2079 6 2082 903 2084 2096 2095 9776 6 2083 903 904 2085 6093 9776 6 2084 904 1565 1567 3766 6093 6 2074 2078 2087 2088 2473 2073 6 2086 2078 2088 2089 2096 2079 6 2086 2087 2089 2090 2091 2473 6 2088 2087 2090 2094 2095 2096 6 2088 2089 2091 2092 2093 2094 6 2088 2090 2092 2489 2472 2473 6 2091 2090 2093 2489 5947 5948 6 2092 2090 2094 3135 5947 3132 6 2093 2090 2089 2095 3131 3132 6 2094 2089 2096 3131 2083 9776 6 2095 2089 2087 2079 2082 2083 6 631 403 633 650 649 404 6 1795 1796 2099 2295 2296 2297 6 2098 1796 1797 2100 2297 2101 5 2099 1797 1300 1301 2101 6 2100 1301 1302 2102 2297 2099 6 2101 1302 1303 2103 2297 2298 6 2102 1303 1304 2104 2298 2299 6 2103 1304 1305 2105 2299 2300 6 2104 1305 1306 2106 2300 2301 7 2105 1306 1307 1798 2107 2301 2302 5 2106 1798 2108 2302 2303 6 2107 1798 1799 2109 2303 2304 6 2108 1799 1800 2110 2304 2305 6 2109 1800 1801 2111 2305 2306 6 2110 1801 1802 2112 2306 2307 6 2111 1802 1803 2113 2307 2308 6 2112 1803 1804 2114 2308 2309 6 2113 1804 1805 2115 2309 2310 6 2114 1805 1806 2116 2310 2311 6 2115 1806 1807 2117 2311 2312 6 2116 1807 1808 2118 2312 2313 6 2117 1808 1809 2119 2313 2314 6 2118 1809 1810 2120 2314 2315 6 2119 1810 1811 2121 2315 2316 6 2120 1811 1812 2122 2316 2317 6 2121 1812 1813 2123 2317 2318 6 2122 1813 1814 2124 2318 2319 6 2123 1814 1815 2125 2319 2320 6 2124 1815 1816 2126 2320 2321 6 2125 1816 1817 2127 2321 2322 6 2126 1817 1818 2128 2322 2323 6 2127 1818 1819 2129 2323 2324 6 2128 1819 1820 2130 2324 2325 6 2129 1820 1821 2131 2325 2326 6 2130 1821 1822 2132 2326 2327 6 2131 1822 1823 2133 2151 2327 6 2132 1823 1824 2134 2151 2152 6 2133 1824 1825 2135 2152 2153 6 2134 1825 1826 1827 2136 2153 6 2135 1827 2137 2153 2154 2155 6 2136 1827 1828 2138 2155 2156 6 2137 1828 1829 2139 2156 2157 6 2138 1829 1830 2140 2157 2158 6 2139 1830 2141 2146 2158 2159 6 2140 1830 1831 1832 2142 2146 6 2141 1832 1833 2143 2146 2147 6 2142 1833 1834 2144 2147 2148 6 2143 1834 1835 2145 2148 2149 6 2144 1835 1836 2149 2150 1837 6 2140 2141 2142 2147 2159 2160 6 2146 2142 2143 2148 2160 2161 6 2147 2143 2144 2149 2161 2162 6 2148 2144 2145 2150 2162 2163 6 2149 2145 1837 2163 2164 2165 6 2132 2133 2152 2327 2328 2329 6 2151 2133 2134 2153 2329 2330 6 2152 2134 2135 2136 2154 2330 6 2153 2136 2155 2330 2331 2332 6 2154 2136 2137 2156 2332 2333 6 2155 2137 2138 2157 2333 2334 6 2156 2138 2139 2158 2334 2335 6 2157 2139 2140 2159 2335 2336 6 2158 2140 2146 2160 2336 2337 6 2159 2146 2147 2161 2337 2338 6 2160 2147 2148 2162 2338 2339 6 2161 2148 2149 2163 2339 2340 6 2162 2149 2150 2164 2340 2341 6 2163 2150 2165 2341 2342 2343 6 2164 2150 1837 1838 2166 2343 6 2165 1838 1839 2167 2343 2344 6 2166 1839 1840 2168 2169 2344 6 2167 1840 2169 2170 2171 1841 6 2167 2168 2170 2344 2345 2346 6 2169 2168 2171 2346 2347 2348 6 2170 2168 1841 2348 2349 1842 6 1724 1725 2173 3468 3467 4747 6 2172 1725 2174 2804 3395 4747 6 2173 1725 1726 1727 2175 2804 6 2174 1727 1728 2176 2177 2804 6 2175 1728 2177 2178 1731 1729 6 2175 2176 2178 2804 2805 2806 6 2177 2176 1731 2806 2807 2808 6 27 28 2180 2181 3851 3852 6 2179 28 29 2181 2182 2503 6 2179 2180 2182 2183 2199 3851 6 2181 2180 2183 2184 2502 2503 6 2181 2182 2184 2185 2198 2199 6 2183 2182 2185 2186 2193 2502 6 2183 2184 2186 2187 2197 2198 6 2185 2184 2187 2188 2192 2193 6 2185 2186 2188 2189 2197 9713 6 2187 2186 2189 2190 2191 2192 7 2187 2188 2190 9709 9708 9712 9713 5 2189 2188 2191 9710 9709 6 2190 2188 2192 2510 2512 9710 6 2191 2188 2186 2193 2510 2506 6 2192 2186 2184 2502 2504 2506 6 415 39 40 2195 9704 6488 6 2194 40 41 2196 6488 9705 7 2195 41 42 9705 43 9771 9773 6 2185 2187 2198 9713 9714 9720 6 2185 2197 2183 2199 2200 9720 6 2183 2198 2200 2201 2181 3851 6 2199 2198 2201 2202 9720 2217 6 2199 2200 2202 2203 3129 3851 6 2201 2200 2203 2204 2217 2208 6 2201 2202 2204 2205 3129 3130 6 2203 2202 2205 2206 2207 2208 6 2203 2204 2206 3130 1525 4250 6 2205 2204 2207 3343 3341 4250 6 2206 2204 2208 2209 3343 3344 6 2207 2204 2209 2210 2217 2202 6 2207 2208 2210 2211 3344 3345 6 2209 2208 2211 2212 2216 2217 6 2209 2210 2212 2213 3348 3345 6 2211 2210 2213 2214 2215 2216 6 2211 2212 2214 6522 6523 3348 6 2213 2212 2215 9716 9719 6522 6 2214 2212 2216 9716 9715 9714 6 2215 2212 2210 2217 9714 9720 6 2216 2210 2208 2202 9720 2200 6 408 59 60 2219 2545 2546 6 2218 60 61 2220 2549 2546 6 2219 61 62 2221 2549 2551 6 2220 62 63 2222 2551 6702 6 2221 63 6701 6700 6702 64 6 1698 1703 2224 3418 3419 3420 6 2223 1703 1704 2225 3420 3421 6 2224 1704 2226 3421 3422 3426 6 2225 1704 1705 2227 3426 3427 6 2226 1705 1706 2228 3427 3428 6 2227 1706 2229 3428 3429 3430 6 2228 1706 1707 2230 2238 3430 6 2229 1707 2231 2232 2238 2239 6 2230 1707 2232 1712 1711 1708 6 2230 2231 1712 2239 2240 1713 6 1748 1749 2234 2235 2242 2752 6 2233 1749 2235 2236 2237 1750 6 2233 2234 2236 2242 2243 2244 6 2235 2234 2237 2244 2245 2246 6 2236 2234 1750 2246 2247 1751 6 2229 2230 2239 3430 3431 3435 6 2238 2230 2232 2240 3435 2561 6 2239 2232 1713 1714 2560 2561 6 1187 1188 1659 1657 3097 1184 6 2233 2235 2243 2752 2753 2754 6 2242 2235 2244 2754 2755 2756 6 2243 2235 2236 2245 2756 2757 6 2244 2236 2246 2757 2758 2759 6 2245 2236 2237 2247 2759 2760 6 2246 2237 1751 1752 2253 2760 6 34 35 2249 3331 3332 3333 6 2248 35 36 2250 3336 3333 6 2249 36 37 416 2251 3336 7 2250 416 2252 6490 6491 9706 3336 5 2251 416 415 6490 9704 6 2247 1752 1753 2254 2760 2761 6 2253 1753 1754 2255 2761 2762 6 2254 1754 1755 2256 2762 2763 6 2255 1755 1756 1757 2257 2763 6 2256 1757 2258 2763 2764 2765 6 2257 1757 1758 2259 2765 2766 6 2258 1758 1759 2260 2766 2767 6 2259 1759 1760 2261 2767 2768 6 2260 1760 1761 2262 2768 2769 6 2261 1761 1762 2263 2571 2769 6 2262 1762 1763 2264 2571 2572 6 2263 1763 1764 2265 2572 2573 6 2264 1764 1765 2266 2573 2574 6 2265 1765 1766 2267 2574 2575 6 2266 1766 1767 2268 2575 2576 6 2267 1767 1768 2269 2576 2577 6 2268 1768 1769 2270 2577 2578 6 2269 1769 1770 2271 2578 2579 6 2270 1770 1771 2272 2579 2580 6 2271 1771 1772 2273 2580 2581 6 2272 1772 1773 2274 2581 2582 6 2273 1773 1774 2275 2582 2583 6 2274 1774 1775 2276 2583 2584 6 2275 1775 1776 2277 2584 2585 6 2276 1776 1777 2278 2585 2586 6 2277 1777 1778 2279 2586 2587 6 2278 1778 1779 2280 2587 2588 6 2279 1779 1780 2281 2588 2589 6 2280 1780 1781 2282 2589 2590 6 2281 1781 1782 2283 2590 2591 6 2282 1782 1783 2284 2591 2592 6 2283 1783 1784 2285 2592 2593 6 2284 1784 1785 2286 2593 2594 6 2285 1785 1786 2287 2594 2595 6 2286 1786 1787 2288 2595 2596 6 2287 1787 1788 2289 2596 2597 6 2288 1788 1789 2290 2597 2598 6 2289 1789 1790 2291 2598 2599 6 2290 1790 1791 2292 2599 2600 6 2291 1791 1792 2293 2600 2601 6 2292 1792 1793 2294 2601 2602 6 2293 1793 1794 2295 2602 2603 6 2294 1794 1795 2098 2296 2603 6 2295 2098 2297 2603 2604 2605 7 2296 2098 2099 2101 2102 2298 2605 6 2297 2102 2103 2299 2605 2606 6 2298 2103 2104 2300 2606 2607 6 2299 2104 2105 2301 2607 2608 6 2300 2105 2106 2302 2608 2609 6 2301 2106 2107 2303 2609 2610 6 2302 2107 2108 2304 2610 2611 6 2303 2108 2109 2305 2611 2612 6 2304 2109 2110 2306 2612 2613 6 2305 2110 2111 2307 2613 2614 6 2306 2111 2112 2308 2614 2615 6 2307 2112 2113 2309 2615 2616 6 2308 2113 2114 2310 2619 2616 6 2309 2114 2115 2311 2619 2620 6 2310 2115 2116 2312 2620 2621 6 2311 2116 2117 2313 2621 2622 6 2312 2117 2118 2314 2622 2623 6 2313 2118 2119 2315 2623 2624 6 2314 2119 2120 2316 2624 2625 6 2315 2120 2121 2317 2625 2626 6 2316 2121 2122 2318 2626 2627 6 2317 2122 2123 2319 2627 2628 6 2318 2123 2124 2320 2628 2629 6 2319 2124 2125 2321 2629 2630 6 2320 2125 2126 2322 2630 2631 6 2321 2126 2127 2323 2631 2632 6 2322 2127 2128 2324 2632 2633 6 2323 2128 2129 2325 2633 2634 6 2324 2129 2130 2326 2634 2635 6 2325 2130 2131 2327 2635 2636 6 2326 2131 2132 2151 2328 2636 6 2327 2151 2329 2636 2637 2638 6 2328 2151 2152 2330 2641 2638 6 2329 2152 2153 2154 2331 2641 6 2330 2154 2332 2642 2641 2643 6 2331 2154 2155 2333 2643 2644 6 2332 2155 2156 2334 2644 2645 6 2333 2156 2157 2335 2645 2646 6 2334 2157 2158 2336 2646 2647 6 2335 2158 2159 2337 2647 2648 6 2336 2159 2160 2338 2648 2649 6 2337 2160 2161 2339 2649 2650 6 2338 2161 2162 2340 2650 2651 6 2339 2162 2163 2341 2651 2652 6 2340 2163 2164 2342 2652 2653 6 2341 2164 2343 2653 2654 2655 6 2342 2164 2165 2166 2344 2655 6 2343 2166 2167 2169 2345 2655 6 2344 2169 2346 2655 2656 2657 6 2345 2169 2170 2347 2657 2658 6 2346 2170 2348 2658 2659 2660 6 2347 2170 2171 2349 2660 2661 6 2348 2171 1842 1843 2350 2661 6 2349 1843 1844 2351 2661 2662 6 2350 1844 1845 2352 2662 2663 6 2351 1845 1846 2353 2663 2664 6 2352 1846 1847 2354 2664 2665 6 2353 1847 1848 2355 2665 2666 6 2354 1848 1849 2356 2666 2667 6 2355 1849 1850 2357 2667 2668 6 2356 1850 1851 2358 2668 2669 6 2357 1851 1852 2359 2669 2670 6 2358 1852 1853 2360 2670 2671 6 2359 1853 1854 2361 2671 2672 6 2360 1854 1855 1966 2362 2672 6 2361 1966 2363 2672 2673 2674 6 2362 1966 1967 2364 2674 2675 6 2363 1967 1968 2365 2675 2676 6 2364 1968 1969 2366 2676 2677 6 2365 1969 1970 2367 2677 2678 6 2366 1970 1971 2368 2678 2679 6 2367 1971 1972 2369 2679 2680 6 2368 1972 1973 2370 2680 2681 6 2369 1973 1974 2371 2681 2682 6 2370 1974 1975 2372 2682 2683 6 2371 1975 1976 2373 2683 2684 6 2372 1976 1977 2374 2684 2685 6 2373 1977 1978 2375 2685 2686 6 2374 1978 1979 2376 2686 2687 6 2375 1979 1980 2377 2687 2688 6 2376 1980 1981 2378 2688 2689 6 2377 1981 1982 2379 2689 2690 6 2378 1982 1983 2380 2690 2691 6 2379 1983 1984 2381 2691 2692 6 2380 1984 1985 2382 2692 2693 6 2381 1985 1986 2383 2693 2694 6 2382 1986 1987 2384 2694 2695 6 2383 1987 1988 2385 2695 2696 6 2384 1988 1989 2386 2696 2697 6 2385 1989 1990 2387 2697 2698 6 2386 1990 1991 2388 2698 2699 6 2387 1991 1992 2389 2699 2700 6 2388 1992 1993 2390 2700 2701 6 2389 1993 1994 2391 2701 2702 6 2390 1994 1995 2392 2702 2703 6 2391 1995 1996 2393 2703 2704 6 2392 1996 1997 2394 2704 2705 6 2393 1997 1998 2395 2705 2706 6 2394 1998 1999 2396 2706 2707 6 2395 1999 2000 2397 2707 2708 6 2396 2000 2001 2398 2708 2709 6 2397 2001 2002 2399 2513 2709 6 2398 2002 2003 2400 2513 2514 6 2399 2003 2004 2401 2514 2515 6 2400 2004 2005 2402 2515 2516 6 2401 2005 2006 2403 2516 2517 6 2402 2006 2007 2404 2517 2518 6 2403 2007 2008 2405 2518 2519 6 2404 2008 2009 2406 2519 2520 6 2405 2009 2010 2407 2520 2521 6 2406 2010 2011 2408 2521 2522 6 2407 2011 2012 2409 2522 2523 6 2408 2012 2013 2410 2523 2524 6 2409 2013 2014 2411 2524 2525 6 2410 2014 2015 2412 2525 2526 6 2411 2015 2016 2413 2526 2527 6 2412 2016 2017 2414 2527 2528 6 2413 2017 2018 2415 2528 2529 6 2414 2018 2019 2416 2529 2530 6 2415 2019 2020 2417 2530 2531 6 2416 2020 2021 2418 2531 2532 6 2417 2021 2022 2419 2532 2533 6 2418 2022 2023 2420 2533 2534 6 2419 2023 2024 2421 2534 2535 6 2420 2024 2025 2422 2535 2536 6 2421 2025 2026 2423 2536 2537 6 2422 2026 2027 2424 2537 2538 6 2423 2027 2028 2425 2538 2539 6 2424 2028 2029 2426 2539 2540 6 2425 2029 2030 2427 2540 2541 6 2426 2030 2031 2428 2541 2542 6 2427 2031 2032 2429 2542 2543 6 2428 2032 2033 2430 2543 2544 6 2429 2033 2034 2431 2544 2432 6 2430 2034 2035 2036 2037 2432 7 2431 2037 2038 2433 2544 2430 2556 6 2432 2038 2039 2434 2556 2557 6 2433 2039 2040 2435 2557 2558 6 2434 2040 2436 2558 2559 2437 5 2435 2040 2041 2042 2437 6 2436 2042 2438 2559 2435 2745 6 2437 2042 2043 2439 2745 2746 7 2438 2043 2044 2440 2746 2747 2748 6 2439 2044 2045 2046 2441 2748 6 2440 2046 2442 2748 2749 2750 6 2441 2046 2047 2443 2750 2445 6 2442 2047 2048 2049 2444 2445 6 2443 2049 2445 2446 2447 2448 6 2443 2444 2446 2750 2442 3060 6 2445 2444 2447 3060 3061 3062 6 2446 2444 2448 3062 3063 3064 6 2447 2444 2049 2050 2449 3064 6 2448 2050 2051 2450 3064 3065 6 2449 2051 2052 2451 3065 3066 6 2450 2052 2053 2452 3066 3067 6 2451 2053 2453 3067 3068 2454 6 2452 2053 2054 2055 2056 2454 6 2453 2056 2455 3068 2452 3074 6 2454 2056 2057 2456 3074 3075 6 2455 2057 2058 2059 2457 3075 6 2456 2059 2060 2458 3075 3076 6 2457 2060 2061 2459 3076 3077 6 2458 2061 2062 2460 3077 3078 6 2459 2062 2063 2461 3078 3079 6 2460 2063 2462 3079 3080 3081 6 2461 2063 2064 2463 3081 3082 6 2462 2064 2065 2464 3082 3083 6 2463 2065 2465 2467 2482 3083 6 2464 2065 2066 2067 2466 2467 6 2465 2067 2069 2467 2468 2469 6 2465 2466 2468 2464 2482 2483 6 2467 2466 2469 2471 2477 2483 6 2468 2466 2069 2071 2470 2471 6 2469 2071 2471 2472 2473 2073 6 2469 2470 2472 2468 2477 2478 6 2471 2470 2473 2489 2478 2091 6 2472 2470 2073 2091 2088 2086 6 1516 1521 914 915 576 1515 6 1578 1587 2476 1574 6361 1573 6 2475 1587 1589 6353 6359 6361 6 2468 2471 2478 2483 2484 2485 6 2477 2471 2485 2488 2489 2472 6 1642 1643 1644 2480 1641 2490 6 2479 1644 2481 2490 2494 2869 6 2480 1644 1645 1650 2494 2495 6 2464 2467 2483 3085 3083 3926 6 2482 2467 2468 2477 2484 3926 6 2483 2477 2485 2486 3926 3150 6 2484 2477 2478 2486 2487 2488 6 2484 2485 2487 3148 3149 3150 6 2486 2485 2488 3148 3967 3161 6 2487 2485 2478 2489 5948 3967 6 2488 2478 2472 2091 2092 5948 6 1641 2479 2480 2867 2868 2869 6 70 71 2492 3436 3437 3441 6 2491 71 72 409 2493 3436 6 2492 409 1606 3515 3436 3516 6 2480 2481 2495 2869 2870 2871 6 2494 2481 1650 1651 2496 2871 6 2495 1651 2497 2871 2872 2882 6 2496 1651 1652 2498 2882 2883 6 2497 1652 2499 2883 4092 4093 6 2498 1652 1653 2500 2809 4093 6 2499 1653 1654 2501 2809 2810 6 2500 1654 1656 2810 2811 2812 6 2184 2182 2503 2193 2504 2505 6 2502 2182 30 2505 29 2180 6 2193 2502 2505 2506 2507 2508 6 2504 2502 2508 31 30 2503 6 2193 2504 2507 2509 2510 2192 6 2506 2504 2508 2509 3330 3880 6 2507 2504 2505 31 3330 32 6 2506 2507 2510 2511 3880 3881 6 2506 2509 2511 2512 2191 2192 6 2510 2509 2512 6499 6498 3881 6 2510 2511 2191 6498 6500 9710 6 2398 2399 2514 2709 2710 2711 6 2513 2399 2400 2515 2711 2712 6 2514 2400 2401 2516 2712 2713 6 2515 2401 2402 2517 2713 2714 6 2516 2402 2403 2518 2714 2715 6 2517 2403 2404 2519 2715 2716 6 2518 2404 2405 2520 2716 2717 6 2519 2405 2406 2521 2717 2718 6 2520 2406 2407 2522 2718 2719 6 2521 2407 2408 2523 2719 2720 6 2522 2408 2409 2524 2720 2721 6 2523 2409 2410 2525 2721 2722 6 2524 2410 2411 2526 2722 2723 6 2525 2411 2412 2527 2723 2724 6 2526 2412 2413 2528 2724 2725 6 2527 2413 2414 2529 2725 2726 6 2528 2414 2415 2530 2726 2727 6 2529 2415 2416 2531 2727 2728 6 2530 2416 2417 2532 2728 2729 6 2531 2417 2418 2533 2729 2730 6 2532 2418 2419 2534 2730 2731 6 2533 2419 2420 2535 2731 2732 6 2534 2420 2421 2536 2732 2733 6 2535 2421 2422 2537 2733 2734 6 2536 2422 2423 2538 2734 2735 6 2537 2423 2424 2539 2735 2736 6 2538 2424 2425 2540 2736 2737 6 2539 2425 2426 2541 2552 2737 6 2540 2426 2427 2542 2552 2553 6 2541 2427 2428 2543 2553 2554 6 2542 2428 2429 2544 2554 2555 6 2543 2429 2430 2432 2555 2556 6 408 2218 2546 2547 2841 2842 6 2545 2218 2547 2548 2549 2219 6 2545 2546 2548 2842 2845 2846 6 2547 2546 2549 2550 2857 2846 6 2548 2546 2219 2220 2550 2551 6 2548 2549 2551 6691 2856 2857 7 2550 2549 2220 2221 6702 6690 6691 6 2540 2541 2553 2737 2738 2739 6 2552 2541 2542 2554 2739 2740 6 2553 2542 2543 2555 2570 2740 6 2554 2543 2544 2556 2570 2557 5 2555 2544 2432 2433 2557 7 2556 2433 2434 2558 2570 2555 2742 5 2557 2434 2435 2559 2742 7 2558 2435 2437 2742 2743 2744 2745 6 2240 1714 2561 2562 2563 2564 6 2240 2560 2562 3435 2239 3446 6 2561 2560 2563 3446 3447 3448 6 2562 2560 2564 3448 3449 2567 6 2563 2560 1714 1715 2565 2567 6 2564 1715 1716 1717 2566 2567 6 2565 1717 2567 2568 2569 1718 6 2565 2566 2568 3449 2563 2564 6 2567 2566 2569 3458 3455 3449 6 2568 2566 1718 3463 3458 1719 6 2554 2555 2557 2740 2741 2742 6 2262 2263 2572 2769 2770 2771 6 2571 2263 2264 2573 2771 2772 6 2572 2264 2265 2574 2772 2773 6 2573 2265 2266 2575 2773 2774 6 2574 2266 2267 2576 2774 2775 6 2575 2267 2268 2577 2775 2776 6 2576 2268 2269 2578 2776 2777 6 2577 2269 2270 2579 2777 2778 6 2578 2270 2271 2580 2778 2779 6 2579 2271 2272 2581 2779 2780 6 2580 2272 2273 2582 2780 2781 6 2581 2273 2274 2583 2781 2782 6 2582 2274 2275 2584 2782 2783 6 2583 2275 2276 2585 2783 2784 6 2584 2276 2277 2586 2784 2785 6 2585 2277 2278 2587 2785 2786 6 2586 2278 2279 2588 2786 2787 6 2587 2279 2280 2589 2787 2788 6 2588 2280 2281 2590 2788 2789 6 2589 2281 2282 2591 2789 2790 6 2590 2282 2283 2592 2790 2791 6 2591 2283 2284 2593 2791 2792 6 2592 2284 2285 2594 2792 2793 6 2593 2285 2286 2595 2793 2794 6 2594 2286 2287 2596 2794 2795 6 2595 2287 2288 2597 2795 2796 6 2596 2288 2289 2598 2796 2797 6 2597 2289 2290 2599 2797 2798 6 2598 2290 2291 2600 2798 2799 6 2599 2291 2292 2601 2799 2800 6 2600 2292 2293 2602 2800 2801 6 2601 2293 2294 2603 2801 2802 6 2602 2294 2295 2296 2604 2802 6 2603 2296 2605 2802 2803 2606 5 2604 2296 2297 2298 2606 7 2605 2298 2299 2607 2803 2604 2826 5 2606 2299 2300 2608 2826 7 2607 2300 2301 2609 2826 2827 2828 6 2608 2301 2302 2610 2828 2829 6 2609 2302 2303 2611 2829 2830 6 2610 2303 2304 2612 2830 2831 6 2611 2304 2305 2613 2831 2832 6 2612 2305 2306 2614 2832 2833 6 2613 2306 2307 2615 2833 2834 6 2614 2307 2308 2616 2617 2834 6 2615 2308 2617 2618 2619 2309 6 2615 2616 2618 2834 2835 2836 6 2617 2616 2619 2836 2837 2838 6 2618 2616 2309 2310 2620 2838 6 2619 2310 2311 2621 2840 2838 6 2620 2311 2312 2622 2959 2840 6 2621 2312 2313 2623 2959 2960 6 2622 2313 2314 2624 2960 2961 6 2623 2314 2315 2625 2961 2962 6 2624 2315 2316 2626 2962 2963 6 2625 2316 2317 2627 2966 2963 6 2626 2317 2318 2628 2966 2967 6 2627 2318 2319 2629 2967 2968 6 2628 2319 2320 2630 2968 2969 6 2629 2320 2321 2631 2969 2970 6 2630 2321 2322 2632 2970 2971 6 2631 2322 2323 2633 2971 2972 6 2632 2323 2324 2634 2972 2973 6 2633 2324 2325 2635 2973 2974 6 2634 2325 2326 2636 2974 2975 6 2635 2326 2327 2328 2637 2975 6 2636 2328 2638 2639 2975 2976 6 2637 2328 2639 2640 2641 2329 6 2637 2638 2640 2976 2977 2978 6 2639 2638 2641 2642 2978 2979 6 2640 2638 2642 2331 2330 2329 6 2640 2641 2331 2643 2979 2980 6 2642 2331 2332 2644 2980 2981 6 2643 2332 2333 2645 2981 2982 6 2644 2333 2334 2646 2982 2983 6 2645 2334 2335 2647 2983 2984 6 2646 2335 2336 2648 2984 2985 6 2647 2336 2337 2649 2985 2986 6 2648 2337 2338 2650 2986 2987 6 2649 2338 2339 2651 2987 2988 6 2650 2339 2340 2652 2988 2989 6 2651 2340 2341 2653 2989 2990 6 2652 2341 2342 2654 2990 2991 6 2653 2342 2655 2991 2992 2656 6 2654 2342 2343 2344 2345 2656 6 2655 2345 2657 2992 2654 2993 6 2656 2345 2346 2658 2993 2994 6 2657 2346 2347 2659 2994 2995 6 2658 2347 2660 2995 2996 2997 6 2659 2347 2348 2661 2997 2998 6 2660 2348 2349 2350 2662 2998 6 2661 2350 2351 2663 2998 2999 6 2662 2351 2352 2664 2999 3000 6 2663 2352 2353 2665 3000 3001 6 2664 2353 2354 2666 3001 3002 6 2665 2354 2355 2667 3002 3565 6 2666 2355 2356 2668 3565 3566 6 2667 2356 2357 2669 3566 3567 6 2668 2357 2358 2670 3567 3568 6 2669 2358 2359 2671 3568 3569 6 2670 2359 2360 2672 3569 3570 6 2671 2360 2361 2362 2673 3570 6 2672 2362 2674 3570 3571 3572 6 2673 2362 2363 2675 3572 3573 6 2674 2363 2364 2676 3391 3573 6 2675 2364 2365 2677 3391 3392 6 2676 2365 2366 2678 3392 3393 6 2677 2366 2367 2679 3393 3394 6 2678 2367 2368 2680 3394 3579 6 2679 2368 2369 2681 3579 3580 6 2680 2369 2370 2682 3580 3581 6 2681 2370 2371 2683 3581 3582 6 2682 2371 2372 2684 3582 3583 6 2683 2372 2373 2685 3583 3584 6 2684 2373 2374 2686 3584 3585 6 2685 2374 2375 2687 3585 3586 6 2686 2375 2376 2688 3586 3587 6 2687 2376 2377 2689 3587 3588 6 2688 2377 2378 2690 3278 3588 6 2689 2378 2379 2691 3278 3279 6 2690 2379 2380 2692 3279 3280 6 2691 2380 2381 2693 3280 3281 6 2692 2381 2382 2694 3281 3282 6 2693 2382 2383 2695 3282 3283 6 2694 2383 2384 2696 3283 3284 6 2695 2384 2385 2697 3284 3285 6 2696 2385 2386 2698 3285 3286 6 2697 2386 2387 2699 3286 3287 6 2698 2387 2388 2700 3287 3288 6 2699 2388 2389 2701 3288 3289 6 2700 2389 2390 2702 3289 3290 6 2701 2390 2391 2703 3003 3290 6 2702 2391 2392 2704 3003 3004 6 2703 2392 2393 2705 3004 3005 6 2704 2393 2394 2706 3005 3006 6 2705 2394 2395 2707 3006 3007 6 2706 2395 2396 2708 3007 3008 6 2707 2396 2397 2709 3008 3009 6 2708 2397 2398 2513 2710 3009 6 2709 2513 2711 3009 3010 3011 6 2710 2513 2514 2712 3011 3012 6 2711 2514 2515 2713 3012 3013 6 2712 2515 2516 2714 3013 3014 6 2713 2516 2517 2715 3014 3015 6 2714 2517 2518 2716 3015 3016 6 2715 2518 2519 2717 3016 3017 6 2716 2519 2520 2718 3017 3018 6 2717 2520 2521 2719 3018 3019 6 2718 2521 2522 2720 3019 3020 6 2719 2522 2523 2721 3020 3021 6 2720 2523 2524 2722 3021 3022 6 2721 2524 2525 2723 3022 3023 6 2722 2525 2526 2724 3023 3024 6 2723 2526 2527 2725 3024 3025 6 2724 2527 2528 2726 3025 3026 6 2725 2528 2529 2727 3026 3027 6 2726 2529 2530 2728 3027 3028 6 2727 2530 2531 2729 3028 3029 6 2728 2531 2532 2730 3029 3030 6 2729 2532 2533 2731 3030 3031 6 2730 2533 2534 2732 3031 3032 6 2731 2534 2535 2733 3032 3033 6 2732 2535 2536 2734 3033 3034 6 2733 2536 2537 2735 3034 3035 6 2734 2537 2538 2736 3035 3036 6 2735 2538 2539 2737 3036 3037 6 2736 2539 2540 2552 2738 3037 6 2737 2552 2739 3037 3038 3039 6 2738 2552 2553 2740 3039 3040 6 2739 2553 2554 2570 2741 3040 6 2740 2570 2742 3040 3041 2743 6 2741 2570 2557 2558 2559 2743 6 2742 2559 2744 3041 2741 3049 5 2743 2559 2745 3049 3050 6 2744 2559 2437 2438 2746 3050 6 2745 2438 2439 2747 3050 3051 6 2746 2439 2748 3051 3052 2749 5 2747 2439 2440 2441 2749 6 2748 2441 2750 3052 2747 3058 7 2749 2441 2442 2445 3058 3059 3060 6 1746 1747 1748 2752 2893 2894 6 2751 1748 2233 2242 2753 2894 6 2752 2242 2754 2894 2895 2896 6 2753 2242 2243 2755 2896 2897 6 2754 2243 2756 2897 2898 2899 6 2755 2243 2244 2757 2899 2900 6 2756 2244 2245 2758 2900 2901 6 2757 2245 2759 2901 2902 2903 6 2758 2245 2246 2760 2903 2904 6 2759 2246 2247 2253 2761 2904 6 2760 2253 2254 2762 2904 2905 6 2761 2254 2255 2763 2905 2906 6 2762 2255 2256 2257 2764 2906 6 2763 2257 2765 2906 2907 2908 6 2764 2257 2258 2766 2908 2909 6 2765 2258 2259 2767 2909 2910 6 2766 2259 2260 2768 2910 2911 6 2767 2260 2261 2769 2911 2912 6 2768 2261 2262 2571 2770 2912 6 2769 2571 2771 2912 2913 2914 6 2770 2571 2572 2772 2914 2915 6 2771 2572 2573 2773 2915 2916 6 2772 2573 2574 2774 2916 2917 6 2773 2574 2575 2775 2917 2918 6 2774 2575 2576 2776 2918 2919 6 2775 2576 2577 2777 2919 2920 6 2776 2577 2578 2778 2920 2921 6 2777 2578 2579 2779 2921 2922 6 2778 2579 2580 2780 2922 2923 6 2779 2580 2581 2781 2923 2924 6 2780 2581 2582 2782 2924 2925 6 2781 2582 2583 2783 2925 2926 6 2782 2583 2584 2784 2926 2927 6 2783 2584 2585 2785 2927 2928 6 2784 2585 2586 2786 2928 2929 6 2785 2586 2587 2787 2929 2930 6 2786 2587 2588 2788 2930 2931 6 2787 2588 2589 2789 2931 2932 6 2788 2589 2590 2790 2932 2933 6 2789 2590 2591 2791 2933 2934 6 2790 2591 2592 2792 2934 2935 6 2791 2592 2593 2793 2935 2936 6 2792 2593 2594 2794 2936 2937 6 2793 2594 2595 2795 2937 2938 6 2794 2595 2596 2796 2938 2939 6 2795 2596 2597 2797 2939 2940 6 2796 2597 2598 2798 2940 2941 6 2797 2598 2599 2799 2941 2942 6 2798 2599 2600 2800 2942 2943 6 2799 2600 2601 2801 2943 2944 6 2800 2601 2602 2802 2944 2824 6 2801 2602 2603 2604 2803 2824 6 2802 2604 2606 2824 2825 2826 6 2173 2174 2175 2177 2805 3395 6 2804 2177 2806 3395 3396 3400 6 2805 2177 2178 2807 3400 3401 6 2806 2178 2808 3401 3402 3403 6 2807 2178 1731 3403 3404 1732 6 2499 2500 2810 4095 4093 4388 6 2809 2500 2501 2811 4388 2813 6 2810 2501 2812 1664 1666 2813 6 2811 2501 1656 1658 1661 1664 6 2811 1666 2814 3139 4388 2810 6 2813 1666 1667 2815 2817 3139 6 2814 1667 2816 2817 2818 2819 6 2815 1667 1668 2819 2820 2821 6 2814 2815 2818 3139 3140 3141 6 2817 2815 2819 3141 3142 3143 6 2818 2815 2816 2820 3143 3144 6 2819 2816 2821 3144 3145 3146 6 2820 2816 1668 2822 2823 3146 6 2821 1668 2823 1672 1671 1669 6 2821 2822 1672 3146 3147 1673 6 2802 2803 2825 2944 2801 2945 6 2824 2803 2826 2945 2946 2827 6 2825 2803 2606 2607 2608 2827 6 2826 2608 2828 2946 2825 2947 5 2827 2608 2609 2829 2947 6 2828 2609 2610 2830 2947 2948 6 2829 2610 2611 2831 2948 2949 6 2830 2611 2612 2832 2949 2950 6 2831 2612 2613 2833 2950 2951 6 2832 2613 2614 2834 2951 2952 7 2833 2614 2615 2617 2835 2952 2953 5 2834 2617 2836 2953 2954 6 2835 2617 2618 2837 2954 2955 6 2836 2618 2838 2839 2955 2956 6 2837 2618 2839 2840 2620 2619 6 2837 2838 2840 2956 2957 2958 6 2839 2838 2620 2958 2959 2621 6 408 2545 2842 2843 9690 429 6 2841 2545 2843 2844 2547 2845 6 2841 2842 2844 3168 9688 9690 6 2843 2842 3168 3165 3162 2845 6 2842 2547 2846 2847 3162 2844 6 2845 2547 2847 2848 2548 2857 6 2845 2846 2848 2849 3162 3163 6 2847 2846 2849 2850 2851 2857 6 2847 2848 2850 2852 2858 3163 6 2849 2848 2851 2852 2853 2854 6 2850 2848 2854 2855 2856 2857 6 2849 2850 2853 2858 2859 2860 5 2852 2850 2854 2860 6676 7 2853 2850 2851 2855 6676 6677 6678 7 2854 2851 2856 6689 6686 6680 6678 6 2855 2851 2857 6691 6689 2550 6 2856 2851 2848 2550 2548 2846 6 2849 2852 2859 3180 3163 6661 7 2858 2852 2860 6661 6674 6666 6662 6 2859 2852 2853 6675 6674 6676 5 1631 1633 1628 1629 1630 6 1628 1633 1636 2863 1627 7215 7 2862 1636 1637 2864 7216 7215 7217 5 2863 1637 1638 2865 7217 7 2864 1638 1639 2866 7217 7218 7219 7 2865 1639 1640 2867 3189 3214 7219 6 2866 1640 1641 2490 2868 3189 6 2867 2490 2869 3189 3190 3181 6 2868 2490 2480 2494 2870 3181 6 2869 2494 2871 2873 2884 3181 6 2870 2494 2495 2496 2872 2873 6 2871 2496 2873 2874 2881 2882 6 2871 2872 2874 2875 2870 2884 6 2873 2872 2875 2876 2880 2881 6 2873 2874 2876 2877 2884 2885 6 2875 2874 2877 2878 2879 2880 6 2875 2876 2878 2885 2886 2887 6 2877 2876 2879 2887 2888 2889 6 2878 2876 2880 2892 2889 7600 6 2879 2876 2874 2881 4086 7600 6 2880 2874 2872 2882 4086 4087 6 2881 2872 2496 2497 2883 4087 6 2882 2497 2498 4087 4088 4092 6 2870 2873 2875 2885 3181 3182 6 2884 2875 2877 2886 3182 3183 6 2885 2877 2887 3183 3184 3185 6 2886 2877 2878 2888 3188 3185 6 2887 2878 2889 2890 3959 3188 6 2888 2878 2890 2891 2892 2879 6 2888 2889 2891 3961 3959 7592 6 2890 2889 2892 7592 7593 7594 6 2891 2889 2879 7600 7597 7594 6 1745 1746 2751 2894 3199 3198 6 2893 2751 2752 2753 2895 3198 6 2894 2753 2896 3198 3200 3201 6 2895 2753 2754 2897 3201 3202 6 2896 2754 2755 2898 3202 3203 6 2897 2755 2899 3203 3204 3205 6 2898 2755 2756 2900 3205 3206 6 2899 2756 2757 2901 3206 3207 6 2900 2757 2758 2902 3207 3208 6 2901 2758 2903 3208 3209 3210 6 2902 2758 2759 2904 3213 3210 6 2903 2759 2760 2761 2905 3213 6 2904 2761 2762 2906 3483 3213 6 2905 2762 2763 2764 2907 3483 6 2906 2764 2908 3482 3212 3483 7 2907 2764 2765 2909 3500 3482 3697 6 2908 2765 2766 2910 3697 3698 6 2909 2766 2767 2911 3698 3699 6 2910 2767 2768 2912 3699 3700 6 2911 2768 2769 2770 2913 3700 6 2912 2770 2914 3700 3701 3702 6 2913 2770 2771 2915 3702 3703 6 2914 2771 2772 2916 3703 3704 6 2915 2772 2773 2917 3704 3705 6 2916 2773 2774 2918 3705 3706 6 2917 2774 2775 2919 3706 3707 6 2918 2775 2776 2920 3707 3708 6 2919 2776 2777 2921 3708 3709 6 2920 2777 2778 2922 3709 3710 6 2921 2778 2779 2923 3710 3711 6 2922 2779 2780 2924 3711 3712 6 2923 2780 2781 2925 3712 3713 6 2924 2781 2782 2926 3713 3714 6 2925 2782 2783 2927 3714 3715 6 2926 2783 2784 2928 3715 3716 6 2927 2784 2785 2929 3716 3717 6 2928 2785 2786 2930 3717 3718 6 2929 2786 2787 2931 3718 3719 6 2930 2787 2788 2932 3719 3720 6 2931 2788 2789 2933 3720 3721 6 2932 2789 2790 2934 3721 3722 6 2933 2790 2791 2935 3722 3723 6 2934 2791 2792 2936 3723 3724 6 2935 2792 2793 2937 3724 3725 6 2936 2793 2794 2938 3725 3726 6 2937 2794 2795 2939 3726 3727 6 2938 2795 2796 2940 3727 3728 6 2939 2796 2797 2941 3728 3729 6 2940 2797 2798 2942 3729 3730 6 2941 2798 2799 2943 3730 3731 6 2942 2799 2800 2944 3731 3732 6 2943 2800 2801 2824 2945 3732 6 2944 2824 2825 2946 3732 3733 6 2945 2825 2827 2947 3733 3734 6 2946 2827 2828 2829 2948 3734 7 2947 2829 2830 2949 3734 3735 3736 6 2948 2830 2831 2950 3242 3736 6 2949 2831 2832 2951 3242 3243 6 2950 2832 2833 2952 3243 3244 6 2951 2833 2834 2953 3244 3245 5 2952 2834 2835 2954 3245 7 2953 2835 2836 2955 3245 3246 3247 6 2954 2836 2837 2956 3247 3248 6 2955 2837 2839 2957 3248 3249 6 2956 2839 2958 3249 3250 3251 6 2957 2839 2840 2959 3251 3252 6 2958 2840 2621 2622 2960 3252 6 2959 2622 2623 2961 3254 3252 6 2960 2623 2624 2962 3254 3255 6 2961 2624 2625 2963 2964 3255 6 2962 2625 2964 2965 2966 2626 6 2962 2963 2965 3255 3256 3257 6 2964 2963 2966 3257 3258 3259 6 2965 2963 2626 2627 2967 3259 6 2966 2627 2628 2968 3259 3260 6 2967 2628 2629 2969 3260 3261 6 2968 2629 2630 2970 3261 3262 6 2969 2630 2631 2971 3262 3263 6 2970 2631 2632 2972 3263 3264 6 2971 2632 2633 2973 3264 3265 6 2972 2633 2634 2974 3265 3266 6 2973 2634 2635 2975 3266 3267 6 2974 2635 2636 2637 2976 3267 6 2975 2637 2639 2977 3267 3268 6 2976 2639 2978 3268 3269 3270 6 2977 2639 2640 2979 3270 3271 6 2978 2640 2642 2980 3271 3272 6 2979 2642 2643 2981 3272 3273 6 2980 2643 2644 2982 3273 3274 6 2981 2644 2645 2983 3274 3275 6 2982 2645 2646 2984 3275 3276 6 2983 2646 2647 2985 3276 3277 6 2984 2647 2648 2986 3277 3824 6 2985 2648 2649 2987 3545 3824 6 2986 2649 2650 2988 3545 3546 6 2987 2650 2651 2989 3546 3547 6 2988 2651 2652 2990 3547 3548 6 2989 2652 2653 2991 3548 3549 6 2990 2653 2654 2992 3549 3550 6 2991 2654 2656 2993 3550 3551 6 2992 2656 2657 2994 3551 3552 6 2993 2657 2658 2995 3552 3553 6 2994 2658 2659 2996 3553 3554 6 2995 2659 2997 3554 3555 3556 6 2996 2659 2660 2998 3556 3557 6 2997 2660 2661 2662 2999 3557 6 2998 2662 2663 3000 3557 3558 6 2999 2663 2664 3001 3558 3559 6 3000 2664 2665 3002 3559 3560 6 3001 2665 2666 3560 3561 3565 6 2702 2703 3004 3290 3291 3292 6 3003 2703 2704 3005 3292 3293 6 3004 2704 2705 3006 3293 3294 6 3005 2705 2706 3007 3294 3295 6 3006 2706 2707 3008 3295 3296 6 3007 2707 2708 3009 3296 3297 6 3008 2708 2709 2710 3010 3297 6 3009 2710 3011 3297 3298 3299 6 3010 2710 2711 3012 3299 3300 6 3011 2711 2712 3013 3300 3301 6 3012 2712 2713 3014 3301 3302 6 3013 2713 2714 3015 3302 3303 6 3014 2714 2715 3016 3303 3304 6 3015 2715 2716 3017 3304 3305 6 3016 2716 2717 3018 3305 3306 6 3017 2717 2718 3019 3306 3307 6 3018 2718 2719 3020 3307 3308 6 3019 2719 2720 3021 3308 3309 6 3020 2720 2721 3022 3309 3310 6 3021 2721 2722 3023 3310 3311 6 3022 2722 2723 3024 3311 3312 6 3023 2723 2724 3025 3312 3313 6 3024 2724 2725 3026 3313 3314 6 3025 2725 2726 3027 3314 3315 6 3026 2726 2727 3028 3315 3316 6 3027 2727 2728 3029 3316 3317 6 3028 2728 2729 3030 3317 3318 6 3029 2729 2730 3031 3318 3319 6 3030 2730 2731 3032 3319 3320 6 3031 2731 2732 3033 3320 3321 6 3032 2732 2733 3034 3321 3322 6 3033 2733 2734 3035 3042 3322 6 3034 2734 2735 3036 3042 3043 6 3035 2735 2736 3037 3043 3044 6 3036 2736 2737 2738 3038 3044 6 3037 2738 3039 3044 3045 3046 6 3038 2738 2739 3040 3046 3047 6 3039 2739 2740 2741 3041 3047 6 3040 2741 2743 3047 3048 3049 6 3034 3035 3043 3322 3323 3324 6 3042 3035 3036 3044 3324 3325 6 3043 3036 3037 3038 3045 3325 6 3044 3038 3046 3325 3326 3327 6 3045 3038 3039 3047 3053 3327 6 3046 3039 3040 3041 3048 3053 6 3047 3041 3049 3053 3054 3055 6 3048 3041 2743 2744 3050 3055 6 3049 2744 2745 2746 3051 3055 6 3050 2746 2747 3052 3055 3056 6 3051 2747 2749 3056 3057 3058 6 3046 3047 3048 3054 3327 3328 6 3053 3048 3055 3328 3329 3056 6 3054 3048 3049 3050 3051 3056 7 3055 3051 3052 3057 3329 3054 3641 5 3056 3052 3058 3641 3642 7 3057 3052 2749 2750 3059 3642 3643 6 3058 2750 3060 3643 3644 3061 5 3059 2750 2445 2446 3061 6 3060 2446 3062 3644 3059 3910 6 3061 2446 2447 3063 3910 3911 6 3062 2447 3064 3069 3911 3912 6 3063 2447 2448 2449 3065 3069 6 3064 2449 2450 3066 3069 3070 6 3065 2450 2451 3067 3070 3071 6 3066 2451 2452 3068 3071 3072 6 3067 2452 2454 3072 3073 3074 6 3063 3064 3065 3070 3912 3913 6 3069 3065 3066 3071 3913 3914 6 3070 3066 3067 3072 3914 3915 6 3071 3067 3068 3073 3915 3916 6 3072 3068 3074 3916 3917 3918 6 3073 3068 2454 2455 3075 3918 6 3074 2455 2456 2457 3076 3918 6 3075 2457 2458 3077 3349 3918 6 3076 2458 2459 3078 3349 3350 6 3077 2459 2460 3079 3107 3350 6 3078 2460 2461 3080 3107 3108 6 3079 2461 3081 3091 3108 3109 6 3080 2461 2462 3082 3091 3092 6 3081 2462 2463 3083 3084 3092 6 3082 2463 3084 3085 2482 2464 6 3082 3083 3085 3092 3112 3359 6 3084 3083 2482 3926 3152 3359 6 16 17 3087 3088 3089 3090 6 3086 17 18 3095 3126 3090 6 16 3086 3089 3098 417 15 6 3088 3086 3090 3098 3103 3104 6 3089 3086 3104 3105 3087 3126 6 3080 3081 3092 3109 3110 3111 6 3091 3081 3082 3084 3111 3112 5 1615 1616 3094 4099 3544 6 3093 1616 1617 4367 4099 1624 6 3087 18 19 3096 3125 3126 6 3095 19 20 3125 3128 414 6 2241 1657 1655 1647 1182 1184 6 3088 3089 417 3099 3102 3103 6 417 3098 418 3100 3101 3102 6 418 3099 3101 3228 3229 3684 6 3100 3099 3102 3226 3228 3498 7 3101 3099 3098 3103 3113 3498 3497 6 3102 3098 3089 3104 3113 3114 6 3103 3089 3090 3105 3106 3114 6 3104 3090 3106 3126 3124 3118 6 3104 3105 3116 3114 3117 3118 6 3078 3079 3108 3350 3351 3352 6 3107 3079 3080 3109 3352 3353 6 3108 3080 3091 3110 3353 3354 6 3109 3091 3111 3354 3355 3356 6 3110 3091 3092 3112 3356 3357 6 3111 3092 3084 3357 3358 3359 5 3102 3103 3114 3115 3497 6 3113 3103 3115 3116 3106 3104 7 3113 3114 3116 3497 3504 3501 3495 6 3115 3114 3106 3117 6712 3504 6 3116 3106 3118 3119 6712 6711 6 3117 3106 3119 3120 3124 3105 6 3117 3118 3120 3121 6711 6713 6 3119 3118 3121 3122 3123 3124 6 3119 3120 3122 3884 3887 6713 6 3121 3120 3123 3127 3883 3884 6 3122 3120 3124 3125 3127 3128 6 3123 3120 3118 3125 3126 3105 6 3123 3124 3126 3128 3095 3096 6 3125 3124 3105 3095 3087 3090 6 3122 3123 3128 3882 3339 3883 6 3127 3123 3125 414 3882 3096 6 2201 2203 3130 3851 3852 9781 6 3129 2203 2205 1525 1526 9781 6 2094 2095 3132 3133 9776 3138 6 2094 3131 3133 3134 3135 2093 6 3132 3131 3134 3136 3137 3138 6 3132 3133 3135 3136 5946 5945 6 3132 3134 5945 5943 5947 2093 6 3134 3133 3137 6090 6091 5946 6 3136 3133 3138 6090 6089 6092 6 3137 3133 6092 6093 9776 3131 6 2813 2814 2817 3140 4388 4386 6 3139 2817 3141 4385 4384 4386 6 3140 2817 2818 3142 4390 4385 6 3141 2818 3143 7767 4390 7768 6 3142 2818 2819 3144 7774 7768 6 3143 2819 2820 3145 7774 7775 6 3144 2820 3146 4231 7775 9791 6 3145 2820 2821 2823 3147 4231 6 3146 2823 1673 1674 3412 4231 6 2486 2487 3149 3156 3157 3161 6 2486 3148 3150 3151 3155 3156 6 2486 3149 3151 3152 3926 2484 6 3150 3149 3152 3153 3154 3155 6 3150 3151 3153 3926 3085 3359 6 3152 3151 3154 3358 3359 3360 6 3153 3151 3155 3360 3361 3362 6 3154 3151 3149 3156 3677 3362 6 3155 3149 3148 3157 3158 3677 6 3156 3148 3158 3159 3160 3161 6 3156 3157 3159 3676 3677 3945 6 3158 3157 3160 3945 3946 3962 6 3159 3157 3161 3962 3963 3964 6 3160 3157 3148 3967 3964 2487 6 2845 2847 3163 3164 3165 2844 6 3162 2847 3164 3180 2858 2849 6 3162 3163 3165 3166 3177 3180 6 3162 3164 3166 3167 3168 2844 6 3165 3164 3167 3177 3174 3171 6 3165 3166 3168 3169 3170 3171 6 3165 3167 3169 2843 2844 9688 6 3168 3167 3170 9687 9686 9688 5 3169 3167 3171 3172 9687 6 3170 3167 3172 3173 3174 3166 6 3170 3171 3173 9691 9687 6653 7 3172 3171 3174 3175 6654 6652 6653 6 3173 3171 3175 3176 3177 3166 5 3173 3174 3176 3450 6654 6 3175 3174 3177 3178 3179 3450 6 3176 3174 3178 3166 3164 3180 6 3176 3177 3179 3180 6660 6661 6 3176 3178 3450 6657 6659 6660 6 3177 3164 3178 3163 2858 6661 6 2869 2870 2884 3182 3190 2868 6 3181 2884 2885 3183 3216 3190 6 3182 2885 2886 3184 3193 3216 6 3183 2886 3185 3186 3192 3193 6 3184 2886 3186 3187 3188 2887 6 3184 3185 3187 3192 3196 7584 6 3186 3185 3188 3958 7586 7584 6 3187 3185 2887 3958 3959 2888 6 2867 2868 3190 2866 3214 3215 6 3189 2868 3181 3215 3216 3182 6 1741 1742 1744 3197 3198 3199 6 3184 3186 3193 3194 3195 3196 6 3184 3192 3194 7222 3216 3183 7 3193 3192 3195 7222 7221 7204 7203 6 3194 3192 3196 7196 7197 7203 6 3195 3192 3186 7583 7196 7584 6 1740 1741 3191 3198 3411 3200 7 3197 3191 3199 2893 2894 2895 3200 5 3198 3191 1744 1745 2893 6 3198 2895 3201 3411 3197 9751 6 3200 2895 2896 3202 3470 9751 6 3201 2896 2897 3203 3470 3471 6 3202 2897 2898 3204 3471 3472 6 3203 2898 3205 3472 3473 3474 6 3204 2898 2899 3206 3474 3475 6 3205 2899 2900 3207 3475 3476 6 3206 2900 2901 3208 3476 3477 6 3207 2901 2902 3209 3477 3478 6 3208 2902 3210 3211 3478 3479 6 3209 2902 3211 3212 3213 2903 6 3209 3210 3212 3479 3480 3481 7 3211 3210 3213 3481 3482 2907 3483 6 3212 3210 2903 3483 2905 2904 6 2866 3189 3215 7220 7219 7221 6 3214 3189 3190 3216 7221 7222 6 3215 3190 3182 7222 3193 3183 6 635 636 3218 4040 3763 3762 6 3217 636 638 3219 3484 4040 6 3218 638 3220 3221 3222 3484 6 3219 638 639 3221 3240 3241 6 3219 3220 3222 3223 3224 3241 6 3219 3221 3223 3484 3485 3486 6 3222 3221 3224 3225 3486 3487 6 3223 3221 3225 3226 3227 3241 6 3223 3224 3226 3493 3487 3494 7 3225 3224 3227 3228 3101 3494 3498 6 3226 3224 3228 3229 3230 3241 5 3226 3227 3101 3100 3229 6 3100 3228 3227 3230 3231 3684 6 3229 3227 3231 3232 3241 3240 6 3229 3230 3232 3233 3234 3684 6 3231 3230 3233 3240 3239 3236 7 3231 3232 3234 11 10 3235 3236 5 3231 3233 11 3684 12 6 10 3233 3236 3237 3238 9 6 3235 3233 3237 643 3239 3232 6 3235 3236 3238 647 644 643 5 3235 3237 9 8 647 6 643 3236 640 639 3240 3232 6 639 3239 3220 3241 3230 3232 6 3220 3240 3221 3224 3227 3230 6 2949 2950 3243 3736 3737 3738 6 3242 2950 2951 3244 3738 3739 6 3243 2951 2952 3245 3739 3740 7 3244 2952 2953 2954 3246 3740 3741 5 3245 2954 3247 3741 3742 6 3246 2954 2955 3248 3742 3743 6 3247 2955 2956 3249 3743 3744 6 3248 2956 2957 3250 3744 3745 6 3249 2957 3251 3745 3746 3747 6 3250 2957 2958 3252 3253 3747 6 3251 2958 3253 3254 2960 2959 6 3251 3252 3254 3747 3748 3749 6 3253 3252 2960 2961 3255 3749 6 3254 2961 2962 2964 3256 3749 6 3255 2964 3257 3749 3750 3751 6 3256 2964 2965 3258 3751 3752 6 3257 2965 3259 3752 3753 3754 6 3258 2965 2966 2967 3260 3754 6 3259 2967 2968 3261 3754 3755 6 3260 2968 2969 3262 3755 3756 6 3261 2969 2970 3263 3756 3757 6 3262 2970 2971 3264 3757 3758 6 3263 2971 2972 3265 3758 3759 7 3264 2972 2973 3266 3759 4054 4051 5 3265 2973 2974 3267 4054 6 3266 2974 2975 2976 3268 4054 7 3267 2976 2977 3269 4054 4053 4055 5 3268 2977 3270 4055 4056 6 3269 2977 2978 3271 4056 4057 6 3270 2978 2979 3272 4057 4058 6 3271 2979 2980 3273 4058 4059 6 3272 2980 2981 3274 4059 4060 6 3273 2981 2982 3275 4060 4061 6 3274 2982 2983 3276 4064 4061 6 3275 2983 2984 3277 4064 4065 6 3276 2984 2985 3826 4065 3824 6 2689 2690 3279 3588 3589 3590 6 3278 2690 2691 3280 3590 3591 6 3279 2691 2692 3281 3591 3592 6 3280 2692 2693 3282 3592 3593 6 3281 2693 2694 3283 3593 3594 6 3282 2694 2695 3284 3594 3595 6 3283 2695 2696 3285 3595 3596 6 3284 2696 2697 3286 3596 3597 6 3285 2697 2698 3287 3597 3598 6 3286 2698 2699 3288 3598 3599 6 3287 2699 2700 3289 3599 3600 6 3288 2700 2701 3290 3600 3601 6 3289 2701 2702 3003 3291 3601 6 3290 3003 3292 3601 3602 3603 6 3291 3003 3004 3293 3603 3604 6 3292 3004 3005 3294 3604 3605 6 3293 3005 3006 3295 3605 3606 6 3294 3006 3007 3296 3606 3607 6 3295 3007 3008 3297 3607 3608 6 3296 3008 3009 3010 3298 3608 6 3297 3010 3299 3608 3609 3610 6 3298 3010 3011 3300 3610 3611 6 3299 3011 3012 3301 3611 3612 6 3300 3012 3013 3302 3612 3613 6 3301 3013 3014 3303 3613 3614 6 3302 3014 3015 3304 3614 3615 6 3303 3015 3016 3305 3615 3616 6 3304 3016 3017 3306 3616 3617 6 3305 3017 3018 3307 3617 3618 6 3306 3018 3019 3308 3618 3619 6 3307 3019 3020 3309 3619 3620 6 3308 3020 3021 3310 3620 3621 6 3309 3021 3022 3311 3621 3622 6 3310 3022 3023 3312 3622 3623 6 3311 3023 3024 3313 3623 3624 6 3312 3024 3025 3314 3624 3625 6 3313 3025 3026 3315 3625 3626 6 3314 3026 3027 3316 3626 3627 6 3315 3027 3028 3317 3627 3628 6 3316 3028 3029 3318 3628 3629 6 3317 3029 3030 3319 3629 3630 6 3318 3030 3031 3320 3630 3631 6 3319 3031 3032 3321 3631 3632 6 3320 3032 3033 3322 3632 3633 6 3321 3033 3034 3042 3323 3633 6 3322 3042 3324 3633 3634 3635 6 3323 3042 3043 3325 3635 3636 6 3324 3043 3044 3045 3326 3636 6 3325 3045 3327 3636 3637 3638 6 3326 3045 3046 3053 3328 3638 6 3327 3053 3054 3329 3638 3639 6 3328 3054 3056 3639 3640 3641 6 2507 2508 32 33 3331 3880 6 3330 33 34 2248 3332 3880 6 3331 2248 3333 3334 3880 3881 6 3332 2248 3334 3335 3336 2249 6 3332 3333 3335 9707 6499 3881 6 3334 3333 3336 9706 6492 9707 6 3335 3333 2249 2250 2251 9706 6 1171 1172 1524 3338 3339 3882 6 3337 1524 3339 3340 3341 4250 6 3337 3338 3340 3882 3127 3883 6 3339 3338 3341 3342 3885 3883 6 3340 3338 3342 3343 2206 4250 6 3340 3341 3343 3861 6717 3885 6 3342 3341 2206 2207 3344 3861 6 3343 2207 2209 3345 3346 3861 6 3344 2209 3346 3347 3348 2211 6 3344 3345 3347 3861 3862 3863 6 3346 3345 3348 6532 3863 6524 6 3347 3345 2211 2213 6523 6524 6 3076 3077 3350 3918 3917 3919 6 3349 3077 3078 3107 3351 3919 6 3350 3107 3352 3919 3920 3921 6 3351 3107 3108 3353 3921 3922 6 3352 3108 3109 3354 3922 3923 6 3353 3109 3110 3355 3923 3924 6 3354 3110 3356 3924 3925 3374 6 3355 3110 3111 3357 3368 3374 6 3356 3111 3112 3358 3367 3368 6 3357 3112 3359 3153 3360 3367 6 3358 3112 3153 3085 3152 3084 6 3358 3153 3154 3361 3363 3367 6 3360 3154 3362 3363 3364 3678 6 3361 3154 3155 3677 3675 3678 6 3360 3361 3364 3365 3366 3367 6 3363 3361 3365 3678 3667 3668 6 3363 3364 3366 3373 3370 3668 6 3363 3365 3367 3368 3369 3370 6 3363 3366 3368 3360 3358 3357 6 3367 3366 3369 3357 3356 3374 6 3368 3366 3370 3371 3374 3375 6 3369 3366 3371 3372 3373 3365 6 3369 3370 3372 3375 3376 3377 6 3371 3370 3373 3377 3378 3379 6 3372 3370 3365 3379 3380 3668 6 3356 3368 3369 3375 3925 3355 7 3374 3369 3371 3376 3943 3925 4342 5 3375 3371 3377 4342 4343 6 3376 3371 3372 3378 4343 4344 6 3377 3372 3379 3645 4347 4344 6 3378 3372 3373 3380 3381 3645 6 3379 3373 3381 3382 3668 3656 6 3379 3380 3382 3383 3384 3645 6 3381 3380 3383 3390 3387 3656 6 3381 3382 3384 3385 3386 3387 6 3381 3383 3385 3645 3646 3647 6 3384 3383 3386 3647 3648 3649 6 3385 3383 3387 3388 3649 3650 6 3386 3383 3388 3389 3390 3382 6 3386 3387 3389 3650 3651 3652 6 3388 3387 3390 3652 3653 3654 6 3389 3387 3382 3654 3655 3656 6 2675 2676 3392 3573 3574 3575 6 3391 2676 2677 3393 3575 3576 6 3392 2677 2678 3394 3576 3577 6 3393 2678 2679 3577 3578 3579 6 2173 2804 2805 3396 3397 4747 6 3395 2805 3397 3398 3399 3400 6 3395 3396 3398 3892 4747 4746 6 3397 3396 3399 3892 3893 3894 6 3398 3396 3400 3894 3895 3896 6 3399 3396 2805 2806 3401 3896 6 3400 2806 2807 3402 3896 3897 6 3401 2807 3403 3897 3898 3899 6 3402 2807 2808 3404 3899 3900 6 3403 2808 1732 3405 3679 3900 6 3404 1732 1733 1734 3406 3679 6 3405 1734 1735 3407 3679 3680 6 3406 1735 1736 3408 3680 3681 6 3407 1736 1737 3409 3683 3681 6 3408 1737 1738 3410 3470 3683 6 3409 1738 1739 3411 9751 3470 6 3410 1739 1740 3197 3200 9751 6 3147 1674 1675 1676 3413 4231 6 3412 1676 1677 3414 9791 4231 6 3413 1677 3415 7778 7776 9791 6 3414 1677 1678 7778 7779 5382 6 1695 1696 3417 3786 1694 3787 6 3416 1696 1697 3418 3787 3789 6 3417 1697 1698 2223 3419 3789 6 3418 2223 3420 3789 3790 3791 6 3419 2223 2224 3421 3791 3792 6 3420 2224 2225 3422 3423 3792 6 3421 2225 3423 3424 3425 3426 6 3421 3422 3424 3794 3792 3795 6 3423 3422 3425 3795 3796 3797 6 3424 3422 3426 3797 3798 3799 6 3425 3422 2225 2226 3427 3799 6 3426 2226 2227 3428 3799 3800 6 3427 2227 2228 3429 3800 3801 6 3428 2228 3430 3801 3802 3432 6 3429 2228 2229 2238 3431 3432 6 3430 2238 3432 3433 3434 3435 6 3430 3431 3433 3442 3802 3429 6 3432 3431 3434 3442 3443 3444 6 3433 3431 3435 3444 3445 3446 6 3434 3431 2238 2239 2561 3446 6 2491 2492 3437 3438 3515 2493 6 2491 3436 3438 3439 3440 3441 6 3437 3436 3439 3513 3514 3515 6 3437 3438 3440 3508 3509 3513 6 3437 3439 3441 3451 3453 3508 6 3437 3440 2491 70 3451 69 6 3432 3433 3443 3802 3803 3804 6 3442 3433 3444 3804 3805 3806 6 3443 3433 3434 3445 3806 3807 6 3444 3434 3446 3807 3808 3447 6 3445 3434 3435 2561 2562 3447 6 3446 2562 3448 3808 3445 4107 6 3447 2562 2563 3449 3454 4107 6 3448 2563 2567 3454 3455 2568 7 3175 3176 3179 6655 6654 6656 6657 6 3441 3440 69 68 3452 3453 6 68 3451 3453 67 3505 3506 6 3452 3451 3440 3506 3507 3508 6 3448 3449 3455 3456 4107 4108 6 3454 3449 3456 3457 3458 2568 6 3454 3455 3457 3464 4110 4108 6 3456 3455 3458 3459 3460 3464 6 3457 3455 3459 3463 2569 2568 6 3457 3458 3460 3461 3462 3463 6 3457 3459 3461 3464 3465 3466 6 3460 3459 3462 3466 3467 3469 6 3461 3459 3463 1721 3469 1720 6 3462 3459 3458 2569 1720 1719 6 3456 3457 3460 3465 4394 4110 6 3464 3460 3466 4404 4394 4745 6 3465 3460 3461 3467 3468 4745 6 3466 3461 3468 2172 1724 3469 6 3466 3467 2172 4745 4746 4747 6 1724 3467 1722 1721 3462 3461 7 3201 3202 3471 9751 3410 3409 3683 6 3470 3202 3203 3472 3681 3683 6 3471 3203 3204 3473 3682 3681 6 3472 3204 3474 3685 3902 3682 6 3473 3204 3205 3475 3685 3686 6 3474 3205 3206 3476 3686 3687 6 3475 3206 3207 3477 3687 3688 6 3476 3207 3208 3478 3688 3689 6 3477 3208 3209 3479 3689 3690 6 3478 3209 3211 3480 3690 3691 6 3479 3211 3481 3499 3694 3691 6 3480 3211 3212 3482 3499 3500 5 3481 3212 2907 3500 2908 5 2907 3212 3213 2905 2906 6 3218 3219 3222 3485 4039 4040 6 3484 3222 3486 3489 3968 4039 6 3485 3222 3223 3487 3488 3489 6 3486 3223 3488 3492 3493 3225 6 3486 3487 3489 3490 3491 3492 6 3486 3488 3490 3485 3968 3969 6 3489 3488 3491 3969 3970 3971 6 3490 3488 3492 3971 9747 6555 6 3491 3488 3487 3493 3496 9747 6 3492 3487 3225 3494 3495 3496 6 3493 3225 3226 3495 3497 3498 6 3493 3494 3496 3497 3501 3115 6 3493 3495 3492 3501 3502 9747 6 3495 3494 3498 3102 3113 3115 5 3497 3494 3226 3101 3102 6 3480 3481 3500 3694 3695 3696 6 3499 3481 3482 2908 3696 3697 6 3496 3495 3502 3503 3504 3115 6 3496 3501 3503 9747 6706 9748 6 3502 3501 3504 6712 6710 9748 5 3503 3501 3115 6712 3116 6 67 3452 3506 6697 6703 66 6 3505 3452 3453 3507 6697 6704 6 3506 3453 3508 3510 4522 6704 6 3507 3453 3440 3439 3509 3510 6 3508 3439 3510 3511 3512 3513 6 3508 3509 3511 3770 3507 4522 6 3510 3509 3512 3770 3771 3772 6 3511 3509 3513 3772 3773 3520 6 3512 3509 3439 3438 3514 3520 6 3513 3438 3515 3520 3521 3517 6 3514 3438 3436 2493 3516 3517 6 3515 2493 3517 3518 1607 1606 6 3515 3516 3518 3521 3514 3522 6 3517 3516 1607 1613 3522 3523 5 1613 1607 1605 1608 1610 6 3513 3514 3521 3773 3512 4531 6 3520 3514 3517 3522 4116 4531 6 3521 3517 3518 3523 3525 4116 6 3522 3518 1613 1614 3524 3525 6 3523 1614 3525 3526 3527 3528 6 3523 3524 3526 3522 4116 4117 6 3525 3524 3527 3529 4117 4118 6 3526 3524 3528 3529 3530 3543 6 3527 3524 1614 3543 3544 1615 6 3526 3527 3530 3531 4118 9786 6 3529 3527 3531 3532 3542 3543 6 3529 3530 3532 3533 9786 9787 6 3531 3530 3533 3534 3541 3542 6 3531 3532 3534 3535 9787 9788 6 3533 3532 3535 3536 3540 3541 6 3533 3534 3536 3537 9788 7178 6 3535 3534 3537 3538 3539 3540 6 3535 3536 3538 7182 7179 7178 6 3537 3536 3539 7182 7183 7184 6 3538 3536 3540 7184 7185 7212 6 3539 3536 3534 3541 7212 4372 6 3540 3534 3532 3542 4372 4097 6 3541 3532 3530 3543 4096 4097 6 3542 3530 3527 3528 3544 4096 6 3543 3528 1615 4099 4096 3093 6 2986 2987 3546 3824 3825 3829 6 3545 2987 2988 3547 3829 3830 6 3546 2988 2989 3548 3830 3831 6 3547 2989 2990 3549 3831 3832 6 3548 2990 2991 3550 3832 3833 6 3549 2991 2992 3551 3809 3833 6 3550 2992 2993 3552 3809 3810 6 3551 2993 2994 3553 3810 3811 6 3552 2994 2995 3554 3811 3812 6 3553 2995 2996 3555 3812 3813 6 3554 2996 3556 3813 3814 3815 6 3555 2996 2997 3557 3815 3816 6 3556 2997 2998 2999 3558 3816 6 3557 2999 3000 3559 3816 3817 6 3558 3000 3001 3560 3817 3818 6 3559 3001 3002 3561 3562 3818 6 3560 3002 3562 3563 3564 3565 6 3560 3561 3563 3818 3819 3820 6 3562 3561 3564 3820 3821 3822 6 3563 3561 3565 3822 3823 3566 6 3564 3561 3002 2666 2667 3566 6 3565 2667 2668 3567 3823 3564 6 3566 2668 2669 3568 3850 3823 6 3567 2669 2670 3569 3879 3850 6 3568 2670 2671 3570 3891 3879 6 3569 2671 2672 2673 3571 3891 6 3570 2673 3572 4237 3891 4257 6 3571 2673 2674 3573 4257 4258 6 3572 2674 2675 3391 3574 4258 6 3573 3391 3575 4258 4259 4263 6 3574 3391 3392 3576 4263 4264 6 3575 3392 3393 3577 4264 4265 6 3576 3393 3394 3578 4265 4266 6 3577 3394 3579 4266 4267 4268 6 3578 3394 2679 2680 3580 4268 6 3579 2680 2681 3581 4141 4268 6 3580 2681 2682 3582 4141 4142 6 3581 2682 2683 3583 4142 4143 6 3582 2683 2684 3584 4143 4144 6 3583 2684 2685 3585 4144 4145 6 3584 2685 2686 3586 4145 4146 6 3585 2686 2687 3587 4146 4147 6 3586 2687 2688 3588 4147 4148 6 3587 2688 2689 3278 3589 4148 6 3588 3278 3590 4148 4149 4150 6 3589 3278 3279 3591 4150 4151 6 3590 3279 3280 3592 4151 4152 6 3591 3280 3281 3593 4152 4153 6 3592 3281 3282 3594 4153 4154 6 3593 3282 3283 3595 4154 4155 6 3594 3283 3284 3596 4155 4156 6 3595 3284 3285 3597 4156 4157 6 3596 3285 3286 3598 4157 4158 6 3597 3286 3287 3599 4158 4159 6 3598 3287 3288 3600 4159 4160 6 3599 3288 3289 3601 4160 4161 6 3600 3289 3290 3291 3602 4161 6 3601 3291 3603 4161 4162 4163 6 3602 3291 3292 3604 4163 4164 6 3603 3292 3293 3605 4164 4165 6 3604 3293 3294 3606 4165 4166 6 3605 3294 3295 3607 4166 4167 6 3606 3295 3296 3608 4167 4168 6 3607 3296 3297 3298 3609 4168 6 3608 3298 3610 4168 4169 4170 6 3609 3298 3299 3611 4170 4171 6 3610 3299 3300 3612 4171 4172 6 3611 3300 3301 3613 4172 4173 6 3612 3301 3302 3614 4173 4174 6 3613 3302 3303 3615 4174 4175 6 3614 3303 3304 3616 4175 4176 6 3615 3304 3305 3617 4176 4177 6 3616 3305 3306 3618 4177 4178 6 3617 3306 3307 3619 4178 4179 6 3618 3307 3308 3620 4179 4180 6 3619 3308 3309 3621 4180 4181 6 3620 3309 3310 3622 4181 4182 6 3621 3310 3311 3623 4182 4183 6 3622 3311 3312 3624 4183 4184 6 3623 3312 3313 3625 4184 4185 6 3624 3313 3314 3626 4185 4186 6 3625 3314 3315 3627 4186 4187 6 3626 3315 3316 3628 4187 4188 6 3627 3316 3317 3629 4188 4189 6 3628 3317 3318 3630 4189 4190 6 3629 3318 3319 3631 4190 4191 6 3630 3319 3320 3632 4191 4192 6 3631 3320 3321 3633 4192 4193 6 3632 3321 3322 3323 3634 4193 6 3633 3323 3635 3903 4193 4194 6 3634 3323 3324 3636 3903 3904 6 3635 3324 3325 3326 3637 3904 6 3636 3326 3638 3904 3905 3906 6 3637 3326 3327 3328 3639 3906 6 3638 3328 3329 3640 3906 3907 6 3639 3329 3641 3907 3908 3642 5 3640 3329 3056 3057 3642 7 3641 3057 3058 3643 3908 3640 3927 6 3642 3058 3059 3644 3909 3927 5 3643 3059 3061 3909 3910 6 3381 3384 3646 3379 3378 4347 6 3645 3384 3647 4347 4348 4349 6 3646 3384 3385 3648 4352 4349 6 3647 3385 3649 3657 4352 4353 6 3648 3385 3386 3650 3657 3658 6 3649 3386 3388 3651 3658 3659 6 3650 3388 3652 3659 3660 3661 6 3651 3388 3389 3653 3661 3662 6 3652 3389 3654 3662 3663 3664 6 3653 3389 3390 3655 3664 3665 6 3654 3390 3656 3665 3666 3667 6 3655 3390 3382 3667 3668 3380 6 3648 3649 3658 4353 4354 4358 6 3657 3649 3650 3659 4371 4358 6 3658 3650 3651 3660 9793 4371 6 3659 3651 3661 4906 4908 9793 6 3660 3651 3652 3662 3669 4906 6 3661 3652 3653 3663 3669 3670 6 3662 3653 3664 3670 3671 3672 6 3663 3653 3654 3665 3672 3673 6 3664 3654 3655 3666 3673 3674 6 3665 3655 3667 3674 3675 3678 6 3666 3655 3656 3668 3364 3678 6 3667 3656 3380 3364 3365 3373 6 3661 3662 3670 4903 4905 4906 6 3669 3662 3663 3671 4902 4903 6 3670 3663 3672 5918 4902 3951 6 3671 3663 3664 3673 3950 3951 6 3672 3664 3665 3674 3944 3950 6 3673 3665 3666 3675 3676 3944 6 3674 3666 3676 3677 3362 3678 6 3674 3675 3677 3158 3944 3945 6 3676 3675 3158 3156 3155 3362 6 3362 3675 3361 3364 3667 3666 6 3404 3405 3406 3680 3900 3901 6 3679 3406 3407 3681 3682 3901 7 3680 3407 3682 3472 3471 3683 3408 6 3680 3681 3472 3901 3902 3473 5 3471 3681 3408 3409 3470 7 418 3100 3229 3231 3234 12 13 7 3473 3474 3686 3902 4665 4664 4688 5 3685 3474 3475 3687 4688 7 3686 3475 3476 3688 4688 4689 4690 6 3687 3476 3477 3689 4690 4691 6 3688 3477 3478 3690 4691 4692 6 3689 3478 3479 3691 3692 4692 6 3690 3479 3692 3693 3694 3480 6 3690 3691 3693 4692 4693 4694 6 3692 3691 3694 4694 4695 4696 6 3693 3691 3480 3499 3695 4696 6 3694 3499 3696 4696 4697 4698 6 3695 3499 3500 3697 4698 4699 6 3696 3500 2908 2909 3698 4699 6 3697 2909 2910 3699 3972 4699 6 3698 2910 2911 3700 3972 3973 6 3699 2911 2912 2913 3701 3973 6 3700 2913 3702 3973 3974 3975 6 3701 2913 2914 3703 3975 3976 6 3702 2914 2915 3704 3976 3977 6 3703 2915 2916 3705 3977 3978 6 3704 2916 2917 3706 3978 3979 6 3705 2917 2918 3707 3979 3980 6 3706 2918 2919 3708 3980 3981 6 3707 2919 2920 3709 3981 3982 6 3708 2920 2921 3710 3982 3983 6 3709 2921 2922 3711 3983 3984 6 3710 2922 2923 3712 3984 3985 6 3711 2923 2924 3713 3985 3986 6 3712 2924 2925 3714 3986 3987 6 3713 2925 2926 3715 3987 3988 6 3714 2926 2927 3716 3988 3989 6 3715 2927 2928 3717 3989 3990 6 3716 2928 2929 3718 3990 3991 6 3717 2929 2930 3719 3991 3992 6 3718 2930 2931 3720 3992 3993 6 3719 2931 2932 3721 3993 3994 6 3720 2932 2933 3722 3994 3995 6 3721 2933 2934 3723 3995 3996 6 3722 2934 2935 3724 3996 3997 6 3723 2935 2936 3725 3997 3998 6 3724 2936 2937 3726 3998 3999 6 3725 2937 2938 3727 3999 4000 6 3726 2938 2939 3728 4000 4001 6 3727 2939 2940 3729 4001 4002 6 3728 2940 2941 3730 4002 4003 6 3729 2941 2942 3731 4003 4004 6 3730 2942 2943 3732 4004 4005 6 3731 2943 2944 2945 3733 4005 6 3732 2945 2946 3734 4005 4006 6 3733 2946 2947 2948 3735 4006 6 3734 2948 3736 4006 4007 3737 5 3735 2948 2949 3242 3737 6 3736 3242 3738 4007 3735 4012 6 3737 3242 3243 3739 4012 4013 6 3738 3243 3244 3740 4013 4014 6 3739 3244 3245 3741 4014 4015 6 3740 3245 3246 3742 4015 4016 6 3741 3246 3247 3743 4016 4017 6 3742 3247 3248 3744 4017 4018 6 3743 3248 3249 3745 4018 4019 6 3744 3249 3250 3746 4019 4020 6 3745 3250 3747 4020 4021 4022 6 3746 3250 3251 3253 3748 4022 6 3747 3253 3749 4022 4023 4024 7 3748 3253 3254 3255 3256 3750 4024 5 3749 3256 3751 4024 4025 6 3750 3256 3257 3752 4025 4026 6 3751 3257 3258 3753 4029 4026 7 3752 3258 3754 4037 4029 4046 3755 5 3753 3258 3259 3260 3755 6 3754 3260 3261 3756 4046 3753 6 3755 3261 3262 3757 4046 4047 6 3756 3262 3263 3758 4047 4048 6 3757 3263 3264 3759 4048 4049 6 3758 3264 3265 4049 4050 4051 6 615 617 3761 3764 3765 3763 6 3760 617 625 627 3762 3763 6 3761 627 3763 3217 635 629 6 3761 3762 3765 3760 4040 3217 6 615 3760 3765 4038 6557 612 6 3764 3760 3763 4038 4039 4040 5 2085 1567 3767 3768 6093 6 3766 1567 3768 3769 1571 1568 6 3766 3767 3769 6092 6093 6094 7 3768 3767 1571 6094 6088 6317 6318 6 3510 3511 3771 4522 4523 4524 6 3770 3511 3772 4524 4525 4528 6 3771 3511 3512 3773 4528 4529 6 3772 3512 3520 4529 4530 4531 6 1682 1683 3775 5391 5385 5383 6 3774 1683 3776 5620 5391 3778 6 3775 1683 1684 1686 3777 3778 6 3776 1686 3778 3779 3780 3781 6 3776 3777 3779 7791 5620 3775 6 3778 3777 3780 7798 7792 7791 6 3779 3777 3781 7798 3783 3782 6 3780 3777 1686 1687 1688 3782 6 3781 1688 1689 1691 3783 3780 6 3782 1691 3784 7798 3780 7799 6 3783 1691 1692 3785 7799 7800 6 3784 1692 3786 3787 3788 7800 6 3785 1692 1693 1694 3416 3787 6 3786 3416 3417 3785 3788 3789 6 3785 3787 3789 7800 7801 3790 6 3788 3787 3417 3418 3419 3790 6 3789 3419 3791 7801 3788 7802 6 3790 3419 3420 3792 3793 7802 6 3791 3420 3793 3794 3423 3421 6 3791 3792 3794 7802 7803 7804 6 3793 3792 3423 3795 7804 7805 6 3794 3423 3424 3796 7809 7805 6 3795 3424 3797 3952 7809 7810 6 3796 3424 3425 3798 3952 3953 6 3797 3425 3799 3953 3954 3955 6 3798 3425 3426 3427 3800 3955 6 3799 3427 3428 3801 3955 3956 6 3800 3428 3429 3802 3956 3957 6 3801 3429 3432 3442 3803 3957 6 3802 3442 3804 3957 4100 4239 6 3803 3442 3443 3805 4100 4101 6 3804 3443 3806 4101 4102 4103 6 3805 3443 3444 3807 4103 4104 6 3806 3444 3445 3808 4104 4105 6 3807 3445 3447 4105 4106 4107 6 3550 3551 3810 3833 3834 3835 6 3809 3551 3552 3811 3835 3836 6 3810 3552 3553 3812 3836 3837 6 3811 3553 3554 3813 3837 3838 6 3812 3554 3555 3814 3838 3839 6 3813 3555 3815 3839 3840 3841 6 3814 3555 3556 3816 3841 3842 6 3815 3556 3557 3558 3817 3842 6 3816 3558 3559 3818 3842 3843 6 3817 3559 3560 3562 3819 3843 6 3818 3562 3820 3843 3844 3845 6 3819 3562 3563 3821 3845 3846 6 3820 3563 3822 3846 3847 3848 6 3821 3563 3564 3823 3848 3849 6 3822 3564 3566 3849 3850 3567 6 2986 3545 3825 3826 3277 2985 6 3824 3545 3826 3827 3828 3829 6 3824 3825 3827 4069 4065 3277 6 3826 3825 3828 4756 4069 4763 6 3827 3825 3829 4763 4764 4765 6 3828 3825 3545 3546 3830 4765 6 3829 3546 3547 3831 4765 4766 6 3830 3547 3548 3832 4766 4767 6 3831 3548 3549 3833 4770 4767 6 3832 3549 3550 3809 3834 4770 6 3833 3809 3835 5016 4770 5024 6 3834 3809 3810 3836 5024 5025 6 3835 3810 3811 3837 5025 5026 6 3836 3811 3812 3838 4405 5026 6 3837 3812 3813 3839 3864 4405 6 3838 3813 3814 3840 3864 3865 6 3839 3814 3841 3865 3866 3867 6 3840 3814 3815 3842 3853 3867 6 3841 3815 3816 3817 3843 3853 6 3842 3817 3818 3819 3844 3853 6 3843 3819 3845 3853 3854 3855 6 3844 3819 3820 3846 3855 3856 6 3845 3820 3821 3847 3856 3857 6 3846 3821 3848 3860 3857 3876 6 3847 3821 3822 3849 3876 3877 6 3848 3822 3823 3850 3877 3878 6 3849 3823 3567 3878 3879 3568 6 2181 2199 2179 3852 2201 3129 6 2179 3851 27 26 3129 9781 6 3841 3842 3843 3844 3854 3867 6 3853 3844 3855 3867 3868 3869 6 3854 3844 3845 3856 3869 3870 6 3855 3845 3846 3857 3858 3870 6 3856 3846 3858 3859 3860 3847 6 3856 3857 3859 3870 3871 3872 6 3858 3857 3860 3872 3873 3874 6 3859 3857 3847 3874 3875 3876 6 3343 3344 3346 3862 6717 3342 6 3861 3346 3863 6716 6715 6717 7 3862 3346 6532 6531 3347 6533 6716 6 3838 3839 3865 4405 4406 4407 6 3864 3839 3840 3866 4407 4408 6 3865 3840 3867 4408 4409 3868 6 3866 3840 3841 3853 3854 3868 6 3867 3854 3869 4409 3866 4420 6 3868 3854 3855 3870 4420 4421 6 3869 3855 3856 3858 3871 4421 6 3870 3858 3872 4421 4422 4423 6 3871 3858 3859 3873 4423 4424 6 3872 3859 3874 4424 4425 4426 6 3873 3859 3860 3875 4426 4427 6 3874 3860 3876 4427 4428 3888 6 3875 3860 3847 3848 3877 3888 6 3876 3848 3849 3878 3888 3889 6 3877 3849 3850 3879 3889 3890 6 3878 3850 3568 3890 3891 3569 6 2507 3330 2509 3881 3331 3332 6 2509 3880 3334 6499 2511 3332 6 3337 3339 3127 1171 414 3128 6 3127 3339 3122 3884 3885 3340 6 3122 3883 3885 3886 3887 3121 6 3884 3883 3886 3342 6717 3340 6 3884 3885 3887 6538 6715 6717 6 3884 3886 3121 6713 6714 6538 6 3876 3877 3889 4428 3875 4251 6 3888 3877 3878 3890 4236 4251 6 3889 3878 3879 3891 4236 4237 6 3890 3879 3569 4237 3571 3570 6 3397 3398 3893 4746 4744 4743 6 3892 3398 3894 4743 4748 4749 6 3893 3398 3399 3895 4752 4749 6 3894 3399 3896 4661 4758 4752 6 3895 3399 3400 3401 3897 4661 6 3896 3401 3402 3898 4661 4662 6 3897 3402 3899 4662 4663 4664 6 3898 3402 3403 3900 4664 4665 6 3899 3403 3404 3679 3901 4665 6 3900 3679 3680 3682 3902 4665 5 3901 3682 3473 4665 3685 6 3634 3635 3904 4194 4195 4196 6 3903 3635 3636 3637 3905 4196 6 3904 3637 3906 4196 4197 4198 6 3905 3637 3638 3639 3907 4198 6 3906 3639 3640 3908 4198 4199 6 3907 3640 3642 3927 4199 4200 5 3643 3644 3910 3927 3928 7 3909 3644 3061 3062 3911 3928 3929 7 3910 3062 3063 3912 3929 3930 3931 6 3911 3063 3069 3913 3931 3932 6 3912 3069 3070 3914 3932 3933 6 3913 3070 3071 3915 3933 3934 6 3914 3071 3072 3916 3934 3935 6 3915 3072 3073 3917 3935 3936 6 3916 3073 3918 3349 3919 3936 6 3917 3073 3074 3075 3076 3349 6 3917 3349 3350 3351 3920 3936 6 3919 3351 3921 3936 3937 3938 6 3920 3351 3352 3922 3938 3939 6 3921 3352 3353 3923 3939 3940 6 3922 3353 3354 3924 3940 3941 6 3923 3354 3355 3925 3941 3942 6 3924 3355 3374 3942 3943 3375 6 3085 2482 2483 2484 3150 3152 6 3908 3642 3643 3909 3928 4200 6 3927 3909 3910 3929 4200 4201 6 3928 3910 3911 3930 4201 4202 6 3929 3911 3931 4202 4203 4204 5 3930 3911 3912 3932 4204 6 3931 3912 3913 3933 4204 4205 6 3932 3913 3914 3934 4205 4206 6 3933 3914 3915 3935 4206 4207 6 3934 3915 3916 3936 4207 3937 6 3935 3916 3917 3919 3920 3937 6 3936 3920 3938 4207 3935 4335 6 3937 3920 3921 3939 4335 4336 6 3938 3921 3922 3940 4336 4337 6 3939 3922 3923 3941 4337 4338 6 3940 3923 3924 3942 4338 4339 6 3941 3924 3925 3943 4339 4340 6 3942 3925 3375 4340 4341 4342 6 3673 3674 3676 3945 3950 3947 6 3944 3676 3158 3159 3946 3947 6 3945 3159 3947 3948 5922 3962 6 3945 3946 3948 3949 3950 3944 6 3947 3946 3949 5920 5921 5922 6 3947 3948 3950 3951 5919 5920 6 3947 3949 3951 3672 3673 3944 6 3950 3949 3672 5918 3671 5919 6 3796 3797 3953 7810 7811 7812 6 3952 3797 3798 3954 7812 7813 6 3953 3798 3955 7813 7814 7815 6 3954 3798 3799 3800 3956 7815 6 3955 3800 3801 3957 4238 7815 6 3956 3801 3802 3803 4238 4239 6 3187 3188 3959 3960 7588 7586 6 3958 3188 3960 3961 2890 2888 6 3958 3959 3961 7588 7589 7590 6 3960 3959 2890 7590 7591 7592 6 3159 3160 3963 5922 3946 5923 6 3962 3160 3964 3965 5923 5924 6 3963 3160 3965 3966 3967 3161 6 3963 3964 3966 5924 5942 5943 6 3965 3964 3967 5943 5948 5947 6 3966 3964 3161 5948 2488 2487 6 3485 3489 3969 6556 4038 4039 6 3968 3489 3490 3970 1597 6556 6 3969 3490 3971 6358 1595 1597 6 3970 3490 3491 6555 6357 6358 6 3698 3699 3973 4699 4700 4701 6 3972 3699 3700 3701 3974 4701 6 3973 3701 3975 4701 4702 4703 6 3974 3701 3702 3976 4703 4704 6 3975 3702 3703 3977 4704 4705 6 3976 3703 3704 3978 4705 4706 6 3977 3704 3705 3979 4706 4707 6 3978 3705 3706 3980 4707 4708 6 3979 3706 3707 3981 4708 4709 6 3980 3707 3708 3982 4709 4710 6 3981 3708 3709 3983 4710 4711 6 3982 3709 3710 3984 4711 4712 6 3983 3710 3711 3985 4712 4713 6 3984 3711 3712 3986 4713 4714 6 3985 3712 3713 3987 4714 4715 6 3986 3713 3714 3988 4715 4716 6 3987 3714 3715 3989 4716 4717 6 3988 3715 3716 3990 4717 4718 6 3989 3716 3717 3991 4718 4719 6 3990 3717 3718 3992 4719 4720 6 3991 3718 3719 3993 4720 4721 6 3992 3719 3720 3994 4439 4721 6 3993 3720 3721 3995 4439 4440 6 3994 3721 3722 3996 4440 4441 6 3995 3722 3723 3997 4441 4442 6 3996 3723 3724 3998 4442 4443 6 3997 3724 3725 3999 4443 4444 6 3998 3725 3726 4000 4444 4445 6 3999 3726 3727 4001 4445 4446 6 4000 3727 3728 4002 4070 4446 6 4001 3728 3729 4003 4008 4070 6 4002 3729 3730 4004 4008 4009 6 4003 3730 3731 4005 4009 4010 6 4004 3731 3732 3733 4006 4010 6 4005 3733 3734 3735 4007 4010 6 4006 3735 3737 4010 4011 4012 6 4002 4003 4009 4070 4071 4072 6 4008 4003 4004 4010 4072 4011 6 4009 4004 4005 4006 4007 4011 6 4010 4007 4012 4072 4009 4073 6 4011 4007 3737 3738 4013 4073 6 4012 3738 3739 4014 4073 4074 7 4013 3739 3740 4015 4074 4075 4076 6 4014 3740 3741 4016 4076 4077 6 4015 3741 3742 4017 4077 4078 6 4016 3742 3743 4018 4078 4079 6 4017 3743 3744 4019 4079 4080 6 4018 3744 3745 4020 4080 4081 6 4019 3745 3746 4021 4081 4082 6 4020 3746 4022 4030 4082 4083 6 4021 3746 3747 3748 4023 4030 6 4022 3748 4024 4030 4031 4032 6 4023 3748 3749 3750 4025 4032 6 4024 3750 3751 4026 4027 4032 6 4025 3751 4027 4028 4029 3752 6 4025 4026 4028 4032 4033 4034 6 4027 4026 4029 4034 4035 4036 6 4028 4026 3752 4036 4037 3753 6 4021 4022 4023 4031 4083 4084 6 4030 4023 4032 4084 4085 4033 6 4031 4023 4024 4025 4027 4033 6 4032 4027 4034 4085 4031 4462 6 4033 4027 4028 4035 4041 4462 6 4034 4028 4036 4041 4042 4043 6 4035 4028 4029 4037 4043 4044 6 4036 4029 3753 4044 4045 4046 6 3764 3765 4039 6556 6557 3968 6 4038 3765 4040 3968 3485 3484 6 4039 3765 3763 3217 3484 3218 6 4034 4035 4042 4462 4463 4464 6 4041 4035 4043 4464 4465 4466 6 4042 4035 4036 4044 4466 4467 6 4043 4036 4037 4045 4467 4468 6 4044 4037 4046 4468 4469 4047 6 4045 4037 3753 3755 3756 4047 6 4046 3756 3757 4048 4469 4045 6 4047 3757 3758 4049 4469 4470 6 4048 3758 3759 4050 4470 4209 6 4049 3759 4051 4052 4208 4209 6 4050 3759 4052 4053 4054 3265 6 4050 4051 4053 4208 4221 4222 6 4052 4051 4054 3268 4055 4222 6 4053 4051 3265 3266 3267 3268 5 4053 3268 3269 4056 4222 7 4055 3269 3270 4057 4222 4223 4224 7 4056 3270 3271 4058 4224 4225 4226 6 4057 3271 3272 4059 4226 4227 6 4058 3272 3273 4060 4227 4228 6 4059 3273 3274 4061 4062 4228 6 4060 3274 4062 4063 4064 3275 6 4060 4061 4063 4230 4228 4502 6 4062 4061 4064 4066 4067 4502 6 4063 4061 3275 3276 4065 4066 6 4064 3276 4066 4069 3826 3277 6 4064 4065 4063 4067 4068 4069 6 4063 4066 4068 4513 4502 4754 6 4067 4066 4069 4754 4755 4756 6 4068 4066 4065 3826 4756 3827 6 4001 4002 4008 4071 4446 4447 6 4070 4008 4072 4447 4448 4449 6 4071 4008 4009 4011 4073 4449 6 4072 4011 4012 4013 4074 4449 6 4073 4013 4014 4075 4449 4450 6 4074 4014 4076 4450 4451 4452 5 4075 4014 4015 4077 4452 6 4076 4015 4016 4078 4452 4453 6 4077 4016 4017 4079 4453 4454 6 4078 4017 4018 4080 4454 4455 6 4079 4018 4019 4081 4455 4456 6 4080 4019 4020 4082 4456 4457 6 4081 4020 4021 4083 4457 4458 6 4082 4021 4030 4084 4458 4459 6 4083 4030 4031 4085 4459 4460 6 4084 4031 4033 4460 4461 4462 6 2880 2881 4087 4089 7599 7600 6 4086 2881 2882 2883 4088 4089 6 4087 2883 4089 4090 4091 4092 7 4087 4088 4090 7598 7599 4086 7751 6 4089 4088 4091 7751 7753 4379 6 4090 4088 4092 4094 4378 4379 6 4091 4088 2883 2498 4093 4094 6 4092 2498 4094 4095 2809 2499 6 4092 4093 4095 4091 4378 4387 6 4094 4093 2809 4387 4386 4388 6 3542 3543 4097 4098 4099 3544 6 3542 4096 4098 4365 4372 3541 6 4097 4096 4099 4365 4366 4367 6 4098 4096 3544 4367 3094 3093 6 3803 3804 4101 4239 4240 4241 6 4100 3804 3805 4102 4241 4242 6 4101 3805 4103 4242 4243 4244 6 4102 3805 3806 4104 4111 4244 6 4103 3806 3807 4105 4111 4112 6 4104 3807 3808 4106 4112 4113 6 4105 3808 4107 4108 4109 4113 6 4106 3808 3447 3448 3454 4108 6 4107 3454 4106 4109 4110 3456 6 4106 4108 4110 4113 4114 4115 6 4109 4108 3456 4115 4394 3464 6 4103 4104 4112 4244 4245 4246 6 4111 4104 4105 4113 4249 4246 6 4112 4105 4106 4109 4114 4249 6 4113 4109 4115 4249 4391 4392 6 4114 4109 4110 4392 4393 4394 7 3522 3525 4117 4530 4531 3521 4119 5 4116 3525 3526 4118 4119 6 4117 3526 4119 4120 3529 9786 7 4117 4118 4120 4121 9784 4530 4116 6 4119 4118 4121 4122 9786 9789 6 4119 4120 4122 4123 4395 9784 6 4121 4120 4123 4124 9789 7172 6 4121 4122 4124 4125 4126 4395 6 4123 4122 4125 7171 4140 7172 6 4123 4124 4126 4127 4128 4140 6 4123 4125 4127 4395 4396 4397 6 4126 4125 4128 4129 4130 4397 6 4127 4125 4129 4136 4139 4140 6 4127 4128 4130 4131 4135 4136 6 4127 4129 4131 4132 4397 4398 6 4130 4129 4132 4133 4134 4135 6 4130 4131 4133 4401 4398 4410 6 4132 4131 4134 4410 4411 4412 6 4133 4131 4135 4412 4413 7164 6 4134 4131 4129 4136 4137 7164 6 4135 4129 4128 4137 4138 4139 6 4135 4136 4138 7163 7161 7164 6 4137 4136 4139 7168 7163 7169 6 4138 4136 4128 4140 7169 7170 6 4139 4128 4125 7170 7171 4124 6 3580 3581 4142 4268 4269 4270 6 4141 3581 3582 4143 4270 4271 6 4142 3582 3583 4144 4271 4272 6 4143 3583 3584 4145 4272 4273 6 4144 3584 3585 4146 4273 4274 6 4145 3585 3586 4147 4274 4275 6 4146 3586 3587 4148 4275 4276 6 4147 3587 3588 3589 4149 4276 6 4148 3589 4150 4276 4277 4278 6 4149 3589 3590 4151 4278 4279 6 4150 3590 3591 4152 4279 4280 6 4151 3591 3592 4153 4280 4281 6 4152 3592 3593 4154 4281 4282 6 4153 3593 3594 4155 4282 4283 6 4154 3594 3595 4156 4283 4284 6 4155 3595 3596 4157 4284 4285 6 4156 3596 3597 4158 4285 4286 6 4157 3597 3598 4159 4286 4287 6 4158 3598 3599 4160 4287 4288 6 4159 3599 3600 4161 4288 4289 6 4160 3600 3601 3602 4162 4289 6 4161 3602 4163 4289 4290 4291 6 4162 3602 3603 4164 4291 4292 6 4163 3603 3604 4165 4292 4293 6 4164 3604 3605 4166 4293 4294 6 4165 3605 3606 4167 4294 4295 6 4166 3606 3607 4168 4295 4296 6 4167 3607 3608 3609 4169 4296 6 4168 3609 4170 4296 4297 4298 6 4169 3609 3610 4171 4298 4299 6 4170 3610 3611 4172 4299 4300 6 4171 3611 3612 4173 4300 4301 6 4172 3612 3613 4174 4301 4302 6 4173 3613 3614 4175 4302 4303 6 4174 3614 3615 4176 4303 4304 6 4175 3615 3616 4177 4304 4305 6 4176 3616 3617 4178 4305 4306 6 4177 3617 3618 4179 4306 4307 6 4178 3618 3619 4180 4307 4308 6 4179 3619 3620 4181 4308 4309 6 4180 3620 3621 4182 4309 4310 6 4181 3621 3622 4183 4310 4311 6 4182 3622 3623 4184 4311 4312 6 4183 3623 3624 4185 4312 4313 6 4184 3624 3625 4186 4313 4314 6 4185 3625 3626 4187 4314 4315 6 4186 3626 3627 4188 4315 4316 6 4187 3627 3628 4189 4316 4317 6 4188 3628 3629 4190 4317 4318 6 4189 3629 3630 4191 4318 4319 6 4190 3630 3631 4192 4319 4320 6 4191 3631 3632 4193 4320 4321 6 4192 3632 3633 3634 4194 4321 6 4193 3634 3903 4195 4321 4322 6 4194 3903 4196 4322 4323 4324 6 4195 3903 3904 3905 4197 4324 6 4196 3905 4198 4324 4325 4326 6 4197 3905 3906 3907 4199 4326 6 4198 3907 3908 4200 4326 4327 6 4199 3908 3927 3928 4201 4327 6 4200 3928 3929 4202 4327 4328 6 4201 3929 3930 4203 4328 4329 6 4202 3930 4204 4329 4330 4331 6 4203 3930 3931 3932 4205 4331 6 4204 3932 3933 4206 4331 4332 6 4205 3933 3934 4207 4332 4333 7 4206 3934 3935 3937 4333 4334 4335 6 4050 4052 4209 4210 4211 4221 6 4050 4208 4210 4470 4049 4477 6 4209 4208 4211 4212 4477 4478 6 4210 4208 4212 4213 4220 4221 6 4210 4211 4213 4214 4478 4479 6 4212 4211 4214 4215 4216 4220 6 4212 4213 4215 4479 4480 4481 6 4214 4213 4216 4217 4481 4482 6 4215 4213 4217 4218 4219 4220 6 4215 4216 4218 4232 4482 4483 6 4217 4216 4219 4232 4233 4234 6 4218 4216 4220 4224 4234 4223 6 4219 4216 4213 4211 4221 4223 6 4220 4211 4208 4052 4222 4223 6 4221 4052 4053 4055 4056 4223 6 4222 4056 4224 4221 4220 4219 6 4223 4056 4057 4225 4234 4219 6 4224 4057 4226 4235 4234 4488 5 4225 4057 4058 4227 4488 7 4226 4058 4059 4228 4229 4487 4488 6 4227 4059 4229 4230 4062 4060 6 4227 4228 4230 4489 4487 4500 6 4229 4228 4062 4500 4501 4502 6 3147 3412 3146 3145 9791 3413 6 4217 4218 4233 4483 4484 4485 6 4232 4218 4234 4235 4485 4486 6 4233 4218 4235 4225 4224 4219 6 4233 4234 4225 4486 4487 4488 6 3889 3890 4237 4251 4252 4256 6 4236 3890 3891 3571 4256 4257 6 3956 3957 4239 7815 7816 4503 6 4238 3957 3803 4100 4240 4503 6 4239 4100 4241 4503 4504 4505 6 4240 4100 4101 4242 4505 4506 6 4241 4101 4102 4243 4416 4506 6 4242 4102 4244 4416 4417 4418 6 4243 4102 4103 4111 4245 4418 6 4244 4111 4246 4247 4418 4419 6 4245 4111 4247 4248 4249 4112 6 4245 4246 4248 4419 7829 7830 6 4247 4246 4249 4391 4739 7830 6 4248 4246 4112 4113 4114 4391 6 3341 3338 1524 1525 2205 2206 6 3889 4236 4252 4253 4428 3888 6 4251 4236 4253 4254 4255 4256 6 4251 4252 4254 4647 4428 6892 6 4253 4252 4255 4729 4730 6892 6 4254 4252 4256 4729 4261 4260 6 4255 4252 4236 4237 4257 4260 6 4256 4237 3571 3572 4258 4260 6 4257 3572 3573 3574 4259 4260 6 4258 3574 4260 4261 4262 4263 6 4258 4259 4261 4256 4257 4255 6 4260 4259 4262 4732 4729 4255 6 4261 4259 4263 6901 4732 6902 6 4262 4259 3574 3575 4264 6902 6 4263 3575 3576 4265 5231 6902 6 4264 3576 3577 4266 5231 5232 6 4265 3577 3578 4267 5232 5233 6 4266 3578 4268 5233 5234 4269 6 4267 3578 3579 3580 4141 4269 6 4268 4141 4270 5234 4267 5451 6 4269 4141 4142 4271 5451 5452 6 4270 4142 4143 4272 5452 5453 6 4271 4143 4144 4273 5453 5454 6 4272 4144 4145 4274 5457 5454 6 4273 4145 4146 4275 5469 5457 6 4274 4146 4147 4276 5469 5470 6 4275 4147 4148 4149 4277 5470 6 4276 4149 4278 5470 5471 5472 6 4277 4149 4150 4279 5472 5473 6 4278 4150 4151 4280 5473 5474 6 4279 4151 4152 4281 5046 5474 6 4280 4152 4153 4282 5046 5047 6 4281 4153 4154 4283 5047 5048 6 4282 4154 4155 4284 5048 5049 6 4283 4155 4156 4285 5049 5050 6 4284 4156 4157 4286 5050 5051 6 4285 4157 4158 4287 5051 5052 6 4286 4158 4159 4288 4923 5052 6 4287 4159 4160 4289 4923 4924 6 4288 4160 4161 4162 4290 4924 6 4289 4162 4291 4924 4925 4926 6 4290 4162 4163 4292 4926 4927 6 4291 4163 4164 4293 4927 4928 6 4292 4164 4165 4294 4928 4929 6 4293 4165 4166 4295 4929 4930 6 4294 4166 4167 4296 4930 4931 6 4295 4167 4168 4169 4297 4931 6 4296 4169 4298 4771 4931 4932 6 4297 4169 4170 4299 4771 4772 6 4298 4170 4171 4300 4772 4773 6 4299 4171 4172 4301 4773 4774 6 4300 4172 4173 4302 4774 4775 6 4301 4173 4174 4303 4775 4776 6 4302 4174 4175 4304 4776 4777 6 4303 4175 4176 4305 4777 4778 6 4304 4176 4177 4306 4778 4779 6 4305 4177 4178 4307 4779 4780 6 4306 4178 4179 4308 4780 4781 6 4307 4179 4180 4309 4781 4782 6 4308 4180 4181 4310 4566 4782 6 4309 4181 4182 4311 4566 4567 6 4310 4182 4183 4312 4567 4568 6 4311 4183 4184 4313 4568 4569 6 4312 4184 4185 4314 4569 4570 6 4313 4185 4186 4315 4570 4571 6 4314 4186 4187 4316 4571 4572 6 4315 4187 4188 4317 4572 4573 6 4316 4188 4189 4318 4573 4574 6 4317 4189 4190 4319 4574 4575 6 4318 4190 4191 4320 4575 4576 6 4319 4191 4192 4321 4576 4577 6 4320 4192 4193 4194 4322 4577 6 4321 4194 4195 4323 4577 4578 6 4322 4195 4324 4578 4579 4580 6 4323 4195 4196 4197 4325 4580 6 4324 4197 4326 4580 4581 4582 6 4325 4197 4198 4199 4327 4582 6 4326 4199 4200 4201 4328 4582 6 4327 4201 4202 4329 4582 4583 6 4328 4202 4203 4330 4583 4584 6 4329 4203 4331 4584 4585 4589 7 4330 4203 4204 4205 4332 4589 4590 6 4331 4205 4206 4333 4590 4591 6 4332 4206 4207 4334 4591 4592 6 4333 4207 4335 4336 4429 4592 5 4334 4207 3937 3938 4336 6 4335 3938 3939 4337 4334 4429 6 4336 3939 3940 4338 4429 4430 6 4337 3940 3941 4339 4430 4431 6 4338 3941 3942 4340 4431 4432 6 4339 3942 3943 4341 4432 4433 6 4340 3943 4342 4433 4434 4435 6 4341 3943 3375 3376 4343 4435 6 4342 3376 3377 4344 4345 4435 6 4343 3377 4345 4346 4347 3378 6 4343 4344 4346 4435 4436 4437 6 4345 4344 4347 4437 4438 4348 6 4346 4344 3378 3645 3646 4348 6 4347 3646 4349 4350 4438 4346 6 4348 3646 4350 4351 4352 3647 6 4348 4349 4351 4601 4438 4602 6 4350 4349 4352 4602 4603 4604 6 4351 4349 3647 3648 4353 4604 6 4352 3648 3657 4354 4355 4604 6 4353 3657 4355 4356 4357 4358 6 4353 4354 4356 4604 4605 4606 6 4355 4354 4357 4361 4362 4606 6 4356 4354 4358 4359 4360 4361 6 4357 4354 4359 4371 3658 3657 6 4357 4358 4360 4368 4369 4371 6 4357 4359 4361 4364 4368 4614 6 4357 4360 4356 4362 4363 4364 6 4356 4361 4363 4606 4607 4608 6 4362 4361 4364 4611 4608 4612 6 4363 4361 4360 4612 4613 4614 6 4097 4098 4366 4372 4373 4374 6 4365 4098 4367 4374 4375 4376 7 4366 4098 4099 3094 4376 1626 1624 6 4360 4359 4369 4370 4614 4615 6 4368 4359 4370 4371 9794 9793 6 4368 4369 9794 4642 4637 4615 6 4369 4359 4358 3658 9793 3659 6 4097 4365 4373 7212 3540 3541 6 4372 4365 4374 7212 7210 7209 6 4373 4365 4366 4375 7209 7213 6 4374 4366 4376 4377 7213 7214 6 4375 4366 4367 4377 1627 1626 5 4375 4376 1627 7214 7215 6 4091 4094 4379 4380 4381 4387 7 4091 4378 4380 7753 4090 7752 7754 6 4379 4378 4381 4382 7754 7755 6 4380 4378 4382 4383 4384 4387 6 4380 4381 4383 7755 7756 7764 6 4382 4381 4384 4385 4389 7764 6 4383 4381 4385 3140 4386 4387 6 4383 4384 3140 4389 4390 3141 6 3140 4384 4387 4095 4388 3139 6 4386 4384 4381 4378 4094 4095 6 4386 4095 2809 2810 2813 3139 6 4383 4385 4390 7764 7765 7766 6 4389 4385 3141 7766 7767 3142 6 4249 4114 4392 4248 4739 4740 6 4391 4114 4115 4393 4402 4740 6 4392 4115 4394 4402 4403 4404 6 4393 4115 4110 3464 4404 3465 5 4121 4123 4126 4396 9784 7 4395 4126 4397 4399 4528 4529 9784 6 4396 4126 4127 4130 4398 4399 6 4397 4130 4399 4400 4401 4132 6 4397 4398 4400 4525 4528 4396 5 4399 4398 4401 4527 4525 7 4400 4398 4132 4410 4534 4527 4535 6 4392 4393 4403 4740 4741 4742 6 4402 4393 4404 4742 4743 4744 6 4403 4393 4394 3465 4744 4745 6 3837 3838 3864 4406 5026 5027 6 4405 3864 4407 5027 5028 5029 6 4406 3864 3865 4408 5029 5030 6 4407 3865 3866 4409 5030 5031 6 4408 3866 3868 4420 5031 5032 6 4401 4132 4133 4411 4535 4536 6 4410 4133 4412 4545 4539 4536 6 4411 4133 4134 4413 4414 4545 6 4412 4134 4414 4415 7164 7165 6 4412 4413 4415 4545 4544 4648 6 4414 4413 4649 4648 7165 7166 6 4242 4243 4417 4506 4507 4508 6 4416 4243 4418 4508 4509 4510 6 4417 4243 4244 4245 4419 4510 6 4418 4245 4247 7828 4510 7829 6 4409 3868 3869 4421 5032 5033 6 4420 3869 3870 3871 4422 5033 6 4421 3871 4423 5033 5034 5035 6 4422 3871 3872 4424 5035 5036 6 4423 3872 3873 4425 4643 5036 6 4424 3873 4426 4643 4644 4645 6 4425 3873 3874 4427 4645 4646 6 4426 3874 3875 4428 4646 4647 6 4427 3875 3888 4647 4253 4251 6 4334 4336 4337 4430 4592 4593 6 4429 4337 4338 4431 4593 4594 6 4430 4338 4339 4432 4594 4595 6 4431 4339 4340 4433 4595 4596 6 4432 4340 4341 4434 4596 4597 6 4433 4341 4435 4597 4598 4436 6 4434 4341 4342 4343 4345 4436 6 4435 4345 4437 4598 4434 4599 6 4436 4345 4346 4438 4599 4600 6 4437 4346 4348 4600 4601 4350 6 3993 3994 4440 4721 4722 4723 6 4439 3994 3995 4441 4723 4724 6 4440 3995 3996 4442 4724 4725 6 4441 3996 3997 4443 4725 4726 6 4442 3997 3998 4444 4726 4727 6 4443 3998 3999 4445 4727 4728 6 4444 3999 4000 4446 4728 4658 6 4445 4000 4001 4070 4447 4658 6 4446 4070 4071 4448 4658 4659 6 4447 4071 4449 4659 4660 4450 6 4448 4071 4072 4073 4074 4450 6 4449 4074 4075 4451 4660 4448 6 4450 4075 4452 4669 4738 4660 6 4451 4075 4076 4077 4453 4669 6 4452 4077 4078 4454 4669 4670 6 4453 4078 4079 4455 4670 4671 6 4454 4079 4080 4456 4671 4672 6 4455 4080 4081 4457 4672 4673 6 4456 4081 4082 4458 4673 4674 6 4457 4082 4083 4459 4674 4675 6 4458 4083 4084 4460 4675 4676 6 4459 4084 4085 4461 4676 4677 6 4460 4085 4462 4677 4678 4679 7 4461 4085 4033 4034 4041 4463 4679 5 4462 4041 4464 4679 4680 6 4463 4041 4042 4465 4471 4680 6 4464 4042 4466 4471 4472 4473 6 4465 4042 4043 4467 4473 4474 6 4466 4043 4044 4468 4474 4475 6 4467 4044 4045 4469 4475 4476 6 4468 4045 4047 4048 4470 4476 6 4469 4048 4049 4209 4476 4477 6 4464 4465 4472 4680 4681 4682 6 4471 4465 4473 4682 4683 4684 6 4472 4465 4466 4474 4684 4685 6 4473 4466 4467 4475 4685 4686 6 4474 4467 4468 4476 4686 4687 6 4475 4468 4469 4470 4477 4687 6 4476 4470 4209 4210 4478 4687 6 4477 4210 4212 4479 4687 5213 6 4478 4212 4214 4480 5213 5214 6 4479 4214 4481 5214 5215 5216 6 4480 4214 4215 4482 4490 5216 6 4481 4215 4217 4483 4490 4491 6 4482 4217 4232 4484 4491 4492 6 4483 4232 4485 4492 4493 4494 6 4484 4232 4233 4486 4494 4495 6 4485 4233 4235 4487 4489 4495 6 4486 4235 4488 4227 4489 4229 5 4487 4235 4227 4226 4225 6 4486 4487 4229 4495 4496 4500 6 4481 4482 4491 4981 4989 5216 6 4490 4482 4483 4492 4981 4982 6 4491 4483 4484 4493 4982 4983 6 4492 4484 4494 4983 4984 4985 6 4493 4484 4485 4495 4985 4497 6 4494 4485 4486 4489 4496 4497 6 4495 4489 4497 4498 4499 4500 6 4495 4496 4498 4985 4494 4986 6 4497 4496 4499 4986 4987 4988 5 4498 4496 4500 4988 4511 7 4499 4496 4489 4229 4230 4501 4511 6 4500 4230 4502 4511 4512 4513 6 4501 4230 4062 4513 4067 4063 6 4239 4240 4504 7816 4238 7817 6 4503 4240 4505 7817 7818 7819 6 4504 4240 4241 4506 7819 7820 6 4505 4241 4242 4416 4507 7820 6 4506 4416 4508 7820 7821 7822 6 4507 4416 4417 4509 7822 7823 6 4508 4417 4510 7823 7824 7825 6 4509 4417 4418 7825 7828 4419 7 4500 4501 4512 4988 4499 5002 4999 6 4511 4501 4513 4754 4759 5002 5 4512 4501 4502 4067 4754 6 426 411 4515 4516 5611 5612 6 4514 411 4516 4517 4521 410 6 4514 4515 4517 4518 5611 5615 6 4516 4515 4518 4519 4520 4521 6 4516 4517 4519 9734 7508 5615 6 4518 4517 4520 5235 9734 9678 6 4519 4517 4521 5235 5236 5237 6 4520 4517 4515 410 5237 421 7 3507 3510 3770 4523 6693 6695 6704 6 4522 3770 4524 6694 6693 4532 6 4523 3770 3771 4525 4526 4532 7 4524 3771 4526 4527 4400 4399 4528 6 4524 4525 4527 4532 4533 4534 5 4526 4525 4400 4534 4401 6 4399 4525 3771 3772 4529 4396 6 4528 3772 3773 4530 4396 9784 6 4529 3773 4531 4116 4119 9784 5 4530 3773 4116 3521 3520 6 4524 4526 4533 5156 4523 6694 6 4532 4526 4534 5156 5157 4666 6 4533 4526 4527 4401 4535 4666 6 4534 4401 4410 4536 4537 4666 6 4535 4410 4537 4538 4539 4411 6 4535 4536 4538 4666 4667 4668 6 4537 4536 4539 4540 4546 4668 6 4538 4536 4540 4541 4545 4411 6 4538 4539 4541 4542 4546 4547 6 4540 4539 4542 4543 4544 4545 6 4540 4541 4543 4550 4547 4551 6 4542 4541 4544 4551 4552 4553 6 4543 4541 4545 4414 4648 4553 6 4544 4541 4539 4411 4412 4414 6 4538 4540 4547 4548 9762 4668 6 4546 4540 4548 4549 4550 4542 6 4546 4547 4549 4557 4560 9762 6 4548 4547 4550 4557 4558 4559 6 4549 4547 4542 4551 6763 4559 6 4550 4542 4543 4552 7144 6763 6 4551 4543 4553 4554 7145 7144 6 4552 4543 4554 4555 4544 4648 6 4552 4553 4555 4556 7145 7146 6 4554 4553 4556 4648 4649 7153 6 4554 4555 7146 7148 7149 7153 6 4548 4549 4558 4560 4561 4562 6 4557 4549 4559 4565 4562 6764 6 4558 4549 6763 6762 6764 4550 7 4548 4557 4561 9762 9761 6675 9792 6 4560 4557 4562 4563 6674 6675 6 4561 4557 4563 4564 4565 4558 6 4561 4562 4564 6665 6666 6674 6 4563 4562 4565 6673 6665 6790 6 4564 4562 4558 6764 6765 6790 6 4309 4310 4567 4782 4783 4784 6 4566 4310 4311 4568 4784 4785 6 4567 4311 4312 4569 4785 4786 6 4568 4312 4313 4570 4786 4787 6 4569 4313 4314 4571 4787 4788 6 4570 4314 4315 4572 4788 4789 6 4571 4315 4316 4573 4789 4790 6 4572 4316 4317 4574 4790 4791 6 4573 4317 4318 4575 4791 4792 6 4574 4318 4319 4576 4792 4793 6 4575 4319 4320 4577 4793 4794 6 4576 4320 4321 4322 4578 4794 6 4577 4322 4323 4579 4794 4795 6 4578 4323 4580 4795 4796 4797 6 4579 4323 4324 4325 4581 4797 6 4580 4325 4582 4797 4798 4583 6 4581 4325 4326 4327 4328 4583 6 4582 4328 4329 4584 4798 4581 7 4583 4329 4330 4585 4586 4804 4798 6 4584 4330 4586 4587 4588 4589 5 4584 4585 4587 4804 4805 6 4586 4585 4588 4805 4806 4807 6 4587 4585 4589 4807 4808 4809 6 4588 4585 4330 4331 4590 4809 5 4589 4331 4332 4591 4809 6 4590 4332 4333 4592 4809 4810 6 4591 4333 4334 4429 4593 4810 6 4592 4429 4430 4594 4810 4811 6 4593 4430 4431 4595 4811 4812 6 4594 4431 4432 4596 4812 4813 6 4595 4432 4433 4597 4813 4814 6 4596 4433 4434 4598 4814 4815 6 4597 4434 4436 4599 4815 4816 6 4598 4436 4437 4600 4816 4817 6 4599 4437 4438 4601 4817 4818 6 4600 4438 4350 4602 4821 4818 6 4601 4350 4351 4603 4821 4822 6 4602 4351 4604 4825 4822 4826 7 4603 4351 4352 4353 4355 4605 4826 5 4604 4355 4606 4826 4827 6 4605 4355 4356 4362 4607 4827 5 4606 4362 4608 4609 4827 6 4607 4362 4609 4610 4611 4363 7 4607 4608 4610 4827 4828 4829 4830 6 4609 4608 4611 4830 4831 4832 6 4610 4608 4363 4612 4832 4834 6 4611 4363 4364 4613 4837 4834 6 4612 4364 4614 4616 4617 4837 6 4613 4364 4360 4368 4615 4616 7 4614 4368 4616 4637 4634 4619 4370 6 4614 4615 4613 4617 4618 4619 6 4613 4616 4618 4837 4622 4838 6 4617 4616 4619 4620 4621 4622 6 4618 4616 4620 4633 4634 4615 6 4618 4619 4621 4628 4629 4633 6 4618 4620 4622 4623 4624 4628 6 4618 4621 4623 4840 4838 4617 6 4622 4621 4624 4625 4840 4841 6 4623 4621 4625 4626 4627 4628 6 4623 4624 4626 4841 4860 4853 6 4625 4624 4627 4860 4861 4862 6 4626 4624 4628 4862 4863 4630 6 4627 4624 4621 4620 4629 4630 6 4628 4620 4630 4631 4632 4633 6 4628 4629 4631 4863 4627 4864 6 4630 4629 4632 4638 4868 4864 6 4631 4629 4633 4638 4639 4635 6 4632 4629 4620 4619 4634 4635 6 4633 4619 4635 4636 4637 4615 6 4633 4634 4636 4639 4632 4640 6 4635 4634 4637 4640 4641 4642 5 4636 4634 4615 4642 4370 6 4631 4632 4639 4868 4912 9760 6 4638 4632 4635 4640 4912 4913 6 4639 4635 4636 4641 4916 4913 6 4640 4636 4642 4910 4916 4909 7 4641 4636 4637 4908 4909 9794 4370 6 4424 4425 4644 5036 5037 5044 6 4643 4425 4645 5045 5044 6889 6 4644 4425 4426 4646 6890 6889 6 4645 4426 4427 4647 6890 6891 6 4646 4427 4428 4253 6891 6892 6 4544 4414 4553 4555 4649 4415 6 4555 4648 4415 7166 7154 7153 6 422 52 53 4651 4652 9684 6 4650 53 4652 4653 4657 54 6 4650 4651 4653 4654 9683 9684 6 4652 4651 4654 4655 4656 4657 6 4652 4653 4655 9682 9680 9683 6 4654 4653 4656 9682 9685 9686 7 4655 4653 4657 5380 9688 9686 9689 6 4656 4653 4651 54 5380 55 6 4446 4447 4659 4728 4445 4736 6 4658 4447 4448 4660 4736 4737 6 4659 4448 4450 4737 4738 4451 6 3895 3896 3897 4662 7841 4758 6 4661 3897 3898 4663 7841 7842 6 4662 3898 4664 7842 4689 4688 6 4663 3898 3899 4665 3685 4688 6 4664 3899 3900 3901 3902 3685 6 4534 4535 4537 4667 5157 4533 6 4666 4537 4668 9750 5157 9761 6 4667 4537 4538 9761 9762 4546 7 4451 4452 4453 4670 4980 4738 5194 6 4669 4453 4454 4671 5194 5195 6 4670 4454 4455 4672 5195 5196 6 4671 4455 4456 4673 5196 5197 6 4672 4456 4457 4674 5197 5198 6 4673 4457 4458 4675 5198 5199 6 4674 4458 4459 4676 5199 5200 6 4675 4459 4460 4677 5200 5201 6 4676 4460 4461 4678 5201 5202 6 4677 4461 4679 5202 5203 5204 6 4678 4461 4462 4463 4680 5204 7 4679 4463 4464 4471 4681 5204 5205 5 4680 4471 4682 5205 5206 7 4681 4471 4472 4683 5206 5207 5208 5 4682 4472 4684 5208 5209 7 4683 4472 4473 4685 5209 5210 5211 6 4684 4473 4474 4686 5211 5212 6 4685 4474 4475 4687 5212 5213 6 4686 4475 4476 4477 4478 5213 6 4664 3685 3686 3687 4689 4663 6 4688 3687 4690 7842 4663 7843 6 4689 3687 3688 4691 7843 7844 6 4690 3688 3689 4692 5158 7844 6 4691 3689 3690 3692 4693 5158 6 4692 3692 4694 5158 5159 5160 6 4693 3692 3693 4695 5160 5161 6 4694 3693 4696 5161 5162 5163 6 4695 3693 3694 3695 4697 5163 6 4696 3695 4698 5163 5164 5165 6 4697 3695 3696 4699 5165 4700 6 4698 3696 3697 3698 3972 4700 6 4699 3972 4701 5165 4698 7854 6 4700 3972 3973 3974 4702 7854 6 4701 3974 4703 7308 7854 7855 6 4702 3974 3975 4704 7308 7309 6 4703 3975 3976 4705 7309 7310 6 4704 3976 3977 4706 7310 7311 6 4705 3977 3978 4707 7311 7312 6 4706 3978 3979 4708 5170 7312 6 4707 3979 3980 4709 5170 5171 6 4708 3980 3981 4710 5171 5172 6 4709 3981 3982 4711 5172 5173 6 4710 3982 3983 4712 5173 5174 6 4711 3983 3984 4713 5174 5175 6 4712 3984 3985 4714 5175 5176 6 4713 3985 3986 4715 5176 5177 6 4714 3986 3987 4716 4965 5177 6 4715 3987 3988 4717 4965 4966 6 4716 3988 3989 4718 4966 4967 6 4717 3989 3990 4719 4967 4968 6 4718 3990 3991 4720 4968 4969 6 4719 3991 3992 4721 4969 4970 6 4720 3992 3993 4439 4722 4970 6 4721 4439 4723 4970 4971 4972 6 4722 4439 4440 4724 4972 4973 6 4723 4440 4441 4725 4973 4974 6 4724 4441 4442 4726 4733 4974 6 4725 4442 4443 4727 4733 4734 6 4726 4443 4444 4728 4734 4735 6 4727 4444 4445 4658 4735 4736 6 4254 4255 4730 4731 4732 4261 6 4254 4729 4731 6892 6893 6894 6 4730 4729 4732 6894 6895 6896 6 4731 4729 4261 6896 6901 4262 6 4725 4726 4734 4974 4975 4976 6 4733 4726 4727 4735 4976 4977 6 4734 4727 4728 4736 4977 4978 6 4735 4728 4658 4659 4737 4978 6 4736 4659 4660 4738 4978 4979 6 4737 4660 4451 4979 4980 4669 6 4248 4391 4740 5003 7830 7831 6 4739 4391 4392 4402 4741 5003 6 4740 4402 4742 4753 5003 5004 6 4741 4402 4403 4743 4753 4748 6 4742 4403 4744 3892 3893 4748 6 4743 4403 4404 4745 4746 3892 6 4744 4404 3465 3466 3468 4746 6 4745 3468 4747 3397 3892 4744 6 4746 3468 2172 2173 3395 3397 6 4743 3893 4749 4750 4753 4742 6 4748 3893 4750 4751 4752 3894 6 4748 4749 4751 5005 4753 7837 6 4750 4749 4752 4757 7837 7838 6 4751 4749 3894 4757 4758 3895 6 4741 4742 4748 5004 5005 4750 7 4513 4067 4068 4755 4512 4759 4760 5 4754 4068 4756 4760 4761 7 4755 4068 4069 3827 4761 4762 4763 6 4751 4752 4758 7838 7839 7840 6 4757 4752 3895 7840 7841 4661 6 4512 4754 4760 5006 5002 5001 5 4759 4754 4755 4761 5006 7 4760 4755 4756 4762 5006 5007 5008 6 4761 4756 4763 5008 5009 5010 6 4762 4756 3827 3828 4764 5010 6 4763 3828 4765 5010 5011 5012 6 4764 3828 3829 3830 4766 5012 6 4765 3830 3831 4767 4768 5012 6 4766 3831 4768 4769 4770 3832 7 4766 4767 4769 5012 5011 5013 5014 6 4768 4767 4770 5014 5015 5016 6 4769 4767 3832 5016 3834 3833 6 4297 4298 4772 4932 4933 4934 6 4771 4298 4299 4773 4934 4935 6 4772 4299 4300 4774 4935 4936 6 4773 4300 4301 4775 4936 4937 6 4774 4301 4302 4776 4937 4938 6 4775 4302 4303 4777 4938 4939 6 4776 4303 4304 4778 4939 4940 6 4777 4304 4305 4779 4940 4941 6 4778 4305 4306 4780 4941 4942 6 4779 4306 4307 4781 4942 4943 6 4780 4307 4308 4782 4943 4944 6 4781 4308 4309 4566 4783 4944 6 4782 4566 4784 4944 4945 4946 6 4783 4566 4567 4785 4946 4947 6 4784 4567 4568 4786 4947 4948 6 4785 4568 4569 4787 4948 4949 6 4786 4569 4570 4788 4949 4950 6 4787 4570 4571 4789 4950 4951 6 4788 4571 4572 4790 4951 4952 6 4789 4572 4573 4791 4952 4953 6 4790 4573 4574 4792 4953 4954 6 4791 4574 4575 4793 4799 4954 6 4792 4575 4576 4794 4799 4800 6 4793 4576 4577 4578 4795 4800 6 4794 4578 4579 4796 4800 4801 6 4795 4579 4797 4801 4802 4803 6 4796 4579 4580 4581 4798 4803 6 4797 4581 4583 4803 4804 4584 6 4792 4793 4800 4954 4955 4956 6 4799 4793 4794 4795 4801 4956 6 4800 4795 4796 4802 4956 4957 6 4801 4796 4803 4957 4958 4959 6 4802 4796 4797 4798 4804 4959 6 4803 4798 4584 4586 4805 4959 6 4804 4586 4587 4806 4918 4959 6 4805 4587 4807 4918 4919 4920 6 4806 4587 4588 4808 4920 4921 6 4807 4588 4809 4921 4922 4810 6 4808 4588 4589 4590 4591 4810 7 4809 4591 4592 4593 4811 4922 4808 5 4810 4593 4594 4812 4922 6 4811 4594 4595 4813 4964 4922 6 4812 4595 4596 4814 5093 4964 6 4813 4596 4597 4815 5093 5094 6 4814 4597 4598 4816 5094 5095 6 4815 4598 4599 4817 5095 5096 6 4816 4599 4600 4818 4819 5096 6 4817 4600 4819 4820 4821 4601 6 4817 4818 4820 5096 5097 5098 6 4819 4818 4821 5098 5099 4823 6 4820 4818 4601 4602 4822 4823 6 4821 4602 4823 4824 4825 4603 6 4821 4822 4824 5099 4820 5100 6 4823 4822 4825 5100 5101 5102 6 4824 4822 4603 4826 5102 5103 6 4825 4603 4604 4605 4827 5103 7 4826 4605 4606 4607 4609 4828 5103 6 4827 4609 4829 5103 5102 5104 6 4828 4609 4830 5104 5105 5106 6 4829 4609 4610 4831 5106 5107 6 4830 4610 4832 4833 5113 5107 5 4831 4610 4611 4833 4834 6 4831 4832 4834 4835 5113 5114 7 4833 4832 4611 4835 4836 4837 4612 6 4833 4834 4836 5114 4845 4844 6 4835 4834 4837 4838 4839 4844 6 4836 4834 4612 4613 4617 4838 6 4836 4837 4839 4840 4622 4617 6 4836 4838 4840 4842 4843 4844 6 4839 4838 4622 4623 4841 4842 6 4840 4623 4842 4625 4852 4853 6 4840 4841 4839 4843 4852 4850 6 4839 4842 4844 4845 4846 4850 5 4839 4843 4845 4835 4836 7 4844 4843 4846 4847 5114 4835 5115 6 4845 4843 4847 4848 4849 4850 6 4845 4846 4848 5117 5115 5118 6 4847 4846 4849 5118 5119 5120 6 4848 4846 4850 4851 5120 5121 6 4849 4846 4851 4852 4842 4843 6 4849 4850 4852 4854 4855 5121 6 4851 4850 4842 4841 4853 4854 6 4852 4841 4854 4857 4860 4625 6 4851 4852 4853 4855 4856 4857 6 4851 4854 4856 5121 5122 5123 6 4855 4854 4857 4858 5123 5124 6 4856 4854 4853 4858 4859 4860 6 4856 4857 4859 5124 5125 5129 6 4858 4857 4860 5129 5130 4861 6 4859 4857 4853 4625 4626 4861 6 4860 4626 4862 5130 4859 5131 6 4861 4626 4627 4863 4865 5131 6 4862 4627 4630 4864 4865 4866 6 4863 4630 4866 4867 4868 4631 6 4862 4863 4866 5131 5132 5136 6 4865 4863 4864 4867 5136 5137 6 4866 4864 4868 4869 4870 5137 6 4867 4864 4631 4638 4869 9760 6 4867 4868 4870 4871 4872 9760 6 4867 4869 4871 5137 5138 5139 6 4870 4869 4872 4873 5150 5139 6 4871 4869 4873 4874 4875 9760 6 4871 4872 4874 5149 5147 5150 6 4873 4872 4875 4876 4877 5149 6 4874 4872 4876 9760 4912 4914 6 4874 4875 4877 4878 4879 4914 6 4874 4876 4878 5155 5149 4882 6 4877 4876 4879 4880 4881 4882 6 4878 4876 4880 4914 4915 9753 7 4878 4879 4881 9753 9754 9756 9757 6 4878 4880 4882 4883 4884 9757 6 4878 4881 4883 5155 4877 5369 6 4882 4881 4884 4885 5369 5370 6 4883 4881 4885 4886 9757 4895 6 4883 4884 4886 4887 4888 5370 6 4885 4884 4887 4894 4891 4895 6 4885 4886 4888 4889 4890 4891 6 4885 4887 4889 5372 5370 5899 6 4888 4887 4890 5898 5896 5899 6 4889 4887 4891 4892 5898 5901 6 4890 4887 4892 4893 4894 4886 6 4890 4891 4893 5901 5902 5903 6 4892 4891 4894 5912 5903 5913 6 4893 4891 4886 4895 4896 5913 7 4894 4886 4896 4897 9757 9756 4884 6 4894 4895 4897 4898 4899 5913 5 4896 4895 4898 9756 9759 6 4896 4897 4899 4900 4901 9759 6 4896 4898 4900 5913 5914 5917 6 4899 4898 4901 4902 5917 5918 6 4900 4898 4902 4903 4904 9759 6 4900 4901 4903 5918 3671 3670 6 4902 4901 4904 4905 3669 3670 6 4903 4901 4905 9754 4911 9759 6 4903 4904 3669 4906 4907 4911 6 3669 4905 4907 4908 3661 3660 6 4906 4905 4908 4909 4910 4911 7 4906 4907 4909 4642 3660 9793 9794 5 4908 4907 4910 4642 4641 6 4909 4907 4911 4917 4916 4641 6 4910 4907 4905 9754 4917 4904 6 4638 4639 4913 4914 9760 4875 6 4912 4639 4914 4915 4916 4640 6 4912 4913 4915 4875 4876 4879 6 4914 4913 4916 4917 9753 4879 6 4915 4913 4917 4910 4641 4640 6 4915 4916 4910 9753 9754 4911 6 4805 4806 4919 4959 4958 4960 6 4918 4806 4920 4960 4961 4962 6 4919 4806 4807 4921 4962 4963 6 4920 4807 4808 4922 4963 4964 6 4921 4808 4810 4964 4812 4811 6 4287 4288 4924 5052 5053 5054 6 4923 4288 4289 4290 4925 5054 6 4924 4290 4926 5054 5055 5056 6 4925 4290 4291 4927 5056 5057 6 4926 4291 4292 4928 5057 5058 6 4927 4292 4293 4929 5058 5059 6 4928 4293 4294 4930 5059 5060 6 4929 4294 4295 4931 5060 5061 6 4930 4295 4296 4297 4932 5061 6 4931 4297 4771 4933 5061 5062 6 4932 4771 4934 5062 5063 5064 6 4933 4771 4772 4935 5064 5065 6 4934 4772 4773 4936 5065 5066 6 4935 4773 4774 4937 5066 5067 6 4936 4774 4775 4938 5067 5068 6 4937 4775 4776 4939 5068 5069 6 4938 4776 4777 4940 5069 5070 6 4939 4777 4778 4941 5070 5071 6 4940 4778 4779 4942 5071 5072 6 4941 4779 4780 4943 5072 5073 6 4942 4780 4781 4944 5073 5074 6 4943 4781 4782 4783 4945 5074 6 4944 4783 4946 5074 5075 5076 6 4945 4783 4784 4947 5076 5077 6 4946 4784 4785 4948 5077 5078 6 4947 4785 4786 4949 5078 5079 6 4948 4786 4787 4950 5079 5080 6 4949 4787 4788 4951 5080 5081 6 4950 4788 4789 4952 5081 5082 6 4951 4789 4790 4953 5082 5083 6 4952 4790 4791 4954 5083 5084 6 4953 4791 4792 4799 4955 5084 6 4954 4799 4956 5084 5085 5086 6 4955 4799 4800 4801 4957 5086 6 4956 4801 4802 4958 5088 5086 6 4957 4802 4959 4918 4960 5088 6 4958 4802 4803 4804 4805 4918 6 4958 4918 4919 4961 5088 5089 6 4960 4919 4962 5089 5090 5091 6 4961 4919 4920 4963 5091 5092 6 4962 4920 4921 4964 5092 5093 6 4963 4921 4922 4812 5093 4813 6 4715 4716 4966 5177 5178 5179 6 4965 4716 4717 4967 5179 5180 6 4966 4717 4718 4968 5180 5181 6 4967 4718 4719 4969 5181 5182 6 4968 4719 4720 4970 5182 5183 6 4969 4720 4721 4722 4971 5183 6 4970 4722 4972 5183 5184 5185 6 4971 4722 4723 4973 5185 5186 6 4972 4723 4724 4974 5186 5187 6 4973 4724 4725 4733 4975 5187 6 4974 4733 4976 5187 5188 5189 6 4975 4733 4734 4977 5189 5190 6 4976 4734 4735 4978 5190 5191 6 4977 4735 4736 4737 4979 5191 6 4978 4737 4738 4980 5191 5192 6 4979 4738 4669 5192 5193 5194 6 4490 4491 4982 4989 4990 4991 6 4981 4491 4492 4983 4991 4992 6 4982 4492 4493 4984 4992 4993 6 4983 4493 4985 4993 4994 4995 6 4984 4493 4494 4497 4986 4995 6 4985 4497 4498 4987 4995 4996 6 4986 4498 4988 4996 4997 4998 6 4987 4498 4499 4511 4998 4999 6 4490 4981 4990 5216 5217 5218 6 4989 4981 4991 5218 5219 5220 6 4990 4981 4982 4992 5220 5221 6 4991 4982 4983 4993 5221 5222 6 4992 4983 4984 4994 5222 5223 6 4993 4984 4995 5223 5224 5225 6 4994 4984 4985 4986 4996 5225 6 4995 4986 4987 4997 5225 5226 6 4996 4987 4998 5226 5227 5228 6 4997 4987 4988 4999 5000 5228 6 4998 4988 5000 5001 5002 4511 6 4998 4999 5001 5228 5229 5230 7 5000 4999 5002 4759 5006 5166 5230 5 5001 4999 4511 4512 4759 6 4739 4740 4741 5004 7831 7834 6 5003 4741 4753 5005 7834 7835 6 5004 4753 4750 7835 7836 7837 7 4759 4760 4761 5007 5021 5001 5166 6 5006 4761 5008 5021 5022 5023 6 5007 4761 4762 5009 5023 5018 6 5008 4762 5010 5011 5017 5018 5 5009 4762 4763 4764 5011 7 5010 4764 5012 4768 5013 5009 5017 5 5011 4764 4765 4766 4768 6 5011 4768 5014 5020 5017 5241 6 5013 4768 4769 5015 5241 5242 6 5014 4769 5016 5242 5243 5024 5 5015 4769 4770 3834 5024 6 5009 5011 5018 5019 5020 5013 7 5009 5017 5019 5023 5008 5238 6833 6 5018 5017 5020 5238 5239 5240 5 5019 5017 5013 5240 5241 5 5006 5007 5022 5166 5167 6 5021 5007 5023 5167 5168 5169 6 5022 5007 5008 5018 5169 6833 7 5016 3834 3835 5025 5243 5015 5244 6 5024 3835 3836 5026 5244 5245 6 5025 3836 3837 4405 5027 5245 6 5026 4405 4406 5028 5245 5246 6 5027 4406 5029 5249 5246 6844 6 5028 4406 4407 5030 6844 6845 6 5029 4407 4408 5031 6845 6846 6 5030 4408 4409 5032 6849 6846 6 5031 4409 4420 5033 6849 6850 6 5032 4420 4421 4422 5034 6850 6 5033 4422 5035 6850 6851 6852 6 5034 4422 4423 5036 6852 5038 6 5035 4423 4424 4643 5037 5038 6 5036 4643 5038 5039 5040 5044 6 5036 5037 5039 6852 5035 6853 6 5038 5037 5040 5041 6856 6853 6 5039 5037 5041 5042 5043 5044 6 5039 5040 5042 6858 6856 6863 6 5041 5040 5043 6878 6879 6863 6 5042 5040 5044 5045 6880 6878 6 5043 5040 5045 4644 4643 5037 6 5043 5044 4644 6880 6881 6889 6 4280 4281 5047 5474 5475 5476 6 5046 4281 4282 5048 5476 5477 6 5047 4282 4283 5049 5477 5478 6 5048 4283 4284 5050 5478 5479 6 5049 4284 4285 5051 5479 5480 6 5050 4285 4286 5052 5480 5481 6 5051 4286 4287 4923 5053 5481 6 5052 4923 5054 5481 5482 5483 6 5053 4923 4924 4925 5055 5483 6 5054 4925 5056 5483 5484 5485 6 5055 4925 4926 5057 5485 5486 6 5056 4926 4927 5058 5486 5487 6 5057 4927 4928 5059 5487 5488 6 5058 4928 4929 5060 5488 5489 6 5059 4929 4930 5061 5489 5490 6 5060 4930 4931 4932 5062 5490 6 5061 4932 4933 5063 5490 5491 6 5062 4933 5064 5250 5491 5492 6 5063 4933 4934 5065 5250 5251 6 5064 4934 4935 5066 5251 5252 6 5065 4935 4936 5067 5252 5253 6 5066 4936 4937 5068 5253 5254 6 5067 4937 4938 5069 5254 5255 6 5068 4938 4939 5070 5255 5256 6 5069 4939 4940 5071 5256 5257 6 5070 4940 4941 5072 5257 5258 6 5071 4941 4942 5073 5258 5259 6 5072 4942 4943 5074 5259 5260 6 5073 4943 4944 4945 5075 5260 6 5074 4945 5076 5260 5261 5262 6 5075 4945 4946 5077 5262 5263 6 5076 4946 4947 5078 5263 5264 6 5077 4947 4948 5079 5264 5265 6 5078 4948 4949 5080 5265 5266 6 5079 4949 4950 5081 5266 5267 6 5080 4950 4951 5082 5267 5268 6 5081 4951 4952 5083 5268 5269 6 5082 4952 4953 5084 5269 5270 6 5083 4953 4954 4955 5085 5270 6 5084 4955 5086 5087 5270 5271 6 5085 4955 4956 5087 5088 4957 6 5085 5086 5088 5271 5272 5089 6 5087 5086 4957 4958 4960 5089 6 5088 4960 4961 5090 5272 5087 6 5089 4961 5091 5272 5273 5274 6 5090 4961 4962 5092 5274 5275 6 5091 4962 4963 5093 5275 5276 7 5092 4963 4964 4813 4814 5094 5276 6 5093 4814 4815 5095 5276 5277 6 5094 4815 4816 5096 5277 5278 6 5095 4816 4817 4819 5097 5278 6 5096 4819 5098 5278 5279 5280 6 5097 4819 4820 5099 5280 5281 6 5098 4820 4823 5100 5281 5282 6 5099 4823 4824 5101 5282 5152 6 5100 4824 5102 5104 5151 5152 6 5101 4824 4825 5103 4828 5104 5 5102 4825 4826 4827 4828 6 5102 4828 4829 5105 5101 5151 7 5104 4829 5106 5154 5151 5287 5288 6 5105 4829 4830 5107 5108 5288 6 5106 4830 5108 5109 5113 4831 6 5106 5107 5109 5110 5288 5289 6 5108 5107 5110 5111 5112 5113 6 5108 5109 5111 5289 5290 5294 6 5110 5109 5112 5294 5295 5116 6 5111 5109 5113 5114 5115 5116 6 5112 5109 5107 4831 4833 5114 6 5113 4833 4835 4845 5115 5112 6 5114 4845 5112 5116 5117 4847 6 5112 5115 5117 5295 5111 5296 6 5116 5115 4847 5118 5299 5296 6 5117 4847 4848 5119 5299 5300 6 5118 4848 5120 5300 5301 5302 5 5119 4848 4849 5121 5302 6 5120 4849 4851 4855 5122 5302 6 5121 4855 5123 5318 5302 5319 6 5122 4855 4856 5124 5321 5319 6 5123 4856 4858 5125 5126 5321 6 5124 4858 5126 5127 5128 5129 6 5124 5125 5127 5322 5321 5323 6 5126 5125 5128 5323 5324 5328 6 5127 5125 5129 5336 5328 5337 6 5128 5125 4858 4859 5130 5337 6 5129 4859 4861 5131 5337 5338 7 5130 4861 4862 4865 5132 5133 5338 6 5131 4865 5133 5134 5135 5136 5 5131 5132 5134 5338 5339 6 5133 5132 5135 5339 5340 5341 6 5134 5132 5136 5346 5344 5341 6 5135 5132 4865 4866 5137 5346 6 5136 4866 4867 4870 5138 5346 6 5137 4870 5139 5140 5344 5346 6 5138 4870 5140 5141 4871 5150 6 5138 5139 5141 5142 5345 5344 6 5140 5139 5142 5143 5144 5150 6 5140 5141 5143 5345 5360 5359 7 5142 5141 5144 5145 5360 5357 5361 6 5143 5141 5145 5146 5147 5150 6 5143 5144 5146 5361 5362 5366 5 5145 5144 5147 5148 5366 6 5146 5144 5148 5149 4873 5150 7 5146 5147 5149 5155 5366 5367 5368 6 5148 5147 4873 5155 4877 4874 6 4873 5147 4871 5139 5141 5144 6 5101 5104 5152 5153 5154 5105 6 5101 5151 5153 5282 5100 5283 6 5152 5151 5154 5283 5284 5285 6 5153 5151 5105 5285 5286 5287 6 5148 5149 4877 4882 5368 5369 7 4532 4533 5157 6682 6683 6684 6694 6 5156 4533 4666 6682 9750 4667 5 4691 4692 4693 5159 7844 7 5158 4693 5160 7844 7845 7846 7847 6 5159 4693 4694 5161 7847 7848 6 5160 4694 4695 5162 7848 7849 6 5161 4695 5163 7849 7850 7851 6 5162 4695 4696 4697 5164 7851 6 5163 4697 5165 7851 7852 7853 6 5164 4697 4698 4700 7853 7854 5 5001 5006 5021 5167 5230 8 5166 5021 5022 5168 5229 5230 6826 6824 6 5167 5022 5169 6826 6827 6830 7 5168 5022 5023 6830 6831 6832 6833 6 4707 4708 5171 7312 7313 7314 6 5170 4708 4709 5172 7314 7315 6 5171 4709 4710 5173 7315 7316 6 5172 4710 4711 5174 7316 7317 6 5173 4711 4712 5175 7317 7318 6 5174 4712 4713 5176 7318 7319 6 5175 4713 4714 5177 7319 7320 6 5176 4714 4715 4965 5178 7320 6 5177 4965 5179 7320 7321 7322 6 5178 4965 4966 5180 7322 7323 6 5179 4966 4967 5181 5411 7323 6 5180 4967 4968 5182 5411 5412 6 5181 4968 4969 5183 5412 5413 6 5182 4969 4970 4971 5184 5413 6 5183 4971 5185 5413 5414 5415 6 5184 4971 4972 5186 5403 5415 6 5185 4972 4973 5187 5403 5404 6 5186 4973 4974 4975 5188 5404 6 5187 4975 5189 5404 5405 5406 6 5188 4975 4976 5190 5406 5407 6 5189 4976 4977 5191 5407 5408 6 5190 4977 4978 4979 5192 5408 6 5191 4979 4980 5193 5408 5409 6 5192 4980 5194 5409 5410 5195 5 5193 4980 4669 4670 5195 6 5194 4670 4671 5196 5410 5193 7 5195 4671 4672 5197 5423 5410 5431 5 5196 4672 4673 5198 5431 7 5197 4673 4674 5199 5431 5432 5433 6 5198 4674 4675 5200 5433 5434 6 5199 4675 4676 5201 5434 5435 6 5200 4676 4677 5202 5435 5436 6 5201 4677 4678 5203 5436 5437 6 5202 4678 5204 5437 5438 5439 6 5203 4678 4679 4680 5205 5439 5 5204 4680 4681 5206 5439 7 5205 4681 4682 5207 5439 5440 5441 6 5206 4682 5208 5441 5442 5443 6 5207 4682 4683 5209 5424 5443 7 5208 4683 4684 5210 5424 5425 5426 5 5209 4684 5211 5426 5427 7 5210 4684 4685 5212 5427 5215 5214 5 5211 4685 4686 5213 5214 6 5212 4686 4687 4478 4479 5214 6 5213 4479 4480 5215 5211 5212 6 5214 4480 5216 5427 5211 5217 6 5215 4480 4481 4490 4989 5217 7 5216 4989 5218 5447 5427 5215 6810 6 5217 4989 4990 5219 6810 6811 6 5218 4990 5220 6811 6812 6813 6 5219 4990 4991 5221 6813 6814 5 5220 4991 4992 5222 6814 7 5221 4992 4993 5223 6814 6815 6816 5 5222 4993 4994 5224 6816 7 5223 4994 5225 6816 6817 6818 6819 6 5224 4994 4995 4996 5226 6819 6 5225 4996 4997 5227 6819 6820 6 5226 4997 5228 6820 6821 6822 6 5227 4997 4998 5000 5229 6822 7 5228 5000 5230 5167 6822 6823 6824 5 5229 5000 5167 5166 5001 6 4264 4265 5232 6902 6903 5458 6 5231 4265 4266 5233 5448 5458 6 5232 4266 4267 5234 5448 5449 6 5233 4267 4269 5449 5450 5451 6 4519 4520 5236 9677 9678 9679 6 5235 4520 5237 9679 9683 9684 6 5236 4520 4521 422 9684 421 6 5018 5019 5239 6832 6833 6834 6 5238 5019 5240 5648 6834 6835 6 5239 5019 5020 5241 5648 5649 7 5240 5020 5013 5014 5242 5649 5650 5 5241 5014 5015 5243 5650 7 5242 5015 5024 5244 5652 5650 5653 6 5243 5024 5025 5245 5653 5247 6 5244 5025 5026 5027 5246 5247 6 5245 5027 5247 5248 5249 5028 6 5245 5246 5248 5653 5244 6840 6 5247 5246 5249 6841 6840 6842 6 5248 5246 5028 6842 6843 6844 6 5063 5064 5251 5492 5493 5494 6 5250 5064 5065 5252 5494 5495 6 5251 5065 5066 5253 5495 5496 6 5252 5066 5067 5254 5496 5497 6 5253 5067 5068 5255 5497 5498 6 5254 5068 5069 5256 5498 5499 6 5255 5069 5070 5257 5499 5500 6 5256 5070 5071 5258 5500 5501 6 5257 5071 5072 5259 5501 5502 6 5258 5072 5073 5260 5502 5503 6 5259 5073 5074 5075 5261 5503 6 5260 5075 5262 5503 5504 5505 6 5261 5075 5076 5263 5505 5506 6 5262 5076 5077 5264 5506 5507 6 5263 5077 5078 5265 5507 5508 6 5264 5078 5079 5266 5508 5509 6 5265 5079 5080 5267 5509 5510 6 5266 5080 5081 5268 5510 5511 6 5267 5081 5082 5269 5511 5512 6 5268 5082 5083 5270 5512 5513 6 5269 5083 5084 5085 5271 5513 6 5270 5085 5087 5272 5513 5514 6 5271 5087 5089 5090 5273 5514 6 5272 5090 5274 5514 5515 5516 6 5273 5090 5091 5275 5519 5516 6 5274 5091 5092 5276 5519 5277 5 5275 5092 5093 5094 5277 6 5276 5094 5095 5278 5519 5275 6 5277 5095 5096 5097 5279 5519 6 5278 5097 5280 5519 5518 5520 6 5279 5097 5098 5281 5520 5377 6 5280 5098 5099 5282 5376 5377 6 5281 5099 5100 5152 5283 5376 6 5282 5152 5153 5284 5379 5376 6 5283 5153 5285 5524 5379 5525 6 5284 5153 5154 5286 5525 5526 6 5285 5154 5287 5526 5527 5291 6 5286 5154 5105 5288 5291 5289 5 5287 5105 5106 5108 5289 6 5288 5108 5110 5290 5291 5287 6 5289 5110 5291 5292 5293 5294 7 5289 5290 5292 5527 5286 5287 5528 6 5291 5290 5293 5528 5529 5533 5 5292 5290 5294 5533 5534 6 5293 5290 5110 5111 5295 5534 6 5294 5111 5116 5296 5297 5534 6 5295 5116 5297 5298 5299 5117 6 5295 5296 5298 5534 5535 5542 6 5297 5296 5299 5542 5543 5544 6 5298 5296 5117 5118 5300 5544 6 5299 5118 5119 5301 5304 5544 6 5300 5119 5302 5303 5304 5305 7 5301 5119 5303 5318 5122 5120 5121 6 5301 5302 5308 5305 5309 5318 6 5300 5301 5305 5306 5543 5544 6 5304 5301 5306 5307 5308 5303 6 5304 5305 5307 5543 5545 5546 6 5306 5305 5308 5311 5312 5546 6 5307 5305 5303 5309 5310 5311 6 5308 5303 5310 5316 5317 5318 6 5308 5309 5311 5314 5315 5316 6 5308 5310 5307 5312 5313 5314 6 5307 5311 5313 5546 5547 5548 6 5312 5311 5314 5548 5549 5550 6 5313 5311 5310 5315 5553 5550 6 5314 5310 5316 5555 5553 5558 6 5315 5310 5309 5317 5558 5559 6 5316 5309 5318 5319 5320 5559 6 5317 5309 5303 5302 5122 5319 6 5318 5122 5317 5320 5321 5123 6 5317 5319 5321 5322 5559 5560 6 5320 5319 5322 5126 5124 5123 6 5320 5321 5126 5323 5560 5561 6 5322 5126 5127 5324 5325 5561 6 5323 5127 5325 5326 5327 5328 6 5323 5324 5326 5561 5562 5563 6 5325 5324 5327 5572 5563 5573 6 5326 5324 5328 5329 5330 5573 6 5327 5324 5329 5336 5128 5127 6 5327 5328 5330 5331 5332 5336 6 5327 5329 5331 5573 5574 5575 6 5330 5329 5332 5333 5575 5576 6 5331 5329 5333 5334 5335 5336 6 5331 5332 5334 5576 5577 5578 6 5333 5332 5335 5578 5340 5339 6 5334 5332 5336 5337 5338 5339 6 5335 5332 5329 5328 5128 5337 6 5336 5128 5129 5130 5335 5338 6 5335 5337 5130 5131 5133 5339 6 5338 5133 5134 5340 5334 5335 6 5339 5134 5341 5342 5578 5334 6 5340 5134 5342 5343 5344 5135 6 5340 5341 5343 5348 5349 5578 6 5342 5341 5344 5345 5347 5348 7 5343 5341 5345 5140 5138 5346 5135 6 5343 5344 5140 5142 5347 5359 5 5138 5344 5135 5136 5137 6 5343 5345 5348 5351 5352 5359 6 5343 5347 5342 5349 5350 5351 6 5342 5348 5350 5578 5577 5579 6 5349 5348 5351 5579 5580 5584 6 5350 5348 5347 5352 5353 5584 6 5351 5347 5353 5354 5355 5359 6 5351 5352 5354 5608 5584 5609 6 5353 5352 5355 5356 5807 5609 6 5354 5352 5356 5357 5359 5360 6 5354 5355 5357 5358 5807 5808 6 5356 5355 5358 5360 5143 5361 7 5356 5357 5808 5809 5810 5363 5361 6 5355 5352 5347 5360 5142 5345 5 5355 5359 5142 5143 5357 6 5357 5143 5145 5362 5363 5358 6 5361 5145 5363 5364 5365 5366 5 5361 5362 5364 5810 5358 6 5363 5362 5365 5810 5811 5402 7 5364 5362 5366 5402 5401 5367 5375 6 5365 5362 5145 5146 5148 5367 6 5366 5148 5368 5374 5365 5375 6 5367 5148 5155 5369 5371 5374 6 5368 5155 4882 4883 5370 5371 6 5369 4883 5371 5372 4888 4885 6 5369 5370 5372 5373 5374 5368 6 5371 5370 5373 4888 5393 5899 6 5371 5372 5374 5375 5392 5393 5 5371 5373 5375 5368 5367 6 5374 5373 5392 5365 5367 5401 6 5281 5282 5377 5378 5379 5283 6 5281 5376 5378 5520 5280 5521 6 5377 5376 5379 5521 5522 5523 6 5378 5376 5283 5523 5524 5284 6 4656 4657 55 9689 430 56 6 1679 1680 1678 5382 5383 1682 6 1678 5381 5383 5384 7779 3415 6 5382 5381 5384 5385 3774 1682 6 5382 5383 5385 5386 7779 7780 6 5384 5383 5386 5387 5391 3774 6 5384 5385 5387 5388 7780 7781 6 5386 5385 5388 5389 5390 5391 6 5386 5387 5389 5616 7781 7782 6 5388 5387 5390 5616 5617 5618 6 5389 5387 5391 5618 5619 5620 6 5390 5387 5385 3774 5620 3775 6 5375 5373 5393 5394 5401 5398 6 5392 5373 5394 5372 5395 5899 6 5392 5393 5395 5396 5397 5398 5 5394 5393 5396 5899 5894 6 5394 5395 5397 5893 5890 5894 6 5394 5396 5398 5399 5889 5890 6 5394 5397 5399 5400 5401 5392 6 5398 5397 5400 5880 5888 5889 7 5398 5399 5401 5402 5887 5881 5880 6 5398 5400 5402 5365 5375 5392 6 5401 5400 5887 5811 5364 5365 6 5185 5186 5404 5415 5416 5417 6 5403 5186 5187 5188 5405 5417 6 5404 5188 5406 5417 5418 5419 6 5405 5188 5189 5407 5419 5420 6 5406 5189 5190 5408 5420 5421 6 5407 5190 5191 5192 5409 5421 6 5408 5192 5193 5410 5421 5422 6 5409 5193 5195 5422 5423 5196 6 5180 5181 5412 7323 7324 7325 6 5411 5181 5182 5413 7325 7326 6 5412 5182 5183 5184 5414 7326 6 5413 5184 5415 7326 7327 7328 6 5414 5184 5185 5403 5416 7328 6 5415 5403 5417 7328 7329 7330 6 5416 5403 5404 5405 5418 7330 6 5417 5405 5419 6791 7330 7331 6 5418 5405 5406 5420 6791 6792 6 5419 5406 5407 5421 5428 6792 6 5420 5407 5408 5409 5422 5428 6 5421 5409 5410 5423 5428 5429 6 5422 5410 5196 5429 5430 5431 6 5208 5209 5425 5443 5444 5445 6 5424 5209 5426 5445 5446 5447 5 5425 5209 5210 5427 5447 6 5426 5210 5211 5215 5447 5217 6 5420 5421 5422 5429 6792 6793 6 5428 5422 5423 5430 6793 6794 6 5429 5423 5431 6794 6795 5432 6 5430 5423 5196 5197 5198 5432 5 5431 5198 5433 6795 5430 6 5432 5198 5199 5434 6795 6796 6 5433 5199 5200 5435 6796 6797 6 5434 5200 5201 5436 6797 6798 6 5435 5201 5202 5437 6798 6799 6 5436 5202 5203 5438 6799 6800 6 5437 5203 5439 6800 6801 6802 7 5438 5203 5204 5205 5206 5440 6802 5 5439 5206 5441 6802 6803 6 5440 5206 5207 5442 6803 6804 6 5441 5207 5443 6804 6805 5444 5 5442 5207 5208 5424 5444 6 5443 5424 5445 6805 5442 6806 6 5444 5424 5425 5446 6806 6807 6 5445 5425 5447 6807 6808 6809 7 5446 5425 5426 5427 5217 6809 6810 6 5232 5233 5449 5458 5459 5460 6 5448 5233 5234 5450 5460 5461 6 5449 5234 5451 5461 5462 5463 6 5450 5234 4269 4270 5452 5463 6 5451 4270 4271 5453 5463 5464 6 5452 4271 4272 5454 5455 5464 6 5453 4272 5455 5456 5457 4273 6 5453 5454 5456 5464 5465 5466 6 5455 5454 5457 5466 5467 5468 6 5456 5454 4273 5468 5469 4274 6 5232 5448 5459 6903 5231 6904 6 5458 5448 5460 6904 6905 6906 6 5459 5448 5449 5461 6906 6907 6 5460 5449 5450 5462 6907 6908 6 5461 5450 5463 6908 6909 6910 6 5462 5450 5451 5452 5464 6910 6 5463 5452 5453 5455 5465 6910 6 5464 5455 5466 6910 6911 6912 6 5465 5455 5456 5467 6912 6913 6 5466 5456 5468 6913 6914 6915 6 5467 5456 5457 5469 6915 6916 6 5468 5457 4274 4275 5470 6916 6 5469 4275 4276 4277 5471 6916 6 5470 4277 5472 6916 6917 6918 6 5471 4277 4278 5473 6918 6919 6 5472 4278 4279 5474 6919 6920 6 5473 4279 4280 5046 5475 6920 6 5474 5046 5476 6920 6921 6922 6 5475 5046 5047 5477 6922 6923 6 5476 5047 5048 5478 6923 6924 6 5477 5048 5049 5479 6924 6925 6 5478 5049 5050 5480 6925 6926 6 5479 5050 5051 5481 5654 6926 6 5480 5051 5052 5053 5482 5654 6 5481 5053 5483 5654 5655 5656 6 5482 5053 5054 5055 5484 5656 6 5483 5055 5485 5656 5657 5658 6 5484 5055 5056 5486 5658 5659 6 5485 5056 5057 5487 5659 5660 6 5486 5057 5058 5488 5660 5661 6 5487 5058 5059 5489 5621 5661 6 5488 5059 5060 5490 5621 5622 6 5489 5060 5061 5062 5491 5622 6 5490 5062 5063 5492 5622 5623 6 5491 5063 5250 5493 5623 5624 6 5492 5250 5494 5624 5625 5626 6 5493 5250 5251 5495 5626 5627 6 5494 5251 5252 5496 5627 5628 6 5495 5252 5253 5497 5628 5629 6 5496 5253 5254 5498 5629 5630 6 5497 5254 5255 5499 5630 5631 6 5498 5255 5256 5500 5631 5632 6 5499 5256 5257 5501 5632 5633 6 5500 5257 5258 5502 5633 5634 6 5501 5258 5259 5503 5634 5635 6 5502 5259 5260 5261 5504 5635 6 5503 5261 5505 5635 5636 5637 6 5504 5261 5262 5506 5637 5638 6 5505 5262 5263 5507 5638 5639 6 5506 5263 5264 5508 5639 5640 6 5507 5264 5265 5509 5640 5641 6 5508 5265 5266 5510 5641 5642 6 5509 5266 5267 5511 5642 5643 6 5510 5267 5268 5512 5643 5644 6 5511 5268 5269 5513 5644 5645 6 5512 5269 5270 5271 5514 5645 6 5513 5271 5272 5273 5515 5645 6 5514 5273 5516 5517 5645 5646 6 5515 5273 5517 5518 5519 5274 6 5515 5516 5518 5646 5647 5520 5 5517 5516 5519 5279 5520 7 5518 5516 5274 5275 5277 5278 5279 7 5518 5279 5280 5377 5521 5647 5517 5 5520 5377 5378 5522 5647 7 5521 5378 5523 5685 5647 5684 5686 6 5522 5378 5379 5524 5687 5686 6 5523 5379 5284 5525 5687 5688 6 5524 5284 5285 5526 5688 5689 6 5525 5285 5286 5527 5689 5690 6 5526 5286 5291 5528 5690 5691 6 5527 5291 5292 5529 5530 5691 6 5528 5292 5530 5531 5532 5533 5 5528 5529 5531 5691 5692 6 5530 5529 5532 5692 5693 5694 7 5531 5529 5533 5694 5695 5538 5536 6 5532 5529 5292 5293 5534 5536 7 5533 5293 5294 5295 5297 5535 5536 6 5534 5297 5536 5537 5541 5542 6 5534 5535 5537 5538 5532 5533 6 5536 5535 5538 5539 5540 5541 6 5536 5537 5539 5695 5532 5696 6 5538 5537 5540 5696 5697 5698 7 5539 5537 5541 5698 5699 5700 9795 5 5540 5537 5535 5542 9795 6 5541 5535 5297 5298 5543 9795 7 5542 5298 5544 5304 5306 5545 9795 5 5543 5298 5304 5300 5299 6 5543 5306 5546 5701 5700 9795 6 5545 5306 5307 5312 5547 5701 6 5546 5312 5548 5701 5702 5703 6 5547 5312 5313 5549 5703 5704 6 5548 5313 5550 5551 5704 5705 6 5549 5313 5551 5552 5553 5314 6 5549 5550 5552 5705 5706 5707 6 5551 5550 5553 5554 5707 5708 6 5552 5550 5314 5554 5555 5315 6 5552 5553 5555 5556 5708 5709 6 5554 5553 5315 5556 5557 5558 6 5554 5555 5557 5709 5710 5711 6 5556 5555 5558 5714 5711 5715 6 5557 5555 5315 5316 5559 5715 6 5558 5316 5317 5320 5560 5715 6 5559 5320 5322 5561 5716 5715 6 5560 5322 5323 5325 5562 5716 6 5561 5325 5563 5564 5717 5716 6 5562 5325 5564 5565 5572 5326 6 5562 5563 5565 5566 5717 5713 6 5564 5563 5566 5567 5571 5572 6 5564 5565 5567 5568 5753 5713 6 5566 5565 5568 5569 5570 5571 6 5566 5567 5569 5752 5753 5754 6 5568 5567 5570 5754 5755 5770 6 5569 5567 5571 5769 5767 5770 6 5570 5567 5565 5572 5769 5771 6 5571 5565 5563 5326 5573 5771 6 5572 5326 5327 5330 5574 5771 6 5573 5330 5575 5771 5772 5773 6 5574 5330 5331 5576 5773 5594 7 5575 5331 5333 5577 5594 5589 5774 6 5576 5333 5578 5349 5579 5774 6 5577 5333 5334 5340 5342 5349 6 5577 5349 5350 5580 5581 5774 6 5579 5350 5581 5582 5583 5584 6 5579 5580 5582 5585 5586 5774 6 5581 5580 5583 5585 5605 5606 6 5582 5580 5584 5606 5607 5608 6 5583 5580 5350 5351 5608 5353 6 5581 5582 5586 5587 5605 5597 6 5581 5585 5587 5588 5589 5774 6 5586 5585 5588 5595 5596 5597 6 5586 5587 5589 5590 5591 5595 6 5586 5588 5590 5594 5576 5774 6 5589 5588 5591 5592 5594 5773 6 5590 5588 5592 5593 5595 5778 6 5590 5591 5593 5773 5772 5775 6 5592 5591 5775 5776 5777 5778 5 5589 5590 5773 5575 5576 6 5591 5588 5587 5596 5778 5779 6 5595 5587 5597 5598 5599 5779 6 5596 5587 5598 5602 5605 5585 6 5596 5597 5599 5600 5601 5602 6 5596 5598 5600 5779 5780 5781 6 5599 5598 5601 5781 5789 5790 6 5600 5598 5602 5603 5790 5791 6 5601 5598 5603 5604 5597 5605 6 5601 5602 5604 5794 5791 5795 6 5603 5602 5795 5796 5606 5605 6 5602 5597 5585 5582 5606 5604 6 5605 5582 5583 5607 5796 5604 6 5606 5583 5608 5610 5798 5796 6 5607 5583 5584 5353 5609 5610 7 5608 5353 5610 5800 5806 5807 5354 5 5608 5609 5607 5800 5798 6 4514 4516 5612 5613 5614 5615 6 4514 5611 5613 427 426 7500 6 5612 5611 5614 7500 7501 7505 6 5613 5611 5615 7505 7506 7507 6 5614 5611 4516 7507 7508 4518 6 5388 5389 5617 7782 7783 7784 6 5616 5389 5618 7784 7785 7786 6 5617 5389 5390 5619 7786 7789 6 5618 5390 5620 7789 7790 7791 6 5619 5390 5391 3775 3778 7791 6 5488 5489 5622 5661 5662 5663 6 5621 5489 5490 5491 5623 5663 6 5622 5491 5492 5624 5663 5664 6 5623 5492 5493 5625 5664 5665 6 5624 5493 5626 5665 5666 5667 6 5625 5493 5494 5627 5667 5668 6 5626 5494 5495 5628 5668 5669 6 5627 5495 5496 5629 5669 5670 6 5628 5496 5497 5630 5670 5671 6 5629 5497 5498 5631 5671 5672 6 5630 5498 5499 5632 5672 5673 6 5631 5499 5500 5633 5673 5674 6 5632 5500 5501 5634 5674 5675 6 5633 5501 5502 5635 5675 5676 6 5634 5502 5503 5504 5636 5676 6 5635 5504 5637 5676 5677 5678 6 5636 5504 5505 5638 5678 5679 6 5637 5505 5506 5639 5679 5680 6 5638 5506 5507 5640 5680 5681 6 5639 5507 5508 5641 5681 5682 6 5640 5508 5509 5642 5682 5683 6 5641 5509 5510 5643 5683 5684 6 5642 5510 5511 5644 5684 5685 6 5643 5511 5512 5645 5685 5646 6 5644 5512 5513 5514 5515 5646 6 5645 5515 5517 5647 5685 5644 6 5646 5517 5520 5685 5522 5521 6 5239 5240 5649 6835 6836 6837 6 5648 5240 5241 5650 5651 6837 6 5649 5241 5651 5652 5243 5242 6 5649 5650 5652 6837 6838 6839 6 5651 5650 5243 5653 6839 6840 5 5652 5243 5244 5247 6840 6 5480 5481 5482 5655 6926 6927 6 5654 5482 5656 6927 6928 6929 6 5655 5482 5483 5484 5657 6929 6 5656 5484 5658 6929 6930 6931 6 5657 5484 5485 5659 5831 6931 6 5658 5485 5486 5660 5831 5832 6 5659 5486 5487 5661 5832 5833 6 5660 5487 5488 5621 5662 5833 6 5661 5621 5663 5833 5834 5835 6 5662 5621 5622 5623 5664 5835 6 5663 5623 5624 5665 5835 5813 6 5664 5624 5625 5666 5812 5813 6 5665 5625 5667 5812 5816 5817 6 5666 5625 5626 5668 5859 5817 6 5667 5626 5627 5669 5859 5860 6 5668 5627 5628 5670 5860 5861 6 5669 5628 5629 5671 5861 5862 6 5670 5629 5630 5672 5862 5863 6 5671 5630 5631 5673 5863 5864 6 5672 5631 5632 5674 5864 5865 6 5673 5632 5633 5675 5865 5866 6 5674 5633 5634 5676 5866 5867 6 5675 5634 5635 5636 5677 5867 6 5676 5636 5678 5867 5868 5693 6 5677 5636 5637 5679 5693 5869 6 5678 5637 5638 5680 5869 5870 6 5679 5638 5639 5681 5870 5871 6 5680 5639 5640 5682 5871 5688 6 5681 5640 5641 5683 5688 5687 6 5682 5641 5642 5684 5686 5687 6 5683 5642 5643 5685 5522 5686 6 5684 5643 5644 5646 5647 5522 5 5684 5522 5683 5687 5523 6 5683 5686 5523 5524 5688 5682 7 5687 5524 5525 5689 5871 5681 5682 5 5688 5525 5526 5690 5871 7 5689 5526 5527 5691 5871 5870 5692 5 5690 5527 5528 5530 5692 7 5691 5530 5531 5693 5870 5690 5869 7 5692 5531 5694 5868 5677 5678 5869 6 5693 5531 5532 5695 9698 5868 6 5694 5532 5538 5696 9699 9698 6 5695 5538 5539 5697 5718 9699 6 5696 5539 5698 5718 5719 5720 6 5697 5539 5540 5699 5720 5721 6 5698 5540 5700 5701 5721 5722 5 5699 5540 5701 5545 9795 7 5699 5700 5545 5546 5547 5702 5722 6 5701 5547 5703 5722 5723 5727 6 5702 5547 5548 5704 5727 5728 6 5703 5548 5549 5705 5728 5729 6 5704 5549 5551 5706 5732 5729 6 5705 5551 5707 5732 5733 5734 6 5706 5551 5552 5708 5737 5734 6 5707 5552 5554 5709 5737 5738 6 5708 5554 5556 5710 5747 5738 6 5709 5556 5711 5712 5747 5748 6 5710 5556 5712 5713 5714 5557 6 5710 5711 5713 5748 5749 5753 7 5712 5711 5714 5717 5564 5753 5566 6 5713 5711 5557 5715 5716 5717 6 5714 5557 5716 5560 5559 5558 6 5714 5715 5717 5562 5561 5560 5 5714 5716 5562 5564 5713 7 5696 5697 5719 9696 5865 9697 9699 6 5718 5697 5720 9696 9695 9700 6 5719 5697 5698 5721 9700 9701 7 5720 5698 5699 5722 5723 5724 9701 5 5721 5699 5701 5702 5723 7 5722 5702 5721 5724 5725 5726 5727 6 5721 5723 5725 6095 9701 9702 6 5724 5723 5726 6095 6096 6097 6 5725 5723 5727 6097 5730 5728 5 5726 5723 5702 5703 5728 6 5727 5703 5704 5729 5730 5726 6 5728 5704 5730 5731 5732 5705 7 5728 5729 5731 6097 5726 6098 6099 6 5730 5729 5732 6099 6100 6101 6 5731 5729 5705 5706 5733 6101 6 5732 5706 5734 5735 6101 6102 6 5733 5706 5735 5736 5737 5707 6 5733 5734 5736 6105 6102 6106 6 5735 5734 5737 6106 6107 5739 6 5736 5734 5707 5708 5738 5739 6 5737 5708 5739 5740 5747 5709 6 5737 5738 5740 5741 6107 5736 6 5739 5738 5741 5742 5746 5747 6 5739 5740 5742 5743 6107 6108 6 5741 5740 5743 5744 5745 5746 6 5741 5742 5744 6111 6108 6112 6 5743 5742 5745 6112 6113 6114 6 5744 5742 5746 5750 6121 6114 6 5745 5742 5740 5747 5748 5750 6 5746 5740 5738 5709 5710 5748 6 5747 5710 5712 5749 5746 5750 6 5748 5712 5750 5751 5752 5753 6 5746 5748 5745 5749 5751 6121 5 5750 5749 5752 6121 5949 6 5751 5749 5753 5568 5754 5949 6 5752 5749 5712 5713 5568 5566 6 5752 5568 5569 5755 5756 5949 6 5754 5569 5756 5757 5758 5770 6 5754 5755 5757 5949 5950 5951 6 5756 5755 5758 5759 5951 5952 6 5757 5755 5759 5760 5761 5770 6 5757 5758 5760 5952 5953 5957 6 5759 5758 5761 5762 5763 5957 6 5760 5758 5762 5766 5767 5770 6 5760 5761 5763 5764 5765 5766 6 5760 5762 5764 5957 5958 5988 6 5763 5762 5765 5989 5988 5990 6 5764 5762 5766 5990 5991 5776 6 5765 5762 5761 5767 5768 5776 6 5766 5761 5768 5769 5570 5770 6 5766 5767 5769 5772 5775 5776 6 5768 5767 5570 5571 5771 5772 6 5570 5767 5569 5761 5755 5758 6 5769 5571 5572 5573 5574 5772 7 5771 5574 5773 5592 5775 5769 5768 6 5772 5574 5575 5594 5590 5592 6 5589 5576 5586 5581 5579 5577 5 5772 5592 5593 5776 5768 7 5775 5593 5777 5991 5765 5768 5766 6 5776 5593 5778 5992 5991 5782 6 5777 5593 5591 5595 5779 5782 6 5778 5595 5596 5599 5780 5782 6 5779 5599 5781 5782 5783 5784 6 5780 5599 5600 5784 5785 5789 6 5779 5780 5783 5992 5777 5778 6 5782 5780 5784 5993 5992 5996 7 5783 5780 5781 5785 5786 5996 5997 6 5784 5781 5786 5787 5788 5789 6 5784 5785 5787 5997 5998 5999 6 5786 5785 5788 6002 5999 6003 6 5787 5785 5789 6009 6003 6199 6 5788 5785 5781 5600 5790 6199 6 5789 5600 5601 5791 5792 6199 6 5790 5601 5792 5793 5794 5603 6 5790 5791 5793 6198 6199 6197 6 5792 5791 5794 6197 6200 6221 6 5793 5791 5603 5795 6221 6219 6 5794 5603 5604 5796 5797 6219 6 5795 5604 5797 5798 5607 5606 6 5795 5796 5798 5799 6218 6219 6 5797 5796 5607 5799 5800 5610 6 5797 5798 5800 5801 5802 6218 7 5799 5798 5610 5609 5801 5805 5806 6 5799 5800 5802 5803 5804 5805 6 5799 5801 5803 6217 6209 6218 6 5802 5801 5804 5823 5824 6217 6 5803 5801 5805 5823 5830 5839 6 5804 5801 5800 5806 5808 5839 5 5805 5800 5609 5807 5808 5 5806 5609 5354 5356 5808 7 5807 5356 5358 5809 5839 5805 5806 6 5808 5358 5810 5838 5839 5886 7 5809 5358 5363 5364 5811 5885 5886 6 5810 5364 5884 5885 5887 5402 6 5665 5666 5813 5814 5815 5816 6 5665 5812 5814 5835 5664 5842 6 5813 5812 5815 5842 5843 5844 6 5814 5812 5816 5819 5820 5844 6 5815 5812 5666 5817 5818 5819 6 5816 5666 5818 5859 5857 5667 6 5816 5817 5819 5822 5857 5854 6 5816 5818 5815 5820 5821 5822 6 5815 5819 5821 5844 5845 5846 6 5820 5819 5822 5852 5849 5846 6 5821 5819 5818 5852 5853 5854 6 5803 5804 5824 5825 5826 5830 5 5803 5823 5825 6216 6217 7 5824 5823 5826 5827 6216 6215 6021 6 5825 5823 5827 5828 5829 5830 6 5825 5826 5828 6019 6020 6021 6 5827 5826 5829 5836 5872 6019 6 5828 5826 5830 5836 5837 5838 6 5829 5826 5823 5804 5838 5839 6 5658 5659 5832 6931 6932 6933 6 5831 5659 5660 5833 5840 6933 6 5832 5660 5661 5662 5834 5840 6 5833 5662 5835 5840 5841 5842 6 5834 5662 5663 5664 5813 5842 6 5828 5829 5837 5872 5873 5883 6 5836 5829 5838 5885 5883 5886 6 5837 5829 5830 5839 5809 5886 6 5838 5830 5809 5808 5805 5804 6 5832 5833 5834 5841 6933 6934 6 5840 5834 5842 6934 6935 5843 6 5841 5834 5835 5813 5814 5843 6 5842 5814 5844 6018 6935 5841 6 5843 5814 5815 5820 5845 6018 6 5844 5820 5846 5847 6018 6940 6 5845 5820 5847 5848 5849 5821 6 5845 5846 5848 6940 6941 6942 6 5847 5846 5849 5850 6945 6942 6 5848 5846 5850 5851 5852 5821 5 5848 5849 5851 6945 6385 6 5850 5849 5852 6103 6104 6385 6 5851 5849 5821 5822 5853 6103 6 5852 5822 5854 5855 6100 6103 6 5853 5822 5855 5856 5857 5818 6 5853 5854 5856 6098 6099 6100 6 5855 5854 5857 5858 6384 6098 6 5856 5854 5858 5859 5817 5818 6 5856 5857 5859 5860 6383 6384 6 5858 5857 5817 5667 5668 5860 6 5859 5668 5669 5861 6383 5858 6 5860 5669 5670 5862 9703 6383 6 5861 5670 5671 5863 9694 9703 6 5862 5671 5672 5864 9694 9695 6 5863 5672 5673 5865 9695 9696 7 5864 5673 5674 5866 9696 5718 9697 5 5865 5674 5675 5867 9697 7 5866 5675 5676 5677 5868 9697 9698 5 5867 5677 5693 5694 9698 5 5693 5678 5679 5870 5692 6 5869 5679 5680 5871 5690 5692 6 5870 5680 5681 5688 5689 5690 6 5828 5836 5873 5874 9736 6019 6 5872 5836 5874 5875 5882 5883 6 5872 5873 5875 5876 9736 6041 6 5874 5873 5876 5877 5878 5882 6 5874 5875 5877 6048 6041 6042 6 5876 5875 5878 5879 6049 6048 6 5877 5875 5879 5880 5881 5882 6 5877 5878 5880 6049 6050 5888 6 5879 5878 5881 5400 5399 5888 6 5880 5878 5882 5884 5887 5400 6 5881 5878 5875 5873 5883 5884 6 5882 5873 5836 5884 5885 5837 6 5882 5883 5885 5811 5881 5887 6 5884 5883 5837 5811 5810 5886 5 5810 5885 5837 5838 5809 5 5881 5884 5811 5402 5400 6 5880 5399 5889 6053 6050 5879 6 5888 5399 5397 5890 5891 6053 6 5889 5397 5891 5892 5893 5396 6 5889 5890 5892 6056 6053 6057 6 5891 5890 5893 6057 6058 6059 6 5892 5890 5396 5894 5895 6059 6 5893 5396 5895 5896 5899 5395 6 5893 5894 5896 5897 6059 6061 6 5895 5894 5897 5898 4889 5899 6 5895 5896 5898 5900 6061 6062 6 5897 5896 4889 4890 5900 5901 7 4889 5896 5894 5395 5393 5372 4888 6 5897 5898 5901 6065 6062 6066 6 5900 5898 4890 4892 5902 6066 6 5901 4892 5903 5904 5905 6066 6 5902 4892 5904 5911 5912 4893 6 5902 5903 5905 5906 5907 5911 6 5902 5904 5906 6066 6070 6067 7 5905 5904 5907 5908 6075 6072 6070 6 5906 5904 5908 5909 5910 5911 5 5906 5907 5909 5934 6075 7 5908 5907 5910 5932 5929 5933 5934 6 5909 5907 5911 5932 9752 5915 6 5910 5907 5904 5903 5912 5915 6 5911 5903 4893 5913 5914 5915 6 5912 4893 4894 4896 4899 5914 6 5913 4899 5912 5915 5916 5917 6 5912 5914 5916 5911 9752 5910 6 5915 5914 5917 9752 9755 9758 6 5916 5914 4899 4900 5918 9758 7 5917 4900 4902 3671 3951 5919 9758 6 5918 3951 3949 5920 9755 9758 5 5919 3949 3948 5921 9755 6 5920 3948 5922 5930 5931 9755 6 5921 3948 3946 3962 5923 5930 6 5922 3962 3963 5924 5925 5930 6 5923 3963 3965 5925 5926 5942 6 5923 5924 5926 5927 5929 5930 6 5925 5924 5927 5928 5941 5942 5 5925 5926 5928 5929 5933 7 5927 5926 5935 5933 5936 5940 5941 7 5925 5927 5930 5931 5932 5909 5933 6 5925 5929 5931 5923 5922 5921 6 5930 5929 5921 5932 9752 9755 5 5931 5929 5909 5910 9752 6 5909 5929 5934 5935 5928 5927 6 5909 5933 5935 6074 6075 5908 6 5934 5933 5928 5936 5937 6074 6 5935 5928 5937 5938 5939 5940 5 5935 5936 5938 6074 6076 6 5937 5936 5939 6076 6077 6086 6 5938 5936 5940 6087 6086 6091 7 5939 5936 5928 5941 5944 6091 5946 5 5940 5928 5926 5942 5944 6 5941 5926 5924 3965 5943 5944 7 5942 3965 3966 5944 5945 3135 5947 6 5942 5943 5941 5940 5945 5946 5 5944 5943 5946 3134 3135 6 5944 5945 3134 6091 5940 3136 6 3135 5943 2093 2092 5948 3966 6 2092 5947 3966 3967 2488 2489 6 5754 5756 5950 5752 5751 6121 6 5949 5756 5951 6166 6120 6121 6 5950 5756 5757 5952 6166 6164 6 5951 5757 5759 5953 5954 6164 6 5952 5759 5954 5955 5956 5957 6 5952 5953 5955 6162 6161 6164 6 5954 5953 5956 5960 5967 6162 6 5955 5953 5957 5958 5959 5960 6 5956 5953 5759 5760 5763 5958 6 5957 5763 5956 5959 5963 5988 6 5956 5958 5960 5961 5962 5963 6 5956 5959 5961 5964 5967 5955 6 5960 5959 5962 5964 5965 5982 6 5961 5959 5963 5983 5982 5984 6 5962 5959 5958 5987 5984 5988 6 5960 5961 5965 5966 5967 5968 6 5964 5961 5966 5982 5980 5971 6 5964 5965 5968 5969 5970 5971 6 5960 5964 5955 5968 6163 6162 7 5967 5964 5966 5969 6156 6157 6163 6 5968 5966 5970 6447 6445 6156 6 5969 5966 5971 5972 6447 6448 6 5970 5966 5972 5973 5965 5980 6 5970 5971 5973 5974 5975 6448 6 5972 5971 5974 5978 5979 5980 6 5972 5973 5975 5976 5977 5978 6 5972 5974 5976 6448 6449 6450 6 5975 5974 5977 6450 6608 6609 6 5976 5974 5978 6609 6612 6613 6 5977 5974 5973 5979 6613 6614 6 5978 5973 5980 5981 6640 6614 6 5979 5973 5981 5982 5965 5971 6 5979 5980 5982 5983 6640 6641 6 5981 5980 5983 5962 5961 5965 6 5981 5982 5962 5984 5985 6641 6 5983 5962 5985 5986 5987 5963 6 5983 5984 5986 6643 6641 6168 6 5985 5984 5987 5994 6167 6168 6 5986 5984 5963 5988 5989 5994 6 5987 5963 5958 5989 5764 5763 6 5987 5988 5764 5990 5993 5994 6 5989 5764 5765 5991 5992 5993 5 5990 5765 5992 5777 5776 6 5990 5991 5777 5993 5783 5782 7 5990 5992 5783 5989 5994 5995 5996 6 5989 5993 5995 5986 5987 6167 6 5994 5993 5996 5997 5998 6167 5 5995 5993 5783 5784 5997 5 5995 5996 5998 5784 5786 7 5995 5997 5786 5999 6000 6169 6167 6 5998 5786 6000 6001 6002 5787 5 5998 5999 6001 6169 6170 6 6000 5999 6002 6170 6171 6005 6 6001 5999 5787 6003 6004 6005 6 6002 5787 6004 6008 6009 5788 6 6002 6003 6005 6006 6007 6008 6 6002 6004 6006 6171 6001 6172 6 6005 6004 6007 6010 6172 6173 6 6006 6004 6008 6010 6011 6015 6 6007 6004 6003 6009 6017 6015 6 6008 6003 5788 6198 6017 6199 6 6006 6007 6011 6012 6179 6173 6 6010 6007 6012 6013 6014 6015 6 6010 6011 6013 6180 6179 6186 6 6012 6011 6014 6190 6187 6186 6 6013 6011 6015 6016 6190 6191 6 6014 6011 6016 6017 6008 6007 6 6014 6015 6017 6191 6194 6195 6 6016 6015 6008 6198 6195 6009 6 5843 5844 5845 6937 6935 6940 6 5827 5828 6020 9736 6038 5872 6 5827 6019 6021 6022 6023 6038 6 5827 6020 6022 6215 5825 6222 6 6021 6020 6023 6024 6025 6222 6 6022 6020 6024 6037 6028 6038 6 6022 6023 6025 6026 6027 6028 6 6022 6024 6026 6222 6225 6223 6 6025 6024 6027 6225 6226 6032 6 6026 6024 6028 6029 6031 6032 6 6027 6024 6029 6030 6037 6023 6 6027 6028 6030 6031 6033 6034 6 6029 6028 6034 6035 6036 6037 6 6027 6029 6032 6033 6247 6239 6 6027 6031 6226 6026 6227 6239 6 6031 6029 6034 6247 6246 6248 6 6033 6029 6030 6035 6248 6249 6 6034 6030 6036 6249 6263 6264 6 6035 6030 6037 6039 6040 6264 6 6036 6030 6028 6023 6038 6039 6 6037 6023 6039 9736 6019 6020 6 6037 6038 6036 6040 6041 9736 7 6036 6039 6041 6042 6043 6265 6264 6 6040 6039 6042 9736 5874 5876 6 6040 6041 6043 6044 6048 5876 5 6040 6042 6044 6045 6265 6 6043 6042 6045 6046 6047 6048 7 6043 6044 6046 6262 6265 6261 6266 6 6045 6044 6047 6269 6266 6280 6 6046 6044 6048 6049 6051 6280 6 6047 6044 6042 6049 5877 5876 6 6047 6048 5877 5879 6050 6051 6 6049 5879 6051 6052 6053 5888 6 6049 6050 6052 6054 6280 6047 6 6051 6050 6053 6054 6055 6056 6 6052 6050 5888 5889 6056 5891 7 6051 6052 6055 6279 6280 6278 6281 6 6054 6052 6056 6283 6281 6284 6 6055 6052 6053 5891 6057 6284 6 6056 5891 5892 6058 6060 6284 6 6057 5892 6059 6060 6287 6288 6 6058 5892 5893 5895 6061 6288 6 6057 6058 6284 6285 6286 6287 6 6059 5895 5897 6062 6063 6288 6 6061 5897 6063 6064 6065 5900 7 6061 6062 6064 6288 6291 6289 6292 5 6063 6062 6065 6292 6068 6 6064 6062 5900 6066 6067 6068 6 6065 5900 5901 5902 5905 6067 6 6065 6066 6068 6069 6070 5905 7 6065 6067 6069 6292 6064 6293 6294 5 6068 6067 6070 6071 6294 6 6069 6067 5905 6071 6072 5906 7 6069 6070 6072 6073 6296 6294 6297 6 6071 6070 6073 6074 6075 5906 6 6071 6072 6074 6297 6078 6076 7 6073 6072 6075 5934 5935 5937 6076 5 6074 6072 5934 5908 5906 6 6074 5937 5938 6077 6078 6073 6 6076 5938 6078 6079 6086 6083 6 6076 6077 6079 6080 6297 6073 6 6078 6077 6080 6081 6082 6083 6 6078 6079 6081 6297 6298 6301 6 6080 6079 6082 6301 6302 6314 6 6081 6079 6083 6084 6313 6314 6 6082 6079 6084 6085 6086 6077 7 6082 6083 6085 6088 6313 6315 6318 6 6084 6083 6086 6087 6088 6089 6 6085 6083 6087 5939 5938 6077 6 6085 6086 5939 6089 6090 6091 6 6084 6085 6089 6094 3769 6318 7 6088 6085 6087 6090 3137 6092 6094 5 6089 6087 6091 3136 3137 6 6090 6087 5939 5940 5946 3136 6 6089 3137 3138 6093 3768 6094 7 6092 3138 3768 3766 2085 2084 9776 5 6092 3768 3769 6088 6089 6 5724 5725 6096 6383 9702 9703 6 6095 5725 6097 6098 6383 6384 5 6096 5725 5726 5730 6098 7 6096 6097 5730 6099 6384 5856 5855 5 6098 5730 5731 6100 5855 7 6099 5731 6101 6102 6103 5855 5853 5 6100 5731 5732 5733 6102 7 6101 5733 6100 6103 6104 6105 5735 6 6100 6102 6104 5853 5852 5851 6 6103 6102 6105 5851 6385 6386 5 6104 6102 5735 6106 6386 7 6105 5735 5736 6107 6386 6387 6109 6 6106 5736 5739 5741 6108 6109 6 6107 5741 6109 6110 6111 5743 6 6107 6108 6110 6387 6106 6388 6 6109 6108 6111 6388 6389 6390 6 6110 6108 5743 6112 6393 6390 6 6111 5743 5744 6113 6115 6393 6 6112 5744 6114 6115 6116 6117 6 6113 5744 6120 6117 6121 5745 6 6112 6113 6116 6393 9737 9738 6 6115 6113 6117 6118 6122 9738 6 6116 6113 6118 6119 6120 6114 6 6116 6117 6119 6122 6123 6165 5 6118 6117 6120 6166 6165 6 6119 6117 6114 6121 6166 5950 7 6120 6114 5745 5750 5751 5949 5950 6 6116 6118 6123 6124 6131 9738 6 6122 6118 6124 6125 6165 6160 6 6122 6123 6125 6126 6127 6131 6 6124 6123 6126 6152 6160 6158 6 6124 6125 6127 6128 6151 6152 6 6124 6126 6128 6129 6130 6131 6 6127 6126 6129 6150 6149 6151 6 6127 6128 6130 6150 6137 6134 6 6127 6129 6131 6132 6133 6134 6 6127 6130 6132 9738 6122 6124 6 6131 6130 6133 6398 9737 9738 6 6132 6130 6134 6135 6397 6398 6 6133 6130 6135 6136 6137 6129 6 6133 6134 6136 6397 6399 6400 6 6135 6134 6137 6138 6400 6401 6 6136 6134 6138 6139 6150 6129 6 6136 6137 6139 6140 6401 6402 6 6138 6137 6140 6141 6148 6150 6 6138 6139 6141 6142 6402 6403 6 6140 6139 6142 6143 6144 6148 6 6140 6141 6143 6403 6404 6405 6 6142 6141 6144 6145 6405 6436 6 6143 6141 6145 6146 6147 6148 6 6143 6144 6146 6437 6436 6438 6 6145 6144 6147 6438 6439 6440 6 6146 6144 6148 6149 6440 6441 6 6147 6144 6141 6139 6149 6150 6 6147 6148 6150 6128 6151 6441 6 6149 6148 6139 6137 6129 6128 6 6149 6128 6126 6152 6153 6441 6 6151 6126 6125 6153 6154 6158 6 6151 6152 6154 6155 6441 6442 6 6153 6152 6155 6156 6157 6158 6 6153 6154 6156 6444 6442 6445 6 6155 6154 6157 5969 6445 5968 6 6156 6154 6158 6159 5968 6163 6 6157 6154 6152 6159 6160 6125 6 6157 6158 6160 6161 6162 6163 6 6159 6158 6125 6161 6123 6165 6 6159 6160 6162 5954 6164 6165 6 6159 6161 6163 5967 5955 5954 5 6159 6162 5967 6157 5968 6 5954 6161 6165 6166 5951 5952 7 6164 6161 6166 6119 6118 6123 6160 6 6164 6165 6119 6120 5950 5951 6 5994 5995 5986 6168 6169 5998 6 5986 6167 6169 6643 5985 9783 6 6168 6167 5998 6000 6170 9783 7 6169 6000 6001 6171 6789 9783 9782 7 6170 6001 6005 6172 6788 6786 6789 6 6171 6005 6006 6173 6174 6788 6 6172 6006 6174 6175 6010 6179 6 6172 6173 6175 6176 6784 6788 6 6174 6173 6176 6177 6178 6179 6 6174 6175 6177 6782 6781 6784 6 6176 6175 6178 9796 6782 9797 6 6177 6175 6179 6180 6181 9796 6 6178 6175 6180 6012 6010 6173 6 6178 6179 6181 6182 6186 6012 6 6178 6180 6182 6183 9796 9799 6 6181 6180 6183 6184 6185 6186 6 6181 6182 6184 6362 6645 9799 6 6183 6182 6185 6362 6363 6367 6 6184 6182 6186 6187 6188 6367 6 6185 6182 6180 6187 6012 6013 6 6185 6186 6188 6189 6190 6013 6 6185 6187 6189 6367 6368 6369 6 6188 6187 6190 6369 6372 6192 6 6189 6187 6013 6014 6191 6192 6 6190 6014 6016 6192 6193 6194 6 6190 6191 6193 6372 6189 6373 6 6192 6191 6194 6382 6373 6203 6 6193 6191 6016 6195 6196 6203 6 6194 6016 6196 6197 6198 6017 6 6194 6195 6197 6200 6201 6203 6 6196 6195 6198 5792 5793 6200 6 6197 6195 6017 6009 6199 5792 6 6198 6009 5792 5790 5789 5788 6 6197 5793 6196 6201 6202 6221 6 6196 6200 6202 6203 6204 6205 6 6201 6200 6205 6206 6220 6221 6 6196 6201 6204 6382 6193 6194 6 6203 6201 6205 6382 6459 6381 6 6204 6201 6202 6206 6207 6459 6 6205 6202 6207 6208 6209 6220 6 6205 6206 6208 6210 6211 6459 6 6207 6206 6209 6210 6214 6217 6 6208 6206 5802 6217 6218 6220 6 6207 6208 6211 6212 6213 6214 6 6207 6210 6212 6456 6458 6459 7 6211 6210 6213 6223 6224 6454 6456 5 6212 6210 6214 6215 6223 6 6213 6210 6208 6215 6216 6217 7 6213 6214 6216 5825 6021 6222 6223 5 6215 6214 6217 5824 5825 7 6216 6214 5824 5803 5802 6209 6208 6 5802 6209 5799 5797 6219 6220 6 5797 6218 6220 6221 5794 5795 6 6219 6218 6209 6206 6202 6221 6 6219 6220 6202 6200 5793 5794 5 6215 6021 6022 6025 6223 7 6215 6222 6213 6212 6224 6225 6025 7 6212 6223 6225 6454 6231 6226 6228 5 6224 6223 6025 6026 6226 6 6225 6026 6032 6227 6228 6224 6 6226 6032 6228 6229 6238 6239 6 6226 6227 6229 6230 6231 6224 6 6228 6227 6230 6237 6234 6238 6 6228 6229 6231 6232 6233 6234 6 6228 6230 6232 6454 6224 6455 6 6231 6230 6233 6455 6460 6461 6 6232 6230 6234 6235 6461 6462 6 6233 6230 6235 6236 6237 6229 6 6233 6234 6236 6462 6463 6471 6 6235 6234 6237 6473 6471 6476 6 6236 6234 6229 6238 6476 6241 6 6237 6229 6227 6239 6240 6241 6 6238 6227 6240 6247 6031 6032 6 6238 6239 6241 6242 6243 6247 6 6238 6240 6242 6476 6237 6477 6 6241 6240 6243 6244 6477 6479 6 6242 6240 6244 6245 6246 6247 6 6242 6243 6245 6481 6479 6482 6 6244 6243 6246 6482 6253 6251 6 6245 6243 6247 6033 6248 6251 6 6246 6243 6240 6239 6031 6033 6 6246 6033 6034 6249 6250 6251 6 6248 6034 6035 6250 6263 6255 6 6248 6249 6251 6252 6254 6255 6 6248 6250 6252 6253 6245 6246 6 6251 6250 6253 6254 6484 6485 6 6251 6252 6482 6245 6483 6484 6 6252 6250 6255 6256 6257 6485 6 6254 6250 6256 6263 6260 6249 6 6254 6255 6257 6258 6259 6260 6 6254 6256 6258 6485 6493 6494 6 6257 6256 6259 6494 6495 6496 7 6258 6256 6260 6261 6496 6273 6267 6 6259 6256 6261 6262 6263 6255 6 6259 6260 6262 6045 6266 6267 6 6261 6260 6263 6264 6265 6045 6 6262 6260 6264 6255 6249 6035 6 6262 6263 6265 6035 6040 6036 5 6262 6264 6045 6043 6040 6 6045 6261 6267 6268 6269 6046 6 6261 6266 6268 6272 6273 6259 6 6267 6266 6269 6270 6271 6272 6 6268 6266 6046 6270 6279 6280 6 6268 6269 6271 6277 6278 6279 6 6268 6270 6272 6275 6276 6277 6 6268 6271 6267 6273 6274 6275 6 6267 6272 6274 6496 6259 6497 6 6273 6272 6275 6500 6497 6501 6 6274 6272 6271 6276 6501 6502 6 6275 6271 6277 6502 6503 6504 6 6276 6271 6270 6278 6504 6505 7 6277 6270 6279 6054 6281 6282 6505 5 6278 6270 6269 6280 6054 6 6279 6269 6046 6054 6051 6047 5 6278 6054 6282 6283 6055 6 6278 6281 6283 6506 6505 6507 6 6282 6281 6055 6284 6507 6285 6 6283 6055 6056 6057 6060 6285 6 6284 6060 6286 6507 6283 6508 7 6285 6060 6287 6508 6328 6511 6290 6 6286 6060 6058 6288 6289 6290 6 6287 6058 6059 6061 6063 6289 5 6287 6288 6290 6291 6063 5 6287 6289 6291 6328 6286 7 6290 6289 6063 6292 6326 6327 6328 6 6291 6063 6064 6068 6293 6326 6 6292 6068 6294 6295 6325 6326 6 6293 6068 6069 6295 6296 6071 6 6293 6294 6296 6299 6324 6325 6 6295 6294 6071 6297 6298 6299 6 6296 6071 6073 6078 6080 6298 6 6297 6080 6296 6299 6300 6301 5 6296 6298 6300 6324 6295 6 6299 6298 6301 6303 6323 6324 6 6300 6298 6080 6081 6302 6303 6 6301 6081 6303 6304 6308 6314 6 6301 6302 6304 6305 6323 6300 6 6303 6302 6305 6306 6307 6308 6 6303 6304 6306 6323 6337 6338 6 6305 6304 6307 6338 6341 6342 6 6306 6304 6308 6309 6342 6343 6 6307 6304 6302 6309 6310 6314 6 6307 6308 6310 6311 6343 6346 6 6309 6308 6311 6312 6313 6314 6 6309 6310 6312 6321 6322 6346 6 6311 6310 6313 6315 6316 6321 6 6312 6310 6314 6082 6084 6315 6 6313 6310 6082 6081 6302 6308 6 6313 6084 6312 6316 6317 6318 6 6312 6315 6317 6319 6320 6321 6 6316 6315 6318 3769 1571 6319 5 6317 6315 3769 6084 6088 5 6317 1571 1572 6320 6316 7 6319 1572 1573 6316 6321 6322 6360 5 6316 6320 6322 6312 6311 7 6321 6320 6311 6347 6346 6348 6360 6 6303 6305 6300 6324 6335 6337 7 6300 6323 6299 6295 6325 6336 6335 6 6295 6324 6293 6326 6336 6331 6 6293 6325 6292 6291 6327 6331 6 6291 6326 6328 6329 6330 6331 6 6291 6327 6329 6511 6286 6290 6 6328 6327 6330 6510 6511 6519 7 6329 6327 6331 6332 6333 6519 6518 6 6330 6327 6332 6336 6325 6326 6 6330 6331 6333 6334 6335 6336 5 6330 6332 6334 6518 6520 6 6333 6332 6335 6520 6528 6529 7 6334 6332 6336 6324 6323 6337 6529 5 6335 6332 6331 6325 6324 6 6335 6323 6305 6338 6339 6529 6 6337 6305 6306 6339 6340 6341 6 6337 6338 6340 6530 6527 6529 5 6339 6338 6341 6545 6530 6 6340 6338 6306 6342 6546 6545 6 6341 6306 6307 6343 6344 6546 6 6342 6307 6344 6345 6346 6309 6 6342 6343 6345 6546 6543 6547 6 6344 6343 6346 6347 6549 6547 6 6345 6343 6347 6322 6311 6309 6 6345 6346 6322 6348 6349 6549 6 6347 6322 6349 6350 6359 6360 6 6347 6348 6350 6351 6550 6549 6 6349 6348 6351 6352 6353 6359 6 6349 6350 6352 6552 6550 6553 6 6351 6350 6353 6354 6355 6553 6 6352 6350 6354 1589 2476 6359 7 6352 6353 6355 6356 1594 1590 1589 6 6352 6354 6356 6357 6553 6554 5 6355 6354 6357 6358 1594 6 6355 6356 6358 6554 6555 3971 6 6357 6356 1594 3971 3970 1595 6 2476 6353 6350 6348 6360 6361 6 6359 6348 6361 1573 6320 6322 5 6359 6360 1573 2475 2476 6 6183 6184 6363 6364 6644 6645 6 6362 6184 6364 6365 6366 6367 6 6362 6363 6365 6644 6648 6649 6 6364 6363 6366 9727 9673 6649 6 6365 6363 6367 9727 9728 6368 6 6366 6363 6184 6185 6188 6368 6 6367 6188 6369 6370 9728 6366 6 6368 6188 6189 6370 6371 6372 6 6368 6369 6371 9728 9729 9730 6 6370 6369 6372 6374 6375 9730 6 6371 6369 6189 6192 6373 6374 6 6372 6192 6374 6382 6380 6193 6 6372 6373 6371 6375 6376 6380 6 6371 6374 6376 6377 6467 9730 6 6375 6374 6377 6378 6379 6380 5 6375 6376 6378 9693 6467 7 6377 6376 6379 6457 6455 6460 9693 6 6378 6376 6380 6381 6457 6458 6 6379 6376 6381 6382 6373 6374 6 6379 6380 6382 6459 6458 6204 6 6381 6380 6373 6193 6203 6204 7 6095 6096 6384 9703 5861 5860 5858 5 6383 6096 6098 5856 5858 6 5851 6104 6386 6945 5850 6946 7 6385 6104 6105 6106 6387 6946 6947 5 6386 6106 6109 6388 6947 6 6387 6109 6110 6389 6947 6948 6 6388 6110 6390 6391 6948 6949 6 6389 6110 6391 6392 6393 6111 6 6389 6390 6392 6394 6395 6949 6 6391 6390 6393 6394 9737 6398 6 6392 6390 6111 6112 6115 9737 6 6391 6392 6395 6396 6397 6398 6 6391 6394 6396 6949 6950 6951 6 6395 6394 6397 6951 6952 6399 6 6396 6394 6398 6133 6135 6399 6 6397 6394 6133 6132 9737 6392 6 6397 6135 6400 6952 6396 6953 6 6399 6135 6136 6401 6953 6954 6 6400 6136 6138 6402 6954 6960 6 6401 6138 6140 6403 6960 6410 6 6402 6140 6142 6404 6408 6410 6 6403 6142 6405 6406 6407 6408 6 6404 6142 6143 6406 6436 6434 6 6404 6405 6407 6431 6429 6434 6 6404 6406 6408 6409 6428 6429 6 6404 6407 6409 6403 6410 6411 6 6408 6407 6411 6412 6413 6428 6 6403 6408 6411 6959 6960 6402 6 6410 6408 6409 6412 6959 6961 6 6411 6409 6413 6414 6963 6961 6 6412 6409 6414 6415 6427 6428 6 6412 6413 6415 6416 6963 6964 6 6414 6413 6416 6417 6418 6427 6 6414 6415 6417 6558 6559 6964 6 6416 6415 6418 6419 6558 6565 6 6417 6415 6419 6420 6427 6424 6 6417 6418 6420 6421 6573 6565 6 6419 6418 6421 6422 6423 6424 6 6419 6420 6422 6573 6572 6574 6 6421 6420 6423 6580 6577 6574 6 6422 6420 6424 6425 6580 6581 6 6423 6420 6425 6426 6427 6418 6 6423 6424 6426 6584 6581 6430 6 6425 6424 6427 6428 6429 6430 6 6426 6424 6418 6415 6413 6428 6 6427 6413 6409 6407 6426 6429 6 6426 6428 6407 6430 6431 6406 6 6426 6429 6431 6432 6584 6425 6 6430 6429 6406 6432 6433 6434 6 6430 6431 6433 6584 6585 6586 6 6432 6431 6434 6435 6589 6586 6 6433 6431 6435 6436 6405 6406 6 6433 6434 6436 6437 6589 6590 6 6435 6434 6405 6437 6145 6143 6 6435 6436 6145 6438 6590 6591 6 6437 6145 6146 6439 6591 6592 6 6438 6146 6440 6595 6592 6443 6 6439 6146 6147 6441 6442 6443 6 6440 6147 6149 6151 6153 6442 6 6441 6153 6440 6443 6444 6155 6 6440 6442 6444 6595 6439 6453 6 6443 6442 6155 6445 6446 6453 6 6444 6155 6446 6447 5969 6156 6 6444 6445 6447 6449 6452 6453 6 6446 6445 5969 5970 6448 6449 5 6447 5970 5972 5975 6449 7 6448 5975 6447 6450 6451 6452 6446 7 6449 5975 5976 6451 6607 6598 6608 6 6449 6450 6452 6596 6597 6598 5 6449 6451 6446 6453 6596 6 6446 6452 6595 6443 6444 6596 5 6212 6224 6231 6455 6456 7 6454 6231 6456 6457 6378 6232 6460 6 6454 6455 6457 6458 6211 6212 5 6456 6455 6378 6379 6458 6 6457 6379 6456 6211 6459 6381 6 6211 6458 6207 6381 6204 6205 5 6455 6232 6461 9693 6378 6 6460 6232 6233 6462 6465 9693 6 6461 6233 6235 6463 6464 6465 6 6462 6235 6464 6469 6470 6471 6 6462 6463 6465 6466 6468 6469 6 6462 6464 6461 6466 6467 9693 6 6465 6464 6467 6468 9731 9732 7 6465 6466 9693 6377 6375 9730 9731 6 6466 6464 6469 7509 7510 9732 7 6468 6464 6463 6470 7507 7509 7506 6 6469 6463 6471 6472 7506 7505 6 6470 6463 6235 6472 6473 6236 6 6470 6471 6473 6474 7504 7505 6 6472 6471 6236 6474 6475 6476 7 6472 6473 6475 7503 7504 9692 9780 6 6474 6473 6476 6477 6478 9692 6 6475 6473 6236 6237 6241 6477 6 6476 6241 6242 6475 6478 6479 7 6475 6477 6479 6480 9692 9778 9779 6 6478 6477 6242 6480 6481 6244 6 6478 6479 6481 6487 9705 9778 6 6480 6479 6244 6482 6486 6487 6 6481 6244 6245 6253 6483 6486 5 6482 6253 6484 6486 6489 7 6483 6253 6252 6485 6489 6490 6491 7 6484 6252 6254 6257 6491 6492 6493 6 6482 6483 6481 6487 6488 6489 5 6481 6486 6488 9705 6480 7 6487 6486 6489 9704 2194 2195 9705 6 6488 6486 6483 6484 6490 9704 6 6489 6484 6491 2251 2252 9704 6 6490 6484 6485 6492 2251 9706 6 6491 6485 6493 9706 3335 9707 5 6492 6485 6257 6494 9707 6 6493 6257 6258 6495 9707 6499 6 6494 6258 6496 6497 6498 6499 5 6495 6258 6259 6273 6497 6 6496 6273 6495 6498 6500 6274 6 6495 6497 6499 2511 2512 6500 7 6495 6498 2511 3334 9707 3881 6494 6 2512 6498 6497 6274 6501 9710 6 6500 6274 6275 6502 9709 9710 6 6501 6275 6276 6503 9708 9709 6 6502 6276 6504 6512 9708 9711 6 6503 6276 6277 6505 6506 6512 5 6504 6277 6506 6282 6278 7 6504 6505 6282 6507 6512 6513 6509 6 6506 6282 6283 6285 6508 6509 6 6507 6285 6286 6509 6510 6511 6 6507 6508 6510 6513 6506 6514 7 6509 6508 6511 6329 6514 6515 6519 5 6510 6508 6329 6328 6286 6 6503 6504 6506 6513 9711 9717 5 6512 6506 6509 6514 9717 7 6513 6509 6510 6515 6516 9717 9718 6 6514 6510 6516 6517 6518 6519 6 6514 6515 6517 9718 9719 6522 6 6516 6515 6518 6520 6521 6522 6 6517 6515 6519 6330 6333 6520 5 6518 6515 6510 6329 6330 7 6518 6333 6334 6517 6521 6525 6528 6 6517 6520 6522 6523 6524 6525 7 6517 6521 6523 2214 9719 6516 2213 5 6522 6521 6524 2213 3348 7 6523 6521 6525 6526 3348 3347 6532 6 6524 6521 6520 6526 6527 6528 6 6524 6525 6527 6530 6531 6532 6 6526 6525 6528 6530 6339 6529 5 6527 6525 6520 6334 6529 6 6528 6334 6335 6339 6527 6337 7 6526 6527 6531 6340 6545 6339 6534 6 6526 6530 6532 3863 6533 6534 5 6526 6531 3863 3347 6524 6 3863 6531 6534 6535 6536 6716 6 6533 6531 6535 6544 6545 6530 6 6533 6534 6536 6537 6544 6541 6 6533 6535 6537 6538 6715 6716 6 6536 6535 6538 6539 6540 6541 7 6536 6537 6539 6714 3887 3886 6715 6 6538 6537 6540 6714 6718 6719 6 6539 6537 6541 6542 6719 6708 6 6540 6537 6542 6543 6544 6535 6 6540 6541 6543 6547 6548 6708 6 6542 6541 6544 6546 6344 6547 6 6543 6541 6535 6534 6545 6546 6 6544 6534 6546 6341 6340 6530 6 6544 6545 6543 6341 6342 6344 6 6543 6344 6542 6548 6549 6345 6 6542 6547 6549 6550 6551 6708 6 6548 6547 6345 6347 6550 6349 6 6548 6549 6551 6552 6351 6349 6 6548 6550 6552 6705 6707 6708 6 6551 6550 6351 6553 6554 6705 5 6552 6351 6352 6355 6554 6 6553 6355 6357 6555 6552 6705 7 6554 6357 3971 6705 6706 9747 3491 6 3969 1597 1598 6557 4038 3968 6 6556 1598 4038 3764 612 611 6 6416 6417 6559 6560 6564 6565 6 6416 6558 6560 6561 6964 6965 6 6559 6558 6561 6562 6563 6564 6 6559 6560 6562 6965 6966 6967 6 6561 6560 6563 6985 6983 6967 6 6562 6560 6564 6985 6986 6567 6 6563 6560 6558 6565 6566 6567 6 6564 6558 6417 6566 6573 6419 6 6564 6565 6567 6568 6569 6573 6 6564 6566 6568 6986 6563 6987 6 6567 6566 6569 6570 6990 6987 6 6568 6566 6570 6571 6572 6573 6 6568 6569 6571 6997 6990 6998 6 6570 6569 6572 6575 7001 6998 6 6571 6569 6573 6421 6574 6575 6 6572 6569 6566 6565 6419 6421 6 6572 6421 6575 6576 6577 6422 6 6572 6574 6576 7003 7001 6571 6 6575 6574 6577 6578 7003 7004 6 6576 6574 6578 6579 6580 6422 6 6576 6577 6579 7004 7005 7006 6 6578 6577 6580 7006 7007 6582 6 6579 6577 6422 6423 6581 6582 6 6580 6423 6582 6583 6584 6425 6 6580 6581 6583 7007 6579 7008 6 6582 6581 6584 6720 7008 6585 6 6583 6581 6425 6430 6432 6585 6 6584 6432 6586 6587 6720 6583 6 6585 6432 6587 6588 6589 6433 6 6585 6586 6588 6720 6721 6728 6 6587 6586 6589 6728 6729 6730 6 6588 6586 6433 6435 6590 6730 6 6589 6435 6437 6591 6730 6731 6 6590 6437 6438 6592 6593 6731 6 6591 6438 6593 6594 6595 6439 6 6591 6592 6594 6731 6732 6733 7 6593 6592 6595 6600 6733 6597 6596 6 6594 6592 6439 6443 6453 6596 6 6595 6453 6452 6451 6597 6594 6 6596 6451 6598 6599 6600 6594 6 6597 6451 6599 6606 6607 6450 6 6597 6598 6600 6601 6602 6606 5 6597 6599 6601 6733 6594 6 6600 6599 6602 6603 6734 6733 6 6601 6599 6603 6604 6605 6606 7 6601 6602 6604 6734 6735 6736 6737 5 6603 6602 6605 6737 6738 7 6604 6602 6606 6738 6739 6748 6745 6 6605 6602 6599 6598 6607 6748 6 6606 6598 6450 6608 6747 6748 6 6607 6450 5976 6609 6610 6747 6 6608 5976 5977 6610 6611 6612 6 6608 6609 6611 6747 6746 6749 6 6610 6609 6612 6619 6620 6749 6 6611 6609 5977 6613 6616 6619 6 6612 5977 5978 6614 6615 6616 6 6613 5978 6615 6639 6640 5979 6 6613 6614 6616 6617 6638 6639 6 6613 6615 6617 6618 6619 6612 6 6616 6615 6618 6636 6637 6638 6 6616 6617 6619 6621 6622 6636 6 6616 6618 6612 6611 6620 6621 6 6611 6619 6621 6750 6749 6626 6 6620 6619 6618 6622 6623 6626 6 6621 6618 6623 6624 6635 6636 6 6621 6622 6624 6625 6626 6627 6 6623 6622 6625 6633 6634 6635 6 6623 6624 6627 6628 6632 6633 6 6621 6623 6627 6750 6620 6751 6 6626 6623 6625 6628 6629 6751 6 6627 6625 6629 6630 6631 6632 6 6627 6628 6630 6756 6753 6751 6 6629 6628 6631 6756 6757 6758 6 6630 6628 6632 6758 6766 6767 6 6631 6628 6625 6633 6767 6768 6 6632 6625 6624 6634 6768 6769 6 6633 6624 6635 6769 6770 6771 6 6634 6624 6622 6636 9785 6771 6 6635 6622 6618 6617 6637 9785 6 6636 6617 6638 6785 6783 9785 6 6637 6617 6615 6639 9777 6785 6 6638 6615 6614 6640 9777 6642 6 6639 6614 5979 5981 6641 6642 6 6640 5981 5983 6642 6643 5985 7 6640 6641 6643 9777 6639 6787 9782 6 6642 6641 5985 6168 9782 9783 6 6362 6364 6645 6646 6647 6648 6 6362 6644 6183 6646 9724 9799 6 6645 6644 6647 9723 9724 6655 6 6646 6644 6648 6652 6654 6655 6 6647 6644 6364 6649 6650 6652 6 6648 6364 6650 6651 9673 6365 6 6648 6649 6651 6652 6653 9670 6 6650 6649 9670 9671 9672 9673 6 6648 6650 6653 6647 6654 3173 6 6652 6650 9670 9691 3172 3173 6 6647 6652 3173 6655 3450 3175 6 6647 6654 3450 6656 9723 6646 6 6655 3450 6657 6658 9721 9723 6 6656 3450 6658 3179 6659 6667 6 6656 6657 6667 6668 6669 9721 6 6657 3179 6660 6663 6664 6667 6 6659 3179 3178 6661 6662 6663 6 6660 3178 3180 2858 2859 6662 5 6660 6661 6663 6666 2859 6 6660 6662 6659 6664 6665 6666 6 6659 6663 6665 6667 6668 6672 7 6664 6663 6666 6672 6673 4564 4563 6 6665 6663 6662 4563 6674 2859 5 6659 6664 6668 6658 6657 7 6667 6664 6658 6669 6670 6671 6672 6 6658 6668 6670 6774 6775 9721 6 6669 6668 6671 6773 6772 6774 6 6670 6668 6672 6673 6790 6773 5 6671 6668 6664 6665 6673 5 6672 6665 4564 6671 6790 6 4563 6666 4561 6675 2860 2859 6 4561 6674 2860 6676 4560 9792 6 6675 2860 2853 2854 6677 9792 6 6676 2854 6678 6679 6681 9792 5 6677 2854 6679 6680 2855 6 6677 6678 6680 6681 6682 6683 6 6679 6678 6685 6683 6686 2855 6 6677 6679 6682 9750 9761 9792 6 6681 6679 6683 5156 5157 9750 6 6682 6679 5156 6684 6685 6680 6 5156 6683 6685 6692 6693 6694 6 6684 6683 6680 6686 6687 6692 6 6685 6680 6687 6688 6689 2855 6 6685 6686 6688 6692 6696 6699 6 6687 6686 6689 6690 6699 6700 6 6688 6686 6690 6691 2856 2855 6 6688 6689 6691 6700 6702 2551 5 6690 6689 2856 2550 2551 6 6685 6687 6684 6693 6695 6696 6 6684 6692 6694 4523 4522 6695 5 6684 6693 4523 4532 5156 6 4522 6693 6692 6696 6697 6704 6 6695 6692 6687 6697 6698 6699 7 6695 6696 6698 6703 3505 3506 6704 6 6697 6696 6699 6700 6701 6703 5 6698 6696 6687 6688 6700 7 6699 6688 6690 6698 6701 2222 6702 6 6698 6700 2222 64 65 6703 5 2222 6700 6690 2551 2221 6 6698 6701 65 66 6697 3505 5 6697 3506 3507 4522 6695 7 6552 6554 6555 6706 6551 6707 9749 6 6705 6555 9747 3502 9748 9749 6 6551 6705 6708 6709 6710 9749 7 6551 6707 6709 6719 6540 6548 6542 6 6708 6707 6710 6711 6718 6719 7 6709 6707 6711 6712 3503 9748 9749 7 6709 6710 6712 3117 3119 6713 6718 6 6711 6710 3503 3504 3116 3117 6 6711 3119 3121 3887 6714 6718 5 6713 3887 6538 6539 6718 6 6538 3886 6536 6716 3862 6717 5 6536 6715 6533 3863 3862 6 3862 6715 3861 3342 3885 3886 6 6714 6539 6713 6711 6709 6719 5 6718 6539 6540 6709 6708 6 6585 6587 6721 6722 7008 6583 6 6720 6587 6722 6723 6727 6728 6 6720 6721 6723 6724 7009 7008 6 6722 6721 6724 6725 6726 6727 6 6722 6723 6725 7009 7010 7011 6 6724 6723 6726 7022 7011 7023 6 6725 6723 6727 7023 7026 7027 6 6726 6723 6721 6728 7027 7030 6 6727 6721 6587 6588 6729 7030 6 6728 6588 6730 7030 7031 7032 6 6729 6588 6589 6590 6731 7032 6 6730 6590 6591 6593 6732 7032 6 6731 6593 6733 6734 7032 7033 6 6732 6593 6734 6601 6600 6594 6 6732 6733 6601 6603 6735 7033 6 6734 6603 6736 7033 7034 7035 6 6735 6603 6737 6740 7035 7036 5 6736 6603 6604 6738 6740 7 6737 6604 6605 6739 6740 6741 6742 6 6738 6605 6742 6743 6744 6745 6 6736 6737 6738 6741 7036 7037 6 6740 6738 6742 7037 7038 7039 6 6741 6738 6739 6743 7039 7040 7 6742 6739 6744 7040 7041 6754 7042 5 6743 6739 6745 6746 7042 6 6744 6739 6746 6747 6748 6605 7 6744 6745 6747 6610 6749 6750 7042 6 6746 6745 6748 6607 6608 6610 5 6747 6745 6607 6605 6606 5 6746 6610 6750 6620 6611 7 6746 6749 6620 6626 6751 6752 7042 6 6750 6626 6752 6753 6629 6627 5 6750 6751 6753 6754 7042 6 6752 6751 6754 6755 6756 6629 7 6752 6753 6755 7041 6743 7042 7141 5 6754 6753 6756 7141 6759 6 6755 6753 6629 6630 6757 6759 6 6756 6630 6758 6759 6760 6761 6 6757 6630 6631 6761 6762 6766 6 6756 6757 6760 7141 6755 7142 6 6759 6757 6761 7142 7143 7144 6 6760 6757 6758 6762 6763 7144 6 6761 6758 6763 4559 6764 6766 6 6761 6762 4559 4551 7144 4550 6 4559 6762 4558 4565 6765 6766 5 4565 6764 6766 6790 6767 6 6765 6764 6762 6758 6631 6767 6 6766 6631 6632 6768 6790 6765 6 6767 6632 6633 6769 6773 6790 6 6768 6633 6634 6770 6772 6773 6 6769 6634 6771 6772 6777 6778 6 6770 6634 6778 6779 6635 9785 6 6769 6770 6773 6670 6774 6777 6 6769 6772 6670 6671 6790 6768 6 6670 6772 6669 6775 6776 6777 6 6669 6774 6776 9721 9722 9798 7 6775 6774 6777 6778 6780 9797 9798 5 6776 6774 6772 6770 6778 6 6777 6770 6771 6779 6780 6776 6 6778 6771 6780 6781 6783 9785 6 6778 6779 6781 6782 6776 9797 6 6780 6779 6782 6176 6783 6784 5 6780 6781 6176 6177 9797 6 6781 6779 6784 6785 6637 9785 7 6781 6783 6176 6174 6785 6786 6788 7 6784 6783 6786 6787 9777 6638 6637 6 6784 6785 6787 6788 6171 6789 6 6786 6785 9777 6642 9782 6789 5 6784 6786 6171 6172 6174 5 6171 6786 6170 6787 9782 8 6671 6673 6773 4564 4565 6765 6768 6767 6 5418 5419 6792 7331 7332 7333 6 6791 5419 5420 5428 6793 7333 6 6792 5428 5429 6794 7333 7334 6 6793 5429 5430 6795 7334 7335 6 6794 5430 5432 5433 6796 7335 6 6795 5433 5434 6797 7335 7336 6 6796 5434 5435 6798 7336 7337 6 6797 5435 5436 6799 7337 7338 6 6798 5436 5437 6800 7338 7339 6 6799 5437 5438 6801 7339 7340 6 6800 5438 6802 7340 7341 7342 6 6801 5438 5439 5440 6803 7342 6 6802 5440 5441 6804 7342 7343 6 6803 5441 5442 6805 7343 7344 6 6804 5442 5444 6806 7344 7345 6 6805 5444 5445 6807 7345 7346 6 6806 5445 5446 6808 7346 7347 6 6807 5446 6809 7347 7348 7349 6 6808 5446 5447 6810 7349 6811 5 6809 5447 5217 5218 6811 6 6810 5218 5219 6812 7349 6809 5 6811 5219 6813 7349 7350 6 6812 5219 5220 6814 7350 7351 7 6813 5220 5221 5222 6815 7351 7352 5 6814 5222 6816 7352 7353 7 6815 5222 5223 5224 6817 7353 7354 5 6816 5224 6818 7354 7355 6 6817 5224 6819 7355 7356 7357 6 6818 5224 5225 5226 6820 7357 5 6819 5226 5227 6821 7357 6 6820 5227 6822 7357 7358 7359 7 6821 5227 5228 5229 6823 7359 7360 5 6822 5229 6824 6825 7360 5 6823 5229 6825 6826 5167 7 6823 6824 6826 6827 6828 7362 7360 5 6825 6824 5167 5168 6827 6 6826 5168 6825 6828 6829 6830 6 6825 6827 6829 7362 7363 7364 6 6828 6827 6830 7364 7365 7366 6 6829 6827 5168 5169 6831 7366 7 6830 5169 6832 7366 7367 7368 6834 5 6831 5169 6833 5238 6834 5 6832 5169 5238 5018 5023 6 6832 5238 5239 6835 7368 6831 6 6834 5239 5648 6836 7375 7368 7 6835 5648 6837 7375 7374 7376 7377 6 6836 5648 5649 5651 6838 7377 6 6837 5651 6839 7377 7378 7379 6 6838 5651 5652 6840 6841 7379 6 6839 5652 5653 5247 6841 5248 6 6839 6840 5248 6842 7379 7380 6 6841 5248 5249 6843 7380 7381 6 6842 5249 6844 7381 7382 7383 6 6843 5249 5028 5029 6845 7383 6 6844 5029 5030 6846 6847 7383 6 6845 5030 6847 6848 6849 5031 6 6845 6846 6848 7384 7383 7385 6 6847 6846 6849 7385 7386 7387 6 6848 6846 5031 5032 6850 7387 6 6849 5032 5033 5034 6851 7387 6 6850 5034 6852 7387 7388 6854 6 6851 5034 5035 5038 6853 6854 6 6852 5038 6854 6855 6856 5039 6 6852 6853 6855 7388 6851 7389 6 6854 6853 6856 6857 6859 7389 6 6855 6853 5039 6857 6858 5041 6 6855 6856 6858 6859 6860 6861 6 6857 6856 5041 6861 6862 6863 6 6855 6857 6860 7389 7390 7397 6 6859 6857 6861 7397 7398 7399 6 6860 6857 6858 6862 7399 7400 6 6861 6858 6863 6864 6865 7400 6 6862 6858 6864 5042 6879 5041 6 6862 6863 6865 6866 6879 6873 6 6862 6864 6866 6867 7400 7401 6 6865 6864 6867 6868 6872 6873 6 6865 6866 6868 6869 7401 7402 6 6867 6866 6869 6870 6871 6872 6 6867 6868 6870 7405 7402 7406 6 6869 6868 6871 7412 7406 7413 6 6870 6868 6872 7419 7416 7413 6 6871 6868 6866 6873 6874 7419 6 6872 6866 6874 6875 6864 6879 6 6872 6873 6875 6876 7419 7418 6 6874 6873 6876 6877 6878 6879 6 6874 6875 6877 6883 6884 7418 6 6876 6875 6878 6880 6882 6883 6 6877 6875 6879 6880 5043 5042 6 6878 6875 5042 6863 6864 6873 6 6877 6878 5043 5045 6881 6882 6 6880 5045 6882 6887 6888 6889 6 6880 6881 6877 6883 6886 6887 6 6877 6882 6876 6884 6885 6886 6 6876 6883 6885 7418 7420 7426 6 6884 6883 6886 7426 7427 7428 6 6885 6883 6882 6887 7428 7429 6 6886 6882 6881 6888 7429 7430 6 6887 6881 6889 6890 7430 7433 6 6888 6881 5045 6890 4645 4644 6 6888 6889 4645 4646 6891 7433 6 6890 4646 4647 6892 7433 6893 6 6891 4647 4253 4254 4730 6893 6 6892 4730 6894 7433 6891 7432 6 6893 4730 4731 6895 6897 7432 6 6894 4731 6896 6897 6898 6899 6 6895 4731 4732 6899 6900 6901 6 6894 6895 6898 7432 7431 7434 6 6897 6895 6899 7434 7435 7436 6 6898 6895 6896 6900 7436 7437 6 6899 6896 6901 7437 6904 6903 6 6900 6896 4732 4262 6902 6903 6 6901 4262 4263 4264 5231 6903 6 6902 5231 5458 6904 6900 6901 6 6903 5458 5459 6905 7437 6900 6 6904 5459 6906 7437 7438 7439 6 6905 5459 5460 6907 7439 7440 6 6906 5460 5461 6908 7262 7440 6 6907 5461 5462 6909 7262 7263 6 6908 5462 6910 7263 7264 6911 6 6909 5462 5463 5464 5465 6911 6 6910 5465 6912 7264 6909 7265 6 6911 5465 5466 6913 7265 7266 6 6912 5466 5467 6914 7266 7267 6 6913 5467 6915 7267 7268 7269 6 6914 5467 5468 6916 6917 7269 6 6915 5468 5469 5470 5471 6917 6 6915 6916 5471 6918 7269 7270 6 6917 5471 5472 6919 7270 7271 6 6918 5472 5473 6920 7271 7272 6 6919 5473 5474 5475 6921 7272 6 6920 5475 6922 7274 7272 7275 6 6921 5475 5476 6923 7275 7276 6 6922 5476 5477 6924 7276 7277 6 6923 5477 5478 6925 7277 7278 6 6924 5478 5479 6926 7278 7279 6 6925 5479 5480 5654 6927 7279 6 6926 5654 5655 6928 7281 7279 6 6927 5655 6929 7281 7282 7283 6 6928 5655 5656 5657 6930 7283 6 6929 5657 6931 7283 7284 7285 6 6930 5657 5658 5831 6932 7285 6 6931 5831 6933 7285 7286 7287 6 6932 5831 5832 5840 6934 7287 6 6933 5840 5841 6935 6936 7287 6 6934 5841 5843 6936 6937 6018 6 6934 6935 6937 6938 7287 7288 6 6936 6935 6018 6938 6939 6940 6 6936 6937 6939 7288 7289 7290 6 6938 6937 6940 7290 7291 6941 6 6939 6937 6018 5845 5847 6941 6 6940 5847 6942 6943 7291 6939 6 6941 5847 6943 6944 6945 5848 6 6941 6942 6944 7291 7292 7293 6 6943 6942 6945 7293 7294 7295 7 6944 6942 5848 5850 6385 6946 7295 6 6945 6385 6386 6947 7295 7296 6 6946 6386 6387 6388 6948 7296 6 6947 6388 6389 6949 7296 7297 7 6948 6389 6391 6395 6950 7297 7298 6 6949 6395 6951 7298 7300 7301 6 6950 6395 6396 6952 7043 7301 6 6951 6396 6399 6953 7043 7044 6 6952 6399 6400 6954 6955 7044 6 6953 6400 6401 6955 6956 6960 6 6953 6954 6956 6957 7044 7045 6 6955 6954 6957 6958 6959 6960 6 6955 6956 6958 7045 7048 7049 6 6957 6956 6959 6961 6962 7049 6 6958 6956 6960 6410 6411 6961 6 6959 6956 6954 6401 6402 6410 6 6959 6411 6958 6962 6963 6412 6 6958 6961 6963 7051 7049 7052 6 6962 6961 6412 6414 6964 7052 6 6963 6414 6416 6559 6965 7052 6 6964 6559 6561 6966 7052 6971 6 6965 6561 6967 6968 6970 6971 6 6966 6561 6968 6969 6562 6983 6 6966 6967 6969 6970 6974 6975 6 6968 6967 6981 6975 6982 6983 6 6966 6968 6971 6972 6973 6974 6 6966 6970 6972 7052 6965 7051 6 6971 6970 6973 7051 7050 7053 6 6972 6970 6974 7062 7053 7063 6 6973 6970 6968 6975 6976 7063 6 6974 6968 6976 6977 6981 6969 6 6974 6975 6977 6978 7063 7064 6 6976 6975 6978 6979 6980 6981 6 6976 6977 6979 7064 7065 7066 6 6978 6977 6980 7066 7067 7071 6 6979 6977 6981 7071 7072 7073 6 6980 6977 6975 6969 6982 7073 6 6981 6969 6983 6984 7073 7074 6 6982 6969 6984 6985 6562 6967 6 6982 6983 6985 7074 7075 7076 6 6984 6983 6562 6563 6986 7076 6 6985 6563 6567 6987 6988 7076 6 6986 6567 6988 6989 6990 6568 6 6986 6987 6989 6991 7076 7077 6 6988 6987 6990 6991 6992 6996 6 6989 6987 6996 6997 6570 6568 6 6988 6989 6992 6993 7077 7078 6 6991 6989 6993 6994 6995 6996 6 6991 6992 6994 7078 7081 7082 6 6993 6992 6995 7082 7085 7086 6 6994 6992 6996 7086 7087 7088 6 6995 6992 6989 6990 6997 7088 6 6996 6990 6570 6998 6999 7088 6 6997 6570 6999 7000 7001 6571 6 6997 6998 7000 7088 7089 7092 6 6999 6998 7001 7002 7092 7093 6 7000 6998 7002 7003 6575 6571 6 7000 7001 7003 7093 7094 7095 6 7002 7001 6575 6576 7004 7095 6 7003 6576 6578 7005 7095 7096 6 7004 6578 7006 7096 7097 7098 6 7005 6578 6579 7007 7012 7098 6 7006 6579 6582 7008 7009 7012 6 7007 6582 7009 6722 6720 6583 6 7007 7008 6722 6724 7010 7012 6 7009 6724 7011 7012 7013 7014 6 7010 6724 7022 7020 7014 6725 6 7009 7010 7007 7006 7013 7098 6 7012 7010 7014 7015 7098 7099 6 7013 7010 7015 7016 7020 7011 6 7013 7014 7016 7017 7099 7100 6 7015 7014 7017 7018 7019 7020 6 7015 7016 7018 7107 7100 7113 6 7017 7016 7019 7114 7113 7115 6 7018 7016 7020 7021 7115 7116 6 7019 7016 7014 7021 7022 7011 6 7019 7020 7022 7024 7116 7117 6 7021 7020 7011 6725 7023 7024 6 7022 6725 6726 7024 7025 7026 6 7021 7022 7023 7025 7117 7118 6 7024 7023 7026 7118 7119 7120 6 7025 7023 6726 7027 7028 7120 6 7026 6726 6727 7028 7029 7030 6 7026 7027 7029 7122 7120 7123 6 7028 7027 7030 7123 7034 7031 6 7029 7027 6727 6728 6729 7031 6 7030 6729 7032 7034 7029 7033 6 7031 6729 6730 6731 6732 7033 6 7032 6732 6734 6735 7034 7031 6 7033 6735 7035 7123 7029 7031 5 7034 6735 6736 7036 7123 6 7035 6736 6740 7037 7123 7122 7 7036 6740 6741 7038 7122 7124 7125 6 7037 6741 7039 7135 7125 7136 6 7038 6741 6742 7040 7136 7137 6 7039 6742 6743 7041 7137 7138 5 7040 6743 6754 7141 7138 6 6754 6743 6744 6746 6750 6752 6 6951 6952 7044 7301 7302 7046 6 7043 6952 6953 6955 7045 7046 6 7044 6955 6957 7046 7047 7048 6 7044 7045 7047 7302 7043 7303 6 7046 7045 7048 7303 7056 7054 6 7047 7045 6957 7049 7050 7054 6 7048 6957 7050 7051 6962 6958 6 7048 7049 7051 6972 7053 7054 6 7050 7049 6962 7052 6971 6972 6 7051 6962 6963 6964 6965 6971 6 7050 6972 7054 7055 7062 6973 6 7050 7053 7055 7056 7047 7048 6 7054 7053 7056 7057 7058 7062 6 7054 7055 7057 7303 7047 7304 6 7056 7055 7058 7059 7307 7304 6 7057 7055 7059 7060 7061 7062 6 7057 7058 7060 7307 7476 7477 6 7059 7058 7061 7477 7478 7479 6 7060 7058 7062 7063 7064 7479 6 7061 7058 7055 7053 6973 7063 6 7062 6973 6974 6976 7061 7064 6 7061 7063 6976 6978 7065 7479 6 7064 6978 7066 7479 7480 7481 6 7065 6978 6979 7067 7068 7481 6 7066 6979 7068 7069 7070 7071 6 7066 7067 7069 7483 7481 7462 6 7068 7067 7070 7462 7484 7485 6 7069 7067 7071 7485 7486 7487 6 7070 7067 6979 6980 7072 7487 6 7071 6980 7073 7487 7488 7492 6 7072 6980 6981 6982 7074 7492 6 7073 6982 6984 7075 7493 7492 6 7074 6984 7076 7493 7079 7077 6 7075 6984 6985 6986 6988 7077 6 7076 6988 6991 7078 7079 7075 6 7077 6991 6993 7079 7080 7081 6 7077 7078 7080 7691 7493 7075 6 7079 7078 7081 7223 7224 7691 6 7080 7078 6993 7082 7083 7223 6 7081 6993 6994 7083 7084 7085 6 7081 7082 7084 7226 7223 7227 6 7083 7082 7085 7227 7228 7229 6 7084 7082 6994 7086 7232 7229 6 7085 6994 6995 7087 7232 7233 6 7086 6995 7088 7089 7090 7233 6 7087 6995 6996 6997 6999 7089 6 7088 6999 7087 7090 7091 7092 6 7087 7089 7091 7233 7234 7235 6 7090 7089 7092 7235 7236 7237 6 7091 7089 6999 7000 7093 7237 6 7092 7000 7002 7094 7237 7238 6 7093 7002 7095 7238 7239 7103 6 7094 7002 7003 7004 7096 7103 6 7095 7004 7005 7097 7102 7103 6 7096 7005 7098 7099 7101 7102 6 7097 7005 7006 7012 7013 7099 6 7098 7013 7015 7100 7101 7097 6 7099 7015 7101 7106 7107 7017 6 7099 7100 7097 7102 7105 7106 6 7097 7101 7096 7103 7104 7105 6 7096 7102 7104 7239 7094 7095 6 7103 7102 7105 7241 7239 7242 6 7104 7102 7101 7106 7242 7243 6 7105 7101 7100 7107 7108 7243 6 7106 7100 7017 7108 7109 7113 6 7106 7107 7109 7110 7243 7244 6 7108 7107 7110 7111 7112 7113 6 7108 7109 7111 7247 7244 7248 6 7110 7109 7112 7248 7249 7250 6 7111 7109 7113 7114 7250 7251 6 7112 7109 7114 7018 7017 7107 6 7112 7113 7018 7115 7251 7254 6 7114 7018 7019 7116 7254 7255 6 7115 7019 7021 7117 7258 7255 6 7116 7021 7024 7118 7258 7259 6 7117 7024 7025 7119 7259 7128 6 7118 7025 7120 7121 7127 7128 6 7119 7025 7121 7122 7028 7026 6 7119 7120 7122 7124 7126 7127 7 7121 7120 7028 7123 7036 7037 7124 6 7122 7028 7029 7034 7035 7036 5 7122 7037 7125 7126 7121 5 7124 7037 7126 7135 7038 7 7124 7125 7121 7127 7130 7131 7135 6 7121 7126 7119 7128 7129 7130 6 7119 7127 7129 7261 7259 7118 6 7128 7127 7130 7261 7532 7530 6 7129 7127 7126 7131 7132 7532 6 7130 7126 7132 7133 7134 7135 6 7130 7131 7133 7532 7531 7533 6 7132 7131 7134 7533 7534 7535 6 7133 7131 7135 7535 7536 7136 6 7134 7131 7126 7125 7038 7136 6 7135 7038 7039 7137 7536 7134 6 7136 7039 7040 7138 7139 7536 6 7137 7040 7139 7140 7141 7041 6 7137 7138 7140 7148 7150 7536 6 7139 7138 7141 7142 7147 7148 7 7140 7138 7041 6754 6755 6759 7142 6 7140 7141 6759 6760 7143 7147 6 7142 6760 7144 7145 7146 7147 7 7143 6760 7145 4552 4551 6763 6761 5 7143 7144 4552 4554 7146 6 7145 4554 4556 7143 7147 7148 5 7143 7146 7148 7140 7142 7 7147 7146 4556 7140 7139 7149 7150 6 7148 4556 7150 7151 7152 7153 6 7148 7149 7139 7151 7536 7535 6 7150 7149 7152 7535 7534 7537 6 7151 7149 7153 7154 7155 7537 6 7152 7149 7154 4649 4555 4556 6 7152 7153 7155 7156 7166 4649 6 7152 7154 7156 7157 7537 7538 6 7155 7154 7157 7158 7159 7166 6 7155 7156 7158 7538 7539 7554 6 7157 7156 7159 7160 7554 7555 6 7158 7156 7160 7161 7162 7166 6 7158 7159 7161 7163 7167 7555 6 7160 7159 7162 7163 4137 7164 5 7161 7159 7164 7165 7166 6 7160 7161 4137 7167 7168 4138 7 4137 7161 7162 7165 4413 4134 4135 5 7164 7162 4413 4415 7166 7 4415 7165 7162 7159 7156 7154 4649 6 7160 7163 7168 7555 7556 7560 7 7167 7163 4138 7169 7560 7561 7562 5 7168 4138 4139 7170 7562 7 7169 4139 4140 7171 7562 7563 7564 6 7170 4140 4124 7172 7173 7564 6 7171 4124 7173 7174 4122 9789 6 7171 7172 7174 7175 7176 7564 6 7173 7172 7175 9788 9787 9789 6 7173 7174 7176 7177 7178 9788 7 7173 7175 7177 7564 7563 7568 7569 6 7176 7175 7178 7179 7180 7569 6 7177 7175 7179 9788 3535 3537 6 7177 7178 7180 7181 7182 3537 6 7177 7179 7181 7570 7569 7571 6 7180 7179 7182 7571 7572 7573 6 7181 7179 3537 3538 7183 7573 6 7182 3538 7184 7575 7573 7187 6 7183 3538 3539 7185 7186 7187 6 7184 3539 7186 7211 7210 7212 6 7184 7185 7187 7188 7211 7192 6 7184 7186 7188 7189 7575 7183 6 7187 7186 7189 7190 7191 7192 6 7187 7188 7190 7575 7576 7579 6 7189 7188 7191 7193 7579 7580 6 7190 7188 7192 7193 7194 7198 6 7191 7188 7198 7199 7211 7186 6 7190 7191 7194 7195 7580 7581 6 7193 7191 7195 7196 7197 7198 6 7193 7194 7196 7581 7582 7583 6 7195 7194 7197 7583 3196 3195 6 7196 7194 7198 3195 7200 7203 6 7197 7194 7191 7192 7199 7200 6 7198 7192 7200 7201 7211 7208 6 7198 7199 7201 7202 7203 7197 6 7200 7199 7202 7206 7207 7208 6 7200 7201 7203 7204 7205 7206 6 7200 7202 7204 3194 3195 7197 6 7203 7202 7205 7220 7221 3194 6 7204 7202 7206 9745 7218 7220 6 7205 7202 7201 7207 9745 9746 6 7206 7201 7208 7209 9746 7213 6 7207 7201 7209 7210 7211 7199 6 7207 7208 7210 4373 4374 7213 6 7209 7208 7211 7185 7212 4373 6 7210 7208 7199 7192 7186 7185 6 7210 7185 3539 3540 4372 4373 6 7209 4374 4375 7214 9746 7207 6 7213 4375 4377 7215 7216 9746 6 7214 4377 7216 2863 1627 2862 6 7214 7215 2863 7217 9745 9746 6 7216 2863 2864 2865 7218 9745 6 7217 2865 7219 7220 7205 9745 5 7218 2865 7220 3214 2866 6 7218 7219 3214 7221 7205 7204 6 7220 3214 3215 7222 3194 7204 5 7221 3215 3216 3193 3194 6 7080 7081 7224 7225 7226 7083 6 7080 7223 7225 7691 7690 7692 6 7224 7223 7226 7692 7693 7674 6 7225 7223 7083 7227 7674 7694 6 7226 7083 7084 7228 7694 7695 6 7227 7084 7229 7230 7695 7696 6 7228 7084 7230 7231 7232 7085 6 7228 7229 7231 7696 7697 7701 6 7230 7229 7232 7701 7702 7703 6 7231 7229 7085 7086 7233 7703 6 7232 7086 7087 7090 7234 7703 6 7233 7090 7235 7718 7704 7703 6 7234 7090 7091 7236 7718 7717 6 7235 7091 7237 7717 7719 7720 6 7236 7091 7092 7093 7238 7720 6 7237 7093 7094 7239 7240 7720 6 7238 7094 7103 7240 7241 7104 6 7238 7239 7241 7720 7721 7722 6 7240 7239 7104 7242 7722 7725 6 7241 7104 7105 7243 7245 7725 6 7242 7105 7106 7108 7244 7245 6 7243 7108 7245 7246 7247 7110 6 7243 7244 7246 7728 7725 7242 6 7245 7244 7247 7964 7728 7965 6 7246 7244 7110 7248 7965 7966 6 7247 7110 7111 7249 7966 7967 6 7248 7111 7250 7511 7967 7968 6 7249 7111 7112 7251 7252 7511 6 7250 7112 7114 7252 7253 7254 6 7250 7251 7253 7511 7512 7516 6 7252 7251 7254 7256 9775 7516 6 7253 7251 7114 7115 7255 7256 6 7254 7115 7256 7257 7258 7116 6 7254 7255 7257 7523 7253 9775 6 7256 7255 7258 7260 7524 7523 6 7257 7255 7116 7117 7259 7260 6 7258 7117 7118 7260 7261 7128 6 7258 7259 7261 7529 7524 7257 6 7260 7259 7128 7129 7530 7529 6 6907 6908 7263 7440 7442 7443 6 7262 6908 6909 7264 7443 7444 6 7263 6909 6911 7265 7444 7445 6 7264 6911 6912 7266 7445 7446 6 7265 6912 6913 7267 7449 7446 6 7266 6913 6914 7268 7449 7450 6 7267 6914 7269 7450 7451 7452 6 7268 6914 6915 6917 7270 7452 6 7269 6917 6918 7271 7452 7453 6 7270 6918 6919 7272 7273 7453 6 7271 6919 7273 7274 6921 6920 6 7271 7272 7274 7453 7454 7455 6 7273 7272 6921 7275 7455 7456 6 7274 6921 6922 7276 7456 7457 6 7275 6922 6923 7277 7457 7458 6 7276 6923 6924 7278 7458 7459 6 7277 6924 6925 7279 7280 7459 6 7278 6925 7280 7281 6927 6926 6 7278 7279 7281 7459 7460 7464 6 7280 7279 6927 6928 7282 7464 6 7281 6928 7283 7464 7465 7466 6 7282 6928 6929 6930 7284 7466 6 7283 6930 7285 7466 7467 7468 6 7284 6930 6931 6932 7286 7468 6 7285 6932 7287 7468 7469 7288 6 7286 6932 6933 6934 6936 7288 6 7287 6936 6938 7289 7469 7286 6 7288 6938 7290 7469 7470 7471 6 7289 6938 6939 7291 7471 7472 6 7290 6939 6941 6943 7292 7472 6 7291 6943 7293 7472 7473 7474 6 7292 6943 6944 7294 7474 7299 6 7293 6944 7295 7297 7298 7299 6 7294 6944 6945 6946 7296 7297 5 7295 6946 6947 6948 7297 6 7296 6948 6949 7295 7294 7298 6 7294 7297 6949 6950 7299 7300 5 7294 7298 7300 7474 7293 7 7299 7298 6950 7301 7474 7305 7302 5 7300 6950 6951 7043 7302 6 7301 7043 7046 7303 7305 7300 6 7302 7046 7047 7056 7304 7305 6 7303 7056 7305 7306 7307 7057 6 7303 7304 7306 7474 7300 7302 6 7305 7304 7307 7474 7473 7475 6 7306 7304 7057 7059 7475 7476 5 4702 4703 7309 7855 7856 6 7308 4703 4704 7310 7856 7857 6 7309 4704 4705 7311 7857 7858 6 7310 4705 4706 7312 7858 7859 6 7311 4706 4707 5170 7313 7859 6 7312 5170 7314 7859 7860 7861 6 7313 5170 5171 7315 7861 7862 6 7314 5171 5172 7316 7862 7863 6 7315 5172 5173 7317 7863 7864 6 7316 5173 5174 7318 7864 7865 6 7317 5174 5175 7319 7865 7866 6 7318 5175 5176 7320 7866 7867 6 7319 5176 5177 5178 7321 7867 6 7320 5178 7322 7867 7868 7869 6 7321 5178 5179 7323 7869 7870 6 7322 5179 5180 5411 7324 7870 6 7323 5411 7325 7870 7871 7872 6 7324 5411 5412 7326 7872 7873 6 7325 5412 5413 5414 7327 7873 6 7326 5414 7328 7873 7874 7875 6 7327 5414 5415 5416 7329 7875 6 7328 5416 7330 7875 7876 7877 6 7329 5416 5417 5418 7331 7877 6 7330 5418 6791 7332 7877 7878 6 7331 6791 7333 7878 7879 7880 6 7332 6791 6792 6793 7334 7880 6 7333 6793 6794 7335 7880 7881 6 7334 6794 6795 6796 7336 7881 6 7335 6796 6797 7337 7881 7882 6 7336 6797 6798 7338 7882 7883 6 7337 6798 6799 7339 7883 7884 6 7338 6799 6800 7340 7884 7885 6 7339 6800 6801 7341 7885 7886 6 7340 6801 7342 7886 7887 7888 6 7341 6801 6802 6803 7343 7888 6 7342 6803 6804 7344 7888 7889 6 7343 6804 6805 7345 7889 7890 6 7344 6805 6806 7346 7890 7891 6 7345 6806 6807 7347 7891 7892 6 7346 6807 6808 7348 7892 7893 6 7347 6808 7349 7893 7894 7895 7 7348 6808 6809 6811 6812 7350 7895 6 7349 6812 6813 7351 7895 7896 6 7350 6813 6814 7352 7896 7897 5 7351 6814 6815 7353 7897 7 7352 6815 6816 7354 7897 7898 7899 5 7353 6816 6817 7355 7899 7 7354 6817 6818 7356 7899 7900 7901 6 7355 6818 7357 7901 7902 7903 7 7356 6818 6819 6820 6821 7358 7903 6 7357 6821 7359 7903 7904 7905 6 7358 6821 6822 7360 7361 7905 6 7359 6822 6823 7361 7362 6825 6 7359 7360 7362 7905 7906 7907 6 7361 7360 6825 6828 7363 7907 6 7362 6828 7364 7907 7908 7909 5 7363 6828 6829 7365 7909 7 7364 6829 7366 7369 7371 7909 7910 6 7365 6829 6830 6831 7367 7369 6 7366 6831 7368 7369 7370 7375 5 7367 6831 7375 6835 6834 6 7366 7367 7370 7365 7371 7372 6 7369 7367 7372 7373 7374 7375 6 7365 7369 7372 7910 7911 7912 6 7371 7369 7370 7373 7912 7913 6 7372 7370 7374 7913 7914 7915 6 7373 7370 7375 6836 7376 7915 6 7374 7370 7367 7368 6835 6836 6 7374 6836 7377 7915 7916 7917 6 7376 6836 6837 6838 7378 7917 5 7377 6838 7379 7601 7917 6 7378 6838 6839 6841 7380 7601 6 7379 6841 6842 7381 7601 7602 6 7380 6842 6843 7382 7605 7602 6 7381 6843 7383 7384 7605 7606 6 7382 6843 7384 6847 6845 6844 6 7382 7383 6847 7385 7606 7607 6 7384 6847 6848 7386 7607 7392 6 7385 6848 7387 7388 7391 7392 6 7386 6848 6849 6850 6851 7388 6 7387 6851 6854 7389 7391 7386 6 7388 6854 6855 6859 7390 7391 6 7389 6859 7391 7396 7393 7397 6 7389 7390 7388 7386 7392 7393 6 7386 7391 7393 7394 7607 7385 6 7392 7391 7394 7395 7396 7390 6 7392 7393 7395 7607 7608 7611 6 7394 7393 7396 7611 7612 7622 6 7395 7393 7390 7397 7622 7623 6 7396 7390 6859 6860 7398 7623 5 7397 6860 7399 7623 7624 6 7398 6860 6861 7400 7624 7625 7 7399 6861 6862 6865 7401 7625 7626 6 7400 6865 6867 7402 7403 7626 6 7401 6867 7403 7404 7405 6869 6 7401 7402 7404 7626 7627 7628 6 7403 7402 7405 7408 7628 7629 6 7404 7402 6869 7406 7407 7408 6 7405 6869 7407 7411 7412 6870 6 7405 7406 7408 7409 7410 7411 6 7405 7407 7404 7409 7632 7629 6 7408 7407 7410 7632 7633 7634 6 7409 7407 7411 7634 7635 7642 6 7410 7407 7406 7412 7642 7643 6 7411 7406 6870 7413 7414 7643 6 7412 6870 7414 7415 7416 6871 6 7412 7413 7415 7643 7644 7645 6 7414 7413 7416 7417 7645 7646 6 7415 7413 7417 7418 7419 6871 6 7415 7416 7418 7420 7421 7646 7 7417 7416 7419 6874 6876 6884 7420 5 7418 7416 6871 6872 6874 6 7418 6884 7417 7421 7422 7426 6 7417 7420 7422 7423 7646 7647 6 7421 7420 7423 7424 7425 7426 6 7421 7422 7424 7647 7648 7649 6 7423 7422 7425 7649 7650 7651 6 7424 7422 7426 7651 7652 7427 6 7425 7422 7420 6884 6885 7427 6 7426 6885 7428 7652 7425 7653 6 7427 6885 6886 7429 7653 7654 6 7428 6886 6887 7430 7431 7654 6 7429 6887 6888 7431 7432 7433 6 7429 7430 7432 6897 7434 7654 6 7431 7430 7433 6893 6894 6897 6 7432 7430 6888 6890 6891 6893 6 7431 6897 6898 7435 7655 7654 6 7434 6898 7436 7655 7656 7660 6 7435 6898 6899 7437 7660 7438 6 7436 6899 6900 6904 6905 7438 6 7437 6905 7439 7660 7436 7661 6 7438 6905 6906 7440 7441 7661 6 7439 6906 6907 7262 7441 7442 6 7439 7440 7442 7661 7662 7663 6 7441 7440 7262 7443 7663 7664 6 7442 7262 7263 7444 7664 7665 6 7443 7263 7264 7445 7665 7666 6 7444 7264 7265 7446 7447 7666 6 7445 7265 7447 7448 7449 7266 6 7445 7446 7448 7668 7666 7671 6 7447 7446 7449 7671 7676 7673 6 7448 7446 7266 7267 7450 7676 6 7449 7267 7268 7451 7676 7677 6 7450 7268 7452 7677 7678 7682 6 7451 7268 7269 7270 7453 7682 6 7452 7270 7271 7273 7454 7682 6 7453 7273 7455 7682 7681 7683 6 7454 7273 7274 7456 7686 7683 6 7455 7274 7275 7457 7686 7687 6 7456 7275 7276 7458 7687 7688 6 7457 7276 7277 7459 7688 7461 6 7458 7277 7278 7280 7460 7461 6 7459 7280 7461 7462 7463 7464 6 7459 7460 7462 7688 7458 7484 7 7461 7460 7463 7483 7068 7069 7484 6 7462 7460 7464 7483 7482 7465 6 7463 7460 7280 7281 7282 7465 6 7464 7282 7466 7482 7463 7494 6 7465 7282 7283 7284 7467 7494 6 7466 7284 7468 7494 7495 7496 6 7467 7284 7285 7286 7469 7496 6 7468 7286 7288 7289 7470 7496 6 7469 7289 7471 7496 7497 7498 6 7470 7289 7290 7472 7498 7475 6 7471 7290 7291 7292 7473 7475 5 7472 7292 7474 7306 7475 7 7473 7292 7293 7299 7300 7305 7306 7 7473 7306 7307 7476 7498 7471 7472 5 7475 7307 7059 7477 7498 6 7476 7059 7060 7478 7497 7498 7 7477 7060 7479 7480 7497 7495 7499 6 7478 7060 7061 7064 7065 7480 6 7478 7479 7065 7481 7482 7499 6 7480 7065 7482 7483 7068 7066 7 7480 7481 7483 7463 7465 7494 7499 5 7482 7481 7068 7462 7463 5 7462 7069 7485 7688 7461 6 7484 7069 7070 7486 7687 7688 6 7485 7070 7487 7686 7687 7685 7 7486 7070 7071 7072 7488 7489 7685 6 7487 7072 7489 7490 7491 7492 5 7487 7488 7490 7685 7684 6 7489 7488 7491 7684 7689 7690 6 7490 7488 7492 7493 7690 7691 6 7491 7488 7493 7074 7073 7072 6 7491 7492 7074 7075 7691 7079 6 7482 7465 7466 7467 7495 7499 6 7494 7467 7496 7497 7478 7499 6 7495 7467 7468 7469 7470 7497 6 7496 7470 7498 7477 7478 7495 6 7497 7470 7471 7477 7476 7475 5 7495 7478 7480 7482 7494 6 427 5612 5613 7501 7502 9768 6 7500 5613 7502 7503 7504 7505 6 7500 7501 7503 9768 9769 9770 6 7502 7501 7504 6474 9770 9780 5 7503 7501 6474 6472 7505 7 6472 7504 7501 5613 5614 7506 6470 5 7505 5614 7507 6469 6470 6 7506 5614 5615 7508 7509 6469 6 7507 5615 7509 7510 9734 4518 5 7507 7508 7510 6469 6468 6 7509 7508 6468 9732 9733 9734 6 7249 7250 7252 7512 7513 7968 6 7511 7252 7513 7514 7515 7516 6 7511 7512 7514 7968 7969 7970 6 7513 7512 7515 7970 7971 7972 6 7514 7512 7516 7517 7518 7972 6 7515 7512 7252 7517 9775 7253 6 7515 7516 7518 7519 7520 9775 6 7515 7517 7519 7972 7973 7977 6 7518 7517 7520 7521 7977 7978 6 7519 7517 7521 7522 7523 9775 6 7519 7520 7522 7989 7978 7526 6 7521 7520 7523 7524 7525 7526 6 7522 7520 7524 7256 7257 9775 6 7522 7523 7525 7260 7529 7257 6 7522 7524 7526 7527 7528 7529 6 7522 7525 7527 7989 7521 7990 6 7526 7525 7528 7990 7546 7545 6 7527 7525 7529 7530 7531 7545 6 7528 7525 7530 7261 7260 7524 6 7528 7529 7261 7531 7532 7129 7 7528 7530 7532 7132 7533 7543 7545 5 7531 7530 7129 7130 7132 6 7531 7132 7133 7534 7544 7543 6 7533 7133 7535 7151 7537 7544 6 7534 7133 7134 7536 7150 7151 6 7535 7134 7136 7137 7139 7150 6 7534 7151 7152 7155 7538 7544 6 7537 7155 7157 7539 7540 7544 6 7538 7157 7540 7541 7553 7554 6 7538 7539 7541 7542 7543 7544 6 7540 7539 7542 7547 7553 7550 6 7540 7541 7543 7545 7546 7547 6 7540 7542 7544 7533 7531 7545 6 7540 7543 7533 7534 7537 7538 6 7531 7543 7542 7546 7527 7528 6 7545 7542 7547 7548 7990 7527 6 7546 7542 7541 7548 7549 7550 6 7546 7547 7549 7990 7989 7991 6 7548 7547 7550 7551 7991 7992 6 7549 7547 7551 7552 7553 7541 6 7549 7550 7552 7992 7994 7995 7 7551 7550 7553 7557 7556 7558 7995 6 7552 7550 7541 7539 7554 7557 6 7553 7539 7157 7158 7555 7557 6 7554 7158 7160 7167 7556 7557 7 7555 7167 7557 7552 7558 7559 7560 5 7555 7556 7554 7553 7552 5 7552 7556 7559 7995 7996 7 7558 7556 7560 7996 7999 7566 7561 5 7559 7556 7167 7168 7561 6 7560 7168 7562 7565 7566 7559 6 7561 7168 7169 7170 7563 7565 6 7562 7170 7564 7176 7565 7568 5 7563 7170 7171 7173 7176 6 7562 7563 7561 7566 7567 7568 6 7561 7565 7567 7999 7559 8000 6 7566 7565 7568 7569 7570 8000 5 7567 7565 7563 7176 7569 6 7568 7176 7567 7570 7180 7177 6 7567 7569 7180 7571 8000 8001 6 7570 7180 7181 7572 8001 8002 6 7571 7181 7573 7574 8002 8003 6 7572 7181 7574 7575 7183 7182 6 7572 7573 7575 7576 7577 8003 6 7574 7573 7183 7187 7189 7576 6 7575 7189 7574 7577 7578 7579 6 7574 7576 7578 8003 8004 8005 6 7577 7576 7579 8005 8006 8007 6 7578 7576 7189 7190 7580 8007 6 7579 7190 7193 7581 8007 8008 6 7580 7193 7195 7582 8008 8009 6 7581 7195 7583 7585 8012 8009 6 7582 7195 7196 3196 7584 7585 6 7583 3196 3186 7585 7586 3187 6 7583 7584 7586 7587 7582 8012 6 7585 7584 7587 7588 3958 3187 6 7585 7586 7588 7729 8013 8012 6 7587 7586 3958 3960 7589 7729 6 7588 3960 7590 7729 7730 7731 6 7589 3960 3961 7591 7731 7732 6 7590 3961 7592 7738 7732 7739 6 7591 3961 2890 2891 7593 7739 6 7592 2891 7594 7595 7739 7740 6 7593 2891 7595 7596 7597 2892 6 7593 7594 7596 7740 7741 7745 6 7595 7594 7597 7598 7745 7746 6 7596 7594 7598 7599 7600 2892 6 7596 7597 7599 4089 7746 7751 5 7598 7597 7600 4089 4086 6 7599 7597 4086 2880 2879 2892 7 7378 7379 7380 7602 7603 7917 7918 6 7601 7380 7603 7604 7605 7381 6 7601 7602 7604 7926 7920 7918 5 7603 7602 7605 7926 7927 7 7604 7602 7381 7382 7606 7609 7927 6 7605 7382 7384 7607 7608 7609 6 7606 7384 7385 7392 7394 7608 6 7607 7394 7606 7609 7610 7611 6 7606 7608 7610 7929 7927 7605 6 7609 7608 7611 7613 7616 7929 6 7610 7608 7394 7395 7612 7613 6 7611 7395 7613 7614 7621 7622 6 7611 7612 7614 7615 7616 7610 6 7613 7612 7615 7619 7620 7621 6 7613 7614 7616 7617 7618 7619 6 7613 7615 7617 8157 7929 7610 6 7616 7615 7618 8155 8157 8156 6 7617 7615 7619 8156 8158 8159 6 7618 7615 7614 7620 8159 8160 6 7619 7614 7621 8160 8161 8162 6 7620 7614 7612 7622 8162 8163 6 7621 7612 7395 7396 7623 8163 6 7622 7396 7397 7398 7624 8163 6 7623 7398 7399 7625 8163 8164 6 7624 7399 7400 7626 8164 7627 5 7625 7400 7401 7403 7627 6 7626 7403 7628 8164 7625 8165 6 7627 7403 7404 7629 7630 8165 6 7628 7404 7630 7631 7632 7408 6 7628 7629 7631 8165 8166 8167 6 7630 7629 7632 8170 8167 8171 6 7631 7629 7408 7409 7633 8171 6 7632 7409 7634 8173 8171 8174 6 7633 7409 7410 7635 7636 8174 6 7634 7410 7636 7637 7641 7642 6 7634 7635 7637 7638 8174 8175 6 7636 7635 7638 7639 7640 7641 6 7636 7637 7639 8175 8176 8177 6 7638 7637 7640 8177 8178 8179 6 7639 7637 7641 8179 8180 8181 6 7640 7637 7635 7642 8181 8182 6 7641 7635 7410 7411 7643 8182 6 7642 7411 7412 7414 7644 8182 6 7643 7414 7645 8183 8182 8184 6 7644 7414 7415 7646 8184 8185 6 7645 7415 7417 7421 7647 8185 6 7646 7421 7423 7648 8185 8186 6 7647 7423 7649 8186 8187 8188 6 7648 7423 7424 7650 8188 8189 6 7649 7424 7651 8189 8190 8191 6 7650 7424 7425 7652 8191 8192 6 7651 7425 7427 7653 8192 7657 6 7652 7427 7428 7654 7655 7657 6 7653 7428 7429 7655 7434 7431 6 7653 7654 7434 7435 7656 7657 6 7655 7435 7657 7658 7659 7660 6 7655 7656 7658 8192 7652 7653 6 7657 7656 7659 8192 8193 8194 6 7658 7656 7660 8194 7662 7661 6 7659 7656 7435 7436 7438 7661 6 7660 7438 7439 7441 7662 7659 6 7661 7441 7663 8194 7659 8195 6 7662 7441 7442 7664 8208 8195 6 7663 7442 7443 7665 8208 8207 6 7664 7443 7444 7666 7667 8207 6 7665 7444 7667 7668 7447 7445 6 7665 7666 7668 7669 8206 8207 6 7667 7666 7447 7669 7670 7671 6 7667 7668 7670 7698 8206 9790 6 7669 7668 7671 7672 7695 9790 6 7670 7668 7447 7448 7672 7673 6 7670 7671 7673 7674 7695 7694 6 7672 7671 7674 7675 7676 7448 7 7672 7673 7675 7693 7225 7226 7694 6 7674 7673 7676 7677 7679 7693 6 7675 7673 7448 7449 7450 7677 6 7676 7450 7451 7678 7679 7675 6 7677 7451 7679 7680 7681 7682 7 7677 7678 7680 7675 7693 7692 7689 5 7679 7678 7681 7689 7684 6 7680 7678 7682 7454 7683 7684 6 7681 7678 7451 7452 7453 7454 6 7681 7454 7684 7685 7686 7455 7 7681 7683 7685 7489 7490 7689 7680 6 7684 7683 7686 7486 7487 7489 6 7685 7683 7455 7456 7687 7486 6 7686 7456 7457 7486 7485 7688 6 7485 7687 7457 7458 7461 7484 6 7684 7490 7690 7692 7679 7680 6 7689 7490 7491 7691 7224 7692 6 7690 7491 7493 7079 7080 7224 6 7690 7224 7225 7693 7679 7689 5 7692 7225 7674 7675 7679 5 7674 7226 7227 7695 7672 7 7694 7227 7228 7696 7670 7672 9790 6 7695 7228 7230 7697 7698 9790 6 7696 7230 7698 7699 7700 7701 6 7696 7697 7699 8206 7669 9790 6 7698 7697 7700 8205 8203 8206 6 7699 7697 7701 8318 8205 7707 6 7700 7697 7230 7231 7702 7707 6 7701 7231 7703 7704 7705 7707 6 7702 7231 7704 7234 7233 7232 6 7702 7703 7705 7706 7718 7234 6 7702 7704 7706 7707 7708 7709 6 7705 7704 7709 7710 7711 7718 6 7702 7705 7708 8318 7700 7701 6 7707 7705 7709 8318 8481 8317 6 7708 7705 7706 7710 8481 8482 6 7709 7706 7711 7712 7713 8482 6 7710 7706 7712 7716 7717 7718 6 7710 7711 7713 7714 7715 7716 6 7710 7712 7714 8482 8483 8484 6 7713 7712 7715 8484 9765 8486 6 7714 7712 7716 9765 7723 9767 6 7715 7712 7711 7717 9767 7719 6 7716 7711 7718 7235 7236 7719 6 7717 7711 7706 7704 7234 7235 6 7717 7236 7720 9767 7716 7721 6 7719 7236 7237 7238 7240 7721 6 7720 7240 7722 7723 9767 7719 6 7721 7240 7241 7723 7724 7725 7 7721 7722 7724 7726 9765 7715 9767 6 7723 7722 7725 7726 7727 7728 6 7724 7722 7728 7245 7242 7241 6 7723 7724 7727 7962 9765 9764 6 7726 7724 7728 7962 7963 7964 6 7727 7724 7725 7245 7964 7246 6 7587 7588 7589 7730 8013 8014 6 7729 7589 7731 8014 8015 7734 6 7730 7589 7590 7732 7733 7734 6 7731 7590 7733 7737 7738 7591 6 7731 7732 7734 7735 7736 7737 6 7731 7733 7735 8015 7730 8016 6 7734 7733 7736 8016 8017 8018 6 7735 7733 7737 8018 8019 8020 6 7736 7733 7732 7738 8020 8021 6 7737 7732 7591 7739 9766 8021 6 7738 7591 7592 7593 7740 9766 6 7739 7593 7595 7741 7742 9766 6 7740 7595 7742 7743 7744 7745 6 7740 7741 7743 8025 8023 9766 6 7742 7741 7744 8025 8026 8027 6 7743 7741 7745 7747 7748 8027 6 7744 7741 7595 7596 7746 7747 6 7745 7596 7598 7747 7750 7751 6 7745 7746 7744 7748 7749 7750 6 7744 7747 7749 8027 8031 8032 6 7748 7747 7750 8032 8036 7759 6 7749 7747 7746 7751 7752 7759 7 7750 7746 7598 4089 4090 7752 7753 7 7750 7751 7753 4379 7754 7758 7759 4 7752 7751 4090 4379 5 7752 4379 4380 7755 7758 6 7754 4380 4382 7756 7757 7758 6 7755 4382 7757 7762 7763 7764 6 7755 7756 7758 7760 7761 7762 6 7755 7757 7754 7752 7759 7760 6 7752 7758 7760 8036 7749 7750 5 7759 7758 7757 7761 8036 7 7760 7757 7762 8036 8640 8635 8035 7 7761 7757 7756 7763 8852 8639 8640 6 7762 7756 7764 7765 8852 8853 6 7763 7756 4382 4383 4389 7765 6 7763 7764 4389 7766 8319 8853 6 7765 4389 4390 7767 8319 8320 6 7766 4390 3142 7768 7769 8320 6 7767 3142 7769 7770 7774 3143 6 7767 7768 7770 7771 8322 8320 6 7769 7768 7771 7772 7773 7774 6 7769 7770 7772 8322 8323 8324 6 7771 7770 7773 8324 8325 7777 6 7772 7770 7774 7775 7776 7777 6 7773 7770 7768 3143 3144 7775 6 7774 3144 7773 7776 3145 9791 6 7773 7775 7777 7778 3414 9791 6 7773 7776 7778 8325 7772 8326 6 7777 7776 3414 3415 7779 8326 6 7778 3415 5382 5384 7780 8326 6 7779 5384 5386 7781 8326 8327 6 7780 5386 5388 7782 8329 8327 6 7781 5388 5616 7783 8329 8330 6 7782 5616 7784 8330 8331 8332 6 7783 5616 5617 7785 8037 8332 6 7784 5617 7786 7787 8037 8038 6 7785 5617 5618 7787 7788 7789 6 7785 7786 7788 8038 8039 8040 6 7787 7786 7789 8045 8040 7794 6 7788 7786 5618 5619 7790 7794 6 7789 5619 7791 7792 7793 7794 6 7790 5619 7792 3779 3778 5620 6 7790 7791 7793 7797 7798 3779 6 7790 7792 7794 7795 7796 7797 6 7790 7793 7795 8045 7788 7789 6 7794 7793 7796 8045 8046 8047 6 7795 7793 7797 8048 8047 8049 6 7796 7793 7792 7798 8049 7799 6 7797 7792 3779 3780 3783 7799 6 7798 3783 3784 7800 8049 7797 6 7799 3784 3785 3788 7801 8049 6 7800 3788 3790 7802 8048 8049 6 7801 3790 3791 3793 7803 8048 6 7802 3793 7804 7806 8047 8048 6 7803 3793 3794 7805 7806 7807 6 7804 3794 7807 7808 7809 3795 6 7803 7804 7807 8046 8047 8343 6 7806 7804 7805 7808 8344 8343 6 7807 7805 7809 8344 8345 7930 6 7808 7805 3795 3796 7810 7930 6 7809 3796 3952 7811 7930 7931 6 7810 3952 7812 7931 7932 7936 6 7811 3952 3953 7813 7936 7937 6 7812 3953 3954 7814 7937 7938 6 7813 3954 7815 7938 7939 7816 6 7814 3954 3955 3956 4238 7816 6 7815 4238 4503 7817 7939 7814 6 7816 4503 4504 7818 7939 7940 6 7817 4504 7819 7940 7941 7942 6 7818 4504 4505 7820 7942 7943 6 7819 4505 4506 4507 7821 7943 6 7820 4507 7822 7943 7944 7945 6 7821 4507 4508 7823 7945 7946 6 7822 4508 4509 7824 7946 7947 6 7823 4509 7825 7826 7947 7948 6 7824 4509 4510 7826 7827 7828 6 7824 7825 7827 7948 7949 7950 6 7826 7825 7828 7950 7951 7952 6 7827 7825 4510 4419 7829 7952 6 7828 4419 4247 7830 7952 7832 6 7829 4247 4248 4739 7831 7832 6 7830 4739 5003 7832 7833 7834 6 7830 7831 7833 7952 7829 7953 6 7832 7831 7834 7953 7954 7955 6 7833 7831 5003 5004 7835 7955 6 7834 5004 5005 7836 7955 7956 6 7835 5005 7837 7956 7957 7958 6 7836 5005 4750 4751 7838 7958 6 7837 4751 4757 7839 7958 7959 6 7838 4757 7840 7959 7960 7846 6 7839 4757 4758 7841 7846 7961 6 7840 4758 4661 4662 7842 7961 6 7841 4662 4663 4689 7843 7961 6 7842 4689 4690 7844 7961 7845 6 7843 4690 4691 5158 5159 7845 5 7844 5159 7846 7961 7843 7 7845 5159 7847 7960 7839 7840 7961 6 7846 5159 5160 7848 8082 7960 6 7847 5160 5161 7849 8082 8083 6 7848 5161 5162 7850 8083 8084 6 7849 5162 7851 8084 8085 8086 6 7850 5162 5163 5164 7852 8086 6 7851 5164 7853 8086 8087 8088 6 7852 5164 5165 7854 8088 8089 7 7853 5165 4700 4701 4702 7855 8089 5 7854 4702 7308 7856 8089 7 7855 7308 7309 7857 8089 8090 8091 7 7856 7309 7310 7858 8091 8092 8093 6 7857 7310 7311 7859 8093 8094 6 7858 7311 7312 7313 7860 8094 6 7859 7313 7861 8094 8095 8096 6 7860 7313 7314 7862 8096 8097 6 7861 7314 7315 7863 8097 8098 6 7862 7315 7316 7864 8098 8099 6 7863 7316 7317 7865 8099 8100 6 7864 7317 7318 7866 8100 8101 6 7865 7318 7319 7867 8101 8102 6 7866 7319 7320 7321 7868 8102 6 7867 7321 7869 8102 8103 8104 6 7868 7321 7322 7870 8104 8105 6 7869 7322 7323 7324 7871 8105 6 7870 7324 7872 8105 8106 8107 6 7871 7324 7325 7873 8107 8108 6 7872 7325 7326 7327 7874 8108 6 7873 7327 7875 8108 8109 8110 6 7874 7327 7328 7329 7876 8110 6 7875 7329 7877 8110 8111 8112 6 7876 7329 7330 7331 7878 8112 6 7877 7331 7332 7879 8112 8113 6 7878 7332 7880 8113 8114 8115 6 7879 7332 7333 7334 7881 8115 6 7880 7334 7335 7336 7882 8115 6 7881 7336 7337 7883 8115 8116 7 7882 7337 7338 7884 8116 8117 8118 6 7883 7338 7339 7885 8118 8119 6 7884 7339 7340 7886 8119 8120 6 7885 7340 7341 7887 8120 8121 6 7886 7341 7888 8121 8122 8123 6 7887 7341 7342 7343 7889 8123 6 7888 7343 7344 7890 8123 8124 6 7889 7344 7345 7891 8124 8125 6 7890 7345 7346 7892 8125 8126 6 7891 7346 7347 7893 8126 8127 6 7892 7347 7348 7894 8127 8128 6 7893 7348 7895 8128 8129 8130 6 7894 7348 7349 7350 7896 8130 6 7895 7350 7351 7897 8130 8131 7 7896 7351 7352 7353 7898 8131 8132 5 7897 7353 7899 8132 8133 7 7898 7353 7354 7355 7900 8133 8134 6 7899 7355 7901 8134 8135 8136 5 7900 7355 7356 7902 8136 7 7901 7356 7903 8136 8137 8138 7904 5 7902 7356 7357 7358 7904 6 7903 7358 7905 8138 7902 8139 6 7904 7358 7359 7361 7906 8139 6 7905 7361 7907 8139 8140 8141 6 7906 7361 7362 7363 7908 8141 6 7907 7363 7909 8141 8142 8143 6 7908 7363 7364 7365 7910 8143 6 7909 7365 7371 7911 8143 8144 6 7910 7371 7912 8144 8145 8146 5 7911 7371 7372 7913 8146 7 7912 7372 7373 7914 8146 8147 8148 6 7913 7373 7915 8148 8149 8150 6 7914 7373 7374 7376 7916 8150 6 7915 7376 7917 7918 7919 8150 6 7916 7376 7377 7378 7601 7918 6 7917 7601 7916 7919 7920 7603 6 7916 7918 7920 7921 7922 8150 6 7919 7918 7921 7925 7926 7603 6 7919 7920 7922 7923 7924 7925 6 7919 7921 7923 8150 8151 8149 6 7922 7921 7924 8151 8152 8153 6 7923 7921 7925 8153 8154 8155 6 7924 7921 7920 7926 8155 7928 6 7925 7920 7603 7604 7927 7928 6 7926 7604 7928 7929 7609 7605 6 7926 7927 7929 8155 7925 8157 6 7928 7927 7609 8157 7616 7610 6 7809 7810 7931 8050 8345 7808 6 7930 7810 7811 7932 7933 8050 6 7931 7811 7933 7934 7935 7936 6 7931 7932 7934 8050 8051 8052 6 7933 7932 7935 8052 8053 8057 6 7934 7932 7936 8059 8057 8060 6 7935 7932 7811 7812 7937 8060 6 7936 7812 7813 7938 8060 8061 6 7937 7813 7814 7939 8061 8062 6 7938 7814 7816 7817 7940 8062 6 7939 7817 7818 7941 8062 8063 6 7940 7818 7942 8063 8064 8065 6 7941 7818 7819 7943 8065 8066 6 7942 7819 7820 7821 7944 8066 6 7943 7821 7945 8066 8067 8068 6 7944 7821 7822 7946 8068 8069 6 7945 7822 7823 7947 8069 8070 6 7946 7823 7824 7948 8070 8071 6 7947 7824 7826 7949 8071 8072 6 7948 7826 7950 8072 8073 8074 6 7949 7826 7827 7951 8074 8075 6 7950 7827 7952 8075 8076 7953 6 7951 7827 7828 7829 7832 7953 6 7952 7832 7833 7954 8076 7951 6 7953 7833 7955 8076 8077 8078 6 7954 7833 7834 7835 7956 8078 6 7955 7835 7836 7957 8078 8079 6 7956 7836 7958 8079 8080 8081 6 7957 7836 7837 7838 7959 8081 6 7958 7838 7839 7960 8081 8082 5 7959 7839 7846 8082 7847 6 7846 7840 7841 7842 7843 7845 6 7726 7727 7963 8466 8468 9764 6 7962 7727 7964 8466 8487 8488 6 7963 7727 7728 7246 7965 8488 6 7964 7246 7247 7966 8488 8489 6 7965 7247 7248 7967 8489 8490 6 7966 7248 7249 7968 8490 8491 6 7967 7249 7511 7513 7969 8491 6 7968 7513 7970 8493 8491 8494 6 7969 7513 7514 7971 8494 8495 6 7970 7514 7972 8495 8496 7974 6 7971 7514 7515 7518 7973 7974 6 7972 7518 7974 7975 7976 7977 6 7972 7973 7975 8496 7971 8497 6 7974 7973 7976 8500 8497 7981 6 7975 7973 7977 7979 7980 7981 6 7976 7973 7518 7519 7978 7979 6 7977 7519 7979 7988 7989 7521 6 7977 7978 7976 7980 7987 7988 6 7976 7979 7981 7982 7986 7987 6 7976 7980 7982 7983 8500 7975 6 7981 7980 7983 7984 7985 7986 6 7981 7982 7984 8500 8501 8502 6 7983 7982 7985 8502 8503 8504 6 7984 7982 7986 8504 8505 8506 6 7985 7982 7980 7987 8506 7993 7 7986 7980 7979 7988 7991 7992 7993 5 7987 7979 7978 7989 7991 7 7988 7978 7521 7526 7990 7548 7991 5 7989 7526 7527 7546 7548 6 7989 7548 7549 7992 7987 7988 6 7991 7549 7551 7987 7993 7994 6 7987 7992 7994 8506 7986 8507 6 7993 7992 7551 8507 7997 7995 6 7551 7552 7558 7996 7997 7994 6 7995 7558 7559 7997 7998 7999 6 7995 7996 7998 8507 7994 8508 6 7997 7996 7999 8508 8509 8510 6 7998 7996 7559 7566 8000 8510 6 7999 7566 7567 7570 8001 8510 7 8000 7570 7571 8002 8510 8522 8511 6 8001 7571 7572 8003 8522 8523 7 8002 7572 7574 7577 8004 8520 8523 7 8003 7577 8005 8519 8517 8520 8541 5 8004 7577 7578 8006 8541 6 8005 7578 8007 8610 8540 8541 6 8006 7578 7579 7580 8008 8610 6 8007 7580 7581 8009 8010 8610 6 8008 7581 8010 8011 8012 7582 8 8008 8009 8011 8609 8537 8538 8540 8610 5 8010 8009 8012 8013 8609 6 8011 8009 8013 7587 7582 7585 7 8011 8012 7587 7729 8014 8608 8609 6 8013 7729 7730 8015 8607 8608 6 8014 7730 7734 8016 8611 8607 6 8015 7734 7735 8017 8611 8612 6 8016 7735 8018 8612 8613 8614 6 8017 7735 7736 8019 8614 8615 6 8018 7736 8020 8615 8618 8619 6 8019 7736 7737 8021 8022 8619 6 8020 7737 8022 8023 9766 7738 6 8020 8021 8023 8024 8619 8620 6 8022 8021 8024 8025 7742 9766 6 8022 8023 8025 8620 8621 8028 6 8024 8023 7742 7743 8026 8028 6 8025 7743 8027 8028 8029 8030 6 8026 7743 7744 7748 8030 8031 6 8025 8026 8029 8621 8024 8622 6 8028 8026 8030 8628 8622 8629 6 8029 8026 8027 8031 8033 8629 6 8030 8027 7748 8032 8033 8034 6 8031 7748 7749 8034 8035 8036 6 8030 8031 8034 8629 8630 8631 6 8033 8031 8032 8035 8631 8632 6 8034 8032 8036 7761 8635 8632 6 8035 8032 7749 7759 7760 7761 6 7784 7785 8038 8332 8333 8334 6 8037 7785 7787 8039 8041 8334 6 8038 7787 8040 8041 8042 8043 6 8039 7787 8043 8044 8045 7788 6 8038 8039 8042 8334 8335 8336 6 8041 8039 8043 8336 8337 8341 6 8042 8039 8040 8044 8341 8342 6 8043 8040 8045 8342 8343 8046 6 8044 8040 7788 7794 7795 8046 6 8045 7795 8047 7806 8343 8044 6 8046 7795 7806 7803 8048 7796 6 7803 8047 7796 7802 7801 8049 6 7801 8048 7796 7797 7799 7800 6 7930 7931 7933 8051 8345 8346 6 8050 7933 8052 8346 8347 8348 6 8051 7933 7934 8053 8054 8348 6 8052 7934 8054 8055 8056 8057 6 8052 8053 8055 8348 8349 8350 6 8054 8053 8056 8350 8351 8352 6 8055 8053 8057 8058 8352 8353 6 8056 8053 8058 8059 7935 7934 6 8056 8057 8059 8353 8354 8355 6 8058 8057 7935 8060 8355 8356 6 8059 7935 7936 7937 8061 8356 6 8060 7937 7938 8062 8356 8358 6 8061 7938 7939 7940 8063 8358 6 8062 7940 7941 8064 8359 8358 6 8063 7941 8065 8359 8360 8361 6 8064 7941 7942 8066 8361 8362 6 8065 7942 7943 7944 8067 8362 6 8066 7944 8068 8362 8363 8364 6 8067 7944 7945 8069 8364 8365 6 8068 7945 7946 8070 8365 8366 6 8069 7946 7947 8071 8366 8367 6 8070 7947 7948 8072 8367 8368 6 8071 7948 7949 8073 8368 8369 6 8072 7949 8074 8369 8370 8371 6 8073 7949 7950 8075 8371 8372 6 8074 7950 7951 8076 8372 8373 6 8075 7951 7953 7954 8077 8373 6 8076 7954 8078 8375 8373 8376 6 8077 7954 7955 7956 8079 8376 6 8078 7956 7957 8080 8376 8377 6 8079 7957 8081 8209 8377 8378 6 8080 7957 7958 7959 8082 8209 7 8081 7959 7960 7847 7848 8083 8209 6 8082 7848 7849 8084 8209 8210 6 8083 7849 7850 8085 8210 8211 6 8084 7850 8086 8211 8212 8213 6 8085 7850 7851 7852 8087 8213 6 8086 7852 8088 8213 8214 8215 6 8087 7852 7853 8089 8215 8090 6 8088 7853 7854 7855 7856 8090 5 8089 7856 8091 8215 8088 7 8090 7856 7857 8092 8215 8216 8217 5 8091 7857 8093 8217 8218 6 8092 7857 7858 8094 8218 8219 6 8093 7858 7859 7860 8095 8219 6 8094 7860 8096 8219 8220 8221 6 8095 7860 7861 8097 8221 8222 6 8096 7861 7862 8098 8222 8223 6 8097 7862 7863 8099 8223 8224 6 8098 7863 7864 8100 8224 8225 6 8099 7864 7865 8101 8225 8226 6 8100 7865 7866 8102 8226 8227 6 8101 7866 7867 7868 8103 8227 6 8102 7868 8104 8227 8228 8229 6 8103 7868 7869 8105 8229 8230 6 8104 7869 7870 7871 8106 8230 6 8105 7871 8107 8230 8231 8232 6 8106 7871 7872 8108 8232 8233 6 8107 7872 7873 7874 8109 8233 6 8108 7874 8110 8233 8234 8235 6 8109 7874 7875 7876 8111 8235 6 8110 7876 8112 8235 8236 8237 6 8111 7876 7877 7878 8113 8237 6 8112 7878 7879 8114 8237 8238 6 8113 7879 8115 8238 8239 8116 6 8114 7879 7880 7881 7882 8116 6 8115 7882 7883 8117 8239 8114 6 8116 7883 8118 8239 8240 8241 5 8117 7883 7884 8119 8241 6 8118 7884 7885 8120 8241 8242 6 8119 7885 7886 8121 8242 8243 6 8120 7886 7887 8122 8243 8244 6 8121 7887 8123 8244 8245 8246 6 8122 7887 7888 7889 8124 8246 6 8123 7889 7890 8125 8246 8247 6 8124 7890 7891 8126 8247 8248 6 8125 7891 7892 8127 8248 8249 6 8126 7892 7893 8128 8249 8250 6 8127 7893 7894 8129 8250 8251 6 8128 7894 8130 8251 8252 8253 6 8129 7894 7895 7896 8131 8253 6 8130 7896 7897 8132 8253 8254 5 8131 7897 7898 8133 8254 7 8132 7898 7899 8134 8254 8255 8256 5 8133 7899 7900 8135 8256 7 8134 7900 8136 8256 8257 8258 8259 6 8135 7900 7901 7902 8137 8259 6 8136 7902 8138 8259 8260 8261 6 8137 7902 7904 8139 8261 8262 6 8138 7904 7905 7906 8140 8262 6 8139 7906 8141 8262 8263 8264 6 8140 7906 7907 7908 8142 8264 6 8141 7908 8143 8264 8265 8266 6 8142 7908 7909 7910 8144 8266 6 8143 7910 7911 8145 8266 8267 6 8144 7911 8146 8267 8268 8269 6 8145 7911 7912 7913 8147 8269 6 8146 7913 8148 8269 8270 8271 6 8147 7913 7914 8149 8151 8271 5 8148 7914 8150 8151 7922 6 8149 7914 7915 7916 7919 7922 7 8148 8149 7922 7923 8152 8271 8272 5 8151 7923 8153 8272 8273 7 8152 7923 7924 8154 8273 8274 8275 6 8153 7924 8155 8156 8275 8276 7 8154 7924 8156 7925 7928 8157 7617 6 8154 8155 7617 7618 8158 8276 5 8155 7928 7929 7616 7617 6 8156 7618 8159 8276 8277 8278 6 8158 7618 7619 8160 8278 8279 7 8159 7619 7620 8161 8279 8280 8281 5 8160 7620 8162 8281 8282 7 8161 7620 7621 8163 8282 8283 8164 6 8162 7621 7622 7623 7624 8164 7 8163 7624 7625 7627 8165 8283 8162 6 8164 7627 7628 7630 8166 8283 6 8165 7630 8167 8168 8283 8282 6 8166 7630 8168 8169 8170 7631 6 8166 8167 8169 8282 8284 8285 6 8168 8167 8170 8285 8286 8287 6 8169 8167 7631 8171 8172 8287 6 8170 7631 8172 8173 7633 7632 6 8170 8171 8173 8287 8288 8289 6 8172 8171 7633 8174 8289 8290 6 8173 7633 7634 7636 8175 8290 6 8174 7636 7638 8176 8290 8291 6 8175 7638 8177 8291 8292 8293 6 8176 7638 7639 8178 8293 8294 6 8177 7639 8179 8294 8295 8296 6 8178 7639 7640 8180 8296 8297 6 8179 7640 8181 8307 8297 8308 6 8180 7640 7641 8182 8183 8308 6 8181 7641 8183 7644 7643 7642 6 8181 8182 7644 8184 8308 8309 6 8183 7644 7645 8185 8309 8310 7 8184 7645 7646 7647 8186 8310 8311 6 8185 7647 7648 8187 8311 8312 6 8186 7648 8188 8312 8313 8314 6 8187 7648 7649 8189 8314 8315 6 8188 7649 7650 8190 8315 8200 6 8189 7650 8191 8197 8199 8200 6 8190 7650 7651 8192 8197 8193 6 8191 7651 7652 7657 7658 8193 6 8192 7658 8194 8196 8197 8191 6 8193 7658 7659 7662 8195 8196 6 8194 7662 8196 8208 8204 7663 6 8194 8195 8193 8197 8198 8204 6 8193 8196 8198 8199 8190 8191 6 8197 8196 8199 8202 8203 8204 6 8197 8198 8190 8200 8201 8202 6 8190 8199 8201 8315 8189 8316 6 8200 8199 8202 8316 8317 8318 6 8201 8199 8198 8203 8205 8318 6 8202 8198 8204 8205 7699 8206 7 8203 8198 8206 8207 8208 8195 8196 5 8202 8203 7699 8318 7700 7 7699 8203 8204 7698 7669 7667 8207 6 7667 8206 8204 8208 7664 7665 5 8207 8204 8195 7663 7664 6 8080 8081 8082 8083 8210 8378 5 8209 8083 8084 8211 8378 6 8210 8084 8085 8212 8378 8379 6 8211 8085 8213 8379 8380 8381 6 8212 8085 8086 8087 8214 8381 6 8213 8087 8215 8381 8382 8216 6 8214 8087 8088 8090 8091 8216 6 8215 8091 8217 8382 8214 8383 6 8216 8091 8092 8218 8383 8384 6 8217 8092 8093 8219 8384 8385 6 8218 8093 8094 8095 8220 8385 5 8219 8095 8221 8385 8386 6 8220 8095 8096 8222 8386 8387 6 8221 8096 8097 8223 8387 8388 6 8222 8097 8098 8224 8388 8389 6 8223 8098 8099 8225 8389 8390 6 8224 8099 8100 8226 8390 8391 6 8225 8100 8101 8227 8391 8392 6 8226 8101 8102 8103 8228 8392 6 8227 8103 8229 8392 8393 8394 6 8228 8103 8104 8230 8394 8395 6 8229 8104 8105 8106 8231 8395 6 8230 8106 8232 8395 8396 8397 6 8231 8106 8107 8233 8397 8398 6 8232 8107 8108 8109 8234 8398 6 8233 8109 8235 8398 8399 8400 6 8234 8109 8110 8111 8236 8400 6 8235 8111 8237 8400 8401 8402 6 8236 8111 8112 8113 8238 8402 6 8237 8113 8114 8239 8402 8403 6 8238 8114 8116 8117 8240 8403 6 8239 8117 8241 8403 8404 8405 6 8240 8117 8118 8119 8242 8405 6 8241 8119 8120 8243 8405 8406 6 8242 8120 8121 8244 8406 8407 6 8243 8121 8122 8245 8407 8408 6 8244 8122 8246 8408 8409 8410 6 8245 8122 8123 8124 8247 8410 6 8246 8124 8125 8248 8410 8411 6 8247 8125 8126 8249 8411 8412 6 8248 8126 8127 8250 8412 8413 6 8249 8127 8128 8251 8413 8414 6 8250 8128 8129 8252 8414 8415 6 8251 8129 8253 8415 8416 8417 6 8252 8129 8130 8131 8254 8417 7 8253 8131 8132 8133 8255 8417 8418 5 8254 8133 8256 8418 8419 7 8255 8133 8134 8135 8257 8419 8420 5 8256 8135 8258 8420 8421 6 8257 8135 8259 8421 8422 8260 5 8258 8135 8136 8137 8260 6 8259 8137 8261 8422 8258 8423 6 8260 8137 8138 8262 8423 8424 6 8261 8138 8139 8140 8263 8424 6 8262 8140 8264 8424 8425 8426 6 8263 8140 8141 8142 8265 8426 6 8264 8142 8266 8426 8427 8428 7 8265 8142 8143 8144 8267 8428 8429 6 8266 8144 8145 8268 8429 8430 6 8267 8145 8269 8430 8431 8432 6 8268 8145 8146 8147 8270 8432 6 8269 8147 8271 8432 8433 8434 6 8270 8147 8148 8151 8272 8434 5 8271 8151 8152 8273 8434 7 8272 8152 8153 8274 8434 8435 8436 6 8273 8153 8275 8436 8437 8438 6 8274 8153 8154 8276 8438 8277 5 8275 8154 8156 8158 8277 6 8276 8158 8278 8438 8275 8439 6 8277 8158 8159 8279 8439 8440 7 8278 8159 8160 8280 8440 8441 8445 6 8279 8160 8281 8445 8446 8284 5 8280 8160 8161 8282 8284 7 8281 8161 8162 8283 8166 8168 8284 5 8282 8162 8164 8165 8166 6 8282 8168 8285 8446 8280 8281 6 8284 8168 8169 8286 8446 8447 6 8285 8169 8287 8447 8449 8450 6 8286 8169 8170 8172 8288 8450 6 8287 8172 8289 8450 8451 8452 6 8288 8172 8173 8290 8452 8453 6 8289 8173 8174 8175 8291 8453 6 8290 8175 8176 8292 8453 8454 6 8291 8176 8293 8454 8455 8456 6 8292 8176 8177 8294 8456 8457 6 8293 8177 8178 8295 8457 8458 6 8294 8178 8296 8461 8458 8299 6 8295 8178 8179 8297 8298 8299 6 8296 8179 8298 8307 8305 8180 6 8296 8297 8299 8300 8301 8305 6 8296 8298 8300 8461 8295 8462 6 8299 8298 8301 8302 8462 8463 6 8300 8298 8302 8303 8304 8305 6 8300 8301 8303 8463 8464 8465 6 8302 8301 8304 8465 8466 8467 6 8303 8301 8305 8306 8470 8467 6 8304 8301 8298 8306 8307 8297 6 8304 8305 8307 8470 8471 8472 6 8306 8305 8297 8180 8308 8472 6 8307 8180 8181 8183 8309 8472 6 8308 8183 8184 8310 8472 8473 6 8309 8184 8185 8311 8473 8474 5 8310 8185 8186 8312 8474 6 8311 8186 8187 8313 8474 8475 6 8312 8187 8314 8478 8475 8479 6 8313 8187 8188 8315 8479 8480 6 8314 8188 8189 8200 8316 8480 5 8315 8200 8201 8317 8480 6 8316 8201 8318 8480 8481 7708 7 8317 8201 8202 8205 7700 7707 7708 6 7765 7766 8320 8321 8853 8854 6 8319 7766 7767 8321 8322 7769 7 8319 8320 8322 8854 8855 8856 8323 5 8321 8320 7769 7771 8323 6 8322 7771 8324 8856 8321 8857 6 8323 7771 7772 8325 8857 8328 6 8324 7772 7777 8326 8327 8328 6 8325 7777 7778 7779 7780 8327 6 8326 7780 8325 8328 8329 7781 6 8325 8327 8329 8857 8324 8858 6 8328 8327 7781 7782 8330 8858 6 8329 7782 7783 8331 8858 8859 6 8330 7783 8332 8865 8862 8859 6 8331 7783 7784 8037 8333 8865 6 8332 8037 8334 8866 8865 8867 6 8333 8037 8038 8041 8335 8867 6 8334 8041 8336 8867 8868 8869 6 8335 8041 8042 8337 8338 8869 6 8336 8042 8338 8339 8340 8341 6 8336 8337 8339 8869 8870 8874 6 8338 8337 8340 8874 8875 8347 6 8339 8337 8341 8347 8346 8876 6 8340 8337 8042 8043 8342 8876 6 8341 8043 8044 8343 8344 8876 6 8342 8044 8344 7807 7806 8046 6 8342 8343 7807 7808 8345 8876 6 8344 7808 7930 8050 8346 8876 6 8345 8050 8051 8347 8340 8876 6 8346 8051 8348 8875 8339 8340 6 8347 8051 8052 8054 8349 8875 6 8348 8054 8350 8902 8875 8901 6 8349 8054 8055 8351 8901 8903 6 8350 8055 8352 8903 8904 8905 6 8351 8055 8056 8353 8905 8906 6 8352 8056 8058 8354 8906 8907 6 8353 8058 8355 8907 8908 8909 6 8354 8058 8059 8356 8357 8909 6 8355 8059 8060 8061 8357 8358 6 8355 8356 8358 8359 8909 8910 6 8357 8356 8061 8062 8359 8063 6 8357 8358 8063 8064 8360 8910 6 8359 8064 8361 8912 8910 8913 6 8360 8064 8065 8362 8913 8914 6 8361 8065 8066 8067 8363 8914 6 8362 8067 8364 8916 8914 8917 6 8363 8067 8068 8365 8917 8918 6 8364 8068 8069 8366 8918 8919 6 8365 8069 8070 8367 8919 8920 6 8366 8070 8071 8368 8920 8921 6 8367 8071 8072 8369 8921 8922 6 8368 8072 8073 8370 8922 8923 6 8369 8073 8371 8923 8924 8925 6 8370 8073 8074 8372 8925 8926 6 8371 8074 8075 8373 8374 8926 6 8372 8075 8076 8374 8375 8077 6 8372 8373 8375 8926 8927 8928 6 8374 8373 8077 8376 8928 8929 6 8375 8077 8078 8079 8377 8929 6 8376 8079 8080 8378 8929 8379 6 8377 8080 8209 8210 8211 8379 7 8378 8211 8212 8380 8929 8377 8930 5 8379 8212 8381 8930 8931 7 8380 8212 8213 8214 8382 8743 8931 6 8381 8214 8216 8383 8641 8743 6 8382 8216 8217 8384 8641 8642 6 8383 8217 8218 8385 8642 8643 6 8384 8218 8219 8220 8386 8643 7 8385 8220 8221 8387 8643 8644 8645 6 8386 8221 8222 8388 8645 8646 6 8387 8222 8223 8389 8646 8647 6 8388 8223 8224 8390 8647 8648 7 8389 8224 8225 8391 8648 8649 8650 6 8390 8225 8226 8392 8650 8651 6 8391 8226 8227 8228 8393 8651 6 8392 8228 8394 8651 8652 8653 6 8393 8228 8229 8395 8653 8654 6 8394 8229 8230 8231 8396 8654 5 8395 8231 8397 8654 8655 6 8396 8231 8232 8398 8655 8656 7 8397 8232 8233 8234 8399 8656 8657 5 8398 8234 8400 8657 8658 7 8399 8234 8235 8236 8401 8658 8659 5 8400 8236 8402 8659 8660 6 8401 8236 8237 8238 8403 8660 6 8402 8238 8239 8240 8404 8660 6 8403 8240 8405 8660 8661 8662 6 8404 8240 8241 8242 8406 8662 6 8405 8242 8243 8407 8662 8663 7 8406 8243 8244 8408 8663 8664 8665 6 8407 8244 8245 8409 8665 8666 6 8408 8245 8410 8666 8667 8668 6 8409 8245 8246 8247 8411 8668 6 8410 8247 8248 8412 8668 8669 6 8411 8248 8249 8413 8669 8670 6 8412 8249 8250 8414 8670 8671 6 8413 8250 8251 8415 8671 8672 6 8414 8251 8252 8416 8672 8673 6 8415 8252 8417 8673 8674 8675 6 8416 8252 8253 8254 8418 8675 6 8417 8254 8255 8419 8675 8676 6 8418 8255 8256 8420 8676 8677 6 8419 8256 8257 8421 8677 8678 6 8420 8257 8258 8422 8678 8679 6 8421 8258 8260 8423 8679 8680 7 8422 8260 8261 8424 8680 8681 8682 6 8423 8261 8262 8263 8425 8682 6 8424 8263 8426 8682 8683 8687 6 8425 8263 8264 8265 8427 8687 6 8426 8265 8428 8687 8688 8689 6 8427 8265 8266 8429 8689 8690 5 8428 8266 8267 8430 8690 6 8429 8267 8268 8431 8542 8690 6 8430 8268 8432 8542 8543 8544 6 8431 8268 8269 8270 8433 8544 6 8432 8270 8434 8544 8545 8546 7 8433 8270 8271 8272 8273 8435 8546 6 8434 8273 8436 8546 8547 8548 6 8435 8273 8274 8437 8548 8549 6 8436 8274 8438 8549 8550 8439 5 8437 8274 8275 8277 8439 7 8438 8277 8278 8440 8550 8437 8551 6 8439 8278 8279 8441 8442 8551 6 8440 8279 8442 8443 8444 8445 6 8440 8441 8443 8551 8552 8553 6 8442 8441 8444 8553 8554 8555 7 8443 8441 8445 8446 8447 8448 8555 5 8444 8441 8279 8280 8446 6 8445 8280 8284 8285 8447 8444 6 8446 8285 8286 8444 8448 8449 5 8444 8447 8449 8555 8556 6 8448 8447 8286 8450 8556 8557 7 8449 8286 8287 8288 8451 8557 8558 6 8450 8288 8452 8558 8559 8560 6 8451 8288 8289 8453 8560 8561 6 8452 8289 8290 8291 8454 8561 6 8453 8291 8292 8455 8561 8562 6 8454 8292 8456 8562 8563 8564 6 8455 8292 8293 8457 8564 8565 6 8456 8293 8294 8458 8459 8565 6 8457 8294 8459 8460 8461 8295 6 8457 8458 8460 8565 8566 8567 6 8459 8458 8461 8567 8568 8569 6 8460 8458 8295 8299 8462 8569 6 8461 8299 8300 8463 8569 8570 6 8462 8300 8302 8464 8570 8571 6 8463 8302 8465 8571 8572 8573 6 8464 8302 8303 8466 8573 8487 7 8465 8303 8467 8468 7962 7963 8487 6 8466 8303 8468 8469 8470 8304 6 8466 8467 8469 7962 9763 9764 7 8468 8467 8470 9094 8485 9763 8486 6 8469 8467 8304 8306 8471 9094 6 8470 8306 8472 8476 9094 8473 6 8471 8306 8307 8308 8309 8473 6 8472 8309 8310 8474 8476 8471 6 8473 8310 8311 8312 8475 8476 6 8474 8312 8476 8477 8478 8313 7 8474 8475 8477 8485 9094 8471 8473 6 8476 8475 8478 8483 8484 8485 6 8477 8475 8313 8479 8483 8482 6 8478 8313 8314 8480 8482 8481 6 8479 8314 8315 8316 8317 8481 6 8480 8317 7708 7709 8482 8479 7 8481 7709 7710 7713 8483 8478 8479 5 8482 7713 8484 8477 8478 6 8483 7713 7714 8477 8485 8486 6 8477 8484 8486 8469 9094 8476 6 8485 8484 9765 9763 8469 7714 5 8466 7963 8488 8573 8465 7 8487 7963 7964 7965 8489 8573 8574 5 8488 7965 7966 8490 8574 7 8489 7966 7967 8491 8492 8574 8575 6 8490 7967 8492 8493 7969 7968 5 8490 8491 8493 8575 8576 6 8492 8491 7969 8494 8576 8577 6 8493 7969 7970 8495 8577 8578 6 8494 7970 7971 8496 8578 8579 6 8495 7971 7974 8497 8498 8579 6 8496 7974 8498 8499 8500 7975 6 8496 8497 8499 8579 8580 8581 6 8498 8497 8500 8581 8582 8501 6 8499 8497 7975 7981 7983 8501 6 8500 7983 8502 8582 8499 8583 6 8501 7983 7984 8503 8586 8583 6 8502 7984 8504 8527 8586 8526 6 8503 7984 7985 8505 8526 8588 6 8504 7985 8506 8588 8513 8589 6 8505 7985 7986 7993 8507 8589 6 8506 7993 7994 7997 8508 8589 6 8507 7997 7998 8509 8513 8589 6 8508 7998 8510 8511 8512 8513 6 8509 7998 7999 8000 8001 8511 6 8509 8510 8512 8521 8522 8001 6 8509 8511 8513 8514 8515 8521 7 8509 8512 8514 8588 8505 8589 8508 6 8513 8512 8515 8516 8526 8588 6 8514 8512 8516 8517 8520 8521 6 8514 8515 8517 8518 8524 8526 6 8516 8515 8518 8519 8004 8520 6 8516 8517 8519 8524 8525 8531 6 8518 8517 8004 8541 8539 8531 6 8004 8517 8003 8515 8521 8523 6 8520 8515 8512 8511 8522 8523 5 8521 8511 8001 8002 8523 5 8522 8002 8521 8520 8003 6 8516 8518 8525 8526 8527 8528 6 8524 8518 8528 8529 8530 8531 7 8516 8524 8527 8503 8504 8588 8514 5 8526 8524 8528 8586 8503 6 8527 8524 8525 8529 8587 8586 6 8528 8525 8530 8602 8587 8603 6 8529 8525 8531 8532 8533 8603 6 8530 8525 8532 8519 8539 8518 6 8530 8531 8533 8534 8538 8539 6 8530 8532 8534 8535 8603 8604 6 8533 8532 8535 8536 8537 8538 6 8533 8534 8536 8604 8605 8606 6 8535 8534 8537 8606 8607 8608 6 8536 8534 8538 8608 8609 8010 6 8537 8534 8532 8539 8540 8010 6 8538 8532 8540 8541 8519 8531 6 8538 8539 8541 8010 8610 8006 6 8540 8539 8519 8006 8005 8004 6 8430 8431 8543 8690 8691 8692 6 8542 8431 8544 8692 8693 8694 6 8543 8431 8432 8433 8545 8694 6 8544 8433 8546 8694 8695 8547 5 8545 8433 8434 8435 8547 6 8546 8435 8548 8695 8545 8696 6 8547 8435 8436 8549 8696 8697 6 8548 8436 8437 8550 8697 8698 6 8549 8437 8439 8551 8698 8552 5 8550 8439 8440 8442 8552 7 8551 8442 8553 8698 8550 8699 8700 6 8552 8442 8443 8554 8700 8701 6 8553 8443 8555 8701 8702 8703 6 8554 8443 8444 8448 8556 8703 6 8555 8448 8449 8557 8703 8704 6 8556 8449 8450 8558 8704 8705 6 8557 8450 8451 8559 8705 8706 6 8558 8451 8560 8706 8707 8708 5 8559 8451 8452 8561 8708 6 8560 8452 8453 8454 8562 8708 6 8561 8454 8455 8563 8708 8709 6 8562 8455 8564 8709 8710 8711 6 8563 8455 8456 8565 8711 8712 7 8564 8456 8457 8459 8566 8712 8713 5 8565 8459 8567 8713 8714 6 8566 8459 8460 8568 8714 8715 6 8567 8460 8569 8715 8716 8717 6 8568 8460 8461 8462 8570 8717 7 8569 8462 8463 8571 8590 8592 8717 5 8570 8463 8464 8572 8590 7 8571 8464 8573 8574 8575 8576 8590 6 8572 8464 8465 8487 8488 8574 6 8573 8488 8489 8490 8575 8572 5 8574 8490 8492 8576 8572 7 8575 8492 8493 8577 8572 8590 8591 6 8576 8493 8494 8578 8594 8591 6 8577 8494 8495 8579 8594 8595 6 8578 8495 8496 8498 8580 8595 6 8579 8498 8581 8595 8596 8597 6 8580 8498 8499 8582 8597 8598 6 8581 8499 8501 8583 8584 8598 6 8582 8501 8584 8585 8586 8502 6 8582 8583 8585 8598 8599 8600 6 8584 8583 8586 8587 8600 8601 7 8585 8583 8587 8528 8527 8503 8502 6 8585 8586 8528 8601 8602 8529 5 8526 8504 8505 8513 8514 5 8513 8505 8506 8508 8507 6 8572 8576 8591 8571 8570 8592 6 8590 8576 8592 8593 8594 8577 5 8570 8590 8591 8593 8717 7 8592 8591 8594 8717 8716 8718 8719 6 8593 8591 8577 8578 8595 8719 7 8594 8578 8579 8580 8596 8719 8720 6 8595 8580 8597 8720 8721 8722 6 8596 8580 8581 8598 8722 8723 6 8597 8581 8582 8584 8599 8723 6 8598 8584 8600 8723 8724 8725 6 8599 8584 8585 8601 8725 8726 6 8600 8585 8587 8602 8726 8727 5 8601 8587 8529 8603 8727 6 8602 8529 8530 8533 8604 8727 6 8603 8533 8535 8605 8727 8728 6 8604 8535 8606 8728 8731 8732 6 8605 8535 8536 8607 8611 8732 6 8606 8536 8608 8611 8015 8014 6 8607 8536 8537 8609 8014 8013 5 8608 8537 8010 8013 8011 5 8010 8540 8008 8007 8006 6 8606 8607 8015 8016 8612 8732 6 8611 8016 8017 8613 8732 8733 6 8612 8017 8614 8733 8734 8735 6 8613 8017 8018 8615 8616 8735 6 8614 8018 8019 8616 8617 8618 6 8614 8615 8617 8735 8736 8737 6 8616 8615 8618 8737 8738 8739 6 8617 8615 8019 8619 8739 8742 6 8618 8019 8020 8022 8620 8742 6 8619 8022 8024 8621 8624 8742 6 8620 8024 8028 8622 8623 8624 6 8621 8028 8623 8627 8628 8029 6 8621 8622 8624 8625 8626 8627 6 8621 8623 8625 8741 8742 8620 6 8624 8623 8626 8837 8741 8838 6 8625 8623 8627 8838 8839 8840 6 8626 8623 8622 8628 8840 8841 6 8627 8622 8029 8629 8841 8842 6 8628 8029 8030 8033 8630 8842 6 8629 8033 8631 8842 8843 8844 6 8630 8033 8034 8632 8633 8844 6 8631 8034 8633 8634 8635 8035 6 8631 8632 8634 8844 8845 8846 6 8633 8632 8635 8636 8637 8846 6 8634 8632 8636 8640 7761 8035 6 8634 8635 8637 8638 8639 8640 6 8634 8636 8638 8846 8848 8849 6 8637 8636 8639 8849 8850 8851 6 8638 8636 8640 8851 8852 7762 5 8639 8636 8635 7761 7762 6 8382 8383 8642 8743 8744 8745 6 8641 8383 8384 8643 8745 8746 6 8642 8384 8385 8386 8644 8746 6 8643 8386 8645 8746 8747 8748 6 8644 8386 8387 8646 8748 8749 6 8645 8387 8388 8647 8749 8750 6 8646 8388 8389 8648 8750 8751 6 8647 8389 8390 8649 8751 8752 6 8648 8390 8650 8752 8753 8754 5 8649 8390 8391 8651 8754 6 8650 8391 8392 8393 8652 8754 6 8651 8393 8653 8754 8755 8756 6 8652 8393 8394 8654 8756 8757 6 8653 8394 8395 8396 8655 8757 6 8654 8396 8397 8656 8757 8758 7 8655 8397 8398 8657 8758 8759 8760 5 8656 8398 8399 8658 8760 7 8657 8399 8400 8659 8760 8761 8762 5 8658 8400 8401 8660 8762 8 8659 8401 8402 8403 8404 8661 8762 8763 5 8660 8404 8662 8763 8764 6 8661 8404 8405 8406 8663 8764 6 8662 8406 8407 8664 8764 8765 6 8663 8407 8665 8765 8766 8767 5 8664 8407 8408 8666 8767 6 8665 8408 8409 8667 8767 8768 6 8666 8409 8668 8768 8769 8770 6 8667 8409 8410 8411 8669 8770 6 8668 8411 8412 8670 8770 8771 6 8669 8412 8413 8671 8771 8772 6 8670 8413 8414 8672 8772 8773 6 8671 8414 8415 8673 8773 8774 6 8672 8415 8416 8674 8774 8775 6 8673 8416 8675 8775 8776 8777 6 8674 8416 8417 8418 8676 8777 6 8675 8418 8419 8677 8777 8778 6 8676 8419 8420 8678 8778 8779 6 8677 8420 8421 8679 8779 8780 6 8678 8421 8422 8680 8780 8781 6 8679 8422 8423 8681 8781 8782 6 8680 8423 8682 8782 8783 8684 6 8681 8423 8424 8425 8683 8684 6 8682 8425 8684 8685 8686 8687 5 8682 8683 8685 8783 8681 6 8684 8683 8686 8783 8784 8785 6 8685 8683 8687 8785 8786 8787 7 8686 8683 8425 8426 8427 8688 8787 5 8687 8427 8689 8787 8788 6 8688 8427 8428 8690 8788 8789 7 8689 8428 8429 8430 8542 8691 8789 6 8690 8542 8692 8789 8790 8791 5 8691 8542 8543 8693 8791 7 8692 8543 8694 8791 8792 8793 8794 6 8693 8543 8544 8545 8695 8794 6 8694 8545 8547 8696 8794 8795 7 8695 8547 8548 8697 8795 8796 8797 6 8696 8548 8549 8698 8797 8798 6 8697 8549 8550 8552 8699 8798 6 8698 8552 8700 8798 8799 8800 6 8699 8552 8553 8701 8800 8803 6 8700 8553 8554 8702 8803 8804 6 8701 8554 8703 8804 8805 8806 6 8702 8554 8555 8556 8704 8806 6 8703 8556 8557 8705 8806 8807 6 8704 8557 8558 8706 8807 8808 6 8705 8558 8559 8707 8808 8809 6 8706 8559 8708 8809 8810 8811 7 8707 8559 8560 8561 8562 8709 8811 5 8708 8562 8563 8710 8811 7 8709 8563 8711 8811 8812 8813 8814 6 8710 8563 8564 8712 8814 8815 6 8711 8564 8565 8713 8815 8816 5 8712 8565 8566 8714 8816 7 8713 8566 8567 8715 8816 8817 8818 6 8714 8567 8568 8716 8818 8819 6 8715 8568 8717 8593 8718 8819 6 8716 8568 8569 8570 8592 8593 6 8716 8593 8719 8819 8820 8720 5 8718 8593 8594 8595 8720 6 8719 8595 8596 8721 8820 8718 6 8720 8596 8722 8820 8821 8822 5 8721 8596 8597 8723 8822 6 8722 8597 8598 8599 8724 8822 6 8723 8599 8725 8822 8823 8824 6 8724 8599 8600 8726 8824 8825 6 8725 8600 8601 8727 8825 8729 7 8726 8601 8602 8603 8604 8728 8729 6 8727 8604 8605 8729 8730 8731 5 8727 8728 8730 8825 8726 6 8729 8728 8731 8825 8827 8828 6 8730 8728 8605 8732 8828 8829 7 8731 8605 8606 8611 8612 8733 8829 6 8732 8612 8613 8734 8830 8829 6 8733 8613 8735 8830 8831 8736 5 8734 8613 8614 8616 8736 6 8735 8616 8737 8831 8734 8832 6 8736 8616 8617 8738 8832 8833 6 8737 8617 8739 8740 8833 8834 6 8738 8617 8618 8740 8741 8742 6 8738 8739 8741 8834 8835 8836 7 8740 8739 8742 8624 8836 8837 8625 6 8741 8739 8624 8620 8619 8618 6 8381 8382 8641 8744 8931 8932 5 8743 8641 8745 8932 8933 6 8744 8641 8642 8746 8933 8934 6 8745 8642 8643 8644 8747 8934 6 8746 8644 8748 8934 8935 8936 6 8747 8644 8645 8749 8936 8937 6 8748 8645 8646 8750 8937 8938 6 8749 8646 8647 8751 8938 8939 6 8750 8647 8648 8752 8939 8940 6 8751 8648 8649 8753 8940 8941 6 8752 8649 8754 8941 8942 8943 7 8753 8649 8650 8651 8652 8755 8943 5 8754 8652 8756 8943 8944 6 8755 8652 8653 8757 8944 8945 6 8756 8653 8654 8655 8758 8945 7 8757 8655 8656 8759 8945 8946 8947 5 8758 8656 8760 8947 8948 6 8759 8656 8657 8658 8761 8948 6 8760 8658 8762 8948 8949 8950 6 8761 8658 8659 8660 8763 8950 5 8762 8660 8661 8764 8950 7 8763 8661 8662 8663 8765 8950 8951 6 8764 8663 8664 8766 8951 8952 6 8765 8664 8767 8952 8953 8954 6 8766 8664 8665 8666 8768 8954 6 8767 8666 8667 8769 8954 8955 6 8768 8667 8770 8955 8956 8957 6 8769 8667 8668 8669 8771 8957 6 8770 8669 8670 8772 8957 8958 6 8771 8670 8671 8773 8958 8959 6 8772 8671 8672 8774 8959 8960 6 8773 8672 8673 8775 8960 8961 6 8774 8673 8674 8776 8961 8962 6 8775 8674 8777 8962 8963 8964 6 8776 8674 8675 8676 8778 8964 6 8777 8676 8677 8779 8964 8965 6 8778 8677 8678 8780 8965 8966 6 8779 8678 8679 8781 8966 8967 6 8780 8679 8680 8782 8967 8968 6 8781 8680 8681 8783 8968 8969 6 8782 8681 8684 8685 8784 8969 6 8783 8685 8785 8969 8970 8971 6 8784 8685 8686 8786 8971 8972 6 8785 8686 8787 8972 8973 8974 6 8786 8686 8687 8688 8788 8974 6 8787 8688 8689 8789 8974 8975 6 8788 8689 8690 8691 8790 8975 6 8789 8691 8791 8975 8976 8977 6 8790 8691 8692 8693 8792 8977 6 8791 8693 8793 8977 8978 8979 6 8792 8693 8794 8979 8980 8795 5 8793 8693 8694 8695 8795 6 8794 8695 8696 8796 8980 8793 6 8795 8696 8797 8980 8981 8982 6 8796 8696 8697 8798 8982 8799 5 8797 8697 8698 8699 8799 6 8798 8699 8800 8801 8982 8797 6 8799 8699 8700 8801 8802 8803 6 8799 8800 8802 8982 8983 8984 6 8801 8800 8803 8984 8985 8986 6 8802 8800 8700 8701 8804 8986 6 8803 8701 8702 8805 8986 8987 6 8804 8702 8806 8987 8988 8989 6 8805 8702 8703 8704 8807 8989 6 8806 8704 8705 8808 8989 8990 7 8807 8705 8706 8809 8992 8990 8993 5 8808 8706 8707 8810 8993 6 8809 8707 8811 8993 8994 8812 6 8810 8707 8708 8709 8710 8812 6 8811 8710 8813 8994 8810 8995 6 8812 8710 8814 8995 8996 8997 6 8813 8710 8711 8815 8997 8998 5 8814 8711 8712 8816 8998 7 8815 8712 8713 8714 8817 8998 8999 6 8816 8714 8818 8999 9000 9001 6 8817 8714 8715 8819 9001 9002 6 8818 8715 8716 8718 8820 9002 6 8819 8718 8720 8721 8821 9002 6 8820 8721 8822 9002 9003 8823 6 8821 8721 8722 8723 8724 8823 6 8822 8724 8824 9003 8821 9004 6 8823 8724 8725 8825 8826 9004 7 8824 8725 8726 8729 8730 8826 8827 6 8824 8825 8827 9004 9005 9006 6 8826 8825 8730 8828 9012 9006 6 8827 8730 8731 8829 8830 9012 5 8828 8731 8830 8733 8732 7 8828 8829 8733 8734 8831 9011 9012 6 8830 8734 8736 8832 9013 9011 7 8831 8736 8737 8833 9013 9014 9015 6 8832 8737 8738 8834 9015 9016 6 8833 8738 8740 8835 9016 9017 6 8834 8740 8836 9017 9018 9019 6 8835 8740 8741 8837 9019 9020 5 8836 8741 8625 8838 9020 6 8837 8625 8626 8839 9020 9021 6 8838 8626 8840 9021 9022 9023 6 8839 8626 8627 8841 9023 9024 6 8840 8627 8628 8842 9024 9025 6 8841 8628 8629 8630 8843 9025 6 8842 8630 8844 9025 9026 9030 6 8843 8630 8631 8633 8845 9030 6 8844 8633 8846 8847 9031 9030 6 8845 8633 8634 8637 8847 8848 6 8845 8846 8848 9031 9032 9033 6 8847 8846 8637 8849 9042 9033 6 8848 8637 8638 8850 9043 9042 6 8849 8638 8851 9043 9044 9045 6 8850 8638 8639 8852 9045 9048 6 8851 8639 7762 7763 8853 9048 6 8852 7763 7765 8319 8854 9048 6 8853 8319 8321 8855 9047 9048 6 8854 8321 8856 9047 9049 9050 5 8855 8321 8323 8857 9050 7 8856 8323 8324 8328 8858 9050 8860 6 8857 8328 8329 8330 8859 8860 6 8858 8330 8860 8861 8862 8331 6 8858 8859 8861 9050 8857 9051 6 8860 8859 8862 8863 9051 9052 6 8861 8859 8863 8864 8865 8331 6 8861 8862 8864 8877 9058 9052 6 8863 8862 8865 8866 8877 8878 6 8864 8862 8866 8333 8332 8331 6 8864 8865 8333 8867 8878 8879 6 8866 8333 8334 8335 8868 8879 6 8867 8335 8869 8879 8880 8871 6 8868 8335 8336 8338 8870 8871 6 8869 8338 8871 8872 8873 8874 6 8869 8870 8872 8894 8880 8868 6 8871 8870 8873 8896 8894 8897 6 8872 8870 8874 8897 8898 8902 6 8873 8870 8338 8339 8875 8902 6 8874 8339 8347 8902 8349 8348 6 8346 8340 8341 8342 8344 8345 5 8863 8864 8878 9058 8882 6 8877 8864 8866 8879 8881 8882 6 8878 8866 8867 8868 8880 8881 6 8879 8868 8881 8893 8894 8871 6 8879 8880 8878 8882 8883 8893 6 8878 8881 8883 8884 9058 8877 6 8882 8881 8884 8885 8892 8893 6 8882 8883 8885 8886 8887 9058 6 8884 8883 8886 8890 8891 8892 6 8884 8885 8887 8888 8889 8890 6 8884 8886 8888 9058 9057 9059 6 8887 8886 8889 9059 9060 9061 6 8888 8886 8890 9061 9062 9063 6 8889 8886 8885 8891 9063 9064 6 8890 8885 8892 9064 9065 9066 6 8891 8885 8883 8893 9066 8895 6 8892 8883 8881 8880 8894 8895 6 8893 8880 8895 8896 8872 8871 6 8893 8894 8896 9066 8892 9067 6 8895 8894 8872 8897 9067 9068 6 8896 8872 8873 8898 8899 9068 6 8897 8873 8899 8900 8901 8902 6 8897 8898 8900 9068 9069 9070 6 8899 8898 8901 9070 9071 8903 6 8900 8898 8902 8349 8350 8903 6 8901 8898 8873 8874 8875 8349 6 8901 8350 8351 8904 9071 8900 6 8903 8351 8905 9071 9072 9073 6 8904 8351 8352 8906 9073 9074 6 8905 8352 8353 8907 9074 9075 6 8906 8353 8354 8908 9075 9076 6 8907 8354 8909 9076 9077 8911 6 8908 8354 8355 8357 8910 8911 6 8909 8357 8911 8912 8360 8359 6 8909 8910 8912 9077 8908 9078 6 8911 8910 8360 8913 9078 9079 6 8912 8360 8361 8914 8915 9079 6 8913 8361 8362 8915 8916 8363 6 8913 8914 8916 9079 9080 9081 6 8915 8914 8363 8917 9081 9082 6 8916 8363 8364 8918 9082 9083 6 8917 8364 8365 8919 9083 9084 6 8918 8365 8366 8920 9093 9084 6 8919 8366 8367 8921 9093 9100 6 8920 8367 8368 8922 9100 9101 6 8921 8368 8369 8923 9101 9102 6 8922 8369 8370 8924 9102 9103 6 8923 8370 8925 9103 9104 9105 6 8924 8370 8371 8926 9105 9106 6 8925 8371 8372 8374 8927 9106 6 8926 8374 8928 9106 9107 8931 6 8927 8374 8375 8929 8931 8930 6 8928 8375 8376 8377 8379 8930 5 8929 8379 8380 8931 8928 8 8930 8380 8381 8743 8932 9107 8927 8928 5 8931 8743 8744 8933 9107 8 8932 8744 8745 8934 9107 9106 9105 9108 6 8933 8745 8746 8747 8935 9108 6 8934 8747 8936 9108 9109 9110 6 8935 8747 8748 8937 9110 9111 6 8936 8748 8749 8938 9111 9112 6 8937 8749 8750 8939 9112 9113 6 8938 8750 8751 8940 9113 9114 6 8939 8751 8752 8941 9114 9115 6 8940 8752 8753 8942 9115 9116 6 8941 8753 8943 9116 9117 8944 5 8942 8753 8754 8755 8944 7 8943 8755 8756 8945 9117 8942 9118 7 8944 8756 8757 8758 8946 9118 9119 5 8945 8758 8947 9119 9120 6 8946 8758 8759 8948 9120 9121 7 8947 8759 8760 8761 8949 9121 9122 6 8948 8761 8950 9122 9123 8951 6 8949 8761 8762 8763 8764 8951 6 8950 8764 8765 8952 9123 8949 6 8951 8765 8766 8953 9123 9124 6 8952 8766 8954 9124 9125 9126 6 8953 8766 8767 8768 8955 9126 6 8954 8768 8769 8956 9126 9127 6 8955 8769 8957 9127 9128 9129 6 8956 8769 8770 8771 8958 9129 6 8957 8771 8772 8959 9129 9130 6 8958 8772 8773 8960 9130 9131 6 8959 8773 8774 8961 9131 9132 6 8960 8774 8775 8962 9132 9133 6 8961 8775 8776 8963 9133 9134 6 8962 8776 8964 9134 9135 9136 6 8963 8776 8777 8778 8965 9136 6 8964 8778 8779 8966 9136 9137 6 8965 8779 8780 8967 9137 9138 6 8966 8780 8781 8968 9138 9139 6 8967 8781 8782 8969 9139 9140 7 8968 8782 8783 8784 8970 9140 9141 5 8969 8784 8971 9141 9142 7 8970 8784 8785 8972 9142 9143 9144 6 8971 8785 8786 8973 9144 9145 6 8972 8786 8974 9145 9146 9147 6 8973 8786 8787 8788 8975 9147 6 8974 8788 8789 8790 8976 9147 6 8975 8790 8977 9147 9148 9149 6 8976 8790 8791 8792 8978 9149 6 8977 8792 8979 9149 9150 9151 6 8978 8792 8793 8980 9151 9152 6 8979 8793 8795 8796 8981 9152 6 8980 8796 8982 9152 9153 8983 6 8981 8796 8797 8799 8801 8983 6 8982 8801 8984 9153 8981 9154 6 8983 8801 8802 8985 9154 9155 6 8984 8802 8986 9155 9156 9157 7 8985 8802 8803 8804 8987 9157 9158 5 8986 8804 8805 8988 9158 7 8987 8805 8989 8990 8991 9158 9159 5 8988 8805 8806 8807 8990 6 8989 8807 8988 8991 8992 8808 6 8988 8990 8992 9159 9160 9161 6 8991 8990 8808 8993 9164 9161 6 8992 8808 8809 8810 8994 9164 6 8993 8810 8812 8995 9164 9165 7 8994 8812 8813 8996 9165 9167 9168 5 8995 8813 8997 9168 9169 6 8996 8813 8814 8998 9169 9170 7 8997 8814 8815 8816 8999 9170 9171 5 8998 8816 8817 9000 9171 6 8999 8817 9001 9171 9172 9173 6 9000 8817 8818 9002 9173 9003 6 9001 8818 8819 8820 8821 9003 6 9002 8821 8823 9004 9173 9001 6 9003 8823 8824 8826 9005 9173 6 9004 8826 9006 9007 9008 9173 6 9005 8826 9007 9011 9012 8827 6 9005 9006 9008 9009 9010 9011 6 9005 9007 9009 9173 9172 9174 5 9008 9007 9010 9174 9177 6 9009 9007 9011 9013 9177 9014 7 9010 9007 9006 9012 9013 8831 8830 5 9011 9006 8830 8828 8827 5 9010 9011 8831 8832 9014 6 9013 8832 9015 9177 9010 9178 6 9014 8832 8833 9016 9181 9178 5 9015 8833 8834 9017 9181 7 9016 8834 8835 9018 9181 9182 9188 6 9017 8835 9019 9188 9189 9190 6 9018 8835 8836 9020 9190 9191 6 9019 8836 8837 8838 9021 9191 6 9020 8838 8839 9022 9191 9192 6 9021 8839 9023 9192 9195 9196 6 9022 8839 8840 9024 9196 9197 6 9023 8840 8841 9025 9197 9027 6 9024 8841 8842 8843 9026 9027 6 9025 8843 9027 9028 9029 9030 6 9025 9026 9028 9197 9024 9198 6 9027 9026 9029 9198 9199 9203 5 9028 9026 9030 9031 9203 6 9029 9026 8843 9031 8845 8844 7 9029 9030 8845 8847 9032 9203 9204 6 9031 8847 9033 9034 9204 9205 6 9032 8847 9034 9035 9042 8848 6 9032 9033 9035 9036 9037 9205 6 9034 9033 9036 9040 9041 9042 6 9034 9035 9037 9038 9039 9040 6 9034 9036 9038 9205 9206 9207 6 9037 9036 9039 9207 9208 9209 6 9038 9036 9040 9209 9062 9061 6 9039 9036 9035 9041 9061 9060 6 9040 9035 9042 9043 9060 9210 6 9041 9035 9033 8848 9043 8849 6 9041 9042 8849 8850 9044 9210 7 9043 8850 9045 9046 9055 9056 9210 6 9044 8850 8851 9046 9047 9048 6 9044 9045 9047 9053 9055 9049 6 9046 9045 9048 8854 8855 9049 6 9047 9045 8851 8854 8853 8852 6 9047 8855 9050 9051 9053 9046 6 9049 8855 8856 8857 8860 9051 6 9050 8860 8861 9052 9053 9049 6 9051 8861 9053 9054 9058 8863 6 9051 9052 9054 9055 9046 9049 6 9053 9052 9055 9056 9057 9058 5 9053 9054 9046 9044 9056 6 9044 9055 9054 9057 9059 9210 5 9056 9054 9058 8887 9059 8 9057 9054 9052 8863 8877 8882 8884 8887 6 9057 8887 8888 9060 9210 9056 6 9059 8888 9061 9040 9041 9210 6 9060 8888 8889 9062 9039 9040 6 9061 8889 9063 9209 9039 9211 6 9062 8889 8890 9064 9211 9212 6 9063 8890 8891 9065 9212 9213 6 9064 8891 9066 9213 9214 9215 6 9065 8891 8892 8895 9067 9215 6 9066 8895 8896 9068 9215 9216 6 9067 8896 8897 8899 9069 9216 6 9068 8899 9070 9216 9217 9218 6 9069 8899 8900 9071 9218 9219 7 9070 8900 8903 8904 9072 9219 9220 5 9071 8904 9073 9220 9221 7 9072 8904 8905 9074 9221 9222 9223 6 9073 8905 8906 9075 9223 9225 6 9074 8906 8907 9076 9225 9226 5 9075 8907 8908 9077 9226 7 9076 8908 8911 9078 9226 9227 9228 5 9077 8911 8912 9079 9228 6 9078 8912 8913 8915 9080 9228 6 9079 8915 9081 9228 9229 9230 6 9080 8915 8916 9082 9230 9231 6 9081 8916 8917 9083 9231 9232 6 9082 8917 8918 9084 9085 9232 6 9083 8918 9085 9086 9093 8919 6 9083 9084 9086 9087 9232 9233 6 9085 9084 9087 9088 9092 9093 6 9085 9086 9088 9089 9233 9234 6 9087 9086 9089 9090 9091 9092 6 9087 9088 9090 9095 9234 9235 6 9089 9088 9091 9095 9096 9097 6 9090 9088 9092 9097 9098 9099 6 9091 9088 9086 9093 9099 9100 6 9092 9086 9084 8919 8920 9100 5 8469 8470 8485 8476 8471 6 9089 9090 9096 9235 9236 9237 6 9095 9090 9097 9237 9238 9239 6 9096 9090 9091 9098 9239 9240 6 9097 9091 9099 9240 9241 9242 6 9098 9091 9092 9100 9242 9101 6 9099 9092 9093 8920 8921 9101 6 9100 8921 8922 9102 9242 9099 6 9101 8922 8923 9103 9242 9243 6 9102 8923 8924 9104 9243 9244 6 9103 8924 9105 9109 9244 9108 6 9104 8924 8925 9106 8933 9108 6 9105 8925 8926 8927 9107 8933 5 9106 8927 8931 8932 8933 6 9105 8933 8934 8935 9109 9104 5 9108 8935 9110 9244 9104 7 9109 8935 8936 9111 9245 9244 9348 6 9110 8936 8937 9112 9350 9348 5 9111 8937 8938 9113 9350 6 9112 8938 8939 9114 9350 9351 6 9113 8939 8940 9115 9351 9352 6 9114 8940 8941 9116 9352 9353 6 9115 8941 8942 9117 9246 9353 6 9116 8942 8944 9118 9246 9247 6 9117 8944 8945 9119 9247 9248 5 9118 8945 8946 9120 9248 7 9119 8946 8947 9121 9248 9249 9250 6 9120 8947 8948 9122 9250 9251 5 9121 8948 8949 9123 9251 6 9122 8949 8951 8952 9124 9251 6 9123 8952 8953 9125 9251 9252 6 9124 8953 9126 9252 9253 9254 6 9125 8953 8954 8955 9127 9254 6 9126 8955 8956 9128 9254 9255 6 9127 8956 9129 9255 9256 9257 6 9128 8956 8957 8958 9130 9257 6 9129 8958 8959 9131 9257 9258 6 9130 8959 8960 9132 9258 9259 6 9131 8960 8961 9133 9259 9260 6 9132 8961 8962 9134 9260 9261 6 9133 8962 8963 9135 9261 9262 6 9134 8963 9136 9262 9263 9264 6 9135 8963 8964 8965 9137 9264 6 9136 8965 8966 9138 9264 9265 6 9137 8966 8967 9139 9265 9266 6 9138 8967 8968 9140 9266 9267 6 9139 8968 8969 9141 9267 9268 5 9140 8969 8970 9142 9268 7 9141 8970 8971 9143 9268 9269 9270 6 9142 8971 9144 9270 9271 9272 5 9143 8971 8972 9145 9272 6 9144 8972 8973 9146 9272 9273 6 9145 8973 9147 9273 9274 9148 6 9146 8973 8974 8975 8976 9148 6 9147 8976 9149 9274 9146 9275 6 9148 8976 8977 8978 9150 9275 6 9149 8978 9151 9275 9276 9277 6 9150 8978 8979 9152 9277 9278 7 9151 8979 8980 8981 9153 9278 9279 6 9152 8981 8983 9154 9279 9280 6 9153 8983 8984 9155 9280 9281 6 9154 8984 8985 9156 9281 9282 6 9155 8985 9157 9282 9283 9284 6 9156 8985 8986 9158 9284 9285 6 9157 8986 8987 8988 9159 9285 6 9158 8988 8991 9160 9285 9286 6 9159 8991 9161 9162 9286 9287 6 9160 8991 9162 9163 9164 8992 6 9160 9161 9163 9287 9288 9289 6 9162 9161 9164 9165 9166 9289 6 9163 9161 8992 8993 8994 9165 6 9164 8994 8995 9163 9166 9167 6 9163 9165 9167 9289 9290 9186 6 9166 9165 8995 9168 9186 9185 6 9167 8995 8996 9169 9185 9184 7 9168 8996 8997 9170 9184 9179 9176 6 9169 8997 8998 9171 9176 9175 6 9170 8998 8999 9000 9172 9175 6 9171 9000 9173 9008 9174 9175 7 9172 9000 9001 9003 9004 9005 9008 6 9172 9008 9009 9175 9176 9177 5 9172 9174 9176 9170 9171 6 9175 9174 9177 9179 9169 9170 7 9176 9174 9009 9010 9014 9178 9179 6 9177 9014 9179 9180 9181 9015 6 9177 9178 9180 9184 9169 9176 6 9179 9178 9181 9182 9183 9184 6 9180 9178 9015 9016 9017 9182 6 9181 9017 9180 9183 9187 9188 6 9180 9182 9184 9185 9186 9187 6 9180 9183 9185 9168 9169 9179 5 9184 9183 9186 9167 9168 6 9185 9183 9187 9290 9166 9167 6 9186 9183 9182 9188 9290 9291 6 9187 9182 9017 9018 9189 9291 5 9188 9018 9190 9291 9292 6 9189 9018 9019 9191 9292 9193 6 9190 9019 9020 9021 9192 9193 6 9191 9021 9022 9193 9194 9195 6 9191 9192 9194 9292 9190 9293 6 9193 9192 9195 9293 9294 9295 6 9194 9192 9022 9196 9295 9296 6 9195 9022 9023 9197 9302 9296 7 9196 9023 9024 9027 9198 9302 9303 6 9197 9027 9028 9199 9200 9303 6 9198 9028 9200 9201 9202 9203 6 9198 9199 9201 9303 9301 9304 6 9200 9199 9202 9304 9305 9306 6 9201 9199 9203 9306 9307 9204 6 9202 9199 9028 9029 9031 9204 7 9203 9031 9032 9205 9307 9202 9206 5 9204 9032 9034 9037 9206 6 9205 9037 9207 9307 9204 9308 6 9206 9037 9038 9208 9308 9309 6 9207 9038 9209 9309 9310 9314 6 9208 9038 9039 9062 9211 9314 6 9060 9041 9043 9059 9056 9044 6 9209 9062 9063 9212 9314 9315 6 9211 9063 9064 9213 9315 9316 6 9212 9064 9065 9214 9319 9316 6 9213 9065 9215 9319 9320 9321 6 9214 9065 9066 9067 9216 9321 6 9215 9067 9068 9069 9217 9321 7 9216 9069 9218 9321 9320 9322 9323 5 9217 9069 9070 9219 9323 7 9218 9070 9071 9220 9323 9324 9325 5 9219 9071 9072 9221 9325 7 9220 9072 9073 9222 9325 9326 9327 6 9221 9073 9223 9224 9327 9328 5 9222 9073 9074 9224 9225 6 9222 9223 9225 9328 9329 9330 6 9224 9223 9074 9075 9226 9330 7 9225 9075 9076 9077 9227 9330 9331 6 9226 9077 9228 9331 9332 9229 6 9227 9077 9078 9079 9080 9229 7 9228 9080 9230 9332 9227 9333 9334 6 9229 9080 9081 9231 9334 9335 6 9230 9081 9082 9232 9335 9336 7 9231 9082 9083 9085 9233 9336 9337 5 9232 9085 9087 9234 9337 7 9233 9087 9089 9235 9337 9338 9339 5 9234 9089 9095 9236 9339 7 9235 9095 9237 9339 9340 9341 9342 6 9236 9095 9096 9238 9342 9343 6 9237 9096 9239 9343 9344 9345 6 9238 9096 9097 9240 9345 9346 6 9239 9097 9098 9241 9346 9347 6 9240 9098 9242 9347 9245 9243 6 9241 9098 9099 9101 9102 9243 6 9242 9102 9103 9244 9245 9241 6 9243 9103 9245 9110 9109 9104 6 9243 9244 9110 9347 9241 9348 6 9116 9117 9247 9353 9354 9355 6 9246 9117 9118 9248 9355 9356 6 9247 9118 9119 9120 9249 9356 6 9248 9120 9250 9356 9357 9358 6 9249 9120 9121 9251 9358 9252 6 9250 9121 9122 9123 9124 9252 7 9251 9124 9125 9253 9358 9250 9359 5 9252 9125 9254 9359 9360 7 9253 9125 9126 9127 9255 9360 9361 6 9254 9127 9128 9256 9361 9362 6 9255 9128 9257 9362 9363 9364 6 9256 9128 9129 9130 9258 9364 7 9257 9130 9131 9259 9364 9365 9366 6 9258 9131 9132 9260 9366 9367 6 9259 9132 9133 9261 9367 9368 6 9260 9133 9134 9262 9368 9369 6 9261 9134 9135 9263 9369 9370 6 9262 9135 9264 9370 9371 9372 6 9263 9135 9136 9137 9265 9372 6 9264 9137 9138 9266 9372 9373 6 9265 9138 9139 9267 9373 9374 6 9266 9139 9140 9268 9374 9375 7 9267 9140 9141 9142 9269 9375 9376 5 9268 9142 9270 9376 9377 6 9269 9142 9143 9271 9377 9381 6 9270 9143 9272 9381 9382 9383 6 9271 9143 9144 9145 9273 9383 6 9272 9145 9146 9274 9383 9384 6 9273 9146 9148 9275 9384 9385 7 9274 9148 9149 9150 9276 9385 9386 5 9275 9150 9277 9386 9388 6 9276 9150 9151 9278 9388 9389 6 9277 9151 9152 9279 9389 9390 6 9278 9152 9153 9280 9390 9391 5 9279 9153 9154 9281 9391 6 9280 9154 9155 9282 9393 9391 6 9281 9155 9156 9283 9393 9394 6 9282 9156 9284 9394 9395 9396 6 9283 9156 9157 9285 9396 9397 6 9284 9157 9158 9159 9286 9397 6 9285 9159 9160 9287 9397 9398 5 9286 9160 9162 9288 9398 7 9287 9162 9289 9398 9399 9400 9401 6 9288 9162 9163 9166 9290 9401 7 9289 9166 9186 9187 9291 9402 9401 6 9290 9187 9188 9189 9292 9402 7 9291 9189 9190 9193 9293 9402 9400 6 9292 9193 9194 9294 9400 9403 6 9293 9194 9295 9403 9404 9405 6 9294 9194 9195 9296 9297 9405 6 9295 9195 9297 9298 9302 9196 6 9295 9296 9298 9299 9405 9406 6 9297 9296 9299 9300 9301 9302 6 9297 9298 9300 9409 9406 9410 6 9299 9298 9301 9410 9411 9412 7 9300 9298 9302 9303 9200 9304 9412 6 9301 9298 9296 9196 9197 9303 5 9302 9197 9198 9200 9301 5 9301 9200 9201 9305 9412 7 9304 9201 9306 9412 9413 9414 9418 5 9305 9201 9202 9307 9418 6 9306 9202 9204 9206 9308 9418 6 9307 9206 9207 9309 9417 9418 6 9308 9207 9208 9310 9311 9417 6 9309 9208 9311 9312 9313 9314 6 9309 9310 9312 9416 9417 9419 6 9311 9310 9313 9419 9420 9424 7 9312 9310 9314 9424 9425 9317 9315 6 9313 9310 9208 9209 9211 9315 6 9314 9211 9212 9316 9317 9313 6 9315 9212 9317 9318 9319 9213 6 9315 9316 9318 9425 9313 9426 6 9317 9316 9319 9426 9427 9428 6 9318 9316 9213 9214 9320 9428 6 9319 9214 9321 9217 9322 9428 5 9320 9214 9215 9216 9217 6 9320 9217 9323 9428 9429 9430 6 9322 9217 9218 9219 9324 9430 6 9323 9219 9325 9430 9431 9432 6 9324 9219 9220 9221 9326 9432 6 9325 9221 9327 9432 9433 9434 6 9326 9221 9222 9328 9434 9435 5 9327 9222 9224 9329 9435 7 9328 9224 9330 9435 9436 9437 9438 6 9329 9224 9225 9226 9331 9438 6 9330 9226 9227 9332 9438 9439 6 9331 9227 9229 9333 9442 9439 6 9332 9229 9334 9442 9443 9446 5 9333 9229 9230 9335 9446 6 9334 9230 9231 9336 9446 9447 6 9335 9231 9232 9337 9447 9448 6 9336 9232 9233 9234 9338 9448 6 9337 9234 9339 9448 9449 9450 6 9338 9234 9235 9236 9340 9450 6 9339 9236 9341 9450 9451 9452 6 9340 9236 9342 9452 9453 9454 6 9341 9236 9237 9343 9454 9455 5 9342 9237 9238 9344 9455 7 9343 9238 9345 9455 9456 9457 9458 6 9344 9238 9239 9346 9458 9349 5 9345 9239 9240 9347 9349 6 9346 9240 9241 9245 9348 9349 6 9347 9245 9349 9350 9111 9110 7 9347 9348 9350 9458 9345 9346 9351 6 9349 9348 9111 9112 9113 9351 7 9350 9113 9114 9352 9458 9349 9459 6 9351 9114 9115 9353 9459 9460 6 9352 9115 9116 9246 9354 9460 6 9353 9246 9355 9460 9461 9462 6 9354 9246 9247 9356 9462 9463 6 9355 9247 9248 9249 9357 9463 6 9356 9249 9358 9463 9464 9465 6 9357 9249 9250 9252 9359 9465 5 9358 9252 9253 9360 9465 7 9359 9253 9254 9361 9465 9466 9467 5 9360 9254 9255 9362 9467 6 9361 9255 9256 9363 9467 9468 6 9362 9256 9364 9468 9469 9470 6 9363 9256 9257 9258 9365 9470 6 9364 9258 9366 9470 9471 9472 5 9365 9258 9259 9367 9472 6 9366 9259 9260 9368 9472 9473 6 9367 9260 9261 9369 9473 9474 6 9368 9261 9262 9370 9474 9475 6 9369 9262 9263 9371 9475 9476 6 9370 9263 9372 9476 9477 9478 6 9371 9263 9264 9265 9373 9478 6 9372 9265 9266 9374 9478 9479 6 9373 9266 9267 9375 9479 9480 6 9374 9267 9268 9376 9480 9481 6 9375 9268 9269 9377 9378 9481 7 9376 9269 9270 9378 9379 9380 9381 5 9376 9377 9379 9481 9482 6 9378 9377 9380 9482 9483 9484 6 9379 9377 9381 9484 9485 9382 5 9380 9377 9270 9271 9382 6 9381 9271 9383 9485 9380 9486 7 9382 9271 9272 9273 9384 9486 9487 6 9383 9273 9274 9385 9487 9488 6 9384 9274 9275 9386 9387 9488 5 9385 9275 9276 9387 9388 6 9385 9386 9388 9488 9489 9490 7 9387 9386 9276 9277 9389 9490 9491 6 9388 9277 9278 9390 9491 9492 6 9389 9278 9279 9391 9392 9492 6 9390 9279 9392 9393 9281 9280 6 9390 9391 9393 9492 9493 9494 6 9392 9391 9281 9282 9394 9494 6 9393 9282 9283 9395 9494 9495 6 9394 9283 9396 9495 9496 9497 6 9395 9283 9284 9397 9498 9497 6 9396 9284 9285 9286 9398 9498 6 9397 9286 9287 9288 9399 9498 6 9398 9288 9400 9498 9404 9403 7 9399 9288 9401 9402 9292 9293 9403 5 9400 9288 9402 9290 9289 5 9400 9401 9290 9291 9292 5 9400 9293 9294 9404 9399 6 9403 9294 9405 9498 9399 9407 6 9404 9294 9295 9297 9406 9407 6 9405 9297 9407 9408 9409 9299 6 9405 9406 9408 9497 9498 9404 6 9407 9406 9409 9496 9497 9499 6 9408 9406 9299 9410 9499 9500 6 9409 9299 9300 9411 9500 9501 6 9410 9300 9412 9501 9502 9413 6 9411 9300 9301 9304 9305 9413 6 9412 9305 9414 9415 9502 9411 6 9413 9305 9415 9416 9417 9418 6 9413 9414 9416 9502 9503 9504 6 9415 9414 9417 9311 9419 9504 6 9416 9414 9418 9308 9309 9311 6 9417 9414 9308 9307 9306 9305 6 9416 9311 9312 9420 9421 9504 6 9419 9312 9421 9422 9423 9424 6 9419 9420 9422 9504 9505 9506 6 9421 9420 9423 9506 9507 9508 6 9422 9420 9424 9511 9508 9512 6 9423 9420 9312 9313 9425 9512 5 9424 9313 9317 9426 9512 6 9425 9317 9318 9427 9512 9513 6 9426 9318 9428 9513 9514 9429 6 9427 9318 9319 9320 9322 9429 6 9428 9322 9430 9517 9514 9427 6 9429 9322 9323 9324 9431 9517 6 9430 9324 9432 9524 9517 9525 6 9431 9324 9325 9326 9433 9525 6 9432 9326 9434 9525 9526 9527 6 9433 9326 9327 9435 9527 9528 6 9434 9327 9328 9329 9436 9528 6 9435 9329 9437 9528 9530 9531 6 9436 9329 9438 9531 9532 9440 6 9437 9329 9330 9331 9439 9440 6 9438 9331 9440 9441 9442 9332 5 9438 9439 9441 9532 9437 7 9440 9439 9442 9443 9444 9532 9533 5 9441 9439 9332 9333 9443 6 9442 9333 9441 9444 9445 9446 5 9441 9443 9445 9533 9534 6 9444 9443 9446 9534 9535 9536 7 9445 9443 9333 9334 9335 9447 9536 6 9446 9335 9336 9448 9536 9537 6 9447 9336 9337 9338 9449 9537 6 9448 9338 9450 9537 9538 9451 5 9449 9338 9339 9340 9451 7 9450 9340 9452 9538 9449 9539 9540 6 9451 9340 9341 9453 9540 9541 6 9452 9341 9454 9541 9542 9543 6 9453 9341 9342 9455 9543 9544 6 9454 9342 9343 9344 9456 9544 6 9455 9344 9457 9544 9545 9461 6 9456 9344 9458 9461 9460 9459 6 9457 9344 9345 9349 9351 9459 5 9458 9351 9352 9460 9457 6 9459 9352 9353 9354 9461 9457 6 9460 9354 9462 9545 9456 9457 5 9461 9354 9355 9463 9545 7 9462 9355 9356 9357 9464 9545 9546 6 9463 9357 9465 9546 9547 9548 7 9464 9357 9358 9359 9360 9466 9548 6 9465 9360 9467 9548 9549 9550 6 9466 9360 9361 9362 9468 9550 6 9467 9362 9363 9469 9550 9551 6 9468 9363 9470 9551 9552 9553 6 9469 9363 9364 9365 9471 9553 6 9470 9365 9472 9553 9554 9555 6 9471 9365 9366 9367 9473 9555 6 9472 9367 9368 9474 9555 9556 6 9473 9368 9369 9475 9556 9557 6 9474 9369 9370 9476 9557 9558 6 9475 9370 9371 9477 9558 9559 6 9476 9371 9478 9559 9560 9561 6 9477 9371 9372 9373 9479 9561 6 9478 9373 9374 9480 9561 9562 6 9479 9374 9375 9481 9562 9563 6 9480 9375 9376 9378 9482 9563 6 9481 9378 9379 9483 9563 9564 6 9482 9379 9484 9564 9565 9566 6 9483 9379 9380 9485 9566 9567 6 9484 9380 9382 9486 9567 9568 6 9485 9382 9383 9487 9568 9569 6 9486 9383 9384 9488 9569 9570 6 9487 9384 9385 9387 9489 9570 6 9488 9387 9490 9570 9571 9572 6 9489 9387 9388 9491 9572 9573 6 9490 9388 9389 9492 9573 9574 6 9491 9389 9390 9392 9493 9574 6 9492 9392 9494 9574 9575 9576 6 9493 9392 9393 9394 9495 9576 6 9494 9394 9395 9496 9576 9577 6 9495 9395 9497 9408 9499 9577 6 9496 9395 9408 9407 9498 9396 7 9407 9497 9396 9397 9398 9399 9404 5 9496 9408 9409 9500 9577 7 9499 9409 9410 9501 9577 9578 9579 6 9500 9410 9411 9502 9579 9580 6 9501 9411 9413 9415 9503 9580 6 9502 9415 9504 9580 9581 9582 7 9503 9415 9416 9419 9421 9505 9582 5 9504 9421 9506 9582 9583 6 9505 9421 9422 9507 9583 9584 6 9506 9422 9508 9509 9584 9585 6 9507 9422 9509 9510 9511 9423 6 9507 9508 9510 9585 9586 9587 6 9509 9508 9511 9518 9587 9521 6 9510 9508 9423 9512 9518 9519 7 9511 9423 9424 9425 9426 9513 9519 6 9512 9426 9427 9514 9515 9519 6 9513 9427 9515 9516 9517 9429 6 9513 9514 9516 9519 9518 9520 6 9515 9514 9517 9523 9520 9524 6 9516 9514 9429 9430 9524 9431 6 9510 9511 9519 9515 9520 9521 5 9518 9511 9512 9513 9515 6 9518 9515 9521 9522 9523 9516 6 9518 9520 9522 9587 9510 9588 6 9521 9520 9523 9588 9589 9590 6 9522 9520 9516 9524 9590 9591 6 9523 9516 9517 9431 9525 9591 7 9524 9431 9432 9433 9526 9591 9592 5 9525 9433 9527 9592 9593 6 9526 9433 9434 9528 9529 9593 6 9527 9434 9435 9436 9529 9530 6 9527 9528 9530 9593 9594 9595 6 9529 9528 9436 9531 9595 9596 6 9530 9436 9437 9532 9596 9597 7 9531 9437 9440 9441 9533 9597 9598 5 9532 9441 9444 9534 9598 7 9533 9444 9445 9535 9598 9599 9600 6 9534 9445 9536 9600 9601 9602 7 9535 9445 9446 9447 9537 9602 9603 6 9536 9447 9448 9449 9538 9603 6 9537 9449 9451 9539 9603 9604 6 9538 9451 9540 9604 9605 9606 6 9539 9451 9452 9541 9606 9607 5 9540 9452 9453 9542 9607 7 9541 9453 9543 9607 9608 9609 9610 5 9542 9453 9454 9544 9610 7 9543 9454 9455 9456 9545 9610 9546 6 9544 9456 9461 9462 9463 9546 6 9545 9463 9464 9547 9610 9544 6 9546 9464 9548 9610 9609 9549 5 9547 9464 9465 9466 9549 6 9548 9466 9550 9609 9547 9611 6 9549 9466 9467 9468 9551 9611 6 9550 9468 9469 9552 9611 9612 6 9551 9469 9553 9612 9613 9614 6 9552 9469 9470 9471 9554 9614 6 9553 9471 9555 9614 9615 9616 6 9554 9471 9472 9473 9556 9616 6 9555 9473 9474 9557 9616 9617 6 9556 9474 9475 9558 9617 9618 6 9557 9475 9476 9559 9618 9619 6 9558 9476 9477 9560 9619 9620 6 9559 9477 9561 9620 9621 9622 6 9560 9477 9478 9479 9562 9622 6 9561 9479 9480 9563 9622 9623 6 9562 9480 9481 9482 9564 9623 6 9563 9482 9483 9565 9623 9624 6 9564 9483 9566 9624 9625 9626 6 9565 9483 9484 9567 9626 9627 6 9566 9484 9485 9568 9627 9628 7 9567 9485 9486 9569 9628 9629 9630 6 9568 9486 9487 9570 9630 9631 6 9569 9487 9488 9489 9571 9631 6 9570 9489 9572 9631 9632 9633 6 9571 9489 9490 9573 9633 9634 6 9572 9490 9491 9574 9634 9635 6 9573 9491 9492 9493 9575 9635 6 9574 9493 9576 9635 9636 9578 6 9575 9493 9494 9495 9577 9578 6 9576 9495 9496 9499 9500 9578 6 9577 9500 9579 9636 9575 9576 6 9578 9500 9501 9580 9636 9581 5 9579 9501 9502 9503 9581 6 9580 9503 9582 9636 9579 9637 6 9581 9503 9504 9505 9583 9637 6 9582 9505 9506 9584 9637 9638 6 9583 9506 9507 9585 9638 9633 6 9584 9507 9509 9586 9633 9632 6 9585 9509 9587 9632 9639 9629 6 9586 9509 9510 9521 9588 9629 6 9587 9521 9522 9589 9629 9628 6 9588 9522 9590 9628 9627 9640 6 9589 9522 9523 9591 9640 9641 6 9590 9523 9524 9525 9592 9641 6 9591 9525 9526 9593 9641 9642 7 9592 9526 9527 9529 9594 9642 9643 5 9593 9529 9595 9643 9644 6 9594 9529 9530 9596 9644 9645 6 9595 9530 9531 9597 9645 9646 6 9596 9531 9532 9598 9646 9647 6 9597 9532 9533 9534 9599 9647 5 9598 9534 9600 9647 9648 7 9599 9534 9535 9601 9648 9649 9650 5 9600 9535 9602 9650 9651 6 9601 9535 9536 9603 9651 9604 5 9602 9536 9537 9538 9604 6 9603 9538 9539 9605 9651 9602 6 9604 9539 9606 9651 9652 9653 6 9605 9539 9540 9607 9653 9613 6 9606 9540 9541 9542 9608 9613 6 9607 9542 9609 9613 9612 9611 6 9608 9542 9610 9547 9549 9611 6 9609 9542 9543 9544 9546 9547 6 9609 9549 9550 9551 9612 9608 5 9611 9551 9552 9613 9608 7 9612 9552 9614 9653 9606 9607 9608 6 9613 9552 9553 9554 9615 9653 6 9614 9554 9616 9653 9652 9654 6 9615 9554 9555 9556 9617 9654 6 9616 9556 9557 9618 9654 9655 6 9617 9557 9558 9619 9655 9656 6 9618 9558 9559 9620 9656 9657 6 9619 9559 9560 9621 9657 9658 6 9620 9560 9622 9658 9659 9660 6 9621 9560 9561 9562 9623 9660 6 9622 9562 9563 9564 9624 9660 7 9623 9564 9565 9625 9660 9661 9662 5 9624 9565 9626 9662 9663 7 9625 9565 9566 9627 9663 9664 9640 6 9626 9566 9567 9628 9589 9640 6 9627 9567 9568 9629 9588 9589 7 9628 9568 9630 9639 9586 9587 9588 5 9629 9568 9569 9631 9639 6 9630 9569 9570 9571 9632 9639 6 9631 9571 9633 9585 9586 9639 7 9632 9571 9572 9634 9638 9584 9585 6 9633 9572 9573 9635 9637 9638 6 9634 9573 9574 9575 9636 9637 6 9635 9575 9578 9579 9581 9637 7 9636 9581 9582 9583 9638 9635 9634 5 9637 9583 9584 9633 9634 5 9632 9586 9629 9630 9631 6 9627 9589 9590 9641 9664 9626 6 9640 9590 9591 9592 9642 9664 6 9641 9592 9593 9643 9664 9663 6 9642 9593 9594 9644 9663 9662 7 9643 9594 9595 9645 9662 9661 9665 7 9644 9595 9596 9646 9665 9659 9666 6 9645 9596 9597 9647 9666 9667 6 9646 9597 9598 9599 9648 9667 6 9647 9599 9600 9649 9667 9668 6 9648 9600 9650 9668 9656 9655 6 9649 9600 9601 9651 9655 9669 7 9650 9601 9602 9604 9605 9652 9669 6 9651 9605 9653 9615 9654 9669 6 9652 9605 9606 9613 9614 9615 6 9652 9615 9616 9617 9655 9669 7 9654 9617 9618 9656 9649 9650 9669 6 9655 9618 9619 9657 9668 9649 5 9656 9619 9620 9658 9668 6 9657 9620 9621 9659 9668 9666 6 9658 9621 9660 9665 9645 9666 7 9659 9621 9622 9623 9624 9661 9665 5 9660 9624 9662 9644 9665 6 9661 9624 9625 9663 9643 9644 6 9662 9625 9626 9664 9642 9643 5 9663 9626 9640 9641 9642 5 9661 9644 9645 9659 9660 6 9659 9645 9646 9667 9668 9658 5 9666 9646 9647 9648 9668 7 9667 9648 9649 9656 9657 9658 9666 5 9655 9650 9651 9652 9654 6 6653 6650 6651 9671 9691 9681 6 9670 6651 9672 9676 9680 9681 6 9671 6651 9673 9674 9675 9676 6 9672 6651 9674 6649 9727 6365 6 9672 9673 9675 9725 9726 9727 6 9672 9674 9676 9677 9678 9725 6 9672 9675 9677 9679 9680 9671 5 9676 9675 9678 5235 9679 7 9677 9675 5235 9734 4519 9725 9733 6 9677 5235 5236 9676 9680 9683 7 9676 9679 9671 9681 9682 4654 9683 6 9671 9680 9682 9691 9670 9685 5 9681 9680 4654 4655 9685 6 4654 9680 9679 5236 4652 9684 6 4652 9683 4650 422 5237 5236 6 9682 4655 9686 9687 9691 9681 6 9685 4655 9687 3169 9688 4656 6 9685 9686 3169 3170 9691 3172 7 3169 9686 4656 9689 3168 2843 9690 5 9688 4656 5380 430 9690 6 2843 9688 9689 430 2841 429 6 9685 9687 3172 6653 9670 9681 6 6475 6478 6474 9779 9774 9780 6 6460 6461 6465 6467 6377 6378 6 5862 5863 9695 9702 9703 9700 6 9694 5863 5864 9696 5719 9700 5 9695 5864 5865 5718 5719 6 5718 5865 5866 5867 9698 9699 6 9697 5867 9699 5695 5694 5868 5 9697 9698 5695 5696 5718 6 9695 5719 5720 9701 9702 9694 5 9700 5720 5721 5724 9702 6 9701 5724 6095 9703 9694 9700 6 9702 6095 6383 9694 5862 5861 6 6490 2252 415 2194 6488 6489 7 6488 2195 6487 6480 2196 9773 9778 5 2251 6491 3336 6492 3335 6 3335 6492 3334 6499 6493 6494 6 6502 6503 9709 2189 9711 9712 6 6502 9708 2189 6501 9710 2190 6 6501 9709 6500 2190 2191 2512 7 9708 6503 6512 9712 9715 9716 9717 5 9708 9711 2189 9713 9715 6 2189 9712 2187 2197 9714 9715 6 2197 9713 9715 2215 2216 9720 6 9714 9713 9712 9711 9716 2215 7 9715 9711 9717 9718 9719 2214 2215 6 9716 9711 6512 6513 6514 9718 5 9717 6514 6516 9719 9716 5 9718 6516 9716 2214 6522 6 9714 2216 2217 2200 2198 2197 6 6669 6775 9722 9723 6656 6658 5 9721 6775 9723 9724 9798 6 9721 9722 9724 6646 6656 6655 6 9723 9722 6646 6645 9799 9798 6 9675 9674 9726 9678 9733 9735 6 9725 9674 9727 9729 9735 9728 6 9726 9674 9673 6365 6366 9728 6 9727 6366 6368 6370 9729 9726 6 9728 6370 9730 9731 9735 9726 6 9729 6370 6371 6375 6467 9731 6 9730 6467 6466 9732 9735 9729 6 9731 6466 6468 7510 9733 9735 6 9732 7510 9734 9735 9678 9725 6 9733 7510 7508 4518 4519 9678 6 9732 9733 9731 9729 9726 9725 6 6041 6039 6038 6019 5872 5874 6 6132 6398 6392 6393 6115 9738 6 9737 6115 6116 6132 6131 6122 6 569 571 9740 9744 568 9743 6 9739 571 573 9741 9742 9743 6 9740 573 916 917 9742 918 6 9740 9741 918 9743 921 919 6 9740 9742 921 563 9744 9739 6 9743 563 564 567 568 9739 6 7205 7206 9746 7218 7217 7216 6 9745 7206 7207 7213 7216 7214 6 3491 3492 3496 3502 6706 6555 5 6706 3502 9749 3503 6710 5 6706 9748 6710 6707 6705 5 6682 5157 4667 6681 9761 5 3201 3470 3410 3200 3411 6 5932 5910 5915 5916 9755 5931 5 4915 4917 9754 4880 4879 7 9753 4917 4911 4880 9756 4904 9759 7 9752 5916 5931 5921 5920 5919 9758 6 4880 9754 9757 4895 4897 9759 5 4880 9756 4895 4884 4881 5 5919 9755 5918 5916 5917 6 9754 4904 4901 4898 4897 9756 6 4638 4912 4875 4872 4869 4868 7 6681 9750 4667 4668 9762 4560 9792 5 9761 4668 4546 4548 4560 5 8468 8469 9764 9765 8486 5 8468 9763 9765 7726 7962 7 9764 9763 8486 7714 7715 7723 7726 6 8023 8021 7738 7739 7740 7742 5 7723 7715 7716 7719 7721 6 427 7500 7502 9769 46 45 6 9768 7502 9770 9772 44 45 7 9769 7502 7503 9771 9772 9774 9780 7 2196 43 1 9772 9770 9773 9774 5 9771 1 9770 9769 44 6 2196 9771 9774 9705 9778 9779 6 9773 9771 9770 9779 9692 9780 6 7253 7256 7523 7520 7517 7516 6 2095 2083 2084 6093 3138 3131 5 6638 6639 6642 6787 6785 5 9705 9773 9779 6478 6480 5 9778 9773 9774 9692 6478 5 9692 9774 6474 9770 7503 6 3852 3129 26 25 1526 3130 6 6787 6642 6643 9783 6789 6170 5 9782 6643 6168 6169 6170 6 4396 4529 4395 4121 4119 4530 6 6637 6783 6779 6636 6635 6771 6 4118 3529 3531 9787 9789 4120 6 9786 3531 3533 9788 7174 9789 6 9787 3533 3535 7178 7175 7174 6 9787 7174 9786 4120 4122 7172 5 7670 7695 7696 7698 7669 6 7775 3145 4231 3413 3414 7776 6 4560 6675 6676 6677 6681 9761 6 3659 3660 4908 9794 4369 4371 5 9793 4908 4642 4370 4369 6 5543 5545 5700 5540 5541 5542 6 6177 6178 9797 9798 6181 9799 6 6782 6177 9796 9798 6776 6780 7 9797 9796 6776 9799 9724 9722 6775 6 9796 6181 6183 6645 9724 9798 scotch_6.0.9/src/check/data/ship001.msh0000644000302600021200000635272613303015264017751 0ustar pelegrinpelegrin1 3431 34920 310212 34921 1 000 7 1 2 219 220 365 366 370 7 1 2 219 220 365 366 370 7 1 2 219 220 365 366 370 7 1 2 219 220 365 366 370 7 1 2 219 220 365 366 370 7 1 2 219 220 365 366 370 3 1 219 366 3 1 219 366 3 1 219 366 3 1 219 366 3 1 219 366 3 1 219 366 7 1 3 218 219 366 367 371 7 1 3 218 219 366 367 371 7 1 3 218 219 366 367 371 7 1 3 218 219 366 367 371 7 1 3 218 219 366 367 371 7 1 3 218 219 366 367 371 4 2 220 365 369 4 2 220 365 369 4 2 220 365 369 4 2 220 365 369 4 2 220 365 369 4 2 220 365 369 3 2 220 365 3 2 220 365 3 2 220 365 3 2 220 365 3 2 220 365 3 2 220 365 3 3 218 367 3 3 218 367 3 3 218 367 3 3 218 367 3 3 218 367 3 3 218 367 7 3 4 218 222 367 368 372 7 3 4 218 222 367 368 372 7 3 4 218 222 367 368 372 7 3 4 218 222 367 368 372 7 3 4 218 222 367 368 372 7 3 4 218 222 367 368 372 3 4 222 368 3 4 222 368 3 4 222 368 3 4 222 368 3 4 222 368 3 4 222 368 4 4 222 368 373 4 4 222 368 373 4 4 222 368 373 4 4 222 368 373 4 4 222 368 373 4 4 222 368 373 4 5 412 508 513 4 5 412 508 513 4 5 412 508 513 4 5 412 508 513 4 5 412 508 513 4 5 412 508 513 3 5 412 508 3 5 412 508 3 5 412 508 3 5 412 508 3 5 412 508 3 5 412 508 6 5 6 412 508 509 514 6 5 6 412 508 509 514 6 5 6 412 508 509 514 6 5 6 412 508 509 514 6 5 6 412 508 509 514 6 5 6 412 508 509 514 2 6 509 2 6 509 2 6 509 2 6 509 2 6 509 2 6 509 4 6 7 509 510 4 6 7 509 510 4 6 7 509 510 4 6 7 509 510 4 6 7 509 510 4 6 7 509 510 2 7 510 2 7 510 2 7 510 2 7 510 2 7 510 2 7 510 6 7 8 413 510 511 515 6 7 8 413 510 511 515 6 7 8 413 510 511 515 6 7 8 413 510 511 515 6 7 8 413 510 511 515 6 7 8 413 510 511 515 3 8 413 511 3 8 413 511 3 8 413 511 3 8 413 511 3 8 413 511 3 8 413 511 6 8 9 413 511 512 516 6 8 9 413 511 512 516 6 8 9 413 511 512 516 6 8 9 413 511 512 516 6 8 9 413 511 512 516 6 8 9 413 511 512 516 2 9 512 2 9 512 2 9 512 2 9 512 2 9 512 2 9 512 4 9 10 512 1716 4 9 10 512 1716 4 9 10 512 1716 4 9 10 512 1716 4 9 10 512 1716 4 9 10 512 1716 2 10 1716 2 10 1716 2 10 1716 2 10 1716 2 10 1716 2 10 1716 6 10 11 863 1716 1717 1759 6 10 11 863 1716 1717 1759 6 10 11 863 1716 1717 1759 6 10 11 863 1716 1717 1759 6 10 11 863 1716 1717 1759 6 10 11 863 1716 1717 1759 3 11 863 1717 3 11 863 1717 3 11 863 1717 3 11 863 1717 3 11 863 1717 3 11 863 1717 5 11 12 863 1717 1718 5 11 12 863 1717 1718 5 11 12 863 1717 1718 5 11 12 863 1717 1718 5 11 12 863 1717 1718 5 11 12 863 1717 1718 2 12 1718 2 12 1718 2 12 1718 2 12 1718 2 12 1718 2 12 1718 4 12 13 1718 1719 4 12 13 1718 1719 4 12 13 1718 1719 4 12 13 1718 1719 4 12 13 1718 1719 4 12 13 1718 1719 2 13 1719 2 13 1719 2 13 1719 2 13 1719 2 13 1719 2 13 1719 4 13 14 1719 1720 4 13 14 1719 1720 4 13 14 1719 1720 4 13 14 1719 1720 4 13 14 1719 1720 4 13 14 1719 1720 2 14 1720 2 14 1720 2 14 1720 2 14 1720 2 14 1720 2 14 1720 4 14 15 1720 1721 4 14 15 1720 1721 4 14 15 1720 1721 4 14 15 1720 1721 4 14 15 1720 1721 4 14 15 1720 1721 2 15 1721 2 15 1721 2 15 1721 2 15 1721 2 15 1721 2 15 1721 4 15 16 1721 1722 4 15 16 1721 1722 4 15 16 1721 1722 4 15 16 1721 1722 4 15 16 1721 1722 4 15 16 1721 1722 2 16 1722 2 16 1722 2 16 1722 2 16 1722 2 16 1722 2 16 1722 5 16 17 864 1722 1723 5 16 17 864 1722 1723 5 16 17 864 1722 1723 5 16 17 864 1722 1723 5 16 17 864 1722 1723 5 16 17 864 1722 1723 3 17 864 1723 3 17 864 1723 3 17 864 1723 3 17 864 1723 3 17 864 1723 3 17 864 1723 6 17 18 864 1723 1724 1760 6 17 18 864 1723 1724 1760 6 17 18 864 1723 1724 1760 6 17 18 864 1723 1724 1760 6 17 18 864 1723 1724 1760 6 17 18 864 1723 1724 1760 2 18 1724 2 18 1724 2 18 1724 2 18 1724 2 18 1724 2 18 1724 4 18 19 1724 1725 4 18 19 1724 1725 4 18 19 1724 1725 4 18 19 1724 1725 4 18 19 1724 1725 4 18 19 1724 1725 2 19 1725 2 19 1725 2 19 1725 2 19 1725 2 19 1725 2 19 1725 6 19 20 865 1725 1726 1761 6 19 20 865 1725 1726 1761 6 19 20 865 1725 1726 1761 6 19 20 865 1725 1726 1761 6 19 20 865 1725 1726 1761 6 19 20 865 1725 1726 1761 3 20 865 1726 3 20 865 1726 3 20 865 1726 3 20 865 1726 3 20 865 1726 3 20 865 1726 6 20 21 865 1726 1727 1762 6 20 21 865 1726 1727 1762 6 20 21 865 1726 1727 1762 6 20 21 865 1726 1727 1762 6 20 21 865 1726 1727 1762 6 20 21 865 1726 1727 1762 2 21 1727 2 21 1727 2 21 1727 2 21 1727 2 21 1727 2 21 1727 4 21 22 1727 1728 4 21 22 1727 1728 4 21 22 1727 1728 4 21 22 1727 1728 4 21 22 1727 1728 4 21 22 1727 1728 2 22 1728 2 22 1728 2 22 1728 2 22 1728 2 22 1728 2 22 1728 6 22 23 866 1728 1729 1763 6 22 23 866 1728 1729 1763 6 22 23 866 1728 1729 1763 6 22 23 866 1728 1729 1763 6 22 23 866 1728 1729 1763 6 22 23 866 1728 1729 1763 3 23 866 1729 3 23 866 1729 3 23 866 1729 3 23 866 1729 3 23 866 1729 3 23 866 1729 6 23 24 866 1729 1730 1764 6 23 24 866 1729 1730 1764 6 23 24 866 1729 1730 1764 6 23 24 866 1729 1730 1764 6 23 24 866 1729 1730 1764 6 23 24 866 1729 1730 1764 2 24 1730 2 24 1730 2 24 1730 2 24 1730 2 24 1730 2 24 1730 4 24 25 1730 1731 4 24 25 1730 1731 4 24 25 1730 1731 4 24 25 1730 1731 4 24 25 1730 1731 4 24 25 1730 1731 2 25 1731 2 25 1731 2 25 1731 2 25 1731 2 25 1731 2 25 1731 6 25 26 867 1731 1732 1765 6 25 26 867 1731 1732 1765 6 25 26 867 1731 1732 1765 6 25 26 867 1731 1732 1765 6 25 26 867 1731 1732 1765 6 25 26 867 1731 1732 1765 3 26 867 1732 3 26 867 1732 3 26 867 1732 3 26 867 1732 3 26 867 1732 3 26 867 1732 6 26 27 867 1732 1733 1766 6 26 27 867 1732 1733 1766 6 26 27 867 1732 1733 1766 6 26 27 867 1732 1733 1766 6 26 27 867 1732 1733 1766 6 26 27 867 1732 1733 1766 2 27 1733 2 27 1733 2 27 1733 2 27 1733 2 27 1733 2 27 1733 4 27 28 1733 1734 4 27 28 1733 1734 4 27 28 1733 1734 4 27 28 1733 1734 4 27 28 1733 1734 4 27 28 1733 1734 2 28 1734 2 28 1734 2 28 1734 2 28 1734 2 28 1734 2 28 1734 6 28 29 868 1734 1735 1767 6 28 29 868 1734 1735 1767 6 28 29 868 1734 1735 1767 6 28 29 868 1734 1735 1767 6 28 29 868 1734 1735 1767 6 28 29 868 1734 1735 1767 3 29 868 1735 3 29 868 1735 3 29 868 1735 3 29 868 1735 3 29 868 1735 3 29 868 1735 6 29 30 868 1735 1736 1768 6 29 30 868 1735 1736 1768 6 29 30 868 1735 1736 1768 6 29 30 868 1735 1736 1768 6 29 30 868 1735 1736 1768 6 29 30 868 1735 1736 1768 2 30 1736 2 30 1736 2 30 1736 2 30 1736 2 30 1736 2 30 1736 4 30 31 1736 1737 4 30 31 1736 1737 4 30 31 1736 1737 4 30 31 1736 1737 4 30 31 1736 1737 4 30 31 1736 1737 2 31 1737 2 31 1737 2 31 1737 2 31 1737 2 31 1737 2 31 1737 6 31 32 869 1737 1738 1769 6 31 32 869 1737 1738 1769 6 31 32 869 1737 1738 1769 6 31 32 869 1737 1738 1769 6 31 32 869 1737 1738 1769 6 31 32 869 1737 1738 1769 3 32 869 1738 3 32 869 1738 3 32 869 1738 3 32 869 1738 3 32 869 1738 3 32 869 1738 6 32 33 869 1738 1739 1770 6 32 33 869 1738 1739 1770 6 32 33 869 1738 1739 1770 6 32 33 869 1738 1739 1770 6 32 33 869 1738 1739 1770 6 32 33 869 1738 1739 1770 2 33 1739 2 33 1739 2 33 1739 2 33 1739 2 33 1739 2 33 1739 4 33 34 1739 1740 4 33 34 1739 1740 4 33 34 1739 1740 4 33 34 1739 1740 4 33 34 1739 1740 4 33 34 1739 1740 2 34 1740 2 34 1740 2 34 1740 2 34 1740 2 34 1740 2 34 1740 6 34 35 870 1740 1741 1771 6 34 35 870 1740 1741 1771 6 34 35 870 1740 1741 1771 6 34 35 870 1740 1741 1771 6 34 35 870 1740 1741 1771 6 34 35 870 1740 1741 1771 3 35 870 1741 3 35 870 1741 3 35 870 1741 3 35 870 1741 3 35 870 1741 3 35 870 1741 6 35 36 870 1741 1742 1772 6 35 36 870 1741 1742 1772 6 35 36 870 1741 1742 1772 6 35 36 870 1741 1742 1772 6 35 36 870 1741 1742 1772 6 35 36 870 1741 1742 1772 2 36 1742 2 36 1742 2 36 1742 2 36 1742 2 36 1742 2 36 1742 4 36 37 1742 1743 4 36 37 1742 1743 4 36 37 1742 1743 4 36 37 1742 1743 4 36 37 1742 1743 4 36 37 1742 1743 2 37 1743 2 37 1743 2 37 1743 2 37 1743 2 37 1743 2 37 1743 6 37 38 871 1743 1744 1773 6 37 38 871 1743 1744 1773 6 37 38 871 1743 1744 1773 6 37 38 871 1743 1744 1773 6 37 38 871 1743 1744 1773 6 37 38 871 1743 1744 1773 3 38 871 1744 3 38 871 1744 3 38 871 1744 3 38 871 1744 3 38 871 1744 3 38 871 1744 6 38 39 871 1744 1745 1774 6 38 39 871 1744 1745 1774 6 38 39 871 1744 1745 1774 6 38 39 871 1744 1745 1774 6 38 39 871 1744 1745 1774 6 38 39 871 1744 1745 1774 2 39 1745 2 39 1745 2 39 1745 2 39 1745 2 39 1745 2 39 1745 4 39 40 1745 1746 4 39 40 1745 1746 4 39 40 1745 1746 4 39 40 1745 1746 4 39 40 1745 1746 4 39 40 1745 1746 2 40 1746 2 40 1746 2 40 1746 2 40 1746 2 40 1746 2 40 1746 6 40 41 872 1746 1747 1775 6 40 41 872 1746 1747 1775 6 40 41 872 1746 1747 1775 6 40 41 872 1746 1747 1775 6 40 41 872 1746 1747 1775 6 40 41 872 1746 1747 1775 3 41 872 1747 3 41 872 1747 3 41 872 1747 3 41 872 1747 3 41 872 1747 3 41 872 1747 6 41 42 872 1747 1748 1776 6 41 42 872 1747 1748 1776 6 41 42 872 1747 1748 1776 6 41 42 872 1747 1748 1776 6 41 42 872 1747 1748 1776 6 41 42 872 1747 1748 1776 2 42 1748 2 42 1748 2 42 1748 2 42 1748 2 42 1748 2 42 1748 4 42 43 1748 1749 4 42 43 1748 1749 4 42 43 1748 1749 4 42 43 1748 1749 4 42 43 1748 1749 4 42 43 1748 1749 2 43 1749 2 43 1749 2 43 1749 2 43 1749 2 43 1749 2 43 1749 6 43 44 873 1749 1750 1777 6 43 44 873 1749 1750 1777 6 43 44 873 1749 1750 1777 6 43 44 873 1749 1750 1777 6 43 44 873 1749 1750 1777 6 43 44 873 1749 1750 1777 3 44 873 1750 3 44 873 1750 3 44 873 1750 3 44 873 1750 3 44 873 1750 3 44 873 1750 6 44 45 873 1750 1751 1778 6 44 45 873 1750 1751 1778 6 44 45 873 1750 1751 1778 6 44 45 873 1750 1751 1778 6 44 45 873 1750 1751 1778 6 44 45 873 1750 1751 1778 2 45 1751 2 45 1751 2 45 1751 2 45 1751 2 45 1751 2 45 1751 4 45 46 1751 1752 4 45 46 1751 1752 4 45 46 1751 1752 4 45 46 1751 1752 4 45 46 1751 1752 4 45 46 1751 1752 2 46 1752 2 46 1752 2 46 1752 2 46 1752 2 46 1752 2 46 1752 6 46 47 874 1752 1753 1779 6 46 47 874 1752 1753 1779 6 46 47 874 1752 1753 1779 6 46 47 874 1752 1753 1779 6 46 47 874 1752 1753 1779 6 46 47 874 1752 1753 1779 3 47 874 1753 3 47 874 1753 3 47 874 1753 3 47 874 1753 3 47 874 1753 3 47 874 1753 6 47 48 874 1753 1754 1780 6 47 48 874 1753 1754 1780 6 47 48 874 1753 1754 1780 6 47 48 874 1753 1754 1780 6 47 48 874 1753 1754 1780 6 47 48 874 1753 1754 1780 2 48 1754 2 48 1754 2 48 1754 2 48 1754 2 48 1754 2 48 1754 4 48 49 1754 1755 4 48 49 1754 1755 4 48 49 1754 1755 4 48 49 1754 1755 4 48 49 1754 1755 4 48 49 1754 1755 2 49 1755 2 49 1755 2 49 1755 2 49 1755 2 49 1755 2 49 1755 6 49 50 875 1755 1756 1781 6 49 50 875 1755 1756 1781 6 49 50 875 1755 1756 1781 6 49 50 875 1755 1756 1781 6 49 50 875 1755 1756 1781 6 49 50 875 1755 1756 1781 3 50 875 1756 3 50 875 1756 3 50 875 1756 3 50 875 1756 3 50 875 1756 3 50 875 1756 6 50 51 875 1756 1757 1782 6 50 51 875 1756 1757 1782 6 50 51 875 1756 1757 1782 6 50 51 875 1756 1757 1782 6 50 51 875 1756 1757 1782 6 50 51 875 1756 1757 1782 2 51 1757 2 51 1757 2 51 1757 2 51 1757 2 51 1757 2 51 1757 4 51 52 1757 1758 4 51 52 1757 1758 4 51 52 1757 1758 4 51 52 1757 1758 4 51 52 1757 1758 4 51 52 1757 1758 2 52 1758 2 52 1758 2 52 1758 2 52 1758 2 52 1758 2 52 1758 3 52 1758 1783 3 52 1758 1783 3 52 1758 1783 3 52 1758 1783 3 52 1758 1783 3 52 1758 1783 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 12 53 738 739 740 741 1099 1100 1142 1143 1408 1409 1410 5 53 59 686 689 691 5 53 59 686 689 691 5 53 59 686 689 691 5 53 59 686 689 691 5 53 59 686 689 691 5 53 59 686 689 691 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 12 54 740 741 742 743 1100 1101 1143 1144 1414 1415 1416 4 54 60 683 686 4 54 60 683 686 4 54 60 683 686 4 54 60 683 686 4 54 60 683 686 4 54 60 683 686 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 12 55 742 743 744 745 1101 1102 1144 1145 1420 1421 1422 4 55 61 683 1848 4 55 61 683 1848 4 55 61 683 1848 4 55 61 683 1848 4 55 61 683 1848 4 55 61 683 1848 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 12 56 744 745 746 747 1102 1103 1145 1146 1426 1427 1428 4 56 62 1848 1849 4 56 62 1848 1849 4 56 62 1848 1849 4 56 62 1848 1849 4 56 62 1848 1849 4 56 62 1848 1849 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 12 57 746 747 748 749 1103 1104 1146 1147 1432 1433 1434 4 57 63 1849 1850 4 57 63 1849 1850 4 57 63 1849 1850 4 57 63 1849 1850 4 57 63 1849 1850 4 57 63 1849 1850 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 12 58 748 749 750 751 1104 1105 1147 1148 1438 1439 1440 5 58 64 1850 1851 1852 5 58 64 1850 1851 1852 5 58 64 1850 1851 1852 5 58 64 1850 1851 1852 5 58 64 1850 1851 1852 5 58 64 1850 1851 1852 5 59 65 638 641 643 5 59 65 638 641 643 5 59 65 638 641 643 5 59 65 638 641 643 5 59 65 638 641 643 5 59 65 638 641 643 4 60 66 635 638 4 60 66 635 638 4 60 66 635 638 4 60 66 635 638 4 60 66 635 638 4 60 66 635 638 4 61 67 635 1853 4 61 67 635 1853 4 61 67 635 1853 4 61 67 635 1853 4 61 67 635 1853 4 61 67 635 1853 4 62 68 1853 1854 4 62 68 1853 1854 4 62 68 1853 1854 4 62 68 1853 1854 4 62 68 1853 1854 4 62 68 1853 1854 4 63 69 1854 1855 4 63 69 1854 1855 4 63 69 1854 1855 4 63 69 1854 1855 4 63 69 1854 1855 4 63 69 1854 1855 5 64 70 1855 1856 1857 5 64 70 1855 1856 1857 5 64 70 1855 1856 1857 5 64 70 1855 1856 1857 5 64 70 1855 1856 1857 5 64 70 1855 1856 1857 5 65 71 580 583 585 5 65 71 580 583 585 5 65 71 580 583 585 5 65 71 580 583 585 5 65 71 580 583 585 5 65 71 580 583 585 4 66 72 577 580 4 66 72 577 580 4 66 72 577 580 4 66 72 577 580 4 66 72 577 580 4 66 72 577 580 4 67 73 577 1858 4 67 73 577 1858 4 67 73 577 1858 4 67 73 577 1858 4 67 73 577 1858 4 67 73 577 1858 4 68 74 1858 1859 4 68 74 1858 1859 4 68 74 1858 1859 4 68 74 1858 1859 4 68 74 1858 1859 4 68 74 1858 1859 4 69 75 1859 1860 4 69 75 1859 1860 4 69 75 1859 1860 4 69 75 1859 1860 4 69 75 1859 1860 4 69 75 1859 1860 5 70 76 1860 1861 1862 5 70 76 1860 1861 1862 5 70 76 1860 1861 1862 5 70 76 1860 1861 1862 5 70 76 1860 1861 1862 5 70 76 1860 1861 1862 4 71 522 525 527 4 71 522 525 527 4 71 522 525 527 4 71 522 525 527 4 71 522 525 527 4 71 522 525 527 3 72 519 522 3 72 519 522 3 72 519 522 3 72 519 522 3 72 519 522 3 72 519 522 3 73 519 1863 3 73 519 1863 3 73 519 1863 3 73 519 1863 3 73 519 1863 3 73 519 1863 3 74 1863 1864 3 74 1863 1864 3 74 1863 1864 3 74 1863 1864 3 74 1863 1864 3 74 1863 1864 3 75 1864 1865 3 75 1864 1865 3 75 1864 1865 3 75 1864 1865 3 75 1864 1865 3 75 1864 1865 4 76 1865 1866 1867 4 76 1865 1866 1867 4 76 1865 1866 1867 4 76 1865 1866 1867 4 76 1865 1866 1867 4 76 1865 1866 1867 5 77 83 1873 1874 1875 5 77 83 1873 1874 1875 5 77 83 1873 1874 1875 5 77 83 1873 1874 1875 5 77 83 1873 1874 1875 5 77 83 1873 1874 1875 4 77 1868 1869 1870 4 77 1868 1869 1870 4 77 1868 1869 1870 4 77 1868 1869 1870 4 77 1868 1869 1870 4 77 1868 1869 1870 4 78 84 1875 1876 4 78 84 1875 1876 4 78 84 1875 1876 4 78 84 1875 1876 4 78 84 1875 1876 4 78 84 1875 1876 3 78 1870 1871 3 78 1870 1871 3 78 1870 1871 3 78 1870 1871 3 78 1870 1871 3 78 1870 1871 4 79 85 1876 1877 4 79 85 1876 1877 4 79 85 1876 1877 4 79 85 1876 1877 4 79 85 1876 1877 4 79 85 1876 1877 3 79 1871 1872 3 79 1871 1872 3 79 1871 1872 3 79 1871 1872 3 79 1871 1872 3 79 1871 1872 4 80 86 1877 3060 4 80 86 1877 3060 4 80 86 1877 3060 4 80 86 1877 3060 4 80 86 1877 3060 4 80 86 1877 3060 3 80 1872 3118 3 80 1872 3118 3 80 1872 3118 3 80 1872 3118 3 80 1872 3118 3 80 1872 3118 4 81 87 3057 3060 4 81 87 3057 3060 4 81 87 3057 3060 4 81 87 3057 3060 4 81 87 3057 3060 4 81 87 3057 3060 3 81 3115 3118 3 81 3115 3118 3 81 3115 3118 3 81 3115 3118 3 81 3115 3118 3 81 3115 3118 5 82 88 3052 3054 3057 5 82 88 3052 3054 3057 5 82 88 3052 3054 3057 5 82 88 3052 3054 3057 5 82 88 3052 3054 3057 5 82 88 3052 3054 3057 4 82 3110 3112 3115 4 82 3110 3112 3115 4 82 3110 3112 3115 4 82 3110 3112 3115 4 82 3110 3112 3115 4 82 3110 3112 3115 5 83 89 1878 1879 1880 5 83 89 1878 1879 1880 5 83 89 1878 1879 1880 5 83 89 1878 1879 1880 5 83 89 1878 1879 1880 5 83 89 1878 1879 1880 4 84 90 1880 1881 4 84 90 1880 1881 4 84 90 1880 1881 4 84 90 1880 1881 4 84 90 1880 1881 4 84 90 1880 1881 4 85 91 1881 1882 4 85 91 1881 1882 4 85 91 1881 1882 4 85 91 1881 1882 4 85 91 1881 1882 4 85 91 1881 1882 4 86 92 1882 3002 4 86 92 1882 3002 4 86 92 1882 3002 4 86 92 1882 3002 4 86 92 1882 3002 4 86 92 1882 3002 4 87 93 2999 3002 4 87 93 2999 3002 4 87 93 2999 3002 4 87 93 2999 3002 4 87 93 2999 3002 4 87 93 2999 3002 5 88 94 2994 2996 2999 5 88 94 2994 2996 2999 5 88 94 2994 2996 2999 5 88 94 2994 2996 2999 5 88 94 2994 2996 2999 5 88 94 2994 2996 2999 5 89 95 1883 1884 1885 5 89 95 1883 1884 1885 5 89 95 1883 1884 1885 5 89 95 1883 1884 1885 5 89 95 1883 1884 1885 5 89 95 1883 1884 1885 4 90 96 1885 1886 4 90 96 1885 1886 4 90 96 1885 1886 4 90 96 1885 1886 4 90 96 1885 1886 4 90 96 1885 1886 4 91 97 1886 1887 4 91 97 1886 1887 4 91 97 1886 1887 4 91 97 1886 1887 4 91 97 1886 1887 4 91 97 1886 1887 4 92 98 1887 2954 4 92 98 1887 2954 4 92 98 1887 2954 4 92 98 1887 2954 4 92 98 1887 2954 4 92 98 1887 2954 4 93 99 2951 2954 4 93 99 2951 2954 4 93 99 2951 2954 4 93 99 2951 2954 4 93 99 2951 2954 4 93 99 2951 2954 5 94 100 2946 2948 2951 5 94 100 2946 2948 2951 5 94 100 2946 2948 2951 5 94 100 2946 2948 2951 5 94 100 2946 2948 2951 5 94 100 2946 2948 2951 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 95 2284 2285 2286 2489 2490 2532 2533 2886 2887 2888 2889 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 96 2290 2291 2292 2490 2491 2533 2534 2888 2889 2890 2891 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 97 2296 2297 2298 2491 2492 2534 2535 2890 2891 2892 2893 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 98 2302 2303 2304 2492 2493 2535 2536 2892 2893 2894 2895 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 99 2308 2309 2310 2493 2494 2536 2537 2894 2895 2896 2897 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 12 100 2314 2315 2316 2494 2495 2537 2538 2896 2897 2898 2899 4 101 102 1966 1967 4 101 102 1966 1967 4 101 102 1966 1967 4 101 102 1966 1967 4 101 102 1966 1967 4 101 102 1966 1967 2 101 1966 2 101 1966 2 101 1966 2 101 1966 2 101 1966 2 101 1966 3 101 1941 1966 3 101 1941 1966 3 101 1941 1966 3 101 1941 1966 3 101 1941 1966 3 101 1941 1966 6 102 103 1942 1967 1968 2762 6 102 103 1942 1967 1968 2762 6 102 103 1942 1967 1968 2762 6 102 103 1942 1967 1968 2762 6 102 103 1942 1967 1968 2762 6 102 103 1942 1967 1968 2762 2 102 1967 2 102 1967 2 102 1967 2 102 1967 2 102 1967 2 102 1967 6 103 104 1943 1968 1969 2762 6 103 104 1943 1968 1969 2762 6 103 104 1943 1968 1969 2762 6 103 104 1943 1968 1969 2762 6 103 104 1943 1968 1969 2762 6 103 104 1943 1968 1969 2762 3 103 1968 2762 3 103 1968 2762 3 103 1968 2762 3 103 1968 2762 3 103 1968 2762 3 103 1968 2762 4 104 105 1969 1970 4 104 105 1969 1970 4 104 105 1969 1970 4 104 105 1969 1970 4 104 105 1969 1970 4 104 105 1969 1970 2 104 1969 2 104 1969 2 104 1969 2 104 1969 2 104 1969 2 104 1969 6 105 106 1944 1970 1971 2763 6 105 106 1944 1970 1971 2763 6 105 106 1944 1970 1971 2763 6 105 106 1944 1970 1971 2763 6 105 106 1944 1970 1971 2763 6 105 106 1944 1970 1971 2763 2 105 1970 2 105 1970 2 105 1970 2 105 1970 2 105 1970 2 105 1970 6 106 107 1945 1971 1972 2763 6 106 107 1945 1971 1972 2763 6 106 107 1945 1971 1972 2763 6 106 107 1945 1971 1972 2763 6 106 107 1945 1971 1972 2763 6 106 107 1945 1971 1972 2763 3 106 1971 2763 3 106 1971 2763 3 106 1971 2763 3 106 1971 2763 3 106 1971 2763 3 106 1971 2763 4 107 108 1972 1973 4 107 108 1972 1973 4 107 108 1972 1973 4 107 108 1972 1973 4 107 108 1972 1973 4 107 108 1972 1973 2 107 1972 2 107 1972 2 107 1972 2 107 1972 2 107 1972 2 107 1972 6 108 109 1946 1973 1974 2764 6 108 109 1946 1973 1974 2764 6 108 109 1946 1973 1974 2764 6 108 109 1946 1973 1974 2764 6 108 109 1946 1973 1974 2764 6 108 109 1946 1973 1974 2764 2 108 1973 2 108 1973 2 108 1973 2 108 1973 2 108 1973 2 108 1973 6 109 110 1947 1974 1975 2764 6 109 110 1947 1974 1975 2764 6 109 110 1947 1974 1975 2764 6 109 110 1947 1974 1975 2764 6 109 110 1947 1974 1975 2764 6 109 110 1947 1974 1975 2764 3 109 1974 2764 3 109 1974 2764 3 109 1974 2764 3 109 1974 2764 3 109 1974 2764 3 109 1974 2764 4 110 111 1975 1976 4 110 111 1975 1976 4 110 111 1975 1976 4 110 111 1975 1976 4 110 111 1975 1976 4 110 111 1975 1976 2 110 1975 2 110 1975 2 110 1975 2 110 1975 2 110 1975 2 110 1975 6 111 112 1948 1976 1977 2765 6 111 112 1948 1976 1977 2765 6 111 112 1948 1976 1977 2765 6 111 112 1948 1976 1977 2765 6 111 112 1948 1976 1977 2765 6 111 112 1948 1976 1977 2765 2 111 1976 2 111 1976 2 111 1976 2 111 1976 2 111 1976 2 111 1976 6 112 113 1949 1977 1978 2765 6 112 113 1949 1977 1978 2765 6 112 113 1949 1977 1978 2765 6 112 113 1949 1977 1978 2765 6 112 113 1949 1977 1978 2765 6 112 113 1949 1977 1978 2765 3 112 1977 2765 3 112 1977 2765 3 112 1977 2765 3 112 1977 2765 3 112 1977 2765 3 112 1977 2765 4 113 114 1978 1979 4 113 114 1978 1979 4 113 114 1978 1979 4 113 114 1978 1979 4 113 114 1978 1979 4 113 114 1978 1979 2 113 1978 2 113 1978 2 113 1978 2 113 1978 2 113 1978 2 113 1978 6 114 115 1950 1979 1980 2766 6 114 115 1950 1979 1980 2766 6 114 115 1950 1979 1980 2766 6 114 115 1950 1979 1980 2766 6 114 115 1950 1979 1980 2766 6 114 115 1950 1979 1980 2766 2 114 1979 2 114 1979 2 114 1979 2 114 1979 2 114 1979 2 114 1979 6 115 116 1951 1980 1981 2766 6 115 116 1951 1980 1981 2766 6 115 116 1951 1980 1981 2766 6 115 116 1951 1980 1981 2766 6 115 116 1951 1980 1981 2766 6 115 116 1951 1980 1981 2766 3 115 1980 2766 3 115 1980 2766 3 115 1980 2766 3 115 1980 2766 3 115 1980 2766 3 115 1980 2766 4 116 117 1981 1982 4 116 117 1981 1982 4 116 117 1981 1982 4 116 117 1981 1982 4 116 117 1981 1982 4 116 117 1981 1982 2 116 1981 2 116 1981 2 116 1981 2 116 1981 2 116 1981 2 116 1981 6 117 118 1952 1982 1983 2767 6 117 118 1952 1982 1983 2767 6 117 118 1952 1982 1983 2767 6 117 118 1952 1982 1983 2767 6 117 118 1952 1982 1983 2767 6 117 118 1952 1982 1983 2767 2 117 1982 2 117 1982 2 117 1982 2 117 1982 2 117 1982 2 117 1982 6 118 119 1953 1983 1984 2767 6 118 119 1953 1983 1984 2767 6 118 119 1953 1983 1984 2767 6 118 119 1953 1983 1984 2767 6 118 119 1953 1983 1984 2767 6 118 119 1953 1983 1984 2767 3 118 1983 2767 3 118 1983 2767 3 118 1983 2767 3 118 1983 2767 3 118 1983 2767 3 118 1983 2767 4 119 120 1984 1985 4 119 120 1984 1985 4 119 120 1984 1985 4 119 120 1984 1985 4 119 120 1984 1985 4 119 120 1984 1985 2 119 1984 2 119 1984 2 119 1984 2 119 1984 2 119 1984 2 119 1984 6 120 121 1954 1985 1986 2768 6 120 121 1954 1985 1986 2768 6 120 121 1954 1985 1986 2768 6 120 121 1954 1985 1986 2768 6 120 121 1954 1985 1986 2768 6 120 121 1954 1985 1986 2768 2 120 1985 2 120 1985 2 120 1985 2 120 1985 2 120 1985 2 120 1985 6 121 122 1955 1986 1987 2768 6 121 122 1955 1986 1987 2768 6 121 122 1955 1986 1987 2768 6 121 122 1955 1986 1987 2768 6 121 122 1955 1986 1987 2768 6 121 122 1955 1986 1987 2768 3 121 1986 2768 3 121 1986 2768 3 121 1986 2768 3 121 1986 2768 3 121 1986 2768 3 121 1986 2768 4 122 123 1987 1988 4 122 123 1987 1988 4 122 123 1987 1988 4 122 123 1987 1988 4 122 123 1987 1988 4 122 123 1987 1988 2 122 1987 2 122 1987 2 122 1987 2 122 1987 2 122 1987 2 122 1987 6 123 124 1956 1988 1989 2769 6 123 124 1956 1988 1989 2769 6 123 124 1956 1988 1989 2769 6 123 124 1956 1988 1989 2769 6 123 124 1956 1988 1989 2769 6 123 124 1956 1988 1989 2769 2 123 1988 2 123 1988 2 123 1988 2 123 1988 2 123 1988 2 123 1988 6 124 125 1957 1989 1990 2769 6 124 125 1957 1989 1990 2769 6 124 125 1957 1989 1990 2769 6 124 125 1957 1989 1990 2769 6 124 125 1957 1989 1990 2769 6 124 125 1957 1989 1990 2769 3 124 1989 2769 3 124 1989 2769 3 124 1989 2769 3 124 1989 2769 3 124 1989 2769 3 124 1989 2769 4 125 126 1990 1991 4 125 126 1990 1991 4 125 126 1990 1991 4 125 126 1990 1991 4 125 126 1990 1991 4 125 126 1990 1991 2 125 1990 2 125 1990 2 125 1990 2 125 1990 2 125 1990 2 125 1990 6 126 127 1958 1991 1992 2770 6 126 127 1958 1991 1992 2770 6 126 127 1958 1991 1992 2770 6 126 127 1958 1991 1992 2770 6 126 127 1958 1991 1992 2770 6 126 127 1958 1991 1992 2770 2 126 1991 2 126 1991 2 126 1991 2 126 1991 2 126 1991 2 126 1991 6 127 128 1959 1992 1993 2770 6 127 128 1959 1992 1993 2770 6 127 128 1959 1992 1993 2770 6 127 128 1959 1992 1993 2770 6 127 128 1959 1992 1993 2770 6 127 128 1959 1992 1993 2770 3 127 1992 2770 3 127 1992 2770 3 127 1992 2770 3 127 1992 2770 3 127 1992 2770 3 127 1992 2770 4 128 129 1993 1994 4 128 129 1993 1994 4 128 129 1993 1994 4 128 129 1993 1994 4 128 129 1993 1994 4 128 129 1993 1994 2 128 1993 2 128 1993 2 128 1993 2 128 1993 2 128 1993 2 128 1993 6 129 130 1960 1994 1995 2771 6 129 130 1960 1994 1995 2771 6 129 130 1960 1994 1995 2771 6 129 130 1960 1994 1995 2771 6 129 130 1960 1994 1995 2771 6 129 130 1960 1994 1995 2771 2 129 1994 2 129 1994 2 129 1994 2 129 1994 2 129 1994 2 129 1994 6 130 131 1961 1995 1996 2771 6 130 131 1961 1995 1996 2771 6 130 131 1961 1995 1996 2771 6 130 131 1961 1995 1996 2771 6 130 131 1961 1995 1996 2771 6 130 131 1961 1995 1996 2771 3 130 1995 2771 3 130 1995 2771 3 130 1995 2771 3 130 1995 2771 3 130 1995 2771 3 130 1995 2771 4 131 132 1996 1997 4 131 132 1996 1997 4 131 132 1996 1997 4 131 132 1996 1997 4 131 132 1996 1997 4 131 132 1996 1997 2 131 1996 2 131 1996 2 131 1996 2 131 1996 2 131 1996 2 131 1996 6 132 133 1962 1997 1998 2772 6 132 133 1962 1997 1998 2772 6 132 133 1962 1997 1998 2772 6 132 133 1962 1997 1998 2772 6 132 133 1962 1997 1998 2772 6 132 133 1962 1997 1998 2772 2 132 1997 2 132 1997 2 132 1997 2 132 1997 2 132 1997 2 132 1997 6 133 134 1963 1998 1999 2772 6 133 134 1963 1998 1999 2772 6 133 134 1963 1998 1999 2772 6 133 134 1963 1998 1999 2772 6 133 134 1963 1998 1999 2772 6 133 134 1963 1998 1999 2772 3 133 1998 2772 3 133 1998 2772 3 133 1998 2772 3 133 1998 2772 3 133 1998 2772 3 133 1998 2772 4 134 135 1999 2000 4 134 135 1999 2000 4 134 135 1999 2000 4 134 135 1999 2000 4 134 135 1999 2000 4 134 135 1999 2000 2 134 1999 2 134 1999 2 134 1999 2 134 1999 2 134 1999 2 134 1999 6 135 136 1964 2000 2001 2773 6 135 136 1964 2000 2001 2773 6 135 136 1964 2000 2001 2773 6 135 136 1964 2000 2001 2773 6 135 136 1964 2000 2001 2773 6 135 136 1964 2000 2001 2773 2 135 2000 2 135 2000 2 135 2000 2 135 2000 2 135 2000 2 135 2000 5 136 137 2001 2002 2773 5 136 137 2001 2002 2773 5 136 137 2001 2002 2773 5 136 137 2001 2002 2773 5 136 137 2001 2002 2773 5 136 137 2001 2002 2773 3 136 2001 2773 3 136 2001 2773 3 136 2001 2773 3 136 2001 2773 3 136 2001 2773 3 136 2001 2773 4 137 138 2002 2003 4 137 138 2002 2003 4 137 138 2002 2003 4 137 138 2002 2003 4 137 138 2002 2003 4 137 138 2002 2003 2 137 2002 2 137 2002 2 137 2002 2 137 2002 2 137 2002 2 137 2002 4 138 139 2003 2004 4 138 139 2003 2004 4 138 139 2003 2004 4 138 139 2003 2004 4 138 139 2003 2004 4 138 139 2003 2004 2 138 2003 2 138 2003 2 138 2003 2 138 2003 2 138 2003 2 138 2003 4 139 140 2004 2005 4 139 140 2004 2005 4 139 140 2004 2005 4 139 140 2004 2005 4 139 140 2004 2005 4 139 140 2004 2005 2 139 2004 2 139 2004 2 139 2004 2 139 2004 2 139 2004 2 139 2004 4 140 141 2005 2006 4 140 141 2005 2006 4 140 141 2005 2006 4 140 141 2005 2006 4 140 141 2005 2006 4 140 141 2005 2006 2 140 2005 2 140 2005 2 140 2005 2 140 2005 2 140 2005 2 140 2005 5 141 142 2006 2007 2774 5 141 142 2006 2007 2774 5 141 142 2006 2007 2774 5 141 142 2006 2007 2774 5 141 142 2006 2007 2774 5 141 142 2006 2007 2774 2 141 2006 2 141 2006 2 141 2006 2 141 2006 2 141 2006 2 141 2006 6 142 143 1965 2007 2008 2774 6 142 143 1965 2007 2008 2774 6 142 143 1965 2007 2008 2774 6 142 143 1965 2007 2008 2774 6 142 143 1965 2007 2008 2774 6 142 143 1965 2007 2008 2774 3 142 2007 2774 3 142 2007 2774 3 142 2007 2774 3 142 2007 2774 3 142 2007 2774 3 142 2007 2774 4 143 144 2008 3125 4 143 144 2008 3125 4 143 144 2008 3125 4 143 144 2008 3125 4 143 144 2008 3125 4 143 144 2008 3125 2 143 2008 2 143 2008 2 143 2008 2 143 2008 2 143 2008 2 143 2008 6 144 145 3121 3125 3126 3212 6 144 145 3121 3125 3126 3212 6 144 145 3121 3125 3126 3212 6 144 145 3121 3125 3126 3212 6 144 145 3121 3125 3126 3212 6 144 145 3121 3125 3126 3212 2 144 3125 2 144 3125 2 144 3125 2 144 3125 2 144 3125 2 144 3125 6 145 146 3122 3126 3127 3212 6 145 146 3122 3126 3127 3212 6 145 146 3122 3126 3127 3212 6 145 146 3122 3126 3127 3212 6 145 146 3122 3126 3127 3212 6 145 146 3122 3126 3127 3212 3 145 3126 3212 3 145 3126 3212 3 145 3126 3212 3 145 3126 3212 3 145 3126 3212 3 145 3126 3212 4 146 147 3127 3128 4 146 147 3127 3128 4 146 147 3127 3128 4 146 147 3127 3128 4 146 147 3127 3128 4 146 147 3127 3128 2 146 3127 2 146 3127 2 146 3127 2 146 3127 2 146 3127 2 146 3127 6 147 148 3123 3128 3129 3213 6 147 148 3123 3128 3129 3213 6 147 148 3123 3128 3129 3213 6 147 148 3123 3128 3129 3213 6 147 148 3123 3128 3129 3213 6 147 148 3123 3128 3129 3213 2 147 3128 2 147 3128 2 147 3128 2 147 3128 2 147 3128 2 147 3128 4 148 3124 3129 3213 4 148 3124 3129 3213 4 148 3124 3129 3213 4 148 3124 3129 3213 4 148 3124 3129 3213 4 148 3124 3129 3213 3 148 3129 3213 3 148 3129 3213 3 148 3129 3213 3 148 3129 3213 3 148 3129 3213 3 148 3129 3213 7 149 150 3253 3257 3258 3371 3375 7 149 150 3253 3257 3258 3371 3375 7 149 150 3253 3257 3258 3371 3375 7 149 150 3253 3257 3258 3371 3375 7 149 150 3253 3257 3258 3371 3375 7 149 150 3253 3257 3258 3371 3375 3 149 3257 3371 3 149 3257 3371 3 149 3257 3371 3 149 3257 3371 3 149 3257 3371 3 149 3257 3371 4 149 3252 3257 3371 4 149 3252 3257 3371 4 149 3252 3257 3371 4 149 3252 3257 3371 4 149 3252 3257 3371 4 149 3252 3257 3371 7 150 152 3254 3258 3259 3374 3375 7 150 152 3254 3258 3259 3374 3375 7 150 152 3254 3258 3259 3374 3375 7 150 152 3254 3258 3259 3374 3375 7 150 152 3254 3258 3259 3374 3375 7 150 152 3254 3258 3259 3374 3375 3 150 3258 3375 3 150 3258 3375 3 150 3258 3375 3 150 3258 3375 3 150 3258 3375 3 150 3258 3375 4 151 3256 3260 3373 4 151 3256 3260 3373 4 151 3256 3260 3373 4 151 3256 3260 3373 4 151 3256 3260 3373 4 151 3256 3260 3373 3 151 3260 3373 3 151 3260 3373 3 151 3260 3373 3 151 3260 3373 3 151 3260 3373 3 151 3260 3373 7 151 152 3255 3259 3260 3373 3374 7 151 152 3255 3259 3260 3373 3374 7 151 152 3255 3259 3260 3373 3374 7 151 152 3255 3259 3260 3373 3374 7 151 152 3255 3259 3260 3373 3374 7 151 152 3255 3259 3260 3373 3374 3 152 3259 3374 3 152 3259 3374 3 152 3259 3374 3 152 3259 3374 3 152 3259 3374 3 152 3259 3374 2 153 155 2 153 155 2 153 155 2 153 155 2 153 155 2 153 155 1 153 1 153 1 153 1 153 1 153 1 153 3 153 154 158 3 153 154 158 3 153 154 158 3 153 154 158 3 153 154 158 3 153 154 158 1 154 1 154 1 154 1 154 1 154 1 154 6 154 408 444 462 3181 3217 6 154 408 444 462 3181 3217 6 154 408 444 462 3181 3217 6 154 408 444 462 3181 3217 6 154 408 444 462 3181 3217 6 154 408 444 462 3181 3217 1 155 1 155 1 155 1 155 1 155 1 155 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 12 155 156 395 397 422 440 468 470 3185 3203 3228 3230 1 156 1 156 1 156 1 156 1 156 1 156 10 156 157 383 440 442 470 472 3183 3185 3242 10 156 157 383 440 442 470 472 3183 3185 3242 10 156 157 383 440 442 470 472 3183 3185 3242 10 156 157 383 440 442 470 472 3183 3185 3242 10 156 157 383 440 442 470 472 3183 3185 3242 10 156 157 383 440 442 470 472 3183 3185 3242 1 157 1 157 1 157 1 157 1 157 1 157 6 157 374 442 472 3183 3251 6 157 374 442 472 3183 3251 6 157 374 442 472 3183 3251 6 157 374 442 472 3183 3251 6 157 374 442 472 3183 3251 6 157 374 442 472 3183 3251 1 158 1 158 1 158 1 158 1 158 1 158 11 158 159 401 422 423 468 474 3163 3202 3203 3224 11 158 159 401 422 423 468 474 3163 3202 3203 3224 11 158 159 401 422 423 468 474 3163 3202 3203 3224 11 158 159 401 422 423 468 474 3163 3202 3203 3224 11 158 159 401 422 423 468 474 3163 3202 3203 3224 11 158 159 401 422 423 468 474 3163 3202 3203 3224 1 159 1 159 1 159 1 159 1 159 1 159 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 12 159 160 394 397 468 470 474 475 3162 3163 3228 3231 1 160 1 160 1 160 1 160 1 160 1 160 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 12 160 161 383 385 470 472 475 478 3159 3162 3240 3242 1 161 1 161 1 161 1 161 1 161 1 161 10 161 374 376 472 478 513 3124 3159 3249 3251 10 161 374 376 472 478 513 3124 3159 3249 3251 10 161 374 376 472 478 513 3124 3159 3249 3251 10 161 374 376 472 478 513 3124 3159 3249 3251 10 161 374 376 472 478 513 3124 3159 3249 3251 10 161 374 376 472 478 513 3124 3159 3249 3251 7 162 306 316 369 3256 3309 3431 7 162 306 316 369 3256 3309 3431 7 162 306 316 369 3256 3309 3431 7 162 306 316 369 3256 3309 3431 7 162 306 316 369 3256 3309 3431 7 162 306 316 369 3256 3309 3431 3 162 306 3431 3 162 306 3431 3 162 306 3431 3 162 306 3431 3 162 306 3431 3 162 306 3431 9 162 164 306 326 370 3255 3299 3429 3431 9 162 164 306 326 370 3255 3299 3429 3431 9 162 164 306 326 370 3255 3299 3429 3431 9 162 164 306 326 370 3255 3299 3429 3431 9 162 164 306 326 370 3255 3299 3429 3431 9 162 164 306 326 370 3255 3299 3429 3431 4 162 164 326 370 4 162 164 326 370 4 162 164 326 370 4 162 164 326 370 4 162 164 326 370 4 162 164 326 370 11 162 163 164 165 272 273 326 327 365 366 370 11 162 163 164 165 272 273 326 327 365 366 370 11 162 163 164 165 272 273 326 327 365 366 370 11 162 163 164 165 272 273 326 327 365 366 370 11 162 163 164 165 272 273 326 327 365 366 370 11 162 163 164 165 272 273 326 327 365 366 370 7 162 163 272 316 317 365 369 7 162 163 272 316 317 365 369 7 162 163 272 316 317 365 369 7 162 163 272 316 317 365 369 7 162 163 272 316 317 365 369 7 162 163 272 316 317 365 369 4 162 163 272 365 4 162 163 272 365 4 162 163 272 365 4 162 163 272 365 4 162 163 272 365 4 162 163 272 365 3 162 316 369 3 162 316 369 3 162 316 369 3 162 316 369 3 162 316 369 3 162 316 369 3 163 165 327 3 163 165 327 3 163 165 327 3 163 165 327 3 163 165 327 3 163 165 327 5 163 165 253 254 327 5 163 165 253 254 327 5 163 165 253 254 327 5 163 165 253 254 327 5 163 165 253 254 327 5 163 165 253 254 327 4 163 253 317 1097 4 163 253 317 1097 4 163 253 317 1097 4 163 253 317 1097 4 163 253 317 1097 4 163 253 317 1097 2 163 253 2 163 253 2 163 253 2 163 253 2 163 253 2 163 253 2 163 317 2 163 317 2 163 317 2 163 317 2 163 317 2 163 317 2 164 3429 2 164 3429 2 164 3429 2 164 3429 2 164 3429 2 164 3429 9 164 166 307 336 371 3254 3289 3427 3429 9 164 166 307 336 371 3254 3289 3427 3429 9 164 166 307 336 371 3254 3289 3427 3429 9 164 166 307 336 371 3254 3289 3427 3429 9 164 166 307 336 371 3254 3289 3427 3429 9 164 166 307 336 371 3254 3289 3427 3429 4 164 166 336 371 4 164 166 336 371 4 164 166 336 371 4 164 166 336 371 4 164 166 336 371 4 164 166 336 371 11 164 165 166 167 273 274 336 337 366 367 371 11 164 165 166 167 273 274 336 337 366 367 371 11 164 165 166 167 273 274 336 337 366 367 371 11 164 165 166 167 273 274 336 337 366 367 371 11 164 165 166 167 273 274 336 337 366 367 371 11 164 165 166 167 273 274 336 337 366 367 371 4 164 165 273 366 4 164 165 273 366 4 164 165 273 366 4 164 165 273 366 4 164 165 273 366 4 164 165 273 366 3 165 167 337 3 165 167 337 3 165 167 337 3 165 167 337 3 165 167 337 3 165 167 337 5 165 167 254 255 337 5 165 167 254 255 337 5 165 167 254 255 337 5 165 167 254 255 337 5 165 167 254 255 337 5 165 167 254 255 337 2 165 254 2 165 254 2 165 254 2 165 254 2 165 254 2 165 254 3 166 307 3427 3 166 307 3427 3 166 307 3427 3 166 307 3427 3 166 307 3427 3 166 307 3427 9 166 168 307 346 372 3253 3279 3425 3427 9 166 168 307 346 372 3253 3279 3425 3427 9 166 168 307 346 372 3253 3279 3425 3427 9 166 168 307 346 372 3253 3279 3425 3427 9 166 168 307 346 372 3253 3279 3425 3427 9 166 168 307 346 372 3253 3279 3425 3427 4 166 168 346 372 4 166 168 346 372 4 166 168 346 372 4 166 168 346 372 4 166 168 346 372 4 166 168 346 372 11 166 167 168 169 274 275 346 347 367 368 372 11 166 167 168 169 274 275 346 347 367 368 372 11 166 167 168 169 274 275 346 347 367 368 372 11 166 167 168 169 274 275 346 347 367 368 372 11 166 167 168 169 274 275 346 347 367 368 372 11 166 167 168 169 274 275 346 347 367 368 372 4 166 167 274 367 4 166 167 274 367 4 166 167 274 367 4 166 167 274 367 4 166 167 274 367 4 166 167 274 367 3 167 169 347 3 167 169 347 3 167 169 347 3 167 169 347 3 167 169 347 3 167 169 347 5 167 169 255 256 347 5 167 169 255 256 347 5 167 169 255 256 347 5 167 169 255 256 347 5 167 169 255 256 347 5 167 169 255 256 347 2 167 255 2 167 255 2 167 255 2 167 255 2 167 255 2 167 255 2 168 3425 2 168 3425 2 168 3425 2 168 3425 2 168 3425 2 168 3425 8 168 170 356 373 3252 3269 3423 3425 8 168 170 356 373 3252 3269 3423 3425 8 168 170 356 373 3252 3269 3423 3425 8 168 170 356 373 3252 3269 3423 3425 8 168 170 356 373 3252 3269 3423 3425 8 168 170 356 373 3252 3269 3423 3425 4 168 170 356 373 4 168 170 356 373 4 168 170 356 373 4 168 170 356 373 4 168 170 356 373 4 168 170 356 373 8 168 169 170 171 356 357 368 373 8 168 169 170 171 356 357 368 373 8 168 169 170 171 356 357 368 373 8 168 169 170 171 356 357 368 373 8 168 169 170 171 356 357 368 373 8 168 169 170 171 356 357 368 373 3 168 169 368 3 168 169 368 3 168 169 368 3 168 169 368 3 168 169 368 3 168 169 368 3 169 171 357 3 169 171 357 3 169 171 357 3 169 171 357 3 169 171 357 3 169 171 357 6 169 171 256 257 275 357 6 169 171 256 257 275 357 6 169 171 256 257 275 357 6 169 171 256 257 275 357 6 169 171 256 257 275 357 6 169 171 256 257 275 357 2 169 256 2 169 256 2 169 256 2 169 256 2 169 256 2 169 256 2 170 3423 2 170 3423 2 170 3423 2 170 3423 2 170 3423 2 170 3423 6 170 172 363 3262 3421 3423 6 170 172 363 3262 3421 3423 6 170 172 363 3262 3421 3423 6 170 172 363 3262 3421 3423 6 170 172 363 3262 3421 3423 6 170 172 363 3262 3421 3423 3 170 172 363 3 170 172 363 3 170 172 363 3 170 172 363 3 170 172 363 3 170 172 363 6 170 171 172 173 363 364 6 170 171 172 173 363 364 6 170 171 172 173 363 364 6 170 171 172 173 363 364 6 170 171 172 173 363 364 6 170 171 172 173 363 364 2 170 171 2 170 171 2 170 171 2 170 171 2 170 171 2 170 171 3 171 173 364 3 171 173 364 3 171 173 364 3 171 173 364 3 171 173 364 3 171 173 364 5 171 173 257 258 364 5 171 173 257 258 364 5 171 173 257 258 364 5 171 173 257 258 364 5 171 173 257 258 364 5 171 173 257 258 364 2 171 257 2 171 257 2 171 257 2 171 257 2 171 257 2 171 257 2 172 3421 2 172 3421 2 172 3421 2 172 3421 2 172 3421 2 172 3421 4 172 259 3334 3421 4 172 259 3334 3421 4 172 259 3334 3421 4 172 259 3334 3421 4 172 259 3334 3421 4 172 259 3334 3421 2 172 259 2 172 259 2 172 259 2 172 259 2 172 259 2 172 259 4 172 173 258 259 4 172 173 258 259 4 172 173 258 259 4 172 173 258 259 4 172 173 258 259 4 172 173 258 259 2 172 173 2 172 173 2 172 173 2 172 173 2 172 173 2 172 173 2 173 258 2 173 258 2 173 258 2 173 258 2 173 258 2 173 258 10 174 300 306 314 316 1783 1941 3309 3311 3419 10 174 300 306 314 316 1783 1941 3309 3311 3419 10 174 300 306 314 316 1783 1941 3309 3311 3419 10 174 300 306 314 316 1783 1941 3309 3311 3419 10 174 300 306 314 316 1783 1941 3309 3311 3419 10 174 300 306 314 316 1783 1941 3309 3311 3419 4 174 300 306 3419 4 174 300 306 3419 4 174 300 306 3419 4 174 300 306 3419 4 174 300 306 3419 4 174 300 306 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 11 174 176 300 301 306 324 326 3299 3301 3417 3419 4 174 176 324 326 4 174 176 324 326 4 174 176 324 326 4 174 176 324 326 4 174 176 324 326 4 174 176 324 326 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 176 177 268 269 272 273 324 325 326 327 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 12 174 175 268 272 314 315 316 317 574 1312 1758 1783 4 174 175 268 272 4 174 175 268 272 4 174 175 268 272 4 174 175 268 272 4 174 175 268 272 4 174 175 268 272 4 174 314 316 1783 4 174 314 316 1783 4 174 314 316 1783 4 174 314 316 1783 4 174 314 316 1783 4 174 314 316 1783 4 175 177 325 327 4 175 177 325 327 4 175 177 325 327 4 175 177 325 327 4 175 177 325 327 4 175 177 325 327 8 175 177 247 248 253 254 325 327 8 175 177 247 248 253 254 325 327 8 175 177 247 248 253 254 325 327 8 175 177 247 248 253 254 325 327 8 175 177 247 248 253 254 325 327 8 175 177 247 248 253 254 325 327 8 175 247 253 315 317 574 1096 1097 8 175 247 253 315 317 574 1096 1097 8 175 247 253 315 317 574 1096 1097 8 175 247 253 315 317 574 1096 1097 8 175 247 253 315 317 574 1096 1097 8 175 247 253 315 317 574 1096 1097 3 175 247 253 3 175 247 253 3 175 247 253 3 175 247 253 3 175 247 253 3 175 247 253 4 175 315 317 574 4 175 315 317 574 4 175 315 317 574 4 175 315 317 574 4 175 315 317 574 4 175 315 317 574 3 176 301 3417 3 176 301 3417 3 176 301 3417 3 176 301 3417 3 176 301 3417 3 176 301 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 11 176 178 301 302 307 334 336 3289 3291 3415 3417 4 176 178 334 336 4 176 178 334 336 4 176 178 334 336 4 176 178 334 336 4 176 178 334 336 4 176 178 334 336 12 176 177 178 179 269 270 273 274 334 335 336 337 12 176 177 178 179 269 270 273 274 334 335 336 337 12 176 177 178 179 269 270 273 274 334 335 336 337 12 176 177 178 179 269 270 273 274 334 335 336 337 12 176 177 178 179 269 270 273 274 334 335 336 337 12 176 177 178 179 269 270 273 274 334 335 336 337 4 176 177 269 273 4 176 177 269 273 4 176 177 269 273 4 176 177 269 273 4 176 177 269 273 4 176 177 269 273 4 177 179 335 337 4 177 179 335 337 4 177 179 335 337 4 177 179 335 337 4 177 179 335 337 4 177 179 335 337 8 177 179 248 249 254 255 335 337 8 177 179 248 249 254 255 335 337 8 177 179 248 249 254 255 335 337 8 177 179 248 249 254 255 335 337 8 177 179 248 249 254 255 335 337 8 177 179 248 249 254 255 335 337 3 177 248 254 3 177 248 254 3 177 248 254 3 177 248 254 3 177 248 254 3 177 248 254 4 178 302 307 3415 4 178 302 307 3415 4 178 302 307 3415 4 178 302 307 3415 4 178 302 307 3415 4 178 302 307 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 11 178 180 302 303 307 344 346 3279 3281 3413 3415 4 178 180 344 346 4 178 180 344 346 4 178 180 344 346 4 178 180 344 346 4 178 180 344 346 4 178 180 344 346 12 178 179 180 181 270 271 274 275 344 345 346 347 12 178 179 180 181 270 271 274 275 344 345 346 347 12 178 179 180 181 270 271 274 275 344 345 346 347 12 178 179 180 181 270 271 274 275 344 345 346 347 12 178 179 180 181 270 271 274 275 344 345 346 347 12 178 179 180 181 270 271 274 275 344 345 346 347 4 178 179 270 274 4 178 179 270 274 4 178 179 270 274 4 178 179 270 274 4 178 179 270 274 4 178 179 270 274 4 179 181 345 347 4 179 181 345 347 4 179 181 345 347 4 179 181 345 347 4 179 181 345 347 4 179 181 345 347 8 179 181 249 250 255 256 345 347 8 179 181 249 250 255 256 345 347 8 179 181 249 250 255 256 345 347 8 179 181 249 250 255 256 345 347 8 179 181 249 250 255 256 345 347 8 179 181 249 250 255 256 345 347 3 179 249 255 3 179 249 255 3 179 249 255 3 179 249 255 3 179 249 255 3 179 249 255 3 180 303 3413 3 180 303 3413 3 180 303 3413 3 180 303 3413 3 180 303 3413 3 180 303 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 10 180 185 303 304 354 356 3269 3271 3408 3413 4 180 185 354 356 4 180 185 354 356 4 180 185 354 356 4 180 185 354 356 4 180 185 354 356 4 180 185 354 356 8 180 181 184 185 354 355 356 357 8 180 181 184 185 354 355 356 357 8 180 181 184 185 354 355 356 357 8 180 181 184 185 354 355 356 357 8 180 181 184 185 354 355 356 357 8 180 181 184 185 354 355 356 357 2 180 181 2 180 181 2 180 181 2 180 181 2 180 181 2 180 181 4 181 184 355 357 4 181 184 355 357 4 181 184 355 357 4 181 184 355 357 4 181 184 355 357 4 181 184 355 357 10 181 184 250 251 256 257 271 275 355 357 10 181 184 250 251 256 257 271 275 355 357 10 181 184 250 251 256 257 271 275 355 357 10 181 184 250 251 256 257 271 275 355 357 10 181 184 250 251 256 257 271 275 355 357 10 181 184 250 251 256 257 271 275 355 357 3 181 250 256 3 181 250 256 3 181 250 256 3 181 250 256 3 181 250 256 3 181 250 256 8 182 294 300 312 314 3311 3313 3411 8 182 294 300 312 314 3311 3313 3411 8 182 294 300 312 314 3311 3313 3411 8 182 294 300 312 314 3311 3313 3411 8 182 294 300 312 314 3311 3313 3411 8 182 294 300 312 314 3311 3313 3411 4 182 294 300 3411 4 182 294 300 3411 4 182 294 300 3411 4 182 294 300 3411 4 182 294 300 3411 4 182 294 300 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 12 182 187 294 295 300 301 322 324 3301 3303 3406 3411 4 182 187 322 324 4 182 187 322 324 4 182 187 322 324 4 182 187 322 324 4 182 187 322 324 4 182 187 322 324 12 182 186 187 188 264 265 268 269 322 323 324 325 12 182 186 187 188 264 265 268 269 322 323 324 325 12 182 186 187 188 264 265 268 269 322 323 324 325 12 182 186 187 188 264 265 268 269 322 323 324 325 12 182 186 187 188 264 265 268 269 322 323 324 325 12 182 186 187 188 264 265 268 269 322 323 324 325 11 182 186 264 268 312 313 314 315 632 1269 1312 11 182 186 264 268 312 313 314 315 632 1269 1312 11 182 186 264 268 312 313 314 315 632 1269 1312 11 182 186 264 268 312 313 314 315 632 1269 1312 11 182 186 264 268 312 313 314 315 632 1269 1312 11 182 186 264 268 312 313 314 315 632 1269 1312 4 182 186 264 268 4 182 186 264 268 4 182 186 264 268 4 182 186 264 268 4 182 186 264 268 4 182 186 264 268 3 182 312 314 3 182 312 314 3 182 312 314 3 182 312 314 3 182 312 314 3 182 312 314 10 183 185 304 305 362 363 3262 3263 3408 3410 10 183 185 304 305 362 363 3262 3263 3408 3410 10 183 185 304 305 362 363 3262 3263 3408 3410 10 183 185 304 305 362 363 3262 3263 3408 3410 10 183 185 304 305 362 363 3262 3263 3408 3410 10 183 185 304 305 362 363 3262 3263 3408 3410 4 183 185 362 363 4 183 185 362 363 4 183 185 362 363 4 183 185 362 363 4 183 185 362 363 4 183 185 362 363 10 183 184 185 251 252 257 258 362 363 364 10 183 184 185 251 252 257 258 362 363 364 10 183 184 185 251 252 257 258 362 363 364 10 183 184 185 251 252 257 258 362 363 364 10 183 184 185 251 252 257 258 362 363 364 10 183 184 185 251 252 257 258 362 363 364 3 183 252 258 3 183 252 258 3 183 252 258 3 183 252 258 3 183 252 258 3 183 252 258 9 183 252 258 259 305 3334 3335 3341 3410 9 183 252 258 259 305 3334 3335 3341 3410 9 183 252 258 259 305 3334 3335 3341 3410 9 183 252 258 259 305 3334 3335 3341 3410 3 183 305 3410 3 183 305 3410 3 183 305 3410 3 183 305 3410 3 183 305 3410 3 183 305 3410 3 184 251 257 3 184 251 257 3 184 251 257 3 184 251 257 3 184 251 257 3 184 251 257 2 184 185 2 184 185 2 184 185 2 184 185 2 184 185 2 184 185 3 185 304 3408 3 185 304 3408 3 185 304 3408 3 185 304 3408 3 185 304 3408 3 185 304 3408 4 186 188 323 325 4 186 188 323 325 4 186 188 323 325 4 186 188 323 325 4 186 188 323 325 4 186 188 323 325 8 186 188 241 242 247 248 323 325 8 186 188 241 242 247 248 323 325 8 186 188 241 242 247 248 323 325 8 186 188 241 242 247 248 323 325 8 186 188 241 242 247 248 323 325 8 186 188 241 242 247 248 323 325 8 186 241 247 313 315 632 1053 1096 8 186 241 247 313 315 632 1053 1096 8 186 241 247 313 315 632 1053 1096 8 186 241 247 313 315 632 1053 1096 8 186 241 247 313 315 632 1053 1096 8 186 241 247 313 315 632 1053 1096 3 186 241 247 3 186 241 247 3 186 241 247 3 186 241 247 3 186 241 247 3 186 241 247 4 186 313 315 632 4 186 313 315 632 4 186 313 315 632 4 186 313 315 632 4 186 313 315 632 4 186 313 315 632 4 187 295 301 3406 4 187 295 301 3406 4 187 295 301 3406 4 187 295 301 3406 4 187 295 301 3406 4 187 295 301 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 12 187 189 295 296 301 302 332 334 3291 3293 3404 3406 4 187 189 332 334 4 187 189 332 334 4 187 189 332 334 4 187 189 332 334 4 187 189 332 334 4 187 189 332 334 12 187 188 189 190 265 266 269 270 332 333 334 335 12 187 188 189 190 265 266 269 270 332 333 334 335 12 187 188 189 190 265 266 269 270 332 333 334 335 12 187 188 189 190 265 266 269 270 332 333 334 335 12 187 188 189 190 265 266 269 270 332 333 334 335 12 187 188 189 190 265 266 269 270 332 333 334 335 4 187 188 265 269 4 187 188 265 269 4 187 188 265 269 4 187 188 265 269 4 187 188 265 269 4 187 188 265 269 4 188 190 333 335 4 188 190 333 335 4 188 190 333 335 4 188 190 333 335 4 188 190 333 335 4 188 190 333 335 8 188 190 242 243 248 249 333 335 8 188 190 242 243 248 249 333 335 8 188 190 242 243 248 249 333 335 8 188 190 242 243 248 249 333 335 8 188 190 242 243 248 249 333 335 8 188 190 242 243 248 249 333 335 3 188 242 248 3 188 242 248 3 188 242 248 3 188 242 248 3 188 242 248 3 188 242 248 4 189 296 302 3404 4 189 296 302 3404 4 189 296 302 3404 4 189 296 302 3404 4 189 296 302 3404 4 189 296 302 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 12 189 191 296 297 302 303 342 344 3281 3283 3402 3404 4 189 191 342 344 4 189 191 342 344 4 189 191 342 344 4 189 191 342 344 4 189 191 342 344 4 189 191 342 344 12 189 190 191 192 266 267 270 271 342 343 344 345 12 189 190 191 192 266 267 270 271 342 343 344 345 12 189 190 191 192 266 267 270 271 342 343 344 345 12 189 190 191 192 266 267 270 271 342 343 344 345 12 189 190 191 192 266 267 270 271 342 343 344 345 12 189 190 191 192 266 267 270 271 342 343 344 345 4 189 190 266 270 4 189 190 266 270 4 189 190 266 270 4 189 190 266 270 4 189 190 266 270 4 189 190 266 270 4 190 192 343 345 4 190 192 343 345 4 190 192 343 345 4 190 192 343 345 4 190 192 343 345 4 190 192 343 345 8 190 192 243 244 249 250 343 345 8 190 192 243 244 249 250 343 345 8 190 192 243 244 249 250 343 345 8 190 192 243 244 249 250 343 345 8 190 192 243 244 249 250 343 345 8 190 192 243 244 249 250 343 345 3 190 243 249 3 190 243 249 3 190 243 249 3 190 243 249 3 190 243 249 3 190 243 249 4 191 297 303 3402 4 191 297 303 3402 4 191 297 303 3402 4 191 297 303 3402 4 191 297 303 3402 4 191 297 303 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 12 191 196 297 298 303 304 352 354 3271 3273 3397 3402 4 191 196 352 354 4 191 196 352 354 4 191 196 352 354 4 191 196 352 354 4 191 196 352 354 4 191 196 352 354 8 191 192 195 196 352 353 354 355 8 191 192 195 196 352 353 354 355 8 191 192 195 196 352 353 354 355 8 191 192 195 196 352 353 354 355 8 191 192 195 196 352 353 354 355 8 191 192 195 196 352 353 354 355 2 191 192 2 191 192 2 191 192 2 191 192 2 191 192 2 191 192 4 192 195 353 355 4 192 195 353 355 4 192 195 353 355 4 192 195 353 355 4 192 195 353 355 4 192 195 353 355 10 192 195 244 245 250 251 267 271 353 355 10 192 195 244 245 250 251 267 271 353 355 10 192 195 244 245 250 251 267 271 353 355 10 192 195 244 245 250 251 267 271 353 355 10 192 195 244 245 250 251 267 271 353 355 10 192 195 244 245 250 251 267 271 353 355 3 192 244 250 3 192 244 250 3 192 244 250 3 192 244 250 3 192 244 250 3 192 244 250 8 193 288 294 310 312 3313 3315 3400 8 193 288 294 310 312 3313 3315 3400 8 193 288 294 310 312 3313 3315 3400 8 193 288 294 310 312 3313 3315 3400 8 193 288 294 310 312 3313 3315 3400 8 193 288 294 310 312 3313 3315 3400 4 193 288 294 3400 4 193 288 294 3400 4 193 288 294 3400 4 193 288 294 3400 4 193 288 294 3400 4 193 288 294 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 12 193 198 288 289 294 295 320 322 3303 3305 3395 3400 4 193 198 320 322 4 193 198 320 322 4 193 198 320 322 4 193 198 320 322 4 193 198 320 322 4 193 198 320 322 12 193 197 198 199 260 261 264 265 320 321 322 323 12 193 197 198 199 260 261 264 265 320 321 322 323 12 193 197 198 199 260 261 264 265 320 321 322 323 12 193 197 198 199 260 261 264 265 320 321 322 323 12 193 197 198 199 260 261 264 265 320 321 322 323 12 193 197 198 199 260 261 264 265 320 321 322 323 11 193 197 260 264 310 311 312 313 681 1226 1269 11 193 197 260 264 310 311 312 313 681 1226 1269 11 193 197 260 264 310 311 312 313 681 1226 1269 11 193 197 260 264 310 311 312 313 681 1226 1269 11 193 197 260 264 310 311 312 313 681 1226 1269 11 193 197 260 264 310 311 312 313 681 1226 1269 4 193 197 260 264 4 193 197 260 264 4 193 197 260 264 4 193 197 260 264 4 193 197 260 264 4 193 197 260 264 3 193 310 312 3 193 310 312 3 193 310 312 3 193 310 312 3 193 310 312 3 193 310 312 9 194 195 196 245 246 251 252 361 362 9 194 195 196 245 246 251 252 361 362 9 194 195 196 245 246 251 252 361 362 9 194 195 196 245 246 251 252 361 362 9 194 195 196 245 246 251 252 361 362 9 194 195 196 245 246 251 252 361 362 4 194 196 361 362 4 194 196 361 362 4 194 196 361 362 4 194 196 361 362 4 194 196 361 362 4 194 196 361 362 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 12 194 196 298 299 304 305 361 362 3263 3264 3397 3399 3 194 246 252 3 194 246 252 3 194 246 252 3 194 246 252 3 194 246 252 3 194 246 252 8 194 246 252 299 305 3341 3347 3399 8 194 246 252 299 305 3341 3347 3399 8 194 246 252 299 305 3341 3347 3399 8 194 246 252 299 305 3341 3347 3399 8 194 246 252 299 305 3341 3347 3399 8 194 246 252 299 305 3341 3347 3399 4 194 299 305 3399 4 194 299 305 3399 4 194 299 305 3399 4 194 299 305 3399 4 194 299 305 3399 4 194 299 305 3399 3 195 245 251 3 195 245 251 3 195 245 251 3 195 245 251 3 195 245 251 3 195 245 251 2 195 196 2 195 196 2 195 196 2 195 196 2 195 196 2 195 196 4 196 298 304 3397 4 196 298 304 3397 4 196 298 304 3397 4 196 298 304 3397 4 196 298 304 3397 4 196 298 304 3397 4 197 199 321 323 4 197 199 321 323 4 197 199 321 323 4 197 199 321 323 4 197 199 321 323 4 197 199 321 323 8 197 199 235 236 241 242 321 323 8 197 199 235 236 241 242 321 323 8 197 199 235 236 241 242 321 323 8 197 199 235 236 241 242 321 323 8 197 199 235 236 241 242 321 323 8 197 199 235 236 241 242 321 323 8 197 235 241 311 313 681 1010 1053 8 197 235 241 311 313 681 1010 1053 8 197 235 241 311 313 681 1010 1053 8 197 235 241 311 313 681 1010 1053 8 197 235 241 311 313 681 1010 1053 8 197 235 241 311 313 681 1010 1053 3 197 235 241 3 197 235 241 3 197 235 241 3 197 235 241 3 197 235 241 3 197 235 241 4 197 311 313 681 4 197 311 313 681 4 197 311 313 681 4 197 311 313 681 4 197 311 313 681 4 197 311 313 681 4 198 289 295 3395 4 198 289 295 3395 4 198 289 295 3395 4 198 289 295 3395 4 198 289 295 3395 4 198 289 295 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 12 198 200 289 290 295 296 330 332 3293 3295 3393 3395 4 198 200 330 332 4 198 200 330 332 4 198 200 330 332 4 198 200 330 332 4 198 200 330 332 4 198 200 330 332 12 198 199 200 201 261 262 265 266 330 331 332 333 12 198 199 200 201 261 262 265 266 330 331 332 333 12 198 199 200 201 261 262 265 266 330 331 332 333 12 198 199 200 201 261 262 265 266 330 331 332 333 12 198 199 200 201 261 262 265 266 330 331 332 333 12 198 199 200 201 261 262 265 266 330 331 332 333 4 198 199 261 265 4 198 199 261 265 4 198 199 261 265 4 198 199 261 265 4 198 199 261 265 4 198 199 261 265 4 199 201 331 333 4 199 201 331 333 4 199 201 331 333 4 199 201 331 333 4 199 201 331 333 4 199 201 331 333 8 199 201 236 237 242 243 331 333 8 199 201 236 237 242 243 331 333 8 199 201 236 237 242 243 331 333 8 199 201 236 237 242 243 331 333 8 199 201 236 237 242 243 331 333 8 199 201 236 237 242 243 331 333 3 199 236 242 3 199 236 242 3 199 236 242 3 199 236 242 3 199 236 242 3 199 236 242 4 200 290 296 3393 4 200 290 296 3393 4 200 290 296 3393 4 200 290 296 3393 4 200 290 296 3393 4 200 290 296 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 12 200 205 290 291 296 297 340 342 3283 3285 3388 3393 4 200 205 340 342 4 200 205 340 342 4 200 205 340 342 4 200 205 340 342 4 200 205 340 342 4 200 205 340 342 12 200 201 204 205 262 263 266 267 340 341 342 343 12 200 201 204 205 262 263 266 267 340 341 342 343 12 200 201 204 205 262 263 266 267 340 341 342 343 12 200 201 204 205 262 263 266 267 340 341 342 343 12 200 201 204 205 262 263 266 267 340 341 342 343 12 200 201 204 205 262 263 266 267 340 341 342 343 4 200 201 262 266 4 200 201 262 266 4 200 201 262 266 4 200 201 262 266 4 200 201 262 266 4 200 201 262 266 4 201 204 341 343 4 201 204 341 343 4 201 204 341 343 4 201 204 341 343 4 201 204 341 343 4 201 204 341 343 8 201 204 237 238 243 244 341 343 8 201 204 237 238 243 244 341 343 8 201 204 237 238 243 244 341 343 8 201 204 237 238 243 244 341 343 8 201 204 237 238 243 244 341 343 8 201 204 237 238 243 244 341 343 3 201 237 243 3 201 237 243 3 201 237 243 3 201 237 243 3 201 237 243 3 201 237 243 8 202 282 288 309 310 3315 3316 3391 8 202 282 288 309 310 3315 3316 3391 8 202 282 288 309 310 3315 3316 3391 8 202 282 288 309 310 3315 3316 3391 8 202 282 288 309 310 3315 3316 3391 8 202 282 288 309 310 3315 3316 3391 4 202 282 288 3391 4 202 282 288 3391 4 202 282 288 3391 4 202 282 288 3391 4 202 282 288 3391 4 202 282 288 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 12 202 206 282 283 288 289 319 320 3305 3306 3387 3391 4 202 206 319 320 4 202 206 319 320 4 202 206 319 320 4 202 206 319 320 4 202 206 319 320 4 202 206 319 320 11 202 206 229 230 235 236 260 261 319 320 321 11 202 206 229 230 235 236 260 261 319 320 321 11 202 206 229 230 235 236 260 261 319 320 321 11 202 206 229 230 235 236 260 261 319 320 321 11 202 206 229 230 235 236 260 261 319 320 321 11 202 206 229 230 235 236 260 261 319 320 321 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 12 202 229 235 260 309 310 311 881 967 1010 1183 1226 4 202 229 235 260 4 202 229 235 260 4 202 229 235 260 4 202 229 235 260 4 202 229 235 260 4 202 229 235 260 3 202 309 310 3 202 309 310 3 202 309 310 3 202 309 310 3 202 309 310 3 202 309 310 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 22 203 204 205 263 267 291 292 297 298 350 351 352 353 3272 3273 3274 3275 3326 3330 3388 3389 3390 4 203 204 351 353 4 203 204 351 353 4 203 204 351 353 4 203 204 351 353 4 203 204 351 353 4 203 204 351 353 8 203 204 238 239 244 245 351 353 8 203 204 238 239 244 245 351 353 8 203 204 238 239 244 245 351 353 8 203 204 238 239 244 245 351 353 8 203 204 238 239 244 245 351 353 8 203 204 238 239 244 245 351 353 3 203 239 245 3 203 239 245 3 203 239 245 3 203 239 245 3 203 239 245 3 203 239 245 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 18 203 239 240 245 246 292 293 298 299 360 361 3264 3265 3347 3348 3353 3354 3390 4 203 292 298 3390 4 203 292 298 3390 4 203 292 298 3390 4 203 292 298 3390 4 203 292 298 3390 4 203 292 298 3390 3 204 238 244 3 204 238 244 3 204 238 244 3 204 238 244 3 204 238 244 3 204 238 244 4 204 205 263 267 4 204 205 263 267 4 204 205 263 267 4 204 205 263 267 4 204 205 263 267 4 204 205 263 267 4 205 291 297 3388 4 205 291 297 3388 4 205 291 297 3388 4 205 291 297 3388 4 205 291 297 3388 4 205 291 297 3388 4 206 283 289 3387 4 206 283 289 3387 4 206 283 289 3387 4 206 283 289 3387 4 206 283 289 3387 4 206 283 289 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 12 206 207 283 284 289 290 329 330 3295 3296 3386 3387 4 206 207 329 330 4 206 207 329 330 4 206 207 329 330 4 206 207 329 330 4 206 207 329 330 4 206 207 329 330 11 206 207 230 231 236 237 261 262 329 330 331 11 206 207 230 231 236 237 261 262 329 330 331 11 206 207 230 231 236 237 261 262 329 330 331 11 206 207 230 231 236 237 261 262 329 330 331 11 206 207 230 231 236 237 261 262 329 330 331 11 206 207 230 231 236 237 261 262 329 330 331 4 206 230 236 261 4 206 230 236 261 4 206 230 236 261 4 206 230 236 261 4 206 230 236 261 4 206 230 236 261 4 207 284 290 3386 4 207 284 290 3386 4 207 284 290 3386 4 207 284 290 3386 4 207 284 290 3386 4 207 284 290 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 12 207 208 284 285 290 291 339 340 3285 3286 3385 3386 4 207 208 339 340 4 207 208 339 340 4 207 208 339 340 4 207 208 339 340 4 207 208 339 340 4 207 208 339 340 11 207 208 231 232 237 238 262 263 339 340 341 11 207 208 231 232 237 238 262 263 339 340 341 11 207 208 231 232 237 238 262 263 339 340 341 11 207 208 231 232 237 238 262 263 339 340 341 11 207 208 231 232 237 238 262 263 339 340 341 11 207 208 231 232 237 238 262 263 339 340 341 4 207 231 237 262 4 207 231 237 262 4 207 231 237 262 4 207 231 237 262 4 207 231 237 262 4 207 231 237 262 4 208 285 291 3385 4 208 285 291 3385 4 208 285 291 3385 4 208 285 291 3385 4 208 285 291 3385 4 208 285 291 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 12 208 209 285 286 291 292 349 350 3275 3276 3384 3385 4 208 209 349 350 4 208 209 349 350 4 208 209 349 350 4 208 209 349 350 4 208 209 349 350 4 208 209 349 350 10 208 209 232 233 238 239 263 349 350 351 10 208 209 232 233 238 239 263 349 350 351 10 208 209 232 233 238 239 263 349 350 351 10 208 209 232 233 238 239 263 349 350 351 10 208 209 232 233 238 239 263 349 350 351 10 208 209 232 233 238 239 263 349 350 351 4 208 232 238 263 4 208 232 238 263 4 208 232 238 263 4 208 232 238 263 4 208 232 238 263 4 208 232 238 263 4 209 286 292 3384 4 209 286 292 3384 4 209 286 292 3384 4 209 286 292 3384 4 209 286 292 3384 4 209 286 292 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 12 209 210 286 287 292 293 359 360 3265 3266 3383 3384 4 209 210 359 360 4 209 210 359 360 4 209 210 359 360 4 209 210 359 360 4 209 210 359 360 4 209 210 359 360 8 209 210 233 234 239 240 359 360 8 209 210 233 234 239 240 359 360 8 209 210 233 234 239 240 359 360 8 209 210 233 234 239 240 359 360 8 209 210 233 234 239 240 359 360 8 209 210 233 234 239 240 359 360 3 209 233 239 3 209 233 239 3 209 233 239 3 209 233 239 3 209 233 239 3 209 233 239 3 210 234 240 3 210 234 240 3 210 234 240 3 210 234 240 3 210 234 240 3 210 234 240 8 210 234 240 287 293 3353 3359 3383 8 210 234 240 287 293 3353 3359 3383 8 210 234 240 287 293 3353 3359 3383 8 210 234 240 287 293 3353 3359 3383 8 210 234 240 287 293 3353 3359 3383 8 210 234 240 287 293 3353 3359 3383 4 210 287 293 3383 4 210 287 293 3383 4 210 287 293 3383 4 210 287 293 3383 4 210 287 293 3383 4 210 287 293 3383 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 11 211 276 282 308 309 879 1355 2758 3316 3317 3382 4 211 276 282 3382 4 211 276 282 3382 4 211 276 282 3382 4 211 276 282 3382 4 211 276 282 3382 4 211 276 282 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 12 211 212 276 277 282 283 318 319 3306 3307 3381 3382 4 211 212 318 319 4 211 212 318 319 4 211 212 318 319 4 211 212 318 319 4 211 212 318 319 4 211 212 318 319 8 211 212 223 224 229 230 318 319 8 211 212 223 224 229 230 318 319 8 211 212 223 224 229 230 318 319 8 211 212 223 224 229 230 318 319 8 211 212 223 224 229 230 318 319 8 211 212 223 224 229 230 318 319 11 211 223 229 308 309 879 880 924 967 1140 1183 11 211 223 229 308 309 879 880 924 967 1140 1183 11 211 223 229 308 309 879 880 924 967 1140 1183 11 211 223 229 308 309 879 880 924 967 1140 1183 11 211 223 229 308 309 879 880 924 967 1140 1183 11 211 223 229 308 309 879 880 924 967 1140 1183 3 211 223 229 3 211 223 229 3 211 223 229 3 211 223 229 3 211 223 229 3 211 223 229 4 211 308 309 879 4 211 308 309 879 4 211 308 309 879 4 211 308 309 879 4 211 308 309 879 4 211 308 309 879 4 212 277 283 3381 4 212 277 283 3381 4 212 277 283 3381 4 212 277 283 3381 4 212 277 283 3381 4 212 277 283 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 12 212 213 277 278 283 284 328 329 3296 3297 3380 3381 4 212 213 328 329 4 212 213 328 329 4 212 213 328 329 4 212 213 328 329 4 212 213 328 329 4 212 213 328 329 8 212 213 224 225 230 231 328 329 8 212 213 224 225 230 231 328 329 8 212 213 224 225 230 231 328 329 8 212 213 224 225 230 231 328 329 8 212 213 224 225 230 231 328 329 8 212 213 224 225 230 231 328 329 3 212 224 230 3 212 224 230 3 212 224 230 3 212 224 230 3 212 224 230 3 212 224 230 4 213 278 284 3380 4 213 278 284 3380 4 213 278 284 3380 4 213 278 284 3380 4 213 278 284 3380 4 213 278 284 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 12 213 214 278 279 284 285 338 339 3286 3287 3379 3380 4 213 214 338 339 4 213 214 338 339 4 213 214 338 339 4 213 214 338 339 4 213 214 338 339 4 213 214 338 339 8 213 214 225 226 231 232 338 339 8 213 214 225 226 231 232 338 339 8 213 214 225 226 231 232 338 339 8 213 214 225 226 231 232 338 339 8 213 214 225 226 231 232 338 339 8 213 214 225 226 231 232 338 339 3 213 225 231 3 213 225 231 3 213 225 231 3 213 225 231 3 213 225 231 3 213 225 231 4 214 279 285 3379 4 214 279 285 3379 4 214 279 285 3379 4 214 279 285 3379 4 214 279 285 3379 4 214 279 285 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 12 214 215 279 280 285 286 348 349 3276 3277 3378 3379 4 214 215 348 349 4 214 215 348 349 4 214 215 348 349 4 214 215 348 349 4 214 215 348 349 4 214 215 348 349 8 214 215 226 227 232 233 348 349 8 214 215 226 227 232 233 348 349 8 214 215 226 227 232 233 348 349 8 214 215 226 227 232 233 348 349 8 214 215 226 227 232 233 348 349 8 214 215 226 227 232 233 348 349 3 214 226 232 3 214 226 232 3 214 226 232 3 214 226 232 3 214 226 232 3 214 226 232 4 215 280 286 3378 4 215 280 286 3378 4 215 280 286 3378 4 215 280 286 3378 4 215 280 286 3378 4 215 280 286 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 12 215 216 280 281 286 287 358 359 3266 3267 3377 3378 4 215 216 358 359 4 215 216 358 359 4 215 216 358 359 4 215 216 358 359 4 215 216 358 359 4 215 216 358 359 8 215 216 227 228 233 234 358 359 8 215 216 227 228 233 234 358 359 8 215 216 227 228 233 234 358 359 8 215 216 227 228 233 234 358 359 8 215 216 227 228 233 234 358 359 8 215 216 227 228 233 234 358 359 3 215 227 233 3 215 227 233 3 215 227 233 3 215 227 233 3 215 227 233 3 215 227 233 3 216 228 234 3 216 228 234 3 216 228 234 3 216 228 234 3 216 228 234 3 216 228 234 8 216 228 234 281 287 3359 3365 3377 8 216 228 234 281 287 3359 3365 3377 8 216 228 234 281 287 3359 3365 3377 8 216 228 234 281 287 3359 3365 3377 8 216 228 234 281 287 3359 3365 3377 8 216 228 234 281 287 3359 3365 3377 4 216 281 287 3377 4 216 281 287 3377 4 216 281 287 3377 4 216 281 287 3377 4 216 281 287 3377 4 216 281 287 3377 8 217 276 308 862 1355 2775 3317 3376 8 217 276 308 862 1355 2775 3317 3376 8 217 276 308 862 1355 2775 3317 3376 8 217 276 308 862 1355 2775 3317 3376 8 217 276 308 862 1355 2775 3317 3376 8 217 276 308 862 1355 2775 3317 3376 3 217 276 3376 3 217 276 3376 3 217 276 3376 3 217 276 3376 3 217 276 3376 3 217 276 3376 8 217 221 276 277 318 3307 3372 3376 8 217 221 276 277 318 3307 3372 3376 8 217 221 276 277 318 3307 3372 3376 8 217 221 276 277 318 3307 3372 3376 8 217 221 276 277 318 3307 3372 3376 8 217 221 276 277 318 3307 3372 3376 3 217 221 318 3 217 221 318 3 217 221 318 3 217 221 318 3 217 221 318 3 217 221 318 5 217 221 223 224 318 5 217 221 223 224 318 5 217 221 223 224 318 5 217 221 223 224 318 5 217 221 223 224 318 5 217 221 223 224 318 6 217 223 308 862 924 1140 6 217 223 308 862 924 1140 6 217 223 308 862 924 1140 6 217 223 308 862 924 1140 6 217 223 308 862 924 1140 6 217 223 308 862 924 1140 2 217 223 2 217 223 2 217 223 2 217 223 2 217 223 2 217 223 3 217 308 862 3 217 308 862 3 217 308 862 3 217 308 862 3 217 308 862 3 217 308 862 6 218 219 371 3254 3374 3375 6 218 219 371 3254 3374 3375 6 218 219 371 3254 3374 3375 6 218 219 371 3254 3374 3375 6 218 219 371 3254 3374 3375 6 218 219 371 3254 3374 3375 2 218 3375 2 218 3375 2 218 3375 2 218 3375 2 218 3375 2 218 3375 6 218 222 372 3253 3371 3375 6 218 222 372 3253 3371 3375 6 218 222 372 3253 3371 3375 6 218 222 372 3253 3371 3375 6 218 222 372 3253 3371 3375 6 218 222 372 3253 3371 3375 3 218 222 372 3 218 222 372 3 218 222 372 3 218 222 372 3 218 222 372 3 218 222 372 3 218 219 371 3 218 219 371 3 218 219 371 3 218 219 371 3 218 219 371 3 218 219 371 6 219 220 370 3255 3373 3374 6 219 220 370 3255 3373 3374 6 219 220 370 3255 3373 3374 6 219 220 370 3255 3373 3374 6 219 220 370 3255 3373 3374 6 219 220 370 3255 3373 3374 2 219 3374 2 219 3374 2 219 3374 2 219 3374 2 219 3374 2 219 3374 3 219 220 370 3 219 220 370 3 219 220 370 3 219 220 370 3 219 220 370 3 219 220 370 4 220 369 3256 3373 4 220 369 3256 3373 4 220 369 3256 3373 4 220 369 3256 3373 4 220 369 3256 3373 4 220 369 3256 3373 2 220 3373 2 220 3373 2 220 3373 2 220 3373 2 220 3373 2 220 3373 2 220 369 2 220 369 2 220 369 2 220 369 2 220 369 2 220 369 2 221 224 2 221 224 2 221 224 2 221 224 2 221 224 2 221 224 10 221 224 225 277 278 328 3297 3368 3369 3372 10 221 224 225 277 278 328 3297 3368 3369 3372 10 221 224 225 277 278 328 3297 3368 3369 3372 10 221 224 225 277 278 328 3297 3368 3369 3372 10 221 224 225 277 278 328 3297 3368 3369 3372 10 221 224 225 277 278 328 3297 3368 3369 3372 3 221 277 3372 3 221 277 3372 3 221 277 3372 3 221 277 3372 3 221 277 3372 3 221 277 3372 2 222 3371 2 222 3371 2 222 3371 2 222 3371 2 222 3371 2 222 3371 4 222 373 3252 3371 4 222 373 3252 3371 4 222 373 3252 3371 4 222 373 3252 3371 4 222 373 3252 3371 4 222 373 3252 3371 2 222 373 2 222 373 2 222 373 2 222 373 2 222 373 2 222 373 3 223 224 318 3 223 224 318 3 223 224 318 3 223 224 318 3 223 224 318 3 223 224 318 4 223 308 924 1140 4 223 308 924 1140 4 223 308 924 1140 4 223 308 924 1140 4 223 308 924 1140 4 223 308 924 1140 3 224 225 328 3 224 225 328 3 224 225 328 3 224 225 328 3 224 225 328 3 224 225 328 3 225 278 3368 3 225 278 3368 3 225 278 3368 3 225 278 3368 3 225 278 3368 3 225 278 3368 8 225 226 278 279 338 3287 3367 3368 8 225 226 278 279 338 3287 3367 3368 8 225 226 278 279 338 3287 3367 3368 8 225 226 278 279 338 3287 3367 3368 8 225 226 278 279 338 3287 3367 3368 8 225 226 278 279 338 3287 3367 3368 3 225 226 338 3 225 226 338 3 225 226 338 3 225 226 338 3 225 226 338 3 225 226 338 3 226 279 3367 3 226 279 3367 3 226 279 3367 3 226 279 3367 3 226 279 3367 3 226 279 3367 8 226 227 279 280 348 3277 3366 3367 8 226 227 279 280 348 3277 3366 3367 8 226 227 279 280 348 3277 3366 3367 8 226 227 279 280 348 3277 3366 3367 8 226 227 279 280 348 3277 3366 3367 8 226 227 279 280 348 3277 3366 3367 3 226 227 348 3 226 227 348 3 226 227 348 3 226 227 348 3 226 227 348 3 226 227 348 3 227 280 3366 3 227 280 3366 3 227 280 3366 3 227 280 3366 3 227 280 3366 3 227 280 3366 8 227 228 280 281 358 3267 3365 3366 8 227 228 280 281 358 3267 3365 3366 8 227 228 280 281 358 3267 3365 3366 8 227 228 280 281 358 3267 3365 3366 8 227 228 280 281 358 3267 3365 3366 8 227 228 280 281 358 3267 3365 3366 3 227 228 358 3 227 228 358 3 227 228 358 3 227 228 358 3 227 228 358 3 227 228 358 3 228 281 3365 3 228 281 3365 3 228 281 3365 3 228 281 3365 3 228 281 3365 3 228 281 3365 3 229 230 319 3 229 230 319 3 229 230 319 3 229 230 319 3 229 230 319 3 229 230 319 4 229 309 967 1183 4 229 309 967 1183 4 229 309 967 1183 4 229 309 967 1183 4 229 309 967 1183 4 229 309 967 1183 3 230 231 329 3 230 231 329 3 230 231 329 3 230 231 329 3 230 231 329 3 230 231 329 3 231 232 339 3 231 232 339 3 231 232 339 3 231 232 339 3 231 232 339 3 231 232 339 3 232 233 349 3 232 233 349 3 232 233 349 3 232 233 349 3 232 233 349 3 232 233 349 3 233 234 359 3 233 234 359 3 233 234 359 3 233 234 359 3 233 234 359 3 233 234 359 3 234 287 3359 3 234 287 3359 3 234 287 3359 3 234 287 3359 3 234 287 3359 3 234 287 3359 3 235 236 321 3 235 236 321 3 235 236 321 3 235 236 321 3 235 236 321 3 235 236 321 3 235 311 1010 3 235 311 1010 3 235 311 1010 3 235 311 1010 3 235 311 1010 3 235 311 1010 3 236 237 331 3 236 237 331 3 236 237 331 3 236 237 331 3 236 237 331 3 236 237 331 3 237 238 341 3 237 238 341 3 237 238 341 3 237 238 341 3 237 238 341 3 237 238 341 3 238 239 351 3 238 239 351 3 238 239 351 3 238 239 351 3 238 239 351 3 238 239 351 3 239 240 360 3 239 240 360 3 239 240 360 3 239 240 360 3 239 240 360 3 239 240 360 3 240 293 3353 3 240 293 3353 3 240 293 3353 3 240 293 3353 3 240 293 3353 3 240 293 3353 3 241 242 323 3 241 242 323 3 241 242 323 3 241 242 323 3 241 242 323 3 241 242 323 3 241 313 1053 3 241 313 1053 3 241 313 1053 3 241 313 1053 3 241 313 1053 3 241 313 1053 3 242 243 333 3 242 243 333 3 242 243 333 3 242 243 333 3 242 243 333 3 242 243 333 3 243 244 343 3 243 244 343 3 243 244 343 3 243 244 343 3 243 244 343 3 243 244 343 3 244 245 353 3 244 245 353 3 244 245 353 3 244 245 353 3 244 245 353 3 244 245 353 3 245 246 361 3 245 246 361 3 245 246 361 3 245 246 361 3 245 246 361 3 245 246 361 3 246 299 3347 3 246 299 3347 3 246 299 3347 3 246 299 3347 3 246 299 3347 3 246 299 3347 3 247 248 325 3 247 248 325 3 247 248 325 3 247 248 325 3 247 248 325 3 247 248 325 3 247 315 1096 3 247 315 1096 3 247 315 1096 3 247 315 1096 3 247 315 1096 3 247 315 1096 3 248 249 335 3 248 249 335 3 248 249 335 3 248 249 335 3 248 249 335 3 248 249 335 3 249 250 345 3 249 250 345 3 249 250 345 3 249 250 345 3 249 250 345 3 249 250 345 4 250 251 271 355 4 250 251 271 355 4 250 251 271 355 4 250 251 271 355 4 250 251 271 355 4 250 251 271 355 3 251 252 362 3 251 252 362 3 251 252 362 3 251 252 362 3 251 252 362 3 251 252 362 3 252 305 3341 3 252 305 3341 3 252 305 3341 3 252 305 3341 3 252 305 3341 3 252 305 3341 3 253 254 327 3 253 254 327 3 253 254 327 3 253 254 327 3 253 254 327 3 253 254 327 3 253 317 1097 3 253 317 1097 3 253 317 1097 3 253 317 1097 3 253 317 1097 3 253 317 1097 3 254 255 337 3 254 255 337 3 254 255 337 3 254 255 337 3 254 255 337 3 254 255 337 3 255 256 347 3 255 256 347 3 255 256 347 3 255 256 347 3 255 256 347 3 255 256 347 4 256 257 275 357 4 256 257 275 357 4 256 257 275 357 4 256 257 275 357 4 256 257 275 357 4 256 257 275 357 3 257 258 364 3 257 258 364 3 257 258 364 3 257 258 364 3 257 258 364 3 257 258 364 2 258 259 2 258 259 2 258 259 2 258 259 2 258 259 2 258 259 2 259 3334 2 259 3334 2 259 3334 2 259 3334 2 259 3334 2 259 3334 4 260 261 320 321 4 260 261 320 321 4 260 261 320 321 4 260 261 320 321 4 260 261 320 321 4 260 261 320 321 4 260 310 311 1226 4 260 310 311 1226 4 260 310 311 1226 4 260 310 311 1226 4 260 310 311 1226 4 260 310 311 1226 4 261 262 330 331 4 261 262 330 331 4 261 262 330 331 4 261 262 330 331 4 261 262 330 331 4 261 262 330 331 4 262 263 340 341 4 262 263 340 341 4 262 263 340 341 4 262 263 340 341 4 262 263 340 341 4 262 263 340 341 3 263 350 351 3 263 350 351 3 263 350 351 3 263 350 351 3 263 350 351 3 263 350 351 4 264 265 322 323 4 264 265 322 323 4 264 265 322 323 4 264 265 322 323 4 264 265 322 323 4 264 265 322 323 4 264 312 313 1269 4 264 312 313 1269 4 264 312 313 1269 4 264 312 313 1269 4 264 312 313 1269 4 264 312 313 1269 4 265 266 332 333 4 265 266 332 333 4 265 266 332 333 4 265 266 332 333 4 265 266 332 333 4 265 266 332 333 4 266 267 342 343 4 266 267 342 343 4 266 267 342 343 4 266 267 342 343 4 266 267 342 343 4 266 267 342 343 1 267 1 267 1 267 1 267 1 267 1 267 2 267 271 2 267 271 2 267 271 2 267 271 2 267 271 2 267 271 4 268 269 324 325 4 268 269 324 325 4 268 269 324 325 4 268 269 324 325 4 268 269 324 325 4 268 269 324 325 4 268 314 315 1312 4 268 314 315 1312 4 268 314 315 1312 4 268 314 315 1312 4 268 314 315 1312 4 268 314 315 1312 4 269 270 334 335 4 269 270 334 335 4 269 270 334 335 4 269 270 334 335 4 269 270 334 335 4 269 270 334 335 4 270 271 344 345 4 270 271 344 345 4 270 271 344 345 4 270 271 344 345 4 270 271 344 345 4 270 271 344 345 2 271 275 2 271 275 2 271 275 2 271 275 2 271 275 2 271 275 4 272 273 326 327 4 272 273 326 327 4 272 273 326 327 4 272 273 326 327 4 272 273 326 327 4 272 273 326 327 3 272 316 317 3 272 316 317 3 272 316 317 3 272 316 317 3 272 316 317 3 272 316 317 4 273 274 336 337 4 273 274 336 337 4 273 274 336 337 4 273 274 336 337 4 273 274 336 337 4 273 274 336 337 4 274 275 346 347 4 274 275 346 347 4 274 275 346 347 4 274 275 346 347 4 274 275 346 347 4 274 275 346 347 1 275 1 275 1 275 1 275 1 275 1 275 4 276 277 318 3307 4 276 277 318 3307 4 276 277 318 3307 4 276 277 318 3307 4 276 277 318 3307 4 276 277 318 3307 4 276 308 1355 3317 4 276 308 1355 3317 4 276 308 1355 3317 4 276 308 1355 3317 4 276 308 1355 3317 4 276 308 1355 3317 4 277 278 328 3297 4 277 278 328 3297 4 277 278 328 3297 4 277 278 328 3297 4 277 278 328 3297 4 277 278 328 3297 4 278 279 338 3287 4 278 279 338 3287 4 278 279 338 3287 4 278 279 338 3287 4 278 279 338 3287 4 278 279 338 3287 4 279 280 348 3277 4 279 280 348 3277 4 279 280 348 3277 4 279 280 348 3277 4 279 280 348 3277 4 279 280 348 3277 4 280 281 358 3267 4 280 281 358 3267 4 280 281 358 3267 4 280 281 358 3267 4 280 281 358 3267 4 280 281 358 3267 4 282 283 319 3306 4 282 283 319 3306 4 282 283 319 3306 4 282 283 319 3306 4 282 283 319 3306 4 282 283 319 3306 3 282 309 3316 3 282 309 3316 3 282 309 3316 3 282 309 3316 3 282 309 3316 3 282 309 3316 4 283 284 329 3296 4 283 284 329 3296 4 283 284 329 3296 4 283 284 329 3296 4 283 284 329 3296 4 283 284 329 3296 4 284 285 339 3286 4 284 285 339 3286 4 284 285 339 3286 4 284 285 339 3286 4 284 285 339 3286 4 284 285 339 3286 4 285 286 349 3276 4 285 286 349 3276 4 285 286 349 3276 4 285 286 349 3276 4 285 286 349 3276 4 285 286 349 3276 4 286 287 359 3266 4 286 287 359 3266 4 286 287 359 3266 4 286 287 359 3266 4 286 287 359 3266 4 286 287 359 3266 4 288 289 320 3305 4 288 289 320 3305 4 288 289 320 3305 4 288 289 320 3305 4 288 289 320 3305 4 288 289 320 3305 3 288 310 3315 3 288 310 3315 3 288 310 3315 3 288 310 3315 3 288 310 3315 3 288 310 3315 4 289 290 330 3295 4 289 290 330 3295 4 289 290 330 3295 4 289 290 330 3295 4 289 290 330 3295 4 289 290 330 3295 4 290 291 340 3285 4 290 291 340 3285 4 290 291 340 3285 4 290 291 340 3285 4 290 291 340 3285 4 290 291 340 3285 4 291 292 350 3275 4 291 292 350 3275 4 291 292 350 3275 4 291 292 350 3275 4 291 292 350 3275 4 291 292 350 3275 4 292 293 360 3265 4 292 293 360 3265 4 292 293 360 3265 4 292 293 360 3265 4 292 293 360 3265 4 292 293 360 3265 4 294 295 322 3303 4 294 295 322 3303 4 294 295 322 3303 4 294 295 322 3303 4 294 295 322 3303 4 294 295 322 3303 3 294 312 3313 3 294 312 3313 3 294 312 3313 3 294 312 3313 3 294 312 3313 3 294 312 3313 4 295 296 332 3293 4 295 296 332 3293 4 295 296 332 3293 4 295 296 332 3293 4 295 296 332 3293 4 295 296 332 3293 4 296 297 342 3283 4 296 297 342 3283 4 296 297 342 3283 4 296 297 342 3283 4 296 297 342 3283 4 296 297 342 3283 4 297 298 352 3273 4 297 298 352 3273 4 297 298 352 3273 4 297 298 352 3273 4 297 298 352 3273 4 297 298 352 3273 4 298 299 361 3264 4 298 299 361 3264 4 298 299 361 3264 4 298 299 361 3264 4 298 299 361 3264 4 298 299 361 3264 4 300 301 324 3301 4 300 301 324 3301 4 300 301 324 3301 4 300 301 324 3301 4 300 301 324 3301 4 300 301 324 3301 3 300 314 3311 3 300 314 3311 3 300 314 3311 3 300 314 3311 3 300 314 3311 3 300 314 3311 4 301 302 334 3291 4 301 302 334 3291 4 301 302 334 3291 4 301 302 334 3291 4 301 302 334 3291 4 301 302 334 3291 4 302 303 344 3281 4 302 303 344 3281 4 302 303 344 3281 4 302 303 344 3281 4 302 303 344 3281 4 302 303 344 3281 4 303 304 354 3271 4 303 304 354 3271 4 303 304 354 3271 4 303 304 354 3271 4 303 304 354 3271 4 303 304 354 3271 4 304 305 362 3263 4 304 305 362 3263 4 304 305 362 3263 4 304 305 362 3263 4 304 305 362 3263 4 304 305 362 3263 3 306 326 3299 3 306 326 3299 3 306 326 3299 3 306 326 3299 3 306 326 3299 3 306 326 3299 3 306 316 3309 3 306 316 3309 3 306 316 3309 3 306 316 3309 3 306 316 3309 3 306 316 3309 3 307 346 3279 3 307 346 3279 3 307 346 3279 3 307 346 3279 3 307 346 3279 3 307 346 3279 3 307 336 3289 3 307 336 3289 3 307 336 3289 3 307 336 3289 3 307 336 3289 3 307 336 3289 2 352 353 2 352 353 2 352 353 2 352 353 2 352 353 2 352 353 2 354 355 2 354 355 2 354 355 2 354 355 2 354 355 2 354 355 2 356 357 2 356 357 2 356 357 2 356 357 2 356 357 2 356 357 2 356 3269 2 356 3269 2 356 3269 2 356 3269 2 356 3269 2 356 3269 2 363 364 2 363 364 2 363 364 2 363 364 2 363 364 2 363 364 2 363 3262 2 363 3262 2 363 3262 2 363 3262 2 363 3262 2 363 3262 3 365 366 370 3 365 366 370 3 365 366 370 3 365 366 370 3 365 366 370 3 365 366 370 2 365 369 2 365 369 2 365 369 2 365 369 2 365 369 2 365 369 3 366 367 371 3 366 367 371 3 366 367 371 3 366 367 371 3 366 367 371 3 366 367 371 3 367 368 372 3 367 368 372 3 367 368 372 3 367 368 372 3 367 368 372 3 367 368 372 2 368 373 2 368 373 2 368 373 2 368 373 2 368 373 2 368 373 2 369 3256 2 369 3256 2 369 3256 2 369 3256 2 369 3256 2 369 3256 2 370 3255 2 370 3255 2 370 3255 2 370 3255 2 370 3255 2 370 3255 2 371 3254 2 371 3254 2 371 3254 2 371 3254 2 371 3254 2 371 3254 2 372 3253 2 372 3253 2 372 3253 2 372 3253 2 372 3253 2 372 3253 2 373 3252 2 373 3252 2 373 3252 2 373 3252 2 373 3252 2 373 3252 3 374 472 3251 3 374 472 3251 3 374 472 3251 3 374 472 3251 3 374 472 3251 3 374 472 3251 4 374 376 478 513 4 374 376 478 513 4 374 376 478 513 4 374 376 478 513 4 374 376 478 513 4 374 376 478 513 10 374 375 376 377 456 457 478 479 508 513 10 374 375 376 377 456 457 478 479 508 513 10 374 375 376 377 456 457 478 479 508 513 10 374 375 376 377 456 457 478 479 508 513 10 374 375 376 377 456 457 478 479 508 513 10 374 375 376 377 456 457 478 479 508 513 5 374 375 442 443 456 5 374 375 442 443 456 5 374 375 442 443 456 5 374 375 442 443 456 5 374 375 442 443 456 5 374 375 442 443 456 3 374 375 456 3 374 375 456 3 374 375 456 3 374 375 456 3 374 375 456 3 374 375 456 2 374 442 2 374 442 2 374 442 2 374 442 2 374 442 2 374 442 3 375 377 479 3 375 377 479 3 375 377 479 3 375 377 479 3 375 377 479 3 375 377 479 5 375 377 434 435 479 5 375 377 434 435 479 5 375 377 434 435 479 5 375 377 434 435 479 5 375 377 434 435 479 5 375 377 434 435 479 3 375 434 443 3 375 434 443 3 375 434 443 2 375 434 2 375 434 2 375 434 2 375 434 2 375 434 2 375 434 2 375 443 2 375 443 2 375 443 2 375 443 2 375 443 2 375 443 2 376 3249 2 376 3249 2 376 3249 2 376 3249 2 376 3249 2 376 3249 6 376 484 514 3123 3153 3249 6 376 484 514 3123 3153 3249 6 376 484 514 3123 3153 3249 6 376 484 514 3123 3153 3249 6 376 484 514 3123 3153 3249 6 376 484 514 3123 3153 3249 3 376 484 514 3 376 484 514 3 376 484 514 3 376 484 514 3 376 484 514 3 376 484 514 10 376 377 378 457 458 484 485 508 509 514 10 376 377 378 457 458 484 485 508 509 514 10 376 377 378 457 458 484 485 508 509 514 10 376 377 378 457 458 484 485 508 509 514 10 376 377 378 457 458 484 485 508 509 514 10 376 377 378 457 458 484 485 508 509 514 4 376 377 457 508 4 376 377 457 508 4 376 377 457 508 4 376 377 457 508 4 376 377 457 508 4 376 377 457 508 3 377 378 485 3 377 378 485 3 377 378 485 3 377 378 485 3 377 378 485 3 377 378 485 5 377 378 435 436 485 5 377 378 435 436 485 5 377 378 435 436 485 5 377 378 435 436 485 5 377 378 435 436 485 5 377 378 435 436 485 2 377 435 2 377 435 2 377 435 2 377 435 2 377 435 2 377 435 3 378 458 509 3 378 458 509 3 378 458 509 3 378 458 509 3 378 458 509 3 378 458 509 7 378 379 458 459 489 509 510 7 378 379 458 459 489 509 510 7 378 379 458 459 489 509 510 7 378 379 458 459 489 509 510 7 378 379 458 459 489 509 510 7 378 379 458 459 489 509 510 3 378 379 489 3 378 379 489 3 378 379 489 3 378 379 489 3 378 379 489 3 378 379 489 5 378 379 436 437 489 5 378 379 436 437 489 5 378 379 436 437 489 5 378 379 436 437 489 5 378 379 436 437 489 5 378 379 436 437 489 2 378 436 2 378 436 2 378 436 2 378 436 2 378 436 2 378 436 3 379 459 510 3 379 459 510 3 379 459 510 3 379 459 510 3 379 459 510 3 379 459 510 10 379 380 381 459 460 494 495 510 511 515 10 379 380 381 459 460 494 495 510 511 515 10 379 380 381 459 460 494 495 510 511 515 10 379 380 381 459 460 494 495 510 511 515 10 379 380 381 459 460 494 495 510 511 515 10 379 380 381 459 460 494 495 510 511 515 3 379 381 495 3 379 381 495 3 379 381 495 3 379 381 495 3 379 381 495 3 379 381 495 5 379 381 437 438 495 5 379 381 437 438 495 5 379 381 437 438 495 5 379 381 437 438 495 5 379 381 437 438 495 5 379 381 437 438 495 2 379 437 2 379 437 2 379 437 2 379 437 2 379 437 2 379 437 7 380 473 494 515 3122 3143 3245 7 380 473 494 515 3122 3143 3245 7 380 473 494 515 3122 3143 3245 7 380 473 494 515 3122 3143 3245 7 380 473 494 515 3122 3143 3245 7 380 473 494 515 3122 3143 3245 3 380 473 3245 3 380 473 3245 3 380 473 3245 3 380 473 3245 3 380 473 3245 3 380 473 3245 7 380 473 502 516 3121 3135 3245 7 380 473 502 516 3121 3135 3245 7 380 473 502 516 3121 3135 3245 7 380 473 502 516 3121 3135 3245 7 380 473 502 516 3121 3135 3245 7 380 473 502 516 3121 3135 3245 3 380 502 516 3 380 502 516 3 380 502 516 3 380 502 516 3 380 502 516 3 380 502 516 10 380 381 382 460 461 502 503 511 512 516 10 380 381 382 460 461 502 503 511 512 516 10 380 381 382 460 461 502 503 511 512 516 10 380 381 382 460 461 502 503 511 512 516 10 380 381 382 460 461 502 503 511 512 516 10 380 381 382 460 461 502 503 511 512 516 4 380 381 460 511 4 380 381 460 511 4 380 381 460 511 4 380 381 460 511 4 380 381 460 511 4 380 381 460 511 3 380 494 515 3 380 494 515 3 380 494 515 3 380 494 515 3 380 494 515 3 380 494 515 3 381 382 503 3 381 382 503 3 381 382 503 3 381 382 503 3 381 382 503 3 381 382 503 5 381 382 438 439 503 5 381 382 438 439 503 5 381 382 438 439 503 5 381 382 438 439 503 5 381 382 438 439 503 5 381 382 438 439 503 2 381 438 2 381 438 2 381 438 2 381 438 2 381 438 2 381 438 3 382 461 512 3 382 461 512 3 382 461 512 3 382 461 512 3 382 461 512 3 382 461 512 7 382 461 507 512 517 1270 1716 7 382 461 507 512 517 1270 1716 7 382 461 507 512 517 1270 1716 7 382 461 507 512 517 1270 1716 7 382 461 507 512 517 1270 1716 7 382 461 507 512 517 1270 1716 3 382 507 517 3 382 507 517 3 382 507 517 3 382 507 517 3 382 507 517 3 382 507 517 5 382 439 507 517 1054 5 382 439 507 517 1054 5 382 439 507 517 1054 5 382 439 507 517 1054 5 382 439 507 517 1054 5 382 439 507 517 1054 2 382 439 2 382 439 2 382 439 2 382 439 2 382 439 2 382 439 4 383 470 472 3242 4 383 470 472 3242 4 383 470 472 3242 4 383 470 472 3242 4 383 470 472 3242 4 383 470 472 3242 4 383 385 475 478 4 383 385 475 478 4 383 385 475 478 4 383 385 475 478 4 383 385 475 478 4 383 385 475 478 13 383 384 385 386 450 451 456 457 475 476 477 478 479 13 383 384 385 386 450 451 456 457 475 476 477 478 479 13 383 384 385 386 450 451 456 457 475 476 477 478 479 13 383 384 385 386 450 451 456 457 475 476 477 478 479 13 383 384 385 386 450 451 456 457 475 476 477 478 479 13 383 384 385 386 450 451 456 457 475 476 477 478 479 8 383 384 440 441 442 443 450 456 8 383 384 440 441 442 443 450 456 8 383 384 440 441 442 443 450 456 8 383 384 440 441 442 443 450 456 8 383 384 440 441 442 443 450 456 8 383 384 440 441 442 443 450 456 4 383 384 450 456 4 383 384 450 456 4 383 384 450 456 4 383 384 450 456 4 383 384 450 456 4 383 384 450 456 3 383 440 442 3 383 440 442 3 383 440 442 3 383 440 442 3 383 440 442 3 383 440 442 4 384 386 477 479 4 384 386 477 479 4 384 386 477 479 4 384 386 477 479 4 384 386 477 479 4 384 386 477 479 8 384 386 428 429 434 435 477 479 8 384 386 428 429 434 435 477 479 8 384 386 428 429 434 435 477 479 8 384 386 428 429 434 435 477 479 8 384 386 428 429 434 435 477 479 8 384 386 428 429 434 435 477 479 5 384 428 434 441 443 5 384 428 434 441 443 5 384 428 434 441 443 5 384 428 434 441 443 5 384 428 434 441 443 5 384 428 434 441 443 3 384 428 434 3 384 428 434 3 384 428 434 3 384 428 434 3 384 428 434 3 384 428 434 3 384 441 443 3 384 441 443 3 384 441 443 3 384 441 443 3 384 441 443 3 384 441 443 2 385 3240 2 385 3240 2 385 3240 2 385 3240 2 385 3240 2 385 3240 6 385 482 484 3153 3155 3240 6 385 482 484 3153 3155 3240 6 385 482 484 3153 3155 3240 6 385 482 484 3153 3155 3240 6 385 482 484 3153 3155 3240 6 385 482 484 3153 3155 3240 3 385 482 484 3 385 482 484 3 385 482 484 3 385 482 484 3 385 482 484 3 385 482 484 11 385 386 387 451 452 457 458 482 483 484 485 11 385 386 387 451 452 457 458 482 483 484 485 11 385 386 387 451 452 457 458 482 483 484 485 11 385 386 387 451 452 457 458 482 483 484 485 11 385 386 387 451 452 457 458 482 483 484 485 11 385 386 387 451 452 457 458 482 483 484 485 4 385 386 451 457 4 385 386 451 457 4 385 386 451 457 4 385 386 451 457 4 385 386 451 457 4 385 386 451 457 4 386 387 483 485 4 386 387 483 485 4 386 387 483 485 4 386 387 483 485 4 386 387 483 485 4 386 387 483 485 8 386 387 429 430 435 436 483 485 8 386 387 429 430 435 436 483 485 8 386 387 429 430 435 436 483 485 8 386 387 429 430 435 436 483 485 8 386 387 429 430 435 436 483 485 8 386 387 429 430 435 436 483 485 3 386 429 435 3 386 429 435 3 386 429 435 3 386 429 435 3 386 429 435 3 386 429 435 3 387 452 458 3 387 452 458 3 387 452 458 3 387 452 458 3 387 452 458 3 387 452 458 8 387 388 452 453 458 459 488 489 8 387 388 452 453 458 459 488 489 8 387 388 452 453 458 459 488 489 8 387 388 452 453 458 459 488 489 8 387 388 452 453 458 459 488 489 8 387 388 452 453 458 459 488 489 4 387 388 488 489 4 387 388 488 489 4 387 388 488 489 4 387 388 488 489 4 387 388 488 489 4 387 388 488 489 8 387 388 430 431 436 437 488 489 8 387 388 430 431 436 437 488 489 8 387 388 430 431 436 437 488 489 8 387 388 430 431 436 437 488 489 8 387 388 430 431 436 437 488 489 8 387 388 430 431 436 437 488 489 3 387 430 436 3 387 430 436 3 387 430 436 3 387 430 436 3 387 430 436 3 387 430 436 3 388 453 459 3 388 453 459 3 388 453 459 3 388 453 459 3 388 453 459 3 388 453 459 10 388 389 390 453 454 459 460 493 494 495 10 388 389 390 453 454 459 460 493 494 495 10 388 389 390 453 454 459 460 493 494 495 10 388 389 390 453 454 459 460 493 494 495 10 388 389 390 453 454 459 460 493 494 495 10 388 389 390 453 454 459 460 493 494 495 4 388 390 493 495 4 388 390 493 495 4 388 390 493 495 4 388 390 493 495 4 388 390 493 495 4 388 390 493 495 8 388 390 431 432 437 438 493 495 8 388 390 431 432 437 438 493 495 8 388 390 431 432 437 438 493 495 8 388 390 431 432 437 438 493 495 8 388 390 431 432 437 438 493 495 8 388 390 431 432 437 438 493 495 3 388 431 437 3 388 431 437 3 388 431 437 3 388 431 437 3 388 431 437 3 388 431 437 6 389 471 473 494 3143 3236 6 389 471 473 494 3143 3236 6 389 471 473 494 3143 3236 6 389 471 473 494 3143 3236 6 389 471 473 494 3143 3236 6 389 471 473 494 3143 3236 4 389 471 473 3236 4 389 471 473 3236 4 389 471 473 3236 4 389 471 473 3236 4 389 471 473 3236 4 389 471 473 3236 8 389 471 473 500 502 3135 3137 3236 8 389 471 473 500 502 3135 3137 3236 8 389 471 473 500 502 3135 3137 3236 8 389 471 473 500 502 3135 3137 3236 8 389 471 473 500 502 3135 3137 3236 8 389 471 473 500 502 3135 3137 3236 3 389 500 502 3 389 500 502 3 389 500 502 3 389 500 502 3 389 500 502 3 389 500 502 11 389 390 391 454 455 460 461 500 501 502 503 11 389 390 391 454 455 460 461 500 501 502 503 11 389 390 391 454 455 460 461 500 501 502 503 11 389 390 391 454 455 460 461 500 501 502 503 11 389 390 391 454 455 460 461 500 501 502 503 11 389 390 391 454 455 460 461 500 501 502 503 4 389 390 454 460 4 389 390 454 460 4 389 390 454 460 4 389 390 454 460 4 389 390 454 460 4 389 390 454 460 2 389 494 2 389 494 2 389 494 2 389 494 2 389 494 2 389 494 4 390 391 501 503 4 390 391 501 503 4 390 391 501 503 4 390 391 501 503 4 390 391 501 503 4 390 391 501 503 8 390 391 432 433 438 439 501 503 8 390 391 432 433 438 439 501 503 8 390 391 432 433 438 439 501 503 8 390 391 432 433 438 439 501 503 8 390 391 432 433 438 439 501 503 8 390 391 432 433 438 439 501 503 3 390 432 438 3 390 432 438 3 390 432 438 3 390 432 438 3 390 432 438 3 390 432 438 3 391 455 461 3 391 455 461 3 391 455 461 3 391 455 461 3 391 455 461 3 391 455 461 8 391 455 461 506 507 575 1227 1270 8 391 455 461 506 507 575 1227 1270 8 391 455 461 506 507 575 1227 1270 8 391 455 461 506 507 575 1227 1270 8 391 455 461 506 507 575 1227 1270 8 391 455 461 506 507 575 1227 1270 4 391 506 507 575 4 391 506 507 575 4 391 506 507 575 4 391 506 507 575 4 391 506 507 575 4 391 506 507 575 8 391 433 439 506 507 575 1011 1054 8 391 433 439 506 507 575 1011 1054 8 391 433 439 506 507 575 1011 1054 8 391 433 439 506 507 575 1011 1054 8 391 433 439 506 507 575 1011 1054 8 391 433 439 506 507 575 1011 1054 3 391 433 439 3 391 433 439 3 391 433 439 3 391 433 439 3 391 433 439 3 391 433 439 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 14 392 393 394 396 423 424 429 430 446 451 452 481 482 483 3 392 424 430 3 392 424 430 3 392 424 430 3 392 424 430 3 392 424 430 3 392 424 430 8 392 398 424 425 430 431 487 488 8 392 398 424 425 430 431 487 488 8 392 398 424 425 430 431 487 488 8 392 398 424 425 430 431 487 488 8 392 398 424 425 430 431 487 488 8 392 398 424 425 430 431 487 488 9 392 396 398 446 447 452 453 487 488 9 392 396 398 446 447 452 453 487 488 9 392 396 398 446 447 452 453 487 488 9 392 396 398 446 447 452 453 487 488 9 392 396 398 446 447 452 453 487 488 9 392 396 398 446 447 452 453 487 488 4 392 398 487 488 4 392 398 487 488 4 392 398 487 488 4 392 398 487 488 4 392 398 487 488 4 392 398 487 488 4 392 396 446 452 4 392 396 446 452 4 392 396 446 452 4 392 396 446 452 4 392 396 446 452 4 392 396 446 452 9 393 394 395 397 422 423 474 475 476 9 393 394 395 397 422 423 474 475 476 9 393 394 395 397 422 423 474 475 476 9 393 394 395 397 422 423 474 475 476 9 393 394 395 397 422 423 474 475 476 9 393 394 395 397 422 423 474 475 476 3 393 395 476 3 393 395 476 3 393 395 476 3 393 395 476 3 393 395 476 3 393 395 476 8 393 395 428 429 450 451 476 477 8 393 395 428 429 450 451 476 477 8 393 395 428 429 450 451 476 477 8 393 395 428 429 450 451 476 477 8 393 395 428 429 450 451 476 477 8 393 395 428 429 450 451 476 477 3 393 429 451 3 393 429 451 3 393 429 451 3 393 429 451 3 393 429 451 3 393 429 451 3 393 394 423 3 393 394 423 3 393 394 423 3 393 394 423 3 393 394 423 3 393 394 423 4 394 397 474 475 4 394 397 474 475 4 394 397 474 475 4 394 397 474 475 4 394 397 474 475 4 394 397 474 475 10 394 396 480 481 482 3155 3156 3157 3229 3231 10 394 396 480 481 482 3155 3156 3157 3229 3231 10 394 396 480 481 482 3155 3156 3157 3229 3231 10 394 396 480 481 482 3155 3156 3157 3229 3231 10 394 396 480 481 482 3155 3156 3157 3229 3231 10 394 396 480 481 482 3155 3156 3157 3229 3231 4 394 396 481 482 4 394 396 481 482 4 394 396 481 482 4 394 396 481 482 4 394 396 481 482 4 394 396 481 482 2 394 3231 2 394 3231 2 394 3231 2 394 3231 2 394 3231 2 394 3231 2 395 440 2 395 440 2 395 440 2 395 440 2 395 440 2 395 440 5 395 428 440 441 450 5 395 428 440 441 450 5 395 428 440 441 450 5 395 428 440 441 450 5 395 428 440 441 450 5 395 428 440 441 450 3 395 428 450 3 395 428 450 3 395 428 450 3 395 428 450 3 395 428 450 3 395 428 450 3 395 397 422 3 395 397 422 3 395 397 422 3 395 397 422 3 395 397 422 3 395 397 422 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 2 396 3229 1 396 1 396 1 396 1 396 1 396 1 396 4 397 468 470 3228 4 397 468 470 3228 4 397 468 470 3228 4 397 468 470 3228 4 397 468 470 3228 4 397 468 470 3228 3 398 447 453 3 398 447 453 3 398 447 453 3 398 447 453 3 398 447 453 3 398 447 453 8 398 399 447 448 453 454 492 493 8 398 399 447 448 453 454 492 493 8 398 399 447 448 453 454 492 493 8 398 399 447 448 453 454 492 493 8 398 399 447 448 453 454 492 493 8 398 399 447 448 453 454 492 493 4 398 399 492 493 4 398 399 492 493 4 398 399 492 493 4 398 399 492 493 4 398 399 492 493 4 398 399 492 493 8 398 399 425 426 431 432 492 493 8 398 399 425 426 431 432 492 493 8 398 399 425 426 431 432 492 493 8 398 399 425 426 431 432 492 493 8 398 399 425 426 431 432 492 493 8 398 399 425 426 431 432 492 493 3 398 425 431 3 398 425 431 3 398 425 431 3 398 425 431 3 398 425 431 3 398 425 431 3 399 448 454 3 399 448 454 3 399 448 454 3 399 448 454 3 399 448 454 3 399 448 454 10 399 400 448 449 454 455 498 499 500 501 10 399 400 448 449 454 455 498 499 500 501 10 399 400 448 449 454 455 498 499 500 501 10 399 400 448 449 454 455 498 499 500 501 10 399 400 448 449 454 455 498 499 500 501 10 399 400 448 449 454 455 498 499 500 501 4 399 400 499 501 4 399 400 499 501 4 399 400 499 501 4 399 400 499 501 4 399 400 499 501 4 399 400 499 501 8 399 400 426 427 432 433 499 501 8 399 400 426 427 432 433 499 501 8 399 400 426 427 432 433 499 501 8 399 400 426 427 432 433 499 501 8 399 400 426 427 432 433 499 501 8 399 400 426 427 432 433 499 501 3 399 426 432 3 399 426 432 3 399 426 432 3 399 426 432 3 399 426 432 3 399 426 432 3 400 449 455 3 400 449 455 3 400 449 455 3 400 449 455 3 400 449 455 3 400 449 455 8 400 449 455 505 506 633 1184 1227 8 400 449 455 505 506 633 1184 1227 8 400 449 455 505 506 633 1184 1227 8 400 449 455 505 506 633 1184 1227 8 400 449 455 505 506 633 1184 1227 8 400 449 455 505 506 633 1184 1227 4 400 505 506 633 4 400 505 506 633 4 400 505 506 633 4 400 505 506 633 4 400 505 506 633 4 400 505 506 633 8 400 427 433 505 506 633 968 1011 8 400 427 433 505 506 633 968 1011 8 400 427 433 505 506 633 968 1011 8 400 427 433 505 506 633 968 1011 8 400 427 433 505 506 633 968 1011 8 400 427 433 505 506 633 968 1011 3 400 427 433 3 400 427 433 3 400 427 433 3 400 427 433 3 400 427 433 3 400 427 433 2 401 423 2 401 423 2 401 423 2 401 423 2 401 423 2 401 423 9 401 402 418 423 424 445 446 480 481 9 401 402 418 423 424 445 446 480 481 9 401 402 418 423 424 445 446 480 481 9 401 402 418 423 424 445 446 480 481 9 401 402 418 423 424 445 446 480 481 9 401 402 418 423 424 445 446 480 481 9 401 402 445 466 480 3157 3180 3223 3224 9 401 402 445 466 480 3157 3180 3223 3224 9 401 402 445 466 480 3157 3180 3223 3224 9 401 402 445 466 480 3157 3180 3223 3224 9 401 402 445 466 480 3157 3180 3223 3224 9 401 402 445 466 480 3157 3180 3223 3224 4 401 402 445 480 4 401 402 445 480 4 401 402 445 480 4 401 402 445 480 4 401 402 445 480 4 401 402 445 480 2 401 3224 2 401 3224 2 401 3224 2 401 3224 2 401 3224 2 401 3224 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 3 402 466 3223 1 402 1 402 1 402 1 402 1 402 1 402 8 402 418 419 424 425 446 447 487 8 402 418 419 424 425 446 447 487 8 402 418 419 424 425 446 447 487 8 402 418 419 424 425 446 447 487 8 402 418 419 424 425 446 447 487 8 402 418 419 424 425 446 447 487 4 402 418 424 446 4 402 418 424 446 4 402 418 424 446 4 402 418 424 446 4 402 418 424 446 4 402 418 424 446 6 403 467 469 491 3146 3222 6 403 467 469 491 3146 3222 6 403 467 469 491 3146 3222 6 403 467 469 491 3146 3222 6 403 467 469 491 3146 3222 6 403 467 469 491 3146 3222 4 403 467 469 3222 4 403 467 469 3222 4 403 467 469 3222 4 403 467 469 3222 4 403 467 469 3222 4 403 467 469 3222 8 403 467 469 497 498 3139 3140 3222 8 403 467 469 497 498 3139 3140 3222 8 403 467 469 497 498 3139 3140 3222 8 403 467 469 497 498 3139 3140 3222 8 403 467 469 497 498 3139 3140 3222 8 403 467 469 497 498 3139 3140 3222 3 403 497 498 3 403 497 498 3 403 497 498 3 403 497 498 3 403 497 498 3 403 497 498 10 403 420 421 426 427 448 449 497 498 499 10 403 420 421 426 427 448 449 497 498 499 10 403 420 421 426 427 448 449 497 498 499 10 403 420 421 426 427 448 449 497 498 499 10 403 420 421 426 427 448 449 497 498 499 10 403 420 421 426 427 448 449 497 498 499 9 403 419 420 425 426 447 448 491 492 9 403 419 420 425 426 447 448 491 492 9 403 419 420 425 426 447 448 491 492 9 403 419 420 425 426 447 448 491 492 9 403 419 420 425 426 447 448 491 492 9 403 419 420 425 426 447 448 491 492 4 403 420 426 448 4 403 420 426 448 4 403 420 426 448 4 403 420 426 448 4 403 420 426 448 4 403 420 426 448 2 403 491 2 403 491 2 403 491 2 403 491 2 403 491 2 403 491 8 404 444 445 462 466 3180 3181 3221 8 404 444 445 462 466 3180 3181 3221 8 404 444 445 462 466 3180 3181 3221 8 404 444 445 462 466 3180 3181 3221 8 404 444 445 462 466 3180 3181 3221 8 404 444 445 462 466 3180 3181 3221 4 404 462 466 3221 4 404 462 466 3221 4 404 462 466 3221 4 404 462 466 3221 4 404 462 466 3221 4 404 462 466 3221 9 404 405 462 463 466 486 3151 3220 3221 9 404 405 462 463 466 486 3151 3220 3221 9 404 405 462 463 466 486 3151 3220 3221 9 404 405 462 463 466 486 3151 3220 3221 9 404 405 462 463 466 486 3151 3220 3221 9 404 405 462 463 466 486 3151 3220 3221 3 404 405 486 3 404 405 486 3 404 405 486 3 404 405 486 3 404 405 486 3 404 405 486 7 404 405 414 415 418 419 486 7 404 405 414 415 418 419 486 7 404 405 414 415 418 419 486 7 404 405 414 415 418 419 486 7 404 405 414 415 418 419 486 7 404 405 414 415 418 419 486 5 404 414 418 444 445 5 404 414 418 444 445 5 404 414 418 444 445 5 404 414 418 444 445 5 404 414 418 444 445 5 404 414 418 444 445 3 404 414 418 3 404 414 418 3 404 414 418 3 404 414 418 3 404 414 418 3 404 414 418 3 404 444 445 3 404 444 445 3 404 444 445 3 404 444 445 3 404 444 445 3 404 444 445 3 405 463 3220 3 405 463 3220 3 405 463 3220 3 405 463 3220 3 405 463 3220 3 405 463 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 11 405 406 463 464 467 490 491 3146 3147 3219 3220 4 405 406 490 491 4 405 406 490 491 4 405 406 490 491 4 405 406 490 491 4 405 406 490 491 4 405 406 490 491 8 405 406 415 416 419 420 490 491 8 405 406 415 416 419 420 490 491 8 405 406 415 416 419 420 490 491 8 405 406 415 416 419 420 490 491 8 405 406 415 416 419 420 490 491 8 405 406 415 416 419 420 490 491 3 405 415 419 3 405 415 419 3 405 415 419 3 405 415 419 3 405 415 419 3 405 415 419 4 406 464 467 3219 4 406 464 467 3219 4 406 464 467 3219 4 406 464 467 3219 4 406 464 467 3219 4 406 464 467 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 11 406 407 464 465 467 496 497 3140 3141 3218 3219 4 406 407 496 497 4 406 407 496 497 4 406 407 496 497 4 406 407 496 497 4 406 407 496 497 4 406 407 496 497 8 406 407 416 417 420 421 496 497 8 406 407 416 417 420 421 496 497 8 406 407 416 417 420 421 496 497 8 406 407 416 417 420 421 496 497 8 406 407 416 417 420 421 496 497 8 406 407 416 417 420 421 496 497 3 406 416 420 3 406 416 420 3 406 416 420 3 406 416 420 3 406 416 420 3 406 416 420 3 407 465 3218 3 407 465 3218 3 407 465 3218 3 407 465 3218 3 407 465 3218 3 407 465 3218 8 407 465 504 876 1313 2761 3133 3218 8 407 465 504 876 1313 2761 3133 3218 8 407 465 504 876 1313 2761 3133 3218 8 407 465 504 876 1313 2761 3133 3218 8 407 465 504 876 1313 2761 3133 3218 8 407 465 504 876 1313 2761 3133 3218 3 407 504 876 3 407 504 876 3 407 504 876 3 407 504 876 3 407 504 876 3 407 504 876 10 407 417 421 504 876 877 882 925 1098 1141 10 407 417 421 504 876 877 882 925 1098 1141 10 407 417 421 504 876 877 882 925 1098 1141 10 407 417 421 504 876 877 882 925 1098 1141 10 407 417 421 504 876 877 882 925 1098 1141 10 407 417 421 504 876 877 882 925 1098 1141 3 407 417 421 3 407 417 421 3 407 417 421 3 407 417 421 3 407 417 421 3 407 417 421 3 408 462 3217 3 408 462 3217 3 408 462 3217 3 408 462 3217 3 408 462 3217 3 408 462 3217 8 408 409 462 463 486 3151 3216 3217 8 408 409 462 463 486 3151 3216 3217 8 408 409 462 463 486 3151 3216 3217 8 408 409 462 463 486 3151 3216 3217 8 408 409 462 463 486 3151 3216 3217 8 408 409 462 463 486 3151 3216 3217 3 408 409 486 3 408 409 486 3 408 409 486 3 408 409 486 3 408 409 486 3 408 409 486 5 408 409 414 415 486 5 408 409 414 415 486 5 408 409 414 415 486 5 408 409 414 415 486 5 408 409 414 415 486 5 408 409 414 415 486 3 408 414 444 3 408 414 444 3 408 414 444 3 408 414 444 3 408 414 444 3 408 414 444 2 408 414 2 408 414 2 408 414 2 408 414 2 408 414 2 408 414 2 408 444 2 408 444 2 408 444 2 408 444 2 408 444 2 408 444 3 409 463 3216 3 409 463 3216 3 409 463 3216 3 409 463 3216 3 409 463 3216 3 409 463 3216 8 409 410 463 464 490 3147 3215 3216 8 409 410 463 464 490 3147 3215 3216 8 409 410 463 464 490 3147 3215 3216 8 409 410 463 464 490 3147 3215 3216 8 409 410 463 464 490 3147 3215 3216 8 409 410 463 464 490 3147 3215 3216 3 409 410 490 3 409 410 490 3 409 410 490 3 409 410 490 3 409 410 490 3 409 410 490 5 409 410 415 416 490 5 409 410 415 416 490 5 409 410 415 416 490 5 409 410 415 416 490 5 409 410 415 416 490 5 409 410 415 416 490 2 409 415 2 409 415 2 409 415 2 409 415 2 409 415 2 409 415 3 410 464 3215 3 410 464 3215 3 410 464 3215 3 410 464 3215 3 410 464 3215 3 410 464 3215 8 410 411 464 465 496 3141 3214 3215 8 410 411 464 465 496 3141 3214 3215 8 410 411 464 465 496 3141 3214 3215 8 410 411 464 465 496 3141 3214 3215 8 410 411 464 465 496 3141 3214 3215 8 410 411 464 465 496 3141 3214 3215 3 410 411 496 3 410 411 496 3 410 411 496 3 410 411 496 3 410 411 496 3 410 411 496 5 410 411 416 417 496 5 410 411 416 417 496 5 410 411 416 417 496 5 410 411 416 417 496 5 410 411 416 417 496 5 410 411 416 417 496 2 410 416 2 410 416 2 410 416 2 410 416 2 410 416 2 410 416 3 411 465 3214 3 411 465 3214 3 411 465 3214 3 411 465 3214 3 411 465 3214 3 411 465 3214 8 411 465 504 820 1313 2817 3133 3214 8 411 465 504 820 1313 2817 3133 3214 8 411 465 504 820 1313 2817 3133 3214 8 411 465 504 820 1313 2817 3133 3214 8 411 465 504 820 1313 2817 3133 3214 8 411 465 504 820 1313 2817 3133 3214 3 411 504 820 3 411 504 820 3 411 504 820 3 411 504 820 3 411 504 820 3 411 504 820 6 411 417 504 820 882 1098 6 411 417 504 820 882 1098 6 411 417 504 820 882 1098 6 411 417 504 820 882 1098 6 411 417 504 820 882 1098 6 411 417 504 820 882 1098 2 411 417 2 411 417 2 411 417 2 411 417 2 411 417 2 411 417 4 412 513 3124 3213 4 412 513 3124 3213 4 412 513 3124 3213 4 412 513 3124 3213 4 412 513 3124 3213 4 412 513 3124 3213 2 412 3213 2 412 3213 2 412 3213 2 412 3213 2 412 3213 2 412 3213 4 412 514 3123 3213 4 412 514 3123 3213 4 412 514 3123 3213 4 412 514 3123 3213 4 412 514 3123 3213 4 412 514 3123 3213 2 412 514 2 412 514 2 412 514 2 412 514 2 412 514 2 412 514 2 412 513 2 412 513 2 412 513 2 412 513 2 412 513 2 412 513 4 413 515 3122 3212 4 413 515 3122 3212 4 413 515 3122 3212 4 413 515 3122 3212 4 413 515 3122 3212 4 413 515 3122 3212 2 413 3212 2 413 3212 2 413 3212 2 413 3212 2 413 3212 2 413 3212 4 413 516 3121 3212 4 413 516 3121 3212 4 413 516 3121 3212 4 413 516 3121 3212 4 413 516 3121 3212 4 413 516 3121 3212 2 413 516 2 413 516 2 413 516 2 413 516 2 413 516 2 413 516 2 413 515 2 413 515 2 413 515 2 413 515 2 413 515 2 413 515 2 414 444 2 414 444 2 414 444 2 414 444 2 414 444 2 414 444 3 414 415 486 3 414 415 486 3 414 415 486 3 414 415 486 3 414 415 486 3 414 415 486 3 415 416 490 3 415 416 490 3 415 416 490 3 415 416 490 3 415 416 490 3 415 416 490 3 416 417 496 3 416 417 496 3 416 417 496 3 416 417 496 3 416 417 496 3 416 417 496 4 417 504 882 1098 4 417 504 882 1098 4 417 504 882 1098 4 417 504 882 1098 4 417 504 882 1098 4 417 504 882 1098 2 418 445 2 418 445 2 418 445 2 418 445 2 418 445 2 418 445 2 418 419 2 418 419 2 418 419 2 418 419 2 418 419 2 418 419 3 419 425 447 3 419 425 447 3 419 425 447 3 419 425 447 3 419 425 447 3 419 425 447 3 419 420 491 3 419 420 491 3 419 420 491 3 419 420 491 3 419 420 491 3 419 420 491 3 420 421 497 3 420 421 497 3 420 421 497 3 420 421 497 3 420 421 497 3 420 421 497 3 421 427 449 3 421 427 449 3 421 427 449 3 421 427 449 3 421 427 449 3 421 427 449 9 421 427 449 505 878 925 968 1141 1184 9 421 427 449 505 878 925 968 1141 1184 9 421 427 449 505 878 925 968 1141 1184 9 421 427 449 505 878 925 968 1141 1184 9 421 427 449 505 878 925 968 1141 1184 9 421 427 449 505 878 925 968 1141 1184 3 421 925 1141 3 421 925 1141 3 421 925 1141 3 421 925 1141 3 421 925 1141 3 421 925 1141 3 422 468 3203 3 422 468 3203 3 422 468 3203 3 422 468 3203 3 422 468 3203 3 422 468 3203 3 422 423 474 3 422 423 474 3 422 423 474 3 422 423 474 3 422 423 474 3 422 423 474 4 423 424 446 481 4 423 424 446 481 4 423 424 446 481 4 423 424 446 481 4 423 424 446 481 4 423 424 446 481 3 424 425 487 3 424 425 487 3 424 425 487 3 424 425 487 3 424 425 487 3 424 425 487 3 425 426 492 3 425 426 492 3 425 426 492 3 425 426 492 3 425 426 492 3 425 426 492 3 426 427 499 3 426 427 499 3 426 427 499 3 426 427 499 3 426 427 499 3 426 427 499 3 427 505 968 3 427 505 968 3 427 505 968 3 427 505 968 3 427 505 968 3 427 505 968 2 428 441 2 428 441 2 428 441 2 428 441 2 428 441 2 428 441 3 428 429 477 3 428 429 477 3 428 429 477 3 428 429 477 3 428 429 477 3 428 429 477 3 429 430 483 3 429 430 483 3 429 430 483 3 429 430 483 3 429 430 483 3 429 430 483 3 430 431 488 3 430 431 488 3 430 431 488 3 430 431 488 3 430 431 488 3 430 431 488 3 431 432 493 3 431 432 493 3 431 432 493 3 431 432 493 3 431 432 493 3 431 432 493 3 432 433 501 3 432 433 501 3 432 433 501 3 432 433 501 3 432 433 501 3 432 433 501 3 433 506 1011 3 433 506 1011 3 433 506 1011 3 433 506 1011 3 433 506 1011 3 433 506 1011 2 434 443 2 434 443 2 434 443 2 434 443 2 434 443 2 434 443 3 434 435 479 3 434 435 479 3 434 435 479 3 434 435 479 3 434 435 479 3 434 435 479 3 435 436 485 3 435 436 485 3 435 436 485 3 435 436 485 3 435 436 485 3 435 436 485 3 436 437 489 3 436 437 489 3 436 437 489 3 436 437 489 3 436 437 489 3 436 437 489 3 437 438 495 3 437 438 495 3 437 438 495 3 437 438 495 3 437 438 495 3 437 438 495 3 438 439 503 3 438 439 503 3 438 439 503 3 438 439 503 3 438 439 503 3 438 439 503 3 439 507 1054 3 439 507 1054 3 439 507 1054 3 439 507 1054 3 439 507 1054 3 439 507 1054 3 440 441 450 3 440 441 450 3 440 441 450 3 440 441 450 3 440 441 450 3 440 441 450 3 440 470 3185 3 440 470 3185 3 440 470 3185 3 440 470 3185 3 440 470 3185 3 440 470 3185 3 442 443 456 3 442 443 456 3 442 443 456 3 442 443 456 3 442 443 456 3 442 443 456 3 442 472 3183 3 442 472 3183 3 442 472 3183 3 442 472 3183 3 442 472 3183 3 442 472 3183 3 444 462 3181 3 444 462 3181 3 444 462 3181 3 444 462 3181 3 444 462 3181 3 444 462 3181 3 445 466 3180 3 445 466 3180 3 445 466 3180 3 445 466 3180 3 445 466 3180 3 445 466 3180 3 446 447 487 3 446 447 487 3 446 447 487 3 446 447 487 3 446 447 487 3 446 447 487 3 447 448 492 3 447 448 492 3 447 448 492 3 447 448 492 3 447 448 492 3 447 448 492 4 448 449 498 499 4 448 449 498 499 4 448 449 498 499 4 448 449 498 499 4 448 449 498 499 4 448 449 498 499 3 449 505 1184 3 449 505 1184 3 449 505 1184 3 449 505 1184 3 449 505 1184 3 449 505 1184 4 450 451 476 477 4 450 451 476 477 4 450 451 476 477 4 450 451 476 477 4 450 451 476 477 4 450 451 476 477 4 451 452 482 483 4 451 452 482 483 4 451 452 482 483 4 451 452 482 483 4 451 452 482 483 4 451 452 482 483 3 452 453 488 3 452 453 488 3 452 453 488 3 452 453 488 3 452 453 488 3 452 453 488 3 453 454 493 3 453 454 493 3 453 454 493 3 453 454 493 3 453 454 493 3 453 454 493 4 454 455 500 501 4 454 455 500 501 4 454 455 500 501 4 454 455 500 501 4 454 455 500 501 4 454 455 500 501 3 455 506 1227 3 455 506 1227 3 455 506 1227 3 455 506 1227 3 455 506 1227 3 455 506 1227 4 456 457 478 479 4 456 457 478 479 4 456 457 478 479 4 456 457 478 479 4 456 457 478 479 4 456 457 478 479 4 457 458 484 485 4 457 458 484 485 4 457 458 484 485 4 457 458 484 485 4 457 458 484 485 4 457 458 484 485 3 458 459 489 3 458 459 489 3 458 459 489 3 458 459 489 3 458 459 489 3 458 459 489 4 459 460 494 495 4 459 460 494 495 4 459 460 494 495 4 459 460 494 495 4 459 460 494 495 4 459 460 494 495 4 460 461 502 503 4 460 461 502 503 4 460 461 502 503 4 460 461 502 503 4 460 461 502 503 4 460 461 502 503 3 461 507 1270 3 461 507 1270 3 461 507 1270 3 461 507 1270 3 461 507 1270 3 461 507 1270 4 462 463 486 3151 4 462 463 486 3151 4 462 463 486 3151 4 462 463 486 3151 4 462 463 486 3151 4 462 463 486 3151 4 463 464 490 3147 4 463 464 490 3147 4 463 464 490 3147 4 463 464 490 3147 4 463 464 490 3147 4 463 464 490 3147 4 464 465 496 3141 4 464 465 496 3141 4 464 465 496 3141 4 464 465 496 3141 4 464 465 496 3141 4 464 465 496 3141 4 465 504 1313 3133 4 465 504 1313 3133 4 465 504 1313 3133 4 465 504 1313 3133 4 465 504 1313 3133 4 465 504 1313 3133 1 466 1 466 1 466 1 466 1 466 1 466 3 467 491 3146 3 467 491 3146 3 467 491 3146 3 467 491 3146 3 467 491 3146 3 467 491 3146 3 467 497 3140 3 467 497 3140 3 467 497 3140 3 467 497 3140 3 467 497 3140 3 467 497 3140 3 468 474 3163 3 468 474 3163 3 468 474 3163 3 468 474 3163 3 468 474 3163 3 468 474 3163 2 469 471 2 469 471 2 469 471 2 469 471 2 469 471 2 469 471 1 469 1 469 1 469 1 469 1 469 1 469 2 469 471 2 469 471 2 469 471 2 469 471 2 469 471 2 469 471 6 469 471 498 500 3137 3139 6 469 471 498 500 3137 3139 6 469 471 498 500 3137 3139 6 469 471 498 500 3137 3139 6 469 471 498 500 3137 3139 6 469 471 498 500 3137 3139 3 469 498 3139 3 469 498 3139 3 469 498 3139 3 469 498 3139 3 469 498 3139 3 469 498 3139 3 470 475 3162 3 470 475 3162 3 470 475 3162 3 470 475 3162 3 470 475 3162 3 470 475 3162 1 471 1 471 1 471 1 471 1 471 1 471 3 471 500 3137 3 471 500 3137 3 471 500 3137 3 471 500 3137 3 471 500 3137 3 471 500 3137 3 472 478 3159 3 472 478 3159 3 472 478 3159 3 472 478 3159 3 472 478 3159 3 472 478 3159 3 473 494 3143 3 473 494 3143 3 473 494 3143 3 473 494 3143 3 473 494 3143 3 473 494 3143 3 473 502 3135 3 473 502 3135 3 473 502 3135 3 473 502 3135 3 473 502 3135 3 473 502 3135 2 475 476 2 475 476 2 475 476 2 475 476 2 475 476 2 475 476 2 480 481 2 480 481 2 480 481 2 480 481 2 480 481 2 480 481 2 480 3157 2 480 3157 2 480 3157 2 480 3157 2 480 3157 2 480 3157 2 482 3155 2 482 3155 2 482 3155 2 482 3155 2 482 3155 2 482 3155 2 484 3153 2 484 3153 2 484 3153 2 484 3153 2 484 3153 2 484 3153 2 498 500 2 498 500 2 498 500 2 498 500 2 498 500 2 498 500 2 508 513 2 508 513 2 508 513 2 508 513 2 508 513 2 508 513 3 508 509 514 3 508 509 514 3 508 509 514 3 508 509 514 3 508 509 514 3 508 509 514 2 509 510 2 509 510 2 509 510 2 509 510 2 509 510 2 509 510 3 510 511 515 3 510 511 515 3 510 511 515 3 510 511 515 3 510 511 515 3 510 511 515 3 511 512 516 3 511 512 516 3 511 512 516 3 511 512 516 3 511 512 516 3 511 512 516 2 512 1716 2 512 1716 2 512 1716 2 512 1716 2 512 1716 2 512 1716 2 513 3124 2 513 3124 2 513 3124 2 513 3124 2 513 3124 2 513 3124 2 514 3123 2 514 3123 2 514 3123 2 514 3123 2 514 3123 2 514 3123 2 515 3122 2 515 3122 2 515 3122 2 515 3122 2 515 3122 2 515 3122 2 516 3121 2 516 3121 2 516 3121 2 516 3121 2 516 3121 2 516 3121 3 517 1270 1716 3 517 1270 1716 3 517 1270 1716 3 517 1270 1716 3 517 1270 1716 3 517 1270 1716 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 11 517 518 525 527 1270 1271 1406 1407 1716 1717 1759 3 517 518 1407 3 517 518 1407 3 517 518 1407 3 517 518 1407 3 517 518 1407 3 517 518 1407 5 517 518 1054 1055 1407 5 517 518 1054 1055 1407 5 517 518 1054 1055 1407 5 517 518 1054 1055 1407 5 517 518 1054 1055 1407 5 517 518 1054 1055 1407 2 517 1054 2 517 1054 2 517 1054 2 517 1054 2 517 1054 2 517 1054 4 518 525 1271 1717 4 518 525 1271 1717 4 518 525 1271 1717 4 518 525 1271 1717 4 518 525 1271 1717 4 518 525 1271 1717 9 518 520 522 525 1271 1272 1413 1717 1718 9 518 520 522 525 1271 1272 1413 1717 1718 9 518 520 522 525 1271 1272 1413 1717 1718 9 518 520 522 525 1271 1272 1413 1717 1718 9 518 520 522 525 1271 1272 1413 1717 1718 9 518 520 522 525 1271 1272 1413 1717 1718 3 518 520 1413 3 518 520 1413 3 518 520 1413 3 518 520 1413 3 518 520 1413 3 518 520 1413 5 518 520 1055 1056 1413 5 518 520 1055 1056 1413 5 518 520 1055 1056 1413 5 518 520 1055 1056 1413 5 518 520 1055 1056 1413 5 518 520 1055 1056 1413 2 518 1055 2 518 1055 2 518 1055 2 518 1055 2 518 1055 2 518 1055 9 519 520 521 522 1272 1273 1419 1718 1719 9 519 520 521 522 1272 1273 1419 1718 1719 9 519 520 521 522 1272 1273 1419 1718 1719 9 519 520 521 522 1272 1273 1419 1718 1719 9 519 520 521 522 1272 1273 1419 1718 1719 9 519 520 521 522 1272 1273 1419 1718 1719 4 519 521 1273 1719 4 519 521 1273 1719 4 519 521 1273 1719 4 519 521 1273 1719 4 519 521 1273 1719 4 519 521 1273 1719 9 519 521 523 1273 1274 1425 1719 1720 1863 9 519 521 523 1273 1274 1425 1719 1720 1863 9 519 521 523 1273 1274 1425 1719 1720 1863 9 519 521 523 1273 1274 1425 1719 1720 1863 9 519 521 523 1273 1274 1425 1719 1720 1863 9 519 521 523 1273 1274 1425 1719 1720 1863 2 519 522 2 519 522 2 519 522 2 519 522 2 519 522 2 519 522 1 519 1 519 1 519 1 519 1 519 1 519 2 519 1863 2 519 1863 2 519 1863 2 519 1863 2 519 1863 2 519 1863 4 520 522 1272 1718 4 520 522 1272 1718 4 520 522 1272 1718 4 520 522 1272 1718 4 520 522 1272 1718 4 520 522 1272 1718 3 520 521 1419 3 520 521 1419 3 520 521 1419 3 520 521 1419 3 520 521 1419 3 520 521 1419 5 520 521 1056 1057 1419 5 520 521 1056 1057 1419 5 520 521 1056 1057 1419 5 520 521 1056 1057 1419 5 520 521 1056 1057 1419 5 520 521 1056 1057 1419 2 520 1056 2 520 1056 2 520 1056 2 520 1056 2 520 1056 2 520 1056 3 521 523 1425 3 521 523 1425 3 521 523 1425 3 521 523 1425 3 521 523 1425 3 521 523 1425 5 521 523 1057 1058 1425 5 521 523 1057 1058 1425 5 521 523 1057 1058 1425 5 521 523 1057 1058 1425 5 521 523 1057 1058 1425 5 521 523 1057 1058 1425 2 521 1057 2 521 1057 2 521 1057 2 521 1057 2 521 1057 2 521 1057 2 522 525 2 522 525 2 522 525 2 522 525 2 522 525 2 522 525 1 522 1 522 1 522 1 522 1 522 1 522 4 523 1274 1720 1863 4 523 1274 1720 1863 4 523 1274 1720 1863 4 523 1274 1720 1863 4 523 1274 1720 1863 4 523 1274 1720 1863 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 12 523 524 1274 1275 1431 1720 1721 1797 1800 1834 1863 1864 4 523 524 1431 1797 4 523 524 1431 1797 4 523 524 1431 1797 4 523 524 1431 1797 4 523 524 1431 1797 4 523 524 1431 1797 7 523 524 1058 1059 1431 1797 1845 7 523 524 1058 1059 1431 1797 1845 7 523 524 1058 1059 1431 1797 1845 7 523 524 1058 1059 1431 1797 1845 7 523 524 1058 1059 1431 1797 1845 7 523 524 1058 1059 1431 1797 1845 2 523 1058 2 523 1058 2 523 1058 2 523 1058 2 523 1058 2 523 1058 5 524 1275 1721 1834 1864 5 524 1275 1721 1834 1864 5 524 1275 1721 1834 1864 5 524 1275 1721 1834 1864 5 524 1275 1721 1834 1864 5 524 1275 1721 1834 1864 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 13 524 526 1275 1276 1437 1721 1722 1808 1809 1834 1835 1864 1865 4 524 526 1437 1809 4 524 526 1437 1809 4 524 526 1437 1809 4 524 526 1437 1809 4 524 526 1437 1809 4 524 526 1437 1809 8 524 526 1059 1060 1437 1809 1845 1846 8 524 526 1059 1060 1437 1809 1845 1846 8 524 526 1059 1060 1437 1809 1845 1846 8 524 526 1059 1060 1437 1809 1845 1846 8 524 526 1059 1060 1437 1809 1845 1846 8 524 526 1059 1060 1437 1809 1845 1846 3 524 1059 1845 3 524 1059 1845 3 524 1059 1845 3 524 1059 1845 3 524 1059 1845 3 524 1059 1845 2 525 527 2 525 527 2 525 527 2 525 527 2 525 527 2 525 527 5 526 1276 1722 1835 1865 5 526 1276 1722 1835 1865 5 526 1276 1722 1835 1865 5 526 1276 1722 1835 1865 5 526 1276 1722 1835 1865 5 526 1276 1722 1835 1865 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 12 526 528 1276 1277 1443 1722 1723 1816 1817 1835 1865 1867 4 526 528 1443 1817 4 526 528 1443 1817 4 526 528 1443 1817 4 526 528 1443 1817 4 526 528 1443 1817 4 526 528 1443 1817 7 526 528 1060 1061 1443 1817 1846 7 526 528 1060 1061 1443 1817 1846 7 526 528 1060 1061 1443 1817 1846 7 526 528 1060 1061 1443 1817 1846 7 526 528 1060 1061 1443 1817 1846 7 526 528 1060 1061 1443 1817 1846 3 526 1060 1846 3 526 1060 1846 3 526 1060 1846 3 526 1060 1846 3 526 1060 1846 3 526 1060 1846 6 527 1406 1759 1965 2318 3110 6 527 1406 1759 1965 2318 3110 6 527 1406 1759 1965 2318 3110 6 527 1406 1759 1965 2318 3110 6 527 1406 1759 1965 2318 3110 6 527 1406 1759 1965 2318 3110 3 527 1406 1759 3 527 1406 1759 3 527 1406 1759 3 527 1406 1759 3 527 1406 1759 3 527 1406 1759 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 2 527 3110 1 527 1 527 1 527 1 527 1 527 1 527 4 528 1277 1723 1867 4 528 1277 1723 1867 4 528 1277 1723 1867 4 528 1277 1723 1867 4 528 1277 1723 1867 4 528 1277 1723 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 11 528 529 1277 1278 1450 1451 1723 1724 1760 1866 1867 3 528 529 1451 3 528 529 1451 3 528 529 1451 3 528 529 1451 3 528 529 1451 3 528 529 1451 5 528 529 1061 1062 1451 5 528 529 1061 1062 1451 5 528 529 1061 1062 1451 5 528 529 1061 1062 1451 5 528 529 1061 1062 1451 5 528 529 1061 1062 1451 2 528 1061 2 528 1061 2 528 1061 2 528 1061 2 528 1061 2 528 1061 3 529 1278 1724 3 529 1278 1724 3 529 1278 1724 3 529 1278 1724 3 529 1278 1724 3 529 1278 1724 7 529 530 1278 1279 1457 1724 1725 7 529 530 1278 1279 1457 1724 1725 7 529 530 1278 1279 1457 1724 1725 7 529 530 1278 1279 1457 1724 1725 7 529 530 1278 1279 1457 1724 1725 7 529 530 1278 1279 1457 1724 1725 3 529 530 1457 3 529 530 1457 3 529 530 1457 3 529 530 1457 3 529 530 1457 3 529 530 1457 5 529 530 1062 1063 1457 5 529 530 1062 1063 1457 5 529 530 1062 1063 1457 5 529 530 1062 1063 1457 5 529 530 1062 1063 1457 5 529 530 1062 1063 1457 2 529 1062 2 529 1062 2 529 1062 2 529 1062 2 529 1062 2 529 1062 3 530 1279 1725 3 530 1279 1725 3 530 1279 1725 3 530 1279 1725 3 530 1279 1725 3 530 1279 1725 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 10 530 531 532 1279 1280 1464 1465 1725 1726 1761 3 530 532 1465 3 530 532 1465 3 530 532 1465 3 530 532 1465 3 530 532 1465 3 530 532 1465 5 530 532 1063 1064 1465 5 530 532 1063 1064 1465 5 530 532 1063 1064 1465 5 530 532 1063 1064 1465 5 530 532 1063 1064 1465 5 530 532 1063 1064 1465 2 530 1063 2 530 1063 2 530 1063 2 530 1063 2 530 1063 2 530 1063 7 531 1389 1464 1761 1963 2260 3106 7 531 1389 1464 1761 1963 2260 3106 7 531 1389 1464 1761 1963 2260 3106 7 531 1389 1464 1761 1963 2260 3106 7 531 1389 1464 1761 1963 2260 3106 7 531 1389 1464 1761 1963 2260 3106 3 531 1389 3106 3 531 1389 3106 3 531 1389 3106 3 531 1389 3106 3 531 1389 3106 3 531 1389 3106 7 531 1389 1472 1762 1962 2252 3106 7 531 1389 1472 1762 1962 2252 3106 7 531 1389 1472 1762 1962 2252 3106 7 531 1389 1472 1762 1962 2252 3106 7 531 1389 1472 1762 1962 2252 3106 7 531 1389 1472 1762 1962 2252 3106 3 531 1472 1762 3 531 1472 1762 3 531 1472 1762 3 531 1472 1762 3 531 1472 1762 3 531 1472 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 10 531 532 533 1280 1281 1472 1473 1726 1727 1762 4 531 532 1280 1726 4 531 532 1280 1726 4 531 532 1280 1726 4 531 532 1280 1726 4 531 532 1280 1726 4 531 532 1280 1726 3 531 1464 1761 3 531 1464 1761 3 531 1464 1761 3 531 1464 1761 3 531 1464 1761 3 531 1464 1761 3 532 533 1473 3 532 533 1473 3 532 533 1473 3 532 533 1473 3 532 533 1473 3 532 533 1473 5 532 533 1064 1065 1473 5 532 533 1064 1065 1473 5 532 533 1064 1065 1473 5 532 533 1064 1065 1473 5 532 533 1064 1065 1473 5 532 533 1064 1065 1473 2 532 1064 2 532 1064 2 532 1064 2 532 1064 2 532 1064 2 532 1064 3 533 1281 1727 3 533 1281 1727 3 533 1281 1727 3 533 1281 1727 3 533 1281 1727 3 533 1281 1727 7 533 534 1281 1282 1479 1727 1728 7 533 534 1281 1282 1479 1727 1728 7 533 534 1281 1282 1479 1727 1728 7 533 534 1281 1282 1479 1727 1728 7 533 534 1281 1282 1479 1727 1728 7 533 534 1281 1282 1479 1727 1728 3 533 534 1479 3 533 534 1479 3 533 534 1479 3 533 534 1479 3 533 534 1479 3 533 534 1479 5 533 534 1065 1066 1479 5 533 534 1065 1066 1479 5 533 534 1065 1066 1479 5 533 534 1065 1066 1479 5 533 534 1065 1066 1479 5 533 534 1065 1066 1479 2 533 1065 2 533 1065 2 533 1065 2 533 1065 2 533 1065 2 533 1065 3 534 1282 1728 3 534 1282 1728 3 534 1282 1728 3 534 1282 1728 3 534 1282 1728 3 534 1282 1728 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 10 534 535 536 1282 1283 1488 1489 1728 1729 1763 3 534 536 1489 3 534 536 1489 3 534 536 1489 3 534 536 1489 3 534 536 1489 3 534 536 1489 5 534 536 1066 1067 1489 5 534 536 1066 1067 1489 5 534 536 1066 1067 1489 5 534 536 1066 1067 1489 5 534 536 1066 1067 1489 5 534 536 1066 1067 1489 2 534 1066 2 534 1066 2 534 1066 2 534 1066 2 534 1066 2 534 1066 7 535 1390 1488 1763 1961 2236 3102 7 535 1390 1488 1763 1961 2236 3102 7 535 1390 1488 1763 1961 2236 3102 7 535 1390 1488 1763 1961 2236 3102 7 535 1390 1488 1763 1961 2236 3102 7 535 1390 1488 1763 1961 2236 3102 3 535 1390 3102 3 535 1390 3102 3 535 1390 3102 3 535 1390 3102 3 535 1390 3102 3 535 1390 3102 7 535 1390 1498 1764 1960 2226 3102 7 535 1390 1498 1764 1960 2226 3102 7 535 1390 1498 1764 1960 2226 3102 7 535 1390 1498 1764 1960 2226 3102 7 535 1390 1498 1764 1960 2226 3102 7 535 1390 1498 1764 1960 2226 3102 3 535 1498 1764 3 535 1498 1764 3 535 1498 1764 3 535 1498 1764 3 535 1498 1764 3 535 1498 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 10 535 536 537 1283 1284 1498 1499 1729 1730 1764 4 535 536 1283 1729 4 535 536 1283 1729 4 535 536 1283 1729 4 535 536 1283 1729 4 535 536 1283 1729 4 535 536 1283 1729 3 535 1488 1763 3 535 1488 1763 3 535 1488 1763 3 535 1488 1763 3 535 1488 1763 3 535 1488 1763 3 536 537 1499 3 536 537 1499 3 536 537 1499 3 536 537 1499 3 536 537 1499 3 536 537 1499 5 536 537 1067 1068 1499 5 536 537 1067 1068 1499 5 536 537 1067 1068 1499 5 536 537 1067 1068 1499 5 536 537 1067 1068 1499 5 536 537 1067 1068 1499 2 536 1067 2 536 1067 2 536 1067 2 536 1067 2 536 1067 2 536 1067 3 537 1284 1730 3 537 1284 1730 3 537 1284 1730 3 537 1284 1730 3 537 1284 1730 3 537 1284 1730 7 537 538 1284 1285 1505 1730 1731 7 537 538 1284 1285 1505 1730 1731 7 537 538 1284 1285 1505 1730 1731 7 537 538 1284 1285 1505 1730 1731 7 537 538 1284 1285 1505 1730 1731 7 537 538 1284 1285 1505 1730 1731 3 537 538 1505 3 537 538 1505 3 537 538 1505 3 537 538 1505 3 537 538 1505 3 537 538 1505 5 537 538 1068 1069 1505 5 537 538 1068 1069 1505 5 537 538 1068 1069 1505 5 537 538 1068 1069 1505 5 537 538 1068 1069 1505 5 537 538 1068 1069 1505 2 537 1068 2 537 1068 2 537 1068 2 537 1068 2 537 1068 2 537 1068 3 538 1285 1731 3 538 1285 1731 3 538 1285 1731 3 538 1285 1731 3 538 1285 1731 3 538 1285 1731 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 10 538 539 540 1285 1286 1512 1513 1731 1732 1765 3 538 540 1513 3 538 540 1513 3 538 540 1513 3 538 540 1513 3 538 540 1513 3 538 540 1513 5 538 540 1069 1070 1513 5 538 540 1069 1070 1513 5 538 540 1069 1070 1513 5 538 540 1069 1070 1513 5 538 540 1069 1070 1513 5 538 540 1069 1070 1513 2 538 1069 2 538 1069 2 538 1069 2 538 1069 2 538 1069 2 538 1069 7 539 1391 1512 1765 1959 2212 3098 7 539 1391 1512 1765 1959 2212 3098 7 539 1391 1512 1765 1959 2212 3098 7 539 1391 1512 1765 1959 2212 3098 7 539 1391 1512 1765 1959 2212 3098 7 539 1391 1512 1765 1959 2212 3098 3 539 1391 3098 3 539 1391 3098 3 539 1391 3098 3 539 1391 3098 3 539 1391 3098 3 539 1391 3098 7 539 1391 1520 1766 1958 2204 3098 7 539 1391 1520 1766 1958 2204 3098 7 539 1391 1520 1766 1958 2204 3098 7 539 1391 1520 1766 1958 2204 3098 7 539 1391 1520 1766 1958 2204 3098 7 539 1391 1520 1766 1958 2204 3098 3 539 1520 1766 3 539 1520 1766 3 539 1520 1766 3 539 1520 1766 3 539 1520 1766 3 539 1520 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 10 539 540 541 1286 1287 1520 1521 1732 1733 1766 4 539 540 1286 1732 4 539 540 1286 1732 4 539 540 1286 1732 4 539 540 1286 1732 4 539 540 1286 1732 4 539 540 1286 1732 3 539 1512 1765 3 539 1512 1765 3 539 1512 1765 3 539 1512 1765 3 539 1512 1765 3 539 1512 1765 3 540 541 1521 3 540 541 1521 3 540 541 1521 3 540 541 1521 3 540 541 1521 3 540 541 1521 5 540 541 1070 1071 1521 5 540 541 1070 1071 1521 5 540 541 1070 1071 1521 5 540 541 1070 1071 1521 5 540 541 1070 1071 1521 5 540 541 1070 1071 1521 2 540 1070 2 540 1070 2 540 1070 2 540 1070 2 540 1070 2 540 1070 3 541 1287 1733 3 541 1287 1733 3 541 1287 1733 3 541 1287 1733 3 541 1287 1733 3 541 1287 1733 7 541 542 1287 1288 1527 1733 1734 7 541 542 1287 1288 1527 1733 1734 7 541 542 1287 1288 1527 1733 1734 7 541 542 1287 1288 1527 1733 1734 7 541 542 1287 1288 1527 1733 1734 7 541 542 1287 1288 1527 1733 1734 3 541 542 1527 3 541 542 1527 3 541 542 1527 3 541 542 1527 3 541 542 1527 3 541 542 1527 5 541 542 1071 1072 1527 5 541 542 1071 1072 1527 5 541 542 1071 1072 1527 5 541 542 1071 1072 1527 5 541 542 1071 1072 1527 5 541 542 1071 1072 1527 2 541 1071 2 541 1071 2 541 1071 2 541 1071 2 541 1071 2 541 1071 3 542 1288 1734 3 542 1288 1734 3 542 1288 1734 3 542 1288 1734 3 542 1288 1734 3 542 1288 1734 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 10 542 543 544 1288 1289 1536 1537 1734 1735 1767 3 542 544 1537 3 542 544 1537 3 542 544 1537 3 542 544 1537 3 542 544 1537 3 542 544 1537 5 542 544 1072 1073 1537 5 542 544 1072 1073 1537 5 542 544 1072 1073 1537 5 542 544 1072 1073 1537 5 542 544 1072 1073 1537 5 542 544 1072 1073 1537 2 542 1072 2 542 1072 2 542 1072 2 542 1072 2 542 1072 2 542 1072 7 543 1392 1536 1767 1957 2188 3094 7 543 1392 1536 1767 1957 2188 3094 7 543 1392 1536 1767 1957 2188 3094 7 543 1392 1536 1767 1957 2188 3094 7 543 1392 1536 1767 1957 2188 3094 7 543 1392 1536 1767 1957 2188 3094 3 543 1392 3094 3 543 1392 3094 3 543 1392 3094 3 543 1392 3094 3 543 1392 3094 3 543 1392 3094 7 543 1392 1544 1768 1956 2180 3094 7 543 1392 1544 1768 1956 2180 3094 7 543 1392 1544 1768 1956 2180 3094 7 543 1392 1544 1768 1956 2180 3094 7 543 1392 1544 1768 1956 2180 3094 7 543 1392 1544 1768 1956 2180 3094 3 543 1544 1768 3 543 1544 1768 3 543 1544 1768 3 543 1544 1768 3 543 1544 1768 3 543 1544 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 10 543 544 545 1289 1290 1544 1545 1735 1736 1768 4 543 544 1289 1735 4 543 544 1289 1735 4 543 544 1289 1735 4 543 544 1289 1735 4 543 544 1289 1735 4 543 544 1289 1735 3 543 1536 1767 3 543 1536 1767 3 543 1536 1767 3 543 1536 1767 3 543 1536 1767 3 543 1536 1767 3 544 545 1545 3 544 545 1545 3 544 545 1545 3 544 545 1545 3 544 545 1545 3 544 545 1545 5 544 545 1073 1074 1545 5 544 545 1073 1074 1545 5 544 545 1073 1074 1545 5 544 545 1073 1074 1545 5 544 545 1073 1074 1545 5 544 545 1073 1074 1545 2 544 1073 2 544 1073 2 544 1073 2 544 1073 2 544 1073 2 544 1073 3 545 1290 1736 3 545 1290 1736 3 545 1290 1736 3 545 1290 1736 3 545 1290 1736 3 545 1290 1736 7 545 546 1290 1291 1551 1736 1737 7 545 546 1290 1291 1551 1736 1737 7 545 546 1290 1291 1551 1736 1737 7 545 546 1290 1291 1551 1736 1737 7 545 546 1290 1291 1551 1736 1737 7 545 546 1290 1291 1551 1736 1737 3 545 546 1551 3 545 546 1551 3 545 546 1551 3 545 546 1551 3 545 546 1551 3 545 546 1551 5 545 546 1074 1075 1551 5 545 546 1074 1075 1551 5 545 546 1074 1075 1551 5 545 546 1074 1075 1551 5 545 546 1074 1075 1551 5 545 546 1074 1075 1551 2 545 1074 2 545 1074 2 545 1074 2 545 1074 2 545 1074 2 545 1074 3 546 1291 1737 3 546 1291 1737 3 546 1291 1737 3 546 1291 1737 3 546 1291 1737 3 546 1291 1737 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 10 546 547 548 1291 1292 1558 1559 1737 1738 1769 3 546 548 1559 3 546 548 1559 3 546 548 1559 3 546 548 1559 3 546 548 1559 3 546 548 1559 5 546 548 1075 1076 1559 5 546 548 1075 1076 1559 5 546 548 1075 1076 1559 5 546 548 1075 1076 1559 5 546 548 1075 1076 1559 5 546 548 1075 1076 1559 2 546 1075 2 546 1075 2 546 1075 2 546 1075 2 546 1075 2 546 1075 7 547 1393 1558 1769 1955 2166 3090 7 547 1393 1558 1769 1955 2166 3090 7 547 1393 1558 1769 1955 2166 3090 7 547 1393 1558 1769 1955 2166 3090 7 547 1393 1558 1769 1955 2166 3090 7 547 1393 1558 1769 1955 2166 3090 3 547 1393 3090 3 547 1393 3090 3 547 1393 3090 3 547 1393 3090 3 547 1393 3090 3 547 1393 3090 7 547 1393 1566 1770 1954 2158 3090 7 547 1393 1566 1770 1954 2158 3090 7 547 1393 1566 1770 1954 2158 3090 7 547 1393 1566 1770 1954 2158 3090 7 547 1393 1566 1770 1954 2158 3090 7 547 1393 1566 1770 1954 2158 3090 3 547 1566 1770 3 547 1566 1770 3 547 1566 1770 3 547 1566 1770 3 547 1566 1770 3 547 1566 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 10 547 548 549 1292 1293 1566 1567 1738 1739 1770 4 547 548 1292 1738 4 547 548 1292 1738 4 547 548 1292 1738 4 547 548 1292 1738 4 547 548 1292 1738 4 547 548 1292 1738 3 547 1558 1769 3 547 1558 1769 3 547 1558 1769 3 547 1558 1769 3 547 1558 1769 3 547 1558 1769 3 548 549 1567 3 548 549 1567 3 548 549 1567 3 548 549 1567 3 548 549 1567 3 548 549 1567 5 548 549 1076 1077 1567 5 548 549 1076 1077 1567 5 548 549 1076 1077 1567 5 548 549 1076 1077 1567 5 548 549 1076 1077 1567 5 548 549 1076 1077 1567 2 548 1076 2 548 1076 2 548 1076 2 548 1076 2 548 1076 2 548 1076 3 549 1293 1739 3 549 1293 1739 3 549 1293 1739 3 549 1293 1739 3 549 1293 1739 3 549 1293 1739 7 549 550 1293 1294 1573 1739 1740 7 549 550 1293 1294 1573 1739 1740 7 549 550 1293 1294 1573 1739 1740 7 549 550 1293 1294 1573 1739 1740 7 549 550 1293 1294 1573 1739 1740 7 549 550 1293 1294 1573 1739 1740 3 549 550 1573 3 549 550 1573 3 549 550 1573 3 549 550 1573 3 549 550 1573 3 549 550 1573 5 549 550 1077 1078 1573 5 549 550 1077 1078 1573 5 549 550 1077 1078 1573 5 549 550 1077 1078 1573 5 549 550 1077 1078 1573 5 549 550 1077 1078 1573 2 549 1077 2 549 1077 2 549 1077 2 549 1077 2 549 1077 2 549 1077 3 550 1294 1740 3 550 1294 1740 3 550 1294 1740 3 550 1294 1740 3 550 1294 1740 3 550 1294 1740 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 10 550 551 552 1294 1295 1582 1583 1740 1741 1771 3 550 552 1583 3 550 552 1583 3 550 552 1583 3 550 552 1583 3 550 552 1583 3 550 552 1583 5 550 552 1078 1079 1583 5 550 552 1078 1079 1583 5 550 552 1078 1079 1583 5 550 552 1078 1079 1583 5 550 552 1078 1079 1583 5 550 552 1078 1079 1583 2 550 1078 2 550 1078 2 550 1078 2 550 1078 2 550 1078 2 550 1078 7 551 1394 1582 1771 1953 2142 3086 7 551 1394 1582 1771 1953 2142 3086 7 551 1394 1582 1771 1953 2142 3086 7 551 1394 1582 1771 1953 2142 3086 7 551 1394 1582 1771 1953 2142 3086 7 551 1394 1582 1771 1953 2142 3086 3 551 1394 3086 3 551 1394 3086 3 551 1394 3086 3 551 1394 3086 3 551 1394 3086 3 551 1394 3086 7 551 1394 1590 1772 1952 2134 3086 7 551 1394 1590 1772 1952 2134 3086 7 551 1394 1590 1772 1952 2134 3086 7 551 1394 1590 1772 1952 2134 3086 7 551 1394 1590 1772 1952 2134 3086 7 551 1394 1590 1772 1952 2134 3086 3 551 1590 1772 3 551 1590 1772 3 551 1590 1772 3 551 1590 1772 3 551 1590 1772 3 551 1590 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 10 551 552 553 1295 1296 1590 1591 1741 1742 1772 4 551 552 1295 1741 4 551 552 1295 1741 4 551 552 1295 1741 4 551 552 1295 1741 4 551 552 1295 1741 4 551 552 1295 1741 3 551 1582 1771 3 551 1582 1771 3 551 1582 1771 3 551 1582 1771 3 551 1582 1771 3 551 1582 1771 3 552 553 1591 3 552 553 1591 3 552 553 1591 3 552 553 1591 3 552 553 1591 3 552 553 1591 5 552 553 1079 1080 1591 5 552 553 1079 1080 1591 5 552 553 1079 1080 1591 5 552 553 1079 1080 1591 5 552 553 1079 1080 1591 5 552 553 1079 1080 1591 2 552 1079 2 552 1079 2 552 1079 2 552 1079 2 552 1079 2 552 1079 3 553 1296 1742 3 553 1296 1742 3 553 1296 1742 3 553 1296 1742 3 553 1296 1742 3 553 1296 1742 7 553 554 1296 1297 1597 1742 1743 7 553 554 1296 1297 1597 1742 1743 7 553 554 1296 1297 1597 1742 1743 7 553 554 1296 1297 1597 1742 1743 7 553 554 1296 1297 1597 1742 1743 7 553 554 1296 1297 1597 1742 1743 3 553 554 1597 3 553 554 1597 3 553 554 1597 3 553 554 1597 3 553 554 1597 3 553 554 1597 5 553 554 1080 1081 1597 5 553 554 1080 1081 1597 5 553 554 1080 1081 1597 5 553 554 1080 1081 1597 5 553 554 1080 1081 1597 5 553 554 1080 1081 1597 2 553 1080 2 553 1080 2 553 1080 2 553 1080 2 553 1080 2 553 1080 3 554 1297 1743 3 554 1297 1743 3 554 1297 1743 3 554 1297 1743 3 554 1297 1743 3 554 1297 1743 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 10 554 555 556 1297 1298 1604 1605 1743 1744 1773 3 554 556 1605 3 554 556 1605 3 554 556 1605 3 554 556 1605 3 554 556 1605 3 554 556 1605 5 554 556 1081 1082 1605 5 554 556 1081 1082 1605 5 554 556 1081 1082 1605 5 554 556 1081 1082 1605 5 554 556 1081 1082 1605 5 554 556 1081 1082 1605 2 554 1081 2 554 1081 2 554 1081 2 554 1081 2 554 1081 2 554 1081 7 555 1395 1604 1773 1951 2120 3082 7 555 1395 1604 1773 1951 2120 3082 7 555 1395 1604 1773 1951 2120 3082 7 555 1395 1604 1773 1951 2120 3082 7 555 1395 1604 1773 1951 2120 3082 7 555 1395 1604 1773 1951 2120 3082 3 555 1395 3082 3 555 1395 3082 3 555 1395 3082 3 555 1395 3082 3 555 1395 3082 3 555 1395 3082 7 555 1395 1612 1774 1950 2112 3082 7 555 1395 1612 1774 1950 2112 3082 7 555 1395 1612 1774 1950 2112 3082 7 555 1395 1612 1774 1950 2112 3082 7 555 1395 1612 1774 1950 2112 3082 7 555 1395 1612 1774 1950 2112 3082 3 555 1612 1774 3 555 1612 1774 3 555 1612 1774 3 555 1612 1774 3 555 1612 1774 3 555 1612 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 10 555 556 557 1298 1299 1612 1613 1744 1745 1774 4 555 556 1298 1744 4 555 556 1298 1744 4 555 556 1298 1744 4 555 556 1298 1744 4 555 556 1298 1744 4 555 556 1298 1744 3 555 1604 1773 3 555 1604 1773 3 555 1604 1773 3 555 1604 1773 3 555 1604 1773 3 555 1604 1773 3 556 557 1613 3 556 557 1613 3 556 557 1613 3 556 557 1613 3 556 557 1613 3 556 557 1613 5 556 557 1082 1083 1613 5 556 557 1082 1083 1613 5 556 557 1082 1083 1613 5 556 557 1082 1083 1613 5 556 557 1082 1083 1613 5 556 557 1082 1083 1613 2 556 1082 2 556 1082 2 556 1082 2 556 1082 2 556 1082 2 556 1082 3 557 1299 1745 3 557 1299 1745 3 557 1299 1745 3 557 1299 1745 3 557 1299 1745 3 557 1299 1745 7 557 558 1299 1300 1619 1745 1746 7 557 558 1299 1300 1619 1745 1746 7 557 558 1299 1300 1619 1745 1746 7 557 558 1299 1300 1619 1745 1746 7 557 558 1299 1300 1619 1745 1746 7 557 558 1299 1300 1619 1745 1746 3 557 558 1619 3 557 558 1619 3 557 558 1619 3 557 558 1619 3 557 558 1619 3 557 558 1619 5 557 558 1083 1084 1619 5 557 558 1083 1084 1619 5 557 558 1083 1084 1619 5 557 558 1083 1084 1619 5 557 558 1083 1084 1619 5 557 558 1083 1084 1619 2 557 1083 2 557 1083 2 557 1083 2 557 1083 2 557 1083 2 557 1083 3 558 1300 1746 3 558 1300 1746 3 558 1300 1746 3 558 1300 1746 3 558 1300 1746 3 558 1300 1746 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 10 558 559 560 1300 1301 1628 1629 1746 1747 1775 3 558 560 1629 3 558 560 1629 3 558 560 1629 3 558 560 1629 3 558 560 1629 3 558 560 1629 5 558 560 1084 1085 1629 5 558 560 1084 1085 1629 5 558 560 1084 1085 1629 5 558 560 1084 1085 1629 5 558 560 1084 1085 1629 5 558 560 1084 1085 1629 2 558 1084 2 558 1084 2 558 1084 2 558 1084 2 558 1084 2 558 1084 7 559 1396 1628 1775 1949 2096 3078 7 559 1396 1628 1775 1949 2096 3078 7 559 1396 1628 1775 1949 2096 3078 7 559 1396 1628 1775 1949 2096 3078 7 559 1396 1628 1775 1949 2096 3078 7 559 1396 1628 1775 1949 2096 3078 3 559 1396 3078 3 559 1396 3078 3 559 1396 3078 3 559 1396 3078 3 559 1396 3078 3 559 1396 3078 7 559 1396 1636 1776 1948 2088 3078 7 559 1396 1636 1776 1948 2088 3078 7 559 1396 1636 1776 1948 2088 3078 7 559 1396 1636 1776 1948 2088 3078 7 559 1396 1636 1776 1948 2088 3078 7 559 1396 1636 1776 1948 2088 3078 3 559 1636 1776 3 559 1636 1776 3 559 1636 1776 3 559 1636 1776 3 559 1636 1776 3 559 1636 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 10 559 560 561 1301 1302 1636 1637 1747 1748 1776 4 559 560 1301 1747 4 559 560 1301 1747 4 559 560 1301 1747 4 559 560 1301 1747 4 559 560 1301 1747 4 559 560 1301 1747 3 559 1628 1775 3 559 1628 1775 3 559 1628 1775 3 559 1628 1775 3 559 1628 1775 3 559 1628 1775 3 560 561 1637 3 560 561 1637 3 560 561 1637 3 560 561 1637 3 560 561 1637 3 560 561 1637 5 560 561 1085 1086 1637 5 560 561 1085 1086 1637 5 560 561 1085 1086 1637 5 560 561 1085 1086 1637 5 560 561 1085 1086 1637 5 560 561 1085 1086 1637 2 560 1085 2 560 1085 2 560 1085 2 560 1085 2 560 1085 2 560 1085 3 561 1302 1748 3 561 1302 1748 3 561 1302 1748 3 561 1302 1748 3 561 1302 1748 3 561 1302 1748 7 561 562 1302 1303 1643 1748 1749 7 561 562 1302 1303 1643 1748 1749 7 561 562 1302 1303 1643 1748 1749 7 561 562 1302 1303 1643 1748 1749 7 561 562 1302 1303 1643 1748 1749 7 561 562 1302 1303 1643 1748 1749 3 561 562 1643 3 561 562 1643 3 561 562 1643 3 561 562 1643 3 561 562 1643 3 561 562 1643 5 561 562 1086 1087 1643 5 561 562 1086 1087 1643 5 561 562 1086 1087 1643 5 561 562 1086 1087 1643 5 561 562 1086 1087 1643 5 561 562 1086 1087 1643 2 561 1086 2 561 1086 2 561 1086 2 561 1086 2 561 1086 2 561 1086 3 562 1303 1749 3 562 1303 1749 3 562 1303 1749 3 562 1303 1749 3 562 1303 1749 3 562 1303 1749 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 10 562 563 564 1303 1304 1650 1651 1749 1750 1777 3 562 564 1651 3 562 564 1651 3 562 564 1651 3 562 564 1651 3 562 564 1651 3 562 564 1651 5 562 564 1087 1088 1651 5 562 564 1087 1088 1651 5 562 564 1087 1088 1651 5 562 564 1087 1088 1651 5 562 564 1087 1088 1651 5 562 564 1087 1088 1651 2 562 1087 2 562 1087 2 562 1087 2 562 1087 2 562 1087 2 562 1087 7 563 1397 1650 1777 1947 2074 3074 7 563 1397 1650 1777 1947 2074 3074 7 563 1397 1650 1777 1947 2074 3074 7 563 1397 1650 1777 1947 2074 3074 7 563 1397 1650 1777 1947 2074 3074 7 563 1397 1650 1777 1947 2074 3074 3 563 1397 3074 3 563 1397 3074 3 563 1397 3074 3 563 1397 3074 3 563 1397 3074 3 563 1397 3074 7 563 1397 1658 1778 1946 2066 3074 7 563 1397 1658 1778 1946 2066 3074 7 563 1397 1658 1778 1946 2066 3074 7 563 1397 1658 1778 1946 2066 3074 7 563 1397 1658 1778 1946 2066 3074 7 563 1397 1658 1778 1946 2066 3074 3 563 1658 1778 3 563 1658 1778 3 563 1658 1778 3 563 1658 1778 3 563 1658 1778 3 563 1658 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 10 563 564 565 1304 1305 1658 1659 1750 1751 1778 4 563 564 1304 1750 4 563 564 1304 1750 4 563 564 1304 1750 4 563 564 1304 1750 4 563 564 1304 1750 4 563 564 1304 1750 3 563 1650 1777 3 563 1650 1777 3 563 1650 1777 3 563 1650 1777 3 563 1650 1777 3 563 1650 1777 3 564 565 1659 3 564 565 1659 3 564 565 1659 3 564 565 1659 3 564 565 1659 3 564 565 1659 5 564 565 1088 1089 1659 5 564 565 1088 1089 1659 5 564 565 1088 1089 1659 5 564 565 1088 1089 1659 5 564 565 1088 1089 1659 5 564 565 1088 1089 1659 2 564 1088 2 564 1088 2 564 1088 2 564 1088 2 564 1088 2 564 1088 3 565 1305 1751 3 565 1305 1751 3 565 1305 1751 3 565 1305 1751 3 565 1305 1751 3 565 1305 1751 7 565 566 1305 1306 1665 1751 1752 7 565 566 1305 1306 1665 1751 1752 7 565 566 1305 1306 1665 1751 1752 7 565 566 1305 1306 1665 1751 1752 7 565 566 1305 1306 1665 1751 1752 7 565 566 1305 1306 1665 1751 1752 3 565 566 1665 3 565 566 1665 3 565 566 1665 3 565 566 1665 3 565 566 1665 3 565 566 1665 5 565 566 1089 1090 1665 5 565 566 1089 1090 1665 5 565 566 1089 1090 1665 5 565 566 1089 1090 1665 5 565 566 1089 1090 1665 5 565 566 1089 1090 1665 2 565 1089 2 565 1089 2 565 1089 2 565 1089 2 565 1089 2 565 1089 3 566 1306 1752 3 566 1306 1752 3 566 1306 1752 3 566 1306 1752 3 566 1306 1752 3 566 1306 1752 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 10 566 567 568 1306 1307 1674 1675 1752 1753 1779 3 566 568 1675 3 566 568 1675 3 566 568 1675 3 566 568 1675 3 566 568 1675 3 566 568 1675 5 566 568 1090 1091 1675 5 566 568 1090 1091 1675 5 566 568 1090 1091 1675 5 566 568 1090 1091 1675 5 566 568 1090 1091 1675 5 566 568 1090 1091 1675 2 566 1090 2 566 1090 2 566 1090 2 566 1090 2 566 1090 2 566 1090 7 567 1398 1674 1779 1945 2050 3070 7 567 1398 1674 1779 1945 2050 3070 7 567 1398 1674 1779 1945 2050 3070 7 567 1398 1674 1779 1945 2050 3070 7 567 1398 1674 1779 1945 2050 3070 7 567 1398 1674 1779 1945 2050 3070 3 567 1398 3070 3 567 1398 3070 3 567 1398 3070 3 567 1398 3070 3 567 1398 3070 3 567 1398 3070 7 567 1398 1682 1780 1944 2042 3070 7 567 1398 1682 1780 1944 2042 3070 7 567 1398 1682 1780 1944 2042 3070 7 567 1398 1682 1780 1944 2042 3070 7 567 1398 1682 1780 1944 2042 3070 7 567 1398 1682 1780 1944 2042 3070 3 567 1682 1780 3 567 1682 1780 3 567 1682 1780 3 567 1682 1780 3 567 1682 1780 3 567 1682 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 10 567 568 569 1307 1308 1682 1683 1753 1754 1780 4 567 568 1307 1753 4 567 568 1307 1753 4 567 568 1307 1753 4 567 568 1307 1753 4 567 568 1307 1753 4 567 568 1307 1753 3 567 1674 1779 3 567 1674 1779 3 567 1674 1779 3 567 1674 1779 3 567 1674 1779 3 567 1674 1779 3 568 569 1683 3 568 569 1683 3 568 569 1683 3 568 569 1683 3 568 569 1683 3 568 569 1683 5 568 569 1091 1092 1683 5 568 569 1091 1092 1683 5 568 569 1091 1092 1683 5 568 569 1091 1092 1683 5 568 569 1091 1092 1683 5 568 569 1091 1092 1683 2 568 1091 2 568 1091 2 568 1091 2 568 1091 2 568 1091 2 568 1091 3 569 1308 1754 3 569 1308 1754 3 569 1308 1754 3 569 1308 1754 3 569 1308 1754 3 569 1308 1754 7 569 570 1308 1309 1689 1754 1755 7 569 570 1308 1309 1689 1754 1755 7 569 570 1308 1309 1689 1754 1755 7 569 570 1308 1309 1689 1754 1755 7 569 570 1308 1309 1689 1754 1755 7 569 570 1308 1309 1689 1754 1755 3 569 570 1689 3 569 570 1689 3 569 570 1689 3 569 570 1689 3 569 570 1689 3 569 570 1689 5 569 570 1092 1093 1689 5 569 570 1092 1093 1689 5 569 570 1092 1093 1689 5 569 570 1092 1093 1689 5 569 570 1092 1093 1689 5 569 570 1092 1093 1689 2 569 1092 2 569 1092 2 569 1092 2 569 1092 2 569 1092 2 569 1092 3 570 1309 1755 3 570 1309 1755 3 570 1309 1755 3 570 1309 1755 3 570 1309 1755 3 570 1309 1755 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 10 570 571 572 1309 1310 1698 1699 1755 1756 1781 3 570 572 1699 3 570 572 1699 3 570 572 1699 3 570 572 1699 3 570 572 1699 3 570 572 1699 5 570 572 1093 1094 1699 5 570 572 1093 1094 1699 5 570 572 1093 1094 1699 5 570 572 1093 1094 1699 5 570 572 1093 1094 1699 5 570 572 1093 1094 1699 2 570 1093 2 570 1093 2 570 1093 2 570 1093 2 570 1093 2 570 1093 7 571 1399 1698 1781 1943 2026 3066 7 571 1399 1698 1781 1943 2026 3066 7 571 1399 1698 1781 1943 2026 3066 7 571 1399 1698 1781 1943 2026 3066 7 571 1399 1698 1781 1943 2026 3066 7 571 1399 1698 1781 1943 2026 3066 3 571 1399 3066 3 571 1399 3066 3 571 1399 3066 3 571 1399 3066 3 571 1399 3066 3 571 1399 3066 7 571 1399 1708 1782 1942 2016 3066 7 571 1399 1708 1782 1942 2016 3066 7 571 1399 1708 1782 1942 2016 3066 7 571 1399 1708 1782 1942 2016 3066 7 571 1399 1708 1782 1942 2016 3066 7 571 1399 1708 1782 1942 2016 3066 3 571 1708 1782 3 571 1708 1782 3 571 1708 1782 3 571 1708 1782 3 571 1708 1782 3 571 1708 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 10 571 572 573 1310 1311 1708 1709 1756 1757 1782 4 571 572 1310 1756 4 571 572 1310 1756 4 571 572 1310 1756 4 571 572 1310 1756 4 571 572 1310 1756 4 571 572 1310 1756 3 571 1698 1781 3 571 1698 1781 3 571 1698 1781 3 571 1698 1781 3 571 1698 1781 3 571 1698 1781 3 572 573 1709 3 572 573 1709 3 572 573 1709 3 572 573 1709 3 572 573 1709 3 572 573 1709 5 572 573 1094 1095 1709 5 572 573 1094 1095 1709 5 572 573 1094 1095 1709 5 572 573 1094 1095 1709 5 572 573 1094 1095 1709 5 572 573 1094 1095 1709 2 572 1094 2 572 1094 2 572 1094 2 572 1094 2 572 1094 2 572 1094 3 573 1311 1757 3 573 1311 1757 3 573 1311 1757 3 573 1311 1757 3 573 1311 1757 3 573 1311 1757 7 573 574 1311 1312 1715 1757 1758 7 573 574 1311 1312 1715 1757 1758 7 573 574 1311 1312 1715 1757 1758 7 573 574 1311 1312 1715 1757 1758 7 573 574 1311 1312 1715 1757 1758 7 573 574 1311 1312 1715 1757 1758 3 573 574 1715 3 573 574 1715 3 573 574 1715 3 573 574 1715 3 573 574 1715 3 573 574 1715 6 573 574 1095 1096 1097 1715 6 573 574 1095 1096 1097 1715 6 573 574 1095 1096 1097 1715 6 573 574 1095 1096 1097 1715 6 573 574 1095 1096 1097 1715 6 573 574 1095 1096 1097 1715 2 573 1095 2 573 1095 2 573 1095 2 573 1095 2 573 1095 2 573 1095 3 574 1312 1758 3 574 1312 1758 3 574 1312 1758 3 574 1312 1758 3 574 1312 1758 3 574 1312 1758 3 574 1096 1097 3 574 1096 1097 3 574 1096 1097 3 574 1096 1097 3 574 1096 1097 3 574 1096 1097 3 575 1227 1270 3 575 1227 1270 3 575 1227 1270 3 575 1227 1270 3 575 1227 1270 3 575 1227 1270 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 11 575 576 583 585 1227 1228 1270 1271 1405 1406 1407 4 575 576 1405 1407 4 575 576 1405 1407 4 575 576 1405 1407 4 575 576 1405 1407 4 575 576 1405 1407 4 575 576 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 8 575 576 1011 1012 1054 1055 1405 1407 3 575 1011 1054 3 575 1011 1054 3 575 1011 1054 3 575 1011 1054 3 575 1011 1054 3 575 1011 1054 4 576 583 1228 1271 4 576 583 1228 1271 4 576 583 1228 1271 4 576 583 1228 1271 4 576 583 1228 1271 4 576 583 1228 1271 10 576 578 580 583 1228 1229 1271 1272 1412 1413 10 576 578 580 583 1228 1229 1271 1272 1412 1413 10 576 578 580 583 1228 1229 1271 1272 1412 1413 10 576 578 580 583 1228 1229 1271 1272 1412 1413 10 576 578 580 583 1228 1229 1271 1272 1412 1413 10 576 578 580 583 1228 1229 1271 1272 1412 1413 4 576 578 1412 1413 4 576 578 1412 1413 4 576 578 1412 1413 4 576 578 1412 1413 4 576 578 1412 1413 4 576 578 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 8 576 578 1012 1013 1055 1056 1412 1413 3 576 1012 1055 3 576 1012 1055 3 576 1012 1055 3 576 1012 1055 3 576 1012 1055 3 576 1012 1055 10 577 578 579 580 1229 1230 1272 1273 1418 1419 10 577 578 579 580 1229 1230 1272 1273 1418 1419 10 577 578 579 580 1229 1230 1272 1273 1418 1419 10 577 578 579 580 1229 1230 1272 1273 1418 1419 10 577 578 579 580 1229 1230 1272 1273 1418 1419 10 577 578 579 580 1229 1230 1272 1273 1418 1419 4 577 579 1230 1273 4 577 579 1230 1273 4 577 579 1230 1273 4 577 579 1230 1273 4 577 579 1230 1273 4 577 579 1230 1273 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 10 577 579 581 1230 1231 1273 1274 1424 1425 1858 2 577 580 2 577 580 2 577 580 2 577 580 2 577 580 2 577 580 1 577 1 577 1 577 1 577 1 577 1 577 2 577 1858 2 577 1858 2 577 1858 2 577 1858 2 577 1858 2 577 1858 4 578 580 1229 1272 4 578 580 1229 1272 4 578 580 1229 1272 4 578 580 1229 1272 4 578 580 1229 1272 4 578 580 1229 1272 4 578 579 1418 1419 4 578 579 1418 1419 4 578 579 1418 1419 4 578 579 1418 1419 4 578 579 1418 1419 4 578 579 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 8 578 579 1013 1014 1056 1057 1418 1419 3 578 1013 1056 3 578 1013 1056 3 578 1013 1056 3 578 1013 1056 3 578 1013 1056 3 578 1013 1056 4 579 581 1424 1425 4 579 581 1424 1425 4 579 581 1424 1425 4 579 581 1424 1425 4 579 581 1424 1425 4 579 581 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 8 579 581 1014 1015 1057 1058 1424 1425 3 579 1014 1057 3 579 1014 1057 3 579 1014 1057 3 579 1014 1057 3 579 1014 1057 3 579 1014 1057 2 580 583 2 580 583 2 580 583 2 580 583 2 580 583 2 580 583 1 580 1 580 1 580 1 580 1 580 1 580 4 581 1231 1274 1858 4 581 1231 1274 1858 4 581 1231 1274 1858 4 581 1231 1274 1858 4 581 1231 1274 1858 4 581 1231 1274 1858 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 10 581 582 1231 1232 1274 1275 1430 1431 1858 1859 4 581 582 1430 1431 4 581 582 1430 1431 4 581 582 1430 1431 4 581 582 1430 1431 4 581 582 1430 1431 4 581 582 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 8 581 582 1015 1016 1058 1059 1430 1431 3 581 1015 1058 3 581 1015 1058 3 581 1015 1058 3 581 1015 1058 3 581 1015 1058 3 581 1015 1058 4 582 1232 1275 1859 4 582 1232 1275 1859 4 582 1232 1275 1859 4 582 1232 1275 1859 4 582 1232 1275 1859 4 582 1232 1275 1859 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 10 582 584 1232 1233 1275 1276 1436 1437 1859 1860 4 582 584 1436 1437 4 582 584 1436 1437 4 582 584 1436 1437 4 582 584 1436 1437 4 582 584 1436 1437 4 582 584 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 8 582 584 1016 1017 1059 1060 1436 1437 3 582 1016 1059 3 582 1016 1059 3 582 1016 1059 3 582 1016 1059 3 582 1016 1059 3 582 1016 1059 2 583 585 2 583 585 2 583 585 2 583 585 2 583 585 2 583 585 4 584 1233 1276 1860 4 584 1233 1276 1860 4 584 1233 1276 1860 4 584 1233 1276 1860 4 584 1233 1276 1860 4 584 1233 1276 1860 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 10 584 586 1233 1234 1276 1277 1442 1443 1860 1862 4 584 586 1442 1443 4 584 586 1442 1443 4 584 586 1442 1443 4 584 586 1442 1443 4 584 586 1442 1443 4 584 586 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 8 584 586 1017 1018 1060 1061 1442 1443 3 584 1017 1060 3 584 1017 1060 3 584 1017 1060 3 584 1017 1060 3 584 1017 1060 3 584 1017 1060 4 585 1406 2318 3052 4 585 1406 2318 3052 4 585 1406 2318 3052 4 585 1406 2318 3052 4 585 1406 2318 3052 4 585 1406 2318 3052 2 585 1406 2 585 1406 2 585 1406 2 585 1406 2 585 1406 2 585 1406 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 2 585 3052 1 585 1 585 1 585 1 585 1 585 1 585 4 586 1234 1277 1862 4 586 1234 1277 1862 4 586 1234 1277 1862 4 586 1234 1277 1862 4 586 1234 1277 1862 4 586 1234 1277 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 11 586 587 1234 1235 1277 1278 1449 1450 1451 1861 1862 4 586 587 1449 1451 4 586 587 1449 1451 4 586 587 1449 1451 4 586 587 1449 1451 4 586 587 1449 1451 4 586 587 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 8 586 587 1018 1019 1061 1062 1449 1451 3 586 1018 1061 3 586 1018 1061 3 586 1018 1061 3 586 1018 1061 3 586 1018 1061 3 586 1018 1061 3 587 1235 1278 3 587 1235 1278 3 587 1235 1278 3 587 1235 1278 3 587 1235 1278 3 587 1235 1278 8 587 588 1235 1236 1278 1279 1456 1457 8 587 588 1235 1236 1278 1279 1456 1457 8 587 588 1235 1236 1278 1279 1456 1457 8 587 588 1235 1236 1278 1279 1456 1457 8 587 588 1235 1236 1278 1279 1456 1457 8 587 588 1235 1236 1278 1279 1456 1457 4 587 588 1456 1457 4 587 588 1456 1457 4 587 588 1456 1457 4 587 588 1456 1457 4 587 588 1456 1457 4 587 588 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 8 587 588 1019 1020 1062 1063 1456 1457 3 587 1019 1062 3 587 1019 1062 3 587 1019 1062 3 587 1019 1062 3 587 1019 1062 3 587 1019 1062 3 588 1236 1279 3 588 1236 1279 3 588 1236 1279 3 588 1236 1279 3 588 1236 1279 3 588 1236 1279 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 10 588 589 590 1236 1237 1279 1280 1463 1464 1465 4 588 590 1463 1465 4 588 590 1463 1465 4 588 590 1463 1465 4 588 590 1463 1465 4 588 590 1463 1465 4 588 590 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 8 588 590 1020 1021 1063 1064 1463 1465 3 588 1020 1063 3 588 1020 1063 3 588 1020 1063 3 588 1020 1063 3 588 1020 1063 3 588 1020 1063 6 589 1378 1389 1464 2260 3048 6 589 1378 1389 1464 2260 3048 6 589 1378 1389 1464 2260 3048 6 589 1378 1389 1464 2260 3048 6 589 1378 1389 1464 2260 3048 6 589 1378 1389 1464 2260 3048 4 589 1378 1389 3048 4 589 1378 1389 3048 4 589 1378 1389 3048 4 589 1378 1389 3048 4 589 1378 1389 3048 4 589 1378 1389 3048 6 589 1378 1389 1472 2252 3048 6 589 1378 1389 1472 2252 3048 6 589 1378 1389 1472 2252 3048 6 589 1378 1389 1472 2252 3048 6 589 1378 1389 1472 2252 3048 6 589 1378 1389 1472 2252 3048 2 589 1472 2 589 1472 2 589 1472 2 589 1472 2 589 1472 2 589 1472 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 10 589 590 591 1237 1238 1280 1281 1471 1472 1473 4 589 590 1237 1280 4 589 590 1237 1280 4 589 590 1237 1280 4 589 590 1237 1280 4 589 590 1237 1280 4 589 590 1237 1280 2 589 1464 2 589 1464 2 589 1464 2 589 1464 2 589 1464 2 589 1464 4 590 591 1471 1473 4 590 591 1471 1473 4 590 591 1471 1473 4 590 591 1471 1473 4 590 591 1471 1473 4 590 591 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 8 590 591 1021 1022 1064 1065 1471 1473 3 590 1021 1064 3 590 1021 1064 3 590 1021 1064 3 590 1021 1064 3 590 1021 1064 3 590 1021 1064 3 591 1238 1281 3 591 1238 1281 3 591 1238 1281 3 591 1238 1281 3 591 1238 1281 3 591 1238 1281 8 591 592 1238 1239 1281 1282 1478 1479 8 591 592 1238 1239 1281 1282 1478 1479 8 591 592 1238 1239 1281 1282 1478 1479 8 591 592 1238 1239 1281 1282 1478 1479 8 591 592 1238 1239 1281 1282 1478 1479 8 591 592 1238 1239 1281 1282 1478 1479 4 591 592 1478 1479 4 591 592 1478 1479 4 591 592 1478 1479 4 591 592 1478 1479 4 591 592 1478 1479 4 591 592 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 8 591 592 1022 1023 1065 1066 1478 1479 3 591 1022 1065 3 591 1022 1065 3 591 1022 1065 3 591 1022 1065 3 591 1022 1065 3 591 1022 1065 3 592 1239 1282 3 592 1239 1282 3 592 1239 1282 3 592 1239 1282 3 592 1239 1282 3 592 1239 1282 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 11 592 593 594 1239 1240 1282 1283 1486 1487 1488 1489 4 592 594 1487 1489 4 592 594 1487 1489 4 592 594 1487 1489 4 592 594 1487 1489 4 592 594 1487 1489 4 592 594 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 8 592 594 1023 1024 1066 1067 1487 1489 3 592 1023 1066 3 592 1023 1066 3 592 1023 1066 3 592 1023 1066 3 592 1023 1066 3 592 1023 1066 8 593 1379 1390 1486 1488 2236 2238 3044 8 593 1379 1390 1486 1488 2236 2238 3044 8 593 1379 1390 1486 1488 2236 2238 3044 8 593 1379 1390 1486 1488 2236 2238 3044 8 593 1379 1390 1486 1488 2236 2238 3044 8 593 1379 1390 1486 1488 2236 2238 3044 4 593 1379 1390 3044 4 593 1379 1390 3044 4 593 1379 1390 3044 4 593 1379 1390 3044 4 593 1379 1390 3044 4 593 1379 1390 3044 8 593 1379 1390 1496 1498 2226 2228 3044 8 593 1379 1390 1496 1498 2226 2228 3044 8 593 1379 1390 1496 1498 2226 2228 3044 8 593 1379 1390 1496 1498 2226 2228 3044 8 593 1379 1390 1496 1498 2226 2228 3044 8 593 1379 1390 1496 1498 2226 2228 3044 3 593 1496 1498 3 593 1496 1498 3 593 1496 1498 3 593 1496 1498 3 593 1496 1498 3 593 1496 1498 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 11 593 594 595 1240 1241 1283 1284 1496 1497 1498 1499 4 593 594 1240 1283 4 593 594 1240 1283 4 593 594 1240 1283 4 593 594 1240 1283 4 593 594 1240 1283 4 593 594 1240 1283 3 593 1486 1488 3 593 1486 1488 3 593 1486 1488 3 593 1486 1488 3 593 1486 1488 3 593 1486 1488 4 594 595 1497 1499 4 594 595 1497 1499 4 594 595 1497 1499 4 594 595 1497 1499 4 594 595 1497 1499 4 594 595 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 8 594 595 1024 1025 1067 1068 1497 1499 3 594 1024 1067 3 594 1024 1067 3 594 1024 1067 3 594 1024 1067 3 594 1024 1067 3 594 1024 1067 3 595 1241 1284 3 595 1241 1284 3 595 1241 1284 3 595 1241 1284 3 595 1241 1284 3 595 1241 1284 8 595 596 1241 1242 1284 1285 1504 1505 8 595 596 1241 1242 1284 1285 1504 1505 8 595 596 1241 1242 1284 1285 1504 1505 8 595 596 1241 1242 1284 1285 1504 1505 8 595 596 1241 1242 1284 1285 1504 1505 8 595 596 1241 1242 1284 1285 1504 1505 4 595 596 1504 1505 4 595 596 1504 1505 4 595 596 1504 1505 4 595 596 1504 1505 4 595 596 1504 1505 4 595 596 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 8 595 596 1025 1026 1068 1069 1504 1505 3 595 1025 1068 3 595 1025 1068 3 595 1025 1068 3 595 1025 1068 3 595 1025 1068 3 595 1025 1068 3 596 1242 1285 3 596 1242 1285 3 596 1242 1285 3 596 1242 1285 3 596 1242 1285 3 596 1242 1285 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 10 596 597 598 1242 1243 1285 1286 1511 1512 1513 4 596 598 1511 1513 4 596 598 1511 1513 4 596 598 1511 1513 4 596 598 1511 1513 4 596 598 1511 1513 4 596 598 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 8 596 598 1026 1027 1069 1070 1511 1513 3 596 1026 1069 3 596 1026 1069 3 596 1026 1069 3 596 1026 1069 3 596 1026 1069 3 596 1026 1069 6 597 1380 1391 1512 2212 3040 6 597 1380 1391 1512 2212 3040 6 597 1380 1391 1512 2212 3040 6 597 1380 1391 1512 2212 3040 6 597 1380 1391 1512 2212 3040 6 597 1380 1391 1512 2212 3040 4 597 1380 1391 3040 4 597 1380 1391 3040 4 597 1380 1391 3040 4 597 1380 1391 3040 4 597 1380 1391 3040 4 597 1380 1391 3040 6 597 1380 1391 1520 2204 3040 6 597 1380 1391 1520 2204 3040 6 597 1380 1391 1520 2204 3040 6 597 1380 1391 1520 2204 3040 6 597 1380 1391 1520 2204 3040 6 597 1380 1391 1520 2204 3040 2 597 1520 2 597 1520 2 597 1520 2 597 1520 2 597 1520 2 597 1520 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 10 597 598 599 1243 1244 1286 1287 1519 1520 1521 4 597 598 1243 1286 4 597 598 1243 1286 4 597 598 1243 1286 4 597 598 1243 1286 4 597 598 1243 1286 4 597 598 1243 1286 2 597 1512 2 597 1512 2 597 1512 2 597 1512 2 597 1512 2 597 1512 4 598 599 1519 1521 4 598 599 1519 1521 4 598 599 1519 1521 4 598 599 1519 1521 4 598 599 1519 1521 4 598 599 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 8 598 599 1027 1028 1070 1071 1519 1521 3 598 1027 1070 3 598 1027 1070 3 598 1027 1070 3 598 1027 1070 3 598 1027 1070 3 598 1027 1070 3 599 1244 1287 3 599 1244 1287 3 599 1244 1287 3 599 1244 1287 3 599 1244 1287 3 599 1244 1287 8 599 600 1244 1245 1287 1288 1526 1527 8 599 600 1244 1245 1287 1288 1526 1527 8 599 600 1244 1245 1287 1288 1526 1527 8 599 600 1244 1245 1287 1288 1526 1527 8 599 600 1244 1245 1287 1288 1526 1527 8 599 600 1244 1245 1287 1288 1526 1527 4 599 600 1526 1527 4 599 600 1526 1527 4 599 600 1526 1527 4 599 600 1526 1527 4 599 600 1526 1527 4 599 600 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 8 599 600 1028 1029 1071 1072 1526 1527 3 599 1028 1071 3 599 1028 1071 3 599 1028 1071 3 599 1028 1071 3 599 1028 1071 3 599 1028 1071 3 600 1245 1288 3 600 1245 1288 3 600 1245 1288 3 600 1245 1288 3 600 1245 1288 3 600 1245 1288 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 11 600 601 602 1245 1246 1288 1289 1534 1535 1536 1537 4 600 602 1535 1537 4 600 602 1535 1537 4 600 602 1535 1537 4 600 602 1535 1537 4 600 602 1535 1537 4 600 602 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 8 600 602 1029 1030 1072 1073 1535 1537 3 600 1029 1072 3 600 1029 1072 3 600 1029 1072 3 600 1029 1072 3 600 1029 1072 3 600 1029 1072 8 601 1381 1392 1534 1536 2188 2190 3036 8 601 1381 1392 1534 1536 2188 2190 3036 8 601 1381 1392 1534 1536 2188 2190 3036 8 601 1381 1392 1534 1536 2188 2190 3036 8 601 1381 1392 1534 1536 2188 2190 3036 8 601 1381 1392 1534 1536 2188 2190 3036 4 601 1381 1392 3036 4 601 1381 1392 3036 4 601 1381 1392 3036 4 601 1381 1392 3036 4 601 1381 1392 3036 4 601 1381 1392 3036 6 601 1381 1392 1544 2180 3036 6 601 1381 1392 1544 2180 3036 6 601 1381 1392 1544 2180 3036 6 601 1381 1392 1544 2180 3036 6 601 1381 1392 1544 2180 3036 6 601 1381 1392 1544 2180 3036 2 601 1544 2 601 1544 2 601 1544 2 601 1544 2 601 1544 2 601 1544 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 10 601 602 603 1246 1247 1289 1290 1543 1544 1545 4 601 602 1246 1289 4 601 602 1246 1289 4 601 602 1246 1289 4 601 602 1246 1289 4 601 602 1246 1289 4 601 602 1246 1289 3 601 1534 1536 3 601 1534 1536 3 601 1534 1536 3 601 1534 1536 3 601 1534 1536 3 601 1534 1536 4 602 603 1543 1545 4 602 603 1543 1545 4 602 603 1543 1545 4 602 603 1543 1545 4 602 603 1543 1545 4 602 603 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 8 602 603 1030 1031 1073 1074 1543 1545 3 602 1030 1073 3 602 1030 1073 3 602 1030 1073 3 602 1030 1073 3 602 1030 1073 3 602 1030 1073 3 603 1247 1290 3 603 1247 1290 3 603 1247 1290 3 603 1247 1290 3 603 1247 1290 3 603 1247 1290 8 603 604 1247 1248 1290 1291 1550 1551 8 603 604 1247 1248 1290 1291 1550 1551 8 603 604 1247 1248 1290 1291 1550 1551 8 603 604 1247 1248 1290 1291 1550 1551 8 603 604 1247 1248 1290 1291 1550 1551 8 603 604 1247 1248 1290 1291 1550 1551 4 603 604 1550 1551 4 603 604 1550 1551 4 603 604 1550 1551 4 603 604 1550 1551 4 603 604 1550 1551 4 603 604 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 8 603 604 1031 1032 1074 1075 1550 1551 3 603 1031 1074 3 603 1031 1074 3 603 1031 1074 3 603 1031 1074 3 603 1031 1074 3 603 1031 1074 3 604 1248 1291 3 604 1248 1291 3 604 1248 1291 3 604 1248 1291 3 604 1248 1291 3 604 1248 1291 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 10 604 605 606 1248 1249 1291 1292 1557 1558 1559 4 604 606 1557 1559 4 604 606 1557 1559 4 604 606 1557 1559 4 604 606 1557 1559 4 604 606 1557 1559 4 604 606 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 8 604 606 1032 1033 1075 1076 1557 1559 3 604 1032 1075 3 604 1032 1075 3 604 1032 1075 3 604 1032 1075 3 604 1032 1075 3 604 1032 1075 6 605 1382 1393 1558 2166 3032 6 605 1382 1393 1558 2166 3032 6 605 1382 1393 1558 2166 3032 6 605 1382 1393 1558 2166 3032 6 605 1382 1393 1558 2166 3032 6 605 1382 1393 1558 2166 3032 4 605 1382 1393 3032 4 605 1382 1393 3032 4 605 1382 1393 3032 4 605 1382 1393 3032 4 605 1382 1393 3032 4 605 1382 1393 3032 6 605 1382 1393 1566 2158 3032 6 605 1382 1393 1566 2158 3032 6 605 1382 1393 1566 2158 3032 6 605 1382 1393 1566 2158 3032 6 605 1382 1393 1566 2158 3032 6 605 1382 1393 1566 2158 3032 2 605 1566 2 605 1566 2 605 1566 2 605 1566 2 605 1566 2 605 1566 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 10 605 606 607 1249 1250 1292 1293 1565 1566 1567 4 605 606 1249 1292 4 605 606 1249 1292 4 605 606 1249 1292 4 605 606 1249 1292 4 605 606 1249 1292 4 605 606 1249 1292 2 605 1558 2 605 1558 2 605 1558 2 605 1558 2 605 1558 2 605 1558 4 606 607 1565 1567 4 606 607 1565 1567 4 606 607 1565 1567 4 606 607 1565 1567 4 606 607 1565 1567 4 606 607 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 8 606 607 1033 1034 1076 1077 1565 1567 3 606 1033 1076 3 606 1033 1076 3 606 1033 1076 3 606 1033 1076 3 606 1033 1076 3 606 1033 1076 3 607 1250 1293 3 607 1250 1293 3 607 1250 1293 3 607 1250 1293 3 607 1250 1293 3 607 1250 1293 8 607 608 1250 1251 1293 1294 1572 1573 8 607 608 1250 1251 1293 1294 1572 1573 8 607 608 1250 1251 1293 1294 1572 1573 8 607 608 1250 1251 1293 1294 1572 1573 8 607 608 1250 1251 1293 1294 1572 1573 8 607 608 1250 1251 1293 1294 1572 1573 4 607 608 1572 1573 4 607 608 1572 1573 4 607 608 1572 1573 4 607 608 1572 1573 4 607 608 1572 1573 4 607 608 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 8 607 608 1034 1035 1077 1078 1572 1573 3 607 1034 1077 3 607 1034 1077 3 607 1034 1077 3 607 1034 1077 3 607 1034 1077 3 607 1034 1077 3 608 1251 1294 3 608 1251 1294 3 608 1251 1294 3 608 1251 1294 3 608 1251 1294 3 608 1251 1294 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 11 608 609 610 1251 1252 1294 1295 1580 1581 1582 1583 4 608 610 1581 1583 4 608 610 1581 1583 4 608 610 1581 1583 4 608 610 1581 1583 4 608 610 1581 1583 4 608 610 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 8 608 610 1035 1036 1078 1079 1581 1583 3 608 1035 1078 3 608 1035 1078 3 608 1035 1078 3 608 1035 1078 3 608 1035 1078 3 608 1035 1078 8 609 1383 1394 1580 1582 2142 2144 3028 8 609 1383 1394 1580 1582 2142 2144 3028 8 609 1383 1394 1580 1582 2142 2144 3028 8 609 1383 1394 1580 1582 2142 2144 3028 8 609 1383 1394 1580 1582 2142 2144 3028 8 609 1383 1394 1580 1582 2142 2144 3028 4 609 1383 1394 3028 4 609 1383 1394 3028 4 609 1383 1394 3028 4 609 1383 1394 3028 4 609 1383 1394 3028 4 609 1383 1394 3028 6 609 1383 1394 1590 2134 3028 6 609 1383 1394 1590 2134 3028 6 609 1383 1394 1590 2134 3028 6 609 1383 1394 1590 2134 3028 6 609 1383 1394 1590 2134 3028 6 609 1383 1394 1590 2134 3028 2 609 1590 2 609 1590 2 609 1590 2 609 1590 2 609 1590 2 609 1590 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 10 609 610 611 1252 1253 1295 1296 1589 1590 1591 4 609 610 1252 1295 4 609 610 1252 1295 4 609 610 1252 1295 4 609 610 1252 1295 4 609 610 1252 1295 4 609 610 1252 1295 3 609 1580 1582 3 609 1580 1582 3 609 1580 1582 3 609 1580 1582 3 609 1580 1582 3 609 1580 1582 4 610 611 1589 1591 4 610 611 1589 1591 4 610 611 1589 1591 4 610 611 1589 1591 4 610 611 1589 1591 4 610 611 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 8 610 611 1036 1037 1079 1080 1589 1591 3 610 1036 1079 3 610 1036 1079 3 610 1036 1079 3 610 1036 1079 3 610 1036 1079 3 610 1036 1079 3 611 1253 1296 3 611 1253 1296 3 611 1253 1296 3 611 1253 1296 3 611 1253 1296 3 611 1253 1296 8 611 612 1253 1254 1296 1297 1596 1597 8 611 612 1253 1254 1296 1297 1596 1597 8 611 612 1253 1254 1296 1297 1596 1597 8 611 612 1253 1254 1296 1297 1596 1597 8 611 612 1253 1254 1296 1297 1596 1597 8 611 612 1253 1254 1296 1297 1596 1597 4 611 612 1596 1597 4 611 612 1596 1597 4 611 612 1596 1597 4 611 612 1596 1597 4 611 612 1596 1597 4 611 612 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 8 611 612 1037 1038 1080 1081 1596 1597 3 611 1037 1080 3 611 1037 1080 3 611 1037 1080 3 611 1037 1080 3 611 1037 1080 3 611 1037 1080 3 612 1254 1297 3 612 1254 1297 3 612 1254 1297 3 612 1254 1297 3 612 1254 1297 3 612 1254 1297 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 10 612 613 614 1254 1255 1297 1298 1603 1604 1605 4 612 614 1603 1605 4 612 614 1603 1605 4 612 614 1603 1605 4 612 614 1603 1605 4 612 614 1603 1605 4 612 614 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 8 612 614 1038 1039 1081 1082 1603 1605 3 612 1038 1081 3 612 1038 1081 3 612 1038 1081 3 612 1038 1081 3 612 1038 1081 3 612 1038 1081 6 613 1384 1395 1604 2120 3024 6 613 1384 1395 1604 2120 3024 6 613 1384 1395 1604 2120 3024 6 613 1384 1395 1604 2120 3024 6 613 1384 1395 1604 2120 3024 6 613 1384 1395 1604 2120 3024 4 613 1384 1395 3024 4 613 1384 1395 3024 4 613 1384 1395 3024 4 613 1384 1395 3024 4 613 1384 1395 3024 4 613 1384 1395 3024 6 613 1384 1395 1612 2112 3024 6 613 1384 1395 1612 2112 3024 6 613 1384 1395 1612 2112 3024 6 613 1384 1395 1612 2112 3024 6 613 1384 1395 1612 2112 3024 6 613 1384 1395 1612 2112 3024 2 613 1612 2 613 1612 2 613 1612 2 613 1612 2 613 1612 2 613 1612 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 10 613 614 615 1255 1256 1298 1299 1611 1612 1613 4 613 614 1255 1298 4 613 614 1255 1298 4 613 614 1255 1298 4 613 614 1255 1298 4 613 614 1255 1298 4 613 614 1255 1298 2 613 1604 2 613 1604 2 613 1604 2 613 1604 2 613 1604 2 613 1604 4 614 615 1611 1613 4 614 615 1611 1613 4 614 615 1611 1613 4 614 615 1611 1613 4 614 615 1611 1613 4 614 615 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 8 614 615 1039 1040 1082 1083 1611 1613 3 614 1039 1082 3 614 1039 1082 3 614 1039 1082 3 614 1039 1082 3 614 1039 1082 3 614 1039 1082 3 615 1256 1299 3 615 1256 1299 3 615 1256 1299 3 615 1256 1299 3 615 1256 1299 3 615 1256 1299 8 615 616 1256 1257 1299 1300 1618 1619 8 615 616 1256 1257 1299 1300 1618 1619 8 615 616 1256 1257 1299 1300 1618 1619 8 615 616 1256 1257 1299 1300 1618 1619 8 615 616 1256 1257 1299 1300 1618 1619 8 615 616 1256 1257 1299 1300 1618 1619 4 615 616 1618 1619 4 615 616 1618 1619 4 615 616 1618 1619 4 615 616 1618 1619 4 615 616 1618 1619 4 615 616 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 8 615 616 1040 1041 1083 1084 1618 1619 3 615 1040 1083 3 615 1040 1083 3 615 1040 1083 3 615 1040 1083 3 615 1040 1083 3 615 1040 1083 3 616 1257 1300 3 616 1257 1300 3 616 1257 1300 3 616 1257 1300 3 616 1257 1300 3 616 1257 1300 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 11 616 617 618 1257 1258 1300 1301 1626 1627 1628 1629 4 616 618 1627 1629 4 616 618 1627 1629 4 616 618 1627 1629 4 616 618 1627 1629 4 616 618 1627 1629 4 616 618 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 8 616 618 1041 1042 1084 1085 1627 1629 3 616 1041 1084 3 616 1041 1084 3 616 1041 1084 3 616 1041 1084 3 616 1041 1084 3 616 1041 1084 8 617 1385 1396 1626 1628 2096 2098 3020 8 617 1385 1396 1626 1628 2096 2098 3020 8 617 1385 1396 1626 1628 2096 2098 3020 8 617 1385 1396 1626 1628 2096 2098 3020 8 617 1385 1396 1626 1628 2096 2098 3020 8 617 1385 1396 1626 1628 2096 2098 3020 4 617 1385 1396 3020 4 617 1385 1396 3020 4 617 1385 1396 3020 4 617 1385 1396 3020 4 617 1385 1396 3020 4 617 1385 1396 3020 6 617 1385 1396 1636 2088 3020 6 617 1385 1396 1636 2088 3020 6 617 1385 1396 1636 2088 3020 6 617 1385 1396 1636 2088 3020 6 617 1385 1396 1636 2088 3020 6 617 1385 1396 1636 2088 3020 2 617 1636 2 617 1636 2 617 1636 2 617 1636 2 617 1636 2 617 1636 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 10 617 618 619 1258 1259 1301 1302 1635 1636 1637 4 617 618 1258 1301 4 617 618 1258 1301 4 617 618 1258 1301 4 617 618 1258 1301 4 617 618 1258 1301 4 617 618 1258 1301 3 617 1626 1628 3 617 1626 1628 3 617 1626 1628 3 617 1626 1628 3 617 1626 1628 3 617 1626 1628 4 618 619 1635 1637 4 618 619 1635 1637 4 618 619 1635 1637 4 618 619 1635 1637 4 618 619 1635 1637 4 618 619 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 8 618 619 1042 1043 1085 1086 1635 1637 3 618 1042 1085 3 618 1042 1085 3 618 1042 1085 3 618 1042 1085 3 618 1042 1085 3 618 1042 1085 3 619 1259 1302 3 619 1259 1302 3 619 1259 1302 3 619 1259 1302 3 619 1259 1302 3 619 1259 1302 8 619 620 1259 1260 1302 1303 1642 1643 8 619 620 1259 1260 1302 1303 1642 1643 8 619 620 1259 1260 1302 1303 1642 1643 8 619 620 1259 1260 1302 1303 1642 1643 8 619 620 1259 1260 1302 1303 1642 1643 8 619 620 1259 1260 1302 1303 1642 1643 4 619 620 1642 1643 4 619 620 1642 1643 4 619 620 1642 1643 4 619 620 1642 1643 4 619 620 1642 1643 4 619 620 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 8 619 620 1043 1044 1086 1087 1642 1643 3 619 1043 1086 3 619 1043 1086 3 619 1043 1086 3 619 1043 1086 3 619 1043 1086 3 619 1043 1086 3 620 1260 1303 3 620 1260 1303 3 620 1260 1303 3 620 1260 1303 3 620 1260 1303 3 620 1260 1303 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 10 620 621 622 1260 1261 1303 1304 1649 1650 1651 4 620 622 1649 1651 4 620 622 1649 1651 4 620 622 1649 1651 4 620 622 1649 1651 4 620 622 1649 1651 4 620 622 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 8 620 622 1044 1045 1087 1088 1649 1651 3 620 1044 1087 3 620 1044 1087 3 620 1044 1087 3 620 1044 1087 3 620 1044 1087 3 620 1044 1087 6 621 1386 1397 1650 2074 3016 6 621 1386 1397 1650 2074 3016 6 621 1386 1397 1650 2074 3016 6 621 1386 1397 1650 2074 3016 6 621 1386 1397 1650 2074 3016 6 621 1386 1397 1650 2074 3016 4 621 1386 1397 3016 4 621 1386 1397 3016 4 621 1386 1397 3016 4 621 1386 1397 3016 4 621 1386 1397 3016 4 621 1386 1397 3016 6 621 1386 1397 1658 2066 3016 6 621 1386 1397 1658 2066 3016 6 621 1386 1397 1658 2066 3016 6 621 1386 1397 1658 2066 3016 6 621 1386 1397 1658 2066 3016 6 621 1386 1397 1658 2066 3016 2 621 1658 2 621 1658 2 621 1658 2 621 1658 2 621 1658 2 621 1658 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 10 621 622 623 1261 1262 1304 1305 1657 1658 1659 4 621 622 1261 1304 4 621 622 1261 1304 4 621 622 1261 1304 4 621 622 1261 1304 4 621 622 1261 1304 4 621 622 1261 1304 2 621 1650 2 621 1650 2 621 1650 2 621 1650 2 621 1650 2 621 1650 4 622 623 1657 1659 4 622 623 1657 1659 4 622 623 1657 1659 4 622 623 1657 1659 4 622 623 1657 1659 4 622 623 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 8 622 623 1045 1046 1088 1089 1657 1659 3 622 1045 1088 3 622 1045 1088 3 622 1045 1088 3 622 1045 1088 3 622 1045 1088 3 622 1045 1088 3 623 1262 1305 3 623 1262 1305 3 623 1262 1305 3 623 1262 1305 3 623 1262 1305 3 623 1262 1305 8 623 624 1262 1263 1305 1306 1664 1665 8 623 624 1262 1263 1305 1306 1664 1665 8 623 624 1262 1263 1305 1306 1664 1665 8 623 624 1262 1263 1305 1306 1664 1665 8 623 624 1262 1263 1305 1306 1664 1665 8 623 624 1262 1263 1305 1306 1664 1665 4 623 624 1664 1665 4 623 624 1664 1665 4 623 624 1664 1665 4 623 624 1664 1665 4 623 624 1664 1665 4 623 624 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 8 623 624 1046 1047 1089 1090 1664 1665 3 623 1046 1089 3 623 1046 1089 3 623 1046 1089 3 623 1046 1089 3 623 1046 1089 3 623 1046 1089 3 624 1263 1306 3 624 1263 1306 3 624 1263 1306 3 624 1263 1306 3 624 1263 1306 3 624 1263 1306 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 11 624 625 626 1263 1264 1306 1307 1672 1673 1674 1675 4 624 626 1673 1675 4 624 626 1673 1675 4 624 626 1673 1675 4 624 626 1673 1675 4 624 626 1673 1675 4 624 626 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 8 624 626 1047 1048 1090 1091 1673 1675 3 624 1047 1090 3 624 1047 1090 3 624 1047 1090 3 624 1047 1090 3 624 1047 1090 3 624 1047 1090 8 625 1387 1398 1672 1674 2050 2052 3012 8 625 1387 1398 1672 1674 2050 2052 3012 8 625 1387 1398 1672 1674 2050 2052 3012 8 625 1387 1398 1672 1674 2050 2052 3012 8 625 1387 1398 1672 1674 2050 2052 3012 8 625 1387 1398 1672 1674 2050 2052 3012 4 625 1387 1398 3012 4 625 1387 1398 3012 4 625 1387 1398 3012 4 625 1387 1398 3012 4 625 1387 1398 3012 4 625 1387 1398 3012 6 625 1387 1398 1682 2042 3012 6 625 1387 1398 1682 2042 3012 6 625 1387 1398 1682 2042 3012 6 625 1387 1398 1682 2042 3012 6 625 1387 1398 1682 2042 3012 6 625 1387 1398 1682 2042 3012 2 625 1682 2 625 1682 2 625 1682 2 625 1682 2 625 1682 2 625 1682 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 10 625 626 627 1264 1265 1307 1308 1681 1682 1683 4 625 626 1264 1307 4 625 626 1264 1307 4 625 626 1264 1307 4 625 626 1264 1307 4 625 626 1264 1307 4 625 626 1264 1307 3 625 1672 1674 3 625 1672 1674 3 625 1672 1674 3 625 1672 1674 3 625 1672 1674 3 625 1672 1674 4 626 627 1681 1683 4 626 627 1681 1683 4 626 627 1681 1683 4 626 627 1681 1683 4 626 627 1681 1683 4 626 627 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 8 626 627 1048 1049 1091 1092 1681 1683 3 626 1048 1091 3 626 1048 1091 3 626 1048 1091 3 626 1048 1091 3 626 1048 1091 3 626 1048 1091 3 627 1265 1308 3 627 1265 1308 3 627 1265 1308 3 627 1265 1308 3 627 1265 1308 3 627 1265 1308 8 627 628 1265 1266 1308 1309 1688 1689 8 627 628 1265 1266 1308 1309 1688 1689 8 627 628 1265 1266 1308 1309 1688 1689 8 627 628 1265 1266 1308 1309 1688 1689 8 627 628 1265 1266 1308 1309 1688 1689 8 627 628 1265 1266 1308 1309 1688 1689 4 627 628 1688 1689 4 627 628 1688 1689 4 627 628 1688 1689 4 627 628 1688 1689 4 627 628 1688 1689 4 627 628 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 8 627 628 1049 1050 1092 1093 1688 1689 3 627 1049 1092 3 627 1049 1092 3 627 1049 1092 3 627 1049 1092 3 627 1049 1092 3 627 1049 1092 3 628 1266 1309 3 628 1266 1309 3 628 1266 1309 3 628 1266 1309 3 628 1266 1309 3 628 1266 1309 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 11 628 629 630 1266 1267 1309 1310 1696 1697 1698 1699 4 628 630 1697 1699 4 628 630 1697 1699 4 628 630 1697 1699 4 628 630 1697 1699 4 628 630 1697 1699 4 628 630 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 8 628 630 1050 1051 1093 1094 1697 1699 3 628 1050 1093 3 628 1050 1093 3 628 1050 1093 3 628 1050 1093 3 628 1050 1093 3 628 1050 1093 8 629 1388 1399 1696 1698 2026 2028 3008 8 629 1388 1399 1696 1698 2026 2028 3008 8 629 1388 1399 1696 1698 2026 2028 3008 8 629 1388 1399 1696 1698 2026 2028 3008 8 629 1388 1399 1696 1698 2026 2028 3008 8 629 1388 1399 1696 1698 2026 2028 3008 4 629 1388 1399 3008 4 629 1388 1399 3008 4 629 1388 1399 3008 4 629 1388 1399 3008 4 629 1388 1399 3008 4 629 1388 1399 3008 8 629 1388 1399 1706 1708 2016 2018 3008 8 629 1388 1399 1706 1708 2016 2018 3008 8 629 1388 1399 1706 1708 2016 2018 3008 8 629 1388 1399 1706 1708 2016 2018 3008 8 629 1388 1399 1706 1708 2016 2018 3008 8 629 1388 1399 1706 1708 2016 2018 3008 3 629 1706 1708 3 629 1706 1708 3 629 1706 1708 3 629 1706 1708 3 629 1706 1708 3 629 1706 1708 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 11 629 630 631 1267 1268 1310 1311 1706 1707 1708 1709 4 629 630 1267 1310 4 629 630 1267 1310 4 629 630 1267 1310 4 629 630 1267 1310 4 629 630 1267 1310 4 629 630 1267 1310 3 629 1696 1698 3 629 1696 1698 3 629 1696 1698 3 629 1696 1698 3 629 1696 1698 3 629 1696 1698 4 630 631 1707 1709 4 630 631 1707 1709 4 630 631 1707 1709 4 630 631 1707 1709 4 630 631 1707 1709 4 630 631 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 8 630 631 1051 1052 1094 1095 1707 1709 3 630 1051 1094 3 630 1051 1094 3 630 1051 1094 3 630 1051 1094 3 630 1051 1094 3 630 1051 1094 3 631 1268 1311 3 631 1268 1311 3 631 1268 1311 3 631 1268 1311 3 631 1268 1311 3 631 1268 1311 8 631 632 1268 1269 1311 1312 1714 1715 8 631 632 1268 1269 1311 1312 1714 1715 8 631 632 1268 1269 1311 1312 1714 1715 8 631 632 1268 1269 1311 1312 1714 1715 8 631 632 1268 1269 1311 1312 1714 1715 8 631 632 1268 1269 1311 1312 1714 1715 4 631 632 1714 1715 4 631 632 1714 1715 4 631 632 1714 1715 4 631 632 1714 1715 4 631 632 1714 1715 4 631 632 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 8 631 632 1052 1053 1095 1096 1714 1715 3 631 1052 1095 3 631 1052 1095 3 631 1052 1095 3 631 1052 1095 3 631 1052 1095 3 631 1052 1095 3 632 1269 1312 3 632 1269 1312 3 632 1269 1312 3 632 1269 1312 3 632 1269 1312 3 632 1269 1312 3 632 1053 1096 3 632 1053 1096 3 632 1053 1096 3 632 1053 1096 3 632 1053 1096 3 632 1053 1096 3 633 1184 1227 3 633 1184 1227 3 633 1184 1227 3 633 1184 1227 3 633 1184 1227 3 633 1184 1227 10 633 634 641 643 1184 1185 1227 1228 1404 1405 10 633 634 641 643 1184 1185 1227 1228 1404 1405 10 633 634 641 643 1184 1185 1227 1228 1404 1405 10 633 634 641 643 1184 1185 1227 1228 1404 1405 10 633 634 641 643 1184 1185 1227 1228 1404 1405 10 633 634 641 643 1184 1185 1227 1228 1404 1405 4 633 634 1404 1405 4 633 634 1404 1405 4 633 634 1404 1405 4 633 634 1404 1405 4 633 634 1404 1405 4 633 634 1404 1405 8 633 634 968 969 1011 1012 1404 1405 8 633 634 968 969 1011 1012 1404 1405 8 633 634 968 969 1011 1012 1404 1405 8 633 634 968 969 1011 1012 1404 1405 8 633 634 968 969 1011 1012 1404 1405 8 633 634 968 969 1011 1012 1404 1405 3 633 968 1011 3 633 968 1011 3 633 968 1011 3 633 968 1011 3 633 968 1011 3 633 968 1011 4 634 641 1185 1228 4 634 641 1185 1228 4 634 641 1185 1228 4 634 641 1185 1228 4 634 641 1185 1228 4 634 641 1185 1228 10 634 636 638 641 1185 1186 1228 1229 1411 1412 10 634 636 638 641 1185 1186 1228 1229 1411 1412 10 634 636 638 641 1185 1186 1228 1229 1411 1412 10 634 636 638 641 1185 1186 1228 1229 1411 1412 10 634 636 638 641 1185 1186 1228 1229 1411 1412 10 634 636 638 641 1185 1186 1228 1229 1411 1412 4 634 636 1411 1412 4 634 636 1411 1412 4 634 636 1411 1412 4 634 636 1411 1412 4 634 636 1411 1412 4 634 636 1411 1412 8 634 636 969 970 1012 1013 1411 1412 8 634 636 969 970 1012 1013 1411 1412 8 634 636 969 970 1012 1013 1411 1412 8 634 636 969 970 1012 1013 1411 1412 8 634 636 969 970 1012 1013 1411 1412 8 634 636 969 970 1012 1013 1411 1412 3 634 969 1012 3 634 969 1012 3 634 969 1012 3 634 969 1012 3 634 969 1012 3 634 969 1012 10 635 636 637 638 1186 1187 1229 1230 1417 1418 10 635 636 637 638 1186 1187 1229 1230 1417 1418 10 635 636 637 638 1186 1187 1229 1230 1417 1418 10 635 636 637 638 1186 1187 1229 1230 1417 1418 10 635 636 637 638 1186 1187 1229 1230 1417 1418 10 635 636 637 638 1186 1187 1229 1230 1417 1418 4 635 637 1187 1230 4 635 637 1187 1230 4 635 637 1187 1230 4 635 637 1187 1230 4 635 637 1187 1230 4 635 637 1187 1230 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 10 635 637 639 1187 1188 1230 1231 1423 1424 1853 2 635 638 2 635 638 2 635 638 2 635 638 2 635 638 2 635 638 1 635 1 635 1 635 1 635 1 635 1 635 2 635 1853 2 635 1853 2 635 1853 2 635 1853 2 635 1853 2 635 1853 4 636 638 1186 1229 4 636 638 1186 1229 4 636 638 1186 1229 4 636 638 1186 1229 4 636 638 1186 1229 4 636 638 1186 1229 4 636 637 1417 1418 4 636 637 1417 1418 4 636 637 1417 1418 4 636 637 1417 1418 4 636 637 1417 1418 4 636 637 1417 1418 8 636 637 970 971 1013 1014 1417 1418 8 636 637 970 971 1013 1014 1417 1418 8 636 637 970 971 1013 1014 1417 1418 8 636 637 970 971 1013 1014 1417 1418 8 636 637 970 971 1013 1014 1417 1418 8 636 637 970 971 1013 1014 1417 1418 3 636 970 1013 3 636 970 1013 3 636 970 1013 3 636 970 1013 3 636 970 1013 3 636 970 1013 4 637 639 1423 1424 4 637 639 1423 1424 4 637 639 1423 1424 4 637 639 1423 1424 4 637 639 1423 1424 4 637 639 1423 1424 8 637 639 971 972 1014 1015 1423 1424 8 637 639 971 972 1014 1015 1423 1424 8 637 639 971 972 1014 1015 1423 1424 8 637 639 971 972 1014 1015 1423 1424 8 637 639 971 972 1014 1015 1423 1424 8 637 639 971 972 1014 1015 1423 1424 3 637 971 1014 3 637 971 1014 3 637 971 1014 3 637 971 1014 3 637 971 1014 3 637 971 1014 2 638 641 2 638 641 2 638 641 2 638 641 2 638 641 2 638 641 1 638 1 638 1 638 1 638 1 638 1 638 4 639 1188 1231 1853 4 639 1188 1231 1853 4 639 1188 1231 1853 4 639 1188 1231 1853 4 639 1188 1231 1853 4 639 1188 1231 1853 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 10 639 640 1188 1189 1231 1232 1429 1430 1853 1854 4 639 640 1429 1430 4 639 640 1429 1430 4 639 640 1429 1430 4 639 640 1429 1430 4 639 640 1429 1430 4 639 640 1429 1430 8 639 640 972 973 1015 1016 1429 1430 8 639 640 972 973 1015 1016 1429 1430 8 639 640 972 973 1015 1016 1429 1430 8 639 640 972 973 1015 1016 1429 1430 8 639 640 972 973 1015 1016 1429 1430 8 639 640 972 973 1015 1016 1429 1430 3 639 972 1015 3 639 972 1015 3 639 972 1015 3 639 972 1015 3 639 972 1015 3 639 972 1015 4 640 1189 1232 1854 4 640 1189 1232 1854 4 640 1189 1232 1854 4 640 1189 1232 1854 4 640 1189 1232 1854 4 640 1189 1232 1854 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 10 640 642 1189 1190 1232 1233 1435 1436 1854 1855 4 640 642 1435 1436 4 640 642 1435 1436 4 640 642 1435 1436 4 640 642 1435 1436 4 640 642 1435 1436 4 640 642 1435 1436 8 640 642 973 974 1016 1017 1435 1436 8 640 642 973 974 1016 1017 1435 1436 8 640 642 973 974 1016 1017 1435 1436 8 640 642 973 974 1016 1017 1435 1436 8 640 642 973 974 1016 1017 1435 1436 8 640 642 973 974 1016 1017 1435 1436 3 640 973 1016 3 640 973 1016 3 640 973 1016 3 640 973 1016 3 640 973 1016 3 640 973 1016 2 641 643 2 641 643 2 641 643 2 641 643 2 641 643 2 641 643 4 642 1190 1233 1855 4 642 1190 1233 1855 4 642 1190 1233 1855 4 642 1190 1233 1855 4 642 1190 1233 1855 4 642 1190 1233 1855 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 10 642 644 1190 1191 1233 1234 1441 1442 1855 1857 4 642 644 1441 1442 4 642 644 1441 1442 4 642 644 1441 1442 4 642 644 1441 1442 4 642 644 1441 1442 4 642 644 1441 1442 8 642 644 974 975 1017 1018 1441 1442 8 642 644 974 975 1017 1018 1441 1442 8 642 644 974 975 1017 1018 1441 1442 8 642 644 974 975 1017 1018 1441 1442 8 642 644 974 975 1017 1018 1441 1442 8 642 644 974 975 1017 1018 1441 1442 3 642 974 1017 3 642 974 1017 3 642 974 1017 3 642 974 1017 3 642 974 1017 3 642 974 1017 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 1 643 1 643 1 643 1 643 1 643 1 643 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 2 643 2994 1 643 1 643 1 643 1 643 1 643 1 643 4 644 1191 1234 1857 4 644 1191 1234 1857 4 644 1191 1234 1857 4 644 1191 1234 1857 4 644 1191 1234 1857 4 644 1191 1234 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 10 644 645 1191 1192 1234 1235 1448 1449 1856 1857 4 644 645 1448 1449 4 644 645 1448 1449 4 644 645 1448 1449 4 644 645 1448 1449 4 644 645 1448 1449 4 644 645 1448 1449 8 644 645 975 976 1018 1019 1448 1449 8 644 645 975 976 1018 1019 1448 1449 8 644 645 975 976 1018 1019 1448 1449 8 644 645 975 976 1018 1019 1448 1449 8 644 645 975 976 1018 1019 1448 1449 8 644 645 975 976 1018 1019 1448 1449 3 644 975 1018 3 644 975 1018 3 644 975 1018 3 644 975 1018 3 644 975 1018 3 644 975 1018 3 645 1192 1235 3 645 1192 1235 3 645 1192 1235 3 645 1192 1235 3 645 1192 1235 3 645 1192 1235 8 645 646 1192 1193 1235 1236 1455 1456 8 645 646 1192 1193 1235 1236 1455 1456 8 645 646 1192 1193 1235 1236 1455 1456 8 645 646 1192 1193 1235 1236 1455 1456 8 645 646 1192 1193 1235 1236 1455 1456 8 645 646 1192 1193 1235 1236 1455 1456 4 645 646 1455 1456 4 645 646 1455 1456 4 645 646 1455 1456 4 645 646 1455 1456 4 645 646 1455 1456 4 645 646 1455 1456 8 645 646 976 977 1019 1020 1455 1456 8 645 646 976 977 1019 1020 1455 1456 8 645 646 976 977 1019 1020 1455 1456 8 645 646 976 977 1019 1020 1455 1456 8 645 646 976 977 1019 1020 1455 1456 8 645 646 976 977 1019 1020 1455 1456 3 645 976 1019 3 645 976 1019 3 645 976 1019 3 645 976 1019 3 645 976 1019 3 645 976 1019 3 646 1193 1236 3 646 1193 1236 3 646 1193 1236 3 646 1193 1236 3 646 1193 1236 3 646 1193 1236 8 646 647 1193 1194 1236 1237 1462 1463 8 646 647 1193 1194 1236 1237 1462 1463 8 646 647 1193 1194 1236 1237 1462 1463 8 646 647 1193 1194 1236 1237 1462 1463 8 646 647 1193 1194 1236 1237 1462 1463 8 646 647 1193 1194 1236 1237 1462 1463 4 646 647 1462 1463 4 646 647 1462 1463 4 646 647 1462 1463 4 646 647 1462 1463 4 646 647 1462 1463 4 646 647 1462 1463 8 646 647 977 978 1020 1021 1462 1463 8 646 647 977 978 1020 1021 1462 1463 8 646 647 977 978 1020 1021 1462 1463 8 646 647 977 978 1020 1021 1462 1463 8 646 647 977 978 1020 1021 1462 1463 8 646 647 977 978 1020 1021 1462 1463 3 646 977 1020 3 646 977 1020 3 646 977 1020 3 646 977 1020 3 646 977 1020 3 646 977 1020 3 647 1194 1237 3 647 1194 1237 3 647 1194 1237 3 647 1194 1237 3 647 1194 1237 3 647 1194 1237 8 647 648 1194 1195 1237 1238 1470 1471 8 647 648 1194 1195 1237 1238 1470 1471 8 647 648 1194 1195 1237 1238 1470 1471 8 647 648 1194 1195 1237 1238 1470 1471 8 647 648 1194 1195 1237 1238 1470 1471 8 647 648 1194 1195 1237 1238 1470 1471 4 647 648 1470 1471 4 647 648 1470 1471 4 647 648 1470 1471 4 647 648 1470 1471 4 647 648 1470 1471 4 647 648 1470 1471 8 647 648 978 979 1021 1022 1470 1471 8 647 648 978 979 1021 1022 1470 1471 8 647 648 978 979 1021 1022 1470 1471 8 647 648 978 979 1021 1022 1470 1471 8 647 648 978 979 1021 1022 1470 1471 8 647 648 978 979 1021 1022 1470 1471 3 647 978 1021 3 647 978 1021 3 647 978 1021 3 647 978 1021 3 647 978 1021 3 647 978 1021 3 648 1195 1238 3 648 1195 1238 3 648 1195 1238 3 648 1195 1238 3 648 1195 1238 3 648 1195 1238 8 648 649 1195 1196 1238 1239 1477 1478 8 648 649 1195 1196 1238 1239 1477 1478 8 648 649 1195 1196 1238 1239 1477 1478 8 648 649 1195 1196 1238 1239 1477 1478 8 648 649 1195 1196 1238 1239 1477 1478 8 648 649 1195 1196 1238 1239 1477 1478 4 648 649 1477 1478 4 648 649 1477 1478 4 648 649 1477 1478 4 648 649 1477 1478 4 648 649 1477 1478 4 648 649 1477 1478 8 648 649 979 980 1022 1023 1477 1478 8 648 649 979 980 1022 1023 1477 1478 8 648 649 979 980 1022 1023 1477 1478 8 648 649 979 980 1022 1023 1477 1478 8 648 649 979 980 1022 1023 1477 1478 8 648 649 979 980 1022 1023 1477 1478 3 648 979 1022 3 648 979 1022 3 648 979 1022 3 648 979 1022 3 648 979 1022 3 648 979 1022 3 649 1196 1239 3 649 1196 1239 3 649 1196 1239 3 649 1196 1239 3 649 1196 1239 3 649 1196 1239 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 11 649 650 651 1196 1197 1239 1240 1484 1485 1486 1487 4 649 651 1485 1487 4 649 651 1485 1487 4 649 651 1485 1487 4 649 651 1485 1487 4 649 651 1485 1487 4 649 651 1485 1487 8 649 651 980 981 1023 1024 1485 1487 8 649 651 980 981 1023 1024 1485 1487 8 649 651 980 981 1023 1024 1485 1487 8 649 651 980 981 1023 1024 1485 1487 8 649 651 980 981 1023 1024 1485 1487 8 649 651 980 981 1023 1024 1485 1487 3 649 980 1023 3 649 980 1023 3 649 980 1023 3 649 980 1023 3 649 980 1023 3 649 980 1023 8 650 1368 1379 1484 1486 2238 2240 2987 8 650 1368 1379 1484 1486 2238 2240 2987 8 650 1368 1379 1484 1486 2238 2240 2987 8 650 1368 1379 1484 1486 2238 2240 2987 8 650 1368 1379 1484 1486 2238 2240 2987 8 650 1368 1379 1484 1486 2238 2240 2987 4 650 1368 1379 2987 4 650 1368 1379 2987 4 650 1368 1379 2987 4 650 1368 1379 2987 4 650 1368 1379 2987 4 650 1368 1379 2987 8 650 1368 1379 1494 1496 2228 2230 2987 8 650 1368 1379 1494 1496 2228 2230 2987 8 650 1368 1379 1494 1496 2228 2230 2987 8 650 1368 1379 1494 1496 2228 2230 2987 8 650 1368 1379 1494 1496 2228 2230 2987 8 650 1368 1379 1494 1496 2228 2230 2987 3 650 1494 1496 3 650 1494 1496 3 650 1494 1496 3 650 1494 1496 3 650 1494 1496 3 650 1494 1496 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 11 650 651 652 1197 1198 1240 1241 1494 1495 1496 1497 4 650 651 1197 1240 4 650 651 1197 1240 4 650 651 1197 1240 4 650 651 1197 1240 4 650 651 1197 1240 4 650 651 1197 1240 3 650 1484 1486 3 650 1484 1486 3 650 1484 1486 3 650 1484 1486 3 650 1484 1486 3 650 1484 1486 4 651 652 1495 1497 4 651 652 1495 1497 4 651 652 1495 1497 4 651 652 1495 1497 4 651 652 1495 1497 4 651 652 1495 1497 8 651 652 981 982 1024 1025 1495 1497 8 651 652 981 982 1024 1025 1495 1497 8 651 652 981 982 1024 1025 1495 1497 8 651 652 981 982 1024 1025 1495 1497 8 651 652 981 982 1024 1025 1495 1497 8 651 652 981 982 1024 1025 1495 1497 3 651 981 1024 3 651 981 1024 3 651 981 1024 3 651 981 1024 3 651 981 1024 3 651 981 1024 3 652 1198 1241 3 652 1198 1241 3 652 1198 1241 3 652 1198 1241 3 652 1198 1241 3 652 1198 1241 8 652 653 1198 1199 1241 1242 1503 1504 8 652 653 1198 1199 1241 1242 1503 1504 8 652 653 1198 1199 1241 1242 1503 1504 8 652 653 1198 1199 1241 1242 1503 1504 8 652 653 1198 1199 1241 1242 1503 1504 8 652 653 1198 1199 1241 1242 1503 1504 4 652 653 1503 1504 4 652 653 1503 1504 4 652 653 1503 1504 4 652 653 1503 1504 4 652 653 1503 1504 4 652 653 1503 1504 8 652 653 982 983 1025 1026 1503 1504 8 652 653 982 983 1025 1026 1503 1504 8 652 653 982 983 1025 1026 1503 1504 8 652 653 982 983 1025 1026 1503 1504 8 652 653 982 983 1025 1026 1503 1504 8 652 653 982 983 1025 1026 1503 1504 3 652 982 1025 3 652 982 1025 3 652 982 1025 3 652 982 1025 3 652 982 1025 3 652 982 1025 3 653 1199 1242 3 653 1199 1242 3 653 1199 1242 3 653 1199 1242 3 653 1199 1242 3 653 1199 1242 8 653 654 1199 1200 1242 1243 1510 1511 8 653 654 1199 1200 1242 1243 1510 1511 8 653 654 1199 1200 1242 1243 1510 1511 8 653 654 1199 1200 1242 1243 1510 1511 8 653 654 1199 1200 1242 1243 1510 1511 8 653 654 1199 1200 1242 1243 1510 1511 4 653 654 1510 1511 4 653 654 1510 1511 4 653 654 1510 1511 4 653 654 1510 1511 4 653 654 1510 1511 4 653 654 1510 1511 8 653 654 983 984 1026 1027 1510 1511 8 653 654 983 984 1026 1027 1510 1511 8 653 654 983 984 1026 1027 1510 1511 8 653 654 983 984 1026 1027 1510 1511 8 653 654 983 984 1026 1027 1510 1511 8 653 654 983 984 1026 1027 1510 1511 3 653 983 1026 3 653 983 1026 3 653 983 1026 3 653 983 1026 3 653 983 1026 3 653 983 1026 3 654 1200 1243 3 654 1200 1243 3 654 1200 1243 3 654 1200 1243 3 654 1200 1243 3 654 1200 1243 8 654 655 1200 1201 1243 1244 1518 1519 8 654 655 1200 1201 1243 1244 1518 1519 8 654 655 1200 1201 1243 1244 1518 1519 8 654 655 1200 1201 1243 1244 1518 1519 8 654 655 1200 1201 1243 1244 1518 1519 8 654 655 1200 1201 1243 1244 1518 1519 4 654 655 1518 1519 4 654 655 1518 1519 4 654 655 1518 1519 4 654 655 1518 1519 4 654 655 1518 1519 4 654 655 1518 1519 8 654 655 984 985 1027 1028 1518 1519 8 654 655 984 985 1027 1028 1518 1519 8 654 655 984 985 1027 1028 1518 1519 8 654 655 984 985 1027 1028 1518 1519 8 654 655 984 985 1027 1028 1518 1519 8 654 655 984 985 1027 1028 1518 1519 3 654 984 1027 3 654 984 1027 3 654 984 1027 3 654 984 1027 3 654 984 1027 3 654 984 1027 3 655 1201 1244 3 655 1201 1244 3 655 1201 1244 3 655 1201 1244 3 655 1201 1244 3 655 1201 1244 8 655 656 1201 1202 1244 1245 1525 1526 8 655 656 1201 1202 1244 1245 1525 1526 8 655 656 1201 1202 1244 1245 1525 1526 8 655 656 1201 1202 1244 1245 1525 1526 8 655 656 1201 1202 1244 1245 1525 1526 8 655 656 1201 1202 1244 1245 1525 1526 4 655 656 1525 1526 4 655 656 1525 1526 4 655 656 1525 1526 4 655 656 1525 1526 4 655 656 1525 1526 4 655 656 1525 1526 8 655 656 985 986 1028 1029 1525 1526 8 655 656 985 986 1028 1029 1525 1526 8 655 656 985 986 1028 1029 1525 1526 8 655 656 985 986 1028 1029 1525 1526 8 655 656 985 986 1028 1029 1525 1526 8 655 656 985 986 1028 1029 1525 1526 3 655 985 1028 3 655 985 1028 3 655 985 1028 3 655 985 1028 3 655 985 1028 3 655 985 1028 3 656 1202 1245 3 656 1202 1245 3 656 1202 1245 3 656 1202 1245 3 656 1202 1245 3 656 1202 1245 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 10 656 657 1202 1203 1245 1246 1532 1533 1534 1535 4 656 657 1533 1535 4 656 657 1533 1535 4 656 657 1533 1535 4 656 657 1533 1535 4 656 657 1533 1535 4 656 657 1533 1535 8 656 657 986 987 1029 1030 1533 1535 8 656 657 986 987 1029 1030 1533 1535 8 656 657 986 987 1029 1030 1533 1535 8 656 657 986 987 1029 1030 1533 1535 8 656 657 986 987 1029 1030 1533 1535 8 656 657 986 987 1029 1030 1533 1535 3 656 986 1029 3 656 986 1029 3 656 986 1029 3 656 986 1029 3 656 986 1029 3 656 986 1029 3 657 1203 1246 3 657 1203 1246 3 657 1203 1246 3 657 1203 1246 3 657 1203 1246 3 657 1203 1246 8 657 658 1203 1204 1246 1247 1542 1543 8 657 658 1203 1204 1246 1247 1542 1543 8 657 658 1203 1204 1246 1247 1542 1543 8 657 658 1203 1204 1246 1247 1542 1543 8 657 658 1203 1204 1246 1247 1542 1543 8 657 658 1203 1204 1246 1247 1542 1543 4 657 658 1542 1543 4 657 658 1542 1543 4 657 658 1542 1543 4 657 658 1542 1543 4 657 658 1542 1543 4 657 658 1542 1543 8 657 658 987 988 1030 1031 1542 1543 8 657 658 987 988 1030 1031 1542 1543 8 657 658 987 988 1030 1031 1542 1543 8 657 658 987 988 1030 1031 1542 1543 8 657 658 987 988 1030 1031 1542 1543 8 657 658 987 988 1030 1031 1542 1543 3 657 987 1030 3 657 987 1030 3 657 987 1030 3 657 987 1030 3 657 987 1030 3 657 987 1030 3 658 1204 1247 3 658 1204 1247 3 658 1204 1247 3 658 1204 1247 3 658 1204 1247 3 658 1204 1247 8 658 659 1204 1205 1247 1248 1549 1550 8 658 659 1204 1205 1247 1248 1549 1550 8 658 659 1204 1205 1247 1248 1549 1550 8 658 659 1204 1205 1247 1248 1549 1550 8 658 659 1204 1205 1247 1248 1549 1550 8 658 659 1204 1205 1247 1248 1549 1550 4 658 659 1549 1550 4 658 659 1549 1550 4 658 659 1549 1550 4 658 659 1549 1550 4 658 659 1549 1550 4 658 659 1549 1550 8 658 659 988 989 1031 1032 1549 1550 8 658 659 988 989 1031 1032 1549 1550 8 658 659 988 989 1031 1032 1549 1550 8 658 659 988 989 1031 1032 1549 1550 8 658 659 988 989 1031 1032 1549 1550 8 658 659 988 989 1031 1032 1549 1550 3 658 988 1031 3 658 988 1031 3 658 988 1031 3 658 988 1031 3 658 988 1031 3 658 988 1031 3 659 1205 1248 3 659 1205 1248 3 659 1205 1248 3 659 1205 1248 3 659 1205 1248 3 659 1205 1248 8 659 660 1205 1206 1248 1249 1556 1557 8 659 660 1205 1206 1248 1249 1556 1557 8 659 660 1205 1206 1248 1249 1556 1557 8 659 660 1205 1206 1248 1249 1556 1557 8 659 660 1205 1206 1248 1249 1556 1557 8 659 660 1205 1206 1248 1249 1556 1557 4 659 660 1556 1557 4 659 660 1556 1557 4 659 660 1556 1557 4 659 660 1556 1557 4 659 660 1556 1557 4 659 660 1556 1557 8 659 660 989 990 1032 1033 1556 1557 8 659 660 989 990 1032 1033 1556 1557 8 659 660 989 990 1032 1033 1556 1557 8 659 660 989 990 1032 1033 1556 1557 8 659 660 989 990 1032 1033 1556 1557 8 659 660 989 990 1032 1033 1556 1557 3 659 989 1032 3 659 989 1032 3 659 989 1032 3 659 989 1032 3 659 989 1032 3 659 989 1032 3 660 1206 1249 3 660 1206 1249 3 660 1206 1249 3 660 1206 1249 3 660 1206 1249 3 660 1206 1249 8 660 661 1206 1207 1249 1250 1564 1565 8 660 661 1206 1207 1249 1250 1564 1565 8 660 661 1206 1207 1249 1250 1564 1565 8 660 661 1206 1207 1249 1250 1564 1565 8 660 661 1206 1207 1249 1250 1564 1565 8 660 661 1206 1207 1249 1250 1564 1565 4 660 661 1564 1565 4 660 661 1564 1565 4 660 661 1564 1565 4 660 661 1564 1565 4 660 661 1564 1565 4 660 661 1564 1565 8 660 661 990 991 1033 1034 1564 1565 8 660 661 990 991 1033 1034 1564 1565 8 660 661 990 991 1033 1034 1564 1565 8 660 661 990 991 1033 1034 1564 1565 8 660 661 990 991 1033 1034 1564 1565 8 660 661 990 991 1033 1034 1564 1565 3 660 990 1033 3 660 990 1033 3 660 990 1033 3 660 990 1033 3 660 990 1033 3 660 990 1033 3 661 1207 1250 3 661 1207 1250 3 661 1207 1250 3 661 1207 1250 3 661 1207 1250 3 661 1207 1250 8 661 662 1207 1208 1250 1251 1571 1572 8 661 662 1207 1208 1250 1251 1571 1572 8 661 662 1207 1208 1250 1251 1571 1572 8 661 662 1207 1208 1250 1251 1571 1572 8 661 662 1207 1208 1250 1251 1571 1572 8 661 662 1207 1208 1250 1251 1571 1572 4 661 662 1571 1572 4 661 662 1571 1572 4 661 662 1571 1572 4 661 662 1571 1572 4 661 662 1571 1572 4 661 662 1571 1572 8 661 662 991 992 1034 1035 1571 1572 8 661 662 991 992 1034 1035 1571 1572 8 661 662 991 992 1034 1035 1571 1572 8 661 662 991 992 1034 1035 1571 1572 8 661 662 991 992 1034 1035 1571 1572 8 661 662 991 992 1034 1035 1571 1572 3 661 991 1034 3 661 991 1034 3 661 991 1034 3 661 991 1034 3 661 991 1034 3 661 991 1034 3 662 1208 1251 3 662 1208 1251 3 662 1208 1251 3 662 1208 1251 3 662 1208 1251 3 662 1208 1251 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 10 662 663 1208 1209 1251 1252 1578 1579 1580 1581 4 662 663 1579 1581 4 662 663 1579 1581 4 662 663 1579 1581 4 662 663 1579 1581 4 662 663 1579 1581 4 662 663 1579 1581 8 662 663 992 993 1035 1036 1579 1581 8 662 663 992 993 1035 1036 1579 1581 8 662 663 992 993 1035 1036 1579 1581 8 662 663 992 993 1035 1036 1579 1581 8 662 663 992 993 1035 1036 1579 1581 8 662 663 992 993 1035 1036 1579 1581 3 662 992 1035 3 662 992 1035 3 662 992 1035 3 662 992 1035 3 662 992 1035 3 662 992 1035 3 663 1209 1252 3 663 1209 1252 3 663 1209 1252 3 663 1209 1252 3 663 1209 1252 3 663 1209 1252 8 663 664 1209 1210 1252 1253 1588 1589 8 663 664 1209 1210 1252 1253 1588 1589 8 663 664 1209 1210 1252 1253 1588 1589 8 663 664 1209 1210 1252 1253 1588 1589 8 663 664 1209 1210 1252 1253 1588 1589 8 663 664 1209 1210 1252 1253 1588 1589 4 663 664 1588 1589 4 663 664 1588 1589 4 663 664 1588 1589 4 663 664 1588 1589 4 663 664 1588 1589 4 663 664 1588 1589 8 663 664 993 994 1036 1037 1588 1589 8 663 664 993 994 1036 1037 1588 1589 8 663 664 993 994 1036 1037 1588 1589 8 663 664 993 994 1036 1037 1588 1589 8 663 664 993 994 1036 1037 1588 1589 8 663 664 993 994 1036 1037 1588 1589 3 663 993 1036 3 663 993 1036 3 663 993 1036 3 663 993 1036 3 663 993 1036 3 663 993 1036 3 664 1210 1253 3 664 1210 1253 3 664 1210 1253 3 664 1210 1253 3 664 1210 1253 3 664 1210 1253 8 664 665 1210 1211 1253 1254 1595 1596 8 664 665 1210 1211 1253 1254 1595 1596 8 664 665 1210 1211 1253 1254 1595 1596 8 664 665 1210 1211 1253 1254 1595 1596 8 664 665 1210 1211 1253 1254 1595 1596 8 664 665 1210 1211 1253 1254 1595 1596 4 664 665 1595 1596 4 664 665 1595 1596 4 664 665 1595 1596 4 664 665 1595 1596 4 664 665 1595 1596 4 664 665 1595 1596 8 664 665 994 995 1037 1038 1595 1596 8 664 665 994 995 1037 1038 1595 1596 8 664 665 994 995 1037 1038 1595 1596 8 664 665 994 995 1037 1038 1595 1596 8 664 665 994 995 1037 1038 1595 1596 8 664 665 994 995 1037 1038 1595 1596 3 664 994 1037 3 664 994 1037 3 664 994 1037 3 664 994 1037 3 664 994 1037 3 664 994 1037 3 665 1211 1254 3 665 1211 1254 3 665 1211 1254 3 665 1211 1254 3 665 1211 1254 3 665 1211 1254 8 665 666 1211 1212 1254 1255 1602 1603 8 665 666 1211 1212 1254 1255 1602 1603 8 665 666 1211 1212 1254 1255 1602 1603 8 665 666 1211 1212 1254 1255 1602 1603 8 665 666 1211 1212 1254 1255 1602 1603 8 665 666 1211 1212 1254 1255 1602 1603 4 665 666 1602 1603 4 665 666 1602 1603 4 665 666 1602 1603 4 665 666 1602 1603 4 665 666 1602 1603 4 665 666 1602 1603 8 665 666 995 996 1038 1039 1602 1603 8 665 666 995 996 1038 1039 1602 1603 8 665 666 995 996 1038 1039 1602 1603 8 665 666 995 996 1038 1039 1602 1603 8 665 666 995 996 1038 1039 1602 1603 8 665 666 995 996 1038 1039 1602 1603 3 665 995 1038 3 665 995 1038 3 665 995 1038 3 665 995 1038 3 665 995 1038 3 665 995 1038 3 666 1212 1255 3 666 1212 1255 3 666 1212 1255 3 666 1212 1255 3 666 1212 1255 3 666 1212 1255 8 666 667 1212 1213 1255 1256 1610 1611 8 666 667 1212 1213 1255 1256 1610 1611 8 666 667 1212 1213 1255 1256 1610 1611 8 666 667 1212 1213 1255 1256 1610 1611 8 666 667 1212 1213 1255 1256 1610 1611 8 666 667 1212 1213 1255 1256 1610 1611 4 666 667 1610 1611 4 666 667 1610 1611 4 666 667 1610 1611 4 666 667 1610 1611 4 666 667 1610 1611 4 666 667 1610 1611 8 666 667 996 997 1039 1040 1610 1611 8 666 667 996 997 1039 1040 1610 1611 8 666 667 996 997 1039 1040 1610 1611 8 666 667 996 997 1039 1040 1610 1611 8 666 667 996 997 1039 1040 1610 1611 8 666 667 996 997 1039 1040 1610 1611 3 666 996 1039 3 666 996 1039 3 666 996 1039 3 666 996 1039 3 666 996 1039 3 666 996 1039 3 667 1213 1256 3 667 1213 1256 3 667 1213 1256 3 667 1213 1256 3 667 1213 1256 3 667 1213 1256 8 667 668 1213 1214 1256 1257 1617 1618 8 667 668 1213 1214 1256 1257 1617 1618 8 667 668 1213 1214 1256 1257 1617 1618 8 667 668 1213 1214 1256 1257 1617 1618 8 667 668 1213 1214 1256 1257 1617 1618 8 667 668 1213 1214 1256 1257 1617 1618 4 667 668 1617 1618 4 667 668 1617 1618 4 667 668 1617 1618 4 667 668 1617 1618 4 667 668 1617 1618 4 667 668 1617 1618 8 667 668 997 998 1040 1041 1617 1618 8 667 668 997 998 1040 1041 1617 1618 8 667 668 997 998 1040 1041 1617 1618 8 667 668 997 998 1040 1041 1617 1618 8 667 668 997 998 1040 1041 1617 1618 8 667 668 997 998 1040 1041 1617 1618 3 667 997 1040 3 667 997 1040 3 667 997 1040 3 667 997 1040 3 667 997 1040 3 667 997 1040 3 668 1214 1257 3 668 1214 1257 3 668 1214 1257 3 668 1214 1257 3 668 1214 1257 3 668 1214 1257 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 10 668 669 1214 1215 1257 1258 1624 1625 1626 1627 4 668 669 1625 1627 4 668 669 1625 1627 4 668 669 1625 1627 4 668 669 1625 1627 4 668 669 1625 1627 4 668 669 1625 1627 8 668 669 998 999 1041 1042 1625 1627 8 668 669 998 999 1041 1042 1625 1627 8 668 669 998 999 1041 1042 1625 1627 8 668 669 998 999 1041 1042 1625 1627 8 668 669 998 999 1041 1042 1625 1627 8 668 669 998 999 1041 1042 1625 1627 3 668 998 1041 3 668 998 1041 3 668 998 1041 3 668 998 1041 3 668 998 1041 3 668 998 1041 3 669 1215 1258 3 669 1215 1258 3 669 1215 1258 3 669 1215 1258 3 669 1215 1258 3 669 1215 1258 8 669 670 1215 1216 1258 1259 1634 1635 8 669 670 1215 1216 1258 1259 1634 1635 8 669 670 1215 1216 1258 1259 1634 1635 8 669 670 1215 1216 1258 1259 1634 1635 8 669 670 1215 1216 1258 1259 1634 1635 8 669 670 1215 1216 1258 1259 1634 1635 4 669 670 1634 1635 4 669 670 1634 1635 4 669 670 1634 1635 4 669 670 1634 1635 4 669 670 1634 1635 4 669 670 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 8 669 670 999 1000 1042 1043 1634 1635 3 669 999 1042 3 669 999 1042 3 669 999 1042 3 669 999 1042 3 669 999 1042 3 669 999 1042 3 670 1216 1259 3 670 1216 1259 3 670 1216 1259 3 670 1216 1259 3 670 1216 1259 3 670 1216 1259 8 670 671 1216 1217 1259 1260 1641 1642 8 670 671 1216 1217 1259 1260 1641 1642 8 670 671 1216 1217 1259 1260 1641 1642 8 670 671 1216 1217 1259 1260 1641 1642 8 670 671 1216 1217 1259 1260 1641 1642 8 670 671 1216 1217 1259 1260 1641 1642 4 670 671 1641 1642 4 670 671 1641 1642 4 670 671 1641 1642 4 670 671 1641 1642 4 670 671 1641 1642 4 670 671 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 8 670 671 1000 1001 1043 1044 1641 1642 3 670 1000 1043 3 670 1000 1043 3 670 1000 1043 3 670 1000 1043 3 670 1000 1043 3 670 1000 1043 3 671 1217 1260 3 671 1217 1260 3 671 1217 1260 3 671 1217 1260 3 671 1217 1260 3 671 1217 1260 8 671 672 1217 1218 1260 1261 1648 1649 8 671 672 1217 1218 1260 1261 1648 1649 8 671 672 1217 1218 1260 1261 1648 1649 8 671 672 1217 1218 1260 1261 1648 1649 8 671 672 1217 1218 1260 1261 1648 1649 8 671 672 1217 1218 1260 1261 1648 1649 4 671 672 1648 1649 4 671 672 1648 1649 4 671 672 1648 1649 4 671 672 1648 1649 4 671 672 1648 1649 4 671 672 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 8 671 672 1001 1002 1044 1045 1648 1649 3 671 1001 1044 3 671 1001 1044 3 671 1001 1044 3 671 1001 1044 3 671 1001 1044 3 671 1001 1044 3 672 1218 1261 3 672 1218 1261 3 672 1218 1261 3 672 1218 1261 3 672 1218 1261 3 672 1218 1261 8 672 673 1218 1219 1261 1262 1656 1657 8 672 673 1218 1219 1261 1262 1656 1657 8 672 673 1218 1219 1261 1262 1656 1657 8 672 673 1218 1219 1261 1262 1656 1657 8 672 673 1218 1219 1261 1262 1656 1657 8 672 673 1218 1219 1261 1262 1656 1657 4 672 673 1656 1657 4 672 673 1656 1657 4 672 673 1656 1657 4 672 673 1656 1657 4 672 673 1656 1657 4 672 673 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 8 672 673 1002 1003 1045 1046 1656 1657 3 672 1002 1045 3 672 1002 1045 3 672 1002 1045 3 672 1002 1045 3 672 1002 1045 3 672 1002 1045 3 673 1219 1262 3 673 1219 1262 3 673 1219 1262 3 673 1219 1262 3 673 1219 1262 3 673 1219 1262 8 673 674 1219 1220 1262 1263 1663 1664 8 673 674 1219 1220 1262 1263 1663 1664 8 673 674 1219 1220 1262 1263 1663 1664 8 673 674 1219 1220 1262 1263 1663 1664 8 673 674 1219 1220 1262 1263 1663 1664 8 673 674 1219 1220 1262 1263 1663 1664 4 673 674 1663 1664 4 673 674 1663 1664 4 673 674 1663 1664 4 673 674 1663 1664 4 673 674 1663 1664 4 673 674 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 8 673 674 1003 1004 1046 1047 1663 1664 3 673 1003 1046 3 673 1003 1046 3 673 1003 1046 3 673 1003 1046 3 673 1003 1046 3 673 1003 1046 3 674 1220 1263 3 674 1220 1263 3 674 1220 1263 3 674 1220 1263 3 674 1220 1263 3 674 1220 1263 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 10 674 675 1220 1221 1263 1264 1670 1671 1672 1673 4 674 675 1671 1673 4 674 675 1671 1673 4 674 675 1671 1673 4 674 675 1671 1673 4 674 675 1671 1673 4 674 675 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 8 674 675 1004 1005 1047 1048 1671 1673 3 674 1004 1047 3 674 1004 1047 3 674 1004 1047 3 674 1004 1047 3 674 1004 1047 3 674 1004 1047 3 675 1221 1264 3 675 1221 1264 3 675 1221 1264 3 675 1221 1264 3 675 1221 1264 3 675 1221 1264 8 675 676 1221 1222 1264 1265 1680 1681 8 675 676 1221 1222 1264 1265 1680 1681 8 675 676 1221 1222 1264 1265 1680 1681 8 675 676 1221 1222 1264 1265 1680 1681 8 675 676 1221 1222 1264 1265 1680 1681 8 675 676 1221 1222 1264 1265 1680 1681 4 675 676 1680 1681 4 675 676 1680 1681 4 675 676 1680 1681 4 675 676 1680 1681 4 675 676 1680 1681 4 675 676 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 8 675 676 1005 1006 1048 1049 1680 1681 3 675 1005 1048 3 675 1005 1048 3 675 1005 1048 3 675 1005 1048 3 675 1005 1048 3 675 1005 1048 3 676 1222 1265 3 676 1222 1265 3 676 1222 1265 3 676 1222 1265 3 676 1222 1265 3 676 1222 1265 8 676 677 1222 1223 1265 1266 1687 1688 8 676 677 1222 1223 1265 1266 1687 1688 8 676 677 1222 1223 1265 1266 1687 1688 8 676 677 1222 1223 1265 1266 1687 1688 8 676 677 1222 1223 1265 1266 1687 1688 8 676 677 1222 1223 1265 1266 1687 1688 4 676 677 1687 1688 4 676 677 1687 1688 4 676 677 1687 1688 4 676 677 1687 1688 4 676 677 1687 1688 4 676 677 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 8 676 677 1006 1007 1049 1050 1687 1688 3 676 1006 1049 3 676 1006 1049 3 676 1006 1049 3 676 1006 1049 3 676 1006 1049 3 676 1006 1049 3 677 1223 1266 3 677 1223 1266 3 677 1223 1266 3 677 1223 1266 3 677 1223 1266 3 677 1223 1266 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 11 677 678 679 1223 1224 1266 1267 1694 1695 1696 1697 4 677 679 1695 1697 4 677 679 1695 1697 4 677 679 1695 1697 4 677 679 1695 1697 4 677 679 1695 1697 4 677 679 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 8 677 679 1007 1008 1050 1051 1695 1697 3 677 1007 1050 3 677 1007 1050 3 677 1007 1050 3 677 1007 1050 3 677 1007 1050 3 677 1007 1050 8 678 1377 1388 1694 1696 2028 2030 2959 8 678 1377 1388 1694 1696 2028 2030 2959 8 678 1377 1388 1694 1696 2028 2030 2959 8 678 1377 1388 1694 1696 2028 2030 2959 8 678 1377 1388 1694 1696 2028 2030 2959 8 678 1377 1388 1694 1696 2028 2030 2959 4 678 1377 1388 2959 4 678 1377 1388 2959 4 678 1377 1388 2959 4 678 1377 1388 2959 4 678 1377 1388 2959 4 678 1377 1388 2959 8 678 1377 1388 1704 1706 2018 2020 2959 8 678 1377 1388 1704 1706 2018 2020 2959 8 678 1377 1388 1704 1706 2018 2020 2959 8 678 1377 1388 1704 1706 2018 2020 2959 8 678 1377 1388 1704 1706 2018 2020 2959 8 678 1377 1388 1704 1706 2018 2020 2959 3 678 1704 1706 3 678 1704 1706 3 678 1704 1706 3 678 1704 1706 3 678 1704 1706 3 678 1704 1706 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 11 678 679 680 1224 1225 1267 1268 1704 1705 1706 1707 4 678 679 1224 1267 4 678 679 1224 1267 4 678 679 1224 1267 4 678 679 1224 1267 4 678 679 1224 1267 4 678 679 1224 1267 3 678 1694 1696 3 678 1694 1696 3 678 1694 1696 3 678 1694 1696 3 678 1694 1696 3 678 1694 1696 4 679 680 1705 1707 4 679 680 1705 1707 4 679 680 1705 1707 4 679 680 1705 1707 4 679 680 1705 1707 4 679 680 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 8 679 680 1008 1009 1051 1052 1705 1707 3 679 1008 1051 3 679 1008 1051 3 679 1008 1051 3 679 1008 1051 3 679 1008 1051 3 679 1008 1051 3 680 1225 1268 3 680 1225 1268 3 680 1225 1268 3 680 1225 1268 3 680 1225 1268 3 680 1225 1268 8 680 681 1225 1226 1268 1269 1713 1714 8 680 681 1225 1226 1268 1269 1713 1714 8 680 681 1225 1226 1268 1269 1713 1714 8 680 681 1225 1226 1268 1269 1713 1714 8 680 681 1225 1226 1268 1269 1713 1714 8 680 681 1225 1226 1268 1269 1713 1714 4 680 681 1713 1714 4 680 681 1713 1714 4 680 681 1713 1714 4 680 681 1713 1714 4 680 681 1713 1714 4 680 681 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 8 680 681 1009 1010 1052 1053 1713 1714 3 680 1009 1052 3 680 1009 1052 3 680 1009 1052 3 680 1009 1052 3 680 1009 1052 3 680 1009 1052 3 681 1226 1269 3 681 1226 1269 3 681 1226 1269 3 681 1226 1269 3 681 1226 1269 3 681 1226 1269 3 681 1010 1053 3 681 1010 1053 3 681 1010 1053 3 681 1010 1053 3 681 1010 1053 3 681 1010 1053 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 11 682 689 691 878 1141 1142 1184 1185 1402 1403 1404 4 682 689 1142 1185 4 682 689 1142 1185 4 682 689 1142 1185 4 682 689 1142 1185 4 682 689 1142 1185 4 682 689 1142 1185 10 682 684 686 689 1142 1143 1185 1186 1410 1411 10 682 684 686 689 1142 1143 1185 1186 1410 1411 10 682 684 686 689 1142 1143 1185 1186 1410 1411 10 682 684 686 689 1142 1143 1185 1186 1410 1411 10 682 684 686 689 1142 1143 1185 1186 1410 1411 10 682 684 686 689 1142 1143 1185 1186 1410 1411 4 682 684 1410 1411 4 682 684 1410 1411 4 682 684 1410 1411 4 682 684 1410 1411 4 682 684 1410 1411 4 682 684 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 684 926 927 969 970 1410 1411 8 682 878 925 926 968 969 1403 1404 8 682 878 925 926 968 969 1403 1404 8 682 878 925 926 968 969 1403 1404 8 682 878 925 926 968 969 1403 1404 8 682 878 925 926 968 969 1403 1404 8 682 878 925 926 968 969 1403 1404 3 682 926 969 3 682 926 969 3 682 926 969 3 682 926 969 3 682 926 969 3 682 926 969 4 682 878 1403 1404 4 682 878 1403 1404 4 682 878 1403 1404 4 682 878 1403 1404 4 682 878 1403 1404 4 682 878 1403 1404 10 683 684 685 686 1143 1144 1186 1187 1416 1417 10 683 684 685 686 1143 1144 1186 1187 1416 1417 10 683 684 685 686 1143 1144 1186 1187 1416 1417 10 683 684 685 686 1143 1144 1186 1187 1416 1417 10 683 684 685 686 1143 1144 1186 1187 1416 1417 10 683 684 685 686 1143 1144 1186 1187 1416 1417 4 683 685 1144 1187 4 683 685 1144 1187 4 683 685 1144 1187 4 683 685 1144 1187 4 683 685 1144 1187 4 683 685 1144 1187 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 10 683 685 687 1144 1145 1187 1188 1422 1423 1848 2 683 686 2 683 686 2 683 686 2 683 686 2 683 686 2 683 686 1 683 1 683 1 683 1 683 1 683 1 683 2 683 1848 2 683 1848 2 683 1848 2 683 1848 2 683 1848 2 683 1848 4 684 686 1143 1186 4 684 686 1143 1186 4 684 686 1143 1186 4 684 686 1143 1186 4 684 686 1143 1186 4 684 686 1143 1186 4 684 685 1416 1417 4 684 685 1416 1417 4 684 685 1416 1417 4 684 685 1416 1417 4 684 685 1416 1417 4 684 685 1416 1417 8 684 685 927 928 970 971 1416 1417 8 684 685 927 928 970 971 1416 1417 8 684 685 927 928 970 971 1416 1417 8 684 685 927 928 970 971 1416 1417 8 684 685 927 928 970 971 1416 1417 8 684 685 927 928 970 971 1416 1417 3 684 927 970 3 684 927 970 3 684 927 970 3 684 927 970 3 684 927 970 3 684 927 970 4 685 687 1422 1423 4 685 687 1422 1423 4 685 687 1422 1423 4 685 687 1422 1423 4 685 687 1422 1423 4 685 687 1422 1423 8 685 687 928 929 971 972 1422 1423 8 685 687 928 929 971 972 1422 1423 8 685 687 928 929 971 972 1422 1423 8 685 687 928 929 971 972 1422 1423 8 685 687 928 929 971 972 1422 1423 8 685 687 928 929 971 972 1422 1423 3 685 928 971 3 685 928 971 3 685 928 971 3 685 928 971 3 685 928 971 3 685 928 971 2 686 689 2 686 689 2 686 689 2 686 689 2 686 689 2 686 689 1 686 1 686 1 686 1 686 1 686 1 686 4 687 1145 1188 1848 4 687 1145 1188 1848 4 687 1145 1188 1848 4 687 1145 1188 1848 4 687 1145 1188 1848 4 687 1145 1188 1848 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 10 687 688 1145 1146 1188 1189 1428 1429 1848 1849 4 687 688 1428 1429 4 687 688 1428 1429 4 687 688 1428 1429 4 687 688 1428 1429 4 687 688 1428 1429 4 687 688 1428 1429 8 687 688 929 930 972 973 1428 1429 8 687 688 929 930 972 973 1428 1429 8 687 688 929 930 972 973 1428 1429 8 687 688 929 930 972 973 1428 1429 8 687 688 929 930 972 973 1428 1429 8 687 688 929 930 972 973 1428 1429 3 687 929 972 3 687 929 972 3 687 929 972 3 687 929 972 3 687 929 972 3 687 929 972 4 688 1146 1189 1849 4 688 1146 1189 1849 4 688 1146 1189 1849 4 688 1146 1189 1849 4 688 1146 1189 1849 4 688 1146 1189 1849 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 10 688 690 1146 1147 1189 1190 1434 1435 1849 1850 4 688 690 1434 1435 4 688 690 1434 1435 4 688 690 1434 1435 4 688 690 1434 1435 4 688 690 1434 1435 4 688 690 1434 1435 8 688 690 930 931 973 974 1434 1435 8 688 690 930 931 973 974 1434 1435 8 688 690 930 931 973 974 1434 1435 8 688 690 930 931 973 974 1434 1435 8 688 690 930 931 973 974 1434 1435 8 688 690 930 931 973 974 1434 1435 3 688 930 973 3 688 930 973 3 688 930 973 3 688 930 973 3 688 930 973 3 688 930 973 2 689 691 2 689 691 2 689 691 2 689 691 2 689 691 2 689 691 4 690 1147 1190 1850 4 690 1147 1190 1850 4 690 1147 1190 1850 4 690 1147 1190 1850 4 690 1147 1190 1850 4 690 1147 1190 1850 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 10 690 692 1147 1148 1190 1191 1440 1441 1850 1852 4 690 692 1440 1441 4 690 692 1440 1441 4 690 692 1440 1441 4 690 692 1440 1441 4 690 692 1440 1441 4 690 692 1440 1441 8 690 692 931 932 974 975 1440 1441 8 690 692 931 932 974 975 1440 1441 8 690 692 931 932 974 975 1440 1441 8 690 692 931 932 974 975 1440 1441 8 690 692 931 932 974 975 1440 1441 8 690 692 931 932 974 975 1440 1441 3 690 931 974 3 690 931 974 3 690 931 974 3 690 931 974 3 690 931 974 3 690 931 974 4 691 1402 2322 2946 4 691 1402 2322 2946 4 691 1402 2322 2946 4 691 1402 2322 2946 4 691 1402 2322 2946 4 691 1402 2322 2946 2 691 1402 2 691 1402 2 691 1402 2 691 1402 2 691 1402 2 691 1402 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 2 691 2946 1 691 1 691 1 691 1 691 1 691 1 691 4 692 1148 1191 1852 4 692 1148 1191 1852 4 692 1148 1191 1852 4 692 1148 1191 1852 4 692 1148 1191 1852 4 692 1148 1191 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 11 692 693 1148 1149 1191 1192 1446 1447 1448 1851 1852 4 692 693 1447 1448 4 692 693 1447 1448 4 692 693 1447 1448 4 692 693 1447 1448 4 692 693 1447 1448 4 692 693 1447 1448 8 692 693 932 933 975 976 1447 1448 8 692 693 932 933 975 976 1447 1448 8 692 693 932 933 975 976 1447 1448 8 692 693 932 933 975 976 1447 1448 8 692 693 932 933 975 976 1447 1448 8 692 693 932 933 975 976 1447 1448 3 692 932 975 3 692 932 975 3 692 932 975 3 692 932 975 3 692 932 975 3 692 932 975 3 693 1149 1192 3 693 1149 1192 3 693 1149 1192 3 693 1149 1192 3 693 1149 1192 3 693 1149 1192 8 693 694 1149 1150 1192 1193 1454 1455 8 693 694 1149 1150 1192 1193 1454 1455 8 693 694 1149 1150 1192 1193 1454 1455 8 693 694 1149 1150 1192 1193 1454 1455 8 693 694 1149 1150 1192 1193 1454 1455 8 693 694 1149 1150 1192 1193 1454 1455 4 693 694 1454 1455 4 693 694 1454 1455 4 693 694 1454 1455 4 693 694 1454 1455 4 693 694 1454 1455 4 693 694 1454 1455 8 693 694 933 934 976 977 1454 1455 8 693 694 933 934 976 977 1454 1455 8 693 694 933 934 976 977 1454 1455 8 693 694 933 934 976 977 1454 1455 8 693 694 933 934 976 977 1454 1455 8 693 694 933 934 976 977 1454 1455 3 693 933 976 3 693 933 976 3 693 933 976 3 693 933 976 3 693 933 976 3 693 933 976 3 694 1150 1193 3 694 1150 1193 3 694 1150 1193 3 694 1150 1193 3 694 1150 1193 3 694 1150 1193 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 10 694 695 696 1150 1151 1193 1194 1460 1461 1462 4 694 696 1461 1462 4 694 696 1461 1462 4 694 696 1461 1462 4 694 696 1461 1462 4 694 696 1461 1462 4 694 696 1461 1462 8 694 696 934 935 977 978 1461 1462 8 694 696 934 935 977 978 1461 1462 8 694 696 934 935 977 978 1461 1462 8 694 696 934 935 977 978 1461 1462 8 694 696 934 935 977 978 1461 1462 8 694 696 934 935 977 978 1461 1462 3 694 934 977 3 694 934 977 3 694 934 977 3 694 934 977 3 694 934 977 3 694 934 977 6 695 1356 1367 1460 2264 2942 6 695 1356 1367 1460 2264 2942 6 695 1356 1367 1460 2264 2942 6 695 1356 1367 1460 2264 2942 6 695 1356 1367 1460 2264 2942 6 695 1356 1367 1460 2264 2942 4 695 1356 1367 2942 4 695 1356 1367 2942 4 695 1356 1367 2942 4 695 1356 1367 2942 4 695 1356 1367 2942 4 695 1356 1367 2942 6 695 1356 1367 1468 2256 2942 6 695 1356 1367 1468 2256 2942 6 695 1356 1367 1468 2256 2942 6 695 1356 1367 1468 2256 2942 6 695 1356 1367 1468 2256 2942 6 695 1356 1367 1468 2256 2942 2 695 1468 2 695 1468 2 695 1468 2 695 1468 2 695 1468 2 695 1468 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 10 695 696 697 1151 1152 1194 1195 1468 1469 1470 4 695 696 1151 1194 4 695 696 1151 1194 4 695 696 1151 1194 4 695 696 1151 1194 4 695 696 1151 1194 4 695 696 1151 1194 2 695 1460 2 695 1460 2 695 1460 2 695 1460 2 695 1460 2 695 1460 4 696 697 1469 1470 4 696 697 1469 1470 4 696 697 1469 1470 4 696 697 1469 1470 4 696 697 1469 1470 4 696 697 1469 1470 8 696 697 935 936 978 979 1469 1470 8 696 697 935 936 978 979 1469 1470 8 696 697 935 936 978 979 1469 1470 8 696 697 935 936 978 979 1469 1470 8 696 697 935 936 978 979 1469 1470 8 696 697 935 936 978 979 1469 1470 3 696 935 978 3 696 935 978 3 696 935 978 3 696 935 978 3 696 935 978 3 696 935 978 3 697 1152 1195 3 697 1152 1195 3 697 1152 1195 3 697 1152 1195 3 697 1152 1195 3 697 1152 1195 8 697 698 1152 1153 1195 1196 1476 1477 8 697 698 1152 1153 1195 1196 1476 1477 8 697 698 1152 1153 1195 1196 1476 1477 8 697 698 1152 1153 1195 1196 1476 1477 8 697 698 1152 1153 1195 1196 1476 1477 8 697 698 1152 1153 1195 1196 1476 1477 4 697 698 1476 1477 4 697 698 1476 1477 4 697 698 1476 1477 4 697 698 1476 1477 4 697 698 1476 1477 4 697 698 1476 1477 8 697 698 936 937 979 980 1476 1477 8 697 698 936 937 979 980 1476 1477 8 697 698 936 937 979 980 1476 1477 8 697 698 936 937 979 980 1476 1477 8 697 698 936 937 979 980 1476 1477 8 697 698 936 937 979 980 1476 1477 3 697 936 979 3 697 936 979 3 697 936 979 3 697 936 979 3 697 936 979 3 697 936 979 3 698 1153 1196 3 698 1153 1196 3 698 1153 1196 3 698 1153 1196 3 698 1153 1196 3 698 1153 1196 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 11 698 699 700 1153 1154 1196 1197 1482 1483 1484 1485 4 698 700 1483 1485 4 698 700 1483 1485 4 698 700 1483 1485 4 698 700 1483 1485 4 698 700 1483 1485 4 698 700 1483 1485 8 698 700 937 938 980 981 1483 1485 8 698 700 937 938 980 981 1483 1485 8 698 700 937 938 980 981 1483 1485 8 698 700 937 938 980 981 1483 1485 8 698 700 937 938 980 981 1483 1485 8 698 700 937 938 980 981 1483 1485 3 698 937 980 3 698 937 980 3 698 937 980 3 698 937 980 3 698 937 980 3 698 937 980 8 699 1357 1368 1482 1484 2240 2242 2938 8 699 1357 1368 1482 1484 2240 2242 2938 8 699 1357 1368 1482 1484 2240 2242 2938 8 699 1357 1368 1482 1484 2240 2242 2938 8 699 1357 1368 1482 1484 2240 2242 2938 8 699 1357 1368 1482 1484 2240 2242 2938 4 699 1357 1368 2938 4 699 1357 1368 2938 4 699 1357 1368 2938 4 699 1357 1368 2938 4 699 1357 1368 2938 4 699 1357 1368 2938 8 699 1357 1368 1492 1494 2230 2232 2938 8 699 1357 1368 1492 1494 2230 2232 2938 8 699 1357 1368 1492 1494 2230 2232 2938 8 699 1357 1368 1492 1494 2230 2232 2938 8 699 1357 1368 1492 1494 2230 2232 2938 8 699 1357 1368 1492 1494 2230 2232 2938 3 699 1492 1494 3 699 1492 1494 3 699 1492 1494 3 699 1492 1494 3 699 1492 1494 3 699 1492 1494 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 11 699 700 701 1154 1155 1197 1198 1492 1493 1494 1495 4 699 700 1154 1197 4 699 700 1154 1197 4 699 700 1154 1197 4 699 700 1154 1197 4 699 700 1154 1197 4 699 700 1154 1197 3 699 1482 1484 3 699 1482 1484 3 699 1482 1484 3 699 1482 1484 3 699 1482 1484 3 699 1482 1484 4 700 701 1493 1495 4 700 701 1493 1495 4 700 701 1493 1495 4 700 701 1493 1495 4 700 701 1493 1495 4 700 701 1493 1495 8 700 701 938 939 981 982 1493 1495 8 700 701 938 939 981 982 1493 1495 8 700 701 938 939 981 982 1493 1495 8 700 701 938 939 981 982 1493 1495 8 700 701 938 939 981 982 1493 1495 8 700 701 938 939 981 982 1493 1495 3 700 938 981 3 700 938 981 3 700 938 981 3 700 938 981 3 700 938 981 3 700 938 981 3 701 1155 1198 3 701 1155 1198 3 701 1155 1198 3 701 1155 1198 3 701 1155 1198 3 701 1155 1198 8 701 702 1155 1156 1198 1199 1502 1503 8 701 702 1155 1156 1198 1199 1502 1503 8 701 702 1155 1156 1198 1199 1502 1503 8 701 702 1155 1156 1198 1199 1502 1503 8 701 702 1155 1156 1198 1199 1502 1503 8 701 702 1155 1156 1198 1199 1502 1503 4 701 702 1502 1503 4 701 702 1502 1503 4 701 702 1502 1503 4 701 702 1502 1503 4 701 702 1502 1503 4 701 702 1502 1503 8 701 702 939 940 982 983 1502 1503 8 701 702 939 940 982 983 1502 1503 8 701 702 939 940 982 983 1502 1503 8 701 702 939 940 982 983 1502 1503 8 701 702 939 940 982 983 1502 1503 8 701 702 939 940 982 983 1502 1503 3 701 939 982 3 701 939 982 3 701 939 982 3 701 939 982 3 701 939 982 3 701 939 982 3 702 1156 1199 3 702 1156 1199 3 702 1156 1199 3 702 1156 1199 3 702 1156 1199 3 702 1156 1199 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 10 702 703 704 1156 1157 1199 1200 1508 1509 1510 4 702 704 1509 1510 4 702 704 1509 1510 4 702 704 1509 1510 4 702 704 1509 1510 4 702 704 1509 1510 4 702 704 1509 1510 8 702 704 940 941 983 984 1509 1510 8 702 704 940 941 983 984 1509 1510 8 702 704 940 941 983 984 1509 1510 8 702 704 940 941 983 984 1509 1510 8 702 704 940 941 983 984 1509 1510 8 702 704 940 941 983 984 1509 1510 3 702 940 983 3 702 940 983 3 702 940 983 3 702 940 983 3 702 940 983 3 702 940 983 6 703 1358 1369 1508 2216 2934 6 703 1358 1369 1508 2216 2934 6 703 1358 1369 1508 2216 2934 6 703 1358 1369 1508 2216 2934 6 703 1358 1369 1508 2216 2934 6 703 1358 1369 1508 2216 2934 4 703 1358 1369 2934 4 703 1358 1369 2934 4 703 1358 1369 2934 4 703 1358 1369 2934 4 703 1358 1369 2934 4 703 1358 1369 2934 6 703 1358 1369 1516 2208 2934 6 703 1358 1369 1516 2208 2934 6 703 1358 1369 1516 2208 2934 6 703 1358 1369 1516 2208 2934 6 703 1358 1369 1516 2208 2934 6 703 1358 1369 1516 2208 2934 2 703 1516 2 703 1516 2 703 1516 2 703 1516 2 703 1516 2 703 1516 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 10 703 704 705 1157 1158 1200 1201 1516 1517 1518 4 703 704 1157 1200 4 703 704 1157 1200 4 703 704 1157 1200 4 703 704 1157 1200 4 703 704 1157 1200 4 703 704 1157 1200 2 703 1508 2 703 1508 2 703 1508 2 703 1508 2 703 1508 2 703 1508 4 704 705 1517 1518 4 704 705 1517 1518 4 704 705 1517 1518 4 704 705 1517 1518 4 704 705 1517 1518 4 704 705 1517 1518 8 704 705 941 942 984 985 1517 1518 8 704 705 941 942 984 985 1517 1518 8 704 705 941 942 984 985 1517 1518 8 704 705 941 942 984 985 1517 1518 8 704 705 941 942 984 985 1517 1518 8 704 705 941 942 984 985 1517 1518 3 704 941 984 3 704 941 984 3 704 941 984 3 704 941 984 3 704 941 984 3 704 941 984 3 705 1158 1201 3 705 1158 1201 3 705 1158 1201 3 705 1158 1201 3 705 1158 1201 3 705 1158 1201 8 705 706 1158 1159 1201 1202 1524 1525 8 705 706 1158 1159 1201 1202 1524 1525 8 705 706 1158 1159 1201 1202 1524 1525 8 705 706 1158 1159 1201 1202 1524 1525 8 705 706 1158 1159 1201 1202 1524 1525 8 705 706 1158 1159 1201 1202 1524 1525 4 705 706 1524 1525 4 705 706 1524 1525 4 705 706 1524 1525 4 705 706 1524 1525 4 705 706 1524 1525 4 705 706 1524 1525 8 705 706 942 943 985 986 1524 1525 8 705 706 942 943 985 986 1524 1525 8 705 706 942 943 985 986 1524 1525 8 705 706 942 943 985 986 1524 1525 8 705 706 942 943 985 986 1524 1525 8 705 706 942 943 985 986 1524 1525 3 705 942 985 3 705 942 985 3 705 942 985 3 705 942 985 3 705 942 985 3 705 942 985 3 706 1159 1202 3 706 1159 1202 3 706 1159 1202 3 706 1159 1202 3 706 1159 1202 3 706 1159 1202 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 11 706 707 708 1159 1160 1202 1203 1530 1531 1532 1533 4 706 708 1531 1533 4 706 708 1531 1533 4 706 708 1531 1533 4 706 708 1531 1533 4 706 708 1531 1533 4 706 708 1531 1533 8 706 708 943 944 986 987 1531 1533 8 706 708 943 944 986 987 1531 1533 8 706 708 943 944 986 987 1531 1533 8 706 708 943 944 986 987 1531 1533 8 706 708 943 944 986 987 1531 1533 8 706 708 943 944 986 987 1531 1533 3 706 943 986 3 706 943 986 3 706 943 986 3 706 943 986 3 706 943 986 3 706 943 986 8 707 1359 1370 1530 1532 2192 2194 2930 8 707 1359 1370 1530 1532 2192 2194 2930 8 707 1359 1370 1530 1532 2192 2194 2930 8 707 1359 1370 1530 1532 2192 2194 2930 8 707 1359 1370 1530 1532 2192 2194 2930 8 707 1359 1370 1530 1532 2192 2194 2930 4 707 1359 1370 2930 4 707 1359 1370 2930 4 707 1359 1370 2930 4 707 1359 1370 2930 4 707 1359 1370 2930 4 707 1359 1370 2930 6 707 1359 1370 1540 2184 2930 6 707 1359 1370 1540 2184 2930 6 707 1359 1370 1540 2184 2930 6 707 1359 1370 1540 2184 2930 6 707 1359 1370 1540 2184 2930 6 707 1359 1370 1540 2184 2930 2 707 1540 2 707 1540 2 707 1540 2 707 1540 2 707 1540 2 707 1540 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 10 707 708 709 1160 1161 1203 1204 1540 1541 1542 4 707 708 1160 1203 4 707 708 1160 1203 4 707 708 1160 1203 4 707 708 1160 1203 4 707 708 1160 1203 4 707 708 1160 1203 3 707 1530 1532 3 707 1530 1532 3 707 1530 1532 3 707 1530 1532 3 707 1530 1532 3 707 1530 1532 4 708 709 1541 1542 4 708 709 1541 1542 4 708 709 1541 1542 4 708 709 1541 1542 4 708 709 1541 1542 4 708 709 1541 1542 8 708 709 944 945 987 988 1541 1542 8 708 709 944 945 987 988 1541 1542 8 708 709 944 945 987 988 1541 1542 8 708 709 944 945 987 988 1541 1542 8 708 709 944 945 987 988 1541 1542 8 708 709 944 945 987 988 1541 1542 3 708 944 987 3 708 944 987 3 708 944 987 3 708 944 987 3 708 944 987 3 708 944 987 3 709 1161 1204 3 709 1161 1204 3 709 1161 1204 3 709 1161 1204 3 709 1161 1204 3 709 1161 1204 8 709 710 1161 1162 1204 1205 1548 1549 8 709 710 1161 1162 1204 1205 1548 1549 8 709 710 1161 1162 1204 1205 1548 1549 8 709 710 1161 1162 1204 1205 1548 1549 8 709 710 1161 1162 1204 1205 1548 1549 8 709 710 1161 1162 1204 1205 1548 1549 4 709 710 1548 1549 4 709 710 1548 1549 4 709 710 1548 1549 4 709 710 1548 1549 4 709 710 1548 1549 4 709 710 1548 1549 8 709 710 945 946 988 989 1548 1549 8 709 710 945 946 988 989 1548 1549 8 709 710 945 946 988 989 1548 1549 8 709 710 945 946 988 989 1548 1549 8 709 710 945 946 988 989 1548 1549 8 709 710 945 946 988 989 1548 1549 3 709 945 988 3 709 945 988 3 709 945 988 3 709 945 988 3 709 945 988 3 709 945 988 3 710 1162 1205 3 710 1162 1205 3 710 1162 1205 3 710 1162 1205 3 710 1162 1205 3 710 1162 1205 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 10 710 711 712 1162 1163 1205 1206 1554 1555 1556 4 710 712 1555 1556 4 710 712 1555 1556 4 710 712 1555 1556 4 710 712 1555 1556 4 710 712 1555 1556 4 710 712 1555 1556 8 710 712 946 947 989 990 1555 1556 8 710 712 946 947 989 990 1555 1556 8 710 712 946 947 989 990 1555 1556 8 710 712 946 947 989 990 1555 1556 8 710 712 946 947 989 990 1555 1556 8 710 712 946 947 989 990 1555 1556 3 710 946 989 3 710 946 989 3 710 946 989 3 710 946 989 3 710 946 989 3 710 946 989 6 711 1360 1371 1554 2170 2926 6 711 1360 1371 1554 2170 2926 6 711 1360 1371 1554 2170 2926 6 711 1360 1371 1554 2170 2926 6 711 1360 1371 1554 2170 2926 6 711 1360 1371 1554 2170 2926 4 711 1360 1371 2926 4 711 1360 1371 2926 4 711 1360 1371 2926 4 711 1360 1371 2926 4 711 1360 1371 2926 4 711 1360 1371 2926 6 711 1360 1371 1562 2162 2926 6 711 1360 1371 1562 2162 2926 6 711 1360 1371 1562 2162 2926 6 711 1360 1371 1562 2162 2926 6 711 1360 1371 1562 2162 2926 6 711 1360 1371 1562 2162 2926 2 711 1562 2 711 1562 2 711 1562 2 711 1562 2 711 1562 2 711 1562 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 10 711 712 713 1163 1164 1206 1207 1562 1563 1564 4 711 712 1163 1206 4 711 712 1163 1206 4 711 712 1163 1206 4 711 712 1163 1206 4 711 712 1163 1206 4 711 712 1163 1206 2 711 1554 2 711 1554 2 711 1554 2 711 1554 2 711 1554 2 711 1554 4 712 713 1563 1564 4 712 713 1563 1564 4 712 713 1563 1564 4 712 713 1563 1564 4 712 713 1563 1564 4 712 713 1563 1564 8 712 713 947 948 990 991 1563 1564 8 712 713 947 948 990 991 1563 1564 8 712 713 947 948 990 991 1563 1564 8 712 713 947 948 990 991 1563 1564 8 712 713 947 948 990 991 1563 1564 8 712 713 947 948 990 991 1563 1564 3 712 947 990 3 712 947 990 3 712 947 990 3 712 947 990 3 712 947 990 3 712 947 990 3 713 1164 1207 3 713 1164 1207 3 713 1164 1207 3 713 1164 1207 3 713 1164 1207 3 713 1164 1207 8 713 714 1164 1165 1207 1208 1570 1571 8 713 714 1164 1165 1207 1208 1570 1571 8 713 714 1164 1165 1207 1208 1570 1571 8 713 714 1164 1165 1207 1208 1570 1571 8 713 714 1164 1165 1207 1208 1570 1571 8 713 714 1164 1165 1207 1208 1570 1571 4 713 714 1570 1571 4 713 714 1570 1571 4 713 714 1570 1571 4 713 714 1570 1571 4 713 714 1570 1571 4 713 714 1570 1571 8 713 714 948 949 991 992 1570 1571 8 713 714 948 949 991 992 1570 1571 8 713 714 948 949 991 992 1570 1571 8 713 714 948 949 991 992 1570 1571 8 713 714 948 949 991 992 1570 1571 8 713 714 948 949 991 992 1570 1571 3 713 948 991 3 713 948 991 3 713 948 991 3 713 948 991 3 713 948 991 3 713 948 991 3 714 1165 1208 3 714 1165 1208 3 714 1165 1208 3 714 1165 1208 3 714 1165 1208 3 714 1165 1208 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 11 714 715 716 1165 1166 1208 1209 1576 1577 1578 1579 4 714 716 1577 1579 4 714 716 1577 1579 4 714 716 1577 1579 4 714 716 1577 1579 4 714 716 1577 1579 4 714 716 1577 1579 8 714 716 949 950 992 993 1577 1579 8 714 716 949 950 992 993 1577 1579 8 714 716 949 950 992 993 1577 1579 8 714 716 949 950 992 993 1577 1579 8 714 716 949 950 992 993 1577 1579 8 714 716 949 950 992 993 1577 1579 3 714 949 992 3 714 949 992 3 714 949 992 3 714 949 992 3 714 949 992 3 714 949 992 8 715 1361 1372 1576 1578 2146 2148 2922 8 715 1361 1372 1576 1578 2146 2148 2922 8 715 1361 1372 1576 1578 2146 2148 2922 8 715 1361 1372 1576 1578 2146 2148 2922 8 715 1361 1372 1576 1578 2146 2148 2922 8 715 1361 1372 1576 1578 2146 2148 2922 4 715 1361 1372 2922 4 715 1361 1372 2922 4 715 1361 1372 2922 4 715 1361 1372 2922 4 715 1361 1372 2922 4 715 1361 1372 2922 6 715 1361 1372 1586 2138 2922 6 715 1361 1372 1586 2138 2922 6 715 1361 1372 1586 2138 2922 6 715 1361 1372 1586 2138 2922 6 715 1361 1372 1586 2138 2922 6 715 1361 1372 1586 2138 2922 2 715 1586 2 715 1586 2 715 1586 2 715 1586 2 715 1586 2 715 1586 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 10 715 716 717 1166 1167 1209 1210 1586 1587 1588 4 715 716 1166 1209 4 715 716 1166 1209 4 715 716 1166 1209 4 715 716 1166 1209 4 715 716 1166 1209 4 715 716 1166 1209 3 715 1576 1578 3 715 1576 1578 3 715 1576 1578 3 715 1576 1578 3 715 1576 1578 3 715 1576 1578 4 716 717 1587 1588 4 716 717 1587 1588 4 716 717 1587 1588 4 716 717 1587 1588 4 716 717 1587 1588 4 716 717 1587 1588 8 716 717 950 951 993 994 1587 1588 8 716 717 950 951 993 994 1587 1588 8 716 717 950 951 993 994 1587 1588 8 716 717 950 951 993 994 1587 1588 8 716 717 950 951 993 994 1587 1588 8 716 717 950 951 993 994 1587 1588 3 716 950 993 3 716 950 993 3 716 950 993 3 716 950 993 3 716 950 993 3 716 950 993 3 717 1167 1210 3 717 1167 1210 3 717 1167 1210 3 717 1167 1210 3 717 1167 1210 3 717 1167 1210 8 717 718 1167 1168 1210 1211 1594 1595 8 717 718 1167 1168 1210 1211 1594 1595 8 717 718 1167 1168 1210 1211 1594 1595 8 717 718 1167 1168 1210 1211 1594 1595 8 717 718 1167 1168 1210 1211 1594 1595 8 717 718 1167 1168 1210 1211 1594 1595 4 717 718 1594 1595 4 717 718 1594 1595 4 717 718 1594 1595 4 717 718 1594 1595 4 717 718 1594 1595 4 717 718 1594 1595 8 717 718 951 952 994 995 1594 1595 8 717 718 951 952 994 995 1594 1595 8 717 718 951 952 994 995 1594 1595 8 717 718 951 952 994 995 1594 1595 8 717 718 951 952 994 995 1594 1595 8 717 718 951 952 994 995 1594 1595 3 717 951 994 3 717 951 994 3 717 951 994 3 717 951 994 3 717 951 994 3 717 951 994 3 718 1168 1211 3 718 1168 1211 3 718 1168 1211 3 718 1168 1211 3 718 1168 1211 3 718 1168 1211 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 10 718 719 720 1168 1169 1211 1212 1600 1601 1602 4 718 720 1601 1602 4 718 720 1601 1602 4 718 720 1601 1602 4 718 720 1601 1602 4 718 720 1601 1602 4 718 720 1601 1602 8 718 720 952 953 995 996 1601 1602 8 718 720 952 953 995 996 1601 1602 8 718 720 952 953 995 996 1601 1602 8 718 720 952 953 995 996 1601 1602 8 718 720 952 953 995 996 1601 1602 8 718 720 952 953 995 996 1601 1602 3 718 952 995 3 718 952 995 3 718 952 995 3 718 952 995 3 718 952 995 3 718 952 995 6 719 1362 1373 1600 2124 2918 6 719 1362 1373 1600 2124 2918 6 719 1362 1373 1600 2124 2918 6 719 1362 1373 1600 2124 2918 6 719 1362 1373 1600 2124 2918 6 719 1362 1373 1600 2124 2918 4 719 1362 1373 2918 4 719 1362 1373 2918 4 719 1362 1373 2918 4 719 1362 1373 2918 4 719 1362 1373 2918 4 719 1362 1373 2918 6 719 1362 1373 1608 2116 2918 6 719 1362 1373 1608 2116 2918 6 719 1362 1373 1608 2116 2918 6 719 1362 1373 1608 2116 2918 6 719 1362 1373 1608 2116 2918 6 719 1362 1373 1608 2116 2918 2 719 1608 2 719 1608 2 719 1608 2 719 1608 2 719 1608 2 719 1608 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 10 719 720 721 1169 1170 1212 1213 1608 1609 1610 4 719 720 1169 1212 4 719 720 1169 1212 4 719 720 1169 1212 4 719 720 1169 1212 4 719 720 1169 1212 4 719 720 1169 1212 2 719 1600 2 719 1600 2 719 1600 2 719 1600 2 719 1600 2 719 1600 4 720 721 1609 1610 4 720 721 1609 1610 4 720 721 1609 1610 4 720 721 1609 1610 4 720 721 1609 1610 4 720 721 1609 1610 8 720 721 953 954 996 997 1609 1610 8 720 721 953 954 996 997 1609 1610 8 720 721 953 954 996 997 1609 1610 8 720 721 953 954 996 997 1609 1610 8 720 721 953 954 996 997 1609 1610 8 720 721 953 954 996 997 1609 1610 3 720 953 996 3 720 953 996 3 720 953 996 3 720 953 996 3 720 953 996 3 720 953 996 3 721 1170 1213 3 721 1170 1213 3 721 1170 1213 3 721 1170 1213 3 721 1170 1213 3 721 1170 1213 8 721 722 1170 1171 1213 1214 1616 1617 8 721 722 1170 1171 1213 1214 1616 1617 8 721 722 1170 1171 1213 1214 1616 1617 8 721 722 1170 1171 1213 1214 1616 1617 8 721 722 1170 1171 1213 1214 1616 1617 8 721 722 1170 1171 1213 1214 1616 1617 4 721 722 1616 1617 4 721 722 1616 1617 4 721 722 1616 1617 4 721 722 1616 1617 4 721 722 1616 1617 4 721 722 1616 1617 8 721 722 954 955 997 998 1616 1617 8 721 722 954 955 997 998 1616 1617 8 721 722 954 955 997 998 1616 1617 8 721 722 954 955 997 998 1616 1617 8 721 722 954 955 997 998 1616 1617 8 721 722 954 955 997 998 1616 1617 3 721 954 997 3 721 954 997 3 721 954 997 3 721 954 997 3 721 954 997 3 721 954 997 3 722 1171 1214 3 722 1171 1214 3 722 1171 1214 3 722 1171 1214 3 722 1171 1214 3 722 1171 1214 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 11 722 723 724 1171 1172 1214 1215 1622 1623 1624 1625 4 722 724 1623 1625 4 722 724 1623 1625 4 722 724 1623 1625 4 722 724 1623 1625 4 722 724 1623 1625 4 722 724 1623 1625 8 722 724 955 956 998 999 1623 1625 8 722 724 955 956 998 999 1623 1625 8 722 724 955 956 998 999 1623 1625 8 722 724 955 956 998 999 1623 1625 8 722 724 955 956 998 999 1623 1625 8 722 724 955 956 998 999 1623 1625 3 722 955 998 3 722 955 998 3 722 955 998 3 722 955 998 3 722 955 998 3 722 955 998 8 723 1363 1374 1622 1624 2100 2102 2914 8 723 1363 1374 1622 1624 2100 2102 2914 8 723 1363 1374 1622 1624 2100 2102 2914 8 723 1363 1374 1622 1624 2100 2102 2914 8 723 1363 1374 1622 1624 2100 2102 2914 8 723 1363 1374 1622 1624 2100 2102 2914 4 723 1363 1374 2914 4 723 1363 1374 2914 4 723 1363 1374 2914 4 723 1363 1374 2914 4 723 1363 1374 2914 4 723 1363 1374 2914 6 723 1363 1374 1632 2092 2914 6 723 1363 1374 1632 2092 2914 6 723 1363 1374 1632 2092 2914 6 723 1363 1374 1632 2092 2914 6 723 1363 1374 1632 2092 2914 6 723 1363 1374 1632 2092 2914 2 723 1632 2 723 1632 2 723 1632 2 723 1632 2 723 1632 2 723 1632 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 10 723 724 725 1172 1173 1215 1216 1632 1633 1634 4 723 724 1172 1215 4 723 724 1172 1215 4 723 724 1172 1215 4 723 724 1172 1215 4 723 724 1172 1215 4 723 724 1172 1215 3 723 1622 1624 3 723 1622 1624 3 723 1622 1624 3 723 1622 1624 3 723 1622 1624 3 723 1622 1624 4 724 725 1633 1634 4 724 725 1633 1634 4 724 725 1633 1634 4 724 725 1633 1634 4 724 725 1633 1634 4 724 725 1633 1634 8 724 725 956 957 999 1000 1633 1634 8 724 725 956 957 999 1000 1633 1634 8 724 725 956 957 999 1000 1633 1634 8 724 725 956 957 999 1000 1633 1634 8 724 725 956 957 999 1000 1633 1634 8 724 725 956 957 999 1000 1633 1634 3 724 956 999 3 724 956 999 3 724 956 999 3 724 956 999 3 724 956 999 3 724 956 999 3 725 1173 1216 3 725 1173 1216 3 725 1173 1216 3 725 1173 1216 3 725 1173 1216 3 725 1173 1216 8 725 726 1173 1174 1216 1217 1640 1641 8 725 726 1173 1174 1216 1217 1640 1641 8 725 726 1173 1174 1216 1217 1640 1641 8 725 726 1173 1174 1216 1217 1640 1641 8 725 726 1173 1174 1216 1217 1640 1641 8 725 726 1173 1174 1216 1217 1640 1641 4 725 726 1640 1641 4 725 726 1640 1641 4 725 726 1640 1641 4 725 726 1640 1641 4 725 726 1640 1641 4 725 726 1640 1641 8 725 726 957 958 1000 1001 1640 1641 8 725 726 957 958 1000 1001 1640 1641 8 725 726 957 958 1000 1001 1640 1641 8 725 726 957 958 1000 1001 1640 1641 8 725 726 957 958 1000 1001 1640 1641 8 725 726 957 958 1000 1001 1640 1641 3 725 957 1000 3 725 957 1000 3 725 957 1000 3 725 957 1000 3 725 957 1000 3 725 957 1000 3 726 1174 1217 3 726 1174 1217 3 726 1174 1217 3 726 1174 1217 3 726 1174 1217 3 726 1174 1217 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 10 726 727 728 1174 1175 1217 1218 1646 1647 1648 4 726 728 1647 1648 4 726 728 1647 1648 4 726 728 1647 1648 4 726 728 1647 1648 4 726 728 1647 1648 4 726 728 1647 1648 8 726 728 958 959 1001 1002 1647 1648 8 726 728 958 959 1001 1002 1647 1648 8 726 728 958 959 1001 1002 1647 1648 8 726 728 958 959 1001 1002 1647 1648 8 726 728 958 959 1001 1002 1647 1648 8 726 728 958 959 1001 1002 1647 1648 3 726 958 1001 3 726 958 1001 3 726 958 1001 3 726 958 1001 3 726 958 1001 3 726 958 1001 6 727 1364 1375 1646 2078 2910 6 727 1364 1375 1646 2078 2910 6 727 1364 1375 1646 2078 2910 6 727 1364 1375 1646 2078 2910 6 727 1364 1375 1646 2078 2910 6 727 1364 1375 1646 2078 2910 4 727 1364 1375 2910 4 727 1364 1375 2910 4 727 1364 1375 2910 4 727 1364 1375 2910 4 727 1364 1375 2910 4 727 1364 1375 2910 6 727 1364 1375 1654 2070 2910 6 727 1364 1375 1654 2070 2910 6 727 1364 1375 1654 2070 2910 6 727 1364 1375 1654 2070 2910 6 727 1364 1375 1654 2070 2910 6 727 1364 1375 1654 2070 2910 2 727 1654 2 727 1654 2 727 1654 2 727 1654 2 727 1654 2 727 1654 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 10 727 728 729 1175 1176 1218 1219 1654 1655 1656 4 727 728 1175 1218 4 727 728 1175 1218 4 727 728 1175 1218 4 727 728 1175 1218 4 727 728 1175 1218 4 727 728 1175 1218 2 727 1646 2 727 1646 2 727 1646 2 727 1646 2 727 1646 2 727 1646 4 728 729 1655 1656 4 728 729 1655 1656 4 728 729 1655 1656 4 728 729 1655 1656 4 728 729 1655 1656 4 728 729 1655 1656 8 728 729 959 960 1002 1003 1655 1656 8 728 729 959 960 1002 1003 1655 1656 8 728 729 959 960 1002 1003 1655 1656 8 728 729 959 960 1002 1003 1655 1656 8 728 729 959 960 1002 1003 1655 1656 8 728 729 959 960 1002 1003 1655 1656 3 728 959 1002 3 728 959 1002 3 728 959 1002 3 728 959 1002 3 728 959 1002 3 728 959 1002 3 729 1176 1219 3 729 1176 1219 3 729 1176 1219 3 729 1176 1219 3 729 1176 1219 3 729 1176 1219 8 729 730 1176 1177 1219 1220 1662 1663 8 729 730 1176 1177 1219 1220 1662 1663 8 729 730 1176 1177 1219 1220 1662 1663 8 729 730 1176 1177 1219 1220 1662 1663 8 729 730 1176 1177 1219 1220 1662 1663 8 729 730 1176 1177 1219 1220 1662 1663 4 729 730 1662 1663 4 729 730 1662 1663 4 729 730 1662 1663 4 729 730 1662 1663 4 729 730 1662 1663 4 729 730 1662 1663 8 729 730 960 961 1003 1004 1662 1663 8 729 730 960 961 1003 1004 1662 1663 8 729 730 960 961 1003 1004 1662 1663 8 729 730 960 961 1003 1004 1662 1663 8 729 730 960 961 1003 1004 1662 1663 8 729 730 960 961 1003 1004 1662 1663 3 729 960 1003 3 729 960 1003 3 729 960 1003 3 729 960 1003 3 729 960 1003 3 729 960 1003 3 730 1177 1220 3 730 1177 1220 3 730 1177 1220 3 730 1177 1220 3 730 1177 1220 3 730 1177 1220 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 11 730 731 732 1177 1178 1220 1221 1668 1669 1670 1671 4 730 732 1669 1671 4 730 732 1669 1671 4 730 732 1669 1671 4 730 732 1669 1671 4 730 732 1669 1671 4 730 732 1669 1671 8 730 732 961 962 1004 1005 1669 1671 8 730 732 961 962 1004 1005 1669 1671 8 730 732 961 962 1004 1005 1669 1671 8 730 732 961 962 1004 1005 1669 1671 8 730 732 961 962 1004 1005 1669 1671 8 730 732 961 962 1004 1005 1669 1671 3 730 961 1004 3 730 961 1004 3 730 961 1004 3 730 961 1004 3 730 961 1004 3 730 961 1004 8 731 1365 1376 1668 1670 2054 2056 2906 8 731 1365 1376 1668 1670 2054 2056 2906 8 731 1365 1376 1668 1670 2054 2056 2906 8 731 1365 1376 1668 1670 2054 2056 2906 8 731 1365 1376 1668 1670 2054 2056 2906 8 731 1365 1376 1668 1670 2054 2056 2906 4 731 1365 1376 2906 4 731 1365 1376 2906 4 731 1365 1376 2906 4 731 1365 1376 2906 4 731 1365 1376 2906 4 731 1365 1376 2906 6 731 1365 1376 1678 2046 2906 6 731 1365 1376 1678 2046 2906 6 731 1365 1376 1678 2046 2906 6 731 1365 1376 1678 2046 2906 6 731 1365 1376 1678 2046 2906 6 731 1365 1376 1678 2046 2906 2 731 1678 2 731 1678 2 731 1678 2 731 1678 2 731 1678 2 731 1678 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 10 731 732 733 1178 1179 1221 1222 1678 1679 1680 4 731 732 1178 1221 4 731 732 1178 1221 4 731 732 1178 1221 4 731 732 1178 1221 4 731 732 1178 1221 4 731 732 1178 1221 3 731 1668 1670 3 731 1668 1670 3 731 1668 1670 3 731 1668 1670 3 731 1668 1670 3 731 1668 1670 4 732 733 1679 1680 4 732 733 1679 1680 4 732 733 1679 1680 4 732 733 1679 1680 4 732 733 1679 1680 4 732 733 1679 1680 8 732 733 962 963 1005 1006 1679 1680 8 732 733 962 963 1005 1006 1679 1680 8 732 733 962 963 1005 1006 1679 1680 8 732 733 962 963 1005 1006 1679 1680 8 732 733 962 963 1005 1006 1679 1680 8 732 733 962 963 1005 1006 1679 1680 3 732 962 1005 3 732 962 1005 3 732 962 1005 3 732 962 1005 3 732 962 1005 3 732 962 1005 3 733 1179 1222 3 733 1179 1222 3 733 1179 1222 3 733 1179 1222 3 733 1179 1222 3 733 1179 1222 8 733 734 1179 1180 1222 1223 1686 1687 8 733 734 1179 1180 1222 1223 1686 1687 8 733 734 1179 1180 1222 1223 1686 1687 8 733 734 1179 1180 1222 1223 1686 1687 8 733 734 1179 1180 1222 1223 1686 1687 8 733 734 1179 1180 1222 1223 1686 1687 4 733 734 1686 1687 4 733 734 1686 1687 4 733 734 1686 1687 4 733 734 1686 1687 4 733 734 1686 1687 4 733 734 1686 1687 8 733 734 963 964 1006 1007 1686 1687 8 733 734 963 964 1006 1007 1686 1687 8 733 734 963 964 1006 1007 1686 1687 8 733 734 963 964 1006 1007 1686 1687 8 733 734 963 964 1006 1007 1686 1687 8 733 734 963 964 1006 1007 1686 1687 3 733 963 1006 3 733 963 1006 3 733 963 1006 3 733 963 1006 3 733 963 1006 3 733 963 1006 3 734 1180 1223 3 734 1180 1223 3 734 1180 1223 3 734 1180 1223 3 734 1180 1223 3 734 1180 1223 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 11 734 735 736 1180 1181 1223 1224 1692 1693 1694 1695 4 734 736 1693 1695 4 734 736 1693 1695 4 734 736 1693 1695 4 734 736 1693 1695 4 734 736 1693 1695 4 734 736 1693 1695 8 734 736 964 965 1007 1008 1693 1695 8 734 736 964 965 1007 1008 1693 1695 8 734 736 964 965 1007 1008 1693 1695 8 734 736 964 965 1007 1008 1693 1695 8 734 736 964 965 1007 1008 1693 1695 8 734 736 964 965 1007 1008 1693 1695 3 734 964 1007 3 734 964 1007 3 734 964 1007 3 734 964 1007 3 734 964 1007 3 734 964 1007 8 735 1366 1377 1692 1694 2030 2032 2902 8 735 1366 1377 1692 1694 2030 2032 2902 8 735 1366 1377 1692 1694 2030 2032 2902 8 735 1366 1377 1692 1694 2030 2032 2902 8 735 1366 1377 1692 1694 2030 2032 2902 8 735 1366 1377 1692 1694 2030 2032 2902 4 735 1366 1377 2902 4 735 1366 1377 2902 4 735 1366 1377 2902 4 735 1366 1377 2902 4 735 1366 1377 2902 4 735 1366 1377 2902 8 735 1366 1377 1702 1704 2020 2022 2902 8 735 1366 1377 1702 1704 2020 2022 2902 8 735 1366 1377 1702 1704 2020 2022 2902 8 735 1366 1377 1702 1704 2020 2022 2902 8 735 1366 1377 1702 1704 2020 2022 2902 8 735 1366 1377 1702 1704 2020 2022 2902 3 735 1702 1704 3 735 1702 1704 3 735 1702 1704 3 735 1702 1704 3 735 1702 1704 3 735 1702 1704 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 11 735 736 737 1181 1182 1224 1225 1702 1703 1704 1705 4 735 736 1181 1224 4 735 736 1181 1224 4 735 736 1181 1224 4 735 736 1181 1224 4 735 736 1181 1224 4 735 736 1181 1224 3 735 1692 1694 3 735 1692 1694 3 735 1692 1694 3 735 1692 1694 3 735 1692 1694 3 735 1692 1694 4 736 737 1703 1705 4 736 737 1703 1705 4 736 737 1703 1705 4 736 737 1703 1705 4 736 737 1703 1705 4 736 737 1703 1705 8 736 737 965 966 1008 1009 1703 1705 8 736 737 965 966 1008 1009 1703 1705 8 736 737 965 966 1008 1009 1703 1705 8 736 737 965 966 1008 1009 1703 1705 8 736 737 965 966 1008 1009 1703 1705 8 736 737 965 966 1008 1009 1703 1705 3 736 965 1008 3 736 965 1008 3 736 965 1008 3 736 965 1008 3 736 965 1008 3 736 965 1008 3 737 1182 1225 3 737 1182 1225 3 737 1182 1225 3 737 1182 1225 3 737 1182 1225 3 737 1182 1225 8 737 881 1182 1183 1225 1226 1712 1713 8 737 881 1182 1183 1225 1226 1712 1713 8 737 881 1182 1183 1225 1226 1712 1713 8 737 881 1182 1183 1225 1226 1712 1713 8 737 881 1182 1183 1225 1226 1712 1713 8 737 881 1182 1183 1225 1226 1712 1713 4 737 881 1712 1713 4 737 881 1712 1713 4 737 881 1712 1713 4 737 881 1712 1713 4 737 881 1712 1713 4 737 881 1712 1713 8 737 881 966 967 1009 1010 1712 1713 8 737 881 966 967 1009 1010 1712 1713 8 737 881 966 967 1009 1010 1712 1713 8 737 881 966 967 1009 1010 1712 1713 8 737 881 966 967 1009 1010 1712 1713 8 737 881 966 967 1009 1010 1712 1713 3 737 966 1009 3 737 966 1009 3 737 966 1009 3 737 966 1009 3 737 966 1009 3 737 966 1009 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 10 738 876 1313 1314 1400 1402 2322 2324 2761 2899 3 738 1314 2899 3 738 1314 2899 3 738 1314 2899 3 738 1314 2899 3 738 1314 2899 3 738 1314 2899 8 738 740 1314 1315 1408 2316 2897 2899 8 738 740 1314 1315 1408 2316 2897 2899 8 738 740 1314 1315 1408 2316 2897 2899 8 738 740 1314 1315 1408 2316 2897 2899 8 738 740 1314 1315 1408 2316 2897 2899 8 738 740 1314 1315 1408 2316 2897 2899 3 738 740 1408 3 738 740 1408 3 738 740 1408 3 738 740 1408 3 738 740 1408 3 738 740 1408 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 12 738 739 876 877 1098 1099 1141 1142 1400 1401 1402 1403 4 738 739 1099 1142 4 738 739 1099 1142 4 738 739 1099 1142 4 738 739 1099 1142 4 738 739 1099 1142 4 738 739 1099 1142 4 738 876 1400 1402 4 738 876 1400 1402 4 738 876 1400 1402 4 738 876 1400 1402 4 738 876 1400 1402 4 738 876 1400 1402 4 739 741 1409 1410 4 739 741 1409 1410 4 739 741 1409 1410 4 739 741 1409 1410 4 739 741 1409 1410 4 739 741 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 741 883 884 926 927 1409 1410 8 739 877 882 883 925 926 1401 1403 8 739 877 882 883 925 926 1401 1403 8 739 877 882 883 925 926 1401 1403 8 739 877 882 883 925 926 1401 1403 8 739 877 882 883 925 926 1401 1403 8 739 877 882 883 925 926 1401 1403 3 739 883 926 3 739 883 926 3 739 883 926 3 739 883 926 3 739 883 926 3 739 883 926 4 739 877 1401 1403 4 739 877 1401 1403 4 739 877 1401 1403 4 739 877 1401 1403 4 739 877 1401 1403 4 739 877 1401 1403 3 740 1315 2897 3 740 1315 2897 3 740 1315 2897 3 740 1315 2897 3 740 1315 2897 3 740 1315 2897 8 740 742 1315 1316 1414 2310 2895 2897 8 740 742 1315 1316 1414 2310 2895 2897 8 740 742 1315 1316 1414 2310 2895 2897 8 740 742 1315 1316 1414 2310 2895 2897 8 740 742 1315 1316 1414 2310 2895 2897 8 740 742 1315 1316 1414 2310 2895 2897 3 740 742 1414 3 740 742 1414 3 740 742 1414 3 740 742 1414 3 740 742 1414 3 740 742 1414 4 740 741 1100 1143 4 740 741 1100 1143 4 740 741 1100 1143 4 740 741 1100 1143 4 740 741 1100 1143 4 740 741 1100 1143 4 741 743 1415 1416 4 741 743 1415 1416 4 741 743 1415 1416 4 741 743 1415 1416 4 741 743 1415 1416 4 741 743 1415 1416 8 741 743 884 885 927 928 1415 1416 8 741 743 884 885 927 928 1415 1416 8 741 743 884 885 927 928 1415 1416 8 741 743 884 885 927 928 1415 1416 8 741 743 884 885 927 928 1415 1416 8 741 743 884 885 927 928 1415 1416 3 741 884 927 3 741 884 927 3 741 884 927 3 741 884 927 3 741 884 927 3 741 884 927 3 742 1316 2895 3 742 1316 2895 3 742 1316 2895 3 742 1316 2895 3 742 1316 2895 3 742 1316 2895 8 742 744 1316 1317 1420 2304 2893 2895 8 742 744 1316 1317 1420 2304 2893 2895 8 742 744 1316 1317 1420 2304 2893 2895 8 742 744 1316 1317 1420 2304 2893 2895 8 742 744 1316 1317 1420 2304 2893 2895 8 742 744 1316 1317 1420 2304 2893 2895 3 742 744 1420 3 742 744 1420 3 742 744 1420 3 742 744 1420 3 742 744 1420 3 742 744 1420 4 742 743 1101 1144 4 742 743 1101 1144 4 742 743 1101 1144 4 742 743 1101 1144 4 742 743 1101 1144 4 742 743 1101 1144 4 743 745 1421 1422 4 743 745 1421 1422 4 743 745 1421 1422 4 743 745 1421 1422 4 743 745 1421 1422 4 743 745 1421 1422 8 743 745 885 886 928 929 1421 1422 8 743 745 885 886 928 929 1421 1422 8 743 745 885 886 928 929 1421 1422 8 743 745 885 886 928 929 1421 1422 8 743 745 885 886 928 929 1421 1422 8 743 745 885 886 928 929 1421 1422 3 743 885 928 3 743 885 928 3 743 885 928 3 743 885 928 3 743 885 928 3 743 885 928 3 744 1317 2893 3 744 1317 2893 3 744 1317 2893 3 744 1317 2893 3 744 1317 2893 3 744 1317 2893 8 744 746 1317 1318 1426 2298 2891 2893 8 744 746 1317 1318 1426 2298 2891 2893 8 744 746 1317 1318 1426 2298 2891 2893 8 744 746 1317 1318 1426 2298 2891 2893 8 744 746 1317 1318 1426 2298 2891 2893 8 744 746 1317 1318 1426 2298 2891 2893 3 744 746 1426 3 744 746 1426 3 744 746 1426 3 744 746 1426 3 744 746 1426 3 744 746 1426 4 744 745 1102 1145 4 744 745 1102 1145 4 744 745 1102 1145 4 744 745 1102 1145 4 744 745 1102 1145 4 744 745 1102 1145 4 745 747 1427 1428 4 745 747 1427 1428 4 745 747 1427 1428 4 745 747 1427 1428 4 745 747 1427 1428 4 745 747 1427 1428 8 745 747 886 887 929 930 1427 1428 8 745 747 886 887 929 930 1427 1428 8 745 747 886 887 929 930 1427 1428 8 745 747 886 887 929 930 1427 1428 8 745 747 886 887 929 930 1427 1428 8 745 747 886 887 929 930 1427 1428 3 745 886 929 3 745 886 929 3 745 886 929 3 745 886 929 3 745 886 929 3 745 886 929 3 746 1318 2891 3 746 1318 2891 3 746 1318 2891 3 746 1318 2891 3 746 1318 2891 3 746 1318 2891 8 746 748 1318 1319 1432 2292 2889 2891 8 746 748 1318 1319 1432 2292 2889 2891 8 746 748 1318 1319 1432 2292 2889 2891 8 746 748 1318 1319 1432 2292 2889 2891 8 746 748 1318 1319 1432 2292 2889 2891 8 746 748 1318 1319 1432 2292 2889 2891 3 746 748 1432 3 746 748 1432 3 746 748 1432 3 746 748 1432 3 746 748 1432 3 746 748 1432 4 746 747 1103 1146 4 746 747 1103 1146 4 746 747 1103 1146 4 746 747 1103 1146 4 746 747 1103 1146 4 746 747 1103 1146 4 747 749 1433 1434 4 747 749 1433 1434 4 747 749 1433 1434 4 747 749 1433 1434 4 747 749 1433 1434 4 747 749 1433 1434 8 747 749 887 888 930 931 1433 1434 8 747 749 887 888 930 931 1433 1434 8 747 749 887 888 930 931 1433 1434 8 747 749 887 888 930 931 1433 1434 8 747 749 887 888 930 931 1433 1434 8 747 749 887 888 930 931 1433 1434 3 747 887 930 3 747 887 930 3 747 887 930 3 747 887 930 3 747 887 930 3 747 887 930 3 748 1319 2889 3 748 1319 2889 3 748 1319 2889 3 748 1319 2889 3 748 1319 2889 3 748 1319 2889 8 748 750 1319 1320 1438 2286 2887 2889 8 748 750 1319 1320 1438 2286 2887 2889 8 748 750 1319 1320 1438 2286 2887 2889 8 748 750 1319 1320 1438 2286 2887 2889 8 748 750 1319 1320 1438 2286 2887 2889 8 748 750 1319 1320 1438 2286 2887 2889 3 748 750 1438 3 748 750 1438 3 748 750 1438 3 748 750 1438 3 748 750 1438 3 748 750 1438 4 748 749 1104 1147 4 748 749 1104 1147 4 748 749 1104 1147 4 748 749 1104 1147 4 748 749 1104 1147 4 748 749 1104 1147 4 749 751 1439 1440 4 749 751 1439 1440 4 749 751 1439 1440 4 749 751 1439 1440 4 749 751 1439 1440 4 749 751 1439 1440 8 749 751 888 889 931 932 1439 1440 8 749 751 888 889 931 932 1439 1440 8 749 751 888 889 931 932 1439 1440 8 749 751 888 889 931 932 1439 1440 8 749 751 888 889 931 932 1439 1440 8 749 751 888 889 931 932 1439 1440 3 749 888 931 3 749 888 931 3 749 888 931 3 749 888 931 3 749 888 931 3 749 888 931 3 750 1320 2887 3 750 1320 2887 3 750 1320 2887 3 750 1320 2887 3 750 1320 2887 3 750 1320 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 10 750 752 1320 1321 1444 1446 2278 2280 2885 2887 4 750 752 1444 1446 4 750 752 1444 1446 4 750 752 1444 1446 4 750 752 1444 1446 4 750 752 1444 1446 4 750 752 1444 1446 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 12 750 751 752 753 1105 1106 1148 1149 1444 1445 1446 1447 4 750 751 1105 1148 4 750 751 1105 1148 4 750 751 1105 1148 4 750 751 1105 1148 4 750 751 1105 1148 4 750 751 1105 1148 4 751 753 1445 1447 4 751 753 1445 1447 4 751 753 1445 1447 4 751 753 1445 1447 4 751 753 1445 1447 4 751 753 1445 1447 8 751 753 889 890 932 933 1445 1447 8 751 753 889 890 932 933 1445 1447 8 751 753 889 890 932 933 1445 1447 8 751 753 889 890 932 933 1445 1447 8 751 753 889 890 932 933 1445 1447 8 751 753 889 890 932 933 1445 1447 3 751 889 932 3 751 889 932 3 751 889 932 3 751 889 932 3 751 889 932 3 751 889 932 3 752 1321 2885 3 752 1321 2885 3 752 1321 2885 3 752 1321 2885 3 752 1321 2885 3 752 1321 2885 8 752 754 1321 1322 1452 2272 2883 2885 8 752 754 1321 1322 1452 2272 2883 2885 8 752 754 1321 1322 1452 2272 2883 2885 8 752 754 1321 1322 1452 2272 2883 2885 8 752 754 1321 1322 1452 2272 2883 2885 8 752 754 1321 1322 1452 2272 2883 2885 3 752 754 1452 3 752 754 1452 3 752 754 1452 3 752 754 1452 3 752 754 1452 3 752 754 1452 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 11 752 753 754 755 1106 1107 1149 1150 1452 1453 1454 4 752 753 1106 1149 4 752 753 1106 1149 4 752 753 1106 1149 4 752 753 1106 1149 4 752 753 1106 1149 4 752 753 1106 1149 4 753 755 1453 1454 4 753 755 1453 1454 4 753 755 1453 1454 4 753 755 1453 1454 4 753 755 1453 1454 4 753 755 1453 1454 8 753 755 890 891 933 934 1453 1454 8 753 755 890 891 933 934 1453 1454 8 753 755 890 891 933 934 1453 1454 8 753 755 890 891 933 934 1453 1454 8 753 755 890 891 933 934 1453 1454 8 753 755 890 891 933 934 1453 1454 3 753 890 933 3 753 890 933 3 753 890 933 3 753 890 933 3 753 890 933 3 753 890 933 3 754 1322 2883 3 754 1322 2883 3 754 1322 2883 3 754 1322 2883 3 754 1322 2883 3 754 1322 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 11 754 756 1322 1323 1356 1458 1460 2264 2266 2881 2883 4 754 756 1458 1460 4 754 756 1458 1460 4 754 756 1458 1460 4 754 756 1458 1460 4 754 756 1458 1460 4 754 756 1458 1460 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 12 754 755 756 757 1107 1108 1150 1151 1458 1459 1460 1461 4 754 755 1107 1150 4 754 755 1107 1150 4 754 755 1107 1150 4 754 755 1107 1150 4 754 755 1107 1150 4 754 755 1107 1150 4 755 757 1459 1461 4 755 757 1459 1461 4 755 757 1459 1461 4 755 757 1459 1461 4 755 757 1459 1461 4 755 757 1459 1461 8 755 757 891 892 934 935 1459 1461 8 755 757 891 892 934 935 1459 1461 8 755 757 891 892 934 935 1459 1461 8 755 757 891 892 934 935 1459 1461 8 755 757 891 892 934 935 1459 1461 8 755 757 891 892 934 935 1459 1461 3 755 891 934 3 755 891 934 3 755 891 934 3 755 891 934 3 755 891 934 3 755 891 934 4 756 1323 1356 2881 4 756 1323 1356 2881 4 756 1323 1356 2881 4 756 1323 1356 2881 4 756 1323 1356 2881 4 756 1323 1356 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 11 756 758 1323 1324 1356 1466 1468 2256 2258 2879 2881 4 756 758 1466 1468 4 756 758 1466 1468 4 756 758 1466 1468 4 756 758 1466 1468 4 756 758 1466 1468 4 756 758 1466 1468 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 12 756 757 758 759 1108 1109 1151 1152 1466 1467 1468 1469 4 756 757 1108 1151 4 756 757 1108 1151 4 756 757 1108 1151 4 756 757 1108 1151 4 756 757 1108 1151 4 756 757 1108 1151 4 757 759 1467 1469 4 757 759 1467 1469 4 757 759 1467 1469 4 757 759 1467 1469 4 757 759 1467 1469 4 757 759 1467 1469 8 757 759 892 893 935 936 1467 1469 8 757 759 892 893 935 936 1467 1469 8 757 759 892 893 935 936 1467 1469 8 757 759 892 893 935 936 1467 1469 8 757 759 892 893 935 936 1467 1469 8 757 759 892 893 935 936 1467 1469 3 757 892 935 3 757 892 935 3 757 892 935 3 757 892 935 3 757 892 935 3 757 892 935 3 758 1324 2879 3 758 1324 2879 3 758 1324 2879 3 758 1324 2879 3 758 1324 2879 3 758 1324 2879 8 758 760 1324 1325 1474 2250 2877 2879 8 758 760 1324 1325 1474 2250 2877 2879 8 758 760 1324 1325 1474 2250 2877 2879 8 758 760 1324 1325 1474 2250 2877 2879 8 758 760 1324 1325 1474 2250 2877 2879 8 758 760 1324 1325 1474 2250 2877 2879 3 758 760 1474 3 758 760 1474 3 758 760 1474 3 758 760 1474 3 758 760 1474 3 758 760 1474 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 11 758 759 760 761 1109 1110 1152 1153 1474 1475 1476 4 758 759 1109 1152 4 758 759 1109 1152 4 758 759 1109 1152 4 758 759 1109 1152 4 758 759 1109 1152 4 758 759 1109 1152 4 759 761 1475 1476 4 759 761 1475 1476 4 759 761 1475 1476 4 759 761 1475 1476 4 759 761 1475 1476 4 759 761 1475 1476 8 759 761 893 894 936 937 1475 1476 8 759 761 893 894 936 937 1475 1476 8 759 761 893 894 936 937 1475 1476 8 759 761 893 894 936 937 1475 1476 8 759 761 893 894 936 937 1475 1476 8 759 761 893 894 936 937 1475 1476 3 759 893 936 3 759 893 936 3 759 893 936 3 759 893 936 3 759 893 936 3 759 893 936 3 760 1325 2877 3 760 1325 2877 3 760 1325 2877 3 760 1325 2877 3 760 1325 2877 3 760 1325 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 11 760 762 1325 1326 1357 1480 1482 2242 2244 2875 2877 4 760 762 1480 1482 4 760 762 1480 1482 4 760 762 1480 1482 4 760 762 1480 1482 4 760 762 1480 1482 4 760 762 1480 1482 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 12 760 761 762 763 1110 1111 1153 1154 1480 1481 1482 1483 4 760 761 1110 1153 4 760 761 1110 1153 4 760 761 1110 1153 4 760 761 1110 1153 4 760 761 1110 1153 4 760 761 1110 1153 4 761 763 1481 1483 4 761 763 1481 1483 4 761 763 1481 1483 4 761 763 1481 1483 4 761 763 1481 1483 4 761 763 1481 1483 8 761 763 894 895 937 938 1481 1483 8 761 763 894 895 937 938 1481 1483 8 761 763 894 895 937 938 1481 1483 8 761 763 894 895 937 938 1481 1483 8 761 763 894 895 937 938 1481 1483 8 761 763 894 895 937 938 1481 1483 3 761 894 937 3 761 894 937 3 761 894 937 3 761 894 937 3 761 894 937 3 761 894 937 4 762 1326 1357 2875 4 762 1326 1357 2875 4 762 1326 1357 2875 4 762 1326 1357 2875 4 762 1326 1357 2875 4 762 1326 1357 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 11 762 764 1326 1327 1357 1490 1492 2232 2234 2873 2875 4 762 764 1490 1492 4 762 764 1490 1492 4 762 764 1490 1492 4 762 764 1490 1492 4 762 764 1490 1492 4 762 764 1490 1492 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 12 762 763 764 765 1111 1112 1154 1155 1490 1491 1492 1493 4 762 763 1111 1154 4 762 763 1111 1154 4 762 763 1111 1154 4 762 763 1111 1154 4 762 763 1111 1154 4 762 763 1111 1154 4 763 765 1491 1493 4 763 765 1491 1493 4 763 765 1491 1493 4 763 765 1491 1493 4 763 765 1491 1493 4 763 765 1491 1493 8 763 765 895 896 938 939 1491 1493 8 763 765 895 896 938 939 1491 1493 8 763 765 895 896 938 939 1491 1493 8 763 765 895 896 938 939 1491 1493 8 763 765 895 896 938 939 1491 1493 8 763 765 895 896 938 939 1491 1493 3 763 895 938 3 763 895 938 3 763 895 938 3 763 895 938 3 763 895 938 3 763 895 938 3 764 1327 2873 3 764 1327 2873 3 764 1327 2873 3 764 1327 2873 3 764 1327 2873 3 764 1327 2873 8 764 766 1327 1328 1500 2224 2871 2873 8 764 766 1327 1328 1500 2224 2871 2873 8 764 766 1327 1328 1500 2224 2871 2873 8 764 766 1327 1328 1500 2224 2871 2873 8 764 766 1327 1328 1500 2224 2871 2873 8 764 766 1327 1328 1500 2224 2871 2873 3 764 766 1500 3 764 766 1500 3 764 766 1500 3 764 766 1500 3 764 766 1500 3 764 766 1500 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 11 764 765 766 767 1112 1113 1155 1156 1500 1501 1502 4 764 765 1112 1155 4 764 765 1112 1155 4 764 765 1112 1155 4 764 765 1112 1155 4 764 765 1112 1155 4 764 765 1112 1155 4 765 767 1501 1502 4 765 767 1501 1502 4 765 767 1501 1502 4 765 767 1501 1502 4 765 767 1501 1502 4 765 767 1501 1502 8 765 767 896 897 939 940 1501 1502 8 765 767 896 897 939 940 1501 1502 8 765 767 896 897 939 940 1501 1502 8 765 767 896 897 939 940 1501 1502 8 765 767 896 897 939 940 1501 1502 8 765 767 896 897 939 940 1501 1502 3 765 896 939 3 765 896 939 3 765 896 939 3 765 896 939 3 765 896 939 3 765 896 939 3 766 1328 2871 3 766 1328 2871 3 766 1328 2871 3 766 1328 2871 3 766 1328 2871 3 766 1328 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 11 766 768 1328 1329 1358 1506 1508 2216 2218 2869 2871 4 766 768 1506 1508 4 766 768 1506 1508 4 766 768 1506 1508 4 766 768 1506 1508 4 766 768 1506 1508 4 766 768 1506 1508 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 12 766 767 768 769 1113 1114 1156 1157 1506 1507 1508 1509 4 766 767 1113 1156 4 766 767 1113 1156 4 766 767 1113 1156 4 766 767 1113 1156 4 766 767 1113 1156 4 766 767 1113 1156 4 767 769 1507 1509 4 767 769 1507 1509 4 767 769 1507 1509 4 767 769 1507 1509 4 767 769 1507 1509 4 767 769 1507 1509 8 767 769 897 898 940 941 1507 1509 8 767 769 897 898 940 941 1507 1509 8 767 769 897 898 940 941 1507 1509 8 767 769 897 898 940 941 1507 1509 8 767 769 897 898 940 941 1507 1509 8 767 769 897 898 940 941 1507 1509 3 767 897 940 3 767 897 940 3 767 897 940 3 767 897 940 3 767 897 940 3 767 897 940 4 768 1329 1358 2869 4 768 1329 1358 2869 4 768 1329 1358 2869 4 768 1329 1358 2869 4 768 1329 1358 2869 4 768 1329 1358 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 11 768 770 1329 1330 1358 1514 1516 2208 2210 2867 2869 4 768 770 1514 1516 4 768 770 1514 1516 4 768 770 1514 1516 4 768 770 1514 1516 4 768 770 1514 1516 4 768 770 1514 1516 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 12 768 769 770 771 1114 1115 1157 1158 1514 1515 1516 1517 4 768 769 1114 1157 4 768 769 1114 1157 4 768 769 1114 1157 4 768 769 1114 1157 4 768 769 1114 1157 4 768 769 1114 1157 4 769 771 1515 1517 4 769 771 1515 1517 4 769 771 1515 1517 4 769 771 1515 1517 4 769 771 1515 1517 4 769 771 1515 1517 8 769 771 898 899 941 942 1515 1517 8 769 771 898 899 941 942 1515 1517 8 769 771 898 899 941 942 1515 1517 8 769 771 898 899 941 942 1515 1517 8 769 771 898 899 941 942 1515 1517 8 769 771 898 899 941 942 1515 1517 3 769 898 941 3 769 898 941 3 769 898 941 3 769 898 941 3 769 898 941 3 769 898 941 3 770 1330 2867 3 770 1330 2867 3 770 1330 2867 3 770 1330 2867 3 770 1330 2867 3 770 1330 2867 8 770 772 1330 1331 1522 2202 2865 2867 8 770 772 1330 1331 1522 2202 2865 2867 8 770 772 1330 1331 1522 2202 2865 2867 8 770 772 1330 1331 1522 2202 2865 2867 8 770 772 1330 1331 1522 2202 2865 2867 8 770 772 1330 1331 1522 2202 2865 2867 3 770 772 1522 3 770 772 1522 3 770 772 1522 3 770 772 1522 3 770 772 1522 3 770 772 1522 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 11 770 771 772 773 1115 1116 1158 1159 1522 1523 1524 4 770 771 1115 1158 4 770 771 1115 1158 4 770 771 1115 1158 4 770 771 1115 1158 4 770 771 1115 1158 4 770 771 1115 1158 4 771 773 1523 1524 4 771 773 1523 1524 4 771 773 1523 1524 4 771 773 1523 1524 4 771 773 1523 1524 4 771 773 1523 1524 8 771 773 899 900 942 943 1523 1524 8 771 773 899 900 942 943 1523 1524 8 771 773 899 900 942 943 1523 1524 8 771 773 899 900 942 943 1523 1524 8 771 773 899 900 942 943 1523 1524 8 771 773 899 900 942 943 1523 1524 3 771 899 942 3 771 899 942 3 771 899 942 3 771 899 942 3 771 899 942 3 771 899 942 3 772 1331 2865 3 772 1331 2865 3 772 1331 2865 3 772 1331 2865 3 772 1331 2865 3 772 1331 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 11 772 774 1331 1332 1359 1528 1530 2194 2196 2863 2865 4 772 774 1528 1530 4 772 774 1528 1530 4 772 774 1528 1530 4 772 774 1528 1530 4 772 774 1528 1530 4 772 774 1528 1530 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 12 772 773 774 775 1116 1117 1159 1160 1528 1529 1530 1531 4 772 773 1116 1159 4 772 773 1116 1159 4 772 773 1116 1159 4 772 773 1116 1159 4 772 773 1116 1159 4 772 773 1116 1159 4 773 775 1529 1531 4 773 775 1529 1531 4 773 775 1529 1531 4 773 775 1529 1531 4 773 775 1529 1531 4 773 775 1529 1531 8 773 775 900 901 943 944 1529 1531 8 773 775 900 901 943 944 1529 1531 8 773 775 900 901 943 944 1529 1531 8 773 775 900 901 943 944 1529 1531 8 773 775 900 901 943 944 1529 1531 8 773 775 900 901 943 944 1529 1531 3 773 900 943 3 773 900 943 3 773 900 943 3 773 900 943 3 773 900 943 3 773 900 943 4 774 1332 1359 2863 4 774 1332 1359 2863 4 774 1332 1359 2863 4 774 1332 1359 2863 4 774 1332 1359 2863 4 774 1332 1359 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 11 774 776 1332 1333 1359 1538 1540 2184 2186 2861 2863 4 774 776 1538 1540 4 774 776 1538 1540 4 774 776 1538 1540 4 774 776 1538 1540 4 774 776 1538 1540 4 774 776 1538 1540 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 12 774 775 776 777 1117 1118 1160 1161 1538 1539 1540 1541 4 774 775 1117 1160 4 774 775 1117 1160 4 774 775 1117 1160 4 774 775 1117 1160 4 774 775 1117 1160 4 774 775 1117 1160 4 775 777 1539 1541 4 775 777 1539 1541 4 775 777 1539 1541 4 775 777 1539 1541 4 775 777 1539 1541 4 775 777 1539 1541 8 775 777 901 902 944 945 1539 1541 8 775 777 901 902 944 945 1539 1541 8 775 777 901 902 944 945 1539 1541 8 775 777 901 902 944 945 1539 1541 8 775 777 901 902 944 945 1539 1541 8 775 777 901 902 944 945 1539 1541 3 775 901 944 3 775 901 944 3 775 901 944 3 775 901 944 3 775 901 944 3 775 901 944 3 776 1333 2861 3 776 1333 2861 3 776 1333 2861 3 776 1333 2861 3 776 1333 2861 3 776 1333 2861 8 776 778 1333 1334 1546 2178 2859 2861 8 776 778 1333 1334 1546 2178 2859 2861 8 776 778 1333 1334 1546 2178 2859 2861 8 776 778 1333 1334 1546 2178 2859 2861 8 776 778 1333 1334 1546 2178 2859 2861 8 776 778 1333 1334 1546 2178 2859 2861 3 776 778 1546 3 776 778 1546 3 776 778 1546 3 776 778 1546 3 776 778 1546 3 776 778 1546 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 11 776 777 778 779 1118 1119 1161 1162 1546 1547 1548 4 776 777 1118 1161 4 776 777 1118 1161 4 776 777 1118 1161 4 776 777 1118 1161 4 776 777 1118 1161 4 776 777 1118 1161 4 777 779 1547 1548 4 777 779 1547 1548 4 777 779 1547 1548 4 777 779 1547 1548 4 777 779 1547 1548 4 777 779 1547 1548 8 777 779 902 903 945 946 1547 1548 8 777 779 902 903 945 946 1547 1548 8 777 779 902 903 945 946 1547 1548 8 777 779 902 903 945 946 1547 1548 8 777 779 902 903 945 946 1547 1548 8 777 779 902 903 945 946 1547 1548 3 777 902 945 3 777 902 945 3 777 902 945 3 777 902 945 3 777 902 945 3 777 902 945 3 778 1334 2859 3 778 1334 2859 3 778 1334 2859 3 778 1334 2859 3 778 1334 2859 3 778 1334 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 11 778 780 1334 1335 1360 1552 1554 2170 2172 2857 2859 4 778 780 1552 1554 4 778 780 1552 1554 4 778 780 1552 1554 4 778 780 1552 1554 4 778 780 1552 1554 4 778 780 1552 1554 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 12 778 779 780 781 1119 1120 1162 1163 1552 1553 1554 1555 4 778 779 1119 1162 4 778 779 1119 1162 4 778 779 1119 1162 4 778 779 1119 1162 4 778 779 1119 1162 4 778 779 1119 1162 4 779 781 1553 1555 4 779 781 1553 1555 4 779 781 1553 1555 4 779 781 1553 1555 4 779 781 1553 1555 4 779 781 1553 1555 8 779 781 903 904 946 947 1553 1555 8 779 781 903 904 946 947 1553 1555 8 779 781 903 904 946 947 1553 1555 8 779 781 903 904 946 947 1553 1555 8 779 781 903 904 946 947 1553 1555 8 779 781 903 904 946 947 1553 1555 3 779 903 946 3 779 903 946 3 779 903 946 3 779 903 946 3 779 903 946 3 779 903 946 4 780 1335 1360 2857 4 780 1335 1360 2857 4 780 1335 1360 2857 4 780 1335 1360 2857 4 780 1335 1360 2857 4 780 1335 1360 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 11 780 782 1335 1336 1360 1560 1562 2162 2164 2855 2857 4 780 782 1560 1562 4 780 782 1560 1562 4 780 782 1560 1562 4 780 782 1560 1562 4 780 782 1560 1562 4 780 782 1560 1562 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 12 780 781 782 783 1120 1121 1163 1164 1560 1561 1562 1563 4 780 781 1120 1163 4 780 781 1120 1163 4 780 781 1120 1163 4 780 781 1120 1163 4 780 781 1120 1163 4 780 781 1120 1163 4 781 783 1561 1563 4 781 783 1561 1563 4 781 783 1561 1563 4 781 783 1561 1563 4 781 783 1561 1563 4 781 783 1561 1563 8 781 783 904 905 947 948 1561 1563 8 781 783 904 905 947 948 1561 1563 8 781 783 904 905 947 948 1561 1563 8 781 783 904 905 947 948 1561 1563 8 781 783 904 905 947 948 1561 1563 8 781 783 904 905 947 948 1561 1563 3 781 904 947 3 781 904 947 3 781 904 947 3 781 904 947 3 781 904 947 3 781 904 947 3 782 1336 2855 3 782 1336 2855 3 782 1336 2855 3 782 1336 2855 3 782 1336 2855 3 782 1336 2855 8 782 784 1336 1337 1568 2156 2853 2855 8 782 784 1336 1337 1568 2156 2853 2855 8 782 784 1336 1337 1568 2156 2853 2855 8 782 784 1336 1337 1568 2156 2853 2855 8 782 784 1336 1337 1568 2156 2853 2855 8 782 784 1336 1337 1568 2156 2853 2855 3 782 784 1568 3 782 784 1568 3 782 784 1568 3 782 784 1568 3 782 784 1568 3 782 784 1568 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 11 782 783 784 785 1121 1122 1164 1165 1568 1569 1570 4 782 783 1121 1164 4 782 783 1121 1164 4 782 783 1121 1164 4 782 783 1121 1164 4 782 783 1121 1164 4 782 783 1121 1164 4 783 785 1569 1570 4 783 785 1569 1570 4 783 785 1569 1570 4 783 785 1569 1570 4 783 785 1569 1570 4 783 785 1569 1570 8 783 785 905 906 948 949 1569 1570 8 783 785 905 906 948 949 1569 1570 8 783 785 905 906 948 949 1569 1570 8 783 785 905 906 948 949 1569 1570 8 783 785 905 906 948 949 1569 1570 8 783 785 905 906 948 949 1569 1570 3 783 905 948 3 783 905 948 3 783 905 948 3 783 905 948 3 783 905 948 3 783 905 948 3 784 1337 2853 3 784 1337 2853 3 784 1337 2853 3 784 1337 2853 3 784 1337 2853 3 784 1337 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 11 784 786 1337 1338 1361 1574 1576 2148 2150 2851 2853 4 784 786 1574 1576 4 784 786 1574 1576 4 784 786 1574 1576 4 784 786 1574 1576 4 784 786 1574 1576 4 784 786 1574 1576 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 12 784 785 786 787 1122 1123 1165 1166 1574 1575 1576 1577 4 784 785 1122 1165 4 784 785 1122 1165 4 784 785 1122 1165 4 784 785 1122 1165 4 784 785 1122 1165 4 784 785 1122 1165 4 785 787 1575 1577 4 785 787 1575 1577 4 785 787 1575 1577 4 785 787 1575 1577 4 785 787 1575 1577 4 785 787 1575 1577 8 785 787 906 907 949 950 1575 1577 8 785 787 906 907 949 950 1575 1577 8 785 787 906 907 949 950 1575 1577 8 785 787 906 907 949 950 1575 1577 8 785 787 906 907 949 950 1575 1577 8 785 787 906 907 949 950 1575 1577 3 785 906 949 3 785 906 949 3 785 906 949 3 785 906 949 3 785 906 949 3 785 906 949 4 786 1338 1361 2851 4 786 1338 1361 2851 4 786 1338 1361 2851 4 786 1338 1361 2851 4 786 1338 1361 2851 4 786 1338 1361 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 11 786 788 1338 1339 1361 1584 1586 2138 2140 2849 2851 4 786 788 1584 1586 4 786 788 1584 1586 4 786 788 1584 1586 4 786 788 1584 1586 4 786 788 1584 1586 4 786 788 1584 1586 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 12 786 787 788 789 1123 1124 1166 1167 1584 1585 1586 1587 4 786 787 1123 1166 4 786 787 1123 1166 4 786 787 1123 1166 4 786 787 1123 1166 4 786 787 1123 1166 4 786 787 1123 1166 4 787 789 1585 1587 4 787 789 1585 1587 4 787 789 1585 1587 4 787 789 1585 1587 4 787 789 1585 1587 4 787 789 1585 1587 8 787 789 907 908 950 951 1585 1587 8 787 789 907 908 950 951 1585 1587 8 787 789 907 908 950 951 1585 1587 8 787 789 907 908 950 951 1585 1587 8 787 789 907 908 950 951 1585 1587 8 787 789 907 908 950 951 1585 1587 3 787 907 950 3 787 907 950 3 787 907 950 3 787 907 950 3 787 907 950 3 787 907 950 3 788 1339 2849 3 788 1339 2849 3 788 1339 2849 3 788 1339 2849 3 788 1339 2849 3 788 1339 2849 8 788 790 1339 1340 1592 2132 2847 2849 8 788 790 1339 1340 1592 2132 2847 2849 8 788 790 1339 1340 1592 2132 2847 2849 8 788 790 1339 1340 1592 2132 2847 2849 8 788 790 1339 1340 1592 2132 2847 2849 8 788 790 1339 1340 1592 2132 2847 2849 3 788 790 1592 3 788 790 1592 3 788 790 1592 3 788 790 1592 3 788 790 1592 3 788 790 1592 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 11 788 789 790 791 1124 1125 1167 1168 1592 1593 1594 4 788 789 1124 1167 4 788 789 1124 1167 4 788 789 1124 1167 4 788 789 1124 1167 4 788 789 1124 1167 4 788 789 1124 1167 4 789 791 1593 1594 4 789 791 1593 1594 4 789 791 1593 1594 4 789 791 1593 1594 4 789 791 1593 1594 4 789 791 1593 1594 8 789 791 908 909 951 952 1593 1594 8 789 791 908 909 951 952 1593 1594 8 789 791 908 909 951 952 1593 1594 8 789 791 908 909 951 952 1593 1594 8 789 791 908 909 951 952 1593 1594 8 789 791 908 909 951 952 1593 1594 3 789 908 951 3 789 908 951 3 789 908 951 3 789 908 951 3 789 908 951 3 789 908 951 3 790 1340 2847 3 790 1340 2847 3 790 1340 2847 3 790 1340 2847 3 790 1340 2847 3 790 1340 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 11 790 792 1340 1341 1362 1598 1600 2124 2126 2845 2847 4 790 792 1598 1600 4 790 792 1598 1600 4 790 792 1598 1600 4 790 792 1598 1600 4 790 792 1598 1600 4 790 792 1598 1600 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 12 790 791 792 793 1125 1126 1168 1169 1598 1599 1600 1601 4 790 791 1125 1168 4 790 791 1125 1168 4 790 791 1125 1168 4 790 791 1125 1168 4 790 791 1125 1168 4 790 791 1125 1168 4 791 793 1599 1601 4 791 793 1599 1601 4 791 793 1599 1601 4 791 793 1599 1601 4 791 793 1599 1601 4 791 793 1599 1601 8 791 793 909 910 952 953 1599 1601 8 791 793 909 910 952 953 1599 1601 8 791 793 909 910 952 953 1599 1601 8 791 793 909 910 952 953 1599 1601 8 791 793 909 910 952 953 1599 1601 8 791 793 909 910 952 953 1599 1601 3 791 909 952 3 791 909 952 3 791 909 952 3 791 909 952 3 791 909 952 3 791 909 952 4 792 1341 1362 2845 4 792 1341 1362 2845 4 792 1341 1362 2845 4 792 1341 1362 2845 4 792 1341 1362 2845 4 792 1341 1362 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 11 792 794 1341 1342 1362 1606 1608 2116 2118 2843 2845 4 792 794 1606 1608 4 792 794 1606 1608 4 792 794 1606 1608 4 792 794 1606 1608 4 792 794 1606 1608 4 792 794 1606 1608 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 12 792 793 794 795 1126 1127 1169 1170 1606 1607 1608 1609 4 792 793 1126 1169 4 792 793 1126 1169 4 792 793 1126 1169 4 792 793 1126 1169 4 792 793 1126 1169 4 792 793 1126 1169 4 793 795 1607 1609 4 793 795 1607 1609 4 793 795 1607 1609 4 793 795 1607 1609 4 793 795 1607 1609 4 793 795 1607 1609 8 793 795 910 911 953 954 1607 1609 8 793 795 910 911 953 954 1607 1609 8 793 795 910 911 953 954 1607 1609 8 793 795 910 911 953 954 1607 1609 8 793 795 910 911 953 954 1607 1609 8 793 795 910 911 953 954 1607 1609 3 793 910 953 3 793 910 953 3 793 910 953 3 793 910 953 3 793 910 953 3 793 910 953 3 794 1342 2843 3 794 1342 2843 3 794 1342 2843 3 794 1342 2843 3 794 1342 2843 3 794 1342 2843 8 794 796 1342 1343 1614 2110 2841 2843 8 794 796 1342 1343 1614 2110 2841 2843 8 794 796 1342 1343 1614 2110 2841 2843 8 794 796 1342 1343 1614 2110 2841 2843 8 794 796 1342 1343 1614 2110 2841 2843 8 794 796 1342 1343 1614 2110 2841 2843 3 794 796 1614 3 794 796 1614 3 794 796 1614 3 794 796 1614 3 794 796 1614 3 794 796 1614 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 11 794 795 796 797 1127 1128 1170 1171 1614 1615 1616 4 794 795 1127 1170 4 794 795 1127 1170 4 794 795 1127 1170 4 794 795 1127 1170 4 794 795 1127 1170 4 794 795 1127 1170 4 795 797 1615 1616 4 795 797 1615 1616 4 795 797 1615 1616 4 795 797 1615 1616 4 795 797 1615 1616 4 795 797 1615 1616 8 795 797 911 912 954 955 1615 1616 8 795 797 911 912 954 955 1615 1616 8 795 797 911 912 954 955 1615 1616 8 795 797 911 912 954 955 1615 1616 8 795 797 911 912 954 955 1615 1616 8 795 797 911 912 954 955 1615 1616 3 795 911 954 3 795 911 954 3 795 911 954 3 795 911 954 3 795 911 954 3 795 911 954 3 796 1343 2841 3 796 1343 2841 3 796 1343 2841 3 796 1343 2841 3 796 1343 2841 3 796 1343 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 11 796 798 1343 1344 1363 1620 1622 2102 2104 2839 2841 4 796 798 1620 1622 4 796 798 1620 1622 4 796 798 1620 1622 4 796 798 1620 1622 4 796 798 1620 1622 4 796 798 1620 1622 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 12 796 797 798 799 1128 1129 1171 1172 1620 1621 1622 1623 4 796 797 1128 1171 4 796 797 1128 1171 4 796 797 1128 1171 4 796 797 1128 1171 4 796 797 1128 1171 4 796 797 1128 1171 4 797 799 1621 1623 4 797 799 1621 1623 4 797 799 1621 1623 4 797 799 1621 1623 4 797 799 1621 1623 4 797 799 1621 1623 8 797 799 912 913 955 956 1621 1623 8 797 799 912 913 955 956 1621 1623 8 797 799 912 913 955 956 1621 1623 8 797 799 912 913 955 956 1621 1623 8 797 799 912 913 955 956 1621 1623 8 797 799 912 913 955 956 1621 1623 3 797 912 955 3 797 912 955 3 797 912 955 3 797 912 955 3 797 912 955 3 797 912 955 4 798 1344 1363 2839 4 798 1344 1363 2839 4 798 1344 1363 2839 4 798 1344 1363 2839 4 798 1344 1363 2839 4 798 1344 1363 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 11 798 800 1344 1345 1363 1630 1632 2092 2094 2837 2839 4 798 800 1630 1632 4 798 800 1630 1632 4 798 800 1630 1632 4 798 800 1630 1632 4 798 800 1630 1632 4 798 800 1630 1632 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 12 798 799 800 801 1129 1130 1172 1173 1630 1631 1632 1633 4 798 799 1129 1172 4 798 799 1129 1172 4 798 799 1129 1172 4 798 799 1129 1172 4 798 799 1129 1172 4 798 799 1129 1172 4 799 801 1631 1633 4 799 801 1631 1633 4 799 801 1631 1633 4 799 801 1631 1633 4 799 801 1631 1633 4 799 801 1631 1633 8 799 801 913 914 956 957 1631 1633 8 799 801 913 914 956 957 1631 1633 8 799 801 913 914 956 957 1631 1633 8 799 801 913 914 956 957 1631 1633 8 799 801 913 914 956 957 1631 1633 8 799 801 913 914 956 957 1631 1633 3 799 913 956 3 799 913 956 3 799 913 956 3 799 913 956 3 799 913 956 3 799 913 956 3 800 1345 2837 3 800 1345 2837 3 800 1345 2837 3 800 1345 2837 3 800 1345 2837 3 800 1345 2837 8 800 802 1345 1346 1638 2086 2835 2837 8 800 802 1345 1346 1638 2086 2835 2837 8 800 802 1345 1346 1638 2086 2835 2837 8 800 802 1345 1346 1638 2086 2835 2837 8 800 802 1345 1346 1638 2086 2835 2837 8 800 802 1345 1346 1638 2086 2835 2837 3 800 802 1638 3 800 802 1638 3 800 802 1638 3 800 802 1638 3 800 802 1638 3 800 802 1638 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 11 800 801 802 803 1130 1131 1173 1174 1638 1639 1640 4 800 801 1130 1173 4 800 801 1130 1173 4 800 801 1130 1173 4 800 801 1130 1173 4 800 801 1130 1173 4 800 801 1130 1173 4 801 803 1639 1640 4 801 803 1639 1640 4 801 803 1639 1640 4 801 803 1639 1640 4 801 803 1639 1640 4 801 803 1639 1640 8 801 803 914 915 957 958 1639 1640 8 801 803 914 915 957 958 1639 1640 8 801 803 914 915 957 958 1639 1640 8 801 803 914 915 957 958 1639 1640 8 801 803 914 915 957 958 1639 1640 8 801 803 914 915 957 958 1639 1640 3 801 914 957 3 801 914 957 3 801 914 957 3 801 914 957 3 801 914 957 3 801 914 957 3 802 1346 2835 3 802 1346 2835 3 802 1346 2835 3 802 1346 2835 3 802 1346 2835 3 802 1346 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 11 802 804 1346 1347 1364 1644 1646 2078 2080 2833 2835 4 802 804 1644 1646 4 802 804 1644 1646 4 802 804 1644 1646 4 802 804 1644 1646 4 802 804 1644 1646 4 802 804 1644 1646 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 12 802 803 804 805 1131 1132 1174 1175 1644 1645 1646 1647 4 802 803 1131 1174 4 802 803 1131 1174 4 802 803 1131 1174 4 802 803 1131 1174 4 802 803 1131 1174 4 802 803 1131 1174 4 803 805 1645 1647 4 803 805 1645 1647 4 803 805 1645 1647 4 803 805 1645 1647 4 803 805 1645 1647 4 803 805 1645 1647 8 803 805 915 916 958 959 1645 1647 8 803 805 915 916 958 959 1645 1647 8 803 805 915 916 958 959 1645 1647 8 803 805 915 916 958 959 1645 1647 8 803 805 915 916 958 959 1645 1647 8 803 805 915 916 958 959 1645 1647 3 803 915 958 3 803 915 958 3 803 915 958 3 803 915 958 3 803 915 958 3 803 915 958 4 804 1347 1364 2833 4 804 1347 1364 2833 4 804 1347 1364 2833 4 804 1347 1364 2833 4 804 1347 1364 2833 4 804 1347 1364 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 11 804 806 1347 1348 1364 1652 1654 2070 2072 2831 2833 4 804 806 1652 1654 4 804 806 1652 1654 4 804 806 1652 1654 4 804 806 1652 1654 4 804 806 1652 1654 4 804 806 1652 1654 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 12 804 805 806 807 1132 1133 1175 1176 1652 1653 1654 1655 4 804 805 1132 1175 4 804 805 1132 1175 4 804 805 1132 1175 4 804 805 1132 1175 4 804 805 1132 1175 4 804 805 1132 1175 4 805 807 1653 1655 4 805 807 1653 1655 4 805 807 1653 1655 4 805 807 1653 1655 4 805 807 1653 1655 4 805 807 1653 1655 8 805 807 916 917 959 960 1653 1655 8 805 807 916 917 959 960 1653 1655 8 805 807 916 917 959 960 1653 1655 8 805 807 916 917 959 960 1653 1655 8 805 807 916 917 959 960 1653 1655 8 805 807 916 917 959 960 1653 1655 3 805 916 959 3 805 916 959 3 805 916 959 3 805 916 959 3 805 916 959 3 805 916 959 3 806 1348 2831 3 806 1348 2831 3 806 1348 2831 3 806 1348 2831 3 806 1348 2831 3 806 1348 2831 8 806 808 1348 1349 1660 2064 2829 2831 8 806 808 1348 1349 1660 2064 2829 2831 8 806 808 1348 1349 1660 2064 2829 2831 8 806 808 1348 1349 1660 2064 2829 2831 8 806 808 1348 1349 1660 2064 2829 2831 8 806 808 1348 1349 1660 2064 2829 2831 3 806 808 1660 3 806 808 1660 3 806 808 1660 3 806 808 1660 3 806 808 1660 3 806 808 1660 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 11 806 807 808 809 1133 1134 1176 1177 1660 1661 1662 4 806 807 1133 1176 4 806 807 1133 1176 4 806 807 1133 1176 4 806 807 1133 1176 4 806 807 1133 1176 4 806 807 1133 1176 4 807 809 1661 1662 4 807 809 1661 1662 4 807 809 1661 1662 4 807 809 1661 1662 4 807 809 1661 1662 4 807 809 1661 1662 8 807 809 917 918 960 961 1661 1662 8 807 809 917 918 960 961 1661 1662 8 807 809 917 918 960 961 1661 1662 8 807 809 917 918 960 961 1661 1662 8 807 809 917 918 960 961 1661 1662 8 807 809 917 918 960 961 1661 1662 3 807 917 960 3 807 917 960 3 807 917 960 3 807 917 960 3 807 917 960 3 807 917 960 3 808 1349 2829 3 808 1349 2829 3 808 1349 2829 3 808 1349 2829 3 808 1349 2829 3 808 1349 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 11 808 810 1349 1350 1365 1666 1668 2056 2058 2827 2829 4 808 810 1666 1668 4 808 810 1666 1668 4 808 810 1666 1668 4 808 810 1666 1668 4 808 810 1666 1668 4 808 810 1666 1668 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 12 808 809 810 811 1134 1135 1177 1178 1666 1667 1668 1669 4 808 809 1134 1177 4 808 809 1134 1177 4 808 809 1134 1177 4 808 809 1134 1177 4 808 809 1134 1177 4 808 809 1134 1177 4 809 811 1667 1669 4 809 811 1667 1669 4 809 811 1667 1669 4 809 811 1667 1669 4 809 811 1667 1669 4 809 811 1667 1669 8 809 811 918 919 961 962 1667 1669 8 809 811 918 919 961 962 1667 1669 8 809 811 918 919 961 962 1667 1669 8 809 811 918 919 961 962 1667 1669 8 809 811 918 919 961 962 1667 1669 8 809 811 918 919 961 962 1667 1669 3 809 918 961 3 809 918 961 3 809 918 961 3 809 918 961 3 809 918 961 3 809 918 961 4 810 1350 1365 2827 4 810 1350 1365 2827 4 810 1350 1365 2827 4 810 1350 1365 2827 4 810 1350 1365 2827 4 810 1350 1365 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 11 810 812 1350 1351 1365 1676 1678 2046 2048 2825 2827 4 810 812 1676 1678 4 810 812 1676 1678 4 810 812 1676 1678 4 810 812 1676 1678 4 810 812 1676 1678 4 810 812 1676 1678 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 12 810 811 812 813 1135 1136 1178 1179 1676 1677 1678 1679 4 810 811 1135 1178 4 810 811 1135 1178 4 810 811 1135 1178 4 810 811 1135 1178 4 810 811 1135 1178 4 810 811 1135 1178 4 811 813 1677 1679 4 811 813 1677 1679 4 811 813 1677 1679 4 811 813 1677 1679 4 811 813 1677 1679 4 811 813 1677 1679 8 811 813 919 920 962 963 1677 1679 8 811 813 919 920 962 963 1677 1679 8 811 813 919 920 962 963 1677 1679 8 811 813 919 920 962 963 1677 1679 8 811 813 919 920 962 963 1677 1679 8 811 813 919 920 962 963 1677 1679 3 811 919 962 3 811 919 962 3 811 919 962 3 811 919 962 3 811 919 962 3 811 919 962 3 812 1351 2825 3 812 1351 2825 3 812 1351 2825 3 812 1351 2825 3 812 1351 2825 3 812 1351 2825 8 812 814 1351 1352 1684 2040 2823 2825 8 812 814 1351 1352 1684 2040 2823 2825 8 812 814 1351 1352 1684 2040 2823 2825 8 812 814 1351 1352 1684 2040 2823 2825 8 812 814 1351 1352 1684 2040 2823 2825 8 812 814 1351 1352 1684 2040 2823 2825 3 812 814 1684 3 812 814 1684 3 812 814 1684 3 812 814 1684 3 812 814 1684 3 812 814 1684 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 11 812 813 814 815 1136 1137 1179 1180 1684 1685 1686 4 812 813 1136 1179 4 812 813 1136 1179 4 812 813 1136 1179 4 812 813 1136 1179 4 812 813 1136 1179 4 812 813 1136 1179 4 813 815 1685 1686 4 813 815 1685 1686 4 813 815 1685 1686 4 813 815 1685 1686 4 813 815 1685 1686 4 813 815 1685 1686 8 813 815 920 921 963 964 1685 1686 8 813 815 920 921 963 964 1685 1686 8 813 815 920 921 963 964 1685 1686 8 813 815 920 921 963 964 1685 1686 8 813 815 920 921 963 964 1685 1686 8 813 815 920 921 963 964 1685 1686 3 813 920 963 3 813 920 963 3 813 920 963 3 813 920 963 3 813 920 963 3 813 920 963 3 814 1352 2823 3 814 1352 2823 3 814 1352 2823 3 814 1352 2823 3 814 1352 2823 3 814 1352 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 11 814 816 1352 1353 1366 1690 1692 2032 2034 2821 2823 4 814 816 1690 1692 4 814 816 1690 1692 4 814 816 1690 1692 4 814 816 1690 1692 4 814 816 1690 1692 4 814 816 1690 1692 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 12 814 815 816 817 1137 1138 1180 1181 1690 1691 1692 1693 4 814 815 1137 1180 4 814 815 1137 1180 4 814 815 1137 1180 4 814 815 1137 1180 4 814 815 1137 1180 4 814 815 1137 1180 4 815 817 1691 1693 4 815 817 1691 1693 4 815 817 1691 1693 4 815 817 1691 1693 4 815 817 1691 1693 4 815 817 1691 1693 8 815 817 921 922 964 965 1691 1693 8 815 817 921 922 964 965 1691 1693 8 815 817 921 922 964 965 1691 1693 8 815 817 921 922 964 965 1691 1693 8 815 817 921 922 964 965 1691 1693 8 815 817 921 922 964 965 1691 1693 3 815 921 964 3 815 921 964 3 815 921 964 3 815 921 964 3 815 921 964 3 815 921 964 4 816 1353 1366 2821 4 816 1353 1366 2821 4 816 1353 1366 2821 4 816 1353 1366 2821 4 816 1353 1366 2821 4 816 1353 1366 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 11 816 818 1353 1354 1366 1700 1702 2022 2024 2819 2821 4 816 818 1700 1702 4 816 818 1700 1702 4 816 818 1700 1702 4 816 818 1700 1702 4 816 818 1700 1702 4 816 818 1700 1702 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 12 816 817 818 819 1138 1139 1181 1182 1700 1701 1702 1703 4 816 817 1138 1181 4 816 817 1138 1181 4 816 817 1138 1181 4 816 817 1138 1181 4 816 817 1138 1181 4 816 817 1138 1181 4 817 819 1701 1703 4 817 819 1701 1703 4 817 819 1701 1703 4 817 819 1701 1703 4 817 819 1701 1703 4 817 819 1701 1703 8 817 819 922 923 965 966 1701 1703 8 817 819 922 923 965 966 1701 1703 8 817 819 922 923 965 966 1701 1703 8 817 819 922 923 965 966 1701 1703 8 817 819 922 923 965 966 1701 1703 8 817 819 922 923 965 966 1701 1703 3 817 922 965 3 817 922 965 3 817 922 965 3 817 922 965 3 817 922 965 3 817 922 965 3 818 1354 2819 3 818 1354 2819 3 818 1354 2819 3 818 1354 2819 3 818 1354 2819 3 818 1354 2819 8 818 879 1354 1355 1710 2014 2758 2819 8 818 879 1354 1355 1710 2014 2758 2819 8 818 879 1354 1355 1710 2014 2758 2819 8 818 879 1354 1355 1710 2014 2758 2819 8 818 879 1354 1355 1710 2014 2758 2819 8 818 879 1354 1355 1710 2014 2758 2819 3 818 879 1710 3 818 879 1710 3 818 879 1710 3 818 879 1710 3 818 879 1710 3 818 879 1710 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 11 818 819 879 880 1139 1140 1182 1183 1710 1711 1712 4 818 819 1139 1182 4 818 819 1139 1182 4 818 819 1139 1182 4 818 819 1139 1182 4 818 819 1139 1182 4 818 819 1139 1182 4 819 880 1711 1712 4 819 880 1711 1712 4 819 880 1711 1712 4 819 880 1711 1712 4 819 880 1711 1712 4 819 880 1711 1712 8 819 880 923 924 966 967 1711 1712 8 819 880 923 924 966 967 1711 1712 8 819 880 923 924 966 967 1711 1712 8 819 880 923 924 966 967 1711 1712 8 819 880 923 924 966 967 1711 1712 8 819 880 923 924 966 967 1711 1712 3 819 923 966 3 819 923 966 3 819 923 966 3 819 923 966 3 819 923 966 3 819 923 966 3 820 1313 2817 3 820 1313 2817 3 820 1313 2817 3 820 1313 2817 3 820 1313 2817 3 820 1313 2817 8 820 821 1313 1314 1400 2324 2816 2817 8 820 821 1313 1314 1400 2324 2816 2817 8 820 821 1313 1314 1400 2324 2816 2817 8 820 821 1313 1314 1400 2324 2816 2817 8 820 821 1313 1314 1400 2324 2816 2817 8 820 821 1313 1314 1400 2324 2816 2817 3 820 821 1400 3 820 821 1400 3 820 821 1400 3 820 821 1400 3 820 821 1400 3 820 821 1400 8 820 821 882 883 1098 1099 1400 1401 8 820 821 882 883 1098 1099 1400 1401 8 820 821 882 883 1098 1099 1400 1401 8 820 821 882 883 1098 1099 1400 1401 8 820 821 882 883 1098 1099 1400 1401 8 820 821 882 883 1098 1099 1400 1401 3 820 882 1098 3 820 882 1098 3 820 882 1098 3 820 882 1098 3 820 882 1098 3 820 882 1098 3 821 1314 2816 3 821 1314 2816 3 821 1314 2816 3 821 1314 2816 3 821 1314 2816 3 821 1314 2816 8 821 822 1314 1315 1408 2316 2815 2816 8 821 822 1314 1315 1408 2316 2815 2816 8 821 822 1314 1315 1408 2316 2815 2816 8 821 822 1314 1315 1408 2316 2815 2816 8 821 822 1314 1315 1408 2316 2815 2816 8 821 822 1314 1315 1408 2316 2815 2816 3 821 822 1408 3 821 822 1408 3 821 822 1408 3 821 822 1408 3 821 822 1408 3 821 822 1408 8 821 822 883 884 1099 1100 1408 1409 8 821 822 883 884 1099 1100 1408 1409 8 821 822 883 884 1099 1100 1408 1409 8 821 822 883 884 1099 1100 1408 1409 8 821 822 883 884 1099 1100 1408 1409 8 821 822 883 884 1099 1100 1408 1409 3 821 883 1099 3 821 883 1099 3 821 883 1099 3 821 883 1099 3 821 883 1099 3 821 883 1099 3 822 1315 2815 3 822 1315 2815 3 822 1315 2815 3 822 1315 2815 3 822 1315 2815 3 822 1315 2815 8 822 823 1315 1316 1414 2310 2814 2815 8 822 823 1315 1316 1414 2310 2814 2815 8 822 823 1315 1316 1414 2310 2814 2815 8 822 823 1315 1316 1414 2310 2814 2815 8 822 823 1315 1316 1414 2310 2814 2815 8 822 823 1315 1316 1414 2310 2814 2815 3 822 823 1414 3 822 823 1414 3 822 823 1414 3 822 823 1414 3 822 823 1414 3 822 823 1414 8 822 823 884 885 1100 1101 1414 1415 8 822 823 884 885 1100 1101 1414 1415 8 822 823 884 885 1100 1101 1414 1415 8 822 823 884 885 1100 1101 1414 1415 8 822 823 884 885 1100 1101 1414 1415 8 822 823 884 885 1100 1101 1414 1415 3 822 884 1100 3 822 884 1100 3 822 884 1100 3 822 884 1100 3 822 884 1100 3 822 884 1100 3 823 1316 2814 3 823 1316 2814 3 823 1316 2814 3 823 1316 2814 3 823 1316 2814 3 823 1316 2814 8 823 824 1316 1317 1420 2304 2813 2814 8 823 824 1316 1317 1420 2304 2813 2814 8 823 824 1316 1317 1420 2304 2813 2814 8 823 824 1316 1317 1420 2304 2813 2814 8 823 824 1316 1317 1420 2304 2813 2814 8 823 824 1316 1317 1420 2304 2813 2814 3 823 824 1420 3 823 824 1420 3 823 824 1420 3 823 824 1420 3 823 824 1420 3 823 824 1420 8 823 824 885 886 1101 1102 1420 1421 8 823 824 885 886 1101 1102 1420 1421 8 823 824 885 886 1101 1102 1420 1421 8 823 824 885 886 1101 1102 1420 1421 8 823 824 885 886 1101 1102 1420 1421 8 823 824 885 886 1101 1102 1420 1421 3 823 885 1101 3 823 885 1101 3 823 885 1101 3 823 885 1101 3 823 885 1101 3 823 885 1101 3 824 1317 2813 3 824 1317 2813 3 824 1317 2813 3 824 1317 2813 3 824 1317 2813 3 824 1317 2813 8 824 825 1317 1318 1426 2298 2812 2813 8 824 825 1317 1318 1426 2298 2812 2813 8 824 825 1317 1318 1426 2298 2812 2813 8 824 825 1317 1318 1426 2298 2812 2813 8 824 825 1317 1318 1426 2298 2812 2813 8 824 825 1317 1318 1426 2298 2812 2813 3 824 825 1426 3 824 825 1426 3 824 825 1426 3 824 825 1426 3 824 825 1426 3 824 825 1426 8 824 825 886 887 1102 1103 1426 1427 8 824 825 886 887 1102 1103 1426 1427 8 824 825 886 887 1102 1103 1426 1427 8 824 825 886 887 1102 1103 1426 1427 8 824 825 886 887 1102 1103 1426 1427 8 824 825 886 887 1102 1103 1426 1427 3 824 886 1102 3 824 886 1102 3 824 886 1102 3 824 886 1102 3 824 886 1102 3 824 886 1102 3 825 1318 2812 3 825 1318 2812 3 825 1318 2812 3 825 1318 2812 3 825 1318 2812 3 825 1318 2812 8 825 826 1318 1319 1432 2292 2811 2812 8 825 826 1318 1319 1432 2292 2811 2812 8 825 826 1318 1319 1432 2292 2811 2812 8 825 826 1318 1319 1432 2292 2811 2812 8 825 826 1318 1319 1432 2292 2811 2812 8 825 826 1318 1319 1432 2292 2811 2812 3 825 826 1432 3 825 826 1432 3 825 826 1432 3 825 826 1432 3 825 826 1432 3 825 826 1432 8 825 826 887 888 1103 1104 1432 1433 8 825 826 887 888 1103 1104 1432 1433 8 825 826 887 888 1103 1104 1432 1433 8 825 826 887 888 1103 1104 1432 1433 8 825 826 887 888 1103 1104 1432 1433 8 825 826 887 888 1103 1104 1432 1433 3 825 887 1103 3 825 887 1103 3 825 887 1103 3 825 887 1103 3 825 887 1103 3 825 887 1103 3 826 1319 2811 3 826 1319 2811 3 826 1319 2811 3 826 1319 2811 3 826 1319 2811 3 826 1319 2811 8 826 827 1319 1320 1438 2286 2810 2811 8 826 827 1319 1320 1438 2286 2810 2811 8 826 827 1319 1320 1438 2286 2810 2811 8 826 827 1319 1320 1438 2286 2810 2811 8 826 827 1319 1320 1438 2286 2810 2811 8 826 827 1319 1320 1438 2286 2810 2811 3 826 827 1438 3 826 827 1438 3 826 827 1438 3 826 827 1438 3 826 827 1438 3 826 827 1438 8 826 827 888 889 1104 1105 1438 1439 8 826 827 888 889 1104 1105 1438 1439 8 826 827 888 889 1104 1105 1438 1439 8 826 827 888 889 1104 1105 1438 1439 8 826 827 888 889 1104 1105 1438 1439 8 826 827 888 889 1104 1105 1438 1439 3 826 888 1104 3 826 888 1104 3 826 888 1104 3 826 888 1104 3 826 888 1104 3 826 888 1104 3 827 1320 2810 3 827 1320 2810 3 827 1320 2810 3 827 1320 2810 3 827 1320 2810 3 827 1320 2810 8 827 828 1320 1321 1444 2280 2809 2810 8 827 828 1320 1321 1444 2280 2809 2810 8 827 828 1320 1321 1444 2280 2809 2810 8 827 828 1320 1321 1444 2280 2809 2810 8 827 828 1320 1321 1444 2280 2809 2810 8 827 828 1320 1321 1444 2280 2809 2810 3 827 828 1444 3 827 828 1444 3 827 828 1444 3 827 828 1444 3 827 828 1444 3 827 828 1444 8 827 828 889 890 1105 1106 1444 1445 8 827 828 889 890 1105 1106 1444 1445 8 827 828 889 890 1105 1106 1444 1445 8 827 828 889 890 1105 1106 1444 1445 8 827 828 889 890 1105 1106 1444 1445 8 827 828 889 890 1105 1106 1444 1445 3 827 889 1105 3 827 889 1105 3 827 889 1105 3 827 889 1105 3 827 889 1105 3 827 889 1105 3 828 1321 2809 3 828 1321 2809 3 828 1321 2809 3 828 1321 2809 3 828 1321 2809 3 828 1321 2809 8 828 829 1321 1322 1452 2272 2808 2809 8 828 829 1321 1322 1452 2272 2808 2809 8 828 829 1321 1322 1452 2272 2808 2809 8 828 829 1321 1322 1452 2272 2808 2809 8 828 829 1321 1322 1452 2272 2808 2809 8 828 829 1321 1322 1452 2272 2808 2809 3 828 829 1452 3 828 829 1452 3 828 829 1452 3 828 829 1452 3 828 829 1452 3 828 829 1452 8 828 829 890 891 1106 1107 1452 1453 8 828 829 890 891 1106 1107 1452 1453 8 828 829 890 891 1106 1107 1452 1453 8 828 829 890 891 1106 1107 1452 1453 8 828 829 890 891 1106 1107 1452 1453 8 828 829 890 891 1106 1107 1452 1453 3 828 890 1106 3 828 890 1106 3 828 890 1106 3 828 890 1106 3 828 890 1106 3 828 890 1106 3 829 1322 2808 3 829 1322 2808 3 829 1322 2808 3 829 1322 2808 3 829 1322 2808 3 829 1322 2808 8 829 830 1322 1323 1458 2266 2807 2808 8 829 830 1322 1323 1458 2266 2807 2808 8 829 830 1322 1323 1458 2266 2807 2808 8 829 830 1322 1323 1458 2266 2807 2808 8 829 830 1322 1323 1458 2266 2807 2808 8 829 830 1322 1323 1458 2266 2807 2808 3 829 830 1458 3 829 830 1458 3 829 830 1458 3 829 830 1458 3 829 830 1458 3 829 830 1458 8 829 830 891 892 1107 1108 1458 1459 8 829 830 891 892 1107 1108 1458 1459 8 829 830 891 892 1107 1108 1458 1459 8 829 830 891 892 1107 1108 1458 1459 8 829 830 891 892 1107 1108 1458 1459 8 829 830 891 892 1107 1108 1458 1459 3 829 891 1107 3 829 891 1107 3 829 891 1107 3 829 891 1107 3 829 891 1107 3 829 891 1107 3 830 1323 2807 3 830 1323 2807 3 830 1323 2807 3 830 1323 2807 3 830 1323 2807 3 830 1323 2807 8 830 831 1323 1324 1466 2258 2806 2807 8 830 831 1323 1324 1466 2258 2806 2807 8 830 831 1323 1324 1466 2258 2806 2807 8 830 831 1323 1324 1466 2258 2806 2807 8 830 831 1323 1324 1466 2258 2806 2807 8 830 831 1323 1324 1466 2258 2806 2807 3 830 831 1466 3 830 831 1466 3 830 831 1466 3 830 831 1466 3 830 831 1466 3 830 831 1466 8 830 831 892 893 1108 1109 1466 1467 8 830 831 892 893 1108 1109 1466 1467 8 830 831 892 893 1108 1109 1466 1467 8 830 831 892 893 1108 1109 1466 1467 8 830 831 892 893 1108 1109 1466 1467 8 830 831 892 893 1108 1109 1466 1467 3 830 892 1108 3 830 892 1108 3 830 892 1108 3 830 892 1108 3 830 892 1108 3 830 892 1108 3 831 1324 2806 3 831 1324 2806 3 831 1324 2806 3 831 1324 2806 3 831 1324 2806 3 831 1324 2806 8 831 832 1324 1325 1474 2250 2805 2806 8 831 832 1324 1325 1474 2250 2805 2806 8 831 832 1324 1325 1474 2250 2805 2806 8 831 832 1324 1325 1474 2250 2805 2806 8 831 832 1324 1325 1474 2250 2805 2806 8 831 832 1324 1325 1474 2250 2805 2806 3 831 832 1474 3 831 832 1474 3 831 832 1474 3 831 832 1474 3 831 832 1474 3 831 832 1474 8 831 832 893 894 1109 1110 1474 1475 8 831 832 893 894 1109 1110 1474 1475 8 831 832 893 894 1109 1110 1474 1475 8 831 832 893 894 1109 1110 1474 1475 8 831 832 893 894 1109 1110 1474 1475 8 831 832 893 894 1109 1110 1474 1475 3 831 893 1109 3 831 893 1109 3 831 893 1109 3 831 893 1109 3 831 893 1109 3 831 893 1109 3 832 1325 2805 3 832 1325 2805 3 832 1325 2805 3 832 1325 2805 3 832 1325 2805 3 832 1325 2805 8 832 833 1325 1326 1480 2244 2804 2805 8 832 833 1325 1326 1480 2244 2804 2805 8 832 833 1325 1326 1480 2244 2804 2805 8 832 833 1325 1326 1480 2244 2804 2805 8 832 833 1325 1326 1480 2244 2804 2805 8 832 833 1325 1326 1480 2244 2804 2805 3 832 833 1480 3 832 833 1480 3 832 833 1480 3 832 833 1480 3 832 833 1480 3 832 833 1480 8 832 833 894 895 1110 1111 1480 1481 8 832 833 894 895 1110 1111 1480 1481 8 832 833 894 895 1110 1111 1480 1481 8 832 833 894 895 1110 1111 1480 1481 8 832 833 894 895 1110 1111 1480 1481 8 832 833 894 895 1110 1111 1480 1481 3 832 894 1110 3 832 894 1110 3 832 894 1110 3 832 894 1110 3 832 894 1110 3 832 894 1110 3 833 1326 2804 3 833 1326 2804 3 833 1326 2804 3 833 1326 2804 3 833 1326 2804 3 833 1326 2804 8 833 834 1326 1327 1490 2234 2803 2804 8 833 834 1326 1327 1490 2234 2803 2804 8 833 834 1326 1327 1490 2234 2803 2804 8 833 834 1326 1327 1490 2234 2803 2804 8 833 834 1326 1327 1490 2234 2803 2804 8 833 834 1326 1327 1490 2234 2803 2804 3 833 834 1490 3 833 834 1490 3 833 834 1490 3 833 834 1490 3 833 834 1490 3 833 834 1490 8 833 834 895 896 1111 1112 1490 1491 8 833 834 895 896 1111 1112 1490 1491 8 833 834 895 896 1111 1112 1490 1491 8 833 834 895 896 1111 1112 1490 1491 8 833 834 895 896 1111 1112 1490 1491 8 833 834 895 896 1111 1112 1490 1491 3 833 895 1111 3 833 895 1111 3 833 895 1111 3 833 895 1111 3 833 895 1111 3 833 895 1111 3 834 1327 2803 3 834 1327 2803 3 834 1327 2803 3 834 1327 2803 3 834 1327 2803 3 834 1327 2803 8 834 835 1327 1328 1500 2224 2802 2803 8 834 835 1327 1328 1500 2224 2802 2803 8 834 835 1327 1328 1500 2224 2802 2803 8 834 835 1327 1328 1500 2224 2802 2803 8 834 835 1327 1328 1500 2224 2802 2803 8 834 835 1327 1328 1500 2224 2802 2803 3 834 835 1500 3 834 835 1500 3 834 835 1500 3 834 835 1500 3 834 835 1500 3 834 835 1500 8 834 835 896 897 1112 1113 1500 1501 8 834 835 896 897 1112 1113 1500 1501 8 834 835 896 897 1112 1113 1500 1501 8 834 835 896 897 1112 1113 1500 1501 8 834 835 896 897 1112 1113 1500 1501 8 834 835 896 897 1112 1113 1500 1501 3 834 896 1112 3 834 896 1112 3 834 896 1112 3 834 896 1112 3 834 896 1112 3 834 896 1112 3 835 1328 2802 3 835 1328 2802 3 835 1328 2802 3 835 1328 2802 3 835 1328 2802 3 835 1328 2802 8 835 836 1328 1329 1506 2218 2801 2802 8 835 836 1328 1329 1506 2218 2801 2802 8 835 836 1328 1329 1506 2218 2801 2802 8 835 836 1328 1329 1506 2218 2801 2802 8 835 836 1328 1329 1506 2218 2801 2802 8 835 836 1328 1329 1506 2218 2801 2802 3 835 836 1506 3 835 836 1506 3 835 836 1506 3 835 836 1506 3 835 836 1506 3 835 836 1506 8 835 836 897 898 1113 1114 1506 1507 8 835 836 897 898 1113 1114 1506 1507 8 835 836 897 898 1113 1114 1506 1507 8 835 836 897 898 1113 1114 1506 1507 8 835 836 897 898 1113 1114 1506 1507 8 835 836 897 898 1113 1114 1506 1507 3 835 897 1113 3 835 897 1113 3 835 897 1113 3 835 897 1113 3 835 897 1113 3 835 897 1113 3 836 1329 2801 3 836 1329 2801 3 836 1329 2801 3 836 1329 2801 3 836 1329 2801 3 836 1329 2801 8 836 837 1329 1330 1514 2210 2800 2801 8 836 837 1329 1330 1514 2210 2800 2801 8 836 837 1329 1330 1514 2210 2800 2801 8 836 837 1329 1330 1514 2210 2800 2801 8 836 837 1329 1330 1514 2210 2800 2801 8 836 837 1329 1330 1514 2210 2800 2801 3 836 837 1514 3 836 837 1514 3 836 837 1514 3 836 837 1514 3 836 837 1514 3 836 837 1514 8 836 837 898 899 1114 1115 1514 1515 8 836 837 898 899 1114 1115 1514 1515 8 836 837 898 899 1114 1115 1514 1515 8 836 837 898 899 1114 1115 1514 1515 8 836 837 898 899 1114 1115 1514 1515 8 836 837 898 899 1114 1115 1514 1515 3 836 898 1114 3 836 898 1114 3 836 898 1114 3 836 898 1114 3 836 898 1114 3 836 898 1114 3 837 1330 2800 3 837 1330 2800 3 837 1330 2800 3 837 1330 2800 3 837 1330 2800 3 837 1330 2800 8 837 838 1330 1331 1522 2202 2799 2800 8 837 838 1330 1331 1522 2202 2799 2800 8 837 838 1330 1331 1522 2202 2799 2800 8 837 838 1330 1331 1522 2202 2799 2800 8 837 838 1330 1331 1522 2202 2799 2800 8 837 838 1330 1331 1522 2202 2799 2800 3 837 838 1522 3 837 838 1522 3 837 838 1522 3 837 838 1522 3 837 838 1522 3 837 838 1522 8 837 838 899 900 1115 1116 1522 1523 8 837 838 899 900 1115 1116 1522 1523 8 837 838 899 900 1115 1116 1522 1523 8 837 838 899 900 1115 1116 1522 1523 8 837 838 899 900 1115 1116 1522 1523 8 837 838 899 900 1115 1116 1522 1523 3 837 899 1115 3 837 899 1115 3 837 899 1115 3 837 899 1115 3 837 899 1115 3 837 899 1115 3 838 1331 2799 3 838 1331 2799 3 838 1331 2799 3 838 1331 2799 3 838 1331 2799 3 838 1331 2799 8 838 839 1331 1332 1528 2196 2798 2799 8 838 839 1331 1332 1528 2196 2798 2799 8 838 839 1331 1332 1528 2196 2798 2799 8 838 839 1331 1332 1528 2196 2798 2799 8 838 839 1331 1332 1528 2196 2798 2799 8 838 839 1331 1332 1528 2196 2798 2799 3 838 839 1528 3 838 839 1528 3 838 839 1528 3 838 839 1528 3 838 839 1528 3 838 839 1528 8 838 839 900 901 1116 1117 1528 1529 8 838 839 900 901 1116 1117 1528 1529 8 838 839 900 901 1116 1117 1528 1529 8 838 839 900 901 1116 1117 1528 1529 8 838 839 900 901 1116 1117 1528 1529 8 838 839 900 901 1116 1117 1528 1529 3 838 900 1116 3 838 900 1116 3 838 900 1116 3 838 900 1116 3 838 900 1116 3 838 900 1116 3 839 1332 2798 3 839 1332 2798 3 839 1332 2798 3 839 1332 2798 3 839 1332 2798 3 839 1332 2798 8 839 840 1332 1333 1538 2186 2797 2798 8 839 840 1332 1333 1538 2186 2797 2798 8 839 840 1332 1333 1538 2186 2797 2798 8 839 840 1332 1333 1538 2186 2797 2798 8 839 840 1332 1333 1538 2186 2797 2798 8 839 840 1332 1333 1538 2186 2797 2798 3 839 840 1538 3 839 840 1538 3 839 840 1538 3 839 840 1538 3 839 840 1538 3 839 840 1538 8 839 840 901 902 1117 1118 1538 1539 8 839 840 901 902 1117 1118 1538 1539 8 839 840 901 902 1117 1118 1538 1539 8 839 840 901 902 1117 1118 1538 1539 8 839 840 901 902 1117 1118 1538 1539 8 839 840 901 902 1117 1118 1538 1539 3 839 901 1117 3 839 901 1117 3 839 901 1117 3 839 901 1117 3 839 901 1117 3 839 901 1117 3 840 1333 2797 3 840 1333 2797 3 840 1333 2797 3 840 1333 2797 3 840 1333 2797 3 840 1333 2797 8 840 841 1333 1334 1546 2178 2796 2797 8 840 841 1333 1334 1546 2178 2796 2797 8 840 841 1333 1334 1546 2178 2796 2797 8 840 841 1333 1334 1546 2178 2796 2797 8 840 841 1333 1334 1546 2178 2796 2797 8 840 841 1333 1334 1546 2178 2796 2797 3 840 841 1546 3 840 841 1546 3 840 841 1546 3 840 841 1546 3 840 841 1546 3 840 841 1546 8 840 841 902 903 1118 1119 1546 1547 8 840 841 902 903 1118 1119 1546 1547 8 840 841 902 903 1118 1119 1546 1547 8 840 841 902 903 1118 1119 1546 1547 8 840 841 902 903 1118 1119 1546 1547 8 840 841 902 903 1118 1119 1546 1547 3 840 902 1118 3 840 902 1118 3 840 902 1118 3 840 902 1118 3 840 902 1118 3 840 902 1118 3 841 1334 2796 3 841 1334 2796 3 841 1334 2796 3 841 1334 2796 3 841 1334 2796 3 841 1334 2796 8 841 842 1334 1335 1552 2172 2795 2796 8 841 842 1334 1335 1552 2172 2795 2796 8 841 842 1334 1335 1552 2172 2795 2796 8 841 842 1334 1335 1552 2172 2795 2796 8 841 842 1334 1335 1552 2172 2795 2796 8 841 842 1334 1335 1552 2172 2795 2796 3 841 842 1552 3 841 842 1552 3 841 842 1552 3 841 842 1552 3 841 842 1552 3 841 842 1552 8 841 842 903 904 1119 1120 1552 1553 8 841 842 903 904 1119 1120 1552 1553 8 841 842 903 904 1119 1120 1552 1553 8 841 842 903 904 1119 1120 1552 1553 8 841 842 903 904 1119 1120 1552 1553 8 841 842 903 904 1119 1120 1552 1553 3 841 903 1119 3 841 903 1119 3 841 903 1119 3 841 903 1119 3 841 903 1119 3 841 903 1119 3 842 1335 2795 3 842 1335 2795 3 842 1335 2795 3 842 1335 2795 3 842 1335 2795 3 842 1335 2795 8 842 843 1335 1336 1560 2164 2794 2795 8 842 843 1335 1336 1560 2164 2794 2795 8 842 843 1335 1336 1560 2164 2794 2795 8 842 843 1335 1336 1560 2164 2794 2795 8 842 843 1335 1336 1560 2164 2794 2795 8 842 843 1335 1336 1560 2164 2794 2795 3 842 843 1560 3 842 843 1560 3 842 843 1560 3 842 843 1560 3 842 843 1560 3 842 843 1560 8 842 843 904 905 1120 1121 1560 1561 8 842 843 904 905 1120 1121 1560 1561 8 842 843 904 905 1120 1121 1560 1561 8 842 843 904 905 1120 1121 1560 1561 8 842 843 904 905 1120 1121 1560 1561 8 842 843 904 905 1120 1121 1560 1561 3 842 904 1120 3 842 904 1120 3 842 904 1120 3 842 904 1120 3 842 904 1120 3 842 904 1120 3 843 1336 2794 3 843 1336 2794 3 843 1336 2794 3 843 1336 2794 3 843 1336 2794 3 843 1336 2794 8 843 844 1336 1337 1568 2156 2793 2794 8 843 844 1336 1337 1568 2156 2793 2794 8 843 844 1336 1337 1568 2156 2793 2794 8 843 844 1336 1337 1568 2156 2793 2794 8 843 844 1336 1337 1568 2156 2793 2794 8 843 844 1336 1337 1568 2156 2793 2794 3 843 844 1568 3 843 844 1568 3 843 844 1568 3 843 844 1568 3 843 844 1568 3 843 844 1568 8 843 844 905 906 1121 1122 1568 1569 8 843 844 905 906 1121 1122 1568 1569 8 843 844 905 906 1121 1122 1568 1569 8 843 844 905 906 1121 1122 1568 1569 8 843 844 905 906 1121 1122 1568 1569 8 843 844 905 906 1121 1122 1568 1569 3 843 905 1121 3 843 905 1121 3 843 905 1121 3 843 905 1121 3 843 905 1121 3 843 905 1121 3 844 1337 2793 3 844 1337 2793 3 844 1337 2793 3 844 1337 2793 3 844 1337 2793 3 844 1337 2793 8 844 845 1337 1338 1574 2150 2792 2793 8 844 845 1337 1338 1574 2150 2792 2793 8 844 845 1337 1338 1574 2150 2792 2793 8 844 845 1337 1338 1574 2150 2792 2793 8 844 845 1337 1338 1574 2150 2792 2793 8 844 845 1337 1338 1574 2150 2792 2793 3 844 845 1574 3 844 845 1574 3 844 845 1574 3 844 845 1574 3 844 845 1574 3 844 845 1574 8 844 845 906 907 1122 1123 1574 1575 8 844 845 906 907 1122 1123 1574 1575 8 844 845 906 907 1122 1123 1574 1575 8 844 845 906 907 1122 1123 1574 1575 8 844 845 906 907 1122 1123 1574 1575 8 844 845 906 907 1122 1123 1574 1575 3 844 906 1122 3 844 906 1122 3 844 906 1122 3 844 906 1122 3 844 906 1122 3 844 906 1122 3 845 1338 2792 3 845 1338 2792 3 845 1338 2792 3 845 1338 2792 3 845 1338 2792 3 845 1338 2792 8 845 846 1338 1339 1584 2140 2791 2792 8 845 846 1338 1339 1584 2140 2791 2792 8 845 846 1338 1339 1584 2140 2791 2792 8 845 846 1338 1339 1584 2140 2791 2792 8 845 846 1338 1339 1584 2140 2791 2792 8 845 846 1338 1339 1584 2140 2791 2792 3 845 846 1584 3 845 846 1584 3 845 846 1584 3 845 846 1584 3 845 846 1584 3 845 846 1584 8 845 846 907 908 1123 1124 1584 1585 8 845 846 907 908 1123 1124 1584 1585 8 845 846 907 908 1123 1124 1584 1585 8 845 846 907 908 1123 1124 1584 1585 8 845 846 907 908 1123 1124 1584 1585 8 845 846 907 908 1123 1124 1584 1585 3 845 907 1123 3 845 907 1123 3 845 907 1123 3 845 907 1123 3 845 907 1123 3 845 907 1123 3 846 1339 2791 3 846 1339 2791 3 846 1339 2791 3 846 1339 2791 3 846 1339 2791 3 846 1339 2791 8 846 847 1339 1340 1592 2132 2790 2791 8 846 847 1339 1340 1592 2132 2790 2791 8 846 847 1339 1340 1592 2132 2790 2791 8 846 847 1339 1340 1592 2132 2790 2791 8 846 847 1339 1340 1592 2132 2790 2791 8 846 847 1339 1340 1592 2132 2790 2791 3 846 847 1592 3 846 847 1592 3 846 847 1592 3 846 847 1592 3 846 847 1592 3 846 847 1592 8 846 847 908 909 1124 1125 1592 1593 8 846 847 908 909 1124 1125 1592 1593 8 846 847 908 909 1124 1125 1592 1593 8 846 847 908 909 1124 1125 1592 1593 8 846 847 908 909 1124 1125 1592 1593 8 846 847 908 909 1124 1125 1592 1593 3 846 908 1124 3 846 908 1124 3 846 908 1124 3 846 908 1124 3 846 908 1124 3 846 908 1124 3 847 1340 2790 3 847 1340 2790 3 847 1340 2790 3 847 1340 2790 3 847 1340 2790 3 847 1340 2790 8 847 848 1340 1341 1598 2126 2789 2790 8 847 848 1340 1341 1598 2126 2789 2790 8 847 848 1340 1341 1598 2126 2789 2790 8 847 848 1340 1341 1598 2126 2789 2790 8 847 848 1340 1341 1598 2126 2789 2790 8 847 848 1340 1341 1598 2126 2789 2790 3 847 848 1598 3 847 848 1598 3 847 848 1598 3 847 848 1598 3 847 848 1598 3 847 848 1598 8 847 848 909 910 1125 1126 1598 1599 8 847 848 909 910 1125 1126 1598 1599 8 847 848 909 910 1125 1126 1598 1599 8 847 848 909 910 1125 1126 1598 1599 8 847 848 909 910 1125 1126 1598 1599 8 847 848 909 910 1125 1126 1598 1599 3 847 909 1125 3 847 909 1125 3 847 909 1125 3 847 909 1125 3 847 909 1125 3 847 909 1125 3 848 1341 2789 3 848 1341 2789 3 848 1341 2789 3 848 1341 2789 3 848 1341 2789 3 848 1341 2789 8 848 849 1341 1342 1606 2118 2788 2789 8 848 849 1341 1342 1606 2118 2788 2789 8 848 849 1341 1342 1606 2118 2788 2789 8 848 849 1341 1342 1606 2118 2788 2789 8 848 849 1341 1342 1606 2118 2788 2789 8 848 849 1341 1342 1606 2118 2788 2789 3 848 849 1606 3 848 849 1606 3 848 849 1606 3 848 849 1606 3 848 849 1606 3 848 849 1606 8 848 849 910 911 1126 1127 1606 1607 8 848 849 910 911 1126 1127 1606 1607 8 848 849 910 911 1126 1127 1606 1607 8 848 849 910 911 1126 1127 1606 1607 8 848 849 910 911 1126 1127 1606 1607 8 848 849 910 911 1126 1127 1606 1607 3 848 910 1126 3 848 910 1126 3 848 910 1126 3 848 910 1126 3 848 910 1126 3 848 910 1126 3 849 1342 2788 3 849 1342 2788 3 849 1342 2788 3 849 1342 2788 3 849 1342 2788 3 849 1342 2788 8 849 850 1342 1343 1614 2110 2787 2788 8 849 850 1342 1343 1614 2110 2787 2788 8 849 850 1342 1343 1614 2110 2787 2788 8 849 850 1342 1343 1614 2110 2787 2788 8 849 850 1342 1343 1614 2110 2787 2788 8 849 850 1342 1343 1614 2110 2787 2788 3 849 850 1614 3 849 850 1614 3 849 850 1614 3 849 850 1614 3 849 850 1614 3 849 850 1614 8 849 850 911 912 1127 1128 1614 1615 8 849 850 911 912 1127 1128 1614 1615 8 849 850 911 912 1127 1128 1614 1615 8 849 850 911 912 1127 1128 1614 1615 8 849 850 911 912 1127 1128 1614 1615 8 849 850 911 912 1127 1128 1614 1615 3 849 911 1127 3 849 911 1127 3 849 911 1127 3 849 911 1127 3 849 911 1127 3 849 911 1127 3 850 1343 2787 3 850 1343 2787 3 850 1343 2787 3 850 1343 2787 3 850 1343 2787 3 850 1343 2787 8 850 851 1343 1344 1620 2104 2786 2787 8 850 851 1343 1344 1620 2104 2786 2787 8 850 851 1343 1344 1620 2104 2786 2787 8 850 851 1343 1344 1620 2104 2786 2787 8 850 851 1343 1344 1620 2104 2786 2787 8 850 851 1343 1344 1620 2104 2786 2787 3 850 851 1620 3 850 851 1620 3 850 851 1620 3 850 851 1620 3 850 851 1620 3 850 851 1620 8 850 851 912 913 1128 1129 1620 1621 8 850 851 912 913 1128 1129 1620 1621 8 850 851 912 913 1128 1129 1620 1621 8 850 851 912 913 1128 1129 1620 1621 8 850 851 912 913 1128 1129 1620 1621 8 850 851 912 913 1128 1129 1620 1621 3 850 912 1128 3 850 912 1128 3 850 912 1128 3 850 912 1128 3 850 912 1128 3 850 912 1128 3 851 1344 2786 3 851 1344 2786 3 851 1344 2786 3 851 1344 2786 3 851 1344 2786 3 851 1344 2786 8 851 852 1344 1345 1630 2094 2785 2786 8 851 852 1344 1345 1630 2094 2785 2786 8 851 852 1344 1345 1630 2094 2785 2786 8 851 852 1344 1345 1630 2094 2785 2786 8 851 852 1344 1345 1630 2094 2785 2786 8 851 852 1344 1345 1630 2094 2785 2786 3 851 852 1630 3 851 852 1630 3 851 852 1630 3 851 852 1630 3 851 852 1630 3 851 852 1630 8 851 852 913 914 1129 1130 1630 1631 8 851 852 913 914 1129 1130 1630 1631 8 851 852 913 914 1129 1130 1630 1631 8 851 852 913 914 1129 1130 1630 1631 8 851 852 913 914 1129 1130 1630 1631 8 851 852 913 914 1129 1130 1630 1631 3 851 913 1129 3 851 913 1129 3 851 913 1129 3 851 913 1129 3 851 913 1129 3 851 913 1129 3 852 1345 2785 3 852 1345 2785 3 852 1345 2785 3 852 1345 2785 3 852 1345 2785 3 852 1345 2785 8 852 853 1345 1346 1638 2086 2784 2785 8 852 853 1345 1346 1638 2086 2784 2785 8 852 853 1345 1346 1638 2086 2784 2785 8 852 853 1345 1346 1638 2086 2784 2785 8 852 853 1345 1346 1638 2086 2784 2785 8 852 853 1345 1346 1638 2086 2784 2785 3 852 853 1638 3 852 853 1638 3 852 853 1638 3 852 853 1638 3 852 853 1638 3 852 853 1638 8 852 853 914 915 1130 1131 1638 1639 8 852 853 914 915 1130 1131 1638 1639 8 852 853 914 915 1130 1131 1638 1639 8 852 853 914 915 1130 1131 1638 1639 8 852 853 914 915 1130 1131 1638 1639 8 852 853 914 915 1130 1131 1638 1639 3 852 914 1130 3 852 914 1130 3 852 914 1130 3 852 914 1130 3 852 914 1130 3 852 914 1130 3 853 1346 2784 3 853 1346 2784 3 853 1346 2784 3 853 1346 2784 3 853 1346 2784 3 853 1346 2784 8 853 854 1346 1347 1644 2080 2783 2784 8 853 854 1346 1347 1644 2080 2783 2784 8 853 854 1346 1347 1644 2080 2783 2784 8 853 854 1346 1347 1644 2080 2783 2784 8 853 854 1346 1347 1644 2080 2783 2784 8 853 854 1346 1347 1644 2080 2783 2784 3 853 854 1644 3 853 854 1644 3 853 854 1644 3 853 854 1644 3 853 854 1644 3 853 854 1644 8 853 854 915 916 1131 1132 1644 1645 8 853 854 915 916 1131 1132 1644 1645 8 853 854 915 916 1131 1132 1644 1645 8 853 854 915 916 1131 1132 1644 1645 8 853 854 915 916 1131 1132 1644 1645 8 853 854 915 916 1131 1132 1644 1645 3 853 915 1131 3 853 915 1131 3 853 915 1131 3 853 915 1131 3 853 915 1131 3 853 915 1131 3 854 1347 2783 3 854 1347 2783 3 854 1347 2783 3 854 1347 2783 3 854 1347 2783 3 854 1347 2783 8 854 855 1347 1348 1652 2072 2782 2783 8 854 855 1347 1348 1652 2072 2782 2783 8 854 855 1347 1348 1652 2072 2782 2783 8 854 855 1347 1348 1652 2072 2782 2783 8 854 855 1347 1348 1652 2072 2782 2783 8 854 855 1347 1348 1652 2072 2782 2783 3 854 855 1652 3 854 855 1652 3 854 855 1652 3 854 855 1652 3 854 855 1652 3 854 855 1652 8 854 855 916 917 1132 1133 1652 1653 8 854 855 916 917 1132 1133 1652 1653 8 854 855 916 917 1132 1133 1652 1653 8 854 855 916 917 1132 1133 1652 1653 8 854 855 916 917 1132 1133 1652 1653 8 854 855 916 917 1132 1133 1652 1653 3 854 916 1132 3 854 916 1132 3 854 916 1132 3 854 916 1132 3 854 916 1132 3 854 916 1132 3 855 1348 2782 3 855 1348 2782 3 855 1348 2782 3 855 1348 2782 3 855 1348 2782 3 855 1348 2782 8 855 856 1348 1349 1660 2064 2781 2782 8 855 856 1348 1349 1660 2064 2781 2782 8 855 856 1348 1349 1660 2064 2781 2782 8 855 856 1348 1349 1660 2064 2781 2782 8 855 856 1348 1349 1660 2064 2781 2782 8 855 856 1348 1349 1660 2064 2781 2782 3 855 856 1660 3 855 856 1660 3 855 856 1660 3 855 856 1660 3 855 856 1660 3 855 856 1660 8 855 856 917 918 1133 1134 1660 1661 8 855 856 917 918 1133 1134 1660 1661 8 855 856 917 918 1133 1134 1660 1661 8 855 856 917 918 1133 1134 1660 1661 8 855 856 917 918 1133 1134 1660 1661 8 855 856 917 918 1133 1134 1660 1661 3 855 917 1133 3 855 917 1133 3 855 917 1133 3 855 917 1133 3 855 917 1133 3 855 917 1133 3 856 1349 2781 3 856 1349 2781 3 856 1349 2781 3 856 1349 2781 3 856 1349 2781 3 856 1349 2781 8 856 857 1349 1350 1666 2058 2780 2781 8 856 857 1349 1350 1666 2058 2780 2781 8 856 857 1349 1350 1666 2058 2780 2781 8 856 857 1349 1350 1666 2058 2780 2781 8 856 857 1349 1350 1666 2058 2780 2781 8 856 857 1349 1350 1666 2058 2780 2781 3 856 857 1666 3 856 857 1666 3 856 857 1666 3 856 857 1666 3 856 857 1666 3 856 857 1666 8 856 857 918 919 1134 1135 1666 1667 8 856 857 918 919 1134 1135 1666 1667 8 856 857 918 919 1134 1135 1666 1667 8 856 857 918 919 1134 1135 1666 1667 8 856 857 918 919 1134 1135 1666 1667 8 856 857 918 919 1134 1135 1666 1667 3 856 918 1134 3 856 918 1134 3 856 918 1134 3 856 918 1134 3 856 918 1134 3 856 918 1134 3 857 1350 2780 3 857 1350 2780 3 857 1350 2780 3 857 1350 2780 3 857 1350 2780 3 857 1350 2780 8 857 858 1350 1351 1676 2048 2779 2780 8 857 858 1350 1351 1676 2048 2779 2780 8 857 858 1350 1351 1676 2048 2779 2780 8 857 858 1350 1351 1676 2048 2779 2780 8 857 858 1350 1351 1676 2048 2779 2780 8 857 858 1350 1351 1676 2048 2779 2780 3 857 858 1676 3 857 858 1676 3 857 858 1676 3 857 858 1676 3 857 858 1676 3 857 858 1676 8 857 858 919 920 1135 1136 1676 1677 8 857 858 919 920 1135 1136 1676 1677 8 857 858 919 920 1135 1136 1676 1677 8 857 858 919 920 1135 1136 1676 1677 8 857 858 919 920 1135 1136 1676 1677 8 857 858 919 920 1135 1136 1676 1677 3 857 919 1135 3 857 919 1135 3 857 919 1135 3 857 919 1135 3 857 919 1135 3 857 919 1135 3 858 1351 2779 3 858 1351 2779 3 858 1351 2779 3 858 1351 2779 3 858 1351 2779 3 858 1351 2779 8 858 859 1351 1352 1684 2040 2778 2779 8 858 859 1351 1352 1684 2040 2778 2779 8 858 859 1351 1352 1684 2040 2778 2779 8 858 859 1351 1352 1684 2040 2778 2779 8 858 859 1351 1352 1684 2040 2778 2779 8 858 859 1351 1352 1684 2040 2778 2779 3 858 859 1684 3 858 859 1684 3 858 859 1684 3 858 859 1684 3 858 859 1684 3 858 859 1684 8 858 859 920 921 1136 1137 1684 1685 8 858 859 920 921 1136 1137 1684 1685 8 858 859 920 921 1136 1137 1684 1685 8 858 859 920 921 1136 1137 1684 1685 8 858 859 920 921 1136 1137 1684 1685 8 858 859 920 921 1136 1137 1684 1685 3 858 920 1136 3 858 920 1136 3 858 920 1136 3 858 920 1136 3 858 920 1136 3 858 920 1136 3 859 1352 2778 3 859 1352 2778 3 859 1352 2778 3 859 1352 2778 3 859 1352 2778 3 859 1352 2778 8 859 860 1352 1353 1690 2034 2777 2778 8 859 860 1352 1353 1690 2034 2777 2778 8 859 860 1352 1353 1690 2034 2777 2778 8 859 860 1352 1353 1690 2034 2777 2778 8 859 860 1352 1353 1690 2034 2777 2778 8 859 860 1352 1353 1690 2034 2777 2778 3 859 860 1690 3 859 860 1690 3 859 860 1690 3 859 860 1690 3 859 860 1690 3 859 860 1690 8 859 860 921 922 1137 1138 1690 1691 8 859 860 921 922 1137 1138 1690 1691 8 859 860 921 922 1137 1138 1690 1691 8 859 860 921 922 1137 1138 1690 1691 8 859 860 921 922 1137 1138 1690 1691 8 859 860 921 922 1137 1138 1690 1691 3 859 921 1137 3 859 921 1137 3 859 921 1137 3 859 921 1137 3 859 921 1137 3 859 921 1137 3 860 1353 2777 3 860 1353 2777 3 860 1353 2777 3 860 1353 2777 3 860 1353 2777 3 860 1353 2777 8 860 861 1353 1354 1700 2024 2776 2777 8 860 861 1353 1354 1700 2024 2776 2777 8 860 861 1353 1354 1700 2024 2776 2777 8 860 861 1353 1354 1700 2024 2776 2777 8 860 861 1353 1354 1700 2024 2776 2777 8 860 861 1353 1354 1700 2024 2776 2777 3 860 861 1700 3 860 861 1700 3 860 861 1700 3 860 861 1700 3 860 861 1700 3 860 861 1700 8 860 861 922 923 1138 1139 1700 1701 8 860 861 922 923 1138 1139 1700 1701 8 860 861 922 923 1138 1139 1700 1701 8 860 861 922 923 1138 1139 1700 1701 8 860 861 922 923 1138 1139 1700 1701 8 860 861 922 923 1138 1139 1700 1701 3 860 922 1138 3 860 922 1138 3 860 922 1138 3 860 922 1138 3 860 922 1138 3 860 922 1138 3 861 1354 2776 3 861 1354 2776 3 861 1354 2776 3 861 1354 2776 3 861 1354 2776 3 861 1354 2776 8 861 862 1354 1355 1710 2014 2775 2776 8 861 862 1354 1355 1710 2014 2775 2776 8 861 862 1354 1355 1710 2014 2775 2776 8 861 862 1354 1355 1710 2014 2775 2776 8 861 862 1354 1355 1710 2014 2775 2776 8 861 862 1354 1355 1710 2014 2775 2776 3 861 862 1710 3 861 862 1710 3 861 862 1710 3 861 862 1710 3 861 862 1710 3 861 862 1710 8 861 862 923 924 1139 1140 1710 1711 8 861 862 923 924 1139 1140 1710 1711 8 861 862 923 924 1139 1140 1710 1711 8 861 862 923 924 1139 1140 1710 1711 8 861 862 923 924 1139 1140 1710 1711 8 861 862 923 924 1139 1140 1710 1711 3 861 923 1139 3 861 923 1139 3 861 923 1139 3 861 923 1139 3 861 923 1139 3 861 923 1139 3 862 1355 2775 3 862 1355 2775 3 862 1355 2775 3 862 1355 2775 3 862 1355 2775 3 862 1355 2775 3 862 924 1140 3 862 924 1140 3 862 924 1140 3 862 924 1140 3 862 924 1140 3 862 924 1140 4 863 1759 1965 2774 4 863 1759 1965 2774 4 863 1759 1965 2774 4 863 1759 1965 2774 4 863 1759 1965 2774 4 863 1759 1965 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 2 863 2774 1 863 1 863 1 863 1 863 1 863 1 863 2 863 1759 2 863 1759 2 863 1759 2 863 1759 2 863 1759 2 863 1759 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 2 864 2773 4 864 1760 1964 2773 4 864 1760 1964 2773 4 864 1760 1964 2773 4 864 1760 1964 2773 4 864 1760 1964 2773 4 864 1760 1964 2773 2 864 1760 2 864 1760 2 864 1760 2 864 1760 2 864 1760 2 864 1760 1 864 1 864 1 864 1 864 1 864 1 864 4 865 1761 1963 2772 4 865 1761 1963 2772 4 865 1761 1963 2772 4 865 1761 1963 2772 4 865 1761 1963 2772 4 865 1761 1963 2772 2 865 2772 2 865 2772 2 865 2772 2 865 2772 2 865 2772 2 865 2772 4 865 1762 1962 2772 4 865 1762 1962 2772 4 865 1762 1962 2772 4 865 1762 1962 2772 4 865 1762 1962 2772 4 865 1762 1962 2772 2 865 1762 2 865 1762 2 865 1762 2 865 1762 2 865 1762 2 865 1762 2 865 1761 2 865 1761 2 865 1761 2 865 1761 2 865 1761 2 865 1761 4 866 1763 1961 2771 4 866 1763 1961 2771 4 866 1763 1961 2771 4 866 1763 1961 2771 4 866 1763 1961 2771 4 866 1763 1961 2771 2 866 2771 2 866 2771 2 866 2771 2 866 2771 2 866 2771 2 866 2771 4 866 1764 1960 2771 4 866 1764 1960 2771 4 866 1764 1960 2771 4 866 1764 1960 2771 4 866 1764 1960 2771 4 866 1764 1960 2771 2 866 1764 2 866 1764 2 866 1764 2 866 1764 2 866 1764 2 866 1764 2 866 1763 2 866 1763 2 866 1763 2 866 1763 2 866 1763 2 866 1763 4 867 1765 1959 2770 4 867 1765 1959 2770 4 867 1765 1959 2770 4 867 1765 1959 2770 4 867 1765 1959 2770 4 867 1765 1959 2770 2 867 2770 2 867 2770 2 867 2770 2 867 2770 2 867 2770 2 867 2770 4 867 1766 1958 2770 4 867 1766 1958 2770 4 867 1766 1958 2770 4 867 1766 1958 2770 4 867 1766 1958 2770 4 867 1766 1958 2770 2 867 1766 2 867 1766 2 867 1766 2 867 1766 2 867 1766 2 867 1766 2 867 1765 2 867 1765 2 867 1765 2 867 1765 2 867 1765 2 867 1765 4 868 1767 1957 2769 4 868 1767 1957 2769 4 868 1767 1957 2769 4 868 1767 1957 2769 4 868 1767 1957 2769 4 868 1767 1957 2769 2 868 2769 2 868 2769 2 868 2769 2 868 2769 2 868 2769 2 868 2769 4 868 1768 1956 2769 4 868 1768 1956 2769 4 868 1768 1956 2769 4 868 1768 1956 2769 4 868 1768 1956 2769 4 868 1768 1956 2769 2 868 1768 2 868 1768 2 868 1768 2 868 1768 2 868 1768 2 868 1768 2 868 1767 2 868 1767 2 868 1767 2 868 1767 2 868 1767 2 868 1767 4 869 1769 1955 2768 4 869 1769 1955 2768 4 869 1769 1955 2768 4 869 1769 1955 2768 4 869 1769 1955 2768 4 869 1769 1955 2768 2 869 2768 2 869 2768 2 869 2768 2 869 2768 2 869 2768 2 869 2768 4 869 1770 1954 2768 4 869 1770 1954 2768 4 869 1770 1954 2768 4 869 1770 1954 2768 4 869 1770 1954 2768 4 869 1770 1954 2768 2 869 1770 2 869 1770 2 869 1770 2 869 1770 2 869 1770 2 869 1770 2 869 1769 2 869 1769 2 869 1769 2 869 1769 2 869 1769 2 869 1769 4 870 1771 1953 2767 4 870 1771 1953 2767 4 870 1771 1953 2767 4 870 1771 1953 2767 4 870 1771 1953 2767 4 870 1771 1953 2767 2 870 2767 2 870 2767 2 870 2767 2 870 2767 2 870 2767 2 870 2767 4 870 1772 1952 2767 4 870 1772 1952 2767 4 870 1772 1952 2767 4 870 1772 1952 2767 4 870 1772 1952 2767 4 870 1772 1952 2767 2 870 1772 2 870 1772 2 870 1772 2 870 1772 2 870 1772 2 870 1772 2 870 1771 2 870 1771 2 870 1771 2 870 1771 2 870 1771 2 870 1771 4 871 1773 1951 2766 4 871 1773 1951 2766 4 871 1773 1951 2766 4 871 1773 1951 2766 4 871 1773 1951 2766 4 871 1773 1951 2766 2 871 2766 2 871 2766 2 871 2766 2 871 2766 2 871 2766 2 871 2766 4 871 1774 1950 2766 4 871 1774 1950 2766 4 871 1774 1950 2766 4 871 1774 1950 2766 4 871 1774 1950 2766 4 871 1774 1950 2766 2 871 1774 2 871 1774 2 871 1774 2 871 1774 2 871 1774 2 871 1774 2 871 1773 2 871 1773 2 871 1773 2 871 1773 2 871 1773 2 871 1773 4 872 1775 1949 2765 4 872 1775 1949 2765 4 872 1775 1949 2765 4 872 1775 1949 2765 4 872 1775 1949 2765 4 872 1775 1949 2765 2 872 2765 2 872 2765 2 872 2765 2 872 2765 2 872 2765 2 872 2765 4 872 1776 1948 2765 4 872 1776 1948 2765 4 872 1776 1948 2765 4 872 1776 1948 2765 4 872 1776 1948 2765 4 872 1776 1948 2765 2 872 1776 2 872 1776 2 872 1776 2 872 1776 2 872 1776 2 872 1776 2 872 1775 2 872 1775 2 872 1775 2 872 1775 2 872 1775 2 872 1775 4 873 1777 1947 2764 4 873 1777 1947 2764 4 873 1777 1947 2764 4 873 1777 1947 2764 4 873 1777 1947 2764 4 873 1777 1947 2764 2 873 2764 2 873 2764 2 873 2764 2 873 2764 2 873 2764 2 873 2764 4 873 1778 1946 2764 4 873 1778 1946 2764 4 873 1778 1946 2764 4 873 1778 1946 2764 4 873 1778 1946 2764 4 873 1778 1946 2764 2 873 1778 2 873 1778 2 873 1778 2 873 1778 2 873 1778 2 873 1778 2 873 1777 2 873 1777 2 873 1777 2 873 1777 2 873 1777 2 873 1777 4 874 1779 1945 2763 4 874 1779 1945 2763 4 874 1779 1945 2763 4 874 1779 1945 2763 4 874 1779 1945 2763 4 874 1779 1945 2763 2 874 2763 2 874 2763 2 874 2763 2 874 2763 2 874 2763 2 874 2763 4 874 1780 1944 2763 4 874 1780 1944 2763 4 874 1780 1944 2763 4 874 1780 1944 2763 4 874 1780 1944 2763 4 874 1780 1944 2763 2 874 1780 2 874 1780 2 874 1780 2 874 1780 2 874 1780 2 874 1780 2 874 1779 2 874 1779 2 874 1779 2 874 1779 2 874 1779 2 874 1779 4 875 1781 1943 2762 4 875 1781 1943 2762 4 875 1781 1943 2762 4 875 1781 1943 2762 4 875 1781 1943 2762 4 875 1781 1943 2762 2 875 2762 2 875 2762 2 875 2762 2 875 2762 2 875 2762 2 875 2762 4 875 1782 1942 2762 4 875 1782 1942 2762 4 875 1782 1942 2762 4 875 1782 1942 2762 4 875 1782 1942 2762 4 875 1782 1942 2762 2 875 1782 2 875 1782 2 875 1782 2 875 1782 2 875 1782 2 875 1782 2 875 1781 2 875 1781 2 875 1781 2 875 1781 2 875 1781 2 875 1781 4 876 877 1098 1141 4 876 877 1098 1141 4 876 877 1098 1141 4 876 877 1098 1141 4 876 877 1098 1141 4 876 877 1098 1141 3 876 1313 2761 3 876 1313 2761 3 876 1313 2761 3 876 1313 2761 3 876 1313 2761 3 876 1313 2761 3 877 882 925 3 877 882 925 3 877 882 925 3 877 882 925 3 877 882 925 3 877 882 925 3 878 925 968 3 878 925 968 3 878 925 968 3 878 925 968 3 878 925 968 3 878 925 968 3 878 1141 1184 3 878 1141 1184 3 878 1141 1184 3 878 1141 1184 3 878 1141 1184 3 878 1141 1184 4 879 880 1140 1183 4 879 880 1140 1183 4 879 880 1140 1183 4 879 880 1140 1183 4 879 880 1140 1183 4 879 880 1140 1183 3 879 1355 2758 3 879 1355 2758 3 879 1355 2758 3 879 1355 2758 3 879 1355 2758 3 879 1355 2758 3 880 924 967 3 880 924 967 3 880 924 967 3 880 924 967 3 880 924 967 3 880 924 967 3 881 967 1010 3 881 967 1010 3 881 967 1010 3 881 967 1010 3 881 967 1010 3 881 967 1010 3 881 1183 1226 3 881 1183 1226 3 881 1183 1226 3 881 1183 1226 3 881 1183 1226 3 881 1183 1226 3 882 883 1401 3 882 883 1401 3 882 883 1401 3 882 883 1401 3 882 883 1401 3 882 883 1401 3 883 884 1409 3 883 884 1409 3 883 884 1409 3 883 884 1409 3 883 884 1409 3 883 884 1409 3 884 885 1415 3 884 885 1415 3 884 885 1415 3 884 885 1415 3 884 885 1415 3 884 885 1415 3 885 886 1421 3 885 886 1421 3 885 886 1421 3 885 886 1421 3 885 886 1421 3 885 886 1421 3 886 887 1427 3 886 887 1427 3 886 887 1427 3 886 887 1427 3 886 887 1427 3 886 887 1427 3 887 888 1433 3 887 888 1433 3 887 888 1433 3 887 888 1433 3 887 888 1433 3 887 888 1433 3 888 889 1439 3 888 889 1439 3 888 889 1439 3 888 889 1439 3 888 889 1439 3 888 889 1439 3 889 890 1445 3 889 890 1445 3 889 890 1445 3 889 890 1445 3 889 890 1445 3 889 890 1445 3 890 891 1453 3 890 891 1453 3 890 891 1453 3 890 891 1453 3 890 891 1453 3 890 891 1453 3 891 892 1459 3 891 892 1459 3 891 892 1459 3 891 892 1459 3 891 892 1459 3 891 892 1459 3 892 893 1467 3 892 893 1467 3 892 893 1467 3 892 893 1467 3 892 893 1467 3 892 893 1467 3 893 894 1475 3 893 894 1475 3 893 894 1475 3 893 894 1475 3 893 894 1475 3 893 894 1475 3 894 895 1481 3 894 895 1481 3 894 895 1481 3 894 895 1481 3 894 895 1481 3 894 895 1481 3 895 896 1491 3 895 896 1491 3 895 896 1491 3 895 896 1491 3 895 896 1491 3 895 896 1491 3 896 897 1501 3 896 897 1501 3 896 897 1501 3 896 897 1501 3 896 897 1501 3 896 897 1501 3 897 898 1507 3 897 898 1507 3 897 898 1507 3 897 898 1507 3 897 898 1507 3 897 898 1507 3 898 899 1515 3 898 899 1515 3 898 899 1515 3 898 899 1515 3 898 899 1515 3 898 899 1515 3 899 900 1523 3 899 900 1523 3 899 900 1523 3 899 900 1523 3 899 900 1523 3 899 900 1523 3 900 901 1529 3 900 901 1529 3 900 901 1529 3 900 901 1529 3 900 901 1529 3 900 901 1529 3 901 902 1539 3 901 902 1539 3 901 902 1539 3 901 902 1539 3 901 902 1539 3 901 902 1539 3 902 903 1547 3 902 903 1547 3 902 903 1547 3 902 903 1547 3 902 903 1547 3 902 903 1547 3 903 904 1553 3 903 904 1553 3 903 904 1553 3 903 904 1553 3 903 904 1553 3 903 904 1553 3 904 905 1561 3 904 905 1561 3 904 905 1561 3 904 905 1561 3 904 905 1561 3 904 905 1561 3 905 906 1569 3 905 906 1569 3 905 906 1569 3 905 906 1569 3 905 906 1569 3 905 906 1569 3 906 907 1575 3 906 907 1575 3 906 907 1575 3 906 907 1575 3 906 907 1575 3 906 907 1575 3 907 908 1585 3 907 908 1585 3 907 908 1585 3 907 908 1585 3 907 908 1585 3 907 908 1585 3 908 909 1593 3 908 909 1593 3 908 909 1593 3 908 909 1593 3 908 909 1593 3 908 909 1593 3 909 910 1599 3 909 910 1599 3 909 910 1599 3 909 910 1599 3 909 910 1599 3 909 910 1599 3 910 911 1607 3 910 911 1607 3 910 911 1607 3 910 911 1607 3 910 911 1607 3 910 911 1607 3 911 912 1615 3 911 912 1615 3 911 912 1615 3 911 912 1615 3 911 912 1615 3 911 912 1615 3 912 913 1621 3 912 913 1621 3 912 913 1621 3 912 913 1621 3 912 913 1621 3 912 913 1621 3 913 914 1631 3 913 914 1631 3 913 914 1631 3 913 914 1631 3 913 914 1631 3 913 914 1631 3 914 915 1639 3 914 915 1639 3 914 915 1639 3 914 915 1639 3 914 915 1639 3 914 915 1639 3 915 916 1645 3 915 916 1645 3 915 916 1645 3 915 916 1645 3 915 916 1645 3 915 916 1645 3 916 917 1653 3 916 917 1653 3 916 917 1653 3 916 917 1653 3 916 917 1653 3 916 917 1653 3 917 918 1661 3 917 918 1661 3 917 918 1661 3 917 918 1661 3 917 918 1661 3 917 918 1661 3 918 919 1667 3 918 919 1667 3 918 919 1667 3 918 919 1667 3 918 919 1667 3 918 919 1667 3 919 920 1677 3 919 920 1677 3 919 920 1677 3 919 920 1677 3 919 920 1677 3 919 920 1677 3 920 921 1685 3 920 921 1685 3 920 921 1685 3 920 921 1685 3 920 921 1685 3 920 921 1685 3 921 922 1691 3 921 922 1691 3 921 922 1691 3 921 922 1691 3 921 922 1691 3 921 922 1691 3 922 923 1701 3 922 923 1701 3 922 923 1701 3 922 923 1701 3 922 923 1701 3 922 923 1701 3 923 924 1711 3 923 924 1711 3 923 924 1711 3 923 924 1711 3 923 924 1711 3 923 924 1711 3 925 926 1403 3 925 926 1403 3 925 926 1403 3 925 926 1403 3 925 926 1403 3 925 926 1403 3 926 927 1410 3 926 927 1410 3 926 927 1410 3 926 927 1410 3 926 927 1410 3 926 927 1410 3 927 928 1416 3 927 928 1416 3 927 928 1416 3 927 928 1416 3 927 928 1416 3 927 928 1416 3 928 929 1422 3 928 929 1422 3 928 929 1422 3 928 929 1422 3 928 929 1422 3 928 929 1422 3 929 930 1428 3 929 930 1428 3 929 930 1428 3 929 930 1428 3 929 930 1428 3 929 930 1428 3 930 931 1434 3 930 931 1434 3 930 931 1434 3 930 931 1434 3 930 931 1434 3 930 931 1434 3 931 932 1440 3 931 932 1440 3 931 932 1440 3 931 932 1440 3 931 932 1440 3 931 932 1440 3 932 933 1447 3 932 933 1447 3 932 933 1447 3 932 933 1447 3 932 933 1447 3 932 933 1447 3 933 934 1454 3 933 934 1454 3 933 934 1454 3 933 934 1454 3 933 934 1454 3 933 934 1454 3 934 935 1461 3 934 935 1461 3 934 935 1461 3 934 935 1461 3 934 935 1461 3 934 935 1461 3 935 936 1469 3 935 936 1469 3 935 936 1469 3 935 936 1469 3 935 936 1469 3 935 936 1469 3 936 937 1476 3 936 937 1476 3 936 937 1476 3 936 937 1476 3 936 937 1476 3 936 937 1476 3 937 938 1483 3 937 938 1483 3 937 938 1483 3 937 938 1483 3 937 938 1483 3 937 938 1483 3 938 939 1493 3 938 939 1493 3 938 939 1493 3 938 939 1493 3 938 939 1493 3 938 939 1493 3 939 940 1502 3 939 940 1502 3 939 940 1502 3 939 940 1502 3 939 940 1502 3 939 940 1502 3 940 941 1509 3 940 941 1509 3 940 941 1509 3 940 941 1509 3 940 941 1509 3 940 941 1509 3 941 942 1517 3 941 942 1517 3 941 942 1517 3 941 942 1517 3 941 942 1517 3 941 942 1517 3 942 943 1524 3 942 943 1524 3 942 943 1524 3 942 943 1524 3 942 943 1524 3 942 943 1524 3 943 944 1531 3 943 944 1531 3 943 944 1531 3 943 944 1531 3 943 944 1531 3 943 944 1531 3 944 945 1541 3 944 945 1541 3 944 945 1541 3 944 945 1541 3 944 945 1541 3 944 945 1541 3 945 946 1548 3 945 946 1548 3 945 946 1548 3 945 946 1548 3 945 946 1548 3 945 946 1548 3 946 947 1555 3 946 947 1555 3 946 947 1555 3 946 947 1555 3 946 947 1555 3 946 947 1555 3 947 948 1563 3 947 948 1563 3 947 948 1563 3 947 948 1563 3 947 948 1563 3 947 948 1563 3 948 949 1570 3 948 949 1570 3 948 949 1570 3 948 949 1570 3 948 949 1570 3 948 949 1570 3 949 950 1577 3 949 950 1577 3 949 950 1577 3 949 950 1577 3 949 950 1577 3 949 950 1577 3 950 951 1587 3 950 951 1587 3 950 951 1587 3 950 951 1587 3 950 951 1587 3 950 951 1587 3 951 952 1594 3 951 952 1594 3 951 952 1594 3 951 952 1594 3 951 952 1594 3 951 952 1594 3 952 953 1601 3 952 953 1601 3 952 953 1601 3 952 953 1601 3 952 953 1601 3 952 953 1601 3 953 954 1609 3 953 954 1609 3 953 954 1609 3 953 954 1609 3 953 954 1609 3 953 954 1609 3 954 955 1616 3 954 955 1616 3 954 955 1616 3 954 955 1616 3 954 955 1616 3 954 955 1616 3 955 956 1623 3 955 956 1623 3 955 956 1623 3 955 956 1623 3 955 956 1623 3 955 956 1623 3 956 957 1633 3 956 957 1633 3 956 957 1633 3 956 957 1633 3 956 957 1633 3 956 957 1633 3 957 958 1640 3 957 958 1640 3 957 958 1640 3 957 958 1640 3 957 958 1640 3 957 958 1640 3 958 959 1647 3 958 959 1647 3 958 959 1647 3 958 959 1647 3 958 959 1647 3 958 959 1647 3 959 960 1655 3 959 960 1655 3 959 960 1655 3 959 960 1655 3 959 960 1655 3 959 960 1655 3 960 961 1662 3 960 961 1662 3 960 961 1662 3 960 961 1662 3 960 961 1662 3 960 961 1662 3 961 962 1669 3 961 962 1669 3 961 962 1669 3 961 962 1669 3 961 962 1669 3 961 962 1669 3 962 963 1679 3 962 963 1679 3 962 963 1679 3 962 963 1679 3 962 963 1679 3 962 963 1679 3 963 964 1686 3 963 964 1686 3 963 964 1686 3 963 964 1686 3 963 964 1686 3 963 964 1686 3 964 965 1693 3 964 965 1693 3 964 965 1693 3 964 965 1693 3 964 965 1693 3 964 965 1693 3 965 966 1703 3 965 966 1703 3 965 966 1703 3 965 966 1703 3 965 966 1703 3 965 966 1703 3 966 967 1712 3 966 967 1712 3 966 967 1712 3 966 967 1712 3 966 967 1712 3 966 967 1712 3 968 969 1404 3 968 969 1404 3 968 969 1404 3 968 969 1404 3 968 969 1404 3 968 969 1404 3 969 970 1411 3 969 970 1411 3 969 970 1411 3 969 970 1411 3 969 970 1411 3 969 970 1411 3 970 971 1417 3 970 971 1417 3 970 971 1417 3 970 971 1417 3 970 971 1417 3 970 971 1417 3 971 972 1423 3 971 972 1423 3 971 972 1423 3 971 972 1423 3 971 972 1423 3 971 972 1423 3 972 973 1429 3 972 973 1429 3 972 973 1429 3 972 973 1429 3 972 973 1429 3 972 973 1429 3 973 974 1435 3 973 974 1435 3 973 974 1435 3 973 974 1435 3 973 974 1435 3 973 974 1435 3 974 975 1441 3 974 975 1441 3 974 975 1441 3 974 975 1441 3 974 975 1441 3 974 975 1441 3 975 976 1448 3 975 976 1448 3 975 976 1448 3 975 976 1448 3 975 976 1448 3 975 976 1448 3 976 977 1455 3 976 977 1455 3 976 977 1455 3 976 977 1455 3 976 977 1455 3 976 977 1455 3 977 978 1462 3 977 978 1462 3 977 978 1462 3 977 978 1462 3 977 978 1462 3 977 978 1462 3 978 979 1470 3 978 979 1470 3 978 979 1470 3 978 979 1470 3 978 979 1470 3 978 979 1470 3 979 980 1477 3 979 980 1477 3 979 980 1477 3 979 980 1477 3 979 980 1477 3 979 980 1477 3 980 981 1485 3 980 981 1485 3 980 981 1485 3 980 981 1485 3 980 981 1485 3 980 981 1485 3 981 982 1495 3 981 982 1495 3 981 982 1495 3 981 982 1495 3 981 982 1495 3 981 982 1495 3 982 983 1503 3 982 983 1503 3 982 983 1503 3 982 983 1503 3 982 983 1503 3 982 983 1503 3 983 984 1510 3 983 984 1510 3 983 984 1510 3 983 984 1510 3 983 984 1510 3 983 984 1510 3 984 985 1518 3 984 985 1518 3 984 985 1518 3 984 985 1518 3 984 985 1518 3 984 985 1518 3 985 986 1525 3 985 986 1525 3 985 986 1525 3 985 986 1525 3 985 986 1525 3 985 986 1525 3 986 987 1533 3 986 987 1533 3 986 987 1533 3 986 987 1533 3 986 987 1533 3 986 987 1533 3 987 988 1542 3 987 988 1542 3 987 988 1542 3 987 988 1542 3 987 988 1542 3 987 988 1542 3 988 989 1549 3 988 989 1549 3 988 989 1549 3 988 989 1549 3 988 989 1549 3 988 989 1549 3 989 990 1556 3 989 990 1556 3 989 990 1556 3 989 990 1556 3 989 990 1556 3 989 990 1556 3 990 991 1564 3 990 991 1564 3 990 991 1564 3 990 991 1564 3 990 991 1564 3 990 991 1564 3 991 992 1571 3 991 992 1571 3 991 992 1571 3 991 992 1571 3 991 992 1571 3 991 992 1571 3 992 993 1579 3 992 993 1579 3 992 993 1579 3 992 993 1579 3 992 993 1579 3 992 993 1579 3 993 994 1588 3 993 994 1588 3 993 994 1588 3 993 994 1588 3 993 994 1588 3 993 994 1588 3 994 995 1595 3 994 995 1595 3 994 995 1595 3 994 995 1595 3 994 995 1595 3 994 995 1595 3 995 996 1602 3 995 996 1602 3 995 996 1602 3 995 996 1602 3 995 996 1602 3 995 996 1602 3 996 997 1610 3 996 997 1610 3 996 997 1610 3 996 997 1610 3 996 997 1610 3 996 997 1610 3 997 998 1617 3 997 998 1617 3 997 998 1617 3 997 998 1617 3 997 998 1617 3 997 998 1617 3 998 999 1625 3 998 999 1625 3 998 999 1625 3 998 999 1625 3 998 999 1625 3 998 999 1625 3 999 1000 1634 3 999 1000 1634 3 999 1000 1634 3 999 1000 1634 3 999 1000 1634 3 999 1000 1634 3 1000 1001 1641 3 1000 1001 1641 3 1000 1001 1641 3 1000 1001 1641 3 1000 1001 1641 3 1000 1001 1641 3 1001 1002 1648 3 1001 1002 1648 3 1001 1002 1648 3 1001 1002 1648 3 1001 1002 1648 3 1001 1002 1648 3 1002 1003 1656 3 1002 1003 1656 3 1002 1003 1656 3 1002 1003 1656 3 1002 1003 1656 3 1002 1003 1656 3 1003 1004 1663 3 1003 1004 1663 3 1003 1004 1663 3 1003 1004 1663 3 1003 1004 1663 3 1003 1004 1663 3 1004 1005 1671 3 1004 1005 1671 3 1004 1005 1671 3 1004 1005 1671 3 1004 1005 1671 3 1004 1005 1671 3 1005 1006 1680 3 1005 1006 1680 3 1005 1006 1680 3 1005 1006 1680 3 1005 1006 1680 3 1005 1006 1680 3 1006 1007 1687 3 1006 1007 1687 3 1006 1007 1687 3 1006 1007 1687 3 1006 1007 1687 3 1006 1007 1687 3 1007 1008 1695 3 1007 1008 1695 3 1007 1008 1695 3 1007 1008 1695 3 1007 1008 1695 3 1007 1008 1695 3 1008 1009 1705 3 1008 1009 1705 3 1008 1009 1705 3 1008 1009 1705 3 1008 1009 1705 3 1008 1009 1705 3 1009 1010 1713 3 1009 1010 1713 3 1009 1010 1713 3 1009 1010 1713 3 1009 1010 1713 3 1009 1010 1713 3 1011 1012 1405 3 1011 1012 1405 3 1011 1012 1405 3 1011 1012 1405 3 1011 1012 1405 3 1011 1012 1405 3 1012 1013 1412 3 1012 1013 1412 3 1012 1013 1412 3 1012 1013 1412 3 1012 1013 1412 3 1012 1013 1412 3 1013 1014 1418 3 1013 1014 1418 3 1013 1014 1418 3 1013 1014 1418 3 1013 1014 1418 3 1013 1014 1418 3 1014 1015 1424 3 1014 1015 1424 3 1014 1015 1424 3 1014 1015 1424 3 1014 1015 1424 3 1014 1015 1424 3 1015 1016 1430 3 1015 1016 1430 3 1015 1016 1430 3 1015 1016 1430 3 1015 1016 1430 3 1015 1016 1430 3 1016 1017 1436 3 1016 1017 1436 3 1016 1017 1436 3 1016 1017 1436 3 1016 1017 1436 3 1016 1017 1436 3 1017 1018 1442 3 1017 1018 1442 3 1017 1018 1442 3 1017 1018 1442 3 1017 1018 1442 3 1017 1018 1442 3 1018 1019 1449 3 1018 1019 1449 3 1018 1019 1449 3 1018 1019 1449 3 1018 1019 1449 3 1018 1019 1449 3 1019 1020 1456 3 1019 1020 1456 3 1019 1020 1456 3 1019 1020 1456 3 1019 1020 1456 3 1019 1020 1456 3 1020 1021 1463 3 1020 1021 1463 3 1020 1021 1463 3 1020 1021 1463 3 1020 1021 1463 3 1020 1021 1463 3 1021 1022 1471 3 1021 1022 1471 3 1021 1022 1471 3 1021 1022 1471 3 1021 1022 1471 3 1021 1022 1471 3 1022 1023 1478 3 1022 1023 1478 3 1022 1023 1478 3 1022 1023 1478 3 1022 1023 1478 3 1022 1023 1478 3 1023 1024 1487 3 1023 1024 1487 3 1023 1024 1487 3 1023 1024 1487 3 1023 1024 1487 3 1023 1024 1487 3 1024 1025 1497 3 1024 1025 1497 3 1024 1025 1497 3 1024 1025 1497 3 1024 1025 1497 3 1024 1025 1497 3 1025 1026 1504 3 1025 1026 1504 3 1025 1026 1504 3 1025 1026 1504 3 1025 1026 1504 3 1025 1026 1504 3 1026 1027 1511 3 1026 1027 1511 3 1026 1027 1511 3 1026 1027 1511 3 1026 1027 1511 3 1026 1027 1511 3 1027 1028 1519 3 1027 1028 1519 3 1027 1028 1519 3 1027 1028 1519 3 1027 1028 1519 3 1027 1028 1519 3 1028 1029 1526 3 1028 1029 1526 3 1028 1029 1526 3 1028 1029 1526 3 1028 1029 1526 3 1028 1029 1526 3 1029 1030 1535 3 1029 1030 1535 3 1029 1030 1535 3 1029 1030 1535 3 1029 1030 1535 3 1029 1030 1535 3 1030 1031 1543 3 1030 1031 1543 3 1030 1031 1543 3 1030 1031 1543 3 1030 1031 1543 3 1030 1031 1543 3 1031 1032 1550 3 1031 1032 1550 3 1031 1032 1550 3 1031 1032 1550 3 1031 1032 1550 3 1031 1032 1550 3 1032 1033 1557 3 1032 1033 1557 3 1032 1033 1557 3 1032 1033 1557 3 1032 1033 1557 3 1032 1033 1557 3 1033 1034 1565 3 1033 1034 1565 3 1033 1034 1565 3 1033 1034 1565 3 1033 1034 1565 3 1033 1034 1565 3 1034 1035 1572 3 1034 1035 1572 3 1034 1035 1572 3 1034 1035 1572 3 1034 1035 1572 3 1034 1035 1572 3 1035 1036 1581 3 1035 1036 1581 3 1035 1036 1581 3 1035 1036 1581 3 1035 1036 1581 3 1035 1036 1581 3 1036 1037 1589 3 1036 1037 1589 3 1036 1037 1589 3 1036 1037 1589 3 1036 1037 1589 3 1036 1037 1589 3 1037 1038 1596 3 1037 1038 1596 3 1037 1038 1596 3 1037 1038 1596 3 1037 1038 1596 3 1037 1038 1596 3 1038 1039 1603 3 1038 1039 1603 3 1038 1039 1603 3 1038 1039 1603 3 1038 1039 1603 3 1038 1039 1603 3 1039 1040 1611 3 1039 1040 1611 3 1039 1040 1611 3 1039 1040 1611 3 1039 1040 1611 3 1039 1040 1611 3 1040 1041 1618 3 1040 1041 1618 3 1040 1041 1618 3 1040 1041 1618 3 1040 1041 1618 3 1040 1041 1618 3 1041 1042 1627 3 1041 1042 1627 3 1041 1042 1627 3 1041 1042 1627 3 1041 1042 1627 3 1041 1042 1627 3 1042 1043 1635 3 1042 1043 1635 3 1042 1043 1635 3 1042 1043 1635 3 1042 1043 1635 3 1042 1043 1635 3 1043 1044 1642 3 1043 1044 1642 3 1043 1044 1642 3 1043 1044 1642 3 1043 1044 1642 3 1043 1044 1642 3 1044 1045 1649 3 1044 1045 1649 3 1044 1045 1649 3 1044 1045 1649 3 1044 1045 1649 3 1044 1045 1649 3 1045 1046 1657 3 1045 1046 1657 3 1045 1046 1657 3 1045 1046 1657 3 1045 1046 1657 3 1045 1046 1657 3 1046 1047 1664 3 1046 1047 1664 3 1046 1047 1664 3 1046 1047 1664 3 1046 1047 1664 3 1046 1047 1664 3 1047 1048 1673 3 1047 1048 1673 3 1047 1048 1673 3 1047 1048 1673 3 1047 1048 1673 3 1047 1048 1673 3 1048 1049 1681 3 1048 1049 1681 3 1048 1049 1681 3 1048 1049 1681 3 1048 1049 1681 3 1048 1049 1681 3 1049 1050 1688 3 1049 1050 1688 3 1049 1050 1688 3 1049 1050 1688 3 1049 1050 1688 3 1049 1050 1688 3 1050 1051 1697 3 1050 1051 1697 3 1050 1051 1697 3 1050 1051 1697 3 1050 1051 1697 3 1050 1051 1697 3 1051 1052 1707 3 1051 1052 1707 3 1051 1052 1707 3 1051 1052 1707 3 1051 1052 1707 3 1051 1052 1707 3 1052 1053 1714 3 1052 1053 1714 3 1052 1053 1714 3 1052 1053 1714 3 1052 1053 1714 3 1052 1053 1714 3 1054 1055 1407 3 1054 1055 1407 3 1054 1055 1407 3 1054 1055 1407 3 1054 1055 1407 3 1054 1055 1407 3 1055 1056 1413 3 1055 1056 1413 3 1055 1056 1413 3 1055 1056 1413 3 1055 1056 1413 3 1055 1056 1413 3 1056 1057 1419 3 1056 1057 1419 3 1056 1057 1419 3 1056 1057 1419 3 1056 1057 1419 3 1056 1057 1419 3 1057 1058 1425 3 1057 1058 1425 3 1057 1058 1425 3 1057 1058 1425 3 1057 1058 1425 3 1057 1058 1425 3 1058 1059 1431 3 1058 1059 1431 3 1058 1059 1431 3 1058 1059 1431 3 1058 1059 1431 3 1058 1059 1431 3 1059 1060 1437 3 1059 1060 1437 3 1059 1060 1437 3 1059 1060 1437 3 1059 1060 1437 3 1059 1060 1437 3 1060 1061 1443 3 1060 1061 1443 3 1060 1061 1443 3 1060 1061 1443 3 1060 1061 1443 3 1060 1061 1443 3 1061 1062 1451 3 1061 1062 1451 3 1061 1062 1451 3 1061 1062 1451 3 1061 1062 1451 3 1061 1062 1451 3 1062 1063 1457 3 1062 1063 1457 3 1062 1063 1457 3 1062 1063 1457 3 1062 1063 1457 3 1062 1063 1457 3 1063 1064 1465 3 1063 1064 1465 3 1063 1064 1465 3 1063 1064 1465 3 1063 1064 1465 3 1063 1064 1465 3 1064 1065 1473 3 1064 1065 1473 3 1064 1065 1473 3 1064 1065 1473 3 1064 1065 1473 3 1064 1065 1473 3 1065 1066 1479 3 1065 1066 1479 3 1065 1066 1479 3 1065 1066 1479 3 1065 1066 1479 3 1065 1066 1479 3 1066 1067 1489 3 1066 1067 1489 3 1066 1067 1489 3 1066 1067 1489 3 1066 1067 1489 3 1066 1067 1489 3 1067 1068 1499 3 1067 1068 1499 3 1067 1068 1499 3 1067 1068 1499 3 1067 1068 1499 3 1067 1068 1499 3 1068 1069 1505 3 1068 1069 1505 3 1068 1069 1505 3 1068 1069 1505 3 1068 1069 1505 3 1068 1069 1505 3 1069 1070 1513 3 1069 1070 1513 3 1069 1070 1513 3 1069 1070 1513 3 1069 1070 1513 3 1069 1070 1513 3 1070 1071 1521 3 1070 1071 1521 3 1070 1071 1521 3 1070 1071 1521 3 1070 1071 1521 3 1070 1071 1521 3 1071 1072 1527 3 1071 1072 1527 3 1071 1072 1527 3 1071 1072 1527 3 1071 1072 1527 3 1071 1072 1527 3 1072 1073 1537 3 1072 1073 1537 3 1072 1073 1537 3 1072 1073 1537 3 1072 1073 1537 3 1072 1073 1537 3 1073 1074 1545 3 1073 1074 1545 3 1073 1074 1545 3 1073 1074 1545 3 1073 1074 1545 3 1073 1074 1545 3 1074 1075 1551 3 1074 1075 1551 3 1074 1075 1551 3 1074 1075 1551 3 1074 1075 1551 3 1074 1075 1551 3 1075 1076 1559 3 1075 1076 1559 3 1075 1076 1559 3 1075 1076 1559 3 1075 1076 1559 3 1075 1076 1559 3 1076 1077 1567 3 1076 1077 1567 3 1076 1077 1567 3 1076 1077 1567 3 1076 1077 1567 3 1076 1077 1567 3 1077 1078 1573 3 1077 1078 1573 3 1077 1078 1573 3 1077 1078 1573 3 1077 1078 1573 3 1077 1078 1573 3 1078 1079 1583 3 1078 1079 1583 3 1078 1079 1583 3 1078 1079 1583 3 1078 1079 1583 3 1078 1079 1583 3 1079 1080 1591 3 1079 1080 1591 3 1079 1080 1591 3 1079 1080 1591 3 1079 1080 1591 3 1079 1080 1591 3 1080 1081 1597 3 1080 1081 1597 3 1080 1081 1597 3 1080 1081 1597 3 1080 1081 1597 3 1080 1081 1597 3 1081 1082 1605 3 1081 1082 1605 3 1081 1082 1605 3 1081 1082 1605 3 1081 1082 1605 3 1081 1082 1605 3 1082 1083 1613 3 1082 1083 1613 3 1082 1083 1613 3 1082 1083 1613 3 1082 1083 1613 3 1082 1083 1613 3 1083 1084 1619 3 1083 1084 1619 3 1083 1084 1619 3 1083 1084 1619 3 1083 1084 1619 3 1083 1084 1619 3 1084 1085 1629 3 1084 1085 1629 3 1084 1085 1629 3 1084 1085 1629 3 1084 1085 1629 3 1084 1085 1629 3 1085 1086 1637 3 1085 1086 1637 3 1085 1086 1637 3 1085 1086 1637 3 1085 1086 1637 3 1085 1086 1637 3 1086 1087 1643 3 1086 1087 1643 3 1086 1087 1643 3 1086 1087 1643 3 1086 1087 1643 3 1086 1087 1643 3 1087 1088 1651 3 1087 1088 1651 3 1087 1088 1651 3 1087 1088 1651 3 1087 1088 1651 3 1087 1088 1651 3 1088 1089 1659 3 1088 1089 1659 3 1088 1089 1659 3 1088 1089 1659 3 1088 1089 1659 3 1088 1089 1659 3 1089 1090 1665 3 1089 1090 1665 3 1089 1090 1665 3 1089 1090 1665 3 1089 1090 1665 3 1089 1090 1665 3 1090 1091 1675 3 1090 1091 1675 3 1090 1091 1675 3 1090 1091 1675 3 1090 1091 1675 3 1090 1091 1675 3 1091 1092 1683 3 1091 1092 1683 3 1091 1092 1683 3 1091 1092 1683 3 1091 1092 1683 3 1091 1092 1683 3 1092 1093 1689 3 1092 1093 1689 3 1092 1093 1689 3 1092 1093 1689 3 1092 1093 1689 3 1092 1093 1689 3 1093 1094 1699 3 1093 1094 1699 3 1093 1094 1699 3 1093 1094 1699 3 1093 1094 1699 3 1093 1094 1699 3 1094 1095 1709 3 1094 1095 1709 3 1094 1095 1709 3 1094 1095 1709 3 1094 1095 1709 3 1094 1095 1709 3 1095 1096 1715 3 1095 1096 1715 3 1095 1096 1715 3 1095 1096 1715 3 1095 1096 1715 3 1095 1096 1715 1 1097 1 1097 1 1097 1 1097 1 1097 1 1097 4 1098 1099 1400 1401 4 1098 1099 1400 1401 4 1098 1099 1400 1401 4 1098 1099 1400 1401 4 1098 1099 1400 1401 4 1098 1099 1400 1401 4 1099 1100 1408 1409 4 1099 1100 1408 1409 4 1099 1100 1408 1409 4 1099 1100 1408 1409 4 1099 1100 1408 1409 4 1099 1100 1408 1409 4 1100 1101 1414 1415 4 1100 1101 1414 1415 4 1100 1101 1414 1415 4 1100 1101 1414 1415 4 1100 1101 1414 1415 4 1100 1101 1414 1415 4 1101 1102 1420 1421 4 1101 1102 1420 1421 4 1101 1102 1420 1421 4 1101 1102 1420 1421 4 1101 1102 1420 1421 4 1101 1102 1420 1421 4 1102 1103 1426 1427 4 1102 1103 1426 1427 4 1102 1103 1426 1427 4 1102 1103 1426 1427 4 1102 1103 1426 1427 4 1102 1103 1426 1427 4 1103 1104 1432 1433 4 1103 1104 1432 1433 4 1103 1104 1432 1433 4 1103 1104 1432 1433 4 1103 1104 1432 1433 4 1103 1104 1432 1433 4 1104 1105 1438 1439 4 1104 1105 1438 1439 4 1104 1105 1438 1439 4 1104 1105 1438 1439 4 1104 1105 1438 1439 4 1104 1105 1438 1439 4 1105 1106 1444 1445 4 1105 1106 1444 1445 4 1105 1106 1444 1445 4 1105 1106 1444 1445 4 1105 1106 1444 1445 4 1105 1106 1444 1445 4 1106 1107 1452 1453 4 1106 1107 1452 1453 4 1106 1107 1452 1453 4 1106 1107 1452 1453 4 1106 1107 1452 1453 4 1106 1107 1452 1453 4 1107 1108 1458 1459 4 1107 1108 1458 1459 4 1107 1108 1458 1459 4 1107 1108 1458 1459 4 1107 1108 1458 1459 4 1107 1108 1458 1459 4 1108 1109 1466 1467 4 1108 1109 1466 1467 4 1108 1109 1466 1467 4 1108 1109 1466 1467 4 1108 1109 1466 1467 4 1108 1109 1466 1467 4 1109 1110 1474 1475 4 1109 1110 1474 1475 4 1109 1110 1474 1475 4 1109 1110 1474 1475 4 1109 1110 1474 1475 4 1109 1110 1474 1475 4 1110 1111 1480 1481 4 1110 1111 1480 1481 4 1110 1111 1480 1481 4 1110 1111 1480 1481 4 1110 1111 1480 1481 4 1110 1111 1480 1481 4 1111 1112 1490 1491 4 1111 1112 1490 1491 4 1111 1112 1490 1491 4 1111 1112 1490 1491 4 1111 1112 1490 1491 4 1111 1112 1490 1491 4 1112 1113 1500 1501 4 1112 1113 1500 1501 4 1112 1113 1500 1501 4 1112 1113 1500 1501 4 1112 1113 1500 1501 4 1112 1113 1500 1501 4 1113 1114 1506 1507 4 1113 1114 1506 1507 4 1113 1114 1506 1507 4 1113 1114 1506 1507 4 1113 1114 1506 1507 4 1113 1114 1506 1507 4 1114 1115 1514 1515 4 1114 1115 1514 1515 4 1114 1115 1514 1515 4 1114 1115 1514 1515 4 1114 1115 1514 1515 4 1114 1115 1514 1515 4 1115 1116 1522 1523 4 1115 1116 1522 1523 4 1115 1116 1522 1523 4 1115 1116 1522 1523 4 1115 1116 1522 1523 4 1115 1116 1522 1523 4 1116 1117 1528 1529 4 1116 1117 1528 1529 4 1116 1117 1528 1529 4 1116 1117 1528 1529 4 1116 1117 1528 1529 4 1116 1117 1528 1529 4 1117 1118 1538 1539 4 1117 1118 1538 1539 4 1117 1118 1538 1539 4 1117 1118 1538 1539 4 1117 1118 1538 1539 4 1117 1118 1538 1539 4 1118 1119 1546 1547 4 1118 1119 1546 1547 4 1118 1119 1546 1547 4 1118 1119 1546 1547 4 1118 1119 1546 1547 4 1118 1119 1546 1547 4 1119 1120 1552 1553 4 1119 1120 1552 1553 4 1119 1120 1552 1553 4 1119 1120 1552 1553 4 1119 1120 1552 1553 4 1119 1120 1552 1553 4 1120 1121 1560 1561 4 1120 1121 1560 1561 4 1120 1121 1560 1561 4 1120 1121 1560 1561 4 1120 1121 1560 1561 4 1120 1121 1560 1561 4 1121 1122 1568 1569 4 1121 1122 1568 1569 4 1121 1122 1568 1569 4 1121 1122 1568 1569 4 1121 1122 1568 1569 4 1121 1122 1568 1569 4 1122 1123 1574 1575 4 1122 1123 1574 1575 4 1122 1123 1574 1575 4 1122 1123 1574 1575 4 1122 1123 1574 1575 4 1122 1123 1574 1575 4 1123 1124 1584 1585 4 1123 1124 1584 1585 4 1123 1124 1584 1585 4 1123 1124 1584 1585 4 1123 1124 1584 1585 4 1123 1124 1584 1585 4 1124 1125 1592 1593 4 1124 1125 1592 1593 4 1124 1125 1592 1593 4 1124 1125 1592 1593 4 1124 1125 1592 1593 4 1124 1125 1592 1593 4 1125 1126 1598 1599 4 1125 1126 1598 1599 4 1125 1126 1598 1599 4 1125 1126 1598 1599 4 1125 1126 1598 1599 4 1125 1126 1598 1599 4 1126 1127 1606 1607 4 1126 1127 1606 1607 4 1126 1127 1606 1607 4 1126 1127 1606 1607 4 1126 1127 1606 1607 4 1126 1127 1606 1607 4 1127 1128 1614 1615 4 1127 1128 1614 1615 4 1127 1128 1614 1615 4 1127 1128 1614 1615 4 1127 1128 1614 1615 4 1127 1128 1614 1615 4 1128 1129 1620 1621 4 1128 1129 1620 1621 4 1128 1129 1620 1621 4 1128 1129 1620 1621 4 1128 1129 1620 1621 4 1128 1129 1620 1621 4 1129 1130 1630 1631 4 1129 1130 1630 1631 4 1129 1130 1630 1631 4 1129 1130 1630 1631 4 1129 1130 1630 1631 4 1129 1130 1630 1631 4 1130 1131 1638 1639 4 1130 1131 1638 1639 4 1130 1131 1638 1639 4 1130 1131 1638 1639 4 1130 1131 1638 1639 4 1130 1131 1638 1639 4 1131 1132 1644 1645 4 1131 1132 1644 1645 4 1131 1132 1644 1645 4 1131 1132 1644 1645 4 1131 1132 1644 1645 4 1131 1132 1644 1645 4 1132 1133 1652 1653 4 1132 1133 1652 1653 4 1132 1133 1652 1653 4 1132 1133 1652 1653 4 1132 1133 1652 1653 4 1132 1133 1652 1653 4 1133 1134 1660 1661 4 1133 1134 1660 1661 4 1133 1134 1660 1661 4 1133 1134 1660 1661 4 1133 1134 1660 1661 4 1133 1134 1660 1661 4 1134 1135 1666 1667 4 1134 1135 1666 1667 4 1134 1135 1666 1667 4 1134 1135 1666 1667 4 1134 1135 1666 1667 4 1134 1135 1666 1667 4 1135 1136 1676 1677 4 1135 1136 1676 1677 4 1135 1136 1676 1677 4 1135 1136 1676 1677 4 1135 1136 1676 1677 4 1135 1136 1676 1677 4 1136 1137 1684 1685 4 1136 1137 1684 1685 4 1136 1137 1684 1685 4 1136 1137 1684 1685 4 1136 1137 1684 1685 4 1136 1137 1684 1685 4 1137 1138 1690 1691 4 1137 1138 1690 1691 4 1137 1138 1690 1691 4 1137 1138 1690 1691 4 1137 1138 1690 1691 4 1137 1138 1690 1691 4 1138 1139 1700 1701 4 1138 1139 1700 1701 4 1138 1139 1700 1701 4 1138 1139 1700 1701 4 1138 1139 1700 1701 4 1138 1139 1700 1701 4 1139 1140 1710 1711 4 1139 1140 1710 1711 4 1139 1140 1710 1711 4 1139 1140 1710 1711 4 1139 1140 1710 1711 4 1139 1140 1710 1711 4 1141 1142 1402 1403 4 1141 1142 1402 1403 4 1141 1142 1402 1403 4 1141 1142 1402 1403 4 1141 1142 1402 1403 4 1141 1142 1402 1403 3 1142 1143 1410 3 1142 1143 1410 3 1142 1143 1410 3 1142 1143 1410 3 1142 1143 1410 3 1142 1143 1410 3 1143 1144 1416 3 1143 1144 1416 3 1143 1144 1416 3 1143 1144 1416 3 1143 1144 1416 3 1143 1144 1416 3 1144 1145 1422 3 1144 1145 1422 3 1144 1145 1422 3 1144 1145 1422 3 1144 1145 1422 3 1144 1145 1422 3 1145 1146 1428 3 1145 1146 1428 3 1145 1146 1428 3 1145 1146 1428 3 1145 1146 1428 3 1145 1146 1428 3 1146 1147 1434 3 1146 1147 1434 3 1146 1147 1434 3 1146 1147 1434 3 1146 1147 1434 3 1146 1147 1434 3 1147 1148 1440 3 1147 1148 1440 3 1147 1148 1440 3 1147 1148 1440 3 1147 1148 1440 3 1147 1148 1440 4 1148 1149 1446 1447 4 1148 1149 1446 1447 4 1148 1149 1446 1447 4 1148 1149 1446 1447 4 1148 1149 1446 1447 4 1148 1149 1446 1447 3 1149 1150 1454 3 1149 1150 1454 3 1149 1150 1454 3 1149 1150 1454 3 1149 1150 1454 3 1149 1150 1454 4 1150 1151 1460 1461 4 1150 1151 1460 1461 4 1150 1151 1460 1461 4 1150 1151 1460 1461 4 1150 1151 1460 1461 4 1150 1151 1460 1461 4 1151 1152 1468 1469 4 1151 1152 1468 1469 4 1151 1152 1468 1469 4 1151 1152 1468 1469 4 1151 1152 1468 1469 4 1151 1152 1468 1469 3 1152 1153 1476 3 1152 1153 1476 3 1152 1153 1476 3 1152 1153 1476 3 1152 1153 1476 3 1152 1153 1476 4 1153 1154 1482 1483 4 1153 1154 1482 1483 4 1153 1154 1482 1483 4 1153 1154 1482 1483 4 1153 1154 1482 1483 4 1153 1154 1482 1483 4 1154 1155 1492 1493 4 1154 1155 1492 1493 4 1154 1155 1492 1493 4 1154 1155 1492 1493 4 1154 1155 1492 1493 4 1154 1155 1492 1493 3 1155 1156 1502 3 1155 1156 1502 3 1155 1156 1502 3 1155 1156 1502 3 1155 1156 1502 3 1155 1156 1502 4 1156 1157 1508 1509 4 1156 1157 1508 1509 4 1156 1157 1508 1509 4 1156 1157 1508 1509 4 1156 1157 1508 1509 4 1156 1157 1508 1509 4 1157 1158 1516 1517 4 1157 1158 1516 1517 4 1157 1158 1516 1517 4 1157 1158 1516 1517 4 1157 1158 1516 1517 4 1157 1158 1516 1517 3 1158 1159 1524 3 1158 1159 1524 3 1158 1159 1524 3 1158 1159 1524 3 1158 1159 1524 3 1158 1159 1524 4 1159 1160 1530 1531 4 1159 1160 1530 1531 4 1159 1160 1530 1531 4 1159 1160 1530 1531 4 1159 1160 1530 1531 4 1159 1160 1530 1531 4 1160 1161 1540 1541 4 1160 1161 1540 1541 4 1160 1161 1540 1541 4 1160 1161 1540 1541 4 1160 1161 1540 1541 4 1160 1161 1540 1541 3 1161 1162 1548 3 1161 1162 1548 3 1161 1162 1548 3 1161 1162 1548 3 1161 1162 1548 3 1161 1162 1548 4 1162 1163 1554 1555 4 1162 1163 1554 1555 4 1162 1163 1554 1555 4 1162 1163 1554 1555 4 1162 1163 1554 1555 4 1162 1163 1554 1555 4 1163 1164 1562 1563 4 1163 1164 1562 1563 4 1163 1164 1562 1563 4 1163 1164 1562 1563 4 1163 1164 1562 1563 4 1163 1164 1562 1563 3 1164 1165 1570 3 1164 1165 1570 3 1164 1165 1570 3 1164 1165 1570 3 1164 1165 1570 3 1164 1165 1570 4 1165 1166 1576 1577 4 1165 1166 1576 1577 4 1165 1166 1576 1577 4 1165 1166 1576 1577 4 1165 1166 1576 1577 4 1165 1166 1576 1577 4 1166 1167 1586 1587 4 1166 1167 1586 1587 4 1166 1167 1586 1587 4 1166 1167 1586 1587 4 1166 1167 1586 1587 4 1166 1167 1586 1587 3 1167 1168 1594 3 1167 1168 1594 3 1167 1168 1594 3 1167 1168 1594 3 1167 1168 1594 3 1167 1168 1594 4 1168 1169 1600 1601 4 1168 1169 1600 1601 4 1168 1169 1600 1601 4 1168 1169 1600 1601 4 1168 1169 1600 1601 4 1168 1169 1600 1601 4 1169 1170 1608 1609 4 1169 1170 1608 1609 4 1169 1170 1608 1609 4 1169 1170 1608 1609 4 1169 1170 1608 1609 4 1169 1170 1608 1609 3 1170 1171 1616 3 1170 1171 1616 3 1170 1171 1616 3 1170 1171 1616 3 1170 1171 1616 3 1170 1171 1616 4 1171 1172 1622 1623 4 1171 1172 1622 1623 4 1171 1172 1622 1623 4 1171 1172 1622 1623 4 1171 1172 1622 1623 4 1171 1172 1622 1623 4 1172 1173 1632 1633 4 1172 1173 1632 1633 4 1172 1173 1632 1633 4 1172 1173 1632 1633 4 1172 1173 1632 1633 4 1172 1173 1632 1633 3 1173 1174 1640 3 1173 1174 1640 3 1173 1174 1640 3 1173 1174 1640 3 1173 1174 1640 3 1173 1174 1640 4 1174 1175 1646 1647 4 1174 1175 1646 1647 4 1174 1175 1646 1647 4 1174 1175 1646 1647 4 1174 1175 1646 1647 4 1174 1175 1646 1647 4 1175 1176 1654 1655 4 1175 1176 1654 1655 4 1175 1176 1654 1655 4 1175 1176 1654 1655 4 1175 1176 1654 1655 4 1175 1176 1654 1655 3 1176 1177 1662 3 1176 1177 1662 3 1176 1177 1662 3 1176 1177 1662 3 1176 1177 1662 3 1176 1177 1662 4 1177 1178 1668 1669 4 1177 1178 1668 1669 4 1177 1178 1668 1669 4 1177 1178 1668 1669 4 1177 1178 1668 1669 4 1177 1178 1668 1669 4 1178 1179 1678 1679 4 1178 1179 1678 1679 4 1178 1179 1678 1679 4 1178 1179 1678 1679 4 1178 1179 1678 1679 4 1178 1179 1678 1679 3 1179 1180 1686 3 1179 1180 1686 3 1179 1180 1686 3 1179 1180 1686 3 1179 1180 1686 3 1179 1180 1686 4 1180 1181 1692 1693 4 1180 1181 1692 1693 4 1180 1181 1692 1693 4 1180 1181 1692 1693 4 1180 1181 1692 1693 4 1180 1181 1692 1693 4 1181 1182 1702 1703 4 1181 1182 1702 1703 4 1181 1182 1702 1703 4 1181 1182 1702 1703 4 1181 1182 1702 1703 4 1181 1182 1702 1703 3 1182 1183 1712 3 1182 1183 1712 3 1182 1183 1712 3 1182 1183 1712 3 1182 1183 1712 3 1182 1183 1712 3 1184 1185 1404 3 1184 1185 1404 3 1184 1185 1404 3 1184 1185 1404 3 1184 1185 1404 3 1184 1185 1404 3 1185 1186 1411 3 1185 1186 1411 3 1185 1186 1411 3 1185 1186 1411 3 1185 1186 1411 3 1185 1186 1411 3 1186 1187 1417 3 1186 1187 1417 3 1186 1187 1417 3 1186 1187 1417 3 1186 1187 1417 3 1186 1187 1417 3 1187 1188 1423 3 1187 1188 1423 3 1187 1188 1423 3 1187 1188 1423 3 1187 1188 1423 3 1187 1188 1423 3 1188 1189 1429 3 1188 1189 1429 3 1188 1189 1429 3 1188 1189 1429 3 1188 1189 1429 3 1188 1189 1429 3 1189 1190 1435 3 1189 1190 1435 3 1189 1190 1435 3 1189 1190 1435 3 1189 1190 1435 3 1189 1190 1435 3 1190 1191 1441 3 1190 1191 1441 3 1190 1191 1441 3 1190 1191 1441 3 1190 1191 1441 3 1190 1191 1441 3 1191 1192 1448 3 1191 1192 1448 3 1191 1192 1448 3 1191 1192 1448 3 1191 1192 1448 3 1191 1192 1448 3 1192 1193 1455 3 1192 1193 1455 3 1192 1193 1455 3 1192 1193 1455 3 1192 1193 1455 3 1192 1193 1455 3 1193 1194 1462 3 1193 1194 1462 3 1193 1194 1462 3 1193 1194 1462 3 1193 1194 1462 3 1193 1194 1462 3 1194 1195 1470 3 1194 1195 1470 3 1194 1195 1470 3 1194 1195 1470 3 1194 1195 1470 3 1194 1195 1470 3 1195 1196 1477 3 1195 1196 1477 3 1195 1196 1477 3 1195 1196 1477 3 1195 1196 1477 3 1195 1196 1477 4 1196 1197 1484 1485 4 1196 1197 1484 1485 4 1196 1197 1484 1485 4 1196 1197 1484 1485 4 1196 1197 1484 1485 4 1196 1197 1484 1485 4 1197 1198 1494 1495 4 1197 1198 1494 1495 4 1197 1198 1494 1495 4 1197 1198 1494 1495 4 1197 1198 1494 1495 4 1197 1198 1494 1495 3 1198 1199 1503 3 1198 1199 1503 3 1198 1199 1503 3 1198 1199 1503 3 1198 1199 1503 3 1198 1199 1503 3 1199 1200 1510 3 1199 1200 1510 3 1199 1200 1510 3 1199 1200 1510 3 1199 1200 1510 3 1199 1200 1510 3 1200 1201 1518 3 1200 1201 1518 3 1200 1201 1518 3 1200 1201 1518 3 1200 1201 1518 3 1200 1201 1518 3 1201 1202 1525 3 1201 1202 1525 3 1201 1202 1525 3 1201 1202 1525 3 1201 1202 1525 3 1201 1202 1525 4 1202 1203 1532 1533 4 1202 1203 1532 1533 4 1202 1203 1532 1533 4 1202 1203 1532 1533 4 1202 1203 1532 1533 4 1202 1203 1532 1533 3 1203 1204 1542 3 1203 1204 1542 3 1203 1204 1542 3 1203 1204 1542 3 1203 1204 1542 3 1203 1204 1542 3 1204 1205 1549 3 1204 1205 1549 3 1204 1205 1549 3 1204 1205 1549 3 1204 1205 1549 3 1204 1205 1549 3 1205 1206 1556 3 1205 1206 1556 3 1205 1206 1556 3 1205 1206 1556 3 1205 1206 1556 3 1205 1206 1556 3 1206 1207 1564 3 1206 1207 1564 3 1206 1207 1564 3 1206 1207 1564 3 1206 1207 1564 3 1206 1207 1564 3 1207 1208 1571 3 1207 1208 1571 3 1207 1208 1571 3 1207 1208 1571 3 1207 1208 1571 3 1207 1208 1571 4 1208 1209 1578 1579 4 1208 1209 1578 1579 4 1208 1209 1578 1579 4 1208 1209 1578 1579 4 1208 1209 1578 1579 4 1208 1209 1578 1579 3 1209 1210 1588 3 1209 1210 1588 3 1209 1210 1588 3 1209 1210 1588 3 1209 1210 1588 3 1209 1210 1588 3 1210 1211 1595 3 1210 1211 1595 3 1210 1211 1595 3 1210 1211 1595 3 1210 1211 1595 3 1210 1211 1595 3 1211 1212 1602 3 1211 1212 1602 3 1211 1212 1602 3 1211 1212 1602 3 1211 1212 1602 3 1211 1212 1602 3 1212 1213 1610 3 1212 1213 1610 3 1212 1213 1610 3 1212 1213 1610 3 1212 1213 1610 3 1212 1213 1610 3 1213 1214 1617 3 1213 1214 1617 3 1213 1214 1617 3 1213 1214 1617 3 1213 1214 1617 3 1213 1214 1617 4 1214 1215 1624 1625 4 1214 1215 1624 1625 4 1214 1215 1624 1625 4 1214 1215 1624 1625 4 1214 1215 1624 1625 4 1214 1215 1624 1625 3 1215 1216 1634 3 1215 1216 1634 3 1215 1216 1634 3 1215 1216 1634 3 1215 1216 1634 3 1215 1216 1634 3 1216 1217 1641 3 1216 1217 1641 3 1216 1217 1641 3 1216 1217 1641 3 1216 1217 1641 3 1216 1217 1641 3 1217 1218 1648 3 1217 1218 1648 3 1217 1218 1648 3 1217 1218 1648 3 1217 1218 1648 3 1217 1218 1648 3 1218 1219 1656 3 1218 1219 1656 3 1218 1219 1656 3 1218 1219 1656 3 1218 1219 1656 3 1218 1219 1656 3 1219 1220 1663 3 1219 1220 1663 3 1219 1220 1663 3 1219 1220 1663 3 1219 1220 1663 3 1219 1220 1663 4 1220 1221 1670 1671 4 1220 1221 1670 1671 4 1220 1221 1670 1671 4 1220 1221 1670 1671 4 1220 1221 1670 1671 4 1220 1221 1670 1671 3 1221 1222 1680 3 1221 1222 1680 3 1221 1222 1680 3 1221 1222 1680 3 1221 1222 1680 3 1221 1222 1680 3 1222 1223 1687 3 1222 1223 1687 3 1222 1223 1687 3 1222 1223 1687 3 1222 1223 1687 3 1222 1223 1687 4 1223 1224 1694 1695 4 1223 1224 1694 1695 4 1223 1224 1694 1695 4 1223 1224 1694 1695 4 1223 1224 1694 1695 4 1223 1224 1694 1695 4 1224 1225 1704 1705 4 1224 1225 1704 1705 4 1224 1225 1704 1705 4 1224 1225 1704 1705 4 1224 1225 1704 1705 4 1224 1225 1704 1705 3 1225 1226 1713 3 1225 1226 1713 3 1225 1226 1713 3 1225 1226 1713 3 1225 1226 1713 3 1225 1226 1713 3 1227 1228 1405 3 1227 1228 1405 3 1227 1228 1405 3 1227 1228 1405 3 1227 1228 1405 3 1227 1228 1405 3 1228 1229 1412 3 1228 1229 1412 3 1228 1229 1412 3 1228 1229 1412 3 1228 1229 1412 3 1228 1229 1412 3 1229 1230 1418 3 1229 1230 1418 3 1229 1230 1418 3 1229 1230 1418 3 1229 1230 1418 3 1229 1230 1418 3 1230 1231 1424 3 1230 1231 1424 3 1230 1231 1424 3 1230 1231 1424 3 1230 1231 1424 3 1230 1231 1424 3 1231 1232 1430 3 1231 1232 1430 3 1231 1232 1430 3 1231 1232 1430 3 1231 1232 1430 3 1231 1232 1430 3 1232 1233 1436 3 1232 1233 1436 3 1232 1233 1436 3 1232 1233 1436 3 1232 1233 1436 3 1232 1233 1436 3 1233 1234 1442 3 1233 1234 1442 3 1233 1234 1442 3 1233 1234 1442 3 1233 1234 1442 3 1233 1234 1442 3 1234 1235 1449 3 1234 1235 1449 3 1234 1235 1449 3 1234 1235 1449 3 1234 1235 1449 3 1234 1235 1449 3 1235 1236 1456 3 1235 1236 1456 3 1235 1236 1456 3 1235 1236 1456 3 1235 1236 1456 3 1235 1236 1456 3 1236 1237 1463 3 1236 1237 1463 3 1236 1237 1463 3 1236 1237 1463 3 1236 1237 1463 3 1236 1237 1463 3 1237 1238 1471 3 1237 1238 1471 3 1237 1238 1471 3 1237 1238 1471 3 1237 1238 1471 3 1237 1238 1471 3 1238 1239 1478 3 1238 1239 1478 3 1238 1239 1478 3 1238 1239 1478 3 1238 1239 1478 3 1238 1239 1478 4 1239 1240 1486 1487 4 1239 1240 1486 1487 4 1239 1240 1486 1487 4 1239 1240 1486 1487 4 1239 1240 1486 1487 4 1239 1240 1486 1487 4 1240 1241 1496 1497 4 1240 1241 1496 1497 4 1240 1241 1496 1497 4 1240 1241 1496 1497 4 1240 1241 1496 1497 4 1240 1241 1496 1497 3 1241 1242 1504 3 1241 1242 1504 3 1241 1242 1504 3 1241 1242 1504 3 1241 1242 1504 3 1241 1242 1504 3 1242 1243 1511 3 1242 1243 1511 3 1242 1243 1511 3 1242 1243 1511 3 1242 1243 1511 3 1242 1243 1511 3 1243 1244 1519 3 1243 1244 1519 3 1243 1244 1519 3 1243 1244 1519 3 1243 1244 1519 3 1243 1244 1519 3 1244 1245 1526 3 1244 1245 1526 3 1244 1245 1526 3 1244 1245 1526 3 1244 1245 1526 3 1244 1245 1526 4 1245 1246 1534 1535 4 1245 1246 1534 1535 4 1245 1246 1534 1535 4 1245 1246 1534 1535 4 1245 1246 1534 1535 4 1245 1246 1534 1535 3 1246 1247 1543 3 1246 1247 1543 3 1246 1247 1543 3 1246 1247 1543 3 1246 1247 1543 3 1246 1247 1543 3 1247 1248 1550 3 1247 1248 1550 3 1247 1248 1550 3 1247 1248 1550 3 1247 1248 1550 3 1247 1248 1550 3 1248 1249 1557 3 1248 1249 1557 3 1248 1249 1557 3 1248 1249 1557 3 1248 1249 1557 3 1248 1249 1557 3 1249 1250 1565 3 1249 1250 1565 3 1249 1250 1565 3 1249 1250 1565 3 1249 1250 1565 3 1249 1250 1565 3 1250 1251 1572 3 1250 1251 1572 3 1250 1251 1572 3 1250 1251 1572 3 1250 1251 1572 3 1250 1251 1572 4 1251 1252 1580 1581 4 1251 1252 1580 1581 4 1251 1252 1580 1581 4 1251 1252 1580 1581 4 1251 1252 1580 1581 4 1251 1252 1580 1581 3 1252 1253 1589 3 1252 1253 1589 3 1252 1253 1589 3 1252 1253 1589 3 1252 1253 1589 3 1252 1253 1589 3 1253 1254 1596 3 1253 1254 1596 3 1253 1254 1596 3 1253 1254 1596 3 1253 1254 1596 3 1253 1254 1596 3 1254 1255 1603 3 1254 1255 1603 3 1254 1255 1603 3 1254 1255 1603 3 1254 1255 1603 3 1254 1255 1603 3 1255 1256 1611 3 1255 1256 1611 3 1255 1256 1611 3 1255 1256 1611 3 1255 1256 1611 3 1255 1256 1611 3 1256 1257 1618 3 1256 1257 1618 3 1256 1257 1618 3 1256 1257 1618 3 1256 1257 1618 3 1256 1257 1618 4 1257 1258 1626 1627 4 1257 1258 1626 1627 4 1257 1258 1626 1627 4 1257 1258 1626 1627 4 1257 1258 1626 1627 4 1257 1258 1626 1627 3 1258 1259 1635 3 1258 1259 1635 3 1258 1259 1635 3 1258 1259 1635 3 1258 1259 1635 3 1258 1259 1635 3 1259 1260 1642 3 1259 1260 1642 3 1259 1260 1642 3 1259 1260 1642 3 1259 1260 1642 3 1259 1260 1642 3 1260 1261 1649 3 1260 1261 1649 3 1260 1261 1649 3 1260 1261 1649 3 1260 1261 1649 3 1260 1261 1649 3 1261 1262 1657 3 1261 1262 1657 3 1261 1262 1657 3 1261 1262 1657 3 1261 1262 1657 3 1261 1262 1657 3 1262 1263 1664 3 1262 1263 1664 3 1262 1263 1664 3 1262 1263 1664 3 1262 1263 1664 3 1262 1263 1664 4 1263 1264 1672 1673 4 1263 1264 1672 1673 4 1263 1264 1672 1673 4 1263 1264 1672 1673 4 1263 1264 1672 1673 4 1263 1264 1672 1673 3 1264 1265 1681 3 1264 1265 1681 3 1264 1265 1681 3 1264 1265 1681 3 1264 1265 1681 3 1264 1265 1681 3 1265 1266 1688 3 1265 1266 1688 3 1265 1266 1688 3 1265 1266 1688 3 1265 1266 1688 3 1265 1266 1688 4 1266 1267 1696 1697 4 1266 1267 1696 1697 4 1266 1267 1696 1697 4 1266 1267 1696 1697 4 1266 1267 1696 1697 4 1266 1267 1696 1697 4 1267 1268 1706 1707 4 1267 1268 1706 1707 4 1267 1268 1706 1707 4 1267 1268 1706 1707 4 1267 1268 1706 1707 4 1267 1268 1706 1707 3 1268 1269 1714 3 1268 1269 1714 3 1268 1269 1714 3 1268 1269 1714 3 1268 1269 1714 3 1268 1269 1714 4 1270 1271 1406 1407 4 1270 1271 1406 1407 4 1270 1271 1406 1407 4 1270 1271 1406 1407 4 1270 1271 1406 1407 4 1270 1271 1406 1407 3 1271 1272 1413 3 1271 1272 1413 3 1271 1272 1413 3 1271 1272 1413 3 1271 1272 1413 3 1271 1272 1413 3 1272 1273 1419 3 1272 1273 1419 3 1272 1273 1419 3 1272 1273 1419 3 1272 1273 1419 3 1272 1273 1419 3 1273 1274 1425 3 1273 1274 1425 3 1273 1274 1425 3 1273 1274 1425 3 1273 1274 1425 3 1273 1274 1425 3 1274 1275 1431 3 1274 1275 1431 3 1274 1275 1431 3 1274 1275 1431 3 1274 1275 1431 3 1274 1275 1431 3 1275 1276 1437 3 1275 1276 1437 3 1275 1276 1437 3 1275 1276 1437 3 1275 1276 1437 3 1275 1276 1437 3 1276 1277 1443 3 1276 1277 1443 3 1276 1277 1443 3 1276 1277 1443 3 1276 1277 1443 3 1276 1277 1443 4 1277 1278 1450 1451 4 1277 1278 1450 1451 4 1277 1278 1450 1451 4 1277 1278 1450 1451 4 1277 1278 1450 1451 4 1277 1278 1450 1451 3 1278 1279 1457 3 1278 1279 1457 3 1278 1279 1457 3 1278 1279 1457 3 1278 1279 1457 3 1278 1279 1457 4 1279 1280 1464 1465 4 1279 1280 1464 1465 4 1279 1280 1464 1465 4 1279 1280 1464 1465 4 1279 1280 1464 1465 4 1279 1280 1464 1465 4 1280 1281 1472 1473 4 1280 1281 1472 1473 4 1280 1281 1472 1473 4 1280 1281 1472 1473 4 1280 1281 1472 1473 4 1280 1281 1472 1473 3 1281 1282 1479 3 1281 1282 1479 3 1281 1282 1479 3 1281 1282 1479 3 1281 1282 1479 3 1281 1282 1479 4 1282 1283 1488 1489 4 1282 1283 1488 1489 4 1282 1283 1488 1489 4 1282 1283 1488 1489 4 1282 1283 1488 1489 4 1282 1283 1488 1489 4 1283 1284 1498 1499 4 1283 1284 1498 1499 4 1283 1284 1498 1499 4 1283 1284 1498 1499 4 1283 1284 1498 1499 4 1283 1284 1498 1499 3 1284 1285 1505 3 1284 1285 1505 3 1284 1285 1505 3 1284 1285 1505 3 1284 1285 1505 3 1284 1285 1505 4 1285 1286 1512 1513 4 1285 1286 1512 1513 4 1285 1286 1512 1513 4 1285 1286 1512 1513 4 1285 1286 1512 1513 4 1285 1286 1512 1513 4 1286 1287 1520 1521 4 1286 1287 1520 1521 4 1286 1287 1520 1521 4 1286 1287 1520 1521 4 1286 1287 1520 1521 4 1286 1287 1520 1521 3 1287 1288 1527 3 1287 1288 1527 3 1287 1288 1527 3 1287 1288 1527 3 1287 1288 1527 3 1287 1288 1527 4 1288 1289 1536 1537 4 1288 1289 1536 1537 4 1288 1289 1536 1537 4 1288 1289 1536 1537 4 1288 1289 1536 1537 4 1288 1289 1536 1537 4 1289 1290 1544 1545 4 1289 1290 1544 1545 4 1289 1290 1544 1545 4 1289 1290 1544 1545 4 1289 1290 1544 1545 4 1289 1290 1544 1545 3 1290 1291 1551 3 1290 1291 1551 3 1290 1291 1551 3 1290 1291 1551 3 1290 1291 1551 3 1290 1291 1551 4 1291 1292 1558 1559 4 1291 1292 1558 1559 4 1291 1292 1558 1559 4 1291 1292 1558 1559 4 1291 1292 1558 1559 4 1291 1292 1558 1559 4 1292 1293 1566 1567 4 1292 1293 1566 1567 4 1292 1293 1566 1567 4 1292 1293 1566 1567 4 1292 1293 1566 1567 4 1292 1293 1566 1567 3 1293 1294 1573 3 1293 1294 1573 3 1293 1294 1573 3 1293 1294 1573 3 1293 1294 1573 3 1293 1294 1573 4 1294 1295 1582 1583 4 1294 1295 1582 1583 4 1294 1295 1582 1583 4 1294 1295 1582 1583 4 1294 1295 1582 1583 4 1294 1295 1582 1583 4 1295 1296 1590 1591 4 1295 1296 1590 1591 4 1295 1296 1590 1591 4 1295 1296 1590 1591 4 1295 1296 1590 1591 4 1295 1296 1590 1591 3 1296 1297 1597 3 1296 1297 1597 3 1296 1297 1597 3 1296 1297 1597 3 1296 1297 1597 3 1296 1297 1597 4 1297 1298 1604 1605 4 1297 1298 1604 1605 4 1297 1298 1604 1605 4 1297 1298 1604 1605 4 1297 1298 1604 1605 4 1297 1298 1604 1605 4 1298 1299 1612 1613 4 1298 1299 1612 1613 4 1298 1299 1612 1613 4 1298 1299 1612 1613 4 1298 1299 1612 1613 4 1298 1299 1612 1613 3 1299 1300 1619 3 1299 1300 1619 3 1299 1300 1619 3 1299 1300 1619 3 1299 1300 1619 3 1299 1300 1619 4 1300 1301 1628 1629 4 1300 1301 1628 1629 4 1300 1301 1628 1629 4 1300 1301 1628 1629 4 1300 1301 1628 1629 4 1300 1301 1628 1629 4 1301 1302 1636 1637 4 1301 1302 1636 1637 4 1301 1302 1636 1637 4 1301 1302 1636 1637 4 1301 1302 1636 1637 4 1301 1302 1636 1637 3 1302 1303 1643 3 1302 1303 1643 3 1302 1303 1643 3 1302 1303 1643 3 1302 1303 1643 3 1302 1303 1643 4 1303 1304 1650 1651 4 1303 1304 1650 1651 4 1303 1304 1650 1651 4 1303 1304 1650 1651 4 1303 1304 1650 1651 4 1303 1304 1650 1651 4 1304 1305 1658 1659 4 1304 1305 1658 1659 4 1304 1305 1658 1659 4 1304 1305 1658 1659 4 1304 1305 1658 1659 4 1304 1305 1658 1659 3 1305 1306 1665 3 1305 1306 1665 3 1305 1306 1665 3 1305 1306 1665 3 1305 1306 1665 3 1305 1306 1665 4 1306 1307 1674 1675 4 1306 1307 1674 1675 4 1306 1307 1674 1675 4 1306 1307 1674 1675 4 1306 1307 1674 1675 4 1306 1307 1674 1675 4 1307 1308 1682 1683 4 1307 1308 1682 1683 4 1307 1308 1682 1683 4 1307 1308 1682 1683 4 1307 1308 1682 1683 4 1307 1308 1682 1683 3 1308 1309 1689 3 1308 1309 1689 3 1308 1309 1689 3 1308 1309 1689 3 1308 1309 1689 3 1308 1309 1689 4 1309 1310 1698 1699 4 1309 1310 1698 1699 4 1309 1310 1698 1699 4 1309 1310 1698 1699 4 1309 1310 1698 1699 4 1309 1310 1698 1699 4 1310 1311 1708 1709 4 1310 1311 1708 1709 4 1310 1311 1708 1709 4 1310 1311 1708 1709 4 1310 1311 1708 1709 4 1310 1311 1708 1709 3 1311 1312 1715 3 1311 1312 1715 3 1311 1312 1715 3 1311 1312 1715 3 1311 1312 1715 3 1311 1312 1715 4 1313 1314 1400 2324 4 1313 1314 1400 2324 4 1313 1314 1400 2324 4 1313 1314 1400 2324 4 1313 1314 1400 2324 4 1313 1314 1400 2324 4 1314 1315 1408 2316 4 1314 1315 1408 2316 4 1314 1315 1408 2316 4 1314 1315 1408 2316 4 1314 1315 1408 2316 4 1314 1315 1408 2316 4 1315 1316 1414 2310 4 1315 1316 1414 2310 4 1315 1316 1414 2310 4 1315 1316 1414 2310 4 1315 1316 1414 2310 4 1315 1316 1414 2310 4 1316 1317 1420 2304 4 1316 1317 1420 2304 4 1316 1317 1420 2304 4 1316 1317 1420 2304 4 1316 1317 1420 2304 4 1316 1317 1420 2304 4 1317 1318 1426 2298 4 1317 1318 1426 2298 4 1317 1318 1426 2298 4 1317 1318 1426 2298 4 1317 1318 1426 2298 4 1317 1318 1426 2298 4 1318 1319 1432 2292 4 1318 1319 1432 2292 4 1318 1319 1432 2292 4 1318 1319 1432 2292 4 1318 1319 1432 2292 4 1318 1319 1432 2292 4 1319 1320 1438 2286 4 1319 1320 1438 2286 4 1319 1320 1438 2286 4 1319 1320 1438 2286 4 1319 1320 1438 2286 4 1319 1320 1438 2286 4 1320 1321 1444 2280 4 1320 1321 1444 2280 4 1320 1321 1444 2280 4 1320 1321 1444 2280 4 1320 1321 1444 2280 4 1320 1321 1444 2280 4 1321 1322 1452 2272 4 1321 1322 1452 2272 4 1321 1322 1452 2272 4 1321 1322 1452 2272 4 1321 1322 1452 2272 4 1321 1322 1452 2272 4 1322 1323 1458 2266 4 1322 1323 1458 2266 4 1322 1323 1458 2266 4 1322 1323 1458 2266 4 1322 1323 1458 2266 4 1322 1323 1458 2266 4 1323 1324 1466 2258 4 1323 1324 1466 2258 4 1323 1324 1466 2258 4 1323 1324 1466 2258 4 1323 1324 1466 2258 4 1323 1324 1466 2258 4 1324 1325 1474 2250 4 1324 1325 1474 2250 4 1324 1325 1474 2250 4 1324 1325 1474 2250 4 1324 1325 1474 2250 4 1324 1325 1474 2250 4 1325 1326 1480 2244 4 1325 1326 1480 2244 4 1325 1326 1480 2244 4 1325 1326 1480 2244 4 1325 1326 1480 2244 4 1325 1326 1480 2244 4 1326 1327 1490 2234 4 1326 1327 1490 2234 4 1326 1327 1490 2234 4 1326 1327 1490 2234 4 1326 1327 1490 2234 4 1326 1327 1490 2234 4 1327 1328 1500 2224 4 1327 1328 1500 2224 4 1327 1328 1500 2224 4 1327 1328 1500 2224 4 1327 1328 1500 2224 4 1327 1328 1500 2224 4 1328 1329 1506 2218 4 1328 1329 1506 2218 4 1328 1329 1506 2218 4 1328 1329 1506 2218 4 1328 1329 1506 2218 4 1328 1329 1506 2218 4 1329 1330 1514 2210 4 1329 1330 1514 2210 4 1329 1330 1514 2210 4 1329 1330 1514 2210 4 1329 1330 1514 2210 4 1329 1330 1514 2210 4 1330 1331 1522 2202 4 1330 1331 1522 2202 4 1330 1331 1522 2202 4 1330 1331 1522 2202 4 1330 1331 1522 2202 4 1330 1331 1522 2202 4 1331 1332 1528 2196 4 1331 1332 1528 2196 4 1331 1332 1528 2196 4 1331 1332 1528 2196 4 1331 1332 1528 2196 4 1331 1332 1528 2196 4 1332 1333 1538 2186 4 1332 1333 1538 2186 4 1332 1333 1538 2186 4 1332 1333 1538 2186 4 1332 1333 1538 2186 4 1332 1333 1538 2186 4 1333 1334 1546 2178 4 1333 1334 1546 2178 4 1333 1334 1546 2178 4 1333 1334 1546 2178 4 1333 1334 1546 2178 4 1333 1334 1546 2178 4 1334 1335 1552 2172 4 1334 1335 1552 2172 4 1334 1335 1552 2172 4 1334 1335 1552 2172 4 1334 1335 1552 2172 4 1334 1335 1552 2172 4 1335 1336 1560 2164 4 1335 1336 1560 2164 4 1335 1336 1560 2164 4 1335 1336 1560 2164 4 1335 1336 1560 2164 4 1335 1336 1560 2164 4 1336 1337 1568 2156 4 1336 1337 1568 2156 4 1336 1337 1568 2156 4 1336 1337 1568 2156 4 1336 1337 1568 2156 4 1336 1337 1568 2156 4 1337 1338 1574 2150 4 1337 1338 1574 2150 4 1337 1338 1574 2150 4 1337 1338 1574 2150 4 1337 1338 1574 2150 4 1337 1338 1574 2150 4 1338 1339 1584 2140 4 1338 1339 1584 2140 4 1338 1339 1584 2140 4 1338 1339 1584 2140 4 1338 1339 1584 2140 4 1338 1339 1584 2140 4 1339 1340 1592 2132 4 1339 1340 1592 2132 4 1339 1340 1592 2132 4 1339 1340 1592 2132 4 1339 1340 1592 2132 4 1339 1340 1592 2132 4 1340 1341 1598 2126 4 1340 1341 1598 2126 4 1340 1341 1598 2126 4 1340 1341 1598 2126 4 1340 1341 1598 2126 4 1340 1341 1598 2126 4 1341 1342 1606 2118 4 1341 1342 1606 2118 4 1341 1342 1606 2118 4 1341 1342 1606 2118 4 1341 1342 1606 2118 4 1341 1342 1606 2118 4 1342 1343 1614 2110 4 1342 1343 1614 2110 4 1342 1343 1614 2110 4 1342 1343 1614 2110 4 1342 1343 1614 2110 4 1342 1343 1614 2110 4 1343 1344 1620 2104 4 1343 1344 1620 2104 4 1343 1344 1620 2104 4 1343 1344 1620 2104 4 1343 1344 1620 2104 4 1343 1344 1620 2104 4 1344 1345 1630 2094 4 1344 1345 1630 2094 4 1344 1345 1630 2094 4 1344 1345 1630 2094 4 1344 1345 1630 2094 4 1344 1345 1630 2094 4 1345 1346 1638 2086 4 1345 1346 1638 2086 4 1345 1346 1638 2086 4 1345 1346 1638 2086 4 1345 1346 1638 2086 4 1345 1346 1638 2086 4 1346 1347 1644 2080 4 1346 1347 1644 2080 4 1346 1347 1644 2080 4 1346 1347 1644 2080 4 1346 1347 1644 2080 4 1346 1347 1644 2080 4 1347 1348 1652 2072 4 1347 1348 1652 2072 4 1347 1348 1652 2072 4 1347 1348 1652 2072 4 1347 1348 1652 2072 4 1347 1348 1652 2072 4 1348 1349 1660 2064 4 1348 1349 1660 2064 4 1348 1349 1660 2064 4 1348 1349 1660 2064 4 1348 1349 1660 2064 4 1348 1349 1660 2064 4 1349 1350 1666 2058 4 1349 1350 1666 2058 4 1349 1350 1666 2058 4 1349 1350 1666 2058 4 1349 1350 1666 2058 4 1349 1350 1666 2058 4 1350 1351 1676 2048 4 1350 1351 1676 2048 4 1350 1351 1676 2048 4 1350 1351 1676 2048 4 1350 1351 1676 2048 4 1350 1351 1676 2048 4 1351 1352 1684 2040 4 1351 1352 1684 2040 4 1351 1352 1684 2040 4 1351 1352 1684 2040 4 1351 1352 1684 2040 4 1351 1352 1684 2040 4 1352 1353 1690 2034 4 1352 1353 1690 2034 4 1352 1353 1690 2034 4 1352 1353 1690 2034 4 1352 1353 1690 2034 4 1352 1353 1690 2034 4 1353 1354 1700 2024 4 1353 1354 1700 2024 4 1353 1354 1700 2024 4 1353 1354 1700 2024 4 1353 1354 1700 2024 4 1353 1354 1700 2024 4 1354 1355 1710 2014 4 1354 1355 1710 2014 4 1354 1355 1710 2014 4 1354 1355 1710 2014 4 1354 1355 1710 2014 4 1354 1355 1710 2014 3 1356 1468 2256 3 1356 1468 2256 3 1356 1468 2256 3 1356 1468 2256 3 1356 1468 2256 3 1356 1468 2256 3 1356 1460 2264 3 1356 1460 2264 3 1356 1460 2264 3 1356 1460 2264 3 1356 1460 2264 3 1356 1460 2264 3 1357 1492 2232 3 1357 1492 2232 3 1357 1492 2232 3 1357 1492 2232 3 1357 1492 2232 3 1357 1492 2232 3 1357 1482 2242 3 1357 1482 2242 3 1357 1482 2242 3 1357 1482 2242 3 1357 1482 2242 3 1357 1482 2242 3 1358 1516 2208 3 1358 1516 2208 3 1358 1516 2208 3 1358 1516 2208 3 1358 1516 2208 3 1358 1516 2208 3 1358 1508 2216 3 1358 1508 2216 3 1358 1508 2216 3 1358 1508 2216 3 1358 1508 2216 3 1358 1508 2216 3 1359 1540 2184 3 1359 1540 2184 3 1359 1540 2184 3 1359 1540 2184 3 1359 1540 2184 3 1359 1540 2184 3 1359 1530 2194 3 1359 1530 2194 3 1359 1530 2194 3 1359 1530 2194 3 1359 1530 2194 3 1359 1530 2194 3 1360 1562 2162 3 1360 1562 2162 3 1360 1562 2162 3 1360 1562 2162 3 1360 1562 2162 3 1360 1562 2162 3 1360 1554 2170 3 1360 1554 2170 3 1360 1554 2170 3 1360 1554 2170 3 1360 1554 2170 3 1360 1554 2170 3 1361 1586 2138 3 1361 1586 2138 3 1361 1586 2138 3 1361 1586 2138 3 1361 1586 2138 3 1361 1586 2138 3 1361 1576 2148 3 1361 1576 2148 3 1361 1576 2148 3 1361 1576 2148 3 1361 1576 2148 3 1361 1576 2148 3 1362 1608 2116 3 1362 1608 2116 3 1362 1608 2116 3 1362 1608 2116 3 1362 1608 2116 3 1362 1608 2116 3 1362 1600 2124 3 1362 1600 2124 3 1362 1600 2124 3 1362 1600 2124 3 1362 1600 2124 3 1362 1600 2124 3 1363 1632 2092 3 1363 1632 2092 3 1363 1632 2092 3 1363 1632 2092 3 1363 1632 2092 3 1363 1632 2092 3 1363 1622 2102 3 1363 1622 2102 3 1363 1622 2102 3 1363 1622 2102 3 1363 1622 2102 3 1363 1622 2102 3 1364 1654 2070 3 1364 1654 2070 3 1364 1654 2070 3 1364 1654 2070 3 1364 1654 2070 3 1364 1654 2070 3 1364 1646 2078 3 1364 1646 2078 3 1364 1646 2078 3 1364 1646 2078 3 1364 1646 2078 3 1364 1646 2078 3 1365 1678 2046 3 1365 1678 2046 3 1365 1678 2046 3 1365 1678 2046 3 1365 1678 2046 3 1365 1678 2046 3 1365 1668 2056 3 1365 1668 2056 3 1365 1668 2056 3 1365 1668 2056 3 1365 1668 2056 3 1365 1668 2056 3 1366 1702 2022 3 1366 1702 2022 3 1366 1702 2022 3 1366 1702 2022 3 1366 1702 2022 3 1366 1702 2022 3 1366 1692 2032 3 1366 1692 2032 3 1366 1692 2032 3 1366 1692 2032 3 1366 1692 2032 3 1366 1692 2032 1 1367 1 1367 1 1367 1 1367 1 1367 1 1367 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 2 1367 1378 1 1367 1 1367 1 1367 1 1367 1 1367 1 1367 3 1368 1494 2230 3 1368 1494 2230 3 1368 1494 2230 3 1368 1494 2230 3 1368 1494 2230 3 1368 1494 2230 3 1368 1484 2240 3 1368 1484 2240 3 1368 1484 2240 3 1368 1484 2240 3 1368 1484 2240 3 1368 1484 2240 1 1369 1 1369 1 1369 1 1369 1 1369 1 1369 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 2 1369 1380 1 1369 1 1369 1 1369 1 1369 1 1369 1 1369 1 1370 1 1370 1 1370 1 1370 1 1370 1 1370 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 6 1370 1381 1532 1534 2190 2192 6 1370 1381 1532 1534 2190 2192 6 1370 1381 1532 1534 2190 2192 6 1370 1381 1532 1534 2190 2192 6 1370 1381 1532 1534 2190 2192 6 1370 1381 1532 1534 2190 2192 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 2 1370 1381 3 1370 1532 2192 3 1370 1532 2192 3 1370 1532 2192 3 1370 1532 2192 3 1370 1532 2192 3 1370 1532 2192 1 1371 1 1371 1 1371 1 1371 1 1371 1 1371 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 2 1371 1382 1 1371 1 1371 1 1371 1 1371 1 1371 1 1371 1 1372 1 1372 1 1372 1 1372 1 1372 1 1372 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 6 1372 1383 1578 1580 2144 2146 6 1372 1383 1578 1580 2144 2146 6 1372 1383 1578 1580 2144 2146 6 1372 1383 1578 1580 2144 2146 6 1372 1383 1578 1580 2144 2146 6 1372 1383 1578 1580 2144 2146 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 2 1372 1383 3 1372 1578 2146 3 1372 1578 2146 3 1372 1578 2146 3 1372 1578 2146 3 1372 1578 2146 3 1372 1578 2146 1 1373 1 1373 1 1373 1 1373 1 1373 1 1373 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 2 1373 1384 1 1373 1 1373 1 1373 1 1373 1 1373 1 1373 1 1374 1 1374 1 1374 1 1374 1 1374 1 1374 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 6 1374 1385 1624 1626 2098 2100 6 1374 1385 1624 1626 2098 2100 6 1374 1385 1624 1626 2098 2100 6 1374 1385 1624 1626 2098 2100 6 1374 1385 1624 1626 2098 2100 6 1374 1385 1624 1626 2098 2100 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 2 1374 1385 3 1374 1624 2100 3 1374 1624 2100 3 1374 1624 2100 3 1374 1624 2100 3 1374 1624 2100 3 1374 1624 2100 1 1375 1 1375 1 1375 1 1375 1 1375 1 1375 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 2 1375 1386 1 1375 1 1375 1 1375 1 1375 1 1375 1 1375 1 1376 1 1376 1 1376 1 1376 1 1376 1 1376 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 6 1376 1387 1670 1672 2052 2054 6 1376 1387 1670 1672 2052 2054 6 1376 1387 1670 1672 2052 2054 6 1376 1387 1670 1672 2052 2054 6 1376 1387 1670 1672 2052 2054 6 1376 1387 1670 1672 2052 2054 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 2 1376 1387 3 1376 1670 2054 3 1376 1670 2054 3 1376 1670 2054 3 1376 1670 2054 3 1376 1670 2054 3 1376 1670 2054 3 1377 1704 2020 3 1377 1704 2020 3 1377 1704 2020 3 1377 1704 2020 3 1377 1704 2020 3 1377 1704 2020 3 1377 1694 2030 3 1377 1694 2030 3 1377 1694 2030 3 1377 1694 2030 3 1377 1694 2030 3 1377 1694 2030 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 1 1378 3 1379 1496 2228 3 1379 1496 2228 3 1379 1496 2228 3 1379 1496 2228 3 1379 1496 2228 3 1379 1496 2228 3 1379 1486 2238 3 1379 1486 2238 3 1379 1486 2238 3 1379 1486 2238 3 1379 1486 2238 3 1379 1486 2238 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1380 1 1381 1 1381 1 1381 1 1381 1 1381 1 1381 3 1381 1534 2190 3 1381 1534 2190 3 1381 1534 2190 3 1381 1534 2190 3 1381 1534 2190 3 1381 1534 2190 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1382 1 1383 1 1383 1 1383 1 1383 1 1383 1 1383 3 1383 1580 2144 3 1383 1580 2144 3 1383 1580 2144 3 1383 1580 2144 3 1383 1580 2144 3 1383 1580 2144 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1384 1 1385 1 1385 1 1385 1 1385 1 1385 1 1385 3 1385 1626 2098 3 1385 1626 2098 3 1385 1626 2098 3 1385 1626 2098 3 1385 1626 2098 3 1385 1626 2098 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1386 1 1387 1 1387 1 1387 1 1387 1 1387 1 1387 3 1387 1672 2052 3 1387 1672 2052 3 1387 1672 2052 3 1387 1672 2052 3 1387 1672 2052 3 1387 1672 2052 3 1388 1706 2018 3 1388 1706 2018 3 1388 1706 2018 3 1388 1706 2018 3 1388 1706 2018 3 1388 1706 2018 3 1388 1696 2028 3 1388 1696 2028 3 1388 1696 2028 3 1388 1696 2028 3 1388 1696 2028 3 1388 1696 2028 3 1389 1472 2252 3 1389 1472 2252 3 1389 1472 2252 3 1389 1472 2252 3 1389 1472 2252 3 1389 1472 2252 3 1389 1464 2260 3 1389 1464 2260 3 1389 1464 2260 3 1389 1464 2260 3 1389 1464 2260 3 1389 1464 2260 3 1390 1498 2226 3 1390 1498 2226 3 1390 1498 2226 3 1390 1498 2226 3 1390 1498 2226 3 1390 1498 2226 3 1390 1488 2236 3 1390 1488 2236 3 1390 1488 2236 3 1390 1488 2236 3 1390 1488 2236 3 1390 1488 2236 3 1391 1520 2204 3 1391 1520 2204 3 1391 1520 2204 3 1391 1520 2204 3 1391 1520 2204 3 1391 1520 2204 3 1391 1512 2212 3 1391 1512 2212 3 1391 1512 2212 3 1391 1512 2212 3 1391 1512 2212 3 1391 1512 2212 3 1392 1544 2180 3 1392 1544 2180 3 1392 1544 2180 3 1392 1544 2180 3 1392 1544 2180 3 1392 1544 2180 3 1392 1536 2188 3 1392 1536 2188 3 1392 1536 2188 3 1392 1536 2188 3 1392 1536 2188 3 1392 1536 2188 3 1393 1566 2158 3 1393 1566 2158 3 1393 1566 2158 3 1393 1566 2158 3 1393 1566 2158 3 1393 1566 2158 3 1393 1558 2166 3 1393 1558 2166 3 1393 1558 2166 3 1393 1558 2166 3 1393 1558 2166 3 1393 1558 2166 3 1394 1590 2134 3 1394 1590 2134 3 1394 1590 2134 3 1394 1590 2134 3 1394 1590 2134 3 1394 1590 2134 3 1394 1582 2142 3 1394 1582 2142 3 1394 1582 2142 3 1394 1582 2142 3 1394 1582 2142 3 1394 1582 2142 3 1395 1612 2112 3 1395 1612 2112 3 1395 1612 2112 3 1395 1612 2112 3 1395 1612 2112 3 1395 1612 2112 3 1395 1604 2120 3 1395 1604 2120 3 1395 1604 2120 3 1395 1604 2120 3 1395 1604 2120 3 1395 1604 2120 3 1396 1636 2088 3 1396 1636 2088 3 1396 1636 2088 3 1396 1636 2088 3 1396 1636 2088 3 1396 1636 2088 3 1396 1628 2096 3 1396 1628 2096 3 1396 1628 2096 3 1396 1628 2096 3 1396 1628 2096 3 1396 1628 2096 3 1397 1658 2066 3 1397 1658 2066 3 1397 1658 2066 3 1397 1658 2066 3 1397 1658 2066 3 1397 1658 2066 3 1397 1650 2074 3 1397 1650 2074 3 1397 1650 2074 3 1397 1650 2074 3 1397 1650 2074 3 1397 1650 2074 3 1398 1682 2042 3 1398 1682 2042 3 1398 1682 2042 3 1398 1682 2042 3 1398 1682 2042 3 1398 1682 2042 3 1398 1674 2050 3 1398 1674 2050 3 1398 1674 2050 3 1398 1674 2050 3 1398 1674 2050 3 1398 1674 2050 3 1399 1708 2016 3 1399 1708 2016 3 1399 1708 2016 3 1399 1708 2016 3 1399 1708 2016 3 1399 1708 2016 3 1399 1698 2026 3 1399 1698 2026 3 1399 1698 2026 3 1399 1698 2026 3 1399 1698 2026 3 1399 1698 2026 2 1402 2322 2 1402 2322 2 1402 2322 2 1402 2322 2 1402 2322 2 1402 2322 2 1406 2318 2 1406 2318 2 1406 2318 2 1406 2318 2 1406 2318 2 1406 2318 4 1446 1851 1884 2278 4 1446 1851 1884 2278 4 1446 1851 1884 2278 4 1446 1851 1884 2278 4 1446 1851 1884 2278 4 1446 1851 1884 2278 2 1446 1851 2 1446 1851 2 1446 1851 2 1446 1851 2 1446 1851 2 1446 1851 2 1446 2278 2 1446 2278 2 1446 2278 2 1446 2278 2 1446 2278 2 1446 2278 4 1450 1861 1874 2274 4 1450 1861 1874 2274 4 1450 1861 1874 2274 4 1450 1861 1874 2274 4 1450 1861 1874 2274 4 1450 1861 1874 2274 2 1450 1861 2 1450 1861 2 1450 1861 2 1450 1861 2 1450 1861 2 1450 1861 6 1450 1760 1866 1869 1964 2274 6 1450 1760 1866 1869 1964 2274 6 1450 1760 1866 1869 1964 2274 6 1450 1760 1866 1869 1964 2274 6 1450 1760 1866 1869 1964 2274 6 1450 1760 1866 1869 1964 2274 3 1450 1760 1866 3 1450 1760 1866 3 1450 1760 1866 3 1450 1760 1866 3 1450 1760 1866 3 1450 1760 1866 2 1450 2274 2 1450 2274 2 1450 2274 2 1450 2274 2 1450 2274 2 1450 2274 2 1532 1534 2 1532 1534 2 1532 1534 2 1532 1534 2 1532 1534 2 1532 1534 2 1578 1580 2 1578 1580 2 1578 1580 2 1578 1580 2 1578 1580 2 1578 1580 2 1624 1626 2 1624 1626 2 1624 1626 2 1624 1626 2 1624 1626 2 1624 1626 2 1670 1672 2 1670 1672 2 1670 1672 2 1670 1672 2 1670 1672 2 1670 1672 3 1716 1717 1759 3 1716 1717 1759 3 1716 1717 1759 3 1716 1717 1759 3 1716 1717 1759 3 1716 1717 1759 2 1717 1718 2 1717 1718 2 1717 1718 2 1717 1718 2 1717 1718 2 1717 1718 2 1718 1719 2 1718 1719 2 1718 1719 2 1718 1719 2 1718 1719 2 1718 1719 2 1719 1720 2 1719 1720 2 1719 1720 2 1719 1720 2 1719 1720 2 1719 1720 2 1720 1721 2 1720 1721 2 1720 1721 2 1720 1721 2 1720 1721 2 1720 1721 2 1721 1722 2 1721 1722 2 1721 1722 2 1721 1722 2 1721 1722 2 1721 1722 2 1722 1723 2 1722 1723 2 1722 1723 2 1722 1723 2 1722 1723 2 1722 1723 3 1723 1724 1760 3 1723 1724 1760 3 1723 1724 1760 3 1723 1724 1760 3 1723 1724 1760 3 1723 1724 1760 2 1724 1725 2 1724 1725 2 1724 1725 2 1724 1725 2 1724 1725 2 1724 1725 3 1725 1726 1761 3 1725 1726 1761 3 1725 1726 1761 3 1725 1726 1761 3 1725 1726 1761 3 1725 1726 1761 3 1726 1727 1762 3 1726 1727 1762 3 1726 1727 1762 3 1726 1727 1762 3 1726 1727 1762 3 1726 1727 1762 2 1727 1728 2 1727 1728 2 1727 1728 2 1727 1728 2 1727 1728 2 1727 1728 3 1728 1729 1763 3 1728 1729 1763 3 1728 1729 1763 3 1728 1729 1763 3 1728 1729 1763 3 1728 1729 1763 3 1729 1730 1764 3 1729 1730 1764 3 1729 1730 1764 3 1729 1730 1764 3 1729 1730 1764 3 1729 1730 1764 2 1730 1731 2 1730 1731 2 1730 1731 2 1730 1731 2 1730 1731 2 1730 1731 3 1731 1732 1765 3 1731 1732 1765 3 1731 1732 1765 3 1731 1732 1765 3 1731 1732 1765 3 1731 1732 1765 3 1732 1733 1766 3 1732 1733 1766 3 1732 1733 1766 3 1732 1733 1766 3 1732 1733 1766 3 1732 1733 1766 2 1733 1734 2 1733 1734 2 1733 1734 2 1733 1734 2 1733 1734 2 1733 1734 3 1734 1735 1767 3 1734 1735 1767 3 1734 1735 1767 3 1734 1735 1767 3 1734 1735 1767 3 1734 1735 1767 3 1735 1736 1768 3 1735 1736 1768 3 1735 1736 1768 3 1735 1736 1768 3 1735 1736 1768 3 1735 1736 1768 2 1736 1737 2 1736 1737 2 1736 1737 2 1736 1737 2 1736 1737 2 1736 1737 3 1737 1738 1769 3 1737 1738 1769 3 1737 1738 1769 3 1737 1738 1769 3 1737 1738 1769 3 1737 1738 1769 3 1738 1739 1770 3 1738 1739 1770 3 1738 1739 1770 3 1738 1739 1770 3 1738 1739 1770 3 1738 1739 1770 2 1739 1740 2 1739 1740 2 1739 1740 2 1739 1740 2 1739 1740 2 1739 1740 3 1740 1741 1771 3 1740 1741 1771 3 1740 1741 1771 3 1740 1741 1771 3 1740 1741 1771 3 1740 1741 1771 3 1741 1742 1772 3 1741 1742 1772 3 1741 1742 1772 3 1741 1742 1772 3 1741 1742 1772 3 1741 1742 1772 2 1742 1743 2 1742 1743 2 1742 1743 2 1742 1743 2 1742 1743 2 1742 1743 3 1743 1744 1773 3 1743 1744 1773 3 1743 1744 1773 3 1743 1744 1773 3 1743 1744 1773 3 1743 1744 1773 3 1744 1745 1774 3 1744 1745 1774 3 1744 1745 1774 3 1744 1745 1774 3 1744 1745 1774 3 1744 1745 1774 2 1745 1746 2 1745 1746 2 1745 1746 2 1745 1746 2 1745 1746 2 1745 1746 3 1746 1747 1775 3 1746 1747 1775 3 1746 1747 1775 3 1746 1747 1775 3 1746 1747 1775 3 1746 1747 1775 3 1747 1748 1776 3 1747 1748 1776 3 1747 1748 1776 3 1747 1748 1776 3 1747 1748 1776 3 1747 1748 1776 2 1748 1749 2 1748 1749 2 1748 1749 2 1748 1749 2 1748 1749 2 1748 1749 3 1749 1750 1777 3 1749 1750 1777 3 1749 1750 1777 3 1749 1750 1777 3 1749 1750 1777 3 1749 1750 1777 3 1750 1751 1778 3 1750 1751 1778 3 1750 1751 1778 3 1750 1751 1778 3 1750 1751 1778 3 1750 1751 1778 2 1751 1752 2 1751 1752 2 1751 1752 2 1751 1752 2 1751 1752 2 1751 1752 3 1752 1753 1779 3 1752 1753 1779 3 1752 1753 1779 3 1752 1753 1779 3 1752 1753 1779 3 1752 1753 1779 3 1753 1754 1780 3 1753 1754 1780 3 1753 1754 1780 3 1753 1754 1780 3 1753 1754 1780 3 1753 1754 1780 2 1754 1755 2 1754 1755 2 1754 1755 2 1754 1755 2 1754 1755 2 1754 1755 3 1755 1756 1781 3 1755 1756 1781 3 1755 1756 1781 3 1755 1756 1781 3 1755 1756 1781 3 1755 1756 1781 3 1756 1757 1782 3 1756 1757 1782 3 1756 1757 1782 3 1756 1757 1782 3 1756 1757 1782 3 1756 1757 1782 2 1757 1758 2 1757 1758 2 1757 1758 2 1757 1758 2 1757 1758 2 1757 1758 2 1758 1783 2 1758 1783 2 1758 1783 2 1758 1783 2 1758 1783 2 1758 1783 2 1759 1965 2 1759 1965 2 1759 1965 2 1759 1965 2 1759 1965 2 1759 1965 2 1760 1964 2 1760 1964 2 1760 1964 2 1760 1964 2 1760 1964 2 1760 1964 2 1761 1963 2 1761 1963 2 1761 1963 2 1761 1963 2 1761 1963 2 1761 1963 2 1762 1962 2 1762 1962 2 1762 1962 2 1762 1962 2 1762 1962 2 1762 1962 2 1763 1961 2 1763 1961 2 1763 1961 2 1763 1961 2 1763 1961 2 1763 1961 2 1764 1960 2 1764 1960 2 1764 1960 2 1764 1960 2 1764 1960 2 1764 1960 2 1765 1959 2 1765 1959 2 1765 1959 2 1765 1959 2 1765 1959 2 1765 1959 2 1766 1958 2 1766 1958 2 1766 1958 2 1766 1958 2 1766 1958 2 1766 1958 2 1767 1957 2 1767 1957 2 1767 1957 2 1767 1957 2 1767 1957 2 1767 1957 2 1768 1956 2 1768 1956 2 1768 1956 2 1768 1956 2 1768 1956 2 1768 1956 2 1769 1955 2 1769 1955 2 1769 1955 2 1769 1955 2 1769 1955 2 1769 1955 2 1770 1954 2 1770 1954 2 1770 1954 2 1770 1954 2 1770 1954 2 1770 1954 2 1771 1953 2 1771 1953 2 1771 1953 2 1771 1953 2 1771 1953 2 1771 1953 2 1772 1952 2 1772 1952 2 1772 1952 2 1772 1952 2 1772 1952 2 1772 1952 2 1773 1951 2 1773 1951 2 1773 1951 2 1773 1951 2 1773 1951 2 1773 1951 2 1774 1950 2 1774 1950 2 1774 1950 2 1774 1950 2 1774 1950 2 1774 1950 2 1775 1949 2 1775 1949 2 1775 1949 2 1775 1949 2 1775 1949 2 1775 1949 2 1776 1948 2 1776 1948 2 1776 1948 2 1776 1948 2 1776 1948 2 1776 1948 2 1777 1947 2 1777 1947 2 1777 1947 2 1777 1947 2 1777 1947 2 1777 1947 2 1778 1946 2 1778 1946 2 1778 1946 2 1778 1946 2 1778 1946 2 1778 1946 2 1779 1945 2 1779 1945 2 1779 1945 2 1779 1945 2 1779 1945 2 1779 1945 2 1780 1944 2 1780 1944 2 1780 1944 2 1780 1944 2 1780 1944 2 1780 1944 2 1781 1943 2 1781 1943 2 1781 1943 2 1781 1943 2 1781 1943 2 1781 1943 2 1782 1942 2 1782 1942 2 1782 1942 2 1782 1942 2 1782 1942 2 1782 1942 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 1 1783 1 1783 1 1783 1 1783 1 1783 1 1783 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 2 1783 1941 8 1784 1791 1800 1823 1825 1924 1933 1940 8 1784 1791 1800 1823 1825 1924 1933 1940 8 1784 1791 1800 1823 1825 1924 1933 1940 4 1784 1823 1825 1940 4 1784 1823 1825 1940 4 1784 1823 1825 1940 12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 12 1784 1786 1808 1810 1823 1824 1825 1826 1914 1916 1938 1940 4 1784 1786 1808 1810 4 1784 1786 1808 1810 4 1784 1786 1808 1810 4 1784 1786 1808 1810 4 1784 1786 1808 1810 4 1784 1786 1808 1810 12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 12 1784 1785 1786 1787 1808 1809 1810 1811 1834 1835 1836 1837 8 1784 1785 1791 1797 1800 1802 1834 1836 8 1784 1785 1791 1797 1800 1802 1834 1836 8 1784 1785 1791 1797 1800 1802 1834 1836 4 1784 1785 1834 1836 4 1784 1785 1834 1836 4 1784 1785 1834 1836 3 1784 1791 1800 3 1784 1791 1800 3 1784 1791 1800 3 1784 1791 1800 3 1784 1791 1800 3 1784 1791 1800 4 1785 1787 1809 1811 4 1785 1787 1809 1811 4 1785 1787 1809 1811 4 1785 1787 1809 1811 4 1785 1787 1809 1811 4 1785 1787 1809 1811 7 1785 1787 1809 1811 1845 1846 1847 7 1785 1787 1809 1811 1845 1846 1847 7 1785 1787 1809 1811 1845 1846 1847 5 1785 1797 1802 1845 1847 5 1785 1797 1802 1845 1847 5 1785 1797 1802 1845 1847 3 1785 1845 1847 3 1785 1845 1847 3 1785 1845 1847 3 1785 1797 1802 3 1785 1797 1802 3 1785 1797 1802 3 1785 1797 1802 3 1785 1797 1802 3 1785 1797 1802 4 1786 1824 1826 1938 4 1786 1824 1826 1938 4 1786 1824 1826 1938 8 1786 1816 1818 1824 1826 1906 1908 1938 8 1786 1816 1818 1824 1826 1906 1908 1938 8 1786 1816 1818 1824 1826 1906 1908 1938 3 1786 1816 1818 3 1786 1816 1818 3 1786 1816 1818 3 1786 1816 1818 3 1786 1816 1818 3 1786 1816 1818 7 1786 1787 1816 1817 1818 1835 1837 7 1786 1787 1816 1817 1818 1835 1837 7 1786 1787 1816 1817 1818 1835 1837 4 1786 1787 1835 1837 4 1786 1787 1835 1837 4 1786 1787 1835 1837 2 1787 1817 2 1787 1817 2 1787 1817 2 1787 1817 2 1787 1817 2 1787 1817 3 1787 1817 1846 3 1787 1817 1846 3 1787 1817 1846 3 1787 1817 1846 3 1787 1817 1846 3 1787 1817 1846 2 1787 1846 2 1787 1846 2 1787 1846 2 1787 1846 2 1787 1846 2 1787 1846 8 1788 1791 1803 1825 1827 1921 1933 1936 8 1788 1791 1803 1825 1827 1921 1933 1936 8 1788 1791 1803 1825 1827 1921 1933 1936 4 1788 1825 1827 1936 4 1788 1825 1827 1936 4 1788 1825 1827 1936 12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 12 1788 1790 1810 1812 1825 1826 1827 1828 1912 1914 1934 1936 4 1788 1790 1810 1812 4 1788 1790 1810 1812 4 1788 1790 1810 1812 4 1788 1790 1810 1812 4 1788 1790 1810 1812 4 1788 1790 1810 1812 10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 10 1788 1789 1790 1810 1811 1812 1836 1837 1838 1839 7 1788 1789 1791 1802 1803 1836 1838 7 1788 1789 1791 1802 1803 1836 1838 7 1788 1789 1791 1802 1803 1836 1838 4 1788 1789 1836 1838 4 1788 1789 1836 1838 4 1788 1789 1836 1838 3 1788 1791 1803 3 1788 1791 1803 3 1788 1791 1803 3 1788 1791 1803 3 1788 1791 1803 3 1788 1791 1803 2 1789 1811 2 1789 1811 2 1789 1811 2 1789 1811 2 1789 1811 2 1789 1811 3 1789 1811 1847 3 1789 1811 1847 3 1789 1811 1847 3 1789 1802 1847 3 1789 1802 1847 3 1789 1802 1847 2 1789 1847 2 1789 1847 2 1789 1847 2 1789 1802 2 1789 1802 2 1789 1802 2 1789 1802 2 1789 1802 2 1789 1802 4 1790 1826 1828 1934 4 1790 1826 1828 1934 4 1790 1826 1828 1934 8 1790 1818 1819 1826 1828 1905 1906 1934 8 1790 1818 1819 1826 1828 1905 1906 1934 8 1790 1818 1819 1826 1828 1905 1906 1934 3 1790 1818 1819 3 1790 1818 1819 3 1790 1818 1819 3 1790 1818 1819 3 1790 1818 1819 3 1790 1818 1819 5 1790 1818 1819 1837 1839 5 1790 1818 1819 1837 1839 5 1790 1818 1819 1837 1839 3 1790 1837 1839 3 1790 1837 1839 3 1790 1837 1839 3 1791 1802 1836 3 1791 1802 1836 3 1791 1802 1836 3 1791 1825 1933 3 1791 1825 1933 3 1791 1825 1933 8 1792 1803 1804 1827 1829 1920 1921 1932 8 1792 1803 1804 1827 1829 1920 1921 1932 8 1792 1803 1804 1827 1829 1920 1921 1932 4 1792 1827 1829 1932 4 1792 1827 1829 1932 4 1792 1827 1829 1932 12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 12 1792 1793 1812 1813 1827 1828 1829 1830 1911 1912 1931 1932 4 1792 1793 1812 1813 4 1792 1793 1812 1813 4 1792 1793 1812 1813 4 1792 1793 1812 1813 4 1792 1793 1812 1813 4 1792 1793 1812 1813 8 1792 1793 1812 1813 1838 1839 1840 1841 8 1792 1793 1812 1813 1838 1839 1840 1841 8 1792 1793 1812 1813 1838 1839 1840 1841 5 1792 1803 1804 1838 1840 5 1792 1803 1804 1838 1840 5 1792 1803 1804 1838 1840 3 1792 1838 1840 3 1792 1838 1840 3 1792 1838 1840 3 1792 1803 1804 3 1792 1803 1804 3 1792 1803 1804 3 1792 1803 1804 3 1792 1803 1804 3 1792 1803 1804 4 1793 1828 1830 1931 4 1793 1828 1830 1931 4 1793 1828 1830 1931 8 1793 1819 1820 1828 1830 1904 1905 1931 8 1793 1819 1820 1828 1830 1904 1905 1931 8 1793 1819 1820 1828 1830 1904 1905 1931 3 1793 1819 1820 3 1793 1819 1820 3 1793 1819 1820 3 1793 1819 1820 3 1793 1819 1820 3 1793 1819 1820 5 1793 1819 1820 1839 1841 5 1793 1819 1820 1839 1841 5 1793 1819 1820 1839 1841 3 1793 1839 1841 3 1793 1839 1841 3 1793 1839 1841 8 1794 1804 1805 1829 1831 1919 1920 1930 8 1794 1804 1805 1829 1831 1919 1920 1930 8 1794 1804 1805 1829 1831 1919 1920 1930 4 1794 1829 1831 1930 4 1794 1829 1831 1930 4 1794 1829 1831 1930 12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 12 1794 1795 1813 1814 1829 1830 1831 1832 1910 1911 1929 1930 4 1794 1795 1813 1814 4 1794 1795 1813 1814 4 1794 1795 1813 1814 4 1794 1795 1813 1814 4 1794 1795 1813 1814 4 1794 1795 1813 1814 9 1794 1795 1806 1813 1814 1840 1841 1842 1843 9 1794 1795 1806 1813 1814 1840 1841 1842 1843 9 1794 1795 1806 1813 1814 1840 1841 1842 1843 5 1794 1804 1805 1840 1842 5 1794 1804 1805 1840 1842 5 1794 1804 1805 1840 1842 3 1794 1840 1842 3 1794 1840 1842 3 1794 1840 1842 3 1794 1804 1805 3 1794 1804 1805 3 1794 1804 1805 3 1794 1804 1805 3 1794 1804 1805 3 1794 1804 1805 4 1795 1830 1832 1929 4 1795 1830 1832 1929 4 1795 1830 1832 1929 8 1795 1820 1821 1830 1832 1903 1904 1929 8 1795 1820 1821 1830 1832 1903 1904 1929 8 1795 1820 1821 1830 1832 1903 1904 1929 3 1795 1820 1821 3 1795 1820 1821 3 1795 1820 1821 3 1795 1820 1821 3 1795 1820 1821 3 1795 1820 1821 6 1795 1807 1820 1821 1841 1843 6 1795 1807 1820 1821 1841 1843 6 1795 1807 1820 1821 1841 1843 3 1795 1841 1843 3 1795 1841 1843 3 1795 1841 1843 5 1796 1805 1831 1919 1928 5 1796 1805 1831 1919 1928 5 1796 1805 1831 1919 1928 3 1796 1831 1928 3 1796 1831 1928 3 1796 1831 1928 11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 11 1796 1798 1814 1815 1831 1832 1833 1909 1910 1926 1928 4 1796 1798 1814 1815 4 1796 1798 1814 1815 4 1796 1798 1814 1815 4 1796 1798 1814 1815 4 1796 1798 1814 1815 4 1796 1798 1814 1815 9 1796 1798 1799 1806 1814 1815 1842 1843 1844 9 1796 1798 1799 1806 1814 1815 1842 1843 1844 9 1796 1798 1799 1806 1814 1815 1842 1843 1844 3 1796 1805 1842 3 1796 1805 1842 3 1796 1805 1842 2 1796 1842 2 1796 1842 2 1796 1842 2 1796 1805 2 1796 1805 2 1796 1805 2 1796 1805 2 1796 1805 2 1796 1805 2 1797 1845 2 1797 1845 2 1797 1845 2 1797 1845 2 1797 1845 2 1797 1845 3 1797 1800 1834 3 1797 1800 1834 3 1797 1800 1834 3 1797 1800 1834 3 1797 1800 1834 3 1797 1800 1834 4 1798 1832 1833 1926 4 1798 1832 1833 1926 4 1798 1832 1833 1926 8 1798 1821 1822 1832 1833 1902 1903 1926 8 1798 1821 1822 1832 1833 1902 1903 1926 8 1798 1821 1822 1832 1833 1902 1903 1926 3 1798 1821 1822 3 1798 1821 1822 3 1798 1821 1822 3 1798 1821 1822 3 1798 1821 1822 3 1798 1821 1822 7 1798 1799 1807 1821 1822 1843 1844 7 1798 1799 1807 1821 1822 1843 1844 7 1798 1799 1807 1821 1822 1843 1844 4 1798 1799 1843 1844 4 1798 1799 1843 1844 4 1798 1799 1843 1844 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1807 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 1 1799 1 1799 1 1799 1 1799 1 1799 1 1799 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 2 1799 1806 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 1 1800 1 1800 1 1800 1 1800 1 1800 1 1800 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 3 1800 1823 1924 5 1801 1815 1833 1909 1923 5 1801 1815 1833 1909 1923 5 1801 1815 1833 1909 1923 3 1801 1833 1923 3 1801 1833 1923 3 1801 1833 1923 5 1801 1822 1833 1902 1923 5 1801 1822 1833 1902 1923 5 1801 1822 1833 1902 1923 2 1801 1822 2 1801 1822 2 1801 1822 2 1801 1822 2 1801 1822 2 1801 1822 3 1801 1822 1844 3 1801 1822 1844 3 1801 1822 1844 3 1801 1815 1844 3 1801 1815 1844 3 1801 1815 1844 2 1801 1844 2 1801 1844 2 1801 1844 2 1801 1815 2 1801 1815 2 1801 1815 2 1801 1815 2 1801 1815 2 1801 1815 2 1802 1847 2 1802 1847 2 1802 1847 2 1803 1838 2 1803 1838 2 1803 1838 3 1803 1827 1921 3 1803 1827 1921 3 1803 1827 1921 2 1804 1840 2 1804 1840 2 1804 1840 3 1804 1829 1920 3 1804 1829 1920 3 1804 1829 1920 2 1805 1842 2 1805 1842 2 1805 1842 3 1805 1831 1919 3 1805 1831 1919 3 1805 1831 1919 1 1806 1 1806 1 1806 1 1806 1 1806 1 1806 4 1806 1814 1842 1843 4 1806 1814 1842 1843 4 1806 1814 1842 1843 1 1807 1 1807 1 1807 1 1807 1 1807 1 1807 3 1807 1821 1843 3 1807 1821 1843 3 1807 1821 1843 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 1 1808 1 1808 1 1808 1 1808 1 1808 1 1808 4 1808 1809 1834 1835 4 1808 1809 1834 1835 4 1808 1809 1834 1835 4 1808 1809 1834 1835 4 1808 1809 1834 1835 4 1808 1809 1834 1835 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 4 1808 1823 1824 1916 3 1809 1845 1846 3 1809 1845 1846 3 1809 1845 1846 3 1809 1845 1846 3 1809 1845 1846 3 1809 1845 1846 4 1810 1811 1836 1837 4 1810 1811 1836 1837 4 1810 1811 1836 1837 4 1810 1825 1826 1914 4 1810 1825 1826 1914 4 1810 1825 1826 1914 2 1811 1847 2 1811 1847 2 1811 1847 3 1812 1838 1839 3 1812 1838 1839 3 1812 1838 1839 4 1812 1827 1828 1912 4 1812 1827 1828 1912 4 1812 1827 1828 1912 3 1813 1840 1841 3 1813 1840 1841 3 1813 1840 1841 4 1813 1829 1830 1911 4 1813 1829 1830 1911 4 1813 1829 1830 1911 4 1814 1831 1832 1910 4 1814 1831 1832 1910 4 1814 1831 1832 1910 2 1815 1844 2 1815 1844 2 1815 1844 3 1815 1833 1909 3 1815 1833 1909 3 1815 1833 1909 5 1816 1824 1866 1869 1908 5 1816 1824 1866 1869 1908 5 1816 1824 1866 1869 1908 5 1816 1824 1866 1869 1908 5 1816 1824 1866 1869 1908 5 1816 1824 1866 1869 1908 1 1816 1 1816 1 1816 1 1816 1 1816 1 1816 3 1816 1817 1835 3 1816 1817 1835 3 1816 1817 1835 3 1816 1817 1835 3 1816 1817 1835 3 1816 1817 1835 3 1816 1824 1908 3 1816 1824 1908 3 1816 1824 1908 3 1816 1824 1908 3 1816 1824 1908 3 1816 1824 1908 2 1817 1846 2 1817 1846 2 1817 1846 2 1817 1846 2 1817 1846 2 1817 1846 2 1818 1837 2 1818 1837 2 1818 1837 3 1818 1826 1906 3 1818 1826 1906 3 1818 1826 1906 2 1819 1839 2 1819 1839 2 1819 1839 3 1819 1828 1905 3 1819 1828 1905 3 1819 1828 1905 2 1820 1841 2 1820 1841 2 1820 1841 3 1820 1830 1904 3 1820 1830 1904 3 1820 1830 1904 3 1821 1832 1903 3 1821 1832 1903 3 1821 1832 1903 2 1822 1844 2 1822 1844 2 1822 1844 3 1822 1833 1902 3 1822 1833 1902 3 1822 1833 1902 1 1823 1 1823 1 1823 1 1823 1 1823 1 1823 1 1824 1 1824 1 1824 1 1824 1 1824 1 1824 1 1848 1 1848 1 1848 1 1848 1 1848 1 1848 2 1848 1849 2 1848 1849 2 1848 1849 2 1848 1849 2 1848 1849 2 1848 1849 1 1849 1 1849 1 1849 1 1849 1 1849 1 1849 2 1849 1850 2 1849 1850 2 1849 1850 2 1849 1850 2 1849 1850 2 1849 1850 1 1850 1 1850 1 1850 1 1850 1 1850 1 1850 2 1850 1852 2 1850 1852 2 1850 1852 2 1850 1852 2 1850 1852 2 1850 1852 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1884 2 1851 1852 2 1851 1852 2 1851 1852 2 1851 1852 2 1851 1852 2 1851 1852 1 1851 1 1851 1 1851 1 1851 1 1851 1 1851 1 1853 1 1853 1 1853 1 1853 1 1853 1 1853 2 1853 1854 2 1853 1854 2 1853 1854 2 1853 1854 2 1853 1854 2 1853 1854 1 1854 1 1854 1 1854 1 1854 1 1854 1 1854 2 1854 1855 2 1854 1855 2 1854 1855 2 1854 1855 2 1854 1855 2 1854 1855 1 1855 1 1855 1 1855 1 1855 1 1855 1 1855 2 1855 1857 2 1855 1857 2 1855 1857 2 1855 1857 2 1855 1857 2 1855 1857 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 2 1856 1879 1 1856 1 1856 1 1856 1 1856 1 1856 1 1856 2 1856 1857 2 1856 1857 2 1856 1857 2 1856 1857 2 1856 1857 2 1856 1857 1 1856 1 1856 1 1856 1 1856 1 1856 1 1856 1 1858 1 1858 1 1858 1 1858 1 1858 1 1858 2 1858 1859 2 1858 1859 2 1858 1859 2 1858 1859 2 1858 1859 2 1858 1859 1 1859 1 1859 1 1859 1 1859 1 1859 1 1859 2 1859 1860 2 1859 1860 2 1859 1860 2 1859 1860 2 1859 1860 2 1859 1860 1 1860 1 1860 1 1860 1 1860 1 1860 1 1860 2 1860 1862 2 1860 1862 2 1860 1862 2 1860 1862 2 1860 1862 2 1860 1862 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1874 2 1861 1862 2 1861 1862 2 1861 1862 2 1861 1862 2 1861 1862 2 1861 1862 1 1861 1 1861 1 1861 1 1861 1 1861 1 1861 1 1863 1 1863 1 1863 1 1863 1 1863 1 1863 2 1863 1864 2 1863 1864 2 1863 1864 2 1863 1864 2 1863 1864 2 1863 1864 1 1864 1 1864 1 1864 1 1864 1 1864 1 1864 2 1864 1865 2 1864 1865 2 1864 1865 2 1864 1865 2 1864 1865 2 1864 1865 1 1865 1 1865 1 1865 1 1865 1 1865 1 1865 2 1865 1867 2 1865 1867 2 1865 1867 2 1865 1867 2 1865 1867 2 1865 1867 2 1866 1869 2 1866 1869 2 1866 1869 2 1866 1869 2 1866 1869 2 1866 1869 2 1866 1867 2 1866 1867 2 1866 1867 2 1866 1867 2 1866 1867 2 1866 1867 1 1866 1 1866 1 1866 1 1866 1 1866 1 1866 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 12 1868 1870 1900 1907 1908 2001 2002 2281 2360 2361 3109 3111 4 1868 2001 2360 3109 4 1868 2001 2360 3109 4 1868 2001 2360 3109 4 1868 2001 2360 3109 4 1868 2001 2360 3109 4 1868 2001 2360 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 11 1868 1869 1964 2000 2001 2273 2274 2359 2360 3108 3109 2 1868 1870 2 1868 1870 2 1868 1870 2 1868 1870 2 1868 1870 2 1868 1870 2 1868 1869 2 1868 1869 2 1868 1869 2 1868 1869 2 1868 1869 2 1868 1869 3 1869 1964 2274 3 1869 1964 2274 3 1869 1964 2274 3 1869 1964 2274 3 1869 1964 2274 3 1869 1964 2274 1 1869 1 1869 1 1869 1 1869 1 1869 1 1869 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 13 1870 1871 1900 1901 1915 1916 2002 2003 2287 2361 2362 3111 3113 5 1870 1900 2002 2361 3111 5 1870 1900 2002 2361 3111 5 1870 1900 2002 2361 3111 5 1870 1900 2002 2361 3111 5 1870 1900 2002 2361 3111 5 1870 1900 2002 2361 3111 2 1870 1871 2 1870 1871 2 1870 1871 2 1870 1871 2 1870 1871 2 1870 1871 1 1870 1 1870 1 1870 1 1870 1 1870 1 1870 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 12 1871 1872 1901 1924 1927 2003 2004 2293 2362 2363 3113 3114 5 1871 1901 2003 2362 3113 5 1871 1901 2003 2362 3113 5 1871 1901 2003 2362 3113 5 1871 1901 2003 2362 3113 5 1871 1901 2003 2362 3113 5 1871 1901 2003 2362 3113 2 1871 1872 2 1871 1872 2 1871 1872 2 1871 1872 2 1871 1872 2 1871 1872 1 1871 1 1871 1 1871 1 1871 1 1871 1 1871 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 9 1872 2004 2005 2299 2363 2364 3114 3116 3118 4 1872 2004 2363 3114 4 1872 2004 2363 3114 4 1872 2004 2363 3114 4 1872 2004 2363 3114 4 1872 2004 2363 3114 4 1872 2004 2363 3114 2 1872 3118 2 1872 3118 2 1872 3118 2 1872 3118 2 1872 3118 2 1872 3118 1 1872 1 1872 1 1872 1 1872 1 1872 1 1872 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 10 1873 1875 2281 2282 2360 2361 2403 2404 3051 3053 4 1873 2360 2403 3051 4 1873 2360 2403 3051 4 1873 2360 2403 3051 4 1873 2360 2403 3051 4 1873 2360 2403 3051 4 1873 2360 2403 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 11 1873 1874 2273 2274 2275 2359 2360 2402 2403 3050 3051 2 1873 1875 2 1873 1875 2 1873 1875 2 1873 1875 2 1873 1875 2 1873 1875 2 1873 1874 2 1873 1874 2 1873 1874 2 1873 1874 2 1873 1874 2 1873 1874 2 1874 2274 2 1874 2274 2 1874 2274 2 1874 2274 2 1874 2274 2 1874 2274 1 1874 1 1874 1 1874 1 1874 1 1874 1 1874 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 10 1875 1876 2287 2288 2361 2362 2404 2405 3053 3055 4 1875 2361 2404 3053 4 1875 2361 2404 3053 4 1875 2361 2404 3053 4 1875 2361 2404 3053 4 1875 2361 2404 3053 4 1875 2361 2404 3053 2 1875 1876 2 1875 1876 2 1875 1876 2 1875 1876 2 1875 1876 2 1875 1876 1 1875 1 1875 1 1875 1 1875 1 1875 1 1875 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 10 1876 1877 2293 2294 2362 2363 2405 2406 3055 3056 4 1876 2362 2405 3055 4 1876 2362 2405 3055 4 1876 2362 2405 3055 4 1876 2362 2405 3055 4 1876 2362 2405 3055 4 1876 2362 2405 3055 2 1876 1877 2 1876 1877 2 1876 1877 2 1876 1877 2 1876 1877 2 1876 1877 1 1876 1 1876 1 1876 1 1876 1 1876 1 1876 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 10 1877 2299 2300 2363 2364 2406 2407 3056 3058 3060 4 1877 2363 2406 3056 4 1877 2363 2406 3056 4 1877 2363 2406 3056 4 1877 2363 2406 3056 4 1877 2363 2406 3056 4 1877 2363 2406 3056 2 1877 3060 2 1877 3060 2 1877 3060 2 1877 3060 2 1877 3060 2 1877 3060 1 1877 1 1877 1 1877 1 1877 1 1877 1 1877 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 10 1878 1880 2282 2283 2403 2404 2446 2447 2993 2995 4 1878 2403 2446 2993 4 1878 2403 2446 2993 4 1878 2403 2446 2993 4 1878 2403 2446 2993 4 1878 2403 2446 2993 4 1878 2403 2446 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 10 1878 1879 2275 2276 2402 2403 2445 2446 2992 2993 2 1878 1880 2 1878 1880 2 1878 1880 2 1878 1880 2 1878 1880 2 1878 1880 2 1878 1879 2 1878 1879 2 1878 1879 2 1878 1879 2 1878 1879 2 1878 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 1 1879 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 10 1880 1881 2288 2289 2404 2405 2447 2448 2995 2997 4 1880 2404 2447 2995 4 1880 2404 2447 2995 4 1880 2404 2447 2995 4 1880 2404 2447 2995 4 1880 2404 2447 2995 4 1880 2404 2447 2995 2 1880 1881 2 1880 1881 2 1880 1881 2 1880 1881 2 1880 1881 2 1880 1881 1 1880 1 1880 1 1880 1 1880 1 1880 1 1880 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 10 1881 1882 2294 2295 2405 2406 2448 2449 2997 2998 4 1881 2405 2448 2997 4 1881 2405 2448 2997 4 1881 2405 2448 2997 4 1881 2405 2448 2997 4 1881 2405 2448 2997 4 1881 2405 2448 2997 2 1881 1882 2 1881 1882 2 1881 1882 2 1881 1882 2 1881 1882 2 1881 1882 1 1881 1 1881 1 1881 1 1881 1 1881 1 1881 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 10 1882 2300 2301 2406 2407 2449 2450 2998 3000 3002 4 1882 2406 2449 2998 4 1882 2406 2449 2998 4 1882 2406 2449 2998 4 1882 2406 2449 2998 4 1882 2406 2449 2998 4 1882 2406 2449 2998 2 1882 3002 2 1882 3002 2 1882 3002 2 1882 3002 2 1882 3002 2 1882 3002 1 1882 1 1882 1 1882 1 1882 1 1882 1 1882 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 10 1883 1885 2283 2284 2446 2447 2489 2490 2945 2947 4 1883 2446 2489 2945 4 1883 2446 2489 2945 4 1883 2446 2489 2945 4 1883 2446 2489 2945 4 1883 2446 2489 2945 4 1883 2446 2489 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 11 1883 1884 2276 2277 2278 2445 2446 2488 2489 2944 2945 2 1883 1885 2 1883 1885 2 1883 1885 2 1883 1885 2 1883 1885 2 1883 1885 2 1883 1884 2 1883 1884 2 1883 1884 2 1883 1884 2 1883 1884 2 1883 1884 2 1884 2278 2 1884 2278 2 1884 2278 2 1884 2278 2 1884 2278 2 1884 2278 1 1884 1 1884 1 1884 1 1884 1 1884 1 1884 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 10 1885 1886 2289 2290 2447 2448 2490 2491 2947 2949 4 1885 2447 2490 2947 4 1885 2447 2490 2947 4 1885 2447 2490 2947 4 1885 2447 2490 2947 4 1885 2447 2490 2947 4 1885 2447 2490 2947 2 1885 1886 2 1885 1886 2 1885 1886 2 1885 1886 2 1885 1886 2 1885 1886 1 1885 1 1885 1 1885 1 1885 1 1885 1 1885 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 10 1886 1887 2295 2296 2448 2449 2491 2492 2949 2950 4 1886 2448 2491 2949 4 1886 2448 2491 2949 4 1886 2448 2491 2949 4 1886 2448 2491 2949 4 1886 2448 2491 2949 4 1886 2448 2491 2949 2 1886 1887 2 1886 1887 2 1886 1887 2 1886 1887 2 1886 1887 2 1886 1887 1 1886 1 1886 1 1886 1 1886 1 1886 1 1886 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 10 1887 2301 2302 2449 2450 2492 2493 2950 2952 2954 4 1887 2449 2492 2950 4 1887 2449 2492 2950 4 1887 2449 2492 2950 4 1887 2449 2492 2950 4 1887 2449 2492 2950 4 1887 2449 2492 2950 2 1887 2954 2 1887 2954 2 1887 2954 2 1887 2954 2 1887 2954 2 1887 2954 1 1887 1 1887 1 1887 1 1887 1 1887 1 1887 5 1888 1890 1922 1927 1939 5 1888 1890 1922 1927 1939 5 1888 1890 1922 1927 1939 2 1888 1922 2 1888 1922 2 1888 1922 3 1888 1922 1935 3 1888 1922 1935 3 1888 1922 1935 2 1888 1935 2 1888 1935 2 1888 1935 3 1888 1913 1935 3 1888 1913 1935 3 1888 1913 1935 7 1888 1889 1890 1913 1915 1937 1939 7 1888 1889 1890 1913 1915 1937 1939 7 1888 1889 1890 1913 1915 1937 1939 2 1888 1913 2 1888 1913 2 1888 1913 3 1888 1890 1939 3 1888 1890 1939 3 1888 1890 1939 8 1889 1890 1915 2287 2577 2578 3111 3113 8 1889 1890 1915 2287 2577 2578 3111 3113 8 1889 1890 1915 2287 2577 2578 3111 3113 8 1889 1890 1915 2287 2577 2578 3111 3113 8 1889 1890 1915 2287 2577 2578 3111 3113 8 1889 1890 1915 2287 2577 2578 3111 3113 3 1889 1890 1915 3 1889 1890 1915 3 1889 1890 1915 3 1889 1890 1915 3 1889 1890 1915 3 1889 1890 1915 2 1889 1937 2 1889 1937 2 1889 1937 2 1889 1937 2 1889 1937 2 1889 1937 3 1889 1907 1937 3 1889 1907 1937 3 1889 1907 1937 3 1889 1907 1937 3 1889 1907 1937 3 1889 1907 1937 7 1889 1907 2281 2576 2577 3109 3111 7 1889 1907 2281 2576 2577 3109 3111 7 1889 1907 2281 2576 2577 3109 3111 7 1889 1907 2281 2576 2577 3109 3111 7 1889 1907 2281 2576 2577 3109 3111 7 1889 1907 2281 2576 2577 3109 3111 2 1889 1907 2 1889 1907 2 1889 1907 2 1889 1907 2 1889 1907 2 1889 1907 3 1889 2577 3111 3 1889 2577 3111 3 1889 2577 3111 3 1889 2577 3111 3 1889 2577 3111 3 1889 2577 3111 7 1890 1927 2293 2578 2579 3113 3114 7 1890 1927 2293 2578 2579 3113 3114 7 1890 1927 2293 2578 2579 3113 3114 7 1890 1927 2293 2578 2579 3113 3114 7 1890 1927 2293 2578 2579 3113 3114 7 1890 1927 2293 2578 2579 3113 3114 2 1890 1927 2 1890 1927 2 1890 1927 2 1890 1927 2 1890 1927 2 1890 1927 3 1890 2578 3113 3 1890 2578 3113 3 1890 2578 3113 3 1890 2578 3113 3 1890 2578 3113 3 1890 2578 3113 9 1891 1892 1893 1909 1910 1918 1925 1926 1928 9 1891 1892 1893 1909 1910 1918 1925 1926 1928 9 1891 1892 1893 1909 1910 1918 1925 1926 1928 2 1891 1909 2 1891 1909 2 1891 1909 3 1891 1909 1923 3 1891 1909 1923 3 1891 1909 1923 2 1891 1923 2 1891 1923 2 1891 1923 3 1891 1902 1923 3 1891 1902 1923 3 1891 1902 1923 7 1891 1892 1902 1903 1917 1925 1926 7 1891 1892 1902 1903 1917 1925 1926 7 1891 1892 1902 1903 1917 1925 1926 2 1891 1902 2 1891 1902 2 1891 1902 4 1891 1892 1925 1926 4 1891 1892 1925 1926 4 1891 1892 1925 1926 4 1892 1893 1910 1918 4 1892 1893 1910 1918 4 1892 1893 1910 1918 9 1892 1893 1894 1895 1910 1911 1918 1929 1930 9 1892 1893 1894 1895 1910 1911 1918 1929 1930 9 1892 1893 1894 1895 1910 1911 1918 1929 1930 3 1892 1903 1917 3 1892 1903 1917 3 1892 1903 1917 6 1892 1894 1903 1904 1917 1929 6 1892 1894 1903 1904 1917 1929 6 1892 1894 1903 1904 1917 1929 3 1892 1894 1929 3 1892 1894 1929 3 1892 1894 1929 5 1893 1895 1919 1920 1930 5 1893 1895 1919 1920 1930 5 1893 1895 1919 1920 1930 2 1893 1919 2 1893 1919 2 1893 1919 3 1893 1919 1928 3 1893 1919 1928 3 1893 1919 1928 2 1893 1928 2 1893 1928 2 1893 1928 3 1893 1895 1930 3 1893 1895 1930 3 1893 1895 1930 8 1894 1895 1896 1897 1911 1912 1931 1932 8 1894 1895 1896 1897 1911 1912 1931 1932 8 1894 1895 1896 1897 1911 1912 1931 1932 3 1894 1895 1911 3 1894 1895 1911 3 1894 1895 1911 5 1894 1896 1904 1905 1931 5 1894 1896 1904 1905 1931 5 1894 1896 1904 1905 1931 2 1894 1904 2 1894 1904 2 1894 1904 3 1894 1896 1931 3 1894 1896 1931 3 1894 1896 1931 5 1895 1897 1920 1921 1932 5 1895 1897 1920 1921 1932 5 1895 1897 1920 1921 1932 2 1895 1920 2 1895 1920 2 1895 1920 3 1895 1897 1932 3 1895 1897 1932 3 1895 1897 1932 10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 10 1896 1897 1898 1899 1912 1913 1914 1934 1935 1936 3 1896 1897 1912 3 1896 1897 1912 3 1896 1897 1912 5 1896 1898 1905 1906 1934 5 1896 1898 1905 1906 1934 5 1896 1898 1905 1906 1934 2 1896 1905 2 1896 1905 2 1896 1905 3 1896 1898 1934 3 1896 1898 1934 3 1896 1898 1934 7 1897 1899 1921 1922 1933 1935 1936 7 1897 1899 1921 1922 1933 1935 1936 7 1897 1899 1921 1922 1933 1935 1936 2 1897 1921 2 1897 1921 2 1897 1921 4 1897 1899 1935 1936 4 1897 1899 1935 1936 4 1897 1899 1935 1936 12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 12 1898 1899 1900 1901 1913 1914 1915 1916 1937 1938 1939 1940 4 1898 1899 1913 1914 4 1898 1899 1913 1914 4 1898 1899 1913 1914 7 1898 1900 1906 1907 1908 1937 1938 7 1898 1900 1906 1907 1908 1937 1938 7 1898 1900 1906 1907 1908 1937 1938 2 1898 1906 2 1898 1906 2 1898 1906 4 1898 1900 1937 1938 4 1898 1900 1937 1938 4 1898 1900 1937 1938 8 1899 1901 1922 1924 1927 1933 1939 1940 8 1899 1901 1922 1924 1927 1933 1939 1940 8 1899 1901 1922 1924 1927 1933 1939 1940 3 1899 1922 1933 3 1899 1922 1933 3 1899 1922 1933 4 1899 1901 1939 1940 4 1899 1901 1939 1940 4 1899 1901 1939 1940 4 1900 1901 1915 1916 4 1900 1901 1915 1916 4 1900 1901 1915 1916 4 1900 1901 1915 1916 4 1900 1901 1915 1916 4 1900 1901 1915 1916 3 1900 1907 1908 3 1900 1907 1908 3 1900 1907 1908 3 1900 1907 1908 3 1900 1907 1908 3 1900 1907 1908 3 1901 1924 1927 3 1901 1924 1927 3 1901 1924 1927 3 1901 1924 1927 3 1901 1924 1927 3 1901 1924 1927 3 1902 1903 1926 3 1902 1903 1926 3 1902 1903 1926 3 1902 1903 1926 3 1902 1903 1926 3 1902 1903 1926 2 1902 1923 2 1902 1923 2 1902 1923 2 1902 1923 2 1902 1923 2 1902 1923 3 1903 1904 1929 3 1903 1904 1929 3 1903 1904 1929 3 1903 1904 1929 3 1903 1904 1929 3 1903 1904 1929 3 1904 1905 1931 3 1904 1905 1931 3 1904 1905 1931 3 1904 1905 1931 3 1904 1905 1931 3 1904 1905 1931 3 1905 1906 1934 3 1905 1906 1934 3 1905 1906 1934 3 1905 1906 1934 3 1905 1906 1934 3 1905 1906 1934 3 1906 1908 1938 3 1906 1908 1938 3 1906 1908 1938 3 1906 1908 1938 3 1906 1908 1938 3 1906 1908 1938 4 1907 2281 3109 3111 4 1907 2281 3109 3111 4 1907 2281 3109 3111 4 1907 2281 3109 3111 4 1907 2281 3109 3111 4 1907 2281 3109 3111 2 1907 1937 2 1907 1937 2 1907 1937 2 1907 1937 2 1907 1937 2 1907 1937 1 1908 1 1908 1 1908 1 1908 1 1908 1 1908 4 1909 1910 1926 1928 4 1909 1910 1926 1928 4 1909 1910 1926 1928 4 1909 1910 1926 1928 4 1909 1910 1926 1928 4 1909 1910 1926 1928 2 1909 1923 2 1909 1923 2 1909 1923 2 1909 1923 2 1909 1923 2 1909 1923 4 1910 1911 1929 1930 4 1910 1911 1929 1930 4 1910 1911 1929 1930 4 1910 1911 1929 1930 4 1910 1911 1929 1930 4 1910 1911 1929 1930 4 1911 1912 1931 1932 4 1911 1912 1931 1932 4 1911 1912 1931 1932 4 1911 1912 1931 1932 4 1911 1912 1931 1932 4 1911 1912 1931 1932 4 1912 1914 1934 1936 4 1912 1914 1934 1936 4 1912 1914 1934 1936 4 1912 1914 1934 1936 4 1912 1914 1934 1936 4 1912 1914 1934 1936 4 1913 1915 1937 1939 4 1913 1915 1937 1939 4 1913 1915 1937 1939 4 1913 1915 1937 1939 4 1913 1915 1937 1939 4 1913 1915 1937 1939 2 1913 1935 2 1913 1935 2 1913 1935 2 1913 1935 2 1913 1935 2 1913 1935 4 1914 1916 1938 1940 4 1914 1916 1938 1940 4 1914 1916 1938 1940 4 1914 1916 1938 1940 4 1914 1916 1938 1940 4 1914 1916 1938 1940 4 1915 2287 3111 3113 4 1915 2287 3111 3113 4 1915 2287 3111 3113 4 1915 2287 3111 3113 4 1915 2287 3111 3113 4 1915 2287 3111 3113 1 1916 1 1916 1 1916 1 1916 1 1916 1 1916 1 1917 1 1917 1 1917 1 1917 1 1917 1 1917 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 2 1917 1925 1 1918 1 1918 1 1918 1 1918 1 1918 1 1918 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 2 1918 1925 3 1919 1920 1930 3 1919 1920 1930 3 1919 1920 1930 3 1919 1920 1930 3 1919 1920 1930 3 1919 1920 1930 2 1919 1928 2 1919 1928 2 1919 1928 2 1919 1928 2 1919 1928 2 1919 1928 3 1920 1921 1932 3 1920 1921 1932 3 1920 1921 1932 3 1920 1921 1932 3 1920 1921 1932 3 1920 1921 1932 3 1921 1933 1936 3 1921 1933 1936 3 1921 1933 1936 3 1921 1933 1936 3 1921 1933 1936 3 1921 1933 1936 3 1922 1927 1939 3 1922 1927 1939 3 1922 1927 1939 3 1922 1927 1939 3 1922 1927 1939 3 1922 1927 1939 2 1922 1935 2 1922 1935 2 1922 1935 2 1922 1935 2 1922 1935 2 1922 1935 1 1924 1 1924 1 1924 1 1924 1 1924 1 1924 3 1924 1933 1940 3 1924 1933 1940 3 1924 1933 1940 3 1924 1933 1940 3 1924 1933 1940 3 1924 1933 1940 1 1925 1 1925 1 1925 1 1925 1 1925 1 1925 4 1927 2293 3113 3114 4 1927 2293 3113 3114 4 1927 2293 3113 3114 4 1927 2293 3113 3114 4 1927 2293 3113 3114 4 1927 2293 3113 3114 4 1941 3309 3311 3419 4 1941 3309 3311 3419 4 1941 3309 3311 3419 4 1941 3309 3311 3419 4 1941 3309 3311 3419 4 1941 3309 3311 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 12 1941 1966 2325 3063 3308 3309 3310 3311 3321 3325 3418 3419 2 1941 1966 2 1941 1966 2 1941 1966 2 1941 1966 2 1941 1966 2 1941 1966 1 1941 1 1941 1 1941 1 1941 1 1941 1 1941 3 1942 2016 3066 3 1942 2016 3066 3 1942 2016 3066 3 1942 2016 3066 3 1942 2016 3066 3 1942 2016 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 10 1942 1967 1968 2015 2016 2326 2327 3064 3065 3066 3 1942 1967 1968 3 1942 1967 1968 3 1942 1967 1968 3 1942 1967 1968 3 1942 1967 1968 3 1942 1967 1968 2 1942 2762 2 1942 2762 2 1942 2762 2 1942 2762 2 1942 2762 2 1942 2762 3 1943 2026 3066 3 1943 2026 3066 3 1943 2026 3066 3 1943 2026 3066 3 1943 2026 3066 3 1943 2026 3066 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 10 1943 1968 1969 2025 2026 2327 2328 3065 3066 3067 3 1943 1968 1969 3 1943 1968 1969 3 1943 1968 1969 3 1943 1968 1969 3 1943 1968 1969 3 1943 1968 1969 2 1943 2762 2 1943 2762 2 1943 2762 2 1943 2762 2 1943 2762 2 1943 2762 3 1944 2042 3070 3 1944 2042 3070 3 1944 2042 3070 3 1944 2042 3070 3 1944 2042 3070 3 1944 2042 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 10 1944 1970 1971 2041 2042 2329 2330 3068 3069 3070 3 1944 1970 1971 3 1944 1970 1971 3 1944 1970 1971 3 1944 1970 1971 3 1944 1970 1971 3 1944 1970 1971 2 1944 2763 2 1944 2763 2 1944 2763 2 1944 2763 2 1944 2763 2 1944 2763 3 1945 2050 3070 3 1945 2050 3070 3 1945 2050 3070 3 1945 2050 3070 3 1945 2050 3070 3 1945 2050 3070 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 10 1945 1971 1972 2049 2050 2330 2331 3069 3070 3071 3 1945 1971 1972 3 1945 1971 1972 3 1945 1971 1972 3 1945 1971 1972 3 1945 1971 1972 3 1945 1971 1972 2 1945 2763 2 1945 2763 2 1945 2763 2 1945 2763 2 1945 2763 2 1945 2763 3 1946 2066 3074 3 1946 2066 3074 3 1946 2066 3074 3 1946 2066 3074 3 1946 2066 3074 3 1946 2066 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 10 1946 1973 1974 2065 2066 2332 2333 3072 3073 3074 3 1946 1973 1974 3 1946 1973 1974 3 1946 1973 1974 3 1946 1973 1974 3 1946 1973 1974 3 1946 1973 1974 2 1946 2764 2 1946 2764 2 1946 2764 2 1946 2764 2 1946 2764 2 1946 2764 3 1947 2074 3074 3 1947 2074 3074 3 1947 2074 3074 3 1947 2074 3074 3 1947 2074 3074 3 1947 2074 3074 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 10 1947 1974 1975 2073 2074 2333 2334 3073 3074 3075 3 1947 1974 1975 3 1947 1974 1975 3 1947 1974 1975 3 1947 1974 1975 3 1947 1974 1975 3 1947 1974 1975 2 1947 2764 2 1947 2764 2 1947 2764 2 1947 2764 2 1947 2764 2 1947 2764 3 1948 2088 3078 3 1948 2088 3078 3 1948 2088 3078 3 1948 2088 3078 3 1948 2088 3078 3 1948 2088 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 10 1948 1976 1977 2087 2088 2335 2336 3076 3077 3078 3 1948 1976 1977 3 1948 1976 1977 3 1948 1976 1977 3 1948 1976 1977 3 1948 1976 1977 3 1948 1976 1977 2 1948 2765 2 1948 2765 2 1948 2765 2 1948 2765 2 1948 2765 2 1948 2765 3 1949 2096 3078 3 1949 2096 3078 3 1949 2096 3078 3 1949 2096 3078 3 1949 2096 3078 3 1949 2096 3078 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 10 1949 1977 1978 2095 2096 2336 2337 3077 3078 3079 3 1949 1977 1978 3 1949 1977 1978 3 1949 1977 1978 3 1949 1977 1978 3 1949 1977 1978 3 1949 1977 1978 2 1949 2765 2 1949 2765 2 1949 2765 2 1949 2765 2 1949 2765 2 1949 2765 3 1950 2112 3082 3 1950 2112 3082 3 1950 2112 3082 3 1950 2112 3082 3 1950 2112 3082 3 1950 2112 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 10 1950 1979 1980 2111 2112 2338 2339 3080 3081 3082 3 1950 1979 1980 3 1950 1979 1980 3 1950 1979 1980 3 1950 1979 1980 3 1950 1979 1980 3 1950 1979 1980 2 1950 2766 2 1950 2766 2 1950 2766 2 1950 2766 2 1950 2766 2 1950 2766 3 1951 2120 3082 3 1951 2120 3082 3 1951 2120 3082 3 1951 2120 3082 3 1951 2120 3082 3 1951 2120 3082 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 10 1951 1980 1981 2119 2120 2339 2340 3081 3082 3083 3 1951 1980 1981 3 1951 1980 1981 3 1951 1980 1981 3 1951 1980 1981 3 1951 1980 1981 3 1951 1980 1981 2 1951 2766 2 1951 2766 2 1951 2766 2 1951 2766 2 1951 2766 2 1951 2766 3 1952 2134 3086 3 1952 2134 3086 3 1952 2134 3086 3 1952 2134 3086 3 1952 2134 3086 3 1952 2134 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 10 1952 1982 1983 2133 2134 2341 2342 3084 3085 3086 3 1952 1982 1983 3 1952 1982 1983 3 1952 1982 1983 3 1952 1982 1983 3 1952 1982 1983 3 1952 1982 1983 2 1952 2767 2 1952 2767 2 1952 2767 2 1952 2767 2 1952 2767 2 1952 2767 3 1953 2142 3086 3 1953 2142 3086 3 1953 2142 3086 3 1953 2142 3086 3 1953 2142 3086 3 1953 2142 3086 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 10 1953 1983 1984 2141 2142 2342 2343 3085 3086 3087 3 1953 1983 1984 3 1953 1983 1984 3 1953 1983 1984 3 1953 1983 1984 3 1953 1983 1984 3 1953 1983 1984 2 1953 2767 2 1953 2767 2 1953 2767 2 1953 2767 2 1953 2767 2 1953 2767 3 1954 2158 3090 3 1954 2158 3090 3 1954 2158 3090 3 1954 2158 3090 3 1954 2158 3090 3 1954 2158 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 10 1954 1985 1986 2157 2158 2344 2345 3088 3089 3090 3 1954 1985 1986 3 1954 1985 1986 3 1954 1985 1986 3 1954 1985 1986 3 1954 1985 1986 3 1954 1985 1986 2 1954 2768 2 1954 2768 2 1954 2768 2 1954 2768 2 1954 2768 2 1954 2768 3 1955 2166 3090 3 1955 2166 3090 3 1955 2166 3090 3 1955 2166 3090 3 1955 2166 3090 3 1955 2166 3090 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 10 1955 1986 1987 2165 2166 2345 2346 3089 3090 3091 3 1955 1986 1987 3 1955 1986 1987 3 1955 1986 1987 3 1955 1986 1987 3 1955 1986 1987 3 1955 1986 1987 2 1955 2768 2 1955 2768 2 1955 2768 2 1955 2768 2 1955 2768 2 1955 2768 3 1956 2180 3094 3 1956 2180 3094 3 1956 2180 3094 3 1956 2180 3094 3 1956 2180 3094 3 1956 2180 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 10 1956 1988 1989 2179 2180 2347 2348 3092 3093 3094 3 1956 1988 1989 3 1956 1988 1989 3 1956 1988 1989 3 1956 1988 1989 3 1956 1988 1989 3 1956 1988 1989 2 1956 2769 2 1956 2769 2 1956 2769 2 1956 2769 2 1956 2769 2 1956 2769 3 1957 2188 3094 3 1957 2188 3094 3 1957 2188 3094 3 1957 2188 3094 3 1957 2188 3094 3 1957 2188 3094 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 10 1957 1989 1990 2187 2188 2348 2349 3093 3094 3095 3 1957 1989 1990 3 1957 1989 1990 3 1957 1989 1990 3 1957 1989 1990 3 1957 1989 1990 3 1957 1989 1990 2 1957 2769 2 1957 2769 2 1957 2769 2 1957 2769 2 1957 2769 2 1957 2769 3 1958 2204 3098 3 1958 2204 3098 3 1958 2204 3098 3 1958 2204 3098 3 1958 2204 3098 3 1958 2204 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 10 1958 1991 1992 2203 2204 2350 2351 3096 3097 3098 3 1958 1991 1992 3 1958 1991 1992 3 1958 1991 1992 3 1958 1991 1992 3 1958 1991 1992 3 1958 1991 1992 2 1958 2770 2 1958 2770 2 1958 2770 2 1958 2770 2 1958 2770 2 1958 2770 3 1959 2212 3098 3 1959 2212 3098 3 1959 2212 3098 3 1959 2212 3098 3 1959 2212 3098 3 1959 2212 3098 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 10 1959 1992 1993 2211 2212 2351 2352 3097 3098 3099 3 1959 1992 1993 3 1959 1992 1993 3 1959 1992 1993 3 1959 1992 1993 3 1959 1992 1993 3 1959 1992 1993 2 1959 2770 2 1959 2770 2 1959 2770 2 1959 2770 2 1959 2770 2 1959 2770 3 1960 2226 3102 3 1960 2226 3102 3 1960 2226 3102 3 1960 2226 3102 3 1960 2226 3102 3 1960 2226 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 10 1960 1994 1995 2225 2226 2353 2354 3100 3101 3102 3 1960 1994 1995 3 1960 1994 1995 3 1960 1994 1995 3 1960 1994 1995 3 1960 1994 1995 3 1960 1994 1995 2 1960 2771 2 1960 2771 2 1960 2771 2 1960 2771 2 1960 2771 2 1960 2771 3 1961 2236 3102 3 1961 2236 3102 3 1961 2236 3102 3 1961 2236 3102 3 1961 2236 3102 3 1961 2236 3102 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 10 1961 1995 1996 2235 2236 2354 2355 3101 3102 3103 3 1961 1995 1996 3 1961 1995 1996 3 1961 1995 1996 3 1961 1995 1996 3 1961 1995 1996 3 1961 1995 1996 2 1961 2771 2 1961 2771 2 1961 2771 2 1961 2771 2 1961 2771 2 1961 2771 3 1962 2252 3106 3 1962 2252 3106 3 1962 2252 3106 3 1962 2252 3106 3 1962 2252 3106 3 1962 2252 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 10 1962 1997 1998 2251 2252 2356 2357 3104 3105 3106 3 1962 1997 1998 3 1962 1997 1998 3 1962 1997 1998 3 1962 1997 1998 3 1962 1997 1998 3 1962 1997 1998 2 1962 2772 2 1962 2772 2 1962 2772 2 1962 2772 2 1962 2772 2 1962 2772 3 1963 2260 3106 3 1963 2260 3106 3 1963 2260 3106 3 1963 2260 3106 3 1963 2260 3106 3 1963 2260 3106 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 10 1963 1998 1999 2259 2260 2357 2358 3105 3106 3107 3 1963 1998 1999 3 1963 1998 1999 3 1963 1998 1999 3 1963 1998 1999 3 1963 1998 1999 3 1963 1998 1999 2 1963 2772 2 1963 2772 2 1963 2772 2 1963 2772 2 1963 2772 2 1963 2772 3 1964 2000 2001 3 1964 2000 2001 3 1964 2000 2001 3 1964 2000 2001 3 1964 2000 2001 3 1964 2000 2001 2 1964 2773 2 1964 2773 2 1964 2773 2 1964 2773 2 1964 2773 2 1964 2773 3 1965 2318 3110 3 1965 2318 3110 3 1965 2318 3110 3 1965 2318 3110 3 1965 2318 3110 3 1965 2318 3110 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 11 1965 2007 2008 2317 2318 2366 2367 3110 3112 3119 3120 3 1965 2007 2008 3 1965 2007 2008 3 1965 2007 2008 3 1965 2007 2008 3 1965 2007 2008 3 1965 2007 2008 2 1965 2774 2 1965 2774 2 1965 2774 2 1965 2774 2 1965 2774 2 1965 2774 7 1966 1967 2009 2325 2326 3063 3064 7 1966 1967 2009 2325 2326 3063 3064 7 1966 1967 2009 2325 2326 3063 3064 7 1966 1967 2009 2325 2326 3063 3064 7 1966 1967 2009 2325 2326 3063 3064 7 1966 1967 2009 2325 2326 3063 3064 3 1966 2325 3063 3 1966 2325 3063 3 1966 2325 3063 3 1966 2325 3063 3 1966 2325 3063 3 1966 2325 3063 2 1966 1967 2 1966 1967 2 1966 1967 2 1966 1967 2 1966 1967 2 1966 1967 3 1967 2326 3064 3 1967 2326 3064 3 1967 2326 3064 3 1967 2326 3064 3 1967 2326 3064 3 1967 2326 3064 4 1968 2327 3065 3066 4 1968 2327 3065 3066 4 1968 2327 3065 3066 4 1968 2327 3065 3066 4 1968 2327 3065 3066 4 1968 2327 3065 3066 7 1969 1970 2035 2328 2329 3067 3068 7 1969 1970 2035 2328 2329 3067 3068 7 1969 1970 2035 2328 2329 3067 3068 7 1969 1970 2035 2328 2329 3067 3068 7 1969 1970 2035 2328 2329 3067 3068 7 1969 1970 2035 2328 2329 3067 3068 3 1969 2328 3067 3 1969 2328 3067 3 1969 2328 3067 3 1969 2328 3067 3 1969 2328 3067 3 1969 2328 3067 2 1969 1970 2 1969 1970 2 1969 1970 2 1969 1970 2 1969 1970 2 1969 1970 3 1970 2329 3068 3 1970 2329 3068 3 1970 2329 3068 3 1970 2329 3068 3 1970 2329 3068 3 1970 2329 3068 4 1971 2330 3069 3070 4 1971 2330 3069 3070 4 1971 2330 3069 3070 4 1971 2330 3069 3070 4 1971 2330 3069 3070 4 1971 2330 3069 3070 7 1972 1973 2059 2331 2332 3071 3072 7 1972 1973 2059 2331 2332 3071 3072 7 1972 1973 2059 2331 2332 3071 3072 7 1972 1973 2059 2331 2332 3071 3072 7 1972 1973 2059 2331 2332 3071 3072 7 1972 1973 2059 2331 2332 3071 3072 3 1972 2331 3071 3 1972 2331 3071 3 1972 2331 3071 3 1972 2331 3071 3 1972 2331 3071 3 1972 2331 3071 2 1972 1973 2 1972 1973 2 1972 1973 2 1972 1973 2 1972 1973 2 1972 1973 3 1973 2332 3072 3 1973 2332 3072 3 1973 2332 3072 3 1973 2332 3072 3 1973 2332 3072 3 1973 2332 3072 4 1974 2333 3073 3074 4 1974 2333 3073 3074 4 1974 2333 3073 3074 4 1974 2333 3073 3074 4 1974 2333 3073 3074 4 1974 2333 3073 3074 7 1975 1976 2081 2334 2335 3075 3076 7 1975 1976 2081 2334 2335 3075 3076 7 1975 1976 2081 2334 2335 3075 3076 7 1975 1976 2081 2334 2335 3075 3076 7 1975 1976 2081 2334 2335 3075 3076 7 1975 1976 2081 2334 2335 3075 3076 3 1975 2334 3075 3 1975 2334 3075 3 1975 2334 3075 3 1975 2334 3075 3 1975 2334 3075 3 1975 2334 3075 2 1975 1976 2 1975 1976 2 1975 1976 2 1975 1976 2 1975 1976 2 1975 1976 3 1976 2335 3076 3 1976 2335 3076 3 1976 2335 3076 3 1976 2335 3076 3 1976 2335 3076 3 1976 2335 3076 4 1977 2336 3077 3078 4 1977 2336 3077 3078 4 1977 2336 3077 3078 4 1977 2336 3077 3078 4 1977 2336 3077 3078 4 1977 2336 3077 3078 7 1978 1979 2105 2337 2338 3079 3080 7 1978 1979 2105 2337 2338 3079 3080 7 1978 1979 2105 2337 2338 3079 3080 7 1978 1979 2105 2337 2338 3079 3080 7 1978 1979 2105 2337 2338 3079 3080 7 1978 1979 2105 2337 2338 3079 3080 3 1978 2337 3079 3 1978 2337 3079 3 1978 2337 3079 3 1978 2337 3079 3 1978 2337 3079 3 1978 2337 3079 2 1978 1979 2 1978 1979 2 1978 1979 2 1978 1979 2 1978 1979 2 1978 1979 3 1979 2338 3080 3 1979 2338 3080 3 1979 2338 3080 3 1979 2338 3080 3 1979 2338 3080 3 1979 2338 3080 4 1980 2339 3081 3082 4 1980 2339 3081 3082 4 1980 2339 3081 3082 4 1980 2339 3081 3082 4 1980 2339 3081 3082 4 1980 2339 3081 3082 7 1981 1982 2127 2340 2341 3083 3084 7 1981 1982 2127 2340 2341 3083 3084 7 1981 1982 2127 2340 2341 3083 3084 7 1981 1982 2127 2340 2341 3083 3084 7 1981 1982 2127 2340 2341 3083 3084 7 1981 1982 2127 2340 2341 3083 3084 3 1981 2340 3083 3 1981 2340 3083 3 1981 2340 3083 3 1981 2340 3083 3 1981 2340 3083 3 1981 2340 3083 2 1981 1982 2 1981 1982 2 1981 1982 2 1981 1982 2 1981 1982 2 1981 1982 3 1982 2341 3084 3 1982 2341 3084 3 1982 2341 3084 3 1982 2341 3084 3 1982 2341 3084 3 1982 2341 3084 4 1983 2342 3085 3086 4 1983 2342 3085 3086 4 1983 2342 3085 3086 4 1983 2342 3085 3086 4 1983 2342 3085 3086 4 1983 2342 3085 3086 7 1984 1985 2151 2343 2344 3087 3088 7 1984 1985 2151 2343 2344 3087 3088 7 1984 1985 2151 2343 2344 3087 3088 7 1984 1985 2151 2343 2344 3087 3088 7 1984 1985 2151 2343 2344 3087 3088 7 1984 1985 2151 2343 2344 3087 3088 3 1984 2343 3087 3 1984 2343 3087 3 1984 2343 3087 3 1984 2343 3087 3 1984 2343 3087 3 1984 2343 3087 2 1984 1985 2 1984 1985 2 1984 1985 2 1984 1985 2 1984 1985 2 1984 1985 3 1985 2344 3088 3 1985 2344 3088 3 1985 2344 3088 3 1985 2344 3088 3 1985 2344 3088 3 1985 2344 3088 4 1986 2345 3089 3090 4 1986 2345 3089 3090 4 1986 2345 3089 3090 4 1986 2345 3089 3090 4 1986 2345 3089 3090 4 1986 2345 3089 3090 7 1987 1988 2173 2346 2347 3091 3092 7 1987 1988 2173 2346 2347 3091 3092 7 1987 1988 2173 2346 2347 3091 3092 7 1987 1988 2173 2346 2347 3091 3092 7 1987 1988 2173 2346 2347 3091 3092 7 1987 1988 2173 2346 2347 3091 3092 3 1987 2346 3091 3 1987 2346 3091 3 1987 2346 3091 3 1987 2346 3091 3 1987 2346 3091 3 1987 2346 3091 2 1987 1988 2 1987 1988 2 1987 1988 2 1987 1988 2 1987 1988 2 1987 1988 3 1988 2347 3092 3 1988 2347 3092 3 1988 2347 3092 3 1988 2347 3092 3 1988 2347 3092 3 1988 2347 3092 4 1989 2348 3093 3094 4 1989 2348 3093 3094 4 1989 2348 3093 3094 4 1989 2348 3093 3094 4 1989 2348 3093 3094 4 1989 2348 3093 3094 7 1990 1991 2197 2349 2350 3095 3096 7 1990 1991 2197 2349 2350 3095 3096 7 1990 1991 2197 2349 2350 3095 3096 7 1990 1991 2197 2349 2350 3095 3096 7 1990 1991 2197 2349 2350 3095 3096 7 1990 1991 2197 2349 2350 3095 3096 3 1990 2349 3095 3 1990 2349 3095 3 1990 2349 3095 3 1990 2349 3095 3 1990 2349 3095 3 1990 2349 3095 2 1990 1991 2 1990 1991 2 1990 1991 2 1990 1991 2 1990 1991 2 1990 1991 3 1991 2350 3096 3 1991 2350 3096 3 1991 2350 3096 3 1991 2350 3096 3 1991 2350 3096 3 1991 2350 3096 4 1992 2351 3097 3098 4 1992 2351 3097 3098 4 1992 2351 3097 3098 4 1992 2351 3097 3098 4 1992 2351 3097 3098 4 1992 2351 3097 3098 7 1993 1994 2219 2352 2353 3099 3100 7 1993 1994 2219 2352 2353 3099 3100 7 1993 1994 2219 2352 2353 3099 3100 7 1993 1994 2219 2352 2353 3099 3100 7 1993 1994 2219 2352 2353 3099 3100 7 1993 1994 2219 2352 2353 3099 3100 3 1993 2352 3099 3 1993 2352 3099 3 1993 2352 3099 3 1993 2352 3099 3 1993 2352 3099 3 1993 2352 3099 2 1993 1994 2 1993 1994 2 1993 1994 2 1993 1994 2 1993 1994 2 1993 1994 3 1994 2353 3100 3 1994 2353 3100 3 1994 2353 3100 3 1994 2353 3100 3 1994 2353 3100 3 1994 2353 3100 4 1995 2354 3101 3102 4 1995 2354 3101 3102 4 1995 2354 3101 3102 4 1995 2354 3101 3102 4 1995 2354 3101 3102 4 1995 2354 3101 3102 7 1996 1997 2245 2355 2356 3103 3104 7 1996 1997 2245 2355 2356 3103 3104 7 1996 1997 2245 2355 2356 3103 3104 7 1996 1997 2245 2355 2356 3103 3104 7 1996 1997 2245 2355 2356 3103 3104 7 1996 1997 2245 2355 2356 3103 3104 3 1996 2355 3103 3 1996 2355 3103 3 1996 2355 3103 3 1996 2355 3103 3 1996 2355 3103 3 1996 2355 3103 2 1996 1997 2 1996 1997 2 1996 1997 2 1996 1997 2 1996 1997 2 1996 1997 3 1997 2356 3104 3 1997 2356 3104 3 1997 2356 3104 3 1997 2356 3104 3 1997 2356 3104 3 1997 2356 3104 4 1998 2357 3105 3106 4 1998 2357 3105 3106 4 1998 2357 3105 3106 4 1998 2357 3105 3106 4 1998 2357 3105 3106 4 1998 2357 3105 3106 7 1999 2000 2267 2358 2359 3107 3108 7 1999 2000 2267 2358 2359 3107 3108 7 1999 2000 2267 2358 2359 3107 3108 7 1999 2000 2267 2358 2359 3107 3108 7 1999 2000 2267 2358 2359 3107 3108 7 1999 2000 2267 2358 2359 3107 3108 3 1999 2358 3107 3 1999 2358 3107 3 1999 2358 3107 3 1999 2358 3107 3 1999 2358 3107 3 1999 2358 3107 2 1999 2000 2 1999 2000 2 1999 2000 2 1999 2000 2 1999 2000 2 1999 2000 3 2000 2359 3108 3 2000 2359 3108 3 2000 2359 3108 3 2000 2359 3108 3 2000 2359 3108 3 2000 2359 3108 2 2001 2002 2 2001 2002 2 2001 2002 2 2001 2002 2 2001 2002 2 2001 2002 2 2002 2003 2 2002 2003 2 2002 2003 2 2002 2003 2 2002 2003 2 2002 2003 2 2003 2004 2 2003 2004 2 2003 2004 2 2003 2004 2 2003 2004 2 2003 2004 2 2004 2005 2 2004 2005 2 2004 2005 2 2004 2005 2 2004 2005 2 2004 2005 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 9 2005 2006 2305 2364 2365 3115 3116 3117 3118 4 2005 2364 3116 3118 4 2005 2364 3116 3118 4 2005 2364 3116 3118 4 2005 2364 3116 3118 4 2005 2364 3116 3118 4 2005 2364 3116 3118 2 2005 2006 2 2005 2006 2 2005 2006 2 2005 2006 2 2005 2006 2 2005 2006 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 9 2006 2007 2311 2365 2366 3112 3115 3117 3119 4 2006 2365 3115 3117 4 2006 2365 3115 3117 4 2006 2365 3115 3117 4 2006 2365 3115 3117 4 2006 2365 3115 3117 4 2006 2365 3115 3117 2 2006 2007 2 2006 2007 2 2006 2007 2 2006 2007 2 2006 2007 2 2006 2007 4 2007 2366 3112 3119 4 2007 2366 3112 3119 4 2007 2366 3112 3119 4 2007 2366 3112 3119 4 2007 2366 3112 3119 4 2007 2366 3112 3119 7 2008 2367 3120 3125 3130 3164 3243 7 2008 2367 3120 3125 3130 3164 3243 7 2008 2367 3120 3125 3130 3164 3243 7 2008 2367 3120 3125 3130 3164 3243 7 2008 2367 3120 3125 3130 3164 3243 7 2008 2367 3120 3125 3130 3164 3243 3 2008 2367 3120 3 2008 2367 3120 3 2008 2367 3120 3 2008 2367 3120 3 2008 2367 3120 3 2008 2367 3120 2 2008 3125 2 2008 3125 2 2008 3125 2 2008 3125 2 2008 3125 2 2008 3125 8 2009 2010 2325 2326 2368 2369 3005 3006 8 2009 2010 2325 2326 2368 2369 3005 3006 8 2009 2010 2325 2326 2368 2369 3005 3006 8 2009 2010 2325 2326 2368 2369 3005 3006 8 2009 2010 2325 2326 2368 2369 3005 3006 8 2009 2010 2325 2326 2368 2369 3005 3006 4 2009 2010 3005 3006 4 2009 2010 3005 3006 4 2009 2010 3005 3006 4 2009 2010 3005 3006 4 2009 2010 3005 3006 4 2009 2010 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 8 2009 2010 2541 2542 2584 2585 3005 3006 3 2009 2541 2542 3 2009 2541 2542 3 2009 2541 2542 3 2009 2541 2542 3 2009 2541 2542 3 2009 2541 2542 6 2009 2540 2541 2542 3063 3064 6 2009 2540 2541 2542 3063 3064 6 2009 2540 2541 2542 3063 3064 6 2009 2540 2541 2542 3063 3064 6 2009 2540 2541 2542 3063 3064 6 2009 2540 2541 2542 3063 3064 3 2009 3063 3064 3 2009 3063 3064 3 2009 3063 3064 3 2009 3063 3064 3 2009 3063 3064 3 2009 3063 3064 3 2009 2325 2326 3 2009 2325 2326 3 2009 2325 2326 3 2009 2325 2326 3 2009 2325 2326 3 2009 2325 2326 8 2010 2011 2368 2369 2411 2412 2956 2957 8 2010 2011 2368 2369 2411 2412 2956 2957 8 2010 2011 2368 2369 2411 2412 2956 2957 8 2010 2011 2368 2369 2411 2412 2956 2957 8 2010 2011 2368 2369 2411 2412 2956 2957 8 2010 2011 2368 2369 2411 2412 2956 2957 4 2010 2011 2956 2957 4 2010 2011 2956 2957 4 2010 2011 2956 2957 4 2010 2011 2956 2957 4 2010 2011 2956 2957 4 2010 2011 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 8 2010 2011 2584 2585 2627 2628 2956 2957 3 2010 2584 2585 3 2010 2584 2585 3 2010 2584 2585 3 2010 2584 2585 3 2010 2584 2585 3 2010 2584 2585 3 2010 2368 2369 3 2010 2368 2369 3 2010 2368 2369 3 2010 2368 2369 3 2010 2368 2369 3 2010 2368 2369 8 2011 2012 2411 2412 2454 2455 2756 2900 8 2011 2012 2411 2412 2454 2455 2756 2900 8 2011 2012 2411 2412 2454 2455 2756 2900 8 2011 2012 2411 2412 2454 2455 2756 2900 8 2011 2012 2411 2412 2454 2455 2756 2900 8 2011 2012 2411 2412 2454 2455 2756 2900 4 2011 2012 2756 2900 4 2011 2012 2756 2900 4 2011 2012 2756 2900 4 2011 2012 2756 2900 4 2011 2012 2756 2900 4 2011 2012 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 8 2011 2012 2627 2628 2670 2671 2756 2900 3 2011 2627 2628 3 2011 2627 2628 3 2011 2627 2628 3 2011 2627 2628 3 2011 2627 2628 3 2011 2627 2628 3 2011 2411 2412 3 2011 2411 2412 3 2011 2411 2412 3 2011 2411 2412 3 2011 2411 2412 3 2011 2411 2412 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 11 2012 2013 2014 2454 2455 2497 2498 2757 2758 2818 2819 4 2012 2013 2757 2818 4 2012 2013 2757 2818 4 2012 2013 2757 2818 4 2012 2013 2757 2818 4 2012 2013 2757 2818 4 2012 2013 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 8 2012 2013 2670 2671 2713 2714 2757 2818 3 2012 2670 2671 3 2012 2670 2671 3 2012 2670 2671 3 2012 2670 2671 3 2012 2670 2671 3 2012 2670 2671 3 2012 2454 2455 3 2012 2454 2455 3 2012 2454 2455 3 2012 2454 2455 3 2012 2454 2455 3 2012 2454 2455 8 2013 2014 2497 2498 2713 2714 2775 2776 8 2013 2014 2497 2498 2713 2714 2775 2776 8 2013 2014 2497 2498 2713 2714 2775 2776 8 2013 2014 2497 2498 2713 2714 2775 2776 8 2013 2014 2497 2498 2713 2714 2775 2776 8 2013 2014 2497 2498 2713 2714 2775 2776 3 2013 2713 2714 3 2013 2713 2714 3 2013 2713 2714 3 2013 2713 2714 3 2013 2713 2714 3 2013 2713 2714 4 2013 2014 2497 2498 4 2013 2014 2497 2498 4 2013 2014 2497 2498 4 2013 2014 2497 2498 4 2013 2014 2497 2498 4 2013 2014 2497 2498 3 2014 2775 2776 3 2014 2775 2776 3 2014 2775 2776 3 2014 2775 2776 3 2014 2775 2776 3 2014 2775 2776 3 2014 2758 2819 3 2014 2758 2819 3 2014 2758 2819 3 2014 2758 2819 3 2014 2758 2819 3 2014 2758 2819 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 11 2015 2016 2017 2018 2326 2327 2369 2370 3006 3007 3008 4 2015 2017 3006 3007 4 2015 2017 3006 3007 4 2015 2017 3006 3007 4 2015 2017 3006 3007 4 2015 2017 3006 3007 4 2015 2017 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 8 2015 2017 2542 2543 2585 2586 3006 3007 3 2015 2542 2543 3 2015 2542 2543 3 2015 2542 2543 3 2015 2542 2543 3 2015 2542 2543 3 2015 2542 2543 5 2015 2542 2543 3064 3065 5 2015 2542 2543 3064 3065 5 2015 2542 2543 3064 3065 5 2015 2542 2543 3064 3065 5 2015 2542 2543 3064 3065 5 2015 2542 2543 3064 3065 3 2015 3064 3065 3 2015 3064 3065 3 2015 3064 3065 3 2015 3064 3065 3 2015 3064 3065 3 2015 3064 3065 4 2015 2016 2326 2327 4 2015 2016 2326 2327 4 2015 2016 2326 2327 4 2015 2016 2326 2327 4 2015 2016 2326 2327 4 2015 2016 2326 2327 3 2016 2018 3008 3 2016 2018 3008 3 2016 2018 3008 3 2016 2018 3008 3 2016 2018 3008 3 2016 2018 3008 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 11 2017 2018 2019 2020 2369 2370 2412 2413 2957 2958 2959 4 2017 2019 2957 2958 4 2017 2019 2957 2958 4 2017 2019 2957 2958 4 2017 2019 2957 2958 4 2017 2019 2957 2958 4 2017 2019 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 8 2017 2019 2585 2586 2628 2629 2957 2958 3 2017 2585 2586 3 2017 2585 2586 3 2017 2585 2586 3 2017 2585 2586 3 2017 2585 2586 3 2017 2585 2586 4 2017 2018 2369 2370 4 2017 2018 2369 2370 4 2017 2018 2369 2370 4 2017 2018 2369 2370 4 2017 2018 2369 2370 4 2017 2018 2369 2370 3 2018 2020 2959 3 2018 2020 2959 3 2018 2020 2959 3 2018 2020 2959 3 2018 2020 2959 3 2018 2020 2959 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 11 2019 2020 2021 2022 2412 2413 2455 2456 2900 2901 2902 4 2019 2021 2900 2901 4 2019 2021 2900 2901 4 2019 2021 2900 2901 4 2019 2021 2900 2901 4 2019 2021 2900 2901 4 2019 2021 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 8 2019 2021 2628 2629 2671 2672 2900 2901 3 2019 2628 2629 3 2019 2628 2629 3 2019 2628 2629 3 2019 2628 2629 3 2019 2628 2629 3 2019 2628 2629 4 2019 2020 2412 2413 4 2019 2020 2412 2413 4 2019 2020 2412 2413 4 2019 2020 2412 2413 4 2019 2020 2412 2413 4 2019 2020 2412 2413 3 2020 2022 2902 3 2020 2022 2902 3 2020 2022 2902 3 2020 2022 2902 3 2020 2022 2902 3 2020 2022 2902 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 12 2021 2022 2023 2024 2455 2456 2498 2499 2818 2819 2820 2821 4 2021 2023 2818 2820 4 2021 2023 2818 2820 4 2021 2023 2818 2820 4 2021 2023 2818 2820 4 2021 2023 2818 2820 4 2021 2023 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 8 2021 2023 2671 2672 2714 2715 2818 2820 3 2021 2671 2672 3 2021 2671 2672 3 2021 2671 2672 3 2021 2671 2672 3 2021 2671 2672 3 2021 2671 2672 4 2021 2022 2455 2456 4 2021 2022 2455 2456 4 2021 2022 2455 2456 4 2021 2022 2455 2456 4 2021 2022 2455 2456 4 2021 2022 2455 2456 4 2022 2024 2819 2821 4 2022 2024 2819 2821 4 2022 2024 2819 2821 4 2022 2024 2819 2821 4 2022 2024 2819 2821 4 2022 2024 2819 2821 8 2023 2024 2498 2499 2714 2715 2776 2777 8 2023 2024 2498 2499 2714 2715 2776 2777 8 2023 2024 2498 2499 2714 2715 2776 2777 8 2023 2024 2498 2499 2714 2715 2776 2777 8 2023 2024 2498 2499 2714 2715 2776 2777 8 2023 2024 2498 2499 2714 2715 2776 2777 3 2023 2714 2715 3 2023 2714 2715 3 2023 2714 2715 3 2023 2714 2715 3 2023 2714 2715 3 2023 2714 2715 4 2023 2024 2498 2499 4 2023 2024 2498 2499 4 2023 2024 2498 2499 4 2023 2024 2498 2499 4 2023 2024 2498 2499 4 2023 2024 2498 2499 3 2024 2776 2777 3 2024 2776 2777 3 2024 2776 2777 3 2024 2776 2777 3 2024 2776 2777 3 2024 2776 2777 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 11 2025 2026 2027 2028 2327 2328 2370 2371 3007 3008 3009 4 2025 2027 3007 3009 4 2025 2027 3007 3009 4 2025 2027 3007 3009 4 2025 2027 3007 3009 4 2025 2027 3007 3009 4 2025 2027 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 8 2025 2027 2543 2544 2586 2587 3007 3009 3 2025 2543 2544 3 2025 2543 2544 3 2025 2543 2544 3 2025 2543 2544 3 2025 2543 2544 3 2025 2543 2544 5 2025 2543 2544 3065 3067 5 2025 2543 2544 3065 3067 5 2025 2543 2544 3065 3067 5 2025 2543 2544 3065 3067 5 2025 2543 2544 3065 3067 5 2025 2543 2544 3065 3067 3 2025 3065 3067 3 2025 3065 3067 3 2025 3065 3067 3 2025 3065 3067 3 2025 3065 3067 3 2025 3065 3067 4 2025 2026 2327 2328 4 2025 2026 2327 2328 4 2025 2026 2327 2328 4 2025 2026 2327 2328 4 2025 2026 2327 2328 4 2025 2026 2327 2328 3 2026 2028 3008 3 2026 2028 3008 3 2026 2028 3008 3 2026 2028 3008 3 2026 2028 3008 3 2026 2028 3008 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 11 2027 2028 2029 2030 2370 2371 2413 2414 2958 2959 2960 4 2027 2029 2958 2960 4 2027 2029 2958 2960 4 2027 2029 2958 2960 4 2027 2029 2958 2960 4 2027 2029 2958 2960 4 2027 2029 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 8 2027 2029 2586 2587 2629 2630 2958 2960 3 2027 2586 2587 3 2027 2586 2587 3 2027 2586 2587 3 2027 2586 2587 3 2027 2586 2587 3 2027 2586 2587 4 2027 2028 2370 2371 4 2027 2028 2370 2371 4 2027 2028 2370 2371 4 2027 2028 2370 2371 4 2027 2028 2370 2371 4 2027 2028 2370 2371 3 2028 2030 2959 3 2028 2030 2959 3 2028 2030 2959 3 2028 2030 2959 3 2028 2030 2959 3 2028 2030 2959 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 11 2029 2030 2031 2032 2413 2414 2456 2457 2901 2902 2903 4 2029 2031 2901 2903 4 2029 2031 2901 2903 4 2029 2031 2901 2903 4 2029 2031 2901 2903 4 2029 2031 2901 2903 4 2029 2031 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 8 2029 2031 2629 2630 2672 2673 2901 2903 3 2029 2629 2630 3 2029 2629 2630 3 2029 2629 2630 3 2029 2629 2630 3 2029 2629 2630 3 2029 2629 2630 4 2029 2030 2413 2414 4 2029 2030 2413 2414 4 2029 2030 2413 2414 4 2029 2030 2413 2414 4 2029 2030 2413 2414 4 2029 2030 2413 2414 3 2030 2032 2902 3 2030 2032 2902 3 2030 2032 2902 3 2030 2032 2902 3 2030 2032 2902 3 2030 2032 2902 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 12 2031 2032 2033 2034 2456 2457 2499 2500 2820 2821 2822 2823 4 2031 2033 2820 2822 4 2031 2033 2820 2822 4 2031 2033 2820 2822 4 2031 2033 2820 2822 4 2031 2033 2820 2822 4 2031 2033 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 8 2031 2033 2672 2673 2715 2716 2820 2822 3 2031 2672 2673 3 2031 2672 2673 3 2031 2672 2673 3 2031 2672 2673 3 2031 2672 2673 3 2031 2672 2673 4 2031 2032 2456 2457 4 2031 2032 2456 2457 4 2031 2032 2456 2457 4 2031 2032 2456 2457 4 2031 2032 2456 2457 4 2031 2032 2456 2457 4 2032 2034 2821 2823 4 2032 2034 2821 2823 4 2032 2034 2821 2823 4 2032 2034 2821 2823 4 2032 2034 2821 2823 4 2032 2034 2821 2823 8 2033 2034 2499 2500 2715 2716 2777 2778 8 2033 2034 2499 2500 2715 2716 2777 2778 8 2033 2034 2499 2500 2715 2716 2777 2778 8 2033 2034 2499 2500 2715 2716 2777 2778 8 2033 2034 2499 2500 2715 2716 2777 2778 8 2033 2034 2499 2500 2715 2716 2777 2778 3 2033 2715 2716 3 2033 2715 2716 3 2033 2715 2716 3 2033 2715 2716 3 2033 2715 2716 3 2033 2715 2716 4 2033 2034 2499 2500 4 2033 2034 2499 2500 4 2033 2034 2499 2500 4 2033 2034 2499 2500 4 2033 2034 2499 2500 4 2033 2034 2499 2500 3 2034 2777 2778 3 2034 2777 2778 3 2034 2777 2778 3 2034 2777 2778 3 2034 2777 2778 3 2034 2777 2778 8 2035 2036 2328 2329 2371 2372 3009 3010 8 2035 2036 2328 2329 2371 2372 3009 3010 8 2035 2036 2328 2329 2371 2372 3009 3010 8 2035 2036 2328 2329 2371 2372 3009 3010 8 2035 2036 2328 2329 2371 2372 3009 3010 8 2035 2036 2328 2329 2371 2372 3009 3010 4 2035 2036 3009 3010 4 2035 2036 3009 3010 4 2035 2036 3009 3010 4 2035 2036 3009 3010 4 2035 2036 3009 3010 4 2035 2036 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 8 2035 2036 2544 2545 2587 2588 3009 3010 3 2035 2544 2545 3 2035 2544 2545 3 2035 2544 2545 3 2035 2544 2545 3 2035 2544 2545 3 2035 2544 2545 5 2035 2544 2545 3067 3068 5 2035 2544 2545 3067 3068 5 2035 2544 2545 3067 3068 5 2035 2544 2545 3067 3068 5 2035 2544 2545 3067 3068 5 2035 2544 2545 3067 3068 3 2035 3067 3068 3 2035 3067 3068 3 2035 3067 3068 3 2035 3067 3068 3 2035 3067 3068 3 2035 3067 3068 3 2035 2328 2329 3 2035 2328 2329 3 2035 2328 2329 3 2035 2328 2329 3 2035 2328 2329 3 2035 2328 2329 8 2036 2037 2371 2372 2414 2415 2960 2961 8 2036 2037 2371 2372 2414 2415 2960 2961 8 2036 2037 2371 2372 2414 2415 2960 2961 8 2036 2037 2371 2372 2414 2415 2960 2961 8 2036 2037 2371 2372 2414 2415 2960 2961 8 2036 2037 2371 2372 2414 2415 2960 2961 4 2036 2037 2960 2961 4 2036 2037 2960 2961 4 2036 2037 2960 2961 4 2036 2037 2960 2961 4 2036 2037 2960 2961 4 2036 2037 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 8 2036 2037 2587 2588 2630 2631 2960 2961 3 2036 2587 2588 3 2036 2587 2588 3 2036 2587 2588 3 2036 2587 2588 3 2036 2587 2588 3 2036 2587 2588 3 2036 2371 2372 3 2036 2371 2372 3 2036 2371 2372 3 2036 2371 2372 3 2036 2371 2372 3 2036 2371 2372 8 2037 2038 2414 2415 2457 2458 2903 2904 8 2037 2038 2414 2415 2457 2458 2903 2904 8 2037 2038 2414 2415 2457 2458 2903 2904 8 2037 2038 2414 2415 2457 2458 2903 2904 8 2037 2038 2414 2415 2457 2458 2903 2904 8 2037 2038 2414 2415 2457 2458 2903 2904 4 2037 2038 2903 2904 4 2037 2038 2903 2904 4 2037 2038 2903 2904 4 2037 2038 2903 2904 4 2037 2038 2903 2904 4 2037 2038 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 8 2037 2038 2630 2631 2673 2674 2903 2904 3 2037 2630 2631 3 2037 2630 2631 3 2037 2630 2631 3 2037 2630 2631 3 2037 2630 2631 3 2037 2630 2631 3 2037 2414 2415 3 2037 2414 2415 3 2037 2414 2415 3 2037 2414 2415 3 2037 2414 2415 3 2037 2414 2415 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 11 2038 2039 2040 2457 2458 2500 2501 2822 2823 2824 2825 4 2038 2039 2822 2824 4 2038 2039 2822 2824 4 2038 2039 2822 2824 4 2038 2039 2822 2824 4 2038 2039 2822 2824 4 2038 2039 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 8 2038 2039 2673 2674 2716 2717 2822 2824 3 2038 2673 2674 3 2038 2673 2674 3 2038 2673 2674 3 2038 2673 2674 3 2038 2673 2674 3 2038 2673 2674 3 2038 2457 2458 3 2038 2457 2458 3 2038 2457 2458 3 2038 2457 2458 3 2038 2457 2458 3 2038 2457 2458 8 2039 2040 2500 2501 2716 2717 2778 2779 8 2039 2040 2500 2501 2716 2717 2778 2779 8 2039 2040 2500 2501 2716 2717 2778 2779 8 2039 2040 2500 2501 2716 2717 2778 2779 8 2039 2040 2500 2501 2716 2717 2778 2779 8 2039 2040 2500 2501 2716 2717 2778 2779 3 2039 2716 2717 3 2039 2716 2717 3 2039 2716 2717 3 2039 2716 2717 3 2039 2716 2717 3 2039 2716 2717 4 2039 2040 2500 2501 4 2039 2040 2500 2501 4 2039 2040 2500 2501 4 2039 2040 2500 2501 4 2039 2040 2500 2501 4 2039 2040 2500 2501 3 2040 2778 2779 3 2040 2778 2779 3 2040 2778 2779 3 2040 2778 2779 3 2040 2778 2779 3 2040 2778 2779 3 2040 2823 2825 3 2040 2823 2825 3 2040 2823 2825 3 2040 2823 2825 3 2040 2823 2825 3 2040 2823 2825 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 10 2041 2042 2043 2329 2330 2372 2373 3010 3011 3012 4 2041 2043 3010 3011 4 2041 2043 3010 3011 4 2041 2043 3010 3011 4 2041 2043 3010 3011 4 2041 2043 3010 3011 4 2041 2043 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 8 2041 2043 2545 2546 2588 2589 3010 3011 3 2041 2545 2546 3 2041 2545 2546 3 2041 2545 2546 3 2041 2545 2546 3 2041 2545 2546 3 2041 2545 2546 5 2041 2545 2546 3068 3069 5 2041 2545 2546 3068 3069 5 2041 2545 2546 3068 3069 5 2041 2545 2546 3068 3069 5 2041 2545 2546 3068 3069 5 2041 2545 2546 3068 3069 3 2041 3068 3069 3 2041 3068 3069 3 2041 3068 3069 3 2041 3068 3069 3 2041 3068 3069 3 2041 3068 3069 4 2041 2042 2329 2330 4 2041 2042 2329 2330 4 2041 2042 2329 2330 4 2041 2042 2329 2330 4 2041 2042 2329 2330 4 2041 2042 2329 2330 2 2042 3012 2 2042 3012 2 2042 3012 2 2042 3012 2 2042 3012 2 2042 3012 8 2043 2044 2372 2373 2415 2416 2961 2962 8 2043 2044 2372 2373 2415 2416 2961 2962 8 2043 2044 2372 2373 2415 2416 2961 2962 8 2043 2044 2372 2373 2415 2416 2961 2962 8 2043 2044 2372 2373 2415 2416 2961 2962 8 2043 2044 2372 2373 2415 2416 2961 2962 4 2043 2044 2961 2962 4 2043 2044 2961 2962 4 2043 2044 2961 2962 4 2043 2044 2961 2962 4 2043 2044 2961 2962 4 2043 2044 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 8 2043 2044 2588 2589 2631 2632 2961 2962 3 2043 2588 2589 3 2043 2588 2589 3 2043 2588 2589 3 2043 2588 2589 3 2043 2588 2589 3 2043 2588 2589 3 2043 2372 2373 3 2043 2372 2373 3 2043 2372 2373 3 2043 2372 2373 3 2043 2372 2373 3 2043 2372 2373 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 10 2044 2045 2046 2415 2416 2458 2459 2904 2905 2906 4 2044 2045 2904 2905 4 2044 2045 2904 2905 4 2044 2045 2904 2905 4 2044 2045 2904 2905 4 2044 2045 2904 2905 4 2044 2045 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 8 2044 2045 2631 2632 2674 2675 2904 2905 3 2044 2631 2632 3 2044 2631 2632 3 2044 2631 2632 3 2044 2631 2632 3 2044 2631 2632 3 2044 2631 2632 3 2044 2415 2416 3 2044 2415 2416 3 2044 2415 2416 3 2044 2415 2416 3 2044 2415 2416 3 2044 2415 2416 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 12 2045 2046 2047 2048 2458 2459 2501 2502 2824 2825 2826 2827 4 2045 2047 2824 2826 4 2045 2047 2824 2826 4 2045 2047 2824 2826 4 2045 2047 2824 2826 4 2045 2047 2824 2826 4 2045 2047 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 8 2045 2047 2674 2675 2717 2718 2824 2826 3 2045 2674 2675 3 2045 2674 2675 3 2045 2674 2675 3 2045 2674 2675 3 2045 2674 2675 3 2045 2674 2675 4 2045 2046 2458 2459 4 2045 2046 2458 2459 4 2045 2046 2458 2459 4 2045 2046 2458 2459 4 2045 2046 2458 2459 4 2045 2046 2458 2459 4 2046 2048 2825 2827 4 2046 2048 2825 2827 4 2046 2048 2825 2827 4 2046 2048 2825 2827 4 2046 2048 2825 2827 4 2046 2048 2825 2827 2 2046 2906 2 2046 2906 2 2046 2906 2 2046 2906 2 2046 2906 2 2046 2906 8 2047 2048 2501 2502 2717 2718 2779 2780 8 2047 2048 2501 2502 2717 2718 2779 2780 8 2047 2048 2501 2502 2717 2718 2779 2780 8 2047 2048 2501 2502 2717 2718 2779 2780 8 2047 2048 2501 2502 2717 2718 2779 2780 8 2047 2048 2501 2502 2717 2718 2779 2780 3 2047 2717 2718 3 2047 2717 2718 3 2047 2717 2718 3 2047 2717 2718 3 2047 2717 2718 3 2047 2717 2718 4 2047 2048 2501 2502 4 2047 2048 2501 2502 4 2047 2048 2501 2502 4 2047 2048 2501 2502 4 2047 2048 2501 2502 4 2047 2048 2501 2502 3 2048 2779 2780 3 2048 2779 2780 3 2048 2779 2780 3 2048 2779 2780 3 2048 2779 2780 3 2048 2779 2780 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 11 2049 2050 2051 2052 2330 2331 2373 2374 3011 3012 3013 4 2049 2051 3011 3013 4 2049 2051 3011 3013 4 2049 2051 3011 3013 4 2049 2051 3011 3013 4 2049 2051 3011 3013 4 2049 2051 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 8 2049 2051 2546 2547 2589 2590 3011 3013 3 2049 2546 2547 3 2049 2546 2547 3 2049 2546 2547 3 2049 2546 2547 3 2049 2546 2547 3 2049 2546 2547 5 2049 2546 2547 3069 3071 5 2049 2546 2547 3069 3071 5 2049 2546 2547 3069 3071 5 2049 2546 2547 3069 3071 5 2049 2546 2547 3069 3071 5 2049 2546 2547 3069 3071 3 2049 3069 3071 3 2049 3069 3071 3 2049 3069 3071 3 2049 3069 3071 3 2049 3069 3071 3 2049 3069 3071 4 2049 2050 2330 2331 4 2049 2050 2330 2331 4 2049 2050 2330 2331 4 2049 2050 2330 2331 4 2049 2050 2330 2331 4 2049 2050 2330 2331 3 2050 2052 3012 3 2050 2052 3012 3 2050 2052 3012 3 2050 2052 3012 3 2050 2052 3012 3 2050 2052 3012 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 10 2051 2052 2053 2054 2373 2374 2416 2417 2962 2963 4 2051 2053 2962 2963 4 2051 2053 2962 2963 4 2051 2053 2962 2963 4 2051 2053 2962 2963 4 2051 2053 2962 2963 4 2051 2053 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 8 2051 2053 2589 2590 2632 2633 2962 2963 3 2051 2589 2590 3 2051 2589 2590 3 2051 2589 2590 3 2051 2589 2590 3 2051 2589 2590 3 2051 2589 2590 4 2051 2052 2373 2374 4 2051 2052 2373 2374 4 2051 2052 2373 2374 4 2051 2052 2373 2374 4 2051 2052 2373 2374 4 2051 2052 2373 2374 2 2052 2054 2 2052 2054 2 2052 2054 2 2052 2054 2 2052 2054 2 2052 2054 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 11 2053 2054 2055 2056 2416 2417 2459 2460 2905 2906 2907 4 2053 2055 2905 2907 4 2053 2055 2905 2907 4 2053 2055 2905 2907 4 2053 2055 2905 2907 4 2053 2055 2905 2907 4 2053 2055 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 8 2053 2055 2632 2633 2675 2676 2905 2907 3 2053 2632 2633 3 2053 2632 2633 3 2053 2632 2633 3 2053 2632 2633 3 2053 2632 2633 3 2053 2632 2633 4 2053 2054 2416 2417 4 2053 2054 2416 2417 4 2053 2054 2416 2417 4 2053 2054 2416 2417 4 2053 2054 2416 2417 4 2053 2054 2416 2417 3 2054 2056 2906 3 2054 2056 2906 3 2054 2056 2906 3 2054 2056 2906 3 2054 2056 2906 3 2054 2056 2906 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 12 2055 2056 2057 2058 2459 2460 2502 2503 2826 2827 2828 2829 4 2055 2057 2826 2828 4 2055 2057 2826 2828 4 2055 2057 2826 2828 4 2055 2057 2826 2828 4 2055 2057 2826 2828 4 2055 2057 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 8 2055 2057 2675 2676 2718 2719 2826 2828 3 2055 2675 2676 3 2055 2675 2676 3 2055 2675 2676 3 2055 2675 2676 3 2055 2675 2676 3 2055 2675 2676 4 2055 2056 2459 2460 4 2055 2056 2459 2460 4 2055 2056 2459 2460 4 2055 2056 2459 2460 4 2055 2056 2459 2460 4 2055 2056 2459 2460 4 2056 2058 2827 2829 4 2056 2058 2827 2829 4 2056 2058 2827 2829 4 2056 2058 2827 2829 4 2056 2058 2827 2829 4 2056 2058 2827 2829 8 2057 2058 2502 2503 2718 2719 2780 2781 8 2057 2058 2502 2503 2718 2719 2780 2781 8 2057 2058 2502 2503 2718 2719 2780 2781 8 2057 2058 2502 2503 2718 2719 2780 2781 8 2057 2058 2502 2503 2718 2719 2780 2781 8 2057 2058 2502 2503 2718 2719 2780 2781 3 2057 2718 2719 3 2057 2718 2719 3 2057 2718 2719 3 2057 2718 2719 3 2057 2718 2719 3 2057 2718 2719 4 2057 2058 2502 2503 4 2057 2058 2502 2503 4 2057 2058 2502 2503 4 2057 2058 2502 2503 4 2057 2058 2502 2503 4 2057 2058 2502 2503 3 2058 2780 2781 3 2058 2780 2781 3 2058 2780 2781 3 2058 2780 2781 3 2058 2780 2781 3 2058 2780 2781 8 2059 2060 2331 2332 2374 2375 3013 3014 8 2059 2060 2331 2332 2374 2375 3013 3014 8 2059 2060 2331 2332 2374 2375 3013 3014 8 2059 2060 2331 2332 2374 2375 3013 3014 8 2059 2060 2331 2332 2374 2375 3013 3014 8 2059 2060 2331 2332 2374 2375 3013 3014 4 2059 2060 3013 3014 4 2059 2060 3013 3014 4 2059 2060 3013 3014 4 2059 2060 3013 3014 4 2059 2060 3013 3014 4 2059 2060 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 8 2059 2060 2547 2548 2590 2591 3013 3014 3 2059 2547 2548 3 2059 2547 2548 3 2059 2547 2548 3 2059 2547 2548 3 2059 2547 2548 3 2059 2547 2548 5 2059 2547 2548 3071 3072 5 2059 2547 2548 3071 3072 5 2059 2547 2548 3071 3072 5 2059 2547 2548 3071 3072 5 2059 2547 2548 3071 3072 5 2059 2547 2548 3071 3072 3 2059 3071 3072 3 2059 3071 3072 3 2059 3071 3072 3 2059 3071 3072 3 2059 3071 3072 3 2059 3071 3072 3 2059 2331 2332 3 2059 2331 2332 3 2059 2331 2332 3 2059 2331 2332 3 2059 2331 2332 3 2059 2331 2332 8 2060 2061 2374 2375 2417 2418 2963 2964 8 2060 2061 2374 2375 2417 2418 2963 2964 8 2060 2061 2374 2375 2417 2418 2963 2964 8 2060 2061 2374 2375 2417 2418 2963 2964 8 2060 2061 2374 2375 2417 2418 2963 2964 8 2060 2061 2374 2375 2417 2418 2963 2964 4 2060 2061 2963 2964 4 2060 2061 2963 2964 4 2060 2061 2963 2964 4 2060 2061 2963 2964 4 2060 2061 2963 2964 4 2060 2061 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 8 2060 2061 2590 2591 2633 2634 2963 2964 3 2060 2590 2591 3 2060 2590 2591 3 2060 2590 2591 3 2060 2590 2591 3 2060 2590 2591 3 2060 2590 2591 3 2060 2374 2375 3 2060 2374 2375 3 2060 2374 2375 3 2060 2374 2375 3 2060 2374 2375 3 2060 2374 2375 8 2061 2062 2417 2418 2460 2461 2907 2908 8 2061 2062 2417 2418 2460 2461 2907 2908 8 2061 2062 2417 2418 2460 2461 2907 2908 8 2061 2062 2417 2418 2460 2461 2907 2908 8 2061 2062 2417 2418 2460 2461 2907 2908 8 2061 2062 2417 2418 2460 2461 2907 2908 4 2061 2062 2907 2908 4 2061 2062 2907 2908 4 2061 2062 2907 2908 4 2061 2062 2907 2908 4 2061 2062 2907 2908 4 2061 2062 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 8 2061 2062 2633 2634 2676 2677 2907 2908 3 2061 2633 2634 3 2061 2633 2634 3 2061 2633 2634 3 2061 2633 2634 3 2061 2633 2634 3 2061 2633 2634 3 2061 2417 2418 3 2061 2417 2418 3 2061 2417 2418 3 2061 2417 2418 3 2061 2417 2418 3 2061 2417 2418 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 11 2062 2063 2064 2460 2461 2503 2504 2828 2829 2830 2831 4 2062 2063 2828 2830 4 2062 2063 2828 2830 4 2062 2063 2828 2830 4 2062 2063 2828 2830 4 2062 2063 2828 2830 4 2062 2063 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 8 2062 2063 2676 2677 2719 2720 2828 2830 3 2062 2676 2677 3 2062 2676 2677 3 2062 2676 2677 3 2062 2676 2677 3 2062 2676 2677 3 2062 2676 2677 3 2062 2460 2461 3 2062 2460 2461 3 2062 2460 2461 3 2062 2460 2461 3 2062 2460 2461 3 2062 2460 2461 8 2063 2064 2503 2504 2719 2720 2781 2782 8 2063 2064 2503 2504 2719 2720 2781 2782 8 2063 2064 2503 2504 2719 2720 2781 2782 8 2063 2064 2503 2504 2719 2720 2781 2782 8 2063 2064 2503 2504 2719 2720 2781 2782 8 2063 2064 2503 2504 2719 2720 2781 2782 3 2063 2719 2720 3 2063 2719 2720 3 2063 2719 2720 3 2063 2719 2720 3 2063 2719 2720 3 2063 2719 2720 4 2063 2064 2503 2504 4 2063 2064 2503 2504 4 2063 2064 2503 2504 4 2063 2064 2503 2504 4 2063 2064 2503 2504 4 2063 2064 2503 2504 3 2064 2781 2782 3 2064 2781 2782 3 2064 2781 2782 3 2064 2781 2782 3 2064 2781 2782 3 2064 2781 2782 3 2064 2829 2831 3 2064 2829 2831 3 2064 2829 2831 3 2064 2829 2831 3 2064 2829 2831 3 2064 2829 2831 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 10 2065 2066 2067 2332 2333 2375 2376 3014 3015 3016 4 2065 2067 3014 3015 4 2065 2067 3014 3015 4 2065 2067 3014 3015 4 2065 2067 3014 3015 4 2065 2067 3014 3015 4 2065 2067 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 8 2065 2067 2548 2549 2591 2592 3014 3015 3 2065 2548 2549 3 2065 2548 2549 3 2065 2548 2549 3 2065 2548 2549 3 2065 2548 2549 3 2065 2548 2549 5 2065 2548 2549 3072 3073 5 2065 2548 2549 3072 3073 5 2065 2548 2549 3072 3073 5 2065 2548 2549 3072 3073 5 2065 2548 2549 3072 3073 5 2065 2548 2549 3072 3073 3 2065 3072 3073 3 2065 3072 3073 3 2065 3072 3073 3 2065 3072 3073 3 2065 3072 3073 3 2065 3072 3073 4 2065 2066 2332 2333 4 2065 2066 2332 2333 4 2065 2066 2332 2333 4 2065 2066 2332 2333 4 2065 2066 2332 2333 4 2065 2066 2332 2333 2 2066 3016 2 2066 3016 2 2066 3016 2 2066 3016 2 2066 3016 2 2066 3016 8 2067 2068 2375 2376 2418 2419 2964 2965 8 2067 2068 2375 2376 2418 2419 2964 2965 8 2067 2068 2375 2376 2418 2419 2964 2965 8 2067 2068 2375 2376 2418 2419 2964 2965 8 2067 2068 2375 2376 2418 2419 2964 2965 8 2067 2068 2375 2376 2418 2419 2964 2965 4 2067 2068 2964 2965 4 2067 2068 2964 2965 4 2067 2068 2964 2965 4 2067 2068 2964 2965 4 2067 2068 2964 2965 4 2067 2068 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 8 2067 2068 2591 2592 2634 2635 2964 2965 3 2067 2591 2592 3 2067 2591 2592 3 2067 2591 2592 3 2067 2591 2592 3 2067 2591 2592 3 2067 2591 2592 3 2067 2375 2376 3 2067 2375 2376 3 2067 2375 2376 3 2067 2375 2376 3 2067 2375 2376 3 2067 2375 2376 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 10 2068 2069 2070 2418 2419 2461 2462 2908 2909 2910 4 2068 2069 2908 2909 4 2068 2069 2908 2909 4 2068 2069 2908 2909 4 2068 2069 2908 2909 4 2068 2069 2908 2909 4 2068 2069 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 8 2068 2069 2634 2635 2677 2678 2908 2909 3 2068 2634 2635 3 2068 2634 2635 3 2068 2634 2635 3 2068 2634 2635 3 2068 2634 2635 3 2068 2634 2635 3 2068 2418 2419 3 2068 2418 2419 3 2068 2418 2419 3 2068 2418 2419 3 2068 2418 2419 3 2068 2418 2419 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 12 2069 2070 2071 2072 2461 2462 2504 2505 2830 2831 2832 2833 4 2069 2071 2830 2832 4 2069 2071 2830 2832 4 2069 2071 2830 2832 4 2069 2071 2830 2832 4 2069 2071 2830 2832 4 2069 2071 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 8 2069 2071 2677 2678 2720 2721 2830 2832 3 2069 2677 2678 3 2069 2677 2678 3 2069 2677 2678 3 2069 2677 2678 3 2069 2677 2678 3 2069 2677 2678 4 2069 2070 2461 2462 4 2069 2070 2461 2462 4 2069 2070 2461 2462 4 2069 2070 2461 2462 4 2069 2070 2461 2462 4 2069 2070 2461 2462 4 2070 2072 2831 2833 4 2070 2072 2831 2833 4 2070 2072 2831 2833 4 2070 2072 2831 2833 4 2070 2072 2831 2833 4 2070 2072 2831 2833 2 2070 2910 2 2070 2910 2 2070 2910 2 2070 2910 2 2070 2910 2 2070 2910 8 2071 2072 2504 2505 2720 2721 2782 2783 8 2071 2072 2504 2505 2720 2721 2782 2783 8 2071 2072 2504 2505 2720 2721 2782 2783 8 2071 2072 2504 2505 2720 2721 2782 2783 8 2071 2072 2504 2505 2720 2721 2782 2783 8 2071 2072 2504 2505 2720 2721 2782 2783 3 2071 2720 2721 3 2071 2720 2721 3 2071 2720 2721 3 2071 2720 2721 3 2071 2720 2721 3 2071 2720 2721 4 2071 2072 2504 2505 4 2071 2072 2504 2505 4 2071 2072 2504 2505 4 2071 2072 2504 2505 4 2071 2072 2504 2505 4 2071 2072 2504 2505 3 2072 2782 2783 3 2072 2782 2783 3 2072 2782 2783 3 2072 2782 2783 3 2072 2782 2783 3 2072 2782 2783 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 10 2073 2074 2075 2333 2334 2376 2377 3015 3016 3017 4 2073 2075 3015 3017 4 2073 2075 3015 3017 4 2073 2075 3015 3017 4 2073 2075 3015 3017 4 2073 2075 3015 3017 4 2073 2075 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 8 2073 2075 2549 2550 2592 2593 3015 3017 3 2073 2549 2550 3 2073 2549 2550 3 2073 2549 2550 3 2073 2549 2550 3 2073 2549 2550 3 2073 2549 2550 5 2073 2549 2550 3073 3075 5 2073 2549 2550 3073 3075 5 2073 2549 2550 3073 3075 5 2073 2549 2550 3073 3075 5 2073 2549 2550 3073 3075 5 2073 2549 2550 3073 3075 3 2073 3073 3075 3 2073 3073 3075 3 2073 3073 3075 3 2073 3073 3075 3 2073 3073 3075 3 2073 3073 3075 4 2073 2074 2333 2334 4 2073 2074 2333 2334 4 2073 2074 2333 2334 4 2073 2074 2333 2334 4 2073 2074 2333 2334 4 2073 2074 2333 2334 2 2074 3016 2 2074 3016 2 2074 3016 2 2074 3016 2 2074 3016 2 2074 3016 8 2075 2076 2376 2377 2419 2420 2965 2966 8 2075 2076 2376 2377 2419 2420 2965 2966 8 2075 2076 2376 2377 2419 2420 2965 2966 8 2075 2076 2376 2377 2419 2420 2965 2966 8 2075 2076 2376 2377 2419 2420 2965 2966 8 2075 2076 2376 2377 2419 2420 2965 2966 4 2075 2076 2965 2966 4 2075 2076 2965 2966 4 2075 2076 2965 2966 4 2075 2076 2965 2966 4 2075 2076 2965 2966 4 2075 2076 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 8 2075 2076 2592 2593 2635 2636 2965 2966 3 2075 2592 2593 3 2075 2592 2593 3 2075 2592 2593 3 2075 2592 2593 3 2075 2592 2593 3 2075 2592 2593 3 2075 2376 2377 3 2075 2376 2377 3 2075 2376 2377 3 2075 2376 2377 3 2075 2376 2377 3 2075 2376 2377 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 10 2076 2077 2078 2419 2420 2462 2463 2909 2910 2911 4 2076 2077 2909 2911 4 2076 2077 2909 2911 4 2076 2077 2909 2911 4 2076 2077 2909 2911 4 2076 2077 2909 2911 4 2076 2077 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 8 2076 2077 2635 2636 2678 2679 2909 2911 3 2076 2635 2636 3 2076 2635 2636 3 2076 2635 2636 3 2076 2635 2636 3 2076 2635 2636 3 2076 2635 2636 3 2076 2419 2420 3 2076 2419 2420 3 2076 2419 2420 3 2076 2419 2420 3 2076 2419 2420 3 2076 2419 2420 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 12 2077 2078 2079 2080 2462 2463 2505 2506 2832 2833 2834 2835 4 2077 2079 2832 2834 4 2077 2079 2832 2834 4 2077 2079 2832 2834 4 2077 2079 2832 2834 4 2077 2079 2832 2834 4 2077 2079 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 8 2077 2079 2678 2679 2721 2722 2832 2834 3 2077 2678 2679 3 2077 2678 2679 3 2077 2678 2679 3 2077 2678 2679 3 2077 2678 2679 3 2077 2678 2679 4 2077 2078 2462 2463 4 2077 2078 2462 2463 4 2077 2078 2462 2463 4 2077 2078 2462 2463 4 2077 2078 2462 2463 4 2077 2078 2462 2463 4 2078 2080 2833 2835 4 2078 2080 2833 2835 4 2078 2080 2833 2835 4 2078 2080 2833 2835 4 2078 2080 2833 2835 4 2078 2080 2833 2835 2 2078 2910 2 2078 2910 2 2078 2910 2 2078 2910 2 2078 2910 2 2078 2910 8 2079 2080 2505 2506 2721 2722 2783 2784 8 2079 2080 2505 2506 2721 2722 2783 2784 8 2079 2080 2505 2506 2721 2722 2783 2784 8 2079 2080 2505 2506 2721 2722 2783 2784 8 2079 2080 2505 2506 2721 2722 2783 2784 8 2079 2080 2505 2506 2721 2722 2783 2784 3 2079 2721 2722 3 2079 2721 2722 3 2079 2721 2722 3 2079 2721 2722 3 2079 2721 2722 3 2079 2721 2722 4 2079 2080 2505 2506 4 2079 2080 2505 2506 4 2079 2080 2505 2506 4 2079 2080 2505 2506 4 2079 2080 2505 2506 4 2079 2080 2505 2506 3 2080 2783 2784 3 2080 2783 2784 3 2080 2783 2784 3 2080 2783 2784 3 2080 2783 2784 3 2080 2783 2784 8 2081 2082 2334 2335 2377 2378 3017 3018 8 2081 2082 2334 2335 2377 2378 3017 3018 8 2081 2082 2334 2335 2377 2378 3017 3018 8 2081 2082 2334 2335 2377 2378 3017 3018 8 2081 2082 2334 2335 2377 2378 3017 3018 8 2081 2082 2334 2335 2377 2378 3017 3018 4 2081 2082 3017 3018 4 2081 2082 3017 3018 4 2081 2082 3017 3018 4 2081 2082 3017 3018 4 2081 2082 3017 3018 4 2081 2082 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 8 2081 2082 2550 2551 2593 2594 3017 3018 3 2081 2550 2551 3 2081 2550 2551 3 2081 2550 2551 3 2081 2550 2551 3 2081 2550 2551 3 2081 2550 2551 5 2081 2550 2551 3075 3076 5 2081 2550 2551 3075 3076 5 2081 2550 2551 3075 3076 5 2081 2550 2551 3075 3076 5 2081 2550 2551 3075 3076 5 2081 2550 2551 3075 3076 3 2081 3075 3076 3 2081 3075 3076 3 2081 3075 3076 3 2081 3075 3076 3 2081 3075 3076 3 2081 3075 3076 3 2081 2334 2335 3 2081 2334 2335 3 2081 2334 2335 3 2081 2334 2335 3 2081 2334 2335 3 2081 2334 2335 8 2082 2083 2377 2378 2420 2421 2966 2967 8 2082 2083 2377 2378 2420 2421 2966 2967 8 2082 2083 2377 2378 2420 2421 2966 2967 8 2082 2083 2377 2378 2420 2421 2966 2967 8 2082 2083 2377 2378 2420 2421 2966 2967 8 2082 2083 2377 2378 2420 2421 2966 2967 4 2082 2083 2966 2967 4 2082 2083 2966 2967 4 2082 2083 2966 2967 4 2082 2083 2966 2967 4 2082 2083 2966 2967 4 2082 2083 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 8 2082 2083 2593 2594 2636 2637 2966 2967 3 2082 2593 2594 3 2082 2593 2594 3 2082 2593 2594 3 2082 2593 2594 3 2082 2593 2594 3 2082 2593 2594 3 2082 2377 2378 3 2082 2377 2378 3 2082 2377 2378 3 2082 2377 2378 3 2082 2377 2378 3 2082 2377 2378 8 2083 2084 2420 2421 2463 2464 2911 2912 8 2083 2084 2420 2421 2463 2464 2911 2912 8 2083 2084 2420 2421 2463 2464 2911 2912 8 2083 2084 2420 2421 2463 2464 2911 2912 8 2083 2084 2420 2421 2463 2464 2911 2912 8 2083 2084 2420 2421 2463 2464 2911 2912 4 2083 2084 2911 2912 4 2083 2084 2911 2912 4 2083 2084 2911 2912 4 2083 2084 2911 2912 4 2083 2084 2911 2912 4 2083 2084 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 8 2083 2084 2636 2637 2679 2680 2911 2912 3 2083 2636 2637 3 2083 2636 2637 3 2083 2636 2637 3 2083 2636 2637 3 2083 2636 2637 3 2083 2636 2637 3 2083 2420 2421 3 2083 2420 2421 3 2083 2420 2421 3 2083 2420 2421 3 2083 2420 2421 3 2083 2420 2421 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 11 2084 2085 2086 2463 2464 2506 2507 2834 2835 2836 2837 4 2084 2085 2834 2836 4 2084 2085 2834 2836 4 2084 2085 2834 2836 4 2084 2085 2834 2836 4 2084 2085 2834 2836 4 2084 2085 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 8 2084 2085 2679 2680 2722 2723 2834 2836 3 2084 2679 2680 3 2084 2679 2680 3 2084 2679 2680 3 2084 2679 2680 3 2084 2679 2680 3 2084 2679 2680 3 2084 2463 2464 3 2084 2463 2464 3 2084 2463 2464 3 2084 2463 2464 3 2084 2463 2464 3 2084 2463 2464 8 2085 2086 2506 2507 2722 2723 2784 2785 8 2085 2086 2506 2507 2722 2723 2784 2785 8 2085 2086 2506 2507 2722 2723 2784 2785 8 2085 2086 2506 2507 2722 2723 2784 2785 8 2085 2086 2506 2507 2722 2723 2784 2785 8 2085 2086 2506 2507 2722 2723 2784 2785 3 2085 2722 2723 3 2085 2722 2723 3 2085 2722 2723 3 2085 2722 2723 3 2085 2722 2723 3 2085 2722 2723 4 2085 2086 2506 2507 4 2085 2086 2506 2507 4 2085 2086 2506 2507 4 2085 2086 2506 2507 4 2085 2086 2506 2507 4 2085 2086 2506 2507 3 2086 2784 2785 3 2086 2784 2785 3 2086 2784 2785 3 2086 2784 2785 3 2086 2784 2785 3 2086 2784 2785 3 2086 2835 2837 3 2086 2835 2837 3 2086 2835 2837 3 2086 2835 2837 3 2086 2835 2837 3 2086 2835 2837 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 10 2087 2088 2089 2335 2336 2378 2379 3018 3019 3020 4 2087 2089 3018 3019 4 2087 2089 3018 3019 4 2087 2089 3018 3019 4 2087 2089 3018 3019 4 2087 2089 3018 3019 4 2087 2089 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 8 2087 2089 2551 2552 2594 2595 3018 3019 3 2087 2551 2552 3 2087 2551 2552 3 2087 2551 2552 3 2087 2551 2552 3 2087 2551 2552 3 2087 2551 2552 5 2087 2551 2552 3076 3077 5 2087 2551 2552 3076 3077 5 2087 2551 2552 3076 3077 5 2087 2551 2552 3076 3077 5 2087 2551 2552 3076 3077 5 2087 2551 2552 3076 3077 3 2087 3076 3077 3 2087 3076 3077 3 2087 3076 3077 3 2087 3076 3077 3 2087 3076 3077 3 2087 3076 3077 4 2087 2088 2335 2336 4 2087 2088 2335 2336 4 2087 2088 2335 2336 4 2087 2088 2335 2336 4 2087 2088 2335 2336 4 2087 2088 2335 2336 2 2088 3020 2 2088 3020 2 2088 3020 2 2088 3020 2 2088 3020 2 2088 3020 8 2089 2090 2378 2379 2421 2422 2967 2968 8 2089 2090 2378 2379 2421 2422 2967 2968 8 2089 2090 2378 2379 2421 2422 2967 2968 8 2089 2090 2378 2379 2421 2422 2967 2968 8 2089 2090 2378 2379 2421 2422 2967 2968 8 2089 2090 2378 2379 2421 2422 2967 2968 4 2089 2090 2967 2968 4 2089 2090 2967 2968 4 2089 2090 2967 2968 4 2089 2090 2967 2968 4 2089 2090 2967 2968 4 2089 2090 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 8 2089 2090 2594 2595 2637 2638 2967 2968 3 2089 2594 2595 3 2089 2594 2595 3 2089 2594 2595 3 2089 2594 2595 3 2089 2594 2595 3 2089 2594 2595 3 2089 2378 2379 3 2089 2378 2379 3 2089 2378 2379 3 2089 2378 2379 3 2089 2378 2379 3 2089 2378 2379 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 10 2090 2091 2092 2421 2422 2464 2465 2912 2913 2914 4 2090 2091 2912 2913 4 2090 2091 2912 2913 4 2090 2091 2912 2913 4 2090 2091 2912 2913 4 2090 2091 2912 2913 4 2090 2091 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 8 2090 2091 2637 2638 2680 2681 2912 2913 3 2090 2637 2638 3 2090 2637 2638 3 2090 2637 2638 3 2090 2637 2638 3 2090 2637 2638 3 2090 2637 2638 3 2090 2421 2422 3 2090 2421 2422 3 2090 2421 2422 3 2090 2421 2422 3 2090 2421 2422 3 2090 2421 2422 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 12 2091 2092 2093 2094 2464 2465 2507 2508 2836 2837 2838 2839 4 2091 2093 2836 2838 4 2091 2093 2836 2838 4 2091 2093 2836 2838 4 2091 2093 2836 2838 4 2091 2093 2836 2838 4 2091 2093 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 8 2091 2093 2680 2681 2723 2724 2836 2838 3 2091 2680 2681 3 2091 2680 2681 3 2091 2680 2681 3 2091 2680 2681 3 2091 2680 2681 3 2091 2680 2681 4 2091 2092 2464 2465 4 2091 2092 2464 2465 4 2091 2092 2464 2465 4 2091 2092 2464 2465 4 2091 2092 2464 2465 4 2091 2092 2464 2465 4 2092 2094 2837 2839 4 2092 2094 2837 2839 4 2092 2094 2837 2839 4 2092 2094 2837 2839 4 2092 2094 2837 2839 4 2092 2094 2837 2839 2 2092 2914 2 2092 2914 2 2092 2914 2 2092 2914 2 2092 2914 2 2092 2914 8 2093 2094 2507 2508 2723 2724 2785 2786 8 2093 2094 2507 2508 2723 2724 2785 2786 8 2093 2094 2507 2508 2723 2724 2785 2786 8 2093 2094 2507 2508 2723 2724 2785 2786 8 2093 2094 2507 2508 2723 2724 2785 2786 8 2093 2094 2507 2508 2723 2724 2785 2786 3 2093 2723 2724 3 2093 2723 2724 3 2093 2723 2724 3 2093 2723 2724 3 2093 2723 2724 3 2093 2723 2724 4 2093 2094 2507 2508 4 2093 2094 2507 2508 4 2093 2094 2507 2508 4 2093 2094 2507 2508 4 2093 2094 2507 2508 4 2093 2094 2507 2508 3 2094 2785 2786 3 2094 2785 2786 3 2094 2785 2786 3 2094 2785 2786 3 2094 2785 2786 3 2094 2785 2786 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 11 2095 2096 2097 2098 2336 2337 2379 2380 3019 3020 3021 4 2095 2097 3019 3021 4 2095 2097 3019 3021 4 2095 2097 3019 3021 4 2095 2097 3019 3021 4 2095 2097 3019 3021 4 2095 2097 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 8 2095 2097 2552 2553 2595 2596 3019 3021 3 2095 2552 2553 3 2095 2552 2553 3 2095 2552 2553 3 2095 2552 2553 3 2095 2552 2553 3 2095 2552 2553 5 2095 2552 2553 3077 3079 5 2095 2552 2553 3077 3079 5 2095 2552 2553 3077 3079 5 2095 2552 2553 3077 3079 5 2095 2552 2553 3077 3079 5 2095 2552 2553 3077 3079 3 2095 3077 3079 3 2095 3077 3079 3 2095 3077 3079 3 2095 3077 3079 3 2095 3077 3079 3 2095 3077 3079 4 2095 2096 2336 2337 4 2095 2096 2336 2337 4 2095 2096 2336 2337 4 2095 2096 2336 2337 4 2095 2096 2336 2337 4 2095 2096 2336 2337 3 2096 2098 3020 3 2096 2098 3020 3 2096 2098 3020 3 2096 2098 3020 3 2096 2098 3020 3 2096 2098 3020 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 10 2097 2098 2099 2100 2379 2380 2422 2423 2968 2969 4 2097 2099 2968 2969 4 2097 2099 2968 2969 4 2097 2099 2968 2969 4 2097 2099 2968 2969 4 2097 2099 2968 2969 4 2097 2099 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 8 2097 2099 2595 2596 2638 2639 2968 2969 3 2097 2595 2596 3 2097 2595 2596 3 2097 2595 2596 3 2097 2595 2596 3 2097 2595 2596 3 2097 2595 2596 4 2097 2098 2379 2380 4 2097 2098 2379 2380 4 2097 2098 2379 2380 4 2097 2098 2379 2380 4 2097 2098 2379 2380 4 2097 2098 2379 2380 2 2098 2100 2 2098 2100 2 2098 2100 2 2098 2100 2 2098 2100 2 2098 2100 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 11 2099 2100 2101 2102 2422 2423 2465 2466 2913 2914 2915 4 2099 2101 2913 2915 4 2099 2101 2913 2915 4 2099 2101 2913 2915 4 2099 2101 2913 2915 4 2099 2101 2913 2915 4 2099 2101 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 8 2099 2101 2638 2639 2681 2682 2913 2915 3 2099 2638 2639 3 2099 2638 2639 3 2099 2638 2639 3 2099 2638 2639 3 2099 2638 2639 3 2099 2638 2639 4 2099 2100 2422 2423 4 2099 2100 2422 2423 4 2099 2100 2422 2423 4 2099 2100 2422 2423 4 2099 2100 2422 2423 4 2099 2100 2422 2423 3 2100 2102 2914 3 2100 2102 2914 3 2100 2102 2914 3 2100 2102 2914 3 2100 2102 2914 3 2100 2102 2914 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 12 2101 2102 2103 2104 2465 2466 2508 2509 2838 2839 2840 2841 4 2101 2103 2838 2840 4 2101 2103 2838 2840 4 2101 2103 2838 2840 4 2101 2103 2838 2840 4 2101 2103 2838 2840 4 2101 2103 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 8 2101 2103 2681 2682 2724 2725 2838 2840 3 2101 2681 2682 3 2101 2681 2682 3 2101 2681 2682 3 2101 2681 2682 3 2101 2681 2682 3 2101 2681 2682 4 2101 2102 2465 2466 4 2101 2102 2465 2466 4 2101 2102 2465 2466 4 2101 2102 2465 2466 4 2101 2102 2465 2466 4 2101 2102 2465 2466 4 2102 2104 2839 2841 4 2102 2104 2839 2841 4 2102 2104 2839 2841 4 2102 2104 2839 2841 4 2102 2104 2839 2841 4 2102 2104 2839 2841 8 2103 2104 2508 2509 2724 2725 2786 2787 8 2103 2104 2508 2509 2724 2725 2786 2787 8 2103 2104 2508 2509 2724 2725 2786 2787 8 2103 2104 2508 2509 2724 2725 2786 2787 8 2103 2104 2508 2509 2724 2725 2786 2787 8 2103 2104 2508 2509 2724 2725 2786 2787 3 2103 2724 2725 3 2103 2724 2725 3 2103 2724 2725 3 2103 2724 2725 3 2103 2724 2725 3 2103 2724 2725 4 2103 2104 2508 2509 4 2103 2104 2508 2509 4 2103 2104 2508 2509 4 2103 2104 2508 2509 4 2103 2104 2508 2509 4 2103 2104 2508 2509 3 2104 2786 2787 3 2104 2786 2787 3 2104 2786 2787 3 2104 2786 2787 3 2104 2786 2787 3 2104 2786 2787 8 2105 2106 2337 2338 2380 2381 3021 3022 8 2105 2106 2337 2338 2380 2381 3021 3022 8 2105 2106 2337 2338 2380 2381 3021 3022 8 2105 2106 2337 2338 2380 2381 3021 3022 8 2105 2106 2337 2338 2380 2381 3021 3022 8 2105 2106 2337 2338 2380 2381 3021 3022 4 2105 2106 3021 3022 4 2105 2106 3021 3022 4 2105 2106 3021 3022 4 2105 2106 3021 3022 4 2105 2106 3021 3022 4 2105 2106 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 8 2105 2106 2553 2554 2596 2597 3021 3022 3 2105 2553 2554 3 2105 2553 2554 3 2105 2553 2554 3 2105 2553 2554 3 2105 2553 2554 3 2105 2553 2554 5 2105 2553 2554 3079 3080 5 2105 2553 2554 3079 3080 5 2105 2553 2554 3079 3080 5 2105 2553 2554 3079 3080 5 2105 2553 2554 3079 3080 5 2105 2553 2554 3079 3080 3 2105 3079 3080 3 2105 3079 3080 3 2105 3079 3080 3 2105 3079 3080 3 2105 3079 3080 3 2105 3079 3080 3 2105 2337 2338 3 2105 2337 2338 3 2105 2337 2338 3 2105 2337 2338 3 2105 2337 2338 3 2105 2337 2338 8 2106 2107 2380 2381 2423 2424 2969 2970 8 2106 2107 2380 2381 2423 2424 2969 2970 8 2106 2107 2380 2381 2423 2424 2969 2970 8 2106 2107 2380 2381 2423 2424 2969 2970 8 2106 2107 2380 2381 2423 2424 2969 2970 8 2106 2107 2380 2381 2423 2424 2969 2970 4 2106 2107 2969 2970 4 2106 2107 2969 2970 4 2106 2107 2969 2970 4 2106 2107 2969 2970 4 2106 2107 2969 2970 4 2106 2107 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 8 2106 2107 2596 2597 2639 2640 2969 2970 3 2106 2596 2597 3 2106 2596 2597 3 2106 2596 2597 3 2106 2596 2597 3 2106 2596 2597 3 2106 2596 2597 3 2106 2380 2381 3 2106 2380 2381 3 2106 2380 2381 3 2106 2380 2381 3 2106 2380 2381 3 2106 2380 2381 8 2107 2108 2423 2424 2466 2467 2915 2916 8 2107 2108 2423 2424 2466 2467 2915 2916 8 2107 2108 2423 2424 2466 2467 2915 2916 8 2107 2108 2423 2424 2466 2467 2915 2916 8 2107 2108 2423 2424 2466 2467 2915 2916 8 2107 2108 2423 2424 2466 2467 2915 2916 4 2107 2108 2915 2916 4 2107 2108 2915 2916 4 2107 2108 2915 2916 4 2107 2108 2915 2916 4 2107 2108 2915 2916 4 2107 2108 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 8 2107 2108 2639 2640 2682 2683 2915 2916 3 2107 2639 2640 3 2107 2639 2640 3 2107 2639 2640 3 2107 2639 2640 3 2107 2639 2640 3 2107 2639 2640 3 2107 2423 2424 3 2107 2423 2424 3 2107 2423 2424 3 2107 2423 2424 3 2107 2423 2424 3 2107 2423 2424 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 11 2108 2109 2110 2466 2467 2509 2510 2840 2841 2842 2843 4 2108 2109 2840 2842 4 2108 2109 2840 2842 4 2108 2109 2840 2842 4 2108 2109 2840 2842 4 2108 2109 2840 2842 4 2108 2109 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 8 2108 2109 2682 2683 2725 2726 2840 2842 3 2108 2682 2683 3 2108 2682 2683 3 2108 2682 2683 3 2108 2682 2683 3 2108 2682 2683 3 2108 2682 2683 3 2108 2466 2467 3 2108 2466 2467 3 2108 2466 2467 3 2108 2466 2467 3 2108 2466 2467 3 2108 2466 2467 8 2109 2110 2509 2510 2725 2726 2787 2788 8 2109 2110 2509 2510 2725 2726 2787 2788 8 2109 2110 2509 2510 2725 2726 2787 2788 8 2109 2110 2509 2510 2725 2726 2787 2788 8 2109 2110 2509 2510 2725 2726 2787 2788 8 2109 2110 2509 2510 2725 2726 2787 2788 3 2109 2725 2726 3 2109 2725 2726 3 2109 2725 2726 3 2109 2725 2726 3 2109 2725 2726 3 2109 2725 2726 4 2109 2110 2509 2510 4 2109 2110 2509 2510 4 2109 2110 2509 2510 4 2109 2110 2509 2510 4 2109 2110 2509 2510 4 2109 2110 2509 2510 3 2110 2787 2788 3 2110 2787 2788 3 2110 2787 2788 3 2110 2787 2788 3 2110 2787 2788 3 2110 2787 2788 3 2110 2841 2843 3 2110 2841 2843 3 2110 2841 2843 3 2110 2841 2843 3 2110 2841 2843 3 2110 2841 2843 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 10 2111 2112 2113 2338 2339 2381 2382 3022 3023 3024 4 2111 2113 3022 3023 4 2111 2113 3022 3023 4 2111 2113 3022 3023 4 2111 2113 3022 3023 4 2111 2113 3022 3023 4 2111 2113 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 8 2111 2113 2554 2555 2597 2598 3022 3023 3 2111 2554 2555 3 2111 2554 2555 3 2111 2554 2555 3 2111 2554 2555 3 2111 2554 2555 3 2111 2554 2555 5 2111 2554 2555 3080 3081 5 2111 2554 2555 3080 3081 5 2111 2554 2555 3080 3081 5 2111 2554 2555 3080 3081 5 2111 2554 2555 3080 3081 5 2111 2554 2555 3080 3081 3 2111 3080 3081 3 2111 3080 3081 3 2111 3080 3081 3 2111 3080 3081 3 2111 3080 3081 3 2111 3080 3081 4 2111 2112 2338 2339 4 2111 2112 2338 2339 4 2111 2112 2338 2339 4 2111 2112 2338 2339 4 2111 2112 2338 2339 4 2111 2112 2338 2339 2 2112 3024 2 2112 3024 2 2112 3024 2 2112 3024 2 2112 3024 2 2112 3024 8 2113 2114 2381 2382 2424 2425 2970 2971 8 2113 2114 2381 2382 2424 2425 2970 2971 8 2113 2114 2381 2382 2424 2425 2970 2971 8 2113 2114 2381 2382 2424 2425 2970 2971 8 2113 2114 2381 2382 2424 2425 2970 2971 8 2113 2114 2381 2382 2424 2425 2970 2971 4 2113 2114 2970 2971 4 2113 2114 2970 2971 4 2113 2114 2970 2971 4 2113 2114 2970 2971 4 2113 2114 2970 2971 4 2113 2114 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 8 2113 2114 2597 2598 2640 2641 2970 2971 3 2113 2597 2598 3 2113 2597 2598 3 2113 2597 2598 3 2113 2597 2598 3 2113 2597 2598 3 2113 2597 2598 3 2113 2381 2382 3 2113 2381 2382 3 2113 2381 2382 3 2113 2381 2382 3 2113 2381 2382 3 2113 2381 2382 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 10 2114 2115 2116 2424 2425 2467 2468 2916 2917 2918 4 2114 2115 2916 2917 4 2114 2115 2916 2917 4 2114 2115 2916 2917 4 2114 2115 2916 2917 4 2114 2115 2916 2917 4 2114 2115 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 8 2114 2115 2640 2641 2683 2684 2916 2917 3 2114 2640 2641 3 2114 2640 2641 3 2114 2640 2641 3 2114 2640 2641 3 2114 2640 2641 3 2114 2640 2641 3 2114 2424 2425 3 2114 2424 2425 3 2114 2424 2425 3 2114 2424 2425 3 2114 2424 2425 3 2114 2424 2425 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 12 2115 2116 2117 2118 2467 2468 2510 2511 2842 2843 2844 2845 4 2115 2117 2842 2844 4 2115 2117 2842 2844 4 2115 2117 2842 2844 4 2115 2117 2842 2844 4 2115 2117 2842 2844 4 2115 2117 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 8 2115 2117 2683 2684 2726 2727 2842 2844 3 2115 2683 2684 3 2115 2683 2684 3 2115 2683 2684 3 2115 2683 2684 3 2115 2683 2684 3 2115 2683 2684 4 2115 2116 2467 2468 4 2115 2116 2467 2468 4 2115 2116 2467 2468 4 2115 2116 2467 2468 4 2115 2116 2467 2468 4 2115 2116 2467 2468 4 2116 2118 2843 2845 4 2116 2118 2843 2845 4 2116 2118 2843 2845 4 2116 2118 2843 2845 4 2116 2118 2843 2845 4 2116 2118 2843 2845 2 2116 2918 2 2116 2918 2 2116 2918 2 2116 2918 2 2116 2918 2 2116 2918 8 2117 2118 2510 2511 2726 2727 2788 2789 8 2117 2118 2510 2511 2726 2727 2788 2789 8 2117 2118 2510 2511 2726 2727 2788 2789 8 2117 2118 2510 2511 2726 2727 2788 2789 8 2117 2118 2510 2511 2726 2727 2788 2789 8 2117 2118 2510 2511 2726 2727 2788 2789 3 2117 2726 2727 3 2117 2726 2727 3 2117 2726 2727 3 2117 2726 2727 3 2117 2726 2727 3 2117 2726 2727 4 2117 2118 2510 2511 4 2117 2118 2510 2511 4 2117 2118 2510 2511 4 2117 2118 2510 2511 4 2117 2118 2510 2511 4 2117 2118 2510 2511 3 2118 2788 2789 3 2118 2788 2789 3 2118 2788 2789 3 2118 2788 2789 3 2118 2788 2789 3 2118 2788 2789 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 10 2119 2120 2121 2339 2340 2382 2383 3023 3024 3025 4 2119 2121 3023 3025 4 2119 2121 3023 3025 4 2119 2121 3023 3025 4 2119 2121 3023 3025 4 2119 2121 3023 3025 4 2119 2121 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 8 2119 2121 2555 2556 2598 2599 3023 3025 3 2119 2555 2556 3 2119 2555 2556 3 2119 2555 2556 3 2119 2555 2556 3 2119 2555 2556 3 2119 2555 2556 5 2119 2555 2556 3081 3083 5 2119 2555 2556 3081 3083 5 2119 2555 2556 3081 3083 5 2119 2555 2556 3081 3083 5 2119 2555 2556 3081 3083 5 2119 2555 2556 3081 3083 3 2119 3081 3083 3 2119 3081 3083 3 2119 3081 3083 3 2119 3081 3083 3 2119 3081 3083 3 2119 3081 3083 4 2119 2120 2339 2340 4 2119 2120 2339 2340 4 2119 2120 2339 2340 4 2119 2120 2339 2340 4 2119 2120 2339 2340 4 2119 2120 2339 2340 2 2120 3024 2 2120 3024 2 2120 3024 2 2120 3024 2 2120 3024 2 2120 3024 8 2121 2122 2382 2383 2425 2426 2971 2972 8 2121 2122 2382 2383 2425 2426 2971 2972 8 2121 2122 2382 2383 2425 2426 2971 2972 8 2121 2122 2382 2383 2425 2426 2971 2972 8 2121 2122 2382 2383 2425 2426 2971 2972 8 2121 2122 2382 2383 2425 2426 2971 2972 4 2121 2122 2971 2972 4 2121 2122 2971 2972 4 2121 2122 2971 2972 4 2121 2122 2971 2972 4 2121 2122 2971 2972 4 2121 2122 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 8 2121 2122 2598 2599 2641 2642 2971 2972 3 2121 2598 2599 3 2121 2598 2599 3 2121 2598 2599 3 2121 2598 2599 3 2121 2598 2599 3 2121 2598 2599 3 2121 2382 2383 3 2121 2382 2383 3 2121 2382 2383 3 2121 2382 2383 3 2121 2382 2383 3 2121 2382 2383 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 10 2122 2123 2124 2425 2426 2468 2469 2917 2918 2919 4 2122 2123 2917 2919 4 2122 2123 2917 2919 4 2122 2123 2917 2919 4 2122 2123 2917 2919 4 2122 2123 2917 2919 4 2122 2123 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 8 2122 2123 2641 2642 2684 2685 2917 2919 3 2122 2641 2642 3 2122 2641 2642 3 2122 2641 2642 3 2122 2641 2642 3 2122 2641 2642 3 2122 2641 2642 3 2122 2425 2426 3 2122 2425 2426 3 2122 2425 2426 3 2122 2425 2426 3 2122 2425 2426 3 2122 2425 2426 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 12 2123 2124 2125 2126 2468 2469 2511 2512 2844 2845 2846 2847 4 2123 2125 2844 2846 4 2123 2125 2844 2846 4 2123 2125 2844 2846 4 2123 2125 2844 2846 4 2123 2125 2844 2846 4 2123 2125 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 8 2123 2125 2684 2685 2727 2728 2844 2846 3 2123 2684 2685 3 2123 2684 2685 3 2123 2684 2685 3 2123 2684 2685 3 2123 2684 2685 3 2123 2684 2685 4 2123 2124 2468 2469 4 2123 2124 2468 2469 4 2123 2124 2468 2469 4 2123 2124 2468 2469 4 2123 2124 2468 2469 4 2123 2124 2468 2469 4 2124 2126 2845 2847 4 2124 2126 2845 2847 4 2124 2126 2845 2847 4 2124 2126 2845 2847 4 2124 2126 2845 2847 4 2124 2126 2845 2847 2 2124 2918 2 2124 2918 2 2124 2918 2 2124 2918 2 2124 2918 2 2124 2918 8 2125 2126 2511 2512 2727 2728 2789 2790 8 2125 2126 2511 2512 2727 2728 2789 2790 8 2125 2126 2511 2512 2727 2728 2789 2790 8 2125 2126 2511 2512 2727 2728 2789 2790 8 2125 2126 2511 2512 2727 2728 2789 2790 8 2125 2126 2511 2512 2727 2728 2789 2790 3 2125 2727 2728 3 2125 2727 2728 3 2125 2727 2728 3 2125 2727 2728 3 2125 2727 2728 3 2125 2727 2728 4 2125 2126 2511 2512 4 2125 2126 2511 2512 4 2125 2126 2511 2512 4 2125 2126 2511 2512 4 2125 2126 2511 2512 4 2125 2126 2511 2512 3 2126 2789 2790 3 2126 2789 2790 3 2126 2789 2790 3 2126 2789 2790 3 2126 2789 2790 3 2126 2789 2790 8 2127 2128 2340 2341 2383 2384 3025 3026 8 2127 2128 2340 2341 2383 2384 3025 3026 8 2127 2128 2340 2341 2383 2384 3025 3026 8 2127 2128 2340 2341 2383 2384 3025 3026 8 2127 2128 2340 2341 2383 2384 3025 3026 8 2127 2128 2340 2341 2383 2384 3025 3026 4 2127 2128 3025 3026 4 2127 2128 3025 3026 4 2127 2128 3025 3026 4 2127 2128 3025 3026 4 2127 2128 3025 3026 4 2127 2128 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 8 2127 2128 2556 2557 2599 2600 3025 3026 3 2127 2556 2557 3 2127 2556 2557 3 2127 2556 2557 3 2127 2556 2557 3 2127 2556 2557 3 2127 2556 2557 5 2127 2556 2557 3083 3084 5 2127 2556 2557 3083 3084 5 2127 2556 2557 3083 3084 5 2127 2556 2557 3083 3084 5 2127 2556 2557 3083 3084 5 2127 2556 2557 3083 3084 3 2127 3083 3084 3 2127 3083 3084 3 2127 3083 3084 3 2127 3083 3084 3 2127 3083 3084 3 2127 3083 3084 3 2127 2340 2341 3 2127 2340 2341 3 2127 2340 2341 3 2127 2340 2341 3 2127 2340 2341 3 2127 2340 2341 8 2128 2129 2383 2384 2426 2427 2972 2973 8 2128 2129 2383 2384 2426 2427 2972 2973 8 2128 2129 2383 2384 2426 2427 2972 2973 8 2128 2129 2383 2384 2426 2427 2972 2973 8 2128 2129 2383 2384 2426 2427 2972 2973 8 2128 2129 2383 2384 2426 2427 2972 2973 4 2128 2129 2972 2973 4 2128 2129 2972 2973 4 2128 2129 2972 2973 4 2128 2129 2972 2973 4 2128 2129 2972 2973 4 2128 2129 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 8 2128 2129 2599 2600 2642 2643 2972 2973 3 2128 2599 2600 3 2128 2599 2600 3 2128 2599 2600 3 2128 2599 2600 3 2128 2599 2600 3 2128 2599 2600 3 2128 2383 2384 3 2128 2383 2384 3 2128 2383 2384 3 2128 2383 2384 3 2128 2383 2384 3 2128 2383 2384 8 2129 2130 2426 2427 2469 2470 2919 2920 8 2129 2130 2426 2427 2469 2470 2919 2920 8 2129 2130 2426 2427 2469 2470 2919 2920 8 2129 2130 2426 2427 2469 2470 2919 2920 8 2129 2130 2426 2427 2469 2470 2919 2920 8 2129 2130 2426 2427 2469 2470 2919 2920 4 2129 2130 2919 2920 4 2129 2130 2919 2920 4 2129 2130 2919 2920 4 2129 2130 2919 2920 4 2129 2130 2919 2920 4 2129 2130 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 8 2129 2130 2642 2643 2685 2686 2919 2920 3 2129 2642 2643 3 2129 2642 2643 3 2129 2642 2643 3 2129 2642 2643 3 2129 2642 2643 3 2129 2642 2643 3 2129 2426 2427 3 2129 2426 2427 3 2129 2426 2427 3 2129 2426 2427 3 2129 2426 2427 3 2129 2426 2427 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 11 2130 2131 2132 2469 2470 2512 2513 2846 2847 2848 2849 4 2130 2131 2846 2848 4 2130 2131 2846 2848 4 2130 2131 2846 2848 4 2130 2131 2846 2848 4 2130 2131 2846 2848 4 2130 2131 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 8 2130 2131 2685 2686 2728 2729 2846 2848 3 2130 2685 2686 3 2130 2685 2686 3 2130 2685 2686 3 2130 2685 2686 3 2130 2685 2686 3 2130 2685 2686 3 2130 2469 2470 3 2130 2469 2470 3 2130 2469 2470 3 2130 2469 2470 3 2130 2469 2470 3 2130 2469 2470 8 2131 2132 2512 2513 2728 2729 2790 2791 8 2131 2132 2512 2513 2728 2729 2790 2791 8 2131 2132 2512 2513 2728 2729 2790 2791 8 2131 2132 2512 2513 2728 2729 2790 2791 8 2131 2132 2512 2513 2728 2729 2790 2791 8 2131 2132 2512 2513 2728 2729 2790 2791 3 2131 2728 2729 3 2131 2728 2729 3 2131 2728 2729 3 2131 2728 2729 3 2131 2728 2729 3 2131 2728 2729 4 2131 2132 2512 2513 4 2131 2132 2512 2513 4 2131 2132 2512 2513 4 2131 2132 2512 2513 4 2131 2132 2512 2513 4 2131 2132 2512 2513 3 2132 2790 2791 3 2132 2790 2791 3 2132 2790 2791 3 2132 2790 2791 3 2132 2790 2791 3 2132 2790 2791 3 2132 2847 2849 3 2132 2847 2849 3 2132 2847 2849 3 2132 2847 2849 3 2132 2847 2849 3 2132 2847 2849 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 10 2133 2134 2135 2341 2342 2384 2385 3026 3027 3028 4 2133 2135 3026 3027 4 2133 2135 3026 3027 4 2133 2135 3026 3027 4 2133 2135 3026 3027 4 2133 2135 3026 3027 4 2133 2135 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 8 2133 2135 2557 2558 2600 2601 3026 3027 3 2133 2557 2558 3 2133 2557 2558 3 2133 2557 2558 3 2133 2557 2558 3 2133 2557 2558 3 2133 2557 2558 5 2133 2557 2558 3084 3085 5 2133 2557 2558 3084 3085 5 2133 2557 2558 3084 3085 5 2133 2557 2558 3084 3085 5 2133 2557 2558 3084 3085 5 2133 2557 2558 3084 3085 3 2133 3084 3085 3 2133 3084 3085 3 2133 3084 3085 3 2133 3084 3085 3 2133 3084 3085 3 2133 3084 3085 4 2133 2134 2341 2342 4 2133 2134 2341 2342 4 2133 2134 2341 2342 4 2133 2134 2341 2342 4 2133 2134 2341 2342 4 2133 2134 2341 2342 2 2134 3028 2 2134 3028 2 2134 3028 2 2134 3028 2 2134 3028 2 2134 3028 8 2135 2136 2384 2385 2427 2428 2973 2974 8 2135 2136 2384 2385 2427 2428 2973 2974 8 2135 2136 2384 2385 2427 2428 2973 2974 8 2135 2136 2384 2385 2427 2428 2973 2974 8 2135 2136 2384 2385 2427 2428 2973 2974 8 2135 2136 2384 2385 2427 2428 2973 2974 4 2135 2136 2973 2974 4 2135 2136 2973 2974 4 2135 2136 2973 2974 4 2135 2136 2973 2974 4 2135 2136 2973 2974 4 2135 2136 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 8 2135 2136 2600 2601 2643 2644 2973 2974 3 2135 2600 2601 3 2135 2600 2601 3 2135 2600 2601 3 2135 2600 2601 3 2135 2600 2601 3 2135 2600 2601 3 2135 2384 2385 3 2135 2384 2385 3 2135 2384 2385 3 2135 2384 2385 3 2135 2384 2385 3 2135 2384 2385 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 10 2136 2137 2138 2427 2428 2470 2471 2920 2921 2922 4 2136 2137 2920 2921 4 2136 2137 2920 2921 4 2136 2137 2920 2921 4 2136 2137 2920 2921 4 2136 2137 2920 2921 4 2136 2137 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 8 2136 2137 2643 2644 2686 2687 2920 2921 3 2136 2643 2644 3 2136 2643 2644 3 2136 2643 2644 3 2136 2643 2644 3 2136 2643 2644 3 2136 2643 2644 3 2136 2427 2428 3 2136 2427 2428 3 2136 2427 2428 3 2136 2427 2428 3 2136 2427 2428 3 2136 2427 2428 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 12 2137 2138 2139 2140 2470 2471 2513 2514 2848 2849 2850 2851 4 2137 2139 2848 2850 4 2137 2139 2848 2850 4 2137 2139 2848 2850 4 2137 2139 2848 2850 4 2137 2139 2848 2850 4 2137 2139 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 8 2137 2139 2686 2687 2729 2730 2848 2850 3 2137 2686 2687 3 2137 2686 2687 3 2137 2686 2687 3 2137 2686 2687 3 2137 2686 2687 3 2137 2686 2687 4 2137 2138 2470 2471 4 2137 2138 2470 2471 4 2137 2138 2470 2471 4 2137 2138 2470 2471 4 2137 2138 2470 2471 4 2137 2138 2470 2471 4 2138 2140 2849 2851 4 2138 2140 2849 2851 4 2138 2140 2849 2851 4 2138 2140 2849 2851 4 2138 2140 2849 2851 4 2138 2140 2849 2851 2 2138 2922 2 2138 2922 2 2138 2922 2 2138 2922 2 2138 2922 2 2138 2922 8 2139 2140 2513 2514 2729 2730 2791 2792 8 2139 2140 2513 2514 2729 2730 2791 2792 8 2139 2140 2513 2514 2729 2730 2791 2792 8 2139 2140 2513 2514 2729 2730 2791 2792 8 2139 2140 2513 2514 2729 2730 2791 2792 8 2139 2140 2513 2514 2729 2730 2791 2792 3 2139 2729 2730 3 2139 2729 2730 3 2139 2729 2730 3 2139 2729 2730 3 2139 2729 2730 3 2139 2729 2730 4 2139 2140 2513 2514 4 2139 2140 2513 2514 4 2139 2140 2513 2514 4 2139 2140 2513 2514 4 2139 2140 2513 2514 4 2139 2140 2513 2514 3 2140 2791 2792 3 2140 2791 2792 3 2140 2791 2792 3 2140 2791 2792 3 2140 2791 2792 3 2140 2791 2792 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 11 2141 2142 2143 2144 2342 2343 2385 2386 3027 3028 3029 4 2141 2143 3027 3029 4 2141 2143 3027 3029 4 2141 2143 3027 3029 4 2141 2143 3027 3029 4 2141 2143 3027 3029 4 2141 2143 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 8 2141 2143 2558 2559 2601 2602 3027 3029 3 2141 2558 2559 3 2141 2558 2559 3 2141 2558 2559 3 2141 2558 2559 3 2141 2558 2559 3 2141 2558 2559 5 2141 2558 2559 3085 3087 5 2141 2558 2559 3085 3087 5 2141 2558 2559 3085 3087 5 2141 2558 2559 3085 3087 5 2141 2558 2559 3085 3087 5 2141 2558 2559 3085 3087 3 2141 3085 3087 3 2141 3085 3087 3 2141 3085 3087 3 2141 3085 3087 3 2141 3085 3087 3 2141 3085 3087 4 2141 2142 2342 2343 4 2141 2142 2342 2343 4 2141 2142 2342 2343 4 2141 2142 2342 2343 4 2141 2142 2342 2343 4 2141 2142 2342 2343 3 2142 2144 3028 3 2142 2144 3028 3 2142 2144 3028 3 2142 2144 3028 3 2142 2144 3028 3 2142 2144 3028 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 10 2143 2144 2145 2146 2385 2386 2428 2429 2974 2975 4 2143 2145 2974 2975 4 2143 2145 2974 2975 4 2143 2145 2974 2975 4 2143 2145 2974 2975 4 2143 2145 2974 2975 4 2143 2145 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 8 2143 2145 2601 2602 2644 2645 2974 2975 3 2143 2601 2602 3 2143 2601 2602 3 2143 2601 2602 3 2143 2601 2602 3 2143 2601 2602 3 2143 2601 2602 4 2143 2144 2385 2386 4 2143 2144 2385 2386 4 2143 2144 2385 2386 4 2143 2144 2385 2386 4 2143 2144 2385 2386 4 2143 2144 2385 2386 2 2144 2146 2 2144 2146 2 2144 2146 2 2144 2146 2 2144 2146 2 2144 2146 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 11 2145 2146 2147 2148 2428 2429 2471 2472 2921 2922 2923 4 2145 2147 2921 2923 4 2145 2147 2921 2923 4 2145 2147 2921 2923 4 2145 2147 2921 2923 4 2145 2147 2921 2923 4 2145 2147 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 8 2145 2147 2644 2645 2687 2688 2921 2923 3 2145 2644 2645 3 2145 2644 2645 3 2145 2644 2645 3 2145 2644 2645 3 2145 2644 2645 3 2145 2644 2645 4 2145 2146 2428 2429 4 2145 2146 2428 2429 4 2145 2146 2428 2429 4 2145 2146 2428 2429 4 2145 2146 2428 2429 4 2145 2146 2428 2429 3 2146 2148 2922 3 2146 2148 2922 3 2146 2148 2922 3 2146 2148 2922 3 2146 2148 2922 3 2146 2148 2922 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 12 2147 2148 2149 2150 2471 2472 2514 2515 2850 2851 2852 2853 4 2147 2149 2850 2852 4 2147 2149 2850 2852 4 2147 2149 2850 2852 4 2147 2149 2850 2852 4 2147 2149 2850 2852 4 2147 2149 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 8 2147 2149 2687 2688 2730 2731 2850 2852 3 2147 2687 2688 3 2147 2687 2688 3 2147 2687 2688 3 2147 2687 2688 3 2147 2687 2688 3 2147 2687 2688 4 2147 2148 2471 2472 4 2147 2148 2471 2472 4 2147 2148 2471 2472 4 2147 2148 2471 2472 4 2147 2148 2471 2472 4 2147 2148 2471 2472 4 2148 2150 2851 2853 4 2148 2150 2851 2853 4 2148 2150 2851 2853 4 2148 2150 2851 2853 4 2148 2150 2851 2853 4 2148 2150 2851 2853 8 2149 2150 2514 2515 2730 2731 2792 2793 8 2149 2150 2514 2515 2730 2731 2792 2793 8 2149 2150 2514 2515 2730 2731 2792 2793 8 2149 2150 2514 2515 2730 2731 2792 2793 8 2149 2150 2514 2515 2730 2731 2792 2793 8 2149 2150 2514 2515 2730 2731 2792 2793 3 2149 2730 2731 3 2149 2730 2731 3 2149 2730 2731 3 2149 2730 2731 3 2149 2730 2731 3 2149 2730 2731 4 2149 2150 2514 2515 4 2149 2150 2514 2515 4 2149 2150 2514 2515 4 2149 2150 2514 2515 4 2149 2150 2514 2515 4 2149 2150 2514 2515 3 2150 2792 2793 3 2150 2792 2793 3 2150 2792 2793 3 2150 2792 2793 3 2150 2792 2793 3 2150 2792 2793 8 2151 2152 2343 2344 2386 2387 3029 3030 8 2151 2152 2343 2344 2386 2387 3029 3030 8 2151 2152 2343 2344 2386 2387 3029 3030 8 2151 2152 2343 2344 2386 2387 3029 3030 8 2151 2152 2343 2344 2386 2387 3029 3030 8 2151 2152 2343 2344 2386 2387 3029 3030 4 2151 2152 3029 3030 4 2151 2152 3029 3030 4 2151 2152 3029 3030 4 2151 2152 3029 3030 4 2151 2152 3029 3030 4 2151 2152 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 8 2151 2152 2559 2560 2602 2603 3029 3030 3 2151 2559 2560 3 2151 2559 2560 3 2151 2559 2560 3 2151 2559 2560 3 2151 2559 2560 3 2151 2559 2560 5 2151 2559 2560 3087 3088 5 2151 2559 2560 3087 3088 5 2151 2559 2560 3087 3088 5 2151 2559 2560 3087 3088 5 2151 2559 2560 3087 3088 5 2151 2559 2560 3087 3088 3 2151 3087 3088 3 2151 3087 3088 3 2151 3087 3088 3 2151 3087 3088 3 2151 3087 3088 3 2151 3087 3088 3 2151 2343 2344 3 2151 2343 2344 3 2151 2343 2344 3 2151 2343 2344 3 2151 2343 2344 3 2151 2343 2344 8 2152 2153 2386 2387 2429 2430 2975 2976 8 2152 2153 2386 2387 2429 2430 2975 2976 8 2152 2153 2386 2387 2429 2430 2975 2976 8 2152 2153 2386 2387 2429 2430 2975 2976 8 2152 2153 2386 2387 2429 2430 2975 2976 8 2152 2153 2386 2387 2429 2430 2975 2976 4 2152 2153 2975 2976 4 2152 2153 2975 2976 4 2152 2153 2975 2976 4 2152 2153 2975 2976 4 2152 2153 2975 2976 4 2152 2153 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 8 2152 2153 2602 2603 2645 2646 2975 2976 3 2152 2602 2603 3 2152 2602 2603 3 2152 2602 2603 3 2152 2602 2603 3 2152 2602 2603 3 2152 2602 2603 3 2152 2386 2387 3 2152 2386 2387 3 2152 2386 2387 3 2152 2386 2387 3 2152 2386 2387 3 2152 2386 2387 8 2153 2154 2429 2430 2472 2473 2923 2924 8 2153 2154 2429 2430 2472 2473 2923 2924 8 2153 2154 2429 2430 2472 2473 2923 2924 8 2153 2154 2429 2430 2472 2473 2923 2924 8 2153 2154 2429 2430 2472 2473 2923 2924 8 2153 2154 2429 2430 2472 2473 2923 2924 4 2153 2154 2923 2924 4 2153 2154 2923 2924 4 2153 2154 2923 2924 4 2153 2154 2923 2924 4 2153 2154 2923 2924 4 2153 2154 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 8 2153 2154 2645 2646 2688 2689 2923 2924 3 2153 2645 2646 3 2153 2645 2646 3 2153 2645 2646 3 2153 2645 2646 3 2153 2645 2646 3 2153 2645 2646 3 2153 2429 2430 3 2153 2429 2430 3 2153 2429 2430 3 2153 2429 2430 3 2153 2429 2430 3 2153 2429 2430 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 11 2154 2155 2156 2472 2473 2515 2516 2852 2853 2854 2855 4 2154 2155 2852 2854 4 2154 2155 2852 2854 4 2154 2155 2852 2854 4 2154 2155 2852 2854 4 2154 2155 2852 2854 4 2154 2155 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 8 2154 2155 2688 2689 2731 2732 2852 2854 3 2154 2688 2689 3 2154 2688 2689 3 2154 2688 2689 3 2154 2688 2689 3 2154 2688 2689 3 2154 2688 2689 3 2154 2472 2473 3 2154 2472 2473 3 2154 2472 2473 3 2154 2472 2473 3 2154 2472 2473 3 2154 2472 2473 8 2155 2156 2515 2516 2731 2732 2793 2794 8 2155 2156 2515 2516 2731 2732 2793 2794 8 2155 2156 2515 2516 2731 2732 2793 2794 8 2155 2156 2515 2516 2731 2732 2793 2794 8 2155 2156 2515 2516 2731 2732 2793 2794 8 2155 2156 2515 2516 2731 2732 2793 2794 3 2155 2731 2732 3 2155 2731 2732 3 2155 2731 2732 3 2155 2731 2732 3 2155 2731 2732 3 2155 2731 2732 4 2155 2156 2515 2516 4 2155 2156 2515 2516 4 2155 2156 2515 2516 4 2155 2156 2515 2516 4 2155 2156 2515 2516 4 2155 2156 2515 2516 3 2156 2793 2794 3 2156 2793 2794 3 2156 2793 2794 3 2156 2793 2794 3 2156 2793 2794 3 2156 2793 2794 3 2156 2853 2855 3 2156 2853 2855 3 2156 2853 2855 3 2156 2853 2855 3 2156 2853 2855 3 2156 2853 2855 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 10 2157 2158 2159 2344 2345 2387 2388 3030 3031 3032 4 2157 2159 3030 3031 4 2157 2159 3030 3031 4 2157 2159 3030 3031 4 2157 2159 3030 3031 4 2157 2159 3030 3031 4 2157 2159 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 8 2157 2159 2560 2561 2603 2604 3030 3031 3 2157 2560 2561 3 2157 2560 2561 3 2157 2560 2561 3 2157 2560 2561 3 2157 2560 2561 3 2157 2560 2561 5 2157 2560 2561 3088 3089 5 2157 2560 2561 3088 3089 5 2157 2560 2561 3088 3089 5 2157 2560 2561 3088 3089 5 2157 2560 2561 3088 3089 5 2157 2560 2561 3088 3089 3 2157 3088 3089 3 2157 3088 3089 3 2157 3088 3089 3 2157 3088 3089 3 2157 3088 3089 3 2157 3088 3089 4 2157 2158 2344 2345 4 2157 2158 2344 2345 4 2157 2158 2344 2345 4 2157 2158 2344 2345 4 2157 2158 2344 2345 4 2157 2158 2344 2345 2 2158 3032 2 2158 3032 2 2158 3032 2 2158 3032 2 2158 3032 2 2158 3032 8 2159 2160 2387 2388 2430 2431 2976 2977 8 2159 2160 2387 2388 2430 2431 2976 2977 8 2159 2160 2387 2388 2430 2431 2976 2977 8 2159 2160 2387 2388 2430 2431 2976 2977 8 2159 2160 2387 2388 2430 2431 2976 2977 8 2159 2160 2387 2388 2430 2431 2976 2977 4 2159 2160 2976 2977 4 2159 2160 2976 2977 4 2159 2160 2976 2977 4 2159 2160 2976 2977 4 2159 2160 2976 2977 4 2159 2160 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 8 2159 2160 2603 2604 2646 2647 2976 2977 3 2159 2603 2604 3 2159 2603 2604 3 2159 2603 2604 3 2159 2603 2604 3 2159 2603 2604 3 2159 2603 2604 3 2159 2387 2388 3 2159 2387 2388 3 2159 2387 2388 3 2159 2387 2388 3 2159 2387 2388 3 2159 2387 2388 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 10 2160 2161 2162 2430 2431 2473 2474 2924 2925 2926 4 2160 2161 2924 2925 4 2160 2161 2924 2925 4 2160 2161 2924 2925 4 2160 2161 2924 2925 4 2160 2161 2924 2925 4 2160 2161 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 8 2160 2161 2646 2647 2689 2690 2924 2925 3 2160 2646 2647 3 2160 2646 2647 3 2160 2646 2647 3 2160 2646 2647 3 2160 2646 2647 3 2160 2646 2647 3 2160 2430 2431 3 2160 2430 2431 3 2160 2430 2431 3 2160 2430 2431 3 2160 2430 2431 3 2160 2430 2431 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 12 2161 2162 2163 2164 2473 2474 2516 2517 2854 2855 2856 2857 4 2161 2163 2854 2856 4 2161 2163 2854 2856 4 2161 2163 2854 2856 4 2161 2163 2854 2856 4 2161 2163 2854 2856 4 2161 2163 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 8 2161 2163 2689 2690 2732 2733 2854 2856 3 2161 2689 2690 3 2161 2689 2690 3 2161 2689 2690 3 2161 2689 2690 3 2161 2689 2690 3 2161 2689 2690 4 2161 2162 2473 2474 4 2161 2162 2473 2474 4 2161 2162 2473 2474 4 2161 2162 2473 2474 4 2161 2162 2473 2474 4 2161 2162 2473 2474 4 2162 2164 2855 2857 4 2162 2164 2855 2857 4 2162 2164 2855 2857 4 2162 2164 2855 2857 4 2162 2164 2855 2857 4 2162 2164 2855 2857 2 2162 2926 2 2162 2926 2 2162 2926 2 2162 2926 2 2162 2926 2 2162 2926 8 2163 2164 2516 2517 2732 2733 2794 2795 8 2163 2164 2516 2517 2732 2733 2794 2795 8 2163 2164 2516 2517 2732 2733 2794 2795 8 2163 2164 2516 2517 2732 2733 2794 2795 8 2163 2164 2516 2517 2732 2733 2794 2795 8 2163 2164 2516 2517 2732 2733 2794 2795 3 2163 2732 2733 3 2163 2732 2733 3 2163 2732 2733 3 2163 2732 2733 3 2163 2732 2733 3 2163 2732 2733 4 2163 2164 2516 2517 4 2163 2164 2516 2517 4 2163 2164 2516 2517 4 2163 2164 2516 2517 4 2163 2164 2516 2517 4 2163 2164 2516 2517 3 2164 2794 2795 3 2164 2794 2795 3 2164 2794 2795 3 2164 2794 2795 3 2164 2794 2795 3 2164 2794 2795 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 10 2165 2166 2167 2345 2346 2388 2389 3031 3032 3033 4 2165 2167 3031 3033 4 2165 2167 3031 3033 4 2165 2167 3031 3033 4 2165 2167 3031 3033 4 2165 2167 3031 3033 4 2165 2167 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 8 2165 2167 2561 2562 2604 2605 3031 3033 3 2165 2561 2562 3 2165 2561 2562 3 2165 2561 2562 3 2165 2561 2562 3 2165 2561 2562 3 2165 2561 2562 5 2165 2561 2562 3089 3091 5 2165 2561 2562 3089 3091 5 2165 2561 2562 3089 3091 5 2165 2561 2562 3089 3091 5 2165 2561 2562 3089 3091 5 2165 2561 2562 3089 3091 3 2165 3089 3091 3 2165 3089 3091 3 2165 3089 3091 3 2165 3089 3091 3 2165 3089 3091 3 2165 3089 3091 4 2165 2166 2345 2346 4 2165 2166 2345 2346 4 2165 2166 2345 2346 4 2165 2166 2345 2346 4 2165 2166 2345 2346 4 2165 2166 2345 2346 2 2166 3032 2 2166 3032 2 2166 3032 2 2166 3032 2 2166 3032 2 2166 3032 8 2167 2168 2388 2389 2431 2432 2977 2978 8 2167 2168 2388 2389 2431 2432 2977 2978 8 2167 2168 2388 2389 2431 2432 2977 2978 8 2167 2168 2388 2389 2431 2432 2977 2978 8 2167 2168 2388 2389 2431 2432 2977 2978 8 2167 2168 2388 2389 2431 2432 2977 2978 4 2167 2168 2977 2978 4 2167 2168 2977 2978 4 2167 2168 2977 2978 4 2167 2168 2977 2978 4 2167 2168 2977 2978 4 2167 2168 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 8 2167 2168 2604 2605 2647 2648 2977 2978 3 2167 2604 2605 3 2167 2604 2605 3 2167 2604 2605 3 2167 2604 2605 3 2167 2604 2605 3 2167 2604 2605 3 2167 2388 2389 3 2167 2388 2389 3 2167 2388 2389 3 2167 2388 2389 3 2167 2388 2389 3 2167 2388 2389 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 10 2168 2169 2170 2431 2432 2474 2475 2925 2926 2927 4 2168 2169 2925 2927 4 2168 2169 2925 2927 4 2168 2169 2925 2927 4 2168 2169 2925 2927 4 2168 2169 2925 2927 4 2168 2169 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 8 2168 2169 2647 2648 2690 2691 2925 2927 3 2168 2647 2648 3 2168 2647 2648 3 2168 2647 2648 3 2168 2647 2648 3 2168 2647 2648 3 2168 2647 2648 3 2168 2431 2432 3 2168 2431 2432 3 2168 2431 2432 3 2168 2431 2432 3 2168 2431 2432 3 2168 2431 2432 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 12 2169 2170 2171 2172 2474 2475 2517 2518 2856 2857 2858 2859 4 2169 2171 2856 2858 4 2169 2171 2856 2858 4 2169 2171 2856 2858 4 2169 2171 2856 2858 4 2169 2171 2856 2858 4 2169 2171 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 8 2169 2171 2690 2691 2733 2734 2856 2858 3 2169 2690 2691 3 2169 2690 2691 3 2169 2690 2691 3 2169 2690 2691 3 2169 2690 2691 3 2169 2690 2691 4 2169 2170 2474 2475 4 2169 2170 2474 2475 4 2169 2170 2474 2475 4 2169 2170 2474 2475 4 2169 2170 2474 2475 4 2169 2170 2474 2475 4 2170 2172 2857 2859 4 2170 2172 2857 2859 4 2170 2172 2857 2859 4 2170 2172 2857 2859 4 2170 2172 2857 2859 4 2170 2172 2857 2859 2 2170 2926 2 2170 2926 2 2170 2926 2 2170 2926 2 2170 2926 2 2170 2926 8 2171 2172 2517 2518 2733 2734 2795 2796 8 2171 2172 2517 2518 2733 2734 2795 2796 8 2171 2172 2517 2518 2733 2734 2795 2796 8 2171 2172 2517 2518 2733 2734 2795 2796 8 2171 2172 2517 2518 2733 2734 2795 2796 8 2171 2172 2517 2518 2733 2734 2795 2796 3 2171 2733 2734 3 2171 2733 2734 3 2171 2733 2734 3 2171 2733 2734 3 2171 2733 2734 3 2171 2733 2734 4 2171 2172 2517 2518 4 2171 2172 2517 2518 4 2171 2172 2517 2518 4 2171 2172 2517 2518 4 2171 2172 2517 2518 4 2171 2172 2517 2518 3 2172 2795 2796 3 2172 2795 2796 3 2172 2795 2796 3 2172 2795 2796 3 2172 2795 2796 3 2172 2795 2796 8 2173 2174 2346 2347 2389 2390 3033 3034 8 2173 2174 2346 2347 2389 2390 3033 3034 8 2173 2174 2346 2347 2389 2390 3033 3034 8 2173 2174 2346 2347 2389 2390 3033 3034 8 2173 2174 2346 2347 2389 2390 3033 3034 8 2173 2174 2346 2347 2389 2390 3033 3034 4 2173 2174 3033 3034 4 2173 2174 3033 3034 4 2173 2174 3033 3034 4 2173 2174 3033 3034 4 2173 2174 3033 3034 4 2173 2174 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 8 2173 2174 2562 2563 2605 2606 3033 3034 3 2173 2562 2563 3 2173 2562 2563 3 2173 2562 2563 3 2173 2562 2563 3 2173 2562 2563 3 2173 2562 2563 5 2173 2562 2563 3091 3092 5 2173 2562 2563 3091 3092 5 2173 2562 2563 3091 3092 5 2173 2562 2563 3091 3092 5 2173 2562 2563 3091 3092 5 2173 2562 2563 3091 3092 3 2173 3091 3092 3 2173 3091 3092 3 2173 3091 3092 3 2173 3091 3092 3 2173 3091 3092 3 2173 3091 3092 3 2173 2346 2347 3 2173 2346 2347 3 2173 2346 2347 3 2173 2346 2347 3 2173 2346 2347 3 2173 2346 2347 8 2174 2175 2389 2390 2432 2433 2978 2979 8 2174 2175 2389 2390 2432 2433 2978 2979 8 2174 2175 2389 2390 2432 2433 2978 2979 8 2174 2175 2389 2390 2432 2433 2978 2979 8 2174 2175 2389 2390 2432 2433 2978 2979 8 2174 2175 2389 2390 2432 2433 2978 2979 4 2174 2175 2978 2979 4 2174 2175 2978 2979 4 2174 2175 2978 2979 4 2174 2175 2978 2979 4 2174 2175 2978 2979 4 2174 2175 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 8 2174 2175 2605 2606 2648 2649 2978 2979 3 2174 2605 2606 3 2174 2605 2606 3 2174 2605 2606 3 2174 2605 2606 3 2174 2605 2606 3 2174 2605 2606 3 2174 2389 2390 3 2174 2389 2390 3 2174 2389 2390 3 2174 2389 2390 3 2174 2389 2390 3 2174 2389 2390 8 2175 2176 2432 2433 2475 2476 2927 2928 8 2175 2176 2432 2433 2475 2476 2927 2928 8 2175 2176 2432 2433 2475 2476 2927 2928 8 2175 2176 2432 2433 2475 2476 2927 2928 8 2175 2176 2432 2433 2475 2476 2927 2928 8 2175 2176 2432 2433 2475 2476 2927 2928 4 2175 2176 2927 2928 4 2175 2176 2927 2928 4 2175 2176 2927 2928 4 2175 2176 2927 2928 4 2175 2176 2927 2928 4 2175 2176 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 8 2175 2176 2648 2649 2691 2692 2927 2928 3 2175 2648 2649 3 2175 2648 2649 3 2175 2648 2649 3 2175 2648 2649 3 2175 2648 2649 3 2175 2648 2649 3 2175 2432 2433 3 2175 2432 2433 3 2175 2432 2433 3 2175 2432 2433 3 2175 2432 2433 3 2175 2432 2433 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 11 2176 2177 2178 2475 2476 2518 2519 2858 2859 2860 2861 4 2176 2177 2858 2860 4 2176 2177 2858 2860 4 2176 2177 2858 2860 4 2176 2177 2858 2860 4 2176 2177 2858 2860 4 2176 2177 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 8 2176 2177 2691 2692 2734 2735 2858 2860 3 2176 2691 2692 3 2176 2691 2692 3 2176 2691 2692 3 2176 2691 2692 3 2176 2691 2692 3 2176 2691 2692 3 2176 2475 2476 3 2176 2475 2476 3 2176 2475 2476 3 2176 2475 2476 3 2176 2475 2476 3 2176 2475 2476 8 2177 2178 2518 2519 2734 2735 2796 2797 8 2177 2178 2518 2519 2734 2735 2796 2797 8 2177 2178 2518 2519 2734 2735 2796 2797 8 2177 2178 2518 2519 2734 2735 2796 2797 8 2177 2178 2518 2519 2734 2735 2796 2797 8 2177 2178 2518 2519 2734 2735 2796 2797 3 2177 2734 2735 3 2177 2734 2735 3 2177 2734 2735 3 2177 2734 2735 3 2177 2734 2735 3 2177 2734 2735 4 2177 2178 2518 2519 4 2177 2178 2518 2519 4 2177 2178 2518 2519 4 2177 2178 2518 2519 4 2177 2178 2518 2519 4 2177 2178 2518 2519 3 2178 2796 2797 3 2178 2796 2797 3 2178 2796 2797 3 2178 2796 2797 3 2178 2796 2797 3 2178 2796 2797 3 2178 2859 2861 3 2178 2859 2861 3 2178 2859 2861 3 2178 2859 2861 3 2178 2859 2861 3 2178 2859 2861 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 10 2179 2180 2181 2347 2348 2390 2391 3034 3035 3036 4 2179 2181 3034 3035 4 2179 2181 3034 3035 4 2179 2181 3034 3035 4 2179 2181 3034 3035 4 2179 2181 3034 3035 4 2179 2181 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 8 2179 2181 2563 2564 2606 2607 3034 3035 3 2179 2563 2564 3 2179 2563 2564 3 2179 2563 2564 3 2179 2563 2564 3 2179 2563 2564 3 2179 2563 2564 5 2179 2563 2564 3092 3093 5 2179 2563 2564 3092 3093 5 2179 2563 2564 3092 3093 5 2179 2563 2564 3092 3093 5 2179 2563 2564 3092 3093 5 2179 2563 2564 3092 3093 3 2179 3092 3093 3 2179 3092 3093 3 2179 3092 3093 3 2179 3092 3093 3 2179 3092 3093 3 2179 3092 3093 4 2179 2180 2347 2348 4 2179 2180 2347 2348 4 2179 2180 2347 2348 4 2179 2180 2347 2348 4 2179 2180 2347 2348 4 2179 2180 2347 2348 2 2180 3036 2 2180 3036 2 2180 3036 2 2180 3036 2 2180 3036 2 2180 3036 8 2181 2182 2390 2391 2433 2434 2979 2980 8 2181 2182 2390 2391 2433 2434 2979 2980 8 2181 2182 2390 2391 2433 2434 2979 2980 8 2181 2182 2390 2391 2433 2434 2979 2980 8 2181 2182 2390 2391 2433 2434 2979 2980 8 2181 2182 2390 2391 2433 2434 2979 2980 4 2181 2182 2979 2980 4 2181 2182 2979 2980 4 2181 2182 2979 2980 4 2181 2182 2979 2980 4 2181 2182 2979 2980 4 2181 2182 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 8 2181 2182 2606 2607 2649 2650 2979 2980 3 2181 2606 2607 3 2181 2606 2607 3 2181 2606 2607 3 2181 2606 2607 3 2181 2606 2607 3 2181 2606 2607 3 2181 2390 2391 3 2181 2390 2391 3 2181 2390 2391 3 2181 2390 2391 3 2181 2390 2391 3 2181 2390 2391 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 10 2182 2183 2184 2433 2434 2476 2477 2928 2929 2930 4 2182 2183 2928 2929 4 2182 2183 2928 2929 4 2182 2183 2928 2929 4 2182 2183 2928 2929 4 2182 2183 2928 2929 4 2182 2183 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 8 2182 2183 2649 2650 2692 2693 2928 2929 3 2182 2649 2650 3 2182 2649 2650 3 2182 2649 2650 3 2182 2649 2650 3 2182 2649 2650 3 2182 2649 2650 3 2182 2433 2434 3 2182 2433 2434 3 2182 2433 2434 3 2182 2433 2434 3 2182 2433 2434 3 2182 2433 2434 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 12 2183 2184 2185 2186 2476 2477 2519 2520 2860 2861 2862 2863 4 2183 2185 2860 2862 4 2183 2185 2860 2862 4 2183 2185 2860 2862 4 2183 2185 2860 2862 4 2183 2185 2860 2862 4 2183 2185 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 8 2183 2185 2692 2693 2735 2736 2860 2862 3 2183 2692 2693 3 2183 2692 2693 3 2183 2692 2693 3 2183 2692 2693 3 2183 2692 2693 3 2183 2692 2693 4 2183 2184 2476 2477 4 2183 2184 2476 2477 4 2183 2184 2476 2477 4 2183 2184 2476 2477 4 2183 2184 2476 2477 4 2183 2184 2476 2477 4 2184 2186 2861 2863 4 2184 2186 2861 2863 4 2184 2186 2861 2863 4 2184 2186 2861 2863 4 2184 2186 2861 2863 4 2184 2186 2861 2863 2 2184 2930 2 2184 2930 2 2184 2930 2 2184 2930 2 2184 2930 2 2184 2930 8 2185 2186 2519 2520 2735 2736 2797 2798 8 2185 2186 2519 2520 2735 2736 2797 2798 8 2185 2186 2519 2520 2735 2736 2797 2798 8 2185 2186 2519 2520 2735 2736 2797 2798 8 2185 2186 2519 2520 2735 2736 2797 2798 8 2185 2186 2519 2520 2735 2736 2797 2798 3 2185 2735 2736 3 2185 2735 2736 3 2185 2735 2736 3 2185 2735 2736 3 2185 2735 2736 3 2185 2735 2736 4 2185 2186 2519 2520 4 2185 2186 2519 2520 4 2185 2186 2519 2520 4 2185 2186 2519 2520 4 2185 2186 2519 2520 4 2185 2186 2519 2520 3 2186 2797 2798 3 2186 2797 2798 3 2186 2797 2798 3 2186 2797 2798 3 2186 2797 2798 3 2186 2797 2798 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 11 2187 2188 2189 2190 2348 2349 2391 2392 3035 3036 3037 4 2187 2189 3035 3037 4 2187 2189 3035 3037 4 2187 2189 3035 3037 4 2187 2189 3035 3037 4 2187 2189 3035 3037 4 2187 2189 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 8 2187 2189 2564 2565 2607 2608 3035 3037 3 2187 2564 2565 3 2187 2564 2565 3 2187 2564 2565 3 2187 2564 2565 3 2187 2564 2565 3 2187 2564 2565 5 2187 2564 2565 3093 3095 5 2187 2564 2565 3093 3095 5 2187 2564 2565 3093 3095 5 2187 2564 2565 3093 3095 5 2187 2564 2565 3093 3095 5 2187 2564 2565 3093 3095 3 2187 3093 3095 3 2187 3093 3095 3 2187 3093 3095 3 2187 3093 3095 3 2187 3093 3095 3 2187 3093 3095 4 2187 2188 2348 2349 4 2187 2188 2348 2349 4 2187 2188 2348 2349 4 2187 2188 2348 2349 4 2187 2188 2348 2349 4 2187 2188 2348 2349 3 2188 2190 3036 3 2188 2190 3036 3 2188 2190 3036 3 2188 2190 3036 3 2188 2190 3036 3 2188 2190 3036 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 10 2189 2190 2191 2192 2391 2392 2434 2435 2980 2981 4 2189 2191 2980 2981 4 2189 2191 2980 2981 4 2189 2191 2980 2981 4 2189 2191 2980 2981 4 2189 2191 2980 2981 4 2189 2191 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 8 2189 2191 2607 2608 2650 2651 2980 2981 3 2189 2607 2608 3 2189 2607 2608 3 2189 2607 2608 3 2189 2607 2608 3 2189 2607 2608 3 2189 2607 2608 4 2189 2190 2391 2392 4 2189 2190 2391 2392 4 2189 2190 2391 2392 4 2189 2190 2391 2392 4 2189 2190 2391 2392 4 2189 2190 2391 2392 2 2190 2192 2 2190 2192 2 2190 2192 2 2190 2192 2 2190 2192 2 2190 2192 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 11 2191 2192 2193 2194 2434 2435 2477 2478 2929 2930 2931 4 2191 2193 2929 2931 4 2191 2193 2929 2931 4 2191 2193 2929 2931 4 2191 2193 2929 2931 4 2191 2193 2929 2931 4 2191 2193 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 8 2191 2193 2650 2651 2693 2694 2929 2931 3 2191 2650 2651 3 2191 2650 2651 3 2191 2650 2651 3 2191 2650 2651 3 2191 2650 2651 3 2191 2650 2651 4 2191 2192 2434 2435 4 2191 2192 2434 2435 4 2191 2192 2434 2435 4 2191 2192 2434 2435 4 2191 2192 2434 2435 4 2191 2192 2434 2435 3 2192 2194 2930 3 2192 2194 2930 3 2192 2194 2930 3 2192 2194 2930 3 2192 2194 2930 3 2192 2194 2930 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 12 2193 2194 2195 2196 2477 2478 2520 2521 2862 2863 2864 2865 4 2193 2195 2862 2864 4 2193 2195 2862 2864 4 2193 2195 2862 2864 4 2193 2195 2862 2864 4 2193 2195 2862 2864 4 2193 2195 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 8 2193 2195 2693 2694 2736 2737 2862 2864 3 2193 2693 2694 3 2193 2693 2694 3 2193 2693 2694 3 2193 2693 2694 3 2193 2693 2694 3 2193 2693 2694 4 2193 2194 2477 2478 4 2193 2194 2477 2478 4 2193 2194 2477 2478 4 2193 2194 2477 2478 4 2193 2194 2477 2478 4 2193 2194 2477 2478 4 2194 2196 2863 2865 4 2194 2196 2863 2865 4 2194 2196 2863 2865 4 2194 2196 2863 2865 4 2194 2196 2863 2865 4 2194 2196 2863 2865 8 2195 2196 2520 2521 2736 2737 2798 2799 8 2195 2196 2520 2521 2736 2737 2798 2799 8 2195 2196 2520 2521 2736 2737 2798 2799 8 2195 2196 2520 2521 2736 2737 2798 2799 8 2195 2196 2520 2521 2736 2737 2798 2799 8 2195 2196 2520 2521 2736 2737 2798 2799 3 2195 2736 2737 3 2195 2736 2737 3 2195 2736 2737 3 2195 2736 2737 3 2195 2736 2737 3 2195 2736 2737 4 2195 2196 2520 2521 4 2195 2196 2520 2521 4 2195 2196 2520 2521 4 2195 2196 2520 2521 4 2195 2196 2520 2521 4 2195 2196 2520 2521 3 2196 2798 2799 3 2196 2798 2799 3 2196 2798 2799 3 2196 2798 2799 3 2196 2798 2799 3 2196 2798 2799 8 2197 2198 2349 2350 2392 2393 3037 3038 8 2197 2198 2349 2350 2392 2393 3037 3038 8 2197 2198 2349 2350 2392 2393 3037 3038 8 2197 2198 2349 2350 2392 2393 3037 3038 8 2197 2198 2349 2350 2392 2393 3037 3038 8 2197 2198 2349 2350 2392 2393 3037 3038 4 2197 2198 3037 3038 4 2197 2198 3037 3038 4 2197 2198 3037 3038 4 2197 2198 3037 3038 4 2197 2198 3037 3038 4 2197 2198 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 8 2197 2198 2565 2566 2608 2609 3037 3038 3 2197 2565 2566 3 2197 2565 2566 3 2197 2565 2566 3 2197 2565 2566 3 2197 2565 2566 3 2197 2565 2566 5 2197 2565 2566 3095 3096 5 2197 2565 2566 3095 3096 5 2197 2565 2566 3095 3096 5 2197 2565 2566 3095 3096 5 2197 2565 2566 3095 3096 5 2197 2565 2566 3095 3096 3 2197 3095 3096 3 2197 3095 3096 3 2197 3095 3096 3 2197 3095 3096 3 2197 3095 3096 3 2197 3095 3096 3 2197 2349 2350 3 2197 2349 2350 3 2197 2349 2350 3 2197 2349 2350 3 2197 2349 2350 3 2197 2349 2350 8 2198 2199 2392 2393 2435 2436 2981 2982 8 2198 2199 2392 2393 2435 2436 2981 2982 8 2198 2199 2392 2393 2435 2436 2981 2982 8 2198 2199 2392 2393 2435 2436 2981 2982 8 2198 2199 2392 2393 2435 2436 2981 2982 8 2198 2199 2392 2393 2435 2436 2981 2982 4 2198 2199 2981 2982 4 2198 2199 2981 2982 4 2198 2199 2981 2982 4 2198 2199 2981 2982 4 2198 2199 2981 2982 4 2198 2199 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 8 2198 2199 2608 2609 2651 2652 2981 2982 3 2198 2608 2609 3 2198 2608 2609 3 2198 2608 2609 3 2198 2608 2609 3 2198 2608 2609 3 2198 2608 2609 3 2198 2392 2393 3 2198 2392 2393 3 2198 2392 2393 3 2198 2392 2393 3 2198 2392 2393 3 2198 2392 2393 8 2199 2200 2435 2436 2478 2479 2931 2932 8 2199 2200 2435 2436 2478 2479 2931 2932 8 2199 2200 2435 2436 2478 2479 2931 2932 8 2199 2200 2435 2436 2478 2479 2931 2932 8 2199 2200 2435 2436 2478 2479 2931 2932 8 2199 2200 2435 2436 2478 2479 2931 2932 4 2199 2200 2931 2932 4 2199 2200 2931 2932 4 2199 2200 2931 2932 4 2199 2200 2931 2932 4 2199 2200 2931 2932 4 2199 2200 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 8 2199 2200 2651 2652 2694 2695 2931 2932 3 2199 2651 2652 3 2199 2651 2652 3 2199 2651 2652 3 2199 2651 2652 3 2199 2651 2652 3 2199 2651 2652 3 2199 2435 2436 3 2199 2435 2436 3 2199 2435 2436 3 2199 2435 2436 3 2199 2435 2436 3 2199 2435 2436 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 11 2200 2201 2202 2478 2479 2521 2522 2864 2865 2866 2867 4 2200 2201 2864 2866 4 2200 2201 2864 2866 4 2200 2201 2864 2866 4 2200 2201 2864 2866 4 2200 2201 2864 2866 4 2200 2201 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 8 2200 2201 2694 2695 2737 2738 2864 2866 3 2200 2694 2695 3 2200 2694 2695 3 2200 2694 2695 3 2200 2694 2695 3 2200 2694 2695 3 2200 2694 2695 3 2200 2478 2479 3 2200 2478 2479 3 2200 2478 2479 3 2200 2478 2479 3 2200 2478 2479 3 2200 2478 2479 8 2201 2202 2521 2522 2737 2738 2799 2800 8 2201 2202 2521 2522 2737 2738 2799 2800 8 2201 2202 2521 2522 2737 2738 2799 2800 8 2201 2202 2521 2522 2737 2738 2799 2800 8 2201 2202 2521 2522 2737 2738 2799 2800 8 2201 2202 2521 2522 2737 2738 2799 2800 3 2201 2737 2738 3 2201 2737 2738 3 2201 2737 2738 3 2201 2737 2738 3 2201 2737 2738 3 2201 2737 2738 4 2201 2202 2521 2522 4 2201 2202 2521 2522 4 2201 2202 2521 2522 4 2201 2202 2521 2522 4 2201 2202 2521 2522 4 2201 2202 2521 2522 3 2202 2799 2800 3 2202 2799 2800 3 2202 2799 2800 3 2202 2799 2800 3 2202 2799 2800 3 2202 2799 2800 3 2202 2865 2867 3 2202 2865 2867 3 2202 2865 2867 3 2202 2865 2867 3 2202 2865 2867 3 2202 2865 2867 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 10 2203 2204 2205 2350 2351 2393 2394 3038 3039 3040 4 2203 2205 3038 3039 4 2203 2205 3038 3039 4 2203 2205 3038 3039 4 2203 2205 3038 3039 4 2203 2205 3038 3039 4 2203 2205 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 8 2203 2205 2566 2567 2609 2610 3038 3039 3 2203 2566 2567 3 2203 2566 2567 3 2203 2566 2567 3 2203 2566 2567 3 2203 2566 2567 3 2203 2566 2567 5 2203 2566 2567 3096 3097 5 2203 2566 2567 3096 3097 5 2203 2566 2567 3096 3097 5 2203 2566 2567 3096 3097 5 2203 2566 2567 3096 3097 5 2203 2566 2567 3096 3097 3 2203 3096 3097 3 2203 3096 3097 3 2203 3096 3097 3 2203 3096 3097 3 2203 3096 3097 3 2203 3096 3097 4 2203 2204 2350 2351 4 2203 2204 2350 2351 4 2203 2204 2350 2351 4 2203 2204 2350 2351 4 2203 2204 2350 2351 4 2203 2204 2350 2351 2 2204 3040 2 2204 3040 2 2204 3040 2 2204 3040 2 2204 3040 2 2204 3040 8 2205 2206 2393 2394 2436 2437 2982 2983 8 2205 2206 2393 2394 2436 2437 2982 2983 8 2205 2206 2393 2394 2436 2437 2982 2983 8 2205 2206 2393 2394 2436 2437 2982 2983 8 2205 2206 2393 2394 2436 2437 2982 2983 8 2205 2206 2393 2394 2436 2437 2982 2983 4 2205 2206 2982 2983 4 2205 2206 2982 2983 4 2205 2206 2982 2983 4 2205 2206 2982 2983 4 2205 2206 2982 2983 4 2205 2206 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 8 2205 2206 2609 2610 2652 2653 2982 2983 3 2205 2609 2610 3 2205 2609 2610 3 2205 2609 2610 3 2205 2609 2610 3 2205 2609 2610 3 2205 2609 2610 3 2205 2393 2394 3 2205 2393 2394 3 2205 2393 2394 3 2205 2393 2394 3 2205 2393 2394 3 2205 2393 2394 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 10 2206 2207 2208 2436 2437 2479 2480 2932 2933 2934 4 2206 2207 2932 2933 4 2206 2207 2932 2933 4 2206 2207 2932 2933 4 2206 2207 2932 2933 4 2206 2207 2932 2933 4 2206 2207 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 8 2206 2207 2652 2653 2695 2696 2932 2933 3 2206 2652 2653 3 2206 2652 2653 3 2206 2652 2653 3 2206 2652 2653 3 2206 2652 2653 3 2206 2652 2653 3 2206 2436 2437 3 2206 2436 2437 3 2206 2436 2437 3 2206 2436 2437 3 2206 2436 2437 3 2206 2436 2437 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 12 2207 2208 2209 2210 2479 2480 2522 2523 2866 2867 2868 2869 4 2207 2209 2866 2868 4 2207 2209 2866 2868 4 2207 2209 2866 2868 4 2207 2209 2866 2868 4 2207 2209 2866 2868 4 2207 2209 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 8 2207 2209 2695 2696 2738 2739 2866 2868 3 2207 2695 2696 3 2207 2695 2696 3 2207 2695 2696 3 2207 2695 2696 3 2207 2695 2696 3 2207 2695 2696 4 2207 2208 2479 2480 4 2207 2208 2479 2480 4 2207 2208 2479 2480 4 2207 2208 2479 2480 4 2207 2208 2479 2480 4 2207 2208 2479 2480 4 2208 2210 2867 2869 4 2208 2210 2867 2869 4 2208 2210 2867 2869 4 2208 2210 2867 2869 4 2208 2210 2867 2869 4 2208 2210 2867 2869 2 2208 2934 2 2208 2934 2 2208 2934 2 2208 2934 2 2208 2934 2 2208 2934 8 2209 2210 2522 2523 2738 2739 2800 2801 8 2209 2210 2522 2523 2738 2739 2800 2801 8 2209 2210 2522 2523 2738 2739 2800 2801 8 2209 2210 2522 2523 2738 2739 2800 2801 8 2209 2210 2522 2523 2738 2739 2800 2801 8 2209 2210 2522 2523 2738 2739 2800 2801 3 2209 2738 2739 3 2209 2738 2739 3 2209 2738 2739 3 2209 2738 2739 3 2209 2738 2739 3 2209 2738 2739 4 2209 2210 2522 2523 4 2209 2210 2522 2523 4 2209 2210 2522 2523 4 2209 2210 2522 2523 4 2209 2210 2522 2523 4 2209 2210 2522 2523 3 2210 2800 2801 3 2210 2800 2801 3 2210 2800 2801 3 2210 2800 2801 3 2210 2800 2801 3 2210 2800 2801 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 10 2211 2212 2213 2351 2352 2394 2395 3039 3040 3041 4 2211 2213 3039 3041 4 2211 2213 3039 3041 4 2211 2213 3039 3041 4 2211 2213 3039 3041 4 2211 2213 3039 3041 4 2211 2213 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 8 2211 2213 2567 2568 2610 2611 3039 3041 3 2211 2567 2568 3 2211 2567 2568 3 2211 2567 2568 3 2211 2567 2568 3 2211 2567 2568 3 2211 2567 2568 5 2211 2567 2568 3097 3099 5 2211 2567 2568 3097 3099 5 2211 2567 2568 3097 3099 5 2211 2567 2568 3097 3099 5 2211 2567 2568 3097 3099 5 2211 2567 2568 3097 3099 3 2211 3097 3099 3 2211 3097 3099 3 2211 3097 3099 3 2211 3097 3099 3 2211 3097 3099 3 2211 3097 3099 4 2211 2212 2351 2352 4 2211 2212 2351 2352 4 2211 2212 2351 2352 4 2211 2212 2351 2352 4 2211 2212 2351 2352 4 2211 2212 2351 2352 2 2212 3040 2 2212 3040 2 2212 3040 2 2212 3040 2 2212 3040 2 2212 3040 8 2213 2214 2394 2395 2437 2438 2983 2984 8 2213 2214 2394 2395 2437 2438 2983 2984 8 2213 2214 2394 2395 2437 2438 2983 2984 8 2213 2214 2394 2395 2437 2438 2983 2984 8 2213 2214 2394 2395 2437 2438 2983 2984 8 2213 2214 2394 2395 2437 2438 2983 2984 4 2213 2214 2983 2984 4 2213 2214 2983 2984 4 2213 2214 2983 2984 4 2213 2214 2983 2984 4 2213 2214 2983 2984 4 2213 2214 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 8 2213 2214 2610 2611 2653 2654 2983 2984 3 2213 2610 2611 3 2213 2610 2611 3 2213 2610 2611 3 2213 2610 2611 3 2213 2610 2611 3 2213 2610 2611 3 2213 2394 2395 3 2213 2394 2395 3 2213 2394 2395 3 2213 2394 2395 3 2213 2394 2395 3 2213 2394 2395 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 10 2214 2215 2216 2437 2438 2480 2481 2933 2934 2935 4 2214 2215 2933 2935 4 2214 2215 2933 2935 4 2214 2215 2933 2935 4 2214 2215 2933 2935 4 2214 2215 2933 2935 4 2214 2215 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 8 2214 2215 2653 2654 2696 2697 2933 2935 3 2214 2653 2654 3 2214 2653 2654 3 2214 2653 2654 3 2214 2653 2654 3 2214 2653 2654 3 2214 2653 2654 3 2214 2437 2438 3 2214 2437 2438 3 2214 2437 2438 3 2214 2437 2438 3 2214 2437 2438 3 2214 2437 2438 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 12 2215 2216 2217 2218 2480 2481 2523 2524 2868 2869 2870 2871 4 2215 2217 2868 2870 4 2215 2217 2868 2870 4 2215 2217 2868 2870 4 2215 2217 2868 2870 4 2215 2217 2868 2870 4 2215 2217 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 8 2215 2217 2696 2697 2739 2740 2868 2870 3 2215 2696 2697 3 2215 2696 2697 3 2215 2696 2697 3 2215 2696 2697 3 2215 2696 2697 3 2215 2696 2697 4 2215 2216 2480 2481 4 2215 2216 2480 2481 4 2215 2216 2480 2481 4 2215 2216 2480 2481 4 2215 2216 2480 2481 4 2215 2216 2480 2481 4 2216 2218 2869 2871 4 2216 2218 2869 2871 4 2216 2218 2869 2871 4 2216 2218 2869 2871 4 2216 2218 2869 2871 4 2216 2218 2869 2871 2 2216 2934 2 2216 2934 2 2216 2934 2 2216 2934 2 2216 2934 2 2216 2934 8 2217 2218 2523 2524 2739 2740 2801 2802 8 2217 2218 2523 2524 2739 2740 2801 2802 8 2217 2218 2523 2524 2739 2740 2801 2802 8 2217 2218 2523 2524 2739 2740 2801 2802 8 2217 2218 2523 2524 2739 2740 2801 2802 8 2217 2218 2523 2524 2739 2740 2801 2802 3 2217 2739 2740 3 2217 2739 2740 3 2217 2739 2740 3 2217 2739 2740 3 2217 2739 2740 3 2217 2739 2740 4 2217 2218 2523 2524 4 2217 2218 2523 2524 4 2217 2218 2523 2524 4 2217 2218 2523 2524 4 2217 2218 2523 2524 4 2217 2218 2523 2524 3 2218 2801 2802 3 2218 2801 2802 3 2218 2801 2802 3 2218 2801 2802 3 2218 2801 2802 3 2218 2801 2802 8 2219 2220 2352 2353 2395 2396 3041 3042 8 2219 2220 2352 2353 2395 2396 3041 3042 8 2219 2220 2352 2353 2395 2396 3041 3042 8 2219 2220 2352 2353 2395 2396 3041 3042 8 2219 2220 2352 2353 2395 2396 3041 3042 8 2219 2220 2352 2353 2395 2396 3041 3042 4 2219 2220 3041 3042 4 2219 2220 3041 3042 4 2219 2220 3041 3042 4 2219 2220 3041 3042 4 2219 2220 3041 3042 4 2219 2220 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 8 2219 2220 2568 2569 2611 2612 3041 3042 3 2219 2568 2569 3 2219 2568 2569 3 2219 2568 2569 3 2219 2568 2569 3 2219 2568 2569 3 2219 2568 2569 5 2219 2568 2569 3099 3100 5 2219 2568 2569 3099 3100 5 2219 2568 2569 3099 3100 5 2219 2568 2569 3099 3100 5 2219 2568 2569 3099 3100 5 2219 2568 2569 3099 3100 3 2219 3099 3100 3 2219 3099 3100 3 2219 3099 3100 3 2219 3099 3100 3 2219 3099 3100 3 2219 3099 3100 3 2219 2352 2353 3 2219 2352 2353 3 2219 2352 2353 3 2219 2352 2353 3 2219 2352 2353 3 2219 2352 2353 8 2220 2221 2395 2396 2438 2439 2984 2985 8 2220 2221 2395 2396 2438 2439 2984 2985 8 2220 2221 2395 2396 2438 2439 2984 2985 8 2220 2221 2395 2396 2438 2439 2984 2985 8 2220 2221 2395 2396 2438 2439 2984 2985 8 2220 2221 2395 2396 2438 2439 2984 2985 4 2220 2221 2984 2985 4 2220 2221 2984 2985 4 2220 2221 2984 2985 4 2220 2221 2984 2985 4 2220 2221 2984 2985 4 2220 2221 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 8 2220 2221 2611 2612 2654 2655 2984 2985 3 2220 2611 2612 3 2220 2611 2612 3 2220 2611 2612 3 2220 2611 2612 3 2220 2611 2612 3 2220 2611 2612 3 2220 2395 2396 3 2220 2395 2396 3 2220 2395 2396 3 2220 2395 2396 3 2220 2395 2396 3 2220 2395 2396 8 2221 2222 2438 2439 2481 2482 2935 2936 8 2221 2222 2438 2439 2481 2482 2935 2936 8 2221 2222 2438 2439 2481 2482 2935 2936 8 2221 2222 2438 2439 2481 2482 2935 2936 8 2221 2222 2438 2439 2481 2482 2935 2936 8 2221 2222 2438 2439 2481 2482 2935 2936 4 2221 2222 2935 2936 4 2221 2222 2935 2936 4 2221 2222 2935 2936 4 2221 2222 2935 2936 4 2221 2222 2935 2936 4 2221 2222 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 8 2221 2222 2654 2655 2697 2698 2935 2936 3 2221 2654 2655 3 2221 2654 2655 3 2221 2654 2655 3 2221 2654 2655 3 2221 2654 2655 3 2221 2654 2655 3 2221 2438 2439 3 2221 2438 2439 3 2221 2438 2439 3 2221 2438 2439 3 2221 2438 2439 3 2221 2438 2439 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 11 2222 2223 2224 2481 2482 2524 2525 2870 2871 2872 2873 4 2222 2223 2870 2872 4 2222 2223 2870 2872 4 2222 2223 2870 2872 4 2222 2223 2870 2872 4 2222 2223 2870 2872 4 2222 2223 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 8 2222 2223 2697 2698 2740 2741 2870 2872 3 2222 2697 2698 3 2222 2697 2698 3 2222 2697 2698 3 2222 2697 2698 3 2222 2697 2698 3 2222 2697 2698 3 2222 2481 2482 3 2222 2481 2482 3 2222 2481 2482 3 2222 2481 2482 3 2222 2481 2482 3 2222 2481 2482 8 2223 2224 2524 2525 2740 2741 2802 2803 8 2223 2224 2524 2525 2740 2741 2802 2803 8 2223 2224 2524 2525 2740 2741 2802 2803 8 2223 2224 2524 2525 2740 2741 2802 2803 8 2223 2224 2524 2525 2740 2741 2802 2803 8 2223 2224 2524 2525 2740 2741 2802 2803 3 2223 2740 2741 3 2223 2740 2741 3 2223 2740 2741 3 2223 2740 2741 3 2223 2740 2741 3 2223 2740 2741 4 2223 2224 2524 2525 4 2223 2224 2524 2525 4 2223 2224 2524 2525 4 2223 2224 2524 2525 4 2223 2224 2524 2525 4 2223 2224 2524 2525 3 2224 2802 2803 3 2224 2802 2803 3 2224 2802 2803 3 2224 2802 2803 3 2224 2802 2803 3 2224 2802 2803 3 2224 2871 2873 3 2224 2871 2873 3 2224 2871 2873 3 2224 2871 2873 3 2224 2871 2873 3 2224 2871 2873 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 11 2225 2226 2227 2228 2353 2354 2396 2397 3042 3043 3044 4 2225 2227 3042 3043 4 2225 2227 3042 3043 4 2225 2227 3042 3043 4 2225 2227 3042 3043 4 2225 2227 3042 3043 4 2225 2227 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 8 2225 2227 2569 2570 2612 2613 3042 3043 3 2225 2569 2570 3 2225 2569 2570 3 2225 2569 2570 3 2225 2569 2570 3 2225 2569 2570 3 2225 2569 2570 5 2225 2569 2570 3100 3101 5 2225 2569 2570 3100 3101 5 2225 2569 2570 3100 3101 5 2225 2569 2570 3100 3101 5 2225 2569 2570 3100 3101 5 2225 2569 2570 3100 3101 3 2225 3100 3101 3 2225 3100 3101 3 2225 3100 3101 3 2225 3100 3101 3 2225 3100 3101 3 2225 3100 3101 4 2225 2226 2353 2354 4 2225 2226 2353 2354 4 2225 2226 2353 2354 4 2225 2226 2353 2354 4 2225 2226 2353 2354 4 2225 2226 2353 2354 3 2226 2228 3044 3 2226 2228 3044 3 2226 2228 3044 3 2226 2228 3044 3 2226 2228 3044 3 2226 2228 3044 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 11 2227 2228 2229 2230 2396 2397 2439 2440 2985 2986 2987 4 2227 2229 2985 2986 4 2227 2229 2985 2986 4 2227 2229 2985 2986 4 2227 2229 2985 2986 4 2227 2229 2985 2986 4 2227 2229 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 8 2227 2229 2612 2613 2655 2656 2985 2986 3 2227 2612 2613 3 2227 2612 2613 3 2227 2612 2613 3 2227 2612 2613 3 2227 2612 2613 3 2227 2612 2613 4 2227 2228 2396 2397 4 2227 2228 2396 2397 4 2227 2228 2396 2397 4 2227 2228 2396 2397 4 2227 2228 2396 2397 4 2227 2228 2396 2397 3 2228 2230 2987 3 2228 2230 2987 3 2228 2230 2987 3 2228 2230 2987 3 2228 2230 2987 3 2228 2230 2987 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 11 2229 2230 2231 2232 2439 2440 2482 2483 2936 2937 2938 4 2229 2231 2936 2937 4 2229 2231 2936 2937 4 2229 2231 2936 2937 4 2229 2231 2936 2937 4 2229 2231 2936 2937 4 2229 2231 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 8 2229 2231 2655 2656 2698 2699 2936 2937 3 2229 2655 2656 3 2229 2655 2656 3 2229 2655 2656 3 2229 2655 2656 3 2229 2655 2656 3 2229 2655 2656 4 2229 2230 2439 2440 4 2229 2230 2439 2440 4 2229 2230 2439 2440 4 2229 2230 2439 2440 4 2229 2230 2439 2440 4 2229 2230 2439 2440 3 2230 2232 2938 3 2230 2232 2938 3 2230 2232 2938 3 2230 2232 2938 3 2230 2232 2938 3 2230 2232 2938 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 12 2231 2232 2233 2234 2482 2483 2525 2526 2872 2873 2874 2875 4 2231 2233 2872 2874 4 2231 2233 2872 2874 4 2231 2233 2872 2874 4 2231 2233 2872 2874 4 2231 2233 2872 2874 4 2231 2233 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 8 2231 2233 2698 2699 2741 2742 2872 2874 3 2231 2698 2699 3 2231 2698 2699 3 2231 2698 2699 3 2231 2698 2699 3 2231 2698 2699 3 2231 2698 2699 4 2231 2232 2482 2483 4 2231 2232 2482 2483 4 2231 2232 2482 2483 4 2231 2232 2482 2483 4 2231 2232 2482 2483 4 2231 2232 2482 2483 4 2232 2234 2873 2875 4 2232 2234 2873 2875 4 2232 2234 2873 2875 4 2232 2234 2873 2875 4 2232 2234 2873 2875 4 2232 2234 2873 2875 8 2233 2234 2525 2526 2741 2742 2803 2804 8 2233 2234 2525 2526 2741 2742 2803 2804 8 2233 2234 2525 2526 2741 2742 2803 2804 8 2233 2234 2525 2526 2741 2742 2803 2804 8 2233 2234 2525 2526 2741 2742 2803 2804 8 2233 2234 2525 2526 2741 2742 2803 2804 3 2233 2741 2742 3 2233 2741 2742 3 2233 2741 2742 3 2233 2741 2742 3 2233 2741 2742 3 2233 2741 2742 4 2233 2234 2525 2526 4 2233 2234 2525 2526 4 2233 2234 2525 2526 4 2233 2234 2525 2526 4 2233 2234 2525 2526 4 2233 2234 2525 2526 3 2234 2803 2804 3 2234 2803 2804 3 2234 2803 2804 3 2234 2803 2804 3 2234 2803 2804 3 2234 2803 2804 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 11 2235 2236 2237 2238 2354 2355 2397 2398 3043 3044 3045 4 2235 2237 3043 3045 4 2235 2237 3043 3045 4 2235 2237 3043 3045 4 2235 2237 3043 3045 4 2235 2237 3043 3045 4 2235 2237 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 8 2235 2237 2570 2571 2613 2614 3043 3045 3 2235 2570 2571 3 2235 2570 2571 3 2235 2570 2571 3 2235 2570 2571 3 2235 2570 2571 3 2235 2570 2571 5 2235 2570 2571 3101 3103 5 2235 2570 2571 3101 3103 5 2235 2570 2571 3101 3103 5 2235 2570 2571 3101 3103 5 2235 2570 2571 3101 3103 5 2235 2570 2571 3101 3103 3 2235 3101 3103 3 2235 3101 3103 3 2235 3101 3103 3 2235 3101 3103 3 2235 3101 3103 3 2235 3101 3103 4 2235 2236 2354 2355 4 2235 2236 2354 2355 4 2235 2236 2354 2355 4 2235 2236 2354 2355 4 2235 2236 2354 2355 4 2235 2236 2354 2355 3 2236 2238 3044 3 2236 2238 3044 3 2236 2238 3044 3 2236 2238 3044 3 2236 2238 3044 3 2236 2238 3044 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 11 2237 2238 2239 2240 2397 2398 2440 2441 2986 2987 2988 4 2237 2239 2986 2988 4 2237 2239 2986 2988 4 2237 2239 2986 2988 4 2237 2239 2986 2988 4 2237 2239 2986 2988 4 2237 2239 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 8 2237 2239 2613 2614 2656 2657 2986 2988 3 2237 2613 2614 3 2237 2613 2614 3 2237 2613 2614 3 2237 2613 2614 3 2237 2613 2614 3 2237 2613 2614 4 2237 2238 2397 2398 4 2237 2238 2397 2398 4 2237 2238 2397 2398 4 2237 2238 2397 2398 4 2237 2238 2397 2398 4 2237 2238 2397 2398 3 2238 2240 2987 3 2238 2240 2987 3 2238 2240 2987 3 2238 2240 2987 3 2238 2240 2987 3 2238 2240 2987 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 11 2239 2240 2241 2242 2440 2441 2483 2484 2937 2938 2939 4 2239 2241 2937 2939 4 2239 2241 2937 2939 4 2239 2241 2937 2939 4 2239 2241 2937 2939 4 2239 2241 2937 2939 4 2239 2241 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 8 2239 2241 2656 2657 2699 2700 2937 2939 3 2239 2656 2657 3 2239 2656 2657 3 2239 2656 2657 3 2239 2656 2657 3 2239 2656 2657 3 2239 2656 2657 4 2239 2240 2440 2441 4 2239 2240 2440 2441 4 2239 2240 2440 2441 4 2239 2240 2440 2441 4 2239 2240 2440 2441 4 2239 2240 2440 2441 3 2240 2242 2938 3 2240 2242 2938 3 2240 2242 2938 3 2240 2242 2938 3 2240 2242 2938 3 2240 2242 2938 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 12 2241 2242 2243 2244 2483 2484 2526 2527 2874 2875 2876 2877 4 2241 2243 2874 2876 4 2241 2243 2874 2876 4 2241 2243 2874 2876 4 2241 2243 2874 2876 4 2241 2243 2874 2876 4 2241 2243 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 8 2241 2243 2699 2700 2742 2743 2874 2876 3 2241 2699 2700 3 2241 2699 2700 3 2241 2699 2700 3 2241 2699 2700 3 2241 2699 2700 3 2241 2699 2700 4 2241 2242 2483 2484 4 2241 2242 2483 2484 4 2241 2242 2483 2484 4 2241 2242 2483 2484 4 2241 2242 2483 2484 4 2241 2242 2483 2484 4 2242 2244 2875 2877 4 2242 2244 2875 2877 4 2242 2244 2875 2877 4 2242 2244 2875 2877 4 2242 2244 2875 2877 4 2242 2244 2875 2877 8 2243 2244 2526 2527 2742 2743 2804 2805 8 2243 2244 2526 2527 2742 2743 2804 2805 8 2243 2244 2526 2527 2742 2743 2804 2805 8 2243 2244 2526 2527 2742 2743 2804 2805 8 2243 2244 2526 2527 2742 2743 2804 2805 8 2243 2244 2526 2527 2742 2743 2804 2805 3 2243 2742 2743 3 2243 2742 2743 3 2243 2742 2743 3 2243 2742 2743 3 2243 2742 2743 3 2243 2742 2743 4 2243 2244 2526 2527 4 2243 2244 2526 2527 4 2243 2244 2526 2527 4 2243 2244 2526 2527 4 2243 2244 2526 2527 4 2243 2244 2526 2527 3 2244 2804 2805 3 2244 2804 2805 3 2244 2804 2805 3 2244 2804 2805 3 2244 2804 2805 3 2244 2804 2805 8 2245 2246 2355 2356 2398 2399 3045 3046 8 2245 2246 2355 2356 2398 2399 3045 3046 8 2245 2246 2355 2356 2398 2399 3045 3046 8 2245 2246 2355 2356 2398 2399 3045 3046 8 2245 2246 2355 2356 2398 2399 3045 3046 8 2245 2246 2355 2356 2398 2399 3045 3046 4 2245 2246 3045 3046 4 2245 2246 3045 3046 4 2245 2246 3045 3046 4 2245 2246 3045 3046 4 2245 2246 3045 3046 4 2245 2246 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 8 2245 2246 2571 2572 2614 2615 3045 3046 3 2245 2571 2572 3 2245 2571 2572 3 2245 2571 2572 3 2245 2571 2572 3 2245 2571 2572 3 2245 2571 2572 5 2245 2571 2572 3103 3104 5 2245 2571 2572 3103 3104 5 2245 2571 2572 3103 3104 5 2245 2571 2572 3103 3104 5 2245 2571 2572 3103 3104 5 2245 2571 2572 3103 3104 3 2245 3103 3104 3 2245 3103 3104 3 2245 3103 3104 3 2245 3103 3104 3 2245 3103 3104 3 2245 3103 3104 3 2245 2355 2356 3 2245 2355 2356 3 2245 2355 2356 3 2245 2355 2356 3 2245 2355 2356 3 2245 2355 2356 8 2246 2247 2398 2399 2441 2442 2988 2989 8 2246 2247 2398 2399 2441 2442 2988 2989 8 2246 2247 2398 2399 2441 2442 2988 2989 8 2246 2247 2398 2399 2441 2442 2988 2989 8 2246 2247 2398 2399 2441 2442 2988 2989 8 2246 2247 2398 2399 2441 2442 2988 2989 4 2246 2247 2988 2989 4 2246 2247 2988 2989 4 2246 2247 2988 2989 4 2246 2247 2988 2989 4 2246 2247 2988 2989 4 2246 2247 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 8 2246 2247 2614 2615 2657 2658 2988 2989 3 2246 2614 2615 3 2246 2614 2615 3 2246 2614 2615 3 2246 2614 2615 3 2246 2614 2615 3 2246 2614 2615 3 2246 2398 2399 3 2246 2398 2399 3 2246 2398 2399 3 2246 2398 2399 3 2246 2398 2399 3 2246 2398 2399 8 2247 2248 2441 2442 2484 2485 2939 2940 8 2247 2248 2441 2442 2484 2485 2939 2940 8 2247 2248 2441 2442 2484 2485 2939 2940 8 2247 2248 2441 2442 2484 2485 2939 2940 8 2247 2248 2441 2442 2484 2485 2939 2940 8 2247 2248 2441 2442 2484 2485 2939 2940 4 2247 2248 2939 2940 4 2247 2248 2939 2940 4 2247 2248 2939 2940 4 2247 2248 2939 2940 4 2247 2248 2939 2940 4 2247 2248 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 8 2247 2248 2657 2658 2700 2701 2939 2940 3 2247 2657 2658 3 2247 2657 2658 3 2247 2657 2658 3 2247 2657 2658 3 2247 2657 2658 3 2247 2657 2658 3 2247 2441 2442 3 2247 2441 2442 3 2247 2441 2442 3 2247 2441 2442 3 2247 2441 2442 3 2247 2441 2442 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 11 2248 2249 2250 2484 2485 2527 2528 2876 2877 2878 2879 4 2248 2249 2876 2878 4 2248 2249 2876 2878 4 2248 2249 2876 2878 4 2248 2249 2876 2878 4 2248 2249 2876 2878 4 2248 2249 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 8 2248 2249 2700 2701 2743 2744 2876 2878 3 2248 2700 2701 3 2248 2700 2701 3 2248 2700 2701 3 2248 2700 2701 3 2248 2700 2701 3 2248 2700 2701 3 2248 2484 2485 3 2248 2484 2485 3 2248 2484 2485 3 2248 2484 2485 3 2248 2484 2485 3 2248 2484 2485 8 2249 2250 2527 2528 2743 2744 2805 2806 8 2249 2250 2527 2528 2743 2744 2805 2806 8 2249 2250 2527 2528 2743 2744 2805 2806 8 2249 2250 2527 2528 2743 2744 2805 2806 8 2249 2250 2527 2528 2743 2744 2805 2806 8 2249 2250 2527 2528 2743 2744 2805 2806 3 2249 2743 2744 3 2249 2743 2744 3 2249 2743 2744 3 2249 2743 2744 3 2249 2743 2744 3 2249 2743 2744 4 2249 2250 2527 2528 4 2249 2250 2527 2528 4 2249 2250 2527 2528 4 2249 2250 2527 2528 4 2249 2250 2527 2528 4 2249 2250 2527 2528 3 2250 2805 2806 3 2250 2805 2806 3 2250 2805 2806 3 2250 2805 2806 3 2250 2805 2806 3 2250 2805 2806 3 2250 2877 2879 3 2250 2877 2879 3 2250 2877 2879 3 2250 2877 2879 3 2250 2877 2879 3 2250 2877 2879 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 10 2251 2252 2253 2356 2357 2399 2400 3046 3047 3048 4 2251 2253 3046 3047 4 2251 2253 3046 3047 4 2251 2253 3046 3047 4 2251 2253 3046 3047 4 2251 2253 3046 3047 4 2251 2253 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 8 2251 2253 2572 2573 2615 2616 3046 3047 3 2251 2572 2573 3 2251 2572 2573 3 2251 2572 2573 3 2251 2572 2573 3 2251 2572 2573 3 2251 2572 2573 5 2251 2572 2573 3104 3105 5 2251 2572 2573 3104 3105 5 2251 2572 2573 3104 3105 5 2251 2572 2573 3104 3105 5 2251 2572 2573 3104 3105 5 2251 2572 2573 3104 3105 3 2251 3104 3105 3 2251 3104 3105 3 2251 3104 3105 3 2251 3104 3105 3 2251 3104 3105 3 2251 3104 3105 4 2251 2252 2356 2357 4 2251 2252 2356 2357 4 2251 2252 2356 2357 4 2251 2252 2356 2357 4 2251 2252 2356 2357 4 2251 2252 2356 2357 2 2252 3048 2 2252 3048 2 2252 3048 2 2252 3048 2 2252 3048 2 2252 3048 8 2253 2254 2399 2400 2442 2443 2989 2990 8 2253 2254 2399 2400 2442 2443 2989 2990 8 2253 2254 2399 2400 2442 2443 2989 2990 8 2253 2254 2399 2400 2442 2443 2989 2990 8 2253 2254 2399 2400 2442 2443 2989 2990 8 2253 2254 2399 2400 2442 2443 2989 2990 4 2253 2254 2989 2990 4 2253 2254 2989 2990 4 2253 2254 2989 2990 4 2253 2254 2989 2990 4 2253 2254 2989 2990 4 2253 2254 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 8 2253 2254 2615 2616 2658 2659 2989 2990 3 2253 2615 2616 3 2253 2615 2616 3 2253 2615 2616 3 2253 2615 2616 3 2253 2615 2616 3 2253 2615 2616 3 2253 2399 2400 3 2253 2399 2400 3 2253 2399 2400 3 2253 2399 2400 3 2253 2399 2400 3 2253 2399 2400 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 10 2254 2255 2256 2442 2443 2485 2486 2940 2941 2942 4 2254 2255 2940 2941 4 2254 2255 2940 2941 4 2254 2255 2940 2941 4 2254 2255 2940 2941 4 2254 2255 2940 2941 4 2254 2255 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 8 2254 2255 2658 2659 2701 2702 2940 2941 3 2254 2658 2659 3 2254 2658 2659 3 2254 2658 2659 3 2254 2658 2659 3 2254 2658 2659 3 2254 2658 2659 3 2254 2442 2443 3 2254 2442 2443 3 2254 2442 2443 3 2254 2442 2443 3 2254 2442 2443 3 2254 2442 2443 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 12 2255 2256 2257 2258 2485 2486 2528 2529 2878 2879 2880 2881 4 2255 2257 2878 2880 4 2255 2257 2878 2880 4 2255 2257 2878 2880 4 2255 2257 2878 2880 4 2255 2257 2878 2880 4 2255 2257 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 8 2255 2257 2701 2702 2744 2745 2878 2880 3 2255 2701 2702 3 2255 2701 2702 3 2255 2701 2702 3 2255 2701 2702 3 2255 2701 2702 3 2255 2701 2702 4 2255 2256 2485 2486 4 2255 2256 2485 2486 4 2255 2256 2485 2486 4 2255 2256 2485 2486 4 2255 2256 2485 2486 4 2255 2256 2485 2486 4 2256 2258 2879 2881 4 2256 2258 2879 2881 4 2256 2258 2879 2881 4 2256 2258 2879 2881 4 2256 2258 2879 2881 4 2256 2258 2879 2881 2 2256 2942 2 2256 2942 2 2256 2942 2 2256 2942 2 2256 2942 2 2256 2942 8 2257 2258 2528 2529 2744 2745 2806 2807 8 2257 2258 2528 2529 2744 2745 2806 2807 8 2257 2258 2528 2529 2744 2745 2806 2807 8 2257 2258 2528 2529 2744 2745 2806 2807 8 2257 2258 2528 2529 2744 2745 2806 2807 8 2257 2258 2528 2529 2744 2745 2806 2807 3 2257 2744 2745 3 2257 2744 2745 3 2257 2744 2745 3 2257 2744 2745 3 2257 2744 2745 3 2257 2744 2745 4 2257 2258 2528 2529 4 2257 2258 2528 2529 4 2257 2258 2528 2529 4 2257 2258 2528 2529 4 2257 2258 2528 2529 4 2257 2258 2528 2529 3 2258 2806 2807 3 2258 2806 2807 3 2258 2806 2807 3 2258 2806 2807 3 2258 2806 2807 3 2258 2806 2807 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 10 2259 2260 2261 2357 2358 2400 2401 3047 3048 3049 4 2259 2261 3047 3049 4 2259 2261 3047 3049 4 2259 2261 3047 3049 4 2259 2261 3047 3049 4 2259 2261 3047 3049 4 2259 2261 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 8 2259 2261 2573 2574 2616 2617 3047 3049 3 2259 2573 2574 3 2259 2573 2574 3 2259 2573 2574 3 2259 2573 2574 3 2259 2573 2574 3 2259 2573 2574 5 2259 2573 2574 3105 3107 5 2259 2573 2574 3105 3107 5 2259 2573 2574 3105 3107 5 2259 2573 2574 3105 3107 5 2259 2573 2574 3105 3107 5 2259 2573 2574 3105 3107 3 2259 3105 3107 3 2259 3105 3107 3 2259 3105 3107 3 2259 3105 3107 3 2259 3105 3107 3 2259 3105 3107 4 2259 2260 2357 2358 4 2259 2260 2357 2358 4 2259 2260 2357 2358 4 2259 2260 2357 2358 4 2259 2260 2357 2358 4 2259 2260 2357 2358 2 2260 3048 2 2260 3048 2 2260 3048 2 2260 3048 2 2260 3048 2 2260 3048 8 2261 2262 2400 2401 2443 2444 2990 2991 8 2261 2262 2400 2401 2443 2444 2990 2991 8 2261 2262 2400 2401 2443 2444 2990 2991 8 2261 2262 2400 2401 2443 2444 2990 2991 8 2261 2262 2400 2401 2443 2444 2990 2991 8 2261 2262 2400 2401 2443 2444 2990 2991 4 2261 2262 2990 2991 4 2261 2262 2990 2991 4 2261 2262 2990 2991 4 2261 2262 2990 2991 4 2261 2262 2990 2991 4 2261 2262 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 8 2261 2262 2616 2617 2659 2660 2990 2991 3 2261 2616 2617 3 2261 2616 2617 3 2261 2616 2617 3 2261 2616 2617 3 2261 2616 2617 3 2261 2616 2617 3 2261 2400 2401 3 2261 2400 2401 3 2261 2400 2401 3 2261 2400 2401 3 2261 2400 2401 3 2261 2400 2401 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 10 2262 2263 2264 2443 2444 2486 2487 2941 2942 2943 4 2262 2263 2941 2943 4 2262 2263 2941 2943 4 2262 2263 2941 2943 4 2262 2263 2941 2943 4 2262 2263 2941 2943 4 2262 2263 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 8 2262 2263 2659 2660 2702 2703 2941 2943 3 2262 2659 2660 3 2262 2659 2660 3 2262 2659 2660 3 2262 2659 2660 3 2262 2659 2660 3 2262 2659 2660 3 2262 2443 2444 3 2262 2443 2444 3 2262 2443 2444 3 2262 2443 2444 3 2262 2443 2444 3 2262 2443 2444 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 12 2263 2264 2265 2266 2486 2487 2529 2530 2880 2881 2882 2883 4 2263 2265 2880 2882 4 2263 2265 2880 2882 4 2263 2265 2880 2882 4 2263 2265 2880 2882 4 2263 2265 2880 2882 4 2263 2265 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 8 2263 2265 2702 2703 2745 2746 2880 2882 3 2263 2702 2703 3 2263 2702 2703 3 2263 2702 2703 3 2263 2702 2703 3 2263 2702 2703 3 2263 2702 2703 4 2263 2264 2486 2487 4 2263 2264 2486 2487 4 2263 2264 2486 2487 4 2263 2264 2486 2487 4 2263 2264 2486 2487 4 2263 2264 2486 2487 4 2264 2266 2881 2883 4 2264 2266 2881 2883 4 2264 2266 2881 2883 4 2264 2266 2881 2883 4 2264 2266 2881 2883 4 2264 2266 2881 2883 2 2264 2942 2 2264 2942 2 2264 2942 2 2264 2942 2 2264 2942 2 2264 2942 8 2265 2266 2529 2530 2745 2746 2807 2808 8 2265 2266 2529 2530 2745 2746 2807 2808 8 2265 2266 2529 2530 2745 2746 2807 2808 8 2265 2266 2529 2530 2745 2746 2807 2808 8 2265 2266 2529 2530 2745 2746 2807 2808 8 2265 2266 2529 2530 2745 2746 2807 2808 3 2265 2745 2746 3 2265 2745 2746 3 2265 2745 2746 3 2265 2745 2746 3 2265 2745 2746 3 2265 2745 2746 4 2265 2266 2529 2530 4 2265 2266 2529 2530 4 2265 2266 2529 2530 4 2265 2266 2529 2530 4 2265 2266 2529 2530 4 2265 2266 2529 2530 3 2266 2807 2808 3 2266 2807 2808 3 2266 2807 2808 3 2266 2807 2808 3 2266 2807 2808 3 2266 2807 2808 8 2267 2268 2358 2359 2401 2402 3049 3050 8 2267 2268 2358 2359 2401 2402 3049 3050 8 2267 2268 2358 2359 2401 2402 3049 3050 8 2267 2268 2358 2359 2401 2402 3049 3050 8 2267 2268 2358 2359 2401 2402 3049 3050 8 2267 2268 2358 2359 2401 2402 3049 3050 4 2267 2268 3049 3050 4 2267 2268 3049 3050 4 2267 2268 3049 3050 4 2267 2268 3049 3050 4 2267 2268 3049 3050 4 2267 2268 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 8 2267 2268 2574 2575 2617 2618 3049 3050 3 2267 2574 2575 3 2267 2574 2575 3 2267 2574 2575 3 2267 2574 2575 3 2267 2574 2575 3 2267 2574 2575 5 2267 2574 2575 3107 3108 5 2267 2574 2575 3107 3108 5 2267 2574 2575 3107 3108 5 2267 2574 2575 3107 3108 5 2267 2574 2575 3107 3108 5 2267 2574 2575 3107 3108 3 2267 3107 3108 3 2267 3107 3108 3 2267 3107 3108 3 2267 3107 3108 3 2267 3107 3108 3 2267 3107 3108 3 2267 2358 2359 3 2267 2358 2359 3 2267 2358 2359 3 2267 2358 2359 3 2267 2358 2359 3 2267 2358 2359 8 2268 2269 2401 2402 2444 2445 2991 2992 8 2268 2269 2401 2402 2444 2445 2991 2992 8 2268 2269 2401 2402 2444 2445 2991 2992 8 2268 2269 2401 2402 2444 2445 2991 2992 8 2268 2269 2401 2402 2444 2445 2991 2992 8 2268 2269 2401 2402 2444 2445 2991 2992 4 2268 2269 2991 2992 4 2268 2269 2991 2992 4 2268 2269 2991 2992 4 2268 2269 2991 2992 4 2268 2269 2991 2992 4 2268 2269 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 8 2268 2269 2617 2618 2660 2661 2991 2992 3 2268 2617 2618 3 2268 2617 2618 3 2268 2617 2618 3 2268 2617 2618 3 2268 2617 2618 3 2268 2617 2618 3 2268 2401 2402 3 2268 2401 2402 3 2268 2401 2402 3 2268 2401 2402 3 2268 2401 2402 3 2268 2401 2402 8 2269 2270 2444 2445 2487 2488 2943 2944 8 2269 2270 2444 2445 2487 2488 2943 2944 8 2269 2270 2444 2445 2487 2488 2943 2944 8 2269 2270 2444 2445 2487 2488 2943 2944 8 2269 2270 2444 2445 2487 2488 2943 2944 8 2269 2270 2444 2445 2487 2488 2943 2944 4 2269 2270 2943 2944 4 2269 2270 2943 2944 4 2269 2270 2943 2944 4 2269 2270 2943 2944 4 2269 2270 2943 2944 4 2269 2270 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 8 2269 2270 2660 2661 2703 2704 2943 2944 3 2269 2660 2661 3 2269 2660 2661 3 2269 2660 2661 3 2269 2660 2661 3 2269 2660 2661 3 2269 2660 2661 3 2269 2444 2445 3 2269 2444 2445 3 2269 2444 2445 3 2269 2444 2445 3 2269 2444 2445 3 2269 2444 2445 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 11 2270 2271 2272 2487 2488 2530 2531 2882 2883 2884 2885 4 2270 2271 2882 2884 4 2270 2271 2882 2884 4 2270 2271 2882 2884 4 2270 2271 2882 2884 4 2270 2271 2882 2884 4 2270 2271 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 8 2270 2271 2703 2704 2746 2747 2882 2884 3 2270 2703 2704 3 2270 2703 2704 3 2270 2703 2704 3 2270 2703 2704 3 2270 2703 2704 3 2270 2703 2704 3 2270 2487 2488 3 2270 2487 2488 3 2270 2487 2488 3 2270 2487 2488 3 2270 2487 2488 3 2270 2487 2488 8 2271 2272 2530 2531 2746 2747 2808 2809 8 2271 2272 2530 2531 2746 2747 2808 2809 8 2271 2272 2530 2531 2746 2747 2808 2809 8 2271 2272 2530 2531 2746 2747 2808 2809 8 2271 2272 2530 2531 2746 2747 2808 2809 8 2271 2272 2530 2531 2746 2747 2808 2809 3 2271 2746 2747 3 2271 2746 2747 3 2271 2746 2747 3 2271 2746 2747 3 2271 2746 2747 3 2271 2746 2747 4 2271 2272 2530 2531 4 2271 2272 2530 2531 4 2271 2272 2530 2531 4 2271 2272 2530 2531 4 2271 2272 2530 2531 4 2271 2272 2530 2531 3 2272 2808 2809 3 2272 2808 2809 3 2272 2808 2809 3 2272 2808 2809 3 2272 2808 2809 3 2272 2808 2809 3 2272 2883 2885 3 2272 2883 2885 3 2272 2883 2885 3 2272 2883 2885 3 2272 2883 2885 3 2272 2883 2885 4 2273 2275 3050 3051 4 2273 2275 3050 3051 4 2273 2275 3050 3051 4 2273 2275 3050 3051 4 2273 2275 3050 3051 4 2273 2275 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 8 2273 2275 2575 2576 2618 2619 3050 3051 3 2273 2575 2576 3 2273 2575 2576 3 2273 2575 2576 3 2273 2575 2576 3 2273 2575 2576 3 2273 2575 2576 5 2273 2575 2576 3108 3109 5 2273 2575 2576 3108 3109 5 2273 2575 2576 3108 3109 5 2273 2575 2576 3108 3109 5 2273 2575 2576 3108 3109 5 2273 2575 2576 3108 3109 3 2273 3108 3109 3 2273 3108 3109 3 2273 3108 3109 3 2273 3108 3109 3 2273 3108 3109 3 2273 3108 3109 4 2273 2274 2359 2360 4 2273 2274 2359 2360 4 2273 2274 2359 2360 4 2273 2274 2359 2360 4 2273 2274 2359 2360 4 2273 2274 2359 2360 4 2275 2276 2992 2993 4 2275 2276 2992 2993 4 2275 2276 2992 2993 4 2275 2276 2992 2993 4 2275 2276 2992 2993 4 2275 2276 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 8 2275 2276 2618 2619 2661 2662 2992 2993 3 2275 2618 2619 3 2275 2618 2619 3 2275 2618 2619 3 2275 2618 2619 3 2275 2618 2619 3 2275 2618 2619 3 2275 2402 2403 3 2275 2402 2403 3 2275 2402 2403 3 2275 2402 2403 3 2275 2402 2403 3 2275 2402 2403 4 2276 2277 2944 2945 4 2276 2277 2944 2945 4 2276 2277 2944 2945 4 2276 2277 2944 2945 4 2276 2277 2944 2945 4 2276 2277 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 8 2276 2277 2661 2662 2704 2705 2944 2945 3 2276 2661 2662 3 2276 2661 2662 3 2276 2661 2662 3 2276 2661 2662 3 2276 2661 2662 3 2276 2661 2662 3 2276 2445 2446 3 2276 2445 2446 3 2276 2445 2446 3 2276 2445 2446 3 2276 2445 2446 3 2276 2445 2446 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 12 2277 2278 2279 2280 2488 2489 2531 2532 2884 2885 2886 2887 4 2277 2279 2884 2886 4 2277 2279 2884 2886 4 2277 2279 2884 2886 4 2277 2279 2884 2886 4 2277 2279 2884 2886 4 2277 2279 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 8 2277 2279 2704 2705 2747 2748 2884 2886 3 2277 2704 2705 3 2277 2704 2705 3 2277 2704 2705 3 2277 2704 2705 3 2277 2704 2705 3 2277 2704 2705 4 2277 2278 2488 2489 4 2277 2278 2488 2489 4 2277 2278 2488 2489 4 2277 2278 2488 2489 4 2277 2278 2488 2489 4 2277 2278 2488 2489 4 2278 2280 2885 2887 4 2278 2280 2885 2887 4 2278 2280 2885 2887 4 2278 2280 2885 2887 4 2278 2280 2885 2887 4 2278 2280 2885 2887 8 2279 2280 2531 2532 2747 2748 2809 2810 8 2279 2280 2531 2532 2747 2748 2809 2810 8 2279 2280 2531 2532 2747 2748 2809 2810 8 2279 2280 2531 2532 2747 2748 2809 2810 8 2279 2280 2531 2532 2747 2748 2809 2810 8 2279 2280 2531 2532 2747 2748 2809 2810 3 2279 2747 2748 3 2279 2747 2748 3 2279 2747 2748 3 2279 2747 2748 3 2279 2747 2748 3 2279 2747 2748 4 2279 2280 2531 2532 4 2279 2280 2531 2532 4 2279 2280 2531 2532 4 2279 2280 2531 2532 4 2279 2280 2531 2532 4 2279 2280 2531 2532 3 2280 2809 2810 3 2280 2809 2810 3 2280 2809 2810 3 2280 2809 2810 3 2280 2809 2810 3 2280 2809 2810 4 2281 2282 3051 3053 4 2281 2282 3051 3053 4 2281 2282 3051 3053 4 2281 2282 3051 3053 4 2281 2282 3051 3053 4 2281 2282 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 8 2281 2282 2576 2577 2619 2620 3051 3053 3 2281 2576 2577 3 2281 2576 2577 3 2281 2576 2577 3 2281 2576 2577 3 2281 2576 2577 3 2281 2576 2577 3 2281 2360 2361 3 2281 2360 2361 3 2281 2360 2361 3 2281 2360 2361 3 2281 2360 2361 3 2281 2360 2361 4 2282 2283 2993 2995 4 2282 2283 2993 2995 4 2282 2283 2993 2995 4 2282 2283 2993 2995 4 2282 2283 2993 2995 4 2282 2283 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 8 2282 2283 2619 2620 2662 2663 2993 2995 3 2282 2619 2620 3 2282 2619 2620 3 2282 2619 2620 3 2282 2619 2620 3 2282 2619 2620 3 2282 2619 2620 3 2282 2403 2404 3 2282 2403 2404 3 2282 2403 2404 3 2282 2403 2404 3 2282 2403 2404 3 2282 2403 2404 4 2283 2284 2945 2947 4 2283 2284 2945 2947 4 2283 2284 2945 2947 4 2283 2284 2945 2947 4 2283 2284 2945 2947 4 2283 2284 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 8 2283 2284 2662 2663 2705 2706 2945 2947 3 2283 2662 2663 3 2283 2662 2663 3 2283 2662 2663 3 2283 2662 2663 3 2283 2662 2663 3 2283 2662 2663 3 2283 2446 2447 3 2283 2446 2447 3 2283 2446 2447 3 2283 2446 2447 3 2283 2446 2447 3 2283 2446 2447 4 2284 2285 2886 2888 4 2284 2285 2886 2888 4 2284 2285 2886 2888 4 2284 2285 2886 2888 4 2284 2285 2886 2888 4 2284 2285 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 8 2284 2285 2705 2706 2748 2749 2886 2888 3 2284 2705 2706 3 2284 2705 2706 3 2284 2705 2706 3 2284 2705 2706 3 2284 2705 2706 3 2284 2705 2706 3 2284 2489 2490 3 2284 2489 2490 3 2284 2489 2490 3 2284 2489 2490 3 2284 2489 2490 3 2284 2489 2490 8 2285 2286 2532 2533 2748 2749 2810 2811 8 2285 2286 2532 2533 2748 2749 2810 2811 8 2285 2286 2532 2533 2748 2749 2810 2811 8 2285 2286 2532 2533 2748 2749 2810 2811 8 2285 2286 2532 2533 2748 2749 2810 2811 8 2285 2286 2532 2533 2748 2749 2810 2811 3 2285 2748 2749 3 2285 2748 2749 3 2285 2748 2749 3 2285 2748 2749 3 2285 2748 2749 3 2285 2748 2749 4 2285 2286 2532 2533 4 2285 2286 2532 2533 4 2285 2286 2532 2533 4 2285 2286 2532 2533 4 2285 2286 2532 2533 4 2285 2286 2532 2533 3 2286 2810 2811 3 2286 2810 2811 3 2286 2810 2811 3 2286 2810 2811 3 2286 2810 2811 3 2286 2810 2811 3 2286 2887 2889 3 2286 2887 2889 3 2286 2887 2889 3 2286 2887 2889 3 2286 2887 2889 3 2286 2887 2889 4 2287 2288 3053 3055 4 2287 2288 3053 3055 4 2287 2288 3053 3055 4 2287 2288 3053 3055 4 2287 2288 3053 3055 4 2287 2288 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 8 2287 2288 2577 2578 2620 2621 3053 3055 3 2287 2577 2578 3 2287 2577 2578 3 2287 2577 2578 3 2287 2577 2578 3 2287 2577 2578 3 2287 2577 2578 3 2287 2361 2362 3 2287 2361 2362 3 2287 2361 2362 3 2287 2361 2362 3 2287 2361 2362 3 2287 2361 2362 4 2288 2289 2995 2997 4 2288 2289 2995 2997 4 2288 2289 2995 2997 4 2288 2289 2995 2997 4 2288 2289 2995 2997 4 2288 2289 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 8 2288 2289 2620 2621 2663 2664 2995 2997 3 2288 2620 2621 3 2288 2620 2621 3 2288 2620 2621 3 2288 2620 2621 3 2288 2620 2621 3 2288 2620 2621 3 2288 2404 2405 3 2288 2404 2405 3 2288 2404 2405 3 2288 2404 2405 3 2288 2404 2405 3 2288 2404 2405 4 2289 2290 2947 2949 4 2289 2290 2947 2949 4 2289 2290 2947 2949 4 2289 2290 2947 2949 4 2289 2290 2947 2949 4 2289 2290 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 8 2289 2290 2663 2664 2706 2707 2947 2949 3 2289 2663 2664 3 2289 2663 2664 3 2289 2663 2664 3 2289 2663 2664 3 2289 2663 2664 3 2289 2663 2664 3 2289 2447 2448 3 2289 2447 2448 3 2289 2447 2448 3 2289 2447 2448 3 2289 2447 2448 3 2289 2447 2448 4 2290 2291 2888 2890 4 2290 2291 2888 2890 4 2290 2291 2888 2890 4 2290 2291 2888 2890 4 2290 2291 2888 2890 4 2290 2291 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 8 2290 2291 2706 2707 2749 2750 2888 2890 3 2290 2706 2707 3 2290 2706 2707 3 2290 2706 2707 3 2290 2706 2707 3 2290 2706 2707 3 2290 2706 2707 3 2290 2490 2491 3 2290 2490 2491 3 2290 2490 2491 3 2290 2490 2491 3 2290 2490 2491 3 2290 2490 2491 8 2291 2292 2533 2534 2749 2750 2811 2812 8 2291 2292 2533 2534 2749 2750 2811 2812 8 2291 2292 2533 2534 2749 2750 2811 2812 8 2291 2292 2533 2534 2749 2750 2811 2812 8 2291 2292 2533 2534 2749 2750 2811 2812 8 2291 2292 2533 2534 2749 2750 2811 2812 3 2291 2749 2750 3 2291 2749 2750 3 2291 2749 2750 3 2291 2749 2750 3 2291 2749 2750 3 2291 2749 2750 4 2291 2292 2533 2534 4 2291 2292 2533 2534 4 2291 2292 2533 2534 4 2291 2292 2533 2534 4 2291 2292 2533 2534 4 2291 2292 2533 2534 3 2292 2811 2812 3 2292 2811 2812 3 2292 2811 2812 3 2292 2811 2812 3 2292 2811 2812 3 2292 2811 2812 3 2292 2889 2891 3 2292 2889 2891 3 2292 2889 2891 3 2292 2889 2891 3 2292 2889 2891 3 2292 2889 2891 4 2293 2294 3055 3056 4 2293 2294 3055 3056 4 2293 2294 3055 3056 4 2293 2294 3055 3056 4 2293 2294 3055 3056 4 2293 2294 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 8 2293 2294 2578 2579 2621 2622 3055 3056 3 2293 2578 2579 3 2293 2578 2579 3 2293 2578 2579 3 2293 2578 2579 3 2293 2578 2579 3 2293 2578 2579 3 2293 2362 2363 3 2293 2362 2363 3 2293 2362 2363 3 2293 2362 2363 3 2293 2362 2363 3 2293 2362 2363 4 2294 2295 2997 2998 4 2294 2295 2997 2998 4 2294 2295 2997 2998 4 2294 2295 2997 2998 4 2294 2295 2997 2998 4 2294 2295 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 8 2294 2295 2621 2622 2664 2665 2997 2998 3 2294 2621 2622 3 2294 2621 2622 3 2294 2621 2622 3 2294 2621 2622 3 2294 2621 2622 3 2294 2621 2622 3 2294 2405 2406 3 2294 2405 2406 3 2294 2405 2406 3 2294 2405 2406 3 2294 2405 2406 3 2294 2405 2406 4 2295 2296 2949 2950 4 2295 2296 2949 2950 4 2295 2296 2949 2950 4 2295 2296 2949 2950 4 2295 2296 2949 2950 4 2295 2296 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 8 2295 2296 2664 2665 2707 2708 2949 2950 3 2295 2664 2665 3 2295 2664 2665 3 2295 2664 2665 3 2295 2664 2665 3 2295 2664 2665 3 2295 2664 2665 3 2295 2448 2449 3 2295 2448 2449 3 2295 2448 2449 3 2295 2448 2449 3 2295 2448 2449 3 2295 2448 2449 4 2296 2297 2890 2892 4 2296 2297 2890 2892 4 2296 2297 2890 2892 4 2296 2297 2890 2892 4 2296 2297 2890 2892 4 2296 2297 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 8 2296 2297 2707 2708 2750 2751 2890 2892 3 2296 2707 2708 3 2296 2707 2708 3 2296 2707 2708 3 2296 2707 2708 3 2296 2707 2708 3 2296 2707 2708 3 2296 2491 2492 3 2296 2491 2492 3 2296 2491 2492 3 2296 2491 2492 3 2296 2491 2492 3 2296 2491 2492 8 2297 2298 2534 2535 2750 2751 2812 2813 8 2297 2298 2534 2535 2750 2751 2812 2813 8 2297 2298 2534 2535 2750 2751 2812 2813 8 2297 2298 2534 2535 2750 2751 2812 2813 8 2297 2298 2534 2535 2750 2751 2812 2813 8 2297 2298 2534 2535 2750 2751 2812 2813 3 2297 2750 2751 3 2297 2750 2751 3 2297 2750 2751 3 2297 2750 2751 3 2297 2750 2751 3 2297 2750 2751 4 2297 2298 2534 2535 4 2297 2298 2534 2535 4 2297 2298 2534 2535 4 2297 2298 2534 2535 4 2297 2298 2534 2535 4 2297 2298 2534 2535 3 2298 2812 2813 3 2298 2812 2813 3 2298 2812 2813 3 2298 2812 2813 3 2298 2812 2813 3 2298 2812 2813 3 2298 2891 2893 3 2298 2891 2893 3 2298 2891 2893 3 2298 2891 2893 3 2298 2891 2893 3 2298 2891 2893 4 2299 2300 3056 3058 4 2299 2300 3056 3058 4 2299 2300 3056 3058 4 2299 2300 3056 3058 4 2299 2300 3056 3058 4 2299 2300 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 8 2299 2300 2579 2580 2622 2623 3056 3058 3 2299 2579 2580 3 2299 2579 2580 3 2299 2579 2580 3 2299 2579 2580 3 2299 2579 2580 3 2299 2579 2580 5 2299 2579 2580 3114 3116 5 2299 2579 2580 3114 3116 5 2299 2579 2580 3114 3116 5 2299 2579 2580 3114 3116 5 2299 2579 2580 3114 3116 5 2299 2579 2580 3114 3116 3 2299 3114 3116 3 2299 3114 3116 3 2299 3114 3116 3 2299 3114 3116 3 2299 3114 3116 3 2299 3114 3116 3 2299 2363 2364 3 2299 2363 2364 3 2299 2363 2364 3 2299 2363 2364 3 2299 2363 2364 3 2299 2363 2364 4 2300 2301 2998 3000 4 2300 2301 2998 3000 4 2300 2301 2998 3000 4 2300 2301 2998 3000 4 2300 2301 2998 3000 4 2300 2301 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 8 2300 2301 2622 2623 2665 2666 2998 3000 3 2300 2622 2623 3 2300 2622 2623 3 2300 2622 2623 3 2300 2622 2623 3 2300 2622 2623 3 2300 2622 2623 3 2300 2406 2407 3 2300 2406 2407 3 2300 2406 2407 3 2300 2406 2407 3 2300 2406 2407 3 2300 2406 2407 4 2301 2302 2950 2952 4 2301 2302 2950 2952 4 2301 2302 2950 2952 4 2301 2302 2950 2952 4 2301 2302 2950 2952 4 2301 2302 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 8 2301 2302 2665 2666 2708 2709 2950 2952 3 2301 2665 2666 3 2301 2665 2666 3 2301 2665 2666 3 2301 2665 2666 3 2301 2665 2666 3 2301 2665 2666 3 2301 2449 2450 3 2301 2449 2450 3 2301 2449 2450 3 2301 2449 2450 3 2301 2449 2450 3 2301 2449 2450 4 2302 2303 2892 2894 4 2302 2303 2892 2894 4 2302 2303 2892 2894 4 2302 2303 2892 2894 4 2302 2303 2892 2894 4 2302 2303 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 8 2302 2303 2708 2709 2751 2752 2892 2894 3 2302 2708 2709 3 2302 2708 2709 3 2302 2708 2709 3 2302 2708 2709 3 2302 2708 2709 3 2302 2708 2709 3 2302 2492 2493 3 2302 2492 2493 3 2302 2492 2493 3 2302 2492 2493 3 2302 2492 2493 3 2302 2492 2493 8 2303 2304 2535 2536 2751 2752 2813 2814 8 2303 2304 2535 2536 2751 2752 2813 2814 8 2303 2304 2535 2536 2751 2752 2813 2814 8 2303 2304 2535 2536 2751 2752 2813 2814 8 2303 2304 2535 2536 2751 2752 2813 2814 8 2303 2304 2535 2536 2751 2752 2813 2814 3 2303 2751 2752 3 2303 2751 2752 3 2303 2751 2752 3 2303 2751 2752 3 2303 2751 2752 3 2303 2751 2752 4 2303 2304 2535 2536 4 2303 2304 2535 2536 4 2303 2304 2535 2536 4 2303 2304 2535 2536 4 2303 2304 2535 2536 4 2303 2304 2535 2536 3 2304 2813 2814 3 2304 2813 2814 3 2304 2813 2814 3 2304 2813 2814 3 2304 2813 2814 3 2304 2813 2814 3 2304 2893 2895 3 2304 2893 2895 3 2304 2893 2895 3 2304 2893 2895 3 2304 2893 2895 3 2304 2893 2895 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 10 2305 2306 2364 2365 2407 2408 3057 3058 3059 3060 4 2305 2306 3058 3059 4 2305 2306 3058 3059 4 2305 2306 3058 3059 4 2305 2306 3058 3059 4 2305 2306 3058 3059 4 2305 2306 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 8 2305 2306 2580 2581 2623 2624 3058 3059 3 2305 2580 2581 3 2305 2580 2581 3 2305 2580 2581 3 2305 2580 2581 3 2305 2580 2581 3 2305 2580 2581 5 2305 2580 2581 3116 3117 5 2305 2580 2581 3116 3117 5 2305 2580 2581 3116 3117 5 2305 2580 2581 3116 3117 5 2305 2580 2581 3116 3117 5 2305 2580 2581 3116 3117 3 2305 3116 3117 3 2305 3116 3117 3 2305 3116 3117 3 2305 3116 3117 3 2305 3116 3117 3 2305 3116 3117 3 2305 2364 2365 3 2305 2364 2365 3 2305 2364 2365 3 2305 2364 2365 3 2305 2364 2365 3 2305 2364 2365 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 10 2306 2307 2407 2408 2450 2451 2999 3000 3001 3002 4 2306 2307 3000 3001 4 2306 2307 3000 3001 4 2306 2307 3000 3001 4 2306 2307 3000 3001 4 2306 2307 3000 3001 4 2306 2307 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 8 2306 2307 2623 2624 2666 2667 3000 3001 3 2306 2623 2624 3 2306 2623 2624 3 2306 2623 2624 3 2306 2623 2624 3 2306 2623 2624 3 2306 2623 2624 3 2306 2407 2408 3 2306 2407 2408 3 2306 2407 2408 3 2306 2407 2408 3 2306 2407 2408 3 2306 2407 2408 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 10 2307 2308 2450 2451 2493 2494 2951 2952 2953 2954 4 2307 2308 2952 2953 4 2307 2308 2952 2953 4 2307 2308 2952 2953 4 2307 2308 2952 2953 4 2307 2308 2952 2953 4 2307 2308 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 8 2307 2308 2666 2667 2709 2710 2952 2953 3 2307 2666 2667 3 2307 2666 2667 3 2307 2666 2667 3 2307 2666 2667 3 2307 2666 2667 3 2307 2666 2667 3 2307 2450 2451 3 2307 2450 2451 3 2307 2450 2451 3 2307 2450 2451 3 2307 2450 2451 3 2307 2450 2451 4 2308 2309 2894 2896 4 2308 2309 2894 2896 4 2308 2309 2894 2896 4 2308 2309 2894 2896 4 2308 2309 2894 2896 4 2308 2309 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 8 2308 2309 2709 2710 2752 2753 2894 2896 3 2308 2709 2710 3 2308 2709 2710 3 2308 2709 2710 3 2308 2709 2710 3 2308 2709 2710 3 2308 2709 2710 3 2308 2493 2494 3 2308 2493 2494 3 2308 2493 2494 3 2308 2493 2494 3 2308 2493 2494 3 2308 2493 2494 8 2309 2310 2536 2537 2752 2753 2814 2815 8 2309 2310 2536 2537 2752 2753 2814 2815 8 2309 2310 2536 2537 2752 2753 2814 2815 8 2309 2310 2536 2537 2752 2753 2814 2815 8 2309 2310 2536 2537 2752 2753 2814 2815 8 2309 2310 2536 2537 2752 2753 2814 2815 3 2309 2752 2753 3 2309 2752 2753 3 2309 2752 2753 3 2309 2752 2753 3 2309 2752 2753 3 2309 2752 2753 4 2309 2310 2536 2537 4 2309 2310 2536 2537 4 2309 2310 2536 2537 4 2309 2310 2536 2537 4 2309 2310 2536 2537 4 2309 2310 2536 2537 3 2310 2814 2815 3 2310 2814 2815 3 2310 2814 2815 3 2310 2814 2815 3 2310 2814 2815 3 2310 2814 2815 3 2310 2895 2897 3 2310 2895 2897 3 2310 2895 2897 3 2310 2895 2897 3 2310 2895 2897 3 2310 2895 2897 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 10 2311 2312 2365 2366 2408 2409 3054 3057 3059 3061 4 2311 2312 3059 3061 4 2311 2312 3059 3061 4 2311 2312 3059 3061 4 2311 2312 3059 3061 4 2311 2312 3059 3061 4 2311 2312 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 8 2311 2312 2581 2582 2624 2625 3059 3061 3 2311 2581 2582 3 2311 2581 2582 3 2311 2581 2582 3 2311 2581 2582 3 2311 2581 2582 3 2311 2581 2582 5 2311 2581 2582 3117 3119 5 2311 2581 2582 3117 3119 5 2311 2581 2582 3117 3119 5 2311 2581 2582 3117 3119 5 2311 2581 2582 3117 3119 5 2311 2581 2582 3117 3119 3 2311 3117 3119 3 2311 3117 3119 3 2311 3117 3119 3 2311 3117 3119 3 2311 3117 3119 3 2311 3117 3119 3 2311 2365 2366 3 2311 2365 2366 3 2311 2365 2366 3 2311 2365 2366 3 2311 2365 2366 3 2311 2365 2366 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 10 2312 2313 2408 2409 2451 2452 2996 2999 3001 3003 4 2312 2313 3001 3003 4 2312 2313 3001 3003 4 2312 2313 3001 3003 4 2312 2313 3001 3003 4 2312 2313 3001 3003 4 2312 2313 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 8 2312 2313 2624 2625 2667 2668 3001 3003 3 2312 2624 2625 3 2312 2624 2625 3 2312 2624 2625 3 2312 2624 2625 3 2312 2624 2625 3 2312 2624 2625 3 2312 2408 2409 3 2312 2408 2409 3 2312 2408 2409 3 2312 2408 2409 3 2312 2408 2409 3 2312 2408 2409 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 10 2313 2314 2451 2452 2494 2495 2948 2951 2953 2955 4 2313 2314 2953 2955 4 2313 2314 2953 2955 4 2313 2314 2953 2955 4 2313 2314 2953 2955 4 2313 2314 2953 2955 4 2313 2314 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 8 2313 2314 2667 2668 2710 2711 2953 2955 3 2313 2667 2668 3 2313 2667 2668 3 2313 2667 2668 3 2313 2667 2668 3 2313 2667 2668 3 2313 2667 2668 3 2313 2451 2452 3 2313 2451 2452 3 2313 2451 2452 3 2313 2451 2452 3 2313 2451 2452 3 2313 2451 2452 4 2314 2315 2896 2898 4 2314 2315 2896 2898 4 2314 2315 2896 2898 4 2314 2315 2896 2898 4 2314 2315 2896 2898 4 2314 2315 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 8 2314 2315 2710 2711 2753 2754 2896 2898 3 2314 2710 2711 3 2314 2710 2711 3 2314 2710 2711 3 2314 2710 2711 3 2314 2710 2711 3 2314 2710 2711 3 2314 2494 2495 3 2314 2494 2495 3 2314 2494 2495 3 2314 2494 2495 3 2314 2494 2495 3 2314 2494 2495 8 2315 2316 2537 2538 2753 2754 2815 2816 8 2315 2316 2537 2538 2753 2754 2815 2816 8 2315 2316 2537 2538 2753 2754 2815 2816 8 2315 2316 2537 2538 2753 2754 2815 2816 8 2315 2316 2537 2538 2753 2754 2815 2816 8 2315 2316 2537 2538 2753 2754 2815 2816 3 2315 2753 2754 3 2315 2753 2754 3 2315 2753 2754 3 2315 2753 2754 3 2315 2753 2754 3 2315 2753 2754 4 2315 2316 2537 2538 4 2315 2316 2537 2538 4 2315 2316 2537 2538 4 2315 2316 2537 2538 4 2315 2316 2537 2538 4 2315 2316 2537 2538 3 2316 2815 2816 3 2316 2815 2816 3 2316 2815 2816 3 2316 2815 2816 3 2316 2815 2816 3 2316 2815 2816 3 2316 2897 2899 3 2316 2897 2899 3 2316 2897 2899 3 2316 2897 2899 3 2316 2897 2899 3 2316 2897 2899 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 11 2317 2318 2319 2366 2367 2409 2410 3052 3054 3061 3062 4 2317 2319 3061 3062 4 2317 2319 3061 3062 4 2317 2319 3061 3062 4 2317 2319 3061 3062 4 2317 2319 3061 3062 4 2317 2319 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 8 2317 2319 2582 2583 2625 2626 3061 3062 3 2317 2582 2583 3 2317 2582 2583 3 2317 2582 2583 3 2317 2582 2583 3 2317 2582 2583 3 2317 2582 2583 5 2317 2582 2583 3119 3120 5 2317 2582 2583 3119 3120 5 2317 2582 2583 3119 3120 5 2317 2582 2583 3119 3120 5 2317 2582 2583 3119 3120 5 2317 2582 2583 3119 3120 3 2317 3119 3120 3 2317 3119 3120 3 2317 3119 3120 3 2317 3119 3120 3 2317 3119 3120 3 2317 3119 3120 4 2317 2318 2366 2367 4 2317 2318 2366 2367 4 2317 2318 2366 2367 4 2317 2318 2366 2367 4 2317 2318 2366 2367 4 2317 2318 2366 2367 2 2318 3052 2 2318 3052 2 2318 3052 2 2318 3052 2 2318 3052 2 2318 3052 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 10 2319 2320 2409 2410 2452 2453 2994 2996 3003 3004 4 2319 2320 3003 3004 4 2319 2320 3003 3004 4 2319 2320 3003 3004 4 2319 2320 3003 3004 4 2319 2320 3003 3004 4 2319 2320 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 8 2319 2320 2625 2626 2668 2669 3003 3004 3 2319 2625 2626 3 2319 2625 2626 3 2319 2625 2626 3 2319 2625 2626 3 2319 2625 2626 3 2319 2625 2626 3 2319 2409 2410 3 2319 2409 2410 3 2319 2409 2410 3 2319 2409 2410 3 2319 2409 2410 3 2319 2409 2410 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 11 2320 2321 2322 2452 2453 2495 2496 2759 2946 2948 2955 4 2320 2321 2759 2955 4 2320 2321 2759 2955 4 2320 2321 2759 2955 4 2320 2321 2759 2955 4 2320 2321 2759 2955 4 2320 2321 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 8 2320 2321 2668 2669 2711 2712 2759 2955 3 2320 2668 2669 3 2320 2668 2669 3 2320 2668 2669 3 2320 2668 2669 3 2320 2668 2669 3 2320 2668 2669 3 2320 2452 2453 3 2320 2452 2453 3 2320 2452 2453 3 2320 2452 2453 3 2320 2452 2453 3 2320 2452 2453 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 12 2321 2322 2323 2324 2495 2496 2538 2539 2760 2761 2898 2899 4 2321 2323 2760 2898 4 2321 2323 2760 2898 4 2321 2323 2760 2898 4 2321 2323 2760 2898 4 2321 2323 2760 2898 4 2321 2323 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 8 2321 2323 2711 2712 2754 2755 2760 2898 3 2321 2711 2712 3 2321 2711 2712 3 2321 2711 2712 3 2321 2711 2712 3 2321 2711 2712 3 2321 2711 2712 4 2321 2322 2495 2496 4 2321 2322 2495 2496 4 2321 2322 2495 2496 4 2321 2322 2495 2496 4 2321 2322 2495 2496 4 2321 2322 2495 2496 4 2322 2324 2761 2899 4 2322 2324 2761 2899 4 2322 2324 2761 2899 4 2322 2324 2761 2899 4 2322 2324 2761 2899 4 2322 2324 2761 2899 2 2322 2946 2 2322 2946 2 2322 2946 2 2322 2946 2 2322 2946 2 2322 2946 8 2323 2324 2538 2539 2754 2755 2816 2817 8 2323 2324 2538 2539 2754 2755 2816 2817 8 2323 2324 2538 2539 2754 2755 2816 2817 8 2323 2324 2538 2539 2754 2755 2816 2817 8 2323 2324 2538 2539 2754 2755 2816 2817 8 2323 2324 2538 2539 2754 2755 2816 2817 3 2323 2754 2755 3 2323 2754 2755 3 2323 2754 2755 3 2323 2754 2755 3 2323 2754 2755 3 2323 2754 2755 4 2323 2324 2538 2539 4 2323 2324 2538 2539 4 2323 2324 2538 2539 4 2323 2324 2538 2539 4 2323 2324 2538 2539 4 2323 2324 2538 2539 3 2324 2816 2817 3 2324 2816 2817 3 2324 2816 2817 3 2324 2816 2817 3 2324 2816 2817 3 2324 2816 2817 3 2325 2368 3005 3 2325 2368 3005 3 2325 2368 3005 3 2325 2368 3005 3 2325 2368 3005 3 2325 2368 3005 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 11 2325 2368 3005 3310 3311 3312 3313 3325 3329 3407 3411 4 2325 3310 3311 3325 4 2325 3310 3311 3325 4 2325 3310 3311 3325 4 2325 3310 3311 3325 4 2325 3310 3311 3325 4 2325 3310 3311 3325 3 2326 2369 3006 3 2326 2369 3006 3 2326 2369 3006 3 2326 2369 3006 3 2326 2369 3006 3 2326 2369 3006 4 2327 2370 3007 3008 4 2327 2370 3007 3008 4 2327 2370 3007 3008 4 2327 2370 3007 3008 4 2327 2370 3007 3008 4 2327 2370 3007 3008 3 2328 2371 3009 3 2328 2371 3009 3 2328 2371 3009 3 2328 2371 3009 3 2328 2371 3009 3 2328 2371 3009 3 2329 2372 3010 3 2329 2372 3010 3 2329 2372 3010 3 2329 2372 3010 3 2329 2372 3010 3 2329 2372 3010 4 2330 2373 3011 3012 4 2330 2373 3011 3012 4 2330 2373 3011 3012 4 2330 2373 3011 3012 4 2330 2373 3011 3012 4 2330 2373 3011 3012 3 2331 2374 3013 3 2331 2374 3013 3 2331 2374 3013 3 2331 2374 3013 3 2331 2374 3013 3 2331 2374 3013 3 2332 2375 3014 3 2332 2375 3014 3 2332 2375 3014 3 2332 2375 3014 3 2332 2375 3014 3 2332 2375 3014 4 2333 2376 3015 3016 4 2333 2376 3015 3016 4 2333 2376 3015 3016 4 2333 2376 3015 3016 4 2333 2376 3015 3016 4 2333 2376 3015 3016 3 2334 2377 3017 3 2334 2377 3017 3 2334 2377 3017 3 2334 2377 3017 3 2334 2377 3017 3 2334 2377 3017 3 2335 2378 3018 3 2335 2378 3018 3 2335 2378 3018 3 2335 2378 3018 3 2335 2378 3018 3 2335 2378 3018 4 2336 2379 3019 3020 4 2336 2379 3019 3020 4 2336 2379 3019 3020 4 2336 2379 3019 3020 4 2336 2379 3019 3020 4 2336 2379 3019 3020 3 2337 2380 3021 3 2337 2380 3021 3 2337 2380 3021 3 2337 2380 3021 3 2337 2380 3021 3 2337 2380 3021 3 2338 2381 3022 3 2338 2381 3022 3 2338 2381 3022 3 2338 2381 3022 3 2338 2381 3022 3 2338 2381 3022 4 2339 2382 3023 3024 4 2339 2382 3023 3024 4 2339 2382 3023 3024 4 2339 2382 3023 3024 4 2339 2382 3023 3024 4 2339 2382 3023 3024 3 2340 2383 3025 3 2340 2383 3025 3 2340 2383 3025 3 2340 2383 3025 3 2340 2383 3025 3 2340 2383 3025 3 2341 2384 3026 3 2341 2384 3026 3 2341 2384 3026 3 2341 2384 3026 3 2341 2384 3026 3 2341 2384 3026 4 2342 2385 3027 3028 4 2342 2385 3027 3028 4 2342 2385 3027 3028 4 2342 2385 3027 3028 4 2342 2385 3027 3028 4 2342 2385 3027 3028 3 2343 2386 3029 3 2343 2386 3029 3 2343 2386 3029 3 2343 2386 3029 3 2343 2386 3029 3 2343 2386 3029 3 2344 2387 3030 3 2344 2387 3030 3 2344 2387 3030 3 2344 2387 3030 3 2344 2387 3030 3 2344 2387 3030 4 2345 2388 3031 3032 4 2345 2388 3031 3032 4 2345 2388 3031 3032 4 2345 2388 3031 3032 4 2345 2388 3031 3032 4 2345 2388 3031 3032 3 2346 2389 3033 3 2346 2389 3033 3 2346 2389 3033 3 2346 2389 3033 3 2346 2389 3033 3 2346 2389 3033 3 2347 2390 3034 3 2347 2390 3034 3 2347 2390 3034 3 2347 2390 3034 3 2347 2390 3034 3 2347 2390 3034 4 2348 2391 3035 3036 4 2348 2391 3035 3036 4 2348 2391 3035 3036 4 2348 2391 3035 3036 4 2348 2391 3035 3036 4 2348 2391 3035 3036 3 2349 2392 3037 3 2349 2392 3037 3 2349 2392 3037 3 2349 2392 3037 3 2349 2392 3037 3 2349 2392 3037 3 2350 2393 3038 3 2350 2393 3038 3 2350 2393 3038 3 2350 2393 3038 3 2350 2393 3038 3 2350 2393 3038 4 2351 2394 3039 3040 4 2351 2394 3039 3040 4 2351 2394 3039 3040 4 2351 2394 3039 3040 4 2351 2394 3039 3040 4 2351 2394 3039 3040 3 2352 2395 3041 3 2352 2395 3041 3 2352 2395 3041 3 2352 2395 3041 3 2352 2395 3041 3 2352 2395 3041 3 2353 2396 3042 3 2353 2396 3042 3 2353 2396 3042 3 2353 2396 3042 3 2353 2396 3042 3 2353 2396 3042 4 2354 2397 3043 3044 4 2354 2397 3043 3044 4 2354 2397 3043 3044 4 2354 2397 3043 3044 4 2354 2397 3043 3044 4 2354 2397 3043 3044 3 2355 2398 3045 3 2355 2398 3045 3 2355 2398 3045 3 2355 2398 3045 3 2355 2398 3045 3 2355 2398 3045 3 2356 2399 3046 3 2356 2399 3046 3 2356 2399 3046 3 2356 2399 3046 3 2356 2399 3046 3 2356 2399 3046 4 2357 2400 3047 3048 4 2357 2400 3047 3048 4 2357 2400 3047 3048 4 2357 2400 3047 3048 4 2357 2400 3047 3048 4 2357 2400 3047 3048 3 2358 2401 3049 3 2358 2401 3049 3 2358 2401 3049 3 2358 2401 3049 3 2358 2401 3049 3 2358 2401 3049 3 2359 2402 3050 3 2359 2402 3050 3 2359 2402 3050 3 2359 2402 3050 3 2359 2402 3050 3 2359 2402 3050 4 2364 2407 3058 3060 4 2364 2407 3058 3060 4 2364 2407 3058 3060 4 2364 2407 3058 3060 4 2364 2407 3058 3060 4 2364 2407 3058 3060 4 2365 2408 3057 3059 4 2365 2408 3057 3059 4 2365 2408 3057 3059 4 2365 2408 3057 3059 4 2365 2408 3057 3059 4 2365 2408 3057 3059 4 2366 2409 3054 3061 4 2366 2409 3054 3061 4 2366 2409 3054 3061 4 2366 2409 3054 3061 4 2366 2409 3054 3061 4 2366 2409 3054 3061 8 2367 2410 3062 3130 3131 3164 3170 3234 8 2367 2410 3062 3130 3131 3164 3170 3234 8 2367 2410 3062 3130 3131 3164 3170 3234 8 2367 2410 3062 3130 3131 3164 3170 3234 8 2367 2410 3062 3130 3131 3164 3170 3234 8 2367 2410 3062 3130 3131 3164 3170 3234 3 2367 2410 3062 3 2367 2410 3062 3 2367 2410 3062 3 2367 2410 3062 3 2367 2410 3062 3 2367 2410 3062 3 2367 3130 3164 3 2367 3130 3164 3 2367 3130 3164 3 2367 3130 3164 3 2367 3130 3164 3 2367 3130 3164 3 2368 2411 2956 3 2368 2411 2956 3 2368 2411 2956 3 2368 2411 2956 3 2368 2411 2956 3 2368 2411 2956 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 11 2368 2411 2956 3312 3313 3314 3315 3329 3333 3396 3400 4 2368 3312 3313 3329 4 2368 3312 3313 3329 4 2368 3312 3313 3329 4 2368 3312 3313 3329 4 2368 3312 3313 3329 4 2368 3312 3313 3329 3 2369 2412 2957 3 2369 2412 2957 3 2369 2412 2957 3 2369 2412 2957 3 2369 2412 2957 3 2369 2412 2957 4 2370 2413 2958 2959 4 2370 2413 2958 2959 4 2370 2413 2958 2959 4 2370 2413 2958 2959 4 2370 2413 2958 2959 4 2370 2413 2958 2959 3 2371 2414 2960 3 2371 2414 2960 3 2371 2414 2960 3 2371 2414 2960 3 2371 2414 2960 3 2371 2414 2960 3 2372 2415 2961 3 2372 2415 2961 3 2372 2415 2961 3 2372 2415 2961 3 2372 2415 2961 3 2372 2415 2961 3 2373 2416 2962 3 2373 2416 2962 3 2373 2416 2962 3 2373 2416 2962 3 2373 2416 2962 3 2373 2416 2962 3 2374 2417 2963 3 2374 2417 2963 3 2374 2417 2963 3 2374 2417 2963 3 2374 2417 2963 3 2374 2417 2963 3 2375 2418 2964 3 2375 2418 2964 3 2375 2418 2964 3 2375 2418 2964 3 2375 2418 2964 3 2375 2418 2964 3 2376 2419 2965 3 2376 2419 2965 3 2376 2419 2965 3 2376 2419 2965 3 2376 2419 2965 3 2376 2419 2965 3 2377 2420 2966 3 2377 2420 2966 3 2377 2420 2966 3 2377 2420 2966 3 2377 2420 2966 3 2377 2420 2966 3 2378 2421 2967 3 2378 2421 2967 3 2378 2421 2967 3 2378 2421 2967 3 2378 2421 2967 3 2378 2421 2967 3 2379 2422 2968 3 2379 2422 2968 3 2379 2422 2968 3 2379 2422 2968 3 2379 2422 2968 3 2379 2422 2968 3 2380 2423 2969 3 2380 2423 2969 3 2380 2423 2969 3 2380 2423 2969 3 2380 2423 2969 3 2380 2423 2969 3 2381 2424 2970 3 2381 2424 2970 3 2381 2424 2970 3 2381 2424 2970 3 2381 2424 2970 3 2381 2424 2970 3 2382 2425 2971 3 2382 2425 2971 3 2382 2425 2971 3 2382 2425 2971 3 2382 2425 2971 3 2382 2425 2971 3 2383 2426 2972 3 2383 2426 2972 3 2383 2426 2972 3 2383 2426 2972 3 2383 2426 2972 3 2383 2426 2972 3 2384 2427 2973 3 2384 2427 2973 3 2384 2427 2973 3 2384 2427 2973 3 2384 2427 2973 3 2384 2427 2973 3 2385 2428 2974 3 2385 2428 2974 3 2385 2428 2974 3 2385 2428 2974 3 2385 2428 2974 3 2385 2428 2974 3 2386 2429 2975 3 2386 2429 2975 3 2386 2429 2975 3 2386 2429 2975 3 2386 2429 2975 3 2386 2429 2975 3 2387 2430 2976 3 2387 2430 2976 3 2387 2430 2976 3 2387 2430 2976 3 2387 2430 2976 3 2387 2430 2976 3 2388 2431 2977 3 2388 2431 2977 3 2388 2431 2977 3 2388 2431 2977 3 2388 2431 2977 3 2388 2431 2977 3 2389 2432 2978 3 2389 2432 2978 3 2389 2432 2978 3 2389 2432 2978 3 2389 2432 2978 3 2389 2432 2978 3 2390 2433 2979 3 2390 2433 2979 3 2390 2433 2979 3 2390 2433 2979 3 2390 2433 2979 3 2390 2433 2979 3 2391 2434 2980 3 2391 2434 2980 3 2391 2434 2980 3 2391 2434 2980 3 2391 2434 2980 3 2391 2434 2980 3 2392 2435 2981 3 2392 2435 2981 3 2392 2435 2981 3 2392 2435 2981 3 2392 2435 2981 3 2392 2435 2981 3 2393 2436 2982 3 2393 2436 2982 3 2393 2436 2982 3 2393 2436 2982 3 2393 2436 2982 3 2393 2436 2982 3 2394 2437 2983 3 2394 2437 2983 3 2394 2437 2983 3 2394 2437 2983 3 2394 2437 2983 3 2394 2437 2983 3 2395 2438 2984 3 2395 2438 2984 3 2395 2438 2984 3 2395 2438 2984 3 2395 2438 2984 3 2395 2438 2984 3 2396 2439 2985 3 2396 2439 2985 3 2396 2439 2985 3 2396 2439 2985 3 2396 2439 2985 3 2396 2439 2985 4 2397 2440 2986 2987 4 2397 2440 2986 2987 4 2397 2440 2986 2987 4 2397 2440 2986 2987 4 2397 2440 2986 2987 4 2397 2440 2986 2987 3 2398 2441 2988 3 2398 2441 2988 3 2398 2441 2988 3 2398 2441 2988 3 2398 2441 2988 3 2398 2441 2988 3 2399 2442 2989 3 2399 2442 2989 3 2399 2442 2989 3 2399 2442 2989 3 2399 2442 2989 3 2399 2442 2989 3 2400 2443 2990 3 2400 2443 2990 3 2400 2443 2990 3 2400 2443 2990 3 2400 2443 2990 3 2400 2443 2990 3 2401 2444 2991 3 2401 2444 2991 3 2401 2444 2991 3 2401 2444 2991 3 2401 2444 2991 3 2401 2444 2991 3 2402 2445 2992 3 2402 2445 2992 3 2402 2445 2992 3 2402 2445 2992 3 2402 2445 2992 3 2402 2445 2992 4 2407 2450 3000 3002 4 2407 2450 3000 3002 4 2407 2450 3000 3002 4 2407 2450 3000 3002 4 2407 2450 3000 3002 4 2407 2450 3000 3002 4 2408 2451 2999 3001 4 2408 2451 2999 3001 4 2408 2451 2999 3001 4 2408 2451 2999 3001 4 2408 2451 2999 3001 4 2408 2451 2999 3001 4 2409 2452 2996 3003 4 2409 2452 2996 3003 4 2409 2452 2996 3003 4 2409 2452 2996 3003 4 2409 2452 2996 3003 4 2409 2452 2996 3003 8 2410 2453 3004 3131 3132 3170 3176 3225 8 2410 2453 3004 3131 3132 3170 3176 3225 8 2410 2453 3004 3131 3132 3170 3176 3225 8 2410 2453 3004 3131 3132 3170 3176 3225 8 2410 2453 3004 3131 3132 3170 3176 3225 8 2410 2453 3004 3131 3132 3170 3176 3225 3 2410 2453 3004 3 2410 2453 3004 3 2410 2453 3004 3 2410 2453 3004 3 2410 2453 3004 3 2410 2453 3004 3 2410 3131 3170 3 2410 3131 3170 3 2410 3131 3170 3 2410 3131 3170 3 2410 3131 3170 3 2410 3131 3170 3 2411 2454 2756 3 2411 2454 2756 3 2411 2454 2756 3 2411 2454 2756 3 2411 2454 2756 3 2411 2454 2756 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 12 2411 2454 2627 2670 2756 3314 3315 3316 3333 3358 3364 3391 4 2411 3314 3315 3333 4 2411 3314 3315 3333 4 2411 3314 3315 3333 4 2411 3314 3315 3333 4 2411 3314 3315 3333 4 2411 3314 3315 3333 3 2412 2455 2900 3 2412 2455 2900 3 2412 2455 2900 3 2412 2455 2900 3 2412 2455 2900 3 2412 2455 2900 4 2413 2456 2901 2902 4 2413 2456 2901 2902 4 2413 2456 2901 2902 4 2413 2456 2901 2902 4 2413 2456 2901 2902 4 2413 2456 2901 2902 3 2414 2457 2903 3 2414 2457 2903 3 2414 2457 2903 3 2414 2457 2903 3 2414 2457 2903 3 2414 2457 2903 3 2415 2458 2904 3 2415 2458 2904 3 2415 2458 2904 3 2415 2458 2904 3 2415 2458 2904 3 2415 2458 2904 4 2416 2459 2905 2906 4 2416 2459 2905 2906 4 2416 2459 2905 2906 4 2416 2459 2905 2906 4 2416 2459 2905 2906 4 2416 2459 2905 2906 3 2417 2460 2907 3 2417 2460 2907 3 2417 2460 2907 3 2417 2460 2907 3 2417 2460 2907 3 2417 2460 2907 3 2418 2461 2908 3 2418 2461 2908 3 2418 2461 2908 3 2418 2461 2908 3 2418 2461 2908 3 2418 2461 2908 4 2419 2462 2909 2910 4 2419 2462 2909 2910 4 2419 2462 2909 2910 4 2419 2462 2909 2910 4 2419 2462 2909 2910 4 2419 2462 2909 2910 3 2420 2463 2911 3 2420 2463 2911 3 2420 2463 2911 3 2420 2463 2911 3 2420 2463 2911 3 2420 2463 2911 3 2421 2464 2912 3 2421 2464 2912 3 2421 2464 2912 3 2421 2464 2912 3 2421 2464 2912 3 2421 2464 2912 4 2422 2465 2913 2914 4 2422 2465 2913 2914 4 2422 2465 2913 2914 4 2422 2465 2913 2914 4 2422 2465 2913 2914 4 2422 2465 2913 2914 3 2423 2466 2915 3 2423 2466 2915 3 2423 2466 2915 3 2423 2466 2915 3 2423 2466 2915 3 2423 2466 2915 3 2424 2467 2916 3 2424 2467 2916 3 2424 2467 2916 3 2424 2467 2916 3 2424 2467 2916 3 2424 2467 2916 4 2425 2468 2917 2918 4 2425 2468 2917 2918 4 2425 2468 2917 2918 4 2425 2468 2917 2918 4 2425 2468 2917 2918 4 2425 2468 2917 2918 3 2426 2469 2919 3 2426 2469 2919 3 2426 2469 2919 3 2426 2469 2919 3 2426 2469 2919 3 2426 2469 2919 3 2427 2470 2920 3 2427 2470 2920 3 2427 2470 2920 3 2427 2470 2920 3 2427 2470 2920 3 2427 2470 2920 4 2428 2471 2921 2922 4 2428 2471 2921 2922 4 2428 2471 2921 2922 4 2428 2471 2921 2922 4 2428 2471 2921 2922 4 2428 2471 2921 2922 3 2429 2472 2923 3 2429 2472 2923 3 2429 2472 2923 3 2429 2472 2923 3 2429 2472 2923 3 2429 2472 2923 3 2430 2473 2924 3 2430 2473 2924 3 2430 2473 2924 3 2430 2473 2924 3 2430 2473 2924 3 2430 2473 2924 4 2431 2474 2925 2926 4 2431 2474 2925 2926 4 2431 2474 2925 2926 4 2431 2474 2925 2926 4 2431 2474 2925 2926 4 2431 2474 2925 2926 3 2432 2475 2927 3 2432 2475 2927 3 2432 2475 2927 3 2432 2475 2927 3 2432 2475 2927 3 2432 2475 2927 3 2433 2476 2928 3 2433 2476 2928 3 2433 2476 2928 3 2433 2476 2928 3 2433 2476 2928 3 2433 2476 2928 4 2434 2477 2929 2930 4 2434 2477 2929 2930 4 2434 2477 2929 2930 4 2434 2477 2929 2930 4 2434 2477 2929 2930 4 2434 2477 2929 2930 3 2435 2478 2931 3 2435 2478 2931 3 2435 2478 2931 3 2435 2478 2931 3 2435 2478 2931 3 2435 2478 2931 3 2436 2479 2932 3 2436 2479 2932 3 2436 2479 2932 3 2436 2479 2932 3 2436 2479 2932 3 2436 2479 2932 4 2437 2480 2933 2934 4 2437 2480 2933 2934 4 2437 2480 2933 2934 4 2437 2480 2933 2934 4 2437 2480 2933 2934 4 2437 2480 2933 2934 3 2438 2481 2935 3 2438 2481 2935 3 2438 2481 2935 3 2438 2481 2935 3 2438 2481 2935 3 2438 2481 2935 3 2439 2482 2936 3 2439 2482 2936 3 2439 2482 2936 3 2439 2482 2936 3 2439 2482 2936 3 2439 2482 2936 4 2440 2483 2937 2938 4 2440 2483 2937 2938 4 2440 2483 2937 2938 4 2440 2483 2937 2938 4 2440 2483 2937 2938 4 2440 2483 2937 2938 3 2441 2484 2939 3 2441 2484 2939 3 2441 2484 2939 3 2441 2484 2939 3 2441 2484 2939 3 2441 2484 2939 3 2442 2485 2940 3 2442 2485 2940 3 2442 2485 2940 3 2442 2485 2940 3 2442 2485 2940 3 2442 2485 2940 4 2443 2486 2941 2942 4 2443 2486 2941 2942 4 2443 2486 2941 2942 4 2443 2486 2941 2942 4 2443 2486 2941 2942 4 2443 2486 2941 2942 3 2444 2487 2943 3 2444 2487 2943 3 2444 2487 2943 3 2444 2487 2943 3 2444 2487 2943 3 2444 2487 2943 3 2445 2488 2944 3 2445 2488 2944 3 2445 2488 2944 3 2445 2488 2944 3 2445 2488 2944 3 2445 2488 2944 4 2450 2493 2952 2954 4 2450 2493 2952 2954 4 2450 2493 2952 2954 4 2450 2493 2952 2954 4 2450 2493 2952 2954 4 2450 2493 2952 2954 4 2451 2494 2951 2953 4 2451 2494 2951 2953 4 2451 2494 2951 2953 4 2451 2494 2951 2953 4 2451 2494 2951 2953 4 2451 2494 2951 2953 4 2452 2495 2948 2955 4 2452 2495 2948 2955 4 2452 2495 2948 2955 4 2452 2495 2948 2955 4 2452 2495 2948 2955 4 2452 2495 2948 2955 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 9 2453 2496 2669 2712 2759 3132 3176 3198 3204 3 2453 2496 2759 3 2453 2496 2759 3 2453 2496 2759 3 2453 2496 2759 3 2453 2496 2759 3 2453 2496 2759 3 2453 3132 3176 3 2453 3132 3176 3 2453 3132 3176 3 2453 3132 3176 3 2453 3132 3176 3 2453 3132 3176 4 2454 2497 2757 2758 4 2454 2497 2757 2758 4 2454 2497 2757 2758 4 2454 2497 2757 2758 4 2454 2497 2757 2758 4 2454 2497 2757 2758 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 11 2454 2497 2670 2713 2757 2758 3316 3317 3364 3370 3382 4 2454 2670 3316 3364 4 2454 2670 3316 3364 4 2454 2670 3316 3364 4 2454 2670 3316 3364 4 2454 2670 3316 3364 4 2454 2670 3316 3364 4 2455 2498 2818 2819 4 2455 2498 2818 2819 4 2455 2498 2818 2819 4 2455 2498 2818 2819 4 2455 2498 2818 2819 4 2455 2498 2818 2819 4 2456 2499 2820 2821 4 2456 2499 2820 2821 4 2456 2499 2820 2821 4 2456 2499 2820 2821 4 2456 2499 2820 2821 4 2456 2499 2820 2821 4 2457 2500 2822 2823 4 2457 2500 2822 2823 4 2457 2500 2822 2823 4 2457 2500 2822 2823 4 2457 2500 2822 2823 4 2457 2500 2822 2823 4 2458 2501 2824 2825 4 2458 2501 2824 2825 4 2458 2501 2824 2825 4 2458 2501 2824 2825 4 2458 2501 2824 2825 4 2458 2501 2824 2825 4 2459 2502 2826 2827 4 2459 2502 2826 2827 4 2459 2502 2826 2827 4 2459 2502 2826 2827 4 2459 2502 2826 2827 4 2459 2502 2826 2827 4 2460 2503 2828 2829 4 2460 2503 2828 2829 4 2460 2503 2828 2829 4 2460 2503 2828 2829 4 2460 2503 2828 2829 4 2460 2503 2828 2829 4 2461 2504 2830 2831 4 2461 2504 2830 2831 4 2461 2504 2830 2831 4 2461 2504 2830 2831 4 2461 2504 2830 2831 4 2461 2504 2830 2831 4 2462 2505 2832 2833 4 2462 2505 2832 2833 4 2462 2505 2832 2833 4 2462 2505 2832 2833 4 2462 2505 2832 2833 4 2462 2505 2832 2833 4 2463 2506 2834 2835 4 2463 2506 2834 2835 4 2463 2506 2834 2835 4 2463 2506 2834 2835 4 2463 2506 2834 2835 4 2463 2506 2834 2835 4 2464 2507 2836 2837 4 2464 2507 2836 2837 4 2464 2507 2836 2837 4 2464 2507 2836 2837 4 2464 2507 2836 2837 4 2464 2507 2836 2837 4 2465 2508 2838 2839 4 2465 2508 2838 2839 4 2465 2508 2838 2839 4 2465 2508 2838 2839 4 2465 2508 2838 2839 4 2465 2508 2838 2839 4 2466 2509 2840 2841 4 2466 2509 2840 2841 4 2466 2509 2840 2841 4 2466 2509 2840 2841 4 2466 2509 2840 2841 4 2466 2509 2840 2841 4 2467 2510 2842 2843 4 2467 2510 2842 2843 4 2467 2510 2842 2843 4 2467 2510 2842 2843 4 2467 2510 2842 2843 4 2467 2510 2842 2843 4 2468 2511 2844 2845 4 2468 2511 2844 2845 4 2468 2511 2844 2845 4 2468 2511 2844 2845 4 2468 2511 2844 2845 4 2468 2511 2844 2845 4 2469 2512 2846 2847 4 2469 2512 2846 2847 4 2469 2512 2846 2847 4 2469 2512 2846 2847 4 2469 2512 2846 2847 4 2469 2512 2846 2847 4 2470 2513 2848 2849 4 2470 2513 2848 2849 4 2470 2513 2848 2849 4 2470 2513 2848 2849 4 2470 2513 2848 2849 4 2470 2513 2848 2849 4 2471 2514 2850 2851 4 2471 2514 2850 2851 4 2471 2514 2850 2851 4 2471 2514 2850 2851 4 2471 2514 2850 2851 4 2471 2514 2850 2851 4 2472 2515 2852 2853 4 2472 2515 2852 2853 4 2472 2515 2852 2853 4 2472 2515 2852 2853 4 2472 2515 2852 2853 4 2472 2515 2852 2853 4 2473 2516 2854 2855 4 2473 2516 2854 2855 4 2473 2516 2854 2855 4 2473 2516 2854 2855 4 2473 2516 2854 2855 4 2473 2516 2854 2855 4 2474 2517 2856 2857 4 2474 2517 2856 2857 4 2474 2517 2856 2857 4 2474 2517 2856 2857 4 2474 2517 2856 2857 4 2474 2517 2856 2857 4 2475 2518 2858 2859 4 2475 2518 2858 2859 4 2475 2518 2858 2859 4 2475 2518 2858 2859 4 2475 2518 2858 2859 4 2475 2518 2858 2859 4 2476 2519 2860 2861 4 2476 2519 2860 2861 4 2476 2519 2860 2861 4 2476 2519 2860 2861 4 2476 2519 2860 2861 4 2476 2519 2860 2861 4 2477 2520 2862 2863 4 2477 2520 2862 2863 4 2477 2520 2862 2863 4 2477 2520 2862 2863 4 2477 2520 2862 2863 4 2477 2520 2862 2863 4 2478 2521 2864 2865 4 2478 2521 2864 2865 4 2478 2521 2864 2865 4 2478 2521 2864 2865 4 2478 2521 2864 2865 4 2478 2521 2864 2865 4 2479 2522 2866 2867 4 2479 2522 2866 2867 4 2479 2522 2866 2867 4 2479 2522 2866 2867 4 2479 2522 2866 2867 4 2479 2522 2866 2867 4 2480 2523 2868 2869 4 2480 2523 2868 2869 4 2480 2523 2868 2869 4 2480 2523 2868 2869 4 2480 2523 2868 2869 4 2480 2523 2868 2869 4 2481 2524 2870 2871 4 2481 2524 2870 2871 4 2481 2524 2870 2871 4 2481 2524 2870 2871 4 2481 2524 2870 2871 4 2481 2524 2870 2871 4 2482 2525 2872 2873 4 2482 2525 2872 2873 4 2482 2525 2872 2873 4 2482 2525 2872 2873 4 2482 2525 2872 2873 4 2482 2525 2872 2873 4 2483 2526 2874 2875 4 2483 2526 2874 2875 4 2483 2526 2874 2875 4 2483 2526 2874 2875 4 2483 2526 2874 2875 4 2483 2526 2874 2875 4 2484 2527 2876 2877 4 2484 2527 2876 2877 4 2484 2527 2876 2877 4 2484 2527 2876 2877 4 2484 2527 2876 2877 4 2484 2527 2876 2877 4 2485 2528 2878 2879 4 2485 2528 2878 2879 4 2485 2528 2878 2879 4 2485 2528 2878 2879 4 2485 2528 2878 2879 4 2485 2528 2878 2879 4 2486 2529 2880 2881 4 2486 2529 2880 2881 4 2486 2529 2880 2881 4 2486 2529 2880 2881 4 2486 2529 2880 2881 4 2486 2529 2880 2881 4 2487 2530 2882 2883 4 2487 2530 2882 2883 4 2487 2530 2882 2883 4 2487 2530 2882 2883 4 2487 2530 2882 2883 4 2487 2530 2882 2883 4 2488 2531 2884 2885 4 2488 2531 2884 2885 4 2488 2531 2884 2885 4 2488 2531 2884 2885 4 2488 2531 2884 2885 4 2488 2531 2884 2885 4 2489 2532 2886 2887 4 2489 2532 2886 2887 4 2489 2532 2886 2887 4 2489 2532 2886 2887 4 2489 2532 2886 2887 4 2489 2532 2886 2887 4 2490 2533 2888 2889 4 2490 2533 2888 2889 4 2490 2533 2888 2889 4 2490 2533 2888 2889 4 2490 2533 2888 2889 4 2490 2533 2888 2889 4 2491 2534 2890 2891 4 2491 2534 2890 2891 4 2491 2534 2890 2891 4 2491 2534 2890 2891 4 2491 2534 2890 2891 4 2491 2534 2890 2891 4 2492 2535 2892 2893 4 2492 2535 2892 2893 4 2492 2535 2892 2893 4 2492 2535 2892 2893 4 2492 2535 2892 2893 4 2492 2535 2892 2893 4 2493 2536 2894 2895 4 2493 2536 2894 2895 4 2493 2536 2894 2895 4 2493 2536 2894 2895 4 2493 2536 2894 2895 4 2493 2536 2894 2895 4 2494 2537 2896 2897 4 2494 2537 2896 2897 4 2494 2537 2896 2897 4 2494 2537 2896 2897 4 2494 2537 2896 2897 4 2494 2537 2896 2897 4 2495 2538 2898 2899 4 2495 2538 2898 2899 4 2495 2538 2898 2899 4 2495 2538 2898 2899 4 2495 2538 2898 2899 4 2495 2538 2898 2899 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 10 2496 2539 2712 2755 2760 2761 3133 3204 3208 3218 4 2496 2539 2760 2761 4 2496 2539 2760 2761 4 2496 2539 2760 2761 4 2496 2539 2760 2761 4 2496 2539 2760 2761 4 2496 2539 2760 2761 3 2496 2712 3204 3 2496 2712 3204 3 2496 2712 3204 3 2496 2712 3204 3 2496 2712 3204 3 2496 2712 3204 3 2497 2713 2775 3 2497 2713 2775 3 2497 2713 2775 3 2497 2713 2775 3 2497 2713 2775 3 2497 2713 2775 6 2497 2713 2775 3317 3370 3376 6 2497 2713 2775 3317 3370 3376 6 2497 2713 2775 3317 3370 3376 6 2497 2713 2775 3317 3370 3376 6 2497 2713 2775 3317 3370 3376 6 2497 2713 2775 3317 3370 3376 4 2497 2713 3317 3370 4 2497 2713 3317 3370 4 2497 2713 3317 3370 4 2497 2713 3317 3370 4 2497 2713 3317 3370 4 2497 2713 3317 3370 3 2498 2714 2776 3 2498 2714 2776 3 2498 2714 2776 3 2498 2714 2776 3 2498 2714 2776 3 2498 2714 2776 3 2499 2715 2777 3 2499 2715 2777 3 2499 2715 2777 3 2499 2715 2777 3 2499 2715 2777 3 2499 2715 2777 3 2500 2716 2778 3 2500 2716 2778 3 2500 2716 2778 3 2500 2716 2778 3 2500 2716 2778 3 2500 2716 2778 3 2501 2717 2779 3 2501 2717 2779 3 2501 2717 2779 3 2501 2717 2779 3 2501 2717 2779 3 2501 2717 2779 3 2502 2718 2780 3 2502 2718 2780 3 2502 2718 2780 3 2502 2718 2780 3 2502 2718 2780 3 2502 2718 2780 3 2503 2719 2781 3 2503 2719 2781 3 2503 2719 2781 3 2503 2719 2781 3 2503 2719 2781 3 2503 2719 2781 3 2504 2720 2782 3 2504 2720 2782 3 2504 2720 2782 3 2504 2720 2782 3 2504 2720 2782 3 2504 2720 2782 3 2505 2721 2783 3 2505 2721 2783 3 2505 2721 2783 3 2505 2721 2783 3 2505 2721 2783 3 2505 2721 2783 3 2506 2722 2784 3 2506 2722 2784 3 2506 2722 2784 3 2506 2722 2784 3 2506 2722 2784 3 2506 2722 2784 3 2507 2723 2785 3 2507 2723 2785 3 2507 2723 2785 3 2507 2723 2785 3 2507 2723 2785 3 2507 2723 2785 3 2508 2724 2786 3 2508 2724 2786 3 2508 2724 2786 3 2508 2724 2786 3 2508 2724 2786 3 2508 2724 2786 3 2509 2725 2787 3 2509 2725 2787 3 2509 2725 2787 3 2509 2725 2787 3 2509 2725 2787 3 2509 2725 2787 3 2510 2726 2788 3 2510 2726 2788 3 2510 2726 2788 3 2510 2726 2788 3 2510 2726 2788 3 2510 2726 2788 3 2511 2727 2789 3 2511 2727 2789 3 2511 2727 2789 3 2511 2727 2789 3 2511 2727 2789 3 2511 2727 2789 3 2512 2728 2790 3 2512 2728 2790 3 2512 2728 2790 3 2512 2728 2790 3 2512 2728 2790 3 2512 2728 2790 3 2513 2729 2791 3 2513 2729 2791 3 2513 2729 2791 3 2513 2729 2791 3 2513 2729 2791 3 2513 2729 2791 3 2514 2730 2792 3 2514 2730 2792 3 2514 2730 2792 3 2514 2730 2792 3 2514 2730 2792 3 2514 2730 2792 3 2515 2731 2793 3 2515 2731 2793 3 2515 2731 2793 3 2515 2731 2793 3 2515 2731 2793 3 2515 2731 2793 3 2516 2732 2794 3 2516 2732 2794 3 2516 2732 2794 3 2516 2732 2794 3 2516 2732 2794 3 2516 2732 2794 3 2517 2733 2795 3 2517 2733 2795 3 2517 2733 2795 3 2517 2733 2795 3 2517 2733 2795 3 2517 2733 2795 3 2518 2734 2796 3 2518 2734 2796 3 2518 2734 2796 3 2518 2734 2796 3 2518 2734 2796 3 2518 2734 2796 3 2519 2735 2797 3 2519 2735 2797 3 2519 2735 2797 3 2519 2735 2797 3 2519 2735 2797 3 2519 2735 2797 3 2520 2736 2798 3 2520 2736 2798 3 2520 2736 2798 3 2520 2736 2798 3 2520 2736 2798 3 2520 2736 2798 3 2521 2737 2799 3 2521 2737 2799 3 2521 2737 2799 3 2521 2737 2799 3 2521 2737 2799 3 2521 2737 2799 3 2522 2738 2800 3 2522 2738 2800 3 2522 2738 2800 3 2522 2738 2800 3 2522 2738 2800 3 2522 2738 2800 3 2523 2739 2801 3 2523 2739 2801 3 2523 2739 2801 3 2523 2739 2801 3 2523 2739 2801 3 2523 2739 2801 3 2524 2740 2802 3 2524 2740 2802 3 2524 2740 2802 3 2524 2740 2802 3 2524 2740 2802 3 2524 2740 2802 3 2525 2741 2803 3 2525 2741 2803 3 2525 2741 2803 3 2525 2741 2803 3 2525 2741 2803 3 2525 2741 2803 3 2526 2742 2804 3 2526 2742 2804 3 2526 2742 2804 3 2526 2742 2804 3 2526 2742 2804 3 2526 2742 2804 3 2527 2743 2805 3 2527 2743 2805 3 2527 2743 2805 3 2527 2743 2805 3 2527 2743 2805 3 2527 2743 2805 3 2528 2744 2806 3 2528 2744 2806 3 2528 2744 2806 3 2528 2744 2806 3 2528 2744 2806 3 2528 2744 2806 3 2529 2745 2807 3 2529 2745 2807 3 2529 2745 2807 3 2529 2745 2807 3 2529 2745 2807 3 2529 2745 2807 3 2530 2746 2808 3 2530 2746 2808 3 2530 2746 2808 3 2530 2746 2808 3 2530 2746 2808 3 2530 2746 2808 3 2531 2747 2809 3 2531 2747 2809 3 2531 2747 2809 3 2531 2747 2809 3 2531 2747 2809 3 2531 2747 2809 3 2532 2748 2810 3 2532 2748 2810 3 2532 2748 2810 3 2532 2748 2810 3 2532 2748 2810 3 2532 2748 2810 3 2533 2749 2811 3 2533 2749 2811 3 2533 2749 2811 3 2533 2749 2811 3 2533 2749 2811 3 2533 2749 2811 3 2534 2750 2812 3 2534 2750 2812 3 2534 2750 2812 3 2534 2750 2812 3 2534 2750 2812 3 2534 2750 2812 3 2535 2751 2813 3 2535 2751 2813 3 2535 2751 2813 3 2535 2751 2813 3 2535 2751 2813 3 2535 2751 2813 3 2536 2752 2814 3 2536 2752 2814 3 2536 2752 2814 3 2536 2752 2814 3 2536 2752 2814 3 2536 2752 2814 3 2537 2753 2815 3 2537 2753 2815 3 2537 2753 2815 3 2537 2753 2815 3 2537 2753 2815 3 2537 2753 2815 3 2538 2754 2816 3 2538 2754 2816 3 2538 2754 2816 3 2538 2754 2816 3 2538 2754 2816 3 2538 2754 2816 6 2539 2755 2817 3133 3208 3214 6 2539 2755 2817 3133 3208 3214 6 2539 2755 2817 3133 3208 3214 6 2539 2755 2817 3133 3208 3214 6 2539 2755 2817 3133 3208 3214 6 2539 2755 2817 3133 3208 3214 3 2539 2755 2817 3 2539 2755 2817 3 2539 2755 2817 3 2539 2755 2817 3 2539 2755 2817 3 2539 2755 2817 4 2539 2755 3133 3208 4 2539 2755 3133 3208 4 2539 2755 3133 3208 4 2539 2755 3133 3208 4 2539 2755 3133 3208 4 2539 2755 3133 3208 1 2540 1 2540 1 2540 1 2540 1 2540 1 2540 4 2540 3308 3340 3430 4 2540 3308 3340 3430 4 2540 3308 3340 3430 4 2540 3308 3340 3430 4 2540 3308 3340 3430 4 2540 3308 3340 3430 3 2540 3308 3340 3 2540 3308 3340 3 2540 3308 3340 3 2540 3308 3340 3 2540 3308 3340 3 2540 3308 3340 8 2540 2541 3063 3308 3310 3340 3346 3418 8 2540 2541 3063 3308 3310 3340 3346 3418 8 2540 2541 3063 3308 3310 3340 3346 3418 8 2540 2541 3063 3308 3310 3340 3346 3418 8 2540 2541 3063 3308 3310 3340 3346 3418 8 2540 2541 3063 3308 3310 3340 3346 3418 3 2540 2541 3063 3 2540 2541 3063 3 2540 2541 3063 3 2540 2541 3063 3 2540 2541 3063 3 2540 2541 3063 3 2541 2584 3005 3 2541 2584 3005 3 2541 2584 3005 3 2541 2584 3005 3 2541 2584 3005 3 2541 2584 3005 8 2541 2584 3005 3310 3312 3346 3352 3407 8 2541 2584 3005 3310 3312 3346 3352 3407 8 2541 2584 3005 3310 3312 3346 3352 3407 8 2541 2584 3005 3310 3312 3346 3352 3407 8 2541 2584 3005 3310 3312 3346 3352 3407 8 2541 2584 3005 3310 3312 3346 3352 3407 3 2541 3310 3346 3 2541 3310 3346 3 2541 3310 3346 3 2541 3310 3346 3 2541 3310 3346 3 2541 3310 3346 3 2542 2585 3006 3 2542 2585 3006 3 2542 2585 3006 3 2542 2585 3006 3 2542 2585 3006 3 2542 2585 3006 2 2542 3064 2 2542 3064 2 2542 3064 2 2542 3064 2 2542 3064 2 2542 3064 3 2543 2586 3007 3 2543 2586 3007 3 2543 2586 3007 3 2543 2586 3007 3 2543 2586 3007 3 2543 2586 3007 2 2543 3065 2 2543 3065 2 2543 3065 2 2543 3065 2 2543 3065 2 2543 3065 3 2544 2587 3009 3 2544 2587 3009 3 2544 2587 3009 3 2544 2587 3009 3 2544 2587 3009 3 2544 2587 3009 2 2544 3067 2 2544 3067 2 2544 3067 2 2544 3067 2 2544 3067 2 2544 3067 3 2545 2588 3010 3 2545 2588 3010 3 2545 2588 3010 3 2545 2588 3010 3 2545 2588 3010 3 2545 2588 3010 2 2545 3068 2 2545 3068 2 2545 3068 2 2545 3068 2 2545 3068 2 2545 3068 3 2546 2589 3011 3 2546 2589 3011 3 2546 2589 3011 3 2546 2589 3011 3 2546 2589 3011 3 2546 2589 3011 2 2546 3069 2 2546 3069 2 2546 3069 2 2546 3069 2 2546 3069 2 2546 3069 3 2547 2590 3013 3 2547 2590 3013 3 2547 2590 3013 3 2547 2590 3013 3 2547 2590 3013 3 2547 2590 3013 2 2547 3071 2 2547 3071 2 2547 3071 2 2547 3071 2 2547 3071 2 2547 3071 3 2548 2591 3014 3 2548 2591 3014 3 2548 2591 3014 3 2548 2591 3014 3 2548 2591 3014 3 2548 2591 3014 2 2548 3072 2 2548 3072 2 2548 3072 2 2548 3072 2 2548 3072 2 2548 3072 3 2549 2592 3015 3 2549 2592 3015 3 2549 2592 3015 3 2549 2592 3015 3 2549 2592 3015 3 2549 2592 3015 2 2549 3073 2 2549 3073 2 2549 3073 2 2549 3073 2 2549 3073 2 2549 3073 3 2550 2593 3017 3 2550 2593 3017 3 2550 2593 3017 3 2550 2593 3017 3 2550 2593 3017 3 2550 2593 3017 2 2550 3075 2 2550 3075 2 2550 3075 2 2550 3075 2 2550 3075 2 2550 3075 3 2551 2594 3018 3 2551 2594 3018 3 2551 2594 3018 3 2551 2594 3018 3 2551 2594 3018 3 2551 2594 3018 2 2551 3076 2 2551 3076 2 2551 3076 2 2551 3076 2 2551 3076 2 2551 3076 3 2552 2595 3019 3 2552 2595 3019 3 2552 2595 3019 3 2552 2595 3019 3 2552 2595 3019 3 2552 2595 3019 2 2552 3077 2 2552 3077 2 2552 3077 2 2552 3077 2 2552 3077 2 2552 3077 3 2553 2596 3021 3 2553 2596 3021 3 2553 2596 3021 3 2553 2596 3021 3 2553 2596 3021 3 2553 2596 3021 2 2553 3079 2 2553 3079 2 2553 3079 2 2553 3079 2 2553 3079 2 2553 3079 3 2554 2597 3022 3 2554 2597 3022 3 2554 2597 3022 3 2554 2597 3022 3 2554 2597 3022 3 2554 2597 3022 2 2554 3080 2 2554 3080 2 2554 3080 2 2554 3080 2 2554 3080 2 2554 3080 3 2555 2598 3023 3 2555 2598 3023 3 2555 2598 3023 3 2555 2598 3023 3 2555 2598 3023 3 2555 2598 3023 2 2555 3081 2 2555 3081 2 2555 3081 2 2555 3081 2 2555 3081 2 2555 3081 3 2556 2599 3025 3 2556 2599 3025 3 2556 2599 3025 3 2556 2599 3025 3 2556 2599 3025 3 2556 2599 3025 2 2556 3083 2 2556 3083 2 2556 3083 2 2556 3083 2 2556 3083 2 2556 3083 3 2557 2600 3026 3 2557 2600 3026 3 2557 2600 3026 3 2557 2600 3026 3 2557 2600 3026 3 2557 2600 3026 2 2557 3084 2 2557 3084 2 2557 3084 2 2557 3084 2 2557 3084 2 2557 3084 3 2558 2601 3027 3 2558 2601 3027 3 2558 2601 3027 3 2558 2601 3027 3 2558 2601 3027 3 2558 2601 3027 2 2558 3085 2 2558 3085 2 2558 3085 2 2558 3085 2 2558 3085 2 2558 3085 3 2559 2602 3029 3 2559 2602 3029 3 2559 2602 3029 3 2559 2602 3029 3 2559 2602 3029 3 2559 2602 3029 2 2559 3087 2 2559 3087 2 2559 3087 2 2559 3087 2 2559 3087 2 2559 3087 3 2560 2603 3030 3 2560 2603 3030 3 2560 2603 3030 3 2560 2603 3030 3 2560 2603 3030 3 2560 2603 3030 2 2560 3088 2 2560 3088 2 2560 3088 2 2560 3088 2 2560 3088 2 2560 3088 3 2561 2604 3031 3 2561 2604 3031 3 2561 2604 3031 3 2561 2604 3031 3 2561 2604 3031 3 2561 2604 3031 2 2561 3089 2 2561 3089 2 2561 3089 2 2561 3089 2 2561 3089 2 2561 3089 3 2562 2605 3033 3 2562 2605 3033 3 2562 2605 3033 3 2562 2605 3033 3 2562 2605 3033 3 2562 2605 3033 2 2562 3091 2 2562 3091 2 2562 3091 2 2562 3091 2 2562 3091 2 2562 3091 3 2563 2606 3034 3 2563 2606 3034 3 2563 2606 3034 3 2563 2606 3034 3 2563 2606 3034 3 2563 2606 3034 2 2563 3092 2 2563 3092 2 2563 3092 2 2563 3092 2 2563 3092 2 2563 3092 3 2564 2607 3035 3 2564 2607 3035 3 2564 2607 3035 3 2564 2607 3035 3 2564 2607 3035 3 2564 2607 3035 2 2564 3093 2 2564 3093 2 2564 3093 2 2564 3093 2 2564 3093 2 2564 3093 3 2565 2608 3037 3 2565 2608 3037 3 2565 2608 3037 3 2565 2608 3037 3 2565 2608 3037 3 2565 2608 3037 2 2565 3095 2 2565 3095 2 2565 3095 2 2565 3095 2 2565 3095 2 2565 3095 3 2566 2609 3038 3 2566 2609 3038 3 2566 2609 3038 3 2566 2609 3038 3 2566 2609 3038 3 2566 2609 3038 2 2566 3096 2 2566 3096 2 2566 3096 2 2566 3096 2 2566 3096 2 2566 3096 3 2567 2610 3039 3 2567 2610 3039 3 2567 2610 3039 3 2567 2610 3039 3 2567 2610 3039 3 2567 2610 3039 2 2567 3097 2 2567 3097 2 2567 3097 2 2567 3097 2 2567 3097 2 2567 3097 3 2568 2611 3041 3 2568 2611 3041 3 2568 2611 3041 3 2568 2611 3041 3 2568 2611 3041 3 2568 2611 3041 2 2568 3099 2 2568 3099 2 2568 3099 2 2568 3099 2 2568 3099 2 2568 3099 3 2569 2612 3042 3 2569 2612 3042 3 2569 2612 3042 3 2569 2612 3042 3 2569 2612 3042 3 2569 2612 3042 2 2569 3100 2 2569 3100 2 2569 3100 2 2569 3100 2 2569 3100 2 2569 3100 3 2570 2613 3043 3 2570 2613 3043 3 2570 2613 3043 3 2570 2613 3043 3 2570 2613 3043 3 2570 2613 3043 2 2570 3101 2 2570 3101 2 2570 3101 2 2570 3101 2 2570 3101 2 2570 3101 3 2571 2614 3045 3 2571 2614 3045 3 2571 2614 3045 3 2571 2614 3045 3 2571 2614 3045 3 2571 2614 3045 2 2571 3103 2 2571 3103 2 2571 3103 2 2571 3103 2 2571 3103 2 2571 3103 3 2572 2615 3046 3 2572 2615 3046 3 2572 2615 3046 3 2572 2615 3046 3 2572 2615 3046 3 2572 2615 3046 2 2572 3104 2 2572 3104 2 2572 3104 2 2572 3104 2 2572 3104 2 2572 3104 3 2573 2616 3047 3 2573 2616 3047 3 2573 2616 3047 3 2573 2616 3047 3 2573 2616 3047 3 2573 2616 3047 2 2573 3105 2 2573 3105 2 2573 3105 2 2573 3105 2 2573 3105 2 2573 3105 3 2574 2617 3049 3 2574 2617 3049 3 2574 2617 3049 3 2574 2617 3049 3 2574 2617 3049 3 2574 2617 3049 2 2574 3107 2 2574 3107 2 2574 3107 2 2574 3107 2 2574 3107 2 2574 3107 3 2575 2618 3050 3 2575 2618 3050 3 2575 2618 3050 3 2575 2618 3050 3 2575 2618 3050 3 2575 2618 3050 2 2575 3108 2 2575 3108 2 2575 3108 2 2575 3108 2 2575 3108 2 2575 3108 3 2576 2619 3051 3 2576 2619 3051 3 2576 2619 3051 3 2576 2619 3051 3 2576 2619 3051 3 2576 2619 3051 2 2576 3109 2 2576 3109 2 2576 3109 2 2576 3109 2 2576 3109 2 2576 3109 3 2577 2620 3053 3 2577 2620 3053 3 2577 2620 3053 3 2577 2620 3053 3 2577 2620 3053 3 2577 2620 3053 3 2578 2621 3055 3 2578 2621 3055 3 2578 2621 3055 3 2578 2621 3055 3 2578 2621 3055 3 2578 2621 3055 3 2579 2622 3056 3 2579 2622 3056 3 2579 2622 3056 3 2579 2622 3056 3 2579 2622 3056 3 2579 2622 3056 2 2579 3114 2 2579 3114 2 2579 3114 2 2579 3114 2 2579 3114 2 2579 3114 3 2580 2623 3058 3 2580 2623 3058 3 2580 2623 3058 3 2580 2623 3058 3 2580 2623 3058 3 2580 2623 3058 2 2580 3116 2 2580 3116 2 2580 3116 2 2580 3116 2 2580 3116 2 2580 3116 3 2581 2624 3059 3 2581 2624 3059 3 2581 2624 3059 3 2581 2624 3059 3 2581 2624 3059 3 2581 2624 3059 2 2581 3117 2 2581 3117 2 2581 3117 2 2581 3117 2 2581 3117 2 2581 3117 3 2582 2625 3061 3 2582 2625 3061 3 2582 2625 3061 3 2582 2625 3061 3 2582 2625 3061 3 2582 2625 3061 2 2582 3119 2 2582 3119 2 2582 3119 2 2582 3119 2 2582 3119 2 2582 3119 8 2583 2626 3062 3130 3131 3186 3192 3234 8 2583 2626 3062 3130 3131 3186 3192 3234 8 2583 2626 3062 3130 3131 3186 3192 3234 8 2583 2626 3062 3130 3131 3186 3192 3234 8 2583 2626 3062 3130 3131 3186 3192 3234 8 2583 2626 3062 3130 3131 3186 3192 3234 3 2583 2626 3062 3 2583 2626 3062 3 2583 2626 3062 3 2583 2626 3062 3 2583 2626 3062 3 2583 2626 3062 5 2583 3120 3130 3186 3243 5 2583 3120 3130 3186 3243 5 2583 3120 3130 3186 3243 5 2583 3120 3130 3186 3243 5 2583 3120 3130 3186 3243 5 2583 3120 3130 3186 3243 2 2583 3120 2 2583 3120 2 2583 3120 2 2583 3120 2 2583 3120 2 2583 3120 3 2583 3130 3186 3 2583 3130 3186 3 2583 3130 3186 3 2583 3130 3186 3 2583 3130 3186 3 2583 3130 3186 3 2584 2627 2956 3 2584 2627 2956 3 2584 2627 2956 3 2584 2627 2956 3 2584 2627 2956 3 2584 2627 2956 8 2584 2627 2956 3312 3314 3352 3358 3396 8 2584 2627 2956 3312 3314 3352 3358 3396 8 2584 2627 2956 3312 3314 3352 3358 3396 8 2584 2627 2956 3312 3314 3352 3358 3396 8 2584 2627 2956 3312 3314 3352 3358 3396 8 2584 2627 2956 3312 3314 3352 3358 3396 3 2584 3312 3352 3 2584 3312 3352 3 2584 3312 3352 3 2584 3312 3352 3 2584 3312 3352 3 2584 3312 3352 3 2585 2628 2957 3 2585 2628 2957 3 2585 2628 2957 3 2585 2628 2957 3 2585 2628 2957 3 2585 2628 2957 3 2586 2629 2958 3 2586 2629 2958 3 2586 2629 2958 3 2586 2629 2958 3 2586 2629 2958 3 2586 2629 2958 3 2587 2630 2960 3 2587 2630 2960 3 2587 2630 2960 3 2587 2630 2960 3 2587 2630 2960 3 2587 2630 2960 3 2588 2631 2961 3 2588 2631 2961 3 2588 2631 2961 3 2588 2631 2961 3 2588 2631 2961 3 2588 2631 2961 3 2589 2632 2962 3 2589 2632 2962 3 2589 2632 2962 3 2589 2632 2962 3 2589 2632 2962 3 2589 2632 2962 3 2590 2633 2963 3 2590 2633 2963 3 2590 2633 2963 3 2590 2633 2963 3 2590 2633 2963 3 2590 2633 2963 3 2591 2634 2964 3 2591 2634 2964 3 2591 2634 2964 3 2591 2634 2964 3 2591 2634 2964 3 2591 2634 2964 3 2592 2635 2965 3 2592 2635 2965 3 2592 2635 2965 3 2592 2635 2965 3 2592 2635 2965 3 2592 2635 2965 3 2593 2636 2966 3 2593 2636 2966 3 2593 2636 2966 3 2593 2636 2966 3 2593 2636 2966 3 2593 2636 2966 3 2594 2637 2967 3 2594 2637 2967 3 2594 2637 2967 3 2594 2637 2967 3 2594 2637 2967 3 2594 2637 2967 3 2595 2638 2968 3 2595 2638 2968 3 2595 2638 2968 3 2595 2638 2968 3 2595 2638 2968 3 2595 2638 2968 3 2596 2639 2969 3 2596 2639 2969 3 2596 2639 2969 3 2596 2639 2969 3 2596 2639 2969 3 2596 2639 2969 3 2597 2640 2970 3 2597 2640 2970 3 2597 2640 2970 3 2597 2640 2970 3 2597 2640 2970 3 2597 2640 2970 3 2598 2641 2971 3 2598 2641 2971 3 2598 2641 2971 3 2598 2641 2971 3 2598 2641 2971 3 2598 2641 2971 3 2599 2642 2972 3 2599 2642 2972 3 2599 2642 2972 3 2599 2642 2972 3 2599 2642 2972 3 2599 2642 2972 3 2600 2643 2973 3 2600 2643 2973 3 2600 2643 2973 3 2600 2643 2973 3 2600 2643 2973 3 2600 2643 2973 3 2601 2644 2974 3 2601 2644 2974 3 2601 2644 2974 3 2601 2644 2974 3 2601 2644 2974 3 2601 2644 2974 3 2602 2645 2975 3 2602 2645 2975 3 2602 2645 2975 3 2602 2645 2975 3 2602 2645 2975 3 2602 2645 2975 3 2603 2646 2976 3 2603 2646 2976 3 2603 2646 2976 3 2603 2646 2976 3 2603 2646 2976 3 2603 2646 2976 3 2604 2647 2977 3 2604 2647 2977 3 2604 2647 2977 3 2604 2647 2977 3 2604 2647 2977 3 2604 2647 2977 3 2605 2648 2978 3 2605 2648 2978 3 2605 2648 2978 3 2605 2648 2978 3 2605 2648 2978 3 2605 2648 2978 3 2606 2649 2979 3 2606 2649 2979 3 2606 2649 2979 3 2606 2649 2979 3 2606 2649 2979 3 2606 2649 2979 3 2607 2650 2980 3 2607 2650 2980 3 2607 2650 2980 3 2607 2650 2980 3 2607 2650 2980 3 2607 2650 2980 3 2608 2651 2981 3 2608 2651 2981 3 2608 2651 2981 3 2608 2651 2981 3 2608 2651 2981 3 2608 2651 2981 3 2609 2652 2982 3 2609 2652 2982 3 2609 2652 2982 3 2609 2652 2982 3 2609 2652 2982 3 2609 2652 2982 3 2610 2653 2983 3 2610 2653 2983 3 2610 2653 2983 3 2610 2653 2983 3 2610 2653 2983 3 2610 2653 2983 3 2611 2654 2984 3 2611 2654 2984 3 2611 2654 2984 3 2611 2654 2984 3 2611 2654 2984 3 2611 2654 2984 3 2612 2655 2985 3 2612 2655 2985 3 2612 2655 2985 3 2612 2655 2985 3 2612 2655 2985 3 2612 2655 2985 3 2613 2656 2986 3 2613 2656 2986 3 2613 2656 2986 3 2613 2656 2986 3 2613 2656 2986 3 2613 2656 2986 3 2614 2657 2988 3 2614 2657 2988 3 2614 2657 2988 3 2614 2657 2988 3 2614 2657 2988 3 2614 2657 2988 3 2615 2658 2989 3 2615 2658 2989 3 2615 2658 2989 3 2615 2658 2989 3 2615 2658 2989 3 2615 2658 2989 3 2616 2659 2990 3 2616 2659 2990 3 2616 2659 2990 3 2616 2659 2990 3 2616 2659 2990 3 2616 2659 2990 3 2617 2660 2991 3 2617 2660 2991 3 2617 2660 2991 3 2617 2660 2991 3 2617 2660 2991 3 2617 2660 2991 3 2618 2661 2992 3 2618 2661 2992 3 2618 2661 2992 3 2618 2661 2992 3 2618 2661 2992 3 2618 2661 2992 3 2619 2662 2993 3 2619 2662 2993 3 2619 2662 2993 3 2619 2662 2993 3 2619 2662 2993 3 2619 2662 2993 3 2620 2663 2995 3 2620 2663 2995 3 2620 2663 2995 3 2620 2663 2995 3 2620 2663 2995 3 2620 2663 2995 3 2621 2664 2997 3 2621 2664 2997 3 2621 2664 2997 3 2621 2664 2997 3 2621 2664 2997 3 2621 2664 2997 3 2622 2665 2998 3 2622 2665 2998 3 2622 2665 2998 3 2622 2665 2998 3 2622 2665 2998 3 2622 2665 2998 3 2623 2666 3000 3 2623 2666 3000 3 2623 2666 3000 3 2623 2666 3000 3 2623 2666 3000 3 2623 2666 3000 3 2624 2667 3001 3 2624 2667 3001 3 2624 2667 3001 3 2624 2667 3001 3 2624 2667 3001 3 2624 2667 3001 3 2625 2668 3003 3 2625 2668 3003 3 2625 2668 3003 3 2625 2668 3003 3 2625 2668 3003 3 2625 2668 3003 8 2626 2669 3004 3131 3132 3192 3198 3225 8 2626 2669 3004 3131 3132 3192 3198 3225 8 2626 2669 3004 3131 3132 3192 3198 3225 8 2626 2669 3004 3131 3132 3192 3198 3225 8 2626 2669 3004 3131 3132 3192 3198 3225 8 2626 2669 3004 3131 3132 3192 3198 3225 3 2626 2669 3004 3 2626 2669 3004 3 2626 2669 3004 3 2626 2669 3004 3 2626 2669 3004 3 2626 2669 3004 3 2626 3131 3192 3 2626 3131 3192 3 2626 3131 3192 3 2626 3131 3192 3 2626 3131 3192 3 2626 3131 3192 3 2627 2670 2756 3 2627 2670 2756 3 2627 2670 2756 3 2627 2670 2756 3 2627 2670 2756 3 2627 2670 2756 3 2627 3314 3358 3 2627 3314 3358 3 2627 3314 3358 3 2627 3314 3358 3 2627 3314 3358 3 2627 3314 3358 3 2628 2671 2900 3 2628 2671 2900 3 2628 2671 2900 3 2628 2671 2900 3 2628 2671 2900 3 2628 2671 2900 3 2629 2672 2901 3 2629 2672 2901 3 2629 2672 2901 3 2629 2672 2901 3 2629 2672 2901 3 2629 2672 2901 3 2630 2673 2903 3 2630 2673 2903 3 2630 2673 2903 3 2630 2673 2903 3 2630 2673 2903 3 2630 2673 2903 3 2631 2674 2904 3 2631 2674 2904 3 2631 2674 2904 3 2631 2674 2904 3 2631 2674 2904 3 2631 2674 2904 3 2632 2675 2905 3 2632 2675 2905 3 2632 2675 2905 3 2632 2675 2905 3 2632 2675 2905 3 2632 2675 2905 3 2633 2676 2907 3 2633 2676 2907 3 2633 2676 2907 3 2633 2676 2907 3 2633 2676 2907 3 2633 2676 2907 3 2634 2677 2908 3 2634 2677 2908 3 2634 2677 2908 3 2634 2677 2908 3 2634 2677 2908 3 2634 2677 2908 3 2635 2678 2909 3 2635 2678 2909 3 2635 2678 2909 3 2635 2678 2909 3 2635 2678 2909 3 2635 2678 2909 3 2636 2679 2911 3 2636 2679 2911 3 2636 2679 2911 3 2636 2679 2911 3 2636 2679 2911 3 2636 2679 2911 3 2637 2680 2912 3 2637 2680 2912 3 2637 2680 2912 3 2637 2680 2912 3 2637 2680 2912 3 2637 2680 2912 3 2638 2681 2913 3 2638 2681 2913 3 2638 2681 2913 3 2638 2681 2913 3 2638 2681 2913 3 2638 2681 2913 3 2639 2682 2915 3 2639 2682 2915 3 2639 2682 2915 3 2639 2682 2915 3 2639 2682 2915 3 2639 2682 2915 3 2640 2683 2916 3 2640 2683 2916 3 2640 2683 2916 3 2640 2683 2916 3 2640 2683 2916 3 2640 2683 2916 3 2641 2684 2917 3 2641 2684 2917 3 2641 2684 2917 3 2641 2684 2917 3 2641 2684 2917 3 2641 2684 2917 3 2642 2685 2919 3 2642 2685 2919 3 2642 2685 2919 3 2642 2685 2919 3 2642 2685 2919 3 2642 2685 2919 3 2643 2686 2920 3 2643 2686 2920 3 2643 2686 2920 3 2643 2686 2920 3 2643 2686 2920 3 2643 2686 2920 3 2644 2687 2921 3 2644 2687 2921 3 2644 2687 2921 3 2644 2687 2921 3 2644 2687 2921 3 2644 2687 2921 3 2645 2688 2923 3 2645 2688 2923 3 2645 2688 2923 3 2645 2688 2923 3 2645 2688 2923 3 2645 2688 2923 3 2646 2689 2924 3 2646 2689 2924 3 2646 2689 2924 3 2646 2689 2924 3 2646 2689 2924 3 2646 2689 2924 3 2647 2690 2925 3 2647 2690 2925 3 2647 2690 2925 3 2647 2690 2925 3 2647 2690 2925 3 2647 2690 2925 3 2648 2691 2927 3 2648 2691 2927 3 2648 2691 2927 3 2648 2691 2927 3 2648 2691 2927 3 2648 2691 2927 3 2649 2692 2928 3 2649 2692 2928 3 2649 2692 2928 3 2649 2692 2928 3 2649 2692 2928 3 2649 2692 2928 3 2650 2693 2929 3 2650 2693 2929 3 2650 2693 2929 3 2650 2693 2929 3 2650 2693 2929 3 2650 2693 2929 3 2651 2694 2931 3 2651 2694 2931 3 2651 2694 2931 3 2651 2694 2931 3 2651 2694 2931 3 2651 2694 2931 3 2652 2695 2932 3 2652 2695 2932 3 2652 2695 2932 3 2652 2695 2932 3 2652 2695 2932 3 2652 2695 2932 3 2653 2696 2933 3 2653 2696 2933 3 2653 2696 2933 3 2653 2696 2933 3 2653 2696 2933 3 2653 2696 2933 3 2654 2697 2935 3 2654 2697 2935 3 2654 2697 2935 3 2654 2697 2935 3 2654 2697 2935 3 2654 2697 2935 3 2655 2698 2936 3 2655 2698 2936 3 2655 2698 2936 3 2655 2698 2936 3 2655 2698 2936 3 2655 2698 2936 3 2656 2699 2937 3 2656 2699 2937 3 2656 2699 2937 3 2656 2699 2937 3 2656 2699 2937 3 2656 2699 2937 3 2657 2700 2939 3 2657 2700 2939 3 2657 2700 2939 3 2657 2700 2939 3 2657 2700 2939 3 2657 2700 2939 3 2658 2701 2940 3 2658 2701 2940 3 2658 2701 2940 3 2658 2701 2940 3 2658 2701 2940 3 2658 2701 2940 3 2659 2702 2941 3 2659 2702 2941 3 2659 2702 2941 3 2659 2702 2941 3 2659 2702 2941 3 2659 2702 2941 3 2660 2703 2943 3 2660 2703 2943 3 2660 2703 2943 3 2660 2703 2943 3 2660 2703 2943 3 2660 2703 2943 3 2661 2704 2944 3 2661 2704 2944 3 2661 2704 2944 3 2661 2704 2944 3 2661 2704 2944 3 2661 2704 2944 3 2662 2705 2945 3 2662 2705 2945 3 2662 2705 2945 3 2662 2705 2945 3 2662 2705 2945 3 2662 2705 2945 3 2663 2706 2947 3 2663 2706 2947 3 2663 2706 2947 3 2663 2706 2947 3 2663 2706 2947 3 2663 2706 2947 3 2664 2707 2949 3 2664 2707 2949 3 2664 2707 2949 3 2664 2707 2949 3 2664 2707 2949 3 2664 2707 2949 3 2665 2708 2950 3 2665 2708 2950 3 2665 2708 2950 3 2665 2708 2950 3 2665 2708 2950 3 2665 2708 2950 3 2666 2709 2952 3 2666 2709 2952 3 2666 2709 2952 3 2666 2709 2952 3 2666 2709 2952 3 2666 2709 2952 3 2667 2710 2953 3 2667 2710 2953 3 2667 2710 2953 3 2667 2710 2953 3 2667 2710 2953 3 2667 2710 2953 3 2668 2711 2955 3 2668 2711 2955 3 2668 2711 2955 3 2668 2711 2955 3 2668 2711 2955 3 2668 2711 2955 3 2669 2712 2759 3 2669 2712 2759 3 2669 2712 2759 3 2669 2712 2759 3 2669 2712 2759 3 2669 2712 2759 3 2669 3132 3198 3 2669 3132 3198 3 2669 3132 3198 3 2669 3132 3198 3 2669 3132 3198 3 2669 3132 3198 3 2670 2713 2757 3 2670 2713 2757 3 2670 2713 2757 3 2670 2713 2757 3 2670 2713 2757 3 2670 2713 2757 3 2671 2714 2818 3 2671 2714 2818 3 2671 2714 2818 3 2671 2714 2818 3 2671 2714 2818 3 2671 2714 2818 3 2672 2715 2820 3 2672 2715 2820 3 2672 2715 2820 3 2672 2715 2820 3 2672 2715 2820 3 2672 2715 2820 3 2673 2716 2822 3 2673 2716 2822 3 2673 2716 2822 3 2673 2716 2822 3 2673 2716 2822 3 2673 2716 2822 3 2674 2717 2824 3 2674 2717 2824 3 2674 2717 2824 3 2674 2717 2824 3 2674 2717 2824 3 2674 2717 2824 3 2675 2718 2826 3 2675 2718 2826 3 2675 2718 2826 3 2675 2718 2826 3 2675 2718 2826 3 2675 2718 2826 3 2676 2719 2828 3 2676 2719 2828 3 2676 2719 2828 3 2676 2719 2828 3 2676 2719 2828 3 2676 2719 2828 3 2677 2720 2830 3 2677 2720 2830 3 2677 2720 2830 3 2677 2720 2830 3 2677 2720 2830 3 2677 2720 2830 3 2678 2721 2832 3 2678 2721 2832 3 2678 2721 2832 3 2678 2721 2832 3 2678 2721 2832 3 2678 2721 2832 3 2679 2722 2834 3 2679 2722 2834 3 2679 2722 2834 3 2679 2722 2834 3 2679 2722 2834 3 2679 2722 2834 3 2680 2723 2836 3 2680 2723 2836 3 2680 2723 2836 3 2680 2723 2836 3 2680 2723 2836 3 2680 2723 2836 3 2681 2724 2838 3 2681 2724 2838 3 2681 2724 2838 3 2681 2724 2838 3 2681 2724 2838 3 2681 2724 2838 3 2682 2725 2840 3 2682 2725 2840 3 2682 2725 2840 3 2682 2725 2840 3 2682 2725 2840 3 2682 2725 2840 3 2683 2726 2842 3 2683 2726 2842 3 2683 2726 2842 3 2683 2726 2842 3 2683 2726 2842 3 2683 2726 2842 3 2684 2727 2844 3 2684 2727 2844 3 2684 2727 2844 3 2684 2727 2844 3 2684 2727 2844 3 2684 2727 2844 3 2685 2728 2846 3 2685 2728 2846 3 2685 2728 2846 3 2685 2728 2846 3 2685 2728 2846 3 2685 2728 2846 3 2686 2729 2848 3 2686 2729 2848 3 2686 2729 2848 3 2686 2729 2848 3 2686 2729 2848 3 2686 2729 2848 3 2687 2730 2850 3 2687 2730 2850 3 2687 2730 2850 3 2687 2730 2850 3 2687 2730 2850 3 2687 2730 2850 3 2688 2731 2852 3 2688 2731 2852 3 2688 2731 2852 3 2688 2731 2852 3 2688 2731 2852 3 2688 2731 2852 3 2689 2732 2854 3 2689 2732 2854 3 2689 2732 2854 3 2689 2732 2854 3 2689 2732 2854 3 2689 2732 2854 3 2690 2733 2856 3 2690 2733 2856 3 2690 2733 2856 3 2690 2733 2856 3 2690 2733 2856 3 2690 2733 2856 3 2691 2734 2858 3 2691 2734 2858 3 2691 2734 2858 3 2691 2734 2858 3 2691 2734 2858 3 2691 2734 2858 3 2692 2735 2860 3 2692 2735 2860 3 2692 2735 2860 3 2692 2735 2860 3 2692 2735 2860 3 2692 2735 2860 3 2693 2736 2862 3 2693 2736 2862 3 2693 2736 2862 3 2693 2736 2862 3 2693 2736 2862 3 2693 2736 2862 3 2694 2737 2864 3 2694 2737 2864 3 2694 2737 2864 3 2694 2737 2864 3 2694 2737 2864 3 2694 2737 2864 3 2695 2738 2866 3 2695 2738 2866 3 2695 2738 2866 3 2695 2738 2866 3 2695 2738 2866 3 2695 2738 2866 3 2696 2739 2868 3 2696 2739 2868 3 2696 2739 2868 3 2696 2739 2868 3 2696 2739 2868 3 2696 2739 2868 3 2697 2740 2870 3 2697 2740 2870 3 2697 2740 2870 3 2697 2740 2870 3 2697 2740 2870 3 2697 2740 2870 3 2698 2741 2872 3 2698 2741 2872 3 2698 2741 2872 3 2698 2741 2872 3 2698 2741 2872 3 2698 2741 2872 3 2699 2742 2874 3 2699 2742 2874 3 2699 2742 2874 3 2699 2742 2874 3 2699 2742 2874 3 2699 2742 2874 3 2700 2743 2876 3 2700 2743 2876 3 2700 2743 2876 3 2700 2743 2876 3 2700 2743 2876 3 2700 2743 2876 3 2701 2744 2878 3 2701 2744 2878 3 2701 2744 2878 3 2701 2744 2878 3 2701 2744 2878 3 2701 2744 2878 3 2702 2745 2880 3 2702 2745 2880 3 2702 2745 2880 3 2702 2745 2880 3 2702 2745 2880 3 2702 2745 2880 3 2703 2746 2882 3 2703 2746 2882 3 2703 2746 2882 3 2703 2746 2882 3 2703 2746 2882 3 2703 2746 2882 3 2704 2747 2884 3 2704 2747 2884 3 2704 2747 2884 3 2704 2747 2884 3 2704 2747 2884 3 2704 2747 2884 3 2705 2748 2886 3 2705 2748 2886 3 2705 2748 2886 3 2705 2748 2886 3 2705 2748 2886 3 2705 2748 2886 3 2706 2749 2888 3 2706 2749 2888 3 2706 2749 2888 3 2706 2749 2888 3 2706 2749 2888 3 2706 2749 2888 3 2707 2750 2890 3 2707 2750 2890 3 2707 2750 2890 3 2707 2750 2890 3 2707 2750 2890 3 2707 2750 2890 3 2708 2751 2892 3 2708 2751 2892 3 2708 2751 2892 3 2708 2751 2892 3 2708 2751 2892 3 2708 2751 2892 3 2709 2752 2894 3 2709 2752 2894 3 2709 2752 2894 3 2709 2752 2894 3 2709 2752 2894 3 2709 2752 2894 3 2710 2753 2896 3 2710 2753 2896 3 2710 2753 2896 3 2710 2753 2896 3 2710 2753 2896 3 2710 2753 2896 3 2711 2754 2898 3 2711 2754 2898 3 2711 2754 2898 3 2711 2754 2898 3 2711 2754 2898 3 2711 2754 2898 3 2712 2755 2760 3 2712 2755 2760 3 2712 2755 2760 3 2712 2755 2760 3 2712 2755 2760 3 2712 2755 2760 4 2758 3316 3317 3382 4 2758 3316 3317 3382 4 2758 3316 3317 3382 4 2758 3316 3317 3382 4 2758 3316 3317 3382 4 2758 3316 3317 3382 3 2761 3133 3218 3 2761 3133 3218 3 2761 3133 3218 3 2761 3133 3218 3 2761 3133 3218 3 2761 3133 3218 1 2773 1 2773 1 2773 1 2773 1 2773 1 2773 1 2774 1 2774 1 2774 1 2774 1 2774 1 2774 3 2775 3317 3376 3 2775 3317 3376 3 2775 3317 3376 3 2775 3317 3376 3 2775 3317 3376 3 2775 3317 3376 3 2817 3133 3214 3 2817 3133 3214 3 2817 3133 3214 3 2817 3133 3214 3 2817 3133 3214 3 2817 3133 3214 1 2946 1 2946 1 2946 1 2946 1 2946 1 2946 2 2946 2948 2 2946 2948 2 2946 2948 2 2946 2948 2 2946 2948 2 2946 2948 2 2948 2951 2 2948 2951 2 2948 2951 2 2948 2951 2 2948 2951 2 2948 2951 1 2951 1 2951 1 2951 1 2951 1 2951 1 2951 2 2951 2954 2 2951 2954 2 2951 2954 2 2951 2954 2 2951 2954 2 2951 2954 1 2954 1 2954 1 2954 1 2954 1 2954 1 2954 4 2956 3312 3314 3396 4 2956 3312 3314 3396 4 2956 3312 3314 3396 4 2956 3312 3314 3396 4 2956 3312 3314 3396 4 2956 3312 3314 3396 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 1 2994 2 2994 2996 2 2994 2996 2 2994 2996 2 2994 2996 2 2994 2996 2 2994 2996 2 2996 2999 2 2996 2999 2 2996 2999 2 2996 2999 2 2996 2999 2 2996 2999 1 2999 1 2999 1 2999 1 2999 1 2999 1 2999 2 2999 3002 2 2999 3002 2 2999 3002 2 2999 3002 2 2999 3002 2 2999 3002 1 3002 1 3002 1 3002 1 3002 1 3002 1 3002 4 3004 3131 3132 3225 4 3004 3131 3132 3225 4 3004 3131 3132 3225 4 3004 3131 3132 3225 4 3004 3131 3132 3225 4 3004 3131 3132 3225 4 3005 3310 3312 3407 4 3005 3310 3312 3407 4 3005 3310 3312 3407 4 3005 3310 3312 3407 4 3005 3310 3312 3407 4 3005 3310 3312 3407 1 3052 1 3052 1 3052 1 3052 1 3052 1 3052 2 3052 3054 2 3052 3054 2 3052 3054 2 3052 3054 2 3052 3054 2 3052 3054 2 3054 3057 2 3054 3057 2 3054 3057 2 3054 3057 2 3054 3057 2 3054 3057 1 3057 1 3057 1 3057 1 3057 1 3057 1 3057 2 3057 3060 2 3057 3060 2 3057 3060 2 3057 3060 2 3057 3060 2 3057 3060 1 3060 1 3060 1 3060 1 3060 1 3060 1 3060 4 3062 3130 3131 3234 4 3062 3130 3131 3234 4 3062 3130 3131 3234 4 3062 3130 3131 3234 4 3062 3130 3131 3234 4 3062 3130 3131 3234 4 3063 3308 3310 3418 4 3063 3308 3310 3418 4 3063 3308 3310 3418 4 3063 3308 3310 3418 4 3063 3308 3310 3418 4 3063 3308 3310 3418 1 3110 1 3110 1 3110 1 3110 1 3110 1 3110 2 3110 3112 2 3110 3112 2 3110 3112 2 3110 3112 2 3110 3112 2 3110 3112 2 3112 3115 2 3112 3115 2 3112 3115 2 3112 3115 2 3112 3115 2 3112 3115 1 3115 1 3115 1 3115 1 3115 1 3115 1 3115 2 3115 3118 2 3115 3118 2 3115 3118 2 3115 3118 2 3115 3118 2 3115 3118 1 3118 1 3118 1 3118 1 3118 1 3118 1 3118 3 3120 3130 3243 3 3120 3130 3243 3 3120 3130 3243 3 3120 3130 3243 3 3120 3130 3243 3 3120 3130 3243 2 3121 3212 2 3121 3212 2 3121 3212 2 3121 3212 2 3121 3212 2 3121 3212 3 3121 3125 3126 3 3121 3125 3126 3 3121 3125 3126 3 3121 3125 3126 3 3121 3125 3126 3 3121 3125 3126 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 10 3121 3125 3126 3134 3135 3164 3165 3243 3244 3245 3 3121 3135 3245 3 3121 3135 3245 3 3121 3135 3245 3 3121 3135 3245 3 3121 3135 3245 3 3121 3135 3245 2 3122 3212 2 3122 3212 2 3122 3212 2 3122 3212 2 3122 3212 2 3122 3212 3 3122 3126 3127 3 3122 3126 3127 3 3122 3126 3127 3 3122 3126 3127 3 3122 3126 3127 3 3122 3126 3127 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 10 3122 3126 3127 3142 3143 3165 3166 3244 3245 3246 3 3122 3143 3245 3 3122 3143 3245 3 3122 3143 3245 3 3122 3143 3245 3 3122 3143 3245 3 3122 3143 3245 2 3123 3213 2 3123 3213 2 3123 3213 2 3123 3213 2 3123 3213 2 3123 3213 3 3123 3128 3129 3 3123 3128 3129 3 3123 3128 3129 3 3123 3128 3129 3 3123 3128 3129 3 3123 3128 3129 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 10 3123 3128 3129 3152 3153 3167 3168 3247 3248 3249 3 3123 3153 3249 3 3123 3153 3249 3 3123 3153 3249 3 3123 3153 3249 3 3123 3153 3249 3 3123 3153 3249 2 3124 3213 2 3124 3213 2 3124 3213 2 3124 3213 2 3124 3213 2 3124 3213 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 10 3124 3129 3158 3159 3168 3169 3248 3249 3250 3251 2 3124 3129 2 3124 3129 2 3124 3129 2 3124 3129 2 3124 3129 2 3124 3129 4 3124 3159 3249 3251 4 3124 3159 3249 3251 4 3124 3159 3249 3251 4 3124 3159 3249 3251 4 3124 3159 3249 3251 4 3124 3159 3249 3251 3 3125 3164 3243 3 3125 3164 3243 3 3125 3164 3243 3 3125 3164 3243 3 3125 3164 3243 3 3125 3164 3243 4 3126 3165 3244 3245 4 3126 3165 3244 3245 4 3126 3165 3244 3245 4 3126 3165 3244 3245 4 3126 3165 3244 3245 4 3126 3165 3244 3245 2 3127 3128 2 3127 3128 2 3127 3128 2 3127 3128 2 3127 3128 2 3127 3128 7 3127 3128 3148 3166 3167 3246 3247 7 3127 3128 3148 3166 3167 3246 3247 7 3127 3128 3148 3166 3167 3246 3247 7 3127 3128 3148 3166 3167 3246 3247 7 3127 3128 3148 3166 3167 3246 3247 7 3127 3128 3148 3166 3167 3246 3247 3 3127 3166 3246 3 3127 3166 3246 3 3127 3166 3246 3 3127 3166 3246 3 3127 3166 3246 3 3127 3166 3246 3 3128 3167 3247 3 3128 3167 3247 3 3128 3167 3247 3 3128 3167 3247 3 3128 3167 3247 3 3128 3167 3247 4 3129 3168 3248 3249 4 3129 3168 3248 3249 4 3129 3168 3248 3249 4 3129 3168 3248 3249 4 3129 3168 3248 3249 4 3129 3168 3248 3249 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 11 3134 3135 3136 3137 3164 3165 3170 3171 3234 3235 3236 4 3134 3136 3234 3235 4 3134 3136 3234 3235 4 3134 3136 3234 3235 4 3134 3136 3234 3235 4 3134 3136 3234 3235 4 3134 3136 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 8 3134 3136 3186 3187 3192 3193 3234 3235 5 3134 3186 3187 3243 3244 5 3134 3186 3187 3243 3244 5 3134 3186 3187 3243 3244 5 3134 3186 3187 3243 3244 5 3134 3186 3187 3243 3244 5 3134 3186 3187 3243 3244 3 3134 3186 3187 3 3134 3186 3187 3 3134 3186 3187 3 3134 3186 3187 3 3134 3186 3187 3 3134 3186 3187 3 3134 3243 3244 3 3134 3243 3244 3 3134 3243 3244 3 3134 3243 3244 3 3134 3243 3244 3 3134 3243 3244 4 3134 3135 3164 3165 4 3134 3135 3164 3165 4 3134 3135 3164 3165 4 3134 3135 3164 3165 4 3134 3135 3164 3165 4 3134 3135 3164 3165 3 3135 3137 3236 3 3135 3137 3236 3 3135 3137 3236 3 3135 3137 3236 3 3135 3137 3236 3 3135 3137 3236 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 10 3136 3137 3138 3139 3170 3171 3176 3177 3225 3226 4 3136 3138 3225 3226 4 3136 3138 3225 3226 4 3136 3138 3225 3226 4 3136 3138 3225 3226 4 3136 3138 3225 3226 4 3136 3138 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 8 3136 3138 3192 3193 3198 3199 3225 3226 3 3136 3192 3193 3 3136 3192 3193 3 3136 3192 3193 3 3136 3192 3193 3 3136 3192 3193 3 3136 3192 3193 4 3136 3137 3170 3171 4 3136 3137 3170 3171 4 3136 3137 3170 3171 4 3136 3137 3170 3171 4 3136 3137 3170 3171 4 3136 3137 3170 3171 2 3137 3139 2 3137 3139 2 3137 3139 2 3137 3139 2 3137 3139 2 3137 3139 3 3138 3198 3199 3 3138 3198 3199 3 3138 3198 3199 3 3138 3198 3199 3 3138 3198 3199 3 3138 3198 3199 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 10 3138 3139 3140 3176 3177 3198 3199 3204 3205 3222 4 3138 3139 3176 3177 4 3138 3139 3176 3177 4 3138 3139 3176 3177 4 3138 3139 3176 3177 4 3138 3139 3176 3177 4 3138 3139 3176 3177 3 3139 3140 3222 3 3139 3140 3222 3 3139 3140 3222 3 3139 3140 3222 3 3139 3140 3222 3 3139 3140 3222 4 3140 3141 3218 3219 4 3140 3141 3218 3219 4 3140 3141 3218 3219 4 3140 3141 3218 3219 4 3140 3141 3218 3219 4 3140 3141 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 8 3140 3141 3204 3205 3208 3209 3218 3219 3 3140 3204 3205 3 3140 3204 3205 3 3140 3204 3205 3 3140 3204 3205 3 3140 3204 3205 3 3140 3204 3205 3 3141 3214 3215 3 3141 3214 3215 3 3141 3214 3215 3 3141 3214 3215 3 3141 3214 3215 3 3141 3214 3215 5 3141 3208 3209 3214 3215 5 3141 3208 3209 3214 3215 5 3141 3208 3209 3214 3215 5 3141 3208 3209 3214 3215 5 3141 3208 3209 3214 3215 5 3141 3208 3209 3214 3215 3 3141 3208 3209 3 3141 3208 3209 3 3141 3208 3209 3 3141 3208 3209 3 3141 3208 3209 3 3141 3208 3209 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 10 3142 3143 3144 3165 3166 3171 3172 3235 3236 3237 4 3142 3144 3235 3237 4 3142 3144 3235 3237 4 3142 3144 3235 3237 4 3142 3144 3235 3237 4 3142 3144 3235 3237 4 3142 3144 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 8 3142 3144 3187 3188 3193 3194 3235 3237 5 3142 3187 3188 3244 3246 5 3142 3187 3188 3244 3246 5 3142 3187 3188 3244 3246 5 3142 3187 3188 3244 3246 5 3142 3187 3188 3244 3246 5 3142 3187 3188 3244 3246 3 3142 3187 3188 3 3142 3187 3188 3 3142 3187 3188 3 3142 3187 3188 3 3142 3187 3188 3 3142 3187 3188 3 3142 3244 3246 3 3142 3244 3246 3 3142 3244 3246 3 3142 3244 3246 3 3142 3244 3246 3 3142 3244 3246 4 3142 3143 3165 3166 4 3142 3143 3165 3166 4 3142 3143 3165 3166 4 3142 3143 3165 3166 4 3142 3143 3165 3166 4 3142 3143 3165 3166 2 3143 3236 2 3143 3236 2 3143 3236 2 3143 3236 2 3143 3236 2 3143 3236 8 3144 3145 3171 3172 3177 3178 3226 3227 8 3144 3145 3171 3172 3177 3178 3226 3227 8 3144 3145 3171 3172 3177 3178 3226 3227 8 3144 3145 3171 3172 3177 3178 3226 3227 8 3144 3145 3171 3172 3177 3178 3226 3227 8 3144 3145 3171 3172 3177 3178 3226 3227 4 3144 3145 3226 3227 4 3144 3145 3226 3227 4 3144 3145 3226 3227 4 3144 3145 3226 3227 4 3144 3145 3226 3227 4 3144 3145 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 8 3144 3145 3193 3194 3199 3200 3226 3227 3 3144 3193 3194 3 3144 3193 3194 3 3144 3193 3194 3 3144 3193 3194 3 3144 3193 3194 3 3144 3193 3194 3 3144 3171 3172 3 3144 3171 3172 3 3144 3171 3172 3 3144 3171 3172 3 3144 3171 3172 3 3144 3171 3172 3 3145 3199 3200 3 3145 3199 3200 3 3145 3199 3200 3 3145 3199 3200 3 3145 3199 3200 3 3145 3199 3200 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 9 3145 3146 3177 3178 3199 3200 3205 3206 3222 3 3145 3177 3178 3 3145 3177 3178 3 3145 3177 3178 3 3145 3177 3178 3 3145 3177 3178 3 3145 3177 3178 4 3146 3147 3219 3220 4 3146 3147 3219 3220 4 3146 3147 3219 3220 4 3146 3147 3219 3220 4 3146 3147 3219 3220 4 3146 3147 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 8 3146 3147 3205 3206 3209 3210 3219 3220 3 3146 3205 3206 3 3146 3205 3206 3 3146 3205 3206 3 3146 3205 3206 3 3146 3205 3206 3 3146 3205 3206 2 3146 3222 2 3146 3222 2 3146 3222 2 3146 3222 2 3146 3222 2 3146 3222 3 3147 3215 3216 3 3147 3215 3216 3 3147 3215 3216 3 3147 3215 3216 3 3147 3215 3216 3 3147 3215 3216 5 3147 3209 3210 3215 3216 5 3147 3209 3210 3215 3216 5 3147 3209 3210 3215 3216 5 3147 3209 3210 3215 3216 5 3147 3209 3210 3215 3216 5 3147 3209 3210 3215 3216 3 3147 3209 3210 3 3147 3209 3210 3 3147 3209 3210 3 3147 3209 3210 3 3147 3209 3210 3 3147 3209 3210 8 3148 3149 3166 3167 3172 3173 3237 3238 8 3148 3149 3166 3167 3172 3173 3237 3238 8 3148 3149 3166 3167 3172 3173 3237 3238 8 3148 3149 3166 3167 3172 3173 3237 3238 8 3148 3149 3166 3167 3172 3173 3237 3238 8 3148 3149 3166 3167 3172 3173 3237 3238 4 3148 3149 3237 3238 4 3148 3149 3237 3238 4 3148 3149 3237 3238 4 3148 3149 3237 3238 4 3148 3149 3237 3238 4 3148 3149 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 8 3148 3149 3188 3189 3194 3195 3237 3238 5 3148 3188 3189 3246 3247 5 3148 3188 3189 3246 3247 5 3148 3188 3189 3246 3247 5 3148 3188 3189 3246 3247 5 3148 3188 3189 3246 3247 5 3148 3188 3189 3246 3247 3 3148 3188 3189 3 3148 3188 3189 3 3148 3188 3189 3 3148 3188 3189 3 3148 3188 3189 3 3148 3188 3189 3 3148 3246 3247 3 3148 3246 3247 3 3148 3246 3247 3 3148 3246 3247 3 3148 3246 3247 3 3148 3246 3247 3 3148 3166 3167 3 3148 3166 3167 3 3148 3166 3167 3 3148 3166 3167 3 3148 3166 3167 3 3148 3166 3167 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 9 3149 3150 3172 3173 3178 3179 3227 3229 3233 4 3149 3150 3227 3233 4 3149 3150 3227 3233 4 3149 3150 3227 3233 4 3149 3150 3227 3233 4 3149 3150 3227 3233 4 3149 3150 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 8 3149 3150 3194 3195 3200 3201 3227 3233 3 3149 3194 3195 3 3149 3194 3195 3 3149 3194 3195 3 3149 3194 3195 3 3149 3194 3195 3 3149 3194 3195 3 3149 3172 3173 3 3149 3172 3173 3 3149 3172 3173 3 3149 3172 3173 3 3149 3172 3173 3 3149 3172 3173 3 3150 3200 3201 3 3150 3200 3201 3 3150 3200 3201 3 3150 3200 3201 3 3150 3200 3201 3 3150 3200 3201 8 3150 3178 3179 3200 3201 3206 3207 3223 8 3150 3178 3179 3200 3201 3206 3207 3223 8 3150 3178 3179 3200 3201 3206 3207 3223 8 3150 3178 3179 3200 3201 3206 3207 3223 8 3150 3178 3179 3200 3201 3206 3207 3223 8 3150 3178 3179 3200 3201 3206 3207 3223 3 3150 3178 3179 3 3150 3178 3179 3 3150 3178 3179 3 3150 3178 3179 3 3150 3178 3179 3 3150 3178 3179 3 3151 3216 3217 3 3151 3216 3217 3 3151 3216 3217 3 3151 3216 3217 3 3151 3216 3217 3 3151 3216 3217 5 3151 3210 3211 3216 3217 5 3151 3210 3211 3216 3217 5 3151 3210 3211 3216 3217 5 3151 3210 3211 3216 3217 5 3151 3210 3211 3216 3217 5 3151 3210 3211 3216 3217 7 3151 3206 3207 3210 3211 3220 3221 7 3151 3206 3207 3210 3211 3220 3221 7 3151 3206 3207 3210 3211 3220 3221 7 3151 3206 3207 3210 3211 3220 3221 7 3151 3206 3207 3210 3211 3220 3221 7 3151 3206 3207 3210 3211 3220 3221 3 3151 3210 3211 3 3151 3210 3211 3 3151 3210 3211 3 3151 3210 3211 3 3151 3210 3211 3 3151 3210 3211 3 3151 3220 3221 3 3151 3220 3221 3 3151 3220 3221 3 3151 3220 3221 3 3151 3220 3221 3 3151 3220 3221 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 11 3152 3153 3154 3155 3167 3168 3173 3174 3238 3239 3240 4 3152 3154 3238 3239 4 3152 3154 3238 3239 4 3152 3154 3238 3239 4 3152 3154 3238 3239 4 3152 3154 3238 3239 4 3152 3154 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 8 3152 3154 3189 3190 3195 3196 3238 3239 5 3152 3189 3190 3247 3248 5 3152 3189 3190 3247 3248 5 3152 3189 3190 3247 3248 5 3152 3189 3190 3247 3248 5 3152 3189 3190 3247 3248 5 3152 3189 3190 3247 3248 3 3152 3189 3190 3 3152 3189 3190 3 3152 3189 3190 3 3152 3189 3190 3 3152 3189 3190 3 3152 3189 3190 3 3152 3247 3248 3 3152 3247 3248 3 3152 3247 3248 3 3152 3247 3248 3 3152 3247 3248 3 3152 3247 3248 4 3152 3153 3167 3168 4 3152 3153 3167 3168 4 3152 3153 3167 3168 4 3152 3153 3167 3168 4 3152 3153 3167 3168 4 3152 3153 3167 3168 3 3153 3155 3240 3 3153 3155 3240 3 3153 3155 3240 3 3153 3155 3240 3 3153 3155 3240 3 3153 3155 3240 3 3154 3195 3196 3 3154 3195 3196 3 3154 3195 3196 3 3154 3195 3196 3 3154 3195 3196 3 3154 3195 3196 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 14 3154 3155 3156 3173 3174 3179 3195 3196 3201 3202 3229 3231 3232 3233 4 3154 3155 3173 3174 4 3154 3155 3173 3174 4 3154 3155 3173 3174 4 3154 3155 3173 3174 4 3154 3155 3173 3174 4 3154 3155 3173 3174 4 3155 3156 3229 3231 4 3155 3156 3229 3231 4 3155 3156 3229 3231 4 3155 3156 3229 3231 4 3155 3156 3229 3231 4 3155 3156 3229 3231 4 3156 3179 3201 3202 4 3156 3179 3201 3202 4 3156 3179 3201 3202 4 3156 3179 3201 3202 4 3156 3179 3201 3202 4 3156 3179 3201 3202 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 9 3156 3157 3179 3180 3201 3202 3207 3223 3224 2 3156 3157 2 3156 3157 2 3156 3157 2 3156 3157 2 3156 3157 2 3156 3157 4 3157 3180 3223 3224 4 3157 3180 3223 3224 4 3157 3180 3223 3224 4 3157 3180 3223 3224 4 3157 3180 3223 3224 4 3157 3180 3223 3224 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 13 3158 3159 3160 3161 3162 3168 3169 3174 3175 3239 3240 3241 3242 4 3158 3160 3239 3241 4 3158 3160 3239 3241 4 3158 3160 3239 3241 4 3158 3160 3239 3241 4 3158 3160 3239 3241 4 3158 3160 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 8 3158 3160 3190 3191 3196 3197 3239 3241 5 3158 3190 3191 3248 3250 5 3158 3190 3191 3248 3250 5 3158 3190 3191 3248 3250 5 3158 3190 3191 3248 3250 5 3158 3190 3191 3248 3250 5 3158 3190 3191 3248 3250 3 3158 3190 3191 3 3158 3190 3191 3 3158 3190 3191 3 3158 3190 3191 3 3158 3190 3191 3 3158 3190 3191 3 3158 3248 3250 3 3158 3248 3250 3 3158 3248 3250 3 3158 3248 3250 3 3158 3248 3250 3 3158 3248 3250 4 3158 3159 3168 3169 4 3158 3159 3168 3169 4 3158 3159 3168 3169 4 3158 3159 3168 3169 4 3158 3159 3168 3169 4 3158 3159 3168 3169 4 3159 3162 3240 3242 4 3159 3162 3240 3242 4 3159 3162 3240 3242 4 3159 3162 3240 3242 4 3159 3162 3240 3242 4 3159 3162 3240 3242 3 3160 3196 3197 3 3160 3196 3197 3 3160 3196 3197 3 3160 3196 3197 3 3160 3196 3197 3 3160 3196 3197 8 3160 3161 3174 3175 3196 3197 3230 3232 8 3160 3161 3174 3175 3196 3197 3230 3232 8 3160 3161 3174 3175 3196 3197 3230 3232 8 3160 3161 3174 3175 3196 3197 3230 3232 8 3160 3161 3174 3175 3196 3197 3230 3232 8 3160 3161 3174 3175 3196 3197 3230 3232 4 3160 3161 3174 3175 4 3160 3161 3174 3175 4 3160 3161 3174 3175 4 3160 3161 3174 3175 4 3160 3161 3174 3175 4 3160 3161 3174 3175 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 9 3161 3162 3163 3202 3203 3228 3230 3231 3232 3 3161 3230 3232 3 3161 3230 3232 3 3161 3230 3232 3 3161 3230 3232 3 3161 3230 3232 3 3161 3230 3232 2 3161 3162 2 3161 3162 2 3161 3162 2 3161 3162 2 3161 3162 2 3161 3162 4 3162 3163 3228 3231 4 3162 3163 3228 3231 4 3162 3163 3228 3231 4 3162 3163 3228 3231 4 3162 3163 3228 3231 4 3162 3163 3228 3231 3 3163 3202 3203 3 3163 3202 3203 3 3163 3202 3203 3 3163 3202 3203 3 3163 3202 3203 3 3163 3202 3203 3 3164 3170 3234 3 3164 3170 3234 3 3164 3170 3234 3 3164 3170 3234 3 3164 3170 3234 3 3164 3170 3234 4 3165 3171 3235 3236 4 3165 3171 3235 3236 4 3165 3171 3235 3236 4 3165 3171 3235 3236 4 3165 3171 3235 3236 4 3165 3171 3235 3236 3 3166 3172 3237 3 3166 3172 3237 3 3166 3172 3237 3 3166 3172 3237 3 3166 3172 3237 3 3166 3172 3237 3 3167 3173 3238 3 3167 3173 3238 3 3167 3173 3238 3 3167 3173 3238 3 3167 3173 3238 3 3167 3173 3238 4 3168 3174 3239 3240 4 3168 3174 3239 3240 4 3168 3174 3239 3240 4 3168 3174 3239 3240 4 3168 3174 3239 3240 4 3168 3174 3239 3240 8 3169 3175 3182 3183 3184 3185 3241 3242 8 3169 3175 3182 3183 3184 3185 3241 3242 8 3169 3175 3182 3183 3184 3185 3241 3242 8 3169 3175 3182 3183 3184 3185 3241 3242 8 3169 3175 3182 3183 3184 3185 3241 3242 8 3169 3175 3182 3183 3184 3185 3241 3242 3 3169 3182 3183 3 3169 3182 3183 3 3169 3182 3183 3 3169 3182 3183 3 3169 3182 3183 3 3169 3182 3183 5 3169 3182 3183 3250 3251 5 3169 3182 3183 3250 3251 5 3169 3182 3183 3250 3251 5 3169 3182 3183 3250 3251 5 3169 3182 3183 3250 3251 5 3169 3182 3183 3250 3251 3 3169 3250 3251 3 3169 3250 3251 3 3169 3250 3251 3 3169 3250 3251 3 3169 3250 3251 3 3169 3250 3251 4 3169 3175 3241 3242 4 3169 3175 3241 3242 4 3169 3175 3241 3242 4 3169 3175 3241 3242 4 3169 3175 3241 3242 4 3169 3175 3241 3242 3 3170 3176 3225 3 3170 3176 3225 3 3170 3176 3225 3 3170 3176 3225 3 3170 3176 3225 3 3170 3176 3225 3 3171 3177 3226 3 3171 3177 3226 3 3171 3177 3226 3 3171 3177 3226 3 3171 3177 3226 3 3171 3177 3226 3 3172 3178 3227 3 3172 3178 3227 3 3172 3178 3227 3 3172 3178 3227 3 3172 3178 3227 3 3172 3178 3227 4 3173 3179 3229 3233 4 3173 3179 3229 3233 4 3173 3179 3229 3233 4 3173 3179 3229 3233 4 3173 3179 3229 3233 4 3173 3179 3229 3233 3 3174 3196 3232 3 3174 3196 3232 3 3174 3196 3232 3 3174 3196 3232 3 3174 3196 3232 3 3174 3196 3232 5 3175 3184 3185 3197 3230 5 3175 3184 3185 3197 3230 5 3175 3184 3185 3197 3230 5 3175 3184 3185 3197 3230 5 3175 3184 3185 3197 3230 5 3175 3184 3185 3197 3230 3 3175 3184 3185 3 3175 3184 3185 3 3175 3184 3185 3 3175 3184 3185 3 3175 3184 3185 3 3175 3184 3185 3 3175 3197 3230 3 3175 3197 3230 3 3175 3197 3230 3 3175 3197 3230 3 3175 3197 3230 3 3175 3197 3230 3 3176 3198 3204 3 3176 3198 3204 3 3176 3198 3204 3 3176 3198 3204 3 3176 3198 3204 3 3176 3198 3204 4 3177 3199 3205 3222 4 3177 3199 3205 3222 4 3177 3199 3205 3222 4 3177 3199 3205 3222 4 3177 3199 3205 3222 4 3177 3199 3205 3222 3 3178 3200 3206 3 3178 3200 3206 3 3178 3200 3206 3 3178 3200 3206 3 3178 3200 3206 3 3178 3200 3206 4 3179 3201 3207 3223 4 3179 3201 3207 3223 4 3179 3201 3207 3223 4 3179 3201 3207 3223 4 3179 3201 3207 3223 4 3179 3201 3207 3223 3 3180 3181 3221 3 3180 3181 3221 3 3180 3181 3221 3 3180 3181 3221 3 3180 3181 3221 3 3180 3181 3221 5 3180 3181 3207 3211 3221 5 3180 3181 3207 3211 3221 5 3180 3181 3207 3211 3221 5 3180 3181 3207 3211 3221 5 3180 3181 3207 3211 3221 5 3180 3181 3207 3211 3221 2 3180 3207 2 3180 3207 2 3180 3207 2 3180 3207 2 3180 3207 2 3180 3207 3 3181 3211 3217 3 3181 3211 3217 3 3181 3211 3217 3 3181 3211 3217 3 3181 3211 3217 3 3181 3211 3217 2 3181 3211 2 3181 3211 2 3181 3211 2 3181 3211 2 3181 3211 2 3181 3211 2 3181 3217 2 3181 3217 2 3181 3217 2 3181 3217 2 3181 3217 2 3181 3217 3 3182 3184 3241 3 3182 3184 3241 3 3182 3184 3241 3 3182 3184 3241 3 3182 3184 3241 3 3182 3184 3241 5 3182 3184 3191 3197 3241 5 3182 3184 3191 3197 3241 5 3182 3184 3191 3197 3241 5 3182 3184 3191 3197 3241 5 3182 3184 3191 3197 3241 5 3182 3184 3191 3197 3241 2 3182 3191 2 3182 3191 2 3182 3191 2 3182 3191 2 3182 3191 2 3182 3191 3 3182 3191 3250 3 3182 3191 3250 3 3182 3191 3250 3 3182 3191 3250 3 3182 3191 3250 2 3182 3250 2 3182 3250 2 3182 3250 2 3182 3250 2 3182 3250 2 3182 3250 3 3183 3185 3242 3 3183 3185 3242 3 3183 3185 3242 3 3183 3185 3242 3 3183 3185 3242 3 3183 3185 3242 2 3183 3251 2 3183 3251 2 3183 3251 2 3183 3251 2 3183 3251 2 3183 3251 2 3184 3197 2 3184 3197 2 3184 3197 2 3184 3197 2 3184 3197 2 3184 3197 2 3185 3230 2 3185 3230 2 3185 3230 2 3185 3230 2 3185 3230 2 3185 3230 2 3186 3243 2 3186 3243 2 3186 3243 2 3186 3243 2 3186 3243 2 3186 3243 3 3186 3192 3234 3 3186 3192 3234 3 3186 3192 3234 3 3186 3192 3234 3 3186 3192 3234 3 3186 3192 3234 2 3187 3244 2 3187 3244 2 3187 3244 2 3187 3244 2 3187 3244 2 3187 3244 3 3187 3193 3235 3 3187 3193 3235 3 3187 3193 3235 3 3187 3193 3235 3 3187 3193 3235 3 3187 3193 3235 2 3188 3246 2 3188 3246 2 3188 3246 2 3188 3246 2 3188 3246 2 3188 3246 3 3188 3194 3237 3 3188 3194 3237 3 3188 3194 3237 3 3188 3194 3237 3 3188 3194 3237 3 3188 3194 3237 2 3189 3247 2 3189 3247 2 3189 3247 2 3189 3247 2 3189 3247 2 3189 3247 3 3189 3195 3238 3 3189 3195 3238 3 3189 3195 3238 3 3189 3195 3238 3 3189 3195 3238 3 3189 3195 3238 2 3190 3248 2 3190 3248 2 3190 3248 2 3190 3248 2 3190 3248 2 3190 3248 3 3190 3196 3239 3 3190 3196 3239 3 3190 3196 3239 3 3190 3196 3239 3 3190 3196 3239 3 3190 3196 3239 2 3191 3250 2 3191 3250 2 3191 3250 2 3191 3250 2 3191 3250 2 3191 3250 3 3191 3197 3241 3 3191 3197 3241 3 3191 3197 3241 3 3191 3197 3241 3 3191 3197 3241 3 3191 3197 3241 3 3192 3198 3225 3 3192 3198 3225 3 3192 3198 3225 3 3192 3198 3225 3 3192 3198 3225 3 3192 3198 3225 3 3193 3199 3226 3 3193 3199 3226 3 3193 3199 3226 3 3193 3199 3226 3 3193 3199 3226 3 3193 3199 3226 3 3194 3200 3227 3 3194 3200 3227 3 3194 3200 3227 3 3194 3200 3227 3 3194 3200 3227 3 3194 3200 3227 3 3195 3201 3233 3 3195 3201 3233 3 3195 3201 3233 3 3195 3201 3233 3 3195 3201 3233 3 3195 3201 3233 3 3202 3231 3232 3 3202 3231 3232 3 3202 3231 3232 3 3202 3231 3232 3 3202 3231 3232 3 3202 3231 3232 2 3202 3224 2 3202 3224 2 3202 3224 2 3202 3224 2 3202 3224 2 3202 3224 3 3203 3228 3230 3 3203 3228 3230 3 3203 3228 3230 3 3203 3228 3230 3 3203 3228 3230 3 3203 3228 3230 3 3204 3208 3218 3 3204 3208 3218 3 3204 3208 3218 3 3204 3208 3218 3 3204 3208 3218 3 3204 3208 3218 3 3205 3209 3219 3 3205 3209 3219 3 3205 3209 3219 3 3205 3209 3219 3 3205 3209 3219 3 3205 3209 3219 2 3206 3207 2 3206 3207 2 3206 3207 2 3206 3207 2 3206 3207 2 3206 3207 3 3206 3210 3220 3 3206 3210 3220 3 3206 3210 3220 3 3206 3210 3220 3 3206 3210 3220 3 3206 3210 3220 3 3207 3211 3221 3 3207 3211 3221 3 3207 3211 3221 3 3207 3211 3221 3 3207 3211 3221 3 3207 3211 3221 2 3208 3214 2 3208 3214 2 3208 3214 2 3208 3214 2 3208 3214 2 3208 3214 2 3209 3215 2 3209 3215 2 3209 3215 2 3209 3215 2 3209 3215 2 3209 3215 2 3210 3216 2 3210 3216 2 3210 3216 2 3210 3216 2 3210 3216 2 3210 3216 2 3211 3217 2 3211 3217 2 3211 3217 2 3211 3217 2 3211 3217 2 3211 3217 1 3223 1 3223 1 3223 1 3223 1 3223 1 3223 1 3229 1 3229 1 3229 1 3229 1 3229 1 3229 4 3252 3269 3423 3425 4 3252 3269 3423 3425 4 3252 3269 3423 3425 4 3252 3269 3423 3425 4 3252 3269 3423 3425 4 3252 3269 3423 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 8 3252 3257 3268 3269 3422 3423 3424 3425 2 3252 3257 2 3252 3257 2 3252 3257 2 3252 3257 2 3252 3257 2 3252 3257 2 3252 3371 2 3252 3371 2 3252 3371 2 3252 3371 2 3252 3371 2 3252 3371 4 3253 3279 3425 3427 4 3253 3279 3425 3427 4 3253 3279 3425 3427 4 3253 3279 3425 3427 4 3253 3279 3425 3427 4 3253 3279 3425 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 11 3253 3257 3258 3278 3279 3318 3319 3424 3425 3426 3427 3 3253 3257 3258 3 3253 3257 3258 3 3253 3257 3258 3 3253 3257 3258 3 3253 3257 3258 3 3253 3257 3258 3 3253 3371 3375 3 3253 3371 3375 3 3253 3371 3375 3 3253 3371 3375 3 3253 3371 3375 3 3253 3371 3375 4 3254 3289 3427 3429 4 3254 3289 3427 3429 4 3254 3289 3427 3429 4 3254 3289 3427 3429 4 3254 3289 3427 3429 4 3254 3289 3427 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 11 3254 3258 3259 3288 3289 3319 3320 3426 3427 3428 3429 3 3254 3258 3259 3 3254 3258 3259 3 3254 3258 3259 3 3254 3258 3259 3 3254 3258 3259 3 3254 3258 3259 3 3254 3374 3375 3 3254 3374 3375 3 3254 3374 3375 3 3254 3374 3375 3 3254 3374 3375 3 3254 3374 3375 4 3255 3299 3429 3431 4 3255 3299 3429 3431 4 3255 3299 3429 3431 4 3255 3299 3429 3431 4 3255 3299 3429 3431 4 3255 3299 3429 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 11 3255 3259 3260 3298 3299 3320 3321 3428 3429 3430 3431 3 3255 3259 3260 3 3255 3259 3260 3 3255 3259 3260 3 3255 3259 3260 3 3255 3259 3260 3 3255 3259 3260 3 3255 3373 3374 3 3255 3373 3374 3 3255 3373 3374 3 3255 3373 3374 3 3255 3373 3374 3 3255 3373 3374 3 3256 3309 3431 3 3256 3309 3431 3 3256 3309 3431 3 3256 3309 3431 3 3256 3309 3431 3 3256 3309 3431 7 3256 3260 3308 3309 3321 3430 3431 7 3256 3260 3308 3309 3321 3430 3431 7 3256 3260 3308 3309 3321 3430 3431 7 3256 3260 3308 3309 3321 3430 3431 7 3256 3260 3308 3309 3321 3430 3431 7 3256 3260 3308 3309 3321 3430 3431 2 3256 3260 2 3256 3260 2 3256 3260 2 3256 3260 2 3256 3260 2 3256 3260 2 3256 3373 2 3256 3373 2 3256 3373 2 3256 3373 2 3256 3373 2 3256 3373 3 3257 3424 3425 3 3257 3424 3425 3 3257 3424 3425 3 3257 3424 3425 3 3257 3424 3425 3 3257 3424 3425 4 3258 3319 3426 3427 4 3258 3319 3426 3427 4 3258 3319 3426 3427 4 3258 3319 3426 3427 4 3258 3319 3426 3427 4 3258 3319 3426 3427 4 3259 3320 3428 3429 4 3259 3320 3428 3429 4 3259 3320 3428 3429 4 3259 3320 3428 3429 4 3259 3320 3428 3429 4 3259 3320 3428 3429 4 3260 3321 3430 3431 4 3260 3321 3430 3431 4 3260 3321 3430 3431 4 3260 3321 3430 3431 4 3260 3321 3430 3431 4 3260 3321 3430 3431 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 10 3261 3262 3263 3335 3336 3341 3342 3408 3409 3410 3 3261 3335 3336 3 3261 3335 3336 3 3261 3335 3336 3 3261 3335 3336 3 3261 3335 3336 3 3261 3335 3336 5 3261 3335 3336 3420 3422 5 3261 3335 3336 3420 3422 5 3261 3335 3336 3420 3422 5 3261 3335 3336 3420 3422 5 3261 3335 3336 3420 3422 5 3261 3335 3336 3420 3422 6 3261 3262 3420 3421 3422 3423 6 3261 3262 3420 3421 3422 3423 6 3261 3262 3420 3421 3422 3423 6 3261 3262 3420 3421 3422 3423 6 3261 3262 3420 3421 3422 3423 6 3261 3262 3420 3421 3422 3423 3 3261 3420 3422 3 3261 3420 3422 3 3261 3420 3422 3 3261 3420 3422 3 3261 3420 3422 3 3261 3420 3422 2 3261 3262 2 3261 3262 2 3261 3262 2 3261 3262 2 3261 3262 2 3261 3262 4 3262 3263 3408 3410 4 3262 3263 3408 3410 4 3262 3263 3408 3410 4 3262 3263 3408 3410 4 3262 3263 3408 3410 4 3262 3263 3408 3410 3 3262 3421 3423 3 3262 3421 3423 3 3262 3421 3423 3 3262 3421 3423 3 3262 3421 3423 3 3262 3421 3423 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 9 3263 3264 3341 3342 3347 3348 3397 3398 3399 4 3263 3264 3397 3399 4 3263 3264 3397 3399 4 3263 3264 3397 3399 4 3263 3264 3397 3399 4 3263 3264 3397 3399 4 3263 3264 3397 3399 3 3263 3341 3342 3 3263 3341 3342 3 3263 3341 3342 3 3263 3341 3342 3 3263 3341 3342 3 3263 3341 3342 3 3264 3347 3348 3 3264 3347 3348 3 3264 3347 3348 3 3264 3347 3348 3 3264 3347 3348 3 3264 3347 3348 4 3265 3266 3383 3384 4 3265 3266 3383 3384 4 3265 3266 3383 3384 4 3265 3266 3383 3384 4 3265 3266 3383 3384 4 3265 3266 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 8 3265 3266 3353 3354 3359 3360 3383 3384 3 3265 3353 3354 3 3265 3353 3354 3 3265 3353 3354 3 3265 3353 3354 3 3265 3353 3354 3 3265 3353 3354 4 3266 3267 3377 3378 4 3266 3267 3377 3378 4 3266 3267 3377 3378 4 3266 3267 3377 3378 4 3266 3267 3377 3378 4 3266 3267 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 8 3266 3267 3359 3360 3365 3366 3377 3378 3 3266 3359 3360 3 3266 3359 3360 3 3266 3359 3360 3 3266 3359 3360 3 3266 3359 3360 3 3266 3359 3360 3 3267 3365 3366 3 3267 3365 3366 3 3267 3365 3366 3 3267 3365 3366 3 3267 3365 3366 3 3267 3365 3366 8 3268 3269 3270 3271 3408 3409 3412 3413 8 3268 3269 3270 3271 3408 3409 3412 3413 8 3268 3269 3270 3271 3408 3409 3412 3413 8 3268 3269 3270 3271 3408 3409 3412 3413 8 3268 3269 3270 3271 3408 3409 3412 3413 8 3268 3269 3270 3271 3408 3409 3412 3413 4 3268 3270 3409 3412 4 3268 3270 3409 3412 4 3268 3270 3409 3412 4 3268 3270 3409 3412 4 3268 3270 3409 3412 4 3268 3270 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 10 3268 3270 3318 3322 3336 3337 3342 3343 3409 3412 4 3268 3318 3336 3337 4 3268 3318 3336 3337 4 3268 3318 3336 3337 4 3268 3318 3336 3337 4 3268 3318 3336 3337 4 3268 3318 3336 3337 6 3268 3318 3336 3337 3422 3424 6 3268 3318 3336 3337 3422 3424 6 3268 3318 3336 3337 3422 3424 6 3268 3318 3336 3337 3422 3424 6 3268 3318 3336 3337 3422 3424 6 3268 3318 3336 3337 3422 3424 3 3268 3422 3424 3 3268 3422 3424 3 3268 3422 3424 3 3268 3422 3424 3 3268 3422 3424 3 3268 3422 3424 2 3268 3269 2 3268 3269 2 3268 3269 2 3268 3269 2 3268 3269 2 3268 3269 4 3269 3271 3408 3413 4 3269 3271 3408 3413 4 3269 3271 3408 3413 4 3269 3271 3408 3413 4 3269 3271 3408 3413 4 3269 3271 3408 3413 8 3270 3271 3272 3273 3397 3398 3401 3402 8 3270 3271 3272 3273 3397 3398 3401 3402 8 3270 3271 3272 3273 3397 3398 3401 3402 8 3270 3271 3272 3273 3397 3398 3401 3402 8 3270 3271 3272 3273 3397 3398 3401 3402 8 3270 3271 3272 3273 3397 3398 3401 3402 4 3270 3272 3398 3401 4 3270 3272 3398 3401 4 3270 3272 3398 3401 4 3270 3272 3398 3401 4 3270 3272 3398 3401 4 3270 3272 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 10 3270 3272 3322 3326 3342 3343 3348 3349 3398 3401 4 3270 3322 3342 3343 4 3270 3322 3342 3343 4 3270 3322 3342 3343 4 3270 3322 3342 3343 4 3270 3322 3342 3343 4 3270 3322 3342 3343 2 3270 3271 2 3270 3271 2 3270 3271 2 3270 3271 2 3270 3271 2 3270 3271 4 3271 3273 3397 3402 4 3271 3273 3397 3402 4 3271 3273 3397 3402 4 3271 3273 3397 3402 4 3271 3273 3397 3402 4 3271 3273 3397 3402 8 3272 3274 3348 3349 3354 3355 3389 3390 8 3272 3274 3348 3349 3354 3355 3389 3390 8 3272 3274 3348 3349 3354 3355 3389 3390 8 3272 3274 3348 3349 3354 3355 3389 3390 8 3272 3274 3348 3349 3354 3355 3389 3390 8 3272 3274 3348 3349 3354 3355 3389 3390 3 3272 3348 3349 3 3272 3348 3349 3 3272 3348 3349 3 3272 3348 3349 3 3272 3348 3349 3 3272 3348 3349 2 3272 3273 2 3272 3273 2 3272 3273 2 3272 3273 2 3272 3273 2 3272 3273 4 3272 3274 3389 3390 4 3272 3274 3389 3390 4 3272 3274 3389 3390 4 3272 3274 3389 3390 4 3272 3274 3389 3390 4 3272 3274 3389 3390 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 10 3274 3275 3276 3330 3354 3355 3360 3361 3384 3385 3 3274 3354 3355 3 3274 3354 3355 3 3274 3354 3355 3 3274 3354 3355 3 3274 3354 3355 3 3274 3354 3355 3 3274 3275 3330 3 3274 3275 3330 3 3274 3275 3330 3 3274 3275 3330 3 3274 3275 3330 3 3274 3275 3330 4 3275 3276 3384 3385 4 3275 3276 3384 3385 4 3275 3276 3384 3385 4 3275 3276 3384 3385 4 3275 3276 3384 3385 4 3275 3276 3384 3385 4 3276 3277 3378 3379 4 3276 3277 3378 3379 4 3276 3277 3378 3379 4 3276 3277 3378 3379 4 3276 3277 3378 3379 4 3276 3277 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 8 3276 3277 3360 3361 3366 3367 3378 3379 3 3276 3360 3361 3 3276 3360 3361 3 3276 3360 3361 3 3276 3360 3361 3 3276 3360 3361 3 3276 3360 3361 3 3277 3366 3367 3 3277 3366 3367 3 3277 3366 3367 3 3277 3366 3367 3 3277 3366 3367 3 3277 3366 3367 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 12 3278 3279 3280 3281 3318 3319 3322 3323 3412 3413 3414 3415 4 3278 3280 3412 3414 4 3278 3280 3412 3414 4 3278 3280 3412 3414 4 3278 3280 3412 3414 4 3278 3280 3412 3414 4 3278 3280 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 8 3278 3280 3337 3338 3343 3344 3412 3414 3 3278 3337 3338 3 3278 3337 3338 3 3278 3337 3338 3 3278 3337 3338 3 3278 3337 3338 3 3278 3337 3338 5 3278 3337 3338 3424 3426 5 3278 3337 3338 3424 3426 5 3278 3337 3338 3424 3426 5 3278 3337 3338 3424 3426 5 3278 3337 3338 3424 3426 5 3278 3337 3338 3424 3426 3 3278 3424 3426 3 3278 3424 3426 3 3278 3424 3426 3 3278 3424 3426 3 3278 3424 3426 3 3278 3424 3426 4 3278 3279 3318 3319 4 3278 3279 3318 3319 4 3278 3279 3318 3319 4 3278 3279 3318 3319 4 3278 3279 3318 3319 4 3278 3279 3318 3319 4 3279 3281 3413 3415 4 3279 3281 3413 3415 4 3279 3281 3413 3415 4 3279 3281 3413 3415 4 3279 3281 3413 3415 4 3279 3281 3413 3415 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 12 3280 3281 3282 3283 3322 3323 3326 3327 3401 3402 3403 3404 4 3280 3282 3401 3403 4 3280 3282 3401 3403 4 3280 3282 3401 3403 4 3280 3282 3401 3403 4 3280 3282 3401 3403 4 3280 3282 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 8 3280 3282 3343 3344 3349 3350 3401 3403 3 3280 3343 3344 3 3280 3343 3344 3 3280 3343 3344 3 3280 3343 3344 3 3280 3343 3344 3 3280 3343 3344 4 3280 3281 3322 3323 4 3280 3281 3322 3323 4 3280 3281 3322 3323 4 3280 3281 3322 3323 4 3280 3281 3322 3323 4 3280 3281 3322 3323 4 3281 3283 3402 3404 4 3281 3283 3402 3404 4 3281 3283 3402 3404 4 3281 3283 3402 3404 4 3281 3283 3402 3404 4 3281 3283 3402 3404 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 12 3282 3283 3284 3285 3326 3327 3330 3331 3388 3389 3392 3393 4 3282 3284 3389 3392 4 3282 3284 3389 3392 4 3282 3284 3389 3392 4 3282 3284 3389 3392 4 3282 3284 3389 3392 4 3282 3284 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 8 3282 3284 3349 3350 3355 3356 3389 3392 3 3282 3349 3350 3 3282 3349 3350 3 3282 3349 3350 3 3282 3349 3350 3 3282 3349 3350 3 3282 3349 3350 4 3282 3283 3326 3327 4 3282 3283 3326 3327 4 3282 3283 3326 3327 4 3282 3283 3326 3327 4 3282 3283 3326 3327 4 3282 3283 3326 3327 4 3283 3285 3388 3393 4 3283 3285 3388 3393 4 3283 3285 3388 3393 4 3283 3285 3388 3393 4 3283 3285 3388 3393 4 3283 3285 3388 3393 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 11 3284 3285 3286 3330 3331 3355 3356 3361 3362 3385 3386 3 3284 3355 3356 3 3284 3355 3356 3 3284 3355 3356 3 3284 3355 3356 3 3284 3355 3356 3 3284 3355 3356 4 3284 3285 3330 3331 4 3284 3285 3330 3331 4 3284 3285 3330 3331 4 3284 3285 3330 3331 4 3284 3285 3330 3331 4 3284 3285 3330 3331 4 3285 3286 3385 3386 4 3285 3286 3385 3386 4 3285 3286 3385 3386 4 3285 3286 3385 3386 4 3285 3286 3385 3386 4 3285 3286 3385 3386 4 3286 3287 3379 3380 4 3286 3287 3379 3380 4 3286 3287 3379 3380 4 3286 3287 3379 3380 4 3286 3287 3379 3380 4 3286 3287 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 8 3286 3287 3361 3362 3367 3368 3379 3380 3 3286 3361 3362 3 3286 3361 3362 3 3286 3361 3362 3 3286 3361 3362 3 3286 3361 3362 3 3286 3361 3362 3 3287 3367 3368 3 3287 3367 3368 3 3287 3367 3368 3 3287 3367 3368 3 3287 3367 3368 3 3287 3367 3368 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 12 3288 3289 3290 3291 3319 3320 3323 3324 3414 3415 3416 3417 4 3288 3290 3414 3416 4 3288 3290 3414 3416 4 3288 3290 3414 3416 4 3288 3290 3414 3416 4 3288 3290 3414 3416 4 3288 3290 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 8 3288 3290 3338 3339 3344 3345 3414 3416 3 3288 3338 3339 3 3288 3338 3339 3 3288 3338 3339 3 3288 3338 3339 3 3288 3338 3339 3 3288 3338 3339 5 3288 3338 3339 3426 3428 5 3288 3338 3339 3426 3428 5 3288 3338 3339 3426 3428 5 3288 3338 3339 3426 3428 5 3288 3338 3339 3426 3428 5 3288 3338 3339 3426 3428 3 3288 3426 3428 3 3288 3426 3428 3 3288 3426 3428 3 3288 3426 3428 3 3288 3426 3428 3 3288 3426 3428 4 3288 3289 3319 3320 4 3288 3289 3319 3320 4 3288 3289 3319 3320 4 3288 3289 3319 3320 4 3288 3289 3319 3320 4 3288 3289 3319 3320 4 3289 3291 3415 3417 4 3289 3291 3415 3417 4 3289 3291 3415 3417 4 3289 3291 3415 3417 4 3289 3291 3415 3417 4 3289 3291 3415 3417 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 12 3290 3291 3292 3293 3323 3324 3327 3328 3403 3404 3405 3406 4 3290 3292 3403 3405 4 3290 3292 3403 3405 4 3290 3292 3403 3405 4 3290 3292 3403 3405 4 3290 3292 3403 3405 4 3290 3292 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 8 3290 3292 3344 3345 3350 3351 3403 3405 3 3290 3344 3345 3 3290 3344 3345 3 3290 3344 3345 3 3290 3344 3345 3 3290 3344 3345 3 3290 3344 3345 4 3290 3291 3323 3324 4 3290 3291 3323 3324 4 3290 3291 3323 3324 4 3290 3291 3323 3324 4 3290 3291 3323 3324 4 3290 3291 3323 3324 4 3291 3293 3404 3406 4 3291 3293 3404 3406 4 3291 3293 3404 3406 4 3291 3293 3404 3406 4 3291 3293 3404 3406 4 3291 3293 3404 3406 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 12 3292 3293 3294 3295 3327 3328 3331 3332 3392 3393 3394 3395 4 3292 3294 3392 3394 4 3292 3294 3392 3394 4 3292 3294 3392 3394 4 3292 3294 3392 3394 4 3292 3294 3392 3394 4 3292 3294 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 8 3292 3294 3350 3351 3356 3357 3392 3394 3 3292 3350 3351 3 3292 3350 3351 3 3292 3350 3351 3 3292 3350 3351 3 3292 3350 3351 3 3292 3350 3351 4 3292 3293 3327 3328 4 3292 3293 3327 3328 4 3292 3293 3327 3328 4 3292 3293 3327 3328 4 3292 3293 3327 3328 4 3292 3293 3327 3328 4 3293 3295 3393 3395 4 3293 3295 3393 3395 4 3293 3295 3393 3395 4 3293 3295 3393 3395 4 3293 3295 3393 3395 4 3293 3295 3393 3395 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 11 3294 3295 3296 3331 3332 3356 3357 3362 3363 3386 3387 3 3294 3356 3357 3 3294 3356 3357 3 3294 3356 3357 3 3294 3356 3357 3 3294 3356 3357 3 3294 3356 3357 4 3294 3295 3331 3332 4 3294 3295 3331 3332 4 3294 3295 3331 3332 4 3294 3295 3331 3332 4 3294 3295 3331 3332 4 3294 3295 3331 3332 4 3295 3296 3386 3387 4 3295 3296 3386 3387 4 3295 3296 3386 3387 4 3295 3296 3386 3387 4 3295 3296 3386 3387 4 3295 3296 3386 3387 4 3296 3297 3380 3381 4 3296 3297 3380 3381 4 3296 3297 3380 3381 4 3296 3297 3380 3381 4 3296 3297 3380 3381 4 3296 3297 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 8 3296 3297 3362 3363 3368 3369 3380 3381 3 3296 3362 3363 3 3296 3362 3363 3 3296 3362 3363 3 3296 3362 3363 3 3296 3362 3363 3 3296 3362 3363 3 3297 3368 3369 3 3297 3368 3369 3 3297 3368 3369 3 3297 3368 3369 3 3297 3368 3369 3 3297 3368 3369 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 12 3298 3299 3300 3301 3320 3321 3324 3325 3416 3417 3418 3419 4 3298 3300 3416 3418 4 3298 3300 3416 3418 4 3298 3300 3416 3418 4 3298 3300 3416 3418 4 3298 3300 3416 3418 4 3298 3300 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 8 3298 3300 3339 3340 3345 3346 3416 3418 3 3298 3339 3340 3 3298 3339 3340 3 3298 3339 3340 3 3298 3339 3340 3 3298 3339 3340 3 3298 3339 3340 5 3298 3339 3340 3428 3430 5 3298 3339 3340 3428 3430 5 3298 3339 3340 3428 3430 5 3298 3339 3340 3428 3430 5 3298 3339 3340 3428 3430 5 3298 3339 3340 3428 3430 3 3298 3428 3430 3 3298 3428 3430 3 3298 3428 3430 3 3298 3428 3430 3 3298 3428 3430 3 3298 3428 3430 4 3298 3299 3320 3321 4 3298 3299 3320 3321 4 3298 3299 3320 3321 4 3298 3299 3320 3321 4 3298 3299 3320 3321 4 3298 3299 3320 3321 4 3299 3301 3417 3419 4 3299 3301 3417 3419 4 3299 3301 3417 3419 4 3299 3301 3417 3419 4 3299 3301 3417 3419 4 3299 3301 3417 3419 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 12 3300 3301 3302 3303 3324 3325 3328 3329 3405 3406 3407 3411 4 3300 3302 3405 3407 4 3300 3302 3405 3407 4 3300 3302 3405 3407 4 3300 3302 3405 3407 4 3300 3302 3405 3407 4 3300 3302 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 8 3300 3302 3345 3346 3351 3352 3405 3407 3 3300 3345 3346 3 3300 3345 3346 3 3300 3345 3346 3 3300 3345 3346 3 3300 3345 3346 3 3300 3345 3346 4 3300 3301 3324 3325 4 3300 3301 3324 3325 4 3300 3301 3324 3325 4 3300 3301 3324 3325 4 3300 3301 3324 3325 4 3300 3301 3324 3325 4 3301 3303 3406 3411 4 3301 3303 3406 3411 4 3301 3303 3406 3411 4 3301 3303 3406 3411 4 3301 3303 3406 3411 4 3301 3303 3406 3411 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 12 3302 3303 3304 3305 3328 3329 3332 3333 3394 3395 3396 3400 4 3302 3304 3394 3396 4 3302 3304 3394 3396 4 3302 3304 3394 3396 4 3302 3304 3394 3396 4 3302 3304 3394 3396 4 3302 3304 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 8 3302 3304 3351 3352 3357 3358 3394 3396 3 3302 3351 3352 3 3302 3351 3352 3 3302 3351 3352 3 3302 3351 3352 3 3302 3351 3352 3 3302 3351 3352 4 3302 3303 3328 3329 4 3302 3303 3328 3329 4 3302 3303 3328 3329 4 3302 3303 3328 3329 4 3302 3303 3328 3329 4 3302 3303 3328 3329 4 3303 3305 3395 3400 4 3303 3305 3395 3400 4 3303 3305 3395 3400 4 3303 3305 3395 3400 4 3303 3305 3395 3400 4 3303 3305 3395 3400 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 11 3304 3305 3306 3332 3333 3357 3358 3363 3364 3387 3391 3 3304 3357 3358 3 3304 3357 3358 3 3304 3357 3358 3 3304 3357 3358 3 3304 3357 3358 3 3304 3357 3358 4 3304 3305 3332 3333 4 3304 3305 3332 3333 4 3304 3305 3332 3333 4 3304 3305 3332 3333 4 3304 3305 3332 3333 4 3304 3305 3332 3333 4 3305 3306 3387 3391 4 3305 3306 3387 3391 4 3305 3306 3387 3391 4 3305 3306 3387 3391 4 3305 3306 3387 3391 4 3305 3306 3387 3391 4 3306 3307 3381 3382 4 3306 3307 3381 3382 4 3306 3307 3381 3382 4 3306 3307 3381 3382 4 3306 3307 3381 3382 4 3306 3307 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 8 3306 3307 3363 3364 3369 3370 3381 3382 3 3306 3363 3364 3 3306 3363 3364 3 3306 3363 3364 3 3306 3363 3364 3 3306 3363 3364 3 3306 3363 3364 3 3307 3372 3376 3 3307 3372 3376 3 3307 3372 3376 3 3307 3372 3376 3 3307 3372 3376 3 3307 3372 3376 5 3307 3369 3370 3372 3376 5 3307 3369 3370 3372 3376 5 3307 3369 3370 3372 3376 5 3307 3369 3370 3372 3376 5 3307 3369 3370 3372 3376 5 3307 3369 3370 3372 3376 3 3307 3369 3370 3 3307 3369 3370 3 3307 3369 3370 3 3307 3369 3370 3 3307 3369 3370 3 3307 3369 3370 2 3308 3430 2 3308 3430 2 3308 3430 2 3308 3430 2 3308 3430 2 3308 3430 3 3308 3309 3321 3 3308 3309 3321 3 3308 3309 3321 3 3308 3309 3321 3 3308 3309 3321 3 3308 3309 3321 3 3311 3313 3411 3 3311 3313 3411 3 3311 3313 3411 3 3311 3313 3411 3 3311 3313 3411 3 3311 3313 3411 3 3313 3315 3400 3 3313 3315 3400 3 3313 3315 3400 3 3313 3315 3400 3 3313 3315 3400 3 3313 3315 3400 3 3315 3316 3391 3 3315 3316 3391 3 3315 3316 3391 3 3315 3316 3391 3 3315 3316 3391 3 3315 3316 3391 2 3318 3322 2 3318 3322 2 3318 3322 2 3318 3322 2 3318 3322 2 3318 3322 1 3318 1 3318 1 3318 1 3318 1 3318 1 3318 4 3319 3323 3414 3415 4 3319 3323 3414 3415 4 3319 3323 3414 3415 4 3319 3323 3414 3415 4 3319 3323 3414 3415 4 3319 3323 3414 3415 4 3320 3324 3416 3417 4 3320 3324 3416 3417 4 3320 3324 3416 3417 4 3320 3324 3416 3417 4 3320 3324 3416 3417 4 3320 3324 3416 3417 4 3321 3325 3418 3419 4 3321 3325 3418 3419 4 3321 3325 3418 3419 4 3321 3325 3418 3419 4 3321 3325 3418 3419 4 3321 3325 3418 3419 2 3322 3326 2 3322 3326 2 3322 3326 2 3322 3326 2 3322 3326 2 3322 3326 4 3323 3327 3403 3404 4 3323 3327 3403 3404 4 3323 3327 3403 3404 4 3323 3327 3403 3404 4 3323 3327 3403 3404 4 3323 3327 3403 3404 4 3324 3328 3405 3406 4 3324 3328 3405 3406 4 3324 3328 3405 3406 4 3324 3328 3405 3406 4 3324 3328 3405 3406 4 3324 3328 3405 3406 4 3325 3329 3407 3411 4 3325 3329 3407 3411 4 3325 3329 3407 3411 4 3325 3329 3407 3411 4 3325 3329 3407 3411 4 3325 3329 3407 3411 4 3326 3330 3388 3389 4 3326 3330 3388 3389 4 3326 3330 3388 3389 4 3326 3330 3388 3389 4 3326 3330 3388 3389 4 3326 3330 3388 3389 1 3326 1 3326 1 3326 1 3326 1 3326 1 3326 4 3327 3331 3392 3393 4 3327 3331 3392 3393 4 3327 3331 3392 3393 4 3327 3331 3392 3393 4 3327 3331 3392 3393 4 3327 3331 3392 3393 4 3328 3332 3394 3395 4 3328 3332 3394 3395 4 3328 3332 3394 3395 4 3328 3332 3394 3395 4 3328 3332 3394 3395 4 3328 3332 3394 3395 4 3329 3333 3396 3400 4 3329 3333 3396 3400 4 3329 3333 3396 3400 4 3329 3333 3396 3400 4 3329 3333 3396 3400 4 3329 3333 3396 3400 4 3330 3355 3361 3385 4 3330 3355 3361 3385 4 3330 3355 3361 3385 4 3330 3355 3361 3385 4 3330 3355 3361 3385 4 3330 3355 3361 3385 4 3331 3356 3362 3386 4 3331 3356 3362 3386 4 3331 3356 3362 3386 4 3331 3356 3362 3386 4 3331 3356 3362 3386 4 3331 3356 3362 3386 4 3332 3357 3363 3387 4 3332 3357 3363 3387 4 3332 3357 3363 3387 4 3332 3357 3363 3387 4 3332 3357 3363 3387 4 3332 3357 3363 3387 4 3333 3358 3364 3391 4 3333 3358 3364 3391 4 3333 3358 3364 3391 4 3333 3358 3364 3391 4 3333 3358 3364 3391 4 3333 3358 3364 3391 2 3334 3335 2 3334 3335 2 3334 3335 2 3334 3335 2 3334 3335 2 3334 3335 4 3334 3335 3420 3421 4 3334 3335 3420 3421 4 3334 3335 3420 3421 4 3334 3335 3420 3421 4 3334 3335 3420 3421 4 3334 3335 3420 3421 2 3334 3421 2 3334 3421 2 3334 3421 2 3334 3421 2 3334 3421 2 3334 3421 3 3335 3341 3410 3 3335 3341 3410 3 3335 3341 3410 3 3335 3341 3410 3 3335 3341 3410 3 3335 3341 3410 2 3335 3420 2 3335 3420 2 3335 3420 2 3335 3420 2 3335 3420 2 3335 3420 3 3336 3342 3409 3 3336 3342 3409 3 3336 3342 3409 3 3336 3342 3409 3 3336 3342 3409 3 3336 3342 3409 2 3336 3422 2 3336 3422 2 3336 3422 2 3336 3422 2 3336 3422 2 3336 3422 3 3337 3343 3412 3 3337 3343 3412 3 3337 3343 3412 3 3337 3343 3412 3 3337 3343 3412 3 3337 3343 3412 2 3337 3424 2 3337 3424 2 3337 3424 2 3337 3424 2 3337 3424 2 3337 3424 3 3338 3344 3414 3 3338 3344 3414 3 3338 3344 3414 3 3338 3344 3414 3 3338 3344 3414 3 3338 3344 3414 2 3338 3426 2 3338 3426 2 3338 3426 2 3338 3426 2 3338 3426 2 3338 3426 3 3339 3345 3416 3 3339 3345 3416 3 3339 3345 3416 3 3339 3345 3416 3 3339 3345 3416 3 3339 3345 3416 2 3339 3428 2 3339 3428 2 3339 3428 2 3339 3428 2 3339 3428 2 3339 3428 3 3340 3346 3418 3 3340 3346 3418 3 3340 3346 3418 3 3340 3346 3418 3 3340 3346 3418 3 3340 3346 3418 2 3340 3430 2 3340 3430 2 3340 3430 2 3340 3430 2 3340 3430 2 3340 3430 3 3341 3347 3399 3 3341 3347 3399 3 3341 3347 3399 3 3341 3347 3399 3 3341 3347 3399 3 3341 3347 3399 3 3342 3348 3398 3 3342 3348 3398 3 3342 3348 3398 3 3342 3348 3398 3 3342 3348 3398 3 3342 3348 3398 3 3343 3349 3401 3 3343 3349 3401 3 3343 3349 3401 3 3343 3349 3401 3 3343 3349 3401 3 3343 3349 3401 3 3344 3350 3403 3 3344 3350 3403 3 3344 3350 3403 3 3344 3350 3403 3 3344 3350 3403 3 3344 3350 3403 3 3345 3351 3405 3 3345 3351 3405 3 3345 3351 3405 3 3345 3351 3405 3 3345 3351 3405 3 3345 3351 3405 3 3346 3352 3407 3 3346 3352 3407 3 3346 3352 3407 3 3346 3352 3407 3 3346 3352 3407 3 3346 3352 3407 3 3348 3354 3390 3 3348 3354 3390 3 3348 3354 3390 3 3348 3354 3390 3 3348 3354 3390 3 3348 3354 3390 3 3349 3355 3389 3 3349 3355 3389 3 3349 3355 3389 3 3349 3355 3389 3 3349 3355 3389 3 3349 3355 3389 3 3350 3356 3392 3 3350 3356 3392 3 3350 3356 3392 3 3350 3356 3392 3 3350 3356 3392 3 3350 3356 3392 3 3351 3357 3394 3 3351 3357 3394 3 3351 3357 3394 3 3351 3357 3394 3 3351 3357 3394 3 3351 3357 3394 3 3352 3358 3396 3 3352 3358 3396 3 3352 3358 3396 3 3352 3358 3396 3 3352 3358 3396 3 3352 3358 3396 3 3353 3359 3383 3 3353 3359 3383 3 3353 3359 3383 3 3353 3359 3383 3 3353 3359 3383 3 3353 3359 3383 3 3354 3360 3384 3 3354 3360 3384 3 3354 3360 3384 3 3354 3360 3384 3 3354 3360 3384 3 3354 3360 3384 3 3359 3365 3377 3 3359 3365 3377 3 3359 3365 3377 3 3359 3365 3377 3 3359 3365 3377 3 3359 3365 3377 3 3360 3366 3378 3 3360 3366 3378 3 3360 3366 3378 3 3360 3366 3378 3 3360 3366 3378 3 3360 3366 3378 3 3361 3367 3379 3 3361 3367 3379 3 3361 3367 3379 3 3361 3367 3379 3 3361 3367 3379 3 3361 3367 3379 3 3362 3368 3380 3 3362 3368 3380 3 3362 3368 3380 3 3362 3368 3380 3 3362 3368 3380 3 3362 3368 3380 3 3363 3369 3381 3 3363 3369 3381 3 3363 3369 3381 3 3363 3369 3381 3 3363 3369 3381 3 3363 3369 3381 3 3364 3370 3382 3 3364 3370 3382 3 3364 3370 3382 3 3364 3370 3382 3 3364 3370 3382 3 3364 3370 3382 2 3369 3372 2 3369 3372 2 3369 3372 2 3369 3372 2 3369 3372 2 3369 3372 2 3370 3376 2 3370 3376 2 3370 3376 2 3370 3376 2 3370 3376 2 3370 3376 2 3397 3398 2 3397 3398 2 3397 3398 2 3397 3398 2 3397 3398 2 3397 3398 2 3401 3402 2 3401 3402 2 3401 3402 2 3401 3402 2 3401 3402 2 3401 3402 2 3408 3409 2 3408 3409 2 3408 3409 2 3408 3409 2 3408 3409 2 3408 3409 2 3412 3413 2 3412 3413 2 3412 3413 2 3412 3413 2 3412 3413 2 3412 3413 2 3420 3421 2 3420 3421 2 3420 3421 2 3420 3421 2 3420 3421 2 3420 3421 2 3422 3423 2 3422 3423 2 3422 3423 2 3422 3423 2 3422 3423 2 3422 3423 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 18 13 14 15 16 17 18 31 32 33 34 35 36 37 38 39 40 41 42 18 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 18 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 18 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 18 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 18 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 18 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 18 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 18 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 18 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 18 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 18 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 18 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 18 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 18 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 18 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 18 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 18 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 18 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 18 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 18 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 18 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 18 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 18 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 18 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 18 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 18 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 18 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 18 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 18 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 18 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 18 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 18 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 18 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 18 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 18 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 18 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 18 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 18 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 18 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 18 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 18 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 18 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 18 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 18 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 18 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 18 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 18 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 18 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 18 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 12 637 638 639 640 641 642 643 644 645 646 647 648 12 649 650 651 652 653 654 655 656 657 658 659 660 12 661 662 663 664 665 666 667 668 669 670 671 672 12 673 674 675 676 677 678 679 680 681 682 683 684 12 685 686 687 688 689 690 691 692 693 694 695 696 12 697 698 699 700 701 702 703 704 705 706 707 708 12 643 644 645 646 647 648 709 710 711 712 713 714 12 655 656 657 658 659 660 715 716 717 718 719 720 12 667 668 669 670 671 672 721 722 723 724 725 726 12 679 680 681 682 683 684 727 728 729 730 731 732 12 691 692 693 694 695 696 733 734 735 736 737 738 12 703 704 705 706 707 708 739 740 741 742 743 744 12 709 710 711 712 713 714 745 746 747 748 749 750 12 715 716 717 718 719 720 751 752 753 754 755 756 12 721 722 723 724 725 726 757 758 759 760 761 762 12 727 728 729 730 731 732 763 764 765 766 767 768 12 733 734 735 736 737 738 769 770 771 772 773 774 12 739 740 741 742 743 744 775 776 777 778 779 780 12 745 746 747 748 749 750 781 782 783 784 785 786 12 751 752 753 754 755 756 787 788 789 790 791 792 12 757 758 759 760 761 762 793 794 795 796 797 798 12 763 764 765 766 767 768 799 800 801 802 803 804 12 769 770 771 772 773 774 805 806 807 808 809 810 12 775 776 777 778 779 780 811 812 813 814 815 816 12 817 818 819 820 821 822 823 824 825 826 827 828 12 829 830 831 832 833 834 835 836 837 838 839 840 12 841 842 843 844 845 846 847 848 849 850 851 852 12 853 854 855 856 857 858 859 860 861 862 863 864 12 865 866 867 868 869 870 871 872 873 874 875 876 12 877 878 879 880 881 882 883 884 885 886 887 888 12 889 890 891 892 893 894 817 818 819 820 821 822 12 895 896 897 898 899 900 829 830 831 832 833 834 12 901 902 903 904 905 906 841 842 843 844 845 846 12 907 908 909 910 911 912 853 854 855 856 857 858 12 913 914 915 916 917 918 865 866 867 868 869 870 12 919 920 921 922 923 924 877 878 879 880 881 882 12 925 926 927 928 929 930 889 890 891 892 893 894 12 931 932 933 934 935 936 895 896 897 898 899 900 12 937 938 939 940 941 942 901 902 903 904 905 906 12 943 944 945 946 947 948 907 908 909 910 911 912 12 949 950 951 952 953 954 913 914 915 916 917 918 12 955 956 957 958 959 960 919 920 921 922 923 924 12 961 962 963 964 965 966 925 926 927 928 929 930 12 967 968 969 970 971 972 931 932 933 934 935 936 12 973 974 975 976 977 978 937 938 939 940 941 942 12 979 980 981 982 983 984 943 944 945 946 947 948 12 985 986 987 988 989 990 949 950 951 952 953 954 12 991 992 993 994 995 996 955 956 957 958 959 960 18 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 18 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 997 998 999 1000 1001 1002 18 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1015 1016 1017 1018 1019 1020 18 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1027 1028 1029 1030 1031 1032 18 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1039 1040 1041 1042 1043 1044 18 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1051 1052 1053 1054 1055 1056 18 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1063 1064 1065 1066 1067 1068 18 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1075 1076 1077 1078 1079 1080 18 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1087 1088 1089 1090 1091 1092 18 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1099 1100 1101 1102 1103 1104 18 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1111 1112 1113 1114 1115 1116 18 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1123 1124 1125 1126 1127 1128 18 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1135 1136 1137 1138 1139 1140 18 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1147 1148 1149 1150 1151 1152 18 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1159 1160 1161 1162 1163 1164 18 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1171 1172 1173 1174 1175 1176 18 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1183 1184 1185 1186 1187 1188 18 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1195 1196 1197 1198 1199 1200 18 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1207 1208 1209 1210 1211 1212 18 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1219 1220 1221 1222 1223 1224 18 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1231 1232 1233 1234 1235 1236 18 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1243 1244 1245 1246 1247 1248 18 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1255 1256 1257 1258 1259 1260 18 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1267 1268 1269 1270 1271 1272 18 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1279 1280 1281 1282 1283 1284 18 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1291 1292 1293 1294 1295 1296 18 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1303 1304 1305 1306 1307 1308 18 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1315 1316 1317 1318 1319 1320 18 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1327 1328 1329 1330 1331 1332 18 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1339 1340 1341 1342 1343 1344 18 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1351 1352 1353 1354 1355 1356 18 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1363 1364 1365 1366 1367 1368 18 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1375 1376 1377 1378 1379 1380 18 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1387 1388 1389 1390 1391 1392 18 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1399 1400 1401 1402 1403 1404 18 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1411 1412 1413 1414 1415 1416 18 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1423 1424 1425 1426 1427 1428 18 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1435 1436 1437 1438 1439 1440 18 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1447 1448 1449 1450 1451 1452 18 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1459 1460 1461 1462 1463 1464 18 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1471 1472 1473 1474 1475 1476 18 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1483 1484 1485 1486 1487 1488 18 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1495 1496 1497 1498 1499 1500 18 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1507 1508 1509 1510 1511 1512 18 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1519 1520 1521 1522 1523 1524 18 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1531 1532 1533 1534 1535 1536 18 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1543 1544 1545 1546 1547 1548 18 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1555 1556 1557 1558 1559 1560 18 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 18 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1579 1580 1581 1582 1583 1584 18 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 18 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1597 1598 1599 1600 1601 1602 18 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 18 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 18 1633 1634 1635 1636 1637 1638 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 18 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 18 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 18 1645 1646 1647 1648 1649 1650 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 18 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 18 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 18 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 48 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1783 1784 1785 1786 1787 1788 1777 1778 1779 1780 1781 1782 1789 1790 1791 1792 1793 1794 48 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1771 1772 1773 1774 1775 1776 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1813 1814 1815 1816 1817 1818 1807 1808 1809 1810 1811 1812 1819 1820 1821 1822 1823 1824 48 1759 1760 1761 1762 1763 1764 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1771 1772 1773 1774 1775 1776 1765 1766 1767 1768 1769 1770 48 1771 1772 1773 1774 1775 1776 1849 1850 1851 1852 1853 1854 1843 1844 1845 1846 1847 1848 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1801 1802 1803 1804 1805 1806 1795 1796 1797 1798 1799 1800 48 1831 1832 1833 1834 1835 1836 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1843 1844 1845 1846 1847 1848 1837 1838 1839 1840 1841 1842 48 1843 1844 1845 1846 1847 1848 1897 1898 1899 1900 1901 1902 1891 1892 1893 1894 1895 1896 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1861 1862 1863 1864 1865 1866 1855 1856 1857 1858 1859 1860 48 1879 1880 1881 1882 1883 1884 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1891 1892 1893 1894 1895 1896 1885 1886 1887 1888 1889 1890 48 1891 1892 1893 1894 1895 1896 1945 1946 1947 1948 1949 1950 1939 1940 1941 1942 1943 1944 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1909 1910 1911 1912 1913 1914 1903 1904 1905 1906 1907 1908 48 1927 1928 1929 1930 1931 1932 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1939 1940 1941 1942 1943 1944 1933 1934 1935 1936 1937 1938 48 1939 1940 1941 1942 1943 1944 1993 1994 1995 1996 1997 1998 1987 1988 1989 1990 1991 1992 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 1957 1958 1959 1960 1961 1962 1951 1952 1953 1954 1955 1956 48 1975 1976 1977 1978 1979 1980 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 1987 1988 1989 1990 1991 1992 1981 1982 1983 1984 1985 1986 36 2005 2006 2007 2008 2009 2010 2035 2036 2037 2038 2039 2040 1987 1988 1989 1990 1991 1992 2047 2048 2049 2050 2051 2052 2041 2042 2043 2044 2045 2046 1999 2000 2001 2002 2003 2004 48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2089 2090 2091 2092 2093 2094 2083 2084 2085 2086 2087 2088 2095 2096 2097 2098 2099 2100 48 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2077 2078 2079 2080 2081 2082 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2119 2120 2121 2122 2123 2124 2113 2114 2115 2116 2117 2118 2125 2126 2127 2128 2129 2130 48 2065 2066 2067 2068 2069 2070 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2077 2078 2079 2080 2081 2082 2071 2072 2073 2074 2075 2076 48 2077 2078 2079 2080 2081 2082 2155 2156 2157 2158 2159 2160 2149 2150 2151 2152 2153 2154 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2107 2108 2109 2110 2111 2112 2101 2102 2103 2104 2105 2106 48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2149 2150 2151 2152 2153 2154 2143 2144 2145 2146 2147 2148 48 2149 2150 2151 2152 2153 2154 2203 2204 2205 2206 2207 2208 2197 2198 2199 2200 2201 2202 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2167 2168 2169 2170 2171 2172 2161 2162 2163 2164 2165 2166 48 2185 2186 2187 2188 2189 2190 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2197 2198 2199 2200 2201 2202 2191 2192 2193 2194 2195 2196 48 2197 2198 2199 2200 2201 2202 2251 2252 2253 2254 2255 2256 2245 2246 2247 2248 2249 2250 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2215 2216 2217 2218 2219 2220 2209 2210 2211 2212 2213 2214 48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2311 2312 2313 2314 2315 2316 2305 2306 2307 2308 2309 2310 2317 2318 2319 2320 2321 2322 34 2335 2336 2337 2338 2339 2340 2347 2348 2349 2350 2323 2324 2325 2326 2327 2328 2341 2342 2343 2344 2345 2346 2351 2352 2353 2354 2355 2356 2329 2330 2331 2332 2333 2334 36 2263 2264 2265 2266 2267 2268 2335 2336 2337 2338 2339 2340 2245 2246 2247 2248 2249 2250 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2257 2258 2259 2260 2261 2262 48 2233 2234 2235 2236 2237 2238 2369 2370 2371 2372 2373 2374 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2363 2364 2365 2366 2367 2368 2245 2246 2247 2248 2249 2250 2239 2240 2241 2242 2243 2244 48 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2299 2300 2301 2302 2303 2304 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2393 2394 2395 2396 2397 2398 2387 2388 2389 2390 2391 2392 2399 2400 2401 2402 2403 2404 48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2299 2300 2301 2302 2303 2304 2293 2294 2295 2296 2297 2298 48 2299 2300 2301 2302 2303 2304 2429 2430 2431 2432 2433 2434 2423 2424 2425 2426 2427 2428 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2381 2382 2383 2384 2385 2386 2375 2376 2377 2378 2379 2380 48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2423 2424 2425 2426 2427 2428 2417 2418 2419 2420 2421 2422 48 2423 2424 2425 2426 2427 2428 2477 2478 2479 2480 2481 2482 2471 2472 2473 2474 2475 2476 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2441 2442 2443 2444 2445 2446 2435 2436 2437 2438 2439 2440 48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2471 2472 2473 2474 2475 2476 2465 2466 2467 2468 2469 2470 48 2471 2472 2473 2474 2475 2476 2525 2526 2527 2528 2529 2530 2519 2520 2521 2522 2523 2524 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2489 2490 2491 2492 2493 2494 2483 2484 2485 2486 2487 2488 48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2585 2586 2587 2588 2589 2590 2579 2580 2581 2582 2583 2584 2591 2592 2593 2594 2595 2596 36 2597 2598 2599 2600 2601 2602 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2627 2628 2629 2630 2631 2632 2603 2604 2605 2606 2607 2608 36 2537 2538 2539 2540 2541 2542 2597 2598 2599 2600 2601 2602 2519 2520 2521 2522 2523 2524 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2531 2532 2533 2534 2535 2536 48 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2639 2640 2641 2642 2643 2644 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 48 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2573 2574 2575 2576 2577 2578 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2669 2670 2671 2672 2673 2674 2663 2664 2665 2666 2667 2668 2675 2676 2677 2678 2679 2680 48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2573 2574 2575 2576 2577 2578 2567 2568 2569 2570 2571 2572 48 2573 2574 2575 2576 2577 2578 2705 2706 2707 2708 2709 2710 2699 2700 2701 2702 2703 2704 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2657 2658 2659 2660 2661 2662 2651 2652 2653 2654 2655 2656 48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2699 2700 2701 2702 2703 2704 2693 2694 2695 2696 2697 2698 48 2699 2700 2701 2702 2703 2704 2753 2754 2755 2756 2757 2758 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2717 2718 2719 2720 2721 2722 2711 2712 2713 2714 2715 2716 48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2813 2814 2815 2816 2817 2818 2807 2808 2809 2810 2811 2812 2819 2820 2821 2822 2823 2824 36 2837 2838 2839 2840 2841 2842 2849 2850 2851 2852 2853 2854 2825 2826 2827 2828 2829 2830 2843 2844 2845 2846 2847 2848 2855 2856 2857 2858 2859 2860 2831 2832 2833 2834 2835 2836 48 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2861 2862 2863 2864 2865 2866 2837 2838 2839 2840 2841 2842 2831 2832 2833 2834 2835 2836 2825 2826 2827 2828 2829 2830 2867 2868 2869 2870 2871 2872 36 2747 2748 2749 2750 2751 2752 2825 2826 2827 2828 2829 2830 2735 2736 2737 2738 2739 2740 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2741 2742 2743 2744 2745 2746 48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2801 2802 2803 2804 2805 2806 2795 2796 2797 2798 2799 2800 48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2897 2898 2899 2900 2901 2902 2891 2892 2893 2894 2895 2896 48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2927 2928 2929 2930 2931 2932 2921 2922 2923 2924 2925 2926 48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2957 2958 2959 2960 2961 2962 2951 2952 2953 2954 2955 2956 36 2987 2988 2989 2990 2991 2992 3005 3006 3007 3008 3009 3010 2975 2976 2977 2978 2979 2980 2999 3000 3001 3002 3003 3004 3011 3012 3013 3014 3015 3016 2981 2982 2983 2984 2985 2986 48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3053 3054 3055 3056 3057 3058 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3041 3042 3043 3044 3045 3046 3035 3036 3037 3038 3039 3040 48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3083 3084 3085 3086 3087 3088 3077 3078 3079 3080 3081 3082 48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3113 3114 3115 3116 3117 3118 3107 3108 3109 3110 3111 3112 48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3143 3144 3145 3146 3147 3148 3137 3138 3139 3140 3141 3142 36 3173 3174 3175 3176 3177 3178 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 3185 3186 3187 3188 3189 3190 3197 3198 3199 3200 3201 3202 3167 3168 3169 3170 3171 3172 48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3239 3240 3241 3242 3243 3244 3233 3234 3235 3236 3237 3238 3245 3246 3247 3248 3249 3250 48 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 37 38 39 40 41 42 31 32 33 34 35 36 13 14 15 16 17 18 3275 3276 3277 3278 3279 3280 48 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3251 3252 3253 3254 3255 3256 3275 3276 3277 3278 3279 3280 13 14 15 16 17 18 7 8 9 10 11 12 1 2 3 4 5 6 3293 3294 3295 3296 3297 3298 48 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3281 3282 3283 3284 3285 3286 3293 3294 3295 3296 3297 3298 1 2 3 4 5 6 25 26 27 28 29 30 19 20 21 22 23 24 3311 3312 3313 3314 3315 3316 36 3227 3228 3229 3230 3231 3232 3323 3324 3325 3326 3327 3328 3215 3216 3217 3218 3219 3220 3317 3318 3319 3320 3321 3322 3329 3330 3331 3332 3333 3334 3221 3222 3223 3224 3225 3226 48 3263 3264 3265 3266 3267 3268 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 49 50 51 52 53 54 43 44 45 46 47 48 37 38 39 40 41 42 3269 3270 3271 3272 3273 3274 48 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3227 3228 3229 3230 3231 3232 3353 3354 3355 3356 3357 3358 3041 3042 3043 3044 3045 3046 3053 3054 3055 3056 3057 3058 3047 3048 3049 3050 3051 3052 3359 3360 3361 3362 3363 3364 48 3227 3228 3229 3230 3231 3232 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3365 3366 3367 3368 3369 3370 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3041 3042 3043 3044 3045 3046 3353 3354 3355 3356 3357 3358 48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3083 3084 3085 3086 3087 3088 3365 3366 3367 3368 3369 3370 48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3113 3114 3115 3116 3117 3118 3383 3384 3385 3386 3387 3388 48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3143 3144 3145 3146 3147 3148 3401 3402 3403 3404 3405 3406 36 3191 3192 3193 3194 3195 3196 3173 3174 3175 3176 3177 3178 3413 3414 3415 3416 3417 3418 3185 3186 3187 3188 3189 3190 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 48 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3041 3042 3043 3044 3045 3046 3431 3432 3433 3434 3435 3436 2801 2802 2803 2804 2805 2806 2813 2814 2815 2816 2817 2818 2807 2808 2809 2810 2811 2812 3437 3438 3439 3440 3441 3442 48 3041 3042 3043 3044 3045 3046 3089 3090 3091 3092 3093 3094 3083 3084 3085 3086 3087 3088 3443 3444 3445 3446 3447 3448 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2801 2802 2803 2804 2805 2806 3431 3432 3433 3434 3435 3436 48 3083 3084 3085 3086 3087 3088 3119 3120 3121 3122 3123 3124 3113 3114 3115 3116 3117 3118 3449 3450 3451 3452 3453 3454 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2897 2898 2899 2900 2901 2902 3443 3444 3445 3446 3447 3448 48 3113 3114 3115 3116 3117 3118 3149 3150 3151 3152 3153 3154 3143 3144 3145 3146 3147 3148 3455 3456 3457 3458 3459 3460 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2927 2928 2929 2930 2931 2932 3449 3450 3451 3452 3453 3454 48 3143 3144 3145 3146 3147 3148 3179 3180 3181 3182 3183 3184 3173 3174 3175 3176 3177 3178 3461 3462 3463 3464 3465 3466 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2957 2958 2959 2960 2961 2962 3455 3456 3457 3458 3459 3460 48 3173 3174 3175 3176 3177 3178 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 2999 3000 3001 3002 3003 3004 2987 2988 2989 2990 2991 2992 3461 3462 3463 3464 3465 3466 48 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2801 2802 2803 2804 2805 2806 3473 3474 3475 3476 3477 3478 2657 2658 2659 2660 2661 2662 2669 2670 2671 2672 2673 2674 2663 2664 2665 2666 2667 2668 3479 3480 3481 3482 3483 3484 48 2801 2802 2803 2804 2805 2806 2903 2904 2905 2906 2907 2908 2897 2898 2899 2900 2901 2902 3485 3486 3487 3488 3489 3490 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2657 2658 2659 2660 2661 2662 3473 3474 3475 3476 3477 3478 48 2897 2898 2899 2900 2901 2902 2933 2934 2935 2936 2937 2938 2927 2928 2929 2930 2931 2932 3491 3492 3493 3494 3495 3496 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2717 2718 2719 2720 2721 2722 3485 3486 3487 3488 3489 3490 48 2927 2928 2929 2930 2931 2932 2963 2964 2965 2966 2967 2968 2957 2958 2959 2960 2961 2962 3497 3498 3499 3500 3501 3502 2837 2838 2839 2840 2841 2842 2861 2862 2863 2864 2865 2866 2765 2766 2767 2768 2769 2770 3491 3492 3493 3494 3495 3496 48 2957 2958 2959 2960 2961 2962 2993 2994 2995 2996 2997 2998 2987 2988 2989 2990 2991 2992 3503 3504 3505 3506 3507 3508 2849 2850 2851 2852 2853 2854 2843 2844 2845 2846 2847 2848 2837 2838 2839 2840 2841 2842 3497 3498 3499 3500 3501 3502 36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 2987 2988 2989 2990 2991 2992 3509 3510 3511 3512 3513 3514 3503 3504 3505 3506 3507 3508 2999 3000 3001 3002 3003 3004 48 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2657 2658 2659 2660 2661 2662 3515 3516 3517 3518 3519 3520 2381 2382 2383 2384 2385 2386 2393 2394 2395 2396 2397 2398 2387 2388 2389 2390 2391 2392 3521 3522 3523 3524 3525 3526 48 2657 2658 2659 2660 2661 2662 2723 2724 2725 2726 2727 2728 2717 2718 2719 2720 2721 2722 3527 3528 3529 3530 3531 3532 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2381 2382 2383 2384 2385 2386 3515 3516 3517 3518 3519 3520 48 2717 2718 2719 2720 2721 2722 2771 2772 2773 2774 2775 2776 2765 2766 2767 2768 2769 2770 3533 3534 3535 3536 3537 3538 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2441 2442 2443 2444 2445 2446 3527 3528 3529 3530 3531 3532 48 2765 2766 2767 2768 2769 2770 2861 2862 2863 2864 2865 2866 2837 2838 2839 2840 2841 2842 3539 3540 3541 3542 3543 3544 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2489 2490 2491 2492 2493 2494 3533 3534 3535 3536 3537 3538 48 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 3545 3546 3547 3548 3549 3550 2597 2598 2599 2600 2601 2602 2633 2634 2635 2636 2637 2638 2537 2538 2539 2540 2541 2542 3539 3540 3541 3542 3543 3544 36 2621 2622 2623 2624 2625 2626 2597 2598 2599 2600 2601 2602 2849 2850 2851 2852 2853 2854 2615 2616 2617 2618 2619 2620 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 48 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2381 2382 2383 2384 2385 2386 3557 3558 3559 3560 3561 3562 2107 2108 2109 2110 2111 2112 2119 2120 2121 2122 2123 2124 2113 2114 2115 2116 2117 2118 3563 3564 3565 3566 3567 3568 48 2381 2382 2383 2384 2385 2386 2447 2448 2449 2450 2451 2452 2441 2442 2443 2444 2445 2446 3569 3570 3571 3572 3573 3574 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2107 2108 2109 2110 2111 2112 3557 3558 3559 3560 3561 3562 48 2441 2442 2443 2444 2445 2446 2495 2496 2497 2498 2499 2500 2489 2490 2491 2492 2493 2494 3575 3576 3577 3578 3579 3580 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2167 2168 2169 2170 2171 2172 3569 3570 3571 3572 3573 3574 48 2489 2490 2491 2492 2493 2494 2543 2544 2545 2546 2547 2548 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2215 2216 2217 2218 2219 2220 3575 3576 3577 3578 3579 3580 48 2537 2538 2539 2540 2541 2542 2633 2634 2635 2636 2637 2638 2597 2598 2599 2600 2601 2602 3587 3588 3589 3590 3591 3592 2335 2336 2337 2338 2339 2340 2357 2358 2359 2360 2361 2362 2263 2264 2265 2266 2267 2268 3581 3582 3583 3584 3585 3586 46 2597 2598 2599 2600 2601 2602 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 2341 2342 2343 2344 2345 2346 2335 2336 2337 2338 2339 2340 3587 3588 3589 3590 3591 3592 48 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2107 2108 2109 2110 2111 2112 3599 3600 3601 3602 3603 3604 1801 1802 1803 1804 1805 1806 1813 1814 1815 1816 1817 1818 1807 1808 1809 1810 1811 1812 3605 3606 3607 3608 3609 3610 48 2107 2108 2109 2110 2111 2112 2173 2174 2175 2176 2177 2178 2167 2168 2169 2170 2171 2172 3611 3612 3613 3614 3615 3616 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1801 1802 1803 1804 1805 1806 3599 3600 3601 3602 3603 3604 48 2167 2168 2169 2170 2171 2172 2221 2222 2223 2224 2225 2226 2215 2216 2217 2218 2219 2220 3617 3618 3619 3620 3621 3622 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1861 1862 1863 1864 1865 1866 3611 3612 3613 3614 3615 3616 48 2215 2216 2217 2218 2219 2220 2269 2270 2271 2272 2273 2274 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1909 1910 1911 1912 1913 1914 3617 3618 3619 3620 3621 3622 48 2263 2264 2265 2266 2267 2268 2357 2358 2359 2360 2361 2362 2335 2336 2337 2338 2339 2340 3629 3630 3631 3632 3633 3634 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 1957 1958 1959 1960 1961 1962 3623 3624 3625 3626 3627 3628 46 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 3635 3636 3637 3638 3639 3640 2035 2036 2037 2038 2039 2040 2047 2048 2049 2050 2051 2052 2005 2006 2007 2008 2009 2010 3629 3630 3631 3632 3633 3634 34 2035 2036 2037 2038 2039 2040 2023 2024 2025 2026 2027 2028 2347 2348 2349 2350 2029 2030 2031 2032 2033 2034 3641 3642 3643 3644 3645 3646 3635 3636 3637 3638 3639 3640 48 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2801 2802 2803 2804 2805 2806 3647 3648 3649 3650 3651 3652 2573 2574 2575 2576 2577 2578 2585 2586 2587 2588 2589 2590 2579 2580 2581 2582 2583 2584 3653 3654 3655 3656 3657 3658 48 2801 2802 2803 2804 2805 2806 2903 2904 2905 2906 2907 2908 2897 2898 2899 2900 2901 2902 3659 3660 3661 3662 3663 3664 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2573 2574 2575 2576 2577 2578 3647 3648 3649 3650 3651 3652 48 2897 2898 2899 2900 2901 2902 2933 2934 2935 2936 2937 2938 2927 2928 2929 2930 2931 2932 3665 3666 3667 3668 3669 3670 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2699 2700 2701 2702 2703 2704 3659 3660 3661 3662 3663 3664 48 2927 2928 2929 2930 2931 2932 2963 2964 2965 2966 2967 2968 2957 2958 2959 2960 2961 2962 3671 3672 3673 3674 3675 3676 2825 2826 2827 2828 2829 2830 2867 2868 2869 2870 2871 2872 2747 2748 2749 2750 2751 2752 3665 3666 3667 3668 3669 3670 48 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2573 2574 2575 2576 2577 2578 3677 3678 3679 3680 3681 3682 2299 2300 2301 2302 2303 2304 2311 2312 2313 2314 2315 2316 2305 2306 2307 2308 2309 2310 3683 3684 3685 3686 3687 3688 48 2573 2574 2575 2576 2577 2578 2705 2706 2707 2708 2709 2710 2699 2700 2701 2702 2703 2704 3689 3690 3691 3692 3693 3694 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2299 2300 2301 2302 2303 2304 3677 3678 3679 3680 3681 3682 48 2699 2700 2701 2702 2703 2704 2753 2754 2755 2756 2757 2758 2747 2748 2749 2750 2751 2752 3695 3696 3697 3698 3699 3700 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2423 2424 2425 2426 2427 2428 3689 3690 3691 3692 3693 3694 48 2747 2748 2749 2750 2751 2752 2867 2868 2869 2870 2871 2872 2825 2826 2827 2828 2829 2830 3701 3702 3703 3704 3705 3706 2537 2538 2539 2540 2541 2542 3707 3708 3709 3710 3711 3712 2471 2472 2473 2474 2475 2476 3695 3696 3697 3698 3699 3700 48 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2299 2300 2301 2302 2303 2304 3713 3714 3715 3716 3717 3718 2077 2078 2079 2080 2081 2082 2089 2090 2091 2092 2093 2094 2083 2084 2085 2086 2087 2088 3719 3720 3721 3722 3723 3724 48 2299 2300 2301 2302 2303 2304 2429 2430 2431 2432 2433 2434 2423 2424 2425 2426 2427 2428 3725 3726 3727 3728 3729 3730 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2077 2078 2079 2080 2081 2082 3713 3714 3715 3716 3717 3718 48 2423 2424 2425 2426 2427 2428 2477 2478 2479 2480 2481 2482 2471 2472 2473 2474 2475 2476 3731 3732 3733 3734 3735 3736 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2149 2150 2151 2152 2153 2154 3725 3726 3727 3728 3729 3730 48 2471 2472 2473 2474 2475 2476 3707 3708 3709 3710 3711 3712 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 3737 3738 3739 3740 3741 3742 2197 2198 2199 2200 2201 2202 3731 3732 3733 3734 3735 3736 48 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2077 2078 2079 2080 2081 2082 3743 3744 3745 3746 3747 3748 1771 1772 1773 1774 1775 1776 1783 1784 1785 1786 1787 1788 1777 1778 1779 1780 1781 1782 3749 3750 3751 3752 3753 3754 48 2077 2078 2079 2080 2081 2082 2155 2156 2157 2158 2159 2160 2149 2150 2151 2152 2153 2154 3755 3756 3757 3758 3759 3760 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1771 1772 1773 1774 1775 1776 3743 3744 3745 3746 3747 3748 48 2149 2150 2151 2152 2153 2154 2203 2204 2205 2206 2207 2208 2197 2198 2199 2200 2201 2202 3761 3762 3763 3764 3765 3766 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1843 1844 1845 1846 1847 1848 3755 3756 3757 3758 3759 3760 48 2197 2198 2199 2200 2201 2202 3737 3738 3739 3740 3741 3742 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 3767 3768 3769 3770 3771 3772 1891 1892 1893 1894 1895 1896 3761 3762 3763 3764 3765 3766 48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3773 3774 3775 3776 3777 3778 3029 3030 3031 3032 3033 3034 3023 3024 3025 3026 3027 3028 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 48 3215 3216 3217 3218 3219 3220 3329 3330 3331 3332 3333 3334 3323 3324 3325 3326 3327 3328 3785 3786 3787 3788 3789 3790 3071 3072 3073 3074 3075 3076 3065 3066 3067 3068 3069 3070 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3791 3792 3793 3794 3795 3796 3101 3102 3103 3104 3105 3106 3095 3096 3097 3098 3099 3100 3071 3072 3073 3074 3075 3076 3785 3786 3787 3788 3789 3790 48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3797 3798 3799 3800 3801 3802 3131 3132 3133 3134 3135 3136 3125 3126 3127 3128 3129 3130 3101 3102 3103 3104 3105 3106 3791 3792 3793 3794 3795 3796 48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3803 3804 3805 3806 3807 3808 3161 3162 3163 3164 3165 3166 3155 3156 3157 3158 3159 3160 3131 3132 3133 3134 3135 3136 3797 3798 3799 3800 3801 3802 36 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 3197 3198 3199 3200 3201 3202 3803 3804 3805 3806 3807 3808 3425 3426 3427 3428 3429 3430 48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3809 3810 3811 3812 3813 3814 2789 2790 2791 2792 2793 2794 2783 2784 2785 2786 2787 2788 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3821 3822 3823 3824 3825 3826 2885 2886 2887 2888 2889 2890 2879 2880 2881 2882 2883 2884 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3827 3828 3829 3830 3831 3832 2915 2916 2917 2918 2919 2920 2909 2910 2911 2912 2913 2914 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3833 3834 3835 3836 3837 3838 2945 2946 2947 2948 2949 2950 2939 2940 2941 2942 2943 2944 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3839 3840 3841 3842 3843 3844 2975 2976 2977 2978 2979 2980 2969 2970 2971 2972 2973 2974 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 48 3161 3162 3163 3164 3165 3166 3197 3198 3199 3200 3201 3202 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 3845 3846 3847 3848 3849 3850 2561 2562 2563 2564 2565 2566 2555 2556 2557 2558 2559 2560 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 3857 3858 3859 3860 3861 3862 2687 2688 2689 2690 2691 2692 2681 2682 2683 2684 2685 2686 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 3863 3864 3865 3866 3867 3868 2735 2736 2737 2738 2739 2740 2729 2730 2731 2732 2733 2734 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 3869 3870 3871 3872 3873 3874 2825 2826 2827 2828 2829 2830 2873 2874 2875 2876 2877 2878 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 3875 3876 3877 3878 3879 3880 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2825 2826 2827 2828 2829 2830 3869 3870 3871 3872 3873 3874 36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 3509 3510 3511 3512 3513 3514 3875 3876 3877 3878 3879 3880 3011 3012 3013 3014 3015 3016 48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 3881 3882 3883 3884 3885 3886 2287 2288 2289 2290 2291 2292 2281 2282 2283 2284 2285 2286 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 3893 3894 3895 3896 3897 3898 2411 2412 2413 2414 2415 2416 2405 2406 2407 2408 2409 2410 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 3899 3900 3901 3902 3903 3904 2459 2460 2461 2462 2463 2464 2453 2454 2455 2456 2457 2458 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 48 2735 2736 2737 2738 2739 2740 2873 2874 2875 2876 2877 2878 2825 2826 2827 2828 2829 2830 3905 3906 3907 3908 3909 3910 2507 2508 2509 2510 2511 2512 2501 2502 2503 2504 2505 2506 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 48 2825 2826 2827 2828 2829 2830 2855 2856 2857 2858 2859 2860 2849 2850 2851 2852 2853 2854 3911 3912 3913 3914 3915 3916 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 2507 2508 2509 2510 2511 2512 3905 3906 3907 3908 3909 3910 36 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 2627 2628 2629 2630 2631 2632 3911 3912 3913 3914 3915 3916 3551 3552 3553 3554 3555 3556 48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 3917 3918 3919 3920 3921 3922 2065 2066 2067 2068 2069 2070 2059 2060 2061 2062 2063 2064 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 3929 3930 3931 3932 3933 3934 2137 2138 2139 2140 2141 2142 2131 2132 2133 2134 2135 2136 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 3935 3936 3937 3938 3939 3940 2185 2186 2187 2188 2189 2190 2179 2180 2181 2182 2183 2184 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 3941 3942 3943 3944 3945 3946 2233 2234 2235 2236 2237 2238 2227 2228 2229 2230 2231 2232 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 48 2507 2508 2509 2510 2511 2512 2645 2646 2647 2648 2649 2650 2609 2610 2611 2612 2613 2614 3947 3948 3949 3950 3951 3952 2323 2324 2325 2326 2327 2328 2369 2370 2371 2372 2373 2374 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 46 2609 2610 2611 2612 2613 2614 2627 2628 2629 2630 2631 2632 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 3953 3954 3955 3956 3957 3958 1759 1760 1761 1762 1763 1764 1753 1754 1755 1756 1757 1758 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 3965 3966 3967 3968 3969 3970 1879 1880 1881 1882 1883 1884 1873 1874 1875 1876 1877 1878 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 48 3203 3204 3205 3206 3207 3208 3245 3246 3247 3248 3249 3250 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 48 3017 3018 3019 3020 3021 3022 3059 3060 3061 3062 3063 3064 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 2819 2820 2821 2822 2823 2824 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 48 2777 2778 2779 2780 2781 2782 2819 2820 2821 2822 2823 2824 2807 2808 2809 2810 2811 2812 3653 3654 3655 3656 3657 3658 2579 2580 2581 2582 2583 2584 2591 2592 2593 2594 2595 2596 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 36 2663 2664 2665 2666 2667 2668 2579 2580 2581 2582 2583 2584 2807 2808 2809 2810 2811 2812 2675 2676 2677 2678 2679 2680 3653 3654 3655 3656 3657 3658 3479 3480 3481 3482 3483 3484 48 2549 2550 2551 2552 2553 2554 2591 2592 2593 2594 2595 2596 2579 2580 2581 2582 2583 2584 3683 3684 3685 3686 3687 3688 2305 2306 2307 2308 2309 2310 2317 2318 2319 2320 2321 2322 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 48 2579 2580 2581 2582 2583 2584 2675 2676 2677 2678 2679 2680 2663 2664 2665 2666 2667 2668 3521 3522 3523 3524 3525 3526 2387 2388 2389 2390 2391 2392 2399 2400 2401 2402 2403 2404 2305 2306 2307 2308 2309 2310 3683 3684 3685 3686 3687 3688 48 2275 2276 2277 2278 2279 2280 2317 2318 2319 2320 2321 2322 2305 2306 2307 2308 2309 2310 3719 3720 3721 3722 3723 3724 2083 2084 2085 2086 2087 2088 2095 2096 2097 2098 2099 2100 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 48 2305 2306 2307 2308 2309 2310 2399 2400 2401 2402 2403 2404 2387 2388 2389 2390 2391 2392 3563 3564 3565 3566 3567 3568 2113 2114 2115 2116 2117 2118 2125 2126 2127 2128 2129 2130 2083 2084 2085 2086 2087 2088 3719 3720 3721 3722 3723 3724 48 2053 2054 2055 2056 2057 2058 2095 2096 2097 2098 2099 2100 2083 2084 2085 2086 2087 2088 3749 3750 3751 3752 3753 3754 1777 1778 1779 1780 1781 1782 1789 1790 1791 1792 1793 1794 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 48 2083 2084 2085 2086 2087 2088 2125 2126 2127 2128 2129 2130 2113 2114 2115 2116 2117 2118 3605 3606 3607 3608 3609 3610 1807 1808 1809 1810 1811 1812 1819 1820 1821 1822 1823 1824 1777 1778 1779 1780 1781 1782 3749 3750 3751 3752 3753 3754 48 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3353 3354 3355 3356 3357 3358 3041 3042 3043 3044 3045 3046 3035 3036 3037 3038 3039 3040 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 48 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3431 3432 3433 3434 3435 3436 2801 2802 2803 2804 2805 2806 2795 2796 2797 2798 2799 2800 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 48 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 3647 3648 3649 3650 3651 3652 2573 2574 2575 2576 2577 2578 2567 2568 2569 2570 2571 2572 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 36 2657 2658 2659 2660 2661 2662 2573 2574 2575 2576 2577 2578 2801 2802 2803 2804 2805 2806 2651 2652 2653 2654 2655 2656 3647 3648 3649 3650 3651 3652 3473 3474 3475 3476 3477 3478 48 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 3677 3678 3679 3680 3681 3682 2299 2300 2301 2302 2303 2304 2293 2294 2295 2296 2297 2298 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 48 2573 2574 2575 2576 2577 2578 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 3515 3516 3517 3518 3519 3520 2381 2382 2383 2384 2385 2386 2375 2376 2377 2378 2379 2380 2299 2300 2301 2302 2303 2304 3677 3678 3679 3680 3681 3682 48 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 3713 3714 3715 3716 3717 3718 2077 2078 2079 2080 2081 2082 2071 2072 2073 2074 2075 2076 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 48 2299 2300 2301 2302 2303 2304 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 3557 3558 3559 3560 3561 3562 2107 2108 2109 2110 2111 2112 2101 2102 2103 2104 2105 2106 2077 2078 2079 2080 2081 2082 3713 3714 3715 3716 3717 3718 48 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 3743 3744 3745 3746 3747 3748 1771 1772 1773 1774 1775 1776 1765 1766 1767 1768 1769 1770 1759 1760 1761 1762 1763 1764 3953 3954 3955 3956 3957 3958 48 2077 2078 2079 2080 2081 2082 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 3599 3600 3601 3602 3603 3604 1801 1802 1803 1804 1805 1806 1795 1796 1797 1798 1799 1800 1771 1772 1773 1774 1775 1776 3743 3744 3745 3746 3747 3748 36 3083 3084 3085 3086 3087 3088 3071 3072 3073 3074 3075 3076 3323 3324 3325 3326 3327 3328 3077 3078 3079 3080 3081 3082 3785 3786 3787 3788 3789 3790 3365 3366 3367 3368 3369 3370 48 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3443 3444 3445 3446 3447 3448 2897 2898 2899 2900 2901 2902 2891 2892 2893 2894 2895 2896 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 48 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 3659 3660 3661 3662 3663 3664 2699 2700 2701 2702 2703 2704 2693 2694 2695 2696 2697 2698 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 36 2717 2718 2719 2720 2721 2722 2699 2700 2701 2702 2703 2704 2897 2898 2899 2900 2901 2902 2711 2712 2713 2714 2715 2716 3659 3660 3661 3662 3663 3664 3485 3486 3487 3488 3489 3490 48 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 3689 3690 3691 3692 3693 3694 2423 2424 2425 2426 2427 2428 2417 2418 2419 2420 2421 2422 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 48 2699 2700 2701 2702 2703 2704 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 3527 3528 3529 3530 3531 3532 2441 2442 2443 2444 2445 2446 2435 2436 2437 2438 2439 2440 2423 2424 2425 2426 2427 2428 3689 3690 3691 3692 3693 3694 48 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 3725 3726 3727 3728 3729 3730 2149 2150 2151 2152 2153 2154 2143 2144 2145 2146 2147 2148 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 48 2423 2424 2425 2426 2427 2428 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 3569 3570 3571 3572 3573 3574 2167 2168 2169 2170 2171 2172 2161 2162 2163 2164 2165 2166 2149 2150 2151 2152 2153 2154 3725 3726 3727 3728 3729 3730 48 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 3755 3756 3757 3758 3759 3760 1843 1844 1845 1846 1847 1848 1837 1838 1839 1840 1841 1842 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 48 2149 2150 2151 2152 2153 2154 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 3611 3612 3613 3614 3615 3616 1861 1862 1863 1864 1865 1866 1855 1856 1857 1858 1859 1860 1843 1844 1845 1846 1847 1848 3755 3756 3757 3758 3759 3760 36 3113 3114 3115 3116 3117 3118 3101 3102 3103 3104 3105 3106 3377 3378 3379 3380 3381 3382 3107 3108 3109 3110 3111 3112 3791 3792 3793 3794 3795 3796 3383 3384 3385 3386 3387 3388 48 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3449 3450 3451 3452 3453 3454 2927 2928 2929 2930 2931 2932 2921 2922 2923 2924 2925 2926 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 48 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 3665 3666 3667 3668 3669 3670 2747 2748 2749 2750 2751 2752 2741 2742 2743 2744 2745 2746 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 36 2765 2766 2767 2768 2769 2770 2747 2748 2749 2750 2751 2752 2927 2928 2929 2930 2931 2932 2759 2760 2761 2762 2763 2764 3665 3666 3667 3668 3669 3670 3491 3492 3493 3494 3495 3496 48 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 3695 3696 3697 3698 3699 3700 2471 2472 2473 2474 2475 2476 2465 2466 2467 2468 2469 2470 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 48 2747 2748 2749 2750 2751 2752 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 3533 3534 3535 3536 3537 3538 2489 2490 2491 2492 2493 2494 2483 2484 2485 2486 2487 2488 2471 2472 2473 2474 2475 2476 3695 3696 3697 3698 3699 3700 48 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 3731 3732 3733 3734 3735 3736 2197 2198 2199 2200 2201 2202 2191 2192 2193 2194 2195 2196 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 48 2471 2472 2473 2474 2475 2476 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 3575 3576 3577 3578 3579 3580 2215 2216 2217 2218 2219 2220 2209 2210 2211 2212 2213 2214 2197 2198 2199 2200 2201 2202 3731 3732 3733 3734 3735 3736 48 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 3761 3762 3763 3764 3765 3766 1891 1892 1893 1894 1895 1896 1885 1886 1887 1888 1889 1890 1879 1880 1881 1882 1883 1884 3965 3966 3967 3968 3969 3970 48 2197 2198 2199 2200 2201 2202 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 3617 3618 3619 3620 3621 3622 1909 1910 1911 1912 1913 1914 1903 1904 1905 1906 1907 1908 1891 1892 1893 1894 1895 1896 3761 3762 3763 3764 3765 3766 36 3143 3144 3145 3146 3147 3148 3131 3132 3133 3134 3135 3136 3395 3396 3397 3398 3399 3400 3137 3138 3139 3140 3141 3142 3797 3798 3799 3800 3801 3802 3401 3402 3403 3404 3405 3406 48 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3455 3456 3457 3458 3459 3460 2957 2958 2959 2960 2961 2962 2951 2952 2953 2954 2955 2956 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 36 2957 2958 2959 2960 2961 2962 2825 2826 2827 2828 2829 2830 2945 2946 2947 2948 2949 2950 3671 3672 3673 3674 3675 3676 3869 3870 3871 3872 3873 3874 2951 2952 2953 2954 2955 2956 36 2837 2838 2839 2840 2841 2842 2825 2826 2827 2828 2829 2830 2957 2958 2959 2960 2961 2962 2831 2832 2833 2834 2835 2836 3671 3672 3673 3674 3675 3676 3497 3498 3499 3500 3501 3502 36 2519 2520 2521 2522 2523 2524 2507 2508 2509 2510 2511 2512 2825 2826 2827 2828 2829 2830 2513 2514 2515 2516 2517 2518 3905 3906 3907 3908 3909 3910 3977 3978 3979 3980 3981 3982 48 2837 2838 2839 2840 2841 2842 3539 3540 3541 3542 3543 3544 2537 2538 2539 2540 2541 2542 2531 2532 2533 2534 2535 2536 2519 2520 2521 2522 2523 2524 3977 3978 3979 3980 3981 3982 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 48 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 3983 3984 3985 3986 3987 3988 2245 2246 2247 2248 2249 2250 2239 2240 2241 2242 2243 2244 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 48 2519 2520 2521 2522 2523 2524 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 3581 3582 3583 3584 3585 3586 2263 2264 2265 2266 2267 2268 2257 2258 2259 2260 2261 2262 2245 2246 2247 2248 2249 2250 3983 3984 3985 3986 3987 3988 48 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 3989 3990 3991 3992 3993 3994 1939 1940 1941 1942 1943 1944 1933 1934 1935 1936 1937 1938 1927 1928 1929 1930 1931 1932 3995 3996 3997 3998 3999 4000 48 2245 2246 2247 2248 2249 2250 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 3623 3624 3625 3626 3627 3628 1957 1958 1959 1960 1961 1962 1951 1952 1953 1954 1955 1956 1939 1940 1941 1942 1943 1944 3989 3990 3991 3992 3993 3994 36 3173 3174 3175 3176 3177 3178 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 3167 3168 3169 3170 3171 3172 3803 3804 3805 3806 3807 3808 3419 3420 3421 3422 3423 3424 48 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3461 3462 3463 3464 3465 3466 2987 2988 2989 2990 2991 2992 2981 2982 2983 2984 2985 2986 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 36 2987 2988 2989 2990 2991 2992 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 3503 3504 3505 3506 3507 3508 3875 3876 3877 3878 3879 3880 2981 2982 2983 2984 2985 2986 36 2597 2598 2599 2600 2601 2602 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 2603 2604 2605 2606 2607 2608 3911 3912 3913 3914 3915 3916 3545 3546 3547 3548 3549 3550 48 2609 2610 2611 2612 2613 2614 2603 2604 2605 2606 2607 2608 2597 2598 2599 2600 2601 2602 3587 3588 3589 3590 3591 3592 2335 2336 2337 2338 2339 2340 2329 2330 2331 2332 2333 2334 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 48 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 4001 4002 4003 4004 4005 4006 1987 1988 1989 1990 1991 1992 1981 1982 1983 1984 1985 1986 1975 1976 1977 1978 1979 1980 4007 4008 4009 4010 4011 4012 36 2005 2006 2007 2008 2009 2010 1987 1988 1989 1990 1991 1992 2335 2336 2337 2338 2339 2340 1999 2000 2001 2002 2003 2004 4001 4002 4003 4004 4005 4006 3629 3630 3631 3632 3633 3634 48 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1771 1772 1773 1774 1775 1776 4013 4014 4015 4016 4017 4018 1 2 3 4 5 6 25 26 27 28 29 30 19 20 21 22 23 24 4019 4020 4021 4022 4023 4024 48 1771 1772 1773 1774 1775 1776 1849 1850 1851 1852 1853 1854 1843 1844 1845 1846 1847 1848 4025 4026 4027 4028 4029 4030 13 14 15 16 17 18 7 8 9 10 11 12 1 2 3 4 5 6 4013 4014 4015 4016 4017 4018 48 1843 1844 1845 1846 1847 1848 1897 1898 1899 1900 1901 1902 1891 1892 1893 1894 1895 1896 4031 4032 4033 4034 4035 4036 37 38 39 40 41 42 31 32 33 34 35 36 13 14 15 16 17 18 4025 4026 4027 4028 4029 4030 48 1891 1892 1893 1894 1895 1896 1945 1946 1947 1948 1949 1950 1939 1940 1941 1942 1943 1944 4037 4038 4039 4040 4041 4042 49 50 51 52 53 54 43 44 45 46 47 48 37 38 39 40 41 42 4031 4032 4033 4034 4035 4036 48 1747 1748 1749 1750 1751 1752 1789 1790 1791 1792 1793 1794 1777 1778 1779 1780 1781 1782 4019 4020 4021 4022 4023 4024 19 20 21 22 23 24 3311 3312 3313 3314 3315 3316 3299 3300 3301 3302 3303 3304 4043 4044 4045 4046 4047 4048 48 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 4013 4014 4015 4016 4017 4018 1 2 3 4 5 6 3293 3294 3295 3296 3297 3298 3281 3282 3283 3284 3285 3286 4049 4050 4051 4052 4053 4054 48 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 4025 4026 4027 4028 4029 4030 13 14 15 16 17 18 3275 3276 3277 3278 3279 3280 3251 3252 3253 3254 3255 3256 4055 4056 4057 4058 4059 4060 48 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 4031 4032 4033 4034 4035 4036 37 38 39 40 41 42 3269 3270 3271 3272 3273 3274 3263 3264 3265 3266 3267 3268 4061 4062 4063 4064 4065 4066 48 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 4037 4038 4039 4040 4041 4042 49 50 51 52 53 54 3347 3348 3349 3350 3351 3352 3341 3342 3343 3344 3345 3346 4067 4068 4069 4070 4071 4072 48 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4097 4098 4099 4100 4101 4102 4091 4092 4093 4094 4095 4096 4103 4104 4105 4106 4107 4108 45 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4085 4086 4087 4088 4089 4090 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4124 4125 4126 4127 4128 4129 4121 4122 4123 4130 4131 4132 4133 4134 4135 48 1741 1742 1743 1744 1745 1746 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 48 4085 4086 4087 4088 4089 4090 4160 4161 4162 4163 4164 4165 4154 4155 4156 4157 4158 4159 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4115 4116 4117 4118 4119 4120 4109 4110 4111 4112 4113 4114 48 4154 4155 4156 4157 4158 4159 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4172 4173 4174 4175 4176 4177 4166 4167 4168 4169 4170 4171 48 4190 4191 4192 4193 4194 4195 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4202 4203 4204 4205 4206 4207 4196 4197 4198 4199 4200 4201 48 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 48 4220 4221 4222 4223 4224 4225 4274 4275 4276 4277 4278 4279 4268 4269 4270 4271 4272 4273 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4232 4233 4234 4235 4236 4237 4226 4227 4228 4229 4230 4231 48 4268 4269 4270 4271 4272 4273 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4292 4293 4294 4295 4296 4297 4286 4287 4288 4289 4290 4291 48 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4358 4359 4360 4361 4362 4363 4352 4353 4354 4355 4356 4357 4364 4365 4366 4367 4368 4369 48 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4346 4347 4348 4349 4350 4351 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4388 4389 4390 4391 4392 4393 4382 4383 4384 4385 4386 4387 4394 4395 4396 4397 4398 4399 48 1729 1730 1731 1732 1733 1734 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4346 4347 4348 4349 4350 4351 4340 4341 4342 4343 4344 4345 48 4346 4347 4348 4349 4350 4351 4424 4425 4426 4427 4428 4429 4418 4419 4420 4421 4422 4423 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4376 4377 4378 4379 4380 4381 4370 4371 4372 4373 4374 4375 48 4418 4419 4420 4421 4422 4423 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4436 4437 4438 4439 4440 4441 4430 4431 4432 4433 4434 4435 48 4454 4455 4456 4457 4458 4459 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4466 4467 4468 4469 4470 4471 4460 4461 4462 4463 4464 4465 48 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4484 4485 4486 4487 4488 4489 4544 4545 4546 4547 4548 4549 48 4484 4485 4486 4487 4488 4489 4538 4539 4540 4541 4542 4543 4532 4533 4534 4535 4536 4537 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4496 4497 4498 4499 4500 4501 4490 4491 4492 4493 4494 4495 48 4532 4533 4534 4535 4536 4537 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4556 4557 4558 4559 4560 4561 4550 4551 4552 4553 4554 4555 36 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4598 4599 4600 4601 4602 4603 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4604 4605 4606 4607 4608 4609 36 4646 4647 4648 4649 4650 4651 4598 4599 4600 4601 4602 4603 4634 4635 4636 4637 4638 4639 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4640 4641 4642 4643 4644 4645 48 1717 1718 1719 1720 1721 1722 4664 4665 4666 4667 4668 4669 4634 4635 4636 4637 4638 4639 4658 4659 4660 4661 4662 4663 4598 4599 4600 4601 4602 4603 4676 4677 4678 4679 4680 4681 4670 4671 4672 4673 4674 4675 4682 4683 4684 4685 4686 4687 48 1669 1670 1671 1672 1673 1674 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4646 4647 4648 4649 4650 4651 4640 4641 4642 4643 4644 4645 4634 4635 4636 4637 4638 4639 4706 4707 4708 4709 4710 4711 48 4670 4671 4672 4673 4674 4675 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4616 4617 4618 4619 4620 4621 4628 4629 4630 4631 4632 4633 4598 4599 4600 4601 4602 4603 4676 4677 4678 4679 4680 4681 36 4634 4635 4636 4637 4638 4639 1717 1718 1719 1720 1721 1722 1669 1670 1671 1672 1673 1674 4664 4665 4666 4667 4668 4669 4730 4731 4732 4733 4734 4735 4706 4707 4708 4709 4710 4711 48 4616 4617 4618 4619 4620 4621 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4610 4611 4612 4613 4614 4615 4622 4623 4624 4625 4626 4627 48 4742 4743 4744 4745 4746 4747 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4754 4755 4756 4757 4758 4759 4748 4749 4750 4751 4752 4753 48 4772 4773 4774 4775 4776 4777 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4784 4785 4786 4787 4788 4789 4778 4779 4780 4781 4782 4783 36 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 1705 1706 1707 1708 1709 1710 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4826 4827 4828 4829 4830 4831 48 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4832 4833 4834 4835 4836 4837 4844 4845 4846 4847 4848 4849 48 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 4916 4917 4918 4919 4920 4921 4928 4929 4930 4931 4932 4933 48 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4970 4971 4972 4973 4974 4975 4964 4965 4966 4967 4968 4969 4976 4977 4978 4979 4980 4981 48 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 4958 4959 4960 4961 4962 4963 4952 4953 4954 4955 4956 4957 48 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5000 5001 5002 5003 5004 5005 4994 4995 4996 4997 4998 4999 48 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5030 5031 5032 5033 5034 5035 5024 5025 5026 5027 5028 5029 48 1657 1658 1659 1660 1661 1662 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5102 5103 5104 5105 5106 5107 5096 5097 5098 5099 5100 5101 5108 5109 5110 5111 5112 5113 48 5078 5079 5080 5081 5082 5083 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5090 5091 5092 5093 5094 5095 5084 5085 5086 5087 5088 5089 48 5120 5121 5122 5123 5124 5125 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5132 5133 5134 5135 5136 5137 5126 5127 5128 5129 5130 5131 48 5150 5151 5152 5153 5154 5155 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5162 5163 5164 5165 5166 5167 5156 5157 5158 5159 5160 5161 48 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 67 68 69 70 71 72 61 62 63 64 65 66 55 56 57 58 59 60 5228 5229 5230 5231 5232 5233 48 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 103 104 105 106 107 108 97 98 99 100 101 102 91 92 93 94 95 96 5258 5259 5260 5261 5262 5263 48 5096 5097 5098 5099 5100 5101 5264 5265 5266 5267 5268 5269 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4958 4959 4960 4961 4962 4963 5270 5271 5272 5273 5274 5275 5090 5091 5092 5093 5094 5095 5102 5103 5104 5105 5106 5107 48 5090 5091 5092 5093 5094 5095 5270 5271 5272 5273 5274 5275 4958 4959 4960 4961 4962 4963 5006 5007 5008 5009 5010 5011 5000 5001 5002 5003 5004 5005 5276 5277 5278 5279 5280 5281 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 48 5132 5133 5134 5135 5136 5137 5276 5277 5278 5279 5280 5281 5000 5001 5002 5003 5004 5005 5036 5037 5038 5039 5040 5041 5030 5031 5032 5033 5034 5035 5282 5283 5284 5285 5286 5287 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 48 5162 5163 5164 5165 5166 5167 5282 5283 5284 5285 5286 5287 5030 5031 5032 5033 5034 5035 5066 5067 5068 5069 5070 5071 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 48 4964 4965 4966 4967 4968 4969 5294 5295 5296 5297 5298 5299 4832 4833 4834 4835 4836 4837 4880 4881 4882 4883 4884 4885 4874 4875 4876 4877 4878 4879 5300 5301 5302 5303 5304 5305 4958 4959 4960 4961 4962 4963 4970 4971 4972 4973 4974 4975 48 4958 4959 4960 4961 4962 4963 5300 5301 5302 5303 5304 5305 4874 4875 4876 4877 4878 4879 5306 5307 5308 5309 5310 5311 4916 4917 4918 4919 4920 4921 5312 5313 5314 5315 5316 5317 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 48 5000 5001 5002 5003 5004 5005 5312 5313 5314 5315 5316 5317 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4910 4911 4912 4913 4914 4915 5318 5319 5320 5321 5322 5323 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 48 5030 5031 5032 5033 5034 5035 5318 5319 5320 5321 5322 5323 4910 4911 4912 4913 4914 4915 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 36 1705 1706 1707 1708 1709 1710 4634 4635 4636 4637 4638 4639 1669 1670 1671 1672 1673 1674 5348 5349 5350 5351 5352 5353 4706 4707 4708 4709 4710 4711 5342 5343 5344 5345 5346 5347 48 1705 1706 1707 1708 1709 1710 5348 5349 5350 5351 5352 5353 4634 4635 4636 4637 4638 4639 4658 4659 4660 4661 4662 4663 4598 4599 4600 4601 4602 4603 5354 5355 5356 5357 5358 5359 4832 4833 4834 4835 4836 4837 4826 4827 4828 4829 4830 4831 48 4832 4833 4834 4835 4836 4837 5354 5355 5356 5357 5358 5359 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 5360 5361 5362 5363 5364 5365 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 48 4874 4875 4876 4877 4878 4879 5360 5361 5362 5363 5364 5365 4610 4611 4612 4613 4614 4615 4760 4761 4762 4763 4764 4765 4754 4755 4756 4757 4758 4759 5366 5367 5368 5369 5370 5371 4916 4917 4918 4919 4920 4921 5306 5307 5308 5309 5310 5311 48 4916 4917 4918 4919 4920 4921 5366 5367 5368 5369 5370 5371 4754 4755 4756 4757 4758 4759 4790 4791 4792 4793 4794 4795 4784 4785 4786 4787 4788 4789 5372 5373 5374 5375 5376 5377 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 48 4910 4911 4912 4913 4914 4915 5372 5373 5374 5375 5376 5377 4784 4785 4786 4787 4788 4789 4820 4821 4822 4823 4824 4825 4814 4815 4816 4817 4818 4819 5378 5379 5380 5381 5382 5383 5330 5331 5332 5333 5334 5335 5324 5325 5326 5327 5328 5329 48 4694 4695 4696 4697 4698 4699 5384 5385 5386 5387 5388 5389 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4376 4377 4378 4379 4380 4381 5390 5391 5392 5393 5394 5395 4646 4647 4648 4649 4650 4651 4700 4701 4702 4703 4704 4705 48 4646 4647 4648 4649 4650 4651 5390 5391 5392 5393 5394 5395 4376 4377 4378 4379 4380 4381 4442 4443 4444 4445 4446 4447 4436 4437 4438 4439 4440 4441 5396 5397 5398 5399 5400 5401 4598 4599 4600 4601 4602 4603 4652 4653 4654 4655 4656 4657 48 4598 4599 4600 4601 4602 4603 5396 5397 5398 5399 5400 5401 4436 4437 4438 4439 4440 4441 4472 4473 4474 4475 4476 4477 4466 4467 4468 4469 4470 4471 5402 5403 5404 5405 5406 5407 4610 4611 4612 4613 4614 4615 4604 4605 4606 4607 4608 4609 48 4610 4611 4612 4613 4614 4615 5402 5403 5404 5405 5406 5407 4466 4467 4468 4469 4470 4471 4502 4503 4504 4505 4506 4507 4496 4497 4498 4499 4500 4501 5408 5409 5410 5411 5412 5413 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 48 4754 4755 4756 4757 4758 4759 5408 5409 5410 5411 5412 5413 4496 4497 4498 4499 4500 4501 4562 4563 4564 4565 4566 4567 4556 4557 4558 4559 4560 4561 5414 5415 5416 5417 5418 5419 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 48 4784 4785 4786 4787 4788 4789 5414 5415 5416 5417 5418 5419 4556 4557 4558 4559 4560 4561 4592 4593 4594 4595 4596 4597 4586 4587 4588 4589 4590 4591 5420 5421 5422 5423 5424 5425 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 45 4382 4383 4384 4385 4386 4387 5426 5427 5428 5429 5430 5431 4121 4122 4123 4124 4125 4126 4127 4128 4129 4115 4116 4117 4118 4119 4120 5432 5433 5434 5435 5436 5437 4376 4377 4378 4379 4380 4381 4388 4389 4390 4391 4392 4393 48 4376 4377 4378 4379 4380 4381 5432 5433 5434 5435 5436 5437 4115 4116 4117 4118 4119 4120 4178 4179 4180 4181 4182 4183 4172 4173 4174 4175 4176 4177 5438 5439 5440 5441 5442 5443 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 48 4436 4437 4438 4439 4440 4441 5438 5439 5440 5441 5442 5443 4172 4173 4174 4175 4176 4177 4208 4209 4210 4211 4212 4213 4202 4203 4204 4205 4206 4207 5444 5445 5446 5447 5448 5449 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 48 4466 4467 4468 4469 4470 4471 5444 5445 5446 5447 5448 5449 4202 4203 4204 4205 4206 4207 4238 4239 4240 4241 4242 4243 4232 4233 4234 4235 4236 4237 5450 5451 5452 5453 5454 5455 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 48 4496 4497 4498 4499 4500 4501 5450 5451 5452 5453 5454 5455 4232 4233 4234 4235 4236 4237 4298 4299 4300 4301 4302 4303 4292 4293 4294 4295 4296 4297 5456 5457 5458 5459 5460 5461 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 48 4556 4557 4558 4559 4560 4561 5456 5457 5458 5459 5460 5461 4292 4293 4294 4295 4296 4297 4328 4329 4330 4331 4332 4333 4322 4323 4324 4325 4326 4327 5462 5463 5464 5465 5466 5467 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 48 1669 1670 1671 1672 1673 1674 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 5468 5469 5470 5471 5472 5473 4352 4353 4354 4355 4356 4357 4364 4365 4366 4367 4368 4369 1681 1682 1683 1684 1685 1686 5474 5475 5476 5477 5478 5479 36 4382 4383 4384 4385 4386 4387 4352 4353 4354 4355 4356 4357 4694 4695 4696 4697 4698 4699 4394 4395 4396 4397 4398 4399 5468 5469 5470 5471 5472 5473 5384 5385 5386 5387 5388 5389 48 1681 1682 1683 1684 1685 1686 4364 4365 4366 4367 4368 4369 4352 4353 4354 4355 4356 4357 5480 5481 5482 5483 5484 5485 4091 4092 4093 4094 4095 4096 4103 4104 4105 4106 4107 4108 1693 1694 1695 1696 1697 1698 5486 5487 5488 5489 5490 5491 45 4352 4353 4354 4355 4356 4357 4394 4395 4396 4397 4398 4399 4382 4383 4384 4385 4386 4387 5426 5427 5428 5429 5430 5431 4121 4122 4123 4130 4131 4132 4133 4134 4135 4091 4092 4093 4094 4095 4096 5480 5481 5482 5483 5484 5485 48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 4976 4977 4978 4979 4980 4981 4964 4965 4966 4967 4968 4969 5264 5265 5266 5267 5268 5269 5096 5097 5098 5099 5100 5101 5108 5109 5110 5111 5112 5113 48 4934 4935 4936 4937 4938 4939 4976 4977 4978 4979 4980 4981 4964 4965 4966 4967 4968 4969 5294 5295 5296 5297 5298 5299 4832 4833 4834 4835 4836 4837 4844 4845 4846 4847 4848 4849 4838 4839 4840 4841 4842 4843 5498 5499 5500 5501 5502 5503 48 4832 4833 4834 4835 4836 4837 5354 5355 5356 5357 5358 5359 4598 4599 4600 4601 4602 4603 4628 4629 4630 4631 4632 4633 4616 4617 4618 4619 4620 4621 5504 5505 5506 5507 5508 5509 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 48 4874 4875 4876 4877 4878 4879 5504 5505 5506 5507 5508 5509 4616 4617 4618 4619 4620 4621 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 5510 5511 5512 5513 5514 5515 4916 4917 4918 4919 4920 4921 5306 5307 5308 5309 5310 5311 48 4916 4917 4918 4919 4920 4921 5510 5511 5512 5513 5514 5515 4742 4743 4744 4745 4746 4747 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 5516 5517 5518 5519 5520 5521 4910 4911 4912 4913 4914 4915 4922 4923 4924 4925 4926 4927 48 4910 4911 4912 4913 4914 4915 5516 5517 5518 5519 5520 5521 4772 4773 4774 4775 4776 4777 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 5522 5523 5524 5525 5526 5527 5330 5331 5332 5333 5334 5335 5324 5325 5326 5327 5328 5329 48 4694 4695 4696 4697 4698 4699 5468 5469 5470 5471 5472 5473 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4346 4347 4348 4349 4350 4351 5528 5529 5530 5531 5532 5533 4646 4647 4648 4649 4650 4651 4700 4701 4702 4703 4704 4705 48 4646 4647 4648 4649 4650 4651 5528 5529 5530 5531 5532 5533 4346 4347 4348 4349 4350 4351 4424 4425 4426 4427 4428 4429 4418 4419 4420 4421 4422 4423 5534 5535 5536 5537 5538 5539 4598 4599 4600 4601 4602 4603 4652 4653 4654 4655 4656 4657 48 4598 4599 4600 4601 4602 4603 5534 5535 5536 5537 5538 5539 4418 4419 4420 4421 4422 4423 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 5540 5541 5542 5543 5544 5545 4616 4617 4618 4619 4620 4621 4628 4629 4630 4631 4632 4633 48 4616 4617 4618 4619 4620 4621 5540 5541 5542 5543 5544 5545 4454 4455 4456 4457 4458 4459 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 5546 5547 5548 5549 5550 5551 4742 4743 4744 4745 4746 4747 4736 4737 4738 4739 4740 4741 48 4742 4743 4744 4745 4746 4747 5546 5547 5548 5549 5550 5551 4484 4485 4486 4487 4488 4489 4538 4539 4540 4541 4542 4543 4532 4533 4534 4535 4536 4537 5552 5553 5554 5555 5556 5557 4772 4773 4774 4775 4776 4777 4766 4767 4768 4769 4770 4771 48 4772 4773 4774 4775 4776 4777 5552 5553 5554 5555 5556 5557 4532 4533 4534 4535 4536 4537 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 4802 4803 4804 4805 4806 4807 4796 4797 4798 4799 4800 4801 48 4352 4353 4354 4355 4356 4357 5480 5481 5482 5483 5484 5485 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4085 4086 4087 4088 4089 4090 5564 5565 5566 5567 5568 5569 4346 4347 4348 4349 4350 4351 4358 4359 4360 4361 4362 4363 48 4346 4347 4348 4349 4350 4351 5564 5565 5566 5567 5568 5569 4085 4086 4087 4088 4089 4090 4160 4161 4162 4163 4164 4165 4154 4155 4156 4157 4158 4159 5570 5571 5572 5573 5574 5575 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 48 4418 4419 4420 4421 4422 4423 5570 5571 5572 5573 5574 5575 4154 4155 4156 4157 4158 4159 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 5576 5577 5578 5579 5580 5581 4454 4455 4456 4457 4458 4459 4448 4449 4450 4451 4452 4453 48 4454 4455 4456 4457 4458 4459 5576 5577 5578 5579 5580 5581 4190 4191 4192 4193 4194 4195 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 5582 5583 5584 5585 5586 5587 4484 4485 4486 4487 4488 4489 4478 4479 4480 4481 4482 4483 48 4484 4485 4486 4487 4488 4489 5582 5583 5584 5585 5586 5587 4220 4221 4222 4223 4224 4225 4274 4275 4276 4277 4278 4279 4268 4269 4270 4271 4272 4273 5588 5589 5590 5591 5592 5593 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 48 4532 4533 4534 4535 4536 4537 5588 5589 5590 5591 5592 5593 4268 4269 4270 4271 4272 4273 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 4574 4575 4576 4577 4578 4579 4568 4569 4570 4571 4572 4573 48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 5078 5079 5080 5081 5082 5083 5072 5073 5074 5075 5076 5077 48 5078 5079 5080 5081 5082 5083 5600 5601 5602 5603 5604 5605 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 5120 5121 5122 5123 5124 5125 5114 5115 5116 5117 5118 5119 48 5120 5121 5122 5123 5124 5125 5606 5607 5608 5609 5610 5611 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 5150 5151 5152 5153 5154 5155 5144 5145 5146 5147 5148 5149 48 5150 5151 5152 5153 5154 5155 5612 5613 5614 5615 5616 5617 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 5180 5181 5182 5183 5184 5185 5174 5175 5176 5177 5178 5179 48 4934 4935 4936 4937 4938 4939 5498 5499 5500 5501 5502 5503 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 5624 5625 5626 5627 5628 5629 4946 4947 4948 4949 4950 4951 4940 4941 4942 4943 4944 4945 48 4988 4989 4990 4991 4992 4993 5630 5631 5632 5633 5634 5635 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 5018 5019 5020 5021 5022 5023 5012 5013 5014 5015 5016 5017 36 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 1669 1670 1671 1672 1673 1674 5642 5643 5644 5645 5646 5647 5342 5343 5344 5345 5346 5347 4730 4731 4732 4733 4734 4735 48 4886 4887 4888 4889 4890 4891 5654 5655 5656 5657 5658 5659 5648 5649 5650 5651 5652 5653 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 4898 4899 4900 4901 4902 4903 4892 4893 4894 4895 4896 4897 48 1669 1670 1671 1672 1673 1674 5474 5475 5476 5477 5478 5479 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 5678 5679 5680 5681 5682 5683 1717 1718 1719 1720 1721 1722 4730 4731 4732 4733 4734 4735 48 5648 5649 5650 5651 5652 5653 5684 5685 5686 5687 5688 5689 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 5666 5667 5668 5669 5670 5671 5660 5661 5662 5663 5664 5665 48 1681 1682 1683 1684 1685 1686 5486 5487 5488 5489 5490 5491 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 1729 1730 1731 1732 1733 1734 4334 4335 4336 4337 4338 4339 48 4508 4509 4510 4511 4512 4513 5702 5703 5704 5705 5706 5707 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 4520 4521 4522 4523 4524 4525 4514 4515 4516 4517 4518 4519 36 4634 4635 4636 4637 4638 4639 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 4664 4665 4666 4667 4668 4669 5642 5643 5644 5645 5646 5647 5348 5349 5350 5351 5352 5353 48 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 5714 5715 5716 5717 5718 5719 4634 4635 4636 4637 4638 4639 4664 4665 4666 4667 4668 4669 1717 1718 1719 1720 1721 1722 5678 5679 5680 5681 5682 5683 36 4646 4647 4648 4649 4650 4651 4634 4635 4636 4637 4638 4639 4346 4347 4348 4349 4350 4351 4640 4641 4642 4643 4644 4645 5714 5715 5716 5717 5718 5719 5528 5529 5530 5531 5532 5533 36 4376 4377 4378 4379 4380 4381 4646 4647 4648 4649 4650 4651 4346 4347 4348 4349 4350 4351 5390 5391 5392 5393 5394 5395 5528 5529 5530 5531 5532 5533 4370 4371 4372 4373 4374 4375 48 1729 1730 1731 1732 1733 1734 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 5564 5565 5566 5567 5568 5569 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 48 4346 4347 4348 4349 4350 4351 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 5432 5433 5434 5435 5436 5437 4115 4116 4117 4118 4119 4120 4109 4110 4111 4112 4113 4114 4085 4086 4087 4088 4089 4090 5564 5565 5566 5567 5568 5569 36 4832 4833 4834 4835 4836 4837 4670 4671 4672 4673 4674 4675 4838 4839 4840 4841 4842 4843 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 4844 4845 4846 4847 4848 4849 36 4598 4599 4600 4601 4602 4603 4670 4671 4672 4673 4674 4675 4832 4833 4834 4835 4836 4837 4676 4677 4678 4679 4680 4681 5720 5721 5722 5723 5724 5725 5354 5355 5356 5357 5358 5359 48 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4598 4599 4600 4601 4602 4603 5534 5535 5536 5537 5538 5539 4418 4419 4420 4421 4422 4423 4412 4413 4414 4415 4416 4417 4406 4407 4408 4409 4410 4411 5732 5733 5734 5735 5736 5737 36 4436 4437 4438 4439 4440 4441 4418 4419 4420 4421 4422 4423 4598 4599 4600 4601 4602 4603 4430 4431 4432 4433 4434 4435 5534 5535 5536 5537 5538 5539 5396 5397 5398 5399 5400 5401 48 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 5570 5571 5572 5573 5574 5575 4154 4155 4156 4157 4158 4159 4148 4149 4150 4151 4152 4153 4142 4143 4144 4145 4146 4147 5738 5739 5740 5741 5742 5743 48 4418 4419 4420 4421 4422 4423 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 5438 5439 5440 5441 5442 5443 4172 4173 4174 4175 4176 4177 4166 4167 4168 4169 4170 4171 4154 4155 4156 4157 4158 4159 5570 5571 5572 5573 5574 5575 48 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5270 5271 5272 5273 5274 5275 4958 4959 4960 4961 4962 4963 4952 4953 4954 4955 4956 4957 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 36 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4874 4875 4876 4877 4878 4879 4622 4623 4624 4625 4626 4627 5504 5505 5506 5507 5508 5509 5360 5361 5362 5363 5364 5365 48 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4610 4611 4612 4613 4614 4615 5402 5403 5404 5405 5406 5407 4466 4467 4468 4469 4470 4471 4460 4461 4462 4463 4464 4465 4454 4455 4456 4457 4458 4459 5540 5541 5542 5543 5544 5545 48 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 5444 5445 5446 5447 5448 5449 4202 4203 4204 4205 4206 4207 4196 4197 4198 4199 4200 4201 4190 4191 4192 4193 4194 4195 5576 5577 5578 5579 5580 5581 48 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5276 5277 5278 5279 5280 5281 5000 5001 5002 5003 5004 5005 4994 4995 4996 4997 4998 4999 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 48 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5312 5313 5314 5315 5316 5317 4916 4917 4918 4919 4920 4921 4928 4929 4930 4931 4932 4933 4886 4887 4888 4889 4890 4891 5630 5631 5632 5633 5634 5635 36 4754 4755 4756 4757 4758 4759 4742 4743 4744 4745 4746 4747 4916 4917 4918 4919 4920 4921 4748 4749 4750 4751 4752 4753 5510 5511 5512 5513 5514 5515 5366 5367 5368 5369 5370 5371 48 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 5408 5409 5410 5411 5412 5413 4496 4497 4498 4499 4500 4501 4490 4491 4492 4493 4494 4495 4484 4485 4486 4487 4488 4489 5546 5547 5548 5549 5550 5551 48 4508 4509 4510 4511 4512 4513 4544 4545 4546 4547 4548 4549 4484 4485 4486 4487 4488 4489 5582 5583 5584 5585 5586 5587 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 4244 4245 4246 4247 4248 4249 5702 5703 5704 5705 5706 5707 48 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 5450 5451 5452 5453 5454 5455 4232 4233 4234 4235 4236 4237 4226 4227 4228 4229 4230 4231 4220 4221 4222 4223 4224 4225 5582 5583 5584 5585 5586 5587 48 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5282 5283 5284 5285 5286 5287 5030 5031 5032 5033 5034 5035 5024 5025 5026 5027 5028 5029 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 48 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5318 5319 5320 5321 5322 5323 4910 4911 4912 4913 4914 4915 4904 4905 4906 4907 4908 4909 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 48 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 5516 5517 5518 5519 5520 5521 4772 4773 4774 4775 4776 4777 5744 5745 5746 5747 5748 5749 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 36 4784 4785 4786 4787 4788 4789 4772 4773 4774 4775 4776 4777 4910 4911 4912 4913 4914 4915 4778 4779 4780 4781 4782 4783 5516 5517 5518 5519 5520 5521 5372 5373 5374 5375 5376 5377 48 5666 5667 5668 5669 5670 5671 5744 5745 5746 5747 5748 5749 4772 4773 4774 4775 4776 4777 5552 5553 5554 5555 5556 5557 4532 4533 4534 4535 4536 4537 4526 4527 4528 4529 4530 4531 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 48 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 5414 5415 5416 5417 5418 5419 4556 4557 4558 4559 4560 4561 4550 4551 4552 4553 4554 4555 4532 4533 4534 4535 4536 4537 5552 5553 5554 5555 5556 5557 48 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 5588 5589 5590 5591 5592 5593 4268 4269 4270 4271 4272 4273 4262 4263 4264 4265 4266 4267 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 48 4532 4533 4534 4535 4536 4537 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 5456 5457 5458 5459 5460 5461 4292 4293 4294 4295 4296 4297 4286 4287 4288 4289 4290 4291 4268 4269 4270 4271 4272 4273 5588 5589 5590 5591 5592 5593 48 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5288 5289 5290 5291 5292 5293 5060 5061 5062 5063 5064 5065 5054 5055 5056 5057 5058 5059 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 36 4814 4815 4816 4817 4818 4819 4802 4803 4804 4805 4806 4807 5330 5331 5332 5333 5334 5335 4808 4809 4810 4811 4812 4813 5522 5523 5524 5525 5526 5527 5378 5379 5380 5381 5382 5383 48 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 5420 5421 5422 5423 5424 5425 4586 4587 4588 4589 4590 4591 4580 4581 4582 4583 4584 4585 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 48 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 5462 5463 5464 5465 5466 5467 4322 4323 4324 4325 4326 4327 4316 4317 4318 4319 4320 4321 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 48 4085 4086 4087 4088 4089 4090 5750 5751 5752 5753 5754 5755 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 5756 5757 5758 5759 5760 5761 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 48 4154 4155 4156 4157 4158 4159 5756 5757 5758 5759 5760 5761 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 5762 5763 5764 5765 5766 5767 4190 4191 4192 4193 4194 4195 4184 4185 4186 4187 4188 4189 48 4190 4191 4192 4193 4194 4195 5762 5763 5764 5765 5766 5767 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 5768 5769 5770 5771 5772 5773 4220 4221 4222 4223 4224 4225 4214 4215 4216 4217 4218 4219 48 4220 4221 4222 4223 4224 4225 5768 5769 5770 5771 5772 5773 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 5774 5775 5776 5777 5778 5779 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 48 4268 4269 4270 4271 4272 4273 5774 5775 5776 5777 5778 5779 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 5780 5781 5782 5783 5784 5785 4310 4311 4312 4313 4314 4315 4304 4305 4306 4307 4308 4309 48 1741 1742 1743 1744 1745 1746 5786 5787 5788 5789 5790 5791 5204 5205 5206 5207 5208 5209 5228 5229 5230 5231 5232 5233 55 56 57 58 59 60 5750 5751 5752 5753 5754 5755 4085 4086 4087 4088 4089 4090 4079 4080 4081 4082 4083 4084 48 4142 4143 4144 4145 4146 4147 5792 5793 5794 5795 5796 5797 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 67 68 69 70 71 72 5756 5757 5758 5759 5760 5761 4154 4155 4156 4157 4158 4159 4148 4149 4150 4151 4152 4153 48 4244 4245 4246 4247 4248 4249 5798 5799 5800 5801 5802 5803 5234 5235 5236 5237 5238 5239 5258 5259 5260 5261 5262 5263 91 92 93 94 95 96 5768 5769 5770 5771 5772 5773 4220 4221 4222 4223 4224 4225 4280 4281 4282 4283 4284 4285 48 4256 4257 4258 4259 4260 4261 5804 5805 5806 5807 5808 5809 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 103 104 105 106 107 108 5774 5775 5776 5777 5778 5779 4268 4269 4270 4271 4272 4273 4262 4263 4264 4265 4266 4267 48 4310 4311 4312 4313 4314 4315 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 4322 4323 4324 4325 4326 4327 4316 4317 4318 4319 4320 4321 48 5816 5817 5818 5819 5820 5821 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5828 5829 5830 5831 5832 5833 5822 5823 5824 5825 5826 5827 48 5882 5883 5884 5885 5886 5887 5876 5877 5878 5879 5880 5881 5870 5871 5872 5873 5874 5875 5888 5889 5890 5891 5892 5893 787 788 789 790 791 792 5894 5895 5896 5897 5898 5899 793 794 795 796 797 798 5900 5901 5902 5903 5904 5905 48 5846 5847 5848 5849 5850 5851 5906 5907 5908 5909 5910 5911 5870 5871 5872 5873 5874 5875 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5858 5859 5860 5861 5862 5863 5852 5853 5854 5855 5856 5857 48 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5918 5919 5920 5921 5922 5923 5912 5913 5914 5915 5916 5917 48 5870 5871 5872 5873 5874 5875 5906 5907 5908 5909 5910 5911 5846 5847 5848 5849 5850 5851 5948 5949 5950 5951 5952 5953 781 782 783 784 785 786 5954 5955 5956 5957 5958 5959 787 788 789 790 791 792 5888 5889 5890 5891 5892 5893 48 5882 5883 5884 5885 5886 5887 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5936 5937 5938 5939 5940 5941 5930 5931 5932 5933 5934 5935 48 5966 5967 5968 5969 5970 5971 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 5978 5979 5980 5981 5982 5983 5972 5973 5974 5975 5976 5977 36 5816 5817 5818 5819 5820 5821 781 782 783 784 785 786 5846 5847 5848 5849 5850 5851 6020 6021 6022 6023 6024 6025 5948 5949 5950 5951 5952 5953 5840 5841 5842 5843 5844 5845 48 5996 5997 5998 5999 6000 6001 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6008 6009 6010 6011 6012 6013 6002 6003 6004 6005 6006 6007 48 5816 5817 5818 5819 5820 5821 6062 6063 6064 6065 6066 6067 6056 6057 6058 6059 6060 6061 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 781 782 783 784 785 786 6020 6021 6022 6023 6024 6025 48 6032 6033 6034 6035 6036 6037 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6044 6045 6046 6047 6048 6049 6038 6039 6040 6041 6042 6043 48 6092 6093 6094 6095 6096 6097 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6104 6105 6106 6107 6108 6109 6098 6099 6100 6101 6102 6103 48 6122 6123 6124 6125 6126 6127 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6134 6135 6136 6137 6138 6139 6128 6129 6130 6131 6132 6133 48 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6152 6153 6154 6155 6156 6157 6212 6213 6214 6215 6216 6217 48 6152 6153 6154 6155 6156 6157 6206 6207 6208 6209 6210 6211 6200 6201 6202 6203 6204 6205 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6164 6165 6166 6167 6168 6169 6158 6159 6160 6161 6162 6163 48 6200 6201 6202 6203 6204 6205 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6224 6225 6226 6227 6228 6229 6218 6219 6220 6221 6222 6223 48 6242 6243 6244 6245 6246 6247 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6254 6255 6256 6257 6258 6259 6248 6249 6250 6251 6252 6253 48 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6272 6273 6274 6275 6276 6277 6332 6333 6334 6335 6336 6337 48 6272 6273 6274 6275 6276 6277 6326 6327 6328 6329 6330 6331 6320 6321 6322 6323 6324 6325 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6284 6285 6286 6287 6288 6289 6278 6279 6280 6281 6282 6283 48 6320 6321 6322 6323 6324 6325 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6344 6345 6346 6347 6348 6349 6338 6339 6340 6341 6342 6343 48 6362 6363 6364 6365 6366 6367 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6374 6375 6376 6377 6378 6379 6368 6369 6370 6371 6372 6373 48 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6392 6393 6394 6395 6396 6397 6452 6453 6454 6455 6456 6457 48 6392 6393 6394 6395 6396 6397 6446 6447 6448 6449 6450 6451 6440 6441 6442 6443 6444 6445 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6404 6405 6406 6407 6408 6409 6398 6399 6400 6401 6402 6403 48 6440 6441 6442 6443 6444 6445 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6464 6465 6466 6467 6468 6469 6458 6459 6460 6461 6462 6463 48 6482 6483 6484 6485 6486 6487 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6494 6495 6496 6497 6498 6499 6488 6489 6490 6491 6492 6493 48 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6512 6513 6514 6515 6516 6517 6572 6573 6574 6575 6576 6577 48 6512 6513 6514 6515 6516 6517 6566 6567 6568 6569 6570 6571 6560 6561 6562 6563 6564 6565 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6524 6525 6526 6527 6528 6529 6518 6519 6520 6521 6522 6523 48 6560 6561 6562 6563 6564 6565 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6584 6585 6586 6587 6588 6589 6578 6579 6580 6581 6582 6583 48 6602 6603 6604 6605 6606 6607 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6614 6615 6616 6617 6618 6619 6608 6609 6610 6611 6612 6613 48 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6632 6633 6634 6635 6636 6637 6692 6693 6694 6695 6696 6697 48 6632 6633 6634 6635 6636 6637 6686 6687 6688 6689 6690 6691 6680 6681 6682 6683 6684 6685 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6644 6645 6646 6647 6648 6649 6638 6639 6640 6641 6642 6643 48 6680 6681 6682 6683 6684 6685 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6704 6705 6706 6707 6708 6709 6698 6699 6700 6701 6702 6703 48 6722 6723 6724 6725 6726 6727 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6734 6735 6736 6737 6738 6739 6728 6729 6730 6731 6732 6733 48 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6752 6753 6754 6755 6756 6757 6812 6813 6814 6815 6816 6817 48 6752 6753 6754 6755 6756 6757 6806 6807 6808 6809 6810 6811 6800 6801 6802 6803 6804 6805 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6764 6765 6766 6767 6768 6769 6758 6759 6760 6761 6762 6763 48 6800 6801 6802 6803 6804 6805 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6824 6825 6826 6827 6828 6829 6818 6819 6820 6821 6822 6823 48 6842 6843 6844 6845 6846 6847 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6854 6855 6856 6857 6858 6859 6848 6849 6850 6851 6852 6853 48 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6872 6873 6874 6875 6876 6877 6932 6933 6934 6935 6936 6937 48 6872 6873 6874 6875 6876 6877 6926 6927 6928 6929 6930 6931 6920 6921 6922 6923 6924 6925 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6884 6885 6886 6887 6888 6889 6878 6879 6880 6881 6882 6883 48 6920 6921 6922 6923 6924 6925 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6944 6945 6946 6947 6948 6949 6938 6939 6940 6941 6942 6943 48 6962 6963 6964 6965 6966 6967 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 6974 6975 6976 6977 6978 6979 6968 6969 6970 6971 6972 6973 48 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 6992 6993 6994 6995 6996 6997 7052 7053 7054 7055 7056 7057 48 6992 6993 6994 6995 6996 6997 7046 7047 7048 7049 7050 7051 7040 7041 7042 7043 7044 7045 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7004 7005 7006 7007 7008 7009 6998 6999 7000 7001 7002 7003 48 7040 7041 7042 7043 7044 7045 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7064 7065 7066 7067 7068 7069 7058 7059 7060 7061 7062 7063 48 7082 7083 7084 7085 7086 7087 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7094 7095 7096 7097 7098 7099 7088 7089 7090 7091 7092 7093 48 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7112 7113 7114 7115 7116 7117 7172 7173 7174 7175 7176 7177 48 7112 7113 7114 7115 7116 7117 7166 7167 7168 7169 7170 7171 7160 7161 7162 7163 7164 7165 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7124 7125 7126 7127 7128 7129 7118 7119 7120 7121 7122 7123 48 7160 7161 7162 7163 7164 7165 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7184 7185 7186 7187 7188 7189 7178 7179 7180 7181 7182 7183 48 7202 7203 7204 7205 7206 7207 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7214 7215 7216 7217 7218 7219 7208 7209 7210 7211 7212 7213 48 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7232 7233 7234 7235 7236 7237 7292 7293 7294 7295 7296 7297 48 7232 7233 7234 7235 7236 7237 7286 7287 7288 7289 7290 7291 7280 7281 7282 7283 7284 7285 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7244 7245 7246 7247 7248 7249 7238 7239 7240 7241 7242 7243 48 7280 7281 7282 7283 7284 7285 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7304 7305 7306 7307 7308 7309 7298 7299 7300 7301 7302 7303 48 7322 7323 7324 7325 7326 7327 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7334 7335 7336 7337 7338 7339 7328 7329 7330 7331 7332 7333 48 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7352 7353 7354 7355 7356 7357 7412 7413 7414 7415 7416 7417 48 7352 7353 7354 7355 7356 7357 7406 7407 7408 7409 7410 7411 7400 7401 7402 7403 7404 7405 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7364 7365 7366 7367 7368 7369 7358 7359 7360 7361 7362 7363 48 7400 7401 7402 7403 7404 7405 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7424 7425 7426 7427 7428 7429 7418 7419 7420 7421 7422 7423 48 7442 7443 7444 7445 7446 7447 7466 7467 7468 7469 7470 7471 2083 2084 2085 2086 2087 2088 2125 2126 2127 2128 2129 2130 2113 2114 2115 2116 2117 2118 7472 7473 7474 7475 7476 7477 7454 7455 7456 7457 7458 7459 7448 7449 7450 7451 7452 7453 48 4574 4575 4576 4577 4578 4579 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 4586 4587 4588 4589 4590 4591 4580 4581 4582 4583 4584 4585 48 7484 7485 7486 7487 7488 7489 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7496 7497 7498 7499 7500 7501 7490 7491 7492 7493 7494 7495 48 7550 7551 7552 7553 7554 7555 7544 7545 7546 7547 7548 7549 7538 7539 7540 7541 7542 7543 7556 7557 7558 7559 7560 7561 751 752 753 754 755 756 7562 7563 7564 7565 7566 7567 757 758 759 760 761 762 7568 7569 7570 7571 7572 7573 48 7514 7515 7516 7517 7518 7519 7574 7575 7576 7577 7578 7579 7538 7539 7540 7541 7542 7543 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7526 7527 7528 7529 7530 7531 7520 7521 7522 7523 7524 7525 48 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7586 7587 7588 7589 7590 7591 7580 7581 7582 7583 7584 7585 48 7538 7539 7540 7541 7542 7543 7574 7575 7576 7577 7578 7579 7514 7515 7516 7517 7518 7519 7616 7617 7618 7619 7620 7621 745 746 747 748 749 750 7622 7623 7624 7625 7626 7627 751 752 753 754 755 756 7556 7557 7558 7559 7560 7561 48 7550 7551 7552 7553 7554 7555 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7604 7605 7606 7607 7608 7609 7598 7599 7600 7601 7602 7603 48 7634 7635 7636 7637 7638 7639 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7646 7647 7648 7649 7650 7651 7640 7641 7642 7643 7644 7645 36 7484 7485 7486 7487 7488 7489 745 746 747 748 749 750 7514 7515 7516 7517 7518 7519 7688 7689 7690 7691 7692 7693 7616 7617 7618 7619 7620 7621 7508 7509 7510 7511 7512 7513 48 7664 7665 7666 7667 7668 7669 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7676 7677 7678 7679 7680 7681 7670 7671 7672 7673 7674 7675 48 7484 7485 7486 7487 7488 7489 7730 7731 7732 7733 7734 7735 7724 7725 7726 7727 7728 7729 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 745 746 747 748 749 750 7688 7689 7690 7691 7692 7693 48 7700 7701 7702 7703 7704 7705 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7712 7713 7714 7715 7716 7717 7706 7707 7708 7709 7710 7711 48 7760 7761 7762 7763 7764 7765 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7772 7773 7774 7775 7776 7777 7766 7767 7768 7769 7770 7771 48 7790 7791 7792 7793 7794 7795 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7802 7803 7804 7805 7806 7807 7796 7797 7798 7799 7800 7801 48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7820 7821 7822 7823 7824 7825 7880 7881 7882 7883 7884 7885 48 7820 7821 7822 7823 7824 7825 7874 7875 7876 7877 7878 7879 7868 7869 7870 7871 7872 7873 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7832 7833 7834 7835 7836 7837 7826 7827 7828 7829 7830 7831 48 7868 7869 7870 7871 7872 7873 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7892 7893 7894 7895 7896 7897 7886 7887 7888 7889 7890 7891 48 7910 7911 7912 7913 7914 7915 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7922 7923 7924 7925 7926 7927 7916 7917 7918 7919 7920 7921 48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 7940 7941 7942 7943 7944 7945 8000 8001 8002 8003 8004 8005 48 7940 7941 7942 7943 7944 7945 7994 7995 7996 7997 7998 7999 7988 7989 7990 7991 7992 7993 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 7952 7953 7954 7955 7956 7957 7946 7947 7948 7949 7950 7951 48 7988 7989 7990 7991 7992 7993 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8012 8013 8014 8015 8016 8017 8006 8007 8008 8009 8010 8011 48 8030 8031 8032 8033 8034 8035 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8042 8043 8044 8045 8046 8047 8036 8037 8038 8039 8040 8041 48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8060 8061 8062 8063 8064 8065 8120 8121 8122 8123 8124 8125 48 8060 8061 8062 8063 8064 8065 8114 8115 8116 8117 8118 8119 8108 8109 8110 8111 8112 8113 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8072 8073 8074 8075 8076 8077 8066 8067 8068 8069 8070 8071 48 8108 8109 8110 8111 8112 8113 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8132 8133 8134 8135 8136 8137 8126 8127 8128 8129 8130 8131 48 8150 8151 8152 8153 8154 8155 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8162 8163 8164 8165 8166 8167 8156 8157 8158 8159 8160 8161 48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8180 8181 8182 8183 8184 8185 8240 8241 8242 8243 8244 8245 48 8180 8181 8182 8183 8184 8185 8234 8235 8236 8237 8238 8239 8228 8229 8230 8231 8232 8233 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8192 8193 8194 8195 8196 8197 8186 8187 8188 8189 8190 8191 48 8228 8229 8230 8231 8232 8233 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8252 8253 8254 8255 8256 8257 8246 8247 8248 8249 8250 8251 48 8270 8271 8272 8273 8274 8275 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8282 8283 8284 8285 8286 8287 8276 8277 8278 8279 8280 8281 48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8300 8301 8302 8303 8304 8305 8360 8361 8362 8363 8364 8365 48 8300 8301 8302 8303 8304 8305 8354 8355 8356 8357 8358 8359 8348 8349 8350 8351 8352 8353 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8312 8313 8314 8315 8316 8317 8306 8307 8308 8309 8310 8311 48 8348 8349 8350 8351 8352 8353 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8372 8373 8374 8375 8376 8377 8366 8367 8368 8369 8370 8371 48 8390 8391 8392 8393 8394 8395 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8402 8403 8404 8405 8406 8407 8396 8397 8398 8399 8400 8401 48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8420 8421 8422 8423 8424 8425 8480 8481 8482 8483 8484 8485 48 8420 8421 8422 8423 8424 8425 8474 8475 8476 8477 8478 8479 8468 8469 8470 8471 8472 8473 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8432 8433 8434 8435 8436 8437 8426 8427 8428 8429 8430 8431 48 8468 8469 8470 8471 8472 8473 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8492 8493 8494 8495 8496 8497 8486 8487 8488 8489 8490 8491 48 8510 8511 8512 8513 8514 8515 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8522 8523 8524 8525 8526 8527 8516 8517 8518 8519 8520 8521 48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8540 8541 8542 8543 8544 8545 8600 8601 8602 8603 8604 8605 48 8540 8541 8542 8543 8544 8545 8594 8595 8596 8597 8598 8599 8588 8589 8590 8591 8592 8593 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8552 8553 8554 8555 8556 8557 8546 8547 8548 8549 8550 8551 48 8588 8589 8590 8591 8592 8593 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8612 8613 8614 8615 8616 8617 8606 8607 8608 8609 8610 8611 48 8630 8631 8632 8633 8634 8635 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8642 8643 8644 8645 8646 8647 8636 8637 8638 8639 8640 8641 48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8660 8661 8662 8663 8664 8665 8720 8721 8722 8723 8724 8725 48 8660 8661 8662 8663 8664 8665 8714 8715 8716 8717 8718 8719 8708 8709 8710 8711 8712 8713 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8672 8673 8674 8675 8676 8677 8666 8667 8668 8669 8670 8671 48 8708 8709 8710 8711 8712 8713 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8732 8733 8734 8735 8736 8737 8726 8727 8728 8729 8730 8731 48 8750 8751 8752 8753 8754 8755 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8762 8763 8764 8765 8766 8767 8756 8757 8758 8759 8760 8761 48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8780 8781 8782 8783 8784 8785 8840 8841 8842 8843 8844 8845 48 8780 8781 8782 8783 8784 8785 8834 8835 8836 8837 8838 8839 8828 8829 8830 8831 8832 8833 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8792 8793 8794 8795 8796 8797 8786 8787 8788 8789 8790 8791 48 8828 8829 8830 8831 8832 8833 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8852 8853 8854 8855 8856 8857 8846 8847 8848 8849 8850 8851 48 8870 8871 8872 8873 8874 8875 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8882 8883 8884 8885 8886 8887 8876 8877 8878 8879 8880 8881 48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8900 8901 8902 8903 8904 8905 8960 8961 8962 8963 8964 8965 48 8900 8901 8902 8903 8904 8905 8954 8955 8956 8957 8958 8959 8948 8949 8950 8951 8952 8953 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8912 8913 8914 8915 8916 8917 8906 8907 8908 8909 8910 8911 48 8948 8949 8950 8951 8952 8953 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 8972 8973 8974 8975 8976 8977 8966 8967 8968 8969 8970 8971 48 8990 8991 8992 8993 8994 8995 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9002 9003 9004 9005 9006 9007 8996 8997 8998 8999 9000 9001 48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9020 9021 9022 9023 9024 9025 9080 9081 9082 9083 9084 9085 48 9020 9021 9022 9023 9024 9025 9074 9075 9076 9077 9078 9079 9068 9069 9070 9071 9072 9073 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9032 9033 9034 9035 9036 9037 9026 9027 9028 9029 9030 9031 48 9068 9069 9070 9071 9072 9073 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9092 9093 9094 9095 9096 9097 9086 9087 9088 9089 9090 9091 48 9110 9111 9112 9113 9114 9115 9134 9135 9136 9137 9138 9139 2305 2306 2307 2308 2309 2310 2399 2400 2401 2402 2403 2404 2387 2388 2389 2390 2391 2392 9140 9141 9142 9143 9144 9145 9122 9123 9124 9125 9126 9127 9116 9117 9118 9119 9120 9121 48 4802 4803 4804 4805 4806 4807 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 4814 4815 4816 4817 4818 4819 4808 4809 4810 4811 4812 4813 48 9152 9153 9154 9155 9156 9157 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9164 9165 9166 9167 9168 9169 9158 9159 9160 9161 9162 9163 48 9218 9219 9220 9221 9222 9223 9212 9213 9214 9215 9216 9217 9206 9207 9208 9209 9210 9211 9224 9225 9226 9227 9228 9229 715 716 717 718 719 720 9230 9231 9232 9233 9234 9235 721 722 723 724 725 726 9236 9237 9238 9239 9240 9241 48 9182 9183 9184 9185 9186 9187 9242 9243 9244 9245 9246 9247 9206 9207 9208 9209 9210 9211 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9194 9195 9196 9197 9198 9199 9188 9189 9190 9191 9192 9193 48 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9254 9255 9256 9257 9258 9259 9248 9249 9250 9251 9252 9253 48 9206 9207 9208 9209 9210 9211 9242 9243 9244 9245 9246 9247 9182 9183 9184 9185 9186 9187 9284 9285 9286 9287 9288 9289 709 710 711 712 713 714 9290 9291 9292 9293 9294 9295 715 716 717 718 719 720 9224 9225 9226 9227 9228 9229 48 9218 9219 9220 9221 9222 9223 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9272 9273 9274 9275 9276 9277 9266 9267 9268 9269 9270 9271 48 9302 9303 9304 9305 9306 9307 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9314 9315 9316 9317 9318 9319 9308 9309 9310 9311 9312 9313 36 9152 9153 9154 9155 9156 9157 709 710 711 712 713 714 9182 9183 9184 9185 9186 9187 9356 9357 9358 9359 9360 9361 9284 9285 9286 9287 9288 9289 9176 9177 9178 9179 9180 9181 48 9332 9333 9334 9335 9336 9337 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9344 9345 9346 9347 9348 9349 9338 9339 9340 9341 9342 9343 48 9152 9153 9154 9155 9156 9157 9398 9399 9400 9401 9402 9403 9392 9393 9394 9395 9396 9397 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 709 710 711 712 713 714 9356 9357 9358 9359 9360 9361 48 9368 9369 9370 9371 9372 9373 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9380 9381 9382 9383 9384 9385 9374 9375 9376 9377 9378 9379 48 9428 9429 9430 9431 9432 9433 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9440 9441 9442 9443 9444 9445 9434 9435 9436 9437 9438 9439 48 9458 9459 9460 9461 9462 9463 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9470 9471 9472 9473 9474 9475 9464 9465 9466 9467 9468 9469 48 9488 9489 9490 9491 9492 9493 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9500 9501 9502 9503 9504 9505 9494 9495 9496 9497 9498 9499 48 9518 9519 9520 9521 9522 9523 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9530 9531 9532 9533 9534 9535 9524 9525 9526 9527 9528 9529 48 9548 9549 9550 9551 9552 9553 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9560 9561 9562 9563 9564 9565 9554 9555 9556 9557 9558 9559 48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9578 9579 9580 9581 9582 9583 9638 9639 9640 9641 9642 9643 48 9578 9579 9580 9581 9582 9583 9632 9633 9634 9635 9636 9637 9626 9627 9628 9629 9630 9631 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9590 9591 9592 9593 9594 9595 9584 9585 9586 9587 9588 9589 48 9626 9627 9628 9629 9630 9631 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9650 9651 9652 9653 9654 9655 9644 9645 9646 9647 9648 9649 48 9668 9669 9670 9671 9672 9673 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9680 9681 9682 9683 9684 9685 9674 9675 9676 9677 9678 9679 48 9698 9699 9700 9701 9702 9703 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9710 9711 9712 9713 9714 9715 9704 9705 9706 9707 9708 9709 48 9728 9729 9730 9731 9732 9733 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9740 9741 9742 9743 9744 9745 9734 9735 9736 9737 9738 9739 48 9758 9759 9760 9761 9762 9763 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9770 9771 9772 9773 9774 9775 9764 9765 9766 9767 9768 9769 48 9788 9789 9790 9791 9792 9793 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9800 9801 9802 9803 9804 9805 9794 9795 9796 9797 9798 9799 48 9818 9819 9820 9821 9822 9823 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9830 9831 9832 9833 9834 9835 9824 9825 9826 9827 9828 9829 48 9848 9849 9850 9851 9852 9853 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9860 9861 9862 9863 9864 9865 9854 9855 9856 9857 9858 9859 48 9878 9879 9880 9881 9882 9883 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9890 9891 9892 9893 9894 9895 9884 9885 9886 9887 9888 9889 48 9908 9909 9910 9911 9912 9913 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9920 9921 9922 9923 9924 9925 9914 9915 9916 9917 9918 9919 48 9938 9939 9940 9941 9942 9943 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9950 9951 9952 9953 9954 9955 9944 9945 9946 9947 9948 9949 48 9968 9969 9970 9971 9972 9973 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 9980 9981 9982 9983 9984 9985 9974 9975 9976 9977 9978 9979 48 9998 9999 10000 10001 10002 10003 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10010 10011 10012 10013 10014 10015 10004 10005 10006 10007 10008 10009 48 10028 10029 10030 10031 10032 10033 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10040 10041 10042 10043 10044 10045 10034 10035 10036 10037 10038 10039 48 10058 10059 10060 10061 10062 10063 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10070 10071 10072 10073 10074 10075 10064 10065 10066 10067 10068 10069 48 10088 10089 10090 10091 10092 10093 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10100 10101 10102 10103 10104 10105 10094 10095 10096 10097 10098 10099 48 10118 10119 10120 10121 10122 10123 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10130 10131 10132 10133 10134 10135 10124 10125 10126 10127 10128 10129 48 10148 10149 10150 10151 10152 10153 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10160 10161 10162 10163 10164 10165 10154 10155 10156 10157 10158 10159 48 10178 10179 10180 10181 10182 10183 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10190 10191 10192 10193 10194 10195 10184 10185 10186 10187 10188 10189 48 10208 10209 10210 10211 10212 10213 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10220 10221 10222 10223 10224 10225 10214 10215 10216 10217 10218 10219 48 10238 10239 10240 10241 10242 10243 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10250 10251 10252 10253 10254 10255 10244 10245 10246 10247 10248 10249 48 10268 10269 10270 10271 10272 10273 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10280 10281 10282 10283 10284 10285 10274 10275 10276 10277 10278 10279 48 10298 10299 10300 10301 10302 10303 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10310 10311 10312 10313 10314 10315 10304 10305 10306 10307 10308 10309 48 10328 10329 10330 10331 10332 10333 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10340 10341 10342 10343 10344 10345 10334 10335 10336 10337 10338 10339 48 10358 10359 10360 10361 10362 10363 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10370 10371 10372 10373 10374 10375 10364 10365 10366 10367 10368 10369 48 10388 10389 10390 10391 10392 10393 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10400 10401 10402 10403 10404 10405 10394 10395 10396 10397 10398 10399 48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10418 10419 10420 10421 10422 10423 10478 10479 10480 10481 10482 10483 48 10418 10419 10420 10421 10422 10423 10472 10473 10474 10475 10476 10477 10466 10467 10468 10469 10470 10471 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10430 10431 10432 10433 10434 10435 10424 10425 10426 10427 10428 10429 48 10466 10467 10468 10469 10470 10471 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10490 10491 10492 10493 10494 10495 10484 10485 10486 10487 10488 10489 48 10508 10509 10510 10511 10512 10513 10532 10533 10534 10535 10536 10537 2579 2580 2581 2582 2583 2584 2675 2676 2677 2678 2679 2680 2663 2664 2665 2666 2667 2668 10538 10539 10540 10541 10542 10543 10520 10521 10522 10523 10524 10525 10514 10515 10516 10517 10518 10519 48 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10580 10581 10582 10583 10584 10585 10574 10575 10576 10577 10578 10579 10586 10587 10588 10589 10590 10591 48 10604 10605 10606 10607 10608 10609 10598 10599 10600 10601 10602 10603 10592 10593 10594 10595 10596 10597 10610 10611 10612 10613 10614 10615 655 656 657 658 659 660 10616 10617 10618 10619 10620 10621 667 668 669 670 671 672 10622 10623 10624 10625 10626 10627 48 10556 10557 10558 10559 10560 10561 10628 10629 10630 10631 10632 10633 10592 10593 10594 10595 10596 10597 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10568 10569 10570 10571 10572 10573 10562 10563 10564 10565 10566 10567 48 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10640 10641 10642 10643 10644 10645 10634 10635 10636 10637 10638 10639 48 10592 10593 10594 10595 10596 10597 10628 10629 10630 10631 10632 10633 10556 10557 10558 10559 10560 10561 10670 10671 10672 10673 10674 10675 643 644 645 646 647 648 10676 10677 10678 10679 10680 10681 655 656 657 658 659 660 10610 10611 10612 10613 10614 10615 48 10604 10605 10606 10607 10608 10609 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10658 10659 10660 10661 10662 10663 10652 10653 10654 10655 10656 10657 48 10688 10689 10690 10691 10692 10693 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10700 10701 10702 10703 10704 10705 10694 10695 10696 10697 10698 10699 36 10544 10545 10546 10547 10548 10549 643 644 645 646 647 648 10556 10557 10558 10559 10560 10561 10742 10743 10744 10745 10746 10747 10670 10671 10672 10673 10674 10675 10550 10551 10552 10553 10554 10555 48 10718 10719 10720 10721 10722 10723 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10730 10731 10732 10733 10734 10735 10724 10725 10726 10727 10728 10729 48 10544 10545 10546 10547 10548 10549 10784 10785 10786 10787 10788 10789 10778 10779 10780 10781 10782 10783 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 643 644 645 646 647 648 10742 10743 10744 10745 10746 10747 48 10754 10755 10756 10757 10758 10759 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10766 10767 10768 10769 10770 10771 10760 10761 10762 10763 10764 10765 48 10814 10815 10816 10817 10818 10819 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10826 10827 10828 10829 10830 10831 10820 10821 10822 10823 10824 10825 48 10844 10845 10846 10847 10848 10849 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10856 10857 10858 10859 10860 10861 10850 10851 10852 10853 10854 10855 48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10874 10875 10876 10877 10878 10879 10934 10935 10936 10937 10938 10939 48 10874 10875 10876 10877 10878 10879 10928 10929 10930 10931 10932 10933 10922 10923 10924 10925 10926 10927 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10886 10887 10888 10889 10890 10891 10880 10881 10882 10883 10884 10885 48 10922 10923 10924 10925 10926 10927 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10946 10947 10948 10949 10950 10951 10940 10941 10942 10943 10944 10945 48 10964 10965 10966 10967 10968 10969 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 10976 10977 10978 10979 10980 10981 10970 10971 10972 10973 10974 10975 48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 10994 10995 10996 10997 10998 10999 11054 11055 11056 11057 11058 11059 48 10994 10995 10996 10997 10998 10999 11048 11049 11050 11051 11052 11053 11042 11043 11044 11045 11046 11047 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11006 11007 11008 11009 11010 11011 11000 11001 11002 11003 11004 11005 48 11042 11043 11044 11045 11046 11047 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11066 11067 11068 11069 11070 11071 11060 11061 11062 11063 11064 11065 48 11084 11085 11086 11087 11088 11089 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11096 11097 11098 11099 11100 11101 11090 11091 11092 11093 11094 11095 48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11114 11115 11116 11117 11118 11119 11174 11175 11176 11177 11178 11179 48 11114 11115 11116 11117 11118 11119 11168 11169 11170 11171 11172 11173 11162 11163 11164 11165 11166 11167 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11126 11127 11128 11129 11130 11131 11120 11121 11122 11123 11124 11125 48 11162 11163 11164 11165 11166 11167 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11186 11187 11188 11189 11190 11191 11180 11181 11182 11183 11184 11185 48 11204 11205 11206 11207 11208 11209 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11216 11217 11218 11219 11220 11221 11210 11211 11212 11213 11214 11215 48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11234 11235 11236 11237 11238 11239 11294 11295 11296 11297 11298 11299 48 11234 11235 11236 11237 11238 11239 11288 11289 11290 11291 11292 11293 11282 11283 11284 11285 11286 11287 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11246 11247 11248 11249 11250 11251 11240 11241 11242 11243 11244 11245 48 11282 11283 11284 11285 11286 11287 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11306 11307 11308 11309 11310 11311 11300 11301 11302 11303 11304 11305 48 11324 11325 11326 11327 11328 11329 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11336 11337 11338 11339 11340 11341 11330 11331 11332 11333 11334 11335 48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11354 11355 11356 11357 11358 11359 11414 11415 11416 11417 11418 11419 48 11354 11355 11356 11357 11358 11359 11408 11409 11410 11411 11412 11413 11402 11403 11404 11405 11406 11407 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11366 11367 11368 11369 11370 11371 11360 11361 11362 11363 11364 11365 48 11402 11403 11404 11405 11406 11407 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11426 11427 11428 11429 11430 11431 11420 11421 11422 11423 11424 11425 48 11444 11445 11446 11447 11448 11449 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11456 11457 11458 11459 11460 11461 11450 11451 11452 11453 11454 11455 48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11474 11475 11476 11477 11478 11479 11534 11535 11536 11537 11538 11539 48 11474 11475 11476 11477 11478 11479 11528 11529 11530 11531 11532 11533 11522 11523 11524 11525 11526 11527 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11486 11487 11488 11489 11490 11491 11480 11481 11482 11483 11484 11485 48 11522 11523 11524 11525 11526 11527 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11546 11547 11548 11549 11550 11551 11540 11541 11542 11543 11544 11545 48 11564 11565 11566 11567 11568 11569 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11576 11577 11578 11579 11580 11581 11570 11571 11572 11573 11574 11575 48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11594 11595 11596 11597 11598 11599 11654 11655 11656 11657 11658 11659 48 11594 11595 11596 11597 11598 11599 11648 11649 11650 11651 11652 11653 11642 11643 11644 11645 11646 11647 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11606 11607 11608 11609 11610 11611 11600 11601 11602 11603 11604 11605 48 11642 11643 11644 11645 11646 11647 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11666 11667 11668 11669 11670 11671 11660 11661 11662 11663 11664 11665 48 11684 11685 11686 11687 11688 11689 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11696 11697 11698 11699 11700 11701 11690 11691 11692 11693 11694 11695 48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11714 11715 11716 11717 11718 11719 11774 11775 11776 11777 11778 11779 48 11714 11715 11716 11717 11718 11719 11768 11769 11770 11771 11772 11773 11762 11763 11764 11765 11766 11767 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11726 11727 11728 11729 11730 11731 11720 11721 11722 11723 11724 11725 48 11762 11763 11764 11765 11766 11767 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11786 11787 11788 11789 11790 11791 11780 11781 11782 11783 11784 11785 48 11804 11805 11806 11807 11808 11809 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11816 11817 11818 11819 11820 11821 11810 11811 11812 11813 11814 11815 48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11834 11835 11836 11837 11838 11839 11894 11895 11896 11897 11898 11899 48 11834 11835 11836 11837 11838 11839 11888 11889 11890 11891 11892 11893 11882 11883 11884 11885 11886 11887 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11846 11847 11848 11849 11850 11851 11840 11841 11842 11843 11844 11845 48 11882 11883 11884 11885 11886 11887 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11906 11907 11908 11909 11910 11911 11900 11901 11902 11903 11904 11905 48 11924 11925 11926 11927 11928 11929 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11936 11937 11938 11939 11940 11941 11930 11931 11932 11933 11934 11935 48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 11954 11955 11956 11957 11958 11959 12014 12015 12016 12017 12018 12019 48 11954 11955 11956 11957 11958 11959 12008 12009 12010 12011 12012 12013 12002 12003 12004 12005 12006 12007 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 11966 11967 11968 11969 11970 11971 11960 11961 11962 11963 11964 11965 48 12002 12003 12004 12005 12006 12007 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12026 12027 12028 12029 12030 12031 12020 12021 12022 12023 12024 12025 48 12044 12045 12046 12047 12048 12049 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12056 12057 12058 12059 12060 12061 12050 12051 12052 12053 12054 12055 48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12074 12075 12076 12077 12078 12079 12134 12135 12136 12137 12138 12139 48 12074 12075 12076 12077 12078 12079 12128 12129 12130 12131 12132 12133 12122 12123 12124 12125 12126 12127 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12086 12087 12088 12089 12090 12091 12080 12081 12082 12083 12084 12085 48 12122 12123 12124 12125 12126 12127 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12146 12147 12148 12149 12150 12151 12140 12141 12142 12143 12144 12145 48 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 637 638 639 640 641 642 12218 12219 12220 12221 12222 12223 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 48 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 637 638 639 640 641 642 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12248 12249 12250 12251 12252 12253 12242 12243 12244 12245 12246 12247 12254 12255 12256 12257 12258 12259 48 12200 12201 12202 12203 12204 12205 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 649 650 651 652 653 654 12278 12279 12280 12281 12282 12283 637 638 639 640 641 642 12206 12207 12208 12209 12210 12211 48 637 638 639 640 641 642 12278 12279 12280 12281 12282 12283 649 650 651 652 653 654 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12236 12237 12238 12239 12240 12241 12230 12231 12232 12233 12234 12235 48 12266 12267 12268 12269 12270 12271 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 661 662 663 664 665 666 12320 12321 12322 12323 12324 12325 649 650 651 652 653 654 12272 12273 12274 12275 12276 12277 48 649 650 651 652 653 654 12320 12321 12322 12323 12324 12325 661 662 663 664 665 666 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12290 12291 12292 12293 12294 12295 12284 12285 12286 12287 12288 12289 48 12308 12309 12310 12311 12312 12313 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 673 674 675 676 677 678 12362 12363 12364 12365 12366 12367 661 662 663 664 665 666 12314 12315 12316 12317 12318 12319 48 661 662 663 664 665 666 12362 12363 12364 12365 12366 12367 673 674 675 676 677 678 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12332 12333 12334 12335 12336 12337 12326 12327 12328 12329 12330 12331 48 12350 12351 12352 12353 12354 12355 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 685 686 687 688 689 690 12404 12405 12406 12407 12408 12409 673 674 675 676 677 678 12356 12357 12358 12359 12360 12361 48 673 674 675 676 677 678 12404 12405 12406 12407 12408 12409 685 686 687 688 689 690 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12374 12375 12376 12377 12378 12379 12368 12369 12370 12371 12372 12373 48 12392 12393 12394 12395 12396 12397 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 697 698 699 700 701 702 12446 12447 12448 12449 12450 12451 685 686 687 688 689 690 12398 12399 12400 12401 12402 12403 48 685 686 687 688 689 690 12446 12447 12448 12449 12450 12451 697 698 699 700 701 702 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12416 12417 12418 12419 12420 12421 12410 12411 12412 12413 12414 12415 48 12434 12435 12436 12437 12438 12439 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 697 698 699 700 701 702 12440 12441 12442 12443 12444 12445 48 697 698 699 700 701 702 12494 12495 12496 12497 12498 12499 12488 12489 12490 12491 12492 12493 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12458 12459 12460 12461 12462 12463 12452 12453 12454 12455 12456 12457 48 12476 12477 12478 12479 12480 12481 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12488 12489 12490 12491 12492 12493 12482 12483 12484 12485 12486 12487 48 12488 12489 12490 12491 12492 12493 12542 12543 12544 12545 12546 12547 12536 12537 12538 12539 12540 12541 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12506 12507 12508 12509 12510 12511 12500 12501 12502 12503 12504 12505 48 12524 12525 12526 12527 12528 12529 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12536 12537 12538 12539 12540 12541 12530 12531 12532 12533 12534 12535 48 12536 12537 12538 12539 12540 12541 12590 12591 12592 12593 12594 12595 12584 12585 12586 12587 12588 12589 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12554 12555 12556 12557 12558 12559 12548 12549 12550 12551 12552 12553 48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12584 12585 12586 12587 12588 12589 12578 12579 12580 12581 12582 12583 48 12584 12585 12586 12587 12588 12589 12638 12639 12640 12641 12642 12643 12632 12633 12634 12635 12636 12637 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12602 12603 12604 12605 12606 12607 12596 12597 12598 12599 12600 12601 48 12620 12621 12622 12623 12624 12625 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12632 12633 12634 12635 12636 12637 12626 12627 12628 12629 12630 12631 48 12632 12633 12634 12635 12636 12637 12686 12687 12688 12689 12690 12691 12680 12681 12682 12683 12684 12685 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12650 12651 12652 12653 12654 12655 12644 12645 12646 12647 12648 12649 48 12668 12669 12670 12671 12672 12673 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12680 12681 12682 12683 12684 12685 12674 12675 12676 12677 12678 12679 48 12680 12681 12682 12683 12684 12685 12734 12735 12736 12737 12738 12739 12728 12729 12730 12731 12732 12733 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12698 12699 12700 12701 12702 12703 12692 12693 12694 12695 12696 12697 48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12728 12729 12730 12731 12732 12733 12722 12723 12724 12725 12726 12727 48 12728 12729 12730 12731 12732 12733 12782 12783 12784 12785 12786 12787 12776 12777 12778 12779 12780 12781 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12746 12747 12748 12749 12750 12751 12740 12741 12742 12743 12744 12745 48 12764 12765 12766 12767 12768 12769 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12776 12777 12778 12779 12780 12781 12770 12771 12772 12773 12774 12775 48 12776 12777 12778 12779 12780 12781 12830 12831 12832 12833 12834 12835 12824 12825 12826 12827 12828 12829 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12794 12795 12796 12797 12798 12799 12788 12789 12790 12791 12792 12793 48 12812 12813 12814 12815 12816 12817 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12824 12825 12826 12827 12828 12829 12818 12819 12820 12821 12822 12823 48 12824 12825 12826 12827 12828 12829 12878 12879 12880 12881 12882 12883 12872 12873 12874 12875 12876 12877 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12842 12843 12844 12845 12846 12847 12836 12837 12838 12839 12840 12841 48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12872 12873 12874 12875 12876 12877 12866 12867 12868 12869 12870 12871 48 12872 12873 12874 12875 12876 12877 12926 12927 12928 12929 12930 12931 12920 12921 12922 12923 12924 12925 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12890 12891 12892 12893 12894 12895 12884 12885 12886 12887 12888 12889 48 12908 12909 12910 12911 12912 12913 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12920 12921 12922 12923 12924 12925 12914 12915 12916 12917 12918 12919 48 12920 12921 12922 12923 12924 12925 12974 12975 12976 12977 12978 12979 12968 12969 12970 12971 12972 12973 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12938 12939 12940 12941 12942 12943 12932 12933 12934 12935 12936 12937 48 12956 12957 12958 12959 12960 12961 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 12968 12969 12970 12971 12972 12973 12962 12963 12964 12965 12966 12967 48 12968 12969 12970 12971 12972 12973 13022 13023 13024 13025 13026 13027 13016 13017 13018 13019 13020 13021 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 12986 12987 12988 12989 12990 12991 12980 12981 12982 12983 12984 12985 48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13016 13017 13018 13019 13020 13021 13010 13011 13012 13013 13014 13015 48 13016 13017 13018 13019 13020 13021 13070 13071 13072 13073 13074 13075 13064 13065 13066 13067 13068 13069 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13034 13035 13036 13037 13038 13039 13028 13029 13030 13031 13032 13033 48 13052 13053 13054 13055 13056 13057 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13064 13065 13066 13067 13068 13069 13058 13059 13060 13061 13062 13063 48 13064 13065 13066 13067 13068 13069 13118 13119 13120 13121 13122 13123 13112 13113 13114 13115 13116 13117 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13082 13083 13084 13085 13086 13087 13076 13077 13078 13079 13080 13081 48 13100 13101 13102 13103 13104 13105 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13112 13113 13114 13115 13116 13117 13106 13107 13108 13109 13110 13111 48 13112 13113 13114 13115 13116 13117 13166 13167 13168 13169 13170 13171 13160 13161 13162 13163 13164 13165 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13130 13131 13132 13133 13134 13135 13124 13125 13126 13127 13128 13129 48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13160 13161 13162 13163 13164 13165 13154 13155 13156 13157 13158 13159 48 13160 13161 13162 13163 13164 13165 13214 13215 13216 13217 13218 13219 13208 13209 13210 13211 13212 13213 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13178 13179 13180 13181 13182 13183 13172 13173 13174 13175 13176 13177 48 13196 13197 13198 13199 13200 13201 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13208 13209 13210 13211 13212 13213 13202 13203 13204 13205 13206 13207 48 13208 13209 13210 13211 13212 13213 13262 13263 13264 13265 13266 13267 13256 13257 13258 13259 13260 13261 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13226 13227 13228 13229 13230 13231 13220 13221 13222 13223 13224 13225 48 13244 13245 13246 13247 13248 13249 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13256 13257 13258 13259 13260 13261 13250 13251 13252 13253 13254 13255 48 13256 13257 13258 13259 13260 13261 13310 13311 13312 13313 13314 13315 13304 13305 13306 13307 13308 13309 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13274 13275 13276 13277 13278 13279 13268 13269 13270 13271 13272 13273 48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13304 13305 13306 13307 13308 13309 13298 13299 13300 13301 13302 13303 48 13304 13305 13306 13307 13308 13309 13358 13359 13360 13361 13362 13363 13352 13353 13354 13355 13356 13357 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13322 13323 13324 13325 13326 13327 13316 13317 13318 13319 13320 13321 48 13340 13341 13342 13343 13344 13345 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13352 13353 13354 13355 13356 13357 13346 13347 13348 13349 13350 13351 48 13352 13353 13354 13355 13356 13357 13406 13407 13408 13409 13410 13411 13400 13401 13402 13403 13404 13405 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13370 13371 13372 13373 13374 13375 13364 13365 13366 13367 13368 13369 48 13388 13389 13390 13391 13392 13393 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13400 13401 13402 13403 13404 13405 13394 13395 13396 13397 13398 13399 48 13400 13401 13402 13403 13404 13405 13454 13455 13456 13457 13458 13459 13448 13449 13450 13451 13452 13453 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13418 13419 13420 13421 13422 13423 13412 13413 13414 13415 13416 13417 48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13448 13449 13450 13451 13452 13453 13442 13443 13444 13445 13446 13447 48 13448 13449 13450 13451 13452 13453 13502 13503 13504 13505 13506 13507 13496 13497 13498 13499 13500 13501 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13466 13467 13468 13469 13470 13471 13460 13461 13462 13463 13464 13465 48 13484 13485 13486 13487 13488 13489 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13496 13497 13498 13499 13500 13501 13490 13491 13492 13493 13494 13495 48 13496 13497 13498 13499 13500 13501 13550 13551 13552 13553 13554 13555 13544 13545 13546 13547 13548 13549 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13514 13515 13516 13517 13518 13519 13508 13509 13510 13511 13512 13513 48 13532 13533 13534 13535 13536 13537 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13544 13545 13546 13547 13548 13549 13538 13539 13540 13541 13542 13543 48 13544 13545 13546 13547 13548 13549 13598 13599 13600 13601 13602 13603 13592 13593 13594 13595 13596 13597 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13562 13563 13564 13565 13566 13567 13556 13557 13558 13559 13560 13561 48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13592 13593 13594 13595 13596 13597 13586 13587 13588 13589 13590 13591 48 13592 13593 13594 13595 13596 13597 13646 13647 13648 13649 13650 13651 13640 13641 13642 13643 13644 13645 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13610 13611 13612 13613 13614 13615 13604 13605 13606 13607 13608 13609 48 13628 13629 13630 13631 13632 13633 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13640 13641 13642 13643 13644 13645 13634 13635 13636 13637 13638 13639 48 13640 13641 13642 13643 13644 13645 13694 13695 13696 13697 13698 13699 13688 13689 13690 13691 13692 13693 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13658 13659 13660 13661 13662 13663 13652 13653 13654 13655 13656 13657 48 13676 13677 13678 13679 13680 13681 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13688 13689 13690 13691 13692 13693 13682 13683 13684 13685 13686 13687 48 13688 13689 13690 13691 13692 13693 13742 13743 13744 13745 13746 13747 13736 13737 13738 13739 13740 13741 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13706 13707 13708 13709 13710 13711 13700 13701 13702 13703 13704 13705 48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13736 13737 13738 13739 13740 13741 13730 13731 13732 13733 13734 13735 48 13736 13737 13738 13739 13740 13741 13790 13791 13792 13793 13794 13795 13784 13785 13786 13787 13788 13789 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13754 13755 13756 13757 13758 13759 13748 13749 13750 13751 13752 13753 48 13772 13773 13774 13775 13776 13777 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13784 13785 13786 13787 13788 13789 13778 13779 13780 13781 13782 13783 48 13784 13785 13786 13787 13788 13789 13838 13839 13840 13841 13842 13843 13832 13833 13834 13835 13836 13837 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13802 13803 13804 13805 13806 13807 13796 13797 13798 13799 13800 13801 48 13820 13821 13822 13823 13824 13825 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13832 13833 13834 13835 13836 13837 13826 13827 13828 13829 13830 13831 48 13832 13833 13834 13835 13836 13837 13886 13887 13888 13889 13890 13891 13880 13881 13882 13883 13884 13885 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13850 13851 13852 13853 13854 13855 13844 13845 13846 13847 13848 13849 48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13880 13881 13882 13883 13884 13885 13874 13875 13876 13877 13878 13879 48 13880 13881 13882 13883 13884 13885 13934 13935 13936 13937 13938 13939 13928 13929 13930 13931 13932 13933 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13898 13899 13900 13901 13902 13903 13892 13893 13894 13895 13896 13897 48 13916 13917 13918 13919 13920 13921 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13928 13929 13930 13931 13932 13933 13922 13923 13924 13925 13926 13927 48 13928 13929 13930 13931 13932 13933 13982 13983 13984 13985 13986 13987 13976 13977 13978 13979 13980 13981 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 13946 13947 13948 13949 13950 13951 13940 13941 13942 13943 13944 13945 48 13964 13965 13966 13967 13968 13969 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 13976 13977 13978 13979 13980 13981 13970 13971 13972 13973 13974 13975 48 13976 13977 13978 13979 13980 13981 14030 14031 14032 14033 14034 14035 14024 14025 14026 14027 14028 14029 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 13994 13995 13996 13997 13998 13999 13988 13989 13990 13991 13992 13993 48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14024 14025 14026 14027 14028 14029 14018 14019 14020 14021 14022 14023 48 14024 14025 14026 14027 14028 14029 14078 14079 14080 14081 14082 14083 14072 14073 14074 14075 14076 14077 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14042 14043 14044 14045 14046 14047 14036 14037 14038 14039 14040 14041 48 14060 14061 14062 14063 14064 14065 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14072 14073 14074 14075 14076 14077 14066 14067 14068 14069 14070 14071 48 14072 14073 14074 14075 14076 14077 14126 14127 14128 14129 14130 14131 14120 14121 14122 14123 14124 14125 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14090 14091 14092 14093 14094 14095 14084 14085 14086 14087 14088 14089 48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 5192 5193 5194 5195 5196 5197 5186 5187 5188 5189 5190 5191 48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14168 14169 14170 14171 14172 14173 14162 14163 14164 14165 14166 14167 48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14198 14199 14200 14201 14202 14203 14192 14193 14194 14195 14196 14197 48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14228 14229 14230 14231 14232 14233 14222 14223 14224 14225 14226 14227 48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14258 14259 14260 14261 14262 14263 14252 14253 14254 14255 14256 14257 48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14288 14289 14290 14291 14292 14293 14282 14283 14284 14285 14286 14287 48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14318 14319 14320 14321 14322 14323 14312 14313 14314 14315 14316 14317 48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14348 14349 14350 14351 14352 14353 14342 14343 14344 14345 14346 14347 48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14378 14379 14380 14381 14382 14383 14372 14373 14374 14375 14376 14377 48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14408 14409 14410 14411 14412 14413 14402 14403 14404 14405 14406 14407 48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14438 14439 14440 14441 14442 14443 14432 14433 14434 14435 14436 14437 48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14468 14469 14470 14471 14472 14473 14462 14463 14464 14465 14466 14467 48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14498 14499 14500 14501 14502 14503 14492 14493 14494 14495 14496 14497 48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14528 14529 14530 14531 14532 14533 14522 14523 14524 14525 14526 14527 48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14558 14559 14560 14561 14562 14563 14552 14553 14554 14555 14556 14557 48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14588 14589 14590 14591 14592 14593 14582 14583 14584 14585 14586 14587 48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14618 14619 14620 14621 14622 14623 14612 14613 14614 14615 14616 14617 48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14648 14649 14650 14651 14652 14653 14642 14643 14644 14645 14646 14647 48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14678 14679 14680 14681 14682 14683 14672 14673 14674 14675 14676 14677 48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14708 14709 14710 14711 14712 14713 14702 14703 14704 14705 14706 14707 48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14738 14739 14740 14741 14742 14743 14732 14733 14734 14735 14736 14737 48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14768 14769 14770 14771 14772 14773 14762 14763 14764 14765 14766 14767 48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14798 14799 14800 14801 14802 14803 14792 14793 14794 14795 14796 14797 48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14828 14829 14830 14831 14832 14833 14822 14823 14824 14825 14826 14827 48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14858 14859 14860 14861 14862 14863 14852 14853 14854 14855 14856 14857 48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14888 14889 14890 14891 14892 14893 14882 14883 14884 14885 14886 14887 48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14918 14919 14920 14921 14922 14923 14912 14913 14914 14915 14916 14917 48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14948 14949 14950 14951 14952 14953 14942 14943 14944 14945 14946 14947 48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 14978 14979 14980 14981 14982 14983 14972 14973 14974 14975 14976 14977 48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15008 15009 15010 15011 15012 15013 15002 15003 15004 15005 15006 15007 48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15038 15039 15040 15041 15042 15043 15032 15033 15034 15035 15036 15037 48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15068 15069 15070 15071 15072 15073 15062 15063 15064 15065 15066 15067 48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15098 15099 15100 15101 15102 15103 15092 15093 15094 15095 15096 15097 48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15128 15129 15130 15131 15132 15133 15122 15123 15124 15125 15126 15127 48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15158 15159 15160 15161 15162 15163 15152 15153 15154 15155 15156 15157 48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15188 15189 15190 15191 15192 15193 15182 15183 15184 15185 15186 15187 48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15218 15219 15220 15221 15222 15223 15212 15213 15214 15215 15216 15217 48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15248 15249 15250 15251 15252 15253 15242 15243 15244 15245 15246 15247 48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15278 15279 15280 15281 15282 15283 15272 15273 15274 15275 15276 15277 48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15308 15309 15310 15311 15312 15313 15302 15303 15304 15305 15306 15307 48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15338 15339 15340 15341 15342 15343 15332 15333 15334 15335 15336 15337 48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15368 15369 15370 15371 15372 15373 15362 15363 15364 15365 15366 15367 48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 3245 3246 3247 3248 3249 3250 3233 3234 3235 3236 3237 3238 15416 15417 15418 15419 15420 15421 15398 15399 15400 15401 15402 15403 15392 15393 15394 15395 15396 15397 48 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 139 140 141 142 143 144 133 134 135 136 137 138 127 128 129 130 131 132 15446 15447 15448 15449 15450 15451 48 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 211 212 213 214 215 216 205 206 207 208 209 210 199 200 201 202 203 204 15476 15477 15478 15479 15480 15481 48 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 247 248 249 250 251 252 241 242 243 244 245 246 235 236 237 238 239 240 15506 15507 15508 15509 15510 15511 48 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 283 284 285 286 287 288 277 278 279 280 281 282 271 272 273 274 275 276 15536 15537 15538 15539 15540 15541 48 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 319 320 321 322 323 324 313 314 315 316 317 318 307 308 309 310 311 312 15566 15567 15568 15569 15570 15571 48 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 355 356 357 358 359 360 349 350 351 352 353 354 343 344 345 346 347 348 15596 15597 15598 15599 15600 15601 48 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 391 392 393 394 395 396 385 386 387 388 389 390 379 380 381 382 383 384 15626 15627 15628 15629 15630 15631 48 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 427 428 429 430 431 432 421 422 423 424 425 426 415 416 417 418 419 420 15656 15657 15658 15659 15660 15661 48 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 463 464 465 466 467 468 457 458 459 460 461 462 451 452 453 454 455 456 15686 15687 15688 15689 15690 15691 48 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 499 500 501 502 503 504 493 494 495 496 497 498 487 488 489 490 491 492 15716 15717 15718 15719 15720 15721 48 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 535 536 537 538 539 540 529 530 531 532 533 534 523 524 525 526 527 528 15746 15747 15748 15749 15750 15751 48 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 571 572 573 574 575 576 565 566 567 568 569 570 559 560 561 562 563 564 15776 15777 15778 15779 15780 15781 48 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 607 608 609 610 611 612 601 602 603 604 605 606 595 596 597 598 599 600 15806 15807 15808 15809 15810 15811 48 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 15812 15813 15814 15815 15816 15817 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 36 12242 12243 12244 12245 12246 12247 12212 12213 12214 12215 12216 12217 5060 5061 5062 5063 5064 5065 12254 12255 12256 12257 12258 12259 15812 15813 15814 15815 15816 15817 15824 15825 15826 15827 15828 15829 36 10574 10575 10576 10577 10578 10579 10544 10545 10546 10547 10548 10549 5330 5331 5332 5333 5334 5335 10586 10587 10588 10589 10590 10591 15836 15837 15838 15839 15840 15841 15830 15831 15832 15833 15834 15835 48 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 15842 15843 15844 15845 15846 15847 3047 3048 3049 3050 3051 3052 3059 3060 3061 3062 3063 3064 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 36 14138 14139 14140 14141 14142 14143 3047 3048 3049 3050 3051 3052 14120 14121 14122 14123 14124 14125 15854 15855 15856 15857 15858 15859 15842 15843 15844 15845 15846 15847 14132 14133 14134 14135 14136 14137 36 12176 12177 12178 12179 12180 12181 2807 2808 2809 2810 2811 2812 12164 12165 12166 12167 12168 12169 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 12170 12171 12172 12173 12174 12175 48 5192 5193 5194 5195 5196 5197 14174 14175 14176 14177 14178 14179 14168 14169 14170 14171 14172 14173 15872 15873 15874 15875 15876 15877 12242 12243 12244 12245 12246 12247 15824 15825 15826 15827 15828 15829 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 48 14168 14169 14170 14171 14172 14173 14204 14205 14206 14207 14208 14209 14198 14199 14200 14201 14202 14203 15878 15879 15880 15881 15882 15883 12236 12237 12238 12239 12240 12241 12248 12249 12250 12251 12252 12253 12242 12243 12244 12245 12246 12247 15872 15873 15874 15875 15876 15877 48 14198 14199 14200 14201 14202 14203 14234 14235 14236 14237 14238 14239 14228 14229 14230 14231 14232 14233 15884 15885 15886 15887 15888 15889 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12236 12237 12238 12239 12240 12241 15878 15879 15880 15881 15882 15883 48 14228 14229 14230 14231 14232 14233 14264 14265 14266 14267 14268 14269 14258 14259 14260 14261 14262 14263 15890 15891 15892 15893 15894 15895 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12290 12291 12292 12293 12294 12295 15884 15885 15886 15887 15888 15889 48 14258 14259 14260 14261 14262 14263 14294 14295 14296 14297 14298 14299 14288 14289 14290 14291 14292 14293 15896 15897 15898 15899 15900 15901 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12332 12333 12334 12335 12336 12337 15890 15891 15892 15893 15894 15895 48 14288 14289 14290 14291 14292 14293 14324 14325 14326 14327 14328 14329 14318 14319 14320 14321 14322 14323 15902 15903 15904 15905 15906 15907 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12374 12375 12376 12377 12378 12379 15896 15897 15898 15899 15900 15901 48 14318 14319 14320 14321 14322 14323 14354 14355 14356 14357 14358 14359 14348 14349 14350 14351 14352 14353 15908 15909 15910 15911 15912 15913 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12416 12417 12418 12419 12420 12421 15902 15903 15904 15905 15906 15907 48 14348 14349 14350 14351 14352 14353 14384 14385 14386 14387 14388 14389 14378 14379 14380 14381 14382 14383 15914 15915 15916 15917 15918 15919 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12458 12459 12460 12461 12462 12463 15908 15909 15910 15911 15912 15913 48 14378 14379 14380 14381 14382 14383 14414 14415 14416 14417 14418 14419 14408 14409 14410 14411 14412 14413 15920 15921 15922 15923 15924 15925 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12506 12507 12508 12509 12510 12511 15914 15915 15916 15917 15918 15919 48 14408 14409 14410 14411 14412 14413 14444 14445 14446 14447 14448 14449 14438 14439 14440 14441 14442 14443 15926 15927 15928 15929 15930 15931 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12554 12555 12556 12557 12558 12559 15920 15921 15922 15923 15924 15925 48 14438 14439 14440 14441 14442 14443 14474 14475 14476 14477 14478 14479 14468 14469 14470 14471 14472 14473 15932 15933 15934 15935 15936 15937 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12602 12603 12604 12605 12606 12607 15926 15927 15928 15929 15930 15931 48 14468 14469 14470 14471 14472 14473 14504 14505 14506 14507 14508 14509 14498 14499 14500 14501 14502 14503 15938 15939 15940 15941 15942 15943 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12650 12651 12652 12653 12654 12655 15932 15933 15934 15935 15936 15937 48 14498 14499 14500 14501 14502 14503 14534 14535 14536 14537 14538 14539 14528 14529 14530 14531 14532 14533 15944 15945 15946 15947 15948 15949 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12698 12699 12700 12701 12702 12703 15938 15939 15940 15941 15942 15943 48 14528 14529 14530 14531 14532 14533 14564 14565 14566 14567 14568 14569 14558 14559 14560 14561 14562 14563 15950 15951 15952 15953 15954 15955 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12746 12747 12748 12749 12750 12751 15944 15945 15946 15947 15948 15949 48 14558 14559 14560 14561 14562 14563 14594 14595 14596 14597 14598 14599 14588 14589 14590 14591 14592 14593 15956 15957 15958 15959 15960 15961 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12794 12795 12796 12797 12798 12799 15950 15951 15952 15953 15954 15955 48 14588 14589 14590 14591 14592 14593 14624 14625 14626 14627 14628 14629 14618 14619 14620 14621 14622 14623 15962 15963 15964 15965 15966 15967 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12842 12843 12844 12845 12846 12847 15956 15957 15958 15959 15960 15961 48 14618 14619 14620 14621 14622 14623 14654 14655 14656 14657 14658 14659 14648 14649 14650 14651 14652 14653 15968 15969 15970 15971 15972 15973 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12890 12891 12892 12893 12894 12895 15962 15963 15964 15965 15966 15967 48 14648 14649 14650 14651 14652 14653 14684 14685 14686 14687 14688 14689 14678 14679 14680 14681 14682 14683 15974 15975 15976 15977 15978 15979 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12938 12939 12940 12941 12942 12943 15968 15969 15970 15971 15972 15973 48 14678 14679 14680 14681 14682 14683 14714 14715 14716 14717 14718 14719 14708 14709 14710 14711 14712 14713 15980 15981 15982 15983 15984 15985 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 12986 12987 12988 12989 12990 12991 15974 15975 15976 15977 15978 15979 48 14708 14709 14710 14711 14712 14713 14744 14745 14746 14747 14748 14749 14738 14739 14740 14741 14742 14743 15986 15987 15988 15989 15990 15991 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13034 13035 13036 13037 13038 13039 15980 15981 15982 15983 15984 15985 48 14738 14739 14740 14741 14742 14743 14774 14775 14776 14777 14778 14779 14768 14769 14770 14771 14772 14773 15992 15993 15994 15995 15996 15997 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13082 13083 13084 13085 13086 13087 15986 15987 15988 15989 15990 15991 48 14768 14769 14770 14771 14772 14773 14804 14805 14806 14807 14808 14809 14798 14799 14800 14801 14802 14803 15998 15999 16000 16001 16002 16003 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13130 13131 13132 13133 13134 13135 15992 15993 15994 15995 15996 15997 48 14798 14799 14800 14801 14802 14803 14834 14835 14836 14837 14838 14839 14828 14829 14830 14831 14832 14833 16004 16005 16006 16007 16008 16009 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13178 13179 13180 13181 13182 13183 15998 15999 16000 16001 16002 16003 48 14828 14829 14830 14831 14832 14833 14864 14865 14866 14867 14868 14869 14858 14859 14860 14861 14862 14863 16010 16011 16012 16013 16014 16015 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13226 13227 13228 13229 13230 13231 16004 16005 16006 16007 16008 16009 48 14858 14859 14860 14861 14862 14863 14894 14895 14896 14897 14898 14899 14888 14889 14890 14891 14892 14893 16016 16017 16018 16019 16020 16021 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13274 13275 13276 13277 13278 13279 16010 16011 16012 16013 16014 16015 48 14888 14889 14890 14891 14892 14893 14924 14925 14926 14927 14928 14929 14918 14919 14920 14921 14922 14923 16022 16023 16024 16025 16026 16027 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13322 13323 13324 13325 13326 13327 16016 16017 16018 16019 16020 16021 48 14918 14919 14920 14921 14922 14923 14954 14955 14956 14957 14958 14959 14948 14949 14950 14951 14952 14953 16028 16029 16030 16031 16032 16033 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13370 13371 13372 13373 13374 13375 16022 16023 16024 16025 16026 16027 48 14948 14949 14950 14951 14952 14953 14984 14985 14986 14987 14988 14989 14978 14979 14980 14981 14982 14983 16034 16035 16036 16037 16038 16039 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13418 13419 13420 13421 13422 13423 16028 16029 16030 16031 16032 16033 48 14978 14979 14980 14981 14982 14983 15014 15015 15016 15017 15018 15019 15008 15009 15010 15011 15012 15013 16040 16041 16042 16043 16044 16045 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13466 13467 13468 13469 13470 13471 16034 16035 16036 16037 16038 16039 48 15008 15009 15010 15011 15012 15013 15044 15045 15046 15047 15048 15049 15038 15039 15040 15041 15042 15043 16046 16047 16048 16049 16050 16051 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13514 13515 13516 13517 13518 13519 16040 16041 16042 16043 16044 16045 48 15038 15039 15040 15041 15042 15043 15074 15075 15076 15077 15078 15079 15068 15069 15070 15071 15072 15073 16052 16053 16054 16055 16056 16057 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13562 13563 13564 13565 13566 13567 16046 16047 16048 16049 16050 16051 48 15068 15069 15070 15071 15072 15073 15104 15105 15106 15107 15108 15109 15098 15099 15100 15101 15102 15103 16058 16059 16060 16061 16062 16063 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13610 13611 13612 13613 13614 13615 16052 16053 16054 16055 16056 16057 48 15098 15099 15100 15101 15102 15103 15134 15135 15136 15137 15138 15139 15128 15129 15130 15131 15132 15133 16064 16065 16066 16067 16068 16069 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13658 13659 13660 13661 13662 13663 16058 16059 16060 16061 16062 16063 48 15128 15129 15130 15131 15132 15133 15164 15165 15166 15167 15168 15169 15158 15159 15160 15161 15162 15163 16070 16071 16072 16073 16074 16075 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13706 13707 13708 13709 13710 13711 16064 16065 16066 16067 16068 16069 48 15158 15159 15160 15161 15162 15163 15194 15195 15196 15197 15198 15199 15188 15189 15190 15191 15192 15193 16076 16077 16078 16079 16080 16081 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13754 13755 13756 13757 13758 13759 16070 16071 16072 16073 16074 16075 48 15188 15189 15190 15191 15192 15193 15224 15225 15226 15227 15228 15229 15218 15219 15220 15221 15222 15223 16082 16083 16084 16085 16086 16087 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13802 13803 13804 13805 13806 13807 16076 16077 16078 16079 16080 16081 48 15218 15219 15220 15221 15222 15223 15254 15255 15256 15257 15258 15259 15248 15249 15250 15251 15252 15253 16088 16089 16090 16091 16092 16093 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13850 13851 13852 13853 13854 13855 16082 16083 16084 16085 16086 16087 48 15248 15249 15250 15251 15252 15253 15284 15285 15286 15287 15288 15289 15278 15279 15280 15281 15282 15283 16094 16095 16096 16097 16098 16099 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13898 13899 13900 13901 13902 13903 16088 16089 16090 16091 16092 16093 48 15278 15279 15280 15281 15282 15283 15314 15315 15316 15317 15318 15319 15308 15309 15310 15311 15312 15313 16100 16101 16102 16103 16104 16105 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 13946 13947 13948 13949 13950 13951 16094 16095 16096 16097 16098 16099 48 15308 15309 15310 15311 15312 15313 15344 15345 15346 15347 15348 15349 15338 15339 15340 15341 15342 15343 16106 16107 16108 16109 16110 16111 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 13994 13995 13996 13997 13998 13999 16100 16101 16102 16103 16104 16105 48 15338 15339 15340 15341 15342 15343 15374 15375 15376 15377 15378 15379 15368 15369 15370 15371 15372 15373 16112 16113 16114 16115 16116 16117 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14042 14043 14044 14045 14046 14047 16106 16107 16108 16109 16110 16111 48 15368 15369 15370 15371 15372 15373 15404 15405 15406 15407 15408 15409 15398 15399 15400 15401 15402 15403 16118 16119 16120 16121 16122 16123 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14090 14091 14092 14093 14094 14095 16112 16113 16114 16115 16116 16117 48 15398 15399 15400 15401 15402 15403 15416 15417 15418 15419 15420 15421 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 15854 15855 15856 15857 15858 15859 14138 14139 14140 14141 14142 14143 16118 16119 16120 16121 16122 16123 48 5060 5061 5062 5063 5064 5065 15824 15825 15826 15827 15828 15829 12242 12243 12244 12245 12246 12247 16124 16125 16126 16127 16128 16129 10574 10575 10576 10577 10578 10579 15830 15831 15832 15833 15834 15835 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 48 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12236 12237 12238 12239 12240 12241 16130 16131 16132 16133 16134 16135 10568 10569 10570 10571 10572 10573 10580 10581 10582 10583 10584 10585 10574 10575 10576 10577 10578 10579 16124 16125 16126 16127 16128 16129 48 12236 12237 12238 12239 12240 12241 12296 12297 12298 12299 12300 12301 12290 12291 12292 12293 12294 12295 16136 16137 16138 16139 16140 16141 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10568 10569 10570 10571 10572 10573 16130 16131 16132 16133 16134 16135 48 12290 12291 12292 12293 12294 12295 12338 12339 12340 12341 12342 12343 12332 12333 12334 12335 12336 12337 16142 16143 16144 16145 16146 16147 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10640 10641 10642 10643 10644 10645 16136 16137 16138 16139 16140 16141 48 12332 12333 12334 12335 12336 12337 12380 12381 12382 12383 12384 12385 12374 12375 12376 12377 12378 12379 16148 16149 16150 16151 16152 16153 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10658 10659 10660 10661 10662 10663 16142 16143 16144 16145 16146 16147 48 12374 12375 12376 12377 12378 12379 12422 12423 12424 12425 12426 12427 12416 12417 12418 12419 12420 12421 16154 16155 16156 16157 16158 16159 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10700 10701 10702 10703 10704 10705 16148 16149 16150 16151 16152 16153 48 12416 12417 12418 12419 12420 12421 12464 12465 12466 12467 12468 12469 12458 12459 12460 12461 12462 12463 16160 16161 16162 16163 16164 16165 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10730 10731 10732 10733 10734 10735 16154 16155 16156 16157 16158 16159 48 12458 12459 12460 12461 12462 12463 12512 12513 12514 12515 12516 12517 12506 12507 12508 12509 12510 12511 16166 16167 16168 16169 16170 16171 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10766 10767 10768 10769 10770 10771 16160 16161 16162 16163 16164 16165 48 12506 12507 12508 12509 12510 12511 12560 12561 12562 12563 12564 12565 12554 12555 12556 12557 12558 12559 16172 16173 16174 16175 16176 16177 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10826 10827 10828 10829 10830 10831 16166 16167 16168 16169 16170 16171 48 12554 12555 12556 12557 12558 12559 12608 12609 12610 12611 12612 12613 12602 12603 12604 12605 12606 12607 16178 16179 16180 16181 16182 16183 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10856 10857 10858 10859 10860 10861 16172 16173 16174 16175 16176 16177 48 12602 12603 12604 12605 12606 12607 12656 12657 12658 12659 12660 12661 12650 12651 12652 12653 12654 12655 16184 16185 16186 16187 16188 16189 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10886 10887 10888 10889 10890 10891 16178 16179 16180 16181 16182 16183 48 12650 12651 12652 12653 12654 12655 12704 12705 12706 12707 12708 12709 12698 12699 12700 12701 12702 12703 16190 16191 16192 16193 16194 16195 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10946 10947 10948 10949 10950 10951 16184 16185 16186 16187 16188 16189 48 12698 12699 12700 12701 12702 12703 12752 12753 12754 12755 12756 12757 12746 12747 12748 12749 12750 12751 16196 16197 16198 16199 16200 16201 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 10976 10977 10978 10979 10980 10981 16190 16191 16192 16193 16194 16195 48 12746 12747 12748 12749 12750 12751 12800 12801 12802 12803 12804 12805 12794 12795 12796 12797 12798 12799 16202 16203 16204 16205 16206 16207 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11006 11007 11008 11009 11010 11011 16196 16197 16198 16199 16200 16201 48 12794 12795 12796 12797 12798 12799 12848 12849 12850 12851 12852 12853 12842 12843 12844 12845 12846 12847 16208 16209 16210 16211 16212 16213 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11066 11067 11068 11069 11070 11071 16202 16203 16204 16205 16206 16207 48 12842 12843 12844 12845 12846 12847 12896 12897 12898 12899 12900 12901 12890 12891 12892 12893 12894 12895 16214 16215 16216 16217 16218 16219 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11096 11097 11098 11099 11100 11101 16208 16209 16210 16211 16212 16213 48 12890 12891 12892 12893 12894 12895 12944 12945 12946 12947 12948 12949 12938 12939 12940 12941 12942 12943 16220 16221 16222 16223 16224 16225 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11126 11127 11128 11129 11130 11131 16214 16215 16216 16217 16218 16219 48 12938 12939 12940 12941 12942 12943 12992 12993 12994 12995 12996 12997 12986 12987 12988 12989 12990 12991 16226 16227 16228 16229 16230 16231 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11186 11187 11188 11189 11190 11191 16220 16221 16222 16223 16224 16225 48 12986 12987 12988 12989 12990 12991 13040 13041 13042 13043 13044 13045 13034 13035 13036 13037 13038 13039 16232 16233 16234 16235 16236 16237 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11216 11217 11218 11219 11220 11221 16226 16227 16228 16229 16230 16231 48 13034 13035 13036 13037 13038 13039 13088 13089 13090 13091 13092 13093 13082 13083 13084 13085 13086 13087 16238 16239 16240 16241 16242 16243 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11246 11247 11248 11249 11250 11251 16232 16233 16234 16235 16236 16237 48 13082 13083 13084 13085 13086 13087 13136 13137 13138 13139 13140 13141 13130 13131 13132 13133 13134 13135 16244 16245 16246 16247 16248 16249 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11306 11307 11308 11309 11310 11311 16238 16239 16240 16241 16242 16243 48 13130 13131 13132 13133 13134 13135 13184 13185 13186 13187 13188 13189 13178 13179 13180 13181 13182 13183 16250 16251 16252 16253 16254 16255 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11336 11337 11338 11339 11340 11341 16244 16245 16246 16247 16248 16249 48 13178 13179 13180 13181 13182 13183 13232 13233 13234 13235 13236 13237 13226 13227 13228 13229 13230 13231 16256 16257 16258 16259 16260 16261 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11366 11367 11368 11369 11370 11371 16250 16251 16252 16253 16254 16255 48 13226 13227 13228 13229 13230 13231 13280 13281 13282 13283 13284 13285 13274 13275 13276 13277 13278 13279 16262 16263 16264 16265 16266 16267 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11426 11427 11428 11429 11430 11431 16256 16257 16258 16259 16260 16261 48 13274 13275 13276 13277 13278 13279 13328 13329 13330 13331 13332 13333 13322 13323 13324 13325 13326 13327 16268 16269 16270 16271 16272 16273 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11456 11457 11458 11459 11460 11461 16262 16263 16264 16265 16266 16267 48 13322 13323 13324 13325 13326 13327 13376 13377 13378 13379 13380 13381 13370 13371 13372 13373 13374 13375 16274 16275 16276 16277 16278 16279 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11486 11487 11488 11489 11490 11491 16268 16269 16270 16271 16272 16273 48 13370 13371 13372 13373 13374 13375 13424 13425 13426 13427 13428 13429 13418 13419 13420 13421 13422 13423 16280 16281 16282 16283 16284 16285 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11546 11547 11548 11549 11550 11551 16274 16275 16276 16277 16278 16279 48 13418 13419 13420 13421 13422 13423 13472 13473 13474 13475 13476 13477 13466 13467 13468 13469 13470 13471 16286 16287 16288 16289 16290 16291 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11576 11577 11578 11579 11580 11581 16280 16281 16282 16283 16284 16285 48 13466 13467 13468 13469 13470 13471 13520 13521 13522 13523 13524 13525 13514 13515 13516 13517 13518 13519 16292 16293 16294 16295 16296 16297 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11606 11607 11608 11609 11610 11611 16286 16287 16288 16289 16290 16291 48 13514 13515 13516 13517 13518 13519 13568 13569 13570 13571 13572 13573 13562 13563 13564 13565 13566 13567 16298 16299 16300 16301 16302 16303 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11666 11667 11668 11669 11670 11671 16292 16293 16294 16295 16296 16297 48 13562 13563 13564 13565 13566 13567 13616 13617 13618 13619 13620 13621 13610 13611 13612 13613 13614 13615 16304 16305 16306 16307 16308 16309 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11696 11697 11698 11699 11700 11701 16298 16299 16300 16301 16302 16303 48 13610 13611 13612 13613 13614 13615 13664 13665 13666 13667 13668 13669 13658 13659 13660 13661 13662 13663 16310 16311 16312 16313 16314 16315 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11726 11727 11728 11729 11730 11731 16304 16305 16306 16307 16308 16309 48 13658 13659 13660 13661 13662 13663 13712 13713 13714 13715 13716 13717 13706 13707 13708 13709 13710 13711 16316 16317 16318 16319 16320 16321 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11786 11787 11788 11789 11790 11791 16310 16311 16312 16313 16314 16315 48 13706 13707 13708 13709 13710 13711 13760 13761 13762 13763 13764 13765 13754 13755 13756 13757 13758 13759 16322 16323 16324 16325 16326 16327 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11816 11817 11818 11819 11820 11821 16316 16317 16318 16319 16320 16321 48 13754 13755 13756 13757 13758 13759 13808 13809 13810 13811 13812 13813 13802 13803 13804 13805 13806 13807 16328 16329 16330 16331 16332 16333 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11846 11847 11848 11849 11850 11851 16322 16323 16324 16325 16326 16327 48 13802 13803 13804 13805 13806 13807 13856 13857 13858 13859 13860 13861 13850 13851 13852 13853 13854 13855 16334 16335 16336 16337 16338 16339 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11906 11907 11908 11909 11910 11911 16328 16329 16330 16331 16332 16333 48 13850 13851 13852 13853 13854 13855 13904 13905 13906 13907 13908 13909 13898 13899 13900 13901 13902 13903 16340 16341 16342 16343 16344 16345 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11936 11937 11938 11939 11940 11941 16334 16335 16336 16337 16338 16339 48 13898 13899 13900 13901 13902 13903 13952 13953 13954 13955 13956 13957 13946 13947 13948 13949 13950 13951 16346 16347 16348 16349 16350 16351 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 11966 11967 11968 11969 11970 11971 16340 16341 16342 16343 16344 16345 48 13946 13947 13948 13949 13950 13951 14000 14001 14002 14003 14004 14005 13994 13995 13996 13997 13998 13999 16352 16353 16354 16355 16356 16357 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12026 12027 12028 12029 12030 12031 16346 16347 16348 16349 16350 16351 48 13994 13995 13996 13997 13998 13999 14048 14049 14050 14051 14052 14053 14042 14043 14044 14045 14046 14047 16358 16359 16360 16361 16362 16363 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12056 12057 12058 12059 12060 12061 16352 16353 16354 16355 16356 16357 48 14042 14043 14044 14045 14046 14047 14096 14097 14098 14099 14100 14101 14090 14091 14092 14093 14094 14095 16364 16365 16366 16367 16368 16369 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12086 12087 12088 12089 12090 12091 16358 16359 16360 16361 16362 16363 48 14090 14091 14092 14093 14094 14095 14144 14145 14146 14147 14148 14149 14138 14139 14140 14141 14142 14143 16370 16371 16372 16373 16374 16375 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12146 12147 12148 12149 12150 12151 16364 16365 16366 16367 16368 16369 48 14138 14139 14140 14141 14142 14143 15854 15855 15856 15857 15858 15859 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 15860 15861 15862 15863 15864 15865 12176 12177 12178 12179 12180 12181 16370 16371 16372 16373 16374 16375 48 5330 5331 5332 5333 5334 5335 15830 15831 15832 15833 15834 15835 10574 10575 10576 10577 10578 10579 16376 16377 16378 16379 16380 16381 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 4814 4815 4816 4817 4818 4819 5378 5379 5380 5381 5382 5383 48 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10568 10569 10570 10571 10572 10573 16382 16383 16384 16385 16386 16387 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9164 9165 9166 9167 9168 9169 16376 16377 16378 16379 16380 16381 48 10568 10569 10570 10571 10572 10573 10646 10647 10648 10649 10650 10651 10640 10641 10642 10643 10644 10645 16388 16389 16390 16391 16392 16393 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9194 9195 9196 9197 9198 9199 16382 16383 16384 16385 16386 16387 48 10640 10641 10642 10643 10644 10645 10664 10665 10666 10667 10668 10669 10658 10659 10660 10661 10662 10663 16394 16395 16396 16397 16398 16399 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9254 9255 9256 9257 9258 9259 16388 16389 16390 16391 16392 16393 48 10658 10659 10660 10661 10662 10663 10706 10707 10708 10709 10710 10711 10700 10701 10702 10703 10704 10705 16400 16401 16402 16403 16404 16405 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9272 9273 9274 9275 9276 9277 16394 16395 16396 16397 16398 16399 48 10700 10701 10702 10703 10704 10705 10736 10737 10738 10739 10740 10741 10730 10731 10732 10733 10734 10735 16406 16407 16408 16409 16410 16411 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9314 9315 9316 9317 9318 9319 16400 16401 16402 16403 16404 16405 48 10730 10731 10732 10733 10734 10735 10772 10773 10774 10775 10776 10777 10766 10767 10768 10769 10770 10771 16412 16413 16414 16415 16416 16417 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9344 9345 9346 9347 9348 9349 16406 16407 16408 16409 16410 16411 48 10766 10767 10768 10769 10770 10771 10832 10833 10834 10835 10836 10837 10826 10827 10828 10829 10830 10831 16418 16419 16420 16421 16422 16423 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9380 9381 9382 9383 9384 9385 16412 16413 16414 16415 16416 16417 48 10826 10827 10828 10829 10830 10831 10862 10863 10864 10865 10866 10867 10856 10857 10858 10859 10860 10861 16424 16425 16426 16427 16428 16429 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9440 9441 9442 9443 9444 9445 16418 16419 16420 16421 16422 16423 48 10856 10857 10858 10859 10860 10861 10892 10893 10894 10895 10896 10897 10886 10887 10888 10889 10890 10891 16430 16431 16432 16433 16434 16435 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9470 9471 9472 9473 9474 9475 16424 16425 16426 16427 16428 16429 48 10886 10887 10888 10889 10890 10891 10952 10953 10954 10955 10956 10957 10946 10947 10948 10949 10950 10951 16436 16437 16438 16439 16440 16441 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9500 9501 9502 9503 9504 9505 16430 16431 16432 16433 16434 16435 48 10946 10947 10948 10949 10950 10951 10982 10983 10984 10985 10986 10987 10976 10977 10978 10979 10980 10981 16442 16443 16444 16445 16446 16447 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9530 9531 9532 9533 9534 9535 16436 16437 16438 16439 16440 16441 48 10976 10977 10978 10979 10980 10981 11012 11013 11014 11015 11016 11017 11006 11007 11008 11009 11010 11011 16448 16449 16450 16451 16452 16453 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9560 9561 9562 9563 9564 9565 16442 16443 16444 16445 16446 16447 48 11006 11007 11008 11009 11010 11011 11072 11073 11074 11075 11076 11077 11066 11067 11068 11069 11070 11071 16454 16455 16456 16457 16458 16459 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9590 9591 9592 9593 9594 9595 16448 16449 16450 16451 16452 16453 48 11066 11067 11068 11069 11070 11071 11102 11103 11104 11105 11106 11107 11096 11097 11098 11099 11100 11101 16460 16461 16462 16463 16464 16465 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9650 9651 9652 9653 9654 9655 16454 16455 16456 16457 16458 16459 48 11096 11097 11098 11099 11100 11101 11132 11133 11134 11135 11136 11137 11126 11127 11128 11129 11130 11131 16466 16467 16468 16469 16470 16471 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9680 9681 9682 9683 9684 9685 16460 16461 16462 16463 16464 16465 48 11126 11127 11128 11129 11130 11131 11192 11193 11194 11195 11196 11197 11186 11187 11188 11189 11190 11191 16472 16473 16474 16475 16476 16477 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9710 9711 9712 9713 9714 9715 16466 16467 16468 16469 16470 16471 48 11186 11187 11188 11189 11190 11191 11222 11223 11224 11225 11226 11227 11216 11217 11218 11219 11220 11221 16478 16479 16480 16481 16482 16483 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9740 9741 9742 9743 9744 9745 16472 16473 16474 16475 16476 16477 48 11216 11217 11218 11219 11220 11221 11252 11253 11254 11255 11256 11257 11246 11247 11248 11249 11250 11251 16484 16485 16486 16487 16488 16489 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9770 9771 9772 9773 9774 9775 16478 16479 16480 16481 16482 16483 48 11246 11247 11248 11249 11250 11251 11312 11313 11314 11315 11316 11317 11306 11307 11308 11309 11310 11311 16490 16491 16492 16493 16494 16495 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9800 9801 9802 9803 9804 9805 16484 16485 16486 16487 16488 16489 48 11306 11307 11308 11309 11310 11311 11342 11343 11344 11345 11346 11347 11336 11337 11338 11339 11340 11341 16496 16497 16498 16499 16500 16501 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9830 9831 9832 9833 9834 9835 16490 16491 16492 16493 16494 16495 48 11336 11337 11338 11339 11340 11341 11372 11373 11374 11375 11376 11377 11366 11367 11368 11369 11370 11371 16502 16503 16504 16505 16506 16507 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9860 9861 9862 9863 9864 9865 16496 16497 16498 16499 16500 16501 48 11366 11367 11368 11369 11370 11371 11432 11433 11434 11435 11436 11437 11426 11427 11428 11429 11430 11431 16508 16509 16510 16511 16512 16513 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9890 9891 9892 9893 9894 9895 16502 16503 16504 16505 16506 16507 48 11426 11427 11428 11429 11430 11431 11462 11463 11464 11465 11466 11467 11456 11457 11458 11459 11460 11461 16514 16515 16516 16517 16518 16519 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9920 9921 9922 9923 9924 9925 16508 16509 16510 16511 16512 16513 48 11456 11457 11458 11459 11460 11461 11492 11493 11494 11495 11496 11497 11486 11487 11488 11489 11490 11491 16520 16521 16522 16523 16524 16525 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9950 9951 9952 9953 9954 9955 16514 16515 16516 16517 16518 16519 48 11486 11487 11488 11489 11490 11491 11552 11553 11554 11555 11556 11557 11546 11547 11548 11549 11550 11551 16526 16527 16528 16529 16530 16531 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 9980 9981 9982 9983 9984 9985 16520 16521 16522 16523 16524 16525 48 11546 11547 11548 11549 11550 11551 11582 11583 11584 11585 11586 11587 11576 11577 11578 11579 11580 11581 16532 16533 16534 16535 16536 16537 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10010 10011 10012 10013 10014 10015 16526 16527 16528 16529 16530 16531 48 11576 11577 11578 11579 11580 11581 11612 11613 11614 11615 11616 11617 11606 11607 11608 11609 11610 11611 16538 16539 16540 16541 16542 16543 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10040 10041 10042 10043 10044 10045 16532 16533 16534 16535 16536 16537 48 11606 11607 11608 11609 11610 11611 11672 11673 11674 11675 11676 11677 11666 11667 11668 11669 11670 11671 16544 16545 16546 16547 16548 16549 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10070 10071 10072 10073 10074 10075 16538 16539 16540 16541 16542 16543 48 11666 11667 11668 11669 11670 11671 11702 11703 11704 11705 11706 11707 11696 11697 11698 11699 11700 11701 16550 16551 16552 16553 16554 16555 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10100 10101 10102 10103 10104 10105 16544 16545 16546 16547 16548 16549 48 11696 11697 11698 11699 11700 11701 11732 11733 11734 11735 11736 11737 11726 11727 11728 11729 11730 11731 16556 16557 16558 16559 16560 16561 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10130 10131 10132 10133 10134 10135 16550 16551 16552 16553 16554 16555 48 11726 11727 11728 11729 11730 11731 11792 11793 11794 11795 11796 11797 11786 11787 11788 11789 11790 11791 16562 16563 16564 16565 16566 16567 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10160 10161 10162 10163 10164 10165 16556 16557 16558 16559 16560 16561 48 11786 11787 11788 11789 11790 11791 11822 11823 11824 11825 11826 11827 11816 11817 11818 11819 11820 11821 16568 16569 16570 16571 16572 16573 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10190 10191 10192 10193 10194 10195 16562 16563 16564 16565 16566 16567 48 11816 11817 11818 11819 11820 11821 11852 11853 11854 11855 11856 11857 11846 11847 11848 11849 11850 11851 16574 16575 16576 16577 16578 16579 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10220 10221 10222 10223 10224 10225 16568 16569 16570 16571 16572 16573 48 11846 11847 11848 11849 11850 11851 11912 11913 11914 11915 11916 11917 11906 11907 11908 11909 11910 11911 16580 16581 16582 16583 16584 16585 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10250 10251 10252 10253 10254 10255 16574 16575 16576 16577 16578 16579 48 11906 11907 11908 11909 11910 11911 11942 11943 11944 11945 11946 11947 11936 11937 11938 11939 11940 11941 16586 16587 16588 16589 16590 16591 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10280 10281 10282 10283 10284 10285 16580 16581 16582 16583 16584 16585 48 11936 11937 11938 11939 11940 11941 11972 11973 11974 11975 11976 11977 11966 11967 11968 11969 11970 11971 16592 16593 16594 16595 16596 16597 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10310 10311 10312 10313 10314 10315 16586 16587 16588 16589 16590 16591 48 11966 11967 11968 11969 11970 11971 12032 12033 12034 12035 12036 12037 12026 12027 12028 12029 12030 12031 16598 16599 16600 16601 16602 16603 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10340 10341 10342 10343 10344 10345 16592 16593 16594 16595 16596 16597 48 12026 12027 12028 12029 12030 12031 12062 12063 12064 12065 12066 12067 12056 12057 12058 12059 12060 12061 16604 16605 16606 16607 16608 16609 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10370 10371 10372 10373 10374 10375 16598 16599 16600 16601 16602 16603 48 12056 12057 12058 12059 12060 12061 12092 12093 12094 12095 12096 12097 12086 12087 12088 12089 12090 12091 16610 16611 16612 16613 16614 16615 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10400 10401 10402 10403 10404 10405 16604 16605 16606 16607 16608 16609 48 12086 12087 12088 12089 12090 12091 12152 12153 12154 12155 12156 12157 12146 12147 12148 12149 12150 12151 16616 16617 16618 16619 16620 16621 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10430 10431 10432 10433 10434 10435 16610 16611 16612 16613 16614 16615 48 12146 12147 12148 12149 12150 12151 12182 12183 12184 12185 12186 12187 12176 12177 12178 12179 12180 12181 16622 16623 16624 16625 16626 16627 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10490 10491 10492 10493 10494 10495 16616 16617 16618 16619 16620 16621 48 12176 12177 12178 12179 12180 12181 15860 15861 15862 15863 15864 15865 2807 2808 2809 2810 2811 2812 3479 3480 3481 3482 3483 3484 2663 2664 2665 2666 2667 2668 10538 10539 10540 10541 10542 10543 10520 10521 10522 10523 10524 10525 16622 16623 16624 16625 16626 16627 48 4814 4815 4816 4817 4818 4819 9170 9171 9172 9173 9174 9175 9164 9165 9166 9167 9168 9169 16628 16629 16630 16631 16632 16633 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 4586 4587 4588 4589 4590 4591 5420 5421 5422 5423 5424 5425 48 9164 9165 9166 9167 9168 9169 9200 9201 9202 9203 9204 9205 9194 9195 9196 9197 9198 9199 16634 16635 16636 16637 16638 16639 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7496 7497 7498 7499 7500 7501 16628 16629 16630 16631 16632 16633 48 9194 9195 9196 9197 9198 9199 9260 9261 9262 9263 9264 9265 9254 9255 9256 9257 9258 9259 16640 16641 16642 16643 16644 16645 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7526 7527 7528 7529 7530 7531 16634 16635 16636 16637 16638 16639 48 9254 9255 9256 9257 9258 9259 9278 9279 9280 9281 9282 9283 9272 9273 9274 9275 9276 9277 16646 16647 16648 16649 16650 16651 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7586 7587 7588 7589 7590 7591 16640 16641 16642 16643 16644 16645 48 9272 9273 9274 9275 9276 9277 9320 9321 9322 9323 9324 9325 9314 9315 9316 9317 9318 9319 16652 16653 16654 16655 16656 16657 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7604 7605 7606 7607 7608 7609 16646 16647 16648 16649 16650 16651 48 9314 9315 9316 9317 9318 9319 9350 9351 9352 9353 9354 9355 9344 9345 9346 9347 9348 9349 16658 16659 16660 16661 16662 16663 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7646 7647 7648 7649 7650 7651 16652 16653 16654 16655 16656 16657 48 9344 9345 9346 9347 9348 9349 9386 9387 9388 9389 9390 9391 9380 9381 9382 9383 9384 9385 16664 16665 16666 16667 16668 16669 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7676 7677 7678 7679 7680 7681 16658 16659 16660 16661 16662 16663 48 9380 9381 9382 9383 9384 9385 9446 9447 9448 9449 9450 9451 9440 9441 9442 9443 9444 9445 16670 16671 16672 16673 16674 16675 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7712 7713 7714 7715 7716 7717 16664 16665 16666 16667 16668 16669 48 9440 9441 9442 9443 9444 9445 9476 9477 9478 9479 9480 9481 9470 9471 9472 9473 9474 9475 16676 16677 16678 16679 16680 16681 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7772 7773 7774 7775 7776 7777 16670 16671 16672 16673 16674 16675 48 9470 9471 9472 9473 9474 9475 9506 9507 9508 9509 9510 9511 9500 9501 9502 9503 9504 9505 16682 16683 16684 16685 16686 16687 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7802 7803 7804 7805 7806 7807 16676 16677 16678 16679 16680 16681 48 9500 9501 9502 9503 9504 9505 9536 9537 9538 9539 9540 9541 9530 9531 9532 9533 9534 9535 16688 16689 16690 16691 16692 16693 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7832 7833 7834 7835 7836 7837 16682 16683 16684 16685 16686 16687 48 9530 9531 9532 9533 9534 9535 9566 9567 9568 9569 9570 9571 9560 9561 9562 9563 9564 9565 16694 16695 16696 16697 16698 16699 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7892 7893 7894 7895 7896 7897 16688 16689 16690 16691 16692 16693 48 9560 9561 9562 9563 9564 9565 9596 9597 9598 9599 9600 9601 9590 9591 9592 9593 9594 9595 16700 16701 16702 16703 16704 16705 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7922 7923 7924 7925 7926 7927 16694 16695 16696 16697 16698 16699 48 9590 9591 9592 9593 9594 9595 9656 9657 9658 9659 9660 9661 9650 9651 9652 9653 9654 9655 16706 16707 16708 16709 16710 16711 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 7952 7953 7954 7955 7956 7957 16700 16701 16702 16703 16704 16705 48 9650 9651 9652 9653 9654 9655 9686 9687 9688 9689 9690 9691 9680 9681 9682 9683 9684 9685 16712 16713 16714 16715 16716 16717 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8012 8013 8014 8015 8016 8017 16706 16707 16708 16709 16710 16711 48 9680 9681 9682 9683 9684 9685 9716 9717 9718 9719 9720 9721 9710 9711 9712 9713 9714 9715 16718 16719 16720 16721 16722 16723 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8042 8043 8044 8045 8046 8047 16712 16713 16714 16715 16716 16717 48 9710 9711 9712 9713 9714 9715 9746 9747 9748 9749 9750 9751 9740 9741 9742 9743 9744 9745 16724 16725 16726 16727 16728 16729 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8072 8073 8074 8075 8076 8077 16718 16719 16720 16721 16722 16723 48 9740 9741 9742 9743 9744 9745 9776 9777 9778 9779 9780 9781 9770 9771 9772 9773 9774 9775 16730 16731 16732 16733 16734 16735 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8132 8133 8134 8135 8136 8137 16724 16725 16726 16727 16728 16729 48 9770 9771 9772 9773 9774 9775 9806 9807 9808 9809 9810 9811 9800 9801 9802 9803 9804 9805 16736 16737 16738 16739 16740 16741 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8162 8163 8164 8165 8166 8167 16730 16731 16732 16733 16734 16735 48 9800 9801 9802 9803 9804 9805 9836 9837 9838 9839 9840 9841 9830 9831 9832 9833 9834 9835 16742 16743 16744 16745 16746 16747 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8192 8193 8194 8195 8196 8197 16736 16737 16738 16739 16740 16741 48 9830 9831 9832 9833 9834 9835 9866 9867 9868 9869 9870 9871 9860 9861 9862 9863 9864 9865 16748 16749 16750 16751 16752 16753 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8252 8253 8254 8255 8256 8257 16742 16743 16744 16745 16746 16747 48 9860 9861 9862 9863 9864 9865 9896 9897 9898 9899 9900 9901 9890 9891 9892 9893 9894 9895 16754 16755 16756 16757 16758 16759 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8282 8283 8284 8285 8286 8287 16748 16749 16750 16751 16752 16753 48 9890 9891 9892 9893 9894 9895 9926 9927 9928 9929 9930 9931 9920 9921 9922 9923 9924 9925 16760 16761 16762 16763 16764 16765 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8312 8313 8314 8315 8316 8317 16754 16755 16756 16757 16758 16759 48 9920 9921 9922 9923 9924 9925 9956 9957 9958 9959 9960 9961 9950 9951 9952 9953 9954 9955 16766 16767 16768 16769 16770 16771 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8372 8373 8374 8375 8376 8377 16760 16761 16762 16763 16764 16765 48 9950 9951 9952 9953 9954 9955 9986 9987 9988 9989 9990 9991 9980 9981 9982 9983 9984 9985 16772 16773 16774 16775 16776 16777 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8402 8403 8404 8405 8406 8407 16766 16767 16768 16769 16770 16771 48 9980 9981 9982 9983 9984 9985 10016 10017 10018 10019 10020 10021 10010 10011 10012 10013 10014 10015 16778 16779 16780 16781 16782 16783 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8432 8433 8434 8435 8436 8437 16772 16773 16774 16775 16776 16777 48 10010 10011 10012 10013 10014 10015 10046 10047 10048 10049 10050 10051 10040 10041 10042 10043 10044 10045 16784 16785 16786 16787 16788 16789 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8492 8493 8494 8495 8496 8497 16778 16779 16780 16781 16782 16783 48 10040 10041 10042 10043 10044 10045 10076 10077 10078 10079 10080 10081 10070 10071 10072 10073 10074 10075 16790 16791 16792 16793 16794 16795 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8522 8523 8524 8525 8526 8527 16784 16785 16786 16787 16788 16789 48 10070 10071 10072 10073 10074 10075 10106 10107 10108 10109 10110 10111 10100 10101 10102 10103 10104 10105 16796 16797 16798 16799 16800 16801 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8552 8553 8554 8555 8556 8557 16790 16791 16792 16793 16794 16795 48 10100 10101 10102 10103 10104 10105 10136 10137 10138 10139 10140 10141 10130 10131 10132 10133 10134 10135 16802 16803 16804 16805 16806 16807 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8612 8613 8614 8615 8616 8617 16796 16797 16798 16799 16800 16801 48 10130 10131 10132 10133 10134 10135 10166 10167 10168 10169 10170 10171 10160 10161 10162 10163 10164 10165 16808 16809 16810 16811 16812 16813 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8642 8643 8644 8645 8646 8647 16802 16803 16804 16805 16806 16807 48 10160 10161 10162 10163 10164 10165 10196 10197 10198 10199 10200 10201 10190 10191 10192 10193 10194 10195 16814 16815 16816 16817 16818 16819 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8672 8673 8674 8675 8676 8677 16808 16809 16810 16811 16812 16813 48 10190 10191 10192 10193 10194 10195 10226 10227 10228 10229 10230 10231 10220 10221 10222 10223 10224 10225 16820 16821 16822 16823 16824 16825 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8732 8733 8734 8735 8736 8737 16814 16815 16816 16817 16818 16819 48 10220 10221 10222 10223 10224 10225 10256 10257 10258 10259 10260 10261 10250 10251 10252 10253 10254 10255 16826 16827 16828 16829 16830 16831 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8762 8763 8764 8765 8766 8767 16820 16821 16822 16823 16824 16825 48 10250 10251 10252 10253 10254 10255 10286 10287 10288 10289 10290 10291 10280 10281 10282 10283 10284 10285 16832 16833 16834 16835 16836 16837 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8792 8793 8794 8795 8796 8797 16826 16827 16828 16829 16830 16831 48 10280 10281 10282 10283 10284 10285 10316 10317 10318 10319 10320 10321 10310 10311 10312 10313 10314 10315 16838 16839 16840 16841 16842 16843 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8852 8853 8854 8855 8856 8857 16832 16833 16834 16835 16836 16837 48 10310 10311 10312 10313 10314 10315 10346 10347 10348 10349 10350 10351 10340 10341 10342 10343 10344 10345 16844 16845 16846 16847 16848 16849 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8882 8883 8884 8885 8886 8887 16838 16839 16840 16841 16842 16843 48 10340 10341 10342 10343 10344 10345 10376 10377 10378 10379 10380 10381 10370 10371 10372 10373 10374 10375 16850 16851 16852 16853 16854 16855 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8912 8913 8914 8915 8916 8917 16844 16845 16846 16847 16848 16849 48 10370 10371 10372 10373 10374 10375 10406 10407 10408 10409 10410 10411 10400 10401 10402 10403 10404 10405 16856 16857 16858 16859 16860 16861 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 8972 8973 8974 8975 8976 8977 16850 16851 16852 16853 16854 16855 48 10400 10401 10402 10403 10404 10405 10436 10437 10438 10439 10440 10441 10430 10431 10432 10433 10434 10435 16862 16863 16864 16865 16866 16867 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9002 9003 9004 9005 9006 9007 16856 16857 16858 16859 16860 16861 48 10430 10431 10432 10433 10434 10435 10496 10497 10498 10499 10500 10501 10490 10491 10492 10493 10494 10495 16868 16869 16870 16871 16872 16873 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9032 9033 9034 9035 9036 9037 16862 16863 16864 16865 16866 16867 48 10490 10491 10492 10493 10494 10495 10526 10527 10528 10529 10530 10531 10520 10521 10522 10523 10524 10525 16874 16875 16876 16877 16878 16879 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9092 9093 9094 9095 9096 9097 16868 16869 16870 16871 16872 16873 48 10520 10521 10522 10523 10524 10525 10538 10539 10540 10541 10542 10543 2663 2664 2665 2666 2667 2668 3521 3522 3523 3524 3525 3526 2387 2388 2389 2390 2391 2392 9140 9141 9142 9143 9144 9145 9122 9123 9124 9125 9126 9127 16874 16875 16876 16877 16878 16879 48 4586 4587 4588 4589 4590 4591 7502 7503 7504 7505 7506 7507 7496 7497 7498 7499 7500 7501 16880 16881 16882 16883 16884 16885 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 4322 4323 4324 4325 4326 4327 5462 5463 5464 5465 5466 5467 48 7496 7497 7498 7499 7500 7501 7532 7533 7534 7535 7536 7537 7526 7527 7528 7529 7530 7531 16886 16887 16888 16889 16890 16891 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5828 5829 5830 5831 5832 5833 16880 16881 16882 16883 16884 16885 48 7526 7527 7528 7529 7530 7531 7592 7593 7594 7595 7596 7597 7586 7587 7588 7589 7590 7591 16892 16893 16894 16895 16896 16897 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5858 5859 5860 5861 5862 5863 16886 16887 16888 16889 16890 16891 48 7586 7587 7588 7589 7590 7591 7610 7611 7612 7613 7614 7615 7604 7605 7606 7607 7608 7609 16898 16899 16900 16901 16902 16903 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5918 5919 5920 5921 5922 5923 16892 16893 16894 16895 16896 16897 48 7604 7605 7606 7607 7608 7609 7652 7653 7654 7655 7656 7657 7646 7647 7648 7649 7650 7651 16904 16905 16906 16907 16908 16909 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5936 5937 5938 5939 5940 5941 16898 16899 16900 16901 16902 16903 48 7646 7647 7648 7649 7650 7651 7682 7683 7684 7685 7686 7687 7676 7677 7678 7679 7680 7681 16910 16911 16912 16913 16914 16915 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 5978 5979 5980 5981 5982 5983 16904 16905 16906 16907 16908 16909 48 7676 7677 7678 7679 7680 7681 7718 7719 7720 7721 7722 7723 7712 7713 7714 7715 7716 7717 16916 16917 16918 16919 16920 16921 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6008 6009 6010 6011 6012 6013 16910 16911 16912 16913 16914 16915 48 7712 7713 7714 7715 7716 7717 7778 7779 7780 7781 7782 7783 7772 7773 7774 7775 7776 7777 16922 16923 16924 16925 16926 16927 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6044 6045 6046 6047 6048 6049 16916 16917 16918 16919 16920 16921 48 7772 7773 7774 7775 7776 7777 7808 7809 7810 7811 7812 7813 7802 7803 7804 7805 7806 7807 16928 16929 16930 16931 16932 16933 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6104 6105 6106 6107 6108 6109 16922 16923 16924 16925 16926 16927 48 7802 7803 7804 7805 7806 7807 7838 7839 7840 7841 7842 7843 7832 7833 7834 7835 7836 7837 16934 16935 16936 16937 16938 16939 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6134 6135 6136 6137 6138 6139 16928 16929 16930 16931 16932 16933 48 7832 7833 7834 7835 7836 7837 7898 7899 7900 7901 7902 7903 7892 7893 7894 7895 7896 7897 16940 16941 16942 16943 16944 16945 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6164 6165 6166 6167 6168 6169 16934 16935 16936 16937 16938 16939 48 7892 7893 7894 7895 7896 7897 7928 7929 7930 7931 7932 7933 7922 7923 7924 7925 7926 7927 16946 16947 16948 16949 16950 16951 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6224 6225 6226 6227 6228 6229 16940 16941 16942 16943 16944 16945 48 7922 7923 7924 7925 7926 7927 7958 7959 7960 7961 7962 7963 7952 7953 7954 7955 7956 7957 16952 16953 16954 16955 16956 16957 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6254 6255 6256 6257 6258 6259 16946 16947 16948 16949 16950 16951 48 7952 7953 7954 7955 7956 7957 8018 8019 8020 8021 8022 8023 8012 8013 8014 8015 8016 8017 16958 16959 16960 16961 16962 16963 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6284 6285 6286 6287 6288 6289 16952 16953 16954 16955 16956 16957 48 8012 8013 8014 8015 8016 8017 8048 8049 8050 8051 8052 8053 8042 8043 8044 8045 8046 8047 16964 16965 16966 16967 16968 16969 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6344 6345 6346 6347 6348 6349 16958 16959 16960 16961 16962 16963 48 8042 8043 8044 8045 8046 8047 8078 8079 8080 8081 8082 8083 8072 8073 8074 8075 8076 8077 16970 16971 16972 16973 16974 16975 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6374 6375 6376 6377 6378 6379 16964 16965 16966 16967 16968 16969 48 8072 8073 8074 8075 8076 8077 8138 8139 8140 8141 8142 8143 8132 8133 8134 8135 8136 8137 16976 16977 16978 16979 16980 16981 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6404 6405 6406 6407 6408 6409 16970 16971 16972 16973 16974 16975 48 8132 8133 8134 8135 8136 8137 8168 8169 8170 8171 8172 8173 8162 8163 8164 8165 8166 8167 16982 16983 16984 16985 16986 16987 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6464 6465 6466 6467 6468 6469 16976 16977 16978 16979 16980 16981 48 8162 8163 8164 8165 8166 8167 8198 8199 8200 8201 8202 8203 8192 8193 8194 8195 8196 8197 16988 16989 16990 16991 16992 16993 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6494 6495 6496 6497 6498 6499 16982 16983 16984 16985 16986 16987 48 8192 8193 8194 8195 8196 8197 8258 8259 8260 8261 8262 8263 8252 8253 8254 8255 8256 8257 16994 16995 16996 16997 16998 16999 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6524 6525 6526 6527 6528 6529 16988 16989 16990 16991 16992 16993 48 8252 8253 8254 8255 8256 8257 8288 8289 8290 8291 8292 8293 8282 8283 8284 8285 8286 8287 17000 17001 17002 17003 17004 17005 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6584 6585 6586 6587 6588 6589 16994 16995 16996 16997 16998 16999 48 8282 8283 8284 8285 8286 8287 8318 8319 8320 8321 8322 8323 8312 8313 8314 8315 8316 8317 17006 17007 17008 17009 17010 17011 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6614 6615 6616 6617 6618 6619 17000 17001 17002 17003 17004 17005 48 8312 8313 8314 8315 8316 8317 8378 8379 8380 8381 8382 8383 8372 8373 8374 8375 8376 8377 17012 17013 17014 17015 17016 17017 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6644 6645 6646 6647 6648 6649 17006 17007 17008 17009 17010 17011 48 8372 8373 8374 8375 8376 8377 8408 8409 8410 8411 8412 8413 8402 8403 8404 8405 8406 8407 17018 17019 17020 17021 17022 17023 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6704 6705 6706 6707 6708 6709 17012 17013 17014 17015 17016 17017 48 8402 8403 8404 8405 8406 8407 8438 8439 8440 8441 8442 8443 8432 8433 8434 8435 8436 8437 17024 17025 17026 17027 17028 17029 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6734 6735 6736 6737 6738 6739 17018 17019 17020 17021 17022 17023 48 8432 8433 8434 8435 8436 8437 8498 8499 8500 8501 8502 8503 8492 8493 8494 8495 8496 8497 17030 17031 17032 17033 17034 17035 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6764 6765 6766 6767 6768 6769 17024 17025 17026 17027 17028 17029 48 8492 8493 8494 8495 8496 8497 8528 8529 8530 8531 8532 8533 8522 8523 8524 8525 8526 8527 17036 17037 17038 17039 17040 17041 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6824 6825 6826 6827 6828 6829 17030 17031 17032 17033 17034 17035 48 8522 8523 8524 8525 8526 8527 8558 8559 8560 8561 8562 8563 8552 8553 8554 8555 8556 8557 17042 17043 17044 17045 17046 17047 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6854 6855 6856 6857 6858 6859 17036 17037 17038 17039 17040 17041 48 8552 8553 8554 8555 8556 8557 8618 8619 8620 8621 8622 8623 8612 8613 8614 8615 8616 8617 17048 17049 17050 17051 17052 17053 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6884 6885 6886 6887 6888 6889 17042 17043 17044 17045 17046 17047 48 8612 8613 8614 8615 8616 8617 8648 8649 8650 8651 8652 8653 8642 8643 8644 8645 8646 8647 17054 17055 17056 17057 17058 17059 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6944 6945 6946 6947 6948 6949 17048 17049 17050 17051 17052 17053 48 8642 8643 8644 8645 8646 8647 8678 8679 8680 8681 8682 8683 8672 8673 8674 8675 8676 8677 17060 17061 17062 17063 17064 17065 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 6974 6975 6976 6977 6978 6979 17054 17055 17056 17057 17058 17059 48 8672 8673 8674 8675 8676 8677 8738 8739 8740 8741 8742 8743 8732 8733 8734 8735 8736 8737 17066 17067 17068 17069 17070 17071 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7004 7005 7006 7007 7008 7009 17060 17061 17062 17063 17064 17065 48 8732 8733 8734 8735 8736 8737 8768 8769 8770 8771 8772 8773 8762 8763 8764 8765 8766 8767 17072 17073 17074 17075 17076 17077 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7064 7065 7066 7067 7068 7069 17066 17067 17068 17069 17070 17071 48 8762 8763 8764 8765 8766 8767 8798 8799 8800 8801 8802 8803 8792 8793 8794 8795 8796 8797 17078 17079 17080 17081 17082 17083 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7094 7095 7096 7097 7098 7099 17072 17073 17074 17075 17076 17077 48 8792 8793 8794 8795 8796 8797 8858 8859 8860 8861 8862 8863 8852 8853 8854 8855 8856 8857 17084 17085 17086 17087 17088 17089 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7124 7125 7126 7127 7128 7129 17078 17079 17080 17081 17082 17083 48 8852 8853 8854 8855 8856 8857 8888 8889 8890 8891 8892 8893 8882 8883 8884 8885 8886 8887 17090 17091 17092 17093 17094 17095 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7184 7185 7186 7187 7188 7189 17084 17085 17086 17087 17088 17089 48 8882 8883 8884 8885 8886 8887 8918 8919 8920 8921 8922 8923 8912 8913 8914 8915 8916 8917 17096 17097 17098 17099 17100 17101 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7214 7215 7216 7217 7218 7219 17090 17091 17092 17093 17094 17095 48 8912 8913 8914 8915 8916 8917 8978 8979 8980 8981 8982 8983 8972 8973 8974 8975 8976 8977 17102 17103 17104 17105 17106 17107 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7244 7245 7246 7247 7248 7249 17096 17097 17098 17099 17100 17101 48 8972 8973 8974 8975 8976 8977 9008 9009 9010 9011 9012 9013 9002 9003 9004 9005 9006 9007 17108 17109 17110 17111 17112 17113 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7304 7305 7306 7307 7308 7309 17102 17103 17104 17105 17106 17107 48 9002 9003 9004 9005 9006 9007 9038 9039 9040 9041 9042 9043 9032 9033 9034 9035 9036 9037 17114 17115 17116 17117 17118 17119 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7334 7335 7336 7337 7338 7339 17108 17109 17110 17111 17112 17113 48 9032 9033 9034 9035 9036 9037 9098 9099 9100 9101 9102 9103 9092 9093 9094 9095 9096 9097 17120 17121 17122 17123 17124 17125 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7364 7365 7366 7367 7368 7369 17114 17115 17116 17117 17118 17119 48 9092 9093 9094 9095 9096 9097 9128 9129 9130 9131 9132 9133 9122 9123 9124 9125 9126 9127 17126 17127 17128 17129 17130 17131 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7424 7425 7426 7427 7428 7429 17120 17121 17122 17123 17124 17125 48 9122 9123 9124 9125 9126 9127 9140 9141 9142 9143 9144 9145 2387 2388 2389 2390 2391 2392 3563 3564 3565 3566 3567 3568 2113 2114 2115 2116 2117 2118 7472 7473 7474 7475 7476 7477 7454 7455 7456 7457 7458 7459 17126 17127 17128 17129 17130 17131 36 1807 1808 1809 1810 1811 1812 2113 2114 2115 2116 2117 2118 7454 7455 7456 7457 7458 7459 3605 3606 3607 3608 3609 3610 7472 7473 7474 7475 7476 7477 17132 17133 17134 17135 17136 17137 48 5192 5193 5194 5195 5196 5197 14174 14175 14176 14177 14178 14179 14168 14169 14170 14171 14172 14173 17138 17139 17140 17141 17142 17143 12212 12213 12214 12215 12216 12217 15812 15813 15814 15815 15816 15817 5060 5061 5062 5063 5064 5065 5288 5289 5290 5291 5292 5293 48 14168 14169 14170 14171 14172 14173 14204 14205 14206 14207 14208 14209 14198 14199 14200 14201 14202 14203 17144 17145 17146 17147 17148 17149 637 638 639 640 641 642 12218 12219 12220 12221 12222 12223 12212 12213 12214 12215 12216 12217 17138 17139 17140 17141 17142 17143 48 14198 14199 14200 14201 14202 14203 14234 14235 14236 14237 14238 14239 14228 14229 14230 14231 14232 14233 17150 17151 17152 17153 17154 17155 649 650 651 652 653 654 12278 12279 12280 12281 12282 12283 637 638 639 640 641 642 17144 17145 17146 17147 17148 17149 48 14228 14229 14230 14231 14232 14233 14264 14265 14266 14267 14268 14269 14258 14259 14260 14261 14262 14263 17156 17157 17158 17159 17160 17161 661 662 663 664 665 666 12320 12321 12322 12323 12324 12325 649 650 651 652 653 654 17150 17151 17152 17153 17154 17155 48 14258 14259 14260 14261 14262 14263 14294 14295 14296 14297 14298 14299 14288 14289 14290 14291 14292 14293 17162 17163 17164 17165 17166 17167 673 674 675 676 677 678 12362 12363 12364 12365 12366 12367 661 662 663 664 665 666 17156 17157 17158 17159 17160 17161 48 14288 14289 14290 14291 14292 14293 14324 14325 14326 14327 14328 14329 14318 14319 14320 14321 14322 14323 17168 17169 17170 17171 17172 17173 685 686 687 688 689 690 12404 12405 12406 12407 12408 12409 673 674 675 676 677 678 17162 17163 17164 17165 17166 17167 48 14318 14319 14320 14321 14322 14323 14354 14355 14356 14357 14358 14359 14348 14349 14350 14351 14352 14353 17174 17175 17176 17177 17178 17179 697 698 699 700 701 702 12446 12447 12448 12449 12450 12451 685 686 687 688 689 690 17168 17169 17170 17171 17172 17173 48 14348 14349 14350 14351 14352 14353 14384 14385 14386 14387 14388 14389 14378 14379 14380 14381 14382 14383 17180 17181 17182 17183 17184 17185 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 697 698 699 700 701 702 17174 17175 17176 17177 17178 17179 48 14378 14379 14380 14381 14382 14383 14414 14415 14416 14417 14418 14419 14408 14409 14410 14411 14412 14413 17186 17187 17188 17189 17190 17191 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12488 12489 12490 12491 12492 12493 17180 17181 17182 17183 17184 17185 48 14408 14409 14410 14411 14412 14413 14444 14445 14446 14447 14448 14449 14438 14439 14440 14441 14442 14443 17192 17193 17194 17195 17196 17197 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12536 12537 12538 12539 12540 12541 17186 17187 17188 17189 17190 17191 48 14438 14439 14440 14441 14442 14443 14474 14475 14476 14477 14478 14479 14468 14469 14470 14471 14472 14473 17198 17199 17200 17201 17202 17203 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12584 12585 12586 12587 12588 12589 17192 17193 17194 17195 17196 17197 48 14468 14469 14470 14471 14472 14473 14504 14505 14506 14507 14508 14509 14498 14499 14500 14501 14502 14503 17204 17205 17206 17207 17208 17209 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12632 12633 12634 12635 12636 12637 17198 17199 17200 17201 17202 17203 48 14498 14499 14500 14501 14502 14503 14534 14535 14536 14537 14538 14539 14528 14529 14530 14531 14532 14533 17210 17211 17212 17213 17214 17215 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12680 12681 12682 12683 12684 12685 17204 17205 17206 17207 17208 17209 48 14528 14529 14530 14531 14532 14533 14564 14565 14566 14567 14568 14569 14558 14559 14560 14561 14562 14563 17216 17217 17218 17219 17220 17221 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12728 12729 12730 12731 12732 12733 17210 17211 17212 17213 17214 17215 48 14558 14559 14560 14561 14562 14563 14594 14595 14596 14597 14598 14599 14588 14589 14590 14591 14592 14593 17222 17223 17224 17225 17226 17227 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12776 12777 12778 12779 12780 12781 17216 17217 17218 17219 17220 17221 48 14588 14589 14590 14591 14592 14593 14624 14625 14626 14627 14628 14629 14618 14619 14620 14621 14622 14623 17228 17229 17230 17231 17232 17233 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12824 12825 12826 12827 12828 12829 17222 17223 17224 17225 17226 17227 48 14618 14619 14620 14621 14622 14623 14654 14655 14656 14657 14658 14659 14648 14649 14650 14651 14652 14653 17234 17235 17236 17237 17238 17239 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12872 12873 12874 12875 12876 12877 17228 17229 17230 17231 17232 17233 48 14648 14649 14650 14651 14652 14653 14684 14685 14686 14687 14688 14689 14678 14679 14680 14681 14682 14683 17240 17241 17242 17243 17244 17245 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12920 12921 12922 12923 12924 12925 17234 17235 17236 17237 17238 17239 48 14678 14679 14680 14681 14682 14683 14714 14715 14716 14717 14718 14719 14708 14709 14710 14711 14712 14713 17246 17247 17248 17249 17250 17251 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 12968 12969 12970 12971 12972 12973 17240 17241 17242 17243 17244 17245 48 14708 14709 14710 14711 14712 14713 14744 14745 14746 14747 14748 14749 14738 14739 14740 14741 14742 14743 17252 17253 17254 17255 17256 17257 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13016 13017 13018 13019 13020 13021 17246 17247 17248 17249 17250 17251 48 14738 14739 14740 14741 14742 14743 14774 14775 14776 14777 14778 14779 14768 14769 14770 14771 14772 14773 17258 17259 17260 17261 17262 17263 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13064 13065 13066 13067 13068 13069 17252 17253 17254 17255 17256 17257 48 14768 14769 14770 14771 14772 14773 14804 14805 14806 14807 14808 14809 14798 14799 14800 14801 14802 14803 17264 17265 17266 17267 17268 17269 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13112 13113 13114 13115 13116 13117 17258 17259 17260 17261 17262 17263 48 14798 14799 14800 14801 14802 14803 14834 14835 14836 14837 14838 14839 14828 14829 14830 14831 14832 14833 17270 17271 17272 17273 17274 17275 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13160 13161 13162 13163 13164 13165 17264 17265 17266 17267 17268 17269 48 14828 14829 14830 14831 14832 14833 14864 14865 14866 14867 14868 14869 14858 14859 14860 14861 14862 14863 17276 17277 17278 17279 17280 17281 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13208 13209 13210 13211 13212 13213 17270 17271 17272 17273 17274 17275 48 14858 14859 14860 14861 14862 14863 14894 14895 14896 14897 14898 14899 14888 14889 14890 14891 14892 14893 17282 17283 17284 17285 17286 17287 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13256 13257 13258 13259 13260 13261 17276 17277 17278 17279 17280 17281 48 14888 14889 14890 14891 14892 14893 14924 14925 14926 14927 14928 14929 14918 14919 14920 14921 14922 14923 17288 17289 17290 17291 17292 17293 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13304 13305 13306 13307 13308 13309 17282 17283 17284 17285 17286 17287 48 14918 14919 14920 14921 14922 14923 14954 14955 14956 14957 14958 14959 14948 14949 14950 14951 14952 14953 17294 17295 17296 17297 17298 17299 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13352 13353 13354 13355 13356 13357 17288 17289 17290 17291 17292 17293 48 14948 14949 14950 14951 14952 14953 14984 14985 14986 14987 14988 14989 14978 14979 14980 14981 14982 14983 17300 17301 17302 17303 17304 17305 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13400 13401 13402 13403 13404 13405 17294 17295 17296 17297 17298 17299 48 14978 14979 14980 14981 14982 14983 15014 15015 15016 15017 15018 15019 15008 15009 15010 15011 15012 15013 17306 17307 17308 17309 17310 17311 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13448 13449 13450 13451 13452 13453 17300 17301 17302 17303 17304 17305 48 15008 15009 15010 15011 15012 15013 15044 15045 15046 15047 15048 15049 15038 15039 15040 15041 15042 15043 17312 17313 17314 17315 17316 17317 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13496 13497 13498 13499 13500 13501 17306 17307 17308 17309 17310 17311 48 15038 15039 15040 15041 15042 15043 15074 15075 15076 15077 15078 15079 15068 15069 15070 15071 15072 15073 17318 17319 17320 17321 17322 17323 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13544 13545 13546 13547 13548 13549 17312 17313 17314 17315 17316 17317 48 15068 15069 15070 15071 15072 15073 15104 15105 15106 15107 15108 15109 15098 15099 15100 15101 15102 15103 17324 17325 17326 17327 17328 17329 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13592 13593 13594 13595 13596 13597 17318 17319 17320 17321 17322 17323 48 15098 15099 15100 15101 15102 15103 15134 15135 15136 15137 15138 15139 15128 15129 15130 15131 15132 15133 17330 17331 17332 17333 17334 17335 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13640 13641 13642 13643 13644 13645 17324 17325 17326 17327 17328 17329 48 15128 15129 15130 15131 15132 15133 15164 15165 15166 15167 15168 15169 15158 15159 15160 15161 15162 15163 17336 17337 17338 17339 17340 17341 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13688 13689 13690 13691 13692 13693 17330 17331 17332 17333 17334 17335 48 15158 15159 15160 15161 15162 15163 15194 15195 15196 15197 15198 15199 15188 15189 15190 15191 15192 15193 17342 17343 17344 17345 17346 17347 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13736 13737 13738 13739 13740 13741 17336 17337 17338 17339 17340 17341 48 15188 15189 15190 15191 15192 15193 15224 15225 15226 15227 15228 15229 15218 15219 15220 15221 15222 15223 17348 17349 17350 17351 17352 17353 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13784 13785 13786 13787 13788 13789 17342 17343 17344 17345 17346 17347 48 15218 15219 15220 15221 15222 15223 15254 15255 15256 15257 15258 15259 15248 15249 15250 15251 15252 15253 17354 17355 17356 17357 17358 17359 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13832 13833 13834 13835 13836 13837 17348 17349 17350 17351 17352 17353 48 15248 15249 15250 15251 15252 15253 15284 15285 15286 15287 15288 15289 15278 15279 15280 15281 15282 15283 17360 17361 17362 17363 17364 17365 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13880 13881 13882 13883 13884 13885 17354 17355 17356 17357 17358 17359 48 15278 15279 15280 15281 15282 15283 15314 15315 15316 15317 15318 15319 15308 15309 15310 15311 15312 15313 17366 17367 17368 17369 17370 17371 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13928 13929 13930 13931 13932 13933 17360 17361 17362 17363 17364 17365 48 15308 15309 15310 15311 15312 15313 15344 15345 15346 15347 15348 15349 15338 15339 15340 15341 15342 15343 17372 17373 17374 17375 17376 17377 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 13976 13977 13978 13979 13980 13981 17366 17367 17368 17369 17370 17371 48 15338 15339 15340 15341 15342 15343 15374 15375 15376 15377 15378 15379 15368 15369 15370 15371 15372 15373 17378 17379 17380 17381 17382 17383 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14024 14025 14026 14027 14028 14029 17372 17373 17374 17375 17376 17377 48 15368 15369 15370 15371 15372 15373 15404 15405 15406 15407 15408 15409 15398 15399 15400 15401 15402 15403 17384 17385 17386 17387 17388 17389 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14072 14073 14074 14075 14076 14077 17378 17379 17380 17381 17382 17383 48 15398 15399 15400 15401 15402 15403 15416 15417 15418 15419 15420 15421 3233 3234 3235 3236 3237 3238 3359 3360 3361 3362 3363 3364 3047 3048 3049 3050 3051 3052 15842 15843 15844 15845 15846 15847 14120 14121 14122 14123 14124 14125 17384 17385 17386 17387 17388 17389 48 5060 5061 5062 5063 5064 5065 15812 15813 15814 15815 15816 15817 12212 12213 12214 12215 12216 12217 17390 17391 17392 17393 17394 17395 10544 10545 10546 10547 10548 10549 15836 15837 15838 15839 15840 15841 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 48 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 637 638 639 640 641 642 17396 17397 17398 17399 17400 17401 10556 10557 10558 10559 10560 10561 10550 10551 10552 10553 10554 10555 10544 10545 10546 10547 10548 10549 17390 17391 17392 17393 17394 17395 48 637 638 639 640 641 642 12278 12279 12280 12281 12282 12283 649 650 651 652 653 654 17402 17403 17404 17405 17406 17407 10592 10593 10594 10595 10596 10597 10628 10629 10630 10631 10632 10633 10556 10557 10558 10559 10560 10561 17396 17397 17398 17399 17400 17401 48 649 650 651 652 653 654 12320 12321 12322 12323 12324 12325 661 662 663 664 665 666 17408 17409 17410 17411 17412 17413 10604 10605 10606 10607 10608 10609 10598 10599 10600 10601 10602 10603 10592 10593 10594 10595 10596 10597 17402 17403 17404 17405 17406 17407 48 661 662 663 664 665 666 12362 12363 12364 12365 12366 12367 673 674 675 676 677 678 17414 17415 17416 17417 17418 17419 10688 10689 10690 10691 10692 10693 10682 10683 10684 10685 10686 10687 10604 10605 10606 10607 10608 10609 17408 17409 17410 17411 17412 17413 48 673 674 675 676 677 678 12404 12405 12406 12407 12408 12409 685 686 687 688 689 690 17420 17421 17422 17423 17424 17425 10718 10719 10720 10721 10722 10723 10712 10713 10714 10715 10716 10717 10688 10689 10690 10691 10692 10693 17414 17415 17416 17417 17418 17419 48 685 686 687 688 689 690 12446 12447 12448 12449 12450 12451 697 698 699 700 701 702 17426 17427 17428 17429 17430 17431 10754 10755 10756 10757 10758 10759 10748 10749 10750 10751 10752 10753 10718 10719 10720 10721 10722 10723 17420 17421 17422 17423 17424 17425 48 697 698 699 700 701 702 12494 12495 12496 12497 12498 12499 12488 12489 12490 12491 12492 12493 17432 17433 17434 17435 17436 17437 10814 10815 10816 10817 10818 10819 10808 10809 10810 10811 10812 10813 10754 10755 10756 10757 10758 10759 17426 17427 17428 17429 17430 17431 48 12488 12489 12490 12491 12492 12493 12542 12543 12544 12545 12546 12547 12536 12537 12538 12539 12540 12541 17438 17439 17440 17441 17442 17443 10844 10845 10846 10847 10848 10849 10838 10839 10840 10841 10842 10843 10814 10815 10816 10817 10818 10819 17432 17433 17434 17435 17436 17437 48 12536 12537 12538 12539 12540 12541 12590 12591 12592 12593 12594 12595 12584 12585 12586 12587 12588 12589 17444 17445 17446 17447 17448 17449 10874 10875 10876 10877 10878 10879 10868 10869 10870 10871 10872 10873 10844 10845 10846 10847 10848 10849 17438 17439 17440 17441 17442 17443 48 12584 12585 12586 12587 12588 12589 12638 12639 12640 12641 12642 12643 12632 12633 12634 12635 12636 12637 17450 17451 17452 17453 17454 17455 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10874 10875 10876 10877 10878 10879 17444 17445 17446 17447 17448 17449 48 12632 12633 12634 12635 12636 12637 12686 12687 12688 12689 12690 12691 12680 12681 12682 12683 12684 12685 17456 17457 17458 17459 17460 17461 10964 10965 10966 10967 10968 10969 10958 10959 10960 10961 10962 10963 10922 10923 10924 10925 10926 10927 17450 17451 17452 17453 17454 17455 48 12680 12681 12682 12683 12684 12685 12734 12735 12736 12737 12738 12739 12728 12729 12730 12731 12732 12733 17462 17463 17464 17465 17466 17467 10994 10995 10996 10997 10998 10999 10988 10989 10990 10991 10992 10993 10964 10965 10966 10967 10968 10969 17456 17457 17458 17459 17460 17461 48 12728 12729 12730 12731 12732 12733 12782 12783 12784 12785 12786 12787 12776 12777 12778 12779 12780 12781 17468 17469 17470 17471 17472 17473 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 10994 10995 10996 10997 10998 10999 17462 17463 17464 17465 17466 17467 48 12776 12777 12778 12779 12780 12781 12830 12831 12832 12833 12834 12835 12824 12825 12826 12827 12828 12829 17474 17475 17476 17477 17478 17479 11084 11085 11086 11087 11088 11089 11078 11079 11080 11081 11082 11083 11042 11043 11044 11045 11046 11047 17468 17469 17470 17471 17472 17473 48 12824 12825 12826 12827 12828 12829 12878 12879 12880 12881 12882 12883 12872 12873 12874 12875 12876 12877 17480 17481 17482 17483 17484 17485 11114 11115 11116 11117 11118 11119 11108 11109 11110 11111 11112 11113 11084 11085 11086 11087 11088 11089 17474 17475 17476 17477 17478 17479 48 12872 12873 12874 12875 12876 12877 12926 12927 12928 12929 12930 12931 12920 12921 12922 12923 12924 12925 17486 17487 17488 17489 17490 17491 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11114 11115 11116 11117 11118 11119 17480 17481 17482 17483 17484 17485 48 12920 12921 12922 12923 12924 12925 12974 12975 12976 12977 12978 12979 12968 12969 12970 12971 12972 12973 17492 17493 17494 17495 17496 17497 11204 11205 11206 11207 11208 11209 11198 11199 11200 11201 11202 11203 11162 11163 11164 11165 11166 11167 17486 17487 17488 17489 17490 17491 48 12968 12969 12970 12971 12972 12973 13022 13023 13024 13025 13026 13027 13016 13017 13018 13019 13020 13021 17498 17499 17500 17501 17502 17503 11234 11235 11236 11237 11238 11239 11228 11229 11230 11231 11232 11233 11204 11205 11206 11207 11208 11209 17492 17493 17494 17495 17496 17497 48 13016 13017 13018 13019 13020 13021 13070 13071 13072 13073 13074 13075 13064 13065 13066 13067 13068 13069 17504 17505 17506 17507 17508 17509 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11234 11235 11236 11237 11238 11239 17498 17499 17500 17501 17502 17503 48 13064 13065 13066 13067 13068 13069 13118 13119 13120 13121 13122 13123 13112 13113 13114 13115 13116 13117 17510 17511 17512 17513 17514 17515 11324 11325 11326 11327 11328 11329 11318 11319 11320 11321 11322 11323 11282 11283 11284 11285 11286 11287 17504 17505 17506 17507 17508 17509 48 13112 13113 13114 13115 13116 13117 13166 13167 13168 13169 13170 13171 13160 13161 13162 13163 13164 13165 17516 17517 17518 17519 17520 17521 11354 11355 11356 11357 11358 11359 11348 11349 11350 11351 11352 11353 11324 11325 11326 11327 11328 11329 17510 17511 17512 17513 17514 17515 48 13160 13161 13162 13163 13164 13165 13214 13215 13216 13217 13218 13219 13208 13209 13210 13211 13212 13213 17522 17523 17524 17525 17526 17527 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11354 11355 11356 11357 11358 11359 17516 17517 17518 17519 17520 17521 48 13208 13209 13210 13211 13212 13213 13262 13263 13264 13265 13266 13267 13256 13257 13258 13259 13260 13261 17528 17529 17530 17531 17532 17533 11444 11445 11446 11447 11448 11449 11438 11439 11440 11441 11442 11443 11402 11403 11404 11405 11406 11407 17522 17523 17524 17525 17526 17527 48 13256 13257 13258 13259 13260 13261 13310 13311 13312 13313 13314 13315 13304 13305 13306 13307 13308 13309 17534 17535 17536 17537 17538 17539 11474 11475 11476 11477 11478 11479 11468 11469 11470 11471 11472 11473 11444 11445 11446 11447 11448 11449 17528 17529 17530 17531 17532 17533 48 13304 13305 13306 13307 13308 13309 13358 13359 13360 13361 13362 13363 13352 13353 13354 13355 13356 13357 17540 17541 17542 17543 17544 17545 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11474 11475 11476 11477 11478 11479 17534 17535 17536 17537 17538 17539 48 13352 13353 13354 13355 13356 13357 13406 13407 13408 13409 13410 13411 13400 13401 13402 13403 13404 13405 17546 17547 17548 17549 17550 17551 11564 11565 11566 11567 11568 11569 11558 11559 11560 11561 11562 11563 11522 11523 11524 11525 11526 11527 17540 17541 17542 17543 17544 17545 48 13400 13401 13402 13403 13404 13405 13454 13455 13456 13457 13458 13459 13448 13449 13450 13451 13452 13453 17552 17553 17554 17555 17556 17557 11594 11595 11596 11597 11598 11599 11588 11589 11590 11591 11592 11593 11564 11565 11566 11567 11568 11569 17546 17547 17548 17549 17550 17551 48 13448 13449 13450 13451 13452 13453 13502 13503 13504 13505 13506 13507 13496 13497 13498 13499 13500 13501 17558 17559 17560 17561 17562 17563 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11594 11595 11596 11597 11598 11599 17552 17553 17554 17555 17556 17557 48 13496 13497 13498 13499 13500 13501 13550 13551 13552 13553 13554 13555 13544 13545 13546 13547 13548 13549 17564 17565 17566 17567 17568 17569 11684 11685 11686 11687 11688 11689 11678 11679 11680 11681 11682 11683 11642 11643 11644 11645 11646 11647 17558 17559 17560 17561 17562 17563 48 13544 13545 13546 13547 13548 13549 13598 13599 13600 13601 13602 13603 13592 13593 13594 13595 13596 13597 17570 17571 17572 17573 17574 17575 11714 11715 11716 11717 11718 11719 11708 11709 11710 11711 11712 11713 11684 11685 11686 11687 11688 11689 17564 17565 17566 17567 17568 17569 48 13592 13593 13594 13595 13596 13597 13646 13647 13648 13649 13650 13651 13640 13641 13642 13643 13644 13645 17576 17577 17578 17579 17580 17581 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11714 11715 11716 11717 11718 11719 17570 17571 17572 17573 17574 17575 48 13640 13641 13642 13643 13644 13645 13694 13695 13696 13697 13698 13699 13688 13689 13690 13691 13692 13693 17582 17583 17584 17585 17586 17587 11804 11805 11806 11807 11808 11809 11798 11799 11800 11801 11802 11803 11762 11763 11764 11765 11766 11767 17576 17577 17578 17579 17580 17581 48 13688 13689 13690 13691 13692 13693 13742 13743 13744 13745 13746 13747 13736 13737 13738 13739 13740 13741 17588 17589 17590 17591 17592 17593 11834 11835 11836 11837 11838 11839 11828 11829 11830 11831 11832 11833 11804 11805 11806 11807 11808 11809 17582 17583 17584 17585 17586 17587 48 13736 13737 13738 13739 13740 13741 13790 13791 13792 13793 13794 13795 13784 13785 13786 13787 13788 13789 17594 17595 17596 17597 17598 17599 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11834 11835 11836 11837 11838 11839 17588 17589 17590 17591 17592 17593 48 13784 13785 13786 13787 13788 13789 13838 13839 13840 13841 13842 13843 13832 13833 13834 13835 13836 13837 17600 17601 17602 17603 17604 17605 11924 11925 11926 11927 11928 11929 11918 11919 11920 11921 11922 11923 11882 11883 11884 11885 11886 11887 17594 17595 17596 17597 17598 17599 48 13832 13833 13834 13835 13836 13837 13886 13887 13888 13889 13890 13891 13880 13881 13882 13883 13884 13885 17606 17607 17608 17609 17610 17611 11954 11955 11956 11957 11958 11959 11948 11949 11950 11951 11952 11953 11924 11925 11926 11927 11928 11929 17600 17601 17602 17603 17604 17605 48 13880 13881 13882 13883 13884 13885 13934 13935 13936 13937 13938 13939 13928 13929 13930 13931 13932 13933 17612 17613 17614 17615 17616 17617 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 11954 11955 11956 11957 11958 11959 17606 17607 17608 17609 17610 17611 48 13928 13929 13930 13931 13932 13933 13982 13983 13984 13985 13986 13987 13976 13977 13978 13979 13980 13981 17618 17619 17620 17621 17622 17623 12044 12045 12046 12047 12048 12049 12038 12039 12040 12041 12042 12043 12002 12003 12004 12005 12006 12007 17612 17613 17614 17615 17616 17617 48 13976 13977 13978 13979 13980 13981 14030 14031 14032 14033 14034 14035 14024 14025 14026 14027 14028 14029 17624 17625 17626 17627 17628 17629 12074 12075 12076 12077 12078 12079 12068 12069 12070 12071 12072 12073 12044 12045 12046 12047 12048 12049 17618 17619 17620 17621 17622 17623 48 14024 14025 14026 14027 14028 14029 14078 14079 14080 14081 14082 14083 14072 14073 14074 14075 14076 14077 17630 17631 17632 17633 17634 17635 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12074 12075 12076 12077 12078 12079 17624 17625 17626 17627 17628 17629 48 14072 14073 14074 14075 14076 14077 14126 14127 14128 14129 14130 14131 14120 14121 14122 14123 14124 14125 17636 17637 17638 17639 17640 17641 12164 12165 12166 12167 12168 12169 12158 12159 12160 12161 12162 12163 12122 12123 12124 12125 12126 12127 17630 17631 17632 17633 17634 17635 48 14120 14121 14122 14123 14124 14125 15842 15843 15844 15845 15846 15847 3047 3048 3049 3050 3051 3052 3437 3438 3439 3440 3441 3442 2807 2808 2809 2810 2811 2812 15866 15867 15868 15869 15870 15871 12164 12165 12166 12167 12168 12169 17636 17637 17638 17639 17640 17641 48 5330 5331 5332 5333 5334 5335 15836 15837 15838 15839 15840 15841 10544 10545 10546 10547 10548 10549 17642 17643 17644 17645 17646 17647 9152 9153 9154 9155 9156 9157 9146 9147 9148 9149 9150 9151 4802 4803 4804 4805 4806 4807 5522 5523 5524 5525 5526 5527 48 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 17648 17649 17650 17651 17652 17653 9182 9183 9184 9185 9186 9187 9176 9177 9178 9179 9180 9181 9152 9153 9154 9155 9156 9157 17642 17643 17644 17645 17646 17647 48 10556 10557 10558 10559 10560 10561 10628 10629 10630 10631 10632 10633 10592 10593 10594 10595 10596 10597 17654 17655 17656 17657 17658 17659 9206 9207 9208 9209 9210 9211 9242 9243 9244 9245 9246 9247 9182 9183 9184 9185 9186 9187 17648 17649 17650 17651 17652 17653 48 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 17660 17661 17662 17663 17664 17665 9218 9219 9220 9221 9222 9223 9212 9213 9214 9215 9216 9217 9206 9207 9208 9209 9210 9211 17654 17655 17656 17657 17658 17659 48 10604 10605 10606 10607 10608 10609 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 17666 17667 17668 17669 17670 17671 9302 9303 9304 9305 9306 9307 9296 9297 9298 9299 9300 9301 9218 9219 9220 9221 9222 9223 17660 17661 17662 17663 17664 17665 48 10688 10689 10690 10691 10692 10693 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 17672 17673 17674 17675 17676 17677 9332 9333 9334 9335 9336 9337 9326 9327 9328 9329 9330 9331 9302 9303 9304 9305 9306 9307 17666 17667 17668 17669 17670 17671 48 10718 10719 10720 10721 10722 10723 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 17678 17679 17680 17681 17682 17683 9368 9369 9370 9371 9372 9373 9362 9363 9364 9365 9366 9367 9332 9333 9334 9335 9336 9337 17672 17673 17674 17675 17676 17677 48 10754 10755 10756 10757 10758 10759 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 17684 17685 17686 17687 17688 17689 9428 9429 9430 9431 9432 9433 9422 9423 9424 9425 9426 9427 9368 9369 9370 9371 9372 9373 17678 17679 17680 17681 17682 17683 48 10814 10815 10816 10817 10818 10819 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 17690 17691 17692 17693 17694 17695 9458 9459 9460 9461 9462 9463 9452 9453 9454 9455 9456 9457 9428 9429 9430 9431 9432 9433 17684 17685 17686 17687 17688 17689 48 10844 10845 10846 10847 10848 10849 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 17696 17697 17698 17699 17700 17701 9488 9489 9490 9491 9492 9493 9482 9483 9484 9485 9486 9487 9458 9459 9460 9461 9462 9463 17690 17691 17692 17693 17694 17695 48 10874 10875 10876 10877 10878 10879 10928 10929 10930 10931 10932 10933 10922 10923 10924 10925 10926 10927 17702 17703 17704 17705 17706 17707 9518 9519 9520 9521 9522 9523 9512 9513 9514 9515 9516 9517 9488 9489 9490 9491 9492 9493 17696 17697 17698 17699 17700 17701 48 10922 10923 10924 10925 10926 10927 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 17708 17709 17710 17711 17712 17713 9548 9549 9550 9551 9552 9553 9542 9543 9544 9545 9546 9547 9518 9519 9520 9521 9522 9523 17702 17703 17704 17705 17706 17707 48 10964 10965 10966 10967 10968 10969 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 17714 17715 17716 17717 17718 17719 9578 9579 9580 9581 9582 9583 9572 9573 9574 9575 9576 9577 9548 9549 9550 9551 9552 9553 17708 17709 17710 17711 17712 17713 48 10994 10995 10996 10997 10998 10999 11048 11049 11050 11051 11052 11053 11042 11043 11044 11045 11046 11047 17720 17721 17722 17723 17724 17725 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9578 9579 9580 9581 9582 9583 17714 17715 17716 17717 17718 17719 48 11042 11043 11044 11045 11046 11047 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 17726 17727 17728 17729 17730 17731 9668 9669 9670 9671 9672 9673 9662 9663 9664 9665 9666 9667 9626 9627 9628 9629 9630 9631 17720 17721 17722 17723 17724 17725 48 11084 11085 11086 11087 11088 11089 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 17732 17733 17734 17735 17736 17737 9698 9699 9700 9701 9702 9703 9692 9693 9694 9695 9696 9697 9668 9669 9670 9671 9672 9673 17726 17727 17728 17729 17730 17731 48 11114 11115 11116 11117 11118 11119 11168 11169 11170 11171 11172 11173 11162 11163 11164 11165 11166 11167 17738 17739 17740 17741 17742 17743 9728 9729 9730 9731 9732 9733 9722 9723 9724 9725 9726 9727 9698 9699 9700 9701 9702 9703 17732 17733 17734 17735 17736 17737 48 11162 11163 11164 11165 11166 11167 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 17744 17745 17746 17747 17748 17749 9758 9759 9760 9761 9762 9763 9752 9753 9754 9755 9756 9757 9728 9729 9730 9731 9732 9733 17738 17739 17740 17741 17742 17743 48 11204 11205 11206 11207 11208 11209 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 17750 17751 17752 17753 17754 17755 9788 9789 9790 9791 9792 9793 9782 9783 9784 9785 9786 9787 9758 9759 9760 9761 9762 9763 17744 17745 17746 17747 17748 17749 48 11234 11235 11236 11237 11238 11239 11288 11289 11290 11291 11292 11293 11282 11283 11284 11285 11286 11287 17756 17757 17758 17759 17760 17761 9818 9819 9820 9821 9822 9823 9812 9813 9814 9815 9816 9817 9788 9789 9790 9791 9792 9793 17750 17751 17752 17753 17754 17755 48 11282 11283 11284 11285 11286 11287 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 17762 17763 17764 17765 17766 17767 9848 9849 9850 9851 9852 9853 9842 9843 9844 9845 9846 9847 9818 9819 9820 9821 9822 9823 17756 17757 17758 17759 17760 17761 48 11324 11325 11326 11327 11328 11329 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 17768 17769 17770 17771 17772 17773 9878 9879 9880 9881 9882 9883 9872 9873 9874 9875 9876 9877 9848 9849 9850 9851 9852 9853 17762 17763 17764 17765 17766 17767 48 11354 11355 11356 11357 11358 11359 11408 11409 11410 11411 11412 11413 11402 11403 11404 11405 11406 11407 17774 17775 17776 17777 17778 17779 9908 9909 9910 9911 9912 9913 9902 9903 9904 9905 9906 9907 9878 9879 9880 9881 9882 9883 17768 17769 17770 17771 17772 17773 48 11402 11403 11404 11405 11406 11407 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 17780 17781 17782 17783 17784 17785 9938 9939 9940 9941 9942 9943 9932 9933 9934 9935 9936 9937 9908 9909 9910 9911 9912 9913 17774 17775 17776 17777 17778 17779 48 11444 11445 11446 11447 11448 11449 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 17786 17787 17788 17789 17790 17791 9968 9969 9970 9971 9972 9973 9962 9963 9964 9965 9966 9967 9938 9939 9940 9941 9942 9943 17780 17781 17782 17783 17784 17785 48 11474 11475 11476 11477 11478 11479 11528 11529 11530 11531 11532 11533 11522 11523 11524 11525 11526 11527 17792 17793 17794 17795 17796 17797 9998 9999 10000 10001 10002 10003 9992 9993 9994 9995 9996 9997 9968 9969 9970 9971 9972 9973 17786 17787 17788 17789 17790 17791 48 11522 11523 11524 11525 11526 11527 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 17798 17799 17800 17801 17802 17803 10028 10029 10030 10031 10032 10033 10022 10023 10024 10025 10026 10027 9998 9999 10000 10001 10002 10003 17792 17793 17794 17795 17796 17797 48 11564 11565 11566 11567 11568 11569 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 17804 17805 17806 17807 17808 17809 10058 10059 10060 10061 10062 10063 10052 10053 10054 10055 10056 10057 10028 10029 10030 10031 10032 10033 17798 17799 17800 17801 17802 17803 48 11594 11595 11596 11597 11598 11599 11648 11649 11650 11651 11652 11653 11642 11643 11644 11645 11646 11647 17810 17811 17812 17813 17814 17815 10088 10089 10090 10091 10092 10093 10082 10083 10084 10085 10086 10087 10058 10059 10060 10061 10062 10063 17804 17805 17806 17807 17808 17809 48 11642 11643 11644 11645 11646 11647 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 17816 17817 17818 17819 17820 17821 10118 10119 10120 10121 10122 10123 10112 10113 10114 10115 10116 10117 10088 10089 10090 10091 10092 10093 17810 17811 17812 17813 17814 17815 48 11684 11685 11686 11687 11688 11689 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 17822 17823 17824 17825 17826 17827 10148 10149 10150 10151 10152 10153 10142 10143 10144 10145 10146 10147 10118 10119 10120 10121 10122 10123 17816 17817 17818 17819 17820 17821 48 11714 11715 11716 11717 11718 11719 11768 11769 11770 11771 11772 11773 11762 11763 11764 11765 11766 11767 17828 17829 17830 17831 17832 17833 10178 10179 10180 10181 10182 10183 10172 10173 10174 10175 10176 10177 10148 10149 10150 10151 10152 10153 17822 17823 17824 17825 17826 17827 48 11762 11763 11764 11765 11766 11767 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 17834 17835 17836 17837 17838 17839 10208 10209 10210 10211 10212 10213 10202 10203 10204 10205 10206 10207 10178 10179 10180 10181 10182 10183 17828 17829 17830 17831 17832 17833 48 11804 11805 11806 11807 11808 11809 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 17840 17841 17842 17843 17844 17845 10238 10239 10240 10241 10242 10243 10232 10233 10234 10235 10236 10237 10208 10209 10210 10211 10212 10213 17834 17835 17836 17837 17838 17839 48 11834 11835 11836 11837 11838 11839 11888 11889 11890 11891 11892 11893 11882 11883 11884 11885 11886 11887 17846 17847 17848 17849 17850 17851 10268 10269 10270 10271 10272 10273 10262 10263 10264 10265 10266 10267 10238 10239 10240 10241 10242 10243 17840 17841 17842 17843 17844 17845 48 11882 11883 11884 11885 11886 11887 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 17852 17853 17854 17855 17856 17857 10298 10299 10300 10301 10302 10303 10292 10293 10294 10295 10296 10297 10268 10269 10270 10271 10272 10273 17846 17847 17848 17849 17850 17851 48 11924 11925 11926 11927 11928 11929 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 17858 17859 17860 17861 17862 17863 10328 10329 10330 10331 10332 10333 10322 10323 10324 10325 10326 10327 10298 10299 10300 10301 10302 10303 17852 17853 17854 17855 17856 17857 48 11954 11955 11956 11957 11958 11959 12008 12009 12010 12011 12012 12013 12002 12003 12004 12005 12006 12007 17864 17865 17866 17867 17868 17869 10358 10359 10360 10361 10362 10363 10352 10353 10354 10355 10356 10357 10328 10329 10330 10331 10332 10333 17858 17859 17860 17861 17862 17863 48 12002 12003 12004 12005 12006 12007 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 17870 17871 17872 17873 17874 17875 10388 10389 10390 10391 10392 10393 10382 10383 10384 10385 10386 10387 10358 10359 10360 10361 10362 10363 17864 17865 17866 17867 17868 17869 48 12044 12045 12046 12047 12048 12049 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 17876 17877 17878 17879 17880 17881 10418 10419 10420 10421 10422 10423 10412 10413 10414 10415 10416 10417 10388 10389 10390 10391 10392 10393 17870 17871 17872 17873 17874 17875 48 12074 12075 12076 12077 12078 12079 12128 12129 12130 12131 12132 12133 12122 12123 12124 12125 12126 12127 17882 17883 17884 17885 17886 17887 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10418 10419 10420 10421 10422 10423 17876 17877 17878 17879 17880 17881 48 12122 12123 12124 12125 12126 12127 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 17888 17889 17890 17891 17892 17893 10508 10509 10510 10511 10512 10513 10502 10503 10504 10505 10506 10507 10466 10467 10468 10469 10470 10471 17882 17883 17884 17885 17886 17887 48 12164 12165 12166 12167 12168 12169 15866 15867 15868 15869 15870 15871 2807 2808 2809 2810 2811 2812 3653 3654 3655 3656 3657 3658 2579 2580 2581 2582 2583 2584 10532 10533 10534 10535 10536 10537 10508 10509 10510 10511 10512 10513 17888 17889 17890 17891 17892 17893 48 4802 4803 4804 4805 4806 4807 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 17894 17895 17896 17897 17898 17899 7484 7485 7486 7487 7488 7489 7478 7479 7480 7481 7482 7483 4574 4575 4576 4577 4578 4579 5558 5559 5560 5561 5562 5563 48 9152 9153 9154 9155 9156 9157 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 17900 17901 17902 17903 17904 17905 7514 7515 7516 7517 7518 7519 7508 7509 7510 7511 7512 7513 7484 7485 7486 7487 7488 7489 17894 17895 17896 17897 17898 17899 48 9182 9183 9184 9185 9186 9187 9242 9243 9244 9245 9246 9247 9206 9207 9208 9209 9210 9211 17906 17907 17908 17909 17910 17911 7538 7539 7540 7541 7542 7543 7574 7575 7576 7577 7578 7579 7514 7515 7516 7517 7518 7519 17900 17901 17902 17903 17904 17905 48 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 17912 17913 17914 17915 17916 17917 7550 7551 7552 7553 7554 7555 7544 7545 7546 7547 7548 7549 7538 7539 7540 7541 7542 7543 17906 17907 17908 17909 17910 17911 48 9218 9219 9220 9221 9222 9223 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 17918 17919 17920 17921 17922 17923 7634 7635 7636 7637 7638 7639 7628 7629 7630 7631 7632 7633 7550 7551 7552 7553 7554 7555 17912 17913 17914 17915 17916 17917 48 9302 9303 9304 9305 9306 9307 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 17924 17925 17926 17927 17928 17929 7664 7665 7666 7667 7668 7669 7658 7659 7660 7661 7662 7663 7634 7635 7636 7637 7638 7639 17918 17919 17920 17921 17922 17923 48 9332 9333 9334 9335 9336 9337 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 17930 17931 17932 17933 17934 17935 7700 7701 7702 7703 7704 7705 7694 7695 7696 7697 7698 7699 7664 7665 7666 7667 7668 7669 17924 17925 17926 17927 17928 17929 48 9368 9369 9370 9371 9372 9373 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 17936 17937 17938 17939 17940 17941 7760 7761 7762 7763 7764 7765 7754 7755 7756 7757 7758 7759 7700 7701 7702 7703 7704 7705 17930 17931 17932 17933 17934 17935 48 9428 9429 9430 9431 9432 9433 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 17942 17943 17944 17945 17946 17947 7790 7791 7792 7793 7794 7795 7784 7785 7786 7787 7788 7789 7760 7761 7762 7763 7764 7765 17936 17937 17938 17939 17940 17941 48 9458 9459 9460 9461 9462 9463 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 17948 17949 17950 17951 17952 17953 7820 7821 7822 7823 7824 7825 7814 7815 7816 7817 7818 7819 7790 7791 7792 7793 7794 7795 17942 17943 17944 17945 17946 17947 48 9488 9489 9490 9491 9492 9493 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 17954 17955 17956 17957 17958 17959 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7820 7821 7822 7823 7824 7825 17948 17949 17950 17951 17952 17953 48 9518 9519 9520 9521 9522 9523 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 17960 17961 17962 17963 17964 17965 7910 7911 7912 7913 7914 7915 7904 7905 7906 7907 7908 7909 7868 7869 7870 7871 7872 7873 17954 17955 17956 17957 17958 17959 48 9548 9549 9550 9551 9552 9553 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 17966 17967 17968 17969 17970 17971 7940 7941 7942 7943 7944 7945 7934 7935 7936 7937 7938 7939 7910 7911 7912 7913 7914 7915 17960 17961 17962 17963 17964 17965 48 9578 9579 9580 9581 9582 9583 9632 9633 9634 9635 9636 9637 9626 9627 9628 9629 9630 9631 17972 17973 17974 17975 17976 17977 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 7940 7941 7942 7943 7944 7945 17966 17967 17968 17969 17970 17971 48 9626 9627 9628 9629 9630 9631 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 17978 17979 17980 17981 17982 17983 8030 8031 8032 8033 8034 8035 8024 8025 8026 8027 8028 8029 7988 7989 7990 7991 7992 7993 17972 17973 17974 17975 17976 17977 48 9668 9669 9670 9671 9672 9673 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 17984 17985 17986 17987 17988 17989 8060 8061 8062 8063 8064 8065 8054 8055 8056 8057 8058 8059 8030 8031 8032 8033 8034 8035 17978 17979 17980 17981 17982 17983 48 9698 9699 9700 9701 9702 9703 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 17990 17991 17992 17993 17994 17995 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8060 8061 8062 8063 8064 8065 17984 17985 17986 17987 17988 17989 48 9728 9729 9730 9731 9732 9733 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 17996 17997 17998 17999 18000 18001 8150 8151 8152 8153 8154 8155 8144 8145 8146 8147 8148 8149 8108 8109 8110 8111 8112 8113 17990 17991 17992 17993 17994 17995 48 9758 9759 9760 9761 9762 9763 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 18002 18003 18004 18005 18006 18007 8180 8181 8182 8183 8184 8185 8174 8175 8176 8177 8178 8179 8150 8151 8152 8153 8154 8155 17996 17997 17998 17999 18000 18001 48 9788 9789 9790 9791 9792 9793 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 18008 18009 18010 18011 18012 18013 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8180 8181 8182 8183 8184 8185 18002 18003 18004 18005 18006 18007 48 9818 9819 9820 9821 9822 9823 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 18014 18015 18016 18017 18018 18019 8270 8271 8272 8273 8274 8275 8264 8265 8266 8267 8268 8269 8228 8229 8230 8231 8232 8233 18008 18009 18010 18011 18012 18013 48 9848 9849 9850 9851 9852 9853 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 18020 18021 18022 18023 18024 18025 8300 8301 8302 8303 8304 8305 8294 8295 8296 8297 8298 8299 8270 8271 8272 8273 8274 8275 18014 18015 18016 18017 18018 18019 48 9878 9879 9880 9881 9882 9883 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 18026 18027 18028 18029 18030 18031 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8300 8301 8302 8303 8304 8305 18020 18021 18022 18023 18024 18025 48 9908 9909 9910 9911 9912 9913 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 18032 18033 18034 18035 18036 18037 8390 8391 8392 8393 8394 8395 8384 8385 8386 8387 8388 8389 8348 8349 8350 8351 8352 8353 18026 18027 18028 18029 18030 18031 48 9938 9939 9940 9941 9942 9943 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 18038 18039 18040 18041 18042 18043 8420 8421 8422 8423 8424 8425 8414 8415 8416 8417 8418 8419 8390 8391 8392 8393 8394 8395 18032 18033 18034 18035 18036 18037 48 9968 9969 9970 9971 9972 9973 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 18044 18045 18046 18047 18048 18049 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8420 8421 8422 8423 8424 8425 18038 18039 18040 18041 18042 18043 48 9998 9999 10000 10001 10002 10003 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 18050 18051 18052 18053 18054 18055 8510 8511 8512 8513 8514 8515 8504 8505 8506 8507 8508 8509 8468 8469 8470 8471 8472 8473 18044 18045 18046 18047 18048 18049 48 10028 10029 10030 10031 10032 10033 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 18056 18057 18058 18059 18060 18061 8540 8541 8542 8543 8544 8545 8534 8535 8536 8537 8538 8539 8510 8511 8512 8513 8514 8515 18050 18051 18052 18053 18054 18055 48 10058 10059 10060 10061 10062 10063 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 18062 18063 18064 18065 18066 18067 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8540 8541 8542 8543 8544 8545 18056 18057 18058 18059 18060 18061 48 10088 10089 10090 10091 10092 10093 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 18068 18069 18070 18071 18072 18073 8630 8631 8632 8633 8634 8635 8624 8625 8626 8627 8628 8629 8588 8589 8590 8591 8592 8593 18062 18063 18064 18065 18066 18067 48 10118 10119 10120 10121 10122 10123 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 18074 18075 18076 18077 18078 18079 8660 8661 8662 8663 8664 8665 8654 8655 8656 8657 8658 8659 8630 8631 8632 8633 8634 8635 18068 18069 18070 18071 18072 18073 48 10148 10149 10150 10151 10152 10153 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 18080 18081 18082 18083 18084 18085 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8660 8661 8662 8663 8664 8665 18074 18075 18076 18077 18078 18079 48 10178 10179 10180 10181 10182 10183 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 18086 18087 18088 18089 18090 18091 8750 8751 8752 8753 8754 8755 8744 8745 8746 8747 8748 8749 8708 8709 8710 8711 8712 8713 18080 18081 18082 18083 18084 18085 48 10208 10209 10210 10211 10212 10213 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 18092 18093 18094 18095 18096 18097 8780 8781 8782 8783 8784 8785 8774 8775 8776 8777 8778 8779 8750 8751 8752 8753 8754 8755 18086 18087 18088 18089 18090 18091 48 10238 10239 10240 10241 10242 10243 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 18098 18099 18100 18101 18102 18103 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8780 8781 8782 8783 8784 8785 18092 18093 18094 18095 18096 18097 48 10268 10269 10270 10271 10272 10273 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 18104 18105 18106 18107 18108 18109 8870 8871 8872 8873 8874 8875 8864 8865 8866 8867 8868 8869 8828 8829 8830 8831 8832 8833 18098 18099 18100 18101 18102 18103 48 10298 10299 10300 10301 10302 10303 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 18110 18111 18112 18113 18114 18115 8900 8901 8902 8903 8904 8905 8894 8895 8896 8897 8898 8899 8870 8871 8872 8873 8874 8875 18104 18105 18106 18107 18108 18109 48 10328 10329 10330 10331 10332 10333 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 18116 18117 18118 18119 18120 18121 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8900 8901 8902 8903 8904 8905 18110 18111 18112 18113 18114 18115 48 10358 10359 10360 10361 10362 10363 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 18122 18123 18124 18125 18126 18127 8990 8991 8992 8993 8994 8995 8984 8985 8986 8987 8988 8989 8948 8949 8950 8951 8952 8953 18116 18117 18118 18119 18120 18121 48 10388 10389 10390 10391 10392 10393 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 18128 18129 18130 18131 18132 18133 9020 9021 9022 9023 9024 9025 9014 9015 9016 9017 9018 9019 8990 8991 8992 8993 8994 8995 18122 18123 18124 18125 18126 18127 48 10418 10419 10420 10421 10422 10423 10472 10473 10474 10475 10476 10477 10466 10467 10468 10469 10470 10471 18134 18135 18136 18137 18138 18139 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9020 9021 9022 9023 9024 9025 18128 18129 18130 18131 18132 18133 48 10466 10467 10468 10469 10470 10471 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 18140 18141 18142 18143 18144 18145 9110 9111 9112 9113 9114 9115 9104 9105 9106 9107 9108 9109 9068 9069 9070 9071 9072 9073 18134 18135 18136 18137 18138 18139 48 10508 10509 10510 10511 10512 10513 10532 10533 10534 10535 10536 10537 2579 2580 2581 2582 2583 2584 3683 3684 3685 3686 3687 3688 2305 2306 2307 2308 2309 2310 9134 9135 9136 9137 9138 9139 9110 9111 9112 9113 9114 9115 18140 18141 18142 18143 18144 18145 48 4574 4575 4576 4577 4578 4579 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 18146 18147 18148 18149 18150 18151 5816 5817 5818 5819 5820 5821 5810 5811 5812 5813 5814 5815 4310 4311 4312 4313 4314 4315 5594 5595 5596 5597 5598 5599 48 7484 7485 7486 7487 7488 7489 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 18152 18153 18154 18155 18156 18157 5846 5847 5848 5849 5850 5851 5840 5841 5842 5843 5844 5845 5816 5817 5818 5819 5820 5821 18146 18147 18148 18149 18150 18151 48 7514 7515 7516 7517 7518 7519 7574 7575 7576 7577 7578 7579 7538 7539 7540 7541 7542 7543 18158 18159 18160 18161 18162 18163 5870 5871 5872 5873 5874 5875 5906 5907 5908 5909 5910 5911 5846 5847 5848 5849 5850 5851 18152 18153 18154 18155 18156 18157 48 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 18164 18165 18166 18167 18168 18169 5882 5883 5884 5885 5886 5887 5876 5877 5878 5879 5880 5881 5870 5871 5872 5873 5874 5875 18158 18159 18160 18161 18162 18163 48 7550 7551 7552 7553 7554 7555 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 18170 18171 18172 18173 18174 18175 5966 5967 5968 5969 5970 5971 5960 5961 5962 5963 5964 5965 5882 5883 5884 5885 5886 5887 18164 18165 18166 18167 18168 18169 48 7634 7635 7636 7637 7638 7639 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 18176 18177 18178 18179 18180 18181 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 5966 5967 5968 5969 5970 5971 18170 18171 18172 18173 18174 18175 48 7664 7665 7666 7667 7668 7669 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 18182 18183 18184 18185 18186 18187 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 5996 5997 5998 5999 6000 6001 18176 18177 18178 18179 18180 18181 48 7700 7701 7702 7703 7704 7705 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 18188 18189 18190 18191 18192 18193 6092 6093 6094 6095 6096 6097 6086 6087 6088 6089 6090 6091 6032 6033 6034 6035 6036 6037 18182 18183 18184 18185 18186 18187 48 7760 7761 7762 7763 7764 7765 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 18194 18195 18196 18197 18198 18199 6122 6123 6124 6125 6126 6127 6116 6117 6118 6119 6120 6121 6092 6093 6094 6095 6096 6097 18188 18189 18190 18191 18192 18193 48 7790 7791 7792 7793 7794 7795 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 18200 18201 18202 18203 18204 18205 6152 6153 6154 6155 6156 6157 6146 6147 6148 6149 6150 6151 6122 6123 6124 6125 6126 6127 18194 18195 18196 18197 18198 18199 48 7820 7821 7822 7823 7824 7825 7874 7875 7876 7877 7878 7879 7868 7869 7870 7871 7872 7873 18206 18207 18208 18209 18210 18211 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6152 6153 6154 6155 6156 6157 18200 18201 18202 18203 18204 18205 48 7868 7869 7870 7871 7872 7873 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 18212 18213 18214 18215 18216 18217 6242 6243 6244 6245 6246 6247 6236 6237 6238 6239 6240 6241 6200 6201 6202 6203 6204 6205 18206 18207 18208 18209 18210 18211 48 7910 7911 7912 7913 7914 7915 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 18218 18219 18220 18221 18222 18223 6272 6273 6274 6275 6276 6277 6266 6267 6268 6269 6270 6271 6242 6243 6244 6245 6246 6247 18212 18213 18214 18215 18216 18217 48 7940 7941 7942 7943 7944 7945 7994 7995 7996 7997 7998 7999 7988 7989 7990 7991 7992 7993 18224 18225 18226 18227 18228 18229 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6272 6273 6274 6275 6276 6277 18218 18219 18220 18221 18222 18223 48 7988 7989 7990 7991 7992 7993 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 18230 18231 18232 18233 18234 18235 6362 6363 6364 6365 6366 6367 6356 6357 6358 6359 6360 6361 6320 6321 6322 6323 6324 6325 18224 18225 18226 18227 18228 18229 48 8030 8031 8032 8033 8034 8035 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 18236 18237 18238 18239 18240 18241 6392 6393 6394 6395 6396 6397 6386 6387 6388 6389 6390 6391 6362 6363 6364 6365 6366 6367 18230 18231 18232 18233 18234 18235 48 8060 8061 8062 8063 8064 8065 8114 8115 8116 8117 8118 8119 8108 8109 8110 8111 8112 8113 18242 18243 18244 18245 18246 18247 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6392 6393 6394 6395 6396 6397 18236 18237 18238 18239 18240 18241 48 8108 8109 8110 8111 8112 8113 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 18248 18249 18250 18251 18252 18253 6482 6483 6484 6485 6486 6487 6476 6477 6478 6479 6480 6481 6440 6441 6442 6443 6444 6445 18242 18243 18244 18245 18246 18247 48 8150 8151 8152 8153 8154 8155 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 18254 18255 18256 18257 18258 18259 6512 6513 6514 6515 6516 6517 6506 6507 6508 6509 6510 6511 6482 6483 6484 6485 6486 6487 18248 18249 18250 18251 18252 18253 48 8180 8181 8182 8183 8184 8185 8234 8235 8236 8237 8238 8239 8228 8229 8230 8231 8232 8233 18260 18261 18262 18263 18264 18265 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6512 6513 6514 6515 6516 6517 18254 18255 18256 18257 18258 18259 48 8228 8229 8230 8231 8232 8233 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 18266 18267 18268 18269 18270 18271 6602 6603 6604 6605 6606 6607 6596 6597 6598 6599 6600 6601 6560 6561 6562 6563 6564 6565 18260 18261 18262 18263 18264 18265 48 8270 8271 8272 8273 8274 8275 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 18272 18273 18274 18275 18276 18277 6632 6633 6634 6635 6636 6637 6626 6627 6628 6629 6630 6631 6602 6603 6604 6605 6606 6607 18266 18267 18268 18269 18270 18271 48 8300 8301 8302 8303 8304 8305 8354 8355 8356 8357 8358 8359 8348 8349 8350 8351 8352 8353 18278 18279 18280 18281 18282 18283 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6632 6633 6634 6635 6636 6637 18272 18273 18274 18275 18276 18277 48 8348 8349 8350 8351 8352 8353 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 18284 18285 18286 18287 18288 18289 6722 6723 6724 6725 6726 6727 6716 6717 6718 6719 6720 6721 6680 6681 6682 6683 6684 6685 18278 18279 18280 18281 18282 18283 48 8390 8391 8392 8393 8394 8395 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 18290 18291 18292 18293 18294 18295 6752 6753 6754 6755 6756 6757 6746 6747 6748 6749 6750 6751 6722 6723 6724 6725 6726 6727 18284 18285 18286 18287 18288 18289 48 8420 8421 8422 8423 8424 8425 8474 8475 8476 8477 8478 8479 8468 8469 8470 8471 8472 8473 18296 18297 18298 18299 18300 18301 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6752 6753 6754 6755 6756 6757 18290 18291 18292 18293 18294 18295 48 8468 8469 8470 8471 8472 8473 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 18302 18303 18304 18305 18306 18307 6842 6843 6844 6845 6846 6847 6836 6837 6838 6839 6840 6841 6800 6801 6802 6803 6804 6805 18296 18297 18298 18299 18300 18301 48 8510 8511 8512 8513 8514 8515 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 18308 18309 18310 18311 18312 18313 6872 6873 6874 6875 6876 6877 6866 6867 6868 6869 6870 6871 6842 6843 6844 6845 6846 6847 18302 18303 18304 18305 18306 18307 48 8540 8541 8542 8543 8544 8545 8594 8595 8596 8597 8598 8599 8588 8589 8590 8591 8592 8593 18314 18315 18316 18317 18318 18319 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6872 6873 6874 6875 6876 6877 18308 18309 18310 18311 18312 18313 48 8588 8589 8590 8591 8592 8593 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 18320 18321 18322 18323 18324 18325 6962 6963 6964 6965 6966 6967 6956 6957 6958 6959 6960 6961 6920 6921 6922 6923 6924 6925 18314 18315 18316 18317 18318 18319 48 8630 8631 8632 8633 8634 8635 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 18326 18327 18328 18329 18330 18331 6992 6993 6994 6995 6996 6997 6986 6987 6988 6989 6990 6991 6962 6963 6964 6965 6966 6967 18320 18321 18322 18323 18324 18325 48 8660 8661 8662 8663 8664 8665 8714 8715 8716 8717 8718 8719 8708 8709 8710 8711 8712 8713 18332 18333 18334 18335 18336 18337 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 6992 6993 6994 6995 6996 6997 18326 18327 18328 18329 18330 18331 48 8708 8709 8710 8711 8712 8713 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 18338 18339 18340 18341 18342 18343 7082 7083 7084 7085 7086 7087 7076 7077 7078 7079 7080 7081 7040 7041 7042 7043 7044 7045 18332 18333 18334 18335 18336 18337 48 8750 8751 8752 8753 8754 8755 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 18344 18345 18346 18347 18348 18349 7112 7113 7114 7115 7116 7117 7106 7107 7108 7109 7110 7111 7082 7083 7084 7085 7086 7087 18338 18339 18340 18341 18342 18343 48 8780 8781 8782 8783 8784 8785 8834 8835 8836 8837 8838 8839 8828 8829 8830 8831 8832 8833 18350 18351 18352 18353 18354 18355 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7112 7113 7114 7115 7116 7117 18344 18345 18346 18347 18348 18349 48 8828 8829 8830 8831 8832 8833 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 18356 18357 18358 18359 18360 18361 7202 7203 7204 7205 7206 7207 7196 7197 7198 7199 7200 7201 7160 7161 7162 7163 7164 7165 18350 18351 18352 18353 18354 18355 48 8870 8871 8872 8873 8874 8875 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 18362 18363 18364 18365 18366 18367 7232 7233 7234 7235 7236 7237 7226 7227 7228 7229 7230 7231 7202 7203 7204 7205 7206 7207 18356 18357 18358 18359 18360 18361 48 8900 8901 8902 8903 8904 8905 8954 8955 8956 8957 8958 8959 8948 8949 8950 8951 8952 8953 18368 18369 18370 18371 18372 18373 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7232 7233 7234 7235 7236 7237 18362 18363 18364 18365 18366 18367 48 8948 8949 8950 8951 8952 8953 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 18374 18375 18376 18377 18378 18379 7322 7323 7324 7325 7326 7327 7316 7317 7318 7319 7320 7321 7280 7281 7282 7283 7284 7285 18368 18369 18370 18371 18372 18373 48 8990 8991 8992 8993 8994 8995 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 18380 18381 18382 18383 18384 18385 7352 7353 7354 7355 7356 7357 7346 7347 7348 7349 7350 7351 7322 7323 7324 7325 7326 7327 18374 18375 18376 18377 18378 18379 48 9020 9021 9022 9023 9024 9025 9074 9075 9076 9077 9078 9079 9068 9069 9070 9071 9072 9073 18386 18387 18388 18389 18390 18391 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7352 7353 7354 7355 7356 7357 18380 18381 18382 18383 18384 18385 48 9068 9069 9070 9071 9072 9073 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 18392 18393 18394 18395 18396 18397 7442 7443 7444 7445 7446 7447 7436 7437 7438 7439 7440 7441 7400 7401 7402 7403 7404 7405 18386 18387 18388 18389 18390 18391 48 9110 9111 9112 9113 9114 9115 9134 9135 9136 9137 9138 9139 2305 2306 2307 2308 2309 2310 3719 3720 3721 3722 3723 3724 2083 2084 2085 2086 2087 2088 7466 7467 7468 7469 7470 7471 7442 7443 7444 7445 7446 7447 18392 18393 18394 18395 18396 18397 48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 18398 18399 18400 18401 18402 18403 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 18404 18405 18406 18407 18408 18409 12200 12201 12202 12203 12204 12205 12194 12195 12196 12197 12198 12199 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 18410 18411 18412 18413 18414 18415 12266 12267 12268 12269 12270 12271 12260 12261 12262 12263 12264 12265 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 18416 18417 18418 18419 18420 18421 12308 12309 12310 12311 12312 12313 12302 12303 12304 12305 12306 12307 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 18422 18423 18424 18425 18426 18427 12350 12351 12352 12353 12354 12355 12344 12345 12346 12347 12348 12349 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 18428 18429 18430 18431 18432 18433 12392 12393 12394 12395 12396 12397 12386 12387 12388 12389 12390 12391 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 18434 18435 18436 18437 18438 18439 12434 12435 12436 12437 12438 12439 12428 12429 12430 12431 12432 12433 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 18440 18441 18442 18443 18444 18445 12476 12477 12478 12479 12480 12481 12470 12471 12472 12473 12474 12475 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 18446 18447 18448 18449 18450 18451 12524 12525 12526 12527 12528 12529 12518 12519 12520 12521 12522 12523 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 18452 18453 18454 18455 18456 18457 12572 12573 12574 12575 12576 12577 12566 12567 12568 12569 12570 12571 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 18458 18459 18460 18461 18462 18463 12620 12621 12622 12623 12624 12625 12614 12615 12616 12617 12618 12619 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 18464 18465 18466 18467 18468 18469 12668 12669 12670 12671 12672 12673 12662 12663 12664 12665 12666 12667 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 18470 18471 18472 18473 18474 18475 12716 12717 12718 12719 12720 12721 12710 12711 12712 12713 12714 12715 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 18476 18477 18478 18479 18480 18481 12764 12765 12766 12767 12768 12769 12758 12759 12760 12761 12762 12763 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 18482 18483 18484 18485 18486 18487 12812 12813 12814 12815 12816 12817 12806 12807 12808 12809 12810 12811 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 18488 18489 18490 18491 18492 18493 12860 12861 12862 12863 12864 12865 12854 12855 12856 12857 12858 12859 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 18494 18495 18496 18497 18498 18499 12908 12909 12910 12911 12912 12913 12902 12903 12904 12905 12906 12907 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 18500 18501 18502 18503 18504 18505 12956 12957 12958 12959 12960 12961 12950 12951 12952 12953 12954 12955 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 18506 18507 18508 18509 18510 18511 13004 13005 13006 13007 13008 13009 12998 12999 13000 13001 13002 13003 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 18512 18513 18514 18515 18516 18517 13052 13053 13054 13055 13056 13057 13046 13047 13048 13049 13050 13051 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 18518 18519 18520 18521 18522 18523 13100 13101 13102 13103 13104 13105 13094 13095 13096 13097 13098 13099 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 18524 18525 18526 18527 18528 18529 13148 13149 13150 13151 13152 13153 13142 13143 13144 13145 13146 13147 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 18530 18531 18532 18533 18534 18535 13196 13197 13198 13199 13200 13201 13190 13191 13192 13193 13194 13195 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 18536 18537 18538 18539 18540 18541 13244 13245 13246 13247 13248 13249 13238 13239 13240 13241 13242 13243 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 18542 18543 18544 18545 18546 18547 13292 13293 13294 13295 13296 13297 13286 13287 13288 13289 13290 13291 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 18548 18549 18550 18551 18552 18553 13340 13341 13342 13343 13344 13345 13334 13335 13336 13337 13338 13339 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 18554 18555 18556 18557 18558 18559 13388 13389 13390 13391 13392 13393 13382 13383 13384 13385 13386 13387 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 18560 18561 18562 18563 18564 18565 13436 13437 13438 13439 13440 13441 13430 13431 13432 13433 13434 13435 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 18566 18567 18568 18569 18570 18571 13484 13485 13486 13487 13488 13489 13478 13479 13480 13481 13482 13483 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 18572 18573 18574 18575 18576 18577 13532 13533 13534 13535 13536 13537 13526 13527 13528 13529 13530 13531 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 18578 18579 18580 18581 18582 18583 13580 13581 13582 13583 13584 13585 13574 13575 13576 13577 13578 13579 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 18584 18585 18586 18587 18588 18589 13628 13629 13630 13631 13632 13633 13622 13623 13624 13625 13626 13627 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 18590 18591 18592 18593 18594 18595 13676 13677 13678 13679 13680 13681 13670 13671 13672 13673 13674 13675 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 18596 18597 18598 18599 18600 18601 13724 13725 13726 13727 13728 13729 13718 13719 13720 13721 13722 13723 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 18602 18603 18604 18605 18606 18607 13772 13773 13774 13775 13776 13777 13766 13767 13768 13769 13770 13771 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 18608 18609 18610 18611 18612 18613 13820 13821 13822 13823 13824 13825 13814 13815 13816 13817 13818 13819 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 18614 18615 18616 18617 18618 18619 13868 13869 13870 13871 13872 13873 13862 13863 13864 13865 13866 13867 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 18620 18621 18622 18623 18624 18625 13916 13917 13918 13919 13920 13921 13910 13911 13912 13913 13914 13915 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 18626 18627 18628 18629 18630 18631 13964 13965 13966 13967 13968 13969 13958 13959 13960 13961 13962 13963 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 18632 18633 18634 18635 18636 18637 14012 14013 14014 14015 14016 14017 14006 14007 14008 14009 14010 14011 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 18638 18639 18640 18641 18642 18643 14060 14061 14062 14063 14064 14065 14054 14055 14056 14057 14058 14059 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 18644 18645 18646 18647 18648 18649 14108 14109 14110 14111 14112 14113 14102 14103 14104 14105 14106 14107 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 3779 3780 3781 3782 3783 3784 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 18650 18651 18652 18653 18654 18655 10910 10911 10912 10913 10914 10915 10904 10905 10906 10907 10908 10909 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 18662 18663 18664 18665 18666 18667 11030 11031 11032 11033 11034 11035 11024 11025 11026 11027 11028 11029 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 18674 18675 18676 18677 18678 18679 11150 11151 11152 11153 11154 11155 11144 11145 11146 11147 11148 11149 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 18686 18687 18688 18689 18690 18691 11270 11271 11272 11273 11274 11275 11264 11265 11266 11267 11268 11269 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 18698 18699 18700 18701 18702 18703 11390 11391 11392 11393 11394 11395 11384 11385 11386 11387 11388 11389 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 18710 18711 18712 18713 18714 18715 11510 11511 11512 11513 11514 11515 11504 11505 11506 11507 11508 11509 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 18722 18723 18724 18725 18726 18727 11630 11631 11632 11633 11634 11635 11624 11625 11626 11627 11628 11629 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 18734 18735 18736 18737 18738 18739 11750 11751 11752 11753 11754 11755 11744 11745 11746 11747 11748 11749 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 18746 18747 18748 18749 18750 18751 11870 11871 11872 11873 11874 11875 11864 11865 11866 11867 11868 11869 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 18758 18759 18760 18761 18762 18763 11990 11991 11992 11993 11994 11995 11984 11985 11986 11987 11988 11989 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 18770 18771 18772 18773 18774 18775 12110 12111 12112 12113 12114 12115 12104 12105 12106 12107 12108 12109 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 18782 18783 18784 18785 18786 18787 18788 18789 18790 18791 18792 18793 18800 18801 18802 18803 18804 18805 18794 18795 18796 18797 18798 18799 18806 18807 18808 18809 18810 18811 48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 18812 18813 18814 18815 18816 18817 9614 9615 9616 9617 9618 9619 9608 9609 9610 9611 9612 9613 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 18824 18825 18826 18827 18828 18829 18830 18831 18832 18833 18834 18835 18842 18843 18844 18845 18846 18847 18836 18837 18838 18839 18840 18841 18848 18849 18850 18851 18852 18853 48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 18854 18855 18856 18857 18858 18859 18860 18861 18862 18863 18864 18865 18872 18873 18874 18875 18876 18877 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 18884 18885 18886 18887 18888 18889 18890 18891 18892 18893 18894 18895 18902 18903 18904 18905 18906 18907 18896 18897 18898 18899 18900 18901 18908 18909 18910 18911 18912 18913 48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 18914 18915 18916 18917 18918 18919 18920 18921 18922 18923 18924 18925 18932 18933 18934 18935 18936 18937 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 18944 18945 18946 18947 18948 18949 18950 18951 18952 18953 18954 18955 18962 18963 18964 18965 18966 18967 18956 18957 18958 18959 18960 18961 18968 18969 18970 18971 18972 18973 48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 18974 18975 18976 18977 18978 18979 18980 18981 18982 18983 18984 18985 18992 18993 18994 18995 18996 18997 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 19004 19005 19006 19007 19008 19009 19010 19011 19012 19013 19014 19015 19022 19023 19024 19025 19026 19027 19016 19017 19018 19019 19020 19021 19028 19029 19030 19031 19032 19033 48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 19034 19035 19036 19037 19038 19039 19040 19041 19042 19043 19044 19045 19052 19053 19054 19055 19056 19057 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 19064 19065 19066 19067 19068 19069 10454 10455 10456 10457 10458 10459 10448 10449 10450 10451 10452 10453 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 48 18794 18795 18796 18797 18798 18799 18800 18801 18802 18803 18804 18805 18788 18789 18790 18791 18792 18793 19076 19077 19078 19079 19080 19081 7856 7857 7858 7859 7860 7861 7850 7851 7852 7853 7854 7855 7844 7845 7846 7847 7848 7849 19082 19083 19084 19085 19086 19087 48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 19088 19089 19090 19091 19092 19093 7976 7977 7978 7979 7980 7981 7970 7971 7972 7973 7974 7975 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 48 18836 18837 18838 18839 18840 18841 18842 18843 18844 18845 18846 18847 18830 18831 18832 18833 18834 18835 19100 19101 19102 19103 19104 19105 8096 8097 8098 8099 8100 8101 8090 8091 8092 8093 8094 8095 8084 8085 8086 8087 8088 8089 19106 19107 19108 19109 19110 19111 48 18866 18867 18868 18869 18870 18871 18872 18873 18874 18875 18876 18877 18860 18861 18862 18863 18864 18865 19112 19113 19114 19115 19116 19117 8216 8217 8218 8219 8220 8221 8210 8211 8212 8213 8214 8215 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 48 18896 18897 18898 18899 18900 18901 18902 18903 18904 18905 18906 18907 18890 18891 18892 18893 18894 18895 19124 19125 19126 19127 19128 19129 8336 8337 8338 8339 8340 8341 8330 8331 8332 8333 8334 8335 8324 8325 8326 8327 8328 8329 19130 19131 19132 19133 19134 19135 48 18926 18927 18928 18929 18930 18931 18932 18933 18934 18935 18936 18937 18920 18921 18922 18923 18924 18925 19136 19137 19138 19139 19140 19141 8456 8457 8458 8459 8460 8461 8450 8451 8452 8453 8454 8455 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 48 18956 18957 18958 18959 18960 18961 18962 18963 18964 18965 18966 18967 18950 18951 18952 18953 18954 18955 19148 19149 19150 19151 19152 19153 8576 8577 8578 8579 8580 8581 8570 8571 8572 8573 8574 8575 8564 8565 8566 8567 8568 8569 19154 19155 19156 19157 19158 19159 48 18986 18987 18988 18989 18990 18991 18992 18993 18994 18995 18996 18997 18980 18981 18982 18983 18984 18985 19160 19161 19162 19163 19164 19165 8696 8697 8698 8699 8700 8701 8690 8691 8692 8693 8694 8695 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 48 19016 19017 19018 19019 19020 19021 19022 19023 19024 19025 19026 19027 19010 19011 19012 19013 19014 19015 19172 19173 19174 19175 19176 19177 8816 8817 8818 8819 8820 8821 8810 8811 8812 8813 8814 8815 8804 8805 8806 8807 8808 8809 19178 19179 19180 19181 19182 19183 48 19046 19047 19048 19049 19050 19051 19052 19053 19054 19055 19056 19057 19040 19041 19042 19043 19044 19045 19184 19185 19186 19187 19188 19189 8936 8937 8938 8939 8940 8941 8930 8931 8932 8933 8934 8935 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 19196 19197 19198 19199 19200 19201 9056 9057 9058 9059 9060 9061 9050 9051 9052 9053 9054 9055 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 19208 19209 19210 19211 19212 19213 6188 6189 6190 6191 6192 6193 6182 6183 6184 6185 6186 6187 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 19220 19221 19222 19223 19224 19225 6308 6309 6310 6311 6312 6313 6302 6303 6304 6305 6306 6307 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 19232 19233 19234 19235 19236 19237 6428 6429 6430 6431 6432 6433 6422 6423 6424 6425 6426 6427 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 19244 19245 19246 19247 19248 19249 6548 6549 6550 6551 6552 6553 6542 6543 6544 6545 6546 6547 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 19256 19257 19258 19259 19260 19261 6668 6669 6670 6671 6672 6673 6662 6663 6664 6665 6666 6667 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 19268 19269 19270 19271 19272 19273 6788 6789 6790 6791 6792 6793 6782 6783 6784 6785 6786 6787 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 19280 19281 19282 19283 19284 19285 6908 6909 6910 6911 6912 6913 6902 6903 6904 6905 6906 6907 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 19292 19293 19294 19295 19296 19297 7028 7029 7030 7031 7032 7033 7022 7023 7024 7025 7026 7027 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 19304 19305 19306 19307 19308 19309 7148 7149 7150 7151 7152 7153 7142 7143 7144 7145 7146 7147 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 19316 19317 19318 19319 19320 19321 7268 7269 7270 7271 7272 7273 7262 7263 7264 7265 7266 7267 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 19328 19329 19330 19331 19332 19333 7388 7389 7390 7391 7392 7393 7382 7383 7384 7385 7386 7387 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 48 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 17138 17139 17140 17141 17142 17143 12212 12213 12214 12215 12216 12217 12224 12225 12226 12227 12228 12229 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 36 12242 12243 12244 12245 12246 12247 12212 12213 12214 12215 12216 12217 14168 14169 14170 14171 14172 14173 12254 12255 12256 12257 12258 12259 17138 17139 17140 17141 17142 17143 15872 15873 15874 15875 15876 15877 48 12188 12189 12190 12191 12192 12193 12224 12225 12226 12227 12228 12229 12212 12213 12214 12215 12216 12217 17390 17391 17392 17393 17394 17395 10544 10545 10546 10547 10548 10549 10784 10785 10786 10787 10788 10789 10778 10779 10780 10781 10782 10783 19340 19341 19342 19343 19344 19345 48 12212 12213 12214 12215 12216 12217 12254 12255 12256 12257 12258 12259 12242 12243 12244 12245 12246 12247 16124 16125 16126 16127 16128 16129 10574 10575 10576 10577 10578 10579 10586 10587 10588 10589 10590 10591 10544 10545 10546 10547 10548 10549 17390 17391 17392 17393 17394 17395 48 10544 10545 10546 10547 10548 10549 10586 10587 10588 10589 10590 10591 10574 10575 10576 10577 10578 10579 16376 16377 16378 16379 16380 16381 9164 9165 9166 9167 9168 9169 9158 9159 9160 9161 9162 9163 9152 9153 9154 9155 9156 9157 17642 17643 17644 17645 17646 17647 48 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 16628 16629 16630 16631 16632 16633 7496 7497 7498 7499 7500 7501 7490 7491 7492 7493 7494 7495 7484 7485 7486 7487 7488 7489 17894 17895 17896 17897 17898 17899 48 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7484 7485 7486 7487 7488 7489 18146 18147 18148 18149 18150 18151 5816 5817 5818 5819 5820 5821 6062 6063 6064 6065 6066 6067 6056 6057 6058 6059 6060 6061 19346 19347 19348 19349 19350 19351 48 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 16880 16881 16882 16883 16884 16885 5828 5829 5830 5831 5832 5833 5822 5823 5824 5825 5826 5827 5816 5817 5818 5819 5820 5821 18146 18147 18148 18149 18150 18151 48 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 17144 17145 17146 17147 17148 17149 637 638 639 640 641 642 12206 12207 12208 12209 12210 12211 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 36 12236 12237 12238 12239 12240 12241 637 638 639 640 641 642 14198 14199 14200 14201 14202 14203 12230 12231 12232 12233 12234 12235 17144 17145 17146 17147 17148 17149 15878 15879 15880 15881 15882 15883 48 637 638 639 640 641 642 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 16130 16131 16132 16133 16134 16135 10568 10569 10570 10571 10572 10573 10562 10563 10564 10565 10566 10567 10556 10557 10558 10559 10560 10561 17396 17397 17398 17399 17400 17401 48 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 16382 16383 16384 16385 16386 16387 9194 9195 9196 9197 9198 9199 9188 9189 9190 9191 9192 9193 9182 9183 9184 9185 9186 9187 17648 17649 17650 17651 17652 17653 48 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 16634 16635 16636 16637 16638 16639 7526 7527 7528 7529 7530 7531 7520 7521 7522 7523 7524 7525 7514 7515 7516 7517 7518 7519 17900 17901 17902 17903 17904 17905 48 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 16886 16887 16888 16889 16890 16891 5858 5859 5860 5861 5862 5863 5852 5853 5854 5855 5856 5857 5846 5847 5848 5849 5850 5851 18152 18153 18154 18155 18156 18157 48 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 17150 17151 17152 17153 17154 17155 649 650 651 652 653 654 12272 12273 12274 12275 12276 12277 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 36 12290 12291 12292 12293 12294 12295 649 650 651 652 653 654 14228 14229 14230 14231 14232 14233 12284 12285 12286 12287 12288 12289 17150 17151 17152 17153 17154 17155 15884 15885 15886 15887 15888 15889 48 649 650 651 652 653 654 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 16136 16137 16138 16139 16140 16141 10640 10641 10642 10643 10644 10645 10634 10635 10636 10637 10638 10639 10592 10593 10594 10595 10596 10597 17402 17403 17404 17405 17406 17407 48 10592 10593 10594 10595 10596 10597 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 16388 16389 16390 16391 16392 16393 9254 9255 9256 9257 9258 9259 9248 9249 9250 9251 9252 9253 9206 9207 9208 9209 9210 9211 17654 17655 17656 17657 17658 17659 48 9206 9207 9208 9209 9210 9211 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 16640 16641 16642 16643 16644 16645 7586 7587 7588 7589 7590 7591 7580 7581 7582 7583 7584 7585 7538 7539 7540 7541 7542 7543 17906 17907 17908 17909 17910 17911 48 7538 7539 7540 7541 7542 7543 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 16892 16893 16894 16895 16896 16897 5918 5919 5920 5921 5922 5923 5912 5913 5914 5915 5916 5917 5870 5871 5872 5873 5874 5875 18158 18159 18160 18161 18162 18163 48 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 17156 17157 17158 17159 17160 17161 661 662 663 664 665 666 12314 12315 12316 12317 12318 12319 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 36 12332 12333 12334 12335 12336 12337 661 662 663 664 665 666 14258 14259 14260 14261 14262 14263 12326 12327 12328 12329 12330 12331 17156 17157 17158 17159 17160 17161 15890 15891 15892 15893 15894 15895 48 661 662 663 664 665 666 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 16142 16143 16144 16145 16146 16147 10658 10659 10660 10661 10662 10663 10652 10653 10654 10655 10656 10657 10604 10605 10606 10607 10608 10609 17408 17409 17410 17411 17412 17413 48 10604 10605 10606 10607 10608 10609 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 16394 16395 16396 16397 16398 16399 9272 9273 9274 9275 9276 9277 9266 9267 9268 9269 9270 9271 9218 9219 9220 9221 9222 9223 17660 17661 17662 17663 17664 17665 48 9218 9219 9220 9221 9222 9223 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 16646 16647 16648 16649 16650 16651 7604 7605 7606 7607 7608 7609 7598 7599 7600 7601 7602 7603 7550 7551 7552 7553 7554 7555 17912 17913 17914 17915 17916 17917 48 7550 7551 7552 7553 7554 7555 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 16898 16899 16900 16901 16902 16903 5936 5937 5938 5939 5940 5941 5930 5931 5932 5933 5934 5935 5882 5883 5884 5885 5886 5887 18164 18165 18166 18167 18168 18169 48 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 17162 17163 17164 17165 17166 17167 673 674 675 676 677 678 12356 12357 12358 12359 12360 12361 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 36 12374 12375 12376 12377 12378 12379 673 674 675 676 677 678 14288 14289 14290 14291 14292 14293 12368 12369 12370 12371 12372 12373 17162 17163 17164 17165 17166 17167 15896 15897 15898 15899 15900 15901 48 673 674 675 676 677 678 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 16148 16149 16150 16151 16152 16153 10700 10701 10702 10703 10704 10705 10694 10695 10696 10697 10698 10699 10688 10689 10690 10691 10692 10693 17414 17415 17416 17417 17418 17419 48 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 16400 16401 16402 16403 16404 16405 9314 9315 9316 9317 9318 9319 9308 9309 9310 9311 9312 9313 9302 9303 9304 9305 9306 9307 17666 17667 17668 17669 17670 17671 48 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 16652 16653 16654 16655 16656 16657 7646 7647 7648 7649 7650 7651 7640 7641 7642 7643 7644 7645 7634 7635 7636 7637 7638 7639 17918 17919 17920 17921 17922 17923 48 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 16904 16905 16906 16907 16908 16909 5978 5979 5980 5981 5982 5983 5972 5973 5974 5975 5976 5977 5966 5967 5968 5969 5970 5971 18170 18171 18172 18173 18174 18175 48 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 17168 17169 17170 17171 17172 17173 685 686 687 688 689 690 12398 12399 12400 12401 12402 12403 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 36 12416 12417 12418 12419 12420 12421 685 686 687 688 689 690 14318 14319 14320 14321 14322 14323 12410 12411 12412 12413 12414 12415 17168 17169 17170 17171 17172 17173 15902 15903 15904 15905 15906 15907 48 685 686 687 688 689 690 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 16154 16155 16156 16157 16158 16159 10730 10731 10732 10733 10734 10735 10724 10725 10726 10727 10728 10729 10718 10719 10720 10721 10722 10723 17420 17421 17422 17423 17424 17425 48 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 16406 16407 16408 16409 16410 16411 9344 9345 9346 9347 9348 9349 9338 9339 9340 9341 9342 9343 9332 9333 9334 9335 9336 9337 17672 17673 17674 17675 17676 17677 48 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 16658 16659 16660 16661 16662 16663 7676 7677 7678 7679 7680 7681 7670 7671 7672 7673 7674 7675 7664 7665 7666 7667 7668 7669 17924 17925 17926 17927 17928 17929 48 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 16910 16911 16912 16913 16914 16915 6008 6009 6010 6011 6012 6013 6002 6003 6004 6005 6006 6007 5996 5997 5998 5999 6000 6001 18176 18177 18178 18179 18180 18181 48 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 17174 17175 17176 17177 17178 17179 697 698 699 700 701 702 12440 12441 12442 12443 12444 12445 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 36 12458 12459 12460 12461 12462 12463 697 698 699 700 701 702 14348 14349 14350 14351 14352 14353 12452 12453 12454 12455 12456 12457 17174 17175 17176 17177 17178 17179 15908 15909 15910 15911 15912 15913 48 697 698 699 700 701 702 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 16160 16161 16162 16163 16164 16165 10766 10767 10768 10769 10770 10771 10760 10761 10762 10763 10764 10765 10754 10755 10756 10757 10758 10759 17426 17427 17428 17429 17430 17431 48 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 16412 16413 16414 16415 16416 16417 9380 9381 9382 9383 9384 9385 9374 9375 9376 9377 9378 9379 9368 9369 9370 9371 9372 9373 17678 17679 17680 17681 17682 17683 48 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 16664 16665 16666 16667 16668 16669 7712 7713 7714 7715 7716 7717 7706 7707 7708 7709 7710 7711 7700 7701 7702 7703 7704 7705 17930 17931 17932 17933 17934 17935 48 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 16916 16917 16918 16919 16920 16921 6044 6045 6046 6047 6048 6049 6038 6039 6040 6041 6042 6043 6032 6033 6034 6035 6036 6037 18182 18183 18184 18185 18186 18187 48 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 17180 17181 17182 17183 17184 17185 12488 12489 12490 12491 12492 12493 12482 12483 12484 12485 12486 12487 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 36 12506 12507 12508 12509 12510 12511 12488 12489 12490 12491 12492 12493 14378 14379 14380 14381 14382 14383 12500 12501 12502 12503 12504 12505 17180 17181 17182 17183 17184 17185 15914 15915 15916 15917 15918 15919 48 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 17432 17433 17434 17435 17436 17437 10814 10815 10816 10817 10818 10819 19358 19359 19360 19361 19362 19363 19352 19353 19354 19355 19356 19357 19364 19365 19366 19367 19368 19369 48 12488 12489 12490 12491 12492 12493 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 16166 16167 16168 16169 16170 16171 10826 10827 10828 10829 10830 10831 10820 10821 10822 10823 10824 10825 10814 10815 10816 10817 10818 10819 17432 17433 17434 17435 17436 17437 48 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 16418 16419 16420 16421 16422 16423 9440 9441 9442 9443 9444 9445 9434 9435 9436 9437 9438 9439 9428 9429 9430 9431 9432 9433 17684 17685 17686 17687 17688 17689 48 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 16670 16671 16672 16673 16674 16675 7772 7773 7774 7775 7776 7777 7766 7767 7768 7769 7770 7771 7760 7761 7762 7763 7764 7765 17936 17937 17938 17939 17940 17941 48 19370 19371 19372 19373 19374 19375 19376 19377 19378 19379 19380 19381 7760 7761 7762 7763 7764 7765 18188 18189 18190 18191 18192 18193 6092 6093 6094 6095 6096 6097 19388 19389 19390 19391 19392 19393 19382 19383 19384 19385 19386 19387 19394 19395 19396 19397 19398 19399 48 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 16922 16923 16924 16925 16926 16927 6104 6105 6106 6107 6108 6109 6098 6099 6100 6101 6102 6103 6092 6093 6094 6095 6096 6097 18188 18189 18190 18191 18192 18193 48 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 17186 17187 17188 17189 17190 17191 12536 12537 12538 12539 12540 12541 12530 12531 12532 12533 12534 12535 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 36 12554 12555 12556 12557 12558 12559 12536 12537 12538 12539 12540 12541 14408 14409 14410 14411 14412 14413 12548 12549 12550 12551 12552 12553 17186 17187 17188 17189 17190 17191 15920 15921 15922 15923 15924 15925 48 12536 12537 12538 12539 12540 12541 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 16172 16173 16174 16175 16176 16177 10856 10857 10858 10859 10860 10861 10850 10851 10852 10853 10854 10855 10844 10845 10846 10847 10848 10849 17438 17439 17440 17441 17442 17443 48 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 16424 16425 16426 16427 16428 16429 9470 9471 9472 9473 9474 9475 9464 9465 9466 9467 9468 9469 9458 9459 9460 9461 9462 9463 17690 17691 17692 17693 17694 17695 48 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 16676 16677 16678 16679 16680 16681 7802 7803 7804 7805 7806 7807 7796 7797 7798 7799 7800 7801 7790 7791 7792 7793 7794 7795 17942 17943 17944 17945 17946 17947 48 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 16928 16929 16930 16931 16932 16933 6134 6135 6136 6137 6138 6139 6128 6129 6130 6131 6132 6133 6122 6123 6124 6125 6126 6127 18194 18195 18196 18197 18198 18199 48 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 17192 17193 17194 17195 17196 17197 12584 12585 12586 12587 12588 12589 12578 12579 12580 12581 12582 12583 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 36 12602 12603 12604 12605 12606 12607 12584 12585 12586 12587 12588 12589 14438 14439 14440 14441 14442 14443 12596 12597 12598 12599 12600 12601 17192 17193 17194 17195 17196 17197 15926 15927 15928 15929 15930 15931 48 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 17444 17445 17446 17447 17448 17449 10874 10875 10876 10877 10878 10879 10934 10935 10936 10937 10938 10939 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 48 12584 12585 12586 12587 12588 12589 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 16178 16179 16180 16181 16182 16183 10886 10887 10888 10889 10890 10891 10880 10881 10882 10883 10884 10885 10874 10875 10876 10877 10878 10879 17444 17445 17446 17447 17448 17449 48 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 16430 16431 16432 16433 16434 16435 9500 9501 9502 9503 9504 9505 9494 9495 9496 9497 9498 9499 9488 9489 9490 9491 9492 9493 17696 17697 17698 17699 17700 17701 48 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 16682 16683 16684 16685 16686 16687 7832 7833 7834 7835 7836 7837 7826 7827 7828 7829 7830 7831 7820 7821 7822 7823 7824 7825 17948 17949 17950 17951 17952 17953 48 7844 7845 7846 7847 7848 7849 7880 7881 7882 7883 7884 7885 7820 7821 7822 7823 7824 7825 18200 18201 18202 18203 18204 18205 6152 6153 6154 6155 6156 6157 6212 6213 6214 6215 6216 6217 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 48 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 16934 16935 16936 16937 16938 16939 6164 6165 6166 6167 6168 6169 6158 6159 6160 6161 6162 6163 6152 6153 6154 6155 6156 6157 18200 18201 18202 18203 18204 18205 48 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 17198 17199 17200 17201 17202 17203 12632 12633 12634 12635 12636 12637 12626 12627 12628 12629 12630 12631 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 36 12650 12651 12652 12653 12654 12655 12632 12633 12634 12635 12636 12637 14468 14469 14470 14471 14472 14473 12644 12645 12646 12647 12648 12649 17198 17199 17200 17201 17202 17203 15932 15933 15934 15935 15936 15937 48 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 17450 17451 17452 17453 17454 17455 10922 10923 10924 10925 10926 10927 10916 10917 10918 10919 10920 10921 10910 10911 10912 10913 10914 10915 18650 18651 18652 18653 18654 18655 48 12632 12633 12634 12635 12636 12637 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 16184 16185 16186 16187 16188 16189 10946 10947 10948 10949 10950 10951 10940 10941 10942 10943 10944 10945 10922 10923 10924 10925 10926 10927 17450 17451 17452 17453 17454 17455 48 10922 10923 10924 10925 10926 10927 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 16436 16437 16438 16439 16440 16441 9530 9531 9532 9533 9534 9535 9524 9525 9526 9527 9528 9529 9518 9519 9520 9521 9522 9523 17702 17703 17704 17705 17706 17707 48 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 16688 16689 16690 16691 16692 16693 7892 7893 7894 7895 7896 7897 7886 7887 7888 7889 7890 7891 7868 7869 7870 7871 7872 7873 17954 17955 17956 17957 17958 17959 48 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 18206 18207 18208 18209 18210 18211 6200 6201 6202 6203 6204 6205 6194 6195 6196 6197 6198 6199 6188 6189 6190 6191 6192 6193 19208 19209 19210 19211 19212 19213 48 7868 7869 7870 7871 7872 7873 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 16940 16941 16942 16943 16944 16945 6224 6225 6226 6227 6228 6229 6218 6219 6220 6221 6222 6223 6200 6201 6202 6203 6204 6205 18206 18207 18208 18209 18210 18211 48 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 17204 17205 17206 17207 17208 17209 12680 12681 12682 12683 12684 12685 12674 12675 12676 12677 12678 12679 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 36 12698 12699 12700 12701 12702 12703 12680 12681 12682 12683 12684 12685 14498 14499 14500 14501 14502 14503 12692 12693 12694 12695 12696 12697 17204 17205 17206 17207 17208 17209 15938 15939 15940 15941 15942 15943 48 12680 12681 12682 12683 12684 12685 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 16190 16191 16192 16193 16194 16195 10976 10977 10978 10979 10980 10981 10970 10971 10972 10973 10974 10975 10964 10965 10966 10967 10968 10969 17456 17457 17458 17459 17460 17461 48 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 16442 16443 16444 16445 16446 16447 9560 9561 9562 9563 9564 9565 9554 9555 9556 9557 9558 9559 9548 9549 9550 9551 9552 9553 17708 17709 17710 17711 17712 17713 48 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 16694 16695 16696 16697 16698 16699 7922 7923 7924 7925 7926 7927 7916 7917 7918 7919 7920 7921 7910 7911 7912 7913 7914 7915 17960 17961 17962 17963 17964 17965 48 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 16946 16947 16948 16949 16950 16951 6254 6255 6256 6257 6258 6259 6248 6249 6250 6251 6252 6253 6242 6243 6244 6245 6246 6247 18212 18213 18214 18215 18216 18217 48 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 17210 17211 17212 17213 17214 17215 12728 12729 12730 12731 12732 12733 12722 12723 12724 12725 12726 12727 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 36 12746 12747 12748 12749 12750 12751 12728 12729 12730 12731 12732 12733 14528 14529 14530 14531 14532 14533 12740 12741 12742 12743 12744 12745 17210 17211 17212 17213 17214 17215 15944 15945 15946 15947 15948 15949 48 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 17462 17463 17464 17465 17466 17467 10994 10995 10996 10997 10998 10999 11054 11055 11056 11057 11058 11059 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 48 12728 12729 12730 12731 12732 12733 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 16196 16197 16198 16199 16200 16201 11006 11007 11008 11009 11010 11011 11000 11001 11002 11003 11004 11005 10994 10995 10996 10997 10998 10999 17462 17463 17464 17465 17466 17467 48 11018 11019 11020 11021 11022 11023 11054 11055 11056 11057 11058 11059 10994 10995 10996 10997 10998 10999 17714 17715 17716 17717 17718 17719 9578 9579 9580 9581 9582 9583 9638 9639 9640 9641 9642 9643 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 48 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 16448 16449 16450 16451 16452 16453 9590 9591 9592 9593 9594 9595 9584 9585 9586 9587 9588 9589 9578 9579 9580 9581 9582 9583 17714 17715 17716 17717 17718 17719 48 9602 9603 9604 9605 9606 9607 9638 9639 9640 9641 9642 9643 9578 9579 9580 9581 9582 9583 17966 17967 17968 17969 17970 17971 7940 7941 7942 7943 7944 7945 8000 8001 8002 8003 8004 8005 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 48 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 16700 16701 16702 16703 16704 16705 7952 7953 7954 7955 7956 7957 7946 7947 7948 7949 7950 7951 7940 7941 7942 7943 7944 7945 17966 17967 17968 17969 17970 17971 48 7964 7965 7966 7967 7968 7969 8000 8001 8002 8003 8004 8005 7940 7941 7942 7943 7944 7945 18218 18219 18220 18221 18222 18223 6272 6273 6274 6275 6276 6277 6332 6333 6334 6335 6336 6337 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 48 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 16952 16953 16954 16955 16956 16957 6284 6285 6286 6287 6288 6289 6278 6279 6280 6281 6282 6283 6272 6273 6274 6275 6276 6277 18218 18219 18220 18221 18222 18223 48 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 17216 17217 17218 17219 17220 17221 12776 12777 12778 12779 12780 12781 12770 12771 12772 12773 12774 12775 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 36 12794 12795 12796 12797 12798 12799 12776 12777 12778 12779 12780 12781 14558 14559 14560 14561 14562 14563 12788 12789 12790 12791 12792 12793 17216 17217 17218 17219 17220 17221 15950 15951 15952 15953 15954 15955 48 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 17468 17469 17470 17471 17472 17473 11042 11043 11044 11045 11046 11047 11036 11037 11038 11039 11040 11041 11030 11031 11032 11033 11034 11035 18662 18663 18664 18665 18666 18667 48 12776 12777 12778 12779 12780 12781 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 16202 16203 16204 16205 16206 16207 11066 11067 11068 11069 11070 11071 11060 11061 11062 11063 11064 11065 11042 11043 11044 11045 11046 11047 17468 17469 17470 17471 17472 17473 48 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 17720 17721 17722 17723 17724 17725 9626 9627 9628 9629 9630 9631 9620 9621 9622 9623 9624 9625 9614 9615 9616 9617 9618 9619 18812 18813 18814 18815 18816 18817 48 11042 11043 11044 11045 11046 11047 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 16454 16455 16456 16457 16458 16459 9650 9651 9652 9653 9654 9655 9644 9645 9646 9647 9648 9649 9626 9627 9628 9629 9630 9631 17720 17721 17722 17723 17724 17725 48 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 17972 17973 17974 17975 17976 17977 7988 7989 7990 7991 7992 7993 7982 7983 7984 7985 7986 7987 7976 7977 7978 7979 7980 7981 19088 19089 19090 19091 19092 19093 48 9626 9627 9628 9629 9630 9631 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 16706 16707 16708 16709 16710 16711 8012 8013 8014 8015 8016 8017 8006 8007 8008 8009 8010 8011 7988 7989 7990 7991 7992 7993 17972 17973 17974 17975 17976 17977 48 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 18224 18225 18226 18227 18228 18229 6320 6321 6322 6323 6324 6325 6314 6315 6316 6317 6318 6319 6308 6309 6310 6311 6312 6313 19220 19221 19222 19223 19224 19225 48 7988 7989 7990 7991 7992 7993 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 16958 16959 16960 16961 16962 16963 6344 6345 6346 6347 6348 6349 6338 6339 6340 6341 6342 6343 6320 6321 6322 6323 6324 6325 18224 18225 18226 18227 18228 18229 48 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 17222 17223 17224 17225 17226 17227 12824 12825 12826 12827 12828 12829 12818 12819 12820 12821 12822 12823 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 36 12842 12843 12844 12845 12846 12847 12824 12825 12826 12827 12828 12829 14588 14589 14590 14591 14592 14593 12836 12837 12838 12839 12840 12841 17222 17223 17224 17225 17226 17227 15956 15957 15958 15959 15960 15961 48 12824 12825 12826 12827 12828 12829 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 16208 16209 16210 16211 16212 16213 11096 11097 11098 11099 11100 11101 11090 11091 11092 11093 11094 11095 11084 11085 11086 11087 11088 11089 17474 17475 17476 17477 17478 17479 48 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 16460 16461 16462 16463 16464 16465 9680 9681 9682 9683 9684 9685 9674 9675 9676 9677 9678 9679 9668 9669 9670 9671 9672 9673 17726 17727 17728 17729 17730 17731 48 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 16712 16713 16714 16715 16716 16717 8042 8043 8044 8045 8046 8047 8036 8037 8038 8039 8040 8041 8030 8031 8032 8033 8034 8035 17978 17979 17980 17981 17982 17983 48 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 16964 16965 16966 16967 16968 16969 6374 6375 6376 6377 6378 6379 6368 6369 6370 6371 6372 6373 6362 6363 6364 6365 6366 6367 18230 18231 18232 18233 18234 18235 48 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 17228 17229 17230 17231 17232 17233 12872 12873 12874 12875 12876 12877 12866 12867 12868 12869 12870 12871 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 36 12890 12891 12892 12893 12894 12895 12872 12873 12874 12875 12876 12877 14618 14619 14620 14621 14622 14623 12884 12885 12886 12887 12888 12889 17228 17229 17230 17231 17232 17233 15962 15963 15964 15965 15966 15967 48 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 17480 17481 17482 17483 17484 17485 11114 11115 11116 11117 11118 11119 11174 11175 11176 11177 11178 11179 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 48 12872 12873 12874 12875 12876 12877 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 16214 16215 16216 16217 16218 16219 11126 11127 11128 11129 11130 11131 11120 11121 11122 11123 11124 11125 11114 11115 11116 11117 11118 11119 17480 17481 17482 17483 17484 17485 48 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 16466 16467 16468 16469 16470 16471 9710 9711 9712 9713 9714 9715 9704 9705 9706 9707 9708 9709 9698 9699 9700 9701 9702 9703 17732 17733 17734 17735 17736 17737 48 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 16718 16719 16720 16721 16722 16723 8072 8073 8074 8075 8076 8077 8066 8067 8068 8069 8070 8071 8060 8061 8062 8063 8064 8065 17984 17985 17986 17987 17988 17989 48 8084 8085 8086 8087 8088 8089 8120 8121 8122 8123 8124 8125 8060 8061 8062 8063 8064 8065 18236 18237 18238 18239 18240 18241 6392 6393 6394 6395 6396 6397 6452 6453 6454 6455 6456 6457 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 48 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 16970 16971 16972 16973 16974 16975 6404 6405 6406 6407 6408 6409 6398 6399 6400 6401 6402 6403 6392 6393 6394 6395 6396 6397 18236 18237 18238 18239 18240 18241 48 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 17234 17235 17236 17237 17238 17239 12920 12921 12922 12923 12924 12925 12914 12915 12916 12917 12918 12919 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 36 12938 12939 12940 12941 12942 12943 12920 12921 12922 12923 12924 12925 14648 14649 14650 14651 14652 14653 12932 12933 12934 12935 12936 12937 17234 17235 17236 17237 17238 17239 15968 15969 15970 15971 15972 15973 48 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 17486 17487 17488 17489 17490 17491 11162 11163 11164 11165 11166 11167 11156 11157 11158 11159 11160 11161 11150 11151 11152 11153 11154 11155 18674 18675 18676 18677 18678 18679 48 12920 12921 12922 12923 12924 12925 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 16220 16221 16222 16223 16224 16225 11186 11187 11188 11189 11190 11191 11180 11181 11182 11183 11184 11185 11162 11163 11164 11165 11166 11167 17486 17487 17488 17489 17490 17491 48 11162 11163 11164 11165 11166 11167 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 16472 16473 16474 16475 16476 16477 9740 9741 9742 9743 9744 9745 9734 9735 9736 9737 9738 9739 9728 9729 9730 9731 9732 9733 17738 17739 17740 17741 17742 17743 48 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 16724 16725 16726 16727 16728 16729 8132 8133 8134 8135 8136 8137 8126 8127 8128 8129 8130 8131 8108 8109 8110 8111 8112 8113 17990 17991 17992 17993 17994 17995 48 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 18242 18243 18244 18245 18246 18247 6440 6441 6442 6443 6444 6445 6434 6435 6436 6437 6438 6439 6428 6429 6430 6431 6432 6433 19232 19233 19234 19235 19236 19237 48 8108 8109 8110 8111 8112 8113 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 16976 16977 16978 16979 16980 16981 6464 6465 6466 6467 6468 6469 6458 6459 6460 6461 6462 6463 6440 6441 6442 6443 6444 6445 18242 18243 18244 18245 18246 18247 48 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 17240 17241 17242 17243 17244 17245 12968 12969 12970 12971 12972 12973 12962 12963 12964 12965 12966 12967 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 36 12986 12987 12988 12989 12990 12991 12968 12969 12970 12971 12972 12973 14678 14679 14680 14681 14682 14683 12980 12981 12982 12983 12984 12985 17240 17241 17242 17243 17244 17245 15974 15975 15976 15977 15978 15979 48 12968 12969 12970 12971 12972 12973 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 16226 16227 16228 16229 16230 16231 11216 11217 11218 11219 11220 11221 11210 11211 11212 11213 11214 11215 11204 11205 11206 11207 11208 11209 17492 17493 17494 17495 17496 17497 48 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 16478 16479 16480 16481 16482 16483 9770 9771 9772 9773 9774 9775 9764 9765 9766 9767 9768 9769 9758 9759 9760 9761 9762 9763 17744 17745 17746 17747 17748 17749 48 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 16730 16731 16732 16733 16734 16735 8162 8163 8164 8165 8166 8167 8156 8157 8158 8159 8160 8161 8150 8151 8152 8153 8154 8155 17996 17997 17998 17999 18000 18001 48 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 16982 16983 16984 16985 16986 16987 6494 6495 6496 6497 6498 6499 6488 6489 6490 6491 6492 6493 6482 6483 6484 6485 6486 6487 18248 18249 18250 18251 18252 18253 48 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 17246 17247 17248 17249 17250 17251 13016 13017 13018 13019 13020 13021 13010 13011 13012 13013 13014 13015 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 36 13034 13035 13036 13037 13038 13039 13016 13017 13018 13019 13020 13021 14708 14709 14710 14711 14712 14713 13028 13029 13030 13031 13032 13033 17246 17247 17248 17249 17250 17251 15980 15981 15982 15983 15984 15985 48 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 17498 17499 17500 17501 17502 17503 11234 11235 11236 11237 11238 11239 11294 11295 11296 11297 11298 11299 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 48 13016 13017 13018 13019 13020 13021 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 16232 16233 16234 16235 16236 16237 11246 11247 11248 11249 11250 11251 11240 11241 11242 11243 11244 11245 11234 11235 11236 11237 11238 11239 17498 17499 17500 17501 17502 17503 48 11258 11259 11260 11261 11262 11263 11294 11295 11296 11297 11298 11299 11234 11235 11236 11237 11238 11239 17750 17751 17752 17753 17754 17755 9788 9789 9790 9791 9792 9793 19400 19401 19402 19403 19404 19405 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 48 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 16484 16485 16486 16487 16488 16489 9800 9801 9802 9803 9804 9805 9794 9795 9796 9797 9798 9799 9788 9789 9790 9791 9792 9793 17750 17751 17752 17753 17754 17755 48 18866 18867 18868 18869 18870 18871 19400 19401 19402 19403 19404 19405 9788 9789 9790 9791 9792 9793 18002 18003 18004 18005 18006 18007 8180 8181 8182 8183 8184 8185 8240 8241 8242 8243 8244 8245 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 48 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 16736 16737 16738 16739 16740 16741 8192 8193 8194 8195 8196 8197 8186 8187 8188 8189 8190 8191 8180 8181 8182 8183 8184 8185 18002 18003 18004 18005 18006 18007 48 8204 8205 8206 8207 8208 8209 8240 8241 8242 8243 8244 8245 8180 8181 8182 8183 8184 8185 18254 18255 18256 18257 18258 18259 6512 6513 6514 6515 6516 6517 6572 6573 6574 6575 6576 6577 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 48 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 16988 16989 16990 16991 16992 16993 6524 6525 6526 6527 6528 6529 6518 6519 6520 6521 6522 6523 6512 6513 6514 6515 6516 6517 18254 18255 18256 18257 18258 18259 48 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 17252 17253 17254 17255 17256 17257 13064 13065 13066 13067 13068 13069 13058 13059 13060 13061 13062 13063 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 36 13082 13083 13084 13085 13086 13087 13064 13065 13066 13067 13068 13069 14738 14739 14740 14741 14742 14743 13076 13077 13078 13079 13080 13081 17252 17253 17254 17255 17256 17257 15986 15987 15988 15989 15990 15991 48 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 17504 17505 17506 17507 17508 17509 11282 11283 11284 11285 11286 11287 11276 11277 11278 11279 11280 11281 11270 11271 11272 11273 11274 11275 18686 18687 18688 18689 18690 18691 48 13064 13065 13066 13067 13068 13069 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 16238 16239 16240 16241 16242 16243 11306 11307 11308 11309 11310 11311 11300 11301 11302 11303 11304 11305 11282 11283 11284 11285 11286 11287 17504 17505 17506 17507 17508 17509 48 11282 11283 11284 11285 11286 11287 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 16490 16491 16492 16493 16494 16495 9830 9831 9832 9833 9834 9835 9824 9825 9826 9827 9828 9829 9818 9819 9820 9821 9822 9823 17756 17757 17758 17759 17760 17761 48 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 16742 16743 16744 16745 16746 16747 8252 8253 8254 8255 8256 8257 8246 8247 8248 8249 8250 8251 8228 8229 8230 8231 8232 8233 18008 18009 18010 18011 18012 18013 48 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 18260 18261 18262 18263 18264 18265 6560 6561 6562 6563 6564 6565 6554 6555 6556 6557 6558 6559 6548 6549 6550 6551 6552 6553 19244 19245 19246 19247 19248 19249 48 8228 8229 8230 8231 8232 8233 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 16994 16995 16996 16997 16998 16999 6584 6585 6586 6587 6588 6589 6578 6579 6580 6581 6582 6583 6560 6561 6562 6563 6564 6565 18260 18261 18262 18263 18264 18265 48 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 17258 17259 17260 17261 17262 17263 13112 13113 13114 13115 13116 13117 13106 13107 13108 13109 13110 13111 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 36 13130 13131 13132 13133 13134 13135 13112 13113 13114 13115 13116 13117 14768 14769 14770 14771 14772 14773 13124 13125 13126 13127 13128 13129 17258 17259 17260 17261 17262 17263 15992 15993 15994 15995 15996 15997 48 13112 13113 13114 13115 13116 13117 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 16244 16245 16246 16247 16248 16249 11336 11337 11338 11339 11340 11341 11330 11331 11332 11333 11334 11335 11324 11325 11326 11327 11328 11329 17510 17511 17512 17513 17514 17515 48 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 16496 16497 16498 16499 16500 16501 9860 9861 9862 9863 9864 9865 9854 9855 9856 9857 9858 9859 9848 9849 9850 9851 9852 9853 17762 17763 17764 17765 17766 17767 48 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 16748 16749 16750 16751 16752 16753 8282 8283 8284 8285 8286 8287 8276 8277 8278 8279 8280 8281 8270 8271 8272 8273 8274 8275 18014 18015 18016 18017 18018 18019 48 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 17000 17001 17002 17003 17004 17005 6614 6615 6616 6617 6618 6619 6608 6609 6610 6611 6612 6613 6602 6603 6604 6605 6606 6607 18266 18267 18268 18269 18270 18271 48 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 17264 17265 17266 17267 17268 17269 13160 13161 13162 13163 13164 13165 13154 13155 13156 13157 13158 13159 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 36 13178 13179 13180 13181 13182 13183 13160 13161 13162 13163 13164 13165 14798 14799 14800 14801 14802 14803 13172 13173 13174 13175 13176 13177 17264 17265 17266 17267 17268 17269 15998 15999 16000 16001 16002 16003 48 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 17516 17517 17518 17519 17520 17521 11354 11355 11356 11357 11358 11359 11414 11415 11416 11417 11418 11419 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 48 13160 13161 13162 13163 13164 13165 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 16250 16251 16252 16253 16254 16255 11366 11367 11368 11369 11370 11371 11360 11361 11362 11363 11364 11365 11354 11355 11356 11357 11358 11359 17516 17517 17518 17519 17520 17521 48 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 16502 16503 16504 16505 16506 16507 9890 9891 9892 9893 9894 9895 9884 9885 9886 9887 9888 9889 9878 9879 9880 9881 9882 9883 17768 17769 17770 17771 17772 17773 48 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 16754 16755 16756 16757 16758 16759 8312 8313 8314 8315 8316 8317 8306 8307 8308 8309 8310 8311 8300 8301 8302 8303 8304 8305 18020 18021 18022 18023 18024 18025 48 8324 8325 8326 8327 8328 8329 8360 8361 8362 8363 8364 8365 8300 8301 8302 8303 8304 8305 18272 18273 18274 18275 18276 18277 6632 6633 6634 6635 6636 6637 6692 6693 6694 6695 6696 6697 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 48 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 17006 17007 17008 17009 17010 17011 6644 6645 6646 6647 6648 6649 6638 6639 6640 6641 6642 6643 6632 6633 6634 6635 6636 6637 18272 18273 18274 18275 18276 18277 48 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 17270 17271 17272 17273 17274 17275 13208 13209 13210 13211 13212 13213 13202 13203 13204 13205 13206 13207 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 36 13226 13227 13228 13229 13230 13231 13208 13209 13210 13211 13212 13213 14828 14829 14830 14831 14832 14833 13220 13221 13222 13223 13224 13225 17270 17271 17272 17273 17274 17275 16004 16005 16006 16007 16008 16009 48 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 17522 17523 17524 17525 17526 17527 11402 11403 11404 11405 11406 11407 11396 11397 11398 11399 11400 11401 11390 11391 11392 11393 11394 11395 18698 18699 18700 18701 18702 18703 48 13208 13209 13210 13211 13212 13213 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 16256 16257 16258 16259 16260 16261 11426 11427 11428 11429 11430 11431 11420 11421 11422 11423 11424 11425 11402 11403 11404 11405 11406 11407 17522 17523 17524 17525 17526 17527 48 11402 11403 11404 11405 11406 11407 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 16508 16509 16510 16511 16512 16513 9920 9921 9922 9923 9924 9925 9914 9915 9916 9917 9918 9919 9908 9909 9910 9911 9912 9913 17774 17775 17776 17777 17778 17779 48 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 16760 16761 16762 16763 16764 16765 8372 8373 8374 8375 8376 8377 8366 8367 8368 8369 8370 8371 8348 8349 8350 8351 8352 8353 18026 18027 18028 18029 18030 18031 48 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 18278 18279 18280 18281 18282 18283 6680 6681 6682 6683 6684 6685 6674 6675 6676 6677 6678 6679 6668 6669 6670 6671 6672 6673 19256 19257 19258 19259 19260 19261 48 8348 8349 8350 8351 8352 8353 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 17012 17013 17014 17015 17016 17017 6704 6705 6706 6707 6708 6709 6698 6699 6700 6701 6702 6703 6680 6681 6682 6683 6684 6685 18278 18279 18280 18281 18282 18283 48 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 17276 17277 17278 17279 17280 17281 13256 13257 13258 13259 13260 13261 13250 13251 13252 13253 13254 13255 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 36 13274 13275 13276 13277 13278 13279 13256 13257 13258 13259 13260 13261 14858 14859 14860 14861 14862 14863 13268 13269 13270 13271 13272 13273 17276 17277 17278 17279 17280 17281 16010 16011 16012 16013 16014 16015 48 13256 13257 13258 13259 13260 13261 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 16262 16263 16264 16265 16266 16267 11456 11457 11458 11459 11460 11461 11450 11451 11452 11453 11454 11455 11444 11445 11446 11447 11448 11449 17528 17529 17530 17531 17532 17533 48 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 16514 16515 16516 16517 16518 16519 9950 9951 9952 9953 9954 9955 9944 9945 9946 9947 9948 9949 9938 9939 9940 9941 9942 9943 17780 17781 17782 17783 17784 17785 48 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 16766 16767 16768 16769 16770 16771 8402 8403 8404 8405 8406 8407 8396 8397 8398 8399 8400 8401 8390 8391 8392 8393 8394 8395 18032 18033 18034 18035 18036 18037 48 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 17018 17019 17020 17021 17022 17023 6734 6735 6736 6737 6738 6739 6728 6729 6730 6731 6732 6733 6722 6723 6724 6725 6726 6727 18284 18285 18286 18287 18288 18289 48 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 17282 17283 17284 17285 17286 17287 13304 13305 13306 13307 13308 13309 13298 13299 13300 13301 13302 13303 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 36 13322 13323 13324 13325 13326 13327 13304 13305 13306 13307 13308 13309 14888 14889 14890 14891 14892 14893 13316 13317 13318 13319 13320 13321 17282 17283 17284 17285 17286 17287 16016 16017 16018 16019 16020 16021 48 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 17534 17535 17536 17537 17538 17539 11474 11475 11476 11477 11478 11479 11534 11535 11536 11537 11538 11539 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 48 13304 13305 13306 13307 13308 13309 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 16268 16269 16270 16271 16272 16273 11486 11487 11488 11489 11490 11491 11480 11481 11482 11483 11484 11485 11474 11475 11476 11477 11478 11479 17534 17535 17536 17537 17538 17539 48 11498 11499 11500 11501 11502 11503 11534 11535 11536 11537 11538 11539 11474 11475 11476 11477 11478 11479 17786 17787 17788 17789 17790 17791 9968 9969 9970 9971 9972 9973 19406 19407 19408 19409 19410 19411 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 48 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 16520 16521 16522 16523 16524 16525 9980 9981 9982 9983 9984 9985 9974 9975 9976 9977 9978 9979 9968 9969 9970 9971 9972 9973 17786 17787 17788 17789 17790 17791 48 18926 18927 18928 18929 18930 18931 19406 19407 19408 19409 19410 19411 9968 9969 9970 9971 9972 9973 18038 18039 18040 18041 18042 18043 8420 8421 8422 8423 8424 8425 8480 8481 8482 8483 8484 8485 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 48 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 16772 16773 16774 16775 16776 16777 8432 8433 8434 8435 8436 8437 8426 8427 8428 8429 8430 8431 8420 8421 8422 8423 8424 8425 18038 18039 18040 18041 18042 18043 48 8444 8445 8446 8447 8448 8449 8480 8481 8482 8483 8484 8485 8420 8421 8422 8423 8424 8425 18290 18291 18292 18293 18294 18295 6752 6753 6754 6755 6756 6757 6812 6813 6814 6815 6816 6817 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 48 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 17024 17025 17026 17027 17028 17029 6764 6765 6766 6767 6768 6769 6758 6759 6760 6761 6762 6763 6752 6753 6754 6755 6756 6757 18290 18291 18292 18293 18294 18295 48 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 17288 17289 17290 17291 17292 17293 13352 13353 13354 13355 13356 13357 13346 13347 13348 13349 13350 13351 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 36 13370 13371 13372 13373 13374 13375 13352 13353 13354 13355 13356 13357 14918 14919 14920 14921 14922 14923 13364 13365 13366 13367 13368 13369 17288 17289 17290 17291 17292 17293 16022 16023 16024 16025 16026 16027 48 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 17540 17541 17542 17543 17544 17545 11522 11523 11524 11525 11526 11527 11516 11517 11518 11519 11520 11521 11510 11511 11512 11513 11514 11515 18710 18711 18712 18713 18714 18715 48 13352 13353 13354 13355 13356 13357 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 16274 16275 16276 16277 16278 16279 11546 11547 11548 11549 11550 11551 11540 11541 11542 11543 11544 11545 11522 11523 11524 11525 11526 11527 17540 17541 17542 17543 17544 17545 48 11522 11523 11524 11525 11526 11527 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 16526 16527 16528 16529 16530 16531 10010 10011 10012 10013 10014 10015 10004 10005 10006 10007 10008 10009 9998 9999 10000 10001 10002 10003 17792 17793 17794 17795 17796 17797 48 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 16778 16779 16780 16781 16782 16783 8492 8493 8494 8495 8496 8497 8486 8487 8488 8489 8490 8491 8468 8469 8470 8471 8472 8473 18044 18045 18046 18047 18048 18049 48 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 18296 18297 18298 18299 18300 18301 6800 6801 6802 6803 6804 6805 6794 6795 6796 6797 6798 6799 6788 6789 6790 6791 6792 6793 19268 19269 19270 19271 19272 19273 48 8468 8469 8470 8471 8472 8473 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 17030 17031 17032 17033 17034 17035 6824 6825 6826 6827 6828 6829 6818 6819 6820 6821 6822 6823 6800 6801 6802 6803 6804 6805 18296 18297 18298 18299 18300 18301 48 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 17294 17295 17296 17297 17298 17299 13400 13401 13402 13403 13404 13405 13394 13395 13396 13397 13398 13399 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 36 13418 13419 13420 13421 13422 13423 13400 13401 13402 13403 13404 13405 14948 14949 14950 14951 14952 14953 13412 13413 13414 13415 13416 13417 17294 17295 17296 17297 17298 17299 16028 16029 16030 16031 16032 16033 48 13400 13401 13402 13403 13404 13405 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 16280 16281 16282 16283 16284 16285 11576 11577 11578 11579 11580 11581 11570 11571 11572 11573 11574 11575 11564 11565 11566 11567 11568 11569 17546 17547 17548 17549 17550 17551 48 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 16532 16533 16534 16535 16536 16537 10040 10041 10042 10043 10044 10045 10034 10035 10036 10037 10038 10039 10028 10029 10030 10031 10032 10033 17798 17799 17800 17801 17802 17803 48 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 16784 16785 16786 16787 16788 16789 8522 8523 8524 8525 8526 8527 8516 8517 8518 8519 8520 8521 8510 8511 8512 8513 8514 8515 18050 18051 18052 18053 18054 18055 48 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 17036 17037 17038 17039 17040 17041 6854 6855 6856 6857 6858 6859 6848 6849 6850 6851 6852 6853 6842 6843 6844 6845 6846 6847 18302 18303 18304 18305 18306 18307 48 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 17300 17301 17302 17303 17304 17305 13448 13449 13450 13451 13452 13453 13442 13443 13444 13445 13446 13447 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 36 13466 13467 13468 13469 13470 13471 13448 13449 13450 13451 13452 13453 14978 14979 14980 14981 14982 14983 13460 13461 13462 13463 13464 13465 17300 17301 17302 17303 17304 17305 16034 16035 16036 16037 16038 16039 48 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 17552 17553 17554 17555 17556 17557 11594 11595 11596 11597 11598 11599 11654 11655 11656 11657 11658 11659 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 48 13448 13449 13450 13451 13452 13453 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 16286 16287 16288 16289 16290 16291 11606 11607 11608 11609 11610 11611 11600 11601 11602 11603 11604 11605 11594 11595 11596 11597 11598 11599 17552 17553 17554 17555 17556 17557 48 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 16538 16539 16540 16541 16542 16543 10070 10071 10072 10073 10074 10075 10064 10065 10066 10067 10068 10069 10058 10059 10060 10061 10062 10063 17804 17805 17806 17807 17808 17809 48 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 16790 16791 16792 16793 16794 16795 8552 8553 8554 8555 8556 8557 8546 8547 8548 8549 8550 8551 8540 8541 8542 8543 8544 8545 18056 18057 18058 18059 18060 18061 48 8564 8565 8566 8567 8568 8569 8600 8601 8602 8603 8604 8605 8540 8541 8542 8543 8544 8545 18308 18309 18310 18311 18312 18313 6872 6873 6874 6875 6876 6877 6932 6933 6934 6935 6936 6937 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 48 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 17042 17043 17044 17045 17046 17047 6884 6885 6886 6887 6888 6889 6878 6879 6880 6881 6882 6883 6872 6873 6874 6875 6876 6877 18308 18309 18310 18311 18312 18313 48 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 17306 17307 17308 17309 17310 17311 13496 13497 13498 13499 13500 13501 13490 13491 13492 13493 13494 13495 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 36 13514 13515 13516 13517 13518 13519 13496 13497 13498 13499 13500 13501 15008 15009 15010 15011 15012 15013 13508 13509 13510 13511 13512 13513 17306 17307 17308 17309 17310 17311 16040 16041 16042 16043 16044 16045 48 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 17558 17559 17560 17561 17562 17563 11642 11643 11644 11645 11646 11647 11636 11637 11638 11639 11640 11641 11630 11631 11632 11633 11634 11635 18722 18723 18724 18725 18726 18727 48 13496 13497 13498 13499 13500 13501 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 16292 16293 16294 16295 16296 16297 11666 11667 11668 11669 11670 11671 11660 11661 11662 11663 11664 11665 11642 11643 11644 11645 11646 11647 17558 17559 17560 17561 17562 17563 48 11642 11643 11644 11645 11646 11647 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 16544 16545 16546 16547 16548 16549 10100 10101 10102 10103 10104 10105 10094 10095 10096 10097 10098 10099 10088 10089 10090 10091 10092 10093 17810 17811 17812 17813 17814 17815 48 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 16796 16797 16798 16799 16800 16801 8612 8613 8614 8615 8616 8617 8606 8607 8608 8609 8610 8611 8588 8589 8590 8591 8592 8593 18062 18063 18064 18065 18066 18067 48 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 18314 18315 18316 18317 18318 18319 6920 6921 6922 6923 6924 6925 6914 6915 6916 6917 6918 6919 6908 6909 6910 6911 6912 6913 19280 19281 19282 19283 19284 19285 48 8588 8589 8590 8591 8592 8593 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 17048 17049 17050 17051 17052 17053 6944 6945 6946 6947 6948 6949 6938 6939 6940 6941 6942 6943 6920 6921 6922 6923 6924 6925 18314 18315 18316 18317 18318 18319 48 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 17312 17313 17314 17315 17316 17317 13544 13545 13546 13547 13548 13549 13538 13539 13540 13541 13542 13543 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 36 13562 13563 13564 13565 13566 13567 13544 13545 13546 13547 13548 13549 15038 15039 15040 15041 15042 15043 13556 13557 13558 13559 13560 13561 17312 17313 17314 17315 17316 17317 16046 16047 16048 16049 16050 16051 48 13544 13545 13546 13547 13548 13549 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 16298 16299 16300 16301 16302 16303 11696 11697 11698 11699 11700 11701 11690 11691 11692 11693 11694 11695 11684 11685 11686 11687 11688 11689 17564 17565 17566 17567 17568 17569 48 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 16550 16551 16552 16553 16554 16555 10130 10131 10132 10133 10134 10135 10124 10125 10126 10127 10128 10129 10118 10119 10120 10121 10122 10123 17816 17817 17818 17819 17820 17821 48 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 16802 16803 16804 16805 16806 16807 8642 8643 8644 8645 8646 8647 8636 8637 8638 8639 8640 8641 8630 8631 8632 8633 8634 8635 18068 18069 18070 18071 18072 18073 48 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 17054 17055 17056 17057 17058 17059 6974 6975 6976 6977 6978 6979 6968 6969 6970 6971 6972 6973 6962 6963 6964 6965 6966 6967 18320 18321 18322 18323 18324 18325 48 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 17318 17319 17320 17321 17322 17323 13592 13593 13594 13595 13596 13597 13586 13587 13588 13589 13590 13591 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 36 13610 13611 13612 13613 13614 13615 13592 13593 13594 13595 13596 13597 15068 15069 15070 15071 15072 15073 13604 13605 13606 13607 13608 13609 17318 17319 17320 17321 17322 17323 16052 16053 16054 16055 16056 16057 48 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 17570 17571 17572 17573 17574 17575 11714 11715 11716 11717 11718 11719 11774 11775 11776 11777 11778 11779 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 48 13592 13593 13594 13595 13596 13597 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 16304 16305 16306 16307 16308 16309 11726 11727 11728 11729 11730 11731 11720 11721 11722 11723 11724 11725 11714 11715 11716 11717 11718 11719 17570 17571 17572 17573 17574 17575 48 11738 11739 11740 11741 11742 11743 11774 11775 11776 11777 11778 11779 11714 11715 11716 11717 11718 11719 17822 17823 17824 17825 17826 17827 10148 10149 10150 10151 10152 10153 19412 19413 19414 19415 19416 19417 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 48 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 16556 16557 16558 16559 16560 16561 10160 10161 10162 10163 10164 10165 10154 10155 10156 10157 10158 10159 10148 10149 10150 10151 10152 10153 17822 17823 17824 17825 17826 17827 48 18986 18987 18988 18989 18990 18991 19412 19413 19414 19415 19416 19417 10148 10149 10150 10151 10152 10153 18074 18075 18076 18077 18078 18079 8660 8661 8662 8663 8664 8665 8720 8721 8722 8723 8724 8725 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 48 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 16808 16809 16810 16811 16812 16813 8672 8673 8674 8675 8676 8677 8666 8667 8668 8669 8670 8671 8660 8661 8662 8663 8664 8665 18074 18075 18076 18077 18078 18079 48 8684 8685 8686 8687 8688 8689 8720 8721 8722 8723 8724 8725 8660 8661 8662 8663 8664 8665 18326 18327 18328 18329 18330 18331 6992 6993 6994 6995 6996 6997 7052 7053 7054 7055 7056 7057 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 48 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 17060 17061 17062 17063 17064 17065 7004 7005 7006 7007 7008 7009 6998 6999 7000 7001 7002 7003 6992 6993 6994 6995 6996 6997 18326 18327 18328 18329 18330 18331 48 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 17324 17325 17326 17327 17328 17329 13640 13641 13642 13643 13644 13645 13634 13635 13636 13637 13638 13639 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 36 13658 13659 13660 13661 13662 13663 13640 13641 13642 13643 13644 13645 15098 15099 15100 15101 15102 15103 13652 13653 13654 13655 13656 13657 17324 17325 17326 17327 17328 17329 16058 16059 16060 16061 16062 16063 48 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 17576 17577 17578 17579 17580 17581 11762 11763 11764 11765 11766 11767 11756 11757 11758 11759 11760 11761 11750 11751 11752 11753 11754 11755 18734 18735 18736 18737 18738 18739 48 13640 13641 13642 13643 13644 13645 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 16310 16311 16312 16313 16314 16315 11786 11787 11788 11789 11790 11791 11780 11781 11782 11783 11784 11785 11762 11763 11764 11765 11766 11767 17576 17577 17578 17579 17580 17581 48 11762 11763 11764 11765 11766 11767 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 16562 16563 16564 16565 16566 16567 10190 10191 10192 10193 10194 10195 10184 10185 10186 10187 10188 10189 10178 10179 10180 10181 10182 10183 17828 17829 17830 17831 17832 17833 48 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 16814 16815 16816 16817 16818 16819 8732 8733 8734 8735 8736 8737 8726 8727 8728 8729 8730 8731 8708 8709 8710 8711 8712 8713 18080 18081 18082 18083 18084 18085 48 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 18332 18333 18334 18335 18336 18337 7040 7041 7042 7043 7044 7045 7034 7035 7036 7037 7038 7039 7028 7029 7030 7031 7032 7033 19292 19293 19294 19295 19296 19297 48 8708 8709 8710 8711 8712 8713 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 17066 17067 17068 17069 17070 17071 7064 7065 7066 7067 7068 7069 7058 7059 7060 7061 7062 7063 7040 7041 7042 7043 7044 7045 18332 18333 18334 18335 18336 18337 48 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 17330 17331 17332 17333 17334 17335 13688 13689 13690 13691 13692 13693 13682 13683 13684 13685 13686 13687 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 36 13706 13707 13708 13709 13710 13711 13688 13689 13690 13691 13692 13693 15128 15129 15130 15131 15132 15133 13700 13701 13702 13703 13704 13705 17330 17331 17332 17333 17334 17335 16064 16065 16066 16067 16068 16069 48 13688 13689 13690 13691 13692 13693 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 16316 16317 16318 16319 16320 16321 11816 11817 11818 11819 11820 11821 11810 11811 11812 11813 11814 11815 11804 11805 11806 11807 11808 11809 17582 17583 17584 17585 17586 17587 48 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 16568 16569 16570 16571 16572 16573 10220 10221 10222 10223 10224 10225 10214 10215 10216 10217 10218 10219 10208 10209 10210 10211 10212 10213 17834 17835 17836 17837 17838 17839 48 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 16820 16821 16822 16823 16824 16825 8762 8763 8764 8765 8766 8767 8756 8757 8758 8759 8760 8761 8750 8751 8752 8753 8754 8755 18086 18087 18088 18089 18090 18091 48 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 17072 17073 17074 17075 17076 17077 7094 7095 7096 7097 7098 7099 7088 7089 7090 7091 7092 7093 7082 7083 7084 7085 7086 7087 18338 18339 18340 18341 18342 18343 48 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 17336 17337 17338 17339 17340 17341 13736 13737 13738 13739 13740 13741 13730 13731 13732 13733 13734 13735 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 36 13754 13755 13756 13757 13758 13759 13736 13737 13738 13739 13740 13741 15158 15159 15160 15161 15162 15163 13748 13749 13750 13751 13752 13753 17336 17337 17338 17339 17340 17341 16070 16071 16072 16073 16074 16075 48 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 17588 17589 17590 17591 17592 17593 11834 11835 11836 11837 11838 11839 11894 11895 11896 11897 11898 11899 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 48 13736 13737 13738 13739 13740 13741 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 16322 16323 16324 16325 16326 16327 11846 11847 11848 11849 11850 11851 11840 11841 11842 11843 11844 11845 11834 11835 11836 11837 11838 11839 17588 17589 17590 17591 17592 17593 48 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 16574 16575 16576 16577 16578 16579 10250 10251 10252 10253 10254 10255 10244 10245 10246 10247 10248 10249 10238 10239 10240 10241 10242 10243 17840 17841 17842 17843 17844 17845 48 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 16826 16827 16828 16829 16830 16831 8792 8793 8794 8795 8796 8797 8786 8787 8788 8789 8790 8791 8780 8781 8782 8783 8784 8785 18092 18093 18094 18095 18096 18097 48 8804 8805 8806 8807 8808 8809 8840 8841 8842 8843 8844 8845 8780 8781 8782 8783 8784 8785 18344 18345 18346 18347 18348 18349 7112 7113 7114 7115 7116 7117 7172 7173 7174 7175 7176 7177 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 48 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 17078 17079 17080 17081 17082 17083 7124 7125 7126 7127 7128 7129 7118 7119 7120 7121 7122 7123 7112 7113 7114 7115 7116 7117 18344 18345 18346 18347 18348 18349 48 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 17342 17343 17344 17345 17346 17347 13784 13785 13786 13787 13788 13789 13778 13779 13780 13781 13782 13783 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 36 13802 13803 13804 13805 13806 13807 13784 13785 13786 13787 13788 13789 15188 15189 15190 15191 15192 15193 13796 13797 13798 13799 13800 13801 17342 17343 17344 17345 17346 17347 16076 16077 16078 16079 16080 16081 48 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 17594 17595 17596 17597 17598 17599 11882 11883 11884 11885 11886 11887 11876 11877 11878 11879 11880 11881 11870 11871 11872 11873 11874 11875 18746 18747 18748 18749 18750 18751 48 13784 13785 13786 13787 13788 13789 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 16328 16329 16330 16331 16332 16333 11906 11907 11908 11909 11910 11911 11900 11901 11902 11903 11904 11905 11882 11883 11884 11885 11886 11887 17594 17595 17596 17597 17598 17599 48 11882 11883 11884 11885 11886 11887 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 16580 16581 16582 16583 16584 16585 10280 10281 10282 10283 10284 10285 10274 10275 10276 10277 10278 10279 10268 10269 10270 10271 10272 10273 17846 17847 17848 17849 17850 17851 48 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 16832 16833 16834 16835 16836 16837 8852 8853 8854 8855 8856 8857 8846 8847 8848 8849 8850 8851 8828 8829 8830 8831 8832 8833 18098 18099 18100 18101 18102 18103 48 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 18350 18351 18352 18353 18354 18355 7160 7161 7162 7163 7164 7165 7154 7155 7156 7157 7158 7159 7148 7149 7150 7151 7152 7153 19304 19305 19306 19307 19308 19309 48 8828 8829 8830 8831 8832 8833 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 17084 17085 17086 17087 17088 17089 7184 7185 7186 7187 7188 7189 7178 7179 7180 7181 7182 7183 7160 7161 7162 7163 7164 7165 18350 18351 18352 18353 18354 18355 48 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 17348 17349 17350 17351 17352 17353 13832 13833 13834 13835 13836 13837 13826 13827 13828 13829 13830 13831 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 36 13850 13851 13852 13853 13854 13855 13832 13833 13834 13835 13836 13837 15218 15219 15220 15221 15222 15223 13844 13845 13846 13847 13848 13849 17348 17349 17350 17351 17352 17353 16082 16083 16084 16085 16086 16087 48 13832 13833 13834 13835 13836 13837 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 16334 16335 16336 16337 16338 16339 11936 11937 11938 11939 11940 11941 11930 11931 11932 11933 11934 11935 11924 11925 11926 11927 11928 11929 17600 17601 17602 17603 17604 17605 48 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 16586 16587 16588 16589 16590 16591 10310 10311 10312 10313 10314 10315 10304 10305 10306 10307 10308 10309 10298 10299 10300 10301 10302 10303 17852 17853 17854 17855 17856 17857 48 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 16838 16839 16840 16841 16842 16843 8882 8883 8884 8885 8886 8887 8876 8877 8878 8879 8880 8881 8870 8871 8872 8873 8874 8875 18104 18105 18106 18107 18108 18109 48 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 17090 17091 17092 17093 17094 17095 7214 7215 7216 7217 7218 7219 7208 7209 7210 7211 7212 7213 7202 7203 7204 7205 7206 7207 18356 18357 18358 18359 18360 18361 48 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 17354 17355 17356 17357 17358 17359 13880 13881 13882 13883 13884 13885 13874 13875 13876 13877 13878 13879 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 36 13898 13899 13900 13901 13902 13903 13880 13881 13882 13883 13884 13885 15248 15249 15250 15251 15252 15253 13892 13893 13894 13895 13896 13897 17354 17355 17356 17357 17358 17359 16088 16089 16090 16091 16092 16093 48 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 17606 17607 17608 17609 17610 17611 11954 11955 11956 11957 11958 11959 12014 12015 12016 12017 12018 12019 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 48 13880 13881 13882 13883 13884 13885 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 16340 16341 16342 16343 16344 16345 11966 11967 11968 11969 11970 11971 11960 11961 11962 11963 11964 11965 11954 11955 11956 11957 11958 11959 17606 17607 17608 17609 17610 17611 48 11978 11979 11980 11981 11982 11983 12014 12015 12016 12017 12018 12019 11954 11955 11956 11957 11958 11959 17858 17859 17860 17861 17862 17863 10328 10329 10330 10331 10332 10333 19418 19419 19420 19421 19422 19423 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 48 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 16592 16593 16594 16595 16596 16597 10340 10341 10342 10343 10344 10345 10334 10335 10336 10337 10338 10339 10328 10329 10330 10331 10332 10333 17858 17859 17860 17861 17862 17863 48 19046 19047 19048 19049 19050 19051 19418 19419 19420 19421 19422 19423 10328 10329 10330 10331 10332 10333 18110 18111 18112 18113 18114 18115 8900 8901 8902 8903 8904 8905 8960 8961 8962 8963 8964 8965 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 48 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 16844 16845 16846 16847 16848 16849 8912 8913 8914 8915 8916 8917 8906 8907 8908 8909 8910 8911 8900 8901 8902 8903 8904 8905 18110 18111 18112 18113 18114 18115 48 8924 8925 8926 8927 8928 8929 8960 8961 8962 8963 8964 8965 8900 8901 8902 8903 8904 8905 18362 18363 18364 18365 18366 18367 7232 7233 7234 7235 7236 7237 7292 7293 7294 7295 7296 7297 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 48 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 17096 17097 17098 17099 17100 17101 7244 7245 7246 7247 7248 7249 7238 7239 7240 7241 7242 7243 7232 7233 7234 7235 7236 7237 18362 18363 18364 18365 18366 18367 48 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 17360 17361 17362 17363 17364 17365 13928 13929 13930 13931 13932 13933 13922 13923 13924 13925 13926 13927 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 36 13946 13947 13948 13949 13950 13951 13928 13929 13930 13931 13932 13933 15278 15279 15280 15281 15282 15283 13940 13941 13942 13943 13944 13945 17360 17361 17362 17363 17364 17365 16094 16095 16096 16097 16098 16099 48 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 17612 17613 17614 17615 17616 17617 12002 12003 12004 12005 12006 12007 11996 11997 11998 11999 12000 12001 11990 11991 11992 11993 11994 11995 18758 18759 18760 18761 18762 18763 48 13928 13929 13930 13931 13932 13933 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 16346 16347 16348 16349 16350 16351 12026 12027 12028 12029 12030 12031 12020 12021 12022 12023 12024 12025 12002 12003 12004 12005 12006 12007 17612 17613 17614 17615 17616 17617 48 12002 12003 12004 12005 12006 12007 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 16598 16599 16600 16601 16602 16603 10370 10371 10372 10373 10374 10375 10364 10365 10366 10367 10368 10369 10358 10359 10360 10361 10362 10363 17864 17865 17866 17867 17868 17869 48 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 16850 16851 16852 16853 16854 16855 8972 8973 8974 8975 8976 8977 8966 8967 8968 8969 8970 8971 8948 8949 8950 8951 8952 8953 18116 18117 18118 18119 18120 18121 48 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 18368 18369 18370 18371 18372 18373 7280 7281 7282 7283 7284 7285 7274 7275 7276 7277 7278 7279 7268 7269 7270 7271 7272 7273 19316 19317 19318 19319 19320 19321 48 8948 8949 8950 8951 8952 8953 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 17102 17103 17104 17105 17106 17107 7304 7305 7306 7307 7308 7309 7298 7299 7300 7301 7302 7303 7280 7281 7282 7283 7284 7285 18368 18369 18370 18371 18372 18373 48 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 17366 17367 17368 17369 17370 17371 13976 13977 13978 13979 13980 13981 13970 13971 13972 13973 13974 13975 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 36 13994 13995 13996 13997 13998 13999 13976 13977 13978 13979 13980 13981 15308 15309 15310 15311 15312 15313 13988 13989 13990 13991 13992 13993 17366 17367 17368 17369 17370 17371 16100 16101 16102 16103 16104 16105 48 13976 13977 13978 13979 13980 13981 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 16352 16353 16354 16355 16356 16357 12056 12057 12058 12059 12060 12061 12050 12051 12052 12053 12054 12055 12044 12045 12046 12047 12048 12049 17618 17619 17620 17621 17622 17623 48 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 16604 16605 16606 16607 16608 16609 10400 10401 10402 10403 10404 10405 10394 10395 10396 10397 10398 10399 10388 10389 10390 10391 10392 10393 17870 17871 17872 17873 17874 17875 48 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 16856 16857 16858 16859 16860 16861 9002 9003 9004 9005 9006 9007 8996 8997 8998 8999 9000 9001 8990 8991 8992 8993 8994 8995 18122 18123 18124 18125 18126 18127 48 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 17108 17109 17110 17111 17112 17113 7334 7335 7336 7337 7338 7339 7328 7329 7330 7331 7332 7333 7322 7323 7324 7325 7326 7327 18374 18375 18376 18377 18378 18379 48 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 17372 17373 17374 17375 17376 17377 14024 14025 14026 14027 14028 14029 14018 14019 14020 14021 14022 14023 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 36 14042 14043 14044 14045 14046 14047 14024 14025 14026 14027 14028 14029 15338 15339 15340 15341 15342 15343 14036 14037 14038 14039 14040 14041 17372 17373 17374 17375 17376 17377 16106 16107 16108 16109 16110 16111 48 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 17624 17625 17626 17627 17628 17629 12074 12075 12076 12077 12078 12079 12134 12135 12136 12137 12138 12139 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 48 14024 14025 14026 14027 14028 14029 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 16358 16359 16360 16361 16362 16363 12086 12087 12088 12089 12090 12091 12080 12081 12082 12083 12084 12085 12074 12075 12076 12077 12078 12079 17624 17625 17626 17627 17628 17629 48 12098 12099 12100 12101 12102 12103 12134 12135 12136 12137 12138 12139 12074 12075 12076 12077 12078 12079 17876 17877 17878 17879 17880 17881 10418 10419 10420 10421 10422 10423 10478 10479 10480 10481 10482 10483 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 48 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 16610 16611 16612 16613 16614 16615 10430 10431 10432 10433 10434 10435 10424 10425 10426 10427 10428 10429 10418 10419 10420 10421 10422 10423 17876 17877 17878 17879 17880 17881 48 10442 10443 10444 10445 10446 10447 10478 10479 10480 10481 10482 10483 10418 10419 10420 10421 10422 10423 18128 18129 18130 18131 18132 18133 9020 9021 9022 9023 9024 9025 9080 9081 9082 9083 9084 9085 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 48 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 16862 16863 16864 16865 16866 16867 9032 9033 9034 9035 9036 9037 9026 9027 9028 9029 9030 9031 9020 9021 9022 9023 9024 9025 18128 18129 18130 18131 18132 18133 48 9044 9045 9046 9047 9048 9049 9080 9081 9082 9083 9084 9085 9020 9021 9022 9023 9024 9025 18380 18381 18382 18383 18384 18385 7352 7353 7354 7355 7356 7357 7412 7413 7414 7415 7416 7417 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 48 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 17114 17115 17116 17117 17118 17119 7364 7365 7366 7367 7368 7369 7358 7359 7360 7361 7362 7363 7352 7353 7354 7355 7356 7357 18380 18381 18382 18383 18384 18385 48 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 17378 17379 17380 17381 17382 17383 14072 14073 14074 14075 14076 14077 14066 14067 14068 14069 14070 14071 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 36 14090 14091 14092 14093 14094 14095 14072 14073 14074 14075 14076 14077 15368 15369 15370 15371 15372 15373 14084 14085 14086 14087 14088 14089 17378 17379 17380 17381 17382 17383 16112 16113 16114 16115 16116 16117 48 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 17630 17631 17632 17633 17634 17635 12122 12123 12124 12125 12126 12127 12116 12117 12118 12119 12120 12121 12110 12111 12112 12113 12114 12115 18770 18771 18772 18773 18774 18775 48 14072 14073 14074 14075 14076 14077 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 16364 16365 16366 16367 16368 16369 12146 12147 12148 12149 12150 12151 12140 12141 12142 12143 12144 12145 12122 12123 12124 12125 12126 12127 17630 17631 17632 17633 17634 17635 48 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 17882 17883 17884 17885 17886 17887 10466 10467 10468 10469 10470 10471 10460 10461 10462 10463 10464 10465 10454 10455 10456 10457 10458 10459 19064 19065 19066 19067 19068 19069 48 12122 12123 12124 12125 12126 12127 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 16616 16617 16618 16619 16620 16621 10490 10491 10492 10493 10494 10495 10484 10485 10486 10487 10488 10489 10466 10467 10468 10469 10470 10471 17882 17883 17884 17885 17886 17887 48 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 18134 18135 18136 18137 18138 18139 9068 9069 9070 9071 9072 9073 9062 9063 9064 9065 9066 9067 9056 9057 9058 9059 9060 9061 19196 19197 19198 19199 19200 19201 48 10466 10467 10468 10469 10470 10471 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 16868 16869 16870 16871 16872 16873 9092 9093 9094 9095 9096 9097 9086 9087 9088 9089 9090 9091 9068 9069 9070 9071 9072 9073 18134 18135 18136 18137 18138 18139 48 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 18386 18387 18388 18389 18390 18391 7400 7401 7402 7403 7404 7405 7394 7395 7396 7397 7398 7399 7388 7389 7390 7391 7392 7393 19328 19329 19330 19331 19332 19333 48 9068 9069 9070 9071 9072 9073 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 17120 17121 17122 17123 17124 17125 7424 7425 7426 7427 7428 7429 7418 7419 7420 7421 7422 7423 7400 7401 7402 7403 7404 7405 18386 18387 18388 18389 18390 18391 48 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 17384 17385 17386 17387 17388 17389 14120 14121 14122 14123 14124 14125 14114 14115 14116 14117 14118 14119 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 36 14138 14139 14140 14141 14142 14143 14120 14121 14122 14123 14124 14125 15398 15399 15400 15401 15402 15403 14132 14133 14134 14135 14136 14137 17384 17385 17386 17387 17388 17389 16118 16119 16120 16121 16122 16123 48 14120 14121 14122 14123 14124 14125 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 16370 16371 16372 16373 16374 16375 12176 12177 12178 12179 12180 12181 12170 12171 12172 12173 12174 12175 12164 12165 12166 12167 12168 12169 17636 17637 17638 17639 17640 17641 48 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 16622 16623 16624 16625 16626 16627 10520 10521 10522 10523 10524 10525 10514 10515 10516 10517 10518 10519 10508 10509 10510 10511 10512 10513 17888 17889 17890 17891 17892 17893 48 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 16874 16875 16876 16877 16878 16879 9122 9123 9124 9125 9126 9127 9116 9117 9118 9119 9120 9121 9110 9111 9112 9113 9114 9115 18140 18141 18142 18143 18144 18145 48 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 17126 17127 17128 17129 17130 17131 7454 7455 7456 7457 7458 7459 7448 7449 7450 7451 7452 7453 7442 7443 7444 7445 7446 7447 18392 18393 18394 18395 18396 18397 48 4310 4311 4312 4313 4314 4315 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 19424 19425 19426 19427 19428 19429 127 128 129 130 131 132 121 122 123 124 125 126 115 116 117 118 119 120 5780 5781 5782 5783 5784 5785 48 5816 5817 5818 5819 5820 5821 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 19430 19431 19432 19433 19434 19435 139 140 141 142 143 144 133 134 135 136 137 138 127 128 129 130 131 132 19424 19425 19426 19427 19428 19429 48 5846 5847 5848 5849 5850 5851 5906 5907 5908 5909 5910 5911 5870 5871 5872 5873 5874 5875 19436 19437 19438 19439 19440 19441 151 152 153 154 155 156 145 146 147 148 149 150 139 140 141 142 143 144 19430 19431 19432 19433 19434 19435 48 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 19442 19443 19444 19445 19446 19447 163 164 165 166 167 168 157 158 159 160 161 162 151 152 153 154 155 156 19436 19437 19438 19439 19440 19441 48 5882 5883 5884 5885 5886 5887 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 19448 19449 19450 19451 19452 19453 175 176 177 178 179 180 169 170 171 172 173 174 163 164 165 166 167 168 19442 19443 19444 19445 19446 19447 48 5966 5967 5968 5969 5970 5971 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 19454 19455 19456 19457 19458 19459 187 188 189 190 191 192 181 182 183 184 185 186 175 176 177 178 179 180 19448 19449 19450 19451 19452 19453 48 5996 5997 5998 5999 6000 6001 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 19460 19461 19462 19463 19464 19465 199 200 201 202 203 204 193 194 195 196 197 198 187 188 189 190 191 192 19454 19455 19456 19457 19458 19459 48 6032 6033 6034 6035 6036 6037 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 19466 19467 19468 19469 19470 19471 211 212 213 214 215 216 205 206 207 208 209 210 199 200 201 202 203 204 19460 19461 19462 19463 19464 19465 48 6092 6093 6094 6095 6096 6097 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 19472 19473 19474 19475 19476 19477 223 224 225 226 227 228 217 218 219 220 221 222 211 212 213 214 215 216 19466 19467 19468 19469 19470 19471 48 6122 6123 6124 6125 6126 6127 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 19478 19479 19480 19481 19482 19483 235 236 237 238 239 240 229 230 231 232 233 234 223 224 225 226 227 228 19472 19473 19474 19475 19476 19477 48 6152 6153 6154 6155 6156 6157 6206 6207 6208 6209 6210 6211 6200 6201 6202 6203 6204 6205 19484 19485 19486 19487 19488 19489 247 248 249 250 251 252 241 242 243 244 245 246 235 236 237 238 239 240 19478 19479 19480 19481 19482 19483 48 6200 6201 6202 6203 6204 6205 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 19490 19491 19492 19493 19494 19495 259 260 261 262 263 264 253 254 255 256 257 258 247 248 249 250 251 252 19484 19485 19486 19487 19488 19489 48 6242 6243 6244 6245 6246 6247 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 19496 19497 19498 19499 19500 19501 271 272 273 274 275 276 265 266 267 268 269 270 259 260 261 262 263 264 19490 19491 19492 19493 19494 19495 48 6272 6273 6274 6275 6276 6277 6326 6327 6328 6329 6330 6331 6320 6321 6322 6323 6324 6325 19502 19503 19504 19505 19506 19507 283 284 285 286 287 288 277 278 279 280 281 282 271 272 273 274 275 276 19496 19497 19498 19499 19500 19501 48 6320 6321 6322 6323 6324 6325 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 19508 19509 19510 19511 19512 19513 295 296 297 298 299 300 289 290 291 292 293 294 283 284 285 286 287 288 19502 19503 19504 19505 19506 19507 48 6362 6363 6364 6365 6366 6367 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 19514 19515 19516 19517 19518 19519 307 308 309 310 311 312 301 302 303 304 305 306 295 296 297 298 299 300 19508 19509 19510 19511 19512 19513 48 6392 6393 6394 6395 6396 6397 6446 6447 6448 6449 6450 6451 6440 6441 6442 6443 6444 6445 19520 19521 19522 19523 19524 19525 319 320 321 322 323 324 313 314 315 316 317 318 307 308 309 310 311 312 19514 19515 19516 19517 19518 19519 48 6440 6441 6442 6443 6444 6445 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 19526 19527 19528 19529 19530 19531 331 332 333 334 335 336 325 326 327 328 329 330 319 320 321 322 323 324 19520 19521 19522 19523 19524 19525 48 6482 6483 6484 6485 6486 6487 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 19532 19533 19534 19535 19536 19537 343 344 345 346 347 348 337 338 339 340 341 342 331 332 333 334 335 336 19526 19527 19528 19529 19530 19531 48 6512 6513 6514 6515 6516 6517 6566 6567 6568 6569 6570 6571 6560 6561 6562 6563 6564 6565 19538 19539 19540 19541 19542 19543 355 356 357 358 359 360 349 350 351 352 353 354 343 344 345 346 347 348 19532 19533 19534 19535 19536 19537 48 6560 6561 6562 6563 6564 6565 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 19544 19545 19546 19547 19548 19549 367 368 369 370 371 372 361 362 363 364 365 366 355 356 357 358 359 360 19538 19539 19540 19541 19542 19543 48 6602 6603 6604 6605 6606 6607 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 19550 19551 19552 19553 19554 19555 379 380 381 382 383 384 373 374 375 376 377 378 367 368 369 370 371 372 19544 19545 19546 19547 19548 19549 48 6632 6633 6634 6635 6636 6637 6686 6687 6688 6689 6690 6691 6680 6681 6682 6683 6684 6685 19556 19557 19558 19559 19560 19561 391 392 393 394 395 396 385 386 387 388 389 390 379 380 381 382 383 384 19550 19551 19552 19553 19554 19555 48 6680 6681 6682 6683 6684 6685 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 19562 19563 19564 19565 19566 19567 403 404 405 406 407 408 397 398 399 400 401 402 391 392 393 394 395 396 19556 19557 19558 19559 19560 19561 48 6722 6723 6724 6725 6726 6727 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 19568 19569 19570 19571 19572 19573 415 416 417 418 419 420 409 410 411 412 413 414 403 404 405 406 407 408 19562 19563 19564 19565 19566 19567 48 6752 6753 6754 6755 6756 6757 6806 6807 6808 6809 6810 6811 6800 6801 6802 6803 6804 6805 19574 19575 19576 19577 19578 19579 427 428 429 430 431 432 421 422 423 424 425 426 415 416 417 418 419 420 19568 19569 19570 19571 19572 19573 48 6800 6801 6802 6803 6804 6805 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 19580 19581 19582 19583 19584 19585 439 440 441 442 443 444 433 434 435 436 437 438 427 428 429 430 431 432 19574 19575 19576 19577 19578 19579 48 6842 6843 6844 6845 6846 6847 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 19586 19587 19588 19589 19590 19591 451 452 453 454 455 456 445 446 447 448 449 450 439 440 441 442 443 444 19580 19581 19582 19583 19584 19585 48 6872 6873 6874 6875 6876 6877 6926 6927 6928 6929 6930 6931 6920 6921 6922 6923 6924 6925 19592 19593 19594 19595 19596 19597 463 464 465 466 467 468 457 458 459 460 461 462 451 452 453 454 455 456 19586 19587 19588 19589 19590 19591 48 6920 6921 6922 6923 6924 6925 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 19598 19599 19600 19601 19602 19603 475 476 477 478 479 480 469 470 471 472 473 474 463 464 465 466 467 468 19592 19593 19594 19595 19596 19597 48 6962 6963 6964 6965 6966 6967 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 19604 19605 19606 19607 19608 19609 487 488 489 490 491 492 481 482 483 484 485 486 475 476 477 478 479 480 19598 19599 19600 19601 19602 19603 48 6992 6993 6994 6995 6996 6997 7046 7047 7048 7049 7050 7051 7040 7041 7042 7043 7044 7045 19610 19611 19612 19613 19614 19615 499 500 501 502 503 504 493 494 495 496 497 498 487 488 489 490 491 492 19604 19605 19606 19607 19608 19609 48 7040 7041 7042 7043 7044 7045 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 19616 19617 19618 19619 19620 19621 511 512 513 514 515 516 505 506 507 508 509 510 499 500 501 502 503 504 19610 19611 19612 19613 19614 19615 48 7082 7083 7084 7085 7086 7087 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 19622 19623 19624 19625 19626 19627 523 524 525 526 527 528 517 518 519 520 521 522 511 512 513 514 515 516 19616 19617 19618 19619 19620 19621 48 7112 7113 7114 7115 7116 7117 7166 7167 7168 7169 7170 7171 7160 7161 7162 7163 7164 7165 19628 19629 19630 19631 19632 19633 535 536 537 538 539 540 529 530 531 532 533 534 523 524 525 526 527 528 19622 19623 19624 19625 19626 19627 48 7160 7161 7162 7163 7164 7165 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 19634 19635 19636 19637 19638 19639 547 548 549 550 551 552 541 542 543 544 545 546 535 536 537 538 539 540 19628 19629 19630 19631 19632 19633 48 7202 7203 7204 7205 7206 7207 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 19640 19641 19642 19643 19644 19645 559 560 561 562 563 564 553 554 555 556 557 558 547 548 549 550 551 552 19634 19635 19636 19637 19638 19639 48 7232 7233 7234 7235 7236 7237 7286 7287 7288 7289 7290 7291 7280 7281 7282 7283 7284 7285 19646 19647 19648 19649 19650 19651 571 572 573 574 575 576 565 566 567 568 569 570 559 560 561 562 563 564 19640 19641 19642 19643 19644 19645 48 7280 7281 7282 7283 7284 7285 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 19652 19653 19654 19655 19656 19657 583 584 585 586 587 588 577 578 579 580 581 582 571 572 573 574 575 576 19646 19647 19648 19649 19650 19651 48 7322 7323 7324 7325 7326 7327 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 19658 19659 19660 19661 19662 19663 595 596 597 598 599 600 589 590 591 592 593 594 583 584 585 586 587 588 19652 19653 19654 19655 19656 19657 48 7352 7353 7354 7355 7356 7357 7406 7407 7408 7409 7410 7411 7400 7401 7402 7403 7404 7405 19664 19665 19666 19667 19668 19669 607 608 609 610 611 612 601 602 603 604 605 606 595 596 597 598 599 600 19658 19659 19660 19661 19662 19663 48 7400 7401 7402 7403 7404 7405 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 19670 19671 19672 19673 19674 19675 619 620 621 622 623 624 613 614 615 616 617 618 607 608 609 610 611 612 19664 19665 19666 19667 19668 19669 48 7442 7443 7444 7445 7446 7447 7466 7467 7468 7469 7470 7471 2083 2084 2085 2086 2087 2088 19676 19677 19678 19679 19680 19681 631 632 633 634 635 636 625 626 627 628 629 630 619 620 621 622 623 624 19670 19671 19672 19673 19674 19675 48 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 5816 5817 5818 5819 5820 5821 19424 19425 19426 19427 19428 19429 127 128 129 130 131 132 15446 15447 15448 15449 15450 15451 15422 15423 15424 15425 15426 15427 19682 19683 19684 19685 19686 19687 48 19382 19383 19384 19385 19386 19387 19388 19389 19390 19391 19392 19393 6092 6093 6094 6095 6096 6097 19466 19467 19468 19469 19470 19471 211 212 213 214 215 216 15470 15471 15472 15473 15474 15475 15464 15465 15466 15467 15468 15469 19688 19689 19690 19691 19692 19693 48 6176 6177 6178 6179 6180 6181 6212 6213 6214 6215 6216 6217 6152 6153 6154 6155 6156 6157 19478 19479 19480 19481 19482 19483 235 236 237 238 239 240 15506 15507 15508 15509 15510 15511 15482 15483 15484 15485 15486 15487 19694 19695 19696 19697 19698 19699 48 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 19484 19485 19486 19487 19488 19489 247 248 249 250 251 252 15500 15501 15502 15503 15504 15505 15494 15495 15496 15497 15498 15499 19700 19701 19702 19703 19704 19705 48 6296 6297 6298 6299 6300 6301 6332 6333 6334 6335 6336 6337 6272 6273 6274 6275 6276 6277 19496 19497 19498 19499 19500 19501 271 272 273 274 275 276 15536 15537 15538 15539 15540 15541 15512 15513 15514 15515 15516 15517 19706 19707 19708 19709 19710 19711 48 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 19502 19503 19504 19505 19506 19507 283 284 285 286 287 288 15530 15531 15532 15533 15534 15535 15524 15525 15526 15527 15528 15529 19712 19713 19714 19715 19716 19717 48 6416 6417 6418 6419 6420 6421 6452 6453 6454 6455 6456 6457 6392 6393 6394 6395 6396 6397 19514 19515 19516 19517 19518 19519 307 308 309 310 311 312 15566 15567 15568 15569 15570 15571 15542 15543 15544 15545 15546 15547 19718 19719 19720 19721 19722 19723 48 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 19520 19521 19522 19523 19524 19525 319 320 321 322 323 324 15560 15561 15562 15563 15564 15565 15554 15555 15556 15557 15558 15559 19724 19725 19726 19727 19728 19729 48 6536 6537 6538 6539 6540 6541 6572 6573 6574 6575 6576 6577 6512 6513 6514 6515 6516 6517 19532 19533 19534 19535 19536 19537 343 344 345 346 347 348 15596 15597 15598 15599 15600 15601 15572 15573 15574 15575 15576 15577 19730 19731 19732 19733 19734 19735 48 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 19538 19539 19540 19541 19542 19543 355 356 357 358 359 360 15590 15591 15592 15593 15594 15595 15584 15585 15586 15587 15588 15589 19736 19737 19738 19739 19740 19741 48 6656 6657 6658 6659 6660 6661 6692 6693 6694 6695 6696 6697 6632 6633 6634 6635 6636 6637 19550 19551 19552 19553 19554 19555 379 380 381 382 383 384 15626 15627 15628 15629 15630 15631 15602 15603 15604 15605 15606 15607 19742 19743 19744 19745 19746 19747 48 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 19556 19557 19558 19559 19560 19561 391 392 393 394 395 396 15620 15621 15622 15623 15624 15625 15614 15615 15616 15617 15618 15619 19748 19749 19750 19751 19752 19753 48 6776 6777 6778 6779 6780 6781 6812 6813 6814 6815 6816 6817 6752 6753 6754 6755 6756 6757 19568 19569 19570 19571 19572 19573 415 416 417 418 419 420 15656 15657 15658 15659 15660 15661 15632 15633 15634 15635 15636 15637 19754 19755 19756 19757 19758 19759 48 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 19574 19575 19576 19577 19578 19579 427 428 429 430 431 432 15650 15651 15652 15653 15654 15655 15644 15645 15646 15647 15648 15649 19760 19761 19762 19763 19764 19765 48 6896 6897 6898 6899 6900 6901 6932 6933 6934 6935 6936 6937 6872 6873 6874 6875 6876 6877 19586 19587 19588 19589 19590 19591 451 452 453 454 455 456 15686 15687 15688 15689 15690 15691 15662 15663 15664 15665 15666 15667 19766 19767 19768 19769 19770 19771 48 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 19592 19593 19594 19595 19596 19597 463 464 465 466 467 468 15680 15681 15682 15683 15684 15685 15674 15675 15676 15677 15678 15679 19772 19773 19774 19775 19776 19777 48 7016 7017 7018 7019 7020 7021 7052 7053 7054 7055 7056 7057 6992 6993 6994 6995 6996 6997 19604 19605 19606 19607 19608 19609 487 488 489 490 491 492 15716 15717 15718 15719 15720 15721 15692 15693 15694 15695 15696 15697 19778 19779 19780 19781 19782 19783 48 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 19610 19611 19612 19613 19614 19615 499 500 501 502 503 504 15710 15711 15712 15713 15714 15715 15704 15705 15706 15707 15708 15709 19784 19785 19786 19787 19788 19789 48 7136 7137 7138 7139 7140 7141 7172 7173 7174 7175 7176 7177 7112 7113 7114 7115 7116 7117 19622 19623 19624 19625 19626 19627 523 524 525 526 527 528 15746 15747 15748 15749 15750 15751 15722 15723 15724 15725 15726 15727 19790 19791 19792 19793 19794 19795 48 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 19628 19629 19630 19631 19632 19633 535 536 537 538 539 540 15740 15741 15742 15743 15744 15745 15734 15735 15736 15737 15738 15739 19796 19797 19798 19799 19800 19801 48 7256 7257 7258 7259 7260 7261 7292 7293 7294 7295 7296 7297 7232 7233 7234 7235 7236 7237 19640 19641 19642 19643 19644 19645 559 560 561 562 563 564 15776 15777 15778 15779 15780 15781 15752 15753 15754 15755 15756 15757 19802 19803 19804 19805 19806 19807 48 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 19646 19647 19648 19649 19650 19651 571 572 573 574 575 576 15770 15771 15772 15773 15774 15775 15764 15765 15766 15767 15768 15769 19808 19809 19810 19811 19812 19813 48 7376 7377 7378 7379 7380 7381 7412 7413 7414 7415 7416 7417 7352 7353 7354 7355 7356 7357 19658 19659 19660 19661 19662 19663 595 596 597 598 599 600 15806 15807 15808 15809 15810 15811 15782 15783 15784 15785 15786 15787 19814 19815 19816 19817 19818 19819 48 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 19664 19665 19666 19667 19668 19669 607 608 609 610 611 612 15800 15801 15802 15803 15804 15805 15794 15795 15796 15797 15798 15799 19820 19821 19822 19823 19824 19825 48 2053 2054 2055 2056 2057 2058 2095 2096 2097 2098 2099 2100 2083 2084 2085 2086 2087 2088 19676 19677 19678 19679 19680 19681 631 632 633 634 635 636 19832 19833 19834 19835 19836 19837 19826 19827 19828 19829 19830 19831 19838 19839 19840 19841 19842 19843 30 19844 19845 19846 19847 19848 19849 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 19865 19866 19867 19862 19863 19864 19868 19869 19870 19871 19872 19873 30 19862 19863 19864 19865 19866 19867 19859 19860 19861 19874 19875 19876 19877 19878 19879 19880 19881 19882 19886 19887 19888 19883 19884 19885 19889 19890 19891 19892 19893 19894 30 19850 19851 19852 19895 19896 19897 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 19910 19911 19912 19859 19860 19861 19853 19854 19855 19856 19857 19858 36 19859 19860 19861 19910 19911 19912 19907 19908 19909 19913 19914 19915 19916 19917 19918 19919 19920 19921 19922 19923 19924 19925 19926 19927 19928 19929 19930 19880 19881 19882 19874 19875 19876 19877 19878 19879 30 19931 19932 19933 19934 19935 19936 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 19952 19953 19954 19949 19950 19951 19955 19956 19957 19958 19959 19960 30 19949 19950 19951 19952 19953 19954 19946 19947 19948 19961 19962 19963 19964 19965 19966 19967 19968 19969 19973 19974 19975 19970 19971 19972 19976 19977 19978 19979 19980 19981 30 19937 19938 19939 19982 19983 19984 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 19997 19998 19999 19946 19947 19948 19940 19941 19942 19943 19944 19945 30 19844 19845 19846 19868 19869 19870 19871 19872 19873 19862 19863 19864 20000 20001 20002 19949 19950 19951 19955 19956 19957 19958 19959 19960 19931 19932 19933 20003 20004 20005 30 20006 20007 20008 20009 20010 20011 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20027 20028 20029 20024 20025 20026 20030 20031 20032 20033 20034 20035 30 20012 20013 20014 20036 20037 20038 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20051 20052 20053 20021 20022 20023 20015 20016 20017 20018 20019 20020 30 20054 20055 20056 20057 20058 20059 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20075 20076 20077 20072 20073 20074 20078 20079 20080 20081 20082 20083 30 20060 20061 20062 20084 20085 20086 20087 20088 20089 20090 20091 20092 20093 20094 20095 20096 20097 20098 20099 20100 20101 20069 20070 20071 20063 20064 20065 20066 20067 20068 30 20102 20103 20104 20105 20106 20107 20108 20109 20110 20111 20112 20113 20114 20115 20116 20117 20118 20119 20123 20124 20125 20120 20121 20122 20126 20127 20128 20129 20130 20131 42 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 20132 20133 20134 20135 20136 20137 19883 19884 19885 19889 19890 19891 19892 19893 19894 19862 19863 19864 20138 20139 20140 20141 20142 20143 30 20108 20109 20110 20144 20145 20146 20147 20148 20149 20150 20151 20152 20153 20154 20155 20156 20157 20158 20159 20160 20161 20117 20118 20119 20111 20112 20113 20114 20115 20116 39 20117 20118 20119 20159 20160 20161 20156 20157 20158 20162 20163 20164 20165 20166 20167 20168 20169 20170 20171 20172 20173 20180 20181 20182 20183 20184 20185 20174 20175 20176 20177 20178 20179 20186 20187 20188 20189 20190 20191 42 20192 20193 20194 20195 20196 20197 20198 20199 20200 20201 20202 20203 5966 5967 5968 5969 5970 5971 20138 20139 20140 20141 20142 20143 19862 19863 19864 19868 19869 19870 19871 19872 19873 19844 19845 19846 20204 20205 20206 20207 20208 20209 30 20210 20211 20212 20213 20214 20215 20216 20217 20218 20219 20220 20221 20222 20223 20224 20225 20226 20227 20231 20232 20233 20228 20229 20230 20234 20235 20236 20237 20238 20239 30 19862 19863 19864 19889 19890 19891 19892 19893 19894 19883 19884 19885 20240 20241 20242 19970 19971 19972 19976 19977 19978 19979 19980 19981 19949 19950 19951 20000 20001 20002 30 19931 19932 19933 19955 19956 19957 19958 19959 19960 19949 19950 19951 20243 20244 20245 20024 20025 20026 20030 20031 20032 20033 20034 20035 20006 20007 20008 20246 20247 20248 30 20006 20007 20008 20030 20031 20032 20033 20034 20035 20024 20025 20026 20249 20250 20251 20072 20073 20074 20078 20079 20080 20081 20082 20083 20054 20055 20056 20252 20253 20254 30 20054 20055 20056 20078 20079 20080 20081 20082 20083 20072 20073 20074 20255 20256 20257 20120 20121 20122 20126 20127 20128 20129 20130 20131 20102 20103 20104 20258 20259 20260 27 20174 20175 20176 20177 20178 20179 20117 20118 20119 20069 20070 20071 20186 20187 20188 20189 20190 20191 20267 20268 20269 20261 20262 20263 20264 20265 20266 27 20168 20169 20170 20171 20172 20173 20156 20157 20158 20096 20097 20098 20162 20163 20164 20165 20166 20167 20276 20277 20278 20270 20271 20272 20273 20274 20275 42 20279 20280 20281 20282 20283 20284 20285 20286 20287 20288 20289 20290 5996 5997 5998 5999 6000 6001 20291 20292 20293 20294 20295 20296 19859 19860 19861 19853 19854 19855 19856 19857 19858 19850 19851 19852 20297 20298 20299 20300 20301 20302 42 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 20303 20304 20305 20306 20307 20308 19880 19881 19882 19874 19875 19876 19877 19878 19879 19859 19860 19861 20291 20292 20293 20294 20295 20296 30 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 20309 20310 20311 19946 19947 19948 19940 19941 19942 19943 19944 19945 19937 19938 19939 20312 20313 20314 30 19859 19860 19861 19874 19875 19876 19877 19878 19879 19880 19881 19882 20315 20316 20317 19967 19968 19969 19961 19962 19963 19964 19965 19966 19946 19947 19948 20309 20310 20311 30 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 20318 20319 20320 20021 20022 20023 20015 20016 20017 20018 20019 20020 20012 20013 20014 20321 20322 20323 30 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20324 20325 20326 20069 20070 20071 20063 20064 20065 20066 20067 20068 20060 20061 20062 20327 20328 20329 30 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20267 20268 20269 20117 20118 20119 20111 20112 20113 20114 20115 20116 20108 20109 20110 20330 20331 20332 30 20108 20109 20110 20111 20112 20113 20114 20115 20116 20117 20118 20119 20333 20334 20335 20228 20229 20230 20234 20235 20236 20237 20238 20239 20210 20211 20212 20336 20337 20338 42 20339 20340 20341 20342 20343 20344 20345 20346 20347 20348 20349 20350 6032 6033 6034 6035 6036 6037 20351 20352 20353 20354 20355 20356 19907 19908 19909 19901 19902 19903 19904 19905 19906 19898 19899 19900 20357 20358 20359 20360 20361 20362 45 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 20363 20364 20365 20366 20367 20368 19919 19920 19921 19922 19923 19924 19913 19914 19915 19916 19917 19918 19907 19908 19909 20351 20352 20353 20354 20355 20356 30 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 20369 20370 20371 19994 19995 19996 19988 19989 19990 19991 19992 19993 19985 19986 19987 20372 20373 20374 30 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 20375 20376 20377 20048 20049 20050 20042 20043 20044 20045 20046 20047 20039 20040 20041 20378 20379 20380 30 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20381 20382 20383 20096 20097 20098 20090 20091 20092 20093 20094 20095 20087 20088 20089 20384 20385 20386 30 20087 20088 20089 20090 20091 20092 20093 20094 20095 20096 20097 20098 20276 20277 20278 20156 20157 20158 20150 20151 20152 20153 20154 20155 20147 20148 20149 20387 20388 20389 30 20147 20148 20149 20150 20151 20152 20153 20154 20155 20156 20157 20158 20390 20391 20392 20225 20226 20227 20219 20220 20221 20222 20223 20224 20216 20217 20218 20393 20394 20395 39 20192 20193 20194 20195 20196 20197 20204 20205 20206 20207 20208 20209 19844 19845 19846 19847 19848 19849 19850 19851 19852 20297 20298 20299 20300 20301 20302 20279 20280 20281 20282 20283 20284 20396 20397 20398 20399 20400 20401 39 20279 20280 20281 20282 20283 20284 20297 20298 20299 20300 20301 20302 19850 19851 19852 19895 19896 19897 19898 19899 19900 20357 20358 20359 20360 20361 20362 20339 20340 20341 20342 20343 20344 20402 20403 20404 20405 20406 20407 24 19844 19845 19846 20003 20004 20005 19931 19932 19933 19934 19935 19936 19937 19938 19939 20312 20313 20314 19850 19851 19852 19847 19848 19849 24 19850 19851 19852 20312 20313 20314 19937 19938 19939 19982 19983 19984 19985 19986 19987 20372 20373 20374 19898 19899 19900 19895 19896 19897 24 19931 19932 19933 20246 20247 20248 20006 20007 20008 20009 20010 20011 20012 20013 20014 20321 20322 20323 19937 19938 19939 19934 19935 19936 24 19937 19938 19939 20321 20322 20323 20012 20013 20014 20036 20037 20038 20039 20040 20041 20378 20379 20380 19985 19986 19987 19982 19983 19984 24 20006 20007 20008 20252 20253 20254 20054 20055 20056 20057 20058 20059 20060 20061 20062 20327 20328 20329 20012 20013 20014 20009 20010 20011 24 20012 20013 20014 20327 20328 20329 20060 20061 20062 20084 20085 20086 20087 20088 20089 20384 20385 20386 20039 20040 20041 20036 20037 20038 24 20054 20055 20056 20258 20259 20260 20102 20103 20104 20105 20106 20107 20108 20109 20110 20330 20331 20332 20060 20061 20062 20057 20058 20059 24 20060 20061 20062 20330 20331 20332 20108 20109 20110 20144 20145 20146 20147 20148 20149 20387 20388 20389 20087 20088 20089 20084 20085 20086 24 20108 20109 20110 20336 20337 20338 20210 20211 20212 20213 20214 20215 20216 20217 20218 20393 20394 20395 20147 20148 20149 20144 20145 20146 39 5966 5967 5968 5969 5970 5971 20138 20139 20140 20141 20142 20143 19862 19863 19864 19865 19866 19867 19859 19860 19861 20291 20292 20293 20294 20295 20296 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 39 5996 5997 5998 5999 6000 6001 20291 20292 20293 20294 20295 20296 19859 19860 19861 19910 19911 19912 19907 19908 19909 20351 20352 20353 20354 20355 20356 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 24 19862 19863 19864 20000 20001 20002 19949 19950 19951 19952 19953 19954 19946 19947 19948 20309 20310 20311 19859 19860 19861 19865 19866 19867 24 19859 19860 19861 20309 20310 20311 19946 19947 19948 19997 19998 19999 19994 19995 19996 20369 20370 20371 19907 19908 19909 19910 19911 19912 24 19949 19950 19951 20243 20244 20245 20024 20025 20026 20027 20028 20029 20021 20022 20023 20318 20319 20320 19946 19947 19948 19952 19953 19954 24 19946 19947 19948 20318 20319 20320 20021 20022 20023 20051 20052 20053 20048 20049 20050 20375 20376 20377 19994 19995 19996 19997 19998 19999 24 20024 20025 20026 20249 20250 20251 20072 20073 20074 20075 20076 20077 20069 20070 20071 20324 20325 20326 20021 20022 20023 20027 20028 20029 24 20021 20022 20023 20324 20325 20326 20069 20070 20071 20099 20100 20101 20096 20097 20098 20381 20382 20383 20048 20049 20050 20051 20052 20053 24 20072 20073 20074 20255 20256 20257 20120 20121 20122 20123 20124 20125 20117 20118 20119 20267 20268 20269 20069 20070 20071 20075 20076 20077 24 20069 20070 20071 20267 20268 20269 20117 20118 20119 20159 20160 20161 20156 20157 20158 20276 20277 20278 20096 20097 20098 20099 20100 20101 24 20117 20118 20119 20333 20334 20335 20228 20229 20230 20231 20232 20233 20225 20226 20227 20390 20391 20392 20156 20157 20158 20159 20160 20161 39 5978 5979 5980 5981 5982 5983 20132 20133 20134 20135 20136 20137 19883 19884 19885 19886 19887 19888 19880 19881 19882 20303 20304 20305 20306 20307 20308 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 45 6008 6009 6010 6011 6012 6013 20303 20304 20305 20306 20307 20308 19880 19881 19882 19925 19926 19927 19928 19929 19930 19919 19920 19921 19922 19923 19924 20363 20364 20365 20366 20367 20368 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 24 19883 19884 19885 20240 20241 20242 19970 19971 19972 19973 19974 19975 19967 19968 19969 20315 20316 20317 19880 19881 19882 19886 19887 19888 48 10688 10689 10690 10691 10692 10693 10682 10683 10684 10685 10686 10687 10604 10605 10606 10607 10608 10609 10622 10623 10624 10625 10626 10627 667 668 669 670 671 672 20408 20409 20410 20411 20412 20413 679 680 681 682 683 684 20414 20415 20416 20417 20418 20419 48 10718 10719 10720 10721 10722 10723 10712 10713 10714 10715 10716 10717 10688 10689 10690 10691 10692 10693 20414 20415 20416 20417 20418 20419 679 680 681 682 683 684 20420 20421 20422 20423 20424 20425 691 692 693 694 695 696 20426 20427 20428 20429 20430 20431 48 10754 10755 10756 10757 10758 10759 10748 10749 10750 10751 10752 10753 10718 10719 10720 10721 10722 10723 20426 20427 20428 20429 20430 20431 691 692 693 694 695 696 20432 20433 20434 20435 20436 20437 703 704 705 706 707 708 20438 20439 20440 20441 20442 20443 48 20444 20445 20446 20447 20448 20449 20450 20451 20452 20453 20454 20455 19352 19353 19354 19355 19356 19357 19358 19359 19360 19361 19362 19363 10814 10815 10816 10817 10818 10819 20456 20457 20458 20459 20460 20461 703 704 705 706 707 708 20462 20463 20464 20465 20466 20467 36 10754 10755 10756 10757 10758 10759 703 704 705 706 707 708 10814 10815 10816 10817 10818 10819 20438 20439 20440 20441 20442 20443 20456 20457 20458 20459 20460 20461 10808 10809 10810 10811 10812 10813 48 9302 9303 9304 9305 9306 9307 9296 9297 9298 9299 9300 9301 9218 9219 9220 9221 9222 9223 9236 9237 9238 9239 9240 9241 721 722 723 724 725 726 20468 20469 20470 20471 20472 20473 727 728 729 730 731 732 20474 20475 20476 20477 20478 20479 48 9332 9333 9334 9335 9336 9337 9326 9327 9328 9329 9330 9331 9302 9303 9304 9305 9306 9307 20474 20475 20476 20477 20478 20479 727 728 729 730 731 732 20480 20481 20482 20483 20484 20485 733 734 735 736 737 738 20486 20487 20488 20489 20490 20491 48 9368 9369 9370 9371 9372 9373 9362 9363 9364 9365 9366 9367 9332 9333 9334 9335 9336 9337 20486 20487 20488 20489 20490 20491 733 734 735 736 737 738 20492 20493 20494 20495 20496 20497 739 740 741 742 743 744 20498 20499 20500 20501 20502 20503 48 20504 20505 20506 20507 20508 20509 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 20521 20522 20523 20524 20525 20526 20527 9428 9429 9430 9431 9432 9433 20528 20529 20530 20531 20532 20533 739 740 741 742 743 744 20534 20535 20536 20537 20538 20539 36 9368 9369 9370 9371 9372 9373 739 740 741 742 743 744 9428 9429 9430 9431 9432 9433 20498 20499 20500 20501 20502 20503 20528 20529 20530 20531 20532 20533 9422 9423 9424 9425 9426 9427 48 7634 7635 7636 7637 7638 7639 7628 7629 7630 7631 7632 7633 7550 7551 7552 7553 7554 7555 7568 7569 7570 7571 7572 7573 757 758 759 760 761 762 20540 20541 20542 20543 20544 20545 763 764 765 766 767 768 20546 20547 20548 20549 20550 20551 48 7664 7665 7666 7667 7668 7669 7658 7659 7660 7661 7662 7663 7634 7635 7636 7637 7638 7639 20546 20547 20548 20549 20550 20551 763 764 765 766 767 768 20552 20553 20554 20555 20556 20557 769 770 771 772 773 774 20558 20559 20560 20561 20562 20563 48 7700 7701 7702 7703 7704 7705 7694 7695 7696 7697 7698 7699 7664 7665 7666 7667 7668 7669 20558 20559 20560 20561 20562 20563 769 770 771 772 773 774 20564 20565 20566 20567 20568 20569 775 776 777 778 779 780 20570 20571 20572 20573 20574 20575 48 20576 20577 20578 20579 20580 20581 20582 20583 20584 20585 20586 20587 19370 19371 19372 19373 19374 19375 19376 19377 19378 19379 19380 19381 7760 7761 7762 7763 7764 7765 20588 20589 20590 20591 20592 20593 775 776 777 778 779 780 20594 20595 20596 20597 20598 20599 36 7700 7701 7702 7703 7704 7705 775 776 777 778 779 780 7760 7761 7762 7763 7764 7765 20570 20571 20572 20573 20574 20575 20588 20589 20590 20591 20592 20593 7754 7755 7756 7757 7758 7759 48 5966 5967 5968 5969 5970 5971 5960 5961 5962 5963 5964 5965 5882 5883 5884 5885 5886 5887 5900 5901 5902 5903 5904 5905 793 794 795 796 797 798 20600 20601 20602 20603 20604 20605 799 800 801 802 803 804 20606 20607 20608 20609 20610 20611 48 5996 5997 5998 5999 6000 6001 5990 5991 5992 5993 5994 5995 5966 5967 5968 5969 5970 5971 20606 20607 20608 20609 20610 20611 799 800 801 802 803 804 20612 20613 20614 20615 20616 20617 805 806 807 808 809 810 20618 20619 20620 20621 20622 20623 48 6032 6033 6034 6035 6036 6037 6026 6027 6028 6029 6030 6031 5996 5997 5998 5999 6000 6001 20618 20619 20620 20621 20622 20623 805 806 807 808 809 810 20624 20625 20626 20627 20628 20629 811 812 813 814 815 816 20630 20631 20632 20633 20634 20635 48 20339 20340 20341 20342 20343 20344 20636 20637 20638 20639 20640 20641 19382 19383 19384 19385 19386 19387 19388 19389 19390 19391 19392 19393 6092 6093 6094 6095 6096 6097 20642 20643 20644 20645 20646 20647 811 812 813 814 815 816 20648 20649 20650 20651 20652 20653 36 6032 6033 6034 6035 6036 6037 811 812 813 814 815 816 6092 6093 6094 6095 6096 6097 20630 20631 20632 20633 20634 20635 20642 20643 20644 20645 20646 20647 6086 6087 6088 6089 6090 6091 36 20654 20655 20656 20657 20658 20659 823 824 825 826 827 828 20666 20667 20668 20669 20670 20671 20672 20673 20674 20675 20676 20677 20678 20679 20680 20681 20682 20683 20660 20661 20662 20663 20664 20665 48 20339 20340 20341 20342 20343 20344 20636 20637 20638 20639 20640 20641 19382 19383 19384 19385 19386 19387 20684 20685 20686 20687 20688 20689 20666 20667 20668 20669 20670 20671 20678 20679 20680 20681 20682 20683 823 824 825 826 827 828 20690 20691 20692 20693 20694 20695 48 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 20696 20697 20698 20699 20700 20701 20708 20709 20710 20711 20712 20713 835 836 837 838 839 840 20714 20715 20716 20717 20718 20719 823 824 825 826 827 828 20672 20673 20674 20675 20676 20677 48 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 20720 20721 20722 20723 20724 20725 20732 20733 20734 20735 20736 20737 847 848 849 850 851 852 20738 20739 20740 20741 20742 20743 835 836 837 838 839 840 20708 20709 20710 20711 20712 20713 48 20720 20721 20722 20723 20724 20725 20750 20751 20752 20753 20754 20755 20744 20745 20746 20747 20748 20749 20756 20757 20758 20759 20760 20761 859 860 861 862 863 864 20762 20763 20764 20765 20766 20767 847 848 849 850 851 852 20732 20733 20734 20735 20736 20737 36 20768 20769 20770 20771 20772 20773 817 818 819 820 821 822 20780 20781 20782 20783 20784 20785 20786 20787 20788 20789 20790 20791 20792 20793 20794 20795 20796 20797 20774 20775 20776 20777 20778 20779 48 20576 20577 20578 20579 20580 20581 20582 20583 20584 20585 20586 20587 19370 19371 19372 19373 19374 19375 20798 20799 20800 20801 20802 20803 20780 20781 20782 20783 20784 20785 20792 20793 20794 20795 20796 20797 817 818 819 820 821 822 20804 20805 20806 20807 20808 20809 48 20768 20769 20770 20771 20772 20773 20816 20817 20818 20819 20820 20821 20810 20811 20812 20813 20814 20815 20822 20823 20824 20825 20826 20827 829 830 831 832 833 834 20828 20829 20830 20831 20832 20833 817 818 819 820 821 822 20786 20787 20788 20789 20790 20791 48 20810 20811 20812 20813 20814 20815 20840 20841 20842 20843 20844 20845 20834 20835 20836 20837 20838 20839 20846 20847 20848 20849 20850 20851 841 842 843 844 845 846 20852 20853 20854 20855 20856 20857 829 830 831 832 833 834 20822 20823 20824 20825 20826 20827 48 20834 20835 20836 20837 20838 20839 20864 20865 20866 20867 20868 20869 20858 20859 20860 20861 20862 20863 20870 20871 20872 20873 20874 20875 853 854 855 856 857 858 20876 20877 20878 20879 20880 20881 841 842 843 844 845 846 20846 20847 20848 20849 20850 20851 36 20882 20883 20884 20885 20886 20887 889 890 891 892 893 894 20894 20895 20896 20897 20898 20899 20900 20901 20902 20903 20904 20905 20906 20907 20908 20909 20910 20911 20888 20889 20890 20891 20892 20893 48 20504 20505 20506 20507 20508 20509 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 20521 20912 20913 20914 20915 20916 20917 20894 20895 20896 20897 20898 20899 20906 20907 20908 20909 20910 20911 889 890 891 892 893 894 20918 20919 20920 20921 20922 20923 48 20882 20883 20884 20885 20886 20887 20930 20931 20932 20933 20934 20935 20924 20925 20926 20927 20928 20929 20936 20937 20938 20939 20940 20941 895 896 897 898 899 900 20942 20943 20944 20945 20946 20947 889 890 891 892 893 894 20900 20901 20902 20903 20904 20905 48 20924 20925 20926 20927 20928 20929 20954 20955 20956 20957 20958 20959 20948 20949 20950 20951 20952 20953 20960 20961 20962 20963 20964 20965 901 902 903 904 905 906 20966 20967 20968 20969 20970 20971 895 896 897 898 899 900 20936 20937 20938 20939 20940 20941 48 20948 20949 20950 20951 20952 20953 20978 20979 20980 20981 20982 20983 20972 20973 20974 20975 20976 20977 20984 20985 20986 20987 20988 20989 907 908 909 910 911 912 20990 20991 20992 20993 20994 20995 901 902 903 904 905 906 20960 20961 20962 20963 20964 20965 36 20996 20997 20998 20999 21000 21001 925 926 927 928 929 930 21008 21009 21010 21011 21012 21013 21014 21015 21016 21017 21018 21019 21020 21021 21022 21023 21024 21025 21002 21003 21004 21005 21006 21007 48 20444 20445 20446 20447 20448 20449 20450 20451 20452 20453 20454 20455 19352 19353 19354 19355 19356 19357 21026 21027 21028 21029 21030 21031 21008 21009 21010 21011 21012 21013 21020 21021 21022 21023 21024 21025 925 926 927 928 929 930 21032 21033 21034 21035 21036 21037 48 20996 20997 20998 20999 21000 21001 21044 21045 21046 21047 21048 21049 21038 21039 21040 21041 21042 21043 21050 21051 21052 21053 21054 21055 931 932 933 934 935 936 21056 21057 21058 21059 21060 21061 925 926 927 928 929 930 21014 21015 21016 21017 21018 21019 48 21038 21039 21040 21041 21042 21043 21068 21069 21070 21071 21072 21073 21062 21063 21064 21065 21066 21067 21074 21075 21076 21077 21078 21079 937 938 939 940 941 942 21080 21081 21082 21083 21084 21085 931 932 933 934 935 936 21050 21051 21052 21053 21054 21055 48 21062 21063 21064 21065 21066 21067 21092 21093 21094 21095 21096 21097 21086 21087 21088 21089 21090 21091 21098 21099 21100 21101 21102 21103 943 944 945 946 947 948 21104 21105 21106 21107 21108 21109 937 938 939 940 941 942 21074 21075 21076 21077 21078 21079 24 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 21124 21128 21129 21130 21125 21126 21127 21131 21132 21133 45 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21125 21126 21127 21146 21147 21148 21149 21150 21151 21152 21153 21154 21155 21156 21157 21164 21165 21166 21167 21168 21169 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 39 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21110 21111 21112 21131 21132 21133 21125 21126 21127 21140 21141 21142 21143 21144 21145 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 24 21194 21195 21196 21197 21198 21199 21200 21201 21202 21203 21204 21205 21206 21207 21208 21212 21213 21214 21209 21210 21211 21215 21216 21217 24 21221 21222 21223 21218 21219 21220 21194 21195 21196 21215 21216 21217 21209 21210 21211 21224 21225 21226 21227 21228 21229 21230 21231 21232 24 21233 21234 21235 21236 21237 21238 21239 21240 21241 21242 21243 21244 21194 21195 21196 21218 21219 21220 21221 21222 21223 21245 21246 21247 24 21248 21249 21250 21251 21252 21253 21221 21222 21223 21230 21231 21232 21227 21228 21229 21257 21258 21259 21254 21255 21256 21260 21261 21262 24 21263 21264 21265 21266 21267 21268 21233 21234 21235 21245 21246 21247 21221 21222 21223 21251 21252 21253 21248 21249 21250 21269 21270 21271 24 21272 21273 21274 21275 21276 21277 21248 21249 21250 21260 21261 21262 21254 21255 21256 21281 21282 21283 21278 21279 21280 21284 21285 21286 24 21287 21288 21289 21290 21291 21292 21263 21264 21265 21269 21270 21271 21248 21249 21250 21275 21276 21277 21272 21273 21274 21293 21294 21295 24 21296 21297 21298 21299 21300 21301 21272 21273 21274 21284 21285 21286 21278 21279 21280 21305 21306 21307 21302 21303 21304 21308 21309 21310 24 21311 21312 21313 21314 21315 21316 21287 21288 21289 21293 21294 21295 21272 21273 21274 21299 21300 21301 21296 21297 21298 21317 21318 21319 39 20696 20697 20698 20699 20700 20701 21320 21321 21322 21323 21324 21325 21296 21297 21298 21308 21309 21310 21302 21303 21304 21326 21327 21328 21329 21330 21331 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 39 20720 20721 20722 20723 20724 20725 21332 21333 21334 21335 21336 21337 21311 21312 21313 21317 21318 21319 21296 21297 21298 21320 21321 21322 21323 21324 21325 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 30 20147 20148 20149 21338 21339 21340 21341 21342 21343 21209 21210 21211 21212 21213 21214 21206 21207 21208 21344 21345 21346 21347 21348 21349 20216 20217 20218 20393 20394 20395 30 20087 20088 20089 21350 21351 21352 21353 21354 21355 21227 21228 21229 21224 21225 21226 21209 21210 21211 21338 21339 21340 21341 21342 21343 20147 20148 20149 20387 20388 20389 30 20039 20040 20041 21356 21357 21358 21359 21360 21361 21254 21255 21256 21257 21258 21259 21227 21228 21229 21350 21351 21352 21353 21354 21355 20087 20088 20089 20384 20385 20386 30 19985 19986 19987 21362 21363 21364 21365 21366 21367 21278 21279 21280 21281 21282 21283 21254 21255 21256 21356 21357 21358 21359 21360 21361 20039 20040 20041 20378 20379 20380 30 19898 19899 19900 21368 21369 21370 21371 21372 21373 21302 21303 21304 21305 21306 21307 21278 21279 21280 21362 21363 21364 21365 21366 21367 19985 19986 19987 20372 20373 20374 45 20654 20655 20656 20657 20658 20659 21374 21375 21376 21377 21378 21379 21158 21159 21160 21161 21162 21163 21164 21165 21166 21167 21168 21169 21152 21153 21154 21155 21156 21157 21380 21381 21382 21383 21384 21385 21302 21303 21304 21326 21327 21328 21329 21330 21331 42 20339 20340 20341 20342 20343 20344 21386 21387 21388 21389 21390 21391 20654 20655 20656 20657 20658 20659 21326 21327 21328 21329 21330 21331 21302 21303 21304 21368 21369 21370 21371 21372 21373 19898 19899 19900 20357 20358 20359 20360 20361 20362 30 20108 20109 20110 21392 21393 21394 21395 21396 21397 21194 21195 21196 21197 21198 21199 21200 21201 21202 21398 21399 21400 21401 21402 21403 20210 20211 20212 20336 20337 20338 30 20060 20061 20062 21404 21405 21406 21407 21408 21409 21221 21222 21223 21218 21219 21220 21194 21195 21196 21392 21393 21394 21395 21396 21397 20108 20109 20110 20330 20331 20332 30 20012 20013 20014 21410 21411 21412 21413 21414 21415 21248 21249 21250 21251 21252 21253 21221 21222 21223 21404 21405 21406 21407 21408 21409 20060 20061 20062 20327 20328 20329 30 19937 19938 19939 21416 21417 21418 21419 21420 21421 21272 21273 21274 21275 21276 21277 21248 21249 21250 21410 21411 21412 21413 21414 21415 20012 20013 20014 20321 20322 20323 30 21296 21297 21298 21422 21423 21424 21425 21426 21427 21125 21126 21127 21128 21129 21130 21122 21123 21124 21428 21429 21430 21431 21432 21433 21272 21273 21274 21299 21300 21301 30 19850 19851 19852 21434 21435 21436 21437 21438 21439 21296 21297 21298 21299 21300 21301 21272 21273 21274 21416 21417 21418 21419 21420 21421 19937 19938 19939 20312 20313 20314 42 20696 20697 20698 20699 20700 20701 21440 21441 21442 21443 21444 21445 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21125 21126 21127 21422 21423 21424 21425 21426 21427 21296 21297 21298 21320 21321 21322 21323 21324 21325 42 20279 20280 20281 20282 20283 20284 21446 21447 21448 21449 21450 21451 20696 20697 20698 20699 20700 20701 21320 21321 21322 21323 21324 21325 21296 21297 21298 21434 21435 21436 21437 21438 21439 19850 19851 19852 20297 20298 20299 20300 20301 20302 27 21458 21459 21460 21461 21462 21463 21209 21210 21211 21227 21228 21229 21464 21465 21466 21467 21468 21469 21224 21225 21226 21452 21453 21454 21455 21456 21457 27 21476 21477 21478 21479 21480 21481 21194 21195 21196 21221 21222 21223 21482 21483 21484 21485 21486 21487 21218 21219 21220 21470 21471 21472 21473 21474 21475 30 20054 20055 20056 21488 21489 21490 21491 21492 21493 21233 21234 21235 21236 21237 21238 21239 21240 21241 21494 21495 21496 21497 21498 21499 20102 20103 20104 20258 20259 20260 30 20006 20007 20008 21500 21501 21502 21503 21504 21505 21263 21264 21265 21266 21267 21268 21233 21234 21235 21488 21489 21490 21491 21492 21493 20054 20055 20056 20252 20253 20254 30 19931 19932 19933 21506 21507 21508 21509 21510 21511 21287 21288 21289 21290 21291 21292 21263 21264 21265 21500 21501 21502 21503 21504 21505 20006 20007 20008 20246 20247 20248 30 21311 21312 21313 21512 21513 21514 21515 21516 21517 21110 21111 21112 21113 21114 21115 21116 21117 21118 21518 21519 21520 21521 21522 21523 21287 21288 21289 21314 21315 21316 30 20210 20211 20212 20213 20214 20215 20216 20217 20218 21344 21345 21346 21347 21348 21349 21206 21207 21208 21203 21204 21205 21200 21201 21202 21398 21399 21400 21401 21402 21403 42 20192 20193 20194 20195 20196 20197 21524 21525 21526 21527 21528 21529 20720 20721 20722 20723 20724 20725 21332 21333 21334 21335 21336 21337 21311 21312 21313 21530 21531 21532 21533 21534 21535 19844 19845 19846 20204 20205 20206 20207 20208 20209 39 21194 21195 21196 21215 21216 21217 21209 21210 21211 21464 21465 21466 21467 21468 21469 21458 21459 21460 21461 21462 21463 21536 21537 21538 21539 21540 21541 21476 21477 21478 21479 21480 21481 21482 21483 21484 21485 21486 21487 30 20108 20109 20110 20144 20145 20146 20147 20148 20149 21338 21339 21340 21341 21342 21343 21209 21210 21211 21215 21216 21217 21194 21195 21196 21392 21393 21394 21395 21396 21397 42 20720 20721 20722 20723 20724 20725 21542 21543 21544 21545 21546 21547 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21110 21111 21112 21512 21513 21514 21515 21516 21517 21311 21312 21313 21332 21333 21334 21335 21336 21337 30 20102 20103 20104 20105 20106 20107 20108 20109 20110 21392 21393 21394 21395 21396 21397 21194 21195 21196 21242 21243 21244 21239 21240 21241 21494 21495 21496 21497 21498 21499 30 20060 20061 20062 20084 20085 20086 20087 20088 20089 21350 21351 21352 21353 21354 21355 21227 21228 21229 21230 21231 21232 21221 21222 21223 21404 21405 21406 21407 21408 21409 30 20054 20055 20056 20057 20058 20059 20060 20061 20062 21404 21405 21406 21407 21408 21409 21221 21222 21223 21245 21246 21247 21233 21234 21235 21488 21489 21490 21491 21492 21493 30 20012 20013 20014 20036 20037 20038 20039 20040 20041 21356 21357 21358 21359 21360 21361 21254 21255 21256 21260 21261 21262 21248 21249 21250 21410 21411 21412 21413 21414 21415 30 20006 20007 20008 20009 20010 20011 20012 20013 20014 21410 21411 21412 21413 21414 21415 21248 21249 21250 21269 21270 21271 21263 21264 21265 21500 21501 21502 21503 21504 21505 30 19844 19845 19846 21530 21531 21532 21533 21534 21535 21311 21312 21313 21314 21315 21316 21287 21288 21289 21506 21507 21508 21509 21510 21511 19931 19932 19933 20003 20004 20005 30 19937 19938 19939 19982 19983 19984 19985 19986 19987 21362 21363 21364 21365 21366 21367 21278 21279 21280 21284 21285 21286 21272 21273 21274 21416 21417 21418 21419 21420 21421 30 21287 21288 21289 21293 21294 21295 21272 21273 21274 21428 21429 21430 21431 21432 21433 21122 21123 21124 21119 21120 21121 21116 21117 21118 21518 21519 21520 21521 21522 21523 30 19931 19932 19933 19934 19935 19936 19937 19938 19939 21416 21417 21418 21419 21420 21421 21272 21273 21274 21293 21294 21295 21287 21288 21289 21506 21507 21508 21509 21510 21511 36 21296 21297 21298 21308 21309 21310 21302 21303 21304 21380 21381 21382 21383 21384 21385 21152 21153 21154 21155 21156 21157 21146 21147 21148 21149 21150 21151 21125 21126 21127 21422 21423 21424 21425 21426 21427 30 19850 19851 19852 19895 19896 19897 19898 19899 19900 21368 21369 21370 21371 21372 21373 21302 21303 21304 21308 21309 21310 21296 21297 21298 21434 21435 21436 21437 21438 21439 30 21311 21312 21313 21317 21318 21319 21296 21297 21298 21422 21423 21424 21425 21426 21427 21125 21126 21127 21131 21132 21133 21110 21111 21112 21512 21513 21514 21515 21516 21517 30 19844 19845 19846 19847 19848 19849 19850 19851 19852 21434 21435 21436 21437 21438 21439 21296 21297 21298 21317 21318 21319 21311 21312 21313 21530 21531 21532 21533 21534 21535 48 2053 2054 2055 2056 2057 2058 21548 21549 21550 21551 21552 21553 21554 21555 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 1009 1010 1011 1012 1013 1014 21566 21567 21568 21569 21570 21571 19826 19827 19828 19829 19830 19831 19838 19839 19840 19841 19842 19843 48 7388 7389 7390 7391 7392 7393 21572 21573 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 21584 21585 21586 21587 21588 21589 1015 1016 1017 1018 1019 1020 21590 21591 21592 21593 21594 21595 15794 15795 15796 15797 15798 15799 19820 19821 19822 19823 19824 19825 48 7376 7377 7378 7379 7380 7381 21596 21597 21598 21599 21600 21601 21602 21603 21604 21605 21606 21607 21608 21609 21610 21611 21612 21613 1027 1028 1029 1030 1031 1032 21614 21615 21616 21617 21618 21619 15782 15783 15784 15785 15786 15787 19814 19815 19816 19817 19818 19819 48 7268 7269 7270 7271 7272 7273 21620 21621 21622 21623 21624 21625 21626 21627 21628 21629 21630 21631 21632 21633 21634 21635 21636 21637 1051 1052 1053 1054 1055 1056 21638 21639 21640 21641 21642 21643 15764 15765 15766 15767 15768 15769 19808 19809 19810 19811 19812 19813 48 7256 7257 7258 7259 7260 7261 21644 21645 21646 21647 21648 21649 21650 21651 21652 21653 21654 21655 21656 21657 21658 21659 21660 21661 1063 1064 1065 1066 1067 1068 21662 21663 21664 21665 21666 21667 15752 15753 15754 15755 15756 15757 19802 19803 19804 19805 19806 19807 48 7148 7149 7150 7151 7152 7153 21668 21669 21670 21671 21672 21673 21674 21675 21676 21677 21678 21679 21680 21681 21682 21683 21684 21685 1087 1088 1089 1090 1091 1092 21686 21687 21688 21689 21690 21691 15734 15735 15736 15737 15738 15739 19796 19797 19798 19799 19800 19801 48 7136 7137 7138 7139 7140 7141 21692 21693 21694 21695 21696 21697 21698 21699 21700 21701 21702 21703 21704 21705 21706 21707 21708 21709 1099 1100 1101 1102 1103 1104 21710 21711 21712 21713 21714 21715 15722 15723 15724 15725 15726 15727 19790 19791 19792 19793 19794 19795 48 7028 7029 7030 7031 7032 7033 21716 21717 21718 21719 21720 21721 21722 21723 21724 21725 21726 21727 21728 21729 21730 21731 21732 21733 1123 1124 1125 1126 1127 1128 21734 21735 21736 21737 21738 21739 15704 15705 15706 15707 15708 15709 19784 19785 19786 19787 19788 19789 48 7016 7017 7018 7019 7020 7021 21740 21741 21742 21743 21744 21745 21746 21747 21748 21749 21750 21751 21752 21753 21754 21755 21756 21757 1135 1136 1137 1138 1139 1140 21758 21759 21760 21761 21762 21763 15692 15693 15694 15695 15696 15697 19778 19779 19780 19781 19782 19783 48 6908 6909 6910 6911 6912 6913 21764 21765 21766 21767 21768 21769 21770 21771 21772 21773 21774 21775 21776 21777 21778 21779 21780 21781 1159 1160 1161 1162 1163 1164 21782 21783 21784 21785 21786 21787 15674 15675 15676 15677 15678 15679 19772 19773 19774 19775 19776 19777 48 6896 6897 6898 6899 6900 6901 21788 21789 21790 21791 21792 21793 21794 21795 21796 21797 21798 21799 21800 21801 21802 21803 21804 21805 1171 1172 1173 1174 1175 1176 21806 21807 21808 21809 21810 21811 15662 15663 15664 15665 15666 15667 19766 19767 19768 19769 19770 19771 48 6788 6789 6790 6791 6792 6793 21812 21813 21814 21815 21816 21817 21818 21819 21820 21821 21822 21823 21824 21825 21826 21827 21828 21829 1195 1196 1197 1198 1199 1200 21830 21831 21832 21833 21834 21835 15644 15645 15646 15647 15648 15649 19760 19761 19762 19763 19764 19765 48 6776 6777 6778 6779 6780 6781 21836 21837 21838 21839 21840 21841 21842 21843 21844 21845 21846 21847 21848 21849 21850 21851 21852 21853 1207 1208 1209 1210 1211 1212 21854 21855 21856 21857 21858 21859 15632 15633 15634 15635 15636 15637 19754 19755 19756 19757 19758 19759 48 6668 6669 6670 6671 6672 6673 21860 21861 21862 21863 21864 21865 21866 21867 21868 21869 21870 21871 21872 21873 21874 21875 21876 21877 1231 1232 1233 1234 1235 1236 21878 21879 21880 21881 21882 21883 15614 15615 15616 15617 15618 15619 19748 19749 19750 19751 19752 19753 48 6656 6657 6658 6659 6660 6661 21884 21885 21886 21887 21888 21889 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 1243 1244 1245 1246 1247 1248 21902 21903 21904 21905 21906 21907 15602 15603 15604 15605 15606 15607 19742 19743 19744 19745 19746 19747 48 6548 6549 6550 6551 6552 6553 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 1267 1268 1269 1270 1271 1272 21926 21927 21928 21929 21930 21931 15584 15585 15586 15587 15588 15589 19736 19737 19738 19739 19740 19741 48 6536 6537 6538 6539 6540 6541 21932 21933 21934 21935 21936 21937 21938 21939 21940 21941 21942 21943 21944 21945 21946 21947 21948 21949 1279 1280 1281 1282 1283 1284 21950 21951 21952 21953 21954 21955 15572 15573 15574 15575 15576 15577 19730 19731 19732 19733 19734 19735 48 6428 6429 6430 6431 6432 6433 21956 21957 21958 21959 21960 21961 21962 21963 21964 21965 21966 21967 21968 21969 21970 21971 21972 21973 1303 1304 1305 1306 1307 1308 21974 21975 21976 21977 21978 21979 15554 15555 15556 15557 15558 15559 19724 19725 19726 19727 19728 19729 48 6416 6417 6418 6419 6420 6421 21980 21981 21982 21983 21984 21985 21986 21987 21988 21989 21990 21991 21992 21993 21994 21995 21996 21997 1315 1316 1317 1318 1319 1320 21998 21999 22000 22001 22002 22003 15542 15543 15544 15545 15546 15547 19718 19719 19720 19721 19722 19723 48 6308 6309 6310 6311 6312 6313 22004 22005 22006 22007 22008 22009 22010 22011 22012 22013 22014 22015 22016 22017 22018 22019 22020 22021 1339 1340 1341 1342 1343 1344 22022 22023 22024 22025 22026 22027 15524 15525 15526 15527 15528 15529 19712 19713 19714 19715 19716 19717 48 6296 6297 6298 6299 6300 6301 22028 22029 22030 22031 22032 22033 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 1351 1352 1353 1354 1355 1356 22046 22047 22048 22049 22050 22051 15512 15513 15514 15515 15516 15517 19706 19707 19708 19709 19710 19711 48 6188 6189 6190 6191 6192 6193 22052 22053 22054 22055 22056 22057 22058 22059 22060 22061 22062 22063 22064 22065 22066 22067 22068 22069 1375 1376 1377 1378 1379 1380 22070 22071 22072 22073 22074 22075 15494 15495 15496 15497 15498 15499 19700 19701 19702 19703 19704 19705 48 6176 6177 6178 6179 6180 6181 22076 22077 22078 22079 22080 22081 22082 22083 22084 22085 22086 22087 22088 22089 22090 22091 22092 22093 1387 1388 1389 1390 1391 1392 22094 22095 22096 22097 22098 22099 15482 15483 15484 15485 15486 15487 19694 19695 19696 19697 19698 19699 48 19382 19383 19384 19385 19386 19387 20684 20685 20686 20687 20688 20689 20666 20667 20668 20669 20670 20671 22100 22101 22102 22103 22104 22105 1411 1412 1413 1414 1415 1416 22106 22107 22108 22109 22110 22111 15464 15465 15466 15467 15468 15469 19688 19689 19690 19691 19692 19693 48 6056 6057 6058 6059 6060 6061 22112 22113 22114 22115 22116 22117 22118 22119 22120 22121 22122 22123 22124 22125 22126 22127 22128 22129 1495 1496 1497 1498 1499 1500 22130 22131 22132 22133 22134 22135 15422 15423 15424 15425 15426 15427 19682 19683 19684 19685 19686 19687 48 22136 22137 22138 22139 22140 22141 22142 22143 22144 22145 22146 22147 21554 21555 21556 21557 21558 21559 21560 21561 21562 21563 21564 21565 1009 1010 1011 1012 1013 1014 1003 1004 1005 1006 1007 1008 997 998 999 1000 1001 1002 22148 22149 22150 22151 22152 22153 48 21578 21579 21580 21581 21582 21583 22154 22155 22156 22157 22158 22159 22136 22137 22138 22139 22140 22141 22148 22149 22150 22151 22152 22153 997 998 999 1000 1001 1002 1021 1022 1023 1024 1025 1026 1015 1016 1017 1018 1019 1020 21584 21585 21586 21587 21588 21589 48 21602 21603 21604 21605 21606 21607 22160 22161 22162 22163 22164 22165 21578 21579 21580 21581 21582 21583 21584 21585 21586 21587 21588 21589 1015 1016 1017 1018 1019 1020 1033 1034 1035 1036 1037 1038 1027 1028 1029 1030 1031 1032 21608 21609 21610 21611 21612 21613 48 22166 22167 22168 22169 22170 22171 22172 22173 22174 22175 22176 22177 21602 21603 21604 21605 21606 21607 21608 21609 21610 21611 21612 21613 1027 1028 1029 1030 1031 1032 1045 1046 1047 1048 1049 1050 1039 1040 1041 1042 1043 1044 22178 22179 22180 22181 22182 22183 48 21626 21627 21628 21629 21630 21631 22184 22185 22186 22187 22188 22189 22166 22167 22168 22169 22170 22171 22178 22179 22180 22181 22182 22183 1039 1040 1041 1042 1043 1044 1057 1058 1059 1060 1061 1062 1051 1052 1053 1054 1055 1056 21632 21633 21634 21635 21636 21637 48 21650 21651 21652 21653 21654 21655 22190 22191 22192 22193 22194 22195 21626 21627 21628 21629 21630 21631 21632 21633 21634 21635 21636 21637 1051 1052 1053 1054 1055 1056 1069 1070 1071 1072 1073 1074 1063 1064 1065 1066 1067 1068 21656 21657 21658 21659 21660 21661 48 22196 22197 22198 22199 22200 22201 22202 22203 22204 22205 22206 22207 21650 21651 21652 21653 21654 21655 21656 21657 21658 21659 21660 21661 1063 1064 1065 1066 1067 1068 1081 1082 1083 1084 1085 1086 1075 1076 1077 1078 1079 1080 22208 22209 22210 22211 22212 22213 48 21674 21675 21676 21677 21678 21679 22214 22215 22216 22217 22218 22219 22196 22197 22198 22199 22200 22201 22208 22209 22210 22211 22212 22213 1075 1076 1077 1078 1079 1080 1093 1094 1095 1096 1097 1098 1087 1088 1089 1090 1091 1092 21680 21681 21682 21683 21684 21685 48 21698 21699 21700 21701 21702 21703 22220 22221 22222 22223 22224 22225 21674 21675 21676 21677 21678 21679 21680 21681 21682 21683 21684 21685 1087 1088 1089 1090 1091 1092 1105 1106 1107 1108 1109 1110 1099 1100 1101 1102 1103 1104 21704 21705 21706 21707 21708 21709 48 22226 22227 22228 22229 22230 22231 22232 22233 22234 22235 22236 22237 21698 21699 21700 21701 21702 21703 21704 21705 21706 21707 21708 21709 1099 1100 1101 1102 1103 1104 1117 1118 1119 1120 1121 1122 1111 1112 1113 1114 1115 1116 22238 22239 22240 22241 22242 22243 48 21722 21723 21724 21725 21726 21727 22244 22245 22246 22247 22248 22249 22226 22227 22228 22229 22230 22231 22238 22239 22240 22241 22242 22243 1111 1112 1113 1114 1115 1116 1129 1130 1131 1132 1133 1134 1123 1124 1125 1126 1127 1128 21728 21729 21730 21731 21732 21733 48 21746 21747 21748 21749 21750 21751 22250 22251 22252 22253 22254 22255 21722 21723 21724 21725 21726 21727 21728 21729 21730 21731 21732 21733 1123 1124 1125 1126 1127 1128 1141 1142 1143 1144 1145 1146 1135 1136 1137 1138 1139 1140 21752 21753 21754 21755 21756 21757 48 22256 22257 22258 22259 22260 22261 22262 22263 22264 22265 22266 22267 21746 21747 21748 21749 21750 21751 21752 21753 21754 21755 21756 21757 1135 1136 1137 1138 1139 1140 1153 1154 1155 1156 1157 1158 1147 1148 1149 1150 1151 1152 22268 22269 22270 22271 22272 22273 48 21770 21771 21772 21773 21774 21775 22274 22275 22276 22277 22278 22279 22256 22257 22258 22259 22260 22261 22268 22269 22270 22271 22272 22273 1147 1148 1149 1150 1151 1152 1165 1166 1167 1168 1169 1170 1159 1160 1161 1162 1163 1164 21776 21777 21778 21779 21780 21781 48 21794 21795 21796 21797 21798 21799 22280 22281 22282 22283 22284 22285 21770 21771 21772 21773 21774 21775 21776 21777 21778 21779 21780 21781 1159 1160 1161 1162 1163 1164 1177 1178 1179 1180 1181 1182 1171 1172 1173 1174 1175 1176 21800 21801 21802 21803 21804 21805 48 22286 22287 22288 22289 22290 22291 22292 22293 22294 22295 22296 22297 21794 21795 21796 21797 21798 21799 21800 21801 21802 21803 21804 21805 1171 1172 1173 1174 1175 1176 1189 1190 1191 1192 1193 1194 1183 1184 1185 1186 1187 1188 22298 22299 22300 22301 22302 22303 48 21818 21819 21820 21821 21822 21823 22304 22305 22306 22307 22308 22309 22286 22287 22288 22289 22290 22291 22298 22299 22300 22301 22302 22303 1183 1184 1185 1186 1187 1188 1201 1202 1203 1204 1205 1206 1195 1196 1197 1198 1199 1200 21824 21825 21826 21827 21828 21829 48 21842 21843 21844 21845 21846 21847 22310 22311 22312 22313 22314 22315 21818 21819 21820 21821 21822 21823 21824 21825 21826 21827 21828 21829 1195 1196 1197 1198 1199 1200 1213 1214 1215 1216 1217 1218 1207 1208 1209 1210 1211 1212 21848 21849 21850 21851 21852 21853 48 22316 22317 22318 22319 22320 22321 22322 22323 22324 22325 22326 22327 21842 21843 21844 21845 21846 21847 21848 21849 21850 21851 21852 21853 1207 1208 1209 1210 1211 1212 1225 1226 1227 1228 1229 1230 1219 1220 1221 1222 1223 1224 22328 22329 22330 22331 22332 22333 48 21866 21867 21868 21869 21870 21871 22334 22335 22336 22337 22338 22339 22316 22317 22318 22319 22320 22321 22328 22329 22330 22331 22332 22333 1219 1220 1221 1222 1223 1224 1237 1238 1239 1240 1241 1242 1231 1232 1233 1234 1235 1236 21872 21873 21874 21875 21876 21877 48 21890 21891 21892 21893 21894 21895 22340 22341 22342 22343 22344 22345 21866 21867 21868 21869 21870 21871 21872 21873 21874 21875 21876 21877 1231 1232 1233 1234 1235 1236 1249 1250 1251 1252 1253 1254 1243 1244 1245 1246 1247 1248 21896 21897 21898 21899 21900 21901 48 22346 22347 22348 22349 22350 22351 22352 22353 22354 22355 22356 22357 21890 21891 21892 21893 21894 21895 21896 21897 21898 21899 21900 21901 1243 1244 1245 1246 1247 1248 1261 1262 1263 1264 1265 1266 1255 1256 1257 1258 1259 1260 22358 22359 22360 22361 22362 22363 48 21914 21915 21916 21917 21918 21919 22364 22365 22366 22367 22368 22369 22346 22347 22348 22349 22350 22351 22358 22359 22360 22361 22362 22363 1255 1256 1257 1258 1259 1260 1273 1274 1275 1276 1277 1278 1267 1268 1269 1270 1271 1272 21920 21921 21922 21923 21924 21925 48 21938 21939 21940 21941 21942 21943 22370 22371 22372 22373 22374 22375 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 1267 1268 1269 1270 1271 1272 1285 1286 1287 1288 1289 1290 1279 1280 1281 1282 1283 1284 21944 21945 21946 21947 21948 21949 48 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 22386 22387 21938 21939 21940 21941 21942 21943 21944 21945 21946 21947 21948 21949 1279 1280 1281 1282 1283 1284 1297 1298 1299 1300 1301 1302 1291 1292 1293 1294 1295 1296 22388 22389 22390 22391 22392 22393 48 21962 21963 21964 21965 21966 21967 22394 22395 22396 22397 22398 22399 22376 22377 22378 22379 22380 22381 22388 22389 22390 22391 22392 22393 1291 1292 1293 1294 1295 1296 1309 1310 1311 1312 1313 1314 1303 1304 1305 1306 1307 1308 21968 21969 21970 21971 21972 21973 48 21986 21987 21988 21989 21990 21991 22400 22401 22402 22403 22404 22405 21962 21963 21964 21965 21966 21967 21968 21969 21970 21971 21972 21973 1303 1304 1305 1306 1307 1308 1321 1322 1323 1324 1325 1326 1315 1316 1317 1318 1319 1320 21992 21993 21994 21995 21996 21997 48 22406 22407 22408 22409 22410 22411 22412 22413 22414 22415 22416 22417 21986 21987 21988 21989 21990 21991 21992 21993 21994 21995 21996 21997 1315 1316 1317 1318 1319 1320 1333 1334 1335 1336 1337 1338 1327 1328 1329 1330 1331 1332 22418 22419 22420 22421 22422 22423 48 22010 22011 22012 22013 22014 22015 22424 22425 22426 22427 22428 22429 22406 22407 22408 22409 22410 22411 22418 22419 22420 22421 22422 22423 1327 1328 1329 1330 1331 1332 1345 1346 1347 1348 1349 1350 1339 1340 1341 1342 1343 1344 22016 22017 22018 22019 22020 22021 48 22034 22035 22036 22037 22038 22039 22430 22431 22432 22433 22434 22435 22010 22011 22012 22013 22014 22015 22016 22017 22018 22019 22020 22021 1339 1340 1341 1342 1343 1344 1357 1358 1359 1360 1361 1362 1351 1352 1353 1354 1355 1356 22040 22041 22042 22043 22044 22045 48 22436 22437 22438 22439 22440 22441 22442 22443 22444 22445 22446 22447 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 1351 1352 1353 1354 1355 1356 1369 1370 1371 1372 1373 1374 1363 1364 1365 1366 1367 1368 22448 22449 22450 22451 22452 22453 48 22058 22059 22060 22061 22062 22063 22454 22455 22456 22457 22458 22459 22436 22437 22438 22439 22440 22441 22448 22449 22450 22451 22452 22453 1363 1364 1365 1366 1367 1368 1381 1382 1383 1384 1385 1386 1375 1376 1377 1378 1379 1380 22064 22065 22066 22067 22068 22069 48 22082 22083 22084 22085 22086 22087 22460 22461 22462 22463 22464 22465 22058 22059 22060 22061 22062 22063 22064 22065 22066 22067 22068 22069 1375 1376 1377 1378 1379 1380 1393 1394 1395 1396 1397 1398 1387 1388 1389 1390 1391 1392 22088 22089 22090 22091 22092 22093 48 22466 22467 22468 22469 22470 22471 22472 22473 22474 22475 22476 22477 22082 22083 22084 22085 22086 22087 22088 22089 22090 22091 22092 22093 1387 1388 1389 1390 1391 1392 1405 1406 1407 1408 1409 1410 1399 1400 1401 1402 1403 1404 22478 22479 22480 22481 22482 22483 48 20666 20667 20668 20669 20670 20671 22484 22485 22486 22487 22488 22489 22466 22467 22468 22469 22470 22471 22478 22479 22480 22481 22482 22483 1399 1400 1401 1402 1403 1404 1417 1418 1419 1420 1421 1422 1411 1412 1413 1414 1415 1416 22100 22101 22102 22103 22104 22105 48 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 22100 22101 22102 22103 22104 22105 1411 1412 1413 1414 1415 1416 1429 1430 1431 1432 1433 1434 1423 1424 1425 1426 1427 1428 22490 22491 22492 22493 22494 22495 48 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 20706 20707 20654 20655 20656 20657 20658 20659 22490 22491 22492 22493 22494 22495 1423 1424 1425 1426 1427 1428 1441 1442 1443 1444 1445 1446 1435 1436 1437 1438 1439 1440 22496 22497 22498 22499 22500 22501 48 20720 20721 20722 20723 20724 20725 20726 20727 20728 20729 20730 20731 20696 20697 20698 20699 20700 20701 22496 22497 22498 22499 22500 22501 1435 1436 1437 1438 1439 1440 1453 1454 1455 1456 1457 1458 1447 1448 1449 1450 1451 1452 22502 22503 22504 22505 22506 22507 48 20744 20745 20746 20747 20748 20749 20750 20751 20752 20753 20754 20755 20720 20721 20722 20723 20724 20725 22502 22503 22504 22505 22506 22507 1447 1448 1449 1450 1451 1452 1465 1466 1467 1468 1469 1470 1459 1460 1461 1462 1463 1464 22508 22509 22510 22511 22512 22513 48 22514 22515 22516 22517 22518 22519 22520 22521 22522 22523 22524 22525 20744 20745 20746 20747 20748 20749 22508 22509 22510 22511 22512 22513 1459 1460 1461 1462 1463 1464 1477 1478 1479 1480 1481 1482 1471 1472 1473 1474 1475 1476 22526 22527 22528 22529 22530 22531 48 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 22542 22543 22514 22515 22516 22517 22518 22519 22526 22527 22528 22529 22530 22531 1471 1472 1473 1474 1475 1476 1489 1490 1491 1492 1493 1494 1483 1484 1485 1486 1487 1488 22544 22545 22546 22547 22548 22549 48 22118 22119 22120 22121 22122 22123 22550 22551 22552 22553 22554 22555 22532 22533 22534 22535 22536 22537 22544 22545 22546 22547 22548 22549 1483 1484 1485 1486 1487 1488 1501 1502 1503 1504 1505 1506 1495 1496 1497 1498 1499 1500 22124 22125 22126 22127 22128 22129 48 22556 22557 22558 22559 22560 22561 22562 22563 22564 22565 22566 22567 22118 22119 22120 22121 22122 22123 22124 22125 22126 22127 22128 22129 1495 1496 1497 1498 1499 1500 1513 1514 1515 1516 1517 1518 1507 1508 1509 1510 1511 1512 22568 22569 22570 22571 22572 22573 48 22574 22575 22576 22577 22578 22579 22580 22581 22582 22583 22584 22585 22586 22587 22588 22589 22590 22591 22592 22593 22594 22595 22596 22597 22598 22599 22600 22601 22602 22603 22604 22605 22606 22607 22608 22609 22136 22137 22138 22139 22140 22141 22610 22611 22612 22613 22614 22615 48 22616 22617 22618 22619 22620 22621 22622 22623 22624 22625 22626 22627 22628 22629 22630 22631 22632 22633 22634 22635 22636 22637 22638 22639 22586 22587 22588 22589 22590 22591 22580 22581 22582 22583 22584 22585 22574 22575 22576 22577 22578 22579 22640 22641 22642 22643 22644 22645 48 22646 22647 22648 22649 22650 22651 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 22663 22664 22665 22666 22667 22668 22669 22628 22629 22630 22631 22632 22633 22622 22623 22624 22625 22626 22627 22616 22617 22618 22619 22620 22621 22670 22671 22672 22673 22674 22675 48 22676 22677 22678 22679 22680 22681 22682 22683 22684 22685 22686 22687 22688 22689 22690 22691 22692 22693 22694 22695 22696 22697 22698 22699 22658 22659 22660 22661 22662 22663 22652 22653 22654 22655 22656 22657 22646 22647 22648 22649 22650 22651 22700 22701 22702 22703 22704 22705 36 22688 22689 22690 22691 22692 22693 22676 22677 22678 22679 22680 22681 22706 22707 22708 22709 22710 22711 22682 22683 22684 22685 22686 22687 22718 22719 22720 22721 22722 22723 22712 22713 22714 22715 22716 22717 48 15386 15387 15388 15389 15390 15391 22724 22725 22726 22727 22728 22729 22706 22707 22708 22709 22710 22711 22718 22719 22720 22721 22722 22723 22676 22677 22678 22679 22680 22681 22730 22731 22732 22733 22734 22735 14108 14109 14110 14111 14112 14113 18644 18645 18646 18647 18648 18649 48 22736 22737 22738 22739 22740 22741 22742 22743 22744 22745 22746 22747 22748 22749 22750 22751 22752 22753 22754 22755 22756 22757 22758 22759 22760 22761 22762 22763 22764 22765 22766 22767 22768 22769 22770 22771 21578 21579 21580 21581 21582 21583 22772 22773 22774 22775 22776 22777 48 9056 9057 9058 9059 9060 9061 22778 22779 22780 22781 22782 22783 22736 22737 22738 22739 22740 22741 22772 22773 22774 22775 22776 22777 21578 21579 21580 21581 21582 21583 21572 21573 21574 21575 21576 21577 7388 7389 7390 7391 7392 7393 19328 19329 19330 19331 19332 19333 48 22784 22785 22786 22787 22788 22789 22790 22791 22792 22793 22794 22795 22796 22797 22798 22799 22800 22801 22802 22803 22804 22805 22806 22807 22748 22749 22750 22751 22752 22753 22742 22743 22744 22745 22746 22747 22736 22737 22738 22739 22740 22741 22808 22809 22810 22811 22812 22813 48 10454 10455 10456 10457 10458 10459 22814 22815 22816 22817 22818 22819 22784 22785 22786 22787 22788 22789 22808 22809 22810 22811 22812 22813 22736 22737 22738 22739 22740 22741 22778 22779 22780 22781 22782 22783 9056 9057 9058 9059 9060 9061 19196 19197 19198 19199 19200 19201 48 22820 22821 22822 22823 22824 22825 22826 22827 22828 22829 22830 22831 22832 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 22796 22797 22798 22799 22800 22801 22790 22791 22792 22793 22794 22795 22784 22785 22786 22787 22788 22789 22844 22845 22846 22847 22848 22849 48 12110 12111 12112 12113 12114 12115 22850 22851 22852 22853 22854 22855 22820 22821 22822 22823 22824 22825 22844 22845 22846 22847 22848 22849 22784 22785 22786 22787 22788 22789 22814 22815 22816 22817 22818 22819 10454 10455 10456 10457 10458 10459 19064 19065 19066 19067 19068 19069 48 22856 22857 22858 22859 22860 22861 22862 22863 22864 22865 22866 22867 22868 22869 22870 22871 22872 22873 22874 22875 22876 22877 22878 22879 22832 22833 22834 22835 22836 22837 22826 22827 22828 22829 22830 22831 22820 22821 22822 22823 22824 22825 22880 22881 22882 22883 22884 22885 48 14060 14061 14062 14063 14064 14065 22886 22887 22888 22889 22890 22891 22856 22857 22858 22859 22860 22861 22880 22881 22882 22883 22884 22885 22820 22821 22822 22823 22824 22825 22850 22851 22852 22853 22854 22855 12110 12111 12112 12113 12114 12115 18770 18771 18772 18773 18774 18775 36 22868 22869 22870 22871 22872 22873 22856 22857 22858 22859 22860 22861 22892 22893 22894 22895 22896 22897 22862 22863 22864 22865 22866 22867 22904 22905 22906 22907 22908 22909 22898 22899 22900 22901 22902 22903 48 15356 15357 15358 15359 15360 15361 22910 22911 22912 22913 22914 22915 22892 22893 22894 22895 22896 22897 22904 22905 22906 22907 22908 22909 22856 22857 22858 22859 22860 22861 22886 22887 22888 22889 22890 22891 14060 14061 14062 14063 14064 14065 18638 18639 18640 18641 18642 18643 48 22916 22917 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 22928 22929 22930 22931 22932 22933 22934 22935 22936 22937 22938 22939 22940 22941 22942 22943 22944 22945 22946 22947 22948 22949 22950 22951 21602 21603 21604 21605 21606 21607 22952 22953 22954 22955 22956 22957 48 9044 9045 9046 9047 9048 9049 22958 22959 22960 22961 22962 22963 22916 22917 22918 22919 22920 22921 22952 22953 22954 22955 22956 22957 21602 21603 21604 21605 21606 21607 21596 21597 21598 21599 21600 21601 7376 7377 7378 7379 7380 7381 19334 19335 19336 19337 19338 19339 48 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22928 22929 22930 22931 22932 22933 22922 22923 22924 22925 22926 22927 22916 22917 22918 22919 22920 22921 22988 22989 22990 22991 22992 22993 48 10442 10443 10444 10445 10446 10447 22994 22995 22996 22997 22998 22999 22964 22965 22966 22967 22968 22969 22988 22989 22990 22991 22992 22993 22916 22917 22918 22919 22920 22921 22958 22959 22960 22961 22962 22963 9044 9045 9046 9047 9048 9049 19202 19203 19204 19205 19206 19207 48 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 22976 22977 22978 22979 22980 22981 22970 22971 22972 22973 22974 22975 22964 22965 22966 22967 22968 22969 23024 23025 23026 23027 23028 23029 48 12098 12099 12100 12101 12102 12103 23030 23031 23032 23033 23034 23035 23000 23001 23002 23003 23004 23005 23024 23025 23026 23027 23028 23029 22964 22965 22966 22967 22968 22969 22994 22995 22996 22997 22998 22999 10442 10443 10444 10445 10446 10447 19070 19071 19072 19073 19074 19075 48 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23012 23013 23014 23015 23016 23017 23006 23007 23008 23009 23010 23011 23000 23001 23002 23003 23004 23005 23060 23061 23062 23063 23064 23065 48 14012 14013 14014 14015 14016 14017 23066 23067 23068 23069 23070 23071 23036 23037 23038 23039 23040 23041 23060 23061 23062 23063 23064 23065 23000 23001 23002 23003 23004 23005 23030 23031 23032 23033 23034 23035 12098 12099 12100 12101 12102 12103 18776 18777 18778 18779 18780 18781 36 23048 23049 23050 23051 23052 23053 23036 23037 23038 23039 23040 23041 23072 23073 23074 23075 23076 23077 23042 23043 23044 23045 23046 23047 23084 23085 23086 23087 23088 23089 23078 23079 23080 23081 23082 23083 48 15326 15327 15328 15329 15330 15331 23090 23091 23092 23093 23094 23095 23072 23073 23074 23075 23076 23077 23084 23085 23086 23087 23088 23089 23036 23037 23038 23039 23040 23041 23066 23067 23068 23069 23070 23071 14012 14013 14014 14015 14016 14017 18632 18633 18634 18635 18636 18637 48 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 22166 22167 22168 22169 22170 22171 23132 23133 23134 23135 23136 23137 48 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23108 23109 23110 23111 23112 23113 23102 23103 23104 23105 23106 23107 23096 23097 23098 23099 23100 23101 23162 23163 23164 23165 23166 23167 48 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23150 23151 23152 23153 23154 23155 23144 23145 23146 23147 23148 23149 23138 23139 23140 23141 23142 23143 23192 23193 23194 23195 23196 23197 48 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23180 23181 23182 23183 23184 23185 23174 23175 23176 23177 23178 23179 23168 23169 23170 23171 23172 23173 23222 23223 23224 23225 23226 23227 36 23210 23211 23212 23213 23214 23215 23198 23199 23200 23201 23202 23203 23228 23229 23230 23231 23232 23233 23204 23205 23206 23207 23208 23209 23240 23241 23242 23243 23244 23245 23234 23235 23236 23237 23238 23239 48 15296 15297 15298 15299 15300 15301 23246 23247 23248 23249 23250 23251 23228 23229 23230 23231 23232 23233 23240 23241 23242 23243 23244 23245 23198 23199 23200 23201 23202 23203 23252 23253 23254 23255 23256 23257 13964 13965 13966 13967 13968 13969 18626 18627 18628 18629 18630 18631 48 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 21626 21627 21628 21629 21630 21631 23294 23295 23296 23297 23298 23299 48 8936 8937 8938 8939 8940 8941 23300 23301 23302 23303 23304 23305 23258 23259 23260 23261 23262 23263 23294 23295 23296 23297 23298 23299 21626 21627 21628 21629 21630 21631 21620 21621 21622 21623 21624 21625 7268 7269 7270 7271 7272 7273 19316 19317 19318 19319 19320 19321 48 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23270 23271 23272 23273 23274 23275 23264 23265 23266 23267 23268 23269 23258 23259 23260 23261 23262 23263 23330 23331 23332 23333 23334 23335 48 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23318 23319 23320 23321 23322 23323 23312 23313 23314 23315 23316 23317 23306 23307 23308 23309 23310 23311 23360 23361 23362 23363 23364 23365 48 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23348 23349 23350 23351 23352 23353 23342 23343 23344 23345 23346 23347 23336 23337 23338 23339 23340 23341 23390 23391 23392 23393 23394 23395 48 13916 13917 13918 13919 13920 13921 23396 23397 23398 23399 23400 23401 23366 23367 23368 23369 23370 23371 23390 23391 23392 23393 23394 23395 23336 23337 23338 23339 23340 23341 23402 23403 23404 23405 23406 23407 11990 11991 11992 11993 11994 11995 18758 18759 18760 18761 18762 18763 36 23378 23379 23380 23381 23382 23383 23366 23367 23368 23369 23370 23371 23408 23409 23410 23411 23412 23413 23372 23373 23374 23375 23376 23377 23420 23421 23422 23423 23424 23425 23414 23415 23416 23417 23418 23419 48 15266 15267 15268 15269 15270 15271 23426 23427 23428 23429 23430 23431 23408 23409 23410 23411 23412 23413 23420 23421 23422 23423 23424 23425 23366 23367 23368 23369 23370 23371 23396 23397 23398 23399 23400 23401 13916 13917 13918 13919 13920 13921 18620 18621 18622 18623 18624 18625 48 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 21650 21651 21652 21653 21654 21655 23468 23469 23470 23471 23472 23473 48 8924 8925 8926 8927 8928 8929 23474 23475 23476 23477 23478 23479 23432 23433 23434 23435 23436 23437 23468 23469 23470 23471 23472 23473 21650 21651 21652 21653 21654 21655 21644 21645 21646 21647 21648 21649 7256 7257 7258 7259 7260 7261 19322 19323 19324 19325 19326 19327 48 23480 23481 23482 23483 23484 23485 23486 23487 23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 23502 23503 23444 23445 23446 23447 23448 23449 23438 23439 23440 23441 23442 23443 23432 23433 23434 23435 23436 23437 23504 23505 23506 23507 23508 23509 48 19046 19047 19048 19049 19050 19051 23510 23511 23512 23513 23514 23515 23480 23481 23482 23483 23484 23485 23504 23505 23506 23507 23508 23509 23432 23433 23434 23435 23436 23437 23474 23475 23476 23477 23478 23479 8924 8925 8926 8927 8928 8929 19190 19191 19192 19193 19194 19195 48 23516 23517 23518 23519 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 23531 23532 23533 23534 23535 23536 23537 23538 23539 23492 23493 23494 23495 23496 23497 23486 23487 23488 23489 23490 23491 23480 23481 23482 23483 23484 23485 23540 23541 23542 23543 23544 23545 48 11978 11979 11980 11981 11982 11983 23546 23547 23548 23549 23550 23551 23516 23517 23518 23519 23520 23521 23540 23541 23542 23543 23544 23545 23480 23481 23482 23483 23484 23485 23510 23511 23512 23513 23514 23515 19046 19047 19048 19049 19050 19051 19058 19059 19060 19061 19062 19063 48 23552 23553 23554 23555 23556 23557 23558 23559 23560 23561 23562 23563 23564 23565 23566 23567 23568 23569 23570 23571 23572 23573 23574 23575 23528 23529 23530 23531 23532 23533 23522 23523 23524 23525 23526 23527 23516 23517 23518 23519 23520 23521 23576 23577 23578 23579 23580 23581 48 13868 13869 13870 13871 13872 13873 23582 23583 23584 23585 23586 23587 23552 23553 23554 23555 23556 23557 23576 23577 23578 23579 23580 23581 23516 23517 23518 23519 23520 23521 23546 23547 23548 23549 23550 23551 11978 11979 11980 11981 11982 11983 18764 18765 18766 18767 18768 18769 36 23564 23565 23566 23567 23568 23569 23552 23553 23554 23555 23556 23557 23588 23589 23590 23591 23592 23593 23558 23559 23560 23561 23562 23563 23600 23601 23602 23603 23604 23605 23594 23595 23596 23597 23598 23599 48 15236 15237 15238 15239 15240 15241 23606 23607 23608 23609 23610 23611 23588 23589 23590 23591 23592 23593 23600 23601 23602 23603 23604 23605 23552 23553 23554 23555 23556 23557 23582 23583 23584 23585 23586 23587 13868 13869 13870 13871 13872 13873 18614 18615 18616 18617 18618 18619 48 23612 23613 23614 23615 23616 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 22196 22197 22198 22199 22200 22201 23648 23649 23650 23651 23652 23653 48 23654 23655 23656 23657 23658 23659 23660 23661 23662 23663 23664 23665 23666 23667 23668 23669 23670 23671 23672 23673 23674 23675 23676 23677 23624 23625 23626 23627 23628 23629 23618 23619 23620 23621 23622 23623 23612 23613 23614 23615 23616 23617 23678 23679 23680 23681 23682 23683 48 23684 23685 23686 23687 23688 23689 23690 23691 23692 23693 23694 23695 23696 23697 23698 23699 23700 23701 23702 23703 23704 23705 23706 23707 23666 23667 23668 23669 23670 23671 23660 23661 23662 23663 23664 23665 23654 23655 23656 23657 23658 23659 23708 23709 23710 23711 23712 23713 48 23714 23715 23716 23717 23718 23719 23720 23721 23722 23723 23724 23725 23726 23727 23728 23729 23730 23731 23732 23733 23734 23735 23736 23737 23696 23697 23698 23699 23700 23701 23690 23691 23692 23693 23694 23695 23684 23685 23686 23687 23688 23689 23738 23739 23740 23741 23742 23743 36 23726 23727 23728 23729 23730 23731 23714 23715 23716 23717 23718 23719 23744 23745 23746 23747 23748 23749 23720 23721 23722 23723 23724 23725 23756 23757 23758 23759 23760 23761 23750 23751 23752 23753 23754 23755 48 15206 15207 15208 15209 15210 15211 23762 23763 23764 23765 23766 23767 23744 23745 23746 23747 23748 23749 23756 23757 23758 23759 23760 23761 23714 23715 23716 23717 23718 23719 23768 23769 23770 23771 23772 23773 13820 13821 13822 13823 13824 13825 18608 18609 18610 18611 18612 18613 48 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 23792 23793 23794 23795 23796 23797 23798 23799 23800 23801 23802 23803 23804 23805 23806 23807 23808 23809 21674 21675 21676 21677 21678 21679 23810 23811 23812 23813 23814 23815 48 8816 8817 8818 8819 8820 8821 23816 23817 23818 23819 23820 23821 23774 23775 23776 23777 23778 23779 23810 23811 23812 23813 23814 23815 21674 21675 21676 21677 21678 21679 21668 21669 21670 21671 21672 21673 7148 7149 7150 7151 7152 7153 19304 19305 19306 19307 19308 19309 48 23822 23823 23824 23825 23826 23827 23828 23829 23830 23831 23832 23833 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23786 23787 23788 23789 23790 23791 23780 23781 23782 23783 23784 23785 23774 23775 23776 23777 23778 23779 23846 23847 23848 23849 23850 23851 48 23852 23853 23854 23855 23856 23857 23858 23859 23860 23861 23862 23863 23864 23865 23866 23867 23868 23869 23870 23871 23872 23873 23874 23875 23834 23835 23836 23837 23838 23839 23828 23829 23830 23831 23832 23833 23822 23823 23824 23825 23826 23827 23876 23877 23878 23879 23880 23881 48 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23864 23865 23866 23867 23868 23869 23858 23859 23860 23861 23862 23863 23852 23853 23854 23855 23856 23857 23906 23907 23908 23909 23910 23911 48 13772 13773 13774 13775 13776 13777 23912 23913 23914 23915 23916 23917 23882 23883 23884 23885 23886 23887 23906 23907 23908 23909 23910 23911 23852 23853 23854 23855 23856 23857 23918 23919 23920 23921 23922 23923 11870 11871 11872 11873 11874 11875 18746 18747 18748 18749 18750 18751 36 23894 23895 23896 23897 23898 23899 23882 23883 23884 23885 23886 23887 23924 23925 23926 23927 23928 23929 23888 23889 23890 23891 23892 23893 23936 23937 23938 23939 23940 23941 23930 23931 23932 23933 23934 23935 48 15176 15177 15178 15179 15180 15181 23942 23943 23944 23945 23946 23947 23924 23925 23926 23927 23928 23929 23936 23937 23938 23939 23940 23941 23882 23883 23884 23885 23886 23887 23912 23913 23914 23915 23916 23917 13772 13773 13774 13775 13776 13777 18602 18603 18604 18605 18606 18607 48 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 21698 21699 21700 21701 21702 21703 23984 23985 23986 23987 23988 23989 48 8804 8805 8806 8807 8808 8809 23990 23991 23992 23993 23994 23995 23948 23949 23950 23951 23952 23953 23984 23985 23986 23987 23988 23989 21698 21699 21700 21701 21702 21703 21692 21693 21694 21695 21696 21697 7136 7137 7138 7139 7140 7141 19310 19311 19312 19313 19314 19315 48 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 23960 23961 23962 23963 23964 23965 23954 23955 23956 23957 23958 23959 23948 23949 23950 23951 23952 23953 24020 24021 24022 24023 24024 24025 48 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24008 24009 24010 24011 24012 24013 24002 24003 24004 24005 24006 24007 23996 23997 23998 23999 24000 24001 24050 24051 24052 24053 24054 24055 48 24056 24057 24058 24059 24060 24061 24062 24063 24064 24065 24066 24067 24068 24069 24070 24071 24072 24073 24074 24075 24076 24077 24078 24079 24038 24039 24040 24041 24042 24043 24032 24033 24034 24035 24036 24037 24026 24027 24028 24029 24030 24031 24080 24081 24082 24083 24084 24085 48 13724 13725 13726 13727 13728 13729 24086 24087 24088 24089 24090 24091 24056 24057 24058 24059 24060 24061 24080 24081 24082 24083 24084 24085 24026 24027 24028 24029 24030 24031 24092 24093 24094 24095 24096 24097 11858 11859 11860 11861 11862 11863 18752 18753 18754 18755 18756 18757 36 24068 24069 24070 24071 24072 24073 24056 24057 24058 24059 24060 24061 24098 24099 24100 24101 24102 24103 24062 24063 24064 24065 24066 24067 24110 24111 24112 24113 24114 24115 24104 24105 24106 24107 24108 24109 48 15146 15147 15148 15149 15150 15151 24116 24117 24118 24119 24120 24121 24098 24099 24100 24101 24102 24103 24110 24111 24112 24113 24114 24115 24056 24057 24058 24059 24060 24061 24086 24087 24088 24089 24090 24091 13724 13725 13726 13727 13728 13729 18596 18597 18598 18599 18600 18601 48 24122 24123 24124 24125 24126 24127 24128 24129 24130 24131 24132 24133 24134 24135 24136 24137 24138 24139 24140 24141 24142 24143 24144 24145 24146 24147 24148 24149 24150 24151 24152 24153 24154 24155 24156 24157 22226 22227 22228 22229 22230 22231 24158 24159 24160 24161 24162 24163 48 24164 24165 24166 24167 24168 24169 24170 24171 24172 24173 24174 24175 24176 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186 24187 24134 24135 24136 24137 24138 24139 24128 24129 24130 24131 24132 24133 24122 24123 24124 24125 24126 24127 24188 24189 24190 24191 24192 24193 48 24194 24195 24196 24197 24198 24199 24200 24201 24202 24203 24204 24205 24206 24207 24208 24209 24210 24211 24212 24213 24214 24215 24216 24217 24176 24177 24178 24179 24180 24181 24170 24171 24172 24173 24174 24175 24164 24165 24166 24167 24168 24169 24218 24219 24220 24221 24222 24223 48 24224 24225 24226 24227 24228 24229 24230 24231 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 24242 24243 24244 24245 24246 24247 24206 24207 24208 24209 24210 24211 24200 24201 24202 24203 24204 24205 24194 24195 24196 24197 24198 24199 24248 24249 24250 24251 24252 24253 36 24236 24237 24238 24239 24240 24241 24224 24225 24226 24227 24228 24229 24254 24255 24256 24257 24258 24259 24230 24231 24232 24233 24234 24235 24266 24267 24268 24269 24270 24271 24260 24261 24262 24263 24264 24265 48 15116 15117 15118 15119 15120 15121 24272 24273 24274 24275 24276 24277 24254 24255 24256 24257 24258 24259 24266 24267 24268 24269 24270 24271 24224 24225 24226 24227 24228 24229 24278 24279 24280 24281 24282 24283 13676 13677 13678 13679 13680 13681 18590 18591 18592 18593 18594 18595 48 24284 24285 24286 24287 24288 24289 24290 24291 24292 24293 24294 24295 24296 24297 24298 24299 24300 24301 24302 24303 24304 24305 24306 24307 24308 24309 24310 24311 24312 24313 24314 24315 24316 24317 24318 24319 21722 21723 21724 21725 21726 21727 24320 24321 24322 24323 24324 24325 48 8696 8697 8698 8699 8700 8701 24326 24327 24328 24329 24330 24331 24284 24285 24286 24287 24288 24289 24320 24321 24322 24323 24324 24325 21722 21723 21724 21725 21726 21727 21716 21717 21718 21719 21720 21721 7028 7029 7030 7031 7032 7033 19292 19293 19294 19295 19296 19297 48 24332 24333 24334 24335 24336 24337 24338 24339 24340 24341 24342 24343 24344 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 24296 24297 24298 24299 24300 24301 24290 24291 24292 24293 24294 24295 24284 24285 24286 24287 24288 24289 24356 24357 24358 24359 24360 24361 48 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 24373 24374 24375 24376 24377 24378 24379 24380 24381 24382 24383 24384 24385 24344 24345 24346 24347 24348 24349 24338 24339 24340 24341 24342 24343 24332 24333 24334 24335 24336 24337 24386 24387 24388 24389 24390 24391 48 24392 24393 24394 24395 24396 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 24410 24411 24412 24413 24414 24415 24374 24375 24376 24377 24378 24379 24368 24369 24370 24371 24372 24373 24362 24363 24364 24365 24366 24367 24416 24417 24418 24419 24420 24421 48 13628 13629 13630 13631 13632 13633 24422 24423 24424 24425 24426 24427 24392 24393 24394 24395 24396 24397 24416 24417 24418 24419 24420 24421 24362 24363 24364 24365 24366 24367 24428 24429 24430 24431 24432 24433 11750 11751 11752 11753 11754 11755 18734 18735 18736 18737 18738 18739 36 24404 24405 24406 24407 24408 24409 24392 24393 24394 24395 24396 24397 24434 24435 24436 24437 24438 24439 24398 24399 24400 24401 24402 24403 24446 24447 24448 24449 24450 24451 24440 24441 24442 24443 24444 24445 48 15086 15087 15088 15089 15090 15091 24452 24453 24454 24455 24456 24457 24434 24435 24436 24437 24438 24439 24446 24447 24448 24449 24450 24451 24392 24393 24394 24395 24396 24397 24422 24423 24424 24425 24426 24427 13628 13629 13630 13631 13632 13633 18584 18585 18586 18587 18588 18589 48 24458 24459 24460 24461 24462 24463 24464 24465 24466 24467 24468 24469 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479 24480 24481 24482 24483 24484 24485 24486 24487 24488 24489 24490 24491 24492 24493 21746 21747 21748 21749 21750 21751 24494 24495 24496 24497 24498 24499 48 8684 8685 8686 8687 8688 8689 24500 24501 24502 24503 24504 24505 24458 24459 24460 24461 24462 24463 24494 24495 24496 24497 24498 24499 21746 21747 21748 21749 21750 21751 21740 21741 21742 21743 21744 21745 7016 7017 7018 7019 7020 7021 19298 19299 19300 19301 19302 19303 48 24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24470 24471 24472 24473 24474 24475 24464 24465 24466 24467 24468 24469 24458 24459 24460 24461 24462 24463 24530 24531 24532 24533 24534 24535 48 18986 18987 18988 18989 18990 18991 24536 24537 24538 24539 24540 24541 24506 24507 24508 24509 24510 24511 24530 24531 24532 24533 24534 24535 24458 24459 24460 24461 24462 24463 24500 24501 24502 24503 24504 24505 8684 8685 8686 8687 8688 8689 19166 19167 19168 19169 19170 19171 48 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 24552 24553 24554 24555 24556 24557 24558 24559 24560 24561 24562 24563 24564 24565 24518 24519 24520 24521 24522 24523 24512 24513 24514 24515 24516 24517 24506 24507 24508 24509 24510 24511 24566 24567 24568 24569 24570 24571 48 11738 11739 11740 11741 11742 11743 24572 24573 24574 24575 24576 24577 24542 24543 24544 24545 24546 24547 24566 24567 24568 24569 24570 24571 24506 24507 24508 24509 24510 24511 24536 24537 24538 24539 24540 24541 18986 18987 18988 18989 18990 18991 18998 18999 19000 19001 19002 19003 48 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24554 24555 24556 24557 24558 24559 24548 24549 24550 24551 24552 24553 24542 24543 24544 24545 24546 24547 24602 24603 24604 24605 24606 24607 48 13580 13581 13582 13583 13584 13585 24608 24609 24610 24611 24612 24613 24578 24579 24580 24581 24582 24583 24602 24603 24604 24605 24606 24607 24542 24543 24544 24545 24546 24547 24572 24573 24574 24575 24576 24577 11738 11739 11740 11741 11742 11743 18740 18741 18742 18743 18744 18745 36 24590 24591 24592 24593 24594 24595 24578 24579 24580 24581 24582 24583 24614 24615 24616 24617 24618 24619 24584 24585 24586 24587 24588 24589 24626 24627 24628 24629 24630 24631 24620 24621 24622 24623 24624 24625 48 15056 15057 15058 15059 15060 15061 24632 24633 24634 24635 24636 24637 24614 24615 24616 24617 24618 24619 24626 24627 24628 24629 24630 24631 24578 24579 24580 24581 24582 24583 24608 24609 24610 24611 24612 24613 13580 13581 13582 13583 13584 13585 18578 18579 18580 18581 18582 18583 48 24638 24639 24640 24641 24642 24643 24644 24645 24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 22256 22257 22258 22259 22260 22261 24674 24675 24676 24677 24678 24679 48 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 24694 24695 24696 24697 24698 24699 24700 24701 24702 24703 24650 24651 24652 24653 24654 24655 24644 24645 24646 24647 24648 24649 24638 24639 24640 24641 24642 24643 24704 24705 24706 24707 24708 24709 48 24710 24711 24712 24713 24714 24715 24716 24717 24718 24719 24720 24721 24722 24723 24724 24725 24726 24727 24728 24729 24730 24731 24732 24733 24692 24693 24694 24695 24696 24697 24686 24687 24688 24689 24690 24691 24680 24681 24682 24683 24684 24685 24734 24735 24736 24737 24738 24739 48 24740 24741 24742 24743 24744 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 24755 24756 24757 24758 24759 24760 24761 24762 24763 24722 24723 24724 24725 24726 24727 24716 24717 24718 24719 24720 24721 24710 24711 24712 24713 24714 24715 24764 24765 24766 24767 24768 24769 36 24752 24753 24754 24755 24756 24757 24740 24741 24742 24743 24744 24745 24770 24771 24772 24773 24774 24775 24746 24747 24748 24749 24750 24751 24782 24783 24784 24785 24786 24787 24776 24777 24778 24779 24780 24781 48 15026 15027 15028 15029 15030 15031 24788 24789 24790 24791 24792 24793 24770 24771 24772 24773 24774 24775 24782 24783 24784 24785 24786 24787 24740 24741 24742 24743 24744 24745 24794 24795 24796 24797 24798 24799 13532 13533 13534 13535 13536 13537 18572 18573 18574 18575 18576 18577 48 24800 24801 24802 24803 24804 24805 24806 24807 24808 24809 24810 24811 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 24826 24827 24828 24829 24830 24831 24832 24833 24834 24835 21770 21771 21772 21773 21774 21775 24836 24837 24838 24839 24840 24841 48 8576 8577 8578 8579 8580 8581 24842 24843 24844 24845 24846 24847 24800 24801 24802 24803 24804 24805 24836 24837 24838 24839 24840 24841 21770 21771 21772 21773 21774 21775 21764 21765 21766 21767 21768 21769 6908 6909 6910 6911 6912 6913 19280 19281 19282 19283 19284 19285 48 24848 24849 24850 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24812 24813 24814 24815 24816 24817 24806 24807 24808 24809 24810 24811 24800 24801 24802 24803 24804 24805 24872 24873 24874 24875 24876 24877 48 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24860 24861 24862 24863 24864 24865 24854 24855 24856 24857 24858 24859 24848 24849 24850 24851 24852 24853 24902 24903 24904 24905 24906 24907 48 24908 24909 24910 24911 24912 24913 24914 24915 24916 24917 24918 24919 24920 24921 24922 24923 24924 24925 24926 24927 24928 24929 24930 24931 24890 24891 24892 24893 24894 24895 24884 24885 24886 24887 24888 24889 24878 24879 24880 24881 24882 24883 24932 24933 24934 24935 24936 24937 48 13484 13485 13486 13487 13488 13489 24938 24939 24940 24941 24942 24943 24908 24909 24910 24911 24912 24913 24932 24933 24934 24935 24936 24937 24878 24879 24880 24881 24882 24883 24944 24945 24946 24947 24948 24949 11630 11631 11632 11633 11634 11635 18722 18723 18724 18725 18726 18727 36 24920 24921 24922 24923 24924 24925 24908 24909 24910 24911 24912 24913 24950 24951 24952 24953 24954 24955 24914 24915 24916 24917 24918 24919 24962 24963 24964 24965 24966 24967 24956 24957 24958 24959 24960 24961 48 14996 14997 14998 14999 15000 15001 24968 24969 24970 24971 24972 24973 24950 24951 24952 24953 24954 24955 24962 24963 24964 24965 24966 24967 24908 24909 24910 24911 24912 24913 24938 24939 24940 24941 24942 24943 13484 13485 13486 13487 13488 13489 18566 18567 18568 18569 18570 18571 48 24974 24975 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 24987 24988 24989 24990 24991 24992 24993 24994 24995 24996 24997 24998 24999 25000 25001 25002 25003 25004 25005 25006 25007 25008 25009 21794 21795 21796 21797 21798 21799 25010 25011 25012 25013 25014 25015 48 8564 8565 8566 8567 8568 8569 25016 25017 25018 25019 25020 25021 24974 24975 24976 24977 24978 24979 25010 25011 25012 25013 25014 25015 21794 21795 21796 21797 21798 21799 21788 21789 21790 21791 21792 21793 6896 6897 6898 6899 6900 6901 19286 19287 19288 19289 19290 19291 48 25022 25023 25024 25025 25026 25027 25028 25029 25030 25031 25032 25033 25034 25035 25036 25037 25038 25039 25040 25041 25042 25043 25044 25045 24986 24987 24988 24989 24990 24991 24980 24981 24982 24983 24984 24985 24974 24975 24976 24977 24978 24979 25046 25047 25048 25049 25050 25051 48 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 25070 25071 25072 25073 25074 25075 25034 25035 25036 25037 25038 25039 25028 25029 25030 25031 25032 25033 25022 25023 25024 25025 25026 25027 25076 25077 25078 25079 25080 25081 48 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25064 25065 25066 25067 25068 25069 25058 25059 25060 25061 25062 25063 25052 25053 25054 25055 25056 25057 25106 25107 25108 25109 25110 25111 48 13436 13437 13438 13439 13440 13441 25112 25113 25114 25115 25116 25117 25082 25083 25084 25085 25086 25087 25106 25107 25108 25109 25110 25111 25052 25053 25054 25055 25056 25057 25118 25119 25120 25121 25122 25123 11618 11619 11620 11621 11622 11623 18728 18729 18730 18731 18732 18733 36 25094 25095 25096 25097 25098 25099 25082 25083 25084 25085 25086 25087 25124 25125 25126 25127 25128 25129 25088 25089 25090 25091 25092 25093 25136 25137 25138 25139 25140 25141 25130 25131 25132 25133 25134 25135 48 14966 14967 14968 14969 14970 14971 25142 25143 25144 25145 25146 25147 25124 25125 25126 25127 25128 25129 25136 25137 25138 25139 25140 25141 25082 25083 25084 25085 25086 25087 25112 25113 25114 25115 25116 25117 13436 13437 13438 13439 13440 13441 18560 18561 18562 18563 18564 18565 48 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 25178 25179 25180 25181 25182 25183 22286 22287 22288 22289 22290 22291 25184 25185 25186 25187 25188 25189 48 25190 25191 25192 25193 25194 25195 25196 25197 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 25208 25209 25210 25211 25212 25213 25160 25161 25162 25163 25164 25165 25154 25155 25156 25157 25158 25159 25148 25149 25150 25151 25152 25153 25214 25215 25216 25217 25218 25219 48 25220 25221 25222 25223 25224 25225 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 25237 25238 25239 25240 25241 25242 25243 25202 25203 25204 25205 25206 25207 25196 25197 25198 25199 25200 25201 25190 25191 25192 25193 25194 25195 25244 25245 25246 25247 25248 25249 48 25250 25251 25252 25253 25254 25255 25256 25257 25258 25259 25260 25261 25262 25263 25264 25265 25266 25267 25268 25269 25270 25271 25272 25273 25232 25233 25234 25235 25236 25237 25226 25227 25228 25229 25230 25231 25220 25221 25222 25223 25224 25225 25274 25275 25276 25277 25278 25279 36 25262 25263 25264 25265 25266 25267 25250 25251 25252 25253 25254 25255 25280 25281 25282 25283 25284 25285 25256 25257 25258 25259 25260 25261 25292 25293 25294 25295 25296 25297 25286 25287 25288 25289 25290 25291 48 14936 14937 14938 14939 14940 14941 25298 25299 25300 25301 25302 25303 25280 25281 25282 25283 25284 25285 25292 25293 25294 25295 25296 25297 25250 25251 25252 25253 25254 25255 25304 25305 25306 25307 25308 25309 13388 13389 13390 13391 13392 13393 18554 18555 18556 18557 18558 18559 48 25310 25311 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 25340 25341 25342 25343 25344 25345 21818 21819 21820 21821 21822 21823 25346 25347 25348 25349 25350 25351 48 8456 8457 8458 8459 8460 8461 25352 25353 25354 25355 25356 25357 25310 25311 25312 25313 25314 25315 25346 25347 25348 25349 25350 25351 21818 21819 21820 21821 21822 21823 21812 21813 21814 21815 21816 21817 6788 6789 6790 6791 6792 6793 19268 19269 19270 19271 19272 19273 48 25358 25359 25360 25361 25362 25363 25364 25365 25366 25367 25368 25369 25370 25371 25372 25373 25374 25375 25376 25377 25378 25379 25380 25381 25322 25323 25324 25325 25326 25327 25316 25317 25318 25319 25320 25321 25310 25311 25312 25313 25314 25315 25382 25383 25384 25385 25386 25387 48 25388 25389 25390 25391 25392 25393 25394 25395 25396 25397 25398 25399 25400 25401 25402 25403 25404 25405 25406 25407 25408 25409 25410 25411 25370 25371 25372 25373 25374 25375 25364 25365 25366 25367 25368 25369 25358 25359 25360 25361 25362 25363 25412 25413 25414 25415 25416 25417 48 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 25429 25430 25431 25432 25433 25434 25435 25436 25437 25438 25439 25440 25441 25400 25401 25402 25403 25404 25405 25394 25395 25396 25397 25398 25399 25388 25389 25390 25391 25392 25393 25442 25443 25444 25445 25446 25447 48 13340 13341 13342 13343 13344 13345 25448 25449 25450 25451 25452 25453 25418 25419 25420 25421 25422 25423 25442 25443 25444 25445 25446 25447 25388 25389 25390 25391 25392 25393 25454 25455 25456 25457 25458 25459 11510 11511 11512 11513 11514 11515 18710 18711 18712 18713 18714 18715 36 25430 25431 25432 25433 25434 25435 25418 25419 25420 25421 25422 25423 25460 25461 25462 25463 25464 25465 25424 25425 25426 25427 25428 25429 25472 25473 25474 25475 25476 25477 25466 25467 25468 25469 25470 25471 48 14906 14907 14908 14909 14910 14911 25478 25479 25480 25481 25482 25483 25460 25461 25462 25463 25464 25465 25472 25473 25474 25475 25476 25477 25418 25419 25420 25421 25422 25423 25448 25449 25450 25451 25452 25453 13340 13341 13342 13343 13344 13345 18548 18549 18550 18551 18552 18553 48 25484 25485 25486 25487 25488 25489 25490 25491 25492 25493 25494 25495 25496 25497 25498 25499 25500 25501 25502 25503 25504 25505 25506 25507 25508 25509 25510 25511 25512 25513 25514 25515 25516 25517 25518 25519 21842 21843 21844 21845 21846 21847 25520 25521 25522 25523 25524 25525 48 8444 8445 8446 8447 8448 8449 25526 25527 25528 25529 25530 25531 25484 25485 25486 25487 25488 25489 25520 25521 25522 25523 25524 25525 21842 21843 21844 21845 21846 21847 21836 21837 21838 21839 21840 21841 6776 6777 6778 6779 6780 6781 19274 19275 19276 19277 19278 19279 48 25532 25533 25534 25535 25536 25537 25538 25539 25540 25541 25542 25543 25544 25545 25546 25547 25548 25549 25550 25551 25552 25553 25554 25555 25496 25497 25498 25499 25500 25501 25490 25491 25492 25493 25494 25495 25484 25485 25486 25487 25488 25489 25556 25557 25558 25559 25560 25561 48 18926 18927 18928 18929 18930 18931 25562 25563 25564 25565 25566 25567 25532 25533 25534 25535 25536 25537 25556 25557 25558 25559 25560 25561 25484 25485 25486 25487 25488 25489 25526 25527 25528 25529 25530 25531 8444 8445 8446 8447 8448 8449 19142 19143 19144 19145 19146 19147 48 25568 25569 25570 25571 25572 25573 25574 25575 25576 25577 25578 25579 25580 25581 25582 25583 25584 25585 25586 25587 25588 25589 25590 25591 25544 25545 25546 25547 25548 25549 25538 25539 25540 25541 25542 25543 25532 25533 25534 25535 25536 25537 25592 25593 25594 25595 25596 25597 48 11498 11499 11500 11501 11502 11503 25598 25599 25600 25601 25602 25603 25568 25569 25570 25571 25572 25573 25592 25593 25594 25595 25596 25597 25532 25533 25534 25535 25536 25537 25562 25563 25564 25565 25566 25567 18926 18927 18928 18929 18930 18931 18938 18939 18940 18941 18942 18943 48 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 25621 25622 25623 25624 25625 25626 25627 25580 25581 25582 25583 25584 25585 25574 25575 25576 25577 25578 25579 25568 25569 25570 25571 25572 25573 25628 25629 25630 25631 25632 25633 48 13292 13293 13294 13295 13296 13297 25634 25635 25636 25637 25638 25639 25604 25605 25606 25607 25608 25609 25628 25629 25630 25631 25632 25633 25568 25569 25570 25571 25572 25573 25598 25599 25600 25601 25602 25603 11498 11499 11500 11501 11502 11503 18716 18717 18718 18719 18720 18721 36 25616 25617 25618 25619 25620 25621 25604 25605 25606 25607 25608 25609 25640 25641 25642 25643 25644 25645 25610 25611 25612 25613 25614 25615 25652 25653 25654 25655 25656 25657 25646 25647 25648 25649 25650 25651 48 14876 14877 14878 14879 14880 14881 25658 25659 25660 25661 25662 25663 25640 25641 25642 25643 25644 25645 25652 25653 25654 25655 25656 25657 25604 25605 25606 25607 25608 25609 25634 25635 25636 25637 25638 25639 13292 13293 13294 13295 13296 13297 18542 18543 18544 18545 18546 18547 48 25664 25665 25666 25667 25668 25669 25670 25671 25672 25673 25674 25675 25676 25677 25678 25679 25680 25681 25682 25683 25684 25685 25686 25687 25688 25689 25690 25691 25692 25693 25694 25695 25696 25697 25698 25699 22316 22317 22318 22319 22320 22321 25700 25701 25702 25703 25704 25705 48 25706 25707 25708 25709 25710 25711 25712 25713 25714 25715 25716 25717 25718 25719 25720 25721 25722 25723 25724 25725 25726 25727 25728 25729 25676 25677 25678 25679 25680 25681 25670 25671 25672 25673 25674 25675 25664 25665 25666 25667 25668 25669 25730 25731 25732 25733 25734 25735 48 25736 25737 25738 25739 25740 25741 25742 25743 25744 25745 25746 25747 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 25759 25718 25719 25720 25721 25722 25723 25712 25713 25714 25715 25716 25717 25706 25707 25708 25709 25710 25711 25760 25761 25762 25763 25764 25765 48 25766 25767 25768 25769 25770 25771 25772 25773 25774 25775 25776 25777 25778 25779 25780 25781 25782 25783 25784 25785 25786 25787 25788 25789 25748 25749 25750 25751 25752 25753 25742 25743 25744 25745 25746 25747 25736 25737 25738 25739 25740 25741 25790 25791 25792 25793 25794 25795 36 25778 25779 25780 25781 25782 25783 25766 25767 25768 25769 25770 25771 25796 25797 25798 25799 25800 25801 25772 25773 25774 25775 25776 25777 25808 25809 25810 25811 25812 25813 25802 25803 25804 25805 25806 25807 48 14846 14847 14848 14849 14850 14851 25814 25815 25816 25817 25818 25819 25796 25797 25798 25799 25800 25801 25808 25809 25810 25811 25812 25813 25766 25767 25768 25769 25770 25771 25820 25821 25822 25823 25824 25825 13244 13245 13246 13247 13248 13249 18536 18537 18538 18539 18540 18541 48 25826 25827 25828 25829 25830 25831 25832 25833 25834 25835 25836 25837 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 25853 25854 25855 25856 25857 25858 25859 25860 25861 21866 21867 21868 21869 21870 21871 25862 25863 25864 25865 25866 25867 48 8336 8337 8338 8339 8340 8341 25868 25869 25870 25871 25872 25873 25826 25827 25828 25829 25830 25831 25862 25863 25864 25865 25866 25867 21866 21867 21868 21869 21870 21871 21860 21861 21862 21863 21864 21865 6668 6669 6670 6671 6672 6673 19256 19257 19258 19259 19260 19261 48 25874 25875 25876 25877 25878 25879 25880 25881 25882 25883 25884 25885 25886 25887 25888 25889 25890 25891 25892 25893 25894 25895 25896 25897 25838 25839 25840 25841 25842 25843 25832 25833 25834 25835 25836 25837 25826 25827 25828 25829 25830 25831 25898 25899 25900 25901 25902 25903 48 25904 25905 25906 25907 25908 25909 25910 25911 25912 25913 25914 25915 25916 25917 25918 25919 25920 25921 25922 25923 25924 25925 25926 25927 25886 25887 25888 25889 25890 25891 25880 25881 25882 25883 25884 25885 25874 25875 25876 25877 25878 25879 25928 25929 25930 25931 25932 25933 48 25934 25935 25936 25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 25957 25916 25917 25918 25919 25920 25921 25910 25911 25912 25913 25914 25915 25904 25905 25906 25907 25908 25909 25958 25959 25960 25961 25962 25963 48 13196 13197 13198 13199 13200 13201 25964 25965 25966 25967 25968 25969 25934 25935 25936 25937 25938 25939 25958 25959 25960 25961 25962 25963 25904 25905 25906 25907 25908 25909 25970 25971 25972 25973 25974 25975 11390 11391 11392 11393 11394 11395 18698 18699 18700 18701 18702 18703 36 25946 25947 25948 25949 25950 25951 25934 25935 25936 25937 25938 25939 25976 25977 25978 25979 25980 25981 25940 25941 25942 25943 25944 25945 25988 25989 25990 25991 25992 25993 25982 25983 25984 25985 25986 25987 48 14816 14817 14818 14819 14820 14821 25994 25995 25996 25997 25998 25999 25976 25977 25978 25979 25980 25981 25988 25989 25990 25991 25992 25993 25934 25935 25936 25937 25938 25939 25964 25965 25966 25967 25968 25969 13196 13197 13198 13199 13200 13201 18530 18531 18532 18533 18534 18535 48 26000 26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 21890 21891 21892 21893 21894 21895 26036 26037 26038 26039 26040 26041 48 8324 8325 8326 8327 8328 8329 26042 26043 26044 26045 26046 26047 26000 26001 26002 26003 26004 26005 26036 26037 26038 26039 26040 26041 21890 21891 21892 21893 21894 21895 21884 21885 21886 21887 21888 21889 6656 6657 6658 6659 6660 6661 19262 19263 19264 19265 19266 19267 48 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26012 26013 26014 26015 26016 26017 26006 26007 26008 26009 26010 26011 26000 26001 26002 26003 26004 26005 26072 26073 26074 26075 26076 26077 48 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26060 26061 26062 26063 26064 26065 26054 26055 26056 26057 26058 26059 26048 26049 26050 26051 26052 26053 26102 26103 26104 26105 26106 26107 48 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26090 26091 26092 26093 26094 26095 26084 26085 26086 26087 26088 26089 26078 26079 26080 26081 26082 26083 26132 26133 26134 26135 26136 26137 48 13148 13149 13150 13151 13152 13153 26138 26139 26140 26141 26142 26143 26108 26109 26110 26111 26112 26113 26132 26133 26134 26135 26136 26137 26078 26079 26080 26081 26082 26083 26144 26145 26146 26147 26148 26149 11378 11379 11380 11381 11382 11383 18704 18705 18706 18707 18708 18709 36 26120 26121 26122 26123 26124 26125 26108 26109 26110 26111 26112 26113 26150 26151 26152 26153 26154 26155 26114 26115 26116 26117 26118 26119 26162 26163 26164 26165 26166 26167 26156 26157 26158 26159 26160 26161 48 14786 14787 14788 14789 14790 14791 26168 26169 26170 26171 26172 26173 26150 26151 26152 26153 26154 26155 26162 26163 26164 26165 26166 26167 26108 26109 26110 26111 26112 26113 26138 26139 26140 26141 26142 26143 13148 13149 13150 13151 13152 13153 18524 18525 18526 18527 18528 18529 48 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 22346 22347 22348 22349 22350 22351 26210 26211 26212 26213 26214 26215 48 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26186 26187 26188 26189 26190 26191 26180 26181 26182 26183 26184 26185 26174 26175 26176 26177 26178 26179 26240 26241 26242 26243 26244 26245 48 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26228 26229 26230 26231 26232 26233 26222 26223 26224 26225 26226 26227 26216 26217 26218 26219 26220 26221 26270 26271 26272 26273 26274 26275 48 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26258 26259 26260 26261 26262 26263 26252 26253 26254 26255 26256 26257 26246 26247 26248 26249 26250 26251 26300 26301 26302 26303 26304 26305 36 26288 26289 26290 26291 26292 26293 26276 26277 26278 26279 26280 26281 26306 26307 26308 26309 26310 26311 26282 26283 26284 26285 26286 26287 26318 26319 26320 26321 26322 26323 26312 26313 26314 26315 26316 26317 48 14756 14757 14758 14759 14760 14761 26324 26325 26326 26327 26328 26329 26306 26307 26308 26309 26310 26311 26318 26319 26320 26321 26322 26323 26276 26277 26278 26279 26280 26281 26330 26331 26332 26333 26334 26335 13100 13101 13102 13103 13104 13105 18518 18519 18520 18521 18522 18523 48 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 21914 21915 21916 21917 21918 21919 26372 26373 26374 26375 26376 26377 48 8216 8217 8218 8219 8220 8221 26378 26379 26380 26381 26382 26383 26336 26337 26338 26339 26340 26341 26372 26373 26374 26375 26376 26377 21914 21915 21916 21917 21918 21919 21908 21909 21910 21911 21912 21913 6548 6549 6550 6551 6552 6553 19244 19245 19246 19247 19248 19249 48 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26348 26349 26350 26351 26352 26353 26342 26343 26344 26345 26346 26347 26336 26337 26338 26339 26340 26341 26408 26409 26410 26411 26412 26413 48 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26396 26397 26398 26399 26400 26401 26390 26391 26392 26393 26394 26395 26384 26385 26386 26387 26388 26389 26438 26439 26440 26441 26442 26443 48 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26426 26427 26428 26429 26430 26431 26420 26421 26422 26423 26424 26425 26414 26415 26416 26417 26418 26419 26468 26469 26470 26471 26472 26473 48 13052 13053 13054 13055 13056 13057 26474 26475 26476 26477 26478 26479 26444 26445 26446 26447 26448 26449 26468 26469 26470 26471 26472 26473 26414 26415 26416 26417 26418 26419 26480 26481 26482 26483 26484 26485 11270 11271 11272 11273 11274 11275 18686 18687 18688 18689 18690 18691 36 26456 26457 26458 26459 26460 26461 26444 26445 26446 26447 26448 26449 26486 26487 26488 26489 26490 26491 26450 26451 26452 26453 26454 26455 26498 26499 26500 26501 26502 26503 26492 26493 26494 26495 26496 26497 48 14726 14727 14728 14729 14730 14731 26504 26505 26506 26507 26508 26509 26486 26487 26488 26489 26490 26491 26498 26499 26500 26501 26502 26503 26444 26445 26446 26447 26448 26449 26474 26475 26476 26477 26478 26479 13052 13053 13054 13055 13056 13057 18512 18513 18514 18515 18516 18517 48 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 21938 21939 21940 21941 21942 21943 26546 26547 26548 26549 26550 26551 48 8204 8205 8206 8207 8208 8209 26552 26553 26554 26555 26556 26557 26510 26511 26512 26513 26514 26515 26546 26547 26548 26549 26550 26551 21938 21939 21940 21941 21942 21943 21932 21933 21934 21935 21936 21937 6536 6537 6538 6539 6540 6541 19250 19251 19252 19253 19254 19255 48 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26522 26523 26524 26525 26526 26527 26516 26517 26518 26519 26520 26521 26510 26511 26512 26513 26514 26515 26582 26583 26584 26585 26586 26587 48 18866 18867 18868 18869 18870 18871 26588 26589 26590 26591 26592 26593 26558 26559 26560 26561 26562 26563 26582 26583 26584 26585 26586 26587 26510 26511 26512 26513 26514 26515 26552 26553 26554 26555 26556 26557 8204 8205 8206 8207 8208 8209 19118 19119 19120 19121 19122 19123 48 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26570 26571 26572 26573 26574 26575 26564 26565 26566 26567 26568 26569 26558 26559 26560 26561 26562 26563 26618 26619 26620 26621 26622 26623 48 11258 11259 11260 11261 11262 11263 26624 26625 26626 26627 26628 26629 26594 26595 26596 26597 26598 26599 26618 26619 26620 26621 26622 26623 26558 26559 26560 26561 26562 26563 26588 26589 26590 26591 26592 26593 18866 18867 18868 18869 18870 18871 18878 18879 18880 18881 18882 18883 48 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26606 26607 26608 26609 26610 26611 26600 26601 26602 26603 26604 26605 26594 26595 26596 26597 26598 26599 26654 26655 26656 26657 26658 26659 48 13004 13005 13006 13007 13008 13009 26660 26661 26662 26663 26664 26665 26630 26631 26632 26633 26634 26635 26654 26655 26656 26657 26658 26659 26594 26595 26596 26597 26598 26599 26624 26625 26626 26627 26628 26629 11258 11259 11260 11261 11262 11263 18692 18693 18694 18695 18696 18697 36 26642 26643 26644 26645 26646 26647 26630 26631 26632 26633 26634 26635 26666 26667 26668 26669 26670 26671 26636 26637 26638 26639 26640 26641 26678 26679 26680 26681 26682 26683 26672 26673 26674 26675 26676 26677 48 14696 14697 14698 14699 14700 14701 26684 26685 26686 26687 26688 26689 26666 26667 26668 26669 26670 26671 26678 26679 26680 26681 26682 26683 26630 26631 26632 26633 26634 26635 26660 26661 26662 26663 26664 26665 13004 13005 13006 13007 13008 13009 18506 18507 18508 18509 18510 18511 48 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 22376 22377 22378 22379 22380 22381 26726 26727 26728 26729 26730 26731 48 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26702 26703 26704 26705 26706 26707 26696 26697 26698 26699 26700 26701 26690 26691 26692 26693 26694 26695 26756 26757 26758 26759 26760 26761 48 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26744 26745 26746 26747 26748 26749 26738 26739 26740 26741 26742 26743 26732 26733 26734 26735 26736 26737 26786 26787 26788 26789 26790 26791 48 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26774 26775 26776 26777 26778 26779 26768 26769 26770 26771 26772 26773 26762 26763 26764 26765 26766 26767 26816 26817 26818 26819 26820 26821 36 26804 26805 26806 26807 26808 26809 26792 26793 26794 26795 26796 26797 26822 26823 26824 26825 26826 26827 26798 26799 26800 26801 26802 26803 26834 26835 26836 26837 26838 26839 26828 26829 26830 26831 26832 26833 48 14666 14667 14668 14669 14670 14671 26840 26841 26842 26843 26844 26845 26822 26823 26824 26825 26826 26827 26834 26835 26836 26837 26838 26839 26792 26793 26794 26795 26796 26797 26846 26847 26848 26849 26850 26851 12956 12957 12958 12959 12960 12961 18500 18501 18502 18503 18504 18505 48 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 21962 21963 21964 21965 21966 21967 26888 26889 26890 26891 26892 26893 48 8096 8097 8098 8099 8100 8101 26894 26895 26896 26897 26898 26899 26852 26853 26854 26855 26856 26857 26888 26889 26890 26891 26892 26893 21962 21963 21964 21965 21966 21967 21956 21957 21958 21959 21960 21961 6428 6429 6430 6431 6432 6433 19232 19233 19234 19235 19236 19237 48 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26864 26865 26866 26867 26868 26869 26858 26859 26860 26861 26862 26863 26852 26853 26854 26855 26856 26857 26924 26925 26926 26927 26928 26929 48 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26912 26913 26914 26915 26916 26917 26906 26907 26908 26909 26910 26911 26900 26901 26902 26903 26904 26905 26954 26955 26956 26957 26958 26959 48 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26942 26943 26944 26945 26946 26947 26936 26937 26938 26939 26940 26941 26930 26931 26932 26933 26934 26935 26984 26985 26986 26987 26988 26989 48 12908 12909 12910 12911 12912 12913 26990 26991 26992 26993 26994 26995 26960 26961 26962 26963 26964 26965 26984 26985 26986 26987 26988 26989 26930 26931 26932 26933 26934 26935 26996 26997 26998 26999 27000 27001 11150 11151 11152 11153 11154 11155 18674 18675 18676 18677 18678 18679 36 26972 26973 26974 26975 26976 26977 26960 26961 26962 26963 26964 26965 27002 27003 27004 27005 27006 27007 26966 26967 26968 26969 26970 26971 27014 27015 27016 27017 27018 27019 27008 27009 27010 27011 27012 27013 48 14636 14637 14638 14639 14640 14641 27020 27021 27022 27023 27024 27025 27002 27003 27004 27005 27006 27007 27014 27015 27016 27017 27018 27019 26960 26961 26962 26963 26964 26965 26990 26991 26992 26993 26994 26995 12908 12909 12910 12911 12912 12913 18494 18495 18496 18497 18498 18499 48 27026 27027 27028 27029 27030 27031 27032 27033 27034 27035 27036 27037 27038 27039 27040 27041 27042 27043 27044 27045 27046 27047 27048 27049 27050 27051 27052 27053 27054 27055 27056 27057 27058 27059 27060 27061 21986 21987 21988 21989 21990 21991 27062 27063 27064 27065 27066 27067 48 8084 8085 8086 8087 8088 8089 27068 27069 27070 27071 27072 27073 27026 27027 27028 27029 27030 27031 27062 27063 27064 27065 27066 27067 21986 21987 21988 21989 21990 21991 21980 21981 21982 21983 21984 21985 6416 6417 6418 6419 6420 6421 19238 19239 19240 19241 19242 19243 48 27074 27075 27076 27077 27078 27079 27080 27081 27082 27083 27084 27085 27086 27087 27088 27089 27090 27091 27092 27093 27094 27095 27096 27097 27038 27039 27040 27041 27042 27043 27032 27033 27034 27035 27036 27037 27026 27027 27028 27029 27030 27031 27098 27099 27100 27101 27102 27103 48 27104 27105 27106 27107 27108 27109 27110 27111 27112 27113 27114 27115 27116 27117 27118 27119 27120 27121 27122 27123 27124 27125 27126 27127 27086 27087 27088 27089 27090 27091 27080 27081 27082 27083 27084 27085 27074 27075 27076 27077 27078 27079 27128 27129 27130 27131 27132 27133 48 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146 27147 27148 27149 27150 27151 27152 27153 27154 27155 27156 27157 27116 27117 27118 27119 27120 27121 27110 27111 27112 27113 27114 27115 27104 27105 27106 27107 27108 27109 27158 27159 27160 27161 27162 27163 48 12860 12861 12862 12863 12864 12865 27164 27165 27166 27167 27168 27169 27134 27135 27136 27137 27138 27139 27158 27159 27160 27161 27162 27163 27104 27105 27106 27107 27108 27109 27170 27171 27172 27173 27174 27175 11138 11139 11140 11141 11142 11143 18680 18681 18682 18683 18684 18685 36 27146 27147 27148 27149 27150 27151 27134 27135 27136 27137 27138 27139 27176 27177 27178 27179 27180 27181 27140 27141 27142 27143 27144 27145 27188 27189 27190 27191 27192 27193 27182 27183 27184 27185 27186 27187 48 14606 14607 14608 14609 14610 14611 27194 27195 27196 27197 27198 27199 27176 27177 27178 27179 27180 27181 27188 27189 27190 27191 27192 27193 27134 27135 27136 27137 27138 27139 27164 27165 27166 27167 27168 27169 12860 12861 12862 12863 12864 12865 18488 18489 18490 18491 18492 18493 48 27200 27201 27202 27203 27204 27205 27206 27207 27208 27209 27210 27211 27212 27213 27214 27215 27216 27217 27218 27219 27220 27221 27222 27223 27224 27225 27226 27227 27228 27229 27230 27231 27232 27233 27234 27235 22406 22407 22408 22409 22410 22411 27236 27237 27238 27239 27240 27241 48 27242 27243 27244 27245 27246 27247 27248 27249 27250 27251 27252 27253 27254 27255 27256 27257 27258 27259 27260 27261 27262 27263 27264 27265 27212 27213 27214 27215 27216 27217 27206 27207 27208 27209 27210 27211 27200 27201 27202 27203 27204 27205 27266 27267 27268 27269 27270 27271 48 27272 27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 27284 27285 27286 27287 27288 27289 27290 27291 27292 27293 27294 27295 27254 27255 27256 27257 27258 27259 27248 27249 27250 27251 27252 27253 27242 27243 27244 27245 27246 27247 27296 27297 27298 27299 27300 27301 48 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316 27317 27318 27319 27320 27321 27322 27323 27324 27325 27284 27285 27286 27287 27288 27289 27278 27279 27280 27281 27282 27283 27272 27273 27274 27275 27276 27277 27326 27327 27328 27329 27330 27331 36 27314 27315 27316 27317 27318 27319 27302 27303 27304 27305 27306 27307 27332 27333 27334 27335 27336 27337 27308 27309 27310 27311 27312 27313 27344 27345 27346 27347 27348 27349 27338 27339 27340 27341 27342 27343 48 14576 14577 14578 14579 14580 14581 27350 27351 27352 27353 27354 27355 27332 27333 27334 27335 27336 27337 27344 27345 27346 27347 27348 27349 27302 27303 27304 27305 27306 27307 27356 27357 27358 27359 27360 27361 12812 12813 12814 12815 12816 12817 18482 18483 18484 18485 18486 18487 48 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 27380 27381 27382 27383 27384 27385 27386 27387 27388 27389 27390 27391 27392 27393 27394 27395 27396 27397 22010 22011 22012 22013 22014 22015 27398 27399 27400 27401 27402 27403 48 7976 7977 7978 7979 7980 7981 27404 27405 27406 27407 27408 27409 27362 27363 27364 27365 27366 27367 27398 27399 27400 27401 27402 27403 22010 22011 22012 22013 22014 22015 22004 22005 22006 22007 22008 22009 6308 6309 6310 6311 6312 6313 19220 19221 19222 19223 19224 19225 48 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 27428 27429 27430 27431 27432 27433 27374 27375 27376 27377 27378 27379 27368 27369 27370 27371 27372 27373 27362 27363 27364 27365 27366 27367 27434 27435 27436 27437 27438 27439 48 9614 9615 9616 9617 9618 9619 27440 27441 27442 27443 27444 27445 27410 27411 27412 27413 27414 27415 27434 27435 27436 27437 27438 27439 27362 27363 27364 27365 27366 27367 27404 27405 27406 27407 27408 27409 7976 7977 7978 7979 7980 7981 19088 19089 19090 19091 19092 19093 48 27446 27447 27448 27449 27450 27451 27452 27453 27454 27455 27456 27457 27458 27459 27460 27461 27462 27463 27464 27465 27466 27467 27468 27469 27422 27423 27424 27425 27426 27427 27416 27417 27418 27419 27420 27421 27410 27411 27412 27413 27414 27415 27470 27471 27472 27473 27474 27475 48 11030 11031 11032 11033 11034 11035 27476 27477 27478 27479 27480 27481 27446 27447 27448 27449 27450 27451 27470 27471 27472 27473 27474 27475 27410 27411 27412 27413 27414 27415 27440 27441 27442 27443 27444 27445 9614 9615 9616 9617 9618 9619 18812 18813 18814 18815 18816 18817 48 27482 27483 27484 27485 27486 27487 27488 27489 27490 27491 27492 27493 27494 27495 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27458 27459 27460 27461 27462 27463 27452 27453 27454 27455 27456 27457 27446 27447 27448 27449 27450 27451 27506 27507 27508 27509 27510 27511 48 12764 12765 12766 12767 12768 12769 27512 27513 27514 27515 27516 27517 27482 27483 27484 27485 27486 27487 27506 27507 27508 27509 27510 27511 27446 27447 27448 27449 27450 27451 27476 27477 27478 27479 27480 27481 11030 11031 11032 11033 11034 11035 18662 18663 18664 18665 18666 18667 36 27494 27495 27496 27497 27498 27499 27482 27483 27484 27485 27486 27487 27518 27519 27520 27521 27522 27523 27488 27489 27490 27491 27492 27493 27530 27531 27532 27533 27534 27535 27524 27525 27526 27527 27528 27529 48 14546 14547 14548 14549 14550 14551 27536 27537 27538 27539 27540 27541 27518 27519 27520 27521 27522 27523 27530 27531 27532 27533 27534 27535 27482 27483 27484 27485 27486 27487 27512 27513 27514 27515 27516 27517 12764 12765 12766 12767 12768 12769 18476 18477 18478 18479 18480 18481 48 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 27554 27555 27556 27557 27558 27559 27560 27561 27562 27563 27564 27565 27566 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 22034 22035 22036 22037 22038 22039 27578 27579 27580 27581 27582 27583 48 7964 7965 7966 7967 7968 7969 27584 27585 27586 27587 27588 27589 27542 27543 27544 27545 27546 27547 27578 27579 27580 27581 27582 27583 22034 22035 22036 22037 22038 22039 22028 22029 22030 22031 22032 22033 6296 6297 6298 6299 6300 6301 19226 19227 19228 19229 19230 19231 48 27590 27591 27592 27593 27594 27595 27596 27597 27598 27599 27600 27601 27602 27603 27604 27605 27606 27607 27608 27609 27610 27611 27612 27613 27554 27555 27556 27557 27558 27559 27548 27549 27550 27551 27552 27553 27542 27543 27544 27545 27546 27547 27614 27615 27616 27617 27618 27619 48 9602 9603 9604 9605 9606 9607 27620 27621 27622 27623 27624 27625 27590 27591 27592 27593 27594 27595 27614 27615 27616 27617 27618 27619 27542 27543 27544 27545 27546 27547 27584 27585 27586 27587 27588 27589 7964 7965 7966 7967 7968 7969 19094 19095 19096 19097 19098 19099 48 27626 27627 27628 27629 27630 27631 27632 27633 27634 27635 27636 27637 27638 27639 27640 27641 27642 27643 27644 27645 27646 27647 27648 27649 27602 27603 27604 27605 27606 27607 27596 27597 27598 27599 27600 27601 27590 27591 27592 27593 27594 27595 27650 27651 27652 27653 27654 27655 48 11018 11019 11020 11021 11022 11023 27656 27657 27658 27659 27660 27661 27626 27627 27628 27629 27630 27631 27650 27651 27652 27653 27654 27655 27590 27591 27592 27593 27594 27595 27620 27621 27622 27623 27624 27625 9602 9603 9604 9605 9606 9607 18818 18819 18820 18821 18822 18823 48 27662 27663 27664 27665 27666 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 27677 27678 27679 27680 27681 27682 27683 27684 27685 27638 27639 27640 27641 27642 27643 27632 27633 27634 27635 27636 27637 27626 27627 27628 27629 27630 27631 27686 27687 27688 27689 27690 27691 48 12716 12717 12718 12719 12720 12721 27692 27693 27694 27695 27696 27697 27662 27663 27664 27665 27666 27667 27686 27687 27688 27689 27690 27691 27626 27627 27628 27629 27630 27631 27656 27657 27658 27659 27660 27661 11018 11019 11020 11021 11022 11023 18668 18669 18670 18671 18672 18673 36 27674 27675 27676 27677 27678 27679 27662 27663 27664 27665 27666 27667 27698 27699 27700 27701 27702 27703 27668 27669 27670 27671 27672 27673 27710 27711 27712 27713 27714 27715 27704 27705 27706 27707 27708 27709 48 14516 14517 14518 14519 14520 14521 27716 27717 27718 27719 27720 27721 27698 27699 27700 27701 27702 27703 27710 27711 27712 27713 27714 27715 27662 27663 27664 27665 27666 27667 27692 27693 27694 27695 27696 27697 12716 12717 12718 12719 12720 12721 18470 18471 18472 18473 18474 18475 48 27722 27723 27724 27725 27726 27727 27728 27729 27730 27731 27732 27733 27734 27735 27736 27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 27747 27748 27749 27750 27751 27752 27753 27754 27755 27756 27757 22436 22437 22438 22439 22440 22441 27758 27759 27760 27761 27762 27763 48 27764 27765 27766 27767 27768 27769 27770 27771 27772 27773 27774 27775 27776 27777 27778 27779 27780 27781 27782 27783 27784 27785 27786 27787 27734 27735 27736 27737 27738 27739 27728 27729 27730 27731 27732 27733 27722 27723 27724 27725 27726 27727 27788 27789 27790 27791 27792 27793 48 27794 27795 27796 27797 27798 27799 27800 27801 27802 27803 27804 27805 27806 27807 27808 27809 27810 27811 27812 27813 27814 27815 27816 27817 27776 27777 27778 27779 27780 27781 27770 27771 27772 27773 27774 27775 27764 27765 27766 27767 27768 27769 27818 27819 27820 27821 27822 27823 48 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27806 27807 27808 27809 27810 27811 27800 27801 27802 27803 27804 27805 27794 27795 27796 27797 27798 27799 27848 27849 27850 27851 27852 27853 36 27836 27837 27838 27839 27840 27841 27824 27825 27826 27827 27828 27829 27854 27855 27856 27857 27858 27859 27830 27831 27832 27833 27834 27835 27866 27867 27868 27869 27870 27871 27860 27861 27862 27863 27864 27865 48 14486 14487 14488 14489 14490 14491 27872 27873 27874 27875 27876 27877 27854 27855 27856 27857 27858 27859 27866 27867 27868 27869 27870 27871 27824 27825 27826 27827 27828 27829 27878 27879 27880 27881 27882 27883 12668 12669 12670 12671 12672 12673 18464 18465 18466 18467 18468 18469 48 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 22058 22059 22060 22061 22062 22063 27920 27921 27922 27923 27924 27925 48 7856 7857 7858 7859 7860 7861 27926 27927 27928 27929 27930 27931 27884 27885 27886 27887 27888 27889 27920 27921 27922 27923 27924 27925 22058 22059 22060 22061 22062 22063 22052 22053 22054 22055 22056 22057 6188 6189 6190 6191 6192 6193 19208 19209 19210 19211 19212 19213 48 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27896 27897 27898 27899 27900 27901 27890 27891 27892 27893 27894 27895 27884 27885 27886 27887 27888 27889 27956 27957 27958 27959 27960 27961 48 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27944 27945 27946 27947 27948 27949 27938 27939 27940 27941 27942 27943 27932 27933 27934 27935 27936 27937 27986 27987 27988 27989 27990 27991 48 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 27974 27975 27976 27977 27978 27979 27968 27969 27970 27971 27972 27973 27962 27963 27964 27965 27966 27967 28016 28017 28018 28019 28020 28021 48 12620 12621 12622 12623 12624 12625 28022 28023 28024 28025 28026 28027 27992 27993 27994 27995 27996 27997 28016 28017 28018 28019 28020 28021 27962 27963 27964 27965 27966 27967 28028 28029 28030 28031 28032 28033 10910 10911 10912 10913 10914 10915 18650 18651 18652 18653 18654 18655 36 28004 28005 28006 28007 28008 28009 27992 27993 27994 27995 27996 27997 28034 28035 28036 28037 28038 28039 27998 27999 28000 28001 28002 28003 28046 28047 28048 28049 28050 28051 28040 28041 28042 28043 28044 28045 48 14456 14457 14458 14459 14460 14461 28052 28053 28054 28055 28056 28057 28034 28035 28036 28037 28038 28039 28046 28047 28048 28049 28050 28051 27992 27993 27994 27995 27996 27997 28022 28023 28024 28025 28026 28027 12620 12621 12622 12623 12624 12625 18458 18459 18460 18461 18462 18463 48 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 28087 28088 28089 28090 28091 28092 28093 22082 22083 22084 22085 22086 22087 28094 28095 28096 28097 28098 28099 48 7844 7845 7846 7847 7848 7849 28100 28101 28102 28103 28104 28105 28058 28059 28060 28061 28062 28063 28094 28095 28096 28097 28098 28099 22082 22083 22084 22085 22086 22087 22076 22077 22078 22079 22080 22081 6176 6177 6178 6179 6180 6181 19214 19215 19216 19217 19218 19219 48 28106 28107 28108 28109 28110 28111 28112 28113 28114 28115 28116 28117 28118 28119 28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 28070 28071 28072 28073 28074 28075 28064 28065 28066 28067 28068 28069 28058 28059 28060 28061 28062 28063 28130 28131 28132 28133 28134 28135 48 28136 28137 28138 28139 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 28152 28153 28154 28155 28156 28157 28158 28159 28118 28119 28120 28121 28122 28123 28112 28113 28114 28115 28116 28117 28106 28107 28108 28109 28110 28111 28160 28161 28162 28163 28164 28165 48 28166 28167 28168 28169 28170 28171 28172 28173 28174 28175 28176 28177 28178 28179 28180 28181 28182 28183 28184 28185 28186 28187 28188 28189 28148 28149 28150 28151 28152 28153 28142 28143 28144 28145 28146 28147 28136 28137 28138 28139 28140 28141 28190 28191 28192 28193 28194 28195 48 12572 12573 12574 12575 12576 12577 28196 28197 28198 28199 28200 28201 28166 28167 28168 28169 28170 28171 28190 28191 28192 28193 28194 28195 28136 28137 28138 28139 28140 28141 28202 28203 28204 28205 28206 28207 10898 10899 10900 10901 10902 10903 18656 18657 18658 18659 18660 18661 36 28178 28179 28180 28181 28182 28183 28166 28167 28168 28169 28170 28171 28208 28209 28210 28211 28212 28213 28172 28173 28174 28175 28176 28177 28220 28221 28222 28223 28224 28225 28214 28215 28216 28217 28218 28219 48 14426 14427 14428 14429 14430 14431 28226 28227 28228 28229 28230 28231 28208 28209 28210 28211 28212 28213 28220 28221 28222 28223 28224 28225 28166 28167 28168 28169 28170 28171 28196 28197 28198 28199 28200 28201 12572 12573 12574 12575 12576 12577 18452 18453 18454 18455 18456 18457 48 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 28249 28250 28251 28252 28253 28254 28255 28256 28257 28258 28259 28260 28261 28262 28263 28264 28265 28266 28267 22466 22467 22468 22469 22470 22471 28268 28269 28270 28271 28272 28273 48 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 28285 28286 28287 28288 28289 28290 28291 28292 28293 28294 28295 28296 28297 28244 28245 28246 28247 28248 28249 28238 28239 28240 28241 28242 28243 28232 28233 28234 28235 28236 28237 28298 28299 28300 28301 28302 28303 48 28304 28305 28306 28307 28308 28309 28310 28311 28312 28313 28314 28315 28316 28317 28318 28319 28320 28321 28322 28323 28324 28325 28326 28327 28286 28287 28288 28289 28290 28291 28280 28281 28282 28283 28284 28285 28274 28275 28276 28277 28278 28279 28328 28329 28330 28331 28332 28333 48 28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28316 28317 28318 28319 28320 28321 28310 28311 28312 28313 28314 28315 28304 28305 28306 28307 28308 28309 28358 28359 28360 28361 28362 28363 36 28346 28347 28348 28349 28350 28351 28334 28335 28336 28337 28338 28339 28364 28365 28366 28367 28368 28369 28340 28341 28342 28343 28344 28345 28376 28377 28378 28379 28380 28381 28370 28371 28372 28373 28374 28375 48 14396 14397 14398 14399 14400 14401 28382 28383 28384 28385 28386 28387 28364 28365 28366 28367 28368 28369 28376 28377 28378 28379 28380 28381 28334 28335 28336 28337 28338 28339 28388 28389 28390 28391 28392 28393 12524 12525 12526 12527 12528 12529 18446 18447 18448 18449 18450 18451 48 20780 20781 20782 20783 20784 20785 28394 28395 28396 28397 28398 28399 28400 28401 28402 28403 28404 28405 28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 20666 20667 20668 20669 20670 20671 28424 28425 28426 28427 28428 28429 48 19370 19371 19372 19373 19374 19375 20798 20799 20800 20801 20802 20803 20780 20781 20782 20783 20784 20785 28424 28425 28426 28427 28428 28429 20666 20667 20668 20669 20670 20671 20684 20685 20686 20687 20688 20689 19382 19383 19384 19385 19386 19387 19394 19395 19396 19397 19398 19399 48 20894 20895 20896 20897 20898 20899 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28400 28401 28402 28403 28404 28405 28394 28395 28396 28397 28398 28399 20780 20781 20782 20783 20784 20785 28448 28449 28450 28451 28452 28453 48 21008 21009 21010 21011 21012 21013 28454 28455 28456 28457 28458 28459 28460 28461 28462 28463 28464 28465 28466 28467 28468 28469 28470 28471 28436 28437 28438 28439 28440 28441 28430 28431 28432 28433 28434 28435 20894 20895 20896 20897 20898 20899 28472 28473 28474 28475 28476 28477 48 28478 28479 28480 28481 28482 28483 28484 28485 28486 28487 28488 28489 28490 28491 28492 28493 28494 28495 28496 28497 28498 28499 28500 28501 28460 28461 28462 28463 28464 28465 28454 28455 28456 28457 28458 28459 21008 21009 21010 21011 21012 21013 28502 28503 28504 28505 28506 28507 48 12476 12477 12478 12479 12480 12481 28508 28509 28510 28511 28512 28513 28478 28479 28480 28481 28482 28483 28502 28503 28504 28505 28506 28507 21008 21009 21010 21011 21012 21013 21026 21027 21028 21029 21030 21031 19352 19353 19354 19355 19356 19357 19364 19365 19366 19367 19368 19369 36 28490 28491 28492 28493 28494 28495 28478 28479 28480 28481 28482 28483 28514 28515 28516 28517 28518 28519 28484 28485 28486 28487 28488 28489 28526 28527 28528 28529 28530 28531 28520 28521 28522 28523 28524 28525 48 14366 14367 14368 14369 14370 14371 28532 28533 28534 28535 28536 28537 28514 28515 28516 28517 28518 28519 28526 28527 28528 28529 28530 28531 28478 28479 28480 28481 28482 28483 28508 28509 28510 28511 28512 28513 12476 12477 12478 12479 12480 12481 18440 18441 18442 18443 18444 18445 48 20768 20769 20770 20771 20772 20773 28538 28539 28540 28541 28542 28543 28544 28545 28546 28547 28548 28549 28550 28551 28552 28553 28554 28555 21158 21159 21160 21161 21162 21163 21374 21375 21376 21377 21378 21379 20654 20655 20656 20657 20658 20659 28556 28557 28558 28559 28560 28561 48 20882 20883 20884 20885 20886 20887 28562 28563 28564 28565 28566 28567 28568 28569 28570 28571 28572 28573 28574 28575 28576 28577 28578 28579 28544 28545 28546 28547 28548 28549 28538 28539 28540 28541 28542 28543 20768 20769 20770 20771 20772 20773 28580 28581 28582 28583 28584 28585 48 20996 20997 20998 20999 21000 21001 28586 28587 28588 28589 28590 28591 28592 28593 28594 28595 28596 28597 28598 28599 28600 28601 28602 28603 28568 28569 28570 28571 28572 28573 28562 28563 28564 28565 28566 28567 20882 20883 20884 20885 20886 20887 28604 28605 28606 28607 28608 28609 48 961 962 963 964 965 966 28610 28611 28612 28613 28614 28615 28616 28617 28618 28619 28620 28621 28622 28623 28624 28625 28626 28627 28592 28593 28594 28595 28596 28597 28586 28587 28588 28589 28590 28591 20996 20997 20998 20999 21000 21001 28628 28629 28630 28631 28632 28633 36 28616 28617 28618 28619 28620 28621 961 962 963 964 965 966 28634 28635 28636 28637 28638 28639 28610 28611 28612 28613 28614 28615 28646 28647 28648 28649 28650 28651 28640 28641 28642 28643 28644 28645 48 14336 14337 14338 14339 14340 14341 28652 28653 28654 28655 28656 28657 28634 28635 28636 28637 28638 28639 28646 28647 28648 28649 28650 28651 961 962 963 964 965 966 28658 28659 28660 28661 28662 28663 12434 12435 12436 12437 12438 12439 18434 18435 18436 18437 18438 18439 48 20810 20811 20812 20813 20814 20815 28664 28665 28666 28667 28668 28669 28670 28671 28672 28673 28674 28675 28676 28677 28678 28679 28680 28681 21134 21135 21136 21137 21138 21139 21440 21441 21442 21443 21444 21445 20696 20697 20698 20699 20700 20701 28682 28683 28684 28685 28686 28687 48 20924 20925 20926 20927 20928 20929 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28670 28671 28672 28673 28674 28675 28664 28665 28666 28667 28668 28669 20810 20811 20812 20813 20814 20815 28706 28707 28708 28709 28710 28711 48 21038 21039 21040 21041 21042 21043 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 28728 28729 28694 28695 28696 28697 28698 28699 28688 28689 28690 28691 28692 28693 20924 20925 20926 20927 20928 20929 28730 28731 28732 28733 28734 28735 48 967 968 969 970 971 972 28736 28737 28738 28739 28740 28741 28742 28743 28744 28745 28746 28747 28748 28749 28750 28751 28752 28753 28718 28719 28720 28721 28722 28723 28712 28713 28714 28715 28716 28717 21038 21039 21040 21041 21042 21043 28754 28755 28756 28757 28758 28759 36 28742 28743 28744 28745 28746 28747 967 968 969 970 971 972 28760 28761 28762 28763 28764 28765 28736 28737 28738 28739 28740 28741 28772 28773 28774 28775 28776 28777 28766 28767 28768 28769 28770 28771 48 14306 14307 14308 14309 14310 14311 28778 28779 28780 28781 28782 28783 28760 28761 28762 28763 28764 28765 28772 28773 28774 28775 28776 28777 967 968 969 970 971 972 28784 28785 28786 28787 28788 28789 12392 12393 12394 12395 12396 12397 18428 18429 18430 18431 18432 18433 48 20834 20835 20836 20837 20838 20839 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 21176 21177 21178 21179 21180 21181 21542 21543 21544 21545 21546 21547 20720 20721 20722 20723 20724 20725 28808 28809 28810 28811 28812 28813 48 20948 20949 20950 20951 20952 20953 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823 28824 28825 28826 28827 28828 28829 28830 28831 28796 28797 28798 28799 28800 28801 28790 28791 28792 28793 28794 28795 20834 20835 20836 20837 20838 20839 28832 28833 28834 28835 28836 28837 48 21062 21063 21064 21065 21066 21067 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854 28855 28820 28821 28822 28823 28824 28825 28814 28815 28816 28817 28818 28819 20948 20949 20950 20951 20952 20953 28856 28857 28858 28859 28860 28861 48 973 974 975 976 977 978 28862 28863 28864 28865 28866 28867 28868 28869 28870 28871 28872 28873 28874 28875 28876 28877 28878 28879 28844 28845 28846 28847 28848 28849 28838 28839 28840 28841 28842 28843 21062 21063 21064 21065 21066 21067 28880 28881 28882 28883 28884 28885 36 28868 28869 28870 28871 28872 28873 973 974 975 976 977 978 28886 28887 28888 28889 28890 28891 28862 28863 28864 28865 28866 28867 28898 28899 28900 28901 28902 28903 28892 28893 28894 28895 28896 28897 48 14276 14277 14278 14279 14280 14281 28904 28905 28906 28907 28908 28909 28886 28887 28888 28889 28890 28891 28898 28899 28900 28901 28902 28903 973 974 975 976 977 978 28910 28911 28912 28913 28914 28915 12350 12351 12352 12353 12354 12355 18422 18423 18424 18425 18426 18427 48 20858 20859 20860 20861 20862 20863 28916 28917 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 28928 28929 28930 28931 28932 28933 28934 28935 28936 28937 28938 28939 28940 28941 28942 28943 28944 28945 20744 20745 20746 20747 20748 20749 28946 28947 28948 28949 28950 28951 48 20972 20973 20974 20975 20976 20977 28952 28953 28954 28955 28956 28957 28958 28959 28960 28961 28962 28963 28964 28965 28966 28967 28968 28969 28922 28923 28924 28925 28926 28927 28916 28917 28918 28919 28920 28921 20858 20859 20860 20861 20862 20863 28970 28971 28972 28973 28974 28975 48 21086 21087 21088 21089 21090 21091 28976 28977 28978 28979 28980 28981 28982 28983 28984 28985 28986 28987 28988 28989 28990 28991 28992 28993 28958 28959 28960 28961 28962 28963 28952 28953 28954 28955 28956 28957 20972 20973 20974 20975 20976 20977 28994 28995 28996 28997 28998 28999 48 979 980 981 982 983 984 29000 29001 29002 29003 29004 29005 29006 29007 29008 29009 29010 29011 29012 29013 29014 29015 29016 29017 28982 28983 28984 28985 28986 28987 28976 28977 28978 28979 28980 28981 21086 21087 21088 21089 21090 21091 29018 29019 29020 29021 29022 29023 36 29006 29007 29008 29009 29010 29011 979 980 981 982 983 984 29024 29025 29026 29027 29028 29029 29000 29001 29002 29003 29004 29005 29036 29037 29038 29039 29040 29041 29030 29031 29032 29033 29034 29035 48 14246 14247 14248 14249 14250 14251 29042 29043 29044 29045 29046 29047 29024 29025 29026 29027 29028 29029 29036 29037 29038 29039 29040 29041 979 980 981 982 983 984 29048 29049 29050 29051 29052 29053 12308 12309 12310 12311 12312 12313 18416 18417 18418 18419 18420 18421 48 29054 29055 29056 29057 29058 29059 29060 29061 29062 29063 29064 29065 29066 29067 29068 29069 29070 29071 29072 29073 29074 29075 29076 29077 29078 29079 29080 29081 29082 29083 29084 29085 29086 29087 29088 29089 22514 22515 22516 22517 22518 22519 29090 29091 29092 29093 29094 29095 48 29096 29097 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 29111 29112 29113 29114 29115 29116 29117 29118 29119 29066 29067 29068 29069 29070 29071 29060 29061 29062 29063 29064 29065 29054 29055 29056 29057 29058 29059 29120 29121 29122 29123 29124 29125 48 29126 29127 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 29138 29139 29140 29141 29142 29143 29144 29145 29146 29147 29148 29149 29108 29109 29110 29111 29112 29113 29102 29103 29104 29105 29106 29107 29096 29097 29098 29099 29100 29101 29150 29151 29152 29153 29154 29155 48 985 986 987 988 989 990 29156 29157 29158 29159 29160 29161 29162 29163 29164 29165 29166 29167 29168 29169 29170 29171 29172 29173 29138 29139 29140 29141 29142 29143 29132 29133 29134 29135 29136 29137 29126 29127 29128 29129 29130 29131 29174 29175 29176 29177 29178 29179 36 29162 29163 29164 29165 29166 29167 985 986 987 988 989 990 29180 29181 29182 29183 29184 29185 29156 29157 29158 29159 29160 29161 29192 29193 29194 29195 29196 29197 29186 29187 29188 29189 29190 29191 48 14216 14217 14218 14219 14220 14221 29198 29199 29200 29201 29202 29203 29180 29181 29182 29183 29184 29185 29192 29193 29194 29195 29196 29197 985 986 987 988 989 990 29204 29205 29206 29207 29208 29209 12266 12267 12268 12269 12270 12271 18410 18411 18412 18413 18414 18415 48 29210 29211 29212 29213 29214 29215 29216 29217 29218 29219 29220 29221 29222 29223 29224 29225 29226 29227 29228 29229 29230 29231 29232 29233 29234 29235 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 22532 22533 22534 22535 22536 22537 29246 29247 29248 29249 29250 29251 48 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 29262 29263 29264 29265 29266 29267 29268 29269 29270 29271 29272 29273 29274 29275 29222 29223 29224 29225 29226 29227 29216 29217 29218 29219 29220 29221 29210 29211 29212 29213 29214 29215 29276 29277 29278 29279 29280 29281 48 29282 29283 29284 29285 29286 29287 29288 29289 29290 29291 29292 29293 29294 29295 29296 29297 29298 29299 29300 29301 29302 29303 29304 29305 29264 29265 29266 29267 29268 29269 29258 29259 29260 29261 29262 29263 29252 29253 29254 29255 29256 29257 29306 29307 29308 29309 29310 29311 48 991 992 993 994 995 996 29312 29313 29314 29315 29316 29317 29318 29319 29320 29321 29322 29323 29324 29325 29326 29327 29328 29329 29294 29295 29296 29297 29298 29299 29288 29289 29290 29291 29292 29293 29282 29283 29284 29285 29286 29287 29330 29331 29332 29333 29334 29335 36 29318 29319 29320 29321 29322 29323 991 992 993 994 995 996 29336 29337 29338 29339 29340 29341 29312 29313 29314 29315 29316 29317 29348 29349 29350 29351 29352 29353 29342 29343 29344 29345 29346 29347 48 14186 14187 14188 14189 14190 14191 29354 29355 29356 29357 29358 29359 29336 29337 29338 29339 29340 29341 29348 29349 29350 29351 29352 29353 991 992 993 994 995 996 29360 29361 29362 29363 29364 29365 12200 12201 12202 12203 12204 12205 18404 18405 18406 18407 18408 18409 48 29366 29367 29368 29369 29370 29371 29372 29373 29374 29375 29376 29377 29378 29379 29380 29381 29382 29383 29384 29385 29386 29387 29388 29389 29390 29391 29392 29393 29394 29395 29396 29397 29398 29399 29400 29401 22118 22119 22120 22121 22122 22123 29402 29403 29404 29405 29406 29407 48 7724 7725 7726 7727 7728 7729 29408 29409 29410 29411 29412 29413 29366 29367 29368 29369 29370 29371 29402 29403 29404 29405 29406 29407 22118 22119 22120 22121 22122 22123 22112 22113 22114 22115 22116 22117 6056 6057 6058 6059 6060 6061 19346 19347 19348 19349 19350 19351 48 29414 29415 29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 29432 29433 29434 29435 29436 29437 29378 29379 29380 29381 29382 29383 29372 29373 29374 29375 29376 29377 29366 29367 29368 29369 29370 29371 29438 29439 29440 29441 29442 29443 48 29444 29445 29446 29447 29448 29449 29450 29451 29452 29453 29454 29455 29456 29457 29458 29459 29460 29461 29462 29463 29464 29465 29466 29467 29426 29427 29428 29429 29430 29431 29420 29421 29422 29423 29424 29425 29414 29415 29416 29417 29418 29419 29468 29469 29470 29471 29472 29473 48 29474 29475 29476 29477 29478 29479 29480 29481 29482 29483 29484 29485 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29456 29457 29458 29459 29460 29461 29450 29451 29452 29453 29454 29455 29444 29445 29446 29447 29448 29449 29498 29499 29500 29501 29502 29503 48 12188 12189 12190 12191 12192 12193 29504 29505 29506 29507 29508 29509 29474 29475 29476 29477 29478 29479 29498 29499 29500 29501 29502 29503 29444 29445 29446 29447 29448 29449 29510 29511 29512 29513 29514 29515 10778 10779 10780 10781 10782 10783 19340 19341 19342 19343 19344 19345 36 29486 29487 29488 29489 29490 29491 29474 29475 29476 29477 29478 29479 29516 29517 29518 29519 29520 29521 29480 29481 29482 29483 29484 29485 29528 29529 29530 29531 29532 29533 29522 29523 29524 29525 29526 29527 48 14156 14157 14158 14159 14160 14161 29534 29535 29536 29537 29538 29539 29516 29517 29518 29519 29520 29521 29528 29529 29530 29531 29532 29533 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 12188 12189 12190 12191 12192 12193 18398 18399 18400 18401 18402 18403 48 22574 22575 22576 22577 22578 22579 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 29550 29551 29552 29553 29554 29555 29556 29557 21554 21555 21556 21557 21558 21559 22142 22143 22144 22145 22146 22147 22136 22137 22138 22139 22140 22141 22610 22611 22612 22613 22614 22615 48 22736 22737 22738 22739 22740 22741 29558 29559 29560 29561 29562 29563 22574 22575 22576 22577 22578 22579 22610 22611 22612 22613 22614 22615 22136 22137 22138 22139 22140 22141 22154 22155 22156 22157 22158 22159 21578 21579 21580 21581 21582 21583 22772 22773 22774 22775 22776 22777 48 22916 22917 22918 22919 22920 22921 29564 29565 29566 29567 29568 29569 22736 22737 22738 22739 22740 22741 22772 22773 22774 22775 22776 22777 21578 21579 21580 21581 21582 21583 22160 22161 22162 22163 22164 22165 21602 21603 21604 21605 21606 21607 22952 22953 22954 22955 22956 22957 48 23096 23097 23098 23099 23100 23101 29570 29571 29572 29573 29574 29575 22916 22917 22918 22919 22920 22921 22952 22953 22954 22955 22956 22957 21602 21603 21604 21605 21606 21607 22172 22173 22174 22175 22176 22177 22166 22167 22168 22169 22170 22171 23132 23133 23134 23135 23136 23137 48 23258 23259 23260 23261 23262 23263 29576 29577 29578 29579 29580 29581 23096 23097 23098 23099 23100 23101 23132 23133 23134 23135 23136 23137 22166 22167 22168 22169 22170 22171 22184 22185 22186 22187 22188 22189 21626 21627 21628 21629 21630 21631 23294 23295 23296 23297 23298 23299 48 23432 23433 23434 23435 23436 23437 29582 29583 29584 29585 29586 29587 23258 23259 23260 23261 23262 23263 23294 23295 23296 23297 23298 23299 21626 21627 21628 21629 21630 21631 22190 22191 22192 22193 22194 22195 21650 21651 21652 21653 21654 21655 23468 23469 23470 23471 23472 23473 48 23612 23613 23614 23615 23616 23617 29588 29589 29590 29591 29592 29593 23432 23433 23434 23435 23436 23437 23468 23469 23470 23471 23472 23473 21650 21651 21652 21653 21654 21655 22202 22203 22204 22205 22206 22207 22196 22197 22198 22199 22200 22201 23648 23649 23650 23651 23652 23653 48 23774 23775 23776 23777 23778 23779 29594 29595 29596 29597 29598 29599 23612 23613 23614 23615 23616 23617 23648 23649 23650 23651 23652 23653 22196 22197 22198 22199 22200 22201 22214 22215 22216 22217 22218 22219 21674 21675 21676 21677 21678 21679 23810 23811 23812 23813 23814 23815 48 23948 23949 23950 23951 23952 23953 29600 29601 29602 29603 29604 29605 23774 23775 23776 23777 23778 23779 23810 23811 23812 23813 23814 23815 21674 21675 21676 21677 21678 21679 22220 22221 22222 22223 22224 22225 21698 21699 21700 21701 21702 21703 23984 23985 23986 23987 23988 23989 48 24122 24123 24124 24125 24126 24127 29606 29607 29608 29609 29610 29611 23948 23949 23950 23951 23952 23953 23984 23985 23986 23987 23988 23989 21698 21699 21700 21701 21702 21703 22232 22233 22234 22235 22236 22237 22226 22227 22228 22229 22230 22231 24158 24159 24160 24161 24162 24163 48 24284 24285 24286 24287 24288 24289 29612 29613 29614 29615 29616 29617 24122 24123 24124 24125 24126 24127 24158 24159 24160 24161 24162 24163 22226 22227 22228 22229 22230 22231 22244 22245 22246 22247 22248 22249 21722 21723 21724 21725 21726 21727 24320 24321 24322 24323 24324 24325 48 24458 24459 24460 24461 24462 24463 29618 29619 29620 29621 29622 29623 24284 24285 24286 24287 24288 24289 24320 24321 24322 24323 24324 24325 21722 21723 21724 21725 21726 21727 22250 22251 22252 22253 22254 22255 21746 21747 21748 21749 21750 21751 24494 24495 24496 24497 24498 24499 48 24638 24639 24640 24641 24642 24643 29624 29625 29626 29627 29628 29629 24458 24459 24460 24461 24462 24463 24494 24495 24496 24497 24498 24499 21746 21747 21748 21749 21750 21751 22262 22263 22264 22265 22266 22267 22256 22257 22258 22259 22260 22261 24674 24675 24676 24677 24678 24679 48 24800 24801 24802 24803 24804 24805 29630 29631 29632 29633 29634 29635 24638 24639 24640 24641 24642 24643 24674 24675 24676 24677 24678 24679 22256 22257 22258 22259 22260 22261 22274 22275 22276 22277 22278 22279 21770 21771 21772 21773 21774 21775 24836 24837 24838 24839 24840 24841 48 24974 24975 24976 24977 24978 24979 29636 29637 29638 29639 29640 29641 24800 24801 24802 24803 24804 24805 24836 24837 24838 24839 24840 24841 21770 21771 21772 21773 21774 21775 22280 22281 22282 22283 22284 22285 21794 21795 21796 21797 21798 21799 25010 25011 25012 25013 25014 25015 48 25148 25149 25150 25151 25152 25153 29642 29643 29644 29645 29646 29647 24974 24975 24976 24977 24978 24979 25010 25011 25012 25013 25014 25015 21794 21795 21796 21797 21798 21799 22292 22293 22294 22295 22296 22297 22286 22287 22288 22289 22290 22291 25184 25185 25186 25187 25188 25189 48 25310 25311 25312 25313 25314 25315 29648 29649 29650 29651 29652 29653 25148 25149 25150 25151 25152 25153 25184 25185 25186 25187 25188 25189 22286 22287 22288 22289 22290 22291 22304 22305 22306 22307 22308 22309 21818 21819 21820 21821 21822 21823 25346 25347 25348 25349 25350 25351 48 25484 25485 25486 25487 25488 25489 29654 29655 29656 29657 29658 29659 25310 25311 25312 25313 25314 25315 25346 25347 25348 25349 25350 25351 21818 21819 21820 21821 21822 21823 22310 22311 22312 22313 22314 22315 21842 21843 21844 21845 21846 21847 25520 25521 25522 25523 25524 25525 48 25664 25665 25666 25667 25668 25669 29660 29661 29662 29663 29664 29665 25484 25485 25486 25487 25488 25489 25520 25521 25522 25523 25524 25525 21842 21843 21844 21845 21846 21847 22322 22323 22324 22325 22326 22327 22316 22317 22318 22319 22320 22321 25700 25701 25702 25703 25704 25705 48 25826 25827 25828 25829 25830 25831 29666 29667 29668 29669 29670 29671 25664 25665 25666 25667 25668 25669 25700 25701 25702 25703 25704 25705 22316 22317 22318 22319 22320 22321 22334 22335 22336 22337 22338 22339 21866 21867 21868 21869 21870 21871 25862 25863 25864 25865 25866 25867 48 26000 26001 26002 26003 26004 26005 29672 29673 29674 29675 29676 29677 25826 25827 25828 25829 25830 25831 25862 25863 25864 25865 25866 25867 21866 21867 21868 21869 21870 21871 22340 22341 22342 22343 22344 22345 21890 21891 21892 21893 21894 21895 26036 26037 26038 26039 26040 26041 48 26174 26175 26176 26177 26178 26179 29678 29679 29680 29681 29682 29683 26000 26001 26002 26003 26004 26005 26036 26037 26038 26039 26040 26041 21890 21891 21892 21893 21894 21895 22352 22353 22354 22355 22356 22357 22346 22347 22348 22349 22350 22351 26210 26211 26212 26213 26214 26215 48 26336 26337 26338 26339 26340 26341 29684 29685 29686 29687 29688 29689 26174 26175 26176 26177 26178 26179 26210 26211 26212 26213 26214 26215 22346 22347 22348 22349 22350 22351 22364 22365 22366 22367 22368 22369 21914 21915 21916 21917 21918 21919 26372 26373 26374 26375 26376 26377 48 26510 26511 26512 26513 26514 26515 29690 29691 29692 29693 29694 29695 26336 26337 26338 26339 26340 26341 26372 26373 26374 26375 26376 26377 21914 21915 21916 21917 21918 21919 22370 22371 22372 22373 22374 22375 21938 21939 21940 21941 21942 21943 26546 26547 26548 26549 26550 26551 48 26690 26691 26692 26693 26694 26695 29696 29697 29698 29699 29700 29701 26510 26511 26512 26513 26514 26515 26546 26547 26548 26549 26550 26551 21938 21939 21940 21941 21942 21943 22382 22383 22384 22385 22386 22387 22376 22377 22378 22379 22380 22381 26726 26727 26728 26729 26730 26731 48 26852 26853 26854 26855 26856 26857 29702 29703 29704 29705 29706 29707 26690 26691 26692 26693 26694 26695 26726 26727 26728 26729 26730 26731 22376 22377 22378 22379 22380 22381 22394 22395 22396 22397 22398 22399 21962 21963 21964 21965 21966 21967 26888 26889 26890 26891 26892 26893 48 27026 27027 27028 27029 27030 27031 29708 29709 29710 29711 29712 29713 26852 26853 26854 26855 26856 26857 26888 26889 26890 26891 26892 26893 21962 21963 21964 21965 21966 21967 22400 22401 22402 22403 22404 22405 21986 21987 21988 21989 21990 21991 27062 27063 27064 27065 27066 27067 48 27200 27201 27202 27203 27204 27205 29714 29715 29716 29717 29718 29719 27026 27027 27028 27029 27030 27031 27062 27063 27064 27065 27066 27067 21986 21987 21988 21989 21990 21991 22412 22413 22414 22415 22416 22417 22406 22407 22408 22409 22410 22411 27236 27237 27238 27239 27240 27241 48 27362 27363 27364 27365 27366 27367 29720 29721 29722 29723 29724 29725 27200 27201 27202 27203 27204 27205 27236 27237 27238 27239 27240 27241 22406 22407 22408 22409 22410 22411 22424 22425 22426 22427 22428 22429 22010 22011 22012 22013 22014 22015 27398 27399 27400 27401 27402 27403 48 27542 27543 27544 27545 27546 27547 29726 29727 29728 29729 29730 29731 27362 27363 27364 27365 27366 27367 27398 27399 27400 27401 27402 27403 22010 22011 22012 22013 22014 22015 22430 22431 22432 22433 22434 22435 22034 22035 22036 22037 22038 22039 27578 27579 27580 27581 27582 27583 48 27722 27723 27724 27725 27726 27727 29732 29733 29734 29735 29736 29737 27542 27543 27544 27545 27546 27547 27578 27579 27580 27581 27582 27583 22034 22035 22036 22037 22038 22039 22442 22443 22444 22445 22446 22447 22436 22437 22438 22439 22440 22441 27758 27759 27760 27761 27762 27763 48 27884 27885 27886 27887 27888 27889 29738 29739 29740 29741 29742 29743 27722 27723 27724 27725 27726 27727 27758 27759 27760 27761 27762 27763 22436 22437 22438 22439 22440 22441 22454 22455 22456 22457 22458 22459 22058 22059 22060 22061 22062 22063 27920 27921 27922 27923 27924 27925 48 28058 28059 28060 28061 28062 28063 29744 29745 29746 29747 29748 29749 27884 27885 27886 27887 27888 27889 27920 27921 27922 27923 27924 27925 22058 22059 22060 22061 22062 22063 22460 22461 22462 22463 22464 22465 22082 22083 22084 22085 22086 22087 28094 28095 28096 28097 28098 28099 48 28232 28233 28234 28235 28236 28237 29750 29751 29752 29753 29754 29755 28058 28059 28060 28061 28062 28063 28094 28095 28096 28097 28098 28099 22082 22083 22084 22085 22086 22087 22472 22473 22474 22475 22476 22477 22466 22467 22468 22469 22470 22471 28268 28269 28270 28271 28272 28273 48 20780 20781 20782 20783 20784 20785 29756 29757 29758 29759 29760 29761 28232 28233 28234 28235 28236 28237 28268 28269 28270 28271 28272 28273 22466 22467 22468 22469 22470 22471 22484 22485 22486 22487 22488 22489 20666 20667 20668 20669 20670 20671 28424 28425 28426 28427 28428 28429 48 20768 20769 20770 20771 20772 20773 20774 20775 20776 20777 20778 20779 20780 20781 20782 20783 20784 20785 28424 28425 28426 28427 28428 28429 20666 20667 20668 20669 20670 20671 20660 20661 20662 20663 20664 20665 20654 20655 20656 20657 20658 20659 28556 28557 28558 28559 28560 28561 48 20810 20811 20812 20813 20814 20815 20816 20817 20818 20819 20820 20821 20768 20769 20770 20771 20772 20773 28556 28557 28558 28559 28560 28561 20654 20655 20656 20657 20658 20659 20702 20703 20704 20705 20706 20707 20696 20697 20698 20699 20700 20701 28682 28683 28684 28685 28686 28687 48 20834 20835 20836 20837 20838 20839 20840 20841 20842 20843 20844 20845 20810 20811 20812 20813 20814 20815 28682 28683 28684 28685 28686 28687 20696 20697 20698 20699 20700 20701 20726 20727 20728 20729 20730 20731 20720 20721 20722 20723 20724 20725 28808 28809 28810 28811 28812 28813 48 20858 20859 20860 20861 20862 20863 20864 20865 20866 20867 20868 20869 20834 20835 20836 20837 20838 20839 28808 28809 28810 28811 28812 28813 20720 20721 20722 20723 20724 20725 20750 20751 20752 20753 20754 20755 20744 20745 20746 20747 20748 20749 28946 28947 28948 28949 28950 28951 48 29054 29055 29056 29057 29058 29059 29762 29763 29764 29765 29766 29767 20858 20859 20860 20861 20862 20863 28946 28947 28948 28949 28950 28951 20744 20745 20746 20747 20748 20749 22520 22521 22522 22523 22524 22525 22514 22515 22516 22517 22518 22519 29090 29091 29092 29093 29094 29095 48 29210 29211 29212 29213 29214 29215 29768 29769 29770 29771 29772 29773 29054 29055 29056 29057 29058 29059 29090 29091 29092 29093 29094 29095 22514 22515 22516 22517 22518 22519 22538 22539 22540 22541 22542 22543 22532 22533 22534 22535 22536 22537 29246 29247 29248 29249 29250 29251 48 29366 29367 29368 29369 29370 29371 29774 29775 29776 29777 29778 29779 29210 29211 29212 29213 29214 29215 29246 29247 29248 29249 29250 29251 22532 22533 22534 22535 22536 22537 22550 22551 22552 22553 22554 22555 22118 22119 22120 22121 22122 22123 29402 29403 29404 29405 29406 29407 48 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29366 29367 29368 29369 29370 29371 29402 29403 29404 29405 29406 29407 22118 22119 22120 22121 22122 22123 22562 22563 22564 22565 22566 22567 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 48 22616 22617 22618 22619 22620 22621 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29546 29547 29548 29549 29550 29551 29540 29541 29542 29543 29544 29545 22574 22575 22576 22577 22578 22579 22640 22641 22642 22643 22644 22645 48 22784 22785 22786 22787 22788 22789 29816 29817 29818 29819 29820 29821 22616 22617 22618 22619 22620 22621 22640 22641 22642 22643 22644 22645 22574 22575 22576 22577 22578 22579 29558 29559 29560 29561 29562 29563 22736 22737 22738 22739 22740 22741 22808 22809 22810 22811 22812 22813 48 22964 22965 22966 22967 22968 22969 29822 29823 29824 29825 29826 29827 22784 22785 22786 22787 22788 22789 22808 22809 22810 22811 22812 22813 22736 22737 22738 22739 22740 22741 29564 29565 29566 29567 29568 29569 22916 22917 22918 22919 22920 22921 22988 22989 22990 22991 22992 22993 48 23138 23139 23140 23141 23142 23143 29828 29829 29830 29831 29832 29833 22964 22965 22966 22967 22968 22969 22988 22989 22990 22991 22992 22993 22916 22917 22918 22919 22920 22921 29570 29571 29572 29573 29574 29575 23096 23097 23098 23099 23100 23101 23162 23163 23164 23165 23166 23167 48 23306 23307 23308 23309 23310 23311 29834 29835 29836 29837 29838 29839 23138 23139 23140 23141 23142 23143 23162 23163 23164 23165 23166 23167 23096 23097 23098 23099 23100 23101 29576 29577 29578 29579 29580 29581 23258 23259 23260 23261 23262 23263 23330 23331 23332 23333 23334 23335 48 23480 23481 23482 23483 23484 23485 29840 29841 29842 29843 29844 29845 23306 23307 23308 23309 23310 23311 23330 23331 23332 23333 23334 23335 23258 23259 23260 23261 23262 23263 29582 29583 29584 29585 29586 29587 23432 23433 23434 23435 23436 23437 23504 23505 23506 23507 23508 23509 48 23654 23655 23656 23657 23658 23659 29846 29847 29848 29849 29850 29851 23480 23481 23482 23483 23484 23485 23504 23505 23506 23507 23508 23509 23432 23433 23434 23435 23436 23437 29588 29589 29590 29591 29592 29593 23612 23613 23614 23615 23616 23617 23678 23679 23680 23681 23682 23683 48 23822 23823 23824 23825 23826 23827 29852 29853 29854 29855 29856 29857 23654 23655 23656 23657 23658 23659 23678 23679 23680 23681 23682 23683 23612 23613 23614 23615 23616 23617 29594 29595 29596 29597 29598 29599 23774 23775 23776 23777 23778 23779 23846 23847 23848 23849 23850 23851 48 23996 23997 23998 23999 24000 24001 29858 29859 29860 29861 29862 29863 23822 23823 23824 23825 23826 23827 23846 23847 23848 23849 23850 23851 23774 23775 23776 23777 23778 23779 29600 29601 29602 29603 29604 29605 23948 23949 23950 23951 23952 23953 24020 24021 24022 24023 24024 24025 48 24164 24165 24166 24167 24168 24169 29864 29865 29866 29867 29868 29869 23996 23997 23998 23999 24000 24001 24020 24021 24022 24023 24024 24025 23948 23949 23950 23951 23952 23953 29606 29607 29608 29609 29610 29611 24122 24123 24124 24125 24126 24127 24188 24189 24190 24191 24192 24193 48 24332 24333 24334 24335 24336 24337 29870 29871 29872 29873 29874 29875 24164 24165 24166 24167 24168 24169 24188 24189 24190 24191 24192 24193 24122 24123 24124 24125 24126 24127 29612 29613 29614 29615 29616 29617 24284 24285 24286 24287 24288 24289 24356 24357 24358 24359 24360 24361 48 24506 24507 24508 24509 24510 24511 29876 29877 29878 29879 29880 29881 24332 24333 24334 24335 24336 24337 24356 24357 24358 24359 24360 24361 24284 24285 24286 24287 24288 24289 29618 29619 29620 29621 29622 29623 24458 24459 24460 24461 24462 24463 24530 24531 24532 24533 24534 24535 48 24680 24681 24682 24683 24684 24685 29882 29883 29884 29885 29886 29887 24506 24507 24508 24509 24510 24511 24530 24531 24532 24533 24534 24535 24458 24459 24460 24461 24462 24463 29624 29625 29626 29627 29628 29629 24638 24639 24640 24641 24642 24643 24704 24705 24706 24707 24708 24709 48 24848 24849 24850 24851 24852 24853 29888 29889 29890 29891 29892 29893 24680 24681 24682 24683 24684 24685 24704 24705 24706 24707 24708 24709 24638 24639 24640 24641 24642 24643 29630 29631 29632 29633 29634 29635 24800 24801 24802 24803 24804 24805 24872 24873 24874 24875 24876 24877 48 25022 25023 25024 25025 25026 25027 29894 29895 29896 29897 29898 29899 24848 24849 24850 24851 24852 24853 24872 24873 24874 24875 24876 24877 24800 24801 24802 24803 24804 24805 29636 29637 29638 29639 29640 29641 24974 24975 24976 24977 24978 24979 25046 25047 25048 25049 25050 25051 48 25190 25191 25192 25193 25194 25195 29900 29901 29902 29903 29904 29905 25022 25023 25024 25025 25026 25027 25046 25047 25048 25049 25050 25051 24974 24975 24976 24977 24978 24979 29642 29643 29644 29645 29646 29647 25148 25149 25150 25151 25152 25153 25214 25215 25216 25217 25218 25219 48 25358 25359 25360 25361 25362 25363 29906 29907 29908 29909 29910 29911 25190 25191 25192 25193 25194 25195 25214 25215 25216 25217 25218 25219 25148 25149 25150 25151 25152 25153 29648 29649 29650 29651 29652 29653 25310 25311 25312 25313 25314 25315 25382 25383 25384 25385 25386 25387 48 25532 25533 25534 25535 25536 25537 29912 29913 29914 29915 29916 29917 25358 25359 25360 25361 25362 25363 25382 25383 25384 25385 25386 25387 25310 25311 25312 25313 25314 25315 29654 29655 29656 29657 29658 29659 25484 25485 25486 25487 25488 25489 25556 25557 25558 25559 25560 25561 48 25706 25707 25708 25709 25710 25711 29918 29919 29920 29921 29922 29923 25532 25533 25534 25535 25536 25537 25556 25557 25558 25559 25560 25561 25484 25485 25486 25487 25488 25489 29660 29661 29662 29663 29664 29665 25664 25665 25666 25667 25668 25669 25730 25731 25732 25733 25734 25735 48 25874 25875 25876 25877 25878 25879 29924 29925 29926 29927 29928 29929 25706 25707 25708 25709 25710 25711 25730 25731 25732 25733 25734 25735 25664 25665 25666 25667 25668 25669 29666 29667 29668 29669 29670 29671 25826 25827 25828 25829 25830 25831 25898 25899 25900 25901 25902 25903 48 26048 26049 26050 26051 26052 26053 29930 29931 29932 29933 29934 29935 25874 25875 25876 25877 25878 25879 25898 25899 25900 25901 25902 25903 25826 25827 25828 25829 25830 25831 29672 29673 29674 29675 29676 29677 26000 26001 26002 26003 26004 26005 26072 26073 26074 26075 26076 26077 48 26216 26217 26218 26219 26220 26221 29936 29937 29938 29939 29940 29941 26048 26049 26050 26051 26052 26053 26072 26073 26074 26075 26076 26077 26000 26001 26002 26003 26004 26005 29678 29679 29680 29681 29682 29683 26174 26175 26176 26177 26178 26179 26240 26241 26242 26243 26244 26245 48 26384 26385 26386 26387 26388 26389 29942 29943 29944 29945 29946 29947 26216 26217 26218 26219 26220 26221 26240 26241 26242 26243 26244 26245 26174 26175 26176 26177 26178 26179 29684 29685 29686 29687 29688 29689 26336 26337 26338 26339 26340 26341 26408 26409 26410 26411 26412 26413 48 26558 26559 26560 26561 26562 26563 29948 29949 29950 29951 29952 29953 26384 26385 26386 26387 26388 26389 26408 26409 26410 26411 26412 26413 26336 26337 26338 26339 26340 26341 29690 29691 29692 29693 29694 29695 26510 26511 26512 26513 26514 26515 26582 26583 26584 26585 26586 26587 48 26732 26733 26734 26735 26736 26737 29954 29955 29956 29957 29958 29959 26558 26559 26560 26561 26562 26563 26582 26583 26584 26585 26586 26587 26510 26511 26512 26513 26514 26515 29696 29697 29698 29699 29700 29701 26690 26691 26692 26693 26694 26695 26756 26757 26758 26759 26760 26761 48 26900 26901 26902 26903 26904 26905 29960 29961 29962 29963 29964 29965 26732 26733 26734 26735 26736 26737 26756 26757 26758 26759 26760 26761 26690 26691 26692 26693 26694 26695 29702 29703 29704 29705 29706 29707 26852 26853 26854 26855 26856 26857 26924 26925 26926 26927 26928 26929 48 27074 27075 27076 27077 27078 27079 29966 29967 29968 29969 29970 29971 26900 26901 26902 26903 26904 26905 26924 26925 26926 26927 26928 26929 26852 26853 26854 26855 26856 26857 29708 29709 29710 29711 29712 29713 27026 27027 27028 27029 27030 27031 27098 27099 27100 27101 27102 27103 48 27242 27243 27244 27245 27246 27247 29972 29973 29974 29975 29976 29977 27074 27075 27076 27077 27078 27079 27098 27099 27100 27101 27102 27103 27026 27027 27028 27029 27030 27031 29714 29715 29716 29717 29718 29719 27200 27201 27202 27203 27204 27205 27266 27267 27268 27269 27270 27271 48 27410 27411 27412 27413 27414 27415 29978 29979 29980 29981 29982 29983 27242 27243 27244 27245 27246 27247 27266 27267 27268 27269 27270 27271 27200 27201 27202 27203 27204 27205 29720 29721 29722 29723 29724 29725 27362 27363 27364 27365 27366 27367 27434 27435 27436 27437 27438 27439 48 27590 27591 27592 27593 27594 27595 29984 29985 29986 29987 29988 29989 27410 27411 27412 27413 27414 27415 27434 27435 27436 27437 27438 27439 27362 27363 27364 27365 27366 27367 29726 29727 29728 29729 29730 29731 27542 27543 27544 27545 27546 27547 27614 27615 27616 27617 27618 27619 48 27764 27765 27766 27767 27768 27769 29990 29991 29992 29993 29994 29995 27590 27591 27592 27593 27594 27595 27614 27615 27616 27617 27618 27619 27542 27543 27544 27545 27546 27547 29732 29733 29734 29735 29736 29737 27722 27723 27724 27725 27726 27727 27788 27789 27790 27791 27792 27793 48 27932 27933 27934 27935 27936 27937 29996 29997 29998 29999 30000 30001 27764 27765 27766 27767 27768 27769 27788 27789 27790 27791 27792 27793 27722 27723 27724 27725 27726 27727 29738 29739 29740 29741 29742 29743 27884 27885 27886 27887 27888 27889 27956 27957 27958 27959 27960 27961 48 28106 28107 28108 28109 28110 28111 30002 30003 30004 30005 30006 30007 27932 27933 27934 27935 27936 27937 27956 27957 27958 27959 27960 27961 27884 27885 27886 27887 27888 27889 29744 29745 29746 29747 29748 29749 28058 28059 28060 28061 28062 28063 28130 28131 28132 28133 28134 28135 48 28274 28275 28276 28277 28278 28279 30008 30009 30010 30011 30012 30013 28106 28107 28108 28109 28110 28111 28130 28131 28132 28133 28134 28135 28058 28059 28060 28061 28062 28063 29750 29751 29752 29753 29754 29755 28232 28233 28234 28235 28236 28237 28298 28299 28300 28301 28302 28303 48 20894 20895 20896 20897 20898 20899 30014 30015 30016 30017 30018 30019 28274 28275 28276 28277 28278 28279 28298 28299 28300 28301 28302 28303 28232 28233 28234 28235 28236 28237 29756 29757 29758 29759 29760 29761 20780 20781 20782 20783 20784 20785 28448 28449 28450 28451 28452 28453 48 20882 20883 20884 20885 20886 20887 20888 20889 20890 20891 20892 20893 20894 20895 20896 20897 20898 20899 28448 28449 28450 28451 28452 28453 20780 20781 20782 20783 20784 20785 20774 20775 20776 20777 20778 20779 20768 20769 20770 20771 20772 20773 28580 28581 28582 28583 28584 28585 48 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20882 20883 20884 20885 20886 20887 28580 28581 28582 28583 28584 28585 20768 20769 20770 20771 20772 20773 20816 20817 20818 20819 20820 20821 20810 20811 20812 20813 20814 20815 28706 28707 28708 28709 28710 28711 48 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20924 20925 20926 20927 20928 20929 28706 28707 28708 28709 28710 28711 20810 20811 20812 20813 20814 20815 20840 20841 20842 20843 20844 20845 20834 20835 20836 20837 20838 20839 28832 28833 28834 28835 28836 28837 48 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20948 20949 20950 20951 20952 20953 28832 28833 28834 28835 28836 28837 20834 20835 20836 20837 20838 20839 20864 20865 20866 20867 20868 20869 20858 20859 20860 20861 20862 20863 28970 28971 28972 28973 28974 28975 48 29096 29097 29098 29099 29100 29101 30020 30021 30022 30023 30024 30025 20972 20973 20974 20975 20976 20977 28970 28971 28972 28973 28974 28975 20858 20859 20860 20861 20862 20863 29762 29763 29764 29765 29766 29767 29054 29055 29056 29057 29058 29059 29120 29121 29122 29123 29124 29125 48 29252 29253 29254 29255 29256 29257 30026 30027 30028 30029 30030 30031 29096 29097 29098 29099 29100 29101 29120 29121 29122 29123 29124 29125 29054 29055 29056 29057 29058 29059 29768 29769 29770 29771 29772 29773 29210 29211 29212 29213 29214 29215 29276 29277 29278 29279 29280 29281 48 29414 29415 29416 29417 29418 29419 30032 30033 30034 30035 30036 30037 29252 29253 29254 29255 29256 29257 29276 29277 29278 29279 29280 29281 29210 29211 29212 29213 29214 29215 29774 29775 29776 29777 29778 29779 29366 29367 29368 29369 29370 29371 29438 29439 29440 29441 29442 29443 48 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 29414 29415 29416 29417 29418 29419 29438 29439 29440 29441 29442 29443 29366 29367 29368 29369 29370 29371 29786 29787 29788 29789 29790 29791 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 48 22646 22647 22648 22649 22650 22651 30056 30057 30058 30059 30060 30061 30062 30063 30064 30065 30066 30067 30068 30069 30070 30071 30072 30073 29804 29805 29806 29807 29808 29809 29798 29799 29800 29801 29802 29803 22616 22617 22618 22619 22620 22621 22670 22671 22672 22673 22674 22675 48 22820 22821 22822 22823 22824 22825 30074 30075 30076 30077 30078 30079 22646 22647 22648 22649 22650 22651 22670 22671 22672 22673 22674 22675 22616 22617 22618 22619 22620 22621 29816 29817 29818 29819 29820 29821 22784 22785 22786 22787 22788 22789 22844 22845 22846 22847 22848 22849 48 23000 23001 23002 23003 23004 23005 30080 30081 30082 30083 30084 30085 22820 22821 22822 22823 22824 22825 22844 22845 22846 22847 22848 22849 22784 22785 22786 22787 22788 22789 29822 29823 29824 29825 29826 29827 22964 22965 22966 22967 22968 22969 23024 23025 23026 23027 23028 23029 48 23168 23169 23170 23171 23172 23173 30086 30087 30088 30089 30090 30091 23000 23001 23002 23003 23004 23005 23024 23025 23026 23027 23028 23029 22964 22965 22966 22967 22968 22969 29828 29829 29830 29831 29832 29833 23138 23139 23140 23141 23142 23143 23192 23193 23194 23195 23196 23197 48 23336 23337 23338 23339 23340 23341 30092 30093 30094 30095 30096 30097 23168 23169 23170 23171 23172 23173 23192 23193 23194 23195 23196 23197 23138 23139 23140 23141 23142 23143 29834 29835 29836 29837 29838 29839 23306 23307 23308 23309 23310 23311 23360 23361 23362 23363 23364 23365 48 23516 23517 23518 23519 23520 23521 30098 30099 30100 30101 30102 30103 23336 23337 23338 23339 23340 23341 23360 23361 23362 23363 23364 23365 23306 23307 23308 23309 23310 23311 29840 29841 29842 29843 29844 29845 23480 23481 23482 23483 23484 23485 23540 23541 23542 23543 23544 23545 48 23684 23685 23686 23687 23688 23689 30104 30105 30106 30107 30108 30109 23516 23517 23518 23519 23520 23521 23540 23541 23542 23543 23544 23545 23480 23481 23482 23483 23484 23485 29846 29847 29848 29849 29850 29851 23654 23655 23656 23657 23658 23659 23708 23709 23710 23711 23712 23713 48 23852 23853 23854 23855 23856 23857 30110 30111 30112 30113 30114 30115 23684 23685 23686 23687 23688 23689 23708 23709 23710 23711 23712 23713 23654 23655 23656 23657 23658 23659 29852 29853 29854 29855 29856 29857 23822 23823 23824 23825 23826 23827 23876 23877 23878 23879 23880 23881 48 24026 24027 24028 24029 24030 24031 30116 30117 30118 30119 30120 30121 23852 23853 23854 23855 23856 23857 23876 23877 23878 23879 23880 23881 23822 23823 23824 23825 23826 23827 29858 29859 29860 29861 29862 29863 23996 23997 23998 23999 24000 24001 24050 24051 24052 24053 24054 24055 48 24194 24195 24196 24197 24198 24199 30122 30123 30124 30125 30126 30127 24026 24027 24028 24029 24030 24031 24050 24051 24052 24053 24054 24055 23996 23997 23998 23999 24000 24001 29864 29865 29866 29867 29868 29869 24164 24165 24166 24167 24168 24169 24218 24219 24220 24221 24222 24223 48 24362 24363 24364 24365 24366 24367 30128 30129 30130 30131 30132 30133 24194 24195 24196 24197 24198 24199 24218 24219 24220 24221 24222 24223 24164 24165 24166 24167 24168 24169 29870 29871 29872 29873 29874 29875 24332 24333 24334 24335 24336 24337 24386 24387 24388 24389 24390 24391 48 24542 24543 24544 24545 24546 24547 30134 30135 30136 30137 30138 30139 24362 24363 24364 24365 24366 24367 24386 24387 24388 24389 24390 24391 24332 24333 24334 24335 24336 24337 29876 29877 29878 29879 29880 29881 24506 24507 24508 24509 24510 24511 24566 24567 24568 24569 24570 24571 48 24710 24711 24712 24713 24714 24715 30140 30141 30142 30143 30144 30145 24542 24543 24544 24545 24546 24547 24566 24567 24568 24569 24570 24571 24506 24507 24508 24509 24510 24511 29882 29883 29884 29885 29886 29887 24680 24681 24682 24683 24684 24685 24734 24735 24736 24737 24738 24739 48 24878 24879 24880 24881 24882 24883 30146 30147 30148 30149 30150 30151 24710 24711 24712 24713 24714 24715 24734 24735 24736 24737 24738 24739 24680 24681 24682 24683 24684 24685 29888 29889 29890 29891 29892 29893 24848 24849 24850 24851 24852 24853 24902 24903 24904 24905 24906 24907 48 25052 25053 25054 25055 25056 25057 30152 30153 30154 30155 30156 30157 24878 24879 24880 24881 24882 24883 24902 24903 24904 24905 24906 24907 24848 24849 24850 24851 24852 24853 29894 29895 29896 29897 29898 29899 25022 25023 25024 25025 25026 25027 25076 25077 25078 25079 25080 25081 48 25220 25221 25222 25223 25224 25225 30158 30159 30160 30161 30162 30163 25052 25053 25054 25055 25056 25057 25076 25077 25078 25079 25080 25081 25022 25023 25024 25025 25026 25027 29900 29901 29902 29903 29904 29905 25190 25191 25192 25193 25194 25195 25244 25245 25246 25247 25248 25249 48 25388 25389 25390 25391 25392 25393 30164 30165 30166 30167 30168 30169 25220 25221 25222 25223 25224 25225 25244 25245 25246 25247 25248 25249 25190 25191 25192 25193 25194 25195 29906 29907 29908 29909 29910 29911 25358 25359 25360 25361 25362 25363 25412 25413 25414 25415 25416 25417 48 25568 25569 25570 25571 25572 25573 30170 30171 30172 30173 30174 30175 25388 25389 25390 25391 25392 25393 25412 25413 25414 25415 25416 25417 25358 25359 25360 25361 25362 25363 29912 29913 29914 29915 29916 29917 25532 25533 25534 25535 25536 25537 25592 25593 25594 25595 25596 25597 48 25736 25737 25738 25739 25740 25741 30176 30177 30178 30179 30180 30181 25568 25569 25570 25571 25572 25573 25592 25593 25594 25595 25596 25597 25532 25533 25534 25535 25536 25537 29918 29919 29920 29921 29922 29923 25706 25707 25708 25709 25710 25711 25760 25761 25762 25763 25764 25765 48 25904 25905 25906 25907 25908 25909 30182 30183 30184 30185 30186 30187 25736 25737 25738 25739 25740 25741 25760 25761 25762 25763 25764 25765 25706 25707 25708 25709 25710 25711 29924 29925 29926 29927 29928 29929 25874 25875 25876 25877 25878 25879 25928 25929 25930 25931 25932 25933 48 26078 26079 26080 26081 26082 26083 30188 30189 30190 30191 30192 30193 25904 25905 25906 25907 25908 25909 25928 25929 25930 25931 25932 25933 25874 25875 25876 25877 25878 25879 29930 29931 29932 29933 29934 29935 26048 26049 26050 26051 26052 26053 26102 26103 26104 26105 26106 26107 48 26246 26247 26248 26249 26250 26251 30194 30195 30196 30197 30198 30199 26078 26079 26080 26081 26082 26083 26102 26103 26104 26105 26106 26107 26048 26049 26050 26051 26052 26053 29936 29937 29938 29939 29940 29941 26216 26217 26218 26219 26220 26221 26270 26271 26272 26273 26274 26275 48 26414 26415 26416 26417 26418 26419 30200 30201 30202 30203 30204 30205 26246 26247 26248 26249 26250 26251 26270 26271 26272 26273 26274 26275 26216 26217 26218 26219 26220 26221 29942 29943 29944 29945 29946 29947 26384 26385 26386 26387 26388 26389 26438 26439 26440 26441 26442 26443 48 26594 26595 26596 26597 26598 26599 30206 30207 30208 30209 30210 30211 26414 26415 26416 26417 26418 26419 26438 26439 26440 26441 26442 26443 26384 26385 26386 26387 26388 26389 29948 29949 29950 29951 29952 29953 26558 26559 26560 26561 26562 26563 26618 26619 26620 26621 26622 26623 48 26762 26763 26764 26765 26766 26767 30212 30213 30214 30215 30216 30217 26594 26595 26596 26597 26598 26599 26618 26619 26620 26621 26622 26623 26558 26559 26560 26561 26562 26563 29954 29955 29956 29957 29958 29959 26732 26733 26734 26735 26736 26737 26786 26787 26788 26789 26790 26791 48 26930 26931 26932 26933 26934 26935 30218 30219 30220 30221 30222 30223 26762 26763 26764 26765 26766 26767 26786 26787 26788 26789 26790 26791 26732 26733 26734 26735 26736 26737 29960 29961 29962 29963 29964 29965 26900 26901 26902 26903 26904 26905 26954 26955 26956 26957 26958 26959 48 27104 27105 27106 27107 27108 27109 30224 30225 30226 30227 30228 30229 26930 26931 26932 26933 26934 26935 26954 26955 26956 26957 26958 26959 26900 26901 26902 26903 26904 26905 29966 29967 29968 29969 29970 29971 27074 27075 27076 27077 27078 27079 27128 27129 27130 27131 27132 27133 48 27272 27273 27274 27275 27276 27277 30230 30231 30232 30233 30234 30235 27104 27105 27106 27107 27108 27109 27128 27129 27130 27131 27132 27133 27074 27075 27076 27077 27078 27079 29972 29973 29974 29975 29976 29977 27242 27243 27244 27245 27246 27247 27296 27297 27298 27299 27300 27301 48 27446 27447 27448 27449 27450 27451 30236 30237 30238 30239 30240 30241 27272 27273 27274 27275 27276 27277 27296 27297 27298 27299 27300 27301 27242 27243 27244 27245 27246 27247 29978 29979 29980 29981 29982 29983 27410 27411 27412 27413 27414 27415 27470 27471 27472 27473 27474 27475 48 27626 27627 27628 27629 27630 27631 30242 30243 30244 30245 30246 30247 27446 27447 27448 27449 27450 27451 27470 27471 27472 27473 27474 27475 27410 27411 27412 27413 27414 27415 29984 29985 29986 29987 29988 29989 27590 27591 27592 27593 27594 27595 27650 27651 27652 27653 27654 27655 48 27794 27795 27796 27797 27798 27799 30248 30249 30250 30251 30252 30253 27626 27627 27628 27629 27630 27631 27650 27651 27652 27653 27654 27655 27590 27591 27592 27593 27594 27595 29990 29991 29992 29993 29994 29995 27764 27765 27766 27767 27768 27769 27818 27819 27820 27821 27822 27823 48 27962 27963 27964 27965 27966 27967 30254 30255 30256 30257 30258 30259 27794 27795 27796 27797 27798 27799 27818 27819 27820 27821 27822 27823 27764 27765 27766 27767 27768 27769 29996 29997 29998 29999 30000 30001 27932 27933 27934 27935 27936 27937 27986 27987 27988 27989 27990 27991 48 28136 28137 28138 28139 28140 28141 30260 30261 30262 30263 30264 30265 27962 27963 27964 27965 27966 27967 27986 27987 27988 27989 27990 27991 27932 27933 27934 27935 27936 27937 30002 30003 30004 30005 30006 30007 28106 28107 28108 28109 28110 28111 28160 28161 28162 28163 28164 28165 48 28304 28305 28306 28307 28308 28309 30266 30267 30268 30269 30270 30271 28136 28137 28138 28139 28140 28141 28160 28161 28162 28163 28164 28165 28106 28107 28108 28109 28110 28111 30008 30009 30010 30011 30012 30013 28274 28275 28276 28277 28278 28279 28328 28329 28330 28331 28332 28333 48 21008 21009 21010 21011 21012 21013 30272 30273 30274 30275 30276 30277 28304 28305 28306 28307 28308 28309 28328 28329 28330 28331 28332 28333 28274 28275 28276 28277 28278 28279 30014 30015 30016 30017 30018 30019 20894 20895 20896 20897 20898 20899 28472 28473 28474 28475 28476 28477 48 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 28472 28473 28474 28475 28476 28477 20894 20895 20896 20897 20898 20899 20888 20889 20890 20891 20892 20893 20882 20883 20884 20885 20886 20887 28604 28605 28606 28607 28608 28609 48 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 20996 20997 20998 20999 21000 21001 28604 28605 28606 28607 28608 28609 20882 20883 20884 20885 20886 20887 20930 20931 20932 20933 20934 20935 20924 20925 20926 20927 20928 20929 28730 28731 28732 28733 28734 28735 48 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21038 21039 21040 21041 21042 21043 28730 28731 28732 28733 28734 28735 20924 20925 20926 20927 20928 20929 20954 20955 20956 20957 20958 20959 20948 20949 20950 20951 20952 20953 28856 28857 28858 28859 28860 28861 48 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21062 21063 21064 21065 21066 21067 28856 28857 28858 28859 28860 28861 20948 20949 20950 20951 20952 20953 20978 20979 20980 20981 20982 20983 20972 20973 20974 20975 20976 20977 28994 28995 28996 28997 28998 28999 48 29126 29127 29128 29129 29130 29131 30278 30279 30280 30281 30282 30283 21086 21087 21088 21089 21090 21091 28994 28995 28996 28997 28998 28999 20972 20973 20974 20975 20976 20977 30020 30021 30022 30023 30024 30025 29096 29097 29098 29099 29100 29101 29150 29151 29152 29153 29154 29155 48 29282 29283 29284 29285 29286 29287 30284 30285 30286 30287 30288 30289 29126 29127 29128 29129 29130 29131 29150 29151 29152 29153 29154 29155 29096 29097 29098 29099 29100 29101 30026 30027 30028 30029 30030 30031 29252 29253 29254 29255 29256 29257 29306 29307 29308 29309 29310 29311 48 29444 29445 29446 29447 29448 29449 30290 30291 30292 30293 30294 30295 29282 29283 29284 29285 29286 29287 29306 29307 29308 29309 29310 29311 29252 29253 29254 29255 29256 29257 30032 30033 30034 30035 30036 30037 29414 29415 29416 29417 29418 29419 29468 29469 29470 29471 29472 29473 48 30296 30297 30298 30299 30300 30301 30302 30303 30304 30305 30306 30307 29444 29445 29446 29447 29448 29449 29468 29469 29470 29471 29472 29473 29414 29415 29416 29417 29418 29419 30044 30045 30046 30047 30048 30049 30038 30039 30040 30041 30042 30043 30308 30309 30310 30311 30312 30313 48 22676 22677 22678 22679 22680 22681 30314 30315 30316 30317 30318 30319 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 30056 30057 30058 30059 30060 30061 22646 22647 22648 22649 22650 22651 22700 22701 22702 22703 22704 22705 48 22856 22857 22858 22859 22860 22861 30332 30333 30334 30335 30336 30337 22676 22677 22678 22679 22680 22681 22700 22701 22702 22703 22704 22705 22646 22647 22648 22649 22650 22651 30074 30075 30076 30077 30078 30079 22820 22821 22822 22823 22824 22825 22880 22881 22882 22883 22884 22885 48 23036 23037 23038 23039 23040 23041 30338 30339 30340 30341 30342 30343 22856 22857 22858 22859 22860 22861 22880 22881 22882 22883 22884 22885 22820 22821 22822 22823 22824 22825 30080 30081 30082 30083 30084 30085 23000 23001 23002 23003 23004 23005 23060 23061 23062 23063 23064 23065 48 23198 23199 23200 23201 23202 23203 30344 30345 30346 30347 30348 30349 23036 23037 23038 23039 23040 23041 23060 23061 23062 23063 23064 23065 23000 23001 23002 23003 23004 23005 30086 30087 30088 30089 30090 30091 23168 23169 23170 23171 23172 23173 23222 23223 23224 23225 23226 23227 48 23366 23367 23368 23369 23370 23371 30350 30351 30352 30353 30354 30355 23198 23199 23200 23201 23202 23203 23222 23223 23224 23225 23226 23227 23168 23169 23170 23171 23172 23173 30092 30093 30094 30095 30096 30097 23336 23337 23338 23339 23340 23341 23390 23391 23392 23393 23394 23395 48 23552 23553 23554 23555 23556 23557 30356 30357 30358 30359 30360 30361 23366 23367 23368 23369 23370 23371 23390 23391 23392 23393 23394 23395 23336 23337 23338 23339 23340 23341 30098 30099 30100 30101 30102 30103 23516 23517 23518 23519 23520 23521 23576 23577 23578 23579 23580 23581 48 23714 23715 23716 23717 23718 23719 30362 30363 30364 30365 30366 30367 23552 23553 23554 23555 23556 23557 23576 23577 23578 23579 23580 23581 23516 23517 23518 23519 23520 23521 30104 30105 30106 30107 30108 30109 23684 23685 23686 23687 23688 23689 23738 23739 23740 23741 23742 23743 48 23882 23883 23884 23885 23886 23887 30368 30369 30370 30371 30372 30373 23714 23715 23716 23717 23718 23719 23738 23739 23740 23741 23742 23743 23684 23685 23686 23687 23688 23689 30110 30111 30112 30113 30114 30115 23852 23853 23854 23855 23856 23857 23906 23907 23908 23909 23910 23911 48 24056 24057 24058 24059 24060 24061 30374 30375 30376 30377 30378 30379 23882 23883 23884 23885 23886 23887 23906 23907 23908 23909 23910 23911 23852 23853 23854 23855 23856 23857 30116 30117 30118 30119 30120 30121 24026 24027 24028 24029 24030 24031 24080 24081 24082 24083 24084 24085 48 24224 24225 24226 24227 24228 24229 30380 30381 30382 30383 30384 30385 24056 24057 24058 24059 24060 24061 24080 24081 24082 24083 24084 24085 24026 24027 24028 24029 24030 24031 30122 30123 30124 30125 30126 30127 24194 24195 24196 24197 24198 24199 24248 24249 24250 24251 24252 24253 48 24392 24393 24394 24395 24396 24397 30386 30387 30388 30389 30390 30391 24224 24225 24226 24227 24228 24229 24248 24249 24250 24251 24252 24253 24194 24195 24196 24197 24198 24199 30128 30129 30130 30131 30132 30133 24362 24363 24364 24365 24366 24367 24416 24417 24418 24419 24420 24421 48 24578 24579 24580 24581 24582 24583 30392 30393 30394 30395 30396 30397 24392 24393 24394 24395 24396 24397 24416 24417 24418 24419 24420 24421 24362 24363 24364 24365 24366 24367 30134 30135 30136 30137 30138 30139 24542 24543 24544 24545 24546 24547 24602 24603 24604 24605 24606 24607 48 24740 24741 24742 24743 24744 24745 30398 30399 30400 30401 30402 30403 24578 24579 24580 24581 24582 24583 24602 24603 24604 24605 24606 24607 24542 24543 24544 24545 24546 24547 30140 30141 30142 30143 30144 30145 24710 24711 24712 24713 24714 24715 24764 24765 24766 24767 24768 24769 48 24908 24909 24910 24911 24912 24913 30404 30405 30406 30407 30408 30409 24740 24741 24742 24743 24744 24745 24764 24765 24766 24767 24768 24769 24710 24711 24712 24713 24714 24715 30146 30147 30148 30149 30150 30151 24878 24879 24880 24881 24882 24883 24932 24933 24934 24935 24936 24937 48 25082 25083 25084 25085 25086 25087 30410 30411 30412 30413 30414 30415 24908 24909 24910 24911 24912 24913 24932 24933 24934 24935 24936 24937 24878 24879 24880 24881 24882 24883 30152 30153 30154 30155 30156 30157 25052 25053 25054 25055 25056 25057 25106 25107 25108 25109 25110 25111 48 25250 25251 25252 25253 25254 25255 30416 30417 30418 30419 30420 30421 25082 25083 25084 25085 25086 25087 25106 25107 25108 25109 25110 25111 25052 25053 25054 25055 25056 25057 30158 30159 30160 30161 30162 30163 25220 25221 25222 25223 25224 25225 25274 25275 25276 25277 25278 25279 48 25418 25419 25420 25421 25422 25423 30422 30423 30424 30425 30426 30427 25250 25251 25252 25253 25254 25255 25274 25275 25276 25277 25278 25279 25220 25221 25222 25223 25224 25225 30164 30165 30166 30167 30168 30169 25388 25389 25390 25391 25392 25393 25442 25443 25444 25445 25446 25447 48 25604 25605 25606 25607 25608 25609 30428 30429 30430 30431 30432 30433 25418 25419 25420 25421 25422 25423 25442 25443 25444 25445 25446 25447 25388 25389 25390 25391 25392 25393 30170 30171 30172 30173 30174 30175 25568 25569 25570 25571 25572 25573 25628 25629 25630 25631 25632 25633 48 25766 25767 25768 25769 25770 25771 30434 30435 30436 30437 30438 30439 25604 25605 25606 25607 25608 25609 25628 25629 25630 25631 25632 25633 25568 25569 25570 25571 25572 25573 30176 30177 30178 30179 30180 30181 25736 25737 25738 25739 25740 25741 25790 25791 25792 25793 25794 25795 48 25934 25935 25936 25937 25938 25939 30440 30441 30442 30443 30444 30445 25766 25767 25768 25769 25770 25771 25790 25791 25792 25793 25794 25795 25736 25737 25738 25739 25740 25741 30182 30183 30184 30185 30186 30187 25904 25905 25906 25907 25908 25909 25958 25959 25960 25961 25962 25963 48 26108 26109 26110 26111 26112 26113 30446 30447 30448 30449 30450 30451 25934 25935 25936 25937 25938 25939 25958 25959 25960 25961 25962 25963 25904 25905 25906 25907 25908 25909 30188 30189 30190 30191 30192 30193 26078 26079 26080 26081 26082 26083 26132 26133 26134 26135 26136 26137 48 26276 26277 26278 26279 26280 26281 30452 30453 30454 30455 30456 30457 26108 26109 26110 26111 26112 26113 26132 26133 26134 26135 26136 26137 26078 26079 26080 26081 26082 26083 30194 30195 30196 30197 30198 30199 26246 26247 26248 26249 26250 26251 26300 26301 26302 26303 26304 26305 48 26444 26445 26446 26447 26448 26449 30458 30459 30460 30461 30462 30463 26276 26277 26278 26279 26280 26281 26300 26301 26302 26303 26304 26305 26246 26247 26248 26249 26250 26251 30200 30201 30202 30203 30204 30205 26414 26415 26416 26417 26418 26419 26468 26469 26470 26471 26472 26473 48 26630 26631 26632 26633 26634 26635 30464 30465 30466 30467 30468 30469 26444 26445 26446 26447 26448 26449 26468 26469 26470 26471 26472 26473 26414 26415 26416 26417 26418 26419 30206 30207 30208 30209 30210 30211 26594 26595 26596 26597 26598 26599 26654 26655 26656 26657 26658 26659 48 26792 26793 26794 26795 26796 26797 30470 30471 30472 30473 30474 30475 26630 26631 26632 26633 26634 26635 26654 26655 26656 26657 26658 26659 26594 26595 26596 26597 26598 26599 30212 30213 30214 30215 30216 30217 26762 26763 26764 26765 26766 26767 26816 26817 26818 26819 26820 26821 48 26960 26961 26962 26963 26964 26965 30476 30477 30478 30479 30480 30481 26792 26793 26794 26795 26796 26797 26816 26817 26818 26819 26820 26821 26762 26763 26764 26765 26766 26767 30218 30219 30220 30221 30222 30223 26930 26931 26932 26933 26934 26935 26984 26985 26986 26987 26988 26989 48 27134 27135 27136 27137 27138 27139 30482 30483 30484 30485 30486 30487 26960 26961 26962 26963 26964 26965 26984 26985 26986 26987 26988 26989 26930 26931 26932 26933 26934 26935 30224 30225 30226 30227 30228 30229 27104 27105 27106 27107 27108 27109 27158 27159 27160 27161 27162 27163 48 27302 27303 27304 27305 27306 27307 30488 30489 30490 30491 30492 30493 27134 27135 27136 27137 27138 27139 27158 27159 27160 27161 27162 27163 27104 27105 27106 27107 27108 27109 30230 30231 30232 30233 30234 30235 27272 27273 27274 27275 27276 27277 27326 27327 27328 27329 27330 27331 48 27482 27483 27484 27485 27486 27487 30494 30495 30496 30497 30498 30499 27302 27303 27304 27305 27306 27307 27326 27327 27328 27329 27330 27331 27272 27273 27274 27275 27276 27277 30236 30237 30238 30239 30240 30241 27446 27447 27448 27449 27450 27451 27506 27507 27508 27509 27510 27511 48 27662 27663 27664 27665 27666 27667 30500 30501 30502 30503 30504 30505 27482 27483 27484 27485 27486 27487 27506 27507 27508 27509 27510 27511 27446 27447 27448 27449 27450 27451 30242 30243 30244 30245 30246 30247 27626 27627 27628 27629 27630 27631 27686 27687 27688 27689 27690 27691 48 27824 27825 27826 27827 27828 27829 30506 30507 30508 30509 30510 30511 27662 27663 27664 27665 27666 27667 27686 27687 27688 27689 27690 27691 27626 27627 27628 27629 27630 27631 30248 30249 30250 30251 30252 30253 27794 27795 27796 27797 27798 27799 27848 27849 27850 27851 27852 27853 48 27992 27993 27994 27995 27996 27997 30512 30513 30514 30515 30516 30517 27824 27825 27826 27827 27828 27829 27848 27849 27850 27851 27852 27853 27794 27795 27796 27797 27798 27799 30254 30255 30256 30257 30258 30259 27962 27963 27964 27965 27966 27967 28016 28017 28018 28019 28020 28021 48 28166 28167 28168 28169 28170 28171 30518 30519 30520 30521 30522 30523 27992 27993 27994 27995 27996 27997 28016 28017 28018 28019 28020 28021 27962 27963 27964 27965 27966 27967 30260 30261 30262 30263 30264 30265 28136 28137 28138 28139 28140 28141 28190 28191 28192 28193 28194 28195 48 28334 28335 28336 28337 28338 28339 30524 30525 30526 30527 30528 30529 28166 28167 28168 28169 28170 28171 28190 28191 28192 28193 28194 28195 28136 28137 28138 28139 28140 28141 30266 30267 30268 30269 30270 30271 28304 28305 28306 28307 28308 28309 28358 28359 28360 28361 28362 28363 48 28478 28479 28480 28481 28482 28483 30530 30531 30532 30533 30534 30535 28334 28335 28336 28337 28338 28339 28358 28359 28360 28361 28362 28363 28304 28305 28306 28307 28308 28309 30272 30273 30274 30275 30276 30277 21008 21009 21010 21011 21012 21013 28502 28503 28504 28505 28506 28507 48 961 962 963 964 965 966 30536 30537 30538 30539 30540 30541 28478 28479 28480 28481 28482 28483 28502 28503 28504 28505 28506 28507 21008 21009 21010 21011 21012 21013 21002 21003 21004 21005 21006 21007 20996 20997 20998 20999 21000 21001 28628 28629 28630 28631 28632 28633 48 967 968 969 970 971 972 30542 30543 30544 30545 30546 30547 961 962 963 964 965 966 28628 28629 28630 28631 28632 28633 20996 20997 20998 20999 21000 21001 21044 21045 21046 21047 21048 21049 21038 21039 21040 21041 21042 21043 28754 28755 28756 28757 28758 28759 48 973 974 975 976 977 978 30548 30549 30550 30551 30552 30553 967 968 969 970 971 972 28754 28755 28756 28757 28758 28759 21038 21039 21040 21041 21042 21043 21068 21069 21070 21071 21072 21073 21062 21063 21064 21065 21066 21067 28880 28881 28882 28883 28884 28885 48 979 980 981 982 983 984 30554 30555 30556 30557 30558 30559 973 974 975 976 977 978 28880 28881 28882 28883 28884 28885 21062 21063 21064 21065 21066 21067 21092 21093 21094 21095 21096 21097 21086 21087 21088 21089 21090 21091 29018 29019 29020 29021 29022 29023 48 985 986 987 988 989 990 30560 30561 30562 30563 30564 30565 979 980 981 982 983 984 29018 29019 29020 29021 29022 29023 21086 21087 21088 21089 21090 21091 30278 30279 30280 30281 30282 30283 29126 29127 29128 29129 29130 29131 29174 29175 29176 29177 29178 29179 48 991 992 993 994 995 996 30566 30567 30568 30569 30570 30571 985 986 987 988 989 990 29174 29175 29176 29177 29178 29179 29126 29127 29128 29129 29130 29131 30284 30285 30286 30287 30288 30289 29282 29283 29284 29285 29286 29287 29330 29331 29332 29333 29334 29335 48 29474 29475 29476 29477 29478 29479 30572 30573 30574 30575 30576 30577 991 992 993 994 995 996 29330 29331 29332 29333 29334 29335 29282 29283 29284 29285 29286 29287 30290 30291 30292 30293 30294 30295 29444 29445 29446 29447 29448 29449 29498 29499 29500 29501 29502 29503 48 30578 30579 30580 30581 30582 30583 30584 30585 30586 30587 30588 30589 29474 29475 29476 29477 29478 29479 29498 29499 29500 29501 29502 29503 29444 29445 29446 29447 29448 29449 30302 30303 30304 30305 30306 30307 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 48 22706 22707 22708 22709 22710 22711 30596 30597 30598 30599 30600 30601 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 30314 30315 30316 30317 30318 30319 22676 22677 22678 22679 22680 22681 22718 22719 22720 22721 22722 22723 48 22892 22893 22894 22895 22896 22897 30614 30615 30616 30617 30618 30619 22706 22707 22708 22709 22710 22711 22718 22719 22720 22721 22722 22723 22676 22677 22678 22679 22680 22681 30332 30333 30334 30335 30336 30337 22856 22857 22858 22859 22860 22861 22904 22905 22906 22907 22908 22909 48 23072 23073 23074 23075 23076 23077 30620 30621 30622 30623 30624 30625 22892 22893 22894 22895 22896 22897 22904 22905 22906 22907 22908 22909 22856 22857 22858 22859 22860 22861 30338 30339 30340 30341 30342 30343 23036 23037 23038 23039 23040 23041 23084 23085 23086 23087 23088 23089 48 23228 23229 23230 23231 23232 23233 30626 30627 30628 30629 30630 30631 23072 23073 23074 23075 23076 23077 23084 23085 23086 23087 23088 23089 23036 23037 23038 23039 23040 23041 30344 30345 30346 30347 30348 30349 23198 23199 23200 23201 23202 23203 23240 23241 23242 23243 23244 23245 48 23408 23409 23410 23411 23412 23413 30632 30633 30634 30635 30636 30637 23228 23229 23230 23231 23232 23233 23240 23241 23242 23243 23244 23245 23198 23199 23200 23201 23202 23203 30350 30351 30352 30353 30354 30355 23366 23367 23368 23369 23370 23371 23420 23421 23422 23423 23424 23425 48 23588 23589 23590 23591 23592 23593 30638 30639 30640 30641 30642 30643 23408 23409 23410 23411 23412 23413 23420 23421 23422 23423 23424 23425 23366 23367 23368 23369 23370 23371 30356 30357 30358 30359 30360 30361 23552 23553 23554 23555 23556 23557 23600 23601 23602 23603 23604 23605 48 23744 23745 23746 23747 23748 23749 30644 30645 30646 30647 30648 30649 23588 23589 23590 23591 23592 23593 23600 23601 23602 23603 23604 23605 23552 23553 23554 23555 23556 23557 30362 30363 30364 30365 30366 30367 23714 23715 23716 23717 23718 23719 23756 23757 23758 23759 23760 23761 48 23924 23925 23926 23927 23928 23929 30650 30651 30652 30653 30654 30655 23744 23745 23746 23747 23748 23749 23756 23757 23758 23759 23760 23761 23714 23715 23716 23717 23718 23719 30368 30369 30370 30371 30372 30373 23882 23883 23884 23885 23886 23887 23936 23937 23938 23939 23940 23941 48 24098 24099 24100 24101 24102 24103 30656 30657 30658 30659 30660 30661 23924 23925 23926 23927 23928 23929 23936 23937 23938 23939 23940 23941 23882 23883 23884 23885 23886 23887 30374 30375 30376 30377 30378 30379 24056 24057 24058 24059 24060 24061 24110 24111 24112 24113 24114 24115 48 24254 24255 24256 24257 24258 24259 30662 30663 30664 30665 30666 30667 24098 24099 24100 24101 24102 24103 24110 24111 24112 24113 24114 24115 24056 24057 24058 24059 24060 24061 30380 30381 30382 30383 30384 30385 24224 24225 24226 24227 24228 24229 24266 24267 24268 24269 24270 24271 48 24434 24435 24436 24437 24438 24439 30668 30669 30670 30671 30672 30673 24254 24255 24256 24257 24258 24259 24266 24267 24268 24269 24270 24271 24224 24225 24226 24227 24228 24229 30386 30387 30388 30389 30390 30391 24392 24393 24394 24395 24396 24397 24446 24447 24448 24449 24450 24451 48 24614 24615 24616 24617 24618 24619 30674 30675 30676 30677 30678 30679 24434 24435 24436 24437 24438 24439 24446 24447 24448 24449 24450 24451 24392 24393 24394 24395 24396 24397 30392 30393 30394 30395 30396 30397 24578 24579 24580 24581 24582 24583 24626 24627 24628 24629 24630 24631 48 24770 24771 24772 24773 24774 24775 30680 30681 30682 30683 30684 30685 24614 24615 24616 24617 24618 24619 24626 24627 24628 24629 24630 24631 24578 24579 24580 24581 24582 24583 30398 30399 30400 30401 30402 30403 24740 24741 24742 24743 24744 24745 24782 24783 24784 24785 24786 24787 48 24950 24951 24952 24953 24954 24955 30686 30687 30688 30689 30690 30691 24770 24771 24772 24773 24774 24775 24782 24783 24784 24785 24786 24787 24740 24741 24742 24743 24744 24745 30404 30405 30406 30407 30408 30409 24908 24909 24910 24911 24912 24913 24962 24963 24964 24965 24966 24967 48 25124 25125 25126 25127 25128 25129 30692 30693 30694 30695 30696 30697 24950 24951 24952 24953 24954 24955 24962 24963 24964 24965 24966 24967 24908 24909 24910 24911 24912 24913 30410 30411 30412 30413 30414 30415 25082 25083 25084 25085 25086 25087 25136 25137 25138 25139 25140 25141 48 25280 25281 25282 25283 25284 25285 30698 30699 30700 30701 30702 30703 25124 25125 25126 25127 25128 25129 25136 25137 25138 25139 25140 25141 25082 25083 25084 25085 25086 25087 30416 30417 30418 30419 30420 30421 25250 25251 25252 25253 25254 25255 25292 25293 25294 25295 25296 25297 48 25460 25461 25462 25463 25464 25465 30704 30705 30706 30707 30708 30709 25280 25281 25282 25283 25284 25285 25292 25293 25294 25295 25296 25297 25250 25251 25252 25253 25254 25255 30422 30423 30424 30425 30426 30427 25418 25419 25420 25421 25422 25423 25472 25473 25474 25475 25476 25477 48 25640 25641 25642 25643 25644 25645 30710 30711 30712 30713 30714 30715 25460 25461 25462 25463 25464 25465 25472 25473 25474 25475 25476 25477 25418 25419 25420 25421 25422 25423 30428 30429 30430 30431 30432 30433 25604 25605 25606 25607 25608 25609 25652 25653 25654 25655 25656 25657 48 25796 25797 25798 25799 25800 25801 30716 30717 30718 30719 30720 30721 25640 25641 25642 25643 25644 25645 25652 25653 25654 25655 25656 25657 25604 25605 25606 25607 25608 25609 30434 30435 30436 30437 30438 30439 25766 25767 25768 25769 25770 25771 25808 25809 25810 25811 25812 25813 48 25976 25977 25978 25979 25980 25981 30722 30723 30724 30725 30726 30727 25796 25797 25798 25799 25800 25801 25808 25809 25810 25811 25812 25813 25766 25767 25768 25769 25770 25771 30440 30441 30442 30443 30444 30445 25934 25935 25936 25937 25938 25939 25988 25989 25990 25991 25992 25993 48 26150 26151 26152 26153 26154 26155 30728 30729 30730 30731 30732 30733 25976 25977 25978 25979 25980 25981 25988 25989 25990 25991 25992 25993 25934 25935 25936 25937 25938 25939 30446 30447 30448 30449 30450 30451 26108 26109 26110 26111 26112 26113 26162 26163 26164 26165 26166 26167 48 26306 26307 26308 26309 26310 26311 30734 30735 30736 30737 30738 30739 26150 26151 26152 26153 26154 26155 26162 26163 26164 26165 26166 26167 26108 26109 26110 26111 26112 26113 30452 30453 30454 30455 30456 30457 26276 26277 26278 26279 26280 26281 26318 26319 26320 26321 26322 26323 48 26486 26487 26488 26489 26490 26491 30740 30741 30742 30743 30744 30745 26306 26307 26308 26309 26310 26311 26318 26319 26320 26321 26322 26323 26276 26277 26278 26279 26280 26281 30458 30459 30460 30461 30462 30463 26444 26445 26446 26447 26448 26449 26498 26499 26500 26501 26502 26503 48 26666 26667 26668 26669 26670 26671 30746 30747 30748 30749 30750 30751 26486 26487 26488 26489 26490 26491 26498 26499 26500 26501 26502 26503 26444 26445 26446 26447 26448 26449 30464 30465 30466 30467 30468 30469 26630 26631 26632 26633 26634 26635 26678 26679 26680 26681 26682 26683 48 26822 26823 26824 26825 26826 26827 30752 30753 30754 30755 30756 30757 26666 26667 26668 26669 26670 26671 26678 26679 26680 26681 26682 26683 26630 26631 26632 26633 26634 26635 30470 30471 30472 30473 30474 30475 26792 26793 26794 26795 26796 26797 26834 26835 26836 26837 26838 26839 48 27002 27003 27004 27005 27006 27007 30758 30759 30760 30761 30762 30763 26822 26823 26824 26825 26826 26827 26834 26835 26836 26837 26838 26839 26792 26793 26794 26795 26796 26797 30476 30477 30478 30479 30480 30481 26960 26961 26962 26963 26964 26965 27014 27015 27016 27017 27018 27019 48 27176 27177 27178 27179 27180 27181 30764 30765 30766 30767 30768 30769 27002 27003 27004 27005 27006 27007 27014 27015 27016 27017 27018 27019 26960 26961 26962 26963 26964 26965 30482 30483 30484 30485 30486 30487 27134 27135 27136 27137 27138 27139 27188 27189 27190 27191 27192 27193 48 27332 27333 27334 27335 27336 27337 30770 30771 30772 30773 30774 30775 27176 27177 27178 27179 27180 27181 27188 27189 27190 27191 27192 27193 27134 27135 27136 27137 27138 27139 30488 30489 30490 30491 30492 30493 27302 27303 27304 27305 27306 27307 27344 27345 27346 27347 27348 27349 48 27518 27519 27520 27521 27522 27523 30776 30777 30778 30779 30780 30781 27332 27333 27334 27335 27336 27337 27344 27345 27346 27347 27348 27349 27302 27303 27304 27305 27306 27307 30494 30495 30496 30497 30498 30499 27482 27483 27484 27485 27486 27487 27530 27531 27532 27533 27534 27535 48 27698 27699 27700 27701 27702 27703 30782 30783 30784 30785 30786 30787 27518 27519 27520 27521 27522 27523 27530 27531 27532 27533 27534 27535 27482 27483 27484 27485 27486 27487 30500 30501 30502 30503 30504 30505 27662 27663 27664 27665 27666 27667 27710 27711 27712 27713 27714 27715 48 27854 27855 27856 27857 27858 27859 30788 30789 30790 30791 30792 30793 27698 27699 27700 27701 27702 27703 27710 27711 27712 27713 27714 27715 27662 27663 27664 27665 27666 27667 30506 30507 30508 30509 30510 30511 27824 27825 27826 27827 27828 27829 27866 27867 27868 27869 27870 27871 48 28034 28035 28036 28037 28038 28039 30794 30795 30796 30797 30798 30799 27854 27855 27856 27857 27858 27859 27866 27867 27868 27869 27870 27871 27824 27825 27826 27827 27828 27829 30512 30513 30514 30515 30516 30517 27992 27993 27994 27995 27996 27997 28046 28047 28048 28049 28050 28051 48 28208 28209 28210 28211 28212 28213 30800 30801 30802 30803 30804 30805 28034 28035 28036 28037 28038 28039 28046 28047 28048 28049 28050 28051 27992 27993 27994 27995 27996 27997 30518 30519 30520 30521 30522 30523 28166 28167 28168 28169 28170 28171 28220 28221 28222 28223 28224 28225 48 28364 28365 28366 28367 28368 28369 30806 30807 30808 30809 30810 30811 28208 28209 28210 28211 28212 28213 28220 28221 28222 28223 28224 28225 28166 28167 28168 28169 28170 28171 30524 30525 30526 30527 30528 30529 28334 28335 28336 28337 28338 28339 28376 28377 28378 28379 28380 28381 48 28514 28515 28516 28517 28518 28519 30812 30813 30814 30815 30816 30817 28364 28365 28366 28367 28368 28369 28376 28377 28378 28379 28380 28381 28334 28335 28336 28337 28338 28339 30530 30531 30532 30533 30534 30535 28478 28479 28480 28481 28482 28483 28526 28527 28528 28529 28530 28531 48 28634 28635 28636 28637 28638 28639 30818 30819 30820 30821 30822 30823 28514 28515 28516 28517 28518 28519 28526 28527 28528 28529 28530 28531 28478 28479 28480 28481 28482 28483 30536 30537 30538 30539 30540 30541 961 962 963 964 965 966 28646 28647 28648 28649 28650 28651 48 28760 28761 28762 28763 28764 28765 30824 30825 30826 30827 30828 30829 28634 28635 28636 28637 28638 28639 28646 28647 28648 28649 28650 28651 961 962 963 964 965 966 30542 30543 30544 30545 30546 30547 967 968 969 970 971 972 28772 28773 28774 28775 28776 28777 48 28886 28887 28888 28889 28890 28891 30830 30831 30832 30833 30834 30835 28760 28761 28762 28763 28764 28765 28772 28773 28774 28775 28776 28777 967 968 969 970 971 972 30548 30549 30550 30551 30552 30553 973 974 975 976 977 978 28898 28899 28900 28901 28902 28903 48 29024 29025 29026 29027 29028 29029 30836 30837 30838 30839 30840 30841 28886 28887 28888 28889 28890 28891 28898 28899 28900 28901 28902 28903 973 974 975 976 977 978 30554 30555 30556 30557 30558 30559 979 980 981 982 983 984 29036 29037 29038 29039 29040 29041 48 29180 29181 29182 29183 29184 29185 30842 30843 30844 30845 30846 30847 29024 29025 29026 29027 29028 29029 29036 29037 29038 29039 29040 29041 979 980 981 982 983 984 30560 30561 30562 30563 30564 30565 985 986 987 988 989 990 29192 29193 29194 29195 29196 29197 48 29336 29337 29338 29339 29340 29341 30848 30849 30850 30851 30852 30853 29180 29181 29182 29183 29184 29185 29192 29193 29194 29195 29196 29197 985 986 987 988 989 990 30566 30567 30568 30569 30570 30571 991 992 993 994 995 996 29348 29349 29350 29351 29352 29353 48 29516 29517 29518 29519 29520 29521 30854 30855 30856 30857 30858 30859 29336 29337 29338 29339 29340 29341 29348 29349 29350 29351 29352 29353 991 992 993 994 995 996 30572 30573 30574 30575 30576 30577 29474 29475 29476 29477 29478 29479 29528 29529 29530 29531 29532 29533 48 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 29516 29517 29518 29519 29520 29521 29528 29529 29530 29531 29532 29533 29474 29475 29476 29477 29478 29479 30584 30585 30586 30587 30588 30589 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 36 30884 30885 30886 30887 30888 30889 30896 30897 30898 30899 30900 30901 22598 22599 22600 22601 22602 22603 30890 30891 30892 30893 30894 30895 30902 30903 30904 30905 30906 30907 30878 30879 30880 30881 30882 30883 48 22586 22587 22588 22589 22590 22591 30908 30909 30910 30911 30912 30913 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 22598 22599 22600 22601 22602 22603 22592 22593 22594 22595 22596 22597 48 22748 22749 22750 22751 22752 22753 30926 30927 30928 30929 30930 30931 22586 22587 22588 22589 22590 22591 22592 22593 22594 22595 22596 22597 22598 22599 22600 22601 22602 22603 30932 30933 30934 30935 30936 30937 22760 22761 22762 22763 22764 22765 22754 22755 22756 22757 22758 22759 48 22928 22929 22930 22931 22932 22933 30938 30939 30940 30941 30942 30943 22748 22749 22750 22751 22752 22753 22754 22755 22756 22757 22758 22759 22760 22761 22762 22763 22764 22765 30944 30945 30946 30947 30948 30949 22940 22941 22942 22943 22944 22945 22934 22935 22936 22937 22938 22939 48 23108 23109 23110 23111 23112 23113 30950 30951 30952 30953 30954 30955 22928 22929 22930 22931 22932 22933 22934 22935 22936 22937 22938 22939 22940 22941 22942 22943 22944 22945 30956 30957 30958 30959 30960 30961 23120 23121 23122 23123 23124 23125 23114 23115 23116 23117 23118 23119 48 23270 23271 23272 23273 23274 23275 30962 30963 30964 30965 30966 30967 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 30968 30969 30970 30971 30972 30973 23282 23283 23284 23285 23286 23287 23276 23277 23278 23279 23280 23281 48 23444 23445 23446 23447 23448 23449 30974 30975 30976 30977 30978 30979 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 30980 30981 30982 30983 30984 30985 23456 23457 23458 23459 23460 23461 23450 23451 23452 23453 23454 23455 48 23624 23625 23626 23627 23628 23629 30986 30987 30988 30989 30990 30991 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 30992 30993 30994 30995 30996 30997 23636 23637 23638 23639 23640 23641 23630 23631 23632 23633 23634 23635 48 23786 23787 23788 23789 23790 23791 30998 30999 31000 31001 31002 31003 23624 23625 23626 23627 23628 23629 23630 23631 23632 23633 23634 23635 23636 23637 23638 23639 23640 23641 31004 31005 31006 31007 31008 31009 23798 23799 23800 23801 23802 23803 23792 23793 23794 23795 23796 23797 48 23960 23961 23962 23963 23964 23965 31010 31011 31012 31013 31014 31015 23786 23787 23788 23789 23790 23791 23792 23793 23794 23795 23796 23797 23798 23799 23800 23801 23802 23803 31016 31017 31018 31019 31020 31021 23972 23973 23974 23975 23976 23977 23966 23967 23968 23969 23970 23971 48 24134 24135 24136 24137 24138 24139 31022 31023 31024 31025 31026 31027 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 31028 31029 31030 31031 31032 31033 24146 24147 24148 24149 24150 24151 24140 24141 24142 24143 24144 24145 48 24296 24297 24298 24299 24300 24301 31034 31035 31036 31037 31038 31039 24134 24135 24136 24137 24138 24139 24140 24141 24142 24143 24144 24145 24146 24147 24148 24149 24150 24151 31040 31041 31042 31043 31044 31045 24308 24309 24310 24311 24312 24313 24302 24303 24304 24305 24306 24307 48 24470 24471 24472 24473 24474 24475 31046 31047 31048 31049 31050 31051 24296 24297 24298 24299 24300 24301 24302 24303 24304 24305 24306 24307 24308 24309 24310 24311 24312 24313 31052 31053 31054 31055 31056 31057 24482 24483 24484 24485 24486 24487 24476 24477 24478 24479 24480 24481 48 24650 24651 24652 24653 24654 24655 31058 31059 31060 31061 31062 31063 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479 24480 24481 24482 24483 24484 24485 24486 24487 31064 31065 31066 31067 31068 31069 24662 24663 24664 24665 24666 24667 24656 24657 24658 24659 24660 24661 48 24812 24813 24814 24815 24816 24817 31070 31071 31072 31073 31074 31075 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 31076 31077 31078 31079 31080 31081 24824 24825 24826 24827 24828 24829 24818 24819 24820 24821 24822 24823 48 24986 24987 24988 24989 24990 24991 31082 31083 31084 31085 31086 31087 24812 24813 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 24825 24826 24827 24828 24829 31088 31089 31090 31091 31092 31093 24998 24999 25000 25001 25002 25003 24992 24993 24994 24995 24996 24997 48 25160 25161 25162 25163 25164 25165 31094 31095 31096 31097 31098 31099 24986 24987 24988 24989 24990 24991 24992 24993 24994 24995 24996 24997 24998 24999 25000 25001 25002 25003 31100 31101 31102 31103 31104 31105 25172 25173 25174 25175 25176 25177 25166 25167 25168 25169 25170 25171 48 25322 25323 25324 25325 25326 25327 31106 31107 31108 31109 31110 31111 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 31112 31113 31114 31115 31116 31117 25334 25335 25336 25337 25338 25339 25328 25329 25330 25331 25332 25333 48 25496 25497 25498 25499 25500 25501 31118 31119 31120 31121 31122 31123 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 31124 31125 31126 31127 31128 31129 25508 25509 25510 25511 25512 25513 25502 25503 25504 25505 25506 25507 48 25676 25677 25678 25679 25680 25681 31130 31131 31132 31133 31134 31135 25496 25497 25498 25499 25500 25501 25502 25503 25504 25505 25506 25507 25508 25509 25510 25511 25512 25513 31136 31137 31138 31139 31140 31141 25688 25689 25690 25691 25692 25693 25682 25683 25684 25685 25686 25687 48 25838 25839 25840 25841 25842 25843 31142 31143 31144 31145 31146 31147 25676 25677 25678 25679 25680 25681 25682 25683 25684 25685 25686 25687 25688 25689 25690 25691 25692 25693 31148 31149 31150 31151 31152 31153 25850 25851 25852 25853 25854 25855 25844 25845 25846 25847 25848 25849 48 26012 26013 26014 26015 26016 26017 31154 31155 31156 31157 31158 31159 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 25853 25854 25855 31160 31161 31162 31163 31164 31165 26024 26025 26026 26027 26028 26029 26018 26019 26020 26021 26022 26023 48 26186 26187 26188 26189 26190 26191 31166 31167 31168 31169 31170 31171 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 31172 31173 31174 31175 31176 31177 26198 26199 26200 26201 26202 26203 26192 26193 26194 26195 26196 26197 48 26348 26349 26350 26351 26352 26353 31178 31179 31180 31181 31182 31183 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 31184 31185 31186 31187 31188 31189 26360 26361 26362 26363 26364 26365 26354 26355 26356 26357 26358 26359 48 26522 26523 26524 26525 26526 26527 31190 31191 31192 31193 31194 31195 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 31196 31197 31198 31199 31200 31201 26534 26535 26536 26537 26538 26539 26528 26529 26530 26531 26532 26533 48 26702 26703 26704 26705 26706 26707 31202 31203 31204 31205 31206 31207 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 31208 31209 31210 31211 31212 31213 26714 26715 26716 26717 26718 26719 26708 26709 26710 26711 26712 26713 48 26864 26865 26866 26867 26868 26869 31214 31215 31216 31217 31218 31219 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 31220 31221 31222 31223 31224 31225 26876 26877 26878 26879 26880 26881 26870 26871 26872 26873 26874 26875 48 27038 27039 27040 27041 27042 27043 31226 31227 31228 31229 31230 31231 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 31232 31233 31234 31235 31236 31237 27050 27051 27052 27053 27054 27055 27044 27045 27046 27047 27048 27049 48 27212 27213 27214 27215 27216 27217 31238 31239 31240 31241 31242 31243 27038 27039 27040 27041 27042 27043 27044 27045 27046 27047 27048 27049 27050 27051 27052 27053 27054 27055 31244 31245 31246 31247 31248 31249 27224 27225 27226 27227 27228 27229 27218 27219 27220 27221 27222 27223 48 27374 27375 27376 27377 27378 27379 31250 31251 31252 31253 31254 31255 27212 27213 27214 27215 27216 27217 27218 27219 27220 27221 27222 27223 27224 27225 27226 27227 27228 27229 31256 31257 31258 31259 31260 31261 27386 27387 27388 27389 27390 27391 27380 27381 27382 27383 27384 27385 48 27554 27555 27556 27557 27558 27559 31262 31263 31264 31265 31266 31267 27374 27375 27376 27377 27378 27379 27380 27381 27382 27383 27384 27385 27386 27387 27388 27389 27390 27391 31268 31269 31270 31271 31272 31273 27566 27567 27568 27569 27570 27571 27560 27561 27562 27563 27564 27565 48 27734 27735 27736 27737 27738 27739 31274 31275 31276 31277 31278 31279 27554 27555 27556 27557 27558 27559 27560 27561 27562 27563 27564 27565 27566 27567 27568 27569 27570 27571 31280 31281 31282 31283 31284 31285 27746 27747 27748 27749 27750 27751 27740 27741 27742 27743 27744 27745 48 27896 27897 27898 27899 27900 27901 31286 31287 31288 31289 31290 31291 27734 27735 27736 27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 27747 27748 27749 27750 27751 31292 31293 31294 31295 31296 31297 27908 27909 27910 27911 27912 27913 27902 27903 27904 27905 27906 27907 48 28070 28071 28072 28073 28074 28075 31298 31299 31300 31301 31302 31303 27896 27897 27898 27899 27900 27901 27902 27903 27904 27905 27906 27907 27908 27909 27910 27911 27912 27913 31304 31305 31306 31307 31308 31309 28082 28083 28084 28085 28086 28087 28076 28077 28078 28079 28080 28081 48 28244 28245 28246 28247 28248 28249 31310 31311 31312 31313 31314 31315 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 28087 31316 31317 31318 31319 31320 31321 28256 28257 28258 28259 28260 28261 28250 28251 28252 28253 28254 28255 48 28400 28401 28402 28403 28404 28405 31322 31323 31324 31325 31326 31327 28244 28245 28246 28247 28248 28249 28250 28251 28252 28253 28254 28255 28256 28257 28258 28259 28260 28261 31328 31329 31330 31331 31332 31333 28412 28413 28414 28415 28416 28417 28406 28407 28408 28409 28410 28411 48 28544 28545 28546 28547 28548 28549 31334 31335 31336 31337 31338 31339 28400 28401 28402 28403 28404 28405 28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 31340 31341 31342 31343 31344 31345 21158 21159 21160 21161 21162 21163 28550 28551 28552 28553 28554 28555 48 28670 28671 28672 28673 28674 28675 31346 31347 31348 31349 31350 31351 28544 28545 28546 28547 28548 28549 28550 28551 28552 28553 28554 28555 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 21134 21135 21136 21137 21138 21139 28676 28677 28678 28679 28680 28681 48 28796 28797 28798 28799 28800 28801 31352 31353 31354 31355 31356 31357 28670 28671 28672 28673 28674 28675 28676 28677 28678 28679 28680 28681 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 21176 21177 21178 21179 21180 21181 28802 28803 28804 28805 28806 28807 48 28922 28923 28924 28925 28926 28927 31358 31359 31360 31361 31362 31363 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 21176 21177 21178 21179 21180 21181 31364 31365 31366 31367 31368 31369 28934 28935 28936 28937 28938 28939 28928 28929 28930 28931 28932 28933 48 29066 29067 29068 29069 29070 29071 31370 31371 31372 31373 31374 31375 28922 28923 28924 28925 28926 28927 28928 28929 28930 28931 28932 28933 28934 28935 28936 28937 28938 28939 31376 31377 31378 31379 31380 31381 29078 29079 29080 29081 29082 29083 29072 29073 29074 29075 29076 29077 48 29222 29223 29224 29225 29226 29227 31382 31383 31384 31385 31386 31387 29066 29067 29068 29069 29070 29071 29072 29073 29074 29075 29076 29077 29078 29079 29080 29081 29082 29083 31388 31389 31390 31391 31392 31393 29234 29235 29236 29237 29238 29239 29228 29229 29230 29231 29232 29233 48 29378 29379 29380 29381 29382 29383 31394 31395 31396 31397 31398 31399 29222 29223 29224 29225 29226 29227 29228 29229 29230 29231 29232 29233 29234 29235 29236 29237 29238 29239 31400 31401 31402 31403 31404 31405 29390 29391 29392 29393 29394 29395 29384 29385 29386 29387 29388 29389 48 31406 31407 31408 31409 31410 31411 31412 31413 31414 31415 31416 31417 29378 29379 29380 29381 29382 29383 29384 29385 29386 29387 29388 29389 29390 29391 29392 29393 29394 29395 31424 31425 31426 31427 31428 31429 31418 31419 31420 31421 31422 31423 31430 31431 31432 31433 31434 31435 48 22628 22629 22630 22631 22632 22633 31436 31437 31438 31439 31440 31441 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 30914 30915 30916 30917 30918 30919 30908 30909 30910 30911 30912 30913 22586 22587 22588 22589 22590 22591 22634 22635 22636 22637 22638 22639 48 22796 22797 22798 22799 22800 22801 31454 31455 31456 31457 31458 31459 22628 22629 22630 22631 22632 22633 22634 22635 22636 22637 22638 22639 22586 22587 22588 22589 22590 22591 30926 30927 30928 30929 30930 30931 22748 22749 22750 22751 22752 22753 22802 22803 22804 22805 22806 22807 48 22976 22977 22978 22979 22980 22981 31460 31461 31462 31463 31464 31465 22796 22797 22798 22799 22800 22801 22802 22803 22804 22805 22806 22807 22748 22749 22750 22751 22752 22753 30938 30939 30940 30941 30942 30943 22928 22929 22930 22931 22932 22933 22982 22983 22984 22985 22986 22987 48 23150 23151 23152 23153 23154 23155 31466 31467 31468 31469 31470 31471 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22928 22929 22930 22931 22932 22933 30950 30951 30952 30953 30954 30955 23108 23109 23110 23111 23112 23113 23156 23157 23158 23159 23160 23161 48 23318 23319 23320 23321 23322 23323 31472 31473 31474 31475 31476 31477 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23108 23109 23110 23111 23112 23113 30962 30963 30964 30965 30966 30967 23270 23271 23272 23273 23274 23275 23324 23325 23326 23327 23328 23329 48 23492 23493 23494 23495 23496 23497 31478 31479 31480 31481 31482 31483 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23270 23271 23272 23273 23274 23275 30974 30975 30976 30977 30978 30979 23444 23445 23446 23447 23448 23449 23498 23499 23500 23501 23502 23503 48 23666 23667 23668 23669 23670 23671 31484 31485 31486 31487 31488 31489 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 23502 23503 23444 23445 23446 23447 23448 23449 30986 30987 30988 30989 30990 30991 23624 23625 23626 23627 23628 23629 23672 23673 23674 23675 23676 23677 48 23834 23835 23836 23837 23838 23839 31490 31491 31492 31493 31494 31495 23666 23667 23668 23669 23670 23671 23672 23673 23674 23675 23676 23677 23624 23625 23626 23627 23628 23629 30998 30999 31000 31001 31002 31003 23786 23787 23788 23789 23790 23791 23840 23841 23842 23843 23844 23845 48 24008 24009 24010 24011 24012 24013 31496 31497 31498 31499 31500 31501 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23786 23787 23788 23789 23790 23791 31010 31011 31012 31013 31014 31015 23960 23961 23962 23963 23964 23965 24014 24015 24016 24017 24018 24019 48 24176 24177 24178 24179 24180 24181 31502 31503 31504 31505 31506 31507 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 23960 23961 23962 23963 23964 23965 31022 31023 31024 31025 31026 31027 24134 24135 24136 24137 24138 24139 24182 24183 24184 24185 24186 24187 48 24344 24345 24346 24347 24348 24349 31508 31509 31510 31511 31512 31513 24176 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186 24187 24134 24135 24136 24137 24138 24139 31034 31035 31036 31037 31038 31039 24296 24297 24298 24299 24300 24301 24350 24351 24352 24353 24354 24355 48 24518 24519 24520 24521 24522 24523 31514 31515 31516 31517 31518 31519 24344 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 24296 24297 24298 24299 24300 24301 31046 31047 31048 31049 31050 31051 24470 24471 24472 24473 24474 24475 24524 24525 24526 24527 24528 24529 48 24692 24693 24694 24695 24696 24697 31520 31521 31522 31523 31524 31525 24518 24519 24520 24521 24522 24523 24524 24525 24526 24527 24528 24529 24470 24471 24472 24473 24474 24475 31058 31059 31060 31061 31062 31063 24650 24651 24652 24653 24654 24655 24698 24699 24700 24701 24702 24703 48 24860 24861 24862 24863 24864 24865 31526 31527 31528 31529 31530 31531 24692 24693 24694 24695 24696 24697 24698 24699 24700 24701 24702 24703 24650 24651 24652 24653 24654 24655 31070 31071 31072 31073 31074 31075 24812 24813 24814 24815 24816 24817 24866 24867 24868 24869 24870 24871 48 25034 25035 25036 25037 25038 25039 31532 31533 31534 31535 31536 31537 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24812 24813 24814 24815 24816 24817 31082 31083 31084 31085 31086 31087 24986 24987 24988 24989 24990 24991 25040 25041 25042 25043 25044 25045 48 25202 25203 25204 25205 25206 25207 31538 31539 31540 31541 31542 31543 25034 25035 25036 25037 25038 25039 25040 25041 25042 25043 25044 25045 24986 24987 24988 24989 24990 24991 31094 31095 31096 31097 31098 31099 25160 25161 25162 25163 25164 25165 25208 25209 25210 25211 25212 25213 48 25370 25371 25372 25373 25374 25375 31544 31545 31546 31547 31548 31549 25202 25203 25204 25205 25206 25207 25208 25209 25210 25211 25212 25213 25160 25161 25162 25163 25164 25165 31106 31107 31108 31109 31110 31111 25322 25323 25324 25325 25326 25327 25376 25377 25378 25379 25380 25381 48 25544 25545 25546 25547 25548 25549 31550 31551 31552 31553 31554 31555 25370 25371 25372 25373 25374 25375 25376 25377 25378 25379 25380 25381 25322 25323 25324 25325 25326 25327 31118 31119 31120 31121 31122 31123 25496 25497 25498 25499 25500 25501 25550 25551 25552 25553 25554 25555 48 25718 25719 25720 25721 25722 25723 31556 31557 31558 31559 31560 31561 25544 25545 25546 25547 25548 25549 25550 25551 25552 25553 25554 25555 25496 25497 25498 25499 25500 25501 31130 31131 31132 31133 31134 31135 25676 25677 25678 25679 25680 25681 25724 25725 25726 25727 25728 25729 48 25886 25887 25888 25889 25890 25891 31562 31563 31564 31565 31566 31567 25718 25719 25720 25721 25722 25723 25724 25725 25726 25727 25728 25729 25676 25677 25678 25679 25680 25681 31142 31143 31144 31145 31146 31147 25838 25839 25840 25841 25842 25843 25892 25893 25894 25895 25896 25897 48 26060 26061 26062 26063 26064 26065 31568 31569 31570 31571 31572 31573 25886 25887 25888 25889 25890 25891 25892 25893 25894 25895 25896 25897 25838 25839 25840 25841 25842 25843 31154 31155 31156 31157 31158 31159 26012 26013 26014 26015 26016 26017 26066 26067 26068 26069 26070 26071 48 26228 26229 26230 26231 26232 26233 31574 31575 31576 31577 31578 31579 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26012 26013 26014 26015 26016 26017 31166 31167 31168 31169 31170 31171 26186 26187 26188 26189 26190 26191 26234 26235 26236 26237 26238 26239 48 26396 26397 26398 26399 26400 26401 31580 31581 31582 31583 31584 31585 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26186 26187 26188 26189 26190 26191 31178 31179 31180 31181 31182 31183 26348 26349 26350 26351 26352 26353 26402 26403 26404 26405 26406 26407 48 26570 26571 26572 26573 26574 26575 31586 31587 31588 31589 31590 31591 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26348 26349 26350 26351 26352 26353 31190 31191 31192 31193 31194 31195 26522 26523 26524 26525 26526 26527 26576 26577 26578 26579 26580 26581 48 26744 26745 26746 26747 26748 26749 31592 31593 31594 31595 31596 31597 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26522 26523 26524 26525 26526 26527 31202 31203 31204 31205 31206 31207 26702 26703 26704 26705 26706 26707 26750 26751 26752 26753 26754 26755 48 26912 26913 26914 26915 26916 26917 31598 31599 31600 31601 31602 31603 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26702 26703 26704 26705 26706 26707 31214 31215 31216 31217 31218 31219 26864 26865 26866 26867 26868 26869 26918 26919 26920 26921 26922 26923 48 27086 27087 27088 27089 27090 27091 31604 31605 31606 31607 31608 31609 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26864 26865 26866 26867 26868 26869 31226 31227 31228 31229 31230 31231 27038 27039 27040 27041 27042 27043 27092 27093 27094 27095 27096 27097 48 27254 27255 27256 27257 27258 27259 31610 31611 31612 31613 31614 31615 27086 27087 27088 27089 27090 27091 27092 27093 27094 27095 27096 27097 27038 27039 27040 27041 27042 27043 31238 31239 31240 31241 31242 31243 27212 27213 27214 27215 27216 27217 27260 27261 27262 27263 27264 27265 48 27422 27423 27424 27425 27426 27427 31616 31617 31618 31619 31620 31621 27254 27255 27256 27257 27258 27259 27260 27261 27262 27263 27264 27265 27212 27213 27214 27215 27216 27217 31250 31251 31252 31253 31254 31255 27374 27375 27376 27377 27378 27379 27428 27429 27430 27431 27432 27433 48 27602 27603 27604 27605 27606 27607 31622 31623 31624 31625 31626 31627 27422 27423 27424 27425 27426 27427 27428 27429 27430 27431 27432 27433 27374 27375 27376 27377 27378 27379 31262 31263 31264 31265 31266 31267 27554 27555 27556 27557 27558 27559 27608 27609 27610 27611 27612 27613 48 27776 27777 27778 27779 27780 27781 31628 31629 31630 31631 31632 31633 27602 27603 27604 27605 27606 27607 27608 27609 27610 27611 27612 27613 27554 27555 27556 27557 27558 27559 31274 31275 31276 31277 31278 31279 27734 27735 27736 27737 27738 27739 27782 27783 27784 27785 27786 27787 48 27944 27945 27946 27947 27948 27949 31634 31635 31636 31637 31638 31639 27776 27777 27778 27779 27780 27781 27782 27783 27784 27785 27786 27787 27734 27735 27736 27737 27738 27739 31286 31287 31288 31289 31290 31291 27896 27897 27898 27899 27900 27901 27950 27951 27952 27953 27954 27955 48 28118 28119 28120 28121 28122 28123 31640 31641 31642 31643 31644 31645 27944 27945 27946 27947 27948 27949 27950 27951 27952 27953 27954 27955 27896 27897 27898 27899 27900 27901 31298 31299 31300 31301 31302 31303 28070 28071 28072 28073 28074 28075 28124 28125 28126 28127 28128 28129 48 28286 28287 28288 28289 28290 28291 31646 31647 31648 31649 31650 31651 28118 28119 28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 28070 28071 28072 28073 28074 28075 31310 31311 31312 31313 31314 31315 28244 28245 28246 28247 28248 28249 28292 28293 28294 28295 28296 28297 48 28436 28437 28438 28439 28440 28441 31652 31653 31654 31655 31656 31657 28286 28287 28288 28289 28290 28291 28292 28293 28294 28295 28296 28297 28244 28245 28246 28247 28248 28249 31322 31323 31324 31325 31326 31327 28400 28401 28402 28403 28404 28405 28442 28443 28444 28445 28446 28447 48 28568 28569 28570 28571 28572 28573 31658 31659 31660 31661 31662 31663 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28400 28401 28402 28403 28404 28405 31334 31335 31336 31337 31338 31339 28544 28545 28546 28547 28548 28549 28574 28575 28576 28577 28578 28579 48 28694 28695 28696 28697 28698 28699 31664 31665 31666 31667 31668 31669 28568 28569 28570 28571 28572 28573 28574 28575 28576 28577 28578 28579 28544 28545 28546 28547 28548 28549 31346 31347 31348 31349 31350 31351 28670 28671 28672 28673 28674 28675 28700 28701 28702 28703 28704 28705 48 28820 28821 28822 28823 28824 28825 31670 31671 31672 31673 31674 31675 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28670 28671 28672 28673 28674 28675 31352 31353 31354 31355 31356 31357 28796 28797 28798 28799 28800 28801 28826 28827 28828 28829 28830 28831 48 28958 28959 28960 28961 28962 28963 31676 31677 31678 31679 31680 31681 28820 28821 28822 28823 28824 28825 28826 28827 28828 28829 28830 28831 28796 28797 28798 28799 28800 28801 31358 31359 31360 31361 31362 31363 28922 28923 28924 28925 28926 28927 28964 28965 28966 28967 28968 28969 48 29108 29109 29110 29111 29112 29113 31682 31683 31684 31685 31686 31687 28958 28959 28960 28961 28962 28963 28964 28965 28966 28967 28968 28969 28922 28923 28924 28925 28926 28927 31370 31371 31372 31373 31374 31375 29066 29067 29068 29069 29070 29071 29114 29115 29116 29117 29118 29119 48 29264 29265 29266 29267 29268 29269 31688 31689 31690 31691 31692 31693 29108 29109 29110 29111 29112 29113 29114 29115 29116 29117 29118 29119 29066 29067 29068 29069 29070 29071 31382 31383 31384 31385 31386 31387 29222 29223 29224 29225 29226 29227 29270 29271 29272 29273 29274 29275 48 29426 29427 29428 29429 29430 29431 31694 31695 31696 31697 31698 31699 29264 29265 29266 29267 29268 29269 29270 29271 29272 29273 29274 29275 29222 29223 29224 29225 29226 29227 31394 31395 31396 31397 31398 31399 29378 29379 29380 29381 29382 29383 29432 29433 29434 29435 29436 29437 48 31700 31701 31702 31703 31704 31705 31706 31707 31708 31709 31710 31711 29426 29427 29428 29429 29430 29431 29432 29433 29434 29435 29436 29437 29378 29379 29380 29381 29382 29383 31412 31413 31414 31415 31416 31417 31406 31407 31408 31409 31410 31411 31712 31713 31714 31715 31716 31717 48 22658 22659 22660 22661 22662 22663 31718 31719 31720 31721 31722 31723 30062 30063 30064 30065 30066 30067 31724 31725 31726 31727 31728 31729 31442 31443 31444 31445 31446 31447 31436 31437 31438 31439 31440 31441 22628 22629 22630 22631 22632 22633 22664 22665 22666 22667 22668 22669 48 22832 22833 22834 22835 22836 22837 31730 31731 31732 31733 31734 31735 22658 22659 22660 22661 22662 22663 22664 22665 22666 22667 22668 22669 22628 22629 22630 22631 22632 22633 31454 31455 31456 31457 31458 31459 22796 22797 22798 22799 22800 22801 22838 22839 22840 22841 22842 22843 48 23012 23013 23014 23015 23016 23017 31736 31737 31738 31739 31740 31741 22832 22833 22834 22835 22836 22837 22838 22839 22840 22841 22842 22843 22796 22797 22798 22799 22800 22801 31460 31461 31462 31463 31464 31465 22976 22977 22978 22979 22980 22981 23018 23019 23020 23021 23022 23023 48 23180 23181 23182 23183 23184 23185 31742 31743 31744 31745 31746 31747 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 22976 22977 22978 22979 22980 22981 31466 31467 31468 31469 31470 31471 23150 23151 23152 23153 23154 23155 23186 23187 23188 23189 23190 23191 48 23348 23349 23350 23351 23352 23353 31748 31749 31750 31751 31752 31753 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23150 23151 23152 23153 23154 23155 31472 31473 31474 31475 31476 31477 23318 23319 23320 23321 23322 23323 23354 23355 23356 23357 23358 23359 48 23528 23529 23530 23531 23532 23533 31754 31755 31756 31757 31758 31759 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23318 23319 23320 23321 23322 23323 31478 31479 31480 31481 31482 31483 23492 23493 23494 23495 23496 23497 23534 23535 23536 23537 23538 23539 48 23696 23697 23698 23699 23700 23701 31760 31761 31762 31763 31764 31765 23528 23529 23530 23531 23532 23533 23534 23535 23536 23537 23538 23539 23492 23493 23494 23495 23496 23497 31484 31485 31486 31487 31488 31489 23666 23667 23668 23669 23670 23671 23702 23703 23704 23705 23706 23707 48 23864 23865 23866 23867 23868 23869 31766 31767 31768 31769 31770 31771 23696 23697 23698 23699 23700 23701 23702 23703 23704 23705 23706 23707 23666 23667 23668 23669 23670 23671 31490 31491 31492 31493 31494 31495 23834 23835 23836 23837 23838 23839 23870 23871 23872 23873 23874 23875 48 24038 24039 24040 24041 24042 24043 31772 31773 31774 31775 31776 31777 23864 23865 23866 23867 23868 23869 23870 23871 23872 23873 23874 23875 23834 23835 23836 23837 23838 23839 31496 31497 31498 31499 31500 31501 24008 24009 24010 24011 24012 24013 24044 24045 24046 24047 24048 24049 48 24206 24207 24208 24209 24210 24211 31778 31779 31780 31781 31782 31783 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24008 24009 24010 24011 24012 24013 31502 31503 31504 31505 31506 31507 24176 24177 24178 24179 24180 24181 24212 24213 24214 24215 24216 24217 48 24374 24375 24376 24377 24378 24379 31784 31785 31786 31787 31788 31789 24206 24207 24208 24209 24210 24211 24212 24213 24214 24215 24216 24217 24176 24177 24178 24179 24180 24181 31508 31509 31510 31511 31512 31513 24344 24345 24346 24347 24348 24349 24380 24381 24382 24383 24384 24385 48 24554 24555 24556 24557 24558 24559 31790 31791 31792 31793 31794 31795 24374 24375 24376 24377 24378 24379 24380 24381 24382 24383 24384 24385 24344 24345 24346 24347 24348 24349 31514 31515 31516 31517 31518 31519 24518 24519 24520 24521 24522 24523 24560 24561 24562 24563 24564 24565 48 24722 24723 24724 24725 24726 24727 31796 31797 31798 31799 31800 31801 24554 24555 24556 24557 24558 24559 24560 24561 24562 24563 24564 24565 24518 24519 24520 24521 24522 24523 31520 31521 31522 31523 31524 31525 24692 24693 24694 24695 24696 24697 24728 24729 24730 24731 24732 24733 48 24890 24891 24892 24893 24894 24895 31802 31803 31804 31805 31806 31807 24722 24723 24724 24725 24726 24727 24728 24729 24730 24731 24732 24733 24692 24693 24694 24695 24696 24697 31526 31527 31528 31529 31530 31531 24860 24861 24862 24863 24864 24865 24896 24897 24898 24899 24900 24901 48 25064 25065 25066 25067 25068 25069 31808 31809 31810 31811 31812 31813 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24860 24861 24862 24863 24864 24865 31532 31533 31534 31535 31536 31537 25034 25035 25036 25037 25038 25039 25070 25071 25072 25073 25074 25075 48 25232 25233 25234 25235 25236 25237 31814 31815 31816 31817 31818 31819 25064 25065 25066 25067 25068 25069 25070 25071 25072 25073 25074 25075 25034 25035 25036 25037 25038 25039 31538 31539 31540 31541 31542 31543 25202 25203 25204 25205 25206 25207 25238 25239 25240 25241 25242 25243 48 25400 25401 25402 25403 25404 25405 31820 31821 31822 31823 31824 31825 25232 25233 25234 25235 25236 25237 25238 25239 25240 25241 25242 25243 25202 25203 25204 25205 25206 25207 31544 31545 31546 31547 31548 31549 25370 25371 25372 25373 25374 25375 25406 25407 25408 25409 25410 25411 48 25580 25581 25582 25583 25584 25585 31826 31827 31828 31829 31830 31831 25400 25401 25402 25403 25404 25405 25406 25407 25408 25409 25410 25411 25370 25371 25372 25373 25374 25375 31550 31551 31552 31553 31554 31555 25544 25545 25546 25547 25548 25549 25586 25587 25588 25589 25590 25591 48 25748 25749 25750 25751 25752 25753 31832 31833 31834 31835 31836 31837 25580 25581 25582 25583 25584 25585 25586 25587 25588 25589 25590 25591 25544 25545 25546 25547 25548 25549 31556 31557 31558 31559 31560 31561 25718 25719 25720 25721 25722 25723 25754 25755 25756 25757 25758 25759 48 25916 25917 25918 25919 25920 25921 31838 31839 31840 31841 31842 31843 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 25759 25718 25719 25720 25721 25722 25723 31562 31563 31564 31565 31566 31567 25886 25887 25888 25889 25890 25891 25922 25923 25924 25925 25926 25927 48 26090 26091 26092 26093 26094 26095 31844 31845 31846 31847 31848 31849 25916 25917 25918 25919 25920 25921 25922 25923 25924 25925 25926 25927 25886 25887 25888 25889 25890 25891 31568 31569 31570 31571 31572 31573 26060 26061 26062 26063 26064 26065 26096 26097 26098 26099 26100 26101 48 26258 26259 26260 26261 26262 26263 31850 31851 31852 31853 31854 31855 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26060 26061 26062 26063 26064 26065 31574 31575 31576 31577 31578 31579 26228 26229 26230 26231 26232 26233 26264 26265 26266 26267 26268 26269 48 26426 26427 26428 26429 26430 26431 31856 31857 31858 31859 31860 31861 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26228 26229 26230 26231 26232 26233 31580 31581 31582 31583 31584 31585 26396 26397 26398 26399 26400 26401 26432 26433 26434 26435 26436 26437 48 26606 26607 26608 26609 26610 26611 31862 31863 31864 31865 31866 31867 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26396 26397 26398 26399 26400 26401 31586 31587 31588 31589 31590 31591 26570 26571 26572 26573 26574 26575 26612 26613 26614 26615 26616 26617 48 26774 26775 26776 26777 26778 26779 31868 31869 31870 31871 31872 31873 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26570 26571 26572 26573 26574 26575 31592 31593 31594 31595 31596 31597 26744 26745 26746 26747 26748 26749 26780 26781 26782 26783 26784 26785 48 26942 26943 26944 26945 26946 26947 31874 31875 31876 31877 31878 31879 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26744 26745 26746 26747 26748 26749 31598 31599 31600 31601 31602 31603 26912 26913 26914 26915 26916 26917 26948 26949 26950 26951 26952 26953 48 27116 27117 27118 27119 27120 27121 31880 31881 31882 31883 31884 31885 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26912 26913 26914 26915 26916 26917 31604 31605 31606 31607 31608 31609 27086 27087 27088 27089 27090 27091 27122 27123 27124 27125 27126 27127 48 27284 27285 27286 27287 27288 27289 31886 31887 31888 31889 31890 31891 27116 27117 27118 27119 27120 27121 27122 27123 27124 27125 27126 27127 27086 27087 27088 27089 27090 27091 31610 31611 31612 31613 31614 31615 27254 27255 27256 27257 27258 27259 27290 27291 27292 27293 27294 27295 48 27458 27459 27460 27461 27462 27463 31892 31893 31894 31895 31896 31897 27284 27285 27286 27287 27288 27289 27290 27291 27292 27293 27294 27295 27254 27255 27256 27257 27258 27259 31616 31617 31618 31619 31620 31621 27422 27423 27424 27425 27426 27427 27464 27465 27466 27467 27468 27469 48 27638 27639 27640 27641 27642 27643 31898 31899 31900 31901 31902 31903 27458 27459 27460 27461 27462 27463 27464 27465 27466 27467 27468 27469 27422 27423 27424 27425 27426 27427 31622 31623 31624 31625 31626 31627 27602 27603 27604 27605 27606 27607 27644 27645 27646 27647 27648 27649 48 27806 27807 27808 27809 27810 27811 31904 31905 31906 31907 31908 31909 27638 27639 27640 27641 27642 27643 27644 27645 27646 27647 27648 27649 27602 27603 27604 27605 27606 27607 31628 31629 31630 31631 31632 31633 27776 27777 27778 27779 27780 27781 27812 27813 27814 27815 27816 27817 48 27974 27975 27976 27977 27978 27979 31910 31911 31912 31913 31914 31915 27806 27807 27808 27809 27810 27811 27812 27813 27814 27815 27816 27817 27776 27777 27778 27779 27780 27781 31634 31635 31636 31637 31638 31639 27944 27945 27946 27947 27948 27949 27980 27981 27982 27983 27984 27985 48 28148 28149 28150 28151 28152 28153 31916 31917 31918 31919 31920 31921 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27944 27945 27946 27947 27948 27949 31640 31641 31642 31643 31644 31645 28118 28119 28120 28121 28122 28123 28154 28155 28156 28157 28158 28159 48 28316 28317 28318 28319 28320 28321 31922 31923 31924 31925 31926 31927 28148 28149 28150 28151 28152 28153 28154 28155 28156 28157 28158 28159 28118 28119 28120 28121 28122 28123 31646 31647 31648 31649 31650 31651 28286 28287 28288 28289 28290 28291 28322 28323 28324 28325 28326 28327 48 28460 28461 28462 28463 28464 28465 31928 31929 31930 31931 31932 31933 28316 28317 28318 28319 28320 28321 28322 28323 28324 28325 28326 28327 28286 28287 28288 28289 28290 28291 31652 31653 31654 31655 31656 31657 28436 28437 28438 28439 28440 28441 28466 28467 28468 28469 28470 28471 48 28592 28593 28594 28595 28596 28597 31934 31935 31936 31937 31938 31939 28460 28461 28462 28463 28464 28465 28466 28467 28468 28469 28470 28471 28436 28437 28438 28439 28440 28441 31658 31659 31660 31661 31662 31663 28568 28569 28570 28571 28572 28573 28598 28599 28600 28601 28602 28603 48 28718 28719 28720 28721 28722 28723 31940 31941 31942 31943 31944 31945 28592 28593 28594 28595 28596 28597 28598 28599 28600 28601 28602 28603 28568 28569 28570 28571 28572 28573 31664 31665 31666 31667 31668 31669 28694 28695 28696 28697 28698 28699 28724 28725 28726 28727 28728 28729 48 28844 28845 28846 28847 28848 28849 31946 31947 31948 31949 31950 31951 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 28728 28729 28694 28695 28696 28697 28698 28699 31670 31671 31672 31673 31674 31675 28820 28821 28822 28823 28824 28825 28850 28851 28852 28853 28854 28855 48 28982 28983 28984 28985 28986 28987 31952 31953 31954 31955 31956 31957 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854 28855 28820 28821 28822 28823 28824 28825 31676 31677 31678 31679 31680 31681 28958 28959 28960 28961 28962 28963 28988 28989 28990 28991 28992 28993 48 29138 29139 29140 29141 29142 29143 31958 31959 31960 31961 31962 31963 28982 28983 28984 28985 28986 28987 28988 28989 28990 28991 28992 28993 28958 28959 28960 28961 28962 28963 31682 31683 31684 31685 31686 31687 29108 29109 29110 29111 29112 29113 29144 29145 29146 29147 29148 29149 48 29294 29295 29296 29297 29298 29299 31964 31965 31966 31967 31968 31969 29138 29139 29140 29141 29142 29143 29144 29145 29146 29147 29148 29149 29108 29109 29110 29111 29112 29113 31688 31689 31690 31691 31692 31693 29264 29265 29266 29267 29268 29269 29300 29301 29302 29303 29304 29305 48 29456 29457 29458 29459 29460 29461 31970 31971 31972 31973 31974 31975 29294 29295 29296 29297 29298 29299 29300 29301 29302 29303 29304 29305 29264 29265 29266 29267 29268 29269 31694 31695 31696 31697 31698 31699 29426 29427 29428 29429 29430 29431 29462 29463 29464 29465 29466 29467 48 30296 30297 30298 30299 30300 30301 31976 31977 31978 31979 31980 31981 29456 29457 29458 29459 29460 29461 29462 29463 29464 29465 29466 29467 29426 29427 29428 29429 29430 29431 31706 31707 31708 31709 31710 31711 31700 31701 31702 31703 31704 31705 31982 31983 31984 31985 31986 31987 48 22688 22689 22690 22691 22692 22693 31988 31989 31990 31991 31992 31993 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 31718 31719 31720 31721 31722 31723 22658 22659 22660 22661 22662 22663 22694 22695 22696 22697 22698 22699 48 22868 22869 22870 22871 22872 22873 31994 31995 31996 31997 31998 31999 22688 22689 22690 22691 22692 22693 22694 22695 22696 22697 22698 22699 22658 22659 22660 22661 22662 22663 31730 31731 31732 31733 31734 31735 22832 22833 22834 22835 22836 22837 22874 22875 22876 22877 22878 22879 48 23048 23049 23050 23051 23052 23053 32000 32001 32002 32003 32004 32005 22868 22869 22870 22871 22872 22873 22874 22875 22876 22877 22878 22879 22832 22833 22834 22835 22836 22837 31736 31737 31738 31739 31740 31741 23012 23013 23014 23015 23016 23017 23054 23055 23056 23057 23058 23059 48 23210 23211 23212 23213 23214 23215 32006 32007 32008 32009 32010 32011 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23012 23013 23014 23015 23016 23017 31742 31743 31744 31745 31746 31747 23180 23181 23182 23183 23184 23185 23216 23217 23218 23219 23220 23221 48 23378 23379 23380 23381 23382 23383 32012 32013 32014 32015 32016 32017 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23180 23181 23182 23183 23184 23185 31748 31749 31750 31751 31752 31753 23348 23349 23350 23351 23352 23353 23384 23385 23386 23387 23388 23389 48 23564 23565 23566 23567 23568 23569 32018 32019 32020 32021 32022 32023 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23348 23349 23350 23351 23352 23353 31754 31755 31756 31757 31758 31759 23528 23529 23530 23531 23532 23533 23570 23571 23572 23573 23574 23575 48 23726 23727 23728 23729 23730 23731 32024 32025 32026 32027 32028 32029 23564 23565 23566 23567 23568 23569 23570 23571 23572 23573 23574 23575 23528 23529 23530 23531 23532 23533 31760 31761 31762 31763 31764 31765 23696 23697 23698 23699 23700 23701 23732 23733 23734 23735 23736 23737 48 23894 23895 23896 23897 23898 23899 32030 32031 32032 32033 32034 32035 23726 23727 23728 23729 23730 23731 23732 23733 23734 23735 23736 23737 23696 23697 23698 23699 23700 23701 31766 31767 31768 31769 31770 31771 23864 23865 23866 23867 23868 23869 23900 23901 23902 23903 23904 23905 48 24068 24069 24070 24071 24072 24073 32036 32037 32038 32039 32040 32041 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23864 23865 23866 23867 23868 23869 31772 31773 31774 31775 31776 31777 24038 24039 24040 24041 24042 24043 24074 24075 24076 24077 24078 24079 48 24236 24237 24238 24239 24240 24241 32042 32043 32044 32045 32046 32047 24068 24069 24070 24071 24072 24073 24074 24075 24076 24077 24078 24079 24038 24039 24040 24041 24042 24043 31778 31779 31780 31781 31782 31783 24206 24207 24208 24209 24210 24211 24242 24243 24244 24245 24246 24247 48 24404 24405 24406 24407 24408 24409 32048 32049 32050 32051 32052 32053 24236 24237 24238 24239 24240 24241 24242 24243 24244 24245 24246 24247 24206 24207 24208 24209 24210 24211 31784 31785 31786 31787 31788 31789 24374 24375 24376 24377 24378 24379 24410 24411 24412 24413 24414 24415 48 24590 24591 24592 24593 24594 24595 32054 32055 32056 32057 32058 32059 24404 24405 24406 24407 24408 24409 24410 24411 24412 24413 24414 24415 24374 24375 24376 24377 24378 24379 31790 31791 31792 31793 31794 31795 24554 24555 24556 24557 24558 24559 24596 24597 24598 24599 24600 24601 48 24752 24753 24754 24755 24756 24757 32060 32061 32062 32063 32064 32065 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24554 24555 24556 24557 24558 24559 31796 31797 31798 31799 31800 31801 24722 24723 24724 24725 24726 24727 24758 24759 24760 24761 24762 24763 48 24920 24921 24922 24923 24924 24925 32066 32067 32068 32069 32070 32071 24752 24753 24754 24755 24756 24757 24758 24759 24760 24761 24762 24763 24722 24723 24724 24725 24726 24727 31802 31803 31804 31805 31806 31807 24890 24891 24892 24893 24894 24895 24926 24927 24928 24929 24930 24931 48 25094 25095 25096 25097 25098 25099 32072 32073 32074 32075 32076 32077 24920 24921 24922 24923 24924 24925 24926 24927 24928 24929 24930 24931 24890 24891 24892 24893 24894 24895 31808 31809 31810 31811 31812 31813 25064 25065 25066 25067 25068 25069 25100 25101 25102 25103 25104 25105 48 25262 25263 25264 25265 25266 25267 32078 32079 32080 32081 32082 32083 25094 25095 25096 25097 25098 25099 25100 25101 25102 25103 25104 25105 25064 25065 25066 25067 25068 25069 31814 31815 31816 31817 31818 31819 25232 25233 25234 25235 25236 25237 25268 25269 25270 25271 25272 25273 48 25430 25431 25432 25433 25434 25435 32084 32085 32086 32087 32088 32089 25262 25263 25264 25265 25266 25267 25268 25269 25270 25271 25272 25273 25232 25233 25234 25235 25236 25237 31820 31821 31822 31823 31824 31825 25400 25401 25402 25403 25404 25405 25436 25437 25438 25439 25440 25441 48 25616 25617 25618 25619 25620 25621 32090 32091 32092 32093 32094 32095 25430 25431 25432 25433 25434 25435 25436 25437 25438 25439 25440 25441 25400 25401 25402 25403 25404 25405 31826 31827 31828 31829 31830 31831 25580 25581 25582 25583 25584 25585 25622 25623 25624 25625 25626 25627 48 25778 25779 25780 25781 25782 25783 32096 32097 32098 32099 32100 32101 25616 25617 25618 25619 25620 25621 25622 25623 25624 25625 25626 25627 25580 25581 25582 25583 25584 25585 31832 31833 31834 31835 31836 31837 25748 25749 25750 25751 25752 25753 25784 25785 25786 25787 25788 25789 48 25946 25947 25948 25949 25950 25951 32102 32103 32104 32105 32106 32107 25778 25779 25780 25781 25782 25783 25784 25785 25786 25787 25788 25789 25748 25749 25750 25751 25752 25753 31838 31839 31840 31841 31842 31843 25916 25917 25918 25919 25920 25921 25952 25953 25954 25955 25956 25957 48 26120 26121 26122 26123 26124 26125 32108 32109 32110 32111 32112 32113 25946 25947 25948 25949 25950 25951 25952 25953 25954 25955 25956 25957 25916 25917 25918 25919 25920 25921 31844 31845 31846 31847 31848 31849 26090 26091 26092 26093 26094 26095 26126 26127 26128 26129 26130 26131 48 26288 26289 26290 26291 26292 26293 32114 32115 32116 32117 32118 32119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26090 26091 26092 26093 26094 26095 31850 31851 31852 31853 31854 31855 26258 26259 26260 26261 26262 26263 26294 26295 26296 26297 26298 26299 48 26456 26457 26458 26459 26460 26461 32120 32121 32122 32123 32124 32125 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26258 26259 26260 26261 26262 26263 31856 31857 31858 31859 31860 31861 26426 26427 26428 26429 26430 26431 26462 26463 26464 26465 26466 26467 48 26642 26643 26644 26645 26646 26647 32126 32127 32128 32129 32130 32131 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26426 26427 26428 26429 26430 26431 31862 31863 31864 31865 31866 31867 26606 26607 26608 26609 26610 26611 26648 26649 26650 26651 26652 26653 48 26804 26805 26806 26807 26808 26809 32132 32133 32134 32135 32136 32137 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26606 26607 26608 26609 26610 26611 31868 31869 31870 31871 31872 31873 26774 26775 26776 26777 26778 26779 26810 26811 26812 26813 26814 26815 48 26972 26973 26974 26975 26976 26977 32138 32139 32140 32141 32142 32143 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26774 26775 26776 26777 26778 26779 31874 31875 31876 31877 31878 31879 26942 26943 26944 26945 26946 26947 26978 26979 26980 26981 26982 26983 48 27146 27147 27148 27149 27150 27151 32144 32145 32146 32147 32148 32149 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26942 26943 26944 26945 26946 26947 31880 31881 31882 31883 31884 31885 27116 27117 27118 27119 27120 27121 27152 27153 27154 27155 27156 27157 48 27314 27315 27316 27317 27318 27319 32150 32151 32152 32153 32154 32155 27146 27147 27148 27149 27150 27151 27152 27153 27154 27155 27156 27157 27116 27117 27118 27119 27120 27121 31886 31887 31888 31889 31890 31891 27284 27285 27286 27287 27288 27289 27320 27321 27322 27323 27324 27325 48 27494 27495 27496 27497 27498 27499 32156 32157 32158 32159 32160 32161 27314 27315 27316 27317 27318 27319 27320 27321 27322 27323 27324 27325 27284 27285 27286 27287 27288 27289 31892 31893 31894 31895 31896 31897 27458 27459 27460 27461 27462 27463 27500 27501 27502 27503 27504 27505 48 27674 27675 27676 27677 27678 27679 32162 32163 32164 32165 32166 32167 27494 27495 27496 27497 27498 27499 27500 27501 27502 27503 27504 27505 27458 27459 27460 27461 27462 27463 31898 31899 31900 31901 31902 31903 27638 27639 27640 27641 27642 27643 27680 27681 27682 27683 27684 27685 48 27836 27837 27838 27839 27840 27841 32168 32169 32170 32171 32172 32173 27674 27675 27676 27677 27678 27679 27680 27681 27682 27683 27684 27685 27638 27639 27640 27641 27642 27643 31904 31905 31906 31907 31908 31909 27806 27807 27808 27809 27810 27811 27842 27843 27844 27845 27846 27847 48 28004 28005 28006 28007 28008 28009 32174 32175 32176 32177 32178 32179 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27806 27807 27808 27809 27810 27811 31910 31911 31912 31913 31914 31915 27974 27975 27976 27977 27978 27979 28010 28011 28012 28013 28014 28015 48 28178 28179 28180 28181 28182 28183 32180 32181 32182 32183 32184 32185 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 27974 27975 27976 27977 27978 27979 31916 31917 31918 31919 31920 31921 28148 28149 28150 28151 28152 28153 28184 28185 28186 28187 28188 28189 48 28346 28347 28348 28349 28350 28351 32186 32187 32188 32189 32190 32191 28178 28179 28180 28181 28182 28183 28184 28185 28186 28187 28188 28189 28148 28149 28150 28151 28152 28153 31922 31923 31924 31925 31926 31927 28316 28317 28318 28319 28320 28321 28352 28353 28354 28355 28356 28357 48 28490 28491 28492 28493 28494 28495 32192 32193 32194 32195 32196 32197 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28316 28317 28318 28319 28320 28321 31928 31929 31930 31931 31932 31933 28460 28461 28462 28463 28464 28465 28496 28497 28498 28499 28500 28501 48 28616 28617 28618 28619 28620 28621 32198 32199 32200 32201 32202 32203 28490 28491 28492 28493 28494 28495 28496 28497 28498 28499 28500 28501 28460 28461 28462 28463 28464 28465 31934 31935 31936 31937 31938 31939 28592 28593 28594 28595 28596 28597 28622 28623 28624 28625 28626 28627 48 28742 28743 28744 28745 28746 28747 32204 32205 32206 32207 32208 32209 28616 28617 28618 28619 28620 28621 28622 28623 28624 28625 28626 28627 28592 28593 28594 28595 28596 28597 31940 31941 31942 31943 31944 31945 28718 28719 28720 28721 28722 28723 28748 28749 28750 28751 28752 28753 48 28868 28869 28870 28871 28872 28873 32210 32211 32212 32213 32214 32215 28742 28743 28744 28745 28746 28747 28748 28749 28750 28751 28752 28753 28718 28719 28720 28721 28722 28723 31946 31947 31948 31949 31950 31951 28844 28845 28846 28847 28848 28849 28874 28875 28876 28877 28878 28879 48 29006 29007 29008 29009 29010 29011 32216 32217 32218 32219 32220 32221 28868 28869 28870 28871 28872 28873 28874 28875 28876 28877 28878 28879 28844 28845 28846 28847 28848 28849 31952 31953 31954 31955 31956 31957 28982 28983 28984 28985 28986 28987 29012 29013 29014 29015 29016 29017 48 29162 29163 29164 29165 29166 29167 32222 32223 32224 32225 32226 32227 29006 29007 29008 29009 29010 29011 29012 29013 29014 29015 29016 29017 28982 28983 28984 28985 28986 28987 31958 31959 31960 31961 31962 31963 29138 29139 29140 29141 29142 29143 29168 29169 29170 29171 29172 29173 48 29318 29319 29320 29321 29322 29323 32228 32229 32230 32231 32232 32233 29162 29163 29164 29165 29166 29167 29168 29169 29170 29171 29172 29173 29138 29139 29140 29141 29142 29143 31964 31965 31966 31967 31968 31969 29294 29295 29296 29297 29298 29299 29324 29325 29326 29327 29328 29329 48 29486 29487 29488 29489 29490 29491 32234 32235 32236 32237 32238 32239 29318 29319 29320 29321 29322 29323 29324 29325 29326 29327 29328 29329 29294 29295 29296 29297 29298 29299 31970 31971 31972 31973 31974 31975 29456 29457 29458 29459 29460 29461 29492 29493 29494 29495 29496 29497 48 30578 30579 30580 30581 30582 30583 32240 32241 32242 32243 32244 32245 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29456 29457 29458 29459 29460 29461 31976 31977 31978 31979 31980 31981 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 48 22706 22707 22708 22709 22710 22711 30596 30597 30598 30599 30600 30601 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 31988 31989 31990 31991 31992 31993 22688 22689 22690 22691 22692 22693 22712 22713 22714 22715 22716 22717 48 22892 22893 22894 22895 22896 22897 30614 30615 30616 30617 30618 30619 22706 22707 22708 22709 22710 22711 22712 22713 22714 22715 22716 22717 22688 22689 22690 22691 22692 22693 31994 31995 31996 31997 31998 31999 22868 22869 22870 22871 22872 22873 22898 22899 22900 22901 22902 22903 48 23072 23073 23074 23075 23076 23077 30620 30621 30622 30623 30624 30625 22892 22893 22894 22895 22896 22897 22898 22899 22900 22901 22902 22903 22868 22869 22870 22871 22872 22873 32000 32001 32002 32003 32004 32005 23048 23049 23050 23051 23052 23053 23078 23079 23080 23081 23082 23083 48 23228 23229 23230 23231 23232 23233 30626 30627 30628 30629 30630 30631 23072 23073 23074 23075 23076 23077 23078 23079 23080 23081 23082 23083 23048 23049 23050 23051 23052 23053 32006 32007 32008 32009 32010 32011 23210 23211 23212 23213 23214 23215 23234 23235 23236 23237 23238 23239 48 23408 23409 23410 23411 23412 23413 30632 30633 30634 30635 30636 30637 23228 23229 23230 23231 23232 23233 23234 23235 23236 23237 23238 23239 23210 23211 23212 23213 23214 23215 32012 32013 32014 32015 32016 32017 23378 23379 23380 23381 23382 23383 23414 23415 23416 23417 23418 23419 48 23588 23589 23590 23591 23592 23593 30638 30639 30640 30641 30642 30643 23408 23409 23410 23411 23412 23413 23414 23415 23416 23417 23418 23419 23378 23379 23380 23381 23382 23383 32018 32019 32020 32021 32022 32023 23564 23565 23566 23567 23568 23569 23594 23595 23596 23597 23598 23599 48 23744 23745 23746 23747 23748 23749 30644 30645 30646 30647 30648 30649 23588 23589 23590 23591 23592 23593 23594 23595 23596 23597 23598 23599 23564 23565 23566 23567 23568 23569 32024 32025 32026 32027 32028 32029 23726 23727 23728 23729 23730 23731 23750 23751 23752 23753 23754 23755 48 23924 23925 23926 23927 23928 23929 30650 30651 30652 30653 30654 30655 23744 23745 23746 23747 23748 23749 23750 23751 23752 23753 23754 23755 23726 23727 23728 23729 23730 23731 32030 32031 32032 32033 32034 32035 23894 23895 23896 23897 23898 23899 23930 23931 23932 23933 23934 23935 48 24098 24099 24100 24101 24102 24103 30656 30657 30658 30659 30660 30661 23924 23925 23926 23927 23928 23929 23930 23931 23932 23933 23934 23935 23894 23895 23896 23897 23898 23899 32036 32037 32038 32039 32040 32041 24068 24069 24070 24071 24072 24073 24104 24105 24106 24107 24108 24109 48 24254 24255 24256 24257 24258 24259 30662 30663 30664 30665 30666 30667 24098 24099 24100 24101 24102 24103 24104 24105 24106 24107 24108 24109 24068 24069 24070 24071 24072 24073 32042 32043 32044 32045 32046 32047 24236 24237 24238 24239 24240 24241 24260 24261 24262 24263 24264 24265 48 24434 24435 24436 24437 24438 24439 30668 30669 30670 30671 30672 30673 24254 24255 24256 24257 24258 24259 24260 24261 24262 24263 24264 24265 24236 24237 24238 24239 24240 24241 32048 32049 32050 32051 32052 32053 24404 24405 24406 24407 24408 24409 24440 24441 24442 24443 24444 24445 48 24614 24615 24616 24617 24618 24619 30674 30675 30676 30677 30678 30679 24434 24435 24436 24437 24438 24439 24440 24441 24442 24443 24444 24445 24404 24405 24406 24407 24408 24409 32054 32055 32056 32057 32058 32059 24590 24591 24592 24593 24594 24595 24620 24621 24622 24623 24624 24625 48 24770 24771 24772 24773 24774 24775 30680 30681 30682 30683 30684 30685 24614 24615 24616 24617 24618 24619 24620 24621 24622 24623 24624 24625 24590 24591 24592 24593 24594 24595 32060 32061 32062 32063 32064 32065 24752 24753 24754 24755 24756 24757 24776 24777 24778 24779 24780 24781 48 24950 24951 24952 24953 24954 24955 30686 30687 30688 30689 30690 30691 24770 24771 24772 24773 24774 24775 24776 24777 24778 24779 24780 24781 24752 24753 24754 24755 24756 24757 32066 32067 32068 32069 32070 32071 24920 24921 24922 24923 24924 24925 24956 24957 24958 24959 24960 24961 48 25124 25125 25126 25127 25128 25129 30692 30693 30694 30695 30696 30697 24950 24951 24952 24953 24954 24955 24956 24957 24958 24959 24960 24961 24920 24921 24922 24923 24924 24925 32072 32073 32074 32075 32076 32077 25094 25095 25096 25097 25098 25099 25130 25131 25132 25133 25134 25135 48 25280 25281 25282 25283 25284 25285 30698 30699 30700 30701 30702 30703 25124 25125 25126 25127 25128 25129 25130 25131 25132 25133 25134 25135 25094 25095 25096 25097 25098 25099 32078 32079 32080 32081 32082 32083 25262 25263 25264 25265 25266 25267 25286 25287 25288 25289 25290 25291 48 25460 25461 25462 25463 25464 25465 30704 30705 30706 30707 30708 30709 25280 25281 25282 25283 25284 25285 25286 25287 25288 25289 25290 25291 25262 25263 25264 25265 25266 25267 32084 32085 32086 32087 32088 32089 25430 25431 25432 25433 25434 25435 25466 25467 25468 25469 25470 25471 48 25640 25641 25642 25643 25644 25645 30710 30711 30712 30713 30714 30715 25460 25461 25462 25463 25464 25465 25466 25467 25468 25469 25470 25471 25430 25431 25432 25433 25434 25435 32090 32091 32092 32093 32094 32095 25616 25617 25618 25619 25620 25621 25646 25647 25648 25649 25650 25651 48 25796 25797 25798 25799 25800 25801 30716 30717 30718 30719 30720 30721 25640 25641 25642 25643 25644 25645 25646 25647 25648 25649 25650 25651 25616 25617 25618 25619 25620 25621 32096 32097 32098 32099 32100 32101 25778 25779 25780 25781 25782 25783 25802 25803 25804 25805 25806 25807 48 25976 25977 25978 25979 25980 25981 30722 30723 30724 30725 30726 30727 25796 25797 25798 25799 25800 25801 25802 25803 25804 25805 25806 25807 25778 25779 25780 25781 25782 25783 32102 32103 32104 32105 32106 32107 25946 25947 25948 25949 25950 25951 25982 25983 25984 25985 25986 25987 48 26150 26151 26152 26153 26154 26155 30728 30729 30730 30731 30732 30733 25976 25977 25978 25979 25980 25981 25982 25983 25984 25985 25986 25987 25946 25947 25948 25949 25950 25951 32108 32109 32110 32111 32112 32113 26120 26121 26122 26123 26124 26125 26156 26157 26158 26159 26160 26161 48 26306 26307 26308 26309 26310 26311 30734 30735 30736 30737 30738 30739 26150 26151 26152 26153 26154 26155 26156 26157 26158 26159 26160 26161 26120 26121 26122 26123 26124 26125 32114 32115 32116 32117 32118 32119 26288 26289 26290 26291 26292 26293 26312 26313 26314 26315 26316 26317 48 26486 26487 26488 26489 26490 26491 30740 30741 30742 30743 30744 30745 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26288 26289 26290 26291 26292 26293 32120 32121 32122 32123 32124 32125 26456 26457 26458 26459 26460 26461 26492 26493 26494 26495 26496 26497 48 26666 26667 26668 26669 26670 26671 30746 30747 30748 30749 30750 30751 26486 26487 26488 26489 26490 26491 26492 26493 26494 26495 26496 26497 26456 26457 26458 26459 26460 26461 32126 32127 32128 32129 32130 32131 26642 26643 26644 26645 26646 26647 26672 26673 26674 26675 26676 26677 48 26822 26823 26824 26825 26826 26827 30752 30753 30754 30755 30756 30757 26666 26667 26668 26669 26670 26671 26672 26673 26674 26675 26676 26677 26642 26643 26644 26645 26646 26647 32132 32133 32134 32135 32136 32137 26804 26805 26806 26807 26808 26809 26828 26829 26830 26831 26832 26833 48 27002 27003 27004 27005 27006 27007 30758 30759 30760 30761 30762 30763 26822 26823 26824 26825 26826 26827 26828 26829 26830 26831 26832 26833 26804 26805 26806 26807 26808 26809 32138 32139 32140 32141 32142 32143 26972 26973 26974 26975 26976 26977 27008 27009 27010 27011 27012 27013 48 27176 27177 27178 27179 27180 27181 30764 30765 30766 30767 30768 30769 27002 27003 27004 27005 27006 27007 27008 27009 27010 27011 27012 27013 26972 26973 26974 26975 26976 26977 32144 32145 32146 32147 32148 32149 27146 27147 27148 27149 27150 27151 27182 27183 27184 27185 27186 27187 48 27332 27333 27334 27335 27336 27337 30770 30771 30772 30773 30774 30775 27176 27177 27178 27179 27180 27181 27182 27183 27184 27185 27186 27187 27146 27147 27148 27149 27150 27151 32150 32151 32152 32153 32154 32155 27314 27315 27316 27317 27318 27319 27338 27339 27340 27341 27342 27343 48 27518 27519 27520 27521 27522 27523 30776 30777 30778 30779 30780 30781 27332 27333 27334 27335 27336 27337 27338 27339 27340 27341 27342 27343 27314 27315 27316 27317 27318 27319 32156 32157 32158 32159 32160 32161 27494 27495 27496 27497 27498 27499 27524 27525 27526 27527 27528 27529 48 27698 27699 27700 27701 27702 27703 30782 30783 30784 30785 30786 30787 27518 27519 27520 27521 27522 27523 27524 27525 27526 27527 27528 27529 27494 27495 27496 27497 27498 27499 32162 32163 32164 32165 32166 32167 27674 27675 27676 27677 27678 27679 27704 27705 27706 27707 27708 27709 48 27854 27855 27856 27857 27858 27859 30788 30789 30790 30791 30792 30793 27698 27699 27700 27701 27702 27703 27704 27705 27706 27707 27708 27709 27674 27675 27676 27677 27678 27679 32168 32169 32170 32171 32172 32173 27836 27837 27838 27839 27840 27841 27860 27861 27862 27863 27864 27865 48 28034 28035 28036 28037 28038 28039 30794 30795 30796 30797 30798 30799 27854 27855 27856 27857 27858 27859 27860 27861 27862 27863 27864 27865 27836 27837 27838 27839 27840 27841 32174 32175 32176 32177 32178 32179 28004 28005 28006 28007 28008 28009 28040 28041 28042 28043 28044 28045 48 28208 28209 28210 28211 28212 28213 30800 30801 30802 30803 30804 30805 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 28045 28004 28005 28006 28007 28008 28009 32180 32181 32182 32183 32184 32185 28178 28179 28180 28181 28182 28183 28214 28215 28216 28217 28218 28219 48 28364 28365 28366 28367 28368 28369 30806 30807 30808 30809 30810 30811 28208 28209 28210 28211 28212 28213 28214 28215 28216 28217 28218 28219 28178 28179 28180 28181 28182 28183 32186 32187 32188 32189 32190 32191 28346 28347 28348 28349 28350 28351 28370 28371 28372 28373 28374 28375 48 28514 28515 28516 28517 28518 28519 30812 30813 30814 30815 30816 30817 28364 28365 28366 28367 28368 28369 28370 28371 28372 28373 28374 28375 28346 28347 28348 28349 28350 28351 32192 32193 32194 32195 32196 32197 28490 28491 28492 28493 28494 28495 28520 28521 28522 28523 28524 28525 48 28634 28635 28636 28637 28638 28639 30818 30819 30820 30821 30822 30823 28514 28515 28516 28517 28518 28519 28520 28521 28522 28523 28524 28525 28490 28491 28492 28493 28494 28495 32198 32199 32200 32201 32202 32203 28616 28617 28618 28619 28620 28621 28640 28641 28642 28643 28644 28645 48 28760 28761 28762 28763 28764 28765 30824 30825 30826 30827 30828 30829 28634 28635 28636 28637 28638 28639 28640 28641 28642 28643 28644 28645 28616 28617 28618 28619 28620 28621 32204 32205 32206 32207 32208 32209 28742 28743 28744 28745 28746 28747 28766 28767 28768 28769 28770 28771 48 28886 28887 28888 28889 28890 28891 30830 30831 30832 30833 30834 30835 28760 28761 28762 28763 28764 28765 28766 28767 28768 28769 28770 28771 28742 28743 28744 28745 28746 28747 32210 32211 32212 32213 32214 32215 28868 28869 28870 28871 28872 28873 28892 28893 28894 28895 28896 28897 48 29024 29025 29026 29027 29028 29029 30836 30837 30838 30839 30840 30841 28886 28887 28888 28889 28890 28891 28892 28893 28894 28895 28896 28897 28868 28869 28870 28871 28872 28873 32216 32217 32218 32219 32220 32221 29006 29007 29008 29009 29010 29011 29030 29031 29032 29033 29034 29035 48 29180 29181 29182 29183 29184 29185 30842 30843 30844 30845 30846 30847 29024 29025 29026 29027 29028 29029 29030 29031 29032 29033 29034 29035 29006 29007 29008 29009 29010 29011 32222 32223 32224 32225 32226 32227 29162 29163 29164 29165 29166 29167 29186 29187 29188 29189 29190 29191 48 29336 29337 29338 29339 29340 29341 30848 30849 30850 30851 30852 30853 29180 29181 29182 29183 29184 29185 29186 29187 29188 29189 29190 29191 29162 29163 29164 29165 29166 29167 32228 32229 32230 32231 32232 32233 29318 29319 29320 29321 29322 29323 29342 29343 29344 29345 29346 29347 48 29516 29517 29518 29519 29520 29521 30854 30855 30856 30857 30858 30859 29336 29337 29338 29339 29340 29341 29342 29343 29344 29345 29346 29347 29318 29319 29320 29321 29322 29323 32234 32235 32236 32237 32238 32239 29486 29487 29488 29489 29490 29491 29522 29523 29524 29525 29526 29527 48 30860 30861 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 29516 29517 29518 29519 29520 29521 29522 29523 29524 29525 29526 29527 29486 29487 29488 29489 29490 29491 32240 32241 32242 32243 32244 32245 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 36 22658 22659 22660 22661 22662 22663 30062 30063 30064 30065 30066 30067 22646 22647 22648 22649 22650 22651 31718 31719 31720 31721 31722 31723 30056 30057 30058 30059 30060 30061 22652 22653 22654 22655 22656 22657 36 22688 22689 22690 22691 22692 22693 30320 30321 30322 30323 30324 30325 22676 22677 22678 22679 22680 22681 31988 31989 31990 31991 31992 31993 30314 30315 30316 30317 30318 30319 22682 22683 22684 22685 22686 22687 48 14108 14109 14110 14111 14112 14113 22730 22731 22732 22733 22734 22735 22676 22677 22678 22679 22680 22681 30314 30315 30316 30317 30318 30319 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 3017 3018 3019 3020 3021 3022 15848 15849 15850 15851 15852 15853 36 29456 29457 29458 29459 29460 29461 29444 29445 29446 29447 29448 29449 30296 30297 30298 30299 30300 30301 29450 29451 29452 29453 29454 29455 30302 30303 30304 30305 30306 30307 31976 31977 31978 31979 31980 31981 36 29486 29487 29488 29489 29490 29491 29474 29475 29476 29477 29478 29479 30578 30579 30580 30581 30582 30583 29480 29481 29482 29483 29484 29485 30584 30585 30586 30587 30588 30589 32240 32241 32242 32243 32244 32245 48 5048 5049 5050 5051 5052 5053 32252 32253 32254 32255 32256 32257 30578 30579 30580 30581 30582 30583 30584 30585 30586 30587 30588 30589 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 12188 12189 12190 12191 12192 12193 15818 15819 15820 15821 15822 15823 48 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 21590 21591 21592 21593 21594 21595 1015 1016 1017 1018 1019 1020 1033 1034 1035 1036 1037 1038 1027 1028 1029 1030 1031 1032 21614 21615 21616 21617 21618 21619 48 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 21638 21639 21640 21641 21642 21643 1051 1052 1053 1054 1055 1056 1069 1070 1071 1072 1073 1074 1063 1064 1065 1066 1067 1068 21662 21663 21664 21665 21666 21667 48 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 21686 21687 21688 21689 21690 21691 1087 1088 1089 1090 1091 1092 1105 1106 1107 1108 1109 1110 1099 1100 1101 1102 1103 1104 21710 21711 21712 21713 21714 21715 48 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 21734 21735 21736 21737 21738 21739 1123 1124 1125 1126 1127 1128 1141 1142 1143 1144 1145 1146 1135 1136 1137 1138 1139 1140 21758 21759 21760 21761 21762 21763 48 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 21782 21783 21784 21785 21786 21787 1159 1160 1161 1162 1163 1164 1177 1178 1179 1180 1181 1182 1171 1172 1173 1174 1175 1176 21806 21807 21808 21809 21810 21811 48 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 21830 21831 21832 21833 21834 21835 1195 1196 1197 1198 1199 1200 1213 1214 1215 1216 1217 1218 1207 1208 1209 1210 1211 1212 21854 21855 21856 21857 21858 21859 48 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 21878 21879 21880 21881 21882 21883 1231 1232 1233 1234 1235 1236 1249 1250 1251 1252 1253 1254 1243 1244 1245 1246 1247 1248 21902 21903 21904 21905 21906 21907 48 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 21926 21927 21928 21929 21930 21931 1267 1268 1269 1270 1271 1272 1285 1286 1287 1288 1289 1290 1279 1280 1281 1282 1283 1284 21950 21951 21952 21953 21954 21955 48 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 21974 21975 21976 21977 21978 21979 1303 1304 1305 1306 1307 1308 1321 1322 1323 1324 1325 1326 1315 1316 1317 1318 1319 1320 21998 21999 22000 22001 22002 22003 48 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 22022 22023 22024 22025 22026 22027 1339 1340 1341 1342 1343 1344 1357 1358 1359 1360 1361 1362 1351 1352 1353 1354 1355 1356 22046 22047 22048 22049 22050 22051 48 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 22070 22071 22072 22073 22074 22075 1375 1376 1377 1378 1379 1380 1393 1394 1395 1396 1397 1398 1387 1388 1389 1390 1391 1392 22094 22095 22096 22097 22098 22099 48 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 22106 22107 22108 22109 22110 22111 1411 1412 1413 1414 1415 1416 1429 1430 1431 1432 1433 1434 1423 1424 1425 1426 1427 1428 32258 32259 32260 32261 32262 32263 48 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 32264 32265 32266 32267 32268 32269 1483 1484 1485 1486 1487 1488 1501 1502 1503 1504 1505 1506 1495 1496 1497 1498 1499 1500 22130 22131 22132 22133 22134 22135 48 15386 15387 15388 15389 15390 15391 15410 15411 15412 15413 15414 15415 3203 3204 3205 3206 3207 3208 32270 32271 32272 32273 32274 32275 30602 30603 30604 30605 30606 30607 30596 30597 30598 30599 30600 30601 22706 22707 22708 22709 22710 22711 22724 22725 22726 22727 22728 22729 48 15356 15357 15358 15359 15360 15361 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 22724 22725 22726 22727 22728 22729 22706 22707 22708 22709 22710 22711 30614 30615 30616 30617 30618 30619 22892 22893 22894 22895 22896 22897 22910 22911 22912 22913 22914 22915 48 15326 15327 15328 15329 15330 15331 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 22910 22911 22912 22913 22914 22915 22892 22893 22894 22895 22896 22897 30620 30621 30622 30623 30624 30625 23072 23073 23074 23075 23076 23077 23090 23091 23092 23093 23094 23095 48 15296 15297 15298 15299 15300 15301 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 23090 23091 23092 23093 23094 23095 23072 23073 23074 23075 23076 23077 30626 30627 30628 30629 30630 30631 23228 23229 23230 23231 23232 23233 23246 23247 23248 23249 23250 23251 48 15266 15267 15268 15269 15270 15271 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 23246 23247 23248 23249 23250 23251 23228 23229 23230 23231 23232 23233 30632 30633 30634 30635 30636 30637 23408 23409 23410 23411 23412 23413 23426 23427 23428 23429 23430 23431 48 15236 15237 15238 15239 15240 15241 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 23426 23427 23428 23429 23430 23431 23408 23409 23410 23411 23412 23413 30638 30639 30640 30641 30642 30643 23588 23589 23590 23591 23592 23593 23606 23607 23608 23609 23610 23611 48 15206 15207 15208 15209 15210 15211 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 23606 23607 23608 23609 23610 23611 23588 23589 23590 23591 23592 23593 30644 30645 30646 30647 30648 30649 23744 23745 23746 23747 23748 23749 23762 23763 23764 23765 23766 23767 48 15176 15177 15178 15179 15180 15181 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 23762 23763 23764 23765 23766 23767 23744 23745 23746 23747 23748 23749 30650 30651 30652 30653 30654 30655 23924 23925 23926 23927 23928 23929 23942 23943 23944 23945 23946 23947 48 15146 15147 15148 15149 15150 15151 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 23942 23943 23944 23945 23946 23947 23924 23925 23926 23927 23928 23929 30656 30657 30658 30659 30660 30661 24098 24099 24100 24101 24102 24103 24116 24117 24118 24119 24120 24121 48 15116 15117 15118 15119 15120 15121 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 24116 24117 24118 24119 24120 24121 24098 24099 24100 24101 24102 24103 30662 30663 30664 30665 30666 30667 24254 24255 24256 24257 24258 24259 24272 24273 24274 24275 24276 24277 48 15086 15087 15088 15089 15090 15091 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 24272 24273 24274 24275 24276 24277 24254 24255 24256 24257 24258 24259 30668 30669 30670 30671 30672 30673 24434 24435 24436 24437 24438 24439 24452 24453 24454 24455 24456 24457 48 15056 15057 15058 15059 15060 15061 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 24452 24453 24454 24455 24456 24457 24434 24435 24436 24437 24438 24439 30674 30675 30676 30677 30678 30679 24614 24615 24616 24617 24618 24619 24632 24633 24634 24635 24636 24637 48 15026 15027 15028 15029 15030 15031 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 24632 24633 24634 24635 24636 24637 24614 24615 24616 24617 24618 24619 30680 30681 30682 30683 30684 30685 24770 24771 24772 24773 24774 24775 24788 24789 24790 24791 24792 24793 48 14996 14997 14998 14999 15000 15001 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 24788 24789 24790 24791 24792 24793 24770 24771 24772 24773 24774 24775 30686 30687 30688 30689 30690 30691 24950 24951 24952 24953 24954 24955 24968 24969 24970 24971 24972 24973 48 14966 14967 14968 14969 14970 14971 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 24968 24969 24970 24971 24972 24973 24950 24951 24952 24953 24954 24955 30692 30693 30694 30695 30696 30697 25124 25125 25126 25127 25128 25129 25142 25143 25144 25145 25146 25147 48 14936 14937 14938 14939 14940 14941 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 25142 25143 25144 25145 25146 25147 25124 25125 25126 25127 25128 25129 30698 30699 30700 30701 30702 30703 25280 25281 25282 25283 25284 25285 25298 25299 25300 25301 25302 25303 48 14906 14907 14908 14909 14910 14911 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 25298 25299 25300 25301 25302 25303 25280 25281 25282 25283 25284 25285 30704 30705 30706 30707 30708 30709 25460 25461 25462 25463 25464 25465 25478 25479 25480 25481 25482 25483 48 14876 14877 14878 14879 14880 14881 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 25478 25479 25480 25481 25482 25483 25460 25461 25462 25463 25464 25465 30710 30711 30712 30713 30714 30715 25640 25641 25642 25643 25644 25645 25658 25659 25660 25661 25662 25663 48 14846 14847 14848 14849 14850 14851 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 25658 25659 25660 25661 25662 25663 25640 25641 25642 25643 25644 25645 30716 30717 30718 30719 30720 30721 25796 25797 25798 25799 25800 25801 25814 25815 25816 25817 25818 25819 48 14816 14817 14818 14819 14820 14821 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 25814 25815 25816 25817 25818 25819 25796 25797 25798 25799 25800 25801 30722 30723 30724 30725 30726 30727 25976 25977 25978 25979 25980 25981 25994 25995 25996 25997 25998 25999 48 14786 14787 14788 14789 14790 14791 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 25994 25995 25996 25997 25998 25999 25976 25977 25978 25979 25980 25981 30728 30729 30730 30731 30732 30733 26150 26151 26152 26153 26154 26155 26168 26169 26170 26171 26172 26173 48 14756 14757 14758 14759 14760 14761 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 26168 26169 26170 26171 26172 26173 26150 26151 26152 26153 26154 26155 30734 30735 30736 30737 30738 30739 26306 26307 26308 26309 26310 26311 26324 26325 26326 26327 26328 26329 48 14726 14727 14728 14729 14730 14731 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 26324 26325 26326 26327 26328 26329 26306 26307 26308 26309 26310 26311 30740 30741 30742 30743 30744 30745 26486 26487 26488 26489 26490 26491 26504 26505 26506 26507 26508 26509 48 14696 14697 14698 14699 14700 14701 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 26504 26505 26506 26507 26508 26509 26486 26487 26488 26489 26490 26491 30746 30747 30748 30749 30750 30751 26666 26667 26668 26669 26670 26671 26684 26685 26686 26687 26688 26689 48 14666 14667 14668 14669 14670 14671 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 26684 26685 26686 26687 26688 26689 26666 26667 26668 26669 26670 26671 30752 30753 30754 30755 30756 30757 26822 26823 26824 26825 26826 26827 26840 26841 26842 26843 26844 26845 48 14636 14637 14638 14639 14640 14641 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 26840 26841 26842 26843 26844 26845 26822 26823 26824 26825 26826 26827 30758 30759 30760 30761 30762 30763 27002 27003 27004 27005 27006 27007 27020 27021 27022 27023 27024 27025 48 14606 14607 14608 14609 14610 14611 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 27020 27021 27022 27023 27024 27025 27002 27003 27004 27005 27006 27007 30764 30765 30766 30767 30768 30769 27176 27177 27178 27179 27180 27181 27194 27195 27196 27197 27198 27199 48 14576 14577 14578 14579 14580 14581 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 27194 27195 27196 27197 27198 27199 27176 27177 27178 27179 27180 27181 30770 30771 30772 30773 30774 30775 27332 27333 27334 27335 27336 27337 27350 27351 27352 27353 27354 27355 48 14546 14547 14548 14549 14550 14551 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 27350 27351 27352 27353 27354 27355 27332 27333 27334 27335 27336 27337 30776 30777 30778 30779 30780 30781 27518 27519 27520 27521 27522 27523 27536 27537 27538 27539 27540 27541 48 14516 14517 14518 14519 14520 14521 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 27536 27537 27538 27539 27540 27541 27518 27519 27520 27521 27522 27523 30782 30783 30784 30785 30786 30787 27698 27699 27700 27701 27702 27703 27716 27717 27718 27719 27720 27721 48 14486 14487 14488 14489 14490 14491 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 27716 27717 27718 27719 27720 27721 27698 27699 27700 27701 27702 27703 30788 30789 30790 30791 30792 30793 27854 27855 27856 27857 27858 27859 27872 27873 27874 27875 27876 27877 48 14456 14457 14458 14459 14460 14461 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 27872 27873 27874 27875 27876 27877 27854 27855 27856 27857 27858 27859 30794 30795 30796 30797 30798 30799 28034 28035 28036 28037 28038 28039 28052 28053 28054 28055 28056 28057 48 14426 14427 14428 14429 14430 14431 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 28052 28053 28054 28055 28056 28057 28034 28035 28036 28037 28038 28039 30800 30801 30802 30803 30804 30805 28208 28209 28210 28211 28212 28213 28226 28227 28228 28229 28230 28231 48 14396 14397 14398 14399 14400 14401 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 28226 28227 28228 28229 28230 28231 28208 28209 28210 28211 28212 28213 30806 30807 30808 30809 30810 30811 28364 28365 28366 28367 28368 28369 28382 28383 28384 28385 28386 28387 48 14366 14367 14368 14369 14370 14371 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 28382 28383 28384 28385 28386 28387 28364 28365 28366 28367 28368 28369 30812 30813 30814 30815 30816 30817 28514 28515 28516 28517 28518 28519 28532 28533 28534 28535 28536 28537 48 14336 14337 14338 14339 14340 14341 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 28532 28533 28534 28535 28536 28537 28514 28515 28516 28517 28518 28519 30818 30819 30820 30821 30822 30823 28634 28635 28636 28637 28638 28639 28652 28653 28654 28655 28656 28657 48 14306 14307 14308 14309 14310 14311 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 28652 28653 28654 28655 28656 28657 28634 28635 28636 28637 28638 28639 30824 30825 30826 30827 30828 30829 28760 28761 28762 28763 28764 28765 28778 28779 28780 28781 28782 28783 48 14276 14277 14278 14279 14280 14281 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 28778 28779 28780 28781 28782 28783 28760 28761 28762 28763 28764 28765 30830 30831 30832 30833 30834 30835 28886 28887 28888 28889 28890 28891 28904 28905 28906 28907 28908 28909 48 14246 14247 14248 14249 14250 14251 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 28904 28905 28906 28907 28908 28909 28886 28887 28888 28889 28890 28891 30836 30837 30838 30839 30840 30841 29024 29025 29026 29027 29028 29029 29042 29043 29044 29045 29046 29047 48 14216 14217 14218 14219 14220 14221 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 29042 29043 29044 29045 29046 29047 29024 29025 29026 29027 29028 29029 30842 30843 30844 30845 30846 30847 29180 29181 29182 29183 29184 29185 29198 29199 29200 29201 29202 29203 48 14186 14187 14188 14189 14190 14191 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 29198 29199 29200 29201 29202 29203 29180 29181 29182 29183 29184 29185 30848 30849 30850 30851 30852 30853 29336 29337 29338 29339 29340 29341 29354 29355 29356 29357 29358 29359 48 14156 14157 14158 14159 14160 14161 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 29354 29355 29356 29357 29358 29359 29336 29337 29338 29339 29340 29341 30854 30855 30856 30857 30858 30859 29516 29517 29518 29519 29520 29521 29534 29535 29536 29537 29538 29539 48 5180 5181 5182 5183 5184 5185 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 29534 29535 29536 29537 29538 29539 29516 29517 29518 29519 29520 29521 30866 30867 30868 30869 30870 30871 30860 30861 30862 30863 30864 30865 32276 32277 32278 32279 32280 32281 48 22856 22857 22858 22859 22860 22861 30332 30333 30334 30335 30336 30337 22676 22677 22678 22679 22680 22681 22682 22683 22684 22685 22686 22687 22688 22689 22690 22691 22692 22693 31994 31995 31996 31997 31998 31999 22868 22869 22870 22871 22872 22873 22862 22863 22864 22865 22866 22867 48 14060 14061 14062 14063 14064 14065 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 22730 22731 22732 22733 22734 22735 22676 22677 22678 22679 22680 22681 30332 30333 30334 30335 30336 30337 22856 22857 22858 22859 22860 22861 22886 22887 22888 22889 22890 22891 48 23036 23037 23038 23039 23040 23041 30338 30339 30340 30341 30342 30343 22856 22857 22858 22859 22860 22861 22862 22863 22864 22865 22866 22867 22868 22869 22870 22871 22872 22873 32000 32001 32002 32003 32004 32005 23048 23049 23050 23051 23052 23053 23042 23043 23044 23045 23046 23047 48 14012 14013 14014 14015 14016 14017 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 22886 22887 22888 22889 22890 22891 22856 22857 22858 22859 22860 22861 30338 30339 30340 30341 30342 30343 23036 23037 23038 23039 23040 23041 23066 23067 23068 23069 23070 23071 48 23198 23199 23200 23201 23202 23203 30344 30345 30346 30347 30348 30349 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 32006 32007 32008 32009 32010 32011 23210 23211 23212 23213 23214 23215 23204 23205 23206 23207 23208 23209 48 13964 13965 13966 13967 13968 13969 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 23066 23067 23068 23069 23070 23071 23036 23037 23038 23039 23040 23041 30344 30345 30346 30347 30348 30349 23198 23199 23200 23201 23202 23203 23252 23253 23254 23255 23256 23257 48 23366 23367 23368 23369 23370 23371 30350 30351 30352 30353 30354 30355 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 32012 32013 32014 32015 32016 32017 23378 23379 23380 23381 23382 23383 23372 23373 23374 23375 23376 23377 48 13916 13917 13918 13919 13920 13921 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 23252 23253 23254 23255 23256 23257 23198 23199 23200 23201 23202 23203 30350 30351 30352 30353 30354 30355 23366 23367 23368 23369 23370 23371 23396 23397 23398 23399 23400 23401 48 23552 23553 23554 23555 23556 23557 30356 30357 30358 30359 30360 30361 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 32018 32019 32020 32021 32022 32023 23564 23565 23566 23567 23568 23569 23558 23559 23560 23561 23562 23563 48 13868 13869 13870 13871 13872 13873 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 23396 23397 23398 23399 23400 23401 23366 23367 23368 23369 23370 23371 30356 30357 30358 30359 30360 30361 23552 23553 23554 23555 23556 23557 23582 23583 23584 23585 23586 23587 48 23714 23715 23716 23717 23718 23719 30362 30363 30364 30365 30366 30367 23552 23553 23554 23555 23556 23557 23558 23559 23560 23561 23562 23563 23564 23565 23566 23567 23568 23569 32024 32025 32026 32027 32028 32029 23726 23727 23728 23729 23730 23731 23720 23721 23722 23723 23724 23725 48 13820 13821 13822 13823 13824 13825 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 23582 23583 23584 23585 23586 23587 23552 23553 23554 23555 23556 23557 30362 30363 30364 30365 30366 30367 23714 23715 23716 23717 23718 23719 23768 23769 23770 23771 23772 23773 48 23882 23883 23884 23885 23886 23887 30368 30369 30370 30371 30372 30373 23714 23715 23716 23717 23718 23719 23720 23721 23722 23723 23724 23725 23726 23727 23728 23729 23730 23731 32030 32031 32032 32033 32034 32035 23894 23895 23896 23897 23898 23899 23888 23889 23890 23891 23892 23893 48 13772 13773 13774 13775 13776 13777 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 23768 23769 23770 23771 23772 23773 23714 23715 23716 23717 23718 23719 30368 30369 30370 30371 30372 30373 23882 23883 23884 23885 23886 23887 23912 23913 23914 23915 23916 23917 48 24056 24057 24058 24059 24060 24061 30374 30375 30376 30377 30378 30379 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 32036 32037 32038 32039 32040 32041 24068 24069 24070 24071 24072 24073 24062 24063 24064 24065 24066 24067 48 13724 13725 13726 13727 13728 13729 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 23912 23913 23914 23915 23916 23917 23882 23883 23884 23885 23886 23887 30374 30375 30376 30377 30378 30379 24056 24057 24058 24059 24060 24061 24086 24087 24088 24089 24090 24091 48 24224 24225 24226 24227 24228 24229 30380 30381 30382 30383 30384 30385 24056 24057 24058 24059 24060 24061 24062 24063 24064 24065 24066 24067 24068 24069 24070 24071 24072 24073 32042 32043 32044 32045 32046 32047 24236 24237 24238 24239 24240 24241 24230 24231 24232 24233 24234 24235 48 13676 13677 13678 13679 13680 13681 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 24086 24087 24088 24089 24090 24091 24056 24057 24058 24059 24060 24061 30380 30381 30382 30383 30384 30385 24224 24225 24226 24227 24228 24229 24278 24279 24280 24281 24282 24283 48 24392 24393 24394 24395 24396 24397 30386 30387 30388 30389 30390 30391 24224 24225 24226 24227 24228 24229 24230 24231 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 32048 32049 32050 32051 32052 32053 24404 24405 24406 24407 24408 24409 24398 24399 24400 24401 24402 24403 48 13628 13629 13630 13631 13632 13633 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 24278 24279 24280 24281 24282 24283 24224 24225 24226 24227 24228 24229 30386 30387 30388 30389 30390 30391 24392 24393 24394 24395 24396 24397 24422 24423 24424 24425 24426 24427 48 24578 24579 24580 24581 24582 24583 30392 30393 30394 30395 30396 30397 24392 24393 24394 24395 24396 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 32054 32055 32056 32057 32058 32059 24590 24591 24592 24593 24594 24595 24584 24585 24586 24587 24588 24589 48 13580 13581 13582 13583 13584 13585 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 24422 24423 24424 24425 24426 24427 24392 24393 24394 24395 24396 24397 30392 30393 30394 30395 30396 30397 24578 24579 24580 24581 24582 24583 24608 24609 24610 24611 24612 24613 48 24740 24741 24742 24743 24744 24745 30398 30399 30400 30401 30402 30403 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 32060 32061 32062 32063 32064 32065 24752 24753 24754 24755 24756 24757 24746 24747 24748 24749 24750 24751 48 13532 13533 13534 13535 13536 13537 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 24608 24609 24610 24611 24612 24613 24578 24579 24580 24581 24582 24583 30398 30399 30400 30401 30402 30403 24740 24741 24742 24743 24744 24745 24794 24795 24796 24797 24798 24799 48 24908 24909 24910 24911 24912 24913 30404 30405 30406 30407 30408 30409 24740 24741 24742 24743 24744 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 24755 24756 24757 32066 32067 32068 32069 32070 32071 24920 24921 24922 24923 24924 24925 24914 24915 24916 24917 24918 24919 48 13484 13485 13486 13487 13488 13489 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 24794 24795 24796 24797 24798 24799 24740 24741 24742 24743 24744 24745 30404 30405 30406 30407 30408 30409 24908 24909 24910 24911 24912 24913 24938 24939 24940 24941 24942 24943 48 25082 25083 25084 25085 25086 25087 30410 30411 30412 30413 30414 30415 24908 24909 24910 24911 24912 24913 24914 24915 24916 24917 24918 24919 24920 24921 24922 24923 24924 24925 32072 32073 32074 32075 32076 32077 25094 25095 25096 25097 25098 25099 25088 25089 25090 25091 25092 25093 48 13436 13437 13438 13439 13440 13441 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 24938 24939 24940 24941 24942 24943 24908 24909 24910 24911 24912 24913 30410 30411 30412 30413 30414 30415 25082 25083 25084 25085 25086 25087 25112 25113 25114 25115 25116 25117 48 25250 25251 25252 25253 25254 25255 30416 30417 30418 30419 30420 30421 25082 25083 25084 25085 25086 25087 25088 25089 25090 25091 25092 25093 25094 25095 25096 25097 25098 25099 32078 32079 32080 32081 32082 32083 25262 25263 25264 25265 25266 25267 25256 25257 25258 25259 25260 25261 48 13388 13389 13390 13391 13392 13393 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 25112 25113 25114 25115 25116 25117 25082 25083 25084 25085 25086 25087 30416 30417 30418 30419 30420 30421 25250 25251 25252 25253 25254 25255 25304 25305 25306 25307 25308 25309 48 25418 25419 25420 25421 25422 25423 30422 30423 30424 30425 30426 30427 25250 25251 25252 25253 25254 25255 25256 25257 25258 25259 25260 25261 25262 25263 25264 25265 25266 25267 32084 32085 32086 32087 32088 32089 25430 25431 25432 25433 25434 25435 25424 25425 25426 25427 25428 25429 48 13340 13341 13342 13343 13344 13345 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 25304 25305 25306 25307 25308 25309 25250 25251 25252 25253 25254 25255 30422 30423 30424 30425 30426 30427 25418 25419 25420 25421 25422 25423 25448 25449 25450 25451 25452 25453 48 25604 25605 25606 25607 25608 25609 30428 30429 30430 30431 30432 30433 25418 25419 25420 25421 25422 25423 25424 25425 25426 25427 25428 25429 25430 25431 25432 25433 25434 25435 32090 32091 32092 32093 32094 32095 25616 25617 25618 25619 25620 25621 25610 25611 25612 25613 25614 25615 48 13292 13293 13294 13295 13296 13297 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 25448 25449 25450 25451 25452 25453 25418 25419 25420 25421 25422 25423 30428 30429 30430 30431 30432 30433 25604 25605 25606 25607 25608 25609 25634 25635 25636 25637 25638 25639 48 25766 25767 25768 25769 25770 25771 30434 30435 30436 30437 30438 30439 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 25621 32096 32097 32098 32099 32100 32101 25778 25779 25780 25781 25782 25783 25772 25773 25774 25775 25776 25777 48 13244 13245 13246 13247 13248 13249 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 25634 25635 25636 25637 25638 25639 25604 25605 25606 25607 25608 25609 30434 30435 30436 30437 30438 30439 25766 25767 25768 25769 25770 25771 25820 25821 25822 25823 25824 25825 48 25934 25935 25936 25937 25938 25939 30440 30441 30442 30443 30444 30445 25766 25767 25768 25769 25770 25771 25772 25773 25774 25775 25776 25777 25778 25779 25780 25781 25782 25783 32102 32103 32104 32105 32106 32107 25946 25947 25948 25949 25950 25951 25940 25941 25942 25943 25944 25945 48 13196 13197 13198 13199 13200 13201 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 25820 25821 25822 25823 25824 25825 25766 25767 25768 25769 25770 25771 30440 30441 30442 30443 30444 30445 25934 25935 25936 25937 25938 25939 25964 25965 25966 25967 25968 25969 48 26108 26109 26110 26111 26112 26113 30446 30447 30448 30449 30450 30451 25934 25935 25936 25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 25947 25948 25949 25950 25951 32108 32109 32110 32111 32112 32113 26120 26121 26122 26123 26124 26125 26114 26115 26116 26117 26118 26119 48 13148 13149 13150 13151 13152 13153 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 25964 25965 25966 25967 25968 25969 25934 25935 25936 25937 25938 25939 30446 30447 30448 30449 30450 30451 26108 26109 26110 26111 26112 26113 26138 26139 26140 26141 26142 26143 48 26276 26277 26278 26279 26280 26281 30452 30453 30454 30455 30456 30457 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 32114 32115 32116 32117 32118 32119 26288 26289 26290 26291 26292 26293 26282 26283 26284 26285 26286 26287 48 13100 13101 13102 13103 13104 13105 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 26138 26139 26140 26141 26142 26143 26108 26109 26110 26111 26112 26113 30452 30453 30454 30455 30456 30457 26276 26277 26278 26279 26280 26281 26330 26331 26332 26333 26334 26335 48 26444 26445 26446 26447 26448 26449 30458 30459 30460 30461 30462 30463 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 32120 32121 32122 32123 32124 32125 26456 26457 26458 26459 26460 26461 26450 26451 26452 26453 26454 26455 48 13052 13053 13054 13055 13056 13057 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 26330 26331 26332 26333 26334 26335 26276 26277 26278 26279 26280 26281 30458 30459 30460 30461 30462 30463 26444 26445 26446 26447 26448 26449 26474 26475 26476 26477 26478 26479 48 26630 26631 26632 26633 26634 26635 30464 30465 30466 30467 30468 30469 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 32126 32127 32128 32129 32130 32131 26642 26643 26644 26645 26646 26647 26636 26637 26638 26639 26640 26641 48 13004 13005 13006 13007 13008 13009 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 26474 26475 26476 26477 26478 26479 26444 26445 26446 26447 26448 26449 30464 30465 30466 30467 30468 30469 26630 26631 26632 26633 26634 26635 26660 26661 26662 26663 26664 26665 48 26792 26793 26794 26795 26796 26797 30470 30471 30472 30473 30474 30475 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 32132 32133 32134 32135 32136 32137 26804 26805 26806 26807 26808 26809 26798 26799 26800 26801 26802 26803 48 12956 12957 12958 12959 12960 12961 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 26660 26661 26662 26663 26664 26665 26630 26631 26632 26633 26634 26635 30470 30471 30472 30473 30474 30475 26792 26793 26794 26795 26796 26797 26846 26847 26848 26849 26850 26851 48 26960 26961 26962 26963 26964 26965 30476 30477 30478 30479 30480 30481 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 32138 32139 32140 32141 32142 32143 26972 26973 26974 26975 26976 26977 26966 26967 26968 26969 26970 26971 48 12908 12909 12910 12911 12912 12913 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 26846 26847 26848 26849 26850 26851 26792 26793 26794 26795 26796 26797 30476 30477 30478 30479 30480 30481 26960 26961 26962 26963 26964 26965 26990 26991 26992 26993 26994 26995 48 27134 27135 27136 27137 27138 27139 30482 30483 30484 30485 30486 30487 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 32144 32145 32146 32147 32148 32149 27146 27147 27148 27149 27150 27151 27140 27141 27142 27143 27144 27145 48 12860 12861 12862 12863 12864 12865 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 26990 26991 26992 26993 26994 26995 26960 26961 26962 26963 26964 26965 30482 30483 30484 30485 30486 30487 27134 27135 27136 27137 27138 27139 27164 27165 27166 27167 27168 27169 48 27302 27303 27304 27305 27306 27307 30488 30489 30490 30491 30492 30493 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146 27147 27148 27149 27150 27151 32150 32151 32152 32153 32154 32155 27314 27315 27316 27317 27318 27319 27308 27309 27310 27311 27312 27313 48 12812 12813 12814 12815 12816 12817 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 27164 27165 27166 27167 27168 27169 27134 27135 27136 27137 27138 27139 30488 30489 30490 30491 30492 30493 27302 27303 27304 27305 27306 27307 27356 27357 27358 27359 27360 27361 48 27482 27483 27484 27485 27486 27487 30494 30495 30496 30497 30498 30499 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316 27317 27318 27319 32156 32157 32158 32159 32160 32161 27494 27495 27496 27497 27498 27499 27488 27489 27490 27491 27492 27493 48 12764 12765 12766 12767 12768 12769 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 27356 27357 27358 27359 27360 27361 27302 27303 27304 27305 27306 27307 30494 30495 30496 30497 30498 30499 27482 27483 27484 27485 27486 27487 27512 27513 27514 27515 27516 27517 48 27662 27663 27664 27665 27666 27667 30500 30501 30502 30503 30504 30505 27482 27483 27484 27485 27486 27487 27488 27489 27490 27491 27492 27493 27494 27495 27496 27497 27498 27499 32162 32163 32164 32165 32166 32167 27674 27675 27676 27677 27678 27679 27668 27669 27670 27671 27672 27673 48 12716 12717 12718 12719 12720 12721 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 27512 27513 27514 27515 27516 27517 27482 27483 27484 27485 27486 27487 30500 30501 30502 30503 30504 30505 27662 27663 27664 27665 27666 27667 27692 27693 27694 27695 27696 27697 48 27824 27825 27826 27827 27828 27829 30506 30507 30508 30509 30510 30511 27662 27663 27664 27665 27666 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 27677 27678 27679 32168 32169 32170 32171 32172 32173 27836 27837 27838 27839 27840 27841 27830 27831 27832 27833 27834 27835 48 12668 12669 12670 12671 12672 12673 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 27692 27693 27694 27695 27696 27697 27662 27663 27664 27665 27666 27667 30506 30507 30508 30509 30510 30511 27824 27825 27826 27827 27828 27829 27878 27879 27880 27881 27882 27883 48 27992 27993 27994 27995 27996 27997 30512 30513 30514 30515 30516 30517 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 32174 32175 32176 32177 32178 32179 28004 28005 28006 28007 28008 28009 27998 27999 28000 28001 28002 28003 48 12620 12621 12622 12623 12624 12625 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 27878 27879 27880 27881 27882 27883 27824 27825 27826 27827 27828 27829 30512 30513 30514 30515 30516 30517 27992 27993 27994 27995 27996 27997 28022 28023 28024 28025 28026 28027 48 28166 28167 28168 28169 28170 28171 30518 30519 30520 30521 30522 30523 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 32180 32181 32182 32183 32184 32185 28178 28179 28180 28181 28182 28183 28172 28173 28174 28175 28176 28177 48 12572 12573 12574 12575 12576 12577 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 28022 28023 28024 28025 28026 28027 27992 27993 27994 27995 27996 27997 30518 30519 30520 30521 30522 30523 28166 28167 28168 28169 28170 28171 28196 28197 28198 28199 28200 28201 48 28334 28335 28336 28337 28338 28339 30524 30525 30526 30527 30528 30529 28166 28167 28168 28169 28170 28171 28172 28173 28174 28175 28176 28177 28178 28179 28180 28181 28182 28183 32186 32187 32188 32189 32190 32191 28346 28347 28348 28349 28350 28351 28340 28341 28342 28343 28344 28345 48 12524 12525 12526 12527 12528 12529 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 28196 28197 28198 28199 28200 28201 28166 28167 28168 28169 28170 28171 30524 30525 30526 30527 30528 30529 28334 28335 28336 28337 28338 28339 28388 28389 28390 28391 28392 28393 48 28478 28479 28480 28481 28482 28483 30530 30531 30532 30533 30534 30535 28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 32192 32193 32194 32195 32196 32197 28490 28491 28492 28493 28494 28495 28484 28485 28486 28487 28488 28489 48 12476 12477 12478 12479 12480 12481 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 28388 28389 28390 28391 28392 28393 28334 28335 28336 28337 28338 28339 30530 30531 30532 30533 30534 30535 28478 28479 28480 28481 28482 28483 28508 28509 28510 28511 28512 28513 48 961 962 963 964 965 966 30536 30537 30538 30539 30540 30541 28478 28479 28480 28481 28482 28483 28484 28485 28486 28487 28488 28489 28490 28491 28492 28493 28494 28495 32198 32199 32200 32201 32202 32203 28616 28617 28618 28619 28620 28621 28610 28611 28612 28613 28614 28615 48 12434 12435 12436 12437 12438 12439 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 28508 28509 28510 28511 28512 28513 28478 28479 28480 28481 28482 28483 30536 30537 30538 30539 30540 30541 961 962 963 964 965 966 28658 28659 28660 28661 28662 28663 48 967 968 969 970 971 972 30542 30543 30544 30545 30546 30547 961 962 963 964 965 966 28610 28611 28612 28613 28614 28615 28616 28617 28618 28619 28620 28621 32204 32205 32206 32207 32208 32209 28742 28743 28744 28745 28746 28747 28736 28737 28738 28739 28740 28741 48 12392 12393 12394 12395 12396 12397 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 28658 28659 28660 28661 28662 28663 961 962 963 964 965 966 30542 30543 30544 30545 30546 30547 967 968 969 970 971 972 28784 28785 28786 28787 28788 28789 48 973 974 975 976 977 978 30548 30549 30550 30551 30552 30553 967 968 969 970 971 972 28736 28737 28738 28739 28740 28741 28742 28743 28744 28745 28746 28747 32210 32211 32212 32213 32214 32215 28868 28869 28870 28871 28872 28873 28862 28863 28864 28865 28866 28867 48 12350 12351 12352 12353 12354 12355 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 28784 28785 28786 28787 28788 28789 967 968 969 970 971 972 30548 30549 30550 30551 30552 30553 973 974 975 976 977 978 28910 28911 28912 28913 28914 28915 48 979 980 981 982 983 984 30554 30555 30556 30557 30558 30559 973 974 975 976 977 978 28862 28863 28864 28865 28866 28867 28868 28869 28870 28871 28872 28873 32216 32217 32218 32219 32220 32221 29006 29007 29008 29009 29010 29011 29000 29001 29002 29003 29004 29005 48 12308 12309 12310 12311 12312 12313 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 28910 28911 28912 28913 28914 28915 973 974 975 976 977 978 30554 30555 30556 30557 30558 30559 979 980 981 982 983 984 29048 29049 29050 29051 29052 29053 48 985 986 987 988 989 990 30560 30561 30562 30563 30564 30565 979 980 981 982 983 984 29000 29001 29002 29003 29004 29005 29006 29007 29008 29009 29010 29011 32222 32223 32224 32225 32226 32227 29162 29163 29164 29165 29166 29167 29156 29157 29158 29159 29160 29161 48 12266 12267 12268 12269 12270 12271 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 29048 29049 29050 29051 29052 29053 979 980 981 982 983 984 30560 30561 30562 30563 30564 30565 985 986 987 988 989 990 29204 29205 29206 29207 29208 29209 48 991 992 993 994 995 996 30566 30567 30568 30569 30570 30571 985 986 987 988 989 990 29156 29157 29158 29159 29160 29161 29162 29163 29164 29165 29166 29167 32228 32229 32230 32231 32232 32233 29318 29319 29320 29321 29322 29323 29312 29313 29314 29315 29316 29317 48 12200 12201 12202 12203 12204 12205 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 29204 29205 29206 29207 29208 29209 985 986 987 988 989 990 30566 30567 30568 30569 30570 30571 991 992 993 994 995 996 29360 29361 29362 29363 29364 29365 48 29474 29475 29476 29477 29478 29479 30572 30573 30574 30575 30576 30577 991 992 993 994 995 996 29312 29313 29314 29315 29316 29317 29318 29319 29320 29321 29322 29323 32234 32235 32236 32237 32238 32239 29486 29487 29488 29489 29490 29491 29480 29481 29482 29483 29484 29485 48 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 29360 29361 29362 29363 29364 29365 991 992 993 994 995 996 30572 30573 30574 30575 30576 30577 29474 29475 29476 29477 29478 29479 29504 29505 29506 29507 29508 29509 48 22820 22821 22822 22823 22824 22825 30074 30075 30076 30077 30078 30079 22646 22647 22648 22649 22650 22651 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 22663 31730 31731 31732 31733 31734 31735 22832 22833 22834 22835 22836 22837 22826 22827 22828 22829 22830 22831 48 23000 23001 23002 23003 23004 23005 30080 30081 30082 30083 30084 30085 22820 22821 22822 22823 22824 22825 22826 22827 22828 22829 22830 22831 22832 22833 22834 22835 22836 22837 31736 31737 31738 31739 31740 31741 23012 23013 23014 23015 23016 23017 23006 23007 23008 23009 23010 23011 48 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 22850 22851 22852 22853 22854 22855 22820 22821 22822 22823 22824 22825 30080 30081 30082 30083 30084 30085 23000 23001 23002 23003 23004 23005 23030 23031 23032 23033 23034 23035 48 23168 23169 23170 23171 23172 23173 30086 30087 30088 30089 30090 30091 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 31742 31743 31744 31745 31746 31747 23180 23181 23182 23183 23184 23185 23174 23175 23176 23177 23178 23179 48 23336 23337 23338 23339 23340 23341 30092 30093 30094 30095 30096 30097 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 31748 31749 31750 31751 31752 31753 23348 23349 23350 23351 23352 23353 23342 23343 23344 23345 23346 23347 48 23516 23517 23518 23519 23520 23521 30098 30099 30100 30101 30102 30103 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 31754 31755 31756 31757 31758 31759 23528 23529 23530 23531 23532 23533 23522 23523 23524 23525 23526 23527 48 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 23402 23403 23404 23405 23406 23407 23336 23337 23338 23339 23340 23341 30098 30099 30100 30101 30102 30103 23516 23517 23518 23519 23520 23521 23546 23547 23548 23549 23550 23551 48 23684 23685 23686 23687 23688 23689 30104 30105 30106 30107 30108 30109 23516 23517 23518 23519 23520 23521 23522 23523 23524 23525 23526 23527 23528 23529 23530 23531 23532 23533 31760 31761 31762 31763 31764 31765 23696 23697 23698 23699 23700 23701 23690 23691 23692 23693 23694 23695 48 23852 23853 23854 23855 23856 23857 30110 30111 30112 30113 30114 30115 23684 23685 23686 23687 23688 23689 23690 23691 23692 23693 23694 23695 23696 23697 23698 23699 23700 23701 31766 31767 31768 31769 31770 31771 23864 23865 23866 23867 23868 23869 23858 23859 23860 23861 23862 23863 48 24026 24027 24028 24029 24030 24031 30116 30117 30118 30119 30120 30121 23852 23853 23854 23855 23856 23857 23858 23859 23860 23861 23862 23863 23864 23865 23866 23867 23868 23869 31772 31773 31774 31775 31776 31777 24038 24039 24040 24041 24042 24043 24032 24033 24034 24035 24036 24037 48 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 23918 23919 23920 23921 23922 23923 23852 23853 23854 23855 23856 23857 30116 30117 30118 30119 30120 30121 24026 24027 24028 24029 24030 24031 24092 24093 24094 24095 24096 24097 48 24194 24195 24196 24197 24198 24199 30122 30123 30124 30125 30126 30127 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 31778 31779 31780 31781 31782 31783 24206 24207 24208 24209 24210 24211 24200 24201 24202 24203 24204 24205 48 24362 24363 24364 24365 24366 24367 30128 30129 30130 30131 30132 30133 24194 24195 24196 24197 24198 24199 24200 24201 24202 24203 24204 24205 24206 24207 24208 24209 24210 24211 31784 31785 31786 31787 31788 31789 24374 24375 24376 24377 24378 24379 24368 24369 24370 24371 24372 24373 48 24542 24543 24544 24545 24546 24547 30134 30135 30136 30137 30138 30139 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 24373 24374 24375 24376 24377 24378 24379 31790 31791 31792 31793 31794 31795 24554 24555 24556 24557 24558 24559 24548 24549 24550 24551 24552 24553 48 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 24428 24429 24430 24431 24432 24433 24362 24363 24364 24365 24366 24367 30134 30135 30136 30137 30138 30139 24542 24543 24544 24545 24546 24547 24572 24573 24574 24575 24576 24577 48 24710 24711 24712 24713 24714 24715 30140 30141 30142 30143 30144 30145 24542 24543 24544 24545 24546 24547 24548 24549 24550 24551 24552 24553 24554 24555 24556 24557 24558 24559 31796 31797 31798 31799 31800 31801 24722 24723 24724 24725 24726 24727 24716 24717 24718 24719 24720 24721 48 24878 24879 24880 24881 24882 24883 30146 30147 30148 30149 30150 30151 24710 24711 24712 24713 24714 24715 24716 24717 24718 24719 24720 24721 24722 24723 24724 24725 24726 24727 31802 31803 31804 31805 31806 31807 24890 24891 24892 24893 24894 24895 24884 24885 24886 24887 24888 24889 48 25052 25053 25054 25055 25056 25057 30152 30153 30154 30155 30156 30157 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 31808 31809 31810 31811 31812 31813 25064 25065 25066 25067 25068 25069 25058 25059 25060 25061 25062 25063 48 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 24944 24945 24946 24947 24948 24949 24878 24879 24880 24881 24882 24883 30152 30153 30154 30155 30156 30157 25052 25053 25054 25055 25056 25057 25118 25119 25120 25121 25122 25123 48 25220 25221 25222 25223 25224 25225 30158 30159 30160 30161 30162 30163 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 31814 31815 31816 31817 31818 31819 25232 25233 25234 25235 25236 25237 25226 25227 25228 25229 25230 25231 48 25388 25389 25390 25391 25392 25393 30164 30165 30166 30167 30168 30169 25220 25221 25222 25223 25224 25225 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 25237 31820 31821 31822 31823 31824 31825 25400 25401 25402 25403 25404 25405 25394 25395 25396 25397 25398 25399 48 25568 25569 25570 25571 25572 25573 30170 30171 30172 30173 30174 30175 25388 25389 25390 25391 25392 25393 25394 25395 25396 25397 25398 25399 25400 25401 25402 25403 25404 25405 31826 31827 31828 31829 31830 31831 25580 25581 25582 25583 25584 25585 25574 25575 25576 25577 25578 25579 48 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 25454 25455 25456 25457 25458 25459 25388 25389 25390 25391 25392 25393 30170 30171 30172 30173 30174 30175 25568 25569 25570 25571 25572 25573 25598 25599 25600 25601 25602 25603 48 25736 25737 25738 25739 25740 25741 30176 30177 30178 30179 30180 30181 25568 25569 25570 25571 25572 25573 25574 25575 25576 25577 25578 25579 25580 25581 25582 25583 25584 25585 31832 31833 31834 31835 31836 31837 25748 25749 25750 25751 25752 25753 25742 25743 25744 25745 25746 25747 48 25904 25905 25906 25907 25908 25909 30182 30183 30184 30185 30186 30187 25736 25737 25738 25739 25740 25741 25742 25743 25744 25745 25746 25747 25748 25749 25750 25751 25752 25753 31838 31839 31840 31841 31842 31843 25916 25917 25918 25919 25920 25921 25910 25911 25912 25913 25914 25915 48 26078 26079 26080 26081 26082 26083 30188 30189 30190 30191 30192 30193 25904 25905 25906 25907 25908 25909 25910 25911 25912 25913 25914 25915 25916 25917 25918 25919 25920 25921 31844 31845 31846 31847 31848 31849 26090 26091 26092 26093 26094 26095 26084 26085 26086 26087 26088 26089 48 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 25970 25971 25972 25973 25974 25975 25904 25905 25906 25907 25908 25909 30188 30189 30190 30191 30192 30193 26078 26079 26080 26081 26082 26083 26144 26145 26146 26147 26148 26149 48 26246 26247 26248 26249 26250 26251 30194 30195 30196 30197 30198 30199 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 31850 31851 31852 31853 31854 31855 26258 26259 26260 26261 26262 26263 26252 26253 26254 26255 26256 26257 48 26414 26415 26416 26417 26418 26419 30200 30201 30202 30203 30204 30205 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 31856 31857 31858 31859 31860 31861 26426 26427 26428 26429 26430 26431 26420 26421 26422 26423 26424 26425 48 26594 26595 26596 26597 26598 26599 30206 30207 30208 30209 30210 30211 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 31862 31863 31864 31865 31866 31867 26606 26607 26608 26609 26610 26611 26600 26601 26602 26603 26604 26605 48 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 26480 26481 26482 26483 26484 26485 26414 26415 26416 26417 26418 26419 30206 30207 30208 30209 30210 30211 26594 26595 26596 26597 26598 26599 26624 26625 26626 26627 26628 26629 48 26762 26763 26764 26765 26766 26767 30212 30213 30214 30215 30216 30217 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 31868 31869 31870 31871 31872 31873 26774 26775 26776 26777 26778 26779 26768 26769 26770 26771 26772 26773 48 26930 26931 26932 26933 26934 26935 30218 30219 30220 30221 30222 30223 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 31874 31875 31876 31877 31878 31879 26942 26943 26944 26945 26946 26947 26936 26937 26938 26939 26940 26941 48 27104 27105 27106 27107 27108 27109 30224 30225 30226 30227 30228 30229 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 31880 31881 31882 31883 31884 31885 27116 27117 27118 27119 27120 27121 27110 27111 27112 27113 27114 27115 48 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 26996 26997 26998 26999 27000 27001 26930 26931 26932 26933 26934 26935 30224 30225 30226 30227 30228 30229 27104 27105 27106 27107 27108 27109 27170 27171 27172 27173 27174 27175 48 27272 27273 27274 27275 27276 27277 30230 30231 30232 30233 30234 30235 27104 27105 27106 27107 27108 27109 27110 27111 27112 27113 27114 27115 27116 27117 27118 27119 27120 27121 31886 31887 31888 31889 31890 31891 27284 27285 27286 27287 27288 27289 27278 27279 27280 27281 27282 27283 48 27446 27447 27448 27449 27450 27451 30236 30237 30238 30239 30240 30241 27272 27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 27284 27285 27286 27287 27288 27289 31892 31893 31894 31895 31896 31897 27458 27459 27460 27461 27462 27463 27452 27453 27454 27455 27456 27457 48 27626 27627 27628 27629 27630 27631 30242 30243 30244 30245 30246 30247 27446 27447 27448 27449 27450 27451 27452 27453 27454 27455 27456 27457 27458 27459 27460 27461 27462 27463 31898 31899 31900 31901 31902 31903 27638 27639 27640 27641 27642 27643 27632 27633 27634 27635 27636 27637 48 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 27476 27477 27478 27479 27480 27481 27446 27447 27448 27449 27450 27451 30242 30243 30244 30245 30246 30247 27626 27627 27628 27629 27630 27631 27656 27657 27658 27659 27660 27661 48 27794 27795 27796 27797 27798 27799 30248 30249 30250 30251 30252 30253 27626 27627 27628 27629 27630 27631 27632 27633 27634 27635 27636 27637 27638 27639 27640 27641 27642 27643 31904 31905 31906 31907 31908 31909 27806 27807 27808 27809 27810 27811 27800 27801 27802 27803 27804 27805 48 27962 27963 27964 27965 27966 27967 30254 30255 30256 30257 30258 30259 27794 27795 27796 27797 27798 27799 27800 27801 27802 27803 27804 27805 27806 27807 27808 27809 27810 27811 31910 31911 31912 31913 31914 31915 27974 27975 27976 27977 27978 27979 27968 27969 27970 27971 27972 27973 48 28136 28137 28138 28139 28140 28141 30260 30261 30262 30263 30264 30265 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 31916 31917 31918 31919 31920 31921 28148 28149 28150 28151 28152 28153 28142 28143 28144 28145 28146 28147 48 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 28028 28029 28030 28031 28032 28033 27962 27963 27964 27965 27966 27967 30260 30261 30262 30263 30264 30265 28136 28137 28138 28139 28140 28141 28202 28203 28204 28205 28206 28207 48 28304 28305 28306 28307 28308 28309 30266 30267 30268 30269 30270 30271 28136 28137 28138 28139 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 28152 28153 31922 31923 31924 31925 31926 31927 28316 28317 28318 28319 28320 28321 28310 28311 28312 28313 28314 28315 48 21008 21009 21010 21011 21012 21013 30272 30273 30274 30275 30276 30277 28304 28305 28306 28307 28308 28309 28310 28311 28312 28313 28314 28315 28316 28317 28318 28319 28320 28321 31928 31929 31930 31931 31932 31933 28460 28461 28462 28463 28464 28465 28454 28455 28456 28457 28458 28459 48 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 28454 28455 28456 28457 28458 28459 28460 28461 28462 28463 28464 28465 31934 31935 31936 31937 31938 31939 28592 28593 28594 28595 28596 28597 28586 28587 28588 28589 28590 28591 48 29444 29445 29446 29447 29448 29449 29510 29511 29512 29513 29514 29515 10778 10779 10780 10781 10782 10783 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 32282 32283 32284 32285 32286 32287 955 956 957 958 959 960 32288 32289 32290 32291 32292 32293 48 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 20996 20997 20998 20999 21000 21001 28586 28587 28588 28589 28590 28591 28592 28593 28594 28595 28596 28597 31940 31941 31942 31943 31944 31945 28718 28719 28720 28721 28722 28723 28712 28713 28714 28715 28716 28717 36 29444 29445 29446 29447 29448 29449 955 956 957 958 959 960 29282 29283 29284 29285 29286 29287 32288 32289 32290 32291 32292 32293 32294 32295 32296 32297 32298 32299 30290 30291 30292 30293 30294 30295 48 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21038 21039 21040 21041 21042 21043 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 31946 31947 31948 31949 31950 31951 28844 28845 28846 28847 28848 28849 28838 28839 28840 28841 28842 28843 48 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21062 21063 21064 21065 21066 21067 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 31952 31953 31954 31955 31956 31957 28982 28983 28984 28985 28986 28987 28976 28977 28978 28979 28980 28981 48 29126 29127 29128 29129 29130 29131 30284 30285 30286 30287 30288 30289 29282 29283 29284 29285 29286 29287 32294 32295 32296 32297 32298 32299 955 956 957 958 959 960 32300 32301 32302 32303 32304 32305 949 950 951 952 953 954 32306 32307 32308 32309 32310 32311 48 29126 29127 29128 29129 29130 29131 30278 30279 30280 30281 30282 30283 21086 21087 21088 21089 21090 21091 28976 28977 28978 28979 28980 28981 28982 28983 28984 28985 28986 28987 31958 31959 31960 31961 31962 31963 29138 29139 29140 29141 29142 29143 29132 29133 29134 29135 29136 29137 48 29282 29283 29284 29285 29286 29287 30284 30285 30286 30287 30288 30289 29126 29127 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 29138 29139 29140 29141 29142 29143 31964 31965 31966 31967 31968 31969 29294 29295 29296 29297 29298 29299 29288 29289 29290 29291 29292 29293 48 21086 21087 21088 21089 21090 21091 30278 30279 30280 30281 30282 30283 29126 29127 29128 29129 29130 29131 32306 32307 32308 32309 32310 32311 949 950 951 952 953 954 32312 32313 32314 32315 32316 32317 943 944 945 946 947 948 21098 21099 21100 21101 21102 21103 48 29444 29445 29446 29447 29448 29449 30290 30291 30292 30293 30294 30295 29282 29283 29284 29285 29286 29287 29288 29289 29290 29291 29292 29293 29294 29295 29296 29297 29298 29299 31970 31971 31972 31973 31974 31975 29456 29457 29458 29459 29460 29461 29450 29451 29452 29453 29454 29455 48 22616 22617 22618 22619 22620 22621 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 32318 32319 32320 32321 32322 32323 31442 31443 31444 31445 31446 31447 31436 31437 31438 31439 31440 31441 22628 22629 22630 22631 22632 22633 22622 22623 22624 22625 22626 22627 48 22784 22785 22786 22787 22788 22789 29816 29817 29818 29819 29820 29821 22616 22617 22618 22619 22620 22621 22622 22623 22624 22625 22626 22627 22628 22629 22630 22631 22632 22633 31454 31455 31456 31457 31458 31459 22796 22797 22798 22799 22800 22801 22790 22791 22792 22793 22794 22795 48 22964 22965 22966 22967 22968 22969 29822 29823 29824 29825 29826 29827 22784 22785 22786 22787 22788 22789 22790 22791 22792 22793 22794 22795 22796 22797 22798 22799 22800 22801 31460 31461 31462 31463 31464 31465 22976 22977 22978 22979 22980 22981 22970 22971 22972 22973 22974 22975 48 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 22814 22815 22816 22817 22818 22819 22784 22785 22786 22787 22788 22789 29822 29823 29824 29825 29826 29827 22964 22965 22966 22967 22968 22969 22994 22995 22996 22997 22998 22999 48 23138 23139 23140 23141 23142 23143 29828 29829 29830 29831 29832 29833 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 31466 31467 31468 31469 31470 31471 23150 23151 23152 23153 23154 23155 23144 23145 23146 23147 23148 23149 48 23306 23307 23308 23309 23310 23311 29834 29835 29836 29837 29838 29839 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 31472 31473 31474 31475 31476 31477 23318 23319 23320 23321 23322 23323 23312 23313 23314 23315 23316 23317 48 23480 23481 23482 23483 23484 23485 29840 29841 29842 29843 29844 29845 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 31478 31479 31480 31481 31482 31483 23492 23493 23494 23495 23496 23497 23486 23487 23488 23489 23490 23491 48 23654 23655 23656 23657 23658 23659 29846 29847 29848 29849 29850 29851 23480 23481 23482 23483 23484 23485 23486 23487 23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 31484 31485 31486 31487 31488 31489 23666 23667 23668 23669 23670 23671 23660 23661 23662 23663 23664 23665 48 23822 23823 23824 23825 23826 23827 29852 29853 29854 29855 29856 29857 23654 23655 23656 23657 23658 23659 23660 23661 23662 23663 23664 23665 23666 23667 23668 23669 23670 23671 31490 31491 31492 31493 31494 31495 23834 23835 23836 23837 23838 23839 23828 23829 23830 23831 23832 23833 48 23996 23997 23998 23999 24000 24001 29858 29859 29860 29861 29862 29863 23822 23823 23824 23825 23826 23827 23828 23829 23830 23831 23832 23833 23834 23835 23836 23837 23838 23839 31496 31497 31498 31499 31500 31501 24008 24009 24010 24011 24012 24013 24002 24003 24004 24005 24006 24007 48 24164 24165 24166 24167 24168 24169 29864 29865 29866 29867 29868 29869 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 31502 31503 31504 31505 31506 31507 24176 24177 24178 24179 24180 24181 24170 24171 24172 24173 24174 24175 48 24332 24333 24334 24335 24336 24337 29870 29871 29872 29873 29874 29875 24164 24165 24166 24167 24168 24169 24170 24171 24172 24173 24174 24175 24176 24177 24178 24179 24180 24181 31508 31509 31510 31511 31512 31513 24344 24345 24346 24347 24348 24349 24338 24339 24340 24341 24342 24343 48 24506 24507 24508 24509 24510 24511 29876 29877 29878 29879 29880 29881 24332 24333 24334 24335 24336 24337 24338 24339 24340 24341 24342 24343 24344 24345 24346 24347 24348 24349 31514 31515 31516 31517 31518 31519 24518 24519 24520 24521 24522 24523 24512 24513 24514 24515 24516 24517 48 24680 24681 24682 24683 24684 24685 29882 29883 29884 29885 29886 29887 24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 24517 24518 24519 24520 24521 24522 24523 31520 31521 31522 31523 31524 31525 24692 24693 24694 24695 24696 24697 24686 24687 24688 24689 24690 24691 48 24848 24849 24850 24851 24852 24853 29888 29889 29890 29891 29892 29893 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 24694 24695 24696 24697 31526 31527 31528 31529 31530 31531 24860 24861 24862 24863 24864 24865 24854 24855 24856 24857 24858 24859 48 25022 25023 25024 25025 25026 25027 29894 29895 29896 29897 29898 29899 24848 24849 24850 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 31532 31533 31534 31535 31536 31537 25034 25035 25036 25037 25038 25039 25028 25029 25030 25031 25032 25033 48 25190 25191 25192 25193 25194 25195 29900 29901 29902 29903 29904 29905 25022 25023 25024 25025 25026 25027 25028 25029 25030 25031 25032 25033 25034 25035 25036 25037 25038 25039 31538 31539 31540 31541 31542 31543 25202 25203 25204 25205 25206 25207 25196 25197 25198 25199 25200 25201 48 25358 25359 25360 25361 25362 25363 29906 29907 29908 29909 29910 29911 25190 25191 25192 25193 25194 25195 25196 25197 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 31544 31545 31546 31547 31548 31549 25370 25371 25372 25373 25374 25375 25364 25365 25366 25367 25368 25369 48 25532 25533 25534 25535 25536 25537 29912 29913 29914 29915 29916 29917 25358 25359 25360 25361 25362 25363 25364 25365 25366 25367 25368 25369 25370 25371 25372 25373 25374 25375 31550 31551 31552 31553 31554 31555 25544 25545 25546 25547 25548 25549 25538 25539 25540 25541 25542 25543 48 25706 25707 25708 25709 25710 25711 29918 29919 29920 29921 29922 29923 25532 25533 25534 25535 25536 25537 25538 25539 25540 25541 25542 25543 25544 25545 25546 25547 25548 25549 31556 31557 31558 31559 31560 31561 25718 25719 25720 25721 25722 25723 25712 25713 25714 25715 25716 25717 48 25874 25875 25876 25877 25878 25879 29924 29925 29926 29927 29928 29929 25706 25707 25708 25709 25710 25711 25712 25713 25714 25715 25716 25717 25718 25719 25720 25721 25722 25723 31562 31563 31564 31565 31566 31567 25886 25887 25888 25889 25890 25891 25880 25881 25882 25883 25884 25885 48 26048 26049 26050 26051 26052 26053 29930 29931 29932 29933 29934 29935 25874 25875 25876 25877 25878 25879 25880 25881 25882 25883 25884 25885 25886 25887 25888 25889 25890 25891 31568 31569 31570 31571 31572 31573 26060 26061 26062 26063 26064 26065 26054 26055 26056 26057 26058 26059 48 26216 26217 26218 26219 26220 26221 29936 29937 29938 29939 29940 29941 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 31574 31575 31576 31577 31578 31579 26228 26229 26230 26231 26232 26233 26222 26223 26224 26225 26226 26227 48 26384 26385 26386 26387 26388 26389 29942 29943 29944 29945 29946 29947 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 31580 31581 31582 31583 31584 31585 26396 26397 26398 26399 26400 26401 26390 26391 26392 26393 26394 26395 48 26558 26559 26560 26561 26562 26563 29948 29949 29950 29951 29952 29953 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 31586 31587 31588 31589 31590 31591 26570 26571 26572 26573 26574 26575 26564 26565 26566 26567 26568 26569 48 26732 26733 26734 26735 26736 26737 29954 29955 29956 29957 29958 29959 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 31592 31593 31594 31595 31596 31597 26744 26745 26746 26747 26748 26749 26738 26739 26740 26741 26742 26743 48 26900 26901 26902 26903 26904 26905 29960 29961 29962 29963 29964 29965 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 31598 31599 31600 31601 31602 31603 26912 26913 26914 26915 26916 26917 26906 26907 26908 26909 26910 26911 48 27074 27075 27076 27077 27078 27079 29966 29967 29968 29969 29970 29971 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 31604 31605 31606 31607 31608 31609 27086 27087 27088 27089 27090 27091 27080 27081 27082 27083 27084 27085 48 27242 27243 27244 27245 27246 27247 29972 29973 29974 29975 29976 29977 27074 27075 27076 27077 27078 27079 27080 27081 27082 27083 27084 27085 27086 27087 27088 27089 27090 27091 31610 31611 31612 31613 31614 31615 27254 27255 27256 27257 27258 27259 27248 27249 27250 27251 27252 27253 48 27410 27411 27412 27413 27414 27415 29978 29979 29980 29981 29982 29983 27242 27243 27244 27245 27246 27247 27248 27249 27250 27251 27252 27253 27254 27255 27256 27257 27258 27259 31616 31617 31618 31619 31620 31621 27422 27423 27424 27425 27426 27427 27416 27417 27418 27419 27420 27421 48 27590 27591 27592 27593 27594 27595 29984 29985 29986 29987 29988 29989 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 31622 31623 31624 31625 31626 31627 27602 27603 27604 27605 27606 27607 27596 27597 27598 27599 27600 27601 48 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 27440 27441 27442 27443 27444 27445 27410 27411 27412 27413 27414 27415 29984 29985 29986 29987 29988 29989 27590 27591 27592 27593 27594 27595 27620 27621 27622 27623 27624 27625 48 27764 27765 27766 27767 27768 27769 29990 29991 29992 29993 29994 29995 27590 27591 27592 27593 27594 27595 27596 27597 27598 27599 27600 27601 27602 27603 27604 27605 27606 27607 31628 31629 31630 31631 31632 31633 27776 27777 27778 27779 27780 27781 27770 27771 27772 27773 27774 27775 48 27932 27933 27934 27935 27936 27937 29996 29997 29998 29999 30000 30001 27764 27765 27766 27767 27768 27769 27770 27771 27772 27773 27774 27775 27776 27777 27778 27779 27780 27781 31634 31635 31636 31637 31638 31639 27944 27945 27946 27947 27948 27949 27938 27939 27940 27941 27942 27943 48 28106 28107 28108 28109 28110 28111 30002 30003 30004 30005 30006 30007 27932 27933 27934 27935 27936 27937 27938 27939 27940 27941 27942 27943 27944 27945 27946 27947 27948 27949 31640 31641 31642 31643 31644 31645 28118 28119 28120 28121 28122 28123 28112 28113 28114 28115 28116 28117 48 28274 28275 28276 28277 28278 28279 30008 30009 30010 30011 30012 30013 28106 28107 28108 28109 28110 28111 28112 28113 28114 28115 28116 28117 28118 28119 28120 28121 28122 28123 31646 31647 31648 31649 31650 31651 28286 28287 28288 28289 28290 28291 28280 28281 28282 28283 28284 28285 48 20894 20895 20896 20897 20898 20899 30014 30015 30016 30017 30018 30019 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 28285 28286 28287 28288 28289 28290 28291 31652 31653 31654 31655 31656 31657 28436 28437 28438 28439 28440 28441 28430 28431 28432 28433 28434 28435 48 20882 20883 20884 20885 20886 20887 20888 20889 20890 20891 20892 20893 20894 20895 20896 20897 20898 20899 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 31658 31659 31660 31661 31662 31663 28568 28569 28570 28571 28572 28573 28562 28563 28564 28565 28566 28567 48 29414 29415 29416 29417 29418 29419 32324 32325 32326 32327 32328 32329 9392 9393 9394 9395 9396 9397 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 32330 32331 32332 32333 32334 32335 919 920 921 922 923 924 32336 32337 32338 32339 32340 32341 48 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20882 20883 20884 20885 20886 20887 28562 28563 28564 28565 28566 28567 28568 28569 28570 28571 28572 28573 31664 31665 31666 31667 31668 31669 28694 28695 28696 28697 28698 28699 28688 28689 28690 28691 28692 28693 36 29414 29415 29416 29417 29418 29419 919 920 921 922 923 924 29252 29253 29254 29255 29256 29257 32336 32337 32338 32339 32340 32341 32342 32343 32344 32345 32346 32347 30032 30033 30034 30035 30036 30037 48 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20924 20925 20926 20927 20928 20929 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 31670 31671 31672 31673 31674 31675 28820 28821 28822 28823 28824 28825 28814 28815 28816 28817 28818 28819 48 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20948 20949 20950 20951 20952 20953 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823 28824 28825 31676 31677 31678 31679 31680 31681 28958 28959 28960 28961 28962 28963 28952 28953 28954 28955 28956 28957 48 29096 29097 29098 29099 29100 29101 30026 30027 30028 30029 30030 30031 29252 29253 29254 29255 29256 29257 32342 32343 32344 32345 32346 32347 919 920 921 922 923 924 32348 32349 32350 32351 32352 32353 913 914 915 916 917 918 32354 32355 32356 32357 32358 32359 48 29096 29097 29098 29099 29100 29101 30020 30021 30022 30023 30024 30025 20972 20973 20974 20975 20976 20977 28952 28953 28954 28955 28956 28957 28958 28959 28960 28961 28962 28963 31682 31683 31684 31685 31686 31687 29108 29109 29110 29111 29112 29113 29102 29103 29104 29105 29106 29107 48 29252 29253 29254 29255 29256 29257 30026 30027 30028 30029 30030 30031 29096 29097 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 29111 29112 29113 31688 31689 31690 31691 31692 31693 29264 29265 29266 29267 29268 29269 29258 29259 29260 29261 29262 29263 48 20972 20973 20974 20975 20976 20977 30020 30021 30022 30023 30024 30025 29096 29097 29098 29099 29100 29101 32354 32355 32356 32357 32358 32359 913 914 915 916 917 918 32360 32361 32362 32363 32364 32365 907 908 909 910 911 912 20984 20985 20986 20987 20988 20989 48 29414 29415 29416 29417 29418 29419 30032 30033 30034 30035 30036 30037 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 29262 29263 29264 29265 29266 29267 29268 29269 31694 31695 31696 31697 31698 31699 29426 29427 29428 29429 29430 29431 29420 29421 29422 29423 29424 29425 48 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 29414 29415 29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 31706 31707 31708 31709 31710 31711 31700 31701 31702 31703 31704 31705 32366 32367 32368 32369 32370 32371 48 22574 22575 22576 22577 22578 22579 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 29550 29551 32372 32373 32374 32375 32376 32377 30914 30915 30916 30917 30918 30919 30908 30909 30910 30911 30912 30913 22586 22587 22588 22589 22590 22591 22580 22581 22582 22583 22584 22585 48 22736 22737 22738 22739 22740 22741 29558 29559 29560 29561 29562 29563 22574 22575 22576 22577 22578 22579 22580 22581 22582 22583 22584 22585 22586 22587 22588 22589 22590 22591 30926 30927 30928 30929 30930 30931 22748 22749 22750 22751 22752 22753 22742 22743 22744 22745 22746 22747 48 22916 22917 22918 22919 22920 22921 29564 29565 29566 29567 29568 29569 22736 22737 22738 22739 22740 22741 22742 22743 22744 22745 22746 22747 22748 22749 22750 22751 22752 22753 30938 30939 30940 30941 30942 30943 22928 22929 22930 22931 22932 22933 22922 22923 22924 22925 22926 22927 48 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 22778 22779 22780 22781 22782 22783 22736 22737 22738 22739 22740 22741 29564 29565 29566 29567 29568 29569 22916 22917 22918 22919 22920 22921 22958 22959 22960 22961 22962 22963 48 23096 23097 23098 23099 23100 23101 29570 29571 29572 29573 29574 29575 22916 22917 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 22928 22929 22930 22931 22932 22933 30950 30951 30952 30953 30954 30955 23108 23109 23110 23111 23112 23113 23102 23103 23104 23105 23106 23107 48 23258 23259 23260 23261 23262 23263 29576 29577 29578 29579 29580 29581 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 30962 30963 30964 30965 30966 30967 23270 23271 23272 23273 23274 23275 23264 23265 23266 23267 23268 23269 48 23432 23433 23434 23435 23436 23437 29582 29583 29584 29585 29586 29587 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 30974 30975 30976 30977 30978 30979 23444 23445 23446 23447 23448 23449 23438 23439 23440 23441 23442 23443 48 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 23300 23301 23302 23303 23304 23305 23258 23259 23260 23261 23262 23263 29582 29583 29584 29585 29586 29587 23432 23433 23434 23435 23436 23437 23474 23475 23476 23477 23478 23479 48 23612 23613 23614 23615 23616 23617 29588 29589 29590 29591 29592 29593 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 30986 30987 30988 30989 30990 30991 23624 23625 23626 23627 23628 23629 23618 23619 23620 23621 23622 23623 48 23774 23775 23776 23777 23778 23779 29594 29595 29596 29597 29598 29599 23612 23613 23614 23615 23616 23617 23618 23619 23620 23621 23622 23623 23624 23625 23626 23627 23628 23629 30998 30999 31000 31001 31002 31003 23786 23787 23788 23789 23790 23791 23780 23781 23782 23783 23784 23785 48 23948 23949 23950 23951 23952 23953 29600 29601 29602 29603 29604 29605 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 31010 31011 31012 31013 31014 31015 23960 23961 23962 23963 23964 23965 23954 23955 23956 23957 23958 23959 48 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 23816 23817 23818 23819 23820 23821 23774 23775 23776 23777 23778 23779 29600 29601 29602 29603 29604 29605 23948 23949 23950 23951 23952 23953 23990 23991 23992 23993 23994 23995 48 24122 24123 24124 24125 24126 24127 29606 29607 29608 29609 29610 29611 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 31022 31023 31024 31025 31026 31027 24134 24135 24136 24137 24138 24139 24128 24129 24130 24131 24132 24133 48 24284 24285 24286 24287 24288 24289 29612 29613 29614 29615 29616 29617 24122 24123 24124 24125 24126 24127 24128 24129 24130 24131 24132 24133 24134 24135 24136 24137 24138 24139 31034 31035 31036 31037 31038 31039 24296 24297 24298 24299 24300 24301 24290 24291 24292 24293 24294 24295 48 24458 24459 24460 24461 24462 24463 29618 29619 29620 29621 29622 29623 24284 24285 24286 24287 24288 24289 24290 24291 24292 24293 24294 24295 24296 24297 24298 24299 24300 24301 31046 31047 31048 31049 31050 31051 24470 24471 24472 24473 24474 24475 24464 24465 24466 24467 24468 24469 48 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 24326 24327 24328 24329 24330 24331 24284 24285 24286 24287 24288 24289 29618 29619 29620 29621 29622 29623 24458 24459 24460 24461 24462 24463 24500 24501 24502 24503 24504 24505 48 24638 24639 24640 24641 24642 24643 29624 29625 29626 29627 29628 29629 24458 24459 24460 24461 24462 24463 24464 24465 24466 24467 24468 24469 24470 24471 24472 24473 24474 24475 31058 31059 31060 31061 31062 31063 24650 24651 24652 24653 24654 24655 24644 24645 24646 24647 24648 24649 48 24800 24801 24802 24803 24804 24805 29630 29631 29632 29633 29634 29635 24638 24639 24640 24641 24642 24643 24644 24645 24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 31070 31071 31072 31073 31074 31075 24812 24813 24814 24815 24816 24817 24806 24807 24808 24809 24810 24811 48 24974 24975 24976 24977 24978 24979 29636 29637 29638 29639 29640 29641 24800 24801 24802 24803 24804 24805 24806 24807 24808 24809 24810 24811 24812 24813 24814 24815 24816 24817 31082 31083 31084 31085 31086 31087 24986 24987 24988 24989 24990 24991 24980 24981 24982 24983 24984 24985 48 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 24842 24843 24844 24845 24846 24847 24800 24801 24802 24803 24804 24805 29636 29637 29638 29639 29640 29641 24974 24975 24976 24977 24978 24979 25016 25017 25018 25019 25020 25021 48 25148 25149 25150 25151 25152 25153 29642 29643 29644 29645 29646 29647 24974 24975 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 24987 24988 24989 24990 24991 31094 31095 31096 31097 31098 31099 25160 25161 25162 25163 25164 25165 25154 25155 25156 25157 25158 25159 48 25310 25311 25312 25313 25314 25315 29648 29649 29650 29651 29652 29653 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 31106 31107 31108 31109 31110 31111 25322 25323 25324 25325 25326 25327 25316 25317 25318 25319 25320 25321 48 25484 25485 25486 25487 25488 25489 29654 29655 29656 29657 29658 29659 25310 25311 25312 25313 25314 25315 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 31118 31119 31120 31121 31122 31123 25496 25497 25498 25499 25500 25501 25490 25491 25492 25493 25494 25495 48 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 25352 25353 25354 25355 25356 25357 25310 25311 25312 25313 25314 25315 29654 29655 29656 29657 29658 29659 25484 25485 25486 25487 25488 25489 25526 25527 25528 25529 25530 25531 48 25664 25665 25666 25667 25668 25669 29660 29661 29662 29663 29664 29665 25484 25485 25486 25487 25488 25489 25490 25491 25492 25493 25494 25495 25496 25497 25498 25499 25500 25501 31130 31131 31132 31133 31134 31135 25676 25677 25678 25679 25680 25681 25670 25671 25672 25673 25674 25675 48 25826 25827 25828 25829 25830 25831 29666 29667 29668 29669 29670 29671 25664 25665 25666 25667 25668 25669 25670 25671 25672 25673 25674 25675 25676 25677 25678 25679 25680 25681 31142 31143 31144 31145 31146 31147 25838 25839 25840 25841 25842 25843 25832 25833 25834 25835 25836 25837 48 26000 26001 26002 26003 26004 26005 29672 29673 29674 29675 29676 29677 25826 25827 25828 25829 25830 25831 25832 25833 25834 25835 25836 25837 25838 25839 25840 25841 25842 25843 31154 31155 31156 31157 31158 31159 26012 26013 26014 26015 26016 26017 26006 26007 26008 26009 26010 26011 48 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 25868 25869 25870 25871 25872 25873 25826 25827 25828 25829 25830 25831 29672 29673 29674 29675 29676 29677 26000 26001 26002 26003 26004 26005 26042 26043 26044 26045 26046 26047 48 26174 26175 26176 26177 26178 26179 29678 29679 29680 29681 29682 29683 26000 26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 31166 31167 31168 31169 31170 31171 26186 26187 26188 26189 26190 26191 26180 26181 26182 26183 26184 26185 48 26336 26337 26338 26339 26340 26341 29684 29685 29686 29687 29688 29689 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 31178 31179 31180 31181 31182 31183 26348 26349 26350 26351 26352 26353 26342 26343 26344 26345 26346 26347 48 26510 26511 26512 26513 26514 26515 29690 29691 29692 29693 29694 29695 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 31190 31191 31192 31193 31194 31195 26522 26523 26524 26525 26526 26527 26516 26517 26518 26519 26520 26521 48 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 26378 26379 26380 26381 26382 26383 26336 26337 26338 26339 26340 26341 29690 29691 29692 29693 29694 29695 26510 26511 26512 26513 26514 26515 26552 26553 26554 26555 26556 26557 48 26690 26691 26692 26693 26694 26695 29696 29697 29698 29699 29700 29701 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 31202 31203 31204 31205 31206 31207 26702 26703 26704 26705 26706 26707 26696 26697 26698 26699 26700 26701 48 26852 26853 26854 26855 26856 26857 29702 29703 29704 29705 29706 29707 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 31214 31215 31216 31217 31218 31219 26864 26865 26866 26867 26868 26869 26858 26859 26860 26861 26862 26863 48 27026 27027 27028 27029 27030 27031 29708 29709 29710 29711 29712 29713 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 31226 31227 31228 31229 31230 31231 27038 27039 27040 27041 27042 27043 27032 27033 27034 27035 27036 27037 48 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 26894 26895 26896 26897 26898 26899 26852 26853 26854 26855 26856 26857 29708 29709 29710 29711 29712 29713 27026 27027 27028 27029 27030 27031 27068 27069 27070 27071 27072 27073 48 27200 27201 27202 27203 27204 27205 29714 29715 29716 29717 29718 29719 27026 27027 27028 27029 27030 27031 27032 27033 27034 27035 27036 27037 27038 27039 27040 27041 27042 27043 31238 31239 31240 31241 31242 31243 27212 27213 27214 27215 27216 27217 27206 27207 27208 27209 27210 27211 48 27362 27363 27364 27365 27366 27367 29720 29721 29722 29723 29724 29725 27200 27201 27202 27203 27204 27205 27206 27207 27208 27209 27210 27211 27212 27213 27214 27215 27216 27217 31250 31251 31252 31253 31254 31255 27374 27375 27376 27377 27378 27379 27368 27369 27370 27371 27372 27373 48 27542 27543 27544 27545 27546 27547 29726 29727 29728 29729 29730 29731 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 31262 31263 31264 31265 31266 31267 27554 27555 27556 27557 27558 27559 27548 27549 27550 27551 27552 27553 48 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 27404 27405 27406 27407 27408 27409 27362 27363 27364 27365 27366 27367 29726 29727 29728 29729 29730 29731 27542 27543 27544 27545 27546 27547 27584 27585 27586 27587 27588 27589 48 27722 27723 27724 27725 27726 27727 29732 29733 29734 29735 29736 29737 27542 27543 27544 27545 27546 27547 27548 27549 27550 27551 27552 27553 27554 27555 27556 27557 27558 27559 31274 31275 31276 31277 31278 31279 27734 27735 27736 27737 27738 27739 27728 27729 27730 27731 27732 27733 48 27884 27885 27886 27887 27888 27889 29738 29739 29740 29741 29742 29743 27722 27723 27724 27725 27726 27727 27728 27729 27730 27731 27732 27733 27734 27735 27736 27737 27738 27739 31286 31287 31288 31289 31290 31291 27896 27897 27898 27899 27900 27901 27890 27891 27892 27893 27894 27895 48 28058 28059 28060 28061 28062 28063 29744 29745 29746 29747 29748 29749 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 27895 27896 27897 27898 27899 27900 27901 31298 31299 31300 31301 31302 31303 28070 28071 28072 28073 28074 28075 28064 28065 28066 28067 28068 28069 48 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 27926 27927 27928 27929 27930 27931 27884 27885 27886 27887 27888 27889 29744 29745 29746 29747 29748 29749 28058 28059 28060 28061 28062 28063 28100 28101 28102 28103 28104 28105 48 28232 28233 28234 28235 28236 28237 29750 29751 29752 29753 29754 29755 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 31310 31311 31312 31313 31314 31315 28244 28245 28246 28247 28248 28249 28238 28239 28240 28241 28242 28243 48 20780 20781 20782 20783 20784 20785 29756 29757 29758 29759 29760 29761 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 28249 31322 31323 31324 31325 31326 31327 28400 28401 28402 28403 28404 28405 28394 28395 28396 28397 28398 28399 48 20768 20769 20770 20771 20772 20773 20774 20775 20776 20777 20778 20779 20780 20781 20782 20783 20784 20785 28394 28395 28396 28397 28398 28399 28400 28401 28402 28403 28404 28405 31334 31335 31336 31337 31338 31339 28544 28545 28546 28547 28548 28549 28538 28539 28540 28541 28542 28543 48 29366 29367 29368 29369 29370 29371 29408 29409 29410 29411 29412 29413 7724 7725 7726 7727 7728 7729 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 32378 32379 32380 32381 32382 32383 877 878 879 880 881 882 32384 32385 32386 32387 32388 32389 48 20810 20811 20812 20813 20814 20815 20816 20817 20818 20819 20820 20821 20768 20769 20770 20771 20772 20773 28538 28539 28540 28541 28542 28543 28544 28545 28546 28547 28548 28549 31346 31347 31348 31349 31350 31351 28670 28671 28672 28673 28674 28675 28664 28665 28666 28667 28668 28669 36 29366 29367 29368 29369 29370 29371 877 878 879 880 881 882 29210 29211 29212 29213 29214 29215 32384 32385 32386 32387 32388 32389 32390 32391 32392 32393 32394 32395 29774 29775 29776 29777 29778 29779 48 20834 20835 20836 20837 20838 20839 20840 20841 20842 20843 20844 20845 20810 20811 20812 20813 20814 20815 28664 28665 28666 28667 28668 28669 28670 28671 28672 28673 28674 28675 31352 31353 31354 31355 31356 31357 28796 28797 28798 28799 28800 28801 28790 28791 28792 28793 28794 28795 48 20858 20859 20860 20861 20862 20863 20864 20865 20866 20867 20868 20869 20834 20835 20836 20837 20838 20839 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 31358 31359 31360 31361 31362 31363 28922 28923 28924 28925 28926 28927 28916 28917 28918 28919 28920 28921 48 29054 29055 29056 29057 29058 29059 29768 29769 29770 29771 29772 29773 29210 29211 29212 29213 29214 29215 32390 32391 32392 32393 32394 32395 877 878 879 880 881 882 32396 32397 32398 32399 32400 32401 865 866 867 868 869 870 32402 32403 32404 32405 32406 32407 48 29054 29055 29056 29057 29058 29059 29762 29763 29764 29765 29766 29767 20858 20859 20860 20861 20862 20863 28916 28917 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 31370 31371 31372 31373 31374 31375 29066 29067 29068 29069 29070 29071 29060 29061 29062 29063 29064 29065 48 29210 29211 29212 29213 29214 29215 29768 29769 29770 29771 29772 29773 29054 29055 29056 29057 29058 29059 29060 29061 29062 29063 29064 29065 29066 29067 29068 29069 29070 29071 31382 31383 31384 31385 31386 31387 29222 29223 29224 29225 29226 29227 29216 29217 29218 29219 29220 29221 48 20858 20859 20860 20861 20862 20863 29762 29763 29764 29765 29766 29767 29054 29055 29056 29057 29058 29059 32402 32403 32404 32405 32406 32407 865 866 867 868 869 870 32408 32409 32410 32411 32412 32413 853 854 855 856 857 858 20870 20871 20872 20873 20874 20875 48 29366 29367 29368 29369 29370 29371 29774 29775 29776 29777 29778 29779 29210 29211 29212 29213 29214 29215 29216 29217 29218 29219 29220 29221 29222 29223 29224 29225 29226 29227 31394 31395 31396 31397 31398 31399 29378 29379 29380 29381 29382 29383 29372 29373 29374 29375 29376 29377 48 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29366 29367 29368 29369 29370 29371 29372 29373 29374 29375 29376 29377 29378 29379 29380 29381 29382 29383 31412 31413 31414 31415 31416 31417 31406 31407 31408 31409 31410 31411 32414 32415 32416 32417 32418 32419 48 22136 22137 22138 22139 22140 22141 22142 22143 22144 22145 22146 22147 21554 21555 21556 21557 21558 21559 32420 32421 32422 32423 32424 32425 30896 30897 30898 30899 30900 30901 30902 30903 30904 30905 30906 30907 22598 22599 22600 22601 22602 22603 22604 22605 22606 22607 22608 22609 48 21578 21579 21580 21581 21582 21583 22154 22155 22156 22157 22158 22159 22136 22137 22138 22139 22140 22141 22604 22605 22606 22607 22608 22609 22598 22599 22600 22601 22602 22603 30932 30933 30934 30935 30936 30937 22760 22761 22762 22763 22764 22765 22766 22767 22768 22769 22770 22771 48 21602 21603 21604 21605 21606 21607 22160 22161 22162 22163 22164 22165 21578 21579 21580 21581 21582 21583 22766 22767 22768 22769 22770 22771 22760 22761 22762 22763 22764 22765 30944 30945 30946 30947 30948 30949 22940 22941 22942 22943 22944 22945 22946 22947 22948 22949 22950 22951 48 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 21572 21573 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 22160 22161 22162 22163 22164 22165 21602 21603 21604 21605 21606 21607 21596 21597 21598 21599 21600 21601 48 22166 22167 22168 22169 22170 22171 22172 22173 22174 22175 22176 22177 21602 21603 21604 21605 21606 21607 22946 22947 22948 22949 22950 22951 22940 22941 22942 22943 22944 22945 30956 30957 30958 30959 30960 30961 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 48 21626 21627 21628 21629 21630 21631 22184 22185 22186 22187 22188 22189 22166 22167 22168 22169 22170 22171 23126 23127 23128 23129 23130 23131 23120 23121 23122 23123 23124 23125 30968 30969 30970 30971 30972 30973 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 48 21650 21651 21652 21653 21654 21655 22190 22191 22192 22193 22194 22195 21626 21627 21628 21629 21630 21631 23288 23289 23290 23291 23292 23293 23282 23283 23284 23285 23286 23287 30980 30981 30982 30983 30984 30985 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 48 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 21620 21621 21622 21623 21624 21625 21626 21627 21628 21629 21630 21631 22190 22191 22192 22193 22194 22195 21650 21651 21652 21653 21654 21655 21644 21645 21646 21647 21648 21649 48 22196 22197 22198 22199 22200 22201 22202 22203 22204 22205 22206 22207 21650 21651 21652 21653 21654 21655 23462 23463 23464 23465 23466 23467 23456 23457 23458 23459 23460 23461 30992 30993 30994 30995 30996 30997 23636 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 48 21674 21675 21676 21677 21678 21679 22214 22215 22216 22217 22218 22219 22196 22197 22198 22199 22200 22201 23642 23643 23644 23645 23646 23647 23636 23637 23638 23639 23640 23641 31004 31005 31006 31007 31008 31009 23798 23799 23800 23801 23802 23803 23804 23805 23806 23807 23808 23809 48 21698 21699 21700 21701 21702 21703 22220 22221 22222 22223 22224 22225 21674 21675 21676 21677 21678 21679 23804 23805 23806 23807 23808 23809 23798 23799 23800 23801 23802 23803 31016 31017 31018 31019 31020 31021 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 48 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 21668 21669 21670 21671 21672 21673 21674 21675 21676 21677 21678 21679 22220 22221 22222 22223 22224 22225 21698 21699 21700 21701 21702 21703 21692 21693 21694 21695 21696 21697 48 22226 22227 22228 22229 22230 22231 22232 22233 22234 22235 22236 22237 21698 21699 21700 21701 21702 21703 23978 23979 23980 23981 23982 23983 23972 23973 23974 23975 23976 23977 31028 31029 31030 31031 31032 31033 24146 24147 24148 24149 24150 24151 24152 24153 24154 24155 24156 24157 48 21722 21723 21724 21725 21726 21727 22244 22245 22246 22247 22248 22249 22226 22227 22228 22229 22230 22231 24152 24153 24154 24155 24156 24157 24146 24147 24148 24149 24150 24151 31040 31041 31042 31043 31044 31045 24308 24309 24310 24311 24312 24313 24314 24315 24316 24317 24318 24319 48 21746 21747 21748 21749 21750 21751 22250 22251 22252 22253 22254 22255 21722 21723 21724 21725 21726 21727 24314 24315 24316 24317 24318 24319 24308 24309 24310 24311 24312 24313 31052 31053 31054 31055 31056 31057 24482 24483 24484 24485 24486 24487 24488 24489 24490 24491 24492 24493 48 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 21716 21717 21718 21719 21720 21721 21722 21723 21724 21725 21726 21727 22250 22251 22252 22253 22254 22255 21746 21747 21748 21749 21750 21751 21740 21741 21742 21743 21744 21745 48 22256 22257 22258 22259 22260 22261 22262 22263 22264 22265 22266 22267 21746 21747 21748 21749 21750 21751 24488 24489 24490 24491 24492 24493 24482 24483 24484 24485 24486 24487 31064 31065 31066 31067 31068 31069 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 48 21770 21771 21772 21773 21774 21775 22274 22275 22276 22277 22278 22279 22256 22257 22258 22259 22260 22261 24668 24669 24670 24671 24672 24673 24662 24663 24664 24665 24666 24667 31076 31077 31078 31079 31080 31081 24824 24825 24826 24827 24828 24829 24830 24831 24832 24833 24834 24835 48 21794 21795 21796 21797 21798 21799 22280 22281 22282 22283 22284 22285 21770 21771 21772 21773 21774 21775 24830 24831 24832 24833 24834 24835 24824 24825 24826 24827 24828 24829 31088 31089 31090 31091 31092 31093 24998 24999 25000 25001 25002 25003 25004 25005 25006 25007 25008 25009 48 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 21764 21765 21766 21767 21768 21769 21770 21771 21772 21773 21774 21775 22280 22281 22282 22283 22284 22285 21794 21795 21796 21797 21798 21799 21788 21789 21790 21791 21792 21793 48 22286 22287 22288 22289 22290 22291 22292 22293 22294 22295 22296 22297 21794 21795 21796 21797 21798 21799 25004 25005 25006 25007 25008 25009 24998 24999 25000 25001 25002 25003 31100 31101 31102 31103 31104 31105 25172 25173 25174 25175 25176 25177 25178 25179 25180 25181 25182 25183 48 21818 21819 21820 21821 21822 21823 22304 22305 22306 22307 22308 22309 22286 22287 22288 22289 22290 22291 25178 25179 25180 25181 25182 25183 25172 25173 25174 25175 25176 25177 31112 31113 31114 31115 31116 31117 25334 25335 25336 25337 25338 25339 25340 25341 25342 25343 25344 25345 48 21842 21843 21844 21845 21846 21847 22310 22311 22312 22313 22314 22315 21818 21819 21820 21821 21822 21823 25340 25341 25342 25343 25344 25345 25334 25335 25336 25337 25338 25339 31124 31125 31126 31127 31128 31129 25508 25509 25510 25511 25512 25513 25514 25515 25516 25517 25518 25519 48 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 21812 21813 21814 21815 21816 21817 21818 21819 21820 21821 21822 21823 22310 22311 22312 22313 22314 22315 21842 21843 21844 21845 21846 21847 21836 21837 21838 21839 21840 21841 48 22316 22317 22318 22319 22320 22321 22322 22323 22324 22325 22326 22327 21842 21843 21844 21845 21846 21847 25514 25515 25516 25517 25518 25519 25508 25509 25510 25511 25512 25513 31136 31137 31138 31139 31140 31141 25688 25689 25690 25691 25692 25693 25694 25695 25696 25697 25698 25699 48 21866 21867 21868 21869 21870 21871 22334 22335 22336 22337 22338 22339 22316 22317 22318 22319 22320 22321 25694 25695 25696 25697 25698 25699 25688 25689 25690 25691 25692 25693 31148 31149 31150 31151 31152 31153 25850 25851 25852 25853 25854 25855 25856 25857 25858 25859 25860 25861 48 21890 21891 21892 21893 21894 21895 22340 22341 22342 22343 22344 22345 21866 21867 21868 21869 21870 21871 25856 25857 25858 25859 25860 25861 25850 25851 25852 25853 25854 25855 31160 31161 31162 31163 31164 31165 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 48 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 21860 21861 21862 21863 21864 21865 21866 21867 21868 21869 21870 21871 22340 22341 22342 22343 22344 22345 21890 21891 21892 21893 21894 21895 21884 21885 21886 21887 21888 21889 48 22346 22347 22348 22349 22350 22351 22352 22353 22354 22355 22356 22357 21890 21891 21892 21893 21894 21895 26030 26031 26032 26033 26034 26035 26024 26025 26026 26027 26028 26029 31172 31173 31174 31175 31176 31177 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 48 21914 21915 21916 21917 21918 21919 22364 22365 22366 22367 22368 22369 22346 22347 22348 22349 22350 22351 26204 26205 26206 26207 26208 26209 26198 26199 26200 26201 26202 26203 31184 31185 31186 31187 31188 31189 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 48 21938 21939 21940 21941 21942 21943 22370 22371 22372 22373 22374 22375 21914 21915 21916 21917 21918 21919 26366 26367 26368 26369 26370 26371 26360 26361 26362 26363 26364 26365 31196 31197 31198 31199 31200 31201 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 48 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 22370 22371 22372 22373 22374 22375 21938 21939 21940 21941 21942 21943 21932 21933 21934 21935 21936 21937 48 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 22386 22387 21938 21939 21940 21941 21942 21943 26540 26541 26542 26543 26544 26545 26534 26535 26536 26537 26538 26539 31208 31209 31210 31211 31212 31213 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 48 21962 21963 21964 21965 21966 21967 22394 22395 22396 22397 22398 22399 22376 22377 22378 22379 22380 22381 26720 26721 26722 26723 26724 26725 26714 26715 26716 26717 26718 26719 31220 31221 31222 31223 31224 31225 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 48 21986 21987 21988 21989 21990 21991 22400 22401 22402 22403 22404 22405 21962 21963 21964 21965 21966 21967 26882 26883 26884 26885 26886 26887 26876 26877 26878 26879 26880 26881 31232 31233 31234 31235 31236 31237 27050 27051 27052 27053 27054 27055 27056 27057 27058 27059 27060 27061 48 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 21956 21957 21958 21959 21960 21961 21962 21963 21964 21965 21966 21967 22400 22401 22402 22403 22404 22405 21986 21987 21988 21989 21990 21991 21980 21981 21982 21983 21984 21985 48 22406 22407 22408 22409 22410 22411 22412 22413 22414 22415 22416 22417 21986 21987 21988 21989 21990 21991 27056 27057 27058 27059 27060 27061 27050 27051 27052 27053 27054 27055 31244 31245 31246 31247 31248 31249 27224 27225 27226 27227 27228 27229 27230 27231 27232 27233 27234 27235 48 22010 22011 22012 22013 22014 22015 22424 22425 22426 22427 22428 22429 22406 22407 22408 22409 22410 22411 27230 27231 27232 27233 27234 27235 27224 27225 27226 27227 27228 27229 31256 31257 31258 31259 31260 31261 27386 27387 27388 27389 27390 27391 27392 27393 27394 27395 27396 27397 48 22034 22035 22036 22037 22038 22039 22430 22431 22432 22433 22434 22435 22010 22011 22012 22013 22014 22015 27392 27393 27394 27395 27396 27397 27386 27387 27388 27389 27390 27391 31268 31269 31270 31271 31272 31273 27566 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 48 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 22004 22005 22006 22007 22008 22009 22010 22011 22012 22013 22014 22015 22430 22431 22432 22433 22434 22435 22034 22035 22036 22037 22038 22039 22028 22029 22030 22031 22032 22033 48 22436 22437 22438 22439 22440 22441 22442 22443 22444 22445 22446 22447 22034 22035 22036 22037 22038 22039 27572 27573 27574 27575 27576 27577 27566 27567 27568 27569 27570 27571 31280 31281 31282 31283 31284 31285 27746 27747 27748 27749 27750 27751 27752 27753 27754 27755 27756 27757 48 22058 22059 22060 22061 22062 22063 22454 22455 22456 22457 22458 22459 22436 22437 22438 22439 22440 22441 27752 27753 27754 27755 27756 27757 27746 27747 27748 27749 27750 27751 31292 31293 31294 31295 31296 31297 27908 27909 27910 27911 27912 27913 27914 27915 27916 27917 27918 27919 48 22082 22083 22084 22085 22086 22087 22460 22461 22462 22463 22464 22465 22058 22059 22060 22061 22062 22063 27914 27915 27916 27917 27918 27919 27908 27909 27910 27911 27912 27913 31304 31305 31306 31307 31308 31309 28082 28083 28084 28085 28086 28087 28088 28089 28090 28091 28092 28093 48 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 22052 22053 22054 22055 22056 22057 22058 22059 22060 22061 22062 22063 22460 22461 22462 22463 22464 22465 22082 22083 22084 22085 22086 22087 22076 22077 22078 22079 22080 22081 48 22466 22467 22468 22469 22470 22471 22472 22473 22474 22475 22476 22477 22082 22083 22084 22085 22086 22087 28088 28089 28090 28091 28092 28093 28082 28083 28084 28085 28086 28087 31316 31317 31318 31319 31320 31321 28256 28257 28258 28259 28260 28261 28262 28263 28264 28265 28266 28267 48 20666 20667 20668 20669 20670 20671 22484 22485 22486 22487 22488 22489 22466 22467 22468 22469 22470 22471 28262 28263 28264 28265 28266 28267 28256 28257 28258 28259 28260 28261 31328 31329 31330 31331 31332 31333 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 48 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 20664 20665 20666 20667 20668 20669 20670 20671 28418 28419 28420 28421 28422 28423 28412 28413 28414 28415 28416 28417 31340 31341 31342 31343 31344 31345 21158 21159 21160 21161 21162 21163 21374 21375 21376 21377 21378 21379 48 22118 22119 22120 22121 22122 22123 22112 22113 22114 22115 22116 22117 6056 6057 6058 6059 6060 6061 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 32426 32427 32428 32429 32430 32431 883 884 885 886 887 888 32432 32433 32434 32435 32436 32437 48 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 20706 20707 20654 20655 20656 20657 20658 20659 21374 21375 21376 21377 21378 21379 21158 21159 21160 21161 21162 21163 21170 21171 21172 21173 21174 21175 21134 21135 21136 21137 21138 21139 21440 21441 21442 21443 21444 21445 36 22118 22119 22120 22121 22122 22123 883 884 885 886 887 888 22532 22533 22534 22535 22536 22537 32432 32433 32434 32435 32436 32437 32438 32439 32440 32441 32442 32443 22550 22551 22552 22553 22554 22555 48 20720 20721 20722 20723 20724 20725 20726 20727 20728 20729 20730 20731 20696 20697 20698 20699 20700 20701 21440 21441 21442 21443 21444 21445 21134 21135 21136 21137 21138 21139 21188 21189 21190 21191 21192 21193 21176 21177 21178 21179 21180 21181 21542 21543 21544 21545 21546 21547 48 20744 20745 20746 20747 20748 20749 20750 20751 20752 20753 20754 20755 20720 20721 20722 20723 20724 20725 21542 21543 21544 21545 21546 21547 21176 21177 21178 21179 21180 21181 31364 31365 31366 31367 31368 31369 28934 28935 28936 28937 28938 28939 28940 28941 28942 28943 28944 28945 48 22514 22515 22516 22517 22518 22519 22538 22539 22540 22541 22542 22543 22532 22533 22534 22535 22536 22537 32438 32439 32440 32441 32442 32443 883 884 885 886 887 888 32444 32445 32446 32447 32448 32449 871 872 873 874 875 876 32450 32451 32452 32453 32454 32455 48 22514 22515 22516 22517 22518 22519 22520 22521 22522 22523 22524 22525 20744 20745 20746 20747 20748 20749 28940 28941 28942 28943 28944 28945 28934 28935 28936 28937 28938 28939 31376 31377 31378 31379 31380 31381 29078 29079 29080 29081 29082 29083 29084 29085 29086 29087 29088 29089 48 22532 22533 22534 22535 22536 22537 22538 22539 22540 22541 22542 22543 22514 22515 22516 22517 22518 22519 29084 29085 29086 29087 29088 29089 29078 29079 29080 29081 29082 29083 31388 31389 31390 31391 31392 31393 29234 29235 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 48 20744 20745 20746 20747 20748 20749 22520 22521 22522 22523 22524 22525 22514 22515 22516 22517 22518 22519 32450 32451 32452 32453 32454 32455 871 872 873 874 875 876 32456 32457 32458 32459 32460 32461 859 860 861 862 863 864 20756 20757 20758 20759 20760 20761 48 22118 22119 22120 22121 22122 22123 22550 22551 22552 22553 22554 22555 22532 22533 22534 22535 22536 22537 29240 29241 29242 29243 29244 29245 29234 29235 29236 29237 29238 29239 31400 31401 31402 31403 31404 31405 29390 29391 29392 29393 29394 29395 29396 29397 29398 29399 29400 29401 48 22556 22557 22558 22559 22560 22561 22562 22563 22564 22565 22566 22567 22118 22119 22120 22121 22122 22123 29396 29397 29398 29399 29400 29401 29390 29391 29392 29393 29394 29395 31424 31425 31426 31427 31428 31429 31418 31419 31420 31421 31422 31423 32462 32463 32464 32465 32466 32467 48 4256 4257 4258 4259 4260 4261 5804 5805 5806 5807 5808 5809 5246 5247 5248 5249 5250 5251 32468 32469 32470 32471 32472 32473 1519 1520 1521 1522 1523 1524 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 48 4244 4245 4246 4247 4248 4249 5798 5799 5800 5801 5802 5803 5234 5235 5236 5237 5238 5239 32492 32493 32494 32495 32496 32497 1531 1532 1533 1534 1535 1536 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 48 4142 4143 4144 4145 4146 4147 5792 5793 5794 5795 5796 5797 5216 5217 5218 5219 5220 5221 32516 32517 32518 32519 32520 32521 1555 1556 1557 1558 1559 1560 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 48 1741 1742 1743 1744 1745 1746 5786 5787 5788 5789 5790 5791 5204 5205 5206 5207 5208 5209 32540 32541 32542 32543 32544 32545 1567 1568 1569 1570 1571 1572 32552 32553 32554 32555 32556 32557 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 48 32480 32481 32482 32483 32484 32485 32474 32475 32476 32477 32478 32479 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1507 1508 1509 1510 1511 1512 22568 22569 22570 22571 22572 22573 22556 22557 22558 22559 22560 22561 32564 32565 32566 32567 32568 32569 48 32504 32505 32506 32507 32508 32509 32498 32499 32500 32501 32502 32503 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1519 1520 1521 1522 1523 1524 32474 32475 32476 32477 32478 32479 32480 32481 32482 32483 32484 32485 32570 32571 32572 32573 32574 32575 48 32582 32583 32584 32585 32586 32587 32576 32577 32578 32579 32580 32581 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1531 1532 1533 1534 1535 1536 32498 32499 32500 32501 32502 32503 32504 32505 32506 32507 32508 32509 32588 32589 32590 32591 32592 32593 48 32528 32529 32530 32531 32532 32533 32522 32523 32524 32525 32526 32527 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1543 1544 1545 1546 1547 1548 32576 32577 32578 32579 32580 32581 32582 32583 32584 32585 32586 32587 32594 32595 32596 32597 32598 32599 48 32546 32547 32548 32549 32550 32551 32552 32553 32554 32555 32556 32557 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1555 1556 1557 1558 1559 1560 32522 32523 32524 32525 32526 32527 32528 32529 32530 32531 32532 32533 32600 32601 32602 32603 32604 32605 48 29780 29781 29782 29783 29784 29785 32414 32415 32416 32417 32418 32419 31406 31407 31408 31409 31410 31411 31430 31431 31432 31433 31434 31435 31418 31419 31420 31421 31422 31423 32462 32463 32464 32465 32466 32467 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 48 30038 30039 30040 30041 30042 30043 32366 32367 32368 32369 32370 32371 31700 31701 31702 31703 31704 31705 31712 31713 31714 31715 31716 31717 31406 31407 31408 31409 31410 31411 32414 32415 32416 32417 32418 32419 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 36 31700 31701 31702 31703 31704 31705 30038 30039 30040 30041 30042 30043 30296 30297 30298 30299 30300 30301 32366 32367 32368 32369 32370 32371 30308 30309 30310 30311 30312 30313 31982 31983 31984 31985 31986 31987 48 5180 5181 5182 5183 5184 5185 32276 32277 32278 32279 32280 32281 30860 30861 30862 30863 30864 30865 30872 30873 30874 30875 30876 30877 30578 30579 30580 30581 30582 30583 32252 32253 32254 32255 32256 32257 5048 5049 5050 5051 5052 5053 5618 5619 5620 5621 5622 5623 48 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 32630 32631 32632 32633 32634 32635 32624 32625 32626 32627 32628 32629 32636 32637 32638 32639 32640 32641 32480 32481 32482 32483 32484 32485 32642 32643 32644 32645 32646 32647 48 4520 4521 4522 4523 4524 4525 32648 32649 32650 32651 32652 32653 32606 32607 32608 32609 32610 32611 32642 32643 32644 32645 32646 32647 32480 32481 32482 32483 32484 32485 32486 32487 32488 32489 32490 32491 4256 4257 4258 4259 4260 4261 5708 5709 5710 5711 5712 5713 48 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32618 32619 32620 32621 32622 32623 32612 32613 32614 32615 32616 32617 32606 32607 32608 32609 32610 32611 32678 32679 32680 32681 32682 32683 48 5666 5667 5668 5669 5670 5671 32684 32685 32686 32687 32688 32689 32654 32655 32656 32657 32658 32659 32678 32679 32680 32681 32682 32683 32606 32607 32608 32609 32610 32611 32648 32649 32650 32651 32652 32653 4520 4521 4522 4523 4524 4525 5690 5691 5692 5693 5694 5695 36 32666 32667 32668 32669 32670 32671 32654 32655 32656 32657 32658 32659 32696 32697 32698 32699 32700 32701 32660 32661 32662 32663 32664 32665 32702 32703 32704 32705 32706 32707 32690 32691 32692 32693 32694 32695 48 4898 4899 4900 4901 4902 4903 32708 32709 32710 32711 32712 32713 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32654 32655 32656 32657 32658 32659 32684 32685 32686 32687 32688 32689 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 48 5018 5019 5020 5021 5022 5023 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32696 32697 32698 32699 32700 32701 32708 32709 32710 32711 32712 32713 4898 4899 4900 4901 4902 4903 5636 5637 5638 5639 5640 5641 48 5150 5151 5152 5153 5154 5155 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32720 32721 32722 32723 32724 32725 32714 32715 32716 32717 32718 32719 5018 5019 5020 5021 5022 5023 5612 5613 5614 5615 5616 5617 48 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 32774 32775 32776 32777 32778 32779 32768 32769 32770 32771 32772 32773 32780 32781 32782 32783 32784 32785 32504 32505 32506 32507 32508 32509 32786 32787 32788 32789 32790 32791 48 4508 4509 4510 4511 4512 4513 32792 32793 32794 32795 32796 32797 32750 32751 32752 32753 32754 32755 32786 32787 32788 32789 32790 32791 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 4244 4245 4246 4247 4248 4249 5702 5703 5704 5705 5706 5707 48 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32762 32763 32764 32765 32766 32767 32756 32757 32758 32759 32760 32761 32750 32751 32752 32753 32754 32755 32822 32823 32824 32825 32826 32827 36 32810 32811 32812 32813 32814 32815 32798 32799 32800 32801 32802 32803 32834 32835 32836 32837 32838 32839 32804 32805 32806 32807 32808 32809 32840 32841 32842 32843 32844 32845 32828 32829 32830 32831 32832 32833 48 4988 4989 4990 4991 4992 4993 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32834 32835 32836 32837 32838 32839 32864 32865 32866 32867 32868 32869 4886 4887 4888 4889 4890 4891 5630 5631 5632 5633 5634 5635 48 5120 5121 5122 5123 5124 5125 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32852 32853 32854 32855 32856 32857 32846 32847 32848 32849 32850 32851 4988 4989 4990 4991 4992 4993 5606 5607 5608 5609 5610 5611 48 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 32912 32913 32914 32915 32916 32917 32906 32907 32908 32909 32910 32911 32918 32919 32920 32921 32922 32923 32582 32583 32584 32585 32586 32587 32924 32925 32926 32927 32928 32929 48 32930 32931 32932 32933 32934 32935 32936 32937 32938 32939 32940 32941 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32900 32901 32902 32903 32904 32905 32894 32895 32896 32897 32898 32899 32888 32889 32890 32891 32892 32893 32954 32955 32956 32957 32958 32959 36 32942 32943 32944 32945 32946 32947 32930 32931 32932 32933 32934 32935 32966 32967 32968 32969 32970 32971 32936 32937 32938 32939 32940 32941 32972 32973 32974 32975 32976 32977 32960 32961 32962 32963 32964 32965 48 5078 5079 5080 5081 5082 5083 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 32996 32997 32998 32999 33000 33001 32990 32991 32992 32993 32994 32995 33002 33003 33004 33005 33006 33007 4946 4947 4948 4949 4950 4951 5600 5601 5602 5603 5604 5605 48 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33032 33033 33034 33035 33036 33037 33026 33027 33028 33029 33030 33031 33038 33039 33040 33041 33042 33043 32528 32529 32530 32531 32532 32533 33044 33045 33046 33047 33048 33049 48 4406 4407 4408 4409 4410 4411 33050 33051 33052 33053 33054 33055 33008 33009 33010 33011 33012 33013 33044 33045 33046 33047 33048 33049 32528 32529 32530 32531 32532 32533 32534 32535 32536 32537 32538 32539 4142 4143 4144 4145 4146 4147 5738 5739 5740 5741 5742 5743 36 33020 33021 33022 33023 33024 33025 33008 33009 33010 33011 33012 33013 33062 33063 33064 33065 33066 33067 33014 33015 33016 33017 33018 33019 33068 33069 33070 33071 33072 33073 33056 33057 33058 33059 33060 33061 48 4670 4671 4672 4673 4674 4675 33074 33075 33076 33077 33078 33079 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33008 33009 33010 33011 33012 33013 33050 33051 33052 33053 33054 33055 4406 4407 4408 4409 4410 4411 5732 5733 5734 5735 5736 5737 36 33062 33063 33064 33065 33066 33067 4670 4671 4672 4673 4674 4675 33086 33087 33088 33089 33090 33091 33074 33075 33076 33077 33078 33079 33092 33093 33094 33095 33096 33097 33080 33081 33082 33083 33084 33085 36 33086 33087 33088 33089 33090 33091 4670 4671 4672 4673 4674 4675 4838 4839 4840 4841 4842 4843 33092 33093 33094 33095 33096 33097 5726 5727 5728 5729 5730 5731 33098 33099 33100 33101 33102 33103 48 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33128 33129 33130 33131 33132 33133 33122 33123 33124 33125 33126 33127 33134 33135 33136 33137 33138 33139 32546 32547 32548 32549 32550 32551 33140 33141 33142 33143 33144 33145 48 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33140 33141 33142 33143 33144 33145 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 1741 1742 1743 1744 1745 1746 5696 5697 5698 5699 5700 5701 36 33116 33117 33118 33119 33120 33121 33158 33159 33160 33161 33162 33163 33104 33105 33106 33107 33108 33109 33152 33153 33154 33155 33156 33157 33164 33165 33166 33167 33168 33169 33110 33111 33112 33113 33114 33115 36 33158 33159 33160 33161 33162 33163 33170 33171 33172 33173 33174 33175 33104 33105 33106 33107 33108 33109 33176 33177 33178 33179 33180 33181 33182 33183 33184 33185 33186 33187 33164 33165 33166 33167 33168 33169 48 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33182 33183 33184 33185 33186 33187 33170 33171 33172 33173 33174 33175 33188 33189 33190 33191 33192 33193 1717 1718 1719 1720 1721 1722 5678 5679 5680 5681 5682 5683 36 33170 33171 33172 33173 33174 33175 1717 1718 1719 1720 1721 1722 1705 1706 1707 1708 1709 1710 33188 33189 33190 33191 33192 33193 5642 5643 5644 5645 5646 5647 33194 33195 33196 33197 33198 33199 48 32606 32607 32608 32609 32610 32611 32642 32643 32644 32645 32646 32647 32480 32481 32482 32483 32484 32485 32564 32565 32566 32567 32568 32569 22556 22557 22558 22559 22560 22561 29792 29793 29794 29795 29796 29797 29780 29781 29782 29783 29784 29785 33200 33201 33202 33203 33204 33205 48 32750 32751 32752 32753 32754 32755 32786 32787 32788 32789 32790 32791 32504 32505 32506 32507 32508 32509 32570 32571 32572 32573 32574 32575 32480 32481 32482 32483 32484 32485 32642 32643 32644 32645 32646 32647 32606 32607 32608 32609 32610 32611 33206 33207 33208 33209 33210 33211 48 32888 32889 32890 32891 32892 32893 32924 32925 32926 32927 32928 32929 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32504 32505 32506 32507 32508 32509 32786 32787 32788 32789 32790 32791 32750 32751 32752 32753 32754 32755 33212 33213 33214 33215 33216 33217 48 33008 33009 33010 33011 33012 33013 33044 33045 33046 33047 33048 33049 32528 32529 32530 32531 32532 32533 32594 32595 32596 32597 32598 32599 32582 32583 32584 32585 32586 32587 32924 32925 32926 32927 32928 32929 32888 32889 32890 32891 32892 32893 33218 33219 33220 33221 33222 33223 48 33104 33105 33106 33107 33108 33109 33140 33141 33142 33143 33144 33145 32546 32547 32548 32549 32550 32551 32600 32601 32602 32603 32604 32605 32528 32529 32530 32531 32532 32533 33044 33045 33046 33047 33048 33049 33008 33009 33010 33011 33012 33013 33224 33225 33226 33227 33228 33229 48 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 32546 32547 32548 32549 32550 32551 33140 33141 33142 33143 33144 33145 33104 33105 33106 33107 33108 33109 33254 33255 33256 33257 33258 33259 48 32654 32655 32656 32657 32658 32659 32678 32679 32680 32681 32682 32683 32606 32607 32608 32609 32610 32611 33200 33201 33202 33203 33204 33205 29780 29781 29782 29783 29784 29785 30050 30051 30052 30053 30054 30055 30038 30039 30040 30041 30042 30043 33260 33261 33262 33263 33264 33265 48 32798 32799 32800 32801 32802 32803 32822 32823 32824 32825 32826 32827 32750 32751 32752 32753 32754 32755 33206 33207 33208 33209 33210 33211 32606 32607 32608 32609 32610 32611 32678 32679 32680 32681 32682 32683 32654 32655 32656 32657 32658 32659 33266 33267 33268 33269 33270 33271 48 32930 32931 32932 32933 32934 32935 32954 32955 32956 32957 32958 32959 32888 32889 32890 32891 32892 32893 33212 33213 33214 33215 33216 33217 32750 32751 32752 32753 32754 32755 32822 32823 32824 32825 32826 32827 32798 32799 32800 32801 32802 32803 33272 33273 33274 33275 33276 33277 48 33062 33063 33064 33065 33066 33067 33068 33069 33070 33071 33072 33073 33008 33009 33010 33011 33012 33013 33218 33219 33220 33221 33222 33223 32888 32889 32890 32891 32892 32893 32954 32955 32956 32957 32958 32959 32930 32931 32932 32933 32934 32935 33278 33279 33280 33281 33282 33283 48 33158 33159 33160 33161 33162 33163 33164 33165 33166 33167 33168 33169 33104 33105 33106 33107 33108 33109 33224 33225 33226 33227 33228 33229 33008 33009 33010 33011 33012 33013 33068 33069 33070 33071 33072 33073 33062 33063 33064 33065 33066 33067 33284 33285 33286 33287 33288 33289 48 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33230 33231 33232 33233 33234 33235 33254 33255 33256 33257 33258 33259 33104 33105 33106 33107 33108 33109 33164 33165 33166 33167 33168 33169 33158 33159 33160 33161 33162 33163 33302 33303 33304 33305 33306 33307 48 32696 32697 32698 32699 32700 32701 32702 32703 32704 32705 32706 32707 32654 32655 32656 32657 32658 32659 33260 33261 33262 33263 33264 33265 30038 30039 30040 30041 30042 30043 30308 30309 30310 30311 30312 30313 30296 30297 30298 30299 30300 30301 33308 33309 33310 33311 33312 33313 48 32834 32835 32836 32837 32838 32839 32840 32841 32842 32843 32844 32845 32798 32799 32800 32801 32802 32803 33266 33267 33268 33269 33270 33271 32654 32655 32656 32657 32658 32659 32702 32703 32704 32705 32706 32707 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 48 32966 32967 32968 32969 32970 32971 32972 32973 32974 32975 32976 32977 32930 32931 32932 32933 32934 32935 33272 33273 33274 33275 33276 33277 32798 32799 32800 32801 32802 32803 32840 32841 32842 32843 32844 32845 32834 32835 32836 32837 32838 32839 33320 33321 33322 33323 33324 33325 48 33086 33087 33088 33089 33090 33091 33080 33081 33082 33083 33084 33085 33062 33063 33064 33065 33066 33067 33278 33279 33280 33281 33282 33283 32930 32931 32932 32933 32934 32935 32972 32973 32974 32975 32976 32977 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 48 4934 4935 4936 4937 4938 4939 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33086 33087 33088 33089 33090 33091 33098 33099 33100 33101 33102 33103 4838 4839 4840 4841 4842 4843 5498 5499 5500 5501 5502 5503 48 1657 1658 1659 1660 1661 1662 5492 5493 5494 5495 5496 5497 4934 4935 4936 4937 4938 4939 33332 33333 33334 33335 33336 33337 33338 33339 33340 33341 33342 33343 33356 33357 33358 33359 33360 33361 33350 33351 33352 33353 33354 33355 33362 33363 33364 33365 33366 33367 47 33230 33231 33232 33233 33234 33235 33368 33369 33370 33371 33372 33373 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 33242 33243 33244 33245 33246 33247 33236 33237 33238 33239 33240 33241 48 1681 1682 1683 1684 1685 1686 33397 33398 33399 33400 33401 33402 33230 33231 33232 33233 33234 33235 33236 33237 33238 33239 33240 33241 33242 33243 33244 33245 33246 33247 33403 33404 33405 33406 33407 33408 1693 1694 1695 1696 1697 1698 5486 5487 5488 5489 5490 5491 36 33374 33375 33376 33377 33378 33379 33230 33231 33232 33233 33234 33235 33290 33291 33292 33293 33294 33295 33368 33369 33370 33371 33372 33373 33296 33297 33298 33299 33300 33301 33409 33410 33411 33412 33413 33414 48 1669 1670 1671 1672 1673 1674 33415 33416 33417 33418 33419 33420 33290 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33230 33231 33232 33233 33234 33235 33397 33398 33399 33400 33401 33402 1681 1682 1683 1684 1685 1686 5474 5475 5476 5477 5478 5479 48 32618 32619 32620 32621 32622 32623 32630 32631 32632 32633 32634 32635 32624 32625 32626 32627 32628 32629 33421 33422 33423 33424 33425 33426 31418 31419 31420 31421 31422 31423 31430 31431 31432 31433 31434 31435 31406 31407 31408 31409 31410 31411 33427 33428 33429 33430 33431 33432 48 32762 32763 32764 32765 32766 32767 32774 32775 32776 32777 32778 32779 32768 32769 32770 32771 32772 32773 33433 33434 33435 33436 33437 33438 32624 32625 32626 32627 32628 32629 32630 32631 32632 32633 32634 32635 32618 32619 32620 32621 32622 32623 33439 33440 33441 33442 33443 33444 48 32900 32901 32902 32903 32904 32905 32912 32913 32914 32915 32916 32917 32906 32907 32908 32909 32910 32911 33445 33446 33447 33448 33449 33450 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32762 32763 32764 32765 32766 32767 33451 33452 33453 33454 33455 33456 48 33020 33021 33022 33023 33024 33025 33032 33033 33034 33035 33036 33037 33026 33027 33028 33029 33030 33031 33457 33458 33459 33460 33461 33462 32906 32907 32908 32909 32910 32911 32912 32913 32914 32915 32916 32917 32900 32901 32902 32903 32904 32905 33463 33464 33465 33466 33467 33468 48 33116 33117 33118 33119 33120 33121 33128 33129 33130 33131 33132 33133 33122 33123 33124 33125 33126 33127 33469 33470 33471 33472 33473 33474 33026 33027 33028 33029 33030 33031 33032 33033 33034 33035 33036 33037 33020 33021 33022 33023 33024 33025 33475 33476 33477 33478 33479 33480 47 33374 33375 33376 33377 33378 33379 33380 33381 33382 33383 33384 33385 33386 33387 33388 33389 33390 33481 33482 33483 33484 33485 33486 33122 33123 33124 33125 33126 33127 33128 33129 33130 33131 33132 33133 33116 33117 33118 33119 33120 33121 33487 33488 33489 33490 33491 33492 48 32666 32667 32668 32669 32670 32671 32672 32673 32674 32675 32676 32677 32618 32619 32620 32621 32622 32623 33427 33428 33429 33430 33431 33432 31406 31407 31408 31409 31410 31411 31712 31713 31714 31715 31716 31717 31700 31701 31702 31703 31704 31705 33493 33494 33495 33496 33497 33498 48 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32762 32763 32764 32765 32766 32767 33439 33440 33441 33442 33443 33444 32618 32619 32620 32621 32622 32623 32672 32673 32674 32675 32676 32677 32666 32667 32668 32669 32670 32671 33499 33500 33501 33502 33503 33504 48 32942 32943 32944 32945 32946 32947 32948 32949 32950 32951 32952 32953 32900 32901 32902 32903 32904 32905 33451 33452 33453 33454 33455 33456 32762 32763 32764 32765 32766 32767 32816 32817 32818 32819 32820 32821 32810 32811 32812 32813 32814 32815 33505 33506 33507 33508 33509 33510 48 33062 33063 33064 33065 33066 33067 33056 33057 33058 33059 33060 33061 33020 33021 33022 33023 33024 33025 33463 33464 33465 33466 33467 33468 32900 32901 32902 32903 32904 32905 32948 32949 32950 32951 32952 32953 32942 32943 32944 32945 32946 32947 33511 33512 33513 33514 33515 33516 48 33158 33159 33160 33161 33162 33163 33152 33153 33154 33155 33156 33157 33116 33117 33118 33119 33120 33121 33475 33476 33477 33478 33479 33480 33020 33021 33022 33023 33024 33025 33056 33057 33058 33059 33060 33061 33062 33063 33064 33065 33066 33067 33284 33285 33286 33287 33288 33289 48 33290 33291 33292 33293 33294 33295 33409 33410 33411 33412 33413 33414 33374 33375 33376 33377 33378 33379 33487 33488 33489 33490 33491 33492 33116 33117 33118 33119 33120 33121 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 33162 33163 33302 33303 33304 33305 33306 33307 48 32696 32697 32698 32699 32700 32701 32690 32691 32692 32693 32694 32695 32666 32667 32668 32669 32670 32671 33493 33494 33495 33496 33497 33498 31700 31701 31702 31703 31704 31705 31982 31983 31984 31985 31986 31987 30296 30297 30298 30299 30300 30301 33308 33309 33310 33311 33312 33313 48 32834 32835 32836 32837 32838 32839 32828 32829 32830 32831 32832 32833 32810 32811 32812 32813 32814 32815 33499 33500 33501 33502 33503 33504 32666 32667 32668 32669 32670 32671 32690 32691 32692 32693 32694 32695 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 48 32966 32967 32968 32969 32970 32971 32960 32961 32962 32963 32964 32965 32942 32943 32944 32945 32946 32947 33505 33506 33507 33508 33509 33510 32810 32811 32812 32813 32814 32815 32828 32829 32830 32831 32832 32833 32834 32835 32836 32837 32838 32839 33320 33321 33322 33323 33324 33325 48 33086 33087 33088 33089 33090 33091 33080 33081 33082 33083 33084 33085 33062 33063 33064 33065 33066 33067 33511 33512 33513 33514 33515 33516 32942 32943 32944 32945 32946 32947 32960 32961 32962 32963 32964 32965 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 48 1705 1706 1707 1708 1709 1710 33194 33195 33196 33197 33198 33199 33170 33171 33172 33173 33174 33175 33517 33518 33519 33520 33521 33522 33062 33063 33064 33065 33066 33067 33080 33081 33082 33083 33084 33085 33086 33087 33088 33089 33090 33091 33523 33524 33525 33526 33527 33528 36 1705 1706 1707 1708 1709 1710 33170 33171 33172 33173 33174 33175 1669 1670 1671 1672 1673 1674 33194 33195 33196 33197 33198 33199 33529 33530 33531 33532 33533 33534 5342 5343 5344 5345 5346 5347 48 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32696 32697 32698 32699 32700 32701 33308 33309 33310 33311 33312 33313 30296 30297 30298 30299 30300 30301 30590 30591 30592 30593 30594 30595 30578 30579 30580 30581 30582 30583 33535 33536 33537 33538 33539 33540 48 32852 32853 32854 32855 32856 32857 32858 32859 32860 32861 32862 32863 32834 32835 32836 32837 32838 32839 33314 33315 33316 33317 33318 33319 32696 32697 32698 32699 32700 32701 32726 32727 32728 32729 32730 32731 32720 32721 32722 32723 32724 32725 33541 33542 33543 33544 33545 33546 48 32990 32991 32992 32993 32994 32995 33547 33548 33549 33550 33551 33552 32966 32967 32968 32969 32970 32971 33320 33321 33322 33323 33324 33325 32834 32835 32836 32837 32838 32839 32858 32859 32860 32861 32862 32863 32852 32853 32854 32855 32856 32857 33553 33554 33555 33556 33557 33558 48 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33086 33087 33088 33089 33090 33091 33326 33327 33328 33329 33330 33331 32966 32967 32968 32969 32970 32971 33547 33548 33549 33550 33551 33552 32990 32991 32992 32993 32994 32995 33559 33560 33561 33562 33563 33564 48 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32720 32721 32722 32723 32724 32725 33535 33536 33537 33538 33539 33540 30578 30579 30580 30581 30582 30583 30872 30873 30874 30875 30876 30877 30860 30861 30862 30863 30864 30865 33565 33566 33567 33568 33569 33570 48 32876 32877 32878 32879 32880 32881 32882 32883 32884 32885 32886 32887 32852 32853 32854 32855 32856 32857 33541 33542 33543 33544 33545 33546 32720 32721 32722 32723 32724 32725 32744 32745 32746 32747 32748 32749 32738 32739 32740 32741 32742 32743 33571 33572 33573 33574 33575 33576 48 32984 32985 32986 32987 32988 32989 32996 32997 32998 32999 33000 33001 32990 32991 32992 32993 32994 32995 33553 33554 33555 33556 33557 33558 32852 32853 32854 32855 32856 32857 32882 32883 32884 32885 32886 32887 32876 32877 32878 32879 32880 32881 33577 33578 33579 33580 33581 33582 48 33350 33351 33352 33353 33354 33355 33356 33357 33358 33359 33360 33361 33338 33339 33340 33341 33342 33343 33559 33560 33561 33562 33563 33564 32990 32991 32992 32993 32994 32995 32996 32997 32998 32999 33000 33001 32984 32985 32986 32987 32988 32989 33583 33584 33585 33586 33587 33588 48 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 32468 32469 32470 32471 32472 32473 1519 1520 1521 1522 1523 1524 1537 1538 1539 1540 1541 1542 1531 1532 1533 1534 1535 1536 32492 32493 32494 32495 32496 32497 48 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 32516 32517 32518 32519 32520 32521 1555 1556 1557 1558 1559 1560 1573 1574 1575 1576 1577 1578 1567 1568 1569 1570 1571 1572 32540 32541 32542 32543 32544 32545 48 5150 5151 5152 5153 5154 5155 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 32276 32277 32278 32279 32280 32281 30860 30861 30862 30863 30864 30865 33565 33566 33567 33568 33569 33570 32738 32739 32740 32741 32742 32743 32732 32733 32734 32735 32736 32737 48 5120 5121 5122 5123 5124 5125 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 33571 33572 33573 33574 33575 33576 32876 32877 32878 32879 32880 32881 32870 32871 32872 32873 32874 32875 48 5078 5079 5080 5081 5082 5083 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 32870 32871 32872 32873 32874 32875 32876 32877 32878 32879 32880 32881 33577 33578 33579 33580 33581 33582 32984 32985 32986 32987 32988 32989 32978 32979 32980 32981 32982 32983 48 1657 1658 1659 1660 1661 1662 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 32978 32979 32980 32981 32982 32983 32984 32985 32986 32987 32988 32989 33583 33584 33585 33586 33587 33588 33350 33351 33352 33353 33354 33355 33362 33363 33364 33365 33366 33367 48 5018 5019 5020 5021 5022 5023 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 32252 32253 32254 32255 32256 32257 30578 30579 30580 30581 30582 30583 33535 33536 33537 33538 33539 33540 32720 32721 32722 32723 32724 32725 32714 32715 32716 32717 32718 32719 48 4988 4989 4990 4991 4992 4993 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 33541 33542 33543 33544 33545 33546 32852 32853 32854 32855 32856 32857 32846 32847 32848 32849 32850 32851 48 4946 4947 4948 4949 4950 4951 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 32846 32847 32848 32849 32850 32851 32852 32853 32854 32855 32856 32857 33553 33554 33555 33556 33557 33558 32990 32991 32992 32993 32994 32995 33002 33003 33004 33005 33006 33007 48 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 33002 33003 33004 33005 33006 33007 32990 32991 32992 32993 32994 32995 33559 33560 33561 33562 33563 33564 33338 33339 33340 33341 33342 33343 33332 33333 33334 33335 33336 33337 48 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 32708 32709 32710 32711 32712 32713 32696 32697 32698 32699 32700 32701 33314 33315 33316 33317 33318 33319 32834 32835 32836 32837 32838 32839 32864 32865 32866 32867 32868 32869 48 4838 4839 4840 4841 4842 4843 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 33589 33590 33591 33592 33593 33594 32966 32967 32968 32969 32970 32971 33326 33327 33328 33329 33330 33331 33086 33087 33088 33089 33090 33091 33098 33099 33100 33101 33102 33103 36 33086 33087 33088 33089 33090 33091 4838 4839 4840 4841 4842 4843 1705 1706 1707 1708 1709 1710 33098 33099 33100 33101 33102 33103 4850 4851 4852 4853 4854 4855 33523 33524 33525 33526 33527 33528 48 32654 32655 32656 32657 32658 32659 33260 33261 33262 33263 33264 33265 30038 30039 30040 30041 30042 30043 32366 32367 32368 32369 32370 32371 31700 31701 31702 31703 31704 31705 33493 33494 33495 33496 33497 33498 32666 32667 32668 32669 32670 32671 32660 32661 32662 32663 32664 32665 48 32798 32799 32800 32801 32802 32803 33266 33267 33268 33269 33270 33271 32654 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 32666 32667 32668 32669 32670 32671 33499 33500 33501 33502 33503 33504 32810 32811 32812 32813 32814 32815 32804 32805 32806 32807 32808 32809 48 32930 32931 32932 32933 32934 32935 33272 33273 33274 33275 33276 33277 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 33505 33506 33507 33508 33509 33510 32942 32943 32944 32945 32946 32947 32936 32937 32938 32939 32940 32941 36 33170 33171 33172 33173 33174 33175 1717 1718 1719 1720 1721 1722 1669 1670 1671 1672 1673 1674 33188 33189 33190 33191 33192 33193 4730 4731 4732 4733 4734 4735 33529 33530 33531 33532 33533 33534 48 4670 4671 4672 4673 4674 4675 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 33595 33596 33597 33598 33599 33600 32930 32931 32932 32933 32934 32935 33278 33279 33280 33281 33282 33283 33062 33063 33064 33065 33066 33067 33074 33075 33076 33077 33078 33079 48 1669 1670 1671 1672 1673 1674 33415 33416 33417 33418 33419 33420 33290 33291 33292 33293 33294 33295 33302 33303 33304 33305 33306 33307 33158 33159 33160 33161 33162 33163 33176 33177 33178 33179 33180 33181 33170 33171 33172 33173 33174 33175 33529 33530 33531 33532 33533 33534 48 1717 1718 1719 1720 1721 1722 33188 33189 33190 33191 33192 33193 33170 33171 33172 33173 33174 33175 33517 33518 33519 33520 33521 33522 33062 33063 33064 33065 33066 33067 33074 33075 33076 33077 33078 33079 4670 4671 4672 4673 4674 4675 4682 4683 4684 4685 4686 4687 36 33158 33159 33160 33161 33162 33163 33062 33063 33064 33065 33066 33067 33170 33171 33172 33173 33174 33175 33284 33285 33286 33287 33288 33289 33517 33518 33519 33520 33521 33522 33176 33177 33178 33179 33180 33181 36 32942 32943 32944 32945 32946 32947 32930 32931 32932 32933 32934 32935 33062 33063 33064 33065 33066 33067 32936 32937 32938 32939 32940 32941 33278 33279 33280 33281 33282 33283 33511 33512 33513 33514 33515 33516 48 32606 32607 32608 32609 32610 32611 33200 33201 33202 33203 33204 33205 29780 29781 29782 29783 29784 29785 32414 32415 32416 32417 32418 32419 31406 31407 31408 31409 31410 31411 33427 33428 33429 33430 33431 33432 32618 32619 32620 32621 32622 32623 32612 32613 32614 32615 32616 32617 48 32750 32751 32752 32753 32754 32755 33206 33207 33208 33209 33210 33211 32606 32607 32608 32609 32610 32611 32612 32613 32614 32615 32616 32617 32618 32619 32620 32621 32622 32623 33439 33440 33441 33442 33443 33444 32762 32763 32764 32765 32766 32767 32756 32757 32758 32759 32760 32761 48 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 32648 32649 32650 32651 32652 32653 32606 32607 32608 32609 32610 32611 33206 33207 33208 33209 33210 33211 32750 32751 32752 32753 32754 32755 32792 32793 32794 32795 32796 32797 48 32888 32889 32890 32891 32892 32893 33212 33213 33214 33215 33216 33217 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 33451 33452 33453 33454 33455 33456 32900 32901 32902 32903 32904 32905 32894 32895 32896 32897 32898 32899 48 33008 33009 33010 33011 33012 33013 33218 33219 33220 33221 33222 33223 32888 32889 32890 32891 32892 32893 32894 32895 32896 32897 32898 32899 32900 32901 32902 32903 32904 32905 33463 33464 33465 33466 33467 33468 33020 33021 33022 33023 33024 33025 33014 33015 33016 33017 33018 33019 48 33104 33105 33106 33107 33108 33109 33224 33225 33226 33227 33228 33229 33008 33009 33010 33011 33012 33013 33014 33015 33016 33017 33018 33019 33020 33021 33022 33023 33024 33025 33475 33476 33477 33478 33479 33480 33116 33117 33118 33119 33120 33121 33110 33111 33112 33113 33114 33115 48 1729 1730 1731 1732 1733 1734 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 33050 33051 33052 33053 33054 33055 33008 33009 33010 33011 33012 33013 33224 33225 33226 33227 33228 33229 33104 33105 33106 33107 33108 33109 33146 33147 33148 33149 33150 33151 48 33230 33231 33232 33233 33234 33235 33254 33255 33256 33257 33258 33259 33104 33105 33106 33107 33108 33109 33110 33111 33112 33113 33114 33115 33116 33117 33118 33119 33120 33121 33487 33488 33489 33490 33491 33492 33374 33375 33376 33377 33378 33379 33368 33369 33370 33371 33372 33373 48 1681 1682 1683 1684 1685 1686 4334 4335 4336 4337 4338 4339 1729 1730 1731 1732 1733 1734 33146 33147 33148 33149 33150 33151 33104 33105 33106 33107 33108 33109 33254 33255 33256 33257 33258 33259 33230 33231 33232 33233 33234 33235 33397 33398 33399 33400 33401 33402 48 32480 32481 32482 32483 32484 32485 32564 32565 32566 32567 32568 32569 22556 22557 22558 22559 22560 22561 32462 32463 32464 32465 32466 32467 31418 31419 31420 31421 31422 31423 33421 33422 33423 33424 33425 33426 32624 32625 32626 32627 32628 32629 32636 32637 32638 32639 32640 32641 48 32504 32505 32506 32507 32508 32509 32570 32571 32572 32573 32574 32575 32480 32481 32482 32483 32484 32485 32636 32637 32638 32639 32640 32641 32624 32625 32626 32627 32628 32629 33433 33434 33435 33436 33437 33438 32768 32769 32770 32771 32772 32773 32780 32781 32782 32783 32784 32785 48 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 32486 32487 32488 32489 32490 32491 32480 32481 32482 32483 32484 32485 32570 32571 32572 32573 32574 32575 32504 32505 32506 32507 32508 32509 32510 32511 32512 32513 32514 32515 48 32582 32583 32584 32585 32586 32587 32588 32589 32590 32591 32592 32593 32504 32505 32506 32507 32508 32509 32780 32781 32782 32783 32784 32785 32768 32769 32770 32771 32772 32773 33445 33446 33447 33448 33449 33450 32906 32907 32908 32909 32910 32911 32918 32919 32920 32921 32922 32923 48 32528 32529 32530 32531 32532 32533 32594 32595 32596 32597 32598 32599 32582 32583 32584 32585 32586 32587 32918 32919 32920 32921 32922 32923 32906 32907 32908 32909 32910 32911 33457 33458 33459 33460 33461 33462 33026 33027 33028 33029 33030 33031 33038 33039 33040 33041 33042 33043 48 32546 32547 32548 32549 32550 32551 32600 32601 32602 32603 32604 32605 32528 32529 32530 32531 32532 32533 33038 33039 33040 33041 33042 33043 33026 33027 33028 33029 33030 33031 33469 33470 33471 33472 33473 33474 33122 33123 33124 33125 33126 33127 33134 33135 33136 33137 33138 33139 48 1741 1742 1743 1744 1745 1746 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 32534 32535 32536 32537 32538 32539 32528 32529 32530 32531 32532 32533 32600 32601 32602 32603 32604 32605 32546 32547 32548 32549 32550 32551 32558 32559 32560 32561 32562 32563 47 33242 33243 33244 33245 33246 33247 33248 33249 33250 33251 33252 33253 32546 32547 32548 32549 32550 32551 33134 33135 33136 33137 33138 33139 33122 33123 33124 33125 33126 33127 33481 33482 33483 33484 33485 33486 33386 33387 33388 33389 33390 33391 33392 33393 33394 33395 33396 48 1693 1694 1695 1696 1697 1698 4073 4074 4075 4076 4077 4078 1741 1742 1743 1744 1745 1746 32558 32559 32560 32561 32562 32563 32546 32547 32548 32549 32550 32551 33248 33249 33250 33251 33252 33253 33242 33243 33244 33245 33246 33247 33403 33404 33405 33406 33407 33408 48 1927 1928 1929 1930 1931 1932 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 1591 1592 1593 1594 1595 1596 33619 33620 33621 33622 33623 33624 3341 3342 3343 3344 3345 3346 4067 4068 4069 4070 4071 4072 48 1879 1880 1881 1882 1883 1884 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 1579 1580 1581 1582 1583 1584 33643 33644 33645 33646 33647 33648 3263 3264 3265 3266 3267 3268 4061 4062 4063 4064 4065 4066 48 1831 1832 1833 1834 1835 1836 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 1597 1598 1599 1600 1601 1602 33667 33668 33669 33670 33671 33672 3251 3252 3253 3254 3255 3256 4055 4056 4057 4058 4059 4060 48 1759 1760 1761 1762 1763 1764 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 1621 1622 1623 1624 1625 1626 33691 33692 33693 33694 33695 33696 3281 3282 3283 3284 3285 3286 4049 4050 4051 4052 4053 4054 48 1747 1748 1749 1750 1751 1752 33697 33698 33699 33700 33701 33702 33703 33704 33705 33706 33707 33708 33709 33710 33711 33712 33713 33714 1609 1610 1611 1612 1613 1614 33715 33716 33717 33718 33719 33720 3299 3300 3301 3302 3303 3304 4043 4044 4045 4046 4047 4048 48 33631 33632 33633 33634 33635 33636 33721 33722 33723 33724 33725 33726 33607 33608 33609 33610 33611 33612 33613 33614 33615 33616 33617 33618 1591 1592 1593 1594 1595 1596 1585 1586 1587 1588 1589 1590 1579 1580 1581 1582 1583 1584 33637 33638 33639 33640 33641 33642 48 33655 33656 33657 33658 33659 33660 33727 33728 33729 33730 33731 33732 33631 33632 33633 33634 33635 33636 33637 33638 33639 33640 33641 33642 1579 1580 1581 1582 1583 1584 1603 1604 1605 1606 1607 1608 1597 1598 1599 1600 1601 1602 33661 33662 33663 33664 33665 33666 48 33679 33680 33681 33682 33683 33684 33733 33734 33735 33736 33737 33738 33655 33656 33657 33658 33659 33660 33661 33662 33663 33664 33665 33666 1597 1598 1599 1600 1601 1602 1627 1628 1629 1630 1631 1632 1621 1622 1623 1624 1625 1626 33685 33686 33687 33688 33689 33690 48 33703 33704 33705 33706 33707 33708 33739 33740 33741 33742 33743 33744 33679 33680 33681 33682 33683 33684 33685 33686 33687 33688 33689 33690 1621 1622 1623 1624 1625 1626 1615 1616 1617 1618 1619 1620 1609 1610 1611 1612 1613 1614 33709 33710 33711 33712 33713 33714 36 33757 33758 33759 33760 33761 33762 33763 33764 33765 33766 33767 33768 33745 33746 33747 33748 33749 33750 33769 33770 33771 33772 33773 33774 33775 33776 33777 33778 33779 33780 33751 33752 33753 33754 33755 33756 48 2323 2324 2325 2326 2327 2328 33781 33782 33783 33784 33785 33786 33745 33746 33747 33748 33749 33750 33775 33776 33777 33778 33779 33780 33763 33764 33765 33766 33767 33768 33787 33788 33789 33790 33791 33792 1975 1976 1977 1978 1979 1980 4007 4008 4009 4010 4011 4012 48 2609 2610 2611 2612 2613 2614 33799 33800 33801 33802 33803 33804 33793 33794 33795 33796 33797 33798 33805 33806 33807 33808 33809 33810 33745 33746 33747 33748 33749 33750 33781 33782 33783 33784 33785 33786 2323 2324 2325 2326 2327 2328 3947 3948 3949 3950 3951 3952 36 33793 33794 33795 33796 33797 33798 2609 2610 2611 2612 2613 2614 2849 2850 2851 2852 2853 2854 33799 33800 33801 33802 33803 33804 3911 3912 3913 3914 3915 3916 33811 33812 33813 33814 33815 33816 36 33823 33824 33825 33826 33827 33828 2849 2850 2851 2852 2853 2854 2975 2976 2977 2978 2979 2980 33829 33830 33831 33832 33833 33834 3875 3876 3877 3878 3879 3880 33817 33818 33819 33820 33821 33822 48 3161 3162 3163 3164 3165 3166 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33823 33824 33825 33826 33827 33828 33817 33818 33819 33820 33821 33822 2975 2976 2977 2978 2979 2980 3839 3840 3841 3842 3843 3844 36 33841 33842 33843 33844 33845 33846 3161 3162 3163 3164 3165 3166 3413 3414 3415 3416 3417 3418 33835 33836 33837 33838 33839 33840 3803 3804 3805 3806 3807 3808 33853 33854 33855 33856 33857 33858 48 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 33607 33608 33609 33610 33611 33612 33895 33896 33897 33898 33899 33900 48 2233 2234 2235 2236 2237 2238 33901 33902 33903 33904 33905 33906 33859 33860 33861 33862 33863 33864 33895 33896 33897 33898 33899 33900 33607 33608 33609 33610 33611 33612 33601 33602 33603 33604 33605 33606 1927 1928 1929 1930 1931 1932 3995 3996 3997 3998 3999 4000 48 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 33865 33866 33867 33868 33869 33870 33859 33860 33861 33862 33863 33864 33931 33932 33933 33934 33935 33936 48 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 33931 33932 33933 33934 33935 33936 33859 33860 33861 33862 33863 33864 33901 33902 33903 33904 33905 33906 2233 2234 2235 2236 2237 2238 3941 3942 3943 3944 3945 3946 48 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33919 33920 33921 33922 33923 33924 33913 33914 33915 33916 33917 33918 33907 33908 33909 33910 33911 33912 33955 33956 33957 33958 33959 33960 2825 2826 2827 2828 2829 2830 33961 33962 33963 33964 33965 33966 36 33907 33908 33909 33910 33911 33912 2507 2508 2509 2510 2511 2512 2825 2826 2827 2828 2829 2830 33937 33938 33939 33940 33941 33942 3905 3906 3907 3908 3909 3910 33955 33956 33957 33958 33959 33960 36 33943 33944 33945 33946 33947 33948 2825 2826 2827 2828 2829 2830 33967 33968 33969 33970 33971 33972 33961 33962 33963 33964 33965 33966 33979 33980 33981 33982 33983 33984 33973 33974 33975 33976 33977 33978 36 33967 33968 33969 33970 33971 33972 2825 2826 2827 2828 2829 2830 2945 2946 2947 2948 2949 2950 33979 33980 33981 33982 33983 33984 3869 3870 3871 3872 3873 3874 33985 33986 33987 33988 33989 33990 48 3131 3132 3133 3134 3135 3136 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 33967 33968 33969 33970 33971 33972 33985 33986 33987 33988 33989 33990 2945 2946 2947 2948 2949 2950 3833 3834 3835 3836 3837 3838 36 33997 33998 33999 34000 34001 34002 3131 3132 3133 3134 3135 3136 3395 3396 3397 3398 3399 3400 33991 33992 33993 33994 33995 33996 3797 3798 3799 3800 3801 3802 34009 34010 34011 34012 34013 34014 48 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 33631 33632 33633 33634 33635 33636 34051 34052 34053 34054 34055 34056 48 2185 2186 2187 2188 2189 2190 34057 34058 34059 34060 34061 34062 34015 34016 34017 34018 34019 34020 34051 34052 34053 34054 34055 34056 33631 33632 33633 33634 33635 33636 33625 33626 33627 33628 33629 33630 1879 1880 1881 1882 1883 1884 3965 3966 3967 3968 3969 3970 48 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34027 34028 34029 34030 34031 34032 34021 34022 34023 34024 34025 34026 34015 34016 34017 34018 34019 34020 34087 34088 34089 34090 34091 34092 48 2459 2460 2461 2462 2463 2464 34093 34094 34095 34096 34097 34098 34063 34064 34065 34066 34067 34068 34087 34088 34089 34090 34091 34092 34015 34016 34017 34018 34019 34020 34057 34058 34059 34060 34061 34062 2185 2186 2187 2188 2189 2190 3935 3936 3937 3938 3939 3940 48 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34075 34076 34077 34078 34079 34080 34069 34070 34071 34072 34073 34074 34063 34064 34065 34066 34067 34068 34123 34124 34125 34126 34127 34128 48 2735 2736 2737 2738 2739 2740 34129 34130 34131 34132 34133 34134 34099 34100 34101 34102 34103 34104 34123 34124 34125 34126 34127 34128 34063 34064 34065 34066 34067 34068 34093 34094 34095 34096 34097 34098 2459 2460 2461 2462 2463 2464 3899 3900 3901 3902 3903 3904 36 34111 34112 34113 34114 34115 34116 34099 34100 34101 34102 34103 34104 34135 34136 34137 34138 34139 34140 34105 34106 34107 34108 34109 34110 34147 34148 34149 34150 34151 34152 34141 34142 34143 34144 34145 34146 48 2915 2916 2917 2918 2919 2920 34153 34154 34155 34156 34157 34158 34135 34136 34137 34138 34139 34140 34147 34148 34149 34150 34151 34152 34099 34100 34101 34102 34103 34104 34129 34130 34131 34132 34133 34134 2735 2736 2737 2738 2739 2740 3863 3864 3865 3866 3867 3868 48 3101 3102 3103 3104 3105 3106 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34135 34136 34137 34138 34139 34140 34153 34154 34155 34156 34157 34158 2915 2916 2917 2918 2919 2920 3827 3828 3829 3830 3831 3832 36 34165 34166 34167 34168 34169 34170 3101 3102 3103 3104 3105 3106 3377 3378 3379 3380 3381 3382 34159 34160 34161 34162 34163 34164 3791 3792 3793 3794 3795 3796 34177 34178 34179 34180 34181 34182 48 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 33655 33656 33657 33658 33659 33660 34219 34220 34221 34222 34223 34224 48 2137 2138 2139 2140 2141 2142 34225 34226 34227 34228 34229 34230 34183 34184 34185 34186 34187 34188 34219 34220 34221 34222 34223 34224 33655 33656 33657 33658 33659 33660 33649 33650 33651 33652 33653 33654 1831 1832 1833 1834 1835 1836 3971 3972 3973 3974 3975 3976 48 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34195 34196 34197 34198 34199 34200 34189 34190 34191 34192 34193 34194 34183 34184 34185 34186 34187 34188 34255 34256 34257 34258 34259 34260 48 2411 2412 2413 2414 2415 2416 34261 34262 34263 34264 34265 34266 34231 34232 34233 34234 34235 34236 34255 34256 34257 34258 34259 34260 34183 34184 34185 34186 34187 34188 34225 34226 34227 34228 34229 34230 2137 2138 2139 2140 2141 2142 3929 3930 3931 3932 3933 3934 48 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34243 34244 34245 34246 34247 34248 34237 34238 34239 34240 34241 34242 34231 34232 34233 34234 34235 34236 34291 34292 34293 34294 34295 34296 48 2687 2688 2689 2690 2691 2692 34297 34298 34299 34300 34301 34302 34267 34268 34269 34270 34271 34272 34291 34292 34293 34294 34295 34296 34231 34232 34233 34234 34235 34236 34261 34262 34263 34264 34265 34266 2411 2412 2413 2414 2415 2416 3893 3894 3895 3896 3897 3898 36 34279 34280 34281 34282 34283 34284 34267 34268 34269 34270 34271 34272 34303 34304 34305 34306 34307 34308 34273 34274 34275 34276 34277 34278 34315 34316 34317 34318 34319 34320 34309 34310 34311 34312 34313 34314 48 2885 2886 2887 2888 2889 2890 34321 34322 34323 34324 34325 34326 34303 34304 34305 34306 34307 34308 34315 34316 34317 34318 34319 34320 34267 34268 34269 34270 34271 34272 34297 34298 34299 34300 34301 34302 2687 2688 2689 2690 2691 2692 3857 3858 3859 3860 3861 3862 48 3071 3072 3073 3074 3075 3076 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34303 34304 34305 34306 34307 34308 34321 34322 34323 34324 34325 34326 2885 2886 2887 2888 2889 2890 3821 3822 3823 3824 3825 3826 36 34333 34334 34335 34336 34337 34338 3071 3072 3073 3074 3075 3076 3323 3324 3325 3326 3327 3328 34327 34328 34329 34330 34331 34332 3785 3786 3787 3788 3789 3790 34345 34346 34347 34348 34349 34350 48 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 33679 33680 33681 33682 33683 33684 34387 34388 34389 34390 34391 34392 48 2065 2066 2067 2068 2069 2070 34393 34394 34395 34396 34397 34398 34351 34352 34353 34354 34355 34356 34387 34388 34389 34390 34391 34392 33679 33680 33681 33682 33683 33684 33673 33674 33675 33676 33677 33678 1759 1760 1761 1762 1763 1764 3953 3954 3955 3956 3957 3958 48 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34363 34364 34365 34366 34367 34368 34357 34358 34359 34360 34361 34362 34351 34352 34353 34354 34355 34356 34423 34424 34425 34426 34427 34428 48 2287 2288 2289 2290 2291 2292 34429 34430 34431 34432 34433 34434 34399 34400 34401 34402 34403 34404 34423 34424 34425 34426 34427 34428 34351 34352 34353 34354 34355 34356 34393 34394 34395 34396 34397 34398 2065 2066 2067 2068 2069 2070 3917 3918 3919 3920 3921 3922 48 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34411 34412 34413 34414 34415 34416 34405 34406 34407 34408 34409 34410 34399 34400 34401 34402 34403 34404 34459 34460 34461 34462 34463 34464 48 2561 2562 2563 2564 2565 2566 34465 34466 34467 34468 34469 34470 34435 34436 34437 34438 34439 34440 34459 34460 34461 34462 34463 34464 34399 34400 34401 34402 34403 34404 34429 34430 34431 34432 34433 34434 2287 2288 2289 2290 2291 2292 3881 3882 3883 3884 3885 3886 36 34447 34448 34449 34450 34451 34452 34435 34436 34437 34438 34439 34440 34471 34472 34473 34474 34475 34476 34441 34442 34443 34444 34445 34446 34483 34484 34485 34486 34487 34488 34477 34478 34479 34480 34481 34482 48 2789 2790 2791 2792 2793 2794 34489 34490 34491 34492 34493 34494 34471 34472 34473 34474 34475 34476 34483 34484 34485 34486 34487 34488 34435 34436 34437 34438 34439 34440 34465 34466 34467 34468 34469 34470 2561 2562 2563 2564 2565 2566 3845 3846 3847 3848 3849 3850 48 3029 3030 3031 3032 3033 3034 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34471 34472 34473 34474 34475 34476 34489 34490 34491 34492 34493 34494 2789 2790 2791 2792 2793 2794 3809 3810 3811 3812 3813 3814 48 3215 3216 3217 3218 3219 3220 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34501 34502 34503 34504 34505 34506 34495 34496 34497 34498 34499 34500 3029 3030 3031 3032 3033 3034 3773 3774 3775 3776 3777 3778 48 21554 21555 21556 21557 21558 21559 32420 32421 32422 32423 32424 32425 30896 30897 30898 30899 30900 30901 30890 30891 30892 30893 30894 30895 30884 30885 30886 30887 30888 30889 34531 34532 34533 34534 34535 34536 33703 33704 33705 33706 33707 33708 34537 34538 34539 34540 34541 34542 48 2053 2054 2055 2056 2057 2058 21548 21549 21550 21551 21552 21553 21554 21555 21556 21557 21558 21559 34537 34538 34539 34540 34541 34542 33703 33704 33705 33706 33707 33708 33697 33698 33699 33700 33701 33702 1747 1748 1749 1750 1751 1752 3959 3960 3961 3962 3963 3964 48 29546 29547 29548 29549 29550 29551 32372 32373 32374 32375 32376 32377 30914 30915 30916 30917 30918 30919 30920 30921 30922 30923 30924 30925 30896 30897 30898 30899 30900 30901 32420 32421 32422 32423 32424 32425 21554 21555 21556 21557 21558 21559 29552 29553 29554 29555 29556 29557 48 2275 2276 2277 2278 2279 2280 34543 34544 34545 34546 34547 34548 29546 29547 29548 29549 29550 29551 29552 29553 29554 29555 29556 29557 21554 21555 21556 21557 21558 21559 21548 21549 21550 21551 21552 21553 2053 2054 2055 2056 2057 2058 3923 3924 3925 3926 3927 3928 48 29804 29805 29806 29807 29808 29809 32318 32319 32320 32321 32322 32323 31442 31443 31444 31445 31446 31447 31448 31449 31450 31451 31452 31453 30914 30915 30916 30917 30918 30919 32372 32373 32374 32375 32376 32377 29546 29547 29548 29549 29550 29551 29810 29811 29812 29813 29814 29815 48 2549 2550 2551 2552 2553 2554 34549 34550 34551 34552 34553 34554 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29546 29547 29548 29549 29550 29551 34543 34544 34545 34546 34547 34548 2275 2276 2277 2278 2279 2280 3887 3888 3889 3890 3891 3892 36 31442 31443 31444 31445 31446 31447 29804 29805 29806 29807 29808 29809 30062 30063 30064 30065 30066 30067 32318 32319 32320 32321 32322 32323 30068 30069 30070 30071 30072 30073 31724 31725 31726 31727 31728 31729 48 2777 2778 2779 2780 2781 2782 34555 34556 34557 34558 34559 34560 30062 30063 30064 30065 30066 30067 30068 30069 30070 30071 30072 30073 29804 29805 29806 29807 29808 29809 34549 34550 34551 34552 34553 34554 2549 2550 2551 2552 2553 2554 3851 3852 3853 3854 3855 3856 48 3017 3018 3019 3020 3021 3022 32246 32247 32248 32249 32250 32251 30320 30321 30322 30323 30324 30325 30326 30327 30328 30329 30330 30331 30062 30063 30064 30065 30066 30067 34555 34556 34557 34558 34559 34560 2777 2778 2779 2780 2781 2782 3815 3816 3817 3818 3819 3820 48 3203 3204 3205 3206 3207 3208 32270 32271 32272 32273 32274 32275 30602 30603 30604 30605 30606 30607 30608 30609 30610 30611 30612 30613 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 3017 3018 3019 3020 3021 3022 3779 3780 3781 3782 3783 3784 48 34015 34016 34017 34018 34019 34020 34561 34562 34563 34564 34565 34566 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 34567 34568 34569 34570 34571 34572 33631 33632 33633 33634 33635 33636 34051 34052 34053 34054 34055 34056 48 34183 34184 34185 34186 34187 34188 34573 34574 34575 34576 34577 34578 34015 34016 34017 34018 34019 34020 34051 34052 34053 34054 34055 34056 33631 33632 33633 33634 33635 33636 33727 33728 33729 33730 33731 33732 33655 33656 33657 33658 33659 33660 34219 34220 34221 34222 34223 34224 48 34351 34352 34353 34354 34355 34356 34579 34580 34581 34582 34583 34584 34183 34184 34185 34186 34187 34188 34219 34220 34221 34222 34223 34224 33655 33656 33657 33658 33659 33660 33733 33734 33735 33736 33737 33738 33679 33680 33681 33682 33683 33684 34387 34388 34389 34390 34391 34392 48 21554 21555 21556 21557 21558 21559 34585 34586 34587 34588 34589 34590 34351 34352 34353 34354 34355 34356 34387 34388 34389 34390 34391 34392 33679 33680 33681 33682 33683 33684 33739 33740 33741 33742 33743 33744 33703 33704 33705 33706 33707 33708 34537 34538 34539 34540 34541 34542 48 34063 34064 34065 34066 34067 34068 34591 34592 34593 34594 34595 34596 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 34561 34562 34563 34564 34565 34566 34015 34016 34017 34018 34019 34020 34087 34088 34089 34090 34091 34092 48 34231 34232 34233 34234 34235 34236 34597 34598 34599 34600 34601 34602 34063 34064 34065 34066 34067 34068 34087 34088 34089 34090 34091 34092 34015 34016 34017 34018 34019 34020 34573 34574 34575 34576 34577 34578 34183 34184 34185 34186 34187 34188 34255 34256 34257 34258 34259 34260 48 34399 34400 34401 34402 34403 34404 34603 34604 34605 34606 34607 34608 34231 34232 34233 34234 34235 34236 34255 34256 34257 34258 34259 34260 34183 34184 34185 34186 34187 34188 34579 34580 34581 34582 34583 34584 34351 34352 34353 34354 34355 34356 34423 34424 34425 34426 34427 34428 48 29546 29547 29548 29549 29550 29551 34609 34610 34611 34612 34613 34614 34399 34400 34401 34402 34403 34404 34423 34424 34425 34426 34427 34428 34351 34352 34353 34354 34355 34356 34585 34586 34587 34588 34589 34590 21554 21555 21556 21557 21558 21559 29552 29553 29554 29555 29556 29557 48 34099 34100 34101 34102 34103 34104 34615 34616 34617 34618 34619 34620 2825 2826 2827 2828 2829 2830 34621 34622 34623 34624 34625 34626 33919 33920 33921 33922 33923 33924 34591 34592 34593 34594 34595 34596 34063 34064 34065 34066 34067 34068 34123 34124 34125 34126 34127 34128 48 34267 34268 34269 34270 34271 34272 34627 34628 34629 34630 34631 34632 34099 34100 34101 34102 34103 34104 34123 34124 34125 34126 34127 34128 34063 34064 34065 34066 34067 34068 34597 34598 34599 34600 34601 34602 34231 34232 34233 34234 34235 34236 34291 34292 34293 34294 34295 34296 48 34435 34436 34437 34438 34439 34440 34633 34634 34635 34636 34637 34638 34267 34268 34269 34270 34271 34272 34291 34292 34293 34294 34295 34296 34231 34232 34233 34234 34235 34236 34603 34604 34605 34606 34607 34608 34399 34400 34401 34402 34403 34404 34459 34460 34461 34462 34463 34464 48 29804 29805 29806 29807 29808 29809 34639 34640 34641 34642 34643 34644 34435 34436 34437 34438 34439 34440 34459 34460 34461 34462 34463 34464 34399 34400 34401 34402 34403 34404 34609 34610 34611 34612 34613 34614 29546 29547 29548 29549 29550 29551 29810 29811 29812 29813 29814 29815 48 34135 34136 34137 34138 34139 34140 34645 34646 34647 34648 34649 34650 33967 33968 33969 33970 33971 33972 33979 33980 33981 33982 33983 33984 2825 2826 2827 2828 2829 2830 34615 34616 34617 34618 34619 34620 34099 34100 34101 34102 34103 34104 34147 34148 34149 34150 34151 34152 48 34303 34304 34305 34306 34307 34308 34651 34652 34653 34654 34655 34656 34135 34136 34137 34138 34139 34140 34147 34148 34149 34150 34151 34152 34099 34100 34101 34102 34103 34104 34627 34628 34629 34630 34631 34632 34267 34268 34269 34270 34271 34272 34315 34316 34317 34318 34319 34320 48 34471 34472 34473 34474 34475 34476 34657 34658 34659 34660 34661 34662 34303 34304 34305 34306 34307 34308 34315 34316 34317 34318 34319 34320 34267 34268 34269 34270 34271 34272 34633 34634 34635 34636 34637 34638 34435 34436 34437 34438 34439 34440 34483 34484 34485 34486 34487 34488 48 30062 30063 30064 30065 30066 30067 34663 34664 34665 34666 34667 34668 34471 34472 34473 34474 34475 34476 34483 34484 34485 34486 34487 34488 34435 34436 34437 34438 34439 34440 34639 34640 34641 34642 34643 34644 29804 29805 29806 29807 29808 29809 30068 30069 30070 30071 30072 30073 34 34675 34676 34677 34678 34679 34680 2023 2024 2025 2026 2027 2028 2347 2348 2349 2350 34681 34682 34683 34684 34685 34686 3641 3642 3643 3644 3645 3646 34669 34670 34671 34672 34673 34674 46 33745 33746 33747 33748 33749 33750 34687 34688 34689 34690 34691 34692 2347 2348 2349 2350 34669 34670 34671 34672 34673 34674 34675 34676 34677 34678 34679 34680 34693 34694 34695 34696 34697 34698 33757 33758 33759 33760 33761 33762 33751 33752 33753 33754 33755 33756 48 33871 33872 33873 33874 33875 33876 34699 34700 34701 34702 34703 34704 33745 33746 33747 33748 33749 33750 33751 33752 33753 33754 33755 33756 33757 33758 33759 33760 33761 33762 34705 34706 34707 34708 34709 34710 33883 33884 33885 33886 33887 33888 33877 33878 33879 33880 33881 33882 48 34027 34028 34029 34030 34031 34032 34711 34712 34713 34714 34715 34716 33871 33872 33873 33874 33875 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 33886 33887 33888 34717 34718 34719 34720 34721 34722 34039 34040 34041 34042 34043 34044 34033 34034 34035 34036 34037 34038 48 34195 34196 34197 34198 34199 34200 34723 34724 34725 34726 34727 34728 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34729 34730 34731 34732 34733 34734 34207 34208 34209 34210 34211 34212 34201 34202 34203 34204 34205 34206 48 34363 34364 34365 34366 34367 34368 34735 34736 34737 34738 34739 34740 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34741 34742 34743 34744 34745 34746 34375 34376 34377 34378 34379 34380 34369 34370 34371 34372 34373 34374 48 30896 30897 30898 30899 30900 30901 34747 34748 34749 34750 34751 34752 34363 34364 34365 34366 34367 34368 34369 34370 34371 34372 34373 34374 34375 34376 34377 34378 34379 34380 34753 34754 34755 34756 34757 34758 30884 30885 30886 30887 30888 30889 30890 30891 30892 30893 30894 30895 46 33793 33794 33795 33796 33797 33798 34759 34760 34761 34762 34763 34764 2621 2622 2623 2624 2625 2626 3593 3594 3595 3596 3597 3598 2347 2348 2349 2350 34687 34688 34689 34690 34691 34692 33745 33746 33747 33748 33749 33750 33805 33806 33807 33808 33809 33810 48 33919 33920 33921 33922 33923 33924 34765 34766 34767 34768 34769 34770 33793 33794 33795 33796 33797 33798 33805 33806 33807 33808 33809 33810 33745 33746 33747 33748 33749 33750 34699 34700 34701 34702 34703 34704 33871 33872 33873 33874 33875 33876 33925 33926 33927 33928 33929 33930 48 34075 34076 34077 34078 34079 34080 34771 34772 34773 34774 34775 34776 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33871 33872 33873 33874 33875 33876 34711 34712 34713 34714 34715 34716 34027 34028 34029 34030 34031 34032 34081 34082 34083 34084 34085 34086 48 34243 34244 34245 34246 34247 34248 34777 34778 34779 34780 34781 34782 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34027 34028 34029 34030 34031 34032 34723 34724 34725 34726 34727 34728 34195 34196 34197 34198 34199 34200 34249 34250 34251 34252 34253 34254 48 34411 34412 34413 34414 34415 34416 34783 34784 34785 34786 34787 34788 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34195 34196 34197 34198 34199 34200 34735 34736 34737 34738 34739 34740 34363 34364 34365 34366 34367 34368 34417 34418 34419 34420 34421 34422 48 30914 30915 30916 30917 30918 30919 34789 34790 34791 34792 34793 34794 34411 34412 34413 34414 34415 34416 34417 34418 34419 34420 34421 34422 34363 34364 34365 34366 34367 34368 34747 34748 34749 34750 34751 34752 30896 30897 30898 30899 30900 30901 30920 30921 30922 30923 30924 30925 36 2621 2622 2623 2624 2625 2626 33793 33794 33795 33796 33797 33798 2849 2850 2851 2852 2853 2854 34759 34760 34761 34762 34763 34764 33811 33812 33813 33814 33815 33816 3551 3552 3553 3554 3555 3556 48 33943 33944 33945 33946 33947 33948 34795 34796 34797 34798 34799 34800 2849 2850 2851 2852 2853 2854 33811 33812 33813 33814 33815 33816 33793 33794 33795 33796 33797 33798 34765 34766 34767 34768 34769 34770 33919 33920 33921 33922 33923 33924 33949 33950 33951 33952 33953 33954 48 34111 34112 34113 34114 34115 34116 34801 34802 34803 34804 34805 34806 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33919 33920 33921 33922 33923 33924 34771 34772 34773 34774 34775 34776 34075 34076 34077 34078 34079 34080 34117 34118 34119 34120 34121 34122 48 34279 34280 34281 34282 34283 34284 34807 34808 34809 34810 34811 34812 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34075 34076 34077 34078 34079 34080 34777 34778 34779 34780 34781 34782 34243 34244 34245 34246 34247 34248 34285 34286 34287 34288 34289 34290 48 34447 34448 34449 34450 34451 34452 34813 34814 34815 34816 34817 34818 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34243 34244 34245 34246 34247 34248 34783 34784 34785 34786 34787 34788 34411 34412 34413 34414 34415 34416 34453 34454 34455 34456 34457 34458 48 31442 31443 31444 31445 31446 31447 34819 34820 34821 34822 34823 34824 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34411 34412 34413 34414 34415 34416 34789 34790 34791 34792 34793 34794 30914 30915 30916 30917 30918 30919 31448 31449 31450 31451 31452 31453 36 3005 3006 3007 3008 3009 3010 2849 2850 2851 2852 2853 2854 33823 33824 33825 33826 33827 33828 3509 3510 3511 3512 3513 3514 33829 33830 33831 33832 33833 33834 34825 34826 34827 34828 34829 34830 48 33967 33968 33969 33970 33971 33972 34831 34832 34833 34834 34835 34836 33823 33824 33825 33826 33827 33828 33829 33830 33831 33832 33833 33834 2849 2850 2851 2852 2853 2854 34795 34796 34797 34798 34799 34800 33943 33944 33945 33946 33947 33948 33973 33974 33975 33976 33977 33978 48 34135 34136 34137 34138 34139 34140 34645 34646 34647 34648 34649 34650 33967 33968 33969 33970 33971 33972 33973 33974 33975 33976 33977 33978 33943 33944 33945 33946 33947 33948 34801 34802 34803 34804 34805 34806 34111 34112 34113 34114 34115 34116 34141 34142 34143 34144 34145 34146 48 34303 34304 34305 34306 34307 34308 34651 34652 34653 34654 34655 34656 34135 34136 34137 34138 34139 34140 34141 34142 34143 34144 34145 34146 34111 34112 34113 34114 34115 34116 34807 34808 34809 34810 34811 34812 34279 34280 34281 34282 34283 34284 34309 34310 34311 34312 34313 34314 48 34471 34472 34473 34474 34475 34476 34657 34658 34659 34660 34661 34662 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 34313 34314 34279 34280 34281 34282 34283 34284 34813 34814 34815 34816 34817 34818 34447 34448 34449 34450 34451 34452 34477 34478 34479 34480 34481 34482 48 30062 30063 30064 30065 30066 30067 34663 34664 34665 34666 34667 34668 34471 34472 34473 34474 34475 34476 34477 34478 34479 34480 34481 34482 34447 34448 34449 34450 34451 34452 34819 34820 34821 34822 34823 34824 31442 31443 31444 31445 31446 31447 31724 31725 31726 31727 31728 31729 48 33841 33842 33843 33844 33845 33846 34837 34838 34839 34840 34841 34842 3191 3192 3193 3194 3195 3196 3467 3468 3469 3470 3471 3472 3005 3006 3007 3008 3009 3010 34825 34826 34827 34828 34829 34830 33823 33824 33825 33826 33827 33828 33847 33848 33849 33850 33851 33852 48 33997 33998 33999 34000 34001 34002 34843 34844 34845 34846 34847 34848 33841 33842 33843 33844 33845 33846 33847 33848 33849 33850 33851 33852 33823 33824 33825 33826 33827 33828 34831 34832 34833 34834 34835 34836 33967 33968 33969 33970 33971 33972 34003 34004 34005 34006 34007 34008 48 34165 34166 34167 34168 34169 34170 34849 34850 34851 34852 34853 34854 33997 33998 33999 34000 34001 34002 34003 34004 34005 34006 34007 34008 33967 33968 33969 33970 33971 33972 34645 34646 34647 34648 34649 34650 34135 34136 34137 34138 34139 34140 34171 34172 34173 34174 34175 34176 48 34333 34334 34335 34336 34337 34338 34855 34856 34857 34858 34859 34860 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34135 34136 34137 34138 34139 34140 34651 34652 34653 34654 34655 34656 34303 34304 34305 34306 34307 34308 34339 34340 34341 34342 34343 34344 48 34501 34502 34503 34504 34505 34506 34861 34862 34863 34864 34865 34866 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34303 34304 34305 34306 34307 34308 34657 34658 34659 34660 34661 34662 34471 34472 34473 34474 34475 34476 34507 34508 34509 34510 34511 34512 48 30320 30321 30322 30323 30324 30325 34867 34868 34869 34870 34871 34872 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34471 34472 34473 34474 34475 34476 34663 34664 34665 34666 34667 34668 30062 30063 30064 30065 30066 30067 30326 30327 30328 30329 30330 30331 36 3191 3192 3193 3194 3195 3196 33841 33842 33843 33844 33845 33846 3413 3414 3415 3416 3417 3418 34837 34838 34839 34840 34841 34842 33853 33854 33855 33856 33857 33858 3425 3426 3427 3428 3429 3430 48 3395 3396 3397 3398 3399 3400 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 33853 33854 33855 33856 33857 33858 33841 33842 33843 33844 33845 33846 34843 34844 34845 34846 34847 34848 33997 33998 33999 34000 34001 34002 34009 34010 34011 34012 34013 34014 48 3377 3378 3379 3380 3381 3382 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 34009 34010 34011 34012 34013 34014 33997 33998 33999 34000 34001 34002 34849 34850 34851 34852 34853 34854 34165 34166 34167 34168 34169 34170 34177 34178 34179 34180 34181 34182 48 3323 3324 3325 3326 3327 3328 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 34177 34178 34179 34180 34181 34182 34165 34166 34167 34168 34169 34170 34855 34856 34857 34858 34859 34860 34333 34334 34335 34336 34337 34338 34345 34346 34347 34348 34349 34350 48 34519 34520 34521 34522 34523 34524 34873 34874 34875 34876 34877 34878 3323 3324 3325 3326 3327 3328 34345 34346 34347 34348 34349 34350 34333 34334 34335 34336 34337 34338 34861 34862 34863 34864 34865 34866 34501 34502 34503 34504 34505 34506 34525 34526 34527 34528 34529 34530 48 30602 30603 30604 30605 30606 30607 34879 34880 34881 34882 34883 34884 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34501 34502 34503 34504 34505 34506 34867 34868 34869 34870 34871 34872 30320 30321 30322 30323 30324 30325 30608 30609 30610 30611 30612 30613 48 3263 3264 3265 3266 3267 3268 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 33619 33620 33621 33622 33623 33624 1591 1592 1593 1594 1595 1596 1585 1586 1587 1588 1589 1590 1579 1580 1581 1582 1583 1584 33643 33644 33645 33646 33647 33648 36 34519 34520 34521 34522 34523 34524 3323 3324 3325 3326 3327 3328 3215 3216 3217 3218 3219 3220 34873 34874 34875 34876 34877 34878 3329 3330 3331 3332 3333 3334 34513 34514 34515 34516 34517 34518 48 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3281 3282 3283 3284 3285 3286 33691 33692 33693 33694 33695 33696 1621 1622 1623 1624 1625 1626 1615 1616 1617 1618 1619 1620 1609 1610 1611 1612 1613 1614 33715 33716 33717 33718 33719 33720 48 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3251 3252 3253 3254 3255 3256 33667 33668 33669 33670 33671 33672 1597 1598 1599 1600 1601 1602 1627 1628 1629 1630 1631 1632 1621 1622 1623 1624 1625 1626 33691 33692 33693 33694 33695 33696 48 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 33643 33644 33645 33646 33647 33648 1579 1580 1581 1582 1583 1584 1603 1604 1605 1606 1607 1608 1597 1598 1599 1600 1601 1602 33667 33668 33669 33670 33671 33672 48 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34879 34880 34881 34882 34883 34884 30602 30603 30604 30605 30606 30607 32270 32271 32272 32273 32274 32275 36 33841 33842 33843 33844 33845 33846 3191 3192 3193 3194 3195 3196 3161 3162 3163 3164 3165 3166 34837 34838 34839 34840 34841 34842 3197 3198 3199 3200 3201 3202 33835 33836 33837 33838 33839 33840 48 3131 3132 3133 3134 3135 3136 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 33835 33836 33837 33838 33839 33840 33841 33842 33843 33844 33845 33846 34843 34844 34845 34846 34847 34848 33997 33998 33999 34000 34001 34002 33991 33992 33993 33994 33995 33996 48 3101 3102 3103 3104 3105 3106 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 33991 33992 33993 33994 33995 33996 33997 33998 33999 34000 34001 34002 34849 34850 34851 34852 34853 34854 34165 34166 34167 34168 34169 34170 34159 34160 34161 34162 34163 34164 48 3071 3072 3073 3074 3075 3076 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34855 34856 34857 34858 34859 34860 34333 34334 34335 34336 34337 34338 34327 34328 34329 34330 34331 34332 48 3029 3030 3031 3032 3033 3034 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34861 34862 34863 34864 34865 34866 34501 34502 34503 34504 34505 34506 34495 34496 34497 34498 34499 34500 48 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34867 34868 34869 34870 34871 34872 30320 30321 30322 30323 30324 30325 32246 32247 32248 32249 32250 32251 36 33823 33824 33825 33826 33827 33828 3005 3006 3007 3008 3009 3010 2975 2976 2977 2978 2979 2980 34825 34826 34827 34828 34829 34830 3011 3012 3013 3014 3015 3016 33817 33818 33819 33820 33821 33822 48 2945 2946 2947 2948 2949 2950 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 33817 33818 33819 33820 33821 33822 33823 33824 33825 33826 33827 33828 34831 34832 34833 34834 34835 34836 33967 33968 33969 33970 33971 33972 33985 33986 33987 33988 33989 33990 48 2915 2916 2917 2918 2919 2920 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 33985 33986 33987 33988 33989 33990 33967 33968 33969 33970 33971 33972 34645 34646 34647 34648 34649 34650 34135 34136 34137 34138 34139 34140 34153 34154 34155 34156 34157 34158 48 2885 2886 2887 2888 2889 2890 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 34153 34154 34155 34156 34157 34158 34135 34136 34137 34138 34139 34140 34651 34652 34653 34654 34655 34656 34303 34304 34305 34306 34307 34308 34321 34322 34323 34324 34325 34326 48 2789 2790 2791 2792 2793 2794 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 34321 34322 34323 34324 34325 34326 34303 34304 34305 34306 34307 34308 34657 34658 34659 34660 34661 34662 34471 34472 34473 34474 34475 34476 34489 34490 34491 34492 34493 34494 36 34099 34100 34101 34102 34103 34104 2825 2826 2827 2828 2829 2830 2735 2736 2737 2738 2739 2740 34615 34616 34617 34618 34619 34620 2873 2874 2875 2876 2877 2878 34129 34130 34131 34132 34133 34134 48 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34801 34802 34803 34804 34805 34806 33943 33944 33945 33946 33947 33948 33961 33962 33963 33964 33965 33966 2825 2826 2827 2828 2829 2830 34615 34616 34617 34618 34619 34620 36 33943 33944 33945 33946 33947 33948 2849 2850 2851 2852 2853 2854 2825 2826 2827 2828 2829 2830 34795 34796 34797 34798 34799 34800 2855 2856 2857 2858 2859 2860 33961 33962 33963 33964 33965 33966 48 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 34489 34490 34491 34492 34493 34494 34471 34472 34473 34474 34475 34476 34663 34664 34665 34666 34667 34668 30062 30063 30064 30065 30066 30067 34555 34556 34557 34558 34559 34560 48 34267 34268 34269 34270 34271 34272 34627 34628 34629 34630 34631 34632 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34807 34808 34809 34810 34811 34812 34279 34280 34281 34282 34283 34284 34273 34274 34275 34276 34277 34278 48 2687 2688 2689 2690 2691 2692 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 34129 34130 34131 34132 34133 34134 34099 34100 34101 34102 34103 34104 34627 34628 34629 34630 34631 34632 34267 34268 34269 34270 34271 34272 34297 34298 34299 34300 34301 34302 48 34435 34436 34437 34438 34439 34440 34633 34634 34635 34636 34637 34638 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34813 34814 34815 34816 34817 34818 34447 34448 34449 34450 34451 34452 34441 34442 34443 34444 34445 34446 48 2561 2562 2563 2564 2565 2566 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 34297 34298 34299 34300 34301 34302 34267 34268 34269 34270 34271 34272 34633 34634 34635 34636 34637 34638 34435 34436 34437 34438 34439 34440 34465 34466 34467 34468 34469 34470 48 29804 29805 29806 29807 29808 29809 34639 34640 34641 34642 34643 34644 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34819 34820 34821 34822 34823 34824 31442 31443 31444 31445 31446 31447 32318 32319 32320 32321 32322 32323 48 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 34885 34886 34887 34888 34889 34890 33793 33794 33795 33796 33797 33798 33799 33800 33801 33802 33803 33804 2609 2610 2611 2612 2613 2614 2645 2646 2647 2648 2649 2650 36 33919 33920 33921 33922 33923 33924 33793 33794 33795 33796 33797 33798 33907 33908 33909 33910 33911 33912 34765 34766 34767 34768 34769 34770 34885 34886 34887 34888 34889 34890 33913 33914 33915 33916 33917 33918 36 33793 33794 33795 33796 33797 33798 2621 2622 2623 2624 2625 2626 2609 2610 2611 2612 2613 2614 34759 34760 34761 34762 34763 34764 2627 2628 2629 2630 2631 2632 33799 33800 33801 33802 33803 33804 48 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 34465 34466 34467 34468 34469 34470 34435 34436 34437 34438 34439 34440 34639 34640 34641 34642 34643 34644 29804 29805 29806 29807 29808 29809 34549 34550 34551 34552 34553 34554 48 34063 34064 34065 34066 34067 34068 34891 34892 34893 34894 34895 34896 33907 33908 33909 33910 33911 33912 33913 33914 33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 34771 34772 34773 34774 34775 34776 34075 34076 34077 34078 34079 34080 34069 34070 34071 34072 34073 34074 48 2459 2460 2461 2462 2463 2464 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 33937 33938 33939 33940 33941 33942 33907 33908 33909 33910 33911 33912 34891 34892 34893 34894 34895 34896 34063 34064 34065 34066 34067 34068 34093 34094 34095 34096 34097 34098 48 34231 34232 34233 34234 34235 34236 34597 34598 34599 34600 34601 34602 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34777 34778 34779 34780 34781 34782 34243 34244 34245 34246 34247 34248 34237 34238 34239 34240 34241 34242 48 2411 2412 2413 2414 2415 2416 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 34093 34094 34095 34096 34097 34098 34063 34064 34065 34066 34067 34068 34597 34598 34599 34600 34601 34602 34231 34232 34233 34234 34235 34236 34261 34262 34263 34264 34265 34266 48 34399 34400 34401 34402 34403 34404 34603 34604 34605 34606 34607 34608 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34783 34784 34785 34786 34787 34788 34411 34412 34413 34414 34415 34416 34405 34406 34407 34408 34409 34410 48 2287 2288 2289 2290 2291 2292 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 34261 34262 34263 34264 34265 34266 34231 34232 34233 34234 34235 34236 34603 34604 34605 34606 34607 34608 34399 34400 34401 34402 34403 34404 34429 34430 34431 34432 34433 34434 48 29546 29547 29548 29549 29550 29551 34609 34610 34611 34612 34613 34614 34399 34400 34401 34402 34403 34404 34405 34406 34407 34408 34409 34410 34411 34412 34413 34414 34415 34416 34789 34790 34791 34792 34793 34794 30914 30915 30916 30917 30918 30919 32372 32373 32374 32375 32376 32377 48 2233 2234 2235 2236 2237 2238 2369 2370 2371 2372 2373 2374 2323 2324 2325 2326 2327 2328 33781 33782 33783 33784 33785 33786 33745 33746 33747 33748 33749 33750 34897 34898 34899 34900 34901 34902 33859 33860 33861 33862 33863 33864 33901 33902 33903 33904 33905 33906 36 33871 33872 33873 33874 33875 33876 33745 33746 33747 33748 33749 33750 33859 33860 33861 33862 33863 33864 34699 34700 34701 34702 34703 34704 34897 34898 34899 34900 34901 34902 33865 33866 33867 33868 33869 33870 34 33745 33746 33747 33748 33749 33750 2347 2348 2349 2350 2323 2324 2325 2326 2327 2328 34687 34688 34689 34690 34691 34692 2351 2352 2353 2354 2355 2356 33781 33782 33783 33784 33785 33786 48 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 34429 34430 34431 34432 34433 34434 34399 34400 34401 34402 34403 34404 34609 34610 34611 34612 34613 34614 29546 29547 29548 29549 29550 29551 34543 34544 34545 34546 34547 34548 48 34015 34016 34017 34018 34019 34020 34903 34904 34905 34906 34907 34908 33859 33860 33861 33862 33863 33864 33865 33866 33867 33868 33869 33870 33871 33872 33873 33874 33875 33876 34711 34712 34713 34714 34715 34716 34027 34028 34029 34030 34031 34032 34021 34022 34023 34024 34025 34026 48 2185 2186 2187 2188 2189 2190 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 33901 33902 33903 33904 33905 33906 33859 33860 33861 33862 33863 33864 34903 34904 34905 34906 34907 34908 34015 34016 34017 34018 34019 34020 34057 34058 34059 34060 34061 34062 48 34183 34184 34185 34186 34187 34188 34573 34574 34575 34576 34577 34578 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34723 34724 34725 34726 34727 34728 34195 34196 34197 34198 34199 34200 34189 34190 34191 34192 34193 34194 48 2137 2138 2139 2140 2141 2142 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 34057 34058 34059 34060 34061 34062 34015 34016 34017 34018 34019 34020 34573 34574 34575 34576 34577 34578 34183 34184 34185 34186 34187 34188 34225 34226 34227 34228 34229 34230 48 34351 34352 34353 34354 34355 34356 34579 34580 34581 34582 34583 34584 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34735 34736 34737 34738 34739 34740 34363 34364 34365 34366 34367 34368 34357 34358 34359 34360 34361 34362 48 2065 2066 2067 2068 2069 2070 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 34225 34226 34227 34228 34229 34230 34183 34184 34185 34186 34187 34188 34579 34580 34581 34582 34583 34584 34351 34352 34353 34354 34355 34356 34393 34394 34395 34396 34397 34398 48 21554 21555 21556 21557 21558 21559 34585 34586 34587 34588 34589 34590 34351 34352 34353 34354 34355 34356 34357 34358 34359 34360 34361 34362 34363 34364 34365 34366 34367 34368 34747 34748 34749 34750 34751 34752 30896 30897 30898 30899 30900 30901 32420 32421 32422 32423 32424 32425 48 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 34393 34394 34395 34396 34397 34398 34351 34352 34353 34354 34355 34356 34585 34586 34587 34588 34589 34590 21554 21555 21556 21557 21558 21559 21548 21549 21550 21551 21552 21553 36 33757 33758 33759 33760 33761 33762 34675 34676 34677 34678 34679 34680 33763 33764 33765 33766 33767 33768 34693 34694 34695 34696 34697 34698 34909 34910 34911 34912 34913 34914 33769 33770 33771 33772 33773 33774 48 1975 1976 1977 1978 1979 1980 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 34681 34682 34683 34684 34685 34686 34675 34676 34677 34678 34679 34680 34909 34910 34911 34912 34913 34914 33763 33764 33765 33766 33767 33768 33787 33788 33789 33790 33791 33792 48 33607 33608 33609 33610 33611 33612 34915 34916 34917 34918 34919 34920 33763 33764 33765 33766 33767 33768 33769 33770 33771 33772 33773 33774 33757 33758 33759 33760 33761 33762 34705 34706 34707 34708 34709 34710 33883 33884 33885 33886 33887 33888 33889 33890 33891 33892 33893 33894 48 1927 1928 1929 1930 1931 1932 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 33787 33788 33789 33790 33791 33792 33763 33764 33765 33766 33767 33768 34915 34916 34917 34918 34919 34920 33607 33608 33609 33610 33611 33612 33601 33602 33603 33604 33605 33606 48 33631 33632 33633 33634 33635 33636 33721 33722 33723 33724 33725 33726 33607 33608 33609 33610 33611 33612 33889 33890 33891 33892 33893 33894 33883 33884 33885 33886 33887 33888 34717 34718 34719 34720 34721 34722 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 48 1879 1880 1881 1882 1883 1884 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 33601 33602 33603 33604 33605 33606 33607 33608 33609 33610 33611 33612 33721 33722 33723 33724 33725 33726 33631 33632 33633 33634 33635 33636 33625 33626 33627 33628 33629 33630 48 33655 33656 33657 33658 33659 33660 33727 33728 33729 33730 33731 33732 33631 33632 33633 33634 33635 33636 34045 34046 34047 34048 34049 34050 34039 34040 34041 34042 34043 34044 34729 34730 34731 34732 34733 34734 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 48 1831 1832 1833 1834 1835 1836 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636 33727 33728 33729 33730 33731 33732 33655 33656 33657 33658 33659 33660 33649 33650 33651 33652 33653 33654 48 33679 33680 33681 33682 33683 33684 33733 33734 33735 33736 33737 33738 33655 33656 33657 33658 33659 33660 34213 34214 34215 34216 34217 34218 34207 34208 34209 34210 34211 34212 34741 34742 34743 34744 34745 34746 34375 34376 34377 34378 34379 34380 34381 34382 34383 34384 34385 34386 48 1759 1760 1761 1762 1763 1764 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 33660 33733 33734 33735 33736 33737 33738 33679 33680 33681 33682 33683 33684 33673 33674 33675 33676 33677 33678 48 33703 33704 33705 33706 33707 33708 33739 33740 33741 33742 33743 33744 33679 33680 33681 33682 33683 33684 34381 34382 34383 34384 34385 34386 34375 34376 34377 34378 34379 34380 34753 34754 34755 34756 34757 34758 30884 30885 30886 30887 30888 30889 34531 34532 34533 34534 34535 34536 48 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 33673 33674 33675 33676 33677 33678 33679 33680 33681 33682 33683 33684 33739 33740 33741 33742 33743 33744 33703 33704 33705 33706 33707 33708 33697 33698 33699 33700 33701 33702 scotch_6.0.9/src/check/data/small.grf0000644000302600021200000000015713466077161017660 0ustar pelegrinpelegrin0 12 34 0 000 2 1 3 3 0 2 4 2 1 5 3 0 4 6 4 1 3 5 7 3 2 4 8 3 3 7 9 4 4 6 8 10 3 5 7 11 2 6 10 3 7 9 11 2 8 10 scotch_6.0.9/src/check/data/m4x4_b1.grf0000644000302600021200000000024313303015264017704 0ustar pelegrinpelegrin0 16 48 1 000 2 2 5 3 1 3 6 3 2 4 7 2 3 8 3 1 6 9 4 2 5 7 10 4 3 6 8 11 3 4 7 12 3 5 10 13 4 6 9 11 14 4 7 10 12 15 3 8 11 16 2 9 14 3 10 13 15 3 11 14 16 2 12 15 scotch_6.0.9/src/check/data/bump_imbal_32.grf0000644000302600021200000116765513303015264021167 0ustar pelegrinpelegrin0 9800 57978 0 001 1 3 413 407 6 1 4 9771 43 9772 44 2 4 76 1474 1475 77 1 3 1242 147 148 1 3 693 206 207 1 3 521 348 349 1 4 7 412 413 0 1 4 6 412 8 647 1 4 9 3238 647 7 1 4 3235 3238 8 10 1 4 11 3233 3235 9 1 4 3234 3233 10 12 1 4 3684 3234 11 13 1 4 14 418 3684 12 1 4 15 417 418 13 1 4 14 417 16 3088 1 4 17 3086 3088 15 1 4 16 3086 3087 18 1 4 3087 17 3095 19 1 4 3095 18 3096 20 1 4 21 414 3096 19 1 4 20 414 1171 22 1 4 1171 21 1172 23 1 4 1172 22 1173 24 1 4 1173 23 1526 25 1 4 1526 24 26 9781 1 4 27 3852 9781 25 1 4 28 2179 3852 26 1 4 27 2179 2180 29 1 4 2180 28 30 2503 1 4 31 2505 2503 29 1 4 2508 2505 30 32 1 4 3330 2508 33 31 1 4 3330 32 3331 34 1 4 35 2248 3331 33 1 4 34 2248 2249 36 1 4 2249 35 2250 37 1 4 38 416 2250 36 1 4 39 415 416 37 1 4 38 415 2194 40 1 4 2194 39 2195 41 1 4 2195 40 2196 42 1 3 2196 41 43 1 4 42 2196 9771 1 1 4 9769 9772 1 45 1 4 46 9768 9769 44 1 4 47 427 9768 45 1 4 48 426 427 46 1 4 47 426 49 411 1 4 50 410 411 48 1 4 49 410 51 421 1 4 50 421 422 52 1 4 422 51 4650 53 1 4 4650 52 4651 54 1 4 4657 4651 53 55 1 4 5380 4657 54 56 1 4 57 430 5380 55 1 4 56 430 429 58 1 4 59 408 429 57 1 4 58 408 2218 60 1 4 2218 59 2219 61 1 4 2219 60 2220 62 1 4 2220 61 2221 63 1 4 2221 62 2222 64 1 4 6701 2222 63 65 1 4 6701 64 6703 66 1 4 6703 65 3505 67 1 4 68 3452 3505 66 1 4 69 3451 3452 67 1 4 3441 3451 68 70 2 4 71 2491 3441 69 2 4 70 2491 2492 72 2 4 73 409 2492 71 2 4 72 409 74 428 2 4 73 428 75 1603 2 4 74 1603 1604 76 2 4 2 1474 1604 75 2 4 1475 2 1476 78 2 4 1476 77 1477 79 2 4 1477 78 1478 80 2 4 1478 79 1479 81 2 4 1479 80 1480 82 2 4 1480 81 1481 83 2 4 1481 82 1482 84 2 4 1482 83 1483 85 2 4 86 1160 1483 84 2 4 85 1160 1161 87 2 4 1161 86 1162 88 2 4 1162 87 1163 89 2 4 1163 88 1186 90 2 4 1186 89 1185 91 2 4 1185 90 1187 92 2 4 1187 91 1188 93 2 4 1188 92 1189 94 2 4 1189 93 1190 95 2 4 1190 94 1191 96 2 4 1191 95 1192 97 2 4 1192 96 1193 98 2 4 1193 97 1194 99 2 4 1194 98 1195 100 2 4 1195 99 1196 101 2 4 1196 100 1197 102 2 4 1197 101 1198 103 2 4 1198 102 1199 104 2 4 1199 103 1200 105 2 4 1200 104 1201 106 2 4 1201 105 1202 107 2 4 1202 106 1203 108 2 4 1203 107 1204 109 2 4 1204 108 1205 110 2 4 1205 109 1206 111 2 4 1206 110 1207 112 2 4 1207 111 1208 113 1 4 1208 112 1209 114 1 4 1209 113 1210 115 1 4 1210 114 1211 116 1 4 1211 115 1212 117 1 4 1212 116 1213 118 1 4 1213 117 1214 119 1 4 1214 118 1215 120 1 4 1215 119 1216 121 1 4 1216 120 1217 122 1 4 1217 121 1218 123 1 4 1218 122 1219 124 1 4 1219 123 1220 125 1 4 1220 124 1221 126 1 4 1221 125 1222 127 1 4 1222 126 1223 128 1 4 1223 127 1224 129 1 4 1224 128 1225 130 1 4 1225 129 1226 131 1 4 1226 130 1227 132 1 4 1227 131 1228 133 1 4 1228 132 1229 134 1 4 1229 133 1230 135 1 4 1230 134 1231 136 1 4 1231 135 1232 137 1 4 1232 136 1233 138 1 4 1233 137 1234 139 1 4 1234 138 1235 140 1 4 1235 139 1236 141 1 4 1236 140 1237 142 1 4 1237 141 1238 143 1 4 1238 142 1239 144 1 4 1239 143 1240 145 1 4 1240 144 1241 146 1 4 1241 145 1242 147 1 3 1242 146 3 1 4 1242 3 1243 149 1 4 1243 148 1244 150 1 4 1244 149 1245 151 1 4 1245 150 1246 152 1 4 1246 151 1247 153 1 4 1247 152 1248 154 1 4 155 923 1248 153 1 4 154 923 924 156 1 4 924 155 925 157 1 4 925 156 926 158 1 4 926 157 927 159 1 4 927 158 928 160 1 4 928 159 929 161 1 4 929 160 930 162 1 4 930 161 931 163 1 4 164 651 931 162 1 4 163 651 652 165 1 4 652 164 653 166 1 4 653 165 654 167 1 4 654 166 655 168 1 4 655 167 656 169 1 4 656 168 657 170 1 4 657 169 658 171 1 4 658 170 659 172 1 4 659 171 660 173 1 4 660 172 661 174 1 4 661 173 662 175 1 4 662 174 663 176 1 4 663 175 664 177 1 4 664 176 665 178 1 4 665 177 666 179 1 4 666 178 667 180 1 4 667 179 668 181 1 4 668 180 669 182 1 4 669 181 670 183 1 4 670 182 671 184 1 4 671 183 672 185 1 4 672 184 673 186 1 4 673 185 674 187 1 4 674 186 675 188 1 4 675 187 676 189 1 4 676 188 677 190 1 4 677 189 678 191 1 4 678 190 679 192 1 4 679 191 680 193 1 4 680 192 681 194 1 4 681 193 682 195 1 4 682 194 683 196 1 4 683 195 684 197 1 4 684 196 685 198 1 4 685 197 686 199 1 4 686 198 687 200 1 4 687 199 688 201 1 4 688 200 689 202 1 4 689 201 690 203 1 4 690 202 691 204 1 4 691 203 692 205 1 3 692 204 206 1 4 692 205 693 4 1 3 693 4 208 1 4 693 207 694 209 1 4 694 208 695 210 1 4 695 209 696 211 1 4 696 210 697 212 1 4 697 211 698 213 1 4 698 212 699 214 1 4 699 213 700 215 1 4 700 214 701 216 1 4 701 215 702 217 1 4 702 216 703 218 1 4 703 217 704 219 1 4 704 218 705 220 1 4 705 219 706 221 1 4 706 220 707 222 1 4 707 221 708 223 1 4 708 222 709 224 1 4 709 223 710 225 1 4 710 224 711 226 1 4 711 225 712 227 1 4 712 226 713 228 1 4 713 227 714 229 1 4 714 228 715 230 1 4 715 229 716 231 1 4 716 230 717 232 1 4 717 231 718 233 1 4 718 232 719 234 1 4 719 233 720 235 1 4 720 234 721 236 1 4 721 235 722 237 1 4 722 236 723 238 1 4 723 237 724 239 1 4 724 238 725 240 1 4 725 239 726 241 1 4 726 240 727 242 1 4 727 241 728 243 1 4 728 242 729 244 1 4 729 243 730 245 1 4 730 244 731 246 1 4 731 245 732 247 2 4 732 246 733 248 2 4 733 247 734 249 2 4 734 248 735 250 2 4 735 249 736 251 2 4 736 250 737 252 2 4 737 251 738 253 2 4 738 252 739 254 2 4 739 253 740 255 2 4 740 254 741 256 2 4 741 255 742 257 2 4 258 431 742 256 2 4 257 431 432 259 2 4 432 258 433 260 2 4 433 259 434 261 2 4 434 260 435 262 2 4 435 261 436 263 2 4 436 262 437 264 2 4 437 263 438 265 2 4 438 264 439 266 2 4 439 265 440 267 2 4 440 266 441 268 2 4 441 267 442 269 2 4 442 268 443 270 2 4 443 269 444 271 2 4 444 270 445 272 1 4 445 271 446 273 1 4 446 272 447 274 1 4 447 273 448 275 1 4 448 274 449 276 1 4 449 275 450 277 1 4 450 276 451 278 1 4 451 277 452 279 1 4 452 278 453 280 1 4 453 279 454 281 1 4 454 280 455 282 1 4 455 281 456 283 1 4 456 282 457 284 1 4 457 283 458 285 1 4 458 284 459 286 1 4 459 285 460 287 1 4 460 286 461 288 1 4 461 287 462 289 1 4 462 288 463 290 1 4 463 289 464 291 1 4 464 290 465 292 1 4 465 291 466 293 1 4 466 292 467 294 1 4 467 293 468 295 1 4 468 294 469 296 1 4 469 295 470 297 1 4 470 296 471 298 1 4 471 297 472 299 1 4 472 298 473 300 1 4 473 299 474 301 1 4 474 300 475 302 1 4 475 301 476 303 1 4 476 302 477 304 1 4 477 303 478 305 1 4 478 304 479 306 1 4 479 305 480 307 1 4 480 306 481 308 1 4 481 307 482 309 1 4 482 308 483 310 1 4 483 309 484 311 1 4 484 310 485 312 1 4 485 311 486 313 1 4 486 312 487 314 1 4 487 313 488 315 1 4 488 314 489 316 1 4 489 315 490 317 1 4 490 316 491 318 1 4 491 317 492 319 1 4 492 318 493 320 1 4 493 319 494 321 1 4 494 320 495 322 1 4 495 321 496 323 1 4 496 322 497 324 1 4 497 323 498 325 1 4 498 324 499 326 1 4 499 325 500 327 1 4 500 326 501 328 1 4 501 327 502 329 1 4 502 328 503 330 1 4 503 329 504 331 1 4 504 330 505 332 1 4 505 331 506 333 1 4 506 332 507 334 1 4 507 333 508 335 1 4 508 334 509 336 1 4 509 335 510 337 1 4 510 336 511 338 1 4 511 337 512 339 1 4 512 338 513 340 1 4 513 339 514 341 1 4 514 340 515 342 1 4 515 341 516 343 1 4 516 342 517 344 1 4 517 343 518 345 1 4 518 344 519 346 1 4 519 345 520 347 1 4 520 346 521 348 1 3 521 347 5 1 4 521 5 522 350 1 4 522 349 523 351 1 4 523 350 524 352 1 4 524 351 525 353 1 4 525 352 526 354 1 4 526 353 527 355 1 4 527 354 528 356 1 4 528 355 529 357 1 4 529 356 530 358 1 4 530 357 531 359 1 4 531 358 532 360 1 4 532 359 533 361 1 4 533 360 534 362 1 4 534 361 535 363 1 4 535 362 536 364 1 4 536 363 537 365 1 4 537 364 538 366 1 4 538 365 539 367 1 4 539 366 540 368 1 4 540 367 541 369 1 4 541 368 542 370 1 4 542 369 543 371 1 4 543 370 544 372 1 4 544 371 545 373 1 4 545 372 546 374 1 4 546 373 547 375 1 4 550 547 374 376 1 4 550 375 551 377 1 4 551 376 552 378 1 4 552 377 553 379 1 4 556 553 378 380 1 4 566 556 379 381 1 4 566 380 567 382 1 4 567 381 568 383 1 4 568 382 569 384 1 4 569 383 570 385 1 4 425 570 386 384 1 4 387 423 425 385 1 4 386 423 424 388 1 4 579 424 389 387 1 4 584 579 388 390 1 4 584 389 585 391 1 4 585 390 586 392 1 4 586 391 420 393 1 4 394 419 420 392 1 4 393 419 594 395 1 4 396 596 594 394 1 4 622 596 395 397 1 4 622 396 623 398 1 4 623 397 624 399 1 4 398 624 626 400 1 4 626 399 628 401 1 4 630 628 402 400 1 4 630 401 631 403 1 4 402 631 2097 404 1 4 405 649 2097 403 1 4 648 649 404 406 1 4 648 405 413 407 1 3 413 406 0 1 6 58 59 429 2218 2545 2841 2 6 72 73 2492 2493 1606 428 1 6 49 50 411 4521 4515 421 1 6 49 410 48 426 4514 4515 1 6 6 7 413 647 646 648 1 6 6 412 648 406 407 0 1 6 20 21 1171 3882 3128 3096 1 6 38 39 416 2194 2252 9704 1 6 38 415 37 2250 2251 2252 1 6 14 15 418 3088 3098 3099 1 6 14 417 13 3099 3100 3684 1 6 393 394 420 593 588 594 1 6 393 419 586 392 587 588 1 6 50 51 422 5237 4521 410 1 6 421 51 52 4650 9684 5237 1 6 386 387 424 425 577 575 1 6 423 387 577 578 579 388 1 6 386 423 572 570 385 575 1 6 47 48 427 411 4514 5612 1 6 47 426 46 5612 7500 9768 2 6 73 74 1603 1605 1606 409 1 6 58 408 430 57 2841 9690 1 6 56 57 429 9689 5380 9690 2 6 257 258 432 742 743 744 2 6 431 258 259 433 744 745 2 6 432 259 260 434 745 746 2 6 433 260 261 435 746 747 2 6 434 261 262 436 747 748 2 6 435 262 263 437 748 749 2 6 436 263 264 438 749 750 2 6 437 264 265 439 750 751 2 6 438 265 266 440 751 752 2 6 439 266 267 441 752 753 2 6 440 267 268 442 753 754 2 6 441 268 269 443 754 755 2 6 442 269 270 444 755 756 2 6 443 270 271 445 756 757 2 6 444 271 272 446 757 758 1 6 445 272 273 447 758 759 1 6 446 273 274 448 759 760 1 6 447 274 275 449 760 761 1 6 448 275 276 450 761 762 1 6 449 276 277 451 762 763 1 6 450 277 278 452 763 764 1 6 451 278 279 453 764 765 1 6 452 279 280 454 765 766 1 6 453 280 281 455 766 767 1 6 454 281 282 456 767 768 1 6 455 282 283 457 768 769 1 6 456 283 284 458 769 770 1 6 457 284 285 459 770 771 1 6 458 285 286 460 771 772 1 6 459 286 287 461 772 773 1 6 460 287 288 462 773 774 1 6 461 288 289 463 774 775 1 6 462 289 290 464 775 776 1 6 463 290 291 465 776 777 1 6 464 291 292 466 777 778 1 6 465 292 293 467 778 779 1 6 466 293 294 468 779 780 1 6 467 294 295 469 780 781 1 6 468 295 296 470 781 782 1 6 469 296 297 471 782 783 1 6 470 297 298 472 783 784 1 6 471 298 299 473 784 785 1 6 472 299 300 474 785 786 1 6 473 300 301 475 786 787 1 6 474 301 302 476 787 788 1 6 475 302 303 477 788 789 1 6 476 303 304 478 789 790 1 6 477 304 305 479 790 791 1 6 478 305 306 480 791 792 1 6 479 306 307 481 792 793 1 6 480 307 308 482 793 794 1 6 481 308 309 483 794 795 1 6 482 309 310 484 795 796 1 6 483 310 311 485 796 797 1 6 484 311 312 486 797 798 1 6 485 312 313 487 798 799 1 6 486 313 314 488 799 800 1 6 487 314 315 489 800 801 1 6 488 315 316 490 801 802 1 6 489 316 317 491 802 803 1 6 490 317 318 492 803 804 1 6 491 318 319 493 804 805 1 6 492 319 320 494 805 806 1 6 493 320 321 495 806 807 1 6 494 321 322 496 807 808 1 6 495 322 323 497 808 809 1 6 496 323 324 498 809 810 1 6 497 324 325 499 810 811 1 6 498 325 326 500 811 812 1 6 499 326 327 501 812 813 1 6 500 327 328 502 813 814 1 6 501 328 329 503 814 815 1 6 502 329 330 504 815 816 1 6 503 330 331 505 816 817 1 6 504 331 332 506 817 818 1 6 505 332 333 507 818 819 1 6 506 333 334 508 819 820 1 6 507 334 335 509 820 821 1 6 508 335 336 510 821 822 1 6 509 336 337 511 822 823 1 6 510 337 338 512 823 824 1 6 511 338 339 513 824 825 1 6 512 339 340 514 825 826 1 6 513 340 341 515 826 827 1 6 514 341 342 516 827 828 1 6 515 342 343 517 828 829 1 6 516 343 344 518 829 830 1 6 517 344 345 519 830 831 1 6 518 345 346 520 831 832 1 6 519 346 347 521 832 833 1 7 520 347 348 5 349 522 833 1 6 521 349 350 523 833 834 1 5 522 350 351 524 834 1 6 523 351 352 525 834 835 1 6 524 352 353 526 835 836 1 6 525 353 354 527 836 837 1 6 526 354 355 528 837 838 1 6 527 355 356 529 838 839 1 6 528 356 357 530 839 840 1 6 529 357 358 531 840 841 1 6 530 358 359 532 841 842 1 6 531 359 360 533 842 843 1 6 532 360 361 534 843 844 1 6 533 361 362 535 844 845 1 6 534 362 363 536 845 846 1 6 535 363 364 537 846 847 1 6 536 364 365 538 847 848 1 6 537 365 366 539 848 849 1 6 538 366 367 540 849 850 1 6 539 367 368 541 853 850 1 6 540 368 369 542 855 853 1 6 541 369 370 543 855 856 1 6 542 370 371 544 856 857 1 6 543 371 372 545 857 858 1 6 544 372 373 546 858 859 1 6 545 373 374 547 548 859 1 6 546 374 548 549 550 375 1 6 546 547 549 859 860 861 1 6 548 547 550 861 862 863 1 6 549 547 375 376 551 863 1 6 550 376 377 552 863 864 1 6 551 377 378 553 554 864 1 6 552 378 554 555 556 379 1 6 552 553 555 557 864 865 1 6 554 553 556 557 558 565 1 6 555 553 379 565 566 380 1 6 554 555 558 559 865 866 1 6 557 555 559 560 561 565 1 6 557 558 560 866 867 868 1 6 559 558 561 562 922 868 1 6 560 558 562 563 564 565 1 6 560 561 563 921 920 922 1 6 562 561 564 9743 921 9744 1 6 563 561 565 566 9744 567 1 6 564 561 558 555 556 566 1 6 565 556 380 381 567 564 1 6 566 381 382 568 9744 564 1 6 567 382 383 569 9744 9739 1 6 568 383 384 570 571 9739 1 6 569 384 571 572 425 385 1 6 569 570 572 573 9739 9740 1 6 571 570 425 573 574 575 1 6 571 572 574 9740 9741 916 1 6 573 572 575 576 916 915 1 6 574 572 425 576 577 423 1 6 574 575 577 915 2474 1515 1 6 576 575 423 424 578 1515 1 6 577 424 579 580 581 1515 1 6 578 424 388 580 584 389 1 6 578 579 581 582 583 584 1 6 578 580 582 1515 1516 1517 1 6 581 580 583 1517 1508 1506 1 6 582 580 584 585 589 1506 1 6 583 580 579 389 390 585 1 6 584 390 391 586 589 583 1 6 585 391 392 420 587 589 1 6 586 420 588 589 590 591 1 6 587 420 591 592 593 419 1 6 586 587 590 585 583 1506 1 6 589 587 591 1506 1507 1514 1 6 590 587 588 592 599 1514 1 6 591 588 593 597 598 599 1 6 592 588 419 594 595 597 1 6 593 419 394 595 596 395 1 6 593 594 596 597 621 606 1 6 595 594 621 622 396 395 1 6 593 595 592 598 605 606 1 6 592 597 599 600 604 605 1 6 592 598 600 601 1514 591 1 6 599 598 601 602 603 604 1 6 599 600 602 1513 1514 1539 1 6 601 600 603 1539 1540 1583 1 6 602 600 604 1602 1583 608 1 6 603 600 598 605 607 608 1 6 604 598 597 606 607 614 1 6 605 597 621 620 595 614 1 6 604 605 608 609 610 614 1 6 604 607 609 1602 603 1600 1 6 608 607 610 611 1599 1600 1 6 609 607 611 612 613 614 1 6 609 610 612 6557 1598 1599 1 6 611 610 613 615 3764 6557 1 6 612 610 614 615 616 620 1 6 613 610 620 606 605 607 1 6 612 613 616 617 3760 3764 1 6 615 613 617 618 619 620 1 6 615 616 618 3760 3761 625 1 6 617 616 619 623 624 625 1 6 618 616 620 621 623 622 1 6 619 616 613 614 621 606 1 6 619 620 606 595 596 622 1 6 621 596 396 397 623 619 1 6 622 397 398 624 618 619 1 6 623 398 618 625 626 399 1 6 618 624 626 627 3761 617 1 6 625 624 627 628 399 400 1 6 625 626 628 629 3761 3762 1 6 627 626 629 630 401 400 1 6 627 628 630 635 3762 632 1 6 629 628 401 402 631 632 1 6 630 402 632 633 403 2097 1 6 630 631 633 634 635 629 1 6 632 631 634 2097 650 641 1 6 632 633 635 636 637 641 1 6 632 634 636 3217 3762 629 1 6 635 634 637 638 3217 3218 1 6 636 634 638 639 640 641 1 6 636 637 639 3218 3219 3220 1 6 638 637 640 3220 3239 3240 1 6 639 637 641 642 643 3239 1 6 640 637 642 633 650 634 1 6 640 641 643 644 645 650 1 6 640 642 644 3237 3236 3239 1 6 643 642 645 646 647 3237 1 6 644 642 646 648 649 650 1 5 644 645 647 412 648 1 7 644 646 412 8 3238 3237 7 1 7 412 646 645 649 405 406 413 1 6 648 645 650 405 404 2097 1 6 649 645 633 2097 641 642 1 6 163 164 652 931 932 933 1 6 651 164 165 653 933 934 1 6 652 165 166 654 934 935 1 6 653 166 167 655 935 936 1 6 654 167 168 656 936 937 1 6 655 168 169 657 937 938 1 6 656 169 170 658 938 939 1 6 657 170 171 659 939 940 1 6 658 171 172 660 940 941 1 6 659 172 173 661 941 942 1 6 660 173 174 662 942 943 1 6 661 174 175 663 943 944 1 6 662 175 176 664 944 945 1 6 663 176 177 665 945 946 1 6 664 177 178 666 946 947 1 6 665 178 179 667 947 948 1 6 666 179 180 668 948 949 1 6 667 180 181 669 949 950 1 6 668 181 182 670 950 951 1 6 669 182 183 671 951 952 1 6 670 183 184 672 952 953 1 6 671 184 185 673 953 954 1 6 672 185 186 674 954 955 1 6 673 186 187 675 955 956 1 6 674 187 188 676 956 957 1 6 675 188 189 677 957 958 1 6 676 189 190 678 958 959 1 6 677 190 191 679 959 960 1 6 678 191 192 680 960 961 1 6 679 192 193 681 961 962 1 6 680 193 194 682 962 963 1 6 681 194 195 683 963 964 1 6 682 195 196 684 964 965 1 6 683 196 197 685 965 966 1 6 684 197 198 686 966 967 1 6 685 198 199 687 967 968 1 6 686 199 200 688 968 969 1 6 687 200 201 689 969 970 1 6 688 201 202 690 970 971 1 6 689 202 203 691 971 972 1 6 690 203 204 692 972 973 1 7 691 204 205 206 693 973 694 1 6 692 206 4 207 208 694 1 7 693 208 209 695 973 692 974 1 6 694 209 210 696 974 975 1 6 695 210 211 697 975 976 1 6 696 211 212 698 976 977 1 6 697 212 213 699 977 978 1 6 698 213 214 700 978 979 1 6 699 214 215 701 979 980 1 6 700 215 216 702 980 981 1 6 701 216 217 703 981 982 1 6 702 217 218 704 982 983 1 6 703 218 219 705 983 984 1 6 704 219 220 706 984 985 1 6 705 220 221 707 985 986 1 6 706 221 222 708 986 987 1 6 707 222 223 709 987 988 1 6 708 223 224 710 988 989 1 6 709 224 225 711 989 990 1 6 710 225 226 712 990 991 1 6 711 226 227 713 991 992 1 6 712 227 228 714 992 993 1 6 713 228 229 715 993 994 1 6 714 229 230 716 994 995 1 6 715 230 231 717 995 996 1 6 716 231 232 718 996 997 1 6 717 232 233 719 997 998 1 6 718 233 234 720 998 999 1 6 719 234 235 721 999 1000 1 6 720 235 236 722 1000 1001 1 6 721 236 237 723 1001 1002 1 6 722 237 238 724 1002 1003 1 6 723 238 239 725 1003 1004 1 6 724 239 240 726 1004 1005 1 6 725 240 241 727 1005 1006 1 6 726 241 242 728 1006 1007 1 6 727 242 243 729 1007 1008 1 6 728 243 244 730 1008 1009 1 6 729 244 245 731 1009 1010 1 6 730 245 246 732 1010 1011 2 6 731 246 247 733 1011 1012 2 6 732 247 248 734 1012 1013 2 6 733 248 249 735 1016 1013 2 6 734 249 250 736 1016 1017 2 6 735 250 251 737 1017 1018 2 6 736 251 252 738 1018 1019 2 6 737 252 253 739 1019 1020 2 6 738 253 254 740 1020 1021 2 6 739 254 255 741 1021 1022 2 6 740 255 256 742 1022 1023 2 6 741 256 257 431 743 1023 2 6 742 431 744 1023 1024 1025 2 6 743 431 432 745 1025 1026 2 6 744 432 433 746 1026 1027 2 6 745 433 434 747 1027 1028 2 6 746 434 435 748 1028 1029 2 6 747 435 436 749 1029 1030 2 6 748 436 437 750 1030 1031 2 6 749 437 438 751 1031 1032 2 6 750 438 439 752 1032 1033 2 6 751 439 440 753 1033 1034 2 6 752 440 441 754 1034 1035 2 6 753 441 442 755 1035 1036 2 6 754 442 443 756 1036 1037 2 6 755 443 444 757 1037 1038 2 6 756 444 445 758 1038 1039 1 6 757 445 446 759 1039 1040 1 6 758 446 447 760 1040 1041 1 6 759 447 448 761 1041 1042 1 6 760 448 449 762 1042 1043 1 6 761 449 450 763 1043 1044 1 6 762 450 451 764 1044 1045 1 6 763 451 452 765 1045 1046 1 6 764 452 453 766 1046 1047 1 6 765 453 454 767 1047 1048 1 6 766 454 455 768 1048 1049 1 6 767 455 456 769 1049 1050 1 6 768 456 457 770 1050 1051 1 6 769 457 458 771 1051 1052 1 6 770 458 459 772 1052 1053 1 6 771 459 460 773 1053 1054 1 6 772 460 461 774 1054 1055 1 6 773 461 462 775 1055 1056 1 6 774 462 463 776 1056 1057 1 6 775 463 464 777 1057 1058 1 6 776 464 465 778 1058 1059 1 6 777 465 466 779 1059 1060 1 6 778 466 467 780 1060 1061 1 6 779 467 468 781 1061 1062 1 6 780 468 469 782 1062 1063 1 6 781 469 470 783 1063 1064 1 6 782 470 471 784 1064 1065 1 6 783 471 472 785 1065 1066 1 6 784 472 473 786 1066 1067 1 6 785 473 474 787 1067 1068 1 6 786 474 475 788 1068 1069 1 6 787 475 476 789 1069 1070 1 6 788 476 477 790 1070 1071 1 6 789 477 478 791 1071 1072 1 6 790 478 479 792 1072 1073 1 6 791 479 480 793 1073 1074 1 6 792 480 481 794 1074 1075 1 6 793 481 482 795 1075 1076 1 6 794 482 483 796 1076 1077 1 6 795 483 484 797 1077 1078 1 6 796 484 485 798 1078 1079 1 6 797 485 486 799 1079 1080 1 6 798 486 487 800 1080 1081 1 6 799 487 488 801 1081 1082 1 6 800 488 489 802 1082 1083 1 6 801 489 490 803 1083 1084 1 6 802 490 491 804 1084 1085 1 6 803 491 492 805 1085 1086 1 6 804 492 493 806 1086 1087 1 6 805 493 494 807 1087 1088 1 6 806 494 495 808 1088 1089 1 6 807 495 496 809 1089 1090 1 6 808 496 497 810 1090 1091 1 6 809 497 498 811 1091 1092 1 6 810 498 499 812 1092 1093 1 6 811 499 500 813 1093 1094 1 6 812 500 501 814 1094 1095 1 6 813 501 502 815 1095 1096 1 6 814 502 503 816 1096 1097 1 6 815 503 504 817 1097 1098 1 6 816 504 505 818 1098 1099 1 6 817 505 506 819 1099 1100 1 6 818 506 507 820 1100 1101 1 6 819 507 508 821 1101 1102 1 6 820 508 509 822 1102 1103 1 6 821 509 510 823 1103 1104 1 6 822 510 511 824 1104 1105 1 6 823 511 512 825 1105 1106 1 6 824 512 513 826 1106 1107 1 6 825 513 514 827 1107 1108 1 6 826 514 515 828 1108 1109 1 6 827 515 516 829 1109 1110 1 6 828 516 517 830 1110 1111 1 6 829 517 518 831 1111 1112 1 6 830 518 519 832 1112 1113 1 6 831 519 520 833 1113 1114 1 6 832 520 521 522 834 1114 1 6 833 522 523 524 835 1114 1 7 834 524 525 836 1114 1115 1116 1 6 835 525 526 837 1116 1117 1 6 836 526 527 838 1117 1118 1 6 837 527 528 839 1118 1119 1 6 838 528 529 840 1119 1120 1 6 839 529 530 841 1120 1121 1 6 840 530 531 842 1121 1122 1 6 841 531 532 843 1122 1123 1 6 842 532 533 844 1123 1124 1 6 843 533 534 845 1124 1125 1 6 844 534 535 846 1125 1126 1 6 845 535 536 847 1126 1127 1 6 846 536 537 848 1127 1128 1 6 847 537 538 849 1128 1129 1 6 848 538 539 850 851 1129 1 6 849 539 851 852 853 540 1 6 849 850 852 1129 1130 1131 1 6 851 850 853 854 1131 1132 1 6 852 850 854 855 541 540 1 6 852 853 855 1132 1133 1134 1 6 854 853 541 542 856 1134 1 6 855 542 543 857 1134 1135 1 6 856 543 544 858 1135 1136 1 6 857 544 545 859 1136 1137 1 6 858 545 546 548 860 1137 1 6 859 548 861 1137 1138 1139 1 6 860 548 549 862 1139 1140 1 6 861 549 863 1140 1141 1142 1 6 862 549 550 551 864 1142 1 6 863 551 552 554 865 1142 1 6 864 554 557 866 1142 1143 1 6 865 557 559 867 1143 1144 1 6 866 559 868 869 1144 1145 1 6 867 559 869 870 922 560 1 6 867 868 870 871 1145 1146 1 6 869 868 871 872 873 922 1 6 869 870 872 1146 1147 1148 1 6 871 870 873 874 1151 1148 1 6 872 870 874 875 922 920 1 6 872 873 875 876 1170 1151 1 6 874 873 876 877 919 920 1 6 874 875 877 878 879 1170 1 6 876 875 878 918 882 919 1 6 876 877 879 880 881 882 1 6 876 878 880 884 886 1170 1 6 879 878 881 884 885 891 1 6 880 878 882 883 891 892 1 6 881 878 883 917 918 877 1 6 881 882 912 892 913 917 1 6 879 880 885 886 887 888 1 6 884 880 888 889 890 891 1 6 879 884 887 1964 1169 1170 1 6 886 884 888 1965 1964 2075 1 6 887 884 885 889 2075 2076 1 6 888 885 890 2076 2077 2081 1 6 889 885 891 893 894 2081 1 6 890 885 880 881 892 893 1 6 891 881 893 896 912 883 1 6 891 892 890 894 895 896 1 6 890 893 895 897 898 2081 1 6 894 893 896 897 909 910 1 6 895 893 892 910 911 912 1 6 894 895 898 899 900 909 1 6 894 897 899 901 2081 2080 1 6 898 897 900 901 902 906 1 6 899 897 906 907 908 909 1 6 898 899 902 903 2080 2082 1 6 901 899 903 904 905 906 1 6 901 902 904 2082 2083 2084 1 6 903 902 905 2084 2085 1565 1 6 904 902 906 1563 1564 1565 1 6 905 902 899 900 907 1563 1 6 906 900 908 1543 1563 1536 1 6 907 900 909 1522 1523 1536 1 6 908 900 897 895 910 1522 1 6 909 895 896 911 1520 1522 1 6 910 896 912 1521 1520 914 1 6 911 896 892 883 913 914 1 6 912 883 914 915 916 917 1 6 912 913 915 2474 1521 911 1 6 914 913 916 574 576 2474 1 6 915 913 917 9741 573 574 1 6 916 913 883 882 918 9741 1 6 917 882 877 919 9742 9741 1 6 918 877 875 920 921 9742 1 6 919 875 921 562 922 873 1 6 919 920 562 9743 9742 563 1 6 562 920 873 870 868 560 1 6 154 155 924 1248 1249 1250 1 6 923 155 156 925 1250 1251 1 6 924 156 157 926 1251 1252 1 6 925 157 158 927 1252 1253 1 6 926 158 159 928 1253 1254 1 6 927 159 160 929 1254 1255 1 6 928 160 161 930 1255 1256 1 6 929 161 162 931 1256 1257 1 6 930 162 163 651 932 1257 1 6 931 651 933 1257 1258 1259 1 6 932 651 652 934 1259 1260 1 6 933 652 653 935 1260 1261 1 6 934 653 654 936 1261 1262 1 6 935 654 655 937 1262 1263 1 6 936 655 656 938 1263 1264 1 6 937 656 657 939 1264 1265 1 6 938 657 658 940 1265 1266 1 6 939 658 659 941 1266 1267 1 6 940 659 660 942 1267 1268 1 6 941 660 661 943 1268 1269 1 6 942 661 662 944 1269 1270 1 6 943 662 663 945 1270 1271 1 6 944 663 664 946 1271 1272 1 6 945 664 665 947 1272 1273 1 6 946 665 666 948 1273 1274 1 6 947 666 667 949 1274 1275 1 6 948 667 668 950 1275 1276 1 6 949 668 669 951 1276 1277 1 6 950 669 670 952 1277 1278 1 6 951 670 671 953 1278 1279 1 6 952 671 672 954 1279 1280 1 6 953 672 673 955 1280 1281 1 6 954 673 674 956 1281 1282 1 6 955 674 675 957 1282 1283 1 6 956 675 676 958 1283 1284 1 6 957 676 677 959 1284 1285 1 6 958 677 678 960 1285 1286 1 6 959 678 679 961 1286 1287 1 6 960 679 680 962 1287 1288 1 6 961 680 681 963 1288 1289 1 6 962 681 682 964 1289 1290 1 6 963 682 683 965 1290 1291 1 6 964 683 684 966 1291 1292 1 6 965 684 685 967 1292 1293 1 6 966 685 686 968 1293 1294 1 6 967 686 687 969 1294 1295 1 6 968 687 688 970 1295 1296 1 6 969 688 689 971 1296 1297 1 6 970 689 690 972 1297 1298 1 6 971 690 691 973 1298 1299 1 6 972 691 692 694 974 1299 1 5 973 694 695 975 1299 1 6 974 695 696 976 1299 1300 1 6 975 696 697 977 1300 1301 1 6 976 697 698 978 1301 1302 1 6 977 698 699 979 1302 1303 1 6 978 699 700 980 1303 1304 1 6 979 700 701 981 1304 1305 1 6 980 701 702 982 1305 1306 1 6 981 702 703 983 1306 1307 1 6 982 703 704 984 1307 1308 1 6 983 704 705 985 1308 1309 1 6 984 705 706 986 1309 1310 1 6 985 706 707 987 1310 1311 1 6 986 707 708 988 1311 1312 1 6 987 708 709 989 1312 1313 1 6 988 709 710 990 1313 1314 1 6 989 710 711 991 1314 1315 1 6 990 711 712 992 1315 1316 1 6 991 712 713 993 1316 1317 1 6 992 713 714 994 1317 1318 1 6 993 714 715 995 1318 1319 1 6 994 715 716 996 1319 1320 1 6 995 716 717 997 1320 1321 1 6 996 717 718 998 1321 1322 1 6 997 718 719 999 1322 1323 1 6 998 719 720 1000 1323 1324 1 6 999 720 721 1001 1324 1325 1 6 1000 721 722 1002 1325 1326 1 6 1001 722 723 1003 1326 1327 1 6 1002 723 724 1004 1327 1328 1 6 1003 724 725 1005 1328 1329 1 6 1004 725 726 1006 1329 1330 1 6 1005 726 727 1007 1330 1331 1 6 1006 727 728 1008 1331 1332 1 6 1007 728 729 1009 1332 1333 1 6 1008 729 730 1010 1333 1334 1 6 1009 730 731 1011 1334 1335 2 6 1010 731 732 1012 1335 1336 2 6 1011 732 733 1013 1014 1336 2 6 1012 733 1014 1015 1016 734 2 6 1012 1013 1015 1336 1337 1338 2 6 1014 1013 1016 1338 1339 1340 2 6 1015 1013 734 735 1017 1340 2 6 1016 735 736 1018 1340 1341 2 6 1017 736 737 1019 1341 1342 2 6 1018 737 738 1020 1342 1343 2 6 1019 738 739 1021 1343 1344 2 6 1020 739 740 1022 1344 1345 2 6 1021 740 741 1023 1345 1346 2 6 1022 741 742 743 1024 1346 2 6 1023 743 1025 1346 1347 1348 2 6 1024 743 744 1026 1348 1349 2 6 1025 744 745 1027 1349 1350 2 6 1026 745 746 1028 1350 1351 2 6 1027 746 747 1029 1351 1352 2 6 1028 747 748 1030 1352 1353 2 6 1029 748 749 1031 1353 1354 2 6 1030 749 750 1032 1354 1355 2 6 1031 750 751 1033 1355 1356 2 6 1032 751 752 1034 1356 1357 2 6 1033 752 753 1035 1357 1358 2 6 1034 753 754 1036 1358 1359 2 6 1035 754 755 1037 1359 1360 2 6 1036 755 756 1038 1360 1361 2 6 1037 756 757 1039 1361 1362 1 6 1038 757 758 1040 1362 1363 1 6 1039 758 759 1041 1363 1364 1 6 1040 759 760 1042 1364 1365 1 6 1041 760 761 1043 1365 1366 1 6 1042 761 762 1044 1366 1367 1 6 1043 762 763 1045 1367 1368 1 6 1044 763 764 1046 1368 1369 1 6 1045 764 765 1047 1369 1370 1 6 1046 765 766 1048 1370 1371 1 6 1047 766 767 1049 1371 1372 1 6 1048 767 768 1050 1372 1373 1 6 1049 768 769 1051 1373 1374 1 6 1050 769 770 1052 1374 1375 1 6 1051 770 771 1053 1375 1376 1 6 1052 771 772 1054 1376 1377 1 6 1053 772 773 1055 1377 1378 1 6 1054 773 774 1056 1378 1379 1 6 1055 774 775 1057 1379 1380 1 6 1056 775 776 1058 1380 1381 1 6 1057 776 777 1059 1381 1382 1 6 1058 777 778 1060 1382 1383 1 6 1059 778 779 1061 1383 1384 1 6 1060 779 780 1062 1384 1385 1 6 1061 780 781 1063 1385 1386 1 6 1062 781 782 1064 1386 1387 1 6 1063 782 783 1065 1387 1388 1 6 1064 783 784 1066 1388 1389 1 6 1065 784 785 1067 1389 1390 1 6 1066 785 786 1068 1390 1391 1 6 1067 786 787 1069 1391 1392 1 6 1068 787 788 1070 1392 1393 1 6 1069 788 789 1071 1393 1394 1 6 1070 789 790 1072 1394 1395 1 6 1071 790 791 1073 1395 1396 1 6 1072 791 792 1074 1396 1397 1 6 1073 792 793 1075 1397 1398 1 6 1074 793 794 1076 1398 1399 1 6 1075 794 795 1077 1399 1400 1 6 1076 795 796 1078 1400 1401 1 6 1077 796 797 1079 1401 1402 1 6 1078 797 798 1080 1402 1403 1 6 1079 798 799 1081 1403 1404 1 6 1080 799 800 1082 1404 1405 1 6 1081 800 801 1083 1405 1406 1 6 1082 801 802 1084 1406 1407 1 6 1083 802 803 1085 1407 1408 1 6 1084 803 804 1086 1408 1409 1 6 1085 804 805 1087 1409 1410 1 6 1086 805 806 1088 1410 1411 1 6 1087 806 807 1089 1411 1412 1 6 1088 807 808 1090 1412 1413 1 6 1089 808 809 1091 1413 1414 1 6 1090 809 810 1092 1414 1415 1 6 1091 810 811 1093 1415 1416 1 6 1092 811 812 1094 1416 1417 1 6 1093 812 813 1095 1417 1418 1 6 1094 813 814 1096 1418 1419 1 6 1095 814 815 1097 1419 1420 1 6 1096 815 816 1098 1420 1421 1 6 1097 816 817 1099 1421 1422 1 6 1098 817 818 1100 1422 1423 1 6 1099 818 819 1101 1423 1424 1 6 1100 819 820 1102 1424 1425 1 6 1101 820 821 1103 1425 1426 1 6 1102 821 822 1104 1426 1427 1 6 1103 822 823 1105 1427 1428 1 6 1104 823 824 1106 1428 1429 1 6 1105 824 825 1107 1429 1430 1 6 1106 825 826 1108 1430 1431 1 6 1107 826 827 1109 1431 1432 1 6 1108 827 828 1110 1432 1433 1 6 1109 828 829 1111 1433 1434 1 6 1110 829 830 1112 1434 1435 1 6 1111 830 831 1113 1435 1436 1 6 1112 831 832 1114 1436 1115 1 6 1113 832 833 834 835 1115 1 6 1114 835 1116 1436 1113 1437 1 5 1115 835 836 1117 1437 1 6 1116 836 837 1118 1437 1438 1 6 1117 837 838 1119 1438 1439 1 6 1118 838 839 1120 1439 1440 1 6 1119 839 840 1121 1440 1441 1 6 1120 840 841 1122 1441 1442 1 6 1121 841 842 1123 1442 1443 1 6 1122 842 843 1124 1443 1444 1 6 1123 843 844 1125 1444 1445 1 6 1124 844 845 1126 1445 1446 1 6 1125 845 846 1127 1446 1447 1 6 1126 846 847 1128 1447 1448 1 6 1127 847 848 1129 1448 1449 1 6 1128 848 849 851 1130 1449 1 6 1129 851 1131 1449 1450 1451 1 6 1130 851 852 1132 1451 1452 1 6 1131 852 854 1133 1452 1453 1 6 1132 854 1134 1456 1453 1152 1 6 1133 854 855 856 1135 1152 1 6 1134 856 857 1136 1152 1153 1 6 1135 857 858 1137 1153 1154 1 6 1136 858 859 860 1138 1154 1 6 1137 860 1139 1154 1155 1156 1 6 1138 860 861 1140 1156 1157 1 6 1139 861 862 1141 1157 1158 1 6 1140 862 1142 1158 1159 1143 1 6 1141 862 863 864 865 1143 1 6 1142 865 866 1144 1159 1141 1 6 1143 866 867 1145 1498 1159 1 6 1144 867 869 1146 1498 1499 1 6 1145 869 871 1147 1164 1499 1 6 1146 871 1148 1149 1164 1165 1 6 1147 871 1149 1150 1151 872 1 6 1147 1148 1150 1165 1166 1167 1 6 1149 1148 1151 1167 1168 1169 1 6 1150 1148 872 1169 1170 874 1 6 1134 1135 1153 1473 1456 1133 1 6 1152 1135 1136 1154 1473 1490 1 6 1153 1136 1137 1138 1155 1490 1 6 1154 1138 1156 1490 1491 1492 1 6 1155 1138 1139 1157 1492 1493 1 6 1156 1139 1140 1158 1493 1494 1 6 1157 1140 1141 1159 1497 1494 1 6 1158 1141 1143 1144 1498 1497 2 6 85 86 1161 1483 1484 1488 2 6 1160 86 87 1162 1174 1488 2 6 1161 87 88 1163 1174 1175 2 6 1162 88 89 1175 1177 1186 1 6 1146 1147 1165 1499 1527 1528 1 6 1164 1147 1149 1166 1528 1533 1 6 1165 1149 1167 1535 1533 1541 1 6 1166 1149 1150 1168 1541 1962 1 6 1167 1150 1169 1962 1963 1964 1 6 1168 1150 1151 1170 886 1964 1 6 1169 1151 874 886 879 876 1 6 414 21 22 1172 3337 3882 1 6 1171 22 23 1173 1524 3337 1 6 1172 23 24 1524 1525 1526 2 6 1161 1162 1175 1176 1488 1489 2 6 1174 1162 1176 1163 1177 1178 2 6 1174 1175 1489 1642 1643 1178 2 6 1175 1163 1178 1179 1186 1183 2 6 1175 1177 1179 1180 1643 1176 2 6 1178 1177 1180 1181 1182 1183 2 6 1178 1179 1181 1643 1644 1645 2 6 1180 1179 1182 1645 1646 1647 2 6 1181 1179 1183 1184 3097 1647 2 6 1182 1179 1184 1185 1186 1177 2 6 1182 1183 1185 3097 2241 1187 2 6 1184 1183 1186 90 91 1187 2 6 1185 1183 1177 1163 89 90 2 6 1185 91 92 1188 2241 1184 2 6 1187 92 93 1189 2241 1659 2 6 1188 93 94 1190 1660 1659 2 6 1189 94 95 1191 1662 1660 2 6 1190 95 96 1192 1670 1662 2 6 1191 96 97 1193 1670 1671 2 6 1192 97 98 1194 1671 1672 2 6 1193 98 99 1195 1672 1673 2 6 1194 99 100 1196 1673 1674 2 6 1195 100 101 1197 1674 1675 2 6 1196 101 102 1198 1500 1675 2 6 1197 102 103 1199 1457 1500 2 6 1198 103 104 1200 1457 1458 2 6 1199 104 105 1201 1458 1459 2 6 1200 105 106 1202 1459 1460 2 6 1201 106 107 1203 1460 1685 2 6 1202 107 108 1204 1687 1685 2 6 1203 108 109 1205 1687 1688 2 6 1204 109 110 1206 1688 1689 2 6 1205 110 111 1207 1689 1690 2 6 1206 111 112 1208 1693 1690 1 6 1207 112 113 1209 1693 1694 1 6 1208 113 114 1210 1694 1695 1 6 1209 114 115 1211 1556 1695 1 6 1210 115 116 1212 1546 1556 1 6 1211 116 117 1213 1546 1547 1 6 1212 117 118 1214 1547 1548 1 6 1213 118 119 1215 1548 1549 1 6 1214 119 120 1216 1549 1550 1 6 1215 120 121 1217 1553 1550 1 6 1216 121 122 1218 1555 1553 1 6 1217 122 123 1219 1716 1555 1 6 1218 123 124 1220 1716 1717 1 6 1219 124 125 1221 1717 1718 1 6 1220 125 126 1222 1718 1719 1 6 1221 126 127 1223 1719 1720 1 6 1222 127 128 1224 1720 1721 1 6 1223 128 129 1225 1721 1722 1 6 1224 129 130 1226 1722 1723 1 6 1225 130 131 1227 1726 1723 1 6 1226 131 132 1228 1726 1727 1 6 1227 132 133 1229 1727 1728 1 6 1228 133 134 1230 1728 1729 1 6 1229 134 135 1231 1729 1730 1 6 1230 135 136 1232 1733 1730 1 6 1231 136 137 1233 1733 1734 1 6 1232 137 138 1234 1734 1735 1 6 1233 138 139 1235 1735 1736 1 6 1234 139 140 1236 1736 1737 1 6 1235 140 141 1237 1737 1738 1 6 1236 141 142 1238 1738 1739 1 6 1237 142 143 1239 1739 1740 1 6 1238 143 144 1240 1740 1741 1 6 1239 144 145 1241 1741 1742 1 6 1240 145 146 1242 1742 1743 1 7 1241 146 147 3 148 1243 1743 1 5 1242 148 149 1244 1743 1 6 1243 149 150 1245 1743 1744 1 6 1244 150 151 1246 1744 1745 1 6 1245 151 152 1247 1745 1746 1 6 1246 152 153 1248 1746 1747 1 6 1247 153 154 923 1249 1747 1 6 1248 923 1250 1747 1748 1749 1 6 1249 923 924 1251 1749 1750 1 6 1250 924 925 1252 1750 1751 1 6 1251 925 926 1253 1751 1752 1 6 1252 926 927 1254 1752 1753 1 6 1253 927 928 1255 1753 1754 1 6 1254 928 929 1256 1754 1755 1 6 1255 929 930 1257 1755 1756 1 6 1256 930 931 932 1258 1756 1 6 1257 932 1259 1756 1757 1758 1 6 1258 932 933 1260 1758 1759 1 6 1259 933 934 1261 1759 1760 1 6 1260 934 935 1262 1760 1761 1 6 1261 935 936 1263 1761 1762 1 6 1262 936 937 1264 1762 1763 1 6 1263 937 938 1265 1763 1764 1 6 1264 938 939 1266 1764 1765 1 6 1265 939 940 1267 1765 1766 1 6 1266 940 941 1268 1766 1767 1 6 1267 941 942 1269 1767 1768 1 6 1268 942 943 1270 1768 1769 1 6 1269 943 944 1271 1769 1770 1 6 1270 944 945 1272 1770 1771 1 6 1271 945 946 1273 1771 1772 1 6 1272 946 947 1274 1772 1773 1 6 1273 947 948 1275 1773 1774 1 6 1274 948 949 1276 1774 1775 1 6 1275 949 950 1277 1775 1776 1 6 1276 950 951 1278 1776 1777 1 6 1277 951 952 1279 1777 1778 1 6 1278 952 953 1280 1778 1779 1 6 1279 953 954 1281 1779 1780 1 6 1280 954 955 1282 1780 1781 1 6 1281 955 956 1283 1781 1782 1 6 1282 956 957 1284 1782 1783 1 6 1283 957 958 1285 1783 1784 1 6 1284 958 959 1286 1784 1785 1 6 1285 959 960 1287 1785 1786 1 6 1286 960 961 1288 1786 1787 1 6 1287 961 962 1289 1787 1788 1 6 1288 962 963 1290 1788 1789 1 6 1289 963 964 1291 1789 1790 1 6 1290 964 965 1292 1790 1791 1 6 1291 965 966 1293 1791 1792 1 6 1292 966 967 1294 1792 1793 1 6 1293 967 968 1295 1793 1794 1 6 1294 968 969 1296 1794 1795 1 6 1295 969 970 1297 1795 1796 1 6 1296 970 971 1298 1796 1797 1 6 1297 971 972 1299 1797 1300 1 6 1298 972 973 974 975 1300 1 7 1299 975 976 1301 1797 1298 2100 1 6 1300 976 977 1302 2100 2101 1 6 1301 977 978 1303 2101 2102 1 6 1302 978 979 1304 2102 2103 1 6 1303 979 980 1305 2103 2104 1 6 1304 980 981 1306 2104 2105 1 6 1305 981 982 1307 2105 2106 1 6 1306 982 983 1308 1798 2106 1 6 1307 983 984 1309 1798 1799 1 6 1308 984 985 1310 1799 1800 1 6 1309 985 986 1311 1800 1801 1 6 1310 986 987 1312 1801 1802 1 6 1311 987 988 1313 1802 1803 1 6 1312 988 989 1314 1803 1804 1 6 1313 989 990 1315 1804 1805 1 6 1314 990 991 1316 1805 1806 1 6 1315 991 992 1317 1806 1807 1 6 1316 992 993 1318 1807 1808 1 6 1317 993 994 1319 1808 1809 1 6 1318 994 995 1320 1809 1810 1 6 1319 995 996 1321 1810 1811 1 6 1320 996 997 1322 1811 1812 1 6 1321 997 998 1323 1812 1813 1 6 1322 998 999 1324 1813 1814 1 6 1323 999 1000 1325 1814 1815 1 6 1324 1000 1001 1326 1815 1816 1 6 1325 1001 1002 1327 1816 1817 1 6 1326 1002 1003 1328 1817 1818 1 6 1327 1003 1004 1329 1818 1819 1 6 1328 1004 1005 1330 1819 1820 1 6 1329 1005 1006 1331 1820 1821 1 6 1330 1006 1007 1332 1821 1822 1 6 1331 1007 1008 1333 1822 1823 1 6 1332 1008 1009 1334 1823 1824 1 6 1333 1009 1010 1335 1824 1825 1 6 1334 1010 1011 1336 1825 1826 2 6 1335 1011 1012 1014 1337 1826 2 6 1336 1014 1338 1826 1827 1828 2 6 1337 1014 1015 1339 1828 1829 2 6 1338 1015 1340 1829 1830 1831 2 6 1339 1015 1016 1017 1341 1831 2 6 1340 1017 1018 1342 1831 1832 2 6 1341 1018 1019 1343 1832 1833 2 6 1342 1019 1020 1344 1833 1834 2 6 1343 1020 1021 1345 1834 1835 2 6 1344 1021 1022 1346 1835 1836 2 6 1345 1022 1023 1024 1347 1836 2 6 1346 1024 1348 1836 1837 1838 2 6 1347 1024 1025 1349 1838 1839 2 6 1348 1025 1026 1350 1839 1840 2 6 1349 1026 1027 1351 1840 1841 2 6 1350 1027 1028 1352 1841 1842 2 6 1351 1028 1029 1353 1842 1843 2 6 1352 1029 1030 1354 1843 1844 2 6 1353 1030 1031 1355 1844 1845 2 6 1354 1031 1032 1356 1845 1846 2 6 1355 1032 1033 1357 1846 1847 2 6 1356 1033 1034 1358 1847 1848 2 6 1357 1034 1035 1359 1848 1849 2 6 1358 1035 1036 1360 1849 1850 2 6 1359 1036 1037 1361 1850 1851 2 6 1360 1037 1038 1362 1851 1852 2 6 1361 1038 1039 1363 1852 1853 1 6 1362 1039 1040 1364 1853 1854 1 6 1363 1040 1041 1365 1854 1855 1 6 1364 1041 1042 1366 1855 1856 1 6 1365 1042 1043 1367 1856 1857 1 6 1366 1043 1044 1368 1857 1858 1 6 1367 1044 1045 1369 1858 1859 1 6 1368 1045 1046 1370 1859 1860 1 6 1369 1046 1047 1371 1860 1861 1 6 1370 1047 1048 1372 1861 1862 1 6 1371 1048 1049 1373 1862 1863 1 6 1372 1049 1050 1374 1863 1864 1 6 1373 1050 1051 1375 1864 1865 1 6 1374 1051 1052 1376 1865 1866 1 6 1375 1052 1053 1377 1866 1867 1 6 1376 1053 1054 1378 1867 1868 1 6 1377 1054 1055 1379 1868 1869 1 6 1378 1055 1056 1380 1869 1870 1 6 1379 1056 1057 1381 1870 1871 1 6 1380 1057 1058 1382 1871 1872 1 6 1381 1058 1059 1383 1872 1873 1 6 1382 1059 1060 1384 1873 1874 1 6 1383 1060 1061 1385 1874 1875 1 6 1384 1061 1062 1386 1875 1876 1 6 1385 1062 1063 1387 1876 1877 1 6 1386 1063 1064 1388 1877 1878 1 6 1387 1064 1065 1389 1878 1879 1 6 1388 1065 1066 1390 1879 1880 1 6 1389 1066 1067 1391 1880 1881 1 6 1390 1067 1068 1392 1881 1882 1 6 1391 1068 1069 1393 1882 1883 1 6 1392 1069 1070 1394 1883 1884 1 6 1393 1070 1071 1395 1884 1885 1 6 1394 1071 1072 1396 1885 1886 1 6 1395 1072 1073 1397 1886 1887 1 6 1396 1073 1074 1398 1887 1888 1 6 1397 1074 1075 1399 1888 1889 1 6 1398 1075 1076 1400 1889 1890 1 6 1399 1076 1077 1401 1890 1891 1 6 1400 1077 1078 1402 1891 1892 1 6 1401 1078 1079 1403 1892 1893 1 6 1402 1079 1080 1404 1893 1894 1 6 1403 1080 1081 1405 1894 1895 1 6 1404 1081 1082 1406 1895 1896 1 6 1405 1082 1083 1407 1896 1897 1 6 1406 1083 1084 1408 1897 1898 1 6 1407 1084 1085 1409 1898 1899 1 6 1408 1085 1086 1410 1899 1900 1 6 1409 1086 1087 1411 1900 1901 1 6 1410 1087 1088 1412 1901 1902 1 6 1411 1088 1089 1413 1902 1903 1 6 1412 1089 1090 1414 1903 1904 1 6 1413 1090 1091 1415 1904 1905 1 6 1414 1091 1092 1416 1905 1906 1 6 1415 1092 1093 1417 1906 1907 1 6 1416 1093 1094 1418 1907 1908 1 6 1417 1094 1095 1419 1908 1909 1 6 1418 1095 1096 1420 1909 1910 1 6 1419 1096 1097 1421 1910 1911 1 6 1420 1097 1098 1422 1911 1912 1 6 1421 1098 1099 1423 1912 1913 1 6 1422 1099 1100 1424 1913 1914 1 6 1423 1100 1101 1425 1914 1915 1 6 1424 1101 1102 1426 1915 1916 1 6 1425 1102 1103 1427 1916 1917 1 6 1426 1103 1104 1428 1917 1918 1 6 1427 1104 1105 1429 1918 1919 1 6 1428 1105 1106 1430 1919 1920 1 6 1429 1106 1107 1431 1920 1921 1 6 1430 1107 1108 1432 1921 1922 1 6 1431 1108 1109 1433 1922 1923 1 6 1432 1109 1110 1434 1923 1924 1 6 1433 1110 1111 1435 1924 1925 1 6 1434 1111 1112 1436 1925 1926 1 6 1435 1112 1113 1115 1437 1926 1 6 1436 1115 1116 1117 1438 1926 1 6 1437 1117 1118 1439 1926 1927 1 6 1438 1118 1119 1440 1927 1928 1 6 1439 1119 1120 1441 1928 1929 1 6 1440 1120 1121 1442 1929 1930 1 6 1441 1121 1122 1443 1930 1931 1 6 1442 1122 1123 1444 1931 1932 1 6 1443 1123 1124 1445 1461 1932 1 6 1444 1124 1125 1446 1461 1462 1 6 1445 1125 1126 1447 1462 1463 1 6 1446 1126 1127 1448 1463 1464 1 6 1447 1127 1128 1449 1464 1465 1 6 1448 1128 1129 1130 1450 1465 1 6 1449 1130 1451 1465 1466 1467 1 6 1450 1130 1131 1452 1467 1468 1 6 1451 1131 1132 1453 1454 1468 1 6 1452 1132 1454 1455 1456 1133 1 6 1452 1453 1455 1468 1469 1470 1 6 1454 1453 1456 1470 1471 1472 1 6 1455 1453 1133 1472 1473 1152 2 6 1198 1199 1458 1500 1501 1679 2 6 1457 1199 1200 1459 1679 1680 2 6 1458 1200 1201 1460 1680 1681 2 6 1459 1201 1202 1681 1684 1685 1 6 1444 1445 1462 1932 1933 1934 1 6 1461 1445 1446 1463 1934 1935 1 6 1462 1446 1447 1464 1935 1936 1 6 1463 1447 1448 1465 1936 1937 1 6 1464 1448 1449 1450 1466 1937 1 6 1465 1450 1467 1937 1938 1939 1 6 1466 1450 1451 1468 1939 1940 1 6 1467 1451 1452 1454 1469 1940 1 6 1468 1454 1470 1940 1941 1942 1 6 1469 1454 1455 1471 1942 1943 1 6 1470 1455 1472 1943 1944 1945 1 6 1471 1455 1456 1473 1945 1946 1 6 1472 1456 1152 1153 1490 1946 2 7 76 2 1475 1608 1604 1609 1618 2 6 1474 2 77 1476 1620 1618 2 6 1475 77 78 1477 1620 1621 2 6 1476 78 79 1478 1621 1622 2 6 1477 79 80 1479 1630 1622 2 6 1478 80 81 1480 1630 1631 2 6 1479 81 82 1481 1631 1632 2 6 1480 82 83 1482 1635 1632 2 6 1481 83 84 1483 1485 1635 2 6 1482 84 85 1160 1484 1485 2 6 1483 1160 1485 1486 1487 1488 2 6 1483 1484 1486 1502 1635 1482 2 6 1485 1484 1487 1502 1503 1504 2 6 1486 1484 1488 1504 1505 1489 2 6 1487 1484 1160 1161 1174 1489 2 6 1488 1174 1176 1505 1487 1642 1 6 1473 1153 1154 1155 1491 1946 1 6 1490 1155 1492 1946 1947 1948 1 6 1491 1155 1156 1493 1948 1949 1 6 1492 1156 1157 1494 1495 1949 1 6 1493 1157 1495 1496 1497 1158 1 6 1493 1494 1496 1951 1949 1952 1 6 1495 1494 1497 1952 1530 1529 1 6 1496 1494 1158 1159 1498 1529 1 6 1144 1145 1499 1159 1497 1529 1 6 1498 1145 1146 1164 1527 1529 2 6 1197 1198 1457 1501 1675 1676 2 6 1500 1457 1676 1677 1678 1679 2 6 1485 1486 1503 1637 1634 1635 2 6 1502 1486 1504 1637 1638 1639 2 6 1503 1486 1487 1505 1639 1640 2 6 1504 1487 1489 1640 1641 1642 1 6 583 589 590 1507 1508 582 1 6 1506 590 1508 1509 1513 1514 1 6 1506 1507 1509 1510 1517 582 1 6 1508 1507 1510 1511 1512 1513 1 6 1508 1509 1511 1517 1518 1519 1 6 1510 1509 1512 1523 1519 1537 1 6 1511 1509 1513 1537 1538 1539 1 6 1512 1509 1507 1514 601 1539 1 6 1513 1507 601 599 591 590 1 6 577 578 581 1516 2474 576 1 6 1515 581 1517 1518 1521 2474 1 6 1516 581 582 1508 1510 1518 1 6 1517 1510 1519 1520 1521 1516 1 6 1518 1510 1520 1522 1523 1511 1 6 1518 1519 1521 911 910 1522 1 6 1518 1520 911 1516 2474 914 1 6 910 1520 1519 1523 908 909 1 6 1522 1519 1511 908 1536 1537 1 6 1172 1173 1525 3337 3338 4250 1 6 1524 1173 1526 3130 2205 4250 1 6 1525 1173 24 25 3130 9781 1 6 1499 1164 1528 1529 1530 1531 1 6 1527 1164 1165 1531 1532 1533 1 6 1497 1498 1499 1527 1530 1496 1 6 1529 1527 1531 1952 1496 1953 1 6 1530 1527 1528 1532 1953 1954 1 6 1531 1528 1533 1534 1954 1955 1 6 1532 1528 1534 1535 1166 1165 1 6 1532 1533 1535 1955 1956 1957 1 6 1534 1533 1166 1541 1960 1957 1 6 908 1523 1537 1542 1543 907 1 6 1536 1523 1511 1512 1538 1542 1 6 1537 1512 1539 1540 1545 1542 1 6 1538 1512 1513 601 602 1540 1 6 1539 602 1538 1582 1545 1583 1 6 1535 1166 1167 1960 1961 1962 1 6 1536 1537 1543 1544 1545 1538 1 6 1536 1542 1544 1562 1563 907 1 6 1543 1542 1545 1562 1580 1577 1 6 1544 1542 1538 1582 1580 1540 1 6 1211 1212 1547 1556 1557 1558 1 6 1546 1212 1213 1548 1561 1558 1 6 1547 1213 1214 1549 1710 1561 1 6 1548 1214 1215 1550 1551 1710 1 6 1549 1215 1551 1552 1553 1216 1 6 1549 1550 1552 1710 1711 1712 1 6 1551 1550 1553 1554 1712 1713 1 6 1552 1550 1554 1555 1217 1216 1 6 1552 1553 1555 1713 1714 1715 1 6 1554 1553 1217 1715 1716 1218 1 6 1210 1211 1546 1557 1695 1696 1 6 1556 1546 1558 1559 1696 1697 1 6 1557 1546 1559 1560 1561 1547 1 6 1557 1558 1560 1697 1698 1699 1 6 1559 1558 1561 1699 1700 1709 1 6 1560 1558 1547 1709 1710 1548 1 6 1543 1544 1563 1564 1576 1577 1 6 1543 1562 1564 905 907 906 1 6 1563 1562 905 1565 1566 1576 1 6 905 1564 1566 1567 2085 904 1 6 1565 1564 1567 1568 1569 1576 1 6 1565 1566 1568 2085 3766 3767 1 6 1567 1566 1569 1570 1571 3767 1 6 1568 1566 1570 1574 1575 1576 1 6 1568 1569 1571 1572 1573 1574 1 7 1568 1570 1572 3769 3767 6317 6319 1 5 1571 1570 1573 6319 6320 1 7 1572 1570 1574 6320 6361 6360 2475 1 6 1573 1570 1569 1575 1578 2475 1 6 1574 1569 1576 1577 1578 1579 1 6 1575 1569 1566 1564 1562 1577 1 6 1576 1562 1575 1579 1580 1544 1 6 1574 1575 1579 1586 1587 2475 1 6 1578 1575 1577 1580 1581 1586 1 6 1579 1577 1544 1581 1582 1545 1 6 1579 1580 1582 1584 1585 1586 1 6 1581 1580 1545 1540 1583 1584 1 6 1582 1540 1584 1602 603 602 1 6 1582 1583 1581 1585 1601 1602 1 6 1581 1584 1586 1591 1588 1601 1 6 1581 1585 1579 1578 1587 1588 1 6 1578 1586 1588 1589 2475 2476 1 6 1587 1586 1589 1590 1591 1585 1 6 1587 1588 1590 6354 6353 2476 1 6 1589 1588 1591 1592 1594 6354 1 6 1590 1588 1585 1592 1593 1601 1 6 1590 1591 1593 1594 1595 1596 1 6 1592 1591 1599 1596 1600 1601 1 6 1590 1592 1595 6358 6356 6354 1 6 1594 1592 1596 1597 3970 6358 1 6 1595 1592 1597 1598 1599 1593 1 6 1595 1596 1598 3970 3969 6556 1 6 1597 1596 1599 6556 6557 611 1 6 1598 1596 1593 1600 611 609 1 6 1599 1593 1601 1602 608 609 1 6 1600 1593 1591 1585 1584 1602 1 6 1600 1601 1584 1583 603 608 2 6 74 75 1604 428 1605 1608 2 5 1603 75 76 1608 1474 2 6 428 1603 1606 1607 1608 3519 2 6 428 1605 1607 2493 409 3516 2 6 1606 1605 3518 3516 1613 3519 2 7 1605 1603 1604 1474 1609 1610 3519 2 5 1608 1474 1610 1611 1618 2 6 1608 1609 1611 1612 1613 3519 2 6 1610 1609 1612 1616 1617 1618 2 6 1610 1611 1613 1614 1615 1616 2 7 1610 1612 1614 3518 1607 3519 3523 2 6 1613 1612 1615 3523 3524 3528 2 6 1614 1612 1616 3093 3544 3528 2 6 1615 1612 1611 1617 3093 3094 2 6 1616 1611 1618 1619 3094 1624 2 7 1617 1611 1619 1620 1475 1609 1474 2 6 1617 1618 1620 1621 1623 1624 2 5 1619 1618 1475 1476 1621 2 6 1620 1476 1477 1622 1623 1619 2 6 1621 1477 1623 1629 1630 1478 2 6 1621 1622 1619 1624 1625 1629 2 7 1619 1623 1625 1626 1617 3094 4367 2 6 1624 1623 1626 1627 1628 1629 2 5 1624 1625 1627 4376 4367 2 7 1626 1625 1628 4377 4376 2862 7215 2 6 1627 1625 1629 2861 1633 2862 2 6 1628 1625 1623 1622 1630 2861 2 6 1629 1622 1478 1479 1631 2861 2 6 1630 1479 1480 1632 1633 2861 2 6 1631 1480 1633 1634 1635 1481 2 7 1631 1632 1634 1636 2861 1628 2862 2 6 1633 1632 1635 1636 1637 1502 2 6 1634 1632 1481 1502 1485 1482 2 5 1633 1634 1637 2862 2863 2 7 1636 1634 1502 1503 1638 2863 2864 2 5 1637 1503 1639 2864 2865 2 6 1638 1503 1504 1640 2865 2866 2 6 1639 1504 1505 1641 2866 2867 2 6 1640 1505 1642 2479 2490 2867 2 6 1641 1505 1489 1176 1643 2479 2 6 1642 1176 1178 1180 1644 2479 2 6 1643 1180 1645 2479 2480 2481 2 6 1644 1180 1181 1646 2481 1650 2 6 1645 1181 1647 1648 1649 1650 2 6 1646 1181 1648 1655 3097 1182 2 6 1646 1647 1649 1653 1654 1655 2 6 1646 1648 1650 1651 1652 1653 2 6 1646 1649 1651 2481 1645 2495 2 6 1650 1649 1652 2495 2496 2497 2 6 1651 1649 1653 2497 2498 2499 2 6 1652 1649 1648 1654 2499 2500 2 6 1653 1648 1655 1656 2500 2501 2 6 1654 1648 1647 1656 1657 3097 2 6 1654 1655 1657 1658 2501 2812 2 6 1656 1655 1658 1659 2241 3097 2 6 1656 1657 1659 1660 1661 2812 2 6 1658 1657 1660 1189 1188 2241 2 6 1658 1659 1661 1662 1190 1189 2 6 1658 1660 1662 1663 1664 2812 2 6 1661 1660 1663 1670 1191 1190 2 6 1661 1662 1664 1665 1669 1670 2 6 1661 1663 1665 1666 2812 2811 2 6 1664 1663 1666 1667 1668 1669 2 6 1664 1665 1667 2811 2813 2814 2 6 1666 1665 1668 2814 2815 2816 2 6 1667 1665 1669 2816 2821 2822 2 6 1668 1665 1663 1670 1671 2822 2 6 1669 1663 1662 1191 1192 1671 2 6 1670 1192 1193 1672 2822 1669 2 6 1671 1193 1194 1673 2823 2822 2 6 1672 1194 1195 1674 3147 2823 2 6 1673 1195 1196 1675 3147 3412 2 6 1674 1196 1197 1500 1676 3412 2 6 1675 1500 1501 1677 3412 3413 2 6 1676 1501 1678 3413 3414 3415 2 6 1677 1501 1679 3415 5381 5382 2 6 1678 1501 1457 1458 1680 5381 2 6 1679 1458 1459 1681 1682 5381 2 6 1680 1459 1460 1682 1683 1684 2 6 1680 1681 1683 3774 5383 5381 2 6 1682 1681 1684 3774 3775 3776 2 6 1683 1681 1460 1685 1686 3776 2 6 1684 1460 1686 1687 1203 1202 2 6 1684 1685 1687 3776 3777 3781 2 6 1686 1685 1203 1204 1688 3781 2 6 1687 1204 1205 1689 3781 3782 2 6 1688 1205 1206 1690 1691 3782 2 6 1689 1206 1691 1692 1693 1207 2 6 1689 1690 1692 3782 3783 3784 2 6 1691 1690 1693 3784 3785 3786 2 6 1692 1690 1207 1208 1694 3786 1 6 1693 1208 1209 1695 3786 3416 1 6 1694 1209 1210 1556 1696 3416 1 6 1695 1556 1557 1697 3416 3417 1 6 1696 1557 1559 1698 3417 3418 1 6 1697 1559 1699 1703 2223 3418 1 6 1698 1559 1560 1700 1701 1703 1 6 1699 1560 1701 1702 1708 1709 1 6 1699 1700 1702 1703 1704 1705 1 6 1701 1700 1705 1706 1707 1708 1 6 1699 1701 1704 1698 2223 2224 1 6 1703 1701 1705 2224 2225 2226 1 6 1704 1701 1702 1706 2226 2227 1 6 1705 1702 1707 2227 2228 2229 1 6 1706 1702 1708 2229 2230 2231 1 6 1707 1702 1700 1709 1711 2231 1 6 1708 1700 1560 1561 1710 1711 1 6 1709 1561 1548 1549 1551 1711 1 6 1710 1551 1712 2231 1708 1709 1 6 1711 1551 1552 1713 2232 2231 1 6 1712 1552 1554 1714 2240 2232 1 6 1713 1554 1715 2240 2560 2564 1 6 1714 1554 1555 1716 2564 2565 1 6 1715 1555 1218 1219 1717 2565 1 6 1716 1219 1220 1718 2565 2566 1 6 1717 1220 1221 1719 2569 2566 1 6 1718 1221 1222 1720 3463 2569 1 6 1719 1222 1223 1721 3462 3463 1 6 1720 1223 1224 1722 3469 3462 1 6 1721 1224 1225 1723 1724 3469 1 6 1722 1225 1724 1725 1726 1226 1 6 1722 1723 1725 2172 3467 3469 1 6 1724 1723 1726 2172 2173 2174 1 6 1725 1723 1226 1227 1727 2174 1 6 1726 1227 1228 1728 2174 2175 1 6 1727 1228 1229 1729 2175 2176 1 6 1728 1229 1230 1730 1731 2176 1 6 1729 1230 1731 1732 1733 1231 1 6 1729 1730 1732 2178 2176 2808 1 6 1731 1730 1733 3404 2808 3405 1 6 1732 1730 1231 1232 1734 3405 1 6 1733 1232 1233 1735 3405 3406 1 6 1734 1233 1234 1736 3406 3407 1 6 1735 1234 1235 1737 3407 3408 1 6 1736 1235 1236 1738 3408 3409 1 6 1737 1236 1237 1739 3409 3410 1 6 1738 1237 1238 1740 3410 3411 1 6 1739 1238 1239 1741 3197 3411 1 6 1740 1239 1240 1742 3191 3197 1 6 1741 1240 1241 1743 3191 1744 1 6 1742 1241 1242 1243 1244 1744 1 7 1743 1244 1245 1745 3191 1742 3199 1 6 1744 1245 1246 1746 2893 3199 1 6 1745 1246 1247 1747 2751 2893 1 6 1746 1247 1248 1249 1748 2751 1 6 1747 1249 1749 2233 2751 2752 1 6 1748 1249 1250 1750 2233 2234 1 6 1749 1250 1251 1751 2237 2234 1 6 1750 1251 1252 1752 2247 2237 1 6 1751 1252 1253 1753 2247 2253 1 6 1752 1253 1254 1754 2253 2254 1 6 1753 1254 1255 1755 2254 2255 1 6 1754 1255 1256 1756 2255 2256 1 6 1755 1256 1257 1258 1757 2256 1 6 1756 1258 1758 2256 2257 2258 1 6 1757 1258 1259 1759 2258 2259 1 6 1758 1259 1260 1760 2259 2260 1 6 1759 1260 1261 1761 2260 2261 1 6 1760 1261 1262 1762 2261 2262 1 6 1761 1262 1263 1763 2262 2263 1 6 1762 1263 1264 1764 2263 2264 1 6 1763 1264 1265 1765 2264 2265 1 6 1764 1265 1266 1766 2265 2266 1 6 1765 1266 1267 1767 2266 2267 1 6 1766 1267 1268 1768 2267 2268 1 6 1767 1268 1269 1769 2268 2269 1 6 1768 1269 1270 1770 2269 2270 1 6 1769 1270 1271 1771 2270 2271 1 6 1770 1271 1272 1772 2271 2272 1 6 1771 1272 1273 1773 2272 2273 1 6 1772 1273 1274 1774 2273 2274 1 6 1773 1274 1275 1775 2274 2275 1 6 1774 1275 1276 1776 2275 2276 1 6 1775 1276 1277 1777 2276 2277 1 6 1776 1277 1278 1778 2277 2278 1 6 1777 1278 1279 1779 2278 2279 1 6 1778 1279 1280 1780 2279 2280 1 6 1779 1280 1281 1781 2280 2281 1 6 1780 1281 1282 1782 2281 2282 1 6 1781 1282 1283 1783 2282 2283 1 6 1782 1283 1284 1784 2283 2284 1 6 1783 1284 1285 1785 2284 2285 1 6 1784 1285 1286 1786 2285 2286 1 6 1785 1286 1287 1787 2286 2287 1 6 1786 1287 1288 1788 2287 2288 1 6 1787 1288 1289 1789 2288 2289 1 6 1788 1289 1290 1790 2289 2290 1 6 1789 1290 1291 1791 2290 2291 1 6 1790 1291 1292 1792 2291 2292 1 6 1791 1292 1293 1793 2292 2293 1 6 1792 1293 1294 1794 2293 2294 1 6 1793 1294 1295 1795 2294 2295 1 6 1794 1295 1296 1796 2098 2295 1 6 1795 1296 1297 1797 2098 2099 1 6 1796 1297 1298 1300 2099 2100 1 6 1307 1308 1799 2106 2107 2108 1 6 1798 1308 1309 1800 2108 2109 1 6 1799 1309 1310 1801 2109 2110 1 6 1800 1310 1311 1802 2110 2111 1 6 1801 1311 1312 1803 2111 2112 1 6 1802 1312 1313 1804 2112 2113 1 6 1803 1313 1314 1805 2113 2114 1 6 1804 1314 1315 1806 2114 2115 1 6 1805 1315 1316 1807 2115 2116 1 6 1806 1316 1317 1808 2116 2117 1 6 1807 1317 1318 1809 2117 2118 1 6 1808 1318 1319 1810 2118 2119 1 6 1809 1319 1320 1811 2119 2120 1 6 1810 1320 1321 1812 2120 2121 1 6 1811 1321 1322 1813 2121 2122 1 6 1812 1322 1323 1814 2122 2123 1 6 1813 1323 1324 1815 2123 2124 1 6 1814 1324 1325 1816 2124 2125 1 6 1815 1325 1326 1817 2125 2126 1 6 1816 1326 1327 1818 2126 2127 1 6 1817 1327 1328 1819 2127 2128 1 6 1818 1328 1329 1820 2128 2129 1 6 1819 1329 1330 1821 2129 2130 1 6 1820 1330 1331 1822 2130 2131 1 6 1821 1331 1332 1823 2131 2132 1 6 1822 1332 1333 1824 2132 2133 1 6 1823 1333 1334 1825 2133 2134 1 6 1824 1334 1335 1826 2134 2135 2 6 1825 1335 1336 1337 1827 2135 2 6 1826 1337 1828 2135 2136 2137 2 6 1827 1337 1338 1829 2137 2138 2 6 1828 1338 1339 1830 2138 2139 2 6 1829 1339 1831 2139 2140 2141 2 6 1830 1339 1340 1341 1832 2141 2 6 1831 1341 1342 1833 2141 2142 2 6 1832 1342 1343 1834 2142 2143 2 6 1833 1343 1344 1835 2143 2144 2 6 1834 1344 1345 1836 2144 2145 2 6 1835 1345 1346 1347 1837 2145 2 6 1836 1347 1838 2150 2145 2165 2 6 1837 1347 1348 1839 2165 2166 2 6 1838 1348 1349 1840 2166 2167 2 6 1839 1349 1350 1841 2167 2168 2 6 1840 1350 1351 1842 2171 2168 2 6 1841 1351 1352 1843 2349 2171 2 6 1842 1352 1353 1844 2349 2350 2 6 1843 1353 1354 1845 2350 2351 2 6 1844 1354 1355 1846 2351 2352 2 6 1845 1355 1356 1847 2352 2353 2 6 1846 1356 1357 1848 2353 2354 2 6 1847 1357 1358 1849 2354 2355 2 6 1848 1358 1359 1850 2355 2356 2 6 1849 1359 1360 1851 2356 2357 2 6 1850 1360 1361 1852 2357 2358 2 6 1851 1361 1362 1853 2358 2359 2 6 1852 1362 1363 1854 2359 2360 1 6 1853 1363 1364 1855 2360 2361 1 6 1854 1364 1365 1856 1966 2361 1 6 1855 1365 1366 1857 1966 1967 1 6 1856 1366 1367 1858 1967 1968 1 6 1857 1367 1368 1859 1968 1969 1 6 1858 1368 1369 1860 1969 1970 1 6 1859 1369 1370 1861 1970 1971 1 6 1860 1370 1371 1862 1971 1972 1 6 1861 1371 1372 1863 1972 1973 1 6 1862 1372 1373 1864 1973 1974 1 6 1863 1373 1374 1865 1974 1975 1 6 1864 1374 1375 1866 1975 1976 1 6 1865 1375 1376 1867 1976 1977 1 6 1866 1376 1377 1868 1977 1978 1 6 1867 1377 1378 1869 1978 1979 1 6 1868 1378 1379 1870 1979 1980 1 6 1869 1379 1380 1871 1980 1981 1 6 1870 1380 1381 1872 1981 1982 1 6 1871 1381 1382 1873 1982 1983 1 6 1872 1382 1383 1874 1983 1984 1 6 1873 1383 1384 1875 1984 1985 1 6 1874 1384 1385 1876 1985 1986 1 6 1875 1385 1386 1877 1986 1987 1 6 1876 1386 1387 1878 1987 1988 1 6 1877 1387 1388 1879 1988 1989 1 6 1878 1388 1389 1880 1989 1990 1 6 1879 1389 1390 1881 1990 1991 1 6 1880 1390 1391 1882 1991 1992 1 6 1881 1391 1392 1883 1992 1993 1 6 1882 1392 1393 1884 1993 1994 1 6 1883 1393 1394 1885 1994 1995 1 6 1884 1394 1395 1886 1995 1996 1 6 1885 1395 1396 1887 1996 1997 1 6 1886 1396 1397 1888 1997 1998 1 6 1887 1397 1398 1889 1998 1999 1 6 1888 1398 1399 1890 1999 2000 1 6 1889 1399 1400 1891 2000 2001 1 6 1890 1400 1401 1892 2001 2002 1 6 1891 1401 1402 1893 2002 2003 1 6 1892 1402 1403 1894 2003 2004 1 6 1893 1403 1404 1895 2004 2005 1 6 1894 1404 1405 1896 2005 2006 1 6 1895 1405 1406 1897 2006 2007 1 6 1896 1406 1407 1898 2007 2008 1 6 1897 1407 1408 1899 2008 2009 1 6 1898 1408 1409 1900 2009 2010 1 6 1899 1409 1410 1901 2010 2011 1 6 1900 1410 1411 1902 2011 2012 1 6 1901 1411 1412 1903 2012 2013 1 6 1902 1412 1413 1904 2013 2014 1 6 1903 1413 1414 1905 2014 2015 1 6 1904 1414 1415 1906 2015 2016 1 6 1905 1415 1416 1907 2016 2017 1 6 1906 1416 1417 1908 2017 2018 1 6 1907 1417 1418 1909 2018 2019 1 6 1908 1418 1419 1910 2019 2020 1 6 1909 1419 1420 1911 2020 2021 1 6 1910 1420 1421 1912 2021 2022 1 6 1911 1421 1422 1913 2022 2023 1 6 1912 1422 1423 1914 2023 2024 1 6 1913 1423 1424 1915 2024 2025 1 6 1914 1424 1425 1916 2025 2026 1 6 1915 1425 1426 1917 2026 2027 1 6 1916 1426 1427 1918 2027 2028 1 6 1917 1427 1428 1919 2028 2029 1 6 1918 1428 1429 1920 2029 2030 1 6 1919 1429 1430 1921 2030 2031 1 6 1920 1430 1431 1922 2031 2032 1 6 1921 1431 1432 1923 2032 2033 1 6 1922 1432 1433 1924 2033 2034 1 6 1923 1433 1434 1925 2034 2035 1 6 1924 1434 1435 1926 2035 1927 1 6 1925 1435 1436 1437 1438 1927 1 7 1926 1438 1439 1928 2035 1925 2036 1 6 1927 1439 1440 1929 2036 2037 1 6 1928 1440 1441 1930 2037 2038 1 6 1929 1441 1442 1931 2038 2039 1 6 1930 1442 1443 1932 2039 2040 1 7 1931 1443 1444 1461 1933 2040 2041 1 5 1932 1461 1934 2041 2042 1 6 1933 1461 1462 1935 2042 2043 1 6 1934 1462 1463 1936 2043 2044 1 6 1935 1463 1464 1937 2044 2045 1 6 1936 1464 1465 1466 1938 2045 1 6 1937 1466 1939 2045 2046 2047 1 6 1938 1466 1467 1940 2047 2048 1 6 1939 1467 1468 1469 1941 2048 1 6 1940 1469 1942 2048 2049 2050 1 6 1941 1469 1470 1943 2050 2051 1 6 1942 1470 1471 1944 2051 2052 1 6 1943 1471 1945 2052 2053 2054 1 6 1944 1471 1472 1946 2054 1947 1 6 1945 1472 1473 1490 1491 1947 1 6 1946 1491 1948 2054 1945 2055 1 6 1947 1491 1492 1949 1950 2055 1 6 1948 1492 1950 1951 1495 1493 1 6 1948 1949 1951 2055 2056 2057 1 6 1950 1949 1495 1952 2057 2058 1 6 1951 1495 1496 1530 1953 2058 1 6 1952 1530 1531 1954 2058 2059 1 6 1953 1531 1532 1955 2059 2060 1 6 1954 1532 1534 1956 2060 2061 1 6 1955 1534 1957 1958 2061 2062 1 6 1956 1534 1958 1959 1960 1535 1 6 1956 1957 1959 2062 2063 2064 1 6 1958 1957 1960 2064 2065 2066 1 6 1959 1957 1535 1541 1961 2066 1 6 1960 1541 1962 2066 2067 2068 1 6 1961 1541 1167 1168 1963 2068 1 6 1962 1168 1964 1965 2070 2068 1 6 1963 1168 1965 887 886 1169 1 6 1963 1964 887 2072 2070 2075 1 6 1855 1856 1967 2361 2362 2363 1 6 1966 1856 1857 1968 2363 2364 1 6 1967 1857 1858 1969 2364 2365 1 6 1968 1858 1859 1970 2365 2366 1 6 1969 1859 1860 1971 2366 2367 1 6 1970 1860 1861 1972 2367 2368 1 6 1971 1861 1862 1973 2368 2369 1 6 1972 1862 1863 1974 2369 2370 1 6 1973 1863 1864 1975 2370 2371 1 6 1974 1864 1865 1976 2371 2372 1 6 1975 1865 1866 1977 2372 2373 1 6 1976 1866 1867 1978 2373 2374 1 6 1977 1867 1868 1979 2374 2375 1 6 1978 1868 1869 1980 2375 2376 1 6 1979 1869 1870 1981 2376 2377 1 6 1980 1870 1871 1982 2377 2378 1 6 1981 1871 1872 1983 2378 2379 1 6 1982 1872 1873 1984 2379 2380 1 6 1983 1873 1874 1985 2380 2381 1 6 1984 1874 1875 1986 2381 2382 1 6 1985 1875 1876 1987 2382 2383 1 6 1986 1876 1877 1988 2383 2384 1 6 1987 1877 1878 1989 2384 2385 1 6 1988 1878 1879 1990 2385 2386 1 6 1989 1879 1880 1991 2386 2387 1 6 1990 1880 1881 1992 2387 2388 1 6 1991 1881 1882 1993 2388 2389 1 6 1992 1882 1883 1994 2389 2390 1 6 1993 1883 1884 1995 2390 2391 1 6 1994 1884 1885 1996 2391 2392 1 6 1995 1885 1886 1997 2392 2393 1 6 1996 1886 1887 1998 2393 2394 1 6 1997 1887 1888 1999 2394 2395 1 6 1998 1888 1889 2000 2395 2396 1 6 1999 1889 1890 2001 2396 2397 1 6 2000 1890 1891 2002 2397 2398 1 6 2001 1891 1892 2003 2398 2399 1 6 2002 1892 1893 2004 2399 2400 1 6 2003 1893 1894 2005 2400 2401 1 6 2004 1894 1895 2006 2401 2402 1 6 2005 1895 1896 2007 2402 2403 1 6 2006 1896 1897 2008 2403 2404 1 6 2007 1897 1898 2009 2404 2405 1 6 2008 1898 1899 2010 2405 2406 1 6 2009 1899 1900 2011 2406 2407 1 6 2010 1900 1901 2012 2407 2408 1 6 2011 1901 1902 2013 2408 2409 1 6 2012 1902 1903 2014 2409 2410 1 6 2013 1903 1904 2015 2410 2411 1 6 2014 1904 1905 2016 2411 2412 1 6 2015 1905 1906 2017 2412 2413 1 6 2016 1906 1907 2018 2413 2414 1 6 2017 1907 1908 2019 2414 2415 1 6 2018 1908 1909 2020 2415 2416 1 6 2019 1909 1910 2021 2416 2417 1 6 2020 1910 1911 2022 2417 2418 1 6 2021 1911 1912 2023 2418 2419 1 6 2022 1912 1913 2024 2419 2420 1 6 2023 1913 1914 2025 2420 2421 1 6 2024 1914 1915 2026 2421 2422 1 6 2025 1915 1916 2027 2422 2423 1 6 2026 1916 1917 2028 2423 2424 1 6 2027 1917 1918 2029 2424 2425 1 6 2028 1918 1919 2030 2425 2426 1 6 2029 1919 1920 2031 2426 2427 1 6 2030 1920 1921 2032 2427 2428 1 6 2031 1921 1922 2033 2428 2429 1 6 2032 1922 1923 2034 2429 2430 1 6 2033 1923 1924 2035 2430 2431 1 6 2034 1924 1925 1927 2036 2431 1 5 2035 1927 1928 2037 2431 1 6 2036 1928 1929 2038 2431 2432 1 6 2037 1929 1930 2039 2432 2433 1 6 2038 1930 1931 2040 2433 2434 1 7 2039 1931 1932 2041 2434 2435 2436 1 5 2040 1932 1933 2042 2436 1 7 2041 1933 1934 2043 2436 2437 2438 1 6 2042 1934 1935 2044 2438 2439 1 6 2043 1935 1936 2045 2439 2440 1 6 2044 1936 1937 1938 2046 2440 1 6 2045 1938 2047 2440 2441 2442 1 6 2046 1938 1939 2048 2442 2443 1 6 2047 1939 1940 1941 2049 2443 1 6 2048 1941 2050 2443 2444 2448 1 6 2049 1941 1942 2051 2448 2449 1 6 2050 1942 1943 2052 2449 2450 1 6 2051 1943 1944 2053 2450 2451 1 6 2052 1944 2054 2451 2452 2453 1 6 2053 1944 1945 1947 2055 2453 1 6 2054 1947 1948 1950 2056 2453 1 6 2055 1950 2057 2453 2454 2455 1 6 2056 1950 1951 2058 2455 2456 1 6 2057 1951 1952 1953 2059 2456 1 6 2058 1953 1954 2060 2456 2457 1 6 2059 1954 1955 2061 2457 2458 1 6 2060 1955 1956 2062 2458 2459 1 6 2061 1956 1958 2063 2459 2460 1 6 2062 1958 2064 2460 2461 2462 1 6 2063 1958 1959 2065 2462 2463 1 6 2064 1959 2066 2463 2464 2465 1 6 2065 1959 1960 1961 2067 2465 1 6 2066 1961 2068 2069 2465 2466 1 6 2067 1961 1962 2069 2070 1963 1 6 2067 2068 2070 2071 2466 2469 1 6 2069 2068 1963 2071 2072 1965 1 6 2069 2070 2072 2073 2469 2470 1 6 2071 2070 1965 2073 2074 2075 1 6 2071 2072 2074 2473 2470 2086 1 6 2073 2072 2075 2076 2078 2086 1 6 2074 2072 1965 887 888 2076 1 6 2075 888 889 2077 2078 2074 1 6 2076 889 2078 2079 2080 2081 1 6 2076 2077 2079 2074 2086 2087 1 6 2078 2077 2080 2096 2087 2082 1 6 2079 2077 2081 898 901 2082 1 6 2080 2077 889 890 894 898 1 6 2080 901 903 2083 2096 2079 1 6 2082 903 2084 2096 2095 9776 1 6 2083 903 904 2085 6093 9776 1 6 2084 904 1565 1567 3766 6093 1 6 2074 2078 2087 2088 2473 2073 1 6 2086 2078 2088 2089 2096 2079 1 6 2086 2087 2089 2090 2091 2473 1 6 2088 2087 2090 2094 2095 2096 1 6 2088 2089 2091 2092 2093 2094 1 6 2088 2090 2092 2489 2472 2473 1 6 2091 2090 2093 2489 5947 5948 1 6 2092 2090 2094 3135 5947 3132 1 6 2093 2090 2089 2095 3131 3132 1 6 2094 2089 2096 3131 2083 9776 1 6 2095 2089 2087 2079 2082 2083 1 6 631 403 633 650 649 404 1 6 1795 1796 2099 2295 2296 2297 1 6 2098 1796 1797 2100 2297 2101 1 5 2099 1797 1300 1301 2101 1 6 2100 1301 1302 2102 2297 2099 1 6 2101 1302 1303 2103 2297 2298 1 6 2102 1303 1304 2104 2298 2299 1 6 2103 1304 1305 2105 2299 2300 1 6 2104 1305 1306 2106 2300 2301 1 7 2105 1306 1307 1798 2107 2301 2302 1 5 2106 1798 2108 2302 2303 1 6 2107 1798 1799 2109 2303 2304 1 6 2108 1799 1800 2110 2304 2305 1 6 2109 1800 1801 2111 2305 2306 1 6 2110 1801 1802 2112 2306 2307 1 6 2111 1802 1803 2113 2307 2308 1 6 2112 1803 1804 2114 2308 2309 1 6 2113 1804 1805 2115 2309 2310 1 6 2114 1805 1806 2116 2310 2311 1 6 2115 1806 1807 2117 2311 2312 1 6 2116 1807 1808 2118 2312 2313 1 6 2117 1808 1809 2119 2313 2314 1 6 2118 1809 1810 2120 2314 2315 1 6 2119 1810 1811 2121 2315 2316 1 6 2120 1811 1812 2122 2316 2317 1 6 2121 1812 1813 2123 2317 2318 1 6 2122 1813 1814 2124 2318 2319 1 6 2123 1814 1815 2125 2319 2320 1 6 2124 1815 1816 2126 2320 2321 1 6 2125 1816 1817 2127 2321 2322 1 6 2126 1817 1818 2128 2322 2323 1 6 2127 1818 1819 2129 2323 2324 1 6 2128 1819 1820 2130 2324 2325 1 6 2129 1820 1821 2131 2325 2326 1 6 2130 1821 1822 2132 2326 2327 1 6 2131 1822 1823 2133 2151 2327 1 6 2132 1823 1824 2134 2151 2152 1 6 2133 1824 1825 2135 2152 2153 1 6 2134 1825 1826 1827 2136 2153 2 6 2135 1827 2137 2153 2154 2155 2 6 2136 1827 1828 2138 2155 2156 2 6 2137 1828 1829 2139 2156 2157 2 6 2138 1829 1830 2140 2157 2158 2 6 2139 1830 2141 2146 2158 2159 2 6 2140 1830 1831 1832 2142 2146 2 6 2141 1832 1833 2143 2146 2147 2 6 2142 1833 1834 2144 2147 2148 2 6 2143 1834 1835 2145 2148 2149 2 6 2144 1835 1836 2149 2150 1837 2 6 2140 2141 2142 2147 2159 2160 2 6 2146 2142 2143 2148 2160 2161 2 6 2147 2143 2144 2149 2161 2162 2 6 2148 2144 2145 2150 2162 2163 2 6 2149 2145 1837 2163 2164 2165 1 6 2132 2133 2152 2327 2328 2329 1 6 2151 2133 2134 2153 2329 2330 1 6 2152 2134 2135 2136 2154 2330 2 6 2153 2136 2155 2330 2331 2332 2 6 2154 2136 2137 2156 2332 2333 2 6 2155 2137 2138 2157 2333 2334 2 6 2156 2138 2139 2158 2334 2335 2 6 2157 2139 2140 2159 2335 2336 2 6 2158 2140 2146 2160 2336 2337 2 6 2159 2146 2147 2161 2337 2338 2 6 2160 2147 2148 2162 2338 2339 2 6 2161 2148 2149 2163 2339 2340 2 6 2162 2149 2150 2164 2340 2341 2 6 2163 2150 2165 2341 2342 2343 2 6 2164 2150 1837 1838 2166 2343 2 6 2165 1838 1839 2167 2343 2344 2 6 2166 1839 1840 2168 2169 2344 2 6 2167 1840 2169 2170 2171 1841 2 6 2167 2168 2170 2344 2345 2346 2 6 2169 2168 2171 2346 2347 2348 2 6 2170 2168 1841 2348 2349 1842 1 6 1724 1725 2173 3468 3467 4747 1 6 2172 1725 2174 2804 3395 4747 1 6 2173 1725 1726 1727 2175 2804 1 6 2174 1727 1728 2176 2177 2804 1 6 2175 1728 2177 2178 1731 1729 1 6 2175 2176 2178 2804 2805 2806 1 6 2177 2176 1731 2806 2807 2808 1 6 27 28 2180 2181 3851 3852 1 6 2179 28 29 2181 2182 2503 1 6 2179 2180 2182 2183 2199 3851 1 6 2181 2180 2183 2184 2502 2503 1 6 2181 2182 2184 2185 2198 2199 1 6 2183 2182 2185 2186 2193 2502 1 6 2183 2184 2186 2187 2197 2198 1 6 2185 2184 2187 2188 2192 2193 1 6 2185 2186 2188 2189 2197 9713 1 6 2187 2186 2189 2190 2191 2192 1 7 2187 2188 2190 9709 9708 9712 9713 1 5 2189 2188 2191 9710 9709 1 6 2190 2188 2192 2510 2512 9710 1 6 2191 2188 2186 2193 2510 2506 1 6 2192 2186 2184 2502 2504 2506 1 6 415 39 40 2195 9704 6488 1 6 2194 40 41 2196 6488 9705 1 7 2195 41 42 9705 43 9771 9773 1 6 2185 2187 2198 9713 9714 9720 1 6 2185 2197 2183 2199 2200 9720 1 6 2183 2198 2200 2201 2181 3851 1 6 2199 2198 2201 2202 9720 2217 1 6 2199 2200 2202 2203 3129 3851 1 6 2201 2200 2203 2204 2217 2208 1 6 2201 2202 2204 2205 3129 3130 1 6 2203 2202 2205 2206 2207 2208 1 6 2203 2204 2206 3130 1525 4250 1 6 2205 2204 2207 3343 3341 4250 1 6 2206 2204 2208 2209 3343 3344 1 6 2207 2204 2209 2210 2217 2202 1 6 2207 2208 2210 2211 3344 3345 1 6 2209 2208 2211 2212 2216 2217 1 6 2209 2210 2212 2213 3348 3345 1 6 2211 2210 2213 2214 2215 2216 1 6 2211 2212 2214 6522 6523 3348 1 6 2213 2212 2215 9716 9719 6522 1 6 2214 2212 2216 9716 9715 9714 1 6 2215 2212 2210 2217 9714 9720 1 6 2216 2210 2208 2202 9720 2200 1 6 408 59 60 2219 2545 2546 1 6 2218 60 61 2220 2549 2546 1 6 2219 61 62 2221 2549 2551 1 6 2220 62 63 2222 2551 6702 1 6 2221 63 6701 6700 6702 64 1 6 1698 1703 2224 3418 3419 3420 1 6 2223 1703 1704 2225 3420 3421 1 6 2224 1704 2226 3421 3422 3426 1 6 2225 1704 1705 2227 3426 3427 1 6 2226 1705 1706 2228 3427 3428 1 6 2227 1706 2229 3428 3429 3430 1 6 2228 1706 1707 2230 2238 3430 1 6 2229 1707 2231 2232 2238 2239 1 6 2230 1707 2232 1712 1711 1708 1 6 2230 2231 1712 2239 2240 1713 1 6 1748 1749 2234 2235 2242 2752 1 6 2233 1749 2235 2236 2237 1750 1 6 2233 2234 2236 2242 2243 2244 1 6 2235 2234 2237 2244 2245 2246 1 6 2236 2234 1750 2246 2247 1751 1 6 2229 2230 2239 3430 3431 3435 1 6 2238 2230 2232 2240 3435 2561 1 6 2239 2232 1713 1714 2560 2561 2 6 1187 1188 1659 1657 3097 1184 1 6 2233 2235 2243 2752 2753 2754 1 6 2242 2235 2244 2754 2755 2756 1 6 2243 2235 2236 2245 2756 2757 1 6 2244 2236 2246 2757 2758 2759 1 6 2245 2236 2237 2247 2759 2760 1 6 2246 2237 1751 1752 2253 2760 1 6 34 35 2249 3331 3332 3333 1 6 2248 35 36 2250 3336 3333 1 6 2249 36 37 416 2251 3336 1 7 2250 416 2252 6490 6491 9706 3336 1 5 2251 416 415 6490 9704 1 6 2247 1752 1753 2254 2760 2761 1 6 2253 1753 1754 2255 2761 2762 1 6 2254 1754 1755 2256 2762 2763 1 6 2255 1755 1756 1757 2257 2763 1 6 2256 1757 2258 2763 2764 2765 1 6 2257 1757 1758 2259 2765 2766 1 6 2258 1758 1759 2260 2766 2767 1 6 2259 1759 1760 2261 2767 2768 1 6 2260 1760 1761 2262 2768 2769 1 6 2261 1761 1762 2263 2571 2769 1 6 2262 1762 1763 2264 2571 2572 1 6 2263 1763 1764 2265 2572 2573 1 6 2264 1764 1765 2266 2573 2574 1 6 2265 1765 1766 2267 2574 2575 1 6 2266 1766 1767 2268 2575 2576 1 6 2267 1767 1768 2269 2576 2577 1 6 2268 1768 1769 2270 2577 2578 1 6 2269 1769 1770 2271 2578 2579 1 6 2270 1770 1771 2272 2579 2580 1 6 2271 1771 1772 2273 2580 2581 1 6 2272 1772 1773 2274 2581 2582 1 6 2273 1773 1774 2275 2582 2583 1 6 2274 1774 1775 2276 2583 2584 1 6 2275 1775 1776 2277 2584 2585 1 6 2276 1776 1777 2278 2585 2586 1 6 2277 1777 1778 2279 2586 2587 1 6 2278 1778 1779 2280 2587 2588 1 6 2279 1779 1780 2281 2588 2589 1 6 2280 1780 1781 2282 2589 2590 1 6 2281 1781 1782 2283 2590 2591 1 6 2282 1782 1783 2284 2591 2592 1 6 2283 1783 1784 2285 2592 2593 1 6 2284 1784 1785 2286 2593 2594 1 6 2285 1785 1786 2287 2594 2595 1 6 2286 1786 1787 2288 2595 2596 1 6 2287 1787 1788 2289 2596 2597 1 6 2288 1788 1789 2290 2597 2598 1 6 2289 1789 1790 2291 2598 2599 1 6 2290 1790 1791 2292 2599 2600 1 6 2291 1791 1792 2293 2600 2601 1 6 2292 1792 1793 2294 2601 2602 1 6 2293 1793 1794 2295 2602 2603 1 6 2294 1794 1795 2098 2296 2603 1 6 2295 2098 2297 2603 2604 2605 1 7 2296 2098 2099 2101 2102 2298 2605 1 6 2297 2102 2103 2299 2605 2606 1 6 2298 2103 2104 2300 2606 2607 1 6 2299 2104 2105 2301 2607 2608 1 6 2300 2105 2106 2302 2608 2609 1 6 2301 2106 2107 2303 2609 2610 1 6 2302 2107 2108 2304 2610 2611 1 6 2303 2108 2109 2305 2611 2612 1 6 2304 2109 2110 2306 2612 2613 1 6 2305 2110 2111 2307 2613 2614 1 6 2306 2111 2112 2308 2614 2615 1 6 2307 2112 2113 2309 2615 2616 1 6 2308 2113 2114 2310 2619 2616 1 6 2309 2114 2115 2311 2619 2620 1 6 2310 2115 2116 2312 2620 2621 1 6 2311 2116 2117 2313 2621 2622 1 6 2312 2117 2118 2314 2622 2623 1 6 2313 2118 2119 2315 2623 2624 1 6 2314 2119 2120 2316 2624 2625 1 6 2315 2120 2121 2317 2625 2626 1 6 2316 2121 2122 2318 2626 2627 1 6 2317 2122 2123 2319 2627 2628 1 6 2318 2123 2124 2320 2628 2629 1 6 2319 2124 2125 2321 2629 2630 1 6 2320 2125 2126 2322 2630 2631 1 6 2321 2126 2127 2323 2631 2632 1 6 2322 2127 2128 2324 2632 2633 1 6 2323 2128 2129 2325 2633 2634 1 6 2324 2129 2130 2326 2634 2635 1 6 2325 2130 2131 2327 2635 2636 1 6 2326 2131 2132 2151 2328 2636 1 6 2327 2151 2329 2636 2637 2638 1 6 2328 2151 2152 2330 2641 2638 1 6 2329 2152 2153 2154 2331 2641 2 6 2330 2154 2332 2642 2641 2643 2 6 2331 2154 2155 2333 2643 2644 2 6 2332 2155 2156 2334 2644 2645 2 6 2333 2156 2157 2335 2645 2646 2 6 2334 2157 2158 2336 2646 2647 2 6 2335 2158 2159 2337 2647 2648 2 6 2336 2159 2160 2338 2648 2649 2 6 2337 2160 2161 2339 2649 2650 2 6 2338 2161 2162 2340 2650 2651 2 6 2339 2162 2163 2341 2651 2652 2 6 2340 2163 2164 2342 2652 2653 2 6 2341 2164 2343 2653 2654 2655 2 6 2342 2164 2165 2166 2344 2655 2 6 2343 2166 2167 2169 2345 2655 2 6 2344 2169 2346 2655 2656 2657 2 6 2345 2169 2170 2347 2657 2658 2 6 2346 2170 2348 2658 2659 2660 2 6 2347 2170 2171 2349 2660 2661 2 6 2348 2171 1842 1843 2350 2661 2 6 2349 1843 1844 2351 2661 2662 2 6 2350 1844 1845 2352 2662 2663 2 6 2351 1845 1846 2353 2663 2664 2 6 2352 1846 1847 2354 2664 2665 2 6 2353 1847 1848 2355 2665 2666 2 6 2354 1848 1849 2356 2666 2667 2 6 2355 1849 1850 2357 2667 2668 2 6 2356 1850 1851 2358 2668 2669 2 6 2357 1851 1852 2359 2669 2670 2 6 2358 1852 1853 2360 2670 2671 2 6 2359 1853 1854 2361 2671 2672 1 6 2360 1854 1855 1966 2362 2672 1 6 2361 1966 2363 2672 2673 2674 1 6 2362 1966 1967 2364 2674 2675 1 6 2363 1967 1968 2365 2675 2676 1 6 2364 1968 1969 2366 2676 2677 1 6 2365 1969 1970 2367 2677 2678 1 6 2366 1970 1971 2368 2678 2679 1 6 2367 1971 1972 2369 2679 2680 1 6 2368 1972 1973 2370 2680 2681 1 6 2369 1973 1974 2371 2681 2682 1 6 2370 1974 1975 2372 2682 2683 1 6 2371 1975 1976 2373 2683 2684 1 6 2372 1976 1977 2374 2684 2685 1 6 2373 1977 1978 2375 2685 2686 1 6 2374 1978 1979 2376 2686 2687 1 6 2375 1979 1980 2377 2687 2688 1 6 2376 1980 1981 2378 2688 2689 1 6 2377 1981 1982 2379 2689 2690 1 6 2378 1982 1983 2380 2690 2691 1 6 2379 1983 1984 2381 2691 2692 1 6 2380 1984 1985 2382 2692 2693 1 6 2381 1985 1986 2383 2693 2694 1 6 2382 1986 1987 2384 2694 2695 1 6 2383 1987 1988 2385 2695 2696 1 6 2384 1988 1989 2386 2696 2697 1 6 2385 1989 1990 2387 2697 2698 1 6 2386 1990 1991 2388 2698 2699 1 6 2387 1991 1992 2389 2699 2700 1 6 2388 1992 1993 2390 2700 2701 1 6 2389 1993 1994 2391 2701 2702 1 6 2390 1994 1995 2392 2702 2703 1 6 2391 1995 1996 2393 2703 2704 1 6 2392 1996 1997 2394 2704 2705 1 6 2393 1997 1998 2395 2705 2706 1 6 2394 1998 1999 2396 2706 2707 1 6 2395 1999 2000 2397 2707 2708 1 6 2396 2000 2001 2398 2708 2709 1 6 2397 2001 2002 2399 2513 2709 1 6 2398 2002 2003 2400 2513 2514 1 6 2399 2003 2004 2401 2514 2515 1 6 2400 2004 2005 2402 2515 2516 1 6 2401 2005 2006 2403 2516 2517 1 6 2402 2006 2007 2404 2517 2518 1 6 2403 2007 2008 2405 2518 2519 1 6 2404 2008 2009 2406 2519 2520 1 6 2405 2009 2010 2407 2520 2521 1 6 2406 2010 2011 2408 2521 2522 1 6 2407 2011 2012 2409 2522 2523 1 6 2408 2012 2013 2410 2523 2524 1 6 2409 2013 2014 2411 2524 2525 1 6 2410 2014 2015 2412 2525 2526 1 6 2411 2015 2016 2413 2526 2527 1 6 2412 2016 2017 2414 2527 2528 1 6 2413 2017 2018 2415 2528 2529 1 6 2414 2018 2019 2416 2529 2530 1 6 2415 2019 2020 2417 2530 2531 1 6 2416 2020 2021 2418 2531 2532 1 6 2417 2021 2022 2419 2532 2533 1 6 2418 2022 2023 2420 2533 2534 1 6 2419 2023 2024 2421 2534 2535 1 6 2420 2024 2025 2422 2535 2536 1 6 2421 2025 2026 2423 2536 2537 1 6 2422 2026 2027 2424 2537 2538 1 6 2423 2027 2028 2425 2538 2539 1 6 2424 2028 2029 2426 2539 2540 1 6 2425 2029 2030 2427 2540 2541 1 6 2426 2030 2031 2428 2541 2542 1 6 2427 2031 2032 2429 2542 2543 1 6 2428 2032 2033 2430 2543 2544 1 6 2429 2033 2034 2431 2544 2432 1 6 2430 2034 2035 2036 2037 2432 1 7 2431 2037 2038 2433 2544 2430 2556 1 6 2432 2038 2039 2434 2556 2557 1 6 2433 2039 2040 2435 2557 2558 1 6 2434 2040 2436 2558 2559 2437 1 5 2435 2040 2041 2042 2437 1 6 2436 2042 2438 2559 2435 2745 1 6 2437 2042 2043 2439 2745 2746 1 7 2438 2043 2044 2440 2746 2747 2748 1 6 2439 2044 2045 2046 2441 2748 1 6 2440 2046 2442 2748 2749 2750 1 6 2441 2046 2047 2443 2750 2445 1 6 2442 2047 2048 2049 2444 2445 1 6 2443 2049 2445 2446 2447 2448 1 6 2443 2444 2446 2750 2442 3060 1 6 2445 2444 2447 3060 3061 3062 1 6 2446 2444 2448 3062 3063 3064 1 6 2447 2444 2049 2050 2449 3064 1 6 2448 2050 2051 2450 3064 3065 1 6 2449 2051 2052 2451 3065 3066 1 6 2450 2052 2053 2452 3066 3067 1 6 2451 2053 2453 3067 3068 2454 1 6 2452 2053 2054 2055 2056 2454 1 6 2453 2056 2455 3068 2452 3074 1 6 2454 2056 2057 2456 3074 3075 1 6 2455 2057 2058 2059 2457 3075 1 6 2456 2059 2060 2458 3075 3076 1 6 2457 2060 2061 2459 3076 3077 1 6 2458 2061 2062 2460 3077 3078 1 6 2459 2062 2063 2461 3078 3079 1 6 2460 2063 2462 3079 3080 3081 1 6 2461 2063 2064 2463 3081 3082 1 6 2462 2064 2065 2464 3082 3083 1 6 2463 2065 2465 2467 2482 3083 1 6 2464 2065 2066 2067 2466 2467 1 6 2465 2067 2069 2467 2468 2469 1 6 2465 2466 2468 2464 2482 2483 1 6 2467 2466 2469 2471 2477 2483 1 6 2468 2466 2069 2071 2470 2471 1 6 2469 2071 2471 2472 2473 2073 1 6 2469 2470 2472 2468 2477 2478 1 6 2471 2470 2473 2489 2478 2091 1 6 2472 2470 2073 2091 2088 2086 1 6 1516 1521 914 915 576 1515 1 6 1578 1587 2476 1574 6361 1573 1 6 2475 1587 1589 6353 6359 6361 1 6 2468 2471 2478 2483 2484 2485 1 6 2477 2471 2485 2488 2489 2472 2 6 1642 1643 1644 2480 1641 2490 2 6 2479 1644 2481 2490 2494 2869 2 6 2480 1644 1645 1650 2494 2495 1 6 2464 2467 2483 3085 3083 3926 1 6 2482 2467 2468 2477 2484 3926 1 6 2483 2477 2485 2486 3926 3150 1 6 2484 2477 2478 2486 2487 2488 1 6 2484 2485 2487 3148 3149 3150 1 6 2486 2485 2488 3148 3967 3161 1 6 2487 2485 2478 2489 5948 3967 1 6 2488 2478 2472 2091 2092 5948 2 6 1641 2479 2480 2867 2868 2869 2 6 70 71 2492 3436 3437 3441 2 6 2491 71 72 409 2493 3436 2 6 2492 409 1606 3515 3436 3516 2 6 2480 2481 2495 2869 2870 2871 2 6 2494 2481 1650 1651 2496 2871 2 6 2495 1651 2497 2871 2872 2882 2 6 2496 1651 1652 2498 2882 2883 2 6 2497 1652 2499 2883 4092 4093 2 6 2498 1652 1653 2500 2809 4093 2 6 2499 1653 1654 2501 2809 2810 2 6 2500 1654 1656 2810 2811 2812 1 6 2184 2182 2503 2193 2504 2505 1 6 2502 2182 30 2505 29 2180 1 6 2193 2502 2505 2506 2507 2508 1 6 2504 2502 2508 31 30 2503 1 6 2193 2504 2507 2509 2510 2192 1 6 2506 2504 2508 2509 3330 3880 1 6 2507 2504 2505 31 3330 32 1 6 2506 2507 2510 2511 3880 3881 1 6 2506 2509 2511 2512 2191 2192 1 6 2510 2509 2512 6499 6498 3881 1 6 2510 2511 2191 6498 6500 9710 1 6 2398 2399 2514 2709 2710 2711 1 6 2513 2399 2400 2515 2711 2712 1 6 2514 2400 2401 2516 2712 2713 1 6 2515 2401 2402 2517 2713 2714 1 6 2516 2402 2403 2518 2714 2715 1 6 2517 2403 2404 2519 2715 2716 1 6 2518 2404 2405 2520 2716 2717 1 6 2519 2405 2406 2521 2717 2718 1 6 2520 2406 2407 2522 2718 2719 1 6 2521 2407 2408 2523 2719 2720 1 6 2522 2408 2409 2524 2720 2721 1 6 2523 2409 2410 2525 2721 2722 1 6 2524 2410 2411 2526 2722 2723 1 6 2525 2411 2412 2527 2723 2724 1 6 2526 2412 2413 2528 2724 2725 1 6 2527 2413 2414 2529 2725 2726 1 6 2528 2414 2415 2530 2726 2727 1 6 2529 2415 2416 2531 2727 2728 1 6 2530 2416 2417 2532 2728 2729 1 6 2531 2417 2418 2533 2729 2730 1 6 2532 2418 2419 2534 2730 2731 1 6 2533 2419 2420 2535 2731 2732 1 6 2534 2420 2421 2536 2732 2733 1 6 2535 2421 2422 2537 2733 2734 1 6 2536 2422 2423 2538 2734 2735 1 6 2537 2423 2424 2539 2735 2736 1 6 2538 2424 2425 2540 2736 2737 1 6 2539 2425 2426 2541 2552 2737 1 6 2540 2426 2427 2542 2552 2553 1 6 2541 2427 2428 2543 2553 2554 1 6 2542 2428 2429 2544 2554 2555 1 6 2543 2429 2430 2432 2555 2556 1 6 408 2218 2546 2547 2841 2842 1 6 2545 2218 2547 2548 2549 2219 1 6 2545 2546 2548 2842 2845 2846 1 6 2547 2546 2549 2550 2857 2846 1 6 2548 2546 2219 2220 2550 2551 1 6 2548 2549 2551 6691 2856 2857 1 7 2550 2549 2220 2221 6702 6690 6691 1 6 2540 2541 2553 2737 2738 2739 1 6 2552 2541 2542 2554 2739 2740 1 6 2553 2542 2543 2555 2570 2740 1 6 2554 2543 2544 2556 2570 2557 1 5 2555 2544 2432 2433 2557 1 7 2556 2433 2434 2558 2570 2555 2742 1 5 2557 2434 2435 2559 2742 1 7 2558 2435 2437 2742 2743 2744 2745 1 6 2240 1714 2561 2562 2563 2564 1 6 2240 2560 2562 3435 2239 3446 1 6 2561 2560 2563 3446 3447 3448 1 6 2562 2560 2564 3448 3449 2567 1 6 2563 2560 1714 1715 2565 2567 1 6 2564 1715 1716 1717 2566 2567 1 6 2565 1717 2567 2568 2569 1718 1 6 2565 2566 2568 3449 2563 2564 1 6 2567 2566 2569 3458 3455 3449 1 6 2568 2566 1718 3463 3458 1719 1 6 2554 2555 2557 2740 2741 2742 1 6 2262 2263 2572 2769 2770 2771 1 6 2571 2263 2264 2573 2771 2772 1 6 2572 2264 2265 2574 2772 2773 1 6 2573 2265 2266 2575 2773 2774 1 6 2574 2266 2267 2576 2774 2775 1 6 2575 2267 2268 2577 2775 2776 1 6 2576 2268 2269 2578 2776 2777 1 6 2577 2269 2270 2579 2777 2778 1 6 2578 2270 2271 2580 2778 2779 1 6 2579 2271 2272 2581 2779 2780 1 6 2580 2272 2273 2582 2780 2781 1 6 2581 2273 2274 2583 2781 2782 1 6 2582 2274 2275 2584 2782 2783 1 6 2583 2275 2276 2585 2783 2784 1 6 2584 2276 2277 2586 2784 2785 1 6 2585 2277 2278 2587 2785 2786 1 6 2586 2278 2279 2588 2786 2787 1 6 2587 2279 2280 2589 2787 2788 1 6 2588 2280 2281 2590 2788 2789 1 6 2589 2281 2282 2591 2789 2790 1 6 2590 2282 2283 2592 2790 2791 1 6 2591 2283 2284 2593 2791 2792 1 6 2592 2284 2285 2594 2792 2793 1 6 2593 2285 2286 2595 2793 2794 1 6 2594 2286 2287 2596 2794 2795 1 6 2595 2287 2288 2597 2795 2796 1 6 2596 2288 2289 2598 2796 2797 1 6 2597 2289 2290 2599 2797 2798 1 6 2598 2290 2291 2600 2798 2799 1 6 2599 2291 2292 2601 2799 2800 1 6 2600 2292 2293 2602 2800 2801 1 6 2601 2293 2294 2603 2801 2802 1 6 2602 2294 2295 2296 2604 2802 1 6 2603 2296 2605 2802 2803 2606 1 5 2604 2296 2297 2298 2606 1 7 2605 2298 2299 2607 2803 2604 2826 1 5 2606 2299 2300 2608 2826 1 7 2607 2300 2301 2609 2826 2827 2828 1 6 2608 2301 2302 2610 2828 2829 1 6 2609 2302 2303 2611 2829 2830 1 6 2610 2303 2304 2612 2830 2831 1 6 2611 2304 2305 2613 2831 2832 1 6 2612 2305 2306 2614 2832 2833 1 6 2613 2306 2307 2615 2833 2834 1 6 2614 2307 2308 2616 2617 2834 1 6 2615 2308 2617 2618 2619 2309 1 6 2615 2616 2618 2834 2835 2836 1 6 2617 2616 2619 2836 2837 2838 1 6 2618 2616 2309 2310 2620 2838 1 6 2619 2310 2311 2621 2840 2838 1 6 2620 2311 2312 2622 2959 2840 1 6 2621 2312 2313 2623 2959 2960 1 6 2622 2313 2314 2624 2960 2961 1 6 2623 2314 2315 2625 2961 2962 1 6 2624 2315 2316 2626 2962 2963 1 6 2625 2316 2317 2627 2966 2963 1 6 2626 2317 2318 2628 2966 2967 1 6 2627 2318 2319 2629 2967 2968 1 6 2628 2319 2320 2630 2968 2969 1 6 2629 2320 2321 2631 2969 2970 1 6 2630 2321 2322 2632 2970 2971 1 6 2631 2322 2323 2633 2971 2972 1 6 2632 2323 2324 2634 2972 2973 1 6 2633 2324 2325 2635 2973 2974 1 6 2634 2325 2326 2636 2974 2975 1 6 2635 2326 2327 2328 2637 2975 1 6 2636 2328 2638 2639 2975 2976 1 6 2637 2328 2639 2640 2641 2329 1 6 2637 2638 2640 2976 2977 2978 1 6 2639 2638 2641 2642 2978 2979 1 6 2640 2638 2642 2331 2330 2329 2 6 2640 2641 2331 2643 2979 2980 2 6 2642 2331 2332 2644 2980 2981 2 6 2643 2332 2333 2645 2981 2982 2 6 2644 2333 2334 2646 2982 2983 2 6 2645 2334 2335 2647 2983 2984 2 6 2646 2335 2336 2648 2984 2985 2 6 2647 2336 2337 2649 2985 2986 2 6 2648 2337 2338 2650 2986 2987 2 6 2649 2338 2339 2651 2987 2988 2 6 2650 2339 2340 2652 2988 2989 2 6 2651 2340 2341 2653 2989 2990 2 6 2652 2341 2342 2654 2990 2991 2 6 2653 2342 2655 2991 2992 2656 2 6 2654 2342 2343 2344 2345 2656 2 6 2655 2345 2657 2992 2654 2993 2 6 2656 2345 2346 2658 2993 2994 2 6 2657 2346 2347 2659 2994 2995 2 6 2658 2347 2660 2995 2996 2997 2 6 2659 2347 2348 2661 2997 2998 2 6 2660 2348 2349 2350 2662 2998 2 6 2661 2350 2351 2663 2998 2999 2 6 2662 2351 2352 2664 2999 3000 2 6 2663 2352 2353 2665 3000 3001 2 6 2664 2353 2354 2666 3001 3002 2 6 2665 2354 2355 2667 3002 3565 2 6 2666 2355 2356 2668 3565 3566 2 6 2667 2356 2357 2669 3566 3567 2 6 2668 2357 2358 2670 3567 3568 2 6 2669 2358 2359 2671 3568 3569 2 6 2670 2359 2360 2672 3569 3570 2 6 2671 2360 2361 2362 2673 3570 2 6 2672 2362 2674 3570 3571 3572 1 6 2673 2362 2363 2675 3572 3573 1 6 2674 2363 2364 2676 3391 3573 1 6 2675 2364 2365 2677 3391 3392 1 6 2676 2365 2366 2678 3392 3393 1 6 2677 2366 2367 2679 3393 3394 1 6 2678 2367 2368 2680 3394 3579 1 6 2679 2368 2369 2681 3579 3580 1 6 2680 2369 2370 2682 3580 3581 1 6 2681 2370 2371 2683 3581 3582 1 6 2682 2371 2372 2684 3582 3583 1 6 2683 2372 2373 2685 3583 3584 1 6 2684 2373 2374 2686 3584 3585 1 6 2685 2374 2375 2687 3585 3586 1 6 2686 2375 2376 2688 3586 3587 1 6 2687 2376 2377 2689 3587 3588 1 6 2688 2377 2378 2690 3278 3588 1 6 2689 2378 2379 2691 3278 3279 1 6 2690 2379 2380 2692 3279 3280 1 6 2691 2380 2381 2693 3280 3281 1 6 2692 2381 2382 2694 3281 3282 1 6 2693 2382 2383 2695 3282 3283 1 6 2694 2383 2384 2696 3283 3284 1 6 2695 2384 2385 2697 3284 3285 1 6 2696 2385 2386 2698 3285 3286 1 6 2697 2386 2387 2699 3286 3287 1 6 2698 2387 2388 2700 3287 3288 1 6 2699 2388 2389 2701 3288 3289 1 6 2700 2389 2390 2702 3289 3290 1 6 2701 2390 2391 2703 3003 3290 1 6 2702 2391 2392 2704 3003 3004 1 6 2703 2392 2393 2705 3004 3005 1 6 2704 2393 2394 2706 3005 3006 1 6 2705 2394 2395 2707 3006 3007 1 6 2706 2395 2396 2708 3007 3008 1 6 2707 2396 2397 2709 3008 3009 1 6 2708 2397 2398 2513 2710 3009 1 6 2709 2513 2711 3009 3010 3011 1 6 2710 2513 2514 2712 3011 3012 1 6 2711 2514 2515 2713 3012 3013 1 6 2712 2515 2516 2714 3013 3014 1 6 2713 2516 2517 2715 3014 3015 1 6 2714 2517 2518 2716 3015 3016 1 6 2715 2518 2519 2717 3016 3017 1 6 2716 2519 2520 2718 3017 3018 1 6 2717 2520 2521 2719 3018 3019 1 6 2718 2521 2522 2720 3019 3020 1 6 2719 2522 2523 2721 3020 3021 1 6 2720 2523 2524 2722 3021 3022 1 6 2721 2524 2525 2723 3022 3023 1 6 2722 2525 2526 2724 3023 3024 1 6 2723 2526 2527 2725 3024 3025 1 6 2724 2527 2528 2726 3025 3026 1 6 2725 2528 2529 2727 3026 3027 1 6 2726 2529 2530 2728 3027 3028 1 6 2727 2530 2531 2729 3028 3029 1 6 2728 2531 2532 2730 3029 3030 1 6 2729 2532 2533 2731 3030 3031 1 6 2730 2533 2534 2732 3031 3032 1 6 2731 2534 2535 2733 3032 3033 1 6 2732 2535 2536 2734 3033 3034 1 6 2733 2536 2537 2735 3034 3035 1 6 2734 2537 2538 2736 3035 3036 1 6 2735 2538 2539 2737 3036 3037 1 6 2736 2539 2540 2552 2738 3037 1 6 2737 2552 2739 3037 3038 3039 1 6 2738 2552 2553 2740 3039 3040 1 6 2739 2553 2554 2570 2741 3040 1 6 2740 2570 2742 3040 3041 2743 1 6 2741 2570 2557 2558 2559 2743 1 6 2742 2559 2744 3041 2741 3049 1 5 2743 2559 2745 3049 3050 1 6 2744 2559 2437 2438 2746 3050 1 6 2745 2438 2439 2747 3050 3051 1 6 2746 2439 2748 3051 3052 2749 1 5 2747 2439 2440 2441 2749 1 6 2748 2441 2750 3052 2747 3058 1 7 2749 2441 2442 2445 3058 3059 3060 1 6 1746 1747 1748 2752 2893 2894 1 6 2751 1748 2233 2242 2753 2894 1 6 2752 2242 2754 2894 2895 2896 1 6 2753 2242 2243 2755 2896 2897 1 6 2754 2243 2756 2897 2898 2899 1 6 2755 2243 2244 2757 2899 2900 1 6 2756 2244 2245 2758 2900 2901 1 6 2757 2245 2759 2901 2902 2903 1 6 2758 2245 2246 2760 2903 2904 1 6 2759 2246 2247 2253 2761 2904 1 6 2760 2253 2254 2762 2904 2905 1 6 2761 2254 2255 2763 2905 2906 1 6 2762 2255 2256 2257 2764 2906 1 6 2763 2257 2765 2906 2907 2908 1 6 2764 2257 2258 2766 2908 2909 1 6 2765 2258 2259 2767 2909 2910 1 6 2766 2259 2260 2768 2910 2911 1 6 2767 2260 2261 2769 2911 2912 1 6 2768 2261 2262 2571 2770 2912 1 6 2769 2571 2771 2912 2913 2914 1 6 2770 2571 2572 2772 2914 2915 1 6 2771 2572 2573 2773 2915 2916 1 6 2772 2573 2574 2774 2916 2917 1 6 2773 2574 2575 2775 2917 2918 1 6 2774 2575 2576 2776 2918 2919 1 6 2775 2576 2577 2777 2919 2920 1 6 2776 2577 2578 2778 2920 2921 1 6 2777 2578 2579 2779 2921 2922 1 6 2778 2579 2580 2780 2922 2923 1 6 2779 2580 2581 2781 2923 2924 1 6 2780 2581 2582 2782 2924 2925 1 6 2781 2582 2583 2783 2925 2926 1 6 2782 2583 2584 2784 2926 2927 1 6 2783 2584 2585 2785 2927 2928 1 6 2784 2585 2586 2786 2928 2929 1 6 2785 2586 2587 2787 2929 2930 1 6 2786 2587 2588 2788 2930 2931 1 6 2787 2588 2589 2789 2931 2932 1 6 2788 2589 2590 2790 2932 2933 1 6 2789 2590 2591 2791 2933 2934 1 6 2790 2591 2592 2792 2934 2935 1 6 2791 2592 2593 2793 2935 2936 1 6 2792 2593 2594 2794 2936 2937 1 6 2793 2594 2595 2795 2937 2938 1 6 2794 2595 2596 2796 2938 2939 1 6 2795 2596 2597 2797 2939 2940 1 6 2796 2597 2598 2798 2940 2941 1 6 2797 2598 2599 2799 2941 2942 1 6 2798 2599 2600 2800 2942 2943 1 6 2799 2600 2601 2801 2943 2944 1 6 2800 2601 2602 2802 2944 2824 1 6 2801 2602 2603 2604 2803 2824 1 6 2802 2604 2606 2824 2825 2826 1 6 2173 2174 2175 2177 2805 3395 1 6 2804 2177 2806 3395 3396 3400 1 6 2805 2177 2178 2807 3400 3401 1 6 2806 2178 2808 3401 3402 3403 1 6 2807 2178 1731 3403 3404 1732 2 6 2499 2500 2810 4095 4093 4388 2 6 2809 2500 2501 2811 4388 2813 2 6 2810 2501 2812 1664 1666 2813 2 6 2811 2501 1656 1658 1661 1664 2 6 2811 1666 2814 3139 4388 2810 2 6 2813 1666 1667 2815 2817 3139 2 6 2814 1667 2816 2817 2818 2819 2 6 2815 1667 1668 2819 2820 2821 2 6 2814 2815 2818 3139 3140 3141 2 6 2817 2815 2819 3141 3142 3143 2 6 2818 2815 2816 2820 3143 3144 2 6 2819 2816 2821 3144 3145 3146 2 6 2820 2816 1668 2822 2823 3146 2 6 2821 1668 2823 1672 1671 1669 2 6 2821 2822 1672 3146 3147 1673 1 6 2802 2803 2825 2944 2801 2945 1 6 2824 2803 2826 2945 2946 2827 1 6 2825 2803 2606 2607 2608 2827 1 6 2826 2608 2828 2946 2825 2947 1 5 2827 2608 2609 2829 2947 1 6 2828 2609 2610 2830 2947 2948 1 6 2829 2610 2611 2831 2948 2949 1 6 2830 2611 2612 2832 2949 2950 1 6 2831 2612 2613 2833 2950 2951 1 6 2832 2613 2614 2834 2951 2952 1 7 2833 2614 2615 2617 2835 2952 2953 1 5 2834 2617 2836 2953 2954 1 6 2835 2617 2618 2837 2954 2955 1 6 2836 2618 2838 2839 2955 2956 1 6 2837 2618 2839 2840 2620 2619 1 6 2837 2838 2840 2956 2957 2958 1 6 2839 2838 2620 2958 2959 2621 1 6 408 2545 2842 2843 9690 429 1 6 2841 2545 2843 2844 2547 2845 1 6 2841 2842 2844 3168 9688 9690 1 6 2843 2842 3168 3165 3162 2845 1 6 2842 2547 2846 2847 3162 2844 1 6 2845 2547 2847 2848 2548 2857 1 6 2845 2846 2848 2849 3162 3163 1 6 2847 2846 2849 2850 2851 2857 1 6 2847 2848 2850 2852 2858 3163 1 6 2849 2848 2851 2852 2853 2854 1 6 2850 2848 2854 2855 2856 2857 1 6 2849 2850 2853 2858 2859 2860 1 5 2852 2850 2854 2860 6676 1 7 2853 2850 2851 2855 6676 6677 6678 1 7 2854 2851 2856 6689 6686 6680 6678 1 6 2855 2851 2857 6691 6689 2550 1 6 2856 2851 2848 2550 2548 2846 1 6 2849 2852 2859 3180 3163 6661 1 7 2858 2852 2860 6661 6674 6666 6662 1 6 2859 2852 2853 6675 6674 6676 2 5 1631 1633 1628 1629 1630 2 6 1628 1633 1636 2863 1627 7215 2 7 2862 1636 1637 2864 7216 7215 7217 2 5 2863 1637 1638 2865 7217 2 7 2864 1638 1639 2866 7217 7218 7219 2 7 2865 1639 1640 2867 3189 3214 7219 2 6 2866 1640 1641 2490 2868 3189 2 6 2867 2490 2869 3189 3190 3181 2 6 2868 2490 2480 2494 2870 3181 2 6 2869 2494 2871 2873 2884 3181 2 6 2870 2494 2495 2496 2872 2873 2 6 2871 2496 2873 2874 2881 2882 2 6 2871 2872 2874 2875 2870 2884 2 6 2873 2872 2875 2876 2880 2881 2 6 2873 2874 2876 2877 2884 2885 2 6 2875 2874 2877 2878 2879 2880 2 6 2875 2876 2878 2885 2886 2887 2 6 2877 2876 2879 2887 2888 2889 2 6 2878 2876 2880 2892 2889 7600 2 6 2879 2876 2874 2881 4086 7600 2 6 2880 2874 2872 2882 4086 4087 2 6 2881 2872 2496 2497 2883 4087 2 6 2882 2497 2498 4087 4088 4092 2 6 2870 2873 2875 2885 3181 3182 2 6 2884 2875 2877 2886 3182 3183 2 6 2885 2877 2887 3183 3184 3185 2 6 2886 2877 2878 2888 3188 3185 2 6 2887 2878 2889 2890 3959 3188 2 6 2888 2878 2890 2891 2892 2879 2 6 2888 2889 2891 3961 3959 7592 2 6 2890 2889 2892 7592 7593 7594 2 6 2891 2889 2879 7600 7597 7594 1 6 1745 1746 2751 2894 3199 3198 1 6 2893 2751 2752 2753 2895 3198 1 6 2894 2753 2896 3198 3200 3201 1 6 2895 2753 2754 2897 3201 3202 1 6 2896 2754 2755 2898 3202 3203 1 6 2897 2755 2899 3203 3204 3205 1 6 2898 2755 2756 2900 3205 3206 1 6 2899 2756 2757 2901 3206 3207 1 6 2900 2757 2758 2902 3207 3208 1 6 2901 2758 2903 3208 3209 3210 1 6 2902 2758 2759 2904 3213 3210 1 6 2903 2759 2760 2761 2905 3213 1 6 2904 2761 2762 2906 3483 3213 1 6 2905 2762 2763 2764 2907 3483 1 6 2906 2764 2908 3482 3212 3483 1 7 2907 2764 2765 2909 3500 3482 3697 1 6 2908 2765 2766 2910 3697 3698 1 6 2909 2766 2767 2911 3698 3699 1 6 2910 2767 2768 2912 3699 3700 1 6 2911 2768 2769 2770 2913 3700 1 6 2912 2770 2914 3700 3701 3702 1 6 2913 2770 2771 2915 3702 3703 1 6 2914 2771 2772 2916 3703 3704 1 6 2915 2772 2773 2917 3704 3705 1 6 2916 2773 2774 2918 3705 3706 1 6 2917 2774 2775 2919 3706 3707 1 6 2918 2775 2776 2920 3707 3708 1 6 2919 2776 2777 2921 3708 3709 1 6 2920 2777 2778 2922 3709 3710 1 6 2921 2778 2779 2923 3710 3711 1 6 2922 2779 2780 2924 3711 3712 1 6 2923 2780 2781 2925 3712 3713 1 6 2924 2781 2782 2926 3713 3714 1 6 2925 2782 2783 2927 3714 3715 1 6 2926 2783 2784 2928 3715 3716 1 6 2927 2784 2785 2929 3716 3717 1 6 2928 2785 2786 2930 3717 3718 1 6 2929 2786 2787 2931 3718 3719 1 6 2930 2787 2788 2932 3719 3720 1 6 2931 2788 2789 2933 3720 3721 1 6 2932 2789 2790 2934 3721 3722 1 6 2933 2790 2791 2935 3722 3723 1 6 2934 2791 2792 2936 3723 3724 1 6 2935 2792 2793 2937 3724 3725 1 6 2936 2793 2794 2938 3725 3726 1 6 2937 2794 2795 2939 3726 3727 1 6 2938 2795 2796 2940 3727 3728 1 6 2939 2796 2797 2941 3728 3729 1 6 2940 2797 2798 2942 3729 3730 1 6 2941 2798 2799 2943 3730 3731 1 6 2942 2799 2800 2944 3731 3732 1 6 2943 2800 2801 2824 2945 3732 1 6 2944 2824 2825 2946 3732 3733 1 6 2945 2825 2827 2947 3733 3734 1 6 2946 2827 2828 2829 2948 3734 1 7 2947 2829 2830 2949 3734 3735 3736 1 6 2948 2830 2831 2950 3242 3736 1 6 2949 2831 2832 2951 3242 3243 1 6 2950 2832 2833 2952 3243 3244 1 6 2951 2833 2834 2953 3244 3245 1 5 2952 2834 2835 2954 3245 1 7 2953 2835 2836 2955 3245 3246 3247 1 6 2954 2836 2837 2956 3247 3248 1 6 2955 2837 2839 2957 3248 3249 1 6 2956 2839 2958 3249 3250 3251 1 6 2957 2839 2840 2959 3251 3252 1 6 2958 2840 2621 2622 2960 3252 1 6 2959 2622 2623 2961 3254 3252 1 6 2960 2623 2624 2962 3254 3255 1 6 2961 2624 2625 2963 2964 3255 1 6 2962 2625 2964 2965 2966 2626 1 6 2962 2963 2965 3255 3256 3257 1 6 2964 2963 2966 3257 3258 3259 1 6 2965 2963 2626 2627 2967 3259 1 6 2966 2627 2628 2968 3259 3260 1 6 2967 2628 2629 2969 3260 3261 1 6 2968 2629 2630 2970 3261 3262 1 6 2969 2630 2631 2971 3262 3263 1 6 2970 2631 2632 2972 3263 3264 1 6 2971 2632 2633 2973 3264 3265 1 6 2972 2633 2634 2974 3265 3266 1 6 2973 2634 2635 2975 3266 3267 1 6 2974 2635 2636 2637 2976 3267 1 6 2975 2637 2639 2977 3267 3268 1 6 2976 2639 2978 3268 3269 3270 1 6 2977 2639 2640 2979 3270 3271 2 6 2978 2640 2642 2980 3271 3272 2 6 2979 2642 2643 2981 3272 3273 2 6 2980 2643 2644 2982 3273 3274 2 6 2981 2644 2645 2983 3274 3275 2 6 2982 2645 2646 2984 3275 3276 2 6 2983 2646 2647 2985 3276 3277 2 6 2984 2647 2648 2986 3277 3824 2 6 2985 2648 2649 2987 3545 3824 2 6 2986 2649 2650 2988 3545 3546 2 6 2987 2650 2651 2989 3546 3547 2 6 2988 2651 2652 2990 3547 3548 2 6 2989 2652 2653 2991 3548 3549 2 6 2990 2653 2654 2992 3549 3550 2 6 2991 2654 2656 2993 3550 3551 2 6 2992 2656 2657 2994 3551 3552 2 6 2993 2657 2658 2995 3552 3553 2 6 2994 2658 2659 2996 3553 3554 2 6 2995 2659 2997 3554 3555 3556 2 6 2996 2659 2660 2998 3556 3557 2 6 2997 2660 2661 2662 2999 3557 2 6 2998 2662 2663 3000 3557 3558 2 6 2999 2663 2664 3001 3558 3559 2 6 3000 2664 2665 3002 3559 3560 2 6 3001 2665 2666 3560 3561 3565 1 6 2702 2703 3004 3290 3291 3292 1 6 3003 2703 2704 3005 3292 3293 1 6 3004 2704 2705 3006 3293 3294 1 6 3005 2705 2706 3007 3294 3295 1 6 3006 2706 2707 3008 3295 3296 1 6 3007 2707 2708 3009 3296 3297 1 6 3008 2708 2709 2710 3010 3297 1 6 3009 2710 3011 3297 3298 3299 1 6 3010 2710 2711 3012 3299 3300 1 6 3011 2711 2712 3013 3300 3301 1 6 3012 2712 2713 3014 3301 3302 1 6 3013 2713 2714 3015 3302 3303 1 6 3014 2714 2715 3016 3303 3304 1 6 3015 2715 2716 3017 3304 3305 1 6 3016 2716 2717 3018 3305 3306 1 6 3017 2717 2718 3019 3306 3307 1 6 3018 2718 2719 3020 3307 3308 1 6 3019 2719 2720 3021 3308 3309 1 6 3020 2720 2721 3022 3309 3310 1 6 3021 2721 2722 3023 3310 3311 1 6 3022 2722 2723 3024 3311 3312 1 6 3023 2723 2724 3025 3312 3313 1 6 3024 2724 2725 3026 3313 3314 1 6 3025 2725 2726 3027 3314 3315 1 6 3026 2726 2727 3028 3315 3316 1 6 3027 2727 2728 3029 3316 3317 1 6 3028 2728 2729 3030 3317 3318 1 6 3029 2729 2730 3031 3318 3319 1 6 3030 2730 2731 3032 3319 3320 1 6 3031 2731 2732 3033 3320 3321 1 6 3032 2732 2733 3034 3321 3322 1 6 3033 2733 2734 3035 3042 3322 1 6 3034 2734 2735 3036 3042 3043 1 6 3035 2735 2736 3037 3043 3044 1 6 3036 2736 2737 2738 3038 3044 1 6 3037 2738 3039 3044 3045 3046 1 6 3038 2738 2739 3040 3046 3047 1 6 3039 2739 2740 2741 3041 3047 1 6 3040 2741 2743 3047 3048 3049 1 6 3034 3035 3043 3322 3323 3324 1 6 3042 3035 3036 3044 3324 3325 1 6 3043 3036 3037 3038 3045 3325 1 6 3044 3038 3046 3325 3326 3327 1 6 3045 3038 3039 3047 3053 3327 1 6 3046 3039 3040 3041 3048 3053 1 6 3047 3041 3049 3053 3054 3055 1 6 3048 3041 2743 2744 3050 3055 1 6 3049 2744 2745 2746 3051 3055 1 6 3050 2746 2747 3052 3055 3056 1 6 3051 2747 2749 3056 3057 3058 1 6 3046 3047 3048 3054 3327 3328 1 6 3053 3048 3055 3328 3329 3056 1 6 3054 3048 3049 3050 3051 3056 1 7 3055 3051 3052 3057 3329 3054 3641 1 5 3056 3052 3058 3641 3642 1 7 3057 3052 2749 2750 3059 3642 3643 1 6 3058 2750 3060 3643 3644 3061 1 5 3059 2750 2445 2446 3061 1 6 3060 2446 3062 3644 3059 3910 1 6 3061 2446 2447 3063 3910 3911 1 6 3062 2447 3064 3069 3911 3912 1 6 3063 2447 2448 2449 3065 3069 1 6 3064 2449 2450 3066 3069 3070 1 6 3065 2450 2451 3067 3070 3071 1 6 3066 2451 2452 3068 3071 3072 1 6 3067 2452 2454 3072 3073 3074 1 6 3063 3064 3065 3070 3912 3913 1 6 3069 3065 3066 3071 3913 3914 1 6 3070 3066 3067 3072 3914 3915 1 6 3071 3067 3068 3073 3915 3916 1 6 3072 3068 3074 3916 3917 3918 1 6 3073 3068 2454 2455 3075 3918 1 6 3074 2455 2456 2457 3076 3918 1 6 3075 2457 2458 3077 3349 3918 1 6 3076 2458 2459 3078 3349 3350 1 6 3077 2459 2460 3079 3107 3350 1 6 3078 2460 2461 3080 3107 3108 1 6 3079 2461 3081 3091 3108 3109 1 6 3080 2461 2462 3082 3091 3092 1 6 3081 2462 2463 3083 3084 3092 1 6 3082 2463 3084 3085 2482 2464 1 6 3082 3083 3085 3092 3112 3359 1 6 3084 3083 2482 3926 3152 3359 1 6 16 17 3087 3088 3089 3090 1 6 3086 17 18 3095 3126 3090 1 6 16 3086 3089 3098 417 15 1 6 3088 3086 3090 3098 3103 3104 1 6 3089 3086 3104 3105 3087 3126 1 6 3080 3081 3092 3109 3110 3111 1 6 3091 3081 3082 3084 3111 3112 2 5 1615 1616 3094 4099 3544 2 6 3093 1616 1617 4367 4099 1624 1 6 3087 18 19 3096 3125 3126 1 6 3095 19 20 3125 3128 414 2 6 2241 1657 1655 1647 1182 1184 1 6 3088 3089 417 3099 3102 3103 1 6 417 3098 418 3100 3101 3102 1 6 418 3099 3101 3228 3229 3684 1 6 3100 3099 3102 3226 3228 3498 1 7 3101 3099 3098 3103 3113 3498 3497 1 6 3102 3098 3089 3104 3113 3114 1 6 3103 3089 3090 3105 3106 3114 1 6 3104 3090 3106 3126 3124 3118 1 6 3104 3105 3116 3114 3117 3118 1 6 3078 3079 3108 3350 3351 3352 1 6 3107 3079 3080 3109 3352 3353 1 6 3108 3080 3091 3110 3353 3354 1 6 3109 3091 3111 3354 3355 3356 1 6 3110 3091 3092 3112 3356 3357 1 6 3111 3092 3084 3357 3358 3359 1 5 3102 3103 3114 3115 3497 1 6 3113 3103 3115 3116 3106 3104 1 7 3113 3114 3116 3497 3504 3501 3495 1 6 3115 3114 3106 3117 6712 3504 1 6 3116 3106 3118 3119 6712 6711 1 6 3117 3106 3119 3120 3124 3105 1 6 3117 3118 3120 3121 6711 6713 1 6 3119 3118 3121 3122 3123 3124 1 6 3119 3120 3122 3884 3887 6713 1 6 3121 3120 3123 3127 3883 3884 1 6 3122 3120 3124 3125 3127 3128 1 6 3123 3120 3118 3125 3126 3105 1 6 3123 3124 3126 3128 3095 3096 1 6 3125 3124 3105 3095 3087 3090 1 6 3122 3123 3128 3882 3339 3883 1 6 3127 3123 3125 414 3882 3096 1 6 2201 2203 3130 3851 3852 9781 1 6 3129 2203 2205 1525 1526 9781 1 6 2094 2095 3132 3133 9776 3138 1 6 2094 3131 3133 3134 3135 2093 1 6 3132 3131 3134 3136 3137 3138 1 6 3132 3133 3135 3136 5946 5945 1 6 3132 3134 5945 5943 5947 2093 1 6 3134 3133 3137 6090 6091 5946 1 6 3136 3133 3138 6090 6089 6092 1 6 3137 3133 6092 6093 9776 3131 2 6 2813 2814 2817 3140 4388 4386 2 6 3139 2817 3141 4385 4384 4386 2 6 3140 2817 2818 3142 4390 4385 2 6 3141 2818 3143 7767 4390 7768 2 6 3142 2818 2819 3144 7774 7768 2 6 3143 2819 2820 3145 7774 7775 2 6 3144 2820 3146 4231 7775 9791 2 6 3145 2820 2821 2823 3147 4231 2 6 3146 2823 1673 1674 3412 4231 1 6 2486 2487 3149 3156 3157 3161 1 6 2486 3148 3150 3151 3155 3156 1 6 2486 3149 3151 3152 3926 2484 1 6 3150 3149 3152 3153 3154 3155 1 6 3150 3151 3153 3926 3085 3359 1 6 3152 3151 3154 3358 3359 3360 1 6 3153 3151 3155 3360 3361 3362 1 6 3154 3151 3149 3156 3677 3362 1 6 3155 3149 3148 3157 3158 3677 1 6 3156 3148 3158 3159 3160 3161 1 6 3156 3157 3159 3676 3677 3945 1 6 3158 3157 3160 3945 3946 3962 1 6 3159 3157 3161 3962 3963 3964 1 6 3160 3157 3148 3967 3964 2487 1 6 2845 2847 3163 3164 3165 2844 1 6 3162 2847 3164 3180 2858 2849 1 6 3162 3163 3165 3166 3177 3180 1 6 3162 3164 3166 3167 3168 2844 1 6 3165 3164 3167 3177 3174 3171 1 6 3165 3166 3168 3169 3170 3171 1 6 3165 3167 3169 2843 2844 9688 1 6 3168 3167 3170 9687 9686 9688 1 5 3169 3167 3171 3172 9687 1 6 3170 3167 3172 3173 3174 3166 1 6 3170 3171 3173 9691 9687 6653 1 7 3172 3171 3174 3175 6654 6652 6653 1 6 3173 3171 3175 3176 3177 3166 1 5 3173 3174 3176 3450 6654 1 6 3175 3174 3177 3178 3179 3450 1 6 3176 3174 3178 3166 3164 3180 1 6 3176 3177 3179 3180 6660 6661 1 6 3176 3178 3450 6657 6659 6660 1 6 3177 3164 3178 3163 2858 6661 2 6 2869 2870 2884 3182 3190 2868 2 6 3181 2884 2885 3183 3216 3190 2 6 3182 2885 2886 3184 3193 3216 2 6 3183 2886 3185 3186 3192 3193 2 6 3184 2886 3186 3187 3188 2887 2 6 3184 3185 3187 3192 3196 7584 2 6 3186 3185 3188 3958 7586 7584 2 6 3187 3185 2887 3958 3959 2888 2 6 2867 2868 3190 2866 3214 3215 2 6 3189 2868 3181 3215 3216 3182 1 6 1741 1742 1744 3197 3198 3199 2 6 3184 3186 3193 3194 3195 3196 2 6 3184 3192 3194 7222 3216 3183 2 7 3193 3192 3195 7222 7221 7204 7203 2 6 3194 3192 3196 7196 7197 7203 2 6 3195 3192 3186 7583 7196 7584 1 6 1740 1741 3191 3198 3411 3200 1 7 3197 3191 3199 2893 2894 2895 3200 1 5 3198 3191 1744 1745 2893 1 6 3198 2895 3201 3411 3197 9751 1 6 3200 2895 2896 3202 3470 9751 1 6 3201 2896 2897 3203 3470 3471 1 6 3202 2897 2898 3204 3471 3472 1 6 3203 2898 3205 3472 3473 3474 1 6 3204 2898 2899 3206 3474 3475 1 6 3205 2899 2900 3207 3475 3476 1 6 3206 2900 2901 3208 3476 3477 1 6 3207 2901 2902 3209 3477 3478 1 6 3208 2902 3210 3211 3478 3479 1 6 3209 2902 3211 3212 3213 2903 1 6 3209 3210 3212 3479 3480 3481 1 7 3211 3210 3213 3481 3482 2907 3483 1 6 3212 3210 2903 3483 2905 2904 2 6 2866 3189 3215 7220 7219 7221 2 6 3214 3189 3190 3216 7221 7222 2 6 3215 3190 3182 7222 3193 3183 1 6 635 636 3218 4040 3763 3762 1 6 3217 636 638 3219 3484 4040 1 6 3218 638 3220 3221 3222 3484 1 6 3219 638 639 3221 3240 3241 1 6 3219 3220 3222 3223 3224 3241 1 6 3219 3221 3223 3484 3485 3486 1 6 3222 3221 3224 3225 3486 3487 1 6 3223 3221 3225 3226 3227 3241 1 6 3223 3224 3226 3493 3487 3494 1 7 3225 3224 3227 3228 3101 3494 3498 1 6 3226 3224 3228 3229 3230 3241 1 5 3226 3227 3101 3100 3229 1 6 3100 3228 3227 3230 3231 3684 1 6 3229 3227 3231 3232 3241 3240 1 6 3229 3230 3232 3233 3234 3684 1 6 3231 3230 3233 3240 3239 3236 1 7 3231 3232 3234 11 10 3235 3236 1 5 3231 3233 11 3684 12 1 6 10 3233 3236 3237 3238 9 1 6 3235 3233 3237 643 3239 3232 1 6 3235 3236 3238 647 644 643 1 5 3235 3237 9 8 647 1 6 643 3236 640 639 3240 3232 1 6 639 3239 3220 3241 3230 3232 1 6 3220 3240 3221 3224 3227 3230 1 6 2949 2950 3243 3736 3737 3738 1 6 3242 2950 2951 3244 3738 3739 1 6 3243 2951 2952 3245 3739 3740 1 7 3244 2952 2953 2954 3246 3740 3741 1 5 3245 2954 3247 3741 3742 1 6 3246 2954 2955 3248 3742 3743 1 6 3247 2955 2956 3249 3743 3744 1 6 3248 2956 2957 3250 3744 3745 1 6 3249 2957 3251 3745 3746 3747 1 6 3250 2957 2958 3252 3253 3747 1 6 3251 2958 3253 3254 2960 2959 1 6 3251 3252 3254 3747 3748 3749 1 6 3253 3252 2960 2961 3255 3749 1 6 3254 2961 2962 2964 3256 3749 1 6 3255 2964 3257 3749 3750 3751 1 6 3256 2964 2965 3258 3751 3752 1 6 3257 2965 3259 3752 3753 3754 1 6 3258 2965 2966 2967 3260 3754 1 6 3259 2967 2968 3261 3754 3755 1 6 3260 2968 2969 3262 3755 3756 1 6 3261 2969 2970 3263 3756 3757 1 6 3262 2970 2971 3264 3757 3758 1 6 3263 2971 2972 3265 3758 3759 1 7 3264 2972 2973 3266 3759 4054 4051 1 5 3265 2973 2974 3267 4054 1 6 3266 2974 2975 2976 3268 4054 1 7 3267 2976 2977 3269 4054 4053 4055 1 5 3268 2977 3270 4055 4056 1 6 3269 2977 2978 3271 4056 4057 2 6 3270 2978 2979 3272 4057 4058 2 6 3271 2979 2980 3273 4058 4059 2 6 3272 2980 2981 3274 4059 4060 2 6 3273 2981 2982 3275 4060 4061 2 6 3274 2982 2983 3276 4064 4061 2 6 3275 2983 2984 3277 4064 4065 2 6 3276 2984 2985 3826 4065 3824 1 6 2689 2690 3279 3588 3589 3590 1 6 3278 2690 2691 3280 3590 3591 1 6 3279 2691 2692 3281 3591 3592 1 6 3280 2692 2693 3282 3592 3593 1 6 3281 2693 2694 3283 3593 3594 1 6 3282 2694 2695 3284 3594 3595 1 6 3283 2695 2696 3285 3595 3596 1 6 3284 2696 2697 3286 3596 3597 1 6 3285 2697 2698 3287 3597 3598 1 6 3286 2698 2699 3288 3598 3599 1 6 3287 2699 2700 3289 3599 3600 1 6 3288 2700 2701 3290 3600 3601 1 6 3289 2701 2702 3003 3291 3601 1 6 3290 3003 3292 3601 3602 3603 1 6 3291 3003 3004 3293 3603 3604 1 6 3292 3004 3005 3294 3604 3605 1 6 3293 3005 3006 3295 3605 3606 1 6 3294 3006 3007 3296 3606 3607 1 6 3295 3007 3008 3297 3607 3608 1 6 3296 3008 3009 3010 3298 3608 1 6 3297 3010 3299 3608 3609 3610 1 6 3298 3010 3011 3300 3610 3611 1 6 3299 3011 3012 3301 3611 3612 1 6 3300 3012 3013 3302 3612 3613 1 6 3301 3013 3014 3303 3613 3614 1 6 3302 3014 3015 3304 3614 3615 1 6 3303 3015 3016 3305 3615 3616 1 6 3304 3016 3017 3306 3616 3617 1 6 3305 3017 3018 3307 3617 3618 1 6 3306 3018 3019 3308 3618 3619 1 6 3307 3019 3020 3309 3619 3620 1 6 3308 3020 3021 3310 3620 3621 1 6 3309 3021 3022 3311 3621 3622 1 6 3310 3022 3023 3312 3622 3623 1 6 3311 3023 3024 3313 3623 3624 1 6 3312 3024 3025 3314 3624 3625 1 6 3313 3025 3026 3315 3625 3626 1 6 3314 3026 3027 3316 3626 3627 1 6 3315 3027 3028 3317 3627 3628 1 6 3316 3028 3029 3318 3628 3629 1 6 3317 3029 3030 3319 3629 3630 1 6 3318 3030 3031 3320 3630 3631 1 6 3319 3031 3032 3321 3631 3632 1 6 3320 3032 3033 3322 3632 3633 1 6 3321 3033 3034 3042 3323 3633 1 6 3322 3042 3324 3633 3634 3635 1 6 3323 3042 3043 3325 3635 3636 1 6 3324 3043 3044 3045 3326 3636 1 6 3325 3045 3327 3636 3637 3638 1 6 3326 3045 3046 3053 3328 3638 1 6 3327 3053 3054 3329 3638 3639 1 6 3328 3054 3056 3639 3640 3641 1 6 2507 2508 32 33 3331 3880 1 6 3330 33 34 2248 3332 3880 1 6 3331 2248 3333 3334 3880 3881 1 6 3332 2248 3334 3335 3336 2249 1 6 3332 3333 3335 9707 6499 3881 1 6 3334 3333 3336 9706 6492 9707 1 6 3335 3333 2249 2250 2251 9706 1 6 1171 1172 1524 3338 3339 3882 1 6 3337 1524 3339 3340 3341 4250 1 6 3337 3338 3340 3882 3127 3883 1 6 3339 3338 3341 3342 3885 3883 1 6 3340 3338 3342 3343 2206 4250 1 6 3340 3341 3343 3861 6717 3885 1 6 3342 3341 2206 2207 3344 3861 1 6 3343 2207 2209 3345 3346 3861 1 6 3344 2209 3346 3347 3348 2211 1 6 3344 3345 3347 3861 3862 3863 1 6 3346 3345 3348 6532 3863 6524 1 6 3347 3345 2211 2213 6523 6524 1 6 3076 3077 3350 3918 3917 3919 1 6 3349 3077 3078 3107 3351 3919 1 6 3350 3107 3352 3919 3920 3921 1 6 3351 3107 3108 3353 3921 3922 1 6 3352 3108 3109 3354 3922 3923 1 6 3353 3109 3110 3355 3923 3924 1 6 3354 3110 3356 3924 3925 3374 1 6 3355 3110 3111 3357 3368 3374 1 6 3356 3111 3112 3358 3367 3368 1 6 3357 3112 3359 3153 3360 3367 1 6 3358 3112 3153 3085 3152 3084 1 6 3358 3153 3154 3361 3363 3367 1 6 3360 3154 3362 3363 3364 3678 1 6 3361 3154 3155 3677 3675 3678 1 6 3360 3361 3364 3365 3366 3367 1 6 3363 3361 3365 3678 3667 3668 1 6 3363 3364 3366 3373 3370 3668 1 6 3363 3365 3367 3368 3369 3370 1 6 3363 3366 3368 3360 3358 3357 1 6 3367 3366 3369 3357 3356 3374 1 6 3368 3366 3370 3371 3374 3375 1 6 3369 3366 3371 3372 3373 3365 1 6 3369 3370 3372 3375 3376 3377 1 6 3371 3370 3373 3377 3378 3379 1 6 3372 3370 3365 3379 3380 3668 1 6 3356 3368 3369 3375 3925 3355 1 7 3374 3369 3371 3376 3943 3925 4342 1 5 3375 3371 3377 4342 4343 1 6 3376 3371 3372 3378 4343 4344 1 6 3377 3372 3379 3645 4347 4344 1 6 3378 3372 3373 3380 3381 3645 1 6 3379 3373 3381 3382 3668 3656 1 6 3379 3380 3382 3383 3384 3645 1 6 3381 3380 3383 3390 3387 3656 1 6 3381 3382 3384 3385 3386 3387 1 6 3381 3383 3385 3645 3646 3647 1 6 3384 3383 3386 3647 3648 3649 1 6 3385 3383 3387 3388 3649 3650 1 6 3386 3383 3388 3389 3390 3382 1 6 3386 3387 3389 3650 3651 3652 1 6 3388 3387 3390 3652 3653 3654 1 6 3389 3387 3382 3654 3655 3656 1 6 2675 2676 3392 3573 3574 3575 1 6 3391 2676 2677 3393 3575 3576 1 6 3392 2677 2678 3394 3576 3577 1 6 3393 2678 2679 3577 3578 3579 1 6 2173 2804 2805 3396 3397 4747 1 6 3395 2805 3397 3398 3399 3400 1 6 3395 3396 3398 3892 4747 4746 1 6 3397 3396 3399 3892 3893 3894 1 6 3398 3396 3400 3894 3895 3896 1 6 3399 3396 2805 2806 3401 3896 1 6 3400 2806 2807 3402 3896 3897 1 6 3401 2807 3403 3897 3898 3899 1 6 3402 2807 2808 3404 3899 3900 1 6 3403 2808 1732 3405 3679 3900 1 6 3404 1732 1733 1734 3406 3679 1 6 3405 1734 1735 3407 3679 3680 1 6 3406 1735 1736 3408 3680 3681 1 6 3407 1736 1737 3409 3683 3681 1 6 3408 1737 1738 3410 3470 3683 1 6 3409 1738 1739 3411 9751 3470 1 6 3410 1739 1740 3197 3200 9751 2 6 3147 1674 1675 1676 3413 4231 2 6 3412 1676 1677 3414 9791 4231 2 6 3413 1677 3415 7778 7776 9791 2 6 3414 1677 1678 7778 7779 5382 1 6 1695 1696 3417 3786 1694 3787 1 6 3416 1696 1697 3418 3787 3789 1 6 3417 1697 1698 2223 3419 3789 1 6 3418 2223 3420 3789 3790 3791 1 6 3419 2223 2224 3421 3791 3792 1 6 3420 2224 2225 3422 3423 3792 1 6 3421 2225 3423 3424 3425 3426 1 6 3421 3422 3424 3794 3792 3795 1 6 3423 3422 3425 3795 3796 3797 1 6 3424 3422 3426 3797 3798 3799 1 6 3425 3422 2225 2226 3427 3799 1 6 3426 2226 2227 3428 3799 3800 1 6 3427 2227 2228 3429 3800 3801 1 6 3428 2228 3430 3801 3802 3432 1 6 3429 2228 2229 2238 3431 3432 1 6 3430 2238 3432 3433 3434 3435 1 6 3430 3431 3433 3442 3802 3429 1 6 3432 3431 3434 3442 3443 3444 1 6 3433 3431 3435 3444 3445 3446 1 6 3434 3431 2238 2239 2561 3446 2 6 2491 2492 3437 3438 3515 2493 2 6 2491 3436 3438 3439 3440 3441 2 6 3437 3436 3439 3513 3514 3515 2 6 3437 3438 3440 3508 3509 3513 2 6 3437 3439 3441 3451 3453 3508 2 6 3437 3440 2491 70 3451 69 1 6 3432 3433 3443 3802 3803 3804 1 6 3442 3433 3444 3804 3805 3806 1 6 3443 3433 3434 3445 3806 3807 1 6 3444 3434 3446 3807 3808 3447 1 6 3445 3434 3435 2561 2562 3447 1 6 3446 2562 3448 3808 3445 4107 1 6 3447 2562 2563 3449 3454 4107 1 6 3448 2563 2567 3454 3455 2568 1 7 3175 3176 3179 6655 6654 6656 6657 1 6 3441 3440 69 68 3452 3453 1 6 68 3451 3453 67 3505 3506 1 6 3452 3451 3440 3506 3507 3508 1 6 3448 3449 3455 3456 4107 4108 1 6 3454 3449 3456 3457 3458 2568 1 6 3454 3455 3457 3464 4110 4108 1 6 3456 3455 3458 3459 3460 3464 1 6 3457 3455 3459 3463 2569 2568 1 6 3457 3458 3460 3461 3462 3463 1 6 3457 3459 3461 3464 3465 3466 1 6 3460 3459 3462 3466 3467 3469 1 6 3461 3459 3463 1721 3469 1720 1 6 3462 3459 3458 2569 1720 1719 1 6 3456 3457 3460 3465 4394 4110 1 6 3464 3460 3466 4404 4394 4745 1 6 3465 3460 3461 3467 3468 4745 1 6 3466 3461 3468 2172 1724 3469 1 6 3466 3467 2172 4745 4746 4747 1 6 1724 3467 1722 1721 3462 3461 1 7 3201 3202 3471 9751 3410 3409 3683 1 6 3470 3202 3203 3472 3681 3683 1 6 3471 3203 3204 3473 3682 3681 1 6 3472 3204 3474 3685 3902 3682 1 6 3473 3204 3205 3475 3685 3686 1 6 3474 3205 3206 3476 3686 3687 1 6 3475 3206 3207 3477 3687 3688 1 6 3476 3207 3208 3478 3688 3689 1 6 3477 3208 3209 3479 3689 3690 1 6 3478 3209 3211 3480 3690 3691 1 6 3479 3211 3481 3499 3694 3691 1 6 3480 3211 3212 3482 3499 3500 1 5 3481 3212 2907 3500 2908 1 5 2907 3212 3213 2905 2906 1 6 3218 3219 3222 3485 4039 4040 1 6 3484 3222 3486 3489 3968 4039 1 6 3485 3222 3223 3487 3488 3489 1 6 3486 3223 3488 3492 3493 3225 1 6 3486 3487 3489 3490 3491 3492 1 6 3486 3488 3490 3485 3968 3969 1 6 3489 3488 3491 3969 3970 3971 1 6 3490 3488 3492 3971 9747 6555 1 6 3491 3488 3487 3493 3496 9747 1 6 3492 3487 3225 3494 3495 3496 1 6 3493 3225 3226 3495 3497 3498 1 6 3493 3494 3496 3497 3501 3115 1 6 3493 3495 3492 3501 3502 9747 1 6 3495 3494 3498 3102 3113 3115 1 5 3497 3494 3226 3101 3102 1 6 3480 3481 3500 3694 3695 3696 1 6 3499 3481 3482 2908 3696 3697 1 6 3496 3495 3502 3503 3504 3115 1 6 3496 3501 3503 9747 6706 9748 1 6 3502 3501 3504 6712 6710 9748 1 5 3503 3501 3115 6712 3116 1 6 67 3452 3506 6697 6703 66 1 6 3505 3452 3453 3507 6697 6704 1 6 3506 3453 3508 3510 4522 6704 2 6 3507 3453 3440 3439 3509 3510 2 6 3508 3439 3510 3511 3512 3513 2 6 3508 3509 3511 3770 3507 4522 2 6 3510 3509 3512 3770 3771 3772 2 6 3511 3509 3513 3772 3773 3520 2 6 3512 3509 3439 3438 3514 3520 2 6 3513 3438 3515 3520 3521 3517 2 6 3514 3438 3436 2493 3516 3517 2 6 3515 2493 3517 3518 1607 1606 2 6 3515 3516 3518 3521 3514 3522 2 6 3517 3516 1607 1613 3522 3523 2 5 1613 1607 1605 1608 1610 2 6 3513 3514 3521 3773 3512 4531 2 6 3520 3514 3517 3522 4116 4531 2 6 3521 3517 3518 3523 3525 4116 2 6 3522 3518 1613 1614 3524 3525 2 6 3523 1614 3525 3526 3527 3528 2 6 3523 3524 3526 3522 4116 4117 2 6 3525 3524 3527 3529 4117 4118 2 6 3526 3524 3528 3529 3530 3543 2 6 3527 3524 1614 3543 3544 1615 2 6 3526 3527 3530 3531 4118 9786 2 6 3529 3527 3531 3532 3542 3543 2 6 3529 3530 3532 3533 9786 9787 2 6 3531 3530 3533 3534 3541 3542 2 6 3531 3532 3534 3535 9787 9788 2 6 3533 3532 3535 3536 3540 3541 2 6 3533 3534 3536 3537 9788 7178 2 6 3535 3534 3537 3538 3539 3540 2 6 3535 3536 3538 7182 7179 7178 2 6 3537 3536 3539 7182 7183 7184 2 6 3538 3536 3540 7184 7185 7212 2 6 3539 3536 3534 3541 7212 4372 2 6 3540 3534 3532 3542 4372 4097 2 6 3541 3532 3530 3543 4096 4097 2 6 3542 3530 3527 3528 3544 4096 2 6 3543 3528 1615 4099 4096 3093 2 6 2986 2987 3546 3824 3825 3829 2 6 3545 2987 2988 3547 3829 3830 2 6 3546 2988 2989 3548 3830 3831 2 6 3547 2989 2990 3549 3831 3832 2 6 3548 2990 2991 3550 3832 3833 2 6 3549 2991 2992 3551 3809 3833 2 6 3550 2992 2993 3552 3809 3810 2 6 3551 2993 2994 3553 3810 3811 2 6 3552 2994 2995 3554 3811 3812 2 6 3553 2995 2996 3555 3812 3813 2 6 3554 2996 3556 3813 3814 3815 2 6 3555 2996 2997 3557 3815 3816 2 6 3556 2997 2998 2999 3558 3816 2 6 3557 2999 3000 3559 3816 3817 2 6 3558 3000 3001 3560 3817 3818 2 6 3559 3001 3002 3561 3562 3818 2 6 3560 3002 3562 3563 3564 3565 2 6 3560 3561 3563 3818 3819 3820 2 6 3562 3561 3564 3820 3821 3822 2 6 3563 3561 3565 3822 3823 3566 2 6 3564 3561 3002 2666 2667 3566 2 6 3565 2667 2668 3567 3823 3564 2 6 3566 2668 2669 3568 3850 3823 2 6 3567 2669 2670 3569 3879 3850 2 6 3568 2670 2671 3570 3891 3879 2 6 3569 2671 2672 2673 3571 3891 2 6 3570 2673 3572 4237 3891 4257 2 6 3571 2673 2674 3573 4257 4258 1 6 3572 2674 2675 3391 3574 4258 1 6 3573 3391 3575 4258 4259 4263 1 6 3574 3391 3392 3576 4263 4264 1 6 3575 3392 3393 3577 4264 4265 1 6 3576 3393 3394 3578 4265 4266 1 6 3577 3394 3579 4266 4267 4268 1 6 3578 3394 2679 2680 3580 4268 1 6 3579 2680 2681 3581 4141 4268 1 6 3580 2681 2682 3582 4141 4142 1 6 3581 2682 2683 3583 4142 4143 1 6 3582 2683 2684 3584 4143 4144 1 6 3583 2684 2685 3585 4144 4145 1 6 3584 2685 2686 3586 4145 4146 1 6 3585 2686 2687 3587 4146 4147 1 6 3586 2687 2688 3588 4147 4148 1 6 3587 2688 2689 3278 3589 4148 1 6 3588 3278 3590 4148 4149 4150 1 6 3589 3278 3279 3591 4150 4151 1 6 3590 3279 3280 3592 4151 4152 1 6 3591 3280 3281 3593 4152 4153 1 6 3592 3281 3282 3594 4153 4154 1 6 3593 3282 3283 3595 4154 4155 1 6 3594 3283 3284 3596 4155 4156 1 6 3595 3284 3285 3597 4156 4157 1 6 3596 3285 3286 3598 4157 4158 1 6 3597 3286 3287 3599 4158 4159 1 6 3598 3287 3288 3600 4159 4160 1 6 3599 3288 3289 3601 4160 4161 1 6 3600 3289 3290 3291 3602 4161 1 6 3601 3291 3603 4161 4162 4163 1 6 3602 3291 3292 3604 4163 4164 1 6 3603 3292 3293 3605 4164 4165 1 6 3604 3293 3294 3606 4165 4166 1 6 3605 3294 3295 3607 4166 4167 1 6 3606 3295 3296 3608 4167 4168 1 6 3607 3296 3297 3298 3609 4168 1 6 3608 3298 3610 4168 4169 4170 1 6 3609 3298 3299 3611 4170 4171 1 6 3610 3299 3300 3612 4171 4172 1 6 3611 3300 3301 3613 4172 4173 1 6 3612 3301 3302 3614 4173 4174 1 6 3613 3302 3303 3615 4174 4175 1 6 3614 3303 3304 3616 4175 4176 1 6 3615 3304 3305 3617 4176 4177 1 6 3616 3305 3306 3618 4177 4178 1 6 3617 3306 3307 3619 4178 4179 1 6 3618 3307 3308 3620 4179 4180 1 6 3619 3308 3309 3621 4180 4181 1 6 3620 3309 3310 3622 4181 4182 1 6 3621 3310 3311 3623 4182 4183 1 6 3622 3311 3312 3624 4183 4184 1 6 3623 3312 3313 3625 4184 4185 1 6 3624 3313 3314 3626 4185 4186 1 6 3625 3314 3315 3627 4186 4187 1 6 3626 3315 3316 3628 4187 4188 1 6 3627 3316 3317 3629 4188 4189 1 6 3628 3317 3318 3630 4189 4190 1 6 3629 3318 3319 3631 4190 4191 1 6 3630 3319 3320 3632 4191 4192 1 6 3631 3320 3321 3633 4192 4193 1 6 3632 3321 3322 3323 3634 4193 1 6 3633 3323 3635 3903 4193 4194 1 6 3634 3323 3324 3636 3903 3904 1 6 3635 3324 3325 3326 3637 3904 1 6 3636 3326 3638 3904 3905 3906 1 6 3637 3326 3327 3328 3639 3906 1 6 3638 3328 3329 3640 3906 3907 1 6 3639 3329 3641 3907 3908 3642 1 5 3640 3329 3056 3057 3642 1 7 3641 3057 3058 3643 3908 3640 3927 1 6 3642 3058 3059 3644 3909 3927 1 5 3643 3059 3061 3909 3910 1 6 3381 3384 3646 3379 3378 4347 1 6 3645 3384 3647 4347 4348 4349 1 6 3646 3384 3385 3648 4352 4349 1 6 3647 3385 3649 3657 4352 4353 1 6 3648 3385 3386 3650 3657 3658 1 6 3649 3386 3388 3651 3658 3659 1 6 3650 3388 3652 3659 3660 3661 1 6 3651 3388 3389 3653 3661 3662 1 6 3652 3389 3654 3662 3663 3664 1 6 3653 3389 3390 3655 3664 3665 1 6 3654 3390 3656 3665 3666 3667 1 6 3655 3390 3382 3667 3668 3380 1 6 3648 3649 3658 4353 4354 4358 1 6 3657 3649 3650 3659 4371 4358 1 6 3658 3650 3651 3660 9793 4371 1 6 3659 3651 3661 4906 4908 9793 1 6 3660 3651 3652 3662 3669 4906 1 6 3661 3652 3653 3663 3669 3670 1 6 3662 3653 3664 3670 3671 3672 1 6 3663 3653 3654 3665 3672 3673 1 6 3664 3654 3655 3666 3673 3674 1 6 3665 3655 3667 3674 3675 3678 1 6 3666 3655 3656 3668 3364 3678 1 6 3667 3656 3380 3364 3365 3373 1 6 3661 3662 3670 4903 4905 4906 1 6 3669 3662 3663 3671 4902 4903 1 6 3670 3663 3672 5918 4902 3951 1 6 3671 3663 3664 3673 3950 3951 1 6 3672 3664 3665 3674 3944 3950 1 6 3673 3665 3666 3675 3676 3944 1 6 3674 3666 3676 3677 3362 3678 1 6 3674 3675 3677 3158 3944 3945 1 6 3676 3675 3158 3156 3155 3362 1 6 3362 3675 3361 3364 3667 3666 1 6 3404 3405 3406 3680 3900 3901 1 6 3679 3406 3407 3681 3682 3901 1 7 3680 3407 3682 3472 3471 3683 3408 1 6 3680 3681 3472 3901 3902 3473 1 5 3471 3681 3408 3409 3470 1 7 418 3100 3229 3231 3234 12 13 1 7 3473 3474 3686 3902 4665 4664 4688 1 5 3685 3474 3475 3687 4688 1 7 3686 3475 3476 3688 4688 4689 4690 1 6 3687 3476 3477 3689 4690 4691 1 6 3688 3477 3478 3690 4691 4692 1 6 3689 3478 3479 3691 3692 4692 1 6 3690 3479 3692 3693 3694 3480 1 6 3690 3691 3693 4692 4693 4694 1 6 3692 3691 3694 4694 4695 4696 1 6 3693 3691 3480 3499 3695 4696 1 6 3694 3499 3696 4696 4697 4698 1 6 3695 3499 3500 3697 4698 4699 1 6 3696 3500 2908 2909 3698 4699 1 6 3697 2909 2910 3699 3972 4699 1 6 3698 2910 2911 3700 3972 3973 1 6 3699 2911 2912 2913 3701 3973 1 6 3700 2913 3702 3973 3974 3975 1 6 3701 2913 2914 3703 3975 3976 1 6 3702 2914 2915 3704 3976 3977 1 6 3703 2915 2916 3705 3977 3978 1 6 3704 2916 2917 3706 3978 3979 1 6 3705 2917 2918 3707 3979 3980 1 6 3706 2918 2919 3708 3980 3981 1 6 3707 2919 2920 3709 3981 3982 1 6 3708 2920 2921 3710 3982 3983 1 6 3709 2921 2922 3711 3983 3984 1 6 3710 2922 2923 3712 3984 3985 1 6 3711 2923 2924 3713 3985 3986 1 6 3712 2924 2925 3714 3986 3987 1 6 3713 2925 2926 3715 3987 3988 1 6 3714 2926 2927 3716 3988 3989 1 6 3715 2927 2928 3717 3989 3990 1 6 3716 2928 2929 3718 3990 3991 1 6 3717 2929 2930 3719 3991 3992 1 6 3718 2930 2931 3720 3992 3993 1 6 3719 2931 2932 3721 3993 3994 1 6 3720 2932 2933 3722 3994 3995 1 6 3721 2933 2934 3723 3995 3996 1 6 3722 2934 2935 3724 3996 3997 1 6 3723 2935 2936 3725 3997 3998 1 6 3724 2936 2937 3726 3998 3999 1 6 3725 2937 2938 3727 3999 4000 1 6 3726 2938 2939 3728 4000 4001 1 6 3727 2939 2940 3729 4001 4002 1 6 3728 2940 2941 3730 4002 4003 1 6 3729 2941 2942 3731 4003 4004 1 6 3730 2942 2943 3732 4004 4005 1 6 3731 2943 2944 2945 3733 4005 1 6 3732 2945 2946 3734 4005 4006 1 6 3733 2946 2947 2948 3735 4006 1 6 3734 2948 3736 4006 4007 3737 1 5 3735 2948 2949 3242 3737 1 6 3736 3242 3738 4007 3735 4012 1 6 3737 3242 3243 3739 4012 4013 1 6 3738 3243 3244 3740 4013 4014 1 6 3739 3244 3245 3741 4014 4015 1 6 3740 3245 3246 3742 4015 4016 1 6 3741 3246 3247 3743 4016 4017 1 6 3742 3247 3248 3744 4017 4018 1 6 3743 3248 3249 3745 4018 4019 1 6 3744 3249 3250 3746 4019 4020 1 6 3745 3250 3747 4020 4021 4022 1 6 3746 3250 3251 3253 3748 4022 1 6 3747 3253 3749 4022 4023 4024 1 7 3748 3253 3254 3255 3256 3750 4024 1 5 3749 3256 3751 4024 4025 1 6 3750 3256 3257 3752 4025 4026 1 6 3751 3257 3258 3753 4029 4026 1 7 3752 3258 3754 4037 4029 4046 3755 1 5 3753 3258 3259 3260 3755 1 6 3754 3260 3261 3756 4046 3753 1 6 3755 3261 3262 3757 4046 4047 1 6 3756 3262 3263 3758 4047 4048 1 6 3757 3263 3264 3759 4048 4049 1 6 3758 3264 3265 4049 4050 4051 1 6 615 617 3761 3764 3765 3763 1 6 3760 617 625 627 3762 3763 1 6 3761 627 3763 3217 635 629 1 6 3761 3762 3765 3760 4040 3217 1 6 615 3760 3765 4038 6557 612 1 6 3764 3760 3763 4038 4039 4040 1 5 2085 1567 3767 3768 6093 1 6 3766 1567 3768 3769 1571 1568 1 6 3766 3767 3769 6092 6093 6094 1 7 3768 3767 1571 6094 6088 6317 6318 1 6 3510 3511 3771 4522 4523 4524 1 6 3770 3511 3772 4524 4525 4528 2 6 3771 3511 3512 3773 4528 4529 2 6 3772 3512 3520 4529 4530 4531 2 6 1682 1683 3775 5391 5385 5383 2 6 3774 1683 3776 5620 5391 3778 2 6 3775 1683 1684 1686 3777 3778 2 6 3776 1686 3778 3779 3780 3781 2 6 3776 3777 3779 7791 5620 3775 2 6 3778 3777 3780 7798 7792 7791 2 6 3779 3777 3781 7798 3783 3782 2 6 3780 3777 1686 1687 1688 3782 2 6 3781 1688 1689 1691 3783 3780 2 6 3782 1691 3784 7798 3780 7799 2 6 3783 1691 1692 3785 7799 7800 2 6 3784 1692 3786 3787 3788 7800 1 6 3785 1692 1693 1694 3416 3787 1 6 3786 3416 3417 3785 3788 3789 2 6 3785 3787 3789 7800 7801 3790 1 6 3788 3787 3417 3418 3419 3790 2 6 3789 3419 3791 7801 3788 7802 1 6 3790 3419 3420 3792 3793 7802 1 6 3791 3420 3793 3794 3423 3421 1 6 3791 3792 3794 7802 7803 7804 1 6 3793 3792 3423 3795 7804 7805 1 6 3794 3423 3424 3796 7809 7805 1 6 3795 3424 3797 3952 7809 7810 1 6 3796 3424 3425 3798 3952 3953 1 6 3797 3425 3799 3953 3954 3955 1 6 3798 3425 3426 3427 3800 3955 1 6 3799 3427 3428 3801 3955 3956 1 6 3800 3428 3429 3802 3956 3957 1 6 3801 3429 3432 3442 3803 3957 1 6 3802 3442 3804 3957 4100 4239 1 6 3803 3442 3443 3805 4100 4101 1 6 3804 3443 3806 4101 4102 4103 1 6 3805 3443 3444 3807 4103 4104 1 6 3806 3444 3445 3808 4104 4105 1 6 3807 3445 3447 4105 4106 4107 2 6 3550 3551 3810 3833 3834 3835 2 6 3809 3551 3552 3811 3835 3836 2 6 3810 3552 3553 3812 3836 3837 2 6 3811 3553 3554 3813 3837 3838 2 6 3812 3554 3555 3814 3838 3839 2 6 3813 3555 3815 3839 3840 3841 2 6 3814 3555 3556 3816 3841 3842 2 6 3815 3556 3557 3558 3817 3842 2 6 3816 3558 3559 3818 3842 3843 2 6 3817 3559 3560 3562 3819 3843 2 6 3818 3562 3820 3843 3844 3845 2 6 3819 3562 3563 3821 3845 3846 2 6 3820 3563 3822 3846 3847 3848 2 6 3821 3563 3564 3823 3848 3849 2 6 3822 3564 3566 3849 3850 3567 2 6 2986 3545 3825 3826 3277 2985 2 6 3824 3545 3826 3827 3828 3829 2 6 3824 3825 3827 4069 4065 3277 2 6 3826 3825 3828 4756 4069 4763 2 6 3827 3825 3829 4763 4764 4765 2 6 3828 3825 3545 3546 3830 4765 2 6 3829 3546 3547 3831 4765 4766 2 6 3830 3547 3548 3832 4766 4767 2 6 3831 3548 3549 3833 4770 4767 2 6 3832 3549 3550 3809 3834 4770 2 6 3833 3809 3835 5016 4770 5024 2 6 3834 3809 3810 3836 5024 5025 2 6 3835 3810 3811 3837 5025 5026 2 6 3836 3811 3812 3838 4405 5026 2 6 3837 3812 3813 3839 3864 4405 2 6 3838 3813 3814 3840 3864 3865 2 6 3839 3814 3841 3865 3866 3867 2 6 3840 3814 3815 3842 3853 3867 2 6 3841 3815 3816 3817 3843 3853 2 6 3842 3817 3818 3819 3844 3853 2 6 3843 3819 3845 3853 3854 3855 2 6 3844 3819 3820 3846 3855 3856 2 6 3845 3820 3821 3847 3856 3857 2 6 3846 3821 3848 3860 3857 3876 2 6 3847 3821 3822 3849 3876 3877 2 6 3848 3822 3823 3850 3877 3878 2 6 3849 3823 3567 3878 3879 3568 1 6 2181 2199 2179 3852 2201 3129 1 6 2179 3851 27 26 3129 9781 2 6 3841 3842 3843 3844 3854 3867 2 6 3853 3844 3855 3867 3868 3869 2 6 3854 3844 3845 3856 3869 3870 2 6 3855 3845 3846 3857 3858 3870 2 6 3856 3846 3858 3859 3860 3847 2 6 3856 3857 3859 3870 3871 3872 2 6 3858 3857 3860 3872 3873 3874 2 6 3859 3857 3847 3874 3875 3876 1 6 3343 3344 3346 3862 6717 3342 1 6 3861 3346 3863 6716 6715 6717 1 7 3862 3346 6532 6531 3347 6533 6716 2 6 3838 3839 3865 4405 4406 4407 2 6 3864 3839 3840 3866 4407 4408 2 6 3865 3840 3867 4408 4409 3868 2 6 3866 3840 3841 3853 3854 3868 2 6 3867 3854 3869 4409 3866 4420 2 6 3868 3854 3855 3870 4420 4421 2 6 3869 3855 3856 3858 3871 4421 2 6 3870 3858 3872 4421 4422 4423 2 6 3871 3858 3859 3873 4423 4424 2 6 3872 3859 3874 4424 4425 4426 2 6 3873 3859 3860 3875 4426 4427 2 6 3874 3860 3876 4427 4428 3888 2 6 3875 3860 3847 3848 3877 3888 2 6 3876 3848 3849 3878 3888 3889 2 6 3877 3849 3850 3879 3889 3890 2 6 3878 3850 3568 3890 3891 3569 1 6 2507 3330 2509 3881 3331 3332 1 6 2509 3880 3334 6499 2511 3332 1 6 3337 3339 3127 1171 414 3128 1 6 3127 3339 3122 3884 3885 3340 1 6 3122 3883 3885 3886 3887 3121 1 6 3884 3883 3886 3342 6717 3340 1 6 3884 3885 3887 6538 6715 6717 1 6 3884 3886 3121 6713 6714 6538 2 6 3876 3877 3889 4428 3875 4251 2 6 3888 3877 3878 3890 4236 4251 2 6 3889 3878 3879 3891 4236 4237 2 6 3890 3879 3569 4237 3571 3570 1 6 3397 3398 3893 4746 4744 4743 1 6 3892 3398 3894 4743 4748 4749 1 6 3893 3398 3399 3895 4752 4749 1 6 3894 3399 3896 4661 4758 4752 1 6 3895 3399 3400 3401 3897 4661 1 6 3896 3401 3402 3898 4661 4662 1 6 3897 3402 3899 4662 4663 4664 1 6 3898 3402 3403 3900 4664 4665 1 6 3899 3403 3404 3679 3901 4665 1 6 3900 3679 3680 3682 3902 4665 1 5 3901 3682 3473 4665 3685 1 6 3634 3635 3904 4194 4195 4196 1 6 3903 3635 3636 3637 3905 4196 1 6 3904 3637 3906 4196 4197 4198 1 6 3905 3637 3638 3639 3907 4198 1 6 3906 3639 3640 3908 4198 4199 1 6 3907 3640 3642 3927 4199 4200 1 5 3643 3644 3910 3927 3928 1 7 3909 3644 3061 3062 3911 3928 3929 1 7 3910 3062 3063 3912 3929 3930 3931 1 6 3911 3063 3069 3913 3931 3932 1 6 3912 3069 3070 3914 3932 3933 1 6 3913 3070 3071 3915 3933 3934 1 6 3914 3071 3072 3916 3934 3935 1 6 3915 3072 3073 3917 3935 3936 1 6 3916 3073 3918 3349 3919 3936 1 6 3917 3073 3074 3075 3076 3349 1 6 3917 3349 3350 3351 3920 3936 1 6 3919 3351 3921 3936 3937 3938 1 6 3920 3351 3352 3922 3938 3939 1 6 3921 3352 3353 3923 3939 3940 1 6 3922 3353 3354 3924 3940 3941 1 6 3923 3354 3355 3925 3941 3942 1 6 3924 3355 3374 3942 3943 3375 1 6 3085 2482 2483 2484 3150 3152 1 6 3908 3642 3643 3909 3928 4200 1 6 3927 3909 3910 3929 4200 4201 1 6 3928 3910 3911 3930 4201 4202 1 6 3929 3911 3931 4202 4203 4204 1 5 3930 3911 3912 3932 4204 1 6 3931 3912 3913 3933 4204 4205 1 6 3932 3913 3914 3934 4205 4206 1 6 3933 3914 3915 3935 4206 4207 1 6 3934 3915 3916 3936 4207 3937 1 6 3935 3916 3917 3919 3920 3937 1 6 3936 3920 3938 4207 3935 4335 1 6 3937 3920 3921 3939 4335 4336 1 6 3938 3921 3922 3940 4336 4337 1 6 3939 3922 3923 3941 4337 4338 1 6 3940 3923 3924 3942 4338 4339 1 6 3941 3924 3925 3943 4339 4340 1 6 3942 3925 3375 4340 4341 4342 1 6 3673 3674 3676 3945 3950 3947 1 6 3944 3676 3158 3159 3946 3947 1 6 3945 3159 3947 3948 5922 3962 1 6 3945 3946 3948 3949 3950 3944 1 6 3947 3946 3949 5920 5921 5922 1 6 3947 3948 3950 3951 5919 5920 1 6 3947 3949 3951 3672 3673 3944 1 6 3950 3949 3672 5918 3671 5919 1 6 3796 3797 3953 7810 7811 7812 1 6 3952 3797 3798 3954 7812 7813 1 6 3953 3798 3955 7813 7814 7815 1 6 3954 3798 3799 3800 3956 7815 1 6 3955 3800 3801 3957 4238 7815 1 6 3956 3801 3802 3803 4238 4239 2 6 3187 3188 3959 3960 7588 7586 2 6 3958 3188 3960 3961 2890 2888 2 6 3958 3959 3961 7588 7589 7590 2 6 3960 3959 2890 7590 7591 7592 1 6 3159 3160 3963 5922 3946 5923 1 6 3962 3160 3964 3965 5923 5924 1 6 3963 3160 3965 3966 3967 3161 1 6 3963 3964 3966 5924 5942 5943 1 6 3965 3964 3967 5943 5948 5947 1 6 3966 3964 3161 5948 2488 2487 1 6 3485 3489 3969 6556 4038 4039 1 6 3968 3489 3490 3970 1597 6556 1 6 3969 3490 3971 6358 1595 1597 1 6 3970 3490 3491 6555 6357 6358 1 6 3698 3699 3973 4699 4700 4701 1 6 3972 3699 3700 3701 3974 4701 1 6 3973 3701 3975 4701 4702 4703 1 6 3974 3701 3702 3976 4703 4704 1 6 3975 3702 3703 3977 4704 4705 1 6 3976 3703 3704 3978 4705 4706 1 6 3977 3704 3705 3979 4706 4707 1 6 3978 3705 3706 3980 4707 4708 1 6 3979 3706 3707 3981 4708 4709 1 6 3980 3707 3708 3982 4709 4710 1 6 3981 3708 3709 3983 4710 4711 1 6 3982 3709 3710 3984 4711 4712 1 6 3983 3710 3711 3985 4712 4713 1 6 3984 3711 3712 3986 4713 4714 1 6 3985 3712 3713 3987 4714 4715 1 6 3986 3713 3714 3988 4715 4716 1 6 3987 3714 3715 3989 4716 4717 1 6 3988 3715 3716 3990 4717 4718 1 6 3989 3716 3717 3991 4718 4719 1 6 3990 3717 3718 3992 4719 4720 1 6 3991 3718 3719 3993 4720 4721 1 6 3992 3719 3720 3994 4439 4721 1 6 3993 3720 3721 3995 4439 4440 1 6 3994 3721 3722 3996 4440 4441 1 6 3995 3722 3723 3997 4441 4442 1 6 3996 3723 3724 3998 4442 4443 1 6 3997 3724 3725 3999 4443 4444 1 6 3998 3725 3726 4000 4444 4445 1 6 3999 3726 3727 4001 4445 4446 1 6 4000 3727 3728 4002 4070 4446 1 6 4001 3728 3729 4003 4008 4070 1 6 4002 3729 3730 4004 4008 4009 1 6 4003 3730 3731 4005 4009 4010 1 6 4004 3731 3732 3733 4006 4010 1 6 4005 3733 3734 3735 4007 4010 1 6 4006 3735 3737 4010 4011 4012 1 6 4002 4003 4009 4070 4071 4072 1 6 4008 4003 4004 4010 4072 4011 1 6 4009 4004 4005 4006 4007 4011 1 6 4010 4007 4012 4072 4009 4073 1 6 4011 4007 3737 3738 4013 4073 1 6 4012 3738 3739 4014 4073 4074 1 7 4013 3739 3740 4015 4074 4075 4076 1 6 4014 3740 3741 4016 4076 4077 1 6 4015 3741 3742 4017 4077 4078 1 6 4016 3742 3743 4018 4078 4079 1 6 4017 3743 3744 4019 4079 4080 1 6 4018 3744 3745 4020 4080 4081 1 6 4019 3745 3746 4021 4081 4082 1 6 4020 3746 4022 4030 4082 4083 1 6 4021 3746 3747 3748 4023 4030 1 6 4022 3748 4024 4030 4031 4032 1 6 4023 3748 3749 3750 4025 4032 1 6 4024 3750 3751 4026 4027 4032 1 6 4025 3751 4027 4028 4029 3752 1 6 4025 4026 4028 4032 4033 4034 1 6 4027 4026 4029 4034 4035 4036 1 6 4028 4026 3752 4036 4037 3753 1 6 4021 4022 4023 4031 4083 4084 1 6 4030 4023 4032 4084 4085 4033 1 6 4031 4023 4024 4025 4027 4033 1 6 4032 4027 4034 4085 4031 4462 1 6 4033 4027 4028 4035 4041 4462 1 6 4034 4028 4036 4041 4042 4043 1 6 4035 4028 4029 4037 4043 4044 1 6 4036 4029 3753 4044 4045 4046 1 6 3764 3765 4039 6556 6557 3968 1 6 4038 3765 4040 3968 3485 3484 1 6 4039 3765 3763 3217 3484 3218 1 6 4034 4035 4042 4462 4463 4464 1 6 4041 4035 4043 4464 4465 4466 1 6 4042 4035 4036 4044 4466 4467 1 6 4043 4036 4037 4045 4467 4468 1 6 4044 4037 4046 4468 4469 4047 1 6 4045 4037 3753 3755 3756 4047 1 6 4046 3756 3757 4048 4469 4045 1 6 4047 3757 3758 4049 4469 4470 1 6 4048 3758 3759 4050 4470 4209 1 6 4049 3759 4051 4052 4208 4209 1 6 4050 3759 4052 4053 4054 3265 1 6 4050 4051 4053 4208 4221 4222 1 6 4052 4051 4054 3268 4055 4222 1 6 4053 4051 3265 3266 3267 3268 1 5 4053 3268 3269 4056 4222 1 7 4055 3269 3270 4057 4222 4223 4224 2 7 4056 3270 3271 4058 4224 4225 4226 2 6 4057 3271 3272 4059 4226 4227 2 6 4058 3272 3273 4060 4227 4228 2 6 4059 3273 3274 4061 4062 4228 2 6 4060 3274 4062 4063 4064 3275 2 6 4060 4061 4063 4230 4228 4502 2 6 4062 4061 4064 4066 4067 4502 2 6 4063 4061 3275 3276 4065 4066 2 6 4064 3276 4066 4069 3826 3277 2 6 4064 4065 4063 4067 4068 4069 2 6 4063 4066 4068 4513 4502 4754 2 6 4067 4066 4069 4754 4755 4756 2 6 4068 4066 4065 3826 4756 3827 1 6 4001 4002 4008 4071 4446 4447 1 6 4070 4008 4072 4447 4448 4449 1 6 4071 4008 4009 4011 4073 4449 1 6 4072 4011 4012 4013 4074 4449 1 6 4073 4013 4014 4075 4449 4450 1 6 4074 4014 4076 4450 4451 4452 1 5 4075 4014 4015 4077 4452 1 6 4076 4015 4016 4078 4452 4453 1 6 4077 4016 4017 4079 4453 4454 1 6 4078 4017 4018 4080 4454 4455 1 6 4079 4018 4019 4081 4455 4456 1 6 4080 4019 4020 4082 4456 4457 1 6 4081 4020 4021 4083 4457 4458 1 6 4082 4021 4030 4084 4458 4459 1 6 4083 4030 4031 4085 4459 4460 1 6 4084 4031 4033 4460 4461 4462 2 6 2880 2881 4087 4089 7599 7600 2 6 4086 2881 2882 2883 4088 4089 2 6 4087 2883 4089 4090 4091 4092 2 7 4087 4088 4090 7598 7599 4086 7751 2 6 4089 4088 4091 7751 7753 4379 2 6 4090 4088 4092 4094 4378 4379 2 6 4091 4088 2883 2498 4093 4094 2 6 4092 2498 4094 4095 2809 2499 2 6 4092 4093 4095 4091 4378 4387 2 6 4094 4093 2809 4387 4386 4388 2 6 3542 3543 4097 4098 4099 3544 2 6 3542 4096 4098 4365 4372 3541 2 6 4097 4096 4099 4365 4366 4367 2 6 4098 4096 3544 4367 3094 3093 1 6 3803 3804 4101 4239 4240 4241 1 6 4100 3804 3805 4102 4241 4242 1 6 4101 3805 4103 4242 4243 4244 1 6 4102 3805 3806 4104 4111 4244 1 6 4103 3806 3807 4105 4111 4112 1 6 4104 3807 3808 4106 4112 4113 1 6 4105 3808 4107 4108 4109 4113 1 6 4106 3808 3447 3448 3454 4108 1 6 4107 3454 4106 4109 4110 3456 1 6 4106 4108 4110 4113 4114 4115 1 6 4109 4108 3456 4115 4394 3464 1 6 4103 4104 4112 4244 4245 4246 1 6 4111 4104 4105 4113 4249 4246 1 6 4112 4105 4106 4109 4114 4249 1 6 4113 4109 4115 4249 4391 4392 1 6 4114 4109 4110 4392 4393 4394 2 7 3522 3525 4117 4530 4531 3521 4119 2 5 4116 3525 3526 4118 4119 2 6 4117 3526 4119 4120 3529 9786 2 7 4117 4118 4120 4121 9784 4530 4116 2 6 4119 4118 4121 4122 9786 9789 2 6 4119 4120 4122 4123 4395 9784 2 6 4121 4120 4123 4124 9789 7172 2 6 4121 4122 4124 4125 4126 4395 2 6 4123 4122 4125 7171 4140 7172 2 6 4123 4124 4126 4127 4128 4140 2 6 4123 4125 4127 4395 4396 4397 1 6 4126 4125 4128 4129 4130 4397 1 6 4127 4125 4129 4136 4139 4140 1 6 4127 4128 4130 4131 4135 4136 1 6 4127 4129 4131 4132 4397 4398 1 6 4130 4129 4132 4133 4134 4135 1 6 4130 4131 4133 4401 4398 4410 1 6 4132 4131 4134 4410 4411 4412 1 6 4133 4131 4135 4412 4413 7164 1 6 4134 4131 4129 4136 4137 7164 1 6 4135 4129 4128 4137 4138 4139 1 6 4135 4136 4138 7163 7161 7164 1 6 4137 4136 4139 7168 7163 7169 1 6 4138 4136 4128 4140 7169 7170 2 6 4139 4128 4125 7170 7171 4124 1 6 3580 3581 4142 4268 4269 4270 1 6 4141 3581 3582 4143 4270 4271 1 6 4142 3582 3583 4144 4271 4272 1 6 4143 3583 3584 4145 4272 4273 1 6 4144 3584 3585 4146 4273 4274 1 6 4145 3585 3586 4147 4274 4275 1 6 4146 3586 3587 4148 4275 4276 1 6 4147 3587 3588 3589 4149 4276 1 6 4148 3589 4150 4276 4277 4278 1 6 4149 3589 3590 4151 4278 4279 1 6 4150 3590 3591 4152 4279 4280 1 6 4151 3591 3592 4153 4280 4281 1 6 4152 3592 3593 4154 4281 4282 1 6 4153 3593 3594 4155 4282 4283 1 6 4154 3594 3595 4156 4283 4284 1 6 4155 3595 3596 4157 4284 4285 1 6 4156 3596 3597 4158 4285 4286 1 6 4157 3597 3598 4159 4286 4287 1 6 4158 3598 3599 4160 4287 4288 1 6 4159 3599 3600 4161 4288 4289 1 6 4160 3600 3601 3602 4162 4289 1 6 4161 3602 4163 4289 4290 4291 1 6 4162 3602 3603 4164 4291 4292 1 6 4163 3603 3604 4165 4292 4293 1 6 4164 3604 3605 4166 4293 4294 1 6 4165 3605 3606 4167 4294 4295 1 6 4166 3606 3607 4168 4295 4296 1 6 4167 3607 3608 3609 4169 4296 1 6 4168 3609 4170 4296 4297 4298 1 6 4169 3609 3610 4171 4298 4299 1 6 4170 3610 3611 4172 4299 4300 1 6 4171 3611 3612 4173 4300 4301 1 6 4172 3612 3613 4174 4301 4302 1 6 4173 3613 3614 4175 4302 4303 1 6 4174 3614 3615 4176 4303 4304 1 6 4175 3615 3616 4177 4304 4305 1 6 4176 3616 3617 4178 4305 4306 1 6 4177 3617 3618 4179 4306 4307 1 6 4178 3618 3619 4180 4307 4308 1 6 4179 3619 3620 4181 4308 4309 1 6 4180 3620 3621 4182 4309 4310 1 6 4181 3621 3622 4183 4310 4311 1 6 4182 3622 3623 4184 4311 4312 1 6 4183 3623 3624 4185 4312 4313 1 6 4184 3624 3625 4186 4313 4314 1 6 4185 3625 3626 4187 4314 4315 1 6 4186 3626 3627 4188 4315 4316 1 6 4187 3627 3628 4189 4316 4317 1 6 4188 3628 3629 4190 4317 4318 1 6 4189 3629 3630 4191 4318 4319 1 6 4190 3630 3631 4192 4319 4320 1 6 4191 3631 3632 4193 4320 4321 1 6 4192 3632 3633 3634 4194 4321 1 6 4193 3634 3903 4195 4321 4322 1 6 4194 3903 4196 4322 4323 4324 1 6 4195 3903 3904 3905 4197 4324 1 6 4196 3905 4198 4324 4325 4326 1 6 4197 3905 3906 3907 4199 4326 1 6 4198 3907 3908 4200 4326 4327 1 6 4199 3908 3927 3928 4201 4327 1 6 4200 3928 3929 4202 4327 4328 1 6 4201 3929 3930 4203 4328 4329 1 6 4202 3930 4204 4329 4330 4331 1 6 4203 3930 3931 3932 4205 4331 1 6 4204 3932 3933 4206 4331 4332 1 6 4205 3933 3934 4207 4332 4333 1 7 4206 3934 3935 3937 4333 4334 4335 1 6 4050 4052 4209 4210 4211 4221 1 6 4050 4208 4210 4470 4049 4477 1 6 4209 4208 4211 4212 4477 4478 1 6 4210 4208 4212 4213 4220 4221 1 6 4210 4211 4213 4214 4478 4479 1 6 4212 4211 4214 4215 4216 4220 1 6 4212 4213 4215 4479 4480 4481 1 6 4214 4213 4216 4217 4481 4482 1 6 4215 4213 4217 4218 4219 4220 1 6 4215 4216 4218 4232 4482 4483 1 6 4217 4216 4219 4232 4233 4234 1 6 4218 4216 4220 4224 4234 4223 1 6 4219 4216 4213 4211 4221 4223 1 6 4220 4211 4208 4052 4222 4223 1 6 4221 4052 4053 4055 4056 4223 1 6 4222 4056 4224 4221 4220 4219 2 6 4223 4056 4057 4225 4234 4219 2 6 4224 4057 4226 4235 4234 4488 2 5 4225 4057 4058 4227 4488 2 7 4226 4058 4059 4228 4229 4487 4488 2 6 4227 4059 4229 4230 4062 4060 2 6 4227 4228 4230 4489 4487 4500 2 6 4229 4228 4062 4500 4501 4502 2 6 3147 3412 3146 3145 9791 3413 1 6 4217 4218 4233 4483 4484 4485 2 6 4232 4218 4234 4235 4485 4486 2 6 4233 4218 4235 4225 4224 4219 2 6 4233 4234 4225 4486 4487 4488 2 6 3889 3890 4237 4251 4252 4256 2 6 4236 3890 3891 3571 4256 4257 1 6 3956 3957 4239 7815 7816 4503 1 6 4238 3957 3803 4100 4240 4503 1 6 4239 4100 4241 4503 4504 4505 1 6 4240 4100 4101 4242 4505 4506 1 6 4241 4101 4102 4243 4416 4506 1 6 4242 4102 4244 4416 4417 4418 1 6 4243 4102 4103 4111 4245 4418 1 6 4244 4111 4246 4247 4418 4419 1 6 4245 4111 4247 4248 4249 4112 1 6 4245 4246 4248 4419 7829 7830 1 6 4247 4246 4249 4391 4739 7830 1 6 4248 4246 4112 4113 4114 4391 1 6 3341 3338 1524 1525 2205 2206 2 6 3889 4236 4252 4253 4428 3888 2 6 4251 4236 4253 4254 4255 4256 2 6 4251 4252 4254 4647 4428 6892 2 6 4253 4252 4255 4729 4730 6892 2 6 4254 4252 4256 4729 4261 4260 2 6 4255 4252 4236 4237 4257 4260 2 6 4256 4237 3571 3572 4258 4260 2 6 4257 3572 3573 3574 4259 4260 2 6 4258 3574 4260 4261 4262 4263 2 6 4258 4259 4261 4256 4257 4255 2 6 4260 4259 4262 4732 4729 4255 2 6 4261 4259 4263 6901 4732 6902 1 6 4262 4259 3574 3575 4264 6902 1 6 4263 3575 3576 4265 5231 6902 1 6 4264 3576 3577 4266 5231 5232 1 6 4265 3577 3578 4267 5232 5233 1 6 4266 3578 4268 5233 5234 4269 1 6 4267 3578 3579 3580 4141 4269 1 6 4268 4141 4270 5234 4267 5451 1 6 4269 4141 4142 4271 5451 5452 1 6 4270 4142 4143 4272 5452 5453 1 6 4271 4143 4144 4273 5453 5454 1 6 4272 4144 4145 4274 5457 5454 1 6 4273 4145 4146 4275 5469 5457 1 6 4274 4146 4147 4276 5469 5470 1 6 4275 4147 4148 4149 4277 5470 1 6 4276 4149 4278 5470 5471 5472 1 6 4277 4149 4150 4279 5472 5473 1 6 4278 4150 4151 4280 5473 5474 1 6 4279 4151 4152 4281 5046 5474 1 6 4280 4152 4153 4282 5046 5047 1 6 4281 4153 4154 4283 5047 5048 1 6 4282 4154 4155 4284 5048 5049 1 6 4283 4155 4156 4285 5049 5050 1 6 4284 4156 4157 4286 5050 5051 1 6 4285 4157 4158 4287 5051 5052 1 6 4286 4158 4159 4288 4923 5052 1 6 4287 4159 4160 4289 4923 4924 1 6 4288 4160 4161 4162 4290 4924 1 6 4289 4162 4291 4924 4925 4926 1 6 4290 4162 4163 4292 4926 4927 1 6 4291 4163 4164 4293 4927 4928 1 6 4292 4164 4165 4294 4928 4929 1 6 4293 4165 4166 4295 4929 4930 1 6 4294 4166 4167 4296 4930 4931 1 6 4295 4167 4168 4169 4297 4931 1 6 4296 4169 4298 4771 4931 4932 1 6 4297 4169 4170 4299 4771 4772 1 6 4298 4170 4171 4300 4772 4773 1 6 4299 4171 4172 4301 4773 4774 1 6 4300 4172 4173 4302 4774 4775 1 6 4301 4173 4174 4303 4775 4776 1 6 4302 4174 4175 4304 4776 4777 1 6 4303 4175 4176 4305 4777 4778 1 6 4304 4176 4177 4306 4778 4779 1 6 4305 4177 4178 4307 4779 4780 1 6 4306 4178 4179 4308 4780 4781 1 6 4307 4179 4180 4309 4781 4782 1 6 4308 4180 4181 4310 4566 4782 1 6 4309 4181 4182 4311 4566 4567 1 6 4310 4182 4183 4312 4567 4568 1 6 4311 4183 4184 4313 4568 4569 1 6 4312 4184 4185 4314 4569 4570 1 6 4313 4185 4186 4315 4570 4571 1 6 4314 4186 4187 4316 4571 4572 1 6 4315 4187 4188 4317 4572 4573 1 6 4316 4188 4189 4318 4573 4574 1 6 4317 4189 4190 4319 4574 4575 1 6 4318 4190 4191 4320 4575 4576 1 6 4319 4191 4192 4321 4576 4577 1 6 4320 4192 4193 4194 4322 4577 1 6 4321 4194 4195 4323 4577 4578 1 6 4322 4195 4324 4578 4579 4580 1 6 4323 4195 4196 4197 4325 4580 1 6 4324 4197 4326 4580 4581 4582 1 6 4325 4197 4198 4199 4327 4582 1 6 4326 4199 4200 4201 4328 4582 1 6 4327 4201 4202 4329 4582 4583 1 6 4328 4202 4203 4330 4583 4584 1 6 4329 4203 4331 4584 4585 4589 1 7 4330 4203 4204 4205 4332 4589 4590 1 6 4331 4205 4206 4333 4590 4591 1 6 4332 4206 4207 4334 4591 4592 1 6 4333 4207 4335 4336 4429 4592 1 5 4334 4207 3937 3938 4336 1 6 4335 3938 3939 4337 4334 4429 1 6 4336 3939 3940 4338 4429 4430 1 6 4337 3940 3941 4339 4430 4431 1 6 4338 3941 3942 4340 4431 4432 1 6 4339 3942 3943 4341 4432 4433 1 6 4340 3943 4342 4433 4434 4435 1 6 4341 3943 3375 3376 4343 4435 1 6 4342 3376 3377 4344 4345 4435 1 6 4343 3377 4345 4346 4347 3378 1 6 4343 4344 4346 4435 4436 4437 1 6 4345 4344 4347 4437 4438 4348 1 6 4346 4344 3378 3645 3646 4348 1 6 4347 3646 4349 4350 4438 4346 1 6 4348 3646 4350 4351 4352 3647 1 6 4348 4349 4351 4601 4438 4602 1 6 4350 4349 4352 4602 4603 4604 1 6 4351 4349 3647 3648 4353 4604 1 6 4352 3648 3657 4354 4355 4604 1 6 4353 3657 4355 4356 4357 4358 1 6 4353 4354 4356 4604 4605 4606 1 6 4355 4354 4357 4361 4362 4606 1 6 4356 4354 4358 4359 4360 4361 1 6 4357 4354 4359 4371 3658 3657 1 6 4357 4358 4360 4368 4369 4371 1 6 4357 4359 4361 4364 4368 4614 1 6 4357 4360 4356 4362 4363 4364 1 6 4356 4361 4363 4606 4607 4608 1 6 4362 4361 4364 4611 4608 4612 1 6 4363 4361 4360 4612 4613 4614 2 6 4097 4098 4366 4372 4373 4374 2 6 4365 4098 4367 4374 4375 4376 2 7 4366 4098 4099 3094 4376 1626 1624 1 6 4360 4359 4369 4370 4614 4615 1 6 4368 4359 4370 4371 9794 9793 1 6 4368 4369 9794 4642 4637 4615 1 6 4369 4359 4358 3658 9793 3659 2 6 4097 4365 4373 7212 3540 3541 2 6 4372 4365 4374 7212 7210 7209 2 6 4373 4365 4366 4375 7209 7213 2 6 4374 4366 4376 4377 7213 7214 2 6 4375 4366 4367 4377 1627 1626 2 5 4375 4376 1627 7214 7215 2 6 4091 4094 4379 4380 4381 4387 2 7 4091 4378 4380 7753 4090 7752 7754 2 6 4379 4378 4381 4382 7754 7755 2 6 4380 4378 4382 4383 4384 4387 2 6 4380 4381 4383 7755 7756 7764 2 6 4382 4381 4384 4385 4389 7764 2 6 4383 4381 4385 3140 4386 4387 2 6 4383 4384 3140 4389 4390 3141 2 6 3140 4384 4387 4095 4388 3139 2 6 4386 4384 4381 4378 4094 4095 2 6 4386 4095 2809 2810 2813 3139 2 6 4383 4385 4390 7764 7765 7766 2 6 4389 4385 3141 7766 7767 3142 1 6 4249 4114 4392 4248 4739 4740 1 6 4391 4114 4115 4393 4402 4740 1 6 4392 4115 4394 4402 4403 4404 1 6 4393 4115 4110 3464 4404 3465 2 5 4121 4123 4126 4396 9784 2 7 4395 4126 4397 4399 4528 4529 9784 1 6 4396 4126 4127 4130 4398 4399 1 6 4397 4130 4399 4400 4401 4132 1 6 4397 4398 4400 4525 4528 4396 1 5 4399 4398 4401 4527 4525 1 7 4400 4398 4132 4410 4534 4527 4535 1 6 4392 4393 4403 4740 4741 4742 1 6 4402 4393 4404 4742 4743 4744 1 6 4403 4393 4394 3465 4744 4745 2 6 3837 3838 3864 4406 5026 5027 2 6 4405 3864 4407 5027 5028 5029 2 6 4406 3864 3865 4408 5029 5030 2 6 4407 3865 3866 4409 5030 5031 2 6 4408 3866 3868 4420 5031 5032 1 6 4401 4132 4133 4411 4535 4536 1 6 4410 4133 4412 4545 4539 4536 1 6 4411 4133 4134 4413 4414 4545 1 6 4412 4134 4414 4415 7164 7165 1 6 4412 4413 4415 4545 4544 4648 1 6 4414 4413 4649 4648 7165 7166 1 6 4242 4243 4417 4506 4507 4508 1 6 4416 4243 4418 4508 4509 4510 1 6 4417 4243 4244 4245 4419 4510 1 6 4418 4245 4247 7828 4510 7829 2 6 4409 3868 3869 4421 5032 5033 2 6 4420 3869 3870 3871 4422 5033 2 6 4421 3871 4423 5033 5034 5035 2 6 4422 3871 3872 4424 5035 5036 2 6 4423 3872 3873 4425 4643 5036 2 6 4424 3873 4426 4643 4644 4645 2 6 4425 3873 3874 4427 4645 4646 2 6 4426 3874 3875 4428 4646 4647 2 6 4427 3875 3888 4647 4253 4251 1 6 4334 4336 4337 4430 4592 4593 1 6 4429 4337 4338 4431 4593 4594 1 6 4430 4338 4339 4432 4594 4595 1 6 4431 4339 4340 4433 4595 4596 1 6 4432 4340 4341 4434 4596 4597 1 6 4433 4341 4435 4597 4598 4436 1 6 4434 4341 4342 4343 4345 4436 1 6 4435 4345 4437 4598 4434 4599 1 6 4436 4345 4346 4438 4599 4600 1 6 4437 4346 4348 4600 4601 4350 1 6 3993 3994 4440 4721 4722 4723 1 6 4439 3994 3995 4441 4723 4724 1 6 4440 3995 3996 4442 4724 4725 1 6 4441 3996 3997 4443 4725 4726 1 6 4442 3997 3998 4444 4726 4727 1 6 4443 3998 3999 4445 4727 4728 1 6 4444 3999 4000 4446 4728 4658 1 6 4445 4000 4001 4070 4447 4658 1 6 4446 4070 4071 4448 4658 4659 1 6 4447 4071 4449 4659 4660 4450 1 6 4448 4071 4072 4073 4074 4450 1 6 4449 4074 4075 4451 4660 4448 1 6 4450 4075 4452 4669 4738 4660 1 6 4451 4075 4076 4077 4453 4669 1 6 4452 4077 4078 4454 4669 4670 1 6 4453 4078 4079 4455 4670 4671 1 6 4454 4079 4080 4456 4671 4672 1 6 4455 4080 4081 4457 4672 4673 1 6 4456 4081 4082 4458 4673 4674 1 6 4457 4082 4083 4459 4674 4675 1 6 4458 4083 4084 4460 4675 4676 1 6 4459 4084 4085 4461 4676 4677 1 6 4460 4085 4462 4677 4678 4679 1 7 4461 4085 4033 4034 4041 4463 4679 1 5 4462 4041 4464 4679 4680 1 6 4463 4041 4042 4465 4471 4680 1 6 4464 4042 4466 4471 4472 4473 1 6 4465 4042 4043 4467 4473 4474 1 6 4466 4043 4044 4468 4474 4475 1 6 4467 4044 4045 4469 4475 4476 1 6 4468 4045 4047 4048 4470 4476 1 6 4469 4048 4049 4209 4476 4477 1 6 4464 4465 4472 4680 4681 4682 1 6 4471 4465 4473 4682 4683 4684 1 6 4472 4465 4466 4474 4684 4685 1 6 4473 4466 4467 4475 4685 4686 1 6 4474 4467 4468 4476 4686 4687 1 6 4475 4468 4469 4470 4477 4687 1 6 4476 4470 4209 4210 4478 4687 1 6 4477 4210 4212 4479 4687 5213 1 6 4478 4212 4214 4480 5213 5214 1 6 4479 4214 4481 5214 5215 5216 1 6 4480 4214 4215 4482 4490 5216 1 6 4481 4215 4217 4483 4490 4491 1 6 4482 4217 4232 4484 4491 4492 1 6 4483 4232 4485 4492 4493 4494 2 6 4484 4232 4233 4486 4494 4495 2 6 4485 4233 4235 4487 4489 4495 2 6 4486 4235 4488 4227 4489 4229 2 5 4487 4235 4227 4226 4225 2 6 4486 4487 4229 4495 4496 4500 1 6 4481 4482 4491 4981 4989 5216 1 6 4490 4482 4483 4492 4981 4982 1 6 4491 4483 4484 4493 4982 4983 1 6 4492 4484 4494 4983 4984 4985 2 6 4493 4484 4485 4495 4985 4497 2 6 4494 4485 4486 4489 4496 4497 2 6 4495 4489 4497 4498 4499 4500 2 6 4495 4496 4498 4985 4494 4986 2 6 4497 4496 4499 4986 4987 4988 2 5 4498 4496 4500 4988 4511 2 7 4499 4496 4489 4229 4230 4501 4511 2 6 4500 4230 4502 4511 4512 4513 2 6 4501 4230 4062 4513 4067 4063 1 6 4239 4240 4504 7816 4238 7817 1 6 4503 4240 4505 7817 7818 7819 1 6 4504 4240 4241 4506 7819 7820 1 6 4505 4241 4242 4416 4507 7820 1 6 4506 4416 4508 7820 7821 7822 1 6 4507 4416 4417 4509 7822 7823 1 6 4508 4417 4510 7823 7824 7825 1 6 4509 4417 4418 7825 7828 4419 2 7 4500 4501 4512 4988 4499 5002 4999 2 6 4511 4501 4513 4754 4759 5002 2 5 4512 4501 4502 4067 4754 1 6 426 411 4515 4516 5611 5612 1 6 4514 411 4516 4517 4521 410 1 6 4514 4515 4517 4518 5611 5615 1 6 4516 4515 4518 4519 4520 4521 1 6 4516 4517 4519 9734 7508 5615 1 6 4518 4517 4520 5235 9734 9678 1 6 4519 4517 4521 5235 5236 5237 1 6 4520 4517 4515 410 5237 421 1 7 3507 3510 3770 4523 6693 6695 6704 1 6 4522 3770 4524 6694 6693 4532 1 6 4523 3770 3771 4525 4526 4532 1 7 4524 3771 4526 4527 4400 4399 4528 1 6 4524 4525 4527 4532 4533 4534 1 5 4526 4525 4400 4534 4401 1 6 4399 4525 3771 3772 4529 4396 2 6 4528 3772 3773 4530 4396 9784 2 6 4529 3773 4531 4116 4119 9784 2 5 4530 3773 4116 3521 3520 1 6 4524 4526 4533 5156 4523 6694 1 6 4532 4526 4534 5156 5157 4666 1 6 4533 4526 4527 4401 4535 4666 1 6 4534 4401 4410 4536 4537 4666 1 6 4535 4410 4537 4538 4539 4411 1 6 4535 4536 4538 4666 4667 4668 1 6 4537 4536 4539 4540 4546 4668 1 6 4538 4536 4540 4541 4545 4411 1 6 4538 4539 4541 4542 4546 4547 1 6 4540 4539 4542 4543 4544 4545 1 6 4540 4541 4543 4550 4547 4551 1 6 4542 4541 4544 4551 4552 4553 1 6 4543 4541 4545 4414 4648 4553 1 6 4544 4541 4539 4411 4412 4414 1 6 4538 4540 4547 4548 9762 4668 1 6 4546 4540 4548 4549 4550 4542 1 6 4546 4547 4549 4557 4560 9762 1 6 4548 4547 4550 4557 4558 4559 1 6 4549 4547 4542 4551 6763 4559 1 6 4550 4542 4543 4552 7144 6763 1 6 4551 4543 4553 4554 7145 7144 1 6 4552 4543 4554 4555 4544 4648 1 6 4552 4553 4555 4556 7145 7146 1 6 4554 4553 4556 4648 4649 7153 1 6 4554 4555 7146 7148 7149 7153 1 6 4548 4549 4558 4560 4561 4562 1 6 4557 4549 4559 4565 4562 6764 1 6 4558 4549 6763 6762 6764 4550 1 7 4548 4557 4561 9762 9761 6675 9792 1 6 4560 4557 4562 4563 6674 6675 1 6 4561 4557 4563 4564 4565 4558 1 6 4561 4562 4564 6665 6666 6674 1 6 4563 4562 4565 6673 6665 6790 1 6 4564 4562 4558 6764 6765 6790 1 6 4309 4310 4567 4782 4783 4784 1 6 4566 4310 4311 4568 4784 4785 1 6 4567 4311 4312 4569 4785 4786 1 6 4568 4312 4313 4570 4786 4787 1 6 4569 4313 4314 4571 4787 4788 1 6 4570 4314 4315 4572 4788 4789 1 6 4571 4315 4316 4573 4789 4790 1 6 4572 4316 4317 4574 4790 4791 1 6 4573 4317 4318 4575 4791 4792 1 6 4574 4318 4319 4576 4792 4793 1 6 4575 4319 4320 4577 4793 4794 1 6 4576 4320 4321 4322 4578 4794 1 6 4577 4322 4323 4579 4794 4795 1 6 4578 4323 4580 4795 4796 4797 1 6 4579 4323 4324 4325 4581 4797 1 6 4580 4325 4582 4797 4798 4583 1 6 4581 4325 4326 4327 4328 4583 1 6 4582 4328 4329 4584 4798 4581 1 7 4583 4329 4330 4585 4586 4804 4798 1 6 4584 4330 4586 4587 4588 4589 1 5 4584 4585 4587 4804 4805 1 6 4586 4585 4588 4805 4806 4807 1 6 4587 4585 4589 4807 4808 4809 1 6 4588 4585 4330 4331 4590 4809 1 5 4589 4331 4332 4591 4809 1 6 4590 4332 4333 4592 4809 4810 1 6 4591 4333 4334 4429 4593 4810 1 6 4592 4429 4430 4594 4810 4811 1 6 4593 4430 4431 4595 4811 4812 1 6 4594 4431 4432 4596 4812 4813 1 6 4595 4432 4433 4597 4813 4814 1 6 4596 4433 4434 4598 4814 4815 1 6 4597 4434 4436 4599 4815 4816 1 6 4598 4436 4437 4600 4816 4817 1 6 4599 4437 4438 4601 4817 4818 1 6 4600 4438 4350 4602 4821 4818 1 6 4601 4350 4351 4603 4821 4822 1 6 4602 4351 4604 4825 4822 4826 1 7 4603 4351 4352 4353 4355 4605 4826 1 5 4604 4355 4606 4826 4827 1 6 4605 4355 4356 4362 4607 4827 1 5 4606 4362 4608 4609 4827 1 6 4607 4362 4609 4610 4611 4363 1 7 4607 4608 4610 4827 4828 4829 4830 1 6 4609 4608 4611 4830 4831 4832 1 6 4610 4608 4363 4612 4832 4834 1 6 4611 4363 4364 4613 4837 4834 1 6 4612 4364 4614 4616 4617 4837 1 6 4613 4364 4360 4368 4615 4616 1 7 4614 4368 4616 4637 4634 4619 4370 1 6 4614 4615 4613 4617 4618 4619 1 6 4613 4616 4618 4837 4622 4838 1 6 4617 4616 4619 4620 4621 4622 1 6 4618 4616 4620 4633 4634 4615 1 6 4618 4619 4621 4628 4629 4633 1 6 4618 4620 4622 4623 4624 4628 1 6 4618 4621 4623 4840 4838 4617 1 6 4622 4621 4624 4625 4840 4841 1 6 4623 4621 4625 4626 4627 4628 1 6 4623 4624 4626 4841 4860 4853 1 6 4625 4624 4627 4860 4861 4862 1 6 4626 4624 4628 4862 4863 4630 1 6 4627 4624 4621 4620 4629 4630 1 6 4628 4620 4630 4631 4632 4633 1 6 4628 4629 4631 4863 4627 4864 1 6 4630 4629 4632 4638 4868 4864 1 6 4631 4629 4633 4638 4639 4635 1 6 4632 4629 4620 4619 4634 4635 1 6 4633 4619 4635 4636 4637 4615 1 6 4633 4634 4636 4639 4632 4640 1 6 4635 4634 4637 4640 4641 4642 1 5 4636 4634 4615 4642 4370 1 6 4631 4632 4639 4868 4912 9760 1 6 4638 4632 4635 4640 4912 4913 1 6 4639 4635 4636 4641 4916 4913 1 6 4640 4636 4642 4910 4916 4909 1 7 4641 4636 4637 4908 4909 9794 4370 2 6 4424 4425 4644 5036 5037 5044 2 6 4643 4425 4645 5045 5044 6889 2 6 4644 4425 4426 4646 6890 6889 2 6 4645 4426 4427 4647 6890 6891 2 6 4646 4427 4428 4253 6891 6892 1 6 4544 4414 4553 4555 4649 4415 1 6 4555 4648 4415 7166 7154 7153 1 6 422 52 53 4651 4652 9684 1 6 4650 53 4652 4653 4657 54 1 6 4650 4651 4653 4654 9683 9684 1 6 4652 4651 4654 4655 4656 4657 1 6 4652 4653 4655 9682 9680 9683 1 6 4654 4653 4656 9682 9685 9686 1 7 4655 4653 4657 5380 9688 9686 9689 1 6 4656 4653 4651 54 5380 55 1 6 4446 4447 4659 4728 4445 4736 1 6 4658 4447 4448 4660 4736 4737 1 6 4659 4448 4450 4737 4738 4451 1 6 3895 3896 3897 4662 7841 4758 1 6 4661 3897 3898 4663 7841 7842 1 6 4662 3898 4664 7842 4689 4688 1 6 4663 3898 3899 4665 3685 4688 1 6 4664 3899 3900 3901 3902 3685 1 6 4534 4535 4537 4667 5157 4533 1 6 4666 4537 4668 9750 5157 9761 1 6 4667 4537 4538 9761 9762 4546 1 7 4451 4452 4453 4670 4980 4738 5194 1 6 4669 4453 4454 4671 5194 5195 1 6 4670 4454 4455 4672 5195 5196 1 6 4671 4455 4456 4673 5196 5197 1 6 4672 4456 4457 4674 5197 5198 1 6 4673 4457 4458 4675 5198 5199 1 6 4674 4458 4459 4676 5199 5200 1 6 4675 4459 4460 4677 5200 5201 1 6 4676 4460 4461 4678 5201 5202 1 6 4677 4461 4679 5202 5203 5204 1 6 4678 4461 4462 4463 4680 5204 1 7 4679 4463 4464 4471 4681 5204 5205 1 5 4680 4471 4682 5205 5206 1 7 4681 4471 4472 4683 5206 5207 5208 1 5 4682 4472 4684 5208 5209 1 7 4683 4472 4473 4685 5209 5210 5211 1 6 4684 4473 4474 4686 5211 5212 1 6 4685 4474 4475 4687 5212 5213 1 6 4686 4475 4476 4477 4478 5213 1 6 4664 3685 3686 3687 4689 4663 1 6 4688 3687 4690 7842 4663 7843 1 6 4689 3687 3688 4691 7843 7844 1 6 4690 3688 3689 4692 5158 7844 1 6 4691 3689 3690 3692 4693 5158 1 6 4692 3692 4694 5158 5159 5160 1 6 4693 3692 3693 4695 5160 5161 1 6 4694 3693 4696 5161 5162 5163 1 6 4695 3693 3694 3695 4697 5163 1 6 4696 3695 4698 5163 5164 5165 1 6 4697 3695 3696 4699 5165 4700 1 6 4698 3696 3697 3698 3972 4700 1 6 4699 3972 4701 5165 4698 7854 1 6 4700 3972 3973 3974 4702 7854 1 6 4701 3974 4703 7308 7854 7855 1 6 4702 3974 3975 4704 7308 7309 1 6 4703 3975 3976 4705 7309 7310 1 6 4704 3976 3977 4706 7310 7311 1 6 4705 3977 3978 4707 7311 7312 1 6 4706 3978 3979 4708 5170 7312 1 6 4707 3979 3980 4709 5170 5171 1 6 4708 3980 3981 4710 5171 5172 1 6 4709 3981 3982 4711 5172 5173 1 6 4710 3982 3983 4712 5173 5174 1 6 4711 3983 3984 4713 5174 5175 1 6 4712 3984 3985 4714 5175 5176 1 6 4713 3985 3986 4715 5176 5177 1 6 4714 3986 3987 4716 4965 5177 1 6 4715 3987 3988 4717 4965 4966 1 6 4716 3988 3989 4718 4966 4967 1 6 4717 3989 3990 4719 4967 4968 1 6 4718 3990 3991 4720 4968 4969 1 6 4719 3991 3992 4721 4969 4970 1 6 4720 3992 3993 4439 4722 4970 1 6 4721 4439 4723 4970 4971 4972 1 6 4722 4439 4440 4724 4972 4973 1 6 4723 4440 4441 4725 4973 4974 1 6 4724 4441 4442 4726 4733 4974 1 6 4725 4442 4443 4727 4733 4734 1 6 4726 4443 4444 4728 4734 4735 1 6 4727 4444 4445 4658 4735 4736 2 6 4254 4255 4730 4731 4732 4261 2 6 4254 4729 4731 6892 6893 6894 2 6 4730 4729 4732 6894 6895 6896 2 6 4731 4729 4261 6896 6901 4262 1 6 4725 4726 4734 4974 4975 4976 1 6 4733 4726 4727 4735 4976 4977 1 6 4734 4727 4728 4736 4977 4978 1 6 4735 4728 4658 4659 4737 4978 1 6 4736 4659 4660 4738 4978 4979 1 6 4737 4660 4451 4979 4980 4669 1 6 4248 4391 4740 5003 7830 7831 1 6 4739 4391 4392 4402 4741 5003 1 6 4740 4402 4742 4753 5003 5004 1 6 4741 4402 4403 4743 4753 4748 1 6 4742 4403 4744 3892 3893 4748 1 6 4743 4403 4404 4745 4746 3892 1 6 4744 4404 3465 3466 3468 4746 1 6 4745 3468 4747 3397 3892 4744 1 6 4746 3468 2172 2173 3395 3397 1 6 4743 3893 4749 4750 4753 4742 1 6 4748 3893 4750 4751 4752 3894 1 6 4748 4749 4751 5005 4753 7837 1 6 4750 4749 4752 4757 7837 7838 1 6 4751 4749 3894 4757 4758 3895 1 6 4741 4742 4748 5004 5005 4750 2 7 4513 4067 4068 4755 4512 4759 4760 2 5 4754 4068 4756 4760 4761 2 7 4755 4068 4069 3827 4761 4762 4763 1 6 4751 4752 4758 7838 7839 7840 1 6 4757 4752 3895 7840 7841 4661 2 6 4512 4754 4760 5006 5002 5001 2 5 4759 4754 4755 4761 5006 2 7 4760 4755 4756 4762 5006 5007 5008 2 6 4761 4756 4763 5008 5009 5010 2 6 4762 4756 3827 3828 4764 5010 2 6 4763 3828 4765 5010 5011 5012 2 6 4764 3828 3829 3830 4766 5012 2 6 4765 3830 3831 4767 4768 5012 2 6 4766 3831 4768 4769 4770 3832 2 7 4766 4767 4769 5012 5011 5013 5014 2 6 4768 4767 4770 5014 5015 5016 2 6 4769 4767 3832 5016 3834 3833 1 6 4297 4298 4772 4932 4933 4934 1 6 4771 4298 4299 4773 4934 4935 1 6 4772 4299 4300 4774 4935 4936 1 6 4773 4300 4301 4775 4936 4937 1 6 4774 4301 4302 4776 4937 4938 1 6 4775 4302 4303 4777 4938 4939 1 6 4776 4303 4304 4778 4939 4940 1 6 4777 4304 4305 4779 4940 4941 1 6 4778 4305 4306 4780 4941 4942 1 6 4779 4306 4307 4781 4942 4943 1 6 4780 4307 4308 4782 4943 4944 1 6 4781 4308 4309 4566 4783 4944 1 6 4782 4566 4784 4944 4945 4946 1 6 4783 4566 4567 4785 4946 4947 1 6 4784 4567 4568 4786 4947 4948 1 6 4785 4568 4569 4787 4948 4949 1 6 4786 4569 4570 4788 4949 4950 1 6 4787 4570 4571 4789 4950 4951 1 6 4788 4571 4572 4790 4951 4952 1 6 4789 4572 4573 4791 4952 4953 1 6 4790 4573 4574 4792 4953 4954 1 6 4791 4574 4575 4793 4799 4954 1 6 4792 4575 4576 4794 4799 4800 1 6 4793 4576 4577 4578 4795 4800 1 6 4794 4578 4579 4796 4800 4801 1 6 4795 4579 4797 4801 4802 4803 1 6 4796 4579 4580 4581 4798 4803 1 6 4797 4581 4583 4803 4804 4584 1 6 4792 4793 4800 4954 4955 4956 1 6 4799 4793 4794 4795 4801 4956 1 6 4800 4795 4796 4802 4956 4957 1 6 4801 4796 4803 4957 4958 4959 1 6 4802 4796 4797 4798 4804 4959 1 6 4803 4798 4584 4586 4805 4959 1 6 4804 4586 4587 4806 4918 4959 1 6 4805 4587 4807 4918 4919 4920 1 6 4806 4587 4588 4808 4920 4921 1 6 4807 4588 4809 4921 4922 4810 1 6 4808 4588 4589 4590 4591 4810 1 7 4809 4591 4592 4593 4811 4922 4808 1 5 4810 4593 4594 4812 4922 1 6 4811 4594 4595 4813 4964 4922 1 6 4812 4595 4596 4814 5093 4964 1 6 4813 4596 4597 4815 5093 5094 1 6 4814 4597 4598 4816 5094 5095 1 6 4815 4598 4599 4817 5095 5096 1 6 4816 4599 4600 4818 4819 5096 1 6 4817 4600 4819 4820 4821 4601 1 6 4817 4818 4820 5096 5097 5098 1 6 4819 4818 4821 5098 5099 4823 1 6 4820 4818 4601 4602 4822 4823 1 6 4821 4602 4823 4824 4825 4603 1 6 4821 4822 4824 5099 4820 5100 1 6 4823 4822 4825 5100 5101 5102 1 6 4824 4822 4603 4826 5102 5103 1 6 4825 4603 4604 4605 4827 5103 1 7 4826 4605 4606 4607 4609 4828 5103 1 6 4827 4609 4829 5103 5102 5104 1 6 4828 4609 4830 5104 5105 5106 1 6 4829 4609 4610 4831 5106 5107 1 6 4830 4610 4832 4833 5113 5107 1 5 4831 4610 4611 4833 4834 1 6 4831 4832 4834 4835 5113 5114 1 7 4833 4832 4611 4835 4836 4837 4612 1 6 4833 4834 4836 5114 4845 4844 1 6 4835 4834 4837 4838 4839 4844 1 6 4836 4834 4612 4613 4617 4838 1 6 4836 4837 4839 4840 4622 4617 1 6 4836 4838 4840 4842 4843 4844 1 6 4839 4838 4622 4623 4841 4842 1 6 4840 4623 4842 4625 4852 4853 1 6 4840 4841 4839 4843 4852 4850 1 6 4839 4842 4844 4845 4846 4850 1 5 4839 4843 4845 4835 4836 1 7 4844 4843 4846 4847 5114 4835 5115 1 6 4845 4843 4847 4848 4849 4850 1 6 4845 4846 4848 5117 5115 5118 1 6 4847 4846 4849 5118 5119 5120 1 6 4848 4846 4850 4851 5120 5121 1 6 4849 4846 4851 4852 4842 4843 1 6 4849 4850 4852 4854 4855 5121 1 6 4851 4850 4842 4841 4853 4854 1 6 4852 4841 4854 4857 4860 4625 1 6 4851 4852 4853 4855 4856 4857 1 6 4851 4854 4856 5121 5122 5123 1 6 4855 4854 4857 4858 5123 5124 1 6 4856 4854 4853 4858 4859 4860 1 6 4856 4857 4859 5124 5125 5129 1 6 4858 4857 4860 5129 5130 4861 1 6 4859 4857 4853 4625 4626 4861 1 6 4860 4626 4862 5130 4859 5131 1 6 4861 4626 4627 4863 4865 5131 1 6 4862 4627 4630 4864 4865 4866 1 6 4863 4630 4866 4867 4868 4631 1 6 4862 4863 4866 5131 5132 5136 1 6 4865 4863 4864 4867 5136 5137 1 6 4866 4864 4868 4869 4870 5137 1 6 4867 4864 4631 4638 4869 9760 1 6 4867 4868 4870 4871 4872 9760 1 6 4867 4869 4871 5137 5138 5139 1 6 4870 4869 4872 4873 5150 5139 1 6 4871 4869 4873 4874 4875 9760 1 6 4871 4872 4874 5149 5147 5150 1 6 4873 4872 4875 4876 4877 5149 1 6 4874 4872 4876 9760 4912 4914 1 6 4874 4875 4877 4878 4879 4914 1 6 4874 4876 4878 5155 5149 4882 1 6 4877 4876 4879 4880 4881 4882 1 6 4878 4876 4880 4914 4915 9753 1 7 4878 4879 4881 9753 9754 9756 9757 1 6 4878 4880 4882 4883 4884 9757 1 6 4878 4881 4883 5155 4877 5369 1 6 4882 4881 4884 4885 5369 5370 1 6 4883 4881 4885 4886 9757 4895 1 6 4883 4884 4886 4887 4888 5370 1 6 4885 4884 4887 4894 4891 4895 1 6 4885 4886 4888 4889 4890 4891 1 6 4885 4887 4889 5372 5370 5899 1 6 4888 4887 4890 5898 5896 5899 1 6 4889 4887 4891 4892 5898 5901 1 6 4890 4887 4892 4893 4894 4886 1 6 4890 4891 4893 5901 5902 5903 1 6 4892 4891 4894 5912 5903 5913 1 6 4893 4891 4886 4895 4896 5913 1 7 4894 4886 4896 4897 9757 9756 4884 1 6 4894 4895 4897 4898 4899 5913 1 5 4896 4895 4898 9756 9759 1 6 4896 4897 4899 4900 4901 9759 1 6 4896 4898 4900 5913 5914 5917 1 6 4899 4898 4901 4902 5917 5918 1 6 4900 4898 4902 4903 4904 9759 1 6 4900 4901 4903 5918 3671 3670 1 6 4902 4901 4904 4905 3669 3670 1 6 4903 4901 4905 9754 4911 9759 1 6 4903 4904 3669 4906 4907 4911 1 6 3669 4905 4907 4908 3661 3660 1 6 4906 4905 4908 4909 4910 4911 1 7 4906 4907 4909 4642 3660 9793 9794 1 5 4908 4907 4910 4642 4641 1 6 4909 4907 4911 4917 4916 4641 1 6 4910 4907 4905 9754 4917 4904 1 6 4638 4639 4913 4914 9760 4875 1 6 4912 4639 4914 4915 4916 4640 1 6 4912 4913 4915 4875 4876 4879 1 6 4914 4913 4916 4917 9753 4879 1 6 4915 4913 4917 4910 4641 4640 1 6 4915 4916 4910 9753 9754 4911 1 6 4805 4806 4919 4959 4958 4960 1 6 4918 4806 4920 4960 4961 4962 1 6 4919 4806 4807 4921 4962 4963 1 6 4920 4807 4808 4922 4963 4964 1 6 4921 4808 4810 4964 4812 4811 1 6 4287 4288 4924 5052 5053 5054 1 6 4923 4288 4289 4290 4925 5054 1 6 4924 4290 4926 5054 5055 5056 1 6 4925 4290 4291 4927 5056 5057 1 6 4926 4291 4292 4928 5057 5058 1 6 4927 4292 4293 4929 5058 5059 1 6 4928 4293 4294 4930 5059 5060 1 6 4929 4294 4295 4931 5060 5061 1 6 4930 4295 4296 4297 4932 5061 1 6 4931 4297 4771 4933 5061 5062 1 6 4932 4771 4934 5062 5063 5064 1 6 4933 4771 4772 4935 5064 5065 1 6 4934 4772 4773 4936 5065 5066 1 6 4935 4773 4774 4937 5066 5067 1 6 4936 4774 4775 4938 5067 5068 1 6 4937 4775 4776 4939 5068 5069 1 6 4938 4776 4777 4940 5069 5070 1 6 4939 4777 4778 4941 5070 5071 1 6 4940 4778 4779 4942 5071 5072 1 6 4941 4779 4780 4943 5072 5073 1 6 4942 4780 4781 4944 5073 5074 1 6 4943 4781 4782 4783 4945 5074 1 6 4944 4783 4946 5074 5075 5076 1 6 4945 4783 4784 4947 5076 5077 1 6 4946 4784 4785 4948 5077 5078 1 6 4947 4785 4786 4949 5078 5079 1 6 4948 4786 4787 4950 5079 5080 1 6 4949 4787 4788 4951 5080 5081 1 6 4950 4788 4789 4952 5081 5082 1 6 4951 4789 4790 4953 5082 5083 1 6 4952 4790 4791 4954 5083 5084 1 6 4953 4791 4792 4799 4955 5084 1 6 4954 4799 4956 5084 5085 5086 1 6 4955 4799 4800 4801 4957 5086 1 6 4956 4801 4802 4958 5088 5086 1 6 4957 4802 4959 4918 4960 5088 1 6 4958 4802 4803 4804 4805 4918 1 6 4958 4918 4919 4961 5088 5089 1 6 4960 4919 4962 5089 5090 5091 1 6 4961 4919 4920 4963 5091 5092 1 6 4962 4920 4921 4964 5092 5093 1 6 4963 4921 4922 4812 5093 4813 1 6 4715 4716 4966 5177 5178 5179 1 6 4965 4716 4717 4967 5179 5180 1 6 4966 4717 4718 4968 5180 5181 1 6 4967 4718 4719 4969 5181 5182 1 6 4968 4719 4720 4970 5182 5183 1 6 4969 4720 4721 4722 4971 5183 1 6 4970 4722 4972 5183 5184 5185 1 6 4971 4722 4723 4973 5185 5186 1 6 4972 4723 4724 4974 5186 5187 1 6 4973 4724 4725 4733 4975 5187 1 6 4974 4733 4976 5187 5188 5189 1 6 4975 4733 4734 4977 5189 5190 1 6 4976 4734 4735 4978 5190 5191 1 6 4977 4735 4736 4737 4979 5191 1 6 4978 4737 4738 4980 5191 5192 1 6 4979 4738 4669 5192 5193 5194 1 6 4490 4491 4982 4989 4990 4991 1 6 4981 4491 4492 4983 4991 4992 1 6 4982 4492 4493 4984 4992 4993 1 6 4983 4493 4985 4993 4994 4995 2 6 4984 4493 4494 4497 4986 4995 2 6 4985 4497 4498 4987 4995 4996 2 6 4986 4498 4988 4996 4997 4998 2 6 4987 4498 4499 4511 4998 4999 1 6 4490 4981 4990 5216 5217 5218 1 6 4989 4981 4991 5218 5219 5220 1 6 4990 4981 4982 4992 5220 5221 1 6 4991 4982 4983 4993 5221 5222 1 6 4992 4983 4984 4994 5222 5223 1 6 4993 4984 4995 5223 5224 5225 2 6 4994 4984 4985 4986 4996 5225 2 6 4995 4986 4987 4997 5225 5226 2 6 4996 4987 4998 5226 5227 5228 2 6 4997 4987 4988 4999 5000 5228 2 6 4998 4988 5000 5001 5002 4511 2 6 4998 4999 5001 5228 5229 5230 2 7 5000 4999 5002 4759 5006 5166 5230 2 5 5001 4999 4511 4512 4759 1 6 4739 4740 4741 5004 7831 7834 1 6 5003 4741 4753 5005 7834 7835 1 6 5004 4753 4750 7835 7836 7837 2 7 4759 4760 4761 5007 5021 5001 5166 2 6 5006 4761 5008 5021 5022 5023 2 6 5007 4761 4762 5009 5023 5018 2 6 5008 4762 5010 5011 5017 5018 2 5 5009 4762 4763 4764 5011 2 7 5010 4764 5012 4768 5013 5009 5017 2 5 5011 4764 4765 4766 4768 2 6 5011 4768 5014 5020 5017 5241 2 6 5013 4768 4769 5015 5241 5242 2 6 5014 4769 5016 5242 5243 5024 2 5 5015 4769 4770 3834 5024 2 6 5009 5011 5018 5019 5020 5013 2 7 5009 5017 5019 5023 5008 5238 6833 2 6 5018 5017 5020 5238 5239 5240 2 5 5019 5017 5013 5240 5241 2 5 5006 5007 5022 5166 5167 2 6 5021 5007 5023 5167 5168 5169 2 6 5022 5007 5008 5018 5169 6833 2 7 5016 3834 3835 5025 5243 5015 5244 2 6 5024 3835 3836 5026 5244 5245 2 6 5025 3836 3837 4405 5027 5245 2 6 5026 4405 4406 5028 5245 5246 2 6 5027 4406 5029 5249 5246 6844 2 6 5028 4406 4407 5030 6844 6845 2 6 5029 4407 4408 5031 6845 6846 2 6 5030 4408 4409 5032 6849 6846 2 6 5031 4409 4420 5033 6849 6850 2 6 5032 4420 4421 4422 5034 6850 2 6 5033 4422 5035 6850 6851 6852 2 6 5034 4422 4423 5036 6852 5038 2 6 5035 4423 4424 4643 5037 5038 2 6 5036 4643 5038 5039 5040 5044 2 6 5036 5037 5039 6852 5035 6853 2 6 5038 5037 5040 5041 6856 6853 2 6 5039 5037 5041 5042 5043 5044 2 6 5039 5040 5042 6858 6856 6863 2 6 5041 5040 5043 6878 6879 6863 2 6 5042 5040 5044 5045 6880 6878 2 6 5043 5040 5045 4644 4643 5037 2 6 5043 5044 4644 6880 6881 6889 1 6 4280 4281 5047 5474 5475 5476 1 6 5046 4281 4282 5048 5476 5477 1 6 5047 4282 4283 5049 5477 5478 1 6 5048 4283 4284 5050 5478 5479 1 6 5049 4284 4285 5051 5479 5480 1 6 5050 4285 4286 5052 5480 5481 1 6 5051 4286 4287 4923 5053 5481 1 6 5052 4923 5054 5481 5482 5483 1 6 5053 4923 4924 4925 5055 5483 1 6 5054 4925 5056 5483 5484 5485 1 6 5055 4925 4926 5057 5485 5486 1 6 5056 4926 4927 5058 5486 5487 1 6 5057 4927 4928 5059 5487 5488 1 6 5058 4928 4929 5060 5488 5489 1 6 5059 4929 4930 5061 5489 5490 1 6 5060 4930 4931 4932 5062 5490 1 6 5061 4932 4933 5063 5490 5491 1 6 5062 4933 5064 5250 5491 5492 1 6 5063 4933 4934 5065 5250 5251 1 6 5064 4934 4935 5066 5251 5252 1 6 5065 4935 4936 5067 5252 5253 1 6 5066 4936 4937 5068 5253 5254 1 6 5067 4937 4938 5069 5254 5255 1 6 5068 4938 4939 5070 5255 5256 1 6 5069 4939 4940 5071 5256 5257 1 6 5070 4940 4941 5072 5257 5258 1 6 5071 4941 4942 5073 5258 5259 1 6 5072 4942 4943 5074 5259 5260 1 6 5073 4943 4944 4945 5075 5260 1 6 5074 4945 5076 5260 5261 5262 1 6 5075 4945 4946 5077 5262 5263 1 6 5076 4946 4947 5078 5263 5264 1 6 5077 4947 4948 5079 5264 5265 1 6 5078 4948 4949 5080 5265 5266 1 6 5079 4949 4950 5081 5266 5267 1 6 5080 4950 4951 5082 5267 5268 1 6 5081 4951 4952 5083 5268 5269 1 6 5082 4952 4953 5084 5269 5270 1 6 5083 4953 4954 4955 5085 5270 1 6 5084 4955 5086 5087 5270 5271 1 6 5085 4955 4956 5087 5088 4957 1 6 5085 5086 5088 5271 5272 5089 1 6 5087 5086 4957 4958 4960 5089 1 6 5088 4960 4961 5090 5272 5087 1 6 5089 4961 5091 5272 5273 5274 1 6 5090 4961 4962 5092 5274 5275 1 6 5091 4962 4963 5093 5275 5276 1 7 5092 4963 4964 4813 4814 5094 5276 1 6 5093 4814 4815 5095 5276 5277 1 6 5094 4815 4816 5096 5277 5278 1 6 5095 4816 4817 4819 5097 5278 1 6 5096 4819 5098 5278 5279 5280 1 6 5097 4819 4820 5099 5280 5281 1 6 5098 4820 4823 5100 5281 5282 1 6 5099 4823 4824 5101 5282 5152 1 6 5100 4824 5102 5104 5151 5152 1 6 5101 4824 4825 5103 4828 5104 1 5 5102 4825 4826 4827 4828 1 6 5102 4828 4829 5105 5101 5151 1 7 5104 4829 5106 5154 5151 5287 5288 1 6 5105 4829 4830 5107 5108 5288 1 6 5106 4830 5108 5109 5113 4831 1 6 5106 5107 5109 5110 5288 5289 1 6 5108 5107 5110 5111 5112 5113 1 6 5108 5109 5111 5289 5290 5294 1 6 5110 5109 5112 5294 5295 5116 1 6 5111 5109 5113 5114 5115 5116 1 6 5112 5109 5107 4831 4833 5114 1 6 5113 4833 4835 4845 5115 5112 1 6 5114 4845 5112 5116 5117 4847 1 6 5112 5115 5117 5295 5111 5296 1 6 5116 5115 4847 5118 5299 5296 1 6 5117 4847 4848 5119 5299 5300 1 6 5118 4848 5120 5300 5301 5302 1 5 5119 4848 4849 5121 5302 1 6 5120 4849 4851 4855 5122 5302 1 6 5121 4855 5123 5318 5302 5319 1 6 5122 4855 4856 5124 5321 5319 1 6 5123 4856 4858 5125 5126 5321 1 6 5124 4858 5126 5127 5128 5129 1 6 5124 5125 5127 5322 5321 5323 1 6 5126 5125 5128 5323 5324 5328 1 6 5127 5125 5129 5336 5328 5337 1 6 5128 5125 4858 4859 5130 5337 1 6 5129 4859 4861 5131 5337 5338 1 7 5130 4861 4862 4865 5132 5133 5338 1 6 5131 4865 5133 5134 5135 5136 1 5 5131 5132 5134 5338 5339 1 6 5133 5132 5135 5339 5340 5341 1 6 5134 5132 5136 5346 5344 5341 1 6 5135 5132 4865 4866 5137 5346 1 6 5136 4866 4867 4870 5138 5346 1 6 5137 4870 5139 5140 5344 5346 1 6 5138 4870 5140 5141 4871 5150 1 6 5138 5139 5141 5142 5345 5344 1 6 5140 5139 5142 5143 5144 5150 1 6 5140 5141 5143 5345 5360 5359 1 7 5142 5141 5144 5145 5360 5357 5361 1 6 5143 5141 5145 5146 5147 5150 1 6 5143 5144 5146 5361 5362 5366 1 5 5145 5144 5147 5148 5366 1 6 5146 5144 5148 5149 4873 5150 1 7 5146 5147 5149 5155 5366 5367 5368 1 6 5148 5147 4873 5155 4877 4874 1 6 4873 5147 4871 5139 5141 5144 1 6 5101 5104 5152 5153 5154 5105 1 6 5101 5151 5153 5282 5100 5283 1 6 5152 5151 5154 5283 5284 5285 1 6 5153 5151 5105 5285 5286 5287 1 6 5148 5149 4877 4882 5368 5369 1 7 4532 4533 5157 6682 6683 6684 6694 1 6 5156 4533 4666 6682 9750 4667 1 5 4691 4692 4693 5159 7844 1 7 5158 4693 5160 7844 7845 7846 7847 1 6 5159 4693 4694 5161 7847 7848 1 6 5160 4694 4695 5162 7848 7849 1 6 5161 4695 5163 7849 7850 7851 1 6 5162 4695 4696 4697 5164 7851 1 6 5163 4697 5165 7851 7852 7853 1 6 5164 4697 4698 4700 7853 7854 2 5 5001 5006 5021 5167 5230 2 8 5166 5021 5022 5168 5229 5230 6826 6824 2 6 5167 5022 5169 6826 6827 6830 2 7 5168 5022 5023 6830 6831 6832 6833 1 6 4707 4708 5171 7312 7313 7314 1 6 5170 4708 4709 5172 7314 7315 1 6 5171 4709 4710 5173 7315 7316 1 6 5172 4710 4711 5174 7316 7317 1 6 5173 4711 4712 5175 7317 7318 1 6 5174 4712 4713 5176 7318 7319 1 6 5175 4713 4714 5177 7319 7320 1 6 5176 4714 4715 4965 5178 7320 1 6 5177 4965 5179 7320 7321 7322 1 6 5178 4965 4966 5180 7322 7323 1 6 5179 4966 4967 5181 5411 7323 1 6 5180 4967 4968 5182 5411 5412 1 6 5181 4968 4969 5183 5412 5413 1 6 5182 4969 4970 4971 5184 5413 1 6 5183 4971 5185 5413 5414 5415 1 6 5184 4971 4972 5186 5403 5415 1 6 5185 4972 4973 5187 5403 5404 1 6 5186 4973 4974 4975 5188 5404 1 6 5187 4975 5189 5404 5405 5406 1 6 5188 4975 4976 5190 5406 5407 1 6 5189 4976 4977 5191 5407 5408 1 6 5190 4977 4978 4979 5192 5408 1 6 5191 4979 4980 5193 5408 5409 1 6 5192 4980 5194 5409 5410 5195 1 5 5193 4980 4669 4670 5195 1 6 5194 4670 4671 5196 5410 5193 1 7 5195 4671 4672 5197 5423 5410 5431 1 5 5196 4672 4673 5198 5431 1 7 5197 4673 4674 5199 5431 5432 5433 1 6 5198 4674 4675 5200 5433 5434 1 6 5199 4675 4676 5201 5434 5435 1 6 5200 4676 4677 5202 5435 5436 1 6 5201 4677 4678 5203 5436 5437 1 6 5202 4678 5204 5437 5438 5439 1 6 5203 4678 4679 4680 5205 5439 1 5 5204 4680 4681 5206 5439 1 7 5205 4681 4682 5207 5439 5440 5441 1 6 5206 4682 5208 5441 5442 5443 1 6 5207 4682 4683 5209 5424 5443 1 7 5208 4683 4684 5210 5424 5425 5426 1 5 5209 4684 5211 5426 5427 1 7 5210 4684 4685 5212 5427 5215 5214 1 5 5211 4685 4686 5213 5214 1 6 5212 4686 4687 4478 4479 5214 1 6 5213 4479 4480 5215 5211 5212 1 6 5214 4480 5216 5427 5211 5217 1 6 5215 4480 4481 4490 4989 5217 1 7 5216 4989 5218 5447 5427 5215 6810 1 6 5217 4989 4990 5219 6810 6811 1 6 5218 4990 5220 6811 6812 6813 1 6 5219 4990 4991 5221 6813 6814 1 5 5220 4991 4992 5222 6814 1 7 5221 4992 4993 5223 6814 6815 6816 1 5 5222 4993 4994 5224 6816 1 7 5223 4994 5225 6816 6817 6818 6819 2 6 5224 4994 4995 4996 5226 6819 2 6 5225 4996 4997 5227 6819 6820 2 6 5226 4997 5228 6820 6821 6822 2 6 5227 4997 4998 5000 5229 6822 2 7 5228 5000 5230 5167 6822 6823 6824 2 5 5229 5000 5167 5166 5001 1 6 4264 4265 5232 6902 6903 5458 1 6 5231 4265 4266 5233 5448 5458 1 6 5232 4266 4267 5234 5448 5449 1 6 5233 4267 4269 5449 5450 5451 1 6 4519 4520 5236 9677 9678 9679 1 6 5235 4520 5237 9679 9683 9684 1 6 5236 4520 4521 422 9684 421 2 6 5018 5019 5239 6832 6833 6834 2 6 5238 5019 5240 5648 6834 6835 2 6 5239 5019 5020 5241 5648 5649 2 7 5240 5020 5013 5014 5242 5649 5650 2 5 5241 5014 5015 5243 5650 2 7 5242 5015 5024 5244 5652 5650 5653 2 6 5243 5024 5025 5245 5653 5247 2 6 5244 5025 5026 5027 5246 5247 2 6 5245 5027 5247 5248 5249 5028 2 6 5245 5246 5248 5653 5244 6840 2 6 5247 5246 5249 6841 6840 6842 2 6 5248 5246 5028 6842 6843 6844 1 6 5063 5064 5251 5492 5493 5494 1 6 5250 5064 5065 5252 5494 5495 1 6 5251 5065 5066 5253 5495 5496 1 6 5252 5066 5067 5254 5496 5497 1 6 5253 5067 5068 5255 5497 5498 1 6 5254 5068 5069 5256 5498 5499 1 6 5255 5069 5070 5257 5499 5500 1 6 5256 5070 5071 5258 5500 5501 1 6 5257 5071 5072 5259 5501 5502 1 6 5258 5072 5073 5260 5502 5503 1 6 5259 5073 5074 5075 5261 5503 1 6 5260 5075 5262 5503 5504 5505 1 6 5261 5075 5076 5263 5505 5506 1 6 5262 5076 5077 5264 5506 5507 1 6 5263 5077 5078 5265 5507 5508 1 6 5264 5078 5079 5266 5508 5509 1 6 5265 5079 5080 5267 5509 5510 1 6 5266 5080 5081 5268 5510 5511 1 6 5267 5081 5082 5269 5511 5512 1 6 5268 5082 5083 5270 5512 5513 1 6 5269 5083 5084 5085 5271 5513 1 6 5270 5085 5087 5272 5513 5514 1 6 5271 5087 5089 5090 5273 5514 1 6 5272 5090 5274 5514 5515 5516 1 6 5273 5090 5091 5275 5519 5516 1 6 5274 5091 5092 5276 5519 5277 1 5 5275 5092 5093 5094 5277 1 6 5276 5094 5095 5278 5519 5275 1 6 5277 5095 5096 5097 5279 5519 1 6 5278 5097 5280 5519 5518 5520 1 6 5279 5097 5098 5281 5520 5377 1 6 5280 5098 5099 5282 5376 5377 1 6 5281 5099 5100 5152 5283 5376 1 6 5282 5152 5153 5284 5379 5376 1 6 5283 5153 5285 5524 5379 5525 1 6 5284 5153 5154 5286 5525 5526 1 6 5285 5154 5287 5526 5527 5291 1 6 5286 5154 5105 5288 5291 5289 1 5 5287 5105 5106 5108 5289 1 6 5288 5108 5110 5290 5291 5287 1 6 5289 5110 5291 5292 5293 5294 1 7 5289 5290 5292 5527 5286 5287 5528 1 6 5291 5290 5293 5528 5529 5533 1 5 5292 5290 5294 5533 5534 1 6 5293 5290 5110 5111 5295 5534 1 6 5294 5111 5116 5296 5297 5534 1 6 5295 5116 5297 5298 5299 5117 1 6 5295 5296 5298 5534 5535 5542 1 6 5297 5296 5299 5542 5543 5544 1 6 5298 5296 5117 5118 5300 5544 1 6 5299 5118 5119 5301 5304 5544 1 6 5300 5119 5302 5303 5304 5305 1 7 5301 5119 5303 5318 5122 5120 5121 1 6 5301 5302 5308 5305 5309 5318 1 6 5300 5301 5305 5306 5543 5544 1 6 5304 5301 5306 5307 5308 5303 1 6 5304 5305 5307 5543 5545 5546 1 6 5306 5305 5308 5311 5312 5546 1 6 5307 5305 5303 5309 5310 5311 1 6 5308 5303 5310 5316 5317 5318 1 6 5308 5309 5311 5314 5315 5316 1 6 5308 5310 5307 5312 5313 5314 1 6 5307 5311 5313 5546 5547 5548 1 6 5312 5311 5314 5548 5549 5550 1 6 5313 5311 5310 5315 5553 5550 1 6 5314 5310 5316 5555 5553 5558 1 6 5315 5310 5309 5317 5558 5559 1 6 5316 5309 5318 5319 5320 5559 1 6 5317 5309 5303 5302 5122 5319 1 6 5318 5122 5317 5320 5321 5123 1 6 5317 5319 5321 5322 5559 5560 1 6 5320 5319 5322 5126 5124 5123 1 6 5320 5321 5126 5323 5560 5561 1 6 5322 5126 5127 5324 5325 5561 1 6 5323 5127 5325 5326 5327 5328 1 6 5323 5324 5326 5561 5562 5563 1 6 5325 5324 5327 5572 5563 5573 1 6 5326 5324 5328 5329 5330 5573 1 6 5327 5324 5329 5336 5128 5127 1 6 5327 5328 5330 5331 5332 5336 1 6 5327 5329 5331 5573 5574 5575 1 6 5330 5329 5332 5333 5575 5576 1 6 5331 5329 5333 5334 5335 5336 1 6 5331 5332 5334 5576 5577 5578 1 6 5333 5332 5335 5578 5340 5339 1 6 5334 5332 5336 5337 5338 5339 1 6 5335 5332 5329 5328 5128 5337 1 6 5336 5128 5129 5130 5335 5338 1 6 5335 5337 5130 5131 5133 5339 1 6 5338 5133 5134 5340 5334 5335 1 6 5339 5134 5341 5342 5578 5334 1 6 5340 5134 5342 5343 5344 5135 1 6 5340 5341 5343 5348 5349 5578 1 6 5342 5341 5344 5345 5347 5348 1 7 5343 5341 5345 5140 5138 5346 5135 1 6 5343 5344 5140 5142 5347 5359 1 5 5138 5344 5135 5136 5137 1 6 5343 5345 5348 5351 5352 5359 1 6 5343 5347 5342 5349 5350 5351 1 6 5342 5348 5350 5578 5577 5579 1 6 5349 5348 5351 5579 5580 5584 1 6 5350 5348 5347 5352 5353 5584 1 6 5351 5347 5353 5354 5355 5359 1 6 5351 5352 5354 5608 5584 5609 1 6 5353 5352 5355 5356 5807 5609 1 6 5354 5352 5356 5357 5359 5360 1 6 5354 5355 5357 5358 5807 5808 1 6 5356 5355 5358 5360 5143 5361 1 7 5356 5357 5808 5809 5810 5363 5361 1 6 5355 5352 5347 5360 5142 5345 1 5 5355 5359 5142 5143 5357 1 6 5357 5143 5145 5362 5363 5358 1 6 5361 5145 5363 5364 5365 5366 1 5 5361 5362 5364 5810 5358 1 6 5363 5362 5365 5810 5811 5402 1 7 5364 5362 5366 5402 5401 5367 5375 1 6 5365 5362 5145 5146 5148 5367 1 6 5366 5148 5368 5374 5365 5375 1 6 5367 5148 5155 5369 5371 5374 1 6 5368 5155 4882 4883 5370 5371 1 6 5369 4883 5371 5372 4888 4885 1 6 5369 5370 5372 5373 5374 5368 1 6 5371 5370 5373 4888 5393 5899 1 6 5371 5372 5374 5375 5392 5393 1 5 5371 5373 5375 5368 5367 1 6 5374 5373 5392 5365 5367 5401 1 6 5281 5282 5377 5378 5379 5283 1 6 5281 5376 5378 5520 5280 5521 1 6 5377 5376 5379 5521 5522 5523 1 6 5378 5376 5283 5523 5524 5284 1 6 4656 4657 55 9689 430 56 2 6 1679 1680 1678 5382 5383 1682 2 6 1678 5381 5383 5384 7779 3415 2 6 5382 5381 5384 5385 3774 1682 2 6 5382 5383 5385 5386 7779 7780 2 6 5384 5383 5386 5387 5391 3774 2 6 5384 5385 5387 5388 7780 7781 2 6 5386 5385 5388 5389 5390 5391 2 6 5386 5387 5389 5616 7781 7782 2 6 5388 5387 5390 5616 5617 5618 2 6 5389 5387 5391 5618 5619 5620 2 6 5390 5387 5385 3774 5620 3775 1 6 5375 5373 5393 5394 5401 5398 1 6 5392 5373 5394 5372 5395 5899 1 6 5392 5393 5395 5396 5397 5398 1 5 5394 5393 5396 5899 5894 1 6 5394 5395 5397 5893 5890 5894 1 6 5394 5396 5398 5399 5889 5890 1 6 5394 5397 5399 5400 5401 5392 1 6 5398 5397 5400 5880 5888 5889 1 7 5398 5399 5401 5402 5887 5881 5880 1 6 5398 5400 5402 5365 5375 5392 1 6 5401 5400 5887 5811 5364 5365 1 6 5185 5186 5404 5415 5416 5417 1 6 5403 5186 5187 5188 5405 5417 1 6 5404 5188 5406 5417 5418 5419 1 6 5405 5188 5189 5407 5419 5420 1 6 5406 5189 5190 5408 5420 5421 1 6 5407 5190 5191 5192 5409 5421 1 6 5408 5192 5193 5410 5421 5422 1 6 5409 5193 5195 5422 5423 5196 1 6 5180 5181 5412 7323 7324 7325 1 6 5411 5181 5182 5413 7325 7326 1 6 5412 5182 5183 5184 5414 7326 1 6 5413 5184 5415 7326 7327 7328 1 6 5414 5184 5185 5403 5416 7328 1 6 5415 5403 5417 7328 7329 7330 1 6 5416 5403 5404 5405 5418 7330 1 6 5417 5405 5419 6791 7330 7331 1 6 5418 5405 5406 5420 6791 6792 1 6 5419 5406 5407 5421 5428 6792 1 6 5420 5407 5408 5409 5422 5428 1 6 5421 5409 5410 5423 5428 5429 1 6 5422 5410 5196 5429 5430 5431 1 6 5208 5209 5425 5443 5444 5445 1 6 5424 5209 5426 5445 5446 5447 1 5 5425 5209 5210 5427 5447 1 6 5426 5210 5211 5215 5447 5217 1 6 5420 5421 5422 5429 6792 6793 1 6 5428 5422 5423 5430 6793 6794 1 6 5429 5423 5431 6794 6795 5432 1 6 5430 5423 5196 5197 5198 5432 1 5 5431 5198 5433 6795 5430 1 6 5432 5198 5199 5434 6795 6796 1 6 5433 5199 5200 5435 6796 6797 1 6 5434 5200 5201 5436 6797 6798 1 6 5435 5201 5202 5437 6798 6799 1 6 5436 5202 5203 5438 6799 6800 1 6 5437 5203 5439 6800 6801 6802 1 7 5438 5203 5204 5205 5206 5440 6802 1 5 5439 5206 5441 6802 6803 1 6 5440 5206 5207 5442 6803 6804 1 6 5441 5207 5443 6804 6805 5444 1 5 5442 5207 5208 5424 5444 1 6 5443 5424 5445 6805 5442 6806 1 6 5444 5424 5425 5446 6806 6807 1 6 5445 5425 5447 6807 6808 6809 1 7 5446 5425 5426 5427 5217 6809 6810 1 6 5232 5233 5449 5458 5459 5460 1 6 5448 5233 5234 5450 5460 5461 1 6 5449 5234 5451 5461 5462 5463 1 6 5450 5234 4269 4270 5452 5463 1 6 5451 4270 4271 5453 5463 5464 1 6 5452 4271 4272 5454 5455 5464 1 6 5453 4272 5455 5456 5457 4273 1 6 5453 5454 5456 5464 5465 5466 1 6 5455 5454 5457 5466 5467 5468 1 6 5456 5454 4273 5468 5469 4274 1 6 5232 5448 5459 6903 5231 6904 1 6 5458 5448 5460 6904 6905 6906 1 6 5459 5448 5449 5461 6906 6907 1 6 5460 5449 5450 5462 6907 6908 1 6 5461 5450 5463 6908 6909 6910 1 6 5462 5450 5451 5452 5464 6910 1 6 5463 5452 5453 5455 5465 6910 1 6 5464 5455 5466 6910 6911 6912 1 6 5465 5455 5456 5467 6912 6913 1 6 5466 5456 5468 6913 6914 6915 1 6 5467 5456 5457 5469 6915 6916 1 6 5468 5457 4274 4275 5470 6916 1 6 5469 4275 4276 4277 5471 6916 1 6 5470 4277 5472 6916 6917 6918 1 6 5471 4277 4278 5473 6918 6919 1 6 5472 4278 4279 5474 6919 6920 1 6 5473 4279 4280 5046 5475 6920 1 6 5474 5046 5476 6920 6921 6922 1 6 5475 5046 5047 5477 6922 6923 1 6 5476 5047 5048 5478 6923 6924 1 6 5477 5048 5049 5479 6924 6925 1 6 5478 5049 5050 5480 6925 6926 1 6 5479 5050 5051 5481 5654 6926 1 6 5480 5051 5052 5053 5482 5654 1 6 5481 5053 5483 5654 5655 5656 1 6 5482 5053 5054 5055 5484 5656 1 6 5483 5055 5485 5656 5657 5658 1 6 5484 5055 5056 5486 5658 5659 1 6 5485 5056 5057 5487 5659 5660 1 6 5486 5057 5058 5488 5660 5661 1 6 5487 5058 5059 5489 5621 5661 1 6 5488 5059 5060 5490 5621 5622 1 6 5489 5060 5061 5062 5491 5622 1 6 5490 5062 5063 5492 5622 5623 1 6 5491 5063 5250 5493 5623 5624 1 6 5492 5250 5494 5624 5625 5626 1 6 5493 5250 5251 5495 5626 5627 1 6 5494 5251 5252 5496 5627 5628 1 6 5495 5252 5253 5497 5628 5629 1 6 5496 5253 5254 5498 5629 5630 1 6 5497 5254 5255 5499 5630 5631 1 6 5498 5255 5256 5500 5631 5632 1 6 5499 5256 5257 5501 5632 5633 1 6 5500 5257 5258 5502 5633 5634 1 6 5501 5258 5259 5503 5634 5635 1 6 5502 5259 5260 5261 5504 5635 1 6 5503 5261 5505 5635 5636 5637 1 6 5504 5261 5262 5506 5637 5638 1 6 5505 5262 5263 5507 5638 5639 1 6 5506 5263 5264 5508 5639 5640 1 6 5507 5264 5265 5509 5640 5641 1 6 5508 5265 5266 5510 5641 5642 1 6 5509 5266 5267 5511 5642 5643 1 6 5510 5267 5268 5512 5643 5644 1 6 5511 5268 5269 5513 5644 5645 1 6 5512 5269 5270 5271 5514 5645 1 6 5513 5271 5272 5273 5515 5645 1 6 5514 5273 5516 5517 5645 5646 1 6 5515 5273 5517 5518 5519 5274 1 6 5515 5516 5518 5646 5647 5520 1 5 5517 5516 5519 5279 5520 1 7 5518 5516 5274 5275 5277 5278 5279 1 7 5518 5279 5280 5377 5521 5647 5517 1 5 5520 5377 5378 5522 5647 1 7 5521 5378 5523 5685 5647 5684 5686 1 6 5522 5378 5379 5524 5687 5686 1 6 5523 5379 5284 5525 5687 5688 1 6 5524 5284 5285 5526 5688 5689 1 6 5525 5285 5286 5527 5689 5690 1 6 5526 5286 5291 5528 5690 5691 1 6 5527 5291 5292 5529 5530 5691 1 6 5528 5292 5530 5531 5532 5533 1 5 5528 5529 5531 5691 5692 1 6 5530 5529 5532 5692 5693 5694 1 7 5531 5529 5533 5694 5695 5538 5536 1 6 5532 5529 5292 5293 5534 5536 1 7 5533 5293 5294 5295 5297 5535 5536 1 6 5534 5297 5536 5537 5541 5542 1 6 5534 5535 5537 5538 5532 5533 1 6 5536 5535 5538 5539 5540 5541 1 6 5536 5537 5539 5695 5532 5696 1 6 5538 5537 5540 5696 5697 5698 1 7 5539 5537 5541 5698 5699 5700 9795 1 5 5540 5537 5535 5542 9795 1 6 5541 5535 5297 5298 5543 9795 1 7 5542 5298 5544 5304 5306 5545 9795 1 5 5543 5298 5304 5300 5299 1 6 5543 5306 5546 5701 5700 9795 1 6 5545 5306 5307 5312 5547 5701 1 6 5546 5312 5548 5701 5702 5703 1 6 5547 5312 5313 5549 5703 5704 1 6 5548 5313 5550 5551 5704 5705 1 6 5549 5313 5551 5552 5553 5314 1 6 5549 5550 5552 5705 5706 5707 1 6 5551 5550 5553 5554 5707 5708 1 6 5552 5550 5314 5554 5555 5315 1 6 5552 5553 5555 5556 5708 5709 1 6 5554 5553 5315 5556 5557 5558 1 6 5554 5555 5557 5709 5710 5711 1 6 5556 5555 5558 5714 5711 5715 1 6 5557 5555 5315 5316 5559 5715 1 6 5558 5316 5317 5320 5560 5715 1 6 5559 5320 5322 5561 5716 5715 1 6 5560 5322 5323 5325 5562 5716 1 6 5561 5325 5563 5564 5717 5716 1 6 5562 5325 5564 5565 5572 5326 1 6 5562 5563 5565 5566 5717 5713 1 6 5564 5563 5566 5567 5571 5572 1 6 5564 5565 5567 5568 5753 5713 1 6 5566 5565 5568 5569 5570 5571 1 6 5566 5567 5569 5752 5753 5754 1 6 5568 5567 5570 5754 5755 5770 1 6 5569 5567 5571 5769 5767 5770 1 6 5570 5567 5565 5572 5769 5771 1 6 5571 5565 5563 5326 5573 5771 1 6 5572 5326 5327 5330 5574 5771 1 6 5573 5330 5575 5771 5772 5773 1 6 5574 5330 5331 5576 5773 5594 1 7 5575 5331 5333 5577 5594 5589 5774 1 6 5576 5333 5578 5349 5579 5774 1 6 5577 5333 5334 5340 5342 5349 1 6 5577 5349 5350 5580 5581 5774 1 6 5579 5350 5581 5582 5583 5584 1 6 5579 5580 5582 5585 5586 5774 1 6 5581 5580 5583 5585 5605 5606 1 6 5582 5580 5584 5606 5607 5608 1 6 5583 5580 5350 5351 5608 5353 1 6 5581 5582 5586 5587 5605 5597 1 6 5581 5585 5587 5588 5589 5774 1 6 5586 5585 5588 5595 5596 5597 1 6 5586 5587 5589 5590 5591 5595 1 6 5586 5588 5590 5594 5576 5774 1 6 5589 5588 5591 5592 5594 5773 1 6 5590 5588 5592 5593 5595 5778 1 6 5590 5591 5593 5773 5772 5775 1 6 5592 5591 5775 5776 5777 5778 1 5 5589 5590 5773 5575 5576 1 6 5591 5588 5587 5596 5778 5779 1 6 5595 5587 5597 5598 5599 5779 1 6 5596 5587 5598 5602 5605 5585 1 6 5596 5597 5599 5600 5601 5602 1 6 5596 5598 5600 5779 5780 5781 1 6 5599 5598 5601 5781 5789 5790 1 6 5600 5598 5602 5603 5790 5791 1 6 5601 5598 5603 5604 5597 5605 1 6 5601 5602 5604 5794 5791 5795 1 6 5603 5602 5795 5796 5606 5605 1 6 5602 5597 5585 5582 5606 5604 1 6 5605 5582 5583 5607 5796 5604 1 6 5606 5583 5608 5610 5798 5796 1 6 5607 5583 5584 5353 5609 5610 1 7 5608 5353 5610 5800 5806 5807 5354 1 5 5608 5609 5607 5800 5798 1 6 4514 4516 5612 5613 5614 5615 1 6 4514 5611 5613 427 426 7500 1 6 5612 5611 5614 7500 7501 7505 1 6 5613 5611 5615 7505 7506 7507 1 6 5614 5611 4516 7507 7508 4518 2 6 5388 5389 5617 7782 7783 7784 2 6 5616 5389 5618 7784 7785 7786 2 6 5617 5389 5390 5619 7786 7789 2 6 5618 5390 5620 7789 7790 7791 2 6 5619 5390 5391 3775 3778 7791 1 6 5488 5489 5622 5661 5662 5663 1 6 5621 5489 5490 5491 5623 5663 1 6 5622 5491 5492 5624 5663 5664 1 6 5623 5492 5493 5625 5664 5665 1 6 5624 5493 5626 5665 5666 5667 1 6 5625 5493 5494 5627 5667 5668 1 6 5626 5494 5495 5628 5668 5669 1 6 5627 5495 5496 5629 5669 5670 1 6 5628 5496 5497 5630 5670 5671 1 6 5629 5497 5498 5631 5671 5672 1 6 5630 5498 5499 5632 5672 5673 1 6 5631 5499 5500 5633 5673 5674 1 6 5632 5500 5501 5634 5674 5675 1 6 5633 5501 5502 5635 5675 5676 1 6 5634 5502 5503 5504 5636 5676 1 6 5635 5504 5637 5676 5677 5678 1 6 5636 5504 5505 5638 5678 5679 1 6 5637 5505 5506 5639 5679 5680 1 6 5638 5506 5507 5640 5680 5681 1 6 5639 5507 5508 5641 5681 5682 1 6 5640 5508 5509 5642 5682 5683 1 6 5641 5509 5510 5643 5683 5684 1 6 5642 5510 5511 5644 5684 5685 1 6 5643 5511 5512 5645 5685 5646 1 6 5644 5512 5513 5514 5515 5646 1 6 5645 5515 5517 5647 5685 5644 1 6 5646 5517 5520 5685 5522 5521 2 6 5239 5240 5649 6835 6836 6837 2 6 5648 5240 5241 5650 5651 6837 2 6 5649 5241 5651 5652 5243 5242 2 6 5649 5650 5652 6837 6838 6839 2 6 5651 5650 5243 5653 6839 6840 2 5 5652 5243 5244 5247 6840 1 6 5480 5481 5482 5655 6926 6927 1 6 5654 5482 5656 6927 6928 6929 1 6 5655 5482 5483 5484 5657 6929 1 6 5656 5484 5658 6929 6930 6931 1 6 5657 5484 5485 5659 5831 6931 1 6 5658 5485 5486 5660 5831 5832 1 6 5659 5486 5487 5661 5832 5833 1 6 5660 5487 5488 5621 5662 5833 1 6 5661 5621 5663 5833 5834 5835 1 6 5662 5621 5622 5623 5664 5835 1 6 5663 5623 5624 5665 5835 5813 1 6 5664 5624 5625 5666 5812 5813 1 6 5665 5625 5667 5812 5816 5817 1 6 5666 5625 5626 5668 5859 5817 1 6 5667 5626 5627 5669 5859 5860 1 6 5668 5627 5628 5670 5860 5861 1 6 5669 5628 5629 5671 5861 5862 1 6 5670 5629 5630 5672 5862 5863 1 6 5671 5630 5631 5673 5863 5864 1 6 5672 5631 5632 5674 5864 5865 1 6 5673 5632 5633 5675 5865 5866 1 6 5674 5633 5634 5676 5866 5867 1 6 5675 5634 5635 5636 5677 5867 1 6 5676 5636 5678 5867 5868 5693 1 6 5677 5636 5637 5679 5693 5869 1 6 5678 5637 5638 5680 5869 5870 1 6 5679 5638 5639 5681 5870 5871 1 6 5680 5639 5640 5682 5871 5688 1 6 5681 5640 5641 5683 5688 5687 1 6 5682 5641 5642 5684 5686 5687 1 6 5683 5642 5643 5685 5522 5686 1 6 5684 5643 5644 5646 5647 5522 1 5 5684 5522 5683 5687 5523 1 6 5683 5686 5523 5524 5688 5682 1 7 5687 5524 5525 5689 5871 5681 5682 1 5 5688 5525 5526 5690 5871 1 7 5689 5526 5527 5691 5871 5870 5692 1 5 5690 5527 5528 5530 5692 1 7 5691 5530 5531 5693 5870 5690 5869 1 7 5692 5531 5694 5868 5677 5678 5869 1 6 5693 5531 5532 5695 9698 5868 1 6 5694 5532 5538 5696 9699 9698 1 6 5695 5538 5539 5697 5718 9699 1 6 5696 5539 5698 5718 5719 5720 1 6 5697 5539 5540 5699 5720 5721 1 6 5698 5540 5700 5701 5721 5722 1 5 5699 5540 5701 5545 9795 1 7 5699 5700 5545 5546 5547 5702 5722 1 6 5701 5547 5703 5722 5723 5727 1 6 5702 5547 5548 5704 5727 5728 1 6 5703 5548 5549 5705 5728 5729 1 6 5704 5549 5551 5706 5732 5729 1 6 5705 5551 5707 5732 5733 5734 1 6 5706 5551 5552 5708 5737 5734 1 6 5707 5552 5554 5709 5737 5738 1 6 5708 5554 5556 5710 5747 5738 1 6 5709 5556 5711 5712 5747 5748 1 6 5710 5556 5712 5713 5714 5557 1 6 5710 5711 5713 5748 5749 5753 1 7 5712 5711 5714 5717 5564 5753 5566 1 6 5713 5711 5557 5715 5716 5717 1 6 5714 5557 5716 5560 5559 5558 1 6 5714 5715 5717 5562 5561 5560 1 5 5714 5716 5562 5564 5713 1 7 5696 5697 5719 9696 5865 9697 9699 1 6 5718 5697 5720 9696 9695 9700 1 6 5719 5697 5698 5721 9700 9701 1 7 5720 5698 5699 5722 5723 5724 9701 1 5 5721 5699 5701 5702 5723 1 7 5722 5702 5721 5724 5725 5726 5727 1 6 5721 5723 5725 6095 9701 9702 1 6 5724 5723 5726 6095 6096 6097 1 6 5725 5723 5727 6097 5730 5728 1 5 5726 5723 5702 5703 5728 1 6 5727 5703 5704 5729 5730 5726 1 6 5728 5704 5730 5731 5732 5705 1 7 5728 5729 5731 6097 5726 6098 6099 1 6 5730 5729 5732 6099 6100 6101 1 6 5731 5729 5705 5706 5733 6101 1 6 5732 5706 5734 5735 6101 6102 1 6 5733 5706 5735 5736 5737 5707 1 6 5733 5734 5736 6105 6102 6106 1 6 5735 5734 5737 6106 6107 5739 1 6 5736 5734 5707 5708 5738 5739 1 6 5737 5708 5739 5740 5747 5709 1 6 5737 5738 5740 5741 6107 5736 1 6 5739 5738 5741 5742 5746 5747 1 6 5739 5740 5742 5743 6107 6108 1 6 5741 5740 5743 5744 5745 5746 1 6 5741 5742 5744 6111 6108 6112 1 6 5743 5742 5745 6112 6113 6114 1 6 5744 5742 5746 5750 6121 6114 1 6 5745 5742 5740 5747 5748 5750 1 6 5746 5740 5738 5709 5710 5748 1 6 5747 5710 5712 5749 5746 5750 1 6 5748 5712 5750 5751 5752 5753 1 6 5746 5748 5745 5749 5751 6121 1 5 5750 5749 5752 6121 5949 1 6 5751 5749 5753 5568 5754 5949 1 6 5752 5749 5712 5713 5568 5566 1 6 5752 5568 5569 5755 5756 5949 1 6 5754 5569 5756 5757 5758 5770 1 6 5754 5755 5757 5949 5950 5951 1 6 5756 5755 5758 5759 5951 5952 1 6 5757 5755 5759 5760 5761 5770 1 6 5757 5758 5760 5952 5953 5957 1 6 5759 5758 5761 5762 5763 5957 1 6 5760 5758 5762 5766 5767 5770 1 6 5760 5761 5763 5764 5765 5766 1 6 5760 5762 5764 5957 5958 5988 1 6 5763 5762 5765 5989 5988 5990 1 6 5764 5762 5766 5990 5991 5776 1 6 5765 5762 5761 5767 5768 5776 1 6 5766 5761 5768 5769 5570 5770 1 6 5766 5767 5769 5772 5775 5776 1 6 5768 5767 5570 5571 5771 5772 1 6 5570 5767 5569 5761 5755 5758 1 6 5769 5571 5572 5573 5574 5772 1 7 5771 5574 5773 5592 5775 5769 5768 1 6 5772 5574 5575 5594 5590 5592 1 6 5589 5576 5586 5581 5579 5577 1 5 5772 5592 5593 5776 5768 1 7 5775 5593 5777 5991 5765 5768 5766 1 6 5776 5593 5778 5992 5991 5782 1 6 5777 5593 5591 5595 5779 5782 1 6 5778 5595 5596 5599 5780 5782 1 6 5779 5599 5781 5782 5783 5784 1 6 5780 5599 5600 5784 5785 5789 1 6 5779 5780 5783 5992 5777 5778 1 6 5782 5780 5784 5993 5992 5996 1 7 5783 5780 5781 5785 5786 5996 5997 1 6 5784 5781 5786 5787 5788 5789 1 6 5784 5785 5787 5997 5998 5999 1 6 5786 5785 5788 6002 5999 6003 1 6 5787 5785 5789 6009 6003 6199 1 6 5788 5785 5781 5600 5790 6199 1 6 5789 5600 5601 5791 5792 6199 1 6 5790 5601 5792 5793 5794 5603 1 6 5790 5791 5793 6198 6199 6197 1 6 5792 5791 5794 6197 6200 6221 1 6 5793 5791 5603 5795 6221 6219 1 6 5794 5603 5604 5796 5797 6219 1 6 5795 5604 5797 5798 5607 5606 1 6 5795 5796 5798 5799 6218 6219 1 6 5797 5796 5607 5799 5800 5610 1 6 5797 5798 5800 5801 5802 6218 1 7 5799 5798 5610 5609 5801 5805 5806 1 6 5799 5800 5802 5803 5804 5805 1 6 5799 5801 5803 6217 6209 6218 1 6 5802 5801 5804 5823 5824 6217 1 6 5803 5801 5805 5823 5830 5839 1 6 5804 5801 5800 5806 5808 5839 1 5 5805 5800 5609 5807 5808 1 5 5806 5609 5354 5356 5808 1 7 5807 5356 5358 5809 5839 5805 5806 1 6 5808 5358 5810 5838 5839 5886 1 7 5809 5358 5363 5364 5811 5885 5886 1 6 5810 5364 5884 5885 5887 5402 1 6 5665 5666 5813 5814 5815 5816 1 6 5665 5812 5814 5835 5664 5842 1 6 5813 5812 5815 5842 5843 5844 1 6 5814 5812 5816 5819 5820 5844 1 6 5815 5812 5666 5817 5818 5819 1 6 5816 5666 5818 5859 5857 5667 1 6 5816 5817 5819 5822 5857 5854 1 6 5816 5818 5815 5820 5821 5822 1 6 5815 5819 5821 5844 5845 5846 1 6 5820 5819 5822 5852 5849 5846 1 6 5821 5819 5818 5852 5853 5854 1 6 5803 5804 5824 5825 5826 5830 1 5 5803 5823 5825 6216 6217 1 7 5824 5823 5826 5827 6216 6215 6021 1 6 5825 5823 5827 5828 5829 5830 1 6 5825 5826 5828 6019 6020 6021 1 6 5827 5826 5829 5836 5872 6019 1 6 5828 5826 5830 5836 5837 5838 1 6 5829 5826 5823 5804 5838 5839 1 6 5658 5659 5832 6931 6932 6933 1 6 5831 5659 5660 5833 5840 6933 1 6 5832 5660 5661 5662 5834 5840 1 6 5833 5662 5835 5840 5841 5842 1 6 5834 5662 5663 5664 5813 5842 1 6 5828 5829 5837 5872 5873 5883 1 6 5836 5829 5838 5885 5883 5886 1 6 5837 5829 5830 5839 5809 5886 1 6 5838 5830 5809 5808 5805 5804 1 6 5832 5833 5834 5841 6933 6934 1 6 5840 5834 5842 6934 6935 5843 1 6 5841 5834 5835 5813 5814 5843 1 6 5842 5814 5844 6018 6935 5841 1 6 5843 5814 5815 5820 5845 6018 1 6 5844 5820 5846 5847 6018 6940 1 6 5845 5820 5847 5848 5849 5821 1 6 5845 5846 5848 6940 6941 6942 1 6 5847 5846 5849 5850 6945 6942 1 6 5848 5846 5850 5851 5852 5821 1 5 5848 5849 5851 6945 6385 1 6 5850 5849 5852 6103 6104 6385 1 6 5851 5849 5821 5822 5853 6103 1 6 5852 5822 5854 5855 6100 6103 1 6 5853 5822 5855 5856 5857 5818 1 6 5853 5854 5856 6098 6099 6100 1 6 5855 5854 5857 5858 6384 6098 1 6 5856 5854 5858 5859 5817 5818 1 6 5856 5857 5859 5860 6383 6384 1 6 5858 5857 5817 5667 5668 5860 1 6 5859 5668 5669 5861 6383 5858 1 6 5860 5669 5670 5862 9703 6383 1 6 5861 5670 5671 5863 9694 9703 1 6 5862 5671 5672 5864 9694 9695 1 6 5863 5672 5673 5865 9695 9696 1 7 5864 5673 5674 5866 9696 5718 9697 1 5 5865 5674 5675 5867 9697 1 7 5866 5675 5676 5677 5868 9697 9698 1 5 5867 5677 5693 5694 9698 1 5 5693 5678 5679 5870 5692 1 6 5869 5679 5680 5871 5690 5692 1 6 5870 5680 5681 5688 5689 5690 1 6 5828 5836 5873 5874 9736 6019 1 6 5872 5836 5874 5875 5882 5883 1 6 5872 5873 5875 5876 9736 6041 1 6 5874 5873 5876 5877 5878 5882 1 6 5874 5875 5877 6048 6041 6042 1 6 5876 5875 5878 5879 6049 6048 1 6 5877 5875 5879 5880 5881 5882 1 6 5877 5878 5880 6049 6050 5888 1 6 5879 5878 5881 5400 5399 5888 1 6 5880 5878 5882 5884 5887 5400 1 6 5881 5878 5875 5873 5883 5884 1 6 5882 5873 5836 5884 5885 5837 1 6 5882 5883 5885 5811 5881 5887 1 6 5884 5883 5837 5811 5810 5886 1 5 5810 5885 5837 5838 5809 1 5 5881 5884 5811 5402 5400 1 6 5880 5399 5889 6053 6050 5879 1 6 5888 5399 5397 5890 5891 6053 1 6 5889 5397 5891 5892 5893 5396 1 6 5889 5890 5892 6056 6053 6057 1 6 5891 5890 5893 6057 6058 6059 1 6 5892 5890 5396 5894 5895 6059 1 6 5893 5396 5895 5896 5899 5395 1 6 5893 5894 5896 5897 6059 6061 1 6 5895 5894 5897 5898 4889 5899 1 6 5895 5896 5898 5900 6061 6062 1 6 5897 5896 4889 4890 5900 5901 1 7 4889 5896 5894 5395 5393 5372 4888 1 6 5897 5898 5901 6065 6062 6066 1 6 5900 5898 4890 4892 5902 6066 1 6 5901 4892 5903 5904 5905 6066 1 6 5902 4892 5904 5911 5912 4893 1 6 5902 5903 5905 5906 5907 5911 1 6 5902 5904 5906 6066 6070 6067 1 7 5905 5904 5907 5908 6075 6072 6070 1 6 5906 5904 5908 5909 5910 5911 1 5 5906 5907 5909 5934 6075 1 7 5908 5907 5910 5932 5929 5933 5934 1 6 5909 5907 5911 5932 9752 5915 1 6 5910 5907 5904 5903 5912 5915 1 6 5911 5903 4893 5913 5914 5915 1 6 5912 4893 4894 4896 4899 5914 1 6 5913 4899 5912 5915 5916 5917 1 6 5912 5914 5916 5911 9752 5910 1 6 5915 5914 5917 9752 9755 9758 1 6 5916 5914 4899 4900 5918 9758 1 7 5917 4900 4902 3671 3951 5919 9758 1 6 5918 3951 3949 5920 9755 9758 1 5 5919 3949 3948 5921 9755 1 6 5920 3948 5922 5930 5931 9755 1 6 5921 3948 3946 3962 5923 5930 1 6 5922 3962 3963 5924 5925 5930 1 6 5923 3963 3965 5925 5926 5942 1 6 5923 5924 5926 5927 5929 5930 1 6 5925 5924 5927 5928 5941 5942 1 5 5925 5926 5928 5929 5933 1 7 5927 5926 5935 5933 5936 5940 5941 1 7 5925 5927 5930 5931 5932 5909 5933 1 6 5925 5929 5931 5923 5922 5921 1 6 5930 5929 5921 5932 9752 9755 1 5 5931 5929 5909 5910 9752 1 6 5909 5929 5934 5935 5928 5927 1 6 5909 5933 5935 6074 6075 5908 1 6 5934 5933 5928 5936 5937 6074 1 6 5935 5928 5937 5938 5939 5940 1 5 5935 5936 5938 6074 6076 1 6 5937 5936 5939 6076 6077 6086 1 6 5938 5936 5940 6087 6086 6091 1 7 5939 5936 5928 5941 5944 6091 5946 1 5 5940 5928 5926 5942 5944 1 6 5941 5926 5924 3965 5943 5944 1 7 5942 3965 3966 5944 5945 3135 5947 1 6 5942 5943 5941 5940 5945 5946 1 5 5944 5943 5946 3134 3135 1 6 5944 5945 3134 6091 5940 3136 1 6 3135 5943 2093 2092 5948 3966 1 6 2092 5947 3966 3967 2488 2489 1 6 5754 5756 5950 5752 5751 6121 1 6 5949 5756 5951 6166 6120 6121 1 6 5950 5756 5757 5952 6166 6164 1 6 5951 5757 5759 5953 5954 6164 1 6 5952 5759 5954 5955 5956 5957 1 6 5952 5953 5955 6162 6161 6164 1 6 5954 5953 5956 5960 5967 6162 1 6 5955 5953 5957 5958 5959 5960 1 6 5956 5953 5759 5760 5763 5958 1 6 5957 5763 5956 5959 5963 5988 1 6 5956 5958 5960 5961 5962 5963 1 6 5956 5959 5961 5964 5967 5955 1 6 5960 5959 5962 5964 5965 5982 1 6 5961 5959 5963 5983 5982 5984 1 6 5962 5959 5958 5987 5984 5988 1 6 5960 5961 5965 5966 5967 5968 1 6 5964 5961 5966 5982 5980 5971 1 6 5964 5965 5968 5969 5970 5971 1 6 5960 5964 5955 5968 6163 6162 1 7 5967 5964 5966 5969 6156 6157 6163 1 6 5968 5966 5970 6447 6445 6156 1 6 5969 5966 5971 5972 6447 6448 1 6 5970 5966 5972 5973 5965 5980 1 6 5970 5971 5973 5974 5975 6448 1 6 5972 5971 5974 5978 5979 5980 1 6 5972 5973 5975 5976 5977 5978 1 6 5972 5974 5976 6448 6449 6450 1 6 5975 5974 5977 6450 6608 6609 1 6 5976 5974 5978 6609 6612 6613 1 6 5977 5974 5973 5979 6613 6614 1 6 5978 5973 5980 5981 6640 6614 1 6 5979 5973 5981 5982 5965 5971 1 6 5979 5980 5982 5983 6640 6641 1 6 5981 5980 5983 5962 5961 5965 1 6 5981 5982 5962 5984 5985 6641 1 6 5983 5962 5985 5986 5987 5963 1 6 5983 5984 5986 6643 6641 6168 1 6 5985 5984 5987 5994 6167 6168 1 6 5986 5984 5963 5988 5989 5994 1 6 5987 5963 5958 5989 5764 5763 1 6 5987 5988 5764 5990 5993 5994 1 6 5989 5764 5765 5991 5992 5993 1 5 5990 5765 5992 5777 5776 1 6 5990 5991 5777 5993 5783 5782 1 7 5990 5992 5783 5989 5994 5995 5996 1 6 5989 5993 5995 5986 5987 6167 1 6 5994 5993 5996 5997 5998 6167 1 5 5995 5993 5783 5784 5997 1 5 5995 5996 5998 5784 5786 1 7 5995 5997 5786 5999 6000 6169 6167 1 6 5998 5786 6000 6001 6002 5787 1 5 5998 5999 6001 6169 6170 1 6 6000 5999 6002 6170 6171 6005 1 6 6001 5999 5787 6003 6004 6005 1 6 6002 5787 6004 6008 6009 5788 1 6 6002 6003 6005 6006 6007 6008 1 6 6002 6004 6006 6171 6001 6172 1 6 6005 6004 6007 6010 6172 6173 1 6 6006 6004 6008 6010 6011 6015 1 6 6007 6004 6003 6009 6017 6015 1 6 6008 6003 5788 6198 6017 6199 1 6 6006 6007 6011 6012 6179 6173 1 6 6010 6007 6012 6013 6014 6015 1 6 6010 6011 6013 6180 6179 6186 1 6 6012 6011 6014 6190 6187 6186 1 6 6013 6011 6015 6016 6190 6191 1 6 6014 6011 6016 6017 6008 6007 1 6 6014 6015 6017 6191 6194 6195 1 6 6016 6015 6008 6198 6195 6009 1 6 5843 5844 5845 6937 6935 6940 1 6 5827 5828 6020 9736 6038 5872 1 6 5827 6019 6021 6022 6023 6038 1 6 5827 6020 6022 6215 5825 6222 1 6 6021 6020 6023 6024 6025 6222 1 6 6022 6020 6024 6037 6028 6038 1 6 6022 6023 6025 6026 6027 6028 1 6 6022 6024 6026 6222 6225 6223 1 6 6025 6024 6027 6225 6226 6032 1 6 6026 6024 6028 6029 6031 6032 1 6 6027 6024 6029 6030 6037 6023 1 6 6027 6028 6030 6031 6033 6034 1 6 6029 6028 6034 6035 6036 6037 1 6 6027 6029 6032 6033 6247 6239 1 6 6027 6031 6226 6026 6227 6239 1 6 6031 6029 6034 6247 6246 6248 1 6 6033 6029 6030 6035 6248 6249 1 6 6034 6030 6036 6249 6263 6264 1 6 6035 6030 6037 6039 6040 6264 1 6 6036 6030 6028 6023 6038 6039 1 6 6037 6023 6039 9736 6019 6020 1 6 6037 6038 6036 6040 6041 9736 1 7 6036 6039 6041 6042 6043 6265 6264 1 6 6040 6039 6042 9736 5874 5876 1 6 6040 6041 6043 6044 6048 5876 1 5 6040 6042 6044 6045 6265 1 6 6043 6042 6045 6046 6047 6048 1 7 6043 6044 6046 6262 6265 6261 6266 1 6 6045 6044 6047 6269 6266 6280 1 6 6046 6044 6048 6049 6051 6280 1 6 6047 6044 6042 6049 5877 5876 1 6 6047 6048 5877 5879 6050 6051 1 6 6049 5879 6051 6052 6053 5888 1 6 6049 6050 6052 6054 6280 6047 1 6 6051 6050 6053 6054 6055 6056 1 6 6052 6050 5888 5889 6056 5891 1 7 6051 6052 6055 6279 6280 6278 6281 1 6 6054 6052 6056 6283 6281 6284 1 6 6055 6052 6053 5891 6057 6284 1 6 6056 5891 5892 6058 6060 6284 1 6 6057 5892 6059 6060 6287 6288 1 6 6058 5892 5893 5895 6061 6288 1 6 6057 6058 6284 6285 6286 6287 1 6 6059 5895 5897 6062 6063 6288 1 6 6061 5897 6063 6064 6065 5900 1 7 6061 6062 6064 6288 6291 6289 6292 1 5 6063 6062 6065 6292 6068 1 6 6064 6062 5900 6066 6067 6068 1 6 6065 5900 5901 5902 5905 6067 1 6 6065 6066 6068 6069 6070 5905 1 7 6065 6067 6069 6292 6064 6293 6294 1 5 6068 6067 6070 6071 6294 1 6 6069 6067 5905 6071 6072 5906 1 7 6069 6070 6072 6073 6296 6294 6297 1 6 6071 6070 6073 6074 6075 5906 1 6 6071 6072 6074 6297 6078 6076 1 7 6073 6072 6075 5934 5935 5937 6076 1 5 6074 6072 5934 5908 5906 1 6 6074 5937 5938 6077 6078 6073 1 6 6076 5938 6078 6079 6086 6083 1 6 6076 6077 6079 6080 6297 6073 1 6 6078 6077 6080 6081 6082 6083 1 6 6078 6079 6081 6297 6298 6301 1 6 6080 6079 6082 6301 6302 6314 1 6 6081 6079 6083 6084 6313 6314 1 6 6082 6079 6084 6085 6086 6077 1 7 6082 6083 6085 6088 6313 6315 6318 1 6 6084 6083 6086 6087 6088 6089 1 6 6085 6083 6087 5939 5938 6077 1 6 6085 6086 5939 6089 6090 6091 1 6 6084 6085 6089 6094 3769 6318 1 7 6088 6085 6087 6090 3137 6092 6094 1 5 6089 6087 6091 3136 3137 1 6 6090 6087 5939 5940 5946 3136 1 6 6089 3137 3138 6093 3768 6094 1 7 6092 3138 3768 3766 2085 2084 9776 1 5 6092 3768 3769 6088 6089 1 6 5724 5725 6096 6383 9702 9703 1 6 6095 5725 6097 6098 6383 6384 1 5 6096 5725 5726 5730 6098 1 7 6096 6097 5730 6099 6384 5856 5855 1 5 6098 5730 5731 6100 5855 1 7 6099 5731 6101 6102 6103 5855 5853 1 5 6100 5731 5732 5733 6102 1 7 6101 5733 6100 6103 6104 6105 5735 1 6 6100 6102 6104 5853 5852 5851 1 6 6103 6102 6105 5851 6385 6386 1 5 6104 6102 5735 6106 6386 1 7 6105 5735 5736 6107 6386 6387 6109 1 6 6106 5736 5739 5741 6108 6109 1 6 6107 5741 6109 6110 6111 5743 1 6 6107 6108 6110 6387 6106 6388 1 6 6109 6108 6111 6388 6389 6390 1 6 6110 6108 5743 6112 6393 6390 1 6 6111 5743 5744 6113 6115 6393 1 6 6112 5744 6114 6115 6116 6117 1 6 6113 5744 6120 6117 6121 5745 1 6 6112 6113 6116 6393 9737 9738 1 6 6115 6113 6117 6118 6122 9738 1 6 6116 6113 6118 6119 6120 6114 1 6 6116 6117 6119 6122 6123 6165 1 5 6118 6117 6120 6166 6165 1 6 6119 6117 6114 6121 6166 5950 1 7 6120 6114 5745 5750 5751 5949 5950 1 6 6116 6118 6123 6124 6131 9738 1 6 6122 6118 6124 6125 6165 6160 1 6 6122 6123 6125 6126 6127 6131 1 6 6124 6123 6126 6152 6160 6158 1 6 6124 6125 6127 6128 6151 6152 1 6 6124 6126 6128 6129 6130 6131 1 6 6127 6126 6129 6150 6149 6151 1 6 6127 6128 6130 6150 6137 6134 1 6 6127 6129 6131 6132 6133 6134 1 6 6127 6130 6132 9738 6122 6124 1 6 6131 6130 6133 6398 9737 9738 1 6 6132 6130 6134 6135 6397 6398 1 6 6133 6130 6135 6136 6137 6129 1 6 6133 6134 6136 6397 6399 6400 1 6 6135 6134 6137 6138 6400 6401 1 6 6136 6134 6138 6139 6150 6129 1 6 6136 6137 6139 6140 6401 6402 1 6 6138 6137 6140 6141 6148 6150 1 6 6138 6139 6141 6142 6402 6403 1 6 6140 6139 6142 6143 6144 6148 1 6 6140 6141 6143 6403 6404 6405 1 6 6142 6141 6144 6145 6405 6436 1 6 6143 6141 6145 6146 6147 6148 1 6 6143 6144 6146 6437 6436 6438 1 6 6145 6144 6147 6438 6439 6440 1 6 6146 6144 6148 6149 6440 6441 1 6 6147 6144 6141 6139 6149 6150 1 6 6147 6148 6150 6128 6151 6441 1 6 6149 6148 6139 6137 6129 6128 1 6 6149 6128 6126 6152 6153 6441 1 6 6151 6126 6125 6153 6154 6158 1 6 6151 6152 6154 6155 6441 6442 1 6 6153 6152 6155 6156 6157 6158 1 6 6153 6154 6156 6444 6442 6445 1 6 6155 6154 6157 5969 6445 5968 1 6 6156 6154 6158 6159 5968 6163 1 6 6157 6154 6152 6159 6160 6125 1 6 6157 6158 6160 6161 6162 6163 1 6 6159 6158 6125 6161 6123 6165 1 6 6159 6160 6162 5954 6164 6165 1 6 6159 6161 6163 5967 5955 5954 1 5 6159 6162 5967 6157 5968 1 6 5954 6161 6165 6166 5951 5952 1 7 6164 6161 6166 6119 6118 6123 6160 1 6 6164 6165 6119 6120 5950 5951 1 6 5994 5995 5986 6168 6169 5998 1 6 5986 6167 6169 6643 5985 9783 1 6 6168 6167 5998 6000 6170 9783 1 7 6169 6000 6001 6171 6789 9783 9782 1 7 6170 6001 6005 6172 6788 6786 6789 1 6 6171 6005 6006 6173 6174 6788 1 6 6172 6006 6174 6175 6010 6179 1 6 6172 6173 6175 6176 6784 6788 1 6 6174 6173 6176 6177 6178 6179 1 6 6174 6175 6177 6782 6781 6784 1 6 6176 6175 6178 9796 6782 9797 1 6 6177 6175 6179 6180 6181 9796 1 6 6178 6175 6180 6012 6010 6173 1 6 6178 6179 6181 6182 6186 6012 1 6 6178 6180 6182 6183 9796 9799 1 6 6181 6180 6183 6184 6185 6186 1 6 6181 6182 6184 6362 6645 9799 1 6 6183 6182 6185 6362 6363 6367 1 6 6184 6182 6186 6187 6188 6367 1 6 6185 6182 6180 6187 6012 6013 1 6 6185 6186 6188 6189 6190 6013 1 6 6185 6187 6189 6367 6368 6369 1 6 6188 6187 6190 6369 6372 6192 1 6 6189 6187 6013 6014 6191 6192 1 6 6190 6014 6016 6192 6193 6194 1 6 6190 6191 6193 6372 6189 6373 1 6 6192 6191 6194 6382 6373 6203 1 6 6193 6191 6016 6195 6196 6203 1 6 6194 6016 6196 6197 6198 6017 1 6 6194 6195 6197 6200 6201 6203 1 6 6196 6195 6198 5792 5793 6200 1 6 6197 6195 6017 6009 6199 5792 1 6 6198 6009 5792 5790 5789 5788 1 6 6197 5793 6196 6201 6202 6221 1 6 6196 6200 6202 6203 6204 6205 1 6 6201 6200 6205 6206 6220 6221 1 6 6196 6201 6204 6382 6193 6194 1 6 6203 6201 6205 6382 6459 6381 1 6 6204 6201 6202 6206 6207 6459 1 6 6205 6202 6207 6208 6209 6220 1 6 6205 6206 6208 6210 6211 6459 1 6 6207 6206 6209 6210 6214 6217 1 6 6208 6206 5802 6217 6218 6220 1 6 6207 6208 6211 6212 6213 6214 1 6 6207 6210 6212 6456 6458 6459 1 7 6211 6210 6213 6223 6224 6454 6456 1 5 6212 6210 6214 6215 6223 1 6 6213 6210 6208 6215 6216 6217 1 7 6213 6214 6216 5825 6021 6222 6223 1 5 6215 6214 6217 5824 5825 1 7 6216 6214 5824 5803 5802 6209 6208 1 6 5802 6209 5799 5797 6219 6220 1 6 5797 6218 6220 6221 5794 5795 1 6 6219 6218 6209 6206 6202 6221 1 6 6219 6220 6202 6200 5793 5794 1 5 6215 6021 6022 6025 6223 1 7 6215 6222 6213 6212 6224 6225 6025 1 7 6212 6223 6225 6454 6231 6226 6228 1 5 6224 6223 6025 6026 6226 1 6 6225 6026 6032 6227 6228 6224 1 6 6226 6032 6228 6229 6238 6239 1 6 6226 6227 6229 6230 6231 6224 1 6 6228 6227 6230 6237 6234 6238 1 6 6228 6229 6231 6232 6233 6234 1 6 6228 6230 6232 6454 6224 6455 1 6 6231 6230 6233 6455 6460 6461 1 6 6232 6230 6234 6235 6461 6462 1 6 6233 6230 6235 6236 6237 6229 1 6 6233 6234 6236 6462 6463 6471 1 6 6235 6234 6237 6473 6471 6476 1 6 6236 6234 6229 6238 6476 6241 1 6 6237 6229 6227 6239 6240 6241 1 6 6238 6227 6240 6247 6031 6032 1 6 6238 6239 6241 6242 6243 6247 1 6 6238 6240 6242 6476 6237 6477 1 6 6241 6240 6243 6244 6477 6479 1 6 6242 6240 6244 6245 6246 6247 1 6 6242 6243 6245 6481 6479 6482 1 6 6244 6243 6246 6482 6253 6251 1 6 6245 6243 6247 6033 6248 6251 1 6 6246 6243 6240 6239 6031 6033 1 6 6246 6033 6034 6249 6250 6251 1 6 6248 6034 6035 6250 6263 6255 1 6 6248 6249 6251 6252 6254 6255 1 6 6248 6250 6252 6253 6245 6246 1 6 6251 6250 6253 6254 6484 6485 1 6 6251 6252 6482 6245 6483 6484 1 6 6252 6250 6255 6256 6257 6485 1 6 6254 6250 6256 6263 6260 6249 1 6 6254 6255 6257 6258 6259 6260 1 6 6254 6256 6258 6485 6493 6494 1 6 6257 6256 6259 6494 6495 6496 1 7 6258 6256 6260 6261 6496 6273 6267 1 6 6259 6256 6261 6262 6263 6255 1 6 6259 6260 6262 6045 6266 6267 1 6 6261 6260 6263 6264 6265 6045 1 6 6262 6260 6264 6255 6249 6035 1 6 6262 6263 6265 6035 6040 6036 1 5 6262 6264 6045 6043 6040 1 6 6045 6261 6267 6268 6269 6046 1 6 6261 6266 6268 6272 6273 6259 1 6 6267 6266 6269 6270 6271 6272 1 6 6268 6266 6046 6270 6279 6280 1 6 6268 6269 6271 6277 6278 6279 1 6 6268 6270 6272 6275 6276 6277 1 6 6268 6271 6267 6273 6274 6275 1 6 6267 6272 6274 6496 6259 6497 1 6 6273 6272 6275 6500 6497 6501 1 6 6274 6272 6271 6276 6501 6502 1 6 6275 6271 6277 6502 6503 6504 1 6 6276 6271 6270 6278 6504 6505 1 7 6277 6270 6279 6054 6281 6282 6505 1 5 6278 6270 6269 6280 6054 1 6 6279 6269 6046 6054 6051 6047 1 5 6278 6054 6282 6283 6055 1 6 6278 6281 6283 6506 6505 6507 1 6 6282 6281 6055 6284 6507 6285 1 6 6283 6055 6056 6057 6060 6285 1 6 6284 6060 6286 6507 6283 6508 1 7 6285 6060 6287 6508 6328 6511 6290 1 6 6286 6060 6058 6288 6289 6290 1 6 6287 6058 6059 6061 6063 6289 1 5 6287 6288 6290 6291 6063 1 5 6287 6289 6291 6328 6286 1 7 6290 6289 6063 6292 6326 6327 6328 1 6 6291 6063 6064 6068 6293 6326 1 6 6292 6068 6294 6295 6325 6326 1 6 6293 6068 6069 6295 6296 6071 1 6 6293 6294 6296 6299 6324 6325 1 6 6295 6294 6071 6297 6298 6299 1 6 6296 6071 6073 6078 6080 6298 1 6 6297 6080 6296 6299 6300 6301 1 5 6296 6298 6300 6324 6295 1 6 6299 6298 6301 6303 6323 6324 1 6 6300 6298 6080 6081 6302 6303 1 6 6301 6081 6303 6304 6308 6314 1 6 6301 6302 6304 6305 6323 6300 1 6 6303 6302 6305 6306 6307 6308 1 6 6303 6304 6306 6323 6337 6338 1 6 6305 6304 6307 6338 6341 6342 1 6 6306 6304 6308 6309 6342 6343 1 6 6307 6304 6302 6309 6310 6314 1 6 6307 6308 6310 6311 6343 6346 1 6 6309 6308 6311 6312 6313 6314 1 6 6309 6310 6312 6321 6322 6346 1 6 6311 6310 6313 6315 6316 6321 1 6 6312 6310 6314 6082 6084 6315 1 6 6313 6310 6082 6081 6302 6308 1 6 6313 6084 6312 6316 6317 6318 1 6 6312 6315 6317 6319 6320 6321 1 6 6316 6315 6318 3769 1571 6319 1 5 6317 6315 3769 6084 6088 1 5 6317 1571 1572 6320 6316 1 7 6319 1572 1573 6316 6321 6322 6360 1 5 6316 6320 6322 6312 6311 1 7 6321 6320 6311 6347 6346 6348 6360 1 6 6303 6305 6300 6324 6335 6337 1 7 6300 6323 6299 6295 6325 6336 6335 1 6 6295 6324 6293 6326 6336 6331 1 6 6293 6325 6292 6291 6327 6331 1 6 6291 6326 6328 6329 6330 6331 1 6 6291 6327 6329 6511 6286 6290 1 6 6328 6327 6330 6510 6511 6519 1 7 6329 6327 6331 6332 6333 6519 6518 1 6 6330 6327 6332 6336 6325 6326 1 6 6330 6331 6333 6334 6335 6336 1 5 6330 6332 6334 6518 6520 1 6 6333 6332 6335 6520 6528 6529 1 7 6334 6332 6336 6324 6323 6337 6529 1 5 6335 6332 6331 6325 6324 1 6 6335 6323 6305 6338 6339 6529 1 6 6337 6305 6306 6339 6340 6341 1 6 6337 6338 6340 6530 6527 6529 1 5 6339 6338 6341 6545 6530 1 6 6340 6338 6306 6342 6546 6545 1 6 6341 6306 6307 6343 6344 6546 1 6 6342 6307 6344 6345 6346 6309 1 6 6342 6343 6345 6546 6543 6547 1 6 6344 6343 6346 6347 6549 6547 1 6 6345 6343 6347 6322 6311 6309 1 6 6345 6346 6322 6348 6349 6549 1 6 6347 6322 6349 6350 6359 6360 1 6 6347 6348 6350 6351 6550 6549 1 6 6349 6348 6351 6352 6353 6359 1 6 6349 6350 6352 6552 6550 6553 1 6 6351 6350 6353 6354 6355 6553 1 6 6352 6350 6354 1589 2476 6359 1 7 6352 6353 6355 6356 1594 1590 1589 1 6 6352 6354 6356 6357 6553 6554 1 5 6355 6354 6357 6358 1594 1 6 6355 6356 6358 6554 6555 3971 1 6 6357 6356 1594 3971 3970 1595 1 6 2476 6353 6350 6348 6360 6361 1 6 6359 6348 6361 1573 6320 6322 1 5 6359 6360 1573 2475 2476 1 6 6183 6184 6363 6364 6644 6645 1 6 6362 6184 6364 6365 6366 6367 1 6 6362 6363 6365 6644 6648 6649 1 6 6364 6363 6366 9727 9673 6649 1 6 6365 6363 6367 9727 9728 6368 1 6 6366 6363 6184 6185 6188 6368 1 6 6367 6188 6369 6370 9728 6366 1 6 6368 6188 6189 6370 6371 6372 1 6 6368 6369 6371 9728 9729 9730 1 6 6370 6369 6372 6374 6375 9730 1 6 6371 6369 6189 6192 6373 6374 1 6 6372 6192 6374 6382 6380 6193 1 6 6372 6373 6371 6375 6376 6380 1 6 6371 6374 6376 6377 6467 9730 1 6 6375 6374 6377 6378 6379 6380 1 5 6375 6376 6378 9693 6467 1 7 6377 6376 6379 6457 6455 6460 9693 1 6 6378 6376 6380 6381 6457 6458 1 6 6379 6376 6381 6382 6373 6374 1 6 6379 6380 6382 6459 6458 6204 1 6 6381 6380 6373 6193 6203 6204 1 7 6095 6096 6384 9703 5861 5860 5858 1 5 6383 6096 6098 5856 5858 1 6 5851 6104 6386 6945 5850 6946 1 7 6385 6104 6105 6106 6387 6946 6947 1 5 6386 6106 6109 6388 6947 1 6 6387 6109 6110 6389 6947 6948 1 6 6388 6110 6390 6391 6948 6949 1 6 6389 6110 6391 6392 6393 6111 1 6 6389 6390 6392 6394 6395 6949 1 6 6391 6390 6393 6394 9737 6398 1 6 6392 6390 6111 6112 6115 9737 1 6 6391 6392 6395 6396 6397 6398 1 6 6391 6394 6396 6949 6950 6951 1 6 6395 6394 6397 6951 6952 6399 1 6 6396 6394 6398 6133 6135 6399 1 6 6397 6394 6133 6132 9737 6392 1 6 6397 6135 6400 6952 6396 6953 1 6 6399 6135 6136 6401 6953 6954 1 6 6400 6136 6138 6402 6954 6960 1 6 6401 6138 6140 6403 6960 6410 1 6 6402 6140 6142 6404 6408 6410 1 6 6403 6142 6405 6406 6407 6408 1 6 6404 6142 6143 6406 6436 6434 1 6 6404 6405 6407 6431 6429 6434 1 6 6404 6406 6408 6409 6428 6429 1 6 6404 6407 6409 6403 6410 6411 1 6 6408 6407 6411 6412 6413 6428 1 6 6403 6408 6411 6959 6960 6402 1 6 6410 6408 6409 6412 6959 6961 1 6 6411 6409 6413 6414 6963 6961 1 6 6412 6409 6414 6415 6427 6428 1 6 6412 6413 6415 6416 6963 6964 1 6 6414 6413 6416 6417 6418 6427 1 6 6414 6415 6417 6558 6559 6964 1 6 6416 6415 6418 6419 6558 6565 1 6 6417 6415 6419 6420 6427 6424 1 6 6417 6418 6420 6421 6573 6565 1 6 6419 6418 6421 6422 6423 6424 1 6 6419 6420 6422 6573 6572 6574 1 6 6421 6420 6423 6580 6577 6574 1 6 6422 6420 6424 6425 6580 6581 1 6 6423 6420 6425 6426 6427 6418 1 6 6423 6424 6426 6584 6581 6430 1 6 6425 6424 6427 6428 6429 6430 1 6 6426 6424 6418 6415 6413 6428 1 6 6427 6413 6409 6407 6426 6429 1 6 6426 6428 6407 6430 6431 6406 1 6 6426 6429 6431 6432 6584 6425 1 6 6430 6429 6406 6432 6433 6434 1 6 6430 6431 6433 6584 6585 6586 1 6 6432 6431 6434 6435 6589 6586 1 6 6433 6431 6435 6436 6405 6406 1 6 6433 6434 6436 6437 6589 6590 1 6 6435 6434 6405 6437 6145 6143 1 6 6435 6436 6145 6438 6590 6591 1 6 6437 6145 6146 6439 6591 6592 1 6 6438 6146 6440 6595 6592 6443 1 6 6439 6146 6147 6441 6442 6443 1 6 6440 6147 6149 6151 6153 6442 1 6 6441 6153 6440 6443 6444 6155 1 6 6440 6442 6444 6595 6439 6453 1 6 6443 6442 6155 6445 6446 6453 1 6 6444 6155 6446 6447 5969 6156 1 6 6444 6445 6447 6449 6452 6453 1 6 6446 6445 5969 5970 6448 6449 1 5 6447 5970 5972 5975 6449 1 7 6448 5975 6447 6450 6451 6452 6446 1 7 6449 5975 5976 6451 6607 6598 6608 1 6 6449 6450 6452 6596 6597 6598 1 5 6449 6451 6446 6453 6596 1 6 6446 6452 6595 6443 6444 6596 1 5 6212 6224 6231 6455 6456 1 7 6454 6231 6456 6457 6378 6232 6460 1 6 6454 6455 6457 6458 6211 6212 1 5 6456 6455 6378 6379 6458 1 6 6457 6379 6456 6211 6459 6381 1 6 6211 6458 6207 6381 6204 6205 1 5 6455 6232 6461 9693 6378 1 6 6460 6232 6233 6462 6465 9693 1 6 6461 6233 6235 6463 6464 6465 1 6 6462 6235 6464 6469 6470 6471 1 6 6462 6463 6465 6466 6468 6469 1 6 6462 6464 6461 6466 6467 9693 1 6 6465 6464 6467 6468 9731 9732 1 7 6465 6466 9693 6377 6375 9730 9731 1 6 6466 6464 6469 7509 7510 9732 1 7 6468 6464 6463 6470 7507 7509 7506 1 6 6469 6463 6471 6472 7506 7505 1 6 6470 6463 6235 6472 6473 6236 1 6 6470 6471 6473 6474 7504 7505 1 6 6472 6471 6236 6474 6475 6476 1 7 6472 6473 6475 7503 7504 9692 9780 1 6 6474 6473 6476 6477 6478 9692 1 6 6475 6473 6236 6237 6241 6477 1 6 6476 6241 6242 6475 6478 6479 1 7 6475 6477 6479 6480 9692 9778 9779 1 6 6478 6477 6242 6480 6481 6244 1 6 6478 6479 6481 6487 9705 9778 1 6 6480 6479 6244 6482 6486 6487 1 6 6481 6244 6245 6253 6483 6486 1 5 6482 6253 6484 6486 6489 1 7 6483 6253 6252 6485 6489 6490 6491 1 7 6484 6252 6254 6257 6491 6492 6493 1 6 6482 6483 6481 6487 6488 6489 1 5 6481 6486 6488 9705 6480 1 7 6487 6486 6489 9704 2194 2195 9705 1 6 6488 6486 6483 6484 6490 9704 1 6 6489 6484 6491 2251 2252 9704 1 6 6490 6484 6485 6492 2251 9706 1 6 6491 6485 6493 9706 3335 9707 1 5 6492 6485 6257 6494 9707 1 6 6493 6257 6258 6495 9707 6499 1 6 6494 6258 6496 6497 6498 6499 1 5 6495 6258 6259 6273 6497 1 6 6496 6273 6495 6498 6500 6274 1 6 6495 6497 6499 2511 2512 6500 1 7 6495 6498 2511 3334 9707 3881 6494 1 6 2512 6498 6497 6274 6501 9710 1 6 6500 6274 6275 6502 9709 9710 1 6 6501 6275 6276 6503 9708 9709 1 6 6502 6276 6504 6512 9708 9711 1 6 6503 6276 6277 6505 6506 6512 1 5 6504 6277 6506 6282 6278 1 7 6504 6505 6282 6507 6512 6513 6509 1 6 6506 6282 6283 6285 6508 6509 1 6 6507 6285 6286 6509 6510 6511 1 6 6507 6508 6510 6513 6506 6514 1 7 6509 6508 6511 6329 6514 6515 6519 1 5 6510 6508 6329 6328 6286 1 6 6503 6504 6506 6513 9711 9717 1 5 6512 6506 6509 6514 9717 1 7 6513 6509 6510 6515 6516 9717 9718 1 6 6514 6510 6516 6517 6518 6519 1 6 6514 6515 6517 9718 9719 6522 1 6 6516 6515 6518 6520 6521 6522 1 6 6517 6515 6519 6330 6333 6520 1 5 6518 6515 6510 6329 6330 1 7 6518 6333 6334 6517 6521 6525 6528 1 6 6517 6520 6522 6523 6524 6525 1 7 6517 6521 6523 2214 9719 6516 2213 1 5 6522 6521 6524 2213 3348 1 7 6523 6521 6525 6526 3348 3347 6532 1 6 6524 6521 6520 6526 6527 6528 1 6 6524 6525 6527 6530 6531 6532 1 6 6526 6525 6528 6530 6339 6529 1 5 6527 6525 6520 6334 6529 1 6 6528 6334 6335 6339 6527 6337 1 7 6526 6527 6531 6340 6545 6339 6534 1 6 6526 6530 6532 3863 6533 6534 1 5 6526 6531 3863 3347 6524 1 6 3863 6531 6534 6535 6536 6716 1 6 6533 6531 6535 6544 6545 6530 1 6 6533 6534 6536 6537 6544 6541 1 6 6533 6535 6537 6538 6715 6716 1 6 6536 6535 6538 6539 6540 6541 1 7 6536 6537 6539 6714 3887 3886 6715 1 6 6538 6537 6540 6714 6718 6719 1 6 6539 6537 6541 6542 6719 6708 1 6 6540 6537 6542 6543 6544 6535 1 6 6540 6541 6543 6547 6548 6708 1 6 6542 6541 6544 6546 6344 6547 1 6 6543 6541 6535 6534 6545 6546 1 6 6544 6534 6546 6341 6340 6530 1 6 6544 6545 6543 6341 6342 6344 1 6 6543 6344 6542 6548 6549 6345 1 6 6542 6547 6549 6550 6551 6708 1 6 6548 6547 6345 6347 6550 6349 1 6 6548 6549 6551 6552 6351 6349 1 6 6548 6550 6552 6705 6707 6708 1 6 6551 6550 6351 6553 6554 6705 1 5 6552 6351 6352 6355 6554 1 6 6553 6355 6357 6555 6552 6705 1 7 6554 6357 3971 6705 6706 9747 3491 1 6 3969 1597 1598 6557 4038 3968 1 6 6556 1598 4038 3764 612 611 1 6 6416 6417 6559 6560 6564 6565 1 6 6416 6558 6560 6561 6964 6965 1 6 6559 6558 6561 6562 6563 6564 1 6 6559 6560 6562 6965 6966 6967 1 6 6561 6560 6563 6985 6983 6967 1 6 6562 6560 6564 6985 6986 6567 1 6 6563 6560 6558 6565 6566 6567 1 6 6564 6558 6417 6566 6573 6419 1 6 6564 6565 6567 6568 6569 6573 1 6 6564 6566 6568 6986 6563 6987 1 6 6567 6566 6569 6570 6990 6987 1 6 6568 6566 6570 6571 6572 6573 1 6 6568 6569 6571 6997 6990 6998 1 6 6570 6569 6572 6575 7001 6998 1 6 6571 6569 6573 6421 6574 6575 1 6 6572 6569 6566 6565 6419 6421 1 6 6572 6421 6575 6576 6577 6422 1 6 6572 6574 6576 7003 7001 6571 1 6 6575 6574 6577 6578 7003 7004 1 6 6576 6574 6578 6579 6580 6422 1 6 6576 6577 6579 7004 7005 7006 1 6 6578 6577 6580 7006 7007 6582 1 6 6579 6577 6422 6423 6581 6582 1 6 6580 6423 6582 6583 6584 6425 1 6 6580 6581 6583 7007 6579 7008 1 6 6582 6581 6584 6720 7008 6585 1 6 6583 6581 6425 6430 6432 6585 1 6 6584 6432 6586 6587 6720 6583 1 6 6585 6432 6587 6588 6589 6433 1 6 6585 6586 6588 6720 6721 6728 1 6 6587 6586 6589 6728 6729 6730 1 6 6588 6586 6433 6435 6590 6730 1 6 6589 6435 6437 6591 6730 6731 1 6 6590 6437 6438 6592 6593 6731 1 6 6591 6438 6593 6594 6595 6439 1 6 6591 6592 6594 6731 6732 6733 1 7 6593 6592 6595 6600 6733 6597 6596 1 6 6594 6592 6439 6443 6453 6596 1 6 6595 6453 6452 6451 6597 6594 1 6 6596 6451 6598 6599 6600 6594 1 6 6597 6451 6599 6606 6607 6450 1 6 6597 6598 6600 6601 6602 6606 1 5 6597 6599 6601 6733 6594 1 6 6600 6599 6602 6603 6734 6733 1 6 6601 6599 6603 6604 6605 6606 1 7 6601 6602 6604 6734 6735 6736 6737 1 5 6603 6602 6605 6737 6738 1 7 6604 6602 6606 6738 6739 6748 6745 1 6 6605 6602 6599 6598 6607 6748 1 6 6606 6598 6450 6608 6747 6748 1 6 6607 6450 5976 6609 6610 6747 1 6 6608 5976 5977 6610 6611 6612 1 6 6608 6609 6611 6747 6746 6749 1 6 6610 6609 6612 6619 6620 6749 1 6 6611 6609 5977 6613 6616 6619 1 6 6612 5977 5978 6614 6615 6616 1 6 6613 5978 6615 6639 6640 5979 1 6 6613 6614 6616 6617 6638 6639 1 6 6613 6615 6617 6618 6619 6612 1 6 6616 6615 6618 6636 6637 6638 1 6 6616 6617 6619 6621 6622 6636 1 6 6616 6618 6612 6611 6620 6621 1 6 6611 6619 6621 6750 6749 6626 1 6 6620 6619 6618 6622 6623 6626 1 6 6621 6618 6623 6624 6635 6636 1 6 6621 6622 6624 6625 6626 6627 1 6 6623 6622 6625 6633 6634 6635 1 6 6623 6624 6627 6628 6632 6633 1 6 6621 6623 6627 6750 6620 6751 1 6 6626 6623 6625 6628 6629 6751 1 6 6627 6625 6629 6630 6631 6632 1 6 6627 6628 6630 6756 6753 6751 1 6 6629 6628 6631 6756 6757 6758 1 6 6630 6628 6632 6758 6766 6767 1 6 6631 6628 6625 6633 6767 6768 1 6 6632 6625 6624 6634 6768 6769 1 6 6633 6624 6635 6769 6770 6771 1 6 6634 6624 6622 6636 9785 6771 1 6 6635 6622 6618 6617 6637 9785 1 6 6636 6617 6638 6785 6783 9785 1 6 6637 6617 6615 6639 9777 6785 1 6 6638 6615 6614 6640 9777 6642 1 6 6639 6614 5979 5981 6641 6642 1 6 6640 5981 5983 6642 6643 5985 1 7 6640 6641 6643 9777 6639 6787 9782 1 6 6642 6641 5985 6168 9782 9783 1 6 6362 6364 6645 6646 6647 6648 1 6 6362 6644 6183 6646 9724 9799 1 6 6645 6644 6647 9723 9724 6655 1 6 6646 6644 6648 6652 6654 6655 1 6 6647 6644 6364 6649 6650 6652 1 6 6648 6364 6650 6651 9673 6365 1 6 6648 6649 6651 6652 6653 9670 1 6 6650 6649 9670 9671 9672 9673 1 6 6648 6650 6653 6647 6654 3173 1 6 6652 6650 9670 9691 3172 3173 1 6 6647 6652 3173 6655 3450 3175 1 6 6647 6654 3450 6656 9723 6646 1 6 6655 3450 6657 6658 9721 9723 1 6 6656 3450 6658 3179 6659 6667 1 6 6656 6657 6667 6668 6669 9721 1 6 6657 3179 6660 6663 6664 6667 1 6 6659 3179 3178 6661 6662 6663 1 6 6660 3178 3180 2858 2859 6662 1 5 6660 6661 6663 6666 2859 1 6 6660 6662 6659 6664 6665 6666 1 6 6659 6663 6665 6667 6668 6672 1 7 6664 6663 6666 6672 6673 4564 4563 1 6 6665 6663 6662 4563 6674 2859 1 5 6659 6664 6668 6658 6657 1 7 6667 6664 6658 6669 6670 6671 6672 1 6 6658 6668 6670 6774 6775 9721 1 6 6669 6668 6671 6773 6772 6774 1 6 6670 6668 6672 6673 6790 6773 1 5 6671 6668 6664 6665 6673 1 5 6672 6665 4564 6671 6790 1 6 4563 6666 4561 6675 2860 2859 1 6 4561 6674 2860 6676 4560 9792 1 6 6675 2860 2853 2854 6677 9792 1 6 6676 2854 6678 6679 6681 9792 1 5 6677 2854 6679 6680 2855 1 6 6677 6678 6680 6681 6682 6683 1 6 6679 6678 6685 6683 6686 2855 1 6 6677 6679 6682 9750 9761 9792 1 6 6681 6679 6683 5156 5157 9750 1 6 6682 6679 5156 6684 6685 6680 1 6 5156 6683 6685 6692 6693 6694 1 6 6684 6683 6680 6686 6687 6692 1 6 6685 6680 6687 6688 6689 2855 1 6 6685 6686 6688 6692 6696 6699 1 6 6687 6686 6689 6690 6699 6700 1 6 6688 6686 6690 6691 2856 2855 1 6 6688 6689 6691 6700 6702 2551 1 5 6690 6689 2856 2550 2551 1 6 6685 6687 6684 6693 6695 6696 1 6 6684 6692 6694 4523 4522 6695 1 5 6684 6693 4523 4532 5156 1 6 4522 6693 6692 6696 6697 6704 1 6 6695 6692 6687 6697 6698 6699 1 7 6695 6696 6698 6703 3505 3506 6704 1 6 6697 6696 6699 6700 6701 6703 1 5 6698 6696 6687 6688 6700 1 7 6699 6688 6690 6698 6701 2222 6702 1 6 6698 6700 2222 64 65 6703 1 5 2222 6700 6690 2551 2221 1 6 6698 6701 65 66 6697 3505 1 5 6697 3506 3507 4522 6695 1 7 6552 6554 6555 6706 6551 6707 9749 1 6 6705 6555 9747 3502 9748 9749 1 6 6551 6705 6708 6709 6710 9749 1 7 6551 6707 6709 6719 6540 6548 6542 1 6 6708 6707 6710 6711 6718 6719 1 7 6709 6707 6711 6712 3503 9748 9749 1 7 6709 6710 6712 3117 3119 6713 6718 1 6 6711 6710 3503 3504 3116 3117 1 6 6711 3119 3121 3887 6714 6718 1 5 6713 3887 6538 6539 6718 1 6 6538 3886 6536 6716 3862 6717 1 5 6536 6715 6533 3863 3862 1 6 3862 6715 3861 3342 3885 3886 1 6 6714 6539 6713 6711 6709 6719 1 5 6718 6539 6540 6709 6708 1 6 6585 6587 6721 6722 7008 6583 1 6 6720 6587 6722 6723 6727 6728 1 6 6720 6721 6723 6724 7009 7008 1 6 6722 6721 6724 6725 6726 6727 1 6 6722 6723 6725 7009 7010 7011 1 6 6724 6723 6726 7022 7011 7023 1 6 6725 6723 6727 7023 7026 7027 1 6 6726 6723 6721 6728 7027 7030 1 6 6727 6721 6587 6588 6729 7030 1 6 6728 6588 6730 7030 7031 7032 1 6 6729 6588 6589 6590 6731 7032 1 6 6730 6590 6591 6593 6732 7032 1 6 6731 6593 6733 6734 7032 7033 1 6 6732 6593 6734 6601 6600 6594 1 6 6732 6733 6601 6603 6735 7033 1 6 6734 6603 6736 7033 7034 7035 1 6 6735 6603 6737 6740 7035 7036 1 5 6736 6603 6604 6738 6740 1 7 6737 6604 6605 6739 6740 6741 6742 1 6 6738 6605 6742 6743 6744 6745 1 6 6736 6737 6738 6741 7036 7037 1 6 6740 6738 6742 7037 7038 7039 1 6 6741 6738 6739 6743 7039 7040 1 7 6742 6739 6744 7040 7041 6754 7042 1 5 6743 6739 6745 6746 7042 1 6 6744 6739 6746 6747 6748 6605 1 7 6744 6745 6747 6610 6749 6750 7042 1 6 6746 6745 6748 6607 6608 6610 1 5 6747 6745 6607 6605 6606 1 5 6746 6610 6750 6620 6611 1 7 6746 6749 6620 6626 6751 6752 7042 1 6 6750 6626 6752 6753 6629 6627 1 5 6750 6751 6753 6754 7042 1 6 6752 6751 6754 6755 6756 6629 1 7 6752 6753 6755 7041 6743 7042 7141 1 5 6754 6753 6756 7141 6759 1 6 6755 6753 6629 6630 6757 6759 1 6 6756 6630 6758 6759 6760 6761 1 6 6757 6630 6631 6761 6762 6766 1 6 6756 6757 6760 7141 6755 7142 1 6 6759 6757 6761 7142 7143 7144 1 6 6760 6757 6758 6762 6763 7144 1 6 6761 6758 6763 4559 6764 6766 1 6 6761 6762 4559 4551 7144 4550 1 6 4559 6762 4558 4565 6765 6766 1 5 4565 6764 6766 6790 6767 1 6 6765 6764 6762 6758 6631 6767 1 6 6766 6631 6632 6768 6790 6765 1 6 6767 6632 6633 6769 6773 6790 1 6 6768 6633 6634 6770 6772 6773 1 6 6769 6634 6771 6772 6777 6778 1 6 6770 6634 6778 6779 6635 9785 1 6 6769 6770 6773 6670 6774 6777 1 6 6769 6772 6670 6671 6790 6768 1 6 6670 6772 6669 6775 6776 6777 1 6 6669 6774 6776 9721 9722 9798 1 7 6775 6774 6777 6778 6780 9797 9798 1 5 6776 6774 6772 6770 6778 1 6 6777 6770 6771 6779 6780 6776 1 6 6778 6771 6780 6781 6783 9785 1 6 6778 6779 6781 6782 6776 9797 1 6 6780 6779 6782 6176 6783 6784 1 5 6780 6781 6176 6177 9797 1 6 6781 6779 6784 6785 6637 9785 1 7 6781 6783 6176 6174 6785 6786 6788 1 7 6784 6783 6786 6787 9777 6638 6637 1 6 6784 6785 6787 6788 6171 6789 1 6 6786 6785 9777 6642 9782 6789 1 5 6784 6786 6171 6172 6174 1 5 6171 6786 6170 6787 9782 1 8 6671 6673 6773 4564 4565 6765 6768 6767 1 6 5418 5419 6792 7331 7332 7333 1 6 6791 5419 5420 5428 6793 7333 1 6 6792 5428 5429 6794 7333 7334 1 6 6793 5429 5430 6795 7334 7335 1 6 6794 5430 5432 5433 6796 7335 1 6 6795 5433 5434 6797 7335 7336 1 6 6796 5434 5435 6798 7336 7337 1 6 6797 5435 5436 6799 7337 7338 1 6 6798 5436 5437 6800 7338 7339 1 6 6799 5437 5438 6801 7339 7340 1 6 6800 5438 6802 7340 7341 7342 1 6 6801 5438 5439 5440 6803 7342 1 6 6802 5440 5441 6804 7342 7343 1 6 6803 5441 5442 6805 7343 7344 1 6 6804 5442 5444 6806 7344 7345 1 6 6805 5444 5445 6807 7345 7346 1 6 6806 5445 5446 6808 7346 7347 1 6 6807 5446 6809 7347 7348 7349 1 6 6808 5446 5447 6810 7349 6811 1 5 6809 5447 5217 5218 6811 1 6 6810 5218 5219 6812 7349 6809 1 5 6811 5219 6813 7349 7350 1 6 6812 5219 5220 6814 7350 7351 1 7 6813 5220 5221 5222 6815 7351 7352 1 5 6814 5222 6816 7352 7353 1 7 6815 5222 5223 5224 6817 7353 7354 1 5 6816 5224 6818 7354 7355 2 6 6817 5224 6819 7355 7356 7357 2 6 6818 5224 5225 5226 6820 7357 2 5 6819 5226 5227 6821 7357 2 6 6820 5227 6822 7357 7358 7359 2 7 6821 5227 5228 5229 6823 7359 7360 2 5 6822 5229 6824 6825 7360 2 5 6823 5229 6825 6826 5167 2 7 6823 6824 6826 6827 6828 7362 7360 2 5 6825 6824 5167 5168 6827 2 6 6826 5168 6825 6828 6829 6830 2 6 6825 6827 6829 7362 7363 7364 2 6 6828 6827 6830 7364 7365 7366 2 6 6829 6827 5168 5169 6831 7366 2 7 6830 5169 6832 7366 7367 7368 6834 2 5 6831 5169 6833 5238 6834 2 5 6832 5169 5238 5018 5023 2 6 6832 5238 5239 6835 7368 6831 2 6 6834 5239 5648 6836 7375 7368 2 7 6835 5648 6837 7375 7374 7376 7377 2 6 6836 5648 5649 5651 6838 7377 2 6 6837 5651 6839 7377 7378 7379 2 6 6838 5651 5652 6840 6841 7379 2 6 6839 5652 5653 5247 6841 5248 2 6 6839 6840 5248 6842 7379 7380 2 6 6841 5248 5249 6843 7380 7381 2 6 6842 5249 6844 7381 7382 7383 2 6 6843 5249 5028 5029 6845 7383 2 6 6844 5029 5030 6846 6847 7383 2 6 6845 5030 6847 6848 6849 5031 2 6 6845 6846 6848 7384 7383 7385 2 6 6847 6846 6849 7385 7386 7387 2 6 6848 6846 5031 5032 6850 7387 2 6 6849 5032 5033 5034 6851 7387 2 6 6850 5034 6852 7387 7388 6854 2 6 6851 5034 5035 5038 6853 6854 2 6 6852 5038 6854 6855 6856 5039 2 6 6852 6853 6855 7388 6851 7389 2 6 6854 6853 6856 6857 6859 7389 2 6 6855 6853 5039 6857 6858 5041 2 6 6855 6856 6858 6859 6860 6861 2 6 6857 6856 5041 6861 6862 6863 2 6 6855 6857 6860 7389 7390 7397 2 6 6859 6857 6861 7397 7398 7399 2 6 6860 6857 6858 6862 7399 7400 2 6 6861 6858 6863 6864 6865 7400 2 6 6862 6858 6864 5042 6879 5041 2 6 6862 6863 6865 6866 6879 6873 2 6 6862 6864 6866 6867 7400 7401 2 6 6865 6864 6867 6868 6872 6873 2 6 6865 6866 6868 6869 7401 7402 2 6 6867 6866 6869 6870 6871 6872 2 6 6867 6868 6870 7405 7402 7406 2 6 6869 6868 6871 7412 7406 7413 2 6 6870 6868 6872 7419 7416 7413 2 6 6871 6868 6866 6873 6874 7419 2 6 6872 6866 6874 6875 6864 6879 2 6 6872 6873 6875 6876 7419 7418 2 6 6874 6873 6876 6877 6878 6879 2 6 6874 6875 6877 6883 6884 7418 2 6 6876 6875 6878 6880 6882 6883 2 6 6877 6875 6879 6880 5043 5042 2 6 6878 6875 5042 6863 6864 6873 2 6 6877 6878 5043 5045 6881 6882 2 6 6880 5045 6882 6887 6888 6889 2 6 6880 6881 6877 6883 6886 6887 2 6 6877 6882 6876 6884 6885 6886 2 6 6876 6883 6885 7418 7420 7426 2 6 6884 6883 6886 7426 7427 7428 2 6 6885 6883 6882 6887 7428 7429 2 6 6886 6882 6881 6888 7429 7430 2 6 6887 6881 6889 6890 7430 7433 2 6 6888 6881 5045 6890 4645 4644 2 6 6888 6889 4645 4646 6891 7433 2 6 6890 4646 4647 6892 7433 6893 2 6 6891 4647 4253 4254 4730 6893 2 6 6892 4730 6894 7433 6891 7432 2 6 6893 4730 4731 6895 6897 7432 2 6 6894 4731 6896 6897 6898 6899 2 6 6895 4731 4732 6899 6900 6901 2 6 6894 6895 6898 7432 7431 7434 2 6 6897 6895 6899 7434 7435 7436 2 6 6898 6895 6896 6900 7436 7437 1 6 6899 6896 6901 7437 6904 6903 2 6 6900 6896 4732 4262 6902 6903 1 6 6901 4262 4263 4264 5231 6903 1 6 6902 5231 5458 6904 6900 6901 1 6 6903 5458 5459 6905 7437 6900 1 6 6904 5459 6906 7437 7438 7439 1 6 6905 5459 5460 6907 7439 7440 1 6 6906 5460 5461 6908 7262 7440 1 6 6907 5461 5462 6909 7262 7263 1 6 6908 5462 6910 7263 7264 6911 1 6 6909 5462 5463 5464 5465 6911 1 6 6910 5465 6912 7264 6909 7265 1 6 6911 5465 5466 6913 7265 7266 1 6 6912 5466 5467 6914 7266 7267 1 6 6913 5467 6915 7267 7268 7269 1 6 6914 5467 5468 6916 6917 7269 1 6 6915 5468 5469 5470 5471 6917 1 6 6915 6916 5471 6918 7269 7270 1 6 6917 5471 5472 6919 7270 7271 1 6 6918 5472 5473 6920 7271 7272 1 6 6919 5473 5474 5475 6921 7272 1 6 6920 5475 6922 7274 7272 7275 1 6 6921 5475 5476 6923 7275 7276 1 6 6922 5476 5477 6924 7276 7277 1 6 6923 5477 5478 6925 7277 7278 1 6 6924 5478 5479 6926 7278 7279 1 6 6925 5479 5480 5654 6927 7279 1 6 6926 5654 5655 6928 7281 7279 1 6 6927 5655 6929 7281 7282 7283 1 6 6928 5655 5656 5657 6930 7283 1 6 6929 5657 6931 7283 7284 7285 1 6 6930 5657 5658 5831 6932 7285 1 6 6931 5831 6933 7285 7286 7287 1 6 6932 5831 5832 5840 6934 7287 1 6 6933 5840 5841 6935 6936 7287 1 6 6934 5841 5843 6936 6937 6018 1 6 6934 6935 6937 6938 7287 7288 1 6 6936 6935 6018 6938 6939 6940 1 6 6936 6937 6939 7288 7289 7290 1 6 6938 6937 6940 7290 7291 6941 1 6 6939 6937 6018 5845 5847 6941 1 6 6940 5847 6942 6943 7291 6939 1 6 6941 5847 6943 6944 6945 5848 1 6 6941 6942 6944 7291 7292 7293 1 6 6943 6942 6945 7293 7294 7295 1 7 6944 6942 5848 5850 6385 6946 7295 1 6 6945 6385 6386 6947 7295 7296 1 6 6946 6386 6387 6388 6948 7296 1 6 6947 6388 6389 6949 7296 7297 1 7 6948 6389 6391 6395 6950 7297 7298 1 6 6949 6395 6951 7298 7300 7301 1 6 6950 6395 6396 6952 7043 7301 1 6 6951 6396 6399 6953 7043 7044 1 6 6952 6399 6400 6954 6955 7044 1 6 6953 6400 6401 6955 6956 6960 1 6 6953 6954 6956 6957 7044 7045 1 6 6955 6954 6957 6958 6959 6960 1 6 6955 6956 6958 7045 7048 7049 1 6 6957 6956 6959 6961 6962 7049 1 6 6958 6956 6960 6410 6411 6961 1 6 6959 6956 6954 6401 6402 6410 1 6 6959 6411 6958 6962 6963 6412 1 6 6958 6961 6963 7051 7049 7052 1 6 6962 6961 6412 6414 6964 7052 1 6 6963 6414 6416 6559 6965 7052 1 6 6964 6559 6561 6966 7052 6971 1 6 6965 6561 6967 6968 6970 6971 1 6 6966 6561 6968 6969 6562 6983 1 6 6966 6967 6969 6970 6974 6975 1 6 6968 6967 6981 6975 6982 6983 1 6 6966 6968 6971 6972 6973 6974 1 6 6966 6970 6972 7052 6965 7051 1 6 6971 6970 6973 7051 7050 7053 1 6 6972 6970 6974 7062 7053 7063 1 6 6973 6970 6968 6975 6976 7063 1 6 6974 6968 6976 6977 6981 6969 1 6 6974 6975 6977 6978 7063 7064 1 6 6976 6975 6978 6979 6980 6981 1 6 6976 6977 6979 7064 7065 7066 1 6 6978 6977 6980 7066 7067 7071 1 6 6979 6977 6981 7071 7072 7073 1 6 6980 6977 6975 6969 6982 7073 1 6 6981 6969 6983 6984 7073 7074 1 6 6982 6969 6984 6985 6562 6967 1 6 6982 6983 6985 7074 7075 7076 1 6 6984 6983 6562 6563 6986 7076 1 6 6985 6563 6567 6987 6988 7076 1 6 6986 6567 6988 6989 6990 6568 1 6 6986 6987 6989 6991 7076 7077 1 6 6988 6987 6990 6991 6992 6996 1 6 6989 6987 6996 6997 6570 6568 1 6 6988 6989 6992 6993 7077 7078 1 6 6991 6989 6993 6994 6995 6996 1 6 6991 6992 6994 7078 7081 7082 1 6 6993 6992 6995 7082 7085 7086 1 6 6994 6992 6996 7086 7087 7088 1 6 6995 6992 6989 6990 6997 7088 1 6 6996 6990 6570 6998 6999 7088 1 6 6997 6570 6999 7000 7001 6571 1 6 6997 6998 7000 7088 7089 7092 1 6 6999 6998 7001 7002 7092 7093 1 6 7000 6998 7002 7003 6575 6571 1 6 7000 7001 7003 7093 7094 7095 1 6 7002 7001 6575 6576 7004 7095 1 6 7003 6576 6578 7005 7095 7096 1 6 7004 6578 7006 7096 7097 7098 1 6 7005 6578 6579 7007 7012 7098 1 6 7006 6579 6582 7008 7009 7012 1 6 7007 6582 7009 6722 6720 6583 1 6 7007 7008 6722 6724 7010 7012 1 6 7009 6724 7011 7012 7013 7014 1 6 7010 6724 7022 7020 7014 6725 1 6 7009 7010 7007 7006 7013 7098 1 6 7012 7010 7014 7015 7098 7099 1 6 7013 7010 7015 7016 7020 7011 1 6 7013 7014 7016 7017 7099 7100 1 6 7015 7014 7017 7018 7019 7020 1 6 7015 7016 7018 7107 7100 7113 1 6 7017 7016 7019 7114 7113 7115 1 6 7018 7016 7020 7021 7115 7116 1 6 7019 7016 7014 7021 7022 7011 1 6 7019 7020 7022 7024 7116 7117 1 6 7021 7020 7011 6725 7023 7024 1 6 7022 6725 6726 7024 7025 7026 1 6 7021 7022 7023 7025 7117 7118 1 6 7024 7023 7026 7118 7119 7120 1 6 7025 7023 6726 7027 7028 7120 1 6 7026 6726 6727 7028 7029 7030 1 6 7026 7027 7029 7122 7120 7123 1 6 7028 7027 7030 7123 7034 7031 1 6 7029 7027 6727 6728 6729 7031 1 6 7030 6729 7032 7034 7029 7033 1 6 7031 6729 6730 6731 6732 7033 1 6 7032 6732 6734 6735 7034 7031 1 6 7033 6735 7035 7123 7029 7031 1 5 7034 6735 6736 7036 7123 1 6 7035 6736 6740 7037 7123 7122 1 7 7036 6740 6741 7038 7122 7124 7125 1 6 7037 6741 7039 7135 7125 7136 1 6 7038 6741 6742 7040 7136 7137 1 6 7039 6742 6743 7041 7137 7138 1 5 7040 6743 6754 7141 7138 1 6 6754 6743 6744 6746 6750 6752 1 6 6951 6952 7044 7301 7302 7046 1 6 7043 6952 6953 6955 7045 7046 1 6 7044 6955 6957 7046 7047 7048 1 6 7044 7045 7047 7302 7043 7303 1 6 7046 7045 7048 7303 7056 7054 1 6 7047 7045 6957 7049 7050 7054 1 6 7048 6957 7050 7051 6962 6958 1 6 7048 7049 7051 6972 7053 7054 1 6 7050 7049 6962 7052 6971 6972 1 6 7051 6962 6963 6964 6965 6971 1 6 7050 6972 7054 7055 7062 6973 1 6 7050 7053 7055 7056 7047 7048 1 6 7054 7053 7056 7057 7058 7062 1 6 7054 7055 7057 7303 7047 7304 1 6 7056 7055 7058 7059 7307 7304 1 6 7057 7055 7059 7060 7061 7062 1 6 7057 7058 7060 7307 7476 7477 1 6 7059 7058 7061 7477 7478 7479 1 6 7060 7058 7062 7063 7064 7479 1 6 7061 7058 7055 7053 6973 7063 1 6 7062 6973 6974 6976 7061 7064 1 6 7061 7063 6976 6978 7065 7479 1 6 7064 6978 7066 7479 7480 7481 1 6 7065 6978 6979 7067 7068 7481 1 6 7066 6979 7068 7069 7070 7071 1 6 7066 7067 7069 7483 7481 7462 1 6 7068 7067 7070 7462 7484 7485 1 6 7069 7067 7071 7485 7486 7487 1 6 7070 7067 6979 6980 7072 7487 1 6 7071 6980 7073 7487 7488 7492 1 6 7072 6980 6981 6982 7074 7492 1 6 7073 6982 6984 7075 7493 7492 1 6 7074 6984 7076 7493 7079 7077 1 6 7075 6984 6985 6986 6988 7077 1 6 7076 6988 6991 7078 7079 7075 1 6 7077 6991 6993 7079 7080 7081 1 6 7077 7078 7080 7691 7493 7075 1 6 7079 7078 7081 7223 7224 7691 1 6 7080 7078 6993 7082 7083 7223 1 6 7081 6993 6994 7083 7084 7085 1 6 7081 7082 7084 7226 7223 7227 1 6 7083 7082 7085 7227 7228 7229 1 6 7084 7082 6994 7086 7232 7229 1 6 7085 6994 6995 7087 7232 7233 1 6 7086 6995 7088 7089 7090 7233 1 6 7087 6995 6996 6997 6999 7089 1 6 7088 6999 7087 7090 7091 7092 1 6 7087 7089 7091 7233 7234 7235 1 6 7090 7089 7092 7235 7236 7237 1 6 7091 7089 6999 7000 7093 7237 1 6 7092 7000 7002 7094 7237 7238 1 6 7093 7002 7095 7238 7239 7103 1 6 7094 7002 7003 7004 7096 7103 1 6 7095 7004 7005 7097 7102 7103 1 6 7096 7005 7098 7099 7101 7102 1 6 7097 7005 7006 7012 7013 7099 1 6 7098 7013 7015 7100 7101 7097 1 6 7099 7015 7101 7106 7107 7017 1 6 7099 7100 7097 7102 7105 7106 1 6 7097 7101 7096 7103 7104 7105 1 6 7096 7102 7104 7239 7094 7095 1 6 7103 7102 7105 7241 7239 7242 1 6 7104 7102 7101 7106 7242 7243 1 6 7105 7101 7100 7107 7108 7243 1 6 7106 7100 7017 7108 7109 7113 1 6 7106 7107 7109 7110 7243 7244 1 6 7108 7107 7110 7111 7112 7113 1 6 7108 7109 7111 7247 7244 7248 1 6 7110 7109 7112 7248 7249 7250 1 6 7111 7109 7113 7114 7250 7251 1 6 7112 7109 7114 7018 7017 7107 1 6 7112 7113 7018 7115 7251 7254 1 6 7114 7018 7019 7116 7254 7255 1 6 7115 7019 7021 7117 7258 7255 1 6 7116 7021 7024 7118 7258 7259 1 6 7117 7024 7025 7119 7259 7128 1 6 7118 7025 7120 7121 7127 7128 1 6 7119 7025 7121 7122 7028 7026 1 6 7119 7120 7122 7124 7126 7127 1 7 7121 7120 7028 7123 7036 7037 7124 1 6 7122 7028 7029 7034 7035 7036 1 5 7122 7037 7125 7126 7121 1 5 7124 7037 7126 7135 7038 1 7 7124 7125 7121 7127 7130 7131 7135 1 6 7121 7126 7119 7128 7129 7130 1 6 7119 7127 7129 7261 7259 7118 1 6 7128 7127 7130 7261 7532 7530 1 6 7129 7127 7126 7131 7132 7532 1 6 7130 7126 7132 7133 7134 7135 1 6 7130 7131 7133 7532 7531 7533 1 6 7132 7131 7134 7533 7534 7535 1 6 7133 7131 7135 7535 7536 7136 1 6 7134 7131 7126 7125 7038 7136 1 6 7135 7038 7039 7137 7536 7134 1 6 7136 7039 7040 7138 7139 7536 1 6 7137 7040 7139 7140 7141 7041 1 6 7137 7138 7140 7148 7150 7536 1 6 7139 7138 7141 7142 7147 7148 1 7 7140 7138 7041 6754 6755 6759 7142 1 6 7140 7141 6759 6760 7143 7147 1 6 7142 6760 7144 7145 7146 7147 1 7 7143 6760 7145 4552 4551 6763 6761 1 5 7143 7144 4552 4554 7146 1 6 7145 4554 4556 7143 7147 7148 1 5 7143 7146 7148 7140 7142 1 7 7147 7146 4556 7140 7139 7149 7150 1 6 7148 4556 7150 7151 7152 7153 1 6 7148 7149 7139 7151 7536 7535 1 6 7150 7149 7152 7535 7534 7537 1 6 7151 7149 7153 7154 7155 7537 1 6 7152 7149 7154 4649 4555 4556 1 6 7152 7153 7155 7156 7166 4649 1 6 7152 7154 7156 7157 7537 7538 1 6 7155 7154 7157 7158 7159 7166 1 6 7155 7156 7158 7538 7539 7554 1 6 7157 7156 7159 7160 7554 7555 1 6 7158 7156 7160 7161 7162 7166 1 6 7158 7159 7161 7163 7167 7555 1 6 7160 7159 7162 7163 4137 7164 1 5 7161 7159 7164 7165 7166 1 6 7160 7161 4137 7167 7168 4138 1 7 4137 7161 7162 7165 4413 4134 4135 1 5 7164 7162 4413 4415 7166 1 7 4415 7165 7162 7159 7156 7154 4649 1 6 7160 7163 7168 7555 7556 7560 1 7 7167 7163 4138 7169 7560 7561 7562 1 5 7168 4138 4139 7170 7562 2 7 7169 4139 4140 7171 7562 7563 7564 2 6 7170 4140 4124 7172 7173 7564 2 6 7171 4124 7173 7174 4122 9789 2 6 7171 7172 7174 7175 7176 7564 2 6 7173 7172 7175 9788 9787 9789 2 6 7173 7174 7176 7177 7178 9788 2 7 7173 7175 7177 7564 7563 7568 7569 2 6 7176 7175 7178 7179 7180 7569 2 6 7177 7175 7179 9788 3535 3537 2 6 7177 7178 7180 7181 7182 3537 2 6 7177 7179 7181 7570 7569 7571 2 6 7180 7179 7182 7571 7572 7573 2 6 7181 7179 3537 3538 7183 7573 2 6 7182 3538 7184 7575 7573 7187 2 6 7183 3538 3539 7185 7186 7187 2 6 7184 3539 7186 7211 7210 7212 2 6 7184 7185 7187 7188 7211 7192 2 6 7184 7186 7188 7189 7575 7183 2 6 7187 7186 7189 7190 7191 7192 2 6 7187 7188 7190 7575 7576 7579 2 6 7189 7188 7191 7193 7579 7580 2 6 7190 7188 7192 7193 7194 7198 2 6 7191 7188 7198 7199 7211 7186 2 6 7190 7191 7194 7195 7580 7581 2 6 7193 7191 7195 7196 7197 7198 2 6 7193 7194 7196 7581 7582 7583 2 6 7195 7194 7197 7583 3196 3195 2 6 7196 7194 7198 3195 7200 7203 2 6 7197 7194 7191 7192 7199 7200 2 6 7198 7192 7200 7201 7211 7208 2 6 7198 7199 7201 7202 7203 7197 2 6 7200 7199 7202 7206 7207 7208 2 6 7200 7201 7203 7204 7205 7206 2 6 7200 7202 7204 3194 3195 7197 2 6 7203 7202 7205 7220 7221 3194 2 6 7204 7202 7206 9745 7218 7220 2 6 7205 7202 7201 7207 9745 9746 2 6 7206 7201 7208 7209 9746 7213 2 6 7207 7201 7209 7210 7211 7199 2 6 7207 7208 7210 4373 4374 7213 2 6 7209 7208 7211 7185 7212 4373 2 6 7210 7208 7199 7192 7186 7185 2 6 7210 7185 3539 3540 4372 4373 2 6 7209 4374 4375 7214 9746 7207 2 6 7213 4375 4377 7215 7216 9746 2 6 7214 4377 7216 2863 1627 2862 2 6 7214 7215 2863 7217 9745 9746 2 6 7216 2863 2864 2865 7218 9745 2 6 7217 2865 7219 7220 7205 9745 2 5 7218 2865 7220 3214 2866 2 6 7218 7219 3214 7221 7205 7204 2 6 7220 3214 3215 7222 3194 7204 2 5 7221 3215 3216 3193 3194 1 6 7080 7081 7224 7225 7226 7083 1 6 7080 7223 7225 7691 7690 7692 1 6 7224 7223 7226 7692 7693 7674 1 6 7225 7223 7083 7227 7674 7694 1 6 7226 7083 7084 7228 7694 7695 1 6 7227 7084 7229 7230 7695 7696 1 6 7228 7084 7230 7231 7232 7085 1 6 7228 7229 7231 7696 7697 7701 1 6 7230 7229 7232 7701 7702 7703 1 6 7231 7229 7085 7086 7233 7703 1 6 7232 7086 7087 7090 7234 7703 1 6 7233 7090 7235 7718 7704 7703 1 6 7234 7090 7091 7236 7718 7717 1 6 7235 7091 7237 7717 7719 7720 1 6 7236 7091 7092 7093 7238 7720 1 6 7237 7093 7094 7239 7240 7720 1 6 7238 7094 7103 7240 7241 7104 1 6 7238 7239 7241 7720 7721 7722 1 6 7240 7239 7104 7242 7722 7725 1 6 7241 7104 7105 7243 7245 7725 1 6 7242 7105 7106 7108 7244 7245 1 6 7243 7108 7245 7246 7247 7110 1 6 7243 7244 7246 7728 7725 7242 1 6 7245 7244 7247 7964 7728 7965 1 6 7246 7244 7110 7248 7965 7966 1 6 7247 7110 7111 7249 7966 7967 1 6 7248 7111 7250 7511 7967 7968 1 6 7249 7111 7112 7251 7252 7511 1 6 7250 7112 7114 7252 7253 7254 1 6 7250 7251 7253 7511 7512 7516 1 6 7252 7251 7254 7256 9775 7516 1 6 7253 7251 7114 7115 7255 7256 1 6 7254 7115 7256 7257 7258 7116 1 6 7254 7255 7257 7523 7253 9775 1 6 7256 7255 7258 7260 7524 7523 1 6 7257 7255 7116 7117 7259 7260 1 6 7258 7117 7118 7260 7261 7128 1 6 7258 7259 7261 7529 7524 7257 1 6 7260 7259 7128 7129 7530 7529 1 6 6907 6908 7263 7440 7442 7443 1 6 7262 6908 6909 7264 7443 7444 1 6 7263 6909 6911 7265 7444 7445 1 6 7264 6911 6912 7266 7445 7446 1 6 7265 6912 6913 7267 7449 7446 1 6 7266 6913 6914 7268 7449 7450 1 6 7267 6914 7269 7450 7451 7452 1 6 7268 6914 6915 6917 7270 7452 1 6 7269 6917 6918 7271 7452 7453 1 6 7270 6918 6919 7272 7273 7453 1 6 7271 6919 7273 7274 6921 6920 1 6 7271 7272 7274 7453 7454 7455 1 6 7273 7272 6921 7275 7455 7456 1 6 7274 6921 6922 7276 7456 7457 1 6 7275 6922 6923 7277 7457 7458 1 6 7276 6923 6924 7278 7458 7459 1 6 7277 6924 6925 7279 7280 7459 1 6 7278 6925 7280 7281 6927 6926 1 6 7278 7279 7281 7459 7460 7464 1 6 7280 7279 6927 6928 7282 7464 1 6 7281 6928 7283 7464 7465 7466 1 6 7282 6928 6929 6930 7284 7466 1 6 7283 6930 7285 7466 7467 7468 1 6 7284 6930 6931 6932 7286 7468 1 6 7285 6932 7287 7468 7469 7288 1 6 7286 6932 6933 6934 6936 7288 1 6 7287 6936 6938 7289 7469 7286 1 6 7288 6938 7290 7469 7470 7471 1 6 7289 6938 6939 7291 7471 7472 1 6 7290 6939 6941 6943 7292 7472 1 6 7291 6943 7293 7472 7473 7474 1 6 7292 6943 6944 7294 7474 7299 1 6 7293 6944 7295 7297 7298 7299 1 6 7294 6944 6945 6946 7296 7297 1 5 7295 6946 6947 6948 7297 1 6 7296 6948 6949 7295 7294 7298 1 6 7294 7297 6949 6950 7299 7300 1 5 7294 7298 7300 7474 7293 1 7 7299 7298 6950 7301 7474 7305 7302 1 5 7300 6950 6951 7043 7302 1 6 7301 7043 7046 7303 7305 7300 1 6 7302 7046 7047 7056 7304 7305 1 6 7303 7056 7305 7306 7307 7057 1 6 7303 7304 7306 7474 7300 7302 1 6 7305 7304 7307 7474 7473 7475 1 6 7306 7304 7057 7059 7475 7476 1 5 4702 4703 7309 7855 7856 1 6 7308 4703 4704 7310 7856 7857 1 6 7309 4704 4705 7311 7857 7858 1 6 7310 4705 4706 7312 7858 7859 1 6 7311 4706 4707 5170 7313 7859 1 6 7312 5170 7314 7859 7860 7861 1 6 7313 5170 5171 7315 7861 7862 1 6 7314 5171 5172 7316 7862 7863 1 6 7315 5172 5173 7317 7863 7864 1 6 7316 5173 5174 7318 7864 7865 1 6 7317 5174 5175 7319 7865 7866 1 6 7318 5175 5176 7320 7866 7867 1 6 7319 5176 5177 5178 7321 7867 1 6 7320 5178 7322 7867 7868 7869 1 6 7321 5178 5179 7323 7869 7870 1 6 7322 5179 5180 5411 7324 7870 1 6 7323 5411 7325 7870 7871 7872 1 6 7324 5411 5412 7326 7872 7873 1 6 7325 5412 5413 5414 7327 7873 1 6 7326 5414 7328 7873 7874 7875 1 6 7327 5414 5415 5416 7329 7875 1 6 7328 5416 7330 7875 7876 7877 1 6 7329 5416 5417 5418 7331 7877 1 6 7330 5418 6791 7332 7877 7878 1 6 7331 6791 7333 7878 7879 7880 1 6 7332 6791 6792 6793 7334 7880 1 6 7333 6793 6794 7335 7880 7881 1 6 7334 6794 6795 6796 7336 7881 1 6 7335 6796 6797 7337 7881 7882 1 6 7336 6797 6798 7338 7882 7883 1 6 7337 6798 6799 7339 7883 7884 1 6 7338 6799 6800 7340 7884 7885 1 6 7339 6800 6801 7341 7885 7886 1 6 7340 6801 7342 7886 7887 7888 1 6 7341 6801 6802 6803 7343 7888 1 6 7342 6803 6804 7344 7888 7889 1 6 7343 6804 6805 7345 7889 7890 1 6 7344 6805 6806 7346 7890 7891 1 6 7345 6806 6807 7347 7891 7892 1 6 7346 6807 6808 7348 7892 7893 1 6 7347 6808 7349 7893 7894 7895 1 7 7348 6808 6809 6811 6812 7350 7895 1 6 7349 6812 6813 7351 7895 7896 1 6 7350 6813 6814 7352 7896 7897 1 5 7351 6814 6815 7353 7897 1 7 7352 6815 6816 7354 7897 7898 7899 1 5 7353 6816 6817 7355 7899 2 7 7354 6817 6818 7356 7899 7900 7901 2 6 7355 6818 7357 7901 7902 7903 2 7 7356 6818 6819 6820 6821 7358 7903 2 6 7357 6821 7359 7903 7904 7905 2 6 7358 6821 6822 7360 7361 7905 2 6 7359 6822 6823 7361 7362 6825 2 6 7359 7360 7362 7905 7906 7907 2 6 7361 7360 6825 6828 7363 7907 2 6 7362 6828 7364 7907 7908 7909 2 5 7363 6828 6829 7365 7909 2 7 7364 6829 7366 7369 7371 7909 7910 2 6 7365 6829 6830 6831 7367 7369 2 6 7366 6831 7368 7369 7370 7375 2 5 7367 6831 7375 6835 6834 2 6 7366 7367 7370 7365 7371 7372 2 6 7369 7367 7372 7373 7374 7375 2 6 7365 7369 7372 7910 7911 7912 2 6 7371 7369 7370 7373 7912 7913 2 6 7372 7370 7374 7913 7914 7915 2 6 7373 7370 7375 6836 7376 7915 2 6 7374 7370 7367 7368 6835 6836 2 6 7374 6836 7377 7915 7916 7917 2 6 7376 6836 6837 6838 7378 7917 2 5 7377 6838 7379 7601 7917 2 6 7378 6838 6839 6841 7380 7601 2 6 7379 6841 6842 7381 7601 7602 2 6 7380 6842 6843 7382 7605 7602 2 6 7381 6843 7383 7384 7605 7606 2 6 7382 6843 7384 6847 6845 6844 2 6 7382 7383 6847 7385 7606 7607 2 6 7384 6847 6848 7386 7607 7392 2 6 7385 6848 7387 7388 7391 7392 2 6 7386 6848 6849 6850 6851 7388 2 6 7387 6851 6854 7389 7391 7386 2 6 7388 6854 6855 6859 7390 7391 2 6 7389 6859 7391 7396 7393 7397 2 6 7389 7390 7388 7386 7392 7393 2 6 7386 7391 7393 7394 7607 7385 2 6 7392 7391 7394 7395 7396 7390 2 6 7392 7393 7395 7607 7608 7611 2 6 7394 7393 7396 7611 7612 7622 2 6 7395 7393 7390 7397 7622 7623 2 6 7396 7390 6859 6860 7398 7623 2 5 7397 6860 7399 7623 7624 2 6 7398 6860 6861 7400 7624 7625 2 7 7399 6861 6862 6865 7401 7625 7626 2 6 7400 6865 6867 7402 7403 7626 2 6 7401 6867 7403 7404 7405 6869 2 6 7401 7402 7404 7626 7627 7628 2 6 7403 7402 7405 7408 7628 7629 2 6 7404 7402 6869 7406 7407 7408 2 6 7405 6869 7407 7411 7412 6870 2 6 7405 7406 7408 7409 7410 7411 2 6 7405 7407 7404 7409 7632 7629 2 6 7408 7407 7410 7632 7633 7634 2 6 7409 7407 7411 7634 7635 7642 2 6 7410 7407 7406 7412 7642 7643 2 6 7411 7406 6870 7413 7414 7643 2 6 7412 6870 7414 7415 7416 6871 2 6 7412 7413 7415 7643 7644 7645 2 6 7414 7413 7416 7417 7645 7646 2 6 7415 7413 7417 7418 7419 6871 2 6 7415 7416 7418 7420 7421 7646 2 7 7417 7416 7419 6874 6876 6884 7420 2 5 7418 7416 6871 6872 6874 2 6 7418 6884 7417 7421 7422 7426 2 6 7417 7420 7422 7423 7646 7647 2 6 7421 7420 7423 7424 7425 7426 1 6 7421 7422 7424 7647 7648 7649 1 6 7423 7422 7425 7649 7650 7651 2 6 7424 7422 7426 7651 7652 7427 2 6 7425 7422 7420 6884 6885 7427 2 6 7426 6885 7428 7652 7425 7653 2 6 7427 6885 6886 7429 7653 7654 2 6 7428 6886 6887 7430 7431 7654 2 6 7429 6887 6888 7431 7432 7433 2 6 7429 7430 7432 6897 7434 7654 2 6 7431 7430 7433 6893 6894 6897 2 6 7432 7430 6888 6890 6891 6893 2 6 7431 6897 6898 7435 7655 7654 2 6 7434 6898 7436 7655 7656 7660 1 6 7435 6898 6899 7437 7660 7438 1 6 7436 6899 6900 6904 6905 7438 1 6 7437 6905 7439 7660 7436 7661 1 6 7438 6905 6906 7440 7441 7661 1 6 7439 6906 6907 7262 7441 7442 1 6 7439 7440 7442 7661 7662 7663 1 6 7441 7440 7262 7443 7663 7664 1 6 7442 7262 7263 7444 7664 7665 1 6 7443 7263 7264 7445 7665 7666 1 6 7444 7264 7265 7446 7447 7666 1 6 7445 7265 7447 7448 7449 7266 1 6 7445 7446 7448 7668 7666 7671 1 6 7447 7446 7449 7671 7676 7673 1 6 7448 7446 7266 7267 7450 7676 1 6 7449 7267 7268 7451 7676 7677 1 6 7450 7268 7452 7677 7678 7682 1 6 7451 7268 7269 7270 7453 7682 1 6 7452 7270 7271 7273 7454 7682 1 6 7453 7273 7455 7682 7681 7683 1 6 7454 7273 7274 7456 7686 7683 1 6 7455 7274 7275 7457 7686 7687 1 6 7456 7275 7276 7458 7687 7688 1 6 7457 7276 7277 7459 7688 7461 1 6 7458 7277 7278 7280 7460 7461 1 6 7459 7280 7461 7462 7463 7464 1 6 7459 7460 7462 7688 7458 7484 1 7 7461 7460 7463 7483 7068 7069 7484 1 6 7462 7460 7464 7483 7482 7465 1 6 7463 7460 7280 7281 7282 7465 1 6 7464 7282 7466 7482 7463 7494 1 6 7465 7282 7283 7284 7467 7494 1 6 7466 7284 7468 7494 7495 7496 1 6 7467 7284 7285 7286 7469 7496 1 6 7468 7286 7288 7289 7470 7496 1 6 7469 7289 7471 7496 7497 7498 1 6 7470 7289 7290 7472 7498 7475 1 6 7471 7290 7291 7292 7473 7475 1 5 7472 7292 7474 7306 7475 1 7 7473 7292 7293 7299 7300 7305 7306 1 7 7473 7306 7307 7476 7498 7471 7472 1 5 7475 7307 7059 7477 7498 1 6 7476 7059 7060 7478 7497 7498 1 7 7477 7060 7479 7480 7497 7495 7499 1 6 7478 7060 7061 7064 7065 7480 1 6 7478 7479 7065 7481 7482 7499 1 6 7480 7065 7482 7483 7068 7066 1 7 7480 7481 7483 7463 7465 7494 7499 1 5 7482 7481 7068 7462 7463 1 5 7462 7069 7485 7688 7461 1 6 7484 7069 7070 7486 7687 7688 1 6 7485 7070 7487 7686 7687 7685 1 7 7486 7070 7071 7072 7488 7489 7685 1 6 7487 7072 7489 7490 7491 7492 1 5 7487 7488 7490 7685 7684 1 6 7489 7488 7491 7684 7689 7690 1 6 7490 7488 7492 7493 7690 7691 1 6 7491 7488 7493 7074 7073 7072 1 6 7491 7492 7074 7075 7691 7079 1 6 7482 7465 7466 7467 7495 7499 1 6 7494 7467 7496 7497 7478 7499 1 6 7495 7467 7468 7469 7470 7497 1 6 7496 7470 7498 7477 7478 7495 1 6 7497 7470 7471 7477 7476 7475 1 5 7495 7478 7480 7482 7494 1 6 427 5612 5613 7501 7502 9768 1 6 7500 5613 7502 7503 7504 7505 1 6 7500 7501 7503 9768 9769 9770 1 6 7502 7501 7504 6474 9770 9780 1 5 7503 7501 6474 6472 7505 1 7 6472 7504 7501 5613 5614 7506 6470 1 5 7505 5614 7507 6469 6470 1 6 7506 5614 5615 7508 7509 6469 1 6 7507 5615 7509 7510 9734 4518 1 5 7507 7508 7510 6469 6468 1 6 7509 7508 6468 9732 9733 9734 1 6 7249 7250 7252 7512 7513 7968 1 6 7511 7252 7513 7514 7515 7516 1 6 7511 7512 7514 7968 7969 7970 1 6 7513 7512 7515 7970 7971 7972 1 6 7514 7512 7516 7517 7518 7972 1 6 7515 7512 7252 7517 9775 7253 1 6 7515 7516 7518 7519 7520 9775 1 6 7515 7517 7519 7972 7973 7977 1 6 7518 7517 7520 7521 7977 7978 1 6 7519 7517 7521 7522 7523 9775 1 6 7519 7520 7522 7989 7978 7526 1 6 7521 7520 7523 7524 7525 7526 1 6 7522 7520 7524 7256 7257 9775 1 6 7522 7523 7525 7260 7529 7257 1 6 7522 7524 7526 7527 7528 7529 1 6 7522 7525 7527 7989 7521 7990 1 6 7526 7525 7528 7990 7546 7545 1 6 7527 7525 7529 7530 7531 7545 1 6 7528 7525 7530 7261 7260 7524 1 6 7528 7529 7261 7531 7532 7129 1 7 7528 7530 7532 7132 7533 7543 7545 1 5 7531 7530 7129 7130 7132 1 6 7531 7132 7133 7534 7544 7543 1 6 7533 7133 7535 7151 7537 7544 1 6 7534 7133 7134 7536 7150 7151 1 6 7535 7134 7136 7137 7139 7150 1 6 7534 7151 7152 7155 7538 7544 1 6 7537 7155 7157 7539 7540 7544 1 6 7538 7157 7540 7541 7553 7554 1 6 7538 7539 7541 7542 7543 7544 1 6 7540 7539 7542 7547 7553 7550 1 6 7540 7541 7543 7545 7546 7547 1 6 7540 7542 7544 7533 7531 7545 1 6 7540 7543 7533 7534 7537 7538 1 6 7531 7543 7542 7546 7527 7528 1 6 7545 7542 7547 7548 7990 7527 1 6 7546 7542 7541 7548 7549 7550 1 6 7546 7547 7549 7990 7989 7991 1 6 7548 7547 7550 7551 7991 7992 1 6 7549 7547 7551 7552 7553 7541 1 6 7549 7550 7552 7992 7994 7995 1 7 7551 7550 7553 7557 7556 7558 7995 1 6 7552 7550 7541 7539 7554 7557 1 6 7553 7539 7157 7158 7555 7557 1 6 7554 7158 7160 7167 7556 7557 1 7 7555 7167 7557 7552 7558 7559 7560 1 5 7555 7556 7554 7553 7552 2 5 7552 7556 7559 7995 7996 2 7 7558 7556 7560 7996 7999 7566 7561 1 5 7559 7556 7167 7168 7561 2 6 7560 7168 7562 7565 7566 7559 2 6 7561 7168 7169 7170 7563 7565 2 6 7562 7170 7564 7176 7565 7568 2 5 7563 7170 7171 7173 7176 2 6 7562 7563 7561 7566 7567 7568 2 6 7561 7565 7567 7999 7559 8000 2 6 7566 7565 7568 7569 7570 8000 2 5 7567 7565 7563 7176 7569 2 6 7568 7176 7567 7570 7180 7177 2 6 7567 7569 7180 7571 8000 8001 2 6 7570 7180 7181 7572 8001 8002 2 6 7571 7181 7573 7574 8002 8003 2 6 7572 7181 7574 7575 7183 7182 2 6 7572 7573 7575 7576 7577 8003 2 6 7574 7573 7183 7187 7189 7576 2 6 7575 7189 7574 7577 7578 7579 2 6 7574 7576 7578 8003 8004 8005 2 6 7577 7576 7579 8005 8006 8007 2 6 7578 7576 7189 7190 7580 8007 2 6 7579 7190 7193 7581 8007 8008 2 6 7580 7193 7195 7582 8008 8009 2 6 7581 7195 7583 7585 8012 8009 2 6 7582 7195 7196 3196 7584 7585 2 6 7583 3196 3186 7585 7586 3187 2 6 7583 7584 7586 7587 7582 8012 2 6 7585 7584 7587 7588 3958 3187 2 6 7585 7586 7588 7729 8013 8012 2 6 7587 7586 3958 3960 7589 7729 2 6 7588 3960 7590 7729 7730 7731 2 6 7589 3960 3961 7591 7731 7732 2 6 7590 3961 7592 7738 7732 7739 2 6 7591 3961 2890 2891 7593 7739 2 6 7592 2891 7594 7595 7739 7740 2 6 7593 2891 7595 7596 7597 2892 2 6 7593 7594 7596 7740 7741 7745 2 6 7595 7594 7597 7598 7745 7746 2 6 7596 7594 7598 7599 7600 2892 2 6 7596 7597 7599 4089 7746 7751 2 5 7598 7597 7600 4089 4086 2 6 7599 7597 4086 2880 2879 2892 2 7 7378 7379 7380 7602 7603 7917 7918 2 6 7601 7380 7603 7604 7605 7381 2 6 7601 7602 7604 7926 7920 7918 2 5 7603 7602 7605 7926 7927 2 7 7604 7602 7381 7382 7606 7609 7927 2 6 7605 7382 7384 7607 7608 7609 2 6 7606 7384 7385 7392 7394 7608 2 6 7607 7394 7606 7609 7610 7611 2 6 7606 7608 7610 7929 7927 7605 2 6 7609 7608 7611 7613 7616 7929 2 6 7610 7608 7394 7395 7612 7613 2 6 7611 7395 7613 7614 7621 7622 2 6 7611 7612 7614 7615 7616 7610 2 6 7613 7612 7615 7619 7620 7621 2 6 7613 7614 7616 7617 7618 7619 2 6 7613 7615 7617 8157 7929 7610 2 6 7616 7615 7618 8155 8157 8156 2 6 7617 7615 7619 8156 8158 8159 2 6 7618 7615 7614 7620 8159 8160 2 6 7619 7614 7621 8160 8161 8162 2 6 7620 7614 7612 7622 8162 8163 2 6 7621 7612 7395 7396 7623 8163 2 6 7622 7396 7397 7398 7624 8163 2 6 7623 7398 7399 7625 8163 8164 2 6 7624 7399 7400 7626 8164 7627 2 5 7625 7400 7401 7403 7627 2 6 7626 7403 7628 8164 7625 8165 2 6 7627 7403 7404 7629 7630 8165 2 6 7628 7404 7630 7631 7632 7408 2 6 7628 7629 7631 8165 8166 8167 2 6 7630 7629 7632 8170 8167 8171 2 6 7631 7629 7408 7409 7633 8171 2 6 7632 7409 7634 8173 8171 8174 2 6 7633 7409 7410 7635 7636 8174 2 6 7634 7410 7636 7637 7641 7642 2 6 7634 7635 7637 7638 8174 8175 2 6 7636 7635 7638 7639 7640 7641 2 6 7636 7637 7639 8175 8176 8177 2 6 7638 7637 7640 8177 8178 8179 2 6 7639 7637 7641 8179 8180 8181 2 6 7640 7637 7635 7642 8181 8182 2 6 7641 7635 7410 7411 7643 8182 2 6 7642 7411 7412 7414 7644 8182 2 6 7643 7414 7645 8183 8182 8184 2 6 7644 7414 7415 7646 8184 8185 2 6 7645 7415 7417 7421 7647 8185 1 6 7646 7421 7423 7648 8185 8186 1 6 7647 7423 7649 8186 8187 8188 1 6 7648 7423 7424 7650 8188 8189 1 6 7649 7424 7651 8189 8190 8191 1 6 7650 7424 7425 7652 8191 8192 2 6 7651 7425 7427 7653 8192 7657 2 6 7652 7427 7428 7654 7655 7657 2 6 7653 7428 7429 7655 7434 7431 2 6 7653 7654 7434 7435 7656 7657 2 6 7655 7435 7657 7658 7659 7660 2 6 7655 7656 7658 8192 7652 7653 1 6 7657 7656 7659 8192 8193 8194 1 6 7658 7656 7660 8194 7662 7661 1 6 7659 7656 7435 7436 7438 7661 1 6 7660 7438 7439 7441 7662 7659 1 6 7661 7441 7663 8194 7659 8195 1 6 7662 7441 7442 7664 8208 8195 1 6 7663 7442 7443 7665 8208 8207 1 6 7664 7443 7444 7666 7667 8207 1 6 7665 7444 7667 7668 7447 7445 1 6 7665 7666 7668 7669 8206 8207 1 6 7667 7666 7447 7669 7670 7671 1 6 7667 7668 7670 7698 8206 9790 1 6 7669 7668 7671 7672 7695 9790 1 6 7670 7668 7447 7448 7672 7673 1 6 7670 7671 7673 7674 7695 7694 1 6 7672 7671 7674 7675 7676 7448 1 7 7672 7673 7675 7693 7225 7226 7694 1 6 7674 7673 7676 7677 7679 7693 1 6 7675 7673 7448 7449 7450 7677 1 6 7676 7450 7451 7678 7679 7675 1 6 7677 7451 7679 7680 7681 7682 1 7 7677 7678 7680 7675 7693 7692 7689 1 5 7679 7678 7681 7689 7684 1 6 7680 7678 7682 7454 7683 7684 1 6 7681 7678 7451 7452 7453 7454 1 6 7681 7454 7684 7685 7686 7455 1 7 7681 7683 7685 7489 7490 7689 7680 1 6 7684 7683 7686 7486 7487 7489 1 6 7685 7683 7455 7456 7687 7486 1 6 7686 7456 7457 7486 7485 7688 1 6 7485 7687 7457 7458 7461 7484 1 6 7684 7490 7690 7692 7679 7680 1 6 7689 7490 7491 7691 7224 7692 1 6 7690 7491 7493 7079 7080 7224 1 6 7690 7224 7225 7693 7679 7689 1 5 7692 7225 7674 7675 7679 1 5 7674 7226 7227 7695 7672 1 7 7694 7227 7228 7696 7670 7672 9790 1 6 7695 7228 7230 7697 7698 9790 1 6 7696 7230 7698 7699 7700 7701 1 6 7696 7697 7699 8206 7669 9790 1 6 7698 7697 7700 8205 8203 8206 1 6 7699 7697 7701 8318 8205 7707 1 6 7700 7697 7230 7231 7702 7707 1 6 7701 7231 7703 7704 7705 7707 1 6 7702 7231 7704 7234 7233 7232 1 6 7702 7703 7705 7706 7718 7234 1 6 7702 7704 7706 7707 7708 7709 1 6 7705 7704 7709 7710 7711 7718 1 6 7702 7705 7708 8318 7700 7701 1 6 7707 7705 7709 8318 8481 8317 1 6 7708 7705 7706 7710 8481 8482 1 6 7709 7706 7711 7712 7713 8482 1 6 7710 7706 7712 7716 7717 7718 1 6 7710 7711 7713 7714 7715 7716 1 6 7710 7712 7714 8482 8483 8484 1 6 7713 7712 7715 8484 9765 8486 1 6 7714 7712 7716 9765 7723 9767 1 6 7715 7712 7711 7717 9767 7719 1 6 7716 7711 7718 7235 7236 7719 1 6 7717 7711 7706 7704 7234 7235 1 6 7717 7236 7720 9767 7716 7721 1 6 7719 7236 7237 7238 7240 7721 1 6 7720 7240 7722 7723 9767 7719 1 6 7721 7240 7241 7723 7724 7725 1 7 7721 7722 7724 7726 9765 7715 9767 1 6 7723 7722 7725 7726 7727 7728 1 6 7724 7722 7728 7245 7242 7241 1 6 7723 7724 7727 7962 9765 9764 1 6 7726 7724 7728 7962 7963 7964 1 6 7727 7724 7725 7245 7964 7246 2 6 7587 7588 7589 7730 8013 8014 2 6 7729 7589 7731 8014 8015 7734 2 6 7730 7589 7590 7732 7733 7734 2 6 7731 7590 7733 7737 7738 7591 2 6 7731 7732 7734 7735 7736 7737 2 6 7731 7733 7735 8015 7730 8016 2 6 7734 7733 7736 8016 8017 8018 2 6 7735 7733 7737 8018 8019 8020 2 6 7736 7733 7732 7738 8020 8021 2 6 7737 7732 7591 7739 9766 8021 2 6 7738 7591 7592 7593 7740 9766 2 6 7739 7593 7595 7741 7742 9766 2 6 7740 7595 7742 7743 7744 7745 2 6 7740 7741 7743 8025 8023 9766 2 6 7742 7741 7744 8025 8026 8027 2 6 7743 7741 7745 7747 7748 8027 2 6 7744 7741 7595 7596 7746 7747 2 6 7745 7596 7598 7747 7750 7751 2 6 7745 7746 7744 7748 7749 7750 2 6 7744 7747 7749 8027 8031 8032 2 6 7748 7747 7750 8032 8036 7759 2 6 7749 7747 7746 7751 7752 7759 2 7 7750 7746 7598 4089 4090 7752 7753 2 7 7750 7751 7753 4379 7754 7758 7759 2 4 7752 7751 4090 4379 2 5 7752 4379 4380 7755 7758 2 6 7754 4380 4382 7756 7757 7758 2 6 7755 4382 7757 7762 7763 7764 2 6 7755 7756 7758 7760 7761 7762 2 6 7755 7757 7754 7752 7759 7760 2 6 7752 7758 7760 8036 7749 7750 2 5 7759 7758 7757 7761 8036 2 7 7760 7757 7762 8036 8640 8635 8035 2 7 7761 7757 7756 7763 8852 8639 8640 2 6 7762 7756 7764 7765 8852 8853 2 6 7763 7756 4382 4383 4389 7765 2 6 7763 7764 4389 7766 8319 8853 2 6 7765 4389 4390 7767 8319 8320 2 6 7766 4390 3142 7768 7769 8320 2 6 7767 3142 7769 7770 7774 3143 2 6 7767 7768 7770 7771 8322 8320 2 6 7769 7768 7771 7772 7773 7774 2 6 7769 7770 7772 8322 8323 8324 2 6 7771 7770 7773 8324 8325 7777 2 6 7772 7770 7774 7775 7776 7777 2 6 7773 7770 7768 3143 3144 7775 2 6 7774 3144 7773 7776 3145 9791 2 6 7773 7775 7777 7778 3414 9791 2 6 7773 7776 7778 8325 7772 8326 2 6 7777 7776 3414 3415 7779 8326 2 6 7778 3415 5382 5384 7780 8326 2 6 7779 5384 5386 7781 8326 8327 2 6 7780 5386 5388 7782 8329 8327 2 6 7781 5388 5616 7783 8329 8330 2 6 7782 5616 7784 8330 8331 8332 2 6 7783 5616 5617 7785 8037 8332 2 6 7784 5617 7786 7787 8037 8038 2 6 7785 5617 5618 7787 7788 7789 2 6 7785 7786 7788 8038 8039 8040 2 6 7787 7786 7789 8045 8040 7794 2 6 7788 7786 5618 5619 7790 7794 2 6 7789 5619 7791 7792 7793 7794 2 6 7790 5619 7792 3779 3778 5620 2 6 7790 7791 7793 7797 7798 3779 2 6 7790 7792 7794 7795 7796 7797 2 6 7790 7793 7795 8045 7788 7789 2 6 7794 7793 7796 8045 8046 8047 2 6 7795 7793 7797 8048 8047 8049 2 6 7796 7793 7792 7798 8049 7799 2 6 7797 7792 3779 3780 3783 7799 2 6 7798 3783 3784 7800 8049 7797 2 6 7799 3784 3785 3788 7801 8049 2 6 7800 3788 3790 7802 8048 8049 2 6 7801 3790 3791 3793 7803 8048 2 6 7802 3793 7804 7806 8047 8048 2 6 7803 3793 3794 7805 7806 7807 2 6 7804 3794 7807 7808 7809 3795 2 6 7803 7804 7807 8046 8047 8343 2 6 7806 7804 7805 7808 8344 8343 2 6 7807 7805 7809 8344 8345 7930 2 6 7808 7805 3795 3796 7810 7930 1 6 7809 3796 3952 7811 7930 7931 1 6 7810 3952 7812 7931 7932 7936 1 6 7811 3952 3953 7813 7936 7937 1 6 7812 3953 3954 7814 7937 7938 1 6 7813 3954 7815 7938 7939 7816 1 6 7814 3954 3955 3956 4238 7816 1 6 7815 4238 4503 7817 7939 7814 1 6 7816 4503 4504 7818 7939 7940 1 6 7817 4504 7819 7940 7941 7942 1 6 7818 4504 4505 7820 7942 7943 1 6 7819 4505 4506 4507 7821 7943 1 6 7820 4507 7822 7943 7944 7945 1 6 7821 4507 4508 7823 7945 7946 1 6 7822 4508 4509 7824 7946 7947 1 6 7823 4509 7825 7826 7947 7948 1 6 7824 4509 4510 7826 7827 7828 1 6 7824 7825 7827 7948 7949 7950 1 6 7826 7825 7828 7950 7951 7952 1 6 7827 7825 4510 4419 7829 7952 1 6 7828 4419 4247 7830 7952 7832 1 6 7829 4247 4248 4739 7831 7832 1 6 7830 4739 5003 7832 7833 7834 1 6 7830 7831 7833 7952 7829 7953 1 6 7832 7831 7834 7953 7954 7955 1 6 7833 7831 5003 5004 7835 7955 1 6 7834 5004 5005 7836 7955 7956 1 6 7835 5005 7837 7956 7957 7958 1 6 7836 5005 4750 4751 7838 7958 1 6 7837 4751 4757 7839 7958 7959 1 6 7838 4757 7840 7959 7960 7846 1 6 7839 4757 4758 7841 7846 7961 1 6 7840 4758 4661 4662 7842 7961 1 6 7841 4662 4663 4689 7843 7961 1 6 7842 4689 4690 7844 7961 7845 1 6 7843 4690 4691 5158 5159 7845 1 5 7844 5159 7846 7961 7843 1 7 7845 5159 7847 7960 7839 7840 7961 1 6 7846 5159 5160 7848 8082 7960 1 6 7847 5160 5161 7849 8082 8083 1 6 7848 5161 5162 7850 8083 8084 1 6 7849 5162 7851 8084 8085 8086 1 6 7850 5162 5163 5164 7852 8086 1 6 7851 5164 7853 8086 8087 8088 1 6 7852 5164 5165 7854 8088 8089 1 7 7853 5165 4700 4701 4702 7855 8089 1 5 7854 4702 7308 7856 8089 1 7 7855 7308 7309 7857 8089 8090 8091 1 7 7856 7309 7310 7858 8091 8092 8093 1 6 7857 7310 7311 7859 8093 8094 1 6 7858 7311 7312 7313 7860 8094 1 6 7859 7313 7861 8094 8095 8096 1 6 7860 7313 7314 7862 8096 8097 1 6 7861 7314 7315 7863 8097 8098 1 6 7862 7315 7316 7864 8098 8099 1 6 7863 7316 7317 7865 8099 8100 1 6 7864 7317 7318 7866 8100 8101 1 6 7865 7318 7319 7867 8101 8102 1 6 7866 7319 7320 7321 7868 8102 1 6 7867 7321 7869 8102 8103 8104 1 6 7868 7321 7322 7870 8104 8105 1 6 7869 7322 7323 7324 7871 8105 1 6 7870 7324 7872 8105 8106 8107 1 6 7871 7324 7325 7873 8107 8108 1 6 7872 7325 7326 7327 7874 8108 1 6 7873 7327 7875 8108 8109 8110 1 6 7874 7327 7328 7329 7876 8110 1 6 7875 7329 7877 8110 8111 8112 1 6 7876 7329 7330 7331 7878 8112 1 6 7877 7331 7332 7879 8112 8113 1 6 7878 7332 7880 8113 8114 8115 1 6 7879 7332 7333 7334 7881 8115 1 6 7880 7334 7335 7336 7882 8115 1 6 7881 7336 7337 7883 8115 8116 1 7 7882 7337 7338 7884 8116 8117 8118 1 6 7883 7338 7339 7885 8118 8119 1 6 7884 7339 7340 7886 8119 8120 1 6 7885 7340 7341 7887 8120 8121 1 6 7886 7341 7888 8121 8122 8123 1 6 7887 7341 7342 7343 7889 8123 1 6 7888 7343 7344 7890 8123 8124 1 6 7889 7344 7345 7891 8124 8125 1 6 7890 7345 7346 7892 8125 8126 1 6 7891 7346 7347 7893 8126 8127 1 6 7892 7347 7348 7894 8127 8128 1 6 7893 7348 7895 8128 8129 8130 1 6 7894 7348 7349 7350 7896 8130 1 6 7895 7350 7351 7897 8130 8131 1 7 7896 7351 7352 7353 7898 8131 8132 1 5 7897 7353 7899 8132 8133 1 7 7898 7353 7354 7355 7900 8133 8134 2 6 7899 7355 7901 8134 8135 8136 2 5 7900 7355 7356 7902 8136 2 7 7901 7356 7903 8136 8137 8138 7904 2 5 7902 7356 7357 7358 7904 2 6 7903 7358 7905 8138 7902 8139 2 6 7904 7358 7359 7361 7906 8139 2 6 7905 7361 7907 8139 8140 8141 2 6 7906 7361 7362 7363 7908 8141 2 6 7907 7363 7909 8141 8142 8143 2 6 7908 7363 7364 7365 7910 8143 2 6 7909 7365 7371 7911 8143 8144 2 6 7910 7371 7912 8144 8145 8146 2 5 7911 7371 7372 7913 8146 2 7 7912 7372 7373 7914 8146 8147 8148 2 6 7913 7373 7915 8148 8149 8150 2 6 7914 7373 7374 7376 7916 8150 2 6 7915 7376 7917 7918 7919 8150 2 6 7916 7376 7377 7378 7601 7918 2 6 7917 7601 7916 7919 7920 7603 2 6 7916 7918 7920 7921 7922 8150 2 6 7919 7918 7921 7925 7926 7603 2 6 7919 7920 7922 7923 7924 7925 2 6 7919 7921 7923 8150 8151 8149 2 6 7922 7921 7924 8151 8152 8153 2 6 7923 7921 7925 8153 8154 8155 2 6 7924 7921 7920 7926 8155 7928 2 6 7925 7920 7603 7604 7927 7928 2 6 7926 7604 7928 7929 7609 7605 2 6 7926 7927 7929 8155 7925 8157 2 6 7928 7927 7609 8157 7616 7610 2 6 7809 7810 7931 8050 8345 7808 1 6 7930 7810 7811 7932 7933 8050 1 6 7931 7811 7933 7934 7935 7936 1 6 7931 7932 7934 8050 8051 8052 1 6 7933 7932 7935 8052 8053 8057 1 6 7934 7932 7936 8059 8057 8060 1 6 7935 7932 7811 7812 7937 8060 1 6 7936 7812 7813 7938 8060 8061 1 6 7937 7813 7814 7939 8061 8062 1 6 7938 7814 7816 7817 7940 8062 1 6 7939 7817 7818 7941 8062 8063 1 6 7940 7818 7942 8063 8064 8065 1 6 7941 7818 7819 7943 8065 8066 1 6 7942 7819 7820 7821 7944 8066 1 6 7943 7821 7945 8066 8067 8068 1 6 7944 7821 7822 7946 8068 8069 1 6 7945 7822 7823 7947 8069 8070 1 6 7946 7823 7824 7948 8070 8071 1 6 7947 7824 7826 7949 8071 8072 1 6 7948 7826 7950 8072 8073 8074 1 6 7949 7826 7827 7951 8074 8075 1 6 7950 7827 7952 8075 8076 7953 1 6 7951 7827 7828 7829 7832 7953 1 6 7952 7832 7833 7954 8076 7951 1 6 7953 7833 7955 8076 8077 8078 1 6 7954 7833 7834 7835 7956 8078 1 6 7955 7835 7836 7957 8078 8079 1 6 7956 7836 7958 8079 8080 8081 1 6 7957 7836 7837 7838 7959 8081 1 6 7958 7838 7839 7960 8081 8082 1 5 7959 7839 7846 8082 7847 1 6 7846 7840 7841 7842 7843 7845 1 6 7726 7727 7963 8466 8468 9764 1 6 7962 7727 7964 8466 8487 8488 1 6 7963 7727 7728 7246 7965 8488 1 6 7964 7246 7247 7966 8488 8489 1 6 7965 7247 7248 7967 8489 8490 1 6 7966 7248 7249 7968 8490 8491 1 6 7967 7249 7511 7513 7969 8491 2 6 7968 7513 7970 8493 8491 8494 2 6 7969 7513 7514 7971 8494 8495 2 6 7970 7514 7972 8495 8496 7974 1 6 7971 7514 7515 7518 7973 7974 1 6 7972 7518 7974 7975 7976 7977 2 6 7972 7973 7975 8496 7971 8497 2 6 7974 7973 7976 8500 8497 7981 2 6 7975 7973 7977 7979 7980 7981 1 6 7976 7973 7518 7519 7978 7979 1 6 7977 7519 7979 7988 7989 7521 1 6 7977 7978 7976 7980 7987 7988 2 6 7976 7979 7981 7982 7986 7987 2 6 7976 7980 7982 7983 8500 7975 2 6 7981 7980 7983 7984 7985 7986 2 6 7981 7982 7984 8500 8501 8502 2 6 7983 7982 7985 8502 8503 8504 2 6 7984 7982 7986 8504 8505 8506 2 6 7985 7982 7980 7987 8506 7993 1 7 7986 7980 7979 7988 7991 7992 7993 1 5 7987 7979 7978 7989 7991 1 7 7988 7978 7521 7526 7990 7548 7991 1 5 7989 7526 7527 7546 7548 1 6 7989 7548 7549 7992 7987 7988 1 6 7991 7549 7551 7987 7993 7994 2 6 7987 7992 7994 8506 7986 8507 2 6 7993 7992 7551 8507 7997 7995 2 6 7551 7552 7558 7996 7997 7994 2 6 7995 7558 7559 7997 7998 7999 2 6 7995 7996 7998 8507 7994 8508 2 6 7997 7996 7999 8508 8509 8510 2 6 7998 7996 7559 7566 8000 8510 2 6 7999 7566 7567 7570 8001 8510 2 7 8000 7570 7571 8002 8510 8522 8511 2 6 8001 7571 7572 8003 8522 8523 2 7 8002 7572 7574 7577 8004 8520 8523 2 7 8003 7577 8005 8519 8517 8520 8541 2 5 8004 7577 7578 8006 8541 2 6 8005 7578 8007 8610 8540 8541 2 6 8006 7578 7579 7580 8008 8610 2 6 8007 7580 7581 8009 8010 8610 2 6 8008 7581 8010 8011 8012 7582 2 8 8008 8009 8011 8609 8537 8538 8540 8610 2 5 8010 8009 8012 8013 8609 2 6 8011 8009 8013 7587 7582 7585 2 7 8011 8012 7587 7729 8014 8608 8609 2 6 8013 7729 7730 8015 8607 8608 2 6 8014 7730 7734 8016 8611 8607 2 6 8015 7734 7735 8017 8611 8612 2 6 8016 7735 8018 8612 8613 8614 2 6 8017 7735 7736 8019 8614 8615 2 6 8018 7736 8020 8615 8618 8619 2 6 8019 7736 7737 8021 8022 8619 2 6 8020 7737 8022 8023 9766 7738 2 6 8020 8021 8023 8024 8619 8620 2 6 8022 8021 8024 8025 7742 9766 2 6 8022 8023 8025 8620 8621 8028 2 6 8024 8023 7742 7743 8026 8028 2 6 8025 7743 8027 8028 8029 8030 2 6 8026 7743 7744 7748 8030 8031 2 6 8025 8026 8029 8621 8024 8622 2 6 8028 8026 8030 8628 8622 8629 2 6 8029 8026 8027 8031 8033 8629 2 6 8030 8027 7748 8032 8033 8034 2 6 8031 7748 7749 8034 8035 8036 2 6 8030 8031 8034 8629 8630 8631 2 6 8033 8031 8032 8035 8631 8632 2 6 8034 8032 8036 7761 8635 8632 2 6 8035 8032 7749 7759 7760 7761 2 6 7784 7785 8038 8332 8333 8334 2 6 8037 7785 7787 8039 8041 8334 2 6 8038 7787 8040 8041 8042 8043 2 6 8039 7787 8043 8044 8045 7788 2 6 8038 8039 8042 8334 8335 8336 2 6 8041 8039 8043 8336 8337 8341 2 6 8042 8039 8040 8044 8341 8342 2 6 8043 8040 8045 8342 8343 8046 2 6 8044 8040 7788 7794 7795 8046 2 6 8045 7795 8047 7806 8343 8044 2 6 8046 7795 7806 7803 8048 7796 2 6 7803 8047 7796 7802 7801 8049 2 6 7801 8048 7796 7797 7799 7800 2 6 7930 7931 7933 8051 8345 8346 2 6 8050 7933 8052 8346 8347 8348 1 6 8051 7933 7934 8053 8054 8348 1 6 8052 7934 8054 8055 8056 8057 2 6 8052 8053 8055 8348 8349 8350 2 6 8054 8053 8056 8350 8351 8352 1 6 8055 8053 8057 8058 8352 8353 1 6 8056 8053 8058 8059 7935 7934 1 6 8056 8057 8059 8353 8354 8355 1 6 8058 8057 7935 8060 8355 8356 1 6 8059 7935 7936 7937 8061 8356 1 6 8060 7937 7938 8062 8356 8358 1 6 8061 7938 7939 7940 8063 8358 1 6 8062 7940 7941 8064 8359 8358 1 6 8063 7941 8065 8359 8360 8361 1 6 8064 7941 7942 8066 8361 8362 1 6 8065 7942 7943 7944 8067 8362 1 6 8066 7944 8068 8362 8363 8364 1 6 8067 7944 7945 8069 8364 8365 1 6 8068 7945 7946 8070 8365 8366 1 6 8069 7946 7947 8071 8366 8367 1 6 8070 7947 7948 8072 8367 8368 1 6 8071 7948 7949 8073 8368 8369 1 6 8072 7949 8074 8369 8370 8371 1 6 8073 7949 7950 8075 8371 8372 1 6 8074 7950 7951 8076 8372 8373 1 6 8075 7951 7953 7954 8077 8373 1 6 8076 7954 8078 8375 8373 8376 1 6 8077 7954 7955 7956 8079 8376 1 6 8078 7956 7957 8080 8376 8377 1 6 8079 7957 8081 8209 8377 8378 1 6 8080 7957 7958 7959 8082 8209 1 7 8081 7959 7960 7847 7848 8083 8209 1 6 8082 7848 7849 8084 8209 8210 1 6 8083 7849 7850 8085 8210 8211 1 6 8084 7850 8086 8211 8212 8213 1 6 8085 7850 7851 7852 8087 8213 1 6 8086 7852 8088 8213 8214 8215 1 6 8087 7852 7853 8089 8215 8090 1 6 8088 7853 7854 7855 7856 8090 1 5 8089 7856 8091 8215 8088 1 7 8090 7856 7857 8092 8215 8216 8217 1 5 8091 7857 8093 8217 8218 1 6 8092 7857 7858 8094 8218 8219 1 6 8093 7858 7859 7860 8095 8219 1 6 8094 7860 8096 8219 8220 8221 1 6 8095 7860 7861 8097 8221 8222 1 6 8096 7861 7862 8098 8222 8223 1 6 8097 7862 7863 8099 8223 8224 1 6 8098 7863 7864 8100 8224 8225 1 6 8099 7864 7865 8101 8225 8226 1 6 8100 7865 7866 8102 8226 8227 1 6 8101 7866 7867 7868 8103 8227 1 6 8102 7868 8104 8227 8228 8229 1 6 8103 7868 7869 8105 8229 8230 1 6 8104 7869 7870 7871 8106 8230 1 6 8105 7871 8107 8230 8231 8232 1 6 8106 7871 7872 8108 8232 8233 1 6 8107 7872 7873 7874 8109 8233 1 6 8108 7874 8110 8233 8234 8235 1 6 8109 7874 7875 7876 8111 8235 1 6 8110 7876 8112 8235 8236 8237 1 6 8111 7876 7877 7878 8113 8237 1 6 8112 7878 7879 8114 8237 8238 1 6 8113 7879 8115 8238 8239 8116 1 6 8114 7879 7880 7881 7882 8116 1 6 8115 7882 7883 8117 8239 8114 1 6 8116 7883 8118 8239 8240 8241 1 5 8117 7883 7884 8119 8241 1 6 8118 7884 7885 8120 8241 8242 1 6 8119 7885 7886 8121 8242 8243 1 6 8120 7886 7887 8122 8243 8244 1 6 8121 7887 8123 8244 8245 8246 1 6 8122 7887 7888 7889 8124 8246 1 6 8123 7889 7890 8125 8246 8247 1 6 8124 7890 7891 8126 8247 8248 1 6 8125 7891 7892 8127 8248 8249 1 6 8126 7892 7893 8128 8249 8250 1 6 8127 7893 7894 8129 8250 8251 1 6 8128 7894 8130 8251 8252 8253 1 6 8129 7894 7895 7896 8131 8253 1 6 8130 7896 7897 8132 8253 8254 1 5 8131 7897 7898 8133 8254 1 7 8132 7898 7899 8134 8254 8255 8256 2 5 8133 7899 7900 8135 8256 2 7 8134 7900 8136 8256 8257 8258 8259 2 6 8135 7900 7901 7902 8137 8259 2 6 8136 7902 8138 8259 8260 8261 2 6 8137 7902 7904 8139 8261 8262 2 6 8138 7904 7905 7906 8140 8262 2 6 8139 7906 8141 8262 8263 8264 2 6 8140 7906 7907 7908 8142 8264 2 6 8141 7908 8143 8264 8265 8266 2 6 8142 7908 7909 7910 8144 8266 2 6 8143 7910 7911 8145 8266 8267 2 6 8144 7911 8146 8267 8268 8269 2 6 8145 7911 7912 7913 8147 8269 2 6 8146 7913 8148 8269 8270 8271 2 6 8147 7913 7914 8149 8151 8271 2 5 8148 7914 8150 8151 7922 2 6 8149 7914 7915 7916 7919 7922 2 7 8148 8149 7922 7923 8152 8271 8272 2 5 8151 7923 8153 8272 8273 2 7 8152 7923 7924 8154 8273 8274 8275 2 6 8153 7924 8155 8156 8275 8276 2 7 8154 7924 8156 7925 7928 8157 7617 2 6 8154 8155 7617 7618 8158 8276 2 5 8155 7928 7929 7616 7617 2 6 8156 7618 8159 8276 8277 8278 2 6 8158 7618 7619 8160 8278 8279 2 7 8159 7619 7620 8161 8279 8280 8281 2 5 8160 7620 8162 8281 8282 2 7 8161 7620 7621 8163 8282 8283 8164 2 6 8162 7621 7622 7623 7624 8164 2 7 8163 7624 7625 7627 8165 8283 8162 2 6 8164 7627 7628 7630 8166 8283 2 6 8165 7630 8167 8168 8283 8282 2 6 8166 7630 8168 8169 8170 7631 2 6 8166 8167 8169 8282 8284 8285 2 6 8168 8167 8170 8285 8286 8287 2 6 8169 8167 7631 8171 8172 8287 2 6 8170 7631 8172 8173 7633 7632 2 6 8170 8171 8173 8287 8288 8289 2 6 8172 8171 7633 8174 8289 8290 2 6 8173 7633 7634 7636 8175 8290 2 6 8174 7636 7638 8176 8290 8291 2 6 8175 7638 8177 8291 8292 8293 2 6 8176 7638 7639 8178 8293 8294 2 6 8177 7639 8179 8294 8295 8296 2 6 8178 7639 7640 8180 8296 8297 2 6 8179 7640 8181 8307 8297 8308 2 6 8180 7640 7641 8182 8183 8308 2 6 8181 7641 8183 7644 7643 7642 2 6 8181 8182 7644 8184 8308 8309 2 6 8183 7644 7645 8185 8309 8310 2 7 8184 7645 7646 7647 8186 8310 8311 1 6 8185 7647 7648 8187 8311 8312 1 6 8186 7648 8188 8312 8313 8314 1 6 8187 7648 7649 8189 8314 8315 1 6 8188 7649 7650 8190 8315 8200 1 6 8189 7650 8191 8197 8199 8200 1 6 8190 7650 7651 8192 8197 8193 1 6 8191 7651 7652 7657 7658 8193 1 6 8192 7658 8194 8196 8197 8191 1 6 8193 7658 7659 7662 8195 8196 1 6 8194 7662 8196 8208 8204 7663 1 6 8194 8195 8193 8197 8198 8204 1 6 8193 8196 8198 8199 8190 8191 1 6 8197 8196 8199 8202 8203 8204 1 6 8197 8198 8190 8200 8201 8202 1 6 8190 8199 8201 8315 8189 8316 1 6 8200 8199 8202 8316 8317 8318 1 6 8201 8199 8198 8203 8205 8318 1 6 8202 8198 8204 8205 7699 8206 1 7 8203 8198 8206 8207 8208 8195 8196 1 5 8202 8203 7699 8318 7700 1 7 7699 8203 8204 7698 7669 7667 8207 1 6 7667 8206 8204 8208 7664 7665 1 5 8207 8204 8195 7663 7664 1 6 8080 8081 8082 8083 8210 8378 1 5 8209 8083 8084 8211 8378 1 6 8210 8084 8085 8212 8378 8379 1 6 8211 8085 8213 8379 8380 8381 1 6 8212 8085 8086 8087 8214 8381 1 6 8213 8087 8215 8381 8382 8216 1 6 8214 8087 8088 8090 8091 8216 1 6 8215 8091 8217 8382 8214 8383 1 6 8216 8091 8092 8218 8383 8384 1 6 8217 8092 8093 8219 8384 8385 1 6 8218 8093 8094 8095 8220 8385 1 5 8219 8095 8221 8385 8386 1 6 8220 8095 8096 8222 8386 8387 1 6 8221 8096 8097 8223 8387 8388 1 6 8222 8097 8098 8224 8388 8389 1 6 8223 8098 8099 8225 8389 8390 1 6 8224 8099 8100 8226 8390 8391 1 6 8225 8100 8101 8227 8391 8392 1 6 8226 8101 8102 8103 8228 8392 1 6 8227 8103 8229 8392 8393 8394 1 6 8228 8103 8104 8230 8394 8395 1 6 8229 8104 8105 8106 8231 8395 1 6 8230 8106 8232 8395 8396 8397 1 6 8231 8106 8107 8233 8397 8398 1 6 8232 8107 8108 8109 8234 8398 1 6 8233 8109 8235 8398 8399 8400 1 6 8234 8109 8110 8111 8236 8400 1 6 8235 8111 8237 8400 8401 8402 1 6 8236 8111 8112 8113 8238 8402 1 6 8237 8113 8114 8239 8402 8403 1 6 8238 8114 8116 8117 8240 8403 1 6 8239 8117 8241 8403 8404 8405 1 6 8240 8117 8118 8119 8242 8405 1 6 8241 8119 8120 8243 8405 8406 1 6 8242 8120 8121 8244 8406 8407 1 6 8243 8121 8122 8245 8407 8408 1 6 8244 8122 8246 8408 8409 8410 1 6 8245 8122 8123 8124 8247 8410 1 6 8246 8124 8125 8248 8410 8411 1 6 8247 8125 8126 8249 8411 8412 1 6 8248 8126 8127 8250 8412 8413 1 6 8249 8127 8128 8251 8413 8414 1 6 8250 8128 8129 8252 8414 8415 1 6 8251 8129 8253 8415 8416 8417 1 6 8252 8129 8130 8131 8254 8417 1 7 8253 8131 8132 8133 8255 8417 8418 1 5 8254 8133 8256 8418 8419 2 7 8255 8133 8134 8135 8257 8419 8420 2 5 8256 8135 8258 8420 8421 2 6 8257 8135 8259 8421 8422 8260 2 5 8258 8135 8136 8137 8260 2 6 8259 8137 8261 8422 8258 8423 2 6 8260 8137 8138 8262 8423 8424 2 6 8261 8138 8139 8140 8263 8424 2 6 8262 8140 8264 8424 8425 8426 2 6 8263 8140 8141 8142 8265 8426 2 6 8264 8142 8266 8426 8427 8428 2 7 8265 8142 8143 8144 8267 8428 8429 2 6 8266 8144 8145 8268 8429 8430 2 6 8267 8145 8269 8430 8431 8432 2 6 8268 8145 8146 8147 8270 8432 2 6 8269 8147 8271 8432 8433 8434 2 6 8270 8147 8148 8151 8272 8434 2 5 8271 8151 8152 8273 8434 2 7 8272 8152 8153 8274 8434 8435 8436 2 6 8273 8153 8275 8436 8437 8438 2 6 8274 8153 8154 8276 8438 8277 2 5 8275 8154 8156 8158 8277 2 6 8276 8158 8278 8438 8275 8439 2 6 8277 8158 8159 8279 8439 8440 2 7 8278 8159 8160 8280 8440 8441 8445 2 6 8279 8160 8281 8445 8446 8284 2 5 8280 8160 8161 8282 8284 2 7 8281 8161 8162 8283 8166 8168 8284 2 5 8282 8162 8164 8165 8166 2 6 8282 8168 8285 8446 8280 8281 2 6 8284 8168 8169 8286 8446 8447 2 6 8285 8169 8287 8447 8449 8450 2 6 8286 8169 8170 8172 8288 8450 2 6 8287 8172 8289 8450 8451 8452 2 6 8288 8172 8173 8290 8452 8453 2 6 8289 8173 8174 8175 8291 8453 2 6 8290 8175 8176 8292 8453 8454 2 6 8291 8176 8293 8454 8455 8456 2 6 8292 8176 8177 8294 8456 8457 2 6 8293 8177 8178 8295 8457 8458 2 6 8294 8178 8296 8461 8458 8299 2 6 8295 8178 8179 8297 8298 8299 2 6 8296 8179 8298 8307 8305 8180 2 6 8296 8297 8299 8300 8301 8305 2 6 8296 8298 8300 8461 8295 8462 2 6 8299 8298 8301 8302 8462 8463 2 6 8300 8298 8302 8303 8304 8305 2 6 8300 8301 8303 8463 8464 8465 2 6 8302 8301 8304 8465 8466 8467 2 6 8303 8301 8305 8306 8470 8467 2 6 8304 8301 8298 8306 8307 8297 2 6 8304 8305 8307 8470 8471 8472 2 6 8306 8305 8297 8180 8308 8472 2 6 8307 8180 8181 8183 8309 8472 2 6 8308 8183 8184 8310 8472 8473 2 6 8309 8184 8185 8311 8473 8474 1 5 8310 8185 8186 8312 8474 1 6 8311 8186 8187 8313 8474 8475 1 6 8312 8187 8314 8478 8475 8479 1 6 8313 8187 8188 8315 8479 8480 1 6 8314 8188 8189 8200 8316 8480 1 5 8315 8200 8201 8317 8480 1 6 8316 8201 8318 8480 8481 7708 1 7 8317 8201 8202 8205 7700 7707 7708 2 6 7765 7766 8320 8321 8853 8854 2 6 8319 7766 7767 8321 8322 7769 2 7 8319 8320 8322 8854 8855 8856 8323 2 5 8321 8320 7769 7771 8323 2 6 8322 7771 8324 8856 8321 8857 2 6 8323 7771 7772 8325 8857 8328 2 6 8324 7772 7777 8326 8327 8328 2 6 8325 7777 7778 7779 7780 8327 2 6 8326 7780 8325 8328 8329 7781 2 6 8325 8327 8329 8857 8324 8858 2 6 8328 8327 7781 7782 8330 8858 2 6 8329 7782 7783 8331 8858 8859 2 6 8330 7783 8332 8865 8862 8859 2 6 8331 7783 7784 8037 8333 8865 2 6 8332 8037 8334 8866 8865 8867 2 6 8333 8037 8038 8041 8335 8867 2 6 8334 8041 8336 8867 8868 8869 2 6 8335 8041 8042 8337 8338 8869 2 6 8336 8042 8338 8339 8340 8341 2 6 8336 8337 8339 8869 8870 8874 2 6 8338 8337 8340 8874 8875 8347 2 6 8339 8337 8341 8347 8346 8876 2 6 8340 8337 8042 8043 8342 8876 2 6 8341 8043 8044 8343 8344 8876 2 6 8342 8044 8344 7807 7806 8046 2 6 8342 8343 7807 7808 8345 8876 2 6 8344 7808 7930 8050 8346 8876 2 6 8345 8050 8051 8347 8340 8876 2 6 8346 8051 8348 8875 8339 8340 2 6 8347 8051 8052 8054 8349 8875 2 6 8348 8054 8350 8902 8875 8901 2 6 8349 8054 8055 8351 8901 8903 2 6 8350 8055 8352 8903 8904 8905 1 6 8351 8055 8056 8353 8905 8906 1 6 8352 8056 8058 8354 8906 8907 1 6 8353 8058 8355 8907 8908 8909 1 6 8354 8058 8059 8356 8357 8909 1 6 8355 8059 8060 8061 8357 8358 1 6 8355 8356 8358 8359 8909 8910 1 6 8357 8356 8061 8062 8359 8063 1 6 8357 8358 8063 8064 8360 8910 1 6 8359 8064 8361 8912 8910 8913 1 6 8360 8064 8065 8362 8913 8914 1 6 8361 8065 8066 8067 8363 8914 1 6 8362 8067 8364 8916 8914 8917 1 6 8363 8067 8068 8365 8917 8918 1 6 8364 8068 8069 8366 8918 8919 1 6 8365 8069 8070 8367 8919 8920 1 6 8366 8070 8071 8368 8920 8921 1 6 8367 8071 8072 8369 8921 8922 1 6 8368 8072 8073 8370 8922 8923 1 6 8369 8073 8371 8923 8924 8925 1 6 8370 8073 8074 8372 8925 8926 1 6 8371 8074 8075 8373 8374 8926 1 6 8372 8075 8076 8374 8375 8077 1 6 8372 8373 8375 8926 8927 8928 1 6 8374 8373 8077 8376 8928 8929 1 6 8375 8077 8078 8079 8377 8929 1 6 8376 8079 8080 8378 8929 8379 1 6 8377 8080 8209 8210 8211 8379 1 7 8378 8211 8212 8380 8929 8377 8930 1 5 8379 8212 8381 8930 8931 1 7 8380 8212 8213 8214 8382 8743 8931 1 6 8381 8214 8216 8383 8641 8743 1 6 8382 8216 8217 8384 8641 8642 1 6 8383 8217 8218 8385 8642 8643 1 6 8384 8218 8219 8220 8386 8643 1 7 8385 8220 8221 8387 8643 8644 8645 1 6 8386 8221 8222 8388 8645 8646 1 6 8387 8222 8223 8389 8646 8647 1 6 8388 8223 8224 8390 8647 8648 1 7 8389 8224 8225 8391 8648 8649 8650 1 6 8390 8225 8226 8392 8650 8651 1 6 8391 8226 8227 8228 8393 8651 1 6 8392 8228 8394 8651 8652 8653 1 6 8393 8228 8229 8395 8653 8654 1 6 8394 8229 8230 8231 8396 8654 1 5 8395 8231 8397 8654 8655 1 6 8396 8231 8232 8398 8655 8656 1 7 8397 8232 8233 8234 8399 8656 8657 1 5 8398 8234 8400 8657 8658 1 7 8399 8234 8235 8236 8401 8658 8659 1 5 8400 8236 8402 8659 8660 1 6 8401 8236 8237 8238 8403 8660 1 6 8402 8238 8239 8240 8404 8660 1 6 8403 8240 8405 8660 8661 8662 1 6 8404 8240 8241 8242 8406 8662 1 6 8405 8242 8243 8407 8662 8663 1 7 8406 8243 8244 8408 8663 8664 8665 1 6 8407 8244 8245 8409 8665 8666 1 6 8408 8245 8410 8666 8667 8668 1 6 8409 8245 8246 8247 8411 8668 1 6 8410 8247 8248 8412 8668 8669 1 6 8411 8248 8249 8413 8669 8670 1 6 8412 8249 8250 8414 8670 8671 1 6 8413 8250 8251 8415 8671 8672 1 6 8414 8251 8252 8416 8672 8673 1 6 8415 8252 8417 8673 8674 8675 1 6 8416 8252 8253 8254 8418 8675 1 6 8417 8254 8255 8419 8675 8676 2 6 8418 8255 8256 8420 8676 8677 2 6 8419 8256 8257 8421 8677 8678 2 6 8420 8257 8258 8422 8678 8679 2 6 8421 8258 8260 8423 8679 8680 2 7 8422 8260 8261 8424 8680 8681 8682 2 6 8423 8261 8262 8263 8425 8682 2 6 8424 8263 8426 8682 8683 8687 2 6 8425 8263 8264 8265 8427 8687 2 6 8426 8265 8428 8687 8688 8689 2 6 8427 8265 8266 8429 8689 8690 2 5 8428 8266 8267 8430 8690 2 6 8429 8267 8268 8431 8542 8690 2 6 8430 8268 8432 8542 8543 8544 2 6 8431 8268 8269 8270 8433 8544 2 6 8432 8270 8434 8544 8545 8546 2 7 8433 8270 8271 8272 8273 8435 8546 2 6 8434 8273 8436 8546 8547 8548 2 6 8435 8273 8274 8437 8548 8549 2 6 8436 8274 8438 8549 8550 8439 2 5 8437 8274 8275 8277 8439 2 7 8438 8277 8278 8440 8550 8437 8551 2 6 8439 8278 8279 8441 8442 8551 2 6 8440 8279 8442 8443 8444 8445 2 6 8440 8441 8443 8551 8552 8553 2 6 8442 8441 8444 8553 8554 8555 2 7 8443 8441 8445 8446 8447 8448 8555 2 5 8444 8441 8279 8280 8446 2 6 8445 8280 8284 8285 8447 8444 2 6 8446 8285 8286 8444 8448 8449 2 5 8444 8447 8449 8555 8556 2 6 8448 8447 8286 8450 8556 8557 2 7 8449 8286 8287 8288 8451 8557 8558 2 6 8450 8288 8452 8558 8559 8560 2 6 8451 8288 8289 8453 8560 8561 2 6 8452 8289 8290 8291 8454 8561 2 6 8453 8291 8292 8455 8561 8562 2 6 8454 8292 8456 8562 8563 8564 2 6 8455 8292 8293 8457 8564 8565 2 6 8456 8293 8294 8458 8459 8565 2 6 8457 8294 8459 8460 8461 8295 2 6 8457 8458 8460 8565 8566 8567 2 6 8459 8458 8461 8567 8568 8569 2 6 8460 8458 8295 8299 8462 8569 2 6 8461 8299 8300 8463 8569 8570 2 6 8462 8300 8302 8464 8570 8571 2 6 8463 8302 8465 8571 8572 8573 2 6 8464 8302 8303 8466 8573 8487 2 7 8465 8303 8467 8468 7962 7963 8487 2 6 8466 8303 8468 8469 8470 8304 1 6 8466 8467 8469 7962 9763 9764 1 7 8468 8467 8470 9094 8485 9763 8486 2 6 8469 8467 8304 8306 8471 9094 2 6 8470 8306 8472 8476 9094 8473 2 6 8471 8306 8307 8308 8309 8473 2 6 8472 8309 8310 8474 8476 8471 1 6 8473 8310 8311 8312 8475 8476 1 6 8474 8312 8476 8477 8478 8313 1 7 8474 8475 8477 8485 9094 8471 8473 1 6 8476 8475 8478 8483 8484 8485 1 6 8477 8475 8313 8479 8483 8482 1 6 8478 8313 8314 8480 8482 8481 1 6 8479 8314 8315 8316 8317 8481 1 6 8480 8317 7708 7709 8482 8479 1 7 8481 7709 7710 7713 8483 8478 8479 1 5 8482 7713 8484 8477 8478 1 6 8483 7713 7714 8477 8485 8486 1 6 8477 8484 8486 8469 9094 8476 1 6 8485 8484 9765 9763 8469 7714 2 5 8466 7963 8488 8573 8465 2 7 8487 7963 7964 7965 8489 8573 8574 2 5 8488 7965 7966 8490 8574 2 7 8489 7966 7967 8491 8492 8574 8575 2 6 8490 7967 8492 8493 7969 7968 2 5 8490 8491 8493 8575 8576 2 6 8492 8491 7969 8494 8576 8577 2 6 8493 7969 7970 8495 8577 8578 2 6 8494 7970 7971 8496 8578 8579 2 6 8495 7971 7974 8497 8498 8579 2 6 8496 7974 8498 8499 8500 7975 2 6 8496 8497 8499 8579 8580 8581 2 6 8498 8497 8500 8581 8582 8501 2 6 8499 8497 7975 7981 7983 8501 2 6 8500 7983 8502 8582 8499 8583 2 6 8501 7983 7984 8503 8586 8583 2 6 8502 7984 8504 8527 8586 8526 2 6 8503 7984 7985 8505 8526 8588 2 6 8504 7985 8506 8588 8513 8589 2 6 8505 7985 7986 7993 8507 8589 2 6 8506 7993 7994 7997 8508 8589 2 6 8507 7997 7998 8509 8513 8589 2 6 8508 7998 8510 8511 8512 8513 2 6 8509 7998 7999 8000 8001 8511 2 6 8509 8510 8512 8521 8522 8001 2 6 8509 8511 8513 8514 8515 8521 2 7 8509 8512 8514 8588 8505 8589 8508 2 6 8513 8512 8515 8516 8526 8588 2 6 8514 8512 8516 8517 8520 8521 2 6 8514 8515 8517 8518 8524 8526 2 6 8516 8515 8518 8519 8004 8520 2 6 8516 8517 8519 8524 8525 8531 2 6 8518 8517 8004 8541 8539 8531 2 6 8004 8517 8003 8515 8521 8523 2 6 8520 8515 8512 8511 8522 8523 2 5 8521 8511 8001 8002 8523 2 5 8522 8002 8521 8520 8003 2 6 8516 8518 8525 8526 8527 8528 2 6 8524 8518 8528 8529 8530 8531 2 7 8516 8524 8527 8503 8504 8588 8514 2 5 8526 8524 8528 8586 8503 2 6 8527 8524 8525 8529 8587 8586 2 6 8528 8525 8530 8602 8587 8603 2 6 8529 8525 8531 8532 8533 8603 2 6 8530 8525 8532 8519 8539 8518 2 6 8530 8531 8533 8534 8538 8539 2 6 8530 8532 8534 8535 8603 8604 2 6 8533 8532 8535 8536 8537 8538 2 6 8533 8534 8536 8604 8605 8606 2 6 8535 8534 8537 8606 8607 8608 2 6 8536 8534 8538 8608 8609 8010 2 6 8537 8534 8532 8539 8540 8010 2 6 8538 8532 8540 8541 8519 8531 2 6 8538 8539 8541 8010 8610 8006 2 6 8540 8539 8519 8006 8005 8004 2 6 8430 8431 8543 8690 8691 8692 2 6 8542 8431 8544 8692 8693 8694 2 6 8543 8431 8432 8433 8545 8694 2 6 8544 8433 8546 8694 8695 8547 2 5 8545 8433 8434 8435 8547 2 6 8546 8435 8548 8695 8545 8696 2 6 8547 8435 8436 8549 8696 8697 2 6 8548 8436 8437 8550 8697 8698 2 6 8549 8437 8439 8551 8698 8552 2 5 8550 8439 8440 8442 8552 2 7 8551 8442 8553 8698 8550 8699 8700 2 6 8552 8442 8443 8554 8700 8701 2 6 8553 8443 8555 8701 8702 8703 2 6 8554 8443 8444 8448 8556 8703 2 6 8555 8448 8449 8557 8703 8704 2 6 8556 8449 8450 8558 8704 8705 2 6 8557 8450 8451 8559 8705 8706 2 6 8558 8451 8560 8706 8707 8708 2 5 8559 8451 8452 8561 8708 2 6 8560 8452 8453 8454 8562 8708 2 6 8561 8454 8455 8563 8708 8709 2 6 8562 8455 8564 8709 8710 8711 2 6 8563 8455 8456 8565 8711 8712 2 7 8564 8456 8457 8459 8566 8712 8713 2 5 8565 8459 8567 8713 8714 2 6 8566 8459 8460 8568 8714 8715 2 6 8567 8460 8569 8715 8716 8717 2 6 8568 8460 8461 8462 8570 8717 2 7 8569 8462 8463 8571 8590 8592 8717 2 5 8570 8463 8464 8572 8590 2 7 8571 8464 8573 8574 8575 8576 8590 2 6 8572 8464 8465 8487 8488 8574 2 6 8573 8488 8489 8490 8575 8572 2 5 8574 8490 8492 8576 8572 2 7 8575 8492 8493 8577 8572 8590 8591 2 6 8576 8493 8494 8578 8594 8591 2 6 8577 8494 8495 8579 8594 8595 2 6 8578 8495 8496 8498 8580 8595 2 6 8579 8498 8581 8595 8596 8597 2 6 8580 8498 8499 8582 8597 8598 2 6 8581 8499 8501 8583 8584 8598 2 6 8582 8501 8584 8585 8586 8502 2 6 8582 8583 8585 8598 8599 8600 2 6 8584 8583 8586 8587 8600 8601 2 7 8585 8583 8587 8528 8527 8503 8502 2 6 8585 8586 8528 8601 8602 8529 2 5 8526 8504 8505 8513 8514 2 5 8513 8505 8506 8508 8507 2 6 8572 8576 8591 8571 8570 8592 2 6 8590 8576 8592 8593 8594 8577 2 5 8570 8590 8591 8593 8717 2 7 8592 8591 8594 8717 8716 8718 8719 2 6 8593 8591 8577 8578 8595 8719 2 7 8594 8578 8579 8580 8596 8719 8720 2 6 8595 8580 8597 8720 8721 8722 2 6 8596 8580 8581 8598 8722 8723 2 6 8597 8581 8582 8584 8599 8723 2 6 8598 8584 8600 8723 8724 8725 2 6 8599 8584 8585 8601 8725 8726 2 6 8600 8585 8587 8602 8726 8727 2 5 8601 8587 8529 8603 8727 2 6 8602 8529 8530 8533 8604 8727 2 6 8603 8533 8535 8605 8727 8728 2 6 8604 8535 8606 8728 8731 8732 2 6 8605 8535 8536 8607 8611 8732 2 6 8606 8536 8608 8611 8015 8014 2 6 8607 8536 8537 8609 8014 8013 2 5 8608 8537 8010 8013 8011 2 5 8010 8540 8008 8007 8006 2 6 8606 8607 8015 8016 8612 8732 2 6 8611 8016 8017 8613 8732 8733 2 6 8612 8017 8614 8733 8734 8735 2 6 8613 8017 8018 8615 8616 8735 2 6 8614 8018 8019 8616 8617 8618 2 6 8614 8615 8617 8735 8736 8737 2 6 8616 8615 8618 8737 8738 8739 2 6 8617 8615 8019 8619 8739 8742 2 6 8618 8019 8020 8022 8620 8742 2 6 8619 8022 8024 8621 8624 8742 2 6 8620 8024 8028 8622 8623 8624 2 6 8621 8028 8623 8627 8628 8029 2 6 8621 8622 8624 8625 8626 8627 2 6 8621 8623 8625 8741 8742 8620 2 6 8624 8623 8626 8837 8741 8838 2 6 8625 8623 8627 8838 8839 8840 2 6 8626 8623 8622 8628 8840 8841 2 6 8627 8622 8029 8629 8841 8842 2 6 8628 8029 8030 8033 8630 8842 2 6 8629 8033 8631 8842 8843 8844 2 6 8630 8033 8034 8632 8633 8844 2 6 8631 8034 8633 8634 8635 8035 2 6 8631 8632 8634 8844 8845 8846 2 6 8633 8632 8635 8636 8637 8846 2 6 8634 8632 8636 8640 7761 8035 2 6 8634 8635 8637 8638 8639 8640 2 6 8634 8636 8638 8846 8848 8849 2 6 8637 8636 8639 8849 8850 8851 2 6 8638 8636 8640 8851 8852 7762 2 5 8639 8636 8635 7761 7762 1 6 8382 8383 8642 8743 8744 8745 1 6 8641 8383 8384 8643 8745 8746 1 6 8642 8384 8385 8386 8644 8746 1 6 8643 8386 8645 8746 8747 8748 1 6 8644 8386 8387 8646 8748 8749 1 6 8645 8387 8388 8647 8749 8750 1 6 8646 8388 8389 8648 8750 8751 1 6 8647 8389 8390 8649 8751 8752 1 6 8648 8390 8650 8752 8753 8754 1 5 8649 8390 8391 8651 8754 1 6 8650 8391 8392 8393 8652 8754 1 6 8651 8393 8653 8754 8755 8756 1 6 8652 8393 8394 8654 8756 8757 1 6 8653 8394 8395 8396 8655 8757 1 6 8654 8396 8397 8656 8757 8758 1 7 8655 8397 8398 8657 8758 8759 8760 1 5 8656 8398 8399 8658 8760 1 7 8657 8399 8400 8659 8760 8761 8762 1 5 8658 8400 8401 8660 8762 1 8 8659 8401 8402 8403 8404 8661 8762 8763 1 5 8660 8404 8662 8763 8764 1 6 8661 8404 8405 8406 8663 8764 1 6 8662 8406 8407 8664 8764 8765 1 6 8663 8407 8665 8765 8766 8767 1 5 8664 8407 8408 8666 8767 1 6 8665 8408 8409 8667 8767 8768 1 6 8666 8409 8668 8768 8769 8770 1 6 8667 8409 8410 8411 8669 8770 1 6 8668 8411 8412 8670 8770 8771 1 6 8669 8412 8413 8671 8771 8772 1 6 8670 8413 8414 8672 8772 8773 1 6 8671 8414 8415 8673 8773 8774 1 6 8672 8415 8416 8674 8774 8775 1 6 8673 8416 8675 8775 8776 8777 1 6 8674 8416 8417 8418 8676 8777 1 6 8675 8418 8419 8677 8777 8778 2 6 8676 8419 8420 8678 8778 8779 2 6 8677 8420 8421 8679 8779 8780 2 6 8678 8421 8422 8680 8780 8781 2 6 8679 8422 8423 8681 8781 8782 2 6 8680 8423 8682 8782 8783 8684 2 6 8681 8423 8424 8425 8683 8684 2 6 8682 8425 8684 8685 8686 8687 2 5 8682 8683 8685 8783 8681 2 6 8684 8683 8686 8783 8784 8785 2 6 8685 8683 8687 8785 8786 8787 2 7 8686 8683 8425 8426 8427 8688 8787 2 5 8687 8427 8689 8787 8788 2 6 8688 8427 8428 8690 8788 8789 2 7 8689 8428 8429 8430 8542 8691 8789 2 6 8690 8542 8692 8789 8790 8791 2 5 8691 8542 8543 8693 8791 2 7 8692 8543 8694 8791 8792 8793 8794 2 6 8693 8543 8544 8545 8695 8794 2 6 8694 8545 8547 8696 8794 8795 2 7 8695 8547 8548 8697 8795 8796 8797 2 6 8696 8548 8549 8698 8797 8798 2 6 8697 8549 8550 8552 8699 8798 2 6 8698 8552 8700 8798 8799 8800 2 6 8699 8552 8553 8701 8800 8803 2 6 8700 8553 8554 8702 8803 8804 2 6 8701 8554 8703 8804 8805 8806 2 6 8702 8554 8555 8556 8704 8806 2 6 8703 8556 8557 8705 8806 8807 2 6 8704 8557 8558 8706 8807 8808 2 6 8705 8558 8559 8707 8808 8809 2 6 8706 8559 8708 8809 8810 8811 2 7 8707 8559 8560 8561 8562 8709 8811 2 5 8708 8562 8563 8710 8811 2 7 8709 8563 8711 8811 8812 8813 8814 2 6 8710 8563 8564 8712 8814 8815 2 6 8711 8564 8565 8713 8815 8816 2 5 8712 8565 8566 8714 8816 2 7 8713 8566 8567 8715 8816 8817 8818 2 6 8714 8567 8568 8716 8818 8819 2 6 8715 8568 8717 8593 8718 8819 2 6 8716 8568 8569 8570 8592 8593 2 6 8716 8593 8719 8819 8820 8720 2 5 8718 8593 8594 8595 8720 2 6 8719 8595 8596 8721 8820 8718 2 6 8720 8596 8722 8820 8821 8822 2 5 8721 8596 8597 8723 8822 2 6 8722 8597 8598 8599 8724 8822 2 6 8723 8599 8725 8822 8823 8824 2 6 8724 8599 8600 8726 8824 8825 2 6 8725 8600 8601 8727 8825 8729 2 7 8726 8601 8602 8603 8604 8728 8729 2 6 8727 8604 8605 8729 8730 8731 2 5 8727 8728 8730 8825 8726 2 6 8729 8728 8731 8825 8827 8828 2 6 8730 8728 8605 8732 8828 8829 2 7 8731 8605 8606 8611 8612 8733 8829 2 6 8732 8612 8613 8734 8830 8829 2 6 8733 8613 8735 8830 8831 8736 2 5 8734 8613 8614 8616 8736 2 6 8735 8616 8737 8831 8734 8832 2 6 8736 8616 8617 8738 8832 8833 2 6 8737 8617 8739 8740 8833 8834 2 6 8738 8617 8618 8740 8741 8742 2 6 8738 8739 8741 8834 8835 8836 2 7 8740 8739 8742 8624 8836 8837 8625 2 6 8741 8739 8624 8620 8619 8618 1 6 8381 8382 8641 8744 8931 8932 1 5 8743 8641 8745 8932 8933 1 6 8744 8641 8642 8746 8933 8934 1 6 8745 8642 8643 8644 8747 8934 1 6 8746 8644 8748 8934 8935 8936 1 6 8747 8644 8645 8749 8936 8937 1 6 8748 8645 8646 8750 8937 8938 1 6 8749 8646 8647 8751 8938 8939 1 6 8750 8647 8648 8752 8939 8940 1 6 8751 8648 8649 8753 8940 8941 1 6 8752 8649 8754 8941 8942 8943 1 7 8753 8649 8650 8651 8652 8755 8943 1 5 8754 8652 8756 8943 8944 1 6 8755 8652 8653 8757 8944 8945 1 6 8756 8653 8654 8655 8758 8945 1 7 8757 8655 8656 8759 8945 8946 8947 1 5 8758 8656 8760 8947 8948 1 6 8759 8656 8657 8658 8761 8948 1 6 8760 8658 8762 8948 8949 8950 1 6 8761 8658 8659 8660 8763 8950 1 5 8762 8660 8661 8764 8950 1 7 8763 8661 8662 8663 8765 8950 8951 1 6 8764 8663 8664 8766 8951 8952 1 6 8765 8664 8767 8952 8953 8954 1 6 8766 8664 8665 8666 8768 8954 1 6 8767 8666 8667 8769 8954 8955 1 6 8768 8667 8770 8955 8956 8957 1 6 8769 8667 8668 8669 8771 8957 1 6 8770 8669 8670 8772 8957 8958 1 6 8771 8670 8671 8773 8958 8959 1 6 8772 8671 8672 8774 8959 8960 1 6 8773 8672 8673 8775 8960 8961 1 6 8774 8673 8674 8776 8961 8962 1 6 8775 8674 8777 8962 8963 8964 1 6 8776 8674 8675 8676 8778 8964 1 6 8777 8676 8677 8779 8964 8965 2 6 8778 8677 8678 8780 8965 8966 2 6 8779 8678 8679 8781 8966 8967 2 6 8780 8679 8680 8782 8967 8968 2 6 8781 8680 8681 8783 8968 8969 2 6 8782 8681 8684 8685 8784 8969 2 6 8783 8685 8785 8969 8970 8971 2 6 8784 8685 8686 8786 8971 8972 2 6 8785 8686 8787 8972 8973 8974 2 6 8786 8686 8687 8688 8788 8974 2 6 8787 8688 8689 8789 8974 8975 2 6 8788 8689 8690 8691 8790 8975 2 6 8789 8691 8791 8975 8976 8977 2 6 8790 8691 8692 8693 8792 8977 2 6 8791 8693 8793 8977 8978 8979 2 6 8792 8693 8794 8979 8980 8795 2 5 8793 8693 8694 8695 8795 2 6 8794 8695 8696 8796 8980 8793 2 6 8795 8696 8797 8980 8981 8982 2 6 8796 8696 8697 8798 8982 8799 2 5 8797 8697 8698 8699 8799 2 6 8798 8699 8800 8801 8982 8797 2 6 8799 8699 8700 8801 8802 8803 2 6 8799 8800 8802 8982 8983 8984 2 6 8801 8800 8803 8984 8985 8986 2 6 8802 8800 8700 8701 8804 8986 2 6 8803 8701 8702 8805 8986 8987 2 6 8804 8702 8806 8987 8988 8989 2 6 8805 8702 8703 8704 8807 8989 2 6 8806 8704 8705 8808 8989 8990 2 7 8807 8705 8706 8809 8992 8990 8993 2 5 8808 8706 8707 8810 8993 2 6 8809 8707 8811 8993 8994 8812 2 6 8810 8707 8708 8709 8710 8812 2 6 8811 8710 8813 8994 8810 8995 2 6 8812 8710 8814 8995 8996 8997 2 6 8813 8710 8711 8815 8997 8998 2 5 8814 8711 8712 8816 8998 2 7 8815 8712 8713 8714 8817 8998 8999 2 6 8816 8714 8818 8999 9000 9001 2 6 8817 8714 8715 8819 9001 9002 2 6 8818 8715 8716 8718 8820 9002 2 6 8819 8718 8720 8721 8821 9002 2 6 8820 8721 8822 9002 9003 8823 2 6 8821 8721 8722 8723 8724 8823 2 6 8822 8724 8824 9003 8821 9004 2 6 8823 8724 8725 8825 8826 9004 2 7 8824 8725 8726 8729 8730 8826 8827 2 6 8824 8825 8827 9004 9005 9006 2 6 8826 8825 8730 8828 9012 9006 2 6 8827 8730 8731 8829 8830 9012 2 5 8828 8731 8830 8733 8732 2 7 8828 8829 8733 8734 8831 9011 9012 2 6 8830 8734 8736 8832 9013 9011 2 7 8831 8736 8737 8833 9013 9014 9015 2 6 8832 8737 8738 8834 9015 9016 2 6 8833 8738 8740 8835 9016 9017 2 6 8834 8740 8836 9017 9018 9019 2 6 8835 8740 8741 8837 9019 9020 2 5 8836 8741 8625 8838 9020 2 6 8837 8625 8626 8839 9020 9021 2 6 8838 8626 8840 9021 9022 9023 2 6 8839 8626 8627 8841 9023 9024 2 6 8840 8627 8628 8842 9024 9025 2 6 8841 8628 8629 8630 8843 9025 2 6 8842 8630 8844 9025 9026 9030 2 6 8843 8630 8631 8633 8845 9030 2 6 8844 8633 8846 8847 9031 9030 2 6 8845 8633 8634 8637 8847 8848 2 6 8845 8846 8848 9031 9032 9033 2 6 8847 8846 8637 8849 9042 9033 2 6 8848 8637 8638 8850 9043 9042 2 6 8849 8638 8851 9043 9044 9045 2 6 8850 8638 8639 8852 9045 9048 2 6 8851 8639 7762 7763 8853 9048 2 6 8852 7763 7765 8319 8854 9048 2 6 8853 8319 8321 8855 9047 9048 2 6 8854 8321 8856 9047 9049 9050 2 5 8855 8321 8323 8857 9050 2 7 8856 8323 8324 8328 8858 9050 8860 2 6 8857 8328 8329 8330 8859 8860 2 6 8858 8330 8860 8861 8862 8331 2 6 8858 8859 8861 9050 8857 9051 2 6 8860 8859 8862 8863 9051 9052 2 6 8861 8859 8863 8864 8865 8331 2 6 8861 8862 8864 8877 9058 9052 2 6 8863 8862 8865 8866 8877 8878 2 6 8864 8862 8866 8333 8332 8331 2 6 8864 8865 8333 8867 8878 8879 2 6 8866 8333 8334 8335 8868 8879 2 6 8867 8335 8869 8879 8880 8871 2 6 8868 8335 8336 8338 8870 8871 2 6 8869 8338 8871 8872 8873 8874 2 6 8869 8870 8872 8894 8880 8868 2 6 8871 8870 8873 8896 8894 8897 2 6 8872 8870 8874 8897 8898 8902 2 6 8873 8870 8338 8339 8875 8902 2 6 8874 8339 8347 8902 8349 8348 2 6 8346 8340 8341 8342 8344 8345 2 5 8863 8864 8878 9058 8882 2 6 8877 8864 8866 8879 8881 8882 2 6 8878 8866 8867 8868 8880 8881 2 6 8879 8868 8881 8893 8894 8871 2 6 8879 8880 8878 8882 8883 8893 2 6 8878 8881 8883 8884 9058 8877 2 6 8882 8881 8884 8885 8892 8893 2 6 8882 8883 8885 8886 8887 9058 2 6 8884 8883 8886 8890 8891 8892 2 6 8884 8885 8887 8888 8889 8890 2 6 8884 8886 8888 9058 9057 9059 2 6 8887 8886 8889 9059 9060 9061 2 6 8888 8886 8890 9061 9062 9063 2 6 8889 8886 8885 8891 9063 9064 2 6 8890 8885 8892 9064 9065 9066 2 6 8891 8885 8883 8893 9066 8895 2 6 8892 8883 8881 8880 8894 8895 2 6 8893 8880 8895 8896 8872 8871 2 6 8893 8894 8896 9066 8892 9067 2 6 8895 8894 8872 8897 9067 9068 2 6 8896 8872 8873 8898 8899 9068 2 6 8897 8873 8899 8900 8901 8902 2 6 8897 8898 8900 9068 9069 9070 2 6 8899 8898 8901 9070 9071 8903 2 6 8900 8898 8902 8349 8350 8903 2 6 8901 8898 8873 8874 8875 8349 2 6 8901 8350 8351 8904 9071 8900 2 6 8903 8351 8905 9071 9072 9073 1 6 8904 8351 8352 8906 9073 9074 1 6 8905 8352 8353 8907 9074 9075 1 6 8906 8353 8354 8908 9075 9076 1 6 8907 8354 8909 9076 9077 8911 1 6 8908 8354 8355 8357 8910 8911 1 6 8909 8357 8911 8912 8360 8359 1 6 8909 8910 8912 9077 8908 9078 1 6 8911 8910 8360 8913 9078 9079 1 6 8912 8360 8361 8914 8915 9079 1 6 8913 8361 8362 8915 8916 8363 1 6 8913 8914 8916 9079 9080 9081 1 6 8915 8914 8363 8917 9081 9082 1 6 8916 8363 8364 8918 9082 9083 1 6 8917 8364 8365 8919 9083 9084 1 6 8918 8365 8366 8920 9093 9084 1 6 8919 8366 8367 8921 9093 9100 1 6 8920 8367 8368 8922 9100 9101 1 6 8921 8368 8369 8923 9101 9102 1 6 8922 8369 8370 8924 9102 9103 1 6 8923 8370 8925 9103 9104 9105 1 6 8924 8370 8371 8926 9105 9106 1 6 8925 8371 8372 8374 8927 9106 1 6 8926 8374 8928 9106 9107 8931 1 6 8927 8374 8375 8929 8931 8930 1 6 8928 8375 8376 8377 8379 8930 1 5 8929 8379 8380 8931 8928 1 8 8930 8380 8381 8743 8932 9107 8927 8928 1 5 8931 8743 8744 8933 9107 1 8 8932 8744 8745 8934 9107 9106 9105 9108 1 6 8933 8745 8746 8747 8935 9108 1 6 8934 8747 8936 9108 9109 9110 1 6 8935 8747 8748 8937 9110 9111 1 6 8936 8748 8749 8938 9111 9112 1 6 8937 8749 8750 8939 9112 9113 1 6 8938 8750 8751 8940 9113 9114 1 6 8939 8751 8752 8941 9114 9115 1 6 8940 8752 8753 8942 9115 9116 1 6 8941 8753 8943 9116 9117 8944 1 5 8942 8753 8754 8755 8944 1 7 8943 8755 8756 8945 9117 8942 9118 1 7 8944 8756 8757 8758 8946 9118 9119 1 5 8945 8758 8947 9119 9120 1 6 8946 8758 8759 8948 9120 9121 1 7 8947 8759 8760 8761 8949 9121 9122 1 6 8948 8761 8950 9122 9123 8951 1 6 8949 8761 8762 8763 8764 8951 1 6 8950 8764 8765 8952 9123 8949 1 6 8951 8765 8766 8953 9123 9124 1 6 8952 8766 8954 9124 9125 9126 1 6 8953 8766 8767 8768 8955 9126 1 6 8954 8768 8769 8956 9126 9127 1 6 8955 8769 8957 9127 9128 9129 1 6 8956 8769 8770 8771 8958 9129 1 6 8957 8771 8772 8959 9129 9130 1 6 8958 8772 8773 8960 9130 9131 1 6 8959 8773 8774 8961 9131 9132 1 6 8960 8774 8775 8962 9132 9133 1 6 8961 8775 8776 8963 9133 9134 1 6 8962 8776 8964 9134 9135 9136 1 6 8963 8776 8777 8778 8965 9136 1 6 8964 8778 8779 8966 9136 9137 2 6 8965 8779 8780 8967 9137 9138 2 6 8966 8780 8781 8968 9138 9139 2 6 8967 8781 8782 8969 9139 9140 2 7 8968 8782 8783 8784 8970 9140 9141 2 5 8969 8784 8971 9141 9142 2 7 8970 8784 8785 8972 9142 9143 9144 2 6 8971 8785 8786 8973 9144 9145 2 6 8972 8786 8974 9145 9146 9147 2 6 8973 8786 8787 8788 8975 9147 2 6 8974 8788 8789 8790 8976 9147 2 6 8975 8790 8977 9147 9148 9149 2 6 8976 8790 8791 8792 8978 9149 2 6 8977 8792 8979 9149 9150 9151 2 6 8978 8792 8793 8980 9151 9152 2 6 8979 8793 8795 8796 8981 9152 2 6 8980 8796 8982 9152 9153 8983 2 6 8981 8796 8797 8799 8801 8983 2 6 8982 8801 8984 9153 8981 9154 2 6 8983 8801 8802 8985 9154 9155 2 6 8984 8802 8986 9155 9156 9157 2 7 8985 8802 8803 8804 8987 9157 9158 2 5 8986 8804 8805 8988 9158 2 7 8987 8805 8989 8990 8991 9158 9159 2 5 8988 8805 8806 8807 8990 2 6 8989 8807 8988 8991 8992 8808 2 6 8988 8990 8992 9159 9160 9161 2 6 8991 8990 8808 8993 9164 9161 2 6 8992 8808 8809 8810 8994 9164 2 6 8993 8810 8812 8995 9164 9165 2 7 8994 8812 8813 8996 9165 9167 9168 2 5 8995 8813 8997 9168 9169 2 6 8996 8813 8814 8998 9169 9170 2 7 8997 8814 8815 8816 8999 9170 9171 2 5 8998 8816 8817 9000 9171 2 6 8999 8817 9001 9171 9172 9173 2 6 9000 8817 8818 9002 9173 9003 2 6 9001 8818 8819 8820 8821 9003 2 6 9002 8821 8823 9004 9173 9001 2 6 9003 8823 8824 8826 9005 9173 2 6 9004 8826 9006 9007 9008 9173 2 6 9005 8826 9007 9011 9012 8827 2 6 9005 9006 9008 9009 9010 9011 2 6 9005 9007 9009 9173 9172 9174 2 5 9008 9007 9010 9174 9177 2 6 9009 9007 9011 9013 9177 9014 2 7 9010 9007 9006 9012 9013 8831 8830 2 5 9011 9006 8830 8828 8827 2 5 9010 9011 8831 8832 9014 2 6 9013 8832 9015 9177 9010 9178 2 6 9014 8832 8833 9016 9181 9178 2 5 9015 8833 8834 9017 9181 2 7 9016 8834 8835 9018 9181 9182 9188 2 6 9017 8835 9019 9188 9189 9190 2 6 9018 8835 8836 9020 9190 9191 2 6 9019 8836 8837 8838 9021 9191 2 6 9020 8838 8839 9022 9191 9192 2 6 9021 8839 9023 9192 9195 9196 2 6 9022 8839 8840 9024 9196 9197 2 6 9023 8840 8841 9025 9197 9027 2 6 9024 8841 8842 8843 9026 9027 2 6 9025 8843 9027 9028 9029 9030 2 6 9025 9026 9028 9197 9024 9198 2 6 9027 9026 9029 9198 9199 9203 2 5 9028 9026 9030 9031 9203 2 6 9029 9026 8843 9031 8845 8844 2 7 9029 9030 8845 8847 9032 9203 9204 2 6 9031 8847 9033 9034 9204 9205 2 6 9032 8847 9034 9035 9042 8848 2 6 9032 9033 9035 9036 9037 9205 2 6 9034 9033 9036 9040 9041 9042 2 6 9034 9035 9037 9038 9039 9040 2 6 9034 9036 9038 9205 9206 9207 2 6 9037 9036 9039 9207 9208 9209 2 6 9038 9036 9040 9209 9062 9061 2 6 9039 9036 9035 9041 9061 9060 2 6 9040 9035 9042 9043 9060 9210 2 6 9041 9035 9033 8848 9043 8849 2 6 9041 9042 8849 8850 9044 9210 2 7 9043 8850 9045 9046 9055 9056 9210 2 6 9044 8850 8851 9046 9047 9048 2 6 9044 9045 9047 9053 9055 9049 2 6 9046 9045 9048 8854 8855 9049 2 6 9047 9045 8851 8854 8853 8852 2 6 9047 8855 9050 9051 9053 9046 2 6 9049 8855 8856 8857 8860 9051 2 6 9050 8860 8861 9052 9053 9049 2 6 9051 8861 9053 9054 9058 8863 2 6 9051 9052 9054 9055 9046 9049 2 6 9053 9052 9055 9056 9057 9058 2 5 9053 9054 9046 9044 9056 2 6 9044 9055 9054 9057 9059 9210 2 5 9056 9054 9058 8887 9059 2 8 9057 9054 9052 8863 8877 8882 8884 8887 2 6 9057 8887 8888 9060 9210 9056 2 6 9059 8888 9061 9040 9041 9210 2 6 9060 8888 8889 9062 9039 9040 2 6 9061 8889 9063 9209 9039 9211 2 6 9062 8889 8890 9064 9211 9212 2 6 9063 8890 8891 9065 9212 9213 2 6 9064 8891 9066 9213 9214 9215 2 6 9065 8891 8892 8895 9067 9215 2 6 9066 8895 8896 9068 9215 9216 2 6 9067 8896 8897 8899 9069 9216 2 6 9068 8899 9070 9216 9217 9218 2 6 9069 8899 8900 9071 9218 9219 2 7 9070 8900 8903 8904 9072 9219 9220 2 5 9071 8904 9073 9220 9221 1 7 9072 8904 8905 9074 9221 9222 9223 1 6 9073 8905 8906 9075 9223 9225 1 6 9074 8906 8907 9076 9225 9226 1 5 9075 8907 8908 9077 9226 1 7 9076 8908 8911 9078 9226 9227 9228 1 5 9077 8911 8912 9079 9228 1 6 9078 8912 8913 8915 9080 9228 1 6 9079 8915 9081 9228 9229 9230 1 6 9080 8915 8916 9082 9230 9231 1 6 9081 8916 8917 9083 9231 9232 1 6 9082 8917 8918 9084 9085 9232 1 6 9083 8918 9085 9086 9093 8919 1 6 9083 9084 9086 9087 9232 9233 1 6 9085 9084 9087 9088 9092 9093 1 6 9085 9086 9088 9089 9233 9234 1 6 9087 9086 9089 9090 9091 9092 1 6 9087 9088 9090 9095 9234 9235 1 6 9089 9088 9091 9095 9096 9097 1 6 9090 9088 9092 9097 9098 9099 1 6 9091 9088 9086 9093 9099 9100 1 6 9092 9086 9084 8919 8920 9100 1 5 8469 8470 8485 8476 8471 1 6 9089 9090 9096 9235 9236 9237 1 6 9095 9090 9097 9237 9238 9239 1 6 9096 9090 9091 9098 9239 9240 1 6 9097 9091 9099 9240 9241 9242 1 6 9098 9091 9092 9100 9242 9101 1 6 9099 9092 9093 8920 8921 9101 1 6 9100 8921 8922 9102 9242 9099 1 6 9101 8922 8923 9103 9242 9243 1 6 9102 8923 8924 9104 9243 9244 1 6 9103 8924 9105 9109 9244 9108 1 6 9104 8924 8925 9106 8933 9108 1 6 9105 8925 8926 8927 9107 8933 1 5 9106 8927 8931 8932 8933 1 6 9105 8933 8934 8935 9109 9104 1 5 9108 8935 9110 9244 9104 1 7 9109 8935 8936 9111 9245 9244 9348 1 6 9110 8936 8937 9112 9350 9348 1 5 9111 8937 8938 9113 9350 1 6 9112 8938 8939 9114 9350 9351 1 6 9113 8939 8940 9115 9351 9352 1 6 9114 8940 8941 9116 9352 9353 1 6 9115 8941 8942 9117 9246 9353 1 6 9116 8942 8944 9118 9246 9247 1 6 9117 8944 8945 9119 9247 9248 1 5 9118 8945 8946 9120 9248 1 7 9119 8946 8947 9121 9248 9249 9250 1 6 9120 8947 8948 9122 9250 9251 1 5 9121 8948 8949 9123 9251 1 6 9122 8949 8951 8952 9124 9251 1 6 9123 8952 8953 9125 9251 9252 1 6 9124 8953 9126 9252 9253 9254 1 6 9125 8953 8954 8955 9127 9254 1 6 9126 8955 8956 9128 9254 9255 1 6 9127 8956 9129 9255 9256 9257 1 6 9128 8956 8957 8958 9130 9257 1 6 9129 8958 8959 9131 9257 9258 1 6 9130 8959 8960 9132 9258 9259 1 6 9131 8960 8961 9133 9259 9260 1 6 9132 8961 8962 9134 9260 9261 1 6 9133 8962 8963 9135 9261 9262 1 6 9134 8963 9136 9262 9263 9264 1 6 9135 8963 8964 8965 9137 9264 1 6 9136 8965 8966 9138 9264 9265 2 6 9137 8966 8967 9139 9265 9266 2 6 9138 8967 8968 9140 9266 9267 2 6 9139 8968 8969 9141 9267 9268 2 5 9140 8969 8970 9142 9268 2 7 9141 8970 8971 9143 9268 9269 9270 2 6 9142 8971 9144 9270 9271 9272 2 5 9143 8971 8972 9145 9272 2 6 9144 8972 8973 9146 9272 9273 2 6 9145 8973 9147 9273 9274 9148 2 6 9146 8973 8974 8975 8976 9148 2 6 9147 8976 9149 9274 9146 9275 2 6 9148 8976 8977 8978 9150 9275 2 6 9149 8978 9151 9275 9276 9277 2 6 9150 8978 8979 9152 9277 9278 2 7 9151 8979 8980 8981 9153 9278 9279 2 6 9152 8981 8983 9154 9279 9280 2 6 9153 8983 8984 9155 9280 9281 2 6 9154 8984 8985 9156 9281 9282 2 6 9155 8985 9157 9282 9283 9284 2 6 9156 8985 8986 9158 9284 9285 2 6 9157 8986 8987 8988 9159 9285 2 6 9158 8988 8991 9160 9285 9286 2 6 9159 8991 9161 9162 9286 9287 2 6 9160 8991 9162 9163 9164 8992 2 6 9160 9161 9163 9287 9288 9289 2 6 9162 9161 9164 9165 9166 9289 2 6 9163 9161 8992 8993 8994 9165 2 6 9164 8994 8995 9163 9166 9167 2 6 9163 9165 9167 9289 9290 9186 2 6 9166 9165 8995 9168 9186 9185 2 6 9167 8995 8996 9169 9185 9184 2 7 9168 8996 8997 9170 9184 9179 9176 2 6 9169 8997 8998 9171 9176 9175 2 6 9170 8998 8999 9000 9172 9175 2 6 9171 9000 9173 9008 9174 9175 2 7 9172 9000 9001 9003 9004 9005 9008 2 6 9172 9008 9009 9175 9176 9177 2 5 9172 9174 9176 9170 9171 2 6 9175 9174 9177 9179 9169 9170 2 7 9176 9174 9009 9010 9014 9178 9179 2 6 9177 9014 9179 9180 9181 9015 2 6 9177 9178 9180 9184 9169 9176 2 6 9179 9178 9181 9182 9183 9184 2 6 9180 9178 9015 9016 9017 9182 2 6 9181 9017 9180 9183 9187 9188 2 6 9180 9182 9184 9185 9186 9187 2 6 9180 9183 9185 9168 9169 9179 2 5 9184 9183 9186 9167 9168 2 6 9185 9183 9187 9290 9166 9167 2 6 9186 9183 9182 9188 9290 9291 2 6 9187 9182 9017 9018 9189 9291 2 5 9188 9018 9190 9291 9292 2 6 9189 9018 9019 9191 9292 9193 2 6 9190 9019 9020 9021 9192 9193 2 6 9191 9021 9022 9193 9194 9195 2 6 9191 9192 9194 9292 9190 9293 2 6 9193 9192 9195 9293 9294 9295 2 6 9194 9192 9022 9196 9295 9296 2 6 9195 9022 9023 9197 9302 9296 2 7 9196 9023 9024 9027 9198 9302 9303 2 6 9197 9027 9028 9199 9200 9303 2 6 9198 9028 9200 9201 9202 9203 2 6 9198 9199 9201 9303 9301 9304 2 6 9200 9199 9202 9304 9305 9306 2 6 9201 9199 9203 9306 9307 9204 2 6 9202 9199 9028 9029 9031 9204 2 7 9203 9031 9032 9205 9307 9202 9206 2 5 9204 9032 9034 9037 9206 2 6 9205 9037 9207 9307 9204 9308 2 6 9206 9037 9038 9208 9308 9309 2 6 9207 9038 9209 9309 9310 9314 2 6 9208 9038 9039 9062 9211 9314 2 6 9060 9041 9043 9059 9056 9044 2 6 9209 9062 9063 9212 9314 9315 2 6 9211 9063 9064 9213 9315 9316 2 6 9212 9064 9065 9214 9319 9316 2 6 9213 9065 9215 9319 9320 9321 2 6 9214 9065 9066 9067 9216 9321 2 6 9215 9067 9068 9069 9217 9321 2 7 9216 9069 9218 9321 9320 9322 9323 2 5 9217 9069 9070 9219 9323 2 7 9218 9070 9071 9220 9323 9324 9325 2 5 9219 9071 9072 9221 9325 2 7 9220 9072 9073 9222 9325 9326 9327 1 6 9221 9073 9223 9224 9327 9328 1 5 9222 9073 9074 9224 9225 1 6 9222 9223 9225 9328 9329 9330 1 6 9224 9223 9074 9075 9226 9330 1 7 9225 9075 9076 9077 9227 9330 9331 1 6 9226 9077 9228 9331 9332 9229 1 6 9227 9077 9078 9079 9080 9229 1 7 9228 9080 9230 9332 9227 9333 9334 1 6 9229 9080 9081 9231 9334 9335 1 6 9230 9081 9082 9232 9335 9336 1 7 9231 9082 9083 9085 9233 9336 9337 1 5 9232 9085 9087 9234 9337 1 7 9233 9087 9089 9235 9337 9338 9339 1 5 9234 9089 9095 9236 9339 1 7 9235 9095 9237 9339 9340 9341 9342 1 6 9236 9095 9096 9238 9342 9343 1 6 9237 9096 9239 9343 9344 9345 1 6 9238 9096 9097 9240 9345 9346 1 6 9239 9097 9098 9241 9346 9347 1 6 9240 9098 9242 9347 9245 9243 1 6 9241 9098 9099 9101 9102 9243 1 6 9242 9102 9103 9244 9245 9241 1 6 9243 9103 9245 9110 9109 9104 1 6 9243 9244 9110 9347 9241 9348 1 6 9116 9117 9247 9353 9354 9355 1 6 9246 9117 9118 9248 9355 9356 1 6 9247 9118 9119 9120 9249 9356 1 6 9248 9120 9250 9356 9357 9358 1 6 9249 9120 9121 9251 9358 9252 1 6 9250 9121 9122 9123 9124 9252 1 7 9251 9124 9125 9253 9358 9250 9359 1 5 9252 9125 9254 9359 9360 1 7 9253 9125 9126 9127 9255 9360 9361 1 6 9254 9127 9128 9256 9361 9362 1 6 9255 9128 9257 9362 9363 9364 1 6 9256 9128 9129 9130 9258 9364 1 7 9257 9130 9131 9259 9364 9365 9366 1 6 9258 9131 9132 9260 9366 9367 1 6 9259 9132 9133 9261 9367 9368 1 6 9260 9133 9134 9262 9368 9369 1 6 9261 9134 9135 9263 9369 9370 1 6 9262 9135 9264 9370 9371 9372 1 6 9263 9135 9136 9137 9265 9372 1 6 9264 9137 9138 9266 9372 9373 2 6 9265 9138 9139 9267 9373 9374 2 6 9266 9139 9140 9268 9374 9375 2 7 9267 9140 9141 9142 9269 9375 9376 2 5 9268 9142 9270 9376 9377 2 6 9269 9142 9143 9271 9377 9381 2 6 9270 9143 9272 9381 9382 9383 2 6 9271 9143 9144 9145 9273 9383 2 6 9272 9145 9146 9274 9383 9384 2 6 9273 9146 9148 9275 9384 9385 2 7 9274 9148 9149 9150 9276 9385 9386 2 5 9275 9150 9277 9386 9388 2 6 9276 9150 9151 9278 9388 9389 2 6 9277 9151 9152 9279 9389 9390 2 6 9278 9152 9153 9280 9390 9391 2 5 9279 9153 9154 9281 9391 2 6 9280 9154 9155 9282 9393 9391 2 6 9281 9155 9156 9283 9393 9394 2 6 9282 9156 9284 9394 9395 9396 2 6 9283 9156 9157 9285 9396 9397 2 6 9284 9157 9158 9159 9286 9397 2 6 9285 9159 9160 9287 9397 9398 2 5 9286 9160 9162 9288 9398 2 7 9287 9162 9289 9398 9399 9400 9401 2 6 9288 9162 9163 9166 9290 9401 2 7 9289 9166 9186 9187 9291 9402 9401 2 6 9290 9187 9188 9189 9292 9402 2 7 9291 9189 9190 9193 9293 9402 9400 2 6 9292 9193 9194 9294 9400 9403 2 6 9293 9194 9295 9403 9404 9405 2 6 9294 9194 9195 9296 9297 9405 2 6 9295 9195 9297 9298 9302 9196 2 6 9295 9296 9298 9299 9405 9406 2 6 9297 9296 9299 9300 9301 9302 2 6 9297 9298 9300 9409 9406 9410 2 6 9299 9298 9301 9410 9411 9412 2 7 9300 9298 9302 9303 9200 9304 9412 2 6 9301 9298 9296 9196 9197 9303 2 5 9302 9197 9198 9200 9301 2 5 9301 9200 9201 9305 9412 2 7 9304 9201 9306 9412 9413 9414 9418 2 5 9305 9201 9202 9307 9418 2 6 9306 9202 9204 9206 9308 9418 2 6 9307 9206 9207 9309 9417 9418 2 6 9308 9207 9208 9310 9311 9417 2 6 9309 9208 9311 9312 9313 9314 2 6 9309 9310 9312 9416 9417 9419 2 6 9311 9310 9313 9419 9420 9424 2 7 9312 9310 9314 9424 9425 9317 9315 2 6 9313 9310 9208 9209 9211 9315 2 6 9314 9211 9212 9316 9317 9313 2 6 9315 9212 9317 9318 9319 9213 2 6 9315 9316 9318 9425 9313 9426 2 6 9317 9316 9319 9426 9427 9428 2 6 9318 9316 9213 9214 9320 9428 2 6 9319 9214 9321 9217 9322 9428 2 5 9320 9214 9215 9216 9217 2 6 9320 9217 9323 9428 9429 9430 2 6 9322 9217 9218 9219 9324 9430 2 6 9323 9219 9325 9430 9431 9432 2 6 9324 9219 9220 9221 9326 9432 2 6 9325 9221 9327 9432 9433 9434 2 6 9326 9221 9222 9328 9434 9435 1 5 9327 9222 9224 9329 9435 1 7 9328 9224 9330 9435 9436 9437 9438 1 6 9329 9224 9225 9226 9331 9438 1 6 9330 9226 9227 9332 9438 9439 1 6 9331 9227 9229 9333 9442 9439 1 6 9332 9229 9334 9442 9443 9446 1 5 9333 9229 9230 9335 9446 1 6 9334 9230 9231 9336 9446 9447 1 6 9335 9231 9232 9337 9447 9448 1 6 9336 9232 9233 9234 9338 9448 1 6 9337 9234 9339 9448 9449 9450 1 6 9338 9234 9235 9236 9340 9450 1 6 9339 9236 9341 9450 9451 9452 1 6 9340 9236 9342 9452 9453 9454 1 6 9341 9236 9237 9343 9454 9455 1 5 9342 9237 9238 9344 9455 1 7 9343 9238 9345 9455 9456 9457 9458 1 6 9344 9238 9239 9346 9458 9349 1 5 9345 9239 9240 9347 9349 1 6 9346 9240 9241 9245 9348 9349 1 6 9347 9245 9349 9350 9111 9110 1 7 9347 9348 9350 9458 9345 9346 9351 1 6 9349 9348 9111 9112 9113 9351 1 7 9350 9113 9114 9352 9458 9349 9459 1 6 9351 9114 9115 9353 9459 9460 1 6 9352 9115 9116 9246 9354 9460 1 6 9353 9246 9355 9460 9461 9462 1 6 9354 9246 9247 9356 9462 9463 1 6 9355 9247 9248 9249 9357 9463 1 6 9356 9249 9358 9463 9464 9465 1 6 9357 9249 9250 9252 9359 9465 1 5 9358 9252 9253 9360 9465 1 7 9359 9253 9254 9361 9465 9466 9467 1 5 9360 9254 9255 9362 9467 1 6 9361 9255 9256 9363 9467 9468 1 6 9362 9256 9364 9468 9469 9470 1 6 9363 9256 9257 9258 9365 9470 1 6 9364 9258 9366 9470 9471 9472 1 5 9365 9258 9259 9367 9472 1 6 9366 9259 9260 9368 9472 9473 1 6 9367 9260 9261 9369 9473 9474 1 6 9368 9261 9262 9370 9474 9475 1 6 9369 9262 9263 9371 9475 9476 1 6 9370 9263 9372 9476 9477 9478 1 6 9371 9263 9264 9265 9373 9478 1 6 9372 9265 9266 9374 9478 9479 2 6 9373 9266 9267 9375 9479 9480 2 6 9374 9267 9268 9376 9480 9481 2 6 9375 9268 9269 9377 9378 9481 2 7 9376 9269 9270 9378 9379 9380 9381 2 5 9376 9377 9379 9481 9482 2 6 9378 9377 9380 9482 9483 9484 2 6 9379 9377 9381 9484 9485 9382 2 5 9380 9377 9270 9271 9382 2 6 9381 9271 9383 9485 9380 9486 2 7 9382 9271 9272 9273 9384 9486 9487 2 6 9383 9273 9274 9385 9487 9488 2 6 9384 9274 9275 9386 9387 9488 2 5 9385 9275 9276 9387 9388 2 6 9385 9386 9388 9488 9489 9490 2 7 9387 9386 9276 9277 9389 9490 9491 2 6 9388 9277 9278 9390 9491 9492 2 6 9389 9278 9279 9391 9392 9492 2 6 9390 9279 9392 9393 9281 9280 2 6 9390 9391 9393 9492 9493 9494 2 6 9392 9391 9281 9282 9394 9494 2 6 9393 9282 9283 9395 9494 9495 2 6 9394 9283 9396 9495 9496 9497 2 6 9395 9283 9284 9397 9498 9497 2 6 9396 9284 9285 9286 9398 9498 2 6 9397 9286 9287 9288 9399 9498 2 6 9398 9288 9400 9498 9404 9403 2 7 9399 9288 9401 9402 9292 9293 9403 2 5 9400 9288 9402 9290 9289 2 5 9400 9401 9290 9291 9292 2 5 9400 9293 9294 9404 9399 2 6 9403 9294 9405 9498 9399 9407 2 6 9404 9294 9295 9297 9406 9407 2 6 9405 9297 9407 9408 9409 9299 2 6 9405 9406 9408 9497 9498 9404 2 6 9407 9406 9409 9496 9497 9499 2 6 9408 9406 9299 9410 9499 9500 2 6 9409 9299 9300 9411 9500 9501 2 6 9410 9300 9412 9501 9502 9413 2 6 9411 9300 9301 9304 9305 9413 2 6 9412 9305 9414 9415 9502 9411 2 6 9413 9305 9415 9416 9417 9418 2 6 9413 9414 9416 9502 9503 9504 2 6 9415 9414 9417 9311 9419 9504 2 6 9416 9414 9418 9308 9309 9311 2 6 9417 9414 9308 9307 9306 9305 2 6 9416 9311 9312 9420 9421 9504 2 6 9419 9312 9421 9422 9423 9424 2 6 9419 9420 9422 9504 9505 9506 2 6 9421 9420 9423 9506 9507 9508 2 6 9422 9420 9424 9511 9508 9512 2 6 9423 9420 9312 9313 9425 9512 2 5 9424 9313 9317 9426 9512 2 6 9425 9317 9318 9427 9512 9513 2 6 9426 9318 9428 9513 9514 9429 2 6 9427 9318 9319 9320 9322 9429 2 6 9428 9322 9430 9517 9514 9427 2 6 9429 9322 9323 9324 9431 9517 2 6 9430 9324 9432 9524 9517 9525 2 6 9431 9324 9325 9326 9433 9525 2 6 9432 9326 9434 9525 9526 9527 2 6 9433 9326 9327 9435 9527 9528 2 6 9434 9327 9328 9329 9436 9528 2 6 9435 9329 9437 9528 9530 9531 1 6 9436 9329 9438 9531 9532 9440 1 6 9437 9329 9330 9331 9439 9440 1 6 9438 9331 9440 9441 9442 9332 1 5 9438 9439 9441 9532 9437 1 7 9440 9439 9442 9443 9444 9532 9533 1 5 9441 9439 9332 9333 9443 1 6 9442 9333 9441 9444 9445 9446 1 5 9441 9443 9445 9533 9534 1 6 9444 9443 9446 9534 9535 9536 1 7 9445 9443 9333 9334 9335 9447 9536 1 6 9446 9335 9336 9448 9536 9537 1 6 9447 9336 9337 9338 9449 9537 1 6 9448 9338 9450 9537 9538 9451 1 5 9449 9338 9339 9340 9451 1 7 9450 9340 9452 9538 9449 9539 9540 1 6 9451 9340 9341 9453 9540 9541 1 6 9452 9341 9454 9541 9542 9543 1 6 9453 9341 9342 9455 9543 9544 1 6 9454 9342 9343 9344 9456 9544 1 6 9455 9344 9457 9544 9545 9461 1 6 9456 9344 9458 9461 9460 9459 1 6 9457 9344 9345 9349 9351 9459 1 5 9458 9351 9352 9460 9457 1 6 9459 9352 9353 9354 9461 9457 1 6 9460 9354 9462 9545 9456 9457 1 5 9461 9354 9355 9463 9545 1 7 9462 9355 9356 9357 9464 9545 9546 1 6 9463 9357 9465 9546 9547 9548 1 7 9464 9357 9358 9359 9360 9466 9548 1 6 9465 9360 9467 9548 9549 9550 1 6 9466 9360 9361 9362 9468 9550 1 6 9467 9362 9363 9469 9550 9551 1 6 9468 9363 9470 9551 9552 9553 1 6 9469 9363 9364 9365 9471 9553 1 6 9470 9365 9472 9553 9554 9555 1 6 9471 9365 9366 9367 9473 9555 1 6 9472 9367 9368 9474 9555 9556 1 6 9473 9368 9369 9475 9556 9557 1 6 9474 9369 9370 9476 9557 9558 1 6 9475 9370 9371 9477 9558 9559 1 6 9476 9371 9478 9559 9560 9561 1 6 9477 9371 9372 9373 9479 9561 1 6 9478 9373 9374 9480 9561 9562 2 6 9479 9374 9375 9481 9562 9563 2 6 9480 9375 9376 9378 9482 9563 2 6 9481 9378 9379 9483 9563 9564 2 6 9482 9379 9484 9564 9565 9566 2 6 9483 9379 9380 9485 9566 9567 2 6 9484 9380 9382 9486 9567 9568 2 6 9485 9382 9383 9487 9568 9569 2 6 9486 9383 9384 9488 9569 9570 2 6 9487 9384 9385 9387 9489 9570 2 6 9488 9387 9490 9570 9571 9572 2 6 9489 9387 9388 9491 9572 9573 2 6 9490 9388 9389 9492 9573 9574 2 6 9491 9389 9390 9392 9493 9574 2 6 9492 9392 9494 9574 9575 9576 2 6 9493 9392 9393 9394 9495 9576 2 6 9494 9394 9395 9496 9576 9577 2 6 9495 9395 9497 9408 9499 9577 2 6 9496 9395 9408 9407 9498 9396 2 7 9407 9497 9396 9397 9398 9399 9404 2 5 9496 9408 9409 9500 9577 2 7 9499 9409 9410 9501 9577 9578 9579 2 6 9500 9410 9411 9502 9579 9580 2 6 9501 9411 9413 9415 9503 9580 2 6 9502 9415 9504 9580 9581 9582 2 7 9503 9415 9416 9419 9421 9505 9582 2 5 9504 9421 9506 9582 9583 2 6 9505 9421 9422 9507 9583 9584 2 6 9506 9422 9508 9509 9584 9585 2 6 9507 9422 9509 9510 9511 9423 2 6 9507 9508 9510 9585 9586 9587 2 6 9509 9508 9511 9518 9587 9521 2 6 9510 9508 9423 9512 9518 9519 2 7 9511 9423 9424 9425 9426 9513 9519 2 6 9512 9426 9427 9514 9515 9519 2 6 9513 9427 9515 9516 9517 9429 2 6 9513 9514 9516 9519 9518 9520 2 6 9515 9514 9517 9523 9520 9524 2 6 9516 9514 9429 9430 9524 9431 2 6 9510 9511 9519 9515 9520 9521 2 5 9518 9511 9512 9513 9515 2 6 9518 9515 9521 9522 9523 9516 2 6 9518 9520 9522 9587 9510 9588 2 6 9521 9520 9523 9588 9589 9590 2 6 9522 9520 9516 9524 9590 9591 2 6 9523 9516 9517 9431 9525 9591 2 7 9524 9431 9432 9433 9526 9591 9592 2 5 9525 9433 9527 9592 9593 2 6 9526 9433 9434 9528 9529 9593 2 6 9527 9434 9435 9436 9529 9530 2 6 9527 9528 9530 9593 9594 9595 2 6 9529 9528 9436 9531 9595 9596 2 6 9530 9436 9437 9532 9596 9597 1 7 9531 9437 9440 9441 9533 9597 9598 1 5 9532 9441 9444 9534 9598 1 7 9533 9444 9445 9535 9598 9599 9600 1 6 9534 9445 9536 9600 9601 9602 1 7 9535 9445 9446 9447 9537 9602 9603 1 6 9536 9447 9448 9449 9538 9603 1 6 9537 9449 9451 9539 9603 9604 1 6 9538 9451 9540 9604 9605 9606 1 6 9539 9451 9452 9541 9606 9607 1 5 9540 9452 9453 9542 9607 1 7 9541 9453 9543 9607 9608 9609 9610 1 5 9542 9453 9454 9544 9610 1 7 9543 9454 9455 9456 9545 9610 9546 1 6 9544 9456 9461 9462 9463 9546 1 6 9545 9463 9464 9547 9610 9544 1 6 9546 9464 9548 9610 9609 9549 1 5 9547 9464 9465 9466 9549 1 6 9548 9466 9550 9609 9547 9611 1 6 9549 9466 9467 9468 9551 9611 1 6 9550 9468 9469 9552 9611 9612 1 6 9551 9469 9553 9612 9613 9614 1 6 9552 9469 9470 9471 9554 9614 1 6 9553 9471 9555 9614 9615 9616 1 6 9554 9471 9472 9473 9556 9616 1 6 9555 9473 9474 9557 9616 9617 1 6 9556 9474 9475 9558 9617 9618 1 6 9557 9475 9476 9559 9618 9619 1 6 9558 9476 9477 9560 9619 9620 1 6 9559 9477 9561 9620 9621 9622 1 6 9560 9477 9478 9479 9562 9622 1 6 9561 9479 9480 9563 9622 9623 2 6 9562 9480 9481 9482 9564 9623 2 6 9563 9482 9483 9565 9623 9624 2 6 9564 9483 9566 9624 9625 9626 2 6 9565 9483 9484 9567 9626 9627 2 6 9566 9484 9485 9568 9627 9628 2 7 9567 9485 9486 9569 9628 9629 9630 2 6 9568 9486 9487 9570 9630 9631 2 6 9569 9487 9488 9489 9571 9631 2 6 9570 9489 9572 9631 9632 9633 2 6 9571 9489 9490 9573 9633 9634 2 6 9572 9490 9491 9574 9634 9635 2 6 9573 9491 9492 9493 9575 9635 2 6 9574 9493 9576 9635 9636 9578 2 6 9575 9493 9494 9495 9577 9578 2 6 9576 9495 9496 9499 9500 9578 2 6 9577 9500 9579 9636 9575 9576 2 6 9578 9500 9501 9580 9636 9581 2 5 9579 9501 9502 9503 9581 2 6 9580 9503 9582 9636 9579 9637 2 6 9581 9503 9504 9505 9583 9637 2 6 9582 9505 9506 9584 9637 9638 2 6 9583 9506 9507 9585 9638 9633 2 6 9584 9507 9509 9586 9633 9632 2 6 9585 9509 9587 9632 9639 9629 2 6 9586 9509 9510 9521 9588 9629 2 6 9587 9521 9522 9589 9629 9628 2 6 9588 9522 9590 9628 9627 9640 2 6 9589 9522 9523 9591 9640 9641 2 6 9590 9523 9524 9525 9592 9641 2 6 9591 9525 9526 9593 9641 9642 2 7 9592 9526 9527 9529 9594 9642 9643 2 5 9593 9529 9595 9643 9644 2 6 9594 9529 9530 9596 9644 9645 2 6 9595 9530 9531 9597 9645 9646 1 6 9596 9531 9532 9598 9646 9647 1 6 9597 9532 9533 9534 9599 9647 1 5 9598 9534 9600 9647 9648 1 7 9599 9534 9535 9601 9648 9649 9650 1 5 9600 9535 9602 9650 9651 1 6 9601 9535 9536 9603 9651 9604 1 5 9602 9536 9537 9538 9604 1 6 9603 9538 9539 9605 9651 9602 1 6 9604 9539 9606 9651 9652 9653 1 6 9605 9539 9540 9607 9653 9613 1 6 9606 9540 9541 9542 9608 9613 1 6 9607 9542 9609 9613 9612 9611 1 6 9608 9542 9610 9547 9549 9611 1 6 9609 9542 9543 9544 9546 9547 1 6 9609 9549 9550 9551 9612 9608 1 5 9611 9551 9552 9613 9608 1 7 9612 9552 9614 9653 9606 9607 9608 1 6 9613 9552 9553 9554 9615 9653 1 6 9614 9554 9616 9653 9652 9654 1 6 9615 9554 9555 9556 9617 9654 1 6 9616 9556 9557 9618 9654 9655 1 6 9617 9557 9558 9619 9655 9656 1 6 9618 9558 9559 9620 9656 9657 1 6 9619 9559 9560 9621 9657 9658 1 6 9620 9560 9622 9658 9659 9660 1 6 9621 9560 9561 9562 9623 9660 2 6 9622 9562 9563 9564 9624 9660 2 7 9623 9564 9565 9625 9660 9661 9662 2 5 9624 9565 9626 9662 9663 2 7 9625 9565 9566 9627 9663 9664 9640 2 6 9626 9566 9567 9628 9589 9640 2 6 9627 9567 9568 9629 9588 9589 2 7 9628 9568 9630 9639 9586 9587 9588 2 5 9629 9568 9569 9631 9639 2 6 9630 9569 9570 9571 9632 9639 2 6 9631 9571 9633 9585 9586 9639 2 7 9632 9571 9572 9634 9638 9584 9585 2 6 9633 9572 9573 9635 9637 9638 2 6 9634 9573 9574 9575 9636 9637 2 6 9635 9575 9578 9579 9581 9637 2 7 9636 9581 9582 9583 9638 9635 9634 2 5 9637 9583 9584 9633 9634 2 5 9632 9586 9629 9630 9631 2 6 9627 9589 9590 9641 9664 9626 2 6 9640 9590 9591 9592 9642 9664 2 6 9641 9592 9593 9643 9664 9663 2 6 9642 9593 9594 9644 9663 9662 2 7 9643 9594 9595 9645 9662 9661 9665 2 7 9644 9595 9596 9646 9665 9659 9666 1 6 9645 9596 9597 9647 9666 9667 1 6 9646 9597 9598 9599 9648 9667 1 6 9647 9599 9600 9649 9667 9668 1 6 9648 9600 9650 9668 9656 9655 1 6 9649 9600 9601 9651 9655 9669 1 7 9650 9601 9602 9604 9605 9652 9669 1 6 9651 9605 9653 9615 9654 9669 1 6 9652 9605 9606 9613 9614 9615 1 6 9652 9615 9616 9617 9655 9669 1 7 9654 9617 9618 9656 9649 9650 9669 1 6 9655 9618 9619 9657 9668 9649 1 5 9656 9619 9620 9658 9668 1 6 9657 9620 9621 9659 9668 9666 1 6 9658 9621 9660 9665 9645 9666 2 7 9659 9621 9622 9623 9624 9661 9665 2 5 9660 9624 9662 9644 9665 2 6 9661 9624 9625 9663 9643 9644 2 6 9662 9625 9626 9664 9642 9643 2 5 9663 9626 9640 9641 9642 2 5 9661 9644 9645 9659 9660 1 6 9659 9645 9646 9667 9668 9658 1 5 9666 9646 9647 9648 9668 1 7 9667 9648 9649 9656 9657 9658 9666 1 5 9655 9650 9651 9652 9654 1 6 6653 6650 6651 9671 9691 9681 1 6 9670 6651 9672 9676 9680 9681 1 6 9671 6651 9673 9674 9675 9676 1 6 9672 6651 9674 6649 9727 6365 1 6 9672 9673 9675 9725 9726 9727 1 6 9672 9674 9676 9677 9678 9725 1 6 9672 9675 9677 9679 9680 9671 1 5 9676 9675 9678 5235 9679 1 7 9677 9675 5235 9734 4519 9725 9733 1 6 9677 5235 5236 9676 9680 9683 1 7 9676 9679 9671 9681 9682 4654 9683 1 6 9671 9680 9682 9691 9670 9685 1 5 9681 9680 4654 4655 9685 1 6 4654 9680 9679 5236 4652 9684 1 6 4652 9683 4650 422 5237 5236 1 6 9682 4655 9686 9687 9691 9681 1 6 9685 4655 9687 3169 9688 4656 1 6 9685 9686 3169 3170 9691 3172 1 7 3169 9686 4656 9689 3168 2843 9690 1 5 9688 4656 5380 430 9690 1 6 2843 9688 9689 430 2841 429 1 6 9685 9687 3172 6653 9670 9681 1 6 6475 6478 6474 9779 9774 9780 1 6 6460 6461 6465 6467 6377 6378 1 6 5862 5863 9695 9702 9703 9700 1 6 9694 5863 5864 9696 5719 9700 1 5 9695 5864 5865 5718 5719 1 6 5718 5865 5866 5867 9698 9699 1 6 9697 5867 9699 5695 5694 5868 1 5 9697 9698 5695 5696 5718 1 6 9695 5719 5720 9701 9702 9694 1 5 9700 5720 5721 5724 9702 1 6 9701 5724 6095 9703 9694 9700 1 6 9702 6095 6383 9694 5862 5861 1 6 6490 2252 415 2194 6488 6489 1 7 6488 2195 6487 6480 2196 9773 9778 1 5 2251 6491 3336 6492 3335 1 6 3335 6492 3334 6499 6493 6494 1 6 6502 6503 9709 2189 9711 9712 1 6 6502 9708 2189 6501 9710 2190 1 6 6501 9709 6500 2190 2191 2512 1 7 9708 6503 6512 9712 9715 9716 9717 1 5 9708 9711 2189 9713 9715 1 6 2189 9712 2187 2197 9714 9715 1 6 2197 9713 9715 2215 2216 9720 1 6 9714 9713 9712 9711 9716 2215 1 7 9715 9711 9717 9718 9719 2214 2215 1 6 9716 9711 6512 6513 6514 9718 1 5 9717 6514 6516 9719 9716 1 5 9718 6516 9716 2214 6522 1 6 9714 2216 2217 2200 2198 2197 1 6 6669 6775 9722 9723 6656 6658 1 5 9721 6775 9723 9724 9798 1 6 9721 9722 9724 6646 6656 6655 1 6 9723 9722 6646 6645 9799 9798 1 6 9675 9674 9726 9678 9733 9735 1 6 9725 9674 9727 9729 9735 9728 1 6 9726 9674 9673 6365 6366 9728 1 6 9727 6366 6368 6370 9729 9726 1 6 9728 6370 9730 9731 9735 9726 1 6 9729 6370 6371 6375 6467 9731 1 6 9730 6467 6466 9732 9735 9729 1 6 9731 6466 6468 7510 9733 9735 1 6 9732 7510 9734 9735 9678 9725 1 6 9733 7510 7508 4518 4519 9678 1 6 9732 9733 9731 9729 9726 9725 1 6 6041 6039 6038 6019 5872 5874 1 6 6132 6398 6392 6393 6115 9738 1 6 9737 6115 6116 6132 6131 6122 1 6 569 571 9740 9744 568 9743 1 6 9739 571 573 9741 9742 9743 1 6 9740 573 916 917 9742 918 1 6 9740 9741 918 9743 921 919 1 6 9740 9742 921 563 9744 9739 1 6 9743 563 564 567 568 9739 2 6 7205 7206 9746 7218 7217 7216 2 6 9745 7206 7207 7213 7216 7214 1 6 3491 3492 3496 3502 6706 6555 1 5 6706 3502 9749 3503 6710 1 5 6706 9748 6710 6707 6705 1 5 6682 5157 4667 6681 9761 1 5 3201 3470 3410 3200 3411 1 6 5932 5910 5915 5916 9755 5931 1 5 4915 4917 9754 4880 4879 1 7 9753 4917 4911 4880 9756 4904 9759 1 7 9752 5916 5931 5921 5920 5919 9758 1 6 4880 9754 9757 4895 4897 9759 1 5 4880 9756 4895 4884 4881 1 5 5919 9755 5918 5916 5917 1 6 9754 4904 4901 4898 4897 9756 1 6 4638 4912 4875 4872 4869 4868 1 7 6681 9750 4667 4668 9762 4560 9792 1 5 9761 4668 4546 4548 4560 1 5 8468 8469 9764 9765 8486 1 5 8468 9763 9765 7726 7962 1 7 9764 9763 8486 7714 7715 7723 7726 2 6 8023 8021 7738 7739 7740 7742 1 5 7723 7715 7716 7719 7721 1 6 427 7500 7502 9769 46 45 1 6 9768 7502 9770 9772 44 45 1 7 9769 7502 7503 9771 9772 9774 9780 1 7 2196 43 1 9772 9770 9773 9774 1 5 9771 1 9770 9769 44 1 6 2196 9771 9774 9705 9778 9779 1 6 9773 9771 9770 9779 9692 9780 1 6 7253 7256 7523 7520 7517 7516 1 6 2095 2083 2084 6093 3138 3131 1 5 6638 6639 6642 6787 6785 1 5 9705 9773 9779 6478 6480 1 5 9778 9773 9774 9692 6478 1 5 9692 9774 6474 9770 7503 1 6 3852 3129 26 25 1526 3130 1 6 6787 6642 6643 9783 6789 6170 1 5 9782 6643 6168 6169 6170 2 6 4396 4529 4395 4121 4119 4530 1 6 6637 6783 6779 6636 6635 6771 2 6 4118 3529 3531 9787 9789 4120 2 6 9786 3531 3533 9788 7174 9789 2 6 9787 3533 3535 7178 7175 7174 2 6 9787 7174 9786 4120 4122 7172 1 5 7670 7695 7696 7698 7669 2 6 7775 3145 4231 3413 3414 7776 1 6 4560 6675 6676 6677 6681 9761 1 6 3659 3660 4908 9794 4369 4371 1 5 9793 4908 4642 4370 4369 1 6 5543 5545 5700 5540 5541 5542 1 6 6177 6178 9797 9798 6181 9799 1 6 6782 6177 9796 9798 6776 6780 1 7 9797 9796 6776 9799 9724 9722 6775 1 6 9796 6181 6183 6645 9724 9798 scotch_6.0.9/src/check/data/bump.xyz0000644000302600021200000151002113470114133017546 0ustar pelegrinpelegrin2 9800 0 -1.4167000000e+00 -1.2834000000e-07 1 -8.3333000000e-02 -1.2834000000e-07 2 1.0833000000e+00 -1.2834000000e-07 3 3.5833000000e+00 -1.2834000000e-07 4 3.5833000000e+00 2.0730000000e+00 5 -1.4167000000e+00 2.0730000000e+00 6 -1.3817000000e+00 -1.2834000000e-07 7 -1.3467000000e+00 -1.2834000000e-07 8 -1.3117000000e+00 -1.2834000000e-07 9 -1.2767000000e+00 -1.2834000000e-07 10 -1.2417000000e+00 -1.2834000000e-07 11 -1.2067000000e+00 -1.2834000000e-07 12 -1.1717000000e+00 -1.2834000000e-07 13 -1.1367000000e+00 -1.2834000000e-07 14 -1.1017000000e+00 -1.2834000000e-07 15 -1.0667000000e+00 -1.2834000000e-07 16 -1.0317000000e+00 -1.2834000000e-07 17 -9.9667000000e-01 -1.2834000000e-07 18 -9.6167000000e-01 -1.2834000000e-07 19 -9.2667000000e-01 -1.2834000000e-07 20 -8.9167000000e-01 -1.2834000000e-07 21 -8.5667000000e-01 -1.2834000000e-07 22 -8.2167000000e-01 -1.2834000000e-07 23 -7.8667000000e-01 -1.2834000000e-07 24 -7.5167000000e-01 -1.2834000000e-07 25 -7.1667000000e-01 -1.2834000000e-07 26 -6.8167000000e-01 -1.2834000000e-07 27 -6.4667000000e-01 -1.2834000000e-07 28 -6.1167000000e-01 -1.2834000000e-07 29 -5.7667000000e-01 -1.2834000000e-07 30 -5.4167000000e-01 -1.2834000000e-07 31 -5.0667000000e-01 -1.2834000000e-07 32 -4.7167000000e-01 -1.2834000000e-07 33 -4.3667000000e-01 -1.2834000000e-07 34 -4.0167000000e-01 -1.2834000000e-07 35 -3.6667000000e-01 -1.2834000000e-07 36 -3.3167000000e-01 -1.2834000000e-07 37 -2.9667000000e-01 -1.2834000000e-07 38 -2.6167000000e-01 -1.2834000000e-07 39 -2.2667000000e-01 -1.2834000000e-07 40 -1.9167000000e-01 -1.2834000000e-07 41 -1.5667000000e-01 -1.2834000000e-07 42 -1.3222000000e-01 -1.2834000000e-07 43 -1.0778000000e-01 -1.2834000000e-07 44 -4.8292000000e-02 7.9126000000e-04 45 -1.3298000000e-02 2.0746000000e-03 46 2.1603000000e-02 4.3415000000e-03 47 5.6371000000e-02 8.0227000000e-03 48 9.1037000000e-02 1.2827000000e-02 49 1.2568000000e-01 1.7993000000e-02 50 1.6037000000e-01 2.2756000000e-02 51 1.9515000000e-01 2.6690000000e-02 52 2.3000000000e-01 2.9943000000e-02 53 2.6489000000e-01 3.2721000000e-02 54 2.9981000000e-01 3.5192000000e-02 55 3.3475000000e-01 3.7348000000e-02 56 3.6970000000e-01 3.9131000000e-02 57 4.0467000000e-01 4.0488000000e-02 58 4.3966000000e-01 4.1403000000e-02 59 4.7466000000e-01 4.1896000000e-02 60 5.0967000000e-01 4.1985000000e-02 61 5.4467000000e-01 4.1675000000e-02 62 5.7966000000e-01 4.0951000000e-02 63 6.1464000000e-01 3.9794000000e-02 64 6.4961000000e-01 3.8196000000e-02 65 6.8455000000e-01 3.6199000000e-02 66 7.1948000000e-01 3.3862000000e-02 67 7.5438000000e-01 3.1234000000e-02 68 7.8926000000e-01 2.8218000000e-02 69 8.2407000000e-01 2.4615000000e-02 70 8.5880000000e-01 2.0220000000e-02 71 8.9346000000e-01 1.5141000000e-02 72 9.2810000000e-01 1.0080000000e-02 73 9.6281000000e-01 5.8049000000e-03 74 9.9766000000e-01 2.9386000000e-03 75 1.0262000000e+00 1.5138000000e-03 76 1.0547000000e+00 6.2324000000e-04 77 1.1183000000e+00 -1.2834000000e-07 78 1.1533000000e+00 -1.2834000000e-07 79 1.1883000000e+00 -1.2834000000e-07 80 1.2233000000e+00 -1.2834000000e-07 81 1.2583000000e+00 -1.2834000000e-07 82 1.2933000000e+00 -1.2834000000e-07 83 1.3283000000e+00 -1.2834000000e-07 84 1.3633000000e+00 -1.2834000000e-07 85 1.3983000000e+00 -1.2834000000e-07 86 1.4333000000e+00 -1.2834000000e-07 87 1.4683000000e+00 -1.2834000000e-07 88 1.5033000000e+00 -1.2834000000e-07 89 1.5383000000e+00 -1.2834000000e-07 90 1.5733000000e+00 -1.2834000000e-07 91 1.6083000000e+00 -1.2834000000e-07 92 1.6433000000e+00 -1.2834000000e-07 93 1.6783000000e+00 -1.2834000000e-07 94 1.7133000000e+00 -1.2834000000e-07 95 1.7483000000e+00 -1.2834000000e-07 96 1.7833000000e+00 -1.2834000000e-07 97 1.8183000000e+00 -1.2834000000e-07 98 1.8533000000e+00 -1.2834000000e-07 99 1.8883000000e+00 -1.2834000000e-07 100 1.9233000000e+00 -1.2834000000e-07 101 1.9583000000e+00 -1.2834000000e-07 102 1.9933000000e+00 -1.2834000000e-07 103 2.0283000000e+00 -1.2834000000e-07 104 2.0633000000e+00 -1.2834000000e-07 105 2.0983000000e+00 -1.2834000000e-07 106 2.1333000000e+00 -1.2834000000e-07 107 2.1683000000e+00 -1.2834000000e-07 108 2.2033000000e+00 -1.2834000000e-07 109 2.2383000000e+00 -1.2834000000e-07 110 2.2733000000e+00 -1.2834000000e-07 111 2.3083000000e+00 -1.2834000000e-07 112 2.3433000000e+00 -1.2834000000e-07 113 2.3783000000e+00 -1.2834000000e-07 114 2.4133000000e+00 -1.2834000000e-07 115 2.4483000000e+00 -1.2834000000e-07 116 2.4833000000e+00 -1.2834000000e-07 117 2.5183000000e+00 -1.2834000000e-07 118 2.5533000000e+00 -1.2834000000e-07 119 2.5883000000e+00 -1.2834000000e-07 120 2.6233000000e+00 -1.2834000000e-07 121 2.6583000000e+00 -1.2834000000e-07 122 2.6933000000e+00 -1.2834000000e-07 123 2.7283000000e+00 -1.2834000000e-07 124 2.7633000000e+00 -1.2834000000e-07 125 2.7983000000e+00 -1.2834000000e-07 126 2.8333000000e+00 -1.2834000000e-07 127 2.8683000000e+00 -1.2834000000e-07 128 2.9033000000e+00 -1.2834000000e-07 129 2.9383000000e+00 -1.2834000000e-07 130 2.9733000000e+00 -1.2834000000e-07 131 3.0083000000e+00 -1.2834000000e-07 132 3.0433000000e+00 -1.2834000000e-07 133 3.0783000000e+00 -1.2834000000e-07 134 3.1133000000e+00 -1.2834000000e-07 135 3.1483000000e+00 -1.2834000000e-07 136 3.1833000000e+00 -1.2834000000e-07 137 3.2183000000e+00 -1.2834000000e-07 138 3.2533000000e+00 -1.2834000000e-07 139 3.2883000000e+00 -1.2834000000e-07 140 3.3233000000e+00 -1.2834000000e-07 141 3.3583000000e+00 -1.2834000000e-07 142 3.3933000000e+00 -1.2834000000e-07 143 3.4283000000e+00 -1.2834000000e-07 144 3.4633000000e+00 -1.2834000000e-07 145 3.4983000000e+00 -1.2834000000e-07 146 3.5267000000e+00 -1.2834000000e-07 147 3.5550000000e+00 -1.2834000000e-07 148 3.5833000000e+00 3.5000000000e-02 149 3.5833000000e+00 7.0000000000e-02 150 3.5833000000e+00 1.0500000000e-01 151 3.5833000000e+00 1.4000000000e-01 152 3.5833000000e+00 1.7500000000e-01 153 3.5833000000e+00 2.1000000000e-01 154 3.5833000000e+00 2.4500000000e-01 155 3.5833000000e+00 2.8000000000e-01 156 3.5833000000e+00 3.1500000000e-01 157 3.5833000000e+00 3.5000000000e-01 158 3.5833000000e+00 3.8500000000e-01 159 3.5833000000e+00 4.2000000000e-01 160 3.5833000000e+00 4.5500000000e-01 161 3.5833000000e+00 4.9000000000e-01 162 3.5833000000e+00 5.2500000000e-01 163 3.5833000000e+00 5.6000000000e-01 164 3.5833000000e+00 5.9500000000e-01 165 3.5833000000e+00 6.3000000000e-01 166 3.5833000000e+00 6.6500000000e-01 167 3.5833000000e+00 7.0000000000e-01 168 3.5833000000e+00 7.3500000000e-01 169 3.5833000000e+00 7.7000000000e-01 170 3.5833000000e+00 8.0500000000e-01 171 3.5833000000e+00 8.4000000000e-01 172 3.5833000000e+00 8.7500000000e-01 173 3.5833000000e+00 9.1000000000e-01 174 3.5833000000e+00 9.4500000000e-01 175 3.5833000000e+00 9.8000000000e-01 176 3.5833000000e+00 1.0150000000e+00 177 3.5833000000e+00 1.0500000000e+00 178 3.5833000000e+00 1.0850000000e+00 179 3.5833000000e+00 1.1200000000e+00 180 3.5833000000e+00 1.1550000000e+00 181 3.5833000000e+00 1.1900000000e+00 182 3.5833000000e+00 1.2250000000e+00 183 3.5833000000e+00 1.2600000000e+00 184 3.5833000000e+00 1.2950000000e+00 185 3.5833000000e+00 1.3300000000e+00 186 3.5833000000e+00 1.3650000000e+00 187 3.5833000000e+00 1.4000000000e+00 188 3.5833000000e+00 1.4350000000e+00 189 3.5833000000e+00 1.4700000000e+00 190 3.5833000000e+00 1.5050000000e+00 191 3.5833000000e+00 1.5400000000e+00 192 3.5833000000e+00 1.5750000000e+00 193 3.5833000000e+00 1.6100000000e+00 194 3.5833000000e+00 1.6450000000e+00 195 3.5833000000e+00 1.6800000000e+00 196 3.5833000000e+00 1.7150000000e+00 197 3.5833000000e+00 1.7500000000e+00 198 3.5833000000e+00 1.7850000000e+00 199 3.5833000000e+00 1.8200000000e+00 200 3.5833000000e+00 1.8550000000e+00 201 3.5833000000e+00 1.8900000000e+00 202 3.5833000000e+00 1.9250000000e+00 203 3.5833000000e+00 1.9600000000e+00 204 3.5833000000e+00 1.9950000000e+00 205 3.5833000000e+00 2.0210000000e+00 206 3.5833000000e+00 2.0470000000e+00 207 3.5483000000e+00 2.0730000000e+00 208 3.5133000000e+00 2.0730000000e+00 209 3.4783000000e+00 2.0730000000e+00 210 3.4433000000e+00 2.0730000000e+00 211 3.4083000000e+00 2.0730000000e+00 212 3.3733000000e+00 2.0730000000e+00 213 3.3383000000e+00 2.0730000000e+00 214 3.3033000000e+00 2.0730000000e+00 215 3.2683000000e+00 2.0730000000e+00 216 3.2333000000e+00 2.0730000000e+00 217 3.1983000000e+00 2.0730000000e+00 218 3.1633000000e+00 2.0730000000e+00 219 3.1283000000e+00 2.0730000000e+00 220 3.0933000000e+00 2.0730000000e+00 221 3.0583000000e+00 2.0730000000e+00 222 3.0233000000e+00 2.0730000000e+00 223 2.9883000000e+00 2.0730000000e+00 224 2.9533000000e+00 2.0730000000e+00 225 2.9183000000e+00 2.0730000000e+00 226 2.8833000000e+00 2.0730000000e+00 227 2.8483000000e+00 2.0730000000e+00 228 2.8133000000e+00 2.0730000000e+00 229 2.7783000000e+00 2.0730000000e+00 230 2.7433000000e+00 2.0730000000e+00 231 2.7083000000e+00 2.0730000000e+00 232 2.6733000000e+00 2.0730000000e+00 233 2.6383000000e+00 2.0730000000e+00 234 2.6033000000e+00 2.0730000000e+00 235 2.5683000000e+00 2.0730000000e+00 236 2.5333000000e+00 2.0730000000e+00 237 2.4983000000e+00 2.0730000000e+00 238 2.4633000000e+00 2.0730000000e+00 239 2.4283000000e+00 2.0730000000e+00 240 2.3933000000e+00 2.0730000000e+00 241 2.3583000000e+00 2.0730000000e+00 242 2.3233000000e+00 2.0730000000e+00 243 2.2883000000e+00 2.0730000000e+00 244 2.2533000000e+00 2.0730000000e+00 245 2.2183000000e+00 2.0730000000e+00 246 2.1833000000e+00 2.0730000000e+00 247 2.1483000000e+00 2.0730000000e+00 248 2.1133000000e+00 2.0730000000e+00 249 2.0783000000e+00 2.0730000000e+00 250 2.0433000000e+00 2.0730000000e+00 251 2.0083000000e+00 2.0730000000e+00 252 1.9733000000e+00 2.0730000000e+00 253 1.9383000000e+00 2.0730000000e+00 254 1.9033000000e+00 2.0730000000e+00 255 1.8683000000e+00 2.0730000000e+00 256 1.8333000000e+00 2.0730000000e+00 257 1.7983000000e+00 2.0730000000e+00 258 1.7633000000e+00 2.0730000000e+00 259 1.7283000000e+00 2.0730000000e+00 260 1.6933000000e+00 2.0730000000e+00 261 1.6583000000e+00 2.0730000000e+00 262 1.6233000000e+00 2.0730000000e+00 263 1.5883000000e+00 2.0730000000e+00 264 1.5533000000e+00 2.0730000000e+00 265 1.5183000000e+00 2.0730000000e+00 266 1.4833000000e+00 2.0730000000e+00 267 1.4483000000e+00 2.0730000000e+00 268 1.4133000000e+00 2.0730000000e+00 269 1.3783000000e+00 2.0730000000e+00 270 1.3433000000e+00 2.0730000000e+00 271 1.3083000000e+00 2.0730000000e+00 272 1.2733000000e+00 2.0730000000e+00 273 1.2383000000e+00 2.0730000000e+00 274 1.2033000000e+00 2.0730000000e+00 275 1.1683000000e+00 2.0730000000e+00 276 1.1333000000e+00 2.0730000000e+00 277 1.0983000000e+00 2.0730000000e+00 278 1.0633000000e+00 2.0730000000e+00 279 1.0283000000e+00 2.0730000000e+00 280 9.9333000000e-01 2.0730000000e+00 281 9.5833000000e-01 2.0730000000e+00 282 9.2333000000e-01 2.0730000000e+00 283 8.8833000000e-01 2.0730000000e+00 284 8.5333000000e-01 2.0730000000e+00 285 8.1833000000e-01 2.0730000000e+00 286 7.8333000000e-01 2.0730000000e+00 287 7.4833000000e-01 2.0730000000e+00 288 7.1333000000e-01 2.0730000000e+00 289 6.7833000000e-01 2.0730000000e+00 290 6.4333000000e-01 2.0730000000e+00 291 6.0834000000e-01 2.0730000000e+00 292 5.7334000000e-01 2.0730000000e+00 293 5.3834000000e-01 2.0730000000e+00 294 5.0334000000e-01 2.0730000000e+00 295 4.6834000000e-01 2.0730000000e+00 296 4.3334000000e-01 2.0730000000e+00 297 3.9834000000e-01 2.0730000000e+00 298 3.6334000000e-01 2.0730000000e+00 299 3.2834000000e-01 2.0730000000e+00 300 2.9334000000e-01 2.0730000000e+00 301 2.5834000000e-01 2.0730000000e+00 302 2.2334000000e-01 2.0730000000e+00 303 1.8834000000e-01 2.0730000000e+00 304 1.5334000000e-01 2.0730000000e+00 305 1.1834000000e-01 2.0730000000e+00 306 8.3336000000e-02 2.0730000000e+00 307 4.8336000000e-02 2.0730000000e+00 308 1.3336000000e-02 2.0730000000e+00 309 -2.1664000000e-02 2.0730000000e+00 310 -5.6664000000e-02 2.0730000000e+00 311 -9.1664000000e-02 2.0730000000e+00 312 -1.2666000000e-01 2.0730000000e+00 313 -1.6166000000e-01 2.0730000000e+00 314 -1.9666000000e-01 2.0730000000e+00 315 -2.3166000000e-01 2.0730000000e+00 316 -2.6666000000e-01 2.0730000000e+00 317 -3.0166000000e-01 2.0730000000e+00 318 -3.3666000000e-01 2.0730000000e+00 319 -3.7166000000e-01 2.0730000000e+00 320 -4.0666000000e-01 2.0730000000e+00 321 -4.4166000000e-01 2.0730000000e+00 322 -4.7666000000e-01 2.0730000000e+00 323 -5.1166000000e-01 2.0730000000e+00 324 -5.4666000000e-01 2.0730000000e+00 325 -5.8166000000e-01 2.0730000000e+00 326 -6.1666000000e-01 2.0730000000e+00 327 -6.5166000000e-01 2.0730000000e+00 328 -6.8666000000e-01 2.0730000000e+00 329 -7.2166000000e-01 2.0730000000e+00 330 -7.5666000000e-01 2.0730000000e+00 331 -7.9166000000e-01 2.0730000000e+00 332 -8.2666000000e-01 2.0730000000e+00 333 -8.6166000000e-01 2.0730000000e+00 334 -8.9666000000e-01 2.0730000000e+00 335 -9.3166000000e-01 2.0730000000e+00 336 -9.6666000000e-01 2.0730000000e+00 337 -1.0017000000e+00 2.0730000000e+00 338 -1.0367000000e+00 2.0730000000e+00 339 -1.0717000000e+00 2.0730000000e+00 340 -1.1067000000e+00 2.0730000000e+00 341 -1.1417000000e+00 2.0730000000e+00 342 -1.1767000000e+00 2.0730000000e+00 343 -1.2117000000e+00 2.0730000000e+00 344 -1.2467000000e+00 2.0730000000e+00 345 -1.2817000000e+00 2.0730000000e+00 346 -1.3167000000e+00 2.0730000000e+00 347 -1.3517000000e+00 2.0730000000e+00 348 -1.3842000000e+00 2.0730000000e+00 349 -1.4167000000e+00 2.0380000000e+00 350 -1.4167000000e+00 2.0030000000e+00 351 -1.4167000000e+00 1.9680000000e+00 352 -1.4167000000e+00 1.9330000000e+00 353 -1.4167000000e+00 1.8980000000e+00 354 -1.4167000000e+00 1.8630000000e+00 355 -1.4167000000e+00 1.8280000000e+00 356 -1.4167000000e+00 1.7930000000e+00 357 -1.4167000000e+00 1.7580000000e+00 358 -1.4167000000e+00 1.7230000000e+00 359 -1.4167000000e+00 1.6880000000e+00 360 -1.4167000000e+00 1.6530000000e+00 361 -1.4167000000e+00 1.6180000000e+00 362 -1.4167000000e+00 1.5830000000e+00 363 -1.4167000000e+00 1.5480000000e+00 364 -1.4167000000e+00 1.5130000000e+00 365 -1.4167000000e+00 1.4780000000e+00 366 -1.4167000000e+00 1.4430000000e+00 367 -1.4167000000e+00 1.4080000000e+00 368 -1.4167000000e+00 1.3730000000e+00 369 -1.4167000000e+00 1.3380000000e+00 370 -1.4167000000e+00 1.3030000000e+00 371 -1.4167000000e+00 1.2680000000e+00 372 -1.4167000000e+00 1.2330000000e+00 373 -1.4167000000e+00 1.1980000000e+00 374 -1.4167000000e+00 1.1630000000e+00 375 -1.4167000000e+00 1.1280000000e+00 376 -1.4167000000e+00 1.0930000000e+00 377 -1.4167000000e+00 1.0580000000e+00 378 -1.4167000000e+00 1.0230000000e+00 379 -1.4167000000e+00 9.8800000000e-01 380 -1.4167000000e+00 9.5300000000e-01 381 -1.4167000000e+00 9.1800000000e-01 382 -1.4167000000e+00 8.8300000000e-01 383 -1.4167000000e+00 8.4800000000e-01 384 -1.4167000000e+00 8.1300000000e-01 385 -1.4167000000e+00 7.7800000000e-01 386 -1.4167000000e+00 7.4300000000e-01 387 -1.4167000000e+00 7.0800000000e-01 388 -1.4167000000e+00 6.7300000000e-01 389 -1.4167000000e+00 6.3800000000e-01 390 -1.4167000000e+00 6.0300000000e-01 391 -1.4167000000e+00 5.6800000000e-01 392 -1.4167000000e+00 5.3300000000e-01 393 -1.4167000000e+00 4.9800000000e-01 394 -1.4167000000e+00 4.6300000000e-01 395 -1.4167000000e+00 4.2800000000e-01 396 -1.4167000000e+00 3.9300000000e-01 397 -1.4167000000e+00 3.5800000000e-01 398 -1.4167000000e+00 3.2300000000e-01 399 -1.4167000000e+00 2.8800000000e-01 400 -1.4167000000e+00 2.5300000000e-01 401 -1.4167000000e+00 2.1800000000e-01 402 -1.4167000000e+00 1.8300000000e-01 403 -1.4167000000e+00 1.4800000000e-01 404 -1.4167000000e+00 1.1300000000e-01 405 -1.4167000000e+00 7.8000000000e-02 406 -1.4167000000e+00 5.2000000000e-02 407 -1.4167000000e+00 2.6000000000e-02 408 4.5682000000e-01 7.1432000000e-02 409 9.4888000000e-01 3.8131000000e-02 410 1.3947000000e-01 5.0119000000e-02 411 1.0493000000e-01 4.5357000000e-02 412 -1.3641000000e+00 2.8405000000e-02 413 -1.3965000000e+00 2.7631000000e-02 414 -8.7380000000e-01 3.0574000000e-02 415 -2.4670000000e-01 2.9431000000e-02 416 -2.7979000000e-01 2.9463000000e-02 417 -1.0834000000e+00 3.2532000000e-02 418 -1.1192000000e+00 3.3911000000e-02 419 -1.3862000000e+00 4.8053000000e-01 420 -1.3863000000e+00 5.1552000000e-01 421 1.7419000000e-01 5.4628000000e-02 422 2.0914000000e-01 5.8724000000e-02 423 -1.3863000000e+00 7.2549000000e-01 424 -1.3863000000e+00 6.9049000000e-01 425 -1.3863000000e+00 7.6049000000e-01 426 7.0500000000e-02 4.0750000000e-02 427 3.6054000000e-02 3.6682000000e-02 428 9.8256000000e-01 3.3813000000e-02 429 4.2160000000e-01 7.0588000000e-02 430 3.8721000000e-01 6.9159000000e-02 431 1.7809000000e+00 2.0427000000e+00 432 1.7459000000e+00 2.0427000000e+00 433 1.7109000000e+00 2.0427000000e+00 434 1.6759000000e+00 2.0427000000e+00 435 1.6409000000e+00 2.0427000000e+00 436 1.6059000000e+00 2.0427000000e+00 437 1.5709000000e+00 2.0427000000e+00 438 1.5359000000e+00 2.0427000000e+00 439 1.5008000000e+00 2.0427000000e+00 440 1.4658000000e+00 2.0427000000e+00 441 1.4308000000e+00 2.0427000000e+00 442 1.3958000000e+00 2.0427000000e+00 443 1.3608000000e+00 2.0427000000e+00 444 1.3258000000e+00 2.0427000000e+00 445 1.2908000000e+00 2.0427000000e+00 446 1.2558000000e+00 2.0427000000e+00 447 1.2208000000e+00 2.0427000000e+00 448 1.1858000000e+00 2.0427000000e+00 449 1.1508000000e+00 2.0427000000e+00 450 1.1158000000e+00 2.0427000000e+00 451 1.0808000000e+00 2.0427000000e+00 452 1.0458000000e+00 2.0427000000e+00 453 1.0108000000e+00 2.0427000000e+00 454 9.7585000000e-01 2.0427000000e+00 455 9.4085000000e-01 2.0427000000e+00 456 9.0585000000e-01 2.0427000000e+00 457 8.7085000000e-01 2.0427000000e+00 458 8.3585000000e-01 2.0427000000e+00 459 8.0085000000e-01 2.0427000000e+00 460 7.6584000000e-01 2.0427000000e+00 461 7.3084000000e-01 2.0427000000e+00 462 6.9584000000e-01 2.0427000000e+00 463 6.6084000000e-01 2.0427000000e+00 464 6.2584000000e-01 2.0427000000e+00 465 5.9084000000e-01 2.0427000000e+00 466 5.5584000000e-01 2.0427000000e+00 467 5.2084000000e-01 2.0427000000e+00 468 4.8584000000e-01 2.0427000000e+00 469 4.5084000000e-01 2.0427000000e+00 470 4.1584000000e-01 2.0427000000e+00 471 3.8084000000e-01 2.0427000000e+00 472 3.4584000000e-01 2.0427000000e+00 473 3.1084000000e-01 2.0427000000e+00 474 2.7584000000e-01 2.0427000000e+00 475 2.4084000000e-01 2.0427000000e+00 476 2.0584000000e-01 2.0427000000e+00 477 1.7084000000e-01 2.0427000000e+00 478 1.3584000000e-01 2.0427000000e+00 479 1.0084000000e-01 2.0427000000e+00 480 6.5839000000e-02 2.0427000000e+00 481 3.0838000000e-02 2.0427000000e+00 482 -4.1615000000e-03 2.0427000000e+00 483 -3.9161000000e-02 2.0427000000e+00 484 -7.4161000000e-02 2.0427000000e+00 485 -1.0916000000e-01 2.0427000000e+00 486 -1.4416000000e-01 2.0427000000e+00 487 -1.7916000000e-01 2.0427000000e+00 488 -2.1416000000e-01 2.0427000000e+00 489 -2.4916000000e-01 2.0427000000e+00 490 -2.8416000000e-01 2.0427000000e+00 491 -3.1916000000e-01 2.0427000000e+00 492 -3.5416000000e-01 2.0427000000e+00 493 -3.8916000000e-01 2.0427000000e+00 494 -4.2416000000e-01 2.0427000000e+00 495 -4.5916000000e-01 2.0427000000e+00 496 -4.9416000000e-01 2.0427000000e+00 497 -5.2916000000e-01 2.0427000000e+00 498 -5.6416000000e-01 2.0427000000e+00 499 -5.9916000000e-01 2.0427000000e+00 500 -6.3416000000e-01 2.0427000000e+00 501 -6.6916000000e-01 2.0427000000e+00 502 -7.0416000000e-01 2.0427000000e+00 503 -7.3917000000e-01 2.0427000000e+00 504 -7.7417000000e-01 2.0426000000e+00 505 -8.0918000000e-01 2.0426000000e+00 506 -8.4419000000e-01 2.0426000000e+00 507 -8.7920000000e-01 2.0425000000e+00 508 -9.1423000000e-01 2.0425000000e+00 509 -9.4927000000e-01 2.0424000000e+00 510 -9.8433000000e-01 2.0423000000e+00 511 -1.0194000000e+00 2.0422000000e+00 512 -1.0545000000e+00 2.0421000000e+00 513 -1.0897000000e+00 2.0419000000e+00 514 -1.1248000000e+00 2.0418000000e+00 515 -1.1601000000e+00 2.0417000000e+00 516 -1.1953000000e+00 2.0416000000e+00 517 -1.2305000000e+00 2.0417000000e+00 518 -1.2658000000e+00 2.0418000000e+00 519 -1.3012000000e+00 2.0421000000e+00 520 -1.3376000000e+00 2.0429000000e+00 521 -1.3790000000e+00 2.0461000000e+00 522 -1.3897000000e+00 2.0106000000e+00 523 -1.3974000000e+00 1.9836000000e+00 524 -1.3917000000e+00 1.9552000000e+00 525 -1.3886000000e+00 1.9206000000e+00 526 -1.3878000000e+00 1.8853000000e+00 527 -1.3868000000e+00 1.8503000000e+00 528 -1.3858000000e+00 1.8151000000e+00 529 -1.3850000000e+00 1.7797000000e+00 530 -1.3844000000e+00 1.7441000000e+00 531 -1.3841000000e+00 1.7084000000e+00 532 -1.3841000000e+00 1.6728000000e+00 533 -1.3843000000e+00 1.6372000000e+00 534 -1.3845000000e+00 1.6018000000e+00 535 -1.3848000000e+00 1.5665000000e+00 536 -1.3851000000e+00 1.5313000000e+00 537 -1.3853000000e+00 1.4961000000e+00 538 -1.3855000000e+00 1.4610000000e+00 539 -1.3857000000e+00 1.4259000000e+00 540 -1.3858000000e+00 1.3908000000e+00 541 -1.3859000000e+00 1.3557000000e+00 542 -1.3860000000e+00 1.3207000000e+00 543 -1.3861000000e+00 1.2856000000e+00 544 -1.3862000000e+00 1.2506000000e+00 545 -1.3862000000e+00 1.2156000000e+00 546 -1.3863000000e+00 1.1806000000e+00 547 -1.3863000000e+00 1.1455000000e+00 548 -1.3559000000e+00 1.1631000000e+00 549 -1.3559000000e+00 1.1281000000e+00 550 -1.3863000000e+00 1.1105000000e+00 551 -1.3863000000e+00 1.0755000000e+00 552 -1.3863000000e+00 1.0405000000e+00 553 -1.3864000000e+00 1.0055000000e+00 554 -1.3560000000e+00 1.0230000000e+00 555 -1.3560000000e+00 9.8803000000e-01 556 -1.3864000000e+00 9.7051000000e-01 557 -1.3257000000e+00 1.0055000000e+00 558 -1.3257000000e+00 9.7054000000e-01 559 -1.2954000000e+00 9.8806000000e-01 560 -1.2954000000e+00 9.5304000000e-01 561 -1.3257000000e+00 9.3553000000e-01 562 -1.2954000000e+00 9.1803000000e-01 563 -1.3257000000e+00 9.0051000000e-01 564 -1.3560000000e+00 9.1801000000e-01 565 -1.3560000000e+00 9.5302000000e-01 566 -1.3864000000e+00 9.3551000000e-01 567 -1.3864000000e+00 9.0050000000e-01 568 -1.3863000000e+00 8.6550000000e-01 569 -1.3863000000e+00 8.3050000000e-01 570 -1.3863000000e+00 7.9549000000e-01 571 -1.3560000000e+00 8.1299000000e-01 572 -1.3560000000e+00 7.7799000000e-01 573 -1.3257000000e+00 7.9548000000e-01 574 -1.3257000000e+00 7.6047000000e-01 575 -1.3560000000e+00 7.4298000000e-01 576 -1.3256000000e+00 7.2546000000e-01 577 -1.3560000000e+00 7.0798000000e-01 578 -1.3560000000e+00 6.7298000000e-01 579 -1.3863000000e+00 6.5549000000e-01 580 -1.3559000000e+00 6.3798000000e-01 581 -1.3256000000e+00 6.5547000000e-01 582 -1.3256000000e+00 6.2048000000e-01 583 -1.3559000000e+00 6.0299000000e-01 584 -1.3863000000e+00 6.2049000000e-01 585 -1.3863000000e+00 5.8550000000e-01 586 -1.3863000000e+00 5.5051000000e-01 587 -1.3559000000e+00 5.3302000000e-01 588 -1.3558000000e+00 4.9804000000e-01 589 -1.3559000000e+00 5.6801000000e-01 590 -1.3255000000e+00 5.5052000000e-01 591 -1.3255000000e+00 5.1555000000e-01 592 -1.3254000000e+00 4.8058000000e-01 593 -1.3558000000e+00 4.6307000000e-01 594 -1.3862000000e+00 4.4554000000e-01 595 -1.3558000000e+00 4.2809000000e-01 596 -1.3862000000e+00 4.1055000000e-01 597 -1.3253000000e+00 4.4562000000e-01 598 -1.2949000000e+00 4.6314000000e-01 599 -1.2950000000e+00 4.9809000000e-01 600 -1.2646000000e+00 4.8064000000e-01 601 -1.2647000000e+00 5.1557000000e-01 602 -1.2342000000e+00 4.9811000000e-01 603 -1.2341000000e+00 4.6321000000e-01 604 -1.2645000000e+00 4.4572000000e-01 605 -1.2949000000e+00 4.2820000000e-01 606 -1.3253000000e+00 4.1067000000e-01 607 -1.2643000000e+00 4.1081000000e-01 608 -1.2340000000e+00 4.2832000000e-01 609 -1.2338000000e+00 3.9345000000e-01 610 -1.2642000000e+00 3.7590000000e-01 611 -1.2336000000e+00 3.5859000000e-01 612 -1.2639000000e+00 3.4098000000e-01 613 -1.2946000000e+00 3.5832000000e-01 614 -1.2947000000e+00 3.9327000000e-01 615 -1.2943000000e+00 3.2336000000e-01 616 -1.3250000000e+00 3.4074000000e-01 617 -1.3248000000e+00 3.0576000000e-01 618 -1.3555000000e+00 3.2316000000e-01 619 -1.3556000000e+00 3.5814000000e-01 620 -1.3251000000e+00 3.7571000000e-01 621 -1.3557000000e+00 3.9312000000e-01 622 -1.3862000000e+00 3.7556000000e-01 623 -1.3861000000e+00 3.4057000000e-01 624 -1.3861000000e+00 3.0558000000e-01 625 -1.3554000000e+00 2.8817000000e-01 626 -1.3860000000e+00 2.7059000000e-01 627 -1.3552000000e+00 2.5319000000e-01 628 -1.3859000000e+00 2.3561000000e-01 629 -1.3551000000e+00 2.1824000000e-01 630 -1.3858000000e+00 2.0066000000e-01 631 -1.3857000000e+00 1.6576000000e-01 632 -1.3549000000e+00 1.8335000000e-01 633 -1.3546000000e+00 1.4862000000e-01 634 -1.3239000000e+00 1.6601000000e-01 635 -1.3241000000e+00 2.0084000000e-01 636 -1.2931000000e+00 1.8334000000e-01 637 -1.2928000000e+00 1.4847000000e-01 638 -1.2620000000e+00 1.6564000000e-01 639 -1.2616000000e+00 1.3054000000e-01 640 -1.2926000000e+00 1.1386000000e-01 641 -1.3235000000e+00 1.3144000000e-01 642 -1.3233000000e+00 9.7488000000e-02 643 -1.2928000000e+00 7.9829000000e-02 644 -1.3233000000e+00 6.4800000000e-02 645 -1.3531000000e+00 8.0789000000e-02 646 -1.3500000000e+00 5.2798000000e-02 647 -1.3265000000e+00 3.0618000000e-02 648 -1.3831000000e+00 5.9382000000e-02 649 -1.3849000000e+00 9.6055000000e-02 650 -1.3541000000e+00 1.1422000000e-01 651 3.5529000000e+00 5.7694000000e-01 652 3.5528000000e+00 6.1203000000e-01 653 3.5528000000e+00 6.4713000000e-01 654 3.5528000000e+00 6.8222000000e-01 655 3.5528000000e+00 7.1729000000e-01 656 3.5528000000e+00 7.5234000000e-01 657 3.5529000000e+00 7.8739000000e-01 658 3.5529000000e+00 8.2242000000e-01 659 3.5529000000e+00 8.5745000000e-01 660 3.5530000000e+00 8.9247000000e-01 661 3.5530000000e+00 9.2748000000e-01 662 3.5530000000e+00 9.6250000000e-01 663 3.5530000000e+00 9.9750000000e-01 664 3.5530000000e+00 1.0325000000e+00 665 3.5530000000e+00 1.0675000000e+00 666 3.5530000000e+00 1.1025000000e+00 667 3.5530000000e+00 1.1375000000e+00 668 3.5530000000e+00 1.1725000000e+00 669 3.5530000000e+00 1.2075000000e+00 670 3.5530000000e+00 1.2425000000e+00 671 3.5530000000e+00 1.2775000000e+00 672 3.5530000000e+00 1.3125000000e+00 673 3.5530000000e+00 1.3475000000e+00 674 3.5530000000e+00 1.3825000000e+00 675 3.5529000000e+00 1.4176000000e+00 676 3.5529000000e+00 1.4526000000e+00 677 3.5529000000e+00 1.4876000000e+00 678 3.5528000000e+00 1.5227000000e+00 679 3.5528000000e+00 1.5577000000e+00 680 3.5527000000e+00 1.5928000000e+00 681 3.5526000000e+00 1.6279000000e+00 682 3.5525000000e+00 1.6630000000e+00 683 3.5524000000e+00 1.6981000000e+00 684 3.5522000000e+00 1.7333000000e+00 685 3.5520000000e+00 1.7685000000e+00 686 3.5518000000e+00 1.8037000000e+00 687 3.5516000000e+00 1.8390000000e+00 688 3.5513000000e+00 1.8744000000e+00 689 3.5511000000e+00 1.9099000000e+00 690 3.5510000000e+00 1.9454000000e+00 691 3.5513000000e+00 1.9814000000e+00 692 3.5539000000e+00 2.0202000000e+00 693 3.5487000000e+00 2.0544000000e+00 694 3.5097000000e+00 2.0403000000e+00 695 3.4681000000e+00 2.0428000000e+00 696 3.4325000000e+00 2.0417000000e+00 697 3.3969000000e+00 2.0409000000e+00 698 3.3612000000e+00 2.0404000000e+00 699 3.3256000000e+00 2.0399000000e+00 700 3.2900000000e+00 2.0396000000e+00 701 3.2543000000e+00 2.0393000000e+00 702 3.2186000000e+00 2.0393000000e+00 703 3.1830000000e+00 2.0396000000e+00 704 3.1475000000e+00 2.0401000000e+00 705 3.1123000000e+00 2.0406000000e+00 706 3.0773000000e+00 2.0409000000e+00 707 3.0422000000e+00 2.0411000000e+00 708 3.0071000000e+00 2.0412000000e+00 709 2.9720000000e+00 2.0413000000e+00 710 2.9369000000e+00 2.0414000000e+00 711 2.9017000000e+00 2.0415000000e+00 712 2.8666000000e+00 2.0416000000e+00 713 2.8315000000e+00 2.0417000000e+00 714 2.7963000000e+00 2.0418000000e+00 715 2.7612000000e+00 2.0420000000e+00 716 2.7261000000e+00 2.0421000000e+00 717 2.6911000000e+00 2.0422000000e+00 718 2.6561000000e+00 2.0424000000e+00 719 2.6210000000e+00 2.0425000000e+00 720 2.5860000000e+00 2.0425000000e+00 721 2.5510000000e+00 2.0426000000e+00 722 2.5160000000e+00 2.0426000000e+00 723 2.4810000000e+00 2.0427000000e+00 724 2.4460000000e+00 2.0427000000e+00 725 2.4110000000e+00 2.0427000000e+00 726 2.3761000000e+00 2.0428000000e+00 727 2.3411000000e+00 2.0428000000e+00 728 2.3061000000e+00 2.0427000000e+00 729 2.2711000000e+00 2.0427000000e+00 730 2.2361000000e+00 2.0427000000e+00 731 2.2011000000e+00 2.0427000000e+00 732 2.1661000000e+00 2.0426000000e+00 733 2.1311000000e+00 2.0426000000e+00 734 2.0960000000e+00 2.0426000000e+00 735 2.0610000000e+00 2.0426000000e+00 736 2.0260000000e+00 2.0426000000e+00 737 1.9910000000e+00 2.0426000000e+00 738 1.9559000000e+00 2.0426000000e+00 739 1.9209000000e+00 2.0426000000e+00 740 1.8859000000e+00 2.0427000000e+00 741 1.8509000000e+00 2.0427000000e+00 742 1.8159000000e+00 2.0427000000e+00 743 1.7985000000e+00 2.0123000000e+00 744 1.7635000000e+00 2.0123000000e+00 745 1.7284000000e+00 2.0123000000e+00 746 1.6934000000e+00 2.0123000000e+00 747 1.6584000000e+00 2.0123000000e+00 748 1.6234000000e+00 2.0123000000e+00 749 1.5884000000e+00 2.0123000000e+00 750 1.5534000000e+00 2.0123000000e+00 751 1.5184000000e+00 2.0123000000e+00 752 1.4834000000e+00 2.0123000000e+00 753 1.4483000000e+00 2.0123000000e+00 754 1.4133000000e+00 2.0123000000e+00 755 1.3783000000e+00 2.0123000000e+00 756 1.3433000000e+00 2.0123000000e+00 757 1.3083000000e+00 2.0123000000e+00 758 1.2733000000e+00 2.0123000000e+00 759 1.2383000000e+00 2.0123000000e+00 760 1.2033000000e+00 2.0123000000e+00 761 1.1683000000e+00 2.0123000000e+00 762 1.1333000000e+00 2.0123000000e+00 763 1.0983000000e+00 2.0123000000e+00 764 1.0634000000e+00 2.0123000000e+00 765 1.0284000000e+00 2.0123000000e+00 766 9.9336000000e-01 2.0123000000e+00 767 9.5836000000e-01 2.0123000000e+00 768 9.2336000000e-01 2.0123000000e+00 769 8.8836000000e-01 2.0123000000e+00 770 8.5336000000e-01 2.0123000000e+00 771 8.1836000000e-01 2.0124000000e+00 772 7.8336000000e-01 2.0124000000e+00 773 7.4835000000e-01 2.0124000000e+00 774 7.1335000000e-01 2.0124000000e+00 775 6.7835000000e-01 2.0124000000e+00 776 6.4335000000e-01 2.0124000000e+00 777 6.0835000000e-01 2.0124000000e+00 778 5.7335000000e-01 2.0124000000e+00 779 5.3835000000e-01 2.0124000000e+00 780 5.0335000000e-01 2.0124000000e+00 781 4.6835000000e-01 2.0124000000e+00 782 4.3335000000e-01 2.0124000000e+00 783 3.9835000000e-01 2.0124000000e+00 784 3.6335000000e-01 2.0124000000e+00 785 3.2835000000e-01 2.0124000000e+00 786 2.9335000000e-01 2.0124000000e+00 787 2.5835000000e-01 2.0124000000e+00 788 2.2335000000e-01 2.0124000000e+00 789 1.8834000000e-01 2.0124000000e+00 790 1.5334000000e-01 2.0124000000e+00 791 1.1834000000e-01 2.0124000000e+00 792 8.3342000000e-02 2.0124000000e+00 793 4.8341000000e-02 2.0124000000e+00 794 1.3341000000e-02 2.0124000000e+00 795 -2.1659000000e-02 2.0124000000e+00 796 -5.6659000000e-02 2.0124000000e+00 797 -9.1659000000e-02 2.0124000000e+00 798 -1.2666000000e-01 2.0124000000e+00 799 -1.6166000000e-01 2.0124000000e+00 800 -1.9666000000e-01 2.0124000000e+00 801 -2.3166000000e-01 2.0124000000e+00 802 -2.6666000000e-01 2.0124000000e+00 803 -3.0166000000e-01 2.0124000000e+00 804 -3.3666000000e-01 2.0124000000e+00 805 -3.7165000000e-01 2.0124000000e+00 806 -4.0665000000e-01 2.0124000000e+00 807 -4.4165000000e-01 2.0124000000e+00 808 -4.7665000000e-01 2.0124000000e+00 809 -5.1165000000e-01 2.0124000000e+00 810 -5.4665000000e-01 2.0124000000e+00 811 -5.8166000000e-01 2.0124000000e+00 812 -6.1666000000e-01 2.0124000000e+00 813 -6.5166000000e-01 2.0124000000e+00 814 -6.8666000000e-01 2.0124000000e+00 815 -7.2167000000e-01 2.0123000000e+00 816 -7.5667000000e-01 2.0123000000e+00 817 -7.9168000000e-01 2.0123000000e+00 818 -8.2670000000e-01 2.0122000000e+00 819 -8.6172000000e-01 2.0121000000e+00 820 -8.9676000000e-01 2.0120000000e+00 821 -9.3183000000e-01 2.0119000000e+00 822 -9.6692000000e-01 2.0117000000e+00 823 -1.0021000000e+00 2.0115000000e+00 824 -1.0372000000e+00 2.0112000000e+00 825 -1.0725000000e+00 2.0110000000e+00 826 -1.1078000000e+00 2.0107000000e+00 827 -1.1432000000e+00 2.0104000000e+00 828 -1.1787000000e+00 2.0102000000e+00 829 -1.2142000000e+00 2.0102000000e+00 830 -1.2497000000e+00 2.0104000000e+00 831 -1.2850000000e+00 2.0107000000e+00 832 -1.3205000000e+00 2.0112000000e+00 833 -1.3563000000e+00 2.0119000000e+00 834 -1.3721000000e+00 1.9810000000e+00 835 -1.3586000000e+00 1.9451000000e+00 836 -1.3601000000e+00 1.9070000000e+00 837 -1.3581000000e+00 1.8727000000e+00 838 -1.3558000000e+00 1.8377000000e+00 839 -1.3539000000e+00 1.8020000000e+00 840 -1.3526000000e+00 1.7658000000e+00 841 -1.3516000000e+00 1.7295000000e+00 842 -1.3513000000e+00 1.6931000000e+00 843 -1.3515000000e+00 1.6568000000e+00 844 -1.3521000000e+00 1.6209000000e+00 845 -1.3527000000e+00 1.5852000000e+00 846 -1.3533000000e+00 1.5498000000e+00 847 -1.3537000000e+00 1.5144000000e+00 848 -1.3541000000e+00 1.4791000000e+00 849 -1.3545000000e+00 1.4438000000e+00 850 -1.3548000000e+00 1.4086000000e+00 851 -1.3236000000e+00 1.4266000000e+00 852 -1.3241000000e+00 1.3913000000e+00 853 -1.3551000000e+00 1.3735000000e+00 854 -1.3244000000e+00 1.3561000000e+00 855 -1.3553000000e+00 1.3384000000e+00 856 -1.3554000000e+00 1.3033000000e+00 857 -1.3556000000e+00 1.2682000000e+00 858 -1.3557000000e+00 1.2332000000e+00 859 -1.3558000000e+00 1.1981000000e+00 860 -1.3254000000e+00 1.1807000000e+00 861 -1.3255000000e+00 1.1456000000e+00 862 -1.3256000000e+00 1.1106000000e+00 863 -1.3560000000e+00 1.0931000000e+00 864 -1.3560000000e+00 1.0580000000e+00 865 -1.3257000000e+00 1.0406000000e+00 866 -1.2954000000e+00 1.0231000000e+00 867 -1.2651000000e+00 1.0056000000e+00 868 -1.2651000000e+00 9.7057000000e-01 869 -1.2348000000e+00 9.8809000000e-01 870 -1.2348000000e+00 9.5306000000e-01 871 -1.2045000000e+00 9.7059000000e-01 872 -1.2045000000e+00 9.3555000000e-01 873 -1.2348000000e+00 9.1803000000e-01 874 -1.2044000000e+00 9.0051000000e-01 875 -1.2347000000e+00 8.8300000000e-01 876 -1.2044000000e+00 8.6547000000e-01 877 -1.2347000000e+00 8.4797000000e-01 878 -1.2044000000e+00 8.3042000000e-01 879 -1.1740000000e+00 8.4791000000e-01 880 -1.1740000000e+00 8.1285000000e-01 881 -1.2043000000e+00 7.9537000000e-01 882 -1.2347000000e+00 8.1293000000e-01 883 -1.2346000000e+00 7.7790000000e-01 884 -1.1437000000e+00 8.3033000000e-01 885 -1.1436000000e+00 7.9524000000e-01 886 -1.1437000000e+00 8.6541000000e-01 887 -1.1134000000e+00 8.4782000000e-01 888 -1.1133000000e+00 8.1272000000e-01 889 -1.1132000000e+00 7.7760000000e-01 890 -1.1435000000e+00 7.6015000000e-01 891 -1.1739000000e+00 7.7778000000e-01 892 -1.2042000000e+00 7.6032000000e-01 893 -1.1738000000e+00 7.4272000000e-01 894 -1.1434000000e+00 7.2506000000e-01 895 -1.1738000000e+00 7.0767000000e-01 896 -1.2042000000e+00 7.2529000000e-01 897 -1.1434000000e+00 6.9000000000e-01 898 -1.1130000000e+00 7.0734000000e-01 899 -1.1130000000e+00 6.7225000000e-01 900 -1.1433000000e+00 6.5499000000e-01 901 -1.0825000000e+00 6.8950000000e-01 902 -1.0826000000e+00 6.5437000000e-01 903 -1.0519000000e+00 6.7141000000e-01 904 -1.0523000000e+00 6.3625000000e-01 905 -1.0828000000e+00 6.1952000000e-01 906 -1.1130000000e+00 6.3728000000e-01 907 -1.1433000000e+00 6.2006000000e-01 908 -1.1737000000e+00 6.3767000000e-01 909 -1.1737000000e+00 6.7265000000e-01 910 -1.2041000000e+00 6.9026000000e-01 911 -1.2345000000e+00 7.0785000000e-01 912 -1.2346000000e+00 7.4287000000e-01 913 -1.2650000000e+00 7.6042000000e-01 914 -1.2649000000e+00 7.2541000000e-01 915 -1.2953000000e+00 7.4294000000e-01 916 -1.2953000000e+00 7.7796000000e-01 917 -1.2650000000e+00 7.9544000000e-01 918 -1.2650000000e+00 8.3047000000e-01 919 -1.2651000000e+00 8.6549000000e-01 920 -1.2651000000e+00 9.0052000000e-01 921 -1.2954000000e+00 8.8301000000e-01 922 -1.2651000000e+00 9.3554000000e-01 923 3.5530000000e+00 2.6265000000e-01 924 3.5532000000e+00 2.9775000000e-01 925 3.5534000000e+00 3.3273000000e-01 926 3.5536000000e+00 3.6760000000e-01 927 3.5536000000e+00 4.0239000000e-01 928 3.5536000000e+00 4.3717000000e-01 929 3.5534000000e+00 4.7199000000e-01 930 3.5532000000e+00 5.0689000000e-01 931 3.5530000000e+00 5.4188000000e-01 932 3.5225000000e+00 5.5875000000e-01 933 3.5223000000e+00 5.9394000000e-01 934 3.5222000000e+00 6.2915000000e-01 935 3.5222000000e+00 6.6435000000e-01 936 3.5222000000e+00 6.9951000000e-01 937 3.5223000000e+00 7.3464000000e-01 938 3.5223000000e+00 7.6973000000e-01 939 3.5224000000e+00 8.0481000000e-01 940 3.5225000000e+00 8.3987000000e-01 941 3.5225000000e+00 8.7492000000e-01 942 3.5226000000e+00 9.0995000000e-01 943 3.5226000000e+00 9.4498000000e-01 944 3.5227000000e+00 9.8000000000e-01 945 3.5227000000e+00 1.0150000000e+00 946 3.5227000000e+00 1.0500000000e+00 947 3.5227000000e+00 1.0850000000e+00 948 3.5227000000e+00 1.1200000000e+00 949 3.5227000000e+00 1.1550000000e+00 950 3.5227000000e+00 1.1900000000e+00 951 3.5227000000e+00 1.2250000000e+00 952 3.5227000000e+00 1.2600000000e+00 953 3.5227000000e+00 1.2950000000e+00 954 3.5226000000e+00 1.3301000000e+00 955 3.5226000000e+00 1.3651000000e+00 956 3.5226000000e+00 1.4001000000e+00 957 3.5225000000e+00 1.4352000000e+00 958 3.5224000000e+00 1.4702000000e+00 959 3.5224000000e+00 1.5053000000e+00 960 3.5223000000e+00 1.5404000000e+00 961 3.5221000000e+00 1.5755000000e+00 962 3.5220000000e+00 1.6107000000e+00 963 3.5218000000e+00 1.6458000000e+00 964 3.5216000000e+00 1.6811000000e+00 965 3.5213000000e+00 1.7164000000e+00 966 3.5209000000e+00 1.7517000000e+00 967 3.5205000000e+00 1.7872000000e+00 968 3.5201000000e+00 1.8228000000e+00 969 3.5196000000e+00 1.8584000000e+00 970 3.5191000000e+00 1.8942000000e+00 971 3.5185000000e+00 1.9302000000e+00 972 3.5182000000e+00 1.9662000000e+00 973 3.5178000000e+00 2.0020000000e+00 974 3.4877000000e+00 2.0168000000e+00 975 3.4572000000e+00 2.0119000000e+00 976 3.4212000000e+00 2.0089000000e+00 977 3.3845000000e+00 2.0082000000e+00 978 3.3485000000e+00 2.0073000000e+00 979 3.3123000000e+00 2.0065000000e+00 980 3.2761000000e+00 2.0058000000e+00 981 3.2396000000e+00 2.0053000000e+00 982 3.2030000000e+00 2.0056000000e+00 983 3.1669000000e+00 2.0067000000e+00 984 3.1314000000e+00 2.0079000000e+00 985 3.0962000000e+00 2.0087000000e+00 986 3.0612000000e+00 2.0091000000e+00 987 3.0260000000e+00 2.0093000000e+00 988 2.9908000000e+00 2.0095000000e+00 989 2.9556000000e+00 2.0097000000e+00 990 2.9203000000e+00 2.0098000000e+00 991 2.8850000000e+00 2.0100000000e+00 992 2.8497000000e+00 2.0102000000e+00 993 2.8145000000e+00 2.0105000000e+00 994 2.7792000000e+00 2.0108000000e+00 995 2.7440000000e+00 2.0111000000e+00 996 2.7089000000e+00 2.0114000000e+00 997 2.6738000000e+00 2.0116000000e+00 998 2.6388000000e+00 2.0118000000e+00 999 2.6038000000e+00 2.0120000000e+00 1000 2.5688000000e+00 2.0121000000e+00 1001 2.5337000000e+00 2.0122000000e+00 1002 2.4987000000e+00 2.0123000000e+00 1003 2.4637000000e+00 2.0124000000e+00 1004 2.4287000000e+00 2.0124000000e+00 1005 2.3938000000e+00 2.0125000000e+00 1006 2.3588000000e+00 2.0125000000e+00 1007 2.3239000000e+00 2.0125000000e+00 1008 2.2889000000e+00 2.0125000000e+00 1009 2.2539000000e+00 2.0124000000e+00 1010 2.2189000000e+00 2.0124000000e+00 1011 2.1839000000e+00 2.0123000000e+00 1012 2.1488000000e+00 2.0123000000e+00 1013 2.1138000000e+00 2.0122000000e+00 1014 2.1316000000e+00 1.9818000000e+00 1015 2.0965000000e+00 1.9818000000e+00 1016 2.0787000000e+00 2.0122000000e+00 1017 2.0437000000e+00 2.0122000000e+00 1018 2.0086000000e+00 2.0122000000e+00 1019 1.9736000000e+00 2.0123000000e+00 1020 1.9385000000e+00 2.0123000000e+00 1021 1.9035000000e+00 2.0123000000e+00 1022 1.8685000000e+00 2.0123000000e+00 1023 1.8335000000e+00 2.0123000000e+00 1024 1.8161000000e+00 1.9820000000e+00 1025 1.7810000000e+00 1.9820000000e+00 1026 1.7460000000e+00 1.9820000000e+00 1027 1.7110000000e+00 1.9820000000e+00 1028 1.6760000000e+00 1.9820000000e+00 1029 1.6409000000e+00 1.9820000000e+00 1030 1.6059000000e+00 1.9820000000e+00 1031 1.5709000000e+00 1.9820000000e+00 1032 1.5359000000e+00 1.9820000000e+00 1033 1.5009000000e+00 1.9820000000e+00 1034 1.4659000000e+00 1.9820000000e+00 1035 1.4309000000e+00 1.9820000000e+00 1036 1.3958000000e+00 1.9820000000e+00 1037 1.3608000000e+00 1.9820000000e+00 1038 1.3258000000e+00 1.9820000000e+00 1039 1.2908000000e+00 1.9820000000e+00 1040 1.2558000000e+00 1.9820000000e+00 1041 1.2208000000e+00 1.9820000000e+00 1042 1.1858000000e+00 1.9820000000e+00 1043 1.1508000000e+00 1.9820000000e+00 1044 1.1159000000e+00 1.9820000000e+00 1045 1.0809000000e+00 1.9820000000e+00 1046 1.0459000000e+00 1.9820000000e+00 1047 1.0109000000e+00 1.9820000000e+00 1048 9.7587000000e-01 1.9820000000e+00 1049 9.4087000000e-01 1.9820000000e+00 1050 9.0587000000e-01 1.9820000000e+00 1051 8.7087000000e-01 1.9820000000e+00 1052 8.3587000000e-01 1.9820000000e+00 1053 8.0087000000e-01 1.9820000000e+00 1054 7.6587000000e-01 1.9820000000e+00 1055 7.3087000000e-01 1.9820000000e+00 1056 6.9586000000e-01 1.9820000000e+00 1057 6.6086000000e-01 1.9820000000e+00 1058 6.2586000000e-01 1.9820000000e+00 1059 5.9086000000e-01 1.9821000000e+00 1060 5.5586000000e-01 1.9821000000e+00 1061 5.2086000000e-01 1.9821000000e+00 1062 4.8586000000e-01 1.9821000000e+00 1063 4.5086000000e-01 1.9821000000e+00 1064 4.1586000000e-01 1.9821000000e+00 1065 3.8086000000e-01 1.9821000000e+00 1066 3.4586000000e-01 1.9821000000e+00 1067 3.1086000000e-01 1.9821000000e+00 1068 2.7586000000e-01 1.9821000000e+00 1069 2.4085000000e-01 1.9821000000e+00 1070 2.0585000000e-01 1.9821000000e+00 1071 1.7085000000e-01 1.9821000000e+00 1072 1.3585000000e-01 1.9821000000e+00 1073 1.0085000000e-01 1.9821000000e+00 1074 6.5844000000e-02 1.9821000000e+00 1075 3.0843000000e-02 1.9821000000e+00 1076 -4.1569000000e-03 1.9821000000e+00 1077 -3.9157000000e-02 1.9821000000e+00 1078 -7.4157000000e-02 1.9821000000e+00 1079 -1.0916000000e-01 1.9821000000e+00 1080 -1.4416000000e-01 1.9821000000e+00 1081 -1.7916000000e-01 1.9821000000e+00 1082 -2.1415000000e-01 1.9821000000e+00 1083 -2.4915000000e-01 1.9821000000e+00 1084 -2.8415000000e-01 1.9821000000e+00 1085 -3.1915000000e-01 1.9821000000e+00 1086 -3.5415000000e-01 1.9821000000e+00 1087 -3.8915000000e-01 1.9821000000e+00 1088 -4.2415000000e-01 1.9821000000e+00 1089 -4.5915000000e-01 1.9821000000e+00 1090 -4.9415000000e-01 1.9821000000e+00 1091 -5.2915000000e-01 1.9821000000e+00 1092 -5.6415000000e-01 1.9821000000e+00 1093 -5.9915000000e-01 1.9821000000e+00 1094 -6.3415000000e-01 1.9821000000e+00 1095 -6.6916000000e-01 1.9820000000e+00 1096 -7.0416000000e-01 1.9820000000e+00 1097 -7.3917000000e-01 1.9820000000e+00 1098 -7.7418000000e-01 1.9819000000e+00 1099 -8.0920000000e-01 1.9819000000e+00 1100 -8.4423000000e-01 1.9818000000e+00 1101 -8.7928000000e-01 1.9816000000e+00 1102 -9.1435000000e-01 1.9815000000e+00 1103 -9.4946000000e-01 1.9812000000e+00 1104 -9.8462000000e-01 1.9809000000e+00 1105 -1.0198000000e+00 1.9805000000e+00 1106 -1.0552000000e+00 1.9801000000e+00 1107 -1.0906000000e+00 1.9797000000e+00 1108 -1.1262000000e+00 1.9792000000e+00 1109 -1.1619000000e+00 1.9788000000e+00 1110 -1.1976000000e+00 1.9786000000e+00 1111 -1.2334000000e+00 1.9786000000e+00 1112 -1.2690000000e+00 1.9791000000e+00 1113 -1.3041000000e+00 1.9797000000e+00 1114 -1.3390000000e+00 1.9797000000e+00 1115 -1.3225000000e+00 1.9493000000e+00 1116 -1.3363000000e+00 1.9232000000e+00 1117 -1.3315000000e+00 1.8949000000e+00 1118 -1.3267000000e+00 1.8609000000e+00 1119 -1.3234000000e+00 1.8250000000e+00 1120 -1.3211000000e+00 1.7884000000e+00 1121 -1.3193000000e+00 1.7514000000e+00 1122 -1.3182000000e+00 1.7141000000e+00 1123 -1.3182000000e+00 1.6768000000e+00 1124 -1.3192000000e+00 1.6401000000e+00 1125 -1.3204000000e+00 1.6040000000e+00 1126 -1.3213000000e+00 1.5683000000e+00 1127 -1.3220000000e+00 1.5328000000e+00 1128 -1.3226000000e+00 1.4973000000e+00 1129 -1.3232000000e+00 1.4619000000e+00 1130 -1.2923000000e+00 1.4446000000e+00 1131 -1.2929000000e+00 1.4092000000e+00 1132 -1.2934000000e+00 1.3740000000e+00 1133 -1.2939000000e+00 1.3387000000e+00 1134 -1.3247000000e+00 1.3210000000e+00 1135 -1.3249000000e+00 1.2859000000e+00 1136 -1.3251000000e+00 1.2508000000e+00 1137 -1.3253000000e+00 1.2157000000e+00 1138 -1.2949000000e+00 1.1983000000e+00 1139 -1.2951000000e+00 1.1632000000e+00 1140 -1.2952000000e+00 1.1282000000e+00 1141 -1.2953000000e+00 1.0931000000e+00 1142 -1.3257000000e+00 1.0756000000e+00 1143 -1.2953000000e+00 1.0581000000e+00 1144 -1.2650000000e+00 1.0406000000e+00 1145 -1.2347000000e+00 1.0231000000e+00 1146 -1.2044000000e+00 1.0056000000e+00 1147 -1.1741000000e+00 9.8813000000e-01 1148 -1.1741000000e+00 9.5308000000e-01 1149 -1.1438000000e+00 9.7062000000e-01 1150 -1.1438000000e+00 9.3555000000e-01 1151 -1.1741000000e+00 9.1803000000e-01 1152 -1.2942000000e+00 1.3036000000e+00 1153 -1.2945000000e+00 1.2684000000e+00 1154 -1.2947000000e+00 1.2333000000e+00 1155 -1.2643000000e+00 1.2159000000e+00 1156 -1.2646000000e+00 1.1808000000e+00 1157 -1.2647000000e+00 1.1457000000e+00 1158 -1.2649000000e+00 1.1107000000e+00 1159 -1.2650000000e+00 1.0756000000e+00 1160 1.4147000000e+00 3.0942000000e-02 1161 1.4500000000e+00 3.0943000000e-02 1162 1.4853000000e+00 3.0893000000e-02 1163 1.5205000000e+00 3.0808000000e-02 1164 -1.1741000000e+00 1.0232000000e+00 1165 -1.1438000000e+00 1.0057000000e+00 1166 -1.1135000000e+00 9.8816000000e-01 1167 -1.1135000000e+00 9.5308000000e-01 1168 -1.1135000000e+00 9.1800000000e-01 1169 -1.1438000000e+00 9.0048000000e-01 1170 -1.1741000000e+00 8.8297000000e-01 1171 -8.3884000000e-01 3.0505000000e-02 1172 -8.0387000000e-01 3.0450000000e-02 1173 -7.6891000000e-01 3.0412000000e-02 1174 1.4670000000e+00 6.1888000000e-02 1175 1.5025000000e+00 6.1734000000e-02 1176 1.4843000000e+00 9.2812000000e-02 1177 1.5378000000e+00 6.1533000000e-02 1178 1.5199000000e+00 9.2499000000e-02 1179 1.5554000000e+00 9.2167000000e-02 1180 1.5376000000e+00 1.2316000000e-01 1181 1.5731000000e+00 1.2271000000e-01 1182 1.5907000000e+00 9.1844000000e-02 1183 1.5731000000e+00 6.1320000000e-02 1184 1.6083000000e+00 6.1107000000e-02 1185 1.5908000000e+00 3.0601000000e-02 1186 1.5556000000e+00 3.0707000000e-02 1187 1.6259000000e+00 3.0496000000e-02 1188 1.6609000000e+00 3.0391000000e-02 1189 1.6960000000e+00 3.0287000000e-02 1190 1.7310000000e+00 3.0186000000e-02 1191 1.7660000000e+00 3.0092000000e-02 1192 1.8009000000e+00 3.0011000000e-02 1193 1.8359000000e+00 2.9949000000e-02 1194 1.8708000000e+00 2.9912000000e-02 1195 1.9057000000e+00 2.9904000000e-02 1196 1.9407000000e+00 2.9923000000e-02 1197 1.9756000000e+00 2.9964000000e-02 1198 2.0106000000e+00 3.0018000000e-02 1199 2.0456000000e+00 3.0074000000e-02 1200 2.0806000000e+00 3.0125000000e-02 1201 2.1156000000e+00 3.0167000000e-02 1202 2.1506000000e+00 3.0200000000e-02 1203 2.1857000000e+00 3.0224000000e-02 1204 2.2207000000e+00 3.0243000000e-02 1205 2.2557000000e+00 3.0256000000e-02 1206 2.2907000000e+00 3.0266000000e-02 1207 2.3258000000e+00 3.0274000000e-02 1208 2.3608000000e+00 3.0281000000e-02 1209 2.3958000000e+00 3.0286000000e-02 1210 2.4308000000e+00 3.0290000000e-02 1211 2.4658000000e+00 3.0294000000e-02 1212 2.5008000000e+00 3.0297000000e-02 1213 2.5358000000e+00 3.0300000000e-02 1214 2.5708000000e+00 3.0303000000e-02 1215 2.6058000000e+00 3.0306000000e-02 1216 2.6408000000e+00 3.0309000000e-02 1217 2.6758000000e+00 3.0313000000e-02 1218 2.7108000000e+00 3.0318000000e-02 1219 2.7458000000e+00 3.0323000000e-02 1220 2.7809000000e+00 3.0329000000e-02 1221 2.8159000000e+00 3.0335000000e-02 1222 2.8509000000e+00 3.0342000000e-02 1223 2.8859000000e+00 3.0350000000e-02 1224 2.9209000000e+00 3.0358000000e-02 1225 2.9559000000e+00 3.0367000000e-02 1226 2.9910000000e+00 3.0374000000e-02 1227 3.0260000000e+00 3.0382000000e-02 1228 3.0610000000e+00 3.0392000000e-02 1229 3.0960000000e+00 3.0408000000e-02 1230 3.1310000000e+00 3.0437000000e-02 1231 3.1660000000e+00 3.0492000000e-02 1232 3.2011000000e+00 3.0577000000e-02 1233 3.2362000000e+00 3.0654000000e-02 1234 3.2713000000e+00 3.0604000000e-02 1235 3.3063000000e+00 3.0357000000e-02 1236 3.3411000000e+00 3.0068000000e-02 1237 3.3756000000e+00 2.9965000000e-02 1238 3.4102000000e+00 3.0190000000e-02 1239 3.4451000000e+00 3.0613000000e-02 1240 3.4802000000e+00 3.0719000000e-02 1241 3.5146000000e+00 2.9544000000e-02 1242 3.5511000000e+00 2.5456000000e-02 1243 3.5613000000e+00 5.4739000000e-02 1244 3.5555000000e+00 8.4325000000e-02 1245 3.5526000000e+00 1.2007000000e-01 1246 3.5526000000e+00 1.5636000000e-01 1247 3.5527000000e+00 1.9198000000e-01 1248 3.5528000000e+00 2.2740000000e-01 1249 3.5224000000e+00 2.4520000000e-01 1250 3.5229000000e+00 2.8053000000e-01 1251 3.5233000000e+00 3.1559000000e-01 1252 3.5237000000e+00 3.5040000000e-01 1253 3.5240000000e+00 3.8503000000e-01 1254 3.5240000000e+00 4.1955000000e-01 1255 3.5237000000e+00 4.5409000000e-01 1256 3.5233000000e+00 4.8877000000e-01 1257 3.5229000000e+00 5.2367000000e-01 1258 3.4922000000e+00 5.4037000000e-01 1259 3.4918000000e+00 5.7567000000e-01 1260 3.4916000000e+00 6.1104000000e-01 1261 3.4915000000e+00 6.4639000000e-01 1262 3.4916000000e+00 6.8166000000e-01 1263 3.4916000000e+00 7.1687000000e-01 1264 3.4918000000e+00 7.5203000000e-01 1265 3.4919000000e+00 7.8715000000e-01 1266 3.4920000000e+00 8.2225000000e-01 1267 3.4921000000e+00 8.5733000000e-01 1268 3.4922000000e+00 8.9239000000e-01 1269 3.4922000000e+00 9.2744000000e-01 1270 3.4923000000e+00 9.6248000000e-01 1271 3.4923000000e+00 9.9750000000e-01 1272 3.4924000000e+00 1.0325000000e+00 1273 3.4924000000e+00 1.0675000000e+00 1274 3.4924000000e+00 1.1025000000e+00 1275 3.4924000000e+00 1.1375000000e+00 1276 3.4924000000e+00 1.1725000000e+00 1277 3.4924000000e+00 1.2075000000e+00 1278 3.4924000000e+00 1.2425000000e+00 1279 3.4923000000e+00 1.2776000000e+00 1280 3.4923000000e+00 1.3126000000e+00 1281 3.4922000000e+00 1.3476000000e+00 1282 3.4922000000e+00 1.3827000000e+00 1283 3.4921000000e+00 1.4177000000e+00 1284 3.4920000000e+00 1.4528000000e+00 1285 3.4919000000e+00 1.4879000000e+00 1286 3.4918000000e+00 1.5230000000e+00 1287 3.4916000000e+00 1.5582000000e+00 1288 3.4914000000e+00 1.5934000000e+00 1289 3.4912000000e+00 1.6286000000e+00 1290 3.4908000000e+00 1.6639000000e+00 1291 3.4905000000e+00 1.6993000000e+00 1292 3.4900000000e+00 1.7348000000e+00 1293 3.4894000000e+00 1.7704000000e+00 1294 3.4888000000e+00 1.8062000000e+00 1295 3.4880000000e+00 1.8421000000e+00 1296 3.4873000000e+00 1.8782000000e+00 1297 3.4865000000e+00 1.9144000000e+00 1298 3.4852000000e+00 1.9510000000e+00 1299 3.4857000000e+00 1.9870000000e+00 1300 3.4481000000e+00 1.9742000000e+00 1301 3.4078000000e+00 1.9768000000e+00 1302 3.3717000000e+00 1.9752000000e+00 1303 3.3352000000e+00 1.9737000000e+00 1304 3.2986000000e+00 1.9726000000e+00 1305 3.2617000000e+00 1.9715000000e+00 1306 3.2239000000e+00 1.9706000000e+00 1307 3.1862000000e+00 1.9721000000e+00 1308 3.1501000000e+00 1.9750000000e+00 1309 3.1151000000e+00 1.9765000000e+00 1310 3.0802000000e+00 1.9771000000e+00 1311 3.0451000000e+00 1.9774000000e+00 1312 3.0099000000e+00 1.9776000000e+00 1313 2.9745000000e+00 1.9779000000e+00 1314 2.9391000000e+00 1.9781000000e+00 1315 2.9037000000e+00 1.9783000000e+00 1316 2.8682000000e+00 1.9786000000e+00 1317 2.8328000000e+00 1.9789000000e+00 1318 2.7973000000e+00 1.9793000000e+00 1319 2.7620000000e+00 1.9798000000e+00 1320 2.7267000000e+00 1.9803000000e+00 1321 2.6915000000e+00 1.9807000000e+00 1322 2.6565000000e+00 1.9811000000e+00 1323 2.6215000000e+00 1.9814000000e+00 1324 2.5865000000e+00 1.9816000000e+00 1325 2.5515000000e+00 1.9818000000e+00 1326 2.5165000000e+00 1.9819000000e+00 1327 2.4814000000e+00 1.9820000000e+00 1328 2.4464000000e+00 1.9821000000e+00 1329 2.4114000000e+00 1.9822000000e+00 1330 2.3765000000e+00 1.9823000000e+00 1331 2.3416000000e+00 1.9823000000e+00 1332 2.3067000000e+00 1.9823000000e+00 1333 2.2718000000e+00 1.9822000000e+00 1334 2.2368000000e+00 1.9821000000e+00 1335 2.2017000000e+00 1.9820000000e+00 1336 2.1667000000e+00 1.9819000000e+00 1337 2.1494000000e+00 1.9515000000e+00 1338 2.1143000000e+00 1.9514000000e+00 1339 2.0791000000e+00 1.9514000000e+00 1340 2.0614000000e+00 1.9818000000e+00 1341 2.0263000000e+00 1.9818000000e+00 1342 1.9912000000e+00 1.9819000000e+00 1343 1.9562000000e+00 1.9819000000e+00 1344 1.9211000000e+00 1.9819000000e+00 1345 1.8861000000e+00 1.9820000000e+00 1346 1.8511000000e+00 1.9820000000e+00 1347 1.8337000000e+00 1.9517000000e+00 1348 1.7987000000e+00 1.9517000000e+00 1349 1.7636000000e+00 1.9517000000e+00 1350 1.7286000000e+00 1.9517000000e+00 1351 1.6936000000e+00 1.9517000000e+00 1352 1.6585000000e+00 1.9517000000e+00 1353 1.6235000000e+00 1.9517000000e+00 1354 1.5884000000e+00 1.9517000000e+00 1355 1.5534000000e+00 1.9517000000e+00 1356 1.5184000000e+00 1.9517000000e+00 1357 1.4834000000e+00 1.9517000000e+00 1358 1.4484000000e+00 1.9517000000e+00 1359 1.4134000000e+00 1.9517000000e+00 1360 1.3784000000e+00 1.9517000000e+00 1361 1.3433000000e+00 1.9517000000e+00 1362 1.3083000000e+00 1.9517000000e+00 1363 1.2733000000e+00 1.9517000000e+00 1364 1.2383000000e+00 1.9517000000e+00 1365 1.2033000000e+00 1.9517000000e+00 1366 1.1684000000e+00 1.9517000000e+00 1367 1.1334000000e+00 1.9517000000e+00 1368 1.0984000000e+00 1.9517000000e+00 1369 1.0634000000e+00 1.9517000000e+00 1370 1.0284000000e+00 1.9517000000e+00 1371 9.9339000000e-01 1.9517000000e+00 1372 9.5839000000e-01 1.9517000000e+00 1373 9.2339000000e-01 1.9517000000e+00 1374 8.8839000000e-01 1.9517000000e+00 1375 8.5339000000e-01 1.9517000000e+00 1376 8.1839000000e-01 1.9517000000e+00 1377 7.8338000000e-01 1.9517000000e+00 1378 7.4838000000e-01 1.9517000000e+00 1379 7.1338000000e-01 1.9517000000e+00 1380 6.7837000000e-01 1.9517000000e+00 1381 6.4337000000e-01 1.9517000000e+00 1382 6.0837000000e-01 1.9517000000e+00 1383 5.7337000000e-01 1.9517000000e+00 1384 5.3838000000e-01 1.9517000000e+00 1385 5.0338000000e-01 1.9517000000e+00 1386 4.6838000000e-01 1.9517000000e+00 1387 4.3338000000e-01 1.9517000000e+00 1388 3.9838000000e-01 1.9517000000e+00 1389 3.6338000000e-01 1.9517000000e+00 1390 3.2837000000e-01 1.9517000000e+00 1391 2.9337000000e-01 1.9517000000e+00 1392 2.5836000000e-01 1.9517000000e+00 1393 2.2336000000e-01 1.9517000000e+00 1394 1.8836000000e-01 1.9517000000e+00 1395 1.5335000000e-01 1.9517000000e+00 1396 1.1835000000e-01 1.9517000000e+00 1397 8.3348000000e-02 1.9517000000e+00 1398 4.8346000000e-02 1.9517000000e+00 1399 1.3345000000e-02 1.9517000000e+00 1400 -2.1655000000e-02 1.9517000000e+00 1401 -5.6655000000e-02 1.9517000000e+00 1402 -9.1655000000e-02 1.9517000000e+00 1403 -1.2665000000e-01 1.9517000000e+00 1404 -1.6165000000e-01 1.9517000000e+00 1405 -1.9665000000e-01 1.9517000000e+00 1406 -2.3165000000e-01 1.9517000000e+00 1407 -2.6665000000e-01 1.9517000000e+00 1408 -3.0165000000e-01 1.9517000000e+00 1409 -3.3664000000e-01 1.9518000000e+00 1410 -3.7164000000e-01 1.9518000000e+00 1411 -4.0664000000e-01 1.9518000000e+00 1412 -4.4164000000e-01 1.9518000000e+00 1413 -4.7664000000e-01 1.9518000000e+00 1414 -5.1164000000e-01 1.9518000000e+00 1415 -5.4664000000e-01 1.9518000000e+00 1416 -5.8164000000e-01 1.9517000000e+00 1417 -6.1665000000e-01 1.9517000000e+00 1418 -6.5165000000e-01 1.9517000000e+00 1419 -6.8666000000e-01 1.9517000000e+00 1420 -7.2167000000e-01 1.9517000000e+00 1421 -7.5668000000e-01 1.9516000000e+00 1422 -7.9170000000e-01 1.9515000000e+00 1423 -8.2673000000e-01 1.9514000000e+00 1424 -8.6177000000e-01 1.9513000000e+00 1425 -8.9684000000e-01 1.9511000000e+00 1426 -9.3195000000e-01 1.9508000000e+00 1427 -9.6711000000e-01 1.9504000000e+00 1428 -1.0024000000e+00 1.9500000000e+00 1429 -1.0377000000e+00 1.9494000000e+00 1430 -1.0732000000e+00 1.9488000000e+00 1431 -1.1089000000e+00 1.9481000000e+00 1432 -1.1447000000e+00 1.9474000000e+00 1433 -1.1807000000e+00 1.9469000000e+00 1434 -1.2170000000e+00 1.9465000000e+00 1435 -1.2532000000e+00 1.9469000000e+00 1436 -1.2886000000e+00 1.9483000000e+00 1437 -1.3087000000e+00 1.9195000000e+00 1438 -1.2989000000e+00 1.8860000000e+00 1439 -1.2929000000e+00 1.8492000000e+00 1440 -1.2900000000e+00 1.8117000000e+00 1441 -1.2872000000e+00 1.7743000000e+00 1442 -1.2850000000e+00 1.7362000000e+00 1443 -1.2838000000e+00 1.6974000000e+00 1444 -1.2852000000e+00 1.6593000000e+00 1445 -1.2877000000e+00 1.6227000000e+00 1446 -1.2891000000e+00 1.5870000000e+00 1447 -1.2900000000e+00 1.5513000000e+00 1448 -1.2909000000e+00 1.5156000000e+00 1449 -1.2916000000e+00 1.4800000000e+00 1450 -1.2609000000e+00 1.4626000000e+00 1451 -1.2617000000e+00 1.4272000000e+00 1452 -1.2623000000e+00 1.3918000000e+00 1453 -1.2629000000e+00 1.3566000000e+00 1454 -1.2318000000e+00 1.3744000000e+00 1455 -1.2324000000e+00 1.3391000000e+00 1456 -1.2634000000e+00 1.3213000000e+00 1457 2.0278000000e+00 6.0100000000e-02 1458 2.0628000000e+00 6.0212000000e-02 1459 2.0978000000e+00 6.0307000000e-02 1460 2.1329000000e+00 6.0381000000e-02 1461 -1.2554000000e+00 1.6404000000e+00 1462 -1.2572000000e+00 1.6055000000e+00 1463 -1.2580000000e+00 1.5699000000e+00 1464 -1.2590000000e+00 1.5340000000e+00 1465 -1.2599000000e+00 1.4982000000e+00 1466 -1.2292000000e+00 1.4807000000e+00 1467 -1.2303000000e+00 1.4451000000e+00 1468 -1.2311000000e+00 1.4097000000e+00 1469 -1.2007000000e+00 1.3923000000e+00 1470 -1.2014000000e+00 1.3570000000e+00 1471 -1.2020000000e+00 1.3217000000e+00 1472 -1.2329000000e+00 1.3039000000e+00 1473 -1.2637000000e+00 1.2861000000e+00 1474 1.0697000000e+00 3.5895000000e-02 1475 1.1064000000e+00 3.0569000000e-02 1476 1.1391000000e+00 2.7429000000e-02 1477 1.1721000000e+00 2.7376000000e-02 1478 1.2058000000e+00 2.7488000000e-02 1479 1.2395000000e+00 2.8056000000e-02 1480 1.2737000000e+00 2.9263000000e-02 1481 1.3087000000e+00 3.0256000000e-02 1482 1.3441000000e+00 3.0703000000e-02 1483 1.3794000000e+00 3.0882000000e-02 1484 1.3959000000e+00 6.1887000000e-02 1485 1.3602000000e+00 6.1761000000e-02 1486 1.3768000000e+00 9.2798000000e-02 1487 1.4126000000e+00 9.3001000000e-02 1488 1.4315000000e+00 6.1945000000e-02 1489 1.4485000000e+00 9.3023000000e-02 1490 -1.2641000000e+00 1.2510000000e+00 1491 -1.2337000000e+00 1.2335000000e+00 1492 -1.2340000000e+00 1.1984000000e+00 1493 -1.2342000000e+00 1.1633000000e+00 1494 -1.2344000000e+00 1.1282000000e+00 1495 -1.2039000000e+00 1.1458000000e+00 1496 -1.2041000000e+00 1.1108000000e+00 1497 -1.2346000000e+00 1.0932000000e+00 1498 -1.2347000000e+00 1.0582000000e+00 1499 -1.2044000000e+00 1.0407000000e+00 1500 1.9928000000e+00 5.9981000000e-02 1501 2.0100000000e+00 9.0073000000e-02 1502 1.3407000000e+00 9.2971000000e-02 1503 1.3580000000e+00 1.2320000000e-01 1504 1.3933000000e+00 1.2397000000e-01 1505 1.4296000000e+00 1.2440000000e-01 1506 -1.3255000000e+00 5.8549000000e-01 1507 -1.2951000000e+00 5.6800000000e-01 1508 -1.2952000000e+00 6.0297000000e-01 1509 -1.2648000000e+00 5.8546000000e-01 1510 -1.2648000000e+00 6.2042000000e-01 1511 -1.2344000000e+00 6.0290000000e-01 1512 -1.2344000000e+00 5.6795000000e-01 1513 -1.2647000000e+00 5.5051000000e-01 1514 -1.2951000000e+00 5.3304000000e-01 1515 -1.3256000000e+00 6.9046000000e-01 1516 -1.2952000000e+00 6.7294000000e-01 1517 -1.2952000000e+00 6.3795000000e-01 1518 -1.2648000000e+00 6.5540000000e-01 1519 -1.2345000000e+00 6.3786000000e-01 1520 -1.2345000000e+00 6.7284000000e-01 1521 -1.2649000000e+00 6.9040000000e-01 1522 -1.2041000000e+00 6.5527000000e-01 1523 -1.2041000000e+00 6.2031000000e-01 1524 -7.8612000000e-01 6.0847000000e-02 1525 -7.5120000000e-01 6.0790000000e-02 1526 -7.3395000000e-01 3.0386000000e-02 1527 -1.1740000000e+00 1.0582000000e+00 1528 -1.1437000000e+00 1.0407000000e+00 1529 -1.2043000000e+00 1.0757000000e+00 1530 -1.1738000000e+00 1.0933000000e+00 1531 -1.1435000000e+00 1.0758000000e+00 1532 -1.1133000000e+00 1.0583000000e+00 1533 -1.1134000000e+00 1.0232000000e+00 1534 -1.0830000000e+00 1.0408000000e+00 1535 -1.0831000000e+00 1.0057000000e+00 1536 -1.1737000000e+00 6.0275000000e-01 1537 -1.2040000000e+00 5.8537000000e-01 1538 -1.2039000000e+00 5.5046000000e-01 1539 -1.2343000000e+00 5.3303000000e-01 1540 -1.2039000000e+00 5.1556000000e-01 1541 -1.0832000000e+00 9.7062000000e-01 1542 -1.1736000000e+00 5.6785000000e-01 1543 -1.1433000000e+00 5.8519000000e-01 1544 -1.1432000000e+00 5.5036000000e-01 1545 -1.1735000000e+00 5.3298000000e-01 1546 2.4833000000e+00 6.0591000000e-02 1547 2.5183000000e+00 6.0597000000e-02 1548 2.5533000000e+00 6.0603000000e-02 1549 2.5883000000e+00 6.0609000000e-02 1550 2.6233000000e+00 6.0615000000e-02 1551 2.6058000000e+00 9.0917000000e-02 1552 2.6408000000e+00 9.0928000000e-02 1553 2.6583000000e+00 6.0623000000e-02 1554 2.6758000000e+00 9.0940000000e-02 1555 2.6933000000e+00 6.0631000000e-02 1556 2.4483000000e+00 6.0584000000e-02 1557 2.4658000000e+00 9.0881000000e-02 1558 2.5008000000e+00 9.0890000000e-02 1559 2.4832000000e+00 1.2118000000e-01 1560 2.5183000000e+00 1.2119000000e-01 1561 2.5358000000e+00 9.0898000000e-02 1562 -1.1130000000e+00 5.6768000000e-01 1563 -1.1130000000e+00 6.0245000000e-01 1564 -1.0828000000e+00 5.8491000000e-01 1565 -1.0529000000e+00 6.0185000000e-01 1566 -1.0527000000e+00 5.6768000000e-01 1567 -1.0241000000e+00 5.8498000000e-01 1568 -1.0219000000e+00 5.5106000000e-01 1569 -1.0520000000e+00 5.3300000000e-01 1570 -1.0211000000e+00 5.1584000000e-01 1571 -9.8788000000e-01 5.3354000000e-01 1572 -9.9523000000e-01 5.0188000000e-01 1573 -1.0180000000e+00 4.7784000000e-01 1574 -1.0514000000e+00 4.9768000000e-01 1575 -1.0823000000e+00 5.1544000000e-01 1576 -1.0826000000e+00 5.5027000000e-01 1577 -1.1128000000e+00 5.3290000000e-01 1578 -1.0824000000e+00 4.8069000000e-01 1579 -1.1127000000e+00 4.9810000000e-01 1580 -1.1431000000e+00 5.1552000000e-01 1581 -1.1430000000e+00 4.8069000000e-01 1582 -1.1734000000e+00 4.9811000000e-01 1583 -1.2038000000e+00 4.8067000000e-01 1584 -1.1733000000e+00 4.6325000000e-01 1585 -1.1429000000e+00 4.4584000000e-01 1586 -1.1126000000e+00 4.6333000000e-01 1587 -1.0825000000e+00 4.4626000000e-01 1588 -1.1124000000e+00 4.2844000000e-01 1589 -1.0815000000e+00 4.1127000000e-01 1590 -1.1120000000e+00 3.9301000000e-01 1591 -1.1427000000e+00 4.1092000000e-01 1592 -1.1428000000e+00 3.7623000000e-01 1593 -1.1731000000e+00 3.9360000000e-01 1594 -1.1135000000e+00 3.5879000000e-01 1595 -1.1427000000e+00 3.4212000000e-01 1596 -1.1729000000e+00 3.5898000000e-01 1597 -1.1723000000e+00 3.2441000000e-01 1598 -1.2030000000e+00 3.4139000000e-01 1599 -1.2033000000e+00 3.7616000000e-01 1600 -1.2035000000e+00 4.1095000000e-01 1601 -1.1732000000e+00 4.2839000000e-01 1602 -1.2037000000e+00 4.4580000000e-01 1603 1.0143000000e+00 3.0083000000e-02 1604 1.0403000000e+00 2.4993000000e-02 1605 1.0022000000e+00 6.0385000000e-02 1606 9.6955000000e-01 6.5528000000e-02 1607 9.9094000000e-01 9.2055000000e-02 1608 1.0368000000e+00 5.6843000000e-02 1609 1.0661000000e+00 7.0336000000e-02 1610 1.0459000000e+00 9.2211000000e-02 1611 1.0785000000e+00 9.8825000000e-02 1612 1.0565000000e+00 1.2492000000e-01 1613 1.0185000000e+00 1.1833000000e-01 1614 1.0368000000e+00 1.5378000000e-01 1615 1.0699000000e+00 1.5539000000e-01 1616 1.0893000000e+00 1.3093000000e-01 1617 1.1133000000e+00 1.0662000000e-01 1618 1.0999000000e+00 6.7878000000e-02 1619 1.1375000000e+00 8.0663000000e-02 1620 1.1279000000e+00 5.2196000000e-02 1621 1.1565000000e+00 5.4414000000e-02 1622 1.1895000000e+00 5.4910000000e-02 1623 1.1732000000e+00 8.3874000000e-02 1624 1.1539000000e+00 1.1895000000e-01 1625 1.1943000000e+00 1.1255000000e-01 1626 1.1831000000e+00 1.4187000000e-01 1627 1.2186000000e+00 1.4278000000e-01 1628 1.2296000000e+00 1.0607000000e-01 1629 1.2074000000e+00 8.1705000000e-02 1630 1.2220000000e+00 5.4568000000e-02 1631 1.2541000000e+00 5.7005000000e-02 1632 1.2884000000e+00 6.0245000000e-02 1633 1.2651000000e+00 9.1662000000e-02 1634 1.3044000000e+00 9.1943000000e-02 1635 1.3244000000e+00 6.1316000000e-02 1636 1.2870000000e+00 1.1864000000e-01 1637 1.3205000000e+00 1.2680000000e-01 1638 1.3438000000e+00 1.4862000000e-01 1639 1.3729000000e+00 1.5401000000e-01 1640 1.4098000000e+00 1.5641000000e-01 1641 1.4473000000e+00 1.5588000000e-01 1642 1.4659000000e+00 1.2412000000e-01 1643 1.5019000000e+00 1.2364000000e-01 1644 1.5198000000e+00 1.5430000000e-01 1645 1.5554000000e+00 1.5370000000e-01 1646 1.5909000000e+00 1.5318000000e-01 1647 1.6085000000e+00 1.2229000000e-01 1648 1.6263000000e+00 1.5270000000e-01 1649 1.6088000000e+00 1.8364000000e-01 1650 1.5734000000e+00 1.8416000000e-01 1651 1.5913000000e+00 2.1466000000e-01 1652 1.6269000000e+00 2.1418000000e-01 1653 1.6443000000e+00 1.8310000000e-01 1654 1.6616000000e+00 1.5219000000e-01 1655 1.6438000000e+00 1.2188000000e-01 1656 1.6790000000e+00 1.2146000000e-01 1657 1.6612000000e+00 9.1215000000e-02 1658 1.6963000000e+00 9.0897000000e-02 1659 1.6786000000e+00 6.0687000000e-02 1660 1.7136000000e+00 6.0479000000e-02 1661 1.7313000000e+00 9.0581000000e-02 1662 1.7486000000e+00 6.0279000000e-02 1663 1.7663000000e+00 9.0278000000e-02 1664 1.7491000000e+00 1.2059000000e-01 1665 1.7840000000e+00 1.2017000000e-01 1666 1.7669000000e+00 1.5048000000e-01 1667 1.8017000000e+00 1.4994000000e-01 1668 1.8188000000e+00 1.1982000000e-01 1669 1.8012000000e+00 9.0009000000e-02 1670 1.7836000000e+00 6.0096000000e-02 1671 1.8185000000e+00 5.9945000000e-02 1672 1.8534000000e+00 5.9840000000e-02 1673 1.8882000000e+00 5.9793000000e-02 1674 1.9231000000e+00 5.9808000000e-02 1675 1.9579000000e+00 5.9876000000e-02 1676 1.9751000000e+00 8.9881000000e-02 1677 1.9922000000e+00 1.1998000000e-01 1678 2.0271000000e+00 1.2027000000e-01 1679 2.0450000000e+00 9.0263000000e-02 1680 2.0800000000e+00 9.0425000000e-02 1681 2.1151000000e+00 9.0550000000e-02 1682 2.0973000000e+00 1.2072000000e-01 1683 2.1324000000e+00 1.2085000000e-01 1684 2.1502000000e+00 9.0641000000e-02 1685 2.1680000000e+00 6.0435000000e-02 1686 2.1853000000e+00 9.0705000000e-02 1687 2.2030000000e+00 6.0475000000e-02 1688 2.2381000000e+00 6.0505000000e-02 1689 2.2731000000e+00 6.0527000000e-02 1690 2.3082000000e+00 6.0544000000e-02 1691 2.2906000000e+00 9.0810000000e-02 1692 2.3256000000e+00 9.0831000000e-02 1693 2.3432000000e+00 6.0557000000e-02 1694 2.3782000000e+00 6.0568000000e-02 1695 2.4133000000e+00 6.0577000000e-02 1696 2.4307000000e+00 9.0872000000e-02 1697 2.4482000000e+00 1.2117000000e-01 1698 2.4657000000e+00 1.5147000000e-01 1699 2.5007000000e+00 1.5148000000e-01 1700 2.5358000000e+00 1.5149000000e-01 1701 2.5182000000e+00 1.8177000000e-01 1702 2.5532000000e+00 1.8179000000e-01 1703 2.4832000000e+00 1.8176000000e-01 1704 2.5007000000e+00 2.1205000000e-01 1705 2.5357000000e+00 2.1206000000e-01 1706 2.5707000000e+00 2.1209000000e-01 1707 2.5882000000e+00 1.8181000000e-01 1708 2.5708000000e+00 1.5150000000e-01 1709 2.5533000000e+00 1.2120000000e-01 1710 2.5708000000e+00 9.0907000000e-02 1711 2.5883000000e+00 1.2121000000e-01 1712 2.6233000000e+00 1.2123000000e-01 1713 2.6583000000e+00 1.2124000000e-01 1714 2.6933000000e+00 1.2126000000e-01 1715 2.7108000000e+00 9.0955000000e-02 1716 2.7283000000e+00 6.0641000000e-02 1717 2.7634000000e+00 6.0652000000e-02 1718 2.7984000000e+00 6.0665000000e-02 1719 2.8334000000e+00 6.0679000000e-02 1720 2.8684000000e+00 6.0694000000e-02 1721 2.9035000000e+00 6.0711000000e-02 1722 2.9385000000e+00 6.0728000000e-02 1723 2.9736000000e+00 6.0743000000e-02 1724 2.9561000000e+00 9.1110000000e-02 1725 2.9912000000e+00 9.1132000000e-02 1726 3.0086000000e+00 6.0758000000e-02 1727 3.0436000000e+00 6.0773000000e-02 1728 3.0787000000e+00 6.0792000000e-02 1729 3.1137000000e+00 6.0826000000e-02 1730 3.1487000000e+00 6.0898000000e-02 1731 3.1313000000e+00 9.1235000000e-02 1732 3.1663000000e+00 9.1353000000e-02 1733 3.1837000000e+00 6.1040000000e-02 1734 3.2188000000e+00 6.1272000000e-02 1735 3.2542000000e+00 6.1471000000e-02 1736 3.2895000000e+00 6.1135000000e-02 1737 3.3243000000e+00 6.0333000000e-02 1738 3.3585000000e+00 5.9749000000e-02 1739 3.3924000000e+00 5.9778000000e-02 1740 3.4266000000e+00 6.0783000000e-02 1741 3.4619000000e+00 6.1981000000e-02 1742 3.4980000000e+00 6.2174000000e-02 1743 3.5333000000e+00 5.8912000000e-02 1744 3.5192000000e+00 9.7229000000e-02 1745 3.5219000000e+00 1.3750000000e-01 1746 3.5219000000e+00 1.7360000000e-01 1747 3.5220000000e+00 2.0954000000e-01 1748 3.4915000000e+00 2.2766000000e-01 1749 3.4923000000e+00 2.6337000000e-01 1750 3.4930000000e+00 2.9862000000e-01 1751 3.4938000000e+00 3.3347000000e-01 1752 3.4943000000e+00 3.6798000000e-01 1753 3.4945000000e+00 4.0221000000e-01 1754 3.4943000000e+00 4.3635000000e-01 1755 3.4937000000e+00 4.7065000000e-01 1756 3.4929000000e+00 5.0531000000e-01 1757 3.4620000000e+00 5.2164000000e-01 1758 3.4612000000e+00 5.5711000000e-01 1759 3.4608000000e+00 5.9274000000e-01 1760 3.4607000000e+00 6.2830000000e-01 1761 3.4608000000e+00 6.6374000000e-01 1762 3.4610000000e+00 6.9905000000e-01 1763 3.4611000000e+00 7.3428000000e-01 1764 3.4613000000e+00 7.6945000000e-01 1765 3.4614000000e+00 8.0459000000e-01 1766 3.4616000000e+00 8.3971000000e-01 1767 3.4617000000e+00 8.7480000000e-01 1768 3.4618000000e+00 9.0988000000e-01 1769 3.4619000000e+00 9.4494000000e-01 1770 3.4620000000e+00 9.7998000000e-01 1771 3.4620000000e+00 1.0150000000e+00 1772 3.4621000000e+00 1.0500000000e+00 1773 3.4621000000e+00 1.0850000000e+00 1774 3.4621000000e+00 1.1200000000e+00 1775 3.4621000000e+00 1.1550000000e+00 1776 3.4621000000e+00 1.1900000000e+00 1777 3.4621000000e+00 1.2251000000e+00 1778 3.4620000000e+00 1.2601000000e+00 1779 3.4620000000e+00 1.2951000000e+00 1780 3.4619000000e+00 1.3301000000e+00 1781 3.4618000000e+00 1.3652000000e+00 1782 3.4617000000e+00 1.4003000000e+00 1783 3.4616000000e+00 1.4354000000e+00 1784 3.4615000000e+00 1.4705000000e+00 1785 3.4613000000e+00 1.5057000000e+00 1786 3.4611000000e+00 1.5409000000e+00 1787 3.4609000000e+00 1.5761000000e+00 1788 3.4606000000e+00 1.6114000000e+00 1789 3.4602000000e+00 1.6467000000e+00 1790 3.4597000000e+00 1.6822000000e+00 1791 3.4592000000e+00 1.7177000000e+00 1792 3.4585000000e+00 1.7534000000e+00 1793 3.4577000000e+00 1.7893000000e+00 1794 3.4567000000e+00 1.8254000000e+00 1795 3.4556000000e+00 1.8618000000e+00 1796 3.4548000000e+00 1.8983000000e+00 1797 3.4539000000e+00 1.9344000000e+00 1798 3.1677000000e+00 1.9422000000e+00 1799 3.1336000000e+00 1.9447000000e+00 1800 3.0992000000e+00 1.9455000000e+00 1801 3.0644000000e+00 1.9457000000e+00 1802 3.0291000000e+00 1.9458000000e+00 1803 2.9937000000e+00 1.9460000000e+00 1804 2.9582000000e+00 1.9462000000e+00 1805 2.9226000000e+00 1.9465000000e+00 1806 2.8870000000e+00 1.9468000000e+00 1807 2.8513000000e+00 1.9472000000e+00 1808 2.8157000000e+00 1.9477000000e+00 1809 2.7801000000e+00 1.9483000000e+00 1810 2.7446000000e+00 1.9489000000e+00 1811 2.7093000000e+00 1.9496000000e+00 1812 2.6742000000e+00 1.9503000000e+00 1813 2.6392000000e+00 1.9508000000e+00 1814 2.6043000000e+00 1.9511000000e+00 1815 2.5693000000e+00 1.9513000000e+00 1816 2.5342000000e+00 1.9514000000e+00 1817 2.4992000000e+00 1.9515000000e+00 1818 2.4641000000e+00 1.9517000000e+00 1819 2.4291000000e+00 1.9519000000e+00 1820 2.3942000000e+00 1.9521000000e+00 1821 2.3594000000e+00 1.9521000000e+00 1822 2.3245000000e+00 1.9521000000e+00 1823 2.2897000000e+00 1.9520000000e+00 1824 2.2547000000e+00 1.9518000000e+00 1825 2.2196000000e+00 1.9517000000e+00 1826 2.1846000000e+00 1.9515000000e+00 1827 2.1674000000e+00 1.9211000000e+00 1828 2.1322000000e+00 1.9210000000e+00 1829 2.0970000000e+00 1.9209000000e+00 1830 2.0618000000e+00 1.9209000000e+00 1831 2.0440000000e+00 1.9514000000e+00 1832 2.0089000000e+00 1.9514000000e+00 1833 1.9738000000e+00 1.9515000000e+00 1834 1.9388000000e+00 1.9515000000e+00 1835 1.9037000000e+00 1.9516000000e+00 1836 1.8687000000e+00 1.9516000000e+00 1837 1.8513000000e+00 1.9213000000e+00 1838 1.8163000000e+00 1.9213000000e+00 1839 1.7813000000e+00 1.9213000000e+00 1840 1.7462000000e+00 1.9213000000e+00 1841 1.7112000000e+00 1.9213000000e+00 1842 1.6761000000e+00 1.9213000000e+00 1843 1.6411000000e+00 1.9213000000e+00 1844 1.6060000000e+00 1.9213000000e+00 1845 1.5710000000e+00 1.9213000000e+00 1846 1.5359000000e+00 1.9213000000e+00 1847 1.5009000000e+00 1.9213000000e+00 1848 1.4659000000e+00 1.9213000000e+00 1849 1.4309000000e+00 1.9213000000e+00 1850 1.3959000000e+00 1.9213000000e+00 1851 1.3609000000e+00 1.9213000000e+00 1852 1.3259000000e+00 1.9213000000e+00 1853 1.2908000000e+00 1.9213000000e+00 1854 1.2558000000e+00 1.9213000000e+00 1855 1.2208000000e+00 1.9213000000e+00 1856 1.1859000000e+00 1.9213000000e+00 1857 1.1509000000e+00 1.9213000000e+00 1858 1.1159000000e+00 1.9213000000e+00 1859 1.0809000000e+00 1.9213000000e+00 1860 1.0459000000e+00 1.9213000000e+00 1861 1.0109000000e+00 1.9213000000e+00 1862 9.7591000000e-01 1.9213000000e+00 1863 9.4091000000e-01 1.9213000000e+00 1864 9.0592000000e-01 1.9213000000e+00 1865 8.7091000000e-01 1.9213000000e+00 1866 8.3591000000e-01 1.9213000000e+00 1867 8.0090000000e-01 1.9213000000e+00 1868 7.6590000000e-01 1.9214000000e+00 1869 7.3089000000e-01 1.9214000000e+00 1870 6.9589000000e-01 1.9214000000e+00 1871 6.6089000000e-01 1.9214000000e+00 1872 6.2589000000e-01 1.9214000000e+00 1873 5.9089000000e-01 1.9214000000e+00 1874 5.5589000000e-01 1.9214000000e+00 1875 5.2089000000e-01 1.9214000000e+00 1876 4.8590000000e-01 1.9214000000e+00 1877 4.5090000000e-01 1.9214000000e+00 1878 4.1590000000e-01 1.9214000000e+00 1879 3.8089000000e-01 1.9214000000e+00 1880 3.4589000000e-01 1.9214000000e+00 1881 3.1088000000e-01 1.9214000000e+00 1882 2.7588000000e-01 1.9214000000e+00 1883 2.4087000000e-01 1.9214000000e+00 1884 2.0587000000e-01 1.9214000000e+00 1885 1.7086000000e-01 1.9214000000e+00 1886 1.3586000000e-01 1.9214000000e+00 1887 1.0085000000e-01 1.9214000000e+00 1888 6.5850000000e-02 1.9214000000e+00 1889 3.0847000000e-02 1.9214000000e+00 1890 -4.1538000000e-03 1.9214000000e+00 1891 -3.9154000000e-02 1.9214000000e+00 1892 -7.4154000000e-02 1.9214000000e+00 1893 -1.0915000000e-01 1.9214000000e+00 1894 -1.4415000000e-01 1.9214000000e+00 1895 -1.7915000000e-01 1.9214000000e+00 1896 -2.1415000000e-01 1.9214000000e+00 1897 -2.4914000000e-01 1.9214000000e+00 1898 -2.8414000000e-01 1.9214000000e+00 1899 -3.1914000000e-01 1.9214000000e+00 1900 -3.5414000000e-01 1.9214000000e+00 1901 -3.8913000000e-01 1.9214000000e+00 1902 -4.2413000000e-01 1.9214000000e+00 1903 -4.5913000000e-01 1.9214000000e+00 1904 -4.9413000000e-01 1.9214000000e+00 1905 -5.2913000000e-01 1.9214000000e+00 1906 -5.6413000000e-01 1.9214000000e+00 1907 -5.9914000000e-01 1.9214000000e+00 1908 -6.3414000000e-01 1.9214000000e+00 1909 -6.6915000000e-01 1.9214000000e+00 1910 -7.0416000000e-01 1.9214000000e+00 1911 -7.3917000000e-01 1.9213000000e+00 1912 -7.7419000000e-01 1.9212000000e+00 1913 -8.0922000000e-01 1.9211000000e+00 1914 -8.4426000000e-01 1.9210000000e+00 1915 -8.7932000000e-01 1.9207000000e+00 1916 -9.1442000000e-01 1.9204000000e+00 1917 -9.4957000000e-01 1.9200000000e+00 1918 -9.8479000000e-01 1.9195000000e+00 1919 -1.0201000000e+00 1.9188000000e+00 1920 -1.0556000000e+00 1.9181000000e+00 1921 -1.0913000000e+00 1.9171000000e+00 1922 -1.1273000000e+00 1.9162000000e+00 1923 -1.1635000000e+00 1.9153000000e+00 1924 -1.1999000000e+00 1.9145000000e+00 1925 -1.2371000000e+00 1.9136000000e+00 1926 -1.2743000000e+00 1.9151000000e+00 1927 -1.2592000000e+00 1.8764000000e+00 1928 -1.2595000000e+00 1.8352000000e+00 1929 -1.2559000000e+00 1.7981000000e+00 1930 -1.2523000000e+00 1.7598000000e+00 1931 -1.2493000000e+00 1.7201000000e+00 1932 -1.2470000000e+00 1.6780000000e+00 1933 -1.2286000000e+00 1.6527000000e+00 1934 -1.2266000000e+00 1.6243000000e+00 1935 -1.2261000000e+00 1.5889000000e+00 1936 -1.2268000000e+00 1.5526000000e+00 1937 -1.2280000000e+00 1.5165000000e+00 1938 -1.1974000000e+00 1.4986000000e+00 1939 -1.1987000000e+00 1.4630000000e+00 1940 -1.1998000000e+00 1.4276000000e+00 1941 -1.1695000000e+00 1.4102000000e+00 1942 -1.1703000000e+00 1.3749000000e+00 1943 -1.1709000000e+00 1.3396000000e+00 1944 -1.1715000000e+00 1.3043000000e+00 1945 -1.2025000000e+00 1.2865000000e+00 1946 -1.2333000000e+00 1.2687000000e+00 1947 -1.2029000000e+00 1.2512000000e+00 1948 -1.2033000000e+00 1.2161000000e+00 1949 -1.2036000000e+00 1.1809000000e+00 1950 -1.1729000000e+00 1.1986000000e+00 1951 -1.1733000000e+00 1.1634000000e+00 1952 -1.1736000000e+00 1.1283000000e+00 1953 -1.1433000000e+00 1.1108000000e+00 1954 -1.1131000000e+00 1.0933000000e+00 1955 -1.0829000000e+00 1.0758000000e+00 1956 -1.0526000000e+00 1.0583000000e+00 1957 -1.0528000000e+00 1.0233000000e+00 1958 -1.0224000000e+00 1.0408000000e+00 1959 -1.0225000000e+00 1.0057000000e+00 1960 -1.0529000000e+00 9.8817000000e-01 1961 -1.0529000000e+00 9.5306000000e-01 1962 -1.0832000000e+00 9.3553000000e-01 1963 -1.0832000000e+00 9.0042000000e-01 1964 -1.1134000000e+00 8.8291000000e-01 1965 -1.0831000000e+00 8.6532000000e-01 1966 1.2034000000e+00 1.8910000000e+00 1967 1.1684000000e+00 1.8910000000e+00 1968 1.1334000000e+00 1.8910000000e+00 1969 1.0984000000e+00 1.8910000000e+00 1970 1.0634000000e+00 1.8910000000e+00 1971 1.0284000000e+00 1.8910000000e+00 1972 9.9343000000e-01 1.8910000000e+00 1973 9.5844000000e-01 1.8910000000e+00 1974 9.2344000000e-01 1.8910000000e+00 1975 8.8844000000e-01 1.8910000000e+00 1976 8.5344000000e-01 1.8910000000e+00 1977 8.1843000000e-01 1.8910000000e+00 1978 7.8342000000e-01 1.8910000000e+00 1979 7.4841000000e-01 1.8910000000e+00 1980 7.1340000000e-01 1.8910000000e+00 1981 6.7840000000e-01 1.8911000000e+00 1982 6.4340000000e-01 1.8911000000e+00 1983 6.0840000000e-01 1.8911000000e+00 1984 5.7341000000e-01 1.8911000000e+00 1985 5.3841000000e-01 1.8911000000e+00 1986 5.0342000000e-01 1.8911000000e+00 1987 4.6842000000e-01 1.8911000000e+00 1988 4.3342000000e-01 1.8911000000e+00 1989 3.9842000000e-01 1.8911000000e+00 1990 3.6342000000e-01 1.8911000000e+00 1991 3.2841000000e-01 1.8911000000e+00 1992 2.9340000000e-01 1.8911000000e+00 1993 2.5839000000e-01 1.8911000000e+00 1994 2.2338000000e-01 1.8911000000e+00 1995 1.8837000000e-01 1.8911000000e+00 1996 1.5337000000e-01 1.8911000000e+00 1997 1.1836000000e-01 1.8911000000e+00 1998 8.3354000000e-02 1.8911000000e+00 1999 4.8350000000e-02 1.8911000000e+00 2000 1.3348000000e-02 1.8911000000e+00 2001 -2.1653000000e-02 1.8911000000e+00 2002 -5.6653000000e-02 1.8911000000e+00 2003 -9.1652000000e-02 1.8911000000e+00 2004 -1.2665000000e-01 1.8911000000e+00 2005 -1.6165000000e-01 1.8911000000e+00 2006 -1.9664000000e-01 1.8911000000e+00 2007 -2.3164000000e-01 1.8911000000e+00 2008 -2.6663000000e-01 1.8911000000e+00 2009 -3.0163000000e-01 1.8911000000e+00 2010 -3.3663000000e-01 1.8911000000e+00 2011 -3.7162000000e-01 1.8911000000e+00 2012 -4.0662000000e-01 1.8911000000e+00 2013 -4.4162000000e-01 1.8911000000e+00 2014 -4.7662000000e-01 1.8911000000e+00 2015 -5.1162000000e-01 1.8911000000e+00 2016 -5.4662000000e-01 1.8911000000e+00 2017 -5.8162000000e-01 1.8911000000e+00 2018 -6.1663000000e-01 1.8911000000e+00 2019 -6.5164000000e-01 1.8911000000e+00 2020 -6.8665000000e-01 1.8911000000e+00 2021 -7.2167000000e-01 1.8910000000e+00 2022 -7.5669000000e-01 1.8909000000e+00 2023 -7.9171000000e-01 1.8908000000e+00 2024 -8.2675000000e-01 1.8907000000e+00 2025 -8.6180000000e-01 1.8905000000e+00 2026 -8.9688000000e-01 1.8901000000e+00 2027 -9.3200000000e-01 1.8897000000e+00 2028 -9.6718000000e-01 1.8892000000e+00 2029 -1.0025000000e+00 1.8884000000e+00 2030 -1.0379000000e+00 1.8875000000e+00 2031 -1.0735000000e+00 1.8864000000e+00 2032 -1.1095000000e+00 1.8851000000e+00 2033 -1.1458000000e+00 1.8838000000e+00 2034 -1.1824000000e+00 1.8828000000e+00 2035 -1.2189000000e+00 1.8819000000e+00 2036 -1.2331000000e+00 1.8533000000e+00 2037 -1.2261000000e+00 1.8225000000e+00 2038 -1.2203000000e+00 1.7848000000e+00 2039 -1.2165000000e+00 1.7453000000e+00 2040 -1.2110000000e+00 1.7038000000e+00 2041 -1.2157000000e+00 1.6722000000e+00 2042 -1.1984000000e+00 1.6483000000e+00 2043 -1.1941000000e+00 1.6096000000e+00 2044 -1.1938000000e+00 1.5716000000e+00 2045 -1.1958000000e+00 1.5346000000e+00 2046 -1.1653000000e+00 1.5164000000e+00 2047 -1.1670000000e+00 1.4808000000e+00 2048 -1.1685000000e+00 1.4454000000e+00 2049 -1.1385000000e+00 1.4280000000e+00 2050 -1.1392000000e+00 1.3929000000e+00 2051 -1.1398000000e+00 1.3576000000e+00 2052 -1.1404000000e+00 1.3222000000e+00 2053 -1.1410000000e+00 1.2868000000e+00 2054 -1.1720000000e+00 1.2690000000e+00 2055 -1.1725000000e+00 1.2338000000e+00 2056 -1.1421000000e+00 1.2162000000e+00 2057 -1.1426000000e+00 1.1810000000e+00 2058 -1.1430000000e+00 1.1459000000e+00 2059 -1.1128000000e+00 1.1284000000e+00 2060 -1.0826000000e+00 1.1109000000e+00 2061 -1.0524000000e+00 1.0934000000e+00 2062 -1.0223000000e+00 1.0759000000e+00 2063 -9.9207000000e-01 1.0584000000e+00 2064 -9.9217000000e-01 1.0233000000e+00 2065 -9.9225000000e-01 9.8815000000e-01 2066 -1.0226000000e+00 9.7060000000e-01 2067 -1.0226000000e+00 9.3546000000e-01 2068 -1.0529000000e+00 9.1794000000e-01 2069 -1.0226000000e+00 9.0032000000e-01 2070 -1.0528000000e+00 8.8282000000e-01 2071 -1.0225000000e+00 8.6517000000e-01 2072 -1.0527000000e+00 8.4769000000e-01 2073 -1.0224000000e+00 8.3002000000e-01 2074 -1.0526000000e+00 8.1255000000e-01 2075 -1.0830000000e+00 8.3020000000e-01 2076 -1.0829000000e+00 7.9507000000e-01 2077 -1.0827000000e+00 7.5991000000e-01 2078 -1.0524000000e+00 7.7739000000e-01 2079 -1.0522000000e+00 7.4218000000e-01 2080 -1.0826000000e+00 7.2471000000e-01 2081 -1.1130000000e+00 7.4247000000e-01 2082 -1.0520000000e+00 7.0685000000e-01 2083 -1.0211000000e+00 6.8883000000e-01 2084 -1.0209000000e+00 6.5260000000e-01 2085 -1.0230000000e+00 6.1774000000e-01 2086 -1.0222000000e+00 7.9488000000e-01 2087 -1.0219000000e+00 7.5971000000e-01 2088 -9.9182000000e-01 7.7721000000e-01 2089 -9.9150000000e-01 7.4213000000e-01 2090 -9.6158000000e-01 7.5958000000e-01 2091 -9.6171000000e-01 7.9459000000e-01 2092 -9.3147000000e-01 7.7667000000e-01 2093 -9.3173000000e-01 7.4196000000e-01 2094 -9.6124000000e-01 7.2488000000e-01 2095 -9.9085000000e-01 7.0689000000e-01 2096 -1.0216000000e+00 7.2444000000e-01 2097 -1.3854000000e+00 1.3094000000e-01 2098 3.4224000000e+00 1.8822000000e+00 2099 3.4229000000e+00 1.9190000000e+00 2100 3.4256000000e+00 1.9497000000e+00 2101 3.3954000000e+00 1.9444000000e+00 2102 3.3588000000e+00 1.9408000000e+00 2103 3.3214000000e+00 1.9398000000e+00 2104 3.2846000000e+00 1.9385000000e+00 2105 3.2471000000e+00 1.9363000000e+00 2106 3.2058000000e+00 1.9327000000e+00 2107 3.1791000000e+00 1.9142000000e+00 2108 3.1511000000e+00 1.9147000000e+00 2109 3.1183000000e+00 1.9146000000e+00 2110 3.0839000000e+00 1.9142000000e+00 2111 3.0487000000e+00 1.9139000000e+00 2112 3.0131000000e+00 1.9139000000e+00 2113 2.9775000000e+00 1.9142000000e+00 2114 2.9418000000e+00 1.9146000000e+00 2115 2.9060000000e+00 1.9149000000e+00 2116 2.8702000000e+00 1.9153000000e+00 2117 2.8343000000e+00 1.9157000000e+00 2118 2.7984000000e+00 1.9164000000e+00 2119 2.7626000000e+00 1.9173000000e+00 2120 2.7271000000e+00 1.9182000000e+00 2121 2.6919000000e+00 1.9192000000e+00 2122 2.6569000000e+00 1.9200000000e+00 2123 2.6220000000e+00 1.9205000000e+00 2124 2.5871000000e+00 1.9208000000e+00 2125 2.5521000000e+00 1.9209000000e+00 2126 2.5170000000e+00 1.9210000000e+00 2127 2.4818000000e+00 1.9212000000e+00 2128 2.4467000000e+00 1.9215000000e+00 2129 2.4118000000e+00 1.9218000000e+00 2130 2.3771000000e+00 1.9220000000e+00 2131 2.3424000000e+00 1.9220000000e+00 2132 2.3076000000e+00 1.9219000000e+00 2133 2.2727000000e+00 1.9217000000e+00 2134 2.2377000000e+00 1.9214000000e+00 2135 2.2026000000e+00 1.9212000000e+00 2136 2.1855000000e+00 1.8906000000e+00 2137 2.1502000000e+00 1.8905000000e+00 2138 2.1150000000e+00 1.8904000000e+00 2139 2.0797000000e+00 1.8904000000e+00 2140 2.0445000000e+00 1.8904000000e+00 2141 2.0267000000e+00 1.9210000000e+00 2142 1.9915000000e+00 1.9210000000e+00 2143 1.9565000000e+00 1.9211000000e+00 2144 1.9214000000e+00 1.9212000000e+00 2145 1.8864000000e+00 1.9213000000e+00 2146 2.0093000000e+00 1.8905000000e+00 2147 1.9742000000e+00 1.8907000000e+00 2148 1.9391000000e+00 1.8908000000e+00 2149 1.9040000000e+00 1.8909000000e+00 2150 1.8690000000e+00 1.8909000000e+00 2151 2.2908000000e+00 1.8916000000e+00 2152 2.2558000000e+00 1.8912000000e+00 2153 2.2207000000e+00 1.8909000000e+00 2154 2.2038000000e+00 1.8602000000e+00 2155 2.1684000000e+00 1.8600000000e+00 2156 2.1331000000e+00 1.8598000000e+00 2157 2.0977000000e+00 1.8598000000e+00 2158 2.0624000000e+00 1.8598000000e+00 2159 2.0271000000e+00 1.8600000000e+00 2160 1.9919000000e+00 1.8601000000e+00 2161 1.9568000000e+00 1.8603000000e+00 2162 1.9217000000e+00 1.8604000000e+00 2163 1.8867000000e+00 1.8605000000e+00 2164 1.8517000000e+00 1.8606000000e+00 2165 1.8340000000e+00 1.8910000000e+00 2166 1.7989000000e+00 1.8910000000e+00 2167 1.7639000000e+00 1.8910000000e+00 2168 1.7288000000e+00 1.8910000000e+00 2169 1.7465000000e+00 1.8606000000e+00 2170 1.7114000000e+00 1.8606000000e+00 2171 1.6938000000e+00 1.8910000000e+00 2172 2.9738000000e+00 1.2151000000e-01 2173 3.0089000000e+00 1.2153000000e-01 2174 3.0263000000e+00 9.1151000000e-02 2175 3.0613000000e+00 9.1167000000e-02 2176 3.0964000000e+00 9.1189000000e-02 2177 3.0790000000e+00 1.2155000000e-01 2178 3.1141000000e+00 1.2156000000e-01 2179 -6.2907000000e-01 3.0318000000e-02 2180 -5.9415000000e-01 3.0291000000e-02 2181 -6.1151000000e-01 6.0604000000e-02 2182 -5.7672000000e-01 6.0536000000e-02 2183 -5.9398000000e-01 9.0831000000e-02 2184 -5.5938000000e-01 9.0658000000e-02 2185 -5.7638000000e-01 1.2095000000e-01 2186 -5.4216000000e-01 1.2043000000e-01 2187 -5.5841000000e-01 1.5099000000e-01 2188 -5.2512000000e-01 1.4900000000e-01 2189 -5.3823000000e-01 1.8259000000e-01 2190 -5.0938000000e-01 1.7106000000e-01 2191 -4.9391000000e-01 1.4865000000e-01 2192 -5.0867000000e-01 1.2030000000e-01 2193 -5.2504000000e-01 9.0660000000e-02 2194 -2.1210000000e-01 3.2696000000e-02 2195 -1.7421000000e-01 3.4118000000e-02 2196 -1.3347000000e-01 2.9529000000e-02 2197 -5.9329000000e-01 1.5151000000e-01 2198 -6.1112000000e-01 1.2127000000e-01 2199 -6.2878000000e-01 9.0980000000e-02 2200 -6.4603000000e-01 1.2144000000e-01 2201 -6.6368000000e-01 9.1071000000e-02 2202 -6.8097000000e-01 1.2150000000e-01 2203 -6.9861000000e-01 9.1116000000e-02 2204 -7.1589000000e-01 1.2151000000e-01 2205 -7.3352000000e-01 9.1148000000e-02 2206 -7.5076000000e-01 1.2153000000e-01 2207 -7.3318000000e-01 1.5187000000e-01 2208 -6.9831000000e-01 1.5191000000e-01 2209 -7.1567000000e-01 1.8224000000e-01 2210 -6.8080000000e-01 1.8240000000e-01 2211 -6.9829000000e-01 2.1253000000e-01 2212 -6.6352000000e-01 2.1312000000e-01 2213 -6.8150000000e-01 2.4261000000e-01 2214 -6.4710000000e-01 2.4431000000e-01 2215 -6.2780000000e-01 2.1421000000e-01 2216 -6.4566000000e-01 1.8268000000e-01 2217 -6.6334000000e-01 1.5197000000e-01 2218 4.9215000000e-01 7.1785000000e-02 2219 5.2758000000e-01 7.1790000000e-02 2220 5.6330000000e-01 7.1405000000e-02 2221 5.9795000000e-01 6.9222000000e-02 2222 6.3131000000e-01 6.8197000000e-02 2223 2.4481000000e+00 1.8175000000e-01 2224 2.4656000000e+00 2.1204000000e-01 2225 2.4831000000e+00 2.4232000000e-01 2226 2.5181000000e+00 2.4233000000e-01 2227 2.5531000000e+00 2.4235000000e-01 2228 2.5882000000e+00 2.4238000000e-01 2229 2.6057000000e+00 2.1211000000e-01 2230 2.6233000000e+00 1.8183000000e-01 2231 2.6058000000e+00 1.5152000000e-01 2232 2.6408000000e+00 1.5154000000e-01 2233 3.4612000000e+00 2.4632000000e-01 2234 3.4624000000e+00 2.8185000000e-01 2235 3.4314000000e+00 2.6534000000e-01 2236 3.4330000000e+00 3.0055000000e-01 2237 3.4636000000e+00 3.1685000000e-01 2238 2.6407000000e+00 2.1215000000e-01 2239 2.6583000000e+00 1.8186000000e-01 2240 2.6758000000e+00 1.5157000000e-01 2241 1.6435000000e+00 6.0897000000e-02 2242 3.4297000000e+00 2.2956000000e-01 2243 3.4000000000e+00 2.4916000000e-01 2244 3.4020000000e+00 2.8456000000e-01 2245 3.4041000000e+00 3.1945000000e-01 2246 3.4345000000e+00 3.3520000000e-01 2247 3.4646000000e+00 3.5135000000e-01 2248 -3.8395000000e-01 3.0581000000e-02 2249 -3.4906000000e-01 3.0252000000e-02 2250 -3.1409000000e-01 3.0501000000e-02 2251 -2.9541000000e-01 6.3460000000e-02 2252 -2.6422000000e-01 5.3361000000e-02 2253 3.4653000000e+00 3.8536000000e-01 2254 3.4654000000e+00 4.1897000000e-01 2255 3.4647000000e+00 4.5257000000e-01 2256 3.4633000000e+00 4.8672000000e-01 2257 3.4321000000e+00 5.0223000000e-01 2258 3.4304000000e+00 5.3801000000e-01 2259 3.4298000000e+00 5.7416000000e-01 2260 3.4298000000e+00 6.1009000000e-01 2261 3.4299000000e+00 6.4575000000e-01 2262 3.4301000000e+00 6.8119000000e-01 2263 3.4304000000e+00 7.1649000000e-01 2264 3.4306000000e+00 7.5171000000e-01 2265 3.4308000000e+00 7.8688000000e-01 2266 3.4310000000e+00 8.2203000000e-01 2267 3.4312000000e+00 8.5716000000e-01 2268 3.4313000000e+00 8.9227000000e-01 2269 3.4314000000e+00 9.2736000000e-01 2270 3.4316000000e+00 9.6243000000e-01 2271 3.4317000000e+00 9.9748000000e-01 2272 3.4317000000e+00 1.0325000000e+00 2273 3.4318000000e+00 1.0675000000e+00 2274 3.4318000000e+00 1.1025000000e+00 2275 3.4318000000e+00 1.1375000000e+00 2276 3.4318000000e+00 1.1725000000e+00 2277 3.4317000000e+00 1.2076000000e+00 2278 3.4317000000e+00 1.2426000000e+00 2279 3.4316000000e+00 1.2776000000e+00 2280 3.4316000000e+00 1.3127000000e+00 2281 3.4315000000e+00 1.3477000000e+00 2282 3.4313000000e+00 1.3828000000e+00 2283 3.4312000000e+00 1.4179000000e+00 2284 3.4310000000e+00 1.4531000000e+00 2285 3.4308000000e+00 1.4883000000e+00 2286 3.4306000000e+00 1.5235000000e+00 2287 3.4303000000e+00 1.5588000000e+00 2288 3.4300000000e+00 1.5941000000e+00 2289 3.4296000000e+00 1.6295000000e+00 2290 3.4291000000e+00 1.6650000000e+00 2291 3.4285000000e+00 1.7006000000e+00 2292 3.4277000000e+00 1.7363000000e+00 2293 3.4268000000e+00 1.7723000000e+00 2294 3.4257000000e+00 1.8084000000e+00 2295 3.4243000000e+00 1.8449000000e+00 2296 3.3915000000e+00 1.8642000000e+00 2297 3.3853000000e+00 1.9052000000e+00 2298 3.3437000000e+00 1.9070000000e+00 2299 3.3070000000e+00 1.9067000000e+00 2300 3.2715000000e+00 1.9046000000e+00 2301 3.2353000000e+00 1.9000000000e+00 2302 3.2011000000e+00 1.8937000000e+00 2303 3.1700000000e+00 1.8876000000e+00 2304 3.1379000000e+00 1.8852000000e+00 2305 3.1040000000e+00 1.8835000000e+00 2306 3.0689000000e+00 1.8823000000e+00 2307 3.0330000000e+00 1.8817000000e+00 2308 2.9970000000e+00 1.8820000000e+00 2309 2.9612000000e+00 1.8826000000e+00 2310 2.9254000000e+00 1.8830000000e+00 2311 2.8895000000e+00 1.8832000000e+00 2312 2.8533000000e+00 1.8836000000e+00 2313 2.8170000000e+00 1.8841000000e+00 2314 2.7808000000e+00 1.8851000000e+00 2315 2.7449000000e+00 1.8864000000e+00 2316 2.7094000000e+00 1.8878000000e+00 2317 2.6744000000e+00 1.8891000000e+00 2318 2.6397000000e+00 1.8900000000e+00 2319 2.6050000000e+00 1.8904000000e+00 2320 2.5702000000e+00 1.8904000000e+00 2321 2.5350000000e+00 1.8904000000e+00 2322 2.4996000000e+00 1.8904000000e+00 2323 2.4642000000e+00 1.8908000000e+00 2324 2.4292000000e+00 1.8914000000e+00 2325 2.3946000000e+00 1.8920000000e+00 2326 2.3601000000e+00 1.8921000000e+00 2327 2.3256000000e+00 1.8919000000e+00 2328 2.3091000000e+00 1.8617000000e+00 2329 2.2742000000e+00 1.8611000000e+00 2330 2.2391000000e+00 1.8606000000e+00 2331 2.2223000000e+00 1.8299000000e+00 2332 2.1868000000e+00 1.8294000000e+00 2333 2.1513000000e+00 1.8292000000e+00 2334 2.1158000000e+00 1.8291000000e+00 2335 2.0804000000e+00 1.8292000000e+00 2336 2.0450000000e+00 1.8293000000e+00 2337 2.0097000000e+00 1.8295000000e+00 2338 1.9745000000e+00 1.8298000000e+00 2339 1.9395000000e+00 1.8300000000e+00 2340 1.9045000000e+00 1.8301000000e+00 2341 1.8695000000e+00 1.8302000000e+00 2342 1.8345000000e+00 1.8302000000e+00 2343 1.8167000000e+00 1.8606000000e+00 2344 1.7816000000e+00 1.8606000000e+00 2345 1.7643000000e+00 1.8302000000e+00 2346 1.7292000000e+00 1.8301000000e+00 2347 1.6941000000e+00 1.8301000000e+00 2348 1.6763000000e+00 1.8606000000e+00 2349 1.6587000000e+00 1.8910000000e+00 2350 1.6236000000e+00 1.8910000000e+00 2351 1.5885000000e+00 1.8910000000e+00 2352 1.5535000000e+00 1.8910000000e+00 2353 1.5185000000e+00 1.8910000000e+00 2354 1.4834000000e+00 1.8910000000e+00 2355 1.4484000000e+00 1.8910000000e+00 2356 1.4134000000e+00 1.8910000000e+00 2357 1.3784000000e+00 1.8910000000e+00 2358 1.3434000000e+00 1.8910000000e+00 2359 1.3084000000e+00 1.8910000000e+00 2360 1.2734000000e+00 1.8910000000e+00 2361 1.2383000000e+00 1.8910000000e+00 2362 1.2209000000e+00 1.8606000000e+00 2363 1.1859000000e+00 1.8606000000e+00 2364 1.1509000000e+00 1.8606000000e+00 2365 1.1159000000e+00 1.8606000000e+00 2366 1.0809000000e+00 1.8606000000e+00 2367 1.0459000000e+00 1.8606000000e+00 2368 1.0109000000e+00 1.8606000000e+00 2369 9.7597000000e-01 1.8606000000e+00 2370 9.4098000000e-01 1.8606000000e+00 2371 9.0598000000e-01 1.8606000000e+00 2372 8.7098000000e-01 1.8606000000e+00 2373 8.3597000000e-01 1.8606000000e+00 2374 8.0095000000e-01 1.8606000000e+00 2375 7.6594000000e-01 1.8606000000e+00 2376 7.3092000000e-01 1.8607000000e+00 2377 6.9591000000e-01 1.8607000000e+00 2378 6.6091000000e-01 1.8607000000e+00 2379 6.2591000000e-01 1.8607000000e+00 2380 5.9092000000e-01 1.8608000000e+00 2381 5.5593000000e-01 1.8608000000e+00 2382 5.2094000000e-01 1.8608000000e+00 2383 4.8595000000e-01 1.8608000000e+00 2384 4.5096000000e-01 1.8608000000e+00 2385 4.1596000000e-01 1.8608000000e+00 2386 3.8095000000e-01 1.8608000000e+00 2387 3.4594000000e-01 1.8608000000e+00 2388 3.1093000000e-01 1.8608000000e+00 2389 2.7592000000e-01 1.8608000000e+00 2390 2.4090000000e-01 1.8608000000e+00 2391 2.0589000000e-01 1.8608000000e+00 2392 1.7088000000e-01 1.8608000000e+00 2393 1.3587000000e-01 1.8608000000e+00 2394 1.0086000000e-01 1.8608000000e+00 2395 6.5855000000e-02 1.8608000000e+00 2396 3.0850000000e-02 1.8608000000e+00 2397 -4.1533000000e-03 1.8608000000e+00 2398 -3.9154000000e-02 1.8608000000e+00 2399 -7.4153000000e-02 1.8608000000e+00 2400 -1.0915000000e-01 1.8608000000e+00 2401 -1.4415000000e-01 1.8608000000e+00 2402 -1.7914000000e-01 1.8608000000e+00 2403 -2.1413000000e-01 1.8608000000e+00 2404 -2.4913000000e-01 1.8608000000e+00 2405 -2.8412000000e-01 1.8608000000e+00 2406 -3.1912000000e-01 1.8608000000e+00 2407 -3.5411000000e-01 1.8608000000e+00 2408 -3.8911000000e-01 1.8608000000e+00 2409 -4.2410000000e-01 1.8608000000e+00 2410 -4.5910000000e-01 1.8608000000e+00 2411 -4.9410000000e-01 1.8608000000e+00 2412 -5.2910000000e-01 1.8608000000e+00 2413 -5.6411000000e-01 1.8608000000e+00 2414 -5.9911000000e-01 1.8608000000e+00 2415 -6.3412000000e-01 1.8608000000e+00 2416 -6.6914000000e-01 1.8608000000e+00 2417 -7.0416000000e-01 1.8607000000e+00 2418 -7.3918000000e-01 1.8607000000e+00 2419 -7.7421000000e-01 1.8606000000e+00 2420 -8.0924000000e-01 1.8604000000e+00 2421 -8.4429000000e-01 1.8602000000e+00 2422 -8.7935000000e-01 1.8599000000e+00 2423 -9.1444000000e-01 1.8595000000e+00 2424 -9.4957000000e-01 1.8589000000e+00 2425 -9.8478000000e-01 1.8582000000e+00 2426 -1.0201000000e+00 1.8572000000e+00 2427 -1.0556000000e+00 1.8560000000e+00 2428 -1.0914000000e+00 1.8545000000e+00 2429 -1.1276000000e+00 1.8526000000e+00 2430 -1.1648000000e+00 1.8504000000e+00 2431 -1.2018000000e+00 1.8506000000e+00 2432 -1.1859000000e+00 1.8126000000e+00 2433 -1.1850000000e+00 1.7702000000e+00 2434 -1.1812000000e+00 1.7327000000e+00 2435 -1.1741000000e+00 1.6995000000e+00 2436 -1.1933000000e+00 1.6784000000e+00 2437 -1.1673000000e+00 1.6680000000e+00 2438 -1.1634000000e+00 1.6327000000e+00 2439 -1.1564000000e+00 1.5917000000e+00 2440 -1.1633000000e+00 1.5521000000e+00 2441 -1.1337000000e+00 1.5338000000e+00 2442 -1.1347000000e+00 1.4983000000e+00 2443 -1.1372000000e+00 1.4629000000e+00 2444 -1.1080000000e+00 1.4456000000e+00 2445 -1.1064000000e+00 1.4794000000e+00 2446 -1.0794000000e+00 1.4628000000e+00 2447 -1.0780000000e+00 1.4296000000e+00 2448 -1.1084000000e+00 1.4110000000e+00 2449 -1.1087000000e+00 1.3757000000e+00 2450 -1.1092000000e+00 1.3403000000e+00 2451 -1.1098000000e+00 1.3047000000e+00 2452 -1.1105000000e+00 1.2692000000e+00 2453 -1.1416000000e+00 1.2515000000e+00 2454 -1.1112000000e+00 1.2339000000e+00 2455 -1.1118000000e+00 1.1986000000e+00 2456 -1.1123000000e+00 1.1635000000e+00 2457 -1.0822000000e+00 1.1459000000e+00 2458 -1.0521000000e+00 1.1284000000e+00 2459 -1.0220000000e+00 1.1109000000e+00 2460 -9.9191000000e-01 1.0934000000e+00 2461 -9.6174000000e-01 1.0761000000e+00 2462 -9.6181000000e-01 1.0409000000e+00 2463 -9.6190000000e-01 1.0057000000e+00 2464 -9.6198000000e-01 9.7051000000e-01 2465 -9.9230000000e-01 9.5298000000e-01 2466 -9.9230000000e-01 9.1781000000e-01 2467 -9.6203000000e-01 9.3531000000e-01 2468 -9.6203000000e-01 9.0012000000e-01 2469 -9.9225000000e-01 8.8265000000e-01 2470 -9.9215000000e-01 8.4748000000e-01 2471 -9.6196000000e-01 8.6494000000e-01 2472 -9.6185000000e-01 8.2975000000e-01 2473 -9.9201000000e-01 8.1233000000e-01 2474 -1.2953000000e+00 7.0794000000e-01 2475 -1.0528000000e+00 4.6330000000e-01 2476 -1.0532000000e+00 4.3052000000e-01 2477 -9.3179000000e-01 8.8239000000e-01 2478 -9.3169000000e-01 8.4718000000e-01 2479 1.4839000000e+00 1.5504000000e-01 2480 1.5021000000e+00 1.8558000000e-01 2481 1.5378000000e+00 1.8476000000e-01 2482 -9.3173000000e-01 9.5280000000e-01 2483 -9.3180000000e-01 9.1759000000e-01 2484 -9.0164000000e-01 8.9983000000e-01 2485 -9.0159000000e-01 8.6466000000e-01 2486 -8.7158000000e-01 8.8209000000e-01 2487 -8.7143000000e-01 8.4700000000e-01 2488 -9.0140000000e-01 8.2940000000e-01 2489 -9.3154000000e-01 8.1192000000e-01 2490 1.4660000000e+00 1.8676000000e-01 2491 8.8002000000e-01 4.7902000000e-02 2492 9.1458000000e-01 4.2927000000e-02 2493 9.3569000000e-01 7.0631000000e-02 2494 1.5204000000e+00 2.1581000000e-01 2495 1.5558000000e+00 2.1514000000e-01 2496 1.5737000000e+00 2.4562000000e-01 2497 1.6093000000e+00 2.4537000000e-01 2498 1.6450000000e+00 2.4489000000e-01 2499 1.6624000000e+00 2.1354000000e-01 2500 1.6796000000e+00 1.8247000000e-01 2501 1.6968000000e+00 1.5164000000e-01 2502 -5.4202000000e-01 6.0547000000e-02 2503 -5.5927000000e-01 3.0289000000e-02 2504 -5.0734000000e-01 6.0777000000e-02 2505 -5.2441000000e-01 3.0358000000e-02 2506 -4.9070000000e-01 9.1242000000e-02 2507 -4.7241000000e-01 6.1308000000e-02 2508 -4.8948000000e-01 3.0536000000e-02 2509 -4.5565000000e-01 9.2605000000e-02 2510 -4.7511000000e-01 1.2179000000e-01 2511 -4.3973000000e-01 1.2522000000e-01 2512 -4.6202000000e-01 1.5271000000e-01 2513 -5.6656000000e-02 1.8305000000e+00 2514 -9.1653000000e-02 1.8305000000e+00 2515 -1.2665000000e-01 1.8305000000e+00 2516 -1.6164000000e-01 1.8305000000e+00 2517 -1.9663000000e-01 1.8305000000e+00 2518 -2.3162000000e-01 1.8305000000e+00 2519 -2.6661000000e-01 1.8305000000e+00 2520 -3.0160000000e-01 1.8305000000e+00 2521 -3.3659000000e-01 1.8305000000e+00 2522 -3.7159000000e-01 1.8305000000e+00 2523 -4.0658000000e-01 1.8305000000e+00 2524 -4.4158000000e-01 1.8305000000e+00 2525 -4.7658000000e-01 1.8305000000e+00 2526 -5.1158000000e-01 1.8305000000e+00 2527 -5.4658000000e-01 1.8305000000e+00 2528 -5.8159000000e-01 1.8305000000e+00 2529 -6.1660000000e-01 1.8305000000e+00 2530 -6.5162000000e-01 1.8305000000e+00 2531 -6.8664000000e-01 1.8304000000e+00 2532 -7.2167000000e-01 1.8304000000e+00 2533 -7.5670000000e-01 1.8303000000e+00 2534 -7.9174000000e-01 1.8301000000e+00 2535 -8.2679000000e-01 1.8299000000e+00 2536 -8.6184000000e-01 1.8297000000e+00 2537 -8.9690000000e-01 1.8293000000e+00 2538 -9.3198000000e-01 1.8288000000e+00 2539 -9.6711000000e-01 1.8280000000e+00 2540 -1.0023000000e+00 1.8271000000e+00 2541 -1.0377000000e+00 1.8258000000e+00 2542 -1.0733000000e+00 1.8242000000e+00 2543 -1.1091000000e+00 1.8222000000e+00 2544 -1.1453000000e+00 1.8196000000e+00 2545 4.7430000000e-01 1.0171000000e-01 2546 5.0991000000e-01 1.0189000000e-01 2547 4.9209000000e-01 1.3203000000e-01 2548 5.2758000000e-01 1.3205000000e-01 2549 5.4579000000e-01 1.0200000000e-01 2550 5.6228000000e-01 1.3206000000e-01 2551 5.8416000000e-01 1.0280000000e-01 2552 -1.0198000000e+00 1.7959000000e+00 2553 -1.0551000000e+00 1.7943000000e+00 2554 -1.0907000000e+00 1.7923000000e+00 2555 -1.1265000000e+00 1.7900000000e+00 2556 -1.1581000000e+00 1.7897000000e+00 2557 -1.1479000000e+00 1.7559000000e+00 2558 -1.1530000000e+00 1.7215000000e+00 2559 -1.1387000000e+00 1.6925000000e+00 2560 2.7108000000e+00 1.5159000000e-01 2561 2.6933000000e+00 1.8190000000e-01 2562 2.7284000000e+00 1.8194000000e-01 2563 2.7459000000e+00 1.5163000000e-01 2564 2.7284000000e+00 1.2129000000e-01 2565 2.7459000000e+00 9.0971000000e-02 2566 2.7809000000e+00 9.0990000000e-02 2567 2.7634000000e+00 1.2131000000e-01 2568 2.7984000000e+00 1.2134000000e-01 2569 2.8159000000e+00 9.1011000000e-02 2570 -1.1082000000e+00 1.7599000000e+00 2571 3.3996000000e+00 6.9868000000e-01 2572 3.3999000000e+00 7.3393000000e-01 2573 3.4001000000e+00 7.6913000000e-01 2574 3.4004000000e+00 8.0430000000e-01 2575 3.4006000000e+00 8.3947000000e-01 2576 3.4008000000e+00 8.7462000000e-01 2577 3.4009000000e+00 9.0974000000e-01 2578 3.4011000000e+00 9.4485000000e-01 2579 3.4012000000e+00 9.7992000000e-01 2580 3.4013000000e+00 1.0150000000e+00 2581 3.4014000000e+00 1.0500000000e+00 2582 3.4014000000e+00 1.0850000000e+00 2583 3.4015000000e+00 1.1200000000e+00 2584 3.4015000000e+00 1.1550000000e+00 2585 3.4014000000e+00 1.1901000000e+00 2586 3.4014000000e+00 1.2251000000e+00 2587 3.4013000000e+00 1.2601000000e+00 2588 3.4012000000e+00 1.2952000000e+00 2589 3.4011000000e+00 1.3302000000e+00 2590 3.4010000000e+00 1.3654000000e+00 2591 3.4008000000e+00 1.4005000000e+00 2592 3.4006000000e+00 1.4357000000e+00 2593 3.4004000000e+00 1.4709000000e+00 2594 3.4001000000e+00 1.5061000000e+00 2595 3.3998000000e+00 1.5415000000e+00 2596 3.3994000000e+00 1.5768000000e+00 2597 3.3990000000e+00 1.6123000000e+00 2598 3.3985000000e+00 1.6478000000e+00 2599 3.3979000000e+00 1.6834000000e+00 2600 3.3971000000e+00 1.7192000000e+00 2601 3.3961000000e+00 1.7551000000e+00 2602 3.3949000000e+00 1.7912000000e+00 2603 3.3935000000e+00 1.8276000000e+00 2604 3.3614000000e+00 1.8470000000e+00 2605 3.3620000000e+00 1.8788000000e+00 2606 3.3278000000e+00 1.8709000000e+00 2607 3.2931000000e+00 1.8793000000e+00 2608 3.2618000000e+00 1.8669000000e+00 2609 3.2244000000e+00 1.8663000000e+00 2610 3.1917000000e+00 1.8613000000e+00 2611 3.1589000000e+00 1.8569000000e+00 2612 3.1251000000e+00 1.8539000000e+00 2613 3.0901000000e+00 1.8512000000e+00 2614 3.0537000000e+00 1.8490000000e+00 2615 3.0168000000e+00 1.8491000000e+00 2616 2.9807000000e+00 1.8506000000e+00 2617 2.9995000000e+00 1.8189000000e+00 2618 2.9649000000e+00 1.8197000000e+00 2619 2.9451000000e+00 1.8511000000e+00 2620 2.9092000000e+00 1.8512000000e+00 2621 2.8729000000e+00 1.8512000000e+00 2622 2.8363000000e+00 1.8515000000e+00 2623 2.7994000000e+00 1.8524000000e+00 2624 2.7628000000e+00 1.8539000000e+00 2625 2.7268000000e+00 1.8559000000e+00 2626 2.6916000000e+00 1.8579000000e+00 2627 2.6571000000e+00 1.8595000000e+00 2628 2.6229000000e+00 1.8602000000e+00 2629 2.5884000000e+00 1.8602000000e+00 2630 2.5535000000e+00 1.8599000000e+00 2631 2.5179000000e+00 1.8595000000e+00 2632 2.4819000000e+00 1.8596000000e+00 2633 2.4463000000e+00 1.8606000000e+00 2634 2.4116000000e+00 1.8619000000e+00 2635 2.3777000000e+00 1.8625000000e+00 2636 2.3436000000e+00 1.8622000000e+00 2637 2.3275000000e+00 1.8320000000e+00 2638 2.2928000000e+00 1.8312000000e+00 2639 2.3116000000e+00 1.8015000000e+00 2640 2.2766000000e+00 1.8004000000e+00 2641 2.2577000000e+00 1.8304000000e+00 2642 2.2412000000e+00 1.7995000000e+00 2643 2.2055000000e+00 1.7989000000e+00 2644 2.1698000000e+00 1.7985000000e+00 2645 2.1341000000e+00 1.7984000000e+00 2646 2.0985000000e+00 1.7983000000e+00 2647 2.0630000000e+00 1.7985000000e+00 2648 2.0275000000e+00 1.7988000000e+00 2649 1.9923000000e+00 1.7991000000e+00 2650 1.9572000000e+00 1.7995000000e+00 2651 1.9222000000e+00 1.7997000000e+00 2652 1.8873000000e+00 1.7998000000e+00 2653 1.8523000000e+00 1.7999000000e+00 2654 1.8173000000e+00 1.7998000000e+00 2655 1.7994000000e+00 1.8302000000e+00 2656 1.7823000000e+00 1.7997000000e+00 2657 1.7471000000e+00 1.7997000000e+00 2658 1.7119000000e+00 1.7996000000e+00 2659 1.6767000000e+00 1.7997000000e+00 2660 1.6589000000e+00 1.8301000000e+00 2661 1.6412000000e+00 1.8606000000e+00 2662 1.6061000000e+00 1.8606000000e+00 2663 1.5711000000e+00 1.8606000000e+00 2664 1.5360000000e+00 1.8606000000e+00 2665 1.5010000000e+00 1.8606000000e+00 2666 1.4659000000e+00 1.8606000000e+00 2667 1.4309000000e+00 1.8606000000e+00 2668 1.3959000000e+00 1.8606000000e+00 2669 1.3609000000e+00 1.8606000000e+00 2670 1.3259000000e+00 1.8606000000e+00 2671 1.2909000000e+00 1.8606000000e+00 2672 1.2559000000e+00 1.8606000000e+00 2673 1.2384000000e+00 1.8302000000e+00 2674 1.2033000000e+00 1.8302000000e+00 2675 1.1684000000e+00 1.8302000000e+00 2676 1.1334000000e+00 1.8302000000e+00 2677 1.0984000000e+00 1.8303000000e+00 2678 1.0634000000e+00 1.8303000000e+00 2679 1.0285000000e+00 1.8303000000e+00 2680 9.9349000000e-01 1.8303000000e+00 2681 9.5851000000e-01 1.8303000000e+00 2682 9.2352000000e-01 1.8303000000e+00 2683 8.8852000000e-01 1.8303000000e+00 2684 8.5351000000e-01 1.8302000000e+00 2685 8.1849000000e-01 1.8302000000e+00 2686 7.8347000000e-01 1.8303000000e+00 2687 7.4845000000e-01 1.8303000000e+00 2688 7.1343000000e-01 1.8303000000e+00 2689 6.7842000000e-01 1.8304000000e+00 2690 6.4343000000e-01 1.8304000000e+00 2691 6.0844000000e-01 1.8304000000e+00 2692 5.7345000000e-01 1.8305000000e+00 2693 5.3847000000e-01 1.8305000000e+00 2694 5.0349000000e-01 1.8305000000e+00 2695 4.6850000000e-01 1.8305000000e+00 2696 4.3350000000e-01 1.8305000000e+00 2697 3.9850000000e-01 1.8305000000e+00 2698 3.6349000000e-01 1.8305000000e+00 2699 3.2847000000e-01 1.8305000000e+00 2700 2.9345000000e-01 1.8305000000e+00 2701 2.5844000000e-01 1.8305000000e+00 2702 2.2342000000e-01 1.8305000000e+00 2703 1.8840000000e-01 1.8305000000e+00 2704 1.5339000000e-01 1.8305000000e+00 2705 1.1837000000e-01 1.8304000000e+00 2706 8.3361000000e-02 1.8304000000e+00 2707 4.8353000000e-02 1.8305000000e+00 2708 1.3347000000e-02 1.8305000000e+00 2709 -2.1656000000e-02 1.8305000000e+00 2710 -3.9160000000e-02 1.8001000000e+00 2711 -7.4158000000e-02 1.8001000000e+00 2712 -1.0915000000e-01 1.8001000000e+00 2713 -1.4414000000e-01 1.8002000000e+00 2714 -1.7913000000e-01 1.8002000000e+00 2715 -2.1412000000e-01 1.8002000000e+00 2716 -2.4910000000e-01 1.8002000000e+00 2717 -2.8409000000e-01 1.8002000000e+00 2718 -3.1907000000e-01 1.8002000000e+00 2719 -3.5406000000e-01 1.8002000000e+00 2720 -3.8905000000e-01 1.8002000000e+00 2721 -4.2405000000e-01 1.8002000000e+00 2722 -4.5904000000e-01 1.8002000000e+00 2723 -4.9404000000e-01 1.8002000000e+00 2724 -5.2905000000e-01 1.8002000000e+00 2725 -5.6405000000e-01 1.8002000000e+00 2726 -5.9907000000e-01 1.8002000000e+00 2727 -6.3409000000e-01 1.8002000000e+00 2728 -6.6911000000e-01 1.8002000000e+00 2729 -7.0415000000e-01 1.8001000000e+00 2730 -7.3919000000e-01 1.8000000000e+00 2731 -7.7424000000e-01 1.7999000000e+00 2732 -8.0929000000e-01 1.7997000000e+00 2733 -8.4434000000e-01 1.7995000000e+00 2734 -8.7939000000e-01 1.7991000000e+00 2735 -9.1444000000e-01 1.7986000000e+00 2736 -9.4950000000e-01 1.7980000000e+00 2737 -9.8459000000e-01 1.7971000000e+00 2738 -1.0020000000e+00 1.7662000000e+00 2739 -1.0370000000e+00 1.7647000000e+00 2740 -1.0722000000e+00 1.7627000000e+00 2741 -1.0885000000e+00 1.7312000000e+00 2742 -1.1233000000e+00 1.7269000000e+00 2743 -1.1034000000e+00 1.7004000000e+00 2744 -1.1138000000e+00 1.6743000000e+00 2745 -1.1361000000e+00 1.6563000000e+00 2746 -1.1283000000e+00 1.6223000000e+00 2747 -1.1165000000e+00 1.5888000000e+00 2748 -1.1350000000e+00 1.5644000000e+00 2749 -1.1052000000e+00 1.5555000000e+00 2750 -1.0985000000e+00 1.5164000000e+00 2751 3.4909000000e+00 1.9140000000e-01 2752 3.4600000000e+00 2.1012000000e-01 2753 3.4279000000e+00 1.9310000000e-01 2754 3.3978000000e+00 2.1328000000e-01 2755 3.3682000000e+00 2.3333000000e-01 2756 3.3706000000e+00 2.6882000000e-01 2757 3.3731000000e+00 3.0395000000e-01 2758 3.3756000000e+00 3.3865000000e-01 2759 3.4061000000e+00 3.5375000000e-01 2760 3.4359000000e+00 3.6920000000e-01 2761 3.4368000000e+00 4.0236000000e-01 2762 3.4366000000e+00 4.3488000000e-01 2763 3.4346000000e+00 4.6781000000e-01 2764 3.4029000000e+00 4.8144000000e-01 2765 3.3991000000e+00 5.1770000000e-01 2766 3.3983000000e+00 5.5513000000e-01 2767 3.3984000000e+00 5.9175000000e-01 2768 3.3988000000e+00 6.2774000000e-01 2769 3.3992000000e+00 6.6333000000e-01 2770 3.3687000000e+00 6.8092000000e-01 2771 3.3691000000e+00 7.1613000000e-01 2772 3.3694000000e+00 7.5132000000e-01 2773 3.3697000000e+00 7.8651000000e-01 2774 3.3699000000e+00 8.2171000000e-01 2775 3.3701000000e+00 8.5690000000e-01 2776 3.3704000000e+00 8.9207000000e-01 2777 3.3706000000e+00 9.2722000000e-01 2778 3.3707000000e+00 9.6233000000e-01 2779 3.3709000000e+00 9.9741000000e-01 2780 3.3710000000e+00 1.0325000000e+00 2781 3.3711000000e+00 1.0675000000e+00 2782 3.3711000000e+00 1.1025000000e+00 2783 3.3711000000e+00 1.1375000000e+00 2784 3.3711000000e+00 1.1725000000e+00 2785 3.3710000000e+00 1.2076000000e+00 2786 3.3710000000e+00 1.2426000000e+00 2787 3.3709000000e+00 1.2777000000e+00 2788 3.3707000000e+00 1.3128000000e+00 2789 3.3706000000e+00 1.3479000000e+00 2790 3.3704000000e+00 1.3830000000e+00 2791 3.3702000000e+00 1.4182000000e+00 2792 3.3699000000e+00 1.4535000000e+00 2793 3.3696000000e+00 1.4888000000e+00 2794 3.3693000000e+00 1.5241000000e+00 2795 3.3689000000e+00 1.5596000000e+00 2796 3.3684000000e+00 1.5951000000e+00 2797 3.3679000000e+00 1.6306000000e+00 2798 3.3673000000e+00 1.6663000000e+00 2799 3.3665000000e+00 1.7020000000e+00 2800 3.3656000000e+00 1.7379000000e+00 2801 3.3643000000e+00 1.7740000000e+00 2802 3.3629000000e+00 1.8104000000e+00 2803 3.3304000000e+00 1.8300000000e+00 2804 3.0440000000e+00 1.2155000000e-01 2805 3.0617000000e+00 1.5195000000e-01 2806 3.0968000000e+00 1.5192000000e-01 2807 3.1318000000e+00 1.5186000000e-01 2808 3.1490000000e+00 1.2158000000e-01 2809 1.6978000000e+00 2.1272000000e-01 2810 1.7148000000e+00 1.8175000000e-01 2811 1.7319000000e+00 1.5106000000e-01 2812 1.7141000000e+00 1.2102000000e-01 2813 1.7499000000e+00 1.8099000000e-01 2814 1.7848000000e+00 1.8023000000e-01 2815 1.8194000000e+00 1.7952000000e-01 2816 1.8363000000e+00 1.4949000000e-01 2817 1.8027000000e+00 2.0977000000e-01 2818 1.8371000000e+00 2.0885000000e-01 2819 1.8538000000e+00 1.7897000000e-01 2820 1.8708000000e+00 1.4921000000e-01 2821 1.8535000000e+00 1.1956000000e-01 2822 1.8360000000e+00 8.9799000000e-02 2823 1.8708000000e+00 8.9674000000e-02 2824 3.3324000000e+00 1.7929000000e+00 2825 3.3004000000e+00 1.8115000000e+00 2826 3.2971000000e+00 1.8479000000e+00 2827 3.2688000000e+00 1.8290000000e+00 2828 3.2421000000e+00 1.8418000000e+00 2829 3.2145000000e+00 1.8346000000e+00 2830 3.1814000000e+00 1.8288000000e+00 2831 3.1472000000e+00 1.8252000000e+00 2832 3.1126000000e+00 1.8213000000e+00 2833 3.0765000000e+00 1.8173000000e+00 2834 3.0370000000e+00 1.8125000000e+00 2835 3.0131000000e+00 1.7920000000e+00 2836 2.9848000000e+00 1.7896000000e+00 2837 2.9501000000e+00 1.7885000000e+00 2838 2.9294000000e+00 1.8195000000e+00 2839 2.9142000000e+00 1.7873000000e+00 2840 2.8932000000e+00 1.8191000000e+00 2841 4.3855000000e-01 1.0120000000e-01 2842 4.5633000000e-01 1.3192000000e-01 2843 4.1958000000e-01 1.3172000000e-01 2844 4.3897000000e-01 1.6255000000e-01 2845 4.7453000000e-01 1.6232000000e-01 2846 5.1000000000e-01 1.6229000000e-01 2847 4.9246000000e-01 1.9257000000e-01 2848 5.2798000000e-01 1.9273000000e-01 2849 5.0997000000e-01 2.2304000000e-01 2850 5.4527000000e-01 2.2359000000e-01 2851 5.6478000000e-01 1.9285000000e-01 2852 5.2723000000e-01 2.5336000000e-01 2853 5.5764000000e-01 2.5089000000e-01 2854 5.8411000000e-01 2.2867000000e-01 2855 6.0582000000e-01 1.8987000000e-01 2856 5.8015000000e-01 1.6025000000e-01 2857 5.4545000000e-01 1.6204000000e-01 2858 4.9200000000e-01 2.5341000000e-01 2859 5.0959000000e-01 2.8860000000e-01 2860 5.4896000000e-01 2.8062000000e-01 2861 1.2356000000e+00 7.8209000000e-02 2862 1.2565000000e+00 1.2947000000e-01 2863 1.2884000000e+00 1.5330000000e-01 2864 1.3215000000e+00 1.5886000000e-01 2865 1.3458000000e+00 1.8023000000e-01 2866 1.3869000000e+00 1.9166000000e-01 2867 1.4288000000e+00 1.8857000000e-01 2868 1.4492000000e+00 2.1869000000e-01 2869 1.4849000000e+00 2.1689000000e-01 2870 1.5031000000e+00 2.4667000000e-01 2871 1.5383000000e+00 2.4596000000e-01 2872 1.5559000000e+00 2.7624000000e-01 2873 1.5209000000e+00 2.7645000000e-01 2874 1.5382000000e+00 3.0632000000e-01 2875 1.5036000000e+00 3.0656000000e-01 2876 1.5207000000e+00 3.3603000000e-01 2877 1.4863000000e+00 3.3650000000e-01 2878 1.5035000000e+00 3.6590000000e-01 2879 1.5376000000e+00 3.6509000000e-01 2880 1.5549000000e+00 3.3599000000e-01 2881 1.5731000000e+00 3.0679000000e-01 2882 1.5914000000e+00 2.7647000000e-01 2883 1.6274000000e+00 2.7656000000e-01 2884 1.4862000000e+00 2.7711000000e-01 2885 1.4692000000e+00 3.0708000000e-01 2886 1.4518000000e+00 3.3690000000e-01 2887 1.4690000000e+00 3.6666000000e-01 2888 1.4865000000e+00 3.9632000000e-01 2889 1.5211000000e+00 3.9501000000e-01 2890 1.5045000000e+00 4.2578000000e-01 2891 1.5392000000e+00 4.2380000000e-01 2892 1.5550000000e+00 3.9333000000e-01 2893 3.4910000000e+00 1.5479000000e-01 2894 3.4590000000e+00 1.7266000000e-01 2895 3.4254000000e+00 1.5589000000e-01 2896 3.3952000000e+00 1.7704000000e-01 2897 3.3655000000e+00 1.9746000000e-01 2898 3.3362000000e+00 2.1790000000e-01 2899 3.3389000000e+00 2.5331000000e-01 2900 3.3416000000e+00 2.8855000000e-01 2901 3.3444000000e+00 3.2357000000e-01 2902 3.3474000000e+00 3.5831000000e-01 2903 3.3783000000e+00 3.7280000000e-01 2904 3.4081000000e+00 3.8709000000e-01 2905 3.4097000000e+00 4.1858000000e-01 2906 3.4082000000e+00 4.4891000000e-01 2907 3.3783000000e+00 4.5823000000e-01 2908 3.3651000000e+00 4.9364000000e-01 2909 3.3657000000e+00 5.3563000000e-01 2910 3.3665000000e+00 5.7343000000e-01 2911 3.3673000000e+00 6.0986000000e-01 2912 3.3681000000e+00 6.4557000000e-01 2913 3.3377000000e+00 6.6334000000e-01 2914 3.3383000000e+00 6.9838000000e-01 2915 3.3386000000e+00 7.3347000000e-01 2916 3.3389000000e+00 7.6864000000e-01 2917 3.3392000000e+00 8.0386000000e-01 2918 3.3394000000e+00 8.3910000000e-01 2919 3.3397000000e+00 8.7433000000e-01 2920 3.3399000000e+00 9.0954000000e-01 2921 3.3402000000e+00 9.4471000000e-01 2922 3.3404000000e+00 9.7983000000e-01 2923 3.3405000000e+00 1.0149000000e+00 2924 3.3407000000e+00 1.0500000000e+00 2925 3.3407000000e+00 1.0850000000e+00 2926 3.3408000000e+00 1.1200000000e+00 2927 3.3407000000e+00 1.1550000000e+00 2928 3.3407000000e+00 1.1901000000e+00 2929 3.3406000000e+00 1.2251000000e+00 2930 3.3405000000e+00 1.2602000000e+00 2931 3.3404000000e+00 1.2953000000e+00 2932 3.3402000000e+00 1.3304000000e+00 2933 3.3400000000e+00 1.3656000000e+00 2934 3.3397000000e+00 1.4008000000e+00 2935 3.3394000000e+00 1.4361000000e+00 2936 3.3391000000e+00 1.4714000000e+00 2937 3.3387000000e+00 1.5068000000e+00 2938 3.3383000000e+00 1.5423000000e+00 2939 3.3378000000e+00 1.5779000000e+00 2940 3.3373000000e+00 1.6135000000e+00 2941 3.3367000000e+00 1.6492000000e+00 2942 3.3360000000e+00 1.6849000000e+00 2943 3.3351000000e+00 1.7207000000e+00 2944 3.3340000000e+00 1.7567000000e+00 2945 3.3023000000e+00 1.7754000000e+00 2946 3.2709000000e+00 1.7939000000e+00 2947 3.2406000000e+00 1.8123000000e+00 2948 3.2065000000e+00 1.7976000000e+00 2949 3.1694000000e+00 1.7974000000e+00 2950 3.1359000000e+00 1.7929000000e+00 2951 3.1009000000e+00 1.7876000000e+00 2952 3.0647000000e+00 1.7824000000e+00 2953 3.0348000000e+00 1.7787000000e+00 2954 3.0097000000e+00 1.7603000000e+00 2955 2.9717000000e+00 1.7583000000e+00 2956 2.9358000000e+00 1.7564000000e+00 2957 2.8994000000e+00 1.7544000000e+00 2958 2.8774000000e+00 1.7862000000e+00 2959 2.8563000000e+00 1.8187000000e+00 2960 2.8188000000e+00 1.8189000000e+00 2961 2.7811000000e+00 1.8203000000e+00 2962 2.7441000000e+00 1.8230000000e+00 2963 2.7083000000e+00 1.8262000000e+00 2964 2.7243000000e+00 1.7934000000e+00 2965 2.6892000000e+00 1.7976000000e+00 2966 2.6738000000e+00 1.8289000000e+00 2967 2.6403000000e+00 1.8305000000e+00 2968 2.6068000000e+00 1.8305000000e+00 2969 2.5724000000e+00 1.8297000000e+00 2970 2.5369000000e+00 1.8287000000e+00 2971 2.5005000000e+00 1.8281000000e+00 2972 2.4632000000e+00 1.8282000000e+00 2973 2.4275000000e+00 1.8313000000e+00 2974 2.3947000000e+00 1.8337000000e+00 2975 2.3617000000e+00 1.8330000000e+00 2976 2.3464000000e+00 1.8024000000e+00 2977 2.3305000000e+00 1.7725000000e+00 2978 2.2961000000e+00 1.7706000000e+00 2979 2.2605000000e+00 1.7690000000e+00 2980 2.2245000000e+00 1.7682000000e+00 2981 2.1885000000e+00 1.7677000000e+00 2982 2.1526000000e+00 1.7675000000e+00 2983 2.1168000000e+00 1.7674000000e+00 2984 2.0811000000e+00 1.7675000000e+00 2985 2.0454000000e+00 1.7678000000e+00 2986 2.0100000000e+00 1.7683000000e+00 2987 1.9748000000e+00 1.7688000000e+00 2988 1.9399000000e+00 1.7693000000e+00 2989 1.9050000000e+00 1.7695000000e+00 2990 1.8702000000e+00 1.7696000000e+00 2991 1.8353000000e+00 1.7695000000e+00 2992 1.8003000000e+00 1.7693000000e+00 2993 1.7651000000e+00 1.7692000000e+00 2994 1.7298000000e+00 1.7691000000e+00 2995 1.6945000000e+00 1.7691000000e+00 2996 1.6592000000e+00 1.7692000000e+00 2997 1.6415000000e+00 1.7997000000e+00 2998 1.6238000000e+00 1.8302000000e+00 2999 1.5887000000e+00 1.8302000000e+00 3000 1.5536000000e+00 1.8302000000e+00 3001 1.5185000000e+00 1.8302000000e+00 3002 1.4835000000e+00 1.8302000000e+00 3003 2.0593000000e-01 1.8001000000e+00 3004 1.7091000000e-01 1.8001000000e+00 3005 1.3589000000e-01 1.8001000000e+00 3006 1.0087000000e-01 1.8001000000e+00 3007 6.5859000000e-02 1.8001000000e+00 3008 3.0848000000e-02 1.8001000000e+00 3009 -4.1582000000e-03 1.8001000000e+00 3010 -2.1667000000e-02 1.7698000000e+00 3011 -5.6667000000e-02 1.7698000000e+00 3012 -9.1661000000e-02 1.7698000000e+00 3013 -1.2665000000e-01 1.7698000000e+00 3014 -1.6163000000e-01 1.7698000000e+00 3015 -1.9661000000e-01 1.7698000000e+00 3016 -2.3159000000e-01 1.7699000000e+00 3017 -2.6657000000e-01 1.7699000000e+00 3018 -3.0155000000e-01 1.7699000000e+00 3019 -3.3653000000e-01 1.7699000000e+00 3020 -3.7152000000e-01 1.7699000000e+00 3021 -4.0651000000e-01 1.7699000000e+00 3022 -4.4150000000e-01 1.7699000000e+00 3023 -4.7650000000e-01 1.7699000000e+00 3024 -5.1150000000e-01 1.7699000000e+00 3025 -5.4651000000e-01 1.7699000000e+00 3026 -5.8152000000e-01 1.7699000000e+00 3027 -6.1654000000e-01 1.7699000000e+00 3028 -6.5157000000e-01 1.7699000000e+00 3029 -6.8661000000e-01 1.7698000000e+00 3030 -7.2167000000e-01 1.7697000000e+00 3031 -7.5673000000e-01 1.7696000000e+00 3032 -7.9180000000e-01 1.7695000000e+00 3033 -8.2687000000e-01 1.7693000000e+00 3034 -8.6192000000e-01 1.7690000000e+00 3035 -8.9696000000e-01 1.7686000000e+00 3036 -9.3198000000e-01 1.7680000000e+00 3037 -9.6697000000e-01 1.7672000000e+00 3038 -9.8437000000e-01 1.7365000000e+00 3039 -1.0192000000e+00 1.7353000000e+00 3040 -1.0539000000e+00 1.7337000000e+00 3041 -1.0702000000e+00 1.7031000000e+00 3042 -8.7954000000e-01 1.7385000000e+00 3043 -9.1455000000e-01 1.7380000000e+00 3044 -9.4950000000e-01 1.7374000000e+00 3045 -9.6700000000e-01 1.7068000000e+00 3046 -1.0017000000e+00 1.7059000000e+00 3047 -1.0362000000e+00 1.7047000000e+00 3048 -1.0532000000e+00 1.6745000000e+00 3049 -1.0861000000e+00 1.6742000000e+00 3050 -1.1047000000e+00 1.6481000000e+00 3051 -1.0928000000e+00 1.6162000000e+00 3052 -1.0812000000e+00 1.5827000000e+00 3053 -1.0190000000e+00 1.6754000000e+00 3054 -1.0365000000e+00 1.6446000000e+00 3055 -1.0714000000e+00 1.6447000000e+00 3056 -1.0548000000e+00 1.6105000000e+00 3057 -1.0519000000e+00 1.5782000000e+00 3058 -1.0661000000e+00 1.5470000000e+00 3059 -1.0627000000e+00 1.5104000000e+00 3060 -1.0805000000e+00 1.4902000000e+00 3061 -1.0552000000e+00 1.4820000000e+00 3062 -1.0484000000e+00 1.4502000000e+00 3063 -1.0460000000e+00 1.4136000000e+00 3064 -1.0776000000e+00 1.3942000000e+00 3065 -1.0780000000e+00 1.3585000000e+00 3066 -1.0785000000e+00 1.3228000000e+00 3067 -1.0792000000e+00 1.2871000000e+00 3068 -1.0800000000e+00 1.2515000000e+00 3069 -1.0466000000e+00 1.3771000000e+00 3070 -1.0470000000e+00 1.3411000000e+00 3071 -1.0475000000e+00 1.3051000000e+00 3072 -1.0485000000e+00 1.2692000000e+00 3073 -1.0496000000e+00 1.2336000000e+00 3074 -1.0808000000e+00 1.2162000000e+00 3075 -1.0816000000e+00 1.1810000000e+00 3076 -1.0515000000e+00 1.1634000000e+00 3077 -1.0216000000e+00 1.1458000000e+00 3078 -9.9166000000e-01 1.1283000000e+00 3079 -9.6167000000e-01 1.1110000000e+00 3080 -9.3145000000e-01 1.0938000000e+00 3081 -9.3142000000e-01 1.0586000000e+00 3082 -9.3149000000e-01 1.0233000000e+00 3083 -9.3161000000e-01 9.8805000000e-01 3084 -9.0115000000e-01 1.0056000000e+00 3085 -9.0137000000e-01 9.7026000000e-01 3086 -1.0134000000e+00 3.1057000000e-02 3087 -9.7860000000e-01 3.0810000000e-02 3088 -1.0483000000e+00 3.1648000000e-02 3089 -1.0298000000e+00 6.2256000000e-02 3090 -9.9539000000e-01 6.1627000000e-02 3091 -9.0097000000e-01 1.0765000000e+00 3092 -9.0098000000e-01 1.0410000000e+00 3093 1.0967000000e+00 1.5734000000e-01 3094 1.1209000000e+00 1.4242000000e-01 3095 -9.4372000000e-01 3.0715000000e-02 3096 -9.0877000000e-01 3.0647000000e-02 3097 1.6260000000e+00 9.1529000000e-02 3098 -1.0646000000e+00 6.4047000000e-02 3099 -1.0998000000e+00 6.5588000000e-02 3100 -1.1344000000e+00 6.7772000000e-02 3101 -1.1164000000e+00 9.6089000000e-02 3102 -1.0808000000e+00 9.9185000000e-02 3103 -1.0453000000e+00 9.3079000000e-02 3104 -1.0120000000e+00 9.2080000000e-02 3105 -9.7778000000e-01 9.2097000000e-02 3106 -9.9513000000e-01 1.2216000000e-01 3107 -9.6153000000e-01 1.1458000000e+00 3108 -9.3160000000e-01 1.1287000000e+00 3109 -9.0124000000e-01 1.1118000000e+00 3110 -8.7037000000e-01 1.0946000000e+00 3111 -8.7026000000e-01 1.0588000000e+00 3112 -8.7052000000e-01 1.0232000000e+00 3113 -1.0564000000e+00 1.1965000000e-01 3114 -1.0283000000e+00 1.2126000000e-01 3115 -1.0480000000e+00 1.5015000000e-01 3116 -1.0132000000e+00 1.5042000000e-01 3117 -9.7900000000e-01 1.5405000000e-01 3118 -9.6045000000e-01 1.2308000000e-01 3119 -9.4259000000e-01 1.5498000000e-01 3120 -9.2516000000e-01 1.2300000000e-01 3121 -9.0682000000e-01 1.5334000000e-01 3122 -8.9005000000e-01 1.2245000000e-01 3123 -9.0801000000e-01 9.1984000000e-02 3124 -9.4300000000e-01 9.2165000000e-02 3125 -9.2586000000e-01 6.1367000000e-02 3126 -9.6073000000e-01 6.1464000000e-02 3127 -8.7305000000e-01 9.1704000000e-02 3128 -8.9091000000e-01 6.1224000000e-02 3129 -6.8132000000e-01 6.0720000000e-02 3130 -7.1626000000e-01 6.0753000000e-02 3131 -9.6009000000e-01 6.9030000000e-01 3132 -9.3174000000e-01 7.0836000000e-01 3133 -9.3004000000e-01 6.7561000000e-01 3134 -9.0414000000e-01 6.9319000000e-01 3135 -9.0325000000e-01 7.2416000000e-01 3136 -9.0164000000e-01 6.6306000000e-01 3137 -9.2553000000e-01 6.4342000000e-01 3138 -9.5713000000e-01 6.5530000000e-01 3139 1.7679000000e+00 2.1076000000e-01 3140 1.7861000000e+00 2.4034000000e-01 3141 1.8208000000e+00 2.3906000000e-01 3142 1.8549000000e+00 2.3777000000e-01 3143 1.8712000000e+00 2.0814000000e-01 3144 1.8880000000e+00 1.7869000000e-01 3145 1.9052000000e+00 1.4916000000e-01 3146 1.8881000000e+00 1.1945000000e-01 3147 1.9055000000e+00 8.9651000000e-02 3148 -8.4167000000e-01 8.6448000000e-01 3149 -8.4160000000e-01 8.9937000000e-01 3150 -8.7149000000e-01 9.1718000000e-01 3151 -8.4129000000e-01 9.3438000000e-01 3152 -8.7124000000e-01 9.5236000000e-01 3153 -8.4080000000e-01 9.6958000000e-01 3154 -8.1096000000e-01 9.5137000000e-01 3155 -8.1159000000e-01 9.1638000000e-01 3156 -8.1199000000e-01 8.8164000000e-01 3157 -8.1203000000e-01 8.4713000000e-01 3158 -7.8277000000e-01 8.6405000000e-01 3159 -7.8286000000e-01 8.3017000000e-01 3160 -8.1149000000e-01 8.1280000000e-01 3161 -8.4135000000e-01 8.2962000000e-01 3162 4.5740000000e-01 1.9252000000e-01 3163 4.7496000000e-01 2.2255000000e-01 3164 4.4063000000e-01 2.2213000000e-01 3165 4.2293000000e-01 1.9298000000e-01 3166 4.0726000000e-01 2.2219000000e-01 3167 3.9026000000e-01 1.9468000000e-01 3168 4.0315000000e-01 1.6381000000e-01 3169 3.6943000000e-01 1.6991000000e-01 3170 3.6388000000e-01 1.9715000000e-01 3171 3.7503000000e-01 2.2202000000e-01 3172 3.4409000000e-01 2.1546000000e-01 3173 3.5389000000e-01 2.5213000000e-01 3174 3.9089000000e-01 2.5047000000e-01 3175 3.7810000000e-01 2.7649000000e-01 3176 4.0723000000e-01 2.7908000000e-01 3177 4.2391000000e-01 2.5085000000e-01 3178 4.4013000000e-01 2.7959000000e-01 3179 4.2385000000e-01 3.0759000000e-01 3180 4.5741000000e-01 2.5164000000e-01 3181 1.4682000000e+00 2.4790000000e-01 3182 1.4520000000e+00 2.7813000000e-01 3183 1.4352000000e+00 3.0742000000e-01 3184 1.4172000000e+00 3.3674000000e-01 3185 1.4341000000e+00 3.6712000000e-01 3186 1.3988000000e+00 3.6719000000e-01 3187 1.4161000000e+00 3.9802000000e-01 3188 1.4515000000e+00 3.9733000000e-01 3189 1.4133000000e+00 2.2210000000e-01 3190 1.4339000000e+00 2.5000000000e-01 3191 3.4790000000e+00 9.4652000000e-02 3192 1.3817000000e+00 3.3547000000e-01 3193 1.4016000000e+00 3.0643000000e-01 3194 1.3647000000e+00 2.9942000000e-01 3195 1.3450000000e+00 3.3572000000e-01 3196 1.3631000000e+00 3.6739000000e-01 3197 3.4423000000e+00 9.2942000000e-02 3198 3.4586000000e+00 1.3062000000e-01 3199 3.4939000000e+00 1.2296000000e-01 3200 3.4196000000e+00 1.2042000000e-01 3201 3.3923000000e+00 1.4147000000e-01 3202 3.3626000000e+00 1.6102000000e-01 3203 3.3330000000e+00 1.8214000000e-01 3204 3.3042000000e+00 2.0307000000e-01 3205 3.3072000000e+00 2.3804000000e-01 3206 3.3098000000e+00 2.7317000000e-01 3207 3.3127000000e+00 3.0844000000e-01 3208 3.3160000000e+00 3.4343000000e-01 3209 3.3193000000e+00 3.7817000000e-01 3210 3.3510000000e+00 3.9314000000e-01 3211 3.3225000000e+00 4.1323000000e-01 3212 3.3564000000e+00 4.3045000000e-01 3213 3.3817000000e+00 4.0576000000e-01 3214 1.3798000000e+00 2.2977000000e-01 3215 1.4014000000e+00 2.5392000000e-01 3216 1.4193000000e+00 2.7934000000e-01 3217 -1.2935000000e+00 2.1832000000e-01 3218 -1.2624000000e+00 2.0077000000e-01 3219 -1.2313000000e+00 1.8306000000e-01 3220 -1.2308000000e+00 1.4771000000e-01 3221 -1.2000000000e+00 1.6517000000e-01 3222 -1.2006000000e+00 2.0073000000e-01 3223 -1.1694000000e+00 1.8297000000e-01 3224 -1.1685000000e+00 1.4693000000e-01 3225 -1.1380000000e+00 1.6524000000e-01 3226 -1.1353000000e+00 1.2674000000e-01 3227 -1.1688000000e+00 1.1182000000e-01 3228 -1.1444000000e+00 9.5981000000e-02 3229 -1.1669000000e+00 7.7498000000e-02 3230 -1.1984000000e+00 9.4119000000e-02 3231 -1.1957000000e+00 5.7737000000e-02 3232 -1.2292000000e+00 7.5817000000e-02 3233 -1.2277000000e+00 3.5303000000e-02 3234 -1.1922000000e+00 2.6122000000e-02 3235 -1.2662000000e+00 2.7297000000e-02 3236 -1.2619000000e+00 6.0154000000e-02 3237 -1.2943000000e+00 4.7288000000e-02 3238 -1.2951000000e+00 2.1040000000e-02 3239 -1.2614000000e+00 9.5398000000e-02 3240 -1.2301000000e+00 1.1220000000e-01 3241 -1.1995000000e+00 1.2965000000e-01 3242 3.1591000000e+00 1.7669000000e+00 3243 3.1261000000e+00 1.7593000000e+00 3244 3.0899000000e+00 1.7523000000e+00 3245 3.0494000000e+00 1.7465000000e+00 3246 3.0218000000e+00 1.7288000000e+00 3247 2.9923000000e+00 1.7286000000e+00 3248 2.9578000000e+00 1.7262000000e+00 3249 2.9221000000e+00 1.7234000000e+00 3250 2.8854000000e+00 1.7205000000e+00 3251 2.8620000000e+00 1.7523000000e+00 3252 2.8396000000e+00 1.7853000000e+00 3253 2.8228000000e+00 1.7502000000e+00 3254 2.8004000000e+00 1.7851000000e+00 3255 2.7613000000e+00 1.7882000000e+00 3256 2.7393000000e+00 1.7596000000e+00 3257 2.7038000000e+00 1.7652000000e+00 3258 2.6691000000e+00 1.7706000000e+00 3259 2.6563000000e+00 1.8013000000e+00 3260 2.6249000000e+00 1.8021000000e+00 3261 2.5919000000e+00 1.8002000000e+00 3262 2.5569000000e+00 1.7984000000e+00 3263 2.5205000000e+00 1.7967000000e+00 3264 2.4826000000e+00 1.7953000000e+00 3265 2.4402000000e+00 1.7942000000e+00 3266 2.4092000000e+00 1.8089000000e+00 3267 2.3804000000e+00 1.8048000000e+00 3268 2.3668000000e+00 1.7707000000e+00 3269 2.3454000000e+00 1.7482000000e+00 3270 2.3169000000e+00 1.7417000000e+00 3271 2.2807000000e+00 1.7383000000e+00 3272 2.2440000000e+00 1.7373000000e+00 3273 2.2076000000e+00 1.7366000000e+00 3274 2.1712000000e+00 1.7364000000e+00 3275 2.1352000000e+00 1.7364000000e+00 3276 2.0993000000e+00 1.7364000000e+00 3277 2.0635000000e+00 1.7366000000e+00 3278 6.6093000000e-01 1.8000000000e+00 3279 6.2594000000e-01 1.8001000000e+00 3280 5.9097000000e-01 1.8001000000e+00 3281 5.5599000000e-01 1.8002000000e+00 3282 5.2102000000e-01 1.8002000000e+00 3283 4.8605000000e-01 1.8002000000e+00 3284 4.5106000000e-01 1.8002000000e+00 3285 4.1606000000e-01 1.8002000000e+00 3286 3.8105000000e-01 1.8002000000e+00 3287 3.4603000000e-01 1.8001000000e+00 3288 3.1101000000e-01 1.8001000000e+00 3289 2.7598000000e-01 1.8001000000e+00 3290 2.4096000000e-01 1.8001000000e+00 3291 2.2348000000e-01 1.7698000000e+00 3292 1.8844000000e-01 1.7698000000e+00 3293 1.5342000000e-01 1.7698000000e+00 3294 1.1839000000e-01 1.7698000000e+00 3295 8.3369000000e-02 1.7698000000e+00 3296 4.8352000000e-02 1.7698000000e+00 3297 1.3339000000e-02 1.7698000000e+00 3298 -4.1746000000e-03 1.7394000000e+00 3299 -3.9180000000e-02 1.7394000000e+00 3300 -7.4176000000e-02 1.7395000000e+00 3301 -1.0916000000e-01 1.7395000000e+00 3302 -1.4414000000e-01 1.7395000000e+00 3303 -1.7911000000e-01 1.7395000000e+00 3304 -2.1408000000e-01 1.7395000000e+00 3305 -2.4905000000e-01 1.7396000000e+00 3306 -2.8402000000e-01 1.7396000000e+00 3307 -3.1900000000e-01 1.7396000000e+00 3308 -3.5398000000e-01 1.7396000000e+00 3309 -3.8896000000e-01 1.7396000000e+00 3310 -4.2395000000e-01 1.7396000000e+00 3311 -4.5894000000e-01 1.7396000000e+00 3312 -4.9394000000e-01 1.7397000000e+00 3313 -5.2894000000e-01 1.7397000000e+00 3314 -5.6395000000e-01 1.7397000000e+00 3315 -5.9898000000e-01 1.7396000000e+00 3316 -6.3401000000e-01 1.7396000000e+00 3317 -6.6906000000e-01 1.7396000000e+00 3318 -7.0412000000e-01 1.7395000000e+00 3319 -7.3920000000e-01 1.7394000000e+00 3320 -7.7430000000e-01 1.7392000000e+00 3321 -8.0939000000e-01 1.7390000000e+00 3322 -8.4448000000e-01 1.7388000000e+00 3323 -8.6216000000e-01 1.7083000000e+00 3324 -8.9721000000e-01 1.7080000000e+00 3325 -9.3217000000e-01 1.7075000000e+00 3326 -9.4984000000e-01 1.6771000000e+00 3327 -9.8450000000e-01 1.6764000000e+00 3328 -1.0020000000e+00 1.6462000000e+00 3329 -1.0188000000e+00 1.6163000000e+00 3330 -4.5439000000e-01 3.0767000000e-02 3331 -4.1914000000e-01 3.0842000000e-02 3332 -4.0119000000e-01 6.1780000000e-02 3333 -3.6601000000e-01 6.0600000000e-02 3334 -3.8209000000e-01 9.2582000000e-02 3335 -3.4782000000e-01 8.8560000000e-02 3336 -3.3198000000e-01 5.9811000000e-02 3337 -8.2104000000e-01 6.0939000000e-02 3338 -8.0328000000e-01 9.1298000000e-02 3339 -8.3815000000e-01 9.1465000000e-02 3340 -8.2037000000e-01 1.2175000000e-01 3341 -7.8558000000e-01 1.2159000000e-01 3342 -8.0268000000e-01 1.5191000000e-01 3343 -7.6798000000e-01 1.5185000000e-01 3344 -7.5050000000e-01 1.8221000000e-01 3345 -7.3294000000e-01 2.1251000000e-01 3346 -7.6806000000e-01 2.1275000000e-01 3347 -7.4982000000e-01 2.4305000000e-01 3348 -7.1534000000e-01 2.4231000000e-01 3349 -1.0208000000e+00 1.1806000000e+00 3350 -9.9119000000e-01 1.1630000000e+00 3351 -9.6115000000e-01 1.1801000000e+00 3352 -9.3181000000e-01 1.1632000000e+00 3353 -9.0185000000e-01 1.1467000000e+00 3354 -8.7111000000e-01 1.1302000000e+00 3355 -8.3947000000e-01 1.1133000000e+00 3356 -8.3911000000e-01 1.0769000000e+00 3357 -8.3956000000e-01 1.0408000000e+00 3358 -8.4020000000e-01 1.0050000000e+00 3359 -8.7089000000e-01 9.8767000000e-01 3360 -8.1016000000e-01 9.8662000000e-01 3361 -7.8045000000e-01 9.6810000000e-01 3362 -7.8142000000e-01 9.3309000000e-01 3363 -7.7930000000e-01 1.0034000000e+00 3364 -7.4978000000e-01 9.8456000000e-01 3365 -7.4834000000e-01 1.0197000000e+00 3366 -7.7784000000e-01 1.0390000000e+00 3367 -8.0919000000e-01 1.0222000000e+00 3368 -8.0805000000e-01 1.0583000000e+00 3369 -7.7563000000e-01 1.0755000000e+00 3370 -7.4647000000e-01 1.0549000000e+00 3371 -7.4354000000e-01 1.0893000000e+00 3372 -7.1590000000e-01 1.0699000000e+00 3373 -7.1755000000e-01 1.0356000000e+00 3374 -8.0689000000e-01 1.0955000000e+00 3375 -7.7091000000e-01 1.1158000000e+00 3376 -7.3797000000e-01 1.1170000000e+00 3377 -7.1432000000e-01 1.1023000000e+00 3378 -6.8635000000e-01 1.0856000000e+00 3379 -6.8714000000e-01 1.0516000000e+00 3380 -6.8833000000e-01 1.0169000000e+00 3381 -6.5770000000e-01 1.0333000000e+00 3382 -6.5884000000e-01 9.9827000000e-01 3383 -6.2788000000e-01 1.0148000000e+00 3384 -6.2694000000e-01 1.0502000000e+00 3385 -5.9669000000e-01 1.0316000000e+00 3386 -5.9793000000e-01 9.9604000000e-01 3387 -6.2914000000e-01 9.7945000000e-01 3388 -5.9925000000e-01 9.6046000000e-01 3389 -6.3063000000e-01 9.4397000000e-01 3390 -6.6024000000e-01 9.6306000000e-01 3391 1.1509000000e+00 1.7998000000e+00 3392 1.1159000000e+00 1.7999000000e+00 3393 1.0809000000e+00 1.7999000000e+00 3394 1.0460000000e+00 1.7999000000e+00 3395 3.0266000000e+00 1.5195000000e-01 3396 3.0444000000e+00 1.8238000000e-01 3397 3.0093000000e+00 1.8237000000e-01 3398 3.0271000000e+00 2.1284000000e-01 3399 3.0623000000e+00 2.1284000000e-01 3400 3.0796000000e+00 1.8235000000e-01 3401 3.1147000000e+00 1.8226000000e-01 3402 3.1497000000e+00 1.8207000000e-01 3403 3.1667000000e+00 1.5177000000e-01 3404 3.1838000000e+00 1.2172000000e-01 3405 3.2013000000e+00 9.1642000000e-02 3406 3.2366000000e+00 9.2240000000e-02 3407 3.2727000000e+00 9.2911000000e-02 3408 3.3083000000e+00 9.1127000000e-02 3409 3.3422000000e+00 8.9553000000e-02 3410 3.3753000000e+00 8.8788000000e-02 3411 3.4079000000e+00 8.9185000000e-02 3412 1.9403000000e+00 8.9728000000e-02 3413 1.9574000000e+00 1.1969000000e-01 3414 1.9743000000e+00 1.4976000000e-01 3415 2.0091000000e+00 1.5022000000e-01 3416 2.3957000000e+00 9.0861000000e-02 3417 2.4132000000e+00 1.2116000000e-01 3418 2.4307000000e+00 1.5145000000e-01 3419 2.4131000000e+00 1.8174000000e-01 3420 2.4306000000e+00 2.1203000000e-01 3421 2.4480000000e+00 2.4232000000e-01 3422 2.4655000000e+00 2.7259000000e-01 3423 2.4304000000e+00 2.7260000000e-01 3424 2.4479000000e+00 3.0286000000e-01 3425 2.4830000000e+00 3.0283000000e-01 3426 2.5006000000e+00 2.7259000000e-01 3427 2.5356000000e+00 2.7260000000e-01 3428 2.5706000000e+00 2.7263000000e-01 3429 2.6056000000e+00 2.7268000000e-01 3430 2.6232000000e+00 2.4242000000e-01 3431 2.6582000000e+00 2.4248000000e-01 3432 2.6406000000e+00 2.7274000000e-01 3433 2.6757000000e+00 2.7281000000e-01 3434 2.6933000000e+00 2.4253000000e-01 3435 2.6758000000e+00 2.1219000000e-01 3436 9.0133000000e-01 7.5679000000e-02 3437 8.6670000000e-01 8.0729000000e-02 3438 8.8830000000e-01 1.0851000000e-01 3439 8.5356000000e-01 1.1388000000e-01 3440 8.3172000000e-01 8.5694000000e-02 3441 8.4527000000e-01 5.2719000000e-02 3442 2.6581000000e+00 3.0308000000e-01 3443 2.6931000000e+00 3.0317000000e-01 3444 2.7107000000e+00 2.7289000000e-01 3445 2.7283000000e+00 2.4260000000e-01 3446 2.7108000000e+00 2.1224000000e-01 3447 2.7459000000e+00 2.1229000000e-01 3448 2.7634000000e+00 1.8198000000e-01 3449 2.7809000000e+00 1.5166000000e-01 3450 3.8660000000e-01 3.0943000000e-01 3451 8.1029000000e-01 5.7161000000e-02 3452 7.7506000000e-01 6.1304000000e-02 3453 7.9639000000e-01 9.0425000000e-02 3454 2.7985000000e+00 1.8203000000e-01 3455 2.8160000000e+00 1.5170000000e-01 3456 2.8336000000e+00 1.8208000000e-01 3457 2.8511000000e+00 1.5175000000e-01 3458 2.8335000000e+00 1.2137000000e-01 3459 2.8685000000e+00 1.2140000000e-01 3460 2.8862000000e+00 1.5179000000e-01 3461 2.9036000000e+00 1.2144000000e-01 3462 2.8860000000e+00 9.1059000000e-02 3463 2.8510000000e+00 9.1034000000e-02 3464 2.8687000000e+00 1.8214000000e-01 3465 2.9038000000e+00 1.8221000000e-01 3466 2.9213000000e+00 1.5184000000e-01 3467 2.9387000000e+00 1.2148000000e-01 3468 2.9564000000e+00 1.5189000000e-01 3469 2.9211000000e+00 9.1085000000e-02 3470 3.3599000000e+00 1.2206000000e-01 3471 3.3294000000e+00 1.4592000000e-01 3472 3.3000000000e+00 1.6745000000e-01 3473 3.2726000000e+00 1.8957000000e-01 3474 3.2760000000e+00 2.2325000000e-01 3475 3.2782000000e+00 2.5749000000e-01 3476 3.2800000000e+00 2.9310000000e-01 3477 3.2842000000e+00 3.2876000000e-01 3478 3.2879000000e+00 3.6327000000e-01 3479 3.2909000000e+00 3.9758000000e-01 3480 3.2932000000e+00 4.3210000000e-01 3481 3.3242000000e+00 4.4784000000e-01 3482 3.3503000000e+00 4.6243000000e-01 3483 3.3869000000e+00 4.3240000000e-01 3484 -1.2318000000e+00 2.1836000000e-01 3485 -1.2012000000e+00 2.3617000000e-01 3486 -1.1700000000e+00 2.1867000000e-01 3487 -1.1389000000e+00 2.0110000000e-01 3488 -1.1392000000e+00 2.3685000000e-01 3489 -1.1706000000e+00 2.5422000000e-01 3490 -1.1399000000e+00 2.7270000000e-01 3491 -1.1073000000e+00 2.5544000000e-01 3492 -1.1083000000e+00 2.1896000000e-01 3493 -1.1085000000e+00 1.8390000000e-01 3494 -1.1073000000e+00 1.4984000000e-01 3495 -1.0790000000e+00 1.6732000000e-01 3496 -1.0792000000e+00 2.0095000000e-01 3497 -1.0792000000e+00 1.3457000000e-01 3498 -1.1038000000e+00 1.2128000000e-01 3499 3.2954000000e+00 4.6687000000e-01 3500 3.3274000000e+00 4.8189000000e-01 3501 -1.0519000000e+00 1.8453000000e-01 3502 -1.0508000000e+00 2.1544000000e-01 3503 -1.0259000000e+00 1.9998000000e-01 3504 -1.0280000000e+00 1.7333000000e-01 3505 7.3907000000e-01 6.5635000000e-02 3506 7.6096000000e-01 9.5168000000e-02 3507 7.8219000000e-01 1.2398000000e-01 3508 8.1812000000e-01 1.1927000000e-01 3509 8.4079000000e-01 1.4769000000e-01 3510 8.0408000000e-01 1.5396000000e-01 3511 8.2889000000e-01 1.8276000000e-01 3512 8.6438000000e-01 1.7486000000e-01 3513 8.7573000000e-01 1.4142000000e-01 3514 9.0978000000e-01 1.3600000000e-01 3515 9.2271000000e-01 1.0338000000e-01 3516 9.5707000000e-01 9.8141000000e-02 3517 9.4408000000e-01 1.3129000000e-01 3518 9.7948000000e-01 1.2595000000e-01 3519 1.0189000000e+00 8.3970000000e-02 3520 8.9756000000e-01 1.6760000000e-01 3521 9.3032000000e-01 1.6381000000e-01 3522 9.6509000000e-01 1.6047000000e-01 3523 1.0012000000e+00 1.5540000000e-01 3524 1.0207000000e+00 1.8511000000e-01 3525 9.8647000000e-01 1.8871000000e-01 3526 1.0063000000e+00 2.1572000000e-01 3527 1.0393000000e+00 2.1350000000e-01 3528 1.0542000000e+00 1.8347000000e-01 3529 1.0243000000e+00 2.4387000000e-01 3530 1.0580000000e+00 2.4162000000e-01 3531 1.0432000000e+00 2.7252000000e-01 3532 1.0772000000e+00 2.6989000000e-01 3533 1.0624000000e+00 3.0124000000e-01 3534 1.0966000000e+00 2.9836000000e-01 3535 1.0819000000e+00 3.3001000000e-01 3536 1.1163000000e+00 3.2688000000e-01 3537 1.1017000000e+00 3.5873000000e-01 3538 1.1361000000e+00 3.5534000000e-01 3539 1.1506000000e+00 3.2355000000e-01 3540 1.1309000000e+00 2.9519000000e-01 3541 1.1112000000e+00 2.6682000000e-01 3542 1.0916000000e+00 2.3871000000e-01 3543 1.0724000000e+00 2.1113000000e-01 3544 1.0860000000e+00 1.8184000000e-01 3545 1.9923000000e+00 1.7380000000e+00 3546 1.9574000000e+00 1.7388000000e+00 3547 1.9227000000e+00 1.7392000000e+00 3548 1.8881000000e+00 1.7393000000e+00 3549 1.8534000000e+00 1.7393000000e+00 3550 1.8185000000e+00 1.7390000000e+00 3551 1.7834000000e+00 1.7386000000e+00 3552 1.7480000000e+00 1.7384000000e+00 3553 1.7125000000e+00 1.7384000000e+00 3554 1.6770000000e+00 1.7386000000e+00 3555 1.6417000000e+00 1.7387000000e+00 3556 1.6240000000e+00 1.7693000000e+00 3557 1.6063000000e+00 1.7998000000e+00 3558 1.5712000000e+00 1.7998000000e+00 3559 1.5361000000e+00 1.7998000000e+00 3560 1.5010000000e+00 1.7998000000e+00 3561 1.4660000000e+00 1.7998000000e+00 3562 1.4836000000e+00 1.7694000000e+00 3563 1.4485000000e+00 1.7694000000e+00 3564 1.4310000000e+00 1.7998000000e+00 3565 1.4485000000e+00 1.8302000000e+00 3566 1.4134000000e+00 1.8302000000e+00 3567 1.3784000000e+00 1.8302000000e+00 3568 1.3434000000e+00 1.8302000000e+00 3569 1.3084000000e+00 1.8302000000e+00 3570 1.2734000000e+00 1.8302000000e+00 3571 1.2559000000e+00 1.7998000000e+00 3572 1.2208000000e+00 1.7998000000e+00 3573 1.1858000000e+00 1.7998000000e+00 3574 1.1683000000e+00 1.7694000000e+00 3575 1.1334000000e+00 1.7694000000e+00 3576 1.0984000000e+00 1.7695000000e+00 3577 1.0635000000e+00 1.7695000000e+00 3578 1.0285000000e+00 1.7695000000e+00 3579 1.0110000000e+00 1.7999000000e+00 3580 9.7605000000e-01 1.7999000000e+00 3581 9.4108000000e-01 1.7999000000e+00 3582 9.0608000000e-01 1.7999000000e+00 3583 8.7107000000e-01 1.7998000000e+00 3584 8.3605000000e-01 1.7998000000e+00 3585 8.0101000000e-01 1.7999000000e+00 3586 7.6598000000e-01 1.7999000000e+00 3587 7.3095000000e-01 1.7999000000e+00 3588 6.9594000000e-01 1.8000000000e+00 3589 6.7843000000e-01 1.7696000000e+00 3590 6.4344000000e-01 1.7697000000e+00 3591 6.0847000000e-01 1.7698000000e+00 3592 5.7351000000e-01 1.7698000000e+00 3593 5.3856000000e-01 1.7699000000e+00 3594 5.0360000000e-01 1.7699000000e+00 3595 4.6863000000e-01 1.7699000000e+00 3596 4.3364000000e-01 1.7699000000e+00 3597 3.9863000000e-01 1.7698000000e+00 3598 3.6361000000e-01 1.7698000000e+00 3599 3.2858000000e-01 1.7698000000e+00 3600 2.9355000000e-01 1.7698000000e+00 3601 2.5851000000e-01 1.7698000000e+00 3602 2.4104000000e-01 1.7394000000e+00 3603 2.0599000000e-01 1.7394000000e+00 3604 1.7095000000e-01 1.7394000000e+00 3605 1.3592000000e-01 1.7394000000e+00 3606 1.0089000000e-01 1.7394000000e+00 3607 6.5860000000e-02 1.7394000000e+00 3608 3.0839000000e-02 1.7394000000e+00 3609 1.3318000000e-02 1.7090000000e+00 3610 -2.1696000000e-02 1.7091000000e+00 3611 -5.6698000000e-02 1.7091000000e+00 3612 -9.1686000000e-02 1.7091000000e+00 3613 -1.2666000000e-01 1.7091000000e+00 3614 -1.6163000000e-01 1.7092000000e+00 3615 -1.9658000000e-01 1.7092000000e+00 3616 -2.3154000000e-01 1.7092000000e+00 3617 -2.6650000000e-01 1.7092000000e+00 3618 -3.0146000000e-01 1.7093000000e+00 3619 -3.3642000000e-01 1.7093000000e+00 3620 -3.7140000000e-01 1.7093000000e+00 3621 -4.0638000000e-01 1.7093000000e+00 3622 -4.4137000000e-01 1.7093000000e+00 3623 -4.7636000000e-01 1.7094000000e+00 3624 -5.1136000000e-01 1.7094000000e+00 3625 -5.4637000000e-01 1.7094000000e+00 3626 -5.8139000000e-01 1.7094000000e+00 3627 -6.1642000000e-01 1.7093000000e+00 3628 -6.5148000000e-01 1.7093000000e+00 3629 -6.8655000000e-01 1.7092000000e+00 3630 -7.2165000000e-01 1.7091000000e+00 3631 -7.5677000000e-01 1.7090000000e+00 3632 -7.9191000000e-01 1.7088000000e+00 3633 -8.2704000000e-01 1.7086000000e+00 3634 -8.4478000000e-01 1.6781000000e+00 3635 -8.7993000000e-01 1.6779000000e+00 3636 -9.1497000000e-01 1.6775000000e+00 3637 -9.3286000000e-01 1.6472000000e+00 3638 -9.6757000000e-01 1.6469000000e+00 3639 -9.8533000000e-01 1.6171000000e+00 3640 -1.0033000000e+00 1.5884000000e+00 3641 -1.0310000000e+00 1.5907000000e+00 3642 -1.0263000000e+00 1.5599000000e+00 3643 -1.0367000000e+00 1.5259000000e+00 3644 -1.0391000000e+00 1.5007000000e+00 3645 -6.5697000000e-01 1.0681000000e+00 3646 -6.2663000000e-01 1.0854000000e+00 3647 -5.9574000000e-01 1.0675000000e+00 3648 -5.6500000000e-01 1.0486000000e+00 3649 -5.6659000000e-01 1.0127000000e+00 3650 -5.6794000000e-01 9.7713000000e-01 3651 -5.6905000000e-01 9.4143000000e-01 3652 -6.0072000000e-01 9.2470000000e-01 3653 -6.3242000000e-01 9.0835000000e-01 3654 -6.6189000000e-01 9.2779000000e-01 3655 -6.9118000000e-01 9.4690000000e-01 3656 -6.8969000000e-01 9.8196000000e-01 3657 -5.3509000000e-01 1.0291000000e+00 3658 -5.3684000000e-01 9.9369000000e-01 3659 -5.3791000000e-01 9.5842000000e-01 3660 -5.3803000000e-01 9.2249000000e-01 3661 -5.7032000000e-01 9.0533000000e-01 3662 -6.0254000000e-01 8.8865000000e-01 3663 -6.3473000000e-01 8.7245000000e-01 3664 -6.6394000000e-01 8.9250000000e-01 3665 -6.9288000000e-01 9.1192000000e-01 3666 -7.2187000000e-01 9.3085000000e-01 3667 -7.2044000000e-01 9.6577000000e-01 3668 -7.1903000000e-01 1.0008000000e+00 3669 -5.7215000000e-01 8.6887000000e-01 3670 -6.0478000000e-01 8.5215000000e-01 3671 -6.3789000000e-01 8.3577000000e-01 3672 -6.6668000000e-01 8.5724000000e-01 3673 -6.9493000000e-01 8.7722000000e-01 3674 -7.2338000000e-01 8.9621000000e-01 3675 -7.5222000000e-01 9.1474000000e-01 3676 -7.5331000000e-01 8.8036000000e-01 3677 -7.8222000000e-01 8.9838000000e-01 3678 -7.5104000000e-01 9.4953000000e-01 3679 3.2185000000e+00 1.2222000000e-01 3680 3.2539000000e+00 1.2391000000e-01 3681 3.2940000000e+00 1.2757000000e-01 3682 3.2670000000e+00 1.5639000000e-01 3683 3.3268000000e+00 1.1525000000e-01 3684 -1.1595000000e+00 3.7576000000e-02 3685 3.2417000000e+00 2.0958000000e-01 3686 3.2523000000e+00 2.4170000000e-01 3687 3.2437000000e+00 2.7565000000e-01 3688 3.2516000000e+00 3.1504000000e-01 3689 3.2570000000e+00 3.4918000000e-01 3690 3.2602000000e+00 3.8240000000e-01 3691 3.2622000000e+00 4.1620000000e-01 3692 3.2321000000e+00 4.0009000000e-01 3693 3.2330000000e+00 4.3415000000e-01 3694 3.2639000000e+00 4.5078000000e-01 3695 3.2656000000e+00 4.8610000000e-01 3696 3.2980000000e+00 5.0239000000e-01 3697 3.3317000000e+00 5.1806000000e-01 3698 3.3337000000e+00 5.5571000000e-01 3699 3.3353000000e+00 5.9239000000e-01 3700 3.3367000000e+00 6.2814000000e-01 3701 3.3068000000e+00 6.4617000000e-01 3702 3.3076000000e+00 6.8073000000e-01 3703 3.3079000000e+00 7.1556000000e-01 3704 3.3082000000e+00 7.5066000000e-01 3705 3.3084000000e+00 7.8590000000e-01 3706 3.3087000000e+00 8.2120000000e-01 3707 3.3089000000e+00 8.5650000000e-01 3708 3.3092000000e+00 8.9178000000e-01 3709 3.3095000000e+00 9.2702000000e-01 3710 3.3098000000e+00 9.6221000000e-01 3711 3.3100000000e+00 9.9733000000e-01 3712 3.3102000000e+00 1.0324000000e+00 3713 3.3103000000e+00 1.0674000000e+00 3714 3.3104000000e+00 1.1025000000e+00 3715 3.3104000000e+00 1.1375000000e+00 3716 3.3103000000e+00 1.1725000000e+00 3717 3.3102000000e+00 1.2076000000e+00 3718 3.3101000000e+00 1.2427000000e+00 3719 3.3100000000e+00 1.2778000000e+00 3720 3.3098000000e+00 1.3130000000e+00 3721 3.3095000000e+00 1.3481000000e+00 3722 3.3093000000e+00 1.3834000000e+00 3723 3.3089000000e+00 1.4187000000e+00 3724 3.3086000000e+00 1.4540000000e+00 3725 3.3081000000e+00 1.4895000000e+00 3726 3.3076000000e+00 1.5250000000e+00 3727 3.3071000000e+00 1.5607000000e+00 3728 3.3066000000e+00 1.5964000000e+00 3729 3.3060000000e+00 1.6321000000e+00 3730 3.3054000000e+00 1.6679000000e+00 3731 3.3047000000e+00 1.7037000000e+00 3732 3.3037000000e+00 1.7395000000e+00 3733 3.2723000000e+00 1.7583000000e+00 3734 3.2409000000e+00 1.7772000000e+00 3735 3.2122000000e+00 1.7600000000e+00 3736 3.1863000000e+00 1.7733000000e+00 3737 3.1842000000e+00 1.7450000000e+00 3738 3.1529000000e+00 1.7336000000e+00 3739 3.1178000000e+00 1.7230000000e+00 3740 3.0802000000e+00 1.7151000000e+00 3741 3.0450000000e+00 1.7077000000e+00 3742 3.0129000000e+00 1.7010000000e+00 3743 2.9799000000e+00 1.6972000000e+00 3744 2.9451000000e+00 1.6935000000e+00 3745 2.9092000000e+00 1.6897000000e+00 3746 2.8724000000e+00 1.6858000000e+00 3747 2.8476000000e+00 1.7173000000e+00 3748 2.8086000000e+00 1.7134000000e+00 3749 2.7789000000e+00 1.7477000000e+00 3750 2.7489000000e+00 1.7300000000e+00 3751 2.7186000000e+00 1.7329000000e+00 3752 2.6827000000e+00 1.7369000000e+00 3753 2.6417000000e+00 1.7440000000e+00 3754 2.6410000000e+00 1.7780000000e+00 3755 2.6130000000e+00 1.7719000000e+00 3756 2.5779000000e+00 1.7685000000e+00 3757 2.5416000000e+00 1.7660000000e+00 3758 2.5046000000e+00 1.7638000000e+00 3759 2.4666000000e+00 1.7608000000e+00 3760 -1.2941000000e+00 2.8837000000e-01 3761 -1.3246000000e+00 2.7077000000e-01 3762 -1.3244000000e+00 2.3578000000e-01 3763 -1.2938000000e+00 2.5335000000e-01 3764 -1.2636000000e+00 3.0601000000e-01 3765 -1.2632000000e+00 2.7098000000e-01 3766 -1.0001000000e+00 6.0017000000e-01 3767 -9.9390000000e-01 5.7134000000e-01 3768 -9.7204000000e-01 5.9622000000e-01 3769 -9.5746000000e-01 5.6205000000e-01 3770 7.9172000000e-01 1.9048000000e-01 3771 8.1778000000e-01 2.1959000000e-01 3772 8.5462000000e-01 2.1003000000e-01 3773 8.8871000000e-01 1.9970000000e-01 3774 2.1145000000e+00 1.5109000000e-01 3775 2.1497000000e+00 1.5120000000e-01 3776 2.1675000000e+00 1.2094000000e-01 3777 2.2027000000e+00 1.2100000000e-01 3778 2.1849000000e+00 1.5127000000e-01 3779 2.2201000000e+00 1.5132000000e-01 3780 2.2378000000e+00 1.2105000000e-01 3781 2.2204000000e+00 9.0750000000e-02 3782 2.2555000000e+00 9.0784000000e-02 3783 2.2729000000e+00 1.2108000000e-01 3784 2.3080000000e+00 1.2110000000e-01 3785 2.3431000000e+00 1.2113000000e-01 3786 2.3607000000e+00 9.0847000000e-02 3787 2.3781000000e+00 1.2114000000e-01 3788 2.3605000000e+00 1.5143000000e-01 3789 2.3956000000e+00 1.5144000000e-01 3790 2.3780000000e+00 1.8173000000e-01 3791 2.3955000000e+00 2.1203000000e-01 3792 2.4130000000e+00 2.4232000000e-01 3793 2.3778000000e+00 2.4232000000e-01 3794 2.3953000000e+00 2.7261000000e-01 3795 2.4128000000e+00 3.0289000000e-01 3796 2.4303000000e+00 3.3314000000e-01 3797 2.4654000000e+00 3.3308000000e-01 3798 2.5004000000e+00 3.3305000000e-01 3799 2.5180000000e+00 3.0283000000e-01 3800 2.5530000000e+00 3.0286000000e-01 3801 2.5880000000e+00 3.0291000000e-01 3802 2.6230000000e+00 3.0299000000e-01 3803 2.6404000000e+00 3.3331000000e-01 3804 2.6755000000e+00 3.3344000000e-01 3805 2.7106000000e+00 3.3357000000e-01 3806 2.7282000000e+00 3.0328000000e-01 3807 2.7458000000e+00 2.7298000000e-01 3808 2.7634000000e+00 2.4267000000e-01 3809 1.8021000000e+00 1.7081000000e+00 3810 1.7665000000e+00 1.7075000000e+00 3811 1.7306000000e+00 1.7076000000e+00 3812 1.6950000000e+00 1.7078000000e+00 3813 1.6595000000e+00 1.7080000000e+00 3814 1.6242000000e+00 1.7082000000e+00 3815 1.6065000000e+00 1.7388000000e+00 3816 1.5888000000e+00 1.7693000000e+00 3817 1.5537000000e+00 1.7694000000e+00 3818 1.5186000000e+00 1.7694000000e+00 3819 1.5011000000e+00 1.7390000000e+00 3820 1.4661000000e+00 1.7390000000e+00 3821 1.4311000000e+00 1.7390000000e+00 3822 1.4135000000e+00 1.7694000000e+00 3823 1.3959000000e+00 1.7998000000e+00 3824 2.0277000000e+00 1.7371000000e+00 3825 2.0096000000e+00 1.7067000000e+00 3826 2.0456000000e+00 1.7053000000e+00 3827 2.0268000000e+00 1.6738000000e+00 3828 1.9907000000e+00 1.6775000000e+00 3829 1.9745000000e+00 1.7083000000e+00 3830 1.9403000000e+00 1.7091000000e+00 3831 1.9059000000e+00 1.7091000000e+00 3832 1.8713000000e+00 1.7092000000e+00 3833 1.8369000000e+00 1.7090000000e+00 3834 1.8214000000e+00 1.6784000000e+00 3835 1.7860000000e+00 1.6760000000e+00 3836 1.7491000000e+00 1.6763000000e+00 3837 1.7130000000e+00 1.6768000000e+00 3838 1.6773000000e+00 1.6772000000e+00 3839 1.6419000000e+00 1.6775000000e+00 3840 1.6066000000e+00 1.6778000000e+00 3841 1.5890000000e+00 1.7084000000e+00 3842 1.5713000000e+00 1.7389000000e+00 3843 1.5362000000e+00 1.7390000000e+00 3844 1.5187000000e+00 1.7085000000e+00 3845 1.4837000000e+00 1.7085000000e+00 3846 1.4487000000e+00 1.7085000000e+00 3847 1.4136000000e+00 1.7085000000e+00 3848 1.3960000000e+00 1.7389000000e+00 3849 1.3785000000e+00 1.7694000000e+00 3850 1.3609000000e+00 1.7998000000e+00 3851 -6.4640000000e-01 6.0672000000e-02 3852 -6.6402000000e-01 3.0345000000e-02 3853 1.5538000000e+00 1.7085000000e+00 3854 1.5363000000e+00 1.6780000000e+00 3855 1.5013000000e+00 1.6781000000e+00 3856 1.4663000000e+00 1.6781000000e+00 3857 1.4312000000e+00 1.6780000000e+00 3858 1.4489000000e+00 1.6476000000e+00 3859 1.4139000000e+00 1.6475000000e+00 3860 1.3962000000e+00 1.6779000000e+00 3861 -7.8518000000e-01 1.8203000000e-01 3862 -8.0233000000e-01 2.1144000000e-01 3863 -7.8757000000e-01 2.4529000000e-01 3864 1.6596000000e+00 1.6468000000e+00 3865 1.6243000000e+00 1.6471000000e+00 3866 1.5890000000e+00 1.6473000000e+00 3867 1.5714000000e+00 1.6779000000e+00 3868 1.5539000000e+00 1.6475000000e+00 3869 1.5189000000e+00 1.6476000000e+00 3870 1.4839000000e+00 1.6477000000e+00 3871 1.4665000000e+00 1.6172000000e+00 3872 1.4316000000e+00 1.6171000000e+00 3873 1.3966000000e+00 1.6169000000e+00 3874 1.3788000000e+00 1.6473000000e+00 3875 1.3612000000e+00 1.6778000000e+00 3876 1.3786000000e+00 1.7084000000e+00 3877 1.3610000000e+00 1.7389000000e+00 3878 1.3434000000e+00 1.7693000000e+00 3879 1.3259000000e+00 1.7998000000e+00 3880 -4.3696000000e-01 6.1910000000e-02 3881 -4.1902000000e-01 9.4137000000e-02 3882 -8.5597000000e-01 6.1069000000e-02 3883 -8.5518000000e-01 1.2203000000e-01 3884 -8.7208000000e-01 1.5261000000e-01 3885 -8.3737000000e-01 1.5221000000e-01 3886 -8.5435000000e-01 1.8294000000e-01 3887 -8.8871000000e-01 1.8270000000e-01 3888 1.3435000000e+00 1.7083000000e+00 3889 1.3259000000e+00 1.7388000000e+00 3890 1.3084000000e+00 1.7693000000e+00 3891 1.2909000000e+00 1.7998000000e+00 3892 2.9919000000e+00 2.1280000000e-01 3893 3.0097000000e+00 2.4332000000e-01 3894 3.0450000000e+00 2.4337000000e-01 3895 3.0803000000e+00 2.4335000000e-01 3896 3.0975000000e+00 2.1276000000e-01 3897 3.1327000000e+00 2.1257000000e-01 3898 3.1678000000e+00 2.1225000000e-01 3899 3.1846000000e+00 1.8169000000e-01 3900 3.2011000000e+00 1.5171000000e-01 3901 3.2343000000e+00 1.5211000000e-01 3902 3.2469000000e+00 1.7768000000e-01 3903 -8.6265000000e-01 1.6476000000e+00 3904 -8.9786000000e-01 1.6474000000e+00 3905 -9.1602000000e-01 1.6171000000e+00 3906 -9.5096000000e-01 1.6172000000e+00 3907 -9.6944000000e-01 1.5877000000e+00 3908 -9.8875000000e-01 1.5587000000e+00 3909 -1.0195000000e+00 1.5072000000e+00 3910 -1.0213000000e+00 1.4778000000e+00 3911 -1.0101000000e+00 1.4353000000e+00 3912 -1.0151000000e+00 1.3953000000e+00 3913 -1.0156000000e+00 1.3596000000e+00 3914 -1.0156000000e+00 1.3234000000e+00 3915 -1.0164000000e+00 1.2869000000e+00 3916 -1.0180000000e+00 1.2509000000e+00 3917 -1.0197000000e+00 1.2156000000e+00 3918 -1.0507000000e+00 1.1984000000e+00 3919 -9.9026000000e-01 1.1976000000e+00 3920 -9.6012000000e-01 1.2139000000e+00 3921 -9.3188000000e-01 1.1969000000e+00 3922 -9.0273000000e-01 1.1809000000e+00 3923 -8.7251000000e-01 1.1652000000e+00 3924 -8.4114000000e-01 1.1494000000e+00 3925 -8.0814000000e-01 1.1332000000e+00 3926 -9.0155000000e-01 9.3501000000e-01 3927 -1.0064000000e+00 1.5303000000e+00 3928 -9.9385000000e-01 1.5014000000e+00 3929 -9.8314000000e-01 1.4679000000e+00 3930 -9.6901000000e-01 1.4335000000e+00 3931 -9.8733000000e-01 1.4084000000e+00 3932 -9.8524000000e-01 1.3781000000e+00 3933 -9.8380000000e-01 1.3425000000e+00 3934 -9.8325000000e-01 1.3050000000e+00 3935 -9.8521000000e-01 1.2678000000e+00 3936 -9.8845000000e-01 1.2322000000e+00 3937 -9.5730000000e-01 1.2473000000e+00 3938 -9.3157000000e-01 1.2291000000e+00 3939 -9.0384000000e-01 1.2140000000e+00 3940 -8.7441000000e-01 1.1992000000e+00 3941 -8.4374000000e-01 1.1845000000e+00 3942 -8.1183000000e-01 1.1698000000e+00 3943 -7.7856000000e-01 1.1554000000e+00 3944 -7.2502000000e-01 8.6215000000e-01 3945 -7.5420000000e-01 8.4661000000e-01 3946 -7.5449000000e-01 8.1370000000e-01 3947 -7.2669000000e-01 8.2922000000e-01 3948 -7.2761000000e-01 7.9817000000e-01 3949 -7.0117000000e-01 8.1143000000e-01 3950 -6.9758000000e-01 8.4326000000e-01 3951 -6.7092000000e-01 8.2226000000e-01 3952 2.4478000000e+00 3.6333000000e-01 3953 2.4828000000e+00 3.6325000000e-01 3954 2.5178000000e+00 3.6323000000e-01 3955 2.5354000000e+00 3.3306000000e-01 3956 2.5704000000e+00 3.3311000000e-01 3957 2.6054000000e+00 3.3320000000e-01 3958 1.4338000000e+00 4.2864000000e-01 3959 1.4694000000e+00 4.2738000000e-01 3960 1.4522000000e+00 4.5910000000e-01 3961 1.4878000000e+00 4.5725000000e-01 3962 -7.8213000000e-01 7.9667000000e-01 3963 -8.1013000000e-01 7.7861000000e-01 3964 -8.4046000000e-01 7.9459000000e-01 3965 -8.3857000000e-01 7.5923000000e-01 3966 -8.7024000000e-01 7.7559000000e-01 3967 -8.7100000000e-01 8.1169000000e-01 3968 -1.2018000000e+00 2.7145000000e-01 3969 -1.1714000000e+00 2.8953000000e-01 3970 -1.1415000000e+00 3.0790000000e-01 3971 -1.1093000000e+00 2.9227000000e-01 3972 3.3027000000e+00 5.7568000000e-01 3973 3.3050000000e+00 6.1140000000e-01 3974 3.2762000000e+00 6.2997000000e-01 3975 3.2774000000e+00 6.6334000000e-01 3976 3.2774000000e+00 6.9751000000e-01 3977 3.2774000000e+00 7.3249000000e-01 3978 3.2776000000e+00 7.6779000000e-01 3979 3.2778000000e+00 8.0317000000e-01 3980 3.2781000000e+00 8.3856000000e-01 3981 3.2784000000e+00 8.7394000000e-01 3982 3.2787000000e+00 9.0927000000e-01 3983 3.2791000000e+00 9.4455000000e-01 3984 3.2794000000e+00 9.7973000000e-01 3985 3.2797000000e+00 1.0148000000e+00 3986 3.2799000000e+00 1.0499000000e+00 3987 3.2800000000e+00 1.0849000000e+00 3988 3.2800000000e+00 1.1199000000e+00 3989 3.2799000000e+00 1.1550000000e+00 3990 3.2798000000e+00 1.1900000000e+00 3991 3.2797000000e+00 1.2252000000e+00 3992 3.2795000000e+00 1.2603000000e+00 3993 3.2793000000e+00 1.2955000000e+00 3994 3.2791000000e+00 1.3307000000e+00 3995 3.2788000000e+00 1.3660000000e+00 3996 3.2784000000e+00 1.4013000000e+00 3997 3.2780000000e+00 1.4367000000e+00 3998 3.2775000000e+00 1.4721000000e+00 3999 3.2769000000e+00 1.5077000000e+00 4000 3.2763000000e+00 1.5434000000e+00 4001 3.2757000000e+00 1.5793000000e+00 4002 3.2752000000e+00 1.6152000000e+00 4003 3.2747000000e+00 1.6511000000e+00 4004 3.2742000000e+00 1.6869000000e+00 4005 3.2734000000e+00 1.7226000000e+00 4006 3.2425000000e+00 1.7416000000e+00 4007 3.2127000000e+00 1.7256000000e+00 4008 3.2437000000e+00 1.6343000000e+00 4009 3.2434000000e+00 1.6704000000e+00 4010 3.2431000000e+00 1.7061000000e+00 4011 3.2122000000e+00 1.6902000000e+00 4012 3.1818000000e+00 1.7109000000e+00 4013 3.1482000000e+00 1.6969000000e+00 4014 3.1095000000e+00 1.6812000000e+00 4015 3.0697000000e+00 1.6803000000e+00 4016 3.0361000000e+00 1.6747000000e+00 4017 3.0027000000e+00 1.6692000000e+00 4018 2.9685000000e+00 1.6645000000e+00 4019 2.9334000000e+00 1.6599000000e+00 4020 2.8973000000e+00 1.6553000000e+00 4021 2.8603000000e+00 1.6503000000e+00 4022 2.8346000000e+00 1.6814000000e+00 4023 2.7966000000e+00 1.6764000000e+00 4024 2.7713000000e+00 1.7070000000e+00 4025 2.7365000000e+00 1.7025000000e+00 4026 2.7006000000e+00 1.7031000000e+00 4027 2.7209000000e+00 1.6698000000e+00 4028 2.6825000000e+00 1.6705000000e+00 4029 2.6625000000e+00 1.7055000000e+00 4030 2.8225000000e+00 1.6451000000e+00 4031 2.7839000000e+00 1.6398000000e+00 4032 2.7588000000e+00 1.6719000000e+00 4033 2.7439000000e+00 1.6354000000e+00 4034 2.7034000000e+00 1.6351000000e+00 4035 2.6641000000e+00 1.6375000000e+00 4036 2.6441000000e+00 1.6719000000e+00 4037 2.6233000000e+00 1.7061000000e+00 4038 -1.2328000000e+00 2.8871000000e-01 4039 -1.2323000000e+00 2.5359000000e-01 4040 -1.2628000000e+00 2.3589000000e-01 4041 2.6831000000e+00 1.6028000000e+00 4042 2.6453000000e+00 1.6056000000e+00 4043 2.6261000000e+00 1.6391000000e+00 4044 2.6061000000e+00 1.6722000000e+00 4045 2.5851000000e+00 1.7045000000e+00 4046 2.6007000000e+00 1.7385000000e+00 4047 2.5633000000e+00 1.7356000000e+00 4048 2.5265000000e+00 1.7331000000e+00 4049 2.4898000000e+00 1.7302000000e+00 4050 2.4533000000e+00 1.7262000000e+00 4051 2.4293000000e+00 1.7550000000e+00 4052 2.4177000000e+00 1.7210000000e+00 4053 2.3946000000e+00 1.7471000000e+00 4054 2.4034000000e+00 1.7801000000e+00 4055 2.3671000000e+00 1.7397000000e+00 4056 2.3456000000e+00 1.7161000000e+00 4057 2.3030000000e+00 1.7045000000e+00 4058 2.2638000000e+00 1.7065000000e+00 4059 2.2272000000e+00 1.7050000000e+00 4060 2.1900000000e+00 1.7050000000e+00 4061 2.1536000000e+00 1.7054000000e+00 4062 2.1716000000e+00 1.6741000000e+00 4063 2.1361000000e+00 1.6749000000e+00 4064 2.1178000000e+00 1.7054000000e+00 4065 2.0819000000e+00 1.7051000000e+00 4066 2.1009000000e+00 1.6742000000e+00 4067 2.1199000000e+00 1.6451000000e+00 4068 2.0854000000e+00 1.6422000000e+00 4069 2.0643000000e+00 1.6727000000e+00 4070 3.2442000000e+00 1.5982000000e+00 4071 3.2124000000e+00 1.6175000000e+00 4072 3.2120000000e+00 1.6540000000e+00 4073 3.1803000000e+00 1.6746000000e+00 4074 3.1470000000e+00 1.6584000000e+00 4075 3.1157000000e+00 1.6402000000e+00 4076 3.0879000000e+00 1.6548000000e+00 4077 3.0595000000e+00 1.6484000000e+00 4078 3.0266000000e+00 1.6420000000e+00 4079 2.9925000000e+00 1.6363000000e+00 4080 2.9577000000e+00 1.6310000000e+00 4081 2.9224000000e+00 1.6257000000e+00 4082 2.8862000000e+00 1.6201000000e+00 4083 2.8490000000e+00 1.6143000000e+00 4084 2.8108000000e+00 1.6081000000e+00 4085 2.7709000000e+00 1.6016000000e+00 4086 1.5890000000e+00 3.3747000000e-01 4087 1.6091000000e+00 3.0844000000e-01 4088 1.6461000000e+00 3.0850000000e-01 4089 1.6273000000e+00 3.4506000000e-01 4090 1.6667000000e+00 3.3848000000e-01 4091 1.6826000000e+00 3.0683000000e-01 4092 1.6635000000e+00 2.7585000000e-01 4093 1.6807000000e+00 2.4404000000e-01 4094 1.6993000000e+00 2.7449000000e-01 4095 1.7161000000e+00 2.4288000000e-01 4096 1.1054000000e+00 2.0757000000e-01 4097 1.1256000000e+00 2.3515000000e-01 4098 1.1397000000e+00 2.0245000000e-01 4099 1.1173000000e+00 1.7605000000e-01 4100 2.6578000000e+00 3.6367000000e-01 4101 2.6929000000e+00 3.6383000000e-01 4102 2.7280000000e+00 3.6400000000e-01 4103 2.7457000000e+00 3.3370000000e-01 4104 2.7634000000e+00 3.0339000000e-01 4105 2.7809000000e+00 2.7307000000e-01 4106 2.7985000000e+00 2.4275000000e-01 4107 2.7809000000e+00 2.1235000000e-01 4108 2.8160000000e+00 2.1242000000e-01 4109 2.8336000000e+00 2.4284000000e-01 4110 2.8512000000e+00 2.1249000000e-01 4111 2.7809000000e+00 3.3384000000e-01 4112 2.7985000000e+00 3.0351000000e-01 4113 2.8161000000e+00 2.7318000000e-01 4114 2.8512000000e+00 2.7329000000e-01 4115 2.8688000000e+00 2.4293000000e-01 4116 9.4898000000e-01 1.9764000000e-01 4117 9.7661000000e-01 2.1791000000e-01 4118 9.9018000000e-01 2.4515000000e-01 4119 9.5115000000e-01 2.4231000000e-01 4120 9.7384000000e-01 2.7641000000e-01 4121 9.3903000000e-01 2.8109000000e-01 4122 9.5988000000e-01 3.0909000000e-01 4123 9.2684000000e-01 3.1270000000e-01 4124 9.4616000000e-01 3.4060000000e-01 4125 9.1250000000e-01 3.4330000000e-01 4126 8.9368000000e-01 3.1362000000e-01 4127 8.7792000000e-01 3.4537000000e-01 4128 8.9792000000e-01 3.7506000000e-01 4129 8.6287000000e-01 3.7803000000e-01 4130 8.4241000000e-01 3.4776000000e-01 4131 8.2715000000e-01 3.8097000000e-01 4132 8.0619000000e-01 3.5010000000e-01 4133 7.9126000000e-01 3.8397000000e-01 4134 8.1202000000e-01 4.1443000000e-01 4135 8.4809000000e-01 4.1157000000e-01 4136 8.8373000000e-01 4.0745000000e-01 4137 8.7025000000e-01 4.4076000000e-01 4138 9.0523000000e-01 4.3549000000e-01 4139 9.1803000000e-01 4.0381000000e-01 4140 9.3249000000e-01 3.7243000000e-01 4141 9.5863000000e-01 1.7695000000e+00 4142 9.2365000000e-01 1.7695000000e+00 4143 8.8865000000e-01 1.7694000000e+00 4144 8.5362000000e-01 1.7694000000e+00 4145 8.1857000000e-01 1.7694000000e+00 4146 7.8352000000e-01 1.7694000000e+00 4147 7.4848000000e-01 1.7695000000e+00 4148 7.1344000000e-01 1.7695000000e+00 4149 6.9592000000e-01 1.7392000000e+00 4150 6.6091000000e-01 1.7393000000e+00 4151 6.2594000000e-01 1.7394000000e+00 4152 5.9100000000e-01 1.7395000000e+00 4153 5.5608000000e-01 1.7396000000e+00 4154 5.2115000000e-01 1.7396000000e+00 4155 4.8620000000e-01 1.7396000000e+00 4156 4.5123000000e-01 1.7396000000e+00 4157 4.1624000000e-01 1.7395000000e+00 4158 3.8122000000e-01 1.7395000000e+00 4159 3.4618000000e-01 1.7395000000e+00 4160 3.1113000000e-01 1.7394000000e+00 4161 2.7609000000e-01 1.7394000000e+00 4162 2.5863000000e-01 1.7091000000e+00 4163 2.2357000000e-01 1.7091000000e+00 4164 1.8851000000e-01 1.7090000000e+00 4165 1.5346000000e-01 1.7090000000e+00 4166 1.1842000000e-01 1.7090000000e+00 4167 8.3377000000e-02 1.7090000000e+00 4168 4.8343000000e-02 1.7090000000e+00 4169 3.0815000000e-02 1.6786000000e+00 4170 -4.2139000000e-03 1.6787000000e+00 4171 -3.9227000000e-02 1.6787000000e+00 4172 -7.4221000000e-02 1.6787000000e+00 4173 -1.0920000000e-01 1.6788000000e+00 4174 -1.4415000000e-01 1.6788000000e+00 4175 -1.7910000000e-01 1.6789000000e+00 4176 -2.1403000000e-01 1.6789000000e+00 4177 -2.4897000000e-01 1.6789000000e+00 4178 -2.8391000000e-01 1.6790000000e+00 4179 -3.1886000000e-01 1.6790000000e+00 4180 -3.5382000000e-01 1.6790000000e+00 4181 -3.8879000000e-01 1.6790000000e+00 4182 -4.2377000000e-01 1.6791000000e+00 4183 -4.5876000000e-01 1.6791000000e+00 4184 -4.9376000000e-01 1.6791000000e+00 4185 -5.2876000000e-01 1.6791000000e+00 4186 -5.6378000000e-01 1.6791000000e+00 4187 -5.9881000000e-01 1.6791000000e+00 4188 -6.3387000000e-01 1.6790000000e+00 4189 -6.6894000000e-01 1.6790000000e+00 4190 -7.0406000000e-01 1.6789000000e+00 4191 -7.3920000000e-01 1.6787000000e+00 4192 -7.7438000000e-01 1.6785000000e+00 4193 -8.0958000000e-01 1.6783000000e+00 4194 -8.2736000000e-01 1.6478000000e+00 4195 -8.4529000000e-01 1.6172000000e+00 4196 -8.8074000000e-01 1.6171000000e+00 4197 -8.9917000000e-01 1.5866000000e+00 4198 -9.3458000000e-01 1.5870000000e+00 4199 -9.5373000000e-01 1.5574000000e+00 4200 -9.7336000000e-01 1.5284000000e+00 4201 -9.5933000000e-01 1.4966000000e+00 4202 -9.4521000000e-01 1.4628000000e+00 4203 -9.3115000000e-01 1.4271000000e+00 4204 -9.5712000000e-01 1.3996000000e+00 4205 -9.5236000000e-01 1.3632000000e+00 4206 -9.5062000000e-01 1.3254000000e+00 4207 -9.4777000000e-01 1.2842000000e+00 4208 2.4404000000e+00 1.6930000000e+00 4209 2.4759000000e+00 1.6971000000e+00 4210 2.4626000000e+00 1.6645000000e+00 4211 2.4277000000e+00 1.6604000000e+00 4212 2.4499000000e+00 1.6323000000e+00 4213 2.4152000000e+00 1.6280000000e+00 4214 2.4376000000e+00 1.5999000000e+00 4215 2.4028000000e+00 1.5957000000e+00 4216 2.3806000000e+00 1.6236000000e+00 4217 2.3684000000e+00 1.5916000000e+00 4218 2.3466000000e+00 1.6188000000e+00 4219 2.3579000000e+00 1.6510000000e+00 4220 2.3927000000e+00 1.6560000000e+00 4221 2.4052000000e+00 1.6885000000e+00 4222 2.3833000000e+00 1.7162000000e+00 4223 2.3697000000e+00 1.6844000000e+00 4224 2.3337000000e+00 1.6782000000e+00 4225 2.3017000000e+00 1.6682000000e+00 4226 2.2789000000e+00 1.6822000000e+00 4227 2.2491000000e+00 1.6719000000e+00 4228 2.2088000000e+00 1.6727000000e+00 4229 2.2265000000e+00 1.6390000000e+00 4230 2.1883000000e+00 1.6412000000e+00 4231 1.9227000000e+00 1.1950000000e-01 4232 2.3347000000e+00 1.5874000000e+00 4233 2.3134000000e+00 1.6140000000e+00 4234 2.3244000000e+00 1.6449000000e+00 4235 2.2931000000e+00 1.6392000000e+00 4236 1.2909000000e+00 1.7388000000e+00 4237 1.2734000000e+00 1.7693000000e+00 4238 2.5877000000e+00 3.6337000000e-01 4239 2.6227000000e+00 3.6351000000e-01 4240 2.6400000000e+00 3.9386000000e-01 4241 2.6751000000e+00 3.9408000000e-01 4242 2.7103000000e+00 3.9429000000e-01 4243 2.7455000000e+00 3.9449000000e-01 4244 2.7632000000e+00 3.6417000000e-01 4245 2.7984000000e+00 3.6434000000e-01 4246 2.8161000000e+00 3.3399000000e-01 4247 2.8337000000e+00 3.6451000000e-01 4248 2.8513000000e+00 3.3415000000e-01 4249 2.8337000000e+00 3.0364000000e-01 4250 -7.6841000000e-01 9.1199000000e-02 4251 1.3085000000e+00 1.7083000000e+00 4252 1.2734000000e+00 1.7083000000e+00 4253 1.2909000000e+00 1.6777000000e+00 4254 1.2558000000e+00 1.6777000000e+00 4255 1.2383000000e+00 1.7083000000e+00 4256 1.2558000000e+00 1.7388000000e+00 4257 1.2383000000e+00 1.7693000000e+00 4258 1.2033000000e+00 1.7693000000e+00 4259 1.1858000000e+00 1.7389000000e+00 4260 1.2208000000e+00 1.7389000000e+00 4261 1.2032000000e+00 1.7084000000e+00 4262 1.1682000000e+00 1.7085000000e+00 4263 1.1508000000e+00 1.7390000000e+00 4264 1.1158000000e+00 1.7391000000e+00 4265 1.0809000000e+00 1.7391000000e+00 4266 1.0460000000e+00 1.7392000000e+00 4267 1.0111000000e+00 1.7392000000e+00 4268 9.9358000000e-01 1.7695000000e+00 4269 9.7618000000e-01 1.7391000000e+00 4270 9.4123000000e-01 1.7391000000e+00 4271 9.0624000000e-01 1.7390000000e+00 4272 8.7122000000e-01 1.7390000000e+00 4273 8.3616000000e-01 1.7390000000e+00 4274 8.0109000000e-01 1.7390000000e+00 4275 7.6601000000e-01 1.7390000000e+00 4276 7.3095000000e-01 1.7391000000e+00 4277 7.1339000000e-01 1.7087000000e+00 4278 6.7836000000e-01 1.7088000000e+00 4279 6.4339000000e-01 1.7090000000e+00 4280 6.0846000000e-01 1.7092000000e+00 4281 5.7356000000e-01 1.7093000000e+00 4282 5.3868000000e-01 1.7093000000e+00 4283 5.0378000000e-01 1.7093000000e+00 4284 4.6885000000e-01 1.7093000000e+00 4285 4.3387000000e-01 1.7092000000e+00 4286 3.9885000000e-01 1.7092000000e+00 4287 3.6381000000e-01 1.7091000000e+00 4288 3.2875000000e-01 1.7091000000e+00 4289 2.9369000000e-01 1.7091000000e+00 4290 2.7624000000e-01 1.6787000000e+00 4291 2.4116000000e-01 1.6787000000e+00 4292 2.0609000000e-01 1.6787000000e+00 4293 1.7102000000e-01 1.6786000000e+00 4294 1.3596000000e-01 1.6786000000e+00 4295 1.0091000000e-01 1.6786000000e+00 4296 6.5857000000e-02 1.6786000000e+00 4297 4.8322000000e-02 1.6482000000e+00 4298 1.3271000000e-02 1.6482000000e+00 4299 -2.1762000000e-02 1.6483000000e+00 4300 -5.6770000000e-02 1.6483000000e+00 4301 -9.1750000000e-02 1.6484000000e+00 4302 -1.2670000000e-01 1.6484000000e+00 4303 -1.6163000000e-01 1.6485000000e+00 4304 -1.9654000000e-01 1.6486000000e+00 4305 -2.3145000000e-01 1.6486000000e+00 4306 -2.6637000000e-01 1.6486000000e+00 4307 -3.0130000000e-01 1.6487000000e+00 4308 -3.3624000000e-01 1.6487000000e+00 4309 -3.7119000000e-01 1.6487000000e+00 4310 -4.0616000000e-01 1.6488000000e+00 4311 -4.4114000000e-01 1.6488000000e+00 4312 -4.7613000000e-01 1.6488000000e+00 4313 -5.1113000000e-01 1.6489000000e+00 4314 -5.4614000000e-01 1.6489000000e+00 4315 -5.8117000000e-01 1.6488000000e+00 4316 -6.1622000000e-01 1.6488000000e+00 4317 -6.5130000000e-01 1.6487000000e+00 4318 -6.8641000000e-01 1.6486000000e+00 4319 -7.2157000000e-01 1.6485000000e+00 4320 -7.5679000000e-01 1.6483000000e+00 4321 -7.9205000000e-01 1.6480000000e+00 4322 -8.0982000000e-01 1.6174000000e+00 4323 -8.2772000000e-01 1.5867000000e+00 4324 -8.6347000000e-01 1.5865000000e+00 4325 -8.8207000000e-01 1.5555000000e+00 4326 -9.1818000000e-01 1.5562000000e+00 4327 -9.3807000000e-01 1.5260000000e+00 4328 -9.2235000000e-01 1.4932000000e+00 4329 -9.0621000000e-01 1.4583000000e+00 4330 -8.9176000000e-01 1.4216000000e+00 4331 -9.1755000000e-01 1.3869000000e+00 4332 -9.1975000000e-01 1.3468000000e+00 4333 -9.1668000000e-01 1.3106000000e+00 4334 -9.1064000000e-01 1.2766000000e+00 4335 -9.3059000000e-01 1.2566000000e+00 4336 -9.0557000000e-01 1.2456000000e+00 4337 -8.7679000000e-01 1.2322000000e+00 4338 -8.4679000000e-01 1.2184000000e+00 4339 -8.1572000000e-01 1.2047000000e+00 4340 -7.8364000000e-01 1.1912000000e+00 4341 -7.5119000000e-01 1.1782000000e+00 4342 -7.4559000000e-01 1.1443000000e+00 4343 -7.1546000000e-01 1.1334000000e+00 4344 -6.8668000000e-01 1.1188000000e+00 4345 -6.8871000000e-01 1.1520000000e+00 4346 -6.5821000000e-01 1.1369000000e+00 4347 -6.5703000000e-01 1.1026000000e+00 4348 -6.2730000000e-01 1.1206000000e+00 4349 -5.9574000000e-01 1.1036000000e+00 4350 -5.9716000000e-01 1.1395000000e+00 4351 -5.6420000000e-01 1.1227000000e+00 4352 -5.6340000000e-01 1.0854000000e+00 4353 -5.3245000000e-01 1.0652000000e+00 4354 -5.0371000000e-01 1.0445000000e+00 4355 -5.0025000000e-01 1.0785000000e+00 4356 -4.7338000000e-01 1.0591000000e+00 4357 -4.7516000000e-01 1.0253000000e+00 4358 -5.0589000000e-01 1.0097000000e+00 4359 -4.7698000000e-01 9.9073000000e-01 4360 -4.4587000000e-01 1.0066000000e+00 4361 -4.4508000000e-01 1.0414000000e+00 4362 -4.4505000000e-01 1.0741000000e+00 4363 -4.1606000000e-01 1.0590000000e+00 4364 -4.1491000000e-01 1.0241000000e+00 4365 1.1600000000e+00 2.3170000000e-01 4366 1.1753000000e+00 1.9961000000e-01 4367 1.1549000000e+00 1.6456000000e-01 4368 -4.4800000000e-01 9.7066000000e-01 4369 -4.7936000000e-01 9.5698000000e-01 4370 -4.5392000000e-01 9.3669000000e-01 4371 -5.0751000000e-01 9.7505000000e-01 4372 1.1454000000e+00 2.6352000000e-01 4373 1.1796000000e+00 2.6031000000e-01 4374 1.1942000000e+00 2.2904000000e-01 4375 1.2091000000e+00 1.9932000000e-01 4376 1.1939000000e+00 1.7047000000e-01 4377 1.2225000000e+00 1.7459000000e-01 4378 1.7181000000e+00 3.0469000000e-01 4379 1.7017000000e+00 3.3914000000e-01 4380 1.7373000000e+00 3.3272000000e-01 4381 1.7532000000e+00 3.0230000000e-01 4382 1.7713000000e+00 3.3165000000e-01 4383 1.7882000000e+00 3.0081000000e-01 4384 1.7696000000e+00 2.7125000000e-01 4385 1.8045000000e+00 2.6973000000e-01 4386 1.7512000000e+00 2.4161000000e-01 4387 1.7346000000e+00 2.7284000000e-01 4388 1.7330000000e+00 2.1176000000e-01 4389 1.8234000000e+00 2.9911000000e-01 4390 1.8392000000e+00 2.6800000000e-01 4391 2.8689000000e+00 3.0378000000e-01 4392 2.8864000000e+00 2.7341000000e-01 4393 2.9040000000e+00 2.4303000000e-01 4394 2.8863000000e+00 2.1257000000e-01 4395 9.0982000000e-01 2.8848000000e-01 4396 8.7686000000e-01 2.7746000000e-01 4397 8.5813000000e-01 3.1445000000e-01 4398 8.2221000000e-01 3.1768000000e-01 4399 8.3572000000e-01 2.8487000000e-01 4400 8.0634000000e-01 2.9248000000e-01 4401 7.8443000000e-01 3.1645000000e-01 4402 2.9217000000e+00 2.7354000000e-01 4403 2.9392000000e+00 2.4314000000e-01 4404 2.9215000000e+00 2.1265000000e-01 4405 1.6951000000e+00 1.6463000000e+00 4406 1.6773000000e+00 1.6160000000e+00 4407 1.6419000000e+00 1.6163000000e+00 4408 1.6066000000e+00 1.6167000000e+00 4409 1.5714000000e+00 1.6169000000e+00 4410 7.6963000000e-01 3.5382000000e-01 4411 7.5575000000e-01 3.8779000000e-01 4412 7.7676000000e-01 4.1679000000e-01 4413 7.9636000000e-01 4.4548000000e-01 4414 7.6291000000e-01 4.4855000000e-01 4415 7.8337000000e-01 4.7552000000e-01 4416 2.7277000000e+00 4.2481000000e-01 4417 2.7630000000e+00 4.2504000000e-01 4418 2.7808000000e+00 3.9468000000e-01 4419 2.8160000000e+00 3.9488000000e-01 4420 1.5364000000e+00 1.6171000000e+00 4421 1.5014000000e+00 1.6172000000e+00 4422 1.4841000000e+00 1.5869000000e+00 4423 1.4493000000e+00 1.5867000000e+00 4424 1.4144000000e+00 1.5865000000e+00 4425 1.3793000000e+00 1.5861000000e+00 4426 1.3615000000e+00 1.6166000000e+00 4427 1.3437000000e+00 1.6472000000e+00 4428 1.3261000000e+00 1.6778000000e+00 4429 -8.7990000000e-01 1.2646000000e+00 4430 -8.5014000000e-01 1.2513000000e+00 4431 -8.1989000000e-01 1.2384000000e+00 4432 -7.8840000000e-01 1.2258000000e+00 4433 -7.5609000000e-01 1.2129000000e+00 4434 -7.2378000000e-01 1.1997000000e+00 4435 -7.1945000000e-01 1.1656000000e+00 4436 -6.9194000000e-01 1.1859000000e+00 4437 -6.6048000000e-01 1.1713000000e+00 4438 -6.2902000000e-01 1.1557000000e+00 4439 3.2486000000e+00 1.3133000000e+00 4440 3.2483000000e+00 1.3486000000e+00 4441 3.2479000000e+00 1.3839000000e+00 4442 3.2475000000e+00 1.4193000000e+00 4443 3.2469000000e+00 1.4548000000e+00 4444 3.2463000000e+00 1.4904000000e+00 4445 3.2456000000e+00 1.5262000000e+00 4446 3.2448000000e+00 1.5621000000e+00 4447 3.2130000000e+00 1.5811000000e+00 4448 3.1809000000e+00 1.6005000000e+00 4449 3.1802000000e+00 1.6375000000e+00 4450 3.1482000000e+00 1.6204000000e+00 4451 3.1160000000e+00 1.6028000000e+00 4452 3.0852000000e+00 1.6242000000e+00 4453 3.0517000000e+00 1.6148000000e+00 4454 3.0169000000e+00 1.6086000000e+00 4455 2.9823000000e+00 1.6028000000e+00 4456 2.9476000000e+00 1.5971000000e+00 4457 2.9123000000e+00 1.5909000000e+00 4458 2.8760000000e+00 1.5843000000e+00 4459 2.8385000000e+00 1.5776000000e+00 4460 2.8002000000e+00 1.5703000000e+00 4461 2.7607000000e+00 1.5618000000e+00 4462 2.7258000000e+00 1.5941000000e+00 4463 2.6961000000e+00 1.5716000000e+00 4464 2.6638000000e+00 1.5724000000e+00 4465 2.6271000000e+00 1.5742000000e+00 4466 2.6081000000e+00 1.6071000000e+00 4467 2.5890000000e+00 1.6398000000e+00 4468 2.5690000000e+00 1.6716000000e+00 4469 2.5481000000e+00 1.7026000000e+00 4470 2.5118000000e+00 1.7002000000e+00 4471 2.6463000000e+00 1.5417000000e+00 4472 2.6096000000e+00 1.5426000000e+00 4473 2.5897000000e+00 1.5753000000e+00 4474 2.5716000000e+00 1.6085000000e+00 4475 2.5531000000e+00 1.6399000000e+00 4476 2.5330000000e+00 1.6702000000e+00 4477 2.4977000000e+00 1.6679000000e+00 4478 2.4843000000e+00 1.6362000000e+00 4479 2.4722000000e+00 1.6044000000e+00 4480 2.4607000000e+00 1.5715000000e+00 4481 2.4251000000e+00 1.5673000000e+00 4482 2.3901000000e+00 1.5638000000e+00 4483 2.3560000000e+00 1.5603000000e+00 4484 2.3224000000e+00 1.5564000000e+00 4485 2.3013000000e+00 1.5834000000e+00 4486 2.2805000000e+00 1.6103000000e+00 4487 2.2620000000e+00 1.6380000000e+00 4488 2.2769000000e+00 1.6599000000e+00 4489 2.2458000000e+00 1.6075000000e+00 4490 2.4115000000e+00 1.5351000000e+00 4491 2.3769000000e+00 1.5326000000e+00 4492 2.3435000000e+00 1.5294000000e+00 4493 2.3103000000e+00 1.5256000000e+00 4494 2.2890000000e+00 1.5525000000e+00 4495 2.2676000000e+00 1.5795000000e+00 4496 2.2335000000e+00 1.5751000000e+00 4497 2.2556000000e+00 1.5484000000e+00 4498 2.2228000000e+00 1.5443000000e+00 4499 2.2044000000e+00 1.5680000000e+00 4500 2.2050000000e+00 1.6028000000e+00 4501 2.1654000000e+00 1.6134000000e+00 4502 2.1530000000e+00 1.6451000000e+00 4503 2.6050000000e+00 3.9365000000e-01 4504 2.6222000000e+00 4.2398000000e-01 4505 2.6573000000e+00 4.2428000000e-01 4506 2.6924000000e+00 4.2456000000e-01 4507 2.7098000000e+00 4.5514000000e-01 4508 2.7451000000e+00 4.5541000000e-01 4509 2.7805000000e+00 4.5565000000e-01 4510 2.7983000000e+00 4.2526000000e-01 4511 2.1710000000e+00 1.5754000000e+00 4512 2.1384000000e+00 1.5942000000e+00 4513 2.1367000000e+00 1.6220000000e+00 4514 8.4356000000e-02 7.2869000000e-02 4515 1.1856000000e-01 7.7559000000e-02 4516 9.7714000000e-02 1.0463000000e-01 4517 1.3179000000e-01 1.0993000000e-01 4518 1.1009000000e-01 1.3650000000e-01 4519 1.4476000000e-01 1.4336000000e-01 4520 1.6653000000e-01 1.1509000000e-01 4521 1.5308000000e-01 8.2403000000e-02 4522 7.6279000000e-01 1.5965000000e-01 4523 7.5614000000e-01 1.9988000000e-01 4524 7.8064000000e-01 2.2708000000e-01 4525 8.0534000000e-01 2.5942000000e-01 4526 7.6747000000e-01 2.6015000000e-01 4527 7.8398000000e-01 2.8404000000e-01 4528 8.4547000000e-01 2.4780000000e-01 4529 8.8252000000e-01 2.3549000000e-01 4530 9.1675000000e-01 2.2042000000e-01 4531 9.1646000000e-01 1.8983000000e-01 4532 7.4543000000e-01 2.3305000000e-01 4533 7.3311000000e-01 2.6561000000e-01 4534 7.5630000000e-01 2.9175000000e-01 4535 7.4632000000e-01 3.2536000000e-01 4536 7.3381000000e-01 3.5930000000e-01 4537 7.1123000000e-01 3.3191000000e-01 4538 6.9907000000e-01 3.6461000000e-01 4539 7.2080000000e-01 3.9239000000e-01 4540 6.8626000000e-01 3.9711000000e-01 4541 7.0769000000e-01 4.2505000000e-01 4542 6.7307000000e-01 4.2990000000e-01 4543 6.9481000000e-01 4.5762000000e-01 4544 7.2891000000e-01 4.5275000000e-01 4545 7.4215000000e-01 4.2055000000e-01 4546 6.6528000000e-01 3.6945000000e-01 4547 6.5154000000e-01 4.0133000000e-01 4548 6.3078000000e-01 3.7162000000e-01 4549 6.1590000000e-01 4.0528000000e-01 4550 6.3784000000e-01 4.3463000000e-01 4551 6.6012000000e-01 4.6367000000e-01 4552 6.8296000000e-01 4.8983000000e-01 4553 7.1598000000e-01 4.8456000000e-01 4554 7.0308000000e-01 5.1483000000e-01 4555 7.3614000000e-01 5.1212000000e-01 4556 7.2015000000e-01 5.4377000000e-01 4557 5.9342000000e-01 3.7476000000e-01 4558 5.7953000000e-01 4.1040000000e-01 4559 6.0217000000e-01 4.3898000000e-01 4560 6.1145000000e-01 3.3444000000e-01 4561 5.6765000000e-01 3.4470000000e-01 4562 5.5514000000e-01 3.8213000000e-01 4563 5.2914000000e-01 3.5420000000e-01 4564 5.1795000000e-01 3.9091000000e-01 4565 5.4308000000e-01 4.1781000000e-01 4566 -3.8853000000e-01 1.6185000000e+00 4567 -4.2350000000e-01 1.6185000000e+00 4568 -4.5848000000e-01 1.6186000000e+00 4569 -4.9347000000e-01 1.6186000000e+00 4570 -5.2847000000e-01 1.6186000000e+00 4571 -5.6349000000e-01 1.6186000000e+00 4572 -5.9853000000e-01 1.6186000000e+00 4573 -6.3361000000e-01 1.6185000000e+00 4574 -6.6872000000e-01 1.6184000000e+00 4575 -7.0388000000e-01 1.6182000000e+00 4576 -7.3911000000e-01 1.6180000000e+00 4577 -7.7442000000e-01 1.6177000000e+00 4578 -7.9210000000e-01 1.5870000000e+00 4579 -8.0984000000e-01 1.5561000000e+00 4580 -8.4584000000e-01 1.5556000000e+00 4581 -8.6434000000e-01 1.5238000000e+00 4582 -9.0146000000e-01 1.5243000000e+00 4583 -8.8377000000e-01 1.4909000000e+00 4584 -8.6299000000e-01 1.4539000000e+00 4585 -8.5528000000e-01 1.4155000000e+00 4586 -8.3417000000e-01 1.4359000000e+00 4587 -8.2265000000e-01 1.4101000000e+00 4588 -8.4272000000e-01 1.3837000000e+00 4589 -8.7736000000e-01 1.3877000000e+00 4590 -8.9326000000e-01 1.3621000000e+00 4591 -8.8798000000e-01 1.3324000000e+00 4592 -8.8326000000e-01 1.2980000000e+00 4593 -8.5297000000e-01 1.2837000000e+00 4594 -8.2445000000e-01 1.2703000000e+00 4595 -7.9380000000e-01 1.2595000000e+00 4596 -7.6123000000e-01 1.2478000000e+00 4597 -7.2828000000e-01 1.2346000000e+00 4598 -6.9571000000e-01 1.2207000000e+00 4599 -6.6350000000e-01 1.2061000000e+00 4600 -6.3149000000e-01 1.1909000000e+00 4601 -5.9948000000e-01 1.1751000000e+00 4602 -5.6721000000e-01 1.1591000000e+00 4603 -5.3442000000e-01 1.1438000000e+00 4604 -5.2723000000e-01 1.1049000000e+00 4605 -4.9370000000e-01 1.1063000000e+00 4606 -4.7101000000e-01 1.0908000000e+00 4607 -4.4585000000e-01 1.1022000000e+00 4608 -4.1891000000e-01 1.0923000000e+00 4609 -4.2646000000e-01 1.1292000000e+00 4610 -3.9186000000e-01 1.1111000000e+00 4611 -3.8819000000e-01 1.0782000000e+00 4612 -3.8427000000e-01 1.0436000000e+00 4613 -3.8305000000e-01 1.0068000000e+00 4614 -4.1508000000e-01 9.8718000000e-01 4615 -4.1669000000e-01 9.4582000000e-01 4616 -3.8190000000e-01 9.6919000000e-01 4617 -3.5045000000e-01 9.8992000000e-01 4618 -3.4792000000e-01 9.5355000000e-01 4619 -3.7816000000e-01 9.3189000000e-01 4620 -3.4415000000e-01 9.1766000000e-01 4621 -3.1481000000e-01 9.3857000000e-01 4622 -3.1799000000e-01 9.7405000000e-01 4623 -2.8563000000e-01 9.5917000000e-01 4624 -2.8193000000e-01 9.2386000000e-01 4625 -2.5293000000e-01 9.4488000000e-01 4626 -2.4866000000e-01 9.0914000000e-01 4627 -2.7831000000e-01 8.8827000000e-01 4628 -3.1116000000e-01 9.0315000000e-01 4629 -3.4003000000e-01 8.8248000000e-01 4630 -3.0765000000e-01 8.6805000000e-01 4631 -3.3624000000e-01 8.4790000000e-01 4632 -3.6818000000e-01 8.6183000000e-01 4633 -3.7269000000e-01 8.9630000000e-01 4634 -4.0549000000e-01 9.0881000000e-01 4635 -4.0000000000e-01 8.7511000000e-01 4636 -4.3111000000e-01 8.8750000000e-01 4637 -4.3416000000e-01 9.1625000000e-01 4638 -3.6426000000e-01 8.2770000000e-01 4639 -3.9571000000e-01 8.4145000000e-01 4640 -4.2663000000e-01 8.5473000000e-01 4641 -4.5670000000e-01 8.6763000000e-01 4642 -4.6350000000e-01 9.0241000000e-01 4643 1.3973000000e+00 1.5557000000e+00 4644 1.3622000000e+00 1.5552000000e+00 4645 1.3442000000e+00 1.5858000000e+00 4646 1.3263000000e+00 1.6164000000e+00 4647 1.3086000000e+00 1.6471000000e+00 4648 7.4980000000e-01 4.8024000000e-01 4649 7.7133000000e-01 5.0795000000e-01 4650 2.4437000000e-01 6.2460000000e-02 4651 2.8006000000e-01 6.5984000000e-02 4652 2.5891000000e-01 9.5823000000e-02 4653 2.9563000000e-01 1.0042000000e-01 4654 2.7297000000e-01 1.2920000000e-01 4655 3.0747000000e-01 1.3509000000e-01 4656 3.3759000000e-01 1.0713000000e-01 4657 3.1679000000e-01 6.9275000000e-02 4658 3.2139000000e+00 1.5449000000e+00 4659 3.1819000000e+00 1.5638000000e+00 4660 3.1493000000e+00 1.5830000000e+00 4661 3.1155000000e+00 2.4319000000e-01 4662 3.1507000000e+00 2.4290000000e-01 4663 3.1860000000e+00 2.4268000000e-01 4664 3.2034000000e+00 2.1157000000e-01 4665 3.2187000000e+00 1.8073000000e-01 4666 7.2251000000e-01 2.9898000000e-01 4667 6.8865000000e-01 3.0567000000e-01 4668 6.7696000000e-01 3.3758000000e-01 4669 3.0802000000e+00 1.5845000000e+00 4670 3.0416000000e+00 1.5814000000e+00 4671 3.0070000000e+00 1.5745000000e+00 4672 2.9722000000e+00 1.5693000000e+00 4673 2.9384000000e+00 1.5632000000e+00 4674 2.9034000000e+00 1.5552000000e+00 4675 2.8664000000e+00 1.5480000000e+00 4676 2.8290000000e+00 1.5404000000e+00 4677 2.7912000000e+00 1.5321000000e+00 4678 2.7534000000e+00 1.5225000000e+00 4679 2.7229000000e+00 1.5501000000e+00 4680 2.6850000000e+00 1.5383000000e+00 4681 2.6626000000e+00 1.5149000000e+00 4682 2.6301000000e+00 1.5079000000e+00 4683 2.5956000000e+00 1.5154000000e+00 4684 2.5690000000e+00 1.5404000000e+00 4685 2.5528000000e+00 1.5785000000e+00 4686 2.5374000000e+00 1.6100000000e+00 4687 2.5184000000e+00 1.6389000000e+00 4688 3.2218000000e+00 2.4249000000e-01 4689 3.2037000000e+00 2.7371000000e-01 4690 3.2179000000e+00 3.0594000000e-01 4691 3.2268000000e+00 3.3754000000e-01 4692 3.2310000000e+00 3.6799000000e-01 4693 3.2034000000e+00 3.8293000000e-01 4694 3.2027000000e+00 4.1682000000e-01 4695 3.2030000000e+00 4.5176000000e-01 4696 3.2340000000e+00 4.6916000000e-01 4697 3.2349000000e+00 5.0498000000e-01 4698 3.2672000000e+00 5.2235000000e-01 4699 3.3004000000e+00 5.3898000000e-01 4700 3.2690000000e+00 5.5958000000e-01 4701 3.2725000000e+00 5.9593000000e-01 4702 3.2467000000e+00 6.1633000000e-01 4703 3.2489000000e+00 6.4657000000e-01 4704 3.2475000000e+00 6.7898000000e-01 4705 3.2466000000e+00 7.1388000000e-01 4706 3.2467000000e+00 7.4943000000e-01 4707 3.2469000000e+00 7.8498000000e-01 4708 3.2472000000e+00 8.2048000000e-01 4709 3.2475000000e+00 8.5597000000e-01 4710 3.2478000000e+00 8.9144000000e-01 4711 3.2482000000e+00 9.2684000000e-01 4712 3.2487000000e+00 9.6212000000e-01 4713 3.2490000000e+00 9.9729000000e-01 4714 3.2493000000e+00 1.0324000000e+00 4715 3.2495000000e+00 1.0674000000e+00 4716 3.2496000000e+00 1.1024000000e+00 4717 3.2495000000e+00 1.1374000000e+00 4718 3.2494000000e+00 1.1725000000e+00 4719 3.2493000000e+00 1.2076000000e+00 4720 3.2491000000e+00 1.2428000000e+00 4721 3.2489000000e+00 1.2780000000e+00 4722 3.2181000000e+00 1.2958000000e+00 4723 3.2178000000e+00 1.3312000000e+00 4724 3.2174000000e+00 1.3666000000e+00 4725 3.2170000000e+00 1.4020000000e+00 4726 3.2164000000e+00 1.4375000000e+00 4727 3.2157000000e+00 1.4731000000e+00 4728 3.2148000000e+00 1.5088000000e+00 4729 1.2207000000e+00 1.6778000000e+00 4730 1.2382000000e+00 1.6471000000e+00 4731 1.2030000000e+00 1.6472000000e+00 4732 1.1856000000e+00 1.6779000000e+00 4733 3.1859000000e+00 1.4202000000e+00 4734 3.1851000000e+00 1.4558000000e+00 4735 3.1842000000e+00 1.4915000000e+00 4736 3.1831000000e+00 1.5275000000e+00 4737 3.1508000000e+00 1.5462000000e+00 4738 3.1176000000e+00 1.5650000000e+00 4739 2.8866000000e+00 3.3432000000e-01 4740 2.9041000000e+00 3.0393000000e-01 4741 2.9394000000e+00 3.0409000000e-01 4742 2.9569000000e+00 2.7367000000e-01 4743 2.9744000000e+00 2.4323000000e-01 4744 2.9567000000e+00 2.1273000000e-01 4745 2.9389000000e+00 1.8227000000e-01 4746 2.9741000000e+00 1.8233000000e-01 4747 2.9915000000e+00 1.5193000000e-01 4748 2.9923000000e+00 2.7379000000e-01 4749 3.0276000000e+00 2.7390000000e-01 4750 3.0101000000e+00 3.0441000000e-01 4751 3.0456000000e+00 3.0455000000e-01 4752 3.0630000000e+00 2.7397000000e-01 4753 2.9748000000e+00 3.0426000000e-01 4754 2.1073000000e+00 1.6120000000e+00 4755 2.0747000000e+00 1.6138000000e+00 4756 2.0456000000e+00 1.6354000000e+00 4757 3.0811000000e+00 3.0471000000e-01 4758 3.0984000000e+00 2.7396000000e-01 4759 2.1112000000e+00 1.5767000000e+00 4760 2.0848000000e+00 1.5899000000e+00 4761 2.0504000000e+00 1.5897000000e+00 4762 2.0125000000e+00 1.6101000000e+00 4763 2.0050000000e+00 1.6453000000e+00 4764 1.9712000000e+00 1.6506000000e+00 4765 1.9571000000e+00 1.6799000000e+00 4766 1.9240000000e+00 1.6791000000e+00 4767 1.8892000000e+00 1.6785000000e+00 4768 1.9096000000e+00 1.6432000000e+00 4769 1.8697000000e+00 1.6500000000e+00 4770 1.8547000000e+00 1.6801000000e+00 4771 3.0765000000e-02 1.6177000000e+00 4772 -4.2988000000e-03 1.6178000000e+00 4773 -3.9333000000e-02 1.6179000000e+00 4774 -7.4328000000e-02 1.6179000000e+00 4775 -1.0928000000e-01 1.6180000000e+00 4776 -1.4420000000e-01 1.6181000000e+00 4777 -1.7908000000e-01 1.6182000000e+00 4778 -2.1396000000e-01 1.6183000000e+00 4779 -2.4883000000e-01 1.6183000000e+00 4780 -2.8372000000e-01 1.6184000000e+00 4781 -3.1864000000e-01 1.6184000000e+00 4782 -3.5357000000e-01 1.6184000000e+00 4783 -3.7086000000e-01 1.5882000000e+00 4784 -4.0582000000e-01 1.5882000000e+00 4785 -4.4080000000e-01 1.5883000000e+00 4786 -4.7578000000e-01 1.5883000000e+00 4787 -5.1077000000e-01 1.5884000000e+00 4788 -5.4578000000e-01 1.5884000000e+00 4789 -5.8081000000e-01 1.5884000000e+00 4790 -6.1587000000e-01 1.5883000000e+00 4791 -6.5098000000e-01 1.5882000000e+00 4792 -6.8613000000e-01 1.5880000000e+00 4793 -7.2135000000e-01 1.5878000000e+00 4794 -7.5666000000e-01 1.5874000000e+00 4795 -7.7419000000e-01 1.5567000000e+00 4796 -7.9162000000e-01 1.5258000000e+00 4797 -8.2760000000e-01 1.5247000000e+00 4798 -8.4530000000e-01 1.4919000000e+00 4799 -7.0352000000e-01 1.5576000000e+00 4800 -7.3878000000e-01 1.5573000000e+00 4801 -7.5614000000e-01 1.5267000000e+00 4802 -7.7328000000e-01 1.4961000000e+00 4803 -8.0868000000e-01 1.4946000000e+00 4804 -8.2442000000e-01 1.4632000000e+00 4805 -8.0550000000e-01 1.4367000000e+00 4806 -7.8968000000e-01 1.4083000000e+00 4807 -8.0853000000e-01 1.3802000000e+00 4808 -8.2888000000e-01 1.3518000000e+00 4809 -8.6359000000e-01 1.3563000000e+00 4810 -8.5130000000e-01 1.3202000000e+00 4811 -8.2871000000e-01 1.2974000000e+00 4812 -8.0115000000e-01 1.2914000000e+00 4813 -7.6766000000e-01 1.2829000000e+00 4814 -7.3312000000e-01 1.2706000000e+00 4815 -6.9977000000e-01 1.2560000000e+00 4816 -6.6696000000e-01 1.2414000000e+00 4817 -6.3440000000e-01 1.2263000000e+00 4818 -6.0206000000e-01 1.2106000000e+00 4819 -6.0476000000e-01 1.2464000000e+00 4820 -5.7233000000e-01 1.2302000000e+00 4821 -5.6992000000e-01 1.1947000000e+00 4822 -5.3810000000e-01 1.1789000000e+00 4823 -5.4035000000e-01 1.2139000000e+00 4824 -5.0911000000e-01 1.1975000000e+00 4825 -5.0761000000e-01 1.1642000000e+00 4826 -5.0216000000e-01 1.1327000000e+00 4827 -4.6784000000e-01 1.1246000000e+00 4828 -4.5355000000e-01 1.1586000000e+00 4829 -4.1785000000e-01 1.1702000000e+00 4830 -3.8942000000e-01 1.1456000000e+00 4831 -3.6192000000e-01 1.1247000000e+00 4832 -3.6630000000e-01 1.0965000000e+00 4833 -3.3786000000e-01 1.1019000000e+00 4834 -3.5174000000e-01 1.0668000000e+00 4835 -3.1360000000e-01 1.0771000000e+00 4836 -3.2032000000e-01 1.0438000000e+00 4837 -3.5166000000e-01 1.0267000000e+00 4838 -3.2016000000e-01 1.0093000000e+00 4839 -2.9159000000e-01 1.0272000000e+00 4840 -2.8896000000e-01 9.9388000000e-01 4841 -2.5715000000e-01 9.7980000000e-01 4842 -2.6123000000e-01 1.0138000000e+00 4843 -2.6571000000e-01 1.0470000000e+00 4844 -2.9320000000e-01 1.0557000000e+00 4845 -2.7485000000e-01 1.0834000000e+00 4846 -2.3898000000e-01 1.0677000000e+00 4847 -2.3978000000e-01 1.1022000000e+00 4848 -2.1072000000e-01 1.0851000000e+00 4849 -2.0848000000e-01 1.0541000000e+00 4850 -2.3446000000e-01 1.0342000000e+00 4851 -2.0289000000e-01 1.0221000000e+00 4852 -2.2956000000e-01 1.0007000000e+00 4853 -2.2461000000e-01 9.6635000000e-01 4854 -1.9709000000e-01 9.8827000000e-01 4855 -1.7029000000e-01 1.0108000000e+00 4856 -1.6388000000e-01 9.7617000000e-01 4857 -1.9138000000e-01 9.5346000000e-01 4858 -1.5765000000e-01 9.4114000000e-01 4859 -1.8550000000e-01 9.1793000000e-01 4860 -2.1957000000e-01 9.3101000000e-01 4861 -2.1432000000e-01 8.9436000000e-01 4862 -2.4486000000e-01 8.7250000000e-01 4863 -2.7550000000e-01 8.5295000000e-01 4864 -3.0451000000e-01 8.3356000000e-01 4865 -2.4393000000e-01 8.3648000000e-01 4866 -2.7361000000e-01 8.1883000000e-01 4867 -3.0129000000e-01 7.9989000000e-01 4868 -3.3261000000e-01 8.1374000000e-01 4869 -3.2867000000e-01 7.7977000000e-01 4870 -2.9687000000e-01 7.6672000000e-01 4871 -3.2398000000e-01 7.4554000000e-01 4872 -3.5654000000e-01 7.5913000000e-01 4873 -3.5202000000e-01 7.2401000000e-01 4874 -3.8515000000e-01 7.3835000000e-01 4875 -3.8870000000e-01 7.7343000000e-01 4876 -4.1763000000e-01 7.5368000000e-01 4877 -4.1477000000e-01 7.1795000000e-01 4878 -4.4790000000e-01 7.3451000000e-01 4879 -4.4894000000e-01 7.6967000000e-01 4880 -4.8362000000e-01 7.5306000000e-01 4881 -4.7726000000e-01 7.1438000000e-01 4882 -4.4494000000e-01 6.9821000000e-01 4883 -4.7481000000e-01 6.7878000000e-01 4884 -5.0642000000e-01 6.9539000000e-01 4885 -5.0484000000e-01 6.5910000000e-01 4886 -5.3743000000e-01 6.7674000000e-01 4887 -5.3577000000e-01 6.3898000000e-01 4888 -5.0213000000e-01 6.2162000000e-01 4889 -5.3405000000e-01 6.0082000000e-01 4890 -5.6734000000e-01 6.1913000000e-01 4891 -5.6864000000e-01 6.5641000000e-01 4892 -5.9981000000e-01 6.3678000000e-01 4893 -6.0095000000e-01 6.7331000000e-01 4894 -5.7041000000e-01 6.9348000000e-01 4895 -5.3834000000e-01 7.1698000000e-01 4896 -5.7418000000e-01 7.2854000000e-01 4897 -5.5165000000e-01 7.4694000000e-01 4898 -5.7675000000e-01 7.6154000000e-01 4899 -6.0505000000e-01 7.4336000000e-01 4900 -6.0726000000e-01 7.7828000000e-01 4901 -5.7580000000e-01 7.9588000000e-01 4902 -6.0716000000e-01 8.1497000000e-01 4903 -5.7411000000e-01 8.3218000000e-01 4904 -5.4298000000e-01 8.1208000000e-01 4905 -5.4166000000e-01 8.4910000000e-01 4906 -5.3933000000e-01 8.8579000000e-01 4907 -5.1022000000e-01 8.6569000000e-01 4908 -5.0346000000e-01 9.0323000000e-01 4909 -4.8329000000e-01 8.7750000000e-01 4910 -4.8241000000e-01 8.4852000000e-01 4911 -5.1101000000e-01 8.2997000000e-01 4912 -3.9207000000e-01 8.0766000000e-01 4913 -4.2296000000e-01 8.2162000000e-01 4914 -4.2007000000e-01 7.8812000000e-01 4915 -4.4992000000e-01 8.0262000000e-01 4916 -4.5313000000e-01 8.3506000000e-01 4917 -4.7994000000e-01 8.1522000000e-01 4918 -7.7222000000e-01 1.4370000000e+00 4919 -7.5536000000e-01 1.4073000000e+00 4920 -7.7380000000e-01 1.3781000000e+00 4921 -7.9346000000e-01 1.3492000000e+00 4922 -8.1368000000e-01 1.3212000000e+00 4923 3.4641000000e-01 1.6787000000e+00 4924 3.1133000000e-01 1.6787000000e+00 4925 2.9389000000e-01 1.6483000000e+00 4926 2.5879000000e-01 1.6483000000e+00 4927 2.2369000000e-01 1.6483000000e+00 4928 1.8861000000e-01 1.6482000000e+00 4929 1.5353000000e-01 1.6482000000e+00 4930 1.1846000000e-01 1.6482000000e+00 4931 8.3386000000e-02 1.6482000000e+00 4932 6.5848000000e-02 1.6177000000e+00 4933 4.8283000000e-02 1.5872000000e+00 4934 1.3173000000e-02 1.5872000000e+00 4935 -2.1905000000e-02 1.5873000000e+00 4936 -5.6933000000e-02 1.5875000000e+00 4937 -9.1901000000e-02 1.5876000000e+00 4938 -1.2681000000e-01 1.5877000000e+00 4939 -1.6167000000e-01 1.5879000000e+00 4940 -1.9649000000e-01 1.5880000000e+00 4941 -2.3132000000e-01 1.5880000000e+00 4942 -2.6616000000e-01 1.5881000000e+00 4943 -3.0102000000e-01 1.5881000000e+00 4944 -3.3593000000e-01 1.5881000000e+00 4945 -3.5316000000e-01 1.5579000000e+00 4946 -3.8811000000e-01 1.5579000000e+00 4947 -4.2309000000e-01 1.5580000000e+00 4948 -4.5807000000e-01 1.5581000000e+00 4949 -4.9305000000e-01 1.5581000000e+00 4950 -5.2803000000e-01 1.5582000000e+00 4951 -5.6304000000e-01 1.5582000000e+00 4952 -5.9809000000e-01 1.5581000000e+00 4953 -6.3318000000e-01 1.5580000000e+00 4954 -6.6833000000e-01 1.5579000000e+00 4955 -6.8565000000e-01 1.5275000000e+00 4956 -7.2086000000e-01 1.5272000000e+00 4957 -7.3812000000e-01 1.4968000000e+00 4958 -7.5524000000e-01 1.4666000000e+00 4959 -7.8989000000e-01 1.4657000000e+00 4960 -7.3765000000e-01 1.4369000000e+00 4961 -7.2029000000e-01 1.4067000000e+00 4962 -7.3850000000e-01 1.3768000000e+00 4963 -7.5729000000e-01 1.3464000000e+00 4964 -7.7856000000e-01 1.3170000000e+00 4965 3.2191000000e+00 1.0848000000e+00 4966 3.2191000000e+00 1.1198000000e+00 4967 3.2190000000e+00 1.1549000000e+00 4968 3.2188000000e+00 1.1900000000e+00 4969 3.2186000000e+00 1.2252000000e+00 4970 3.2183000000e+00 1.2605000000e+00 4971 3.1875000000e+00 1.2784000000e+00 4972 3.1872000000e+00 1.3138000000e+00 4973 3.1869000000e+00 1.3492000000e+00 4974 3.1864000000e+00 1.3847000000e+00 4975 3.1553000000e+00 1.4030000000e+00 4976 3.1547000000e+00 1.4386000000e+00 4977 3.1537000000e+00 1.4742000000e+00 4978 3.1525000000e+00 1.5100000000e+00 4979 3.1205000000e+00 1.5283000000e+00 4980 3.0885000000e+00 1.5457000000e+00 4981 2.3968000000e+00 1.5046000000e+00 4982 2.3638000000e+00 1.5024000000e+00 4983 2.3314000000e+00 1.4988000000e+00 4984 2.2987000000e+00 1.4946000000e+00 4985 2.2771000000e+00 1.5215000000e+00 4986 2.2437000000e+00 1.5175000000e+00 4987 2.2100000000e+00 1.5142000000e+00 4988 2.1898000000e+00 1.5424000000e+00 4989 2.4319000000e+00 1.5049000000e+00 4990 2.4144000000e+00 1.4761000000e+00 4991 2.3826000000e+00 1.4762000000e+00 4992 2.3519000000e+00 1.4727000000e+00 4993 2.3204000000e+00 1.4682000000e+00 4994 2.2878000000e+00 1.4631000000e+00 4995 2.2654000000e+00 1.4902000000e+00 4996 2.2315000000e+00 1.4865000000e+00 4997 2.1970000000e+00 1.4829000000e+00 4998 2.1753000000e+00 1.5116000000e+00 4999 2.1553000000e+00 1.5410000000e+00 5000 2.1396000000e+00 1.5100000000e+00 5001 2.1178000000e+00 1.5410000000e+00 5002 2.1387000000e+00 1.5657000000e+00 5003 2.9219000000e+00 3.3451000000e-01 5004 2.9572000000e+00 3.3471000000e-01 5005 2.9926000000e+00 3.3491000000e-01 5006 2.0806000000e+00 1.5573000000e+00 5007 2.0432000000e+00 1.5492000000e+00 5008 2.0116000000e+00 1.5719000000e+00 5009 1.9794000000e+00 1.5939000000e+00 5010 1.9834000000e+00 1.6243000000e+00 5011 1.9492000000e+00 1.6215000000e+00 5012 1.9422000000e+00 1.6549000000e+00 5013 1.9137000000e+00 1.6019000000e+00 5014 1.8793000000e+00 1.6161000000e+00 5015 1.8454000000e+00 1.6266000000e+00 5016 1.8400000000e+00 1.6553000000e+00 5017 1.9450000000e+00 1.5818000000e+00 5018 1.9747000000e+00 1.5537000000e+00 5019 1.9368000000e+00 1.5489000000e+00 5020 1.9163000000e+00 1.5710000000e+00 5021 2.0666000000e+00 1.5283000000e+00 5022 2.0406000000e+00 1.5136000000e+00 5023 2.0097000000e+00 1.5345000000e+00 5024 1.8091000000e+00 1.6415000000e+00 5025 1.7677000000e+00 1.6442000000e+00 5026 1.7309000000e+00 1.6456000000e+00 5027 1.7126000000e+00 1.6154000000e+00 5028 1.6949000000e+00 1.5853000000e+00 5029 1.6596000000e+00 1.5855000000e+00 5030 1.6242000000e+00 1.5859000000e+00 5031 1.5889000000e+00 1.5863000000e+00 5032 1.5539000000e+00 1.5866000000e+00 5033 1.5190000000e+00 1.5868000000e+00 5034 1.5017000000e+00 1.5566000000e+00 5035 1.4670000000e+00 1.5565000000e+00 5036 1.4322000000e+00 1.5562000000e+00 5037 1.4154000000e+00 1.5255000000e+00 5038 1.4501000000e+00 1.5261000000e+00 5039 1.4336000000e+00 1.4956000000e+00 5040 1.3988000000e+00 1.4947000000e+00 5041 1.4175000000e+00 1.4648000000e+00 5042 1.3825000000e+00 1.4635000000e+00 5043 1.3637000000e+00 1.4936000000e+00 5044 1.3804000000e+00 1.5248000000e+00 5045 1.3451000000e+00 1.5241000000e+00 5046 5.9099000000e-01 1.6790000000e+00 5047 5.5618000000e-01 1.6791000000e+00 5048 5.2135000000e-01 1.6791000000e+00 5049 4.8648000000e-01 1.6790000000e+00 5050 4.5154000000e-01 1.6789000000e+00 5051 4.1653000000e-01 1.6788000000e+00 5052 3.8148000000e-01 1.6788000000e+00 5053 3.6411000000e-01 1.6484000000e+00 5054 3.2900000000e-01 1.6483000000e+00 5055 3.1158000000e-01 1.6179000000e+00 5056 2.7645000000e-01 1.6179000000e+00 5057 2.4133000000e-01 1.6178000000e+00 5058 2.0622000000e-01 1.6178000000e+00 5059 1.7113000000e-01 1.6178000000e+00 5060 1.3603000000e-01 1.6178000000e+00 5061 1.0094000000e-01 1.6177000000e+00 5062 8.3405000000e-02 1.5872000000e+00 5063 6.5842000000e-02 1.5566000000e+00 5064 3.0673000000e-02 1.5566000000e+00 5065 -4.4739000000e-03 1.5567000000e+00 5066 -3.9564000000e-02 1.5569000000e+00 5067 -7.4572000000e-02 1.5571000000e+00 5068 -1.0949000000e-01 1.5573000000e+00 5069 -1.4432000000e-01 1.5575000000e+00 5070 -1.7909000000e-01 1.5576000000e+00 5071 -2.1384000000e-01 1.5577000000e+00 5072 -2.4860000000e-01 1.5578000000e+00 5073 -2.8341000000e-01 1.5578000000e+00 5074 -3.1826000000e-01 1.5578000000e+00 5075 -3.3543000000e-01 1.5276000000e+00 5076 -3.7035000000e-01 1.5276000000e+00 5077 -4.0534000000e-01 1.5277000000e+00 5078 -4.4034000000e-01 1.5278000000e+00 5079 -4.7532000000e-01 1.5279000000e+00 5080 -5.1027000000e-01 1.5280000000e+00 5081 -5.4524000000e-01 1.5280000000e+00 5082 -5.8026000000e-01 1.5279000000e+00 5083 -6.1534000000e-01 1.5278000000e+00 5084 -6.5048000000e-01 1.5277000000e+00 5085 -6.6777000000e-01 1.4974000000e+00 5086 -7.0296000000e-01 1.4972000000e+00 5087 -6.8509000000e-01 1.4671000000e+00 5088 -7.2027000000e-01 1.4669000000e+00 5089 -7.0254000000e-01 1.4368000000e+00 5090 -6.8475000000e-01 1.4063000000e+00 5091 -7.0294000000e-01 1.3760000000e+00 5092 -7.2133000000e-01 1.3460000000e+00 5093 -7.3809000000e-01 1.3108000000e+00 5094 -7.0371000000e-01 1.2913000000e+00 5095 -6.7080000000e-01 1.2770000000e+00 5096 -6.3761000000e-01 1.2622000000e+00 5097 -6.0751000000e-01 1.2827000000e+00 5098 -5.7462000000e-01 1.2662000000e+00 5099 -5.4230000000e-01 1.2495000000e+00 5100 -5.1030000000e-01 1.2326000000e+00 5101 -4.7861000000e-01 1.2150000000e+00 5102 -4.7972000000e-01 1.1804000000e+00 5103 -4.8217000000e-01 1.1521000000e+00 5104 -4.4727000000e-01 1.1949000000e+00 5105 -4.0811000000e-01 1.2120000000e+00 5106 -3.8232000000e-01 1.1810000000e+00 5107 -3.5616000000e-01 1.1577000000e+00 5108 -3.4978000000e-01 1.1907000000e+00 5109 -3.2362000000e-01 1.1690000000e+00 5110 -3.1822000000e-01 1.2029000000e+00 5111 -2.9090000000e-01 1.1812000000e+00 5112 -2.9678000000e-01 1.1464000000e+00 5113 -3.2999000000e-01 1.1351000000e+00 5114 -3.0368000000e-01 1.1112000000e+00 5115 -2.6910000000e-01 1.1231000000e+00 5116 -2.6346000000e-01 1.1587000000e+00 5117 -2.3618000000e-01 1.1368000000e+00 5118 -2.0896000000e-01 1.1171000000e+00 5119 -1.8181000000e-01 1.0986000000e+00 5120 -1.8640000000e-01 1.0713000000e+00 5121 -1.7754000000e-01 1.0445000000e+00 5122 -1.4372000000e-01 1.0349000000e+00 5123 -1.3670000000e-01 9.9921000000e-01 5124 -1.3027000000e-01 9.6417000000e-01 5125 -1.2376000000e-01 9.2928000000e-01 5126 -9.6684000000e-02 9.5233000000e-01 5127 -8.9923000000e-02 9.1780000000e-01 5128 -1.1693000000e-01 8.9443000000e-01 5129 -1.5114000000e-01 9.0592000000e-01 5130 -1.7895000000e-01 8.8178000000e-01 5131 -2.0833000000e-01 8.5385000000e-01 5132 -2.1613000000e-01 8.1740000000e-01 5133 -1.8971000000e-01 8.2675000000e-01 5134 -1.9027000000e-01 7.9894000000e-01 5135 -2.1941000000e-01 7.8502000000e-01 5136 -2.4502000000e-01 8.0339000000e-01 5137 -2.7125000000e-01 7.8670000000e-01 5138 -2.6486000000e-01 7.5547000000e-01 5139 -2.9094000000e-01 7.3290000000e-01 5140 -2.5672000000e-01 7.2166000000e-01 5141 -2.8441000000e-01 6.9734000000e-01 5142 -2.5006000000e-01 6.8621000000e-01 5143 -2.7658000000e-01 6.5717000000e-01 5144 -3.1332000000e-01 6.7540000000e-01 5145 -3.1381000000e-01 6.3995000000e-01 5146 -3.3964000000e-01 6.5866000000e-01 5147 -3.4666000000e-01 6.8856000000e-01 5148 -3.7515000000e-01 6.6074000000e-01 5149 -3.8097000000e-01 7.0180000000e-01 5150 -3.1859000000e-01 7.1064000000e-01 5151 -4.4584000000e-01 1.2332000000e+00 5152 -4.7945000000e-01 1.2514000000e+00 5153 -4.4828000000e-01 1.2713000000e+00 5154 -4.1333000000e-01 1.2546000000e+00 5155 -4.1182000000e-01 6.8107000000e-01 5156 7.0754000000e-01 2.3614000000e-01 5157 6.9940000000e-01 2.7368000000e-01 5158 3.2067000000e+00 3.5574000000e-01 5159 3.1754000000e+00 3.5895000000e-01 5160 3.1725000000e+00 3.9795000000e-01 5161 3.1723000000e+00 4.3396000000e-01 5162 3.1727000000e+00 4.6928000000e-01 5163 3.2035000000e+00 4.8715000000e-01 5164 3.2037000000e+00 5.2304000000e-01 5165 3.2356000000e+00 5.4198000000e-01 5166 2.0905000000e+00 1.5263000000e+00 5167 2.0783000000e+00 1.4950000000e+00 5168 2.0414000000e+00 1.4780000000e+00 5169 2.0046000000e+00 1.4966000000e+00 5170 3.2162000000e+00 8.0225000000e-01 5171 3.2164000000e+00 8.3785000000e-01 5172 3.2167000000e+00 8.7348000000e-01 5173 3.2172000000e+00 9.0907000000e-01 5174 3.2177000000e+00 9.4451000000e-01 5175 3.2183000000e+00 9.7978000000e-01 5176 3.2187000000e+00 1.0149000000e+00 5177 3.2190000000e+00 1.0499000000e+00 5178 3.1887000000e+00 1.0673000000e+00 5179 3.1887000000e+00 1.1022000000e+00 5180 3.1885000000e+00 1.1372000000e+00 5181 3.1883000000e+00 1.1724000000e+00 5182 3.1880000000e+00 1.2077000000e+00 5183 3.1877000000e+00 1.2430000000e+00 5184 3.1568000000e+00 1.2609000000e+00 5185 3.1565000000e+00 1.2965000000e+00 5186 3.1562000000e+00 1.3320000000e+00 5187 3.1558000000e+00 1.3675000000e+00 5188 3.1247000000e+00 1.3860000000e+00 5189 3.1242000000e+00 1.4215000000e+00 5190 3.1234000000e+00 1.4570000000e+00 5191 3.1223000000e+00 1.4926000000e+00 5192 3.0910000000e+00 1.5107000000e+00 5193 3.0609000000e+00 1.5284000000e+00 5194 3.0608000000e+00 1.5577000000e+00 5195 3.0328000000e+00 1.5487000000e+00 5196 2.9961000000e+00 1.5368000000e+00 5197 2.9617000000e+00 1.5415000000e+00 5198 2.9333000000e+00 1.5255000000e+00 5199 2.8942000000e+00 1.5192000000e+00 5200 2.8574000000e+00 1.5115000000e+00 5201 2.8205000000e+00 1.5031000000e+00 5202 2.7833000000e+00 1.4941000000e+00 5203 2.7459000000e+00 1.4844000000e+00 5204 2.7167000000e+00 1.5123000000e+00 5205 2.6870000000e+00 1.5044000000e+00 5206 2.6645000000e+00 1.4821000000e+00 5207 2.6304000000e+00 1.4714000000e+00 5208 2.6019000000e+00 1.4868000000e+00 5209 2.5676000000e+00 1.4992000000e+00 5210 2.5420000000e+00 1.5204000000e+00 5211 2.5258000000e+00 1.5514000000e+00 5212 2.5233000000e+00 1.5853000000e+00 5213 2.5052000000e+00 1.6087000000e+00 5214 2.4955000000e+00 1.5773000000e+00 5215 2.4858000000e+00 1.5425000000e+00 5216 2.4480000000e+00 1.5373000000e+00 5217 2.4732000000e+00 1.5023000000e+00 5218 2.4476000000e+00 1.4737000000e+00 5219 2.4294000000e+00 1.4480000000e+00 5220 2.3982000000e+00 1.4493000000e+00 5221 2.3708000000e+00 1.4517000000e+00 5222 2.3428000000e+00 1.4387000000e+00 5223 2.3096000000e+00 1.4410000000e+00 5224 2.2793000000e+00 1.4266000000e+00 5225 2.2538000000e+00 1.4582000000e+00 5226 2.2193000000e+00 1.4556000000e+00 5227 2.1856000000e+00 1.4505000000e+00 5228 2.1605000000e+00 1.4789000000e+00 5229 2.1195000000e+00 1.4777000000e+00 5230 2.1091000000e+00 1.5100000000e+00 5231 1.0983000000e+00 1.7087000000e+00 5232 1.0634000000e+00 1.7088000000e+00 5233 1.0286000000e+00 1.7088000000e+00 5234 9.9372000000e-01 1.7088000000e+00 5235 1.8003000000e-01 1.4779000000e-01 5236 2.0157000000e-01 1.1993000000e-01 5237 1.8795000000e-01 8.7058000000e-02 5238 1.9567000000e+00 1.5232000000e+00 5239 1.9252000000e+00 1.5184000000e+00 5240 1.9034000000e+00 1.5448000000e+00 5241 1.8829000000e+00 1.5774000000e+00 5242 1.8545000000e+00 1.5976000000e+00 5243 1.8201000000e+00 1.5988000000e+00 5244 1.7833000000e+00 1.6111000000e+00 5245 1.7479000000e+00 1.6143000000e+00 5246 1.7298000000e+00 1.5851000000e+00 5247 1.7633000000e+00 1.5845000000e+00 5248 1.7474000000e+00 1.5558000000e+00 5249 1.7129000000e+00 1.5549000000e+00 5250 4.8231000000e-02 1.5259000000e+00 5251 1.2988000000e-02 1.5260000000e+00 5252 -2.2208000000e-02 1.5262000000e+00 5253 -5.7299000000e-02 1.5265000000e+00 5254 -9.2253000000e-02 1.5268000000e+00 5255 -1.2707000000e-01 1.5271000000e+00 5256 -1.6179000000e-01 1.5273000000e+00 5257 -1.9643000000e-01 1.5275000000e+00 5258 -2.3109000000e-01 1.5275000000e+00 5259 -2.6580000000e-01 1.5276000000e+00 5260 -3.0058000000e-01 1.5276000000e+00 5261 -3.1766000000e-01 1.4973000000e+00 5262 -3.5251000000e-01 1.4973000000e+00 5263 -3.8750000000e-01 1.4973000000e+00 5264 -4.2257000000e-01 1.4974000000e+00 5265 -4.5760000000e-01 1.4976000000e+00 5266 -4.9252000000e-01 1.4978000000e+00 5267 -5.2741000000e-01 1.4979000000e+00 5268 -5.6237000000e-01 1.4978000000e+00 5269 -5.9743000000e-01 1.4977000000e+00 5270 -6.3257000000e-01 1.4975000000e+00 5271 -6.4983000000e-01 1.4672000000e+00 5272 -6.6717000000e-01 1.4368000000e+00 5273 -6.4902000000e-01 1.4062000000e+00 5274 -6.6655000000e-01 1.3749000000e+00 5275 -6.8621000000e-01 1.3450000000e+00 5276 -7.0497000000e-01 1.3211000000e+00 5277 -6.7549000000e-01 1.3122000000e+00 5278 -6.4126000000e-01 1.2989000000e+00 5279 -6.1016000000e-01 1.3196000000e+00 5280 -5.7662000000e-01 1.3029000000e+00 5281 -5.4420000000e-01 1.2853000000e+00 5282 -5.1201000000e-01 1.2684000000e+00 5283 -4.8169000000e-01 1.2878000000e+00 5284 -4.5164000000e-01 1.3080000000e+00 5285 -4.1775000000e-01 1.2926000000e+00 5286 -3.8251000000e-01 1.2781000000e+00 5287 -3.7752000000e-01 1.2404000000e+00 5288 -3.7268000000e-01 1.2096000000e+00 5289 -3.4573000000e-01 1.2240000000e+00 5290 -3.1343000000e-01 1.2368000000e+00 5291 -3.4283000000e-01 1.2639000000e+00 5292 -3.0346000000e-01 1.2689000000e+00 5293 -2.8447000000e-01 1.2455000000e+00 5294 -2.8596000000e-01 1.2158000000e+00 5295 -2.5745000000e-01 1.1943000000e+00 5296 -2.3048000000e-01 1.1706000000e+00 5297 -2.2266000000e-01 1.2050000000e+00 5298 -1.9781000000e-01 1.1802000000e+00 5299 -2.0543000000e-01 1.1490000000e+00 5300 -1.7995000000e-01 1.1309000000e+00 5301 -1.5141000000e-01 1.1135000000e+00 5302 -1.5358000000e-01 1.0739000000e+00 5303 -1.1913000000e-01 1.0962000000e+00 5304 -1.5287000000e-01 1.1485000000e+00 5305 -1.2125000000e-01 1.1330000000e+00 5306 -1.2450000000e-01 1.1694000000e+00 5307 -9.1320000000e-02 1.1535000000e+00 5308 -8.8442000000e-02 1.1171000000e+00 5309 -8.5073000000e-02 1.0807000000e+00 5310 -5.5404000000e-02 1.1018000000e+00 5311 -5.8619000000e-02 1.1377000000e+00 5312 -6.1356000000e-02 1.1736000000e+00 5313 -2.9272000000e-02 1.1580000000e+00 5314 -2.6068000000e-02 1.1225000000e+00 5315 -2.2643000000e-02 1.0868000000e+00 5316 -5.1728000000e-02 1.0660000000e+00 5317 -8.0683000000e-02 1.0446000000e+00 5318 -1.1519000000e-01 1.0588000000e+00 5319 -1.0912000000e-01 1.0223000000e+00 5320 -7.5528000000e-02 1.0093000000e+00 5321 -1.0300000000e-01 9.8702000000e-01 5322 -6.9842000000e-02 9.7490000000e-01 5323 -6.3391000000e-02 9.4093000000e-01 5324 -5.6097000000e-02 9.0684000000e-01 5325 -3.0376000000e-02 9.3046000000e-01 5326 -2.1983000000e-02 8.9672000000e-01 5327 -4.8230000000e-02 8.7213000000e-01 5328 -8.2743000000e-02 8.8309000000e-01 5329 -7.5376000000e-02 8.4787000000e-01 5330 -4.0168000000e-02 8.3668000000e-01 5331 -6.7857000000e-02 8.1153000000e-01 5332 -1.0333000000e-01 8.2432000000e-01 5333 -9.7631000000e-02 7.8776000000e-01 5334 -1.3195000000e-01 8.0247000000e-01 5335 -1.3717000000e-01 8.3682000000e-01 5336 -1.0994000000e-01 8.5958000000e-01 5337 -1.4407000000e-01 8.7102000000e-01 5338 -1.7029000000e-01 8.4768000000e-01 5339 -1.6343000000e-01 8.1593000000e-01 5340 -1.6109000000e-01 7.8300000000e-01 5341 -1.9171000000e-01 7.6558000000e-01 5342 -1.6009000000e-01 7.4807000000e-01 5343 -1.9176000000e-01 7.2959000000e-01 5344 -2.2752000000e-01 7.4890000000e-01 5345 -2.2233000000e-01 7.0908000000e-01 5346 -2.4564000000e-01 7.7589000000e-01 5347 -1.8958000000e-01 6.9356000000e-01 5348 -1.5914000000e-01 7.1234000000e-01 5349 -1.2776000000e-01 7.3091000000e-01 5350 -1.2738000000e-01 6.9504000000e-01 5351 -1.5810000000e-01 6.7692000000e-01 5352 -1.8789000000e-01 6.5893000000e-01 5353 -1.5731000000e-01 6.4174000000e-01 5354 -1.8729000000e-01 6.2503000000e-01 5355 -2.1676000000e-01 6.4182000000e-01 5356 -2.1683000000e-01 6.0739000000e-01 5357 -2.4825000000e-01 6.2752000000e-01 5358 -2.5313000000e-01 5.8499000000e-01 5359 -2.1813000000e-01 6.7452000000e-01 5360 -2.4199000000e-01 6.5745000000e-01 5361 -2.8401000000e-01 6.1620000000e-01 5362 -3.2001000000e-01 6.0360000000e-01 5363 -2.9212000000e-01 5.8385000000e-01 5364 -3.2085000000e-01 5.6607000000e-01 5365 -3.5998000000e-01 5.8687000000e-01 5366 -3.4907000000e-01 6.2854000000e-01 5367 -3.8563000000e-01 6.2131000000e-01 5368 -4.1200000000e-01 6.4511000000e-01 5369 -4.4285000000e-01 6.6247000000e-01 5370 -4.7232000000e-01 6.4301000000e-01 5371 -4.4102000000e-01 6.2856000000e-01 5372 -4.6805000000e-01 6.0741000000e-01 5373 -4.3543000000e-01 5.9683000000e-01 5374 -4.1527000000e-01 6.1640000000e-01 5375 -4.0211000000e-01 5.9008000000e-01 5376 -5.1410000000e-01 1.3040000000e+00 5377 -5.4556000000e-01 1.3207000000e+00 5378 -5.1648000000e-01 1.3386000000e+00 5379 -4.8467000000e-01 1.3234000000e+00 5380 3.5294000000e-01 6.9565000000e-02 5381 2.0621000000e+00 1.2053000000e-01 5382 2.0442000000e+00 1.5062000000e-01 5383 2.0793000000e+00 1.5091000000e-01 5384 2.0612000000e+00 1.8114000000e-01 5385 2.0965000000e+00 1.8139000000e-01 5386 2.0784000000e+00 2.1181000000e-01 5387 2.1139000000e+00 2.1193000000e-01 5388 2.0958000000e+00 2.4252000000e-01 5389 2.1314000000e+00 2.4243000000e-01 5390 2.1492000000e+00 2.1195000000e-01 5391 2.1318000000e+00 1.8152000000e-01 5392 -4.2629000000e-01 5.6443000000e-01 5393 -4.5966000000e-01 5.7399000000e-01 5394 -4.5178000000e-01 5.4215000000e-01 5395 -4.7864000000e-01 5.5268000000e-01 5396 -4.7848000000e-01 5.2424000000e-01 5397 -4.4870000000e-01 5.0850000000e-01 5398 -4.1877000000e-01 5.2894000000e-01 5399 -4.1628000000e-01 4.9141000000e-01 5400 -3.7959000000e-01 5.1250000000e-01 5401 -3.8984000000e-01 5.5447000000e-01 5402 -3.5214000000e-01 5.4387000000e-01 5403 3.1254000000e+00 1.3148000000e+00 5404 3.1251000000e+00 1.3504000000e+00 5405 3.0940000000e+00 1.3691000000e+00 5406 3.0937000000e+00 1.4047000000e+00 5407 3.0931000000e+00 1.4402000000e+00 5408 3.0922000000e+00 1.4756000000e+00 5409 3.0613000000e+00 1.4943000000e+00 5410 3.0304000000e+00 1.5139000000e+00 5411 3.1577000000e+00 1.1547000000e+00 5412 3.1574000000e+00 1.1900000000e+00 5413 3.1570000000e+00 1.2254000000e+00 5414 3.1259000000e+00 1.2434000000e+00 5415 3.1257000000e+00 1.2791000000e+00 5416 3.0944000000e+00 1.2976000000e+00 5417 3.0943000000e+00 1.3334000000e+00 5418 3.0631000000e+00 1.3524000000e+00 5419 3.0629000000e+00 1.3881000000e+00 5420 3.0627000000e+00 1.4237000000e+00 5421 3.0621000000e+00 1.4591000000e+00 5422 3.0312000000e+00 1.4782000000e+00 5423 3.0000000000e+00 1.4973000000e+00 5424 2.5809000000e+00 1.4656000000e+00 5425 2.5481000000e+00 1.4692000000e+00 5426 2.5359000000e+00 1.4959000000e+00 5427 2.5121000000e+00 1.5148000000e+00 5428 3.0319000000e+00 1.4429000000e+00 5429 3.0015000000e+00 1.4622000000e+00 5430 2.9722000000e+00 1.4804000000e+00 5431 2.9685000000e+00 1.5128000000e+00 5432 2.9475000000e+00 1.4955000000e+00 5433 2.9195000000e+00 1.4915000000e+00 5434 2.8851000000e+00 1.4837000000e+00 5435 2.8493000000e+00 1.4749000000e+00 5436 2.8127000000e+00 1.4659000000e+00 5437 2.7761000000e+00 1.4566000000e+00 5438 2.7399000000e+00 1.4468000000e+00 5439 2.7061000000e+00 1.4740000000e+00 5440 2.6817000000e+00 1.4530000000e+00 5441 2.6542000000e+00 1.4486000000e+00 5442 2.6250000000e+00 1.4418000000e+00 5443 2.6068000000e+00 1.4608000000e+00 5444 2.5962000000e+00 1.4384000000e+00 5445 2.5647000000e+00 1.4387000000e+00 5446 2.5299000000e+00 1.4401000000e+00 5447 2.5099000000e+00 1.4757000000e+00 5448 1.0460000000e+00 1.6785000000e+00 5449 1.0112000000e+00 1.6785000000e+00 5450 9.7640000000e-01 1.6784000000e+00 5451 9.5882000000e-01 1.7087000000e+00 5452 9.2386000000e-01 1.7086000000e+00 5453 8.8885000000e-01 1.7085000000e+00 5454 8.5378000000e-01 1.7085000000e+00 5455 8.7145000000e-01 1.6780000000e+00 5456 8.3631000000e-01 1.6779000000e+00 5457 8.1868000000e-01 1.7084000000e+00 5458 1.0808000000e+00 1.6784000000e+00 5459 1.0633000000e+00 1.6481000000e+00 5460 1.0286000000e+00 1.6482000000e+00 5461 9.9394000000e-01 1.6481000000e+00 5462 9.5916000000e-01 1.6479000000e+00 5463 9.4150000000e-01 1.6782000000e+00 5464 9.0652000000e-01 1.6781000000e+00 5465 8.8919000000e-01 1.6475000000e+00 5466 8.5402000000e-01 1.6473000000e+00 5467 8.1879000000e-01 1.6472000000e+00 5468 8.0115000000e-01 1.6779000000e+00 5469 7.8356000000e-01 1.7085000000e+00 5470 7.4846000000e-01 1.7086000000e+00 5471 7.3087000000e-01 1.6781000000e+00 5472 6.9579000000e-01 1.6783000000e+00 5473 6.6078000000e-01 1.6785000000e+00 5474 6.2585000000e-01 1.6788000000e+00 5475 6.0832000000e-01 1.6486000000e+00 5476 5.7358000000e-01 1.6488000000e+00 5477 5.3888000000e-01 1.6489000000e+00 5478 5.0412000000e-01 1.6488000000e+00 5479 4.6925000000e-01 1.6487000000e+00 5480 4.3427000000e-01 1.6485000000e+00 5481 3.9921000000e-01 1.6484000000e+00 5482 3.8188000000e-01 1.6180000000e+00 5483 3.4673000000e-01 1.6179000000e+00 5484 3.2931000000e-01 1.5874000000e+00 5485 2.9414000000e-01 1.5874000000e+00 5486 2.5899000000e-01 1.5874000000e+00 5487 2.2387000000e-01 1.5874000000e+00 5488 1.8875000000e-01 1.5873000000e+00 5489 1.5364000000e-01 1.5873000000e+00 5490 1.1853000000e-01 1.5872000000e+00 5491 1.0101000000e-01 1.5567000000e+00 5492 8.3468000000e-02 1.5260000000e+00 5493 6.5890000000e-02 1.4952000000e+00 5494 3.0532000000e-02 1.4952000000e+00 5495 -4.8266000000e-03 1.4953000000e+00 5496 -4.0077000000e-02 1.4957000000e+00 5497 -7.5127000000e-02 1.4962000000e+00 5498 -1.0997000000e-01 1.4966000000e+00 5499 -1.4464000000e-01 1.4970000000e+00 5500 -1.7916000000e-01 1.4972000000e+00 5501 -2.1364000000e-01 1.4973000000e+00 5502 -2.4820000000e-01 1.4973000000e+00 5503 -2.8289000000e-01 1.4973000000e+00 5504 -2.9990000000e-01 1.4672000000e+00 5505 -3.3460000000e-01 1.4671000000e+00 5506 -3.6950000000e-01 1.4670000000e+00 5507 -4.0469000000e-01 1.4669000000e+00 5508 -4.3991000000e-01 1.4672000000e+00 5509 -4.7486000000e-01 1.4676000000e+00 5510 -5.0960000000e-01 1.4678000000e+00 5511 -5.4440000000e-01 1.4677000000e+00 5512 -5.7942000000e-01 1.4675000000e+00 5513 -6.1458000000e-01 1.4673000000e+00 5514 -6.3176000000e-01 1.4369000000e+00 5515 -6.1351000000e-01 1.4066000000e+00 5516 -6.3037000000e-01 1.3758000000e+00 5517 -5.9526000000e-01 1.3765000000e+00 5518 -6.1189000000e-01 1.3509000000e+00 5519 -6.4599000000e-01 1.3396000000e+00 5520 -5.7767000000e-01 1.3425000000e+00 5521 -5.4426000000e-01 1.3507000000e+00 5522 -5.2163000000e-01 1.3750000000e+00 5523 -4.8866000000e-01 1.3576000000e+00 5524 -4.5544000000e-01 1.3442000000e+00 5525 -4.2202000000e-01 1.3289000000e+00 5526 -3.8876000000e-01 1.3147000000e+00 5527 -3.5492000000e-01 1.3026000000e+00 5528 -3.2227000000e-01 1.2963000000e+00 5529 -2.8965000000e-01 1.2999000000e+00 5530 -3.0964000000e-01 1.3203000000e+00 5531 -2.8408000000e-01 1.3337000000e+00 5532 -2.5027000000e-01 1.3090000000e+00 5533 -2.6822000000e-01 1.2714000000e+00 5534 -2.5137000000e-01 1.2344000000e+00 5535 -2.1081000000e-01 1.2384000000e+00 5536 -2.3016000000e-01 1.2705000000e+00 5537 -1.9229000000e-01 1.2681000000e+00 5538 -2.0809000000e-01 1.3018000000e+00 5539 -1.7052000000e-01 1.2971000000e+00 5540 -1.5391000000e-01 1.2605000000e+00 5541 -1.8034000000e-01 1.2405000000e+00 5542 -1.8817000000e-01 1.2122000000e+00 5543 -1.6088000000e-01 1.1855000000e+00 5544 -1.7936000000e-01 1.1588000000e+00 5545 -1.2696000000e-01 1.2059000000e+00 5546 -9.3893000000e-02 1.1903000000e+00 5547 -6.3115000000e-02 1.2093000000e+00 5548 -3.2063000000e-02 1.1929000000e+00 5549 -5.9613000000e-04 1.1782000000e+00 5550 2.9331000000e-03 1.1431000000e+00 5551 3.1508000000e-02 1.1640000000e+00 5552 3.5442000000e-02 1.1285000000e+00 5553 6.4516000000e-03 1.1076000000e+00 5554 3.9051000000e-02 1.0927000000e+00 5555 9.8558000000e-03 1.0719000000e+00 5556 4.2310000000e-02 1.0566000000e+00 5557 1.2939000000e-02 1.0364000000e+00 5558 -1.9114000000e-02 1.0514000000e+00 5559 -4.7601000000e-02 1.0308000000e+00 5560 -4.3044000000e-02 9.9654000000e-01 5561 -3.7512000000e-02 9.6337000000e-01 5562 -6.2681000000e-03 9.5336000000e-01 5563 2.9013000000e-03 9.2164000000e-01 5564 2.5781000000e-02 9.4741000000e-01 5565 3.7271000000e-02 9.1438000000e-01 5566 6.0601000000e-02 9.4218000000e-01 5567 7.2643000000e-02 9.0767000000e-01 5568 9.6110000000e-02 9.3492000000e-01 5569 1.0812000000e-01 9.0143000000e-01 5570 8.4946000000e-02 8.7339000000e-01 5571 4.8713000000e-02 8.7983000000e-01 5572 1.2889000000e-02 8.8765000000e-01 5573 -1.3055000000e-02 8.6172000000e-01 5574 -4.2973000000e-03 8.2553000000e-01 5575 -3.2208000000e-02 8.0138000000e-01 5576 -5.8411000000e-02 7.7124000000e-01 5577 -9.5210000000e-02 7.5005000000e-01 5578 -1.2897000000e-01 7.6703000000e-01 5579 -9.5688000000e-02 7.1296000000e-01 5580 -9.6309000000e-02 6.7727000000e-01 5581 -6.4663000000e-02 6.9412000000e-01 5582 -6.5995000000e-02 6.5901000000e-01 5583 -9.6897000000e-02 6.4265000000e-01 5584 -1.2714000000e-01 6.5988000000e-01 5585 -3.4545000000e-02 6.7510000000e-01 5586 -3.2653000000e-02 7.0999000000e-01 5587 -3.1172000000e-03 6.9086000000e-01 5588 -1.2313000000e-03 7.2494000000e-01 5589 -2.9600000000e-02 7.4454000000e-01 5590 1.0579000000e-03 7.5770000000e-01 5591 2.9147000000e-02 7.4009000000e-01 5592 3.0553000000e-02 7.7334000000e-01 5593 5.8798000000e-02 7.5560000000e-01 5594 -2.3615000000e-02 7.7303000000e-01 5595 2.7800000000e-02 7.0656000000e-01 5596 2.6629000000e-02 6.7236000000e-01 5597 -4.6703000000e-03 6.5631000000e-01 5598 2.5379000000e-02 6.3768000000e-01 5599 5.6923000000e-02 6.5415000000e-01 5600 5.5737000000e-02 6.1906000000e-01 5601 2.3892000000e-02 6.0275000000e-01 5602 -6.2183000000e-03 6.2159000000e-01 5603 -7.9220000000e-03 5.8672000000e-01 5604 -3.7843000000e-02 6.0580000000e-01 5605 -3.6115000000e-02 6.4039000000e-01 5606 -6.7364000000e-02 6.2463000000e-01 5607 -9.7770000000e-02 6.0945000000e-01 5608 -1.2671000000e-01 6.2570000000e-01 5609 -1.5661000000e-01 6.0400000000e-01 5610 -1.2443000000e-01 5.9648000000e-01 5611 6.4185000000e-02 1.0015000000e-01 5612 5.0246000000e-02 6.8718000000e-02 5613 3.0295000000e-02 9.6855000000e-02 5614 4.5173000000e-02 1.2705000000e-01 5615 7.7310000000e-02 1.3073000000e-01 5616 2.1135000000e+00 2.7308000000e-01 5617 2.1489000000e+00 2.7282000000e-01 5618 2.1667000000e+00 2.4234000000e-01 5619 2.1845000000e+00 2.1195000000e-01 5620 2.1671000000e+00 1.8158000000e-01 5621 1.7128000000e-01 1.5568000000e+00 5622 1.3616000000e-01 1.5567000000e+00 5623 1.1867000000e-01 1.5261000000e+00 5624 1.0118000000e-01 1.4954000000e+00 5625 8.3693000000e-02 1.4645000000e+00 5626 4.8243000000e-02 1.4642000000e+00 5627 1.2670000000e-02 1.4642000000e+00 5628 -2.2872000000e-02 1.4646000000e+00 5629 -5.8144000000e-02 1.4654000000e+00 5630 -9.3038000000e-02 1.4661000000e+00 5631 -1.2769000000e-01 1.4666000000e+00 5632 -1.6216000000e-01 1.4670000000e+00 5633 -1.9634000000e-01 1.4673000000e+00 5634 -2.3059000000e-01 1.4672000000e+00 5635 -2.6519000000e-01 1.4671000000e+00 5636 -2.8230000000e-01 1.4369000000e+00 5637 -3.1675000000e-01 1.4372000000e+00 5638 -3.5124000000e-01 1.4369000000e+00 5639 -3.8644000000e-01 1.4362000000e+00 5640 -4.2218000000e-01 1.4363000000e+00 5641 -4.5752000000e-01 1.4373000000e+00 5642 -4.9199000000e-01 1.4381000000e+00 5643 -5.2634000000e-01 1.4378000000e+00 5644 -5.6124000000e-01 1.4374000000e+00 5645 -5.9645000000e-01 1.4371000000e+00 5646 -5.7817000000e-01 1.4069000000e+00 5647 -5.5993000000e-01 1.3765000000e+00 5648 1.8910000000e+00 1.5120000000e+00 5649 1.8684000000e+00 1.5412000000e+00 5650 1.8451000000e+00 1.5691000000e+00 5651 1.8333000000e+00 1.5363000000e+00 5652 1.8116000000e+00 1.5628000000e+00 5653 1.7916000000e+00 1.5830000000e+00 5654 4.1702000000e-01 1.6181000000e+00 5655 3.9974000000e-01 1.5875000000e+00 5656 3.6452000000e-01 1.5874000000e+00 5657 3.4709000000e-01 1.5569000000e+00 5658 3.1186000000e-01 1.5569000000e+00 5659 2.7668000000e-01 1.5569000000e+00 5660 2.4153000000e-01 1.5569000000e+00 5661 2.0641000000e-01 1.5569000000e+00 5662 1.8896000000e-01 1.5263000000e+00 5663 1.5383000000e-01 1.5262000000e+00 5664 1.3640000000e-01 1.4956000000e+00 5665 1.1900000000e-01 1.4648000000e+00 5666 1.0165000000e-01 1.4338000000e+00 5667 6.6205000000e-02 1.4333000000e+00 5668 3.0469000000e-02 1.4329000000e+00 5669 -5.5336000000e-03 1.4330000000e+00 5670 -4.1340000000e-02 1.4341000000e+00 5671 -7.6428000000e-02 1.4355000000e+00 5672 -1.1089000000e-01 1.4364000000e+00 5673 -1.4550000000e-01 1.4364000000e+00 5674 -1.7961000000e-01 1.4375000000e+00 5675 -2.1290000000e-01 1.4376000000e+00 5676 -2.4726000000e-01 1.4365000000e+00 5677 -2.6514000000e-01 1.4063000000e+00 5678 -2.9954000000e-01 1.4074000000e+00 5679 -3.3291000000e-01 1.4079000000e+00 5680 -3.6723000000e-01 1.4060000000e+00 5681 -4.0374000000e-01 1.4044000000e+00 5682 -4.4075000000e-01 1.4057000000e+00 5683 -4.7537000000e-01 1.4090000000e+00 5684 -5.0821000000e-01 1.4088000000e+00 5685 -5.4259000000e-01 1.4071000000e+00 5686 -4.9127000000e-01 1.3858000000e+00 5687 -4.6245000000e-01 1.3785000000e+00 5688 -4.2320000000e-01 1.3687000000e+00 5689 -3.9533000000e-01 1.3453000000e+00 5690 -3.6004000000e-01 1.3407000000e+00 5691 -3.3318000000e-01 1.3220000000e+00 5692 -3.1906000000e-01 1.3499000000e+00 5693 -2.8381000000e-01 1.3730000000e+00 5694 -2.5207000000e-01 1.3501000000e+00 5695 -2.1975000000e-01 1.3360000000e+00 5696 -1.8561000000e-01 1.3302000000e+00 5697 -1.5032000000e-01 1.3273000000e+00 5698 -1.3303000000e-01 1.2946000000e+00 5699 -1.1497000000e-01 1.2631000000e+00 5700 -1.2972000000e-01 1.2366000000e+00 5701 -9.6246000000e-02 1.2300000000e+00 5702 -6.1219000000e-02 1.2432000000e+00 5703 -3.4045000000e-02 1.2261000000e+00 5704 -4.1223000000e-03 1.2124000000e+00 5705 2.7314000000e-02 1.1988000000e+00 5706 5.9559000000e-02 1.1854000000e+00 5707 6.4277000000e-02 1.1499000000e+00 5708 6.8308000000e-02 1.1138000000e+00 5709 7.1809000000e-02 1.0776000000e+00 5710 7.5028000000e-02 1.0413000000e+00 5711 4.5049000000e-02 1.0201000000e+00 5712 7.8521000000e-02 1.0048000000e+00 5713 4.6322000000e-02 9.7977000000e-01 5714 1.5046000000e-02 1.0017000000e+00 5715 -1.5649000000e-02 1.0168000000e+00 5716 -1.2259000000e-02 9.8416000000e-01 5717 1.3745000000e-02 9.7326000000e-01 5718 -1.6660000000e-01 1.3626000000e+00 5719 -1.3067000000e-01 1.3546000000e+00 5720 -1.1557000000e-01 1.3249000000e+00 5721 -9.2996000000e-02 1.2949000000e+00 5722 -8.3998000000e-02 1.2619000000e+00 5723 -5.4659000000e-02 1.2784000000e+00 5724 -6.1415000000e-02 1.3150000000e+00 5725 -2.9249000000e-02 1.3051000000e+00 5726 -1.8487000000e-02 1.2752000000e+00 5727 -3.5365000000e-02 1.2536000000e+00 5728 -8.5067000000e-03 1.2453000000e+00 5729 2.3050000000e-02 1.2333000000e+00 5730 1.7830000000e-02 1.2710000000e+00 5731 5.1308000000e-02 1.2529000000e+00 5732 5.4381000000e-02 1.2194000000e+00 5733 8.6785000000e-02 1.2082000000e+00 5734 9.2997000000e-02 1.1724000000e+00 5735 1.2160000000e-01 1.1965000000e+00 5736 1.2793000000e-01 1.1586000000e+00 5737 9.7743000000e-02 1.1357000000e+00 5738 1.0141000000e-01 1.0989000000e+00 5739 1.3144000000e-01 1.1205000000e+00 5740 1.3445000000e-01 1.0833000000e+00 5741 1.6466000000e-01 1.1043000000e+00 5742 1.6725000000e-01 1.0672000000e+00 5743 1.9737000000e-01 1.0879000000e+00 5744 1.9998000000e-01 1.0512000000e+00 5745 1.6977000000e-01 1.0300000000e+00 5746 1.3722000000e-01 1.0467000000e+00 5747 1.0463000000e-01 1.0623000000e+00 5748 1.0774000000e-01 1.0264000000e+00 5749 1.1150000000e-01 9.9225000000e-01 5750 1.3941000000e-01 1.0111000000e+00 5751 1.3872000000e-01 9.8184000000e-01 5752 1.1910000000e-01 9.6048000000e-01 5753 8.5377000000e-02 9.6905000000e-01 5754 1.3071000000e-01 9.2879000000e-01 5755 1.4336000000e-01 8.9597000000e-01 5756 1.6542000000e-01 9.2389000000e-01 5757 1.7856000000e-01 8.9093000000e-01 5758 1.5637000000e-01 8.6291000000e-01 5759 1.9160000000e-01 8.5794000000e-01 5760 1.6956000000e-01 8.3005000000e-01 5761 1.3420000000e-01 8.3468000000e-01 5762 1.4785000000e-01 8.0211000000e-01 5763 1.8272000000e-01 7.9756000000e-01 5764 1.6115000000e-01 7.7015000000e-01 5765 1.2719000000e-01 7.7450000000e-01 5766 1.1224000000e-01 8.0580000000e-01 5767 9.8198000000e-02 8.3933000000e-01 5768 7.5813000000e-02 8.0999000000e-01 5769 6.1042000000e-02 8.4427000000e-01 5770 1.2088000000e-01 8.6794000000e-01 5771 2.3409000000e-02 8.5172000000e-01 5772 3.5108000000e-02 8.1143000000e-01 5773 1.1012000000e-03 7.9038000000e-01 5774 -6.2715000000e-02 7.3047000000e-01 5775 5.8089000000e-02 7.8491000000e-01 5776 9.0146000000e-02 7.7430000000e-01 5777 8.6925000000e-02 7.3858000000e-01 5778 5.7906000000e-02 7.2251000000e-01 5779 5.7475000000e-02 6.8874000000e-01 5780 8.8309000000e-02 6.7135000000e-01 5781 8.8008000000e-02 6.3584000000e-01 5782 8.7280000000e-02 7.0561000000e-01 5783 1.1757000000e-01 6.8984000000e-01 5784 1.2258000000e-01 6.5405000000e-01 5785 1.1839000000e-01 6.1636000000e-01 5786 1.5016000000e-01 6.3041000000e-01 5787 1.4745000000e-01 5.9674000000e-01 5788 1.1602000000e-01 5.8109000000e-01 5789 8.6094000000e-02 6.0018000000e-01 5790 5.4124000000e-02 5.8387000000e-01 5791 2.2259000000e-02 5.6768000000e-01 5792 5.2487000000e-02 5.4874000000e-01 5793 2.0671000000e-02 5.3249000000e-01 5794 -9.7015000000e-03 5.5161000000e-01 5795 -3.9900000000e-02 5.7101000000e-01 5796 -6.9495000000e-02 5.9056000000e-01 5797 -7.2402000000e-02 5.5582000000e-01 5798 -1.0164000000e-01 5.7670000000e-01 5799 -1.0630000000e-01 5.4133000000e-01 5800 -1.3934000000e-01 5.6657000000e-01 5801 -1.4042000000e-01 5.2571000000e-01 5802 -1.0893000000e-01 5.0349000000e-01 5803 -1.4212000000e-01 4.8882000000e-01 5804 -1.7278000000e-01 5.0851000000e-01 5805 -1.7302000000e-01 5.4551000000e-01 5806 -1.7289000000e-01 5.7621000000e-01 5807 -1.8819000000e-01 5.9627000000e-01 5808 -2.0720000000e-01 5.6866000000e-01 5809 -2.4085000000e-01 5.4285000000e-01 5810 -2.8244000000e-01 5.4831000000e-01 5811 -3.1822000000e-01 5.2976000000e-01 5812 1.3691000000e-01 1.4343000000e+00 5813 1.5418000000e-01 1.4651000000e+00 5814 1.7201000000e-01 1.4347000000e+00 5815 1.5488000000e-01 1.4039000000e+00 5816 1.1974000000e-01 1.4033000000e+00 5817 8.4383000000e-02 1.4026000000e+00 5818 1.0268000000e-01 1.3721000000e+00 5819 1.3797000000e-01 1.3730000000e+00 5820 1.7285000000e-01 1.3739000000e+00 5821 1.5640000000e-01 1.3433000000e+00 5822 1.2129000000e-01 1.3417000000e+00 5823 -1.7221000000e-01 4.7282000000e-01 5824 -1.4553000000e-01 4.5931000000e-01 5825 -1.6690000000e-01 4.3464000000e-01 5826 -2.0236000000e-01 4.5476000000e-01 5827 -2.0355000000e-01 4.1840000000e-01 5828 -2.3433000000e-01 4.3842000000e-01 5829 -2.3364000000e-01 4.7340000000e-01 5830 -2.0352000000e-01 4.9075000000e-01 5831 2.9438000000e-01 1.5264000000e+00 5832 2.5921000000e-01 1.5264000000e+00 5833 2.2408000000e-01 1.5264000000e+00 5834 2.0666000000e-01 1.4959000000e+00 5835 1.7155000000e-01 1.4957000000e+00 5836 -2.6405000000e-01 4.5765000000e-01 5837 -2.6279000000e-01 4.9104000000e-01 5838 -2.3473000000e-01 5.0759000000e-01 5839 -2.0536000000e-01 5.2733000000e-01 5840 2.4176000000e-01 1.4959000000e+00 5841 2.2434000000e-01 1.4654000000e+00 5842 1.8928000000e-01 1.4653000000e+00 5843 2.0701000000e-01 1.4349000000e+00 5844 1.8981000000e-01 1.4044000000e+00 5845 2.0748000000e-01 1.3743000000e+00 5846 1.9061000000e-01 1.3442000000e+00 5847 2.2483000000e-01 1.3442000000e+00 5848 2.0740000000e-01 1.3146000000e+00 5849 1.7473000000e-01 1.3150000000e+00 5850 1.9076000000e-01 1.2911000000e+00 5851 1.6232000000e-01 1.2846000000e+00 5852 1.4093000000e-01 1.3118000000e+00 5853 1.0430000000e-01 1.3089000000e+00 5854 8.5452000000e-02 1.3407000000e+00 5855 6.7125000000e-02 1.3093000000e+00 5856 5.0066000000e-02 1.3407000000e+00 5857 6.7230000000e-02 1.3714000000e+00 5858 3.1997000000e-02 1.3702000000e+00 5859 4.8788000000e-02 1.4019000000e+00 5860 1.2432000000e-02 1.4007000000e+00 5861 -2.4580000000e-02 1.4014000000e+00 5862 -6.0512000000e-02 1.4045000000e+00 5863 -9.4677000000e-02 1.4067000000e+00 5864 -1.2804000000e-01 1.4074000000e+00 5865 -1.6464000000e-01 1.4033000000e+00 5866 -1.9616000000e-01 1.4134000000e+00 5867 -2.2746000000e-01 1.4039000000e+00 5868 -2.5051000000e-01 1.3804000000e+00 5869 -3.1634000000e-01 1.3830000000e+00 5870 -3.4637000000e-01 1.3768000000e+00 5871 -3.8265000000e-01 1.3737000000e+00 5872 -2.6599000000e-01 4.2304000000e-01 5873 -2.9502000000e-01 4.4290000000e-01 5874 -2.9770000000e-01 4.0811000000e-01 5875 -3.2647000000e-01 4.2848000000e-01 5876 -3.2937000000e-01 3.9364000000e-01 5877 -3.5811000000e-01 4.1386000000e-01 5878 -3.5520000000e-01 4.4915000000e-01 5879 -3.8747000000e-01 4.3414000000e-01 5880 -3.8457000000e-01 4.7098000000e-01 5881 -3.5115000000e-01 4.8426000000e-01 5882 -3.2338000000e-01 4.6304000000e-01 5883 -2.9248000000e-01 4.7693000000e-01 5884 -3.1987000000e-01 4.9632000000e-01 5885 -2.8967000000e-01 5.1043000000e-01 5886 -2.6212000000e-01 5.2007000000e-01 5887 -3.4422000000e-01 5.1337000000e-01 5888 -4.1763000000e-01 4.5424000000e-01 5889 -4.4831000000e-01 4.7319000000e-01 5890 -4.7846000000e-01 4.9091000000e-01 5891 -4.7919000000e-01 4.5640000000e-01 5892 -5.0841000000e-01 4.7450000000e-01 5893 -5.0754000000e-01 5.0853000000e-01 5894 -5.0561000000e-01 5.4259000000e-01 5895 -5.3669000000e-01 5.2674000000e-01 5896 -5.3463000000e-01 5.6293000000e-01 5897 -5.6702000000e-01 5.4516000000e-01 5898 -5.6673000000e-01 5.8186000000e-01 5899 -4.9757000000e-01 5.8031000000e-01 5900 -5.9827000000e-01 5.6317000000e-01 5901 -5.9893000000e-01 5.9988000000e-01 5902 -6.3119000000e-01 6.1764000000e-01 5903 -6.3171000000e-01 6.5429000000e-01 5904 -6.6348000000e-01 6.3595000000e-01 5905 -6.6302000000e-01 5.9825000000e-01 5906 -6.9893000000e-01 6.1764000000e-01 5907 -6.9349000000e-01 6.5576000000e-01 5908 -7.1916000000e-01 6.4334000000e-01 5909 -7.2532000000e-01 6.7551000000e-01 5910 -6.9155000000e-01 6.9002000000e-01 5911 -6.6247000000e-01 6.7210000000e-01 5912 -6.3228000000e-01 6.8996000000e-01 5913 -6.0275000000e-01 7.0887000000e-01 5914 -6.3349000000e-01 7.2453000000e-01 5915 -6.6223000000e-01 7.0661000000e-01 5916 -6.6283000000e-01 7.3999000000e-01 5917 -6.3572000000e-01 7.5838000000e-01 5918 -6.4297000000e-01 7.9551000000e-01 5919 -6.7916000000e-01 7.9031000000e-01 5920 -7.0501000000e-01 7.8533000000e-01 5921 -7.2487000000e-01 7.6797000000e-01 5922 -7.5339000000e-01 7.8136000000e-01 5923 -7.8042000000e-01 7.6336000000e-01 5924 -8.0767000000e-01 7.4497000000e-01 5925 -7.7839000000e-01 7.3026000000e-01 5926 -8.0474000000e-01 7.1286000000e-01 5927 -7.7919000000e-01 7.0148000000e-01 5928 -8.0180000000e-01 6.7756000000e-01 5929 -7.4750000000e-01 7.1065000000e-01 5930 -7.5080000000e-01 7.4826000000e-01 5931 -7.2019000000e-01 7.3596000000e-01 5932 -7.1505000000e-01 7.0704000000e-01 5933 -7.6354000000e-01 6.7605000000e-01 5934 -7.4694000000e-01 6.4574000000e-01 5935 -7.8049000000e-01 6.4537000000e-01 5936 -8.1454000000e-01 6.4142000000e-01 5937 -7.9413000000e-01 6.1934000000e-01 5938 -8.2093000000e-01 6.0812000000e-01 5939 -8.4741000000e-01 6.2980000000e-01 5940 -8.4250000000e-01 6.6835000000e-01 5941 -8.2761000000e-01 6.9736000000e-01 5942 -8.3382000000e-01 7.2550000000e-01 5943 -8.6912000000e-01 7.3606000000e-01 5944 -8.5521000000e-01 7.0254000000e-01 5945 -8.8165000000e-01 7.0731000000e-01 5946 -8.7659000000e-01 6.8061000000e-01 5947 -9.0115000000e-01 7.5806000000e-01 5948 -9.0113000000e-01 7.9390000000e-01 5949 1.5209000000e-01 9.5613000000e-01 5950 1.8702000000e-01 9.5250000000e-01 5951 2.0070000000e-01 9.1908000000e-01 5952 2.1386000000e-01 8.8583000000e-01 5953 2.2659000000e-01 8.5277000000e-01 5954 2.4890000000e-01 8.8008000000e-01 5955 2.6116000000e-01 8.4745000000e-01 5956 2.3940000000e-01 8.2017000000e-01 5957 2.0457000000e-01 8.2519000000e-01 5958 2.1750000000e-01 7.9267000000e-01 5959 2.5228000000e-01 7.8766000000e-01 5960 2.7424000000e-01 8.1528000000e-01 5961 2.8729000000e-01 7.8254000000e-01 5962 2.6493000000e-01 7.5502000000e-01 5963 2.3028000000e-01 7.6028000000e-01 5964 3.0988000000e-01 8.1090000000e-01 5965 3.2253000000e-01 7.7696000000e-01 5966 3.4595000000e-01 8.0452000000e-01 5967 2.9537000000e-01 8.4294000000e-01 5968 3.3386000000e-01 8.4314000000e-01 5969 3.7206000000e-01 8.2943000000e-01 5970 3.7998000000e-01 7.9587000000e-01 5971 3.5736000000e-01 7.7074000000e-01 5972 3.9101000000e-01 7.6515000000e-01 5973 3.6979000000e-01 7.3824000000e-01 5974 4.0503000000e-01 7.3392000000e-01 5975 4.2559000000e-01 7.6366000000e-01 5976 4.4185000000e-01 7.3007000000e-01 5977 4.1882000000e-01 7.0082000000e-01 5978 3.8301000000e-01 7.0551000000e-01 5979 3.4742000000e-01 7.1041000000e-01 5980 3.3483000000e-01 7.4364000000e-01 5981 3.1199000000e-01 7.1601000000e-01 5982 2.9979000000e-01 7.4940000000e-01 5983 2.7709000000e-01 7.2219000000e-01 5984 2.4279000000e-01 7.2805000000e-01 5985 2.5451000000e-01 6.9614000000e-01 5986 2.2133000000e-01 7.0165000000e-01 5987 2.0850000000e-01 7.3306000000e-01 5988 1.9564000000e-01 7.6522000000e-01 5989 1.7362000000e-01 7.3764000000e-01 5990 1.3979000000e-01 7.4395000000e-01 5991 1.1191000000e-01 7.5080000000e-01 5992 1.1548000000e-01 7.2276000000e-01 5993 1.4934000000e-01 7.0791000000e-01 5994 1.8726000000e-01 7.0560000000e-01 5995 1.6922000000e-01 6.7826000000e-01 5996 1.4239000000e-01 6.7745000000e-01 5997 1.5320000000e-01 6.5727000000e-01 5998 1.8160000000e-01 6.4627000000e-01 5999 1.7768000000e-01 6.1187000000e-01 6000 2.0329000000e-01 6.2390000000e-01 6001 2.0681000000e-01 5.9551000000e-01 6002 1.7672000000e-01 5.7850000000e-01 6003 1.4567000000e-01 5.6230000000e-01 6004 1.7549000000e-01 5.4391000000e-01 6005 2.0714000000e-01 5.6075000000e-01 6006 2.0532000000e-01 5.2550000000e-01 6007 1.7393000000e-01 5.0901000000e-01 6008 1.4408000000e-01 5.2751000000e-01 6009 1.1421000000e-01 5.4614000000e-01 6010 2.0375000000e-01 4.9059000000e-01 6011 1.7239000000e-01 4.7405000000e-01 6012 2.0233000000e-01 4.5557000000e-01 6013 1.7083000000e-01 4.3898000000e-01 6014 1.4092000000e-01 4.5763000000e-01 6015 1.4251000000e-01 4.9259000000e-01 6016 1.1105000000e-01 4.7626000000e-01 6017 1.1260000000e-01 5.1120000000e-01 6018 2.2466000000e-01 1.4046000000e+00 6019 -2.3636000000e-01 4.0313000000e-01 6020 -2.0701000000e-01 3.8301000000e-01 6021 -1.7438000000e-01 3.9629000000e-01 6022 -1.7948000000e-01 3.6333000000e-01 6023 -2.0951000000e-01 3.4878000000e-01 6024 -1.8093000000e-01 3.3087000000e-01 6025 -1.5245000000e-01 3.4625000000e-01 6026 -1.5280000000e-01 3.1462000000e-01 6027 -1.8092000000e-01 2.9747000000e-01 6028 -2.1047000000e-01 3.1459000000e-01 6029 -2.1032000000e-01 2.7994000000e-01 6030 -2.4079000000e-01 2.9753000000e-01 6031 -1.7999000000e-01 2.6311000000e-01 6032 -1.5110000000e-01 2.8150000000e-01 6033 -2.0944000000e-01 2.4475000000e-01 6034 -2.4037000000e-01 2.6201000000e-01 6035 -2.7132000000e-01 2.7992000000e-01 6036 -2.7188000000e-01 3.1575000000e-01 6037 -2.4041000000e-01 3.3278000000e-01 6038 -2.3880000000e-01 3.6794000000e-01 6039 -2.7107000000e-01 3.5191000000e-01 6040 -3.0603000000e-01 3.3441000000e-01 6041 -3.0088000000e-01 3.7260000000e-01 6042 -3.3262000000e-01 3.5953000000e-01 6043 -3.3717000000e-01 3.3192000000e-01 6044 -3.6184000000e-01 3.4535000000e-01 6045 -3.5840000000e-01 3.0899000000e-01 6046 -3.9145000000e-01 3.2889000000e-01 6047 -3.9099000000e-01 3.6352000000e-01 6048 -3.6044000000e-01 3.7909000000e-01 6049 -3.8966000000e-01 3.9845000000e-01 6050 -4.1956000000e-01 4.1801000000e-01 6051 -4.2139000000e-01 3.8195000000e-01 6052 -4.5162000000e-01 4.0160000000e-01 6053 -4.4952000000e-01 4.3754000000e-01 6054 -4.5536000000e-01 3.6274000000e-01 6055 -4.8315000000e-01 3.8753000000e-01 6056 -4.8074000000e-01 4.2168000000e-01 6057 -5.0963000000e-01 4.4045000000e-01 6058 -5.3806000000e-01 4.5851000000e-01 6059 -5.3750000000e-01 4.9209000000e-01 6060 -5.4007000000e-01 4.2505000000e-01 6061 -5.6773000000e-01 5.0909000000e-01 6062 -5.9800000000e-01 5.2715000000e-01 6063 -6.0063000000e-01 4.8825000000e-01 6064 -6.2549000000e-01 5.1297000000e-01 6065 -6.2875000000e-01 5.4424000000e-01 6066 -6.3013000000e-01 5.8067000000e-01 6067 -6.6057000000e-01 5.6080000000e-01 6068 -6.6001000000e-01 5.2067000000e-01 6069 -6.8765000000e-01 5.4420000000e-01 6070 -6.9379000000e-01 5.7679000000e-01 6071 -7.2409000000e-01 5.4844000000e-01 6072 -7.2844000000e-01 5.9139000000e-01 6073 -7.6069000000e-01 5.7130000000e-01 6074 -7.6206000000e-01 6.1212000000e-01 6075 -7.3111000000e-01 6.2204000000e-01 6076 -7.9264000000e-01 5.8969000000e-01 6077 -8.2416000000e-01 5.7366000000e-01 6078 -7.9394000000e-01 5.5360000000e-01 6079 -8.2687000000e-01 5.3733000000e-01 6080 -7.9637000000e-01 5.1703000000e-01 6081 -8.2866000000e-01 5.0072000000e-01 6082 -8.6030000000e-01 5.2057000000e-01 6083 -8.5787000000e-01 5.5840000000e-01 6084 -8.9607000000e-01 5.4186000000e-01 6085 -8.8711000000e-01 5.8214000000e-01 6086 -8.5279000000e-01 5.9484000000e-01 6087 -8.7933000000e-01 6.1690000000e-01 6088 -9.2154000000e-01 5.7177000000e-01 6089 -9.1514000000e-01 6.0911000000e-01 6090 -8.9920000000e-01 6.3633000000e-01 6091 -8.7444000000e-01 6.4918000000e-01 6092 -9.5009000000e-01 6.2111000000e-01 6093 -9.8753000000e-01 6.3056000000e-01 6094 -9.4324000000e-01 5.9205000000e-01 6095 -3.5916000000e-02 1.3383000000e+00 6096 -4.0302000000e-03 1.3263000000e+00 6097 -1.0643000000e-03 1.2975000000e+00 6098 2.8552000000e-02 1.3101000000e+00 6099 4.9867000000e-02 1.2832000000e+00 6100 8.4470000000e-02 1.2725000000e+00 6101 7.8183000000e-02 1.2381000000e+00 6102 1.1391000000e-01 1.2373000000e+00 6103 1.2653000000e-01 1.2776000000e+00 6104 1.5324000000e-01 1.2503000000e+00 6105 1.4653000000e-01 1.2182000000e+00 6106 1.6140000000e-01 1.1843000000e+00 6107 1.6235000000e-01 1.1422000000e+00 6108 1.9506000000e-01 1.1247000000e+00 6109 1.9356000000e-01 1.1609000000e+00 6110 2.2501000000e-01 1.1444000000e+00 6111 2.2739000000e-01 1.1083000000e+00 6112 2.2980000000e-01 1.0719000000e+00 6113 2.3245000000e-01 1.0358000000e+00 6114 2.0320000000e-01 1.0145000000e+00 6115 2.6190000000e-01 1.0560000000e+00 6116 2.6408000000e-01 1.0203000000e+00 6117 2.3569000000e-01 1.0012000000e+00 6118 2.6544000000e-01 9.8519000000e-01 6119 2.3908000000e-01 9.7184000000e-01 6120 2.0984000000e-01 9.7942000000e-01 6121 1.7145000000e-01 9.8934000000e-01 6122 2.9537000000e-01 1.0040000000e+00 6123 2.9656000000e-01 9.6759000000e-01 6124 3.2720000000e-01 9.8765000000e-01 6125 3.2964000000e-01 9.5169000000e-01 6126 3.5930000000e-01 9.7173000000e-01 6127 3.5704000000e-01 1.0074000000e+00 6128 3.8880000000e-01 9.9142000000e-01 6129 3.8662000000e-01 1.0269000000e+00 6130 3.5504000000e-01 1.0430000000e+00 6131 3.2528000000e-01 1.0235000000e+00 6132 3.2344000000e-01 1.0593000000e+00 6133 3.5325000000e-01 1.0786000000e+00 6134 3.8464000000e-01 1.0622000000e+00 6135 3.8287000000e-01 1.0975000000e+00 6136 4.1403000000e-01 1.0814000000e+00 6137 4.1604000000e-01 1.0462000000e+00 6138 4.4530000000e-01 1.0654000000e+00 6139 4.4748000000e-01 1.0303000000e+00 6140 4.7666000000e-01 1.0497000000e+00 6141 4.7898000000e-01 1.0146000000e+00 6142 5.0811000000e-01 1.0340000000e+00 6143 5.1054000000e-01 9.9887000000e-01 6144 4.8138000000e-01 9.7931000000e-01 6145 5.1306000000e-01 9.6358000000e-01 6146 4.8382000000e-01 9.4393000000e-01 6147 4.5214000000e-01 9.5980000000e-01 6148 4.4977000000e-01 9.9509000000e-01 6149 4.2050000000e-01 9.7560000000e-01 6150 4.1820000000e-01 1.0109000000e+00 6151 3.9120000000e-01 9.5601000000e-01 6152 3.6193000000e-01 9.3621000000e-01 6153 3.9379000000e-01 9.2072000000e-01 6154 3.6471000000e-01 9.0091000000e-01 6155 3.9655000000e-01 8.8560000000e-01 6156 3.6719000000e-01 8.6524000000e-01 6157 3.3585000000e-01 8.8149000000e-01 6158 3.3296000000e-01 9.1618000000e-01 6159 3.0573000000e-01 8.9601000000e-01 6160 2.9989000000e-01 9.3075000000e-01 6161 2.7259000000e-01 9.0678000000e-01 6162 2.8241000000e-01 8.7345000000e-01 6163 3.1065000000e-01 8.6741000000e-01 6164 2.3675000000e-01 9.1419000000e-01 6165 2.6184000000e-01 9.4622000000e-01 6166 2.2255000000e-01 9.4720000000e-01 6167 2.0149000000e-01 6.7514000000e-01 6168 2.3335000000e-01 6.7195000000e-01 6169 2.1611000000e-01 6.4717000000e-01 6170 2.3417000000e-01 6.1873000000e-01 6171 2.4181000000e-01 5.7942000000e-01 6172 2.3664000000e-01 5.4171000000e-01 6173 2.3490000000e-01 5.0712000000e-01 6174 2.6577000000e-01 5.2359000000e-01 6175 2.6426000000e-01 4.8907000000e-01 6176 2.9444000000e-01 5.0511000000e-01 6177 2.9318000000e-01 4.7187000000e-01 6178 2.6365000000e-01 4.5441000000e-01 6179 2.3357000000e-01 4.7232000000e-01 6180 2.3247000000e-01 4.3721000000e-01 6181 2.6317000000e-01 4.1892000000e-01 6182 2.3119000000e-01 4.0171000000e-01 6183 2.6177000000e-01 3.8295000000e-01 6184 2.2957000000e-01 3.6596000000e-01 6185 1.9925000000e-01 3.8487000000e-01 6186 2.0088000000e-01 4.2035000000e-01 6187 1.6914000000e-01 4.0376000000e-01 6188 1.6724000000e-01 3.6832000000e-01 6189 1.3733000000e-01 3.8747000000e-01 6190 1.3924000000e-01 4.2260000000e-01 6191 1.0946000000e-01 4.4135000000e-01 6192 1.0770000000e-01 4.0647000000e-01 6193 7.8158000000e-02 4.2521000000e-01 6194 7.9646000000e-02 4.5998000000e-01 6195 8.1092000000e-02 4.9490000000e-01 6196 4.9625000000e-02 4.7856000000e-01 6197 5.0971000000e-02 5.1362000000e-01 6198 8.2611000000e-02 5.2991000000e-01 6199 8.4263000000e-02 5.6497000000e-01 6200 1.9300000000e-02 4.9722000000e-01 6201 1.8261000000e-02 4.6202000000e-01 6202 -1.2455000000e-02 4.8054000000e-01 6203 4.8425000000e-02 4.4367000000e-01 6204 1.7560000000e-02 4.2717000000e-01 6205 -1.2949000000e-02 4.4503000000e-01 6206 -4.4394000000e-02 4.6326000000e-01 6207 -4.3975000000e-02 4.2716000000e-01 6208 -7.6467000000e-02 4.4490000000e-01 6209 -7.6884000000e-02 4.8233000000e-01 6210 -7.4635000000e-02 4.0841000000e-01 6211 -4.2715000000e-02 3.9126000000e-01 6212 -7.5839000000e-02 3.6814000000e-01 6213 -1.0273000000e-01 3.9376000000e-01 6214 -1.0615000000e-01 4.2516000000e-01 6215 -1.3668000000e-01 4.0360000000e-01 6216 -1.3361000000e-01 4.3716000000e-01 6217 -1.1281000000e-01 4.6304000000e-01 6218 -7.5036000000e-02 5.1970000000e-01 6219 -4.2006000000e-02 5.3564000000e-01 6220 -4.3678000000e-02 4.9960000000e-01 6221 -1.1308000000e-02 5.1617000000e-01 6222 -1.5267000000e-01 3.7460000000e-01 6223 -1.2040000000e-01 3.6344000000e-01 6224 -9.3970000000e-02 3.2706000000e-01 6225 -1.2851000000e-01 3.3049000000e-01 6226 -1.2297000000e-01 3.0097000000e-01 6227 -1.2046000000e-01 2.6589000000e-01 6228 -9.1091000000e-02 2.8609000000e-01 6229 -8.9350000000e-02 2.4957000000e-01 6230 -5.9713000000e-02 2.6852000000e-01 6231 -6.0170000000e-02 3.0436000000e-01 6232 -3.0359000000e-02 2.8620000000e-01 6233 -2.9120000000e-02 2.5191000000e-01 6234 -5.8274000000e-02 2.3286000000e-01 6235 -2.7049000000e-02 2.1657000000e-01 6236 -5.6638000000e-02 1.9687000000e-01 6237 -8.7850000000e-02 2.1359000000e-01 6238 -1.1880000000e-01 2.3032000000e-01 6239 -1.4952000000e-01 2.4676000000e-01 6240 -1.4813000000e-01 2.1147000000e-01 6241 -1.1754000000e-01 1.9450000000e-01 6242 -1.4709000000e-01 1.7608000000e-01 6243 -1.7723000000e-01 1.9295000000e-01 6244 -1.7585000000e-01 1.5849000000e-01 6245 -2.0572000000e-01 1.7414000000e-01 6246 -2.0796000000e-01 2.0925000000e-01 6247 -1.7870000000e-01 2.2808000000e-01 6248 -2.3938000000e-01 2.2597000000e-01 6249 -2.7104000000e-01 2.4375000000e-01 6250 -2.7016000000e-01 2.0644000000e-01 6251 -2.3736000000e-01 1.8947000000e-01 6252 -2.6782000000e-01 1.6730000000e-01 6253 -2.3317000000e-01 1.5354000000e-01 6254 -3.0262000000e-01 1.8659000000e-01 6255 -3.0281000000e-01 2.2541000000e-01 6256 -3.3578000000e-01 2.0720000000e-01 6257 -3.3542000000e-01 1.6972000000e-01 6258 -3.6630000000e-01 1.8813000000e-01 6259 -3.7251000000e-01 2.2744000000e-01 6260 -3.3506000000e-01 2.4578000000e-01 6261 -3.6546000000e-01 2.6930000000e-01 6262 -3.3163000000e-01 2.8262000000e-01 6263 -3.0225000000e-01 2.6257000000e-01 6264 -3.0168000000e-01 2.9777000000e-01 6265 -3.2698000000e-01 3.1117000000e-01 6266 -3.9428000000e-01 2.9349000000e-01 6267 -4.0093000000e-01 2.5736000000e-01 6268 -4.2742000000e-01 2.8171000000e-01 6269 -4.2208000000e-01 3.1458000000e-01 6270 -4.5255000000e-01 3.0423000000e-01 6271 -4.5967000000e-01 2.7209000000e-01 6272 -4.3503000000e-01 2.4843000000e-01 6273 -4.1095000000e-01 2.2370000000e-01 6274 -4.4362000000e-01 2.1599000000e-01 6275 -4.6761000000e-01 2.3961000000e-01 6276 -4.9196000000e-01 2.6322000000e-01 6277 -4.8352000000e-01 2.9527000000e-01 6278 -4.7700000000e-01 3.2990000000e-01 6279 -4.4562000000e-01 3.3176000000e-01 6280 -4.2115000000e-01 3.4726000000e-01 6281 -4.8754000000e-01 3.5908000000e-01 6282 -5.0987000000e-01 3.4168000000e-01 6283 -5.1234000000e-01 3.7350000000e-01 6284 -5.1126000000e-01 4.0649000000e-01 6285 -5.4160000000e-01 3.9064000000e-01 6286 -5.7359000000e-01 4.1026000000e-01 6287 -5.6626000000e-01 4.4387000000e-01 6288 -5.6645000000e-01 4.7508000000e-01 6289 -5.8848000000e-01 4.5863000000e-01 6290 -5.9086000000e-01 4.3564000000e-01 6291 -6.1818000000e-01 4.5029000000e-01 6292 -6.4003000000e-01 4.8454000000e-01 6293 -6.7774000000e-01 4.8366000000e-01 6294 -6.9980000000e-01 5.1431000000e-01 6295 -7.1400000000e-01 4.8035000000e-01 6296 -7.3533000000e-01 5.0854000000e-01 6297 -7.6298000000e-01 5.3261000000e-01 6298 -7.6749000000e-01 4.9676000000e-01 6299 -7.4363000000e-01 4.7881000000e-01 6300 -7.6836000000e-01 4.6239000000e-01 6301 -7.9833000000e-01 4.8120000000e-01 6302 -8.2974000000e-01 4.6470000000e-01 6303 -7.9945000000e-01 4.4564000000e-01 6304 -8.3073000000e-01 4.2932000000e-01 6305 -8.0126000000e-01 4.1036000000e-01 6306 -8.3178000000e-01 3.9493000000e-01 6307 -8.6136000000e-01 4.1258000000e-01 6308 -8.6088000000e-01 4.4777000000e-01 6309 -8.9185000000e-01 4.3062000000e-01 6310 -8.9124000000e-01 4.6591000000e-01 6311 -9.2197000000e-01 4.4934000000e-01 6312 -9.2042000000e-01 4.8258000000e-01 6313 -8.9197000000e-01 5.0161000000e-01 6314 -8.6045000000e-01 4.8354000000e-01 6315 -9.2345000000e-01 5.1519000000e-01 6316 -9.4862000000e-01 4.9563000000e-01 6317 -9.5334000000e-01 5.2606000000e-01 6318 -9.3035000000e-01 5.4338000000e-01 6319 -9.7237000000e-01 5.0654000000e-01 6320 -9.7687000000e-01 4.7562000000e-01 6321 -9.4538000000e-01 4.6781000000e-01 6322 -9.5910000000e-01 4.3586000000e-01 6323 -7.6832000000e-01 4.2590000000e-01 6324 -7.3301000000e-01 4.4606000000e-01 6325 -6.9450000000e-01 4.5076000000e-01 6326 -6.5811000000e-01 4.5136000000e-01 6327 -6.4138000000e-01 4.1845000000e-01 6328 -6.0774000000e-01 4.1514000000e-01 6329 -6.2550000000e-01 3.8773000000e-01 6330 -6.6193000000e-01 3.8569000000e-01 6331 -6.7681000000e-01 4.2051000000e-01 6332 -6.9759000000e-01 3.9420000000e-01 6333 -6.8809000000e-01 3.6682000000e-01 6334 -7.1645000000e-01 3.6796000000e-01 6335 -7.3491000000e-01 4.0162000000e-01 6336 -7.0736000000e-01 4.2262000000e-01 6337 -7.7300000000e-01 3.8935000000e-01 6338 -8.0434000000e-01 3.7705000000e-01 6339 -7.8053000000e-01 3.5594000000e-01 6340 -8.0754000000e-01 3.4944000000e-01 6341 -8.3200000000e-01 3.6233000000e-01 6342 -8.6109000000e-01 3.7795000000e-01 6343 -8.9188000000e-01 3.9487000000e-01 6344 -8.9047000000e-01 3.5910000000e-01 6345 -9.2270000000e-01 3.7571000000e-01 6346 -9.2389000000e-01 4.1327000000e-01 6347 -9.5593000000e-01 3.9324000000e-01 6348 -9.9029000000e-01 4.0800000000e-01 6349 -9.8608000000e-01 3.7143000000e-01 6350 -1.0179000000e+00 3.8514000000e-01 6351 -1.0142000000e+00 3.5190000000e-01 6352 -1.0437000000e+00 3.6398000000e-01 6353 -1.0498000000e+00 3.9698000000e-01 6354 -1.0793000000e+00 3.7241000000e-01 6355 -1.0638000000e+00 3.4032000000e-01 6356 -1.0905000000e+00 3.4255000000e-01 6357 -1.0828000000e+00 3.1482000000e-01 6358 -1.1134000000e+00 3.2640000000e-01 6359 -1.0233000000e+00 4.1853000000e-01 6360 -9.9948000000e-01 4.4377000000e-01 6361 -1.0294000000e+00 4.4679000000e-01 6362 2.5996000000e-01 3.4699000000e-01 6363 2.2781000000e-01 3.3006000000e-01 6364 2.5827000000e-01 3.1102000000e-01 6365 2.2609000000e-01 2.9400000000e-01 6366 1.9555000000e-01 3.1319000000e-01 6367 1.9743000000e-01 3.4916000000e-01 6368 1.6514000000e-01 3.3257000000e-01 6369 1.3507000000e-01 3.5211000000e-01 6370 1.3245000000e-01 3.1624000000e-01 6371 1.0268000000e-01 3.3645000000e-01 6372 1.0554000000e-01 3.7159000000e-01 6373 7.6402000000e-02 3.9067000000e-01 6374 7.3991000000e-02 3.5636000000e-01 6375 7.0222000000e-02 3.2214000000e-01 6376 4.3313000000e-02 3.4207000000e-01 6377 4.1857000000e-02 3.1318000000e-01 6378 1.1872000000e-02 3.2532000000e-01 6379 1.6143000000e-02 3.6012000000e-01 6380 4.5706000000e-02 3.7524000000e-01 6381 1.7069000000e-02 3.9307000000e-01 6382 4.7233000000e-02 4.0917000000e-01 6383 -6.5753000000e-03 1.3645000000e+00 6384 2.0010000000e-02 1.3423000000e+00 6385 1.8771000000e-01 1.2617000000e+00 6386 1.8245000000e-01 1.2226000000e+00 6387 1.9533000000e-01 1.1913000000e+00 6388 2.2216000000e-01 1.1786000000e+00 6389 2.5442000000e-01 1.1655000000e+00 6390 2.5742000000e-01 1.1287000000e+00 6391 2.8813000000e-01 1.1497000000e+00 6392 2.8986000000e-01 1.1122000000e+00 6393 2.5968000000e-01 1.0921000000e+00 6394 3.2048000000e-01 1.1315000000e+00 6395 3.2040000000e-01 1.1683000000e+00 6396 3.5098000000e-01 1.1494000000e+00 6397 3.5179000000e-01 1.1141000000e+00 6398 3.2176000000e-01 1.0952000000e+00 6399 3.8141000000e-01 1.1325000000e+00 6400 4.1216000000e-01 1.1163000000e+00 6401 4.4319000000e-01 1.1004000000e+00 6402 4.7441000000e-01 1.0847000000e+00 6403 5.0575000000e-01 1.0691000000e+00 6404 5.3716000000e-01 1.0535000000e+00 6405 5.3960000000e-01 1.0184000000e+00 6406 5.6860000000e-01 1.0380000000e+00 6407 5.6617000000e-01 1.0730000000e+00 6408 5.3477000000e-01 1.0885000000e+00 6409 5.6377000000e-01 1.1079000000e+00 6410 5.0343000000e-01 1.1040000000e+00 6411 5.3239000000e-01 1.1234000000e+00 6412 5.6137000000e-01 1.1428000000e+00 6413 5.9278000000e-01 1.1274000000e+00 6414 5.9039000000e-01 1.1623000000e+00 6415 6.2183000000e-01 1.1469000000e+00 6416 6.1947000000e-01 1.1819000000e+00 6417 6.5093000000e-01 1.1664000000e+00 6418 6.5325000000e-01 1.1314000000e+00 6419 6.8234000000e-01 1.1509000000e+00 6420 6.8465000000e-01 1.1159000000e+00 6421 7.1372000000e-01 1.1354000000e+00 6422 7.1602000000e-01 1.1005000000e+00 6423 6.8698000000e-01 1.0810000000e+00 6424 6.5560000000e-01 1.0964000000e+00 6425 6.5796000000e-01 1.0615000000e+00 6426 6.2657000000e-01 1.0770000000e+00 6427 6.2420000000e-01 1.1119000000e+00 6428 5.9517000000e-01 1.0924000000e+00 6429 5.9758000000e-01 1.0575000000e+00 6430 6.2898000000e-01 1.0420000000e+00 6431 6.0004000000e-01 1.0225000000e+00 6432 6.3143000000e-01 1.0071000000e+00 6433 6.0258000000e-01 9.8757000000e-01 6434 5.7111000000e-01 1.0030000000e+00 6435 5.7375000000e-01 9.6790000000e-01 6436 5.4214000000e-01 9.8330000000e-01 6437 5.4485000000e-01 9.4803000000e-01 6438 5.1570000000e-01 9.2800000000e-01 6439 4.8616000000e-01 9.0832000000e-01 6440 4.5452000000e-01 9.2452000000e-01 6441 4.2292000000e-01 9.4032000000e-01 6442 4.2542000000e-01 9.0522000000e-01 6443 4.5668000000e-01 8.8948000000e-01 6444 4.2807000000e-01 8.7063000000e-01 6445 4.0012000000e-01 8.5080000000e-01 6446 4.3158000000e-01 8.3690000000e-01 6447 4.0523000000e-01 8.1695000000e-01 6448 4.0824000000e-01 7.8838000000e-01 6449 4.3934000000e-01 8.0021000000e-01 6450 4.6797000000e-01 7.6411000000e-01 6451 4.7812000000e-01 8.0438000000e-01 6452 4.5861000000e-01 8.2701000000e-01 6453 4.5810000000e-01 8.5571000000e-01 6454 -5.8915000000e-02 3.3582000000e-01 6455 -2.7065000000e-02 3.2236000000e-01 6456 -3.7606000000e-02 3.5711000000e-01 6457 -9.6284000000e-03 3.4833000000e-01 6458 -1.1567000000e-02 3.7666000000e-01 6459 -1.2750000000e-02 4.1006000000e-01 6460 -4.7532000000e-03 2.9929000000e-01 6461 -1.4232000000e-03 2.7066000000e-01 6462 2.0144000000e-03 2.3654000000e-01 6463 4.8060000000e-03 2.0049000000e-01 6464 3.4336000000e-02 2.2145000000e-01 6465 3.0463000000e-02 2.5805000000e-01 6466 6.3972000000e-02 2.4324000000e-01 6467 6.0677000000e-02 2.8449000000e-01 6468 6.6084000000e-02 2.0733000000e-01 6469 3.8618000000e-02 1.8293000000e-01 6470 6.0108000000e-03 1.6469000000e-01 6471 -2.5153000000e-02 1.8063000000e-01 6472 -2.3115000000e-02 1.4486000000e-01 6473 -5.4987000000e-02 1.6016000000e-01 6474 -5.2822000000e-02 1.2089000000e-01 6475 -8.5669000000e-02 1.4031000000e-01 6476 -8.6578000000e-02 1.7727000000e-01 6477 -1.1685000000e-01 1.5808000000e-01 6478 -1.1727000000e-01 1.1930000000e-01 6479 -1.4699000000e-01 1.4088000000e-01 6480 -1.4964000000e-01 1.0747000000e-01 6481 -1.7532000000e-01 1.2572000000e-01 6482 -2.0279000000e-01 1.4103000000e-01 6483 -2.2551000000e-01 1.2482000000e-01 6484 -2.5988000000e-01 1.2435000000e-01 6485 -3.0377000000e-01 1.4333000000e-01 6486 -2.0121000000e-01 1.0933000000e-01 6487 -1.7550000000e-01 9.7010000000e-02 6488 -1.9759000000e-01 7.1560000000e-02 6489 -2.3056000000e-01 9.5759000000e-02 6490 -2.6345000000e-01 8.3373000000e-02 6491 -2.9489000000e-01 1.0220000000e-01 6492 -3.2739000000e-01 1.1319000000e-01 6493 -3.3844000000e-01 1.3982000000e-01 6494 -3.6567000000e-01 1.5314000000e-01 6495 -3.9536000000e-01 1.7071000000e-01 6496 -3.9312000000e-01 2.0050000000e-01 6497 -4.2053000000e-01 1.9241000000e-01 6498 -4.2805000000e-01 1.5933000000e-01 6499 -3.9855000000e-01 1.3069000000e-01 6500 -4.5215000000e-01 1.8418000000e-01 6501 -4.7550000000e-01 2.0754000000e-01 6502 -4.9995000000e-01 2.3036000000e-01 6503 -5.2565000000e-01 2.5427000000e-01 6504 -5.1537000000e-01 2.8768000000e-01 6505 -5.0457000000e-01 3.1443000000e-01 6506 -5.3713000000e-01 3.1756000000e-01 6507 -5.4062000000e-01 3.5553000000e-01 6508 -5.7166000000e-01 3.7299000000e-01 6509 -5.7114000000e-01 3.3679000000e-01 6510 -6.0609000000e-01 3.5624000000e-01 6511 -5.9692000000e-01 3.8847000000e-01 6512 -5.4941000000e-01 2.8129000000e-01 6513 -5.6895000000e-01 3.0553000000e-01 6514 -6.0241000000e-01 3.1287000000e-01 6515 -6.3604000000e-01 3.3242000000e-01 6516 -6.3660000000e-01 2.9813000000e-01 6517 -6.6699000000e-01 3.1513000000e-01 6518 -6.6521000000e-01 3.4981000000e-01 6519 -6.3895000000e-01 3.6237000000e-01 6520 -6.9928000000e-01 3.3645000000e-01 6521 -6.9858000000e-01 2.9759000000e-01 6522 -6.6625000000e-01 2.7640000000e-01 6523 -6.9852000000e-01 2.6701000000e-01 6524 -7.3096000000e-01 2.7616000000e-01 6525 -7.2949000000e-01 3.1441000000e-01 6526 -7.6091000000e-01 2.9950000000e-01 6527 -7.5706000000e-01 3.3330000000e-01 6528 -7.3019000000e-01 3.4347000000e-01 6529 -7.4868000000e-01 3.6527000000e-01 6530 -7.9262000000e-01 3.2124000000e-01 6531 -7.9124000000e-01 2.8261000000e-01 6532 -7.6410000000e-01 2.6932000000e-01 6533 -8.1937000000e-01 2.6307000000e-01 6534 -8.2290000000e-01 2.9723000000e-01 6535 -8.5072000000e-01 2.7586000000e-01 6536 -8.4574000000e-01 2.4262000000e-01 6537 -8.7788000000e-01 2.5389000000e-01 6538 -8.7290000000e-01 2.1636000000e-01 6539 -9.0437000000e-01 2.3398000000e-01 6540 -9.1041000000e-01 2.6608000000e-01 6541 -8.8316000000e-01 2.8843000000e-01 6542 -9.1710000000e-01 3.0127000000e-01 6543 -8.8760000000e-01 3.2355000000e-01 6544 -8.5528000000e-01 3.0994000000e-01 6545 -8.2823000000e-01 3.3068000000e-01 6546 -8.5910000000e-01 3.4392000000e-01 6547 -9.2053000000e-01 3.3861000000e-01 6548 -9.5178000000e-01 3.1688000000e-01 6549 -9.5358000000e-01 3.5517000000e-01 6550 -9.8455000000e-01 3.3515000000e-01 6551 -9.8575000000e-01 2.9698000000e-01 6552 -1.0159000000e+00 3.1854000000e-01 6553 -1.0374000000e+00 3.3716000000e-01 6554 -1.0491000000e+00 3.1103000000e-01 6555 -1.0706000000e+00 2.7634000000e-01 6556 -1.2024000000e+00 3.0653000000e-01 6557 -1.2332000000e+00 3.2370000000e-01 6558 6.4863000000e-01 1.2014000000e+00 6559 6.1710000000e-01 1.2169000000e+00 6560 6.4635000000e-01 1.2365000000e+00 6561 6.1472000000e-01 1.2521000000e+00 6562 6.4409000000e-01 1.2718000000e+00 6563 6.7568000000e-01 1.2561000000e+00 6564 6.7785000000e-01 1.2209000000e+00 6565 6.8008000000e-01 1.1859000000e+00 6566 7.0925000000e-01 1.2053000000e+00 6567 7.0711000000e-01 1.2404000000e+00 6568 7.3844000000e-01 1.2247000000e+00 6569 7.4058000000e-01 1.1898000000e+00 6570 7.6969000000e-01 1.2092000000e+00 6571 7.7187000000e-01 1.1743000000e+00 6572 7.4280000000e-01 1.1549000000e+00 6573 7.1146000000e-01 1.1704000000e+00 6574 7.4508000000e-01 1.1200000000e+00 6575 7.7413000000e-01 1.1395000000e+00 6576 7.7645000000e-01 1.1046000000e+00 6577 7.4740000000e-01 1.0851000000e+00 6578 7.7880000000e-01 1.0697000000e+00 6579 7.4974000000e-01 1.0502000000e+00 6580 7.1836000000e-01 1.0656000000e+00 6581 6.8933000000e-01 1.0461000000e+00 6582 7.2070000000e-01 1.0306000000e+00 6583 6.9170000000e-01 1.0112000000e+00 6584 6.6036000000e-01 1.0266000000e+00 6585 6.6277000000e-01 9.9171000000e-01 6586 6.3394000000e-01 9.7224000000e-01 6587 6.6517000000e-01 9.5688000000e-01 6588 6.3649000000e-01 9.3751000000e-01 6589 6.0524000000e-01 9.5268000000e-01 6590 5.7662000000e-01 9.3284000000e-01 6591 5.4787000000e-01 9.1251000000e-01 6592 5.1846000000e-01 8.9156000000e-01 6593 5.5168000000e-01 8.7666000000e-01 6594 5.2158000000e-01 8.5144000000e-01 6595 4.8781000000e-01 8.7239000000e-01 6596 4.8587000000e-01 8.3777000000e-01 6597 5.1101000000e-01 8.1563000000e-01 6598 5.0585000000e-01 7.8146000000e-01 6599 5.3644000000e-01 7.9542000000e-01 6600 5.3815000000e-01 8.2323000000e-01 6601 5.6362000000e-01 8.1087000000e-01 6602 5.6447000000e-01 7.7838000000e-01 6603 5.9532000000e-01 7.9498000000e-01 6604 5.8956000000e-01 7.6458000000e-01 6605 5.6629000000e-01 7.4147000000e-01 6606 5.3550000000e-01 7.6287000000e-01 6607 5.0601000000e-01 7.4626000000e-01 6608 4.7897000000e-01 7.2260000000e-01 6609 4.5461000000e-01 6.9523000000e-01 6610 4.8948000000e-01 6.8758000000e-01 6611 4.6644000000e-01 6.6255000000e-01 6612 4.3195000000e-01 6.6763000000e-01 6613 3.9637000000e-01 6.7244000000e-01 6614 3.6054000000e-01 6.7716000000e-01 6615 3.7392000000e-01 6.4401000000e-01 6616 4.0987000000e-01 6.3944000000e-01 6617 3.8753000000e-01 6.1067000000e-01 6618 4.2387000000e-01 6.0662000000e-01 6619 4.4542000000e-01 6.3519000000e-01 6620 4.8053000000e-01 6.3177000000e-01 6621 4.5968000000e-01 6.0303000000e-01 6622 4.3844000000e-01 5.7395000000e-01 6623 4.7411000000e-01 5.7062000000e-01 6624 4.5317000000e-01 5.4142000000e-01 6625 4.8852000000e-01 5.3812000000e-01 6626 4.9552000000e-01 5.9995000000e-01 6627 5.0912000000e-01 5.6714000000e-01 6628 5.2334000000e-01 5.3530000000e-01 6629 5.4296000000e-01 5.6375000000e-01 6630 5.5739000000e-01 5.3324000000e-01 6631 5.3846000000e-01 5.0392000000e-01 6632 5.0342000000e-01 5.0551000000e-01 6633 4.6778000000e-01 5.0865000000e-01 6634 4.3248000000e-01 5.1252000000e-01 6635 4.1751000000e-01 5.4459000000e-01 6636 4.0215000000e-01 5.7732000000e-01 6637 3.6429000000e-01 5.8092000000e-01 6638 3.5092000000e-01 6.1561000000e-01 6639 3.3814000000e-01 6.4865000000e-01 6640 3.2426000000e-01 6.8186000000e-01 6641 2.8847000000e-01 6.8852000000e-01 6642 2.9891000000e-01 6.5037000000e-01 6643 2.6394000000e-01 6.6453000000e-01 6644 2.9028000000e-01 3.2808000000e-01 6645 2.9204000000e-01 3.6389000000e-01 6646 3.2173000000e-01 3.4508000000e-01 6647 3.2083000000e-01 3.0946000000e-01 6648 2.8885000000e-01 2.9203000000e-01 6649 2.5663000000e-01 2.7492000000e-01 6650 2.8713000000e-01 2.5583000000e-01 6651 2.5498000000e-01 2.3880000000e-01 6652 3.1998000000e-01 2.7285000000e-01 6653 3.1733000000e-01 2.3631000000e-01 6654 3.5193000000e-01 2.9129000000e-01 6655 3.5223000000e-01 3.2736000000e-01 6656 3.8107000000e-01 3.4719000000e-01 6657 4.1186000000e-01 3.3699000000e-01 6658 4.0700000000e-01 3.6774000000e-01 6659 4.4177000000e-01 3.3338000000e-01 6660 4.5554000000e-01 3.0704000000e-01 6661 4.7289000000e-01 2.8129000000e-01 6662 4.8276000000e-01 3.0742000000e-01 6663 4.7189000000e-01 3.3292000000e-01 6664 4.5662000000e-01 3.5912000000e-01 6665 4.9073000000e-01 3.6333000000e-01 6666 5.0392000000e-01 3.2722000000e-01 6667 4.3088000000e-01 3.5656000000e-01 6668 4.3713000000e-01 3.8556000000e-01 6669 4.0356000000e-01 4.0015000000e-01 6670 4.3069000000e-01 4.2171000000e-01 6671 4.6381000000e-01 4.1063000000e-01 6672 4.6731000000e-01 3.8293000000e-01 6673 4.8824000000e-01 3.9596000000e-01 6674 5.3942000000e-01 3.1687000000e-01 6675 5.7727000000e-01 3.0585000000e-01 6676 5.8266000000e-01 2.6820000000e-01 6677 6.1452000000e-01 2.5291000000e-01 6678 6.1810000000e-01 2.2245000000e-01 6679 6.4423000000e-01 2.3702000000e-01 6680 6.4187000000e-01 2.0378000000e-01 6681 6.4456000000e-01 2.7088000000e-01 6682 6.7333000000e-01 2.5320000000e-01 6683 6.7301000000e-01 2.1897000000e-01 6684 7.0083000000e-01 1.9901000000e-01 6685 6.7027000000e-01 1.8475000000e-01 6686 6.3984000000e-01 1.6968000000e-01 6687 6.6816000000e-01 1.5192000000e-01 6688 6.4097000000e-01 1.3632000000e-01 6689 6.1199000000e-01 1.5147000000e-01 6690 6.1458000000e-01 1.1953000000e-01 6691 5.9062000000e-01 1.3322000000e-01 6692 6.9795000000e-01 1.6517000000e-01 6693 7.2857000000e-01 1.7957000000e-01 6694 7.2770000000e-01 2.0952000000e-01 6695 7.2603000000e-01 1.4426000000e-01 6696 6.9385000000e-01 1.3155000000e-01 6697 7.2223000000e-01 1.0424000000e-01 6698 6.8260000000e-01 9.9613000000e-02 6699 6.6614000000e-01 1.2412000000e-01 6700 6.4516000000e-01 1.0122000000e-01 6701 6.6592000000e-01 6.8571000000e-02 6702 6.1462000000e-01 9.2191000000e-02 6703 7.0230000000e-01 6.8017000000e-02 6704 7.5084000000e-01 1.2545000000e-01 6705 -1.0244000000e+00 2.7901000000e-01 6706 -1.0443000000e+00 2.4624000000e-01 6707 -9.8875000000e-01 2.5825000000e-01 6708 -9.4918000000e-01 2.7407000000e-01 6709 -9.5968000000e-01 2.3414000000e-01 6710 -9.9717000000e-01 2.1959000000e-01 6711 -9.6173000000e-01 1.9209000000e-01 6712 -1.0008000000e+00 1.8158000000e-01 6713 -9.2234000000e-01 1.8430000000e-01 6714 -9.0375000000e-01 2.0667000000e-01 6715 -8.3550000000e-01 2.1170000000e-01 6716 -8.1810000000e-01 2.3482000000e-01 6717 -8.1957000000e-01 1.8204000000e-01 6718 -9.3045000000e-01 2.1601000000e-01 6719 -9.3082000000e-01 2.4486000000e-01 6720 6.9405000000e-01 9.7626000000e-01 6721 6.9633000000e-01 9.4138000000e-01 6722 7.2534000000e-01 9.6075000000e-01 6723 7.2754000000e-01 9.2573000000e-01 6724 7.5670000000e-01 9.4521000000e-01 6725 7.5892000000e-01 9.1004000000e-01 6726 7.2955000000e-01 8.9052000000e-01 6727 6.9841000000e-01 9.0649000000e-01 6728 6.6749000000e-01 9.2218000000e-01 6729 6.3905000000e-01 9.0310000000e-01 6730 6.0809000000e-01 9.1798000000e-01 6731 5.7994000000e-01 8.9793000000e-01 6732 5.8415000000e-01 8.6371000000e-01 6733 5.5806000000e-01 8.4273000000e-01 6734 5.8920000000e-01 8.3040000000e-01 6735 6.1924000000e-01 8.1936000000e-01 6736 6.2854000000e-01 7.9111000000e-01 6737 6.1250000000e-01 7.7006000000e-01 6738 6.0915000000e-01 7.3793000000e-01 6739 5.8370000000e-01 7.0445000000e-01 6740 6.3986000000e-01 7.6166000000e-01 6741 6.4958000000e-01 7.2633000000e-01 6742 6.2241000000e-01 6.9687000000e-01 6743 5.9470000000e-01 6.6297000000e-01 6744 5.6180000000e-01 6.7958000000e-01 6745 5.4767000000e-01 7.0783000000e-01 6746 5.2646000000e-01 6.7497000000e-01 6747 5.1377000000e-01 7.1225000000e-01 6748 5.3387000000e-01 7.3415000000e-01 6749 4.9651000000e-01 6.5780000000e-01 6750 5.1946000000e-01 6.3201000000e-01 6751 5.3004000000e-01 5.9503000000e-01 6752 5.5063000000e-01 6.1684000000e-01 6753 5.6236000000e-01 5.9037000000e-01 6754 5.8476000000e-01 6.1913000000e-01 6755 5.9028000000e-01 5.8604000000e-01 6756 5.7529000000e-01 5.6134000000e-01 6757 5.9115000000e-01 5.3235000000e-01 6758 5.7293000000e-01 5.0274000000e-01 6759 6.0735000000e-01 5.6221000000e-01 6760 6.2545000000e-01 5.3292000000e-01 6761 6.0829000000e-01 5.0161000000e-01 6762 5.8816000000e-01 4.7153000000e-01 6763 6.2409000000e-01 4.6864000000e-01 6764 5.6735000000e-01 4.4341000000e-01 6765 5.3707000000e-01 4.4798000000e-01 6766 5.5394000000e-01 4.7375000000e-01 6767 5.1952000000e-01 4.7289000000e-01 6768 4.8274000000e-01 4.7413000000e-01 6769 4.4620000000e-01 4.8012000000e-01 6770 4.1249000000e-01 4.8507000000e-01 6771 3.9758000000e-01 5.1519000000e-01 6772 4.2351000000e-01 4.5469000000e-01 6773 4.5806000000e-01 4.4555000000e-01 6774 3.9801000000e-01 4.3363000000e-01 6775 3.7100000000e-01 4.1226000000e-01 6776 3.6376000000e-01 4.5088000000e-01 6777 3.9548000000e-01 4.6202000000e-01 6778 3.7955000000e-01 4.8579000000e-01 6779 3.6225000000e-01 5.1604000000e-01 6780 3.4566000000e-01 4.8546000000e-01 6781 3.2691000000e-01 5.1443000000e-01 6782 3.1695000000e-01 4.8707000000e-01 6783 3.4258000000e-01 5.4828000000e-01 6784 2.9947000000e-01 5.4462000000e-01 6785 3.2135000000e-01 5.8654000000e-01 6786 2.8030000000e-01 5.8041000000e-01 6787 2.9154000000e-01 6.1304000000e-01 6788 2.6481000000e-01 5.5395000000e-01 6789 2.6271000000e-01 6.0494000000e-01 6790 5.0133000000e-01 4.3199000000e-01 6791 3.0319000000e+00 1.3718000000e+00 6792 3.0320000000e+00 1.4075000000e+00 6793 3.0014000000e+00 1.4273000000e+00 6794 2.9717000000e+00 1.4472000000e+00 6795 2.9441000000e+00 1.4676000000e+00 6796 2.9125000000e+00 1.4576000000e+00 6797 2.8780000000e+00 1.4474000000e+00 6798 2.8419000000e+00 1.4377000000e+00 6799 2.8054000000e+00 1.4287000000e+00 6800 2.7695000000e+00 1.4199000000e+00 6801 2.7350000000e+00 1.4105000000e+00 6802 2.7069000000e+00 1.4351000000e+00 6803 2.6770000000e+00 1.4250000000e+00 6804 2.6467000000e+00 1.4182000000e+00 6805 2.6158000000e+00 1.4131000000e+00 6806 2.5839000000e+00 1.4101000000e+00 6807 2.5498000000e+00 1.4086000000e+00 6808 2.5132000000e+00 1.4076000000e+00 6809 2.4936000000e+00 1.4403000000e+00 6810 2.4769000000e+00 1.4671000000e+00 6811 2.4602000000e+00 1.4433000000e+00 6812 2.4421000000e+00 1.4233000000e+00 6813 2.4140000000e+00 1.4218000000e+00 6814 2.3784000000e+00 1.4217000000e+00 6815 2.3508000000e+00 1.4070000000e+00 6816 2.3179000000e+00 1.4083000000e+00 6817 2.2890000000e+00 1.3935000000e+00 6818 2.2578000000e+00 1.3949000000e+00 6819 2.2394000000e+00 1.4268000000e+00 6820 2.2088000000e+00 1.4290000000e+00 6821 2.1820000000e+00 1.4158000000e+00 6822 2.1463000000e+00 1.4405000000e+00 6823 2.1109000000e+00 1.4462000000e+00 6824 2.0916000000e+00 1.4631000000e+00 6825 2.0817000000e+00 1.4339000000e+00 6826 2.0678000000e+00 1.4627000000e+00 6827 2.0460000000e+00 1.4436000000e+00 6828 2.0536000000e+00 1.4102000000e+00 6829 2.0202000000e+00 1.4203000000e+00 6830 2.0114000000e+00 1.4565000000e+00 6831 1.9725000000e+00 1.4700000000e+00 6832 1.9729000000e+00 1.5013000000e+00 6833 1.9837000000e+00 1.5219000000e+00 6834 1.9471000000e+00 1.4948000000e+00 6835 1.9160000000e+00 1.4868000000e+00 6836 1.8786000000e+00 1.4729000000e+00 6837 1.8548000000e+00 1.5074000000e+00 6838 1.8201000000e+00 1.5054000000e+00 6839 1.7999000000e+00 1.5318000000e+00 6840 1.7801000000e+00 1.5576000000e+00 6841 1.7666000000e+00 1.5277000000e+00 6842 1.7320000000e+00 1.5248000000e+00 6843 1.6961000000e+00 1.5234000000e+00 6844 1.6775000000e+00 1.5546000000e+00 6845 1.6418000000e+00 1.5549000000e+00 6846 1.6064000000e+00 1.5555000000e+00 6847 1.6238000000e+00 1.5243000000e+00 6848 1.5884000000e+00 1.5253000000e+00 6849 1.5712000000e+00 1.5560000000e+00 6850 1.5364000000e+00 1.5565000000e+00 6851 1.5190000000e+00 1.5265000000e+00 6852 1.4846000000e+00 1.5265000000e+00 6853 1.4679000000e+00 1.4964000000e+00 6854 1.5020000000e+00 1.4967000000e+00 6855 1.4856000000e+00 1.4672000000e+00 6856 1.4519000000e+00 1.4662000000e+00 6857 1.4702000000e+00 1.4376000000e+00 6858 1.4365000000e+00 1.4354000000e+00 6859 1.5027000000e+00 1.4390000000e+00 6860 1.4884000000e+00 1.4113000000e+00 6861 1.4565000000e+00 1.4067000000e+00 6862 1.4214000000e+00 1.4035000000e+00 6863 1.4016000000e+00 1.4336000000e+00 6864 1.3856000000e+00 1.4024000000e+00 6865 1.4044000000e+00 1.3721000000e+00 6866 1.3692000000e+00 1.3721000000e+00 6867 1.3864000000e+00 1.3426000000e+00 6868 1.3524000000e+00 1.3431000000e+00 6869 1.3690000000e+00 1.3135000000e+00 6870 1.3346000000e+00 1.3144000000e+00 6871 1.3193000000e+00 1.3443000000e+00 6872 1.3357000000e+00 1.3715000000e+00 6873 1.3506000000e+00 1.4011000000e+00 6874 1.3160000000e+00 1.3981000000e+00 6875 1.3309000000e+00 1.4302000000e+00 6876 1.2944000000e+00 1.4271000000e+00 6877 1.3112000000e+00 1.4605000000e+00 6878 1.3471000000e+00 1.4621000000e+00 6879 1.3664000000e+00 1.4322000000e+00 6880 1.3281000000e+00 1.4926000000e+00 6881 1.3095000000e+00 1.5235000000e+00 6882 1.2921000000e+00 1.4918000000e+00 6883 1.2744000000e+00 1.4593000000e+00 6884 1.2559000000e+00 1.4257000000e+00 6885 1.2372000000e+00 1.4594000000e+00 6886 1.2557000000e+00 1.4915000000e+00 6887 1.2737000000e+00 1.5231000000e+00 6888 1.2914000000e+00 1.5545000000e+00 6889 1.3269000000e+00 1.5548000000e+00 6890 1.3089000000e+00 1.5855000000e+00 6891 1.2911000000e+00 1.6163000000e+00 6892 1.2734000000e+00 1.6470000000e+00 6893 1.2558000000e+00 1.6163000000e+00 6894 1.2205000000e+00 1.6164000000e+00 6895 1.1853000000e+00 1.6167000000e+00 6896 1.1680000000e+00 1.6474000000e+00 6897 1.2026000000e+00 1.5858000000e+00 6898 1.1673000000e+00 1.5862000000e+00 6899 1.1502000000e+00 1.6170000000e+00 6900 1.1330000000e+00 1.6477000000e+00 6901 1.1506000000e+00 1.6781000000e+00 6902 1.1332000000e+00 1.7086000000e+00 6903 1.1157000000e+00 1.6782000000e+00 6904 1.0981000000e+00 1.6479000000e+00 6905 1.0805000000e+00 1.6178000000e+00 6906 1.0459000000e+00 1.6180000000e+00 6907 1.0114000000e+00 1.6180000000e+00 6908 9.7682000000e-01 1.6177000000e+00 6909 9.4205000000e-01 1.6174000000e+00 6910 9.2425000000e-01 1.6477000000e+00 6911 9.0704000000e-01 1.6170000000e+00 6912 8.7184000000e-01 1.6167000000e+00 6913 8.3652000000e-01 1.6165000000e+00 6914 8.0117000000e-01 1.6165000000e+00 6915 7.8355000000e-01 1.6473000000e+00 6916 7.6599000000e-01 1.6780000000e+00 6917 7.4834000000e-01 1.6474000000e+00 6918 7.1319000000e-01 1.6477000000e+00 6919 6.7812000000e-01 1.6480000000e+00 6920 6.4316000000e-01 1.6483000000e+00 6921 6.2549000000e-01 1.6182000000e+00 6922 5.9082000000e-01 1.6187000000e+00 6923 5.5630000000e-01 1.6189000000e+00 6924 5.2175000000e-01 1.6188000000e+00 6925 4.8702000000e-01 1.6185000000e+00 6926 4.5208000000e-01 1.6182000000e+00 6927 4.3494000000e-01 1.5877000000e+00 6928 4.1772000000e-01 1.5570000000e+00 6929 3.8238000000e-01 1.5569000000e+00 6930 3.6491000000e-01 1.5263000000e+00 6931 3.2961000000e-01 1.5264000000e+00 6932 3.1208000000e-01 1.4959000000e+00 6933 2.7689000000e-01 1.4959000000e+00 6934 2.5941000000e-01 1.4655000000e+00 6935 2.4199000000e-01 1.4350000000e+00 6936 2.7700000000e-01 1.4350000000e+00 6937 2.5953000000e-01 1.4047000000e+00 6938 2.9449000000e-01 1.4045000000e+00 6939 2.7695000000e-01 1.3743000000e+00 6940 2.4216000000e-01 1.3744000000e+00 6941 2.5953000000e-01 1.3441000000e+00 6942 2.4184000000e-01 1.3134000000e+00 6943 2.7716000000e-01 1.3141000000e+00 6944 2.6054000000e-01 1.2834000000e+00 6945 2.2163000000e-01 1.2798000000e+00 6946 2.1584000000e-01 1.2420000000e+00 6947 2.1705000000e-01 1.2100000000e+00 6948 2.4760000000e-01 1.1996000000e+00 6949 2.8619000000e-01 1.1918000000e+00 6950 3.2508000000e-01 1.2043000000e+00 6951 3.5154000000e-01 1.1833000000e+00 6952 3.8028000000e-01 1.1667000000e+00 6953 4.1038000000e-01 1.1508000000e+00 6954 4.4112000000e-01 1.1351000000e+00 6955 4.3893000000e-01 1.1696000000e+00 6956 4.6989000000e-01 1.1542000000e+00 6957 4.6742000000e-01 1.1888000000e+00 6958 4.9864000000e-01 1.1736000000e+00 6959 5.0108000000e-01 1.1388000000e+00 6960 4.7218000000e-01 1.1196000000e+00 6961 5.2998000000e-01 1.1582000000e+00 6962 5.2747000000e-01 1.1931000000e+00 6963 5.5893000000e-01 1.1777000000e+00 6964 5.8796000000e-01 1.1973000000e+00 6965 5.8548000000e-01 1.2324000000e+00 6966 5.8294000000e-01 1.2676000000e+00 6967 6.1231000000e-01 1.2875000000e+00 6968 5.8031000000e-01 1.3030000000e+00 6969 6.0990000000e-01 1.3231000000e+00 6970 5.5100000000e-01 1.2830000000e+00 6971 5.5377000000e-01 1.2478000000e+00 6972 5.2197000000e-01 1.2629000000e+00 6973 5.1891000000e-01 1.2981000000e+00 6974 5.4807000000e-01 1.3184000000e+00 6975 5.7759000000e-01 1.3388000000e+00 6976 5.4500000000e-01 1.3542000000e+00 6977 5.7474000000e-01 1.3748000000e+00 6978 5.4185000000e-01 1.3901000000e+00 6979 5.7155000000e-01 1.4110000000e+00 6980 6.0494000000e-01 1.3956000000e+00 6981 6.0747000000e-01 1.3591000000e+00 6982 6.3977000000e-01 1.3430000000e+00 6983 6.4189000000e-01 1.3072000000e+00 6984 6.7163000000e-01 1.3268000000e+00 6985 6.7359000000e-01 1.2913000000e+00 6986 7.0506000000e-01 1.2755000000e+00 6987 7.3639000000e-01 1.2597000000e+00 6988 7.3446000000e-01 1.2948000000e+00 6989 7.6564000000e-01 1.2790000000e+00 6990 7.6762000000e-01 1.2441000000e+00 6991 7.6379000000e-01 1.3139000000e+00 6992 7.9484000000e-01 1.2981000000e+00 6993 7.9300000000e-01 1.3329000000e+00 6994 8.2395000000e-01 1.3173000000e+00 6995 8.2586000000e-01 1.2825000000e+00 6996 7.9676000000e-01 1.2633000000e+00 6997 7.9877000000e-01 1.2285000000e+00 6998 8.0090000000e-01 1.1937000000e+00 6999 8.2987000000e-01 1.2131000000e+00 7000 8.3207000000e-01 1.1784000000e+00 7001 8.0314000000e-01 1.1590000000e+00 7002 8.3443000000e-01 1.1438000000e+00 7003 8.0547000000e-01 1.1242000000e+00 7004 8.0785000000e-01 1.0893000000e+00 7005 8.1024000000e-01 1.0544000000e+00 7006 7.8116000000e-01 1.0348000000e+00 7007 7.5209000000e-01 1.0152000000e+00 7008 7.2304000000e-01 9.9571000000e-01 7009 7.5441000000e-01 9.8025000000e-01 7010 7.8584000000e-01 9.6481000000e-01 7011 7.8816000000e-01 9.2971000000e-01 7012 7.8351000000e-01 9.9983000000e-01 7013 8.1497000000e-01 9.8447000000e-01 7014 8.1733000000e-01 9.4942000000e-01 7015 8.4647000000e-01 9.6915000000e-01 7016 8.4884000000e-01 9.3411000000e-01 7017 8.7797000000e-01 9.5389000000e-01 7018 8.8034000000e-01 9.1888000000e-01 7019 8.5126000000e-01 8.9904000000e-01 7020 8.1971000000e-01 9.1431000000e-01 7021 8.2216000000e-01 8.7915000000e-01 7022 7.9050000000e-01 8.9449000000e-01 7023 7.6111000000e-01 8.7464000000e-01 7024 7.9296000000e-01 8.5913000000e-01 7025 7.6343000000e-01 8.3885000000e-01 7026 7.3129000000e-01 8.5479000000e-01 7027 7.0003000000e-01 8.7142000000e-01 7028 7.0061000000e-01 8.3542000000e-01 7029 6.7078000000e-01 8.5362000000e-01 7030 6.6954000000e-01 8.8771000000e-01 7031 6.4146000000e-01 8.6941000000e-01 7032 6.1124000000e-01 8.8381000000e-01 7033 6.1478000000e-01 8.5070000000e-01 7034 6.4335000000e-01 8.3747000000e-01 7035 6.4418000000e-01 8.1146000000e-01 7036 6.6008000000e-01 7.8907000000e-01 7037 6.7923000000e-01 7.5539000000e-01 7038 6.8581000000e-01 7.1675000000e-01 7039 6.6084000000e-01 6.8930000000e-01 7040 6.3635000000e-01 6.6015000000e-01 7041 6.1734000000e-01 6.3293000000e-01 7042 5.5633000000e-01 6.4760000000e-01 7043 3.7895000000e-01 1.1994000000e+00 7044 4.0841000000e-01 1.1847000000e+00 7045 4.3638000000e-01 1.2037000000e+00 7046 4.0554000000e-01 1.2182000000e+00 7047 4.3332000000e-01 1.2378000000e+00 7048 4.6466000000e-01 1.2232000000e+00 7049 4.9603000000e-01 1.2082000000e+00 7050 4.9320000000e-01 1.2430000000e+00 7051 5.2481000000e-01 1.2279000000e+00 7052 5.5640000000e-01 1.2127000000e+00 7053 4.9011000000e-01 1.2778000000e+00 7054 4.6160000000e-01 1.2577000000e+00 7055 4.5826000000e-01 1.2923000000e+00 7056 4.3001000000e-01 1.2721000000e+00 7057 4.2672000000e-01 1.3063000000e+00 7058 4.5444000000e-01 1.3269000000e+00 7059 4.2302000000e-01 1.3394000000e+00 7060 4.4918000000e-01 1.3622000000e+00 7061 4.8275000000e-01 1.3483000000e+00 7062 4.8668000000e-01 1.3128000000e+00 7063 5.1560000000e-01 1.3335000000e+00 7064 5.1212000000e-01 1.3694000000e+00 7065 5.0905000000e-01 1.4055000000e+00 7066 5.3859000000e-01 1.4257000000e+00 7067 5.6731000000e-01 1.4467000000e+00 7068 5.3498000000e-01 1.4602000000e+00 7069 5.6159000000e-01 1.4807000000e+00 7070 5.9528000000e-01 1.4698000000e+00 7071 6.0183000000e-01 1.4331000000e+00 7072 6.3620000000e-01 1.4167000000e+00 7073 6.3782000000e-01 1.3792000000e+00 7074 6.6989000000e-01 1.3625000000e+00 7075 7.0144000000e-01 1.3460000000e+00 7076 7.0315000000e-01 1.3107000000e+00 7077 7.3269000000e-01 1.3298000000e+00 7078 7.6210000000e-01 1.3488000000e+00 7079 7.3117000000e-01 1.3649000000e+00 7080 7.6066000000e-01 1.3835000000e+00 7081 7.9128000000e-01 1.3676000000e+00 7082 8.2203000000e-01 1.3520000000e+00 7083 8.2008000000e-01 1.3864000000e+00 7084 8.5085000000e-01 1.3712000000e+00 7085 8.5299000000e-01 1.3365000000e+00 7086 8.5496000000e-01 1.3016000000e+00 7087 8.5686000000e-01 1.2669000000e+00 7088 8.2782000000e-01 1.2477000000e+00 7089 8.5878000000e-01 1.2322000000e+00 7090 8.8773000000e-01 1.2512000000e+00 7091 8.8957000000e-01 1.2168000000e+00 7092 8.6088000000e-01 1.1978000000e+00 7093 8.6324000000e-01 1.1633000000e+00 7094 8.6581000000e-01 1.1287000000e+00 7095 8.3688000000e-01 1.1090000000e+00 7096 8.3933000000e-01 1.0741000000e+00 7097 8.4174000000e-01 1.0392000000e+00 7098 8.1262000000e-01 1.0195000000e+00 7099 8.4412000000e-01 1.0042000000e+00 7100 8.7563000000e-01 9.8890000000e-01 7101 8.7330000000e-01 1.0239000000e+00 7102 8.7091000000e-01 1.0590000000e+00 7103 8.6840000000e-01 1.0939000000e+00 7104 9.0013000000e-01 1.0789000000e+00 7105 9.0257000000e-01 1.0438000000e+00 7106 9.0486000000e-01 1.0087000000e+00 7107 9.0712000000e-01 9.7365000000e-01 7108 9.3634000000e-01 9.9334000000e-01 7109 9.3852000000e-01 9.5843000000e-01 7110 9.6764000000e-01 9.7803000000e-01 7111 9.6982000000e-01 9.4334000000e-01 7112 9.4082000000e-01 9.2355000000e-01 7113 9.0942000000e-01 9.3868000000e-01 7114 9.1179000000e-01 9.0371000000e-01 7115 8.8277000000e-01 8.8385000000e-01 7116 8.5377000000e-01 8.6396000000e-01 7117 8.2477000000e-01 8.4397000000e-01 7118 7.9574000000e-01 8.2372000000e-01 7119 7.6651000000e-01 8.0287000000e-01 7120 7.3297000000e-01 8.1792000000e-01 7121 7.3703000000e-01 7.8112000000e-01 7122 6.9890000000e-01 7.9447000000e-01 7123 6.6966000000e-01 8.2026000000e-01 7124 7.1264000000e-01 7.6212000000e-01 7125 7.0764000000e-01 7.3732000000e-01 7126 7.4032000000e-01 7.4226000000e-01 7127 7.7076000000e-01 7.6704000000e-01 7128 7.9910000000e-01 7.8859000000e-01 7129 8.0326000000e-01 7.5472000000e-01 7130 7.7825000000e-01 7.3266000000e-01 7131 7.5571000000e-01 7.0550000000e-01 7132 7.9177000000e-01 7.0060000000e-01 7133 7.7016000000e-01 6.7124000000e-01 7134 7.3356000000e-01 6.7619000000e-01 7135 7.2009000000e-01 7.1003000000e-01 7136 6.9736000000e-01 6.8212000000e-01 7137 6.7339000000e-01 6.5351000000e-01 7138 6.4924000000e-01 6.2525000000e-01 7139 6.8600000000e-01 6.1735000000e-01 7140 6.6069000000e-01 5.9040000000e-01 7141 6.2145000000e-01 5.9707000000e-01 7142 6.4027000000e-01 5.6350000000e-01 7143 6.5760000000e-01 5.3642000000e-01 7144 6.4779000000e-01 5.0143000000e-01 7145 6.7578000000e-01 5.1687000000e-01 7146 6.8730000000e-01 5.4186000000e-01 7147 6.6884000000e-01 5.6190000000e-01 7148 6.9814000000e-01 5.7732000000e-01 7149 7.3975000000e-01 5.7518000000e-01 7150 7.2402000000e-01 6.1072000000e-01 7151 7.6218000000e-01 6.0625000000e-01 7152 7.7749000000e-01 5.7166000000e-01 7153 7.5634000000e-01 5.4134000000e-01 7154 7.9300000000e-01 5.3738000000e-01 7155 8.1416000000e-01 5.6783000000e-01 7156 8.2936000000e-01 5.3439000000e-01 7157 8.4985000000e-01 5.6413000000e-01 7158 8.6448000000e-01 5.3226000000e-01 7159 8.4537000000e-01 5.0359000000e-01 7160 8.7921000000e-01 5.0108000000e-01 7161 8.5865000000e-01 4.7353000000e-01 7162 8.3125000000e-01 4.7917000000e-01 7163 8.9329000000e-01 4.6873000000e-01 7164 8.3246000000e-01 4.4782000000e-01 7165 8.1054000000e-01 4.6982000000e-01 7166 8.0919000000e-01 5.0112000000e-01 7167 9.1447000000e-01 4.9838000000e-01 7168 9.3190000000e-01 4.6309000000e-01 7169 9.3421000000e-01 4.2909000000e-01 7170 9.5457000000e-01 4.0332000000e-01 7171 9.6579000000e-01 3.6849000000e-01 7172 9.7951000000e-01 3.3758000000e-01 7173 9.9816000000e-01 3.6594000000e-01 7174 1.0132000000e+00 3.3518000000e-01 7175 1.0320000000e+00 3.6477000000e-01 7176 1.0146000000e+00 3.9857000000e-01 7177 1.0520000000e+00 3.9415000000e-01 7178 1.0670000000e+00 3.6190000000e-01 7179 1.0871000000e+00 3.9082000000e-01 7180 1.0726000000e+00 4.2296000000e-01 7181 1.1074000000e+00 4.1970000000e-01 7182 1.1218000000e+00 3.8737000000e-01 7183 1.1562000000e+00 3.8363000000e-01 7184 1.1704000000e+00 3.5179000000e-01 7185 1.1848000000e+00 3.2011000000e-01 7186 1.2045000000e+00 3.4822000000e-01 7187 1.1903000000e+00 3.7977000000e-01 7188 1.2241000000e+00 3.7617000000e-01 7189 1.2099000000e+00 4.0721000000e-01 7190 1.2430000000e+00 4.0386000000e-01 7191 1.2579000000e+00 3.7309000000e-01 7192 1.2387000000e+00 3.4480000000e-01 7193 1.2764000000e+00 4.0157000000e-01 7194 1.2923000000e+00 3.7053000000e-01 7195 1.3104000000e+00 4.0001000000e-01 7196 1.3274000000e+00 3.6852000000e-01 7197 1.3084000000e+00 3.3845000000e-01 7198 1.2732000000e+00 3.4155000000e-01 7199 1.2534000000e+00 3.1307000000e-01 7200 1.2883000000e+00 3.0931000000e-01 7201 1.2678000000e+00 2.8107000000e-01 7202 1.3026000000e+00 2.7660000000e-01 7203 1.3245000000e+00 3.0508000000e-01 7204 1.3377000000e+00 2.7095000000e-01 7205 1.3157000000e+00 2.4412000000e-01 7206 1.2817000000e+00 2.4904000000e-01 7207 1.2476000000e+00 2.5338000000e-01 7208 1.2335000000e+00 2.8497000000e-01 7209 1.2136000000e+00 2.5707000000e-01 7210 1.1993000000e+00 2.8851000000e-01 7211 1.2190000000e+00 3.1663000000e-01 7212 1.1651000000e+00 2.9188000000e-01 7213 1.2278000000e+00 2.2613000000e-01 7214 1.2408000000e+00 1.9600000000e-01 7215 1.2501000000e+00 1.6431000000e-01 7216 1.2741000000e+00 1.8967000000e-01 7217 1.3089000000e+00 1.8530000000e-01 7218 1.3286000000e+00 2.1261000000e-01 7219 1.3579000000e+00 2.1053000000e-01 7220 1.3484000000e+00 2.3835000000e-01 7221 1.3706000000e+00 2.6211000000e-01 7222 1.3915000000e+00 2.8024000000e-01 7223 7.8976000000e-01 1.4020000000e+00 7224 7.5960000000e-01 1.4181000000e+00 7225 7.8861000000e-01 1.4359000000e+00 7226 8.1827000000e-01 1.4203000000e+00 7227 8.4828000000e-01 1.4055000000e+00 7228 8.7966000000e-01 1.3912000000e+00 7229 8.8203000000e-01 1.3559000000e+00 7230 9.1110000000e-01 1.3753000000e+00 7231 9.1340000000e-01 1.3402000000e+00 7232 8.8412000000e-01 1.3209000000e+00 7233 8.8599000000e-01 1.2859000000e+00 7234 9.1690000000e-01 1.2700000000e+00 7235 9.1829000000e-01 1.2355000000e+00 7236 9.1994000000e-01 1.2017000000e+00 7237 8.9179000000e-01 1.1827000000e+00 7238 8.9451000000e-01 1.1485000000e+00 7239 8.9742000000e-01 1.1139000000e+00 7240 9.2620000000e-01 1.1343000000e+00 7241 9.2949000000e-01 1.0992000000e+00 7242 9.3203000000e-01 1.0638000000e+00 7243 9.3423000000e-01 1.0284000000e+00 7244 9.6572000000e-01 1.0129000000e+00 7245 9.6390000000e-01 1.0481000000e+00 7246 9.9545000000e-01 1.0320000000e+00 7247 9.9677000000e-01 9.9726000000e-01 7248 9.9871000000e-01 9.6295000000e-01 7249 1.0011000000e+00 9.2848000000e-01 7250 9.7217000000e-01 9.0854000000e-01 7251 9.4320000000e-01 8.8861000000e-01 7252 9.7462000000e-01 8.7357000000e-01 7253 9.4562000000e-01 8.5357000000e-01 7254 9.1421000000e-01 8.6871000000e-01 7255 8.8526000000e-01 8.4884000000e-01 7256 9.1664000000e-01 8.3369000000e-01 7257 8.8777000000e-01 8.1388000000e-01 7258 8.5638000000e-01 8.2894000000e-01 7259 8.2763000000e-01 8.0893000000e-01 7260 8.5907000000e-01 7.9408000000e-01 7261 8.3065000000e-01 7.7427000000e-01 7262 9.9441000000e-01 1.5878000000e+00 7263 9.5994000000e-01 1.5872000000e+00 7264 9.2504000000e-01 1.5866000000e+00 7265 8.8982000000e-01 1.5861000000e+00 7266 8.5441000000e-01 1.5858000000e+00 7267 8.1889000000e-01 1.5856000000e+00 7268 7.8338000000e-01 1.5857000000e+00 7269 7.6584000000e-01 1.6167000000e+00 7270 7.3059000000e-01 1.6169000000e+00 7271 6.9543000000e-01 1.6173000000e+00 7272 6.6037000000e-01 1.6177000000e+00 7273 6.7753000000e-01 1.5869000000e+00 7274 6.4246000000e-01 1.5876000000e+00 7275 6.0776000000e-01 1.5885000000e+00 7276 5.7347000000e-01 1.5890000000e+00 7277 5.3930000000e-01 1.5889000000e+00 7278 5.0486000000e-01 1.5885000000e+00 7279 4.7003000000e-01 1.5880000000e+00 7280 4.8824000000e-01 1.5579000000e+00 7281 4.5306000000e-01 1.5573000000e+00 7282 4.3588000000e-01 1.5263000000e+00 7283 4.0032000000e-01 1.5263000000e+00 7284 3.8274000000e-01 1.4957000000e+00 7285 3.4736000000e-01 1.4958000000e+00 7286 3.2975000000e-01 1.4653000000e+00 7287 2.9453000000e-01 1.4654000000e+00 7288 3.1211000000e-01 1.4349000000e+00 7289 3.2957000000e-01 1.4042000000e+00 7290 3.1177000000e-01 1.3741000000e+00 7291 2.9424000000e-01 1.3442000000e+00 7292 3.1155000000e-01 1.3146000000e+00 7293 2.9529000000e-01 1.2851000000e+00 7294 2.8005000000e-01 1.2558000000e+00 7295 2.4730000000e-01 1.2521000000e+00 7296 2.3892000000e-01 1.2259000000e+00 7297 2.6683000000e-01 1.2258000000e+00 7298 3.0091000000e-01 1.2296000000e+00 7299 3.0943000000e-01 1.2590000000e+00 7300 3.3788000000e-01 1.2408000000e+00 7301 3.5357000000e-01 1.2118000000e+00 7302 3.7441000000e-01 1.2314000000e+00 7303 4.0175000000e-01 1.2520000000e+00 7304 3.9843000000e-01 1.2866000000e+00 7305 3.6877000000e-01 1.2661000000e+00 7306 3.6715000000e-01 1.3023000000e+00 7307 3.9617000000e-01 1.3206000000e+00 7308 3.2263000000e+00 6.3223000000e-01 7309 3.2190000000e+00 6.5849000000e-01 7310 3.2154000000e+00 6.9403000000e-01 7311 3.2155000000e+00 7.3075000000e-01 7312 3.2159000000e+00 7.6665000000e-01 7313 3.1853000000e+00 7.8397000000e-01 7314 3.1854000000e+00 8.1954000000e-01 7315 3.1855000000e+00 8.5533000000e-01 7316 3.1859000000e+00 8.9118000000e-01 7317 3.1865000000e+00 9.2689000000e-01 7318 3.1873000000e+00 9.6233000000e-01 7319 3.1880000000e+00 9.9749000000e-01 7320 3.1885000000e+00 1.0324000000e+00 7321 3.1584000000e+00 1.0499000000e+00 7322 3.1584000000e+00 1.0847000000e+00 7323 3.1581000000e+00 1.1196000000e+00 7324 3.1273000000e+00 1.1368000000e+00 7325 3.1267000000e+00 1.1722000000e+00 7326 3.1262000000e+00 1.2077000000e+00 7327 3.0948000000e+00 1.2258000000e+00 7328 3.0946000000e+00 1.2617000000e+00 7329 3.0632000000e+00 1.2804000000e+00 7330 3.0632000000e+00 1.3165000000e+00 7331 3.0319000000e+00 1.3358000000e+00 7332 3.0005000000e+00 1.3556000000e+00 7333 3.0010000000e+00 1.3917000000e+00 7334 2.9704000000e+00 1.4123000000e+00 7335 2.9407000000e+00 1.4340000000e+00 7336 2.9074000000e+00 1.4216000000e+00 7337 2.8717000000e+00 1.4094000000e+00 7338 2.8343000000e+00 1.3999000000e+00 7339 2.7977000000e+00 1.3925000000e+00 7340 2.7627000000e+00 1.3842000000e+00 7341 2.7287000000e+00 1.3757000000e+00 7342 2.7022000000e+00 1.4013000000e+00 7343 2.6702000000e+00 1.3934000000e+00 7344 2.6381000000e+00 1.3872000000e+00 7345 2.6054000000e+00 1.3825000000e+00 7346 2.5715000000e+00 1.3790000000e+00 7347 2.5359000000e+00 1.3761000000e+00 7348 2.4983000000e+00 1.3732000000e+00 7349 2.4718000000e+00 1.4075000000e+00 7350 2.4353000000e+00 1.3960000000e+00 7351 2.4008000000e+00 1.3922000000e+00 7352 2.3714000000e+00 1.3911000000e+00 7353 2.3439000000e+00 1.3751000000e+00 7354 2.3101000000e+00 1.3761000000e+00 7355 2.2802000000e+00 1.3617000000e+00 7356 2.2415000000e+00 1.3643000000e+00 7357 2.2177000000e+00 1.3963000000e+00 7358 2.1837000000e+00 1.3800000000e+00 7359 2.1502000000e+00 1.3986000000e+00 7360 2.1158000000e+00 1.4156000000e+00 7361 2.1198000000e+00 1.3785000000e+00 7362 2.0862000000e+00 1.3956000000e+00 7363 2.0573000000e+00 1.3764000000e+00 7364 2.0306000000e+00 1.3915000000e+00 7365 1.9958000000e+00 1.3892000000e+00 7366 1.9840000000e+00 1.4303000000e+00 7367 1.9480000000e+00 1.4409000000e+00 7368 1.9397000000e+00 1.4692000000e+00 7369 1.9562000000e+00 1.4048000000e+00 7370 1.9210000000e+00 1.4178000000e+00 7371 1.9610000000e+00 1.3684000000e+00 7372 1.9277000000e+00 1.3821000000e+00 7373 1.8931000000e+00 1.3943000000e+00 7374 1.8860000000e+00 1.4315000000e+00 7375 1.9149000000e+00 1.4532000000e+00 7376 1.8501000000e+00 1.4429000000e+00 7377 1.8376000000e+00 1.4766000000e+00 7378 1.8076000000e+00 1.4796000000e+00 7379 1.7876000000e+00 1.5007000000e+00 7380 1.7531000000e+00 1.4952000000e+00 7381 1.7161000000e+00 1.4919000000e+00 7382 1.6783000000e+00 1.4909000000e+00 7383 1.6598000000e+00 1.5234000000e+00 7384 1.6411000000e+00 1.4925000000e+00 7385 1.6053000000e+00 1.4942000000e+00 7386 1.5703000000e+00 1.4955000000e+00 7387 1.5535000000e+00 1.5260000000e+00 7388 1.5360000000e+00 1.4964000000e+00 7389 1.5189000000e+00 1.4674000000e+00 7390 1.5348000000e+00 1.4384000000e+00 7391 1.5524000000e+00 1.4665000000e+00 7392 1.5865000000e+00 1.4648000000e+00 7393 1.5678000000e+00 1.4363000000e+00 7394 1.6019000000e+00 1.4337000000e+00 7395 1.5823000000e+00 1.4055000000e+00 7396 1.5491000000e+00 1.4090000000e+00 7397 1.5181000000e+00 1.4120000000e+00 7398 1.5041000000e+00 1.3905000000e+00 7399 1.4790000000e+00 1.3819000000e+00 7400 1.4437000000e+00 1.3705000000e+00 7401 1.4204000000e+00 1.3417000000e+00 7402 1.4031000000e+00 1.3132000000e+00 7403 1.4361000000e+00 1.3134000000e+00 7404 1.4207000000e+00 1.2843000000e+00 7405 1.3863000000e+00 1.2838000000e+00 7406 1.3514000000e+00 1.2840000000e+00 7407 1.3691000000e+00 1.2536000000e+00 7408 1.4044000000e+00 1.2541000000e+00 7409 1.3876000000e+00 1.2232000000e+00 7410 1.3516000000e+00 1.2228000000e+00 7411 1.3334000000e+00 1.2538000000e+00 7412 1.3160000000e+00 1.2850000000e+00 7413 1.2999000000e+00 1.3167000000e+00 7414 1.2796000000e+00 1.2868000000e+00 7415 1.2636000000e+00 1.3205000000e+00 7416 1.2862000000e+00 1.3494000000e+00 7417 1.2497000000e+00 1.3562000000e+00 7418 1.2777000000e+00 1.3885000000e+00 7419 1.3070000000e+00 1.3704000000e+00 7420 1.2347000000e+00 1.3926000000e+00 7421 1.2110000000e+00 1.3614000000e+00 7422 1.1962000000e+00 1.3963000000e+00 7423 1.1739000000e+00 1.3667000000e+00 7424 1.1597000000e+00 1.4001000000e+00 7425 1.1803000000e+00 1.4299000000e+00 7426 1.2174000000e+00 1.4274000000e+00 7427 1.2002000000e+00 1.4606000000e+00 7428 1.2193000000e+00 1.4919000000e+00 7429 1.2377000000e+00 1.5232000000e+00 7430 1.2557000000e+00 1.5544000000e+00 7431 1.2201000000e+00 1.5546000000e+00 7432 1.2380000000e+00 1.5855000000e+00 7433 1.2735000000e+00 1.5854000000e+00 7434 1.1845000000e+00 1.5551000000e+00 7435 1.1492000000e+00 1.5558000000e+00 7436 1.1322000000e+00 1.5867000000e+00 7437 1.1152000000e+00 1.6174000000e+00 7438 1.0974000000e+00 1.5873000000e+00 7439 1.0628000000e+00 1.5878000000e+00 7440 1.0286000000e+00 1.5880000000e+00 7441 1.0453000000e+00 1.5582000000e+00 7442 1.0117000000e+00 1.5584000000e+00 7443 9.7794000000e-01 1.5575000000e+00 7444 9.4332000000e-01 1.5563000000e+00 7445 9.0806000000e-01 1.5555000000e+00 7446 8.7252000000e-01 1.5550000000e+00 7447 8.9091000000e-01 1.5243000000e+00 7448 8.5507000000e-01 1.5236000000e+00 7449 8.3682000000e-01 1.5546000000e+00 7450 8.0100000000e-01 1.5545000000e+00 7451 7.6533000000e-01 1.5549000000e+00 7452 7.4799000000e-01 1.5860000000e+00 7453 7.1273000000e-01 1.5864000000e+00 7454 6.9479000000e-01 1.5559000000e+00 7455 6.5935000000e-01 1.5566000000e+00 7456 6.2425000000e-01 1.5579000000e+00 7457 5.9004000000e-01 1.5593000000e+00 7458 5.5656000000e-01 1.5597000000e+00 7459 5.2284000000e-01 1.5589000000e+00 7460 5.0711000000e-01 1.5278000000e+00 7461 5.4096000000e-01 1.5305000000e+00 7462 5.2858000000e-01 1.4964000000e+00 7463 4.9050000000e-01 1.4963000000e+00 7464 4.7153000000e-01 1.5268000000e+00 7465 4.5440000000e-01 1.4951000000e+00 7466 4.1828000000e-01 1.4955000000e+00 7467 4.0052000000e-01 1.4649000000e+00 7468 3.6508000000e-01 1.4651000000e+00 7469 3.4735000000e-01 1.4346000000e+00 7470 3.6481000000e-01 1.4039000000e+00 7471 3.4693000000e-01 1.3732000000e+00 7472 3.2850000000e-01 1.3438000000e+00 7473 3.4112000000e-01 1.3168000000e+00 7474 3.3303000000e-01 1.2835000000e+00 7475 3.6539000000e-01 1.3399000000e+00 7476 3.9629000000e-01 1.3490000000e+00 7477 4.1530000000e-01 1.3716000000e+00 7478 4.4110000000e-01 1.4021000000e+00 7479 4.7845000000e-01 1.3849000000e+00 7480 4.7649000000e-01 1.4218000000e+00 7481 5.0675000000e-01 1.4408000000e+00 7482 4.7432000000e-01 1.4609000000e+00 7483 5.0703000000e-01 1.4709000000e+00 7484 5.5787000000e-01 1.5084000000e+00 7485 5.8547000000e-01 1.5027000000e+00 7486 6.1982000000e-01 1.4968000000e+00 7487 6.3563000000e-01 1.4587000000e+00 7488 6.6831000000e-01 1.4348000000e+00 7489 6.7120000000e-01 1.4659000000e+00 7490 6.9896000000e-01 1.4521000000e+00 7491 6.9923000000e-01 1.4170000000e+00 7492 6.6859000000e-01 1.3986000000e+00 7493 7.0007000000e-01 1.3815000000e+00 7494 4.3585000000e-01 1.4646000000e+00 7495 4.1836000000e-01 1.4344000000e+00 7496 3.8279000000e-01 1.4344000000e+00 7497 4.0065000000e-01 1.4033000000e+00 7498 3.8156000000e-01 1.3735000000e+00 7499 4.4923000000e-01 1.4368000000e+00 7500 1.6074000000e-02 6.4949000000e-02 7501 -3.2786000000e-03 9.2627000000e-02 7502 -1.8415000000e-02 6.1480000000e-02 7503 -3.5865000000e-02 8.9702000000e-02 7504 -2.1140000000e-02 1.1514000000e-01 7505 9.3557000000e-03 1.2755000000e-01 7506 3.1509000000e-02 1.5154000000e-01 7507 5.8357000000e-02 1.5541000000e-01 7508 8.8331000000e-02 1.6055000000e-01 7509 6.9171000000e-02 1.7953000000e-01 7510 9.4435000000e-02 1.9134000000e-01 7511 1.0035000000e+00 8.9369000000e-01 7512 1.0061000000e+00 8.5857000000e-01 7513 1.0351000000e+00 8.7902000000e-01 7514 1.0379000000e+00 8.4355000000e-01 7515 1.0086000000e+00 8.2314000000e-01 7516 9.7705000000e-01 8.3839000000e-01 7517 9.7934000000e-01 8.0305000000e-01 7518 1.0108000000e+00 7.8749000000e-01 7519 9.8141000000e-01 7.6758000000e-01 7520 9.5018000000e-01 7.8320000000e-01 7521 9.5213000000e-01 7.4761000000e-01 7522 9.2123000000e-01 7.6381000000e-01 7523 9.1901000000e-01 7.9868000000e-01 7524 8.9026000000e-01 7.7907000000e-01 7525 8.9276000000e-01 7.4460000000e-01 7526 9.2304000000e-01 7.2965000000e-01 7527 8.9608000000e-01 7.1144000000e-01 7528 8.6422000000e-01 7.2422000000e-01 7529 8.6169000000e-01 7.5936000000e-01 7530 8.3314000000e-01 7.3993000000e-01 7531 8.3136000000e-01 7.0117000000e-01 7532 8.0757000000e-01 7.2582000000e-01 7533 8.0749000000e-01 6.6719000000e-01 7534 7.8477000000e-01 6.3664000000e-01 7535 7.4753000000e-01 6.4132000000e-01 7536 7.1034000000e-01 6.4687000000e-01 7537 7.9937000000e-01 6.0195000000e-01 7538 8.3576000000e-01 5.9744000000e-01 7539 8.7122000000e-01 5.9252000000e-01 7540 8.5808000000e-01 6.2633000000e-01 7541 8.9356000000e-01 6.2032000000e-01 7542 8.8107000000e-01 6.5423000000e-01 7543 8.4501000000e-01 6.6160000000e-01 7544 8.2176000000e-01 6.3186000000e-01 7545 8.7024000000e-01 6.8879000000e-01 7546 9.0366000000e-01 6.8006000000e-01 7547 9.1579000000e-01 6.4822000000e-01 7548 9.3623000000e-01 6.7631000000e-01 7549 9.5094000000e-01 6.4424000000e-01 7550 9.2927000000e-01 6.1410000000e-01 7551 9.6600000000e-01 6.1019000000e-01 7552 9.4339000000e-01 5.7506000000e-01 7553 9.0592000000e-01 5.8650000000e-01 7554 8.8407000000e-01 5.6035000000e-01 7555 8.9895000000e-01 5.3000000000e-01 7556 9.3749000000e-01 5.3125000000e-01 7557 9.1397000000e-01 5.5664000000e-01 7558 9.6822000000e-01 5.4891000000e-01 7559 9.7742000000e-01 5.1362000000e-01 7560 9.4600000000e-01 4.9610000000e-01 7561 9.6873000000e-01 4.7412000000e-01 7562 9.6135000000e-01 4.3970000000e-01 7563 9.8631000000e-01 4.1867000000e-01 7564 9.8387000000e-01 3.9101000000e-01 7565 9.9241000000e-01 4.4984000000e-01 7566 1.0033000000e+00 4.8229000000e-01 7567 1.0237000000e+00 4.5469000000e-01 7568 1.0111000000e+00 4.2953000000e-01 7569 1.0386000000e+00 4.2581000000e-01 7570 1.0576000000e+00 4.5491000000e-01 7571 1.0929000000e+00 4.5226000000e-01 7572 1.1281000000e+00 4.4878000000e-01 7573 1.1422000000e+00 4.1590000000e-01 7574 1.1632000000e+00 4.4433000000e-01 7575 1.1764000000e+00 4.1152000000e-01 7576 1.1970000000e+00 4.3820000000e-01 7577 1.1863000000e+00 4.7019000000e-01 7578 1.2168000000e+00 4.6223000000e-01 7579 1.2290000000e+00 4.3366000000e-01 7580 1.2610000000e+00 4.3142000000e-01 7581 1.2937000000e+00 4.3050000000e-01 7582 1.3274000000e+00 4.2993000000e-01 7583 1.3452000000e+00 3.9900000000e-01 7584 1.3806000000e+00 3.9846000000e-01 7585 1.3622000000e+00 4.2975000000e-01 7586 1.3979000000e+00 4.2949000000e-01 7587 1.3789000000e+00 4.6150000000e-01 7588 1.4159000000e+00 4.6063000000e-01 7589 1.4349000000e+00 4.9154000000e-01 7590 1.4711000000e+00 4.8931000000e-01 7591 1.5068000000e+00 4.8698000000e-01 7592 1.5231000000e+00 4.5512000000e-01 7593 1.5580000000e+00 4.5260000000e-01 7594 1.5735000000e+00 4.2116000000e-01 7595 1.5929000000e+00 4.4951000000e-01 7596 1.6078000000e+00 4.1720000000e-01 7597 1.5879000000e+00 3.9070000000e-01 7598 1.6210000000e+00 3.8396000000e-01 7599 1.5992000000e+00 3.6429000000e-01 7600 1.5706000000e+00 3.6444000000e-01 7601 1.7782000000e+00 1.4640000000e+00 7602 1.7381000000e+00 1.4622000000e+00 7603 1.7560000000e+00 1.4325000000e+00 7604 1.7266000000e+00 1.4348000000e+00 7605 1.6991000000e+00 1.4546000000e+00 7606 1.6581000000e+00 1.4595000000e+00 7607 1.6216000000e+00 1.4625000000e+00 7608 1.6367000000e+00 1.4305000000e+00 7609 1.6718000000e+00 1.4258000000e+00 7610 1.6504000000e+00 1.3989000000e+00 7611 1.6165000000e+00 1.4023000000e+00 7612 1.5967000000e+00 1.3740000000e+00 7613 1.6312000000e+00 1.3714000000e+00 7614 1.6125000000e+00 1.3422000000e+00 7615 1.6476000000e+00 1.3416000000e+00 7616 1.6639000000e+00 1.3696000000e+00 7617 1.6809000000e+00 1.3430000000e+00 7618 1.6665000000e+00 1.3132000000e+00 7619 1.6305000000e+00 1.3104000000e+00 7620 1.5930000000e+00 1.3111000000e+00 7621 1.5757000000e+00 1.3444000000e+00 7622 1.5620000000e+00 1.3779000000e+00 7623 1.5296000000e+00 1.3839000000e+00 7624 1.5057000000e+00 1.3634000000e+00 7625 1.4755000000e+00 1.3492000000e+00 7626 1.4489000000e+00 1.3383000000e+00 7627 1.4687000000e+00 1.3168000000e+00 7628 1.4549000000e+00 1.2861000000e+00 7629 1.4395000000e+00 1.2554000000e+00 7630 1.4748000000e+00 1.2576000000e+00 7631 1.4592000000e+00 1.2258000000e+00 7632 1.4234000000e+00 1.2242000000e+00 7633 1.4066000000e+00 1.1928000000e+00 7634 1.3704000000e+00 1.1920000000e+00 7635 1.3341000000e+00 1.1914000000e+00 7636 1.3532000000e+00 1.1604000000e+00 7637 1.3166000000e+00 1.1596000000e+00 7638 1.3360000000e+00 1.1284000000e+00 7639 1.2991000000e+00 1.1274000000e+00 7640 1.2797000000e+00 1.1590000000e+00 7641 1.2974000000e+00 1.1910000000e+00 7642 1.3154000000e+00 1.2227000000e+00 7643 1.2971000000e+00 1.2544000000e+00 7644 1.2598000000e+00 1.2551000000e+00 7645 1.2412000000e+00 1.2889000000e+00 7646 1.2250000000e+00 1.3249000000e+00 7647 1.1867000000e+00 1.3314000000e+00 7648 1.1511000000e+00 1.3392000000e+00 7649 1.1388000000e+00 1.3718000000e+00 7650 1.1248000000e+00 1.4033000000e+00 7651 1.1444000000e+00 1.4323000000e+00 7652 1.1639000000e+00 1.4623000000e+00 7653 1.1831000000e+00 1.4929000000e+00 7654 1.2018000000e+00 1.5237000000e+00 7655 1.1661000000e+00 1.5245000000e+00 7656 1.1307000000e+00 1.5256000000e+00 7657 1.1473000000e+00 1.4941000000e+00 7658 1.1119000000e+00 1.4955000000e+00 7659 1.0956000000e+00 1.5267000000e+00 7660 1.1141000000e+00 1.5566000000e+00 7661 1.0794000000e+00 1.5575000000e+00 7662 1.0611000000e+00 1.5281000000e+00 7663 1.0280000000e+00 1.5297000000e+00 7664 9.9599000000e-01 1.5289000000e+00 7665 9.6223000000e-01 1.5263000000e+00 7666 9.2668000000e-01 1.5249000000e+00 7667 9.4612000000e-01 1.4934000000e+00 7668 9.0938000000e-01 1.4935000000e+00 7669 9.2682000000e-01 1.4625000000e+00 7670 8.9204000000e-01 1.4631000000e+00 7671 8.7368000000e-01 1.4930000000e+00 7672 8.5716000000e-01 1.4615000000e+00 7673 8.3748000000e-01 1.4917000000e+00 7674 8.1892000000e-01 1.4573000000e+00 7675 8.0100000000e-01 1.4917000000e+00 7676 8.1900000000e-01 1.5232000000e+00 7677 7.8256000000e-01 1.5231000000e+00 7678 7.4697000000e-01 1.5247000000e+00 7679 7.6204000000e-01 1.4895000000e+00 7680 7.2940000000e-01 1.4998000000e+00 7681 7.1238000000e-01 1.5251000000e+00 7682 7.3004000000e-01 1.5555000000e+00 7683 6.7667000000e-01 1.5247000000e+00 7684 6.9637000000e-01 1.4902000000e+00 7685 6.5669000000e-01 1.4938000000e+00 7686 6.4038000000e-01 1.5265000000e+00 7687 6.0546000000e-01 1.5291000000e+00 7688 5.7273000000e-01 1.5316000000e+00 7689 7.2922000000e-01 1.4698000000e+00 7690 7.2937000000e-01 1.4348000000e+00 7691 7.3002000000e-01 1.4000000000e+00 7692 7.5914000000e-01 1.4522000000e+00 7693 7.8595000000e-01 1.4653000000e+00 7694 8.4391000000e-01 1.4348000000e+00 7695 8.7688000000e-01 1.4293000000e+00 7696 9.0879000000e-01 1.4099000000e+00 7697 9.3997000000e-01 1.3950000000e+00 7698 9.3682000000e-01 1.4296000000e+00 7699 9.6877000000e-01 1.4149000000e+00 7700 9.7155000000e-01 1.3801000000e+00 7701 9.4273000000e-01 1.3599000000e+00 7702 9.4505000000e-01 1.3244000000e+00 7703 9.1534000000e-01 1.3050000000e+00 7704 9.4656000000e-01 1.2888000000e+00 7705 9.7691000000e-01 1.3078000000e+00 7706 9.7768000000e-01 1.2717000000e+00 7707 9.7530000000e-01 1.3445000000e+00 7708 1.0077000000e+00 1.3274000000e+00 7709 1.0091000000e+00 1.2901000000e+00 7710 1.0086000000e+00 1.2532000000e+00 7711 9.7737000000e-01 1.2366000000e+00 7712 1.0060000000e+00 1.2179000000e+00 7713 1.0367000000e+00 1.2329000000e+00 7714 1.0343000000e+00 1.1982000000e+00 7715 1.0027000000e+00 1.1834000000e+00 7716 9.7637000000e-01 1.2033000000e+00 7717 9.4813000000e-01 1.2196000000e+00 7718 9.4749000000e-01 1.2537000000e+00 7719 9.4929000000e-01 1.1872000000e+00 7720 9.2261000000e-01 1.1683000000e+00 7721 9.5395000000e-01 1.1552000000e+00 7722 9.5929000000e-01 1.1206000000e+00 7723 9.9155000000e-01 1.1459000000e+00 7724 9.9265000000e-01 1.1047000000e+00 7725 9.6191000000e-01 1.0840000000e+00 7726 1.0244000000e+00 1.1228000000e+00 7727 1.0247000000e+00 1.0870000000e+00 7728 9.9412000000e-01 1.0678000000e+00 7729 1.3975000000e+00 4.9362000000e-01 7730 1.4180000000e+00 5.2478000000e-01 7731 1.4546000000e+00 5.2190000000e-01 7732 1.4904000000e+00 5.1922000000e-01 7733 1.4744000000e+00 5.5169000000e-01 7734 1.4386000000e+00 5.5497000000e-01 7735 1.4589000000e+00 5.8417000000e-01 7736 1.4938000000e+00 5.8107000000e-01 7737 1.5098000000e+00 5.4894000000e-01 7738 1.5260000000e+00 5.1665000000e-01 7739 1.5421000000e+00 4.8448000000e-01 7740 1.5773000000e+00 4.8172000000e-01 7741 1.6126000000e+00 4.7867000000e-01 7742 1.5968000000e+00 5.1122000000e-01 7743 1.6322000000e+00 5.0829000000e-01 7744 1.6480000000e+00 4.7555000000e-01 7745 1.6281000000e+00 4.4592000000e-01 7746 1.6436000000e+00 4.1220000000e-01 7747 1.6638000000e+00 4.4260000000e-01 7748 1.6835000000e+00 4.7267000000e-01 7749 1.6994000000e+00 4.4028000000e-01 7750 1.6804000000e+00 4.0918000000e-01 7751 1.6602000000e+00 3.7452000000e-01 7752 1.7000000000e+00 3.7603000000e-01 7753 1.6821000000e+00 3.5700000000e-01 7754 1.7254000000e+00 3.5848000000e-01 7755 1.7539000000e+00 3.6027000000e-01 7756 1.7886000000e+00 3.6302000000e-01 7757 1.7666000000e+00 3.9155000000e-01 7758 1.7343000000e+00 3.8441000000e-01 7759 1.7154000000e+00 4.0969000000e-01 7760 1.7444000000e+00 4.1065000000e-01 7761 1.7717000000e+00 4.2997000000e-01 7762 1.8064000000e+00 4.0114000000e-01 7763 1.8264000000e+00 3.6273000000e-01 7764 1.8069000000e+00 3.3099000000e-01 7765 1.8432000000e+00 3.2877000000e-01 7766 1.8584000000e+00 2.9652000000e-01 7767 1.8730000000e+00 2.6595000000e-01 7768 1.8883000000e+00 2.3676000000e-01 7769 1.9048000000e+00 2.6407000000e-01 7770 1.9210000000e+00 2.3681000000e-01 7771 1.9354000000e+00 2.6525000000e-01 7772 1.9540000000e+00 2.3847000000e-01 7773 1.9385000000e+00 2.0848000000e-01 7774 1.9048000000e+00 2.0793000000e-01 7775 1.9221000000e+00 1.7881000000e-01 7776 1.9564000000e+00 1.7934000000e-01 7777 1.9727000000e+00 2.0962000000e-01 7778 1.9910000000e+00 1.8005000000e-01 7779 2.0260000000e+00 1.8070000000e-01 7780 2.0429000000e+00 2.1148000000e-01 7781 2.0601000000e+00 2.4249000000e-01 7782 2.0778000000e+00 2.7343000000e-01 7783 2.0958000000e+00 3.0397000000e-01 7784 2.1313000000e+00 3.0337000000e-01 7785 2.1665000000e+00 3.0305000000e-01 7786 2.1842000000e+00 2.7266000000e-01 7787 2.2017000000e+00 3.0292000000e-01 7788 2.2194000000e+00 2.7260000000e-01 7789 2.2020000000e+00 2.4229000000e-01 7790 2.2197000000e+00 2.1195000000e-01 7791 2.2023000000e+00 1.8161000000e-01 7792 2.2375000000e+00 1.8164000000e-01 7793 2.2549000000e+00 2.1197000000e-01 7794 2.2372000000e+00 2.4228000000e-01 7795 2.2724000000e+00 2.4228000000e-01 7796 2.2901000000e+00 2.1198000000e-01 7797 2.2727000000e+00 1.8167000000e-01 7798 2.2552000000e+00 1.5135000000e-01 7799 2.2903000000e+00 1.5138000000e-01 7800 2.3254000000e+00 1.5141000000e-01 7801 2.3429000000e+00 1.8171000000e-01 7802 2.3604000000e+00 2.1202000000e-01 7803 2.3427000000e+00 2.4231000000e-01 7804 2.3602000000e+00 2.7262000000e-01 7805 2.3777000000e+00 3.0292000000e-01 7806 2.3250000000e+00 2.7262000000e-01 7807 2.3425000000e+00 3.0294000000e-01 7808 2.3600000000e+00 3.3326000000e-01 7809 2.3952000000e+00 3.3321000000e-01 7810 2.4127000000e+00 3.6345000000e-01 7811 2.4302000000e+00 3.9363000000e-01 7812 2.4653000000e+00 3.9346000000e-01 7813 2.5002000000e+00 3.9337000000e-01 7814 2.5351000000e+00 3.9337000000e-01 7815 2.5528000000e+00 3.6327000000e-01 7816 2.5700000000e+00 3.9347000000e-01 7817 2.5872000000e+00 4.2370000000e-01 7818 2.6042000000e+00 4.5400000000e-01 7819 2.6393000000e+00 4.5442000000e-01 7820 2.6745000000e+00 4.5481000000e-01 7821 2.6917000000e+00 4.8548000000e-01 7822 2.7272000000e+00 4.8581000000e-01 7823 2.7626000000e+00 4.8607000000e-01 7824 2.7981000000e+00 4.8632000000e-01 7825 2.8160000000e+00 4.5589000000e-01 7826 2.8337000000e+00 4.8658000000e-01 7827 2.8514000000e+00 4.5615000000e-01 7828 2.8337000000e+00 4.2548000000e-01 7829 2.8514000000e+00 3.9509000000e-01 7830 2.8690000000e+00 3.6471000000e-01 7831 2.9043000000e+00 3.6492000000e-01 7832 2.8867000000e+00 3.9532000000e-01 7833 2.9221000000e+00 3.9558000000e-01 7834 2.9397000000e+00 3.6515000000e-01 7835 2.9751000000e+00 3.6540000000e-01 7836 3.0105000000e+00 3.6565000000e-01 7837 3.0281000000e+00 3.3510000000e-01 7838 3.0636000000e+00 3.3526000000e-01 7839 3.0991000000e+00 3.3551000000e-01 7840 3.1170000000e+00 3.0499000000e-01 7841 3.1337000000e+00 2.7358000000e-01 7842 3.1684000000e+00 2.7310000000e-01 7843 3.1847000000e+00 3.0239000000e-01 7844 3.1968000000e+00 3.3126000000e-01 7845 3.1693000000e+00 3.2696000000e-01 7846 3.1380000000e+00 3.3886000000e-01 7847 3.1407000000e+00 3.7888000000e-01 7848 3.1407000000e+00 4.1613000000e-01 7849 3.1423000000e+00 4.5180000000e-01 7850 3.1423000000e+00 4.8638000000e-01 7851 3.1727000000e+00 5.0460000000e-01 7852 3.1724000000e+00 5.4016000000e-01 7853 3.2032000000e+00 5.5935000000e-01 7854 3.2354000000e+00 5.8250000000e-01 7855 3.2209000000e+00 6.1072000000e-01 7856 3.1960000000e+00 6.2897000000e-01 7857 3.1802000000e+00 6.7008000000e-01 7858 3.1834000000e+00 7.1197000000e-01 7859 3.1848000000e+00 7.4845000000e-01 7860 3.1548000000e+00 7.6590000000e-01 7861 3.1545000000e+00 8.0099000000e-01 7862 3.1542000000e+00 8.3683000000e-01 7863 3.1543000000e+00 8.7305000000e-01 7864 3.1549000000e+00 9.0923000000e-01 7865 3.1560000000e+00 9.4501000000e-01 7866 3.1571000000e+00 9.8030000000e-01 7867 3.1579000000e+00 1.0152000000e+00 7868 3.1281000000e+00 1.0328000000e+00 7869 3.1283000000e+00 1.0672000000e+00 7870 3.1279000000e+00 1.1018000000e+00 7871 3.0970000000e+00 1.1187000000e+00 7872 3.0959000000e+00 1.1541000000e+00 7873 3.0952000000e+00 1.1899000000e+00 7874 3.0634000000e+00 1.2080000000e+00 7875 3.0633000000e+00 1.2443000000e+00 7876 3.0317000000e+00 1.2632000000e+00 7877 3.0318000000e+00 1.2996000000e+00 7878 3.0003000000e+00 1.3192000000e+00 7879 2.9686000000e+00 1.3394000000e+00 7880 2.9692000000e+00 1.3762000000e+00 7881 2.9380000000e+00 1.3979000000e+00 7882 2.9036000000e+00 1.3833000000e+00 7883 2.8647000000e+00 1.3666000000e+00 7884 2.8244000000e+00 1.3647000000e+00 7885 2.7899000000e+00 1.3575000000e+00 7886 2.7557000000e+00 1.3492000000e+00 7887 2.7214000000e+00 1.3412000000e+00 7888 2.6953000000e+00 1.3678000000e+00 7889 2.6621000000e+00 1.3609000000e+00 7890 2.6287000000e+00 1.3551000000e+00 7891 2.5946000000e+00 1.3503000000e+00 7892 2.5594000000e+00 1.3460000000e+00 7893 2.5231000000e+00 1.3419000000e+00 7894 2.4858000000e+00 1.3374000000e+00 7895 2.4603000000e+00 1.3682000000e+00 7896 2.4229000000e+00 1.3627000000e+00 7897 2.3831000000e+00 1.3595000000e+00 7898 2.3548000000e+00 1.3418000000e+00 7899 2.3196000000e+00 1.3417000000e+00 7900 2.2856000000e+00 1.3236000000e+00 7901 2.2577000000e+00 1.3379000000e+00 7902 2.2250000000e+00 1.3314000000e+00 7903 2.2111000000e+00 1.3634000000e+00 7904 2.1875000000e+00 1.3446000000e+00 7905 2.1537000000e+00 1.3612000000e+00 7906 2.1234000000e+00 1.3411000000e+00 7907 2.0894000000e+00 1.3588000000e+00 7908 2.0580000000e+00 1.3404000000e+00 7909 2.0263000000e+00 1.3614000000e+00 7910 1.9924000000e+00 1.3476000000e+00 7911 1.9593000000e+00 1.3337000000e+00 7912 1.9349000000e+00 1.3526000000e+00 7913 1.9004000000e+00 1.3543000000e+00 7914 1.8651000000e+00 1.3728000000e+00 7915 1.8588000000e+00 1.4073000000e+00 7916 1.8248000000e+00 1.4176000000e+00 7917 1.8148000000e+00 1.4512000000e+00 7918 1.7904000000e+00 1.4265000000e+00 7919 1.8013000000e+00 1.3929000000e+00 7920 1.7676000000e+00 1.4003000000e+00 7921 1.7787000000e+00 1.3672000000e+00 7922 1.8123000000e+00 1.3607000000e+00 7923 1.7915000000e+00 1.3341000000e+00 7924 1.7555000000e+00 1.3402000000e+00 7925 1.7443000000e+00 1.3749000000e+00 7926 1.7352000000e+00 1.4074000000e+00 7927 1.7045000000e+00 1.4170000000e+00 7928 1.7123000000e+00 1.3851000000e+00 7929 1.6824000000e+00 1.3941000000e+00 7930 2.3775000000e+00 3.6357000000e-01 7931 2.3950000000e+00 3.9383000000e-01 7932 2.4127000000e+00 4.2400000000e-01 7933 2.3774000000e+00 4.2434000000e-01 7934 2.3952000000e+00 4.5454000000e-01 7935 2.4304000000e+00 4.5399000000e-01 7936 2.4478000000e+00 4.2368000000e-01 7937 2.4827000000e+00 4.2347000000e-01 7938 2.5175000000e+00 4.2341000000e-01 7939 2.5523000000e+00 4.2349000000e-01 7940 2.5694000000e+00 4.5363000000e-01 7941 2.5862000000e+00 4.8386000000e-01 7942 2.6211000000e+00 4.8447000000e-01 7943 2.6563000000e+00 4.8503000000e-01 7944 2.6734000000e+00 5.1587000000e-01 7945 2.7090000000e+00 5.1630000000e-01 7946 2.7446000000e+00 5.1657000000e-01 7947 2.7802000000e+00 5.1678000000e-01 7948 2.8158000000e+00 5.1703000000e-01 7949 2.8514000000e+00 5.1733000000e-01 7950 2.8692000000e+00 4.8688000000e-01 7951 2.8869000000e+00 4.5643000000e-01 7952 2.8691000000e+00 4.2573000000e-01 7953 2.9045000000e+00 4.2600000000e-01 7954 2.9400000000e+00 4.2630000000e-01 7955 2.9575000000e+00 3.9586000000e-01 7956 2.9929000000e+00 3.9616000000e-01 7957 3.0284000000e+00 3.9649000000e-01 7958 3.0461000000e+00 3.6587000000e-01 7959 3.0818000000e+00 3.6582000000e-01 7960 3.1128000000e+00 3.6341000000e-01 7961 3.1519000000e+00 3.0332000000e-01 7962 1.0540000000e+00 1.1057000000e+00 7963 1.0565000000e+00 1.0704000000e+00 7964 1.0262000000e+00 1.0507000000e+00 7965 1.0260000000e+00 1.0155000000e+00 7966 1.0271000000e+00 9.8215000000e-01 7967 1.0299000000e+00 9.4843000000e-01 7968 1.0322000000e+00 9.1390000000e-01 7969 1.0636000000e+00 8.9989000000e-01 7970 1.0672000000e+00 8.6446000000e-01 7971 1.0701000000e+00 8.2830000000e-01 7972 1.0404000000e+00 8.0770000000e-01 7973 1.0425000000e+00 7.7167000000e-01 7974 1.0724000000e+00 7.9194000000e-01 7975 1.0743000000e+00 7.5556000000e-01 7976 1.0441000000e+00 7.3547000000e-01 7977 1.0127000000e+00 7.5176000000e-01 7978 9.8335000000e-01 7.3229000000e-01 7979 1.0138000000e+00 7.1597000000e-01 7980 1.0454000000e+00 6.9860000000e-01 7981 1.0761000000e+00 7.1914000000e-01 7982 1.0783000000e+00 6.8300000000e-01 7983 1.1083000000e+00 7.0283000000e-01 7984 1.1097000000e+00 6.6701000000e-01 7985 1.0811000000e+00 6.4839000000e-01 7986 1.0492000000e+00 6.6193000000e-01 7987 1.0110000000e+00 6.7597000000e-01 7988 9.8652000000e-01 7.0165000000e-01 7989 9.5353000000e-01 7.0910000000e-01 7990 9.2251000000e-01 7.0132000000e-01 7991 9.7093000000e-01 6.7484000000e-01 7992 9.8739000000e-01 6.4174000000e-01 7993 1.0235000000e+00 6.3694000000e-01 7994 1.0021000000e+00 6.0818000000e-01 7995 9.8289000000e-01 5.7774000000e-01 7996 9.9994000000e-01 5.4683000000e-01 7997 1.0177000000e+00 5.7722000000e-01 7998 1.0351000000e+00 5.4767000000e-01 7999 1.0183000000e+00 5.1575000000e-01 8000 1.0394000000e+00 4.8567000000e-01 8001 1.0786000000e+00 4.8799000000e-01 8002 1.1133000000e+00 4.7910000000e-01 8003 1.1496000000e+00 4.8133000000e-01 8004 1.1833000000e+00 5.0766000000e-01 8005 1.2081000000e+00 4.8730000000e-01 8006 1.2342000000e+00 4.8498000000e-01 8007 1.2465000000e+00 4.5899000000e-01 8008 1.2772000000e+00 4.5990000000e-01 8009 1.3098000000e+00 4.6020000000e-01 8010 1.2919000000e+00 4.9654000000e-01 8011 1.3254000000e+00 4.8417000000e-01 8012 1.3434000000e+00 4.6016000000e-01 8013 1.3565000000e+00 4.9545000000e-01 8014 1.3806000000e+00 5.2792000000e-01 8015 1.4022000000e+00 5.5881000000e-01 8016 1.4236000000e+00 5.8856000000e-01 8017 1.4448000000e+00 6.1629000000e-01 8018 1.4783000000e+00 6.1249000000e-01 8019 1.5125000000e+00 6.1050000000e-01 8020 1.5290000000e+00 5.7870000000e-01 8021 1.5452000000e+00 5.4640000000e-01 8022 1.5645000000e+00 5.7642000000e-01 8023 1.5808000000e+00 5.4379000000e-01 8024 1.6003000000e+00 5.7382000000e-01 8025 1.6163000000e+00 5.4099000000e-01 8026 1.6519000000e+00 5.3810000000e-01 8027 1.6677000000e+00 5.0537000000e-01 8028 1.6360000000e+00 5.7091000000e-01 8029 1.6715000000e+00 5.6794000000e-01 8030 1.6874000000e+00 5.3522000000e-01 8031 1.7032000000e+00 5.0253000000e-01 8032 1.7189000000e+00 4.6990000000e-01 8033 1.7228000000e+00 5.3246000000e-01 8034 1.7387000000e+00 4.9975000000e-01 8035 1.7546000000e+00 4.6654000000e-01 8036 1.7341000000e+00 4.3781000000e-01 8037 2.1489000000e+00 3.3340000000e-01 8038 2.1839000000e+00 3.3318000000e-01 8039 2.2190000000e+00 3.3315000000e-01 8040 2.2368000000e+00 3.0289000000e-01 8041 2.2012000000e+00 3.6330000000e-01 8042 2.2363000000e+00 3.6342000000e-01 8043 2.2542000000e+00 3.3319000000e-01 8044 2.2720000000e+00 3.0291000000e-01 8045 2.2546000000e+00 2.7259000000e-01 8046 2.2898000000e+00 2.7260000000e-01 8047 2.3076000000e+00 2.4230000000e-01 8048 2.3253000000e+00 2.1200000000e-01 8049 2.3078000000e+00 1.8169000000e-01 8050 2.3597000000e+00 3.9401000000e-01 8051 2.3419000000e+00 4.2459000000e-01 8052 2.3597000000e+00 4.5508000000e-01 8053 2.3778000000e+00 4.8540000000e-01 8054 2.3419000000e+00 4.8622000000e-01 8055 2.3605000000e+00 5.1683000000e-01 8056 2.3962000000e+00 5.1529000000e-01 8057 2.4131000000e+00 4.8447000000e-01 8058 2.4312000000e+00 5.1395000000e-01 8059 2.4480000000e+00 4.8371000000e-01 8060 2.4652000000e+00 4.5357000000e-01 8061 2.5000000000e+00 4.5336000000e-01 8062 2.5346000000e+00 4.5339000000e-01 8063 2.5515000000e+00 4.8335000000e-01 8064 2.5680000000e+00 5.1340000000e-01 8065 2.6027000000e+00 5.1432000000e-01 8066 2.6379000000e+00 5.1521000000e-01 8067 2.6548000000e+00 5.4634000000e-01 8068 2.6907000000e+00 5.4694000000e-01 8069 2.7265000000e+00 5.4720000000e-01 8070 2.7622000000e+00 5.4733000000e-01 8071 2.7979000000e+00 5.4750000000e-01 8072 2.8335000000e+00 5.4777000000e-01 8073 2.8692000000e+00 5.4818000000e-01 8074 2.8872000000e+00 5.1770000000e-01 8075 2.9049000000e+00 4.8721000000e-01 8076 2.9224000000e+00 4.5674000000e-01 8077 2.9579000000e+00 4.5708000000e-01 8078 2.9753000000e+00 4.2664000000e-01 8079 3.0107000000e+00 4.2703000000e-01 8080 3.0458000000e+00 4.2730000000e-01 8081 3.0645000000e+00 3.9695000000e-01 8082 3.1046000000e+00 3.9796000000e-01 8083 3.1120000000e+00 4.3623000000e-01 8084 3.1138000000e+00 4.6879000000e-01 8085 3.1113000000e+00 5.0221000000e-01 8086 3.1414000000e+00 5.2157000000e-01 8087 3.1412000000e+00 5.5755000000e-01 8088 3.1722000000e+00 5.7483000000e-01 8089 3.2001000000e+00 5.9353000000e-01 8090 3.1729000000e+00 6.0477000000e-01 8091 3.1525000000e+00 6.3291000000e-01 8092 3.1440000000e+00 6.6717000000e-01 8093 3.1508000000e+00 6.9703000000e-01 8094 3.1539000000e+00 7.3144000000e-01 8095 3.1256000000e+00 7.4853000000e-01 8096 3.1243000000e+00 7.8204000000e-01 8097 3.1231000000e+00 8.1768000000e-01 8098 3.1223000000e+00 8.5437000000e-01 8099 3.1226000000e+00 8.9139000000e-01 8100 3.1241000000e+00 9.2788000000e-01 8101 3.1259000000e+00 9.6346000000e-01 8102 3.1273000000e+00 9.9833000000e-01 8103 3.0980000000e+00 1.0162000000e+00 8104 3.0985000000e+00 1.0501000000e+00 8105 3.0981000000e+00 1.0841000000e+00 8106 3.0673000000e+00 1.1003000000e+00 8107 3.0651000000e+00 1.1354000000e+00 8108 3.0638000000e+00 1.1717000000e+00 8109 3.0315000000e+00 1.1901000000e+00 8110 3.0316000000e+00 1.2268000000e+00 8111 3.0000000000e+00 1.2461000000e+00 8112 3.0002000000e+00 1.2826000000e+00 8113 2.9685000000e+00 1.3024000000e+00 8114 2.9363000000e+00 1.3228000000e+00 8115 2.9365000000e+00 1.3606000000e+00 8116 2.9029000000e+00 1.3441000000e+00 8117 2.8720000000e+00 1.3257000000e+00 8118 2.8440000000e+00 1.3397000000e+00 8119 2.8159000000e+00 1.3319000000e+00 8120 2.7829000000e+00 1.3226000000e+00 8121 2.7483000000e+00 1.3139000000e+00 8122 2.7133000000e+00 1.3065000000e+00 8123 2.6873000000e+00 1.3340000000e+00 8124 2.6532000000e+00 1.3277000000e+00 8125 2.6188000000e+00 1.3220000000e+00 8126 2.5838000000e+00 1.3168000000e+00 8127 2.5480000000e+00 1.3119000000e+00 8128 2.5113000000e+00 1.3069000000e+00 8129 2.4739000000e+00 1.3017000000e+00 8130 2.4480000000e+00 1.3324000000e+00 8131 2.4100000000e+00 1.3280000000e+00 8132 2.3780000000e+00 1.3256000000e+00 8133 2.3496000000e+00 1.3072000000e+00 8134 2.3135000000e+00 1.3060000000e+00 8135 2.2864000000e+00 1.2857000000e+00 8136 2.2562000000e+00 1.3086000000e+00 8137 2.2277000000e+00 1.2926000000e+00 8138 2.1937000000e+00 1.3079000000e+00 8139 2.1582000000e+00 1.3239000000e+00 8140 2.1274000000e+00 1.3029000000e+00 8141 2.0920000000e+00 1.3210000000e+00 8142 2.0588000000e+00 1.3010000000e+00 8143 2.0241000000e+00 1.3232000000e+00 8144 1.9882000000e+00 1.3095000000e+00 8145 1.9529000000e+00 1.2995000000e+00 8146 1.9263000000e+00 1.3243000000e+00 8147 1.8918000000e+00 1.3153000000e+00 8148 1.8639000000e+00 1.3387000000e+00 8149 1.8406000000e+00 1.3571000000e+00 8150 1.8338000000e+00 1.3848000000e+00 8151 1.8282000000e+00 1.3282000000e+00 8152 1.8042000000e+00 1.3065000000e+00 8153 1.7699000000e+00 1.3019000000e+00 8154 1.7322000000e+00 1.3141000000e+00 8155 1.7165000000e+00 1.3489000000e+00 8156 1.6996000000e+00 1.3168000000e+00 8157 1.6912000000e+00 1.3681000000e+00 8158 1.6875000000e+00 1.2876000000e+00 8159 1.6529000000e+00 1.2798000000e+00 8160 1.6109000000e+00 1.2746000000e+00 8161 1.5770000000e+00 1.2847000000e+00 8162 1.5517000000e+00 1.3104000000e+00 8163 1.5386000000e+00 1.3507000000e+00 8164 1.5073000000e+00 1.3243000000e+00 8165 1.4895000000e+00 1.2894000000e+00 8166 1.5102000000e+00 1.2608000000e+00 8167 1.4953000000e+00 1.2283000000e+00 8168 1.5318000000e+00 1.2319000000e+00 8169 1.5166000000e+00 1.1983000000e+00 8170 1.4796000000e+00 1.1955000000e+00 8171 1.4429000000e+00 1.1939000000e+00 8172 1.4627000000e+00 1.1629000000e+00 8173 1.4259000000e+00 1.1621000000e+00 8174 1.3896000000e+00 1.1613000000e+00 8175 1.3726000000e+00 1.1295000000e+00 8176 1.3558000000e+00 1.0974000000e+00 8177 1.3188000000e+00 1.0960000000e+00 8178 1.2815000000e+00 1.0949000000e+00 8179 1.2619000000e+00 1.1266000000e+00 8180 1.2426000000e+00 1.1583000000e+00 8181 1.2605000000e+00 1.1906000000e+00 8182 1.2786000000e+00 1.2228000000e+00 8183 1.2412000000e+00 1.2226000000e+00 8184 1.2214000000e+00 1.2553000000e+00 8185 1.1980000000e+00 1.2908000000e+00 8186 1.1612000000e+00 1.3057000000e+00 8187 1.1281000000e+00 1.3139000000e+00 8188 1.1177000000e+00 1.3455000000e+00 8189 1.1056000000e+00 1.3759000000e+00 8190 1.0909000000e+00 1.4054000000e+00 8191 1.1092000000e+00 1.4343000000e+00 8192 1.1282000000e+00 1.4640000000e+00 8193 1.0927000000e+00 1.4656000000e+00 8194 1.0765000000e+00 1.4971000000e+00 8195 1.0415000000e+00 1.4994000000e+00 8196 1.0562000000e+00 1.4670000000e+00 8197 1.0741000000e+00 1.4354000000e+00 8198 1.0379000000e+00 1.4348000000e+00 8199 1.0575000000e+00 1.4052000000e+00 8200 1.0744000000e+00 1.3782000000e+00 8201 1.0438000000e+00 1.3755000000e+00 8202 1.0239000000e+00 1.4019000000e+00 8203 1.0013000000e+00 1.4295000000e+00 8204 1.0145000000e+00 1.4699000000e+00 8205 9.9467000000e-01 1.3988000000e+00 8206 9.6824000000e-01 1.4567000000e+00 8207 9.8330000000e-01 1.4967000000e+00 8208 1.0127000000e+00 1.5049000000e+00 8209 3.0800000000e+00 4.2830000000e-01 8210 3.0905000000e+00 4.5440000000e-01 8211 3.0841000000e+00 4.8176000000e-01 8212 3.0781000000e+00 5.1629000000e-01 8213 3.1084000000e+00 5.3851000000e-01 8214 3.1091000000e+00 5.7668000000e-01 8215 3.1436000000e+00 5.9359000000e-01 8216 3.1140000000e+00 6.1479000000e-01 8217 3.1169000000e+00 6.5105000000e-01 8218 3.1195000000e+00 6.8476000000e-01 8219 3.1240000000e+00 7.1676000000e-01 8220 3.1011000000e+00 7.3332000000e-01 8221 3.0955000000e+00 7.6177000000e-01 8222 3.0925000000e+00 7.9740000000e-01 8223 3.0905000000e+00 8.3450000000e-01 8224 3.0892000000e+00 8.7282000000e-01 8225 3.0908000000e+00 9.1100000000e-01 8226 3.0943000000e+00 9.4726000000e-01 8227 3.0966000000e+00 9.8205000000e-01 8228 3.0680000000e+00 1.0004000000e+00 8229 3.0693000000e+00 1.0337000000e+00 8230 3.0691000000e+00 1.0666000000e+00 8231 3.0397000000e+00 1.0814000000e+00 8232 3.0345000000e+00 1.1155000000e+00 8233 3.0317000000e+00 1.1527000000e+00 8234 2.9990000000e+00 1.1721000000e+00 8235 2.9991000000e+00 1.2093000000e+00 8236 2.9684000000e+00 1.2295000000e+00 8237 2.9686000000e+00 1.2655000000e+00 8238 2.9367000000e+00 1.2851000000e+00 8239 2.9043000000e+00 1.3056000000e+00 8240 2.8729000000e+00 1.2890000000e+00 8241 2.8429000000e+00 1.3097000000e+00 8242 2.8112000000e+00 1.2975000000e+00 8243 2.7765000000e+00 1.2861000000e+00 8244 2.7400000000e+00 1.2779000000e+00 8245 2.7041000000e+00 1.2722000000e+00 8246 2.6785000000e+00 1.3001000000e+00 8247 2.6438000000e+00 1.2940000000e+00 8248 2.6088000000e+00 1.2882000000e+00 8249 2.5732000000e+00 1.2825000000e+00 8250 2.5371000000e+00 1.2770000000e+00 8251 2.5003000000e+00 1.2714000000e+00 8252 2.4629000000e+00 1.2656000000e+00 8253 2.4354000000e+00 1.2963000000e+00 8254 2.3926000000e+00 1.2912000000e+00 8255 2.3623000000e+00 1.2723000000e+00 8256 2.3265000000e+00 1.2716000000e+00 8257 2.2984000000e+00 1.2547000000e+00 8258 2.2697000000e+00 1.2552000000e+00 8259 2.2552000000e+00 1.2801000000e+00 8260 2.2362000000e+00 1.2581000000e+00 8261 2.2002000000e+00 1.2694000000e+00 8262 2.1635000000e+00 1.2856000000e+00 8263 2.1322000000e+00 1.2636000000e+00 8264 2.0954000000e+00 1.2818000000e+00 8265 2.0625000000e+00 1.2603000000e+00 8266 2.0209000000e+00 1.2791000000e+00 8267 1.9798000000e+00 1.2737000000e+00 8268 1.9452000000e+00 1.2654000000e+00 8269 1.9187000000e+00 1.2901000000e+00 8270 1.8843000000e+00 1.2798000000e+00 8271 1.8572000000e+00 1.3041000000e+00 8272 1.8280000000e+00 1.2957000000e+00 8273 1.8035000000e+00 1.2724000000e+00 8274 1.7644000000e+00 1.2633000000e+00 8275 1.7380000000e+00 1.2828000000e+00 8276 1.7138000000e+00 1.2938000000e+00 8277 1.7117000000e+00 1.2677000000e+00 8278 1.6809000000e+00 1.2540000000e+00 8279 1.6411000000e+00 1.2390000000e+00 8280 1.6009000000e+00 1.2376000000e+00 8281 1.5809000000e+00 1.2597000000e+00 8282 1.5486000000e+00 1.2674000000e+00 8283 1.5214000000e+00 1.2905000000e+00 8284 1.5671000000e+00 1.2342000000e+00 8285 1.5529000000e+00 1.2022000000e+00 8286 1.5391000000e+00 1.1680000000e+00 8287 1.5008000000e+00 1.1638000000e+00 8288 1.4820000000e+00 1.1306000000e+00 8289 1.4449000000e+00 1.1313000000e+00 8290 1.4088000000e+00 1.1307000000e+00 8291 1.3922000000e+00 1.0990000000e+00 8292 1.3762000000e+00 1.0667000000e+00 8293 1.3391000000e+00 1.0645000000e+00 8294 1.3015000000e+00 1.0631000000e+00 8295 1.2639000000e+00 1.0620000000e+00 8296 1.2441000000e+00 1.0940000000e+00 8297 1.2247000000e+00 1.1259000000e+00 8298 1.2066000000e+00 1.0934000000e+00 8299 1.2260000000e+00 1.0611000000e+00 8300 1.1883000000e+00 1.0608000000e+00 8301 1.1692000000e+00 1.0931000000e+00 8302 1.1511000000e+00 1.0606000000e+00 8303 1.1314000000e+00 1.0927000000e+00 8304 1.1504000000e+00 1.1253000000e+00 8305 1.1875000000e+00 1.1254000000e+00 8306 1.1688000000e+00 1.1571000000e+00 8307 1.2055000000e+00 1.1577000000e+00 8308 1.2233000000e+00 1.1900000000e+00 8309 1.2039000000e+00 1.2217000000e+00 8310 1.1842000000e+00 1.2527000000e+00 8311 1.1660000000e+00 1.2765000000e+00 8312 1.1375000000e+00 1.2823000000e+00 8313 1.1051000000e+00 1.2895000000e+00 8314 1.0959000000e+00 1.3213000000e+00 8315 1.0868000000e+00 1.3511000000e+00 8316 1.0617000000e+00 1.3558000000e+00 8317 1.0377000000e+00 1.3444000000e+00 8318 1.0078000000e+00 1.3675000000e+00 8319 1.8796000000e+00 3.2474000000e-01 8320 1.8921000000e+00 2.9272000000e-01 8321 1.9179000000e+00 3.1810000000e-01 8322 1.9191000000e+00 2.8704000000e-01 8323 1.9454000000e+00 2.9519000000e-01 8324 1.9681000000e+00 2.7007000000e-01 8325 1.9885000000e+00 2.4070000000e-01 8326 2.0075000000e+00 2.1076000000e-01 8327 2.0241000000e+00 2.4206000000e-01 8328 2.0043000000e+00 2.7334000000e-01 8329 2.0415000000e+00 2.7369000000e-01 8330 2.0599000000e+00 3.0488000000e-01 8331 2.0787000000e+00 3.3516000000e-01 8332 2.1139000000e+00 3.3398000000e-01 8333 2.1315000000e+00 3.6357000000e-01 8334 2.1663000000e+00 3.6328000000e-01 8335 2.1833000000e+00 3.9324000000e-01 8336 2.2183000000e+00 3.9353000000e-01 8337 2.2535000000e+00 3.9383000000e-01 8338 2.2353000000e+00 4.2400000000e-01 8339 2.2707000000e+00 4.2444000000e-01 8340 2.2889000000e+00 3.9403000000e-01 8341 2.2716000000e+00 3.6356000000e-01 8342 2.2895000000e+00 3.3325000000e-01 8343 2.3073000000e+00 3.0293000000e-01 8344 2.3247000000e+00 3.3328000000e-01 8345 2.3422000000e+00 3.6364000000e-01 8346 2.3243000000e+00 3.9409000000e-01 8347 2.3063000000e+00 4.2465000000e-01 8348 2.3239000000e+00 4.5540000000e-01 8349 2.3056000000e+00 4.8658000000e-01 8350 2.3239000000e+00 5.1809000000e-01 8351 2.3432000000e+00 5.4927000000e-01 8352 2.3797000000e+00 5.4678000000e-01 8353 2.4149000000e+00 5.4439000000e-01 8354 2.4490000000e+00 5.4284000000e-01 8355 2.4655000000e+00 5.1307000000e-01 8356 2.4826000000e+00 4.8324000000e-01 8357 2.4996000000e+00 5.1266000000e-01 8358 2.5170000000e+00 4.8312000000e-01 8359 2.5337000000e+00 5.1277000000e-01 8360 2.5497000000e+00 5.4237000000e-01 8361 2.5839000000e+00 5.4381000000e-01 8362 2.6191000000e+00 5.4527000000e-01 8363 2.6356000000e+00 5.7695000000e-01 8364 2.6720000000e+00 5.7790000000e-01 8365 2.7083000000e+00 5.7812000000e-01 8366 2.7443000000e+00 5.7805000000e-01 8367 2.7799000000e+00 5.7802000000e-01 8368 2.8155000000e+00 5.7819000000e-01 8369 2.8512000000e+00 5.7857000000e-01 8370 2.8870000000e+00 5.7917000000e-01 8371 2.9052000000e+00 5.4866000000e-01 8372 2.9230000000e+00 5.1807000000e-01 8373 2.9405000000e+00 4.8754000000e-01 8374 2.9589000000e+00 5.1839000000e-01 8375 2.9760000000e+00 4.8788000000e-01 8376 2.9932000000e+00 4.5749000000e-01 8377 3.0286000000e+00 4.5815000000e-01 8378 3.0628000000e+00 4.5697000000e-01 8379 3.0481000000e+00 4.9193000000e-01 8380 3.0479000000e+00 5.2661000000e-01 8381 3.0691000000e+00 5.5679000000e-01 8382 3.0781000000e+00 5.9891000000e-01 8383 3.0837000000e+00 6.3562000000e-01 8384 3.0879000000e+00 6.7109000000e-01 8385 3.0932000000e+00 7.0553000000e-01 8386 3.0673000000e+00 7.3406000000e-01 8387 3.0622000000e+00 7.7533000000e-01 8388 3.0593000000e+00 8.1320000000e-01 8389 3.0563000000e+00 8.5160000000e-01 8390 3.0523000000e+00 8.9419000000e-01 8391 3.0621000000e+00 9.3255000000e-01 8392 3.0658000000e+00 9.6673000000e-01 8393 3.0381000000e+00 9.8554000000e-01 8394 3.0401000000e+00 1.0185000000e+00 8395 3.0417000000e+00 1.0503000000e+00 8396 3.0182000000e+00 1.0644000000e+00 8397 3.0072000000e+00 1.0919000000e+00 8398 2.9958000000e+00 1.1315000000e+00 8399 2.9715000000e+00 1.1579000000e+00 8400 2.9639000000e+00 1.1916000000e+00 8401 2.9410000000e+00 1.2172000000e+00 8402 2.9374000000e+00 1.2478000000e+00 8403 2.9047000000e+00 1.2670000000e+00 8404 2.8720000000e+00 1.2521000000e+00 8405 2.8411000000e+00 1.2744000000e+00 8406 2.8076000000e+00 1.2602000000e+00 8407 2.7689000000e+00 1.2445000000e+00 8408 2.7290000000e+00 1.2440000000e+00 8409 2.6945000000e+00 1.2386000000e+00 8410 2.6692000000e+00 1.2661000000e+00 8411 2.6342000000e+00 1.2599000000e+00 8412 2.5989000000e+00 1.2537000000e+00 8413 2.5630000000e+00 1.2477000000e+00 8414 2.5266000000e+00 1.2417000000e+00 8415 2.4899000000e+00 1.2356000000e+00 8416 2.4530000000e+00 1.2292000000e+00 8417 2.4248000000e+00 1.2591000000e+00 8418 2.3886000000e+00 1.2500000000e+00 8419 2.3543000000e+00 1.2414000000e+00 8420 2.3210000000e+00 1.2337000000e+00 8421 2.2886000000e+00 1.2273000000e+00 8422 2.2536000000e+00 1.2254000000e+00 8423 2.2108000000e+00 1.2258000000e+00 8424 2.1695000000e+00 1.2459000000e+00 8425 2.1373000000e+00 1.2237000000e+00 8426 2.0999000000e+00 1.2415000000e+00 8427 2.0681000000e+00 1.2213000000e+00 8428 2.0321000000e+00 1.2371000000e+00 8429 2.0008000000e+00 1.2486000000e+00 8430 1.9709000000e+00 1.2401000000e+00 8431 1.9375000000e+00 1.2322000000e+00 8432 1.9118000000e+00 1.2562000000e+00 8433 1.8795000000e+00 1.2459000000e+00 8434 1.8471000000e+00 1.2670000000e+00 8435 1.8238000000e+00 1.2367000000e+00 8436 1.7872000000e+00 1.2352000000e+00 8437 1.7517000000e+00 1.2318000000e+00 8438 1.7360000000e+00 1.2556000000e+00 8439 1.7143000000e+00 1.2324000000e+00 8440 1.6780000000e+00 1.2174000000e+00 8441 1.6464000000e+00 1.1980000000e+00 8442 1.6799000000e+00 1.1811000000e+00 8443 1.6490000000e+00 1.1611000000e+00 8444 1.6127000000e+00 1.1777000000e+00 8445 1.6178000000e+00 1.2117000000e+00 8446 1.5877000000e+00 1.2063000000e+00 8447 1.5750000000e+00 1.1745000000e+00 8448 1.5930000000e+00 1.1514000000e+00 8449 1.5644000000e+00 1.1416000000e+00 8450 1.5251000000e+00 1.1274000000e+00 8451 1.4964000000e+00 1.0971000000e+00 8452 1.4623000000e+00 1.1011000000e+00 8453 1.4279000000e+00 1.1005000000e+00 8454 1.4123000000e+00 1.0693000000e+00 8455 1.3974000000e+00 1.0368000000e+00 8456 1.3602000000e+00 1.0329000000e+00 8457 1.3220000000e+00 1.0308000000e+00 8458 1.2841000000e+00 1.0300000000e+00 8459 1.3041000000e+00 9.9866000000e-01 8460 1.2670000000e+00 9.9689000000e-01 8461 1.2460000000e+00 1.0287000000e+00 8462 1.2072000000e+00 1.0275000000e+00 8463 1.1695000000e+00 1.0286000000e+00 8464 1.1337000000e+00 1.0288000000e+00 8465 1.1148000000e+00 1.0596000000e+00 8466 1.0902000000e+00 1.0913000000e+00 8467 1.1129000000e+00 1.1261000000e+00 8468 1.0778000000e+00 1.1286000000e+00 8469 1.0948000000e+00 1.1614000000e+00 8470 1.1327000000e+00 1.1571000000e+00 8471 1.1500000000e+00 1.1879000000e+00 8472 1.1864000000e+00 1.1891000000e+00 8473 1.1667000000e+00 1.2203000000e+00 8474 1.1493000000e+00 1.2512000000e+00 8475 1.1151000000e+00 1.2567000000e+00 8476 1.1263000000e+00 1.2190000000e+00 8477 1.0906000000e+00 1.2329000000e+00 8478 1.0818000000e+00 1.2650000000e+00 8479 1.0720000000e+00 1.2977000000e+00 8480 1.0656000000e+00 1.3301000000e+00 8481 1.0394000000e+00 1.3100000000e+00 8482 1.0445000000e+00 1.2703000000e+00 8483 1.0634000000e+00 1.2431000000e+00 8484 1.0637000000e+00 1.2145000000e+00 8485 1.0931000000e+00 1.1990000000e+00 8486 1.0638000000e+00 1.1810000000e+00 8487 1.0840000000e+00 1.0562000000e+00 8488 1.0602000000e+00 1.0313000000e+00 8489 1.0507000000e+00 9.9944000000e-01 8490 1.0604000000e+00 9.6923000000e-01 8491 1.0601000000e+00 9.3379000000e-01 8492 1.0837000000e+00 9.4950000000e-01 8493 1.0907000000e+00 9.2171000000e-01 8494 1.0962000000e+00 8.8633000000e-01 8495 1.1002000000e+00 8.4954000000e-01 8496 1.1027000000e+00 8.1250000000e-01 8497 1.1046000000e+00 7.7577000000e-01 8498 1.1350000000e+00 7.9585000000e-01 8499 1.1365000000e+00 7.5937000000e-01 8500 1.1064000000e+00 7.3927000000e-01 8501 1.1386000000e+00 7.2283000000e-01 8502 1.1406000000e+00 6.8560000000e-01 8503 1.1399000000e+00 6.4915000000e-01 8504 1.1101000000e+00 6.3296000000e-01 8505 1.0837000000e+00 6.1674000000e-01 8506 1.0558000000e+00 6.2860000000e-01 8507 1.0353000000e+00 6.0516000000e-01 8508 1.0508000000e+00 5.7765000000e-01 8509 1.0693000000e+00 5.5018000000e-01 8510 1.0547000000e+00 5.1832000000e-01 8511 1.0878000000e+00 5.2256000000e-01 8512 1.1025000000e+00 5.5151000000e-01 8513 1.0852000000e+00 5.8327000000e-01 8514 1.1205000000e+00 5.7958000000e-01 8515 1.1349000000e+00 5.4914000000e-01 8516 1.1543000000e+00 5.7706000000e-01 8517 1.1685000000e+00 5.4435000000e-01 8518 1.1886000000e+00 5.7313000000e-01 8519 1.2037000000e+00 5.4101000000e-01 8520 1.1466000000e+00 5.1799000000e-01 8521 1.1171000000e+00 5.2424000000e-01 8522 1.1046000000e+00 5.0303000000e-01 8523 1.1262000000e+00 5.0115000000e-01 8524 1.1746000000e+00 6.0457000000e-01 8525 1.2079000000e+00 6.0131000000e-01 8526 1.1388000000e+00 6.1154000000e-01 8527 1.1645000000e+00 6.3248000000e-01 8528 1.1937000000e+00 6.3180000000e-01 8529 1.2261000000e+00 6.2862000000e-01 8530 1.2413000000e+00 5.9932000000e-01 8531 1.2229000000e+00 5.7037000000e-01 8532 1.2575000000e+00 5.6826000000e-01 8533 1.2756000000e+00 5.9857000000e-01 8534 1.2927000000e+00 5.6664000000e-01 8535 1.3114000000e+00 5.9817000000e-01 8536 1.3286000000e+00 5.6522000000e-01 8537 1.3095000000e+00 5.3412000000e-01 8538 1.2739000000e+00 5.3549000000e-01 8539 1.2385000000e+00 5.3913000000e-01 8540 1.2532000000e+00 5.0821000000e-01 8541 1.2201000000e+00 5.1139000000e-01 8542 1.9619000000e+00 1.2076000000e+00 8543 1.9299000000e+00 1.2003000000e+00 8544 1.9054000000e+00 1.2235000000e+00 8545 1.8748000000e+00 1.2143000000e+00 8546 1.8537000000e+00 1.2342000000e+00 8547 1.8432000000e+00 1.2070000000e+00 8548 1.8081000000e+00 1.2042000000e+00 8549 1.7719000000e+00 1.2030000000e+00 8550 1.7363000000e+00 1.2009000000e+00 8551 1.7053000000e+00 1.1996000000e+00 8552 1.7179000000e+00 1.1661000000e+00 8553 1.6829000000e+00 1.1442000000e+00 8554 1.6517000000e+00 1.1250000000e+00 8555 1.6203000000e+00 1.1408000000e+00 8556 1.5927000000e+00 1.1225000000e+00 8557 1.5619000000e+00 1.1057000000e+00 8558 1.5308000000e+00 1.0852000000e+00 8559 1.5025000000e+00 1.0632000000e+00 8560 1.4758000000e+00 1.0752000000e+00 8561 1.4470000000e+00 1.0717000000e+00 8562 1.4330000000e+00 1.0408000000e+00 8563 1.4199000000e+00 1.0084000000e+00 8564 1.3833000000e+00 1.0029000000e+00 8565 1.3433000000e+00 9.9535000000e-01 8566 1.3192000000e+00 9.7196000000e-01 8567 1.2888000000e+00 9.6666000000e-01 8568 1.2509000000e+00 9.6269000000e-01 8569 1.2280000000e+00 9.9434000000e-01 8570 1.1853000000e+00 9.9127000000e-01 8571 1.1512000000e+00 1.0027000000e+00 8572 1.1172000000e+00 9.9322000000e-01 8573 1.0982000000e+00 1.0280000000e+00 8574 1.0797000000e+00 9.9894000000e-01 8575 1.0914000000e+00 9.7228000000e-01 8576 1.1160000000e+00 9.5037000000e-01 8577 1.1247000000e+00 9.1023000000e-01 8578 1.1309000000e+00 8.7201000000e-01 8579 1.1341000000e+00 8.3346000000e-01 8580 1.1661000000e+00 8.1486000000e-01 8581 1.1661000000e+00 7.7896000000e-01 8582 1.1683000000e+00 7.4335000000e-01 8583 1.1716000000e+00 7.0640000000e-01 8584 1.2006000000e+00 7.2871000000e-01 8585 1.2057000000e+00 6.9252000000e-01 8586 1.1756000000e+00 6.6523000000e-01 8587 1.2136000000e+00 6.5849000000e-01 8588 1.1077000000e+00 6.0484000000e-01 8589 1.0622000000e+00 6.0230000000e-01 8590 1.1505000000e+00 9.7124000000e-01 8591 1.1540000000e+00 9.3425000000e-01 8592 1.1790000000e+00 9.5544000000e-01 8593 1.1932000000e+00 9.2148000000e-01 8594 1.1605000000e+00 8.9654000000e-01 8595 1.1697000000e+00 8.5580000000e-01 8596 1.1973000000e+00 8.2839000000e-01 8597 1.1942000000e+00 7.9651000000e-01 8598 1.1965000000e+00 7.6364000000e-01 8599 1.2281000000e+00 7.5069000000e-01 8600 1.2337000000e+00 7.1552000000e-01 8601 1.2389000000e+00 6.8065000000e-01 8602 1.2417000000e+00 6.5199000000e-01 8603 1.2582000000e+00 6.2871000000e-01 8604 1.2927000000e+00 6.3024000000e-01 8605 1.3297000000e+00 6.3087000000e-01 8606 1.3488000000e+00 5.9747000000e-01 8607 1.3652000000e+00 5.6263000000e-01 8608 1.3443000000e+00 5.3230000000e-01 8609 1.3255000000e+00 5.0851000000e-01 8610 1.2606000000e+00 4.8173000000e-01 8611 1.3868000000e+00 5.9407000000e-01 8612 1.4103000000e+00 6.2308000000e-01 8613 1.4337000000e+00 6.4748000000e-01 8614 1.4640000000e+00 6.4200000000e-01 8615 1.4958000000e+00 6.4093000000e-01 8616 1.4786000000e+00 6.6875000000e-01 8617 1.5113000000e+00 6.7101000000e-01 8618 1.5303000000e+00 6.4086000000e-01 8619 1.5478000000e+00 6.0900000000e-01 8620 1.5839000000e+00 6.0694000000e-01 8621 1.6200000000e+00 6.0397000000e-01 8622 1.6557000000e+00 6.0074000000e-01 8623 1.6400000000e+00 6.3359000000e-01 8624 1.6040000000e+00 6.3787000000e-01 8625 1.6252000000e+00 6.6607000000e-01 8626 1.6596000000e+00 6.6252000000e-01 8627 1.6755000000e+00 6.3040000000e-01 8628 1.6912000000e+00 5.9772000000e-01 8629 1.7070000000e+00 5.6507000000e-01 8630 1.7423000000e+00 5.6240000000e-01 8631 1.7582000000e+00 5.2995000000e-01 8632 1.7742000000e+00 4.9724000000e-01 8633 1.7938000000e+00 5.2773000000e-01 8634 1.8095000000e+00 4.9484000000e-01 8635 1.7900000000e+00 4.6478000000e-01 8636 1.8244000000e+00 4.6267000000e-01 8637 1.8451000000e+00 4.9162000000e-01 8638 1.8596000000e+00 4.5795000000e-01 8639 1.8364000000e+00 4.2940000000e-01 8640 1.8058000000e+00 4.3756000000e-01 8641 3.0506000000e+00 6.2155000000e-01 8642 3.0548000000e+00 6.5642000000e-01 8643 3.0595000000e+00 6.9326000000e-01 8644 3.0289000000e+00 7.1539000000e-01 8645 3.0303000000e+00 7.5395000000e-01 8646 3.0285000000e+00 7.9169000000e-01 8647 3.0255000000e+00 8.2879000000e-01 8648 3.0211000000e+00 8.6621000000e-01 8649 3.0132000000e+00 9.0176000000e-01 8650 3.0335000000e+00 9.2358000000e-01 8651 3.0355000000e+00 9.5268000000e-01 8652 3.0087000000e+00 9.7097000000e-01 8653 3.0101000000e+00 1.0041000000e+00 8654 3.0133000000e+00 1.0372000000e+00 8655 2.9888000000e+00 1.0614000000e+00 8656 2.9659000000e+00 1.0972000000e+00 8657 2.9606000000e+00 1.1337000000e+00 8658 2.9377000000e+00 1.1608000000e+00 8659 2.9304000000e+00 1.1947000000e+00 8660 2.9046000000e+00 1.2226000000e+00 8661 2.8681000000e+00 1.2219000000e+00 8662 2.8402000000e+00 1.2380000000e+00 8663 2.8072000000e+00 1.2211000000e+00 8664 2.7748000000e+00 1.2038000000e+00 8665 2.7473000000e+00 1.2188000000e+00 8666 2.7189000000e+00 1.2124000000e+00 8667 2.6858000000e+00 1.2049000000e+00 8668 2.6600000000e+00 1.2320000000e+00 8669 2.6248000000e+00 1.2253000000e+00 8670 2.5891000000e+00 1.2187000000e+00 8671 2.5530000000e+00 1.2124000000e+00 8672 2.5165000000e+00 1.2061000000e+00 8673 2.4800000000e+00 1.1998000000e+00 8674 2.4438000000e+00 1.1932000000e+00 8675 2.4165000000e+00 1.2220000000e+00 8676 2.3810000000e+00 1.2142000000e+00 8677 2.3464000000e+00 1.2067000000e+00 8678 2.3120000000e+00 1.2001000000e+00 8679 2.2769000000e+00 1.1949000000e+00 8680 2.2397000000e+00 1.1907000000e+00 8681 2.2031000000e+00 1.1841000000e+00 8682 2.1733000000e+00 1.2070000000e+00 8683 2.1450000000e+00 1.1862000000e+00 8684 2.1744000000e+00 1.1762000000e+00 8685 2.1581000000e+00 1.1529000000e+00 8686 2.1226000000e+00 1.1592000000e+00 8687 2.1042000000e+00 1.1979000000e+00 8688 2.0701000000e+00 1.1901000000e+00 8689 2.0399000000e+00 1.2005000000e+00 8690 2.0004000000e+00 1.2125000000e+00 8691 1.9810000000e+00 1.1792000000e+00 8692 1.9514000000e+00 1.1811000000e+00 8693 1.9242000000e+00 1.1650000000e+00 8694 1.8990000000e+00 1.1919000000e+00 8695 1.8679000000e+00 1.1829000000e+00 8696 1.8313000000e+00 1.1695000000e+00 8697 1.7912000000e+00 1.1734000000e+00 8698 1.7569000000e+00 1.1722000000e+00 8699 1.7484000000e+00 1.1398000000e+00 8700 1.7158000000e+00 1.1247000000e+00 8701 1.6833000000e+00 1.1069000000e+00 8702 1.6525000000e+00 1.0902000000e+00 8703 1.6225000000e+00 1.1069000000e+00 8704 1.5939000000e+00 1.0887000000e+00 8705 1.5645000000e+00 1.0685000000e+00 8706 1.5346000000e+00 1.0490000000e+00 8707 1.5064000000e+00 1.0293000000e+00 8708 1.4708000000e+00 1.0430000000e+00 8709 1.4504000000e+00 1.0154000000e+00 8710 1.4484000000e+00 9.7924000000e-01 8711 1.4071000000e+00 9.7485000000e-01 8712 1.3718000000e+00 9.6879000000e-01 8713 1.3426000000e+00 9.6120000000e-01 8714 1.3173000000e+00 9.3769000000e-01 8715 1.2747000000e+00 9.3183000000e-01 8716 1.2352000000e+00 9.2736000000e-01 8717 1.2119000000e+00 9.5880000000e-01 8718 1.2215000000e+00 8.9240000000e-01 8719 1.1907000000e+00 8.8526000000e-01 8720 1.2085000000e+00 8.5985000000e-01 8721 1.2285000000e+00 8.3348000000e-01 8722 1.2170000000e+00 8.0957000000e-01 8723 1.2221000000e+00 7.8343000000e-01 8724 1.2535000000e+00 7.7410000000e-01 8725 1.2620000000e+00 7.3854000000e-01 8726 1.2670000000e+00 7.0182000000e-01 8727 1.2719000000e+00 6.6341000000e-01 8728 1.3098000000e+00 6.6163000000e-01 8729 1.2948000000e+00 6.8871000000e-01 8730 1.3249000000e+00 6.9266000000e-01 8731 1.3447000000e+00 6.6381000000e-01 8732 1.3709000000e+00 6.3385000000e-01 8733 1.4021000000e+00 6.5824000000e-01 8734 1.4285000000e+00 6.7917000000e-01 8735 1.4525000000e+00 6.6608000000e-01 8736 1.4576000000e+00 6.9294000000e-01 8737 1.4905000000e+00 6.9951000000e-01 8738 1.5255000000e+00 7.0287000000e-01 8739 1.5471000000e+00 6.7309000000e-01 8740 1.5611000000e+00 7.0710000000e-01 8741 1.5879000000e+00 6.7607000000e-01 8742 1.5669000000e+00 6.4063000000e-01 8743 3.0423000000e+00 5.8809000000e-01 8744 3.0230000000e+00 6.1044000000e-01 8745 3.0219000000e+00 6.3993000000e-01 8746 3.0250000000e+00 6.7718000000e-01 8747 2.9942000000e+00 6.9839000000e-01 8748 2.9970000000e+00 7.3562000000e-01 8749 2.9978000000e+00 7.7178000000e-01 8750 2.9958000000e+00 8.0729000000e-01 8751 2.9920000000e+00 8.4292000000e-01 8752 2.9869000000e+00 8.7818000000e-01 8753 2.9809000000e+00 9.1170000000e-01 8754 3.0044000000e+00 9.3689000000e-01 8755 2.9841000000e+00 9.5912000000e-01 8756 2.9798000000e+00 9.8772000000e-01 8757 2.9804000000e+00 1.0249000000e+00 8758 2.9473000000e+00 1.0531000000e+00 8759 2.9293000000e+00 1.0876000000e+00 8760 2.9317000000e+00 1.1213000000e+00 8761 2.9014000000e+00 1.1450000000e+00 8762 2.9043000000e+00 1.1818000000e+00 8763 2.8789000000e+00 1.1987000000e+00 8764 2.8446000000e+00 1.1984000000e+00 8765 2.8071000000e+00 1.1821000000e+00 8766 2.7734000000e+00 1.1672000000e+00 8767 2.7445000000e+00 1.1892000000e+00 8768 2.7122000000e+00 1.1790000000e+00 8769 2.6779000000e+00 1.1701000000e+00 8770 2.6511000000e+00 1.1973000000e+00 8771 2.6156000000e+00 1.1901000000e+00 8772 2.5794000000e+00 1.1832000000e+00 8773 2.5430000000e+00 1.1768000000e+00 8774 2.5066000000e+00 1.1706000000e+00 8775 2.4704000000e+00 1.1643000000e+00 8776 2.4346000000e+00 1.1577000000e+00 8777 2.4079000000e+00 1.1861000000e+00 8778 2.3726000000e+00 1.1790000000e+00 8779 2.3374000000e+00 1.1721000000e+00 8780 2.3019000000e+00 1.1658000000e+00 8781 2.2655000000e+00 1.1599000000e+00 8782 2.2283000000e+00 1.1541000000e+00 8783 2.1923000000e+00 1.1506000000e+00 8784 2.1753000000e+00 1.1205000000e+00 8785 2.1392000000e+00 1.1244000000e+00 8786 2.1030000000e+00 1.1300000000e+00 8787 2.0865000000e+00 1.1632000000e+00 8788 2.0519000000e+00 1.1672000000e+00 8789 2.0166000000e+00 1.1743000000e+00 8790 1.9954000000e+00 1.1462000000e+00 8791 1.9603000000e+00 1.1529000000e+00 8792 1.9365000000e+00 1.1272000000e+00 8793 1.9007000000e+00 1.1363000000e+00 8794 1.8918000000e+00 1.1651000000e+00 8795 1.8672000000e+00 1.1490000000e+00 8796 1.8378000000e+00 1.1281000000e+00 8797 1.8036000000e+00 1.1415000000e+00 8798 1.7755000000e+00 1.1497000000e+00 8799 1.7772000000e+00 1.1216000000e+00 8800 1.7473000000e+00 1.1045000000e+00 8801 1.7794000000e+00 1.0871000000e+00 8802 1.7484000000e+00 1.0671000000e+00 8803 1.7148000000e+00 1.0864000000e+00 8804 1.6818000000e+00 1.0710000000e+00 8805 1.6515000000e+00 1.0572000000e+00 8806 1.6240000000e+00 1.0739000000e+00 8807 1.5976000000e+00 1.0545000000e+00 8808 1.5684000000e+00 1.0282000000e+00 8809 1.5351000000e+00 1.0192000000e+00 8810 1.5154000000e+00 9.9621000000e-01 8811 1.4803000000e+00 1.0053000000e+00 8812 1.4906000000e+00 9.6820000000e-01 8813 1.4644000000e+00 9.3905000000e-01 8814 1.4258000000e+00 9.4337000000e-01 8815 1.3933000000e+00 9.4620000000e-01 8816 1.3615000000e+00 9.3199000000e-01 8817 1.3366000000e+00 9.0028000000e-01 8818 1.2976000000e+00 8.9960000000e-01 8819 1.2586000000e+00 8.9669000000e-01 8820 1.2431000000e+00 8.6354000000e-01 8821 1.2617000000e+00 8.3344000000e-01 8822 1.2433000000e+00 8.0585000000e-01 8823 1.2768000000e+00 8.0085000000e-01 8824 1.2890000000e+00 7.6500000000e-01 8825 1.3007000000e+00 7.2394000000e-01 8826 1.3267000000e+00 7.5736000000e-01 8827 1.3408000000e+00 7.2330000000e-01 8828 1.3585000000e+00 6.9441000000e-01 8829 1.3742000000e+00 6.6936000000e-01 8830 1.3950000000e+00 6.9644000000e-01 8831 1.4301000000e+00 7.1380000000e-01 8832 1.4656000000e+00 7.3027000000e-01 8833 1.5045000000e+00 7.3113000000e-01 8834 1.5383000000e+00 7.3531000000e-01 8835 1.5724000000e+00 7.4123000000e-01 8836 1.5950000000e+00 7.1396000000e-01 8837 1.6158000000e+00 6.9370000000e-01 8838 1.6441000000e+00 6.9267000000e-01 8839 1.6778000000e+00 6.9208000000e-01 8840 1.6950000000e+00 6.6032000000e-01 8841 1.7111000000e+00 6.2750000000e-01 8842 1.7266000000e+00 5.9477000000e-01 8843 1.7614000000e+00 5.9197000000e-01 8844 1.7775000000e+00 5.6026000000e-01 8845 1.8136000000e+00 5.5910000000e-01 8846 1.8297000000e+00 5.2513000000e-01 8847 1.8505000000e+00 5.5607000000e-01 8848 1.8658000000e+00 5.2153000000e-01 8849 1.8813000000e+00 4.8770000000e-01 8850 1.8970000000e+00 4.5309000000e-01 8851 1.8733000000e+00 4.2336000000e-01 8852 1.8490000000e+00 3.9392000000e-01 8853 1.8645000000e+00 3.5869000000e-01 8854 1.9016000000e+00 3.5380000000e-01 8855 1.9370000000e+00 3.5014000000e-01 8856 1.9505000000e+00 3.2323000000e-01 8857 1.9812000000e+00 3.0755000000e-01 8858 2.0227000000e+00 3.0604000000e-01 8859 2.0429000000e+00 3.3706000000e-01 8860 2.0062000000e+00 3.3984000000e-01 8861 2.0274000000e+00 3.6986000000e-01 8862 2.0625000000e+00 3.6667000000e-01 8863 2.0479000000e+00 3.9917000000e-01 8864 2.0812000000e+00 3.9433000000e-01 8865 2.0971000000e+00 3.6448000000e-01 8866 2.1145000000e+00 3.9323000000e-01 8867 2.1486000000e+00 3.9307000000e-01 8868 2.1653000000e+00 4.2285000000e-01 8869 2.2002000000e+00 4.2343000000e-01 8870 2.2168000000e+00 4.5398000000e-01 8871 2.1818000000e+00 4.5302000000e-01 8872 2.1981000000e+00 4.8360000000e-01 8873 2.2334000000e+00 4.8504000000e-01 8874 2.2523000000e+00 4.5482000000e-01 8875 2.2881000000e+00 4.5534000000e-01 8876 2.3069000000e+00 3.6364000000e-01 8877 2.0680000000e+00 4.2081000000e-01 8878 2.0975000000e+00 4.2171000000e-01 8879 2.1310000000e+00 4.2230000000e-01 8880 2.1472000000e+00 4.5206000000e-01 8881 2.1127000000e+00 4.5094000000e-01 8882 2.0776000000e+00 4.4867000000e-01 8883 2.0940000000e+00 4.7990000000e-01 8884 2.0578000000e+00 4.7845000000e-01 8885 2.0762000000e+00 5.1006000000e-01 8886 2.0412000000e+00 5.1096000000e-01 8887 2.0223000000e+00 4.8095000000e-01 8888 2.0066000000e+00 5.1286000000e-01 8889 2.0249000000e+00 5.4253000000e-01 8890 2.0596000000e+00 5.4098000000e-01 8891 2.0939000000e+00 5.3987000000e-01 8892 2.1109000000e+00 5.1025000000e-01 8893 2.1288000000e+00 4.8107000000e-01 8894 2.1633000000e+00 4.8223000000e-01 8895 2.1450000000e+00 5.1106000000e-01 8896 2.1791000000e+00 5.1261000000e-01 8897 2.2139000000e+00 5.1474000000e-01 8898 2.2498000000e+00 5.1696000000e-01 8899 2.2290000000e+00 5.4694000000e-01 8900 2.2663000000e+00 5.5064000000e-01 8901 2.2867000000e+00 5.1830000000e-01 8902 2.2693000000e+00 4.8617000000e-01 8903 2.3052000000e+00 5.5141000000e-01 8904 2.3262000000e+00 5.8300000000e-01 8905 2.3638000000e+00 5.7960000000e-01 8906 2.3997000000e+00 5.7538000000e-01 8907 2.4334000000e+00 5.7219000000e-01 8908 2.4664000000e+00 5.7151000000e-01 8909 2.4827000000e+00 5.4207000000e-01 8910 2.5161000000e+00 5.4175000000e-01 8911 2.4993000000e+00 5.7066000000e-01 8912 2.5316000000e+00 5.7008000000e-01 8913 2.5646000000e+00 5.7252000000e-01 8914 2.5995000000e+00 5.7507000000e-01 8915 2.5786000000e+00 6.0432000000e-01 8916 2.6152000000e+00 6.0769000000e-01 8917 2.6527000000e+00 6.0951000000e-01 8918 2.6899000000e+00 6.0966000000e-01 8919 2.7263000000e+00 6.0910000000e-01 8920 2.7621000000e+00 6.0866000000e-01 8921 2.7976000000e+00 6.0856000000e-01 8922 2.8330000000e+00 6.0884000000e-01 8923 2.8686000000e+00 6.0945000000e-01 8924 2.9046000000e+00 6.1042000000e-01 8925 2.9235000000e+00 5.7993000000e-01 8926 2.9415000000e+00 5.4907000000e-01 8927 2.9779000000e+00 5.4928000000e-01 8928 2.9947000000e+00 5.1863000000e-01 8929 3.0108000000e+00 4.8826000000e-01 8930 3.0243000000e+00 5.1557000000e-01 8931 3.0201000000e+00 5.5252000000e-01 8932 3.0129000000e+00 5.8843000000e-01 8933 2.9873000000e+00 6.1430000000e-01 8934 2.9908000000e+00 6.5984000000e-01 8935 2.9604000000e+00 6.8283000000e-01 8936 2.9634000000e+00 7.1965000000e-01 8937 2.9676000000e+00 7.5477000000e-01 8938 2.9675000000e+00 7.8755000000e-01 8939 2.9636000000e+00 8.2118000000e-01 8940 2.9592000000e+00 8.5608000000e-01 8941 2.9549000000e+00 8.9062000000e-01 8942 2.9512000000e+00 9.2429000000e-01 8943 2.9747000000e+00 9.3867000000e-01 8944 2.9526000000e+00 9.6155000000e-01 8945 2.9428000000e+00 1.0060000000e+00 8946 2.9170000000e+00 1.0319000000e+00 8947 2.9065000000e+00 1.0632000000e+00 8948 2.8950000000e+00 1.1037000000e+00 8949 2.8668000000e+00 1.1334000000e+00 8950 2.8724000000e+00 1.1692000000e+00 8951 2.8382000000e+00 1.1581000000e+00 8952 2.8039000000e+00 1.1442000000e+00 8953 2.7699000000e+00 1.1300000000e+00 8954 2.7401000000e+00 1.1542000000e+00 8955 2.7057000000e+00 1.1434000000e+00 8956 2.6701000000e+00 1.1342000000e+00 8957 2.6425000000e+00 1.1619000000e+00 8958 2.6063000000e+00 1.1542000000e+00 8959 2.5695000000e+00 1.1472000000e+00 8960 2.5328000000e+00 1.1413000000e+00 8961 2.4966000000e+00 1.1355000000e+00 8962 2.4609000000e+00 1.1293000000e+00 8963 2.4254000000e+00 1.1226000000e+00 8964 2.3990000000e+00 1.1508000000e+00 8965 2.3636000000e+00 1.1439000000e+00 8966 2.3280000000e+00 1.1371000000e+00 8967 2.2918000000e+00 1.1304000000e+00 8968 2.2546000000e+00 1.1236000000e+00 8969 2.2145000000e+00 1.1155000000e+00 8970 2.1907000000e+00 1.0924000000e+00 8971 2.1572000000e+00 1.0870000000e+00 8972 2.1189000000e+00 1.0967000000e+00 8973 2.0834000000e+00 1.1014000000e+00 8974 2.0672000000e+00 1.1347000000e+00 8975 2.0313000000e+00 1.1400000000e+00 8976 2.0100000000e+00 1.1115000000e+00 8977 1.9732000000e+00 1.1186000000e+00 8978 1.9495000000e+00 1.0908000000e+00 8979 1.9112000000e+00 1.0994000000e+00 8980 1.8735000000e+00 1.1119000000e+00 8981 1.8427000000e+00 1.0900000000e+00 8982 1.8088000000e+00 1.1066000000e+00 8983 1.8119000000e+00 1.0711000000e+00 8984 1.7827000000e+00 1.0514000000e+00 8985 1.7534000000e+00 1.0289000000e+00 8986 1.7125000000e+00 1.0440000000e+00 8987 1.6763000000e+00 1.0409000000e+00 8988 1.6482000000e+00 1.0212000000e+00 8989 1.6260000000e+00 1.0457000000e+00 8990 1.6089000000e+00 1.0217000000e+00 8991 1.6253000000e+00 9.8856000000e-01 8992 1.5876000000e+00 9.9167000000e-01 8993 1.5507000000e+00 9.9296000000e-01 8994 1.5296000000e+00 9.6216000000e-01 8995 1.5054000000e+00 9.2703000000e-01 8996 1.4746000000e+00 9.0734000000e-01 8997 1.4417000000e+00 9.0889000000e-01 8998 1.4003000000e+00 9.1175000000e-01 8999 1.3687000000e+00 8.9772000000e-01 9000 1.3560000000e+00 8.6869000000e-01 9001 1.3186000000e+00 8.6570000000e-01 9002 1.2797000000e+00 8.6512000000e-01 9003 1.2990000000e+00 8.3151000000e-01 9004 1.3144000000e+00 7.9498000000e-01 9005 1.3521000000e+00 7.8624000000e-01 9006 1.3630000000e+00 7.5049000000e-01 9007 1.3868000000e+00 7.7592000000e-01 9008 1.3793000000e+00 8.0976000000e-01 9009 1.4064000000e+00 7.9778000000e-01 9010 1.4199000000e+00 7.7188000000e-01 9011 1.4000000000e+00 7.3917000000e-01 9012 1.3714000000e+00 7.2079000000e-01 9013 1.4339000000e+00 7.4470000000e-01 9014 1.4541000000e+00 7.6823000000e-01 9015 1.4888000000e+00 7.6147000000e-01 9016 1.5184000000e+00 7.5726000000e-01 9017 1.5479000000e+00 7.7215000000e-01 9018 1.5859000000e+00 7.7287000000e-01 9019 1.6063000000e+00 7.4586000000e-01 9020 1.6267000000e+00 7.1971000000e-01 9021 1.6593000000e+00 7.2188000000e-01 9022 1.6942000000e+00 7.2337000000e-01 9023 1.7143000000e+00 6.9164000000e-01 9024 1.7317000000e+00 6.5779000000e-01 9025 1.7463000000e+00 6.2402000000e-01 9026 1.7798000000e+00 6.1994000000e-01 9027 1.7674000000e+00 6.5217000000e-01 9028 1.7998000000e+00 6.4423000000e-01 9029 1.8081000000e+00 6.1676000000e-01 9030 1.7958000000e+00 5.9050000000e-01 9031 1.8342000000e+00 5.9501000000e-01 9032 1.8733000000e+00 5.8476000000e-01 9033 1.8865000000e+00 5.5094000000e-01 9034 1.9063000000e+00 5.7816000000e-01 9035 1.9211000000e+00 5.4732000000e-01 9036 1.9392000000e+00 5.7615000000e-01 9037 1.9228000000e+00 6.0518000000e-01 9038 1.9559000000e+00 6.0571000000e-01 9039 1.9734000000e+00 5.7518000000e-01 9040 1.9556000000e+00 5.4540000000e-01 9041 1.9374000000e+00 5.1547000000e-01 9042 1.9017000000e+00 5.1786000000e-01 9043 1.9184000000e+00 4.8426000000e-01 9044 1.9383000000e+00 4.4783000000e-01 9045 1.9108000000e+00 4.1758000000e-01 9046 1.9459000000e+00 4.1006000000e-01 9047 1.9234000000e+00 3.8291000000e-01 9048 1.8871000000e+00 3.8835000000e-01 9049 1.9580000000e+00 3.7767000000e-01 9050 1.9709000000e+00 3.4528000000e-01 9051 1.9923000000e+00 3.7335000000e-01 9052 2.0128000000e+00 4.0318000000e-01 9053 1.9784000000e+00 4.0439000000e-01 9054 1.9952000000e+00 4.3212000000e-01 9055 1.9665000000e+00 4.3009000000e-01 9056 1.9745000000e+00 4.5615000000e-01 9057 2.0033000000e+00 4.5877000000e-01 9058 2.0356000000e+00 4.4025000000e-01 9059 1.9890000000e+00 4.8445000000e-01 9060 1.9723000000e+00 5.1432000000e-01 9061 1.9902000000e+00 5.4405000000e-01 9062 2.0083000000e+00 5.7405000000e-01 9063 2.0433000000e+00 5.7231000000e-01 9064 2.0779000000e+00 5.7018000000e-01 9065 2.1113000000e+00 5.6824000000e-01 9066 2.1274000000e+00 5.3957000000e-01 9067 2.1604000000e+00 5.4070000000e-01 9068 2.1940000000e+00 5.4336000000e-01 9069 2.2072000000e+00 5.7493000000e-01 9070 2.2428000000e+00 5.8108000000e-01 9071 2.2845000000e+00 5.8926000000e-01 9072 2.3126000000e+00 6.1213000000e-01 9073 2.3479000000e+00 6.1646000000e-01 9074 2.3857000000e+00 6.0686000000e-01 9075 2.4203000000e+00 6.0262000000e-01 9076 2.4501000000e+00 5.9652000000e-01 9077 2.4835000000e+00 6.0490000000e-01 9078 2.5155000000e+00 5.9376000000e-01 9079 2.5441000000e+00 5.9955000000e-01 9080 2.5551000000e+00 6.3303000000e-01 9081 2.5929000000e+00 6.3819000000e-01 9082 2.6319000000e+00 6.4224000000e-01 9083 2.6712000000e+00 6.4275000000e-01 9084 2.7087000000e+00 6.4075000000e-01 9085 2.6923000000e+00 6.7317000000e-01 9086 2.7279000000e+00 6.7049000000e-01 9087 2.7124000000e+00 7.0137000000e-01 9088 2.7465000000e+00 6.9922000000e-01 9089 2.7310000000e+00 7.2890000000e-01 9090 2.7642000000e+00 7.2738000000e-01 9091 2.7804000000e+00 6.9822000000e-01 9092 2.7628000000e+00 6.6915000000e-01 9093 2.7447000000e+00 6.3948000000e-01 9094 1.1194000000e+00 1.1849000000e+00 9095 2.7485000000e+00 7.5621000000e-01 9096 2.7814000000e+00 7.5519000000e-01 9097 2.7973000000e+00 7.2674000000e-01 9098 2.8142000000e+00 6.9829000000e-01 9099 2.7974000000e+00 6.6875000000e-01 9100 2.7800000000e+00 6.3889000000e-01 9101 2.8151000000e+00 6.3893000000e-01 9102 2.8503000000e+00 6.3950000000e-01 9103 2.8856000000e+00 6.4038000000e-01 9104 2.9206000000e+00 6.4161000000e-01 9105 2.9420000000e+00 6.1216000000e-01 9106 2.9607000000e+00 5.8025000000e-01 9107 2.9918000000e+00 5.7693000000e-01 9108 2.9557000000e+00 6.4661000000e-01 9109 2.9330000000e+00 6.6911000000e-01 9110 2.9255000000e+00 7.0354000000e-01 9111 2.9356000000e+00 7.4297000000e-01 9112 2.9442000000e+00 7.7123000000e-01 9113 2.9362000000e+00 7.9928000000e-01 9114 2.9305000000e+00 8.3421000000e-01 9115 2.9273000000e+00 8.6961000000e-01 9116 2.9236000000e+00 9.0411000000e-01 9117 2.9201000000e+00 9.3936000000e-01 9118 2.9151000000e+00 9.7601000000e-01 9119 2.9074000000e+00 1.0068000000e+00 9120 2.8808000000e+00 1.0309000000e+00 9121 2.8691000000e+00 1.0722000000e+00 9122 2.8597000000e+00 1.1033000000e+00 9123 2.8339000000e+00 1.1217000000e+00 9124 2.8009000000e+00 1.1061000000e+00 9125 2.7658000000e+00 1.0918000000e+00 9126 2.7348000000e+00 1.1167000000e+00 9127 2.6984000000e+00 1.1063000000e+00 9128 2.6619000000e+00 1.0980000000e+00 9129 2.6339000000e+00 1.1256000000e+00 9130 2.5966000000e+00 1.1171000000e+00 9131 2.5588000000e+00 1.1110000000e+00 9132 2.5221000000e+00 1.1066000000e+00 9133 2.4867000000e+00 1.1010000000e+00 9134 2.4516000000e+00 1.0946000000e+00 9135 2.4163000000e+00 1.0877000000e+00 9136 2.3900000000e+00 1.1157000000e+00 9137 2.3544000000e+00 1.1087000000e+00 9138 2.3185000000e+00 1.1017000000e+00 9139 2.2821000000e+00 1.0944000000e+00 9140 2.2454000000e+00 1.0869000000e+00 9141 2.2151000000e+00 1.0805000000e+00 9142 2.1913000000e+00 1.0583000000e+00 9143 2.1546000000e+00 1.0483000000e+00 9144 2.1304000000e+00 1.0681000000e+00 9145 2.1002000000e+00 1.0691000000e+00 9146 2.0640000000e+00 1.0716000000e+00 9147 2.0469000000e+00 1.1059000000e+00 9148 2.0257000000e+00 1.0757000000e+00 9149 1.9873000000e+00 1.0824000000e+00 9150 1.9635000000e+00 1.0550000000e+00 9151 1.9255000000e+00 1.0617000000e+00 9152 1.8812000000e+00 1.0681000000e+00 9153 1.8430000000e+00 1.0536000000e+00 9154 1.8145000000e+00 1.0374000000e+00 9155 1.7887000000e+00 1.0164000000e+00 9156 1.7627000000e+00 9.9186000000e-01 9157 1.7253000000e+00 1.0025000000e+00 9158 1.6873000000e+00 1.0111000000e+00 9159 1.6624000000e+00 9.8311000000e-01 9160 1.6400000000e+00 9.5522000000e-01 9161 1.6047000000e+00 9.5824000000e-01 9162 1.6218000000e+00 9.2618000000e-01 9163 1.5857000000e+00 9.2745000000e-01 9164 1.5677000000e+00 9.6015000000e-01 9165 1.5480000000e+00 9.2818000000e-01 9166 1.5678000000e+00 8.9604000000e-01 9167 1.5318000000e+00 8.9601000000e-01 9168 1.4988000000e+00 8.8803000000e-01 9169 1.4626000000e+00 8.7347000000e-01 9170 1.4225000000e+00 8.7810000000e-01 9171 1.3891000000e+00 8.7567000000e-01 9172 1.3802000000e+00 8.4378000000e-01 9173 1.3428000000e+00 8.2871000000e-01 9174 1.4076000000e+00 8.2590000000e-01 9175 1.4067000000e+00 8.5370000000e-01 9176 1.4345000000e+00 8.4484000000e-01 9177 1.4384000000e+00 8.0526000000e-01 9178 1.4777000000e+00 7.9564000000e-01 9179 1.4690000000e+00 8.3234000000e-01 9180 1.5037000000e+00 8.2020000000e-01 9181 1.5123000000e+00 7.8611000000e-01 9182 1.5374000000e+00 8.0977000000e-01 9183 1.5284000000e+00 8.4268000000e-01 9184 1.4973000000e+00 8.5444000000e-01 9185 1.5212000000e+00 8.6965000000e-01 9186 1.5496000000e+00 8.6689000000e-01 9187 1.5612000000e+00 8.3492000000e-01 9188 1.5709000000e+00 8.0234000000e-01 9189 1.5993000000e+00 7.9833000000e-01 9190 1.6184000000e+00 7.7717000000e-01 9191 1.6394000000e+00 7.5008000000e-01 9192 1.6736000000e+00 7.5326000000e-01 9193 1.6521000000e+00 7.8244000000e-01 9194 1.6874000000e+00 7.8562000000e-01 9195 1.7091000000e+00 7.5606000000e-01 9196 1.7311000000e+00 7.2520000000e-01 9197 1.7558000000e+00 6.9104000000e-01 9198 1.7910000000e+00 6.7598000000e-01 9199 1.8218000000e+00 6.6638000000e-01 9200 1.8140000000e+00 6.9697000000e-01 9201 1.8428000000e+00 6.8834000000e-01 9202 1.8524000000e+00 6.5860000000e-01 9203 1.8307000000e+00 6.3413000000e-01 9204 1.8675000000e+00 6.2377000000e-01 9205 1.8947000000e+00 6.0467000000e-01 9206 1.9037000000e+00 6.3149000000e-01 9207 1.9370000000e+00 6.3489000000e-01 9208 1.9721000000e+00 6.3710000000e-01 9209 1.9910000000e+00 6.0576000000e-01 9210 1.9550000000e+00 4.8373000000e-01 9211 2.0270000000e+00 6.0451000000e-01 9212 2.0625000000e+00 6.0166000000e-01 9213 2.0967000000e+00 5.9808000000e-01 9214 2.1289000000e+00 5.9442000000e-01 9215 2.1430000000e+00 5.6735000000e-01 9216 2.1741000000e+00 5.7032000000e-01 9217 2.1841000000e+00 6.0472000000e-01 9218 2.2190000000e+00 6.0324000000e-01 9219 2.2507000000e+00 6.2155000000e-01 9220 2.2878000000e+00 6.2511000000e-01 9221 2.3162000000e+00 6.4695000000e-01 9222 2.3548000000e+00 6.5297000000e-01 9223 2.3762000000e+00 6.3393000000e-01 9224 2.3864000000e+00 6.6016000000e-01 9225 2.4061000000e+00 6.3335000000e-01 9226 2.4467000000e+00 6.3155000000e-01 9227 2.4877000000e+00 6.4672000000e-01 9228 2.5189000000e+00 6.2374000000e-01 9229 2.5272000000e+00 6.6466000000e-01 9230 2.5688000000e+00 6.6789000000e-01 9231 2.6077000000e+00 6.7414000000e-01 9232 2.6517000000e+00 6.8132000000e-01 9233 2.6817000000e+00 7.0250000000e-01 9234 2.6947000000e+00 7.3412000000e-01 9235 2.7197000000e+00 7.5533000000e-01 9236 2.7287000000e+00 7.8694000000e-01 9237 2.7659000000e+00 7.8372000000e-01 9238 2.7987000000e+00 7.8298000000e-01 9239 2.8137000000e+00 7.5433000000e-01 9240 2.8297000000e+00 7.2724000000e-01 9241 2.8484000000e+00 6.9978000000e-01 9242 2.8321000000e+00 6.6923000000e-01 9243 2.8672000000e+00 6.7034000000e-01 9244 2.9027000000e+00 6.7116000000e-01 9245 2.8842000000e+00 7.0221000000e-01 9246 2.8919000000e+00 9.1756000000e-01 9247 2.8862000000e+00 9.5291000000e-01 9248 2.8809000000e+00 9.8969000000e-01 9249 2.8452000000e+00 1.0060000000e+00 9250 2.8390000000e+00 1.0467000000e+00 9251 2.8335000000e+00 1.0856000000e+00 9252 2.7978000000e+00 1.0638000000e+00 9253 2.7620000000e+00 1.0595000000e+00 9254 2.7287000000e+00 1.0749000000e+00 9255 2.6890000000e+00 1.0711000000e+00 9256 2.6544000000e+00 1.0625000000e+00 9257 2.6254000000e+00 1.0884000000e+00 9258 2.5855000000e+00 1.0764000000e+00 9259 2.5460000000e+00 1.0778000000e+00 9260 2.5116000000e+00 1.0732000000e+00 9261 2.4772000000e+00 1.0670000000e+00 9262 2.4425000000e+00 1.0601000000e+00 9263 2.4074000000e+00 1.0529000000e+00 9264 2.3810000000e+00 1.0806000000e+00 9265 2.3454000000e+00 1.0734000000e+00 9266 2.3094000000e+00 1.0660000000e+00 9267 2.2728000000e+00 1.0581000000e+00 9268 2.2333000000e+00 1.0491000000e+00 9269 2.2085000000e+00 1.0274000000e+00 9270 2.1798000000e+00 1.0232000000e+00 9271 2.1477000000e+00 1.0139000000e+00 9272 2.1210000000e+00 1.0393000000e+00 9273 2.0838000000e+00 1.0372000000e+00 9274 2.0440000000e+00 1.0399000000e+00 9275 2.0019000000e+00 1.0425000000e+00 9276 1.9736000000e+00 1.0255000000e+00 9277 1.9429000000e+00 1.0268000000e+00 9278 1.9047000000e+00 1.0300000000e+00 9279 1.8679000000e+00 1.0294000000e+00 9280 1.8398000000e+00 1.0255000000e+00 9281 1.8210000000e+00 1.0063000000e+00 9282 1.7981000000e+00 9.8234000000e-01 9283 1.7739000000e+00 9.5591000000e-01 9284 1.7367000000e+00 9.6473000000e-01 9285 1.6993000000e+00 9.7437000000e-01 9286 1.6740000000e+00 9.4803000000e-01 9287 1.6520000000e+00 9.2696000000e-01 9288 1.6438000000e+00 8.9332000000e-01 9289 1.6044000000e+00 8.9567000000e-01 9290 1.5874000000e+00 8.6180000000e-01 9291 1.5936000000e+00 8.2582000000e-01 9292 1.6275000000e+00 8.1329000000e-01 9293 1.6662000000e+00 8.1507000000e-01 9294 1.7007000000e+00 8.1750000000e-01 9295 1.7227000000e+00 7.8919000000e-01 9296 1.7452000000e+00 7.5955000000e-01 9297 1.7585000000e+00 7.9355000000e-01 9298 1.7818000000e+00 7.6375000000e-01 9299 1.7944000000e+00 7.9859000000e-01 9300 1.8182000000e+00 7.6961000000e-01 9301 1.8066000000e+00 7.3165000000e-01 9302 1.7680000000e+00 7.2939000000e-01 9303 1.7871000000e+00 7.0502000000e-01 9304 1.8344000000e+00 7.1436000000e-01 9305 1.8660000000e+00 7.1244000000e-01 9306 1.8678000000e+00 6.8119000000e-01 9307 1.8836000000e+00 6.5775000000e-01 9308 1.9162000000e+00 6.6265000000e-01 9309 1.9510000000e+00 6.6720000000e-01 9310 1.9884000000e+00 6.7101000000e-01 9311 1.9642000000e+00 7.0175000000e-01 9312 2.0021000000e+00 7.0728000000e-01 9313 2.0311000000e+00 6.7463000000e-01 9314 2.0095000000e+00 6.3804000000e-01 9315 2.0471000000e+00 6.3523000000e-01 9316 2.0828000000e+00 6.2971000000e-01 9317 2.0698000000e+00 6.6283000000e-01 9318 2.1042000000e+00 6.5620000000e-01 9319 2.1167000000e+00 6.2431000000e-01 9320 2.1495000000e+00 6.1769000000e-01 9321 2.1559000000e+00 5.9089000000e-01 9322 2.1732000000e+00 6.4208000000e-01 9323 2.2100000000e+00 6.3401000000e-01 9324 2.2356000000e+00 6.6252000000e-01 9325 2.2750000000e+00 6.5580000000e-01 9326 2.2993000000e+00 6.8538000000e-01 9327 2.3359000000e+00 6.8100000000e-01 9328 2.3658000000e+00 6.7952000000e-01 9329 2.3945000000e+00 6.9618000000e-01 9330 2.4209000000e+00 6.6521000000e-01 9331 2.4579000000e+00 6.7173000000e-01 9332 2.4918000000e+00 6.8393000000e-01 9333 2.5194000000e+00 7.0344000000e-01 9334 2.5488000000e+00 6.9409000000e-01 9335 2.5807000000e+00 7.0343000000e-01 9336 2.6198000000e+00 7.1197000000e-01 9337 2.6572000000e+00 7.2269000000e-01 9338 2.6651000000e+00 7.5757000000e-01 9339 2.6956000000e+00 7.7068000000e-01 9340 2.6943000000e+00 8.0392000000e-01 9341 2.7220000000e+00 8.2463000000e-01 9342 2.7547000000e+00 8.1436000000e-01 9343 2.7831000000e+00 8.0687000000e-01 9344 2.8152000000e+00 8.1686000000e-01 9345 2.8330000000e+00 7.8114000000e-01 9346 2.8422000000e+00 7.5292000000e-01 9347 2.8626000000e+00 7.3159000000e-01 9348 2.8990000000e+00 7.3707000000e-01 9349 2.8720000000e+00 7.7052000000e-01 9350 2.9141000000e+00 7.7180000000e-01 9351 2.8973000000e+00 8.0995000000e-01 9352 2.8991000000e+00 8.4941000000e-01 9353 2.8963000000e+00 8.8351000000e-01 9354 2.8659000000e+00 8.9643000000e-01 9355 2.8587000000e+00 9.2930000000e-01 9356 2.8504000000e+00 9.6584000000e-01 9357 2.8125000000e+00 9.8106000000e-01 9358 2.8072000000e+00 1.0219000000e+00 9359 2.7761000000e+00 1.0352000000e+00 9360 2.7413000000e+00 1.0323000000e+00 9361 2.7094000000e+00 1.0467000000e+00 9362 2.6808000000e+00 1.0384000000e+00 9363 2.6489000000e+00 1.0279000000e+00 9364 2.6200000000e+00 1.0513000000e+00 9365 2.5884000000e+00 1.0370000000e+00 9366 2.5628000000e+00 1.0524000000e+00 9367 2.5349000000e+00 1.0471000000e+00 9368 2.5023000000e+00 1.0402000000e+00 9369 2.4683000000e+00 1.0329000000e+00 9370 2.4337000000e+00 1.0255000000e+00 9371 2.3988000000e+00 1.0180000000e+00 9372 2.3722000000e+00 1.0455000000e+00 9373 2.3367000000e+00 1.0380000000e+00 9374 2.3010000000e+00 1.0303000000e+00 9375 2.2657000000e+00 1.0220000000e+00 9376 2.2341000000e+00 1.0108000000e+00 9377 2.2040000000e+00 9.9539000000e-01 9378 2.2329000000e+00 9.8271000000e-01 9379 2.2168000000e+00 9.6083000000e-01 9380 2.1831000000e+00 9.6714000000e-01 9381 2.1726000000e+00 9.9557000000e-01 9382 2.1486000000e+00 9.7812000000e-01 9383 2.1093000000e+00 9.9879000000e-01 9384 2.0639000000e+00 1.0040000000e+00 9385 2.0249000000e+00 1.0084000000e+00 9386 1.9941000000e+00 1.0100000000e+00 9387 2.0041000000e+00 9.8031000000e-01 9388 1.9658000000e+00 9.9284000000e-01 9389 1.9240000000e+00 9.9533000000e-01 9390 1.8865000000e+00 9.9824000000e-01 9391 1.8524000000e+00 1.0006000000e+00 9392 1.8667000000e+00 9.6925000000e-01 9393 1.8322000000e+00 9.7482000000e-01 9394 1.8099000000e+00 9.4842000000e-01 9395 1.7870000000e+00 9.2084000000e-01 9396 1.7489000000e+00 9.2695000000e-01 9397 1.7099000000e+00 9.3646000000e-01 9398 1.6802000000e+00 9.1183000000e-01 9399 1.6808000000e+00 8.7336000000e-01 9400 1.6478000000e+00 8.4996000000e-01 9401 1.6197000000e+00 8.6899000000e-01 9402 1.6152000000e+00 8.4401000000e-01 9403 1.6813000000e+00 8.4139000000e-01 9404 1.7112000000e+00 8.5085000000e-01 9405 1.7354000000e+00 8.2267000000e-01 9406 1.7712000000e+00 8.2736000000e-01 9407 1.7480000000e+00 8.5734000000e-01 9408 1.7844000000e+00 8.5946000000e-01 9409 1.8063000000e+00 8.3227000000e-01 9410 1.8301000000e+00 8.0478000000e-01 9411 1.8534000000e+00 7.7637000000e-01 9412 1.8427000000e+00 7.4231000000e-01 9413 1.8774000000e+00 7.4926000000e-01 9414 1.9029000000e+00 7.2272000000e-01 9415 1.9125000000e+00 7.5862000000e-01 9416 1.9392000000e+00 7.3138000000e-01 9417 1.9280000000e+00 6.9576000000e-01 9418 1.8941000000e+00 6.8877000000e-01 9419 1.9766000000e+00 7.3779000000e-01 9420 2.0134000000e+00 7.4324000000e-01 9421 1.9898000000e+00 7.7149000000e-01 9422 2.0239000000e+00 7.7718000000e-01 9423 2.0488000000e+00 7.5043000000e-01 9424 2.0390000000e+00 7.1521000000e-01 9425 2.0618000000e+00 6.9279000000e-01 9426 2.0918000000e+00 6.8841000000e-01 9427 2.1255000000e+00 6.8221000000e-01 9428 2.1383000000e+00 6.4979000000e-01 9429 2.1603000000e+00 6.7631000000e-01 9430 2.1970000000e+00 6.7002000000e-01 9431 2.2206000000e+00 7.0041000000e-01 9432 2.2605000000e+00 6.9347000000e-01 9433 2.2858000000e+00 7.2134000000e-01 9434 2.3220000000e+00 7.1389000000e-01 9435 2.3572000000e+00 7.0751000000e-01 9436 2.3804000000e+00 7.3392000000e-01 9437 2.4168000000e+00 7.2871000000e-01 9438 2.4339000000e+00 6.9854000000e-01 9439 2.4661000000e+00 7.0469000000e-01 9440 2.4467000000e+00 7.2498000000e-01 9441 2.4744000000e+00 7.3664000000e-01 9442 2.4920000000e+00 7.1258000000e-01 9443 2.5083000000e+00 7.3445000000e-01 9444 2.4937000000e+00 7.5800000000e-01 9445 2.5222000000e+00 7.6510000000e-01 9446 2.5478000000e+00 7.3121000000e-01 9447 2.5913000000e+00 7.4151000000e-01 9448 2.6301000000e+00 7.4890000000e-01 9449 2.6415000000e+00 7.8281000000e-01 9450 2.6709000000e+00 7.8643000000e-01 9451 2.6580000000e+00 8.1738000000e-01 9452 2.6905000000e+00 8.3772000000e-01 9453 2.7162000000e+00 8.5746000000e-01 9454 2.7476000000e+00 8.4759000000e-01 9455 2.7807000000e+00 8.3666000000e-01 9456 2.8106000000e+00 8.5774000000e-01 9457 2.8441000000e+00 8.4343000000e-01 9458 2.8558000000e+00 8.0948000000e-01 9459 2.8732000000e+00 8.3525000000e-01 9460 2.8698000000e+00 8.6418000000e-01 9461 2.8399000000e+00 8.7735000000e-01 9462 2.8388000000e+00 9.0697000000e-01 9463 2.8188000000e+00 9.3640000000e-01 9464 2.7810000000e+00 9.5764000000e-01 9465 2.7720000000e+00 9.9890000000e-01 9466 2.7332000000e+00 9.9404000000e-01 9467 2.7070000000e+00 1.0168000000e+00 9468 2.6757000000e+00 1.0058000000e+00 9469 2.6449000000e+00 9.9397000000e-01 9470 2.6170000000e+00 1.0156000000e+00 9471 2.5856000000e+00 1.0027000000e+00 9472 2.5589000000e+00 1.0241000000e+00 9473 2.5274000000e+00 1.0149000000e+00 9474 2.4941000000e+00 1.0064000000e+00 9475 2.4597000000e+00 9.9855000000e-01 9476 2.4251000000e+00 9.9095000000e-01 9477 2.3903000000e+00 9.8307000000e-01 9478 2.3636000000e+00 1.0103000000e+00 9479 2.3281000000e+00 1.0025000000e+00 9480 2.2930000000e+00 9.9517000000e-01 9481 2.2598000000e+00 9.8832000000e-01 9482 2.2496000000e+00 9.5820000000e-01 9483 2.2339000000e+00 9.2879000000e-01 9484 2.1972000000e+00 9.3274000000e-01 9485 2.1589000000e+00 9.4011000000e-01 9486 2.1197000000e+00 9.5305000000e-01 9487 2.0803000000e+00 9.6579000000e-01 9488 2.0412000000e+00 9.7347000000e-01 9489 2.0184000000e+00 9.4453000000e-01 9490 1.9803000000e+00 9.5228000000e-01 9491 1.9413000000e+00 9.5932000000e-01 9492 1.9030000000e+00 9.6443000000e-01 9493 1.8810000000e+00 9.3529000000e-01 9494 1.8452000000e+00 9.4169000000e-01 9495 1.8228000000e+00 9.1459000000e-01 9496 1.8014000000e+00 8.8794000000e-01 9497 1.7651000000e+00 8.9090000000e-01 9498 1.7206000000e+00 8.9257000000e-01 9499 1.8141000000e+00 8.6067000000e-01 9500 1.8434000000e+00 8.4252000000e-01 9501 1.8650000000e+00 8.0912000000e-01 9502 1.8867000000e+00 7.8293000000e-01 9503 1.9178000000e+00 7.9375000000e-01 9504 1.9509000000e+00 7.7152000000e-01 9505 1.9730000000e+00 7.9639000000e-01 9506 2.0007000000e+00 8.0268000000e-01 9507 2.0329000000e+00 8.1048000000e-01 9508 2.0575000000e+00 7.8465000000e-01 9509 2.0665000000e+00 8.1836000000e-01 9510 2.0909000000e+00 7.9201000000e-01 9511 2.0817000000e+00 7.5937000000e-01 9512 2.0769000000e+00 7.2286000000e-01 9513 2.1124000000e+00 7.1362000000e-01 9514 2.1460000000e+00 7.0896000000e-01 9515 2.1310000000e+00 7.3909000000e-01 9516 2.1650000000e+00 7.3766000000e-01 9517 2.1819000000e+00 7.0491000000e-01 9518 2.1130000000e+00 7.6602000000e-01 9519 2.1030000000e+00 7.4019000000e-01 9520 2.1462000000e+00 7.6814000000e-01 9521 2.1251000000e+00 7.9735000000e-01 9522 2.1610000000e+00 7.9998000000e-01 9523 2.1820000000e+00 7.6878000000e-01 9524 2.2025000000e+00 7.3617000000e-01 9525 2.2461000000e+00 7.3554000000e-01 9526 2.2781000000e+00 7.5248000000e-01 9527 2.3091000000e+00 7.4753000000e-01 9528 2.3443000000e+00 7.4081000000e-01 9529 2.3307000000e+00 7.7400000000e-01 9530 2.3663000000e+00 7.6825000000e-01 9531 2.4029000000e+00 7.6236000000e-01 9532 2.4420000000e+00 7.5659000000e-01 9533 2.4718000000e+00 7.6552000000e-01 9534 2.4916000000e+00 7.8857000000e-01 9535 2.5282000000e+00 8.0190000000e-01 9536 2.5635000000e+00 7.7675000000e-01 9537 2.6057000000e+00 7.7708000000e-01 9538 2.6189000000e+00 8.0977000000e-01 9539 2.6276000000e+00 8.4484000000e-01 9540 2.6621000000e+00 8.5640000000e-01 9541 2.6898000000e+00 8.6678000000e-01 9542 2.7090000000e+00 8.9238000000e-01 9543 2.7382000000e+00 8.7590000000e-01 9544 2.7732000000e+00 8.7677000000e-01 9545 2.8102000000e+00 8.9561000000e-01 9546 2.7798000000e+00 9.1870000000e-01 9547 2.7502000000e+00 9.4051000000e-01 9548 2.7524000000e+00 9.7054000000e-01 9549 2.7250000000e+00 9.6181000000e-01 9550 2.7012000000e+00 9.8413000000e-01 9551 2.6712000000e+00 9.7378000000e-01 9552 2.6425000000e+00 9.6021000000e-01 9553 2.6139000000e+00 9.8084000000e-01 9554 2.5816000000e+00 9.6785000000e-01 9555 2.5537000000e+00 9.9097000000e-01 9556 2.5204000000e+00 9.8066000000e-01 9557 2.4858000000e+00 9.7165000000e-01 9558 2.4509000000e+00 9.6409000000e-01 9559 2.4167000000e+00 9.5671000000e-01 9560 2.3825000000e+00 9.4796000000e-01 9561 2.3552000000e+00 9.7477000000e-01 9562 2.3193000000e+00 9.6694000000e-01 9563 2.2836000000e+00 9.6106000000e-01 9564 2.2706000000e+00 9.2757000000e-01 9565 2.2535000000e+00 8.9581000000e-01 9566 2.2154000000e+00 8.9765000000e-01 9567 2.1752000000e+00 9.0189000000e-01 9568 2.1296000000e+00 9.0765000000e-01 9569 2.0916000000e+00 9.2767000000e-01 9570 2.0556000000e+00 9.3754000000e-01 9571 2.0336000000e+00 9.0883000000e-01 9572 1.9954000000e+00 9.1444000000e-01 9573 1.9566000000e+00 9.2191000000e-01 9574 1.9182000000e+00 9.2879000000e-01 9575 1.8946000000e+00 8.9981000000e-01 9576 1.8582000000e+00 9.0743000000e-01 9577 1.8350000000e+00 8.8091000000e-01 9578 1.8702000000e+00 8.7199000000e-01 9579 1.8827000000e+00 8.3758000000e-01 9580 1.8937000000e+00 8.1030000000e-01 9581 1.9161000000e+00 8.2791000000e-01 9582 1.9471000000e+00 8.1101000000e-01 9583 1.9766000000e+00 8.2513000000e-01 9584 2.0078000000e+00 8.3524000000e-01 9585 2.0411000000e+00 8.4464000000e-01 9586 2.0754000000e+00 8.5203000000e-01 9587 2.1012000000e+00 8.2625000000e-01 9588 2.1382000000e+00 8.3169000000e-01 9589 2.1768000000e+00 8.3296000000e-01 9590 2.1976000000e+00 8.0099000000e-01 9591 2.2194000000e+00 7.6984000000e-01 9592 2.2557000000e+00 7.7523000000e-01 9593 2.2934000000e+00 7.8292000000e-01 9594 2.3199000000e+00 8.0278000000e-01 9595 2.3511000000e+00 8.0198000000e-01 9596 2.3880000000e+00 7.9674000000e-01 9597 2.4239000000e+00 7.9022000000e-01 9598 2.4570000000e+00 7.8805000000e-01 9599 2.4699000000e+00 8.1221000000e-01 9600 2.4977000000e+00 8.2961000000e-01 9601 2.5331000000e+00 8.3394000000e-01 9602 2.5608000000e+00 8.1775000000e-01 9603 2.5883000000e+00 8.0298000000e-01 9604 2.5923000000e+00 8.3378000000e-01 9605 2.5985000000e+00 8.7018000000e-01 9606 2.6352000000e+00 8.8181000000e-01 9607 2.6711000000e+00 8.9016000000e-01 9608 2.6844000000e+00 9.2201000000e-01 9609 2.7181000000e+00 9.2913000000e-01 9610 2.7448000000e+00 9.0552000000e-01 9611 2.6947000000e+00 9.5278000000e-01 9612 2.6677000000e+00 9.4607000000e-01 9613 2.6455000000e+00 9.2181000000e-01 9614 2.6111000000e+00 9.4502000000e-01 9615 2.5766000000e+00 9.3195000000e-01 9616 2.5480000000e+00 9.5589000000e-01 9617 2.5130000000e+00 9.4445000000e-01 9618 2.4766000000e+00 9.3600000000e-01 9619 2.4415000000e+00 9.3096000000e-01 9620 2.4094000000e+00 9.2351000000e-01 9621 2.3765000000e+00 9.1190000000e-01 9622 2.3469000000e+00 9.3803000000e-01 9623 2.3089000000e+00 9.3024000000e-01 9624 2.2941000000e+00 8.9141000000e-01 9625 2.2697000000e+00 8.6842000000e-01 9626 2.2370000000e+00 8.6116000000e-01 9627 2.1954000000e+00 8.6553000000e-01 9628 2.1544000000e+00 8.6762000000e-01 9629 2.1108000000e+00 8.6599000000e-01 9630 2.0962000000e+00 8.9712000000e-01 9631 2.0683000000e+00 9.0469000000e-01 9632 2.0519000000e+00 8.7734000000e-01 9633 2.0121000000e+00 8.7421000000e-01 9634 1.9713000000e+00 8.8463000000e-01 9635 1.9327000000e+00 8.9167000000e-01 9636 1.9074000000e+00 8.6340000000e-01 9637 1.9478000000e+00 8.5116000000e-01 9638 1.9831000000e+00 8.5411000000e-01 9639 2.0805000000e+00 8.7946000000e-01 9640 2.2137000000e+00 8.3197000000e-01 9641 2.2324000000e+00 8.0249000000e-01 9642 2.2646000000e+00 8.0829000000e-01 9643 2.2952000000e+00 8.2041000000e-01 9644 2.3291000000e+00 8.3483000000e-01 9645 2.3725000000e+00 8.3554000000e-01 9646 2.4109000000e+00 8.2242000000e-01 9647 2.4425000000e+00 8.1551000000e-01 9648 2.4607000000e+00 8.3958000000e-01 9649 2.4810000000e+00 8.6813000000e-01 9650 2.5192000000e+00 8.6327000000e-01 9651 2.5591000000e+00 8.5745000000e-01 9652 2.5704000000e+00 8.9576000000e-01 9653 2.6063000000e+00 9.0771000000e-01 9654 2.5421000000e+00 9.1977000000e-01 9655 2.5049000000e+00 9.0303000000e-01 9656 2.4628000000e+00 9.0214000000e-01 9657 2.4322000000e+00 9.0361000000e-01 9658 2.4066000000e+00 8.9023000000e-01 9659 2.3746000000e+00 8.7531000000e-01 9660 2.3385000000e+00 8.9660000000e-01 9661 2.3211000000e+00 8.6767000000e-01 9662 2.2962000000e+00 8.5377000000e-01 9663 2.2677000000e+00 8.4011000000e-01 9664 2.2431000000e+00 8.2878000000e-01 9665 2.3472000000e+00 8.6194000000e-01 9666 2.4062000000e+00 8.5593000000e-01 9667 2.4322000000e+00 8.4092000000e-01 9668 2.4403000000e+00 8.7145000000e-01 9669 2.5392000000e+00 8.8780000000e-01 9670 2.8509000000e-01 2.2002000000e-01 9671 2.5352000000e-01 2.0244000000e-01 9672 2.2306000000e-01 2.2174000000e-01 9673 2.2448000000e-01 2.5782000000e-01 9674 1.9235000000e-01 2.4049000000e-01 9675 1.9162000000e-01 2.0442000000e-01 9676 2.2146000000e-01 1.8639000000e-01 9677 1.9341000000e-01 1.7449000000e-01 9678 1.5955000000e-01 1.8108000000e-01 9679 2.1441000000e-01 1.5274000000e-01 9680 2.5275000000e-01 1.6248000000e-01 9681 2.8383000000e-01 1.8517000000e-01 9682 2.8580000000e-01 1.5609000000e-01 9683 2.3730000000e-01 1.2529000000e-01 9684 2.2320000000e-01 9.1552000000e-02 9685 3.1206000000e-01 1.6845000000e-01 9686 3.4083000000e-01 1.4920000000e-01 9687 3.4067000000e-01 1.8362000000e-01 9688 3.7784000000e-01 1.3100000000e-01 9689 3.7166000000e-01 9.5340000000e-02 9690 4.0273000000e-01 9.9837000000e-02 9691 3.1383000000e-01 2.0151000000e-01 9692 -8.5560000000e-02 1.0604000000e-01 9693 2.3130000000e-02 2.9185000000e-01 9694 -8.0099000000e-02 1.3769000000e+00 9695 -1.1214000000e-01 1.3798000000e+00 9696 -1.4041000000e-01 1.3815000000e+00 9697 -1.9622000000e-01 1.3847000000e+00 9698 -2.2407000000e-01 1.3686000000e+00 9699 -1.9844000000e-01 1.3564000000e+00 9700 -9.9026000000e-02 1.3516000000e+00 9701 -8.7448000000e-02 1.3266000000e+00 9702 -6.8304000000e-02 1.3467000000e+00 9703 -4.5989000000e-02 1.3720000000e+00 9704 -2.3577000000e-01 6.1039000000e-02 9705 -1.5379000000e-01 7.0890000000e-02 9706 -3.1949000000e-01 8.5454000000e-02 9707 -3.5999000000e-01 1.1968000000e-01 9708 -5.3256000000e-01 2.1948000000e-01 9709 -5.0647000000e-01 1.9801000000e-01 9710 -4.8323000000e-01 1.7703000000e-01 9711 -5.6471000000e-01 2.4356000000e-01 9712 -5.6040000000e-01 2.0806000000e-01 9713 -5.7530000000e-01 1.8148000000e-01 9714 -6.1026000000e-01 1.8249000000e-01 9715 -5.9125000000e-01 2.1321000000e-01 9716 -6.0906000000e-01 2.4948000000e-01 9717 -5.8466000000e-01 2.7911000000e-01 9718 -6.1344000000e-01 2.8192000000e-01 9719 -6.3449000000e-01 2.7004000000e-01 9720 -6.2828000000e-01 1.5189000000e-01 9721 3.7750000000e-01 3.7992000000e-01 9722 3.5112000000e-01 3.9047000000e-01 9723 3.5124000000e-01 3.6167000000e-01 9724 3.2381000000e-01 3.7997000000e-01 9725 1.5992000000e-01 2.2228000000e-01 9726 1.6124000000e-01 2.5972000000e-01 9727 1.9379000000e-01 2.7694000000e-01 9728 1.6304000000e-01 2.9638000000e-01 9729 1.3002000000e-01 2.7963000000e-01 9730 9.8732000000e-02 3.0026000000e-01 9731 9.6282000000e-02 2.6260000000e-01 9732 9.5931000000e-02 2.2542000000e-01 9733 1.2646000000e-01 2.0540000000e-01 9734 1.2061000000e-01 1.6972000000e-01 9735 1.2831000000e-01 2.4252000000e-01 9736 -2.6847000000e-01 3.8782000000e-01 9737 2.9171000000e-01 1.0758000000e+00 9738 2.9363000000e-01 1.0398000000e+00 9739 -1.3560000000e+00 8.4800000000e-01 9740 -1.3257000000e+00 8.3049000000e-01 9741 -1.2953000000e+00 8.1297000000e-01 9742 -1.2954000000e+00 8.4799000000e-01 9743 -1.3257000000e+00 8.6550000000e-01 9744 -1.3560000000e+00 8.8301000000e-01 9745 1.2950000000e+00 2.1712000000e-01 9746 1.2612000000e+00 2.2190000000e-01 9747 -1.0768000000e+00 2.3556000000e-01 9748 -1.0269000000e+00 2.2539000000e-01 9749 -1.0163000000e+00 2.4570000000e-01 9750 6.7129000000e-01 2.8256000000e-01 9751 3.3910000000e+00 1.1239000000e-01 9752 -6.9069000000e-01 7.2306000000e-01 9753 -4.7426000000e-01 7.8595000000e-01 9754 -5.0869000000e-01 7.8914000000e-01 9755 -6.9220000000e-01 7.5875000000e-01 9756 -5.2243000000e-01 7.5144000000e-01 9757 -5.0565000000e-01 7.2626000000e-01 9758 -6.6259000000e-01 7.6859000000e-01 9759 -5.4641000000e-01 7.7618000000e-01 9760 -3.6051000000e-01 7.9358000000e-01 9761 6.5049000000e-01 3.0940000000e-01 9762 6.4700000000e-01 3.4449000000e-01 9763 1.0640000000e+00 1.1529000000e+00 9764 1.0507000000e+00 1.1340000000e+00 9765 1.0331000000e+00 1.1598000000e+00 9766 1.5614000000e+00 5.1401000000e-01 9767 9.7477000000e-01 1.1750000000e+00 9768 1.5269000000e-03 3.3282000000e-02 9769 -3.2863000000e-02 3.0137000000e-02 9770 -5.6096000000e-02 5.8130000000e-02 9771 -9.2488000000e-02 3.6114000000e-02 9772 -6.2614000000e-02 2.5039000000e-02 9773 -1.1715000000e-01 6.5550000000e-02 9774 -8.6987000000e-02 7.4509000000e-02 9775 9.4797000000e-01 8.1843000000e-01 9776 -9.8960000000e-01 6.7075000000e-01 9777 3.2019000000e-01 6.2285000000e-01 9778 -1.2900000000e-01 9.0912000000e-02 9779 -1.0719000000e-01 9.1278000000e-02 9780 -6.3461000000e-02 8.9868000000e-02 9781 -6.9898000000e-01 3.0367000000e-02 9782 2.6567000000e-01 6.3311000000e-01 9783 2.4266000000e-01 6.4709000000e-01 9784 9.1268000000e-01 2.5754000000e-01 9785 3.8108000000e-01 5.4707000000e-01 9786 1.0089000000e+00 2.7465000000e-01 9787 1.0282000000e+00 3.0377000000e-01 9788 1.0474000000e+00 3.3283000000e-01 9789 9.9392000000e-01 3.0612000000e-01 9790 9.0828000000e-01 1.4389000000e+00 9791 1.9397000000e+00 1.4936000000e-01 9792 6.1349000000e-01 2.9027000000e-01 9793 -5.0801000000e-01 9.4070000000e-01 9794 -4.8167000000e-01 9.2801000000e-01 9795 -1.5664000000e-01 1.2235000000e+00 9796 2.9520000000e-01 4.3706000000e-01 9797 3.2447000000e-01 4.5847000000e-01 9798 3.3201000000e-01 4.1848000000e-01 9799 2.9467000000e-01 4.0022000000e-01 scotch_6.0.9/src/check/data/bump_old.map0000644000302600021200000022077113303015264020340 0ustar pelegrinpelegrin9800 0 24 1 18 2 0 3 14 4 11 5 30 6 24 7 24 8 24 9 24 10 24 11 24 12 24 13 24 14 24 15 27 16 27 17 27 18 27 19 27 20 27 21 27 22 27 23 27 24 27 25 27 26 27 27 27 28 27 29 27 30 27 31 27 32 27 33 27 34 27 35 27 36 27 37 18 38 18 39 18 40 18 41 18 42 18 43 18 44 18 45 18 46 18 47 18 48 18 49 18 50 18 51 18 52 16 53 16 54 16 55 16 56 16 57 16 58 16 59 16 60 16 61 16 62 16 63 16 64 16 65 16 66 16 67 16 68 16 69 16 70 0 71 0 72 0 73 0 74 0 75 0 76 0 77 0 78 0 79 0 80 0 81 0 82 0 83 0 84 2 85 2 86 2 87 2 88 2 89 2 90 2 91 2 92 2 93 2 94 2 95 2 96 3 97 3 98 3 99 3 100 3 101 3 102 3 103 3 104 3 105 3 106 3 107 3 108 3 109 3 110 3 111 3 112 3 113 13 114 13 115 13 116 13 117 13 118 13 119 13 120 13 121 13 122 13 123 13 124 14 125 14 126 14 127 14 128 14 129 14 130 14 131 14 132 14 133 14 134 14 135 14 136 14 137 14 138 14 139 14 140 14 141 14 142 14 143 14 144 14 145 14 146 14 147 14 148 14 149 14 150 14 151 14 152 14 153 14 154 14 155 14 156 14 157 15 158 15 159 15 160 15 161 15 162 15 163 15 164 15 165 15 166 15 167 15 168 15 169 15 170 15 171 15 172 15 173 15 174 15 175 15 176 8 177 8 178 8 179 8 180 8 181 8 182 8 183 8 184 8 185 8 186 8 187 8 188 11 189 11 190 11 191 11 192 11 193 11 194 11 195 11 196 11 197 11 198 11 199 11 200 11 201 11 202 11 203 11 204 11 205 11 206 11 207 11 208 11 209 11 210 11 211 11 212 11 213 11 214 11 215 11 216 11 217 11 218 11 219 11 220 11 221 11 222 11 223 11 224 10 225 10 226 10 227 10 228 10 229 10 230 10 231 10 232 10 233 10 234 10 235 10 236 10 237 10 238 10 239 10 240 10 241 10 242 10 243 10 244 10 245 10 246 10 247 4 248 4 249 4 250 4 251 4 252 4 253 4 254 4 255 4 256 4 257 4 258 5 259 5 260 5 261 5 262 5 263 5 264 5 265 5 266 5 267 5 268 5 269 5 270 5 271 5 272 20 273 20 274 20 275 20 276 20 277 20 278 20 279 20 280 20 281 20 282 20 283 20 284 20 285 20 286 20 287 20 288 20 289 22 290 22 291 22 292 22 293 22 294 22 295 22 296 22 297 22 298 22 299 22 300 22 301 22 302 22 303 22 304 22 305 22 306 22 307 22 308 22 309 22 310 22 311 22 312 22 313 22 314 28 315 28 316 28 317 28 318 28 319 28 320 28 321 28 322 28 323 28 324 30 325 30 326 30 327 30 328 30 329 30 330 30 331 30 332 30 333 30 334 30 335 30 336 30 337 30 338 30 339 30 340 30 341 30 342 30 343 30 344 30 345 30 346 30 347 30 348 30 349 30 350 30 351 30 352 30 353 30 354 30 355 30 356 31 357 31 358 31 359 31 360 31 361 31 362 31 363 31 364 31 365 31 366 31 367 31 368 31 369 31 370 31 371 31 372 25 373 25 374 25 375 25 376 25 377 25 378 25 379 25 380 25 381 25 382 25 383 25 384 25 385 25 386 24 387 24 388 24 389 24 390 24 391 24 392 24 393 24 394 24 395 24 396 24 397 24 398 24 399 24 400 24 401 24 402 24 403 24 404 24 405 24 406 24 407 24 408 16 409 0 410 18 411 18 412 24 413 24 414 27 415 18 416 18 417 24 418 24 419 24 420 24 421 18 422 18 423 24 424 24 425 25 426 18 427 18 428 0 429 16 430 16 431 4 432 5 433 5 434 5 435 5 436 5 437 5 438 5 439 5 440 5 441 5 442 5 443 5 444 5 445 5 446 20 447 20 448 20 449 20 450 20 451 20 452 20 453 20 454 20 455 20 456 20 457 20 458 20 459 20 460 20 461 20 462 22 463 22 464 22 465 22 466 22 467 22 468 22 469 22 470 22 471 22 472 22 473 22 474 22 475 22 476 22 477 22 478 22 479 22 480 22 481 22 482 22 483 22 484 22 485 22 486 22 487 28 488 28 489 28 490 28 491 28 492 28 493 28 494 28 495 28 496 28 497 28 498 30 499 30 500 30 501 30 502 30 503 30 504 30 505 30 506 30 507 30 508 30 509 30 510 30 511 30 512 30 513 30 514 30 515 30 516 30 517 30 518 30 519 30 520 30 521 30 522 30 523 30 524 30 525 30 526 30 527 30 528 30 529 31 530 31 531 31 532 31 533 31 534 31 535 31 536 31 537 31 538 31 539 31 540 31 541 31 542 31 543 31 544 31 545 25 546 25 547 25 548 25 549 25 550 25 551 25 552 25 553 25 554 25 555 25 556 25 557 25 558 25 559 25 560 25 561 25 562 25 563 25 564 25 565 25 566 25 567 25 568 25 569 25 570 25 571 25 572 25 573 25 574 25 575 24 576 24 577 24 578 24 579 24 580 24 581 24 582 24 583 24 584 24 585 24 586 24 587 24 588 24 589 24 590 24 591 24 592 24 593 24 594 24 595 24 596 24 597 24 598 24 599 24 600 24 601 24 602 24 603 24 604 24 605 24 606 24 607 24 608 24 609 24 610 24 611 24 612 24 613 24 614 24 615 24 616 24 617 24 618 24 619 24 620 24 621 24 622 24 623 24 624 24 625 24 626 24 627 24 628 24 629 24 630 24 631 24 632 24 633 24 634 24 635 24 636 24 637 24 638 24 639 24 640 24 641 24 642 24 643 24 644 24 645 24 646 24 647 24 648 24 649 24 650 24 651 15 652 15 653 15 654 15 655 15 656 15 657 15 658 15 659 15 660 15 661 15 662 15 663 15 664 8 665 8 666 8 667 8 668 8 669 8 670 8 671 8 672 8 673 8 674 8 675 11 676 11 677 11 678 11 679 11 680 11 681 11 682 11 683 11 684 11 685 11 686 11 687 11 688 11 689 11 690 11 691 11 692 11 693 11 694 11 695 11 696 11 697 11 698 11 699 11 700 11 701 11 702 11 703 11 704 11 705 11 706 11 707 11 708 11 709 10 710 10 711 10 712 10 713 10 714 10 715 10 716 10 717 10 718 10 719 10 720 10 721 10 722 10 723 10 724 10 725 10 726 10 727 10 728 10 729 10 730 10 731 10 732 4 733 4 734 4 735 4 736 4 737 4 738 4 739 4 740 4 741 4 742 4 743 4 744 4 745 5 746 5 747 5 748 5 749 5 750 5 751 5 752 5 753 5 754 5 755 5 756 5 757 5 758 20 759 20 760 20 761 20 762 20 763 20 764 20 765 20 766 20 767 20 768 20 769 20 770 20 771 20 772 20 773 20 774 20 775 22 776 22 777 22 778 22 779 22 780 22 781 22 782 22 783 22 784 22 785 22 786 22 787 22 788 22 789 22 790 22 791 22 792 22 793 22 794 22 795 22 796 22 797 22 798 22 799 28 800 28 801 28 802 28 803 28 804 28 805 28 806 28 807 28 808 28 809 28 810 28 811 30 812 30 813 30 814 30 815 30 816 30 817 30 818 30 819 30 820 30 821 30 822 30 823 30 824 30 825 30 826 30 827 30 828 30 829 30 830 30 831 30 832 30 833 30 834 30 835 30 836 30 837 30 838 30 839 30 840 31 841 31 842 31 843 31 844 31 845 31 846 31 847 31 848 31 849 31 850 31 851 31 852 31 853 31 854 31 855 31 856 31 857 31 858 31 859 25 860 25 861 25 862 25 863 25 864 25 865 25 866 25 867 25 868 25 869 25 870 25 871 25 872 25 873 25 874 25 875 25 876 25 877 25 878 25 879 25 880 25 881 25 882 25 883 25 884 25 885 25 886 25 887 25 888 25 889 25 890 25 891 25 892 25 893 25 894 25 895 24 896 24 897 24 898 25 899 24 900 24 901 25 902 24 903 25 904 24 905 24 906 24 907 24 908 24 909 24 910 24 911 24 912 24 913 24 914 24 915 24 916 25 917 25 918 25 919 25 920 25 921 25 922 25 923 14 924 14 925 14 926 15 927 15 928 15 929 15 930 15 931 15 932 15 933 15 934 15 935 15 936 15 937 15 938 15 939 15 940 15 941 15 942 15 943 15 944 15 945 15 946 8 947 8 948 8 949 8 950 8 951 8 952 8 953 8 954 8 955 8 956 8 957 11 958 11 959 11 960 11 961 11 962 11 963 11 964 11 965 11 966 11 967 11 968 11 969 11 970 11 971 11 972 11 973 11 974 11 975 11 976 11 977 11 978 11 979 11 980 11 981 11 982 11 983 11 984 11 985 11 986 11 987 11 988 10 989 10 990 10 991 10 992 10 993 10 994 10 995 10 996 10 997 10 998 10 999 10 1000 10 1001 10 1002 10 1003 10 1004 10 1005 10 1006 10 1007 10 1008 10 1009 10 1010 10 1011 4 1012 4 1013 4 1014 4 1015 4 1016 4 1017 4 1018 4 1019 4 1020 4 1021 4 1022 4 1023 4 1024 4 1025 4 1026 4 1027 5 1028 5 1029 5 1030 5 1031 5 1032 5 1033 5 1034 5 1035 5 1036 5 1037 5 1038 5 1039 20 1040 20 1041 20 1042 20 1043 20 1044 20 1045 20 1046 20 1047 20 1048 20 1049 20 1050 20 1051 20 1052 20 1053 20 1054 20 1055 20 1056 22 1057 22 1058 22 1059 22 1060 22 1061 22 1062 22 1063 22 1064 22 1065 22 1066 22 1067 22 1068 22 1069 22 1070 22 1071 22 1072 22 1073 22 1074 22 1075 22 1076 22 1077 22 1078 22 1079 22 1080 22 1081 28 1082 28 1083 28 1084 28 1085 28 1086 28 1087 28 1088 28 1089 28 1090 28 1091 28 1092 28 1093 30 1094 30 1095 30 1096 30 1097 30 1098 30 1099 30 1100 30 1101 30 1102 30 1103 30 1104 30 1105 30 1106 30 1107 30 1108 30 1109 30 1110 30 1111 30 1112 30 1113 30 1114 30 1115 30 1116 30 1117 30 1118 30 1119 30 1120 30 1121 31 1122 31 1123 31 1124 31 1125 31 1126 31 1127 31 1128 31 1129 31 1130 31 1131 31 1132 31 1133 31 1134 31 1135 31 1136 31 1137 31 1138 31 1139 25 1140 25 1141 25 1142 25 1143 25 1144 25 1145 25 1146 25 1147 25 1148 25 1149 25 1150 25 1151 25 1152 31 1153 31 1154 31 1155 31 1156 31 1157 25 1158 25 1159 25 1160 2 1161 2 1162 2 1163 2 1164 25 1165 25 1166 25 1167 25 1168 25 1169 25 1170 25 1171 27 1172 27 1173 27 1174 2 1175 2 1176 2 1177 2 1178 2 1179 2 1180 2 1181 2 1182 2 1183 2 1184 2 1185 2 1186 2 1187 2 1188 2 1189 2 1190 2 1191 2 1192 3 1193 3 1194 3 1195 3 1196 3 1197 3 1198 3 1199 3 1200 3 1201 3 1202 3 1203 3 1204 3 1205 3 1206 3 1207 3 1208 13 1209 13 1210 13 1211 13 1212 13 1213 13 1214 13 1215 13 1216 13 1217 13 1218 13 1219 13 1220 14 1221 14 1222 14 1223 14 1224 14 1225 14 1226 14 1227 14 1228 14 1229 14 1230 14 1231 14 1232 14 1233 14 1234 14 1235 14 1236 14 1237 14 1238 14 1239 14 1240 14 1241 14 1242 14 1243 14 1244 14 1245 14 1246 14 1247 14 1248 14 1249 14 1250 14 1251 14 1252 14 1253 15 1254 15 1255 15 1256 15 1257 15 1258 15 1259 15 1260 15 1261 15 1262 15 1263 15 1264 15 1265 15 1266 15 1267 15 1268 15 1269 15 1270 15 1271 15 1272 8 1273 8 1274 8 1275 8 1276 8 1277 8 1278 8 1279 8 1280 8 1281 8 1282 8 1283 11 1284 11 1285 11 1286 11 1287 11 1288 11 1289 11 1290 11 1291 11 1292 11 1293 11 1294 11 1295 11 1296 11 1297 11 1298 11 1299 11 1300 11 1301 11 1302 11 1303 11 1304 11 1305 11 1306 11 1307 11 1308 11 1309 11 1310 11 1311 11 1312 10 1313 10 1314 10 1315 10 1316 10 1317 10 1318 10 1319 10 1320 10 1321 10 1322 10 1323 10 1324 10 1325 10 1326 10 1327 10 1328 10 1329 10 1330 10 1331 10 1332 10 1333 10 1334 10 1335 10 1336 4 1337 4 1338 4 1339 4 1340 4 1341 4 1342 4 1343 4 1344 4 1345 4 1346 4 1347 4 1348 4 1349 4 1350 4 1351 5 1352 5 1353 5 1354 5 1355 5 1356 5 1357 5 1358 5 1359 5 1360 5 1361 5 1362 5 1363 20 1364 20 1365 20 1366 20 1367 20 1368 20 1369 20 1370 20 1371 20 1372 20 1373 20 1374 20 1375 20 1376 20 1377 20 1378 20 1379 20 1380 22 1381 22 1382 22 1383 22 1384 22 1385 22 1386 22 1387 22 1388 22 1389 22 1390 22 1391 22 1392 22 1393 22 1394 22 1395 22 1396 22 1397 22 1398 22 1399 22 1400 22 1401 22 1402 22 1403 22 1404 22 1405 28 1406 28 1407 28 1408 28 1409 28 1410 28 1411 28 1412 28 1413 28 1414 28 1415 28 1416 28 1417 30 1418 30 1419 30 1420 30 1421 30 1422 30 1423 30 1424 30 1425 30 1426 30 1427 30 1428 30 1429 30 1430 30 1431 30 1432 30 1433 30 1434 30 1435 30 1436 30 1437 30 1438 30 1439 30 1440 30 1441 30 1442 31 1443 31 1444 31 1445 31 1446 31 1447 31 1448 31 1449 31 1450 31 1451 31 1452 31 1453 31 1454 31 1455 31 1456 31 1457 3 1458 3 1459 3 1460 3 1461 31 1462 31 1463 31 1464 31 1465 31 1466 31 1467 31 1468 31 1469 31 1470 31 1471 31 1472 31 1473 31 1474 0 1475 0 1476 0 1477 0 1478 0 1479 0 1480 0 1481 0 1482 2 1483 2 1484 2 1485 2 1486 2 1487 2 1488 2 1489 2 1490 31 1491 31 1492 31 1493 25 1494 25 1495 25 1496 25 1497 25 1498 25 1499 25 1500 3 1501 3 1502 0 1503 0 1504 2 1505 2 1506 24 1507 24 1508 24 1509 24 1510 24 1511 24 1512 24 1513 24 1514 24 1515 24 1516 24 1517 24 1518 24 1519 24 1520 24 1521 24 1522 24 1523 24 1524 27 1525 27 1526 27 1527 25 1528 25 1529 25 1530 25 1531 25 1532 25 1533 25 1534 25 1535 25 1536 24 1537 24 1538 24 1539 24 1540 24 1541 25 1542 24 1543 24 1544 24 1545 24 1546 13 1547 13 1548 13 1549 13 1550 13 1551 13 1552 13 1553 13 1554 13 1555 13 1556 13 1557 13 1558 13 1559 13 1560 13 1561 13 1562 24 1563 24 1564 24 1565 24 1566 24 1567 24 1568 24 1569 24 1570 24 1571 26 1572 26 1573 24 1574 24 1575 24 1576 24 1577 24 1578 24 1579 24 1580 24 1581 24 1582 24 1583 24 1584 24 1585 24 1586 24 1587 24 1588 24 1589 24 1590 24 1591 24 1592 24 1593 24 1594 24 1595 24 1596 24 1597 24 1598 24 1599 24 1600 24 1601 24 1602 24 1603 0 1604 0 1605 0 1606 0 1607 0 1608 0 1609 0 1610 0 1611 0 1612 0 1613 0 1614 0 1615 0 1616 0 1617 0 1618 0 1619 0 1620 0 1621 0 1622 0 1623 0 1624 0 1625 0 1626 0 1627 0 1628 0 1629 0 1630 0 1631 0 1632 0 1633 0 1634 0 1635 0 1636 0 1637 0 1638 0 1639 0 1640 2 1641 2 1642 2 1643 2 1644 2 1645 2 1646 2 1647 2 1648 2 1649 2 1650 2 1651 2 1652 2 1653 2 1654 2 1655 2 1656 2 1657 2 1658 2 1659 2 1660 2 1661 2 1662 2 1663 2 1664 2 1665 2 1666 2 1667 2 1668 3 1669 2 1670 2 1671 3 1672 3 1673 3 1674 3 1675 3 1676 3 1677 3 1678 3 1679 3 1680 3 1681 3 1682 3 1683 3 1684 3 1685 3 1686 3 1687 3 1688 3 1689 3 1690 3 1691 3 1692 3 1693 3 1694 13 1695 13 1696 13 1697 13 1698 13 1699 13 1700 13 1701 13 1702 13 1703 13 1704 13 1705 13 1706 13 1707 13 1708 13 1709 13 1710 13 1711 13 1712 13 1713 13 1714 13 1715 13 1716 13 1717 14 1718 14 1719 14 1720 14 1721 14 1722 14 1723 14 1724 14 1725 14 1726 14 1727 14 1728 14 1729 14 1730 14 1731 14 1732 14 1733 14 1734 14 1735 14 1736 14 1737 14 1738 14 1739 14 1740 14 1741 14 1742 14 1743 14 1744 14 1745 14 1746 14 1747 14 1748 14 1749 14 1750 14 1751 14 1752 14 1753 15 1754 15 1755 15 1756 15 1757 15 1758 15 1759 15 1760 15 1761 15 1762 15 1763 15 1764 15 1765 15 1766 15 1767 15 1768 15 1769 15 1770 15 1771 15 1772 8 1773 8 1774 8 1775 8 1776 8 1777 8 1778 8 1779 8 1780 8 1781 8 1782 11 1783 11 1784 11 1785 11 1786 11 1787 11 1788 11 1789 11 1790 11 1791 11 1792 11 1793 11 1794 11 1795 11 1796 11 1797 11 1798 11 1799 11 1800 11 1801 11 1802 10 1803 10 1804 10 1805 10 1806 10 1807 10 1808 10 1809 10 1810 10 1811 10 1812 10 1813 10 1814 10 1815 10 1816 10 1817 10 1818 10 1819 10 1820 10 1821 10 1822 10 1823 10 1824 10 1825 10 1826 4 1827 4 1828 4 1829 4 1830 4 1831 4 1832 4 1833 4 1834 4 1835 4 1836 4 1837 4 1838 4 1839 4 1840 4 1841 4 1842 5 1843 5 1844 5 1845 5 1846 5 1847 5 1848 5 1849 5 1850 5 1851 5 1852 5 1853 5 1854 20 1855 20 1856 20 1857 20 1858 20 1859 20 1860 20 1861 20 1862 20 1863 20 1864 20 1865 20 1866 20 1867 20 1868 20 1869 20 1870 20 1871 22 1872 22 1873 22 1874 22 1875 22 1876 22 1877 22 1878 22 1879 22 1880 22 1881 22 1882 22 1883 22 1884 22 1885 22 1886 22 1887 22 1888 22 1889 22 1890 22 1891 22 1892 22 1893 22 1894 22 1895 22 1896 28 1897 28 1898 28 1899 28 1900 28 1901 28 1902 28 1903 28 1904 28 1905 28 1906 28 1907 28 1908 30 1909 30 1910 30 1911 30 1912 30 1913 30 1914 30 1915 30 1916 30 1917 30 1918 30 1919 30 1920 30 1921 30 1922 30 1923 30 1924 30 1925 30 1926 30 1927 30 1928 30 1929 30 1930 30 1931 31 1932 31 1933 31 1934 31 1935 31 1936 31 1937 31 1938 31 1939 31 1940 31 1941 31 1942 31 1943 31 1944 31 1945 31 1946 31 1947 31 1948 31 1949 31 1950 31 1951 25 1952 25 1953 25 1954 25 1955 25 1956 25 1957 25 1958 25 1959 25 1960 25 1961 25 1962 25 1963 25 1964 25 1965 25 1966 20 1967 20 1968 20 1969 20 1970 20 1971 20 1972 20 1973 20 1974 20 1975 20 1976 20 1977 20 1978 20 1979 20 1980 20 1981 20 1982 22 1983 22 1984 22 1985 22 1986 22 1987 22 1988 22 1989 22 1990 22 1991 22 1992 22 1993 22 1994 22 1995 22 1996 22 1997 22 1998 22 1999 22 2000 22 2001 22 2002 22 2003 22 2004 22 2005 22 2006 28 2007 28 2008 28 2009 28 2010 28 2011 28 2012 28 2013 28 2014 28 2015 28 2016 28 2017 28 2018 30 2019 30 2020 30 2021 30 2022 30 2023 30 2024 30 2025 30 2026 30 2027 30 2028 30 2029 30 2030 30 2031 30 2032 30 2033 30 2034 30 2035 30 2036 30 2037 30 2038 30 2039 30 2040 31 2041 31 2042 31 2043 31 2044 31 2045 31 2046 31 2047 31 2048 31 2049 31 2050 31 2051 31 2052 31 2053 31 2054 31 2055 31 2056 31 2057 25 2058 25 2059 25 2060 25 2061 25 2062 25 2063 25 2064 25 2065 25 2066 25 2067 25 2068 25 2069 25 2070 25 2071 25 2072 25 2073 25 2074 25 2075 25 2076 25 2077 25 2078 25 2079 25 2080 25 2081 25 2082 25 2083 25 2084 25 2085 24 2086 25 2087 25 2088 25 2089 25 2090 25 2091 25 2092 25 2093 25 2094 25 2095 25 2096 25 2097 24 2098 11 2099 11 2100 11 2101 11 2102 11 2103 11 2104 11 2105 11 2106 11 2107 11 2108 11 2109 11 2110 11 2111 10 2112 10 2113 10 2114 10 2115 10 2116 10 2117 10 2118 10 2119 10 2120 10 2121 10 2122 10 2123 10 2124 10 2125 10 2126 10 2127 10 2128 10 2129 10 2130 10 2131 10 2132 10 2133 10 2134 10 2135 10 2136 4 2137 4 2138 4 2139 4 2140 4 2141 4 2142 4 2143 4 2144 4 2145 4 2146 4 2147 4 2148 4 2149 4 2150 4 2151 10 2152 10 2153 10 2154 4 2155 4 2156 4 2157 4 2158 4 2159 4 2160 4 2161 4 2162 4 2163 4 2164 4 2165 4 2166 4 2167 4 2168 4 2169 4 2170 5 2171 5 2172 14 2173 14 2174 14 2175 14 2176 14 2177 14 2178 14 2179 27 2180 27 2181 27 2182 27 2183 27 2184 27 2185 27 2186 27 2187 27 2188 27 2189 27 2190 27 2191 27 2192 27 2193 27 2194 18 2195 18 2196 18 2197 27 2198 27 2199 27 2200 27 2201 27 2202 27 2203 27 2204 27 2205 27 2206 27 2207 27 2208 27 2209 27 2210 27 2211 27 2212 27 2213 27 2214 27 2215 27 2216 27 2217 27 2218 16 2219 16 2220 16 2221 16 2222 16 2223 13 2224 13 2225 13 2226 13 2227 13 2228 13 2229 13 2230 13 2231 13 2232 13 2233 14 2234 14 2235 14 2236 14 2237 14 2238 13 2239 13 2240 13 2241 2 2242 14 2243 14 2244 14 2245 14 2246 14 2247 14 2248 27 2249 27 2250 27 2251 27 2252 18 2253 14 2254 15 2255 15 2256 15 2257 15 2258 15 2259 15 2260 15 2261 15 2262 15 2263 15 2264 15 2265 15 2266 15 2267 15 2268 15 2269 15 2270 15 2271 15 2272 8 2273 8 2274 8 2275 8 2276 8 2277 8 2278 8 2279 8 2280 8 2281 8 2282 8 2283 11 2284 11 2285 11 2286 11 2287 11 2288 11 2289 11 2290 11 2291 11 2292 11 2293 11 2294 11 2295 11 2296 11 2297 11 2298 11 2299 11 2300 11 2301 11 2302 11 2303 11 2304 11 2305 11 2306 11 2307 10 2308 10 2309 10 2310 10 2311 10 2312 10 2313 10 2314 10 2315 10 2316 10 2317 10 2318 10 2319 10 2320 10 2321 10 2322 10 2323 10 2324 10 2325 10 2326 10 2327 10 2328 10 2329 10 2330 10 2331 4 2332 4 2333 4 2334 4 2335 4 2336 4 2337 4 2338 4 2339 4 2340 4 2341 4 2342 4 2343 4 2344 4 2345 4 2346 5 2347 5 2348 5 2349 5 2350 5 2351 5 2352 5 2353 5 2354 5 2355 5 2356 5 2357 5 2358 5 2359 5 2360 5 2361 20 2362 20 2363 20 2364 20 2365 20 2366 20 2367 20 2368 20 2369 20 2370 20 2371 20 2372 20 2373 20 2374 20 2375 20 2376 20 2377 20 2378 20 2379 22 2380 22 2381 22 2382 22 2383 22 2384 22 2385 22 2386 22 2387 22 2388 22 2389 22 2390 22 2391 22 2392 22 2393 22 2394 22 2395 22 2396 22 2397 22 2398 22 2399 22 2400 22 2401 22 2402 28 2403 28 2404 28 2405 28 2406 28 2407 28 2408 28 2409 28 2410 28 2411 28 2412 28 2413 28 2414 28 2415 30 2416 30 2417 30 2418 30 2419 30 2420 30 2421 30 2422 30 2423 30 2424 30 2425 30 2426 30 2427 30 2428 30 2429 30 2430 30 2431 30 2432 30 2433 30 2434 30 2435 31 2436 31 2437 31 2438 31 2439 31 2440 31 2441 31 2442 31 2443 31 2444 31 2445 31 2446 31 2447 31 2448 31 2449 31 2450 31 2451 31 2452 31 2453 31 2454 31 2455 25 2456 25 2457 25 2458 25 2459 25 2460 25 2461 25 2462 25 2463 25 2464 25 2465 25 2466 25 2467 25 2468 25 2469 25 2470 25 2471 25 2472 25 2473 25 2474 24 2475 24 2476 24 2477 25 2478 25 2479 2 2480 2 2481 2 2482 25 2483 25 2484 25 2485 25 2486 25 2487 25 2488 25 2489 25 2490 2 2491 0 2492 0 2493 0 2494 2 2495 2 2496 2 2497 2 2498 2 2499 2 2500 2 2501 2 2502 27 2503 27 2504 27 2505 27 2506 27 2507 27 2508 27 2509 27 2510 27 2511 27 2512 27 2513 22 2514 22 2515 22 2516 28 2517 28 2518 28 2519 28 2520 28 2521 28 2522 28 2523 28 2524 28 2525 28 2526 28 2527 28 2528 28 2529 28 2530 30 2531 30 2532 30 2533 30 2534 30 2535 30 2536 30 2537 30 2538 30 2539 30 2540 30 2541 30 2542 30 2543 30 2544 30 2545 16 2546 16 2547 16 2548 16 2549 16 2550 16 2551 16 2552 30 2553 30 2554 30 2555 30 2556 30 2557 30 2558 30 2559 31 2560 13 2561 13 2562 13 2563 13 2564 13 2565 14 2566 14 2567 14 2568 14 2569 14 2570 30 2571 15 2572 15 2573 15 2574 15 2575 15 2576 15 2577 15 2578 15 2579 15 2580 8 2581 8 2582 8 2583 8 2584 8 2585 8 2586 8 2587 8 2588 8 2589 8 2590 8 2591 8 2592 11 2593 11 2594 11 2595 11 2596 11 2597 11 2598 11 2599 11 2600 11 2601 11 2602 11 2603 11 2604 11 2605 11 2606 11 2607 11 2608 11 2609 11 2610 11 2611 11 2612 11 2613 11 2614 10 2615 10 2616 10 2617 10 2618 10 2619 10 2620 10 2621 10 2622 10 2623 10 2624 10 2625 10 2626 10 2627 10 2628 10 2629 10 2630 10 2631 10 2632 10 2633 10 2634 10 2635 10 2636 10 2637 10 2638 10 2639 10 2640 10 2641 10 2642 4 2643 4 2644 4 2645 4 2646 4 2647 4 2648 4 2649 4 2650 4 2651 4 2652 4 2653 4 2654 4 2655 4 2656 4 2657 5 2658 5 2659 5 2660 5 2661 5 2662 5 2663 5 2664 5 2665 5 2666 5 2667 5 2668 5 2669 5 2670 5 2671 5 2672 5 2673 5 2674 20 2675 20 2676 20 2677 20 2678 20 2679 20 2680 20 2681 20 2682 20 2683 20 2684 20 2685 20 2686 20 2687 20 2688 20 2689 20 2690 20 2691 22 2692 22 2693 22 2694 22 2695 22 2696 22 2697 22 2698 22 2699 22 2700 22 2701 22 2702 22 2703 22 2704 22 2705 22 2706 22 2707 22 2708 22 2709 22 2710 22 2711 22 2712 22 2713 28 2714 28 2715 28 2716 28 2717 28 2718 28 2719 28 2720 28 2721 28 2722 28 2723 28 2724 28 2725 28 2726 28 2727 30 2728 30 2729 30 2730 30 2731 30 2732 30 2733 30 2734 30 2735 30 2736 30 2737 30 2738 30 2739 30 2740 30 2741 30 2742 30 2743 31 2744 31 2745 31 2746 31 2747 31 2748 31 2749 31 2750 31 2751 14 2752 14 2753 14 2754 14 2755 14 2756 14 2757 14 2758 14 2759 14 2760 14 2761 14 2762 15 2763 15 2764 15 2765 15 2766 15 2767 15 2768 15 2769 15 2770 15 2771 15 2772 15 2773 15 2774 15 2775 15 2776 15 2777 15 2778 15 2779 15 2780 8 2781 8 2782 8 2783 8 2784 8 2785 8 2786 8 2787 8 2788 8 2789 8 2790 8 2791 8 2792 11 2793 11 2794 11 2795 11 2796 11 2797 11 2798 11 2799 11 2800 11 2801 11 2802 11 2803 11 2804 14 2805 14 2806 14 2807 14 2808 14 2809 2 2810 2 2811 2 2812 2 2813 2 2814 2 2815 2 2816 3 2817 2 2818 2 2819 3 2820 3 2821 3 2822 3 2823 3 2824 11 2825 11 2826 11 2827 11 2828 11 2829 11 2830 11 2831 11 2832 11 2833 11 2834 10 2835 10 2836 10 2837 10 2838 10 2839 10 2840 10 2841 16 2842 16 2843 16 2844 16 2845 16 2846 16 2847 16 2848 16 2849 16 2850 16 2851 16 2852 16 2853 16 2854 16 2855 16 2856 16 2857 16 2858 16 2859 16 2860 16 2861 0 2862 0 2863 0 2864 0 2865 0 2866 0 2867 2 2868 2 2869 2 2870 2 2871 2 2872 2 2873 2 2874 2 2875 2 2876 2 2877 2 2878 2 2879 2 2880 2 2881 2 2882 2 2883 2 2884 2 2885 2 2886 2 2887 2 2888 2 2889 2 2890 2 2891 2 2892 2 2893 14 2894 14 2895 14 2896 14 2897 14 2898 14 2899 14 2900 14 2901 14 2902 14 2903 14 2904 14 2905 15 2906 15 2907 15 2908 15 2909 15 2910 15 2911 15 2912 15 2913 15 2914 15 2915 15 2916 15 2917 15 2918 15 2919 15 2920 15 2921 15 2922 15 2923 8 2924 8 2925 8 2926 8 2927 8 2928 8 2929 8 2930 8 2931 8 2932 8 2933 8 2934 8 2935 8 2936 11 2937 11 2938 11 2939 11 2940 11 2941 11 2942 11 2943 11 2944 11 2945 11 2946 11 2947 11 2948 11 2949 11 2950 11 2951 11 2952 11 2953 10 2954 10 2955 10 2956 10 2957 10 2958 10 2959 10 2960 10 2961 10 2962 10 2963 10 2964 10 2965 10 2966 10 2967 10 2968 10 2969 10 2970 10 2971 10 2972 10 2973 10 2974 10 2975 10 2976 10 2977 10 2978 10 2979 4 2980 4 2981 4 2982 4 2983 4 2984 4 2985 4 2986 4 2987 4 2988 4 2989 4 2990 4 2991 4 2992 4 2993 5 2994 5 2995 5 2996 5 2997 5 2998 5 2999 5 3000 5 3001 5 3002 5 3003 22 3004 22 3005 22 3006 22 3007 22 3008 22 3009 22 3010 22 3011 22 3012 22 3013 28 3014 28 3015 28 3016 28 3017 28 3018 28 3019 28 3020 28 3021 28 3022 28 3023 28 3024 28 3025 28 3026 28 3027 30 3028 30 3029 30 3030 30 3031 30 3032 30 3033 30 3034 30 3035 30 3036 30 3037 30 3038 30 3039 30 3040 30 3041 31 3042 30 3043 30 3044 30 3045 31 3046 31 3047 31 3048 31 3049 31 3050 31 3051 31 3052 31 3053 31 3054 31 3055 31 3056 31 3057 31 3058 31 3059 31 3060 31 3061 31 3062 31 3063 31 3064 31 3065 31 3066 31 3067 31 3068 31 3069 31 3070 31 3071 31 3072 31 3073 25 3074 25 3075 25 3076 25 3077 25 3078 25 3079 25 3080 25 3081 25 3082 25 3083 25 3084 25 3085 25 3086 27 3087 27 3088 27 3089 27 3090 27 3091 25 3092 25 3093 0 3094 0 3095 27 3096 27 3097 2 3098 24 3099 24 3100 24 3101 24 3102 24 3103 24 3104 27 3105 27 3106 27 3107 25 3108 25 3109 25 3110 25 3111 25 3112 25 3113 24 3114 24 3115 24 3116 24 3117 27 3118 27 3119 27 3120 27 3121 27 3122 27 3123 27 3124 27 3125 27 3126 27 3127 27 3128 27 3129 27 3130 27 3131 25 3132 25 3133 25 3134 25 3135 25 3136 25 3137 25 3138 25 3139 2 3140 2 3141 2 3142 2 3143 3 3144 3 3145 3 3146 3 3147 3 3148 25 3149 25 3150 25 3151 25 3152 25 3153 25 3154 25 3155 25 3156 25 3157 26 3158 26 3159 26 3160 26 3161 25 3162 16 3163 16 3164 16 3165 16 3166 16 3167 16 3168 16 3169 16 3170 16 3171 16 3172 16 3173 16 3174 16 3175 16 3176 16 3177 16 3178 16 3179 16 3180 16 3181 2 3182 2 3183 2 3184 0 3185 0 3186 0 3187 0 3188 0 3189 2 3190 2 3191 14 3192 0 3193 0 3194 0 3195 0 3196 0 3197 14 3198 14 3199 14 3200 14 3201 14 3202 14 3203 14 3204 14 3205 14 3206 14 3207 14 3208 14 3209 15 3210 15 3211 15 3212 15 3213 15 3214 0 3215 0 3216 0 3217 24 3218 24 3219 24 3220 24 3221 24 3222 24 3223 24 3224 24 3225 24 3226 24 3227 24 3228 24 3229 24 3230 24 3231 24 3232 24 3233 24 3234 24 3235 24 3236 24 3237 24 3238 24 3239 24 3240 24 3241 24 3242 11 3243 11 3244 11 3245 11 3246 10 3247 10 3248 10 3249 10 3250 10 3251 10 3252 10 3253 10 3254 10 3255 10 3256 10 3257 10 3258 10 3259 10 3260 10 3261 10 3262 10 3263 10 3264 10 3265 10 3266 10 3267 10 3268 10 3269 10 3270 10 3271 4 3272 4 3273 4 3274 4 3275 4 3276 4 3277 4 3278 20 3279 20 3280 22 3281 22 3282 22 3283 22 3284 22 3285 22 3286 22 3287 22 3288 22 3289 22 3290 22 3291 22 3292 22 3293 22 3294 22 3295 22 3296 22 3297 22 3298 22 3299 22 3300 22 3301 28 3302 28 3303 28 3304 28 3305 28 3306 28 3307 28 3308 28 3309 28 3310 28 3311 28 3312 28 3313 28 3314 28 3315 28 3316 30 3317 30 3318 30 3319 30 3320 30 3321 30 3322 30 3323 30 3324 30 3325 30 3326 31 3327 31 3328 31 3329 31 3330 27 3331 27 3332 27 3333 27 3334 27 3335 27 3336 27 3337 27 3338 27 3339 27 3340 27 3341 27 3342 27 3343 27 3344 27 3345 27 3346 27 3347 27 3348 27 3349 25 3350 25 3351 25 3352 25 3353 25 3354 25 3355 25 3356 25 3357 25 3358 25 3359 25 3360 25 3361 25 3362 25 3363 25 3364 25 3365 25 3366 25 3367 25 3368 25 3369 25 3370 25 3371 29 3372 29 3373 25 3374 25 3375 29 3376 29 3377 29 3378 29 3379 29 3380 25 3381 29 3382 25 3383 29 3384 29 3385 29 3386 29 3387 26 3388 26 3389 26 3390 26 3391 20 3392 20 3393 20 3394 20 3395 14 3396 14 3397 14 3398 14 3399 14 3400 14 3401 14 3402 14 3403 14 3404 14 3405 14 3406 14 3407 14 3408 14 3409 14 3410 14 3411 14 3412 3 3413 3 3414 3 3415 3 3416 13 3417 13 3418 13 3419 13 3420 13 3421 13 3422 13 3423 13 3424 13 3425 13 3426 13 3427 13 3428 13 3429 13 3430 13 3431 13 3432 13 3433 13 3434 13 3435 13 3436 0 3437 0 3438 0 3439 0 3440 0 3441 0 3442 13 3443 13 3444 13 3445 13 3446 13 3447 13 3448 13 3449 14 3450 16 3451 16 3452 16 3453 16 3454 14 3455 14 3456 14 3457 14 3458 14 3459 14 3460 14 3461 14 3462 14 3463 14 3464 14 3465 14 3466 14 3467 14 3468 14 3469 14 3470 14 3471 14 3472 14 3473 14 3474 14 3475 14 3476 14 3477 14 3478 14 3479 15 3480 15 3481 15 3482 15 3483 15 3484 24 3485 24 3486 24 3487 24 3488 24 3489 24 3490 24 3491 24 3492 24 3493 24 3494 24 3495 24 3496 24 3497 24 3498 24 3499 15 3500 15 3501 24 3502 24 3503 24 3504 24 3505 16 3506 16 3507 16 3508 0 3509 0 3510 0 3511 0 3512 0 3513 0 3514 0 3515 0 3516 0 3517 0 3518 0 3519 0 3520 0 3521 0 3522 0 3523 0 3524 0 3525 0 3526 0 3527 0 3528 0 3529 0 3530 0 3531 0 3532 0 3533 0 3534 0 3535 0 3536 0 3537 0 3538 0 3539 0 3540 0 3541 0 3542 0 3543 0 3544 0 3545 4 3546 4 3547 4 3548 4 3549 4 3550 4 3551 4 3552 5 3553 5 3554 5 3555 5 3556 5 3557 5 3558 5 3559 5 3560 5 3561 5 3562 5 3563 5 3564 5 3565 5 3566 5 3567 5 3568 5 3569 5 3570 5 3571 5 3572 5 3573 20 3574 20 3575 20 3576 20 3577 20 3578 20 3579 20 3580 20 3581 20 3582 20 3583 20 3584 20 3585 20 3586 20 3587 20 3588 20 3589 20 3590 20 3591 20 3592 22 3593 22 3594 22 3595 22 3596 22 3597 22 3598 22 3599 22 3600 22 3601 22 3602 22 3603 22 3604 22 3605 22 3606 22 3607 22 3608 22 3609 22 3610 22 3611 22 3612 28 3613 28 3614 28 3615 28 3616 28 3617 28 3618 28 3619 28 3620 28 3621 28 3622 28 3623 28 3624 28 3625 28 3626 28 3627 28 3628 30 3629 30 3630 30 3631 30 3632 30 3633 30 3634 30 3635 30 3636 30 3637 31 3638 31 3639 31 3640 31 3641 31 3642 31 3643 31 3644 31 3645 29 3646 29 3647 29 3648 29 3649 29 3650 29 3651 26 3652 26 3653 26 3654 26 3655 26 3656 25 3657 29 3658 29 3659 29 3660 26 3661 26 3662 26 3663 26 3664 26 3665 26 3666 26 3667 25 3668 25 3669 26 3670 26 3671 26 3672 26 3673 26 3674 26 3675 26 3676 26 3677 25 3678 25 3679 14 3680 14 3681 14 3682 14 3683 14 3684 24 3685 14 3686 14 3687 14 3688 14 3689 14 3690 15 3691 15 3692 15 3693 15 3694 15 3695 15 3696 15 3697 15 3698 15 3699 15 3700 15 3701 15 3702 15 3703 15 3704 15 3705 15 3706 15 3707 15 3708 15 3709 15 3710 15 3711 8 3712 8 3713 8 3714 8 3715 8 3716 8 3717 8 3718 8 3719 8 3720 8 3721 8 3722 8 3723 8 3724 8 3725 11 3726 11 3727 11 3728 11 3729 11 3730 11 3731 11 3732 11 3733 11 3734 11 3735 11 3736 11 3737 11 3738 11 3739 11 3740 11 3741 11 3742 10 3743 10 3744 10 3745 10 3746 10 3747 10 3748 10 3749 10 3750 10 3751 10 3752 10 3753 10 3754 10 3755 10 3756 10 3757 10 3758 10 3759 10 3760 24 3761 24 3762 24 3763 24 3764 24 3765 24 3766 24 3767 24 3768 24 3769 26 3770 16 3771 16 3772 0 3773 0 3774 3 3775 3 3776 3 3777 3 3778 3 3779 3 3780 3 3781 3 3782 3 3783 3 3784 3 3785 3 3786 13 3787 13 3788 3 3789 13 3790 3 3791 13 3792 13 3793 13 3794 13 3795 13 3796 13 3797 13 3798 13 3799 13 3800 13 3801 13 3802 13 3803 13 3804 13 3805 13 3806 13 3807 13 3808 13 3809 4 3810 4 3811 5 3812 5 3813 5 3814 5 3815 5 3816 5 3817 5 3818 5 3819 5 3820 5 3821 5 3822 5 3823 5 3824 4 3825 4 3826 4 3827 4 3828 4 3829 4 3830 4 3831 4 3832 4 3833 4 3834 4 3835 4 3836 4 3837 5 3838 5 3839 5 3840 5 3841 5 3842 5 3843 5 3844 5 3845 5 3846 5 3847 5 3848 5 3849 5 3850 5 3851 27 3852 27 3853 5 3854 5 3855 5 3856 5 3857 5 3858 5 3859 5 3860 5 3861 27 3862 27 3863 27 3864 5 3865 5 3866 5 3867 5 3868 5 3869 5 3870 5 3871 5 3872 5 3873 5 3874 5 3875 5 3876 5 3877 5 3878 5 3879 5 3880 27 3881 27 3882 27 3883 27 3884 27 3885 27 3886 27 3887 27 3888 5 3889 5 3890 5 3891 5 3892 14 3893 14 3894 14 3895 14 3896 14 3897 14 3898 14 3899 14 3900 14 3901 14 3902 14 3903 30 3904 30 3905 31 3906 31 3907 31 3908 31 3909 31 3910 31 3911 31 3912 31 3913 31 3914 31 3915 31 3916 31 3917 25 3918 25 3919 25 3920 31 3921 31 3922 31 3923 31 3924 29 3925 29 3926 25 3927 31 3928 31 3929 31 3930 31 3931 31 3932 31 3933 31 3934 31 3935 31 3936 31 3937 31 3938 31 3939 31 3940 31 3941 29 3942 29 3943 29 3944 26 3945 26 3946 26 3947 26 3948 26 3949 26 3950 26 3951 26 3952 13 3953 13 3954 13 3955 13 3956 13 3957 13 3958 0 3959 0 3960 0 3961 1 3962 26 3963 26 3964 25 3965 26 3966 25 3967 25 3968 24 3969 24 3970 24 3971 24 3972 15 3973 15 3974 15 3975 15 3976 15 3977 15 3978 15 3979 15 3980 15 3981 15 3982 15 3983 15 3984 8 3985 8 3986 8 3987 8 3988 8 3989 8 3990 8 3991 8 3992 8 3993 8 3994 8 3995 8 3996 8 3997 8 3998 8 3999 11 4000 11 4001 11 4002 11 4003 11 4004 11 4005 11 4006 11 4007 11 4008 11 4009 11 4010 11 4011 11 4012 11 4013 11 4014 11 4015 11 4016 11 4017 10 4018 10 4019 10 4020 10 4021 9 4022 10 4023 10 4024 10 4025 10 4026 10 4027 10 4028 10 4029 10 4030 9 4031 9 4032 10 4033 9 4034 9 4035 9 4036 9 4037 10 4038 24 4039 24 4040 24 4041 9 4042 9 4043 9 4044 9 4045 10 4046 10 4047 10 4048 10 4049 10 4050 10 4051 10 4052 10 4053 10 4054 10 4055 10 4056 10 4057 4 4058 4 4059 4 4060 4 4061 4 4062 4 4063 4 4064 4 4065 4 4066 4 4067 4 4068 4 4069 4 4070 11 4071 11 4072 11 4073 11 4074 11 4075 11 4076 11 4077 11 4078 8 4079 8 4080 8 4081 8 4082 9 4083 9 4084 9 4085 9 4086 2 4087 2 4088 2 4089 2 4090 2 4091 2 4092 2 4093 2 4094 2 4095 2 4096 0 4097 0 4098 0 4099 0 4100 13 4101 13 4102 13 4103 13 4104 13 4105 13 4106 13 4107 13 4108 13 4109 13 4110 13 4111 13 4112 13 4113 13 4114 14 4115 14 4116 0 4117 0 4118 0 4119 0 4120 0 4121 0 4122 0 4123 0 4124 0 4125 0 4126 0 4127 16 4128 16 4129 16 4130 16 4131 16 4132 16 4133 16 4134 16 4135 16 4136 16 4137 16 4138 16 4139 16 4140 0 4141 20 4142 20 4143 20 4144 20 4145 20 4146 20 4147 20 4148 20 4149 20 4150 20 4151 20 4152 20 4153 22 4154 22 4155 22 4156 22 4157 22 4158 22 4159 22 4160 22 4161 22 4162 22 4163 22 4164 22 4165 22 4166 22 4167 22 4168 22 4169 22 4170 22 4171 22 4172 28 4173 28 4174 28 4175 28 4176 28 4177 28 4178 28 4179 28 4180 28 4181 28 4182 28 4183 28 4184 28 4185 28 4186 28 4187 28 4188 28 4189 30 4190 30 4191 30 4192 30 4193 30 4194 30 4195 30 4196 31 4197 31 4198 31 4199 31 4200 31 4201 31 4202 31 4203 31 4204 31 4205 31 4206 31 4207 31 4208 10 4209 10 4210 9 4211 9 4212 9 4213 9 4214 9 4215 9 4216 9 4217 9 4218 9 4219 9 4220 9 4221 10 4222 10 4223 10 4224 4 4225 4 4226 4 4227 4 4228 4 4229 4 4230 4 4231 3 4232 9 4233 4 4234 4 4235 4 4236 5 4237 5 4238 13 4239 13 4240 13 4241 13 4242 13 4243 13 4244 13 4245 13 4246 13 4247 13 4248 13 4249 13 4250 27 4251 5 4252 5 4253 5 4254 5 4255 5 4256 5 4257 5 4258 5 4259 5 4260 5 4261 5 4262 5 4263 20 4264 20 4265 20 4266 20 4267 20 4268 20 4269 20 4270 20 4271 20 4272 20 4273 20 4274 20 4275 20 4276 20 4277 20 4278 20 4279 20 4280 20 4281 23 4282 23 4283 23 4284 23 4285 23 4286 23 4287 22 4288 22 4289 22 4290 22 4291 22 4292 22 4293 22 4294 22 4295 22 4296 22 4297 22 4298 22 4299 22 4300 22 4301 28 4302 28 4303 28 4304 28 4305 28 4306 28 4307 28 4308 28 4309 28 4310 28 4311 28 4312 28 4313 28 4314 28 4315 28 4316 28 4317 28 4318 30 4319 30 4320 30 4321 30 4322 30 4323 31 4324 31 4325 31 4326 31 4327 31 4328 31 4329 31 4330 31 4331 31 4332 31 4333 31 4334 31 4335 31 4336 31 4337 31 4338 31 4339 29 4340 29 4341 29 4342 29 4343 29 4344 29 4345 29 4346 29 4347 29 4348 29 4349 29 4350 29 4351 29 4352 29 4353 29 4354 29 4355 29 4356 29 4357 29 4358 29 4359 29 4360 29 4361 29 4362 29 4363 29 4364 29 4365 0 4366 0 4367 0 4368 29 4369 29 4370 29 4371 29 4372 0 4373 0 4374 0 4375 0 4376 0 4377 0 4378 2 4379 2 4380 2 4381 2 4382 2 4383 2 4384 2 4385 2 4386 2 4387 2 4388 2 4389 2 4390 2 4391 14 4392 14 4393 14 4394 14 4395 0 4396 0 4397 16 4398 16 4399 16 4400 16 4401 16 4402 14 4403 14 4404 14 4405 5 4406 5 4407 5 4408 5 4409 5 4410 16 4411 16 4412 16 4413 16 4414 16 4415 16 4416 13 4417 13 4418 13 4419 13 4420 5 4421 5 4422 5 4423 5 4424 5 4425 5 4426 5 4427 5 4428 5 4429 31 4430 31 4431 29 4432 29 4433 29 4434 29 4435 29 4436 29 4437 29 4438 29 4439 8 4440 8 4441 8 4442 8 4443 8 4444 8 4445 11 4446 11 4447 11 4448 11 4449 11 4450 11 4451 11 4452 11 4453 8 4454 8 4455 8 4456 8 4457 9 4458 9 4459 9 4460 9 4461 9 4462 9 4463 9 4464 9 4465 9 4466 9 4467 9 4468 9 4469 10 4470 10 4471 9 4472 9 4473 9 4474 9 4475 9 4476 9 4477 9 4478 9 4479 9 4480 9 4481 9 4482 9 4483 9 4484 9 4485 4 4486 4 4487 4 4488 4 4489 4 4490 9 4491 9 4492 9 4493 9 4494 4 4495 4 4496 4 4497 4 4498 4 4499 4 4500 4 4501 4 4502 4 4503 13 4504 13 4505 13 4506 13 4507 13 4508 13 4509 13 4510 13 4511 4 4512 4 4513 4 4514 18 4515 18 4516 18 4517 18 4518 18 4519 18 4520 18 4521 18 4522 16 4523 16 4524 16 4525 16 4526 16 4527 16 4528 16 4529 0 4530 0 4531 0 4532 16 4533 16 4534 16 4535 16 4536 16 4537 16 4538 16 4539 16 4540 16 4541 16 4542 16 4543 16 4544 16 4545 16 4546 16 4547 16 4548 16 4549 16 4550 16 4551 16 4552 16 4553 16 4554 16 4555 16 4556 17 4557 16 4558 16 4559 16 4560 16 4561 16 4562 16 4563 16 4564 16 4565 16 4566 28 4567 28 4568 28 4569 28 4570 28 4571 28 4572 28 4573 28 4574 28 4575 30 4576 30 4577 30 4578 30 4579 31 4580 31 4581 31 4582 31 4583 31 4584 31 4585 31 4586 31 4587 31 4588 31 4589 31 4590 31 4591 31 4592 31 4593 31 4594 29 4595 29 4596 29 4597 29 4598 29 4599 29 4600 29 4601 29 4602 29 4603 29 4604 29 4605 29 4606 29 4607 29 4608 29 4609 29 4610 29 4611 29 4612 29 4613 29 4614 29 4615 29 4616 29 4617 29 4618 29 4619 29 4620 26 4621 29 4622 29 4623 29 4624 29 4625 29 4626 29 4627 26 4628 26 4629 26 4630 26 4631 26 4632 26 4633 26 4634 26 4635 26 4636 26 4637 26 4638 26 4639 26 4640 26 4641 26 4642 26 4643 5 4644 5 4645 5 4646 5 4647 5 4648 16 4649 16 4650 16 4651 16 4652 16 4653 16 4654 16 4655 16 4656 16 4657 16 4658 11 4659 11 4660 11 4661 14 4662 14 4663 14 4664 14 4665 14 4666 16 4667 16 4668 16 4669 8 4670 8 4671 8 4672 8 4673 9 4674 9 4675 9 4676 9 4677 9 4678 9 4679 9 4680 9 4681 9 4682 9 4683 9 4684 9 4685 9 4686 9 4687 9 4688 14 4689 14 4690 14 4691 14 4692 14 4693 15 4694 15 4695 15 4696 15 4697 15 4698 15 4699 15 4700 15 4701 15 4702 15 4703 15 4704 15 4705 15 4706 15 4707 15 4708 15 4709 15 4710 15 4711 15 4712 8 4713 8 4714 8 4715 8 4716 8 4717 8 4718 8 4719 8 4720 8 4721 8 4722 8 4723 8 4724 8 4725 8 4726 8 4727 8 4728 8 4729 5 4730 5 4731 5 4732 5 4733 8 4734 8 4735 8 4736 8 4737 8 4738 8 4739 14 4740 14 4741 14 4742 14 4743 14 4744 14 4745 14 4746 14 4747 14 4748 14 4749 14 4750 14 4751 14 4752 14 4753 14 4754 4 4755 4 4756 4 4757 14 4758 14 4759 4 4760 4 4761 4 4762 4 4763 4 4764 4 4765 4 4766 4 4767 4 4768 4 4769 4 4770 4 4771 23 4772 23 4773 23 4774 23 4775 28 4776 28 4777 28 4778 28 4779 28 4780 28 4781 28 4782 28 4783 28 4784 28 4785 28 4786 28 4787 28 4788 28 4789 28 4790 28 4791 28 4792 28 4793 30 4794 30 4795 31 4796 31 4797 31 4798 31 4799 28 4800 31 4801 31 4802 31 4803 31 4804 31 4805 31 4806 31 4807 31 4808 31 4809 31 4810 31 4811 29 4812 29 4813 29 4814 29 4815 29 4816 29 4817 29 4818 29 4819 29 4820 29 4821 29 4822 29 4823 29 4824 29 4825 29 4826 29 4827 29 4828 29 4829 29 4830 29 4831 29 4832 29 4833 29 4834 29 4835 29 4836 29 4837 29 4838 29 4839 29 4840 29 4841 29 4842 29 4843 29 4844 29 4845 29 4846 29 4847 29 4848 29 4849 29 4850 29 4851 29 4852 29 4853 29 4854 29 4855 29 4856 29 4857 29 4858 29 4859 29 4860 29 4861 29 4862 26 4863 26 4864 26 4865 26 4866 26 4867 26 4868 26 4869 26 4870 26 4871 26 4872 26 4873 26 4874 26 4875 26 4876 26 4877 26 4878 26 4879 26 4880 26 4881 26 4882 26 4883 26 4884 26 4885 26 4886 26 4887 26 4888 26 4889 26 4890 26 4891 26 4892 26 4893 26 4894 26 4895 26 4896 26 4897 26 4898 26 4899 26 4900 26 4901 26 4902 26 4903 26 4904 26 4905 26 4906 26 4907 26 4908 26 4909 26 4910 26 4911 26 4912 26 4913 26 4914 26 4915 26 4916 26 4917 26 4918 31 4919 29 4920 29 4921 29 4922 29 4923 23 4924 22 4925 23 4926 23 4927 23 4928 23 4929 23 4930 23 4931 23 4932 23 4933 23 4934 23 4935 23 4936 23 4937 23 4938 28 4939 28 4940 28 4941 28 4942 28 4943 28 4944 28 4945 28 4946 28 4947 28 4948 28 4949 28 4950 28 4951 28 4952 28 4953 28 4954 28 4955 28 4956 31 4957 31 4958 31 4959 31 4960 29 4961 29 4962 29 4963 29 4964 29 4965 8 4966 8 4967 8 4968 8 4969 8 4970 8 4971 8 4972 8 4973 8 4974 8 4975 8 4976 8 4977 8 4978 8 4979 8 4980 8 4981 9 4982 9 4983 9 4984 9 4985 4 4986 4 4987 4 4988 4 4989 9 4990 9 4991 9 4992 9 4993 9 4994 9 4995 4 4996 4 4997 4 4998 4 4999 4 5000 4 5001 4 5002 4 5003 14 5004 14 5005 14 5006 4 5007 4 5008 4 5009 4 5010 4 5011 4 5012 4 5013 4 5014 4 5015 4 5016 4 5017 4 5018 4 5019 4 5020 4 5021 4 5022 4 5023 4 5024 4 5025 4 5026 4 5027 4 5028 4 5029 5 5030 5 5031 5 5032 5 5033 5 5034 5 5035 5 5036 5 5037 5 5038 5 5039 5 5040 5 5041 5 5042 5 5043 5 5044 5 5045 5 5046 23 5047 23 5048 23 5049 23 5050 23 5051 23 5052 23 5053 23 5054 23 5055 23 5056 23 5057 23 5058 23 5059 23 5060 23 5061 23 5062 23 5063 23 5064 23 5065 23 5066 23 5067 23 5068 23 5069 28 5070 28 5071 28 5072 28 5073 28 5074 28 5075 28 5076 28 5077 28 5078 28 5079 28 5080 28 5081 28 5082 28 5083 28 5084 28 5085 28 5086 28 5087 29 5088 29 5089 29 5090 29 5091 29 5092 29 5093 29 5094 29 5095 29 5096 29 5097 29 5098 29 5099 29 5100 29 5101 29 5102 29 5103 29 5104 29 5105 29 5106 29 5107 29 5108 29 5109 29 5110 29 5111 29 5112 29 5113 29 5114 29 5115 29 5116 29 5117 29 5118 29 5119 29 5120 29 5121 29 5122 29 5123 29 5124 29 5125 19 5126 19 5127 19 5128 19 5129 19 5130 19 5131 26 5132 26 5133 19 5134 19 5135 26 5136 26 5137 26 5138 26 5139 26 5140 26 5141 26 5142 26 5143 26 5144 26 5145 26 5146 26 5147 26 5148 26 5149 26 5150 26 5151 29 5152 29 5153 29 5154 29 5155 26 5156 16 5157 16 5158 14 5159 14 5160 15 5161 15 5162 15 5163 15 5164 15 5165 15 5166 4 5167 4 5168 7 5169 7 5170 15 5171 15 5172 15 5173 15 5174 8 5175 8 5176 8 5177 8 5178 8 5179 8 5180 8 5181 8 5182 8 5183 8 5184 8 5185 8 5186 8 5187 8 5188 8 5189 8 5190 8 5191 8 5192 8 5193 8 5194 8 5195 8 5196 8 5197 9 5198 9 5199 9 5200 9 5201 9 5202 9 5203 9 5204 9 5205 9 5206 9 5207 9 5208 9 5209 9 5210 9 5211 9 5212 9 5213 9 5214 9 5215 9 5216 9 5217 9 5218 9 5219 9 5220 9 5221 9 5222 9 5223 9 5224 9 5225 4 5226 4 5227 4 5228 4 5229 4 5230 4 5231 20 5232 20 5233 20 5234 20 5235 18 5236 18 5237 18 5238 4 5239 4 5240 4 5241 4 5242 4 5243 4 5244 4 5245 4 5246 4 5247 4 5248 4 5249 4 5250 23 5251 23 5252 23 5253 23 5254 23 5255 23 5256 28 5257 28 5258 28 5259 28 5260 28 5261 28 5262 28 5263 28 5264 28 5265 28 5266 28 5267 28 5268 28 5269 28 5270 28 5271 28 5272 29 5273 29 5274 29 5275 29 5276 29 5277 29 5278 29 5279 29 5280 29 5281 29 5282 29 5283 29 5284 29 5285 29 5286 29 5287 29 5288 29 5289 29 5290 29 5291 29 5292 29 5293 29 5294 29 5295 29 5296 29 5297 29 5298 29 5299 29 5300 29 5301 29 5302 29 5303 19 5304 29 5305 19 5306 19 5307 19 5308 19 5309 19 5310 19 5311 19 5312 19 5313 19 5314 19 5315 19 5316 19 5317 19 5318 19 5319 19 5320 19 5321 19 5322 19 5323 19 5324 19 5325 19 5326 19 5327 19 5328 19 5329 19 5330 19 5331 19 5332 19 5333 19 5334 19 5335 19 5336 19 5337 19 5338 19 5339 19 5340 19 5341 19 5342 19 5343 19 5344 26 5345 26 5346 26 5347 18 5348 19 5349 19 5350 19 5351 18 5352 18 5353 18 5354 18 5355 18 5356 18 5357 18 5358 18 5359 18 5360 18 5361 26 5362 26 5363 26 5364 26 5365 26 5366 26 5367 26 5368 26 5369 26 5370 26 5371 26 5372 26 5373 26 5374 26 5375 26 5376 29 5377 29 5378 29 5379 29 5380 16 5381 3 5382 3 5383 3 5384 3 5385 3 5386 3 5387 3 5388 3 5389 3 5390 3 5391 3 5392 26 5393 26 5394 26 5395 26 5396 26 5397 26 5398 26 5399 26 5400 26 5401 26 5402 26 5403 8 5404 8 5405 8 5406 8 5407 8 5408 8 5409 8 5410 8 5411 8 5412 8 5413 8 5414 8 5415 8 5416 8 5417 8 5418 8 5419 8 5420 8 5421 8 5422 8 5423 8 5424 9 5425 9 5426 9 5427 9 5428 8 5429 8 5430 9 5431 9 5432 9 5433 9 5434 9 5435 9 5436 9 5437 9 5438 9 5439 9 5440 9 5441 9 5442 9 5443 9 5444 9 5445 9 5446 9 5447 9 5448 20 5449 20 5450 20 5451 20 5452 20 5453 20 5454 20 5455 20 5456 20 5457 20 5458 20 5459 20 5460 20 5461 20 5462 20 5463 20 5464 20 5465 20 5466 20 5467 20 5468 20 5469 20 5470 20 5471 20 5472 20 5473 20 5474 20 5475 23 5476 23 5477 23 5478 23 5479 23 5480 23 5481 23 5482 23 5483 23 5484 23 5485 23 5486 23 5487 23 5488 23 5489 23 5490 23 5491 23 5492 23 5493 23 5494 23 5495 23 5496 23 5497 23 5498 23 5499 23 5500 28 5501 28 5502 28 5503 28 5504 28 5505 28 5506 28 5507 28 5508 28 5509 28 5510 28 5511 28 5512 28 5513 28 5514 29 5515 29 5516 29 5517 29 5518 29 5519 29 5520 29 5521 29 5522 29 5523 29 5524 29 5525 29 5526 29 5527 29 5528 29 5529 29 5530 29 5531 29 5532 29 5533 29 5534 29 5535 29 5536 29 5537 29 5538 29 5539 29 5540 29 5541 29 5542 29 5543 29 5544 29 5545 19 5546 19 5547 19 5548 19 5549 19 5550 19 5551 19 5552 19 5553 19 5554 19 5555 19 5556 19 5557 19 5558 19 5559 19 5560 19 5561 19 5562 19 5563 19 5564 19 5565 19 5566 19 5567 19 5568 19 5569 19 5570 19 5571 19 5572 19 5573 19 5574 19 5575 19 5576 19 5577 19 5578 19 5579 19 5580 19 5581 19 5582 19 5583 18 5584 18 5585 19 5586 19 5587 19 5588 19 5589 19 5590 19 5591 19 5592 19 5593 19 5594 19 5595 19 5596 19 5597 19 5598 19 5599 19 5600 19 5601 19 5602 19 5603 18 5604 18 5605 19 5606 18 5607 18 5608 18 5609 18 5610 18 5611 18 5612 18 5613 18 5614 18 5615 18 5616 3 5617 3 5618 3 5619 3 5620 3 5621 23 5622 23 5623 23 5624 23 5625 23 5626 23 5627 23 5628 23 5629 23 5630 23 5631 23 5632 23 5633 28 5634 28 5635 28 5636 28 5637 28 5638 28 5639 28 5640 28 5641 29 5642 29 5643 29 5644 29 5645 29 5646 29 5647 29 5648 4 5649 4 5650 4 5651 4 5652 4 5653 4 5654 23 5655 23 5656 23 5657 23 5658 23 5659 23 5660 23 5661 23 5662 23 5663 23 5664 23 5665 23 5666 23 5667 23 5668 23 5669 23 5670 23 5671 23 5672 23 5673 23 5674 28 5675 28 5676 28 5677 29 5678 29 5679 29 5680 29 5681 29 5682 29 5683 29 5684 29 5685 29 5686 29 5687 29 5688 29 5689 29 5690 29 5691 29 5692 29 5693 29 5694 29 5695 29 5696 29 5697 23 5698 23 5699 19 5700 19 5701 19 5702 19 5703 19 5704 19 5705 19 5706 19 5707 19 5708 19 5709 19 5710 19 5711 19 5712 19 5713 19 5714 19 5715 19 5716 19 5717 19 5718 29 5719 23 5720 23 5721 23 5722 19 5723 23 5724 23 5725 23 5726 23 5727 19 5728 19 5729 19 5730 23 5731 23 5732 19 5733 19 5734 19 5735 19 5736 19 5737 19 5738 19 5739 19 5740 19 5741 19 5742 19 5743 19 5744 19 5745 19 5746 19 5747 19 5748 19 5749 19 5750 19 5751 19 5752 19 5753 19 5754 19 5755 19 5756 19 5757 19 5758 19 5759 19 5760 19 5761 19 5762 19 5763 19 5764 19 5765 19 5766 19 5767 19 5768 19 5769 19 5770 19 5771 19 5772 19 5773 19 5774 19 5775 19 5776 19 5777 19 5778 19 5779 19 5780 19 5781 19 5782 19 5783 19 5784 19 5785 19 5786 19 5787 19 5788 18 5789 18 5790 18 5791 18 5792 18 5793 18 5794 18 5795 18 5796 18 5797 18 5798 18 5799 18 5800 18 5801 18 5802 18 5803 18 5804 18 5805 18 5806 18 5807 18 5808 18 5809 18 5810 26 5811 26 5812 23 5813 23 5814 23 5815 23 5816 23 5817 23 5818 23 5819 23 5820 23 5821 23 5822 23 5823 18 5824 18 5825 18 5826 18 5827 18 5828 18 5829 18 5830 18 5831 23 5832 23 5833 23 5834 23 5835 23 5836 18 5837 18 5838 18 5839 18 5840 23 5841 23 5842 23 5843 23 5844 23 5845 23 5846 23 5847 23 5848 23 5849 23 5850 23 5851 23 5852 23 5853 23 5854 23 5855 23 5856 23 5857 23 5858 23 5859 23 5860 23 5861 23 5862 23 5863 23 5864 23 5865 29 5866 29 5867 29 5868 29 5869 29 5870 29 5871 29 5872 18 5873 26 5874 26 5875 26 5876 27 5877 27 5878 26 5879 27 5880 26 5881 26 5882 26 5883 26 5884 26 5885 26 5886 18 5887 26 5888 27 5889 27 5890 26 5891 27 5892 26 5893 26 5894 26 5895 26 5896 26 5897 26 5898 26 5899 26 5900 26 5901 26 5902 26 5903 26 5904 26 5905 26 5906 26 5907 26 5908 26 5909 26 5910 26 5911 26 5912 26 5913 26 5914 26 5915 26 5916 26 5917 26 5918 26 5919 26 5920 26 5921 26 5922 26 5923 26 5924 26 5925 26 5926 26 5927 26 5928 26 5929 26 5930 26 5931 26 5932 26 5933 26 5934 26 5935 26 5936 26 5937 26 5938 26 5939 26 5940 26 5941 26 5942 26 5943 25 5944 25 5945 25 5946 25 5947 25 5948 25 5949 19 5950 19 5951 19 5952 19 5953 19 5954 19 5955 19 5956 19 5957 19 5958 19 5959 19 5960 19 5961 19 5962 19 5963 19 5964 19 5965 19 5966 19 5967 19 5968 19 5969 17 5970 17 5971 19 5972 17 5973 17 5974 17 5975 17 5976 17 5977 17 5978 17 5979 19 5980 19 5981 19 5982 19 5983 19 5984 19 5985 19 5986 19 5987 19 5988 19 5989 19 5990 19 5991 19 5992 19 5993 19 5994 19 5995 19 5996 19 5997 19 5998 19 5999 19 6000 19 6001 19 6002 19 6003 18 6004 18 6005 19 6006 18 6007 18 6008 18 6009 18 6010 18 6011 18 6012 18 6013 18 6014 18 6015 18 6016 18 6017 18 6018 23 6019 18 6020 18 6021 18 6022 18 6023 18 6024 18 6025 18 6026 18 6027 18 6028 18 6029 18 6030 18 6031 18 6032 18 6033 18 6034 18 6035 18 6036 18 6037 18 6038 18 6039 18 6040 27 6041 27 6042 27 6043 27 6044 27 6045 27 6046 27 6047 27 6048 27 6049 27 6050 27 6051 27 6052 27 6053 27 6054 27 6055 27 6056 27 6057 27 6058 26 6059 26 6060 27 6061 26 6062 26 6063 26 6064 26 6065 26 6066 26 6067 26 6068 26 6069 26 6070 26 6071 26 6072 26 6073 26 6074 26 6075 26 6076 26 6077 26 6078 26 6079 26 6080 26 6081 26 6082 26 6083 26 6084 26 6085 26 6086 26 6087 26 6088 26 6089 26 6090 26 6091 26 6092 25 6093 25 6094 26 6095 23 6096 23 6097 23 6098 23 6099 23 6100 23 6101 23 6102 23 6103 23 6104 23 6105 23 6106 19 6107 19 6108 19 6109 19 6110 19 6111 19 6112 19 6113 19 6114 19 6115 19 6116 19 6117 19 6118 19 6119 19 6120 19 6121 19 6122 19 6123 19 6124 19 6125 19 6126 19 6127 19 6128 19 6129 19 6130 19 6131 19 6132 19 6133 19 6134 19 6135 19 6136 19 6137 19 6138 19 6139 19 6140 19 6141 17 6142 17 6143 17 6144 17 6145 17 6146 17 6147 17 6148 17 6149 17 6150 19 6151 17 6152 17 6153 17 6154 17 6155 17 6156 17 6157 19 6158 19 6159 19 6160 19 6161 19 6162 19 6163 19 6164 19 6165 19 6166 19 6167 19 6168 19 6169 19 6170 19 6171 19 6172 19 6173 18 6174 16 6175 16 6176 16 6177 16 6178 16 6179 18 6180 18 6181 16 6182 18 6183 16 6184 18 6185 18 6186 18 6187 18 6188 18 6189 18 6190 18 6191 18 6192 18 6193 18 6194 18 6195 18 6196 18 6197 18 6198 18 6199 18 6200 18 6201 18 6202 18 6203 18 6204 18 6205 18 6206 18 6207 18 6208 18 6209 18 6210 18 6211 18 6212 18 6213 18 6214 18 6215 18 6216 18 6217 18 6218 18 6219 18 6220 18 6221 18 6222 18 6223 18 6224 18 6225 18 6226 18 6227 18 6228 18 6229 18 6230 18 6231 18 6232 18 6233 18 6234 18 6235 18 6236 18 6237 18 6238 18 6239 18 6240 18 6241 18 6242 18 6243 18 6244 18 6245 18 6246 18 6247 18 6248 18 6249 18 6250 18 6251 18 6252 18 6253 18 6254 27 6255 27 6256 27 6257 27 6258 27 6259 27 6260 27 6261 27 6262 27 6263 27 6264 27 6265 27 6266 27 6267 27 6268 27 6269 27 6270 27 6271 27 6272 27 6273 27 6274 27 6275 27 6276 27 6277 27 6278 27 6279 27 6280 27 6281 27 6282 27 6283 27 6284 27 6285 27 6286 27 6287 27 6288 26 6289 27 6290 27 6291 27 6292 26 6293 26 6294 26 6295 26 6296 26 6297 26 6298 26 6299 26 6300 26 6301 26 6302 26 6303 26 6304 26 6305 26 6306 27 6307 26 6308 26 6309 26 6310 26 6311 26 6312 26 6313 26 6314 26 6315 26 6316 26 6317 26 6318 26 6319 26 6320 26 6321 26 6322 26 6323 26 6324 26 6325 27 6326 27 6327 27 6328 27 6329 27 6330 27 6331 27 6332 27 6333 27 6334 27 6335 27 6336 27 6337 27 6338 27 6339 27 6340 27 6341 27 6342 27 6343 26 6344 27 6345 27 6346 26 6347 27 6348 24 6349 24 6350 24 6351 24 6352 24 6353 24 6354 24 6355 24 6356 24 6357 24 6358 24 6359 24 6360 24 6361 24 6362 16 6363 16 6364 16 6365 16 6366 18 6367 18 6368 18 6369 18 6370 18 6371 18 6372 18 6373 18 6374 18 6375 18 6376 18 6377 18 6378 18 6379 18 6380 18 6381 18 6382 18 6383 23 6384 23 6385 23 6386 23 6387 19 6388 19 6389 19 6390 19 6391 19 6392 19 6393 19 6394 19 6395 23 6396 21 6397 19 6398 19 6399 21 6400 21 6401 21 6402 21 6403 21 6404 21 6405 17 6406 21 6407 21 6408 21 6409 21 6410 21 6411 21 6412 21 6413 21 6414 21 6415 21 6416 21 6417 21 6418 21 6419 21 6420 21 6421 21 6422 21 6423 21 6424 21 6425 21 6426 21 6427 21 6428 21 6429 21 6430 21 6431 21 6432 21 6433 17 6434 17 6435 17 6436 17 6437 17 6438 17 6439 17 6440 17 6441 17 6442 17 6443 17 6444 17 6445 17 6446 17 6447 17 6448 17 6449 17 6450 17 6451 17 6452 17 6453 17 6454 18 6455 18 6456 18 6457 18 6458 18 6459 18 6460 18 6461 18 6462 18 6463 18 6464 18 6465 18 6466 18 6467 18 6468 18 6469 18 6470 18 6471 18 6472 18 6473 18 6474 18 6475 18 6476 18 6477 18 6478 18 6479 18 6480 18 6481 18 6482 18 6483 18 6484 18 6485 27 6486 18 6487 18 6488 18 6489 18 6490 18 6491 27 6492 27 6493 27 6494 27 6495 27 6496 27 6497 27 6498 27 6499 27 6500 27 6501 27 6502 27 6503 27 6504 27 6505 27 6506 27 6507 27 6508 27 6509 27 6510 27 6511 27 6512 27 6513 27 6514 27 6515 27 6516 27 6517 27 6518 27 6519 27 6520 27 6521 27 6522 27 6523 27 6524 27 6525 27 6526 27 6527 27 6528 27 6529 27 6530 27 6531 27 6532 27 6533 27 6534 27 6535 27 6536 27 6537 27 6538 27 6539 27 6540 27 6541 27 6542 27 6543 27 6544 27 6545 27 6546 27 6547 27 6548 27 6549 27 6550 24 6551 24 6552 24 6553 24 6554 24 6555 24 6556 24 6557 24 6558 21 6559 21 6560 21 6561 21 6562 21 6563 21 6564 21 6565 21 6566 21 6567 21 6568 21 6569 21 6570 21 6571 21 6572 21 6573 21 6574 21 6575 21 6576 21 6577 21 6578 21 6579 21 6580 21 6581 21 6582 21 6583 21 6584 21 6585 21 6586 17 6587 17 6588 17 6589 17 6590 17 6591 17 6592 17 6593 17 6594 17 6595 17 6596 17 6597 17 6598 17 6599 17 6600 17 6601 17 6602 17 6603 17 6604 17 6605 17 6606 17 6607 17 6608 17 6609 17 6610 17 6611 17 6612 17 6613 17 6614 17 6615 17 6616 17 6617 17 6618 17 6619 17 6620 17 6621 17 6622 17 6623 17 6624 17 6625 17 6626 17 6627 17 6628 17 6629 17 6630 17 6631 16 6632 16 6633 16 6634 16 6635 16 6636 17 6637 17 6638 17 6639 17 6640 19 6641 19 6642 19 6643 19 6644 16 6645 16 6646 16 6647 16 6648 16 6649 16 6650 16 6651 16 6652 16 6653 16 6654 16 6655 16 6656 16 6657 16 6658 16 6659 16 6660 16 6661 16 6662 16 6663 16 6664 16 6665 16 6666 16 6667 16 6668 16 6669 16 6670 16 6671 16 6672 16 6673 16 6674 16 6675 16 6676 16 6677 16 6678 16 6679 16 6680 16 6681 16 6682 16 6683 16 6684 16 6685 16 6686 16 6687 16 6688 16 6689 16 6690 16 6691 16 6692 16 6693 16 6694 16 6695 16 6696 16 6697 16 6698 16 6699 16 6700 16 6701 16 6702 16 6703 16 6704 16 6705 24 6706 24 6707 24 6708 27 6709 27 6710 24 6711 27 6712 24 6713 27 6714 27 6715 27 6716 27 6717 27 6718 27 6719 27 6720 17 6721 17 6722 17 6723 17 6724 17 6725 17 6726 17 6727 17 6728 17 6729 17 6730 17 6731 17 6732 17 6733 17 6734 17 6735 17 6736 17 6737 17 6738 17 6739 17 6740 17 6741 17 6742 17 6743 17 6744 17 6745 17 6746 17 6747 17 6748 17 6749 17 6750 17 6751 17 6752 17 6753 17 6754 17 6755 17 6756 17 6757 17 6758 16 6759 17 6760 17 6761 16 6762 16 6763 16 6764 16 6765 16 6766 16 6767 16 6768 16 6769 16 6770 16 6771 16 6772 16 6773 16 6774 16 6775 16 6776 16 6777 16 6778 16 6779 16 6780 16 6781 16 6782 16 6783 16 6784 16 6785 17 6786 19 6787 19 6788 19 6789 19 6790 16 6791 8 6792 8 6793 8 6794 9 6795 9 6796 9 6797 9 6798 9 6799 9 6800 9 6801 9 6802 9 6803 9 6804 9 6805 9 6806 9 6807 9 6808 9 6809 9 6810 9 6811 9 6812 9 6813 9 6814 9 6815 9 6816 9 6817 9 6818 6 6819 6 6820 6 6821 6 6822 6 6823 6 6824 6 6825 6 6826 6 6827 6 6828 6 6829 7 6830 7 6831 7 6832 7 6833 4 6834 7 6835 7 6836 7 6837 4 6838 4 6839 4 6840 4 6841 4 6842 4 6843 4 6844 4 6845 5 6846 5 6847 5 6848 5 6849 5 6850 5 6851 5 6852 5 6853 5 6854 5 6855 5 6856 5 6857 7 6858 7 6859 7 6860 7 6861 7 6862 7 6863 7 6864 7 6865 7 6866 7 6867 7 6868 7 6869 7 6870 7 6871 7 6872 7 6873 7 6874 7 6875 7 6876 7 6877 5 6878 5 6879 7 6880 5 6881 5 6882 5 6883 5 6884 7 6885 5 6886 5 6887 5 6888 5 6889 5 6890 5 6891 5 6892 5 6893 5 6894 5 6895 5 6896 5 6897 5 6898 5 6899 5 6900 20 6901 5 6902 20 6903 20 6904 20 6905 20 6906 20 6907 20 6908 20 6909 20 6910 20 6911 20 6912 20 6913 20 6914 20 6915 20 6916 20 6917 20 6918 20 6919 20 6920 20 6921 23 6922 23 6923 23 6924 23 6925 23 6926 23 6927 23 6928 23 6929 23 6930 23 6931 23 6932 23 6933 23 6934 23 6935 23 6936 23 6937 23 6938 23 6939 23 6940 23 6941 23 6942 23 6943 23 6944 23 6945 23 6946 23 6947 23 6948 23 6949 23 6950 23 6951 23 6952 21 6953 21 6954 21 6955 21 6956 21 6957 21 6958 21 6959 21 6960 21 6961 21 6962 21 6963 21 6964 21 6965 21 6966 21 6967 21 6968 21 6969 21 6970 21 6971 21 6972 21 6973 21 6974 21 6975 21 6976 21 6977 21 6978 21 6979 21 6980 21 6981 21 6982 21 6983 21 6984 21 6985 21 6986 21 6987 21 6988 21 6989 21 6990 21 6991 21 6992 21 6993 21 6994 21 6995 21 6996 21 6997 21 6998 21 6999 21 7000 21 7001 21 7002 21 7003 21 7004 21 7005 21 7006 17 7007 17 7008 17 7009 17 7010 17 7011 17 7012 17 7013 17 7014 17 7015 17 7016 17 7017 17 7018 17 7019 17 7020 17 7021 17 7022 17 7023 17 7024 17 7025 17 7026 17 7027 17 7028 17 7029 17 7030 17 7031 17 7032 17 7033 17 7034 17 7035 17 7036 17 7037 17 7038 17 7039 17 7040 17 7041 17 7042 17 7043 23 7044 21 7045 21 7046 23 7047 23 7048 21 7049 21 7050 21 7051 21 7052 21 7053 23 7054 23 7055 23 7056 23 7057 23 7058 23 7059 23 7060 23 7061 23 7062 23 7063 23 7064 23 7065 23 7066 21 7067 21 7068 23 7069 23 7070 21 7071 21 7072 21 7073 21 7074 21 7075 21 7076 21 7077 21 7078 21 7079 21 7080 21 7081 21 7082 21 7083 21 7084 21 7085 21 7086 21 7087 21 7088 21 7089 21 7090 21 7091 21 7092 21 7093 21 7094 21 7095 21 7096 21 7097 17 7098 17 7099 17 7100 17 7101 17 7102 21 7103 21 7104 21 7105 21 7106 17 7107 17 7108 17 7109 17 7110 17 7111 17 7112 17 7113 17 7114 17 7115 17 7116 17 7117 17 7118 17 7119 17 7120 17 7121 17 7122 17 7123 17 7124 17 7125 17 7126 17 7127 17 7128 17 7129 17 7130 17 7131 17 7132 17 7133 17 7134 17 7135 17 7136 17 7137 17 7138 17 7139 17 7140 17 7141 17 7142 17 7143 17 7144 16 7145 16 7146 17 7147 17 7148 17 7149 17 7150 17 7151 17 7152 17 7153 17 7154 17 7155 17 7156 17 7157 17 7158 17 7159 16 7160 16 7161 16 7162 16 7163 16 7164 16 7165 16 7166 16 7167 16 7168 16 7169 16 7170 0 7171 0 7172 0 7173 0 7174 0 7175 0 7176 0 7177 0 7178 0 7179 0 7180 0 7181 0 7182 0 7183 0 7184 0 7185 0 7186 0 7187 0 7188 0 7189 0 7190 0 7191 0 7192 0 7193 0 7194 0 7195 0 7196 0 7197 0 7198 0 7199 0 7200 0 7201 0 7202 0 7203 0 7204 0 7205 0 7206 0 7207 0 7208 0 7209 0 7210 0 7211 0 7212 0 7213 0 7214 0 7215 0 7216 0 7217 0 7218 0 7219 0 7220 0 7221 0 7222 0 7223 21 7224 21 7225 21 7226 21 7227 21 7228 21 7229 21 7230 21 7231 21 7232 21 7233 21 7234 21 7235 21 7236 21 7237 21 7238 21 7239 21 7240 21 7241 21 7242 21 7243 21 7244 21 7245 21 7246 21 7247 21 7248 17 7249 17 7250 17 7251 17 7252 17 7253 17 7254 17 7255 17 7256 17 7257 17 7258 17 7259 17 7260 17 7261 17 7262 20 7263 20 7264 20 7265 20 7266 20 7267 20 7268 20 7269 20 7270 20 7271 20 7272 20 7273 20 7274 23 7275 23 7276 23 7277 23 7278 23 7279 23 7280 23 7281 23 7282 23 7283 23 7284 23 7285 23 7286 23 7287 23 7288 23 7289 23 7290 23 7291 23 7292 23 7293 23 7294 23 7295 23 7296 23 7297 23 7298 23 7299 23 7300 23 7301 23 7302 23 7303 23 7304 23 7305 23 7306 23 7307 23 7308 15 7309 15 7310 15 7311 15 7312 15 7313 15 7314 15 7315 15 7316 15 7317 8 7318 8 7319 8 7320 8 7321 8 7322 8 7323 8 7324 8 7325 8 7326 8 7327 8 7328 8 7329 8 7330 8 7331 8 7332 8 7333 8 7334 9 7335 9 7336 9 7337 9 7338 9 7339 9 7340 9 7341 9 7342 9 7343 9 7344 9 7345 9 7346 9 7347 9 7348 9 7349 9 7350 9 7351 9 7352 9 7353 9 7354 9 7355 6 7356 6 7357 6 7358 6 7359 6 7360 6 7361 6 7362 6 7363 6 7364 6 7365 7 7366 7 7367 7 7368 7 7369 7 7370 7 7371 7 7372 7 7373 7 7374 7 7375 7 7376 7 7377 7 7378 7 7379 4 7380 4 7381 4 7382 4 7383 4 7384 5 7385 5 7386 5 7387 5 7388 5 7389 5 7390 7 7391 7 7392 7 7393 7 7394 7 7395 7 7396 7 7397 7 7398 7 7399 7 7400 7 7401 7 7402 7 7403 7 7404 7 7405 7 7406 7 7407 7 7408 7 7409 7 7410 7 7411 7 7412 7 7413 7 7414 7 7415 7 7416 7 7417 7 7418 7 7419 7 7420 7 7421 7 7422 7 7423 21 7424 21 7425 7 7426 7 7427 5 7428 5 7429 5 7430 5 7431 5 7432 5 7433 5 7434 5 7435 5 7436 20 7437 20 7438 20 7439 20 7440 20 7441 20 7442 20 7443 20 7444 20 7445 20 7446 20 7447 20 7448 20 7449 20 7450 20 7451 20 7452 20 7453 20 7454 21 7455 21 7456 23 7457 23 7458 23 7459 23 7460 23 7461 23 7462 23 7463 23 7464 23 7465 23 7466 23 7467 23 7468 23 7469 23 7470 23 7471 23 7472 23 7473 23 7474 23 7475 23 7476 23 7477 23 7478 23 7479 23 7480 23 7481 23 7482 23 7483 23 7484 23 7485 23 7486 21 7487 21 7488 21 7489 21 7490 21 7491 21 7492 21 7493 21 7494 23 7495 23 7496 23 7497 23 7498 23 7499 23 7500 18 7501 18 7502 18 7503 18 7504 18 7505 18 7506 18 7507 18 7508 18 7509 18 7510 18 7511 17 7512 17 7513 17 7514 17 7515 17 7516 17 7517 17 7518 17 7519 17 7520 17 7521 17 7522 17 7523 17 7524 17 7525 17 7526 17 7527 17 7528 17 7529 17 7530 17 7531 17 7532 17 7533 17 7534 17 7535 17 7536 17 7537 17 7538 17 7539 17 7540 17 7541 17 7542 17 7543 17 7544 17 7545 17 7546 17 7547 17 7548 17 7549 17 7550 17 7551 17 7552 17 7553 17 7554 17 7555 17 7556 17 7557 17 7558 0 7559 0 7560 16 7561 0 7562 0 7563 0 7564 0 7565 0 7566 0 7567 0 7568 0 7569 0 7570 0 7571 0 7572 0 7573 0 7574 0 7575 0 7576 0 7577 0 7578 0 7579 0 7580 0 7581 0 7582 0 7583 0 7584 0 7585 0 7586 0 7587 0 7588 0 7589 0 7590 1 7591 1 7592 2 7593 2 7594 2 7595 2 7596 2 7597 2 7598 2 7599 2 7600 2 7601 7 7602 7 7603 7 7604 7 7605 7 7606 7 7607 7 7608 7 7609 7 7610 7 7611 7 7612 7 7613 7 7614 7 7615 7 7616 7 7617 7 7618 7 7619 7 7620 7 7621 7 7622 7 7623 7 7624 7 7625 7 7626 7 7627 7 7628 7 7629 7 7630 7 7631 7 7632 7 7633 7 7634 7 7635 7 7636 7 7637 7 7638 7 7639 7 7640 7 7641 7 7642 7 7643 7 7644 7 7645 7 7646 7 7647 21 7648 21 7649 21 7650 21 7651 21 7652 5 7653 5 7654 5 7655 5 7656 5 7657 5 7658 20 7659 20 7660 20 7661 20 7662 20 7663 20 7664 20 7665 20 7666 20 7667 20 7668 20 7669 21 7670 21 7671 20 7672 21 7673 21 7674 21 7675 21 7676 20 7677 20 7678 21 7679 21 7680 21 7681 21 7682 21 7683 21 7684 21 7685 21 7686 21 7687 23 7688 23 7689 21 7690 21 7691 21 7692 21 7693 21 7694 21 7695 21 7696 21 7697 21 7698 21 7699 21 7700 21 7701 21 7702 21 7703 21 7704 21 7705 21 7706 21 7707 21 7708 21 7709 21 7710 21 7711 21 7712 21 7713 21 7714 21 7715 21 7716 21 7717 21 7718 21 7719 21 7720 21 7721 21 7722 21 7723 21 7724 21 7725 21 7726 21 7727 21 7728 21 7729 0 7730 1 7731 1 7732 1 7733 1 7734 1 7735 1 7736 1 7737 1 7738 1 7739 2 7740 2 7741 2 7742 2 7743 2 7744 2 7745 2 7746 2 7747 2 7748 2 7749 2 7750 2 7751 2 7752 2 7753 2 7754 2 7755 2 7756 2 7757 2 7758 2 7759 2 7760 2 7761 2 7762 2 7763 2 7764 2 7765 2 7766 3 7767 3 7768 3 7769 3 7770 3 7771 3 7772 3 7773 3 7774 3 7775 3 7776 3 7777 3 7778 3 7779 3 7780 3 7781 3 7782 3 7783 3 7784 3 7785 3 7786 3 7787 3 7788 3 7789 3 7790 3 7791 3 7792 3 7793 3 7794 3 7795 3 7796 3 7797 3 7798 3 7799 3 7800 3 7801 3 7802 3 7803 3 7804 3 7805 3 7806 3 7807 3 7808 3 7809 3 7810 13 7811 13 7812 13 7813 13 7814 13 7815 13 7816 13 7817 13 7818 13 7819 13 7820 13 7821 13 7822 13 7823 13 7824 13 7825 13 7826 13 7827 13 7828 13 7829 13 7830 13 7831 14 7832 13 7833 14 7834 14 7835 14 7836 14 7837 14 7838 14 7839 14 7840 14 7841 14 7842 14 7843 14 7844 14 7845 14 7846 14 7847 14 7848 15 7849 15 7850 15 7851 15 7852 15 7853 15 7854 15 7855 15 7856 15 7857 15 7858 15 7859 15 7860 15 7861 15 7862 15 7863 15 7864 8 7865 8 7866 8 7867 8 7868 8 7869 8 7870 8 7871 8 7872 8 7873 8 7874 8 7875 8 7876 8 7877 8 7878 8 7879 9 7880 9 7881 9 7882 9 7883 9 7884 9 7885 9 7886 9 7887 9 7888 9 7889 9 7890 9 7891 9 7892 9 7893 9 7894 9 7895 9 7896 9 7897 9 7898 9 7899 9 7900 6 7901 6 7902 6 7903 6 7904 6 7905 6 7906 6 7907 6 7908 6 7909 6 7910 7 7911 7 7912 7 7913 7 7914 7 7915 7 7916 7 7917 7 7918 7 7919 7 7920 7 7921 7 7922 7 7923 7 7924 7 7925 7 7926 7 7927 7 7928 7 7929 7 7930 3 7931 13 7932 13 7933 13 7934 13 7935 13 7936 13 7937 13 7938 13 7939 13 7940 13 7941 13 7942 13 7943 13 7944 13 7945 13 7946 13 7947 13 7948 13 7949 13 7950 13 7951 13 7952 13 7953 13 7954 14 7955 14 7956 14 7957 14 7958 14 7959 14 7960 14 7961 14 7962 21 7963 21 7964 21 7965 21 7966 21 7967 17 7968 17 7969 1 7970 1 7971 1 7972 17 7973 17 7974 1 7975 1 7976 1 7977 17 7978 17 7979 17 7980 1 7981 1 7982 1 7983 1 7984 1 7985 1 7986 1 7987 17 7988 17 7989 17 7990 17 7991 17 7992 17 7993 0 7994 0 7995 0 7996 0 7997 0 7998 0 7999 0 8000 0 8001 0 8002 0 8003 0 8004 0 8005 0 8006 0 8007 0 8008 0 8009 0 8010 0 8011 0 8012 0 8013 0 8014 1 8015 1 8016 1 8017 1 8018 1 8019 1 8020 1 8021 1 8022 1 8023 2 8024 2 8025 2 8026 2 8027 2 8028 2 8029 2 8030 2 8031 2 8032 2 8033 2 8034 2 8035 2 8036 2 8037 3 8038 3 8039 3 8040 3 8041 3 8042 3 8043 3 8044 3 8045 3 8046 3 8047 3 8048 3 8049 3 8050 3 8051 3 8052 13 8053 13 8054 3 8055 3 8056 13 8057 13 8058 13 8059 13 8060 13 8061 13 8062 13 8063 13 8064 13 8065 13 8066 13 8067 13 8068 13 8069 13 8070 13 8071 13 8072 13 8073 13 8074 13 8075 13 8076 13 8077 14 8078 14 8079 14 8080 15 8081 14 8082 14 8083 15 8084 15 8085 15 8086 15 8087 15 8088 15 8089 15 8090 15 8091 15 8092 15 8093 15 8094 15 8095 15 8096 15 8097 15 8098 15 8099 12 8100 8 8101 8 8102 8 8103 8 8104 8 8105 8 8106 8 8107 8 8108 8 8109 8 8110 8 8111 8 8112 8 8113 9 8114 9 8115 9 8116 9 8117 9 8118 9 8119 9 8120 9 8121 9 8122 9 8123 9 8124 9 8125 9 8126 9 8127 9 8128 9 8129 9 8130 9 8131 9 8132 9 8133 9 8134 6 8135 6 8136 6 8137 6 8138 6 8139 6 8140 6 8141 6 8142 6 8143 6 8144 7 8145 7 8146 7 8147 7 8148 7 8149 7 8150 7 8151 7 8152 7 8153 7 8154 7 8155 7 8156 7 8157 7 8158 7 8159 7 8160 7 8161 7 8162 7 8163 7 8164 7 8165 7 8166 7 8167 7 8168 7 8169 7 8170 7 8171 7 8172 7 8173 7 8174 7 8175 7 8176 7 8177 1 8178 1 8179 7 8180 7 8181 7 8182 7 8183 7 8184 7 8185 7 8186 21 8187 21 8188 21 8189 21 8190 21 8191 21 8192 21 8193 21 8194 20 8195 20 8196 21 8197 21 8198 21 8199 21 8200 21 8201 21 8202 21 8203 21 8204 21 8205 21 8206 21 8207 20 8208 20 8209 15 8210 15 8211 15 8212 15 8213 15 8214 15 8215 15 8216 15 8217 15 8218 15 8219 15 8220 15 8221 15 8222 15 8223 15 8224 12 8225 12 8226 8 8227 8 8228 8 8229 8 8230 8 8231 8 8232 8 8233 8 8234 8 8235 8 8236 9 8237 9 8238 9 8239 9 8240 9 8241 9 8242 9 8243 9 8244 9 8245 9 8246 9 8247 9 8248 9 8249 9 8250 9 8251 9 8252 9 8253 9 8254 9 8255 9 8256 6 8257 6 8258 6 8259 6 8260 6 8261 6 8262 6 8263 6 8264 6 8265 6 8266 6 8267 7 8268 7 8269 7 8270 7 8271 7 8272 7 8273 7 8274 7 8275 7 8276 7 8277 7 8278 7 8279 7 8280 7 8281 7 8282 7 8283 7 8284 7 8285 7 8286 7 8287 7 8288 7 8289 7 8290 7 8291 7 8292 1 8293 1 8294 1 8295 1 8296 1 8297 7 8298 1 8299 1 8300 1 8301 1 8302 1 8303 1 8304 7 8305 7 8306 7 8307 7 8308 7 8309 7 8310 7 8311 21 8312 21 8313 21 8314 21 8315 21 8316 21 8317 21 8318 21 8319 3 8320 3 8321 3 8322 3 8323 3 8324 3 8325 3 8326 3 8327 3 8328 3 8329 3 8330 3 8331 3 8332 3 8333 3 8334 3 8335 3 8336 3 8337 3 8338 3 8339 3 8340 3 8341 3 8342 3 8343 3 8344 3 8345 3 8346 3 8347 3 8348 3 8349 3 8350 3 8351 3 8352 13 8353 13 8354 13 8355 13 8356 13 8357 13 8358 13 8359 13 8360 13 8361 13 8362 13 8363 13 8364 13 8365 13 8366 13 8367 13 8368 13 8369 13 8370 13 8371 13 8372 13 8373 13 8374 13 8375 15 8376 15 8377 15 8378 15 8379 15 8380 15 8381 15 8382 15 8383 15 8384 15 8385 15 8386 15 8387 15 8388 12 8389 12 8390 12 8391 12 8392 8 8393 8 8394 8 8395 8 8396 8 8397 8 8398 8 8399 9 8400 9 8401 9 8402 9 8403 9 8404 9 8405 9 8406 9 8407 9 8408 9 8409 9 8410 9 8411 9 8412 9 8413 9 8414 12 8415 12 8416 12 8417 9 8418 9 8419 6 8420 6 8421 6 8422 6 8423 6 8424 6 8425 6 8426 6 8427 6 8428 6 8429 6 8430 7 8431 7 8432 7 8433 7 8434 7 8435 7 8436 7 8437 7 8438 7 8439 7 8440 7 8441 7 8442 7 8443 7 8444 7 8445 7 8446 7 8447 7 8448 7 8449 7 8450 7 8451 7 8452 7 8453 7 8454 1 8455 1 8456 1 8457 1 8458 1 8459 1 8460 1 8461 1 8462 1 8463 1 8464 1 8465 1 8466 1 8467 7 8468 21 8469 21 8470 7 8471 7 8472 7 8473 7 8474 21 8475 21 8476 21 8477 21 8478 21 8479 21 8480 21 8481 21 8482 21 8483 21 8484 21 8485 21 8486 21 8487 1 8488 1 8489 1 8490 1 8491 1 8492 1 8493 1 8494 1 8495 1 8496 1 8497 1 8498 1 8499 1 8500 1 8501 1 8502 1 8503 1 8504 1 8505 0 8506 0 8507 0 8508 0 8509 0 8510 0 8511 0 8512 0 8513 0 8514 0 8515 0 8516 1 8517 0 8518 1 8519 0 8520 0 8521 0 8522 0 8523 0 8524 1 8525 1 8526 1 8527 1 8528 1 8529 1 8530 1 8531 1 8532 1 8533 1 8534 1 8535 1 8536 1 8537 0 8538 0 8539 0 8540 0 8541 0 8542 7 8543 7 8544 7 8545 7 8546 7 8547 7 8548 7 8549 7 8550 7 8551 7 8552 7 8553 7 8554 7 8555 7 8556 7 8557 7 8558 7 8559 1 8560 1 8561 1 8562 1 8563 1 8564 1 8565 1 8566 1 8567 1 8568 1 8569 1 8570 1 8571 1 8572 1 8573 1 8574 1 8575 1 8576 1 8577 1 8578 1 8579 1 8580 1 8581 1 8582 1 8583 1 8584 1 8585 1 8586 1 8587 1 8588 0 8589 0 8590 1 8591 1 8592 1 8593 1 8594 1 8595 1 8596 1 8597 1 8598 1 8599 1 8600 1 8601 1 8602 1 8603 1 8604 1 8605 1 8606 1 8607 1 8608 0 8609 0 8610 0 8611 1 8612 1 8613 1 8614 1 8615 1 8616 1 8617 1 8618 1 8619 1 8620 1 8621 2 8622 2 8623 2 8624 1 8625 1 8626 2 8627 2 8628 2 8629 2 8630 2 8631 2 8632 2 8633 2 8634 2 8635 2 8636 2 8637 2 8638 2 8639 2 8640 2 8641 15 8642 15 8643 15 8644 12 8645 12 8646 12 8647 12 8648 12 8649 12 8650 12 8651 12 8652 12 8653 8 8654 8 8655 8 8656 8 8657 9 8658 9 8659 9 8660 9 8661 9 8662 9 8663 9 8664 9 8665 9 8666 9 8667 9 8668 9 8669 9 8670 9 8671 12 8672 12 8673 12 8674 12 8675 12 8676 12 8677 6 8678 6 8679 6 8680 6 8681 6 8682 6 8683 6 8684 6 8685 6 8686 6 8687 6 8688 6 8689 6 8690 6 8691 6 8692 7 8693 7 8694 7 8695 7 8696 7 8697 7 8698 7 8699 7 8700 7 8701 7 8702 7 8703 7 8704 7 8705 7 8706 1 8707 1 8708 1 8709 1 8710 1 8711 1 8712 1 8713 1 8714 1 8715 1 8716 1 8717 1 8718 1 8719 1 8720 1 8721 1 8722 1 8723 1 8724 1 8725 1 8726 1 8727 1 8728 1 8729 1 8730 1 8731 1 8732 1 8733 1 8734 1 8735 1 8736 1 8737 1 8738 1 8739 1 8740 1 8741 1 8742 1 8743 15 8744 15 8745 12 8746 12 8747 12 8748 12 8749 12 8750 12 8751 12 8752 12 8753 12 8754 12 8755 12 8756 12 8757 8 8758 8 8759 9 8760 9 8761 9 8762 9 8763 9 8764 9 8765 9 8766 9 8767 9 8768 9 8769 9 8770 9 8771 9 8772 12 8773 12 8774 12 8775 12 8776 12 8777 12 8778 12 8779 6 8780 6 8781 6 8782 6 8783 6 8784 6 8785 6 8786 6 8787 6 8788 6 8789 6 8790 6 8791 6 8792 6 8793 7 8794 7 8795 7 8796 7 8797 7 8798 7 8799 7 8800 7 8801 7 8802 7 8803 7 8804 7 8805 7 8806 7 8807 7 8808 1 8809 1 8810 1 8811 1 8812 1 8813 1 8814 1 8815 1 8816 1 8817 1 8818 1 8819 1 8820 1 8821 1 8822 1 8823 1 8824 1 8825 1 8826 1 8827 1 8828 1 8829 1 8830 1 8831 1 8832 1 8833 1 8834 1 8835 1 8836 1 8837 1 8838 1 8839 2 8840 2 8841 2 8842 2 8843 2 8844 2 8845 2 8846 2 8847 2 8848 2 8849 2 8850 2 8851 2 8852 2 8853 2 8854 3 8855 3 8856 3 8857 3 8858 3 8859 3 8860 3 8861 3 8862 3 8863 3 8864 3 8865 3 8866 3 8867 3 8868 3 8869 3 8870 3 8871 3 8872 3 8873 3 8874 3 8875 3 8876 3 8877 3 8878 3 8879 3 8880 3 8881 3 8882 3 8883 3 8884 3 8885 3 8886 3 8887 3 8888 3 8889 3 8890 3 8891 3 8892 3 8893 3 8894 3 8895 3 8896 3 8897 3 8898 3 8899 3 8900 3 8901 3 8902 3 8903 3 8904 3 8905 13 8906 13 8907 13 8908 13 8909 13 8910 13 8911 13 8912 13 8913 13 8914 13 8915 13 8916 13 8917 13 8918 13 8919 13 8920 13 8921 13 8922 13 8923 13 8924 12 8925 13 8926 13 8927 13 8928 15 8929 15 8930 15 8931 15 8932 15 8933 12 8934 12 8935 12 8936 12 8937 12 8938 12 8939 12 8940 12 8941 12 8942 12 8943 12 8944 12 8945 12 8946 12 8947 9 8948 9 8949 9 8950 9 8951 9 8952 9 8953 9 8954 9 8955 9 8956 9 8957 9 8958 12 8959 12 8960 12 8961 12 8962 12 8963 12 8964 12 8965 12 8966 6 8967 6 8968 6 8969 6 8970 6 8971 6 8972 6 8973 6 8974 6 8975 6 8976 6 8977 6 8978 6 8979 6 8980 7 8981 7 8982 7 8983 7 8984 7 8985 7 8986 7 8987 7 8988 7 8989 7 8990 1 8991 1 8992 1 8993 1 8994 1 8995 1 8996 1 8997 1 8998 1 8999 1 9000 1 9001 1 9002 1 9003 1 9004 1 9005 1 9006 1 9007 1 9008 1 9009 1 9010 1 9011 1 9012 1 9013 1 9014 1 9015 1 9016 1 9017 1 9018 1 9019 1 9020 1 9021 1 9022 2 9023 2 9024 2 9025 2 9026 2 9027 2 9028 2 9029 2 9030 2 9031 2 9032 2 9033 2 9034 2 9035 2 9036 2 9037 2 9038 2 9039 2 9040 2 9041 2 9042 2 9043 2 9044 3 9045 2 9046 3 9047 3 9048 2 9049 3 9050 3 9051 3 9052 3 9053 3 9054 3 9055 3 9056 3 9057 3 9058 3 9059 3 9060 3 9061 3 9062 3 9063 3 9064 3 9065 3 9066 3 9067 3 9068 3 9069 3 9070 3 9071 3 9072 3 9073 13 9074 13 9075 13 9076 13 9077 13 9078 13 9079 13 9080 12 9081 12 9082 12 9083 12 9084 12 9085 12 9086 12 9087 12 9088 12 9089 12 9090 12 9091 12 9092 12 9093 12 9094 21 9095 12 9096 12 9097 12 9098 12 9099 12 9100 12 9101 12 9102 12 9103 12 9104 12 9105 12 9106 13 9107 13 9108 12 9109 12 9110 12 9111 12 9112 12 9113 12 9114 12 9115 12 9116 12 9117 12 9118 12 9119 12 9120 12 9121 9 9122 9 9123 9 9124 9 9125 9 9126 9 9127 9 9128 12 9129 12 9130 12 9131 12 9132 12 9133 12 9134 12 9135 12 9136 12 9137 12 9138 6 9139 6 9140 6 9141 6 9142 6 9143 6 9144 6 9145 6 9146 6 9147 6 9148 6 9149 6 9150 6 9151 6 9152 6 9153 6 9154 6 9155 6 9156 6 9157 7 9158 7 9159 1 9160 1 9161 1 9162 1 9163 1 9164 1 9165 1 9166 1 9167 1 9168 1 9169 1 9170 1 9171 1 9172 1 9173 1 9174 1 9175 1 9176 1 9177 1 9178 1 9179 1 9180 1 9181 1 9182 1 9183 1 9184 1 9185 1 9186 1 9187 1 9188 1 9189 1 9190 1 9191 1 9192 1 9193 1 9194 1 9195 2 9196 2 9197 2 9198 2 9199 2 9200 2 9201 2 9202 2 9203 2 9204 2 9205 2 9206 2 9207 2 9208 2 9209 3 9210 3 9211 3 9212 3 9213 3 9214 3 9215 3 9216 3 9217 3 9218 3 9219 3 9220 3 9221 6 9222 13 9223 13 9224 13 9225 13 9226 13 9227 13 9228 13 9229 12 9230 12 9231 12 9232 12 9233 12 9234 12 9235 12 9236 12 9237 12 9238 12 9239 12 9240 12 9241 12 9242 12 9243 12 9244 12 9245 12 9246 12 9247 12 9248 12 9249 12 9250 9 9251 9 9252 9 9253 9 9254 9 9255 12 9256 12 9257 12 9258 12 9259 12 9260 12 9261 12 9262 12 9263 12 9264 12 9265 12 9266 6 9267 6 9268 6 9269 6 9270 6 9271 6 9272 6 9273 6 9274 6 9275 6 9276 6 9277 6 9278 6 9279 6 9280 6 9281 6 9282 6 9283 6 9284 6 9285 7 9286 1 9287 1 9288 1 9289 1 9290 1 9291 1 9292 1 9293 1 9294 1 9295 2 9296 2 9297 2 9298 2 9299 2 9300 2 9301 2 9302 2 9303 2 9304 2 9305 2 9306 2 9307 2 9308 2 9309 2 9310 2 9311 6 9312 6 9313 3 9314 3 9315 3 9316 3 9317 3 9318 3 9319 3 9320 3 9321 3 9322 3 9323 3 9324 6 9325 6 9326 6 9327 6 9328 13 9329 13 9330 13 9331 13 9332 12 9333 12 9334 12 9335 12 9336 12 9337 12 9338 12 9339 12 9340 12 9341 12 9342 12 9343 12 9344 12 9345 12 9346 12 9347 12 9348 12 9349 12 9350 12 9351 12 9352 12 9353 12 9354 12 9355 12 9356 12 9357 12 9358 12 9359 12 9360 12 9361 12 9362 12 9363 12 9364 12 9365 12 9366 12 9367 12 9368 12 9369 12 9370 12 9371 12 9372 12 9373 12 9374 6 9375 6 9376 6 9377 6 9378 6 9379 6 9380 6 9381 6 9382 6 9383 6 9384 6 9385 6 9386 6 9387 6 9388 6 9389 6 9390 6 9391 6 9392 6 9393 6 9394 6 9395 6 9396 6 9397 1 9398 1 9399 1 9400 1 9401 1 9402 1 9403 1 9404 1 9405 2 9406 2 9407 2 9408 2 9409 2 9410 2 9411 2 9412 2 9413 2 9414 2 9415 6 9416 6 9417 2 9418 2 9419 6 9420 6 9421 6 9422 6 9423 6 9424 6 9425 6 9426 6 9427 6 9428 3 9429 6 9430 6 9431 6 9432 6 9433 6 9434 6 9435 6 9436 6 9437 12 9438 13 9439 12 9440 12 9441 12 9442 12 9443 12 9444 12 9445 12 9446 12 9447 12 9448 12 9449 12 9450 12 9451 12 9452 12 9453 12 9454 12 9455 12 9456 12 9457 12 9458 12 9459 12 9460 12 9461 12 9462 12 9463 12 9464 12 9465 12 9466 12 9467 12 9468 12 9469 12 9470 12 9471 12 9472 12 9473 12 9474 12 9475 12 9476 12 9477 12 9478 12 9479 12 9480 6 9481 6 9482 6 9483 6 9484 6 9485 6 9486 6 9487 6 9488 6 9489 6 9490 6 9491 6 9492 6 9493 6 9494 6 9495 6 9496 6 9497 2 9498 1 9499 6 9500 6 9501 6 9502 6 9503 6 9504 6 9505 6 9506 6 9507 6 9508 6 9509 6 9510 6 9511 6 9512 6 9513 6 9514 6 9515 6 9516 6 9517 6 9518 6 9519 6 9520 6 9521 6 9522 6 9523 6 9524 6 9525 6 9526 6 9527 6 9528 6 9529 6 9530 6 9531 6 9532 12 9533 12 9534 12 9535 12 9536 12 9537 12 9538 12 9539 12 9540 12 9541 12 9542 12 9543 12 9544 12 9545 12 9546 12 9547 12 9548 12 9549 12 9550 12 9551 12 9552 12 9553 12 9554 12 9555 12 9556 12 9557 12 9558 12 9559 12 9560 12 9561 12 9562 12 9563 6 9564 6 9565 6 9566 6 9567 6 9568 6 9569 6 9570 6 9571 6 9572 6 9573 6 9574 6 9575 6 9576 6 9577 6 9578 6 9579 6 9580 6 9581 6 9582 6 9583 6 9584 6 9585 6 9586 6 9587 6 9588 6 9589 6 9590 6 9591 6 9592 6 9593 6 9594 6 9595 6 9596 6 9597 12 9598 12 9599 12 9600 12 9601 12 9602 12 9603 12 9604 12 9605 12 9606 12 9607 12 9608 12 9609 12 9610 12 9611 12 9612 12 9613 12 9614 12 9615 12 9616 12 9617 12 9618 12 9619 12 9620 12 9621 12 9622 12 9623 6 9624 6 9625 6 9626 6 9627 6 9628 6 9629 6 9630 6 9631 6 9632 6 9633 6 9634 6 9635 6 9636 6 9637 6 9638 6 9639 6 9640 6 9641 6 9642 6 9643 6 9644 6 9645 6 9646 12 9647 12 9648 12 9649 12 9650 12 9651 12 9652 12 9653 12 9654 12 9655 12 9656 12 9657 12 9658 12 9659 12 9660 6 9661 6 9662 6 9663 6 9664 6 9665 6 9666 12 9667 12 9668 12 9669 12 9670 16 9671 16 9672 16 9673 16 9674 18 9675 18 9676 16 9677 18 9678 18 9679 18 9680 16 9681 16 9682 16 9683 18 9684 18 9685 16 9686 16 9687 16 9688 16 9689 16 9690 16 9691 16 9692 18 9693 18 9694 23 9695 23 9696 23 9697 29 9698 29 9699 29 9700 23 9701 23 9702 23 9703 23 9704 18 9705 18 9706 27 9707 27 9708 27 9709 27 9710 27 9711 27 9712 27 9713 27 9714 27 9715 27 9716 27 9717 27 9718 27 9719 27 9720 27 9721 16 9722 16 9723 16 9724 16 9725 18 9726 18 9727 18 9728 18 9729 18 9730 18 9731 18 9732 18 9733 18 9734 18 9735 18 9736 18 9737 19 9738 19 9739 25 9740 25 9741 25 9742 25 9743 25 9744 25 9745 0 9746 0 9747 24 9748 24 9749 24 9750 16 9751 14 9752 26 9753 26 9754 26 9755 26 9756 26 9757 26 9758 26 9759 26 9760 26 9761 16 9762 16 9763 21 9764 21 9765 21 9766 2 9767 21 9768 18 9769 18 9770 18 9771 18 9772 18 9773 18 9774 18 9775 17 9776 25 9777 17 9778 18 9779 18 9780 18 9781 27 9782 19 9783 19 9784 0 9785 16 9786 0 9787 0 9788 0 9789 0 9790 21 9791 3 9792 16 9793 29 9794 29 9795 29 9796 16 9797 16 9798 16 9799 16 scotch_6.0.9/src/check/data/bump_b100000.grf0000644000302600021200000147677613532672140020476 0ustar pelegrinpelegrin0 9800 57978 100000 000 3 100413 100407 100006 4 109771 100043 109772 100044 4 100076 101474 101475 100077 3 101242 100147 100148 3 100693 100206 100207 3 100521 100348 100349 4 100007 100412 100413 100000 4 100006 100412 100008 100647 4 100009 103238 100647 100007 4 103235 103238 100008 100010 4 100011 103233 103235 100009 4 103234 103233 100010 100012 4 103684 103234 100011 100013 4 100014 100418 103684 100012 4 100015 100417 100418 100013 4 100014 100417 100016 103088 4 100017 103086 103088 100015 4 100016 103086 103087 100018 4 103087 100017 103095 100019 4 103095 100018 103096 100020 4 100021 100414 103096 100019 4 100020 100414 101171 100022 4 101171 100021 101172 100023 4 101172 100022 101173 100024 4 101173 100023 101526 100025 4 101526 100024 100026 109781 4 100027 103852 109781 100025 4 100028 102179 103852 100026 4 100027 102179 102180 100029 4 102180 100028 100030 102503 4 100031 102505 102503 100029 4 102508 102505 100030 100032 4 103330 102508 100033 100031 4 103330 100032 103331 100034 4 100035 102248 103331 100033 4 100034 102248 102249 100036 4 102249 100035 102250 100037 4 100038 100416 102250 100036 4 100039 100415 100416 100037 4 100038 100415 102194 100040 4 102194 100039 102195 100041 4 102195 100040 102196 100042 3 102196 100041 100043 4 100042 102196 109771 100001 4 109769 109772 100001 100045 4 100046 109768 109769 100044 4 100047 100427 109768 100045 4 100048 100426 100427 100046 4 100047 100426 100049 100411 4 100050 100410 100411 100048 4 100049 100410 100051 100421 4 100050 100421 100422 100052 4 100422 100051 104650 100053 4 104650 100052 104651 100054 4 104657 104651 100053 100055 4 105380 104657 100054 100056 4 100057 100430 105380 100055 4 100056 100430 100429 100058 4 100059 100408 100429 100057 4 100058 100408 102218 100060 4 102218 100059 102219 100061 4 102219 100060 102220 100062 4 102220 100061 102221 100063 4 102221 100062 102222 100064 4 106701 102222 100063 100065 4 106701 100064 106703 100066 4 106703 100065 103505 100067 4 100068 103452 103505 100066 4 100069 103451 103452 100067 4 103441 103451 100068 100070 4 100071 102491 103441 100069 4 100070 102491 102492 100072 4 100073 100409 102492 100071 4 100072 100409 100074 100428 4 100073 100428 100075 101603 4 100074 101603 101604 100076 4 100002 101474 101604 100075 4 101475 100002 101476 100078 4 101476 100077 101477 100079 4 101477 100078 101478 100080 4 101478 100079 101479 100081 4 101479 100080 101480 100082 4 101480 100081 101481 100083 4 101481 100082 101482 100084 4 101482 100083 101483 100085 4 100086 101160 101483 100084 4 100085 101160 101161 100087 4 101161 100086 101162 100088 4 101162 100087 101163 100089 4 101163 100088 101186 100090 4 101186 100089 101185 100091 4 101185 100090 101187 100092 4 101187 100091 101188 100093 4 101188 100092 101189 100094 4 101189 100093 101190 100095 4 101190 100094 101191 100096 4 101191 100095 101192 100097 4 101192 100096 101193 100098 4 101193 100097 101194 100099 4 101194 100098 101195 100100 4 101195 100099 101196 100101 4 101196 100100 101197 100102 4 101197 100101 101198 100103 4 101198 100102 101199 100104 4 101199 100103 101200 100105 4 101200 100104 101201 100106 4 101201 100105 101202 100107 4 101202 100106 101203 100108 4 101203 100107 101204 100109 4 101204 100108 101205 100110 4 101205 100109 101206 100111 4 101206 100110 101207 100112 4 101207 100111 101208 100113 4 101208 100112 101209 100114 4 101209 100113 101210 100115 4 101210 100114 101211 100116 4 101211 100115 101212 100117 4 101212 100116 101213 100118 4 101213 100117 101214 100119 4 101214 100118 101215 100120 4 101215 100119 101216 100121 4 101216 100120 101217 100122 4 101217 100121 101218 100123 4 101218 100122 101219 100124 4 101219 100123 101220 100125 4 101220 100124 101221 100126 4 101221 100125 101222 100127 4 101222 100126 101223 100128 4 101223 100127 101224 100129 4 101224 100128 101225 100130 4 101225 100129 101226 100131 4 101226 100130 101227 100132 4 101227 100131 101228 100133 4 101228 100132 101229 100134 4 101229 100133 101230 100135 4 101230 100134 101231 100136 4 101231 100135 101232 100137 4 101232 100136 101233 100138 4 101233 100137 101234 100139 4 101234 100138 101235 100140 4 101235 100139 101236 100141 4 101236 100140 101237 100142 4 101237 100141 101238 100143 4 101238 100142 101239 100144 4 101239 100143 101240 100145 4 101240 100144 101241 100146 4 101241 100145 101242 100147 3 101242 100146 100003 4 101242 100003 101243 100149 4 101243 100148 101244 100150 4 101244 100149 101245 100151 4 101245 100150 101246 100152 4 101246 100151 101247 100153 4 101247 100152 101248 100154 4 100155 100923 101248 100153 4 100154 100923 100924 100156 4 100924 100155 100925 100157 4 100925 100156 100926 100158 4 100926 100157 100927 100159 4 100927 100158 100928 100160 4 100928 100159 100929 100161 4 100929 100160 100930 100162 4 100930 100161 100931 100163 4 100164 100651 100931 100162 4 100163 100651 100652 100165 4 100652 100164 100653 100166 4 100653 100165 100654 100167 4 100654 100166 100655 100168 4 100655 100167 100656 100169 4 100656 100168 100657 100170 4 100657 100169 100658 100171 4 100658 100170 100659 100172 4 100659 100171 100660 100173 4 100660 100172 100661 100174 4 100661 100173 100662 100175 4 100662 100174 100663 100176 4 100663 100175 100664 100177 4 100664 100176 100665 100178 4 100665 100177 100666 100179 4 100666 100178 100667 100180 4 100667 100179 100668 100181 4 100668 100180 100669 100182 4 100669 100181 100670 100183 4 100670 100182 100671 100184 4 100671 100183 100672 100185 4 100672 100184 100673 100186 4 100673 100185 100674 100187 4 100674 100186 100675 100188 4 100675 100187 100676 100189 4 100676 100188 100677 100190 4 100677 100189 100678 100191 4 100678 100190 100679 100192 4 100679 100191 100680 100193 4 100680 100192 100681 100194 4 100681 100193 100682 100195 4 100682 100194 100683 100196 4 100683 100195 100684 100197 4 100684 100196 100685 100198 4 100685 100197 100686 100199 4 100686 100198 100687 100200 4 100687 100199 100688 100201 4 100688 100200 100689 100202 4 100689 100201 100690 100203 4 100690 100202 100691 100204 4 100691 100203 100692 100205 3 100692 100204 100206 4 100692 100205 100693 100004 3 100693 100004 100208 4 100693 100207 100694 100209 4 100694 100208 100695 100210 4 100695 100209 100696 100211 4 100696 100210 100697 100212 4 100697 100211 100698 100213 4 100698 100212 100699 100214 4 100699 100213 100700 100215 4 100700 100214 100701 100216 4 100701 100215 100702 100217 4 100702 100216 100703 100218 4 100703 100217 100704 100219 4 100704 100218 100705 100220 4 100705 100219 100706 100221 4 100706 100220 100707 100222 4 100707 100221 100708 100223 4 100708 100222 100709 100224 4 100709 100223 100710 100225 4 100710 100224 100711 100226 4 100711 100225 100712 100227 4 100712 100226 100713 100228 4 100713 100227 100714 100229 4 100714 100228 100715 100230 4 100715 100229 100716 100231 4 100716 100230 100717 100232 4 100717 100231 100718 100233 4 100718 100232 100719 100234 4 100719 100233 100720 100235 4 100720 100234 100721 100236 4 100721 100235 100722 100237 4 100722 100236 100723 100238 4 100723 100237 100724 100239 4 100724 100238 100725 100240 4 100725 100239 100726 100241 4 100726 100240 100727 100242 4 100727 100241 100728 100243 4 100728 100242 100729 100244 4 100729 100243 100730 100245 4 100730 100244 100731 100246 4 100731 100245 100732 100247 4 100732 100246 100733 100248 4 100733 100247 100734 100249 4 100734 100248 100735 100250 4 100735 100249 100736 100251 4 100736 100250 100737 100252 4 100737 100251 100738 100253 4 100738 100252 100739 100254 4 100739 100253 100740 100255 4 100740 100254 100741 100256 4 100741 100255 100742 100257 4 100258 100431 100742 100256 4 100257 100431 100432 100259 4 100432 100258 100433 100260 4 100433 100259 100434 100261 4 100434 100260 100435 100262 4 100435 100261 100436 100263 4 100436 100262 100437 100264 4 100437 100263 100438 100265 4 100438 100264 100439 100266 4 100439 100265 100440 100267 4 100440 100266 100441 100268 4 100441 100267 100442 100269 4 100442 100268 100443 100270 4 100443 100269 100444 100271 4 100444 100270 100445 100272 4 100445 100271 100446 100273 4 100446 100272 100447 100274 4 100447 100273 100448 100275 4 100448 100274 100449 100276 4 100449 100275 100450 100277 4 100450 100276 100451 100278 4 100451 100277 100452 100279 4 100452 100278 100453 100280 4 100453 100279 100454 100281 4 100454 100280 100455 100282 4 100455 100281 100456 100283 4 100456 100282 100457 100284 4 100457 100283 100458 100285 4 100458 100284 100459 100286 4 100459 100285 100460 100287 4 100460 100286 100461 100288 4 100461 100287 100462 100289 4 100462 100288 100463 100290 4 100463 100289 100464 100291 4 100464 100290 100465 100292 4 100465 100291 100466 100293 4 100466 100292 100467 100294 4 100467 100293 100468 100295 4 100468 100294 100469 100296 4 100469 100295 100470 100297 4 100470 100296 100471 100298 4 100471 100297 100472 100299 4 100472 100298 100473 100300 4 100473 100299 100474 100301 4 100474 100300 100475 100302 4 100475 100301 100476 100303 4 100476 100302 100477 100304 4 100477 100303 100478 100305 4 100478 100304 100479 100306 4 100479 100305 100480 100307 4 100480 100306 100481 100308 4 100481 100307 100482 100309 4 100482 100308 100483 100310 4 100483 100309 100484 100311 4 100484 100310 100485 100312 4 100485 100311 100486 100313 4 100486 100312 100487 100314 4 100487 100313 100488 100315 4 100488 100314 100489 100316 4 100489 100315 100490 100317 4 100490 100316 100491 100318 4 100491 100317 100492 100319 4 100492 100318 100493 100320 4 100493 100319 100494 100321 4 100494 100320 100495 100322 4 100495 100321 100496 100323 4 100496 100322 100497 100324 4 100497 100323 100498 100325 4 100498 100324 100499 100326 4 100499 100325 100500 100327 4 100500 100326 100501 100328 4 100501 100327 100502 100329 4 100502 100328 100503 100330 4 100503 100329 100504 100331 4 100504 100330 100505 100332 4 100505 100331 100506 100333 4 100506 100332 100507 100334 4 100507 100333 100508 100335 4 100508 100334 100509 100336 4 100509 100335 100510 100337 4 100510 100336 100511 100338 4 100511 100337 100512 100339 4 100512 100338 100513 100340 4 100513 100339 100514 100341 4 100514 100340 100515 100342 4 100515 100341 100516 100343 4 100516 100342 100517 100344 4 100517 100343 100518 100345 4 100518 100344 100519 100346 4 100519 100345 100520 100347 4 100520 100346 100521 100348 3 100521 100347 100005 4 100521 100005 100522 100350 4 100522 100349 100523 100351 4 100523 100350 100524 100352 4 100524 100351 100525 100353 4 100525 100352 100526 100354 4 100526 100353 100527 100355 4 100527 100354 100528 100356 4 100528 100355 100529 100357 4 100529 100356 100530 100358 4 100530 100357 100531 100359 4 100531 100358 100532 100360 4 100532 100359 100533 100361 4 100533 100360 100534 100362 4 100534 100361 100535 100363 4 100535 100362 100536 100364 4 100536 100363 100537 100365 4 100537 100364 100538 100366 4 100538 100365 100539 100367 4 100539 100366 100540 100368 4 100540 100367 100541 100369 4 100541 100368 100542 100370 4 100542 100369 100543 100371 4 100543 100370 100544 100372 4 100544 100371 100545 100373 4 100545 100372 100546 100374 4 100546 100373 100547 100375 4 100550 100547 100374 100376 4 100550 100375 100551 100377 4 100551 100376 100552 100378 4 100552 100377 100553 100379 4 100556 100553 100378 100380 4 100566 100556 100379 100381 4 100566 100380 100567 100382 4 100567 100381 100568 100383 4 100568 100382 100569 100384 4 100569 100383 100570 100385 4 100425 100570 100386 100384 4 100387 100423 100425 100385 4 100386 100423 100424 100388 4 100579 100424 100389 100387 4 100584 100579 100388 100390 4 100584 100389 100585 100391 4 100585 100390 100586 100392 4 100586 100391 100420 100393 4 100394 100419 100420 100392 4 100393 100419 100594 100395 4 100396 100596 100594 100394 4 100622 100596 100395 100397 4 100622 100396 100623 100398 4 100623 100397 100624 100399 4 100398 100624 100626 100400 4 100626 100399 100628 100401 4 100630 100628 100402 100400 4 100630 100401 100631 100403 4 100402 100631 102097 100404 4 100405 100649 102097 100403 4 100648 100649 100404 100406 4 100648 100405 100413 100407 3 100413 100406 100000 6 100058 100059 100429 102218 102545 102841 6 100072 100073 102492 102493 101606 100428 6 100049 100050 100411 104521 104515 100421 6 100049 100410 100048 100426 104514 104515 6 100006 100007 100413 100647 100646 100648 6 100006 100412 100648 100406 100407 100000 6 100020 100021 101171 103882 103128 103096 6 100038 100039 100416 102194 102252 109704 6 100038 100415 100037 102250 102251 102252 6 100014 100015 100418 103088 103098 103099 6 100014 100417 100013 103099 103100 103684 6 100393 100394 100420 100593 100588 100594 6 100393 100419 100586 100392 100587 100588 6 100050 100051 100422 105237 104521 100410 6 100421 100051 100052 104650 109684 105237 6 100386 100387 100424 100425 100577 100575 6 100423 100387 100577 100578 100579 100388 6 100386 100423 100572 100570 100385 100575 6 100047 100048 100427 100411 104514 105612 6 100047 100426 100046 105612 107500 109768 6 100073 100074 101603 101605 101606 100409 6 100058 100408 100430 100057 102841 109690 6 100056 100057 100429 109689 105380 109690 6 100257 100258 100432 100742 100743 100744 6 100431 100258 100259 100433 100744 100745 6 100432 100259 100260 100434 100745 100746 6 100433 100260 100261 100435 100746 100747 6 100434 100261 100262 100436 100747 100748 6 100435 100262 100263 100437 100748 100749 6 100436 100263 100264 100438 100749 100750 6 100437 100264 100265 100439 100750 100751 6 100438 100265 100266 100440 100751 100752 6 100439 100266 100267 100441 100752 100753 6 100440 100267 100268 100442 100753 100754 6 100441 100268 100269 100443 100754 100755 6 100442 100269 100270 100444 100755 100756 6 100443 100270 100271 100445 100756 100757 6 100444 100271 100272 100446 100757 100758 6 100445 100272 100273 100447 100758 100759 6 100446 100273 100274 100448 100759 100760 6 100447 100274 100275 100449 100760 100761 6 100448 100275 100276 100450 100761 100762 6 100449 100276 100277 100451 100762 100763 6 100450 100277 100278 100452 100763 100764 6 100451 100278 100279 100453 100764 100765 6 100452 100279 100280 100454 100765 100766 6 100453 100280 100281 100455 100766 100767 6 100454 100281 100282 100456 100767 100768 6 100455 100282 100283 100457 100768 100769 6 100456 100283 100284 100458 100769 100770 6 100457 100284 100285 100459 100770 100771 6 100458 100285 100286 100460 100771 100772 6 100459 100286 100287 100461 100772 100773 6 100460 100287 100288 100462 100773 100774 6 100461 100288 100289 100463 100774 100775 6 100462 100289 100290 100464 100775 100776 6 100463 100290 100291 100465 100776 100777 6 100464 100291 100292 100466 100777 100778 6 100465 100292 100293 100467 100778 100779 6 100466 100293 100294 100468 100779 100780 6 100467 100294 100295 100469 100780 100781 6 100468 100295 100296 100470 100781 100782 6 100469 100296 100297 100471 100782 100783 6 100470 100297 100298 100472 100783 100784 6 100471 100298 100299 100473 100784 100785 6 100472 100299 100300 100474 100785 100786 6 100473 100300 100301 100475 100786 100787 6 100474 100301 100302 100476 100787 100788 6 100475 100302 100303 100477 100788 100789 6 100476 100303 100304 100478 100789 100790 6 100477 100304 100305 100479 100790 100791 6 100478 100305 100306 100480 100791 100792 6 100479 100306 100307 100481 100792 100793 6 100480 100307 100308 100482 100793 100794 6 100481 100308 100309 100483 100794 100795 6 100482 100309 100310 100484 100795 100796 6 100483 100310 100311 100485 100796 100797 6 100484 100311 100312 100486 100797 100798 6 100485 100312 100313 100487 100798 100799 6 100486 100313 100314 100488 100799 100800 6 100487 100314 100315 100489 100800 100801 6 100488 100315 100316 100490 100801 100802 6 100489 100316 100317 100491 100802 100803 6 100490 100317 100318 100492 100803 100804 6 100491 100318 100319 100493 100804 100805 6 100492 100319 100320 100494 100805 100806 6 100493 100320 100321 100495 100806 100807 6 100494 100321 100322 100496 100807 100808 6 100495 100322 100323 100497 100808 100809 6 100496 100323 100324 100498 100809 100810 6 100497 100324 100325 100499 100810 100811 6 100498 100325 100326 100500 100811 100812 6 100499 100326 100327 100501 100812 100813 6 100500 100327 100328 100502 100813 100814 6 100501 100328 100329 100503 100814 100815 6 100502 100329 100330 100504 100815 100816 6 100503 100330 100331 100505 100816 100817 6 100504 100331 100332 100506 100817 100818 6 100505 100332 100333 100507 100818 100819 6 100506 100333 100334 100508 100819 100820 6 100507 100334 100335 100509 100820 100821 6 100508 100335 100336 100510 100821 100822 6 100509 100336 100337 100511 100822 100823 6 100510 100337 100338 100512 100823 100824 6 100511 100338 100339 100513 100824 100825 6 100512 100339 100340 100514 100825 100826 6 100513 100340 100341 100515 100826 100827 6 100514 100341 100342 100516 100827 100828 6 100515 100342 100343 100517 100828 100829 6 100516 100343 100344 100518 100829 100830 6 100517 100344 100345 100519 100830 100831 6 100518 100345 100346 100520 100831 100832 6 100519 100346 100347 100521 100832 100833 7 100520 100347 100348 100005 100349 100522 100833 6 100521 100349 100350 100523 100833 100834 5 100522 100350 100351 100524 100834 6 100523 100351 100352 100525 100834 100835 6 100524 100352 100353 100526 100835 100836 6 100525 100353 100354 100527 100836 100837 6 100526 100354 100355 100528 100837 100838 6 100527 100355 100356 100529 100838 100839 6 100528 100356 100357 100530 100839 100840 6 100529 100357 100358 100531 100840 100841 6 100530 100358 100359 100532 100841 100842 6 100531 100359 100360 100533 100842 100843 6 100532 100360 100361 100534 100843 100844 6 100533 100361 100362 100535 100844 100845 6 100534 100362 100363 100536 100845 100846 6 100535 100363 100364 100537 100846 100847 6 100536 100364 100365 100538 100847 100848 6 100537 100365 100366 100539 100848 100849 6 100538 100366 100367 100540 100849 100850 6 100539 100367 100368 100541 100853 100850 6 100540 100368 100369 100542 100855 100853 6 100541 100369 100370 100543 100855 100856 6 100542 100370 100371 100544 100856 100857 6 100543 100371 100372 100545 100857 100858 6 100544 100372 100373 100546 100858 100859 6 100545 100373 100374 100547 100548 100859 6 100546 100374 100548 100549 100550 100375 6 100546 100547 100549 100859 100860 100861 6 100548 100547 100550 100861 100862 100863 6 100549 100547 100375 100376 100551 100863 6 100550 100376 100377 100552 100863 100864 6 100551 100377 100378 100553 100554 100864 6 100552 100378 100554 100555 100556 100379 6 100552 100553 100555 100557 100864 100865 6 100554 100553 100556 100557 100558 100565 6 100555 100553 100379 100565 100566 100380 6 100554 100555 100558 100559 100865 100866 6 100557 100555 100559 100560 100561 100565 6 100557 100558 100560 100866 100867 100868 6 100559 100558 100561 100562 100922 100868 6 100560 100558 100562 100563 100564 100565 6 100560 100561 100563 100921 100920 100922 6 100562 100561 100564 109743 100921 109744 6 100563 100561 100565 100566 109744 100567 6 100564 100561 100558 100555 100556 100566 6 100565 100556 100380 100381 100567 100564 6 100566 100381 100382 100568 109744 100564 6 100567 100382 100383 100569 109744 109739 6 100568 100383 100384 100570 100571 109739 6 100569 100384 100571 100572 100425 100385 6 100569 100570 100572 100573 109739 109740 6 100571 100570 100425 100573 100574 100575 6 100571 100572 100574 109740 109741 100916 6 100573 100572 100575 100576 100916 100915 6 100574 100572 100425 100576 100577 100423 6 100574 100575 100577 100915 102474 101515 6 100576 100575 100423 100424 100578 101515 6 100577 100424 100579 100580 100581 101515 6 100578 100424 100388 100580 100584 100389 6 100578 100579 100581 100582 100583 100584 6 100578 100580 100582 101515 101516 101517 6 100581 100580 100583 101517 101508 101506 6 100582 100580 100584 100585 100589 101506 6 100583 100580 100579 100389 100390 100585 6 100584 100390 100391 100586 100589 100583 6 100585 100391 100392 100420 100587 100589 6 100586 100420 100588 100589 100590 100591 6 100587 100420 100591 100592 100593 100419 6 100586 100587 100590 100585 100583 101506 6 100589 100587 100591 101506 101507 101514 6 100590 100587 100588 100592 100599 101514 6 100591 100588 100593 100597 100598 100599 6 100592 100588 100419 100594 100595 100597 6 100593 100419 100394 100595 100596 100395 6 100593 100594 100596 100597 100621 100606 6 100595 100594 100621 100622 100396 100395 6 100593 100595 100592 100598 100605 100606 6 100592 100597 100599 100600 100604 100605 6 100592 100598 100600 100601 101514 100591 6 100599 100598 100601 100602 100603 100604 6 100599 100600 100602 101513 101514 101539 6 100601 100600 100603 101539 101540 101583 6 100602 100600 100604 101602 101583 100608 6 100603 100600 100598 100605 100607 100608 6 100604 100598 100597 100606 100607 100614 6 100605 100597 100621 100620 100595 100614 6 100604 100605 100608 100609 100610 100614 6 100604 100607 100609 101602 100603 101600 6 100608 100607 100610 100611 101599 101600 6 100609 100607 100611 100612 100613 100614 6 100609 100610 100612 106557 101598 101599 6 100611 100610 100613 100615 103764 106557 6 100612 100610 100614 100615 100616 100620 6 100613 100610 100620 100606 100605 100607 6 100612 100613 100616 100617 103760 103764 6 100615 100613 100617 100618 100619 100620 6 100615 100616 100618 103760 103761 100625 6 100617 100616 100619 100623 100624 100625 6 100618 100616 100620 100621 100623 100622 6 100619 100616 100613 100614 100621 100606 6 100619 100620 100606 100595 100596 100622 6 100621 100596 100396 100397 100623 100619 6 100622 100397 100398 100624 100618 100619 6 100623 100398 100618 100625 100626 100399 6 100618 100624 100626 100627 103761 100617 6 100625 100624 100627 100628 100399 100400 6 100625 100626 100628 100629 103761 103762 6 100627 100626 100629 100630 100401 100400 6 100627 100628 100630 100635 103762 100632 6 100629 100628 100401 100402 100631 100632 6 100630 100402 100632 100633 100403 102097 6 100630 100631 100633 100634 100635 100629 6 100632 100631 100634 102097 100650 100641 6 100632 100633 100635 100636 100637 100641 6 100632 100634 100636 103217 103762 100629 6 100635 100634 100637 100638 103217 103218 6 100636 100634 100638 100639 100640 100641 6 100636 100637 100639 103218 103219 103220 6 100638 100637 100640 103220 103239 103240 6 100639 100637 100641 100642 100643 103239 6 100640 100637 100642 100633 100650 100634 6 100640 100641 100643 100644 100645 100650 6 100640 100642 100644 103237 103236 103239 6 100643 100642 100645 100646 100647 103237 6 100644 100642 100646 100648 100649 100650 5 100644 100645 100647 100412 100648 7 100644 100646 100412 100008 103238 103237 100007 7 100412 100646 100645 100649 100405 100406 100413 6 100648 100645 100650 100405 100404 102097 6 100649 100645 100633 102097 100641 100642 6 100163 100164 100652 100931 100932 100933 6 100651 100164 100165 100653 100933 100934 6 100652 100165 100166 100654 100934 100935 6 100653 100166 100167 100655 100935 100936 6 100654 100167 100168 100656 100936 100937 6 100655 100168 100169 100657 100937 100938 6 100656 100169 100170 100658 100938 100939 6 100657 100170 100171 100659 100939 100940 6 100658 100171 100172 100660 100940 100941 6 100659 100172 100173 100661 100941 100942 6 100660 100173 100174 100662 100942 100943 6 100661 100174 100175 100663 100943 100944 6 100662 100175 100176 100664 100944 100945 6 100663 100176 100177 100665 100945 100946 6 100664 100177 100178 100666 100946 100947 6 100665 100178 100179 100667 100947 100948 6 100666 100179 100180 100668 100948 100949 6 100667 100180 100181 100669 100949 100950 6 100668 100181 100182 100670 100950 100951 6 100669 100182 100183 100671 100951 100952 6 100670 100183 100184 100672 100952 100953 6 100671 100184 100185 100673 100953 100954 6 100672 100185 100186 100674 100954 100955 6 100673 100186 100187 100675 100955 100956 6 100674 100187 100188 100676 100956 100957 6 100675 100188 100189 100677 100957 100958 6 100676 100189 100190 100678 100958 100959 6 100677 100190 100191 100679 100959 100960 6 100678 100191 100192 100680 100960 100961 6 100679 100192 100193 100681 100961 100962 6 100680 100193 100194 100682 100962 100963 6 100681 100194 100195 100683 100963 100964 6 100682 100195 100196 100684 100964 100965 6 100683 100196 100197 100685 100965 100966 6 100684 100197 100198 100686 100966 100967 6 100685 100198 100199 100687 100967 100968 6 100686 100199 100200 100688 100968 100969 6 100687 100200 100201 100689 100969 100970 6 100688 100201 100202 100690 100970 100971 6 100689 100202 100203 100691 100971 100972 6 100690 100203 100204 100692 100972 100973 7 100691 100204 100205 100206 100693 100973 100694 6 100692 100206 100004 100207 100208 100694 7 100693 100208 100209 100695 100973 100692 100974 6 100694 100209 100210 100696 100974 100975 6 100695 100210 100211 100697 100975 100976 6 100696 100211 100212 100698 100976 100977 6 100697 100212 100213 100699 100977 100978 6 100698 100213 100214 100700 100978 100979 6 100699 100214 100215 100701 100979 100980 6 100700 100215 100216 100702 100980 100981 6 100701 100216 100217 100703 100981 100982 6 100702 100217 100218 100704 100982 100983 6 100703 100218 100219 100705 100983 100984 6 100704 100219 100220 100706 100984 100985 6 100705 100220 100221 100707 100985 100986 6 100706 100221 100222 100708 100986 100987 6 100707 100222 100223 100709 100987 100988 6 100708 100223 100224 100710 100988 100989 6 100709 100224 100225 100711 100989 100990 6 100710 100225 100226 100712 100990 100991 6 100711 100226 100227 100713 100991 100992 6 100712 100227 100228 100714 100992 100993 6 100713 100228 100229 100715 100993 100994 6 100714 100229 100230 100716 100994 100995 6 100715 100230 100231 100717 100995 100996 6 100716 100231 100232 100718 100996 100997 6 100717 100232 100233 100719 100997 100998 6 100718 100233 100234 100720 100998 100999 6 100719 100234 100235 100721 100999 101000 6 100720 100235 100236 100722 101000 101001 6 100721 100236 100237 100723 101001 101002 6 100722 100237 100238 100724 101002 101003 6 100723 100238 100239 100725 101003 101004 6 100724 100239 100240 100726 101004 101005 6 100725 100240 100241 100727 101005 101006 6 100726 100241 100242 100728 101006 101007 6 100727 100242 100243 100729 101007 101008 6 100728 100243 100244 100730 101008 101009 6 100729 100244 100245 100731 101009 101010 6 100730 100245 100246 100732 101010 101011 6 100731 100246 100247 100733 101011 101012 6 100732 100247 100248 100734 101012 101013 6 100733 100248 100249 100735 101016 101013 6 100734 100249 100250 100736 101016 101017 6 100735 100250 100251 100737 101017 101018 6 100736 100251 100252 100738 101018 101019 6 100737 100252 100253 100739 101019 101020 6 100738 100253 100254 100740 101020 101021 6 100739 100254 100255 100741 101021 101022 6 100740 100255 100256 100742 101022 101023 6 100741 100256 100257 100431 100743 101023 6 100742 100431 100744 101023 101024 101025 6 100743 100431 100432 100745 101025 101026 6 100744 100432 100433 100746 101026 101027 6 100745 100433 100434 100747 101027 101028 6 100746 100434 100435 100748 101028 101029 6 100747 100435 100436 100749 101029 101030 6 100748 100436 100437 100750 101030 101031 6 100749 100437 100438 100751 101031 101032 6 100750 100438 100439 100752 101032 101033 6 100751 100439 100440 100753 101033 101034 6 100752 100440 100441 100754 101034 101035 6 100753 100441 100442 100755 101035 101036 6 100754 100442 100443 100756 101036 101037 6 100755 100443 100444 100757 101037 101038 6 100756 100444 100445 100758 101038 101039 6 100757 100445 100446 100759 101039 101040 6 100758 100446 100447 100760 101040 101041 6 100759 100447 100448 100761 101041 101042 6 100760 100448 100449 100762 101042 101043 6 100761 100449 100450 100763 101043 101044 6 100762 100450 100451 100764 101044 101045 6 100763 100451 100452 100765 101045 101046 6 100764 100452 100453 100766 101046 101047 6 100765 100453 100454 100767 101047 101048 6 100766 100454 100455 100768 101048 101049 6 100767 100455 100456 100769 101049 101050 6 100768 100456 100457 100770 101050 101051 6 100769 100457 100458 100771 101051 101052 6 100770 100458 100459 100772 101052 101053 6 100771 100459 100460 100773 101053 101054 6 100772 100460 100461 100774 101054 101055 6 100773 100461 100462 100775 101055 101056 6 100774 100462 100463 100776 101056 101057 6 100775 100463 100464 100777 101057 101058 6 100776 100464 100465 100778 101058 101059 6 100777 100465 100466 100779 101059 101060 6 100778 100466 100467 100780 101060 101061 6 100779 100467 100468 100781 101061 101062 6 100780 100468 100469 100782 101062 101063 6 100781 100469 100470 100783 101063 101064 6 100782 100470 100471 100784 101064 101065 6 100783 100471 100472 100785 101065 101066 6 100784 100472 100473 100786 101066 101067 6 100785 100473 100474 100787 101067 101068 6 100786 100474 100475 100788 101068 101069 6 100787 100475 100476 100789 101069 101070 6 100788 100476 100477 100790 101070 101071 6 100789 100477 100478 100791 101071 101072 6 100790 100478 100479 100792 101072 101073 6 100791 100479 100480 100793 101073 101074 6 100792 100480 100481 100794 101074 101075 6 100793 100481 100482 100795 101075 101076 6 100794 100482 100483 100796 101076 101077 6 100795 100483 100484 100797 101077 101078 6 100796 100484 100485 100798 101078 101079 6 100797 100485 100486 100799 101079 101080 6 100798 100486 100487 100800 101080 101081 6 100799 100487 100488 100801 101081 101082 6 100800 100488 100489 100802 101082 101083 6 100801 100489 100490 100803 101083 101084 6 100802 100490 100491 100804 101084 101085 6 100803 100491 100492 100805 101085 101086 6 100804 100492 100493 100806 101086 101087 6 100805 100493 100494 100807 101087 101088 6 100806 100494 100495 100808 101088 101089 6 100807 100495 100496 100809 101089 101090 6 100808 100496 100497 100810 101090 101091 6 100809 100497 100498 100811 101091 101092 6 100810 100498 100499 100812 101092 101093 6 100811 100499 100500 100813 101093 101094 6 100812 100500 100501 100814 101094 101095 6 100813 100501 100502 100815 101095 101096 6 100814 100502 100503 100816 101096 101097 6 100815 100503 100504 100817 101097 101098 6 100816 100504 100505 100818 101098 101099 6 100817 100505 100506 100819 101099 101100 6 100818 100506 100507 100820 101100 101101 6 100819 100507 100508 100821 101101 101102 6 100820 100508 100509 100822 101102 101103 6 100821 100509 100510 100823 101103 101104 6 100822 100510 100511 100824 101104 101105 6 100823 100511 100512 100825 101105 101106 6 100824 100512 100513 100826 101106 101107 6 100825 100513 100514 100827 101107 101108 6 100826 100514 100515 100828 101108 101109 6 100827 100515 100516 100829 101109 101110 6 100828 100516 100517 100830 101110 101111 6 100829 100517 100518 100831 101111 101112 6 100830 100518 100519 100832 101112 101113 6 100831 100519 100520 100833 101113 101114 6 100832 100520 100521 100522 100834 101114 6 100833 100522 100523 100524 100835 101114 7 100834 100524 100525 100836 101114 101115 101116 6 100835 100525 100526 100837 101116 101117 6 100836 100526 100527 100838 101117 101118 6 100837 100527 100528 100839 101118 101119 6 100838 100528 100529 100840 101119 101120 6 100839 100529 100530 100841 101120 101121 6 100840 100530 100531 100842 101121 101122 6 100841 100531 100532 100843 101122 101123 6 100842 100532 100533 100844 101123 101124 6 100843 100533 100534 100845 101124 101125 6 100844 100534 100535 100846 101125 101126 6 100845 100535 100536 100847 101126 101127 6 100846 100536 100537 100848 101127 101128 6 100847 100537 100538 100849 101128 101129 6 100848 100538 100539 100850 100851 101129 6 100849 100539 100851 100852 100853 100540 6 100849 100850 100852 101129 101130 101131 6 100851 100850 100853 100854 101131 101132 6 100852 100850 100854 100855 100541 100540 6 100852 100853 100855 101132 101133 101134 6 100854 100853 100541 100542 100856 101134 6 100855 100542 100543 100857 101134 101135 6 100856 100543 100544 100858 101135 101136 6 100857 100544 100545 100859 101136 101137 6 100858 100545 100546 100548 100860 101137 6 100859 100548 100861 101137 101138 101139 6 100860 100548 100549 100862 101139 101140 6 100861 100549 100863 101140 101141 101142 6 100862 100549 100550 100551 100864 101142 6 100863 100551 100552 100554 100865 101142 6 100864 100554 100557 100866 101142 101143 6 100865 100557 100559 100867 101143 101144 6 100866 100559 100868 100869 101144 101145 6 100867 100559 100869 100870 100922 100560 6 100867 100868 100870 100871 101145 101146 6 100869 100868 100871 100872 100873 100922 6 100869 100870 100872 101146 101147 101148 6 100871 100870 100873 100874 101151 101148 6 100872 100870 100874 100875 100922 100920 6 100872 100873 100875 100876 101170 101151 6 100874 100873 100876 100877 100919 100920 6 100874 100875 100877 100878 100879 101170 6 100876 100875 100878 100918 100882 100919 6 100876 100877 100879 100880 100881 100882 6 100876 100878 100880 100884 100886 101170 6 100879 100878 100881 100884 100885 100891 6 100880 100878 100882 100883 100891 100892 6 100881 100878 100883 100917 100918 100877 6 100881 100882 100912 100892 100913 100917 6 100879 100880 100885 100886 100887 100888 6 100884 100880 100888 100889 100890 100891 6 100879 100884 100887 101964 101169 101170 6 100886 100884 100888 101965 101964 102075 6 100887 100884 100885 100889 102075 102076 6 100888 100885 100890 102076 102077 102081 6 100889 100885 100891 100893 100894 102081 6 100890 100885 100880 100881 100892 100893 6 100891 100881 100893 100896 100912 100883 6 100891 100892 100890 100894 100895 100896 6 100890 100893 100895 100897 100898 102081 6 100894 100893 100896 100897 100909 100910 6 100895 100893 100892 100910 100911 100912 6 100894 100895 100898 100899 100900 100909 6 100894 100897 100899 100901 102081 102080 6 100898 100897 100900 100901 100902 100906 6 100899 100897 100906 100907 100908 100909 6 100898 100899 100902 100903 102080 102082 6 100901 100899 100903 100904 100905 100906 6 100901 100902 100904 102082 102083 102084 6 100903 100902 100905 102084 102085 101565 6 100904 100902 100906 101563 101564 101565 6 100905 100902 100899 100900 100907 101563 6 100906 100900 100908 101543 101563 101536 6 100907 100900 100909 101522 101523 101536 6 100908 100900 100897 100895 100910 101522 6 100909 100895 100896 100911 101520 101522 6 100910 100896 100912 101521 101520 100914 6 100911 100896 100892 100883 100913 100914 6 100912 100883 100914 100915 100916 100917 6 100912 100913 100915 102474 101521 100911 6 100914 100913 100916 100574 100576 102474 6 100915 100913 100917 109741 100573 100574 6 100916 100913 100883 100882 100918 109741 6 100917 100882 100877 100919 109742 109741 6 100918 100877 100875 100920 100921 109742 6 100919 100875 100921 100562 100922 100873 6 100919 100920 100562 109743 109742 100563 6 100562 100920 100873 100870 100868 100560 6 100154 100155 100924 101248 101249 101250 6 100923 100155 100156 100925 101250 101251 6 100924 100156 100157 100926 101251 101252 6 100925 100157 100158 100927 101252 101253 6 100926 100158 100159 100928 101253 101254 6 100927 100159 100160 100929 101254 101255 6 100928 100160 100161 100930 101255 101256 6 100929 100161 100162 100931 101256 101257 6 100930 100162 100163 100651 100932 101257 6 100931 100651 100933 101257 101258 101259 6 100932 100651 100652 100934 101259 101260 6 100933 100652 100653 100935 101260 101261 6 100934 100653 100654 100936 101261 101262 6 100935 100654 100655 100937 101262 101263 6 100936 100655 100656 100938 101263 101264 6 100937 100656 100657 100939 101264 101265 6 100938 100657 100658 100940 101265 101266 6 100939 100658 100659 100941 101266 101267 6 100940 100659 100660 100942 101267 101268 6 100941 100660 100661 100943 101268 101269 6 100942 100661 100662 100944 101269 101270 6 100943 100662 100663 100945 101270 101271 6 100944 100663 100664 100946 101271 101272 6 100945 100664 100665 100947 101272 101273 6 100946 100665 100666 100948 101273 101274 6 100947 100666 100667 100949 101274 101275 6 100948 100667 100668 100950 101275 101276 6 100949 100668 100669 100951 101276 101277 6 100950 100669 100670 100952 101277 101278 6 100951 100670 100671 100953 101278 101279 6 100952 100671 100672 100954 101279 101280 6 100953 100672 100673 100955 101280 101281 6 100954 100673 100674 100956 101281 101282 6 100955 100674 100675 100957 101282 101283 6 100956 100675 100676 100958 101283 101284 6 100957 100676 100677 100959 101284 101285 6 100958 100677 100678 100960 101285 101286 6 100959 100678 100679 100961 101286 101287 6 100960 100679 100680 100962 101287 101288 6 100961 100680 100681 100963 101288 101289 6 100962 100681 100682 100964 101289 101290 6 100963 100682 100683 100965 101290 101291 6 100964 100683 100684 100966 101291 101292 6 100965 100684 100685 100967 101292 101293 6 100966 100685 100686 100968 101293 101294 6 100967 100686 100687 100969 101294 101295 6 100968 100687 100688 100970 101295 101296 6 100969 100688 100689 100971 101296 101297 6 100970 100689 100690 100972 101297 101298 6 100971 100690 100691 100973 101298 101299 6 100972 100691 100692 100694 100974 101299 5 100973 100694 100695 100975 101299 6 100974 100695 100696 100976 101299 101300 6 100975 100696 100697 100977 101300 101301 6 100976 100697 100698 100978 101301 101302 6 100977 100698 100699 100979 101302 101303 6 100978 100699 100700 100980 101303 101304 6 100979 100700 100701 100981 101304 101305 6 100980 100701 100702 100982 101305 101306 6 100981 100702 100703 100983 101306 101307 6 100982 100703 100704 100984 101307 101308 6 100983 100704 100705 100985 101308 101309 6 100984 100705 100706 100986 101309 101310 6 100985 100706 100707 100987 101310 101311 6 100986 100707 100708 100988 101311 101312 6 100987 100708 100709 100989 101312 101313 6 100988 100709 100710 100990 101313 101314 6 100989 100710 100711 100991 101314 101315 6 100990 100711 100712 100992 101315 101316 6 100991 100712 100713 100993 101316 101317 6 100992 100713 100714 100994 101317 101318 6 100993 100714 100715 100995 101318 101319 6 100994 100715 100716 100996 101319 101320 6 100995 100716 100717 100997 101320 101321 6 100996 100717 100718 100998 101321 101322 6 100997 100718 100719 100999 101322 101323 6 100998 100719 100720 101000 101323 101324 6 100999 100720 100721 101001 101324 101325 6 101000 100721 100722 101002 101325 101326 6 101001 100722 100723 101003 101326 101327 6 101002 100723 100724 101004 101327 101328 6 101003 100724 100725 101005 101328 101329 6 101004 100725 100726 101006 101329 101330 6 101005 100726 100727 101007 101330 101331 6 101006 100727 100728 101008 101331 101332 6 101007 100728 100729 101009 101332 101333 6 101008 100729 100730 101010 101333 101334 6 101009 100730 100731 101011 101334 101335 6 101010 100731 100732 101012 101335 101336 6 101011 100732 100733 101013 101014 101336 6 101012 100733 101014 101015 101016 100734 6 101012 101013 101015 101336 101337 101338 6 101014 101013 101016 101338 101339 101340 6 101015 101013 100734 100735 101017 101340 6 101016 100735 100736 101018 101340 101341 6 101017 100736 100737 101019 101341 101342 6 101018 100737 100738 101020 101342 101343 6 101019 100738 100739 101021 101343 101344 6 101020 100739 100740 101022 101344 101345 6 101021 100740 100741 101023 101345 101346 6 101022 100741 100742 100743 101024 101346 6 101023 100743 101025 101346 101347 101348 6 101024 100743 100744 101026 101348 101349 6 101025 100744 100745 101027 101349 101350 6 101026 100745 100746 101028 101350 101351 6 101027 100746 100747 101029 101351 101352 6 101028 100747 100748 101030 101352 101353 6 101029 100748 100749 101031 101353 101354 6 101030 100749 100750 101032 101354 101355 6 101031 100750 100751 101033 101355 101356 6 101032 100751 100752 101034 101356 101357 6 101033 100752 100753 101035 101357 101358 6 101034 100753 100754 101036 101358 101359 6 101035 100754 100755 101037 101359 101360 6 101036 100755 100756 101038 101360 101361 6 101037 100756 100757 101039 101361 101362 6 101038 100757 100758 101040 101362 101363 6 101039 100758 100759 101041 101363 101364 6 101040 100759 100760 101042 101364 101365 6 101041 100760 100761 101043 101365 101366 6 101042 100761 100762 101044 101366 101367 6 101043 100762 100763 101045 101367 101368 6 101044 100763 100764 101046 101368 101369 6 101045 100764 100765 101047 101369 101370 6 101046 100765 100766 101048 101370 101371 6 101047 100766 100767 101049 101371 101372 6 101048 100767 100768 101050 101372 101373 6 101049 100768 100769 101051 101373 101374 6 101050 100769 100770 101052 101374 101375 6 101051 100770 100771 101053 101375 101376 6 101052 100771 100772 101054 101376 101377 6 101053 100772 100773 101055 101377 101378 6 101054 100773 100774 101056 101378 101379 6 101055 100774 100775 101057 101379 101380 6 101056 100775 100776 101058 101380 101381 6 101057 100776 100777 101059 101381 101382 6 101058 100777 100778 101060 101382 101383 6 101059 100778 100779 101061 101383 101384 6 101060 100779 100780 101062 101384 101385 6 101061 100780 100781 101063 101385 101386 6 101062 100781 100782 101064 101386 101387 6 101063 100782 100783 101065 101387 101388 6 101064 100783 100784 101066 101388 101389 6 101065 100784 100785 101067 101389 101390 6 101066 100785 100786 101068 101390 101391 6 101067 100786 100787 101069 101391 101392 6 101068 100787 100788 101070 101392 101393 6 101069 100788 100789 101071 101393 101394 6 101070 100789 100790 101072 101394 101395 6 101071 100790 100791 101073 101395 101396 6 101072 100791 100792 101074 101396 101397 6 101073 100792 100793 101075 101397 101398 6 101074 100793 100794 101076 101398 101399 6 101075 100794 100795 101077 101399 101400 6 101076 100795 100796 101078 101400 101401 6 101077 100796 100797 101079 101401 101402 6 101078 100797 100798 101080 101402 101403 6 101079 100798 100799 101081 101403 101404 6 101080 100799 100800 101082 101404 101405 6 101081 100800 100801 101083 101405 101406 6 101082 100801 100802 101084 101406 101407 6 101083 100802 100803 101085 101407 101408 6 101084 100803 100804 101086 101408 101409 6 101085 100804 100805 101087 101409 101410 6 101086 100805 100806 101088 101410 101411 6 101087 100806 100807 101089 101411 101412 6 101088 100807 100808 101090 101412 101413 6 101089 100808 100809 101091 101413 101414 6 101090 100809 100810 101092 101414 101415 6 101091 100810 100811 101093 101415 101416 6 101092 100811 100812 101094 101416 101417 6 101093 100812 100813 101095 101417 101418 6 101094 100813 100814 101096 101418 101419 6 101095 100814 100815 101097 101419 101420 6 101096 100815 100816 101098 101420 101421 6 101097 100816 100817 101099 101421 101422 6 101098 100817 100818 101100 101422 101423 6 101099 100818 100819 101101 101423 101424 6 101100 100819 100820 101102 101424 101425 6 101101 100820 100821 101103 101425 101426 6 101102 100821 100822 101104 101426 101427 6 101103 100822 100823 101105 101427 101428 6 101104 100823 100824 101106 101428 101429 6 101105 100824 100825 101107 101429 101430 6 101106 100825 100826 101108 101430 101431 6 101107 100826 100827 101109 101431 101432 6 101108 100827 100828 101110 101432 101433 6 101109 100828 100829 101111 101433 101434 6 101110 100829 100830 101112 101434 101435 6 101111 100830 100831 101113 101435 101436 6 101112 100831 100832 101114 101436 101115 6 101113 100832 100833 100834 100835 101115 6 101114 100835 101116 101436 101113 101437 5 101115 100835 100836 101117 101437 6 101116 100836 100837 101118 101437 101438 6 101117 100837 100838 101119 101438 101439 6 101118 100838 100839 101120 101439 101440 6 101119 100839 100840 101121 101440 101441 6 101120 100840 100841 101122 101441 101442 6 101121 100841 100842 101123 101442 101443 6 101122 100842 100843 101124 101443 101444 6 101123 100843 100844 101125 101444 101445 6 101124 100844 100845 101126 101445 101446 6 101125 100845 100846 101127 101446 101447 6 101126 100846 100847 101128 101447 101448 6 101127 100847 100848 101129 101448 101449 6 101128 100848 100849 100851 101130 101449 6 101129 100851 101131 101449 101450 101451 6 101130 100851 100852 101132 101451 101452 6 101131 100852 100854 101133 101452 101453 6 101132 100854 101134 101456 101453 101152 6 101133 100854 100855 100856 101135 101152 6 101134 100856 100857 101136 101152 101153 6 101135 100857 100858 101137 101153 101154 6 101136 100858 100859 100860 101138 101154 6 101137 100860 101139 101154 101155 101156 6 101138 100860 100861 101140 101156 101157 6 101139 100861 100862 101141 101157 101158 6 101140 100862 101142 101158 101159 101143 6 101141 100862 100863 100864 100865 101143 6 101142 100865 100866 101144 101159 101141 6 101143 100866 100867 101145 101498 101159 6 101144 100867 100869 101146 101498 101499 6 101145 100869 100871 101147 101164 101499 6 101146 100871 101148 101149 101164 101165 6 101147 100871 101149 101150 101151 100872 6 101147 101148 101150 101165 101166 101167 6 101149 101148 101151 101167 101168 101169 6 101150 101148 100872 101169 101170 100874 6 101134 101135 101153 101473 101456 101133 6 101152 101135 101136 101154 101473 101490 6 101153 101136 101137 101138 101155 101490 6 101154 101138 101156 101490 101491 101492 6 101155 101138 101139 101157 101492 101493 6 101156 101139 101140 101158 101493 101494 6 101157 101140 101141 101159 101497 101494 6 101158 101141 101143 101144 101498 101497 6 100085 100086 101161 101483 101484 101488 6 101160 100086 100087 101162 101174 101488 6 101161 100087 100088 101163 101174 101175 6 101162 100088 100089 101175 101177 101186 6 101146 101147 101165 101499 101527 101528 6 101164 101147 101149 101166 101528 101533 6 101165 101149 101167 101535 101533 101541 6 101166 101149 101150 101168 101541 101962 6 101167 101150 101169 101962 101963 101964 6 101168 101150 101151 101170 100886 101964 6 101169 101151 100874 100886 100879 100876 6 100414 100021 100022 101172 103337 103882 6 101171 100022 100023 101173 101524 103337 6 101172 100023 100024 101524 101525 101526 6 101161 101162 101175 101176 101488 101489 6 101174 101162 101176 101163 101177 101178 6 101174 101175 101489 101642 101643 101178 6 101175 101163 101178 101179 101186 101183 6 101175 101177 101179 101180 101643 101176 6 101178 101177 101180 101181 101182 101183 6 101178 101179 101181 101643 101644 101645 6 101180 101179 101182 101645 101646 101647 6 101181 101179 101183 101184 103097 101647 6 101182 101179 101184 101185 101186 101177 6 101182 101183 101185 103097 102241 101187 6 101184 101183 101186 100090 100091 101187 6 101185 101183 101177 101163 100089 100090 6 101185 100091 100092 101188 102241 101184 6 101187 100092 100093 101189 102241 101659 6 101188 100093 100094 101190 101660 101659 6 101189 100094 100095 101191 101662 101660 6 101190 100095 100096 101192 101670 101662 6 101191 100096 100097 101193 101670 101671 6 101192 100097 100098 101194 101671 101672 6 101193 100098 100099 101195 101672 101673 6 101194 100099 100100 101196 101673 101674 6 101195 100100 100101 101197 101674 101675 6 101196 100101 100102 101198 101500 101675 6 101197 100102 100103 101199 101457 101500 6 101198 100103 100104 101200 101457 101458 6 101199 100104 100105 101201 101458 101459 6 101200 100105 100106 101202 101459 101460 6 101201 100106 100107 101203 101460 101685 6 101202 100107 100108 101204 101687 101685 6 101203 100108 100109 101205 101687 101688 6 101204 100109 100110 101206 101688 101689 6 101205 100110 100111 101207 101689 101690 6 101206 100111 100112 101208 101693 101690 6 101207 100112 100113 101209 101693 101694 6 101208 100113 100114 101210 101694 101695 6 101209 100114 100115 101211 101556 101695 6 101210 100115 100116 101212 101546 101556 6 101211 100116 100117 101213 101546 101547 6 101212 100117 100118 101214 101547 101548 6 101213 100118 100119 101215 101548 101549 6 101214 100119 100120 101216 101549 101550 6 101215 100120 100121 101217 101553 101550 6 101216 100121 100122 101218 101555 101553 6 101217 100122 100123 101219 101716 101555 6 101218 100123 100124 101220 101716 101717 6 101219 100124 100125 101221 101717 101718 6 101220 100125 100126 101222 101718 101719 6 101221 100126 100127 101223 101719 101720 6 101222 100127 100128 101224 101720 101721 6 101223 100128 100129 101225 101721 101722 6 101224 100129 100130 101226 101722 101723 6 101225 100130 100131 101227 101726 101723 6 101226 100131 100132 101228 101726 101727 6 101227 100132 100133 101229 101727 101728 6 101228 100133 100134 101230 101728 101729 6 101229 100134 100135 101231 101729 101730 6 101230 100135 100136 101232 101733 101730 6 101231 100136 100137 101233 101733 101734 6 101232 100137 100138 101234 101734 101735 6 101233 100138 100139 101235 101735 101736 6 101234 100139 100140 101236 101736 101737 6 101235 100140 100141 101237 101737 101738 6 101236 100141 100142 101238 101738 101739 6 101237 100142 100143 101239 101739 101740 6 101238 100143 100144 101240 101740 101741 6 101239 100144 100145 101241 101741 101742 6 101240 100145 100146 101242 101742 101743 7 101241 100146 100147 100003 100148 101243 101743 5 101242 100148 100149 101244 101743 6 101243 100149 100150 101245 101743 101744 6 101244 100150 100151 101246 101744 101745 6 101245 100151 100152 101247 101745 101746 6 101246 100152 100153 101248 101746 101747 6 101247 100153 100154 100923 101249 101747 6 101248 100923 101250 101747 101748 101749 6 101249 100923 100924 101251 101749 101750 6 101250 100924 100925 101252 101750 101751 6 101251 100925 100926 101253 101751 101752 6 101252 100926 100927 101254 101752 101753 6 101253 100927 100928 101255 101753 101754 6 101254 100928 100929 101256 101754 101755 6 101255 100929 100930 101257 101755 101756 6 101256 100930 100931 100932 101258 101756 6 101257 100932 101259 101756 101757 101758 6 101258 100932 100933 101260 101758 101759 6 101259 100933 100934 101261 101759 101760 6 101260 100934 100935 101262 101760 101761 6 101261 100935 100936 101263 101761 101762 6 101262 100936 100937 101264 101762 101763 6 101263 100937 100938 101265 101763 101764 6 101264 100938 100939 101266 101764 101765 6 101265 100939 100940 101267 101765 101766 6 101266 100940 100941 101268 101766 101767 6 101267 100941 100942 101269 101767 101768 6 101268 100942 100943 101270 101768 101769 6 101269 100943 100944 101271 101769 101770 6 101270 100944 100945 101272 101770 101771 6 101271 100945 100946 101273 101771 101772 6 101272 100946 100947 101274 101772 101773 6 101273 100947 100948 101275 101773 101774 6 101274 100948 100949 101276 101774 101775 6 101275 100949 100950 101277 101775 101776 6 101276 100950 100951 101278 101776 101777 6 101277 100951 100952 101279 101777 101778 6 101278 100952 100953 101280 101778 101779 6 101279 100953 100954 101281 101779 101780 6 101280 100954 100955 101282 101780 101781 6 101281 100955 100956 101283 101781 101782 6 101282 100956 100957 101284 101782 101783 6 101283 100957 100958 101285 101783 101784 6 101284 100958 100959 101286 101784 101785 6 101285 100959 100960 101287 101785 101786 6 101286 100960 100961 101288 101786 101787 6 101287 100961 100962 101289 101787 101788 6 101288 100962 100963 101290 101788 101789 6 101289 100963 100964 101291 101789 101790 6 101290 100964 100965 101292 101790 101791 6 101291 100965 100966 101293 101791 101792 6 101292 100966 100967 101294 101792 101793 6 101293 100967 100968 101295 101793 101794 6 101294 100968 100969 101296 101794 101795 6 101295 100969 100970 101297 101795 101796 6 101296 100970 100971 101298 101796 101797 6 101297 100971 100972 101299 101797 101300 6 101298 100972 100973 100974 100975 101300 7 101299 100975 100976 101301 101797 101298 102100 6 101300 100976 100977 101302 102100 102101 6 101301 100977 100978 101303 102101 102102 6 101302 100978 100979 101304 102102 102103 6 101303 100979 100980 101305 102103 102104 6 101304 100980 100981 101306 102104 102105 6 101305 100981 100982 101307 102105 102106 6 101306 100982 100983 101308 101798 102106 6 101307 100983 100984 101309 101798 101799 6 101308 100984 100985 101310 101799 101800 6 101309 100985 100986 101311 101800 101801 6 101310 100986 100987 101312 101801 101802 6 101311 100987 100988 101313 101802 101803 6 101312 100988 100989 101314 101803 101804 6 101313 100989 100990 101315 101804 101805 6 101314 100990 100991 101316 101805 101806 6 101315 100991 100992 101317 101806 101807 6 101316 100992 100993 101318 101807 101808 6 101317 100993 100994 101319 101808 101809 6 101318 100994 100995 101320 101809 101810 6 101319 100995 100996 101321 101810 101811 6 101320 100996 100997 101322 101811 101812 6 101321 100997 100998 101323 101812 101813 6 101322 100998 100999 101324 101813 101814 6 101323 100999 101000 101325 101814 101815 6 101324 101000 101001 101326 101815 101816 6 101325 101001 101002 101327 101816 101817 6 101326 101002 101003 101328 101817 101818 6 101327 101003 101004 101329 101818 101819 6 101328 101004 101005 101330 101819 101820 6 101329 101005 101006 101331 101820 101821 6 101330 101006 101007 101332 101821 101822 6 101331 101007 101008 101333 101822 101823 6 101332 101008 101009 101334 101823 101824 6 101333 101009 101010 101335 101824 101825 6 101334 101010 101011 101336 101825 101826 6 101335 101011 101012 101014 101337 101826 6 101336 101014 101338 101826 101827 101828 6 101337 101014 101015 101339 101828 101829 6 101338 101015 101340 101829 101830 101831 6 101339 101015 101016 101017 101341 101831 6 101340 101017 101018 101342 101831 101832 6 101341 101018 101019 101343 101832 101833 6 101342 101019 101020 101344 101833 101834 6 101343 101020 101021 101345 101834 101835 6 101344 101021 101022 101346 101835 101836 6 101345 101022 101023 101024 101347 101836 6 101346 101024 101348 101836 101837 101838 6 101347 101024 101025 101349 101838 101839 6 101348 101025 101026 101350 101839 101840 6 101349 101026 101027 101351 101840 101841 6 101350 101027 101028 101352 101841 101842 6 101351 101028 101029 101353 101842 101843 6 101352 101029 101030 101354 101843 101844 6 101353 101030 101031 101355 101844 101845 6 101354 101031 101032 101356 101845 101846 6 101355 101032 101033 101357 101846 101847 6 101356 101033 101034 101358 101847 101848 6 101357 101034 101035 101359 101848 101849 6 101358 101035 101036 101360 101849 101850 6 101359 101036 101037 101361 101850 101851 6 101360 101037 101038 101362 101851 101852 6 101361 101038 101039 101363 101852 101853 6 101362 101039 101040 101364 101853 101854 6 101363 101040 101041 101365 101854 101855 6 101364 101041 101042 101366 101855 101856 6 101365 101042 101043 101367 101856 101857 6 101366 101043 101044 101368 101857 101858 6 101367 101044 101045 101369 101858 101859 6 101368 101045 101046 101370 101859 101860 6 101369 101046 101047 101371 101860 101861 6 101370 101047 101048 101372 101861 101862 6 101371 101048 101049 101373 101862 101863 6 101372 101049 101050 101374 101863 101864 6 101373 101050 101051 101375 101864 101865 6 101374 101051 101052 101376 101865 101866 6 101375 101052 101053 101377 101866 101867 6 101376 101053 101054 101378 101867 101868 6 101377 101054 101055 101379 101868 101869 6 101378 101055 101056 101380 101869 101870 6 101379 101056 101057 101381 101870 101871 6 101380 101057 101058 101382 101871 101872 6 101381 101058 101059 101383 101872 101873 6 101382 101059 101060 101384 101873 101874 6 101383 101060 101061 101385 101874 101875 6 101384 101061 101062 101386 101875 101876 6 101385 101062 101063 101387 101876 101877 6 101386 101063 101064 101388 101877 101878 6 101387 101064 101065 101389 101878 101879 6 101388 101065 101066 101390 101879 101880 6 101389 101066 101067 101391 101880 101881 6 101390 101067 101068 101392 101881 101882 6 101391 101068 101069 101393 101882 101883 6 101392 101069 101070 101394 101883 101884 6 101393 101070 101071 101395 101884 101885 6 101394 101071 101072 101396 101885 101886 6 101395 101072 101073 101397 101886 101887 6 101396 101073 101074 101398 101887 101888 6 101397 101074 101075 101399 101888 101889 6 101398 101075 101076 101400 101889 101890 6 101399 101076 101077 101401 101890 101891 6 101400 101077 101078 101402 101891 101892 6 101401 101078 101079 101403 101892 101893 6 101402 101079 101080 101404 101893 101894 6 101403 101080 101081 101405 101894 101895 6 101404 101081 101082 101406 101895 101896 6 101405 101082 101083 101407 101896 101897 6 101406 101083 101084 101408 101897 101898 6 101407 101084 101085 101409 101898 101899 6 101408 101085 101086 101410 101899 101900 6 101409 101086 101087 101411 101900 101901 6 101410 101087 101088 101412 101901 101902 6 101411 101088 101089 101413 101902 101903 6 101412 101089 101090 101414 101903 101904 6 101413 101090 101091 101415 101904 101905 6 101414 101091 101092 101416 101905 101906 6 101415 101092 101093 101417 101906 101907 6 101416 101093 101094 101418 101907 101908 6 101417 101094 101095 101419 101908 101909 6 101418 101095 101096 101420 101909 101910 6 101419 101096 101097 101421 101910 101911 6 101420 101097 101098 101422 101911 101912 6 101421 101098 101099 101423 101912 101913 6 101422 101099 101100 101424 101913 101914 6 101423 101100 101101 101425 101914 101915 6 101424 101101 101102 101426 101915 101916 6 101425 101102 101103 101427 101916 101917 6 101426 101103 101104 101428 101917 101918 6 101427 101104 101105 101429 101918 101919 6 101428 101105 101106 101430 101919 101920 6 101429 101106 101107 101431 101920 101921 6 101430 101107 101108 101432 101921 101922 6 101431 101108 101109 101433 101922 101923 6 101432 101109 101110 101434 101923 101924 6 101433 101110 101111 101435 101924 101925 6 101434 101111 101112 101436 101925 101926 6 101435 101112 101113 101115 101437 101926 6 101436 101115 101116 101117 101438 101926 6 101437 101117 101118 101439 101926 101927 6 101438 101118 101119 101440 101927 101928 6 101439 101119 101120 101441 101928 101929 6 101440 101120 101121 101442 101929 101930 6 101441 101121 101122 101443 101930 101931 6 101442 101122 101123 101444 101931 101932 6 101443 101123 101124 101445 101461 101932 6 101444 101124 101125 101446 101461 101462 6 101445 101125 101126 101447 101462 101463 6 101446 101126 101127 101448 101463 101464 6 101447 101127 101128 101449 101464 101465 6 101448 101128 101129 101130 101450 101465 6 101449 101130 101451 101465 101466 101467 6 101450 101130 101131 101452 101467 101468 6 101451 101131 101132 101453 101454 101468 6 101452 101132 101454 101455 101456 101133 6 101452 101453 101455 101468 101469 101470 6 101454 101453 101456 101470 101471 101472 6 101455 101453 101133 101472 101473 101152 6 101198 101199 101458 101500 101501 101679 6 101457 101199 101200 101459 101679 101680 6 101458 101200 101201 101460 101680 101681 6 101459 101201 101202 101681 101684 101685 6 101444 101445 101462 101932 101933 101934 6 101461 101445 101446 101463 101934 101935 6 101462 101446 101447 101464 101935 101936 6 101463 101447 101448 101465 101936 101937 6 101464 101448 101449 101450 101466 101937 6 101465 101450 101467 101937 101938 101939 6 101466 101450 101451 101468 101939 101940 6 101467 101451 101452 101454 101469 101940 6 101468 101454 101470 101940 101941 101942 6 101469 101454 101455 101471 101942 101943 6 101470 101455 101472 101943 101944 101945 6 101471 101455 101456 101473 101945 101946 6 101472 101456 101152 101153 101490 101946 7 100076 100002 101475 101608 101604 101609 101618 6 101474 100002 100077 101476 101620 101618 6 101475 100077 100078 101477 101620 101621 6 101476 100078 100079 101478 101621 101622 6 101477 100079 100080 101479 101630 101622 6 101478 100080 100081 101480 101630 101631 6 101479 100081 100082 101481 101631 101632 6 101480 100082 100083 101482 101635 101632 6 101481 100083 100084 101483 101485 101635 6 101482 100084 100085 101160 101484 101485 6 101483 101160 101485 101486 101487 101488 6 101483 101484 101486 101502 101635 101482 6 101485 101484 101487 101502 101503 101504 6 101486 101484 101488 101504 101505 101489 6 101487 101484 101160 101161 101174 101489 6 101488 101174 101176 101505 101487 101642 6 101473 101153 101154 101155 101491 101946 6 101490 101155 101492 101946 101947 101948 6 101491 101155 101156 101493 101948 101949 6 101492 101156 101157 101494 101495 101949 6 101493 101157 101495 101496 101497 101158 6 101493 101494 101496 101951 101949 101952 6 101495 101494 101497 101952 101530 101529 6 101496 101494 101158 101159 101498 101529 6 101144 101145 101499 101159 101497 101529 6 101498 101145 101146 101164 101527 101529 6 101197 101198 101457 101501 101675 101676 6 101500 101457 101676 101677 101678 101679 6 101485 101486 101503 101637 101634 101635 6 101502 101486 101504 101637 101638 101639 6 101503 101486 101487 101505 101639 101640 6 101504 101487 101489 101640 101641 101642 6 100583 100589 100590 101507 101508 100582 6 101506 100590 101508 101509 101513 101514 6 101506 101507 101509 101510 101517 100582 6 101508 101507 101510 101511 101512 101513 6 101508 101509 101511 101517 101518 101519 6 101510 101509 101512 101523 101519 101537 6 101511 101509 101513 101537 101538 101539 6 101512 101509 101507 101514 100601 101539 6 101513 101507 100601 100599 100591 100590 6 100577 100578 100581 101516 102474 100576 6 101515 100581 101517 101518 101521 102474 6 101516 100581 100582 101508 101510 101518 6 101517 101510 101519 101520 101521 101516 6 101518 101510 101520 101522 101523 101511 6 101518 101519 101521 100911 100910 101522 6 101518 101520 100911 101516 102474 100914 6 100910 101520 101519 101523 100908 100909 6 101522 101519 101511 100908 101536 101537 6 101172 101173 101525 103337 103338 104250 6 101524 101173 101526 103130 102205 104250 6 101525 101173 100024 100025 103130 109781 6 101499 101164 101528 101529 101530 101531 6 101527 101164 101165 101531 101532 101533 6 101497 101498 101499 101527 101530 101496 6 101529 101527 101531 101952 101496 101953 6 101530 101527 101528 101532 101953 101954 6 101531 101528 101533 101534 101954 101955 6 101532 101528 101534 101535 101166 101165 6 101532 101533 101535 101955 101956 101957 6 101534 101533 101166 101541 101960 101957 6 100908 101523 101537 101542 101543 100907 6 101536 101523 101511 101512 101538 101542 6 101537 101512 101539 101540 101545 101542 6 101538 101512 101513 100601 100602 101540 6 101539 100602 101538 101582 101545 101583 6 101535 101166 101167 101960 101961 101962 6 101536 101537 101543 101544 101545 101538 6 101536 101542 101544 101562 101563 100907 6 101543 101542 101545 101562 101580 101577 6 101544 101542 101538 101582 101580 101540 6 101211 101212 101547 101556 101557 101558 6 101546 101212 101213 101548 101561 101558 6 101547 101213 101214 101549 101710 101561 6 101548 101214 101215 101550 101551 101710 6 101549 101215 101551 101552 101553 101216 6 101549 101550 101552 101710 101711 101712 6 101551 101550 101553 101554 101712 101713 6 101552 101550 101554 101555 101217 101216 6 101552 101553 101555 101713 101714 101715 6 101554 101553 101217 101715 101716 101218 6 101210 101211 101546 101557 101695 101696 6 101556 101546 101558 101559 101696 101697 6 101557 101546 101559 101560 101561 101547 6 101557 101558 101560 101697 101698 101699 6 101559 101558 101561 101699 101700 101709 6 101560 101558 101547 101709 101710 101548 6 101543 101544 101563 101564 101576 101577 6 101543 101562 101564 100905 100907 100906 6 101563 101562 100905 101565 101566 101576 6 100905 101564 101566 101567 102085 100904 6 101565 101564 101567 101568 101569 101576 6 101565 101566 101568 102085 103766 103767 6 101567 101566 101569 101570 101571 103767 6 101568 101566 101570 101574 101575 101576 6 101568 101569 101571 101572 101573 101574 7 101568 101570 101572 103769 103767 106317 106319 5 101571 101570 101573 106319 106320 7 101572 101570 101574 106320 106361 106360 102475 6 101573 101570 101569 101575 101578 102475 6 101574 101569 101576 101577 101578 101579 6 101575 101569 101566 101564 101562 101577 6 101576 101562 101575 101579 101580 101544 6 101574 101575 101579 101586 101587 102475 6 101578 101575 101577 101580 101581 101586 6 101579 101577 101544 101581 101582 101545 6 101579 101580 101582 101584 101585 101586 6 101581 101580 101545 101540 101583 101584 6 101582 101540 101584 101602 100603 100602 6 101582 101583 101581 101585 101601 101602 6 101581 101584 101586 101591 101588 101601 6 101581 101585 101579 101578 101587 101588 6 101578 101586 101588 101589 102475 102476 6 101587 101586 101589 101590 101591 101585 6 101587 101588 101590 106354 106353 102476 6 101589 101588 101591 101592 101594 106354 6 101590 101588 101585 101592 101593 101601 6 101590 101591 101593 101594 101595 101596 6 101592 101591 101599 101596 101600 101601 6 101590 101592 101595 106358 106356 106354 6 101594 101592 101596 101597 103970 106358 6 101595 101592 101597 101598 101599 101593 6 101595 101596 101598 103970 103969 106556 6 101597 101596 101599 106556 106557 100611 6 101598 101596 101593 101600 100611 100609 6 101599 101593 101601 101602 100608 100609 6 101600 101593 101591 101585 101584 101602 6 101600 101601 101584 101583 100603 100608 6 100074 100075 101604 100428 101605 101608 5 101603 100075 100076 101608 101474 6 100428 101603 101606 101607 101608 103519 6 100428 101605 101607 102493 100409 103516 6 101606 101605 103518 103516 101613 103519 7 101605 101603 101604 101474 101609 101610 103519 5 101608 101474 101610 101611 101618 6 101608 101609 101611 101612 101613 103519 6 101610 101609 101612 101616 101617 101618 6 101610 101611 101613 101614 101615 101616 7 101610 101612 101614 103518 101607 103519 103523 6 101613 101612 101615 103523 103524 103528 6 101614 101612 101616 103093 103544 103528 6 101615 101612 101611 101617 103093 103094 6 101616 101611 101618 101619 103094 101624 7 101617 101611 101619 101620 101475 101609 101474 6 101617 101618 101620 101621 101623 101624 5 101619 101618 101475 101476 101621 6 101620 101476 101477 101622 101623 101619 6 101621 101477 101623 101629 101630 101478 6 101621 101622 101619 101624 101625 101629 7 101619 101623 101625 101626 101617 103094 104367 6 101624 101623 101626 101627 101628 101629 5 101624 101625 101627 104376 104367 7 101626 101625 101628 104377 104376 102862 107215 6 101627 101625 101629 102861 101633 102862 6 101628 101625 101623 101622 101630 102861 6 101629 101622 101478 101479 101631 102861 6 101630 101479 101480 101632 101633 102861 6 101631 101480 101633 101634 101635 101481 7 101631 101632 101634 101636 102861 101628 102862 6 101633 101632 101635 101636 101637 101502 6 101634 101632 101481 101502 101485 101482 5 101633 101634 101637 102862 102863 7 101636 101634 101502 101503 101638 102863 102864 5 101637 101503 101639 102864 102865 6 101638 101503 101504 101640 102865 102866 6 101639 101504 101505 101641 102866 102867 6 101640 101505 101642 102479 102490 102867 6 101641 101505 101489 101176 101643 102479 6 101642 101176 101178 101180 101644 102479 6 101643 101180 101645 102479 102480 102481 6 101644 101180 101181 101646 102481 101650 6 101645 101181 101647 101648 101649 101650 6 101646 101181 101648 101655 103097 101182 6 101646 101647 101649 101653 101654 101655 6 101646 101648 101650 101651 101652 101653 6 101646 101649 101651 102481 101645 102495 6 101650 101649 101652 102495 102496 102497 6 101651 101649 101653 102497 102498 102499 6 101652 101649 101648 101654 102499 102500 6 101653 101648 101655 101656 102500 102501 6 101654 101648 101647 101656 101657 103097 6 101654 101655 101657 101658 102501 102812 6 101656 101655 101658 101659 102241 103097 6 101656 101657 101659 101660 101661 102812 6 101658 101657 101660 101189 101188 102241 6 101658 101659 101661 101662 101190 101189 6 101658 101660 101662 101663 101664 102812 6 101661 101660 101663 101670 101191 101190 6 101661 101662 101664 101665 101669 101670 6 101661 101663 101665 101666 102812 102811 6 101664 101663 101666 101667 101668 101669 6 101664 101665 101667 102811 102813 102814 6 101666 101665 101668 102814 102815 102816 6 101667 101665 101669 102816 102821 102822 6 101668 101665 101663 101670 101671 102822 6 101669 101663 101662 101191 101192 101671 6 101670 101192 101193 101672 102822 101669 6 101671 101193 101194 101673 102823 102822 6 101672 101194 101195 101674 103147 102823 6 101673 101195 101196 101675 103147 103412 6 101674 101196 101197 101500 101676 103412 6 101675 101500 101501 101677 103412 103413 6 101676 101501 101678 103413 103414 103415 6 101677 101501 101679 103415 105381 105382 6 101678 101501 101457 101458 101680 105381 6 101679 101458 101459 101681 101682 105381 6 101680 101459 101460 101682 101683 101684 6 101680 101681 101683 103774 105383 105381 6 101682 101681 101684 103774 103775 103776 6 101683 101681 101460 101685 101686 103776 6 101684 101460 101686 101687 101203 101202 6 101684 101685 101687 103776 103777 103781 6 101686 101685 101203 101204 101688 103781 6 101687 101204 101205 101689 103781 103782 6 101688 101205 101206 101690 101691 103782 6 101689 101206 101691 101692 101693 101207 6 101689 101690 101692 103782 103783 103784 6 101691 101690 101693 103784 103785 103786 6 101692 101690 101207 101208 101694 103786 6 101693 101208 101209 101695 103786 103416 6 101694 101209 101210 101556 101696 103416 6 101695 101556 101557 101697 103416 103417 6 101696 101557 101559 101698 103417 103418 6 101697 101559 101699 101703 102223 103418 6 101698 101559 101560 101700 101701 101703 6 101699 101560 101701 101702 101708 101709 6 101699 101700 101702 101703 101704 101705 6 101701 101700 101705 101706 101707 101708 6 101699 101701 101704 101698 102223 102224 6 101703 101701 101705 102224 102225 102226 6 101704 101701 101702 101706 102226 102227 6 101705 101702 101707 102227 102228 102229 6 101706 101702 101708 102229 102230 102231 6 101707 101702 101700 101709 101711 102231 6 101708 101700 101560 101561 101710 101711 6 101709 101561 101548 101549 101551 101711 6 101710 101551 101712 102231 101708 101709 6 101711 101551 101552 101713 102232 102231 6 101712 101552 101554 101714 102240 102232 6 101713 101554 101715 102240 102560 102564 6 101714 101554 101555 101716 102564 102565 6 101715 101555 101218 101219 101717 102565 6 101716 101219 101220 101718 102565 102566 6 101717 101220 101221 101719 102569 102566 6 101718 101221 101222 101720 103463 102569 6 101719 101222 101223 101721 103462 103463 6 101720 101223 101224 101722 103469 103462 6 101721 101224 101225 101723 101724 103469 6 101722 101225 101724 101725 101726 101226 6 101722 101723 101725 102172 103467 103469 6 101724 101723 101726 102172 102173 102174 6 101725 101723 101226 101227 101727 102174 6 101726 101227 101228 101728 102174 102175 6 101727 101228 101229 101729 102175 102176 6 101728 101229 101230 101730 101731 102176 6 101729 101230 101731 101732 101733 101231 6 101729 101730 101732 102178 102176 102808 6 101731 101730 101733 103404 102808 103405 6 101732 101730 101231 101232 101734 103405 6 101733 101232 101233 101735 103405 103406 6 101734 101233 101234 101736 103406 103407 6 101735 101234 101235 101737 103407 103408 6 101736 101235 101236 101738 103408 103409 6 101737 101236 101237 101739 103409 103410 6 101738 101237 101238 101740 103410 103411 6 101739 101238 101239 101741 103197 103411 6 101740 101239 101240 101742 103191 103197 6 101741 101240 101241 101743 103191 101744 6 101742 101241 101242 101243 101244 101744 7 101743 101244 101245 101745 103191 101742 103199 6 101744 101245 101246 101746 102893 103199 6 101745 101246 101247 101747 102751 102893 6 101746 101247 101248 101249 101748 102751 6 101747 101249 101749 102233 102751 102752 6 101748 101249 101250 101750 102233 102234 6 101749 101250 101251 101751 102237 102234 6 101750 101251 101252 101752 102247 102237 6 101751 101252 101253 101753 102247 102253 6 101752 101253 101254 101754 102253 102254 6 101753 101254 101255 101755 102254 102255 6 101754 101255 101256 101756 102255 102256 6 101755 101256 101257 101258 101757 102256 6 101756 101258 101758 102256 102257 102258 6 101757 101258 101259 101759 102258 102259 6 101758 101259 101260 101760 102259 102260 6 101759 101260 101261 101761 102260 102261 6 101760 101261 101262 101762 102261 102262 6 101761 101262 101263 101763 102262 102263 6 101762 101263 101264 101764 102263 102264 6 101763 101264 101265 101765 102264 102265 6 101764 101265 101266 101766 102265 102266 6 101765 101266 101267 101767 102266 102267 6 101766 101267 101268 101768 102267 102268 6 101767 101268 101269 101769 102268 102269 6 101768 101269 101270 101770 102269 102270 6 101769 101270 101271 101771 102270 102271 6 101770 101271 101272 101772 102271 102272 6 101771 101272 101273 101773 102272 102273 6 101772 101273 101274 101774 102273 102274 6 101773 101274 101275 101775 102274 102275 6 101774 101275 101276 101776 102275 102276 6 101775 101276 101277 101777 102276 102277 6 101776 101277 101278 101778 102277 102278 6 101777 101278 101279 101779 102278 102279 6 101778 101279 101280 101780 102279 102280 6 101779 101280 101281 101781 102280 102281 6 101780 101281 101282 101782 102281 102282 6 101781 101282 101283 101783 102282 102283 6 101782 101283 101284 101784 102283 102284 6 101783 101284 101285 101785 102284 102285 6 101784 101285 101286 101786 102285 102286 6 101785 101286 101287 101787 102286 102287 6 101786 101287 101288 101788 102287 102288 6 101787 101288 101289 101789 102288 102289 6 101788 101289 101290 101790 102289 102290 6 101789 101290 101291 101791 102290 102291 6 101790 101291 101292 101792 102291 102292 6 101791 101292 101293 101793 102292 102293 6 101792 101293 101294 101794 102293 102294 6 101793 101294 101295 101795 102294 102295 6 101794 101295 101296 101796 102098 102295 6 101795 101296 101297 101797 102098 102099 6 101796 101297 101298 101300 102099 102100 6 101307 101308 101799 102106 102107 102108 6 101798 101308 101309 101800 102108 102109 6 101799 101309 101310 101801 102109 102110 6 101800 101310 101311 101802 102110 102111 6 101801 101311 101312 101803 102111 102112 6 101802 101312 101313 101804 102112 102113 6 101803 101313 101314 101805 102113 102114 6 101804 101314 101315 101806 102114 102115 6 101805 101315 101316 101807 102115 102116 6 101806 101316 101317 101808 102116 102117 6 101807 101317 101318 101809 102117 102118 6 101808 101318 101319 101810 102118 102119 6 101809 101319 101320 101811 102119 102120 6 101810 101320 101321 101812 102120 102121 6 101811 101321 101322 101813 102121 102122 6 101812 101322 101323 101814 102122 102123 6 101813 101323 101324 101815 102123 102124 6 101814 101324 101325 101816 102124 102125 6 101815 101325 101326 101817 102125 102126 6 101816 101326 101327 101818 102126 102127 6 101817 101327 101328 101819 102127 102128 6 101818 101328 101329 101820 102128 102129 6 101819 101329 101330 101821 102129 102130 6 101820 101330 101331 101822 102130 102131 6 101821 101331 101332 101823 102131 102132 6 101822 101332 101333 101824 102132 102133 6 101823 101333 101334 101825 102133 102134 6 101824 101334 101335 101826 102134 102135 6 101825 101335 101336 101337 101827 102135 6 101826 101337 101828 102135 102136 102137 6 101827 101337 101338 101829 102137 102138 6 101828 101338 101339 101830 102138 102139 6 101829 101339 101831 102139 102140 102141 6 101830 101339 101340 101341 101832 102141 6 101831 101341 101342 101833 102141 102142 6 101832 101342 101343 101834 102142 102143 6 101833 101343 101344 101835 102143 102144 6 101834 101344 101345 101836 102144 102145 6 101835 101345 101346 101347 101837 102145 6 101836 101347 101838 102150 102145 102165 6 101837 101347 101348 101839 102165 102166 6 101838 101348 101349 101840 102166 102167 6 101839 101349 101350 101841 102167 102168 6 101840 101350 101351 101842 102171 102168 6 101841 101351 101352 101843 102349 102171 6 101842 101352 101353 101844 102349 102350 6 101843 101353 101354 101845 102350 102351 6 101844 101354 101355 101846 102351 102352 6 101845 101355 101356 101847 102352 102353 6 101846 101356 101357 101848 102353 102354 6 101847 101357 101358 101849 102354 102355 6 101848 101358 101359 101850 102355 102356 6 101849 101359 101360 101851 102356 102357 6 101850 101360 101361 101852 102357 102358 6 101851 101361 101362 101853 102358 102359 6 101852 101362 101363 101854 102359 102360 6 101853 101363 101364 101855 102360 102361 6 101854 101364 101365 101856 101966 102361 6 101855 101365 101366 101857 101966 101967 6 101856 101366 101367 101858 101967 101968 6 101857 101367 101368 101859 101968 101969 6 101858 101368 101369 101860 101969 101970 6 101859 101369 101370 101861 101970 101971 6 101860 101370 101371 101862 101971 101972 6 101861 101371 101372 101863 101972 101973 6 101862 101372 101373 101864 101973 101974 6 101863 101373 101374 101865 101974 101975 6 101864 101374 101375 101866 101975 101976 6 101865 101375 101376 101867 101976 101977 6 101866 101376 101377 101868 101977 101978 6 101867 101377 101378 101869 101978 101979 6 101868 101378 101379 101870 101979 101980 6 101869 101379 101380 101871 101980 101981 6 101870 101380 101381 101872 101981 101982 6 101871 101381 101382 101873 101982 101983 6 101872 101382 101383 101874 101983 101984 6 101873 101383 101384 101875 101984 101985 6 101874 101384 101385 101876 101985 101986 6 101875 101385 101386 101877 101986 101987 6 101876 101386 101387 101878 101987 101988 6 101877 101387 101388 101879 101988 101989 6 101878 101388 101389 101880 101989 101990 6 101879 101389 101390 101881 101990 101991 6 101880 101390 101391 101882 101991 101992 6 101881 101391 101392 101883 101992 101993 6 101882 101392 101393 101884 101993 101994 6 101883 101393 101394 101885 101994 101995 6 101884 101394 101395 101886 101995 101996 6 101885 101395 101396 101887 101996 101997 6 101886 101396 101397 101888 101997 101998 6 101887 101397 101398 101889 101998 101999 6 101888 101398 101399 101890 101999 102000 6 101889 101399 101400 101891 102000 102001 6 101890 101400 101401 101892 102001 102002 6 101891 101401 101402 101893 102002 102003 6 101892 101402 101403 101894 102003 102004 6 101893 101403 101404 101895 102004 102005 6 101894 101404 101405 101896 102005 102006 6 101895 101405 101406 101897 102006 102007 6 101896 101406 101407 101898 102007 102008 6 101897 101407 101408 101899 102008 102009 6 101898 101408 101409 101900 102009 102010 6 101899 101409 101410 101901 102010 102011 6 101900 101410 101411 101902 102011 102012 6 101901 101411 101412 101903 102012 102013 6 101902 101412 101413 101904 102013 102014 6 101903 101413 101414 101905 102014 102015 6 101904 101414 101415 101906 102015 102016 6 101905 101415 101416 101907 102016 102017 6 101906 101416 101417 101908 102017 102018 6 101907 101417 101418 101909 102018 102019 6 101908 101418 101419 101910 102019 102020 6 101909 101419 101420 101911 102020 102021 6 101910 101420 101421 101912 102021 102022 6 101911 101421 101422 101913 102022 102023 6 101912 101422 101423 101914 102023 102024 6 101913 101423 101424 101915 102024 102025 6 101914 101424 101425 101916 102025 102026 6 101915 101425 101426 101917 102026 102027 6 101916 101426 101427 101918 102027 102028 6 101917 101427 101428 101919 102028 102029 6 101918 101428 101429 101920 102029 102030 6 101919 101429 101430 101921 102030 102031 6 101920 101430 101431 101922 102031 102032 6 101921 101431 101432 101923 102032 102033 6 101922 101432 101433 101924 102033 102034 6 101923 101433 101434 101925 102034 102035 6 101924 101434 101435 101926 102035 101927 6 101925 101435 101436 101437 101438 101927 7 101926 101438 101439 101928 102035 101925 102036 6 101927 101439 101440 101929 102036 102037 6 101928 101440 101441 101930 102037 102038 6 101929 101441 101442 101931 102038 102039 6 101930 101442 101443 101932 102039 102040 7 101931 101443 101444 101461 101933 102040 102041 5 101932 101461 101934 102041 102042 6 101933 101461 101462 101935 102042 102043 6 101934 101462 101463 101936 102043 102044 6 101935 101463 101464 101937 102044 102045 6 101936 101464 101465 101466 101938 102045 6 101937 101466 101939 102045 102046 102047 6 101938 101466 101467 101940 102047 102048 6 101939 101467 101468 101469 101941 102048 6 101940 101469 101942 102048 102049 102050 6 101941 101469 101470 101943 102050 102051 6 101942 101470 101471 101944 102051 102052 6 101943 101471 101945 102052 102053 102054 6 101944 101471 101472 101946 102054 101947 6 101945 101472 101473 101490 101491 101947 6 101946 101491 101948 102054 101945 102055 6 101947 101491 101492 101949 101950 102055 6 101948 101492 101950 101951 101495 101493 6 101948 101949 101951 102055 102056 102057 6 101950 101949 101495 101952 102057 102058 6 101951 101495 101496 101530 101953 102058 6 101952 101530 101531 101954 102058 102059 6 101953 101531 101532 101955 102059 102060 6 101954 101532 101534 101956 102060 102061 6 101955 101534 101957 101958 102061 102062 6 101956 101534 101958 101959 101960 101535 6 101956 101957 101959 102062 102063 102064 6 101958 101957 101960 102064 102065 102066 6 101959 101957 101535 101541 101961 102066 6 101960 101541 101962 102066 102067 102068 6 101961 101541 101167 101168 101963 102068 6 101962 101168 101964 101965 102070 102068 6 101963 101168 101965 100887 100886 101169 6 101963 101964 100887 102072 102070 102075 6 101855 101856 101967 102361 102362 102363 6 101966 101856 101857 101968 102363 102364 6 101967 101857 101858 101969 102364 102365 6 101968 101858 101859 101970 102365 102366 6 101969 101859 101860 101971 102366 102367 6 101970 101860 101861 101972 102367 102368 6 101971 101861 101862 101973 102368 102369 6 101972 101862 101863 101974 102369 102370 6 101973 101863 101864 101975 102370 102371 6 101974 101864 101865 101976 102371 102372 6 101975 101865 101866 101977 102372 102373 6 101976 101866 101867 101978 102373 102374 6 101977 101867 101868 101979 102374 102375 6 101978 101868 101869 101980 102375 102376 6 101979 101869 101870 101981 102376 102377 6 101980 101870 101871 101982 102377 102378 6 101981 101871 101872 101983 102378 102379 6 101982 101872 101873 101984 102379 102380 6 101983 101873 101874 101985 102380 102381 6 101984 101874 101875 101986 102381 102382 6 101985 101875 101876 101987 102382 102383 6 101986 101876 101877 101988 102383 102384 6 101987 101877 101878 101989 102384 102385 6 101988 101878 101879 101990 102385 102386 6 101989 101879 101880 101991 102386 102387 6 101990 101880 101881 101992 102387 102388 6 101991 101881 101882 101993 102388 102389 6 101992 101882 101883 101994 102389 102390 6 101993 101883 101884 101995 102390 102391 6 101994 101884 101885 101996 102391 102392 6 101995 101885 101886 101997 102392 102393 6 101996 101886 101887 101998 102393 102394 6 101997 101887 101888 101999 102394 102395 6 101998 101888 101889 102000 102395 102396 6 101999 101889 101890 102001 102396 102397 6 102000 101890 101891 102002 102397 102398 6 102001 101891 101892 102003 102398 102399 6 102002 101892 101893 102004 102399 102400 6 102003 101893 101894 102005 102400 102401 6 102004 101894 101895 102006 102401 102402 6 102005 101895 101896 102007 102402 102403 6 102006 101896 101897 102008 102403 102404 6 102007 101897 101898 102009 102404 102405 6 102008 101898 101899 102010 102405 102406 6 102009 101899 101900 102011 102406 102407 6 102010 101900 101901 102012 102407 102408 6 102011 101901 101902 102013 102408 102409 6 102012 101902 101903 102014 102409 102410 6 102013 101903 101904 102015 102410 102411 6 102014 101904 101905 102016 102411 102412 6 102015 101905 101906 102017 102412 102413 6 102016 101906 101907 102018 102413 102414 6 102017 101907 101908 102019 102414 102415 6 102018 101908 101909 102020 102415 102416 6 102019 101909 101910 102021 102416 102417 6 102020 101910 101911 102022 102417 102418 6 102021 101911 101912 102023 102418 102419 6 102022 101912 101913 102024 102419 102420 6 102023 101913 101914 102025 102420 102421 6 102024 101914 101915 102026 102421 102422 6 102025 101915 101916 102027 102422 102423 6 102026 101916 101917 102028 102423 102424 6 102027 101917 101918 102029 102424 102425 6 102028 101918 101919 102030 102425 102426 6 102029 101919 101920 102031 102426 102427 6 102030 101920 101921 102032 102427 102428 6 102031 101921 101922 102033 102428 102429 6 102032 101922 101923 102034 102429 102430 6 102033 101923 101924 102035 102430 102431 6 102034 101924 101925 101927 102036 102431 5 102035 101927 101928 102037 102431 6 102036 101928 101929 102038 102431 102432 6 102037 101929 101930 102039 102432 102433 6 102038 101930 101931 102040 102433 102434 7 102039 101931 101932 102041 102434 102435 102436 5 102040 101932 101933 102042 102436 7 102041 101933 101934 102043 102436 102437 102438 6 102042 101934 101935 102044 102438 102439 6 102043 101935 101936 102045 102439 102440 6 102044 101936 101937 101938 102046 102440 6 102045 101938 102047 102440 102441 102442 6 102046 101938 101939 102048 102442 102443 6 102047 101939 101940 101941 102049 102443 6 102048 101941 102050 102443 102444 102448 6 102049 101941 101942 102051 102448 102449 6 102050 101942 101943 102052 102449 102450 6 102051 101943 101944 102053 102450 102451 6 102052 101944 102054 102451 102452 102453 6 102053 101944 101945 101947 102055 102453 6 102054 101947 101948 101950 102056 102453 6 102055 101950 102057 102453 102454 102455 6 102056 101950 101951 102058 102455 102456 6 102057 101951 101952 101953 102059 102456 6 102058 101953 101954 102060 102456 102457 6 102059 101954 101955 102061 102457 102458 6 102060 101955 101956 102062 102458 102459 6 102061 101956 101958 102063 102459 102460 6 102062 101958 102064 102460 102461 102462 6 102063 101958 101959 102065 102462 102463 6 102064 101959 102066 102463 102464 102465 6 102065 101959 101960 101961 102067 102465 6 102066 101961 102068 102069 102465 102466 6 102067 101961 101962 102069 102070 101963 6 102067 102068 102070 102071 102466 102469 6 102069 102068 101963 102071 102072 101965 6 102069 102070 102072 102073 102469 102470 6 102071 102070 101965 102073 102074 102075 6 102071 102072 102074 102473 102470 102086 6 102073 102072 102075 102076 102078 102086 6 102074 102072 101965 100887 100888 102076 6 102075 100888 100889 102077 102078 102074 6 102076 100889 102078 102079 102080 102081 6 102076 102077 102079 102074 102086 102087 6 102078 102077 102080 102096 102087 102082 6 102079 102077 102081 100898 100901 102082 6 102080 102077 100889 100890 100894 100898 6 102080 100901 100903 102083 102096 102079 6 102082 100903 102084 102096 102095 109776 6 102083 100903 100904 102085 106093 109776 6 102084 100904 101565 101567 103766 106093 6 102074 102078 102087 102088 102473 102073 6 102086 102078 102088 102089 102096 102079 6 102086 102087 102089 102090 102091 102473 6 102088 102087 102090 102094 102095 102096 6 102088 102089 102091 102092 102093 102094 6 102088 102090 102092 102489 102472 102473 6 102091 102090 102093 102489 105947 105948 6 102092 102090 102094 103135 105947 103132 6 102093 102090 102089 102095 103131 103132 6 102094 102089 102096 103131 102083 109776 6 102095 102089 102087 102079 102082 102083 6 100631 100403 100633 100650 100649 100404 6 101795 101796 102099 102295 102296 102297 6 102098 101796 101797 102100 102297 102101 5 102099 101797 101300 101301 102101 6 102100 101301 101302 102102 102297 102099 6 102101 101302 101303 102103 102297 102298 6 102102 101303 101304 102104 102298 102299 6 102103 101304 101305 102105 102299 102300 6 102104 101305 101306 102106 102300 102301 7 102105 101306 101307 101798 102107 102301 102302 5 102106 101798 102108 102302 102303 6 102107 101798 101799 102109 102303 102304 6 102108 101799 101800 102110 102304 102305 6 102109 101800 101801 102111 102305 102306 6 102110 101801 101802 102112 102306 102307 6 102111 101802 101803 102113 102307 102308 6 102112 101803 101804 102114 102308 102309 6 102113 101804 101805 102115 102309 102310 6 102114 101805 101806 102116 102310 102311 6 102115 101806 101807 102117 102311 102312 6 102116 101807 101808 102118 102312 102313 6 102117 101808 101809 102119 102313 102314 6 102118 101809 101810 102120 102314 102315 6 102119 101810 101811 102121 102315 102316 6 102120 101811 101812 102122 102316 102317 6 102121 101812 101813 102123 102317 102318 6 102122 101813 101814 102124 102318 102319 6 102123 101814 101815 102125 102319 102320 6 102124 101815 101816 102126 102320 102321 6 102125 101816 101817 102127 102321 102322 6 102126 101817 101818 102128 102322 102323 6 102127 101818 101819 102129 102323 102324 6 102128 101819 101820 102130 102324 102325 6 102129 101820 101821 102131 102325 102326 6 102130 101821 101822 102132 102326 102327 6 102131 101822 101823 102133 102151 102327 6 102132 101823 101824 102134 102151 102152 6 102133 101824 101825 102135 102152 102153 6 102134 101825 101826 101827 102136 102153 6 102135 101827 102137 102153 102154 102155 6 102136 101827 101828 102138 102155 102156 6 102137 101828 101829 102139 102156 102157 6 102138 101829 101830 102140 102157 102158 6 102139 101830 102141 102146 102158 102159 6 102140 101830 101831 101832 102142 102146 6 102141 101832 101833 102143 102146 102147 6 102142 101833 101834 102144 102147 102148 6 102143 101834 101835 102145 102148 102149 6 102144 101835 101836 102149 102150 101837 6 102140 102141 102142 102147 102159 102160 6 102146 102142 102143 102148 102160 102161 6 102147 102143 102144 102149 102161 102162 6 102148 102144 102145 102150 102162 102163 6 102149 102145 101837 102163 102164 102165 6 102132 102133 102152 102327 102328 102329 6 102151 102133 102134 102153 102329 102330 6 102152 102134 102135 102136 102154 102330 6 102153 102136 102155 102330 102331 102332 6 102154 102136 102137 102156 102332 102333 6 102155 102137 102138 102157 102333 102334 6 102156 102138 102139 102158 102334 102335 6 102157 102139 102140 102159 102335 102336 6 102158 102140 102146 102160 102336 102337 6 102159 102146 102147 102161 102337 102338 6 102160 102147 102148 102162 102338 102339 6 102161 102148 102149 102163 102339 102340 6 102162 102149 102150 102164 102340 102341 6 102163 102150 102165 102341 102342 102343 6 102164 102150 101837 101838 102166 102343 6 102165 101838 101839 102167 102343 102344 6 102166 101839 101840 102168 102169 102344 6 102167 101840 102169 102170 102171 101841 6 102167 102168 102170 102344 102345 102346 6 102169 102168 102171 102346 102347 102348 6 102170 102168 101841 102348 102349 101842 6 101724 101725 102173 103468 103467 104747 6 102172 101725 102174 102804 103395 104747 6 102173 101725 101726 101727 102175 102804 6 102174 101727 101728 102176 102177 102804 6 102175 101728 102177 102178 101731 101729 6 102175 102176 102178 102804 102805 102806 6 102177 102176 101731 102806 102807 102808 6 100027 100028 102180 102181 103851 103852 6 102179 100028 100029 102181 102182 102503 6 102179 102180 102182 102183 102199 103851 6 102181 102180 102183 102184 102502 102503 6 102181 102182 102184 102185 102198 102199 6 102183 102182 102185 102186 102193 102502 6 102183 102184 102186 102187 102197 102198 6 102185 102184 102187 102188 102192 102193 6 102185 102186 102188 102189 102197 109713 6 102187 102186 102189 102190 102191 102192 7 102187 102188 102190 109709 109708 109712 109713 5 102189 102188 102191 109710 109709 6 102190 102188 102192 102510 102512 109710 6 102191 102188 102186 102193 102510 102506 6 102192 102186 102184 102502 102504 102506 6 100415 100039 100040 102195 109704 106488 6 102194 100040 100041 102196 106488 109705 7 102195 100041 100042 109705 100043 109771 109773 6 102185 102187 102198 109713 109714 109720 6 102185 102197 102183 102199 102200 109720 6 102183 102198 102200 102201 102181 103851 6 102199 102198 102201 102202 109720 102217 6 102199 102200 102202 102203 103129 103851 6 102201 102200 102203 102204 102217 102208 6 102201 102202 102204 102205 103129 103130 6 102203 102202 102205 102206 102207 102208 6 102203 102204 102206 103130 101525 104250 6 102205 102204 102207 103343 103341 104250 6 102206 102204 102208 102209 103343 103344 6 102207 102204 102209 102210 102217 102202 6 102207 102208 102210 102211 103344 103345 6 102209 102208 102211 102212 102216 102217 6 102209 102210 102212 102213 103348 103345 6 102211 102210 102213 102214 102215 102216 6 102211 102212 102214 106522 106523 103348 6 102213 102212 102215 109716 109719 106522 6 102214 102212 102216 109716 109715 109714 6 102215 102212 102210 102217 109714 109720 6 102216 102210 102208 102202 109720 102200 6 100408 100059 100060 102219 102545 102546 6 102218 100060 100061 102220 102549 102546 6 102219 100061 100062 102221 102549 102551 6 102220 100062 100063 102222 102551 106702 6 102221 100063 106701 106700 106702 100064 6 101698 101703 102224 103418 103419 103420 6 102223 101703 101704 102225 103420 103421 6 102224 101704 102226 103421 103422 103426 6 102225 101704 101705 102227 103426 103427 6 102226 101705 101706 102228 103427 103428 6 102227 101706 102229 103428 103429 103430 6 102228 101706 101707 102230 102238 103430 6 102229 101707 102231 102232 102238 102239 6 102230 101707 102232 101712 101711 101708 6 102230 102231 101712 102239 102240 101713 6 101748 101749 102234 102235 102242 102752 6 102233 101749 102235 102236 102237 101750 6 102233 102234 102236 102242 102243 102244 6 102235 102234 102237 102244 102245 102246 6 102236 102234 101750 102246 102247 101751 6 102229 102230 102239 103430 103431 103435 6 102238 102230 102232 102240 103435 102561 6 102239 102232 101713 101714 102560 102561 6 101187 101188 101659 101657 103097 101184 6 102233 102235 102243 102752 102753 102754 6 102242 102235 102244 102754 102755 102756 6 102243 102235 102236 102245 102756 102757 6 102244 102236 102246 102757 102758 102759 6 102245 102236 102237 102247 102759 102760 6 102246 102237 101751 101752 102253 102760 6 100034 100035 102249 103331 103332 103333 6 102248 100035 100036 102250 103336 103333 6 102249 100036 100037 100416 102251 103336 7 102250 100416 102252 106490 106491 109706 103336 5 102251 100416 100415 106490 109704 6 102247 101752 101753 102254 102760 102761 6 102253 101753 101754 102255 102761 102762 6 102254 101754 101755 102256 102762 102763 6 102255 101755 101756 101757 102257 102763 6 102256 101757 102258 102763 102764 102765 6 102257 101757 101758 102259 102765 102766 6 102258 101758 101759 102260 102766 102767 6 102259 101759 101760 102261 102767 102768 6 102260 101760 101761 102262 102768 102769 6 102261 101761 101762 102263 102571 102769 6 102262 101762 101763 102264 102571 102572 6 102263 101763 101764 102265 102572 102573 6 102264 101764 101765 102266 102573 102574 6 102265 101765 101766 102267 102574 102575 6 102266 101766 101767 102268 102575 102576 6 102267 101767 101768 102269 102576 102577 6 102268 101768 101769 102270 102577 102578 6 102269 101769 101770 102271 102578 102579 6 102270 101770 101771 102272 102579 102580 6 102271 101771 101772 102273 102580 102581 6 102272 101772 101773 102274 102581 102582 6 102273 101773 101774 102275 102582 102583 6 102274 101774 101775 102276 102583 102584 6 102275 101775 101776 102277 102584 102585 6 102276 101776 101777 102278 102585 102586 6 102277 101777 101778 102279 102586 102587 6 102278 101778 101779 102280 102587 102588 6 102279 101779 101780 102281 102588 102589 6 102280 101780 101781 102282 102589 102590 6 102281 101781 101782 102283 102590 102591 6 102282 101782 101783 102284 102591 102592 6 102283 101783 101784 102285 102592 102593 6 102284 101784 101785 102286 102593 102594 6 102285 101785 101786 102287 102594 102595 6 102286 101786 101787 102288 102595 102596 6 102287 101787 101788 102289 102596 102597 6 102288 101788 101789 102290 102597 102598 6 102289 101789 101790 102291 102598 102599 6 102290 101790 101791 102292 102599 102600 6 102291 101791 101792 102293 102600 102601 6 102292 101792 101793 102294 102601 102602 6 102293 101793 101794 102295 102602 102603 6 102294 101794 101795 102098 102296 102603 6 102295 102098 102297 102603 102604 102605 7 102296 102098 102099 102101 102102 102298 102605 6 102297 102102 102103 102299 102605 102606 6 102298 102103 102104 102300 102606 102607 6 102299 102104 102105 102301 102607 102608 6 102300 102105 102106 102302 102608 102609 6 102301 102106 102107 102303 102609 102610 6 102302 102107 102108 102304 102610 102611 6 102303 102108 102109 102305 102611 102612 6 102304 102109 102110 102306 102612 102613 6 102305 102110 102111 102307 102613 102614 6 102306 102111 102112 102308 102614 102615 6 102307 102112 102113 102309 102615 102616 6 102308 102113 102114 102310 102619 102616 6 102309 102114 102115 102311 102619 102620 6 102310 102115 102116 102312 102620 102621 6 102311 102116 102117 102313 102621 102622 6 102312 102117 102118 102314 102622 102623 6 102313 102118 102119 102315 102623 102624 6 102314 102119 102120 102316 102624 102625 6 102315 102120 102121 102317 102625 102626 6 102316 102121 102122 102318 102626 102627 6 102317 102122 102123 102319 102627 102628 6 102318 102123 102124 102320 102628 102629 6 102319 102124 102125 102321 102629 102630 6 102320 102125 102126 102322 102630 102631 6 102321 102126 102127 102323 102631 102632 6 102322 102127 102128 102324 102632 102633 6 102323 102128 102129 102325 102633 102634 6 102324 102129 102130 102326 102634 102635 6 102325 102130 102131 102327 102635 102636 6 102326 102131 102132 102151 102328 102636 6 102327 102151 102329 102636 102637 102638 6 102328 102151 102152 102330 102641 102638 6 102329 102152 102153 102154 102331 102641 6 102330 102154 102332 102642 102641 102643 6 102331 102154 102155 102333 102643 102644 6 102332 102155 102156 102334 102644 102645 6 102333 102156 102157 102335 102645 102646 6 102334 102157 102158 102336 102646 102647 6 102335 102158 102159 102337 102647 102648 6 102336 102159 102160 102338 102648 102649 6 102337 102160 102161 102339 102649 102650 6 102338 102161 102162 102340 102650 102651 6 102339 102162 102163 102341 102651 102652 6 102340 102163 102164 102342 102652 102653 6 102341 102164 102343 102653 102654 102655 6 102342 102164 102165 102166 102344 102655 6 102343 102166 102167 102169 102345 102655 6 102344 102169 102346 102655 102656 102657 6 102345 102169 102170 102347 102657 102658 6 102346 102170 102348 102658 102659 102660 6 102347 102170 102171 102349 102660 102661 6 102348 102171 101842 101843 102350 102661 6 102349 101843 101844 102351 102661 102662 6 102350 101844 101845 102352 102662 102663 6 102351 101845 101846 102353 102663 102664 6 102352 101846 101847 102354 102664 102665 6 102353 101847 101848 102355 102665 102666 6 102354 101848 101849 102356 102666 102667 6 102355 101849 101850 102357 102667 102668 6 102356 101850 101851 102358 102668 102669 6 102357 101851 101852 102359 102669 102670 6 102358 101852 101853 102360 102670 102671 6 102359 101853 101854 102361 102671 102672 6 102360 101854 101855 101966 102362 102672 6 102361 101966 102363 102672 102673 102674 6 102362 101966 101967 102364 102674 102675 6 102363 101967 101968 102365 102675 102676 6 102364 101968 101969 102366 102676 102677 6 102365 101969 101970 102367 102677 102678 6 102366 101970 101971 102368 102678 102679 6 102367 101971 101972 102369 102679 102680 6 102368 101972 101973 102370 102680 102681 6 102369 101973 101974 102371 102681 102682 6 102370 101974 101975 102372 102682 102683 6 102371 101975 101976 102373 102683 102684 6 102372 101976 101977 102374 102684 102685 6 102373 101977 101978 102375 102685 102686 6 102374 101978 101979 102376 102686 102687 6 102375 101979 101980 102377 102687 102688 6 102376 101980 101981 102378 102688 102689 6 102377 101981 101982 102379 102689 102690 6 102378 101982 101983 102380 102690 102691 6 102379 101983 101984 102381 102691 102692 6 102380 101984 101985 102382 102692 102693 6 102381 101985 101986 102383 102693 102694 6 102382 101986 101987 102384 102694 102695 6 102383 101987 101988 102385 102695 102696 6 102384 101988 101989 102386 102696 102697 6 102385 101989 101990 102387 102697 102698 6 102386 101990 101991 102388 102698 102699 6 102387 101991 101992 102389 102699 102700 6 102388 101992 101993 102390 102700 102701 6 102389 101993 101994 102391 102701 102702 6 102390 101994 101995 102392 102702 102703 6 102391 101995 101996 102393 102703 102704 6 102392 101996 101997 102394 102704 102705 6 102393 101997 101998 102395 102705 102706 6 102394 101998 101999 102396 102706 102707 6 102395 101999 102000 102397 102707 102708 6 102396 102000 102001 102398 102708 102709 6 102397 102001 102002 102399 102513 102709 6 102398 102002 102003 102400 102513 102514 6 102399 102003 102004 102401 102514 102515 6 102400 102004 102005 102402 102515 102516 6 102401 102005 102006 102403 102516 102517 6 102402 102006 102007 102404 102517 102518 6 102403 102007 102008 102405 102518 102519 6 102404 102008 102009 102406 102519 102520 6 102405 102009 102010 102407 102520 102521 6 102406 102010 102011 102408 102521 102522 6 102407 102011 102012 102409 102522 102523 6 102408 102012 102013 102410 102523 102524 6 102409 102013 102014 102411 102524 102525 6 102410 102014 102015 102412 102525 102526 6 102411 102015 102016 102413 102526 102527 6 102412 102016 102017 102414 102527 102528 6 102413 102017 102018 102415 102528 102529 6 102414 102018 102019 102416 102529 102530 6 102415 102019 102020 102417 102530 102531 6 102416 102020 102021 102418 102531 102532 6 102417 102021 102022 102419 102532 102533 6 102418 102022 102023 102420 102533 102534 6 102419 102023 102024 102421 102534 102535 6 102420 102024 102025 102422 102535 102536 6 102421 102025 102026 102423 102536 102537 6 102422 102026 102027 102424 102537 102538 6 102423 102027 102028 102425 102538 102539 6 102424 102028 102029 102426 102539 102540 6 102425 102029 102030 102427 102540 102541 6 102426 102030 102031 102428 102541 102542 6 102427 102031 102032 102429 102542 102543 6 102428 102032 102033 102430 102543 102544 6 102429 102033 102034 102431 102544 102432 6 102430 102034 102035 102036 102037 102432 7 102431 102037 102038 102433 102544 102430 102556 6 102432 102038 102039 102434 102556 102557 6 102433 102039 102040 102435 102557 102558 6 102434 102040 102436 102558 102559 102437 5 102435 102040 102041 102042 102437 6 102436 102042 102438 102559 102435 102745 6 102437 102042 102043 102439 102745 102746 7 102438 102043 102044 102440 102746 102747 102748 6 102439 102044 102045 102046 102441 102748 6 102440 102046 102442 102748 102749 102750 6 102441 102046 102047 102443 102750 102445 6 102442 102047 102048 102049 102444 102445 6 102443 102049 102445 102446 102447 102448 6 102443 102444 102446 102750 102442 103060 6 102445 102444 102447 103060 103061 103062 6 102446 102444 102448 103062 103063 103064 6 102447 102444 102049 102050 102449 103064 6 102448 102050 102051 102450 103064 103065 6 102449 102051 102052 102451 103065 103066 6 102450 102052 102053 102452 103066 103067 6 102451 102053 102453 103067 103068 102454 6 102452 102053 102054 102055 102056 102454 6 102453 102056 102455 103068 102452 103074 6 102454 102056 102057 102456 103074 103075 6 102455 102057 102058 102059 102457 103075 6 102456 102059 102060 102458 103075 103076 6 102457 102060 102061 102459 103076 103077 6 102458 102061 102062 102460 103077 103078 6 102459 102062 102063 102461 103078 103079 6 102460 102063 102462 103079 103080 103081 6 102461 102063 102064 102463 103081 103082 6 102462 102064 102065 102464 103082 103083 6 102463 102065 102465 102467 102482 103083 6 102464 102065 102066 102067 102466 102467 6 102465 102067 102069 102467 102468 102469 6 102465 102466 102468 102464 102482 102483 6 102467 102466 102469 102471 102477 102483 6 102468 102466 102069 102071 102470 102471 6 102469 102071 102471 102472 102473 102073 6 102469 102470 102472 102468 102477 102478 6 102471 102470 102473 102489 102478 102091 6 102472 102470 102073 102091 102088 102086 6 101516 101521 100914 100915 100576 101515 6 101578 101587 102476 101574 106361 101573 6 102475 101587 101589 106353 106359 106361 6 102468 102471 102478 102483 102484 102485 6 102477 102471 102485 102488 102489 102472 6 101642 101643 101644 102480 101641 102490 6 102479 101644 102481 102490 102494 102869 6 102480 101644 101645 101650 102494 102495 6 102464 102467 102483 103085 103083 103926 6 102482 102467 102468 102477 102484 103926 6 102483 102477 102485 102486 103926 103150 6 102484 102477 102478 102486 102487 102488 6 102484 102485 102487 103148 103149 103150 6 102486 102485 102488 103148 103967 103161 6 102487 102485 102478 102489 105948 103967 6 102488 102478 102472 102091 102092 105948 6 101641 102479 102480 102867 102868 102869 6 100070 100071 102492 103436 103437 103441 6 102491 100071 100072 100409 102493 103436 6 102492 100409 101606 103515 103436 103516 6 102480 102481 102495 102869 102870 102871 6 102494 102481 101650 101651 102496 102871 6 102495 101651 102497 102871 102872 102882 6 102496 101651 101652 102498 102882 102883 6 102497 101652 102499 102883 104092 104093 6 102498 101652 101653 102500 102809 104093 6 102499 101653 101654 102501 102809 102810 6 102500 101654 101656 102810 102811 102812 6 102184 102182 102503 102193 102504 102505 6 102502 102182 100030 102505 100029 102180 6 102193 102502 102505 102506 102507 102508 6 102504 102502 102508 100031 100030 102503 6 102193 102504 102507 102509 102510 102192 6 102506 102504 102508 102509 103330 103880 6 102507 102504 102505 100031 103330 100032 6 102506 102507 102510 102511 103880 103881 6 102506 102509 102511 102512 102191 102192 6 102510 102509 102512 106499 106498 103881 6 102510 102511 102191 106498 106500 109710 6 102398 102399 102514 102709 102710 102711 6 102513 102399 102400 102515 102711 102712 6 102514 102400 102401 102516 102712 102713 6 102515 102401 102402 102517 102713 102714 6 102516 102402 102403 102518 102714 102715 6 102517 102403 102404 102519 102715 102716 6 102518 102404 102405 102520 102716 102717 6 102519 102405 102406 102521 102717 102718 6 102520 102406 102407 102522 102718 102719 6 102521 102407 102408 102523 102719 102720 6 102522 102408 102409 102524 102720 102721 6 102523 102409 102410 102525 102721 102722 6 102524 102410 102411 102526 102722 102723 6 102525 102411 102412 102527 102723 102724 6 102526 102412 102413 102528 102724 102725 6 102527 102413 102414 102529 102725 102726 6 102528 102414 102415 102530 102726 102727 6 102529 102415 102416 102531 102727 102728 6 102530 102416 102417 102532 102728 102729 6 102531 102417 102418 102533 102729 102730 6 102532 102418 102419 102534 102730 102731 6 102533 102419 102420 102535 102731 102732 6 102534 102420 102421 102536 102732 102733 6 102535 102421 102422 102537 102733 102734 6 102536 102422 102423 102538 102734 102735 6 102537 102423 102424 102539 102735 102736 6 102538 102424 102425 102540 102736 102737 6 102539 102425 102426 102541 102552 102737 6 102540 102426 102427 102542 102552 102553 6 102541 102427 102428 102543 102553 102554 6 102542 102428 102429 102544 102554 102555 6 102543 102429 102430 102432 102555 102556 6 100408 102218 102546 102547 102841 102842 6 102545 102218 102547 102548 102549 102219 6 102545 102546 102548 102842 102845 102846 6 102547 102546 102549 102550 102857 102846 6 102548 102546 102219 102220 102550 102551 6 102548 102549 102551 106691 102856 102857 7 102550 102549 102220 102221 106702 106690 106691 6 102540 102541 102553 102737 102738 102739 6 102552 102541 102542 102554 102739 102740 6 102553 102542 102543 102555 102570 102740 6 102554 102543 102544 102556 102570 102557 5 102555 102544 102432 102433 102557 7 102556 102433 102434 102558 102570 102555 102742 5 102557 102434 102435 102559 102742 7 102558 102435 102437 102742 102743 102744 102745 6 102240 101714 102561 102562 102563 102564 6 102240 102560 102562 103435 102239 103446 6 102561 102560 102563 103446 103447 103448 6 102562 102560 102564 103448 103449 102567 6 102563 102560 101714 101715 102565 102567 6 102564 101715 101716 101717 102566 102567 6 102565 101717 102567 102568 102569 101718 6 102565 102566 102568 103449 102563 102564 6 102567 102566 102569 103458 103455 103449 6 102568 102566 101718 103463 103458 101719 6 102554 102555 102557 102740 102741 102742 6 102262 102263 102572 102769 102770 102771 6 102571 102263 102264 102573 102771 102772 6 102572 102264 102265 102574 102772 102773 6 102573 102265 102266 102575 102773 102774 6 102574 102266 102267 102576 102774 102775 6 102575 102267 102268 102577 102775 102776 6 102576 102268 102269 102578 102776 102777 6 102577 102269 102270 102579 102777 102778 6 102578 102270 102271 102580 102778 102779 6 102579 102271 102272 102581 102779 102780 6 102580 102272 102273 102582 102780 102781 6 102581 102273 102274 102583 102781 102782 6 102582 102274 102275 102584 102782 102783 6 102583 102275 102276 102585 102783 102784 6 102584 102276 102277 102586 102784 102785 6 102585 102277 102278 102587 102785 102786 6 102586 102278 102279 102588 102786 102787 6 102587 102279 102280 102589 102787 102788 6 102588 102280 102281 102590 102788 102789 6 102589 102281 102282 102591 102789 102790 6 102590 102282 102283 102592 102790 102791 6 102591 102283 102284 102593 102791 102792 6 102592 102284 102285 102594 102792 102793 6 102593 102285 102286 102595 102793 102794 6 102594 102286 102287 102596 102794 102795 6 102595 102287 102288 102597 102795 102796 6 102596 102288 102289 102598 102796 102797 6 102597 102289 102290 102599 102797 102798 6 102598 102290 102291 102600 102798 102799 6 102599 102291 102292 102601 102799 102800 6 102600 102292 102293 102602 102800 102801 6 102601 102293 102294 102603 102801 102802 6 102602 102294 102295 102296 102604 102802 6 102603 102296 102605 102802 102803 102606 5 102604 102296 102297 102298 102606 7 102605 102298 102299 102607 102803 102604 102826 5 102606 102299 102300 102608 102826 7 102607 102300 102301 102609 102826 102827 102828 6 102608 102301 102302 102610 102828 102829 6 102609 102302 102303 102611 102829 102830 6 102610 102303 102304 102612 102830 102831 6 102611 102304 102305 102613 102831 102832 6 102612 102305 102306 102614 102832 102833 6 102613 102306 102307 102615 102833 102834 6 102614 102307 102308 102616 102617 102834 6 102615 102308 102617 102618 102619 102309 6 102615 102616 102618 102834 102835 102836 6 102617 102616 102619 102836 102837 102838 6 102618 102616 102309 102310 102620 102838 6 102619 102310 102311 102621 102840 102838 6 102620 102311 102312 102622 102959 102840 6 102621 102312 102313 102623 102959 102960 6 102622 102313 102314 102624 102960 102961 6 102623 102314 102315 102625 102961 102962 6 102624 102315 102316 102626 102962 102963 6 102625 102316 102317 102627 102966 102963 6 102626 102317 102318 102628 102966 102967 6 102627 102318 102319 102629 102967 102968 6 102628 102319 102320 102630 102968 102969 6 102629 102320 102321 102631 102969 102970 6 102630 102321 102322 102632 102970 102971 6 102631 102322 102323 102633 102971 102972 6 102632 102323 102324 102634 102972 102973 6 102633 102324 102325 102635 102973 102974 6 102634 102325 102326 102636 102974 102975 6 102635 102326 102327 102328 102637 102975 6 102636 102328 102638 102639 102975 102976 6 102637 102328 102639 102640 102641 102329 6 102637 102638 102640 102976 102977 102978 6 102639 102638 102641 102642 102978 102979 6 102640 102638 102642 102331 102330 102329 6 102640 102641 102331 102643 102979 102980 6 102642 102331 102332 102644 102980 102981 6 102643 102332 102333 102645 102981 102982 6 102644 102333 102334 102646 102982 102983 6 102645 102334 102335 102647 102983 102984 6 102646 102335 102336 102648 102984 102985 6 102647 102336 102337 102649 102985 102986 6 102648 102337 102338 102650 102986 102987 6 102649 102338 102339 102651 102987 102988 6 102650 102339 102340 102652 102988 102989 6 102651 102340 102341 102653 102989 102990 6 102652 102341 102342 102654 102990 102991 6 102653 102342 102655 102991 102992 102656 6 102654 102342 102343 102344 102345 102656 6 102655 102345 102657 102992 102654 102993 6 102656 102345 102346 102658 102993 102994 6 102657 102346 102347 102659 102994 102995 6 102658 102347 102660 102995 102996 102997 6 102659 102347 102348 102661 102997 102998 6 102660 102348 102349 102350 102662 102998 6 102661 102350 102351 102663 102998 102999 6 102662 102351 102352 102664 102999 103000 6 102663 102352 102353 102665 103000 103001 6 102664 102353 102354 102666 103001 103002 6 102665 102354 102355 102667 103002 103565 6 102666 102355 102356 102668 103565 103566 6 102667 102356 102357 102669 103566 103567 6 102668 102357 102358 102670 103567 103568 6 102669 102358 102359 102671 103568 103569 6 102670 102359 102360 102672 103569 103570 6 102671 102360 102361 102362 102673 103570 6 102672 102362 102674 103570 103571 103572 6 102673 102362 102363 102675 103572 103573 6 102674 102363 102364 102676 103391 103573 6 102675 102364 102365 102677 103391 103392 6 102676 102365 102366 102678 103392 103393 6 102677 102366 102367 102679 103393 103394 6 102678 102367 102368 102680 103394 103579 6 102679 102368 102369 102681 103579 103580 6 102680 102369 102370 102682 103580 103581 6 102681 102370 102371 102683 103581 103582 6 102682 102371 102372 102684 103582 103583 6 102683 102372 102373 102685 103583 103584 6 102684 102373 102374 102686 103584 103585 6 102685 102374 102375 102687 103585 103586 6 102686 102375 102376 102688 103586 103587 6 102687 102376 102377 102689 103587 103588 6 102688 102377 102378 102690 103278 103588 6 102689 102378 102379 102691 103278 103279 6 102690 102379 102380 102692 103279 103280 6 102691 102380 102381 102693 103280 103281 6 102692 102381 102382 102694 103281 103282 6 102693 102382 102383 102695 103282 103283 6 102694 102383 102384 102696 103283 103284 6 102695 102384 102385 102697 103284 103285 6 102696 102385 102386 102698 103285 103286 6 102697 102386 102387 102699 103286 103287 6 102698 102387 102388 102700 103287 103288 6 102699 102388 102389 102701 103288 103289 6 102700 102389 102390 102702 103289 103290 6 102701 102390 102391 102703 103003 103290 6 102702 102391 102392 102704 103003 103004 6 102703 102392 102393 102705 103004 103005 6 102704 102393 102394 102706 103005 103006 6 102705 102394 102395 102707 103006 103007 6 102706 102395 102396 102708 103007 103008 6 102707 102396 102397 102709 103008 103009 6 102708 102397 102398 102513 102710 103009 6 102709 102513 102711 103009 103010 103011 6 102710 102513 102514 102712 103011 103012 6 102711 102514 102515 102713 103012 103013 6 102712 102515 102516 102714 103013 103014 6 102713 102516 102517 102715 103014 103015 6 102714 102517 102518 102716 103015 103016 6 102715 102518 102519 102717 103016 103017 6 102716 102519 102520 102718 103017 103018 6 102717 102520 102521 102719 103018 103019 6 102718 102521 102522 102720 103019 103020 6 102719 102522 102523 102721 103020 103021 6 102720 102523 102524 102722 103021 103022 6 102721 102524 102525 102723 103022 103023 6 102722 102525 102526 102724 103023 103024 6 102723 102526 102527 102725 103024 103025 6 102724 102527 102528 102726 103025 103026 6 102725 102528 102529 102727 103026 103027 6 102726 102529 102530 102728 103027 103028 6 102727 102530 102531 102729 103028 103029 6 102728 102531 102532 102730 103029 103030 6 102729 102532 102533 102731 103030 103031 6 102730 102533 102534 102732 103031 103032 6 102731 102534 102535 102733 103032 103033 6 102732 102535 102536 102734 103033 103034 6 102733 102536 102537 102735 103034 103035 6 102734 102537 102538 102736 103035 103036 6 102735 102538 102539 102737 103036 103037 6 102736 102539 102540 102552 102738 103037 6 102737 102552 102739 103037 103038 103039 6 102738 102552 102553 102740 103039 103040 6 102739 102553 102554 102570 102741 103040 6 102740 102570 102742 103040 103041 102743 6 102741 102570 102557 102558 102559 102743 6 102742 102559 102744 103041 102741 103049 5 102743 102559 102745 103049 103050 6 102744 102559 102437 102438 102746 103050 6 102745 102438 102439 102747 103050 103051 6 102746 102439 102748 103051 103052 102749 5 102747 102439 102440 102441 102749 6 102748 102441 102750 103052 102747 103058 7 102749 102441 102442 102445 103058 103059 103060 6 101746 101747 101748 102752 102893 102894 6 102751 101748 102233 102242 102753 102894 6 102752 102242 102754 102894 102895 102896 6 102753 102242 102243 102755 102896 102897 6 102754 102243 102756 102897 102898 102899 6 102755 102243 102244 102757 102899 102900 6 102756 102244 102245 102758 102900 102901 6 102757 102245 102759 102901 102902 102903 6 102758 102245 102246 102760 102903 102904 6 102759 102246 102247 102253 102761 102904 6 102760 102253 102254 102762 102904 102905 6 102761 102254 102255 102763 102905 102906 6 102762 102255 102256 102257 102764 102906 6 102763 102257 102765 102906 102907 102908 6 102764 102257 102258 102766 102908 102909 6 102765 102258 102259 102767 102909 102910 6 102766 102259 102260 102768 102910 102911 6 102767 102260 102261 102769 102911 102912 6 102768 102261 102262 102571 102770 102912 6 102769 102571 102771 102912 102913 102914 6 102770 102571 102572 102772 102914 102915 6 102771 102572 102573 102773 102915 102916 6 102772 102573 102574 102774 102916 102917 6 102773 102574 102575 102775 102917 102918 6 102774 102575 102576 102776 102918 102919 6 102775 102576 102577 102777 102919 102920 6 102776 102577 102578 102778 102920 102921 6 102777 102578 102579 102779 102921 102922 6 102778 102579 102580 102780 102922 102923 6 102779 102580 102581 102781 102923 102924 6 102780 102581 102582 102782 102924 102925 6 102781 102582 102583 102783 102925 102926 6 102782 102583 102584 102784 102926 102927 6 102783 102584 102585 102785 102927 102928 6 102784 102585 102586 102786 102928 102929 6 102785 102586 102587 102787 102929 102930 6 102786 102587 102588 102788 102930 102931 6 102787 102588 102589 102789 102931 102932 6 102788 102589 102590 102790 102932 102933 6 102789 102590 102591 102791 102933 102934 6 102790 102591 102592 102792 102934 102935 6 102791 102592 102593 102793 102935 102936 6 102792 102593 102594 102794 102936 102937 6 102793 102594 102595 102795 102937 102938 6 102794 102595 102596 102796 102938 102939 6 102795 102596 102597 102797 102939 102940 6 102796 102597 102598 102798 102940 102941 6 102797 102598 102599 102799 102941 102942 6 102798 102599 102600 102800 102942 102943 6 102799 102600 102601 102801 102943 102944 6 102800 102601 102602 102802 102944 102824 6 102801 102602 102603 102604 102803 102824 6 102802 102604 102606 102824 102825 102826 6 102173 102174 102175 102177 102805 103395 6 102804 102177 102806 103395 103396 103400 6 102805 102177 102178 102807 103400 103401 6 102806 102178 102808 103401 103402 103403 6 102807 102178 101731 103403 103404 101732 6 102499 102500 102810 104095 104093 104388 6 102809 102500 102501 102811 104388 102813 6 102810 102501 102812 101664 101666 102813 6 102811 102501 101656 101658 101661 101664 6 102811 101666 102814 103139 104388 102810 6 102813 101666 101667 102815 102817 103139 6 102814 101667 102816 102817 102818 102819 6 102815 101667 101668 102819 102820 102821 6 102814 102815 102818 103139 103140 103141 6 102817 102815 102819 103141 103142 103143 6 102818 102815 102816 102820 103143 103144 6 102819 102816 102821 103144 103145 103146 6 102820 102816 101668 102822 102823 103146 6 102821 101668 102823 101672 101671 101669 6 102821 102822 101672 103146 103147 101673 6 102802 102803 102825 102944 102801 102945 6 102824 102803 102826 102945 102946 102827 6 102825 102803 102606 102607 102608 102827 6 102826 102608 102828 102946 102825 102947 5 102827 102608 102609 102829 102947 6 102828 102609 102610 102830 102947 102948 6 102829 102610 102611 102831 102948 102949 6 102830 102611 102612 102832 102949 102950 6 102831 102612 102613 102833 102950 102951 6 102832 102613 102614 102834 102951 102952 7 102833 102614 102615 102617 102835 102952 102953 5 102834 102617 102836 102953 102954 6 102835 102617 102618 102837 102954 102955 6 102836 102618 102838 102839 102955 102956 6 102837 102618 102839 102840 102620 102619 6 102837 102838 102840 102956 102957 102958 6 102839 102838 102620 102958 102959 102621 6 100408 102545 102842 102843 109690 100429 6 102841 102545 102843 102844 102547 102845 6 102841 102842 102844 103168 109688 109690 6 102843 102842 103168 103165 103162 102845 6 102842 102547 102846 102847 103162 102844 6 102845 102547 102847 102848 102548 102857 6 102845 102846 102848 102849 103162 103163 6 102847 102846 102849 102850 102851 102857 6 102847 102848 102850 102852 102858 103163 6 102849 102848 102851 102852 102853 102854 6 102850 102848 102854 102855 102856 102857 6 102849 102850 102853 102858 102859 102860 5 102852 102850 102854 102860 106676 7 102853 102850 102851 102855 106676 106677 106678 7 102854 102851 102856 106689 106686 106680 106678 6 102855 102851 102857 106691 106689 102550 6 102856 102851 102848 102550 102548 102846 6 102849 102852 102859 103180 103163 106661 7 102858 102852 102860 106661 106674 106666 106662 6 102859 102852 102853 106675 106674 106676 5 101631 101633 101628 101629 101630 6 101628 101633 101636 102863 101627 107215 7 102862 101636 101637 102864 107216 107215 107217 5 102863 101637 101638 102865 107217 7 102864 101638 101639 102866 107217 107218 107219 7 102865 101639 101640 102867 103189 103214 107219 6 102866 101640 101641 102490 102868 103189 6 102867 102490 102869 103189 103190 103181 6 102868 102490 102480 102494 102870 103181 6 102869 102494 102871 102873 102884 103181 6 102870 102494 102495 102496 102872 102873 6 102871 102496 102873 102874 102881 102882 6 102871 102872 102874 102875 102870 102884 6 102873 102872 102875 102876 102880 102881 6 102873 102874 102876 102877 102884 102885 6 102875 102874 102877 102878 102879 102880 6 102875 102876 102878 102885 102886 102887 6 102877 102876 102879 102887 102888 102889 6 102878 102876 102880 102892 102889 107600 6 102879 102876 102874 102881 104086 107600 6 102880 102874 102872 102882 104086 104087 6 102881 102872 102496 102497 102883 104087 6 102882 102497 102498 104087 104088 104092 6 102870 102873 102875 102885 103181 103182 6 102884 102875 102877 102886 103182 103183 6 102885 102877 102887 103183 103184 103185 6 102886 102877 102878 102888 103188 103185 6 102887 102878 102889 102890 103959 103188 6 102888 102878 102890 102891 102892 102879 6 102888 102889 102891 103961 103959 107592 6 102890 102889 102892 107592 107593 107594 6 102891 102889 102879 107600 107597 107594 6 101745 101746 102751 102894 103199 103198 6 102893 102751 102752 102753 102895 103198 6 102894 102753 102896 103198 103200 103201 6 102895 102753 102754 102897 103201 103202 6 102896 102754 102755 102898 103202 103203 6 102897 102755 102899 103203 103204 103205 6 102898 102755 102756 102900 103205 103206 6 102899 102756 102757 102901 103206 103207 6 102900 102757 102758 102902 103207 103208 6 102901 102758 102903 103208 103209 103210 6 102902 102758 102759 102904 103213 103210 6 102903 102759 102760 102761 102905 103213 6 102904 102761 102762 102906 103483 103213 6 102905 102762 102763 102764 102907 103483 6 102906 102764 102908 103482 103212 103483 7 102907 102764 102765 102909 103500 103482 103697 6 102908 102765 102766 102910 103697 103698 6 102909 102766 102767 102911 103698 103699 6 102910 102767 102768 102912 103699 103700 6 102911 102768 102769 102770 102913 103700 6 102912 102770 102914 103700 103701 103702 6 102913 102770 102771 102915 103702 103703 6 102914 102771 102772 102916 103703 103704 6 102915 102772 102773 102917 103704 103705 6 102916 102773 102774 102918 103705 103706 6 102917 102774 102775 102919 103706 103707 6 102918 102775 102776 102920 103707 103708 6 102919 102776 102777 102921 103708 103709 6 102920 102777 102778 102922 103709 103710 6 102921 102778 102779 102923 103710 103711 6 102922 102779 102780 102924 103711 103712 6 102923 102780 102781 102925 103712 103713 6 102924 102781 102782 102926 103713 103714 6 102925 102782 102783 102927 103714 103715 6 102926 102783 102784 102928 103715 103716 6 102927 102784 102785 102929 103716 103717 6 102928 102785 102786 102930 103717 103718 6 102929 102786 102787 102931 103718 103719 6 102930 102787 102788 102932 103719 103720 6 102931 102788 102789 102933 103720 103721 6 102932 102789 102790 102934 103721 103722 6 102933 102790 102791 102935 103722 103723 6 102934 102791 102792 102936 103723 103724 6 102935 102792 102793 102937 103724 103725 6 102936 102793 102794 102938 103725 103726 6 102937 102794 102795 102939 103726 103727 6 102938 102795 102796 102940 103727 103728 6 102939 102796 102797 102941 103728 103729 6 102940 102797 102798 102942 103729 103730 6 102941 102798 102799 102943 103730 103731 6 102942 102799 102800 102944 103731 103732 6 102943 102800 102801 102824 102945 103732 6 102944 102824 102825 102946 103732 103733 6 102945 102825 102827 102947 103733 103734 6 102946 102827 102828 102829 102948 103734 7 102947 102829 102830 102949 103734 103735 103736 6 102948 102830 102831 102950 103242 103736 6 102949 102831 102832 102951 103242 103243 6 102950 102832 102833 102952 103243 103244 6 102951 102833 102834 102953 103244 103245 5 102952 102834 102835 102954 103245 7 102953 102835 102836 102955 103245 103246 103247 6 102954 102836 102837 102956 103247 103248 6 102955 102837 102839 102957 103248 103249 6 102956 102839 102958 103249 103250 103251 6 102957 102839 102840 102959 103251 103252 6 102958 102840 102621 102622 102960 103252 6 102959 102622 102623 102961 103254 103252 6 102960 102623 102624 102962 103254 103255 6 102961 102624 102625 102963 102964 103255 6 102962 102625 102964 102965 102966 102626 6 102962 102963 102965 103255 103256 103257 6 102964 102963 102966 103257 103258 103259 6 102965 102963 102626 102627 102967 103259 6 102966 102627 102628 102968 103259 103260 6 102967 102628 102629 102969 103260 103261 6 102968 102629 102630 102970 103261 103262 6 102969 102630 102631 102971 103262 103263 6 102970 102631 102632 102972 103263 103264 6 102971 102632 102633 102973 103264 103265 6 102972 102633 102634 102974 103265 103266 6 102973 102634 102635 102975 103266 103267 6 102974 102635 102636 102637 102976 103267 6 102975 102637 102639 102977 103267 103268 6 102976 102639 102978 103268 103269 103270 6 102977 102639 102640 102979 103270 103271 6 102978 102640 102642 102980 103271 103272 6 102979 102642 102643 102981 103272 103273 6 102980 102643 102644 102982 103273 103274 6 102981 102644 102645 102983 103274 103275 6 102982 102645 102646 102984 103275 103276 6 102983 102646 102647 102985 103276 103277 6 102984 102647 102648 102986 103277 103824 6 102985 102648 102649 102987 103545 103824 6 102986 102649 102650 102988 103545 103546 6 102987 102650 102651 102989 103546 103547 6 102988 102651 102652 102990 103547 103548 6 102989 102652 102653 102991 103548 103549 6 102990 102653 102654 102992 103549 103550 6 102991 102654 102656 102993 103550 103551 6 102992 102656 102657 102994 103551 103552 6 102993 102657 102658 102995 103552 103553 6 102994 102658 102659 102996 103553 103554 6 102995 102659 102997 103554 103555 103556 6 102996 102659 102660 102998 103556 103557 6 102997 102660 102661 102662 102999 103557 6 102998 102662 102663 103000 103557 103558 6 102999 102663 102664 103001 103558 103559 6 103000 102664 102665 103002 103559 103560 6 103001 102665 102666 103560 103561 103565 6 102702 102703 103004 103290 103291 103292 6 103003 102703 102704 103005 103292 103293 6 103004 102704 102705 103006 103293 103294 6 103005 102705 102706 103007 103294 103295 6 103006 102706 102707 103008 103295 103296 6 103007 102707 102708 103009 103296 103297 6 103008 102708 102709 102710 103010 103297 6 103009 102710 103011 103297 103298 103299 6 103010 102710 102711 103012 103299 103300 6 103011 102711 102712 103013 103300 103301 6 103012 102712 102713 103014 103301 103302 6 103013 102713 102714 103015 103302 103303 6 103014 102714 102715 103016 103303 103304 6 103015 102715 102716 103017 103304 103305 6 103016 102716 102717 103018 103305 103306 6 103017 102717 102718 103019 103306 103307 6 103018 102718 102719 103020 103307 103308 6 103019 102719 102720 103021 103308 103309 6 103020 102720 102721 103022 103309 103310 6 103021 102721 102722 103023 103310 103311 6 103022 102722 102723 103024 103311 103312 6 103023 102723 102724 103025 103312 103313 6 103024 102724 102725 103026 103313 103314 6 103025 102725 102726 103027 103314 103315 6 103026 102726 102727 103028 103315 103316 6 103027 102727 102728 103029 103316 103317 6 103028 102728 102729 103030 103317 103318 6 103029 102729 102730 103031 103318 103319 6 103030 102730 102731 103032 103319 103320 6 103031 102731 102732 103033 103320 103321 6 103032 102732 102733 103034 103321 103322 6 103033 102733 102734 103035 103042 103322 6 103034 102734 102735 103036 103042 103043 6 103035 102735 102736 103037 103043 103044 6 103036 102736 102737 102738 103038 103044 6 103037 102738 103039 103044 103045 103046 6 103038 102738 102739 103040 103046 103047 6 103039 102739 102740 102741 103041 103047 6 103040 102741 102743 103047 103048 103049 6 103034 103035 103043 103322 103323 103324 6 103042 103035 103036 103044 103324 103325 6 103043 103036 103037 103038 103045 103325 6 103044 103038 103046 103325 103326 103327 6 103045 103038 103039 103047 103053 103327 6 103046 103039 103040 103041 103048 103053 6 103047 103041 103049 103053 103054 103055 6 103048 103041 102743 102744 103050 103055 6 103049 102744 102745 102746 103051 103055 6 103050 102746 102747 103052 103055 103056 6 103051 102747 102749 103056 103057 103058 6 103046 103047 103048 103054 103327 103328 6 103053 103048 103055 103328 103329 103056 6 103054 103048 103049 103050 103051 103056 7 103055 103051 103052 103057 103329 103054 103641 5 103056 103052 103058 103641 103642 7 103057 103052 102749 102750 103059 103642 103643 6 103058 102750 103060 103643 103644 103061 5 103059 102750 102445 102446 103061 6 103060 102446 103062 103644 103059 103910 6 103061 102446 102447 103063 103910 103911 6 103062 102447 103064 103069 103911 103912 6 103063 102447 102448 102449 103065 103069 6 103064 102449 102450 103066 103069 103070 6 103065 102450 102451 103067 103070 103071 6 103066 102451 102452 103068 103071 103072 6 103067 102452 102454 103072 103073 103074 6 103063 103064 103065 103070 103912 103913 6 103069 103065 103066 103071 103913 103914 6 103070 103066 103067 103072 103914 103915 6 103071 103067 103068 103073 103915 103916 6 103072 103068 103074 103916 103917 103918 6 103073 103068 102454 102455 103075 103918 6 103074 102455 102456 102457 103076 103918 6 103075 102457 102458 103077 103349 103918 6 103076 102458 102459 103078 103349 103350 6 103077 102459 102460 103079 103107 103350 6 103078 102460 102461 103080 103107 103108 6 103079 102461 103081 103091 103108 103109 6 103080 102461 102462 103082 103091 103092 6 103081 102462 102463 103083 103084 103092 6 103082 102463 103084 103085 102482 102464 6 103082 103083 103085 103092 103112 103359 6 103084 103083 102482 103926 103152 103359 6 100016 100017 103087 103088 103089 103090 6 103086 100017 100018 103095 103126 103090 6 100016 103086 103089 103098 100417 100015 6 103088 103086 103090 103098 103103 103104 6 103089 103086 103104 103105 103087 103126 6 103080 103081 103092 103109 103110 103111 6 103091 103081 103082 103084 103111 103112 5 101615 101616 103094 104099 103544 6 103093 101616 101617 104367 104099 101624 6 103087 100018 100019 103096 103125 103126 6 103095 100019 100020 103125 103128 100414 6 102241 101657 101655 101647 101182 101184 6 103088 103089 100417 103099 103102 103103 6 100417 103098 100418 103100 103101 103102 6 100418 103099 103101 103228 103229 103684 6 103100 103099 103102 103226 103228 103498 7 103101 103099 103098 103103 103113 103498 103497 6 103102 103098 103089 103104 103113 103114 6 103103 103089 103090 103105 103106 103114 6 103104 103090 103106 103126 103124 103118 6 103104 103105 103116 103114 103117 103118 6 103078 103079 103108 103350 103351 103352 6 103107 103079 103080 103109 103352 103353 6 103108 103080 103091 103110 103353 103354 6 103109 103091 103111 103354 103355 103356 6 103110 103091 103092 103112 103356 103357 6 103111 103092 103084 103357 103358 103359 5 103102 103103 103114 103115 103497 6 103113 103103 103115 103116 103106 103104 7 103113 103114 103116 103497 103504 103501 103495 6 103115 103114 103106 103117 106712 103504 6 103116 103106 103118 103119 106712 106711 6 103117 103106 103119 103120 103124 103105 6 103117 103118 103120 103121 106711 106713 6 103119 103118 103121 103122 103123 103124 6 103119 103120 103122 103884 103887 106713 6 103121 103120 103123 103127 103883 103884 6 103122 103120 103124 103125 103127 103128 6 103123 103120 103118 103125 103126 103105 6 103123 103124 103126 103128 103095 103096 6 103125 103124 103105 103095 103087 103090 6 103122 103123 103128 103882 103339 103883 6 103127 103123 103125 100414 103882 103096 6 102201 102203 103130 103851 103852 109781 6 103129 102203 102205 101525 101526 109781 6 102094 102095 103132 103133 109776 103138 6 102094 103131 103133 103134 103135 102093 6 103132 103131 103134 103136 103137 103138 6 103132 103133 103135 103136 105946 105945 6 103132 103134 105945 105943 105947 102093 6 103134 103133 103137 106090 106091 105946 6 103136 103133 103138 106090 106089 106092 6 103137 103133 106092 106093 109776 103131 6 102813 102814 102817 103140 104388 104386 6 103139 102817 103141 104385 104384 104386 6 103140 102817 102818 103142 104390 104385 6 103141 102818 103143 107767 104390 107768 6 103142 102818 102819 103144 107774 107768 6 103143 102819 102820 103145 107774 107775 6 103144 102820 103146 104231 107775 109791 6 103145 102820 102821 102823 103147 104231 6 103146 102823 101673 101674 103412 104231 6 102486 102487 103149 103156 103157 103161 6 102486 103148 103150 103151 103155 103156 6 102486 103149 103151 103152 103926 102484 6 103150 103149 103152 103153 103154 103155 6 103150 103151 103153 103926 103085 103359 6 103152 103151 103154 103358 103359 103360 6 103153 103151 103155 103360 103361 103362 6 103154 103151 103149 103156 103677 103362 6 103155 103149 103148 103157 103158 103677 6 103156 103148 103158 103159 103160 103161 6 103156 103157 103159 103676 103677 103945 6 103158 103157 103160 103945 103946 103962 6 103159 103157 103161 103962 103963 103964 6 103160 103157 103148 103967 103964 102487 6 102845 102847 103163 103164 103165 102844 6 103162 102847 103164 103180 102858 102849 6 103162 103163 103165 103166 103177 103180 6 103162 103164 103166 103167 103168 102844 6 103165 103164 103167 103177 103174 103171 6 103165 103166 103168 103169 103170 103171 6 103165 103167 103169 102843 102844 109688 6 103168 103167 103170 109687 109686 109688 5 103169 103167 103171 103172 109687 6 103170 103167 103172 103173 103174 103166 6 103170 103171 103173 109691 109687 106653 7 103172 103171 103174 103175 106654 106652 106653 6 103173 103171 103175 103176 103177 103166 5 103173 103174 103176 103450 106654 6 103175 103174 103177 103178 103179 103450 6 103176 103174 103178 103166 103164 103180 6 103176 103177 103179 103180 106660 106661 6 103176 103178 103450 106657 106659 106660 6 103177 103164 103178 103163 102858 106661 6 102869 102870 102884 103182 103190 102868 6 103181 102884 102885 103183 103216 103190 6 103182 102885 102886 103184 103193 103216 6 103183 102886 103185 103186 103192 103193 6 103184 102886 103186 103187 103188 102887 6 103184 103185 103187 103192 103196 107584 6 103186 103185 103188 103958 107586 107584 6 103187 103185 102887 103958 103959 102888 6 102867 102868 103190 102866 103214 103215 6 103189 102868 103181 103215 103216 103182 6 101741 101742 101744 103197 103198 103199 6 103184 103186 103193 103194 103195 103196 6 103184 103192 103194 107222 103216 103183 7 103193 103192 103195 107222 107221 107204 107203 6 103194 103192 103196 107196 107197 107203 6 103195 103192 103186 107583 107196 107584 6 101740 101741 103191 103198 103411 103200 7 103197 103191 103199 102893 102894 102895 103200 5 103198 103191 101744 101745 102893 6 103198 102895 103201 103411 103197 109751 6 103200 102895 102896 103202 103470 109751 6 103201 102896 102897 103203 103470 103471 6 103202 102897 102898 103204 103471 103472 6 103203 102898 103205 103472 103473 103474 6 103204 102898 102899 103206 103474 103475 6 103205 102899 102900 103207 103475 103476 6 103206 102900 102901 103208 103476 103477 6 103207 102901 102902 103209 103477 103478 6 103208 102902 103210 103211 103478 103479 6 103209 102902 103211 103212 103213 102903 6 103209 103210 103212 103479 103480 103481 7 103211 103210 103213 103481 103482 102907 103483 6 103212 103210 102903 103483 102905 102904 6 102866 103189 103215 107220 107219 107221 6 103214 103189 103190 103216 107221 107222 6 103215 103190 103182 107222 103193 103183 6 100635 100636 103218 104040 103763 103762 6 103217 100636 100638 103219 103484 104040 6 103218 100638 103220 103221 103222 103484 6 103219 100638 100639 103221 103240 103241 6 103219 103220 103222 103223 103224 103241 6 103219 103221 103223 103484 103485 103486 6 103222 103221 103224 103225 103486 103487 6 103223 103221 103225 103226 103227 103241 6 103223 103224 103226 103493 103487 103494 7 103225 103224 103227 103228 103101 103494 103498 6 103226 103224 103228 103229 103230 103241 5 103226 103227 103101 103100 103229 6 103100 103228 103227 103230 103231 103684 6 103229 103227 103231 103232 103241 103240 6 103229 103230 103232 103233 103234 103684 6 103231 103230 103233 103240 103239 103236 7 103231 103232 103234 100011 100010 103235 103236 5 103231 103233 100011 103684 100012 6 100010 103233 103236 103237 103238 100009 6 103235 103233 103237 100643 103239 103232 6 103235 103236 103238 100647 100644 100643 5 103235 103237 100009 100008 100647 6 100643 103236 100640 100639 103240 103232 6 100639 103239 103220 103241 103230 103232 6 103220 103240 103221 103224 103227 103230 6 102949 102950 103243 103736 103737 103738 6 103242 102950 102951 103244 103738 103739 6 103243 102951 102952 103245 103739 103740 7 103244 102952 102953 102954 103246 103740 103741 5 103245 102954 103247 103741 103742 6 103246 102954 102955 103248 103742 103743 6 103247 102955 102956 103249 103743 103744 6 103248 102956 102957 103250 103744 103745 6 103249 102957 103251 103745 103746 103747 6 103250 102957 102958 103252 103253 103747 6 103251 102958 103253 103254 102960 102959 6 103251 103252 103254 103747 103748 103749 6 103253 103252 102960 102961 103255 103749 6 103254 102961 102962 102964 103256 103749 6 103255 102964 103257 103749 103750 103751 6 103256 102964 102965 103258 103751 103752 6 103257 102965 103259 103752 103753 103754 6 103258 102965 102966 102967 103260 103754 6 103259 102967 102968 103261 103754 103755 6 103260 102968 102969 103262 103755 103756 6 103261 102969 102970 103263 103756 103757 6 103262 102970 102971 103264 103757 103758 6 103263 102971 102972 103265 103758 103759 7 103264 102972 102973 103266 103759 104054 104051 5 103265 102973 102974 103267 104054 6 103266 102974 102975 102976 103268 104054 7 103267 102976 102977 103269 104054 104053 104055 5 103268 102977 103270 104055 104056 6 103269 102977 102978 103271 104056 104057 6 103270 102978 102979 103272 104057 104058 6 103271 102979 102980 103273 104058 104059 6 103272 102980 102981 103274 104059 104060 6 103273 102981 102982 103275 104060 104061 6 103274 102982 102983 103276 104064 104061 6 103275 102983 102984 103277 104064 104065 6 103276 102984 102985 103826 104065 103824 6 102689 102690 103279 103588 103589 103590 6 103278 102690 102691 103280 103590 103591 6 103279 102691 102692 103281 103591 103592 6 103280 102692 102693 103282 103592 103593 6 103281 102693 102694 103283 103593 103594 6 103282 102694 102695 103284 103594 103595 6 103283 102695 102696 103285 103595 103596 6 103284 102696 102697 103286 103596 103597 6 103285 102697 102698 103287 103597 103598 6 103286 102698 102699 103288 103598 103599 6 103287 102699 102700 103289 103599 103600 6 103288 102700 102701 103290 103600 103601 6 103289 102701 102702 103003 103291 103601 6 103290 103003 103292 103601 103602 103603 6 103291 103003 103004 103293 103603 103604 6 103292 103004 103005 103294 103604 103605 6 103293 103005 103006 103295 103605 103606 6 103294 103006 103007 103296 103606 103607 6 103295 103007 103008 103297 103607 103608 6 103296 103008 103009 103010 103298 103608 6 103297 103010 103299 103608 103609 103610 6 103298 103010 103011 103300 103610 103611 6 103299 103011 103012 103301 103611 103612 6 103300 103012 103013 103302 103612 103613 6 103301 103013 103014 103303 103613 103614 6 103302 103014 103015 103304 103614 103615 6 103303 103015 103016 103305 103615 103616 6 103304 103016 103017 103306 103616 103617 6 103305 103017 103018 103307 103617 103618 6 103306 103018 103019 103308 103618 103619 6 103307 103019 103020 103309 103619 103620 6 103308 103020 103021 103310 103620 103621 6 103309 103021 103022 103311 103621 103622 6 103310 103022 103023 103312 103622 103623 6 103311 103023 103024 103313 103623 103624 6 103312 103024 103025 103314 103624 103625 6 103313 103025 103026 103315 103625 103626 6 103314 103026 103027 103316 103626 103627 6 103315 103027 103028 103317 103627 103628 6 103316 103028 103029 103318 103628 103629 6 103317 103029 103030 103319 103629 103630 6 103318 103030 103031 103320 103630 103631 6 103319 103031 103032 103321 103631 103632 6 103320 103032 103033 103322 103632 103633 6 103321 103033 103034 103042 103323 103633 6 103322 103042 103324 103633 103634 103635 6 103323 103042 103043 103325 103635 103636 6 103324 103043 103044 103045 103326 103636 6 103325 103045 103327 103636 103637 103638 6 103326 103045 103046 103053 103328 103638 6 103327 103053 103054 103329 103638 103639 6 103328 103054 103056 103639 103640 103641 6 102507 102508 100032 100033 103331 103880 6 103330 100033 100034 102248 103332 103880 6 103331 102248 103333 103334 103880 103881 6 103332 102248 103334 103335 103336 102249 6 103332 103333 103335 109707 106499 103881 6 103334 103333 103336 109706 106492 109707 6 103335 103333 102249 102250 102251 109706 6 101171 101172 101524 103338 103339 103882 6 103337 101524 103339 103340 103341 104250 6 103337 103338 103340 103882 103127 103883 6 103339 103338 103341 103342 103885 103883 6 103340 103338 103342 103343 102206 104250 6 103340 103341 103343 103861 106717 103885 6 103342 103341 102206 102207 103344 103861 6 103343 102207 102209 103345 103346 103861 6 103344 102209 103346 103347 103348 102211 6 103344 103345 103347 103861 103862 103863 6 103346 103345 103348 106532 103863 106524 6 103347 103345 102211 102213 106523 106524 6 103076 103077 103350 103918 103917 103919 6 103349 103077 103078 103107 103351 103919 6 103350 103107 103352 103919 103920 103921 6 103351 103107 103108 103353 103921 103922 6 103352 103108 103109 103354 103922 103923 6 103353 103109 103110 103355 103923 103924 6 103354 103110 103356 103924 103925 103374 6 103355 103110 103111 103357 103368 103374 6 103356 103111 103112 103358 103367 103368 6 103357 103112 103359 103153 103360 103367 6 103358 103112 103153 103085 103152 103084 6 103358 103153 103154 103361 103363 103367 6 103360 103154 103362 103363 103364 103678 6 103361 103154 103155 103677 103675 103678 6 103360 103361 103364 103365 103366 103367 6 103363 103361 103365 103678 103667 103668 6 103363 103364 103366 103373 103370 103668 6 103363 103365 103367 103368 103369 103370 6 103363 103366 103368 103360 103358 103357 6 103367 103366 103369 103357 103356 103374 6 103368 103366 103370 103371 103374 103375 6 103369 103366 103371 103372 103373 103365 6 103369 103370 103372 103375 103376 103377 6 103371 103370 103373 103377 103378 103379 6 103372 103370 103365 103379 103380 103668 6 103356 103368 103369 103375 103925 103355 7 103374 103369 103371 103376 103943 103925 104342 5 103375 103371 103377 104342 104343 6 103376 103371 103372 103378 104343 104344 6 103377 103372 103379 103645 104347 104344 6 103378 103372 103373 103380 103381 103645 6 103379 103373 103381 103382 103668 103656 6 103379 103380 103382 103383 103384 103645 6 103381 103380 103383 103390 103387 103656 6 103381 103382 103384 103385 103386 103387 6 103381 103383 103385 103645 103646 103647 6 103384 103383 103386 103647 103648 103649 6 103385 103383 103387 103388 103649 103650 6 103386 103383 103388 103389 103390 103382 6 103386 103387 103389 103650 103651 103652 6 103388 103387 103390 103652 103653 103654 6 103389 103387 103382 103654 103655 103656 6 102675 102676 103392 103573 103574 103575 6 103391 102676 102677 103393 103575 103576 6 103392 102677 102678 103394 103576 103577 6 103393 102678 102679 103577 103578 103579 6 102173 102804 102805 103396 103397 104747 6 103395 102805 103397 103398 103399 103400 6 103395 103396 103398 103892 104747 104746 6 103397 103396 103399 103892 103893 103894 6 103398 103396 103400 103894 103895 103896 6 103399 103396 102805 102806 103401 103896 6 103400 102806 102807 103402 103896 103897 6 103401 102807 103403 103897 103898 103899 6 103402 102807 102808 103404 103899 103900 6 103403 102808 101732 103405 103679 103900 6 103404 101732 101733 101734 103406 103679 6 103405 101734 101735 103407 103679 103680 6 103406 101735 101736 103408 103680 103681 6 103407 101736 101737 103409 103683 103681 6 103408 101737 101738 103410 103470 103683 6 103409 101738 101739 103411 109751 103470 6 103410 101739 101740 103197 103200 109751 6 103147 101674 101675 101676 103413 104231 6 103412 101676 101677 103414 109791 104231 6 103413 101677 103415 107778 107776 109791 6 103414 101677 101678 107778 107779 105382 6 101695 101696 103417 103786 101694 103787 6 103416 101696 101697 103418 103787 103789 6 103417 101697 101698 102223 103419 103789 6 103418 102223 103420 103789 103790 103791 6 103419 102223 102224 103421 103791 103792 6 103420 102224 102225 103422 103423 103792 6 103421 102225 103423 103424 103425 103426 6 103421 103422 103424 103794 103792 103795 6 103423 103422 103425 103795 103796 103797 6 103424 103422 103426 103797 103798 103799 6 103425 103422 102225 102226 103427 103799 6 103426 102226 102227 103428 103799 103800 6 103427 102227 102228 103429 103800 103801 6 103428 102228 103430 103801 103802 103432 6 103429 102228 102229 102238 103431 103432 6 103430 102238 103432 103433 103434 103435 6 103430 103431 103433 103442 103802 103429 6 103432 103431 103434 103442 103443 103444 6 103433 103431 103435 103444 103445 103446 6 103434 103431 102238 102239 102561 103446 6 102491 102492 103437 103438 103515 102493 6 102491 103436 103438 103439 103440 103441 6 103437 103436 103439 103513 103514 103515 6 103437 103438 103440 103508 103509 103513 6 103437 103439 103441 103451 103453 103508 6 103437 103440 102491 100070 103451 100069 6 103432 103433 103443 103802 103803 103804 6 103442 103433 103444 103804 103805 103806 6 103443 103433 103434 103445 103806 103807 6 103444 103434 103446 103807 103808 103447 6 103445 103434 103435 102561 102562 103447 6 103446 102562 103448 103808 103445 104107 6 103447 102562 102563 103449 103454 104107 6 103448 102563 102567 103454 103455 102568 7 103175 103176 103179 106655 106654 106656 106657 6 103441 103440 100069 100068 103452 103453 6 100068 103451 103453 100067 103505 103506 6 103452 103451 103440 103506 103507 103508 6 103448 103449 103455 103456 104107 104108 6 103454 103449 103456 103457 103458 102568 6 103454 103455 103457 103464 104110 104108 6 103456 103455 103458 103459 103460 103464 6 103457 103455 103459 103463 102569 102568 6 103457 103458 103460 103461 103462 103463 6 103457 103459 103461 103464 103465 103466 6 103460 103459 103462 103466 103467 103469 6 103461 103459 103463 101721 103469 101720 6 103462 103459 103458 102569 101720 101719 6 103456 103457 103460 103465 104394 104110 6 103464 103460 103466 104404 104394 104745 6 103465 103460 103461 103467 103468 104745 6 103466 103461 103468 102172 101724 103469 6 103466 103467 102172 104745 104746 104747 6 101724 103467 101722 101721 103462 103461 7 103201 103202 103471 109751 103410 103409 103683 6 103470 103202 103203 103472 103681 103683 6 103471 103203 103204 103473 103682 103681 6 103472 103204 103474 103685 103902 103682 6 103473 103204 103205 103475 103685 103686 6 103474 103205 103206 103476 103686 103687 6 103475 103206 103207 103477 103687 103688 6 103476 103207 103208 103478 103688 103689 6 103477 103208 103209 103479 103689 103690 6 103478 103209 103211 103480 103690 103691 6 103479 103211 103481 103499 103694 103691 6 103480 103211 103212 103482 103499 103500 5 103481 103212 102907 103500 102908 5 102907 103212 103213 102905 102906 6 103218 103219 103222 103485 104039 104040 6 103484 103222 103486 103489 103968 104039 6 103485 103222 103223 103487 103488 103489 6 103486 103223 103488 103492 103493 103225 6 103486 103487 103489 103490 103491 103492 6 103486 103488 103490 103485 103968 103969 6 103489 103488 103491 103969 103970 103971 6 103490 103488 103492 103971 109747 106555 6 103491 103488 103487 103493 103496 109747 6 103492 103487 103225 103494 103495 103496 6 103493 103225 103226 103495 103497 103498 6 103493 103494 103496 103497 103501 103115 6 103493 103495 103492 103501 103502 109747 6 103495 103494 103498 103102 103113 103115 5 103497 103494 103226 103101 103102 6 103480 103481 103500 103694 103695 103696 6 103499 103481 103482 102908 103696 103697 6 103496 103495 103502 103503 103504 103115 6 103496 103501 103503 109747 106706 109748 6 103502 103501 103504 106712 106710 109748 5 103503 103501 103115 106712 103116 6 100067 103452 103506 106697 106703 100066 6 103505 103452 103453 103507 106697 106704 6 103506 103453 103508 103510 104522 106704 6 103507 103453 103440 103439 103509 103510 6 103508 103439 103510 103511 103512 103513 6 103508 103509 103511 103770 103507 104522 6 103510 103509 103512 103770 103771 103772 6 103511 103509 103513 103772 103773 103520 6 103512 103509 103439 103438 103514 103520 6 103513 103438 103515 103520 103521 103517 6 103514 103438 103436 102493 103516 103517 6 103515 102493 103517 103518 101607 101606 6 103515 103516 103518 103521 103514 103522 6 103517 103516 101607 101613 103522 103523 5 101613 101607 101605 101608 101610 6 103513 103514 103521 103773 103512 104531 6 103520 103514 103517 103522 104116 104531 6 103521 103517 103518 103523 103525 104116 6 103522 103518 101613 101614 103524 103525 6 103523 101614 103525 103526 103527 103528 6 103523 103524 103526 103522 104116 104117 6 103525 103524 103527 103529 104117 104118 6 103526 103524 103528 103529 103530 103543 6 103527 103524 101614 103543 103544 101615 6 103526 103527 103530 103531 104118 109786 6 103529 103527 103531 103532 103542 103543 6 103529 103530 103532 103533 109786 109787 6 103531 103530 103533 103534 103541 103542 6 103531 103532 103534 103535 109787 109788 6 103533 103532 103535 103536 103540 103541 6 103533 103534 103536 103537 109788 107178 6 103535 103534 103537 103538 103539 103540 6 103535 103536 103538 107182 107179 107178 6 103537 103536 103539 107182 107183 107184 6 103538 103536 103540 107184 107185 107212 6 103539 103536 103534 103541 107212 104372 6 103540 103534 103532 103542 104372 104097 6 103541 103532 103530 103543 104096 104097 6 103542 103530 103527 103528 103544 104096 6 103543 103528 101615 104099 104096 103093 6 102986 102987 103546 103824 103825 103829 6 103545 102987 102988 103547 103829 103830 6 103546 102988 102989 103548 103830 103831 6 103547 102989 102990 103549 103831 103832 6 103548 102990 102991 103550 103832 103833 6 103549 102991 102992 103551 103809 103833 6 103550 102992 102993 103552 103809 103810 6 103551 102993 102994 103553 103810 103811 6 103552 102994 102995 103554 103811 103812 6 103553 102995 102996 103555 103812 103813 6 103554 102996 103556 103813 103814 103815 6 103555 102996 102997 103557 103815 103816 6 103556 102997 102998 102999 103558 103816 6 103557 102999 103000 103559 103816 103817 6 103558 103000 103001 103560 103817 103818 6 103559 103001 103002 103561 103562 103818 6 103560 103002 103562 103563 103564 103565 6 103560 103561 103563 103818 103819 103820 6 103562 103561 103564 103820 103821 103822 6 103563 103561 103565 103822 103823 103566 6 103564 103561 103002 102666 102667 103566 6 103565 102667 102668 103567 103823 103564 6 103566 102668 102669 103568 103850 103823 6 103567 102669 102670 103569 103879 103850 6 103568 102670 102671 103570 103891 103879 6 103569 102671 102672 102673 103571 103891 6 103570 102673 103572 104237 103891 104257 6 103571 102673 102674 103573 104257 104258 6 103572 102674 102675 103391 103574 104258 6 103573 103391 103575 104258 104259 104263 6 103574 103391 103392 103576 104263 104264 6 103575 103392 103393 103577 104264 104265 6 103576 103393 103394 103578 104265 104266 6 103577 103394 103579 104266 104267 104268 6 103578 103394 102679 102680 103580 104268 6 103579 102680 102681 103581 104141 104268 6 103580 102681 102682 103582 104141 104142 6 103581 102682 102683 103583 104142 104143 6 103582 102683 102684 103584 104143 104144 6 103583 102684 102685 103585 104144 104145 6 103584 102685 102686 103586 104145 104146 6 103585 102686 102687 103587 104146 104147 6 103586 102687 102688 103588 104147 104148 6 103587 102688 102689 103278 103589 104148 6 103588 103278 103590 104148 104149 104150 6 103589 103278 103279 103591 104150 104151 6 103590 103279 103280 103592 104151 104152 6 103591 103280 103281 103593 104152 104153 6 103592 103281 103282 103594 104153 104154 6 103593 103282 103283 103595 104154 104155 6 103594 103283 103284 103596 104155 104156 6 103595 103284 103285 103597 104156 104157 6 103596 103285 103286 103598 104157 104158 6 103597 103286 103287 103599 104158 104159 6 103598 103287 103288 103600 104159 104160 6 103599 103288 103289 103601 104160 104161 6 103600 103289 103290 103291 103602 104161 6 103601 103291 103603 104161 104162 104163 6 103602 103291 103292 103604 104163 104164 6 103603 103292 103293 103605 104164 104165 6 103604 103293 103294 103606 104165 104166 6 103605 103294 103295 103607 104166 104167 6 103606 103295 103296 103608 104167 104168 6 103607 103296 103297 103298 103609 104168 6 103608 103298 103610 104168 104169 104170 6 103609 103298 103299 103611 104170 104171 6 103610 103299 103300 103612 104171 104172 6 103611 103300 103301 103613 104172 104173 6 103612 103301 103302 103614 104173 104174 6 103613 103302 103303 103615 104174 104175 6 103614 103303 103304 103616 104175 104176 6 103615 103304 103305 103617 104176 104177 6 103616 103305 103306 103618 104177 104178 6 103617 103306 103307 103619 104178 104179 6 103618 103307 103308 103620 104179 104180 6 103619 103308 103309 103621 104180 104181 6 103620 103309 103310 103622 104181 104182 6 103621 103310 103311 103623 104182 104183 6 103622 103311 103312 103624 104183 104184 6 103623 103312 103313 103625 104184 104185 6 103624 103313 103314 103626 104185 104186 6 103625 103314 103315 103627 104186 104187 6 103626 103315 103316 103628 104187 104188 6 103627 103316 103317 103629 104188 104189 6 103628 103317 103318 103630 104189 104190 6 103629 103318 103319 103631 104190 104191 6 103630 103319 103320 103632 104191 104192 6 103631 103320 103321 103633 104192 104193 6 103632 103321 103322 103323 103634 104193 6 103633 103323 103635 103903 104193 104194 6 103634 103323 103324 103636 103903 103904 6 103635 103324 103325 103326 103637 103904 6 103636 103326 103638 103904 103905 103906 6 103637 103326 103327 103328 103639 103906 6 103638 103328 103329 103640 103906 103907 6 103639 103329 103641 103907 103908 103642 5 103640 103329 103056 103057 103642 7 103641 103057 103058 103643 103908 103640 103927 6 103642 103058 103059 103644 103909 103927 5 103643 103059 103061 103909 103910 6 103381 103384 103646 103379 103378 104347 6 103645 103384 103647 104347 104348 104349 6 103646 103384 103385 103648 104352 104349 6 103647 103385 103649 103657 104352 104353 6 103648 103385 103386 103650 103657 103658 6 103649 103386 103388 103651 103658 103659 6 103650 103388 103652 103659 103660 103661 6 103651 103388 103389 103653 103661 103662 6 103652 103389 103654 103662 103663 103664 6 103653 103389 103390 103655 103664 103665 6 103654 103390 103656 103665 103666 103667 6 103655 103390 103382 103667 103668 103380 6 103648 103649 103658 104353 104354 104358 6 103657 103649 103650 103659 104371 104358 6 103658 103650 103651 103660 109793 104371 6 103659 103651 103661 104906 104908 109793 6 103660 103651 103652 103662 103669 104906 6 103661 103652 103653 103663 103669 103670 6 103662 103653 103664 103670 103671 103672 6 103663 103653 103654 103665 103672 103673 6 103664 103654 103655 103666 103673 103674 6 103665 103655 103667 103674 103675 103678 6 103666 103655 103656 103668 103364 103678 6 103667 103656 103380 103364 103365 103373 6 103661 103662 103670 104903 104905 104906 6 103669 103662 103663 103671 104902 104903 6 103670 103663 103672 105918 104902 103951 6 103671 103663 103664 103673 103950 103951 6 103672 103664 103665 103674 103944 103950 6 103673 103665 103666 103675 103676 103944 6 103674 103666 103676 103677 103362 103678 6 103674 103675 103677 103158 103944 103945 6 103676 103675 103158 103156 103155 103362 6 103362 103675 103361 103364 103667 103666 6 103404 103405 103406 103680 103900 103901 6 103679 103406 103407 103681 103682 103901 7 103680 103407 103682 103472 103471 103683 103408 6 103680 103681 103472 103901 103902 103473 5 103471 103681 103408 103409 103470 7 100418 103100 103229 103231 103234 100012 100013 7 103473 103474 103686 103902 104665 104664 104688 5 103685 103474 103475 103687 104688 7 103686 103475 103476 103688 104688 104689 104690 6 103687 103476 103477 103689 104690 104691 6 103688 103477 103478 103690 104691 104692 6 103689 103478 103479 103691 103692 104692 6 103690 103479 103692 103693 103694 103480 6 103690 103691 103693 104692 104693 104694 6 103692 103691 103694 104694 104695 104696 6 103693 103691 103480 103499 103695 104696 6 103694 103499 103696 104696 104697 104698 6 103695 103499 103500 103697 104698 104699 6 103696 103500 102908 102909 103698 104699 6 103697 102909 102910 103699 103972 104699 6 103698 102910 102911 103700 103972 103973 6 103699 102911 102912 102913 103701 103973 6 103700 102913 103702 103973 103974 103975 6 103701 102913 102914 103703 103975 103976 6 103702 102914 102915 103704 103976 103977 6 103703 102915 102916 103705 103977 103978 6 103704 102916 102917 103706 103978 103979 6 103705 102917 102918 103707 103979 103980 6 103706 102918 102919 103708 103980 103981 6 103707 102919 102920 103709 103981 103982 6 103708 102920 102921 103710 103982 103983 6 103709 102921 102922 103711 103983 103984 6 103710 102922 102923 103712 103984 103985 6 103711 102923 102924 103713 103985 103986 6 103712 102924 102925 103714 103986 103987 6 103713 102925 102926 103715 103987 103988 6 103714 102926 102927 103716 103988 103989 6 103715 102927 102928 103717 103989 103990 6 103716 102928 102929 103718 103990 103991 6 103717 102929 102930 103719 103991 103992 6 103718 102930 102931 103720 103992 103993 6 103719 102931 102932 103721 103993 103994 6 103720 102932 102933 103722 103994 103995 6 103721 102933 102934 103723 103995 103996 6 103722 102934 102935 103724 103996 103997 6 103723 102935 102936 103725 103997 103998 6 103724 102936 102937 103726 103998 103999 6 103725 102937 102938 103727 103999 104000 6 103726 102938 102939 103728 104000 104001 6 103727 102939 102940 103729 104001 104002 6 103728 102940 102941 103730 104002 104003 6 103729 102941 102942 103731 104003 104004 6 103730 102942 102943 103732 104004 104005 6 103731 102943 102944 102945 103733 104005 6 103732 102945 102946 103734 104005 104006 6 103733 102946 102947 102948 103735 104006 6 103734 102948 103736 104006 104007 103737 5 103735 102948 102949 103242 103737 6 103736 103242 103738 104007 103735 104012 6 103737 103242 103243 103739 104012 104013 6 103738 103243 103244 103740 104013 104014 6 103739 103244 103245 103741 104014 104015 6 103740 103245 103246 103742 104015 104016 6 103741 103246 103247 103743 104016 104017 6 103742 103247 103248 103744 104017 104018 6 103743 103248 103249 103745 104018 104019 6 103744 103249 103250 103746 104019 104020 6 103745 103250 103747 104020 104021 104022 6 103746 103250 103251 103253 103748 104022 6 103747 103253 103749 104022 104023 104024 7 103748 103253 103254 103255 103256 103750 104024 5 103749 103256 103751 104024 104025 6 103750 103256 103257 103752 104025 104026 6 103751 103257 103258 103753 104029 104026 7 103752 103258 103754 104037 104029 104046 103755 5 103753 103258 103259 103260 103755 6 103754 103260 103261 103756 104046 103753 6 103755 103261 103262 103757 104046 104047 6 103756 103262 103263 103758 104047 104048 6 103757 103263 103264 103759 104048 104049 6 103758 103264 103265 104049 104050 104051 6 100615 100617 103761 103764 103765 103763 6 103760 100617 100625 100627 103762 103763 6 103761 100627 103763 103217 100635 100629 6 103761 103762 103765 103760 104040 103217 6 100615 103760 103765 104038 106557 100612 6 103764 103760 103763 104038 104039 104040 5 102085 101567 103767 103768 106093 6 103766 101567 103768 103769 101571 101568 6 103766 103767 103769 106092 106093 106094 7 103768 103767 101571 106094 106088 106317 106318 6 103510 103511 103771 104522 104523 104524 6 103770 103511 103772 104524 104525 104528 6 103771 103511 103512 103773 104528 104529 6 103772 103512 103520 104529 104530 104531 6 101682 101683 103775 105391 105385 105383 6 103774 101683 103776 105620 105391 103778 6 103775 101683 101684 101686 103777 103778 6 103776 101686 103778 103779 103780 103781 6 103776 103777 103779 107791 105620 103775 6 103778 103777 103780 107798 107792 107791 6 103779 103777 103781 107798 103783 103782 6 103780 103777 101686 101687 101688 103782 6 103781 101688 101689 101691 103783 103780 6 103782 101691 103784 107798 103780 107799 6 103783 101691 101692 103785 107799 107800 6 103784 101692 103786 103787 103788 107800 6 103785 101692 101693 101694 103416 103787 6 103786 103416 103417 103785 103788 103789 6 103785 103787 103789 107800 107801 103790 6 103788 103787 103417 103418 103419 103790 6 103789 103419 103791 107801 103788 107802 6 103790 103419 103420 103792 103793 107802 6 103791 103420 103793 103794 103423 103421 6 103791 103792 103794 107802 107803 107804 6 103793 103792 103423 103795 107804 107805 6 103794 103423 103424 103796 107809 107805 6 103795 103424 103797 103952 107809 107810 6 103796 103424 103425 103798 103952 103953 6 103797 103425 103799 103953 103954 103955 6 103798 103425 103426 103427 103800 103955 6 103799 103427 103428 103801 103955 103956 6 103800 103428 103429 103802 103956 103957 6 103801 103429 103432 103442 103803 103957 6 103802 103442 103804 103957 104100 104239 6 103803 103442 103443 103805 104100 104101 6 103804 103443 103806 104101 104102 104103 6 103805 103443 103444 103807 104103 104104 6 103806 103444 103445 103808 104104 104105 6 103807 103445 103447 104105 104106 104107 6 103550 103551 103810 103833 103834 103835 6 103809 103551 103552 103811 103835 103836 6 103810 103552 103553 103812 103836 103837 6 103811 103553 103554 103813 103837 103838 6 103812 103554 103555 103814 103838 103839 6 103813 103555 103815 103839 103840 103841 6 103814 103555 103556 103816 103841 103842 6 103815 103556 103557 103558 103817 103842 6 103816 103558 103559 103818 103842 103843 6 103817 103559 103560 103562 103819 103843 6 103818 103562 103820 103843 103844 103845 6 103819 103562 103563 103821 103845 103846 6 103820 103563 103822 103846 103847 103848 6 103821 103563 103564 103823 103848 103849 6 103822 103564 103566 103849 103850 103567 6 102986 103545 103825 103826 103277 102985 6 103824 103545 103826 103827 103828 103829 6 103824 103825 103827 104069 104065 103277 6 103826 103825 103828 104756 104069 104763 6 103827 103825 103829 104763 104764 104765 6 103828 103825 103545 103546 103830 104765 6 103829 103546 103547 103831 104765 104766 6 103830 103547 103548 103832 104766 104767 6 103831 103548 103549 103833 104770 104767 6 103832 103549 103550 103809 103834 104770 6 103833 103809 103835 105016 104770 105024 6 103834 103809 103810 103836 105024 105025 6 103835 103810 103811 103837 105025 105026 6 103836 103811 103812 103838 104405 105026 6 103837 103812 103813 103839 103864 104405 6 103838 103813 103814 103840 103864 103865 6 103839 103814 103841 103865 103866 103867 6 103840 103814 103815 103842 103853 103867 6 103841 103815 103816 103817 103843 103853 6 103842 103817 103818 103819 103844 103853 6 103843 103819 103845 103853 103854 103855 6 103844 103819 103820 103846 103855 103856 6 103845 103820 103821 103847 103856 103857 6 103846 103821 103848 103860 103857 103876 6 103847 103821 103822 103849 103876 103877 6 103848 103822 103823 103850 103877 103878 6 103849 103823 103567 103878 103879 103568 6 102181 102199 102179 103852 102201 103129 6 102179 103851 100027 100026 103129 109781 6 103841 103842 103843 103844 103854 103867 6 103853 103844 103855 103867 103868 103869 6 103854 103844 103845 103856 103869 103870 6 103855 103845 103846 103857 103858 103870 6 103856 103846 103858 103859 103860 103847 6 103856 103857 103859 103870 103871 103872 6 103858 103857 103860 103872 103873 103874 6 103859 103857 103847 103874 103875 103876 6 103343 103344 103346 103862 106717 103342 6 103861 103346 103863 106716 106715 106717 7 103862 103346 106532 106531 103347 106533 106716 6 103838 103839 103865 104405 104406 104407 6 103864 103839 103840 103866 104407 104408 6 103865 103840 103867 104408 104409 103868 6 103866 103840 103841 103853 103854 103868 6 103867 103854 103869 104409 103866 104420 6 103868 103854 103855 103870 104420 104421 6 103869 103855 103856 103858 103871 104421 6 103870 103858 103872 104421 104422 104423 6 103871 103858 103859 103873 104423 104424 6 103872 103859 103874 104424 104425 104426 6 103873 103859 103860 103875 104426 104427 6 103874 103860 103876 104427 104428 103888 6 103875 103860 103847 103848 103877 103888 6 103876 103848 103849 103878 103888 103889 6 103877 103849 103850 103879 103889 103890 6 103878 103850 103568 103890 103891 103569 6 102507 103330 102509 103881 103331 103332 6 102509 103880 103334 106499 102511 103332 6 103337 103339 103127 101171 100414 103128 6 103127 103339 103122 103884 103885 103340 6 103122 103883 103885 103886 103887 103121 6 103884 103883 103886 103342 106717 103340 6 103884 103885 103887 106538 106715 106717 6 103884 103886 103121 106713 106714 106538 6 103876 103877 103889 104428 103875 104251 6 103888 103877 103878 103890 104236 104251 6 103889 103878 103879 103891 104236 104237 6 103890 103879 103569 104237 103571 103570 6 103397 103398 103893 104746 104744 104743 6 103892 103398 103894 104743 104748 104749 6 103893 103398 103399 103895 104752 104749 6 103894 103399 103896 104661 104758 104752 6 103895 103399 103400 103401 103897 104661 6 103896 103401 103402 103898 104661 104662 6 103897 103402 103899 104662 104663 104664 6 103898 103402 103403 103900 104664 104665 6 103899 103403 103404 103679 103901 104665 6 103900 103679 103680 103682 103902 104665 5 103901 103682 103473 104665 103685 6 103634 103635 103904 104194 104195 104196 6 103903 103635 103636 103637 103905 104196 6 103904 103637 103906 104196 104197 104198 6 103905 103637 103638 103639 103907 104198 6 103906 103639 103640 103908 104198 104199 6 103907 103640 103642 103927 104199 104200 5 103643 103644 103910 103927 103928 7 103909 103644 103061 103062 103911 103928 103929 7 103910 103062 103063 103912 103929 103930 103931 6 103911 103063 103069 103913 103931 103932 6 103912 103069 103070 103914 103932 103933 6 103913 103070 103071 103915 103933 103934 6 103914 103071 103072 103916 103934 103935 6 103915 103072 103073 103917 103935 103936 6 103916 103073 103918 103349 103919 103936 6 103917 103073 103074 103075 103076 103349 6 103917 103349 103350 103351 103920 103936 6 103919 103351 103921 103936 103937 103938 6 103920 103351 103352 103922 103938 103939 6 103921 103352 103353 103923 103939 103940 6 103922 103353 103354 103924 103940 103941 6 103923 103354 103355 103925 103941 103942 6 103924 103355 103374 103942 103943 103375 6 103085 102482 102483 102484 103150 103152 6 103908 103642 103643 103909 103928 104200 6 103927 103909 103910 103929 104200 104201 6 103928 103910 103911 103930 104201 104202 6 103929 103911 103931 104202 104203 104204 5 103930 103911 103912 103932 104204 6 103931 103912 103913 103933 104204 104205 6 103932 103913 103914 103934 104205 104206 6 103933 103914 103915 103935 104206 104207 6 103934 103915 103916 103936 104207 103937 6 103935 103916 103917 103919 103920 103937 6 103936 103920 103938 104207 103935 104335 6 103937 103920 103921 103939 104335 104336 6 103938 103921 103922 103940 104336 104337 6 103939 103922 103923 103941 104337 104338 6 103940 103923 103924 103942 104338 104339 6 103941 103924 103925 103943 104339 104340 6 103942 103925 103375 104340 104341 104342 6 103673 103674 103676 103945 103950 103947 6 103944 103676 103158 103159 103946 103947 6 103945 103159 103947 103948 105922 103962 6 103945 103946 103948 103949 103950 103944 6 103947 103946 103949 105920 105921 105922 6 103947 103948 103950 103951 105919 105920 6 103947 103949 103951 103672 103673 103944 6 103950 103949 103672 105918 103671 105919 6 103796 103797 103953 107810 107811 107812 6 103952 103797 103798 103954 107812 107813 6 103953 103798 103955 107813 107814 107815 6 103954 103798 103799 103800 103956 107815 6 103955 103800 103801 103957 104238 107815 6 103956 103801 103802 103803 104238 104239 6 103187 103188 103959 103960 107588 107586 6 103958 103188 103960 103961 102890 102888 6 103958 103959 103961 107588 107589 107590 6 103960 103959 102890 107590 107591 107592 6 103159 103160 103963 105922 103946 105923 6 103962 103160 103964 103965 105923 105924 6 103963 103160 103965 103966 103967 103161 6 103963 103964 103966 105924 105942 105943 6 103965 103964 103967 105943 105948 105947 6 103966 103964 103161 105948 102488 102487 6 103485 103489 103969 106556 104038 104039 6 103968 103489 103490 103970 101597 106556 6 103969 103490 103971 106358 101595 101597 6 103970 103490 103491 106555 106357 106358 6 103698 103699 103973 104699 104700 104701 6 103972 103699 103700 103701 103974 104701 6 103973 103701 103975 104701 104702 104703 6 103974 103701 103702 103976 104703 104704 6 103975 103702 103703 103977 104704 104705 6 103976 103703 103704 103978 104705 104706 6 103977 103704 103705 103979 104706 104707 6 103978 103705 103706 103980 104707 104708 6 103979 103706 103707 103981 104708 104709 6 103980 103707 103708 103982 104709 104710 6 103981 103708 103709 103983 104710 104711 6 103982 103709 103710 103984 104711 104712 6 103983 103710 103711 103985 104712 104713 6 103984 103711 103712 103986 104713 104714 6 103985 103712 103713 103987 104714 104715 6 103986 103713 103714 103988 104715 104716 6 103987 103714 103715 103989 104716 104717 6 103988 103715 103716 103990 104717 104718 6 103989 103716 103717 103991 104718 104719 6 103990 103717 103718 103992 104719 104720 6 103991 103718 103719 103993 104720 104721 6 103992 103719 103720 103994 104439 104721 6 103993 103720 103721 103995 104439 104440 6 103994 103721 103722 103996 104440 104441 6 103995 103722 103723 103997 104441 104442 6 103996 103723 103724 103998 104442 104443 6 103997 103724 103725 103999 104443 104444 6 103998 103725 103726 104000 104444 104445 6 103999 103726 103727 104001 104445 104446 6 104000 103727 103728 104002 104070 104446 6 104001 103728 103729 104003 104008 104070 6 104002 103729 103730 104004 104008 104009 6 104003 103730 103731 104005 104009 104010 6 104004 103731 103732 103733 104006 104010 6 104005 103733 103734 103735 104007 104010 6 104006 103735 103737 104010 104011 104012 6 104002 104003 104009 104070 104071 104072 6 104008 104003 104004 104010 104072 104011 6 104009 104004 104005 104006 104007 104011 6 104010 104007 104012 104072 104009 104073 6 104011 104007 103737 103738 104013 104073 6 104012 103738 103739 104014 104073 104074 7 104013 103739 103740 104015 104074 104075 104076 6 104014 103740 103741 104016 104076 104077 6 104015 103741 103742 104017 104077 104078 6 104016 103742 103743 104018 104078 104079 6 104017 103743 103744 104019 104079 104080 6 104018 103744 103745 104020 104080 104081 6 104019 103745 103746 104021 104081 104082 6 104020 103746 104022 104030 104082 104083 6 104021 103746 103747 103748 104023 104030 6 104022 103748 104024 104030 104031 104032 6 104023 103748 103749 103750 104025 104032 6 104024 103750 103751 104026 104027 104032 6 104025 103751 104027 104028 104029 103752 6 104025 104026 104028 104032 104033 104034 6 104027 104026 104029 104034 104035 104036 6 104028 104026 103752 104036 104037 103753 6 104021 104022 104023 104031 104083 104084 6 104030 104023 104032 104084 104085 104033 6 104031 104023 104024 104025 104027 104033 6 104032 104027 104034 104085 104031 104462 6 104033 104027 104028 104035 104041 104462 6 104034 104028 104036 104041 104042 104043 6 104035 104028 104029 104037 104043 104044 6 104036 104029 103753 104044 104045 104046 6 103764 103765 104039 106556 106557 103968 6 104038 103765 104040 103968 103485 103484 6 104039 103765 103763 103217 103484 103218 6 104034 104035 104042 104462 104463 104464 6 104041 104035 104043 104464 104465 104466 6 104042 104035 104036 104044 104466 104467 6 104043 104036 104037 104045 104467 104468 6 104044 104037 104046 104468 104469 104047 6 104045 104037 103753 103755 103756 104047 6 104046 103756 103757 104048 104469 104045 6 104047 103757 103758 104049 104469 104470 6 104048 103758 103759 104050 104470 104209 6 104049 103759 104051 104052 104208 104209 6 104050 103759 104052 104053 104054 103265 6 104050 104051 104053 104208 104221 104222 6 104052 104051 104054 103268 104055 104222 6 104053 104051 103265 103266 103267 103268 5 104053 103268 103269 104056 104222 7 104055 103269 103270 104057 104222 104223 104224 7 104056 103270 103271 104058 104224 104225 104226 6 104057 103271 103272 104059 104226 104227 6 104058 103272 103273 104060 104227 104228 6 104059 103273 103274 104061 104062 104228 6 104060 103274 104062 104063 104064 103275 6 104060 104061 104063 104230 104228 104502 6 104062 104061 104064 104066 104067 104502 6 104063 104061 103275 103276 104065 104066 6 104064 103276 104066 104069 103826 103277 6 104064 104065 104063 104067 104068 104069 6 104063 104066 104068 104513 104502 104754 6 104067 104066 104069 104754 104755 104756 6 104068 104066 104065 103826 104756 103827 6 104001 104002 104008 104071 104446 104447 6 104070 104008 104072 104447 104448 104449 6 104071 104008 104009 104011 104073 104449 6 104072 104011 104012 104013 104074 104449 6 104073 104013 104014 104075 104449 104450 6 104074 104014 104076 104450 104451 104452 5 104075 104014 104015 104077 104452 6 104076 104015 104016 104078 104452 104453 6 104077 104016 104017 104079 104453 104454 6 104078 104017 104018 104080 104454 104455 6 104079 104018 104019 104081 104455 104456 6 104080 104019 104020 104082 104456 104457 6 104081 104020 104021 104083 104457 104458 6 104082 104021 104030 104084 104458 104459 6 104083 104030 104031 104085 104459 104460 6 104084 104031 104033 104460 104461 104462 6 102880 102881 104087 104089 107599 107600 6 104086 102881 102882 102883 104088 104089 6 104087 102883 104089 104090 104091 104092 7 104087 104088 104090 107598 107599 104086 107751 6 104089 104088 104091 107751 107753 104379 6 104090 104088 104092 104094 104378 104379 6 104091 104088 102883 102498 104093 104094 6 104092 102498 104094 104095 102809 102499 6 104092 104093 104095 104091 104378 104387 6 104094 104093 102809 104387 104386 104388 6 103542 103543 104097 104098 104099 103544 6 103542 104096 104098 104365 104372 103541 6 104097 104096 104099 104365 104366 104367 6 104098 104096 103544 104367 103094 103093 6 103803 103804 104101 104239 104240 104241 6 104100 103804 103805 104102 104241 104242 6 104101 103805 104103 104242 104243 104244 6 104102 103805 103806 104104 104111 104244 6 104103 103806 103807 104105 104111 104112 6 104104 103807 103808 104106 104112 104113 6 104105 103808 104107 104108 104109 104113 6 104106 103808 103447 103448 103454 104108 6 104107 103454 104106 104109 104110 103456 6 104106 104108 104110 104113 104114 104115 6 104109 104108 103456 104115 104394 103464 6 104103 104104 104112 104244 104245 104246 6 104111 104104 104105 104113 104249 104246 6 104112 104105 104106 104109 104114 104249 6 104113 104109 104115 104249 104391 104392 6 104114 104109 104110 104392 104393 104394 7 103522 103525 104117 104530 104531 103521 104119 5 104116 103525 103526 104118 104119 6 104117 103526 104119 104120 103529 109786 7 104117 104118 104120 104121 109784 104530 104116 6 104119 104118 104121 104122 109786 109789 6 104119 104120 104122 104123 104395 109784 6 104121 104120 104123 104124 109789 107172 6 104121 104122 104124 104125 104126 104395 6 104123 104122 104125 107171 104140 107172 6 104123 104124 104126 104127 104128 104140 6 104123 104125 104127 104395 104396 104397 6 104126 104125 104128 104129 104130 104397 6 104127 104125 104129 104136 104139 104140 6 104127 104128 104130 104131 104135 104136 6 104127 104129 104131 104132 104397 104398 6 104130 104129 104132 104133 104134 104135 6 104130 104131 104133 104401 104398 104410 6 104132 104131 104134 104410 104411 104412 6 104133 104131 104135 104412 104413 107164 6 104134 104131 104129 104136 104137 107164 6 104135 104129 104128 104137 104138 104139 6 104135 104136 104138 107163 107161 107164 6 104137 104136 104139 107168 107163 107169 6 104138 104136 104128 104140 107169 107170 6 104139 104128 104125 107170 107171 104124 6 103580 103581 104142 104268 104269 104270 6 104141 103581 103582 104143 104270 104271 6 104142 103582 103583 104144 104271 104272 6 104143 103583 103584 104145 104272 104273 6 104144 103584 103585 104146 104273 104274 6 104145 103585 103586 104147 104274 104275 6 104146 103586 103587 104148 104275 104276 6 104147 103587 103588 103589 104149 104276 6 104148 103589 104150 104276 104277 104278 6 104149 103589 103590 104151 104278 104279 6 104150 103590 103591 104152 104279 104280 6 104151 103591 103592 104153 104280 104281 6 104152 103592 103593 104154 104281 104282 6 104153 103593 103594 104155 104282 104283 6 104154 103594 103595 104156 104283 104284 6 104155 103595 103596 104157 104284 104285 6 104156 103596 103597 104158 104285 104286 6 104157 103597 103598 104159 104286 104287 6 104158 103598 103599 104160 104287 104288 6 104159 103599 103600 104161 104288 104289 6 104160 103600 103601 103602 104162 104289 6 104161 103602 104163 104289 104290 104291 6 104162 103602 103603 104164 104291 104292 6 104163 103603 103604 104165 104292 104293 6 104164 103604 103605 104166 104293 104294 6 104165 103605 103606 104167 104294 104295 6 104166 103606 103607 104168 104295 104296 6 104167 103607 103608 103609 104169 104296 6 104168 103609 104170 104296 104297 104298 6 104169 103609 103610 104171 104298 104299 6 104170 103610 103611 104172 104299 104300 6 104171 103611 103612 104173 104300 104301 6 104172 103612 103613 104174 104301 104302 6 104173 103613 103614 104175 104302 104303 6 104174 103614 103615 104176 104303 104304 6 104175 103615 103616 104177 104304 104305 6 104176 103616 103617 104178 104305 104306 6 104177 103617 103618 104179 104306 104307 6 104178 103618 103619 104180 104307 104308 6 104179 103619 103620 104181 104308 104309 6 104180 103620 103621 104182 104309 104310 6 104181 103621 103622 104183 104310 104311 6 104182 103622 103623 104184 104311 104312 6 104183 103623 103624 104185 104312 104313 6 104184 103624 103625 104186 104313 104314 6 104185 103625 103626 104187 104314 104315 6 104186 103626 103627 104188 104315 104316 6 104187 103627 103628 104189 104316 104317 6 104188 103628 103629 104190 104317 104318 6 104189 103629 103630 104191 104318 104319 6 104190 103630 103631 104192 104319 104320 6 104191 103631 103632 104193 104320 104321 6 104192 103632 103633 103634 104194 104321 6 104193 103634 103903 104195 104321 104322 6 104194 103903 104196 104322 104323 104324 6 104195 103903 103904 103905 104197 104324 6 104196 103905 104198 104324 104325 104326 6 104197 103905 103906 103907 104199 104326 6 104198 103907 103908 104200 104326 104327 6 104199 103908 103927 103928 104201 104327 6 104200 103928 103929 104202 104327 104328 6 104201 103929 103930 104203 104328 104329 6 104202 103930 104204 104329 104330 104331 6 104203 103930 103931 103932 104205 104331 6 104204 103932 103933 104206 104331 104332 6 104205 103933 103934 104207 104332 104333 7 104206 103934 103935 103937 104333 104334 104335 6 104050 104052 104209 104210 104211 104221 6 104050 104208 104210 104470 104049 104477 6 104209 104208 104211 104212 104477 104478 6 104210 104208 104212 104213 104220 104221 6 104210 104211 104213 104214 104478 104479 6 104212 104211 104214 104215 104216 104220 6 104212 104213 104215 104479 104480 104481 6 104214 104213 104216 104217 104481 104482 6 104215 104213 104217 104218 104219 104220 6 104215 104216 104218 104232 104482 104483 6 104217 104216 104219 104232 104233 104234 6 104218 104216 104220 104224 104234 104223 6 104219 104216 104213 104211 104221 104223 6 104220 104211 104208 104052 104222 104223 6 104221 104052 104053 104055 104056 104223 6 104222 104056 104224 104221 104220 104219 6 104223 104056 104057 104225 104234 104219 6 104224 104057 104226 104235 104234 104488 5 104225 104057 104058 104227 104488 7 104226 104058 104059 104228 104229 104487 104488 6 104227 104059 104229 104230 104062 104060 6 104227 104228 104230 104489 104487 104500 6 104229 104228 104062 104500 104501 104502 6 103147 103412 103146 103145 109791 103413 6 104217 104218 104233 104483 104484 104485 6 104232 104218 104234 104235 104485 104486 6 104233 104218 104235 104225 104224 104219 6 104233 104234 104225 104486 104487 104488 6 103889 103890 104237 104251 104252 104256 6 104236 103890 103891 103571 104256 104257 6 103956 103957 104239 107815 107816 104503 6 104238 103957 103803 104100 104240 104503 6 104239 104100 104241 104503 104504 104505 6 104240 104100 104101 104242 104505 104506 6 104241 104101 104102 104243 104416 104506 6 104242 104102 104244 104416 104417 104418 6 104243 104102 104103 104111 104245 104418 6 104244 104111 104246 104247 104418 104419 6 104245 104111 104247 104248 104249 104112 6 104245 104246 104248 104419 107829 107830 6 104247 104246 104249 104391 104739 107830 6 104248 104246 104112 104113 104114 104391 6 103341 103338 101524 101525 102205 102206 6 103889 104236 104252 104253 104428 103888 6 104251 104236 104253 104254 104255 104256 6 104251 104252 104254 104647 104428 106892 6 104253 104252 104255 104729 104730 106892 6 104254 104252 104256 104729 104261 104260 6 104255 104252 104236 104237 104257 104260 6 104256 104237 103571 103572 104258 104260 6 104257 103572 103573 103574 104259 104260 6 104258 103574 104260 104261 104262 104263 6 104258 104259 104261 104256 104257 104255 6 104260 104259 104262 104732 104729 104255 6 104261 104259 104263 106901 104732 106902 6 104262 104259 103574 103575 104264 106902 6 104263 103575 103576 104265 105231 106902 6 104264 103576 103577 104266 105231 105232 6 104265 103577 103578 104267 105232 105233 6 104266 103578 104268 105233 105234 104269 6 104267 103578 103579 103580 104141 104269 6 104268 104141 104270 105234 104267 105451 6 104269 104141 104142 104271 105451 105452 6 104270 104142 104143 104272 105452 105453 6 104271 104143 104144 104273 105453 105454 6 104272 104144 104145 104274 105457 105454 6 104273 104145 104146 104275 105469 105457 6 104274 104146 104147 104276 105469 105470 6 104275 104147 104148 104149 104277 105470 6 104276 104149 104278 105470 105471 105472 6 104277 104149 104150 104279 105472 105473 6 104278 104150 104151 104280 105473 105474 6 104279 104151 104152 104281 105046 105474 6 104280 104152 104153 104282 105046 105047 6 104281 104153 104154 104283 105047 105048 6 104282 104154 104155 104284 105048 105049 6 104283 104155 104156 104285 105049 105050 6 104284 104156 104157 104286 105050 105051 6 104285 104157 104158 104287 105051 105052 6 104286 104158 104159 104288 104923 105052 6 104287 104159 104160 104289 104923 104924 6 104288 104160 104161 104162 104290 104924 6 104289 104162 104291 104924 104925 104926 6 104290 104162 104163 104292 104926 104927 6 104291 104163 104164 104293 104927 104928 6 104292 104164 104165 104294 104928 104929 6 104293 104165 104166 104295 104929 104930 6 104294 104166 104167 104296 104930 104931 6 104295 104167 104168 104169 104297 104931 6 104296 104169 104298 104771 104931 104932 6 104297 104169 104170 104299 104771 104772 6 104298 104170 104171 104300 104772 104773 6 104299 104171 104172 104301 104773 104774 6 104300 104172 104173 104302 104774 104775 6 104301 104173 104174 104303 104775 104776 6 104302 104174 104175 104304 104776 104777 6 104303 104175 104176 104305 104777 104778 6 104304 104176 104177 104306 104778 104779 6 104305 104177 104178 104307 104779 104780 6 104306 104178 104179 104308 104780 104781 6 104307 104179 104180 104309 104781 104782 6 104308 104180 104181 104310 104566 104782 6 104309 104181 104182 104311 104566 104567 6 104310 104182 104183 104312 104567 104568 6 104311 104183 104184 104313 104568 104569 6 104312 104184 104185 104314 104569 104570 6 104313 104185 104186 104315 104570 104571 6 104314 104186 104187 104316 104571 104572 6 104315 104187 104188 104317 104572 104573 6 104316 104188 104189 104318 104573 104574 6 104317 104189 104190 104319 104574 104575 6 104318 104190 104191 104320 104575 104576 6 104319 104191 104192 104321 104576 104577 6 104320 104192 104193 104194 104322 104577 6 104321 104194 104195 104323 104577 104578 6 104322 104195 104324 104578 104579 104580 6 104323 104195 104196 104197 104325 104580 6 104324 104197 104326 104580 104581 104582 6 104325 104197 104198 104199 104327 104582 6 104326 104199 104200 104201 104328 104582 6 104327 104201 104202 104329 104582 104583 6 104328 104202 104203 104330 104583 104584 6 104329 104203 104331 104584 104585 104589 7 104330 104203 104204 104205 104332 104589 104590 6 104331 104205 104206 104333 104590 104591 6 104332 104206 104207 104334 104591 104592 6 104333 104207 104335 104336 104429 104592 5 104334 104207 103937 103938 104336 6 104335 103938 103939 104337 104334 104429 6 104336 103939 103940 104338 104429 104430 6 104337 103940 103941 104339 104430 104431 6 104338 103941 103942 104340 104431 104432 6 104339 103942 103943 104341 104432 104433 6 104340 103943 104342 104433 104434 104435 6 104341 103943 103375 103376 104343 104435 6 104342 103376 103377 104344 104345 104435 6 104343 103377 104345 104346 104347 103378 6 104343 104344 104346 104435 104436 104437 6 104345 104344 104347 104437 104438 104348 6 104346 104344 103378 103645 103646 104348 6 104347 103646 104349 104350 104438 104346 6 104348 103646 104350 104351 104352 103647 6 104348 104349 104351 104601 104438 104602 6 104350 104349 104352 104602 104603 104604 6 104351 104349 103647 103648 104353 104604 6 104352 103648 103657 104354 104355 104604 6 104353 103657 104355 104356 104357 104358 6 104353 104354 104356 104604 104605 104606 6 104355 104354 104357 104361 104362 104606 6 104356 104354 104358 104359 104360 104361 6 104357 104354 104359 104371 103658 103657 6 104357 104358 104360 104368 104369 104371 6 104357 104359 104361 104364 104368 104614 6 104357 104360 104356 104362 104363 104364 6 104356 104361 104363 104606 104607 104608 6 104362 104361 104364 104611 104608 104612 6 104363 104361 104360 104612 104613 104614 6 104097 104098 104366 104372 104373 104374 6 104365 104098 104367 104374 104375 104376 7 104366 104098 104099 103094 104376 101626 101624 6 104360 104359 104369 104370 104614 104615 6 104368 104359 104370 104371 109794 109793 6 104368 104369 109794 104642 104637 104615 6 104369 104359 104358 103658 109793 103659 6 104097 104365 104373 107212 103540 103541 6 104372 104365 104374 107212 107210 107209 6 104373 104365 104366 104375 107209 107213 6 104374 104366 104376 104377 107213 107214 6 104375 104366 104367 104377 101627 101626 5 104375 104376 101627 107214 107215 6 104091 104094 104379 104380 104381 104387 7 104091 104378 104380 107753 104090 107752 107754 6 104379 104378 104381 104382 107754 107755 6 104380 104378 104382 104383 104384 104387 6 104380 104381 104383 107755 107756 107764 6 104382 104381 104384 104385 104389 107764 6 104383 104381 104385 103140 104386 104387 6 104383 104384 103140 104389 104390 103141 6 103140 104384 104387 104095 104388 103139 6 104386 104384 104381 104378 104094 104095 6 104386 104095 102809 102810 102813 103139 6 104383 104385 104390 107764 107765 107766 6 104389 104385 103141 107766 107767 103142 6 104249 104114 104392 104248 104739 104740 6 104391 104114 104115 104393 104402 104740 6 104392 104115 104394 104402 104403 104404 6 104393 104115 104110 103464 104404 103465 5 104121 104123 104126 104396 109784 7 104395 104126 104397 104399 104528 104529 109784 6 104396 104126 104127 104130 104398 104399 6 104397 104130 104399 104400 104401 104132 6 104397 104398 104400 104525 104528 104396 5 104399 104398 104401 104527 104525 7 104400 104398 104132 104410 104534 104527 104535 6 104392 104393 104403 104740 104741 104742 6 104402 104393 104404 104742 104743 104744 6 104403 104393 104394 103465 104744 104745 6 103837 103838 103864 104406 105026 105027 6 104405 103864 104407 105027 105028 105029 6 104406 103864 103865 104408 105029 105030 6 104407 103865 103866 104409 105030 105031 6 104408 103866 103868 104420 105031 105032 6 104401 104132 104133 104411 104535 104536 6 104410 104133 104412 104545 104539 104536 6 104411 104133 104134 104413 104414 104545 6 104412 104134 104414 104415 107164 107165 6 104412 104413 104415 104545 104544 104648 6 104414 104413 104649 104648 107165 107166 6 104242 104243 104417 104506 104507 104508 6 104416 104243 104418 104508 104509 104510 6 104417 104243 104244 104245 104419 104510 6 104418 104245 104247 107828 104510 107829 6 104409 103868 103869 104421 105032 105033 6 104420 103869 103870 103871 104422 105033 6 104421 103871 104423 105033 105034 105035 6 104422 103871 103872 104424 105035 105036 6 104423 103872 103873 104425 104643 105036 6 104424 103873 104426 104643 104644 104645 6 104425 103873 103874 104427 104645 104646 6 104426 103874 103875 104428 104646 104647 6 104427 103875 103888 104647 104253 104251 6 104334 104336 104337 104430 104592 104593 6 104429 104337 104338 104431 104593 104594 6 104430 104338 104339 104432 104594 104595 6 104431 104339 104340 104433 104595 104596 6 104432 104340 104341 104434 104596 104597 6 104433 104341 104435 104597 104598 104436 6 104434 104341 104342 104343 104345 104436 6 104435 104345 104437 104598 104434 104599 6 104436 104345 104346 104438 104599 104600 6 104437 104346 104348 104600 104601 104350 6 103993 103994 104440 104721 104722 104723 6 104439 103994 103995 104441 104723 104724 6 104440 103995 103996 104442 104724 104725 6 104441 103996 103997 104443 104725 104726 6 104442 103997 103998 104444 104726 104727 6 104443 103998 103999 104445 104727 104728 6 104444 103999 104000 104446 104728 104658 6 104445 104000 104001 104070 104447 104658 6 104446 104070 104071 104448 104658 104659 6 104447 104071 104449 104659 104660 104450 6 104448 104071 104072 104073 104074 104450 6 104449 104074 104075 104451 104660 104448 6 104450 104075 104452 104669 104738 104660 6 104451 104075 104076 104077 104453 104669 6 104452 104077 104078 104454 104669 104670 6 104453 104078 104079 104455 104670 104671 6 104454 104079 104080 104456 104671 104672 6 104455 104080 104081 104457 104672 104673 6 104456 104081 104082 104458 104673 104674 6 104457 104082 104083 104459 104674 104675 6 104458 104083 104084 104460 104675 104676 6 104459 104084 104085 104461 104676 104677 6 104460 104085 104462 104677 104678 104679 7 104461 104085 104033 104034 104041 104463 104679 5 104462 104041 104464 104679 104680 6 104463 104041 104042 104465 104471 104680 6 104464 104042 104466 104471 104472 104473 6 104465 104042 104043 104467 104473 104474 6 104466 104043 104044 104468 104474 104475 6 104467 104044 104045 104469 104475 104476 6 104468 104045 104047 104048 104470 104476 6 104469 104048 104049 104209 104476 104477 6 104464 104465 104472 104680 104681 104682 6 104471 104465 104473 104682 104683 104684 6 104472 104465 104466 104474 104684 104685 6 104473 104466 104467 104475 104685 104686 6 104474 104467 104468 104476 104686 104687 6 104475 104468 104469 104470 104477 104687 6 104476 104470 104209 104210 104478 104687 6 104477 104210 104212 104479 104687 105213 6 104478 104212 104214 104480 105213 105214 6 104479 104214 104481 105214 105215 105216 6 104480 104214 104215 104482 104490 105216 6 104481 104215 104217 104483 104490 104491 6 104482 104217 104232 104484 104491 104492 6 104483 104232 104485 104492 104493 104494 6 104484 104232 104233 104486 104494 104495 6 104485 104233 104235 104487 104489 104495 6 104486 104235 104488 104227 104489 104229 5 104487 104235 104227 104226 104225 6 104486 104487 104229 104495 104496 104500 6 104481 104482 104491 104981 104989 105216 6 104490 104482 104483 104492 104981 104982 6 104491 104483 104484 104493 104982 104983 6 104492 104484 104494 104983 104984 104985 6 104493 104484 104485 104495 104985 104497 6 104494 104485 104486 104489 104496 104497 6 104495 104489 104497 104498 104499 104500 6 104495 104496 104498 104985 104494 104986 6 104497 104496 104499 104986 104987 104988 5 104498 104496 104500 104988 104511 7 104499 104496 104489 104229 104230 104501 104511 6 104500 104230 104502 104511 104512 104513 6 104501 104230 104062 104513 104067 104063 6 104239 104240 104504 107816 104238 107817 6 104503 104240 104505 107817 107818 107819 6 104504 104240 104241 104506 107819 107820 6 104505 104241 104242 104416 104507 107820 6 104506 104416 104508 107820 107821 107822 6 104507 104416 104417 104509 107822 107823 6 104508 104417 104510 107823 107824 107825 6 104509 104417 104418 107825 107828 104419 7 104500 104501 104512 104988 104499 105002 104999 6 104511 104501 104513 104754 104759 105002 5 104512 104501 104502 104067 104754 6 100426 100411 104515 104516 105611 105612 6 104514 100411 104516 104517 104521 100410 6 104514 104515 104517 104518 105611 105615 6 104516 104515 104518 104519 104520 104521 6 104516 104517 104519 109734 107508 105615 6 104518 104517 104520 105235 109734 109678 6 104519 104517 104521 105235 105236 105237 6 104520 104517 104515 100410 105237 100421 7 103507 103510 103770 104523 106693 106695 106704 6 104522 103770 104524 106694 106693 104532 6 104523 103770 103771 104525 104526 104532 7 104524 103771 104526 104527 104400 104399 104528 6 104524 104525 104527 104532 104533 104534 5 104526 104525 104400 104534 104401 6 104399 104525 103771 103772 104529 104396 6 104528 103772 103773 104530 104396 109784 6 104529 103773 104531 104116 104119 109784 5 104530 103773 104116 103521 103520 6 104524 104526 104533 105156 104523 106694 6 104532 104526 104534 105156 105157 104666 6 104533 104526 104527 104401 104535 104666 6 104534 104401 104410 104536 104537 104666 6 104535 104410 104537 104538 104539 104411 6 104535 104536 104538 104666 104667 104668 6 104537 104536 104539 104540 104546 104668 6 104538 104536 104540 104541 104545 104411 6 104538 104539 104541 104542 104546 104547 6 104540 104539 104542 104543 104544 104545 6 104540 104541 104543 104550 104547 104551 6 104542 104541 104544 104551 104552 104553 6 104543 104541 104545 104414 104648 104553 6 104544 104541 104539 104411 104412 104414 6 104538 104540 104547 104548 109762 104668 6 104546 104540 104548 104549 104550 104542 6 104546 104547 104549 104557 104560 109762 6 104548 104547 104550 104557 104558 104559 6 104549 104547 104542 104551 106763 104559 6 104550 104542 104543 104552 107144 106763 6 104551 104543 104553 104554 107145 107144 6 104552 104543 104554 104555 104544 104648 6 104552 104553 104555 104556 107145 107146 6 104554 104553 104556 104648 104649 107153 6 104554 104555 107146 107148 107149 107153 6 104548 104549 104558 104560 104561 104562 6 104557 104549 104559 104565 104562 106764 6 104558 104549 106763 106762 106764 104550 7 104548 104557 104561 109762 109761 106675 109792 6 104560 104557 104562 104563 106674 106675 6 104561 104557 104563 104564 104565 104558 6 104561 104562 104564 106665 106666 106674 6 104563 104562 104565 106673 106665 106790 6 104564 104562 104558 106764 106765 106790 6 104309 104310 104567 104782 104783 104784 6 104566 104310 104311 104568 104784 104785 6 104567 104311 104312 104569 104785 104786 6 104568 104312 104313 104570 104786 104787 6 104569 104313 104314 104571 104787 104788 6 104570 104314 104315 104572 104788 104789 6 104571 104315 104316 104573 104789 104790 6 104572 104316 104317 104574 104790 104791 6 104573 104317 104318 104575 104791 104792 6 104574 104318 104319 104576 104792 104793 6 104575 104319 104320 104577 104793 104794 6 104576 104320 104321 104322 104578 104794 6 104577 104322 104323 104579 104794 104795 6 104578 104323 104580 104795 104796 104797 6 104579 104323 104324 104325 104581 104797 6 104580 104325 104582 104797 104798 104583 6 104581 104325 104326 104327 104328 104583 6 104582 104328 104329 104584 104798 104581 7 104583 104329 104330 104585 104586 104804 104798 6 104584 104330 104586 104587 104588 104589 5 104584 104585 104587 104804 104805 6 104586 104585 104588 104805 104806 104807 6 104587 104585 104589 104807 104808 104809 6 104588 104585 104330 104331 104590 104809 5 104589 104331 104332 104591 104809 6 104590 104332 104333 104592 104809 104810 6 104591 104333 104334 104429 104593 104810 6 104592 104429 104430 104594 104810 104811 6 104593 104430 104431 104595 104811 104812 6 104594 104431 104432 104596 104812 104813 6 104595 104432 104433 104597 104813 104814 6 104596 104433 104434 104598 104814 104815 6 104597 104434 104436 104599 104815 104816 6 104598 104436 104437 104600 104816 104817 6 104599 104437 104438 104601 104817 104818 6 104600 104438 104350 104602 104821 104818 6 104601 104350 104351 104603 104821 104822 6 104602 104351 104604 104825 104822 104826 7 104603 104351 104352 104353 104355 104605 104826 5 104604 104355 104606 104826 104827 6 104605 104355 104356 104362 104607 104827 5 104606 104362 104608 104609 104827 6 104607 104362 104609 104610 104611 104363 7 104607 104608 104610 104827 104828 104829 104830 6 104609 104608 104611 104830 104831 104832 6 104610 104608 104363 104612 104832 104834 6 104611 104363 104364 104613 104837 104834 6 104612 104364 104614 104616 104617 104837 6 104613 104364 104360 104368 104615 104616 7 104614 104368 104616 104637 104634 104619 104370 6 104614 104615 104613 104617 104618 104619 6 104613 104616 104618 104837 104622 104838 6 104617 104616 104619 104620 104621 104622 6 104618 104616 104620 104633 104634 104615 6 104618 104619 104621 104628 104629 104633 6 104618 104620 104622 104623 104624 104628 6 104618 104621 104623 104840 104838 104617 6 104622 104621 104624 104625 104840 104841 6 104623 104621 104625 104626 104627 104628 6 104623 104624 104626 104841 104860 104853 6 104625 104624 104627 104860 104861 104862 6 104626 104624 104628 104862 104863 104630 6 104627 104624 104621 104620 104629 104630 6 104628 104620 104630 104631 104632 104633 6 104628 104629 104631 104863 104627 104864 6 104630 104629 104632 104638 104868 104864 6 104631 104629 104633 104638 104639 104635 6 104632 104629 104620 104619 104634 104635 6 104633 104619 104635 104636 104637 104615 6 104633 104634 104636 104639 104632 104640 6 104635 104634 104637 104640 104641 104642 5 104636 104634 104615 104642 104370 6 104631 104632 104639 104868 104912 109760 6 104638 104632 104635 104640 104912 104913 6 104639 104635 104636 104641 104916 104913 6 104640 104636 104642 104910 104916 104909 7 104641 104636 104637 104908 104909 109794 104370 6 104424 104425 104644 105036 105037 105044 6 104643 104425 104645 105045 105044 106889 6 104644 104425 104426 104646 106890 106889 6 104645 104426 104427 104647 106890 106891 6 104646 104427 104428 104253 106891 106892 6 104544 104414 104553 104555 104649 104415 6 104555 104648 104415 107166 107154 107153 6 100422 100052 100053 104651 104652 109684 6 104650 100053 104652 104653 104657 100054 6 104650 104651 104653 104654 109683 109684 6 104652 104651 104654 104655 104656 104657 6 104652 104653 104655 109682 109680 109683 6 104654 104653 104656 109682 109685 109686 7 104655 104653 104657 105380 109688 109686 109689 6 104656 104653 104651 100054 105380 100055 6 104446 104447 104659 104728 104445 104736 6 104658 104447 104448 104660 104736 104737 6 104659 104448 104450 104737 104738 104451 6 103895 103896 103897 104662 107841 104758 6 104661 103897 103898 104663 107841 107842 6 104662 103898 104664 107842 104689 104688 6 104663 103898 103899 104665 103685 104688 6 104664 103899 103900 103901 103902 103685 6 104534 104535 104537 104667 105157 104533 6 104666 104537 104668 109750 105157 109761 6 104667 104537 104538 109761 109762 104546 7 104451 104452 104453 104670 104980 104738 105194 6 104669 104453 104454 104671 105194 105195 6 104670 104454 104455 104672 105195 105196 6 104671 104455 104456 104673 105196 105197 6 104672 104456 104457 104674 105197 105198 6 104673 104457 104458 104675 105198 105199 6 104674 104458 104459 104676 105199 105200 6 104675 104459 104460 104677 105200 105201 6 104676 104460 104461 104678 105201 105202 6 104677 104461 104679 105202 105203 105204 6 104678 104461 104462 104463 104680 105204 7 104679 104463 104464 104471 104681 105204 105205 5 104680 104471 104682 105205 105206 7 104681 104471 104472 104683 105206 105207 105208 5 104682 104472 104684 105208 105209 7 104683 104472 104473 104685 105209 105210 105211 6 104684 104473 104474 104686 105211 105212 6 104685 104474 104475 104687 105212 105213 6 104686 104475 104476 104477 104478 105213 6 104664 103685 103686 103687 104689 104663 6 104688 103687 104690 107842 104663 107843 6 104689 103687 103688 104691 107843 107844 6 104690 103688 103689 104692 105158 107844 6 104691 103689 103690 103692 104693 105158 6 104692 103692 104694 105158 105159 105160 6 104693 103692 103693 104695 105160 105161 6 104694 103693 104696 105161 105162 105163 6 104695 103693 103694 103695 104697 105163 6 104696 103695 104698 105163 105164 105165 6 104697 103695 103696 104699 105165 104700 6 104698 103696 103697 103698 103972 104700 6 104699 103972 104701 105165 104698 107854 6 104700 103972 103973 103974 104702 107854 6 104701 103974 104703 107308 107854 107855 6 104702 103974 103975 104704 107308 107309 6 104703 103975 103976 104705 107309 107310 6 104704 103976 103977 104706 107310 107311 6 104705 103977 103978 104707 107311 107312 6 104706 103978 103979 104708 105170 107312 6 104707 103979 103980 104709 105170 105171 6 104708 103980 103981 104710 105171 105172 6 104709 103981 103982 104711 105172 105173 6 104710 103982 103983 104712 105173 105174 6 104711 103983 103984 104713 105174 105175 6 104712 103984 103985 104714 105175 105176 6 104713 103985 103986 104715 105176 105177 6 104714 103986 103987 104716 104965 105177 6 104715 103987 103988 104717 104965 104966 6 104716 103988 103989 104718 104966 104967 6 104717 103989 103990 104719 104967 104968 6 104718 103990 103991 104720 104968 104969 6 104719 103991 103992 104721 104969 104970 6 104720 103992 103993 104439 104722 104970 6 104721 104439 104723 104970 104971 104972 6 104722 104439 104440 104724 104972 104973 6 104723 104440 104441 104725 104973 104974 6 104724 104441 104442 104726 104733 104974 6 104725 104442 104443 104727 104733 104734 6 104726 104443 104444 104728 104734 104735 6 104727 104444 104445 104658 104735 104736 6 104254 104255 104730 104731 104732 104261 6 104254 104729 104731 106892 106893 106894 6 104730 104729 104732 106894 106895 106896 6 104731 104729 104261 106896 106901 104262 6 104725 104726 104734 104974 104975 104976 6 104733 104726 104727 104735 104976 104977 6 104734 104727 104728 104736 104977 104978 6 104735 104728 104658 104659 104737 104978 6 104736 104659 104660 104738 104978 104979 6 104737 104660 104451 104979 104980 104669 6 104248 104391 104740 105003 107830 107831 6 104739 104391 104392 104402 104741 105003 6 104740 104402 104742 104753 105003 105004 6 104741 104402 104403 104743 104753 104748 6 104742 104403 104744 103892 103893 104748 6 104743 104403 104404 104745 104746 103892 6 104744 104404 103465 103466 103468 104746 6 104745 103468 104747 103397 103892 104744 6 104746 103468 102172 102173 103395 103397 6 104743 103893 104749 104750 104753 104742 6 104748 103893 104750 104751 104752 103894 6 104748 104749 104751 105005 104753 107837 6 104750 104749 104752 104757 107837 107838 6 104751 104749 103894 104757 104758 103895 6 104741 104742 104748 105004 105005 104750 7 104513 104067 104068 104755 104512 104759 104760 5 104754 104068 104756 104760 104761 7 104755 104068 104069 103827 104761 104762 104763 6 104751 104752 104758 107838 107839 107840 6 104757 104752 103895 107840 107841 104661 6 104512 104754 104760 105006 105002 105001 5 104759 104754 104755 104761 105006 7 104760 104755 104756 104762 105006 105007 105008 6 104761 104756 104763 105008 105009 105010 6 104762 104756 103827 103828 104764 105010 6 104763 103828 104765 105010 105011 105012 6 104764 103828 103829 103830 104766 105012 6 104765 103830 103831 104767 104768 105012 6 104766 103831 104768 104769 104770 103832 7 104766 104767 104769 105012 105011 105013 105014 6 104768 104767 104770 105014 105015 105016 6 104769 104767 103832 105016 103834 103833 6 104297 104298 104772 104932 104933 104934 6 104771 104298 104299 104773 104934 104935 6 104772 104299 104300 104774 104935 104936 6 104773 104300 104301 104775 104936 104937 6 104774 104301 104302 104776 104937 104938 6 104775 104302 104303 104777 104938 104939 6 104776 104303 104304 104778 104939 104940 6 104777 104304 104305 104779 104940 104941 6 104778 104305 104306 104780 104941 104942 6 104779 104306 104307 104781 104942 104943 6 104780 104307 104308 104782 104943 104944 6 104781 104308 104309 104566 104783 104944 6 104782 104566 104784 104944 104945 104946 6 104783 104566 104567 104785 104946 104947 6 104784 104567 104568 104786 104947 104948 6 104785 104568 104569 104787 104948 104949 6 104786 104569 104570 104788 104949 104950 6 104787 104570 104571 104789 104950 104951 6 104788 104571 104572 104790 104951 104952 6 104789 104572 104573 104791 104952 104953 6 104790 104573 104574 104792 104953 104954 6 104791 104574 104575 104793 104799 104954 6 104792 104575 104576 104794 104799 104800 6 104793 104576 104577 104578 104795 104800 6 104794 104578 104579 104796 104800 104801 6 104795 104579 104797 104801 104802 104803 6 104796 104579 104580 104581 104798 104803 6 104797 104581 104583 104803 104804 104584 6 104792 104793 104800 104954 104955 104956 6 104799 104793 104794 104795 104801 104956 6 104800 104795 104796 104802 104956 104957 6 104801 104796 104803 104957 104958 104959 6 104802 104796 104797 104798 104804 104959 6 104803 104798 104584 104586 104805 104959 6 104804 104586 104587 104806 104918 104959 6 104805 104587 104807 104918 104919 104920 6 104806 104587 104588 104808 104920 104921 6 104807 104588 104809 104921 104922 104810 6 104808 104588 104589 104590 104591 104810 7 104809 104591 104592 104593 104811 104922 104808 5 104810 104593 104594 104812 104922 6 104811 104594 104595 104813 104964 104922 6 104812 104595 104596 104814 105093 104964 6 104813 104596 104597 104815 105093 105094 6 104814 104597 104598 104816 105094 105095 6 104815 104598 104599 104817 105095 105096 6 104816 104599 104600 104818 104819 105096 6 104817 104600 104819 104820 104821 104601 6 104817 104818 104820 105096 105097 105098 6 104819 104818 104821 105098 105099 104823 6 104820 104818 104601 104602 104822 104823 6 104821 104602 104823 104824 104825 104603 6 104821 104822 104824 105099 104820 105100 6 104823 104822 104825 105100 105101 105102 6 104824 104822 104603 104826 105102 105103 6 104825 104603 104604 104605 104827 105103 7 104826 104605 104606 104607 104609 104828 105103 6 104827 104609 104829 105103 105102 105104 6 104828 104609 104830 105104 105105 105106 6 104829 104609 104610 104831 105106 105107 6 104830 104610 104832 104833 105113 105107 5 104831 104610 104611 104833 104834 6 104831 104832 104834 104835 105113 105114 7 104833 104832 104611 104835 104836 104837 104612 6 104833 104834 104836 105114 104845 104844 6 104835 104834 104837 104838 104839 104844 6 104836 104834 104612 104613 104617 104838 6 104836 104837 104839 104840 104622 104617 6 104836 104838 104840 104842 104843 104844 6 104839 104838 104622 104623 104841 104842 6 104840 104623 104842 104625 104852 104853 6 104840 104841 104839 104843 104852 104850 6 104839 104842 104844 104845 104846 104850 5 104839 104843 104845 104835 104836 7 104844 104843 104846 104847 105114 104835 105115 6 104845 104843 104847 104848 104849 104850 6 104845 104846 104848 105117 105115 105118 6 104847 104846 104849 105118 105119 105120 6 104848 104846 104850 104851 105120 105121 6 104849 104846 104851 104852 104842 104843 6 104849 104850 104852 104854 104855 105121 6 104851 104850 104842 104841 104853 104854 6 104852 104841 104854 104857 104860 104625 6 104851 104852 104853 104855 104856 104857 6 104851 104854 104856 105121 105122 105123 6 104855 104854 104857 104858 105123 105124 6 104856 104854 104853 104858 104859 104860 6 104856 104857 104859 105124 105125 105129 6 104858 104857 104860 105129 105130 104861 6 104859 104857 104853 104625 104626 104861 6 104860 104626 104862 105130 104859 105131 6 104861 104626 104627 104863 104865 105131 6 104862 104627 104630 104864 104865 104866 6 104863 104630 104866 104867 104868 104631 6 104862 104863 104866 105131 105132 105136 6 104865 104863 104864 104867 105136 105137 6 104866 104864 104868 104869 104870 105137 6 104867 104864 104631 104638 104869 109760 6 104867 104868 104870 104871 104872 109760 6 104867 104869 104871 105137 105138 105139 6 104870 104869 104872 104873 105150 105139 6 104871 104869 104873 104874 104875 109760 6 104871 104872 104874 105149 105147 105150 6 104873 104872 104875 104876 104877 105149 6 104874 104872 104876 109760 104912 104914 6 104874 104875 104877 104878 104879 104914 6 104874 104876 104878 105155 105149 104882 6 104877 104876 104879 104880 104881 104882 6 104878 104876 104880 104914 104915 109753 7 104878 104879 104881 109753 109754 109756 109757 6 104878 104880 104882 104883 104884 109757 6 104878 104881 104883 105155 104877 105369 6 104882 104881 104884 104885 105369 105370 6 104883 104881 104885 104886 109757 104895 6 104883 104884 104886 104887 104888 105370 6 104885 104884 104887 104894 104891 104895 6 104885 104886 104888 104889 104890 104891 6 104885 104887 104889 105372 105370 105899 6 104888 104887 104890 105898 105896 105899 6 104889 104887 104891 104892 105898 105901 6 104890 104887 104892 104893 104894 104886 6 104890 104891 104893 105901 105902 105903 6 104892 104891 104894 105912 105903 105913 6 104893 104891 104886 104895 104896 105913 7 104894 104886 104896 104897 109757 109756 104884 6 104894 104895 104897 104898 104899 105913 5 104896 104895 104898 109756 109759 6 104896 104897 104899 104900 104901 109759 6 104896 104898 104900 105913 105914 105917 6 104899 104898 104901 104902 105917 105918 6 104900 104898 104902 104903 104904 109759 6 104900 104901 104903 105918 103671 103670 6 104902 104901 104904 104905 103669 103670 6 104903 104901 104905 109754 104911 109759 6 104903 104904 103669 104906 104907 104911 6 103669 104905 104907 104908 103661 103660 6 104906 104905 104908 104909 104910 104911 7 104906 104907 104909 104642 103660 109793 109794 5 104908 104907 104910 104642 104641 6 104909 104907 104911 104917 104916 104641 6 104910 104907 104905 109754 104917 104904 6 104638 104639 104913 104914 109760 104875 6 104912 104639 104914 104915 104916 104640 6 104912 104913 104915 104875 104876 104879 6 104914 104913 104916 104917 109753 104879 6 104915 104913 104917 104910 104641 104640 6 104915 104916 104910 109753 109754 104911 6 104805 104806 104919 104959 104958 104960 6 104918 104806 104920 104960 104961 104962 6 104919 104806 104807 104921 104962 104963 6 104920 104807 104808 104922 104963 104964 6 104921 104808 104810 104964 104812 104811 6 104287 104288 104924 105052 105053 105054 6 104923 104288 104289 104290 104925 105054 6 104924 104290 104926 105054 105055 105056 6 104925 104290 104291 104927 105056 105057 6 104926 104291 104292 104928 105057 105058 6 104927 104292 104293 104929 105058 105059 6 104928 104293 104294 104930 105059 105060 6 104929 104294 104295 104931 105060 105061 6 104930 104295 104296 104297 104932 105061 6 104931 104297 104771 104933 105061 105062 6 104932 104771 104934 105062 105063 105064 6 104933 104771 104772 104935 105064 105065 6 104934 104772 104773 104936 105065 105066 6 104935 104773 104774 104937 105066 105067 6 104936 104774 104775 104938 105067 105068 6 104937 104775 104776 104939 105068 105069 6 104938 104776 104777 104940 105069 105070 6 104939 104777 104778 104941 105070 105071 6 104940 104778 104779 104942 105071 105072 6 104941 104779 104780 104943 105072 105073 6 104942 104780 104781 104944 105073 105074 6 104943 104781 104782 104783 104945 105074 6 104944 104783 104946 105074 105075 105076 6 104945 104783 104784 104947 105076 105077 6 104946 104784 104785 104948 105077 105078 6 104947 104785 104786 104949 105078 105079 6 104948 104786 104787 104950 105079 105080 6 104949 104787 104788 104951 105080 105081 6 104950 104788 104789 104952 105081 105082 6 104951 104789 104790 104953 105082 105083 6 104952 104790 104791 104954 105083 105084 6 104953 104791 104792 104799 104955 105084 6 104954 104799 104956 105084 105085 105086 6 104955 104799 104800 104801 104957 105086 6 104956 104801 104802 104958 105088 105086 6 104957 104802 104959 104918 104960 105088 6 104958 104802 104803 104804 104805 104918 6 104958 104918 104919 104961 105088 105089 6 104960 104919 104962 105089 105090 105091 6 104961 104919 104920 104963 105091 105092 6 104962 104920 104921 104964 105092 105093 6 104963 104921 104922 104812 105093 104813 6 104715 104716 104966 105177 105178 105179 6 104965 104716 104717 104967 105179 105180 6 104966 104717 104718 104968 105180 105181 6 104967 104718 104719 104969 105181 105182 6 104968 104719 104720 104970 105182 105183 6 104969 104720 104721 104722 104971 105183 6 104970 104722 104972 105183 105184 105185 6 104971 104722 104723 104973 105185 105186 6 104972 104723 104724 104974 105186 105187 6 104973 104724 104725 104733 104975 105187 6 104974 104733 104976 105187 105188 105189 6 104975 104733 104734 104977 105189 105190 6 104976 104734 104735 104978 105190 105191 6 104977 104735 104736 104737 104979 105191 6 104978 104737 104738 104980 105191 105192 6 104979 104738 104669 105192 105193 105194 6 104490 104491 104982 104989 104990 104991 6 104981 104491 104492 104983 104991 104992 6 104982 104492 104493 104984 104992 104993 6 104983 104493 104985 104993 104994 104995 6 104984 104493 104494 104497 104986 104995 6 104985 104497 104498 104987 104995 104996 6 104986 104498 104988 104996 104997 104998 6 104987 104498 104499 104511 104998 104999 6 104490 104981 104990 105216 105217 105218 6 104989 104981 104991 105218 105219 105220 6 104990 104981 104982 104992 105220 105221 6 104991 104982 104983 104993 105221 105222 6 104992 104983 104984 104994 105222 105223 6 104993 104984 104995 105223 105224 105225 6 104994 104984 104985 104986 104996 105225 6 104995 104986 104987 104997 105225 105226 6 104996 104987 104998 105226 105227 105228 6 104997 104987 104988 104999 105000 105228 6 104998 104988 105000 105001 105002 104511 6 104998 104999 105001 105228 105229 105230 7 105000 104999 105002 104759 105006 105166 105230 5 105001 104999 104511 104512 104759 6 104739 104740 104741 105004 107831 107834 6 105003 104741 104753 105005 107834 107835 6 105004 104753 104750 107835 107836 107837 7 104759 104760 104761 105007 105021 105001 105166 6 105006 104761 105008 105021 105022 105023 6 105007 104761 104762 105009 105023 105018 6 105008 104762 105010 105011 105017 105018 5 105009 104762 104763 104764 105011 7 105010 104764 105012 104768 105013 105009 105017 5 105011 104764 104765 104766 104768 6 105011 104768 105014 105020 105017 105241 6 105013 104768 104769 105015 105241 105242 6 105014 104769 105016 105242 105243 105024 5 105015 104769 104770 103834 105024 6 105009 105011 105018 105019 105020 105013 7 105009 105017 105019 105023 105008 105238 106833 6 105018 105017 105020 105238 105239 105240 5 105019 105017 105013 105240 105241 5 105006 105007 105022 105166 105167 6 105021 105007 105023 105167 105168 105169 6 105022 105007 105008 105018 105169 106833 7 105016 103834 103835 105025 105243 105015 105244 6 105024 103835 103836 105026 105244 105245 6 105025 103836 103837 104405 105027 105245 6 105026 104405 104406 105028 105245 105246 6 105027 104406 105029 105249 105246 106844 6 105028 104406 104407 105030 106844 106845 6 105029 104407 104408 105031 106845 106846 6 105030 104408 104409 105032 106849 106846 6 105031 104409 104420 105033 106849 106850 6 105032 104420 104421 104422 105034 106850 6 105033 104422 105035 106850 106851 106852 6 105034 104422 104423 105036 106852 105038 6 105035 104423 104424 104643 105037 105038 6 105036 104643 105038 105039 105040 105044 6 105036 105037 105039 106852 105035 106853 6 105038 105037 105040 105041 106856 106853 6 105039 105037 105041 105042 105043 105044 6 105039 105040 105042 106858 106856 106863 6 105041 105040 105043 106878 106879 106863 6 105042 105040 105044 105045 106880 106878 6 105043 105040 105045 104644 104643 105037 6 105043 105044 104644 106880 106881 106889 6 104280 104281 105047 105474 105475 105476 6 105046 104281 104282 105048 105476 105477 6 105047 104282 104283 105049 105477 105478 6 105048 104283 104284 105050 105478 105479 6 105049 104284 104285 105051 105479 105480 6 105050 104285 104286 105052 105480 105481 6 105051 104286 104287 104923 105053 105481 6 105052 104923 105054 105481 105482 105483 6 105053 104923 104924 104925 105055 105483 6 105054 104925 105056 105483 105484 105485 6 105055 104925 104926 105057 105485 105486 6 105056 104926 104927 105058 105486 105487 6 105057 104927 104928 105059 105487 105488 6 105058 104928 104929 105060 105488 105489 6 105059 104929 104930 105061 105489 105490 6 105060 104930 104931 104932 105062 105490 6 105061 104932 104933 105063 105490 105491 6 105062 104933 105064 105250 105491 105492 6 105063 104933 104934 105065 105250 105251 6 105064 104934 104935 105066 105251 105252 6 105065 104935 104936 105067 105252 105253 6 105066 104936 104937 105068 105253 105254 6 105067 104937 104938 105069 105254 105255 6 105068 104938 104939 105070 105255 105256 6 105069 104939 104940 105071 105256 105257 6 105070 104940 104941 105072 105257 105258 6 105071 104941 104942 105073 105258 105259 6 105072 104942 104943 105074 105259 105260 6 105073 104943 104944 104945 105075 105260 6 105074 104945 105076 105260 105261 105262 6 105075 104945 104946 105077 105262 105263 6 105076 104946 104947 105078 105263 105264 6 105077 104947 104948 105079 105264 105265 6 105078 104948 104949 105080 105265 105266 6 105079 104949 104950 105081 105266 105267 6 105080 104950 104951 105082 105267 105268 6 105081 104951 104952 105083 105268 105269 6 105082 104952 104953 105084 105269 105270 6 105083 104953 104954 104955 105085 105270 6 105084 104955 105086 105087 105270 105271 6 105085 104955 104956 105087 105088 104957 6 105085 105086 105088 105271 105272 105089 6 105087 105086 104957 104958 104960 105089 6 105088 104960 104961 105090 105272 105087 6 105089 104961 105091 105272 105273 105274 6 105090 104961 104962 105092 105274 105275 6 105091 104962 104963 105093 105275 105276 7 105092 104963 104964 104813 104814 105094 105276 6 105093 104814 104815 105095 105276 105277 6 105094 104815 104816 105096 105277 105278 6 105095 104816 104817 104819 105097 105278 6 105096 104819 105098 105278 105279 105280 6 105097 104819 104820 105099 105280 105281 6 105098 104820 104823 105100 105281 105282 6 105099 104823 104824 105101 105282 105152 6 105100 104824 105102 105104 105151 105152 6 105101 104824 104825 105103 104828 105104 5 105102 104825 104826 104827 104828 6 105102 104828 104829 105105 105101 105151 7 105104 104829 105106 105154 105151 105287 105288 6 105105 104829 104830 105107 105108 105288 6 105106 104830 105108 105109 105113 104831 6 105106 105107 105109 105110 105288 105289 6 105108 105107 105110 105111 105112 105113 6 105108 105109 105111 105289 105290 105294 6 105110 105109 105112 105294 105295 105116 6 105111 105109 105113 105114 105115 105116 6 105112 105109 105107 104831 104833 105114 6 105113 104833 104835 104845 105115 105112 6 105114 104845 105112 105116 105117 104847 6 105112 105115 105117 105295 105111 105296 6 105116 105115 104847 105118 105299 105296 6 105117 104847 104848 105119 105299 105300 6 105118 104848 105120 105300 105301 105302 5 105119 104848 104849 105121 105302 6 105120 104849 104851 104855 105122 105302 6 105121 104855 105123 105318 105302 105319 6 105122 104855 104856 105124 105321 105319 6 105123 104856 104858 105125 105126 105321 6 105124 104858 105126 105127 105128 105129 6 105124 105125 105127 105322 105321 105323 6 105126 105125 105128 105323 105324 105328 6 105127 105125 105129 105336 105328 105337 6 105128 105125 104858 104859 105130 105337 6 105129 104859 104861 105131 105337 105338 7 105130 104861 104862 104865 105132 105133 105338 6 105131 104865 105133 105134 105135 105136 5 105131 105132 105134 105338 105339 6 105133 105132 105135 105339 105340 105341 6 105134 105132 105136 105346 105344 105341 6 105135 105132 104865 104866 105137 105346 6 105136 104866 104867 104870 105138 105346 6 105137 104870 105139 105140 105344 105346 6 105138 104870 105140 105141 104871 105150 6 105138 105139 105141 105142 105345 105344 6 105140 105139 105142 105143 105144 105150 6 105140 105141 105143 105345 105360 105359 7 105142 105141 105144 105145 105360 105357 105361 6 105143 105141 105145 105146 105147 105150 6 105143 105144 105146 105361 105362 105366 5 105145 105144 105147 105148 105366 6 105146 105144 105148 105149 104873 105150 7 105146 105147 105149 105155 105366 105367 105368 6 105148 105147 104873 105155 104877 104874 6 104873 105147 104871 105139 105141 105144 6 105101 105104 105152 105153 105154 105105 6 105101 105151 105153 105282 105100 105283 6 105152 105151 105154 105283 105284 105285 6 105153 105151 105105 105285 105286 105287 6 105148 105149 104877 104882 105368 105369 7 104532 104533 105157 106682 106683 106684 106694 6 105156 104533 104666 106682 109750 104667 5 104691 104692 104693 105159 107844 7 105158 104693 105160 107844 107845 107846 107847 6 105159 104693 104694 105161 107847 107848 6 105160 104694 104695 105162 107848 107849 6 105161 104695 105163 107849 107850 107851 6 105162 104695 104696 104697 105164 107851 6 105163 104697 105165 107851 107852 107853 6 105164 104697 104698 104700 107853 107854 5 105001 105006 105021 105167 105230 8 105166 105021 105022 105168 105229 105230 106826 106824 6 105167 105022 105169 106826 106827 106830 7 105168 105022 105023 106830 106831 106832 106833 6 104707 104708 105171 107312 107313 107314 6 105170 104708 104709 105172 107314 107315 6 105171 104709 104710 105173 107315 107316 6 105172 104710 104711 105174 107316 107317 6 105173 104711 104712 105175 107317 107318 6 105174 104712 104713 105176 107318 107319 6 105175 104713 104714 105177 107319 107320 6 105176 104714 104715 104965 105178 107320 6 105177 104965 105179 107320 107321 107322 6 105178 104965 104966 105180 107322 107323 6 105179 104966 104967 105181 105411 107323 6 105180 104967 104968 105182 105411 105412 6 105181 104968 104969 105183 105412 105413 6 105182 104969 104970 104971 105184 105413 6 105183 104971 105185 105413 105414 105415 6 105184 104971 104972 105186 105403 105415 6 105185 104972 104973 105187 105403 105404 6 105186 104973 104974 104975 105188 105404 6 105187 104975 105189 105404 105405 105406 6 105188 104975 104976 105190 105406 105407 6 105189 104976 104977 105191 105407 105408 6 105190 104977 104978 104979 105192 105408 6 105191 104979 104980 105193 105408 105409 6 105192 104980 105194 105409 105410 105195 5 105193 104980 104669 104670 105195 6 105194 104670 104671 105196 105410 105193 7 105195 104671 104672 105197 105423 105410 105431 5 105196 104672 104673 105198 105431 7 105197 104673 104674 105199 105431 105432 105433 6 105198 104674 104675 105200 105433 105434 6 105199 104675 104676 105201 105434 105435 6 105200 104676 104677 105202 105435 105436 6 105201 104677 104678 105203 105436 105437 6 105202 104678 105204 105437 105438 105439 6 105203 104678 104679 104680 105205 105439 5 105204 104680 104681 105206 105439 7 105205 104681 104682 105207 105439 105440 105441 6 105206 104682 105208 105441 105442 105443 6 105207 104682 104683 105209 105424 105443 7 105208 104683 104684 105210 105424 105425 105426 5 105209 104684 105211 105426 105427 7 105210 104684 104685 105212 105427 105215 105214 5 105211 104685 104686 105213 105214 6 105212 104686 104687 104478 104479 105214 6 105213 104479 104480 105215 105211 105212 6 105214 104480 105216 105427 105211 105217 6 105215 104480 104481 104490 104989 105217 7 105216 104989 105218 105447 105427 105215 106810 6 105217 104989 104990 105219 106810 106811 6 105218 104990 105220 106811 106812 106813 6 105219 104990 104991 105221 106813 106814 5 105220 104991 104992 105222 106814 7 105221 104992 104993 105223 106814 106815 106816 5 105222 104993 104994 105224 106816 7 105223 104994 105225 106816 106817 106818 106819 6 105224 104994 104995 104996 105226 106819 6 105225 104996 104997 105227 106819 106820 6 105226 104997 105228 106820 106821 106822 6 105227 104997 104998 105000 105229 106822 7 105228 105000 105230 105167 106822 106823 106824 5 105229 105000 105167 105166 105001 6 104264 104265 105232 106902 106903 105458 6 105231 104265 104266 105233 105448 105458 6 105232 104266 104267 105234 105448 105449 6 105233 104267 104269 105449 105450 105451 6 104519 104520 105236 109677 109678 109679 6 105235 104520 105237 109679 109683 109684 6 105236 104520 104521 100422 109684 100421 6 105018 105019 105239 106832 106833 106834 6 105238 105019 105240 105648 106834 106835 6 105239 105019 105020 105241 105648 105649 7 105240 105020 105013 105014 105242 105649 105650 5 105241 105014 105015 105243 105650 7 105242 105015 105024 105244 105652 105650 105653 6 105243 105024 105025 105245 105653 105247 6 105244 105025 105026 105027 105246 105247 6 105245 105027 105247 105248 105249 105028 6 105245 105246 105248 105653 105244 106840 6 105247 105246 105249 106841 106840 106842 6 105248 105246 105028 106842 106843 106844 6 105063 105064 105251 105492 105493 105494 6 105250 105064 105065 105252 105494 105495 6 105251 105065 105066 105253 105495 105496 6 105252 105066 105067 105254 105496 105497 6 105253 105067 105068 105255 105497 105498 6 105254 105068 105069 105256 105498 105499 6 105255 105069 105070 105257 105499 105500 6 105256 105070 105071 105258 105500 105501 6 105257 105071 105072 105259 105501 105502 6 105258 105072 105073 105260 105502 105503 6 105259 105073 105074 105075 105261 105503 6 105260 105075 105262 105503 105504 105505 6 105261 105075 105076 105263 105505 105506 6 105262 105076 105077 105264 105506 105507 6 105263 105077 105078 105265 105507 105508 6 105264 105078 105079 105266 105508 105509 6 105265 105079 105080 105267 105509 105510 6 105266 105080 105081 105268 105510 105511 6 105267 105081 105082 105269 105511 105512 6 105268 105082 105083 105270 105512 105513 6 105269 105083 105084 105085 105271 105513 6 105270 105085 105087 105272 105513 105514 6 105271 105087 105089 105090 105273 105514 6 105272 105090 105274 105514 105515 105516 6 105273 105090 105091 105275 105519 105516 6 105274 105091 105092 105276 105519 105277 5 105275 105092 105093 105094 105277 6 105276 105094 105095 105278 105519 105275 6 105277 105095 105096 105097 105279 105519 6 105278 105097 105280 105519 105518 105520 6 105279 105097 105098 105281 105520 105377 6 105280 105098 105099 105282 105376 105377 6 105281 105099 105100 105152 105283 105376 6 105282 105152 105153 105284 105379 105376 6 105283 105153 105285 105524 105379 105525 6 105284 105153 105154 105286 105525 105526 6 105285 105154 105287 105526 105527 105291 6 105286 105154 105105 105288 105291 105289 5 105287 105105 105106 105108 105289 6 105288 105108 105110 105290 105291 105287 6 105289 105110 105291 105292 105293 105294 7 105289 105290 105292 105527 105286 105287 105528 6 105291 105290 105293 105528 105529 105533 5 105292 105290 105294 105533 105534 6 105293 105290 105110 105111 105295 105534 6 105294 105111 105116 105296 105297 105534 6 105295 105116 105297 105298 105299 105117 6 105295 105296 105298 105534 105535 105542 6 105297 105296 105299 105542 105543 105544 6 105298 105296 105117 105118 105300 105544 6 105299 105118 105119 105301 105304 105544 6 105300 105119 105302 105303 105304 105305 7 105301 105119 105303 105318 105122 105120 105121 6 105301 105302 105308 105305 105309 105318 6 105300 105301 105305 105306 105543 105544 6 105304 105301 105306 105307 105308 105303 6 105304 105305 105307 105543 105545 105546 6 105306 105305 105308 105311 105312 105546 6 105307 105305 105303 105309 105310 105311 6 105308 105303 105310 105316 105317 105318 6 105308 105309 105311 105314 105315 105316 6 105308 105310 105307 105312 105313 105314 6 105307 105311 105313 105546 105547 105548 6 105312 105311 105314 105548 105549 105550 6 105313 105311 105310 105315 105553 105550 6 105314 105310 105316 105555 105553 105558 6 105315 105310 105309 105317 105558 105559 6 105316 105309 105318 105319 105320 105559 6 105317 105309 105303 105302 105122 105319 6 105318 105122 105317 105320 105321 105123 6 105317 105319 105321 105322 105559 105560 6 105320 105319 105322 105126 105124 105123 6 105320 105321 105126 105323 105560 105561 6 105322 105126 105127 105324 105325 105561 6 105323 105127 105325 105326 105327 105328 6 105323 105324 105326 105561 105562 105563 6 105325 105324 105327 105572 105563 105573 6 105326 105324 105328 105329 105330 105573 6 105327 105324 105329 105336 105128 105127 6 105327 105328 105330 105331 105332 105336 6 105327 105329 105331 105573 105574 105575 6 105330 105329 105332 105333 105575 105576 6 105331 105329 105333 105334 105335 105336 6 105331 105332 105334 105576 105577 105578 6 105333 105332 105335 105578 105340 105339 6 105334 105332 105336 105337 105338 105339 6 105335 105332 105329 105328 105128 105337 6 105336 105128 105129 105130 105335 105338 6 105335 105337 105130 105131 105133 105339 6 105338 105133 105134 105340 105334 105335 6 105339 105134 105341 105342 105578 105334 6 105340 105134 105342 105343 105344 105135 6 105340 105341 105343 105348 105349 105578 6 105342 105341 105344 105345 105347 105348 7 105343 105341 105345 105140 105138 105346 105135 6 105343 105344 105140 105142 105347 105359 5 105138 105344 105135 105136 105137 6 105343 105345 105348 105351 105352 105359 6 105343 105347 105342 105349 105350 105351 6 105342 105348 105350 105578 105577 105579 6 105349 105348 105351 105579 105580 105584 6 105350 105348 105347 105352 105353 105584 6 105351 105347 105353 105354 105355 105359 6 105351 105352 105354 105608 105584 105609 6 105353 105352 105355 105356 105807 105609 6 105354 105352 105356 105357 105359 105360 6 105354 105355 105357 105358 105807 105808 6 105356 105355 105358 105360 105143 105361 7 105356 105357 105808 105809 105810 105363 105361 6 105355 105352 105347 105360 105142 105345 5 105355 105359 105142 105143 105357 6 105357 105143 105145 105362 105363 105358 6 105361 105145 105363 105364 105365 105366 5 105361 105362 105364 105810 105358 6 105363 105362 105365 105810 105811 105402 7 105364 105362 105366 105402 105401 105367 105375 6 105365 105362 105145 105146 105148 105367 6 105366 105148 105368 105374 105365 105375 6 105367 105148 105155 105369 105371 105374 6 105368 105155 104882 104883 105370 105371 6 105369 104883 105371 105372 104888 104885 6 105369 105370 105372 105373 105374 105368 6 105371 105370 105373 104888 105393 105899 6 105371 105372 105374 105375 105392 105393 5 105371 105373 105375 105368 105367 6 105374 105373 105392 105365 105367 105401 6 105281 105282 105377 105378 105379 105283 6 105281 105376 105378 105520 105280 105521 6 105377 105376 105379 105521 105522 105523 6 105378 105376 105283 105523 105524 105284 6 104656 104657 100055 109689 100430 100056 6 101679 101680 101678 105382 105383 101682 6 101678 105381 105383 105384 107779 103415 6 105382 105381 105384 105385 103774 101682 6 105382 105383 105385 105386 107779 107780 6 105384 105383 105386 105387 105391 103774 6 105384 105385 105387 105388 107780 107781 6 105386 105385 105388 105389 105390 105391 6 105386 105387 105389 105616 107781 107782 6 105388 105387 105390 105616 105617 105618 6 105389 105387 105391 105618 105619 105620 6 105390 105387 105385 103774 105620 103775 6 105375 105373 105393 105394 105401 105398 6 105392 105373 105394 105372 105395 105899 6 105392 105393 105395 105396 105397 105398 5 105394 105393 105396 105899 105894 6 105394 105395 105397 105893 105890 105894 6 105394 105396 105398 105399 105889 105890 6 105394 105397 105399 105400 105401 105392 6 105398 105397 105400 105880 105888 105889 7 105398 105399 105401 105402 105887 105881 105880 6 105398 105400 105402 105365 105375 105392 6 105401 105400 105887 105811 105364 105365 6 105185 105186 105404 105415 105416 105417 6 105403 105186 105187 105188 105405 105417 6 105404 105188 105406 105417 105418 105419 6 105405 105188 105189 105407 105419 105420 6 105406 105189 105190 105408 105420 105421 6 105407 105190 105191 105192 105409 105421 6 105408 105192 105193 105410 105421 105422 6 105409 105193 105195 105422 105423 105196 6 105180 105181 105412 107323 107324 107325 6 105411 105181 105182 105413 107325 107326 6 105412 105182 105183 105184 105414 107326 6 105413 105184 105415 107326 107327 107328 6 105414 105184 105185 105403 105416 107328 6 105415 105403 105417 107328 107329 107330 6 105416 105403 105404 105405 105418 107330 6 105417 105405 105419 106791 107330 107331 6 105418 105405 105406 105420 106791 106792 6 105419 105406 105407 105421 105428 106792 6 105420 105407 105408 105409 105422 105428 6 105421 105409 105410 105423 105428 105429 6 105422 105410 105196 105429 105430 105431 6 105208 105209 105425 105443 105444 105445 6 105424 105209 105426 105445 105446 105447 5 105425 105209 105210 105427 105447 6 105426 105210 105211 105215 105447 105217 6 105420 105421 105422 105429 106792 106793 6 105428 105422 105423 105430 106793 106794 6 105429 105423 105431 106794 106795 105432 6 105430 105423 105196 105197 105198 105432 5 105431 105198 105433 106795 105430 6 105432 105198 105199 105434 106795 106796 6 105433 105199 105200 105435 106796 106797 6 105434 105200 105201 105436 106797 106798 6 105435 105201 105202 105437 106798 106799 6 105436 105202 105203 105438 106799 106800 6 105437 105203 105439 106800 106801 106802 7 105438 105203 105204 105205 105206 105440 106802 5 105439 105206 105441 106802 106803 6 105440 105206 105207 105442 106803 106804 6 105441 105207 105443 106804 106805 105444 5 105442 105207 105208 105424 105444 6 105443 105424 105445 106805 105442 106806 6 105444 105424 105425 105446 106806 106807 6 105445 105425 105447 106807 106808 106809 7 105446 105425 105426 105427 105217 106809 106810 6 105232 105233 105449 105458 105459 105460 6 105448 105233 105234 105450 105460 105461 6 105449 105234 105451 105461 105462 105463 6 105450 105234 104269 104270 105452 105463 6 105451 104270 104271 105453 105463 105464 6 105452 104271 104272 105454 105455 105464 6 105453 104272 105455 105456 105457 104273 6 105453 105454 105456 105464 105465 105466 6 105455 105454 105457 105466 105467 105468 6 105456 105454 104273 105468 105469 104274 6 105232 105448 105459 106903 105231 106904 6 105458 105448 105460 106904 106905 106906 6 105459 105448 105449 105461 106906 106907 6 105460 105449 105450 105462 106907 106908 6 105461 105450 105463 106908 106909 106910 6 105462 105450 105451 105452 105464 106910 6 105463 105452 105453 105455 105465 106910 6 105464 105455 105466 106910 106911 106912 6 105465 105455 105456 105467 106912 106913 6 105466 105456 105468 106913 106914 106915 6 105467 105456 105457 105469 106915 106916 6 105468 105457 104274 104275 105470 106916 6 105469 104275 104276 104277 105471 106916 6 105470 104277 105472 106916 106917 106918 6 105471 104277 104278 105473 106918 106919 6 105472 104278 104279 105474 106919 106920 6 105473 104279 104280 105046 105475 106920 6 105474 105046 105476 106920 106921 106922 6 105475 105046 105047 105477 106922 106923 6 105476 105047 105048 105478 106923 106924 6 105477 105048 105049 105479 106924 106925 6 105478 105049 105050 105480 106925 106926 6 105479 105050 105051 105481 105654 106926 6 105480 105051 105052 105053 105482 105654 6 105481 105053 105483 105654 105655 105656 6 105482 105053 105054 105055 105484 105656 6 105483 105055 105485 105656 105657 105658 6 105484 105055 105056 105486 105658 105659 6 105485 105056 105057 105487 105659 105660 6 105486 105057 105058 105488 105660 105661 6 105487 105058 105059 105489 105621 105661 6 105488 105059 105060 105490 105621 105622 6 105489 105060 105061 105062 105491 105622 6 105490 105062 105063 105492 105622 105623 6 105491 105063 105250 105493 105623 105624 6 105492 105250 105494 105624 105625 105626 6 105493 105250 105251 105495 105626 105627 6 105494 105251 105252 105496 105627 105628 6 105495 105252 105253 105497 105628 105629 6 105496 105253 105254 105498 105629 105630 6 105497 105254 105255 105499 105630 105631 6 105498 105255 105256 105500 105631 105632 6 105499 105256 105257 105501 105632 105633 6 105500 105257 105258 105502 105633 105634 6 105501 105258 105259 105503 105634 105635 6 105502 105259 105260 105261 105504 105635 6 105503 105261 105505 105635 105636 105637 6 105504 105261 105262 105506 105637 105638 6 105505 105262 105263 105507 105638 105639 6 105506 105263 105264 105508 105639 105640 6 105507 105264 105265 105509 105640 105641 6 105508 105265 105266 105510 105641 105642 6 105509 105266 105267 105511 105642 105643 6 105510 105267 105268 105512 105643 105644 6 105511 105268 105269 105513 105644 105645 6 105512 105269 105270 105271 105514 105645 6 105513 105271 105272 105273 105515 105645 6 105514 105273 105516 105517 105645 105646 6 105515 105273 105517 105518 105519 105274 6 105515 105516 105518 105646 105647 105520 5 105517 105516 105519 105279 105520 7 105518 105516 105274 105275 105277 105278 105279 7 105518 105279 105280 105377 105521 105647 105517 5 105520 105377 105378 105522 105647 7 105521 105378 105523 105685 105647 105684 105686 6 105522 105378 105379 105524 105687 105686 6 105523 105379 105284 105525 105687 105688 6 105524 105284 105285 105526 105688 105689 6 105525 105285 105286 105527 105689 105690 6 105526 105286 105291 105528 105690 105691 6 105527 105291 105292 105529 105530 105691 6 105528 105292 105530 105531 105532 105533 5 105528 105529 105531 105691 105692 6 105530 105529 105532 105692 105693 105694 7 105531 105529 105533 105694 105695 105538 105536 6 105532 105529 105292 105293 105534 105536 7 105533 105293 105294 105295 105297 105535 105536 6 105534 105297 105536 105537 105541 105542 6 105534 105535 105537 105538 105532 105533 6 105536 105535 105538 105539 105540 105541 6 105536 105537 105539 105695 105532 105696 6 105538 105537 105540 105696 105697 105698 7 105539 105537 105541 105698 105699 105700 109795 5 105540 105537 105535 105542 109795 6 105541 105535 105297 105298 105543 109795 7 105542 105298 105544 105304 105306 105545 109795 5 105543 105298 105304 105300 105299 6 105543 105306 105546 105701 105700 109795 6 105545 105306 105307 105312 105547 105701 6 105546 105312 105548 105701 105702 105703 6 105547 105312 105313 105549 105703 105704 6 105548 105313 105550 105551 105704 105705 6 105549 105313 105551 105552 105553 105314 6 105549 105550 105552 105705 105706 105707 6 105551 105550 105553 105554 105707 105708 6 105552 105550 105314 105554 105555 105315 6 105552 105553 105555 105556 105708 105709 6 105554 105553 105315 105556 105557 105558 6 105554 105555 105557 105709 105710 105711 6 105556 105555 105558 105714 105711 105715 6 105557 105555 105315 105316 105559 105715 6 105558 105316 105317 105320 105560 105715 6 105559 105320 105322 105561 105716 105715 6 105560 105322 105323 105325 105562 105716 6 105561 105325 105563 105564 105717 105716 6 105562 105325 105564 105565 105572 105326 6 105562 105563 105565 105566 105717 105713 6 105564 105563 105566 105567 105571 105572 6 105564 105565 105567 105568 105753 105713 6 105566 105565 105568 105569 105570 105571 6 105566 105567 105569 105752 105753 105754 6 105568 105567 105570 105754 105755 105770 6 105569 105567 105571 105769 105767 105770 6 105570 105567 105565 105572 105769 105771 6 105571 105565 105563 105326 105573 105771 6 105572 105326 105327 105330 105574 105771 6 105573 105330 105575 105771 105772 105773 6 105574 105330 105331 105576 105773 105594 7 105575 105331 105333 105577 105594 105589 105774 6 105576 105333 105578 105349 105579 105774 6 105577 105333 105334 105340 105342 105349 6 105577 105349 105350 105580 105581 105774 6 105579 105350 105581 105582 105583 105584 6 105579 105580 105582 105585 105586 105774 6 105581 105580 105583 105585 105605 105606 6 105582 105580 105584 105606 105607 105608 6 105583 105580 105350 105351 105608 105353 6 105581 105582 105586 105587 105605 105597 6 105581 105585 105587 105588 105589 105774 6 105586 105585 105588 105595 105596 105597 6 105586 105587 105589 105590 105591 105595 6 105586 105588 105590 105594 105576 105774 6 105589 105588 105591 105592 105594 105773 6 105590 105588 105592 105593 105595 105778 6 105590 105591 105593 105773 105772 105775 6 105592 105591 105775 105776 105777 105778 5 105589 105590 105773 105575 105576 6 105591 105588 105587 105596 105778 105779 6 105595 105587 105597 105598 105599 105779 6 105596 105587 105598 105602 105605 105585 6 105596 105597 105599 105600 105601 105602 6 105596 105598 105600 105779 105780 105781 6 105599 105598 105601 105781 105789 105790 6 105600 105598 105602 105603 105790 105791 6 105601 105598 105603 105604 105597 105605 6 105601 105602 105604 105794 105791 105795 6 105603 105602 105795 105796 105606 105605 6 105602 105597 105585 105582 105606 105604 6 105605 105582 105583 105607 105796 105604 6 105606 105583 105608 105610 105798 105796 6 105607 105583 105584 105353 105609 105610 7 105608 105353 105610 105800 105806 105807 105354 5 105608 105609 105607 105800 105798 6 104514 104516 105612 105613 105614 105615 6 104514 105611 105613 100427 100426 107500 6 105612 105611 105614 107500 107501 107505 6 105613 105611 105615 107505 107506 107507 6 105614 105611 104516 107507 107508 104518 6 105388 105389 105617 107782 107783 107784 6 105616 105389 105618 107784 107785 107786 6 105617 105389 105390 105619 107786 107789 6 105618 105390 105620 107789 107790 107791 6 105619 105390 105391 103775 103778 107791 6 105488 105489 105622 105661 105662 105663 6 105621 105489 105490 105491 105623 105663 6 105622 105491 105492 105624 105663 105664 6 105623 105492 105493 105625 105664 105665 6 105624 105493 105626 105665 105666 105667 6 105625 105493 105494 105627 105667 105668 6 105626 105494 105495 105628 105668 105669 6 105627 105495 105496 105629 105669 105670 6 105628 105496 105497 105630 105670 105671 6 105629 105497 105498 105631 105671 105672 6 105630 105498 105499 105632 105672 105673 6 105631 105499 105500 105633 105673 105674 6 105632 105500 105501 105634 105674 105675 6 105633 105501 105502 105635 105675 105676 6 105634 105502 105503 105504 105636 105676 6 105635 105504 105637 105676 105677 105678 6 105636 105504 105505 105638 105678 105679 6 105637 105505 105506 105639 105679 105680 6 105638 105506 105507 105640 105680 105681 6 105639 105507 105508 105641 105681 105682 6 105640 105508 105509 105642 105682 105683 6 105641 105509 105510 105643 105683 105684 6 105642 105510 105511 105644 105684 105685 6 105643 105511 105512 105645 105685 105646 6 105644 105512 105513 105514 105515 105646 6 105645 105515 105517 105647 105685 105644 6 105646 105517 105520 105685 105522 105521 6 105239 105240 105649 106835 106836 106837 6 105648 105240 105241 105650 105651 106837 6 105649 105241 105651 105652 105243 105242 6 105649 105650 105652 106837 106838 106839 6 105651 105650 105243 105653 106839 106840 5 105652 105243 105244 105247 106840 6 105480 105481 105482 105655 106926 106927 6 105654 105482 105656 106927 106928 106929 6 105655 105482 105483 105484 105657 106929 6 105656 105484 105658 106929 106930 106931 6 105657 105484 105485 105659 105831 106931 6 105658 105485 105486 105660 105831 105832 6 105659 105486 105487 105661 105832 105833 6 105660 105487 105488 105621 105662 105833 6 105661 105621 105663 105833 105834 105835 6 105662 105621 105622 105623 105664 105835 6 105663 105623 105624 105665 105835 105813 6 105664 105624 105625 105666 105812 105813 6 105665 105625 105667 105812 105816 105817 6 105666 105625 105626 105668 105859 105817 6 105667 105626 105627 105669 105859 105860 6 105668 105627 105628 105670 105860 105861 6 105669 105628 105629 105671 105861 105862 6 105670 105629 105630 105672 105862 105863 6 105671 105630 105631 105673 105863 105864 6 105672 105631 105632 105674 105864 105865 6 105673 105632 105633 105675 105865 105866 6 105674 105633 105634 105676 105866 105867 6 105675 105634 105635 105636 105677 105867 6 105676 105636 105678 105867 105868 105693 6 105677 105636 105637 105679 105693 105869 6 105678 105637 105638 105680 105869 105870 6 105679 105638 105639 105681 105870 105871 6 105680 105639 105640 105682 105871 105688 6 105681 105640 105641 105683 105688 105687 6 105682 105641 105642 105684 105686 105687 6 105683 105642 105643 105685 105522 105686 6 105684 105643 105644 105646 105647 105522 5 105684 105522 105683 105687 105523 6 105683 105686 105523 105524 105688 105682 7 105687 105524 105525 105689 105871 105681 105682 5 105688 105525 105526 105690 105871 7 105689 105526 105527 105691 105871 105870 105692 5 105690 105527 105528 105530 105692 7 105691 105530 105531 105693 105870 105690 105869 7 105692 105531 105694 105868 105677 105678 105869 6 105693 105531 105532 105695 109698 105868 6 105694 105532 105538 105696 109699 109698 6 105695 105538 105539 105697 105718 109699 6 105696 105539 105698 105718 105719 105720 6 105697 105539 105540 105699 105720 105721 6 105698 105540 105700 105701 105721 105722 5 105699 105540 105701 105545 109795 7 105699 105700 105545 105546 105547 105702 105722 6 105701 105547 105703 105722 105723 105727 6 105702 105547 105548 105704 105727 105728 6 105703 105548 105549 105705 105728 105729 6 105704 105549 105551 105706 105732 105729 6 105705 105551 105707 105732 105733 105734 6 105706 105551 105552 105708 105737 105734 6 105707 105552 105554 105709 105737 105738 6 105708 105554 105556 105710 105747 105738 6 105709 105556 105711 105712 105747 105748 6 105710 105556 105712 105713 105714 105557 6 105710 105711 105713 105748 105749 105753 7 105712 105711 105714 105717 105564 105753 105566 6 105713 105711 105557 105715 105716 105717 6 105714 105557 105716 105560 105559 105558 6 105714 105715 105717 105562 105561 105560 5 105714 105716 105562 105564 105713 7 105696 105697 105719 109696 105865 109697 109699 6 105718 105697 105720 109696 109695 109700 6 105719 105697 105698 105721 109700 109701 7 105720 105698 105699 105722 105723 105724 109701 5 105721 105699 105701 105702 105723 7 105722 105702 105721 105724 105725 105726 105727 6 105721 105723 105725 106095 109701 109702 6 105724 105723 105726 106095 106096 106097 6 105725 105723 105727 106097 105730 105728 5 105726 105723 105702 105703 105728 6 105727 105703 105704 105729 105730 105726 6 105728 105704 105730 105731 105732 105705 7 105728 105729 105731 106097 105726 106098 106099 6 105730 105729 105732 106099 106100 106101 6 105731 105729 105705 105706 105733 106101 6 105732 105706 105734 105735 106101 106102 6 105733 105706 105735 105736 105737 105707 6 105733 105734 105736 106105 106102 106106 6 105735 105734 105737 106106 106107 105739 6 105736 105734 105707 105708 105738 105739 6 105737 105708 105739 105740 105747 105709 6 105737 105738 105740 105741 106107 105736 6 105739 105738 105741 105742 105746 105747 6 105739 105740 105742 105743 106107 106108 6 105741 105740 105743 105744 105745 105746 6 105741 105742 105744 106111 106108 106112 6 105743 105742 105745 106112 106113 106114 6 105744 105742 105746 105750 106121 106114 6 105745 105742 105740 105747 105748 105750 6 105746 105740 105738 105709 105710 105748 6 105747 105710 105712 105749 105746 105750 6 105748 105712 105750 105751 105752 105753 6 105746 105748 105745 105749 105751 106121 5 105750 105749 105752 106121 105949 6 105751 105749 105753 105568 105754 105949 6 105752 105749 105712 105713 105568 105566 6 105752 105568 105569 105755 105756 105949 6 105754 105569 105756 105757 105758 105770 6 105754 105755 105757 105949 105950 105951 6 105756 105755 105758 105759 105951 105952 6 105757 105755 105759 105760 105761 105770 6 105757 105758 105760 105952 105953 105957 6 105759 105758 105761 105762 105763 105957 6 105760 105758 105762 105766 105767 105770 6 105760 105761 105763 105764 105765 105766 6 105760 105762 105764 105957 105958 105988 6 105763 105762 105765 105989 105988 105990 6 105764 105762 105766 105990 105991 105776 6 105765 105762 105761 105767 105768 105776 6 105766 105761 105768 105769 105570 105770 6 105766 105767 105769 105772 105775 105776 6 105768 105767 105570 105571 105771 105772 6 105570 105767 105569 105761 105755 105758 6 105769 105571 105572 105573 105574 105772 7 105771 105574 105773 105592 105775 105769 105768 6 105772 105574 105575 105594 105590 105592 6 105589 105576 105586 105581 105579 105577 5 105772 105592 105593 105776 105768 7 105775 105593 105777 105991 105765 105768 105766 6 105776 105593 105778 105992 105991 105782 6 105777 105593 105591 105595 105779 105782 6 105778 105595 105596 105599 105780 105782 6 105779 105599 105781 105782 105783 105784 6 105780 105599 105600 105784 105785 105789 6 105779 105780 105783 105992 105777 105778 6 105782 105780 105784 105993 105992 105996 7 105783 105780 105781 105785 105786 105996 105997 6 105784 105781 105786 105787 105788 105789 6 105784 105785 105787 105997 105998 105999 6 105786 105785 105788 106002 105999 106003 6 105787 105785 105789 106009 106003 106199 6 105788 105785 105781 105600 105790 106199 6 105789 105600 105601 105791 105792 106199 6 105790 105601 105792 105793 105794 105603 6 105790 105791 105793 106198 106199 106197 6 105792 105791 105794 106197 106200 106221 6 105793 105791 105603 105795 106221 106219 6 105794 105603 105604 105796 105797 106219 6 105795 105604 105797 105798 105607 105606 6 105795 105796 105798 105799 106218 106219 6 105797 105796 105607 105799 105800 105610 6 105797 105798 105800 105801 105802 106218 7 105799 105798 105610 105609 105801 105805 105806 6 105799 105800 105802 105803 105804 105805 6 105799 105801 105803 106217 106209 106218 6 105802 105801 105804 105823 105824 106217 6 105803 105801 105805 105823 105830 105839 6 105804 105801 105800 105806 105808 105839 5 105805 105800 105609 105807 105808 5 105806 105609 105354 105356 105808 7 105807 105356 105358 105809 105839 105805 105806 6 105808 105358 105810 105838 105839 105886 7 105809 105358 105363 105364 105811 105885 105886 6 105810 105364 105884 105885 105887 105402 6 105665 105666 105813 105814 105815 105816 6 105665 105812 105814 105835 105664 105842 6 105813 105812 105815 105842 105843 105844 6 105814 105812 105816 105819 105820 105844 6 105815 105812 105666 105817 105818 105819 6 105816 105666 105818 105859 105857 105667 6 105816 105817 105819 105822 105857 105854 6 105816 105818 105815 105820 105821 105822 6 105815 105819 105821 105844 105845 105846 6 105820 105819 105822 105852 105849 105846 6 105821 105819 105818 105852 105853 105854 6 105803 105804 105824 105825 105826 105830 5 105803 105823 105825 106216 106217 7 105824 105823 105826 105827 106216 106215 106021 6 105825 105823 105827 105828 105829 105830 6 105825 105826 105828 106019 106020 106021 6 105827 105826 105829 105836 105872 106019 6 105828 105826 105830 105836 105837 105838 6 105829 105826 105823 105804 105838 105839 6 105658 105659 105832 106931 106932 106933 6 105831 105659 105660 105833 105840 106933 6 105832 105660 105661 105662 105834 105840 6 105833 105662 105835 105840 105841 105842 6 105834 105662 105663 105664 105813 105842 6 105828 105829 105837 105872 105873 105883 6 105836 105829 105838 105885 105883 105886 6 105837 105829 105830 105839 105809 105886 6 105838 105830 105809 105808 105805 105804 6 105832 105833 105834 105841 106933 106934 6 105840 105834 105842 106934 106935 105843 6 105841 105834 105835 105813 105814 105843 6 105842 105814 105844 106018 106935 105841 6 105843 105814 105815 105820 105845 106018 6 105844 105820 105846 105847 106018 106940 6 105845 105820 105847 105848 105849 105821 6 105845 105846 105848 106940 106941 106942 6 105847 105846 105849 105850 106945 106942 6 105848 105846 105850 105851 105852 105821 5 105848 105849 105851 106945 106385 6 105850 105849 105852 106103 106104 106385 6 105851 105849 105821 105822 105853 106103 6 105852 105822 105854 105855 106100 106103 6 105853 105822 105855 105856 105857 105818 6 105853 105854 105856 106098 106099 106100 6 105855 105854 105857 105858 106384 106098 6 105856 105854 105858 105859 105817 105818 6 105856 105857 105859 105860 106383 106384 6 105858 105857 105817 105667 105668 105860 6 105859 105668 105669 105861 106383 105858 6 105860 105669 105670 105862 109703 106383 6 105861 105670 105671 105863 109694 109703 6 105862 105671 105672 105864 109694 109695 6 105863 105672 105673 105865 109695 109696 7 105864 105673 105674 105866 109696 105718 109697 5 105865 105674 105675 105867 109697 7 105866 105675 105676 105677 105868 109697 109698 5 105867 105677 105693 105694 109698 5 105693 105678 105679 105870 105692 6 105869 105679 105680 105871 105690 105692 6 105870 105680 105681 105688 105689 105690 6 105828 105836 105873 105874 109736 106019 6 105872 105836 105874 105875 105882 105883 6 105872 105873 105875 105876 109736 106041 6 105874 105873 105876 105877 105878 105882 6 105874 105875 105877 106048 106041 106042 6 105876 105875 105878 105879 106049 106048 6 105877 105875 105879 105880 105881 105882 6 105877 105878 105880 106049 106050 105888 6 105879 105878 105881 105400 105399 105888 6 105880 105878 105882 105884 105887 105400 6 105881 105878 105875 105873 105883 105884 6 105882 105873 105836 105884 105885 105837 6 105882 105883 105885 105811 105881 105887 6 105884 105883 105837 105811 105810 105886 5 105810 105885 105837 105838 105809 5 105881 105884 105811 105402 105400 6 105880 105399 105889 106053 106050 105879 6 105888 105399 105397 105890 105891 106053 6 105889 105397 105891 105892 105893 105396 6 105889 105890 105892 106056 106053 106057 6 105891 105890 105893 106057 106058 106059 6 105892 105890 105396 105894 105895 106059 6 105893 105396 105895 105896 105899 105395 6 105893 105894 105896 105897 106059 106061 6 105895 105894 105897 105898 104889 105899 6 105895 105896 105898 105900 106061 106062 6 105897 105896 104889 104890 105900 105901 7 104889 105896 105894 105395 105393 105372 104888 6 105897 105898 105901 106065 106062 106066 6 105900 105898 104890 104892 105902 106066 6 105901 104892 105903 105904 105905 106066 6 105902 104892 105904 105911 105912 104893 6 105902 105903 105905 105906 105907 105911 6 105902 105904 105906 106066 106070 106067 7 105905 105904 105907 105908 106075 106072 106070 6 105906 105904 105908 105909 105910 105911 5 105906 105907 105909 105934 106075 7 105908 105907 105910 105932 105929 105933 105934 6 105909 105907 105911 105932 109752 105915 6 105910 105907 105904 105903 105912 105915 6 105911 105903 104893 105913 105914 105915 6 105912 104893 104894 104896 104899 105914 6 105913 104899 105912 105915 105916 105917 6 105912 105914 105916 105911 109752 105910 6 105915 105914 105917 109752 109755 109758 6 105916 105914 104899 104900 105918 109758 7 105917 104900 104902 103671 103951 105919 109758 6 105918 103951 103949 105920 109755 109758 5 105919 103949 103948 105921 109755 6 105920 103948 105922 105930 105931 109755 6 105921 103948 103946 103962 105923 105930 6 105922 103962 103963 105924 105925 105930 6 105923 103963 103965 105925 105926 105942 6 105923 105924 105926 105927 105929 105930 6 105925 105924 105927 105928 105941 105942 5 105925 105926 105928 105929 105933 7 105927 105926 105935 105933 105936 105940 105941 7 105925 105927 105930 105931 105932 105909 105933 6 105925 105929 105931 105923 105922 105921 6 105930 105929 105921 105932 109752 109755 5 105931 105929 105909 105910 109752 6 105909 105929 105934 105935 105928 105927 6 105909 105933 105935 106074 106075 105908 6 105934 105933 105928 105936 105937 106074 6 105935 105928 105937 105938 105939 105940 5 105935 105936 105938 106074 106076 6 105937 105936 105939 106076 106077 106086 6 105938 105936 105940 106087 106086 106091 7 105939 105936 105928 105941 105944 106091 105946 5 105940 105928 105926 105942 105944 6 105941 105926 105924 103965 105943 105944 7 105942 103965 103966 105944 105945 103135 105947 6 105942 105943 105941 105940 105945 105946 5 105944 105943 105946 103134 103135 6 105944 105945 103134 106091 105940 103136 6 103135 105943 102093 102092 105948 103966 6 102092 105947 103966 103967 102488 102489 6 105754 105756 105950 105752 105751 106121 6 105949 105756 105951 106166 106120 106121 6 105950 105756 105757 105952 106166 106164 6 105951 105757 105759 105953 105954 106164 6 105952 105759 105954 105955 105956 105957 6 105952 105953 105955 106162 106161 106164 6 105954 105953 105956 105960 105967 106162 6 105955 105953 105957 105958 105959 105960 6 105956 105953 105759 105760 105763 105958 6 105957 105763 105956 105959 105963 105988 6 105956 105958 105960 105961 105962 105963 6 105956 105959 105961 105964 105967 105955 6 105960 105959 105962 105964 105965 105982 6 105961 105959 105963 105983 105982 105984 6 105962 105959 105958 105987 105984 105988 6 105960 105961 105965 105966 105967 105968 6 105964 105961 105966 105982 105980 105971 6 105964 105965 105968 105969 105970 105971 6 105960 105964 105955 105968 106163 106162 7 105967 105964 105966 105969 106156 106157 106163 6 105968 105966 105970 106447 106445 106156 6 105969 105966 105971 105972 106447 106448 6 105970 105966 105972 105973 105965 105980 6 105970 105971 105973 105974 105975 106448 6 105972 105971 105974 105978 105979 105980 6 105972 105973 105975 105976 105977 105978 6 105972 105974 105976 106448 106449 106450 6 105975 105974 105977 106450 106608 106609 6 105976 105974 105978 106609 106612 106613 6 105977 105974 105973 105979 106613 106614 6 105978 105973 105980 105981 106640 106614 6 105979 105973 105981 105982 105965 105971 6 105979 105980 105982 105983 106640 106641 6 105981 105980 105983 105962 105961 105965 6 105981 105982 105962 105984 105985 106641 6 105983 105962 105985 105986 105987 105963 6 105983 105984 105986 106643 106641 106168 6 105985 105984 105987 105994 106167 106168 6 105986 105984 105963 105988 105989 105994 6 105987 105963 105958 105989 105764 105763 6 105987 105988 105764 105990 105993 105994 6 105989 105764 105765 105991 105992 105993 5 105990 105765 105992 105777 105776 6 105990 105991 105777 105993 105783 105782 7 105990 105992 105783 105989 105994 105995 105996 6 105989 105993 105995 105986 105987 106167 6 105994 105993 105996 105997 105998 106167 5 105995 105993 105783 105784 105997 5 105995 105996 105998 105784 105786 7 105995 105997 105786 105999 106000 106169 106167 6 105998 105786 106000 106001 106002 105787 5 105998 105999 106001 106169 106170 6 106000 105999 106002 106170 106171 106005 6 106001 105999 105787 106003 106004 106005 6 106002 105787 106004 106008 106009 105788 6 106002 106003 106005 106006 106007 106008 6 106002 106004 106006 106171 106001 106172 6 106005 106004 106007 106010 106172 106173 6 106006 106004 106008 106010 106011 106015 6 106007 106004 106003 106009 106017 106015 6 106008 106003 105788 106198 106017 106199 6 106006 106007 106011 106012 106179 106173 6 106010 106007 106012 106013 106014 106015 6 106010 106011 106013 106180 106179 106186 6 106012 106011 106014 106190 106187 106186 6 106013 106011 106015 106016 106190 106191 6 106014 106011 106016 106017 106008 106007 6 106014 106015 106017 106191 106194 106195 6 106016 106015 106008 106198 106195 106009 6 105843 105844 105845 106937 106935 106940 6 105827 105828 106020 109736 106038 105872 6 105827 106019 106021 106022 106023 106038 6 105827 106020 106022 106215 105825 106222 6 106021 106020 106023 106024 106025 106222 6 106022 106020 106024 106037 106028 106038 6 106022 106023 106025 106026 106027 106028 6 106022 106024 106026 106222 106225 106223 6 106025 106024 106027 106225 106226 106032 6 106026 106024 106028 106029 106031 106032 6 106027 106024 106029 106030 106037 106023 6 106027 106028 106030 106031 106033 106034 6 106029 106028 106034 106035 106036 106037 6 106027 106029 106032 106033 106247 106239 6 106027 106031 106226 106026 106227 106239 6 106031 106029 106034 106247 106246 106248 6 106033 106029 106030 106035 106248 106249 6 106034 106030 106036 106249 106263 106264 6 106035 106030 106037 106039 106040 106264 6 106036 106030 106028 106023 106038 106039 6 106037 106023 106039 109736 106019 106020 6 106037 106038 106036 106040 106041 109736 7 106036 106039 106041 106042 106043 106265 106264 6 106040 106039 106042 109736 105874 105876 6 106040 106041 106043 106044 106048 105876 5 106040 106042 106044 106045 106265 6 106043 106042 106045 106046 106047 106048 7 106043 106044 106046 106262 106265 106261 106266 6 106045 106044 106047 106269 106266 106280 6 106046 106044 106048 106049 106051 106280 6 106047 106044 106042 106049 105877 105876 6 106047 106048 105877 105879 106050 106051 6 106049 105879 106051 106052 106053 105888 6 106049 106050 106052 106054 106280 106047 6 106051 106050 106053 106054 106055 106056 6 106052 106050 105888 105889 106056 105891 7 106051 106052 106055 106279 106280 106278 106281 6 106054 106052 106056 106283 106281 106284 6 106055 106052 106053 105891 106057 106284 6 106056 105891 105892 106058 106060 106284 6 106057 105892 106059 106060 106287 106288 6 106058 105892 105893 105895 106061 106288 6 106057 106058 106284 106285 106286 106287 6 106059 105895 105897 106062 106063 106288 6 106061 105897 106063 106064 106065 105900 7 106061 106062 106064 106288 106291 106289 106292 5 106063 106062 106065 106292 106068 6 106064 106062 105900 106066 106067 106068 6 106065 105900 105901 105902 105905 106067 6 106065 106066 106068 106069 106070 105905 7 106065 106067 106069 106292 106064 106293 106294 5 106068 106067 106070 106071 106294 6 106069 106067 105905 106071 106072 105906 7 106069 106070 106072 106073 106296 106294 106297 6 106071 106070 106073 106074 106075 105906 6 106071 106072 106074 106297 106078 106076 7 106073 106072 106075 105934 105935 105937 106076 5 106074 106072 105934 105908 105906 6 106074 105937 105938 106077 106078 106073 6 106076 105938 106078 106079 106086 106083 6 106076 106077 106079 106080 106297 106073 6 106078 106077 106080 106081 106082 106083 6 106078 106079 106081 106297 106298 106301 6 106080 106079 106082 106301 106302 106314 6 106081 106079 106083 106084 106313 106314 6 106082 106079 106084 106085 106086 106077 7 106082 106083 106085 106088 106313 106315 106318 6 106084 106083 106086 106087 106088 106089 6 106085 106083 106087 105939 105938 106077 6 106085 106086 105939 106089 106090 106091 6 106084 106085 106089 106094 103769 106318 7 106088 106085 106087 106090 103137 106092 106094 5 106089 106087 106091 103136 103137 6 106090 106087 105939 105940 105946 103136 6 106089 103137 103138 106093 103768 106094 7 106092 103138 103768 103766 102085 102084 109776 5 106092 103768 103769 106088 106089 6 105724 105725 106096 106383 109702 109703 6 106095 105725 106097 106098 106383 106384 5 106096 105725 105726 105730 106098 7 106096 106097 105730 106099 106384 105856 105855 5 106098 105730 105731 106100 105855 7 106099 105731 106101 106102 106103 105855 105853 5 106100 105731 105732 105733 106102 7 106101 105733 106100 106103 106104 106105 105735 6 106100 106102 106104 105853 105852 105851 6 106103 106102 106105 105851 106385 106386 5 106104 106102 105735 106106 106386 7 106105 105735 105736 106107 106386 106387 106109 6 106106 105736 105739 105741 106108 106109 6 106107 105741 106109 106110 106111 105743 6 106107 106108 106110 106387 106106 106388 6 106109 106108 106111 106388 106389 106390 6 106110 106108 105743 106112 106393 106390 6 106111 105743 105744 106113 106115 106393 6 106112 105744 106114 106115 106116 106117 6 106113 105744 106120 106117 106121 105745 6 106112 106113 106116 106393 109737 109738 6 106115 106113 106117 106118 106122 109738 6 106116 106113 106118 106119 106120 106114 6 106116 106117 106119 106122 106123 106165 5 106118 106117 106120 106166 106165 6 106119 106117 106114 106121 106166 105950 7 106120 106114 105745 105750 105751 105949 105950 6 106116 106118 106123 106124 106131 109738 6 106122 106118 106124 106125 106165 106160 6 106122 106123 106125 106126 106127 106131 6 106124 106123 106126 106152 106160 106158 6 106124 106125 106127 106128 106151 106152 6 106124 106126 106128 106129 106130 106131 6 106127 106126 106129 106150 106149 106151 6 106127 106128 106130 106150 106137 106134 6 106127 106129 106131 106132 106133 106134 6 106127 106130 106132 109738 106122 106124 6 106131 106130 106133 106398 109737 109738 6 106132 106130 106134 106135 106397 106398 6 106133 106130 106135 106136 106137 106129 6 106133 106134 106136 106397 106399 106400 6 106135 106134 106137 106138 106400 106401 6 106136 106134 106138 106139 106150 106129 6 106136 106137 106139 106140 106401 106402 6 106138 106137 106140 106141 106148 106150 6 106138 106139 106141 106142 106402 106403 6 106140 106139 106142 106143 106144 106148 6 106140 106141 106143 106403 106404 106405 6 106142 106141 106144 106145 106405 106436 6 106143 106141 106145 106146 106147 106148 6 106143 106144 106146 106437 106436 106438 6 106145 106144 106147 106438 106439 106440 6 106146 106144 106148 106149 106440 106441 6 106147 106144 106141 106139 106149 106150 6 106147 106148 106150 106128 106151 106441 6 106149 106148 106139 106137 106129 106128 6 106149 106128 106126 106152 106153 106441 6 106151 106126 106125 106153 106154 106158 6 106151 106152 106154 106155 106441 106442 6 106153 106152 106155 106156 106157 106158 6 106153 106154 106156 106444 106442 106445 6 106155 106154 106157 105969 106445 105968 6 106156 106154 106158 106159 105968 106163 6 106157 106154 106152 106159 106160 106125 6 106157 106158 106160 106161 106162 106163 6 106159 106158 106125 106161 106123 106165 6 106159 106160 106162 105954 106164 106165 6 106159 106161 106163 105967 105955 105954 5 106159 106162 105967 106157 105968 6 105954 106161 106165 106166 105951 105952 7 106164 106161 106166 106119 106118 106123 106160 6 106164 106165 106119 106120 105950 105951 6 105994 105995 105986 106168 106169 105998 6 105986 106167 106169 106643 105985 109783 6 106168 106167 105998 106000 106170 109783 7 106169 106000 106001 106171 106789 109783 109782 7 106170 106001 106005 106172 106788 106786 106789 6 106171 106005 106006 106173 106174 106788 6 106172 106006 106174 106175 106010 106179 6 106172 106173 106175 106176 106784 106788 6 106174 106173 106176 106177 106178 106179 6 106174 106175 106177 106782 106781 106784 6 106176 106175 106178 109796 106782 109797 6 106177 106175 106179 106180 106181 109796 6 106178 106175 106180 106012 106010 106173 6 106178 106179 106181 106182 106186 106012 6 106178 106180 106182 106183 109796 109799 6 106181 106180 106183 106184 106185 106186 6 106181 106182 106184 106362 106645 109799 6 106183 106182 106185 106362 106363 106367 6 106184 106182 106186 106187 106188 106367 6 106185 106182 106180 106187 106012 106013 6 106185 106186 106188 106189 106190 106013 6 106185 106187 106189 106367 106368 106369 6 106188 106187 106190 106369 106372 106192 6 106189 106187 106013 106014 106191 106192 6 106190 106014 106016 106192 106193 106194 6 106190 106191 106193 106372 106189 106373 6 106192 106191 106194 106382 106373 106203 6 106193 106191 106016 106195 106196 106203 6 106194 106016 106196 106197 106198 106017 6 106194 106195 106197 106200 106201 106203 6 106196 106195 106198 105792 105793 106200 6 106197 106195 106017 106009 106199 105792 6 106198 106009 105792 105790 105789 105788 6 106197 105793 106196 106201 106202 106221 6 106196 106200 106202 106203 106204 106205 6 106201 106200 106205 106206 106220 106221 6 106196 106201 106204 106382 106193 106194 6 106203 106201 106205 106382 106459 106381 6 106204 106201 106202 106206 106207 106459 6 106205 106202 106207 106208 106209 106220 6 106205 106206 106208 106210 106211 106459 6 106207 106206 106209 106210 106214 106217 6 106208 106206 105802 106217 106218 106220 6 106207 106208 106211 106212 106213 106214 6 106207 106210 106212 106456 106458 106459 7 106211 106210 106213 106223 106224 106454 106456 5 106212 106210 106214 106215 106223 6 106213 106210 106208 106215 106216 106217 7 106213 106214 106216 105825 106021 106222 106223 5 106215 106214 106217 105824 105825 7 106216 106214 105824 105803 105802 106209 106208 6 105802 106209 105799 105797 106219 106220 6 105797 106218 106220 106221 105794 105795 6 106219 106218 106209 106206 106202 106221 6 106219 106220 106202 106200 105793 105794 5 106215 106021 106022 106025 106223 7 106215 106222 106213 106212 106224 106225 106025 7 106212 106223 106225 106454 106231 106226 106228 5 106224 106223 106025 106026 106226 6 106225 106026 106032 106227 106228 106224 6 106226 106032 106228 106229 106238 106239 6 106226 106227 106229 106230 106231 106224 6 106228 106227 106230 106237 106234 106238 6 106228 106229 106231 106232 106233 106234 6 106228 106230 106232 106454 106224 106455 6 106231 106230 106233 106455 106460 106461 6 106232 106230 106234 106235 106461 106462 6 106233 106230 106235 106236 106237 106229 6 106233 106234 106236 106462 106463 106471 6 106235 106234 106237 106473 106471 106476 6 106236 106234 106229 106238 106476 106241 6 106237 106229 106227 106239 106240 106241 6 106238 106227 106240 106247 106031 106032 6 106238 106239 106241 106242 106243 106247 6 106238 106240 106242 106476 106237 106477 6 106241 106240 106243 106244 106477 106479 6 106242 106240 106244 106245 106246 106247 6 106242 106243 106245 106481 106479 106482 6 106244 106243 106246 106482 106253 106251 6 106245 106243 106247 106033 106248 106251 6 106246 106243 106240 106239 106031 106033 6 106246 106033 106034 106249 106250 106251 6 106248 106034 106035 106250 106263 106255 6 106248 106249 106251 106252 106254 106255 6 106248 106250 106252 106253 106245 106246 6 106251 106250 106253 106254 106484 106485 6 106251 106252 106482 106245 106483 106484 6 106252 106250 106255 106256 106257 106485 6 106254 106250 106256 106263 106260 106249 6 106254 106255 106257 106258 106259 106260 6 106254 106256 106258 106485 106493 106494 6 106257 106256 106259 106494 106495 106496 7 106258 106256 106260 106261 106496 106273 106267 6 106259 106256 106261 106262 106263 106255 6 106259 106260 106262 106045 106266 106267 6 106261 106260 106263 106264 106265 106045 6 106262 106260 106264 106255 106249 106035 6 106262 106263 106265 106035 106040 106036 5 106262 106264 106045 106043 106040 6 106045 106261 106267 106268 106269 106046 6 106261 106266 106268 106272 106273 106259 6 106267 106266 106269 106270 106271 106272 6 106268 106266 106046 106270 106279 106280 6 106268 106269 106271 106277 106278 106279 6 106268 106270 106272 106275 106276 106277 6 106268 106271 106267 106273 106274 106275 6 106267 106272 106274 106496 106259 106497 6 106273 106272 106275 106500 106497 106501 6 106274 106272 106271 106276 106501 106502 6 106275 106271 106277 106502 106503 106504 6 106276 106271 106270 106278 106504 106505 7 106277 106270 106279 106054 106281 106282 106505 5 106278 106270 106269 106280 106054 6 106279 106269 106046 106054 106051 106047 5 106278 106054 106282 106283 106055 6 106278 106281 106283 106506 106505 106507 6 106282 106281 106055 106284 106507 106285 6 106283 106055 106056 106057 106060 106285 6 106284 106060 106286 106507 106283 106508 7 106285 106060 106287 106508 106328 106511 106290 6 106286 106060 106058 106288 106289 106290 6 106287 106058 106059 106061 106063 106289 5 106287 106288 106290 106291 106063 5 106287 106289 106291 106328 106286 7 106290 106289 106063 106292 106326 106327 106328 6 106291 106063 106064 106068 106293 106326 6 106292 106068 106294 106295 106325 106326 6 106293 106068 106069 106295 106296 106071 6 106293 106294 106296 106299 106324 106325 6 106295 106294 106071 106297 106298 106299 6 106296 106071 106073 106078 106080 106298 6 106297 106080 106296 106299 106300 106301 5 106296 106298 106300 106324 106295 6 106299 106298 106301 106303 106323 106324 6 106300 106298 106080 106081 106302 106303 6 106301 106081 106303 106304 106308 106314 6 106301 106302 106304 106305 106323 106300 6 106303 106302 106305 106306 106307 106308 6 106303 106304 106306 106323 106337 106338 6 106305 106304 106307 106338 106341 106342 6 106306 106304 106308 106309 106342 106343 6 106307 106304 106302 106309 106310 106314 6 106307 106308 106310 106311 106343 106346 6 106309 106308 106311 106312 106313 106314 6 106309 106310 106312 106321 106322 106346 6 106311 106310 106313 106315 106316 106321 6 106312 106310 106314 106082 106084 106315 6 106313 106310 106082 106081 106302 106308 6 106313 106084 106312 106316 106317 106318 6 106312 106315 106317 106319 106320 106321 6 106316 106315 106318 103769 101571 106319 5 106317 106315 103769 106084 106088 5 106317 101571 101572 106320 106316 7 106319 101572 101573 106316 106321 106322 106360 5 106316 106320 106322 106312 106311 7 106321 106320 106311 106347 106346 106348 106360 6 106303 106305 106300 106324 106335 106337 7 106300 106323 106299 106295 106325 106336 106335 6 106295 106324 106293 106326 106336 106331 6 106293 106325 106292 106291 106327 106331 6 106291 106326 106328 106329 106330 106331 6 106291 106327 106329 106511 106286 106290 6 106328 106327 106330 106510 106511 106519 7 106329 106327 106331 106332 106333 106519 106518 6 106330 106327 106332 106336 106325 106326 6 106330 106331 106333 106334 106335 106336 5 106330 106332 106334 106518 106520 6 106333 106332 106335 106520 106528 106529 7 106334 106332 106336 106324 106323 106337 106529 5 106335 106332 106331 106325 106324 6 106335 106323 106305 106338 106339 106529 6 106337 106305 106306 106339 106340 106341 6 106337 106338 106340 106530 106527 106529 5 106339 106338 106341 106545 106530 6 106340 106338 106306 106342 106546 106545 6 106341 106306 106307 106343 106344 106546 6 106342 106307 106344 106345 106346 106309 6 106342 106343 106345 106546 106543 106547 6 106344 106343 106346 106347 106549 106547 6 106345 106343 106347 106322 106311 106309 6 106345 106346 106322 106348 106349 106549 6 106347 106322 106349 106350 106359 106360 6 106347 106348 106350 106351 106550 106549 6 106349 106348 106351 106352 106353 106359 6 106349 106350 106352 106552 106550 106553 6 106351 106350 106353 106354 106355 106553 6 106352 106350 106354 101589 102476 106359 7 106352 106353 106355 106356 101594 101590 101589 6 106352 106354 106356 106357 106553 106554 5 106355 106354 106357 106358 101594 6 106355 106356 106358 106554 106555 103971 6 106357 106356 101594 103971 103970 101595 6 102476 106353 106350 106348 106360 106361 6 106359 106348 106361 101573 106320 106322 5 106359 106360 101573 102475 102476 6 106183 106184 106363 106364 106644 106645 6 106362 106184 106364 106365 106366 106367 6 106362 106363 106365 106644 106648 106649 6 106364 106363 106366 109727 109673 106649 6 106365 106363 106367 109727 109728 106368 6 106366 106363 106184 106185 106188 106368 6 106367 106188 106369 106370 109728 106366 6 106368 106188 106189 106370 106371 106372 6 106368 106369 106371 109728 109729 109730 6 106370 106369 106372 106374 106375 109730 6 106371 106369 106189 106192 106373 106374 6 106372 106192 106374 106382 106380 106193 6 106372 106373 106371 106375 106376 106380 6 106371 106374 106376 106377 106467 109730 6 106375 106374 106377 106378 106379 106380 5 106375 106376 106378 109693 106467 7 106377 106376 106379 106457 106455 106460 109693 6 106378 106376 106380 106381 106457 106458 6 106379 106376 106381 106382 106373 106374 6 106379 106380 106382 106459 106458 106204 6 106381 106380 106373 106193 106203 106204 7 106095 106096 106384 109703 105861 105860 105858 5 106383 106096 106098 105856 105858 6 105851 106104 106386 106945 105850 106946 7 106385 106104 106105 106106 106387 106946 106947 5 106386 106106 106109 106388 106947 6 106387 106109 106110 106389 106947 106948 6 106388 106110 106390 106391 106948 106949 6 106389 106110 106391 106392 106393 106111 6 106389 106390 106392 106394 106395 106949 6 106391 106390 106393 106394 109737 106398 6 106392 106390 106111 106112 106115 109737 6 106391 106392 106395 106396 106397 106398 6 106391 106394 106396 106949 106950 106951 6 106395 106394 106397 106951 106952 106399 6 106396 106394 106398 106133 106135 106399 6 106397 106394 106133 106132 109737 106392 6 106397 106135 106400 106952 106396 106953 6 106399 106135 106136 106401 106953 106954 6 106400 106136 106138 106402 106954 106960 6 106401 106138 106140 106403 106960 106410 6 106402 106140 106142 106404 106408 106410 6 106403 106142 106405 106406 106407 106408 6 106404 106142 106143 106406 106436 106434 6 106404 106405 106407 106431 106429 106434 6 106404 106406 106408 106409 106428 106429 6 106404 106407 106409 106403 106410 106411 6 106408 106407 106411 106412 106413 106428 6 106403 106408 106411 106959 106960 106402 6 106410 106408 106409 106412 106959 106961 6 106411 106409 106413 106414 106963 106961 6 106412 106409 106414 106415 106427 106428 6 106412 106413 106415 106416 106963 106964 6 106414 106413 106416 106417 106418 106427 6 106414 106415 106417 106558 106559 106964 6 106416 106415 106418 106419 106558 106565 6 106417 106415 106419 106420 106427 106424 6 106417 106418 106420 106421 106573 106565 6 106419 106418 106421 106422 106423 106424 6 106419 106420 106422 106573 106572 106574 6 106421 106420 106423 106580 106577 106574 6 106422 106420 106424 106425 106580 106581 6 106423 106420 106425 106426 106427 106418 6 106423 106424 106426 106584 106581 106430 6 106425 106424 106427 106428 106429 106430 6 106426 106424 106418 106415 106413 106428 6 106427 106413 106409 106407 106426 106429 6 106426 106428 106407 106430 106431 106406 6 106426 106429 106431 106432 106584 106425 6 106430 106429 106406 106432 106433 106434 6 106430 106431 106433 106584 106585 106586 6 106432 106431 106434 106435 106589 106586 6 106433 106431 106435 106436 106405 106406 6 106433 106434 106436 106437 106589 106590 6 106435 106434 106405 106437 106145 106143 6 106435 106436 106145 106438 106590 106591 6 106437 106145 106146 106439 106591 106592 6 106438 106146 106440 106595 106592 106443 6 106439 106146 106147 106441 106442 106443 6 106440 106147 106149 106151 106153 106442 6 106441 106153 106440 106443 106444 106155 6 106440 106442 106444 106595 106439 106453 6 106443 106442 106155 106445 106446 106453 6 106444 106155 106446 106447 105969 106156 6 106444 106445 106447 106449 106452 106453 6 106446 106445 105969 105970 106448 106449 5 106447 105970 105972 105975 106449 7 106448 105975 106447 106450 106451 106452 106446 7 106449 105975 105976 106451 106607 106598 106608 6 106449 106450 106452 106596 106597 106598 5 106449 106451 106446 106453 106596 6 106446 106452 106595 106443 106444 106596 5 106212 106224 106231 106455 106456 7 106454 106231 106456 106457 106378 106232 106460 6 106454 106455 106457 106458 106211 106212 5 106456 106455 106378 106379 106458 6 106457 106379 106456 106211 106459 106381 6 106211 106458 106207 106381 106204 106205 5 106455 106232 106461 109693 106378 6 106460 106232 106233 106462 106465 109693 6 106461 106233 106235 106463 106464 106465 6 106462 106235 106464 106469 106470 106471 6 106462 106463 106465 106466 106468 106469 6 106462 106464 106461 106466 106467 109693 6 106465 106464 106467 106468 109731 109732 7 106465 106466 109693 106377 106375 109730 109731 6 106466 106464 106469 107509 107510 109732 7 106468 106464 106463 106470 107507 107509 107506 6 106469 106463 106471 106472 107506 107505 6 106470 106463 106235 106472 106473 106236 6 106470 106471 106473 106474 107504 107505 6 106472 106471 106236 106474 106475 106476 7 106472 106473 106475 107503 107504 109692 109780 6 106474 106473 106476 106477 106478 109692 6 106475 106473 106236 106237 106241 106477 6 106476 106241 106242 106475 106478 106479 7 106475 106477 106479 106480 109692 109778 109779 6 106478 106477 106242 106480 106481 106244 6 106478 106479 106481 106487 109705 109778 6 106480 106479 106244 106482 106486 106487 6 106481 106244 106245 106253 106483 106486 5 106482 106253 106484 106486 106489 7 106483 106253 106252 106485 106489 106490 106491 7 106484 106252 106254 106257 106491 106492 106493 6 106482 106483 106481 106487 106488 106489 5 106481 106486 106488 109705 106480 7 106487 106486 106489 109704 102194 102195 109705 6 106488 106486 106483 106484 106490 109704 6 106489 106484 106491 102251 102252 109704 6 106490 106484 106485 106492 102251 109706 6 106491 106485 106493 109706 103335 109707 5 106492 106485 106257 106494 109707 6 106493 106257 106258 106495 109707 106499 6 106494 106258 106496 106497 106498 106499 5 106495 106258 106259 106273 106497 6 106496 106273 106495 106498 106500 106274 6 106495 106497 106499 102511 102512 106500 7 106495 106498 102511 103334 109707 103881 106494 6 102512 106498 106497 106274 106501 109710 6 106500 106274 106275 106502 109709 109710 6 106501 106275 106276 106503 109708 109709 6 106502 106276 106504 106512 109708 109711 6 106503 106276 106277 106505 106506 106512 5 106504 106277 106506 106282 106278 7 106504 106505 106282 106507 106512 106513 106509 6 106506 106282 106283 106285 106508 106509 6 106507 106285 106286 106509 106510 106511 6 106507 106508 106510 106513 106506 106514 7 106509 106508 106511 106329 106514 106515 106519 5 106510 106508 106329 106328 106286 6 106503 106504 106506 106513 109711 109717 5 106512 106506 106509 106514 109717 7 106513 106509 106510 106515 106516 109717 109718 6 106514 106510 106516 106517 106518 106519 6 106514 106515 106517 109718 109719 106522 6 106516 106515 106518 106520 106521 106522 6 106517 106515 106519 106330 106333 106520 5 106518 106515 106510 106329 106330 7 106518 106333 106334 106517 106521 106525 106528 6 106517 106520 106522 106523 106524 106525 7 106517 106521 106523 102214 109719 106516 102213 5 106522 106521 106524 102213 103348 7 106523 106521 106525 106526 103348 103347 106532 6 106524 106521 106520 106526 106527 106528 6 106524 106525 106527 106530 106531 106532 6 106526 106525 106528 106530 106339 106529 5 106527 106525 106520 106334 106529 6 106528 106334 106335 106339 106527 106337 7 106526 106527 106531 106340 106545 106339 106534 6 106526 106530 106532 103863 106533 106534 5 106526 106531 103863 103347 106524 6 103863 106531 106534 106535 106536 106716 6 106533 106531 106535 106544 106545 106530 6 106533 106534 106536 106537 106544 106541 6 106533 106535 106537 106538 106715 106716 6 106536 106535 106538 106539 106540 106541 7 106536 106537 106539 106714 103887 103886 106715 6 106538 106537 106540 106714 106718 106719 6 106539 106537 106541 106542 106719 106708 6 106540 106537 106542 106543 106544 106535 6 106540 106541 106543 106547 106548 106708 6 106542 106541 106544 106546 106344 106547 6 106543 106541 106535 106534 106545 106546 6 106544 106534 106546 106341 106340 106530 6 106544 106545 106543 106341 106342 106344 6 106543 106344 106542 106548 106549 106345 6 106542 106547 106549 106550 106551 106708 6 106548 106547 106345 106347 106550 106349 6 106548 106549 106551 106552 106351 106349 6 106548 106550 106552 106705 106707 106708 6 106551 106550 106351 106553 106554 106705 5 106552 106351 106352 106355 106554 6 106553 106355 106357 106555 106552 106705 7 106554 106357 103971 106705 106706 109747 103491 6 103969 101597 101598 106557 104038 103968 6 106556 101598 104038 103764 100612 100611 6 106416 106417 106559 106560 106564 106565 6 106416 106558 106560 106561 106964 106965 6 106559 106558 106561 106562 106563 106564 6 106559 106560 106562 106965 106966 106967 6 106561 106560 106563 106985 106983 106967 6 106562 106560 106564 106985 106986 106567 6 106563 106560 106558 106565 106566 106567 6 106564 106558 106417 106566 106573 106419 6 106564 106565 106567 106568 106569 106573 6 106564 106566 106568 106986 106563 106987 6 106567 106566 106569 106570 106990 106987 6 106568 106566 106570 106571 106572 106573 6 106568 106569 106571 106997 106990 106998 6 106570 106569 106572 106575 107001 106998 6 106571 106569 106573 106421 106574 106575 6 106572 106569 106566 106565 106419 106421 6 106572 106421 106575 106576 106577 106422 6 106572 106574 106576 107003 107001 106571 6 106575 106574 106577 106578 107003 107004 6 106576 106574 106578 106579 106580 106422 6 106576 106577 106579 107004 107005 107006 6 106578 106577 106580 107006 107007 106582 6 106579 106577 106422 106423 106581 106582 6 106580 106423 106582 106583 106584 106425 6 106580 106581 106583 107007 106579 107008 6 106582 106581 106584 106720 107008 106585 6 106583 106581 106425 106430 106432 106585 6 106584 106432 106586 106587 106720 106583 6 106585 106432 106587 106588 106589 106433 6 106585 106586 106588 106720 106721 106728 6 106587 106586 106589 106728 106729 106730 6 106588 106586 106433 106435 106590 106730 6 106589 106435 106437 106591 106730 106731 6 106590 106437 106438 106592 106593 106731 6 106591 106438 106593 106594 106595 106439 6 106591 106592 106594 106731 106732 106733 7 106593 106592 106595 106600 106733 106597 106596 6 106594 106592 106439 106443 106453 106596 6 106595 106453 106452 106451 106597 106594 6 106596 106451 106598 106599 106600 106594 6 106597 106451 106599 106606 106607 106450 6 106597 106598 106600 106601 106602 106606 5 106597 106599 106601 106733 106594 6 106600 106599 106602 106603 106734 106733 6 106601 106599 106603 106604 106605 106606 7 106601 106602 106604 106734 106735 106736 106737 5 106603 106602 106605 106737 106738 7 106604 106602 106606 106738 106739 106748 106745 6 106605 106602 106599 106598 106607 106748 6 106606 106598 106450 106608 106747 106748 6 106607 106450 105976 106609 106610 106747 6 106608 105976 105977 106610 106611 106612 6 106608 106609 106611 106747 106746 106749 6 106610 106609 106612 106619 106620 106749 6 106611 106609 105977 106613 106616 106619 6 106612 105977 105978 106614 106615 106616 6 106613 105978 106615 106639 106640 105979 6 106613 106614 106616 106617 106638 106639 6 106613 106615 106617 106618 106619 106612 6 106616 106615 106618 106636 106637 106638 6 106616 106617 106619 106621 106622 106636 6 106616 106618 106612 106611 106620 106621 6 106611 106619 106621 106750 106749 106626 6 106620 106619 106618 106622 106623 106626 6 106621 106618 106623 106624 106635 106636 6 106621 106622 106624 106625 106626 106627 6 106623 106622 106625 106633 106634 106635 6 106623 106624 106627 106628 106632 106633 6 106621 106623 106627 106750 106620 106751 6 106626 106623 106625 106628 106629 106751 6 106627 106625 106629 106630 106631 106632 6 106627 106628 106630 106756 106753 106751 6 106629 106628 106631 106756 106757 106758 6 106630 106628 106632 106758 106766 106767 6 106631 106628 106625 106633 106767 106768 6 106632 106625 106624 106634 106768 106769 6 106633 106624 106635 106769 106770 106771 6 106634 106624 106622 106636 109785 106771 6 106635 106622 106618 106617 106637 109785 6 106636 106617 106638 106785 106783 109785 6 106637 106617 106615 106639 109777 106785 6 106638 106615 106614 106640 109777 106642 6 106639 106614 105979 105981 106641 106642 6 106640 105981 105983 106642 106643 105985 7 106640 106641 106643 109777 106639 106787 109782 6 106642 106641 105985 106168 109782 109783 6 106362 106364 106645 106646 106647 106648 6 106362 106644 106183 106646 109724 109799 6 106645 106644 106647 109723 109724 106655 6 106646 106644 106648 106652 106654 106655 6 106647 106644 106364 106649 106650 106652 6 106648 106364 106650 106651 109673 106365 6 106648 106649 106651 106652 106653 109670 6 106650 106649 109670 109671 109672 109673 6 106648 106650 106653 106647 106654 103173 6 106652 106650 109670 109691 103172 103173 6 106647 106652 103173 106655 103450 103175 6 106647 106654 103450 106656 109723 106646 6 106655 103450 106657 106658 109721 109723 6 106656 103450 106658 103179 106659 106667 6 106656 106657 106667 106668 106669 109721 6 106657 103179 106660 106663 106664 106667 6 106659 103179 103178 106661 106662 106663 6 106660 103178 103180 102858 102859 106662 5 106660 106661 106663 106666 102859 6 106660 106662 106659 106664 106665 106666 6 106659 106663 106665 106667 106668 106672 7 106664 106663 106666 106672 106673 104564 104563 6 106665 106663 106662 104563 106674 102859 5 106659 106664 106668 106658 106657 7 106667 106664 106658 106669 106670 106671 106672 6 106658 106668 106670 106774 106775 109721 6 106669 106668 106671 106773 106772 106774 6 106670 106668 106672 106673 106790 106773 5 106671 106668 106664 106665 106673 5 106672 106665 104564 106671 106790 6 104563 106666 104561 106675 102860 102859 6 104561 106674 102860 106676 104560 109792 6 106675 102860 102853 102854 106677 109792 6 106676 102854 106678 106679 106681 109792 5 106677 102854 106679 106680 102855 6 106677 106678 106680 106681 106682 106683 6 106679 106678 106685 106683 106686 102855 6 106677 106679 106682 109750 109761 109792 6 106681 106679 106683 105156 105157 109750 6 106682 106679 105156 106684 106685 106680 6 105156 106683 106685 106692 106693 106694 6 106684 106683 106680 106686 106687 106692 6 106685 106680 106687 106688 106689 102855 6 106685 106686 106688 106692 106696 106699 6 106687 106686 106689 106690 106699 106700 6 106688 106686 106690 106691 102856 102855 6 106688 106689 106691 106700 106702 102551 5 106690 106689 102856 102550 102551 6 106685 106687 106684 106693 106695 106696 6 106684 106692 106694 104523 104522 106695 5 106684 106693 104523 104532 105156 6 104522 106693 106692 106696 106697 106704 6 106695 106692 106687 106697 106698 106699 7 106695 106696 106698 106703 103505 103506 106704 6 106697 106696 106699 106700 106701 106703 5 106698 106696 106687 106688 106700 7 106699 106688 106690 106698 106701 102222 106702 6 106698 106700 102222 100064 100065 106703 5 102222 106700 106690 102551 102221 6 106698 106701 100065 100066 106697 103505 5 106697 103506 103507 104522 106695 7 106552 106554 106555 106706 106551 106707 109749 6 106705 106555 109747 103502 109748 109749 6 106551 106705 106708 106709 106710 109749 7 106551 106707 106709 106719 106540 106548 106542 6 106708 106707 106710 106711 106718 106719 7 106709 106707 106711 106712 103503 109748 109749 7 106709 106710 106712 103117 103119 106713 106718 6 106711 106710 103503 103504 103116 103117 6 106711 103119 103121 103887 106714 106718 5 106713 103887 106538 106539 106718 6 106538 103886 106536 106716 103862 106717 5 106536 106715 106533 103863 103862 6 103862 106715 103861 103342 103885 103886 6 106714 106539 106713 106711 106709 106719 5 106718 106539 106540 106709 106708 6 106585 106587 106721 106722 107008 106583 6 106720 106587 106722 106723 106727 106728 6 106720 106721 106723 106724 107009 107008 6 106722 106721 106724 106725 106726 106727 6 106722 106723 106725 107009 107010 107011 6 106724 106723 106726 107022 107011 107023 6 106725 106723 106727 107023 107026 107027 6 106726 106723 106721 106728 107027 107030 6 106727 106721 106587 106588 106729 107030 6 106728 106588 106730 107030 107031 107032 6 106729 106588 106589 106590 106731 107032 6 106730 106590 106591 106593 106732 107032 6 106731 106593 106733 106734 107032 107033 6 106732 106593 106734 106601 106600 106594 6 106732 106733 106601 106603 106735 107033 6 106734 106603 106736 107033 107034 107035 6 106735 106603 106737 106740 107035 107036 5 106736 106603 106604 106738 106740 7 106737 106604 106605 106739 106740 106741 106742 6 106738 106605 106742 106743 106744 106745 6 106736 106737 106738 106741 107036 107037 6 106740 106738 106742 107037 107038 107039 6 106741 106738 106739 106743 107039 107040 7 106742 106739 106744 107040 107041 106754 107042 5 106743 106739 106745 106746 107042 6 106744 106739 106746 106747 106748 106605 7 106744 106745 106747 106610 106749 106750 107042 6 106746 106745 106748 106607 106608 106610 5 106747 106745 106607 106605 106606 5 106746 106610 106750 106620 106611 7 106746 106749 106620 106626 106751 106752 107042 6 106750 106626 106752 106753 106629 106627 5 106750 106751 106753 106754 107042 6 106752 106751 106754 106755 106756 106629 7 106752 106753 106755 107041 106743 107042 107141 5 106754 106753 106756 107141 106759 6 106755 106753 106629 106630 106757 106759 6 106756 106630 106758 106759 106760 106761 6 106757 106630 106631 106761 106762 106766 6 106756 106757 106760 107141 106755 107142 6 106759 106757 106761 107142 107143 107144 6 106760 106757 106758 106762 106763 107144 6 106761 106758 106763 104559 106764 106766 6 106761 106762 104559 104551 107144 104550 6 104559 106762 104558 104565 106765 106766 5 104565 106764 106766 106790 106767 6 106765 106764 106762 106758 106631 106767 6 106766 106631 106632 106768 106790 106765 6 106767 106632 106633 106769 106773 106790 6 106768 106633 106634 106770 106772 106773 6 106769 106634 106771 106772 106777 106778 6 106770 106634 106778 106779 106635 109785 6 106769 106770 106773 106670 106774 106777 6 106769 106772 106670 106671 106790 106768 6 106670 106772 106669 106775 106776 106777 6 106669 106774 106776 109721 109722 109798 7 106775 106774 106777 106778 106780 109797 109798 5 106776 106774 106772 106770 106778 6 106777 106770 106771 106779 106780 106776 6 106778 106771 106780 106781 106783 109785 6 106778 106779 106781 106782 106776 109797 6 106780 106779 106782 106176 106783 106784 5 106780 106781 106176 106177 109797 6 106781 106779 106784 106785 106637 109785 7 106781 106783 106176 106174 106785 106786 106788 7 106784 106783 106786 106787 109777 106638 106637 6 106784 106785 106787 106788 106171 106789 6 106786 106785 109777 106642 109782 106789 5 106784 106786 106171 106172 106174 5 106171 106786 106170 106787 109782 8 106671 106673 106773 104564 104565 106765 106768 106767 6 105418 105419 106792 107331 107332 107333 6 106791 105419 105420 105428 106793 107333 6 106792 105428 105429 106794 107333 107334 6 106793 105429 105430 106795 107334 107335 6 106794 105430 105432 105433 106796 107335 6 106795 105433 105434 106797 107335 107336 6 106796 105434 105435 106798 107336 107337 6 106797 105435 105436 106799 107337 107338 6 106798 105436 105437 106800 107338 107339 6 106799 105437 105438 106801 107339 107340 6 106800 105438 106802 107340 107341 107342 6 106801 105438 105439 105440 106803 107342 6 106802 105440 105441 106804 107342 107343 6 106803 105441 105442 106805 107343 107344 6 106804 105442 105444 106806 107344 107345 6 106805 105444 105445 106807 107345 107346 6 106806 105445 105446 106808 107346 107347 6 106807 105446 106809 107347 107348 107349 6 106808 105446 105447 106810 107349 106811 5 106809 105447 105217 105218 106811 6 106810 105218 105219 106812 107349 106809 5 106811 105219 106813 107349 107350 6 106812 105219 105220 106814 107350 107351 7 106813 105220 105221 105222 106815 107351 107352 5 106814 105222 106816 107352 107353 7 106815 105222 105223 105224 106817 107353 107354 5 106816 105224 106818 107354 107355 6 106817 105224 106819 107355 107356 107357 6 106818 105224 105225 105226 106820 107357 5 106819 105226 105227 106821 107357 6 106820 105227 106822 107357 107358 107359 7 106821 105227 105228 105229 106823 107359 107360 5 106822 105229 106824 106825 107360 5 106823 105229 106825 106826 105167 7 106823 106824 106826 106827 106828 107362 107360 5 106825 106824 105167 105168 106827 6 106826 105168 106825 106828 106829 106830 6 106825 106827 106829 107362 107363 107364 6 106828 106827 106830 107364 107365 107366 6 106829 106827 105168 105169 106831 107366 7 106830 105169 106832 107366 107367 107368 106834 5 106831 105169 106833 105238 106834 5 106832 105169 105238 105018 105023 6 106832 105238 105239 106835 107368 106831 6 106834 105239 105648 106836 107375 107368 7 106835 105648 106837 107375 107374 107376 107377 6 106836 105648 105649 105651 106838 107377 6 106837 105651 106839 107377 107378 107379 6 106838 105651 105652 106840 106841 107379 6 106839 105652 105653 105247 106841 105248 6 106839 106840 105248 106842 107379 107380 6 106841 105248 105249 106843 107380 107381 6 106842 105249 106844 107381 107382 107383 6 106843 105249 105028 105029 106845 107383 6 106844 105029 105030 106846 106847 107383 6 106845 105030 106847 106848 106849 105031 6 106845 106846 106848 107384 107383 107385 6 106847 106846 106849 107385 107386 107387 6 106848 106846 105031 105032 106850 107387 6 106849 105032 105033 105034 106851 107387 6 106850 105034 106852 107387 107388 106854 6 106851 105034 105035 105038 106853 106854 6 106852 105038 106854 106855 106856 105039 6 106852 106853 106855 107388 106851 107389 6 106854 106853 106856 106857 106859 107389 6 106855 106853 105039 106857 106858 105041 6 106855 106856 106858 106859 106860 106861 6 106857 106856 105041 106861 106862 106863 6 106855 106857 106860 107389 107390 107397 6 106859 106857 106861 107397 107398 107399 6 106860 106857 106858 106862 107399 107400 6 106861 106858 106863 106864 106865 107400 6 106862 106858 106864 105042 106879 105041 6 106862 106863 106865 106866 106879 106873 6 106862 106864 106866 106867 107400 107401 6 106865 106864 106867 106868 106872 106873 6 106865 106866 106868 106869 107401 107402 6 106867 106866 106869 106870 106871 106872 6 106867 106868 106870 107405 107402 107406 6 106869 106868 106871 107412 107406 107413 6 106870 106868 106872 107419 107416 107413 6 106871 106868 106866 106873 106874 107419 6 106872 106866 106874 106875 106864 106879 6 106872 106873 106875 106876 107419 107418 6 106874 106873 106876 106877 106878 106879 6 106874 106875 106877 106883 106884 107418 6 106876 106875 106878 106880 106882 106883 6 106877 106875 106879 106880 105043 105042 6 106878 106875 105042 106863 106864 106873 6 106877 106878 105043 105045 106881 106882 6 106880 105045 106882 106887 106888 106889 6 106880 106881 106877 106883 106886 106887 6 106877 106882 106876 106884 106885 106886 6 106876 106883 106885 107418 107420 107426 6 106884 106883 106886 107426 107427 107428 6 106885 106883 106882 106887 107428 107429 6 106886 106882 106881 106888 107429 107430 6 106887 106881 106889 106890 107430 107433 6 106888 106881 105045 106890 104645 104644 6 106888 106889 104645 104646 106891 107433 6 106890 104646 104647 106892 107433 106893 6 106891 104647 104253 104254 104730 106893 6 106892 104730 106894 107433 106891 107432 6 106893 104730 104731 106895 106897 107432 6 106894 104731 106896 106897 106898 106899 6 106895 104731 104732 106899 106900 106901 6 106894 106895 106898 107432 107431 107434 6 106897 106895 106899 107434 107435 107436 6 106898 106895 106896 106900 107436 107437 6 106899 106896 106901 107437 106904 106903 6 106900 106896 104732 104262 106902 106903 6 106901 104262 104263 104264 105231 106903 6 106902 105231 105458 106904 106900 106901 6 106903 105458 105459 106905 107437 106900 6 106904 105459 106906 107437 107438 107439 6 106905 105459 105460 106907 107439 107440 6 106906 105460 105461 106908 107262 107440 6 106907 105461 105462 106909 107262 107263 6 106908 105462 106910 107263 107264 106911 6 106909 105462 105463 105464 105465 106911 6 106910 105465 106912 107264 106909 107265 6 106911 105465 105466 106913 107265 107266 6 106912 105466 105467 106914 107266 107267 6 106913 105467 106915 107267 107268 107269 6 106914 105467 105468 106916 106917 107269 6 106915 105468 105469 105470 105471 106917 6 106915 106916 105471 106918 107269 107270 6 106917 105471 105472 106919 107270 107271 6 106918 105472 105473 106920 107271 107272 6 106919 105473 105474 105475 106921 107272 6 106920 105475 106922 107274 107272 107275 6 106921 105475 105476 106923 107275 107276 6 106922 105476 105477 106924 107276 107277 6 106923 105477 105478 106925 107277 107278 6 106924 105478 105479 106926 107278 107279 6 106925 105479 105480 105654 106927 107279 6 106926 105654 105655 106928 107281 107279 6 106927 105655 106929 107281 107282 107283 6 106928 105655 105656 105657 106930 107283 6 106929 105657 106931 107283 107284 107285 6 106930 105657 105658 105831 106932 107285 6 106931 105831 106933 107285 107286 107287 6 106932 105831 105832 105840 106934 107287 6 106933 105840 105841 106935 106936 107287 6 106934 105841 105843 106936 106937 106018 6 106934 106935 106937 106938 107287 107288 6 106936 106935 106018 106938 106939 106940 6 106936 106937 106939 107288 107289 107290 6 106938 106937 106940 107290 107291 106941 6 106939 106937 106018 105845 105847 106941 6 106940 105847 106942 106943 107291 106939 6 106941 105847 106943 106944 106945 105848 6 106941 106942 106944 107291 107292 107293 6 106943 106942 106945 107293 107294 107295 7 106944 106942 105848 105850 106385 106946 107295 6 106945 106385 106386 106947 107295 107296 6 106946 106386 106387 106388 106948 107296 6 106947 106388 106389 106949 107296 107297 7 106948 106389 106391 106395 106950 107297 107298 6 106949 106395 106951 107298 107300 107301 6 106950 106395 106396 106952 107043 107301 6 106951 106396 106399 106953 107043 107044 6 106952 106399 106400 106954 106955 107044 6 106953 106400 106401 106955 106956 106960 6 106953 106954 106956 106957 107044 107045 6 106955 106954 106957 106958 106959 106960 6 106955 106956 106958 107045 107048 107049 6 106957 106956 106959 106961 106962 107049 6 106958 106956 106960 106410 106411 106961 6 106959 106956 106954 106401 106402 106410 6 106959 106411 106958 106962 106963 106412 6 106958 106961 106963 107051 107049 107052 6 106962 106961 106412 106414 106964 107052 6 106963 106414 106416 106559 106965 107052 6 106964 106559 106561 106966 107052 106971 6 106965 106561 106967 106968 106970 106971 6 106966 106561 106968 106969 106562 106983 6 106966 106967 106969 106970 106974 106975 6 106968 106967 106981 106975 106982 106983 6 106966 106968 106971 106972 106973 106974 6 106966 106970 106972 107052 106965 107051 6 106971 106970 106973 107051 107050 107053 6 106972 106970 106974 107062 107053 107063 6 106973 106970 106968 106975 106976 107063 6 106974 106968 106976 106977 106981 106969 6 106974 106975 106977 106978 107063 107064 6 106976 106975 106978 106979 106980 106981 6 106976 106977 106979 107064 107065 107066 6 106978 106977 106980 107066 107067 107071 6 106979 106977 106981 107071 107072 107073 6 106980 106977 106975 106969 106982 107073 6 106981 106969 106983 106984 107073 107074 6 106982 106969 106984 106985 106562 106967 6 106982 106983 106985 107074 107075 107076 6 106984 106983 106562 106563 106986 107076 6 106985 106563 106567 106987 106988 107076 6 106986 106567 106988 106989 106990 106568 6 106986 106987 106989 106991 107076 107077 6 106988 106987 106990 106991 106992 106996 6 106989 106987 106996 106997 106570 106568 6 106988 106989 106992 106993 107077 107078 6 106991 106989 106993 106994 106995 106996 6 106991 106992 106994 107078 107081 107082 6 106993 106992 106995 107082 107085 107086 6 106994 106992 106996 107086 107087 107088 6 106995 106992 106989 106990 106997 107088 6 106996 106990 106570 106998 106999 107088 6 106997 106570 106999 107000 107001 106571 6 106997 106998 107000 107088 107089 107092 6 106999 106998 107001 107002 107092 107093 6 107000 106998 107002 107003 106575 106571 6 107000 107001 107003 107093 107094 107095 6 107002 107001 106575 106576 107004 107095 6 107003 106576 106578 107005 107095 107096 6 107004 106578 107006 107096 107097 107098 6 107005 106578 106579 107007 107012 107098 6 107006 106579 106582 107008 107009 107012 6 107007 106582 107009 106722 106720 106583 6 107007 107008 106722 106724 107010 107012 6 107009 106724 107011 107012 107013 107014 6 107010 106724 107022 107020 107014 106725 6 107009 107010 107007 107006 107013 107098 6 107012 107010 107014 107015 107098 107099 6 107013 107010 107015 107016 107020 107011 6 107013 107014 107016 107017 107099 107100 6 107015 107014 107017 107018 107019 107020 6 107015 107016 107018 107107 107100 107113 6 107017 107016 107019 107114 107113 107115 6 107018 107016 107020 107021 107115 107116 6 107019 107016 107014 107021 107022 107011 6 107019 107020 107022 107024 107116 107117 6 107021 107020 107011 106725 107023 107024 6 107022 106725 106726 107024 107025 107026 6 107021 107022 107023 107025 107117 107118 6 107024 107023 107026 107118 107119 107120 6 107025 107023 106726 107027 107028 107120 6 107026 106726 106727 107028 107029 107030 6 107026 107027 107029 107122 107120 107123 6 107028 107027 107030 107123 107034 107031 6 107029 107027 106727 106728 106729 107031 6 107030 106729 107032 107034 107029 107033 6 107031 106729 106730 106731 106732 107033 6 107032 106732 106734 106735 107034 107031 6 107033 106735 107035 107123 107029 107031 5 107034 106735 106736 107036 107123 6 107035 106736 106740 107037 107123 107122 7 107036 106740 106741 107038 107122 107124 107125 6 107037 106741 107039 107135 107125 107136 6 107038 106741 106742 107040 107136 107137 6 107039 106742 106743 107041 107137 107138 5 107040 106743 106754 107141 107138 6 106754 106743 106744 106746 106750 106752 6 106951 106952 107044 107301 107302 107046 6 107043 106952 106953 106955 107045 107046 6 107044 106955 106957 107046 107047 107048 6 107044 107045 107047 107302 107043 107303 6 107046 107045 107048 107303 107056 107054 6 107047 107045 106957 107049 107050 107054 6 107048 106957 107050 107051 106962 106958 6 107048 107049 107051 106972 107053 107054 6 107050 107049 106962 107052 106971 106972 6 107051 106962 106963 106964 106965 106971 6 107050 106972 107054 107055 107062 106973 6 107050 107053 107055 107056 107047 107048 6 107054 107053 107056 107057 107058 107062 6 107054 107055 107057 107303 107047 107304 6 107056 107055 107058 107059 107307 107304 6 107057 107055 107059 107060 107061 107062 6 107057 107058 107060 107307 107476 107477 6 107059 107058 107061 107477 107478 107479 6 107060 107058 107062 107063 107064 107479 6 107061 107058 107055 107053 106973 107063 6 107062 106973 106974 106976 107061 107064 6 107061 107063 106976 106978 107065 107479 6 107064 106978 107066 107479 107480 107481 6 107065 106978 106979 107067 107068 107481 6 107066 106979 107068 107069 107070 107071 6 107066 107067 107069 107483 107481 107462 6 107068 107067 107070 107462 107484 107485 6 107069 107067 107071 107485 107486 107487 6 107070 107067 106979 106980 107072 107487 6 107071 106980 107073 107487 107488 107492 6 107072 106980 106981 106982 107074 107492 6 107073 106982 106984 107075 107493 107492 6 107074 106984 107076 107493 107079 107077 6 107075 106984 106985 106986 106988 107077 6 107076 106988 106991 107078 107079 107075 6 107077 106991 106993 107079 107080 107081 6 107077 107078 107080 107691 107493 107075 6 107079 107078 107081 107223 107224 107691 6 107080 107078 106993 107082 107083 107223 6 107081 106993 106994 107083 107084 107085 6 107081 107082 107084 107226 107223 107227 6 107083 107082 107085 107227 107228 107229 6 107084 107082 106994 107086 107232 107229 6 107085 106994 106995 107087 107232 107233 6 107086 106995 107088 107089 107090 107233 6 107087 106995 106996 106997 106999 107089 6 107088 106999 107087 107090 107091 107092 6 107087 107089 107091 107233 107234 107235 6 107090 107089 107092 107235 107236 107237 6 107091 107089 106999 107000 107093 107237 6 107092 107000 107002 107094 107237 107238 6 107093 107002 107095 107238 107239 107103 6 107094 107002 107003 107004 107096 107103 6 107095 107004 107005 107097 107102 107103 6 107096 107005 107098 107099 107101 107102 6 107097 107005 107006 107012 107013 107099 6 107098 107013 107015 107100 107101 107097 6 107099 107015 107101 107106 107107 107017 6 107099 107100 107097 107102 107105 107106 6 107097 107101 107096 107103 107104 107105 6 107096 107102 107104 107239 107094 107095 6 107103 107102 107105 107241 107239 107242 6 107104 107102 107101 107106 107242 107243 6 107105 107101 107100 107107 107108 107243 6 107106 107100 107017 107108 107109 107113 6 107106 107107 107109 107110 107243 107244 6 107108 107107 107110 107111 107112 107113 6 107108 107109 107111 107247 107244 107248 6 107110 107109 107112 107248 107249 107250 6 107111 107109 107113 107114 107250 107251 6 107112 107109 107114 107018 107017 107107 6 107112 107113 107018 107115 107251 107254 6 107114 107018 107019 107116 107254 107255 6 107115 107019 107021 107117 107258 107255 6 107116 107021 107024 107118 107258 107259 6 107117 107024 107025 107119 107259 107128 6 107118 107025 107120 107121 107127 107128 6 107119 107025 107121 107122 107028 107026 6 107119 107120 107122 107124 107126 107127 7 107121 107120 107028 107123 107036 107037 107124 6 107122 107028 107029 107034 107035 107036 5 107122 107037 107125 107126 107121 5 107124 107037 107126 107135 107038 7 107124 107125 107121 107127 107130 107131 107135 6 107121 107126 107119 107128 107129 107130 6 107119 107127 107129 107261 107259 107118 6 107128 107127 107130 107261 107532 107530 6 107129 107127 107126 107131 107132 107532 6 107130 107126 107132 107133 107134 107135 6 107130 107131 107133 107532 107531 107533 6 107132 107131 107134 107533 107534 107535 6 107133 107131 107135 107535 107536 107136 6 107134 107131 107126 107125 107038 107136 6 107135 107038 107039 107137 107536 107134 6 107136 107039 107040 107138 107139 107536 6 107137 107040 107139 107140 107141 107041 6 107137 107138 107140 107148 107150 107536 6 107139 107138 107141 107142 107147 107148 7 107140 107138 107041 106754 106755 106759 107142 6 107140 107141 106759 106760 107143 107147 6 107142 106760 107144 107145 107146 107147 7 107143 106760 107145 104552 104551 106763 106761 5 107143 107144 104552 104554 107146 6 107145 104554 104556 107143 107147 107148 5 107143 107146 107148 107140 107142 7 107147 107146 104556 107140 107139 107149 107150 6 107148 104556 107150 107151 107152 107153 6 107148 107149 107139 107151 107536 107535 6 107150 107149 107152 107535 107534 107537 6 107151 107149 107153 107154 107155 107537 6 107152 107149 107154 104649 104555 104556 6 107152 107153 107155 107156 107166 104649 6 107152 107154 107156 107157 107537 107538 6 107155 107154 107157 107158 107159 107166 6 107155 107156 107158 107538 107539 107554 6 107157 107156 107159 107160 107554 107555 6 107158 107156 107160 107161 107162 107166 6 107158 107159 107161 107163 107167 107555 6 107160 107159 107162 107163 104137 107164 5 107161 107159 107164 107165 107166 6 107160 107161 104137 107167 107168 104138 7 104137 107161 107162 107165 104413 104134 104135 5 107164 107162 104413 104415 107166 7 104415 107165 107162 107159 107156 107154 104649 6 107160 107163 107168 107555 107556 107560 7 107167 107163 104138 107169 107560 107561 107562 5 107168 104138 104139 107170 107562 7 107169 104139 104140 107171 107562 107563 107564 6 107170 104140 104124 107172 107173 107564 6 107171 104124 107173 107174 104122 109789 6 107171 107172 107174 107175 107176 107564 6 107173 107172 107175 109788 109787 109789 6 107173 107174 107176 107177 107178 109788 7 107173 107175 107177 107564 107563 107568 107569 6 107176 107175 107178 107179 107180 107569 6 107177 107175 107179 109788 103535 103537 6 107177 107178 107180 107181 107182 103537 6 107177 107179 107181 107570 107569 107571 6 107180 107179 107182 107571 107572 107573 6 107181 107179 103537 103538 107183 107573 6 107182 103538 107184 107575 107573 107187 6 107183 103538 103539 107185 107186 107187 6 107184 103539 107186 107211 107210 107212 6 107184 107185 107187 107188 107211 107192 6 107184 107186 107188 107189 107575 107183 6 107187 107186 107189 107190 107191 107192 6 107187 107188 107190 107575 107576 107579 6 107189 107188 107191 107193 107579 107580 6 107190 107188 107192 107193 107194 107198 6 107191 107188 107198 107199 107211 107186 6 107190 107191 107194 107195 107580 107581 6 107193 107191 107195 107196 107197 107198 6 107193 107194 107196 107581 107582 107583 6 107195 107194 107197 107583 103196 103195 6 107196 107194 107198 103195 107200 107203 6 107197 107194 107191 107192 107199 107200 6 107198 107192 107200 107201 107211 107208 6 107198 107199 107201 107202 107203 107197 6 107200 107199 107202 107206 107207 107208 6 107200 107201 107203 107204 107205 107206 6 107200 107202 107204 103194 103195 107197 6 107203 107202 107205 107220 107221 103194 6 107204 107202 107206 109745 107218 107220 6 107205 107202 107201 107207 109745 109746 6 107206 107201 107208 107209 109746 107213 6 107207 107201 107209 107210 107211 107199 6 107207 107208 107210 104373 104374 107213 6 107209 107208 107211 107185 107212 104373 6 107210 107208 107199 107192 107186 107185 6 107210 107185 103539 103540 104372 104373 6 107209 104374 104375 107214 109746 107207 6 107213 104375 104377 107215 107216 109746 6 107214 104377 107216 102863 101627 102862 6 107214 107215 102863 107217 109745 109746 6 107216 102863 102864 102865 107218 109745 6 107217 102865 107219 107220 107205 109745 5 107218 102865 107220 103214 102866 6 107218 107219 103214 107221 107205 107204 6 107220 103214 103215 107222 103194 107204 5 107221 103215 103216 103193 103194 6 107080 107081 107224 107225 107226 107083 6 107080 107223 107225 107691 107690 107692 6 107224 107223 107226 107692 107693 107674 6 107225 107223 107083 107227 107674 107694 6 107226 107083 107084 107228 107694 107695 6 107227 107084 107229 107230 107695 107696 6 107228 107084 107230 107231 107232 107085 6 107228 107229 107231 107696 107697 107701 6 107230 107229 107232 107701 107702 107703 6 107231 107229 107085 107086 107233 107703 6 107232 107086 107087 107090 107234 107703 6 107233 107090 107235 107718 107704 107703 6 107234 107090 107091 107236 107718 107717 6 107235 107091 107237 107717 107719 107720 6 107236 107091 107092 107093 107238 107720 6 107237 107093 107094 107239 107240 107720 6 107238 107094 107103 107240 107241 107104 6 107238 107239 107241 107720 107721 107722 6 107240 107239 107104 107242 107722 107725 6 107241 107104 107105 107243 107245 107725 6 107242 107105 107106 107108 107244 107245 6 107243 107108 107245 107246 107247 107110 6 107243 107244 107246 107728 107725 107242 6 107245 107244 107247 107964 107728 107965 6 107246 107244 107110 107248 107965 107966 6 107247 107110 107111 107249 107966 107967 6 107248 107111 107250 107511 107967 107968 6 107249 107111 107112 107251 107252 107511 6 107250 107112 107114 107252 107253 107254 6 107250 107251 107253 107511 107512 107516 6 107252 107251 107254 107256 109775 107516 6 107253 107251 107114 107115 107255 107256 6 107254 107115 107256 107257 107258 107116 6 107254 107255 107257 107523 107253 109775 6 107256 107255 107258 107260 107524 107523 6 107257 107255 107116 107117 107259 107260 6 107258 107117 107118 107260 107261 107128 6 107258 107259 107261 107529 107524 107257 6 107260 107259 107128 107129 107530 107529 6 106907 106908 107263 107440 107442 107443 6 107262 106908 106909 107264 107443 107444 6 107263 106909 106911 107265 107444 107445 6 107264 106911 106912 107266 107445 107446 6 107265 106912 106913 107267 107449 107446 6 107266 106913 106914 107268 107449 107450 6 107267 106914 107269 107450 107451 107452 6 107268 106914 106915 106917 107270 107452 6 107269 106917 106918 107271 107452 107453 6 107270 106918 106919 107272 107273 107453 6 107271 106919 107273 107274 106921 106920 6 107271 107272 107274 107453 107454 107455 6 107273 107272 106921 107275 107455 107456 6 107274 106921 106922 107276 107456 107457 6 107275 106922 106923 107277 107457 107458 6 107276 106923 106924 107278 107458 107459 6 107277 106924 106925 107279 107280 107459 6 107278 106925 107280 107281 106927 106926 6 107278 107279 107281 107459 107460 107464 6 107280 107279 106927 106928 107282 107464 6 107281 106928 107283 107464 107465 107466 6 107282 106928 106929 106930 107284 107466 6 107283 106930 107285 107466 107467 107468 6 107284 106930 106931 106932 107286 107468 6 107285 106932 107287 107468 107469 107288 6 107286 106932 106933 106934 106936 107288 6 107287 106936 106938 107289 107469 107286 6 107288 106938 107290 107469 107470 107471 6 107289 106938 106939 107291 107471 107472 6 107290 106939 106941 106943 107292 107472 6 107291 106943 107293 107472 107473 107474 6 107292 106943 106944 107294 107474 107299 6 107293 106944 107295 107297 107298 107299 6 107294 106944 106945 106946 107296 107297 5 107295 106946 106947 106948 107297 6 107296 106948 106949 107295 107294 107298 6 107294 107297 106949 106950 107299 107300 5 107294 107298 107300 107474 107293 7 107299 107298 106950 107301 107474 107305 107302 5 107300 106950 106951 107043 107302 6 107301 107043 107046 107303 107305 107300 6 107302 107046 107047 107056 107304 107305 6 107303 107056 107305 107306 107307 107057 6 107303 107304 107306 107474 107300 107302 6 107305 107304 107307 107474 107473 107475 6 107306 107304 107057 107059 107475 107476 5 104702 104703 107309 107855 107856 6 107308 104703 104704 107310 107856 107857 6 107309 104704 104705 107311 107857 107858 6 107310 104705 104706 107312 107858 107859 6 107311 104706 104707 105170 107313 107859 6 107312 105170 107314 107859 107860 107861 6 107313 105170 105171 107315 107861 107862 6 107314 105171 105172 107316 107862 107863 6 107315 105172 105173 107317 107863 107864 6 107316 105173 105174 107318 107864 107865 6 107317 105174 105175 107319 107865 107866 6 107318 105175 105176 107320 107866 107867 6 107319 105176 105177 105178 107321 107867 6 107320 105178 107322 107867 107868 107869 6 107321 105178 105179 107323 107869 107870 6 107322 105179 105180 105411 107324 107870 6 107323 105411 107325 107870 107871 107872 6 107324 105411 105412 107326 107872 107873 6 107325 105412 105413 105414 107327 107873 6 107326 105414 107328 107873 107874 107875 6 107327 105414 105415 105416 107329 107875 6 107328 105416 107330 107875 107876 107877 6 107329 105416 105417 105418 107331 107877 6 107330 105418 106791 107332 107877 107878 6 107331 106791 107333 107878 107879 107880 6 107332 106791 106792 106793 107334 107880 6 107333 106793 106794 107335 107880 107881 6 107334 106794 106795 106796 107336 107881 6 107335 106796 106797 107337 107881 107882 6 107336 106797 106798 107338 107882 107883 6 107337 106798 106799 107339 107883 107884 6 107338 106799 106800 107340 107884 107885 6 107339 106800 106801 107341 107885 107886 6 107340 106801 107342 107886 107887 107888 6 107341 106801 106802 106803 107343 107888 6 107342 106803 106804 107344 107888 107889 6 107343 106804 106805 107345 107889 107890 6 107344 106805 106806 107346 107890 107891 6 107345 106806 106807 107347 107891 107892 6 107346 106807 106808 107348 107892 107893 6 107347 106808 107349 107893 107894 107895 7 107348 106808 106809 106811 106812 107350 107895 6 107349 106812 106813 107351 107895 107896 6 107350 106813 106814 107352 107896 107897 5 107351 106814 106815 107353 107897 7 107352 106815 106816 107354 107897 107898 107899 5 107353 106816 106817 107355 107899 7 107354 106817 106818 107356 107899 107900 107901 6 107355 106818 107357 107901 107902 107903 7 107356 106818 106819 106820 106821 107358 107903 6 107357 106821 107359 107903 107904 107905 6 107358 106821 106822 107360 107361 107905 6 107359 106822 106823 107361 107362 106825 6 107359 107360 107362 107905 107906 107907 6 107361 107360 106825 106828 107363 107907 6 107362 106828 107364 107907 107908 107909 5 107363 106828 106829 107365 107909 7 107364 106829 107366 107369 107371 107909 107910 6 107365 106829 106830 106831 107367 107369 6 107366 106831 107368 107369 107370 107375 5 107367 106831 107375 106835 106834 6 107366 107367 107370 107365 107371 107372 6 107369 107367 107372 107373 107374 107375 6 107365 107369 107372 107910 107911 107912 6 107371 107369 107370 107373 107912 107913 6 107372 107370 107374 107913 107914 107915 6 107373 107370 107375 106836 107376 107915 6 107374 107370 107367 107368 106835 106836 6 107374 106836 107377 107915 107916 107917 6 107376 106836 106837 106838 107378 107917 5 107377 106838 107379 107601 107917 6 107378 106838 106839 106841 107380 107601 6 107379 106841 106842 107381 107601 107602 6 107380 106842 106843 107382 107605 107602 6 107381 106843 107383 107384 107605 107606 6 107382 106843 107384 106847 106845 106844 6 107382 107383 106847 107385 107606 107607 6 107384 106847 106848 107386 107607 107392 6 107385 106848 107387 107388 107391 107392 6 107386 106848 106849 106850 106851 107388 6 107387 106851 106854 107389 107391 107386 6 107388 106854 106855 106859 107390 107391 6 107389 106859 107391 107396 107393 107397 6 107389 107390 107388 107386 107392 107393 6 107386 107391 107393 107394 107607 107385 6 107392 107391 107394 107395 107396 107390 6 107392 107393 107395 107607 107608 107611 6 107394 107393 107396 107611 107612 107622 6 107395 107393 107390 107397 107622 107623 6 107396 107390 106859 106860 107398 107623 5 107397 106860 107399 107623 107624 6 107398 106860 106861 107400 107624 107625 7 107399 106861 106862 106865 107401 107625 107626 6 107400 106865 106867 107402 107403 107626 6 107401 106867 107403 107404 107405 106869 6 107401 107402 107404 107626 107627 107628 6 107403 107402 107405 107408 107628 107629 6 107404 107402 106869 107406 107407 107408 6 107405 106869 107407 107411 107412 106870 6 107405 107406 107408 107409 107410 107411 6 107405 107407 107404 107409 107632 107629 6 107408 107407 107410 107632 107633 107634 6 107409 107407 107411 107634 107635 107642 6 107410 107407 107406 107412 107642 107643 6 107411 107406 106870 107413 107414 107643 6 107412 106870 107414 107415 107416 106871 6 107412 107413 107415 107643 107644 107645 6 107414 107413 107416 107417 107645 107646 6 107415 107413 107417 107418 107419 106871 6 107415 107416 107418 107420 107421 107646 7 107417 107416 107419 106874 106876 106884 107420 5 107418 107416 106871 106872 106874 6 107418 106884 107417 107421 107422 107426 6 107417 107420 107422 107423 107646 107647 6 107421 107420 107423 107424 107425 107426 6 107421 107422 107424 107647 107648 107649 6 107423 107422 107425 107649 107650 107651 6 107424 107422 107426 107651 107652 107427 6 107425 107422 107420 106884 106885 107427 6 107426 106885 107428 107652 107425 107653 6 107427 106885 106886 107429 107653 107654 6 107428 106886 106887 107430 107431 107654 6 107429 106887 106888 107431 107432 107433 6 107429 107430 107432 106897 107434 107654 6 107431 107430 107433 106893 106894 106897 6 107432 107430 106888 106890 106891 106893 6 107431 106897 106898 107435 107655 107654 6 107434 106898 107436 107655 107656 107660 6 107435 106898 106899 107437 107660 107438 6 107436 106899 106900 106904 106905 107438 6 107437 106905 107439 107660 107436 107661 6 107438 106905 106906 107440 107441 107661 6 107439 106906 106907 107262 107441 107442 6 107439 107440 107442 107661 107662 107663 6 107441 107440 107262 107443 107663 107664 6 107442 107262 107263 107444 107664 107665 6 107443 107263 107264 107445 107665 107666 6 107444 107264 107265 107446 107447 107666 6 107445 107265 107447 107448 107449 107266 6 107445 107446 107448 107668 107666 107671 6 107447 107446 107449 107671 107676 107673 6 107448 107446 107266 107267 107450 107676 6 107449 107267 107268 107451 107676 107677 6 107450 107268 107452 107677 107678 107682 6 107451 107268 107269 107270 107453 107682 6 107452 107270 107271 107273 107454 107682 6 107453 107273 107455 107682 107681 107683 6 107454 107273 107274 107456 107686 107683 6 107455 107274 107275 107457 107686 107687 6 107456 107275 107276 107458 107687 107688 6 107457 107276 107277 107459 107688 107461 6 107458 107277 107278 107280 107460 107461 6 107459 107280 107461 107462 107463 107464 6 107459 107460 107462 107688 107458 107484 7 107461 107460 107463 107483 107068 107069 107484 6 107462 107460 107464 107483 107482 107465 6 107463 107460 107280 107281 107282 107465 6 107464 107282 107466 107482 107463 107494 6 107465 107282 107283 107284 107467 107494 6 107466 107284 107468 107494 107495 107496 6 107467 107284 107285 107286 107469 107496 6 107468 107286 107288 107289 107470 107496 6 107469 107289 107471 107496 107497 107498 6 107470 107289 107290 107472 107498 107475 6 107471 107290 107291 107292 107473 107475 5 107472 107292 107474 107306 107475 7 107473 107292 107293 107299 107300 107305 107306 7 107473 107306 107307 107476 107498 107471 107472 5 107475 107307 107059 107477 107498 6 107476 107059 107060 107478 107497 107498 7 107477 107060 107479 107480 107497 107495 107499 6 107478 107060 107061 107064 107065 107480 6 107478 107479 107065 107481 107482 107499 6 107480 107065 107482 107483 107068 107066 7 107480 107481 107483 107463 107465 107494 107499 5 107482 107481 107068 107462 107463 5 107462 107069 107485 107688 107461 6 107484 107069 107070 107486 107687 107688 6 107485 107070 107487 107686 107687 107685 7 107486 107070 107071 107072 107488 107489 107685 6 107487 107072 107489 107490 107491 107492 5 107487 107488 107490 107685 107684 6 107489 107488 107491 107684 107689 107690 6 107490 107488 107492 107493 107690 107691 6 107491 107488 107493 107074 107073 107072 6 107491 107492 107074 107075 107691 107079 6 107482 107465 107466 107467 107495 107499 6 107494 107467 107496 107497 107478 107499 6 107495 107467 107468 107469 107470 107497 6 107496 107470 107498 107477 107478 107495 6 107497 107470 107471 107477 107476 107475 5 107495 107478 107480 107482 107494 6 100427 105612 105613 107501 107502 109768 6 107500 105613 107502 107503 107504 107505 6 107500 107501 107503 109768 109769 109770 6 107502 107501 107504 106474 109770 109780 5 107503 107501 106474 106472 107505 7 106472 107504 107501 105613 105614 107506 106470 5 107505 105614 107507 106469 106470 6 107506 105614 105615 107508 107509 106469 6 107507 105615 107509 107510 109734 104518 5 107507 107508 107510 106469 106468 6 107509 107508 106468 109732 109733 109734 6 107249 107250 107252 107512 107513 107968 6 107511 107252 107513 107514 107515 107516 6 107511 107512 107514 107968 107969 107970 6 107513 107512 107515 107970 107971 107972 6 107514 107512 107516 107517 107518 107972 6 107515 107512 107252 107517 109775 107253 6 107515 107516 107518 107519 107520 109775 6 107515 107517 107519 107972 107973 107977 6 107518 107517 107520 107521 107977 107978 6 107519 107517 107521 107522 107523 109775 6 107519 107520 107522 107989 107978 107526 6 107521 107520 107523 107524 107525 107526 6 107522 107520 107524 107256 107257 109775 6 107522 107523 107525 107260 107529 107257 6 107522 107524 107526 107527 107528 107529 6 107522 107525 107527 107989 107521 107990 6 107526 107525 107528 107990 107546 107545 6 107527 107525 107529 107530 107531 107545 6 107528 107525 107530 107261 107260 107524 6 107528 107529 107261 107531 107532 107129 7 107528 107530 107532 107132 107533 107543 107545 5 107531 107530 107129 107130 107132 6 107531 107132 107133 107534 107544 107543 6 107533 107133 107535 107151 107537 107544 6 107534 107133 107134 107536 107150 107151 6 107535 107134 107136 107137 107139 107150 6 107534 107151 107152 107155 107538 107544 6 107537 107155 107157 107539 107540 107544 6 107538 107157 107540 107541 107553 107554 6 107538 107539 107541 107542 107543 107544 6 107540 107539 107542 107547 107553 107550 6 107540 107541 107543 107545 107546 107547 6 107540 107542 107544 107533 107531 107545 6 107540 107543 107533 107534 107537 107538 6 107531 107543 107542 107546 107527 107528 6 107545 107542 107547 107548 107990 107527 6 107546 107542 107541 107548 107549 107550 6 107546 107547 107549 107990 107989 107991 6 107548 107547 107550 107551 107991 107992 6 107549 107547 107551 107552 107553 107541 6 107549 107550 107552 107992 107994 107995 7 107551 107550 107553 107557 107556 107558 107995 6 107552 107550 107541 107539 107554 107557 6 107553 107539 107157 107158 107555 107557 6 107554 107158 107160 107167 107556 107557 7 107555 107167 107557 107552 107558 107559 107560 5 107555 107556 107554 107553 107552 5 107552 107556 107559 107995 107996 7 107558 107556 107560 107996 107999 107566 107561 5 107559 107556 107167 107168 107561 6 107560 107168 107562 107565 107566 107559 6 107561 107168 107169 107170 107563 107565 6 107562 107170 107564 107176 107565 107568 5 107563 107170 107171 107173 107176 6 107562 107563 107561 107566 107567 107568 6 107561 107565 107567 107999 107559 108000 6 107566 107565 107568 107569 107570 108000 5 107567 107565 107563 107176 107569 6 107568 107176 107567 107570 107180 107177 6 107567 107569 107180 107571 108000 108001 6 107570 107180 107181 107572 108001 108002 6 107571 107181 107573 107574 108002 108003 6 107572 107181 107574 107575 107183 107182 6 107572 107573 107575 107576 107577 108003 6 107574 107573 107183 107187 107189 107576 6 107575 107189 107574 107577 107578 107579 6 107574 107576 107578 108003 108004 108005 6 107577 107576 107579 108005 108006 108007 6 107578 107576 107189 107190 107580 108007 6 107579 107190 107193 107581 108007 108008 6 107580 107193 107195 107582 108008 108009 6 107581 107195 107583 107585 108012 108009 6 107582 107195 107196 103196 107584 107585 6 107583 103196 103186 107585 107586 103187 6 107583 107584 107586 107587 107582 108012 6 107585 107584 107587 107588 103958 103187 6 107585 107586 107588 107729 108013 108012 6 107587 107586 103958 103960 107589 107729 6 107588 103960 107590 107729 107730 107731 6 107589 103960 103961 107591 107731 107732 6 107590 103961 107592 107738 107732 107739 6 107591 103961 102890 102891 107593 107739 6 107592 102891 107594 107595 107739 107740 6 107593 102891 107595 107596 107597 102892 6 107593 107594 107596 107740 107741 107745 6 107595 107594 107597 107598 107745 107746 6 107596 107594 107598 107599 107600 102892 6 107596 107597 107599 104089 107746 107751 5 107598 107597 107600 104089 104086 6 107599 107597 104086 102880 102879 102892 7 107378 107379 107380 107602 107603 107917 107918 6 107601 107380 107603 107604 107605 107381 6 107601 107602 107604 107926 107920 107918 5 107603 107602 107605 107926 107927 7 107604 107602 107381 107382 107606 107609 107927 6 107605 107382 107384 107607 107608 107609 6 107606 107384 107385 107392 107394 107608 6 107607 107394 107606 107609 107610 107611 6 107606 107608 107610 107929 107927 107605 6 107609 107608 107611 107613 107616 107929 6 107610 107608 107394 107395 107612 107613 6 107611 107395 107613 107614 107621 107622 6 107611 107612 107614 107615 107616 107610 6 107613 107612 107615 107619 107620 107621 6 107613 107614 107616 107617 107618 107619 6 107613 107615 107617 108157 107929 107610 6 107616 107615 107618 108155 108157 108156 6 107617 107615 107619 108156 108158 108159 6 107618 107615 107614 107620 108159 108160 6 107619 107614 107621 108160 108161 108162 6 107620 107614 107612 107622 108162 108163 6 107621 107612 107395 107396 107623 108163 6 107622 107396 107397 107398 107624 108163 6 107623 107398 107399 107625 108163 108164 6 107624 107399 107400 107626 108164 107627 5 107625 107400 107401 107403 107627 6 107626 107403 107628 108164 107625 108165 6 107627 107403 107404 107629 107630 108165 6 107628 107404 107630 107631 107632 107408 6 107628 107629 107631 108165 108166 108167 6 107630 107629 107632 108170 108167 108171 6 107631 107629 107408 107409 107633 108171 6 107632 107409 107634 108173 108171 108174 6 107633 107409 107410 107635 107636 108174 6 107634 107410 107636 107637 107641 107642 6 107634 107635 107637 107638 108174 108175 6 107636 107635 107638 107639 107640 107641 6 107636 107637 107639 108175 108176 108177 6 107638 107637 107640 108177 108178 108179 6 107639 107637 107641 108179 108180 108181 6 107640 107637 107635 107642 108181 108182 6 107641 107635 107410 107411 107643 108182 6 107642 107411 107412 107414 107644 108182 6 107643 107414 107645 108183 108182 108184 6 107644 107414 107415 107646 108184 108185 6 107645 107415 107417 107421 107647 108185 6 107646 107421 107423 107648 108185 108186 6 107647 107423 107649 108186 108187 108188 6 107648 107423 107424 107650 108188 108189 6 107649 107424 107651 108189 108190 108191 6 107650 107424 107425 107652 108191 108192 6 107651 107425 107427 107653 108192 107657 6 107652 107427 107428 107654 107655 107657 6 107653 107428 107429 107655 107434 107431 6 107653 107654 107434 107435 107656 107657 6 107655 107435 107657 107658 107659 107660 6 107655 107656 107658 108192 107652 107653 6 107657 107656 107659 108192 108193 108194 6 107658 107656 107660 108194 107662 107661 6 107659 107656 107435 107436 107438 107661 6 107660 107438 107439 107441 107662 107659 6 107661 107441 107663 108194 107659 108195 6 107662 107441 107442 107664 108208 108195 6 107663 107442 107443 107665 108208 108207 6 107664 107443 107444 107666 107667 108207 6 107665 107444 107667 107668 107447 107445 6 107665 107666 107668 107669 108206 108207 6 107667 107666 107447 107669 107670 107671 6 107667 107668 107670 107698 108206 109790 6 107669 107668 107671 107672 107695 109790 6 107670 107668 107447 107448 107672 107673 6 107670 107671 107673 107674 107695 107694 6 107672 107671 107674 107675 107676 107448 7 107672 107673 107675 107693 107225 107226 107694 6 107674 107673 107676 107677 107679 107693 6 107675 107673 107448 107449 107450 107677 6 107676 107450 107451 107678 107679 107675 6 107677 107451 107679 107680 107681 107682 7 107677 107678 107680 107675 107693 107692 107689 5 107679 107678 107681 107689 107684 6 107680 107678 107682 107454 107683 107684 6 107681 107678 107451 107452 107453 107454 6 107681 107454 107684 107685 107686 107455 7 107681 107683 107685 107489 107490 107689 107680 6 107684 107683 107686 107486 107487 107489 6 107685 107683 107455 107456 107687 107486 6 107686 107456 107457 107486 107485 107688 6 107485 107687 107457 107458 107461 107484 6 107684 107490 107690 107692 107679 107680 6 107689 107490 107491 107691 107224 107692 6 107690 107491 107493 107079 107080 107224 6 107690 107224 107225 107693 107679 107689 5 107692 107225 107674 107675 107679 5 107674 107226 107227 107695 107672 7 107694 107227 107228 107696 107670 107672 109790 6 107695 107228 107230 107697 107698 109790 6 107696 107230 107698 107699 107700 107701 6 107696 107697 107699 108206 107669 109790 6 107698 107697 107700 108205 108203 108206 6 107699 107697 107701 108318 108205 107707 6 107700 107697 107230 107231 107702 107707 6 107701 107231 107703 107704 107705 107707 6 107702 107231 107704 107234 107233 107232 6 107702 107703 107705 107706 107718 107234 6 107702 107704 107706 107707 107708 107709 6 107705 107704 107709 107710 107711 107718 6 107702 107705 107708 108318 107700 107701 6 107707 107705 107709 108318 108481 108317 6 107708 107705 107706 107710 108481 108482 6 107709 107706 107711 107712 107713 108482 6 107710 107706 107712 107716 107717 107718 6 107710 107711 107713 107714 107715 107716 6 107710 107712 107714 108482 108483 108484 6 107713 107712 107715 108484 109765 108486 6 107714 107712 107716 109765 107723 109767 6 107715 107712 107711 107717 109767 107719 6 107716 107711 107718 107235 107236 107719 6 107717 107711 107706 107704 107234 107235 6 107717 107236 107720 109767 107716 107721 6 107719 107236 107237 107238 107240 107721 6 107720 107240 107722 107723 109767 107719 6 107721 107240 107241 107723 107724 107725 7 107721 107722 107724 107726 109765 107715 109767 6 107723 107722 107725 107726 107727 107728 6 107724 107722 107728 107245 107242 107241 6 107723 107724 107727 107962 109765 109764 6 107726 107724 107728 107962 107963 107964 6 107727 107724 107725 107245 107964 107246 6 107587 107588 107589 107730 108013 108014 6 107729 107589 107731 108014 108015 107734 6 107730 107589 107590 107732 107733 107734 6 107731 107590 107733 107737 107738 107591 6 107731 107732 107734 107735 107736 107737 6 107731 107733 107735 108015 107730 108016 6 107734 107733 107736 108016 108017 108018 6 107735 107733 107737 108018 108019 108020 6 107736 107733 107732 107738 108020 108021 6 107737 107732 107591 107739 109766 108021 6 107738 107591 107592 107593 107740 109766 6 107739 107593 107595 107741 107742 109766 6 107740 107595 107742 107743 107744 107745 6 107740 107741 107743 108025 108023 109766 6 107742 107741 107744 108025 108026 108027 6 107743 107741 107745 107747 107748 108027 6 107744 107741 107595 107596 107746 107747 6 107745 107596 107598 107747 107750 107751 6 107745 107746 107744 107748 107749 107750 6 107744 107747 107749 108027 108031 108032 6 107748 107747 107750 108032 108036 107759 6 107749 107747 107746 107751 107752 107759 7 107750 107746 107598 104089 104090 107752 107753 7 107750 107751 107753 104379 107754 107758 107759 4 107752 107751 104090 104379 5 107752 104379 104380 107755 107758 6 107754 104380 104382 107756 107757 107758 6 107755 104382 107757 107762 107763 107764 6 107755 107756 107758 107760 107761 107762 6 107755 107757 107754 107752 107759 107760 6 107752 107758 107760 108036 107749 107750 5 107759 107758 107757 107761 108036 7 107760 107757 107762 108036 108640 108635 108035 7 107761 107757 107756 107763 108852 108639 108640 6 107762 107756 107764 107765 108852 108853 6 107763 107756 104382 104383 104389 107765 6 107763 107764 104389 107766 108319 108853 6 107765 104389 104390 107767 108319 108320 6 107766 104390 103142 107768 107769 108320 6 107767 103142 107769 107770 107774 103143 6 107767 107768 107770 107771 108322 108320 6 107769 107768 107771 107772 107773 107774 6 107769 107770 107772 108322 108323 108324 6 107771 107770 107773 108324 108325 107777 6 107772 107770 107774 107775 107776 107777 6 107773 107770 107768 103143 103144 107775 6 107774 103144 107773 107776 103145 109791 6 107773 107775 107777 107778 103414 109791 6 107773 107776 107778 108325 107772 108326 6 107777 107776 103414 103415 107779 108326 6 107778 103415 105382 105384 107780 108326 6 107779 105384 105386 107781 108326 108327 6 107780 105386 105388 107782 108329 108327 6 107781 105388 105616 107783 108329 108330 6 107782 105616 107784 108330 108331 108332 6 107783 105616 105617 107785 108037 108332 6 107784 105617 107786 107787 108037 108038 6 107785 105617 105618 107787 107788 107789 6 107785 107786 107788 108038 108039 108040 6 107787 107786 107789 108045 108040 107794 6 107788 107786 105618 105619 107790 107794 6 107789 105619 107791 107792 107793 107794 6 107790 105619 107792 103779 103778 105620 6 107790 107791 107793 107797 107798 103779 6 107790 107792 107794 107795 107796 107797 6 107790 107793 107795 108045 107788 107789 6 107794 107793 107796 108045 108046 108047 6 107795 107793 107797 108048 108047 108049 6 107796 107793 107792 107798 108049 107799 6 107797 107792 103779 103780 103783 107799 6 107798 103783 103784 107800 108049 107797 6 107799 103784 103785 103788 107801 108049 6 107800 103788 103790 107802 108048 108049 6 107801 103790 103791 103793 107803 108048 6 107802 103793 107804 107806 108047 108048 6 107803 103793 103794 107805 107806 107807 6 107804 103794 107807 107808 107809 103795 6 107803 107804 107807 108046 108047 108343 6 107806 107804 107805 107808 108344 108343 6 107807 107805 107809 108344 108345 107930 6 107808 107805 103795 103796 107810 107930 6 107809 103796 103952 107811 107930 107931 6 107810 103952 107812 107931 107932 107936 6 107811 103952 103953 107813 107936 107937 6 107812 103953 103954 107814 107937 107938 6 107813 103954 107815 107938 107939 107816 6 107814 103954 103955 103956 104238 107816 6 107815 104238 104503 107817 107939 107814 6 107816 104503 104504 107818 107939 107940 6 107817 104504 107819 107940 107941 107942 6 107818 104504 104505 107820 107942 107943 6 107819 104505 104506 104507 107821 107943 6 107820 104507 107822 107943 107944 107945 6 107821 104507 104508 107823 107945 107946 6 107822 104508 104509 107824 107946 107947 6 107823 104509 107825 107826 107947 107948 6 107824 104509 104510 107826 107827 107828 6 107824 107825 107827 107948 107949 107950 6 107826 107825 107828 107950 107951 107952 6 107827 107825 104510 104419 107829 107952 6 107828 104419 104247 107830 107952 107832 6 107829 104247 104248 104739 107831 107832 6 107830 104739 105003 107832 107833 107834 6 107830 107831 107833 107952 107829 107953 6 107832 107831 107834 107953 107954 107955 6 107833 107831 105003 105004 107835 107955 6 107834 105004 105005 107836 107955 107956 6 107835 105005 107837 107956 107957 107958 6 107836 105005 104750 104751 107838 107958 6 107837 104751 104757 107839 107958 107959 6 107838 104757 107840 107959 107960 107846 6 107839 104757 104758 107841 107846 107961 6 107840 104758 104661 104662 107842 107961 6 107841 104662 104663 104689 107843 107961 6 107842 104689 104690 107844 107961 107845 6 107843 104690 104691 105158 105159 107845 5 107844 105159 107846 107961 107843 7 107845 105159 107847 107960 107839 107840 107961 6 107846 105159 105160 107848 108082 107960 6 107847 105160 105161 107849 108082 108083 6 107848 105161 105162 107850 108083 108084 6 107849 105162 107851 108084 108085 108086 6 107850 105162 105163 105164 107852 108086 6 107851 105164 107853 108086 108087 108088 6 107852 105164 105165 107854 108088 108089 7 107853 105165 104700 104701 104702 107855 108089 5 107854 104702 107308 107856 108089 7 107855 107308 107309 107857 108089 108090 108091 7 107856 107309 107310 107858 108091 108092 108093 6 107857 107310 107311 107859 108093 108094 6 107858 107311 107312 107313 107860 108094 6 107859 107313 107861 108094 108095 108096 6 107860 107313 107314 107862 108096 108097 6 107861 107314 107315 107863 108097 108098 6 107862 107315 107316 107864 108098 108099 6 107863 107316 107317 107865 108099 108100 6 107864 107317 107318 107866 108100 108101 6 107865 107318 107319 107867 108101 108102 6 107866 107319 107320 107321 107868 108102 6 107867 107321 107869 108102 108103 108104 6 107868 107321 107322 107870 108104 108105 6 107869 107322 107323 107324 107871 108105 6 107870 107324 107872 108105 108106 108107 6 107871 107324 107325 107873 108107 108108 6 107872 107325 107326 107327 107874 108108 6 107873 107327 107875 108108 108109 108110 6 107874 107327 107328 107329 107876 108110 6 107875 107329 107877 108110 108111 108112 6 107876 107329 107330 107331 107878 108112 6 107877 107331 107332 107879 108112 108113 6 107878 107332 107880 108113 108114 108115 6 107879 107332 107333 107334 107881 108115 6 107880 107334 107335 107336 107882 108115 6 107881 107336 107337 107883 108115 108116 7 107882 107337 107338 107884 108116 108117 108118 6 107883 107338 107339 107885 108118 108119 6 107884 107339 107340 107886 108119 108120 6 107885 107340 107341 107887 108120 108121 6 107886 107341 107888 108121 108122 108123 6 107887 107341 107342 107343 107889 108123 6 107888 107343 107344 107890 108123 108124 6 107889 107344 107345 107891 108124 108125 6 107890 107345 107346 107892 108125 108126 6 107891 107346 107347 107893 108126 108127 6 107892 107347 107348 107894 108127 108128 6 107893 107348 107895 108128 108129 108130 6 107894 107348 107349 107350 107896 108130 6 107895 107350 107351 107897 108130 108131 7 107896 107351 107352 107353 107898 108131 108132 5 107897 107353 107899 108132 108133 7 107898 107353 107354 107355 107900 108133 108134 6 107899 107355 107901 108134 108135 108136 5 107900 107355 107356 107902 108136 7 107901 107356 107903 108136 108137 108138 107904 5 107902 107356 107357 107358 107904 6 107903 107358 107905 108138 107902 108139 6 107904 107358 107359 107361 107906 108139 6 107905 107361 107907 108139 108140 108141 6 107906 107361 107362 107363 107908 108141 6 107907 107363 107909 108141 108142 108143 6 107908 107363 107364 107365 107910 108143 6 107909 107365 107371 107911 108143 108144 6 107910 107371 107912 108144 108145 108146 5 107911 107371 107372 107913 108146 7 107912 107372 107373 107914 108146 108147 108148 6 107913 107373 107915 108148 108149 108150 6 107914 107373 107374 107376 107916 108150 6 107915 107376 107917 107918 107919 108150 6 107916 107376 107377 107378 107601 107918 6 107917 107601 107916 107919 107920 107603 6 107916 107918 107920 107921 107922 108150 6 107919 107918 107921 107925 107926 107603 6 107919 107920 107922 107923 107924 107925 6 107919 107921 107923 108150 108151 108149 6 107922 107921 107924 108151 108152 108153 6 107923 107921 107925 108153 108154 108155 6 107924 107921 107920 107926 108155 107928 6 107925 107920 107603 107604 107927 107928 6 107926 107604 107928 107929 107609 107605 6 107926 107927 107929 108155 107925 108157 6 107928 107927 107609 108157 107616 107610 6 107809 107810 107931 108050 108345 107808 6 107930 107810 107811 107932 107933 108050 6 107931 107811 107933 107934 107935 107936 6 107931 107932 107934 108050 108051 108052 6 107933 107932 107935 108052 108053 108057 6 107934 107932 107936 108059 108057 108060 6 107935 107932 107811 107812 107937 108060 6 107936 107812 107813 107938 108060 108061 6 107937 107813 107814 107939 108061 108062 6 107938 107814 107816 107817 107940 108062 6 107939 107817 107818 107941 108062 108063 6 107940 107818 107942 108063 108064 108065 6 107941 107818 107819 107943 108065 108066 6 107942 107819 107820 107821 107944 108066 6 107943 107821 107945 108066 108067 108068 6 107944 107821 107822 107946 108068 108069 6 107945 107822 107823 107947 108069 108070 6 107946 107823 107824 107948 108070 108071 6 107947 107824 107826 107949 108071 108072 6 107948 107826 107950 108072 108073 108074 6 107949 107826 107827 107951 108074 108075 6 107950 107827 107952 108075 108076 107953 6 107951 107827 107828 107829 107832 107953 6 107952 107832 107833 107954 108076 107951 6 107953 107833 107955 108076 108077 108078 6 107954 107833 107834 107835 107956 108078 6 107955 107835 107836 107957 108078 108079 6 107956 107836 107958 108079 108080 108081 6 107957 107836 107837 107838 107959 108081 6 107958 107838 107839 107960 108081 108082 5 107959 107839 107846 108082 107847 6 107846 107840 107841 107842 107843 107845 6 107726 107727 107963 108466 108468 109764 6 107962 107727 107964 108466 108487 108488 6 107963 107727 107728 107246 107965 108488 6 107964 107246 107247 107966 108488 108489 6 107965 107247 107248 107967 108489 108490 6 107966 107248 107249 107968 108490 108491 6 107967 107249 107511 107513 107969 108491 6 107968 107513 107970 108493 108491 108494 6 107969 107513 107514 107971 108494 108495 6 107970 107514 107972 108495 108496 107974 6 107971 107514 107515 107518 107973 107974 6 107972 107518 107974 107975 107976 107977 6 107972 107973 107975 108496 107971 108497 6 107974 107973 107976 108500 108497 107981 6 107975 107973 107977 107979 107980 107981 6 107976 107973 107518 107519 107978 107979 6 107977 107519 107979 107988 107989 107521 6 107977 107978 107976 107980 107987 107988 6 107976 107979 107981 107982 107986 107987 6 107976 107980 107982 107983 108500 107975 6 107981 107980 107983 107984 107985 107986 6 107981 107982 107984 108500 108501 108502 6 107983 107982 107985 108502 108503 108504 6 107984 107982 107986 108504 108505 108506 6 107985 107982 107980 107987 108506 107993 7 107986 107980 107979 107988 107991 107992 107993 5 107987 107979 107978 107989 107991 7 107988 107978 107521 107526 107990 107548 107991 5 107989 107526 107527 107546 107548 6 107989 107548 107549 107992 107987 107988 6 107991 107549 107551 107987 107993 107994 6 107987 107992 107994 108506 107986 108507 6 107993 107992 107551 108507 107997 107995 6 107551 107552 107558 107996 107997 107994 6 107995 107558 107559 107997 107998 107999 6 107995 107996 107998 108507 107994 108508 6 107997 107996 107999 108508 108509 108510 6 107998 107996 107559 107566 108000 108510 6 107999 107566 107567 107570 108001 108510 7 108000 107570 107571 108002 108510 108522 108511 6 108001 107571 107572 108003 108522 108523 7 108002 107572 107574 107577 108004 108520 108523 7 108003 107577 108005 108519 108517 108520 108541 5 108004 107577 107578 108006 108541 6 108005 107578 108007 108610 108540 108541 6 108006 107578 107579 107580 108008 108610 6 108007 107580 107581 108009 108010 108610 6 108008 107581 108010 108011 108012 107582 8 108008 108009 108011 108609 108537 108538 108540 108610 5 108010 108009 108012 108013 108609 6 108011 108009 108013 107587 107582 107585 7 108011 108012 107587 107729 108014 108608 108609 6 108013 107729 107730 108015 108607 108608 6 108014 107730 107734 108016 108611 108607 6 108015 107734 107735 108017 108611 108612 6 108016 107735 108018 108612 108613 108614 6 108017 107735 107736 108019 108614 108615 6 108018 107736 108020 108615 108618 108619 6 108019 107736 107737 108021 108022 108619 6 108020 107737 108022 108023 109766 107738 6 108020 108021 108023 108024 108619 108620 6 108022 108021 108024 108025 107742 109766 6 108022 108023 108025 108620 108621 108028 6 108024 108023 107742 107743 108026 108028 6 108025 107743 108027 108028 108029 108030 6 108026 107743 107744 107748 108030 108031 6 108025 108026 108029 108621 108024 108622 6 108028 108026 108030 108628 108622 108629 6 108029 108026 108027 108031 108033 108629 6 108030 108027 107748 108032 108033 108034 6 108031 107748 107749 108034 108035 108036 6 108030 108031 108034 108629 108630 108631 6 108033 108031 108032 108035 108631 108632 6 108034 108032 108036 107761 108635 108632 6 108035 108032 107749 107759 107760 107761 6 107784 107785 108038 108332 108333 108334 6 108037 107785 107787 108039 108041 108334 6 108038 107787 108040 108041 108042 108043 6 108039 107787 108043 108044 108045 107788 6 108038 108039 108042 108334 108335 108336 6 108041 108039 108043 108336 108337 108341 6 108042 108039 108040 108044 108341 108342 6 108043 108040 108045 108342 108343 108046 6 108044 108040 107788 107794 107795 108046 6 108045 107795 108047 107806 108343 108044 6 108046 107795 107806 107803 108048 107796 6 107803 108047 107796 107802 107801 108049 6 107801 108048 107796 107797 107799 107800 6 107930 107931 107933 108051 108345 108346 6 108050 107933 108052 108346 108347 108348 6 108051 107933 107934 108053 108054 108348 6 108052 107934 108054 108055 108056 108057 6 108052 108053 108055 108348 108349 108350 6 108054 108053 108056 108350 108351 108352 6 108055 108053 108057 108058 108352 108353 6 108056 108053 108058 108059 107935 107934 6 108056 108057 108059 108353 108354 108355 6 108058 108057 107935 108060 108355 108356 6 108059 107935 107936 107937 108061 108356 6 108060 107937 107938 108062 108356 108358 6 108061 107938 107939 107940 108063 108358 6 108062 107940 107941 108064 108359 108358 6 108063 107941 108065 108359 108360 108361 6 108064 107941 107942 108066 108361 108362 6 108065 107942 107943 107944 108067 108362 6 108066 107944 108068 108362 108363 108364 6 108067 107944 107945 108069 108364 108365 6 108068 107945 107946 108070 108365 108366 6 108069 107946 107947 108071 108366 108367 6 108070 107947 107948 108072 108367 108368 6 108071 107948 107949 108073 108368 108369 6 108072 107949 108074 108369 108370 108371 6 108073 107949 107950 108075 108371 108372 6 108074 107950 107951 108076 108372 108373 6 108075 107951 107953 107954 108077 108373 6 108076 107954 108078 108375 108373 108376 6 108077 107954 107955 107956 108079 108376 6 108078 107956 107957 108080 108376 108377 6 108079 107957 108081 108209 108377 108378 6 108080 107957 107958 107959 108082 108209 7 108081 107959 107960 107847 107848 108083 108209 6 108082 107848 107849 108084 108209 108210 6 108083 107849 107850 108085 108210 108211 6 108084 107850 108086 108211 108212 108213 6 108085 107850 107851 107852 108087 108213 6 108086 107852 108088 108213 108214 108215 6 108087 107852 107853 108089 108215 108090 6 108088 107853 107854 107855 107856 108090 5 108089 107856 108091 108215 108088 7 108090 107856 107857 108092 108215 108216 108217 5 108091 107857 108093 108217 108218 6 108092 107857 107858 108094 108218 108219 6 108093 107858 107859 107860 108095 108219 6 108094 107860 108096 108219 108220 108221 6 108095 107860 107861 108097 108221 108222 6 108096 107861 107862 108098 108222 108223 6 108097 107862 107863 108099 108223 108224 6 108098 107863 107864 108100 108224 108225 6 108099 107864 107865 108101 108225 108226 6 108100 107865 107866 108102 108226 108227 6 108101 107866 107867 107868 108103 108227 6 108102 107868 108104 108227 108228 108229 6 108103 107868 107869 108105 108229 108230 6 108104 107869 107870 107871 108106 108230 6 108105 107871 108107 108230 108231 108232 6 108106 107871 107872 108108 108232 108233 6 108107 107872 107873 107874 108109 108233 6 108108 107874 108110 108233 108234 108235 6 108109 107874 107875 107876 108111 108235 6 108110 107876 108112 108235 108236 108237 6 108111 107876 107877 107878 108113 108237 6 108112 107878 107879 108114 108237 108238 6 108113 107879 108115 108238 108239 108116 6 108114 107879 107880 107881 107882 108116 6 108115 107882 107883 108117 108239 108114 6 108116 107883 108118 108239 108240 108241 5 108117 107883 107884 108119 108241 6 108118 107884 107885 108120 108241 108242 6 108119 107885 107886 108121 108242 108243 6 108120 107886 107887 108122 108243 108244 6 108121 107887 108123 108244 108245 108246 6 108122 107887 107888 107889 108124 108246 6 108123 107889 107890 108125 108246 108247 6 108124 107890 107891 108126 108247 108248 6 108125 107891 107892 108127 108248 108249 6 108126 107892 107893 108128 108249 108250 6 108127 107893 107894 108129 108250 108251 6 108128 107894 108130 108251 108252 108253 6 108129 107894 107895 107896 108131 108253 6 108130 107896 107897 108132 108253 108254 5 108131 107897 107898 108133 108254 7 108132 107898 107899 108134 108254 108255 108256 5 108133 107899 107900 108135 108256 7 108134 107900 108136 108256 108257 108258 108259 6 108135 107900 107901 107902 108137 108259 6 108136 107902 108138 108259 108260 108261 6 108137 107902 107904 108139 108261 108262 6 108138 107904 107905 107906 108140 108262 6 108139 107906 108141 108262 108263 108264 6 108140 107906 107907 107908 108142 108264 6 108141 107908 108143 108264 108265 108266 6 108142 107908 107909 107910 108144 108266 6 108143 107910 107911 108145 108266 108267 6 108144 107911 108146 108267 108268 108269 6 108145 107911 107912 107913 108147 108269 6 108146 107913 108148 108269 108270 108271 6 108147 107913 107914 108149 108151 108271 5 108148 107914 108150 108151 107922 6 108149 107914 107915 107916 107919 107922 7 108148 108149 107922 107923 108152 108271 108272 5 108151 107923 108153 108272 108273 7 108152 107923 107924 108154 108273 108274 108275 6 108153 107924 108155 108156 108275 108276 7 108154 107924 108156 107925 107928 108157 107617 6 108154 108155 107617 107618 108158 108276 5 108155 107928 107929 107616 107617 6 108156 107618 108159 108276 108277 108278 6 108158 107618 107619 108160 108278 108279 7 108159 107619 107620 108161 108279 108280 108281 5 108160 107620 108162 108281 108282 7 108161 107620 107621 108163 108282 108283 108164 6 108162 107621 107622 107623 107624 108164 7 108163 107624 107625 107627 108165 108283 108162 6 108164 107627 107628 107630 108166 108283 6 108165 107630 108167 108168 108283 108282 6 108166 107630 108168 108169 108170 107631 6 108166 108167 108169 108282 108284 108285 6 108168 108167 108170 108285 108286 108287 6 108169 108167 107631 108171 108172 108287 6 108170 107631 108172 108173 107633 107632 6 108170 108171 108173 108287 108288 108289 6 108172 108171 107633 108174 108289 108290 6 108173 107633 107634 107636 108175 108290 6 108174 107636 107638 108176 108290 108291 6 108175 107638 108177 108291 108292 108293 6 108176 107638 107639 108178 108293 108294 6 108177 107639 108179 108294 108295 108296 6 108178 107639 107640 108180 108296 108297 6 108179 107640 108181 108307 108297 108308 6 108180 107640 107641 108182 108183 108308 6 108181 107641 108183 107644 107643 107642 6 108181 108182 107644 108184 108308 108309 6 108183 107644 107645 108185 108309 108310 7 108184 107645 107646 107647 108186 108310 108311 6 108185 107647 107648 108187 108311 108312 6 108186 107648 108188 108312 108313 108314 6 108187 107648 107649 108189 108314 108315 6 108188 107649 107650 108190 108315 108200 6 108189 107650 108191 108197 108199 108200 6 108190 107650 107651 108192 108197 108193 6 108191 107651 107652 107657 107658 108193 6 108192 107658 108194 108196 108197 108191 6 108193 107658 107659 107662 108195 108196 6 108194 107662 108196 108208 108204 107663 6 108194 108195 108193 108197 108198 108204 6 108193 108196 108198 108199 108190 108191 6 108197 108196 108199 108202 108203 108204 6 108197 108198 108190 108200 108201 108202 6 108190 108199 108201 108315 108189 108316 6 108200 108199 108202 108316 108317 108318 6 108201 108199 108198 108203 108205 108318 6 108202 108198 108204 108205 107699 108206 7 108203 108198 108206 108207 108208 108195 108196 5 108202 108203 107699 108318 107700 7 107699 108203 108204 107698 107669 107667 108207 6 107667 108206 108204 108208 107664 107665 5 108207 108204 108195 107663 107664 6 108080 108081 108082 108083 108210 108378 5 108209 108083 108084 108211 108378 6 108210 108084 108085 108212 108378 108379 6 108211 108085 108213 108379 108380 108381 6 108212 108085 108086 108087 108214 108381 6 108213 108087 108215 108381 108382 108216 6 108214 108087 108088 108090 108091 108216 6 108215 108091 108217 108382 108214 108383 6 108216 108091 108092 108218 108383 108384 6 108217 108092 108093 108219 108384 108385 6 108218 108093 108094 108095 108220 108385 5 108219 108095 108221 108385 108386 6 108220 108095 108096 108222 108386 108387 6 108221 108096 108097 108223 108387 108388 6 108222 108097 108098 108224 108388 108389 6 108223 108098 108099 108225 108389 108390 6 108224 108099 108100 108226 108390 108391 6 108225 108100 108101 108227 108391 108392 6 108226 108101 108102 108103 108228 108392 6 108227 108103 108229 108392 108393 108394 6 108228 108103 108104 108230 108394 108395 6 108229 108104 108105 108106 108231 108395 6 108230 108106 108232 108395 108396 108397 6 108231 108106 108107 108233 108397 108398 6 108232 108107 108108 108109 108234 108398 6 108233 108109 108235 108398 108399 108400 6 108234 108109 108110 108111 108236 108400 6 108235 108111 108237 108400 108401 108402 6 108236 108111 108112 108113 108238 108402 6 108237 108113 108114 108239 108402 108403 6 108238 108114 108116 108117 108240 108403 6 108239 108117 108241 108403 108404 108405 6 108240 108117 108118 108119 108242 108405 6 108241 108119 108120 108243 108405 108406 6 108242 108120 108121 108244 108406 108407 6 108243 108121 108122 108245 108407 108408 6 108244 108122 108246 108408 108409 108410 6 108245 108122 108123 108124 108247 108410 6 108246 108124 108125 108248 108410 108411 6 108247 108125 108126 108249 108411 108412 6 108248 108126 108127 108250 108412 108413 6 108249 108127 108128 108251 108413 108414 6 108250 108128 108129 108252 108414 108415 6 108251 108129 108253 108415 108416 108417 6 108252 108129 108130 108131 108254 108417 7 108253 108131 108132 108133 108255 108417 108418 5 108254 108133 108256 108418 108419 7 108255 108133 108134 108135 108257 108419 108420 5 108256 108135 108258 108420 108421 6 108257 108135 108259 108421 108422 108260 5 108258 108135 108136 108137 108260 6 108259 108137 108261 108422 108258 108423 6 108260 108137 108138 108262 108423 108424 6 108261 108138 108139 108140 108263 108424 6 108262 108140 108264 108424 108425 108426 6 108263 108140 108141 108142 108265 108426 6 108264 108142 108266 108426 108427 108428 7 108265 108142 108143 108144 108267 108428 108429 6 108266 108144 108145 108268 108429 108430 6 108267 108145 108269 108430 108431 108432 6 108268 108145 108146 108147 108270 108432 6 108269 108147 108271 108432 108433 108434 6 108270 108147 108148 108151 108272 108434 5 108271 108151 108152 108273 108434 7 108272 108152 108153 108274 108434 108435 108436 6 108273 108153 108275 108436 108437 108438 6 108274 108153 108154 108276 108438 108277 5 108275 108154 108156 108158 108277 6 108276 108158 108278 108438 108275 108439 6 108277 108158 108159 108279 108439 108440 7 108278 108159 108160 108280 108440 108441 108445 6 108279 108160 108281 108445 108446 108284 5 108280 108160 108161 108282 108284 7 108281 108161 108162 108283 108166 108168 108284 5 108282 108162 108164 108165 108166 6 108282 108168 108285 108446 108280 108281 6 108284 108168 108169 108286 108446 108447 6 108285 108169 108287 108447 108449 108450 6 108286 108169 108170 108172 108288 108450 6 108287 108172 108289 108450 108451 108452 6 108288 108172 108173 108290 108452 108453 6 108289 108173 108174 108175 108291 108453 6 108290 108175 108176 108292 108453 108454 6 108291 108176 108293 108454 108455 108456 6 108292 108176 108177 108294 108456 108457 6 108293 108177 108178 108295 108457 108458 6 108294 108178 108296 108461 108458 108299 6 108295 108178 108179 108297 108298 108299 6 108296 108179 108298 108307 108305 108180 6 108296 108297 108299 108300 108301 108305 6 108296 108298 108300 108461 108295 108462 6 108299 108298 108301 108302 108462 108463 6 108300 108298 108302 108303 108304 108305 6 108300 108301 108303 108463 108464 108465 6 108302 108301 108304 108465 108466 108467 6 108303 108301 108305 108306 108470 108467 6 108304 108301 108298 108306 108307 108297 6 108304 108305 108307 108470 108471 108472 6 108306 108305 108297 108180 108308 108472 6 108307 108180 108181 108183 108309 108472 6 108308 108183 108184 108310 108472 108473 6 108309 108184 108185 108311 108473 108474 5 108310 108185 108186 108312 108474 6 108311 108186 108187 108313 108474 108475 6 108312 108187 108314 108478 108475 108479 6 108313 108187 108188 108315 108479 108480 6 108314 108188 108189 108200 108316 108480 5 108315 108200 108201 108317 108480 6 108316 108201 108318 108480 108481 107708 7 108317 108201 108202 108205 107700 107707 107708 6 107765 107766 108320 108321 108853 108854 6 108319 107766 107767 108321 108322 107769 7 108319 108320 108322 108854 108855 108856 108323 5 108321 108320 107769 107771 108323 6 108322 107771 108324 108856 108321 108857 6 108323 107771 107772 108325 108857 108328 6 108324 107772 107777 108326 108327 108328 6 108325 107777 107778 107779 107780 108327 6 108326 107780 108325 108328 108329 107781 6 108325 108327 108329 108857 108324 108858 6 108328 108327 107781 107782 108330 108858 6 108329 107782 107783 108331 108858 108859 6 108330 107783 108332 108865 108862 108859 6 108331 107783 107784 108037 108333 108865 6 108332 108037 108334 108866 108865 108867 6 108333 108037 108038 108041 108335 108867 6 108334 108041 108336 108867 108868 108869 6 108335 108041 108042 108337 108338 108869 6 108336 108042 108338 108339 108340 108341 6 108336 108337 108339 108869 108870 108874 6 108338 108337 108340 108874 108875 108347 6 108339 108337 108341 108347 108346 108876 6 108340 108337 108042 108043 108342 108876 6 108341 108043 108044 108343 108344 108876 6 108342 108044 108344 107807 107806 108046 6 108342 108343 107807 107808 108345 108876 6 108344 107808 107930 108050 108346 108876 6 108345 108050 108051 108347 108340 108876 6 108346 108051 108348 108875 108339 108340 6 108347 108051 108052 108054 108349 108875 6 108348 108054 108350 108902 108875 108901 6 108349 108054 108055 108351 108901 108903 6 108350 108055 108352 108903 108904 108905 6 108351 108055 108056 108353 108905 108906 6 108352 108056 108058 108354 108906 108907 6 108353 108058 108355 108907 108908 108909 6 108354 108058 108059 108356 108357 108909 6 108355 108059 108060 108061 108357 108358 6 108355 108356 108358 108359 108909 108910 6 108357 108356 108061 108062 108359 108063 6 108357 108358 108063 108064 108360 108910 6 108359 108064 108361 108912 108910 108913 6 108360 108064 108065 108362 108913 108914 6 108361 108065 108066 108067 108363 108914 6 108362 108067 108364 108916 108914 108917 6 108363 108067 108068 108365 108917 108918 6 108364 108068 108069 108366 108918 108919 6 108365 108069 108070 108367 108919 108920 6 108366 108070 108071 108368 108920 108921 6 108367 108071 108072 108369 108921 108922 6 108368 108072 108073 108370 108922 108923 6 108369 108073 108371 108923 108924 108925 6 108370 108073 108074 108372 108925 108926 6 108371 108074 108075 108373 108374 108926 6 108372 108075 108076 108374 108375 108077 6 108372 108373 108375 108926 108927 108928 6 108374 108373 108077 108376 108928 108929 6 108375 108077 108078 108079 108377 108929 6 108376 108079 108080 108378 108929 108379 6 108377 108080 108209 108210 108211 108379 7 108378 108211 108212 108380 108929 108377 108930 5 108379 108212 108381 108930 108931 7 108380 108212 108213 108214 108382 108743 108931 6 108381 108214 108216 108383 108641 108743 6 108382 108216 108217 108384 108641 108642 6 108383 108217 108218 108385 108642 108643 6 108384 108218 108219 108220 108386 108643 7 108385 108220 108221 108387 108643 108644 108645 6 108386 108221 108222 108388 108645 108646 6 108387 108222 108223 108389 108646 108647 6 108388 108223 108224 108390 108647 108648 7 108389 108224 108225 108391 108648 108649 108650 6 108390 108225 108226 108392 108650 108651 6 108391 108226 108227 108228 108393 108651 6 108392 108228 108394 108651 108652 108653 6 108393 108228 108229 108395 108653 108654 6 108394 108229 108230 108231 108396 108654 5 108395 108231 108397 108654 108655 6 108396 108231 108232 108398 108655 108656 7 108397 108232 108233 108234 108399 108656 108657 5 108398 108234 108400 108657 108658 7 108399 108234 108235 108236 108401 108658 108659 5 108400 108236 108402 108659 108660 6 108401 108236 108237 108238 108403 108660 6 108402 108238 108239 108240 108404 108660 6 108403 108240 108405 108660 108661 108662 6 108404 108240 108241 108242 108406 108662 6 108405 108242 108243 108407 108662 108663 7 108406 108243 108244 108408 108663 108664 108665 6 108407 108244 108245 108409 108665 108666 6 108408 108245 108410 108666 108667 108668 6 108409 108245 108246 108247 108411 108668 6 108410 108247 108248 108412 108668 108669 6 108411 108248 108249 108413 108669 108670 6 108412 108249 108250 108414 108670 108671 6 108413 108250 108251 108415 108671 108672 6 108414 108251 108252 108416 108672 108673 6 108415 108252 108417 108673 108674 108675 6 108416 108252 108253 108254 108418 108675 6 108417 108254 108255 108419 108675 108676 6 108418 108255 108256 108420 108676 108677 6 108419 108256 108257 108421 108677 108678 6 108420 108257 108258 108422 108678 108679 6 108421 108258 108260 108423 108679 108680 7 108422 108260 108261 108424 108680 108681 108682 6 108423 108261 108262 108263 108425 108682 6 108424 108263 108426 108682 108683 108687 6 108425 108263 108264 108265 108427 108687 6 108426 108265 108428 108687 108688 108689 6 108427 108265 108266 108429 108689 108690 5 108428 108266 108267 108430 108690 6 108429 108267 108268 108431 108542 108690 6 108430 108268 108432 108542 108543 108544 6 108431 108268 108269 108270 108433 108544 6 108432 108270 108434 108544 108545 108546 7 108433 108270 108271 108272 108273 108435 108546 6 108434 108273 108436 108546 108547 108548 6 108435 108273 108274 108437 108548 108549 6 108436 108274 108438 108549 108550 108439 5 108437 108274 108275 108277 108439 7 108438 108277 108278 108440 108550 108437 108551 6 108439 108278 108279 108441 108442 108551 6 108440 108279 108442 108443 108444 108445 6 108440 108441 108443 108551 108552 108553 6 108442 108441 108444 108553 108554 108555 7 108443 108441 108445 108446 108447 108448 108555 5 108444 108441 108279 108280 108446 6 108445 108280 108284 108285 108447 108444 6 108446 108285 108286 108444 108448 108449 5 108444 108447 108449 108555 108556 6 108448 108447 108286 108450 108556 108557 7 108449 108286 108287 108288 108451 108557 108558 6 108450 108288 108452 108558 108559 108560 6 108451 108288 108289 108453 108560 108561 6 108452 108289 108290 108291 108454 108561 6 108453 108291 108292 108455 108561 108562 6 108454 108292 108456 108562 108563 108564 6 108455 108292 108293 108457 108564 108565 6 108456 108293 108294 108458 108459 108565 6 108457 108294 108459 108460 108461 108295 6 108457 108458 108460 108565 108566 108567 6 108459 108458 108461 108567 108568 108569 6 108460 108458 108295 108299 108462 108569 6 108461 108299 108300 108463 108569 108570 6 108462 108300 108302 108464 108570 108571 6 108463 108302 108465 108571 108572 108573 6 108464 108302 108303 108466 108573 108487 7 108465 108303 108467 108468 107962 107963 108487 6 108466 108303 108468 108469 108470 108304 6 108466 108467 108469 107962 109763 109764 7 108468 108467 108470 109094 108485 109763 108486 6 108469 108467 108304 108306 108471 109094 6 108470 108306 108472 108476 109094 108473 6 108471 108306 108307 108308 108309 108473 6 108472 108309 108310 108474 108476 108471 6 108473 108310 108311 108312 108475 108476 6 108474 108312 108476 108477 108478 108313 7 108474 108475 108477 108485 109094 108471 108473 6 108476 108475 108478 108483 108484 108485 6 108477 108475 108313 108479 108483 108482 6 108478 108313 108314 108480 108482 108481 6 108479 108314 108315 108316 108317 108481 6 108480 108317 107708 107709 108482 108479 7 108481 107709 107710 107713 108483 108478 108479 5 108482 107713 108484 108477 108478 6 108483 107713 107714 108477 108485 108486 6 108477 108484 108486 108469 109094 108476 6 108485 108484 109765 109763 108469 107714 5 108466 107963 108488 108573 108465 7 108487 107963 107964 107965 108489 108573 108574 5 108488 107965 107966 108490 108574 7 108489 107966 107967 108491 108492 108574 108575 6 108490 107967 108492 108493 107969 107968 5 108490 108491 108493 108575 108576 6 108492 108491 107969 108494 108576 108577 6 108493 107969 107970 108495 108577 108578 6 108494 107970 107971 108496 108578 108579 6 108495 107971 107974 108497 108498 108579 6 108496 107974 108498 108499 108500 107975 6 108496 108497 108499 108579 108580 108581 6 108498 108497 108500 108581 108582 108501 6 108499 108497 107975 107981 107983 108501 6 108500 107983 108502 108582 108499 108583 6 108501 107983 107984 108503 108586 108583 6 108502 107984 108504 108527 108586 108526 6 108503 107984 107985 108505 108526 108588 6 108504 107985 108506 108588 108513 108589 6 108505 107985 107986 107993 108507 108589 6 108506 107993 107994 107997 108508 108589 6 108507 107997 107998 108509 108513 108589 6 108508 107998 108510 108511 108512 108513 6 108509 107998 107999 108000 108001 108511 6 108509 108510 108512 108521 108522 108001 6 108509 108511 108513 108514 108515 108521 7 108509 108512 108514 108588 108505 108589 108508 6 108513 108512 108515 108516 108526 108588 6 108514 108512 108516 108517 108520 108521 6 108514 108515 108517 108518 108524 108526 6 108516 108515 108518 108519 108004 108520 6 108516 108517 108519 108524 108525 108531 6 108518 108517 108004 108541 108539 108531 6 108004 108517 108003 108515 108521 108523 6 108520 108515 108512 108511 108522 108523 5 108521 108511 108001 108002 108523 5 108522 108002 108521 108520 108003 6 108516 108518 108525 108526 108527 108528 6 108524 108518 108528 108529 108530 108531 7 108516 108524 108527 108503 108504 108588 108514 5 108526 108524 108528 108586 108503 6 108527 108524 108525 108529 108587 108586 6 108528 108525 108530 108602 108587 108603 6 108529 108525 108531 108532 108533 108603 6 108530 108525 108532 108519 108539 108518 6 108530 108531 108533 108534 108538 108539 6 108530 108532 108534 108535 108603 108604 6 108533 108532 108535 108536 108537 108538 6 108533 108534 108536 108604 108605 108606 6 108535 108534 108537 108606 108607 108608 6 108536 108534 108538 108608 108609 108010 6 108537 108534 108532 108539 108540 108010 6 108538 108532 108540 108541 108519 108531 6 108538 108539 108541 108010 108610 108006 6 108540 108539 108519 108006 108005 108004 6 108430 108431 108543 108690 108691 108692 6 108542 108431 108544 108692 108693 108694 6 108543 108431 108432 108433 108545 108694 6 108544 108433 108546 108694 108695 108547 5 108545 108433 108434 108435 108547 6 108546 108435 108548 108695 108545 108696 6 108547 108435 108436 108549 108696 108697 6 108548 108436 108437 108550 108697 108698 6 108549 108437 108439 108551 108698 108552 5 108550 108439 108440 108442 108552 7 108551 108442 108553 108698 108550 108699 108700 6 108552 108442 108443 108554 108700 108701 6 108553 108443 108555 108701 108702 108703 6 108554 108443 108444 108448 108556 108703 6 108555 108448 108449 108557 108703 108704 6 108556 108449 108450 108558 108704 108705 6 108557 108450 108451 108559 108705 108706 6 108558 108451 108560 108706 108707 108708 5 108559 108451 108452 108561 108708 6 108560 108452 108453 108454 108562 108708 6 108561 108454 108455 108563 108708 108709 6 108562 108455 108564 108709 108710 108711 6 108563 108455 108456 108565 108711 108712 7 108564 108456 108457 108459 108566 108712 108713 5 108565 108459 108567 108713 108714 6 108566 108459 108460 108568 108714 108715 6 108567 108460 108569 108715 108716 108717 6 108568 108460 108461 108462 108570 108717 7 108569 108462 108463 108571 108590 108592 108717 5 108570 108463 108464 108572 108590 7 108571 108464 108573 108574 108575 108576 108590 6 108572 108464 108465 108487 108488 108574 6 108573 108488 108489 108490 108575 108572 5 108574 108490 108492 108576 108572 7 108575 108492 108493 108577 108572 108590 108591 6 108576 108493 108494 108578 108594 108591 6 108577 108494 108495 108579 108594 108595 6 108578 108495 108496 108498 108580 108595 6 108579 108498 108581 108595 108596 108597 6 108580 108498 108499 108582 108597 108598 6 108581 108499 108501 108583 108584 108598 6 108582 108501 108584 108585 108586 108502 6 108582 108583 108585 108598 108599 108600 6 108584 108583 108586 108587 108600 108601 7 108585 108583 108587 108528 108527 108503 108502 6 108585 108586 108528 108601 108602 108529 5 108526 108504 108505 108513 108514 5 108513 108505 108506 108508 108507 6 108572 108576 108591 108571 108570 108592 6 108590 108576 108592 108593 108594 108577 5 108570 108590 108591 108593 108717 7 108592 108591 108594 108717 108716 108718 108719 6 108593 108591 108577 108578 108595 108719 7 108594 108578 108579 108580 108596 108719 108720 6 108595 108580 108597 108720 108721 108722 6 108596 108580 108581 108598 108722 108723 6 108597 108581 108582 108584 108599 108723 6 108598 108584 108600 108723 108724 108725 6 108599 108584 108585 108601 108725 108726 6 108600 108585 108587 108602 108726 108727 5 108601 108587 108529 108603 108727 6 108602 108529 108530 108533 108604 108727 6 108603 108533 108535 108605 108727 108728 6 108604 108535 108606 108728 108731 108732 6 108605 108535 108536 108607 108611 108732 6 108606 108536 108608 108611 108015 108014 6 108607 108536 108537 108609 108014 108013 5 108608 108537 108010 108013 108011 5 108010 108540 108008 108007 108006 6 108606 108607 108015 108016 108612 108732 6 108611 108016 108017 108613 108732 108733 6 108612 108017 108614 108733 108734 108735 6 108613 108017 108018 108615 108616 108735 6 108614 108018 108019 108616 108617 108618 6 108614 108615 108617 108735 108736 108737 6 108616 108615 108618 108737 108738 108739 6 108617 108615 108019 108619 108739 108742 6 108618 108019 108020 108022 108620 108742 6 108619 108022 108024 108621 108624 108742 6 108620 108024 108028 108622 108623 108624 6 108621 108028 108623 108627 108628 108029 6 108621 108622 108624 108625 108626 108627 6 108621 108623 108625 108741 108742 108620 6 108624 108623 108626 108837 108741 108838 6 108625 108623 108627 108838 108839 108840 6 108626 108623 108622 108628 108840 108841 6 108627 108622 108029 108629 108841 108842 6 108628 108029 108030 108033 108630 108842 6 108629 108033 108631 108842 108843 108844 6 108630 108033 108034 108632 108633 108844 6 108631 108034 108633 108634 108635 108035 6 108631 108632 108634 108844 108845 108846 6 108633 108632 108635 108636 108637 108846 6 108634 108632 108636 108640 107761 108035 6 108634 108635 108637 108638 108639 108640 6 108634 108636 108638 108846 108848 108849 6 108637 108636 108639 108849 108850 108851 6 108638 108636 108640 108851 108852 107762 5 108639 108636 108635 107761 107762 6 108382 108383 108642 108743 108744 108745 6 108641 108383 108384 108643 108745 108746 6 108642 108384 108385 108386 108644 108746 6 108643 108386 108645 108746 108747 108748 6 108644 108386 108387 108646 108748 108749 6 108645 108387 108388 108647 108749 108750 6 108646 108388 108389 108648 108750 108751 6 108647 108389 108390 108649 108751 108752 6 108648 108390 108650 108752 108753 108754 5 108649 108390 108391 108651 108754 6 108650 108391 108392 108393 108652 108754 6 108651 108393 108653 108754 108755 108756 6 108652 108393 108394 108654 108756 108757 6 108653 108394 108395 108396 108655 108757 6 108654 108396 108397 108656 108757 108758 7 108655 108397 108398 108657 108758 108759 108760 5 108656 108398 108399 108658 108760 7 108657 108399 108400 108659 108760 108761 108762 5 108658 108400 108401 108660 108762 8 108659 108401 108402 108403 108404 108661 108762 108763 5 108660 108404 108662 108763 108764 6 108661 108404 108405 108406 108663 108764 6 108662 108406 108407 108664 108764 108765 6 108663 108407 108665 108765 108766 108767 5 108664 108407 108408 108666 108767 6 108665 108408 108409 108667 108767 108768 6 108666 108409 108668 108768 108769 108770 6 108667 108409 108410 108411 108669 108770 6 108668 108411 108412 108670 108770 108771 6 108669 108412 108413 108671 108771 108772 6 108670 108413 108414 108672 108772 108773 6 108671 108414 108415 108673 108773 108774 6 108672 108415 108416 108674 108774 108775 6 108673 108416 108675 108775 108776 108777 6 108674 108416 108417 108418 108676 108777 6 108675 108418 108419 108677 108777 108778 6 108676 108419 108420 108678 108778 108779 6 108677 108420 108421 108679 108779 108780 6 108678 108421 108422 108680 108780 108781 6 108679 108422 108423 108681 108781 108782 6 108680 108423 108682 108782 108783 108684 6 108681 108423 108424 108425 108683 108684 6 108682 108425 108684 108685 108686 108687 5 108682 108683 108685 108783 108681 6 108684 108683 108686 108783 108784 108785 6 108685 108683 108687 108785 108786 108787 7 108686 108683 108425 108426 108427 108688 108787 5 108687 108427 108689 108787 108788 6 108688 108427 108428 108690 108788 108789 7 108689 108428 108429 108430 108542 108691 108789 6 108690 108542 108692 108789 108790 108791 5 108691 108542 108543 108693 108791 7 108692 108543 108694 108791 108792 108793 108794 6 108693 108543 108544 108545 108695 108794 6 108694 108545 108547 108696 108794 108795 7 108695 108547 108548 108697 108795 108796 108797 6 108696 108548 108549 108698 108797 108798 6 108697 108549 108550 108552 108699 108798 6 108698 108552 108700 108798 108799 108800 6 108699 108552 108553 108701 108800 108803 6 108700 108553 108554 108702 108803 108804 6 108701 108554 108703 108804 108805 108806 6 108702 108554 108555 108556 108704 108806 6 108703 108556 108557 108705 108806 108807 6 108704 108557 108558 108706 108807 108808 6 108705 108558 108559 108707 108808 108809 6 108706 108559 108708 108809 108810 108811 7 108707 108559 108560 108561 108562 108709 108811 5 108708 108562 108563 108710 108811 7 108709 108563 108711 108811 108812 108813 108814 6 108710 108563 108564 108712 108814 108815 6 108711 108564 108565 108713 108815 108816 5 108712 108565 108566 108714 108816 7 108713 108566 108567 108715 108816 108817 108818 6 108714 108567 108568 108716 108818 108819 6 108715 108568 108717 108593 108718 108819 6 108716 108568 108569 108570 108592 108593 6 108716 108593 108719 108819 108820 108720 5 108718 108593 108594 108595 108720 6 108719 108595 108596 108721 108820 108718 6 108720 108596 108722 108820 108821 108822 5 108721 108596 108597 108723 108822 6 108722 108597 108598 108599 108724 108822 6 108723 108599 108725 108822 108823 108824 6 108724 108599 108600 108726 108824 108825 6 108725 108600 108601 108727 108825 108729 7 108726 108601 108602 108603 108604 108728 108729 6 108727 108604 108605 108729 108730 108731 5 108727 108728 108730 108825 108726 6 108729 108728 108731 108825 108827 108828 6 108730 108728 108605 108732 108828 108829 7 108731 108605 108606 108611 108612 108733 108829 6 108732 108612 108613 108734 108830 108829 6 108733 108613 108735 108830 108831 108736 5 108734 108613 108614 108616 108736 6 108735 108616 108737 108831 108734 108832 6 108736 108616 108617 108738 108832 108833 6 108737 108617 108739 108740 108833 108834 6 108738 108617 108618 108740 108741 108742 6 108738 108739 108741 108834 108835 108836 7 108740 108739 108742 108624 108836 108837 108625 6 108741 108739 108624 108620 108619 108618 6 108381 108382 108641 108744 108931 108932 5 108743 108641 108745 108932 108933 6 108744 108641 108642 108746 108933 108934 6 108745 108642 108643 108644 108747 108934 6 108746 108644 108748 108934 108935 108936 6 108747 108644 108645 108749 108936 108937 6 108748 108645 108646 108750 108937 108938 6 108749 108646 108647 108751 108938 108939 6 108750 108647 108648 108752 108939 108940 6 108751 108648 108649 108753 108940 108941 6 108752 108649 108754 108941 108942 108943 7 108753 108649 108650 108651 108652 108755 108943 5 108754 108652 108756 108943 108944 6 108755 108652 108653 108757 108944 108945 6 108756 108653 108654 108655 108758 108945 7 108757 108655 108656 108759 108945 108946 108947 5 108758 108656 108760 108947 108948 6 108759 108656 108657 108658 108761 108948 6 108760 108658 108762 108948 108949 108950 6 108761 108658 108659 108660 108763 108950 5 108762 108660 108661 108764 108950 7 108763 108661 108662 108663 108765 108950 108951 6 108764 108663 108664 108766 108951 108952 6 108765 108664 108767 108952 108953 108954 6 108766 108664 108665 108666 108768 108954 6 108767 108666 108667 108769 108954 108955 6 108768 108667 108770 108955 108956 108957 6 108769 108667 108668 108669 108771 108957 6 108770 108669 108670 108772 108957 108958 6 108771 108670 108671 108773 108958 108959 6 108772 108671 108672 108774 108959 108960 6 108773 108672 108673 108775 108960 108961 6 108774 108673 108674 108776 108961 108962 6 108775 108674 108777 108962 108963 108964 6 108776 108674 108675 108676 108778 108964 6 108777 108676 108677 108779 108964 108965 6 108778 108677 108678 108780 108965 108966 6 108779 108678 108679 108781 108966 108967 6 108780 108679 108680 108782 108967 108968 6 108781 108680 108681 108783 108968 108969 6 108782 108681 108684 108685 108784 108969 6 108783 108685 108785 108969 108970 108971 6 108784 108685 108686 108786 108971 108972 6 108785 108686 108787 108972 108973 108974 6 108786 108686 108687 108688 108788 108974 6 108787 108688 108689 108789 108974 108975 6 108788 108689 108690 108691 108790 108975 6 108789 108691 108791 108975 108976 108977 6 108790 108691 108692 108693 108792 108977 6 108791 108693 108793 108977 108978 108979 6 108792 108693 108794 108979 108980 108795 5 108793 108693 108694 108695 108795 6 108794 108695 108696 108796 108980 108793 6 108795 108696 108797 108980 108981 108982 6 108796 108696 108697 108798 108982 108799 5 108797 108697 108698 108699 108799 6 108798 108699 108800 108801 108982 108797 6 108799 108699 108700 108801 108802 108803 6 108799 108800 108802 108982 108983 108984 6 108801 108800 108803 108984 108985 108986 6 108802 108800 108700 108701 108804 108986 6 108803 108701 108702 108805 108986 108987 6 108804 108702 108806 108987 108988 108989 6 108805 108702 108703 108704 108807 108989 6 108806 108704 108705 108808 108989 108990 7 108807 108705 108706 108809 108992 108990 108993 5 108808 108706 108707 108810 108993 6 108809 108707 108811 108993 108994 108812 6 108810 108707 108708 108709 108710 108812 6 108811 108710 108813 108994 108810 108995 6 108812 108710 108814 108995 108996 108997 6 108813 108710 108711 108815 108997 108998 5 108814 108711 108712 108816 108998 7 108815 108712 108713 108714 108817 108998 108999 6 108816 108714 108818 108999 109000 109001 6 108817 108714 108715 108819 109001 109002 6 108818 108715 108716 108718 108820 109002 6 108819 108718 108720 108721 108821 109002 6 108820 108721 108822 109002 109003 108823 6 108821 108721 108722 108723 108724 108823 6 108822 108724 108824 109003 108821 109004 6 108823 108724 108725 108825 108826 109004 7 108824 108725 108726 108729 108730 108826 108827 6 108824 108825 108827 109004 109005 109006 6 108826 108825 108730 108828 109012 109006 6 108827 108730 108731 108829 108830 109012 5 108828 108731 108830 108733 108732 7 108828 108829 108733 108734 108831 109011 109012 6 108830 108734 108736 108832 109013 109011 7 108831 108736 108737 108833 109013 109014 109015 6 108832 108737 108738 108834 109015 109016 6 108833 108738 108740 108835 109016 109017 6 108834 108740 108836 109017 109018 109019 6 108835 108740 108741 108837 109019 109020 5 108836 108741 108625 108838 109020 6 108837 108625 108626 108839 109020 109021 6 108838 108626 108840 109021 109022 109023 6 108839 108626 108627 108841 109023 109024 6 108840 108627 108628 108842 109024 109025 6 108841 108628 108629 108630 108843 109025 6 108842 108630 108844 109025 109026 109030 6 108843 108630 108631 108633 108845 109030 6 108844 108633 108846 108847 109031 109030 6 108845 108633 108634 108637 108847 108848 6 108845 108846 108848 109031 109032 109033 6 108847 108846 108637 108849 109042 109033 6 108848 108637 108638 108850 109043 109042 6 108849 108638 108851 109043 109044 109045 6 108850 108638 108639 108852 109045 109048 6 108851 108639 107762 107763 108853 109048 6 108852 107763 107765 108319 108854 109048 6 108853 108319 108321 108855 109047 109048 6 108854 108321 108856 109047 109049 109050 5 108855 108321 108323 108857 109050 7 108856 108323 108324 108328 108858 109050 108860 6 108857 108328 108329 108330 108859 108860 6 108858 108330 108860 108861 108862 108331 6 108858 108859 108861 109050 108857 109051 6 108860 108859 108862 108863 109051 109052 6 108861 108859 108863 108864 108865 108331 6 108861 108862 108864 108877 109058 109052 6 108863 108862 108865 108866 108877 108878 6 108864 108862 108866 108333 108332 108331 6 108864 108865 108333 108867 108878 108879 6 108866 108333 108334 108335 108868 108879 6 108867 108335 108869 108879 108880 108871 6 108868 108335 108336 108338 108870 108871 6 108869 108338 108871 108872 108873 108874 6 108869 108870 108872 108894 108880 108868 6 108871 108870 108873 108896 108894 108897 6 108872 108870 108874 108897 108898 108902 6 108873 108870 108338 108339 108875 108902 6 108874 108339 108347 108902 108349 108348 6 108346 108340 108341 108342 108344 108345 5 108863 108864 108878 109058 108882 6 108877 108864 108866 108879 108881 108882 6 108878 108866 108867 108868 108880 108881 6 108879 108868 108881 108893 108894 108871 6 108879 108880 108878 108882 108883 108893 6 108878 108881 108883 108884 109058 108877 6 108882 108881 108884 108885 108892 108893 6 108882 108883 108885 108886 108887 109058 6 108884 108883 108886 108890 108891 108892 6 108884 108885 108887 108888 108889 108890 6 108884 108886 108888 109058 109057 109059 6 108887 108886 108889 109059 109060 109061 6 108888 108886 108890 109061 109062 109063 6 108889 108886 108885 108891 109063 109064 6 108890 108885 108892 109064 109065 109066 6 108891 108885 108883 108893 109066 108895 6 108892 108883 108881 108880 108894 108895 6 108893 108880 108895 108896 108872 108871 6 108893 108894 108896 109066 108892 109067 6 108895 108894 108872 108897 109067 109068 6 108896 108872 108873 108898 108899 109068 6 108897 108873 108899 108900 108901 108902 6 108897 108898 108900 109068 109069 109070 6 108899 108898 108901 109070 109071 108903 6 108900 108898 108902 108349 108350 108903 6 108901 108898 108873 108874 108875 108349 6 108901 108350 108351 108904 109071 108900 6 108903 108351 108905 109071 109072 109073 6 108904 108351 108352 108906 109073 109074 6 108905 108352 108353 108907 109074 109075 6 108906 108353 108354 108908 109075 109076 6 108907 108354 108909 109076 109077 108911 6 108908 108354 108355 108357 108910 108911 6 108909 108357 108911 108912 108360 108359 6 108909 108910 108912 109077 108908 109078 6 108911 108910 108360 108913 109078 109079 6 108912 108360 108361 108914 108915 109079 6 108913 108361 108362 108915 108916 108363 6 108913 108914 108916 109079 109080 109081 6 108915 108914 108363 108917 109081 109082 6 108916 108363 108364 108918 109082 109083 6 108917 108364 108365 108919 109083 109084 6 108918 108365 108366 108920 109093 109084 6 108919 108366 108367 108921 109093 109100 6 108920 108367 108368 108922 109100 109101 6 108921 108368 108369 108923 109101 109102 6 108922 108369 108370 108924 109102 109103 6 108923 108370 108925 109103 109104 109105 6 108924 108370 108371 108926 109105 109106 6 108925 108371 108372 108374 108927 109106 6 108926 108374 108928 109106 109107 108931 6 108927 108374 108375 108929 108931 108930 6 108928 108375 108376 108377 108379 108930 5 108929 108379 108380 108931 108928 8 108930 108380 108381 108743 108932 109107 108927 108928 5 108931 108743 108744 108933 109107 8 108932 108744 108745 108934 109107 109106 109105 109108 6 108933 108745 108746 108747 108935 109108 6 108934 108747 108936 109108 109109 109110 6 108935 108747 108748 108937 109110 109111 6 108936 108748 108749 108938 109111 109112 6 108937 108749 108750 108939 109112 109113 6 108938 108750 108751 108940 109113 109114 6 108939 108751 108752 108941 109114 109115 6 108940 108752 108753 108942 109115 109116 6 108941 108753 108943 109116 109117 108944 5 108942 108753 108754 108755 108944 7 108943 108755 108756 108945 109117 108942 109118 7 108944 108756 108757 108758 108946 109118 109119 5 108945 108758 108947 109119 109120 6 108946 108758 108759 108948 109120 109121 7 108947 108759 108760 108761 108949 109121 109122 6 108948 108761 108950 109122 109123 108951 6 108949 108761 108762 108763 108764 108951 6 108950 108764 108765 108952 109123 108949 6 108951 108765 108766 108953 109123 109124 6 108952 108766 108954 109124 109125 109126 6 108953 108766 108767 108768 108955 109126 6 108954 108768 108769 108956 109126 109127 6 108955 108769 108957 109127 109128 109129 6 108956 108769 108770 108771 108958 109129 6 108957 108771 108772 108959 109129 109130 6 108958 108772 108773 108960 109130 109131 6 108959 108773 108774 108961 109131 109132 6 108960 108774 108775 108962 109132 109133 6 108961 108775 108776 108963 109133 109134 6 108962 108776 108964 109134 109135 109136 6 108963 108776 108777 108778 108965 109136 6 108964 108778 108779 108966 109136 109137 6 108965 108779 108780 108967 109137 109138 6 108966 108780 108781 108968 109138 109139 6 108967 108781 108782 108969 109139 109140 7 108968 108782 108783 108784 108970 109140 109141 5 108969 108784 108971 109141 109142 7 108970 108784 108785 108972 109142 109143 109144 6 108971 108785 108786 108973 109144 109145 6 108972 108786 108974 109145 109146 109147 6 108973 108786 108787 108788 108975 109147 6 108974 108788 108789 108790 108976 109147 6 108975 108790 108977 109147 109148 109149 6 108976 108790 108791 108792 108978 109149 6 108977 108792 108979 109149 109150 109151 6 108978 108792 108793 108980 109151 109152 6 108979 108793 108795 108796 108981 109152 6 108980 108796 108982 109152 109153 108983 6 108981 108796 108797 108799 108801 108983 6 108982 108801 108984 109153 108981 109154 6 108983 108801 108802 108985 109154 109155 6 108984 108802 108986 109155 109156 109157 7 108985 108802 108803 108804 108987 109157 109158 5 108986 108804 108805 108988 109158 7 108987 108805 108989 108990 108991 109158 109159 5 108988 108805 108806 108807 108990 6 108989 108807 108988 108991 108992 108808 6 108988 108990 108992 109159 109160 109161 6 108991 108990 108808 108993 109164 109161 6 108992 108808 108809 108810 108994 109164 6 108993 108810 108812 108995 109164 109165 7 108994 108812 108813 108996 109165 109167 109168 5 108995 108813 108997 109168 109169 6 108996 108813 108814 108998 109169 109170 7 108997 108814 108815 108816 108999 109170 109171 5 108998 108816 108817 109000 109171 6 108999 108817 109001 109171 109172 109173 6 109000 108817 108818 109002 109173 109003 6 109001 108818 108819 108820 108821 109003 6 109002 108821 108823 109004 109173 109001 6 109003 108823 108824 108826 109005 109173 6 109004 108826 109006 109007 109008 109173 6 109005 108826 109007 109011 109012 108827 6 109005 109006 109008 109009 109010 109011 6 109005 109007 109009 109173 109172 109174 5 109008 109007 109010 109174 109177 6 109009 109007 109011 109013 109177 109014 7 109010 109007 109006 109012 109013 108831 108830 5 109011 109006 108830 108828 108827 5 109010 109011 108831 108832 109014 6 109013 108832 109015 109177 109010 109178 6 109014 108832 108833 109016 109181 109178 5 109015 108833 108834 109017 109181 7 109016 108834 108835 109018 109181 109182 109188 6 109017 108835 109019 109188 109189 109190 6 109018 108835 108836 109020 109190 109191 6 109019 108836 108837 108838 109021 109191 6 109020 108838 108839 109022 109191 109192 6 109021 108839 109023 109192 109195 109196 6 109022 108839 108840 109024 109196 109197 6 109023 108840 108841 109025 109197 109027 6 109024 108841 108842 108843 109026 109027 6 109025 108843 109027 109028 109029 109030 6 109025 109026 109028 109197 109024 109198 6 109027 109026 109029 109198 109199 109203 5 109028 109026 109030 109031 109203 6 109029 109026 108843 109031 108845 108844 7 109029 109030 108845 108847 109032 109203 109204 6 109031 108847 109033 109034 109204 109205 6 109032 108847 109034 109035 109042 108848 6 109032 109033 109035 109036 109037 109205 6 109034 109033 109036 109040 109041 109042 6 109034 109035 109037 109038 109039 109040 6 109034 109036 109038 109205 109206 109207 6 109037 109036 109039 109207 109208 109209 6 109038 109036 109040 109209 109062 109061 6 109039 109036 109035 109041 109061 109060 6 109040 109035 109042 109043 109060 109210 6 109041 109035 109033 108848 109043 108849 6 109041 109042 108849 108850 109044 109210 7 109043 108850 109045 109046 109055 109056 109210 6 109044 108850 108851 109046 109047 109048 6 109044 109045 109047 109053 109055 109049 6 109046 109045 109048 108854 108855 109049 6 109047 109045 108851 108854 108853 108852 6 109047 108855 109050 109051 109053 109046 6 109049 108855 108856 108857 108860 109051 6 109050 108860 108861 109052 109053 109049 6 109051 108861 109053 109054 109058 108863 6 109051 109052 109054 109055 109046 109049 6 109053 109052 109055 109056 109057 109058 5 109053 109054 109046 109044 109056 6 109044 109055 109054 109057 109059 109210 5 109056 109054 109058 108887 109059 8 109057 109054 109052 108863 108877 108882 108884 108887 6 109057 108887 108888 109060 109210 109056 6 109059 108888 109061 109040 109041 109210 6 109060 108888 108889 109062 109039 109040 6 109061 108889 109063 109209 109039 109211 6 109062 108889 108890 109064 109211 109212 6 109063 108890 108891 109065 109212 109213 6 109064 108891 109066 109213 109214 109215 6 109065 108891 108892 108895 109067 109215 6 109066 108895 108896 109068 109215 109216 6 109067 108896 108897 108899 109069 109216 6 109068 108899 109070 109216 109217 109218 6 109069 108899 108900 109071 109218 109219 7 109070 108900 108903 108904 109072 109219 109220 5 109071 108904 109073 109220 109221 7 109072 108904 108905 109074 109221 109222 109223 6 109073 108905 108906 109075 109223 109225 6 109074 108906 108907 109076 109225 109226 5 109075 108907 108908 109077 109226 7 109076 108908 108911 109078 109226 109227 109228 5 109077 108911 108912 109079 109228 6 109078 108912 108913 108915 109080 109228 6 109079 108915 109081 109228 109229 109230 6 109080 108915 108916 109082 109230 109231 6 109081 108916 108917 109083 109231 109232 6 109082 108917 108918 109084 109085 109232 6 109083 108918 109085 109086 109093 108919 6 109083 109084 109086 109087 109232 109233 6 109085 109084 109087 109088 109092 109093 6 109085 109086 109088 109089 109233 109234 6 109087 109086 109089 109090 109091 109092 6 109087 109088 109090 109095 109234 109235 6 109089 109088 109091 109095 109096 109097 6 109090 109088 109092 109097 109098 109099 6 109091 109088 109086 109093 109099 109100 6 109092 109086 109084 108919 108920 109100 5 108469 108470 108485 108476 108471 6 109089 109090 109096 109235 109236 109237 6 109095 109090 109097 109237 109238 109239 6 109096 109090 109091 109098 109239 109240 6 109097 109091 109099 109240 109241 109242 6 109098 109091 109092 109100 109242 109101 6 109099 109092 109093 108920 108921 109101 6 109100 108921 108922 109102 109242 109099 6 109101 108922 108923 109103 109242 109243 6 109102 108923 108924 109104 109243 109244 6 109103 108924 109105 109109 109244 109108 6 109104 108924 108925 109106 108933 109108 6 109105 108925 108926 108927 109107 108933 5 109106 108927 108931 108932 108933 6 109105 108933 108934 108935 109109 109104 5 109108 108935 109110 109244 109104 7 109109 108935 108936 109111 109245 109244 109348 6 109110 108936 108937 109112 109350 109348 5 109111 108937 108938 109113 109350 6 109112 108938 108939 109114 109350 109351 6 109113 108939 108940 109115 109351 109352 6 109114 108940 108941 109116 109352 109353 6 109115 108941 108942 109117 109246 109353 6 109116 108942 108944 109118 109246 109247 6 109117 108944 108945 109119 109247 109248 5 109118 108945 108946 109120 109248 7 109119 108946 108947 109121 109248 109249 109250 6 109120 108947 108948 109122 109250 109251 5 109121 108948 108949 109123 109251 6 109122 108949 108951 108952 109124 109251 6 109123 108952 108953 109125 109251 109252 6 109124 108953 109126 109252 109253 109254 6 109125 108953 108954 108955 109127 109254 6 109126 108955 108956 109128 109254 109255 6 109127 108956 109129 109255 109256 109257 6 109128 108956 108957 108958 109130 109257 6 109129 108958 108959 109131 109257 109258 6 109130 108959 108960 109132 109258 109259 6 109131 108960 108961 109133 109259 109260 6 109132 108961 108962 109134 109260 109261 6 109133 108962 108963 109135 109261 109262 6 109134 108963 109136 109262 109263 109264 6 109135 108963 108964 108965 109137 109264 6 109136 108965 108966 109138 109264 109265 6 109137 108966 108967 109139 109265 109266 6 109138 108967 108968 109140 109266 109267 6 109139 108968 108969 109141 109267 109268 5 109140 108969 108970 109142 109268 7 109141 108970 108971 109143 109268 109269 109270 6 109142 108971 109144 109270 109271 109272 5 109143 108971 108972 109145 109272 6 109144 108972 108973 109146 109272 109273 6 109145 108973 109147 109273 109274 109148 6 109146 108973 108974 108975 108976 109148 6 109147 108976 109149 109274 109146 109275 6 109148 108976 108977 108978 109150 109275 6 109149 108978 109151 109275 109276 109277 6 109150 108978 108979 109152 109277 109278 7 109151 108979 108980 108981 109153 109278 109279 6 109152 108981 108983 109154 109279 109280 6 109153 108983 108984 109155 109280 109281 6 109154 108984 108985 109156 109281 109282 6 109155 108985 109157 109282 109283 109284 6 109156 108985 108986 109158 109284 109285 6 109157 108986 108987 108988 109159 109285 6 109158 108988 108991 109160 109285 109286 6 109159 108991 109161 109162 109286 109287 6 109160 108991 109162 109163 109164 108992 6 109160 109161 109163 109287 109288 109289 6 109162 109161 109164 109165 109166 109289 6 109163 109161 108992 108993 108994 109165 6 109164 108994 108995 109163 109166 109167 6 109163 109165 109167 109289 109290 109186 6 109166 109165 108995 109168 109186 109185 6 109167 108995 108996 109169 109185 109184 7 109168 108996 108997 109170 109184 109179 109176 6 109169 108997 108998 109171 109176 109175 6 109170 108998 108999 109000 109172 109175 6 109171 109000 109173 109008 109174 109175 7 109172 109000 109001 109003 109004 109005 109008 6 109172 109008 109009 109175 109176 109177 5 109172 109174 109176 109170 109171 6 109175 109174 109177 109179 109169 109170 7 109176 109174 109009 109010 109014 109178 109179 6 109177 109014 109179 109180 109181 109015 6 109177 109178 109180 109184 109169 109176 6 109179 109178 109181 109182 109183 109184 6 109180 109178 109015 109016 109017 109182 6 109181 109017 109180 109183 109187 109188 6 109180 109182 109184 109185 109186 109187 6 109180 109183 109185 109168 109169 109179 5 109184 109183 109186 109167 109168 6 109185 109183 109187 109290 109166 109167 6 109186 109183 109182 109188 109290 109291 6 109187 109182 109017 109018 109189 109291 5 109188 109018 109190 109291 109292 6 109189 109018 109019 109191 109292 109193 6 109190 109019 109020 109021 109192 109193 6 109191 109021 109022 109193 109194 109195 6 109191 109192 109194 109292 109190 109293 6 109193 109192 109195 109293 109294 109295 6 109194 109192 109022 109196 109295 109296 6 109195 109022 109023 109197 109302 109296 7 109196 109023 109024 109027 109198 109302 109303 6 109197 109027 109028 109199 109200 109303 6 109198 109028 109200 109201 109202 109203 6 109198 109199 109201 109303 109301 109304 6 109200 109199 109202 109304 109305 109306 6 109201 109199 109203 109306 109307 109204 6 109202 109199 109028 109029 109031 109204 7 109203 109031 109032 109205 109307 109202 109206 5 109204 109032 109034 109037 109206 6 109205 109037 109207 109307 109204 109308 6 109206 109037 109038 109208 109308 109309 6 109207 109038 109209 109309 109310 109314 6 109208 109038 109039 109062 109211 109314 6 109060 109041 109043 109059 109056 109044 6 109209 109062 109063 109212 109314 109315 6 109211 109063 109064 109213 109315 109316 6 109212 109064 109065 109214 109319 109316 6 109213 109065 109215 109319 109320 109321 6 109214 109065 109066 109067 109216 109321 6 109215 109067 109068 109069 109217 109321 7 109216 109069 109218 109321 109320 109322 109323 5 109217 109069 109070 109219 109323 7 109218 109070 109071 109220 109323 109324 109325 5 109219 109071 109072 109221 109325 7 109220 109072 109073 109222 109325 109326 109327 6 109221 109073 109223 109224 109327 109328 5 109222 109073 109074 109224 109225 6 109222 109223 109225 109328 109329 109330 6 109224 109223 109074 109075 109226 109330 7 109225 109075 109076 109077 109227 109330 109331 6 109226 109077 109228 109331 109332 109229 6 109227 109077 109078 109079 109080 109229 7 109228 109080 109230 109332 109227 109333 109334 6 109229 109080 109081 109231 109334 109335 6 109230 109081 109082 109232 109335 109336 7 109231 109082 109083 109085 109233 109336 109337 5 109232 109085 109087 109234 109337 7 109233 109087 109089 109235 109337 109338 109339 5 109234 109089 109095 109236 109339 7 109235 109095 109237 109339 109340 109341 109342 6 109236 109095 109096 109238 109342 109343 6 109237 109096 109239 109343 109344 109345 6 109238 109096 109097 109240 109345 109346 6 109239 109097 109098 109241 109346 109347 6 109240 109098 109242 109347 109245 109243 6 109241 109098 109099 109101 109102 109243 6 109242 109102 109103 109244 109245 109241 6 109243 109103 109245 109110 109109 109104 6 109243 109244 109110 109347 109241 109348 6 109116 109117 109247 109353 109354 109355 6 109246 109117 109118 109248 109355 109356 6 109247 109118 109119 109120 109249 109356 6 109248 109120 109250 109356 109357 109358 6 109249 109120 109121 109251 109358 109252 6 109250 109121 109122 109123 109124 109252 7 109251 109124 109125 109253 109358 109250 109359 5 109252 109125 109254 109359 109360 7 109253 109125 109126 109127 109255 109360 109361 6 109254 109127 109128 109256 109361 109362 6 109255 109128 109257 109362 109363 109364 6 109256 109128 109129 109130 109258 109364 7 109257 109130 109131 109259 109364 109365 109366 6 109258 109131 109132 109260 109366 109367 6 109259 109132 109133 109261 109367 109368 6 109260 109133 109134 109262 109368 109369 6 109261 109134 109135 109263 109369 109370 6 109262 109135 109264 109370 109371 109372 6 109263 109135 109136 109137 109265 109372 6 109264 109137 109138 109266 109372 109373 6 109265 109138 109139 109267 109373 109374 6 109266 109139 109140 109268 109374 109375 7 109267 109140 109141 109142 109269 109375 109376 5 109268 109142 109270 109376 109377 6 109269 109142 109143 109271 109377 109381 6 109270 109143 109272 109381 109382 109383 6 109271 109143 109144 109145 109273 109383 6 109272 109145 109146 109274 109383 109384 6 109273 109146 109148 109275 109384 109385 7 109274 109148 109149 109150 109276 109385 109386 5 109275 109150 109277 109386 109388 6 109276 109150 109151 109278 109388 109389 6 109277 109151 109152 109279 109389 109390 6 109278 109152 109153 109280 109390 109391 5 109279 109153 109154 109281 109391 6 109280 109154 109155 109282 109393 109391 6 109281 109155 109156 109283 109393 109394 6 109282 109156 109284 109394 109395 109396 6 109283 109156 109157 109285 109396 109397 6 109284 109157 109158 109159 109286 109397 6 109285 109159 109160 109287 109397 109398 5 109286 109160 109162 109288 109398 7 109287 109162 109289 109398 109399 109400 109401 6 109288 109162 109163 109166 109290 109401 7 109289 109166 109186 109187 109291 109402 109401 6 109290 109187 109188 109189 109292 109402 7 109291 109189 109190 109193 109293 109402 109400 6 109292 109193 109194 109294 109400 109403 6 109293 109194 109295 109403 109404 109405 6 109294 109194 109195 109296 109297 109405 6 109295 109195 109297 109298 109302 109196 6 109295 109296 109298 109299 109405 109406 6 109297 109296 109299 109300 109301 109302 6 109297 109298 109300 109409 109406 109410 6 109299 109298 109301 109410 109411 109412 7 109300 109298 109302 109303 109200 109304 109412 6 109301 109298 109296 109196 109197 109303 5 109302 109197 109198 109200 109301 5 109301 109200 109201 109305 109412 7 109304 109201 109306 109412 109413 109414 109418 5 109305 109201 109202 109307 109418 6 109306 109202 109204 109206 109308 109418 6 109307 109206 109207 109309 109417 109418 6 109308 109207 109208 109310 109311 109417 6 109309 109208 109311 109312 109313 109314 6 109309 109310 109312 109416 109417 109419 6 109311 109310 109313 109419 109420 109424 7 109312 109310 109314 109424 109425 109317 109315 6 109313 109310 109208 109209 109211 109315 6 109314 109211 109212 109316 109317 109313 6 109315 109212 109317 109318 109319 109213 6 109315 109316 109318 109425 109313 109426 6 109317 109316 109319 109426 109427 109428 6 109318 109316 109213 109214 109320 109428 6 109319 109214 109321 109217 109322 109428 5 109320 109214 109215 109216 109217 6 109320 109217 109323 109428 109429 109430 6 109322 109217 109218 109219 109324 109430 6 109323 109219 109325 109430 109431 109432 6 109324 109219 109220 109221 109326 109432 6 109325 109221 109327 109432 109433 109434 6 109326 109221 109222 109328 109434 109435 5 109327 109222 109224 109329 109435 7 109328 109224 109330 109435 109436 109437 109438 6 109329 109224 109225 109226 109331 109438 6 109330 109226 109227 109332 109438 109439 6 109331 109227 109229 109333 109442 109439 6 109332 109229 109334 109442 109443 109446 5 109333 109229 109230 109335 109446 6 109334 109230 109231 109336 109446 109447 6 109335 109231 109232 109337 109447 109448 6 109336 109232 109233 109234 109338 109448 6 109337 109234 109339 109448 109449 109450 6 109338 109234 109235 109236 109340 109450 6 109339 109236 109341 109450 109451 109452 6 109340 109236 109342 109452 109453 109454 6 109341 109236 109237 109343 109454 109455 5 109342 109237 109238 109344 109455 7 109343 109238 109345 109455 109456 109457 109458 6 109344 109238 109239 109346 109458 109349 5 109345 109239 109240 109347 109349 6 109346 109240 109241 109245 109348 109349 6 109347 109245 109349 109350 109111 109110 7 109347 109348 109350 109458 109345 109346 109351 6 109349 109348 109111 109112 109113 109351 7 109350 109113 109114 109352 109458 109349 109459 6 109351 109114 109115 109353 109459 109460 6 109352 109115 109116 109246 109354 109460 6 109353 109246 109355 109460 109461 109462 6 109354 109246 109247 109356 109462 109463 6 109355 109247 109248 109249 109357 109463 6 109356 109249 109358 109463 109464 109465 6 109357 109249 109250 109252 109359 109465 5 109358 109252 109253 109360 109465 7 109359 109253 109254 109361 109465 109466 109467 5 109360 109254 109255 109362 109467 6 109361 109255 109256 109363 109467 109468 6 109362 109256 109364 109468 109469 109470 6 109363 109256 109257 109258 109365 109470 6 109364 109258 109366 109470 109471 109472 5 109365 109258 109259 109367 109472 6 109366 109259 109260 109368 109472 109473 6 109367 109260 109261 109369 109473 109474 6 109368 109261 109262 109370 109474 109475 6 109369 109262 109263 109371 109475 109476 6 109370 109263 109372 109476 109477 109478 6 109371 109263 109264 109265 109373 109478 6 109372 109265 109266 109374 109478 109479 6 109373 109266 109267 109375 109479 109480 6 109374 109267 109268 109376 109480 109481 6 109375 109268 109269 109377 109378 109481 7 109376 109269 109270 109378 109379 109380 109381 5 109376 109377 109379 109481 109482 6 109378 109377 109380 109482 109483 109484 6 109379 109377 109381 109484 109485 109382 5 109380 109377 109270 109271 109382 6 109381 109271 109383 109485 109380 109486 7 109382 109271 109272 109273 109384 109486 109487 6 109383 109273 109274 109385 109487 109488 6 109384 109274 109275 109386 109387 109488 5 109385 109275 109276 109387 109388 6 109385 109386 109388 109488 109489 109490 7 109387 109386 109276 109277 109389 109490 109491 6 109388 109277 109278 109390 109491 109492 6 109389 109278 109279 109391 109392 109492 6 109390 109279 109392 109393 109281 109280 6 109390 109391 109393 109492 109493 109494 6 109392 109391 109281 109282 109394 109494 6 109393 109282 109283 109395 109494 109495 6 109394 109283 109396 109495 109496 109497 6 109395 109283 109284 109397 109498 109497 6 109396 109284 109285 109286 109398 109498 6 109397 109286 109287 109288 109399 109498 6 109398 109288 109400 109498 109404 109403 7 109399 109288 109401 109402 109292 109293 109403 5 109400 109288 109402 109290 109289 5 109400 109401 109290 109291 109292 5 109400 109293 109294 109404 109399 6 109403 109294 109405 109498 109399 109407 6 109404 109294 109295 109297 109406 109407 6 109405 109297 109407 109408 109409 109299 6 109405 109406 109408 109497 109498 109404 6 109407 109406 109409 109496 109497 109499 6 109408 109406 109299 109410 109499 109500 6 109409 109299 109300 109411 109500 109501 6 109410 109300 109412 109501 109502 109413 6 109411 109300 109301 109304 109305 109413 6 109412 109305 109414 109415 109502 109411 6 109413 109305 109415 109416 109417 109418 6 109413 109414 109416 109502 109503 109504 6 109415 109414 109417 109311 109419 109504 6 109416 109414 109418 109308 109309 109311 6 109417 109414 109308 109307 109306 109305 6 109416 109311 109312 109420 109421 109504 6 109419 109312 109421 109422 109423 109424 6 109419 109420 109422 109504 109505 109506 6 109421 109420 109423 109506 109507 109508 6 109422 109420 109424 109511 109508 109512 6 109423 109420 109312 109313 109425 109512 5 109424 109313 109317 109426 109512 6 109425 109317 109318 109427 109512 109513 6 109426 109318 109428 109513 109514 109429 6 109427 109318 109319 109320 109322 109429 6 109428 109322 109430 109517 109514 109427 6 109429 109322 109323 109324 109431 109517 6 109430 109324 109432 109524 109517 109525 6 109431 109324 109325 109326 109433 109525 6 109432 109326 109434 109525 109526 109527 6 109433 109326 109327 109435 109527 109528 6 109434 109327 109328 109329 109436 109528 6 109435 109329 109437 109528 109530 109531 6 109436 109329 109438 109531 109532 109440 6 109437 109329 109330 109331 109439 109440 6 109438 109331 109440 109441 109442 109332 5 109438 109439 109441 109532 109437 7 109440 109439 109442 109443 109444 109532 109533 5 109441 109439 109332 109333 109443 6 109442 109333 109441 109444 109445 109446 5 109441 109443 109445 109533 109534 6 109444 109443 109446 109534 109535 109536 7 109445 109443 109333 109334 109335 109447 109536 6 109446 109335 109336 109448 109536 109537 6 109447 109336 109337 109338 109449 109537 6 109448 109338 109450 109537 109538 109451 5 109449 109338 109339 109340 109451 7 109450 109340 109452 109538 109449 109539 109540 6 109451 109340 109341 109453 109540 109541 6 109452 109341 109454 109541 109542 109543 6 109453 109341 109342 109455 109543 109544 6 109454 109342 109343 109344 109456 109544 6 109455 109344 109457 109544 109545 109461 6 109456 109344 109458 109461 109460 109459 6 109457 109344 109345 109349 109351 109459 5 109458 109351 109352 109460 109457 6 109459 109352 109353 109354 109461 109457 6 109460 109354 109462 109545 109456 109457 5 109461 109354 109355 109463 109545 7 109462 109355 109356 109357 109464 109545 109546 6 109463 109357 109465 109546 109547 109548 7 109464 109357 109358 109359 109360 109466 109548 6 109465 109360 109467 109548 109549 109550 6 109466 109360 109361 109362 109468 109550 6 109467 109362 109363 109469 109550 109551 6 109468 109363 109470 109551 109552 109553 6 109469 109363 109364 109365 109471 109553 6 109470 109365 109472 109553 109554 109555 6 109471 109365 109366 109367 109473 109555 6 109472 109367 109368 109474 109555 109556 6 109473 109368 109369 109475 109556 109557 6 109474 109369 109370 109476 109557 109558 6 109475 109370 109371 109477 109558 109559 6 109476 109371 109478 109559 109560 109561 6 109477 109371 109372 109373 109479 109561 6 109478 109373 109374 109480 109561 109562 6 109479 109374 109375 109481 109562 109563 6 109480 109375 109376 109378 109482 109563 6 109481 109378 109379 109483 109563 109564 6 109482 109379 109484 109564 109565 109566 6 109483 109379 109380 109485 109566 109567 6 109484 109380 109382 109486 109567 109568 6 109485 109382 109383 109487 109568 109569 6 109486 109383 109384 109488 109569 109570 6 109487 109384 109385 109387 109489 109570 6 109488 109387 109490 109570 109571 109572 6 109489 109387 109388 109491 109572 109573 6 109490 109388 109389 109492 109573 109574 6 109491 109389 109390 109392 109493 109574 6 109492 109392 109494 109574 109575 109576 6 109493 109392 109393 109394 109495 109576 6 109494 109394 109395 109496 109576 109577 6 109495 109395 109497 109408 109499 109577 6 109496 109395 109408 109407 109498 109396 7 109407 109497 109396 109397 109398 109399 109404 5 109496 109408 109409 109500 109577 7 109499 109409 109410 109501 109577 109578 109579 6 109500 109410 109411 109502 109579 109580 6 109501 109411 109413 109415 109503 109580 6 109502 109415 109504 109580 109581 109582 7 109503 109415 109416 109419 109421 109505 109582 5 109504 109421 109506 109582 109583 6 109505 109421 109422 109507 109583 109584 6 109506 109422 109508 109509 109584 109585 6 109507 109422 109509 109510 109511 109423 6 109507 109508 109510 109585 109586 109587 6 109509 109508 109511 109518 109587 109521 6 109510 109508 109423 109512 109518 109519 7 109511 109423 109424 109425 109426 109513 109519 6 109512 109426 109427 109514 109515 109519 6 109513 109427 109515 109516 109517 109429 6 109513 109514 109516 109519 109518 109520 6 109515 109514 109517 109523 109520 109524 6 109516 109514 109429 109430 109524 109431 6 109510 109511 109519 109515 109520 109521 5 109518 109511 109512 109513 109515 6 109518 109515 109521 109522 109523 109516 6 109518 109520 109522 109587 109510 109588 6 109521 109520 109523 109588 109589 109590 6 109522 109520 109516 109524 109590 109591 6 109523 109516 109517 109431 109525 109591 7 109524 109431 109432 109433 109526 109591 109592 5 109525 109433 109527 109592 109593 6 109526 109433 109434 109528 109529 109593 6 109527 109434 109435 109436 109529 109530 6 109527 109528 109530 109593 109594 109595 6 109529 109528 109436 109531 109595 109596 6 109530 109436 109437 109532 109596 109597 7 109531 109437 109440 109441 109533 109597 109598 5 109532 109441 109444 109534 109598 7 109533 109444 109445 109535 109598 109599 109600 6 109534 109445 109536 109600 109601 109602 7 109535 109445 109446 109447 109537 109602 109603 6 109536 109447 109448 109449 109538 109603 6 109537 109449 109451 109539 109603 109604 6 109538 109451 109540 109604 109605 109606 6 109539 109451 109452 109541 109606 109607 5 109540 109452 109453 109542 109607 7 109541 109453 109543 109607 109608 109609 109610 5 109542 109453 109454 109544 109610 7 109543 109454 109455 109456 109545 109610 109546 6 109544 109456 109461 109462 109463 109546 6 109545 109463 109464 109547 109610 109544 6 109546 109464 109548 109610 109609 109549 5 109547 109464 109465 109466 109549 6 109548 109466 109550 109609 109547 109611 6 109549 109466 109467 109468 109551 109611 6 109550 109468 109469 109552 109611 109612 6 109551 109469 109553 109612 109613 109614 6 109552 109469 109470 109471 109554 109614 6 109553 109471 109555 109614 109615 109616 6 109554 109471 109472 109473 109556 109616 6 109555 109473 109474 109557 109616 109617 6 109556 109474 109475 109558 109617 109618 6 109557 109475 109476 109559 109618 109619 6 109558 109476 109477 109560 109619 109620 6 109559 109477 109561 109620 109621 109622 6 109560 109477 109478 109479 109562 109622 6 109561 109479 109480 109563 109622 109623 6 109562 109480 109481 109482 109564 109623 6 109563 109482 109483 109565 109623 109624 6 109564 109483 109566 109624 109625 109626 6 109565 109483 109484 109567 109626 109627 6 109566 109484 109485 109568 109627 109628 7 109567 109485 109486 109569 109628 109629 109630 6 109568 109486 109487 109570 109630 109631 6 109569 109487 109488 109489 109571 109631 6 109570 109489 109572 109631 109632 109633 6 109571 109489 109490 109573 109633 109634 6 109572 109490 109491 109574 109634 109635 6 109573 109491 109492 109493 109575 109635 6 109574 109493 109576 109635 109636 109578 6 109575 109493 109494 109495 109577 109578 6 109576 109495 109496 109499 109500 109578 6 109577 109500 109579 109636 109575 109576 6 109578 109500 109501 109580 109636 109581 5 109579 109501 109502 109503 109581 6 109580 109503 109582 109636 109579 109637 6 109581 109503 109504 109505 109583 109637 6 109582 109505 109506 109584 109637 109638 6 109583 109506 109507 109585 109638 109633 6 109584 109507 109509 109586 109633 109632 6 109585 109509 109587 109632 109639 109629 6 109586 109509 109510 109521 109588 109629 6 109587 109521 109522 109589 109629 109628 6 109588 109522 109590 109628 109627 109640 6 109589 109522 109523 109591 109640 109641 6 109590 109523 109524 109525 109592 109641 6 109591 109525 109526 109593 109641 109642 7 109592 109526 109527 109529 109594 109642 109643 5 109593 109529 109595 109643 109644 6 109594 109529 109530 109596 109644 109645 6 109595 109530 109531 109597 109645 109646 6 109596 109531 109532 109598 109646 109647 6 109597 109532 109533 109534 109599 109647 5 109598 109534 109600 109647 109648 7 109599 109534 109535 109601 109648 109649 109650 5 109600 109535 109602 109650 109651 6 109601 109535 109536 109603 109651 109604 5 109602 109536 109537 109538 109604 6 109603 109538 109539 109605 109651 109602 6 109604 109539 109606 109651 109652 109653 6 109605 109539 109540 109607 109653 109613 6 109606 109540 109541 109542 109608 109613 6 109607 109542 109609 109613 109612 109611 6 109608 109542 109610 109547 109549 109611 6 109609 109542 109543 109544 109546 109547 6 109609 109549 109550 109551 109612 109608 5 109611 109551 109552 109613 109608 7 109612 109552 109614 109653 109606 109607 109608 6 109613 109552 109553 109554 109615 109653 6 109614 109554 109616 109653 109652 109654 6 109615 109554 109555 109556 109617 109654 6 109616 109556 109557 109618 109654 109655 6 109617 109557 109558 109619 109655 109656 6 109618 109558 109559 109620 109656 109657 6 109619 109559 109560 109621 109657 109658 6 109620 109560 109622 109658 109659 109660 6 109621 109560 109561 109562 109623 109660 6 109622 109562 109563 109564 109624 109660 7 109623 109564 109565 109625 109660 109661 109662 5 109624 109565 109626 109662 109663 7 109625 109565 109566 109627 109663 109664 109640 6 109626 109566 109567 109628 109589 109640 6 109627 109567 109568 109629 109588 109589 7 109628 109568 109630 109639 109586 109587 109588 5 109629 109568 109569 109631 109639 6 109630 109569 109570 109571 109632 109639 6 109631 109571 109633 109585 109586 109639 7 109632 109571 109572 109634 109638 109584 109585 6 109633 109572 109573 109635 109637 109638 6 109634 109573 109574 109575 109636 109637 6 109635 109575 109578 109579 109581 109637 7 109636 109581 109582 109583 109638 109635 109634 5 109637 109583 109584 109633 109634 5 109632 109586 109629 109630 109631 6 109627 109589 109590 109641 109664 109626 6 109640 109590 109591 109592 109642 109664 6 109641 109592 109593 109643 109664 109663 6 109642 109593 109594 109644 109663 109662 7 109643 109594 109595 109645 109662 109661 109665 7 109644 109595 109596 109646 109665 109659 109666 6 109645 109596 109597 109647 109666 109667 6 109646 109597 109598 109599 109648 109667 6 109647 109599 109600 109649 109667 109668 6 109648 109600 109650 109668 109656 109655 6 109649 109600 109601 109651 109655 109669 7 109650 109601 109602 109604 109605 109652 109669 6 109651 109605 109653 109615 109654 109669 6 109652 109605 109606 109613 109614 109615 6 109652 109615 109616 109617 109655 109669 7 109654 109617 109618 109656 109649 109650 109669 6 109655 109618 109619 109657 109668 109649 5 109656 109619 109620 109658 109668 6 109657 109620 109621 109659 109668 109666 6 109658 109621 109660 109665 109645 109666 7 109659 109621 109622 109623 109624 109661 109665 5 109660 109624 109662 109644 109665 6 109661 109624 109625 109663 109643 109644 6 109662 109625 109626 109664 109642 109643 5 109663 109626 109640 109641 109642 5 109661 109644 109645 109659 109660 6 109659 109645 109646 109667 109668 109658 5 109666 109646 109647 109648 109668 7 109667 109648 109649 109656 109657 109658 109666 5 109655 109650 109651 109652 109654 6 106653 106650 106651 109671 109691 109681 6 109670 106651 109672 109676 109680 109681 6 109671 106651 109673 109674 109675 109676 6 109672 106651 109674 106649 109727 106365 6 109672 109673 109675 109725 109726 109727 6 109672 109674 109676 109677 109678 109725 6 109672 109675 109677 109679 109680 109671 5 109676 109675 109678 105235 109679 7 109677 109675 105235 109734 104519 109725 109733 6 109677 105235 105236 109676 109680 109683 7 109676 109679 109671 109681 109682 104654 109683 6 109671 109680 109682 109691 109670 109685 5 109681 109680 104654 104655 109685 6 104654 109680 109679 105236 104652 109684 6 104652 109683 104650 100422 105237 105236 6 109682 104655 109686 109687 109691 109681 6 109685 104655 109687 103169 109688 104656 6 109685 109686 103169 103170 109691 103172 7 103169 109686 104656 109689 103168 102843 109690 5 109688 104656 105380 100430 109690 6 102843 109688 109689 100430 102841 100429 6 109685 109687 103172 106653 109670 109681 6 106475 106478 106474 109779 109774 109780 6 106460 106461 106465 106467 106377 106378 6 105862 105863 109695 109702 109703 109700 6 109694 105863 105864 109696 105719 109700 5 109695 105864 105865 105718 105719 6 105718 105865 105866 105867 109698 109699 6 109697 105867 109699 105695 105694 105868 5 109697 109698 105695 105696 105718 6 109695 105719 105720 109701 109702 109694 5 109700 105720 105721 105724 109702 6 109701 105724 106095 109703 109694 109700 6 109702 106095 106383 109694 105862 105861 6 106490 102252 100415 102194 106488 106489 7 106488 102195 106487 106480 102196 109773 109778 5 102251 106491 103336 106492 103335 6 103335 106492 103334 106499 106493 106494 6 106502 106503 109709 102189 109711 109712 6 106502 109708 102189 106501 109710 102190 6 106501 109709 106500 102190 102191 102512 7 109708 106503 106512 109712 109715 109716 109717 5 109708 109711 102189 109713 109715 6 102189 109712 102187 102197 109714 109715 6 102197 109713 109715 102215 102216 109720 6 109714 109713 109712 109711 109716 102215 7 109715 109711 109717 109718 109719 102214 102215 6 109716 109711 106512 106513 106514 109718 5 109717 106514 106516 109719 109716 5 109718 106516 109716 102214 106522 6 109714 102216 102217 102200 102198 102197 6 106669 106775 109722 109723 106656 106658 5 109721 106775 109723 109724 109798 6 109721 109722 109724 106646 106656 106655 6 109723 109722 106646 106645 109799 109798 6 109675 109674 109726 109678 109733 109735 6 109725 109674 109727 109729 109735 109728 6 109726 109674 109673 106365 106366 109728 6 109727 106366 106368 106370 109729 109726 6 109728 106370 109730 109731 109735 109726 6 109729 106370 106371 106375 106467 109731 6 109730 106467 106466 109732 109735 109729 6 109731 106466 106468 107510 109733 109735 6 109732 107510 109734 109735 109678 109725 6 109733 107510 107508 104518 104519 109678 6 109732 109733 109731 109729 109726 109725 6 106041 106039 106038 106019 105872 105874 6 106132 106398 106392 106393 106115 109738 6 109737 106115 106116 106132 106131 106122 6 100569 100571 109740 109744 100568 109743 6 109739 100571 100573 109741 109742 109743 6 109740 100573 100916 100917 109742 100918 6 109740 109741 100918 109743 100921 100919 6 109740 109742 100921 100563 109744 109739 6 109743 100563 100564 100567 100568 109739 6 107205 107206 109746 107218 107217 107216 6 109745 107206 107207 107213 107216 107214 6 103491 103492 103496 103502 106706 106555 5 106706 103502 109749 103503 106710 5 106706 109748 106710 106707 106705 5 106682 105157 104667 106681 109761 5 103201 103470 103410 103200 103411 6 105932 105910 105915 105916 109755 105931 5 104915 104917 109754 104880 104879 7 109753 104917 104911 104880 109756 104904 109759 7 109752 105916 105931 105921 105920 105919 109758 6 104880 109754 109757 104895 104897 109759 5 104880 109756 104895 104884 104881 5 105919 109755 105918 105916 105917 6 109754 104904 104901 104898 104897 109756 6 104638 104912 104875 104872 104869 104868 7 106681 109750 104667 104668 109762 104560 109792 5 109761 104668 104546 104548 104560 5 108468 108469 109764 109765 108486 5 108468 109763 109765 107726 107962 7 109764 109763 108486 107714 107715 107723 107726 6 108023 108021 107738 107739 107740 107742 5 107723 107715 107716 107719 107721 6 100427 107500 107502 109769 100046 100045 6 109768 107502 109770 109772 100044 100045 7 109769 107502 107503 109771 109772 109774 109780 7 102196 100043 100001 109772 109770 109773 109774 5 109771 100001 109770 109769 100044 6 102196 109771 109774 109705 109778 109779 6 109773 109771 109770 109779 109692 109780 6 107253 107256 107523 107520 107517 107516 6 102095 102083 102084 106093 103138 103131 5 106638 106639 106642 106787 106785 5 109705 109773 109779 106478 106480 5 109778 109773 109774 109692 106478 5 109692 109774 106474 109770 107503 6 103852 103129 100026 100025 101526 103130 6 106787 106642 106643 109783 106789 106170 5 109782 106643 106168 106169 106170 6 104396 104529 104395 104121 104119 104530 6 106637 106783 106779 106636 106635 106771 6 104118 103529 103531 109787 109789 104120 6 109786 103531 103533 109788 107174 109789 6 109787 103533 103535 107178 107175 107174 6 109787 107174 109786 104120 104122 107172 5 107670 107695 107696 107698 107669 6 107775 103145 104231 103413 103414 107776 6 104560 106675 106676 106677 106681 109761 6 103659 103660 104908 109794 104369 104371 5 109793 104908 104642 104370 104369 6 105543 105545 105700 105540 105541 105542 6 106177 106178 109797 109798 106181 109799 6 106782 106177 109796 109798 106776 106780 7 109797 109796 106776 109799 109724 109722 106775 6 109796 106181 106183 106645 109724 109798 scotch_6.0.9/src/check/test_common_random.c0000644000302600021200000001653613531053777021202 0ustar pelegrinpelegrin/* Copyright 2012,2014,2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_common_random.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the random number **/ /** generator module. **/ /** **/ /** DATES : # Version 6.0 : from : 01 oct 2014 **/ /** to 24 aug 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif /* _XOPEN_SOURCE */ #ifndef __USE_XOPEN2K #define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ #endif /* __USE_XOPEN2K */ #include #include #include #include #include "../libscotch/module.h" #include "../libscotch/common.h" #include "scotch.h" #define RANDNBR 100 /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { INT * randtab; int randnum; FILE * fileptr; int passnum; if (argc != 3) { SCOTCH_errorPrint ("usage: %s state_file passnum", argv[0]); exit (EXIT_FAILURE); } if ((randtab = malloc (RANDNBR * sizeof (INT))) == NULL) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } intRandInit (); /* Initialize random generator */ for (randnum = 0; randnum < RANDNBR; randnum ++) randtab[randnum] = intRandVal (INTVALMAX); intRandReset (); passnum = (atoi (argv[2]) == 0); /* First pass to write file; second pass to read it */ if ((fileptr = fopen (argv[1], (passnum) ? "w+" : "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (passnum) { /* If first pass */ for (randnum = 0; randnum < RANDNBR; randnum ++) { if (randtab[randnum] != intRandVal (INTVALMAX)) { SCOTCH_errorPrint ("main: cannot replay random sequence"); exit (EXIT_FAILURE); } } if (fwrite (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { SCOTCH_errorPrint ("main: cannot write to file (1)"); exit (EXIT_FAILURE); } switch (SCOTCH_randomSave (fileptr)) { /* Try to save random state, if enabled */ case 0 : if (fprintf (fileptr, "#") != 1) { /* Write separator character */ SCOTCH_errorPrint ("main: cannot write to file (2)"); exit (EXIT_FAILURE); } for (randnum = 0; randnum < RANDNBR; randnum ++) randtab[randnum] = intRandVal (INTVALMAX); if (fwrite (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { SCOTCH_errorPrint ("main: cannot write to file (3)"); exit (EXIT_FAILURE); } break; case 1 : printf ("Random state cannot be saved\n"); break; default : SCOTCH_errorPrint ("Could not save random state"); break; } sleep (2); /* Next run will not get the same time() value */ } else { /* Second pass */ char * charptr; int o; if (fread (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { SCOTCH_errorPrint ("main: cannot read from file (1)"); exit (EXIT_FAILURE); } for (randnum = 0; randnum < RANDNBR; randnum ++) { if (randtab[randnum] != intRandVal (INTVALMAX)) break; } o = (randnum == RANDNBR); charptr = (o) ? "same" : "different"; #if ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC)) o ^= 1; #endif /* ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC)) */ if (o) { SCOTCH_errorPrint ("main: two consecutive runs yield %s values.", charptr); exit (EXIT_FAILURE); } printf ("Two consecutive runs yield %s values.\n", charptr); intRandReset (); /* Reset random seed to be sure */ switch (SCOTCH_randomLoad (fileptr)) { case 0 : while (1) { /* Discard all CR(LF) before separator character */ int c; c = getc (fileptr); if (c == '#') /* If separator character found */ break; if (c == EOF) { SCOTCH_errorPrint ("main: cannot read from file (2)"); exit (EXIT_FAILURE); } } if (fread (randtab, sizeof (INT), RANDNBR, fileptr) < RANDNBR) { SCOTCH_errorPrint ("main: cannot read from file (3)"); exit (EXIT_FAILURE); } for (randnum = 0; randnum < RANDNBR; randnum ++) { if (randtab[randnum] != intRandVal (INTVALMAX)) { SCOTCH_errorPrint ("main: state not properly saved/restored"); exit (EXIT_FAILURE); } } break; case 1 : SCOTCH_errorPrint ("main: random state cannot be loaded"); break; default : SCOTCH_errorPrint ("main: could not save random state"); break; } } fclose (fileptr); free (randtab); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_redist.c0000644000302600021200000001520513303015264022506 0ustar pelegrinpelegrin/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_redist.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_dgraphBand() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 21 feb 2012 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include #include #include "ptscotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ SCOTCH_Num vertglbnbr; SCOTCH_Num vertlocnbr; SCOTCH_Num vertlocnum; SCOTCH_Num * partloctab; SCOTCH_Dgraph srcgrafdat; SCOTCH_Dgraph dstgrafdat; FILE * file; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&srcgrafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize source graph"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&dstgrafdat, proccomm) != 0) { /* Initialize destination graph */ SCOTCH_errorPrint ("main: cannot initialize destination graph"); exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&srcgrafdat, file, -1, 0) != 0) { SCOTCH_errorPrint ("main: cannot load source graph"); exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (SCOTCH_dgraphCheck (&srcgrafdat) != 0) { SCOTCH_errorPrint ("main: invalid source graph"); exit (EXIT_FAILURE); } if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } SCOTCH_dgraphData (&srcgrafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((partloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: cannot allocate frontier array"); exit (EXIT_FAILURE); } for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) /* Create packs of 3 vertices each */ partloctab[vertlocnum] = (vertlocnum / 3) % procglbnbr; if (SCOTCH_dgraphRedist (&srcgrafdat, partloctab, NULL, -1, -1, &dstgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot compute redistributed graph"); exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&dstgrafdat); SCOTCH_dgraphExit (&srcgrafdat); free (partloctab); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_band.c0000644000302600021200000001640113303015264022117 0ustar pelegrinpelegrin/* Copyright 2011,2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_band.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_dgraphBand() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 10 nov 2011 **/ /** to 21 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include #include #include "ptscotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ SCOTCH_Num vertglbnbr; SCOTCH_Num vertlocnbr; SCOTCH_Num * fronloctab; SCOTCH_Num baseval; SCOTCH_Dgraph grafdat; SCOTCH_Dgraph bandgrafdat; SCOTCH_Num bandvertglbnbr; SCOTCH_Num bandvertlocnbr; SCOTCH_Num * bandvlblloctab; FILE * file; int procnum; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph (1)"); exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((fronloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: cannot allocate frontier array"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&bandgrafdat, proccomm) != 0) { /* Initialize band graph */ SCOTCH_errorPrint ("main: cannot initialize graph (2)"); exit (EXIT_FAILURE); } fronloctab[0] = 0; if (SCOTCH_dgraphBand (&grafdat, (proclocnum == 1) ? 1 : 0, fronloctab, 4, &bandgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot compute band graph"); exit (EXIT_FAILURE); } free (fronloctab); SCOTCH_dgraphData (&bandgrafdat, &baseval, &bandvertglbnbr, &bandvertlocnbr, NULL, NULL, NULL, NULL, NULL, &bandvlblloctab, NULL, NULL, NULL, NULL, NULL, NULL, NULL); for (procnum = 0; procnum < procglbnbr; procnum ++) { SCOTCH_Num bandvertlocnum; MPI_Barrier (proccomm); if (procnum == proclocnum) { if ((file = fopen ("/tmp/test_scotch_dgraph_band.map", (procnum == 0) ? "w" : "a+")) == NULL) { SCOTCH_errorPrint ("main: cannot open mapping file"); exit (EXIT_FAILURE); } if (procnum == 0) fprintf (file, "%ld\n", (long) bandvertglbnbr); for (bandvertlocnum = 0; bandvertlocnum < bandvertlocnbr; bandvertlocnum ++) fprintf (file, "%ld\t1\n", (long) bandvlblloctab[bandvertlocnum]); fclose (file); } } SCOTCH_dgraphExit (&bandgrafdat); SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_map_copy.c0000644000302600021200000001532213470114133022657 0ustar pelegrinpelegrin/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_map_copy.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphMap*() routines in the **/ /** specific case of the "copy" method. **/ /** **/ /** DATES : # Version 6.0 : from : 15 oct 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #define STRANBR 3 /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Mapping mappdat; /* Mapping to compute */ SCOTCH_Mapping mapodat; /* Old mapping */ FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Arch archdat; SCOTCH_Strat stratab[STRANBR]; int stranum; int typenum; SCOTCH_Num vertnbr; SCOTCH_Num * parttab; SCOTCH_Num * parotab; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read the givel graph */ SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphSize (&grafdat, &vertnbr, NULL); if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((parotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } for (stranum = 0; stranum < STRANBR; stranum ++) { /* Initialize mapping strategies */ if (SCOTCH_stratInit (&stratab[stranum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); exit (EXIT_FAILURE); } } SCOTCH_stratGraphMap (&stratab[0], "cf{move=10000,pass=-1,bal=0.05}"); SCOTCH_stratGraphMap (&stratab[1], "m{vert=120,low=cf{move=10000,pass=-1,bal=0.05},asc=b{bnd=f{move=10000,pass=-1,bal=0.05},org=f{move=10000,pass=-1,bal=0.05}}}"); if (SCOTCH_archInit (&archdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize architecture"); exit (EXIT_FAILURE); } SCOTCH_archCmplt (&archdat, 5); for (stranum = 0; stranum < (STRANBR - 1); stranum ++) { for (typenum = 0; typenum < 2; typenum ++) { int o; printf ("Strat %d, type %d\n", stranum, typenum); switch (typenum) { case 0 : /* Plain mapping */ if (SCOTCH_graphMapInit (&grafdat, &mappdat, &archdat, parttab) != 0) { /* Initialize new mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (1)"); exit (EXIT_FAILURE); } o = SCOTCH_graphMapCompute (&grafdat, &mappdat, &stratab[STRANBR - 1]); /* Last strategy is plain mapping strategy */ memcpy (parotab, parttab, vertnbr * sizeof (SCOTCH_Num)); /* Use plain mapping as old mapping in the following */ break; case 1 : /* Remapping with copy of the old partition array */ if (SCOTCH_graphMapInit (&grafdat, &mapodat, &archdat, parotab) != 0) { /* Initialize old mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (2)"); exit (EXIT_FAILURE); } o = SCOTCH_graphRemapCompute (&grafdat, &mappdat, &mapodat, 0, NULL, &stratab[stranum]); break; } if (o != 0) { SCOTCH_errorPrint ("main: cannot compute mapping"); exit (EXIT_FAILURE); } } SCOTCH_graphMapExit (&grafdat, &mapodat); SCOTCH_graphMapExit (&grafdat, &mappdat); } SCOTCH_archExit (&archdat); for (stranum = 0; stranum < STRANBR; stranum ++) SCOTCH_stratExit (&stratab[stranum]); free (parotab); free (parttab); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/Makefile0000644000302600021200000004534013560014020016556 0ustar pelegrinpelegrin## Copyright 2011,2012,2014-2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ## ## This file is part of the Scotch software package for static mapping, ## graph partitioning and sparse matrix ordering. ## ## This software is governed by the CeCILL-C license under French law ## and abiding by the rules of distribution of free software. You can ## use, modify and/or redistribute the software under the terms of the ## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ## URL: "http://www.cecill.info". ## ## As a counterpart to the access to the source code and rights to copy, ## modify and redistribute granted by the license, users are provided ## only with a limited warranty and the software's author, the holder of ## the economic rights, and the successive licensors have only limited ## liability. ## ## In this respect, the user's attention is drawn to the risks associated ## with loading, using, modifying and/or developing or reproducing the ## software by the user in light of its specific status of free software, ## that may mean that it is complicated to manipulate, and that also ## therefore means that it is reserved for developers and experienced ## professionals having in-depth computer knowledge. Users are therefore ## encouraged to load and test the software's suitability as regards ## their requirements in conditions enabling the security of their ## systems and/or data to be ensured and, more generally, to use and ## operate it in the same conditions as regards security. ## ## The fact that you are presently reading this means that you have had ## knowledge of the CeCILL-C license and that you accept its terms. ## TMPDIR = /tmp SCOTCHBINDIR = ../../bin SCOTCHINCDIR = ../../include SCOTCHLIBDIR = ../../lib SCOTCHTGTDIR = ../../tgt LIBPTSCOTCH = -lptscotch -lscotch -lptscotcherr LIBSCOTCH = -lscotchmetis -lscotch -lscotcherr DEPPTSCOTCH = $(SCOTCHLIBDIR)/libptscotch$(LIB) DEPSCOTCH = $(SCOTCHLIBDIR)/libscotch$(LIB) EXECS ?= EXECP ?= mpirun -n 3 EXECP4 ?= mpirun -n 4 # EXECP ?= mpirun -n 3 valgrind --leak-check=full --track-origins=yes # EXECP ?= mpirun -n 3 --oversubscribe PROGDIFF ?= diff -q ## ## General inference rules. ## include ../Makefile.inc %$(OBJ) : %.c $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(SCOTCHINCDIR) -c $(<) -o $(@) %$(EXE) : %.c $(CC) $(CFLAGS) -I$(SCOTCHINCDIR) -L$(SCOTCHLIBDIR) $(<) -o $(@) $(SCOTCHLIBS) $(LDFLAGS) ## ## Project rules. ## .PHONY : check ptcheck clean realclean check : realclean $(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIBS="$(LIBSCOTCH)" $(CHECKSCOTCH) ptcheck : realclean $(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIBS="$(LIBPTSCOTCH)" $(CHECKPTSCOTCH) clean : -$(RM) *~ *$(OBJ) realclean : clean -$(RM) \ test_common_file_compress \ test_common_random \ test_common_thread \ test_fibo \ test_libmetis \ test_scotch_arch \ test_scotch_arch_deco \ test_scotch_graph_coarsen \ test_scotch_graph_color \ test_scotch_graph_diam \ test_scotch_graph_induce \ test_scotch_graph_map \ test_scotch_graph_map_copy \ test_scotch_graph_order \ test_scotch_graph_part_ovl \ test_scotch_dgraph_band \ test_scotch_dgraph_check \ test_scotch_dgraph_coarsen \ test_scotch_dgraph_grow \ test_scotch_dgraph_induce \ test_scotch_dgraph_redist \ test_scotch_mesh_graph \ test_strat_par \ test_strat_seq ## ## Test cases dependencies. ## CHECKSCOTCH = check_common_file_compress \ check_common_random \ check_common_thread \ check_fibo \ check_strat_seq \ check_scotch_arch \ check_scotch_arch_deco \ check_scotch_graph_coarsen \ check_scotch_graph_color \ check_scotch_graph_diam \ check_scotch_graph_induce \ check_scotch_graph_map \ check_scotch_graph_map_copy \ check_scotch_graph_order \ check_scotch_graph_part_ovl \ check_scotch_mesh_graph \ check_libmetis \ check_prog_amk \ check_prog_amk_grf \ check_prog_acpl \ check_prog_gbase \ check_prog_gmap \ check_prog_gmk \ check_prog_gord \ check_prog_gout \ check_prog_gpart \ check_prog_gpart_clustering \ check_prog_gpart_overlap \ check_prog_gpart_remap \ check_prog_gscat \ check_prog_gtst \ check_prog_mmk \ check_prog_mord CHECKPTSCOTCH = check_strat_par \ check_scotch_dgraph_check \ check_scotch_dgraph_band \ check_scotch_dgraph_coarsen \ check_scotch_dgraph_grow \ check_scotch_dgraph_induce \ check_scotch_dgraph_redist \ check_prog_dgord \ check_prog_dgpart \ check_prog_dgscat-dggath \ check_prog_dgtst ## ## Sequential library tests. ## check_common_file_compress : test_common_file_compress -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.gz" $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.gz" "$(TMPDIR)/bump_b1.grf" $(PROGDIFF) "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.bz2" $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.bz2" "$(TMPDIR)/bump_b1.grf" $(PROGDIFF) "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" -cp "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" $(EXECS) ./test_common_file_compress "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf.lzma" $(EXECS) ./test_common_file_compress "$(TMPDIR)/bump_b1.grf.lzma" "$(TMPDIR)/bump_b1.grf" $(PROGDIFF) "data/bump_b1.grf" "$(TMPDIR)/bump_b1.grf" test_common_file_compress : test_common_file_compress.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_common_random : test_common_random $(EXECS) ./test_common_random "$(TMPDIR)/rand.dat" 0 $(EXECS) ./test_common_random "$(TMPDIR)/rand.dat" 1 test_common_random : test_common_random.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_common_thread : test_common_thread $(EXECS) ./test_common_thread test_common_thread : test_common_thread.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_fibo : test_fibo $(EXECS) ./test_fibo test_fibo : test_fibo.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_libmetis : test_libmetis $(EXECS) ./test_libmetis data/bump.grf $(EXECS) ./test_libmetis data/bump_b1.grf $(EXECS) ./test_libmetis data/bump_imbal_32.grf test_libmetis : test_libmetis.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) \ $(SCOTCHLIBDIR)/libscotchmetis$(LIB) ## check_scotch_arch : test_scotch_arch $(EXECS) ./test_scotch_arch "$(TMPDIR)/arch.tgt" test_scotch_arch : test_scotch_arch.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_arch_deco : test_scotch_arch_deco $(EXECS) ./test_scotch_arch_deco data/m4x4.grf "$(TMPDIR)/arch2.tgt" # $(EXECS) ./test_scotch_arch_deco data/m4x4_b1.grf "$(TMPDIR)/arch2.tgt" test_scotch_arch_deco : test_scotch_arch_deco.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_coarsen : test_scotch_graph_coarsen $(EXECS) ./test_scotch_graph_coarsen data/bump.grf $(EXECS) ./test_scotch_graph_coarsen data/bump_b100000.grf test_scotch_graph_coarsen : test_scotch_graph_coarsen.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_color : test_scotch_graph_color $(EXECS) ./test_scotch_graph_color data/bump.grf $(EXECS) ./test_scotch_graph_color data/bump_b100000.grf test_scotch_graph_color : test_scotch_graph_color.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_diam : test_scotch_graph_diam $(EXECS) ./test_scotch_graph_diam data/bump.grf $(EXECS) ./test_scotch_graph_diam data/bump_b100000.grf $(EXECS) ./test_scotch_graph_diam data/m16x16_b1.grf $(EXECS) ./test_scotch_graph_diam data/p2-p2.grf test_scotch_graph_diam : test_scotch_graph_diam.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_induce : test_scotch_graph_induce $(EXECS) ./test_scotch_graph_induce data/bump.grf $(EXECS) ./test_scotch_graph_induce data/bump_b100000.grf test_scotch_graph_induce : test_scotch_graph_induce.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_map : test_scotch_graph_map $(EXECS) ./test_scotch_graph_map data/m4x4.grf $(EXECS) ./test_scotch_graph_map data/m4x4_b1.grf $(EXECS) ./test_scotch_graph_map data/m16x16.grf $(EXECS) ./test_scotch_graph_map data/m16x16_b1.grf test_scotch_graph_map : test_scotch_graph_map.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_map_copy : test_scotch_graph_map_copy $(EXECS) ./test_scotch_graph_map_copy data/bump.grf $(EXECS) ./test_scotch_graph_map_copy data/bump_b100000.grf test_scotch_graph_map_copy : test_scotch_graph_map_copy.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_order : test_scotch_graph_order $(EXECS) ./test_scotch_graph_order data/bump.grf $(EXECS) ./test_scotch_graph_order data/bump_b100000.grf test_scotch_graph_order : test_scotch_graph_order.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_graph_part_ovl : test_scotch_graph_part_ovl $(EXECS) ./test_scotch_graph_part_ovl 4 data/m16x16.grf /dev/null $(EXECS) ./test_scotch_graph_part_ovl 4 data/m16x16_b1.grf /dev/null test_scotch_graph_part_ovl : test_scotch_graph_part_ovl.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_scotch_mesh_graph : test_scotch_mesh_graph $(EXECS) ./test_scotch_mesh_graph data/ship001.msh test_scotch_mesh_graph : test_scotch_mesh_graph.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## check_strat_seq : test_strat_seq $(EXECS) ./test_strat_seq test_strat_seq : test_strat_seq.c \ $(SCOTCHLIBDIR)/libscotch$(LIB) ## ## Parallel library tests. ## check_strat_par : test_strat_par $(EXECS) ./test_strat_par test_strat_par : test_strat_par.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_band : test_scotch_dgraph_band $(EXECP) ./test_scotch_dgraph_band data/bump.grf $(EXECP) ./test_scotch_dgraph_band data/bump_b100000.grf test_scotch_dgraph_band : test_scotch_dgraph_band.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_coarsen : test_scotch_dgraph_coarsen $(EXECP) ./test_scotch_dgraph_coarsen data/bump.grf $(EXECP) ./test_scotch_dgraph_coarsen data/bump_b100000.grf test_scotch_dgraph_coarsen : test_scotch_dgraph_coarsen.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_check : test_scotch_dgraph_check $(EXECP) ./test_scotch_dgraph_check data/bump.grf $(EXECP) ./test_scotch_dgraph_check data/bump_b100000.grf test_scotch_dgraph_check : test_scotch_dgraph_check.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_grow : test_scotch_dgraph_grow $(EXECP) ./test_scotch_dgraph_grow data/bump.grf $(EXECP) ./test_scotch_dgraph_grow data/bump_b100000.grf test_scotch_dgraph_grow : test_scotch_dgraph_grow.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_induce : test_scotch_dgraph_induce $(EXECP) ./test_scotch_dgraph_induce data/bump.grf $(EXECP) ./test_scotch_dgraph_induce data/bump_b100000.grf test_scotch_dgraph_induce : test_scotch_dgraph_induce.c \ $(SCOTCHLIBDIR)/libptscotch$(LIB) ## check_scotch_dgraph_redist : test_scotch_dgraph_redist $(EXECP) ./test_scotch_dgraph_redist data/bump.grf $(EXECP) ./test_scotch_dgraph_redist data/bump_b100000.grf test_scotch_dgraph_redist : test_scotch_dgraph_redist.c ## ## Sequential program tests. ## check_prog_acpl : check_prog_amk $(EXECS) $(SCOTCHBINDIR)/amk_m2 5 12 | $(SCOTCHBINDIR)/acpl | $(SCOTCHBINDIR)/atst check_prog_amk : check_prog_atst $(EXECS) $(SCOTCHBINDIR)/amk_ccc 5 | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_fft2 5 | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_hy 5 | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_m2 5 12 | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_m2 -mo 5 12 | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_p2 5 7 | $(SCOTCHBINDIR)/atst check_prog_amk_grf : check_prog_atst $(EXECS) $(SCOTCHBINDIR)/amk_grf data/m16x16.grf | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_grf -2 data/m16x16.grf | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_grf -ldata/m4x4_vertlist.txt data/m4x4.grf | $(SCOTCHBINDIR)/atst $(EXECS) $(SCOTCHBINDIR)/amk_grf -ldata/m4x4_vertlist.txt -2 data/m4x4.grf | $(SCOTCHBINDIR)/atst check_prog_atst : $(EXECS) $(SCOTCHBINDIR)/atst $(SCOTCHTGTDIR)/t4x4x4.tgt check_prog_gbase : $(EXECS) $(SCOTCHBINDIR)/gbase 1 data/m4x4.grf $(TMPDIR)/m4x4_b1.grf $(PROGDIFF) "data/m4x4_b1.grf" "$(TMPDIR)/m4x4_b1.grf" $(EXECS) $(SCOTCHBINDIR)/gbase 1 data/m4x4_b1.grf $(TMPDIR)/m4x4_b1.grf $(PROGDIFF) "data/m4x4_b1.grf" "$(TMPDIR)/m4x4_b1.grf" $(EXECS) $(SCOTCHBINDIR)/gbase 0 data/m4x4_b1.grf $(TMPDIR)/m4x4.grf $(PROGDIFF) "data/m4x4.grf" "$(TMPDIR)/m4x4.grf" check_prog_gmk : $(EXECS) $(SCOTCHBINDIR)/gmk_hy 5 | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_m2 5 1 | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -b1 5 4 -g/dev/null | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -t 5 4 | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_m2 -b1 -t 5 1 | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_m3 -b1 5 4 3 -g/dev/null | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_msh data/ship001.msh | $(SCOTCHBINDIR)/gtst $(EXECS) $(SCOTCHBINDIR)/gmk_ub2 5 | $(SCOTCHBINDIR)/gtst check_prog_mmk : $(EXECS) $(SCOTCHBINDIR)/mmk_m2 5 1 $(TMPDIR)/m2_5_1.msh $(EXECS) $(SCOTCHBINDIR)/mmk_m2 5 4 $(TMPDIR)/m2_5_4.msh $(EXECS) $(SCOTCHBINDIR)/mmk_m3 5 4 3 $(TMPDIR)/m2_5_4_3.msh $(EXECS) $(SCOTCHBINDIR)/mtst $(TMPDIR)/m2_5_1.msh $(EXECS) $(SCOTCHBINDIR)/mtst $(TMPDIR)/m2_5_4.msh $(EXECS) $(SCOTCHBINDIR)/mtst $(TMPDIR)/m2_5_4_3.msh check_prog_mcv : check_prog_mmk $(EXECS) $(SCOTCHBINDIR)/mcv $(TMPDIR)/m2_5_1.msh $(TMPDIR)/output_m2_5_1.msh -is -os $(EXECS) $(SCOTCHBINDIR)/mcv $(TMPDIR)/m2_5_4.msh $(TMPDIR)/output_m2_5_4.msh -is -os $(EXECS) $(SCOTCHBINDIR)/mcv $(TMPDIR)/m2_5_4_3.msh $(TMPDIR)/output_m2_5_4_3.msh -is -os $(PROGDIFF) $(TMPDIR)/m2_5_1.msh $(TMPDIR)/output_m2_5_1.msh $(PROGDIFF) $(TMPDIR)/m2_5_4.msh $(TMPDIR)/output_m2_5_4.msh $(PROGDIFF) $(TMPDIR)/m2_5_4_3.msh $(TMPDIR)/output_m2_5_4_3.msh check_prog_mord : check_prog_mmk $(EXECS) $(SCOTCHBINDIR)/gmk_msh $(TMPDIR)/m2_5_1.msh $(TMPDIR)/m2_5_1.grf $(EXECS) $(SCOTCHBINDIR)/gmk_msh $(TMPDIR)/m2_5_4.msh $(TMPDIR)/m2_5_4.grf $(EXECS) $(SCOTCHBINDIR)/gmk_msh $(TMPDIR)/m2_5_4_3.msh $(TMPDIR)/m2_5_4_3.grf $(EXECS) $(SCOTCHBINDIR)/mord $(TMPDIR)/m2_5_1.msh | $(SCOTCHBINDIR)/gotst $(TMPDIR)/m2_5_1.grf $(EXECS) $(SCOTCHBINDIR)/mord $(TMPDIR)/m2_5_4.msh | $(SCOTCHBINDIR)/gotst $(TMPDIR)/m2_5_4.grf $(EXECS) $(SCOTCHBINDIR)/mord $(TMPDIR)/m2_5_4_3.msh | $(SCOTCHBINDIR)/gotst $(TMPDIR)/m2_5_4_3.grf check_prog_gmap : $(EXECS) $(SCOTCHBINDIR)/gmap data/bump.grf $(SCOTCHTGTDIR)/h3.tgt $(TMPDIR)/bump_h3.map -vmt $(EXECS) $(SCOTCHBINDIR)/gmap data/small.grf $(SCOTCHTGTDIR)/m11x13.tgt $(TMPDIR)/small_m11x13.map -vmt check_prog_gord : $(EXECS) $(SCOTCHBINDIR)/gord data/bump.grf $(TMPDIR)/bump.ord -vt $(EXECS) $(SCOTCHBINDIR)/gord data/bump_b1.grf $(TMPDIR)/bump_b1.ord -vt $(EXECS) $(SCOTCHBINDIR)/gotst data/bump.grf $(TMPDIR)/bump.ord $(EXECS) $(SCOTCHBINDIR)/gotst data/bump_b1.grf $(TMPDIR)/bump_b1.ord check_prog_gout : check_prog_gord \ check_prog_gpart $(EXECS) $(SCOTCHBINDIR)/gout '-Om{e}' -gn data/bump.grf /dev/null $(TMPDIR)/bump.ord $(TMPDIR)/bump_ord.eps $(EXECS) $(SCOTCHBINDIR)/gout '-Op{d,e,g,r,s}' data/bump.grf data/bump.xyz $(TMPDIR)/bump_k9.map $(TMPDIR)/bump_k9.eps $(EXECS) $(SCOTCHBINDIR)/gout '-Oi{c,r}' data/bump.grf data/bump.xyz $(TMPDIR)/bump_k9.map $(TMPDIR)/bump_k9.iv check_prog_gpart : $(EXECS) $(SCOTCHBINDIR)/gpart 9 data/bump.grf $(TMPDIR)/bump_k9.map -vmt $(EXECS) $(SCOTCHBINDIR)/gpart 9 data/bump_b100000.grf $(TMPDIR)/bump_k9.map -vmt check_prog_gpart_clustering : $(EXECS) $(SCOTCHBINDIR)/gpart -q 1 data/bump.grf $(TMPDIR)/bump_part_cls_9.map -vmt $(EXECS) $(SCOTCHBINDIR)/gpart -q 1 data/bump_b100000.grf $(TMPDIR)/bump_b100000_part_cls_9.map -vmt $(EXECS) $(SCOTCHBINDIR)/gmtst data/bump_b100000.grf $(SCOTCHTGTDIR)/vcmplt.tgt $(TMPDIR)/bump_b100000_part_cls_9.map $(EXECS) $(SCOTCHBINDIR)/gpart -q 1 data/bump_imbal_32.grf $(TMPDIR)/bump_imbal_32_part_cls_32.map -vmt $(EXECS) $(SCOTCHBINDIR)/gmtst data/bump_imbal_32.grf $(SCOTCHTGTDIR)/vhcub.tgt $(TMPDIR)/bump_imbal_32_part_cls_32.map check_prog_gpart_overlap : $(EXECS) $(SCOTCHBINDIR)/gpart -o 9 data/bump.grf $(TMPDIR)/bump_part_ovl_9.map -vmt $(EXECS) $(SCOTCHBINDIR)/gpart -o 9 data/bump_b100000.grf $(TMPDIR)/bump_b100000_part_ovl_9.map -vmt $(EXECS) $(SCOTCHBINDIR)/gmtst -o data/bump_b100000.grf $(SCOTCHTGTDIR)/k9.tgt $(TMPDIR)/bump_b100000_part_ovl_9.map $(EXECS) $(SCOTCHBINDIR)/gpart -o 32 data/bump_imbal_32.grf $(TMPDIR)/bump_imbal_32_part_ovl_32.map -vmt $(EXECS) $(SCOTCHBINDIR)/gmtst data/bump_imbal_32.grf $(SCOTCHTGTDIR)/k32.tgt $(TMPDIR)/bump_imbal_32_part_ovl_32.map check_prog_gpart_remap : $(EXECS) $(SCOTCHBINDIR)/gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt check_prog_gscat : $(EXECS) $(SCOTCHBINDIR)/gscat 4 data/small.grf $(TMPDIR)/small_%r.grf check_prog_gtst : $(EXECS) $(SCOTCHBINDIR)/gtst data/m4x4_b1_ev.grf $(TMPDIR)/gtst_ev.txt $(EXECS) $(SCOTCHBINDIR)/gtst data/m4x4_b1_elv.grf $(TMPDIR)/gtst_elv.txt $(PROGDIFF) "$(TMPDIR)/gtst_ev.txt" "$(TMPDIR)/gtst_elv.txt" ## ## Parallel program tests. ## check_prog_dgord : $(EXECP) $(SCOTCHBINDIR)/dgord data/bump.grf /dev/null -vt $(EXECP) $(SCOTCHBINDIR)/dgord data/bump_b100000.grf /dev/null -vt $(EXECP4) $(SCOTCHBINDIR)/dgord data/small_%r.grf $(TMPDIR)/small.ord -vt check_prog_dgpart : $(EXECP) $(SCOTCHBINDIR)/dgpart 9 data/bump.grf /dev/null -vmt $(EXECP) $(SCOTCHBINDIR)/dgpart 9 data/bump_b100000.grf /dev/null -vmt $(EXECP4) $(SCOTCHBINDIR)/dgpart 50 data/small_%r.grf /dev/null -vmt check_prog_dgscat-dggath : TMP := $(shell mktemp -u) check_prog_dgscat-dggath : $(EXECP) $(SCOTCHBINDIR)/dgscat -r1 -c data/m16x16.grf "$(TMP)1_%r.grf" $(EXECP) $(SCOTCHBINDIR)/dggath -r1 -c "$(TMP)1_%r.grf" "$(TMP)1.grf" $(PROGDIFF) data/m16x16.grf "$(TMP)1.grf" $(EXECP) $(SCOTCHBINDIR)/dgscat -c data/m16x16_b1.grf "$(TMP)2_%r.grf" $(EXECP) $(SCOTCHBINDIR)/dggath -c "$(TMP)2_%r.grf" "$(TMP)2.grf" $(PROGDIFF) data/m16x16_b1.grf "$(TMP)2.grf" check_prog_dgtst : $(EXECP4) $(SCOTCHBINDIR)/dgtst data/small_%r.grf scotch_6.0.9/src/check/test_strat_par.c0000644000302600021200000001142613303015264020324 0ustar pelegrinpelegrin/* Copyright 2012,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_strat_seq.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the sequential **/ /** strategy building routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jan 2012 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include "ptscotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Strat stradat; SCOTCH_errorProg (argv[0]); if (argc != 1) { SCOTCH_errorPrint ("usage: %s", argv[0]); exit (EXIT_FAILURE); } printf ("Parallel mapping strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphMapBuild (&stradat, SCOTCH_STRATDEFAULT, 16, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Parallel mapping strategy, SCOTCH_STRATRECURSIVE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphMapBuild (&stradat, SCOTCH_STRATRECURSIVE, 16, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATDEFAULT, 1, 0, 0.2); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATLEVELMAX\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATLEVELMAX, 1, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATLEVELMIN\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATLEVELMIN, 1, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATLEVELMAX | SCOTCH_STRATLEVELMIN\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATLEVELMAX | SCOTCH_STRATLEVELMIN, 1, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATLEAFSIMPLE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATLEAFSIMPLE, 1, 0, 0.2); SCOTCH_stratExit (&stradat); printf ("Parallel ordering strategy, SCOTCH_STRATSEPASIMPLE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratDgraphOrderBuild (&stradat, SCOTCH_STRATSEPASIMPLE, 1, 0, 0.2); SCOTCH_stratExit (&stradat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_diam.c0000644000302600021200000001005013303015264021753 0ustar pelegrinpelegrin/* Copyright 2017,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_diam.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphColor() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 26 jan 2017 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" void _SCOTCHintRandInit (void); SCOTCH_Num _SCOTCHintRandVal (SCOTCH_Num); /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Num diamval; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); _SCOTCHintRandInit (); if ((diamval = SCOTCH_graphDiamPV (&grafdat)) < 0) { SCOTCH_errorPrint ("main: cannot compute graph pseudo-diameter"); exit (EXIT_FAILURE); } printf ("Graph pseudo-diameter: %ld\n", (long) diamval); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_grow.c0000644000302600021200000001770413303015264022200 0ustar pelegrinpelegrin/* Copyright 2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_grow.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_dgraphGrow() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 26 sep 2012 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include #include #include #include "ptscotch.h" void _SCOTCHintRandInit (void); SCOTCH_Num _SCOTCHintRandVal (SCOTCH_Num); /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Status statdat; MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ long vertlocadj; SCOTCH_Num vertglbnbr; SCOTCH_Num vertlocnbr; SCOTCH_Num vertgstnbr; SCOTCH_Num * seedloctab; SCOTCH_Num * partgsttab; SCOTCH_Num baseval; SCOTCH_Dgraph grafdat; FILE * file; int procnum; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("main: invalid number of parameters"); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphGhst (&grafdat) != 0) { SCOTCH_errorPrint ("main: cannot compute ghost edge array"); exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, &baseval, &vertglbnbr, &vertlocnbr, NULL, &vertgstnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((seedloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: cannot allocate seed array"); exit (EXIT_FAILURE); } if ((partgsttab = malloc (vertgstnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: cannot allocate part array"); exit (EXIT_FAILURE); } memset (partgsttab, ~0, vertgstnbr * sizeof (SCOTCH_Num)); _SCOTCHintRandInit (); seedloctab[0] = _SCOTCHintRandVal (vertlocnbr); seedloctab[1] = _SCOTCHintRandVal (vertlocnbr); seedloctab[2] = _SCOTCHintRandVal (vertlocnbr); partgsttab[seedloctab[0] - baseval] = 0; partgsttab[seedloctab[1] - baseval] = 1; partgsttab[seedloctab[2] - baseval] = 2; if (SCOTCH_dgraphGrow (&grafdat, 3, seedloctab, 4, partgsttab) != 0) { SCOTCH_errorPrint ("main: cannot compute grown regions"); exit (EXIT_FAILURE); } free (seedloctab); for (procnum = 0; procnum < procglbnbr; procnum ++) { SCOTCH_Num vertlocnum; MPI_Barrier (proccomm); if (procnum == proclocnum) { if ((file = fopen ("/tmp/test_scotch_dgraph_grow.map", (procnum == 0) ? "w" : "a+")) == NULL) { SCOTCH_errorPrint ("main: cannot open mapping file"); exit (EXIT_FAILURE); } if (procnum == 0) { fprintf (file, "%ld\n", (long) vertglbnbr); vertlocadj = (long) baseval; } else MPI_Recv (&vertlocadj, 1, MPI_LONG, procnum - 1, 0, MPI_COMM_WORLD, &statdat); for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) fprintf (file, "%ld\t%ld\n", vertlocadj + (long) vertlocnum, (long) partgsttab[vertlocnum]); fclose (file); if (procnum < (procglbnbr - 1)) { vertlocadj += (long) vertlocnbr; MPI_Send (&vertlocadj, 1, MPI_LONG, procnum + 1, 0, MPI_COMM_WORLD); } } } SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_mesh_graph.c0000644000302600021200000001001213303015264021773 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_mesh_graph.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphColor() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 11 feb 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Mesh meshdat; SCOTCH_Graph grafdat; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_meshInit (&meshdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize mesh"); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_meshLoad (&meshdat, fileptr, -1) != 0) { /* Read source mesh */ SCOTCH_errorPrint ("main: cannot load mesh"); exit (EXIT_FAILURE); } fclose (fileptr); if (SCOTCH_meshGraph (&meshdat, &grafdat) != 0) { SCOTCH_errorPrint ("main: cannot create graph from mesh"); exit (EXIT_FAILURE); } SCOTCH_graphExit (&grafdat); SCOTCH_meshExit (&meshdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_multilib.c0000644000302600021200000001046213303015264020145 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_multilib.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the use of two **/ /** versions of the libScotch libraries. **/ /** **/ /** DATES : # Version 6.0 : from : 27 apr 2018 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #include "scotch_64.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Num vertnbr; SCOTCH_Graph_64 grafdat_64; SCOTCH_Num_64 vertnbr_64; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if ((SCOTCH_graphInit (&grafdat) != 0) || (SCOTCH_graphInit_64 (&grafdat_64) != 0)) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph (1)"); exit (EXIT_FAILURE); } fclose (fileptr); if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad_64 (&grafdat_64, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph (2)"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphSize (&grafdat, &vertnbr, NULL); SCOTCH_graphSize_64 (&grafdat_64, &vertnbr_64, NULL); SCOTCH_graphExit (&grafdat); SCOTCH_graphExit_64 (&grafdat_64); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_coarsen.c0000644000302600021200000003044113303015264022501 0ustar pelegrinpelegrin/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the sequential graph coarsening **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 15 oct 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Num baseval; /* Base value */ SCOTCH_Graph finegrafdat; /* Fine graph */ SCOTCH_Num finevertnbr; /* Number of fine vertices */ SCOTCH_Num finevertnnd; /* Based end of vertex array */ SCOTCH_Num finevertnum; SCOTCH_Num * fineverttax; SCOTCH_Num * finevendtax; SCOTCH_Num * fineedgetax; SCOTCH_Num * finematetax; SCOTCH_Graph coargrafdat; /* Coarse graph */ SCOTCH_Num * coarmulttab; /* Multinode array */ SCOTCH_Num coarvertnbr; /* Number of coarse vertices */ SCOTCH_Num coarvertnum; SCOTCH_Num coarverttmp; SCOTCH_Num coaredgenbr; FILE * fileptr; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&finegrafdat) != 0) { /* Initialize fine source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Open fine graph file */ SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&finegrafdat, fileptr, -1, 0) != 0) { /* Read fine source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphData (&finegrafdat, &baseval, &finevertnbr, &fineverttax, &finevendtax, NULL, NULL, NULL, &fineedgetax, NULL); fineverttax -= baseval; finevendtax -= baseval; fineedgetax -= baseval; if ((finematetax = malloc (finevertnbr * sizeof (SCOTCH_Num))) == NULL) { /* Array is un-based */ SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } coarvertnbr = 0; /* Set minimum number of vertices in graph */ if (SCOTCH_graphCoarsenMatch (&finegrafdat, &coarvertnbr, 1.0, SCOTCH_COARSENNOMERGE, finematetax) != 0) { SCOTCH_errorPrint ("main: cannot compute matching"); exit (EXIT_FAILURE); } finematetax -= baseval; /* Array is based from now on */ for (finevertnum = baseval, finevertnnd = finevertnbr + baseval, coarverttmp = finevertnbr; finevertnum < finevertnnd; finevertnum ++) { SCOTCH_Num finevertend; finevertend = finematetax[finevertnum]; if ((finevertend < baseval) || (finevertend >= finevertnnd)) { SCOTCH_errorPrint ("main: invalid mate array (1)"); exit (EXIT_FAILURE); } if (finevertend > finevertnum) { /* If mates make a multinode (counted once) */ coarverttmp --; /* One less coarse vertex */ if (finematetax[finevertend] != finevertnum) { SCOTCH_errorPrint ("main: invalid mate array (2)"); exit (EXIT_FAILURE); } } } if (coarverttmp != coarvertnbr) { SCOTCH_errorPrint ("main: invalid mate array (3)"); exit (EXIT_FAILURE); } printf ("Mate array has " SCOTCH_NUMSTRING " vertices\n", coarvertnbr); printf ("Graph mated with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); if ((coarmulttab = malloc (coarvertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (2)"); exit (EXIT_FAILURE); } if (SCOTCH_graphCoarsenBuild (&finegrafdat, coarvertnbr, finematetax + baseval, &coargrafdat, coarmulttab) != 0) { SCOTCH_errorPrint ("main: cannot compute coarse graph (1)"); exit (EXIT_FAILURE); } SCOTCH_graphSize (&coargrafdat, &coarvertnbr, &coaredgenbr); printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", coarvertnbr, coaredgenbr); printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); for (coarvertnum = 0, coarverttmp = finevertnbr, finevertnnd = finevertnbr + baseval; coarvertnum < coarvertnbr; coarvertnum ++) { SCOTCH_Num finevertnum0; SCOTCH_Num finevertnum1; finevertnum0 = coarmulttab[2 * coarvertnum]; finevertnum1 = coarmulttab[2 * coarvertnum + 1]; if ((finevertnum0 < baseval) || (finevertnum0 >= finevertnnd) || (finevertnum1 < baseval) || (finevertnum1 >= finevertnnd)) { SCOTCH_errorPrint ("main: invalid multinode array (1)"); exit (EXIT_FAILURE); } if (finevertnum0 != finevertnum1) coarverttmp --; } if (coarverttmp != coarvertnbr) { SCOTCH_errorPrint ("main: invalid multinode array (2)"); exit (EXIT_FAILURE); } SCOTCH_graphExit (&coargrafdat); free (coarmulttab); /* Free first multinode array */ memset (finematetax + baseval, ~0, finevertnbr * sizeof (SCOTCH_Num)); /* Set based array to "-1"'s */ for (finevertnum = baseval, finevertnnd = finevertnbr + baseval, coarvertnbr = 0; /* Compute simple matching */ finevertnum < finevertnnd; finevertnum ++) { SCOTCH_Num finematenum; if (finematetax[finevertnum] >= 0) /* If vertex already matched */ continue; coarvertnbr ++; /* One more coarse vertex will be created */ finematenum = finevertnum; /* Assume we mate with ourselves */ if (fineverttax[finevertnum] == finevendtax[finevertnum]) { /* If isolated vertex */ while (1) { /* Use first free vertex as a mate */ if (++ finevertnum >= finevertnnd) { /* If no other free vertex available */ finematetax[finematenum] = finematenum; /* Mate isolated vertex with itself */ goto endloop; /* Exit nested loops */ } if (finematetax[finevertnum] < 0) /* If vertex is free, keep it as mate */ break; /* Increment performed in outer loop */ } } else { SCOTCH_Num fineedgenum; for (fineedgenum = fineverttax[finevertnum]; /* Find a suitable mate */ fineedgenum < finevendtax[finevertnum]; fineedgenum ++) { SCOTCH_Num finevertend; finevertend = fineedgetax[fineedgenum]; /* FInd end vertex */ if (finematetax[finevertend] < 0) { /* If vertex is free */ finematenum = finevertend; /* Keep vertex as mate */ break; } } } finematetax[finevertnum] = finematenum; finematetax[finematenum] = finevertnum; } endloop: printf ("Mate array has " SCOTCH_NUMSTRING " vertices\n", coarvertnbr); printf ("Graph mated with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); if ((coarmulttab = malloc (coarvertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (3)"); exit (EXIT_FAILURE); } if (SCOTCH_graphCoarsenBuild (&finegrafdat, coarvertnbr, finematetax + baseval, &coargrafdat, coarmulttab) != 0) { SCOTCH_errorPrint ("main: cannot compute coarse graph (2)"); exit (EXIT_FAILURE); } SCOTCH_graphSize (&coargrafdat, &coarvertnbr, &coaredgenbr); printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", coarvertnbr, coaredgenbr); printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); SCOTCH_graphExit (&coargrafdat); free (coarmulttab); /* Free second multinode array */ free (finematetax + baseval); if ((coarmulttab = malloc (finevertnbr * 2 * sizeof (SCOTCH_Num))) == NULL) { /* Number of coarse vertices and ratio not bounded */ SCOTCH_errorPrint ("main: out of memory (3)"); exit (EXIT_FAILURE); } if (SCOTCH_graphCoarsen (&finegrafdat, 1, 1.0, SCOTCH_COARSENNONE, &coargrafdat, coarmulttab) != 0) { SCOTCH_errorPrint ("main: cannot coarsen graph"); exit (EXIT_FAILURE); } SCOTCH_graphSize (&coargrafdat, &coarvertnbr, NULL); printf ("Coarse graph has " SCOTCH_NUMSTRING " vertices and " SCOTCH_NUMSTRING " edges\n", coarvertnbr, coaredgenbr); printf ("Graph coarsened with a ratio of %lg\n", (double) coarvertnbr / (double) finevertnbr); for (coarvertnum = 0, coarverttmp = finevertnbr, finevertnnd = finevertnbr + baseval; coarvertnum < coarvertnbr; coarvertnum ++) { SCOTCH_Num finevertnum0; SCOTCH_Num finevertnum1; finevertnum0 = coarmulttab[2 * coarvertnum]; finevertnum1 = coarmulttab[2 * coarvertnum + 1]; if ((finevertnum0 < baseval) || (finevertnum0 >= finevertnnd) || (finevertnum1 < baseval) || (finevertnum1 >= finevertnnd)) { SCOTCH_errorPrint ("main: invalid multinode array (3)"); exit (EXIT_FAILURE); } if (finevertnum0 != finevertnum1) coarverttmp --; } if (coarverttmp != coarvertnbr) { SCOTCH_errorPrint ("main: invalid multinode array (4)"); exit (EXIT_FAILURE); } SCOTCH_graphExit (&coargrafdat); free (coarmulttab); /* Free third multinode array */ SCOTCH_graphExit (&finegrafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_fibo.c0000644000302600021200000002022013303015264017234 0ustar pelegrinpelegrin/* Copyright 2016,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_fibo.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the fibonacci heap **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 23 aug 2016 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif /* _XOPEN_SOURCE */ #ifndef __USE_XOPEN2K #define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ #endif /* __USE_XOPEN2K */ #include #include #include #include #include "../libscotch/module.h" #include "../libscotch/common.h" #include "../libscotch/fibo.h" /* ** The type and structure definitions. */ /* The fibo cell structure. */ typedef struct TestFibo_ { FiboNode nodedat; /* TRICK: FIRST */ int randval; } TestFibo; /***************************/ /* */ /* The comparison routine. */ /* */ /***************************/ static int testFiboCmpFunc ( const FiboNode * nod0ptr, const FiboNode * nod1ptr) { int ran0val; int ran1val; ran0val = ((TestFibo *) nod0ptr)->randval; ran1val = ((TestFibo *) nod1ptr)->randval; if (ran0val < ran1val) return (-1); return (1); } /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FiboHeap fibodat; TestFibo * nodetab; TestFibo * nodeptr; int nodesiz; int nodemax; int nodenbr; int nodenum; int nodetmp; int randval; int randtmp; int passnbr; int passnum; SCOTCH_errorProg (argv[0]); if (fiboHeapInit (&fibodat, testFiboCmpFunc) != 0) { SCOTCH_errorPrint ("main: cannot initialize Fibonacci heap"); exit (EXIT_FAILURE); } intRandInit (); /* Initialize random generator */ nodesiz = 100; passnbr = -1; switch (argc) { case 4 : intRandSeed (MAX (0, atoi (argv[3]))); case 3 : passnbr = MAX (1, atoi (argv[2])); case 2 : nodesiz = MAX (1, atoi (argv[1])); case 1 : break; default : SCOTCH_errorPrint ("usage: %s [nodenbr [passnbr [seed]]]", argv[0]); exit (EXIT_FAILURE); } if (passnbr < 0) passnbr = 10 * nodesiz; if ((nodetab = malloc (nodesiz * sizeof (TestFibo))) == NULL) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } for (nodenum = 0; nodenum < nodesiz; nodenum ++) /* Initialize node array */ nodetab[nodenum].randval = -1; nodemax = nodesiz - 1; /* Set maximum index */ nodenbr = 0; /* Array is empty */ for (passnum = 0; passnum < passnbr; passnum ++) { switch (intRandVal (6)) { case 0 : /* Add node */ case 1 : case 2 : /* More additions than deletions on average */ if (nodenbr >= nodemax) break; for (nodenum = 0; nodenum <= nodemax; nodenum ++) { /* Search for a free slot */ if (nodetab[nodenum].randval < 0) break; } if (nodenum > nodemax) { SCOTCH_errorPrint ("main: invalid node array (1)"); exit (EXIT_FAILURE); } nodetab[nodenum].randval = abs (intRandVal (INTVALMAX)); fiboHeapAdd (&fibodat, (FiboNode *) &nodetab[nodenum]); nodenbr ++; break; case 3 : /* Remove arbitrary node */ if (nodenbr <= 0) break; nodetmp = intRandVal (nodenbr); for (nodenum = 0; ; nodenum ++) { /* Search for non-empty slot */ if (nodenum > nodemax) { SCOTCH_errorPrint ("main: invalid node array (2)"); exit (EXIT_FAILURE); } if (nodetab[nodenum].randval >= 0) { if (-- nodetmp <= 0) break; } } fiboHeapDel (&fibodat, (FiboNode *) &nodetab[nodenum]); nodetab[nodenum].randval = -1; nodenbr --; break; case 4 : /* Remove minimum node */ if (nodenbr <= 0) break; nodeptr = (TestFibo *) fiboHeapMin (&fibodat); randval = nodeptr->randval; /* Keep node key value */ fiboHeapDel (&fibodat, (FiboNode *) nodeptr); /* Remove node first */ nodeptr->randval = -1; nodenbr --; for (nodenum = 0; nodenum <= nodemax; nodenum ++) { /* Check if smaller node exists */ if ((nodetab[nodenum].randval >= 0) && (nodetab[nodenum].randval < randval)) { SCOTCH_errorPrint ("main: node is not of minimum key"); } } break; case 5 : /* Decrease value of arbitrary node */ if (nodenbr <= 0) break; nodetmp = intRandVal (nodenbr); for (nodenum = 0; ; nodenum ++) { /* Search for non-empty slot */ if (nodenum > nodemax) { SCOTCH_errorPrint ("main: invalid node array (3)"); exit (EXIT_FAILURE); } if (nodetab[nodenum].randval >= 0) { if (-- nodetmp <= 0) break; } } if (nodetab[nodenum].randval <= 0) /* Cannot decrease smallest value */ break; randtmp = intRandVal (nodetab[nodenum].randval + 1); if (randtmp > nodetab[nodenum].randval) break; nodetab[nodenum].randval -= randtmp; fiboHeapDecrease (&fibodat, (FiboNode *) &nodetab[nodenum]); break; } } fiboHeapExit (&fibodat); free (nodetab); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_arch.c0000644000302600021200000001555113303015264020610 0ustar pelegrinpelegrin/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_arch.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_arch*() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 25 jun 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #define ARCHNBR 20 /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Arch archtab[ARCHNBR]; SCOTCH_Num vnumnbr = 5; SCOTCH_Num vnumtab[8] = { 0, 4, 1, 5, 7, 11, 13, 15 }; SCOTCH_Num dimnnbr = 5; SCOTCH_Num dimntab[5] = { 3, 3, 5, 4, 8 }; SCOTCH_Num levlnbr = 3; SCOTCH_Num sizetab[3] = { 6, 3, 4 }; SCOTCH_Num linktab[3] = { 20, 5, 1 }; int archnbr = 0; int i; SCOTCH_errorProg (argv[0]); SCOTCH_randomReset (); if (SCOTCH_archHcub (&archtab[archnbr ++], 4) != 0) { /* TRICK: must be in rank 0 to create sub-architecture from it */ SCOTCH_errorPrint ("main: cannot create hcub architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archCmplt (&archtab[archnbr ++], 8) != 0) { SCOTCH_errorPrint ("main: cannot create cmplt architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archMesh2 (&archtab[archnbr ++], 2, 4) != 0) { SCOTCH_errorPrint ("main: cannot create mesh2D architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archMesh3 (&archtab[archnbr ++], 3, 4, 5) != 0) { SCOTCH_errorPrint ("main: cannot create mesh3D architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archMeshX (&archtab[archnbr ++], dimnnbr, dimntab) != 0) { SCOTCH_errorPrint ("main: cannot create meshXD architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archTleaf (&archtab[archnbr ++], levlnbr, sizetab, linktab) != 0) { SCOTCH_errorPrint ("main: cannot create tleaf architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archTorus2 (&archtab[archnbr ++], 2, 4) != 0) { SCOTCH_errorPrint ("main: cannot create torus2D architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archTorus3 (&archtab[archnbr ++], 3, 4, 5) != 0) { SCOTCH_errorPrint ("main: cannot create torus3D architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archTorusX (&archtab[archnbr ++], dimnnbr, dimntab) != 0) { SCOTCH_errorPrint ("main: cannot create torusXD architecture"); exit (EXIT_FAILURE); } if (SCOTCH_archSub (&archtab[archnbr ++], &archtab[0], vnumnbr + 3, vnumtab) != 0) { /* TRICK: create sub-architecture of hypercube at rank 0 */ SCOTCH_errorPrint ("main: cannot create sub-architecture (1)"); exit (EXIT_FAILURE); } for (i = 0; i < archnbr; i ++) { if (SCOTCH_archSub (&archtab[i + archnbr], &archtab[i], vnumnbr, vnumtab) != 0) { /* Create sub-architectures (of sub-architecture, too) */ SCOTCH_errorPrint ("main: cannot create sub-architecture (%d)", 2 + i); exit (EXIT_FAILURE); } } archnbr *= 2; /* Number of architectures has doubled */ if ((fileptr = fopen (argv[1], "w+")) == NULL) { /* Write all architectures to file */ SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } for (i = 0; i < archnbr; i ++) { /* Save all architectures to same file */ if (SCOTCH_archSave (&archtab[i], fileptr) != 0) { SCOTCH_errorPrint ("main: cannot save architecture (%d)", 1 + i); exit (EXIT_FAILURE); } } fclose (fileptr); for (i = archnbr - 1; i >= 0; i --) /* Destroy architectures in reverse order to destroy sub-architectures first */ SCOTCH_archExit (&archtab[i]); if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read all architectures from file where they were written to */ SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } for (i = 0; i < archnbr; i ++) { if ((SCOTCH_archInit (&archtab[i]) != 0) || (SCOTCH_archLoad (&archtab[i], fileptr) != 0)) { SCOTCH_errorPrint ("main: cannot load architecture (%d)", 1 + i); exit (EXIT_FAILURE); } } fclose (fileptr); for (i = 0; i < archnbr; i ++) /* Destroy architectures in any order, as they are now all autonomous from each other */ SCOTCH_archExit (&archtab[i]); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_strat_seq.c0000644000302600021200000001257413465315041020344 0ustar pelegrinpelegrin/* Copyright 2012,2013,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_strat_seq.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the sequential **/ /** strategy building routines. **/ /** **/ /** DATES : # Version 6.0 : from : 08 jan 2012 **/ /** to 14 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Strat stradat; SCOTCH_errorProg (argv[0]); if (argc != 1) { SCOTCH_errorPrint ("usage: %s", argv[0]); exit (EXIT_FAILURE); } printf ("Sequential mapping strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphMapBuild (&stradat, SCOTCH_STRATDEFAULT, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Sequential mapping strategy, SCOTCH_STRATRECURSIVE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphMapBuild (&stradat, SCOTCH_STRATRECURSIVE, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Sequential mapping strategy, SCOTCH_STRATREMAP\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphMapBuild (&stradat, SCOTCH_STRATREMAP, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Sequential mapping strategy, SCOTCH_STRATRECURSIVE | SCOTCH_STRATREMAP\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphMapBuild (&stradat, SCOTCH_STRATRECURSIVE | SCOTCH_STRATREMAP, 16, 0.03); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATDEFAULT\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATDEFAULT, 0, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATDISCONNECTED\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATDISCONNECTED, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATLEVELMAX\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATLEVELMAX, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATLEVELMIN\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATLEVELMIN, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATLEVELMAX | SCOTCH_STRATLEVELMIN\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATLEVELMAX | SCOTCH_STRATLEVELMIN, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATLEAFSIMPLE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATLEAFSIMPLE, 3, 0.2); SCOTCH_stratExit (&stradat); printf ("Sequential ordering strategy, SCOTCH_STRATSEPASIMPLE\n"); SCOTCH_stratInit (&stradat); SCOTCH_stratGraphOrderBuild (&stradat, SCOTCH_STRATSEPASIMPLE, 3, 0.2); SCOTCH_stratExit (&stradat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_libmetis.c0000644000302600021200000001664313470114133020143 0ustar pelegrinpelegrin/* Copyright 2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_libmetis.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the libscotchmetis routines. **/ /** **/ /** DATES : # Version 6.0 : from : 15 may 2019 **/ /** to 19 may 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #include "metis.h" /* Our "metis.h" file */ /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Num baseval; SCOTCH_Num vertnbr; SCOTCH_Num * verttab; SCOTCH_Num * velotab; SCOTCH_Num * edgetab; SCOTCH_Num * edlotab; SCOTCH_Num edgecut; SCOTCH_Num * parttab; SCOTCH_Num * peritab; #if (SCOTCH_METIS_VERSION == 3) SCOTCH_Num fwgtval; #endif /* (SCOTCH_METIS_VERSION == 3) */ const SCOTCH_Num foptval = 0; const SCOTCH_Num partnbr = 9; #if (SCOTCH_METIS_VERSION == 5) const SCOTCH_Num awgttab[9] = { 2, 2, 1, 2, 2, 3, 1, 1, 1 }; const SCOTCH_Num nconval = 1; const double kbaltab[1] = { 0.05 }; #endif /* (SCOTCH_METIS_VERSION == 5) */ SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read a square 2D grid graph */ SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphData (&grafdat, &baseval, &vertnbr, &verttab, NULL, &velotab, NULL, NULL, &edgetab, &edlotab); if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((peritab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } #if (SCOTCH_METIS_VERSION == 3) fwgtval = ((velotab != NULL) ? 2 : 0) + ((edlotab != NULL) ? 1 : 0); if (METIS_PartGraphKway (&vertnbr, verttab, edgetab, velotab, edlotab, &fwgtval, &baseval, &partnbr, &foptval, &edgecut, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_PartGraphKway"); exit (EXIT_FAILURE); } if (METIS_PartGraphRecursive (&vertnbr, verttab, edgetab, velotab, edlotab, &fwgtval, &baseval, &partnbr, &foptval, &edgecut, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_PartGraphRecursive"); exit (EXIT_FAILURE); } fwgtval &= ~2; /* Take vertex load array as communication volume array */ if (METIS_PartGraphVKway (&vertnbr, verttab, edgetab, NULL, velotab, &fwgtval, &baseval, &partnbr, &foptval, &edgecut, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_PartGraphKway"); exit (EXIT_FAILURE); } if (METIS_EdgeND (&vertnbr, verttab, edgetab, &baseval, &foptval, peritab, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_EdgeND"); exit (EXIT_FAILURE); } if (METIS_NodeND (&vertnbr, verttab, edgetab, &baseval, &foptval, peritab, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_NodeND"); exit (EXIT_FAILURE); } if (METIS_NodeWND (&vertnbr, verttab, edgetab, velotab, &baseval, &foptval, peritab, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V3_NodeWND"); exit (EXIT_FAILURE); } #endif /* (SCOTCH_METIS_VERSION == 3) */ #if (SCOTCH_METIS_VERSION == 5) SCOTCH_graphBase (&grafdat, 0); /* MeTiS v5 no longer handles graph base */ if (METIS_PartGraphKway (&vertnbr, &nconval, verttab, edgetab, velotab, NULL, edlotab, &partnbr, awgttab, kbaltab, &foptval, &edgecut, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V5_PartGraphKway"); exit (EXIT_FAILURE); } if (METIS_PartGraphRecursive (&vertnbr, &nconval, verttab, edgetab, velotab, NULL, edlotab, &partnbr, awgttab, kbaltab, &foptval, &edgecut, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V5_PartGraphRecursive"); exit (EXIT_FAILURE); } if (METIS_NodeND (&vertnbr, verttab, edgetab, velotab, &foptval, peritab, parttab) != METIS_OK) { SCOTCH_errorPrint ("main: error in METIS_V5_NodeND"); exit (EXIT_FAILURE); } #endif /* (SCOTCH_METIS_VERSION == 5) */ free (peritab); free (parttab); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_coarsen.c0000644000302600021200000002032113303015264022641 0ustar pelegrinpelegrin/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_coarsen.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_dgraphCoarsen() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 28 sep 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include #include #include "ptscotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ SCOTCH_Num vertglbnbr; SCOTCH_Num vertlocnbr; SCOTCH_Dgraph grafdat; SCOTCH_Dgraph coargrafdat; SCOTCH_Num coarvertglbnbr; SCOTCH_Num coarvertlocnbr; double coarrat; FILE * file; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ int i; SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph (1)"); exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); coarrat = 0.8; /* Lazy coarsening ratio */ for (i = 0; i < 3; i ++) { /* For all test cases */ SCOTCH_Num * multloctab; SCOTCH_Num multlocsiz; SCOTCH_Num foldval; char * foldstr; char * coarstr; int procnum; int o; switch (i) { case 0 : multlocsiz = vertlocnbr; foldval = SCOTCH_COARSENNONE; foldstr = "Plain coarsening"; break; case 1 : multlocsiz = (SCOTCH_Num) (((double) vertglbnbr * coarrat) / (double) (procglbnbr / 2)) + 1; foldval = SCOTCH_COARSENFOLD; foldstr = "Folding"; break; case 2 : multlocsiz = (SCOTCH_Num) (((double) vertglbnbr * coarrat) / (double) (procglbnbr / 2)) + 1; foldval = SCOTCH_COARSENFOLDDUP; foldstr = "Folding with duplication"; break; } if (proclocnum == 0) printf ("%s\n", foldstr); if ((multloctab = malloc (multlocsiz * 2 * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: cannot allocate multinode array"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&coargrafdat, proccomm) != 0) { /* Initialize band graph */ SCOTCH_errorPrint ("main: cannot initialize graph (2)"); exit (EXIT_FAILURE); } o = SCOTCH_dgraphCoarsen (&grafdat, 0, coarrat, foldval, &coargrafdat, multloctab); SCOTCH_dgraphData (&coargrafdat, NULL, &coarvertglbnbr, &coarvertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); for (procnum = 0; procnum < procglbnbr; procnum ++) { switch (o) { case 0 : coarstr = "coarse graph created"; break; case 1 : coarstr = "graph could not be coarsened"; break; case 2 : coarstr = "folded graph not created here"; break; case 3 : coarstr = "cannot create coarse graph"; break; } if (procnum == proclocnum) printf ("%d: %s (%ld / %ld / %ld)\n", procnum, coarstr, (long) multlocsiz, (long) coarvertlocnbr, (long) vertlocnbr); MPI_Barrier (proccomm); } if (coarvertlocnbr > multlocsiz) { SCOTCH_errorPrint ("main: invalid local multinode array size"); exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&coargrafdat); free (multloctab); } SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_common_thread.c0000644000302600021200000001610513465315041021150 0ustar pelegrinpelegrin/* Copyright 2012,2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_common_thread.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the thread **/ /** management module. **/ /** **/ /** DATES : # Version 6.0 : from : 04 nov 2012 **/ /** to 10 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif /* _XOPEN_SOURCE */ #ifndef __USE_XOPEN2K #define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ #endif /* __USE_XOPEN2K */ #include #if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) #include #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ #include "../libscotch/module.h" #include "../libscotch/common.h" #define COMPVAL(n) (((n) * ((n) + 1)) / 2) /* ** The type and structure definitions. */ /*+ The block data structure +*/ typedef struct TestThreadGroup_ { ThreadGroupHeader thrddat; /*+ Thread handling data +*/ int redusum; /*+ Value to compare reduction to +*/ } TestThreadGroup; /*+ The thread-specific data block. +*/ typedef struct TestThread_ { ThreadHeader thrddat; /*+ Thread management data +*/ int reduval; /*+ Value to reduce +*/ int scanval; /*+ Value for scan +*/ int dummval; /*+ Dummy value for scan +*/ } TestThread; /*************************/ /* */ /* The threaded routine. */ /* */ /*************************/ #if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) static void testReduce ( TestThread * restrict const tlocptr, /* Pointer to local thread */ void * restrict const vlocptr, /* Pointer to local value */ void * restrict const vremptr) /* Pointer to remote value */ { TestThread * restrict const tremptr = (TestThread *) vremptr; tlocptr->reduval += tremptr->reduval; } static void testScan ( TestThread * restrict const tlocptr, /* Pointer to local thread */ int * restrict const vlocptr, /* Pointer to local value */ int * restrict const vremptr, /* Pointer to remote value */ const int phasval) /* Phase index */ { vlocptr[1 - phasval] = vlocptr[phasval] + ((vremptr == NULL) ? 0 : vremptr[phasval]); } static int testThreads ( TestThread * restrict thrdptr) { TestThreadGroup * restrict const grouptr = (TestThreadGroup *) (thrdptr->thrddat.grouptr); const int thrdnum = thrdptr->thrddat.thrdnum; int o; printf ("%d: running\n", thrdnum); o = 0; if (thrdnum == 0) printf ("Performing reduction\n"); threadBarrier (thrdptr); thrdptr->reduval = 1 + thrdptr->thrddat.thrdnum; threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) testReduce, 0); if ((thrdnum == 0) && /* Test reduction result on thread 0 */ (thrdptr->reduval != grouptr->redusum)) { printf ("0: invalid reduction operator\n"); o = 1; } if (thrdnum == 0) printf ("Performing scan\n"); threadBarrier (thrdptr); thrdptr->scanval = 1 + thrdptr->thrddat.thrdnum; threadScan (thrdptr, &thrdptr->scanval, (ThreadScanFunc) testScan); if (thrdptr->scanval != COMPVAL (thrdnum + 1)) { printf ("%d: invalid scan operator\n", thrdnum); o = 1; } threadBarrier (thrdptr); return (o); } #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { #if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) TestThreadGroup groudat; TestThread * restrict thrdtab; int thrdnbr; #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ SCOTCH_errorProg (argv[0]); #if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) thrdnbr = SCOTCH_PTHREAD_NUMBER; groudat.redusum = COMPVAL (thrdnbr); if ((thrdtab = malloc (thrdnbr * sizeof (TestThread))) == NULL) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } if (threadLaunch (&groudat, thrdtab, sizeof (TestThread), (ThreadLaunchStartFunc) testThreads, (ThreadLaunchJoinFunc) NULL, thrdnbr, THREADCANBARRIER | THREADCANREDUCE | THREADCANSCAN) != 0) { SCOTCH_errorPrint ("main: cannot launch or run threads"); exit (EXIT_FAILURE); } free (thrdtab); #else /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ printf ("Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD\n"); #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_induce.c0000644000302600021200000001425613465315041022331 0ustar pelegrinpelegrin/* Copyright 2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_graph_induce.c **/ /** **/ /** AUTHOR : Amaury JACQUES **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operations of **/ /** the SCOTCH_graphInduceList() and **/ /** SCOTCH_graphInducePart() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 15 apr 2019 **/ /** to 16 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "../libscotch/module.h" #include "scotch.h" void intRandInit (void); void intAscn (SCOTCH_Num *, SCOTCH_Num, SCOTCH_Num); void intPerm (SCOTCH_Num *, SCOTCH_Num); /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Num baseval; SCOTCH_Num orgvertnbr; SCOTCH_GraphPart2 * orgparttab; SCOTCH_Graph orggrafdat; SCOTCH_Graph indgrafdat; SCOTCH_Num * indlisttab; SCOTCH_Num indvertnbr; SCOTCH_Num indvertnum; if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&orggrafdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph (1)"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&orggrafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphData (&orggrafdat, &baseval, &orgvertnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if ((orgparttab = malloc (orgvertnbr * sizeof (SCOTCH_GraphPart2))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } if ((indlisttab = malloc (orgvertnbr * sizeof (SCOTCH_Num))) == NULL) { /* TRICK: size is orgvertnbr */ SCOTCH_errorPrint ("main: out of memory (2)"); exit (EXIT_FAILURE); } intRandInit (); /* Initialize random generator */ intAscn (indlisttab, orgvertnbr, baseval); intPerm (indlisttab, orgvertnbr); /* Random permutation of all original graph vertices */ indvertnbr = (orgvertnbr + 1) / 2; /* Keep only half of the original vertices */ memset (orgparttab, 0, orgvertnbr * sizeof (SCOTCH_GraphPart2)); for (indvertnum = 0; indvertnum < indvertnbr; indvertnum ++) /* Flag kept vertices as belonging to part 1 */ orgparttab[indlisttab[indvertnum] - baseval] = 1; if (SCOTCH_graphInit (&indgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph (2)"); exit (EXIT_FAILURE); } if (SCOTCH_graphInduceList (&orggrafdat, indvertnbr, indlisttab, &indgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot induce graph (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphCheck (&indgrafdat) != 0) { SCOTCH_errorPrint ("main: invalid induced graph (1)"); exit (EXIT_FAILURE); } SCOTCH_graphExit (&indgrafdat); if (SCOTCH_graphInit (&indgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph (3)"); exit (EXIT_FAILURE); } if (SCOTCH_graphInducePart (&orggrafdat, indvertnbr, orgparttab, 1, &indgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot induce graph (2)"); exit (EXIT_FAILURE); } if (SCOTCH_graphCheck (&indgrafdat) != 0) { SCOTCH_errorPrint ("main: invalid induced graph (2)"); exit (EXIT_FAILURE); } SCOTCH_graphExit (&indgrafdat); free (indlisttab); free (orgparttab); SCOTCH_graphExit (&orggrafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_part_ovl.c0000644000302600021200000002015313303015264022674 0ustar pelegrinpelegrin/* Copyright 2011,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_part_ovl.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the sequential **/ /** graph partitioning with overlap **/ /** routine. **/ /** **/ /** DATES : # Version 6.0 : from : 20 sep 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Graph grafdat; SCOTCH_Strat stradat; SCOTCH_Num baseval; SCOTCH_Num partnbr; SCOTCH_Num partnum; SCOTCH_Num * restrict parttax; SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num * verttab; SCOTCH_Num * vendtab; SCOTCH_Num * velotab; SCOTCH_Num * vlbltab; SCOTCH_Num * edgetax; SCOTCH_Num * restrict flagtab; SCOTCH_Num * restrict loadtab; SCOTCH_Num loadmin; SCOTCH_Num loadmax; SCOTCH_Num loadsum; double loadavg; FILE * fileptr; SCOTCH_errorProg (argv[0]); if ((argc < 4) || (argc > 5)) { SCOTCH_errorPrint ("usage: %s nparts input_source_graph_file output_mapping_file [strategy]", argv[0]); exit (EXIT_FAILURE); } if ((partnbr = (SCOTCH_Num) atoi (argv[1])) < 1) { SCOTCH_errorPrint ("main: invalid number of parts (\"%s\")", argv[1]); exit (EXIT_FAILURE); } if (SCOTCH_stratInit (&stradat) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); exit (EXIT_FAILURE); } if (argc == 5) { if (SCOTCH_stratGraphPartOvl (&stradat, argv[4]) != 0) { SCOTCH_errorPrint ("main: invalid user-provided strategy"); exit (EXIT_FAILURE); } } if (SCOTCH_graphInit (&grafdat) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[2], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphData (&grafdat, &baseval, &vertnbr, &verttab, &vendtab, &velotab, &vlbltab, NULL, &edgetax, NULL); if (((parttax = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((flagtab = malloc (partnbr * sizeof (SCOTCH_Num))) == NULL) || ((loadtab = malloc (partnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } if (SCOTCH_graphPartOvl (&grafdat, partnbr, &stradat, parttax) != 0) { /* Parttax is not based yet */ SCOTCH_errorPrint ("main: cannot compute mapping"); exit (EXIT_FAILURE); } edgetax -= baseval; parttax -= baseval; memset (loadtab, 0, partnbr * sizeof (SCOTCH_Num)); /* Part loads set to 0 */ memset (flagtab, ~0, partnbr * sizeof (SCOTCH_Num)); /* Flags set to invalid vertex number */ for (vertnum = 0; vertnum < vertnbr; vertnum ++) { SCOTCH_Num veloval; SCOTCH_Num partval; veloval = (velotab == NULL) ? 1 : velotab[vertnum]; partval = parttax[vertnum + baseval]; /* vertnum is not based */ if (partval >= 0) /* If vertex belongs to one part only */ loadtab[partval] += veloval; /* Add vertex load to this part */ else { /* Vertex belongs to several parts */ SCOTCH_Num edgenum; for (edgenum = verttab[vertnum]; edgenum < vendtab[vertnum]; edgenum ++) { SCOTCH_Num vertend; SCOTCH_Num partend; vertend = edgetax[edgenum]; partend = parttax[vertend]; /* vertend is based */ if (partend < 0) /* If neighbor has no identifiable part */ continue; if (flagtab[partend] == vertnum) /* If neighbor part already accounted for, skip it */ continue; loadtab[partend] += veloval; /* Vertex load contributes to this part */ flagtab[partend] = vertnum; /* Record a contribution has been made */ } } } loadsum = loadmax = 0; loadmin = SCOTCH_NUMMAX; for (partnum = 0; partnum < partnbr; partnum ++) { loadsum += loadtab[partnum]; if (loadtab[partnum] > loadmax) loadmax = loadtab[partnum]; if (loadtab[partnum] < loadmin) loadmin = loadtab[partnum]; printf ("M\tCompload[%02ld]\t%ld\n", (long) partnum, (long) loadtab[partnum]); } loadavg = (double) loadsum / (double) partnbr; printf ("M\tCompLoadAvg\t%g\n", (double) loadavg); printf ("M\tCompLoadMax/Avg\t%g\n", (double) loadmax / loadavg); if ((fileptr = fopen (argv[3], "w")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } if (fprintf (fileptr, "%ld\n", (long) vertnbr) == EOF) { SCOTCH_errorPrint ("main: bad output (1)"); exit (EXIT_FAILURE); } for (vertnum = 0; vertnum < vertnbr; vertnum ++) { if (fprintf (fileptr, "%ld\t%ld\n", (long) ((vlbltab == NULL) ? vertnum : vlbltab[vertnum]), (long) parttax[vertnum + baseval]) == EOF) { SCOTCH_errorPrint ("main: bad output (2)"); exit (EXIT_FAILURE); } } fclose (fileptr); free (loadtab); free (flagtab); free (parttax + baseval); SCOTCH_stratExit (&stradat); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_check.c0000644000302600021200000001303513303015264022270 0ustar pelegrinpelegrin/* Copyright 2014,2015,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_check.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_dgraphCheck() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 28 sep 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include #include #include "ptscotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ SCOTCH_Dgraph grafdat; FILE * file; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } file = NULL; if ((proclocnum == 0) && ((file = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) { SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } if (file != NULL) fclose (file); if (SCOTCH_dgraphCheck (&grafdat) != 0) { SCOTCH_errorPrint ("main: invalid graph"); exit (EXIT_FAILURE); } if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&grafdat); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_order.c0000644000302600021200000001474713532672164022211 0ustar pelegrinpelegrin/* Copyright 2014,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_order.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphOrderCompute*() **/ /** routines. **/ /** **/ /** DATES : # Version 6.0 : from : 05 aug 2014 **/ /** to 01 sep 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Ordering ordedat; SCOTCH_Strat stradat; SCOTCH_Num baseval; SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num listnbr; SCOTCH_Num listnum; SCOTCH_Num * listtab; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphData (&grafdat, &baseval, &vertnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL); listnbr = (vertnbr + 1) / 2; /* Only keep half of the vertices in induced graph */ if ((listtab = malloc (listnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } for (listnum = 0, vertnum = baseval + (listnbr / 4); /* Keep only middle half of the vertices */ listnum < listnbr; listnum ++, vertnum ++) listtab[listnum] = vertnum; if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */ SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } if (SCOTCH_stratInit (&stradat) != 0) { /* Initialize ordering strategy */ SCOTCH_errorPrint ("main: cannot initialize strategy"); exit (EXIT_FAILURE); } if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering */ SCOTCH_errorPrint ("main: cannot initialize ordering (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat) != 0) { SCOTCH_errorPrint ("main: cannot order graph"); exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) { SCOTCH_errorPrint ("main: invalid ordering (1)"); exit (EXIT_FAILURE); } SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */ SCOTCH_graphOrderSaveMap (&grafdat, &ordedat, fileptr); SCOTCH_graphOrderSaveTree (&grafdat, &ordedat, fileptr); SCOTCH_graphOrderExit (&grafdat, &ordedat); /* Free computed ordering */ if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering again */ SCOTCH_errorPrint ("main: cannot initialize ordering (2)"); exit (EXIT_FAILURE); } if (SCOTCH_graphOrderComputeList (&grafdat, &ordedat, listnbr, listtab, &stradat) != 0) { SCOTCH_errorPrint ("main: cannot order induced graph"); exit (EXIT_FAILURE); } if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) { SCOTCH_errorPrint ("main: invalid ordering (2)"); exit (EXIT_FAILURE); } SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */ SCOTCH_graphOrderSaveMap (&grafdat, &ordedat, fileptr); SCOTCH_graphOrderSaveTree (&grafdat, &ordedat, fileptr); fclose (fileptr); free (listtab); SCOTCH_stratExit (&stradat); SCOTCH_graphOrderExit (&grafdat, &ordedat); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_map.c0000644000302600021200000002335113532672200021631 0ustar pelegrinpelegrin/* Copyright 2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_map.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphMap*() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 12 aug 2014 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #define ARCHNBR 4 #define STRANBR 2 #define COORD(x,y) ((y) * xdimsiz + (x)) /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { SCOTCH_Mapping mappdat; /* Mapping to compute */ SCOTCH_Mapping mapodat; /* Old mapping */ FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Num xdimsiz; int archnum; SCOTCH_Arch archtab[ARCHNBR]; SCOTCH_Strat stratab[STRANBR]; int stranum; int typenum; SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num * parttab; SCOTCH_Num * parotab; SCOTCH_Num * vmlotab; SCOTCH_Num * vmloptr; /* vmlotab or NULL */ SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read a square 2D grid graph */ SCOTCH_errorPrint ("main: cannot open file (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphSize (&grafdat, &vertnbr, NULL); xdimsiz = (SCOTCH_Num) sqrt ((double) vertnbr); if (vertnbr != (xdimsiz * xdimsiz)) { SCOTCH_errorPrint ("main: graph is not a square grid"); exit (EXIT_FAILURE); } if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((parotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) || ((vmlotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Fill vertex migration load array */ vmlotab[vertnum] = vertnum % 3; for (stranum = 0; stranum < STRANBR; stranum ++) { /* Initialize mapping strategies */ if (SCOTCH_stratInit (&stratab[stranum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize strategy"); exit (EXIT_FAILURE); } } SCOTCH_stratGraphMapBuild (&stratab[0], SCOTCH_STRATRECURSIVE, 4, 0.05); SCOTCH_stratGraphMapBuild (&stratab[1], SCOTCH_STRATDEFAULT, 4, 0.05); for (archnum = 0; archnum < ARCHNBR; archnum ++) { /* Initialize architectures */ if (SCOTCH_archInit (&archtab[archnum]) != 0) { SCOTCH_errorPrint ("main: cannot initialize architecture"); exit (EXIT_FAILURE); } } SCOTCH_archCmplt (&archtab[0], 5); SCOTCH_archMesh2 (&archtab[1], 2, 2); SCOTCH_archMesh2 (&archtab[2], xdimsiz * 2, xdimsiz * 2); /* Oversized architecture */ SCOTCH_archVhcub (&archtab[3]); if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */ SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } for (stranum = 0; stranum < STRANBR; stranum ++) { for (archnum = 0; archnum < ARCHNBR; archnum ++) { SCOTCH_Num archsiz; if (SCOTCH_graphMapInit (&grafdat, &mappdat, &archtab[archnum], parttab) != 0) { /* Initialize new mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (1)"); exit (EXIT_FAILURE); } if (SCOTCH_graphMapInit (&grafdat, &mapodat, &archtab[archnum], parotab) != 0) { /* Initialize old mapping */ SCOTCH_errorPrint ("main: cannot initialize mapping (2)"); exit (EXIT_FAILURE); } archsiz = SCOTCH_archSize (&archtab[archnum]); for (typenum = 0; typenum < 6; typenum ++) { int i; int o; memset (parttab, ~0, xdimsiz * xdimsiz * sizeof (SCOTCH_Num)); /* Assume all vertices are not fixed */ if (archnum < 2) { /* For fixed-size architectures */ for (i = 0; i < (xdimsiz - 1); i ++) { /* Place fixed vertices at all four sides */ parttab[COORD (0, i)] = 0; parttab[COORD (i + 1, 0)] = 1; parttab[COORD (xdimsiz - 1, i + 1)] = archsiz - 2; parttab[COORD (i, xdimsiz - 1)] = archsiz - 1; } } else { /* For variable-sized architectures */ for (i = 0; i < (xdimsiz - 1); i ++) { /* Place fixed vertices at all four sides */ parttab[COORD (0, i)] = vertnbr - 2; parttab[COORD (i + 1, 0)] = vertnbr - 1; parttab[COORD (xdimsiz - 1, i + 1)] = vertnbr; parttab[COORD (i, xdimsiz - 1)] = vertnbr + 1; } } printf ("Strat %d, arch %d, type %d\n", stranum, archnum, typenum); vmloptr = vmlotab; switch (typenum) { case 0 : /* Plain mapping */ o = SCOTCH_graphMapCompute (&grafdat, &mappdat, &stratab[stranum]); memcpy (parotab, parttab, vertnbr * sizeof (SCOTCH_Num)); /* Use plain mapping as old mapping in the following */ break; case 1 : /* Plain mapping with fixed vertices */ o = SCOTCH_graphMapFixedCompute (&grafdat, &mappdat, &stratab[stranum]); break; case 2 : /* Remapping without vertex migration load array */ vmloptr = NULL; case 3 : /* Remapping with vertex migration load array */ o = SCOTCH_graphRemapCompute (&grafdat, &mappdat, &mapodat, 0.2, vmloptr, &stratab[stranum]); break; case 4 : /* Remapping with fixed vertices and without vertex migration load array */ vmloptr = NULL; case 5 : /* Remapping with fixed vertices and with vertex migration load array */ o = SCOTCH_graphRemapFixedCompute (&grafdat, &mappdat, &mapodat, 0.2, vmloptr, &stratab[stranum]); break; } if (o != 0) { SCOTCH_errorPrint ("main: cannot compute mapping"); exit (EXIT_FAILURE); } } SCOTCH_graphMapSave (&grafdat, &mappdat, fileptr); SCOTCH_graphMapExit (&grafdat, &mapodat); SCOTCH_graphMapExit (&grafdat, &mappdat); } } fclose (fileptr); for (archnum = 0; archnum < ARCHNBR; archnum ++) SCOTCH_archExit (&archtab[archnum]); for (stranum = 0; stranum < STRANBR; stranum ++) SCOTCH_stratExit (&stratab[stranum]); free (vmlotab); free (parotab); free (parttab); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_arch_deco.c0000644000302600021200000001512213542630762021607 0ustar pelegrinpelegrin/* Copyright 2015,2016,2018,2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_arch_deco.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_arch*() routines. **/ /** **/ /** DATES : # Version 6.0 : from : 28 dec 2015 **/ /** to 25 sep 2019 **/ /** **/ /** DATES : # This code derives from that of **/ /** test_scotch_arch.c **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" #define ARCHNBR 6 /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Num vertnbr; SCOTCH_Graph grafdat; SCOTCH_Strat stradat; SCOTCH_Arch archtab[ARCHNBR]; int archnbr = 0; int i; SCOTCH_Num listnbr = 5; SCOTCH_Num listtab[] = { 0, 4, 1, 5, 7 }; SCOTCH_errorProg (argv[0]); if (argc != 3) { SCOTCH_errorPrint ("usage: %s graph_file architecture_file", argv[0]); exit (EXIT_FAILURE); } SCOTCH_randomReset (); if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphSize (&grafdat, &vertnbr, NULL); if (vertnbr < 8) { SCOTCH_errorPrint ("main: graph is too small"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[2], "w")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } SCOTCH_stratInit (&stradat); for (i = 1, archnbr = 0; i <= 2; i ++) { int j; int o; if (i == 1) o = SCOTCH_archBuild0 (&archtab[archnbr], &grafdat, vertnbr, NULL, &stradat); else o = SCOTCH_archBuild2 (&archtab[archnbr], &grafdat, vertnbr, NULL); if (o != 0) { SCOTCH_errorPrint ("main: cannot create decomposition-described architecture (%d)", 2 * i - 1); exit (EXIT_FAILURE); } if (i == 1) o = SCOTCH_archBuild0 (&archtab[archnbr + 1], &grafdat, listnbr, listtab, &stradat); else o = SCOTCH_archBuild2 (&archtab[archnbr + 1], &grafdat, listnbr, listtab); if (o != 0) { SCOTCH_errorPrint ("main: cannot create decomposition-described architecture (%d)", 2 * i); exit (EXIT_FAILURE); } if (i == 2) { if (SCOTCH_archSub (&archtab[archnbr + 2], &archtab[archnbr], listnbr, listtab) != 0) { SCOTCH_errorPrint ("main: cannot create sub-architecture (%d)", i); exit (EXIT_FAILURE); } } for (j = 0; j < (1 + i); j ++) { if (SCOTCH_archSave (&archtab[archnbr + j], fileptr) != 0) { SCOTCH_errorPrint ("main: cannot save architecture (%d)", archnbr + 1 + j); exit (EXIT_FAILURE); } } archnbr += (1 + i); } fclose (fileptr); SCOTCH_stratExit (&stradat); for (i = archnbr - 1; i >= 0; i --) /* Destroy architectures in reverse order to destroy sub-architectures first */ SCOTCH_archExit (&archtab[i]); SCOTCH_graphExit (&grafdat); if ((fileptr = fopen (argv[2], "r")) == NULL) { /* Read all architectures from file where they were written to */ SCOTCH_errorPrint ("main: cannot open file (2)"); exit (EXIT_FAILURE); } for (i = 0; i < archnbr; i ++) { if ((SCOTCH_archInit (&archtab[i]) != 0) || (SCOTCH_archLoad (&archtab[i], fileptr) != 0)) { SCOTCH_errorPrint ("main: cannot load architecture (%d)", 1 + i); exit (EXIT_FAILURE); } } fclose (fileptr); for (i = 0; i < archnbr; i ++) /* Destroy architectures in any order, as they are now all autonomous from each other */ SCOTCH_archExit (&archtab[i]); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_common_file_compress.c0000644000302600021200000001167113542630761022543 0ustar pelegrinpelegrin/* Copyright 2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_common_file_compress.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the random number **/ /** generator module. **/ /** **/ /** DATES : # Version 6.0 : from : 09 jul 2018 **/ /** to 10 jul 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif /* _XOPEN_SOURCE */ #ifndef __USE_XOPEN2K #define __USE_XOPEN2K /* For POSIX pthread_barrier_t */ #endif /* __USE_XOPEN2K */ #include #include #include #include #include "../libscotch/module.h" #include "../libscotch/common.h" #include "scotch.h" #define C_FILENBR 2 /* Number of files in list */ #define C_BUFFSIZ 65536 #define C_filepntrinp fileBlockFile (C_fileTab, 0) /* Input file */ #define C_filepntrout fileBlockFile (C_fileTab, 1) /* Output file */ /* ** The static and global variables. */ static File C_fileTab[2] = { /* File array */ { FILEMODER }, { FILEMODEW } }; /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { byte * bufftab; if (argc != 3) { SCOTCH_errorPrint ("usage: %s infile outfile", argv[0]); exit (EXIT_FAILURE); } if ((bufftab = malloc (C_BUFFSIZ * sizeof (byte))) == NULL) { SCOTCH_errorPrint ("main: out of memory"); exit (EXIT_FAILURE); } fileBlockInit (C_fileTab, C_FILENBR); /* Set default stream pointers */ fileBlockName (C_fileTab, 0) = argv[1]; fileBlockName (C_fileTab, 1) = argv[2]; switch (fileBlockOpen (C_fileTab, C_FILENBR)) { /* Open all files */ case 2 : SCOTCH_errorPrint ("main: (de)compression method not implemented"); free (bufftab); exit (EXIT_SUCCESS); case 1 : SCOTCH_errorPrint ("main: cannot open files"); free (bufftab); exit (EXIT_FAILURE); } while (1) { size_t bytenbr; if ((bytenbr = fread (bufftab, 1, C_BUFFSIZ, C_filepntrinp)) == 0) { if (ferror (C_filepntrinp)) SCOTCH_errorPrint ("main: read error"); break; } if (fwrite (bufftab, 1, bytenbr, C_filepntrout) != bytenbr) { SCOTCH_errorPrint ("main: write error"); break; } } free (bufftab); fileBlockClose (C_fileTab, C_FILENBR); /* Always close explicitely to end eventual (de)compression tasks */ #ifdef COMMON_PTHREAD pthread_exit ((void *) 0); /* Allow potential (de)compression tasks to complete */ #endif /* COMMON_PTHREAD */ exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_dgraph_induce.c0000644000302600021200000001710613465315041022472 0ustar pelegrinpelegrin/* Copyright 2019 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_dgraph_induce.c **/ /** **/ /** AUTHOR : Amaury JACQUES **/ /** Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operations of **/ /** the SCOTCH_dgraphInducePart() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 16 apr 2019 **/ /** to 22 apr 2019 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include #include "../libscotch/module.h" #include "ptscotch.h" void intRandInit (void); void intAscn (SCOTCH_Num *, SCOTCH_Num, SCOTCH_Num); void intPerm (SCOTCH_Num *, SCOTCH_Num); /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { MPI_Comm proccomm; int procglbnbr; /* Number of processes sharing graph data */ int proclocnum; /* Number of this process */ FILE * fileptr; SCOTCH_Num baseval; SCOTCH_Num orgvertlocnbr; SCOTCH_Num * orgpartloctab; SCOTCH_Dgraph orggrafdat; SCOTCH_Dgraph indgrafdat; SCOTCH_Num * indlistloctab; SCOTCH_Num indvertlocnbr; SCOTCH_Num indvertlocnum; #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ SCOTCH_errorProg (argv[0]); #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) SCOTCH_errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) SCOTCH_errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } proccomm = MPI_COMM_WORLD; MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */ MPI_Comm_rank (proccomm, &proclocnum); fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); #ifdef SCOTCH_CHECK_NOAUTO if (proclocnum == 0) { /* Synchronize on keybord input */ char c; printf ("Waiting for key press...\n"); scanf ("%c", &c); } #endif /* SCOTCH_CHECK_NOAUTO */ if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (1)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInit (&orggrafdat, proccomm) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph (1)"); exit (EXIT_FAILURE); } fileptr = NULL; if ((proclocnum == 0) && ((fileptr = fopen (argv[1], "r")) == NULL)) { SCOTCH_errorPrint ("main: cannot open graph file"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphLoad (&orggrafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } if (fileptr != NULL) fclose (fileptr); if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ SCOTCH_errorPrint ("main: cannot communicate (2)"); exit (EXIT_FAILURE); } SCOTCH_dgraphData (&orggrafdat, &baseval, NULL, &orgvertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &proccomm); if ((orgpartloctab = malloc (orgvertlocnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } if ((indlistloctab = malloc (orgvertlocnbr * sizeof (SCOTCH_Num))) == NULL) { /* TRICK: size is orgvertlocnbr */ SCOTCH_errorPrint ("main: out of memory (2)"); exit (EXIT_FAILURE); } intRandInit (); /* Initialize random generator */ intAscn (indlistloctab, orgvertlocnbr, baseval); intPerm (indlistloctab, orgvertlocnbr); /* Random permutation of all original graph vertices */ indvertlocnbr = (orgvertlocnbr + 1) / 2; /* Keep only half of the original vertices */ memset (orgpartloctab, 0, orgvertlocnbr * sizeof (SCOTCH_Num)); for (indvertlocnum = 0; indvertlocnum < indvertlocnbr; indvertlocnum ++) /* Flag kept vertices as belonging to part 1 */ orgpartloctab[indlistloctab[indvertlocnum] - baseval] = 1; if (SCOTCH_dgraphInit (&indgrafdat, proccomm) != 0) { SCOTCH_errorPrint ("main: cannot initialize graph (2)"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphInducePart (&orggrafdat, orgpartloctab, 1, indvertlocnbr, &indgrafdat) != 0) { SCOTCH_errorPrint ("main: cannot induce graph"); exit (EXIT_FAILURE); } if (SCOTCH_dgraphCheck (&indgrafdat) != 0) { SCOTCH_errorPrint ("main: invalid induced graph"); exit (EXIT_FAILURE); } SCOTCH_dgraphExit (&indgrafdat); SCOTCH_dgraphExit (&orggrafdat); free (indlistloctab); free (orgpartloctab); MPI_Finalize (); exit (EXIT_SUCCESS); } scotch_6.0.9/src/check/test_scotch_graph_color.c0000644000302600021200000001135013303015264022163 0ustar pelegrinpelegrin/* Copyright 2012,2014,2018 IPB, Universite de Bordeaux, INRIA & CNRS ** ** This file is part of the Scotch software package for static mapping, ** graph partitioning and sparse matrix ordering. ** ** This software is governed by the CeCILL-C license under French law ** and abiding by the rules of distribution of free software. You can ** use, modify and/or redistribute the software under the terms of the ** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following ** URL: "http://www.cecill.info". ** ** As a counterpart to the access to the source code and rights to copy, ** modify and redistribute granted by the license, users are provided ** only with a limited warranty and the software's author, the holder of ** the economic rights, and the successive licensors have only limited ** liability. ** ** In this respect, the user's attention is drawn to the risks associated ** with loading, using, modifying and/or developing or reproducing the ** software by the user in light of its specific status of free software, ** that may mean that it is complicated to manipulate, and that also ** therefore means that it is reserved for developers and experienced ** professionals having in-depth computer knowledge. Users are therefore ** encouraged to load and test the software's suitability as regards ** their requirements in conditions enabling the security of their ** systems and/or data to be ensured and, more generally, to use and ** operate it in the same conditions as regards security. ** ** The fact that you are presently reading this means that you have had ** knowledge of the CeCILL-C license and that you accept its terms. */ /************************************************************/ /** **/ /** NAME : test_scotch_graph_color.c **/ /** **/ /** AUTHOR : Francois PELLEGRINI **/ /** **/ /** FUNCTION : This module tests the operation of **/ /** the SCOTCH_graphColor() routine. **/ /** **/ /** DATES : # Version 6.0 : from : 06 jan 2012 **/ /** to 22 may 2018 **/ /** **/ /************************************************************/ /* ** The defines and includes. */ #include #if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) #include #endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */ #include #include #include "scotch.h" /*********************/ /* */ /* The main routine. */ /* */ /*********************/ int main ( int argc, char * argv[]) { FILE * fileptr; SCOTCH_Graph grafdat; SCOTCH_Num vertnbr; SCOTCH_Num vertnum; SCOTCH_Num colonbr; SCOTCH_Num colonum; SCOTCH_Num * colotab; SCOTCH_Num * cnbrtab; SCOTCH_errorProg (argv[0]); if (argc != 2) { SCOTCH_errorPrint ("usage: %s graph_file", argv[0]); exit (EXIT_FAILURE); } if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */ SCOTCH_errorPrint ("main: cannot initialize graph"); exit (EXIT_FAILURE); } if ((fileptr = fopen (argv[1], "r")) == NULL) { SCOTCH_errorPrint ("main: cannot open file"); exit (EXIT_FAILURE); } if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */ SCOTCH_errorPrint ("main: cannot load graph"); exit (EXIT_FAILURE); } fclose (fileptr); SCOTCH_graphSize (&grafdat, &vertnbr, NULL); if ((colotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } if ((cnbrtab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) { SCOTCH_errorPrint ("main: out of memory (1)"); exit (EXIT_FAILURE); } memset (cnbrtab, 0, vertnbr * sizeof (SCOTCH_Num)); if (SCOTCH_graphColor (&grafdat, colotab, &colonbr, 0) != 0) { SCOTCH_errorPrint ("main: cannot color graph"); exit (EXIT_FAILURE); } printf ("Number of colors: %ld\n", (long) colonbr); for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Sum-up color histogram */ cnbrtab[colotab[vertnum]] ++; for (colonum = 0; colonum < colonbr; colonum ++) printf ("Color %5ld: %ld\n", (long) colonum, (long) cnbrtab[colonum]); free (cnbrtab); free (colotab); SCOTCH_graphExit (&grafdat); exit (EXIT_SUCCESS); } scotch_6.0.9/LISEZ-MOI.txt0000644000302600021200000000056013465342137015337 0ustar pelegrinpelegrinLes clauses selon lesquelles cette copie de la distribution logicielle Scotch 6.0 est mise à votre disposition sont définies dans le fichier "LICENCE_fr.txt", situé dans le même répertoire que le présent fichier. Si vous les acceptez, veuillez vous référer au fichier "INSTALL.txt", également situé dans ce répertoire, pour consulter les instructions d'installation. scotch_6.0.9/LICENCE_fr.txt0000644000302600021200000000061613465342137015562 0ustar pelegrinpelegrinCette copie de la distribution logicielle Scotch 6.0 est distribuée selon les termes de la licence de logiciel libre CeCILL-C. Une copie du texte de cette licence se trouve dans le sous-répertoire "doc", dans le fichier appelé "CeCILL-C_V1-fr.txt". Veuillez en lire attentivement les clauses. Vous ne pourrez utiliser cette copie de la distribution logicielle Scotch 6.0 que si vous les acceptez. scotch_6.0.9/README.txt0000644000302600021200000000044213465342137014763 0ustar pelegrinpelegrinThe terms under which this copy of the Scotch 6.0 distribution is provided to you are described in file "LICENSE_en.txt", located in the same directory as this file. If you accept them, please refer to file "INSTALL.txt", also located in this directory, for the installation instructions. scotch_6.0.9/LICENSE_en.txt0000644000302600021200000000051013465342137015566 0ustar pelegrinpelegrinThis copy of the Scotch 6.0 distribution is licensed to you under the terms of the CeCILL-C free/libre software license. A copy of this license is available in subdirectory "doc", in file named "CeCILL-C_V1-en.txt". Please read its terms carefully. Only if you accept them can you use this copy of the Scotch 6.0 distribution. scotch_6.0.9/man/0000755000302600021200000000000013303015264014025 5ustar pelegrinpelegrinscotch_6.0.9/man/man1/0000755000302600021200000000000013303015264014661 5ustar pelegrinpelegrinscotch_6.0.9/man/man1/dgpart.10000644000302600021200000000002113303015264016215 0ustar pelegrinpelegrin.so man1/dgmap.1 scotch_6.0.9/man/man1/gout.10000644000302600021200000001150013303015264015716 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gout 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgout \fP- output graphics from matrices and graphs \fB .SH SYNOPSIS .nf .fam C \fBgout\fP [\fIoptions\fP] [\fIgfile\fP] [\fIxfile\fP] [\fImfile\fP] [\fIvfile\fP] .fam T .fi .SH DESCRIPTION The \fBgout\fP program creates graphics files of various types, representing the Scotch graph and mapping data which is passed to it. .PP Source graph file \fIgfile\fP can only be a centralized graph file. File \fIxfile\fP stores its associated geometry, whenever necessary. File \fImfile\fP represents label information attached to each of the graph vertices, for instance the index of the part to which each vertex belongs in the case of a mapping file. File \fIvfile\fP is the output graphics file, the type of which may differ according to the input parameters. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, gtst can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-g\fP\fIgeop\fP Geometry parameters, which can be an arbitrary combination of any of the following code letters: .RS .TP .B n Do not read geometry data, when it is not available or not required, such as when using the \fB-om\fP option. .TP .B p Permute Y and Z geometry dimensions. .TP .B r Rotate geometry by 90 degrees in the (X,Y) plane. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-mn\fP Do not read mapping data, when it is not available or not required. .TP .B \fB-o\fP\fIoutp\fP Select the output file type and allows to provide additional parameters between braces and separated by commas: .RS .TP .B i OpenInventor 3D mesh file, to be viewed by means of programs such as \fBivview\fP. Additional parameters for this output file type are: .RS .TP .B c Color output. .TP .B g Gray level output. .TP .B r Remove cut edges. .TP .B v View cut edges. .RE .TP .B m PostScript matrix pattern file. Additional parameters for this output file type are: .RS .TP .B e EPSF-type output. .TP .B f Full-page output. .RE .TP .B p PostScript 2D mesh file. This output module was intended for 2D meshes; as a fallback, the Z coordinate is projected according to isometric perspective rules, but drawings of full 3D objects are most likely to be unreadable. Additional parameters for this output file type are: .RS .TP .B c Color output. .TP .B g Gray level output. .TP .B e EPSF-type output. .TP .B f Full-page output. .TP .B s Short clipping (disks excluded). .TP .B l Large clipping (disks included). .TP .B a Avoid displaying disks. .TP .B d Display disks. .TP .B r Remove cut edges. .TP .B v View cut edges. .TP .B X=\fIrat\fP Maximum x clipping ratio (in [0.0;1.0]). .TP .B x=\fIrat\fP Minimum x clipping ratio. .TP .B Y=\fIrat\fP Maximum y clipping ratio. .TP .B y=\fIrat\fP Minimum y clipping ratio. .RE .TP .B t Tulip 3D mesh file. Additional parameters for this output file type are: .RS .TP .B b Black and white output. .TP .B c Color output. .TP .B a Avoid displaying disks. .TP .B d Display disks. .TP .B r Remove cut edges. .TP .B v View cut edges. .RE .RE .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLES Build an OpenInventor file of the mapping of graph brol.grf contained in file brol.map. Vertices with no mapping information attached to them will be rendered in white, while distinct colors will be used to represent the different parts. Cut edges will be removed: .PP .nf .fam C $ gout '-oi{r}' brol.grf brol.xyz brol.map brol.iv $ ivview brol.iv .fam T .fi Build an OpenInventor file of graph brol.grf without any vertex information associated to it. Mapping data are not required and will not be read, but a file name has to be provided, hence the '-': .PP .nf .fam C $ gout -oi -mn brol.grf brol.xyz - brol.iv .fam T .fi Output the pattern of matrix brol.grf on the form of a PostScript flat drawing. Geometry and mapping data are not required and will not be read, but file names have to be provided, hence the two '-'s: .PP .nf .fam C $ gout -om -gn -mn brol.grf - - brol.ps .fam T .fi Output a PostScript 2D drawing of a rectangular portion graph brol.grf, with disks representing mapping data: .PP .nf .fam C $ gout '-op{c,e,d,x=0.3,X=0.6,y=0.2,Y=0.5}' brol.grf brol.xyz brol.map brol.ps .fam T .fi .SH SEE ALSO \fBgmap\fP(1), \fBgout\fP(1), \fBgtst\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gord.10000644000302600021200000000541713303015264015705 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gord 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgord \fP- compute sparse matrix orderings of graphs \fB .SH SYNOPSIS .nf .fam C \fBgord\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBgord\fP program computes, in a sequential way, an ordering of a Scotch source graph representing the pattern of some symmetric sparse matrix. .PP Source graph file \fIgfile\fP can only be a centralized graph file. The resulting ordering is stored in file \fIofile\fP. Eventual logging information (such as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitely represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBgord\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-c\fPopt Choose default ordering strategy according to one or several \fIoptions\fP among: .RS .TP .B b enforce load balance as much as possible. .TP .B q privilege quality over speed (default). .TP .B s privilege speed over quality. .TP .B t enforce safety. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-m\fP\fImfile\fP Save column block mapping data to file \fImfile\fP. Mapping data specifies, for each vertex, the index of the column block to which this vertex belongs. .TP .B \fB-o\fP\fIstrat\fP Use sequential graph ordering strategy \fIstrat\fP (see Scotch user's manual for more information). .TP .B \fB-t\fP\fItfile\fP Save partitioning tree data to file \fItfile\fP. Partitioning tree data specifies, for each vertex, the index of the first vertex of the parent block of the block to which the vertex belongs. Altogether with the mapping data provided in file \fImfile\fP, it allows one to rebuild the separator tree of the nested dissection process. .TP .B \fB-V\fP Display program version and copyright. .TP .B \fB-v\fP\fIverb\fP Set verbose mode to \fIverb\fP. It is a set of one of more characters which can be: .RS .TP .B s strategy information. .TP .B t timing information. .SH EXAMPLE Reorder matrix graph brol.grf and save the resulting ordering to file brol.ord using the default sequential graph ordering strategy: .PP .nf .fam C $ gord brol.grf brol.ord .fam T .fi .SH SEE ALSO \fBdgord\fP(1), \fBgmk_hy\fP(1), \fBgtst\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/amk_hy.10000644000302600021200000000002313303015264016206 0ustar pelegrinpelegrin.so man1/amk_ccc.1 scotch_6.0.9/man/man1/amk_m2.10000644000302600021200000000002313303015264016104 0ustar pelegrinpelegrin.so man1/amk_ccc.1 scotch_6.0.9/man/man1/amk_fft2.10000644000302600021200000000002313303015264016427 0ustar pelegrinpelegrin.so man1/amk_ccc.1 scotch_6.0.9/man/man1/mtst.10000644000302600021200000000302613303015264015733 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH mtst 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBmtst \fP- test the consistency of source meshes \fB .SH SYNOPSIS .nf .fam C \fBmtst\fP [\fIoptions\fP] [\fImfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBmtst\fP program checks, in a sequential way, the consistency of a Scotch source mesh and, in case of success, outputs some statistics regarding edge weights, node and element vertex weights, and node and element vertex degrees. .PP Source mesh file \fImfile\fP can only be a centralized mesh file. The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBmtst\fP can directly handle compressed meshes, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.msh.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Test the consistency of mesh brol.msh: .PP .nf .fam C $ mtst brol.msh .fam T .fi .SH SEE ALSO \fBmord\fP(1), \fBgrf_msh\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/amk_ccc.10000644000302600021200000000660613303015264016333 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH amk_ccc 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBamk_ccc, amk_fft2, amk_hy, amk_m2, amk_p2 \fP- create target architectures \fB .SH SYNOPSIS .nf .fam C \fBamk_ccc\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP] .PP \fBamk_fft2\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP] .PP \fBamk_hy\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP] .PP \fBamk_m2\fP [\fIoptions\fP] \fIdimX\fP [\fIdimY\fP] [\fItfile\fP] .PP \fBamk_p2\fP [\fIoptions\fP] [\fIwght0\fP] [\fIwght1\fP] [\fItfile\fP] .fam T .fi .SH DESCRIPTION The amk_* programs create target architecture files for some common, regular topologies. .PP \fBamk_ccc\fP creates a decomposition-defined cube-connected-cycle topology of dimension \fIdim\fP. The decomposition is performed first by bisection along the dimensions of the hypercube, then along the remaining cycle graphs. .PP \fBamk_fft2\fP creates a decomposition-defined fast-Fourier-transform topology of dimension \fIdim\fP. The decomposition is performed by recursive bisection of the vertices, by descending dimension (that is, bit number in the labeling of the vertices). .PP \fBamk_hy\fP creates a decomposition-defined hypercube topology of dimension \fIdim\fP. The decomposition is performed by recursive bisection of the vertices, by descending dimension (that is, bit number in the labeling of the vertices). Save for experimentation purposes, this program is deprecated, as the algorithmically-defined 'hcub' target architecture is a more convenient and efficient way to represent hypercube architectures. .PP \fBamk_m2\fP creates a decomposition-defined 2D regular grid topology of dimensions \fIdimX\fP and \fIdimY\fP. The decomposition is performed by recursive splitting along the dimensions, either by cutting the longest one, or by one-way dissection, depending on the '\fB-m\fP' option flag. Save for experimentation purposes, this program is deprecated, as the algorithmically-defined 'mesh2D' and 'mesh3D' target architectures are a more convenient and efficient way to represent 2D and 3D grid architectures. .PP \fBamk_p2\fP creates a weighted path graph topology comprising only two vertices of weights \fIwght0\fP and \fIwght1\fP. This is just a helper program, which builds a 'wcmplt' algorithmically-defined complete graph with two vertices. It may be used to compute weighted bisections of a graph. .SH OPTIONS .TP .B \fB-m\fP\fImeth\fP For \fBamk_m2\fP only. Perform either recursive dissection or one-way dissection, according to the given method flag: .RS .TP .B n perform nested dissection (default). .TP .B o perform one-way dissection (cut across Y, then X). .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Create a cube-connected-cycle target architecture of dimension 4, and save it to file 'ccc4.tgt'. .PP .nf .fam C $ amk_ccc 4 ccc4.tgt .fam T .fi Run gmap to compute a bisection, into two parts of respective weights 3 and 5, of graph 'brol.grf' and save the resulting mapping to file 'brol.map'. The dash '-' standard file name is used so that the target architecture description is read from the standard input, through the pipe. .PP .nf .fam C $ amk_p2 3 5 | gmap brol.grf - brol.map .fam T .fi .SH SEE ALSO \fBgmk_msh\fP(1), \fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1), \fBamk_grf\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/mmk_m2.10000644000302600021200000000300713303015264016125 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH mmk_m2 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBmmk_m2, mmk_m3 \fP- create source meshes \fB .SH SYNOPSIS .nf .fam C \fBmmk_m2\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP [\fIofile\fP] .PP \fBmmk_m3\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP \fIdimZ\fP [\fIofile\fP] .fam T .fi .SH DESCRIPTION The \fBmmk_\fP* programs create source mesh files for some common, regular topologies. .PP \fBmmk_m2\fP creates a 2D regular mesh of \fIdimX\fP times \fIdimY\fP elements and (\fIdimX\fP+1) times (\fIdimY\fP+1) nodes, such that element (i,j) is connected to nodes (i,j), (i,j+1), (i+1,j) and (i+1,j+1). .PP \fBmmk_m3\fP creates a 3D regular mesh of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP elements and (\fIdimX\fP+1) times (\fIdimY\fP+1) times (\fIdimZ\fP+1) nodes, such that element (i,j,k) is connected to nodes (i,j,k), (i,j,k+1), (i,j+1,k), (i,j+1,k+1), (i+1,j,k), (i+1,j,k+1), (i+1,j+1,k) and (i+1,j+1,k+1). .SH OPTIONS .TP .B \fB-g\fP\fIcfile\fP Output graph vertex coordinates (that is, geometry data to be used by \fBgout\fP(1)) in file \fIcfile\fP. .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Create a mesh of 5x7 elements, along with its geometry: .PP .nf .fam C $ mmk_m2 5 7 -g/tmp/m5x7.xyz /tmp/m5x7.msh .fam T .fi .SH SEE ALSO \fBmord\fP(1), \fBmtst\fP(1), \fBgmk_msh\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmk_hy.10000644000302600021200000000362113303015264016223 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gmk_hy 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgmk_hy, gmk_m2, gmk_m3, gmk_ub2 \fP- create source graphs \fB .SH SYNOPSIS .nf .fam C \fBgmk_hy\fP [\fIoptions\fP] \fIdim\fP [\fIofile\fP] .PP \fBgmk_m2\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP [\fIofile\fP] .PP \fBgmk_m3\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP \fIdimZ\fP [\fIofile\fP] .PP \fBgmk_ub2\fP [\fIoptions\fP] \fIdim\fP .fam T .fi .SH DESCRIPTION The \fBgmk_\fP* programs create source graph files for some common, regular topologies. .PP \fBgmk_hy\fP creates a hypercube of dimension \fIdim\fP. .PP \fBgmk_m2\fP creates a 2D regular grid of dimensions \fIdimX\fP and \fIdimY\fP. .PP \fBgmk_m3\fP creates a 3D regular grid of dimensions \fIdimX\fP, \fIdimY\fP and \fIdimZ\fP. .PP \fBgmk_ub2\fP creates an unoriented de Bruijn graph of dimension \fIdim\fP. .SH OPTIONS .TP .B \fB-b\fP base For \fBgmk_m2\fP and \fBgmk_m3\fP only. Output graphs with base value set to base. Default value is 0. .TP .B \fB-e\fP For \fBgmk_m2\fP only. Build a 8-neighbor grid rather than a 4-neighbor grid. .TP .B \fB-g\fP\fIcfile\fP For \fBgmk_m2\fP and \fBgmk_m3\fP only. Output graph vertex coordinates (that is, geometry data to be used by \fBgout\fP(1)) in file \fIcfile\fP. .TP .B \fB-h\fP Display some help. .TP .B \fB-t\fP For \fBgmk_m2\fP and \fBgmk_m3\fP only. Create torus graphs, that is, graphs such that there exist loop edges between vertices of rank 0 and (\fIdim\fP-1) in every dimension. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Create a 5x7 grid along with its geometry: .PP .nf .fam C $ gmk_m2 5 7 -g/tmp/m5x7.xyz /tmp/m5x7.grf .fam T .fi .SH SEE ALSO \fBgmk_msh\fP(1), \fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1), \fBamk_grf\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmk_m3.10000644000302600021200000000002213303015264016112 0ustar pelegrinpelegrin.so man1/gmk_hy.1 scotch_6.0.9/man/man1/mord.10000644000302600021200000000574513303015264015717 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH mord 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBmord \fP- compute sparse matrix orderings of meshes \fB .SH SYNOPSIS .nf .fam C \fBmord\fP [\fIoptions\fP] [\fImfile\fP] [\fIofile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBmord\fP program computes, in a sequential way, an ordering of a Scotch source mesh representing the pattern of some symmetric sparse matrix. Only nodes of the mesh are effectively ordered. Elements provide connectivity information, such that every node is considered to be linked to all of the nodes which share at least an element with it. .PP Source mesh file \fImfile\fP can only be a centralized mesh file. The resulting ordering is stored in file \fIofile\fP. Eventual logging information (such as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitely represented by a dash '-'. .PP When the proper libraries have been included at compile time, gord can directly handle compressed meshes, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.msh.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-c\fPopt Choose default ordering strategy according to one or several \fIoptions\fP among: .RS .TP .B b enforce load balance as much as possible. .TP .B q privilege quality over speed (default). .TP .B s privilege speed over quality. .TP .B t enforce safety. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-m\fP\fImfile\fP Save column block mapping data to file \fImfile\fP. Mapping data specifies, for each node vertex, the index of the column block to which this node vertex belongs. .TP .B \fB-o\fP\fIstrat\fP Use sequential mesh ordering strategy \fIstrat\fP (see Scotch user's manual for more information). .TP .B \fB-t\fP\fItfile\fP Save partitioning tree data to file \fItfile\fP. Partitioning tree data specifies, for each node vertex, the index of the first node vertex of the parent block of the block to which the node vertex belongs. Altogether with the mapping data provided in file \fImfile\fP, it allows one to rebuild the separator tree of the nested dissection process. .TP .B \fB-V\fP Display program version and copyright. .TP .B \fB-v\fP\fIverb\fP Set verbose mode to \fIverb\fP. It is a set of one of more characters which can be: .RS .TP .B s strategy information. .TP .B t timing information. .SH EXAMPLE Reorder matrix mesh brol.msh and save the resulting ordering to file brol.ord using the default sequential mesh ordering strategy: .PP .nf .fam C $ mord brol.msh brol.ord .fam T .fi .SH SEE ALSO \fBgmk_msh\fP(1), \fBgotst\fP(1), \fBmtst\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gotst.10000644000302600021200000000367313303015264016114 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gotst 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgomtst \fP- compute statistics on sparse matrix orderings \fB .SH SYNOPSIS .nf .fam C \fBgotst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBgotst\fP program computes, in a sequential way, statistics on a sparse matrix ordering, such as fill-in, operation count, and separator tree parameters: minimum, maximum, average height and variance of its leaves. .PP Source graph file \fIgfile\fP can only be a centralized graph file. File \fIofile\fP represents the ordering of the symmetric sparse matrix the pattern of which is represented by \fIgfile\fP. The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, gtst can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .PP Since \fBgotst\fP performs sequentially the symbolic factorization of matrix \fIgfile\fP in order to compute fill-in and operation count numbers, this program can take a long time or even run out of memory, when applied to very large graphs. .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Display statistics on ordering brol.ord of graph brol.grf: .PP .nf .fam C $ gotst brol.grf brol.ord .fam T .fi .SH SEE ALSO \fBgord\fP(1), \fBgtst\fP(1), \fBdgord\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmk_m2.10000644000302600021200000000002213303015264016111 0ustar pelegrinpelegrin.so man1/gmk_hy.1 scotch_6.0.9/man/man1/amk_p2.10000644000302600021200000000002313303015264016107 0ustar pelegrinpelegrin.so man1/amk_ccc.1 scotch_6.0.9/man/man1/dgord.10000644000302600021200000000716013303015264016046 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH dgord 1 "August 03, 2010" "" "PT-Scotch user's manual" .SH NAME \fBdgord \fP- compute sparse matrix orderings of graphs in parallel \fB .SH SYNOPSIS .nf .fam C \fBdgord\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBdgord\fP program computes, in a parallel way, an ordering of a Scotch source graph representing the pattern of some symmetric sparse matrix. .PP Source graph file \fIgfile\fP is either a centralized graph file, or a set of files representing fragments of a distributed graph. The resulting ordering is stored in file \fIofile\fP. Eventual logging information (such as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitely represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBdgord\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .PP \fBdgord\fP bases on implementations of the MPI interface to spread work across the processing elements. It is therefore not likely to be run directly, but instead through some launcher command such as \fBmpirun\fP. .SH OPTIONS .TP .B \fB-c\fPopt Choose default ordering strategy according to one or several \fIoptions\fP among: .RS .TP .B b enforce load balance as much as possible. .TP .B q privilege quality over speed (default). .TP .B s privilege speed over quality. .TP .B t enforce safety. .TP .B x enforce scalability. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-m\fP\fImfile\fP Save column block mapping data to file \fImfile\fP. Mapping data specifies, for each vertex, the index of the column block to which this vertex belongs. .TP .B \fB-o\fP\fIstrat\fP Use parallel graph ordering strategy \fIstrat\fP (see PT-Scotch user's manual for more information). .TP .B \fB-r\fP\fIpnum\fP Set root process for centralized files (default is 0). .TP .B \fB-t\fP\fItfile\fP Save partitioning tree data to file \fItfile\fP. Partitioning tree data specifies, for each vertex, the index of the first vertex of the parent block of the block to which the vertex belongs. Altogether with the mapping data provided in file \fImfile\fP, it allows one to rebuild the separator tree of the nested dissection process. .TP .B \fB-V\fP Display program version and copyright. .TP .B \fB-v\fP\fIverb\fP Set verbose mode to \fIverb\fP. It is a set of one of more characters which can be: .RS .TP .B s strategy information. .TP .B t timing information. .SH EXAMPLES Run \fBdgord\fP on 5 processing elements to reorder matrix graph brol.grf and save the resulting ordering to file brol.ord, using the default sequential graph ordering strategy: .PP .nf .fam C $ mpirun -np 5 dgord brol.grf brol.ord .fam T .fi Run \fBdgord\fP on 5 processing elements to reorder the distributed matrix stored on graph fragment files brol5-0.dgr to brol5-4.dgr, and save the resulting ordering to file brol.ord (see \fBdgscat\fP(1) for an explanation of the '%p' and '%r' sequences in names of distributed graph fragments). .PP .nf .fam C $ mpirun -np 5 dgord brol%p-%r.dgr brol.ord .fam T .fi .SH SEE ALSO \fBdgtst\fP(1), \fBdgscat\fP(1), \fBgmk_hy\fP(1), \fBgord\fP(1). .PP PT-Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gpart.10000644000302600021200000000002013303015264016050 0ustar pelegrinpelegrin.so man1/gmap.1 scotch_6.0.9/man/man1/gtst.10000644000302600021200000000327413303015264015732 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gtst 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgtst \fP- test the consistency of source graphs \fB .SH SYNOPSIS .nf .fam C \fBgtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBgtst\fP program checks, in a sequential way, the consistency of a Scotch source graph and, in case of success, outputs some statistics regarding edge weights, vertex weights, and vertex degrees. .PP It produces the very same results as the \fBdgtst\fP(1) program of the PT-Scotch parallel distribution, but unlike this latter it cannot handle distributed graphs. .PP Source graph file \fIgfile\fP can only be a centralized graph file. The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBgtst\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Test the consistency of graph brol.grf: .PP .nf .fam C $ gtst brol.grf .fam T .fi .SH SEE ALSO \fBdgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmk_ub2.10000644000302600021200000000002213303015264016263 0ustar pelegrinpelegrin.so man1/gmk_hy.1 scotch_6.0.9/man/man1/gmap.10000644000302600021200000001225413303015264015673 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gmap 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgmap, gpart \fP- compute static mappings and partitions sequentially \fB .SH SYNOPSIS .nf .fam C \fBgmap\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP] .PP \fBgpart\fP [\fIoptions\fP] [\fInparts\fP] [\fIgfile\fP] [\fImfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBgmap\fP program computes, in a sequential way, a static mapping of a source graph onto a target graph. .PP The \fBgpart\fP program is a shortcut of \fBgmap\fP for computing unweighted partitions of a source graph. .PP Source graph file \fIgfile\fP can only be a centralized graph file. For \fBgmap\fP, the target architecture file \fItfile\fP describes either algorithmically-coded topologies such as meshes and hypercubes, or decomposition-defined architectures created by means of the \fBamk_grf\fP(1) program. The resulting mapping is stored in file \fImfile\fP. Eventual logging information (such as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitely represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBgmap\fP and \fBgpart\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-c\fPopt Choose default mapping strategy according to one or several \fIoptions\fP among: .RS .TP .B b enforce load balance as much as possible. .TP .B q privilege quality over speed (default). .TP .B s privilege speed over quality. .TP .B t enforce safety. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-m\fPstrat Use sequential mapping strategy strat (see Scotch user's manual for more information). .TP .B \fB-V\fP Display program version and copyright. .TP .B \fB-v\fPverb Set verbose mode to verb. It is a set of one of more characters which can be: .RS .TP .B m mapping information. .TP .B s strategy information. .TP .B t timing information. .SH TARGET ARCHITECTURES Target architectures represent graphs onto which source graphs are mapped. In order to speed-up the obtainment of target architecture topological properties during the computation of mappings, some classical topologies are algorithmically coded into the mapper itself. These topologies are consequently simply defined by their code name, followed by their dimensional parameters: .TP .B cmplt \fIdim\fP unweighted complete graph of size \fIdim\fP. .TP .B cmpltw \fIdim\fP \fIw0\fP \fIw1\fP \.\.\. \fIwdim-1\fP weighted complete graph of size size and of respective loads \fIw0\fP, \fIw1\fP, \.\.\., \fIwdim-1\fP. .TP .B hcub \fIdim\fP hypercube of dimension \fIdim\fP. .TP .B leaf \fIhgt\fP \fIn0\fP \fIw0\fP \.\.\. \fInhgt-1\fP \fIwhgt-1\fP tree-leaf graph of height \fIhgt\fP with (\fIn0\fP times \fIn1\fP times \.\.\. \fInhgt-1\fP) vertices, with inter-cluster link weights of \fIw0\fP, \fIw1\fP, \.\.\. \fIwhgt-1\fP. .TP .B mesh2D \fIdimX\fP \fIdimY\fP 2D mesh of \fIdimX\fP times \fIdimY\fP nodes. .TP .B mesh3D \fIdimX\fP \fIdimY\fP \fIdimZ\fP 23 mesh of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP nodes. .TP .B torus2D \fIdimX\fP \fIdimY\fP 2D torus of \fIdimX\fP times \fIdimY\fP nodes. .TP .B torus3D \fIdimX\fP \fIdimY\fP \fIdimZ\fP 3D torus of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP nodes. .PP Other target topologies can be created from their source graph description by using the \fBamk_grf\fP(1) command. In this case, the target description will begin with the code name \fBdeco\fP. .SH MAPPINGS Mappings are represented by as many lines as there are vertices in the source graph. Each of these lines is made of two figures: the number of the vertex (or its label if source graph vertices are labeled) and the index of the target vertex to which it has been assigned. Target vertex indices range from 0 to the number of vertices in the target architecture (that is, the number of parts) minus one. .PP This block of lines is always preceded by the number of such lines. In most cases, since full mappings are requested, the number of lines is equal to the number of vertices in the source graph. .SH EXAMPLES Run \fBgpart\fP to compute a partition into 7 parts of graph 'brol.grf' and save the resulting ordering to file 'brol.map'. .PP .nf .fam C $ gpart 7 brol.grf brol.map .fam T .fi Run \fBgmap\fP to compute a partition, into 3 parts of respective weights 1, 2 and 4, of graph 'brol.grf' and save the resulting mapping to file 'brol.map'. The dash '-' standard file name is used so that the target architecture description is read from the standard input, through the pipe, as provided by the 'echo' shell command. .PP .nf .fam C $ echo "cmpltw 3 1 2 4" | gmap brol.grf - brol.map .fam T .fi .SH SEE ALSO \fBamk_grf\fP(1), \fBacpl\fP(1), \fBgmtst\fP(1), \fBdgmap\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/dgtst.10000644000302600021200000000473713303015264016103 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH dgtst 1 "August 03, 2010" "" "PT-Scotch user's manual" .SH NAME \fBdgtst \fP- test the consistency of source graphs in parallel \fB .SH SYNOPSIS .nf .fam C \fBdgtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBdgtst\fP program checks, in a parallel way, the consistency of a Scotch source graph and, in case of success, outputs some statistics regarding edge weights, vertex weights, and vertex degrees. .PP It produces the very same results as the \fBgtst\fP(1) program of the Scotch sequential distribution, but unlike this latter it can handle distributed graphs. .PP Source graph file \fIgfile\fP is either a centralized graph file, or a set of files representing fragments of a distributed graph. The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBdgtst\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .PP \fBdgtst\fP bases on implementations of the MPI interface to spread work across the processing elements. It is therefore not likely to be run directly, but instead through some launcher command such as \fBmpirun\fP. .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-r\fP\fIpnum\fP Set root process for centralized files (default is 0). .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Run \fBdgtst\fP on 5 processing elements to test the consistency of graph brol.grf .PP .nf .fam C $ mpirun -np 5 dgtst brol.grf .fam T .fi Run dgord on 5 processing elements to test the consistency of a distributed graph stored on graph fragment files brol5-0.dgr to brol5-4.dgr, and save the resulting ordering to file brol.ord (see \fBdgscat\fP(1) for an explanation of the '%p' and '%r' sequences in names of distributed graph fragments). .PP .nf .fam C $ mpirun -np 5 dgtst brol%p-%r.dgr brol.ord .fam T .fi .SH SEE ALSO \fBdgscat\fP(1), \fBgtst\fP(1), \fBdgord\fP(1). .PP PT-Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmtst.10000644000302600021200000000461413303015264016106 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gmtst 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgmtst \fP- compute statistics on mappings \fB .SH SYNOPSIS .nf .fam C \fBgmtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBgmtst\fP program computes, in a sequential way, statistics on a static mapping, such as load imbalance ratio, edge dilation distribution, etc. It yields the same results as the ones produced by the \fB-vm\fP option of the \fBgmap\fP(1) program. .PP Source graph file \fIgfile\fP can only be a centralized graph file. File \fItfile\fP represents the target architecture onto which \fIgfile\fP was mapped. If mapping file \fImfile\fP was produced by \fBgpart\fP(1), the target architecture file to provide \fBgmtst\fP should describe a complete graph with the same number of vertices as the requested number of parts, for instance by means of the '\fBcmplt\fP \fInum\fP' algorithmically-described architecture. The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, gtst can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLES Display statistics on mapping brol.map of graph brol.grf onto target architecture brol.tgt: .PP .nf .fam C $ gmtst brol.grf brol.tgt brol.map .fam T .fi Display statistics on partitioning brol.map of graph brol.grf into \fInum\fP parts. Note the use of the complete graph algorithmically-described architecture and of the shell pipe command to provide the complete target architecture description on the standard input of the \fBgmtst\fP command: .PP .nf .fam C $ echo "cmplt num" | gmtst brol.grf - brol.map .fam T .fi .SH SEE ALSO \fBgmap\fP(1), \fBgout\fP(1), \fBgtst\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/atst.10000644000302600021200000000330213303015264015714 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH atst 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBatst \fP- test the consistency of target architectures \fB .SH SYNOPSIS .nf .fam C \fBatst\fP [\fIoptions\fP] [\fIafile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBatst\fP program checks the consistency of a Scotch decomposition-defined target architecture and, in case of success, outputs some statistics regarding the number of target vertices and the length of paths linking them. Target architectures define the topology of the target graphs used by static mapping programs \fBgmap\fP(1) and \fBdgmap\fP(1). .PP The resulting statistics are stored in file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBatst\fP can directly handle compressed files, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.tgt.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Test the consistency of architecture arch.tgt: .PP .nf .fam C $ atst arch.tgt .fam T .fi .SH SEE ALSO \fBamk_grf\fP(1), \fBamk_ccc\fP(1), \fBamk_fft2\fP(1), \fBamk_hy\fP(1), \fBamk_m2\fP(1), \fBamk_p2\fP(1), \fBgmap\fP(1), \fBdgmap\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/gmk_msh.10000644000302600021200000000205213303015264016367 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gmk_msh 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgmk_msh \fP- create source graph from source mesh \fB .SH SYNOPSIS .nf .fam C \fBgmk_msh\fP [\fIoptions\fP] [\fImfile\fP] [\fIgfile\fP] .fam T .fi .SH DESCRIPTION The \fBgmk_msh\fP program creates a source graph from a source mesh. The vertices of the graph are the nodes of the mesh, and all mesh elements are turned into cliques, that is, there exists an edge between two vertices in the graph if there exists at least an element in the mesh which comprises the two associated nodes. .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Create a source graph brol.grf from a source mesh brol.msh: .PP .nf .fam C $ gmk_msh brol.msh brol.grf .fam T .fi .SH SEE ALSO dgmap (1), \fBdgord\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgtst\fP(1), \fBmmk_m2\fP(1), \fBmord\fP(1), \fBmcv\fP(1), \fBmtst\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/mmk_m3.10000644000302600021200000000002213303015264016120 0ustar pelegrinpelegrin.so man1/mmk_m2.1 scotch_6.0.9/man/man1/gcv.10000644000302600021200000000476013303015264015531 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH gcv 1 "August 03, 2010" "" "Scotch user's manual" .SH NAME \fBgcv \fP- graph file converter \fB .SH SYNOPSIS .nf .fam C \fBgcv\fP [\fIoptions\fP] [\fIigfile\fP] [\fIogfile\fP] [\fIoxfile\fP] .fam T .fi .SH DESCRIPTION The \fBgcv\fP program converts Scotch graph files from and to other external file formats. .PP File \fIigfile\fP is converted into graph file \fIogfile\fP, with optional geometry data being put in geometry file \fIoxfile\fP, if it is available. .PP When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, dgtst can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .SH OPTIONS .TP .B \fB-h\fP Display some help. .TP .B \fB-i\fP\fIifmt\fP Set format of input graph file, which can be: .RS .TP .B b\fInum\fP Boeing-Harwell format. This is a matrix format. Only square matrices are supported. Square matrices with unsymmetric pattern are symmetrized. In case the file contains several matrices, the \fInum\fP parameter allow the user to provide the index of the matrix to convert, starting from 0. When the \fInum\fP parameter is not set, it is assumed to be 0. .TP .B c Chaco format. This is an adjacency graph format, also used by MeTiS. .TP .B m Matrix Market format. This is a matrix format describing individual edges. Matrix pattern is symmetrized, such that rectangular matrices are eventually squared. .TP .B s Scotch graph format. This is an adjacency graph format. .RE .TP .B \fB-o\fP\fIofmt\fP Set format of output graph file, which can be: .RS .TP .B c Chaco format. .TP .B m Matrix Market symmetric pattern format. .TP .B s Scotch format. This is the default. .RE .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Convert a Matrix Market graph into a Scotch graph. Matrix Market files do not comprise geometry data, so no geometry file is needed on output: .PP .nf .fam C $ gcv -im brol.mm brol.grf .fam T .fi .SH SEE ALSO \fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1). .PP Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/dgscat.10000644000302600021200000001036613303015264016216 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH dgscat 1 "August 03, 2010" "" "PT-Scotch user's manual" .SH NAME \fBdgscat \fP- build distributed source graph file fragments from a centralized source graph file \fB .SH SYNOPSIS .nf .fam C \fBdgscat\fP [\fIoptions\fP] [\fIigfile\fP] [\fIogfile\fP] .fam T .fi .SH DESCRIPTION The \fBdgscat\fP program reads a centralized source graph \fIigfile\fP and writes it back on the form of a set of files \fIogfile\fP representing fragments of a distributed source graph. .PP When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitly represented by a dash '-'. .PP When the proper libraries have been included at compile time, dgord can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .PP dgord bases on implementations of the MPI interface to spread work across the processing elements. It is therefore not likely to be run directly, but instead through some launcher command such as \fBmpirun\fP. .SH DISTRIBUTED FILE NAMES In order to tell whether programs should read from, or write to, a single file located on only one processor, or to multiple instances of the same file on all of the processors, or else to distinct files on each of the processors, a special grammar has been designed, which is based on the '%' escape character. Four such escape sequences are defined, which are interpreted independently on every processor, prior to file opening. By default, when a filename is provided, it is assumed that the file is to be opened on only one of the processors, called the root processor, which is usually process 0 of the communicator within which the program is run. The index of the root processor can be changed by means of the \fB-r\fP option. Using any of the first three escape sequences below will instruct programs to open in parallel a file of name equal to the interpreted filename, on every processor on which they are run. .TP .B %p Replaced by the number of processes in the global communicator in which the program is run. Leads to parallel opening. .TP .B %r Replaced on each process running the program by the rank of this process in the global communicator. Leads to parallel opening. .TP .B %- Discarded, but leads to parallel opening. This sequence is mainly used to instruct programs to open on every processor a file of identical name. The opened files can be, according whether the given path leads to a shared directory or to directories that are local to each processor, either to the opening of multiple instances of the same file, or to the opening of distinct files which may each have a different content, respectively (but in this latter case it is much recommended to identify files by means of the '%r' sequence). .TP .B %% Replaced by a single '%' character. File names using this escape sequence are not considered for parallel opening, unless one or several of the three other escape sequences are also present. .RE .PP For instance, filename 'brol' will lead to the opening of file 'brol' on the root processor only, filename '%\fB-brol\fP' (or even 'br%\fB-ol\fP') will lead to the parallel opening of files called 'brol' on every processor, and filename 'brol%p-%r' will lead to the opening of files 'brol2-0' and 'brol2-1', respectively, on each of the two processors on which the program were to run. .SH OPTIONS .TP .B \fB-c\fP Check the consistency of the input source graph after loading it into memory. .TP .B \fB-h\fP Display some help. .TP .B \fB-r\fP\fIpnum\fP Set root process for centralized files (default is 0). .TP .B \fB-V\fP Display program version and copyright. .SH EXAMPLE Run \fBdgscat\fP on 5 processing elements to scatter centralized graph file brol.grf into 5 gzipped file fragments brol5-0.dgr.gz to brol5-4.dgr.gz. .PP .nf .fam C $ mpirun -np 5 dgscat brol.grf brol%p-%r.dgr.gz .fam T .fi .SH SEE ALSO \fBdgtst\fP(1), \fBdgord\fP(1), \fBgmk_hy\fP(1). .PP PT-Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/man/man1/dgmap.10000644000302600021200000000762113303015264016041 0ustar pelegrinpelegrin." Text automatically generated by txt2man .TH dgmap 1 "August 03, 2010" "" "PT-Scotch user's manual" .SH NAME \fBdgmap, dgpart \fP- compute static mappings and partitions in parallel \fB .SH SYNOPSIS .nf .fam C \fBdgmap\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP] .PP \fBdgpart\fP [\fIoptions\fP] [\fInparts\fP] [\fIgfile\fP] [\fImfile\fP] [\fIlfile\fP] .fam T .fi .SH DESCRIPTION The \fBdgmap\fP program computes, in a parallel way, a static mapping of a source graph onto a target graph. .PP The \fBdgpart\fP program is a shortcut of \fBdgmap\fP for computing partitions of a source graph. .PP Source graph file \fIgfile\fP is either a centralized graph file, or a set of files representing fragments of a distributed graph. For \fBdgmap\fP, the target architecture file \fItfile\fP describes either algorithmically-coded topologies such as meshes and hypercubes, or decomposition-defined architectures created by means of the \fBamk_grf\fP(1) program. See \fBgmap\fP(1) for a description of target architectures. The resulting mapping is stored in file \fImfile\fP. Eventual logging information (such as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file names are not specified, data is read from standard input and written to standard output. Standard streams can also be explicitely represented by a dash '-'. .PP When the proper libraries have been included at compile time, \fBdgmap\fP and \fBdgpart\fP can directly handle compressed graphs, both as input and output. A stream is treated as compressed whenever its name is postfixed with a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The compression formats which can be supported are the bzip2 format ('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on input only). .PP \fBdgmap\fP and \fBdgpart\fP base on implementations of the MPI interface to spread work across the processing elements. They are therefore not likely to be run directly, but instead through some launcher command such as \fBmpirun\fP. .SH OPTIONS .TP .B \fB-c\fPopt Choose default mapping strategy according to one or several \fIoptions\fP among: .RS .TP .B b enforce load balance as much as possible. .TP .B q privilege quality over speed (default). .TP .B s privilege speed over quality. .TP .B t enforce safety. .TP .B x enforce scalability. .RE .TP .B \fB-h\fP Display some help. .TP .B \fB-m\fP\fIstrat\fP Use parallel mapping strategy \fIstrat\fP (see PT-Scotch user's manual for more information). .TP .B \fB-r\fP\fIpnum\fP Set root process for centralized files (default is 0). .TP .B \fB-V\fP Display program version and copyright. .TP .B \fB-v\fP\fIverb\fP Set verbose mode to \fIverb\fP. It is a set of one of more characters which can be: .RS .TP .B m mapping information. .TP .B s strategy information. .TP .B t timing information. .SH NOTE At the time being (version 5.1.0), \fBdgmap\fP cannot compute full static mappings as \fBgmap\fP(1) does, but only partitions (that is, mappings onto unweighted or weighted complete graphs). Target architectures other than the 'cmplt' and 'wcmplt' ones will lead to an error message. .SH EXAMPLES Run \fBdgpart\fP on 5 processing elements to compute a partition into 7 parts of graph brol.grf and save the resulting ordering to file brol.map. .PP .nf .fam C $ mpirun -np 5 dgpart 7 brol.grf brol.map .fam T .fi Run \fBdgpart\fP on 5 processing elements to partition into 7 parts the distributed graph stored on graph fragment files brol5-0.dgr to brol5-4.dgr, and save the resulting mapping to file brol.map (see \fBdgscat\fP(1) for an explanation of the '%p' and '%r' sequences in names of distributed graph fragments). .PP .nf .fam C $ mpirun -np 5 dgpart 7 brol%p-%r.dgr brol.map .fam T .fi .SH SEE ALSO \fBdgtst\fP(1), \fBdgscat\fP(1), \fBamk_grf\fP(1), \fBacpl\fP(1), \fBgmap\fP(1), \fBgmtst\fP(1). .PP PT-Scotch user's manual. .SH AUTHOR Francois Pellegrini scotch_6.0.9/bin/0000755000302600021200000000000013470125017014025 5ustar pelegrinpelegrinscotch_6.0.9/grf/0000755000302600021200000000000013303015264014030 5ustar pelegrinpelegrinscotch_6.0.9/grf/4elt2.xyz.gz0000644000302600021200000034407213303015264016167 0ustar pelegrinpelegrin‹ßîØ1ef_4elt2.xyzdœM’-- †Ç]«¸óŽ:¡ü,¨÷¿…F!óÕѣϗGáµàgÎIø3þóï† þ¿ÿýwÌÿ~çg:ßú™œHtýë¿_ûL0Z#ÿiüû×2± ”Ï4ÔÄm*éòHb0 ÒaØ û‹øóo^ 8•™Ëdgür‚+@È׬ÿ­ã÷¬%¿H„ëáÃK¯/jŽÑ×ìšÌ?úøHX.ÐbÖb<¥ü4:Ʀ™þ߯û“ú!¹?9Ó6“†ÿÿKÎÏ@™C/#†qÆ2›³Š¼.2¬3¦"X!iŠ_ä6}Œ ‰ ¹Ü^…äCªÛŒ±¢¶Öýë+Èi\ 4?&îYx‘rHA5Öb!_¸…÷7õ‹'Á¿hiÿ Ëù2U’LéZ¸‡$fÕ?|:Kä"ç!‘´~Sq(]ã8$ q!ÍdÝßÄCºÝg±;~&±\ä¶~LÅ@ ¶@o’é;¨“DîŸ÷8×!e{È($ë\x­'È!Ygý¦s®ËC@éþ=±’Jde=í îó³¶Då'ŽCNÿ)¡²5÷ºËåK¸mäȨ̈¬î‡S¯}„pHÿ!$)$XºüCâ!}šºê¯£»¼]«„tHßÜK±ä?s9Íò!ÁW®ÍˆÅ§yÏ}Ò'Š£†¥Ebó&·|{âbgkMáyÙõ²c"TRLù&í êû€®}D㈌Xg¤ ¾µ/rÒS׸cü@×*Ѷ‘ù–Ežß`¡Šô^OÚ6’C'ÅîqF*bÕÅ´¥×vý¡ØGËI7é!ÕÃ’^BëÌhù>œôtíMryÖ#–.sTxù'¹~ÝCØt´qúÐo»“Ûè×Ývb#}o\¹ì‡ÝF¿ËÃ*…×^$*Þ;ŽÝF¿º½N´‘;ŸÜ¤ÛÈ%„y`¢J*‹ðe#vmUâÉ£ûÒXÓ®ÈÀtH‘”œíþIw¤e>$û‚@õdO¸ßInrRÈ¿ÚÈáQíŠ!,‡tgT©ûˆaù4/2l4L—ÖhCž ÊzZXS†AÝÅžq罞kÒ?€ßó皇\´X‡ËWä"á²¥’îtë^Ï…‡´m¤šl_âàgQxòr݉5#Ⱥÿégñ!]©®B:WV~­C¢‡äšÆ¥'7ûˆÔîð¿I\¾J÷8õË¥U|Ý9nÙ!…&[Í\¾Ý˯Ë8¤²RS6®Ÿù‘yH[îñ•tGœã&áìâ!ÜtªD8I<¤ça)ûÈÆzÏH("Úܔ Ü"æGøîŒ4믴W]ñ#뮤è:ó’¹?"AºÂU©®­‚.ÿ=$³»MU•<ˆïø)ëÖp¥Zu2Î ŠIêÒ Õ_ŸÀrû§Î ­¸ØN<è³Ta#qUWHñ•TȰ‘Ç?´›dš¸î‚GÃF"îuU¹ReºÉ°‘xŽ1­«„z§½]IÂÐŽ+P$ç§8RÉ__v%´v¡wW(6ò‚wüƒxF,hd%zZ_ÔýÖn%6G¤%ØŽ‚u+›Œ¼ä¥O©?öð}¥í®eGˆófuê»t„zÐÖ© ®2à®èæ ù° ¨»øÛÜÿém­ú}AÝÑ^eñ,_ ’Ìj@—y÷bÍPS¬d’íÀ¾Ë |•B>yÎĦÈ+˜y¯ë §àâ­¢ÛÖV¦BÏSK¨ð˜.oÏš¡ôȃŬ‹µÜ/ïL:wëaÇ(ëb‰Çm)¨txBuêeþ]+ÏÝ|ðhg¢zK÷z©[öÖî>üЧã5¨¢ž]åÞÛs·~w3I‹Ìß(ºsßž±·|öw+ì lãÎ’B”ÃÌöÉ…ºQfù*ŸjÌCI©r6êÞRœ¢¼õ¢Wú´\OÜeBô‰–IGçnß\è.p—'ìù]èÃ2Ö]áªò”ðê^X|£ÄÝ«k»,»wFë9Ȱ¢ªîÌ…ƒz]‚ˆõJièaÔ™^‘rõ,ß…·$q”º=Ϊk ¬»é(GßÀEë<Üâ]qÌlFx( º }ýjóQê³GÔŠº,¸;pó´#<yÎçYãÀnÙÔÂ]†]µ£‹—G·¦œ§!áAÓÕ³Õ¯ºr¥àOGÂe¾«+°muW|ó´$<ø¨¨¢ž´J2ž§'±«™Uº•;ÀëÔŠFsÏWÆJŠ÷Éœ»èA³+±cæ¬\³Ý{‹²½÷´³®§¾5nצèïÙîÚÕøR•^q4aw ⊺˜À’ )º°;<®:ÖAeø?“£ ë;«4wÖSZ%mpôa½Ø)]õ]àºW–~1G#ÖI ÊÛ-ÐîÒsrtb]ðsSÂ\zŒ“£]¾[0 »Ey{G¿|+ñ"H<ë!͈8æl«äXßÄìéñŽ„‘мÔ\Uî~¤•¯†µlG¨Š’âÌsá‰sT= [»Ü_]a-7…•†—zýjãù°Ñ™è¬h–¿Örihšï‹fßÜW+ ™õ¿hXË“[E‰úW9»ñCúôû¾hXkX›–ÊlhXkȸQû¤\hî-’ºæé{˃N–}ÒÐ_TFè*è.ž&Þåà”ˆ„»*І’44"¡;ô¯¦úÿ¢ =™³kñ©í« VC9ËóHèJ{͆JÿjFB\Æ…¬`¾hDB/K:ß>L¢š bÕŽ¦ú¢–ç'ylvuŒ‚êÈ\`$}ZÀ ky|–n-³††µÐ .¬î¢ÐüU3o¹êo{ËeMCÃZ®Tkã[¡¹¶†µÜŵ|õÁ44¬5v“ÿ–d>­ÑѰ–{FÕ„ûd¸í •a]ŠÒ´ô £¡2Ô•ƒÕ·]`#‘lbEùé½è|´‹´¯®œí«¡àÝJ8eø\ ﺞÛX¥… ôˆ}h‹%ÙÉø¢¡à=h×]à¨u4Žª¼´±fX×ôZÑ8Ot•m\"µ±Æâ.Ú4å¿hœ(ºV厂Ö̰–»‘vtj]×Öò1û´²™ôEÃZÃw}ó,¬Ó:7(ìÃfµŽuë6„s…Â+yhè2iàƒbV7J5oÁ¹D!ŸlÈݨוհç…xi6´£y&ðE³:¦âqÑüÍvP·+wtÔÍ —]ÖsbøEý÷ë´ o»õujؼJ!2ú @^%ú¢¡ QJ(9(ïÅ|QJñ4;êEE]¼M±Dê ì ©5däu ”IÅþÕÌ[³¡*ÒЈ„OÁ{£³£–7êT­…‘·^ø¢šú¢‘·€±•¹FmÈKµµ¡„Ͱy«Âknl(äŦ/yk ëë:ër”ÕêÚö±Y x.VàXõº`qC#o áºXëc­0ìeÌ·¶H”}ÃhCÃZ®FêºâÙËØg›Ý_©}•ÂZ<¹ïX¾÷n4U†•3¡¸öÕ‹ÂZžáÊbmÚjÈ^†kEkW^ÿ¢±·ÜˆÅNë°¯ÀJY¾ÊºîÊúW³Þ‚mZ¾/ª»d/ÃÃ5t'VÔò–†RÝÄ?ÀyíkÈØëÊ-rDB^«›@çªc=½Œµ >m¨-¨;öô2–¬,Ç…J5«Asûå¤6€èêºguô 7_tç)J³Uêš”:jM’^†WÍÊÚPfk&°ƒzFïc]sÕ̽²«ëÖZµ0Y«–ÂzT†š¶¦•‘° µËdjhÍ¥Ž†&Ü'YÖPîM¸ugCªg­Ð„È$£×[Í WjBܦ¥ƒÛB’Êè(Œ*žVhB~n\(ÖÊ–¥ÔÒQªb$¬µÜØÐžŒ$¬%üŠª]MkKXË‹Ö9;Úv„µÔ²ÑWÐêÖ²•g¬eÕ’yËW†ÿL« {ðƒpþY¬6­È[SPþš -–f2ÂÙ0­¡‘·ð»c¿î2+ª™·tRßÚT†FÞò•‚îÚÜ´B¦¸¼y¡ÐƪYëZmZ«uH@Ce¸±ºaWׄÖò’mJCAÛW×sÍ”¡¢ü\˜{Ѱ–2ö0A5ìÓËp° €ŒÚÂZ¦0Ûˆ°®«<ahî‚Ú¦eÑyš£ö6Ú >ƒ§ñÃÍ]öm¸ŠFçi_Mj€§#û¢Ùyòú¼MË]­ZËReIëVÅY¨ ·K߆ß뎵Pð丵éìÛŠIT³£§õ*çû-É[ö × ÖþÔQ<ް–ËjÍ?ÁZFâ˜yfT;OçʪIEÃZ»O  k½¢ø‹î“¼ŠÒs%­Sê6iÓâ§ܧåº `e[fkª"­¶y¾5tµ±ú†µŠ†µŒòRýÝÕ­ÉGXˤyÖÎûµ0Á9R”¾9âÛ¯î‚3NL†Ø6€±jÀ yÇ}cR5ÁÄ<…šämëÿ" 1ŸƒŒ} ¿¢o‡æEŸì§;†ÔЕç0«öŠ÷áÊj¨<§;kU­@Ÿ3#j_èÓ²÷$ª/Í6€ìeàzº,o§t7Éî‡M˜½ \ ØÑuŸ·8 ‰¶&ÕFKÌw­Ùp£ÏAÞ‹Æ…vôM'÷9¯«¸$£óTlÜÿµ£ñ¾ ‘µ­€Gb¬cV>¢26* Ês1ˆ7Vî·Ø;û®ˆ° qéÁS[_{<ýŠa-Ï“ «®+†µö•þ>­±F±†µ¼D« `ÛYêæÆ°Ö¾VÀ]³æXÄ| ç…Á¬¨›¯"äì’IÐû½Þ¬}mÄ•OÒ¤/ýêG[_QòMZMœŽr+w5ëØí«ðÊ·µçý—}§MzÞ+Bµ–x ªÚi>oÝJ†ù=÷mk$¤|G\ÄÓ~³x÷]šïâ`Ôs˜õya^4Æyu¼*ÊØòE$´¯¦yP Zo!E$ôÙÖ Ã»T KÏIÿ(Uœ£2f«æÓ¼Ö-çaË[ÙËÐo£òA}ê´ò^†R^™¾ï’Õƒ Ì{êeA»Êµï>V4ò–× ý~Ö{kïE1ÀÆí«ÀX+ïek¿K6¨¥ãç^¶+rçR[°–@MûÂÖró^†xØŠ2Œ6­|ÊøV‚/ŠBmZ–÷ÞFuÂ}îZÏ 1ïe,–Ù0¡êWÌ{^Þ®6­1›aó^Æ~[ÐN¢¬K²¼—±€…ÿœÃÔuÍ{¾RNÍTÚXùAû™KíìcÞËð¬†Rm:š÷ =v´3£ç©ÝÕg±f;3¢Ñ|ÞËð2ÒÚ´Ðêµ”´–Ë„?_m›[ÒZ:þ š~•´–õXÖ¾š{k˜6kq+¤QroyBíÖ-oIî-¾®2 ­@î­5úbiwB‘'@[ÃzƒÖ“ê¯îÚÒ¼d$œå¹úÙ[ØL  ÝÇû޵U§¥ ™µÇi>  ¥öˆÎ!@sBÅ'ÀÏŒ¥5óÖ¤~©õ}%ó¢™·<5ÔÝ£ óÓl([³–fÞòé¶ï9¶ZKŸjP}€ÿFmÍjÆl·=”ë6´TØ¢ »k×ÖZª OÓÖrìjáÍžÇ÷R£Ëú[oYª åŽBë>¢…&œ©I~ïÈ=hjB¨7Ô¶6ÖÔ„øJµG¹vjx4!¦Þà©^45¡ÌÕt¦ˆ,5¡JÍ[û<»–ç4RÁ¬fËÇÚÙ§‘ ~Z)¤·(…ÚË ,¯î²OødU4<)4ÔW4ü¾ _Qúahä_³ª™\Á¯ÑÏBWG}I ¢ù-LVCÙ¤­@Ö[I¬Õ0ƒÛX-K3YÖ+£qŸŒüPþY |žŽ^h½èhVÇHØ¿êyB šÕ±,­Ž\®ñ;šÕ1‰ô‚o•sGß긗çC‹³9šÕ1‹µêØ…Wy_G3«ã5{q:Gy-îhVÇ‹ìO%Ïw±ähZk hï”—£ötôO+aa1Aþ ÷+m&¬—&ÔÞö¬'å½ ÷€~™íy ýEñO½—!³Ö”÷2ÕÑVÑÔ„ßÞÑ÷6´i¥&Äͳޫd/ššPÚ ,â6€Ô„žQ›»¸³´¤&­<Ÿnš0¬å;ÙšðêhX‹ÛÑÂF±žFæ=xYý>!Yí@†µö ¹öU_€ ‘ò¬ÌÑÖu%V4¬Å(= ÖûY„a-è—/ßúãEÃZ<þìXlý°@sX}ÂZäud3´ë&DϱÑüÕ7luÊW šÀ¬gòDa-ß S:Z›)Dø¼… ~SjEÙËp½¥ëÏ´êbe/c_dêÓâ–·²—áµ7¬?We«a³—^Kôuå¾®y/Ã7ÒŸ4=½ <ÿÜÕµ:Ö牚@÷*){ž¹{†v?‹²—áÓ‡ŽÖÛ2ކµöÖ6-„z›Ž²—ždû.વ){îp½ÿŠRÕe/<q߆õ옲—1máè(¶±fþ=Vÿ¢íZ/ñó"Hú6t·¨c}Þ˜|OR®Í]­õ¼1Yåj…ÔÒŒž7&ß{Ü/:jaBÏÎ?JpåX^už7&d=jÏQÅ>=oLHgOÔ¬•½ ×CÜÚÊï1LXPö2ü«]èáìèsbbÕ³ô#´úœ˜6­=µ^#y^±õ®.aCkÕê‚ m¬Ù˘¢¹–;W~Ñ´–‹¨èì‹•½ŒùÞ¥ÿ| Mki}ŒñÂþ.ÛvWFŸ3Kq*³ú¯Å.2£+¼ÛwŸÎ>+5=èÆ€P("²¨:Bk¶Âž:?¡VËШ´Ÿ‰­ZÆ^Üx‘¶Áµe äÇÞEø†V-cí|oò€ÅqÕ2r‚ðÍÝþBïNت3ø\ª–±Þ£ŸŸeZ;áΔ9Ò BëÜ–¥űֹµ†@è |÷Ü‚ãXzGåZçÖž6¨ì&ÖëÜÒÙðج@C#Ç¸Í .ýÐ-Ǽ‡|@ÕáíaC+Ë«Uíã–•eÌ&‡’¡Î0[Á•»À‚ñïíü •ʈ–u÷»¿P½"}ý¾ˆO=³Åï-à‹3 ­œÐ'ã…o•¢‘Ȩ ~|îst|KFeð³—?¡Zü Ì ‹~‡Vϰ<¤ î¡oïê/Q¼.âOîâ=´2x[ôÉZ_ö­ Þ'fð<¼¯›ÑÀ3–¥÷É(õÇ¿¯7Ô£µú2öÕŒágÉêEU©¾ ŒW^Ñ^¢‘êËØižL¼ðõê£Ì‹˜#(¯‘Ü_Võe(}nF;}…ÜÛqï ÈPë×s©¾ å)jÿ7f”7ù¡1ÑP¬ô&l©¾Œ¬:|J =ƒ—ªeÌÙvȇ Âý4”u»hè ¼¬ÓóäãÊ2 ”JÝò3<ŽeqµÌC(}#Y¥9Ce„ž^]ê»ùQ­,CZÛÿsÆÒ‚P„ t§9Ðñ#+JÏúôQ?ä…ŽLÚÛï|Cíßm­ú =úNÞOž< 6xÉZÆþkŒÿ2MÉZF&« /+ë„ýº#YËH–ˆ†Î€¤t é(¯ÜÈz´h Æqê.°ÁÓÑ¢ù{û#ätBèhјñ‡i¡š-щ{íMø(M%d°óg‡å ’ÅY¯– å ýÒp6ú=Vø(Ù\È\ î…uá£佉øhPÀiÈGçiܦ„¿PÀÑyš1r&|¥ã¹¿Aäî$ŽÕC!+ó²º0!ô(¦¨„Šô–#‘³¶lA¨S¯»ˆU._Ë’4'†U®` ÉÞpzAM„þóÙuN¨ ¯,„ÆÐ>R:„ÚAy‹c8cEK”ÍBIq¬¥r7à½îZz«¬È‘Pó~ô=-k<2K#, Ô 2¢GÔ3Á•‰c ïM,ò¨z ðlǽP)ztžŒa R%ªã[òèzJJ- <žúo.þÝVçÇÊ£ì©Y%›ø²¢÷<É#í¹§&ßò åÑöL1uÿÌÖgçÜj×Ëú²ŒGÝS±—ÿ>õ.±#“kãó`Ùȣ響`(ŸO»cqbçÜÒ\†Æ½-B…O}¨*ù«q½…Ë#vfK¾cÅò§Ø™-^ÀÌ-–¡Ù¢ùÙ³H.bg¶ö;¡Oœ‚3[£cG“ ŒŸµõ¶þlš~–ŸµeJÚ«åâgmi/ žm¬«ÅÏÚâÎr>›#¼Gì3ß÷ <6Úgö|Ù¡Ð &%÷é1Bu „Zi:qÜiÓ;´DYP¿)ßþe•âg §ãql°•äç+nò:Vo`¨sË ó÷ O]%éò!êKŸ‚ :ŽýK©‡g5É·•ì'ÍaüY7ËLžhh¯ðçÃÀB.ïÄÛñ£ü™¤"Ʊ"øYGMr_â0}ÜPZÔN˜Ì(û{Õ1J¡Ñ0UîGœ>ÚŸISñK|k¦ãdðCÒÔ‡ue }´?ý_¬ÏmãÅVê¶¡ö§ý[!x‡1`-è£ý)¿Ô™{3r¨’é¸k‹1tH¯èiiÞŒô£p£óÌ–¡u&}`#’³Ú^ž Êµÿ<<Õ¯T,*³ñXð³“uç[ uɤgšª¥OÈб¾&E-}B³€±†ÁF¤«Žã5ñ;-M•^>74âs0„KxøYZrŽ=$þyjéîì €ö ƒ÷zužÑó±:v¬¥—ñQn·G®®…zéj7§ÊÖàB¨—>¡Cÿ@JÀõ¢ªzéþ]LÞö~qS¿ú„1?¡ðiûÕ'„ðq‰ìSà¥OHÐeÙ²Õß«—Í_óà:ÆZú„&È9"0Ö£EóèÃÄZÀ”>á„Í[Ek”>á´ð~„Q”r~Ø {ãéaÓ³ ñ)ãRãè®—þ,ö¾7£O(ÄX]«C6R¢ƒóSþÒ€ÆÑ'„Ò§ß…¸ïYO_Æþ¹ÖÅÆrÏ©-£O¸'œ…P†œ>xéx •òú¯Çd¬¯)A/ÉîÐÛYí®tªZõe †"U¶?ô Þ®^†ª %p+½Œ½ }JŠ«¿,Rª1‚uBW†hÉ ÖÞX·6J9+Ðé6I0€2+eç$ à¬-ÅÒWXÏ]¬´?yM,¨Ù„ŸUÚŸÉ‘ÀÚ[ÀËšgm 2¼žÏÕ·=µ ÿ7°ðóHðöÏe 5ÿÂ̯’ÎzÖ–~CçrxgmÍXN‚ž†jõÔÀ¦€WJñ õçg­8‚{ÍãŒA«×³Ž$l]¥¡6ˆ@óoÂÂVí„*rÞ»žÐU[q/ªžÿÔv[çÜâ1QÈ• ´Î-]|ÎÒ·±UÎB¨M· måc²1yª½¬lë¬-h:Òp¨œP¦ƒìâ’‹]7UåB£Á2,;Õ·7û/ÔAÿÕª–1g—µ}ª =µË1A5Iþ®‚Ò˸6K?¡û=BèáoqW8ò µ§–¡q.|„ 8§öÔ2Ò¡ um£³¶$MSé¸öÔ2,sE…PçÞ—aT®3 ¡™–÷Û†=µŒlt„µµ©õŒÈžZFìYì_šbÕ׸T…{IQ÷lufcªý•ºÌÒNH€šh|ÖÖŒ¥ª¸óY[ë×Z±J4 "ge¯ºï žºãúâæÒ'Šð(\Šåsn±*—e‰~V¹à¾*oèÄo@JŸpuŽL’úÚ¡¥O8ÆÄPƒ#N*ƒ7îÚIù]ÂÚ’Ò'äh• ¼c“Ò'\½ì‘¡ø²äêꎮ£—ͽúhRºº‰öñ#”›e€3F†*¼,¿ À穳gð&¥O8c(”=LÇ•¹ï*–ÿ©?U¯>áZ8 dž–>ácŠÄ†:yÈ´¼¥Ç`@º½öÐÒ'ü)?B‡][KŸµ[s¤N¿Çšb2½/î¼ÇÂF¤¥OV¹¶ Dc·–!1±þ ]4¦QÞèS¹;¯N(·ò1¡øTðÔò1Éë%<•»$ì]¯è lDÔ7òZú„±ž:Þ@ù˜ÐÞ3੃am•ÉþÏ­ª›Ç†Ã÷Z>&ü’ýßÐ.ÂÏ*Çöý#ÀšC@ ÑÊÇD<ÐŃN˜ò1A!”‡æß¯‘æßRF[jP‹0¿ø–„ZÀaT>&Ýîiá†+Dù˜ìiðT ˜Øò1ñ¿úá ]À5³ò1  &>…^ØÊÇ$lvíÏÇ ^ÖÕ¬Q׬³NxjÕà©«G=ß%ÁÏzk𰸾V“áó£«ëh·â˜ä} °8éÊ÷;t]Ð µ?”®¬8&û3FñÑøÔ—¿5‰ @¢¬8&3:ãÑúí— [Æ|zó{huVOB—$šø^‹¿µºÁâ“O1  ø[k¨:46{qLö6¤`M¿€ãUËHÑôÝôÜ«–‘‚ôPúŠ_$Š3´ø[˜üŸÊQÀS‹¿5—ÙM¡eÞÇåFŽ/É¥¯X/ŽÉJ 'Œë¿¥H$Œzý·úûtV÷+„Çd¼Šž?MO}–ÿ–õ;+ÍZøÖZŽ „kÁÊ,]ÛÊ¿ÐÚ ×G‘É­·ù,¥V¥@1ЪõYþ[³§åO+W_[>K½_CÙð Ô¹ç~˜qunˆ¶ä˜º—ϸHÔåbxÕ—±¡6]tÆ«/ƒh¢âü¬êËØk>š(}{óêËÈO ¨èùº^ .P×6`¬g¶†öÜåi´]ðNNêH¥5 Oùº9¡!´0‡Ahù˜ Ð%3´µØ¡åò9ÉÄ‚¡åc’ÚtD†V?a¼|L%Kl/îž’yù˜ì«pÀÏ í˜‘—Éþ¯Hx`Tååc’µ# 2ïåc‚éÚ…`¬W¾ &'ufõ&l¿>&lqw¨w²›“ß»!C(CÓ¹;˜ëe(ÃFÄçv¼/Ôcýÿ =·ã}…ÂVƒÏª–!&òýY} ª–±ÿ>ùÀ Æ«–‘ÒÈd[1¯Z- À„`¯ZFžýóó¹ÀS­,$È`Á(xÕ2†+Ã*€~Ìzf+•}¯Ý­ã¿.§òD0ˆýcü\žZ†gÚ!”,˜§–‘ p˜gËèÛÛS˰´òC~AàÚ*EöR^øpê„×"¾±AzåÉåè<‰²Afà( µÅ…îÚ¥—±ÐVLrý#¬¾ŒÀ6ôGR«ÿ¬Û—AŸ °„W-#˜ CHÜ«–áà:ó¿#ÚCk'Œ… ÕþÖûl•ÉþQö¡OÁ¹U>&{Å"Kcâåc2{gðÓ(*°e<µŒ”aû0.'\#]Ë-m|º?-`ÐRå¢o£¨tœÛK/c}9§S Í©¾ ñMÈŠ«/ƒ¦ÐmñêËhj2ÅpÆV_† ¼´×–C_}â€ÍÀ;Ô«–Ñü$Wi׿j¯Í M ‡Ð?Å»êú¿Û™-‡¶Þü‚À!ÇŸZFVö†*°C½ú23Z >{õeÌ®c|²‰ÎõêËà.'~Gà#¬¾ ïÍX§Äûkù˜ì ChëLBO–!¨Y†öʾ_S­Ôš€Ðýúm†ºÀ¢.&Á•ÝÊ~õ2ºGã³;ãÉ]µŒòÝé@—ö'u­S¦ƒÝ¥´?Ã>èξXÃSϹ%½ì©>âöV}ö×Ü›²ŒêËðîFóÔ_¹»Îxÿ-v@N“oèð²ÊK:ëöi³ ŽÿÖþByô—åÉšÆÈP¬hŠq‘~Bpźáß­µ¢Ù8Ö£„ Á‚©¾Œt$"„n;lT•'éb8ÏñßÝÎjF8tô–‚Zê&¦ø–¯ÙqÝ6úí8£Õ¯;AR=î@»¦†ZYtë„ÁÀ5ð©vª:*I©ï!Kºv¢f ä%Óµhò¸àeñ™­}Gd@Í~„\UÝA½-"¯f B/kŒÕ’# «€ér¢d2{ö|ýމ䲤Óÿ£8&ûµlsÀн“ÑK_[r‡Aâå˜è‡k6a+æ«Oh}צkà˺j’ëCÈ 8 Šcò®Âì[ãj΀oí£´àjô»<¾Æý ¼ÚŸ€î̬µ÷Upµ?e K¸cqµ?u:0­PÎ2®öç×ZnPoº ¹ÊA> #RpûªeÐPL~M ½J­ yqwÃ(íÏì5-Eí4ÔZ³õúåþ°Ažº^Rj+Ãõ<®ö§}D±<„ãÕþè82¡ìWûs¿pôv“(íÏ¡<à©ÈéÒþ³ï„OW­ÃüÖ à0û êßkõeì³ÖÀm‚ñ T_Fš~<,BgqNGÍ §×_Ã^&«A(1ä.Õ—as1@6Ó;å3ª/C¾ìö&k[T„ì!‡=«jû'¡ðd§MDÕ2؄݂} ú2(Tà©``T_­µÕOaÓ¬¾Œ}œ) ¼Z]4oOç ¼zå)ª/#›€Œa ÇqõeŒ—8ûW×Û›(OÖ}&tÐʤ†§V¼v?Îô5ƒæËx=YÇÀ¬ߎ£jû¾0ÑìAÆêÕÊÅ ~q¬¼£U îqf+­üÐ3ø¨Îj <, ˜VZ×ÈÀ¼*Koè¹›ƒGP†Â‚‰º¿ÜŸÀõ<ÊzŽŽÃ<ΙígåøÎýüõ"ùy[½fÇÎ’@P|]oNö»ÊͤöSô®Ÿó;öÖ3 ß-­^VÌÌí”IöÅÆ0£Cè;öÌYúÍÂþÚ¶üÅžIëž9H‚ïØS‹—î/›±jŠï÷ÐLcÈ[jàxOõ`ÅØÅ c˜§ÀK ì$OΓAì,&SXÆ ï÷)lè>Ü¿±ì;Æ1œª¡Œ0¶CÛ±×ên ð•9Ã;+-P¢ —¼U£FLGÄmÙÂñ2f_òH$e"T ¡Êµ¸N=Ú±UßE¹8šÏ­Ç÷BÐ Ò¤[ë ñ)øí¼ÔGZÙÀç¦ S(Á,\eÖj«@ìÚ±×·ú# ºLà;+YÐé8)¿u4 hJKÖ‰ÌÅ:²Bí`^¥¹ð¹QrIðIcÀo+iЗ‹÷TòŽ=:PŒPYÖæ:chÇ!(Ð?™ a,]¹GümMÙœžØ#8É.ˆ@-è¢Û±R𛆔ôÿ”±G T@1ç#àýRõp †{Ö›Á\ü¿Gd ßo¹ªu݃öà÷ËgŸ´N+;óûßjýDt ±•[ç[¨|(I ï¡z8^ ßN’2ìQÌ—6€±(gŠsW®çÓÂï—o‹”!+H÷¶2jï ͧü´0¶‘š¥I–ÂØR¹¶(“>Wùu²ãsßbã_ìñì2vD„&ðªwì9ßÈ:÷2qÂó¢º9Æ~Vÿ|“O ÄRÐmAlÁÞ÷Ô@<}»…ßïá)‚Ä¿ëþç†g¡œ¼Ä”Ä ·îØjÀÙ”Ä H°;6îºÀ>ß“ÖlÑ) ¸‘’ð\=ëm½T€?ÛvÀ[vl­·…p%0ˆÜ±…=ƒ¿÷ŽeÇ3«;ä½!¿±ë¸:;ö× (ý]ÿ;öœo;wdxæ8oZ·r¯ƒ0lšµËÅôŽ$Äÿ5ÕçöÖ—ÿbAÍ$“ôºßô‹ëÑ¿d§Œ¥á­ Ñ¬g2ö\ܲfËK¥*ô}.Ž¡öÉT—ÚWf"ŸMZÕñæ-×E‰oð_’÷ÆrÀwVêòǺyç-0§-ù GŠŒ]x¿(ýÄü|;Œç¦Ÿ|2«qð=(cNëgÞœ­ƒ–y›0^?ó¶?*…ï—?g‹S ÁôžÚ\ǎ븈+û{[ðÛ&á¾^Ì•Rà2>gVQWvrƒ`ÜËù‹µ‚­ºtÏÁyñ¹UÒâ@ô–?gVu|ð_nÿb‡àm–r-'ÖB½‰üAì,# Ò™ãý-Vé"1$‡­z;öÔµT ‘>xo‰j³_ e–Ú%Œc¨>{¤¿h1$¢:ý-k“…ùNX•m½¿éXï0ÇQ…ãÕ9‰¶)æ}Q•ã·òÆ*žYs\é/àëÊ?°æg1YvÞ#¸ 0¶Þ±%ËáÝ»ëxM;Ä^e½1€ü%à(»c«Ø¯Â€¹M KîX¹‚y¤“@`¯ög/naN]ƒ-?ia¯]šÎ‚Ø þŽ­VS™bˆ”É[ü#›`–‚çÎ×J9`4dwly!Ï9I5ðýÎ2N¡! Ô.Nê{æþô^ì‹?ã-óÃÙ}fr?=¾[õìzø¬[6Rû']ƨڱå#%c‘+áso‹ð0ê“s\š£KýƒUAg\ú¦`éSŠd0oëâ Ã€5$X™e;í# ç¾ð¹w½uÌò¹Š;|e»óœÿßÄ¡[È5s|üÑc«ÎBèz> .7¯ö(éB¹·õ‰õÛ¯Æj,ñ[½{›g5$™$PRg@Å8ü¶ê ±uñ¤?u8°[رu¾Iï'ËX`4ïXª>5p,öŸ{ÛCæ'– ?›Õ’µ¤BKÙŽÕ ‰-ÀŽVÆžy#èjK¦H3íX/xtƒ1ÿHÑîØ(~ÖZÀ!qhÝNIÊKYw¨ÅûЬ.‘1?µx^kˆ+Ÿ¤‰ÖöY›L•§ ºŽŽÁÑî ³ê%&úqïÊ [õU4MpW{lµCsüÓ ž{î‰2LŸö 0^/ÎÁ@W²}ôËì±QwC§ØºIƒœ{@Þá·e½wõØsÈå¿cÆ®[¯Æw–ßUg¥ä »òÄ6SÖŒ½MßcÄ7Æ+u?6ý8’7ýÑŒ­{7¼3‡…wV½©û—Ùçýn/[â+/ÿ; ÏÒùÓøÌqó.ܱU/ÉæPüδ5aflÕK^z̯áüêï¡ê%ûüD£¼„f¢ÇžyÛ9ÎÛN€¢ÿ¶§^’Å‘^ËL•\Å}GOË`> YbžúÔK’SŽ ‘]Æ[ Gô‰]ˆ·Ì"Èuéá¨ÃùVl˜»žk§>IFˆ¢Bdz¿¸Î¼xp=°mLÙªÛ!6>ø܇fu‘( âzîv©è[MöñÓéÝñ[œ¼0ûö ÎM;ë-Ðõ# ½Œc¨õ6emà`g½MYÀ]zÚéÝŸ8NÖÁñ.â%ªˆ¸ÓsÏ‚÷PN²ª€;ñ~,"Ü>˜šÿuÇ–Õøºç±Á·îÇ.™DÉY¾Ç%)œø‚(ÈŽÕÇ>N¾$±µ•éÇémŒ…þ*˜Oú±z ÷ÈÌN¸3xÔsUAqŒ}lXrCb¤ó0˜fäùmøý3ûÄ®ç5Ç’Uw2üÖ'û84>ÇÞEâçL-ü_sºr¼X–ð,3¬)DÍ|“™6*÷¥Ve€©=~ið­Ç¡¡Éˆý䩗Ø/‡þÆ X8em z;IH„ûïªþ5A÷ m¹çšÕ§0mB}g§Õ®=¶ðîèýlÏŸš>zl <ÛrÄ[ö¾Ï­|RÖÀñyËûV ›¦¦ èW:åu/|Ùgå=¶$ ö@‡Œ9á•¶i®cŒÝócàãuRŒm×àŒ•"aílÇ’vÌgUI¼m—±XÇ-•‰aK0–#z칿øÔðö5pÂo‹Úéó~Ù¼¿³’Ù÷fÿŒAû=kÑí› ûŽWúx¯0ÈZô‰ÖßC)ƒÈë´úó~ÞYIƒˆ+š«ÌåÔßÝ{wïï{¾è÷ùUâ Æ¦8†!=¶x»(±˜w2\CÕ_²§Í‡ôVÏØr+p"ŒÝW§>o·^"áHRŽþܪ—L’‰øf×ËØ’ßñYdziígl©üùÄ,ê©‹¯ÌßúàÒØg³¸ê\ jñ‰B>¹¸„þˆ{ª[ŠI" °ÐÁбe 2¹ƒæÿ..­?ŸɃjxKª>ÉsÀs÷v Ï-ûkx)y`‚¸cKäJx}O'ô­×ÅÅ–"þ†¿­l\B¬óçÒjЫ86;¯F)GåÏж!K‘‚!;¶xAÛÀ\®h6y1ÝEV¸£¯âÙì»:¡8Ü‚|]¢Í’¾Þ8%à·]¦Í²NõI²>cl£Ä b×¼¯¸6Ë•Q&L\wìÅqЈþ¶Âqä„î“[8¯@ìkâ:Ö‹ã@OÃêj'¶èQªö3t•ٱŲNùyÜ0p½•|È> é“Ãà·^õÒX†§]¾cÇžyK‰.|Ó?±gÞ˜<; ìkÙ™·œ#@ì‰\VóáP?#¬ï,«y3ÐËêË£s.²Ìï·Ã Ã§sp+ü-&b_xò+Ü(T)BœwùÅßEó ´Vwì‹¿ ¥PN&ó‰âbvšñÓ½p¼|mï:÷?Ž ;V®W—bÛ{ÖוFõ1ÏÒÀ3À/þæ¾3”€ß±^= [öxÁš¯þ_$èLd€©­ê/1Eº\3;«Dºx\ê$ã=ëö—Ðj9Ar Ïùê/ÙGËGŒ>càÊ>ü Æ~Uý%™ƒ€ÒšpVVõ—ÐßAý2—Ba½UÉzÿâFõy¿E¨×Þ«öàN ¢ÍØRŒvÿàC õu•OFLÂ:FE£T±fWÎX ¡[²XK cµ¥Ä[VQÙ®¯=§¥ª—(:%=0Åš=¶êÊ L‡¶ 0ÞÛ‡} ó1»²[ªÂhÇ·^Oñ7¶dÙ÷oÆç ÜciÔýM'ƶ¶Ãÿ¦ HQÉØaÞ’QÔßoéŒÄÎwð¹j ±«ÈdkŒmÆo[^X¦ßçJÇ,©ìlõÕ€þ‰~Ûí{UìíXýhÊØ+ ó¤M}øþýÎë}ò’9ÇM;cO½„æÇGqMÃ÷[ŽXû«ÂçŽ ßdÕK&u•ç[_Ü¿‡ëÃŽÏÍO¤ÿ¶µªü¬üSÞ1a*>Ž3àdÆ:ú¼­c‹5ä»ï±c8úKûLü¸F‹âxÁˆØB=u.…Ø£hÚûíÓtB½šÖ©OÎÞ„y¸ˆ¯S¹Û¾ýç±¹FTý%Á€3$%60¶\™{­6ÿb¯‚ ÿÍ rªzÉTÐeLc#è'*ë 0Eùßãñ [êœ]ëãx™EtpS‘ÔY`lå“Ã'{ÕnþbKDM´%mÂÄÇoBümç\=O”õ’çe~ð7qàNÏï9çÇTŒð{àƒ¿íüÚQuQ€{FLeç¾Ð+ìÃQ >&íûè%À¨D?±‡Gµ‡À;ÀÑhÇÕ^³ë±‡øào®†˜ûâ.¸cþæ Ž–ïŒc£ž úl¹}Cß ÉÁßœ¹0ÓcË«Ýoyh»=_'9ó¦ z05˜c9óÆÊo© ø<É™·ÕÁâ'ï{æíƒ%eÛÔÏ(ë%¹ÀׇW70ÿ%9¼Å×Äû/–Öç·ÞâBmÇTŒðí”_̇W—8:Ü¥IŽÃÀ[|(¸ïTÉ^\ˆ}½té¿ØUsÇXûŒ·úK<äùrÇØ[W6äQ¹ãz»¸¨s´º fCeë¾uOj ÌqÕKvîÉ€% ¼“Öù6 ñ,¨µQõ—XWej¯{µy“Á¸6ÇßO¨óØf©÷~'Uiöó[bÆÝ‚½ê0 ž{ò£ùyn~AV}ACФn.è¥"+ü ì³L¢µmeláoÃQ…h»Òó’ê/ÙŸ¤#&áfýÞbþrÏuˆ”!öâoL€I¬EÚß™_üÍjb‹òßR^•µ&>wßÞ ¶ÖÛ>»ñ¹*½gJ{UÑõ'®À{(ñÕ}ÁeÀ‡–·6³Œ-üMÙ“Ø3Ùû©lq…Ñ2Vž[ødf >ÜcK´äÎù] sQý“s"®·c{¯%•lÉ>/Œ?c€oòê–x·Fx~›ás Ó@®ÜŠÕëTÊ%;_AÞÁr÷÷nÅ9Æ÷宵ߎWµ÷#R”½Ö°Ï·. w†xýµ>߸KGáo6?ßï’ÞÃI·^"s}4¬ßq¸ê%Yà@lÑÝg…©`cî% ¦ÈØÂßœççÕÏ-wñλš“}ÆV‹¦!Ú±f¾ý%{£\²¯y%èd ßCRíá¹ÅïÞ“øf‚G=Ö¯já@nꄆÇUŽÚ£¡–_>p*«3À³¸ø8ôÇŸ±:Ãï¡ø8‰K{%>'ÓTÀß–vláoa:Žîø\)ÌgLÀêP,yÇjÅR?»ƒ¯Ê'_Tá{†|^^±ì°æ ,.wlT¬Ï/Ÿ Æ@ãæ´°ü¦V;¶ÜÄ j¯úïmŸ,[­[&º‹ð·ÀçžyË~#ý(Ÿ[ø[€íH^ÿ ·gªy3P÷¹‹ŒÕûÎh6;ékwŽÑ+Ø0¶ð·WGæ˜ââ±±zóy­­5Ôå*“ƒ7c 3EB ¨]1_!Ðp°wZ ðæÂߌ»Ò™Q1¶ø¦äªÞg¯Rau“Ñáé³§–të j¹}bTú♯û|¿)¾‡ÂßÂŒh”p½ñ忯Üyùö—ì\$ûˆ€{Æ·¿Ôv³-µ¸úK´ƒ Å“À1þ‚¿¾®‹ê/Ù©ØD¾Èlž}{ý?‡#/I¼swXô:Ž r‚F£^fláoÒû˜2V¸÷”±\üÍ?xËXËÉÅßòqKïŸä2Ø ä“­× ö-üm¿!ûàþ×ãkK34`?{þb û#q¼±Ï­{@"qkr˜±…¿½†ã±1ÞCáo¯kúßþ; ¦Àå³»§8`¼œÅ÷[øÛ콡»¾‡ªsMñOlkýoN@ñÔùoÐ ›±…¿ÍÞ xb½“VøÛÔù‰…{![áoÓ‡äW­öå[?ûü¶é½^ÂU/‘5qÞvzÎ0†Âßð„sŽÖqÕKvª€ksdðíÜz ÙÄïL¡ÅU/ÉM¿už½ß“ýši®yš1!ö¸Å#?à)ó>÷ô™ûtÄßöÖ§ppíÊŸ«ý>Ï~tž¦1âdk0Cìñí¢˜ q=½Ä~Œ»´Ç¼°m/{òSFì`ßÚaÿõkçꊱ;Ç‚1Tÿ¤Ñøpû€ ÎÕ_2`3‘t)8[ª^"Úyy9žCQÆñôÑÖÜ×JÈ5¢x‹6Qs ð¹lkšÈÁ:ç||ž{×›`ìÞIð¹z4ùx"þf‚yTÖKRà¹\Y_̇£xT6Ðr-ð,Žƒã0/A®rldŽ# ùÈõˆÿ9d¬…š’k‚¶…d½ä1} ´231|.=±`R÷7ãxŽ¡ ào¯@¬<±NŽk“P÷@²^’±!ÈS}DÉzÉãž&ø\SÁ؃ãøüâÁB16ÎsA»ôéIÇß–õ’læë|e‚ïwžy“X]Ê >÷Ì1ÔøW¶0+Äžy›ôÁÉ„Ÿ{ð·XŽžZ‹o‘yð7ñÎÍw†@2nººèÛqÕ8^{¸rã‹}ü‘±þŸsi…X}ÎXˆ­{w¿ ?5Ã÷pÍy§}¸ˆ¨§ ëxR¾VÀ:œÉKƒØUÚ°ó£õ‡}ÐRž6ƒ{¶_B¿œ”©*hUÆ?ÓØ.½Š…ü¬tâ…ØÛ? ØbÂÞse©z‰º~p'ƒ\Yª¿„¡¿äá–´T;c‹ÿ&Ë1VV×—:ø[€NïSWÖÎK:ø›Â~väx;Ž#tò†½äðM{Þ'O½$Rà÷‡eÒs©þ’tÈA‡÷ÑÊè[ø[âN´„a W§w"—‹ÞBÌkWÇ9L¤Ž¿Í/¦†<r똚”_ï>ß°¶Íƒ;Fʰ7ñ3ŒÑûÄä:öÎÀº}jöñ–Þ«Àþufî÷B)½W‹ O_<Áû-ÓÞÄPà=ìM¶÷ìI¹öîÕBŸXà¿Ié—äÞ' ïÌnŸ£áxm8ü¶Û?¹ð;Û±³¥_B¼ cøNRú%p;±p'“Ò/Ù{ ãsEûÝ_J¿Dg÷E9²Ú³¹<á¦Æ<‘ÒqÃj0qÆ–ÓÙûïûmŸ^Æ–N¯Äg½Áû­zɾw®7cXC·^²§~uªRÆÆåž!f¹oó°†ÊÄwï0_ŒÕbËLc"^è³ã¢eÆŠïl Á7©·Ï|*b¡‹û}H´ê\ LVÔõ‚¤úK´ƒ¤/pT‰‘ †½‹[:†ƒ>ܾ. ”±UŸÜ{*òf„`Í_ cçå³ßزÀÙÙ$Ô…û…ØÕ14äöA}R®~ÉX5;'èJHñqrÓC6Áçòk?üÕËÄç–LJƒVå^™G]>ÎNŽ×›ø¦\>Î\˜;æÕ—£ ‰šé‡áo«|rZÓ­K£Ö:R|^ Óû´Ø:ÄÎÂ|M¸´K¥ø8lKÁÆmæˆÅÇáh óR†»´gß‹ÌÑöeJñqdAŸM¶D@Ý^\+ÖôöeJÕKv~‚{Ÿ ö£T½dŸ÷d}ñêWFWÇÄ:€#&eñ«ÜuÊ)°OléÎ$ øÐbŒ=óö£_òç C[ø[ Þ×@=s‰š7#£•)|¿QóF:ÏZÈ=“¨y›½ÿ!ë¨m,Qø›Mä}ÑÂûqnJP¯ÞWº÷¡¸÷7︓¤i{_óZz¯©é=Öö(ï^>Ÿµ -½×µ·ŒÌívìõvSŒŠôpêxñ7Ε¥Ñ޽în=/Éúúùhé—¤sâÎÕ€žŽ‹¿MEÎrSµúKÜ×KêÄÂ1\¯K°mKoø&µúK²‹é£õ·zÿŽV‰Jï1,m7î±W_Ù>ö¥Õ_’-p¨[JðÜê ZеøÄ¨à¹×g…±ŸmÔcK[âƒt‰…Œ-›È=Kì@z¬¦Ö-\¤µ#dìÕSøÔøÙ¨c(Zþ8|2¨óf´€ÍÇ»¯óÏÒ²V7ijäÏ^çÆVž rûDï¤U/aðàÍX3Œ½:ôޏÓþò ÞC™6[ïÉØˆÎÇÑuužòõög:a ¥_²/Œ0o:'Ž!Ч6]0–:«tîÝüùóÜ®“£4Kó¥[›žñv¼P©ú^¡ð¼‡Þ˪tîÝûÞ¹ôó~'Œ—«¦àŸç~ë—Ã.ÎXðÜS/ÙÛ2MüÎÆ€ØêWp×|$ò&Œ¡ü:¤{Düï¡ÚõÞP¥(îÙ§¾³Þ¨O½$M?Ƈ‡BJ{ê\ÞeI=öô™¡ˆ©‘z¯ËéS/ÑÔb2#–wéþΪ^2^οXñc‹}!®':7öúˆ±ãÚLAå[~Wê×Û÷àÙcËGÌ?ú©Y„¹(1Õ‰XóŽ˜UI6âOÄ ·Uu®Õýž#oÀ\¬U=éßïλ׀-*¯—&>zp=ð}°uæmç^h^N{¬”·³ð‡œW{ûKb_Yûéï·úK+âós|ëÅÇI¿o*¼³«c¨¨ »Ó]ÃfÎñàoØ7hty2Ñ'S@“ÏŠC½‹¯^æ‚úºgç6 øÛ0ÐL¶ËÇ¡Á i î-vù84ú^b !blñq"ÐÿM îdV|œ}Uð^ …¾++>ξ×õ³PRNÛõ¥…õö‘àþo¸ Cá8Yê¾Alá8Sû{È+hç_ç£9‰ñ¹TX)x¤½n®±\±Ÿ>…@/_«z‰~s RÅX­Ø®å•ù:ïËøö+ËŸ«©Œ±^>ñF ÁFèmå'œÀÖÚ xu&gÞö"Pàr-Þ¢IÍ›¹¡‡rlLjÞ¸Ÿoÿ{,÷bkÞfïÉy¼'€giRø›õÜóѪÄïL.þ\£Çëcïzó¶§&FE߃]LíãÂ^@“ïîuåäF)¾‡«?é µþîèvõ^E»_RzCÏ´½z¯4µ·8øJï5‹¥ðAûpÆRîˆ1ô”Y齎W ü×S¨ãNVý%I&üè÷aÎuõK¤siŸú$x6Yõ—ìœ ½•²¦ŸCÕ_bs þÙΖ:žeÕ_²¿)ùp˜ÎÂê/úà8ÐÃivõ¹ßïNTzÔlUQï/yð!íwS+œô‡œŸº=ÌEùãäÿ±“PÈ£LÊÃ6PKqo³]cßÊO8죧¾ ç*?áÚ£¿“ÍÏõòýýà û¨Æç–Ÿ°’ñGs¶ãoV~Â"¾ÓþSC±òf6ô®2ÿ^÷·~b£ë`˜KÝ 'ú\ù=»ú%ãƒ}ùœÛ{ùwLJ_¸?~ñzÕøáÊØÑ{…ÍϽ{_~&αîdQº3öá ¦ oñÖ¹–ã÷`p‡,>Nö° ~g&0*<Ë‘Ûg¯éÂËÏB\Zsð§^’žc†E¾©ÅÑÃSúÔ¶ù‚Øã#¦ˆ“ííÁá=œ:—Ùç¹{±Œ÷è<½öOìnªò£ê‚ëó€Øs¾ÍÞlvø…Ô߯—~ !({CiÀs ï¦vVµÑc¹|@>œ¶ýñÄVŸ9Ô«œaô3ÀÇÕŸ,)Ï·åðÜSW&àj©ÀŽaûÃÇÉÆ¿ÀØ”‚÷pxTË9mÆ ÿàs”Öè{FÚoaìáã¬.¦ñð»ð/>ŽvQÿG3™Ÿ{pœÀ´ô‚ÂçG­óEÒÓ õíýáã<‚v ±õVüáãH6®"ïk2ô]ùÃÇ‘äNNÀ³} ýáãìdwò_§˜¿Ø¨Øo‘t%<ë%)r`þÁce`ì<±<Cѹ0vÕos¬W/ÍoÏzI¾3ÈëxS¹¿X¾±ÈÏ2Än}yóºuÙîŒs‘õ’Ý C~–„`ìÑ1\ÝäáÙ¶Æç¹…ã¬^ªÀÁóuð7CÜIw¾z Äéào ¾‡§¦w2§yñXEl‘c‹·h„UR³!öèOF7A|ú û±±‡ÿFÂ,iÌ^+ö¬—$ñö¾ŒU1ˆ=øÛ”‰±é5ÑÏ:8Ž ö•û/÷^ ¯þ’¥ôå%®¹åÅljøè î­¤ç%ΣjÅd|<…¼üqD¾¸S€×–W½„ô‹ãx ùS/I9ù`Iè¹ë|xÂC ñ·¥ÂYȇßÐx°‚sþ©—Øã± ïÌNO ¾3%‚9~ê%ɉøÎö­¥ã ^ý%C?UÂå}¼Õ_’„¨‘Úš]WÍ¥|ieâsS¯¸Ï[õ—;j4¦òy¿å'̬ÈCÉÝ»ÿ¶ò–×yäÏ·d(Ãsåz¨Aï-Ÿá·{€ý±]Š&c­üɵ÷'ˆïᬷýÞQëo¿ú€Ø(þ¦!—kÿ”®ï¥_’" ŸçB?¢—~ÉbÇ÷ëPê­ûOŒ…û¦—~IÚÚ;¾‡üìê½r0Ž—‡ö÷[ú%ÊŽ˜Ä>JúýØõõC¼Å»•uÆÚõ|üN´ 9ÑÿØ‹#×ÏÚ‡ÜE.‡¬Ï±fäˆÅÇÙG¤£ÏÕU/>ŽöæÙ'¯&Çß&…uôºgæëˆ;yñq2ýE4 A/>Î> ð,€IxñqLU€#6'ãû-gÏ’ž5áEñqv²€¾©½¶¨z‰™á™5ôDFñqÞ’ùßx×€>Ç(>N,î›Ô.mm³{æ-&è~%v»ð¹R±µ¼T Û™·½ö‘ŸEèM×Ox¿_À³^•߿ؚ7Ÿ½.'>ÄÖ¼‘MðÄ ‡»iÌâ¿xiÖð0v^Rw¢ÏÏÒŸ|I_|h –LÌâ¿1øîì»Þ¾SÌË[l°§¦@ÀÉŒÒ{幫±÷³Þ3¥÷šmÛ0Ç©ò°z¬N&¨'––»ðÜÒyâO­8u¤ÇVŸ‚#>D«çgQz¯CÖÌ÷±Ðs¨þ’ˆ…:pû}÷>±¨þ’””üjšu^sT‰¯®¯üHi¯Gõ—ìåýáØ¬ÕëÕ±^~7r*vVÍð®¾òD}9MÏÞkåe6P»ôUFþ‹½}A‚HFï¡xùnŸúzÌÞå“I3ü¶,¸÷ï¬üqô‰el>¸Ç®Â³±¯è²®{îû> 0Þ@}ð(?a“‰k(:l•±u G¿Åpè‹òÎ&LøÎ"Öfù ïM²ëe>­„½w1ÊOx¯Í¾†²%x)Œ¡t ‘+·NqŸc~}ÄzïÁz¤Oû\”~I0xÐe,÷¸(ý’óOýŒ¡ó‡âê—Ìè8dþ6ààEé—èŸwÆ0^)o0Ø×Ÿ¹ðÜê{õ&‚ræøóÎJwÆâYñGº±çÞäL‘Àx«^"Œ8ú>ªá=<õ’À†³†@¯"äè<áã®MxîáQýÔ@ÞØ=Ó!‡G•‚)¨S&ÑûÌCJÆWÓl‚&jÜþSŒÍ̵ë¥÷ªöÁ³²ž Ï­{÷øâo :.që%öÅÔF8ü¶«?©ˆ°€_G”~ÉÛ’þ‡í-¹ß £ø8,þ‰E •xø8±sðî´ø¡åGEA_>΂çòõ úà'¡¥‡Ç½Ì!{Iñq9L‘>ŽæCbö#ÆÃÇÑ,F*`_k]<|œ€äÁ„ VŸØpA4Е;ú“~V¦„±~bí£×¶æçÅyX¯¶|ÿÈzI6›ucúçˆüÎüÌÛ ¡üW°¤ð3o<5÷ö߃ŸyCnjj¨ðg sž>_ˆ•ú&³¢ÏUbnÊÈ£ŠXRøÁß}¹¯Q~†±œ¬=¶ôðäƒÝ¦L Œ×Š?ÌgFB”?ŽÏÏ;Ÿå£Ð§p(:­>™c¯Úá¼í„cgås~Öq³‘ÎØur ò©öûÛþß¾2áxÓY{ìñ7%ýÌqÂ*{ú‚H>øÛþH Æ åm'jüûÞÒr‚[¼|j&©'Õî\‚{u±?þdisµzlñy!ßi¦ÜÇ0«Ÿ‹m€RªÍ÷1”Ÿ°Èê5ÇçÎð›gìÕSðÎ}HxÉ£ÏñõNj,Më¿­ü„ݺçî‘ Tˆ-C‹Ûl2¶t ]߃/…ßV:A†Ïõ^ƒNZìÁ³pžçxçþÆüÉr¼Í&ë¿©45ö)>ºTÖ[é—èþÐzjW}ŽK¿ÄV×P9²®øÜºw/¨‘æý­ûVïØsïÞK³û%åw6Fߪ^²×òfö0^-<« Nœu±¢Ï[ÕK úˆíÑNCÕKúeí´j¶–ʌ˥5ÄõlÂ{¨z‰|=ÒœºŸ{¶Áœýw~øC½yÇ^•">dÒ½øvlñ¨öE±ñ¹à{ âQí7 Šjƒ”3¶úÌ•pïÓÙ¤Z3¶tž˜³µÏ-?ªÕïÒW®ý„Œ-UtÝ™‡ÿ ï¡øêÈLï‰{ýqþr£?}ZŠ>†âã¤áòÇ_`_¯þÖ2ó’þýçÿøvR¿±¿_¾¼ŽoqD¿ëíØâãÐD­Ê±&œY—ãCÁO@goÇ^>ôø?ëVá{qœXÀ›£çž;6.æÓê©yôÏŽ¿¥|ÛÁ$Vh)*wì`Çžysí5èG÷€1v.2ô_W¯¿ØÂqÆìs‘4¬ï¡ø81œ€ŸÅß1޳ÄáÜ|˱——ÿÙßÞ_¬]?ö䀵yÆžyÛ'z×”|R¶v×Û±Qíü´¤ C¬ŽŠí˜û£CÔµóvìÉ'Sfô)ðý>ý%ò€ÅÈݺ{ú¹ñÕ±5oѽfÿÇh‘±wÞšùêáFÆ^üMºÿPzüÌqù g¯#FåøÎ.þ6ïä ¹ck½­F¶x´óºÃ޵Âßܰß>mSû™Uz¯°ÙiB»®¶æD¾“/ïçEé½²:Öt·t4c¯oßD^Í®•¶cåÅÉ>ž7½¿cµp²õ_æ ç[é½f“3ã·Þïz;Ö 'kâl‡‹¨ÞÏ¡ê/ÙwTä‹hñZìí/y­ÿ0Ÿý[úoóy=®Ï2 ¸ëyå%“>øÐlðRÆÒÍwóÙ y_é—ä=ß°¾Òçͯ˜Ìx€Y¿^>b¸%™+8ç½t w¤¡Î)æë~u Á *m.ÇP:† <µ”Nˆ-?a—€¡d±¿³òÇ1Z˜ÏZ]gdÇ^=ó5๋š¬vÆV^ ûp^Ç{î¤î°W¯=ëðÜÒÁ`Ъ|(°ŽËOx®î•œ±>!W.?áÃßæ÷ùÒ/qûŽ×Ü K¿Ä¤÷‘>ãm²¹ÿMqiô;Îóˆ ¶îÝ“ç½aI;v]Í"bœãÞ¯¼c©ð,›8†a­×rÇ–îŒß–yðÜâã°¼³ô¢á«§¶²zí5c§Møm§_yMA²½Õ9<×ÿSbQXO AˆêÅþxWíͰףæ7'@|(¸k¢îØêÃÃ1̬ñü•ÞëÎéÃä<û:ž¥_2çGo0ù{æ-/Q»ºžãŽ•ÒØ'Ä’öмvlñqÜ0vÜ¿iÅwâñÁÔzïâŽ=zxK?\®=€€ØãkúÑ~L`Ûæ*]µn€uúKZ›dÆü-\>zŽàõ²c×SWZîõÞƒKÅ ŠN¦MR5c`bˆ}Åêi;öà8û+QˆÖý|v¬>¸Sú…vÊŽµ‡/²ÉÜ3ºVÚŽ=ü7]Šš‡¢½¿/[[ŸØpG1ìŸÌ‹Ørp‹çMÜiÂ{xø8þð7ÓJråùðq<“&ÜKÜ!·ŸÇÿ½Ú¿{É ˆå'6ÆÇ¯.î8óáãì„{>w‡×ŽÕ3éi‰ã¬…±VÏýp@Ì?ïÁÏ;Óøð¾î…3ë%+q2ÔSHwÁš ð@JœŒà;ËzI~f8™ŒsÁgÞ&ì‹1–žçÚ~Kz.Ž—ÿs@]À<\9³juL-»~ÿS ôü𨠯žRþo3ÖÏêØÌ”ƒ¿ hÎ>½ùS`¼gÞ^žä¦¦£ëUìØê šþ›î_Ö÷êâãŒõáF‰Ãs £Ï{°èøf:«–öÂG›0½ûùVþ8ŽÞkYƒîü¬,ÓUëã ¶3AȪ^âÄk~ŒfÓ’±sˆ£¿6¤±åo:ý÷‚ïLþ xì“Â÷Ü~jå“]üù‰Àq¦nú—½±1~[õs­e€%­ýÞ=µ|Ĉ°¯ÅÍŠ'c¯è±î½?ËOxß“b“:Ï-1·ã¥iË•ŸpÖ'±6¸ æÍ¸´-TóÙ¯æÂÎý-eÑ‹„0W.ý’…ZiO,äà¥_’î;¸‹”~ɾ†¢×Ë^ý¾9íê‚oT¾3…o½ôKl¬5q./œ¥_’½ø¹DÿÖK¿do]ÆøíHÀséâd.øM.x¿U/Iƒ{ü~Ó0 ÇÊõGGÌÚ|3¶ê%žB¹6 ÇPýÊ:q ©‡×÷¾ª—ìä¿Él éßÙõVЗËüLá^X~Â)Á†¸^Ì^cšQu.Qäí\nÁs«ÏœC‘gañqE|¹ˆp(>ÎÞÎäÃdxgÅÇÉ Œ —VážU|œõ’Ìp=Áñ–•}|u@Ýs^6ì=Ð6Î=¶xTÁŸÁè÷Øõö—êeîÚÏ‹5^^ÇÇWnyß××åãL0Þœ×KÅ󙨙º"Ëu3ê9ÎÑŽ¦Œ•âÍøúào]#wÿïÇY3˜öpYÅÇ Ü3õÎåJ¬ñÄ‚\ÊÖÐ2ˆ=8N "p]£÷ªåæX±CÉr p¹vlá8 vL õðvlá8žX »v>ÎŽ-g_èS{Oþ¿ØÓ¯<×Z?xOŸ3VN,j¸&-ºkòíX­Xù|üƒÝ1|Ï·®y¸c/-íL¸Q¨y¸cϼåqŒþ"½-î¿ùë+v}ê©÷µμ%·0µ÷Êû{æmA_PÚ;LÁØÒS  M¸àYkÕ¼Et¾ÓcƒŽ±5o¨ífù‰,ˆÕ³DLMß™¶ØAbj„±gÞÆ_®ÈãÖq齆,äg¥£@ßûJïÕc ç;÷ýw•Þkö!}øYÝÇ&Õc sÿphtþÐŽ}ù¦„:{]¢4c«OÁçG“Ï;§"=Å‹+÷ÑkKicxnéOò@Ü)³õ~TIú…Bì>Üp¼—ÿ&øÛìïîc¯Noø.m7xgÕ_2§ vž;ôÖ­Ò/y¥59L]Çž¼Ä-üËóaÃÕWVEîNDÏwsñ/&rÒ·¦g\}¯º>¸ÈrïÉ'÷ åëÞûÄ—.6wÕc3O륷 àJh†ñ–žBô|'[—ö{Ö*?áýâà-ûZØñ‹U~™‘Â\¤ÒDÿ&ËOx¿^…ýwþý>¿äúˆ-‚çʲŽù¬òféúÕË r£ò¦5‘s%Âð­—Ÿp†q ªŸ±…¿I0ŽA¹çöëòq–#V—J­0…¿…!ŸLÄàýjáojKñ=ØêcÐÂßÈ»Z0=÷î„ÎÛ¤Žû/-üÍâo;¡è½·K eŒý+Kߨª—ÐúÄR×~L ჿ¥Ij¥ôk,µ[ßY+ðÛJÇpÙç¹#ÞY”~”ás“À×ç¢úKX>ãMì³?×®t¯?8$àÒËÖõQ@͸¢ðÜš7/@b‹oʽÁPƒ3 ø8NÞ—ÿy ÝØ£Ï¥CSóõ¨eÇŠ]û2†~eÇר%š—ƒ ã=uå9i}xuÑûÌ—ÕÛ¯ùƒÕ…9Ä>ΰ^È;íóV|œ>WóWÒïÆ>ÎΣ>¸žrÇý—Ÿº2ñ'6+Ð}Ž] ¿ úàzÜ{%–ŽÓÉn…î8'ÒHT«3†¸õðq⟠¨}û¹ÖÃljlÀê^z÷GD,ªR·¥ËØyb™z~–WfÀ:Vñqèh%VÇwÈËÇ]3#å+q¼Goľ+SÅç?ªŠõÜ(éh€©­(=¼a­?ê÷cÞ=DÐ'~Ò€{aÖKQ¨á h‰gÿF=× <®—v½Ì<Ûë·uýõGB0*5oîØ÷*KbkÞ;xQ“ý…²^’ö2{,È!¶|ûÓæhC–±rÖÅ<+ÒSˆ!ö¬7ùú0 œ–†.ÍO,Þ|*½×WfúS‹^_§qx‹{³ýjÎ^ƒ¦yx‹C?>Wi‰ÑÇ0n(­V'ÓÄž>‘ñág®Aœ¿ì…ŸÃåjéhÆž°Û'“è=D4ÏzÛwlÄÉœ( Vë[gú`_8ÓêÛi¢8‡úC¿ÍîÔŽO­ØbKrÒ£ÚÿŸ>oÅÇ 1ôÌŠõØÛ$ˆ“eÃ챫êF ]š¹÷¼šÖáå¯õñÌ6]/—Gš ®Gâ£ÏÅS/ñäë}ž»oâðÛN>©J›~Í}Þ–•ns÷”àÂ1øícÂXé²a[ü·ü2 –€ßBtùoŒœ¶½{÷\ƒÊOXP#,÷ê®·c‹ÿ潦ððáÞBå'ìs!÷LA§lÇraÍŠœ6ÒïNTú%CzOïC›°6K¿dvÛ‰¥Õ¿³Ò/Ùû¥øç¹ýŽC¥_’é}Æ+ðÛ “Æ×{€yãë#öÁ %¨çÊÄÕ÷ßy›[øÛtÄêD WøâoæŸïlvÜ”ª^’¿¿‡A°.ª^²ï$ˆ±²ÍŽQÕK²ˆÏM_eˆ=õ’Ôš‚\cßÞ:§ª^¢s"¦¶·Œ^7¢ª—x#<ŸôГŒÒX2¬¯ï$¾_©:uO€Çú^©ø8ûÎëþÁ!áýgïµ¼0Ø` ¥c¸ 1ìä¼ö}§ø8´ú-†:ì“×gòɆ‡ØÒ1ürÚœ&Ž×/ïk ^ˆõ(*œFC¾ž3|¿Õ_²¯8ˆ_èÞ•?ŽƒVÏÃG‡ž^*ß·äë±À>Yþ8ÑÄc1yÉËDZ®gð܃ YÈÃN)™>ÇzñBÍΠ籎ã݇Òt%vìÁò‚X]D×øØ±Q:Ó°ÿfk4>×Fá-½nŸzæý“d…ã8uÜ_Ÿ^*ˆ-'TÀ÷lêRˆ¥‹%9ÜEÖ€»Yù®sçr=ÛËÂßvæHqÍód¸_˜VìÀ;Ùâ…c°ÂÔBASòµ`¾w=²3oy@¡&_(Ì›U+:¶øø¬~—&UÏ1úG ›—žÂ_ßë½w3ÞçÉϼí«H×ý’o+Õ_ì™·è$à©u9ÿŒ=óÆ+z¬aËjÆÖ¼ù€“)rHÉõ΃¦-Áwf…CâYãO7¿Ö¦×zÛß$òÉ Ï/Þ"›ƒÎÞ>zï8EáÝèU´¿ê{IÞ=LJ÷Õå 2vgðã]µc…çž}ÒEŸµ?_¸ãTI¶G¡.àÄûEõ—¨:#— ôÌw¬–/bˆ &ßêý“Tý%û~±à¹ñ‚Ío¬_M_\CÀOFÕ_’æ2€I$úÖÎX®þ’éŽøPR£f­û[O//iõØê RAí—gô>¥?I:ùƒŒW^^â-¢=WæQø[Ž7ÿyôØÂßRäbmà{(ü1›Ÿwvòɬ÷Á¼¥TUÿmóâoìð¬OeÆþ¶ ß™OÈ5¸ü„÷ɲKò½{-ü›Qö+º` |5>ÞÃ^ð½ϳøo¯£É_¬ŽÃóòß>úˆþ~Oolõ+;ðšŸX†çÿ-MV?c0xnáocÑç·MøÎVõ½êâùygýnÊëÜ»yÑ繯/Ç[>buåõ\¯ûû]å#Æ]sàùv ™WùˆMÆçîæc‹\õ’·¥áÚ)WçYò:~2AK19üÞïüÔKôߢÏUаڱ·Ÿ«ûÂ<¸iÀº(ýãF&ÁwFãú( VǯØÔ[þoΈ¿¥íz¿¥÷zÙ/ö•¹Ñèw.>Ϋ[ð›Ì3ˆ=x€ð‡öRI\=:†1?\Ä4á=C…ï7å2á=]5_/¨X ;Ãtx6ƒ?šÜ{Y™¢4î>Z ;kì:Düðq,ׯ*x‹îØÃ£8o Ž}qñq~„¥þ°:è¡g>x€Ë«“5` …ãËÇ/Ô:¿¹pœgVærÔû˜/ŽÃ˜µàÜäƒãL…s>þ-ƒ|ùà8Ù@9íO¬[þob½.%b98NöéF5@û|LJ&9èUÄœŒåà8Ù¿°[Ÿ1ü^Å÷ŸþÀ’XÊê%¸üÍÛ\8Þ3o VyÇéK;cϼíÉáÎkÝž/c­b?µÁA ó&^þYÐ_éô÷±D½3à–pâ8ýÞÂ:*–zYu( «øö¶ßoé— ûðßÏÅ=ªôKö=y‹éÝ cðÒ‰Ãüm w‘(ÿî½¹.|gÔçBFñß ¸%9ÚûÄdÌÂÔºÆþ3Ç"[:<‘¹ßØ‚X*/õñ‰¥Ñ¿©zÉ Ó‰ßºMˆ-½ ND=k(b˯ƒÛ!yÖ¦uî¯T½$¡bÔk³Õ÷3©zIÊÎ nºŽ¡tž†(Ì[ž,ý¹å3xL={__óRú%“&êËñŸöÂ]Wï ¿3rí½¬Rþ8;\ÈõœÝ+cÇrõñ;òyó,ßVüî¹çsfÃJÇ qȽûöýWÊg?#0ŸœÒñ!)_¯¸+@ø[¼ŽÑ=›Ž1ü¶òÇ Wô£ÊΛþ=gèGòÃí“Û_B„ú“b æøòqÆÀ Ù Î%ÅÇI1#ÄêÌ1¶ð€T:B¬j R|2àl?¾røÎ¬0 ž0†ÔÈíßzñqØ;_äÿ=w‘U8΢®÷êäg¥‹ãhÇc-ù›b Ç饧·q¡3oâŒú“:… –®?o_ —ƒ>ŒÐ™·½I.À¾df§öÅ1÷nÙ±Zãíµ×¼·èDJù ëð8Îí†ù‰=ó{¿GŸ«X¨Ð™·½„ÄÃ߯gÞÜû•wS}OáÒSÀúoÒJqÞøÌ›îÇš^ftg¤ü„s½ðÔŒð¹gÞögÖ±ÿw>~bkÞÂQÏ‘ÁK}ÇžyÛ—ô£ýÊœ±×ÚúˆÙè÷ a¿k½ öœÏ¾Gñ™·}ÿFîu#‘â-Z+–ÖTï9óF¯ŠÏG ò(‘»×GûQƒº&‰^Hó£y8ú}HÊ'5¥'b_ÎÍ«÷J ¶½Ž ž[º¡âo%…^*©þ’Ô&¶¯¾¼3/½žs=ü,Á1¿›'ê#îÓ¸s®¤úKxj¸¦½CÏûª¿„²*‹xV÷'Û±åoê>ŽÒì< ©þ’ý‚Ì£ý3Q.¾ÿDü¼{ïXù¿õ23§—hùù˜0Þ@ìV´ú¹˜§–t½þýª—çîÂzßHcÚ[þo½qõ‰Õë;rý„_·Í?=]‚:XÝ|¹v¬‚>Œg¿3š¨Ó»Æpð7Õ^7ú_Òý0'(>Žô²'–Alñߤï=±ûk€1Ôýmô;dÆ hqHé— ð&b?Ï-ü-@'ò‘çÀ¹(üžY‰Åôu\õ’}ÍÿŒa9ܼð7òüîÔ íߎ_üÍp.¦ó„ØÂßȾ³Ât¼[žzI¤¿©¶ÛœÖû¹Äþ¶·TôVÊ]ž{ð·ú}ÙÖ9{­Bª¿D¿Z•;…ÁßvyÂŒX]$HÙcϽÛÁ·äÙ¨cRõ1B<+Qé>†Ò{ucÄÉ’–±ÇGì¥èþŪ€&ª<|œ¼T}ÞÃ^^7•òÇ!6ÄÉ8 WX>N;âiïáèOî=ùz4?ãµòÚšþá ºÃJÇpNœ·¹@§LâÔ•÷þþÑ#Ms—ßX}ø8;Á²õÁ_MÕ7¶ø8´ÏòWïí]Åóáw=G×Q<ª ô³”žæfìÁ–òýAJ)c¥ð!èSHX´˜u<`ßœ>ÚÜS{“Žª+ë‡ïŸ¾´ð܃ãppßc§ðà ãà8;gž+¿”â7vg§LrpYp¿Ð9+¶5N=ò r{«¼ø´õ§>XÝÄ1”oŸEÏ k&Ù7å~5/ÆX©Øýr„ã-¾)èJdûòß´ô^÷×€:9*ݧ-= ë·9Ö˜Bcϼí“ab©AÏ©®š·÷FþÇiCO]wÞt€—z Ã:ó–jüèç±¥cÈÒû^Ó¾“Äžy“Ñó¨Gûr#]…› x.ÌGgöØZo¸éMö\—Õ:î}™‡ëmÞýÇ!ýóoY Ï=ó¶÷Zì‹ßÓÞµ ”Š·8{ÇÓÅ©?—jŸ\¤ès5ü6:ç‘èGó4Í´úK¨ì‡÷º(JÅÅQè9—Òáw“LÄqà š±ZZÁC?œ+îõu­þ’)FöÙ{Ք޾r„|ñ¬î5»cϼùWÏQ™a_çÃïö.F{êàл¨O½äÁ¾>±1`.ÊO8dàx÷uÞYñq–|æ8&èƒëõÇéÆœÇrÚa½U½$M¢@÷vOÛ‚çž|òmÑú‰õ{ô̵R>ש¶–ŸðÎð:§-ïNP×òž²úzË|z¾£ròÉÒ÷’Ç& ~›Ô=€G÷èIþ1Ü¥UVÝ/ºßøñí}b*åÿ†8=¶i=7’ëÿÖ{3v‚n¾–~ÉXŸ3kôþ(½ú%¼Œ%ñþ–p; Þoñߺxã/3Œ7^Ï|îï@ÕÂßĹàûfÛ×…Ö½{Lœ7ˆ½ø›L|.yïP-ümRøÜ=ZZõZ†s1mÂÚ¬zI¾3ø~'Í®Y¯·^Ò_ÐYo çPÕK²ë ~Û Ð9Õª—d«⛨Ǥz}V@_î‘ñ옖~ÉLñM¨ÙhùãdÞ¦|¾÷ŒhùãP7ÿ;V~Üû@ôúãà¼å]úû´üqz±î$~ëåc_¼›ü[´üq|š`ìX°O–?NŠS|tYAÃJ‹³?õ¿p øvŠ3çGÃ5™¸ý'{Q zÒÕ/êƒë¥*EÅÇI=\Ä'ðÑõö—ðŠoð´ø8‰û#8 Y‹#ˆ“±;ä\ÅÇÙ¹æöd g÷­—ËG[p=->Ž1£&ê$ð³Ôâã˜ÿ-G<³Š“8ºö|]°-><>íÙ xTgÞ"Ã~g`Ä 5μeÿ`uÜé÷Ë5†a€¿9ê#jT^2ùowœÐz.ò,—áo³Êw/|0*¸ëÅÑyZÞeމâxÏJ6v}05ëãµ§¿$/ÎÒ9 ïÀØyu:×(á»Àç=ó¹?3ä©a¿§£§0!H=G…wfãôsí{ úÕí³¥ëUØÓ_¢ÿ†çj¢§š7¦l¯šϲQó6§cÍfqÇÔlœõ–ˆ}1 Œ·ÖÛ¬%ÛÎ+½×}ÎY`í rD+½×½0‘¯—6¯Úc‹·è†zxiÏÏ-¾éÞÐЈϲÒ{%!䥜)÷X).í'ãx¡•Þë藵Óf«þ’4rF=Ï»ý% Ú¥ÙC$½§Áª¿ÄRí 0*Ã箫¯Ü÷³§m½n¥_Âb8Þ…9^•—¤âNøÎVñòü¾2ïÍN[\þ±Ý¯ùÁ|o±òŽÑŒ‰žØí+?aF-[RÀ‡¬ü„÷ŠÏå%8†Âßà|{Úq»µâãì=•` ‚u{+?áä>À;KÕòþ~©î½‰í©#Ž¹à¹¥?ü©9.è]4*üm>"e>ÉðÜâ¿)p^³-t¬ôKV€hÊŽ‚^…]ý’ň;í«×*ŒŠÿ&€ófììý\F^> ÇÀ°.èÜ»¡Ù÷ü6Ðu7®¾W=RÊ’eÏ•gajaøÎ¦,xî¹wÏ?m¡÷{pÐB²§^’ N‚8™°ÀwÆÇ¯c€&TÆvH9cÏùÆòÁÔµ8¬ü„½“åŸõ¶/Z0†Ë7õOl—`ÉØëÛ×õ®rÍÛÄ÷å© ØWÞcñ<.>ÎKqüÁ!?gìÃÇIò®à×È>NúbIi±TÞ?LÍ•ûÇ>Ž&±ES‡ïAŽŽ¡ núpM´8ª~!Œ÷ès¹NþpeÁJ/ºïÃÓ3B½ÑŠ“^ߊºÂЃaúò¨Îùô—îï¬ø8;WÀ¼$\'Ä<€m1bu:{o’G„z}öÚ¹0V|¥‰8™êš:V|ƒÈÎ ÞÃÁ’4…ú{Öû¼Ç»ÐÍyåÐóozæÍñì~tö`mê™·¤´V7îdfgÞb¿hÀßLK2;ëm RðUÚMÆ?ª±€§–mP ubvðî½hößÚãŽÞÎVð=xÆJÅB^nE 3bÅÇ]·äÓžkõ\]Ÿ~pÃX¯ßÆ8mƒÁÐ,ê‰òÿH{ô^C)CL-îo~ÖÛÎÞý´p€÷„ùªoøñ\ƒ!–î7‰Z=“ö3/ž0uü¸ìQûzóZo¾ëIe„^lóZosâd‚ù¯nJ1'ó€3ÖÏzè’ZµGÙ'“ÑkæVz¯ä†šqÃ@_ÎâòrVfä¿¥÷:c*ò&ø©Y齎}>amÆ€ñÝÐsâYŒw†8~‹Òž%°G=ý%– ò³vÒ5_¬úK&h?Rï MhOI1ñ¬}â¼³xr¡žïd½ú¯_ùÄú8ëmv`ùðXAÅGù-Êìø[–òµ×½ê%k)Æ.äãø8÷€›2ýŒVô5äÅÇ ÄÔ(@'LJ\Ï]|îN1ûò§^¢©s+<Ǽü„‡Û'Và.íO½dçʼ>±ºØ> [à1µóuòž#ú,üͺ®Ï±Vè}6>o^0`IÑû‚|–þäˆuXšöØÂßt.x®a½ÄËO8;±«Ûi4|g¥_’ÚÆø\ß3Ÿ¯ÿÛ7VÞ™•†Š›b,ì}>‹ÿfÀwÊñŽ^«ðÿ¹Æ§øÜŽ'ÒKïuÿW:í¥óÆß”{ÿÎ3ÇÚq2_[$ñ7–¹çž¾¨îC ñ·¼]÷orÕz›â€-¦?o¿U/Q…óâùçÆ ÕÛlø~Y'|;U/‰ýÓàýòXø~Okä±ûˆcˆ‹“ |;Y?í¿­üqPŸ ÷¾°±§Î%]â´;¬ãòÇÙÙ¯1b‹¸§–?ÎÎ{0? Ž~çõòÇ Ð«8ý½¾ãÅÇ‹‘K»³gØ‹³w(Ä!UÁ¿Û‹“QÌ'ú'½ø8$ãÃìwS§Ëë0Ô²Ý+¨÷zñqD9º)wÜŸ[|œlRA\o8œ›ÅDZtЄÜÈηâã¤lêp¢çÇ]W—{*Ä޳ÜG[3p¼ç|©L‰<7xgG/hïf,¨§ ÏõÂ:ÏʾÌÑóçƒãì\¹}™äö1Há8ûÁÖóuÀ£r)G€_¸S• ÷—u±¤ ÷ B x—ƒãpw*Ítˆ=8ÎNAÖ<3è9ºœ:ŇK;<Ú]μ‘~ðÍAÀÏr)'c¼ó¾NË÷^èR>+²øYÉ­†çžyKT$° Þ®£ž;{}2eRÁGÁµú¹ÈÑGÁ|àsϼe{Èì˜OÃØ3oꀷ¤w6¾3=ó¦d x€ÙÕÙ×±žyÓ9±¯˜Öê÷!×Ê'}ú ú \ϼíœbÍf?ÖˇÄê.ªÁ9¯…›†ÔvV ù¯Z›k ‡×Òm Þ©™ ýà^z¯aÀÉÌÞÅÙ{-½ô^³| c ŸðJïU½÷R=ü…¹(½×·\òƒ}©DßwJï•÷eZŸõyné½pw²ejàûõë3ˆÕ˜‚ï·|2t©žZ1ä\^ünЬø8Ñ{ÕÜgùrˆ ¶í¥_’ò%€¡¤¢_¯ß¾ &_¸S¯½ºsáz†ü¬üÒû;s)¼@'àßí~ð€¤Oî´/dk”Ÿp„0޽ļßÒ3W7ˆ ­J/?aFž=ôûþ­—Ÿ0MAÏ›A9bù OðkÎXÃï7J‡^>^:;ûèõu*-Žaà©9IážÅsè•Èöa¬”~ À³8·—ÎMõ«_2A4á\èSðÒ/ÈcÍØw†¸ú“ÜtóŸ1€Ç‰Gáo¹cÏbþf"Pÿ,=ÿQø[¬…ÏÑ×|ŒÂß^Cµ¿9vàYÆ8ø®›ô¿Öˆ=~²zŸyÆ"FU/1Ð¥Êï—+å'<–cì^2¿­ú^pÚR3¼Ecx›1µRô;YŒ¸øƪ5Ú³ñí?§1Â[Üßhï·‡“êŸØgw<|IÀXãáãXêº/Ä! Œ‹#¦ø~³%ž{|‚Ÿ»w¾~^DñqfH~Î,o(>NŠ8j­‚çB‡L‘7nIjì±UWž Àòãòq¡¦ï>¢á;+>Î]ÞM§Áú¾ÅÇñá¨W<´a£ø8û; xƒ©ãóQ|œ½#b~¶·/øvVá8FÈáßi.¬·upœ}2|t¼Ãð'QœÁ›1ÖÁq2D½LÿŒ÷à8Äüñ^ ItÖÅrÀêTA/>¨ðnš]+Â2ÂØƒ¿ewÔ¬NA1ˆÊ¿°ë.þ/e€Ûtð7î‹ëYC 0À(½×ä‚ã=@àÞtæMæúÖ˜Àg;È깟zÉŠÏõŠ„õ>ÿ ¨÷|§,·Äò™·ôS ð}Xà§\ó¶<Ð'>Æ®ú†¡ÿQÏ=ƒ©¾3è«Öë´ÁgÞr¾b Xó|æ-MÍP³h:œ±\ëM»vôÃ=ƒHpᦚq‰©ä\¸)Öi³n4z-3JïuïêØgî½/ª¿Ä×G‹.ûÂúsKïÕÖ@žyIé½*hP)çžOFé½î5„zWêcKïÕkm> N¥÷š¢2دL În¹çÔ¶SÆb«¿$±™=íð=ý%ée¦ˆ©e'¼³xÎù¡àIHO¯{ÕÃ{=0*[Ç =yÉÍÖ±$åžW‡žõ&Kñ¹)™Ñ߯}åôbuF #zõ'c÷¼)Œ¡t0@£Q~T,b¨‰ê žW3Ïc›Ô°ñü9§¦kãã“éÒîûÿ.•1z(²4úQƮ¨–¸}m flñq´5ÚniSPXÒTúhÀ·s(©…ù|4ÊjŽ;öàw¾¢oìÁ´ùž¶÷Ö¹c Ç€©yb€±Tøì} •ôû[b …;)žYûfÊ{æÍôÓ²FןL¬±Æ0å.õ“±V8Ù@Ž ~×Û±'/ÉÅuð—Á÷÷Ü£gž«}8mðΞþK,´û_ä+ïw²;Oìí¼ær÷©ÈRã›Æ¨—™¨ö=<ý%–yö /ðnݱ§>9t~|Ï‚a¯3o{oÅþê=ëÜ¿Éuæ-e7_Èö¨òÇI~6ömÏe}]¬ÂM™Ëµ3bX묷lãpÔGœÑ×RŸð~«®lòñ¨½—ŠXÝÞú¸?×°Wj‹u^ÇŽ-<`:4O]}OõÂqÖðÜô„è߃sá- +‘ùY¯mïØƒì_6ù“÷ÁwæPôy=}™}múÁLÉ óÔ©{Ö›Ó4xîž6øvüà8y¹œ^Ýèï,μE'³›,Ò¾6ãÌ[ìot-—ÜâðMÇ]w}¤h –Nìêug?3¸;•Þk’û!¯%|îñ£Úgm€ÞkwðÞ³B+–Q›0uòá¹Vc0ìÍŸÊp'‹ãG•¬Þ1µ½} Ä>N<2pÚºï³úŸfÐq…{á5o õÉÇþ°q‚vìªo|‚²,=û÷0ÇYoΠ%“eiíëb޳ÞöúVÀõ’x)=ö¬7ë$ƒ§^2¢õúdàYo«kE<8™Cá¦óiøþ37ò[u.gÄ¥3ìëøúã°ä\‘Âî=¶t ‡!V—¦=0^¾ag‹7 TÆVßëˆoQ;wrÇžú¤Ë è/IÔbKW-ÆGË6º¿^rÙ‹Gõ雂y”\=ÅÇaŸèQyO€ŸØUûºs ·{Íf¾|G^>Üýçí/ñ^æZç[ñq¼Z•|BŽX|œ`E½½NƒLb:jUÚT‚çgßgrÚÿÀ÷ Ç™˜{zÕ¿u;8N*òWng½¶2­pœ<áø÷Ò»ß;ƒ'…ãá~1Eb©p§Îóyà„ ÷ãÒ¯îÚ7O®Ñ9WÙåybçDŸLñîO–ÈjÅrç˜?Q¿ëM³ûÜ÷c\oÚ™·Ç/¼oòg gÞRýla‘á=ø™7ÔÖLü-:ÿ-U«ŸX·þMît4º xÆžysè#–?µ~æÍŒQK1ëOý[÷3o©3‚˜Ú$¸“•Ÿ°ÒÇ_/[à` gÞDŒ>˜Z³KÈØ3oi õkéûºW?— ìÏ:'ü¶ÂMUT?1íë8j½½ s±,$öØy½ÆÇ—‹áþgŸŒn8wÊ î-A—Ž6!+ÄoquÏݬ#ú‚36JWm_û?ª¼Úçu¡Îž9bXõUÌ<5—®ƒ¼cËo1x63Æ„}²úKt0N]¹çà«úK”I;X½œ•±³¸}=—ËzÔ€ÜsÊKŒÖ|êÿR¥Êwú8î/¯× Ö8xÀGï*ñ–µ` 'ŸTW|gîP³YÅÇÙW‚ßÞûw¬•7yt\$kWÜ×Å^wðä_Bù0†¨\™Ñ£r¥¨s‹ç <þä9núûçðòßÿb³u¼až{ÀνÆKÐû•šû«ëâ˜ËSûýxM~{ A+8eµ!V®v¿Àx÷™ký›¼ú%D ÞC^ áÿmŒÎ/|bñ=þÖÅúÎwZ³ð7Rÿü6éks­s說ÈïÞÛY¯¬Uø›©ÎÃÖÁߨ£ëJj:8<÷쓯Íö_lò@û_½WäÊå7éýÜ\KÞYˆ½h÷Oì©+_÷îSËm`Ä^^G×ʵ™ž†=öè<éÄÉb,|qüÉtàsÓ²ÇÒ©s©>w'[þ8Úï8O9K`/¡U½ù]¿äÁòW¯÷-*~âǹng-CÈÁ®gïÍÏVçSËŒò.-ܳúd¢þ{0ºn莵ªÓö{aN;u-¤[<ªÞpôtÖñåã¬!¨ÿ»ÏÂþÛŠ#:7¾–Á¾S| úøorÀ~V|œ}ÍBé}êµÌU|œ}WCSõÑ<-vìÅqÀÇ1éGÑ{gÊDϱä’@ìYoûÎë¨OP‡Y|pœ½= ¦º‡öúÎâƒãðtFí…À}’ŽÃè}™~ÐKµ>=zbÿ&ï«ÏÅÃÇ¡WƳ»ÑŽ=ø›R(ܸÛ8eìÁßT{ÂðNbϼío±º}@;Äžy³Á¨m p½%µOî?‡ý¿x[bõ\Cm!îíë5^ð ÚûÙbümgÞÔd‚炃ïzºlœX_£}'³ïAï¼ÙBžÚ$XCºê{ýø©u?ì{æMÆBNÛ^±gÞvúëŠ}Å0†3oYlÔs4XÇZëÍ>>+óõ)|cϼí%$P³!]½gdiᦾ‚°nÆ…Kb“½Ñ÷j;ûä¾x£6ÜWé½ÚòO­mAÑ*½×ê"îD½])c«OAõûö  ?+½×lZC 6ž½o•Þëdøv²îI½·nUIüiþð:ž[:½{û…úï^óý¾¹ª¿${Yù8cAlñ»ÿ8ño Ú¡‡~yé+ûtx®Léµ¶Uz¯é ±J8Þ§¿ÄÝÄ’:ü‘±ôäQÓ 6Gx.?ùÙ‹ÿþÅ&‹¥Õ_cô禒Àš÷£‹=ºQʱƒoPjÆž>GùÜJ¿dO’ÃoÛWØKJ¿$õZ'ÆN¨?DñßB Ç+£÷®(ümu½«ŒíRJÿÍ„¦4%»ÇIÆêëFáoÝhí”P¬×whþ½F𱫵\gìÁßl¿4x.Y÷˜Ú±\½ÂÝ›&c_Q¾7¶ô‚X¾‡î*<÷ÔK¨O+· ü6+L ú‚ž’O¯9RÕKÌC^²·—Ï=ø[6!Æ«ßE¨üqö5ßÜ«­ÿ¶òÇÙ‡/r'Õ oÊG8÷_Y·¸c©4¡·ƒà>óúQù‡o³çFT|œ>Åw²{·îX-ì‹1vŸòã-U7†{ÎÍ?‹‰[} "룑K}_§YzxcàÙ-4`ÞÖ(nI÷zäWs§uð·0ðò}¬¥¯Íâãì ÷å€ SñqÖì:Ï–Ñ="vlá8k¢7˜’÷»­ƒ0h=ùºõ½VáS rû%¸6×Át|ð¡ç­ƒ¼>`?¸žt¿Å{ð€=4Ôuß§9ì}TçÛÌ×™i@lá8Òµožc °P¢ÂqÂÑ_o¬îƒ·cϼM®Ü$àryÛסÞÏ¥ÙÇä{æ-K™À» ÅO¬V¬£Ç›%üÅZÅBï-ÿ6ú]žþOAgÔ#…žH¢Ódé¸Òï±;¹ë˜%=ý%þè‚îÌRÀßèé/ñL¸'ú©õÒxÆžú¤8 ˆÝ·ÍžŸÑÓ_â™Àb_ñþÎ:—‹Ê‡©-˜ÒáìµWâÓÏ•~Š8™w¬Žžþ’là¾S¶3Â}“ÊOx_ëÖ§oò(b/?Ÿ‰Úìð 7]¿äi…]½B2.f‰±k1œÇ2 ‡¤‰¼¯czìYoÙ^‚ÞJÈg ¡Úû„ ß>gÆÀ…B&{\šµBÆoÑA‡óiÿ³»ô^÷¾ã›5s¯•)pÄòìî|ÿëÅäÇf-ÈoÉâøâN°OVÉèD’§NLý›Ô“—ì+Ãüb¾pÆjå%±b>kÄ–oߟgÓ‹Id3J-^~7‘{$XÏ!•êyZÏÝYœCzòIµîqò¿GöyÁN>ÉõõL—Ìá·•žy"ª0Þò&êãÕÔŠè¼/²Â߬û§-È ìÜxuN|ƾMéoláoºìÕë5Óyc ƒ<*c•{_&Yáoõê¬e†ÀŠÿfÂÈQ€ÏÓÕ/™Ó c»?ÃŽµÛùìûܾ¯›_ó9>ã…ulQ÷ùåãózMŒ¼ú^µç»¼× ÉÏù"jgÞÖfù ³€?Ù‘ö†Ø;o€géÁêþ> ùý:ð’¨ê%ËA½ÆOO½$Áxð{Öœ~|V‚ÀO-×±Á9ôðqâñ¦X ¼ã”?ΔÄX öõÇ‚½/åôúo+œd\.ý=/Ê'Ëg‚zÛyIÐõaž†ì0„ØÒU[ŠZ«öÿ¾±rñ¬‰çQdz(Š×1q½ý?ÁÝ)ŠGåÂðܼÊ@ìÁßvÚöÉ=Þy‹3g`ŸÍ>z­‚Ǩ:ø‡¯§‹{¿ƒì}2ä 5…è@½ÁÔ €XºØ âo;¥è߃8r¶“Ž÷cˆ¥ú²×—÷سÞ-Ì=“—6{¬ýÔÕù-Ô¥,xîÁ»w΄¼:§®9»cß47ÐõÑÀìß?|œ¬ï,cÔhì~€;öèªí÷Œ^ÔshÏ5x®â¼®®ºÓ}ÓŽ}ñÃÇɆnè¥ÊRè—ð+¡b{潑…N›Y×ìÌ4û?ÕÐk Yžïþo‰ìŸØÉèi1okÒ;ëÌÛÎÓПŒºýlÆžyK’5Üc•Bá¹gÞ7MÞÉÆžy›@;”ú…ã=ó6Ôâdú%\ý%¡½ßè) wŸ•{ð·ÔŠb¬ïLØÏÖÁߌ ëQ£S'2¶pÓᨶO…ÞóÏtöI†üÁ¾¢ë0}2›&Ðç tÕò qöjuBì+Êo:y(ÃÏÀ¥÷šš/PËL·þí”Þ« ÉÀÞf8c¹ô^÷-¹{'y«þ’4BÆúï`|¿~µ‚Œ!T`Ž)Ѝuðtxï±\úÊÒ5u92îýr̳úwT;àõTæê š¤ëƒIŒáèOºt„¢úö±|¼f‰wÚÓßÃÓ_"Ï·±®¸æKïÕ:Ñ÷)a+÷»)WÉÝ–_¬.åpànÊì…õÜóXæ(¼‡ƒ(ó'6´ç¿\õ’©À[Lé2éw~ê%É\K=ÅÌØÂßÀŸ!cò_–Âßœ ùýꕱ¥?Ù‹§ÇÏØÒ/cÄr/%elõOî«clÀº+MÉèøPÆN¯—7‚|‚œ:&Árî݃„¡öJ¢½&ÆzîÝ)ã}6þbgéÙ§â±øé5hÖsï¶€~”ÜèÚÆ;öèåö ó6;…/cOÿdQ±®lÀß䪗H78mßÐóÏU/1è ýç®Ï=<ª1Aì¾™2¼_/>`¬ ÎX-1ŒÕrZ«>óè:eùÏ»õ`ÆÎûB½í^fÈØÃ˜Ð‡÷àÀ­f»~TÔó³|5Ð3ÍÆå£0¿Ò€óÍJo.E¼0¨÷J°U}2 {0òOÁx‹GeŒØâÛ!þ[zx <ŸL­0/)>ξ“Ð'O¥^ßáâãà=+—Š Cì©+ÛPúx‚_>Î>˜«£×Ôø-ǺÏöcéâ½æÈ~ð€Ñ“¼§Ü2¡÷‹ýàûˆ¹§‚ÂŽ=x@ŠoAìþ|;FÅ~ð€½1;j‰ßÏá/öà™äMÔ¬gƒç¿[ÖKÚÇ[Q8΄þ¨}×[P7â(gçx¨ññ¹ÇÁqöl¢ó`Ìíãà8©õÇ{Æwâ8ó¶·³Ï^2iAìåå;öh f¸gÅ™·ô|„½Ï¨{}ïX«çê#îå ÷Â8¾´ÙÆAˆu|b£ò‡VxZÏ#úRžþ’þ½Áȃ ±'/ÑTl€Yò^3—§¿$ÒuMä©A.åÃaè•a=Þòô—DÞ7öOƒßþ¦|2yúK"ó_œL§ôsSžþ’ÈFæ…>+=÷”qÖÛ>`çD-Åxg½9-AŽXt-æì¶*Ü´÷O>­°¬{Ö[ÚÛЧ‡ÞÃ\…YÖåöiÓ÷>™g½¥þ$ÖÅ{­MfáÝ¡æ¨õGÍß)í´ ËѼg xg³úâÛÙ/\` vµå?¦ùyg^ùºÅ‡73z_TIðDÌg«÷ZJõ—äµð·½½ô¼Oª¿dçHbS„¶ÏÛºþÝ][(ñ€ úg²¨t›—Î<•zÞ'ëàoÖ¶2–÷Ÿ‚1^þ¾ŒAôåd•/­ÅbÜ£àì–Ò/‰ÑïóÙO0bÂsþ¦}pœ0Éa.JÏ|g%m¼öH~öo²ü„7Zë §+tî¯Î„Ÿ©ßß„ªOº®ÄŽM@®—¨¸rÞ¿_C:OÆri|€_ÒC'x‰CljlÁs¯~IïcÊØ5 ÞCéO¢·Ý kˆ¼<ÝÖw €g þ–&×øÛ¸×5„ À¥í‘cèß:Ÿ|R4s.à¾)¥÷úƒÞØd¾÷uÁ¥;#¢û2'þbKÇÿÖÚoì©O¾t± Û!O½$50Ù Öz¼…ÏŠ¡FãcѺà¹~Ç« µÝ ΋òÇÙçb¡¼ —òÇ1›<Ö ò™…“)îgs-˜7YUÃë܇gO58 …®6!ò,Í»ÏÊŽ-]5î}ƒi57Æ„Øê37q8/x8|¿ÅÇÙ'!Ža/7çž:B]á@ݹ|œÁŒz¯ØW!ÅÇÙ ö­8ä;ÅÇ Èij°üqf¿€äî³²c ˜ŠšÔY͂؋ã  PÂ`½éÁt~zˆ²– ¿í¬7“ùÙp¨ˆÇ ¾¤ðE¯ÓŠg_-PøÇòðqvrŒzæ{](<7N=ÕsÚ1FïO;¾FÙtç¨p?|œã£ ¸ð$ÄŽß"9Œ7ñ!¸KËÃÇÉtÀÉ<×P¿“ÉÃÇy JØë³bO]™ tdzÎð¹zb»õƒgðßäáãÈcÈŽØÌ‚{¡Ø™7ô)Î4ìvüýÅžyc‚Ú`^ býÌ[Þ%ÃÞqñš7î=p‡’ÑûVÄϼ¥]èBžÔíÅϼ­ÉµŠ¤@ÃsϼÍtûLm8äF~æmÐúêÎà]¯úK1ªL ¦ ~Ö[‚6óÃ'ƒ}Ç‹ßm´ wœÀçuÇFõ¸L1䈬ã(¼Ûu´²=ª?7faîÏûP'FçVKœ}roë xé¾ Ï=ø[*&ƒ&ŸÎxgq2´ó¸c€Rz¯l]ÿ÷áQMØJï5E, ñ,<7_½×¾Ž~ è)Hõ—8Ô@F¥0†(¯Yë-H'VKï5 P‹¿Þ?±¥:º¾òcÛ.[}AÈóI»šÑ¹r:¨ô=C±|ÐÔÑQ¾}¦˜76Ï¥Ç^~ €ã¤‹ˆõX}p=ØžRóÎC öì“CŒ!v§žc(^>Ž}Yþó~‡ÔòÇ™à=üÿž¼×´ôK5Fí±²îã-ŒcX¼§ÎEÝ´æ)3¼~o,Vç]K1å‘@+BçÁßöuHÁדô{ê<ü7_³×¶“ê1{ªÎÛ?Ýç*cASGK¿doµcXpgÐYøÛ䎡Xúî¼³ÂßÀ;û)ÍÀ½[Wù> éõêˠݯ«ð·ðŽ_är`ì¹w»ÞÃâÙÏ]›fûJ{ sQú%¬Ð§ÔЊÐ%Wϱï©y×ù¨zÉX ñÍô)îëbü-M;!6»•!ÖKw‘pßÙÜ‚¹¸:Oз’°Uôû–?ÎpþhÑ9`Zþ8Ù” {ÔJ0¼Ç^ÉûÙ°{uùãìEÁ˜sÙëˆZ|œ}@!oÑö+‡ßvê“ îoO¯áN}’£kf$¶H{Tñq^îͶþ;Ö‹—¼ºèö’…Q ¼0ÿTÿΊ“2ÞŽ:§Ð‡§ÅÇafüa~ÅÇÙgÁì–Z[8ŽΛ%5À µø8û§a~&cü¶ƒ úpðêª)<`o]Ž^|Nc8x@ÊÎ}t8mBìÁq’S,ÈÁ?åƒãì¬Z>>xùƒG¨ë”=z™ÀÔê/IOˆÍJ_rÎ7ÝÀõ’Ö›Çh>²Ï±DZìzïû¤òìw'•3o{›C¿P3Ð]T9óf{` Vˆµznzž;ðß´üqFPœ;v–àdZþ8Éë<¿ºb’0½¾´\»AŦdõú¤^ûÅN¬f#|];äœ|oìι:.¢J—£ ç$©Ø´™—€çrÕSg©ß½±;%„¼OO^2²aÓ[l,ꘚ^œ¥U­XJi‚÷`¥O°ÊääýÕ³ÞËGý(¦Þ‹¢å'ìxuüàþ}ÿµÂMA?ËN 4´ÕÎzcžúñ˜ŠÏ=ëm1hU¦. AndTûÙD½¶ýP¸3ØÙ'pôĨö7ÝçØÞ½S1LÍþüçolõ)ø¿%uvìVíàݹžÏ9ûYõ—¼ôÍŸZ±äFÕ_"Jõßd;õØê/Y;ñƒzµ›ÁùVý%c¨">d Q®^>™³÷ ?Ø ÔHÕ©¸}sÂs³~Ö¿IçÛoDðܼ÷ys¹|=\ÄDbO>™¾rð\ïésÆÚõÌëµ6Jî0Þƒ¿%c=v`Z~ÂÒEnrX›å'œGxÞdjÔÇçà+&ŒB`Ž£ð7¨ÏEsEáo<”€ÝjüͼÓ.×f”þ$wÝÇ×3àîTú%#Ä`¼"sV=œà½–ÏÍ8s¾ÑÎaŽe Üc#îà‚ï<lŒò •ŽQeÚ8ûÙb¥_r»Ä~bsƒ’{|ûˆ¥óÔž–)‡ØSçšÈ=ó¼û÷y³§^’˜ûbˆ³ûÚïX98Ž7 _ÖcÎS~ì~€6¬´uÎk$½çÔÆÁßb9bÍâPË´òÇYDÿf´agå#´pïKz7õØSçòE{I2Hû;›Å Ëš²ð ›dóÌùÂØjÂ{˜UŸdg½u=/±‡£iô³€{6ôŒŽ®šR÷ȽZ¡oЈKËv~t\Äʉ5û?4;bϼí9b·yí'Öê¹PGLxÔ1öÌÛ¾×÷ÞД0¶ ±¥Ó; 6˜ïLaâ3o"Žã•9¢ñ™7¦ö ø¼ŸyÛW¬ì¬oÂμ¥*z{L¨Ósùz‚¾ÑcëϼÍ1éã¯ØŒñÁMÓæõ£¥(½Éøà¾uÍöI>¸éN_éó^Ó5.ÜùäR¸é4Cì˸÷˜ÌÂ,Y±Ö&P{5Y…CŽ<ª…þ±&§O!!µ‰ÚyŽã-¾©¹Ãs÷ÖÙ1“Ó§=9ŠÚBÒse«þ’ì˄ج‰Áo+½WžBˆ;qÇ/¬úKغŸDÖ•ƒa¯®þ’5àûMêúզ巸xB¾žpolé+“ÔíWoµÈØò7åñÁ[Ôàýjñò©ß³ŽÄ œ›úúö)Äcj¦åK;±ƒ½MÂ÷ ZÚš†º·ûÛ_{ü„€¯·sZsCñ„…1vyï¡ôhÄ’o‰=õ’Ô'èyuî¿â׳âãèP‚Ø„nûx«^òJýĦK-üëðl…ïÌ óÞ“ž±˜YéOxA=8»K¿d½•˿ؽÀþ–²€Ï$³ƒ¿Å>Þ€³­¤ý¾i…©õšÍSž¯{éÎÈÀØ}a€{€ŸûÛÞ»bâëpøéŸüœY;v®Þ‡gN׿`Þ5ØÌË¿»›Ž>ßï‚zµU½$MQÑ[iÂݪ^’ÿ0Ö¼ú÷ï·ê%™þλWœ~tžRTöd©õuìQš‡ì°÷%…¯ŸYQ:†2ðÍÄWúÊghÜ¥¾‡(}® ßÎ#—ããҘ>‡8Þ«‡'ˆCŠBO™g͹[äѱ|+>˳L{ÈþígçºÈÞwÓ ï¡xëƒÕéÀü¬ø8Ií ¡F‚'&³f½/È‹#Ù¥„|ôÑï-^|œ}—ôÑmî}ƒ^|]­~|¹×w|°§ž~ð€#!ðÜÂÞ[ë« p=…¤Z£´XBo%…ðmJc÷ÿÝsp…ãä…ñ7öñê÷BUçR­é%ÜÔgá8;–Õb6€ÏÂq|ß8ð–çŽ#Ï-g' L-6ïý{¨þ’?øÛ,ümtüÍ«¿d_qÊ¥b³TZ•^ý%#nûû~m€O›O½±îÞbùWr=±5o!Õ¤õâ8ãÏûò>×ïÙ]$芕LG b£b¯½â‹¿©Cÿ¤—?NÂësuüMgß'½üqVº1ôØÔ·ïëm]^þ(Óûšx·¯ÊKRxn¶XYÔk+¾Î¼ÍðBmþ0µ —?ÎCU掩Ôâ}yÛ_ä_N;‹OØ­¯3oi(Õ°EN?ËÞ3âëÌÛ>[ª™õÍzŒáÌÛ\?ÆÞ³4ñ·•Ÿpª´ïa(hò9½¸i‘ÏÞØ¼òößV~ÂûžT­Áßösyù §¶¦¯† §<ÄÞ}RK8ô?–ÀñJá4ëžÑÏB§ƒwgú\Ͻ²;gЩú(»“Þ4ý;+½×ì*f¨øÒzõ—(ñˆ;|Õ_’%`TÑ{…½ø8ûYŠø~|ò’½CMÄ$D;þæL×w2°Ï\½÷÷9ü-lÀE9з—¿ï_}Þ"u{ï—sébwsºGÊn)Æž|2 äÖcs?€1œ~.vÐËOd1<÷ôs ôø‹Ç6¢Ïqù 'WzìžcxgOÉ£ÝÔµ*÷'ÍP'p9ø[Ötá¹Ñí–2öào‚>6;Ö¡¿ÏåèŽèÚ!yeÞ×ãŸm c¥¼âÀ/ôIkdI‹­û›Û2ŒÕøiËÈØÒŸô±ä[Ü{öI¶ž{>±\½òoìÍKü;ÞYÚZ7¶ô^•gç©E^{NëOIÞ7…0v Øôô+“v?‰œãwHWªZÛ'ÖôËùS/I¶+ÄîUùoÕKèÏðè~ìyjÕKvVÒëÕ™jþ¶£ó4ta_Ðtàˆ¹ž~å›á÷»s˜Žozùãìäwâ^’†j-Öj2`ãYcêï×JÇЗ^öj;ø[溈χ<÷Ô''ò7Ó¨;VõIÕ‰˜åP8 ­xTÖõ‚òlaêµA/>ÎÎÁΡýzáû->N’ù¡¿Äz¼ø8ºj$ÈþÝ}O->ŽwcÙÝýàéÅkˆ‚Þ¶ûÁ²y0°ºÏØÂq´%[£á·•?ξ'£Îtê­ôï̹¼tÀË,¡I†;ÎÃÇɦ瀮4챇¢ŠÀ•óo%÷SŸäŽÝRöà{ð'V‰tÇ÷¹¤0Þ8uOqÔÀ´÷ârc>Žý{ñ­ˆôŽï±ó?ggpî׫Ç×h¬Ï^í—}¼'û£XAsõ-.cù‰Kû~æ ­wýIø8þÏ5@ûÑãøMýðõ^¦Ç{{ø8;ÐkËEp ~b<8²&|=ø8ùCz¼Ô;5ÆñÉLIÔé[óæŠÜ¾0ðvއc±>iý¼ˆ§¿äñž˜}ÏS‹qôð²UXQ[ˆbÏzK-$àÊ\~ÛYo¼7kˆM_xîYoKu —€¦CŒ³Þö÷‚1ð!qpS÷þ*}ÍÇ…ó ÖÏvšs<çÅÆ'j„±õ;N̳O.ƒ>þ0Àbž¼$b2ò´bVŸÇT¦û¤0†â›j÷?~ð,Èabjqt¡‡~o³5¦¨þï°£‚þ¾¨þïËĺ=IÆ–N¯f.ÐŒUünáÅX_‡Øò[\]Óá)Çò„Ø“—,Ÿˆ(j?ƺþ¦DÈ5à;Å:¼|1øvâñêìó¶/?5€´ÇæçÏÕâëqÇâ‘á‚çZùëu-޼¶wÙ»Œ=ý\ÃAËv翦ÞÙ9߯•R¼Ø×Ϋ4©£ô^çè½jO™W{þ4«§·{%gµvtpïÍõU®¸î"A‡×ácÆÎèj‹=õ’ý=(ê~å§?WÊ+Ž‘ý2þb«Ò»‡ø)Kóìc(þ[ôž§óÜ*Ú¼±Ûç2Æ^cð76JSz;2– Û¹±\ø[(cì¸'ç{îÝ;%ޱ³úߨUþóÞ½¶ög³W›c>øÛ^ݸ†vBÛküÁG/héçûͬbþ¦ \ð‡šÒ±ü¨zÉèÄç­^ Ç{|V(lÂswÔ±ñàƒ¿ÔV¸îQþ8s:âÇiãÔÇPz¯{Í£†öΔ{Ý3ÊgÿbÌ2ûû;“UÞ?ôÅBò9ë´ýá"ö÷ |uëg™Öï}Í'…à'…÷pê“ ŠBìÎ~ÞéOf·=à›ƒï)^}x€F†¿-.î4üoÉÞPè/‰ËÇIƒ§h±ïÒqù8ûýò/>$©[×kŽqù8ûðæÕb÷'Òûl¢ø83‹WÞbç=è(>Nê)ø/>”:.˜Ógf‘IZ,/ðäŽâã¤ýÛì±yïs\|œ'­èøFà Ø(âzË:þZ8θFW/¦–ÖýYá8yÉá+ š/aÇaâŽëM_ž{ýM÷ª« ‚\ùö—¼Ý/o,ïC«gÕ_²²BÓq½:Qý%‹Ù]ú7I£k?†iÅîd·¿‡‰~ØQþ8ÙCáOf®øÜªO®}8HÃÔÈ ×2ʇ×ê8N¾СòÇá)è‰u°¯û™7N×kØWú+öwæ«ø iëÚb-Fç·„ŸyK È¬ãd½…#cϼ%yevÌr¯ŠÞ·.¥S¶Ú¼=|2|Ýϼ¥YÚè±bàS×O8uÙ¹c_zžÂ 7kÀù‡}­…¿­ÖÛÞ?±ñÿ=:ˆ¨õÆ?yõ,.på"îzû!E”žX§dìªýáGµ´Ò&è¸Dù Ï=ÿ8z–<Œ¡öÉŽ¬Åš€†J”ŸðÜFÃnóÜ ØCo-^{²öJ¸O'Ú\$Õy.x¿u¾9M¨W[ïáô—è$Ä’¨ÛÏþ7ßRa€Ë ^­Ò=8vì¹8OžˆÍp[o;v¼ûÝþïÉ•Ç/.²c©|®µ¦öLToéËå-‚ÏÝ—ÿØ5c/ÿ=ôÙ©ŠýLOÆž|Ò˜ÇÉõ7­Åž|r½î'±Ùš×Ç{ð·º@÷v¾9Ð{ð·•`¼éDùóéý7;=N_Ûìà9¢§öØs`YÇ»“ÑÕÆ0 ³Poæ£Úbÿð·O¬­ÕÞï,üm©aìN(¬½ßYú“lŽ¿m_N¢?·îop—>±erýÆZõp:ê ïí¥áz;¶ò’ì"ÆØÁ?”äŒÒ«è¾ëÏ{ªÝÞØê/·Oì>d©Í[ÕKæ2ÅX½‚ o쪚cï{=öfWÅK¥ÑH¸Þv*8û¼­êW}S³Í7Ú;«zÉ”õ™ã½€ öøuH~g{O-ý“7¶tžHâ¦þ£Svb«Ï<¶ V¾õòÇqgü'©ö­ÓÑçZÑ{ëžý,Ý=ZìÑçRÔ6Þ÷cmÒ#{xTÃ5`¯o²K·ŽhØ#š)ùx0*äëí»é>…¬Ç¯Ãm ¶hÝ;;-¶'àÒr×$Ù±‡³·3bìí0ïçyaIÍ€û)s÷ÏSÛVࣧË‚sˆGa>,È/Œžï¤¼Sa3íøüܽÏp=8ξ'!o|§ gرÇIò ðçµÓ°2öà8FýêýÛ¬¿3>8NàÙ’tkÅ÷ Ž>é£ïɳ׸wìÑ{MŠh$„}~Ûñ[d }ÏV×SرñĦÙÄíÞ Þ.íìÚýþúluϼCÿ¡9òêØ¬ÏñÃÇÙ±ø­g¹°Až{|¢k[¤ÎMݱ§Oa‘Šv—ãÍØÒUÛ¾j×Ìða[¼Ž}€’ô>R6‡X»Ï¿=e™Öcì™·=ó§Ðý¾vì™·˜ªú0]—j_ÅμíЧ6Ü0öÌ›‰£§|vÙôoRϼ©LBmÍÙµ®ÓVä|gKP‡3­bú÷[ý%Ù|Š:DkjÿÎTª%p²Ô ñžõ–Z'Š½Ø½}ÇÜtï¨óÃS|7Õ^9:†Ï=¸iÒµ±æÂFá±­‰íp¹öI;¸©;øj¤fF“ÙÉØ“—ho¬|8WÒq†lIþO‰ŒOÔÚ WŸc»} ¡ŒªÉRdìå›ö^”Òh)fÆžóz±÷ðqîNÕ_²ÿàÜ)£¾—¼ý%ÚÇ›Û, xîé/Y }žøP(œ~ò’ôŠƒ:¸[ïãO-髃lü‚J7ìæ0^º¡ ÇùÐÜ¢åF^þ¦œA×{xùéMŽcÈVËvw*?á}Â*øÍ<•ñ{òɬ­`ÀºâòoìÙ'c(MÔôÝ9xËíýàoܵN»óOï̉­}RÀƒ.óuÕ~‰â›.Fìkß!£øÝèW÷ܳ¤çʱʗ<óòÞ"«ÏÛõÇé»Sb«¿³ª—ò’2Vb¯þ¤ãw–åýþVú%©çHëcößvð·´tûÄªŽ–ƒ?õ’ôøÓPŒ¥šË7öàoû°ø~³‘Û~cç8÷îý‚ì{¢7öÜ»÷ÙÐù›9oKÛz›ãøw'Å€?ºÍEßzì_¹¼ÇÞ’”ì–ÿî¤< ¶pœ½üò:oƮۼc ÇñÕ¸0O >䩳ø8):ÔðÂÇg°ñ wláyÐs‹û›Ž[xÓïB<–#?Þ±…¤ñoÇ'ôŸíØÒyÊf¨ \.ðÎÊgŃ–”Û,þÜâãd¡ò—ËõH`ùêï¬ø8¹ø¦–8N+ëeìªX7í\¹½2ž[þ¦ë§Ñöâonð\®Ø"m½ñhíï{æévÄþa¬îo“ôƺrðþŽ]zb­bÇoÓÇSJº*Ï-gÐ?éò›ÑºfÿáoKz–?Žrt¼e&ôóƳb/«ò§öÙ£øÌ[Ê [ç“í4ú·sýq&bò‡©Q×âH‡­SOþ=$¦f]Ã5´U{][3i,ÞïC“ϼíý´k`æŒ ~[Õ•“±^ ÍØ3oI·ÎûJ·š¾§rá¦n¾zl®Ö>©õ¶o«c_;ÃìwÞ)ó~ë8™õëIÆ^ÜÔä—oúðì“å'L¿º‹÷›dx¿å'œûý´†ïMÀû7)…wÇO#è‰ÍFyˆ-¼[ÖðX«˜ÅÇYûPœ³}ë#IÆ-'(>ΣyÈ=Vƒ­å%ry‹ÚÛƒ%ýnEÿͳËý-Ó_,·O/c«¿„®¬ô_¬Qã0íØ“—d–bïø?É=yIæ }ùwX[º¡ÝPê‰ÕŸ:≕ò!]¨a•6"³½3=ºØÞ›rŸ>óÔºìc¨|’»Öõÿ bi5þ©§Ÿk¿Þ‰±rµÞ؃ã,½¶<ÇjøÛ,?á;`T?@[ì,½LYøÜðÙîNÓÎýMÁçõçÌ’þÜë=ÆÆpð76B\„s’[n‹ñygœ(qoÝ߈ì¿í4[ú“JãûÃM=±o_Î/¥þ=XÍwÝ™'v²·ñú(MÔÞËú¼3æÑž[þ8ƒ1µ¬9·»ÿôÃJˆóf)õ1Pé9š~¾³ˆ~ñÓ¯¼¿L8õÖ6>o½d|0ÖôoxÖôòYI b³«}^:O*Œkh\Ù7öô™/Ÿ„ûÎ{§{cOŸyÂàX_OÿÂöÛª^²‹ßúZ½ÿwÇžyÛãÅ÷;ãç?ØËPýâèFíûÒà ƹÈZa«Í8¼0ˆ>ø&Kë=˜qy¾‡c¯geázÉëos\|œl€~PP? ‹³×fÇ1}z^§Îµï \#Ô¥ÊÁ|È>š¾ìK ¶pœÛê ¯Ö{»ck½ÍÚû‚¤·gìYo#oF«÷ežÛc¹Ö±÷¼:ug¢×¶×õÇÉþjë|mÖW{pœ™úr½ï*_ŒÁJG+ÖÔÞϵÇpê“;?éy?ô9í±¥Ïeâ-÷LúF÷àȆŽÿT³ƒGïËzCÃÃÇy k¿E¸G/SGësL„ãĦh2õž½Ñ`øŒ­>…µZ?íÿÏ1ñ–OæÞxr#'øÎæ™·E3Ú}HS?µßÖ,^"ý‡kl~ùo;Önìl÷XILxÂsË'“ýÞŽdŒÀ{ˆúmRffo¬¦¸_‹]£Þ¯Oïº3³K gì7oùúÃSëýˆÙXßC:ÿö>ÝÑ5Qwì™·ýâ—÷ž^—®q·cϼ휮*)=ÈàE²cϼeÅú•ƒÄ!¶Ö[ºÛ:ôWóèûCñqæ/pbÃ;}Ç^>ηRõŽŒ!Ê?KhôÞñ=Ã:¦3o{—“Í_M̹×lÍÂn u ÷ ‡úû¥ÂMyêœîbnºü=¯ càê=M¨Ç^½×>…ì¼NÅ>äb‹ojÓõÃóY펳¨t ÷ ¹;i)-öô—ÅûÚÃÕþÜÃ[Œ1Ñq®+’{cKïugЈ“e{jë—[< /dÁº}Èjw§Å§/H†a}}/ƒhýr‹O_P¢%€I,aŸ«Å^¾ìýÆ»wNëï¬ü„ÇþØáýÒN1GÕ«9`»oCN-öè)„ö¾Ì^Ú°ŽÅ¥§°8wJüÕŸ{Ö›ï}ÞCÂz­¯m•ŸðNm#ö¨hµ1ÈÁ»‡œ,k [×Ox(cl¶†¶ï¡ôKxŠcì­ôñœ[áo±>½ÇÊÕaÀ[’7ûª’'}bI[ßà’ÒŸì!;` ÛWû±fÞpÞ¥Ržc‚=9ÏwÓÇpê%;íC<6ÇJ} GÇpŽÀ½„¦wl|©N¶_¸¯ó¿éRÆ–ŽáôwÚ2¢íQ×g_Ra½e:Ñø8cD@n”’h«Ç^}.õ_-¯‚—¾¹ìò¨öNÑù8)®Ø÷ÔâãLVkü¬‡†å »]vuÕB“H?÷þý^>Î^/0†A?çü‰­ú¤ý“& øÛªzÉ~¬ÿz+)°Þ ¸ŠC,«a‘Ò{«ç%ÅÇÉjv¼Po7î_ìÅqV4}ħV 9mñqøÖ\~ðÂýˆ«ø8Y»j|2{¾žsGÆO^R=pɽ책ì höüìe‚ýÅÀ±÷L°m c °ÁÖcwªÝ±ŽU|œônmw†Ô\o'yêÞóß”Ùëã->Ξz‰®Ã‰þó;¶pœýu½Léž,;¶pœäžE»3ìzõ{lñqÒœƒûº^ÖßCõ—¨yçÕ¥þ]Õ_¢ ßCjtíô0­XþÝžÃÛrúk7–¥{Že{æ-KæfÀiÓŽ©­òÇɺh4îC³÷Ð¥- Ͳžt-¤{æ-’ŒØ¹go'á_ì™·Ô9oZ•©›ßõ£vì™·œßßï!KuÔŽŒ=óæz› ßûqj@­[}A¬â÷µßoï1¤Ò{õäˆõ:ŒŠõ½JïÕöiÚj ÙÞuˆ2M©ôÒßï÷igT|ggÞ,µÀ;ï+kWý·•Þ«¦ÏåìxhìØZoYÜë~€{ ö{7•Þ«îÓŒºÆhÚ}µ\ƒJïUR¢×@ÒŸlôØÚ'i­ßž‘çÊÌÞzž¨úK8K™€gí²Ý/h^¼Û4Qj”µØêSØ;‰PÝGž÷Ø:ßȼ÷ð¤õÒÕ{Ýgí¿-WUËèö—$dz¯±è;«o…hôñrЍK‹-ÞâÜo?AƦ¿Soõ—솩ãó’} ý¹ç£…Ú¶äIÊ-VJ;º Ò<±vûíÞØ£‹m³sø36~¸à'¶|ûL'öЧ¦dÃéçʤêëšþfýýFi/„Fµ·zïã-?á”j—O¿X=ø Ž7XJ¿ÄÄÙŸä¤ö¨ð·ýz Æ¿/íѰ/¢ƒ¿¥0Ʀí_=ø› GÇö=»åëtõKÖ²±Â /¤ê/!Rä0Ù"‰¶?ÐÁMe}8m).ýýÃ÷<ýÃÔlNoø1g\ŒŸçŽížE|ê“Ù8ÇÑ{ ‰Ï½;ü쇞xb^О$ÔáÌ­º¿|ú•“ß k(ó5éc¨zÉ>þÑ×hÒìß1•&ð¬77ës\þ8y˜Á÷ŠËÔ¾ßòÇI6:zAe»Gòúì?xÀ+wÞÖ€ïŒ÷ÙÔÏ¡ª—è>w'‚ ß$)ÕühÜ¥mgrxT– xÄ7iiÛKŠ“={Ø{Íùíû•òí‹s‘8äêï¡ø8‰fö³píý·Ç~jW—“yq¶7¶pœ„$>=#M/hÇŽ£íryJÍ3ú™¥ãb3&½Ï&YX=Ò²Zª-6{Ð!¶pó®žÚ¥]gdÇ<`g KÚÓÎ]wfÇ<€²T<[~¦\.ºz¯Æó±Üµçr¥÷šdè¦ù²@*0ÞÒçZb«ãoiAÞsp-~›­Þ'vÙOl”î—Í–O¦Lj×–Oòê‰M“ßžÛïÿ_ïç";óÆi/Ýc'Ì›yÛ;TÇM÷ýM»fòŽ=ó&Ó„ô@ºnsªãœØ},‚ï·û€ìX©Xí8dê v¯¸«»?_Ðqè‰$³Šiw½Ç^c½b÷•0µÙ¬¯26ê=\ÃŽw {®~¿ðQï—tgö–Ê=·÷;o#îè=²Tý%l¢¿~ØO)¿õê/IcdèÿÝsÞ4–vì™·üˆ¨c_©ºÔçͯU+–]͂ߦuv;µ~唃ì¾Q;Ö®vôlu#Û¯z¼©ø8;Wl}™GŒ·pÓøiÄ?±6WïS ¨}r§´PÛÿ\û\Dí“ù­÷ï̵ká§”ôÅBµi =Úcµü, 7Í®À^sLKŒž{_¿/V¨O²õš#Eõ)ȤÑû öþÜË7í5…#!dýìŽÃ΃~jÅpljÃ7M+Ö¶ÓD¨…¥÷š¿c!Ž3º6“—Äj æà)HÖbO^²Ï9CÌG¢ëð8}A©‹xÀNZ¿'*þÒýÑO¹pJïÉ'÷ºÀ÷Jv-ïãqú¹2‰¬NS€‰[ìÑSÈ>/ŒÝg–÷¹8÷êâÚGŠñG²ö‰­þ’”ü,IC£åg\ý%yŠ@löÛ7̇ËOøÒâ~p²l2k½j\ú%o+àO,ݺ7öÜ»é«*ý¹·>iˆ“YŠþX‹­þI™ Þ¯%9¹?×j¼Œ•e›Y›·yð7›Šº–FÞÇp|דª XRöƒ·Üž×éŸLû ôcÍŽ{îݶ—,>7[KÛo{ê%éo:ã·ã¡ý¹Ç¯# ƒ°ÞÔ~êž'öèí .Áš×,®´µ¹ª_ùbÛ?±)×ݾÉut ǘ ÞƒŽ¥}/Y¥c¸>ïaç4Þ÷‡âãŒìãèy‰0kÿÖ‹“¬¨™ç×4Ûx¯?Nvy€Ù¢[u®¸‚ñ±)RÔ¾3º<ªó´Ë±ÙÛdnñFõ3k_iV_otuÕ¦ŽPîg=V.îÔyIOqr­údÖrú;Kì ïQU/ÙßÉZØ"­þýG„¦ô1$ÿØ{lgEúrýå©{ù8¤æÐ'6¹×Hùòq) Ð{ÆÅÇÙoò÷!Ç:sö~D.>Ží„rv\/ûͼǞy³ôyí|½ýz®ÌÅÇÙGlç"Z¶OÄ@].KT>;·‹“_«kkÛ‚ßvæ-)í«kvî N 6 ñî‘ö”qzÿ$gÓ2»ïYö=J½8NHã ÒCéï¡ø8ñÛÏU~uâÏ¥Š …u\9.>Î^ñ½_î”q åoš&âgù¶ÿÞ{'’˜ÜûSƒGïŸäâãÄž7îwÿWmèï¹^¼ƒp7Ý+sÂxãĦšFï9àe¶?³ãK»¯Í]“oß߬{ïØã“Ühî÷nó&/ž±«|‚YÇÔö]•a tbu­‰þdCà¹|bÓ…‚ —Uú]„õÔ•×Þ'ƒ[lXü¶“—<%¢ úˆÔ±fÖÓ´ßC-HfkÓÉØ3os¿yï8ÙRÆ÷pæmd#}eߨò$ ´Kwš`ÄÕ_qå~8W3ZÛ]oÜö³§Åv'bÚb/nÊ\®”ÒoøW‰g@nZ}ö|§úKÌ/Rûƒ5ShîYoF“¼ÿ¶ý©¬~vW‰¦šnÝ×yÒþŠoºS®è˜Ú£¤Øcë|Û¨SSšÜz“øê½z¿›>5þ4Vl±·¿„ øzÙƒÑóê«÷šYRŸ 3í\.®þ’•Ž~ý·åÑ¢mŽ«¿dÿ,|3oM#«¿d¦[ߣvFÒÇ«—ÃOÈ»¥Ù9xì'ŸLp†ý¾ús¯o_D 7Íœý^èGO!}£ëhe'lÓâà8zæ{¹µžÞcƒ>ûžþ=%ÄŠz¿óÆ*^Ýê8ä::§íûÒ¡o½‹O_E+Z,Vz¤+5( Æ G;„óÉØÐÆ£âÒ/á¡Æ­jCÊqû‚V ŒBý·n:¤sÏr &ÑÇ{ê%Ñ yNìàÆq”âãL]ŸkÑ5€dÌòªï}Åš.뱓KQø‰å&Ež±T˜Z÷1ÏØµ7Yk±§_y·sSWzæõž=yë%‹ÃÞç›QZþ-“q Éè= 2¬p²Æh<¢-ÖËKg*¬7ß Pëÿ•qt £ P_‘v/”yô¹lžµo¦Þöj™‡d1ÄŽÝ[d^Õ0ècz”@¹Åʬ÷Îd©ciã›Jñqb¾÷ij$x‹->Nú;õX] “ËÇÙ÷8÷2 ˆ­ºòâ˜Úsíã­º²Öß÷ÀKÞë0R|œßýÓ‹2g[ÖÅq¸õá=0[ôš˜GvÖgw²yÚýXŠ“©²ßi^½‹7¶ø¦kÒî:·4!cϼeqO¼’µkßHñq4ûa»6@0h$Hñq,o4 #àÝ!»ROlÊumîäòAì™7‹EÔsÚ¬ÛBlñ¦1Y×3ßgToñq)Ú¿³Gú_ZMLäâÝa«?7‹ž-_)Üt?sA1BZŸ˜Há¦û0„^òòûùVz¯;WêuÄä|ô³¥úKVÜ&—¿Ø4˜nç¼\¾©NûÔŠmõ÷Pý%Æ uÏüµÑŸ[ý%ó*üÅ&§½³ê/Yê5]­î)WïUõƒ_ì3µÝ ¥ô^ǃõØ4bo¿MO_‰ gÅÓ°¥…Z~‹K&àžpcûÎôè†îÿÁCÙ{Ëj½‹¢G7t®Zt) ¿­|iÙÆ¨Z¾}*-OÍRÇðæ/¾æû²éàQ9ˆ¬Õ•åé/ɦðf\]µçöOIÖw¼iG?¥ xnù@sk@?ú¿į̈¼¥k`>÷!êùYé—Œ¿:Á;Gן”ËÇ!SОYÿ‹­ú¤ºOŒÝ©UËííÔ¹öbKyÅX‚|Ò¢üÜñ¹C©iËKé—ìk~çÒ®§G ßE|V,ø"æ\¬®»(~ð·Lƒà ÝIa.]LMðÛɤ»ý6?zA²æçû] ›/^ýÊ#w»·_…ßVõ’á¿ý3•Jý›,>ξQMëûïÞ{ïøÕy{u:üõ¼úúãüjvVlþóöMg—jLý^X|œýùbψ%´Ó~[\•ЂØåÝÿBŠó€ƒpXÖ,[,_.Aã‹Nn=víS¬Õõòqöùgwµéé8x@êì*ðitnªŽƒ¤0¡€7˜€¦ŽŽƒYœA«ôŠuiçÊé"…X*,Éú}H× ÐÉ…Q™Ì XÝZ+Ws«áé+Þþ’4¬ÍÎX]“D§U,`3üH@lù›ŽÖT~¤ª¨ó¾tžyÛiTãÇfª ¼ß5J㙚Žl–¿ßuæÍö.)ý>Ÿßhÿ&×™7ã ‹ýádš‡ºÎ¼Ù”βÔWîÜ3]gÞÔÙÚ{ð½†fçÕé:ó¦2°¶2|atyÛß[×,zZó¤-ºÎ¼%ßzÒ÷IÊÍ'H×™·¼èC½/U[V×™7Nžò³ ö3:ó–õ³¤Sr‹=ó–- ÀiËy»“)Ýõæ 8Yxý·Qá¦ùjŽÄ ¿PâÂ7GëxÊYS¬íëÅÇIa뵕´ {õâzžŠGíýVÉ>/Tú\Ĉ˜ý·Õùæa oÉ—jßCõ—ì5¼ ø¦)¸þ{jõ—ìdáð+LÂH_½×D({lb_íýVɾ£Ô®Rú©ÕâµúKRíÕº~ÔRZý%dîÞ÷Jÿù6Õ_²Ò“bå§çÿÄêÕ4ëãMRîï¬òÉüV{@r¼¡ú¹Ò’… ß^»'–r\ÝqÏ›Tãm½Â*GÏ|_}wJÊvŸ·òÞ§&†’\Ë«UVù*Ó/=•Ñ߯Œ1>8Y ªS=÷·ˆîiœ±>f_oRú“êñ‰jùºÞþ’Ü)0V;Ž®å'¼¸÷{>±Ù|Þbýê&!¦¶7‡ÎÏÒ·^B¸ždSNûÖõÜ»÷·ú™7]_Cµüßh öµßÂìß™¿ŽT¸LM²C¦ý6­{w/0>ß™§o‹=>+y@Á\$®Àý·ä¢gSn¾}ëÑyÚWiØÜGúÚ,œ Qøm©>{ì™7—©ðMî|'šŸ'ùY­ÿ!tú->ÎÌ´¯ïQ3fïËT»<*_KÒë%zë%iÞÚ÷ß‘%…öý'…ãGßw²\Ýê%Z|œä–€nŠ6joñqö¤¦æ9mý¹§>™ÒcÀÃöÒêã­ºòøñi»ý;#nßoñq„$À åš0¿±…¤£c/ŠõûPñqb¬!xá>oÚ:.>N¤Ap¶÷ºj}¤êÅ7M xì?S²>†Ã7M±IäÄ“EÏ®Þë7ט;k5]õë·¨“דÛûÆœJÜ{©RZ çÕ~ô¹VbuÜu¼U: ~ô¹ÒÎdv=è\9õÃXÁÔ8ñúp ûsãì“)&']Wb_c»NƒÆ©OÙÎîÔ«àÞ‡§±Ê'èŠ<ÿõì-èŸÔ8ó–¿BúÚ´i½ÇPƒ+6à±^ß;VŠ'Á­’¥fZ'Ó(_#ÿij¬ÞP]p' «Øµ4TDàÞ^ã•Ö•©¶5»¥Œ-^‡2Á’.4~cmÔ¼q0òÔ®Úü_lÍ ᮓC¯¶Ö[ó¶o-³ãd³ã¦6μ­½#Yç“‘Á÷kãÌ[ÖZ $ý,½ßßlœy[¯£ê¿0 …{l­·½¡.’'^Ë'mœyÛ‡ƒClÖ Û9dãÌÛÞ|â×ÓÔbϼ=j‚xÖl¹§'[›ê喝;™ggñ\‚ûâÝK¡Þ'Ü{­úK|^ÑÃÓfmž±åK›ÝD½^²Óó3«þ’}vôñ[VϼÅÖùvÓßš.`TVý%û&±>uåé£áõ›ÒßYz µ-«þÚ»—çã^óí °«÷“¸ëÍ”jïìÕ{Õ  »GÛr»z¯ ~[ yÓn±Õ´ZÓ4Ë%(Kúx/?M·K¢=9Öcn({3·={”Äêã=ºØ)y ±)¯±§Ÿ+ øE&ÄÍ—ÀÖõí[ø;Ã:^GÏ\yMøm™ì·{·=ý%”ÄX¤'a/}2½/ }2ÝF]…¹óÄçšt:£Ã[¤êþýÁÔÄÁ‹ÚJ¿Äß Ñ_l˜ö}çòq† ¼‡äFµd«zI Ø ÆR×#5:ü·l€UŒ =õ’$Ö0ÀT£>Çw=-ó`Ž÷—Ge<Ê#>s¡ ¥h|îÝ ¢þ¶·¾îÏ`O½$M¸b¬;‘ë:.ÆÇ¯ƒÍñ;ãˆî•aU/Ù­ÕÏùÌoúþPõ’™n=}/IM†I_C°?äÍ@{léά ìß‘/Ôëÿ¹äÝ ÏWäæ­>óÄÌaÚqëI·âãäŰGFcÉØªs9 õçf—n_óÅÇÉží5þ}ífíc(~@T»6ÀØ9­õØâã¬Nñ‹oF»_XÕKR¡Q1Ë®ájWïÕXgð¼â´o§ô^gþdÀÓ¦}ëÅÇYiÖ"€-f}³ÅŽc‚˜{/3àòqH ð7™©—Õb«®Ìpv§†Y«—Xñq²ñòb!xî©+óëêú—G‰õ:—Gò6iЛ¤]‹Ùг7OaÔ eï9Añq²Ÿ`v¬ÎçìºV|œ¼ÎkÏi]¢ãdV|œãK›7{h,Òc ÇÙ×BèU‹i½'ÒŠ“úpÒ}ð‚ ‡Ó¬pK›;Ðuýu³ÂqbNéšQ™ŸX*Œ*- ºÇ¿q³3o{ÓY€ÏïÙQ¯T¬“Àûuí^qVþ8>ƒ“(“ ßØê/™ÊÀC™l0ÇÕ_Â][èá>ô»©ÙÑWNªQÃõè‘ÙéÏ}úKR“zu\$-‰F×ù·§¿$5Íf×µÌ~ZðÜubU:'(%¥´÷.š^~¶P¯?Ðäî‹h~ò’a »¸/¶ðμxxÙ‡È¢pÓ”)ë±Iéì÷Ø(Ü4û¡–™vËKB.*ÃwZbõâ› Ï])HÐßÙYo™Ü@í•RG£·ø¦éVÉÇ™ÞëÕu¾¥²BÇÉ8mÓ~ŸëcÔK¡ý¹ÙzÓÎnób‹f=6µ˜[ïŒ_½WâÆÏÚÕƒûs+/Iã§^¯Þÿ¶çˆ^z¯Ö‰×KnÖb«/hç%Ôñ·¬^p¯^Q|nˆŒ÷ú›:ƒîm¶²®>Þ“O¦â÷ìž7ÙB?{ìõíÛ§ÀJ‚¹(½×‘EÝgN[­7ÉŸþ´lŽC³õØutÝooÑOlæëÒb鹋нÌìu÷Îoñ§¿D²¿cT”VÖ]ïÕçÙ'÷ÚÇç®^šÉػ޸iÔ<±,­ŸÀKïuí¤_1–¸å}^õ’K«ñ·¯uí<¿þ8&¿í)w·Øuê“oÿûÎÆüm/ǹèGHÆ¿Ž±|À{˜Ø¢¯sïÎ]9 v¬h{‰¯Ó¯Ì%½ô;Ôú½Ð«^’÷PøÎR_¹aîþÔKÁ*Äß"½Áúx¯?ñêûYвæaàÅÇIÿ!é{µ§Ï[û~‹C]lç‰ÝeÓ#õâãä±t±ZmЋ#ìí¾™ûd€ˆßzIêx÷3@÷"š=öÔ¹ö}kÎþÛ„Û«ÉØâu‰:{éàÞb‹“…èSÈeÜ›VMw †^‰àÙî"N·®|]Rÿb<·pœ©“°$Âú\\ÇÞC6uö÷ÀãÅ çÚi”5¶ó©s%i8xùZï—Þ«ìÔòê}#Óè±Ø»‘|_®gãÝ:< {–ÇÉñõyãë·¸À­Ñ)3öÌ›e×Rÿm{;¤~v—?ާÜUî$Ã÷{æ-¥®Qܸ¿‡3oîóWLîÖ-:_Ï¥øS:'>õÀKÝåÌ[¤*(xæ-êú^þ8¡6g0åm!_w9ó¾S!éšõK;féÂ¥A º––ÍÍ=VަY¶~-ÐÛf…ç_£d/‡µý®çb;\A«gY÷$t)]µÁMcôiCÿ —«¯Lº:(½Õâ¿™>X³îE¹†ºFkÍÛN¸›wŠ>|=xnÍæÉܳ]K×3ož“Aí~œvØýÛÑ3oûÿ¥_-ÐÇláÎzKPë%ÉkëBk½íMú×bù®g½Ö'ç‘ÓëÏ=ëM­måÔõ]ϼi²Ò Î•pV[›ÅÇÙJýö*]Û‹óäÊ€g¥.Uî™·$2Ôû²o»ý6+¼›šàÚs°fm“±7 äd»þ[olõ)di¯{N#m8¤[oÍÃà©éŠÏþÛŠoš¢C€a s«A{õ—dŸí¨m{­þ’}E—»¯›Öz©¼úK¿ôñ®ùíÕ_¢ÙÀÛÇ›»!]’m.Jïu¦mi9Òú‚¼ô^GÞzÍ<Œ{_›ûÑ ¥!]×2óÔE«÷øÒÎ9›×lÆæÛÎc}û:—ëäÕ}—Ÿ°šOƒØÔœkÏ}úK8ÍÓÆ›+»¯ù8ú“³‹JþñÞÛ{(½×H‡Ä»vFÜó8}x^î‹¿íØ R¯kú‰Ù<¦¼ø8{u­Õ”?Y¿töŒ­:×ì>ÅOì~å=öàoäÝŸáƒt®œÇÁß”Máý>wÈß÷ãào1¤{üå+wik>Ƽz6 ¿mZ£þdì:ܳPƒß¶3 ~ljª—$Ä€c¾ælùYT½dO[÷yÍš‚hÛS£ê%”•‰Þg3’Ð=[lÕKö›Ÿ]3.YýÞßCéÎPüš”¹Ï†þT=X=öÌ[Òr˜g3i±¥Ó»'±ÅÄÚ7¹.Oxt„G’½û¹Ç:u®™ gpp«ÅÇ:xÀÞÄ‘3˜BHÞc­ô£ô·Ñöð³¬ûÚÇ:xÀ2wäö=¦¥-öà4[ãêÃ׳èþAÇÙïkŸpJ‰[-ǼÝ!ÓŠg`ÐÁq8±ø®m‘u8ˆ-Ó5¼Óöb¹ð¬îûðä«÷IõƒîmžÅÔcµb­÷9&Ýzv¯¸xûKtRçr­Ëøþ‹=çÛJ ,PÇ¥{Z~÷J5ðê"º¦dðñ7]cN2ðŸ×ÞŸ|üMÓ+™@Sg¼>¾FÉ='ðSuˆ-_£/‡Òî Á¥«–Ýúÿíá,Åá…žXûÓiµ×à3o{®‘{¶ßC÷Ú >ó–mtà‡b³Á5[ºØZŠ{ý;ÿrùÒ.²Ù[ä½­M9ëMÓ!êg{µúYÈYoé ØÌÎÔ{l­7m›WÕà (?aÚ Ï•Êzl᦯rí_Ý3îÛKí“âæX{åÙ°Ð3oƒú¹ª¦«ÖïèQý%ÙG 5›LÖû¾^ý%Ùëmoõ]W"ª¿$-›òMC{lõ—쀤ë1e• ïÕÕ_’æyÖŸKJÒó¨«÷š.;àÍÈWûÿ­¼¤\K~bÓ"¥ç0Õ_²ÏÂ_0ói% ƒZúÊÖ{ˆ2V½÷…^Ýнñtì+µ5áU>™Ê‚º·cõØêçÚ‡ÖêýöûêzÛ¡¥§`ÁàcÓ,½ŸX+=óÄyû¼Åº>Çoìo2.ÂÉ¥ÿ¶|c}ÞÎcOôP<+Ó»ÿÎÉ,Nác»×–\ÔWÚ_.ŸéûΛÔzûú<%ExÖÛ;os*YÐéýôWã²cßy;:x7,Âîë¾óvÔŽûÜI{ûkÕzbͽ£÷Ú-×9úŽ}ç­íå³Ý̱|ßþˆõzœvš0ß±õÀŸëÝì¾Nî½áìÖn-ÕŽ}çíÔ½à|hÔòWº{b{œ±¹Ïfæþ½ëZûºŸ›ž! }@ôª1ß±®Shîÿ²W|\_"µj@ö÷åú’“LÊ}žµNÚs=gý«7]×uÏÙÌÞÂ\óú’£¸Ùv;wæºîøüî3á# ž—6xÝâÞUàºý æ;Öëçº×’󹱿V¸'ÖuA­UxBÍS uÝ3÷{Ýõ[Çü£Ê_Ìpb½ßb·fw™“à×û>„oh¸î^Ôå~ÖÝ﵎«1òƒPÎ } Çë§pšdâüí|ë}]ïÛ{þߨSoxÏñ£/y¼5;®»gço; [_¿Ì‘ãç8°ÜÏÙôuRºá|ho›®3‰c¦æ5ñµ^±O>d÷¼Í÷ü­ººú;Sg?¹î½Æ|} õ·Èà‹ýŒ0¾X×ONÃI ïX}Þ¸~¾c°«ïïŽ5ï£0Òu÷"u?/ÑŸ/õÿ{®v˜ÿs|Ì^-ë^Îp®·SKÓ°c«×žµkvbÏGàZ×¥¹ÿŽvA¿¤Ö¯ž!;Öûˆý=³ôç×Ú_Këë>†{s€uçqмÖTç%2k™÷YÝ©´›÷x—,«z¯;§uźÇà>Oû>L¼ÇSå~‡¼§i3Ö’¦Ýï¦×ã´½"vè‚j½xÉ,^s.ÃzÖÖå±´csí}æ€çÀçyÿžœël4쾿§Âýíöz=ÕW÷ú[aº¯ëõ8Çê^ÏN&Ò¯wÓëqöVão³ùçk»bý§”Š3À½§iøm~Žsüîoìñ«¨×³ãõ8§oô;›R»Ç»¢ÆFpÝSÏ2¯ëz=ιѨÙ޹ȥÓݱΕÏ~õûµ¸ßc¯ÇÙ?x᜷O‡ë>x=ÎþtörÇKF¯9öz;s„ZÄý€ÜßM¯Ç9 -ú‘Êü6?8æ‚ô ]—‡ÊiëøŸXÄ¡cê{Mž÷}°è 3<övé~vì=Ç933Ë" {®õžãÔÙo¿ŠÓzå>›Ù±~޳·ë×Zrü2¯’äûžã[¥f¯^^ø;ö=Çyº;Þ} O]b‡Ÿg·žû*&;±ó·O䣗«rç…¾äÄŠ œ3´Ë†ëĪǶ‚¦c?‰ûàþÊ£SÛ±s'Åuß÷휚R_Rúu®wŽúßgÝÛæ\z£eˆ­~–t÷oy4b›¿ƒõþë×v4b»×Ú¯?h™2;âRÖ˜†_¬¿o½ÖG—¡ßXßö±m¤ëúûV®nn;ëï[ïôj_³+bß÷mŒ«Ò]qjñ3Ë2Ø?viE¬¿oe û5ÏñV?7m­Mö6Ìqí~Æ:<ë›rŽëðõáæëO¬á>Ôé±kÀ[>ãþľïÛñ齞‡w ÿ·ßâŽõý¤–Û_cý”9k±FÍë½x¸c}4x~»ËyþçxÇúäö3?Ë·1ÖçM}ÇÜãO¬ÏÛwÊÿûÛþ®;ý‰õyk·¯Äã#›b}Þʘè­J‰?c˜þmY ÿ>k…±âÏúÝái}Õëï[ëWó#gœ ×—ì…úzÖÿ{z¡ cßur ¹=Gä\_² zxÙOO¿Íõ%ö»È¼±§u<Ÿ3×—œ#óqßßø@ÿ>ë®/Q+—wÈÓæBbßuR{Sôû:Cÿƾë¤Èh¸î(\K\_"õîýþß·Ï6bßýä~xÆ0]<ü'Öë»W\wïS9†¨ïÖÅ>m£b­® ’ÖQ÷Õ¤cMÕk«[ò÷¬Šß6šï•u V½ëÙŸØîº«ÖpVWVÇ:9BÏÕ&Î¥MŽá·ÒæÂkoi âÚáy숮^¿±^—?'Ïcþµ¨¾ô¿O¿Û‰y®SXý~‡æi‰gr¾ùÛ~t ±-}cgè«ÿüA(VðœÍðÁ(——Ìçß–œë~æs ¬;SùüN×OŠq G‚X÷W¶V±þªL^WÂßÞô޵a˜c×—”ð<þ³ö¥ýÃ4÷[IkêçÞóëþÊçÝ{^÷LÜ_9Ú3ü‰m sì¼Dd]ßîÛù¬;/™6ïçá\Wñü:/9ÀV8ÞÉñ×C{0O«ƺ^yôggµÂßæ~A‚÷bÏÛä¼9/©¶:®«60o®/9åx/>Bõ»‚G ®;£4ê‹}xÉ:üìî“yÞ Á}p}Ic ¶KÃos}I—«Qöó‡íâo¬÷YéZ[VÅý}x‰îýŽ)´kV</9Åy×ÃzbMïƒ<q/¨†Ø¹*îïÃKöÍ”›{ž5UÇðî'W»ýÄÎÙb]ûŸü|þèV×jó<@û}¬%ÎK¬E¬8pÿº×tݱ¸ö™ûÎè]«ñ—7<;æ>j±¥|[Ìuæ2Ù»Õlðº¾N6ôSøy–¿±±N Ç[+÷ÕÞ§ßBÿ„0Ö¸®Ç™Ä·«ùu_5ÃYÇi÷Œýzóþ8ª÷={{ÓÜÏN ÿ’ðÒø* ±-úÚþ6Å~§yœc®ƒXëøÆ6ïãñ} ›µþ‰ Ý«&Di±®3ïÊ^f{ËÅߦÎaVA}V]ƒ¿Íuæý~7Ÿíþdì»NšvC¬DUÓ[ß>b}cWY¸îÃKæyç;žzXíØ·@ëCÛ[áu_ý¤:Ò3©˜‹ú~ßF½¿oÿg|/ÚÃKìÔa󺋼¯=¼Ävþ¶îØc•Õjô¸Ð[ãtô7ÖžX³Îëö:ñìTß—ìløâ%óIéîØº×råÒç³KÞ×Z¬“wNöÏcgŠûÛZx³Ü=èæÉqx]?k³4Äßãæý:n3¹§ëÃë¾Ýîïó ØGµQã‘×ýʇ~cÝÇp¿Aϯ€µ¾jíbŽçZØÿ¶á禣5¼›Öx‡Ÿ›Özk;ŽÇ¾ñºÎKtñ—a¼ê5 “ïüœÈ¥Û?¼Ê÷xgSÃ˹+Æzzß¼§EÚߨVy½§—jCLäŸØð1Ä\œ<‹÷aFýÛÍ^Ï'Ú‹òþÄzý›®{ގΑë™×ãÌ~÷9ßÍŽ< y=δÕ1Þn×U?S«¿—EÞ_?˜ðmÞé*¹r›~0oöz¼CöžMü< Z¿ÿ‰-¼®øy@w-¸d^Ýä;Çéx{©Œú7«kuc¬×¿S<“£0vãŸøÆÎüÛü<`ÔñÎOIãóîV1o6Óxý<@‡álFWʼÛ'ý}I¿¿…çÜçYÍõ%}ÀãîiU€ë:/9%2èõá‡ßØæõÒ÷yáam5ÅÆy@½Ï/ÖÏRæ›®/)Ò¬ñl†9™ëKÊ]üö5 jÎKV[ì9ÖÈÏšùy@aO,ÁùP3?ˆþ¿±bü¾™Ÿè½W~î/¿Çî÷:y>ôÔKc]w¿×#òè8oɱ~Ðæ¤!Yfs¿×Óëg3-í¹ÜïµEçߨž›ï'µ.\w|ûëœË”ž‡³ãl¦­8ÿ=ÇwàFÍyÉgmü'ÖÒâ<àÖZêÀ>µ/™•s¡6ûÔ"Ï/z‰óŒÁ:rÈ^â<àÖÓžØýo/q`¯ Üßþ%³Xö©ÝýKšŽUÒoã}pßÐR8ojÆû`ááÚ; Çy·†ØúžØšdº2ãôúžìj!vªñºïyÀ¼>ŸØ‚\º?¼Ä?{Þ ìí»ó’®‹l»óL¸×÷<`?(dÐm¦Xy=gKúmuNŽ÷=P¼gÅ:Çûê•;4Ó!´3Ýõ%«,òj#cê®/]„¼`Þ]_R¬’¯K¾nè'+Ç{4ˆõ< N2ó^¯ëß7Å™ÄÙ?ðÙñ~Â6+ckÁY]o¡3Ž7Ì9þÄjøÙ,0èïDî7Ö¼‡ø"·Oç±ÝyɲÁëÊàxƒ—ŒtÝ¡¼nðžQÕ§ô±Í¯{óÉÇ[³âþv÷Åî­ã< S›ÔûðØ›™ÿw¿‚dñÝûãØ”šÎ Óu£¿©æs§ÊXÿ¾iå}èÜÛwç%;e¸YæYâ°GìÎKzkô‹ ¦ßëŽÐ) #OͱÎKý‡ôgq¯Ü]_Rè¶~bÃö'ö}ßÎBpäþÝõ%³Ýç8ϾûÉþ%³ð¼Et+}¸îUǰnÔ|bßümêàÙAåkï:YÖ½>yÖÑ ô0ýá%ë':(þ]üz?akÆñå¾Ïëqö .Ð ÖÓ>¹Ïå±ãÊçŸvl·Gî)D‹sœ’bo¿ [=¶ôÁØÊØöÆ‚Ã<烱oèºö?±eJ½c‡çïÞUO¯úq×Òvy} ûmÊûÄZµuǾ:…ë\ZÖǺA+ÆðîKöÞ³ã·3Ÿ~ǾóÖ¦NÆîï®ûÎ[ë‹ZÀR{¹Ç«ï¼µ}ã+rÞÊ}Ÿ¾óvL¨æ+Æ=¾óV­Ý:›ur§†ØwÞvbwõŠ;ÖÆõAßy;ÖÐ{®†s‘®ï¼í™¸çÍŽ\Ÿ×_Ïà‹b§ý!Þ7×—”°DýÅrxb}œWóÕÇ¿zÞ‡wÞ zÐÝëâZmÅ{žßuÿ=|’믽ûÉõe)Ÿîj±ö¡ÛË'!#4ZÒ~›½|rõzÏñÞ–·Á1¸ïL™cÀ6áÄN??V³QÅyl·÷ûf‚žÜóð(^÷ý¾Y‡9ÚE>^c¿‡Ð[Fï›Kth¦gÝëq4ìícgYŒ}çí`\·Oæè^³7“¾>œÌëq´@+|p,s¯Ç‘u×><¥­Üx=Žˆ-äèS qé^#"ôêùc7±ï¼É9Iß±‰¹p¿Wé“ýEÎ÷ ±ï¼ýy°{O`.F)[Ù×ÞÖ‡QÞy“°äû«A†®m”æ±e€ŸMÅ~g”éyK Nìˆß6ñÛº ^dŸ·Þ8boXKFñyÛï7ùäj¼1o&¸½TÞ_Ÿ·_ÐúÅVãu}Þl5Ô3ôŽoÖðzœ“dþ6è ‡×ãh•tÏø}^£=qÚ‘ž¯ÇQAÂIOÀ†×㨮Êg§€U ¯Ç9Ï ž¥~gx=Ž5¬Q‡ÓvŽ××É1*û•Îûëë¤ÜgãçÝdŽ>œ—ì{)è73¨ÑÎKÖþÑäžü^ ç%g@­ Ëðzœ}=Í&ß ¯ÇYÑû7¶ñ;?¼g麽¼ò1ÆNÿvƒÓžGºñ·ù¾¤ÝÞGOÛ•×õ}É€ŸØÙ† Æú¾DzÖ}P¿3šïK¾Óâ?zä8£¿û’ZÊj±±5ögÚñjøîûɽQƒ~}tpÏÑ}?y7›ö0¦¼®ï':sy,ÆëûI›÷Z¢çx ÷·{PÐ Js>?ºçíî×|öˆ{åÑ=è·GùõéO†XÏ&jV,×›ŽáyÀ¯Þ3bÇàó;<°Rq]¡þlŒæùPÓÎý:ßùÑ#Ï8«Ô9ŽùÛ]ãx˜˜ñ›5<k£ãºs¥1ˆçCp]ã¾o õÜ´ ædûg•'Öóî±&óÂv½V'Öóî9ïµï” ”Û—j8/9ÒÛÆRïzé1=ï–ɼ»„+ñol N 9ïU>wb}ÞkÔSÚ1^Ÿ7mJþP.‰Ì‰õyÓÞNÿ±×]‰) ÁoÓï`½Þj¿X‹ëv#/éW_Ú¼äÖ=±óö4¿¼„9úŽí÷ó¼d¬ôÛ:Ÿ³à%}¥1´Ûo{Çú¼5Í÷¡Ú=Ç/eq.zÃo›þί.œãvs˜¼ÄZâf ãõuRÙUQ1\××Éa‰Ùì?c¼ÁKJIï[Åuƒ—Ô2G~Çëß·Óe’ëC±û·/‘5°î¨áÜi/·.è©c…y/iÈõN-÷rÎKNŸ5p˜R˜_/1X×Åø^2×Íì [ŽÁ÷%{ý[Ù{| ƒ—üÖÍÄ·ðÛ‚±^³Lbžê;Ö÷“цô7¶WäÒ#xI—{­Ö³eÃ}^R[Ç^Cçb컟´_±ï·ß‘t]ç%2:˜MîÏ‚—ì—ŸuØ{åà%{ð£Ûæ¾ÄyÉg™ü·ÖSë¼D+÷“•gÍ#xÉÄ>ê¤`L#xI3î퓟Â^R'9L7hdÇÇKÀŽ=>t #x‰ŽäÛ\¯ëy·&®¡¬ÁK欬? ¤€ïtjÒGð’½ñ#[áÙÌøÃKس´`8ƒ—Ô è¿mÞð¾Íà%¥*sÞ…\d/Ùùra½Þ ^R:óãÑñ^Ìà%µ’­tQŽw *ÂÚõÉXŸ·ÞŒ± ül/ønžØÎûëó&‰—Èÿ¼¤Üš§#m˜ÎKŽYªq œ‹—trVÆûñ©äF69߆ ÎEÅó;?^«øïW|æÇK:}0¦‚Ï—T^W;Ÿ‡à%ááþ'–µ}3xÉ´©äˆÂû¼$ñÔÚp9?^2Ù+9}³æÇKÀ×ÖZÀùñé\£ tÛ3x‰2›U„cp^²z?AQäo3xÉ^çVòShˆõ}IŸ•|}a]ŸÁK&ÎÎT c}_¢ÒQÃ_¬òžù¾dÉà·°ó™ ^R¥â{çC¨šÎKÎGc°üÛ<hØÛŸRòÅëz°ßpìÏò;ß¿sÓ‚ëžÏ.b=Ðv¯ëz¬pñü/1¹¿gŸ ­Ï ^r7ÙyÙ ööÓyI¯à´‡­€™Ïà%m4Ä®®ŒÁ5îõáôl›ÁKF_8Þ÷ëNð’±+é;¼D ÏyM ¯:…»®îÉD/N0ƒ—(|;NN&óŽ ^¢x7O®7ïsô¼D—2דëüÄú¼YMgîj¼®Ï›õZÈKZwìøbÉÊ\×çÍZ£þáÛ|±>oVjÊýûÔ;6x‰¬ÄÖ­˜/I÷¡ŽÖ¼¤Ž÷ DìÇKùÙ‰½çâã%%1¦Ñ†Ü±íc ‰Ù\í%OlwS%q˜‚ñçÅÒ=ëŠñú:©+irëë¤TzBÕR+bcl‰ËÝí_N¬ƒîäˆZ0ÇÁKJM d‚#Nç%<þèVðÛ‚—ìTŒ´6Œ7xI¿{jžµdAË:ƒ—Ôv¿Çgâºã¼¤˜-rå%Œq†ÒqÝJé ^Òá›dç8 ß‹à%Uoýº»n¬ëá_²º€Ã´•®ëze¹k'n¥TÄ/иœ3 þ¶à%u£_÷ÕÎKla¿£g_‚ßæ¼ä|O'öûßà%äò3Gçx—D+õ?{£5ëy@ôaüÃK xI©ŒƒgÑt^"jZ”Å<ÀyÉNgÈVZç~'xÉlŠóÍ’rœà%}ŽI^Â'xI[ì­4gå}ð¼{_ƒçÒ½rð’²XÒsç%û+ëx”8/Ùs"ôhìSÅyÉ~†Xs%ô`ç%ûZ:°Wq^2Qozòî)ƒÏ[±šÖIùxÉí]ú´[BN&/Öö™¼î§ R\·ÌÆë/1Ão+Íx‚—Læó¥á¬Y>}‰UÌ[á\‚—Pßמ½b—PótJÒu—¨*™M‡fO‚—¬bÔΰnQœ—œæíL¬óº¾NF‹Ê?l¥wþ6ç%r÷¸~j•±ÎKtUÖzRë._=ŽN¬_‰Í¼d'B¶ÝŠ/™cÖ â[(ÁK¬²öì³—ûí®IºeN&m„„µ}‹µ\¼dh%¯àž¼>G·¢“cð}‰¡~s<>ôˆ5ßsñôÊ@ìò½\å·°ýJ¹=6xɬ çXX×%xÉþBóç8!bC¯ŒõáñRÄóà¼ä\Z”NŸq^Òš6œÍLª/ƒëi¼_À=W¥¨/Q¥¹S¿#ÁKV»™£þÈÀž@œ—ôrׂ^R9^ç%§S@%/áZí¼¤ÿ×þòœ;Ið’ßú¬ˆÕÂu2xÉœ ÷¢¿§/‘Á< ~/ƧS ¯ð˜üv/ï¾ÓÑЃÿJð“*ÔæWÞ3Ï»Waýüiñwåd¼d¿Æd½­‹)Hð’%é}¢7˜/Yšt+²&bÛ›ô%óæ¼def³®m͉ñÛ óãŠÜ_‚—¬’õ—¼õÄÆ¼!ß|êõ±ÁKÖHš‘kkub-ž‡Ä ÆÌEp®Â½Îq÷^“_}É S˜‚ñ~¼dRÿpÀÇÛ¾jQælˆ ^2yÉ1;c?^²³™Œ ^b¬›9{#ŒÁ×ÉÏDðÏkÁ=óurOR®52Ü3_'« îáËýœ9/9¦z©~hà½^¢53G™÷o ^2¬'–)W?÷ëß·ß ì/#ýoð’RÒûVÀð$x‰NQöà%³V0èè þ'6t¯2 qi“9Nðò¨½®[Ã76x‰JæëÜ{/™Ð‰íïPA=Ž/ið/±s´ƒo@ðžaëiEÉXç%<›ÑcC‹ñ/™“ÚPXžXç%;ÉÆ^cÑ/^‚—”^•g>œ ç%§QUª âþ,xIô;úë: ^2ºèb޼¤v£—ø„o³/)àÊgÆÜÔyÉ~Þî3”'åÀo ^"¦Øƒïm~[ð’‰ó‹ãWÌû¼¤úºWÖîÈút Fß5Ì[ð’Ú­¤\ÏYð’½Ð‘­ æNÎKvIÝJ§öK‚—˜¬Eè4x‰•ÌK°—Óà%Ÿ9쟳|x¨hð•šjl°ÿÕà%¬S;u(i ÃïC1œûWöóÑà%'SXÐÎhð’V¨/)^â¼doL°XCxœ—LäÇžy1Öy‰¦³ºßëŽ~ú’Þp]cM¦~úå9ŽMÔéo=ënµ“¼äsÏýým‚\Zƒ—|Äùß^××ÉÚøì”Õy>^BmR›à©¼djOuT‹×u^²ß!>¿Êg=xI­«SK…³ ^ÒooÍó¾u¬;¼ä×Xõ—ÃpŽ?^‚<à±ìÂx?^²5. y–~¼Ä&Ö¨óª 6ö%8:6rØÃhð]d+µ Ö^—Ôî9öV{p û3Mºãoóýä?{dE˜·à%bÔ{~iáol ¾£@«¦ÎKZÑtÖ¡`ñ¼dï=ÙŸAqþ¦ÁK†VhFZ3Üßà%Í“üœ¥ˆýtæ {½Må4ôä%'Elø¡¦B>WÌߨ¹SÅ™št°W ^ò9düa+|ß‚—LÑI¶M¤Ž¯®ƒg‹ƒûj ^¢·Wð9³,‹c‚ÎAíøà"ïFœõØ ö·A¯´3è󒣩AΠ“Ϥó’Q“çÀb­œ†I½½*ŸÜ©Ü}Õyɨ’4ÿã²8±5bGÊõ®rÊÛìKô;ë` ³Cÿ ÎKζß–V¹çr^b2È@Œ~L¼¤ƒÅë± àu—|&w¿ßî<ÞÈÇPZåfh;nN+Ç£s¼¤ãLXÎçßÂà%uNÖùð^2 ‘5ç%Ç^t…}Ï,xÉÖ¸ç´à%b ¶"Ü?XðC éá%øÎ[ð’ÕÉ@™¹9/ÙéEÃþwp?iÎKv~Àš Uœ%™ó’A=ÌÓóï¦ó’Áz½½·O߬à%yì:–ìX'ƒ—tpðãuRx—tKš‘bw®gÁK~ûÊýêKZð’¯håo-Ù[c¼%ù?ô»¾Å‚—ô–¼5W½si ^Ò4é*Êe]vbcޒΦ¶~û—Xð’ÚÙ÷¡v½õ%6ƒsõ¬±›ÃXð’Õ“Naê­'°à%k&-ŠNÃVhQ’ߊ],ÿs¹£v'énYò‰ýô%Ü?Ô ûêq$irÖeÓwbÃ/h&^²jÇb̺ »äJ'6¸rI~+{ wlð’‘¼NtÜ5Aöñ’ì%#eb¼ÁK´%­ˆ}¼¤XÒ æ"xIÏšœ_ ^òuçø[k4ï¹^²“’TkTo/™mr-™vó> ^ÒÙàÞ÷-\wz-LzK­‚ñ:/ÑaðE1² ^2zÒ­Lî5‚—Ô)ˆýäF¿±_}·Byõ zbƒ—H¥ÖIÛ[ƒ zÙ÷\ÁKŠ®[ úT³/˜Ðœêc²à%R¾Ýƒzp ^Ò“7K­ƒc¨oѤ‘…žÀœ—ˆ¡6UžÏb#ÞVò9™/™Õ 1ö«³à%]ÈK¤ðºÁKªP·Ò*óãà%åî§v´(†s[Q×Q’n›gÍæ¼ä°ŠÆ3KîÏ‚—(jÌÇ£C¬0¡/ óÂà%µF§ÍŸßà%c¶ÄVPcÁK4œ§gÞã¼ä;Àø“ga +xIWÖ€HG.½‚—ŒÆü­óüm/F¶Ru0ÖçMÒ™Ï2å|Þ çþõ”¹b%¼YÈÁ•½P×ÇKÒÊéºñ¾uÃuÇ‚À ^²Je,½lWð’:8ÞÁ~·+xɨ¬þv*¿±ÎKþm¼•±±N Ï$Nmbƒ—€Å×DZ3¼Cç‚£+x‰uj±ÓYèúxÉâž`Ñ3y/ÙÏ/½djclè'kÙà ^bFÖ¨XKV«Á@5.‹Ïz𒡌ݞÉà%{âŒ~ÐÊØ=Çڃ弤6!™#{ÚnŸÓ¼ädQˆ­õÎMWðúWŸØËàÄÖÏÛ¸0V&b¿ur¦1\Ç@'¶Ïy¼7[ÁK²‡Êþ\,½c—ìå—óFÿß弤þ‹ÖǦ`¼~ ¶[é¸ÎK²‡k Ïoð’RkÖûyp^RØôá}wÝÌr^RFKš§Òç8{¹SJpWÝWÍP×ñ0Ò›]-u_µ™ülö‚qëÄVð’½/IKï¦ó’› ÖùtäK£¾{±nqçÝXS—ب“ZöÁ[ÁK*ré£GäwÈyɾ—ü¶ úì-ç%§¡ kSÿö {cCgŽR=h†cð< ‚ÙèéŽ}ŸEŸÔKëO«üvÛç:kwŒ¿-úu(u¯³á\z/égIMÒÂc°Ûd26|0jzÜA¿VÔuè‚Ï^£GÂZ¡Sh ç…V¹¯^íÓ4Tîi9Þà%µ¿§—ç-xI‡Îñø—¤XÏ»{§Ïˆ²ßí ^röpK˜¼doå34úé®à%íîUrœ–îƒÏ[…þ÷ÔÍÜçYgð1†bìrŸgí?ø¼5ø­´3ÞŽXŸ·n©fïëóvT¢I¯±ûq.~çånxb£ŽªóÜio«'bã}ˬ§ ÇëïûˆÕ¤uß±¡ç²Åo <‹Ž5®¯;FŸ²†~Âç Íu ‹ûö\ر¾Nšñì«Mþ6ç%–õÊín­{b]‡7’F¶£ÿÅŽu^"ðÌ8ýX;æ"xÉB/‡Órzò·IÔ· êl$7ô“µQÖÇþ\›2Ç~æ‰÷µÊç¡ù¾ä(ÜÀK&ç8x‰Á;¤=-µÛ·ƒº«ïäì7¶‡^ƒ}ÄxvpNüŒJ–ÑC%wF½tÇz&Å8Þð -ìn6yÝðÃëü^|ŠàßX V¡ÔŸÉà%«S¨²0ç%{oOVQTð<ôOg®ønöUð<8/9u‡¬…¦aÇ~u­±îvñºŸŸ{ô|¥“¿±qÞ]*{ZŠõü­MÖ”Â÷­‡NÁ’¿ÆZä¼ \CPK{ÜÉ<—ô¢[`LÇžôÕ>pNÖËÀÚ¼Ä*}Y=v¬çÝ–tЫs= ^ò)Z~Ï;ׇà%{íkìÁ÷"xÉJg–Ô†ží^\w‘k”uKŸòUMž§ke¿c}ÞöÒ—¼C®mã‰õy³Æu½Øe½÷?ǾÍçm2Ϫð‘ݱ>oŸˆóoÛ«¦bǶxÎÒYþ^€ë¼¤§Þ)Rc}Iæ0ç,õŽýô%Ìßöäb ;Öç­¦Úßo‹«_íÎà¾ä’‘œØà%3]·_òª¼¤ñL­jÿçTŽºÄcG—ûþ/)œ« þ¶à%š|\öu×íQ‹˜˜Í(±ÎKö'/éWûä}Äý@öýí÷/94ÍÛÄ=s^²ïcË%å>±Ñ¿[Ò~Òøœ9/)Šú”•Þï|ð’ýSýa¼ÁK ôó¾{}P¯þ—~TË0oÁKz³Ä=eÝs¼¤j¦÷+.÷;¯Ñ—v% \kxƒ—ŒU°V/ôQرÑgeu¬ÕRß7>+à¿§v²b]w^’êPÖ™JŒ!x ÏBO?îK‚—ü|ßÂjø¾9/Ã^N~›…ohÓt~Á=bð’^”>²&øn/©8—>{ÉØ8ï†Ói3¯Ø÷9/9ÂB^"Ø8/9æq©/"óØà%ëÙü™ßîà%¿…ß±,ü¶à%ÍJåY]—Táà˜Ì‚—ÔÂ^Ÿ]üo¬çݬ!í'MãxßyK¨3ÿ(Îo¬x,jðúSz‰XõØÉüâàXĚǎšú€ð}s^2úÄŸœ ×­ÁKöŽ{&?E¬Ï[m\« g§ àÇVð PôÇÙ±ÁKZOšä-õã%ß·Þ;6ꨯÛÐo|ÇÊçQÓÓ7€±¡/±T¿9n_Ÿk[Áúûµ}8±í‰]ááÊþŸõ㼤ã {ï×ÿ²â7Ö×ImÌÂÀâOlèðú¢n{p¼ÁKöËÕÿ¯û¼d¤ó–ÂiÕÞÜ#é•ñͪ¿¼„ûÔ†¾à;6x‰p¼cÜ^;Ö>/¯¤á³¼¤52&…†h/ýÁKŒzå½:àÝüxIFKÁ;ôñ’ÉZ£.Xwjð’YèÓ+ðTß±ÎK õÇ߈sܿד5ƒ½ñº $õ`®…ãýú-’Akç¼/1U°•2:Öç%½bïy´(øÎ×à%õþæ"x‰trû%\£‚—ØTzÎ’§ÖuRèuÒù¬÷ñï\ãxLÆzþ6&}èûS¨ÁKú´É)Æó¼D“¯}NÝ×Ç*ýK8oÁKöÝÅ•,0›ê¼d–¤m.ƒßBç%{¯AmóWmòûÎÛlèójÿò}s^²¿…56¨ÃÞ±Ãc—AÛñ94ýƾó¶7gÔ—êXw¬Äuó2±ê¼d6x=g·—gçqýõØšzÞÌ9Ú»üþf¿W«wîTgÌÛÔÌK.Â9- nÔs_˜nwlp®žúÍÌkÙ:±þ¾ÉJþ²nfSƒ—ìåw¥OTM÷aÞÏYðÔÿ¶9næXƒ—ô’xÔwðÿźoèš%1›^ïç!xÉ÷¥þ«ÉQŒ7ö%ÿ¦7ª÷}Ðòï}ðﻬ9OløÐ¯ÄgÇs¼¤iâ0{’1ßO®ä‹r¬Ë0†8«Y·2ñÎ/i–ú)÷=s^rZ %ÿê1îyÓÏ7tbýUÃYG ^²Ÿ¡/ ÷gÁK*jûÖÏ×^ä‹u^²?°^šíã”áõ"£ú™s¼¤Ã§ÌŽïƼ¤öÞ’W;îƒ÷ªÔƒB;C+A¶¥¼gÎKæH='úÕíØÐ)hôv›Øk/a/‡ãÇNPƒ—Яø)éļ9/Ù9:kw ÙJu^²ï¥tòÅþÁyÉÐκú”íØwÞ†,ú÷ÕQñ<8/õ±Ç—¦/‘ºPc³·w˜‹à%Ò´¦ZŽW#VRSîw‚—È`ÞrJ^ë¼do°ÀKêD>Ôœ—ìÔŸº6ãþ¬9/9^Ôvt¼›-xIUž;í`ˆí—Kë:xjûêqrÿyÔ©íØÏwF±ž]Äí‰ ^‚º|ýùì‚~c£?޼o«¦X‹ž7sQ/ŒuR¨Ñú¥¾Øà%ô1<=±8†_^²#5Æ/ÁÏSBÂØÐ— ÇÉñc*Œ¾ëƒçdzp.jè'KêºÒu—|+þ¯&r¥ë:/Y“º #ḟà%û?²¤7Â3¼D'Ï[ú©a€3‘8"z¿ïØÞ¥ÜËÏ/Zð©Ké‘[0Þà%+ð]l?aˆö'6ü𔱋ߖ¼ÄVIëdƒFJôPÆz°W3\×ÐófÇ~>Ó¨[á:¼dáœá,‡Ðδþ“Ú¨Ÿà%­‡ŸÂªI—Éõ7xÉD>?|ŒØçóÂ÷ž¨§åªç›JúÆ}Is^2+òÍóÎsýí‘wc §L¡9/™ôÐÖãA̹ð¼{XÕJÁ}^2Eèኾr;ÖyÉþš =Ix‚—|þO ö-x‰,ör¨ {ļDK]Ô—àü­/ˆ5èŠw¬ÏÛ¿ÔÍÔ«%ç‰õy›+{­®›k´à%3ó½Z>ؘ·Ôß´0…¼¤¥úÍãÚxaçš)/œrç±ÍyɤÇþÉ ¯Ûƒ­$Ïu{ÃîØš§‘t Úïû¼dô¤#íW;âë¼d–•rÿrÕÍìXç“û!"/1hÚç_"–ô´r3…öë÷*=éHofÓ~ëq Æ»3ÿ«Vcdž¾dÒ‹£W¹yIûô%Œ~ÛØŸØýfè¯q®‹1ø÷­¤z‘ŽZ£Ó“#üSéE×O2}Ç:/i+ÍźäÙ'öã%ÔW[mÄZœ·Ð;¯Ée tbƒ—Ô¤7šwßß­Dð`MÐþDݼ¤/Æž{KÐîû¼ä·±Ë_Ï—û™ ^òí`ÿzúÆçošØJ·Ö§/):Òºs•dœX‰½²%/¤Úïû¼¤w²ÌÓ£ò~&ƒ—T¡÷BϾ¡*túT#ÖçÍ’†³£÷Žõ÷­X:ÏØÛ÷à%}Lhʾr²È{ð)Éo° c%jϬQKeŒu^Ò&{}­’c£?Ž Ä~˜à76ü^¡á|z%#6xÉÞ¨Õä‰Êص;ÔÙ¬ÞÛB7Ès#éÁKöæûÉ5Òuýûf©–«k¯ó’ÚÙÓxUÞß—ôFÏΙb£ÿ[§_æÐ4^ß—Täöoã ^‚þYúóuxÿbƒ—¬ì×FmG^Ò5é£ëd^òUÙþ¾›ðœÝ±¾ŸÜSŒ1|í³~c£¾ùqÛ?—ïfðE¾¹çxA«Ö—{ÔÛ{‚Þ>ßПé%÷Áó€»qóþ®ÆëFSô&ïdž ¿­—O¯á‚×ÔŽ ?…Z„ÞX k_ð«ì$üÆöà%˨á¬è»¾cGhRÿãÊ硇N¡ÍAŸ2œuôà%ùÅѲ6^W#ŸŸÐ—ˆþ6Ï»ÿÅëd*Çày÷™„þ„™Óo¬ó’S¸Ç:ì–Ù—Ñ0÷}ðMÚ±ï¼áQªÝ~§;/9Bì ëX»ó’#°Ô—,ŽwÆtÛJ.×—œ-íHõ8wDw^"EÉ*Îy¬Þ±>okÔÔoæ*™=±>oÖkÒŒ\­Wþç˜l;7ª)wµ•;ÖyÉsÔÜ}Swl .—8ÌÝÂãÄ:çÚ¹Zb ý®oéÁK–R·rê:æë¼DSŸ /Û¼DÉwNôqÇ/jd÷²xŸû÷_¿Wò³=\Áý ^RY?´oý¼ÇðÕã(÷r§Å0bkx’0ïîÒ0Ÿ¾dËkÙûÙ ^òÛPõÏu+®ëúz³ôÓ0뎟f„×—ÜãÄzÿ·µÈö*;q]ß—ÐsàĶ›Ÿõà%5i;z-wM[÷UÓÔ÷w õ~&ƒ—tKlE+®ë¼äØeòYz×àuç%&¾·û—a}^Òfâ«5ÄFŸ•\ƒ'еuç%ûu#cª½wĆoh]Éߨü¶¨Ëä´E.Ôqb-<ÓY]o7ïëÁKjÒ¤¯Æï……Fg­çäyVw^2çPÖù¤ýdð’Z&u+Ƽ0xIQr˜.•±#Xëy }Kvì MûîЇþ¸…z;*½N5+=xI/ô{•Õ9Ï»kêM#þÄzÞ]àu=TÀ®ºó’Î^çè g_Ýyɹ"ÇYèç³c›ÇVö‡ð&ܱï¼uô{­¬UîÎKösÜ+õ%Ìý—ìëÒ—µSÇß—t]ìÏ»¨éÎKö\'?ÇÉýºó’~Ãÿ·n¦p.bÞ×j+ÐÿŽà%uñ[8àcx”-ÎK s´ŸEN0‚—¬ôü&®1‚—4øå¥36øä¤çì˜i á÷ºjÒìUƆ¾äöù§ÿØßú‹þÄú:)åÒJüsrÓ4†ð/¹×É«ù·­àÕ÷üçxÉðž/‘;‡üçè cýû¶7Æó޵–b¿ï[åÒ=s^r¾šzÇN2…á¼d¯G÷¬Í4†ž¨W¾ùÏÑÐs.ªïKj›`ƒ­7^7ö%è¹Ûd¬…|e_˜iŒ¾´ð =ÞÜœ7ç%•þ´§Ýd¬ï'[Og(ôõÎKš¿Çƒg#xɪ‰µÕÆØð UMú³Å1¸oè\wl{öÕˆ>™Fþ«ß‹ÑÂ÷·ï\üa´ðÁXô„mñºë«aÿãŠú‹á¼dVøWŸJ¿•á¼dßwö^“ïüè¡Shô/)ß·á¼ä4Nd ð³ÁKÖÒÄ@ðm=òn¡¯ZTwÿ‰õ¼»§:aá÷m8/9ƒYô·¿ýÁwÈ;o2‘ûϸŹX»ýK5L#x‰ôUYcƒ=Ì^"𯶧<±-®Û5Ó¼gÁKN…(êfÒ³¼d»ï•Øà^òüÙƒO¹ò·¼d¿ÐI"÷ö^Òkò'(W:ub}Þjîw»×EÄú¼•‘t¤:n½ý^bÕRîtÙTŸØÐeÏζê=†—ÌT«1õÖÃŒà%%×IÜvN'6xIòjo Þ!c~z®¤ȳFðö|rÃo ^’êqöÇæÎ!ÇÇKRmõþBßyìøüKûÍk¬û·}õ8“šÈ½Fõû·/Ñ™üí+XÛ^Â~¬'VúÉJN°·7«ÁK†ÒƒíT^Þ÷,xI©ì¼·zÏEð’i|~OK­rÇú¾¤¥z§“ÊÈkÑ¿EZ7sÁKzáÊiYv×yÉiÉ"ÿ‡Ög/ÙòC-ÌÐ8K5AMíÖh ç%*ʺ™6à32‚—´Ä^[iw½Þp^"Ö³g²6Œ7| 3{mŠw(xI“•z0¬%ÎKN#Næ"rá·>=õ ¢÷Í^R'k2?‹°ï{a‘¿ÁSrï¼"Öó·‰~û[¨¨ÃÎKF³ÔJŒà%ôÖ|úÕq žw/­Ð— Qþ6 N0°/1þw8/é³üÚ¦¥1xÞÝáwꌿmy¬-ꙣà%­A;èÌGð’ºÎßzïXç% þ0ãÔ-b¼¤ý@Œ>†#x ý5zöøÁKò¬~, x]Ÿ·®«°§ξFð’1 b«ñ9 ^2­&„É{æó¦ÉOatè•çÇK kÓŸ/4ò·¼„:èñ·E`þ¤~[‘¾3w¿¯çsŽüx~¼¤^yÀÎÑu*¯¼äÖ¯ÿÓ¾×í76xÉÍ£žÏnºnð’Û7éŸ}ÏZelèðî~¬;VÊ`lø<­‹íØ©œ‹à%£·û>bvÕ¦þc?Ux‚—¬q­QûºZcƒ—èµ—Û÷ÌfŠu^¢·Náù™#a¹ÛaWœ‹à%óö¶Ø±“üa/·Ð?gÿÀ¹^2ïúîÎ9$ŸÉà%«'f£¯ó’Ö…z#ß™ÁK~/ò±xêl¦ó’½¦jî¯w¯ÕÓyIÿü_íxêlŸo(s2áy÷lÑ÷!õÚ*<ËŸM¾¾Xk5fð’/æöXÈ#6ê: ×ê†H;ÖÏ»'ÎÎú€:Ÿ¼Dáa5~>{®ßØO§`˜ã¡à;ÓyÉ4ẫ"÷ŸÎK΂­téŒõ¼[ û=ˆgðKõ…ûÑü9/ÙOdE¬¢÷Ž}çMyz¼Ý&cÍc½E„÷wy¬vc êB§ó’=úŒLúMç%{Þ•>{ðMšÎKŽ-ëU9†ã` F¿×é¼d'þiþûü¾{å¼d¥~{¼·Ö}/¡?m=^H ±ÎK´%ߎ»ýÖ‰ Î5ÈaöFë¼äŠýíqrû{Nç%ÇXL’oÇí{0ƒ—X:—n*w¾9ƒ—Ì•ÎòË…ýOlÿÖKzûLx:/Ù{™–˜‚5Œ!ô%ɳs|‹ß} S¿Ûý[oo‹þ%fìÛ·Óž[Û1ƒ—ŒÉsô!WYȉ]áËš|¿Tî¦)ÑGLX‡²×>½ç-xIM}Ї•›1M‰zÓT7³ß·[+1ƒ—Ô‘î¯Ö[2—”ã´ÌûÐ8†=lYô?y÷!úÒJâ%}NŒÁë„Û ætÔ±îgÇy‰©Ð#¥¢'Öû¬´eI“cxv4ö“B-Õ~òîz²é¼D[b޽6¼oÎKd¥š«¦ÐMç%g#‘=}ë½ö9/9_¬š=rïyÓÈfî)ToV<õ×#÷ĈÕð«h©Wòèˆ ?…ªÉC»7Œ7ê:Çž=È §ó’Ó+Žõ› >éÓyIWäv<¬ð-t^Òµ“v´Â¼®çÝ z¹ç|“×¼»ÐÃuVÔ›Nç%m žãØT|7—œ Ë  ÷0ÎKÚþЃU¬ÚûÎÛø“k4î«—4éfì Àû༤M“~x†18/i:Ýþ³¢sÅol‹1ð pJalßf¸nòìœÎKšÂŸëÔåso伤z}®5ƒ—”B ½²§Å ^R/cë—ÿÞ³à%+õêÌ ƒ—,ô4>gîÈM%xÉW%ó›’kȧ/¹×ÃzelèKî^[¯c¿~Âùüׯæ7vD&êJÅó+_œ»ÇÉ?o#b—h½ž³£@ߨ£%÷œ¼[ïžš;Öy‰ÚµßùçéåËë:/YËÛ+tmâ¼ÄæÝ—öŸç cp^²ê]õÏ»ßA¬×›ÎÆßV©·—ê}ië]kÿŒgùRÇWw‹¹(èµµcãçîÍxØŠò™¬__Úûþ½ý`¬F­òýü>)>cÝ7tÜüáp92&©Ñg>²òóµ, ¶"-|CÍØçj¦X¯ï¾òšÅñ:/ÙŸyž rOiác8’n»À÷@Zäé|s' ±3ü ×Iz:Hûê:’/Š@³'-êZUz΂ˆó’S 2 ß7ç%By?ÛQŒ×yÉþ²Ðõ|/ÄyÉŸôËįëyw[ôTïô„ç%:àé;•c=ï–2Ø#¸*ÇûΛÒëDöößX ^BM¤üÆ18/Ùw³Q{ Ïdq^b~º§ ç-xÉ*ŠÚêô•à%« ½óè}#ÁK ް믌/b}Þtñ¬¹´~{)JðIŒr—*XŸ·ÙS½mw]‡8/Ñ.̇· ו`6É£q›Hð’•ΰÿhö"Öß7œ< ½Ïç%xÉhE“ÿÆûñ’äGºÓ‹;ד—”äm!W©þ‰u^2&ϰûžŠqdžïLò'óî5»cç·& †Õ‚ë/Iþ§[y¿cÃïUX—tÊúq‚—,ú¢Ì‰ëûË´0^×½jcŽ>+|N%xIK½v¡ømÑ—Ö9—ÚÍH%xIúŸïû‹õýä¡ ä;󮱑à%¿Iö¯Æeݹ¿8/mYã2nN+ÁKZM=›ÞÞÆâ¼d~Tànš2q^2[ª/lã*M9±Ñ¯#qÄVìæQ¢ŸÿdZ}wÄyÉ`ÝÌY«¾ÎKv.œÙvçýõümoæX»Óî¯ó’^§‚—Èèøv;/Ù—Hõ8Æï¦ó’ÓÊ¡²ÞµÕâ¼ä4ú¡§:}ÒÅyÉþeõ±c ÎG‚—Tc¼ë1ö·Ó {г¾ñ>¨Çî¹ÔRì;o‡r±×aÞ‡å±wnúøŒ@+,ÎKªaóHN°§u^²Ûà¹^ç^ÎyÉ1Fi z# ^RµŸ³ìo¬Ï[Užo~äë7Öç­Wre-|&—Ó,ÔÄwžwKð’vûÀ=ŸæNÁKäÖ¯ïT¬óºQ#×zv4 ¬%Ð_ÿ’ëlüŸõ#S~¯wO‹ç|ºýú ÷1'¨ˆíQƒ§È¥¿.8¿±Î•Û­3ÿçñíˆþÝ÷™Ï©Y!/Qç%§üÜhI眗ÀŸk_·²Î]Kô]oyw%Qç%¶úÍ vlÁº£ÎKN+ÉzÇ6ê£4xɺsÞsØÃKk‹~·Š9^#]·‡>•¼dª1Öu¯³“Wkýú¬TÌÅ-kĺo(µ>'gƒVç%;»ß!ùú—h Œž4D«1Öë:ê­Ó=õN)ÖyÉ÷ºýÕºOÆFßô:ÇKÊØ87EJûì­¤-ò€Á:Ÿ±à¹¥ÎKN‹owê׬m~µô™VÔ©ó¡fúø—(Ç qîO¿×KûõƺNa–ÅÞïþ0ê¼D­S3òuƒÿb—ì·ÂÈ@šu^bµÓ3¹ |ÇÕy‰Mœžôºb=s^bCÙ›¦7è=Õy‰{žzÞÁ÷ÂyÉþ!Æ=Ì*¼ï¼™¢W‘s2ŽW=v²7ͤFVƒ—(üí×y/ðmq^b‚=×:g3ømÎKv.œö©ç¼ê¼Ä†´T>ïÜI—쿎9ÎÞ+®ëóVSÞ*à¼dÕšz‹Â@ƒ—ˆPS¶Ç?0 =Lò#]õ>Wç%û{”˜ÂþìâºÎK4ŸKËœoð’:R ˆÝ=C4xIéÔvŒf·E?^Ò9†Ù¯’­ûÕã0'›2ï^³úù½æ¼ÓàÙ©QÓ“_›ÐËV—ìD”\CØßT—ô&ô—ÖTèŒ>b©ïΩíÄ=óózœë¢/Œ:/9ZË™Æp×;©„?Wç3)}âYw^r¼n“Û/S%úÒ®‘ïï]{¦ÒÃc”ñôTÅuÝWM­'Æ4y]÷ ­I‹rœÿëûÉ!ÔR͆žÜê¼ä,¿+ÕÄ ÆkÑ·¤%]Ýõ8ê¼DJåº3ªÜý„U£¿éL ÄÆÝ×H5úuô¬»Zw½“jøOæÞÎì­ÎKNCM¾>·†H—ì/79̾ݷ?­jÔôÄ•»Ý¾(ª¡SèœãrcÈë:…žÄÞ—ê¼ä¸bä,h0ÔyÉéÉMýïĹ“:/9KÉJ5+Ø÷/¹¡÷ëÛ®¡ÁKªòlQÙZƒ—°èñâ`þ¼d¤žç§wb—´ž¼©ÁÐà%³Uh%¾íúolè‚îs†ã§r‘¯Ç*Ïѵðž…ÉݳôŸ‡¯ãÙ ¿×mÇñ$Á¹žþöÇæóŠçÌ¢Ÿp»Ï»wì(` ý„õ^wŽ_}­W·ž`çC^2æ¼d§¼c0² s^¢ð1|b¿-|±+Ç{>»ˆõ¾ëv÷dÙÏCåý5ç%«˜òºcò·y½©ÜýPžXåýußÐqŸëØ^b5ú¬Ü¾Øçþ²W²Õ½S˜ÏKç=s^r”Bÿ¬©æ¼¤éÍ⇙ø˜ó’Sƒ×èãoBs^rÞ !?ÆÊ×_¤Ñ:s^2QüÏñpG´}2ïõì<ëk2Öë:ô*p=ÏÎjàžæ¼ä$vð¶Hþ¿æ¼ä,*d ôô5ç%ZUó+æÍyÉÞãóÌro ðü:/ÙߘAÏ— ¶bÎKŽüœu‹£æ¼Ä>ÐõËÌÙkÖœ—œlþF¥v^÷·u„Að¬¿æ¼dUäó'@ ©9/9GmÆo7¾óæ¼d}s¾=Á0xšó’Å:w=u>Xûœ—,wÓ©•Žwxì`ÊwBû;=¶5è5l)c%Æ[ ÁV9^õû`ôª,eÞÚ|s^²º°N¢Cû;Öç­Ö›îí‡]ù¦9/ÙYêq¢õ>´à%;Aä9dCÿ ^²³T—ú ^Ò’n»W-ˆýÞ·™ÞãªømÎKN3_Ö€@›oŸ¾¤­•ê:Æõ8½§z܇Ðs-êÌ÷Ó{ûXð’)üm{Á¸Ù•}¼dð·¿Ôû>/a¯Ãtû­Í·è'¼يغû_Xð’ÞÈÚvÆ1p]ÿ¾ieÝ¢~Íø¾Xÿ¾í}c» ܇è».’ôÊðŸ4ç%ÕÒº¾gòfb漤ÖÉz¥~Çœ—œvËÆØzçÝ&_Ÿ•T7¾÷å÷=“\ƒú’£<Àu[Ô–¬¤s ×uŒ…ÞUõñλŸI‰ý¤ÌÄ£P»cÎKŽÀ"3›Û7Ô$ú¤~3Sªá·y]ÇlÌ»Ï'±Ñß4Íñ)WÅo‹¾¹~h¬[×fÎKºXªa*íÎýÍyÉΆFÒ—¼oÎK:ë7¦L ±ž¿ áóÐn\xb=ÃÞþõm¾õ漤ÊJµˆ}áž9/©ÍØÇ¼Ìë:…Òó÷Mñ<8/)·éÐóÝÜk8/9ôû>éð­3ç%§/kaèIbÎKÊ1­‡6´1xxÉÞÀÒ¯XŽwÇÐ=6÷ßTœÙÃKN¬Ð[¾whíá%'öÎNÍ óc{xÉ1ßôØ/¡ÜýU¿n¯Ô OæNÁK*êߎ÷#siç%¥'ŠJ ½9/)³ÓcésãýõySø{®Ÿï|y@ð’oØþdûO¬s®~ó³“g5eìpÖV¯\äùù$È¿±ÎKÊ}þöxpOú’¡ \CX9/¡å䛕¹HèKÆÝçõä±=Ýߨǹ½?ù±"]¡/™£ƒÕ†÷b/9'hwì(麮/Ñ»ŽõŸÇwQë¼dèÍúñ§åFôéð$QöˆXÎKÎñ&Æ»je¬ó’zk8Ø8×OšÜ¼¤?¸±ÎKfâ0ËÀ Vð’v%Ïuéÿ»>^RbÅc—Œf¸J¾³>^¢iÞ¬3ÖyÉçlýŶV±‚—ÌI?ÝÚ±¦.ç%û¡Zà;ºÐ‹z/Ì[{ênýMïsÿÃÙ{m/Ѷ¨ªð!Z5ÎM¥²6мz/ÑÛ_ãŸ§çØ½î,ç%g/GTR¬óC½é‘jvÆÆy·¥>x¬-YÎKަûõÆçÁyÉþlÒGöK¥c=ïîVÁ×…Ú¯å¼dg¦sR³—Æ{æMö†~¤ç}Ã:¹^"§¡ª4~¡íX/9¦èð—;ú’õð9¦-iÿ@ߎõðyêçQË%ìj=¼äħAOÞ{öð9MŒÖ¢Fû³õð’3ÞB¶" ^½^"ç;O?Ò¦`Wëá%çº#ùüWå}ðyëûßòøÞsuŸ·&ò/5æ×žv/áÞèð»™Âr^r<R߇!ˆuÎÕÚÊuùw~±œ—ì@îÁû[Nìøô0Ô¯[5ÄÎÐÃÐ;䔿Ý÷,x‰•–|%æí¸B_2kMgãSq\ÏU’Oûs§¼>Þ/¸{²¬¯Gxöuìeîû¼Dý5Ž¥ä¸cÛ×džýßJ¿µù+xI[¬-9n÷s¼d¯$ôÅãÎM—ó’=Ô—ìiÇý ^RŒsas \W£‡-ëPöVó®YÎKŠ.ò³Óžä~v‚—œ ±·Lçüö:£FàTÝÜsá¼dï¡Yϰ§íÎ¥—ó•&©‡Áêˆu^R;yêggóëûÉÓe‰Ï™ÜŒi9/™:ÉaNÁ,îƒD=zÒ¸ì‡ý~vœ—ŒQÙ£çxã·E]‡’µM.h9/9^¬ÚïÐ=ÇÎKš(×Ô¡¨YÎKZ-3yÙÚíg³œ—œÖ`+ÕÕÝZªå¼d§©—Îñô»c]§ JíWkkªó’2ÙvõöEY*‘KSWÔãõ¼{¬•<ãêÀxíÔ"îœw¡öa=¼¤ÆO­°6œY®‡—œƒ¹Ôof/‹Ø—<¼äi[ÑË·åë:/)#õaϼå¼äè=qî$y ÃÇ€:ÀÓâÚñå¼Ä,Õ·ÔÖ9ÞwÞŒº ~øö%ÎKö¢H®aÊ}”ù¼UpÚScÎüÂ|ÞºñÙ<Ÿ_ËçM&½Ý¤ãìv­ê,gj‡Tƾï[9M"î<Öjalw.wûۮѠ+^ÁKJ3è@¤£Îg9/©ãÖ.>õ¨ûZÁKJá¹ÿ\×u^2ïoÖ¾5e€Ã¬à%è‘vòãŠsÓõù½A>ÿUÌzì¹)¾V—Û ô,³wÎp,þ¢ï¯0vÞ¹Óþƒó’ãPuÇ úVïXç%®§Œ%wD¿™ëç‘TÞõo;Öy‰Þ=¹Ÿ²ÝÎßæ¼dܽ«{ŽÎñ†?×í§ðúÓb-ö^¶{»Ï{}iÇÂýݯ8Æë¼¤vM㵎1Ôú1\W„÷,x‰Þµào)#îC ßл~þA_7ܱ®Wn•Ïä‚VmÇFÿ€Á÷bVåuÃãîôèwn†·c£_Ç,Дu¿Ç;ÖÏM×}Ž~tWèM³c½®c˜¡&Èš`.Zø)˜N²×…9nQÐéA\ìÖ¸ìX?ïÞ溎^E;¶(¨…)«0Öóîb¬}XèGuŽÕ=ç]ÌÞ;Öón-ì3la.Ú›wŸE\Ysû­ìØ7ï>MGÁŠ4<ÎKŽ(ZŸ¯ªô‹u^r>’` CÞ ç%u”û P~> ùûò’Ê>ær–"ƾ¼¤õ)8š`¤;ö·VàÃi§—$¯ûÎÛ±jï¬kÞ‡wÞŽ.çdª\S—ÔºÈ@®ã„ó–jKÎæ®Ý±>o}0çÝïеW>n·ïs¶ÆJ¾¡Vî1 ç\ûô1Ü÷±Î¹FMžÉ6/?Ò뜫$¯¿ñm¤¾X×ÍÅ1ÌÒcp>ù{pôç »áº®ç²¤É‘v•þœX×seÏ¢£Gìw¬…7 ›Ö«4ðÄFý[òOÝÏ>b—h7êåÎIÉ}œ—³göµ¯…±-¼N˜oîTiÞ÷!xÉJÞ¥û–_¾çmðïÛ`^¸zm÷óúiB_ì"xv‚—È$[YëÚ žØO_¢ôØ/W9û‰þo¥r íj§rbƒ—,j ÷òUïñ/‘Êœwõ¥÷xƒ—è"'ˆ&zb—Ø\x ·;±¡W.|~÷¾ªÝkIð’ý à³S:ž‡—”Ęz·û½^‚þ…ϳ®üm®3Ïz.>;òådZÇ@¬ûOꤗâ‘pÞs켤jªå:¤â¾gÎKŽ)dò|QÜç%{ƒ•±ž¿Õ¤Ééë²=±#øuL}\ˆêÄÎ` äžÇê¿Íón3žùìÅPp]Ï»wöCÝJ»½®w¬y¬¥ó€~µZ>±oÞ½“5z¸øJhq^¢«wÖã(÷ÎK´ÁkJÔ{pç%Ú&kt‹Vìi—èm\ûÔ óç%§ÿêf¾N¿±3Æ{×à27æ"ÎK”쪧݃+ߨ¹„µ0¨Þ±±ì5P[Ã;ov„½¼„¹´ó«þ´ô&ܱιäîÃôÏÓë›±ÍYÐ]cóýµ‰X×õI¯ÊýgÌÅò÷Mモ·…áÙq^re#Vƒ üÆJpÏsÿ1øœ9/9·’z‚>0oÎKN38ÁþµQ¼gÍó·ÚY¯7Xfmž¿ÍK€þôK"©ÎKö;ZØc ½wì N`¨yr˜ê¼¤Êâ>Jªp¼žwöˆí :Þ³7ïÞ{ÄIo[xvœ—tø ?ÚE0›ê¼¤e›i|Μ—ôïæá©×m[+}YKÁZí¼¤QÙo&­ÕÎKúÈ}ûŒïó’=ÞÆ>º-ý¶wÞN¡zò™ï;oïæ£cWÍÊÉ­ßy[¼¥ÞVŒ'vùו<>î>ŽGDðÆŽ«`ÕyÉÉÝkÚƒ¯{¼ÎKª&¦0N¿;¶;ïKgÍÃLôŽu>i}fÌŠëŸìÉÓ¡Þýv¬ë¹¬ÖÔçjÞùPu^²_Þ3mzó‡ê¼ÄfÒ¨jÇx}©×Ë‚/ë)fs÷ìϤ#6ü•‡$þ«ë¾ÎKö ô¤®·‡ëŽþÝ•~x­Þ56;Ö¿o{FgâÕ±ÎKè ðŒ¡Ý÷÷«ÇÇó³_ï÷ó¼ä.šzëÜ›` ¡/ÑtlÝ,¨NïK;ßÙÿ ãu^bc&Múè†Xï³²ï.Ç[nÿÔ뼤ÞgjÏ×›Õà%}¾cˆ ßÐ:ɘ´Ýìª:/9¯VMÌfâ·y]¾$o–Õo=×Q¸Gÿ Ö;™5̱ó’jºzÒú`r^²Ÿ·¤ÑåÎç«ó’£ä÷ØÀi«Ö8O쵃ÃTuÂhɯ¸_mN¬ë uëç}Ïœ—ìI¶bMïys^¢’|dO[{-q^rŠu©1lwOîSúü^·õ;çY¿Ÿ_ç%{Ÿšú ·‰gÝyÉi6Ïú øetñÄNÙĩÝaà¼dÞ‡Ïþl2's^2µW0•ö0ÎKö Þ°ßÑ^°×p^2xêkƒØé¿ ž³g¿¾°/q^2íî¿y|NSŽã¼älŒ'½KÓxcÞJöI_¯ÏÛH:ÇYÀ*ªó’#TEÞ}íåÞXç\ººÑS’{Úà%­°O…|Mo¾XßìÖ=Îêjð’Ùgã­äzÁKö¢ ­„ò\º~¼äö{4 “¿Íyɼ÷¯6Ÿ¿Íyɼó€§gŸõЗkÈÑ­BÛÑ>^2š1÷¿kVŽ+¸k kƒ¦ è*Úç÷:úèΞÆàß7±»6Êt€Ø¯Þ´‚Ÿ]gîo¬û—ôÛóä…¨•Û±½qsH¦¡ïK+Ð& ¼CÍõ%Çú‘}­ó·¹}Aسž!ÖyɾÇðÑ¬ßØýcé]ZÑ[tǺ^Ù*ùÎ8—nÎKNkFô?níö¨9ä.X…€s)ü˜NÛ¡è¢XK¬ƒÓ6ç%VñÛκ³8†ðŸ´»ç‘6aŽkÔÔ>©ðñÞ±ëßùÃó¹Á3Ù¾óîÏ™ÈM[sÂ鲦‹>m;¶y®w{¾½ ë:…q÷ÒùçÙÓÞkus^2úÝ#íø1•ÅØ7;îˆôu7Þ_ç%§‘sxœ—ì\¤ƒ¬Õñü:/ÙkTgß_øƒŸn©o¬,zɘñ™t^²7,†s‘?GûÎÛPxkž|³šó’ýA8ÇÙwï›ó’±$ù§Zá|Þõë§Ã£fÇú¼Éä¹Þù¯}us^r~¹F¹ÊN¬ÏÛþ?Ô,œë5ç%g¥¦ä×C%bsá™|<>cp^ÒkKuù¿½t"ÖyÉì–ú_èå?¹cý}kÙ7tÙå1zü+Þ÷x*}0N/QÄ:ŸÜÉsœ>ïü¢/™©ïŽÝ-÷N¬D­½Nz‚ë:/é…ý[vv|Õ€ìØ3o›ÐìÍÁgòá%çA¹{(>[W~7^ò˜ÌðÜI&¯ûð’Ó¼ç®Kz·£Ø—<¼ä$JÐ+ŸãQ~³^R“§Ã³uåzöð’Ó,V’^±=¼äl¢û ZWŽWÞØó_!V„÷AŸX·ßàsÜȽÜ|çíÒHªUæo{纠çÈ^±þÊ;o†í¯Ls,ï¼­VÛ¢æt2ö·ãYßË=ÌÃKÚÙŸñÙY,¾=¼äÅï<ë‰å÷øá%'©ê¬?^ çdíá%;Vï~(ÏýümúŸ·€8éÁmqOûð’v §Zpåüá%-ùŸØÑð}{xI;Pvåšx\÷á%Ç(¯Yã{Qp^ÒŽ¯;ß‹ýïûΛN[<›Iûj}çÍŽ8±MûΛíd ÏÃ>“úÎÛšª¸¾ãgüOYZkï€/àŽ}óî¤(ž³#ÏFì›w ëÜÓ^ÙyIû_lTèüƾyw“5“÷÷FÎKz»}ŸÚð’æ¼dÿæKÿûÜF>ëÎKv^§#yUr¼//Ùûº¨Sàs¼d,úD¿jĪó¨ÒX¢ÜË/ÉÛbÏæ-xÉÒ‰ûЭâ>8/ѯ©üŸ~Ì[‚—¬Âž!}ò9ûxIcoÖ0íXç%ª“þ¼;xI­¼¥ð{¼\Ï5îž„Ï'$A‚½ŽäkiƒûôÖÖJò{Å\8/9ùÆ0y–ßœ—” MÎùœßÞçkç|gð·5Ãyww^r tØï¶à9ë%ü•ïüâÙ ÆzÝb[÷ûv´Ø•±^GÕïsÞÖ‘pÜù[/QGukzwl×+Qg)à0W}Öœë®;øÇ~<;w¬ŸÞ< ÿ.2ß9Ùä·p¼y@/¨:%³ÆëzþVkÁçH×Ï 9¢t>¿ã·‚½çÑAWè˜úð~û@O’¾xWø”ÑÇE™÷Y<6a«Ào¬÷7Écg«¸³…>UÓu'ö;ó«æY¾vhCûŒ¾}ÙÛ¢AgÞç ýCÍ=Ú9ñ'–úî,ã=ó>+¥°>K{Ï>Ý7táìö0<îû\_2­Ò¯XtxÝõ%Sr_˜´Nº¾dÎÁïÛÎ[x]?­ç¾¿Œu½rê˜öSе$ô%5éφòyˆzœ[Äöjʸ–D=ŽIþ©ƒcpÿ’½Ó¤®¢âl¦»¾d ¥f¯Ã—jdžßká7«+xIw}ÉéñÇúr˜~¯kôüÛpÂïÕ*kVÒÙb÷zœ>½<ÊwìÏYI^×8ßì_œ™øúsìî÷Úχ“×]¼îç?Iç¾øÝŒþ8VYçóÑÍßX¯™t6ð;j??G/©9Ï,{ôîÂûjzônÿÒK÷,ú ×’ô“Â÷ÂûãÔ•4œ#í¼?NÝ ½$r^×ó7µôΓ÷õè',‹sÜÅøÛ"kɯ¸AÿÛíÓs%¿xA}wþ8³–Ô߉ïEôÇÚ“Ž‰ëä×gð̧üÍÉÞXÏßF§×ui•×_,j¶§07ýüKƽöÙÏ×~ó7V"7Õ™êÆõ8w­ÆÑG)ónç%uŽ†Ú³’r†󶨳ip ÃyI•™¼ ÑOøÔŒù3Ù;¼£ ΟXŸ7«ÄÂ\o/Y¨k>[•ÂØñùÃpïIÍÓ(Ñ¿»vø9ÖšbÝw¦5gòWîôûõëiooŒµðüVöήéº+ülzWMÖ´ ç%í¨ÀpÝtœ—4Ãwè”Ïq¼õó3Ÿˆ]iŽ—tÔ¡ü÷ÁŒõï[ÓÚ™_¤ëú÷m@ßw¶|~—ì=h…'TTÚÿ‰:áÂ^êaþ'6|Õnïÿž6 )6ü•õÞ?̼>ŒöíKzÊý9Ç­FO¬ Ï-­¼-úöÙíõw´>i Þ·o"П¯|ó7vø^^¹7ØŽu½²ŠkiùL¶ðÃ/ëéËûÛ¼@×êÊ|r4ÏN!6¿ÐúŒæy@SÍþ÷Þhôè·¸&µ3Ì[F< $]Ï7GŸ§Úzª-©ˆõ< ó³6“>"Ça]GcÚè3r'Iu(ØŸ}ìèƒw\£<Ó‘ör8Ýóî:˜›mŒõ¼»UzLr£1<ïnI¿>'ö;cxÞݳg½ ¯ywòᔊè1ÂÏ<õ±9çˆÿ?N èɽcç瓾˜Ks.†×(Ù÷÷whÄruκëó6kòZMÏÎÇKçM'ö}ãã%ÊëÁKZî7󤼤v®Qº U/é쇢è}¹cƒ—tæÝŠþ;6xIŽm|Öƒ—hÊ •žqãã%é™]ÃÇKDKzÖ1oÁKr_#ŸùŽ ^’ßcædãã%I/7uð>/ÌM窃F?Kæ…S”±ßî´öM®}¿ýq˜ëMj…ÇÇK’o}w¬ïKr_˜I¦;>^’òÍÉþ¼DsœÂµïã%K’ï-´#xIoÌcÃ@þOlð!ÓÝî¯ó’^jêÔQ??>^ÒZ¿ó/I^Ì~™:>^2[ªw‚F`/É?j¦µúã%²Ò³]ÐøxIZ£æ«ù[bƒ³C‹2>^’zMòÉñËKrOnîÏ~yIO~bƒ¿-xIMµ\ þ0ãã%ƒß€oGñÅ/Æw¾ ¿/šêù}¼$q˜šæøë³¸×(Âß¼¤ßÞ¥{n)ç ^ÒWÅ9dÕ¼^Sö3È5ÆÇKÀl4kFð’¡½Ó'!æ­5xÉ æÇ3xÉD­ç±¤ìŒ­ÁV˜6xïž’è­°÷ú5ï?ú¼Yk8ûªy Á'{–*½ofð’Ò&¸Æhi¼ï<ùCEo¥뼤͎zÞK{ðÆFßuøh‰¢0v}¬˜¦ýbƒ—jÁ¯ð`¬¯“* µ“:›é¼d/ ãUžûÏà%eL¥Ï4Ÿ³à%u)~Û÷ºýÆÆ÷­/ÌqeÞ=ƒ— ô»í?!,ýëß7?;6F)Öy‰jKŒôÛ‚—T<æ³¼¤Ïn-Ç/A}÷©íãx?^Ò'kH¹–Ìà%CÙG76bƒ—Tê@¤¦ë/[ÑÌ'gðÓïR©é·/)^y ÁK°7²Ÿ™Þ¡— zÙ62ÒùñíˆýÊß~c=‹>{¥"o™/Iµ…5óã%…yì^£ ±/a[µq ÁK*ûjÄäOì//áwÞ°Gœ¿¼ÄÒÙ ÎßæÇK²&G•÷!xIK>ô{ûùñ’Ü'S¡™/<žg·óã%Ù—ur.>^’|F&=žçÇK$õÊè…× ^²èO ÔÓÎà%™áÉꃡgç©¥Flð’Ô×HÑ|Ç®÷´;÷Çuy Ï|gþòæ"Æ=øœÿ_Îe¬Ÿ/iÜ{š@§0õ%ô¶°ôúI¾¡†=íüô%ʼÅè»8—Ì¥ÌER­Æ ^bšîƒ¥ë®è #é·A32?}I¯%Ý/Í} Álæ§/IŒéxí"Ö÷“Ý,k´ðœ}ú’VW6Æú~²ˆ¦¾FÈ¥ç§/Ig©Â ^¢c&=×â}øÎM™ÏËäuƒ—ŒN%“ߨO_R¸'Qy]Ϫð+<›™ÁKJ£W°d~ú’Âz^aýñ ^²¿ä%:ùÛ$ôl`6óã%…üwУq/™>È£(Ç»B+‘4Zú¾ùñ’´?k“ûà%=1¼jCð’ž4{{·ƒç÷ã%}$bœ©Í—ôÑè©Ã½ýÇK=u4í׃—tœ±êÏâYèüõ{­Èª0gøx rSùÔŽÏ—àyx[ù]±òñh´Nÿ–ÊØà%ƒÚü¾Òu?^rû’tÝ—(5Þ¥06Þ·ÞÀ*’D>^‚yk?ƒÚùx‰ýâgºnð’5SÝxúm¡/©ÔÿÊJcˆurÒ“}¶I…ó[©Öžãýô%9C_)6x‰RO+Ì åÓ—ÔËþ-òéK$ÕÚ÷4†Ð—T2›§þÆ~ú’…9îù>|úzf|vx¿±¡/™ì5°È£ÄyÉþÇMX£ÀûðéKnŸÞÃû¨ý’—Ü>.'Ö8†_}É*ÔhñÙùô%6µ_éºÎKû³ù3óugœ© z㦺/q^²³ ö…äg¼¤VCM¡7–/isëq8ÇÁKúíƒü_},)ïØà%=óìGéã"ÁK¤°Îg¤û¼ä¸ˆà;´øÛ>^’ôÊ…u¼d®µTÆÎÐñ3߬ôŠþåo<ßlÕ«‘¦¾šÆëywI·ÒP /Y©‚A{ ÁK¾*ñ?lEûÕu$]ñ¹¿/I‹Îåã%©ÏöÞÂvÄŽ`\«¥Á×G‚—ÌÔ Udr¼ÁKÏ!¿Nh¿±ÁKFIä›òñå7Kg·òñ’ô}³¾#ÁKfKùq‡n[>^b%åè…×ykär+݇—HϽSðÛ‚—ôš¼@™‹È§/i麳1öÓ—p_½´ó>|úÏS©8³”?úzÔ°?™üÖã°æjÑçI>}IÊÉ–q}øô%3Ç"—–ßzêûëPäã%I¿¾&X|ú’–ÇÀ÷íã%J Õ8Ç¿úê×ìümQ#|7÷s†9þx‰±öl±E>}IO¼~WòéKzæ}‹±ÁK„z¹U¸þ/ѤU³Åyûô%ßS®ÕŸ¾D—ÎÛÇK”¼Ú$݇à%¹'wçZýñ’NÍSê«!/±ÄĨ“O_ÒY³¢Šóùx‰ñü"õ«“—$/qUÞ‡O_RÆø?êåã%3éå:t òñ’Ô;[‹2öã%‰ñÓ¿D>^’´(Ò*Ç~ ‰áMÛ–—®;©£|¼¤Sï9*ŸÉà%=í£zçwóã%‰A· n/ÁKöÞˆúöFà%MÉH ë!%x ×Ô•Ï,%xÉyØïØÒ™/ièUôøp2Öç­ãœLzƒ‡é8çÔñKð’QÙ³)}±Z>]Фç!s= ^2'û;…8ðO¬Ï›tÖ€LÖ>hðm¥R§ Œõy³ÎZûÞÒoóy[ƒëCb+¼¤÷£¦ûàëä1ÀsF¦ Ÿ¾¤7äz•þ¼dHA¯Œ¡Œ ^2WÿK Óúhö\äX_'÷&$­“)öÓ—Ôã´–b?}Él|RlèKFGÞ-ùºÁK sÞK·òƆ¾dðÐX#¦/É5™3ņ¾d¤¾d6úéK4õrмdüKÏ]Æ/IýÔ ©~¼d°ö,ùúè§/±ŠE͈~¼$yEŒžÆõ8sAS[º¡/YVXÈwóã%½äËÊØà%s¡Þißã—`ß÷/l[yɽOÝÏdK× ^‚úîã…Äõ,x‰õ¶RømÑ_^ÂØ58/©š ^2{>ûšŒ ^2S_Oîaôã%:²E¼Dɘ$_W¿ØTý¯/ùõÿ0äÇúñ%?3®B?^Òy¾i¬…Ñ_^²R[øáéÇK2'PŽ÷——°ßL)Æñ†¾Ä¤’ñƒÙè§/YÊþ¼Æçìã%eð{A¦ Ÿ¾äö3úîðÝüô%SpPc§òúá9Ãg+ñÅ~ú’ÆÞ4•=ÇôW_²$ý6ClèK¤t^üWƒ—Te´Ê¾úéKÀ]láuãû&¼n¡FK?} Þ‹ó“ÎKN+3² ]ƒ†'IâF®¼D&÷“‹=lõÓ—tÖ“}ʦ/6xIÏ>ÞÆñ/i©¶ÄLLƒ—á7ÀÆdlø)´Ô³‰Z@ ^be$¾f®ÁKÄÚÿÅa4xÉÔäó$ð7Òà%CÉðfz烗ŒB=×X‹cXÁ5’]å^#xÉþ^ÐS§¥Øèß=¨Ëlì¡/Iç •ž[úñ’T˜úIèÇKŠb?9÷ž/©÷º¾÷´} û|Ï‚—(½KšãO_Òg¡–Š×ýô%vsûééy^ÒQ¯w4Ö ^2¬§ZÏÁØçYÜ?Tj©ìÓ— ×aÿ)ä´¼dÕ.W©»²O_¢cPg“~›ç;yïôË4ÆZ0ö«[Ƶ$xɯäǕɣ,x‰”O¨ÚcëW7¶½Ò\/1œèÏ´t]Ï<;í§R'fÎK¤ÜýŽç™®/ù:Ùýöæ÷Í‚—´Æ³º2P»cÁKzáþl§o ±>œ}I!/icòº¡/Y^b©Ï`»²—ô¼öñ=þxIêq}Õ®¿±ÁK’oè"×°?¼„Ƹ'øxI§G5>/™ÔúhzÖ?^’ÎÆÅÒuíóíHþÕ|Öƒ—dmÇ,à¿öñ’N}Iòƒ¶à%5Õþæu'xI’|dQkdÁKjO^ì¡hÁKvÆ‹zœ•òùà%§ÈæÞ{µã¼¤Î±¨ñæoKØÿ­çXµäîO¶~º¤X‹5JØS¨Oþ6_'á¿óôaB>´>}É`$›¼¿ÁKÄzm••bC_Ò ½¶ò¼9/i§‰Ì›rÈõéKn½ÑiÑÓo } xIË^Áëó/Aàóm©Œ }É}>ÿOÍÞ!ëó/ÉsAޏ~ý^ 8LgO¡õñ’y÷Ã^Yë³þÔãèÍÚ™ÍúxÉíyøOÿ·ë/)< ]96x‰tò_K±/á7¶ã}^2Sÿ¡t¿zœeØIM× ^]ñimõäã%6Xïĵzýòƒžô¥Z/iä0ž:ë——Xe ß¡—ÀG@~„5™ëã%8 ÕŸÙRlð’yŸwÛOOëúÇKR¬Q“³>^/™u|}V’Naç¦÷~r}¼ÄXSñ}ù¿ØñéØW£±¦x}¼${Ùò|~/É{¹ä{»>^¢3õ@­òúx‰‘ULÖ¯à%š¼o„Úü¼D uæÂ3áõñ’T÷u¼Œëó¦U’êfVð-šÎc‘¬—ôtKN°‚—HMçÇ2yÝà\£&V=íúå%±ÊûûñkÌc;ò‹õñôyòM^÷ã%‹üañYÿ­ÇéÌç;ß¡O_‚^íôˆ`lèK”ÁZ¹õñ’i©º õñx`¶ã»ˆ9þô%ІžUÈqÖ§/±¤ËLóö«/¡Æeï¬O_2òo—[ÁKduŽ!=ë/©ärCá…´>}ÉLÌf¯ë¼¤*Ÿõ1¹–8/Ù{˜Zÿ—óÍ7¶ÆÞ(]÷ïùÐú’¢x~½Vð’ßfÇ_lÎf/ÙoÛJ±üm3ìØðéM^tô2ØêÑÏGñÎóÌ}ÿñã%Œ2Slð’»~èô)–t‚—ܾ·ÿZÖS¦š†–ýVpÝà%²R]]¹½Kw¬çÝ:¨íèð`Û±>oGqC¹ÎëŽ/¶$­0[ðËþ}w ÈQ?{lòOÕj¼®Ï› ûT|¶¿±>o6R ?jÁw¬Ï[îK»†a¼ÁKTY£K/ºëó¦MRÊ}Ö¼cƒs¡õ“·ày^2ÑCüÑU ÄF4píIÓï›ñ̽‹ò>Ÿ4îF½ÏÆwlÔ¿ÍÞÀsæ¼D j¶[òßÙ±¡/1ú>á{pºçÆ:In$Õ0^ùêé/'ùº¡/Q2AØŽýí'ÌØôœ}¼d1ß”Ñp~õ%le¢ŽjÇ~~¯¼g‚~ã;VÿõÛ}bçdlèKÀ=Ïu•÷ì«Çam”@¿cåÓ—Ô4†¾ðì|ú’Ä*>7½ßØà%F½‘ÔÅ1/121)\«?} <}O;xåuƒ—,^wÎyûêqà©ÞŽcƒ— Öë¹0/ÑÄåêÄõñ’ÄÏØÛùˆ?â<–×íE1o/Qò¾ÏÙå7öã%dÅ­ò9ûx‰¥¼É5õã%}¥úB>;ÁKÆJujðA>Uó¡áq5~/‚—4cÁëdÇFÞ{ÅÕ‰oáÇKªe¶‚ñ/)i_2çøã%Õr_pÌ…ó’²”šÞ†ó€Û=vÒùfˆØá±CXß]™;9/) 5b§žû>ç%û}lò1xIÁÚ'?-탗”Á>º+åë›·T€3ÖóõKa?æ…5xI“™j« cç5¯úÓÈ@jð’q{RÿS“ÆŽQ§VëµÒ8†ð ª·öþëo¬„çìÅ×ȱ>oK¯š«£EaŽSƒ—ÔÛcÿäó#Ý3_'´=bƒ—ì—ÚÊØÐ—€—\yë¼Dï5õäÇ–ÆúhræÏà³^?}I3IJŽjdž?×­™~®Ë¹øô%`óçk™÷ûéK®3Ÿ3†–ÆðéKã­Âyûô%7ïÛÿˆýšÏ¶*Î|î1|¼d26­gõ—— ¾oÏäÇKÖÍåžšWÆê¿ö‡<|g¤ë/™õC¬•Û±ÁK*k>ùäwÝ—ÈÿÚ7õ ^²¸ŸLL¡:/9TêaŸõ—À·ãy­¼9Ãü)Æçáã%¨G—ŸJŽXƒ—ŒÑØ©§Xý|;ðݬéù ^"8oY?•̦~¼d®Ü3úÞïÔà%:Fò[¹Ïvl|ž¹]È»kð«ìEÒÖÝ#bÇú¼™°¶¤/0…¼ä׈åOEŽ×çÍ”õCR”×õy[©7ÍÎqb5Æ@v¥¢üm>o{K›êò Çàó¶’6ÿSA}±ÁK¾N4ê[no–¼DÒÞž{åúñ’ɧWäN5x‰Ô;9ÇÁKjµ”óV<;ó×/ˆ{.h±w¬ÄZ"i&VÿäëBðËÑeÇú:¹`Ì…5áxÃçIZçnýƒÕà% ~ÅíôUÆ/)‰m~Ά¿±#Î ùL s½ê¼¤šxŸt<ÁKÚdÝ×X×ýtæ‰ev®ÎKêJ쪛`Þœ—TrÏ ³¿üúÝ’ >õI—¸F ^ÒûJ~Là\5xICoãmÌuݾºŽäù=øn/)¹Ÿ;yIµÈ»5÷ÃæZâ¼ä˜¥ZZ0ê¼dOñL¾¬÷lyìà™D]cp^R¬ñº%­%ÎKöujaò>*x‰ öÑ5á1x‰A÷*GJÈØà%` ó®‡|cƒ—LÖ¡,Iã }I绩)7ýô%-õÙî«¿zœRÙW#1…Ï¿¤ä› µ%'w O_ê*„Œöù—Ü~6ÿ<¬˜±á_¢gù µ%ÇÒY…Üõ"§&¨1v|¬ylYi¼3zø`”üÛb\¹4k˜v¬¯“C¯½ç?ò#y¼áót3è;Vºg+ja. ý?'᜗ôRïÚ=VŒïÛÝ×ó\w¤X?øT¹¿×ͱ_½éBl«œãà%z¯%çºù·9/Yw]ÝŽ-%]÷w_2q;ï¯ó’ÑìZ£Ž/Š¥ßç8·§ï?3õŒÞ±~Ž#·ÏéyßÐ7ÊZð’ýÉ"çZüm-ö“·žàY^øü:/Ù{ó ^2-¡‡¶YP•Ÿuç%sÜýÿy˜9cççõ®Ñóo“¯×˺Ç[¨/iÁKÖ$L ¤µ87Ìõòsæ¼D¾løwEnÔzôYiÜYº¿=ü'Áâ†ä3¼db¯1ó7«/\W2OmÁK´ÜúMž/;6t ðt°麞wÛœ8gPK¿M#Ggîÿe±'hÁKVaO‹Ï­ð76òní©îëö9Ã'VK:ó ¤/Ù‰ëö´-xÉJýX;¶ÇuyΠûõæ¼dÇQãò}cßyÓZ¨EY]ùÛįÛjKÞ ±÷ŒÞU&[èK};Ú¨oèKFŸÿ‹Žô‰ ^Rõßnô7¶F'êÖW”ùÅFý›’),øîØèGÕùίµëä];ù_¬go쌚Á ¸Ë·ù ®Ü¯k|/œ—Œ…ßÖÇëß·sòØ^ñ¬;/9M…ãEnÚœ—ìú])¯ë¼dTᾺ–†ys^Ò×ô—k)¶‡ŽTxÐKýpƒ¨¹óîãÏÕyÝO÷Z8¹Ss^Ò¿7æï³ƒy ^Rš‘ï ®Q>Ég5>¿}V¹†QãÒ4Îß?;^ˆ  ô 9¼Ï™~¾¡¼®ôÅ1|>Ô¢ÌFÚt|ž‡Œ¥°iÔuèHÚÃ¥Q×Q+µîeñº¡S˜=yõ€ï´à%5k0*¿-ÁKʤè²»ÇÉ1BÜt¥zHäþÍ"ïN}iÙƒyǶÿ_>¿ï.æØyIÑÄ×GWŽÁónmìÁÑÌð<8/Ùÿ[Šˆ•¸nƒÛJ{£à% _aûùþëßX‹ë.0…µRìŠû`𵜬¿h/©³þ/þˆolÌÛ"OÕ´_ÿô%ƒg3IÛÜþÔãpí܃þ%³ÀŸ ¥}ßç÷Ú½$݇OTà½`)?^2ý ª¥û`áL]|K¹Sð»÷©;V™¿uç%Ì)"‡\ümÝyÉÎ}òî¤ièÎK=(ôǨ'èÎKÎ"£ð#]éº#¼8îû>;=x‰ÝkÉ?ë§’Ùôòù<)±-ê»oŸÈSkÄ<¶/ùM²¿u‡<ª/Ywï÷ããBMYoŸN¡p.à‘»c¿ºŽ»Î]~¬¦ØÐ)¥®·Ð)XªU^)öóŸdorášÚÛç§PñRMs~ ð€Ÿ·Oï¼Äý@µI=xÉÒ{¿¾ß!êVºó’›VÔ…µ‹ÝyÉi`œüSo/ºy·1¶5ì{¼{п7ð‡î¼Dë`ñaÂ1xÞ ¯žGÿÝkw^²¯›4 gîÝyÉþm¬»¥ÜùXúuomö&cë¿áh°—ëÎKÔhIÛŒû;bÞ°ç:ûuáx¿¾´ yaIsú’Šú–“›vþ6Ï»©Ó=õ›i¼þžì‰µ*cC§`‚:µ6·ôëä˜ÃNéð<8/™¬îG‚ûà¼dï cè ;Öó-¬ Ò>yÖ—_°¾¥qÞ4êò…žf³BoÔõóŸìä­®á§`¹ü¬kÔˆ&¯U®;ÎKöÏû[ xTw^RTøÍ2á:鼤Hê׬­ð>xÞ}šƒ%¦€ys^R¦Ñ£|T®%ÎKÊL½’[GME^2;µE¹¦/™`Lë§R§Ûƒ—L¡N!çÁK&ülv¾™öFÁK¾®l¿µÊ–bƒ—(ë¨VÊß>^¢ìS<©WîÁKL çþôܱ|ý:¨ß1ê¹F ÿIíì ÓSlèÌ+ÏÜ•,s´ðSPîûR>?‚—Pÿ;î^$oläݨ¥÷žë‘Ç ê —¤ëFÞ _5˼z´È»á+±~´rŽ—hSÖÔÂ÷Øy‰öJNÐÒÚç¼D[òí šôá¼DáÓûè {ÁKzêm'*¼nÿ®Ëó¡Åõ,xIöšý”Ñ¿±>oûÅK=*±>oÝxnZWãx}Þú­7z|p>?‚—´™=Óâ}›)ÏJ߀¨Ça]óÉ瑎ЗTåu{GŽ3ÆWG•òy»}ówlô¶…w~†ëd-Ã0Þ3ç%sTö®Ú‰8Ç+ÑcŠœ`˜Í^RTØû}Þ3‹oÖÄuÓùñ¡S@ýE0Î;C§úr‰ñ;C§Ð÷W¹Þ˜¡ShÌ»…ùü˜¡Shì»>á{{zl~ç"Œe½È˜QoÚÈD¹7šqŽ3ÉfåZ2£_G«`+cއнÂ?êÔ¦ß>ôÆoK¯à“ÃyI«J¶Ý:øÃ^RàtxçØyÉ9žg,ë†|yë뾆ó’½!dÍÕçêúë禽ÒÃõòU{c£ïj'®"݇¨0žþ0$ꌼ¤E _lœwäʳüἤȠþáòýzc#ïVöÚÚ~¬;ÎKʰÆ^$‹Ïoð’½ eME]¼®çÝ]Ùö7Þ³à%£¥>mÔ]à%}ò[*sœà%]S¿º´÷ ^ÒÏØuÇú¼ÁÇð¿O)#bƒ—Œäż:÷g/úh%½ý^¢å>=ï÷©ÁKÄn‚ÓK'w|õ"ô2H{û¯§Ö®³Î}„ÉÎp¡3oùºŸIGÞò¥…¿±ÑOøÖúœóù™îoðÉÅœlð|s/ÑQ›–Æow𒥓ùæâ{켤Uè jöÎKZ¯•¹´@ó4VÔ¿µÅ¾%Êu'xÉþ˜áyèsñºá¤ôâèkr¼~pL3À®à½c-´€‹±}q¼¡S(V1ê¥g ‚ žYÎ:éÂXèϦó’\ktê^§ó’qŒÒ}ˆ~…÷¬-ø~Í~æ¶0o=óvlôë¸ë„O,ó–YÂOáÖA?Ï/·f‰ó·ÛOáa+•¿-ü´ƒá¥é¼dÚÍSF€õ³†^Y+ëqè2—ÈG²¿ug²þbÖè€Z˜·Å0b£ïC¡7¬ÔôÛ¢>ëÃÙk¤ßöùÞ5+§æ ëú ^²„åì'¼c=Ûö^i žwWô’ì©'ÖI2#‡\“>Dœ ç%úuçøÓ…cp^ò§ÅÇjº®çÝ:…õ£Zëy÷€¿Ñá´¨kžÁKöÍCl:ßœÁKŽÐœ:ìKfð’9Ù³”=Vw¬ÏÛ~ù©=(“cðyJÿ’Õ°ŸÁKv2-ÔÞ¢>`/Ùï|ê'!¼nÌÛJ¾‹yìŒz|‡ž³f|ßfÔãÌÎ\oHçxý}ûÔòît¢_‡¤\9ÃìQGeÔºk…¾d:/™ ðËgö¯tò3GïK›#t ³ñÝD›[ƒ)TädûyÀ39B§`ã]d6s|:…ÉzÞÚxÝÐ)$Ÿ²ÒQ1Gè MzŽÙ0ÎKú‚wÿ©)FÞ2Gøbw2›Õ±7šÎKú‹ºânŒ]Ñtñþ¢/âß9'¬}0ôYÙ±õóܳ®‹ÏŽó’uóÙQM×íŸï"YPåºã¼äho%½C¼®çk°e°îk:/9gb‹åuC¯Œ•‡UT^×þµûá|vfô¨–Îyá ;%| +=rÓYþ”¯.ŸõYZàƒ<%ò7ëô„j…±‘¿¥z‘Aoãé¼dO0};zLíØÈ»+ûÖNç%%³í³ Öóî6’o³ð»¼¤.j>'ÜßXÏ»k#3oƹ^Rñ½¨ç× ^RáñagÄþ!xIŹ¿îõ¡3Öç­Ú­‡9ŸëóÖ&5e•uØ3xI©kÚË/…äNû¼dÜã=úß’Æëó&7ïûçY£œ uùóg¤ñ/9Ù/ööd 3üKÊ݃îŸÓ3/ÅF_ÚuçëÇVŠ ÿÉ–ÎÆÑç긅ßJg]ÙÕ ^¢·‡öË\/xÉê<ËïËxÝè×!ÌMÇ‚Na:/i]9Þ9™ëÙúWOS»^뼤b€Xåos^ÒKçý•í¹B§p÷¥=}=ßù:…Ês¨»k|}Á9^ô`Þ±¡SPA¬–Îñ†NaÉ`½áB§°FòH÷ÁÂ#!·§Ø{9^w¿â÷7Vœ—ìUÁ£¾Læ76ö“ÆØÞ±VK ?óE_”Nßq)Q'<9Ç­.Ž7údÖÕ¨[Á·EJøªaÞVö9•"Ÿš j¿¤D߇¡ÐJ¨¥ë†!øÎüú#Jùê»g¡Ï)¾CR£.¿ÐsV©—“:ó–´ôSç%ûåjuTЪ‰ó’£³ßAÒ`H¼»¥Ú_öëy÷Í@þû¦øˆ¼{TÔ®ëâ¼dï‹+<R=™/QôQ8¿ Þ¼D;c+=Â$x‰*ÏPºa”à%:é5<Õ%x‰5 "¨y•à%ÚX㘼è$x‰(=Â’æ_‚—üŠýžg Æú¼Yò4…ï|ð5ÖïÔŽ÷ÁbŽ©áT©Œ]ŸgÏn'ïïWSMÈ °—¨Ç™¨Þ¹^EÞ"á_ÒÏò~ñ¼¤a g‹ ¦+_?áÚ™wËäBÏuŸ·½=ÅyÉΞ³•ù¦/ië~7Ÿ’zþ6‹š ÖQ¥ºqq^²_ ô½å³ã¼äèûx]á³3Â_y4œëuz$H𒲸·ïVÛ£ŸÄl¼œ‹~ ÐséBúmá§Ðæ¢ ãuÃOûÏ1<ïƒ~=åñœÕ<†èû°øœUê×e„NA¨•X†¾%2£NxѯbŸ³ço•Ï6ù^8/Ù¯¡5êVp–$3òmI¿3;‚),|ßöÄû¼¤Ž:¨äf†a+ôâ` ˆÌ¨ËO~¤Ë83ê&{ Y5þ6Ïߺ±Çþ+1ç%¥­|&3* ^²ÿYµ¼¤&ŸœÒÁ5$xIiì'a"Ù·ýP-IßMúÎÈÃKN,üSÏ™%xª<¼ä<¬‹õ5=¿/yb'ü^tòð’ œþLê2åá%g¼kÑO\C‚—h-{öØ——Ü5ügÚb ^RÒY~ê™'ÁKz3žZ£tÝ\£ ºÓÏ\>}IY8SSÖwËWÓ kÁéi&ÁKÌx~Ìþ¼;6üK*ÏX;}ˆ$üKš¤óyê%ü^÷ÛÅ\¯,ÆÖÐ4ôÊú ^b‹ýŸî8/9š0…ãÿØüa ?^•k”ó’ÃKžXôžÌ»×€×µXèn¿«ž]Ì›…NA…uîôq 廨‰-8Ç‘:…ÒP»“ÎÑe…~rÜu(푎!6t “=‘Cè´.Þ3ÎÅŠ¾}VÙ¶¬èûp×à±ÏÊ+QÏ@¶rÕû¿±¾Ÿœð=5Û÷,Îßúœä|~—Ìe‚ëî<ëþ«ó’½g²¤iŒ­±·7ò¾]–ð1l|7+{jùú-¼o…" ^²DP5è‘«%êò{¥g'ë´„ÎüÖÞî´ú`lœw ½l'ëfÔy‰£Ö§jCäÝ­¤^fø¶hðì{ÖǼÄlÔ´ÿel‹ØŠšŠÄl4xɺû ÿ×öö®3vD,û£×ŠZOu^rš,ö³Ô¡ßÙ¢&¿ ^7ê»…uÒ;ïYœ›*kVö\à=žQ—?éŸú§t8b=ëB–Y¬ðºž¿õÖéÛL ²ÎÈ»Á¶OßT¾C3òîY¹®·tzÞýeÿßnöÒéy·êJþ;Â1xÞóØÿ>{OŽÁónQ%‹Oëïô¼[¿›‰áéÃKNì­~ê!ÁŠõá%ý1ʳ{ÿ`ôŒÓ‡—ç%ý ÏóËo‹EèAÍÉØ80¾3í•—ŒRéÒY‡¢ÎKF›dzOµèß]‡q¼Ü#ZøbßµëÏ=c~á¼dQÜß6¡GÔºWx¶G&‰XßONY¸•µÊºÂÏ|Ð?õØÖ Öóî²rÓEÞ§+| •—Ä*ÔyÉÎ:YÛŒýê„zÑøÛ¢> ¯¤×às¶¢>`ŽÄ2¹'p^¢ìÇZ%Ï}ÏÌyÉþFÞŒÔnÏúöÄÖФøJkĬDÞú¼¦Þæ¼d?›¬ÇQÆÏ QS±r¯ +‘w/ö-Áóî6 ûõÉï›9/±†Ú¹=(ÞØwÞ 5§÷™‚9/9Æx“g¨ µywòsìŠçÁœ—#z!ñÇœ—ÓJc=¾-æ¼ä˜å¦š•Î1ø¼µ–|¿xŽcÁKöŽ{ÄYãXð’YØËA+ò ^2Z!S ×Ÿ9/9•rôG㢮CŒ9ÎÀ¾ÚB_ÒÔC¶Åûú’Òx~<õ þ%6©ØëÇàëä¼ûlÿ÷ù x>¿WôŸ=Æ:W^‹u·fé·EŸLð¨qÎ8ÞàÊw_åÿÎÃÚ*bC§p×´XÚZèºÁ›¥Q·mÎKNËsÄÖmõÐ)ܬø\w cC§0kçx+ÆÛÃOaNŽw`h=üÇÎ㽋û뼤³–àŒÏCzÓ2qËL÷Ìu û³ ³˜û[Ýk%'H5ñ漤è˜Üû;¢NX„l…ž‡6¢ÿÛ`ì¨1ç%RÛA}ªð¡ŸšÖì5l|ýZOÌ÷wÌÏ›µ%Öy¢._-y|tŽ!êJ¡{Yð’2õ Ú$žw›¥> µdFÞm©_ÇÓµéy÷TzP¤Ú>›žwÊ^³Íø½˜žw›éûbÁKú Ÿ£²wŠ/É5“}*,xÉÎXSÁ:* ^ÒÐObýÌ´/ ^Òàsª?…½Ì,xÉ”Üá Å‚—ŒÆž°…g3¼„gÍvk;ú¼¤Tø¤×É}Tð’yûéM/ý ìã%·‡Êñ2HûÔ¨Ç)cVÖ‚sýýêqŒþ‰1™|>ôÐþkÁKDx~¬ur ÑßT¨3_ 9¤…ßkYylíÈ,ü^Q óøÐsí ¿×9n½r{Ê}2« /<’vÄFýÛíA|j¶Éaìë'Œþ÷ĺý„ep Æ^[ý„ÎÜŸ^ÔX£œ—ô&†?*¯+QÔyŽ>+›F­‘"÷_kñºöõ ­Ì ç"ú¬,A¾ÙXW·Âï>D;¶“U¬öùÎÜÜhnßýqô®¹:¾¬ùº^ÿ6îo÷ñ3gÿ€ý„ë]ƒ÷xŸ#7]-ú-æóªÐ,ç%;ŒåùñjѺ ÇËú‹å¼¤¸ÜŽ5h-W Ÿ§ÔS~2ÇYÎKz…ïÁ¹.jøW¾w¯­3o†|hõðSh ãä0«‡îU{Ï;‚)ÄVæó«‡NÁž³FoÍÕC§0©ÉY†ïÛr^²s@!k£ÆeõèÛ§¬±9¯6b£ÀdÛ“ïÛˆú›Ô&Ñp¯.¿6Ö;qMž¿aÏõø`ðžÈßîºÛÇçtòºž¿ÍJoØ>pžµ†çÝ}Ñß³Øà}ˆ¼{‘Wkçó;<ï.ðS8º6¾ãÍ»ÏF-yúò™t^r^þEbþ6ç%'‰¢×u…{9/9@qÑÓûÉå¼ä$;ɧ÷ÁyÉ9¨7ú9"ï^ÎKN¢LFªÜ—8/Ùû4zNÖ›.ç%g'Ç>mìe¶‚—Ô[»xüÌgº®ó’Ú´·!ªÿ¼dtú™Ó{lýêKè90:Ÿà%6éó?™K¯¨Ç)÷>êÑxsõ8­ŽÆ3Vî5¿dÜœëä- þÊ+xÉÀbžÅoaðôþ9±{ÏèÓµù§b-Û+ú k¥»wî«—ôrkO,5pKã< *¼ûGSŽa†“b¼} eiô£*>{;kÇ¥úy4â· z. ?…¹0†Á\ziø)({(6zš- ‚NŽ·cC§ ×-|}Yô[¼ÏE‡1œû/‹~‹8ïnçÝÄo³ðUdAFÿße¡W®ìc3ÉÁ—ó’ê 5.¬Ù^>ôl¥ó ?¼I­O>“öÕP+a“kŸó’½ª“½*=î–ó’Ó°˜£ÆgÝyÉi’KXço[‘¿%mG¡Fk9/9Æ+ø-ö¨\ÎKŒuj9c=ï^ø^ì|ˆÌ|9/ùSôÛ+9]×<=ÏT¦ñ¾ó¶Z›Ð?ÄÆ*bÏé±½ÒzÝzðûÎÛ9¤Ÿã¼ôŽm~ÝÕ;ýïÜÇvôж;b ôòª8óÙ±ÓïÙœôŸ÷9ÙŽ}çíèH©=¨)ÖçmtúÔº8^Ÿ·ÞYÚàÿ»ccÞë¥ÙSÀå¿Í*ë»Ëbl¼o…uäÕ;ÖùäÞP!׫ãæ;;¶‡g† s>;ÁKúê)×k¼nÔQÁ·c[LÌñç÷:xÝã_ŽØ¨ë[¯!ç¼p!6¸2êäUs áÓ‹^³òS×~ÂFNëÁŠØ,^á÷ÚÛÄos^²uŽa ¾CÎKÆo“ÔïºEðì8/éôÈÝ×U¾oÎKú¯(ìûmð–ß±^×±wB`¤;éÁûÖâÇfº.Ÿ‡}ÄÐEÎ3Éßæ:…6Øûga~>ÑŸAÀ5Öƒó’ýäT<¿‚ž»;6t «‘ÙHųÓC¯Ü¨q}q¼Ñ·¯S_ÒÐÏrÇF}w§¦@Ç¿c=(kBÇdcà9ëz‘T—ÄûõÂú–^ž¾B#°¨Á(Œž¿Uø­®q×FíXÏ»—ÿÎQqGäÝ%õÆUåu=ïžF¶½*Ÿuç%Ç\Ì\Êäoó¼{4z`îƒgÇyÉi"È~I…ë¯ó’Ó€Z i\׃—Œjà­óù ^Ò{…OCEÏóýÉv^2„ëï€×õŽ­qÏkwjŠõyëÒQÏ@®³ƒó1,jÝ—¤ëƼU2EîÙŽ¼±r÷dùgÝßÂ7V‚]Q3-­ã9ûô%šÎ ÷gÁKf¡&½àìödLþn.ê̼NV ÿ’r×îœXô?Þ±Î'¼"Zª‰ß±_Ÿ•Êsô^±F/Ù;cäì‡}ê1œéÞ^í'V¸?“¯®ƒ9ïì“¿-|zïÞ­':Ç«_Ÿ E/Pá}ˆïîïã‹y“è“9 ư×u å»^úµîÅ{켤»Þ+™Âå¼äœP5\·qýu^²3ir‚¥ ¿M£ÞÔ¨72Ô3ìØ~W =KẮÑG¬³‡âñF¬ë}=ÏòœÁyÉï>>eøWç%ûݪèU_¹ï«ÎKNZG´ñ·9/é¿â¢ˆmðŽÞ±-øƒ€,k¼n:ÖÁß6‘ÇÖ}ĹƮ%ÎKŽþ5æŸéûIxvÊÏw¢üëçoÔ¢œžMƒ÷÷óU[ôßiØUç%©‡âá\\£zÔw7Å{l¨Qر5| ¬Bùfí¡3ŸÔ­ÌÞqûW@-JM÷·ÈXËekjÿλ©»Ú; ¼óÝóî9è2jº±BÏÅ÷Ây‰õÊz-ÂXÏ»¿/ÉŸ> |7—ì„Ñ”Ú:®gÁKÊú5~[œ—œ}½*…ëŽó’ã™Ìljœ·:/Ù±{‚¾Ç;==›NŸÌtÝwÞT¡Á°»_h{bÕ¯»Ø{x¡6uǚ߇J/ƒJþP—è'ýÍ/È@êŒy[¬“øÓo¬Ï¾‡?¬ÊØŒit®‡9^²ÀºñÎ÷"xÉJ^•ÍÀ^ëWSWòµ¯ÁKºQãm¨É<ÇX¾–´ª<—æž xɪ9YŸü‡ß+ÎqžG|²Ê×—vÒ‡~ü¶à%k)|;jå;ý„»*òùVÀíkôÖv{œ”™ëºŒÏ[¹ô¬i¼á?ykÿAÿ–76ü'o}Ô³ý0<;ÎKŽ¥îÃÁº.ѪÞ~xg{Çýƒó’Sù€ëJ[©ÎKÆÀópÒkœTç%ÃzE_Äq0¶…þ¡â>hçûæ¼ä˜­ã\º§ç×yÉ'ÙûsÏ:Ÿç%ÒÇÛ÷;çoÆg² ÷àÎKŽa Æ[j¯ëj£úÑ÷áyp^¢†œ·ÿHáx-t wyÞcÁYRµ¨Ë—A68~›E}@c ¿CÎK޶Ž<•gîÕâ¼;i;zzΜ—,hY½ØJµ8ï^¾·}òºžw[£7ì^’xÌsÓ{uz†hÁ·åá%óÔ±^ûã+ŒšŠSŠé±·Vâé["Œ­oì@=dý)ÊïÛò¼»k¥Ö}ñÛ½<ïðJ[?µˆ;v¼±SÙ‹ºUæ/9±­ zc¥Xñ1ÜÞÆ‡?§Ö‡—œß6é'Æså±·~çìåà•¶cϼ‚ÛåhQìö8ÿþ‰=¦2“ûê[Ç´cëÞÊÁs½?è bÛûkLùiJçúÞÓTç~× îØñŸ× FkI5ñ ±ó‰’<Ï™*bå?¯YµRƒaÐWïX}cËJ÷a¤ûkOlcÅÇ”±ï¼íß¡Œåùf«ï¼Sz)²Õé…ù7ÏmB_Kp®ö𒵺K@öĬgíá%vøŽ!vaìxbËmPôz¦ëžyÓ³Ùå|èOß×'¶Ü0çí©i¼gÞä4YoWìãyÈûð¾o_9ÎolÊ7[}×É9c§ðr^Ëžš;Öõ%ýzm¾žõûÉkÁ{.àÛšço÷¦4õâ{cß<`ÌkCøä›9o{xÉS8Û«èõ²c創Šg§6Yƒþç5㲊Ø!é·Ù[‹r ½pŽ^’Œ°^V\0Þþ¾ozÑ·–ܳu_'¥WÄj˜·þ®“³Î‚رÀ£Z×IˆÕ_äÅëú:ÙÚB,=´wìôX»ŸIýYð¥Ú±âë/~ÛÌg­¿ëä´É÷¢Á»iǾë¤pݱ{ØŸØwT»™×Ccþ}»dÏ9/sôöð’3ù×ÇìY2Fel{ŸÉr°¥³£žaÇö7ög¼žß|Ö^rçëåú·z†ûæÝµ]›…÷Ö(ÖTç%m]¦¼o¯œÕµñq®ë™|¼èŒ×¾´R{Ýß7v…qG¬ X[›¡{¼®Ig컟ìë^SÏÏm8oóÝOââÍ/¸®?¼ä€ÖÕùì{¶‡—ÈãI‚X…_ÐŽ}¿oã>ø|åJÜÃ<¼ÄN¿Ûû9{Z©bý}xÉ~aFYˆ­Ôp¶‡—¬#ðçu›¤1¬'ÖnÔåƒÓ6ñ}É,Ì»Ç'hò®“{‹(äß7y×Éý¶uð¡®É»Nîß¶ iHgÂMÞu²×Áë¦óî&Ó÷ˆm`¼ºøÉ»NŽy÷›yíÓ8^_'Û]¿ù–PãY—wœ«hò†E.Òä]'E*™ÍB}÷±ú›76Œáë®óûÎÛ©%@ÏÇÒønjóüâÎqÞ4 ÷Aßy[Coö:ŸÒKľëäѾðº¨1?r«7öëÀò'–y€¾û’*·7á3>¿úîKö÷3]wpß§ï¾äèwàý¸7KŒ}÷%ý/ž´óöð’Strç Ï11çØÞïÛ~΄s Ãû~ßæªïÅ*üÙû};•ˆ|~çàâû_”×±ï¼éB Èɇp^ØÌ÷“¿€ñ÷g>dï¼­“urDîûìåÊçá=ž<'köžì܇lpƒ·UüÛ½j#äq½çuÕÅú–Áur½çÇ3sQxj[oÐkO¼oà< ­7èz÷{P~Ã}Xï¾dNÉíú³¶Þ}Éaȸ®R×ÖÖ»/™Ÿ£Ç¯fÏpvÐÖ;osÝuùO*ÃoÖ å (=g_н\/ᇷ;{el o,ÆFã ?±ï¼É-ˆ}r=êlzyç­ÖÁX[±ïû6´ß±O‹Kƾß7½E®~z£^Þ¼MΞ³føŽïØ=o¸±G#ưçí$J÷j Wºîž·ÀîÃúÔ ¯~xÉ'â±^r nß÷{‚~xÉþ!2c÷ðb÷¼óš’b‡cÇsê˜Ìõ¤àl¦^rþÂ:óMÔîXyb'ò‹“Çroß/9á¬Ì¥÷Ò×ûΛÍ9™wóL¸×wÞÊ-†zsœôÃKÎ_89ީ̉­OìèVo–Š5ª^ò„ÆvxÎîØþÄ~-þ0›†<«^ràHf6ÊsÓ~xÉr²ÿ>¥˜·ÃKNâ|¿½P9Çí}ߺÆŠ€ôÃKø´ÈÏŒZµ~xÉyGcî_ÇÀ/yŠ8îüâ¬%¼¯^ò@¸;Ÿ?LAq~Ñ/ynPc¬Á“ä”ô½ï|“›s1ðê~xÉ‘÷¡ÍS—´Àíûá%gUUÄÎ…z²~xÉŸ¼…ØÓž±úŸ·è¯3–ýêv¬=kTke‚ÙãZrxÉc⣌­†³¤~xÉ#ìiÂXxµ«Î'ö±3VÁåúá%Ģx¿LÜßÃKžFcð>×êÃKž¢ð¨£Ãã»yxÉ#ükœ7Éã•'Vªç¸ñ™<¼äLh©¼n—ôÛì•Â9n~xɉ]•c(Ô¯÷ÃKžXܳó^à ¥^ò<€5½o†s†>ßyÓ&¼î§ø}çm?;¼nç¹tŸï¼ÍÛ˜ýÕ~uþ¶wÞ†¯[ rœ>ßyë÷ƒòžgôùÎÛÞD7®“ð²Ý±ï¼ÕÛìáõp…¦¡ÏåûášÚ…ßMyß7ëƒß€VpîÔå}ßDñük"~/y&©§ó‹…½}?¼äL8⟳|<‡—< ~ãws»ñ<ÈôõlñLbTã|¼…ÌÏ'OÒußur ž~,¢ñ^rnümÄòž_ wꇗßÍš®«¾FóBzqìØ÷}û¶\¿±•µ0ÝÞy3-ÌM•ºÌ¾Þy“eŒ-ƒ¹Þz×É^oöä]z:Ç<çÍRl™ÌýWw=Ac>/+]w|l±=åþËÏMkIüAx?^bŒeÕ«á=–bgº®Ÿãtaì•⿱~ŽÓ)èc~žü¯§1ïõ;£DŸÌkð>ß±-jÉ@FI×õzÓšŸÎñ(ÃSc¬•ëó¦Âg]òxÅÏ!+ß·ôì ×—|Þ ¿ï±ðÝ®/¹€GÖ‡ô·—œ`!/YäF£¾ywzÖë]{VŸØú~7-qF]Ũᄂr-9k5ög£¾ûɵ‡™¹ÿxx‰ÆjK×}yIàgzðÎKö5ø=.:yÝ——ŒºømðnÚ±//ù£÷ü4 ú¨Qßy³:x]ô‘ó<±ËR¬ñŒj8/ù,Fÿì£*öÕÃyI'³9|r2öå%hDþîcxy‰Ì®Igƒïæh¾/¹7»o/ÔÂØ——”1¨MêdmÃyÉÎÞfâ%ÈɆó’^:ó€U;c_^28Á¼ññë¼d.![ð–ß±¾ŸdÞ2w гºÑßýäj` ógÑG`8/Áƒíþ0ømÎKÚ,Ì»÷íÄ;/÷¡Í³öõÉ1¼y€ hˆäÔ%q o`÷"ó,ð]ܱ//)j‰k¤õÁyIoØÿêþœó}s^2ïf±'¶Wì×Gð’‚ûpb+æ8x µ>{ çó#xI5ÆVøÀíØáù±r }×w¬ó’ÞxÙzÇ:/éµf¶‚÷-xIï¼.}-wì›w[…þìøqt^b29†JMÃp^b™),rÚá¼ÄlU$ÿ‡á¼MáŸ=úÏïØwÞ¬ÙÊ^:ðœ9/ÑÌ=Ûä¼9/©¼n/öŽ}çmŠ%þ»ÒÞyk?è¼î;oûÑI¼d€ùÎ[+-­ÕÆçWÞyûì@þð’šbý§ü _ÎKtà{|ü*xÏœ—Lü¾iÁÙíp^ÒöÇ“zÏñð’c´+#IðÙq^ã·fõNÃy‰M¡Þ³ÌÂØ7“j½iZúm//uñÌGYï4ÔÏßj:Kš¬m軟,<89xÉp^¢«Ï´ç2Žáå%S[ÚË-®;ÎKúÌçÏž±ï9ÎÎÒùëE†ó’Õ*u¤/ñûòå}¨ëñ·½¼d˜ÔÄ@¸ž9/i|~OO,0ÇaoPîÌ'˜œcç%6­&Â}Ÿó!ÿ=µÌœ— Á=³ŸÆ3ìá¼ƵÏw³¦ë¾y@­•{#3æ±/Y?ÍfÊõ,]W_¶ÒkÊ!;s={÷%V'ckc¾iïûÖµ¥œWyÖ;ok&@¥ÏÈXï¼MK\cÎÉØ÷}³Ž|óô®Œí¯6Ÿæø†¦ñ¾:<™)/cnê¼$1§W=c_^ò/¹iòòÎK’þ¡þKÞ¼ä_òMåóþ%33›†ØYÞ:ªZ’fdš2Öë¨Öâ7ô±Ù±á;3Aï÷ë>=ñ›éºîÏe‰ Z¾î« ’^3sL¿íÕséL,ÓÈw¦ó“I®Q,áå%_ þý§ëKÒ³~d¨8[œµ¸®"±Š>p0ký÷wó” ƾçÝbù™Ì×}÷“5kQŒZ”ùð=FÑŒ]Šu}Ö—+k戚ô鼤ŽÎ3‰N2—ôÛŒàyÖ©ñžÁKÆH{ þd:/Ñ¡¹f9ät^b³pß×x~1—1j;ýt§ó’&é¿ÎK”u3O*Ž{Ö|_Ò;ÙŠæûðò’bÊ3ÖsNŠØ——´jd ºí¼¤$}ÉXØ#Îà%"̳ô–+Xç%}ROP tA3xIÅ^CK?Ä:/Y³üAÝÊ ^ÂÜIΫÍX×—”¤EI{ðú’V“„úú’V™û³GåŽ5ÏE/éÜh†¾dvj;>û’/6ô%Ë/AO¬ëù[Ç\ÿe-q^’ÎnõíàÝt^ÒûâuÙ§bǺNç±²×Iä…Óy‰tKóÖ ½ÎKt&v%’î™:S˜dbƒåÓyÉ “—ÔÎë¾y÷Ò‘ôQ 9Ãt^²VI±ÅOç%Ëjâ%ï±ó’u5½~A“±ÎKÖ*I_Ò9†wÞ¬§1Ô‰Üi:/Ñ‘4p‹£Óy‰P›4²¾o:/™-ëð ÷ÎKÆm´ð¦×\K‚—XÒ­4ô”?ÔÁ÷I7XîÏ㉠ÝkÒk½±¦óËš1hž¦ó™c¦šW~7— I—ÙPS<—´µ$×±2Vþã ïÉú@ïX_'KK „ÚÛ¼„ܾíe€{£à%&=Õ±r= ^¢éÜ©³Fa/™‹×­ô‘ÎKŽ4¹Æ‚&r:/‘™4Ö&Ç0âÛ¸zÓìXç%Šs²G–Œç!x‰$]Å(ü¼D%×Çr ægTI3]ÎPfð’¥-ÕÒr= ^2ñÝ\bd öó©ýÆzuWë~ÎÞØ·nq•‘Ÿuì×ÅýK°x=Ïý¥¾ó¶Zb+]cýÜÔRìð°’ú®“–õ%Úð—êç#ý¶ÓF±oþ†+/cá滞ռFÑ#Wê»Nª¥µoïØ*bÕõ;Æ=°ÆFœ—´–8Œ)49⼤¯9’ž{Dq^251ÞŒ±Õk¹Ïæ€vFÚ;oK‹¥ºì ÄyIJR¨™ç%½tîí›`¯,ÎKf±™4Þ…¿Íu¯&<³TƒºÎû¾Sû _aq^Rª2Ïê…ï…ó’t^xú ãìVœ—tí̬Àû\œ—Ì™ÎÜ =ùÄy‰Ž’4# ZwéÝ5Ó)çÝ)Çû¾ou2›¯³ùoìt·q¼§6±//Ù{ޤ•H÷7ô%­YÒ`4^×õ%=ÕØôÆ÷-ô%½qß7X/"¡/Y¼d²öAB_2&ÈX؃KèK ZªçØ ï[èKV—¬qÁ³õ8s•Ę:c—d®‘ØŠ/Ñ’ë|p–/ÁKÈ'Ï_Åç7xɽÈxÿ,¼/9æÚ¹v‡lòð’SŒµsd_.yxÉyKªic^(³ùu³¾d¯Û}¼yÀ˜ã}Ï µIóäNÃ;o0œxÿ‘ÆðΛEVaÔˆó½Ï>Šþ%â¼$éÄΈßXç%³¦u½QG*ÎKº%ÝJ¡Päå\­kKšä…"ñ¾u~7…šHq^²ø‡ìû®[I¼äO;¶ˆ®UKÎZ¸r^Òß–#]3yëªõäûE?1q^²Ó©ŸG½©8/Q1žãt§ç%“õC§V™{ç%8˜{õë8¿õzÓ5S}‹ ¶Dœ—¬’ôÂ>ƒâ¼D4±ŠIïq^2†%°n/êu­$B †8/Y:8ÞJ}”8/QjCwÎ``â¼d¼Ç–s=q^ÒkúÖ€ˆùùÛšI Øc=È z¬tÝîµ%“kI¯éºÃÙÊL5m)s^Ò¨ }ü×ëç¦u¥ç,Aßœ!ŸwI×µw]gÊÎ Ñïö ¶÷Ÿ“9ïL±ë}ß ÎÜ_‹&ƺÎçÒÿ“öðý#Õ‹tj“ìá%ú³òY~§öË^b?u&¶¢ô$±òöYÆŽÜŸÁÊÛg¥R;#·Gã;ßXæÒú£d6æ~¯³%ÍÈ öËŠ÷YÑÄK®zœúÄÚ»jæ%Ȭ¸.(³Š½¼Ü{ó~­\7ƒ³f«Õ½%é@ÈÁ­¾¾Ø©žì9;PÄFèT+×òX ¿WM¬bÐÓ̪çݹGrH«õ¼Ió¤ƒ×}÷%c%>Y›ò·½y€f–Ùz «ŸïLÒ°FÁœ—ÔÞRvÛœ—t)I8àyhÎKæ\É?µƒáY{¿o§¿iÚW¯ûÎÛZ©’<ÌyI­Ù;d@{kÎKúè¹n&݇——Löþ9ç¼Øÿšó’g$mþHã}÷%k4MÞ!8‡4ç%uü‹wrs^ÒgŠÝë/Æë¼dJÉu3•cx÷“j#iؿۜ—”>þÅ?•×}yI³ÄVšrÝ } =ˆ]Þ!ç%šu“gÍú’9©EÙSÁ{ç8ÉÃUÉÏ,êq²EÎ!-xIö/Ñ‚³[û­ÇIãm|磇þÊGãcQ³Ò\têð,x‰$ÚFnoÁKZªw*ô±à%"Ù£Fyœ—Ð÷ö¤×` 漤eÿ’QÀ5ÌyIg-—ä:@s^ÒÇâ;¿&r^s^Òg§EÙoÆœ—ô>ókŠ®ñ^É¿„=aÍyI"Y/‡{6Åï¯12æz6}ÞÖH½í 9¤9/Y¬ë8®ün:/1©&“Væ¼DÉ NÉ!Î|Ìy‰ÔÄ*”Äæ¼dhêé6X_hÎKzîÿÖ„{#Q?Ô³wžç%GTE^Â>ææ¼DõßÎÆûîK.¡ç…mðþšû­¤14Ö8š,gÐc(Âë:/YØóZçå¼$y&?{Oü6ç%c¥Ø!Ü{ªû™³æõ”"€µ™ú÷m&fSé9kÎK`êtööÖ™38/‰Ï{ÆÊÇyI/©>VÈ L-ØJª¬Ì/œ—XM:±Âæ¼dÒŸöè˜:c«ï¹Jòq¡†Þì­ï®ù[Øx>oÎK,koSkÎK`Ôÿ¶ïä\8/w‹'Ÿ§W„…¾ÄîïÅIñkúm﹩!w:å&-]×þó6çPê*Š¥¹XÎic“nÅœ—,øJ<Öœœ7×— œŸ²…ô<8/)ȇóùÕ³¦áÕ¢4á=‹z²ŠÇꇱ//éðÁ8sÑÓ^^2Kb+°=±//™%q£žže®Aì^:Éaìá%vC8×?0v=¼dýÔÜg¥³¦m=¼dýLI9¯ÐŸv•·/­ÍÔǦҗuy?áRÇJ{˜;¼·]ªj¼¿ëá%+ûé®ãCÏXyûëe𢸾­òöíÓìÒØsl=¼ÄÎZb Ô ®²²ÿNøÙ`¯±¼ÇrÏëÊØê½{f ðÃ[õík4ò7Åöªo±JÆtJ2 Çà¾35±•½Vã>¸ßë¿èVV^÷Í»­eÍ“,þ6Ïßr¦®ÐŒ¬jÞk ñ©`6ëá%§ñiò6Þ Æûð’uÓ{a8\ÎKZ©/χ–ó’ÑgMµëØk,ç%)‡Êçl¹¥`7©É ³"±:ÁÞÝ›Õ:g#n¼ÏÝíÎKŸI&"|§Ô‘¼X×Ö?Á/Pé–ÌMë­ç‚Ý1O’ iÏ·®h!™ÊZî³'Ø5(5åærKïŸ`ñCE#T±šV¤p9)Â+¯š™(Û)HKíÈ$Ò0¼n§à-”Opî°PÃh㤄e ¿)¥O#Jw4!Kßìl¥Ur æo'8š²¤Â$éi?º’hÛékåx¥ö•Úÿ E>Áž§ÛL,æ_îÆ»UsQÙâºá„eÖ”9à@õó’'XØnENo3ù!ôÆ:Á/dMͱ¬¥‡ß)‹hRšLt:Á/fé 1—ôˆ:g‘f%ùž¬ô½PU…b?]ÿ¯°/ɱW–¿¿Šœ éý‚jÿ[(‘tE<™EáÇ0áW©£†¢›[#ô£Q$rÔ6~jÑÅ–Vß¼‹«yBŠü˜gÇUÔ[„5È6Àgß;8þp÷To·Íï$Zçúv»§¸}~m!ßcÏC±¸t2.|$-¹È}„î ûûgtýj±žçš¸$1èœ;ôCH$“jµ‹ëe¿›d ,nØEQž†׸«è òlEÏ”]|—íº€$‘EÛøF^Ñ‘UCÈbÇj"Î?“Ñ)ˆÉîâþ&)bWá cújÊÎ@{ˆ±è;ؘÌ8†*h‚0“É¡ÊftäN/p–á`n6&£hɽv”Þ”ÆdÖZƒø*J—ît‚Õʸ‹«ÕKc’§³1’팯cØ)¾˜Ì â-‚åÝ)^m:΄ÓT|1™@%âfsQƒÐ˜Œ-¶I>žM(iSE¨]z1ÿXïæ1¸øb2ÎT qêS“ѯ_Ôqcü*Nqc2àËwx ôóÝÉL¦Ò‘“qp#:M:7&3¾ûãÞHwð“ù¾)[n1辘 ˆTwŸ3©á}1™/½üˆª¨ØÛ¦eDIèÔܘHòS“Ú¥|gd:2¾ZÐS|ßÁΫ»uÁ ïìxŸ(á#Ób^íS5ÉSeŽHf½= ö„˜nÊÁdöÆÕÐÑÄ•®s]‰ƒ'!T2éA*ûÓsc?¢”̓Éä7ð8n³‹ãtÇc1u‚ÞÁj–…}­öožüoG¿¾æ_àPÿsžïÿ\·œ@\4"¨øb2Zß-Ä&M\dVc2†Ôö‰î§øb2±Ès9Ÿs‡Z'ÌEÅ“qL IdiœbïbA"РÐjLö¿W Áâì ÑÐv5&C ‡ †ýjLÆdш„>šk6ª†}ÊÚ¶xóÞÁ… ;'‘“5ÿ?L§³¾ã¥›÷ÎAZkàædÍë§Cº¨çá_Eç| uÂó ºtWÙ·¥Q•]ºkA“ì‚dá¶gÍ{ô…ÇJŸŽÜæ,täAú.îÙ:!o˜…îàº;eKhÞP­ƒÉlÙh8¾“²’Å€x“ˆÛ&iÓ9ßï 1AE¾ê¦S­{¢œ#Lf5&C†½[0‘tä‹Éˆ©P§‰cÊÕ˜Œ£…Ýáà”Î)ŸäŠùÆ»xýô¼›"DWc2†J©Ý|b»´š'“Ki˜¸tbqÏ8õ…À†w½<+,–éô_·#÷¿t:æÉ¬ÂÅ\¿I(§¸y2N?P7TëåÉÀøl}CNqc2SfQÂ7Ö‹É <0·kFc2ÃíQ*þÁdð©+à Õz1''–0¡âÆdœâ¯ŸÞ‘Š›eó”cK‚ÏFc2±H5ŒžçÆdÀfè\ ¢âÆdÊ…c°°£_“Ù´¦@,wéÄël7%â‘€#JÅÙÎw­Ûªòu¾˜ŒÚ@˜¥‚.]¶€ŸžNU¸·jL&5t:zD!Vc2¦Ä홼“iLfÁût#8äZÉLvqàlbåËÙX¬ƒ6'ɨ:þ@œâ­æÉLX Õ€v_Í“ñE0‹½ƒÍ“‘"G  «y2ŽÌ³tq{=2Ž´ e«1™Y$ÀY2¨XZ Aç<>mugô8?ZúvLfï¡¡*zž“ÉEf·‹H5«~fô^«š|äÛÑ?Á «ÊG®nÿ‰$VôvKc2Æ;;‰ÈKÒ˜LÁöò˜©âò%É$ÒV×÷©í#_ß±ˆ'“D}‘Æd*«HV0¨øb2ÖOãüçV2¼#¹'R_4qK,Éžwÿf\7¤1™L‚,‡îâ{³ wÏÞAiL&³}lØð4“ñ?e‰›miLFפQ”7ÓIh÷ekÐ97&-ô’42ï¤ÌúãÍgXìM×aäD‘:.óº×XLPAí’4&³”Š+p_'óê%T{,$xS“ pŽ àº,‹Â¤¥=Ê¢›²z>è ¡ÚC2£ÓÎZ ,^IRc2“ÉfØiÊzgät™Ã¨ØûjÐølNzS^žŒïÇ"Ö¼<åNs]ºæÉØúío÷Ë“YÇS$ ”æÉ¬a ¾)?f0K‰ì1©øMgÖAXAÐitܾaÔ.Ic2®”›ààÕ´‹ï^ôÂëb"ÿ‹D')O$¨ÄBR4&ã(“I²ŒÚůW]!&ã¤Gѵ‰?ÐHl(ɸ$a2Š}Š4&S0pðµÒί)ĺT¬¯y >u¹èv7&ãˆBpªÒ.¾˜L²•®ÝÁÆdªb2ƒ¨¢ù N0Ë¢s¾.Z ]©¶Ù<¢=r0™ ûQ¼ô,Ä ¤1qeDN¤1ù#¤=—Ædè÷ÊO/lc2Š1H[¤!tÎÖ¹šåHî´ò7&ó|ð±Ó|ŽK?ðb2ké$…}»­ï ò÷¸‚/ݽƒÏZŽ¢!)DN¤1™B2ÞöAU“‰$WÐ J†4&ãhI¿I|íñã‹§Ó"ób2¸“ÙáÂÈc”“áÄ#ú™¼˜L*ŒÖ—Š_L&q/:ÿÀl³nÅ·›GØòb2‹Üæwɤ²Ã¡Ù±¼˜Ìø²Á÷Tšl¤1ù.óG)@ò ižL+û?;¥•ÏYÛŽü|9„ܹ{ãëÓ´ñ âœHc2s}·ñ›’|5¢i`8¾)F8›ÆdÛsPœMÈË“a|C…{òj—ðn¬€NãÕ. ¸t{€¤4&ƒÊÄÝÇ‚¼þ1OtúZ¾“1ÛG´3ddÑ‘…¾V“)”šbÃñ™dkxa³}~ Ÿó Q%ÂËéÈÕ‰Õärâ†ÊD©›ÙÐç:eR77…¼t÷¤åë`2›äE¡Êºh}®«›øØý@CølÔµp­I×yêË^ëľƢG´Zùòu@=˜Œ"çD“ŠýñÂHZ “ÉU¸äà#W#'ßYÛáªa±Lfƒ!ŠÔ—Aê3=˜ÌA/I»´“Ñq­€–O&iùÒÆd= !#lÞbíÓ(Ï:_7Ao–ˆ‡Ö%Ú˜Ì,!Á¯b+­/&ƒ“Ç­;tälhˆö˱AГáÄ`slôåÉ$E&mÕ´1Ão÷¶ŠÀVZ“™áI2sÜëË“‘!$`ÇA³L&ŠuFàD<ÖÖ.EG…n÷ôV&*{⨯viÐi™uè|ÝHBòu:Å×O&@§yl8ñk¥í'C0ËæócצíÊ‹ÎhG&ƒ[5m?QRù­IÿëË›”-k4kÓ~ƒy£ð;¨íÌ+Iœ“Ê Óèèç`ÉÉšT܋轹Yàèj¶ Á´èÈw'ˆ¸`‹et|ÂÄ#§ÑÃ/©Á$…‘ÊÕðæ *è¦ÈNäÆ×¿cÒR 7ÚÔð]LϳtVG,<çíÃÅí„Pdá•»/•·› â Ó*•ŽYÁhÑÜH >uÒù8“$TÏ^ ¬¯ák2A…V$í~pV‡…êíKÉ#¿vñ˲0|a…ß½½ü¡˜+HªÞŽ^•eQôiÓÛÑ› $¶i$óíè©áÝbCÜ#ic2^“½YøÞŽ>%û(iµ1™ÐŸ¸¯ÓÆdB8‹~¡ L“ t1Ò–ƒ Æd\„úDBÐÆd<MQžÖŠN£ï`&zÐÚ—ozŠ“1rP™Bwð“qv¡]tä{Gù`|ƒ®Æ} 3Ÿ>â»ø‡'Cúî¤á¸6&cF©½Êësc2O7@ñ6ARc2#I™¨‹6®þz:á*-©ØË”ºD, mLFDñMÁ(Ü]Ü~2>î>ÍèÈÙ‡>å/óFmí’B‚ÚV ÿ†6&3!ÊþŸý…¥ÖãõñýrTïø ‰úù‚Iñè£+—6&3!5à´¥´+è¨è„IÍ¡Ëcëíåk‹:úœôíníÒüR8Oqpñ.Å÷Ótz3š§hÇEk(žs&2$µý|'˜Hìgc æQ³çƒ>¨˜PbÍÙXA¡Kï )±vdôL+:2‚¨šò’Ѭƒù¢šÚ„X*M«4­5éœVä¨Aмö°á„oì¨T,Ž;´¢‘$1~5;€˜ÁȤx'¼VY8o«½,ø=bjK«u0òcã÷Œþ{‚ç–JÅ·ô Ì tŠ»£E]›­HÕ} ë_[ç.¾½tì-hÉ=˜Ì‘}5qÑŽñ`2û0‰šG!Ç =˜Ì¶V¥bŸØ Xc2„o$ÕZc2ZäL/W{1Ÿ¤¦©‡5&³¨)È)<Åú’jh4‘jÍ“ILŽØÓ¥AW£µKB”Œã‚Åí'S’4[téZ}‚²˜Ò¼éH1HER‚ð¬u<ÒÀhägKL“ë<éXDœ0Å«LFÑ6ìì7È%Ãæ« ÜØ#Þ”ÙÑHPÙINçlÑL\# \›íÊ5™dþq5.ÛÐq/JñSÜÊ—%$² TÍÚOFŠšt%1¸­V¾I!‚ZikžÌÚ1fùu#á&]ìa«ÝHb¢Þ "½­fY¼)Ï’K;[ͲÀD¡MÊYt7N‚¸j…SíSܹàâAÅÁÙjoÃet‚_+[í«öݘȡ2¹¨š!öUðrMf ! ³Pñê âœD ‚‰´{=Ϧ¸91i/‹9Œ45¸ 4±W×Fü Ae¢Éí~&¶3HÑ‘o?¨EÖ%ªI?°;z'²Çz­ävô9ÿ`gáìØôvôµ(T–\½>ÛÑž-gBz°éõtz^7%7ľL/Wm.²i’ÂVÚ&³±,a>¢“9Ï#¹è;2ÊLï|p!+KÒ[™^ý@Ë£íÊE[ˆÆd*CØ3„~`ßA3Ô L.nL&‹|!ž½ ÞîÆdœMØÔß°—'£ZC, kLF„¼:Ÿ]!>ϯv ¿VÛ¶L©¸ýdj™u gí'ã®(âl[ûÉè¢ä¥1œŠ;NiRŒ‚ÈÒÖùÓ¡M2ÔîÖJ×g "Do°NTZ¨ôÏVÌ *^ÿ̾ƒÖg—ö¡"ÁÂ2$!˜ß~P¾‚°ën‰ ¯¹5è >h)ð7~N¹£§GÔ¯òe-îŽùCïÙ. Lww„³Ì[ù’ŠÅ’ôŠV¾ÌïÎ|÷ ;z‹Ë²vÕé i«íFâ ! Lß°x÷¢tδ>ÇÓ“xÈ‚³h–Åç,|Îw­¢À'³‹‹ªMÝï#;ŸÆ½ƒ‹¬4¶Éü³‡,ìµÅà¶1™-9ù#˜xæ¶1™ Y g³aèÛ«£dƒ`–IÛž¼=ž]ªíó²îŸ%sª†À‚e{Y±†Œæ°–Þ\ˆÅª($x[ÞŽ~qÂÀ±¼=e]Ïúgwô&´|%uôu;útEÞ»4[ód¹ÄÇ¢O£n`îªDù†.¾Ú¥éì”®Ô⽑KŒ,â#Yc2…;ÆWKXAc2Õ¡[AJGnLSG÷¹Ö˜Œ²ÝJFXc2k†ÓÀýýåÉLÁ}) ÞÚ%4S:|AGnTÍYÊK°‡õ7w §K»ÏÁöß;¬ÚŒH™h’é£b±‚úªY`±ÑZç£=0{yó?”~àíÍ:6» ¡N팇Iã»ý§«1G[³Ž$'üvûœý¢±{Lìa}^dûÃ÷ìöŸTQޘ̊Âv’AŸÏ˲_ܤãÆÕçM<·kB± ÂY>ß ACKg£ÅÜ;¹zàuõ¯gБ³é †§Á¦7O&‘W°-Àç÷öø˜.íâ­š¯fü–Ò9 î‘|­ŽÞ ¼Î1Xðõf¾8þ@£O›¯ö²˜té”H¾¬ Þࢬ(_ÝM ’oe7øjÝĤG4?ô¾n?¸¿)”ªæëöƒê6ˆ8›—žÑ²ˆI£Û-·,ÔþÇ¿¶h‘‘ÕÝ1aŒ3èµ’ÛÑ/NtÊ9éÈ·£\Ì·‡‰.·£W4#ÝÆø´˜ËÝ‹Rô7Wà]E­&Ùœ’5«L¦¶-:ÑНs½ÅN.´0ê 7ŒqÑ vãi4&cËXpjÿ½1e`ÍH½11š§$Y:{c2KHˆ Žo§¸1™9ÙŽ!€ãÍ“)æ¸zsód˜Þ äåɨÑòżoLFdp^’ÿ½1™¤šMˆ5*n¦“Qw<(ÄÛã—¦ÒÛW‚O£Õg༴iܹYü+K.n‡XõETÚÉXsÕy,À§ñÇ›æŽW#IûïÖQɃúîQا¸µ;¥ :— M—Ü/ÛÐ1lvg¾Ðkå—eZÛð"ÕýÎ&2Ï9”ÞA¿³ nâD?âÏ];€8'›»‰£(w{) h02IðëîS(ÄfV 9Ú2ˆeO—p1÷N+¤`á?~`µKF‘žfšorôÝû4NéÑ^£”“i8|ñÆdÆWÕt{3¤&úÆd¶|ykûâÕØ˜Ì™±óÔÃ7&³3mŠŸ7ŽN£uc 4´Šî`´;%’G@ůnb,"¨pqµ!Ã"pÏ‘šè9Z°@ #5ºÙÊ ñ<Åóvôà­rÚóçíèË¿V‹h$ž·£ÏE˜y’…—LæD&ÿ¡¦¤Ó¸¬ûOžOèÁožŒ9Y”?·þl'„Yu§,øÁd„=t{Éaqc2ðZ\áu@5›ì±& Œh³Ý!Ø ²¯$ _¼Ú$)ÎLçÄoJµ‰¹¡­]²AákÑ¥kíÒTÊÈ€ÌÅS6\…í-¥«‘*¹vƒ`´ä¶v)`ùºFˆ°nÄè=zYì¦'1æNÅeIÅ·£ž:œ¤ÏB”8ÆÕM@ñÝËâf;ÆE¶?éâo§‰KnŒÖM”Ó&¢gbÜï ¢êߊI?ðê&þgm!ê½üÿ÷ÿŒq‹Û• í77ÿãýžÿWO=f:ø5Úþ)ž½“ÉEùÝëU ýwþà$Eóö/K(¾Ó%‹áô_Zèo±t#Oñ~6†¿Åw/ª(fÙs«¤ho%vôEÙ 1Ûr ºÌ…`ßóvôžÏ† ÜÄlÎ6⢻)B¢fÌî&läÄèAZ·›p](ßpÁ(Vwô‹B{e"â»´$HdƒŠ»,²ß4)Ǻý +EüÌB¬ Öí] ±‚ wX=]”° iT|;úâ(¥1qëîE·eõ½w&Ê׹𽻸)ž¤;}ä·!ìb}ž:D‰CZ}¶^ûŸb8Aé4óñ ºx7³„HŸóõS¬Ž¨ZˆþùS¼þàåFc2`:Õ¢Nú÷>뉒“XÒŒFN„éÈ#“3\7í7¢1Ê‚lâåÉ8 2y†6Ë" '5IN¡« F©s:rk—DHø¿Nê†Ð—éD‹ƒüÌ£ýdlöÝÊè›…ç<ÿàö„Þ o€µÔ»#^š­k šÑöÝ¡ídNSé/óïŽ.¨3_&¶ÿ9q_ÖßÁJónK¡ [í8ƒôÝHM “N(tdÊL kÝ„)æ§/_f¯W'‡­ Ìvg&ûÈüZYtJ áLÊŠ »|Ñ©€[2é4î*šxäpZùý®¢Ï•£H9á÷4ظîJé ë÷. ïÓôˆº´"xg÷†O÷„7 l3éÈ×R¡B¡áÝM öµsŠN£|a®Ç Çãðîèp¤=!¦7Å»£Ï…p–MzSâíè +AÏFÜ~ЕPµAÑç·L©$Ñ­üq;z©Ì²À«÷[—8‘#nG_R$ áEæ`2;tW%†ÁÞ)Ž=㤠Þ1LF÷Ü …‘ôvLæXîñ h‘ÉëFBýíLj{Lf³Ã•ÒV-/ë~ñ J±‡Æd³Ý·ãñ #ß;hcÒÀhÑunLfr–g DÞ}Ö©ôjžL¬AyšA oód'ª,ºíFb‚(D}è[»¤”)`Èf‰Ö.MWäl;ÙÆÁdœé {Û4¨¸y2Yl"=-ŒÉ ¤7ì}á xûÁLÁ#?¯'†÷f›’”ÇOÖÇO§YÑa+D[Ýž˜ÐÃÖí&Hοó­Þí×oqµñ…’ß—¿vQoqŽË6ÆÅéP|‘m?ŠßÍoñMTàwíŠïNFÑ%cž„`,n§ôXt?HÛoñuBÐÌââ÷Òÿ{s\…ð|…q¿Åw/ª˜–»¯óëwø[ü:!PXáž!aq5—8è4ž…nÊ|3@À¯tæ·x¶r| $ 9»›ønoçF01™ï¥‹'1Q³y2d‡V˜Í“Q ÷´¤âfY€hèŸMzäÓ¸ïàPÿ#4o÷«]‚0¬ãhª¨líÒB!rуÔ~2‰n~û"5_?§>E ±l?™9¨õHê&²=~}QúŸN±´£æ¤bš–¦^ÝD*µÒ>ùÞï LÇ®­hn•zu™ðõß9‹Š/ÛPà {ZÜ^¦f[”CG¿÷üIÅÕP Å,æ8˜KkwÊ€Ve>ÅW7!ðMÙ­ Yx¥Ýw0¿£¤Ón…ãÛm=]Â×j7Eôˆšö€…ý'ý@ëãÅΟãÆdt°°Õg¸N‹î€Y»‰Ü˜Ì62\†Ôà«QÕ±ð:OAª@úëŒWJ8Ò âΛˆ…P'›‘¦ßŽ^†2¾Ðô;áõ,¦¾ (ýêèëëÀ}YHH¿ý ˜!Hȯ ývôëk‘xFÒÕ莞õVIn$é=áeÊœ•Ð9×)VÀ7Ž_b¹WG/¨ïÞø¶KWù"¢¤˜›(θþ¢SÉÛÐ…¾ÝÍ“É(e+:rçðVRÒ½ý@;ņ„Ø-:¢}c2d_'L+¨8ÞXOlÿ‹L¹3²ƒ†©¶N|ь˲ (;v-´>7O&Цi·´ÈäEÕD)¬0ù:ç}‡ÐTøj´vIªhZj´0æÕMD)6éèT“y“”]AƒpæÝØ–f»rÁ*zö…+¡ÌûTô½ÜÛÓ™ÅÍ‹O”WShÞ½A5(î,ì1(‚m®øÕiæFÙÁS~>Ç?ū͢i"6ÍE¡¸æäâ·qÿ-n'„¢¾{çøb±µ¹¾ÌߨŒŸbï §b¼ƒÕ|QðG:§ñ²Ä~‹Û)½(ùùô'žÆ.eñ‘çûŒ¿Å5î^T*èvï (¾{ÑÄ…ñ0~…¨Ñ*lãb3(¾}À¤æ"\péj´Ž>…Ø,†ûº·›0p?Ûÿ‰„N5zF?ƒ¹=JÅÝþº†ßvi»SâG³ÆÛ¾š‘Ÿb>r÷ƒáÿ½HœKŸè¹W­]URßb8ï®Ö.í=œ;úZØMTk—žÝSÔ·Dt§øîEŸæ‚ö¿HèT³S{̾§ñ|û'Òüªýd¦¿<¿ŸŽ>)ö¢ÚOæY7¦ Á„ŽÜéu?)K¿$Š|­ÆdvO$„•¸Ù®Ædæ;îOG†2ÆjLæYc¾ç¼e¹ôl4&3M¦Aû? RÉ<ëbV°&¹1™þ†}Fë7&ãsÔ÷ÈBA–õb2ú:pÜâÓqq¿ƒ êÜáTܨÚâüAA®ÖeYØ€ì+ñùk5ËbÐ|P„¤Ö.=ßp–™#§Z»4 óewô†{þj?™—Œ3vÇAsµŸÌª…ƒfö%®ö“S±ï^ÃèZãÏ…­ô"¼®ä~3¹áýãÈ»ÃÄŽA6>¢rõƒåÐ[ÙŽp£âË64^m.ž³ŽŽ½€A³¡qó)¾³ IŽA$£Ò輂 £6¥iØ¥Ò‚x6ž DÃñÒvBÀb ¤ù•ö*º¾­Ç>ç@~]éU¾x@“¾­Ò‚Ž|ßÁÄ ‡íSté²ìŠGôëp‰ #2mëñÈ6:a$ámÙlò¿‘‰Pµ²vÆ‹Á?†eÝÑ/ê™;âüewÂ;½Ý9ŠoG¯I*™téÌÛ8Έ|η|Ng2q‚ŠoG?„45ÓøÒU7é#Ùbì·£'ôr‘’Q“Ù’¡Äj²þ+¿^ÊU€¶j“q„£nª1ídü*_耮¿?.2~ûÁdp=H[ZîíJ9éI ö:˜Ì~ጴÿQT|ïàŒÂQÔóÒ¥»,‹“سdõPqYŠÂꦅ c\–ÅDŸÀíDFKn¬–œIã]æÉŒ$ûäå+U¶á„Ì‚(¬—‚`º{@#V­]*tþßÛ¦„VºZ»¤|䣇âvˆuæ h«µKòŽÏ^¶ ý¯Î®?ŠKaÂ[ùvŽãà§7ƒÙqµÇ¯r¨úÓyüÀΞC)tl‰G¾N‰öõó„Jâl¶aù­wáø-ö²¤þó1P<çxm¨9(íNü_èÓzÐ9Û4¼ÎW+ýÀ©ð«$%Ý/A¢j6V0ùþ r?Å­áÅ4™3Ÿt%o´r2žFç#'²‹íuó#|c£•Pì=Ч#ïA5¼ÝÕÝÄ`Bowódöçô3•Þò t«êŽ>×wÞýœ:Õì{ÿλӾXA ÀÌŸâ~õóÔÜøTøÐïâÛ¤`µà;¸¯nqï‘·Š[¨øÍá…$4}}Š­%T/Áî—„€A×yOQlø÷;XúQ¾\~¼t/Of½v]LÙð§¸Yã ßðzhÒŸâ«]r´(ßÁ…·»µK³ŽÝMaÇøßU4ý+(;–ІKÁº±ñvRQÒi´ŸÌ7ãL§,éF3GØÏ[E—î"Ûîûn›ôˆ¶Çïs· Š#>¢òê&±Ó âë„P:°•®AÏFç.)Ⱦvƒ!´Švv€Õðæ›b$ʦÄw*Øi(§ø*@?Ö·8ø…•ûÖª ÅϯÀ;(÷T°“=–tŽwðåÉ84éû4ŠŽÜy0>ÛMÑ¢%WG7¼ ‹× ë¬·£¢·Ÿ S|žuµüÙÀ w¼)z烕À²ØÁ'ôvëí&åHOo–†Ï³6gú{œ\tõvô¶!‹ç“KÅ·£O¤ œh1|ô²îÅ& Ï¿§KwûAgi,ºÝ“Ù/,-_Ï+ˆçl·£ÿѾþטt5ìvô€ä6É ¼ƒ“ÙDKEá^¡KÆv1¾Å‹uÐæÄ®òÅÍ‘„ºð=˜Ì±Á ô+°Â‡ÿ`2;ç|aûÖÛ§øòd·ÿËèÙ°ë/šÚsš³1Õ7©áX@æn5{ÿœ$ÅTˆÝÕ¼²ÜYßö¿Ô {Ý?p-(]ÛlLæùhh3m÷¶ Ïyš|¤ÂQÔþõÌš€}Pöb×O\³“¡âÆdòµ_èVzkj>óÅSܘŒ&³÷+axä“Ñ€,töØÿi°ùsζÿóåÉ„~–‚#çGìk¾<™ñ9 ᜚ç¯Qµßåë-εÎó×,‹õ½ƒ‡uϧÑÚ%œÑ?›d:^E“&éÓÑö“Éo óJ¹S\!§æ4¼0]Ú@Ååª}{ý³ãtD{æšm ©õ¿6¼³=~ÅÁ¼16¦CÅ7o",1õR¨Óœëê&Æwa;™Éç|Ù†º@Ÿ²åyŠwpùBQñÇ‘{'ƒ¾—áp§8ßìŒêðÅ—®:“+°80ÜmÓ3¯¹ƒ«ÀBd{JóE={‚ÖÙž²Ú±ma±¤Q±œ]ne`ñRÅ·[®†7&ħîØÏ³ô|Ð  ´¯Š[… lý|iБ;Ay¾™!x»åvôcOÆP)°¹aÝCpÏ³Þ oŠñdhùÒ˺_˜Ÿ²Å·´|éí â­÷Z§ßîøÿãN‘à]{scotch_6.0.9/grf/4elt.grf.gz0000644000302600021200000051655613303015264016041 0ustar pelegrinpelegrin‹[â5L[¶µ6¯DŸ?ZøJÿ;–¥9%ïŒqþœd³°e©ª$°ïëóžÿ¾gyÝÿîû¾ú¿çßø7ÿ½¿kÿöïßão÷ï/Ïý¯Çåçßžß¿¿ñǧÿ[×øÝöûÛûûÝ}ýþ÷»ï÷wES=~ö¬ßïâókø×ÄÃïÇïâŠ+ﯥqýþtõëÿý÷¶¸©GÛß¿öûï·µ_ #úÚÿÞ'~9haÖïú;ãïû÷—NÏíßKãë×Ë]´ßÏzØðÆÝíŽ~~?Œ6VôöûùËÃÐýýš|íê½Ú¿ÞÃ’çù]ý°úgÙ­þl§Õ0kÿk-Ú~¢ÙŸ…¿mã_ëŒ(ÜóÐïïma ~ÑÌüý¿x¢Ÿþ»w3¨u3â “žæC£¿fú¶<ë¿[~?êwò†±ý~4î0ø½ÃÓO\î¿ÿ{þðõý›_˜£»¾ùÜaQ„!šü™ðë h!Éßh©ÿzú[˜ý»öë`´øsøàß1°ñûó¼1”GÇ`41”__¿爟ƨþŸq¿‘þƱF˜ØÒ–ßåhl‡E-úý÷g¯±Á¯ß/miÿÆo(XÔ"háƒßfü9<~®üýï7àæÆ8æ®øUŒ–a½qù»ÃºMhuþþ´ÀîïÞŸ]ƒÛ;?êá‰ß/VëãüˆÍ÷o÷VÃÖ£ž3îa,~ýºÛ“?ÿÂþøÙüÍz¢ßpqôƒüýè|.öD#*¿N÷=õð[ ü÷£;~ÃÅH÷¿ÕâÏ1Þhï×ׯÇõÅŸc0ì ówð§‡Ý#÷öÀÌÓŠ ö‰=Á™ßßæpZࡇmû×ËÛ´nñ¯û÷7 Ï„«ZüáÛa{Ïü ñóûócÛÆG-Ìü×s·03ÜãûÙÿÅúýWŒnàz'¼ÏoÔ¿†: ò…㟠ADöWáœ_ï#šÅ/ÃÙ?YaèÏ4-ï8û÷·cšáïpâ÷ï{¹ýçJFóÅÀ~CyîEpîî{»H·ünÜ_´:ãÞè`ƾ'ºY¯¶üºû~ÿ7¢6O½ðüBñë<î 'þsÿüvaÁ _„»>˜\¯3˜ž Ÿ¶_tGx=ÂõüŠî~pŒן_”ÂþŸGÀô×é¯ëïÃüÁ‰#bO똎~-ýlî'¬øYÈ~]ýFýç×£ÃVÅØG´ù±~? ?FßGDÌðhÂ>÷ìpÁ/á”ç'4aÚÏÜh7ü÷³þþ5ókâgËÚ?ï·>÷À€–6~ôD¼Ãun"£…ÃþðSçæh÷w×oP~ëþ'’C¿ññŠ8ÄÈ^,{Bíïˆó…?"6Ñt$ ß;\!Zñ,.LlŽ$ÚýGãS¯¯—ñÿÜ0§± òFˆÃ«¿îø5†¿¶@þŽ˜_84~æE¢‰N·„KHÇ€|¿w„·[yÒ½ä±aŒ§M<ñ»—a…w CŽï‹h2ÖÛ¿E¶|ð¸ún"ÿ"2?ÿ⇙ tÝeDŒ+ ìÉØFPü¾Aýßÿ-íîþ²5mºI¸áõ°¢eëÄ{g«ñûVc › <üCidPòénl_Zƒ×Ë9Ñf´Ý‡Nºá߀caçxâ?B§âÂg\ß]÷¢ïûE,ðBqï‘o!ö½×Jo-íñ‹—µÍ'£¹Ñ4õžgøÃŸ‡Œ6•®scH½¥Ûæì´¥ñä ­ƒ>øK OBè /“UpêñhŽ‹8Œ{d^ÁÿáûðetÞ§#£H DÁ÷»ùþÃ!w»J1‚_Î{ÆÒá/d¦š{ü˸XØî ŽŠÑÛ{‚^HÀ„£ëÚ×ÚðÖaÁH3)|bàM¼a3Nc8ú×ÀˆÁN»¤.blÑ|ðÈpd7[G³<ÑŽÑ-…ãÂøfkÃáÿt›Á6%–ÃÐhifŸ¤[dÿ–ÑïäÎ3mÏÀãmËT%Q´·â6H¶QÄÜ%èã¸U/|B'$}§óH‘ÞðÞGòj+ Íá=ápª?±>I°#¼Gm¤—£h‰Þ¿ô6ÀcÿF?@®—×ÂÊcˆHxjIÿ?Z»GÆ„ÿ¢çH+[Öh,þ©Yô!*®ŒUô¼b\Kï8R¼üø×Ý´¤;-hú)zß9bêý³ô½} lëþé(×¶/<ª&-¨èwTLð ÞVR*Ü`¡ó†t:ô0 D —ãºv ?xÝáXÍÛ0†©(KéDxÂm‘pã>¤X7Ä?¸=¦€ —ß·.† ¼ RLŠøTйù›ã…Gú'@¯DWùËêOÔÄlàûé_#{…ÑÓ{>Œœ¼ËŸ1½ᵟC^¤m8,j,1˜üƒ¥$O?ûEö*&"Ke§#¿‹¼ýáPZƒ ÛÞÈNáPŠ1òE¬®»éæ n£7$ô€]B9øëû8‚ßH˜pÞXû†Ð‡„ÕiçÆ¦÷Ž<é?ÑÖp{cNÐ’ÙÞ3ñYüþ<ž]Nl_ÚCÌCð,„G÷Ä®·¥g>`ü7-½Oú‚2¢ÿõ2½Éa½óÑÂËúÀ‘àÊv”o̧ŸŠï{|0øýû|úbGá„¶OYÝç/X}ŒO¥gNõRj͘çv¸¶2Ý©?;±êqZ %[¯ÆÂG¬—à)õ¯Ë€Ž–D §*`Ì0?–-^ÚTœá?úõ}ló¹×Lïe/Aš¨N,ä@Ýr¼±lò€B®$¶föEBÊýlá Âö÷%:-Æo#~}ã}x@8s¥Äü„/º ’=ï5tD‹58ã¹VB%V!~Ýõi‹%ƒD '–„Ââ°†ðŸq_‚ÊÊ\æëÐnÔ…ÖÒmaA,"¡.ƒ+Sç´´Øè¤)™¢Xi‰Üø¦])–jZÞoý XÆBL\ ñýXB ¯#íå SØJ\;&¢OMtY³2¬aÛÐOYŽ ÄrGŒ+|p%43þ7b +ô’<˪ Nx4!rF4ý+Gv4ý+ëM­\, ,¬©kŸã¸'z8ðq¨Ÿ™SGÀQî! ¿–zp¥Øç ‹•±Ÿ]Áü¸ŸbNˆüþ÷KJïH¨<¬R= hi&^™0ªG,,E_ñ«ßxFZ½o­¦ò €ñ_èÀH  iÝÊQ˜%2ìà Äç°Á†K®rd˜65‡âœ«¥Ë«a^ Ç “•H%¿F(†LCN–y®Tü«|þ£ª&j-=óeôr%ï66;MPð3€ÈÚú¢¡·/±iwÞß¼g8Ä‹‚W(L¢íU"s:Êæ íý²(X&æÑ 1í_¨j(òóiv38+:KQœÞh<º$<W2¨ëõ¾ð­ËD'–]‡Dt¢µ¼J”P8*Ì[ Š3Ú ›Böã>b‡mñ›øí~µx„€{,XÿÂÖº{Ö3ѰË¡±,ø¨e’îôþþ2ÜèŸ#íº>pÒ!§’¡;@ój9Hý ?¢E@[xjóklP=z¢&5K¸æ;uKäâ0Ðz—Uû;åߨ2¡3„.Lˆûz†P„ë#ÑZ$…#+‰„.y=î#„ã8<[ 9Ç‘úšZ6–õãÒˆe|"~Ù-•-âñÅc€…ß:éXØá¥æ}`"JbÞܱJœæNqôéœ/5›È±æ¬Š–®à÷±RýÄs‡Ak æWB‚7í·[䯏‰þÚ†žHÂð“y†ºí(æ¯á©…ÆÀ¿xà2ÓçOAeNÀÐ>Íù™uí4ù¥ëvGá÷/‡À㊈ç¯ýÞtT *ÍõáˆAÒ  XŠç)Kk6ÖqeÑJ‹Ç<ù 7ð*j¤(7šm~ ²gɤÙÂijˆ|VM0Ç m¯eávŽa#:„·³8qÜÛt¿á„)0b•&ÃW´£ã¢°¡=_ýœt¿pb»wZ¨*mt€8î€&@Uù þO§šÁDÇð~¶õ,zzÕÌÀm£ëFñû×üÖû~÷óûW„Å3±xÌŽf=ŠÕþxô…&½§•áoi cK÷/ñ+lºýý+ŠûcÖ``;ž÷¼^‰d³UÏfÆëk} J‡¹#šö錾{ª2ëËð‘'_Ý6øsŒC€´b¡—>@¹ã'^:à ŠÄ“¹g¬O}”GU¯þŽñÅD‰ãé‰hèþ¥Åˆnñ²N‹ÏÃâ÷¥À?—á—x ¿À§‹'5Ÿ¿g—Ñ>E‚t<žVň;1·$Òê°~}“q¾¬^ë‡è'í|°›G0ýÄÃÌ–#¡‚Ž¥h ‹ÐÒk&…ýk/*3ჯv…¸ð@²Õ˜b”ñŒ6ží1¶/}"!äl,ýñ^ô_hõç½áê.}þû_dµx–¾§2NÙO<¸±ùTGò¾ð#Ñ{dž¶úl6|þŠöC·WÓÿùøt"›G:¯Zú2EaˆÑ}<ìiì5G'Qß…‘>}Ò LÔxÑY‹rÅœ5øÅ_ÃUPJG¤k¢µx\Æ}0º Cð“šë•N»âÑ+ŽÀ ñÔ&ž¸$T¤&£8–×öGÞËêchð("¶†bDF]: ;pžï~ŒªG$ ½½nM÷Q+,Úþ>ú†#|àJܦÝÏlµkvÃÜfG M<Ý·÷Ç߯×V;ê(§˜·.ú¹êJnýâÛã ‹Pµ¨°‚gïËÕϰ…Å¡;ûN‡¿… L°ã{›µ{&t5ÖãVFÚ´-ž6O°Lõ7,hÆøõˆ.º6‰ˆH„Ë€ȴ+ÝâóÓpl¸!Œá s©±DÖïw;†6D˜Î×0/$gµ«`ßø}ÿá#æE=¤!h@A ʆ®ìal 5ÖDേ0‡[ ·ý}8’DX=0ð“•}oDŒôË$‡ÆxBdÂý°ÇÚñv“Õ’Yu,Ïjq/Ớ½¡6ñ@Œ¦?½ eâ•â;F³‰O¬Ã/ÑJ$ð€ùŽÀc,"DR O²*¨_§a`îéþ.þ2ƒ}‘È×h ï·¥ç?ÆÜï¸'½©Wæaý—özÄ4pOÑ. þÚã%™§­WRñ‹Vw#Àfx><Øß‡þŒÀW…H,i‡Ô?QÂQ’°FÉ.°?ãåŒ÷Τ‰…x¹ÑK¤‰·ñçÖ÷ý ŸŽŒb³ì7ÆÚc]20 z@5(Ï}X Œ÷Kô)¯{Ï+ ¢ŸV‘‡C^ÇCmÆÆÜX„öI<šåD ,bÖ»€6b ¯Å«G»µ)þÊKKhF!$˜Þ R² [0cÏgŠÅª$‘ ¦®ŠïEÊãîõ:8¨QQªx%øžŸ9JxûJ·¶c©‹ÿ1b®LÛöãu§¸Ÿæ1µˆjèûá%Ê §¼›u'’¢÷5Å¥n(ÎŒ7Ý–c‰üÈb2 ß®‘VßÇÇÍ1DK® ¾¹çu+úZ‰ÄÎH»1Œ¿‚.âÄ•Dlü•bäÜC´ÿüãM;0xÞ„Å ’rÏ4†ß0 0žÉWd)ž%mÊ€édöEÚx—/ÖgJÎï^! X†«Cj#TÐhÆý€òŒƒ6"1~‚9 E8ŠcREŸô1ž)"m U„5 Ã#¥EŸÇQ˜Œxï1ÀÅ«^ÌA¸ç!²;CöŒ¡3Ãu;aä{‰ýø¯~Ü!WÈT„3Ñß)¥ÏMzzÕÜñ>^Ì×>Ë{_ ú bÆ$ˆäk—7ë,i ¦X?}‡†Ü²"0¶Q¾‰¨w‡F‡ƒÑ€§pÇ`¿Ä' — :^í{Pq/k>:5t Zæ=Aª¾xC“H_«?Ûá‘ùÀ¦Ï€‡~ÆUðŒû@ëô÷ßÔõÜ=ƒ7âCØ÷¸g;ÂÊ—}2½P/ ÞÎ}èÀ•¹Œ¹LwLhÍWø§¸:ä cˆ)r¨Ë†Q€ëÅ“#´sÛõhþ×ï¯#(²ñrèÙ¸0k T ¼ÛœŒPãyDÜÜôíÐ ÊãØŽ4üçû è_'.¿jħo™Æ<~´¡›Èså$1þ4Œ˜R¥Š ?È×1j#ЉGŒ}Ä»@áQV;ïF?ËQ Y*‹¿ŒöŠªIîe<“Ø'úF{zÅ8ŽX´ ;¼qù)VxfðN59‡~n¼2^ïU¾Çú`éˆw—ߢ먨ý<£O3zKuÜKÄfn$©¢°oü<Þm4¨ÍZ ÌŒ¨—,v¥&‡±ÙÄ?P-Œvc9èeÉX±|‰Íh˸n¯4<9~qñ‚3UðHúükà3F³ÌXø²vàÕÞ©]­×N•g"ʼýÉ£ÝSæ£)Š;³9²KnñŠò'VKA§ò‹W¨ãÍ숩ïG ù“7µõÔå =|Üô¨çtmë™x•:Xóñ‚sð,PøÃj¬îàÜoîÐo¯xÛñm83Wx‰Ÿ¢íO_ñŽ!Œñõ-3~‰¯gd<Ø?ã` Ä7á W9/s=Lˆ“DŸ¾ûÝd\´=?hs¤¨6¿ÉãËJŠe¸Wû—è ̳('ߣ×[ká=ïTo#Æñ¢9Óˆu" ÐÙ@gø1è—HTO±ØY¼ç¡ãå¯úçkçƒÅÖgÄb)«D¬·¾oýàÒßÅS„Iì U„3¾à•'Þ/ò†¹‘dbP/y÷êIÔÑÁ)iand|Þ½ßåú¢EÀM]%géªi¿yÊÖ€”@X¦ à‰„EíY¢™¶ò±ÁªýÄ€1Þß•ðf´w6  à­wý5HÁÂã×ÇÊ«Àı}JbØâćx< > Œû€nV—'ÿD]aãá•T¤Û¨Xb¥- Ôæå&¢Ä‹‘D Þ†pˆñ"…=a\ð5F|1¥ÆÐrá1dæ½\Ó‹úh""‘|ɧW#­$"ÏÏ•¼øÒwWÍÇ›ÿã öo4"÷ǽ‘?#¹*î|ÒÐD ¯1¾ÞB˜z–‰<êº(‚6 ýÊ1ÅØ3|t³Ë+¯ëÙEM´Á„ZÅÈ㣀@þ¢ ¹²â±}ñùÁ«´0m«¿+añ>˜e‘6¬x·.FÚ’ÈBµè£†ŒHž;cä!'a-u¯(~m)„r"Âá¾ÓÙÆˆ…B°˜ Ñ {@3þ=þôeé¼6uzÅ.¿‹õñ™N·5>š¹ùbâÆ³3ðWÁø‹=ɵ=¡• 2çûè‰V\ÉÖø²â§´´`M!:Þ‰'‚ìÓW¼õÅ•!êüì%”alb:ã[ `d‹OíѾ8ð…¿7ã+óN¤ñÄ'Nï,:âÁß=3>œCƒ>[¹Do 8ì™(èD2¾=¸ã…ŒŠ(ãŽ5üŸ—çÏÚ¦Lð³Ðôë;"ýYRFäã§àU|ûQæ ©q›Úg -¼þUŠ'*_| 4hQ4`Û¼ÁòŒÏ¥º©²0=`Ex1¼€®u?-™1–yïĉþ s>aù4ö””ëˆù|WÅ.~‹1üb>㫳H¯Ó§¿£% 9Ø·_ü;[“…–¹ð~1X/ÔÅ»ÖOôÞAßX~í£þ„çg»EKœ":Î4ìÙ±áÆo„ÍÈÁÝ¥Ž{À°ÈþT’ÀQØ^޻ɄxòÙ m`”K$`/ñ0êRæø²(<5ºà@ä/b³%’W¼&Ž¥ñÛ6µööÓ®OÄÇo[b’5±9gÛZ`ÜRñb&ˆïµ\ôGÕMàÔßÏ{Þ `dÀ$`Ý„Q0|1$5“òFh…‚@ )Ïì÷† 7кL7.Ü4n@1>¿ñi‚-^Ž¥€#_ŽØ"H±š}è¾zÏYh~ÂÂX‹j~ˆpÅC¯nÈî^0Št` Y™fE/1ÖÐaŒv$1á‰ðέ0žÃ¿†¬E™BŠ„LaÇìŽRÄ[é ⮄O!ñT€*ä#¼%AjAh?®¼ˆê5äqåÓ¶°D‘:ûˆñýe7…úµ]P3ÚŽo~f&J#vôøÎmrE ózÁûë+Ä(¾Ä|ùxÙ´ëµ%HãŽéï&Ohp 'Dg&1Xc‹‹ßg›^R>™… …Oø€P qÁ(hÖSʰú#êÆao _/¼²ÞŒBHègÊÜŒ=üÆÕHSËÑ~â%Š‚Yèäê#ÊñÁêã·˜( ÍV :°=“?O<¿týÎõÄ”‹QŽmKŸqÑ›)¬ ƒ6£m¾½“GúÞ¤ÀÈ‚ƒô̺ˆ‹¿îä I^ö4ÿV#|O.ÌÅåXõ}îø¸µ«s<-d£³¥‘]¼RÓ¡°yÈtÐñ_‘â¾A;—ÏЇnÆm¿é„ñy3¨¸8Ò"P»ëï|‰ ÃBÀ+‹{Ÿfô7è°>Fɧܯ.Ž¿¶7 ak´9ôUBy.ÈgH's&¼²œÛm®C¿Æ÷—AÜeø(ä*F0šL@.îrÀ ¨Å7gˆç•Ĉ¨ßønsI~ÓöKOaÍj€Y…G¢ùâãëךB ·h¥•½ÙàZ"+ ž™Ÿ÷vþ²BÀ¿$ÃðsÈŒôg›¢DpoD[1*ÀÊûqe;ª…ÝâëÏÍ¿!V¢ê'Vñ,ìyôÜ©å ICDìÄ÷ãqç†øøõqw®‹#×°kýˆÈ¨,k‚°½lz›9·ÀœÇGìƒ_„M“zäÇ’EÈÝW ˆ¨ DóþᣖàÜ»©êôc‹ñ¯õ–/!¢ýßX¿ÞŒÐ"bWE:üøûÅsWÄ—#\ùßqe½CTû™.Üm`gí—HoñÝXµâÃÞ§ÈÂÓ‡þDC<œF”â“û_Pßx[Âc?9 \¯øv=°ÕYw\SÔŸڨ1~ÖŒg‹ö61Ÿ,ÐDtAAüµ=Ĉhq­ë>iUþûðC´>Z¢mÑ.­DÚ ÒÄg÷õÓ„É,j×#:ã¯-Ìâ¥h¶÷*ô%®°lâ=p£½ñÙ{Ä®M"ÚBÌhï–#ÑK¿'êl7Õ‡ý¨³m’ÇDÝA[Ôëk ÜóZRćë'=úõë2¦±[AØ%åŽ%E³%v`Í„{»a©8ôÏE" ­ t–#ÑõH•hfXHœ±Âæ—“ùG,ÆÌ"´â‰ïb=pð PÐÅái$àÓ}¯ÄˆpǶ -†tvÝCÝãS ‚U €Ç¯~ Öý:¨NÉ #ƒ2_gë„Ï ÆïÃhîÈû1Ô&‰‡ï×#¸øEl,T RRÐd%Po2wìY€'àmåõ¿Øš¤%LÙŽ¨=þ56¾rì)p_ÿÊfÑ2»ÑÜæ_Ã+-ªÁh^œ1Ó‡>ú=vJ [2ÜÙz´[XS쎔f¯‰fê"Ð@-ü7[rŒ(EKsª%£°éÞ×¾ò$Àßúw„,áO`®žb"bdÑ~3†0S°]‰‚ØÙå¾s„¡^yˆîF,?“æ·¯T€eAû#‘E=£ÆOŽíÀKX:ôØ~³…ø}°„¸32b×ùë}!†òC᎖v`3²Ùø ~¿CyÂûîà¾d{é('JAt?°#Üý@%/ñ‹ýTîhqeA*1=M>Z—FêW{N°ÏR+&“Þ÷û–ÆŒylyrÓ¢±ÇÄü¦÷ºCìmm`Oü5î3öXíÆž83ÆóeêÅêàI¼êß‚.)’ÑaÏŽ÷@£P-lD9ÐùðT‰XÙ-ìg%†Ý¦¦Ñfü5~¿"ýªh¡?±‹Í/Z»ßêP7–/I;,ݹ‡Œx9׎á{‹©·³óM¦xÂÅ×ÀÏPøöå U]쥴…ŒŒ-þºE¾X£0æ_÷û&ÖÜJg‹vuy’”ù埊Äk8#\ƒ¿Øh颹=ÅehpŒ>ªÏ[=Š¿‚…Ð4­^b9Zz¿D!\ËË¡}éå^=·ˆß·7qã{E‹g—Oïo:oùõÂ¥xÀØJ&½éä*hþºhÍ«@×m‰A7q Î|9Ø<#¾L»Ÿ#óÍ€j7AÛ­ùbÉ-\Ôã Áô¼þžJ/Š'w“Lì¯_”„—A@1@Ê&SoBò¥ÿh¯%pZÈ ÉìŠØ¬è¥X¢•-hâ÷}ØE€ÈáúÑé_IÕæO8ÅïûL ¸åÓ'Éb÷ªè 1äž­üìØä,,†Zì¨^[ê;¾À'1ƒíñ:(í?³|½èÅ ®ÃÇ.ªg¡2l¹'d,¶Šß_IãCÉ æ—açrô/äÊÒ¾hi$f(µDÐë_c¶ÙÀÛ•²¿‹¿ŽlùÖß¿‹¿F_=žý0gŸ±™U£ŸË=£†‘žé“w–h…À÷X`ÊñPäP…øÄnv1È ²ƒ¨!Vl;V„ i¡Íh;ö›Ú¿ŒXÈEô JO´8xïJ§?l?¼` i•VÀKó÷!_àæåÊk ìXÖÌØÆp¹ì‰½CBŒ6óF|ñ&ö⎑ˆÈë•Ï6⯫âdOÝHsb4°f±SØk ñû"èbËQGï &§åel@[ÍÝ…I/åMÜ5¸(•EÂc/ÁnÁ^^ aø×P+1®Ââô¯ÑbôJ §ƒ±ÃZ°>ðÏ’(¥ëÓQ›çþ 4BB;âņÁ¶oá(º¿S»ƒø¢‚Œ Ïë•Û‡Õñ÷Ø-º jK<È#!ຩºqw2~†}IL*n„`Çc¯Ádl¬è€1,°Mª –W„-$k'L­`¿AžúØî±.peûù˜Ã>n¾AõoÐ.|_D¾ G oÿʾ{á}E6¼ÓgóF’f‚ðñ÷!Œ€1j ~ûÅ…¥dwl ¿epö£S˜c[¼Ѐõ´Pn´ýEŒòƒM7ÞûB&¿$g×SÚ¿ÿBÌ€4Öôb‚;í…üA?J¼ómۘͽl#Ã÷gM‚lý…È<)˜,7 Ù›Ö¾: «Ï&íÇ_¿G KkP£ó×ïéI7´[Œå{Ò×QÑ4ÿ¨'”ÛTßñ› ëÒ× ßGÂDZW^¼Ù$–ákâã/ökéx&¶œûì‹uúðh mØÊïî ˆàaa¼Ëµ|!ôÍ·•Ù@!BÆØK±Jò¬yiè *˜?_ˆõ…‹!`8š@žÉ_£5HDáÆ…‘_{pt *ƒ>¾w'dtzS«Ây=¬Òúª|ùÚ‹%МɰpÄr(>’Á6cüìçT?p…ËbKÁpz‹½é=ˆj^‰_¤ð,M m$,yæ¡`ƒ4ö}‹munö”«Ý4Ä Ž´‡Û@ã´±þ$*qu 1p M•oÿÚG¢’~B§¢¯HÇ!ÑhW‚{abÿ\Z0Ä6oû‹×Qñ³™éœÈ¥ÿgsÛxŽ[_#5QOþ «'GtÈ~Š÷øÍ˜z‰q1ãvåî‰Ïa½¨‰]Ã#,Á‡¸e,•1?‰2!4`º(VQñ,[Ù8td6ù%ùsür¼ h1„xüul ±?wù¹…]”MÈü€eð:|<ŒßYp…‘ðë.B¼n/óN6zjB2þäT8òI'Æî°Ý5›ñ‹p„ãÛ„ÂÖ;ê‡J±ƒŽ¡®aZÝ ¡“ùÙê£=Së–ðq ZE¯ë1”(lFÈùr6úyµ")¯vÒ‘ Dzm%ô-îCõŒÊt ;-GLl-IGìÿ”­²áñ¯, ƒéŠdˆHD*ö1 /½‡+‘%ØÔ1g09—¯Mí 5»c±Oh$H3ãq)ÕhèÑdCÙØ…s=§ˆ)2ϳز•MšlüÞY*+ŽÝH„U_J&(ÿ\¿#kú/þþ%ì ¢Ùš5"î®®ŸDxîø;¹9 J¶Y $‡·b˜_"šmzâëŸÉnè‹ »Òöñ±·†1aTÀl%·YHâßâ/Ê0°`öíÒ- ÙE#@áË•ÚN  G &~” h¾Aé/v`Žç¸wDÕ»·? ‘ ¬P˜‚÷Ø©1bý»céo‡òÊ_1"¹öÓä)Ø‘öN+Y$„6ì1BÜ-Ø ÷ÖΤqË1°ÿrp,{—Úy¿lñ@¾gÞòûÇ—H°Ñ/[ I#h­½- æv´ZôY_…obǹۭ>SM-ý™ü?ü幩¯ÐÎxXKh‚Geÿèò•œFçìºKIðæ n~ø³„· >…‰Ù‹Ò™&=,&ÊÆÛqÿ~Ð,…0b±†VÐ0²AAp&h¿ ±†÷¨}"üøØðM⨚ˆúµ…§‰Lpdeß¿ž^Ù2ܪxÂ?âüûAÒR=©yDå¦Ñ®Rýrë%žX‘ÛCçmØÁŸûƒèÊ`£Æ\Œ¹·6¾øŒÍ·Ü»ø‰ à÷÷ œëÊ8¯&ög±ã{9`6’|¨7b¢ °‚»ëŒŸAO²ƒr îÀïâd¬êðøéÒ¸\nÖü8°ß…B)•_¼Aƒ¿ôä+·hùhŠÜooªº2Ó4”‚è´ap?¾Yøv«XS¶1YL^Ç·O‡Ãð9VêÃnoâ‹5:$nc`Š­ñÎYF¨Õ]/4ºbApZ"éÛº³•n1ÂÞRÜxY ¯º€½(’½K30E ªIÈž‡VÒˆH.³‚Ô§Ö}>nÏ/C­u{Ë•ÍR²T«ô7î${{ãpF$ÆS®—kJú,7ô¯~H™¥ÐA~k¿¤ ï½KÌz»d†³7€ÆèI,ŠÐ”œU?æ?C|¨ŽSã`.¥÷T;iµJé+ê g‰³{ÉÃS¼ü€s©+5êÁ}68JR×C(š;“Ã(t1Ħ²rË{wigŒÁ­ÑCSÝn¡¹Ñ“å÷vöø6—[Ò@YËÂ÷îö¨¤XÄq¦ð't¡$DÇ"À™ìÓƒG#ðÀ|cröV<š§~ ýžiÙ åùÏÅ¢ ïRƒ«÷PÎ Îá;âN ¦¬»ó÷=‹r zžŸ{’JªmüØ©!€ÐæO£p¨…äX¹N@×Êù;2vPÅn¢ööž2’#Ýü™X·²‡f|_t§ü±~æN¾ê‚ºØË Âý³%éS£Oàõᙸ£a\("÷ÂÊ]6¯ãÀ×VݲŸÝó[Žj€3z¤àþ ¯÷óý ì ølmm@h`*”Xî’¬PpƒSׯXÆÚ•3ÃDö~¤ž•Í, rx¸.SmÞ€|hPw¯sñÓ#·é8¼þ–S1÷;`o†Yîôjšd‘ Å~F™<ìdTªJ½sbq|ªò-õ‹£Ør%Ëöß2*£hrܘÀNœŒéühšù¼~âÑ÷l“…0ÊS'vEFÕϳêà;nåç–¾$™%Ô z£Zõ­ =>áèƒûKŸ?)Ë Ð“ ä—c¦{E<(5QµÞ¬‡Ø]ûàoVF¬øÞž,ÀžÆ#K¤á&afÔH6ì-–†9üšYlÍ™c¡Ê.DPÿç‘ò` cÞtéSNö”ˆç-JäѰ“Ñ9C![U¨”„µÍ‘Çix]<ϼ•£,ŒNîvÞKSŒYž¾­Š®U GÔÝi ÷= â—*`†§(1~<•çõìzEø%µ|‚ªœ[Evsx‘Œ›£ú¦=…F0öºd&Ä«¢F¿Õ!%‘T°s—›æ[^‡”ßþCù @2ôa r•ÞšˆÉPË€Ì #{/ãÕÇGûZ C„’:ì%@Vs3ùq[b*4géEÊòwT„K@Ó9—gç ]D˜A+¾J¬Å6Åï„ö½Óu½` µ‰ròÚþ]*%µž¢Î÷¯ NÆÿŠb}•Š2jÌ!×£–0di•ªxv’kÑœT7uO’ŠÕ4–‚ÉZ7~‡Ö£4„ á"0}»±^nCØŸU{oîG˜2@ÒÝLXîwÇO†âÚ»Æ/WW-¦ñ’E÷(¿×šðSt2îFh?¾éØ·<í³8÷lŽåÌ%‹¿Üí{U| p"J¤™H|‡Î…”^þf…c“)£H Rö¡«EžQ#~èï–DhWp>Žv:tÎé ˆÄ4?Ün ïRÚ_Nn‚nÐõI‡¾é!íBD—útåš±5,oÿ½§»ÛL Ç~ Gøoçëh!â:¼>ž¿¢7qbUãø¯;‹í{=WÕFq’ú ôÁz>% bÎÔÇNÖ=¥Ù³«6ùܱ«&_dâx ϼ BÅŽ¹0ÊÃLjÀ•Ïy¾Ti*"‚ï<pY5]G7£ØåaäuГÈ(_ãe}cgfª2wšÎ ¢ÜY”²óá¤Y·jÍ,qçül¼0é\ê:y4ùznÛÉN S ¸ôå …žÚ{\ã`Ÿ,'-‡/¨Íc›TQžU ÁÓˆQÜæä#ቧŠ?‡¦`Ij‹Nl•eÀÛ‹9‰\„Û "î—åCæ_5u‚vijTL*.¤^®¼Ä*§39µgÍŒÏ æP¡AÙ!£ò¨‚hDè(áaZ»ÓÿйóGur—W_¨brˆ¡¡ß_vhü3âë›[wzUŲ̀¯•7pl‚,2WÓî #½¾íhÛÈö[b…ã‹G:eEEðãË \¨èg•Á2êÌG2$Æ›g)ÌO¸º=kmìç=ŽuädÔé¬ðšGî2×™<ñ‘CƒàƒÐeŽõúSXœÇµˆÆ—Qo•à0}죒•Cu˜?+ŸxÄVJ *†k¢úeÔ‹A/=:J«ªïšÒ-ŽîY‹ä™ej\ ’ ä\lÖ ±¥°•ø¬R+ž2mÖ;aPÊÀü]ϵíõQX Veˆ"'¿Ý³ÖNѺFûH¹+ ­#ôÈó:E °LŒ¨7ºû*&yd`ë:Ë~˜ŒÜ餯­'çÑ×DU $pãGê‹í?‡?HJ5d’×WAÀSÍ|îõ^Юª>Aâ•Rb-Ÿ½@†mQÌá©ig`’œp´®šΆ…ÚUI:4±¾+Û}¬QZ}â9«0¼%TÓö{Ѹ½w9Hmô¤ÞÔœ7ûnïQ'R·r·çŠs× D"§ør\x’}Ïš´:Š˜œáðpÖæØväÂeFìK$Çi&úVÅíÓ^cœí.ñF¡œ…½Íã~WF4+¬ºÅXÚÎQ©sN”(¬z9úˆUMªœ'Ïu_wuâªì ƒ½ˆUæ1¬âda†G=ö>Å̃ƒq‰F5d¨ÿH,ão‡ïÌC»Ÿb*‡·3;Eí<ÍWèí@z™üì`•F»îpQ’nk¦µ¦ªc‘lGIQ-gÒ€»¤¦×0S5€ -îçdxã¶zõ~µ´•m½òŸ§V¥V"5й?*åŠE. Ós¾{Š–3ë7\%° Ko­÷úWš€{©‹´ç 4¸æ‰½©j0ÍÀB…²Z³¥\¦1Bá’Aê)«¬weÍrk#˜_í#/âbzŒúªPÝ®dØÁWìõdó»äk§«4xåGJÖ_W•iª}ƒkäeËá}Dc2BÑ‹–Bzp< Ìï¾zD DÀZVÑÁ›h¶+?¶/³Ÿ2ˆ‚»Qpj5R3)¦‘A³BºkJÝ¡¾{œ\{/egøFÑ䙫Ì\hˆÅoJ]4M¿Žè9ÃhtÈ€ŸËQ6RЈÊÃÓŠ¤k_õºÊª£u8cb‰Tµ |‘§pËkáè¹Î½âÄ¢ÿ<ªïìD­EË€Ô:ªëì WËp °è©jס:Z„mbZЀYøÜ£¬lZ~Í#¦øå)+”U¯?‡ÅøWÉ7Ž2wR6ûx ß­ÒïSä¤^Ýi_gPÈ‹ÓõŽV!–à_# ¥k£ä›Y† D¢ìË£¡k9XÙO®›˜`õ,æ=iÁW|pYjTXŸ´ òˆÁ„HqB <bÝ¡™¿œ{bÛ˜UÑ==1º2n8§Óœ ’wú5v}v”4÷ºVë /›(?|¿8R[=21ú@4ƒTµ2Ì«´F$2¢ÄbS¢ _ %óFŠc£ðtÜî´É¸+5´º«ëaÞµ×;‡'eˆ ‹cWÌÀàTÆb×q€WURJÕØipfòͨ§býO·ÞózOƒ;ϵ +0÷ AJéCãGjÌ›Qo™½:N ¹÷/Iü×ÌrÂTƒõÏLJÆ™%2E5¯?©WùzCù»N6{½C“­ h_e°Ž“À?Õ_>ìÄkáߨ.éY2lñbÅ©6æÍ´Q…sn¡¦†?ñl?Ö6¹£[æ@:{¨ÿ¡3±ƒ‘ÉL×ËËÄ£ã#:‹ƒžE%(ïD>6Áß,!ðÝ jîŒÈ$×j-†Kø1múrT#Q„?{»¬Þ =Yûí _÷JZ}Üÿ¤ë”ݬððP ±ìô„î;kQ?®ã„ï(bÚ÷e6ÀµsѳžQ{ó†8ÁC'›WZœ4˜é-$”€uÄá3x3hªL+›Æ*½áØÀTI²¿T*Ó: k0ÌÌá €eã’H‹îHËZÙÊ1¯`šöÅ Ë=¯¿•@šÞ3•x}–Às+?WyV‘v â*V·Ì»ÞÇ„Z˜Uí¬ùîFp¾JÀ¾ihBëØ¡Ï’Š|YRšÁuKg (|KÛq8èiR‹ëÊ øûʾG›O‚rŽÿO¥ªÆî•)#ø×2¹±ógƒ®÷™¹h–¼Ç໺F|ä!m¡%?’ÀZµKR: WœgûOé΋Oß—?J}Ñ-¤N‹··èÛÔ딌È|xe<…‚nÉ*i9¬‚ÏçÿÐ'×I3À*·(ÿšuìä­ Èø¡´ Â äƒ> ðò*H?`ãRz¯*ô øÛãHß¾N¡€`Õ{sU³gÊd/bŠù–ߺkpiåð­ì“&ŸfÓ-‰8Ð#ªÅ=ÿrA”×$8ã(³BNœtÇ_a±éyN¿S*Ÿ*Ž@ð÷G_•L7D¾ ð¹æ¤Ð°92O@€%Ÿ2:S?°+œyÂ:ÁÝ*âÀ>‹-cdjWÐêÍ8¯ A#âÌÞ¾²ˆ(©O±}Ð3’~d¶ð1ä^sÜ»Ì÷oÎ=)‚zÁec­ç %¥Cdùâ Ý"ËïŸ@ö뤹Ìxñ3 ˆvŒSÏ|ÖOqüiº9ßäΠsIA)‰húJ3REéìI¹7-»®ú›üCB]Xâj OeŃ’ˆóîìDq¤î^µÑákF/jãcØáÜcã=Dq§?[~îÁã´“€ò~”-w§fiœ³¤ Ñòð0À«¼’“³Þ)°îòâQ2ŸR¤¾²©C5•J›>.ýœ÷,Bé[úè-’Þ~ˆµ’2½Êô§¹³àUð¿ï؆JqþàH ntùhªÒ$2p‡úQA2¤À¶ê»“j2L­¤.Påîÿ‰J¯5.ôdÂ¥é,᪌£öÒõ襜­—rÁŒ¹ð©€%0¦1´¶Ïº‹ P8Óšç$w¶$ò§ˆÎ^CI(Šp!ëΜ>!õU™àý!#Y¬Z£Ä_'SîöáÖ‘>4¾ÒKüÔ”€”„mO?åšb€¸â'JÊ´’÷‰3ÍYﯞٟHAƒ[òÒSß°:Žy&%ŒkÂôîGn¨…¹Ù¹9àÌOåQùc'z‡o×Á‹{'Ü(çebôÝ9ƒûÍ®?x½u#ÞzÓ²•=MH"Z]DôáBƒÐáµ}¨äÚ|ÖT£š)º[èìʶqfIj:…±KU)”OZ+È>á9«"±!¼%‹¶¹>bõEñ Š_ÔÍ8Ùµ§( É·%•”}Ი:.&˨¦tǪüAÃÓ Õ]Ö>¨!¹5<0q»”jõ–ìÓˆŠ•jz‘]äGC³ÿ]Bˆéßá²K)3 ¸U# Žöá×ö%B'…/@Ÿ º õ+I'v¾Öõž ¯$ qKJ¶øOû8ÂuÐ. 1®«PÈÀ,#Õ*pš+H-e.yRa’e“§îg¤Î:$Ãa«`hæNןXd£#Nä–£Âô}X¦ëŸ°ê9F(C–žwåsë–—®*%ûîlZ#Õzï‡a³L›ÎŽœ_s»k¯¾±ÿ'|ÿ\57ÿŒ™˜›øÙCb”òG¨Z6ôLœaf›™F¿$eå©~ÿUóIÐÌyêˆ'ÝSåS€ö~ÕÌ *`,õ¤Æ¬„¢­IxÁÃRe¯C°@NðØ«b´¸óÚ@Æ­L’¦Ðpׯ’±‰ˆ™™wÌ#AžnX<%_µ"c—v…#>œgñ(œ?.½ykò8q0Räâ`½mJÈGΤ-²Ð4Ÿ¬Ê—-ÇU*Œ“ãl®$škäIÿ¸õ-+Ëïæ>éoNAµ!ðiµ©n}dbbÒóµ4@üã /;I"S¯dEhÀ B8æI p —G»}Þí ¿Ô8ç{%eÏí*Up5ídMt€$ˆÊ/li½ýÂíò)ô«ÊR$aÊÀÕ gdj`Óÿ2WqT)²*’YTðž‘Ë+Ìq™mÕHráËA´R‹VžR×|™*Õä-ûp1’ó¨þëwéÊò32²>IûÇNPZdå¢ä„Qî¼U‡ëpÉ¢ý>‹ý¦£N6 Gâ„ÍUo,Œ“¹ã—‹ÿœ¾.@#ßáËXe‰¥DìVê€ÖuLtÔcûd;ëÍÔ…¸N_HL*„Æ÷0xÜõ+@™©PžÑ«_Ö ò¼¦]ÞÖ%³°6òÛ|%"þ èE±È!ÏbŠÁà²w2~õ#¹8uIÜ0‹<#Å… FP­RúŸ%Þ<ÿÈÁs.å’Âø’ÛˆÌ8Vaÿ@9Ù‰Sеɮ¿b;VS1)1 Ða+V~!Ÿl¨ÜÕ$¥œ$oí» ãdi€„ú~, ‹qþŠý¸Ö²'…Š^±ɲi9ú–Uü¨y£jÐrvƒÚ®§p9|„—j9«iæAÓ*Òö‡$â ª2ù"D$1¢t ô)a¦ÆÛµà_µ•½òÒ¢örž”®ï%t%ø[žt 0%[ –ëV¬>'–˜.4EÚUʈF.z2¹¡ÆŽ_šŒjCËbcEÔÀï:¬±ì•ÇÄ­¨…Œv| Á]—öHIðK‰ï \ÂÝ#àêI|%€¡äfÑ)oÝ‚¦ð+¦nד¶XÈ{ãÐÎÈØOŽêˆ 7Ò25‡9N= ,/¨ÇøUF–~A€±ð–¬Ö½¯IØ”‰73¿#¡¬hWŠ×ªôªÁòûª B‰5Ŭ}ÿæt,i1ňݞÝÅaß'óâ½É«Ç8‰˜)œZj8»L®ÖÏâ$§”%‰×U·¬‚zjI®4|)‰d¡ÝÊHÏdÎÊ("M‚A䂽2ÀX?d¨AP ôÅ—·â_K^W:¤ù¬¡-‡czõz‰MsŽb Ò4êEƒE†‹švW=ƒ/ñ5¦Ýçùd@þE¦b%{6½`5„J…UÁʪk]Ó‘f*À›£Z,n‚×ú² _µ…'Õ2Cƒ×Ê®æÊeí;…+@ª2 ß¼u!ørÝöÉ‹c†¾0¤;IJ¨[¤W L¯KKA…óöïœûM^ZëZ©„Y_ºf½¤3ÛïÙ!M/TIU å+ñv7÷̹œýå \šÔS®&£ø*Žg*Ô(è¢ff6C äbÎþ_"€/ëYÞþáÚÞ9 e•Çuż’OÀãtªT­žâ]Õ‰Cƒ²@tÍ%¹6²é8·®X§6O°þ.å,êNɉ3Hžxúé@8K"L£Ÿ)‰ôJ6Ä`œ`]!ƒÚ<\Õëd; …ë–T¶¤¡˜ÞV†ãj\•A7·C»ÏY3 j °2ÿæ˜lnóËq¸¾rɽž¤â•Ôð†¢ n2ñaT½BGþ­¢Ü>4„0¨.iÆi²4FFp-‚*¡EÍ.…ñRaõß*qÔ5}a\nIšž[eÔ:i:ê¹RÂê$i6ëR?„³tÓ¤‚Óª<ìçóÃõw‰gåõ»þV$HƒY\ £$7vÖ'’Ÿi#$Lüƒ4¿þ¨3¼>ŠP\¢Œ‘::^ 8ã§©Û®?B½u+µ€ÔÊþ{EñgAž¬™©•.€ê3”@'KÈ^M£TÝÔw•‹üHî7íÛe·B©™¯¶ä‹d/{B¢åc6í{jRWÙÅ|[Ú?„Æ šFÄF3W÷T;äÒÎ\ôd¬9bJÖP+¹¢gI¬Š3ÈŸÍe+{} K8Ls±÷Yˆ€*:±.u‰GA W+6/Ù@‡\Zw©`çXãÄS“‡W i=´šwÅRÖõ¤þ)r`:Ò+ëÑJYƒ šUÅ’\{뤨çëû²™á^v^ñµß;ï_ÅEšFuðŸÕ´%Qˆ×Fæß ‚ÇQÌzv½á?ã³Z–„éÚB¯´£Eá8R/]?òþ§†*Óˆ„” ýü¦¿ƒj+Œ„ù[—¾ƒJë¾”zÝÕ‰‚ *‘PH¬ŠcÙRPœ¨$Ì[6½ïƒj«ee"´2ÎëËN ý` è4¯‰$Mf6½)Sy·’WëËK%X ÌïìZ­ra7óæÎ€m@ZÍšáBrPØm!OBÒ«£t ƒ9„1ËZôͦ‰ª'ÿIiÈgäˆ*KîäSÕÄÇ­hÓ‡ÍÃ3Ôƒši(­’= ÚNBd^_™è‰ààKIÔËcðäÁ†Qð sÞ,:Òbœ6“8Ÿ–b"*Aö‰—JßÅ©¤éˆÌB¬Ký`tÄù~þH°§: ñž·n _Á.΄x]Ú­°‹3!öäø¶±Eâä™^yktX`f;51þŒÛ³È D&YYæˆ^ãà–ªÙç‘H‰OhŸPܦˆë¤+t'÷ç`3ÉôfM¢“¿ª<¸ ƒ^—Ö[%BK'EíºÃ¨¿¤»Þj¤æ¯£ð¸U¤R1x1å!M§„"§°¯c¤Œ±\¶â]†7¾7çú6zËQUî0 ª3©Ww ¯ë‡qN,BC> ƒÎo©xU%§Nt¢òÕø+¹%­î²¿ï"ØÎÐÝ•ø¨ Ö)!} é2Ò.ZÄ×œí·Æ7îCp¡…˜© ÇÒGmu£ ƒè&æœSþõJçJøÞ%žÎØ€2ÉÍ¢'3;k”K\‡Ûpw0ŠvX®rwÔ%ƒ2Rè«ÞÅ7†Êº¼÷¹uÌÃòÔÅŠ­ö™¨y„+íç›ôà\Y_N È‚¬·v­†,rîÜöŒñ Ä[È‘Í+ìG%M°÷LI84ÅŽûŸòš²'bF«X„ pßJiÕõ|Ž¢ƒä)`v‰Óô{T‹â•9-ïë¤Z$ŠVç8b1¯R% «H¤ÝDêõY¶pë„öã¤ç”˜§nE[›åý«ä¡¥WOÍÒ š6EÈNÄ‚­VXvÚ"ÅaõÄY?Øc©^†ïÀÆâ;)г×χDœÙëíÖs2«™;oý”0.å\ØÊ­_±kdÀ)‚ÁôဠÀœ9–Ø1§4B |ä³û€ù¹N ·Ç!]¦"{N¸mlåy¨i¢¿g«qLbñ@ÓDÿÊKe´<à]€m‡áçÈm¢b¬w}HˆéõÎ=_p½±?P‹Ã£xý>Ý]'+F\qÈgª‡BÆr”-Ÿ³ÍÃ'2IŒ–—8XG[;bñ±r÷ q½Wb¬;ÃÇÿ%EÌ¿IŒžMsžmR$aÞ“N¸æk3€7—®nKVRá˦ÿ® §h;bNø[Ëœ‡—]HÖ‘¶ßØTùåŸLÅÔj©QŸYÚë´d)á3\yF™ôâu—ï© _‹{#¶¾Ë¡‘VYÒxW|>KBÛ<€fªˆ¤&‰ÍûgqÿÇÁ…o 4c“æNP“Е—sv¬ý)­³báxÚS\žy½°¤Ám•ä@¿2Ô7Þ²¥J®ï…Ž ¿«iëéõ—‘CÄ Óû]¬vn” òT×ýh‰e?u¬e%ü‚Ú¹<ŠWV È®S¼q`ÚŸ"$rž€…+€&_œLY¬ñ~„…! ½AP+V‰—ÚW‚àŒN®pü•µ9™’|ËtörBeù“÷ï’šÆHU#íÅUPAöTáE\G ZëÅ"\F·qøhé®8æxä¢ÕæmýæÊÕ’*^Å~Öã¶éòª‰ŸâŽŒ¿tÏË{N!™¬ v&!rF©}»¢é¬œ¡*¾åÚ½›ñ¿Y¸ŠïÛÒ­ÄõãM|{6r±ü4=žäÇveÍ[‹Ðü¤QÉúÞ¥ò$Ô¨[Ç<Ô2>&§QñÑ'¦¯’ LûPïùÃ/ZKhF/Ÿ[DK8Œ¤k–Š¥^â¿ÒAB9ù0§q4§Œlì$Bõ{B†qaüª<à")óÕõf6³ÂÛÖe ¿åDÊ"9ŽÆ0ÚyÀw'®ZùÑP™ô¿ÊA6àCÈaÿÚtz¡µ3,„…è[Z\4wBQ׺>;˜5"†° ¼÷ê©j:Ûï‘(ˆAþŽjÂc×£â˰yëC‰Dâ[½2ç“ÂõK’¼œè'±(\€J¤ß5jäRÌgêyœ?’$Þ8B#眾Ñbê§Uˆf'WQO_`EÀËØ‚ä^]öÌ2Ìoúöh;cßOE¡ñf\†¥Õ%bc œýéÖ— µU²à)³Pùàý° ŸVY!ƒ®ð$$ßc6O¤§»¯-m{±!/íð+VrÿgêgÏËGÜhéOÉ^Ö†øz¿÷ ãQuÂðTùrF€‰Ä:aH/í6ö¡Oˆ¼ QðƇ>Š>þÐa/';j„ ¼@ ï 8€–!šîw–/t’S3Å¡…{¢{Õ½ 0¹§¦TÇ­ù¡™+/ãvUîÍÉSí}¦lôg:êå(Hé‡H8ïdñ9ë­mG]Ç5?øCS»w±êcô÷¾sä£ðò1ºçà[Ï¿Yî£É’ÀÝ|çý]»ß8ž1ñ­¸ñÔ5§”yñ]FøÞ"Ñ€€P^~^zãä B•%Ô!ØšZ™QuæH þ/‡Q Âü’Ò>B·Å¶LX˜»ØÀLXâÈ—>dV£Œ€§›Ä¡¤˜g!0†©µêGlçï1&‰Ñù‰ž—Óý2VÀ%îÄ·ã—MFdÂÌñí Þƒ¾œÆ)ª¶™Úß>¿ñê ð—cQ¸5²Á1ÑF³í3L§'¬÷Ö¤—ãC›&~¹1\üÆéˆ!“HO”oyEßoœZ*=¨7+Iþ«Øq°NÖ”®‰ ÏC~ãDͪå¢,Ú¯1o Ÿ2¿¬&\Þ8®•¦†º€,ÑáF¼ŸÆÙþ`?èûÝ?W“¡O]Bmàª_@*ýð£óhü9„®½ý<¶:oo`£Ô)?­3¡”jd°H³Pu¼¥„SÒV¬Rqp¾F=¿ŒÕ,å~4&åw¦‰¿»üÔF!ÑÕ|µ0!fÀ¨BÎ-ÀÓ\~¹ÿæ²  AÐVB.Oí1ÎÛúíPbP(1í÷×`>¿œè¹Á½ˈªV·‚7vñþ)9¤Xí¦üxñ+; ›ÂØh€—”[¼÷ºW‡}&ñ ÙìFøÈõò«ÂÑg9ïù_`¾]øfÈm×Ï=ýFâ©´>°†vø„õz.wAõs|BÂß–ò_.ü)ʱQ<_\g´)ËšÈË‚·>hLÅËÏm[´éÕ7øƒ¦¼±RPkeûèC ÷Ò§\2ZyðÚ,¡Èæ! Ó˜D\Ã*Z¼emU3¨‡™å¨EïËYX½Û—4í8«g+/»jî㬘A#y?2wNîo™ÆáàÝ(;´§Ð0ÎÐ[†õ+7bàAÓ?½*8Qá©û›ªàõC`¼¶Žêð Y"jõƒ¨æ]£‚ÃXç>ˆ2Ö {Ð9`¥WN~%ÿ„ÁC§VX:TY¹k¬k”}-²K·€ý:þy´ú}˃t]­¶bb5ŠX¼y½WÜÐ^p‚¦$ƒ+Ü£Éø×Ÿ¤þ.=û,XÕ‡vHM,PAÆ×Å0ÂרÇY 8¹±.ál?þŒâÔ—D-ëVïüŸ=e¢+ŸïZ•<õ9ήJsÍ%6‚Cq­+,ÐËg%O>ŽŽÏË(|ó=°!ëL ³Æ÷Çõ8’tR^ý é¹ÎïR÷Â8Îe9ÖN(©3Bæ_Ì2ˆ`â(DŠàõêWáÁ° È¡  .ñ)r!wFã {Ò}è/Е^M³J¦¼¼×ÑZÂ÷U#w¹ç-[Pä¶4óD+©âÒƒI$»T¯Çõ¤òlí0-Ž‚j‘³Ú(œÒb?¤È<@Hó¢‹DyîC”.GëʈÞwIøJº2ø2Ôû=·½oÒã(BÏA•ù}™SÓ¨²âd3ƒâ$•èRDÖÌ–=k3éœÆÞÇÂkSŽžTõ‡ºSMaê˜ËlùpÛt{kæ[pOr¶§€§¥mY‹e%­’½ŒœRfß¹ÓYuDaöÊ¢I×Q^ÆôÐz(Öñ×8 )¡8óþˆSO32pŽG>’”p=™ìÐÀæžÙ+M§ðåõ;Û¢Õ8œ3¡²Ò´'agÕ¾Ïsäf¤i3EˆKÂ, Mk©_³gÞnÙ>û¸ª¸Ešb{Ã7ŽbL¼«ùÆ_aNXÅ'ÞVu°úq]i§¹©ÞæÒQp›ø>€¬9“½þXÞrá~ÿH¿®SZÀgŒhü¨úÊ|²š+&Nžælés×­ï>DÒ§âÿ­K˜/ó\¥ë‡!ì–¿P• PÙuK#2Œküð°jé XqŸ]üØö/´îºµí2GEiGÙ ëhÎJJèÀ¨Á€1ò6ݹìQ«‘TıË]Î rIÔ$Ý“õ þKíÚ,Tö^€¸ï¿Q¿.DÎ3vƒµ+zŽx•ƒïÌKèŒån791,ÉŠ³Ç¬ˆ«ðÒ ÃH<ÆvãIXÇÍ£ ˆÅý€Í×ËÙ`‡Ç‹L¸ØÙæsÛ¬fÿ£z|P0 T-ö¹6î²å1ð”ãÑø ÝÆW…yËÞâÆ¡2ÁÀ#õÂûÙVMž¹ Ae1¸ß9G«¨ù°R5Dª:U½ãx%!po… %!]Dp^Búvž(“p)]Ï» ~gïLW3óµŠ÷ªQs?d“"hšts‹”@‹ÕÔäãŸÒˆYrÀø×á1ÇïfõˆÓ¡^vœUÓ,&s$OýÀM±ÑÈV0cs•OÞý?,SÍø3&§0: Ši«Õ×öß7‡Ê­?á¶–QˆDâoLöø<„wà}œ˜FüqÂ:üºå ÐÅ”lt§Mü‘‚⌯÷Åç$“öÍÃ*QeÒTÛ´m¾ÙÕö2ýxï.Xà6@'”…O&Õ8¢ê}‰ò²ü¹ÎD"¦$ e+IÛ‡Â`g§}G­ÆÂpqQiÉJ¿òa IhŠåëhVðÜþ™%i~ÒxM˜H{×彀°¿ä5-nýŠ|MBJîž’B«øÆªp )¢‰³j‹ï³vÞUËÍW™€°Š­Þüã+Üó£;Û/]yÑAeD„yÿ[þ§i… ü1‚üBlÆøóz?hÄt´lIƒXÄŠPÄÇa=¶Ùb~À‹1gÀ³Æ“ C«Ž¬ç6® Qr˜k•‚Õ`-ÎöN­’Lð¬ÅÈßûtש¢R¶ßlÿ½|RÎÖ¿*Å o¥ ǩޫ²ã(PÅ_¢ÁdùÞùÔâ¸.œø"¨¤ïT-ŧ—©ß{f;d0( âä7Ѻu£xŸŠi z¿Žøâ¹L=s¶?Šà áEÁ;gWšŠë¬Y¾³€eÖzþ0ã|§íB•¾¬åå®§—'Œ¦A›#ág1Ú“ZÎt¾2PKû^0ðœš-³*žº!5±xæ÷Wà‚Ùý¦ÞçmJ ¼¶Ÿôdw™ì˜y’àÊÌw[¼Nêac9Æ¿¾Œä‹ºà µ˜Gx,għX–>Ì[:QäßiZ×ZxÿœHü£Õ8ïQwz´qzä­qjcÂ;훺8Oòƒ‹"eí ÍK¥ üË~ÿ„‡\Œºµ¯$(™7¦àºVÂI¤Ñj°(N°œõ!Ý6á#R¶›µVz1Iñ¼K]ØòS^gq1¦‘º9ßÊU›•ËïÔÛ±‘ƒ“ò;G¹J[OWHZ³Z*ã p¤BáQÃå»ÔF‚úÉêe†E}e(ÔhçÛ™¾ @Tïëd’ý.QðÌF‰[c;(Çç{™O¿²5ŽbÍñAÅ,‡€!’àK=›;ÉF* ²(ÿ úZ!Ψ0Ÿ¡ˆ¨íM»ït¶Ø¶©Å ø<éˆgÚw7õx ˜ï(8ûT º–ÄBÿÜÅŒ 0ŠâYh½Ò³gg ·p¿ï?•…VЫ‰6§h ì)Û‡•Ã_ÔŸãURñPÙ×myA<¥\móh© úŽ8á[²ýeêçÖˆHœ“ >™$öŒ}ÌÀclaºÁØÖ]Qô Kê×c¨$$ªS$bߺDB»˜–Œº«kqA+x$…„6¿Š2/ï—ä×Ì]#y³ý»^\H^µ›}Pðè@xÛŽïÆ*¬=I®]ÂOÓûObÔªI“é¤"!:zGµÎ %âú–²‰0“BnñL3JšŒvû‡]@çøª­ Nf÷ìè„×^ªC…‰ò þÚXR‰Ÿ«SOªsUûDKœ¸Œ4bîÃÁ>éÎù¢wŒÅËÌô@Q¦Œÿó/ᯠxºg[ªOcJ²ÿrì}ÕËñ¼+Å['±ùa÷=ùØ«Þz _qÀÒ&£§XNiñ| q‰z„OþvŽ7‡ðÉvq(Ç[^jðH›_SßVyÉb¬#ÝPÇ‹$qgÆ*.9ҳ鯷9á:¢ˆÄ­¾€³T” ,L ¢ÞÇ1läˆx8©QÄoC/ fâ&κRM­ïÍtÉ#’ ›2*$ç:©iÿ]?’v-c½“½ ¬½Ð#YBgF:Q岃¢ï£«;±nQœ{8ìF¹zêþëdÉ¹Ó uþTgp D‰ÝWC©ÊþòmCóø¥e ž+c×€µEƒC3@Ä·ÒAŠMòà®ÔÅAÊ¡“/—¨UÙ¨€ò @}NˆvÔEüµ£ë¤ö7a:3$¯=é/\çz²§YVU°<÷»xöä´ùÔ¬«JˆfÂhÇÌ*&(¶v:¿HɦD`ßéáöžX°5‘Ñ$®b×Ñþ—ëBÕÙxe-³^ÛèY=Çð‰£7,»ï´*Ø,ž÷?¥Ú#ÝÚše1•Á}Òê8`3Ãl‰-ñx­Q¬:®‰óJ>—8Lðmˆ69(9ˆ(¡A8ŽZL¯“Qqbçr,Auhìè;½˜j¤À<e¡üIä Ð. "ó)­ôòI@4‚³P`*Jðá…¸@?Üö‹ùh KFå§•i¬±ÑÒmëv2JC˜ÓÒ-í¤b«ÿ-¡Ê—ðŸÌ1#ê wDñ³¬D(B€}¬JƒUàjIRýôâ:„)^å‚U7ûyW¨P³DnEÄšÛŒü5‹Ýø¶Í„m–—‰]è{ìÀäär«ØŠ°“ÖV^¼å24üƒJœ4ú*bzE< 3ë(„ 'U–ú·±ñšðŠÌ8§Áä°MwÈš¡ñ=Ȱõ†x÷?E´tmKqèøï«âµdâ«Xjú؇<ùà”YI5×Ñ%b‹ - å“7a ­h•D4äÃU¥‡º v±<ÎkZõ<,5¾ñ©·sÞ|µ ÿ§vÐ?øZ‰$·OB¼Ãµ]лF§PÕ9ž¾™Meû˜¾ª“,‚”¥c:óF-W¨D6FÝß´ÙëÇ!óü¨Yiü±YdT»?žôÿ*²ÃÏõŸôÿQðÍào&¿}’ׯ5oá?g+\ ûã¼C’8CºjAÅ‹#9¤–³Q×W³té‰Úþþ8ÛKÖ@ÌÜ7²éŽ¿Ý7íR›â Ë7¶3N*9SH‹öCøQJT–Ë÷Ñ%ڇ쌙Üé¬MÜŒ(Ÿ+cß™“ø—€ÛëKÓ:¢%Ë€UÑ»ØÖ.SAKûwr's”%¦Ê7ãó¦ÃqM—Î(¸> vqvb¢ ¼{F=ÎfÔI)õy½¥C1½£G–RÛþ{f¼îƒ÷WZ ÄmqÇè%“¹ò¥ƒ[A–±Ç‘r¥µ:r/‰MY™4³„g0 «óõ5TË Ð¼3"4áêYíÛ‰è8ŸLš9¡Ï2EòÞ9ö8&2iìDÊâÆ×ðG6b™ãjÓŠ°= JÊœâ÷`‰‚hê=5Ã[©Â”*¼J|pM›‰BOfÎ’‚ †kçÑj'bŠØh+˜2”׬{O'ªå p$™â(©œL*~¸®?Ùg<—.Ÿøµ#iV¨ÉmüAŠJš]ܺëzË_b÷©KL÷E±i|TÞG›â€w.×ЄŽ8Sñíð­MÞº8x1-EjvªÀ4o%A‚‹–æDÓ™x˾çSe÷몾âBl1…PÜó/Êô­"XÍ´- ¾ÊÓ`—Ö6§H¦`1ÊÌ-(AF ¤/É’¯¸gÇ.sï´Ô cÕÔÚñǼ‚¥"|¸S¦g•0ˆŠÐÚT”­“‰‚ ’ÅOVgÃ(žõ¯«€t8GEQ-eÀO8I…¦ÿ¯œø*5úo”Âcš|V믚ݙá *x‚¹NQ0¢¾N'H™iV¦DÚŒ´Ô<À=„BümÝÀTºފ’‚ªƒøwþºîjD-æíLîe aƒH$öM¡ß*€ÎqDºÀÈó‘s„¯žÀˆI'Ÿ«z×á5¼—×Ü¥Z18ú_¥[©jm=Å×íè6Ëfqò_VÅQ`ùº¸ßWõ’"ð¡e1¼s [ë¿y@ÑíBþk”½ÿ8ˆh'ößÑúû½NöUÁb²UÞä~Ò÷‰œ…ÓĶ]Øj–h×™´¾Å¨a¤€õ¢×÷0BIÚrnâ7–°{y8â]8Qλ.hõ.Ñ÷R×Ã[IŽÑ«<öŽ?ˆB:†¥–‰Kf5ˆš™s»ï…3¼Çý€ªzð5ŽÛzBCœ(š¤ÎÞ.ù|ù"@Ñ ¦Ã˜^Gªza~}DËa)U-;€ pÞGETÅit=kk}ÑJ âüªwÜGt¬û=¼=ø÷”·•åýHÆôf>ì4œpGóÖ×*mŒfÉÞû$§ §j,ß´3u«ë¸ -íEô—™ZÖkªëô°ñÉMKðž «øáÓñnøhй:•(Ë”qø€y¡„Ã"Òq"^ÊVOÅZ™y K±†Ú¾ž´ÓåCµʱÿð²žr9Gµeê_†2Ž@fb>«.yÎhö¯ƒøèfP?àÜnêVÖNg &Óx9ßå e·¨[ø†Ç~n_ô9CT”>P¦©à@ÀØ]—sA¸k©¼Ì™,ˆ³úRh8P[±:ÎôLœXx°? j„<6V™W²z3‘/4Ü…U€IâC]“²Àz ÇÆkȶÇ_Æ1x3õVºÿf3rߦ梥BxÃÏ£Ép:)r‰Ó»rĉaá ”Á(ÎàEÈm5Þó›ø¸I0•ùÔÒIкó.õ™™ûŠPq.Â'HäÒ[WÛ\¹ô+Š\üîyCl.o¢ë.è¨(È"ʪZŸ%l3©»KÎ¢Ž ¤f$§Â ÿ§†Ýw¡ï<—oG‰“ ljÏë—É2nú+nÐé½(5vY§ÎÛ1ä&¬T¾HÏ…v:c]Ýi®çlWËW 9ƒGy8‡Ãù ÓËpìZªû]Ïá‰V>ˆdQ,Z¿>¡´§^‰h¡#Í”äPÞ"£èí€(óB¯\·`I·lüË;ÔÉtM†qÚaÿèÊÊ ¡µîÉÃU¾§b$­$" Çͺuy SNõóM {–¯êKü”ñÕ§J“´jmfÜÊIúå.}âÖùÀ3­ oˆÌz«“׎¡ŒÀ9Sé¾Vi58ÛÀˆ!ÝN@E4¶`Õ8÷$xäÖ›dž­`ÒU²_F®~¶9ñËaO¸hB $—E¸M±ò½Xæú¡óñ¯ñZ:+Ö~QáRRÖø£6Ïh­J%>Žü0û)Üåbl ;´µ˜BùHÂ/ÖŒ«âYd”ÉÛë, [E¯[›k`+³ö.çš'2n­ßG\ß#&ïï»$ sœxšÉù‰tr ž«º ÉüH ‚¢Q7Å(=¶Îì±i^‹ãë:U›Û|S¸q Fd‰‡Æé †2C\tuÈ Ý"ã!>VÿöCßñ•º#¿HEÔfâ+ºò©¨Ô™ó-‡zðp %×w:%%SþêuÞÇHÚïéÏ'ÌdÊ EËþ ôqÞ¤?R¿òÑO°úc—¥ w=õƒÅ‚øÃÄÈ(ºf¾PHD€8®Q?$-Zƒô„¾04¥«';Þ¤8È,™9”¦«ò t ˜qÊc2Û•zIͲyv£tø¬"‡ÕŽ0›rÎötKÏlÍ]qØLJ—µŸôZ==:ñò§çÛ»v‹‰… >g „'_(ò íæZËN;R>õþ ÏM„ð.ÓÚUTð”lS3åõõ} ?F>×Éx>S\vËÑÇŒ)3¾Q…¿ñ|û&<¬T|(Ž-X‡Õ½Á’©0•Ôõ¤9Ógº]¾yãT“wKVzUÙ²mÏ–›3±õ¦BL&°óùÃÖ•8ßP” ?™†¬¸T²Zí§$Å@ûS *N3 !: h‹}kD2 `„'¯àú®^ã¬L]&Y}¶’?b7>ŒPüäYß9ˆ=øõ˜GÑç;r¦£Øîô]ðÂjáÈj lôñö,µÉhöÓt/\Öu¦Æ”%B ãXqY< ».R,9:«n"½¤³?– ’®Ó‡²,>× L‰(³¤°ʦÈ_ågAÚ¹ô‰¦€«× ¿^r$IÏCkäˆi0 ’ÇZ'gÝÜÿ-WTš]—ÈEhÎÎÚ©ߤ®R-OHM@£5x~ô„¶§1g͈NC4Ð02';È·˜ Ô‰j/Ýo½Õï"M«­ëHj‰ù³¸à³)€õvDÁ1ضŠ2…_®*Ï$Ï*ÑYéîâå™]SHv²¸lÇ/óP>oßc5P*l=›¼%²@DKó e•â ¯˜ÙFŠàÝy¢e)ê¤cA'kWÝò ‰•¤V c VߥjYr°PÅ8}ä] ÓU<$„ñ;Ê8þÀ,ÎÃ4üÖǰ>»¯yä/þ Æ­B=M€Cš†vBÝûqnœ«Œlã‚d” ±oÔ×ñ€¾‰°]¸a*€‘ ¥ã¿<ahOžôÏ.‡`:„˹Äÿ•t‹šxÃÅoÑÞ;u¢W2œZÙ}ÿ*ðÁVŒTGÓ?oÞ°ð4¢õ ({ð]ŒÞöŽðÈw(Ô2,_Åáå)⽿¥ŸšÇËl›Å–ˆDcÃ@É‚BÙ Ä$µâãàÆôÁfœ‰8ºÎÇïø†(:Õ‘˜ÄÓ¿U´ÄND›]í@_Ü‘ŒÐùôY´lÿŽ·4mñŠ"ÜÎZ¬õ"ÀH¼…Žˆ¡C?¦åéÎÄ^Äcãï™Oï¤x#&c]ˆ’ŒF t‚¨¬û ¾gÔ¾43NúKÅhªÈuÊ”ÅXhZ Q’eû¨€y(æÂbÛ©ë,1Ž;­z <Ÿ)h‘,œÍ.ü8Ö1LÊJô¢/#ZÏA¬•¿|f,j…ûsµ¬wBlQ}¦åue³zÍ7~õÁµŠïãVܺ VVµ QÚoLNy¡‚Ùid M:¨”œÅaoI狱—¯Å56¤Í‚Ë&ìÿN‡,–r$„‡"Ö:Q‹1¾5ªêñy}×ã¨Äw¹¡„ÓqAj`lѰ<5—Þ‹Õô×Ɇô¤D|fÚ&Qg.êÕË›L66fÕÇ•3é»ïôøB’ r»'©Rq"a2ÕúhòÅn¾È67Rb0 k‘ÑD+2Þ®D¿¨,ÙÒzÉ.!+œß4‹#2Ø«ÿazí„Û¢Ê~­¢¢¼‹/©{¬ôöØ,˜Øm-¿órzEaâÛÏ+9;Ótø‡þÂÉ>‹î3·SÆìHžqj×»%ý:ÓN–6Ä,D²o² L„ÔdkòŠOœ¬LPlÚkÓ§Ò¦Gd“ˆŒ/'N÷˜Š :™1Ðð •2v„Ü^åÿã`c€«¤ áBþ„è®Éíýƒã:ºÇ¿Í*—~0q5xÖó‘øGœðÆa%6³'dÞb±Så÷èzád„ý]£€O}ï|À¡2v¦áV~™s;YÍe_E—Ë“ëÓKñ«ïÐ^ERlþ®)áRo]hÕôæů§;7…Ÿ Ùƒrhi?+h·Qæ~óìü~Ùu¨ÏeçÆëg|¶Ð²°XG¦ÁÕ*3¦e·9•rbÁé^ÙuæÈWÉ¡b†wç DÃÛŒN°ßÂh¦«YµŠó @Î:y¥f­fÞ¼øN³D-=ôÑ$ø”;Ã6yÐ~‰Åñûþ4v#ä' ([Ê BäóÁaowEÍ–+gèxnÔÍÝÊ÷®Jre“<¤ŠU×uŠ/t™K‰8¼ó]™ë/ÑÔdqF`”¼Fð6vg6F_–,› C"'p²ÍëYô‚5™jêU¯8!jq`×ûFÊ­D‡ËgO^Šíæ<Ž/¯¯LÔ§D §Úþq,*•÷û9óç„Ø@ZØîyJ,ûÁFÿrX¤¥ãîÒøÉÖ,'nä; 13§š`ÃyŒt}Ê/_ÌJ’åg(bÍ•åX͆ã,ªwS.±0鲚Ep6Žó{7‘7ç›*à(a`À`Í:>KøÇ›ãoUó®s*?Ðò#{¿¥ïþ#ðÓ3ÃlîÿTFïß)_[’Ž’’–ÉtksöÍ@û:ã¶m´×¹W½C@:¿R!¸7r,¶5ã9ê¦p‡¡qR¡ƒK ×nyƒÏ§âƒŽ¹³”é9ì$*äèõ¤Y;u@m}Îܬ‡[,ÇH‹Ç|Ì5ƼZˆÁ¸z»ªdJyÛ ÒÝÁ¼%«ÐsDç¹Ý•¾j÷ûƒ4§Iû—8o3mUG©” ­¿*‘CmÉF¹ ¤qrŸõGxëš%x´'ìÙƒÙ]ŽLˆ; ÿ¥7¼Ì¾•B°®|³ï8Þ1+Ì; ü’·›X‘z¬r 3!…¦bø©$åa7Ó‡ŽÛ dzl=åVù·‹BD üOÉÁÊ#?{Á‡x3N µy¡Ÿá šaÀžéžrê½ û,#òw*2qßd”l ô%A¶]ñŸëIüÇ©vEîþÇ9’ÒÛ#ÚB®¼ÍCjH*í®ì¯½rìÈî\¨`2@¼F?‰Û0“w1Ü·§çdàJ´öÒ#ìnë(‹°3#»‘fndëñá¶N¯ûjõØC±}(<窥xÎÒ;Ûï½$(•±U¥!÷S2ãÄ(ó¨[ÃV–6ˆCHíi™õûp"I ¥fÇðÒE+ªŒxDFåÑ8V€dóK;„@^Ñ÷›äòî¬bÈy¸ŠÄŠ8g$®êÿþþÂï º·ê@òðdÂNã˃ÑåÛLNh™ tº¾Ê"“íb+¨¤|Å‚¡á,÷Xps]Æá±¾ÊHºs9_Í"ŒX©^¬U¦ÒNF¢Gay3³nÕ!«X² —&ù’hŽŒ»¬zTÚëOÃî²ûš“fÛ¿Kc íØG e93Å!nF«ip3cÐ/`Tã>æY% 7½ À3Žd¬¤”‘ƽ%_˜±Ž~‰–Y:ƒs ·¤Í§7õ˜”­¶y>0S”G౪…’h‰TLÇÃ.&©08o‚ÆÁ¨îëÛo´U­>MI {¶Â° -I²Ký¦)Ïö¿NBæß0‡òEIõŒëp€FÔÑmÿ½Ký„fÈŒÚW@"Àó0ýÉöG¹™¡í£‡VŸ)½.í#澜eYøîBÌ7þW!ò 1ZHs˜!ÕÄÍ.nÆqiï))²þ^5M@ࣽmÑf_–³`é…¿ù¦Å´vjñYJsÙ‹ñÓÜ*¦I{Ì88ûmðÑ^Î;t* ¨^3-ŠšåL%üñ­"“_L°&œ`ù9l´ÐoWM#MÕˆ8ªðÓÞÞ†"G>0QÓ°aGÜð}õKXSí`[ ÏgݓɵåˆÇ‡‹Ô{ÉìkSQšrÜL #§®–&%U܆2A_ê`,Á¦YÙ·ê~SE?B@ —2avÝEû8- ueÁ­sçñ˜C]}ýÁÞÄCd¶RÍÉ}¾[Bâlìmü¹“£X8ÔÇ©œŒÔÀ'•(ΩÌ©ÊBWZàÜYHÙ§\bÚ—(œÖô ×Üiú÷ k|±$+hz©Ù×YÆý0R¹Õ+ˆh( §—ÑuÊ)¯ÿ)Wó’–m­ä«'Äfb&Ž!4‚Y!f/oF²´RTž™UŒÿüÔò¿éü'éãUDSújzï%hq¥?R?ûÿXÑÆoŸ Ã:ƒÒ¨*Þi[œbZúèu·‡ÆE#Hj©”P6GÞ‹) ão[ù}¨+Ó„Ïnì$}–•?"‰.¿¿¼ô=‡V¸I/B8³‘$šíR°8+ïý¯/Ô¤Š¬‚»†FH;@1pgßœ3û‘°VÎÌôi5ÎQoêwçE$ ÿ©EܖȸÕÌÆyMŸ‰Íµ¤yW¸°›ö+f³Ô*Θy–a©[êTKUo~ŽÂünðG"báá›Æ>ÅcW²D!`äŠd2ø|Á¥§Ø¤—™I.By\‰€ú›*¿­þpdŸFÆ]Rî“:•e0—´Ò˜ú~døª4 ×-¾<ðeÝᣱó˜½X¦|Œ 0±\\j_Ž5¦?ëH)N2àQRäD!!Lãôš]£NÞÕŽ´¾H~>Õ,õ¨Ú𥸷ÛwÞZ(ÜwƧ|{ZLðlÕŸ$‰{qi/EóÖ{q€ûå@Ú¶J"1P¢Û5ÿ´{WÅ÷6æW•ŠãšvÝ F¶fµÛb:V‚â•ïKüpV¨Ö⇒œ¢I7}êè›íR<Ã4t˜FÔqð—:Ì |[#0ꊸ­]­¨³é¡#ÿžžQ9gûø#“й´ŸJG+tWzÀUØ«{¿~u+?2‘$~w)¾e•U™KŒR÷}¡L¯ëÔ]„ K\Ež¥UJ Ô‚îTUšº½Be³ÙÿЭ4¾eD™Ê°í§þ5Z³ d_W’3P“_ªv|ô‹‚U‚C|áìËé:m·jE–ßן.Q^°Õ@HùQ­Ôkg~§±™ ’Ó⹟Lñ$÷¶1O¥4`Âû'Ö¸Ò—kÒ7߃?À„ëÄÊ#Õ%øìÖ²¯%÷â$Ü„i@xÛ¶‚¦uÑWm=ù,}[œOÔnšý‘ƒê¥Y_LWApñóJ‰­€ª÷/`ä¯/vEU\€ŽñðóAF‚°à—þ¤üÌ2©Ý~–¥Åíó /ãK¤‘÷}éãK¤‘8Œ6Þ™C_§Cdϯu;ß.]'±î­ND¦ ƒŒpJãйd¦ö‘Ð Þ«ÜcjËÇbâ'õêeʘPlqÖZRÇ©‚NDÀ ]§‘|ºÑ¼ƒ{‡ßÈmŸW(©T4_t€‹o+Ub –¿c¥¯3%χÜ8«IÆgÁ‹„¹;â1´ÌT?x—ÞɤãL:Öõ˜£´8r"Ë '©ãN(7wü¨<ÌuÊ©$†Ü{ɤòfd“+-Îðl4'P\éÏTÂv¾ÝF*©°þô±?pÔ#?¦%°I"›Ky¥“å­[<¶ÛÝ^Qy¼ê‡@øì+èrSKç}f™vóVQ'_¨ ~°$Eߘ%b½keæ‹D½Yê±i~Tù*•t;âGbD&-_Á q!,Câò¼õ×Òê:jõÔž©•¥[6@š]KçÒK%Ü}¾¼Žµk&-žº4÷’skœT„°ýÍNR†°‚ÿD. \uÜñܼ?i_ß90Ž=\»Û8Ò%5$s\g²þ¾‡Ö:w߯µÝ<»ÿt‰úìCƒÞ£Vò‹…qP*—b²W̘ÉðvÏ^Šëd"Õ; nqšGêxî‰ì×£ê «J¥›Öü[€ˆùÌC;-÷@ïy£›ÉÅ“&Þš‹Ò…Š¢,ʃäʼþÖ`Ô÷ðíCp`sÝÉ|‡+Þþ—ÔDƒGœHW}œP®3ÞùG"qð‚Ë!?Ñ1oé5`¼`Ù‰< ÂDzX·j9k¦¿|ˆ°•E”èZ£‡7 Ç]·ÈKAÂÇ«~„4Y%›Ät“3€°%Õzº©ðÎÅLÍT@Ë®¾P‰,–¡&ÔOýH’æ0žnþÍÓ·0#೺o±ýk•~Ó8² Oy '^Ï/ê2Ï|ˈGÃà/ÀÃÜ î¼µóF«û%±C£‚¤ &ðTFþde6;VAÕï¤6mKm=ª˜Ð,èzKV|þbª#1ö* •¢ë©B8~Õ’‚À6†ÁÇâ r¿ú,ˆHâðÜaøû“73"#ïeŒ©.·YعE<£hñ.­[Ù¿“µL…iÇ'd¹õTâL›ñÌÙ Ôð­Ô“[w*Ò›§rgj Ç„ï/ÉéLS·~õ#“À*Rh°°! ›È,än†³ÿrL\/qQ‡žÂ€ÕÌà5¡ÿ†=+{׬ÜInÆvàfM5~²ØŽCGRJï\=·^É—{¿“¦Œªôt!b%²1P‰ATã4‚]PmžkA#Úù•róúƒYÄC³Héê„.€}´è{ÀíO³‡§Z\ù«d+^É Æ­êE¡™^‹gÀ‰aoF'ǹ$Ç5hš^â„ÎRLÇ}_¥@@öÆù–™Ÿêg#¼±ƒw‹ý”Y°ˆgttÒï3b”h@_‹È§'•*„|³°s7HéùtåŽ]JHÀöQ“¬çQ-æžV®Jswºm–rÄ­þŽºí)Õ~ˆ°+K bT@é釹8‚-ñÜ€l`ŒäÊ)°/>,ÌÁH–rîý­¬\^æY€Ç cÀÒ««º8":Üïã»| Ä¿q²h{X@m<"È<µ™ãí6ëYôýô¤pœ××õš÷Ê VJ­\Y×ÉàëÎ~Ÿû]˜K!ÌŸÙL’I󣰣ЉSŠÔÎÿFÿM˜?w5"W8ì[†p)"B×À}Úžç¾ÉÞVº&ê˜;“úuêœù&€âÀF#cÙs;´»´+Îj;g½»*ÂJTC=MÉdÑ®“‡P@ñ³+#5ÇO×—xPkûHxÀú±†bž¾_ÉÐ8VR#ƒ!MéÛû›áçºûñº)ffÓ±6Ùü`¨|žÃ5¸:EO+íŽcd&Ãl¥Á4ýF“Ë£ÂöøâÜ(- ýž "Î-³“LvùÌ¢%&[ÕªR¬€)ê;ŸqNÿǽ–}Ç™¢É©ƒ{¥gnÅ sUw€ 5JtêA‘ nƒ¦'HŠ‘·Om2‹Áõ«Ûtrý÷ù®_©†À.㑼+jVG¸š¤Œ¦N+¾µÞò£¸ÛÞó3WËD±ä¦õÇ_Í …¼FŸì(kx•·ªeÛë»Ä™ žÞÎ9P-Õ}×­Œîεzš/G6O±ø8¥!nôR¥¼)—z+V5v/¡!ÔÈ’Ú;ýñù‡jvîîtÈSZœ³‡ëÌ[©fÚwòÐKdœOöÄ+Y‡™ss^lŠya,Ùq %u Œ³lWrÁèÍDZc¤—Û7‰Åê.9 yFbÒŒùU'î×:éB’^ªjüÆÊ‹[‰×Vl§ÆJxUº¨Ùq@÷Õj„kjÆS4@¾±…Qg$BDŸ8ýUYŠÒùó¥î¿8•™B®(hmOÙmü’ä0dÇ{$ýƒ½½xb¥g_Ñkœ —ìpºÔðÛ[‚6ÏÈÉlµII«LŸ窔lznqG{99ÐZ/[X LzéFêêØ°kâD5ÉöæùŠÑ}¤µ8)3co -xÆqˆ¨? ärçue8”Ïøíy¨cæ’àen˜ãÏ ïýÅú~Ÿ?ÜÚ\ÔÂAwö’¼êø½|6,,o^zŸ®¤‚h«K/Ê(îôœ,Á,ÂöüñE)ï=ïåW"ßÊ1sQ¸¤Ýa³Rb¾†ˆ?R {BêI| ¢•ª…êœ?OQô8E[9g ³C-/óˆæý5Ï2wtð­T ¼o­ Ù}g`âÀ®D¿~f¤@ŒSÍM–¡ÌùɨïW²tO±K•˜G'‹IøÔ”€±½PÔ´e„9—ææÒ“ýgÂX¦¡•·Æ‰t™ºý›FÂtþNN–î—ÉšrŠ´ìÕäwšfáÄ#p™´3t÷÷i_Íß³CXÑÜÚw1x™ÌÂ-,.Å!–¼“ËL¤_yÍST6Wër„w%BŒ)ÏZÍD·êÒ_^ÍšŠ¹»ORCàšéœIé{Œh¥=9Œ'Ë]-"_ípÛz(%'ŒÇÏ­ ΙìE] ºÙê.é­nU’„«„nu+ª!µ%µ‹áüÒyV1N8“ÏçÖ¶³õ(TC†Â!¡â‰9ãÜꊒšGƒªcàõ©VP4ËTDÅáÞžýq§#ÈPÇ_¶ØÊ¥¡L fAtáMn™ç¼êå—ÚÑñ‚AcêáŒ(_QG@ŠÀ,*üHq•©ç9KÐøUj0öÉÇ+¤Ú‘¨À:X⇠Õà2Î/QœÖ.šxë>âÊ<­àÿ6{5¿žx6”‰4ç»Ò©Su38jdýôJWÐ’Æcâô—ÐÙl.‘7ÿ7®?Äo‰ fɇÇë£ðÊ­,,‹¼Ѫ¹´žB‡Á’E@Ò­C:kRáÔέ H`Ùÿ{äQ˜Vœ‰÷§.); ?#¶ë.a„Ìì^Ÿé蠅 V·¦×{¥ÄpŸt—“pOœ&ì]4òþòÝÈ4B"rR`ôÁôv¯°ºê€3ö€Š¯}0ÍQg-K‰ïÉôehj¡Kš–@™„PÈc…éHÝ¥¾qê˜?2gñI~ž‘lsáÞ[Á ˆ÷ûPÂ…šÌ? €®¿“‰Œ=ùÕ×E‰0¸nÖÈÚ¶òŽØ Q3¤ío&¸æœã/‘¤óW&èø¢Â‘óÙ‘èIÅ{ß“ÿ±­Sæ¿·1 ÞŸrõ¤ª‡³&ðÙȖتÎC|öÁ—5w^jï~ìÖÉ6Ñí]ÒïõÊ"iE 9| °$jàM`Î:/K\>ÙyCßDh^ïi—x;4šÉf䄤£GØÆ¬Ç¢ÄíÌ[yŸ),ÊVAžK ¼À0×ñ2Å?€\1#:ÓDÜ ñG9‰QϾJ1qÔŒòã"Ïd^ß³ ½èoÍ X—V~ÞÄc;²XÕè1×öÍ­x‰KV©=ºæ$ªz¥‰ðùKä컎L™Êg]ßCÝmîu\Ù$~Dby%]0*]QŽ¿¼²ÏR,ïPÇ~'mÜgQ6õ‹È6€xþ%¾Qùº&½Aƒ¶3u7+maq‰y*³6ÜÏß!€/Ø'?«ŒÏ8­Ø4r:_LE‹¦9M«m{ïÃÆ¾ëWwòyÕ«ïÞÃRUZf¢ÞX¥ªb4 ¬W+ÐBfWÛ$. ¤ã˜¬GýÏ!HNÛ%§ÜyêÖ>Á Œ´iu‰ºJiŸ´éui܇@ÚG$#8q"U‹£çrjò¦ƒªAoõ{R¢*½^3î%"NÄ’¼»’ 1Ÿíä ÁîjÆ“/s8 ð‹ºãæ×% 5e ’t²]G8ÕŽk ñ×NœI “å«Lðꆌý-Ôúq[sÅN -výàH<Ñ;­T5ðÙÖ_‚܆´FndœŒe:QS›k*ˆã:¼cicS) MÊTàs)wòu‰O·ùÆ适éû'Y×<é þíëe}sD\±Ò™¨­ƒ]x‘ˆluiÝ›Þÿ°si½›ÝþŸRA†®wÜö¿Š²‘¢n”Ý3øˆÆÖÖù•ì^×É$XDß‘¢üÃë‡-\Z³š{óþU7p‰Nzª‰ÎêãöAø#ìpi„èt~>}P÷é‚‘BÝA?~05ÙAÛ ˆŽ3?ò°Ó€V>¡o”lZ¼Ùþ¬”è(8s‘ÙÛZa^ÒC€*ä!ŽóG™WöUuž›;:„³ãØ;p5óIYŒCÚl+ÓO ÐÌŒ¶!³ù,`$’¾r,#üZB½øñqœç—tv*nÖâæÛÓ ó×#Ÿ™åv+¶g]BFE¹žw޶ƒXÖŸ¿q#âÈyÓ‘²Ô|Bd½züôsh2¥ÔnÑ4JW-ÖÖwÞÕÒRâEΓxé6Ò+1¹¸°óÖ$À­GfJB¯Rùš‡ =ïèÏ!_–Q³¦•hlœË‘IÅÉB²uæ­i“·9¬ r©óܲŒ“lëËK‰’vzðá.@6ýn³'>úL¹·F)¤H¦;Ûîh s’©NG–#$qŠd*¶™Ê,F ­”_šV ÈÁ­o7\U³¢‚E‘—¾©q(›q5úRN®™¿ ´ŸšS$ïŸé,FÕ Tš ÷'ópîó(Fžè÷•_~Øßû6òÝþïû;›Ž£6‰BPÕögJ\Gñ É 0­3±ƒiιÌp¡Y=%å$»—Vµ&ÙÈ,~Äõl¼ƒN©f£§ôÅo—Éh65²†fÝ«$@`¿ß’‰’ÆLzšŠQ¯Èì|±%¶ ²ÌmîŤãîš•Œ·4Ò•Ÿè$ŸêÛ„N]}'Ü´ØÝN(¨Ý<,~³zj•Š|/ù>ªéþæÛÏ"¤¢C´¬óyTB‚‡\ɨ@ Úe¢,äBØÈÉ„aøêÉ*š‘`%#„n•NÙ4"+K¡TLÎ¥þYIt´Jß Ëæœãü±’Í¿EÄþÕ’QM»TeëiVÓÓJTà<•11’ñ™‚5.Z¬Ötb©Ãáö]™d%°ZÎg⟯° IhµÊ ¤ocöû&õ^—V£eaMB®Î/=ç=•hC@<-U®y”ä©™jYž ª]—ˆSÙ¡´Å8fô œ^î¬ÞœlÅécfg—$¾…¡D†%RçQÉñ·.©W&îk¦Ø sŒAWºkÀ©é0c1»îfuÈ„‹Ý³k'M¸½Iýą́ç\”ž%+£¨ ”[h5õ!+ÄQ\æfOKOr3n%êÐÑ9Nòó\S2Õ‘ãwÆ;Wù»Ý#7Ϊ½ôЏ¥vô©¶™dIUYFZD§¨©ˆ}–(ÞßË"nÝTÖÐ2 Ï¯&s¯lÇ4°â;.ÉÝY­¢aàõ]}q‰ ¦TÔ7Bø®Kû 6+9þ@ZÇH¤d™×<€ŠƒQèêÆ’xú¾Õ%ÀŠ’²±0í;7J⫊•õ)r4Ü}“F}Ï"å eßSŒÀSµFœeÜIŸž%Ÿ™sƒÛ™^0‡¾é žL#¸ü(˜š…œ„•t=î#'úì9Á[±±±a‹ ¶]9m~A“ÊÜ“7£´;ç·N!Ø9T·¯P—<ÍuiêŸ7‡šEˆ0Q™ÊÀR›Fô‚ÊT—Æs„ÈEÙÔRÿG l_åZyë¸ÿ4L L{ç­ÆZŠj^Šñû€…œ‡"ú™U¯3B~À¹S „û›7Œ÷ 3?ð£ê ™g™n!|J¤Î=o D`'fw D]˜]“k2‰Æ™·Æ±­‰ËÌ££d–hŽ®žåR¸ŒÄq>IÈà ÐNÓí>¸ÓÙÒ‰V¿rfêKøŸ;pûJ0gje-¢µA¤pA*‰mÍ^о¢E =e[{ä2@­dv´ô¢YÁj<8ëÖÖ$u @h$kŒ’;ï_dnåGB’%ʬ"šÄi¥o+•eU!°ó,Ü 3›lœN\ °û$Ådv3hÒš…y&›ø?N‚t¦…H•€Œ #|3g5br‚”&¤DÐ=ëçØ)D[Ö4¹5ÜÎyl8sÒ sþqk¿ìºË´^dð„Ãô·ºžÒžãÛÅNnïáQ–ªO/Na’.ÌéÙî°tüaÉšGôCOÚÌ~RaJ Ù‡]Sm'•ÌëýwÝÊZ `¶ÖNöáÛ§¬‡ã:2N‡Ü*LÉ" ÙÓëÈ£箚ƒØ|ÍÔB–¹êÁú4ÿ–.}iCAF} ’ªº31ÅÙuI—¤™/þ1évŒšoþ2áuà8×cnéÑ ;9µéHO¨sИT¾"¤ãrȇl ]J:4N”=Õ7G‹·|k°G‚”ô‚˜<ϵêýÐS›lz ¸JáŠbbqTðäXg¥Ž´ ¬ŒJ*œþ¦p±µŽ $b”ì·,íi¾?X5.ú¦äµ ˜Q:¢ìã,4¥ðSX¹—¢ÐÓ~g€§ÿÉóD!Úß꼈{]<*ƒe¸ýUÕɨtJ9yG‡YIŠ‘ÃøJ®Æ2LG×á(ã¦ÿ}â‹áI9<0ËÜÚr½¬æV~$¹½àG‘H\—NP“!ÈSF*–)\_¦"†6·êš8šù‡8¡1a¸ìö•@& äİ*Ø3póùË7Ê‘R:²GÚNQõ:È…´M­Ž\±O`Ýu‰ô"Ä4¼Î]ÏV ×Ðý¶ŒB-¶x¶”æ%„,Ù6§iä]ÁIû¦ ¼3€u¤ ýÞŠPáá8ë%EÏšR ùÚìV’êùƒYCúpü€Ÿ“»#ûŽ3îšÔüR«ÇK!? w>`‹àx‘³A%:h¿Ž•Ò4ûi\’Û›I94NÛKiezá3o¡ºÊâyÿÖÀÈ7‡üf/I=…I.tïÍ_I ‹IÙÅYñÎÞ¿Yç>’a}铉Z9PÀ€ª mD¯‚ çQñÀÂäþ·œ˜€ @r¼WÐKÓ¾¤Xœ]£} ÛH2Ïd'x˜œ§A'àžlz’)„^¿rW+Ÿ€°Ý/ æc8 ;ãðHûO1â^¸ˆ’ÎQ¬ð0ïYÏ'¾ £M·„¾ŒS ÏYZÀ @*8Ö‰»Q}âz@ûԡɨ2VÔF«fám!ì)M£bã¢Ë ”»ºuõOÈÌ3÷ÙÌ”’`]#v0íl³ýŒóqHZ¬°ÍÒOqDÅú£2©{|w°GƱŸÛ¾É3P,Gº‹sÍÚ:•œçÿ–VÆý”F(€û:|À`šž@s|˜aƒ±}†ãqƒAܺþ¤…ÅS—H­dx½"Ðù}—;’í ŽK8‰p¾yÿ¨iz?`jC.ÿXŒÝ¥6oÚ âVŒàÉáUY9È´d²FkhÈ÷À”þ­ä…É87ìy£¯¢šAe¨ûNù–z£”D„AíwDÅ'F “§šF™ŒX&¹|HÙ®€šfrŸÚGŽâ…má¶Ÿ8‰…~ ¦i2Qï9¾'¾LHO9¡¥}_Ä­ä“2Ð*C-j~°CÉî*£8¢Gî%6"ê¬#ó`b’Á²˜ò:Àç¼Å§§•2¾ç!GŸg¨õîys±Ÿd,¤çqj%$ˆ5…@+Iéià[CbiŽ#$Éá!ûßqƒ÷˾l:…À¤)èN¬~’‘S±¤GÀ“d‚C+ áÍ·T}·t9&ýž¼D#IDqiÂxt“KZºu§2Ä1·ú6…ÎþÉK ¯´ç"Î5ÅìZé›uÿ¡×ÄÜÌK :оÀp^$Ã÷=JÇìl–çÒôX$ë¬Äq€K~d >¬‘ëR)FÚ·Ò º^¬fÀ™"]…Ä]»”8ŽmïIè°;ç‡ ä'\d!-,æH¦Æ‰Mý¥ŒH˜Ýe3ÚÚ•Ê«&Œê–Ÿñ82§¹v°‹§Ð÷  _^ÿjô ˆ}ÖµŒƒlpصŒíضþ`y{ý.ŠA+IJéÛÿJ]Ê*Eñ|ôÓSM¯?Xi?ÂAèô®ìêéï æv†wIŸ²=û©ÇÅ0ž×wCL‰+sXlýïÜ›§5¯@')G>–-[qß9aê]Ïr(xx\PÒˆ¡Ók72`Æ&tLéÌIoQp£(_Ez~¹ÏåëWã=¶ùé|¬ÌIHIv%–اz½²bß>AvJ‘dx˾ï 8ŒÖên×ï€òœ'¿Š"»¬ØÙ5’Ÿ‡áöÄ€¦¿R§L©c+ìÿjò6ïŸåULÿÚÁçsÍSãÌDņŠàÛ"VŽ?lŸCµ„>í_F}ÓëwNI#gÆ£éÎŽ£ßS¯]äEÂÀ_"•‹§:®ˆÄ¼“çÀ˜\ ñ –¤îþá(3‘žËZÑ>Oâd3"mvë©ETÃ?Ì€¹|?ç+«ãðƒÇ ØÜð¥% ·©‰¿ŠÉr®“ ~²é Fé˨bú†.Ÿ ÈUÑáß=¶_)î„ðve.«6át¶ê@Ä‚€?#ýWˆ‚êÍ2ë$b—ôÇùgmÃÍÏ\sÍzs&$€`âÍôÓ§2?`Ø**åï¢S€i#[žá­£‹6Ö±êŽDÄi²‰HkÁ:JGÖÆŸÏ˜è.ü gú©h³^ÌÒÒ´Ý×_6Ñ€Qvz5ïÈ–©·ÅÉ}©†NŠ%ÚãM‘⚟@™»çØ÷{Ê;@0ÑblÛ7õM9×:Ó](Fà Ó¾¥±ÜéVÚ³“2N`„$N6t¤JöH]®ªlJ°AMæJ'‰ 5Žƒ8“Ë©q+U¥”Ï?%diúOI¬½ß•y"õت›Pú9D÷‰¾ò‘ù%”Ì›ôäââcÞ€ Á+í)6®q¨PºÖŠ+ B¼ÎO—0tÍ>ØeÚ)(»°[ËØ·Ïÿz#% #ì•Pâ:œ„äû&½U/Nœ…„å NZÝÇ!mÁÜÖ>v_ê±ÈÝ£cnü˰óeÔ‚Qµ·hå O,#Zøªª=ºº°üT‡}Tç»Á¯¥†3Œï¬7±ÞªëR¢º²t„¬ˆ ¯´ Y¹NRƒk˜ÖGEí΀½Å5LãÑu‡ý+6ÜÀY:1æý¥3šF"Ä¿Yë+ʘv£Þµ‹ÌÐz¥¿•ùä+òkB“a( êŒ"‚*VSœ¡d˜ß2h¼'àÏɇh6©Œs!ÈŒžŸ ù©,æ]Z·ë!€â"l6#jšôâÆ# ‚ƒ÷9 é8~³XÐÛ`˜@]~ÃÈÓà8!uMU ™âcÈ㫸¦¾“•¬S"ós(ŸuÀw”;\êu’˜ÇäQ=)X5êñ¢iÐÿ¡ŒJ‘r'Þ ¡D]1ékLjß|Gv(6VÆm&Ï9ÄÇÙ:y4fÆé{þ¥×‰Àë-ý#ãtlÏ ¨Tí íM]É‘ö¡lø)u,Љ¤ÖÿáY(+wZÇÉ–(¤ŸÞ´™K: ôÜWÛEâa±š:b·‚|A99ЫcÄE6´¿b'ÂÊÉY_;e+Z"0뽟Šwµßj8Ñ4'9&›„½®ãÖò²l·MFó#Òg·Eüåõ‡Û;GÄ׆gæšúî9ª™Î–ê<=›3w¤p\3ÿ0pd}NýL„8ŸA& ô¿,ÀåßÑûNÀì•¶}¼€$t¼_Yú²ë8ž´‚ãý†üÍ[¿§"´Ý¥)žyWKǹzSMpjãBÀOn`b d]X¾w“²øä€âðÎÈÌ¥§Aq8gAF.€L€Ä¥÷=®0ï;~Oì\ëO Ýukd!gmL?—ZibœqÝ+ ï ¨»"ù¨8p˜re¯$ÜÇQšôêSúâÊï¼K…gšUÑsDï_Äy[)“ñ:÷"h>RÌ+ ©s˜Ðû‘&^Δ(Š~íœÔôÍ*ŸvË•õÞß 'ž¢œ˜óø©½ ϱ.) ZÆ¡IQ\Ιô1§nu¶løÁ+xÇmä z#ߪ[t_ äý½ðέ­0æ Ê…¬]—ú{0–3óm®Gg:§×dJ¥}CòèºÏ²Ô%^‘riºƒÄqùüýÓí=N&"9ºûK˜A}KòԷͦ­´:Úo^ÿ ó¸Þó^j#aìæYЩmü&ÝþÔ°"od2î£4Ö}òä˜-PH÷XlašgO±0m­¼ñcÿQøØ÷Œž ÖLíKnj£ŸÊP©©Vn¡lö'ÞÓO€Îø…&Ê·:Ãj¼á<4X=»…ýX]PÕ44%ò9•AßÉ«0œÅϔȫfê?—P¯îÌâúÓ”».í£.wŽï«ѵéFáôþ»òËÁæ$×UƒtRõ^§fBÓèš©*ðE¸"\7GyÚ×W̃¼=Ê2áÇ#ƒM&2Øöú7r?ª6Ï5K[@ùþ ;ùÊå~#N±hýÅ^'· ïEH<¤I€¢ysÂ4 >ê·[ôgøýÁmèn#cñ.óËwx„»Þ·¹r~æCM¦1´¢"uÑG•L:7s^á{_ÛBã”Aa|T=÷N‘Ì¥—jÕ(‰•ïA– ЦHÒs+4Ùd)¨ö]ŒéOõä«•Y˜ ¨»†Ùž‚Ö¶¦DêÐ $"ÙúõŠ)‹+ï,À9ï1æÐ‹ùÑ->¯ûâ!жö4 ÄcÚ~÷Ážõ SXzøfjí|´ï¼OQûB0†aݶOtEŽxz«Ã~åÂUêϬK=#x'¦žP¿[ópä`ôq¤GSŠšß-÷®p•?ø ´´Ýßò099 h[å€,”hð:Ë ¥zy/¤Ñtß¼*ÛZN>âˆ}ïòjã€9î;íäÈ+ô0Ѝ×8¾Ÿu«H¡-wùeôƒ› ù*éD„ñµ"¾YmÜ2F¹ùñ:pÆ™ {SîÄt/é§i`’PI•îøÇ:F(â¹úÿä#KÐúöU ÷bìˆ,æ~ïÓ­@ ¢0êqÀ‹çñy×Шá HO½R·×wyñ¯ˆz®ydmЦñ¯¢Uâä®[É/¸.ŸvbUxåe%Ì2UÙ÷þ»"€ióŒ×:Jv mÝ'jñ´;‰º J†¥ðÒe^WâcÞJÂ}ZVOͳý*àÇ~*BŸSŠ‘Óù'Aô€$&rÖø+oñ`D×0ó듵oœë"m˜¸['Yð]¯ƒýw^ÒÿøT {=ò€×¿a8mõ),à5h?B¹pä+¢ú@{¸y·kÕç®äÇx9þÛ%]'tzõ?‘øB,xH†,aÿ°8dh„v#»„«Yr˜—ënœz¡gÀ¬pžÌË/¬£LÊ—H ÓÏØßXqxÏkWéš–¾ˆS¾ŒšÓ–)+Þ"œ‹™C#>P±ô–i$2BÛ 4'i=ø÷;„—Fõ ”b|sü‡ë¸î;ñùÈ|åû-( ƒô¡eûª/ÅË“ƒH:ý8ÓÉô¢2£>“Gl0¯Sì4P îuíAfTcq![šÇ¯zgøE¶îÅNå¶éâq€w¾Q`ºX9˜ÕöT†ôqQ•KYk[$ÙÀ%î%í Ä,šÞœˆ¡'Ãtñ廒RŶíÉùïØTŸ´ÌfDx€ø©|×< xÒ  }*çõÇç;Ç]&³‡£”=;|ÈwÄxyƒ¾óÒƒ¼~­^:L{xûF×è5"¢ÔâQ±É'j³ÆÅA=6t§€ŽRšQóšfðéB#{mi&=ö'd–~|²Ç8&³Ó·¾ãâD‹–¼>3¤™3¨\^ñÒËØoWK¯yŒ›ZhØÖw€JAÛþ iÜöwÆö®<³?!‰¾3$÷õ7©X„q'=ê¹ÔeÕˆÛ}Bf4‘8$‰ÄvÄ.ظN‘‰½¿+gõñ°Ër)ý¤G^ iU,ÚêSîoZê™Î Äû ˜å' ¹Óm«ôaì2òÖpÙðUÎ^üã.±ŠÄWÓu‘Œð„§5ç:>ó·‰ý3ó ç¯'â6®k_ÆçþV_ Ó™åR1Õ‰•Ï ÂK—OÅß8 SÆŸ&]w寿Ù#ªq§ 4µåÜ¡\Ekù„]HÙk‡ùƒb°ë»â çì·•ãú,?dYDÅDÙ@KëÔN=_!ïOu>ÚA~ƾö]\ÛÖLt Œ #F( œ•´©†ø’Ô€¶Ù k’•õ¯4 ±Õ77KøfyœôƒÞìÿÀ;!!¬oc,5G¯JwˆeÊ)Ra˜Æ,¬fºõ«è‹›Wg*"•83tUÌf¾®J®_îgnúfû³UÙ•ck–‘¼[^ Í· «Æ§V »^eõ>°åaD¢ŠX.×dfy¹9¶vÀ€[TDx÷Õw²ìTãëªñ=_̶¹¤”a=}ï§FÙ{;îÅŒb˜{®¿°÷c†œÄ à„S-ö(Ìï—bÍDê’Ü5Ž8®²mË¥T©¡²ö8(2-Tˆõ~;HÁ/(îRžþ[5"B›•I\sSx›a‘S–Ьí_Ê{¼¬çcœ7÷æ ÷ÅËÓ=žs÷ØìöÍ,‘‘»Ë1_+[‡á5„‹)¯Ñ@Üót:¬Š@±Á«½,üÚÁ.@0úï/RõƒUcxß<04~äèˆÊKm`ÍÖ|Beïï§?¯Œà¸¶ùùÑ+Ä ö¬©{ë¤9Š¿ÆVÅ9œj"š"c#ð\“IÜ£?†8´¿O©WœtÕHSöÁ+Ž@3;ˆš¢}t~ü¨•ßfÞß ,œ°f±F®«O6i*…S'# (½HÄÜ9Bž^?iX·Š‹+xÉ7m{™þŠÚuT4Hú²Ocß&­«Vó©±»•þªw ¾”“™ãÑ8±òt?Ç´eü]3|~&er€–o<œû¥HûK‚ÕËÚ¿Š§ -NëÃ8媥xL+~<¯Zå1l‹C +L™'¦!/ ©µReNpS Hï=ѧ@ޏũ 7–øcæòÄnÀ+^›\Q–Ž8Î3õœ˜P7‚ðV¢X†‡|óZÅ8S ?ðK…A À"®zw}'àZ‰_ß9¦Ôè,£¿ì0àé/C¸}¾uÔ× ñ x©Ã3¹WN,hT:}R* ®nÏ¡•€±¬Õ·5§K}×ÉZCi…Š'k+ÈD#4ÝgÑÊeãTÿ¸ÎË)½Âëaö‰U¸„é­ÔjXƒKø–•ê…Ïö•˜Óu?b³¾k®ŒºÔ,ð®U TTTÐV3£°SÈÐ$TÜA˜GÖ)Y}& Š‚¯O“0@.24ª<ëjãó^umÛ5R×: -\sQª•§nfý††Úˆûë`„…!íK¯,1¿+WHH²!òð@DºL¢ú £»†1žŠº`Í0=5 ²V›®3Ìo c¯8=IÉi5 1ŽCž«ä\Óõ¼àÄ YÙÙgæC±‚î"+ hªÀÚÿçbRdÀn¯÷ CëÄXSîàÄ Qc$Óòéª ¥s¬KZÚìI„å¿»Æ÷éîM#Ì™-Z2€ ©¼wòÔHQQ'æÆ¯3>;D%„±”XeÚVŽõ­€2tWõÙÕ+të˜ÞÒk£Â„V`µy ¯HÞv tù¥\W­ÈRóSiÄÆù=¶MÏÚ%>ÐYJ¤?ávzš ²Ë«Ð‘äö¢NlZN,cÓ+ªò¨Ï¯£ Bšßesóñ‰"ÓZ®{ëWXáGûà«õ«¦sÎþBu"¦YëÛ¨€8é37$4v²ºÁDánáëýK }Ÿ :HT´²id¤Êà¤ýY(ˆöߎ*à¶§S Ó6^m‡NkMv²>‡¹mÕl¯»hõÕêgœÓzD‚zĶӔ™mÇA]É2“™±›ømÅd!,ARDw¼™bdjªD¿Æ)€ß2¶¹Lz£„(޾ÔeJîK¹b ‚jÇ]*ãªð &¢Å©¼»ÂƒüûÉãsss³x'|†_cG¼±K'Y·Ê] ±¤çýw%…8dÇZ„ݦ‡{åj&µkœZù¹Pò9˜g¦‹§U¬×ï$m{™~ž–Ê\‡y| cNYRc"z÷ÊNT›ž®}SÔp Q1G¤¼COÐEQ„“­ÕÌû€ÿP.ÃàðpÀìOÍ›~õ%¡y¾tþÇOu½‰Íô[F¼©l³øÔî_jä¤i¯ßé~ôfR… ÔÈa f%*vJE£Ö}OÒ°"BÄ*NpT™\&ÊFn ád"¶Ne®³^ï/ºá0¾zYãË@]ìª.tÑo*t•ÔÅ9©épËJdŠ£ã4=õÞQ¯7¾ŒÃ)3 N3Fw:¤=€rÔ$@²4"Ò¿"ÔÊû+øèí5ë~) Li:\“QÑ+ã¨hŸ9õÚ‡M©O³†Î ÌoÙ›½kh,ÇÚŒÚWºÓWu¢^Û¿4á~ü7Š0N ko™þþ¡NÿJãU·ö»⇈Bó^ÐQNgŽoÖq]¨+#ñ<åÒM™ï„•“¥JŒLX%éõ¯Â¬CÈ,'[ÀZÛ%;Q#>¯30ï?0Åáhé++U+q˜ö(ó× Xêþ,;„A/ƒz;€„˜â†ÞË~(‰.ŽQ⸾¿wãÝb×—bCÖÇc¥œ «ÕÌμ‹— çX™Âs†ÝwÙcq-3ð½EQtÍÃî]Oµä"{†å®Žv”ýïr MÏ÷Àr1)02lý©<”sætÕ*E Tø Eû2€3ïêt‡',ÓSg{ÕøÇ¥/¨­RLzùgì/igñ7;²9\Ów«¼ÆøHÄ*J|¶‚“»Ÿ¼> [øwÞeÉ›í·";UNP×utœC–1RE7ÅËX¼Žiü¨™¬¯ßyâû:¯YµLH΋㈒`”þrGèpFŪ¡ "tBÀáÕyœàC€×ãh;<Êàue>8K(Èv8(8“V ¡ì>?R¨B´Ê­(è¶_ŒûOÒ·«ÀÂ%:é× ÜÀä5zÊ—Ž˜)òÜ-ZíÓó œ?aØð ÕÂЩ^|Ër({yέZˆO¹ò|ŸæÅÇ®rñÑ—³·QÌqfÔ)Ì–šµËcNš4Õ볉ÅëßI‡Ç#ë´Ô5ísÝGbrÛ' d]~N ¿^ ‹wÁ¹óZ5\Ø&„iÏ]žA1•ühç6Y"‘á UGïð$‚ìEjÛ.Gf”£í‡Ö8â;#HБÇè -Yƒ&íKx^¡Ë¨·´±ó¬•kª¤SÄzÙ€ò¼S­9Dj'T~jÓ_'„—¡¡·ŒÄºBBµâ¸EIJûOx? á·Z2ƒ§öïtM‡sW´éš;‡ÞÑ;œä}º¶§iMøló:óÂB3®3›ÎìÄ©k;©J×ÞnzÊêÍöÑx}%þ7¬×7šJvhñͱ+@=Ýú ¿„Tg‘À¢:YòfÎÁ¤¼‘‘ž•K‘3öð·TöU—S׸u¤©púUɘéòŽÎ¼Ä]9¢ûp`”‚ù` ¦8ìNç™"}Ä †‰Vϧûä Ü—H%f±}F_`Ó]Þ“3º©îjÚ—1ÃHk]RàÚÍ!ÖÎÆ¢WàF„HJ[™)’âìÂÌÒí0!øGRÙˆ«3sÊÈT§¢õŽz[ðÇ-"ƒßtPoYìš#ÃÄñ7ï^iß,¦à°÷©ØY†§H´rØ[®m™ÏQ*˜Ü[¹ÍâÀtøÛó~ý-iZå·ÞØTBläv#I0Š+ßé‰Ë,˜§³Ï`BOé¥e…ÂÊÅ¡«ŽÊz]mBÀF •rb–²rœAæÒmzDÙ5l³¬`»f¡‹y#v;öZnr~`¸ÝtgûÌ.&—Þ„…ó _Q Êô1ŽJz]ÙúÊ5ý)sªJùªl¸CÑ~´ÿ.°aèu¨{¤iºÓp æÒSV ŠeÜ(#ë%ï?`Ãu}VKªkû®ëV©Lñ×à¹M«QëÏ뀧ìÏý¦û7Ë¢Ø=Ýå†'q®rE'h¨a9ª£øëüHöÿLpÈèeɳ¯qØ;Ë4¼úú‰¨à¢<Ñh®³2ª:)L`uIAz•Ó­Ü8võŸ_A³Z€eU%¶¾v†÷d¬å|/‡óšAÐbé.½fU¡›ñî?®R,£uX›ÄÐØæ;¶ íVNßë#‹ñA!…ËòëpáÐyBët; ×Ðg«_Zl(\0„ø®’°8Çp¥’ÊPN¿”Ž?E•k“Z×úòuèZñ ƒX›?)»gëö"LdpÎÏ8àQ_÷pˆ÷ñ)õ‰ÉÓg>-èå½I!nÅ̳Œ÷:rq!ù‚ûÜA9 !LJ$ÀO8wí»Fâ„5Eæ-ïϯ:é ±U"˜öÑÜ''Ô+×ìÀ|œge*k+wéaÂÖG: 0^O-/šåwÚÃõ4Uf—o÷[¿ì‰¡·ôÄ4ÿ'ªW=é56äWúÌpTõ;ñ/Õ X)Ç62&MY±›ëÙ{V˜áœë"j)ÛÞÇJš[´ÜF_~MZrÚgŸ‘i&ލɬòÌ“pR:¾ò Jk¯t9öV¦ã«Öd^nøÊ>¥™'ºÝ·-q‚DÚ"amIx™ÛX ¿ÍDŸsú*_|\~NJûwÖK•ZúòK‹“µ:µÞëÊÈ.7À Ö®qb5²i63Œ+é‡Ú~¦‰õÎGÿ´Æûñ0~ÿðe;¾Îû¿‚0‚ŽtmåÆûËVoÅ«t—ßL0 °³¼{âú”òIÿ‚ù@l”®G0f IÒ3þ§<Ù]}°¤a?Bîeq“u˪G:p=oìwþ<™»s"¢B«L~3Wv&¯mïóÇx ±o"-cV ;Î\KÆ8#KM‹[Û`Ê›!U{ÝKæF“rˆ l ndp“»?…Z°jì5f Ây#sgpf  ´Ò0_gñ¡Rt§ùX™ùVݧ¼©Q° Jjw¤vVðÍ­®c»ÄIíGðâ‘YE¯A•Úï#TÞoQµjÀm§ï{ !E• À‰8‰Ôé,H¢C¤¾Ó~)¿7ô§:ÉÚ‡@ÿ~ìSèÒ¡£ä´ç„=ßE®…š°úî"AÎØz ì ÉÎvÅ8gÔ²ôáóKˆw>Zîgú²»®ïïÔG L,O·;¬\ó±UÓÎÐuÖ:ù|,;!÷bUØÐäÞÑlÈ©¾E©|ª¦~¢T½ý(éf!<+Ð3,  9Šg2JáàyW›ÎðR?wpôò—JœrunÅ’Wu÷-¯'ß6fÂ{ ›3šo)IYKÎh5:-®*=©ã)GãÀ ÞßõÇ瀧Àº3ÂoÙÎÏ5‚”÷ ò?ב‘«^¶Iižøõç „Bmh;#€j¯‹JT2¿Ä`¿PÛ©HÂø8°$A&$f%.ñÕ a³~N¢Ç?àý:jäÄU4=Ü@*Nä0`#÷ãÙ¼®ÃVg+ؾþˆ«\~· ‘ \LKq©• ­Ÿ âN߃Ö~ üns"G?ãÔ®>÷ÐJ”ÈŠêh~·CcÌ_ cí¿Q¼9qÿáÉ_ÅMÒÙ5;áC°Ùí$ñŽ·@³l ôˆç:âÃkyqŽÓŒãV<é1ÌW§ä5k|Ŭ,¯tI œ*rÈ¡œ φßqΤ%s{¶? Ó /ŒL›þ`%•â˜ÀDcÿ©îj1ŽK+¦k’jï)‚èÇ)?Ò·«ÍbúÊ)‚m%$hDxÊJTvû†YlëIúV‘®E$BÀ È@é#œ^Zž èÑuÇ‘… €'F-ó–Ú:“ q¾EŒoîdŸÕ˜^x ™¾ù¶ÍÅ3)lVè³0Ù‰oâˆÃ­:oæÛ¶õaÕªìlu0úgW©© ùƒUÜ‘Ïá›ejAxäþjب‚/¶ð ÅÙ*V6ÃeÛG+Ããqfe{fœGjY·Ù'Z äƒ9Ð/ú#EÃ:<9ÒóÖ‰Öà Z1艣î„tÏyœsbÒ÷±Ó Ò®#K{fÓq\d‘ÝÒ]~q^FÚ'Éw7~!ÄÀ'hbxßéû‰)· ä™7pk4©ªŽ$æÁÁ8¨1Ѿî?"€økÚ)¥‡à¨@v2›#Ñ›¥ÈŽq^† ¶¸Ô—Ù£.Åñ–‰\Ê#ÿF-šYËè~(,Hq( ¯ˆvLvZ%óÅ—¦¥èµ§À¶€µõ!a“¨r4nE(¬¥å az+ ©Î[GƒdºVèú‰µzC˜(jx5×zLæÑ3V²qeÞ1„pU/RÒ`C4€Êº2”‚r¾•ép—ÇY¦á57UWޱV?JiÕq ¯0âÞZv•DŠ‘±+8h¡e¤- ÓO%3ÓÀYLŒ\h/Ô4Α²B;@|¤R‹E™ŒŒQÈiq“*LÅKrzýE¶áñV,œr¤ÒD¯ã«NÔÆ'‘‰k_Õˆ¢}{ý)\D6ÖˆÇ4 [Æ,ß«t¼i™=Õ*V¹ *š@3ÁDå›pÍ£ÊOµ Ñùåc)tVºI±KJø¾†ßƹjÔŠèðú(BIF…ýp;9¿$ôw©%¼ã »¾žÊó)JÉ!òè]M˦ñ3ôÀVçó•? ¯˜NÔ|ïIúá+ÖŒÕs¼&…Nä*M—LŸ×ß'òŒ‘’qÛ~«X®Y^Wãžk©>—¨ƒ¦ºpýU^#i½Uî>}FªaÐz ,Q†«p€ÇÉŠ~Î,•Ú7³n$“Bxgû‡c‡Û¤_U@©HðõR'\IvsFq;2¯¯¢iùÐzçzÑN·ÄFÞÒÖ82÷@ÖûøžxBÛ¬ShgYõYÐ~Åæ)ÓA9²àÌIZkŠ‘œŒ½|Eߣ Î7dF‹ã=¼3®ª |e›º ÛÄý]·RÉ€¼~—±±ËÚÉæs+Àk Áuÿ™Í3 ZQîsÜ_kŒ<ÄþÒ¯…t]Î}S.ñ t&šäœ/9Û3k|`š Ýœ'ù”‹U¡¸´QÔ©§Ù³04¾2Mâ‹ÂŒÓ°úÆ>ªW…d"?šoš'=´2™FæéDLûoÅt<>¿¿Ÿ÷féúf×\­¿YoÆn–âµ}È•E8ˆ¡¾ ¶Åqxjî´ÈÏ$0*t‘xë$Ù„ëv”Hd9ØàU O9ÓpÙ1ÙJ¯wyŸ§&Qi±F¨Q]]iËÇsõñ•${¡ûŒÍwË“1„ŸNä¥N†m„–ÅÔyÄÁmnÜšóØÚ\02‚2â`Í’mˆTJߌòÍ%ˆ“0³QªNß‘M6Å?e‘W†å=ú7ø‘¼}µo•ȰbÈÔÝŽÈ’e@\Î’¯“å@$.ñM×_×!ÁÞ¦šëÏEPj´¨òC³[ýK ´x7ò`)¥o‚Ó’R¥ýìlìØDðÊ·ÎZ®áÅjÞˆ/ŸÝm7¤ÉIæŒOv¶tþ*¦E\7¾rkpÁHB9l0ŠäL11´KSÍUŽ¢¯ÖföŠ«òqU-§ˆRœ•ÉôÎÌŠ ôf#I0aéGå\CY=ï…Éž£Àë.KõM Ÿ&U?Ñ—Šðô¹åhÙþ—˜å˜;‘y†™nÞ€tßÑ\ðw:Õ$Å`/êíü!¸³Ç8ÍJi°HLÕ‚ ›±e…t!Ófœg˜,)ÜÊe±_ËøÙ9á˜9o¥ øPå³ «âZˆä1Øç[µkœÆ9š™”í«%ÄâœPÍ”R+µöÎÄõá&çÚd†¸§¾€‰8cPJyjN*˜j+äf8TQš6 2&YLü³‚ßW¡/×.PªH(qIK¬ù@!‰ Ñw2)m„u nû’‘NÛR vYg¬Š%Eµs‰ C8!ŽyÊ:Ái‘ !<½FâÐÉs˜h1¶ã­š¿ŠÚî&¬k àQfOð΢[\¡Œ;‹x®Q%÷ÉÙ»ºEÜQ3ÎáÌ`)ðŽÅÀØêÜn—¹Éùxªoé–f}E²1ªké®Gôl¬CN–l„GKgH·¬Âw-U°ý×ÿ]è_‘`Tã«`ÞD™8q¿ëé0fÆ¡Òq•ç ŠpY_ '><ØÞ(à!»ûä´ürÔˆ/©rÝŠ³›3SDèk—éÊ «QY›>)BqÖaç Iýïã • °ëO3äÌ[LúpÛÞ?NµF´›ñ©Yò-€Î / ÂBn±òœ€xË4Pa}+®@š¸Žf8;ÒWxwU­¹G,IÄø3ÿ}(Ùòú.„YX|åN'¶­~𒨛–tJ€Áhîw4Û’â}fÜ·üo!jÿ´­~¨1m‹*bé㓯!cE-BÀßwt#_Ü";Yí"ß~º7ú±ö¶*´}2*L6íï¤ÕºãÃÖ°:NÉL|ÐI¢ hVö£Hè{OÆ"¢òg%IþÌýÕÐ’uBÒ4ze©A’讫Þýa©'jÀÁÉTË5^-ø°ê„Öt ªFaá#ÓÑ AÙÿÈXÇIž™„®RÄ­ÄŸ¡Á*+e<„¯âœD]o"P¢-‘ÖLÓ?{B!­Ô¿©õ#Óºíª³Äì ÀÆÆ”ÜdfDàŽs%\€3>Öï¿<ý©3É’בèÜW#‰ýþ7–÷ŒTž_O!‰Ì ébžæý/_$,r¤wÛ®ðgÜÀ1‚€Aõëyý1ΑvM6§ÉZÂ+/Õ® I?‘±‡ž>o÷§ÛŠ-’ÓŸ•<þ`Äæu?ürÜœ_ÛÜÊ'‚[‘ùµz|Óø÷'Õ—ÎS2̯1f‹ÓV’c…„‰1vœ€êL”„¬ÀO-£öˆ#T}gdœ+ÑG…¦©Ô$÷³BàÈIÉŒ25A9@¤abèR®ý5–µ ‰šF£Í*E/¨$doÝQ”¦¤{)šðN4 O…SýMe¤ü~¥¿r¢É‰ßÕ? ×G"H%4•é0±ÕÔå|†vô  ÷–¶W©VºíSCîš²2§»É?gGX›øüQ”Oú>ÃMŸœç‘`ħòG¿P|ºxì\ErPâäÒÚ(ÇÁ}ÕTU}ƒž€Ë¾Ó€*‹K©Gq©ŸšªÊäà ¸%7ÃAáÍë³pòêC^ü…k ÌuÁM–a©ó^ÛÁ +~t'X¦K™do55xg'Ó†ØÄÕŸí ß,¹b.¨W7”ʈQaÍ[i[ž¥[ÞRaÞÄKˆ‚6-Ô4ž:[ùu³T“­ *Dÿø)yvþÁuæ|k–ò6_ЊMk–Ñk ª ñ¿ ßµGM¿ªÖ2L˜ÄÏb7¥ŠÍ{E ã#XùrÝ%9ÆGƒ˜Ë‚ ®œÅ9“õ®÷šdÞ6óD¯÷B3ʈðµqLN´ˆŽ¾Zv!÷:—ÁÑ}üà{»Àfã_˜q„ijŸ±ŸœðªiÂ^ÀaTӬܢH\8€ìl¦Ùwi EĽnƒÉ@b·šÓ&¿+g¼uã/¹'ËoZ¾žu4mùžuäNC45 0zs_¡i]·ÈÃôÍ®#º¸Z½ÿ-NîU°0ª½¿« ‘¹ó5A9R‰rx! _žn•οkq Á.W?ZN`ÐFf™ËžÎ¤€R1¦ ]ùp´Œ;«ŸQ‚úqH÷÷R$#¾Dàrøz¤s'1²bÀ툹ÁçcLÈ×ö‚êi5øa´ôúÅ;Š»¯¶bä'œ‡)<Œ{>Ÿÿ?l|ž /8fJZÿ¡W@¡ ¹rr’ ¢ñ’3}¶B!Ïâ©ç´b|ÄÏ)9ßÀùá¡FãZëÿóÃxT%ý¤zvÇ2881uÔ§*aÑg”Up«‹,ZÃò^Î:øßuÖsâ§.tçgœ3âL€7OÀ”›à³jä*‰þøÒ@Œlpîc†“2J¼“™åˆíÙ^) ;òÅ8-qp¦”0i‹h¢ìƦT¡Êö3t>è3D>EW«Á³Ãªo+#Ÿžöy}ãˆÓ\™eÒ¹ó'#Hÿ”²G2ÔT. Q™Ì ßá“’Ó–4©âMÔ NïL|¤\4½ŠG@L-Tu—¯´È>~þëˆ31ÚFÔ¼ËÈgn& UŽÆç¥â`O,•’af+ ÕÞ«¥S1FæpŸ4’4W%+¶Œ »;µ§OV,mßÿôl5aÄY([÷u0úFœ0È0Sò§ÑSü‡À¿>þDâßó#áp\?âôM&‘Ò1Ó~SÖâšç,õÿzµÚˆ#qB*"çsEûþoWÄ ãàãÆC·PÉuP«êy— ÓmÃé–VdX*•Æ&ÄVóËJG^_Å¥ñŠŠ”VëÔ‚xêxj¦ª‚FF1tì7zig†A*؈ìqª˜–°–µO-VÑœ<Ò=OVQѪùÖ ÐVãä:LâMLò5àzýre|ei€çb Z…â3t¤ Õʼ'æ‚Ï*¨‘Ã)VüëØ5 #²Eâ@4Šûb¥“Edè²úUš J0j7 Ôr†õHOâÚ.lìŒ("ÜO¹mä&©ø>nÕŸRèõ pvŽVÊtªWÑ1ÐJí m'YP,wzù1«öV†á[4áQq Ü¢ö?è2ŠŒQáe‚eJÓ\íú5óÇ+‡HF3Ø•Bý›¥ eÎ2ÉgâÁ ÒO)!ZFM<ƒðÌ·âçvH*EŒ‘fÜjFú •œ”}áþf|¿Édám=º§Í3»š(ÊÄSŒ’Ý?x˵ë+s6MìõË@?¯P‹¤”A0ôœY(jà¹R‰±ð>þd~äéX±ÂîÖŸhÆbÙïªfCÙ×µ×+Q!ÌŽ(>šÎöú)g!ëòùÓªöé5ÉîijX.ÿ‚‰ï…ó§±VA4y‰L9¿ bø½Ñ³k‰¦ýp6nGÙ„òçû‰MúÌÇRjNØ€¢lÓPëóObó5¯¢À§PÉ4Œ2²zy€5¶Âjl¦U¿t#y1²üÖª ,Àd¦&ÇoÝ”6`§•‹žSîüø UûJQfߤ‡0CÁ”H¿ë¹ LDxl¥Ô´ïœ0(ÌöÂEhÚÓö+÷²âÇTpUOì¼  ðâ¨Ö?8ØóΚ¼ÄÎìËvdË2>²š@ôTk‡$æ"×@Ÿuˬ0ò7|öÒÞ¾ƒtËaÚwÞ‡í%}FŽr$&âÏ41@zWRS¦®²à’^È<ä¦Þ ÑáÞ¯L¡ü Ñ1Ÿ4n|"1]ˆüŒ¼¦ËâN™ò ÷AÒÑ^;G™ü3lj)|'áeæÛø¥Ü?_xÞ]Šò~éW½òò—Ë;fqЖyl-DÏUàcõ8D4Ñ?%=]—ÿ‘$Ú€Y‘UFÍBE &¼p= –7—üwQ:"NB|¡êIl„´˜_qG½$Ħ-èÓ/SVãý y=Åôfá×OçØ â:: $ûHHeHU ÑIH²‹_U̩ˉ¼è8hì«H—y5@ŽˆÈ;ö¯DgZ[‰+7—`ø8àncÙ óþVh§sŽûÝDã\—¶ž¯{2ígqkô‹~]çó{±%ÂNPt_}tÅ3‚5œÿ˜)}F°ø¥ªõ –@rß1uÒ¸ s®G§ B)”vŒí¿Š³RŠ!–€ü;¯Ï¢ìxk¦J˜NÎż|jª¨Ÿ“/)3@§R‘»ÌjXa¯ÓFîÀ5`†lm{Ê¢/‰8cWfg‘‘ƒµ ù¥rˆ[¡+C}‰‰–"É[á!ØD.·Ø@)\2öâà×ûGMh~e»W{bäc“±„’ú‡­à.C ³†€§ïÅÁyoœÌþÕ—MÞøŒ‚´±ßnVNp!´û ‹ùaª”Ÿe[t#ð^™Å+%K ð¡tXðY $G{=šAâ{“yøPBl7d“ãß™Œ 1;A[XÞ_Dø äùK TR.þ4L7¥±·×¢iA| QÍtuŒœ7¿YYN4öÇ&•ð«‡9ˆžˆˆ 6C(eþyùãˆìÈåþE~¥eÌ5ÒIÄÄiI%Kl1¡Ce0ŠH¼¹ßleÉ)­ª'fÇOÆG¬ÀÛxXxmÕþ‹¬ÕÌ8$À©Æ‡:›'i”¦°ÖrÊžÖ;aÊŒGãËÆ1lãZ¼™ŠÓT€²åõbPœcª=T˜îu°(г9¯ by€pÂÐ8R(¡]<Ì‘os4FvM9 ÊqÀ¥3U!þ•Õøcq²áoûU årù¡[­BœÂ™á „ «Ä‡²30t¯Ëb68ÍœŸ|ž^wB1jzÐýT`Ê Ó`Bq.¡PQݻ㛥–q|Öø,ùž¦)Ʊ™Ú_3O¼•A&ŸµŠeŸ} L’òö|«¨ìg~3[%È2¡~Ðz2ñ©K¨ Ú˜©ÌSu‰»ÄZey߇Z£}Dò->~U%+€%$ ôVÁ*dl'± ¶Íù»ñ‘Dߥ$»fBÌàaïiKe-S£^›€Æìtã*žƒeJÍ-µ~b†­fÙY[É€^‘IP’_Ñ$ò˜üš†uÓøôÛ}×NÓä.Ä•idɴ݈ƒq-*NlÈÁPü‡%¥•Ï_Å@P‡Š›Ž˜Ö¯,ôB¶b°m$£%ìƒs•æ_…v)œl—ÈÈ’[Š ŽGǾrŸa÷Yú P°¦s æ~j€ÊÅú]ýÇeûBÈô¢ÁYÆ‚ËÌS·w­BÒúÊlŸìòz+ºƒ^pþï¼þ–ˆ` †¦¦Gž”îF|PðrBꫨvèÑ…=Ø=å?"Xí“8êÿWUh°§ÂÎ;48oÅçã•,ñ…œö¢^è;¿ƒ)‘ŒB&Ùœ¸Ï…Ãý”›Äôú¬·‚­Uù†Ó§æؽJ鿬©u„6LÓ©á>ýw ÇX€7ÕÍû[…6¸Á$ ¨8»\ ï-W)°€¦`zPk¥¦ÈO°Ú pMµøU˜•=H¦dnÊò—‘Ú ’ƒûý‰R®äÔJ A|ì:;L‘B é+ ¢ŽXh(òöûzYE' ˆï’Ó`u…,ó&L}#¬Ö•{ïŸE>Éüð¿…’Q3b1äo`a·Òtžk_ðmn­Ã í½¨5«ÊëoÒ¬¡% B2ˆ€õïM«4²¢¥*yÿI‡6¨/>Ôõß•ÿDŘþEU,ÉKŒªA=P¢ZhJ i?ƒÄ\ípØšmé†ûܨÿäO{ÀÂÄ¿~ˆ@¯ž€QœÏ˜¦›rM˜W$aÂm_ñýrÔ#Çç#&4†94š ßø¶ujAO¯•‚Åm XUâüdÂÂ]ÍÿeÎÀýxxóþ§L?uÇïR2°GÏiºÔR­ªÂÄ£q-?bAkü¥†›ùù¥^˜.~"L î;Q˄—q2TBkšnH¨/€EF=Ù9Å?d¢a‹0Ð4à9<º—W—±æWäFqzóSF-†q#£)µ‚cñ!¸Ù’öÍœ¿‚2òsîOž}@ ?Ââg±åñW o_…ÖØ¢Ñ=ЦN[óïÑ+€Þ7Ö™fˆÕ¿Ô÷Pj=ˆ/™ ª‰ ŒDÝNâÕŸSZ+äû{2$Ž¿t~ ÊLÓÖZ§4hÓ_ÅFû m#Lg¿©›7xg.ŒãÕ[-ŽhfHº©M'æÀ~Ò×y­´×̈QØÖì¨<…6(2:gÍeà@]úNDBLÆUoxÊÒÂWVôúT?Ô%hƒíR€á­¡íCOÍNõƒ‡ýMß©ƒ¹ÇÏÕÿ‘¹g|T׌þ_Äú­jú˜ÀÎz>ÜÄ0&ëvVHCŒ:Ó53U‘@cö¥i‘8(ÞgÙï‘ì^ÿŠÂc'l3±‘LdZ¨ØVìçŸ!ÌHÌxË~J´‡iÄýñƒ¦ç°EOíõ̦ˆ‹( ZÛo„Ìë½ ¢‚F²xwø½d­ÁýD˜™× /q‚hºç1ùÍ«€1ÌÐB.ŒKpŒ)] /ï¿24Ÿ²Zkú®ŒÁeT£_A³¾P¦p Ôd–Ù¤2—Qµñ'X¾ÿÔ¨XvÞÄ¢´­âÒ*Õð<÷Tp¬¦‘wi¹Ùž2 ë]§xK°w޿ʪH“Dµ2L ÓÐOc¤ÏÐdývªÓ"αHû>µÖ>…wˆK]ïS²¹ø¼¤ÁWd+ƒàzc¿O›þÊÍ:|=e’y€$å tþ’¼ËÒÓà )Ø ÏŸ¿ô^oeP˜ ~ÌpCê‡Ôد‰Ï?æüäý¹4oS¯g’͉£ÕH1yB%€À—.Õî_AJp¡Ä E[2˜¡*V¨ÿNÎõ8Pq°ô™í ƒŠ– °34U>mñ•…ܪ¼ÊóÃS`9üS®}“FOÆ–Ž–˜m¢—^W¸´Êà ÖÃù1?mŒ/yŒùUçðõGâ¹Q$Ƨ&¡¾4â¥)ª±/¾,$t.nFðJ×SÞÒtÝ(0Jz¬‘t®UÌDÁp’ÈP¸¦3R,>¾¼¿\ßAµñ¯τQ'e=ßü|ÿ‹~ývè,¯b`œN2â¸6 õj=æÚ§TßÓÌÓ+៎4a©aBäõGÓ¼‰ðb²’´Sâ@YÇ(lgl6ŠòÔTqZËëÅ‚8C1Mm‰5A>aAWžÝÚ~ÇÂJG ‚ÅáieS`玳6Øùj‚ÓIá¿T¿ø@½iÝ¿lVé¬CžÕ %Äçwuö°@Ò Æ Ít à° Q²lç?p)1KªvvÆèºq¦¸ÂV ƒGk«*F¦ã¦4Av|Ñu ÜwÔ@ á1X”gºY[Ip|`2ƒ %r|Éý8/Ųç¬wÚ*Î|,Ø`ÛìÈK”ž¼›òνJz?p‡ê;däOBŒ¹uh²¥.Ì'j%Á·®F5)bÔe—8À$èŒc8µ’bΙISK"vÚ›˜bæý3!'A¦ÇœT³&íØ…E·{ŽzäãôC¥î›“ã"œÕ)ˆ JRf>'é? CþÒˆ±/X厨\e³¿Wõß"ÃÅÝ#J­ÝbR½‚ɬ ~&Ïÿ®²#'Î‡Êø`ñêzå•"§ï’6`µ¾¶•ÆT•Ü–¥à·.\¬ôNvšµ‹GÝL¼u•…o/Õ§Ú‹ÄšìM|[­K²B™@¤àLoéåÊÔ_©Çø£¥›}[ )‚ u•ý”C‰ PŠYr`¼K^ dPb”òÂ5ŒŒäH‘ È©‘>ö䬈’0IJù¤‘zñr®‚Ç#dŸßQÚ%Òˆ@µÁ’¯„‚áeÀÜ\qÁëh æBf2A%R@M¸LzÖ¯² ýGíoàÐE¿q#Ñ.ûveÄ[w¹™…¤–ù$® OÆA!†Ãf§[ÓÎÊ"57°¼>ß N6ßø¼>˪pp>70X—©(`‹Wa O£¡Ùpc^á¶·¯Làgd ³C€'-~ '”ðøáÍjL?¿©UãÆ³8ëyT!Š2cäØB0ˆ½%Oþì¶Šè€ãÒÏŒûWF ¬^~ij¼×߸f(Ÿ’ð«JŒœ™_†—Æ­evº«’ŠainkÕçϸ6aAÚ <õ)¿6Ãב€†.aÀ™S¨âÒ¾jæbxT¡â'ÁQ}×OP´’Ì&•Wp[v ­ÇÚ'f@S¿’dº«‹pº&¥ëι¢öÌϾ¹ÎÁM³†â߼̛u+V1/vhL3 Ô̰œpš 7BMÿ„’c_‰£ äÈvJKŒ%Àìc'ŠA70Ðñá[c°LÅ…8“„+‹.IW ¹;Wn͹Õç@ä€|x ~y½Ü68^††M:#ÜçcæLð§°Ö⛡Ï2å[¿Yú -XÂR°èËë'}3ž;É©°:¾JJ0ÍÀ©B!Xú€aÊûµÓÇY2i$@cvî\cÖqddº•0ÈõûÀ8ANÚf+„_YÄŽiÚ©¹—Ç›*°—馨vV_J7Ù×yÿJ_Æù~iZ%Õë½7È02‘ÀRZد/ 6à6°.—N¹–7f¥¨àÏ­ÏbB,Älð)¤QE£Ü-®ÎvRT§/G¦×+i ¸fñUU½¦l¸¾-8&ƒjÝ_¦C^éæ8ãSû¥6˜5žÊ¥ã ,ã«Û"Zƒ•§’8†fÄ 8™9?þ®!GyÒ-ƒz+© y}¥Yã`?±¥xŽ4U1*V?œª1óú›d‰#Šô²!'?$æRë›+Sñ w‡|IëY°4 ˆ³5Çöq†¨¦T[fZ¹•"­Þ›Jt¶UÈX”÷&°ÔÄÀ 7-¦tbÛN/)[3¯?%¡mÌ_m5mW’!ëh 5ÅÙ5ÅÚô7ý£,™Ö+fвiÿ”µTÔ Ïÿ`u²ð Ôˆ)´–c_eÕ‚H±»>i—ìØ’Vl¡Ý8‰e×–½b F@6-k”°=žšäãĽÿrc¼5ÉG7‘x³ Ûó­'Tô¢=¨V;MÍLÖ£÷Š5I_þf¤ª3X!mUqMB7é0¾ùaW5Ó“/ÿGOQájš³Å•Ð6M‹6¸ÏG1„+È*Š˜É0ê Aý¸:osT1c•Õ^ ñ«ôAejPßEQv ˆ¹2Æ JN¶(w}¿­[jè`[×(ØöL¦‘gØ cÆêÄ!DHŒeö”U'ÐïØ ð£½þ…¹•¹Š«×G FÆ×hîõUèBlp :v’Ç3#[œl•d²îÉû{¡1tß/b’s¸_ÙZ«£(¡™è8¿“cj8ÁôÅFƒ»…"$/â::à¢qçP°Ö] ß‘¤s:4´oʬ¦Æè{”@›•C* ºÊF ååg ö´ˆ`¿8=Ɉl‹+1ˆÌcÂ2@´²bGàS<=ƒ8ÃJ¨ù\#ó©˜ÑÃ|]“zý+R …ûªB.TЙlÈli>÷¦ºZ¤¸/@ÿ–{ÑŸ, ¤j2~Jé´%ç c®ŽŸnFõ»!£ŠØ¼þ”( !çÒÛœX7á0TÓ Íù«îq­Fõ3xëAÖˆ|ì7´©=³jWÄñÚŒý³f1¡‰üÉÁôÚH…“îrèZŠ–Ã„/ç’ÂEížà˜ ZÖ/ú5<<Ÿk°)U~«9whb:¤eÈàÖ‹…=y.s-%5>Ëgϵ*¨ìï_pœOúz¶K,eiÐ|£F|hÛä©Û |Ã8¦4M?u‡RW¢8pHÓ»zbÊ¡AÂ4q e¢ ej v tœó$!m7ç>ÀG%6¢ÎŽ2S>@Jñ^KƒO¥JCî8ÈÀA‹4ïŸåš8ä,¸Dõï‚ÖÐã|ÅÄ)›àfèoIÁq…A_„Wæ+Ö½ë¤/ã@ÇÄÏ2eÿÝôî oº^î4!M ‚·84ŽALèB=»¸ ‡ÅY«ÚGÁ±~M™¡Ò˜9þ£0\Í8D®B•¦Y_”Y æÂ¬âD© E‘Y¨9Mùß\Ë±Ô Œ¸Òª†Ù²2 «L¾L )© ªÌQ$6¯4¬ÂP1V‘8³dÔ‘”ñXèí‹:X‡t ‡`Q)†€®åâÉ01*·ÙE;幓,ED…0KºY3_½ °½—}L£ý"×ÿQF§ýC|ç‹O#Ç c¦ÕUE˵@ƒï~U1¹jæ BkÕÇ0èõQXbêXå1Ìxý)B@Hµ€€" à:\ Ûïíj¹=£É’#S‡°™MCS¿Ae8¡^+ ÂÖ‡9º³Šd,óG®Âç¨W!­ × ¹§òD *ˆËf;2]¦{Å²ëž ‘8xF§ÜL–e(/! `Z¸zr|»6{™æUÕ„yMØ¡­FVÏ*Êâ µ4B®;úþQ¾¤u3ZiÁI¶Š€0Õ3CH¯žb89¯ ž´ÏÅ„7 g e³2¸í›aŒ'#ìJ]‹ƒ¡’P¶G´4!8öœ$î_¢~VpÀµûÎÄb@kó:dÊ…Œœ1-ªAT—ë*^Gðt rü@gñ³Ëžƒ´F¶Ï­Âàu'r»÷*0V q¤Ÿy¯×gj÷‰Z¼7D 3a’ Êñú[‚>PL¨Øg¶k§32E?©×«G9’á_ôÅ:S3bP¾ä„}¤ 5;œ”X |®r2i¸ QUƒ0Šé!¦ëqû«ƒSb×ÉŒ#QE¶V†R:’Q®Ù×Ò`ÞŸDkpL¿Í¼k–AöëòÏëo:d‰Úv3žº€þ¾ü0ÇÏlræ ÿ™KHœƒ›4Í)|™·jáÅóW¡¢›¦xýÚÁdÂÃ4Àëoºy}\ÉDí‚…F ‚*dJ B«ª‚§­ÓßÍL9¯éÜC2ÿ;Ê—‹ èæ/¶cÂÑ™ld/þ}lëEÊØÊH ÂumAÛ3 ¯k ~ÖpÆí–C_Ž”’Êñõ,ÿhÄ)tÜ‘ 'qÈêlZ9>žV_P #N÷«¸ *âøÈt$jy}¥WâœÆtò0të¿'GÊó>Y[‡Õã¢4Ò4—ø]-‹X'õõ]j¹)‡Í~´ñù¥QËm#Ÿ¿ÓêqNe ¸¹=F®"èFÝV¬Í”Ý€×Rë1¢Õ¤]^mVã?ÓˆKûþ‘^3¯’?&wúoªâ4ááü×±2"ŽeÔJûgò4 ú‹Ð9’u=ÅiaZ´Ž„ÅžÂWË¿\¥Õ=G=SâôK]¯Öö”ù“ÉIœ™çÐ2×ðþY„Šc.u­‚”^™…¥8Sè(Èʨ5\O†u­æL9AX‰CKu­Ò㺄 ˜àÐE,ƒºéµõ$ât7]§ôdš´ŠqRJši±!%!9YPâHOV­ôu(ô-yR5ŸYÙxzc‰\ÆA‹ûJÓ+È#±re‚ £]9«Y4j+M£àØ‘Wæ€Y:®Q𬡔hB†B˜9šë7oeþä€Éë­Ñí4*óÈÀh -ßÈ@ˆŒâV¨÷h´”ydÖ´+ø3µæ¤‚l\ÏзÙß¼2Oí-]§ ­ôÚΔkC¸U þçÎß(ÀðG}ç =v9 ,#3­ðçqß©0`1zÚO­qêO€I¢º„Ñ‘®ÙÅEœÌLÓ|Ÿ? «£×üÐ÷÷gÛeÕ>ËÉw,Ãä¯r(Õ*ó*ßúC×õêcrü›Åp^¡1Í« {ÿ(bPT‡ñ=)¾#sÌ8*½bÊ¿2µ5‚‚iáz± WœP’¨xí{}UÜ@AûUx«%_!Ø-°šP°5‚3®ÌšRªp•’iV˜ô¼ÍÔ}| ´ÖÍ ²F]Å{¸tþZ3Ÿ¿Êêû-h¼¦Q–¼&X·[»ÉMsè§`°Þòøµk¯Là0Œ8/~-4Ä4Åkf÷Á^¿€!8¯Ê>ì¸Wµ‡«—ú ¢Ð<Ôç¶ ðET‰3~è'íÉý®ŽÄÐ çñ!”Zá+»o°|ÐC ?eZPû¥Õ*Å‘kšÎlÊ~„XˆÛ(Ó ±îûË—ÿŸ›¼9ÿ7±‡V¦ë`­å…0¦˜Öá j9þkp.1ÿ)!¼ÿ$âŒÂ„‚e"(Â7 \ MS¢7#ÐÊ@Î •±¦´q¿I} Ölö ,Ÿ´õpoyªê^ïiõ8438…¶ó[Ih>[‰‘”ñ–¬þ2.ÅéO:)³=ý­Ñwj’ËXïû[Z%ÎL'McýïÆÍ°jœ×““N#Ñ• ß«ä˦M&Ò'uêÄQ•MæüGz}s Õ\Fõß”°jÿ©•·JaK¬ÇÙhD¥a˜¨Î‚æ69² B©:“0“غ.ÛY¬BPˆÍ%8nÞ¥iß'Cú!9XU L¬›ªˆwu›ß{¿`é” ZŠ¥ „­È¿‚V~J eæÉm¨+L_“&#/mµÞ0ñ+¿âáÍÓwã¾ÙHÒhæ­ BBÙÑÆï NÀÓ! Šé¹2ÌLþXÔ(ÎМ”Jê¥l¥´G¢ía¸Ô³U™YÇb’XÝòÑ…xƒ4g¯ÒB±èT¦ Y[7t%W¿ N¸f¶Šë™Èͺ„¥­ñ2BJ!Œ±­ã7¦®ÉEð˜Æ.‰ ÃxI+Ô¯Ì&PÐ[Ù÷Qº%ÉÆ5´6¥ÌûW1h·+؆ 1 !ûÕâIÛÒè15“¯|ô[â1ß„–2oe ¸">È‚l^¨Wg B¶…ëé\xê¹sšN>Æ:ϰ²HqЇð5¾~µ¸®Ÿ,Ùö{…î¯âžE ¥>ÐÆÏ5˜ZBØ‚þ7–É·óùáý>Õ6Ÿ)î§h¸ñ_ „d]G&À:¦Gáó³X¡ñá½_¹˜|)sûQ Wá:y /‘µš݇ëPû¿&wûL¿å£ç{wœv— Œ 8„~Þ!!Õm ±®ÿPp﷣ɭA=1ƒ29QKpؼþAUL Õ6¯qY!ï *¦<_׾ס³üë=7µ-]׈ª¦¬:W«1îR29¨%–Ð*‘`s±¾É›fQËÒ“æ`1uð©ŒIsl±îÔÁ§•ƒ VPLo\õ:ÂVëN½)}Þ¿ËWøÝàŸû¥ÌfŽ\›¯“` %½6 à h}¦Zí©¸ þ1­±Š•^S†Ø°ÇG¬É–õfÒ{Ê>]iä:fÂ`¤ÔØ|˜-j& FÛŠùwcÁ d›øÖ™nŠƒ¸Òªýýw£!àûúO4Q,œ÷ÎÚ”!zÒL@£f6ö«A´ˆãÙË6-„1Î 7´¯u=ù«@‡Áéõ¬éd º=2|Æ·a4=yÛTkŒkŒ*Æw| ƒÔ 8AÅþÃXåõrÈAP±ÿ0Vý®L-Œ¼Ë’ –ïÇM|iUaÌCŸyýMBÅ™•é)Hë <5j¤ìä;`ÛÅ~àb)ÙZ;¢_ò=W“‹S 3î‹…ÿv9Ç™Ck†Í¨NÍšÃë«ðZù˜NšFMïoi0N`uþ€Ôà­/ëqÆY‚h˜ÁI¸7³!ŽÖQf›ï?‰Ê8Ó2ío!Ìâd8­ªV•U ðqÈgšÿäÚL¬rÖ¢Ð7‘ÎÊbç0b@ó±Fµ|æ~,|¸õ¤é$´Ù0Ä–œq†i$ôàWŸX[Ó§Ž‘àˆSÿt˜ Ù³#8³‰±L¾œn[+Û:øj&‚(ºÝ´øÄ¡‰:T­z´g %8Vþ6Ívš’79,Ú˜©p•(áf¾Ü.m›á7<‡kꚤ y•ˆðê#a™sÒ|e ã©gtâÔÕuKÉž·rFªdei³ðã8¯TT\³‚³@aÀB¨8ÚQÿ+()#f¥ÿ e®|»üï:›‚Ú«Õö|]ÞjâIhí’‘P%¢êç^ª/[-3öþºpÊ—Þœ?ZŒô/‘ *§Ñb¸Þ[IU¶Sk`$"þ :ZÊ$ ¢"~ ˜ îe$TÇ”Z-5m•‘P••ö›¥%$OèQiж¸@„¤õ¡Q`ƒ¢¿Ý¨9Óõ§ÂFÎVóW-pË·g2´Û^Y¶åUðÝO àš·kQÙdF]Ë{µþ“aô:-)T ×WÑ#&™ª~Gñ„¦ªƒÿyVEáQø‹ëáÀ]H‡­b¥XB—¡ ¬²ü5Vþ*šK³yÊaD+?i„…`‚PæÐÒˆŽYæÐÒˆ"}&¡<û4µ†Qͯòê$¯_!M¦tô{r|£<!1 ª¹ù˜‹ë‹û3BÌø½ªLy¼íÝ®–ÿÀ¥É÷muªŠr©#mÌTV¤f9jbÉOVzÿ¬©¡ãJ“ÉÃtD%,…ÿß4â%ÔžOޝKˆùX-ô ˜Rj%ÿ ˆ@‚kÛ÷÷úWø‡'à‡ª®az¨¥A¢…ŽZ„éC&5˜zd%)߈ñ½°rfh0L#cPLK57/5¾Ç4b—iÔ§ö]h¢j\æ®`˜üþ{×ä$8¥ÃäÛi2aˆóÂÝ­Zµ˜Ä¾ª”GsìÇ/ØÏøá9…´Ÿ[|Wºæ•U3Ž‹dþ•üªÌõ„UèAÜU€m ›q8LÝWpLε¶B•0$Ë뽬ÂÛºªcSɹ2ë½Ëˆ]|zý-‡Ÿë_nƒ[™ŸÌo8ÉÌ*øN×ä|IM~-‰$& ¿A±H¯ô‹E´z_i0%u„Œ×î «ߎ„˜œ•(ôíœhMÊtCÀ9ë­¯'‡Tjzðßòþã¨æƒ–cº!tLƒ>k’ƒßÏò=ßß’&3ÎŽÄt)½–|zxsW+ÓïLéÉ vä½'T‹ÇÁ%; Bß~>ü¯Ç€ùËI9H>f¬½M¾M¾õð†09ÈTµ¬¶¾œÐŒA&‡Àd.*WGr>J££é«É!ŸšèZˆhÁÍXO¹Ö\R¯ÌWÀÌÇj¤Ý¨á¨GÒtƉ™é:µ2cÝ|(Ð|æÍLž}ÖáÖëZ¨‘y%yop=&Œé+u ‡D†§ë Ž…ž<1¿/M›Zi!§-N öÝeº%4×'†þ=eD;_Úw.G=ãhÇ4⚬›]ḂXÿ2o\YÃ’—Íw|•Üš×F"Áf|³ÁÊjp¥ ?Ÿ–NHÁt1Gû®£ÿf–…¥ÇÉVjUKDàÙx­æöŸÀÏÕ1´ªu+¡3ãÀPŒ”Ò&¨˜Òð]Aµ¸ _áµùÐyEÚ¼‘ÏOèÎ8p'¥tX7(@§½:!¥#+fE‰iRÍæÛ0Á1÷ËUã²Á¯í¿^—0Hç?§ÂŒ…nŠsÜÕ[ý‘2Ír¾4pMÀý.MYË 'aÓ×J³êõèÇXàý»`Ø?’„6ïT\¡)0#Û†P3µâ«É„Æ®¼ÁB;iCëo\-vÖˆ'4S‡¦ŒºX¥¸AÃ1jÈÜJ,œÒ Þ§¯'óRjsak².ùB8w1¾÷û»†ƒ ¡ver›-IÓqã3o]µ RÀ4o9 AØ™rftÆwÇárv¨R&°í“~Ãj(£ö0z9é5U½‚+ž„zÍ0ëý»hëÆ¼®W6ˆkq—HWËk1?zß8Aµ½cy '˜!HÙžBËS˜Õ¸FBˆEcRþë M]“4Æu¶’ÛUÕÇûß"ôše$ï¤Ö·Lé^þÓþ–埧dÓABö/¥%s¤|Ï@Fà*æ'W™¦'+=2jŒÂr¯w­‹Ï4ºˆ›-„v)äñ~t7@m¼ŠBRCyôSVkBßñ]3"ãÊô£ÁU( ­«U9¾^0Bfù#UÇ÷«€÷VøÛÍ»½”…™:ƒ”šŠ3€Ç— >ËSlIuÀÚ)À?ÎJ…õÂ}ýJ3<€/ÈÖ ^ îïÁÜ:ÊuMéõz+pA¨}Yñz½]„Ҋ´ nöŽsÍͶh•ïÇŒ‡ù²:ª0ÌØùÀ8ËPTg¡’®9iÕ84ý?F N…¦Ž‘¼–ãûÆ/‰<ªŠÖ7 7fÂ,KÔN‘üËkúÇ&Üž\…q~³.ßëhé<‰Õ8>,U•ÓÎçÛÊõjqp"<8.̧^=_Gj•”‘¼þ$Ì^v"¦lÛ (Œ‚ŒôŠ23ùz+U6õÞ Äw«¢{iõÙ«q‚¥¦U«‡/¡Ô~ÁROh¨µCÔÎòEœ0©éÕZ*»K¸3¾±½â¼6µ&ÎN ýù]†C¨¶s¦r}=МI¸&à~e&aÔFÎ_®çSa80F×åÕ—"(6^@Xfމ rÐïÊüêëÆh4õÏöº4õ~Œ §kgÉD¦W¡gÞŠæÜºþ"PÎÌç“®Q¡§\C¦ ¬À´ –^C—1Âå::Åšƒ*¥]™ÝÚƒÚ~Ê aÐë£P;ž2¢ªªVþ÷“8ÁÊüóý•çÒ wLSvŸÿáh{cÄWê™üŒlðÄ)AâߦÇn°’¸‹L‰$LŸ®?…u¸.~LÞ~5 '„à1Ó¬þ+]Ó îÊÚEM\ûËf댯ZÏøºrî/2/ð8 #çR?M»‹«óú-¤|JÄ¡èø@ wî‰xrW¯ŽïØ’aE®õ›·(l%XXš¯CÜ}Q%¬ŽÖ}/V¦ÁÁfá]½µ3LT<‹=Œíè­B™¯ Ä4#1ø§j*É'«ÌÏà£:zÂ\]Ä]Q5õå{ag—<½›½>l®#=ìÔCËïÄ']ÿ8Nú'4'Õþ³Ú?üóÈßž\7œÅ³ ì(ƨ‘=;ÉÚ+pÏ¿?X~9ÊëGh;+D{4qª/8@öp;Úð$¢F‰!·Â]d%ë—]ìz¡­)bõ¾V³Ä؃²Ó#øY›W–Íä´8¶Çóè±ßE²…+xV „°¸¡Afb>ͽ“ˆ®PüS,¾›NŠ2ÂuüëǶ-µÝÖ‡ïßå{â4FìÒêwuסHë«7Ÿ?jÖ«u©ðiæÊ¬ñôº ''Ë£ B6XTçç$Ç8¥EP+ÿ£MAƒ°/|ù4-?&üÑkÀ¿ä„꨺Øûô–ýá×йxhȬ F®‘8M&l神Ó<×*à§iFÈXÛ}ñc¯ó^}Ë+àÛè Â¨Ð ò‹ 03¾+–U-iô&î?C«ðäS‹Aqd|šN:ê™øûJ´ßq:…K_ùœÒˆÄå͇¬4ÈGœÀjSÀünL ƒ|˜þ\Bõ¼¿Ü_÷KûL#×bˆöa_µÓ =w +fñ=‚ÜfNªVLâ3÷óCZ€¾EPráÉKªeœÖu¸ Bòè÷Æ!‹çrȹfa©/¿K“í«Œ°4Œ„øÒkøïÃdv%p8®C5’‚b‘Cqmš˜ø1ÎËõÕÒ¿qèdQÕÊÄëdºÇÐÑ\™OèÓ· û~Ô°i}ÿ¢ý¦é¾ïÂ) 1û02‚…ªµŒ¾#­ö±1yjU“ÌšPœ1—\5dŒ%ŽšÔµ)óZ}Í´õGvò^ÖšN‚0°GEêZe2—w@ø¬èÞ[vU¢¿âó û,ß«…3÷Ž}¹“t¤ad>#ïŠÕ½§kÕª\ V°Š[6±rOxÊຬfÏ8úb,Uæ $€l×´G-ÿ­úˆæ?j¬èv/~p6Ü Â'Skw¥³1´ÆëH0ls*Óè‡m$È<'8Q«¾‚Æ› A€m§“”†å£Ÿ¢ošÖ·[Ô¡¥‚Ô¯ªNJ×ÔaZTs¥UvÑ Ït‚’yE&ú®Q#;Gý• „*izTÕ"Mp$¡˜A°ÈPÌxjêã¢Úà×BF?c}x-KßPõ&aßʬ„õ ‚V°5×ÏWI1¿rÝ“×ë­ñùý´„ª™F\¥5,‰Œ¿ ,w fN©ÇÆ÷VnÒõÔ"^Ò¡'^þ¯ ¦é-¦ùó»Ò€U‰Ê¸¤[WøB^MüšóÖ >ÐE$pL|4‚þ ùº˜7¹ýCا›UúÔ“ZÒó„Q‹dŸŠ}\ËüÔGï‡ËøŠíøØ¯'>/—™+øÿr®»fH„Á Ý€í\Z",Έ°f'm¹kØš€Ç Ìë”i†*c°!ëWw+‚†ÁUe±Ú¯÷Ú˜‚ ˜!-çBûK¬ïCÐÎÅG“§²!h'7æ_NåæwUÓ@]ì7DÍ/—’åzœ>`†î§©™SCÕ±4økùü‚Iœl™–š&D^ï ˜à™©‡F–01ȳ˒¦:™wÅ[K^ç"Áä_ðŒã´F=m®÷ýíè‹æª«9ñs(²¢È~W«7ãÿj’J—NÀ!áš8™3' &º÷#trBÿ¤- A 6—ZMÌdq W{R§ñ8T¯Óëu®.É)íZu'â ÉÙˆÅâ×Q‹º//ùjŒl“I2€2Zlɤ>ez@46н¥–Æ¡/³ƒ$ËD]Ç4Ùûª­}U¥d}Ë€ÖÉEðd·IS“)µª‚“Z¢xÑ««ñ+cåО0‹“'õš26ØÊ9 IƒßhÑ ¦ø~y)ŽèÓ¾êƒÕ(fÀ Õ{®*%aÖ̹6ŠÏÕ'«IÀŒ±Á6asüëMÅÙDNBi°nÁ84FÔ´©?Zõ*0XjLWU×+ûzûÓ#‚U¹Å•Dìì,YâK­vúž„\Á¡mä$eÍÊç·Bí)DVÔ'´fiøÑ (¥ªˆ–Àµ¾ÒHªŠ¸Z×úN#©*ËWp ÒdÞ-àÊxjhÔüÕ tX¨¶¦õ;µ~TÜÇ¿ë«ä930`ŽCú,Ó¦#Ĉƒ‰”®EVÝ~ÃUC×9Œq³&ܺÑN«1C抮aº)>~ó† ØÇÏxv«tÆ‚Cû{Θ\˜&›ë£L§$) Œ•@‹.azÊ/ÇÍ¢.‹ÈA¥Ý ³ì§šI+%h€/°ŸÚ’áuVºZž—{#u¡'D0[GW‘~þ%Üä›ñVêýÙWs‡íe`:Òö3=P¦XOÛŒDL0é,Sg(„Ùã\©€1AÅÿæ_ãË407õt,X²´1uVä×—nÓÚRª›ŽäÅÇŠ•á/¿^ì‹άX¤_x‘ïûÏt ? {ÀV/#Å™z’gœÍÇ &m-xP,hÕA írß`mdkÚe­˜b£W¾$eÅH¶Ê*ýK]æ¶ýå`ãØFm—’ãõÕÓ™q¬¤ÏNµÈvgŠA”tPôšvÉf<Úßô¼žl³Sho:`¯eÙÞÄÞWB‡Ù‘¯’÷Ç[ËÂFÛÅ`Žužqb¥fU²Ì(*Ø6ž4«’e±&‘`@r¡4›%¢ÃÔã@’UÅÛc§ÖÛùöanÚ±hßm°Z­JWÐÚ›~¸³e*€4‡aã@³š:¢Y®’‚ëqÃÑHJ=¥”X uÓü?Ê!wX¬—«eDÅ3¹5Ó¡ƒ ó#&Y­«–¨žÂˆòEû®ðÀ‰ŠãOûŒRYZºÓ܃¤`5ÅC«`†çM ®´Aè{Ó`¾šp´ò­_i/4faf¥Ø` $×!;¦ìeÔ˜ñÁw{ ì8³ ™ „¦3œdð_½Ôgj‡…Ñ1Gþ˜ÿxk+¡Æ]ÿÿ®2£#(æª@æÉä©Ì 4Úò6#×W0BVA¥ý\u†@– Ô3-W&°^Ÿ=ÃS›3¨Ç\ã?uÔð.×…14gj@‘|Ÿ«<+ÍŒÁãc‰s}µíáíùQ0ÇÉш°7ò1t:wø×°Ò„Á~8Ñ(%pŸYö3ÿ^ Ü(2ãofjtæø×ö$VÕ(Òçû¸qŠV6eÕº†àL(W*Y{³}⠘˾öïKgýV°*ÿÚV2øbÁºZÄ·¸“+`ñ<—0rq]0¼—ÕÁ¯³ò1<­ÆêP+ˈ]’‚¸ þÜ$16Ëüž ßÔ‚‘äÇ óY·s± ¬­ ‚i°¯Èï)H§hh¯ó ®;§LgQžÑjä­šì@+i¾ê±ÚËZe§-­(¼u²Â¤Âc;O$¾,*Z¾¿Z„éAý'׿•º7¾‹JwTèðV2g ¥iÁ·Å_†¤ÂÊ@ðÔ`’ü‰L*N†2øgº&ÌfYm€Zg¨‚lty* >š30aš"xmêÉßqá íÐŒæâîxšúW¶Ÿ&œüï9†^¶‡6=ÝrRâ Im£Žf:C&œgñý¤lÓ¥Ùf@4N‹Ô7êlªÓ<ùÖ8Z)'6Í ‘<6p0°›úN‰®üž ÷Ú‚ø•fc‘8:( ÷r+V¯n8Ÿ–q‚ßúÑVXm´qiѵÏZùÔa¯µ_u~Ûÿ(½ û£yré¨Iv¬©¾/}ç8ƒ¯Ç¶"î+ã+®’A-H6€#à \¸¶ tqœl§ñéa/`í´öЃÂåçÉ”Mƒ ‰³ÅòA¼xœEò*|DZ¥š<õÓçï ´ÖÒå2Ý¥’´ûáLáaÞÜnƒsiØÀi30¥0tìá H'$LjÓÑfòxèõ"n™ÖœEwl¬>Òþ†îž“¬©Ç¡—âBN¯¤Ü(‘R<¹´„‘é°¡¿å8Ÿ¹ðâ.w7Þ2â6ÐUteà-¥ô"$§h6Ø«Ùÿç:rœ{+W)Êb‹G#ã)+> ƒšP½rä`‚hR•7'ØKÆ(/=&`¿*·Ìî'¥ý[®¶ìar€ 9˜Ú²`{ý­¡³‘ S¾âíW[‘c·ÝVœ'àw6ÞBÉWñ€átcÌüÕ»|kH¤–‚ýÖ j¦-Ù§,…zį̂ŸŒ8pêfÏÛûgqwö²깕…÷„þy¸Üƒ;”÷ʱñÊdúd 5G…*›¹#£ôH01 i¨FN3Ê?Ub€ N”Íûy>Ú@*À d1×å>¶»\ÔÖú²„Á>sOŸZiƒ€>íÒæüî ™ëlåðû$.Ù YøóìÔg`hÙ®RŸìŽl,‘wÄi+f£}Í*‰D)p‚ï1Y•=ð¤4é6È=’·m³O±ƒ‚êÛïÎX›°Ó £pÆp˜*2%WÁöÜ”¦e§ŸðÇ”Mór½]·±Ç$T(?'iÆ¿X}{|5™ó¬G øóÔâ|ÏEã˜`0YPSð>êd 1íøÝ5« fœ<2Ù5B“Œ†q¡î’x#¢€“ëNø7Šä¡/ó¹´#¯H—³Ên]&þæUÙEú3 ™p(‹Wlþ– .ô̾ŒaöØÑÝW¯Ìz-Ž‚e| húçÏå›i`Þ¹ –è¬ýGð2±xËÆq*BŸö i‚å8+"eÁ¦–^ÇRLÇqÝàö»EÚô\;2ófÅà`ÝS.dVKΖyŸë8¨a!&«Fyg¶zœóæª}Þu|¤>׿2Qâ½5}’įVב0Œ;½ß¤VÖ´Œ“q¨Øœò ê¥ýz–ŸÛf󪕣‘¬Ùɵ8Û2a2;¾`çˆâ„ÄÄà0Úýn¦Ñ ]qpÌœ­áÚ¦A›ˆ‹€I…5 ?uÃl5ü¥ÙJÎ#„ _¢Óürä ¹uX¸f4è ç8gÂþ¹t3 MÉY½£2͹¸“hjêkÜú]‰ClŸYQvrÖ%f“&€®[ê>ÏRQ{™FÑÑ7£¤&LsÊfWOf½u¾ZôN†ñÃTÌ3iÉx´€]7 ¢úÆX¿ž£V‡-bÜh³Þʮɣ8 4­f¢'XÇLˆÅ¹‡bÅ@iR¶A¡823‰2J¦Ô^ž¿Ò*ª°ë9Œ…QŹi56{º9ÎÕt’ЦÕceÔ“ƒlEI²­XŒs„š6óýuWœ•¦‘ÄúÊ÷Ÿ¢8#A¾É%»¼ZuiŽ2ÇÈÕƒ^ÙOµš;/Ô9°Ük’*žõ“‘ž#«h1ÁJ_,ãÚ¦1eOšÎÒwth/”©}à ®ïo1eY-Agqí¨¿Tq'ÛnYôr}±»^„ãІŒ°È20°¾(bÛM 5HÁ8²ÌY#q+|}ÝGy îÄ,òñü^øñ Åäw±Ê×ÚÕ ùáÒ|kÈÀÎŒãdºŸ¥7Ä ×5h(ìH"#AV>z Ì—çU})ø‹ækÞ,ÞTYš0à1Ò´ƤSã&XC•Áôå*±§ƒç¿f!Þ¿ë®ù”}!TºfU¤“ P Àg*Í¡¬a’Ÿ‚Èó¡O¥½ƒýU%wQ÷Æü£i²øá¡?ìø—z¬Òb6o¥V5‰T£ûH…Ä~ ÍÖCËIöBÔªÊr³†Æë°4H~2ûøòàwõJ<%=ƒ[Èdœ¥7Ô5Ìÿê©¡CM|–•‡u«±Î†Œã{Šu mž«jB2VFM@É0qJ<â̇–!_×  'ã,™Ûyv­ˆ£`¤Ø§ymºqkÍÊy<Ö>Å ¬£ÕXZ$ø^¸¾‚†ZœÍj"^›XˆB½‰úQ2ªÃü S¹$c:·2WæC–ËäÆññ.G=ËëÌç—ÉÔÂËA¢4hÝd|²ÞXóÇEtÓ"ï)ûZ˜¤¤Ç §†n„ÍÒ ¿¶ž[ ÈX¨ŒùÐà-_#Ö* DÐ0=X}Óá3¼ðþ•rYF!P­s# aHâÇ,ÛÔ6ÿ•°Ñ\×*Øùþžä[𗍵Âü+p/ç\Aw¡ÌgñTj™uYkó_™eº…“,‹ïp aáf‘ÀSp8\TÛeÈùz+„Æ ª²þm…õ8 '‰9]’+ B‚Ió?¡ÖW r|†ÜQ/Tp Ú<°•UµÇùƒ8ÓQ)~VM©û#m±žëºL”€qoi‹8b"³ ëßµ™Ë(«€O3c%‹Of½3g­x5jæéRã$ Ÿ¾—ÄEÄ ƒ,SÎßÍLø‡¸´ÞëPðF hÑÁjfÛ^WDsâÆ{ƒƒI{Ã娥y®Cb³Ââ“nÔjà ê–ûR-7ö'³L‡µ•¿Ÿ‚™éÿû?‡®ž¾ˆ%éZ›ÒÓ®=euL"y/¿jyÊtoÊÜ•SW& èÈ;£^ÖCûoèÀ„â—ÿìŒMùÔµx5ÙXGá,*&^ßõ €ž‰¥7)³Z=$Hr«ö-½@¥ºïý«Â+³^Èè« ÿj9‰,˜hr ë5£a~7¢@~Ù¯TÇ«S¼ÐJq›3ÊøŸÿà*®A!ñ¤›ØÓuOÍ¿_'šÉen0nI<û8×C&ù€/ ‹Ý*2Å‹gÕü^ß¡’=Ò )£ùy…ã/óYµÀ‰~<¿§"Wª‚ÔRr=e•WKýŠ×þ­‰ÈñY‰ èWµñg—'7jŸë bÂÊ’»ºbàô€N£¤Ö‡qS‰L?ŒtP¢r²½(†‹0ËÔdTV¯å M"U?pŽð`l`%âŸ_å² eJÜpü§F½Þ²8زŒÚ©ÉñQyó/›¬©3 ã[Sƒ»Ý$3:¸„¾X¶wûöø™>»{&7ŠfþW—Ÿ€—Ù§*=óÀ¢Y îjX1:>mk9ëº*Šv3:˜ ó­M|#,osþ§R`c«æÀ0ÈYR½l’ÛdˆÆi“•9Û ^—…¼ï _8û…jéýU—€@£WGs2Šˆ0ËHBV)Á†ú<—c½AÇgúÚY4»_-Mäö"/ Œm•iïG-  x+–ןúWK•·Xû¦_Ÿ ^añý½Wku‹„-‹a{ \»·>‹§kÖŸ §[Þâ3`ÔÓ룴ì+£œ+—ÙÊFÁß.‘¼¤Öñ’^°ÂÁVù~êÅ1´#,•ªÝâ$ýcgÞv¶ÛÝú)·"±î|Kßõ ‚PâóûoÃÏ4®œ‹e¸íÏdõ¿H&m„þ\¡–>ŒÇ"P À@`ÒBFbùÊâëdzÓïhn@~.¬³|Ï:§üq8>)3NâI€ã0l&H>?sî+™²o¯Œò»Aasý+»[f1»3Ÿ@¬ùÒ·PYéÄicsCeYÓ¨4é(ÍèyO Äy9H9¼xSgy4Qxìê§㱕ƒHYÖˆÌÜЇÀ?Æz~RŠïtê°‘nß"ø„Ô–ÁP6ýó&âÍ”–ÞšUHæ“tØß )ÉIÆq0[+/7¼ÿ‚‰qP©T¯-týÛÃf9p)¯¿ ¦C®S2¯p¹ü£\yÔqþ × uúÛ¡·tvœ®¦&Ù•Rn¥4np¡}a‰Í?• ¯!\ãÞc½àßr91öS©7DŸ×¿Ä)_qº³®›6¤ų ³R’Ìù@U7 ñÉ^–qŒ…ÄP| ›“Qñ¿ùWe#ݼ“Bœ¸¢/ ë;G5Џ.e=eukå ð$Öª7óÀÊ¿9½HÆ~fâΪÛr\|Ø^Û*&£Ì9U ÿj&R¼Å=(Rl䚨¦zŨ@“PǼþ]ð¯&¡Ix ÎS€18>þ7ÿŠZXåæ*ÿ7ÿŠÿpb)MPG'1jêdÞïBLq]7Rz$$¨'âÍ-²þ',ÿÃÙ⃫¯Ý"Û ¼Å. À(°—K;)Qøf–•Leä)0ËC˜Ù®_øî>dšªü.…7j~ÊÁÙv¸:J}ùÏSÜ´$‡ØÅÂÊ*Z¸GöˆrœÔÁv)NâyêqfŒ>‹§íð‚Šæû•(ÔõA±b2wýÐ=O-í_´‹£dй…ïÚØ¡Cæ8Ñ2 :5òÿÀÚó5î[·Wì&>9`uÈ„$Õ'æòõtˆ:”»¤\µx,(W|”Àuíé2™` çáÆ8¥0aéɾ|‚¯C¬0ÆrGÚ´Þüs&…0õ›’ Ðr"–*VyÄF¯Î˜Ñ8×ÑY¦$y¿%3Î:eQ(•A«¯„È¡$‡œD6Ëb™åc§X)%1ß?Ó»Ø>ÎMDe¢ŒüWµ[|qÕŽ_P!ÂA''¡$´ÏIŠÆ BIËòh}¦ß+>ç­$º¶å*J MÜÚß|HJN¾&¬8|’AÈx›)d=]‡{¦'L:>ˆ}‰Š’ï§ÁRSÀ'¤®i_„bºÐ&A°óý«t‚¾âH4°ü’'¸Ù2MU`'ØÿtН`Ù#já' ÑpV»n¹€”^…§;Ç·mñªn0üÀBuÎ÷z §¶¡CZ_ÞßK¬¡.wMUGI4µ¥…l+QªK<šFQgú]Û‹î þjo†Ü¾¾ÿ)uľý&Ö!ª´½Œø¨¿Úº»¿Ì2W|2ĆÎJÖ¢Þ¨[à×A¢ã3ç׋ð8¼ï„–Ç'áÁZ? cvmÅiiúGwxWý-?ÉÞ¦ÔA¬¶jj*b ó2œ®8zkqð %»º.F9l\Àæu4ÝÎÞ:êž™ :‹Œ`%s¬ß¼24ï ý –¨šoªëz€-øl-üþZ`¯cG²&Ù;ˆfªãÎ"S›su€1ŠOýs :€ÇH¸q©‹…Ç)=ýÛdøŠã7y~*¢OêùÌë•âåÔº\Zq%”‚á~}u0 ­§ ¦"ö\ލ•Ñß%¡âq«ÂJZÖ·µæ[J¢ƒ¹â|Kæ–ŠàgW%æÁXÜzi=ŒÆ0f =º8àè˜ÁÁŠSÓãê\òpŠÓõ¬kq%ZuE©)â‹OqR"éÿ‡¶µuôŠów+ ÏïÕøåÚÛãÔ··E͵óó,ºûž9äÛŠ#0±N‰ša˜1ÿ+}ˆ€«‘bÙ ÔãH…Çb§ ÈIЦÞÚ‡Ù%2Í™ˆÂ|eVÆJK]EQ€~m•üÌøjJ/g­h´¼=DÆßíü,¥¹2áĬ xk®Wtž^óæg&3»±&Ë­ß²Ç#óñ¿š«uáß>[œöcúñad4ÝŽà¸F pÕWÛ˜¡yÎEP a‡YHjf˜‰U¢ž]0LM =7óè<#rÖ‡>¬˜¤{4§<×j3Ï I¹„“§pfî o ñ¿Î_†ïO9cêcø’ L áMgh19á‹&A^Å P§ýÂkx‰é  ¢XrbñÕ%¨U*`÷Ïv5KPïVJÆ¥õ–æeêµW Íüê!jšV3H´2踮yÓ+³‚øPΑëÿ.¾M¦ÖÑôPì "@ïÔC 'iµ¯”š¡WÌ™õîÏÙdJ Ÿ¯É¶ïøjˆ„sŸ÷Ãê³—C”T±hžú¥ä½OÒnžÌÈ•ç˜5ë5˜N¡^¿YùC¼:NõËW“IX^gÔ›…%Â%öe9!UŠa"ΘîÓœ>ÿ-!é =´"°DCIÍÐKþõÇeCPV¡ÉçŸâ2€#œ YíøÞ¢)€@ùøKbX©`\‚u s=r @µ;u”uH}¯÷bˆC¿Ó}ã×)øû4mFj †ƒUBú´?£`L˜ˆ„ý³L`šAã—OÎr¿eËøÍ°ržš2bd†—<Öeq€f·‚Ñ W–ZÃS•Ì·Ì!ÍœëwɃ0ô¦ÊVDaxHO3Ïò+s…K¼9!Ô€uf¥.eaÚ³í_&—Í=[CƒêÁQÞ³FÒ½þ]]Á°F…r|ømaë¯æ ‰i•Áö¤ÑËtñzfêVdØâ\üòýoýá7¯Bþ—ç3õ¡9~7wbÔÔÏWöë’»_^à+īƈ^Q7•BÞë ù<‰ä8‰”‰sj1“ë'› +NË«–1S«¡–³å„_ð•2û»y3àŠC‹Rášïð¿´•Ÿ›ö$Ð¥pC|9]>›ï‡¨ü@í99‰T¨ÇžI \xÑö%•Ý–+S¸øŠ•)‰»!R¡@õéŸÁßBÛòæü_¢ê©€Ð0šXˆ#ø¶·}d¥âÏGÎDëi”‚ðêÁÚz߸2/ª“ÐhˆÀ2öSÁº£Ö<ðä«Süú¯hæ»ÎŸnj…ºõ¢°Ç‘x½× ‡Q_èMïW—NÚêÄÇhìý3¹òR’¾Wœ»Z4 qÆO²­J­˜E¸81Ô‡(8ÃñQò²˜óÚQ‚1òù3iÂÔâ¼¾4íÎ9RWÔ‡W¶9œã?©<úe¡éQ|~qÓÄÙiÄ é{¦é_Úúï¥öŒßîfæ·OšîÅ ˆˆyïBp¨"$œbmM^Uü£tz}”aÚ~¿œZ»‰ \$¸³ªõ™­Éøè¸ªáŠDF U2sªNš¾Ä[«q趪’‚Ù+ÛÕs–VO3Û]XÔkÍ·úV:GO½­XrAn&ÜßK3{ÅqTÏ;館ñǰ®f\A¡ªj•‹Š÷*_£Hg*À.3ûêö'èVqˆQGvÈ„[¹X“cIiÃÈË ¿j˜h@H«:mŸÏ¿âº>r+ô:2l¡`¤ý á:l^\Úçãø¢|È«þü®xÁ5LÃpż_.è"«µ<Ä e^\äV¸R¬ô<ëÔ°ˆÌóGª‚„58à?þý\i¿U\Æ~ §ÉêßýeSP]lM§tŽ"B3`dšä¤‚$ÞÊI”V9~¢.æ~&„Ÿ×>XúÑ´6Ÿò ªfÖp~2äŠ 9dMæ*«|Zê·JœÀ*®ÿL]­OÔ¼%ÓÌÁ/Ö:J\w ÕîÇAœÂú¼#Q0†÷Ââº$µÄ{_¸Ÿ©‚Ú}þ m_þÑ*/±Ò=ê% çõýÏ•)|A=ˆ‘¿¼ÿ² ûà ²¨†P`ýYw:™Íó¬C÷.&!Ép_¯÷3L§*Ÿ?Õ#B…8Øø8¶±êñlI·ÕDrããë"ô€Ýe³3 ÕÒñ½—dô°‹Õ°î­™tg'NF¨èî[ã®|þ“aâ3–ÝjªGûµoÝ­,mò¬ €zbá¾æ4%°]ÚaÞ?|¦ªz3ÍøÞés¤F»€Ä´j±\Ræð,Vµ|땾¯ÙÚ + ÞNâwaÄàæ¹€êbµ]šð@uÉZ¯dHœ¢—VÆRá*ÇÆƒßweòËçŸdÐGo¯NÓÜà„ïИµÁMJàF–Eäª4”¡¸¡åÉÕž÷¿I¾8@o}ŒÔ€êÐûµ ³PdH©U&‚OêæG†ÐÖÉÀ7ýÁz\c"œ çÕ=™\W¼Omx!®v>/Ï*M~¢êŸiè ÿÓƒ@Œ{8yØ„˜Ü  Þ’dÏ Žœ1cã«… ïGÂbFq¡VRÌz>&¢âHL_"GêhËt ~tcÍ~5Ð(Š›( ÀDtOΛ ½UשׁP—v‹ø‡{R“VùîKuVÝxê)ö!É#À¾N$M˜ÉJü¢gN=%`¢öP/çj¿Ôyªò8>Óûe¤š'Øöη~Äã$¼Þ’§ØêÃ2"ÛËo®¦uv” 1ëjV¥UfvÖÝ£»b}þNðhì£Äü»þWKï´Út0­b©ý¬ª{ ë‡ÿ²Òæºùr~±›?\ó§s'b7@…šÂ¿*PÜìMÿ hĆÿ\h¯¼>ŠqT ý-mXAFòêûGrSÚ ¯ý•»^sÖT¤ûè~®6åûßRœvjjƒø‚°Š®ƒºê8t®é²ÍåòôI[Ä2â5SUš·yñ%´¤1[+žz5„Þzí©ÒªèQ‰ý“VCÂ=à;þ×WÌS ŸJ2¡ñž¥˜KÔ@(XŠï ¤–V#>PpÝ8+jö•©ñ•iUtÇ/àÞšzŸi¿×˜û¢xõëp~óÆgò畀Ϫ—$!a«Z™6“Db"1 [ˆ*ÒE¯ãAÀXÉ6þdŠ2—üå°;¬%à=E:u‘˜ºYCÿÒ´ð À pÑñÁ…Ïë£þKc\T¤ÁfÊ@Ëëf*ö T8¾äÏ –VʺÎðû\ÁJ‡_q„0ãFöqCqM¼zöËÕæõ]0 Áöä*j$E†`ZNà&&<¿²¿Myøf«GËÀtø›’ÃìÀô¼u×4p=V—ÜË볆Âñ|Æÿ¦CZÍ€¹®¯¸”€Lwffý•÷‹¼B ïõ§`Ž1i&ƒNÅ|¥×‰Öªb„`5üopϳÇ¿ÃbÙõ_Þ7òKñM3î•ÎøŒŒ!ˆ*ãI©oͲÃ,›Ð|~ƒ ©*æ´`>6†­Ëãïùs ÂÎй)7~%B€¡¾ó¹Â*…¸ Á¬’);ë¸Ä 11×$ ØÑÄNéTòDt3Äf_d:2ª Þ¬“J=%5õ›)˜#ßñë¥)ãNMaKâÄ¿ÂC^-…Tü z˜Iö1uLŠÄ¿žûÉ¢UÀñ¸"úˆh߇ð•×j8™›ãü2L¸áSuŸÏ—×`©v\P:¹Zß³ËÆ”8÷Ïâ†àÌ$ ƒÂb)‡5tÔ˜Õ&…¸>jü’IÓ`<³nè0ÓIè—B”Øè®áwÄ•ZEuÜ+¿z“â È-Sq}®Ò!K¼Æ1£Â´&\:Ç!PùT’¤žŠ¹›ubjm\¹&ÉÌv޾Œr="õt­ÊîÒïF¢9ÓWñãŒI_Z½%‚˜pCgÏû'ÌÊñI¯4Äò(Ñ^_ Ó8-çý§ÈÊÇM=¬O•0°ƒÖ3Ó´ 8«.![„žŽ‘æh[r2ð,‰Àv¬´ ˜Õ¤:™ÆþuÖ¬@Zž€¢.¦UGtÃ$Q§aDT¡fÍU!5}¶_ýѱ!Ódd—‰QGÚ:ò„Æ‘Ìe•Í(°ƒ™ø=¿y9ð”C þU“ÄŽùBøN øqµ5}ª•~º¡Œ¡ñÿ9Œ§ì„Å"#Òã… lwmÛÕ¥ß  x¡#p[&ÞÆñ–înv5æ~\ˆ3Qc^"›3ÞVNÃÔ:ä½ì×J£Á1’ ¬->ƒñò@ù·þ²ÉqyÄø±©°ÓH’•ç_# %Ùë_Á80lfÍ%ØÇº-섨zëÕ•’ïB-÷…}Ïìk¤¨¢qq¸JâË¥ŒDU¯ž‹/SͼÐÀ§¦zJLÙ:ŽZ’6™l/ƒê,31`sz±Àä<»¨`Ó{j ÆÛ‚QWb|Æ 3ÆÙ“9>ìo È*¡– Ÿ²‹ðÙÓ—_¾¿#–zU‡*\-_Ý¿+al<©½þÿB ˆ»íÿdW÷Œ,ù㣷khÖ¹25²–Á%q<†I<5G61÷ÈsMh†vRDfëŸr*øŸd;¼èþ@Áf‡ÏÿÒ¯q§¶–Ü#¯¿é,Ô‰ Ìdæøf‚¯³Ìp» ¡îІÐDJÞ¬”¬Î¹ÒhI&°`¡•ÁËøäêpå^a 0Æ×‰ä0*p"<æ5ÎñL¬»I Ü€ N>@œ€ÁVbòrŸ|5I†Š5Ä3ª.œD5=z9"nÅ”Ú'šüRr™u»˜âÑÕIoNO{÷œëΗ3ÎÒ‡ ʱ¾ TlÝ )6±«læÖN^'åŸ $£Õ =È<åÞºê2Š<É+ž>@5€%‹µù”XúêÖöªðRÀö$äæW%Ù&ãì;Rë$¤CÔ™Öͺ¤ÕM0¥Áþ´²‰çL–z¯í‹*Y%àã_ûWúá\‡¿@­!eæýOa•GwÜyTÈU}­ý¥ýQ«ˆ>$FÈŒÃ>4·é”ÝÏ HÀ\«Mq…õŠã¾2«! €£"u(Íã@Ëœ?Ð>æ@g`™U¢F…‰ŽV/|„×wšaŽ?h‰j„˜@À0YþL-ó’—e¾U/ù Y¿r>0™ÜÏ „ È·^Mî/44E¡&¬Úé_O.…ûjh$"hÝÎñ‚Ù|k‚4›=—1)¦â‹öfõÍ–¨âƒø¹+n\j¿+ÎŒ¡#˜@ë¡9¨Â®;þÏ9 £]™SiàU»Jùè]Ÿwü²’S£Árü”ömñIOyYè¨ÿ’å8JÒ¸åaçF§‘Eo|ÄÊ&¹{‚Ë­§üÀŒæ¼dÁ­RÎ;@ɼÿxˆºâ1™|¿8ÅN<ÚÜ]±MŠÇ£ /Á™ZîØ{ÒŠù•ìÃYÈÞz ànkJÄ÷º„6‹}ú”Æ<L±·@³,3ºœ² ã_™Úõ*f™q†ŠbÙÝÂÖ)Ê™•ÎÐN7Ä×zM\\3·ß E˜cÝ—,_^Š}›±œb¬…[Jd¼4Ì>Ìã‡b(‡ÿ•Y3Wb™åW±_@9̪2‰˜ïÊcÃA²Aƒ\0 ¥÷•$#GjÌ—c¤Íªk«6§Q²tø›;Ù®Ex5¼[îWN À™O B5ð:Aƒ¦3¼Ãí}þ!¶U(Œ]æ^?…Sb/aº[Ú&4~‰R¯ï2C?´x)Ú¯²vÕBJžµÕ «ã,aÄÙ"U}j|2V²aluˆl zß’<áz 0/#›di*Ǿöa8ÍÈéCNb?NÊ‘L™×G’‘çH”'~*Tñ]µ7³H²cÚ7Gš´g«¿ÐÅê\wqsOWÚš©%ið›åã+±"Ïâ_ß/¯'ãœË(Maƒ^¨H@œ—§RtƒìäÒÈG'OÛBçN wPcÆ¥ø×°uØ¢úXÚ%Y#7›ä.x€Ât¦gÚ}BÞË%ïÒî8ËÓ‘&—½_¯¼u|…ªnî Œù};"­þÒƒ<:‚ÄêË©["l°2ýb~7@^}òþôuíKƒ ¢|«?÷ƒË¢\Æq›Ž/i,ƒaÈ>9«8C¯¸’4›©<šA8+¶dЛ³ŠÃÉŠKÆœ¯$pÇÓ×@pÐv i ƒX݆aZ!环·¿è$% 1ï§@†k¶Ú<¨îÈÌ…>ÇWg»(¸_u_O®ª<šÛÒ,‹Uq„ÁŠÓ32•6ýûð$Z…-»ž\7Õ.õUFzŒ¨ÌŠÚ+´Àwîú]V!Œe|—_âs!ãùŠ@ºþ*,VgÉÂ0Ô~%nB¿ÍKæ‡æ„P}‹«n ¤¦N†ÄVùU¼z:kóÕ_Ze‚¹ŒQ„·OM‹œŒ:f0#÷vùþ§d ¤ÏY+(¾ÿ­+ŽóK6[l¡ÀÅìICB!ä” 14‚iB~ç'ûÙñù®-5šÙ³ã¥ó©A"X‡þ¥Z×aí×ôŠØï†L}ù”¯¬K'ÌƇ¾Hãf R¼ éŸÏ•¦áõÒÂI^°nT°ÀK„¿õhœÀº—™t N>5¥‹Õñª˜ßP¿x42ªàãÃ\ÖVI¾§fíb9¨Ôb¼þÙQ«@ñj¼¾ÖÕ¢æ­÷¨ðÿ7~¥vZ¹ÚI!yêYóBçÉ‚§Òô…®!ivÿ–ÚE#hÌ„ñÊ›n:åW¦¹/+ÞœÐ(„GU଺ZkAóduŒnb{ 6Ý›ˆŒ:Ü ã|ü»žI¯•ô˜|LWÄÊ{Å_âz©Ã bü”í²ÚI*Nxe×L”)M ì‹ K›dàW„•`=·íêÏÒ¿ãH–7[½õâ…ãÕXÒÊ!É3êÑÄid\=•”¢›qÐ[rÅ J|HsÚÅ«Þ$ás#a½­ùVpödtu‰@7Až#×e ³f8°~|¸®Œñê“/1°¾“AÎI¶íY¸?ÇÿÔ?`IºWÛïó‹F¤¢ê°Æe±¼¸õ)#Ls¡_-^@¨ßoÎçüX;§—_«µˆí–g¾B⦎*®ùwP™6Î}Ë€ãZ¾Âk“™*d9¿‘Ћó6s ’üU¦‘É]Fœjݯ—$âCwS¯ÁPIÃtJGÊPψe'0 ¯¤¶0oU\]wR+æL_M¨·å×G*àtVªNÙÀüp|£Þ¼À‚?Å“GÏʨí%ɼz~—ŸÖ0©UØêäCRµ4¨„®['ú(µÑ‚ùÖЇ¤ÔÁ—=­ŒXã$g>p"&ŠÙD?Ù‰/†®M^ââŸKšZ0t³V5Ý%MG “GÏïÒU“” :s)8ÎzãxÁ¤Ù4yRAg’‡Ä‘z ޾|õDUä‚÷»nÌ¿„Zdù•yk;Xý s³çU®8Ô±´DûËp:=_’\—FH Ä­ýj]–g¶þ#o ,-³‰~›[R1´Ä:¼Æý©WÃP‹-ˆnaÕÑ/!2sè2eŒN7õÂç ЫÃOhenKá·"¹…Šòv»¡;Žx±•ÔÌGhŽÌ#(ª’®—‹ñŸÐ gò˜8‰·‚VƒÚª®„RFâ_ÝÀÓKP,OwÄi—%2B§ŸÒ ìÃëd­F4ýûJ<á²àý£¸ìާ« ž¶&M¦&ksÖ³ÔŒ# ’•;Ÿº‹Ëã«GKzC™™†Õ í*8ZÖAHÏóûºÔLÓ œ5#QpD½„zëV@*µòz+Bÿ©Ò#ê%T«[Qf,ðú*B"¸£æ'þŽÊ+àú©0U„W°èëŽr-Ág±G­@Áw ÆÈÌ~Õ³°š÷F|ô©i:à‰iÇ ^)#XmÕÐ]‹Ãã%qP…Ô²_d6©Lseöáa™ݑ漚ƒ™S<¬Öe… ù2GZï0q+ëÑQío>ɂ»x¿þWO†ÚÄGÈ×&[Á¶ˆSaÀ}¯Q«5´%'ºÆÐ`¨é{òƒÌºŸ©¿©»_e&(ì¶(þÍZAšÄ¥7ÇGåÛ%9(¿€±€Â^üà­D ¤ãܳ.­?˜ëkÁ»ê¨cEÓÌm^†/ßzŠ ˆ»­Õú8J2Ñ.p§º¬%Ì1ó’ÝÚõ$eà™1ç”ý¹ÞzV¯)io>zidFÿ]ñáü¾–°¼HI}jü ÜçÃl…UöWÒ´³ÈÁ‚}Â]^ÍÊí±žÚü.‘D·›YèË ò©ëÒXݽ¦v®§µí’ b*Ìôú[¾dèh\mùü¯¼v.¾à¨b%ïm‘½#~¥üï¿ÿ^8¢üönÌ XƧÖà¶¥P`¡(çÚ«e¦8³jããx–fýæïcZ¤k|?vÃÕ,<Âܲ  ·Ãî8Ffmr̹•Â3~Z M‰ò:rP4Ž×Pâfû ‡©ÌuåCT óc!¶©eøO¿´ÓíˆÅ±-’²¡[%ãÈ[ý˜d [ñ9™e’Ç¢‡n±+o]hÈLt•Aâ‹þkóí»r? °Å!N"e%ŸßÒÍq“F²¡ð¸mß>ùèìÛÍ-îï Lœ³„@˜ÂY¦¶0Z¢ïUBÈ"º!0j“®%aÌzáI 1ó©;yÇrúè”dÔJ±Ã×ntN1–ì4ÿV>$i¯¢ &ñ@¼„SÓt`u¯ÚB`{.˜îSãÕ ™î{]²Ö£ã@Τm&ébíMÔã_ëK{øÀÀ/jm³+ðÏBìçqôŽ„ÎtÔèCÞT¤8hR¨­Y¿!1auæç¡“%ñTÒq´IA [(aüu&™Î<ÙˆO6â©äº»j’Ë15Ñ.«W¾zy´9$d»™Rø@šnÙÁI.õºµõb•Ù…Z—iY3Umï´±â¯þÜðýâ›yrqa8äÂä3Ós§ØÌË©@”)g0*¾.2€pañEBAÖ³QS'ÿþå?¨”ê_MC]"œ @ŽFŽº+j|È*Þ1>dB„û$Èôë ÄÅ2ÈüŽÿð—àŽL¯‰p¯€)2nñ®P@i,A:ˆd¸Ë;v¹äÔÌI2DE^¸Aðc:$d€$î낇ΪM%Š“@ÀÆ4 ˆÄÄÎhªMÜ:VOÝ\5À`¤3í/š™ß ùdRó¦öET#Ø^Ÿer^8¿ ~‹6“AMxÓÓž]¢Àõ]/QäQ>ˆ'a­Ýª¤ñœõBs¯W#Ÿ¸Éä]Òƒ+«¡}é//Í«v‹\ò˜¡&¸â`øºö•—II.z‰Ëb9¾Qah¡ qR²§ž±KG™†‹pØøQÆgPIp®$ze–ºdA¢×Ä[Cלúì·*JY,Á${±*+×oÍKê’—\_5¾ndõÕ—2Ìz’sã ~b9ýš瑸¶Ñ…¹Éf@æ;dIšV5áÕ§¥Þó» âsÒ*[]Æë7òGÈŒÐÕëªÍ𧞯‚{ÀÄ?’×lÑGt3³N!+a¼Ñ³}'$¸c,gÔ£„ÕŒ0Çy µU®˜xãˆDa‚`SÀð‹ÃÓá&ùüY Uçð‰å•nØ®ôJÀì%Ì¿šóã%9¿“ Ùh‘Ð…©P#åyCxAÚil^òcºÃüì]â[ÿ ¹ø¤Ÿ|"w;Œ{…’  â”ÿMûS&âÕW¤‚áüÀ2?hÙwQ­ýÍ­õÁ²[aµ8Õ.£¹ãɦN"¦Æ$rÅÒådy+¢.ÅÉf©Uø’Ì7ý –ãá†ÎGìqy°NGd:ôäzÎzåcxà~/þ̘S7à ßÌ¡© [x_ÆaŠ ½©Ì9ª™nàÑûýƒ¶³Vü`Í“/ITáU 2òÔ¢¬CŠ˜p®ÿËVR­·nMÉë;'úG)be–n0àý*ÖÌëo2(Ž.õ!)©[pî÷}×ÜÜ냅°Uz§CSœåº2Í{¾DÁ0ŸL˜¾9´80k[\ƒð8áч$áÓª-uwÏ"¼×›ZÒÁ‡…ÁqëD«Ç¤¹gdÍ|K2Þ È3<6ï_A¹Œì(Dcðí²F.òðFÞ³ŽfêUó>iÆYj…¯ðê’‹\‡­àž¼ÍËÛL>3òÍ7ùâ íŠÜ×EiýaôŽvl”Ýüº†bhX3&ø¾šD†Æ…"—’Äóm—kÒ`–.&ëìÜAÞþÕ$`°»jï`ȸ~Ú6å†dî¬=–_ûG¤ Nòå¸Ur‹µß%2B!‚NQÚÆsBrÔ­¼õ3Züªæ¡ú [ï‡þEòÉûŸ¢$[…ƒfI^.eáͬ?‚¼&Û Jðêñ\hif)‹FŸzˆäM7´TÞ8 Lè™tÙzIJRÚõÉ™€;%9 ¯*YißYB4÷•Ô¬Ø%ÿ§ç ôöO‚AE&†Ê(dw¾ •RóG„ "‰ •–i¹c㽚;ÿJýø©nà|7]EÖùý**ÊXlK¸nBé7nþcG]ÔL}3ʘÙë¶":c…ç ž䎯EP¿§Ii°SÏÙ³„J´5l¦Ú×  D#Šò%cHä™çOù1:òhÍi'Aeyñ—pÁ¤‹d›ÂÎçÛ°ôæ_iR‡Ùù$ý¶þÖïR*n@X-wšåõ'•#ŽK5 “[½!do}y õ<Üëã0Óƒ^®Ä0êRr©×;×e•U€ZÁœ×ª!„ #åVKÐäÂÑq-—áð}ïãnµç7¯åxô¹ªð&(NAAcª’>‡AaŽC÷ÅDƒàj  ×áÄ8Ô+Å—ÌÔ@Z!O bòmØuûæ;>Qºã«©µô9Z²'Àx*=té_Aš¬ž=õ&¥I'€Y¬ŽýY{rÛIžÕAµzÑûK'ìÔ‹80_¢tõß_tÆ®á½WZ|,>ø‹LÏ.œ¿ÛÍþ9·Ÿö:ñu‰HÎÕáÖ`To‚|s L± ´ö“‹ñÌ|)ÃóØjÿjÅñkI÷fùâ„GÂ[œ?Áµ'$Ì-50ô»aåÀXÙ/Ÿ™¨0îvýöq‘sÇ7Ÿ€9¹ ÎRfÛ&Ýñ]1þÈ”a˜Rd‚ó|ìä<óÊ€‘é.þõ´Ëy•JÔºt.¿ÜUa¢± c„‘Yü€©O¾d×SÃ=…¯¤»¹´k$ò›z"NuüÊYO¬> >¬~@e–&2+Á‹ÕãÇu?Œr4ãŽ_`o~ò~rK¡zršŒÕŽ\˜éÕ%6§¥À5K1×2,¾9*NáÊyþ¬Fl ò¢X;iD¾Uk0(' išeB¤UGŠ0TWu†Ù¾\m*ÄŽO¶™wn—‰¼>‹æÌ/ÎpL|ºHŸ4—PËuµX@pã{.4RfNú⸚×n†áÔ”Ùx!ZÈ\WnmÎ @ç—‰Átøk©®ÖI« °¹øU‹Výããð¡·ÒÉ'*Nÿs$©ºNb–@Q”‚)ªg TœŒ˜„àÍ´o/ë÷Ô;ý§ÊÅ¿öûGêƒGÿ3ÂŽ¢Áo·;ÌÔâuU×QCñGPQ5XÏ^7^¢¾­¬¼ð”ÚB=àÞÞKMç @èo!Ы¨b›%ˆ÷SÐïËOPi;{ZüÎlCeŠ7V}¼@Z• FuËÙC¦Êæ@™ÄâÀ*6m?9¥2Á¬^l zRöI )yßIÿuõŒ»Ò ûo’&ÖÌsÒVSˆèkêõ•ê`_Û"Ðé<Ñ2 ’#agüŽ"?oÇ(@¸øŸ‘2dš)îÊî¼Ùñ™ÑêÉ@2bx´¸±¦ þn=ü~Ú|s.…•±ítÉïÆßÐyg^ßÅ;.å!×R ¤‘ƒá&êÉèU´mKFt¿×Ĭ„Û+ð:Nÿr›ãh2 S©°{ÕPÕ O¯üçCVçþ¥­±×ßHÿ«Åýá4Þ‰³N¢6„.HF2JºAA†Ð°‹BpwÝÅç›íŠ×ŽâŽO`Ñ´q]ªJŸÃßyíü$&F!i&!IØ ö^Zã¾k‚©†D?Á7s¯tò~É% e®mÛÔ2öpÄý°@Uû¼>‹ÂК?RÕC™ÝqÔ\bîSúóÊô,GM­–Ïÿê¼}Ruõö{Ã(S_—=fèj!üƒŸ RUÌë³ Æ­ØßHŸhzk¼ˆ:žç/ [ oN:Ö¾r ƒ´G n/25ØùþS"AÏ 1§¥›í7¤#NªÚVÿ¾2Œ‚ù¿ ü8Q|;h`0|œÛæ¼ ‹ BËØT±ÌÎv±Dé̬^áAP@³¹vª³W½œaÀô•pï˶“IOóÄ÷Òܪ=l™>Ðqú!U‰ÄøU½Am?Ô&*û†7vkÅ2¥àÞ¸okfxß©«;%bYOÙx ·²èÐÊ¿,ª):öÃůÇä­¶„E-_x ‘n•®¸ô—”¶"^½q“x9Bâr5–9Á¯4¡‹`nsÌÞ1Oà´  gå[JÔüõˆ~ÁWV™d¦¤{ÛæÌÆ¤Ÿ×%ÕðIz±4P …ë±C›ÓêN†Öß„cKê\ø{#Eâïuö›³29sσjK–<Å๥•µÇK›³2SàÔ&eƒ<>¤dß:.Ø)&vçˆ,[j‡²õúèÍ!‰ªˆí¾¤=¯ž¾$ ’ýGøÁ¤Íé`'; Þ?ä¶ÛR"òýÓ ñêÍq‡)`Ñ“ÙÅ (¿Åø\z{ÇÑe{øjެ V]ÛëMxÏoŒ_ÖÑ%ûÉ*Ÿtb}bqÇ!K™Ûei—¢ÖÝñÅŠ´úÉW Y¦mûçVb¶1Â^b?pû5æDç‘l;¼€ èmñ€1K ÇúÓ•NØq, yÌ/ËÂLÊbXqz ’U¢ÝëàJ±¹áqiCЬŒ0É4ÎSé µ®«ÇªŒ>J2Ã7 @(ןB†k_ƒäï]YEu{v¶ÏIcâ—ƒ4\¢Èýð >tòËï2+tǾËËý\7¡!Ï=û)>rkûcž •od†«^¢ùÓͧøŽ‡‡»1(+æGœÀHh—Õ…|„ZŸËL¯ã`¢ ñO˜„xXN扉kH¾_JàŸ^“Ù¦¯&Öî¾²mª°ÏUÌçâcÞ™( iÄKzü;†æXKœ ãÊü/‚¥e¨¢`¯ †;vÉÃÞ(‹RŒ_y罜'°Ä/©À“¶;Ô˜ÒvO ÖWyUÊûU`r'ŸUA(ÖÚ/,ÉK y²±ñ@sUÍ4Í.S™l_gl“Ô­ÒÆj‹ÜYÖ7·sÈ‹í­<1ÓkIœ¶ªªˆ” ΖÚ/X!™ž9ê/‰§8•¡e÷ÕO¢7½`­†XT ,¼À4Ÿß‹xä¥÷tÇßEÓ&.œ_òÜØ5«ªcèï|*}|?¼ Îòê— "C¥ó21Œ³2Y_Š<¾ŒC„0T„‹‡|5 ±sÇ?2edê/S;¦½>ÿKƒ3õ8j+ 5óþ/³)ýÂ{ƒ_Þ¿¦¸æ…uä7TæÏ«¿÷æÙö1|΄Æëþ ©Æ¬7ŒÁŸu%Ù:oZaî¤ÕÛË)QÀäåÉ ¼»Äôáçtû%yiýJÔùÝfr(þȸn¹’¿Ë9ùK2Ú±Õ-A±_‚W£ÐŽõ:,jÂ{ˆ$´íõ&üÎ €Äá–¾Š@+¯—p¾¤IãO–òz½Kì¡=(û—ò°ULш†N¥ö…¥™2¿ÁŽßŸñ»ìï —ù ÷êÏ\ЉîîŠ'­­ì‘Œì¸’Ƈ™­WžbƉÆ26tǤÚëO t¹«ÖBò»™jŒý#¨¡†#ãåÉÄJÇ™<™:tßP¢&c—ÛÌ%%L[¡•üì9 F×Á¢Xa„×ÅR¿¦wÅljþÙ.Vc^èÃFZÊ0Êvzᇽö=• úòa¬yÙæ8e5³§®+ =™"ªzõ\ýóù°Õy³øùdÞÑovÏ©ÜÿÓŽ.•CÝ·^‚¾/™`¡jÐc«ß9¾]ªˆø°cWÿµ)†úcÖåIº h8a|ÖÕ ]AƱJã,iÞê ¤C±Úìe„TU´Žbç j'=ñt!¨ÀŒB‡Ãùþr þC”°¡ckZû®k`]‰íÊÊ©ÐÓ’[Š€N¯áiFòE§g@ÿˆïFEVQØà@O¬3+7]äRrvʼÔ!ËË©²cÞ2\±Ñ|2‡|ÊM øc~ÛnÃï¦lÜEy„rÿ&zôòÆrSÊ»JÃæoŠˆñ\&ÄV†…ÁX¾2¸ eú íý aŸ•œ}—00@¦¹ŒÏï‚7xú¢ öd²âv xJžBËÏó9†7v­þûËèÝyüÝ×]ŸBäqŽ‹xÿ‡|ìÁ®|ÀœÊ©¼õš´•îs«qöPê -_J2÷—¬X†1wù —[O”õãÌB‡Uæ1³`‡3>eIe DÇ1e´.ùÕ«CA€ &/]’·•àý@ yÍÞ7e£¡G¶ñRúg箤áK’'†š€As›eÅQ@´« Øæ\T˜r¾ÛTGü»5~¦ƒÃ׿ysÙ“h‰|Rß”NdU‰ï§¾[ÆiãVLøèö=½ôód.«:Üú±3LÛOI`ôÜG~{²ÇAøŸ%݇ñÍ2†"î$°Éa¤OÙA¥<¿‹ÌQø Âgj­¾áâïÍ™¨t®dX˜·Ršøá»%ú“Ûá¹k-ñ5e–üÝ¢²NBÕÃÂú…cê¨(ô‘›27ÜÇ®šÑ!‡™…–™¸¤ÿÔâq³¬Œ`=u­û=3Œ¯Ógî6O:çã/•:O žL¾àgoŠóÃxeA¥±ç]3'à ±iÎz‹—=ÈôÂWìxÛ™$íŠ+ðóc$dÜ'm7R›>Ãø¬0˜àc®.æŸBtãW‚Òx+ûøø|Ëq“òH`ä-LZxO‹ÓçÒ§JzGS™×ÇõóU£øJ}ˆx^íöôØäH"Ûx‰P—jFá“/Œs;Ž+5·™¥äl>GiBR°iZà¿á*#ÝW9/î¦ãŠ<[O }¥á ‡©*7Quø_ÍÔÒYìœN3÷/æYŒ[&ÀÏLdY0™(ªˆ CAá§ º·ÆžU‰\^•±Ä(Aù§\]WGú ¹£¯Æ¬@i”óS¹sCCËý7Ô+ññ%󉧔H!‘ Vñ`.ýªð5`$(Û‚ϯðXµýn£[&Ù¿•‰ýZÈŽ/”‘KßkwkŒ„ižÀë¾Ó˜d|yOÒæÔv#ŽÉ,؃å©ý™¸»ÈÂóþ}¥H)8¥è™ÛY*½É‹fØ#bå²tËÍ;±yÚA²îp$óŽ“1óÑPÚ<=£'!ì-ìØLhƒ6#0@}¹£”Åã½KÁ”šõ(´Üµ±L´¿vãnvþ”);GÌ6”þu]LüYà¿ÌMMÿÂgd„oû6{ÊYsØ‹·7”€øi-h˜Â6jÚU1%©«ìðbT xÍ™XÔ Ò‘ƧÉ-ÌßÇûŸ Úy­ù©>ÿ> ƒþôþ^¤$ÞbB·"r¾bJ.·Q;e.‹+À3Ú%ßLådÕS—öåW¦’¸™Äaýžâüò1܌ͤÁL‹ìc§EOÁé`ØÍ¬õ®{³Ñ›Ø_ b<ö*;ô'ƒ=ZÕfI‡‡Ò§3Ö}ÍÚ4µ÷¯Jƒ‹ ûd±Ïýh„°8x¯êù|´<žVÈ3ä jd:À‚Ö4íKÁûý[{n»`cÜš G†aúÄë¾DÌ›q¨Ñåq¸&¿y*ªƒ'›ö÷—{ô¼µ}•§f@Pk&›óÞ2î2K÷YñÔv ‹ë)È#s£­ ˜SA7wb—ÈÎ?b:ž'–‰sLˆ¡5ÓTíùó/ø T¶÷zº+¨hU”ØPãK2·£Øm@ç¹N6çÎÖÒà Úã_ÛÍR”Z?EVk›Ï¹Ä¬:b¿ž”ñJV!D|S=c­µ zñÊUÝO)Dåb@Í4`߀åø@øœ9´ÉÀO>çTG®ìÖo0âþň//I‹îØœ,}·0€ÁÔFÁ`Äã4™Ý²•üÞþOã›Ö43"ˆ;fsØêrÁk´M¼ã0S»X»7쮤¥óž:.5Z[:„†W¢éÉKBÊRÄÞÚ òj…ŽÌ¥—™¾¼™‰™j ØÆš›­Ð>†rbççœRƒŸ¾ž¶RÕÛf¬³F•·žÌ­‚ûù„§ò1ƒ•;v̤<Ò Ë,òI)€tqI¶H¥7U›Ÿ+ÖÕïžÒüf1‚:p'ázÿâ9’_q¢dÂ9© ÿöαDZžÉDФ9´lˆ5‹›©è,ŸÕ£ ·!wO¾%õãìD'‘ú®íW ¨µ‹CúÏ_+ÿ5»–‡¾™¥í —ª9¯ô°ï¹Ýøbɬ 1À"¬8dϹ!…h%eš•|œï²;úKï¼or·…W¥;îó÷]8³‘"~™'ºÓÛ’‘tÛƒße£mÔµ›B9ÂÌi!«.°%Ÿ2Æx ’;Iznm‹®îùÔüYD‰aüÁc¯ÎšÅbIËŒ¡DƱs!6Fz4#®`gÏÚøÒÀ_‚¤1·0¹ÉRZ6ÁQ‚1ƒDÔ\DRÊÀ”Ec¬èQd0¹Cßã–Ä).Ɇ†Û KýFSÿØRH=í};d#"~ÆVÇÿ”‚-í§Mÿ)œƒ]`iÄ— hÐÑáÕ0ÆÙ¯îšfŸbig:HìðÔF ÎÀÿÖ€‰PS•f„JrÞÄ"±p*p\c€€=ʹ÷*@Gõ¥š†°Ü } ± ô-2ˆÕOåóïH¬ŸŠ=ûÔ(“Xk9Í8,IaÌöiF™“™SÓa&væÄˆvhB|xJšòcñí 5 ²ßf½WÝÀ‚šÆ¬UÇïFÙ´O‘GÝaáý§`H€›€ôúª§"‘u<)¬_本’ad‘ûî 5qþÃŽ¯´æúžI±Ê‰ÎÀxfÙTs•¤E±m'½„¬ö‰TV†µ{"mO*{© ØéÒ2§´ ˜q8Qð3³üÍÚõå(:6ùK~i ˜©3°Û¢M*NÿýéïÇ _AÙ–rêÀS·šŒá4r »}Q@R9ãÏØ(ð6~ŒÞ¢Nó×h+dzqZ0¶Â‡ÑÏ‘“Ó†Ã:åÜ®,ë˯}» ý³Mü¯$üïYÀŽ¥l%ì-udVʦ°B=!›½‹}uT¯ãÔ`a§€gl_é°n™„{?óàLnäÎRu 3Æg‹­bÝà›°çoã®ÁöÕÁOÛ ~‹úW“Ê¢‹`ÆSI¿½j{Éz|þ<`´¢x÷edÖt”³p3åI1ñl•ægÞ‹tfüŸ_I¢ngî+?¨'sÌ·-Û®ê‰I"åÙFÔŽébj<ŒšNçÇÅçꃻDéf1ôÍQ¤je*»3µ‹CM4Ÿ׺|ÖÁó­Üc˜’/Ø„÷c'>±jeEÊØ\Ìî>‰¨ÌÖ=W¿ÏȹÇi ŽÄ•zt˜ÄΙ¨L¦Ã z.ß§àoNgÀE­Ž(:Ì0˜S#eüQOzìŒÛ0£ƒV³¶Ù¨g£ô„÷wsx•Eî”nÀ².kfž±Ä×s&)O©¬o¬NÑ0*j·,ë@Y˜6xJ@¶•%â»´´ –Åʨ=£DÛÁê8uœ½ÁCþu¦›•E~>™ kîd{”€ØšHD§Í„©B)_²'ŽàJ4Cç«'ÂãÔJ±˜0yvR±p#M’ C¡$&?ª6³—Ãfö§'¾¢ùn×@m‚­%L2À‰ÀUäroÌW¾ôlôJã^‰")WöíŸ|5ÍûïÅkªÎGL\ °åC޶îS­õ|!b%‘íïOöÌZ%4J†<-GÄõ Öô¹½8e¯ùÈÝٵЮòÄSo€ÌW/Py¡‚À¼q I©¢ÞàhfØ®òd,…ê°R#/’^4 BŸp4|³Ï}C=7tiè )ùjW”ð,½„ÉP¹¶RDsoQj<5Ó×ìÀ†÷Îm(‘ì…¹†_T!\#è•¿=Â×èRĬGK¿+J.k@;ƒ@׿ã´Âl7·Nm‰YͯL§Êä–›ã”-+Êy÷êu4Ó€+,mîÏÿö_é¼õ¤,xa• V›{|ïèí‘ȼ=v=’7 ¿žçª"¶Ó•žŒ¢Ä èqGfˆåsPF’YIV¸r8Z±ùüVO%‰íÆl¨´ã/X1¯Èë¹Ò[„ôÍ·˜…Û”N@¾š%>y¾ß%:¯]f#¦ #ôñ³iëx~§–­zy ªu­˜MO‹/å=ŽH1k{®h¨Á®G5T×¾PžK¸jïk è™ÅÁ({Àïy›R.˜+@}Àªùó+,ŠJ$o+:ß$ªTãô`@â':žüWDbÞ b_ȫ៥q‘+ ðV6\I·f[/Q:ùšV4#òí?È'ïçm½)”¨!y…Ù·‹gÖ!18l NÏ4<ÐÇưFн8 yÞÈ»‡ÅÚSžê ½(æöÕ¡·Ûn­|šìýC!¥æÚWø2E¿q-ŽKѪ¶••YÏ0Â`&ja¦h•¹ÇùÚÅŒÛ6T*wµöp*¦#mü&›: JÞß TqT#v3òx€|ª È<†á‰V`䙿äž/‘5‹yêK»úeŠã¶Ä/Ug€›™B|YÄÍÍ„í¹¦ô1FEs\òÐÁå÷µß7¶ ¹5—“¥b¿®#<ÉÝñÜabмŽIÈ?æÒ™frº|¾mSe‰Ç?»b|¸*‚…;?QÍŧÀ q8?ÙC‚"{¾Zk@ëQãSÅ̰gÕvqÀƒ±¥õ¹êùÇý>SÆ{UÀ´",òì|“R–ÚìK‚”„«P%gøß2í-7,³Ÿ¿“qX¨/QLBE+*Ì6ôeèã/¬G4ƒtÚ,Ãññ.Óš^NX:æGV[¯Nvî?Ü®2Hžéõ™I$^ÁõV¶œÈÊ fœgfÈtߥ÷d<ȯ †LE† œºrc{4)ïÿzþ‘ä®ÔþKéB2æb%Å»Çn¦k ‰©70P0„—$93>¬Œ‰B‘ñÙ» ¤â&zí§lLêÖýåk9æ ߤj§p¼W±Íh¼ú¼°SXðMD(h"™ŒÅ 5 ¹»ø Z†v*Ä6͇hQž²D‹7¶U•ri’™Ux!å\HMÈ ¢}<¾6õtæó[q€žO« ô™Ä1Ƹl]²f^“™ôûˆüÔQ.rÉD|Κ ñAiL`¬âD59Ùþ€ó\“3¨ÏûüS.%þ·+|äzÙF%Ä‘ ,b—+K6»Ù\‘œTHÙjñúcç8î,Ç&i-EïFð¨KÞçýÛØžDô)‰Ãrä]ä&òþ5FÅäa%€§Ûíkï½u\<&êxx&gìëhd}¥u¾bôõ—JÑaýÁöå¶ÖWz]šW’Öêl+ÇŒëgµ2äBËñÇm3q0dŽïï d»[®IX8Ÿr1Ôµ“.0 $ö™_ä­Þ_W ö%ŽÙ¼>`ô!(£ü ¾¿üÄK€‡dˆp}|;0÷û„xÅÇÃöFß»7³¿Z_—q.„ÖöÒ^Æ…^4ÂuÇ·‹tÞ¤JѨZBHî€FS¶¨8ÀÂOrà0cFr\¼õUÀ˜DžÂ'í8^©2FûAãÉâ©x¸Y&$³×e2é>J¸¬ë]…Yà¨ñ½·Ì`(æ >Gë†þUì³z —OüÂŽÄnoÑAœz58ÄîM-Æ%hï—ÿË»>éÆX¶Ô5ÿà-Ò"±DFiŽš¤Žÿ ~üÑÈ¿?Í$`vÖŸÛ‡7J…ã ¸ü#ã• •b×’Y#;ȶ‡%˜ +á3(ñoÙO=—þ_^ïEe€U~¢×rè3Slâÿ%5oE£ö¥·‰xŠ×GDùÐÈø«a_b‹(å3\Cš°0]EjÓô¢œ»ˆ ¼„9[è(š1kæ7Ÿ?ù4c¬›„צhŸÌÐâäyc†¾š¢=‚ÓïÌ­t"îî¶€Äùâ­­Æ'ñ_- Ψ&TAþÍ@“ÒazrqÂL{ö'E">°¬p¹eq¦èï4Øb&FËEј 4Äê³×Ás{p‹(3™”×A®ÉòæóÇptC·B Š,‹çÏÆ“ä‹ÿƾÌB~•%#¯ñ=pa¾l_Ñ‘ê¸Sîƒú€;9°¤þùcýzÒÞ3[µª«Fùæ“ÝŒhº2`ã%nà—d ,“€r&¸{?hÅ÷îrHö\¬—{Þç?då¬ÃhçæûUrOqB'\u±ê¹rÀqhfúË"%zä¿N††Ó3IźQw“…m„‚X]=o˜üÒ§Øæûß$ßd}2FÁñ~e¦å¥ø¶q ŽuS*DÌŸ;4ÞÐ ÷Ë#C(ää“ívïQ¤ŠaoVª‹Î*0´ðp«$³ÆiqZišNR,Î;p)&¹”ýd+0Üzè7Owbz?ÂŠŽæïv©Í¡§ LîSh{|w …ˆ  –’IÈ(ï}cŸ¥$ÖCêô$Àó”deÁødˆØ¾9Ô.“‘ß -ÐLqýS7~WIPjz3¿T"ÊÄÁc;{ÊÂâ}.Þ#¶”?Ç—“õôi“/$„ìz!þiS£™ÖÍߪ-‚!ËAö"ªÐ.t|a!U,‹Åjp-e´JÖ~’O‰7vŠ2þÅefÕ® 85…KÂíÄ„¶YUàÀG…„í¤A¯l©ÉùáSwa{ÌòÖ£öÚj¹%ê§¿Š:loÌ5¸„̾‚ — L®-¨&p8À¡¨Ïv™´›ãùˆ×9†Þ ôb-ðïWàOî6ŸlþÒ{¶¡\ýðrˆè?^–ÀÐÜîÊCr@î2l·Å®’1,\ˆ Ð4ë!³²Àòb*âȦ‚‘¯ôqýAŸtÉæV*a¼‰Ô ਉé§VJÉ%pØT¯Ÿ"„wµ«‰ÃñïÖÞ5IÜžåÆ)öÑ»ýIÒû«dB1 ãÌ[Ô<˜%Ù1RÜhî<7ùW83[Tamkž¢$fgô.C,€zR%Hó»6Àlï=FÄö«$N1àÝÀ;3Ýp"™ØÆ8ˆô1'ûe~B¸ðξªï2G ´|kñÙCŠ8¶(P˜Ügò—J»Êÿ9o&ÕÃôC%à¹þôÞôƒ¢wRž „­¼÷-kP+¬ŠsÓ\B0l#¹Js*×X$TpÉêN“…þ2Äø,¿ÆÃŒýdÖP‰aœDä°æ°›®ÅVú`Õ„‡ã¤~PÄÞ`4˜ØôDÙ"à¯~MzÅ7ϧçG¥‰ÂX‹ \ -_ŠáI…X4®ž*ø “ébÆï_¶bž_¶¢­Bˆ[í­¸UÇ×l óU¦‡T ) @Œ35¤¹*$}M¼0ÎxÌñ«Øê´ 2‚¹ ZÖ½~’…q–”Z'zÔÎí×…¹ƒkør"¹†Ëd~×)µ°^ç6–*z’]9+7Š–Nh_švr&ÑñŸƒ §;í³Ì…D¼R¿Î|´¢ÒsT#'Ì€ä'‡Ì0#Ñãóù.åGÚoç4¸uA°mS)ÒÎGr‘Ǩ–¿x¿ ¡ºš™vÊ&itr©jfP $t82Öƒì»N_ùRnâäÅD ÑÄ~мŒF€;v’üA$©p¬Q{6”È<ù˜¥Í¯´ð,^ÄyšÂTaÊ´UNIÚár’É—š‚Ëo¾;ÕG³­'Ég¨Å„Err²¥-0×+˜Ùº¡Zx¿ÌIå •ÚH¿õflj‘;ŽêË<êcÅ7v=³óƒø˜[Ÿí=(%ð1&gèDTÜ<ï‚n¤åPÉŒŽÕ$¬3}j± "7©›do«Òr3rÄA­ì=Ç>S/5A*¦ðl¾úWaQ¬ö'Í›!!ßPB§€ÉVÓ+û5 !XOz]ILµDÍQ³9j˜dàÄP3°BQƒ Qãý«4$È¿¬v±¨’¶J^¼4ÎÕ=Ÿ¯Å´û©‡¨FË@7 TfWšMá†{+jc+¢›´`ŸŠ†–ß¶’Tæ„×´h¿?P`„îójAbª•†3!Üü™~ò‘.>øò¬ü>×ûÆùýÉÊ G†dcý×Þ!ŒK·+ä5[q ³Ô×Ãl5óŸ'9,7î‡sÌÕÑ^·ÒVQs7ÑQÛNœüd°ÉÝtiÃU–#‡!µƒø§V˜f¦$qHŽ àìiVBλ‚Ý}ÁE-òÒ+®ÎLú‰¼DópWa^ãùîYO´t¥òXY´„^¯0Á«q!Ç¢IÍà­$ Ũ‘¸áA6e‘Ô¿êµ!ž|A·ëæ©0Tu±ÅÁOTZžÉ¼”‰à+[ãß™ e:ìæo¸5®»=<ÅxD{Jı¸¥ ÙZÞrœÜº©âÐPËÁ¹žÄݦ•«³­Ûhºfú•º2‘´{.û÷ÔçAì#&yù‡xÖ†<O”ÏʹB8âdM PÂ5ÿp=vjRI(Â×Ê©•”oû*sŠöÊl³ ù4@f&ÊÇšJ0‰l騂œäߥøú$äËUC"g(:t…/ŸŠ3{8$„ˆ@ïòZFYÐN€B—[7¨óƒk°™Ö[Q¸'XÞ @̵·Râ‘D~*€¹·ú”šX(´p¼Âé»^eK æÀöaÒçŸÒ^=Ú•dª·:#éf\« Œ¿¤¯y̦¼Þ +A*ÎÞ?k¾Z|‰œöÁÈHVS ½~5Ó0’’ÜùÆç*ÃáQ…¿OüÒÚ KñsŠßUY€H›‘× ·Br쬮 á§=wÕ8!;+Š9xbZ¥…g…ªøDÉD&Ùv„màÒ5—™yŒJ­ügþiÊüU˜ ÃÆ?£`Þ·Û6t K©5È„4ðr\Â¥9^ÅI½–_yKjõh…˜q%toþ+X“0ßÐÑ&î«×YV‹z”{¡³×ÉæžT«%¦+¿ª2 já‰Ãû *â‚nò—.‚àöÎ/HpìžõþÏTÒ §Û 罇 ¹p=¬,%$[­ü7÷“°=F½ÃWh­_]ßq”aÇæ_µ#Hæ~«žTŒ¯&°ÿ´CßÁ³­]VTÓ„ê³rØNiæRŽ´[âý°Ñ‹ÕÄÑþ‡ hÏ_̦TÿU6­¢ÅÐÎsµÅä]Eà†VJmð×®#Œ˜zô@ã·od¹ƒ±g0Z¦nçyK›mc%€ 1dà ô~¥üï¦Vü«Wæûè^ùg ðH_ðlˆµê[ù¯ü¦‡$rÍäVKŇôX[†‚­•ÿ1›ù劉©“b¾Äjœo˜²ø9« { ŒÀ.¸5’æÏ^ö-ÿ)^¬¼ÃßeõÑ¥<8G™@1äÉ›:…8ZÉT'!Žp`¦óÖX”öÔKlèº@Àó{!æË"©«¦@ì°QÛk+Aó|‹0Ö{e”´Žß_ö† ¨…¿r‡7U|ô¼9Øé—éù˜ºÓÀ®æÀÒꬽŠH- ÀÌþ  U²f/רc+ô&+œ¾D&»ì_©2Ä›C2Kol]TFà|7¼¼I¢–ÚÎŒpEÔÜHñÌ 9æ‡Ó£ŽzjÒâCRÒ;‡hŸÍP4Ô¶- jo¤Ù-Õn'D"Gu©»VÚ©¶O‘óISw¿ÿ¥OoŽî‹q¼P4„aÃSóúÕ¹M±°ÄÛö`âJVê§Èx¾‡Ã¼ï<ñw)|7~åV;E–J÷ƒÉ£äÖo0)Ô!9J±Íã…ÝúÒ¨9€æVèÿ'}–y—±öWíŽm¢v…Ñ[(Ö± »Ö°uUmB•H×ýÁ¿›mË®?WÉ´ªL°åÄÁ…bãàzi*åü*!læ–Ú@d\>¥Tbÿ©3˜D vùÇ“àSLö©w¼ŒNe-A³·Ì;ñù›TÓÁï+ô‚ze‚Í‹ÇØºŠò&² SLK–·ÖW]Ç®X˜SÎ0¨’ào8R~ZôÐVÀ¡&â©‚X"þèû®&J!ôò–H¥J´Pã’Ót¤ð)Uv³˜áïë̸×è1nK:œ¹&XS§‘%ž;ø1¯¦x}Ý!âB¯çWšGüÜڨɚš™dù£}Éh¿?%bøîxÕU‹•8>ÓÅa+(«HÓ•m{9;p0—Y]ŠÊ»Ä\"­ŒòÉë—J£ç©6+ùöƒ'æÕ‡M(ߣöÆE»TÛbÈ ­‡-H^÷Å|l›†D«.ñûıˆÇ³Uy/‡GÇï|_x&ûØ6›Ö” >»@e OÍáó8W}²v€÷¶å4ÍÍ*6êªkY€DþšÍŽî¬2m°Ô¿"¸'V¬ò2:¡¶3ä˜Kê&âÿìä;*º¯öæx"T'B¢µŸšö›WÚV]šWh<8Ú;ôãᬷcJ¯`¨«­Àr'¢ÈÓŠ)LûŘ×Q·yžÍü#*ƒ;^KÞeaš‡‹Ñð>ðœv¿‡á<¶ó僀ìãëw#øD¶–ÆïF¦¡tìB"!`ìþóÙ‰Æßá“/öݺ¶ý@<ˆC'!ˆ<仂áÌ ˜Ü°Ýš›–Þ'ò8z‰þiØP6¸¾]Öý{Í»*ÎîDã,I2S| ó~ÎRÑŒj-œ˜Ê™©À~Æ ã\ùuÓŽ)[ߺå˜Oþ¦ðMs|v8:Í`m®l¯-û, 0òSctR¶ÕþB–ÁÅ%ž£e‡/¤>ë@PÉ0/9¶È Í!LÓsÆ‚M+‡ ZÌËÞ—ML¼߹OÕÑ[GÝey¿to:gF}žŒ{°[Ìê¸×a‡{Ÿò¡™ˆè„8üëy.NÝnJæ¿ÄÝoY± bþB•5HbFÒ>̪‰.Å5 ¾ž£üбĸ3®¦8•äóÒáèÈcJLh.;ÐA.™?,¶ðDÍCJg»ÑúÄÚáát:Òx‹É'€ÙkrL33óçµ.> Pç»ç$MŠó`ćc=u<õœd¥cgnCXNìPç±Aú—ú< *¢ÇõøSA|þâìœL~ò31J}·7þ€úc›mþn~Ú—¤>¹F7•ÐK#)€§Å 1ÛÇÇꊼá{kž¼ó–U= rÏ_=fÀ–ŒÛäå”yOœÚ˜02èô¿ä'BU$'>‘K} ±ÔRÛNœyvâ„–LQ\µ5ò°ìq5&Ëd9ªþ¸\fÀ** ofvàtpƒÞDÏÆO†ô奰ÊWÑÝÎQl>`ÂAPE¬;74öJž8ñÄÁ 7jùÆMÜn§ˆa4t*äÑQ'Ω•Ûƒv‹ä\â?çÒ=ÊŠÇRq©èªKýæ 'Ρ,ð­òÏŒ¨x$9·Í™O<æµ'VBr]/÷Мü¥69šEå¥ÿ•wóÿ7,y²J?¦OÅ\·>åx{vyüeøiߤúJ©o•š„_Ò"“@:[ÉÓo)Šé¯^@­ðL‹,æÿ*2*Sd»s„`x‚(¸•n3.E/ðcA'‘s?ìgTe  =Š•®9™ãÅ $çÜTÏ\ö«š+Ò‡¸®í“™ ÙQOŠg`³5l˜hE,SMM—³§£Í]Zdá!\Œ6¸û¤Xù{n$whϤ“[Ö±]Úg‰x¦µµßªÉ}ÀÈ¢ÙÀPfÄ´`npå6>(ª’£Wñ"ü2 JâYàcbTóé Ê":+…¸g'“`Õo–LSàÌg+Ø¡Iºá²—…éØô”ìÔR¤Ûó)•¨&ÔgPÜ,ÿSx¿ìå~vb§Ú¤G‰•2{S6z‰pLZ• %$„7~7D¨ËÝ#6%e±ø8…4~'_BùÖ%p6R7˜¿YšŽ(<ÜMãÉþ\Š›úGf!}”â1êý„ùmA"63kÄ{(3wU¤ ¿»æ ™·•k Ñ”;ñYµóaE·™?Õ$Ÿ¡¢qRÂÔèoÉ¥Õý?'ð²ƒ4é…0që¾þ‚Åz/áMÒâà ƒUçQS1ò-nEr„ÿ ÄC·0EWýÁúhÿS>SÓþŒLæiÌé²? œ`J5_F®£ÄPOl›s[ÆJv¼Ù_W¿>× ô+0L½ׯÜ«Z)ÿvª»ÅÏ<˜@_ "oFõ$ë‰o=¦{û³à{µ¿àpõ¥¯Y1ݾ<ú¬?CyÈã@¸”j˜œ`T4GÖÿ—¦U¡ë2›ã òëÏ(èý”вäܨÌB¯I "û&Bv¡©!U¥¥<’·Yž¢À&µExBÂQ“§"-ŒÛ­'‰ß9*‚“W­¬²Wvl1°­p™â$Á2A€ivÚØÒ«eîÙ$ˆÜz3´%*^W>‘:atÀÔ }Z¸õÊüÈoÑ »ÐÙ?:­;ö¥‚ ìó¦,l…Tè›Íëî5a~’ÏMö Ì܉#•ë[ŠÆ˜>l¤°X™þF)Ðéÿ“‹ùû‹”×qèQ Ò`ØúF¢$æ^µÂ3+ǧÜÏ·nmä’l=Å⸜Çé Nq>K#Ÿr«3„²M¹øÍbƶØÔ®$'Ρ@ÃþëI@¸*P vuúµ­”þ(t$âκ¤…ôý{Ú00Êà…ùP˜°à³‹ÃÔÒSh¤‹0Â]Z÷¸jà>ÓçIêob†êõ®lBŠ |ö6>Ës'ÞKý0Úº,Ò÷£˜Ë Ø™P÷zXØqÚÍ|Ÿ7Ú$Sùª«¹…êqÓ—‹OÿþÐø#déBB¢ñð‚ŽnôJ¿lýy¾/%:³"–ÐûÀÛ®,Ÿ}уT"lû±å59ý«x¤ö‚‰µJ$´Ÿ² ôyðúF‘€nb.4Æ÷ëO|‘än{”E’ qfr,PÞ¥2 ¾ø¾Ñ·ôcfÔC|>þ_ƒfìWîµÏ>gÍt;_ÓKÂñ’)•J‹¡$2‰ ²DÚï/¹nÁñÆeà%Ôˆ“¡5sÆ¡¤BlÌÚ…ž\ÃH»÷Xª7O&^Pð³ ýL€=¸ù\)øÔz°!•ino¦£ Þ ~¬|®|ªŒ‹+A–8ë|àh› –/é Ž¾¯œ’‡û{Ö˜WèÃ?Ïò(~—í‚)ÛY/ŽIX¯?~×G'H£ø£°³ïºQ¸L6æšÄ-ù4+ç%}v¨¶tÐÙÂA®ÒèwI,µ˜—IO‚éCý—1æWF’8õxóG˜)ž^‘>î)MNÍÂ8?ûQ‚ð­”QÈãÑoOS qªø(6P>“(5éÈlx}_aN­”Q¨`0á{í¸‡â(ÓóÁ æc¥.½9@EÁ*ôä´>üuT²¨Ò˜8ŸI&˜ÿ§\oD$ù¶ 鯷ñû±ÊÒ2’Ay³ýf±â™I£ ø(ßÈk–í@Q>2!Œ}35þ![h$·‚ã;Ó+ñÙÌÿÊ՞Ϝz|xF\¥Ì={µo®ó€Í8 ÈìàýÒH3'ý9—«{ݨê»NRø;%'ò›—QíÍAzmÓ¨¶³(þñ¤LÐôÁ“:úåÊ41\f3þ>X¦À¢brÞFõ ßÌûæû¬ÒêÀ@´–8 >âˆúÉÍDÊçH¾ÎäÅQ¦¾›Y ] 5îQnŠ3xŠ‘»ï2sœ™Š0µ%•±7ö·„ÑÍ€€XE:õùçUç<ѾûÑñ¼\¿qãh§ˆ¹4B3Pò¤Å_÷[¨ìªü¹óë­¨¹œñ±c~¶? %kUfÈWå:¶&ù J»Øu„êû+Š<“"UOB|wŽVŸö÷/®ì0ÅìÄ ÃôOÕð4þÄ'eaˆqÇ–Üí2~¹ÛŽÒ} ôµVy‡“Trßz<Ó55’ YÀã+—xLr&(°…·8„.oFÁÊ£b`åyÈbVáBYC«ÿ»%ZDôÆ~húµvy y"`ß9Kæëáç)9T2’ «e)OhghóätâíQ|bÚÆÄd”+ꎷ4Ѧ«Îdˆ“„šâ=i´Ê¡˜ÝñÛ`ñù4¤b®¨DÆ!)½òªàR|ð(£ßòþs£I+z¾ùDË9 Äxdœgl°TÌÔ½ ¸úpy­û†‹çïOÊãnÈI4¦ -–h@g0ž³"JVñ&#K‹:C™k?ÉËþ¡¸sv— °3Ô5”YÁ±ùö«ÜÙh¢fjÁk3+U×”ºi»&G'Y—±û ¦€&M9”ÈB%AE/3¿5ªƒZ pÀ çñú(öÕƒ(8~%Ë Ó‡MÙRñ'ì° ŒÅ„õÌúµÖ›(jV|øÁ$õuûCu¿vîôIdFê”cøqä,’«o$4~µuƒÞ¨[*­‚{ß1ƒ“pñ[eRXÈ7ÚZ}Þé•)ÌtÞÿ9Nk~¥î½^— iÀ"~Ä›‹a=oMžÇ "3†¦Èþû+`rŒ!ÿà ÿŒ ÏW¨é¦mŒHžK©F¡Ö’žL#þÃ=0èï$e¢LnL4xÇ¢$ ,]ÛŠÙ²s1vÝè~7á™ò˜XŒòG#J-còû'ßR›bÊO)IÚ;0tÄqzitxPØÚ…y´BKCGÐ.9ãR#ç.Njñþ<õËXØínžfÐr£“ü €4â;†õÜÔäž× p¼^.r¼õáÖ‹á,t×®w³#À257¨Ûylµ´’¿)a5ØÔ•¼³Æ!EºÕ ~g7¼}飦¨B†4cOŒ4Œè˜Ýg|[ Ê8°.9–Ì®f A*NËTâ-þ6;Q'¾Íâ3]Ù;*Gõôjå¨U^o u Üxœ™…^2/" p¹·Õ`ãtèU‘d#âì;f›¥u µo@¥}ãâM!õoGš¯ýc`ËžÌßúo„¢A1]P'1ZbÙƒ‘IÈN"}¶-›¿å°˜§ç³ÌKv¥Nu-E$-/û$å@/P/êwë‘FJ‹ÏÌØ¬BfL’Ÿ¥|¸‘òú `#ª¦ñèâ‹óGIÃ5…Zu~p0Gyy8(ß?‰Óùq–i_«\OÖ>-uÕñåÏVºÙ¨ƒü®¨ù[š" ÓrÄzÓ]¡3Ù…%vd+Ü8¼d”÷ó§å<=0C—¿©Œ_W'z†E V)°¾l|â›·â[~…Ù6 wO-Ú Šß–ši¹÷ø7 žâKÈ'~ÓgÛiJ¿†|ð[b52…]ćûÛeqºo”áÌ!M©eîîÎ<\0ŠÄÖ>ŠœÛÔÃ=½ÿécD\’ Z$8¹‹}]ã+$ ‰Ö-³vW í‡g2÷»éˆ_‰?ƒ‰‘ÜëO†ƒB?[zÖ™Œ9éôlI‘§X?)ƒq¦ì¯åR?OœÅ…M·¡ÑKE¡–Џø”Õß|CKéŠÿ:ÿt¦žÇÐ s2ÍÔ  (`¸˜¢Ê×ûgÉ ‹J›R+žb"€Fw˜IÏ-s#{’Â(²èp¥ÒŒm =à”V†ãYZº3ò$Â~ïÕ½á›d•2•PÅ!gØRƒ6ëWd„G<:2¡ñ«$/±ö#8Ó¡æöÄÀÂÀæûÕR4ªŠ8®æLÈmQêíÂåü:¾Zà‚Ç—rõù#1ÎW™E¦=³e‡ã . g°‹ÈqÔìÊKòKNÏJ»â˜¥3„)‹©µ!MN†÷3º%Žz¢ˆ ¬­Ƭb þgÝÊÀæ-0Øqh?ÍPðz¬‰kæÖq»Þ¹fq²˜ùÒ•bëËᛃø¡ä””^(Œ3ôR\ZB¡L?üÕï[¬oÙ#ûr•2>ôeÊ’ÝSSx“¿€h¼Wnò’ÑN ªóÉöí”h0xžY¸¿WQ¸ÍL ü¼n½¬ò‡m‡[¸AŒA@´QžÊ<øu·ëîz01ˆì+u;ÃnÔÒH=. ¥Íâwõ F†¿W™€_µºIxxwÔæR›Hþ¹F|âóLHt‹SY ¡Cá'Bö¨ý‡×”õ¥âL¡”³D ´ ŽÞHk®”µU=ž€'|žxžAg{Äà2óRÃFRrrUFY]¥ø´^ ¬éŠq>l‹‡ ¶ÄOm)†@a5ºë&§Ù’êb)ŽL•J¼ -¡¶€}À_²øZZ5æAˆ ¬Ð^$#à‰XÒ{XM;îäj…yâ¸ÚŠAdkØëÆ××Ñ'ûËÜ$g2éi”ö%â Úq®¢žÊØ“NîpxoTšñ…¯8d§„< ÓbHtÌZËb2Á]fèwU ¢4Ájìêft` œn,'UÓc–F[{zh¹²eÑP à!rÜèމ5æY½£­ç)ˆøé$›3#ùt*c¥±Jÿ¦M÷™ÃPõ8ÿã,&¥â¦»GÀŠ[Þ’IÓW‹Ãpm6¸i_ÎÚFF"ŽLrœœ“€§þÃxaQèêæ•¡{Y‘Ç¡¢+}Ñ*@á&\óªlî÷”lÄ;¾¹iÛ2Ö‚Â0¤rÝ¾è ¤Å€Ö­<ëç™&[ò©„!ùx. ¡=/1êh_;O™öÀñçyƒô'è>ØßԧبmØ|ü«MæAð€‘Ì›YÚÑÕmÓe*áL ô š ]×u“¨…ˆ=h¾taÏŸ‹ëBpŒ('ÿGAš´zñ%ÜÈ\|ß0ªºìüõ€ŠG°×ôTÊ®Ê$}0¯4¢dsfw4¢ ?wkÕÿn#óZ;êê›·\÷×ŠÂ—ŽŠ©Ì^&ç´ `è]3èߟv+{&”oíc° už¹Ö§ÎÒT¸¯¨Y ÃèŠKæ°ØôwpÎåµ>¢°˜Åû¸É)=%³,ü?P=¼ËX(´1óãˆÉó|¯pöJâ&ÞÓ²@kxj´¨Ú6ÑúU€‡ÊóùÂ/ñ\ÅÅäà ©o–X”=ŠõÎJ°óÇcú€_frÊÒtA…íßå7‘†½‘ŒÇ$$éÒ2Y™£•¹z¢¶‚äT?V餅B9~ · P†»ÿE ˜Ê¾ü /dïfLcºÒ ÖšX"Fà™iPן_ 6γèã|·d›éº!ÓMùë©1Ädÿ­mãx+ӗܹ“¹"ßß~N¨AžDÊkmHÈâ•ü¬J\!YŸm/xI‰}3|OàØ&óäß 7ì_â¤Hi¯×Î'"·,+þzÌiõ7óPˆkÍÉÝ÷­:P·½<é¹:1ò*,€¾ˆ/Íùu¨6ÃzqLVJÈÐaóÎ[¾i 8{2)Ž’L0®çi¡@$NMÎ%ŽÁP`푵E€? ÕZŒJ>f¤›ì 0*×½W¡uTÿP¦¡¦ä›thHØBnÝ6 Ýéó1Ý YÚ­™‘iôLE[&°q$œ£³ia6"T\¿V±!!KDFfqçV*àJT¯ÌD¨$ú±\¶·ü€ª?d}ŸÁ·@>¾Ý=rçàÌͳ|Ï‘®D÷'É|M‰ünpŸìÙã&+“à=wn#sæÚF·ãÄcú'ÍCŸ™Á[/@mÓZg¸*GO`úÿb%Š`m >ëcdÙï#Z~äF<¸¦–A‡ŸI/ý\‚žeúG+H}èÕmñRáÛ¶ k/ $«þDà øŽøàX§°+*2;(dÈr€PÆÿ£KÚâßÿRë¥Nœ’•sÉ ê4o4ƒ^°1Cƒo%Ã8 R¸(]É¿'(îìk ¯…ߣ8 LÀÛRÙñîÔE`Ž>˜ê{Àº‚MÒ4Îý+ǽ+¼¢E£]#@ááMd‡N‘ù¬bp‰ žA–ãaÛEñ÷+ÃíKö¬yø‡÷ºñzЬÖSrV¹gçÃÔ~µ‚uŽ8ÁE妯mþ˜FŽ nÌp]¶p`R›£™IiØ}9Ľ623äŸòµÚ„ê{¤"°Ç^œÅ L/öŸ¿Ð&|↠qˆa Sö'n½ sóá¶åÏWÄ1àCàqÒ¾C{såW«>e?„Çwwß½JG0ºg*l‰ëH§(ü>“kït'iÆùв ãeP{}DÖ¯"ç®X1Sº|åyJô\È‘ÀÈB@d~tcçWgþ…ýþT%ä·€\s5l³|Áìåd'ù=¥¶q²L’_Jg&×Gá{¸jyÉD1B"ð—ùÒq_B–,Å™+þ…YÃõ>nÅaµÝjäÎ Z#ñc‘ßùnVªõF©N™ ÃåQßòh“÷é|³Šê:?SÉ!Û‰ï]!7ŽäÅV„\Dì"* ©>ç´ý‰UÚ?o°ªâoµY,Ê=Ÿ…µöý…XjuÏ `M¡ÁÍCÕ½ ìöµ¥#ú žëP´aý )Ùî›ÎkùÂÅîÖï½Yh^ÿ2–‹OÕ²­éO‰ÀáI׉’:â]/ãõ쉼™!ðq>üëO e*Öfê­HÒçe¨äE¤°$ ’p¬¶pžßÌz~7ˈ‚õV¸KþeLwgD 9Ž@‘ñ=ègO»/RtàŸŒ2ÂÖbÉ6cûÝÜ"$Ü®ïÒ<«—«"ÁäËœìŽóËœ*r¦)oRsµz”x'§æNÇ,óF„H@ÛU8åÓ“,XX‰ÊIè~¿Y™å£{Æ>õ,Ûw>ÅLø=ã/îMÅMkõLh1Ôò9Z뫌 ƉswÝ¿* VKWÇñ‹És~†È`ãHV®Þöܧ÷ºúÁ#ŽXàWmZ#û„yËn)cÐùà˼í+BÌÄòJqÂÓËÒÍ ~ÉÐ8àAÌd‚¯_P^‚ý&ìÜfx®ì28œéá‹MÄK6­f6D2BÁâ÷'DÂc³Àë-£—pÞôgñ)õ_¥2Ë¥iŒa“…ÞÊþ Aqà ë>@Ò‹ÈáH>…3çŸÜÁt»_ †ßß̓N™ßÙ3èã4(] å«+f±D7ØÆ°L9l þn¶‡Êâ¢aá`L;׳ý)F¥K…à!´³+¥pVfj‚ 2$g¼ ?ÐwþÀÇI: ¸4˜É¨ˆœ Äž‚Œ ©sGªÕ›¹bœÉe<°Ô÷—÷¤¯Ëó·ð+~ÎÝ`òvÿ9Òï$V/ Ž OÌýKŸ{›ýÝ“»˜8Ê!¶6ýæ•°¯f…b5Í©éG0\?nýû¥ÿÿ£êܲmÅq øÝ{4€_0ÿ‰õ=Šåú©Õ}7l=2S²Á3 ,Æö æbÉŽ¤  ¯E84¤3˜‰á:#7ó5Õ÷¾„)1©t´bìLúû5 ¯œ~QSL&,yQ¿éÐK_Âà—õ$MÖM1rúÝ€üvÖ¿b™Ò÷ éE“VBT}Ü7">-ÌlVÌ^}<éF ÅCAM^$‡™Â–,!„s/’Äü¢ÑÌ13¼S ‚‹ÀX_f¸GÎReÇ¥k;Šþ¨sï¤ fÂ\#xò‚õˆgä;¿¿™ô1ûXw¤ÿ.bÛ@H„¿S4À¿ ïȤ ­°ÕW9fIê‹!Sãá+7•üvp¸…ýbžÏðûJÜŠÙ¿ÛÜOtu¥ó¿{þLj9ŽéûÜo sÿâbæ—ÖnF“ÿÁI|8ÀédW<ñ=ßÐèw²÷ß÷Íz†T„LXަ#±˜å¯˜ª&üBëç&ߨ #†âB‹ðN¤xÒDÁ¿ãn"ñ"ã`ÍßmÌ+ƒ‹5 ¸"Â&Â?>>‰Ð#"†#NÞ¼‰€LDE¸G†'B†ãšIõÊç§aWèÖÅ6:x$þÏ'±xÚ<›ƒ˜J¡ö~#:#ºaZñ8ÂíÎi ¦Æ†@Ö Ï!P©A’øƒ¿É¿h›¯ ù²‚MÞˆE$‚(‹|ŽôŒA„AŸU9×2ã;ªd_ÓŸ& ç¼-‹áþOf@xƒF´‘î×­‰;¿|fyÆXÐÓLÍȸð¿`lúG¥ôòàZ_ŒnG!É ½õwÆGDkG$B+J s:Ì®¥ß¨¸‚(f»ëß0E8íÉØêŽû6ë"Þè•Dâ6‡= ñ0åú‚¤ñ{Ol‰½÷¶ìP™5³>òÿïÀ=tÆü̈!ö¿c™É2`È—]ó÷Ïl DÐ÷¤K``äë33qÆ[†ýCé–¿S51 i0\þ ¥&ŽãÌI×øƒ7ª{r6žö$BUGsáo( Êfl&„sVZ/>9ÿ²F†L¡$‰H»#«½_Ü:. c«^ÌãËÌœÂF ³È§7Jbd+¿ƒH·ú†¢ûµ[TÓk箉`}»6ïõ¶rKDç»4Lœ"ÒÏšü;W<˜QEÌïL› ±‘Ûë5ßàæ\úÆÊ.Hžw¶ M:ü\д³îé˜-ÌGÃÅ¡GÂ!~¢ª mFù "G‡Mz>þ Äø‹9ÇX"3Ù4Âv¤ˆšØñþ¬¸£Ø{¶ÿRùk»$ò )™'Ê]ñ"s3>xSRš°Û>cfê²8£ÿee°x cјÄõPÔÈt™;úYi ÝPâN·‘xH{Ò)!ŒÃzNК…Õ ÷O*<;µ£Èˆ|§A—[Uþ<\‡ ½TÂŒõÿú7DR5”&ó ×…ˆè‹nþyÌDÎpÒ_¦Fúq¼{åÌ[¿‰“¥ø "Š‘D’G6¿±¸Î[ò…ì_›êßdWü÷ﯢùÏu¡üÂá, EÒu¥ñ†h*|ì¯¸»u6 smG„¸C©“lè›Id<-°3ü83Ù{mžQÀÃ`Øò†ÀˆÈg¼.ZtâÍÊ¿ý“‡"¶vgì‰\KuðÛÈxðꀕH+D ©´’¾–ÓZ‰ÛqåJÈXqb¼žÊþ>;7}‹¦dïÏÀ‹±øø2â1Wˆxú&À†ûpBäC¤J®ó„øÈøki_qÁKïËr‡ë£ÿ ß¹ìAÇÑUoj¡@ÁÀÞ˜\èð0¢6‰˜Ž|e“àSÑ ¤ˆóZÚ -Hb´=tgüþþ’ €À˜4;D¿Ëa‘91ÀÄÕEmIqðG3_ìE£S&ð{Ð@è’ØÏ‹–(r x Ç|xçùÍ€WÚ†@Ž"H…pÚx·Un9ã°]×"MRˆ³ã<˜ÖšL;T'ëÒ‘Ù(i.„Nˆÿõ'4`¶p‘‡)1›o‡ˆGv‡“ÿfó1 7‚í·B ^d ŸýZ«„éyý‰Í)!†Ú¹)΂’â\¡Š§ãÏ/“H];-±N$[Üõ/”¾*Úvˆéáþ]Ùnœ|š<(íéëïÞ jupåºYÊxʼnI¡Ñ8LÙËÑ}&f 3Cäϲߵƒ—òÀhþéQÐ é ¡°ü‡¦ d[ !âSq÷ÈPA‰ ò1´à÷±3„žd› ‚åÿZÒŒ¸ ¹âÞ+#tÄF‘+ñÄðñË×ã^ckÊqÛ8’ì¤z%•§vùû³ÕÔ(`Mô»¯på·Qëƒ5ãbŠëÚé³Âúa“@´øè´û’? Q¼ÓxGœÎÄ%ê’}¾šþ k¡S€¤ÒêÎî‹ê‰{HHv©+ÌÅÀ#þâ(æô‘Dq½_ÎÉÏŠý«©cËß§Üd9zÞ$‘>†õw&­ù;üøMøù é3x¨ÅDº›qÿ]¿A¯Çš¶¸1óo?ðô·ådØä ÓFt°ÌLjQU¼0õŸí¿”–|’ ™ÄÆaŲ)š2‘þ_déïÔõƒI{¦?: À Â"y38k ‰pù¢yí°W›ývʾC³~°á¿“òc‹3÷L~L)ù¦Õÿ%9_s¤Uxö‰ÿý—Z3‘)ШÄÍÛHx .1©c¿ÁpáëWdšùÈ8g™ì\­!x)0ã¢4|aˆrˆ½´c#$šET¸ÜßUï<¸ö£­i@íeêÖÇLÈbpm` œ ¡ŒF8î‡÷GK€XzèÅç9µ?¬0Ýz½²\»þ>¨IøiË–ðb´æ¢î‰óC( ØJr “ã§+1„€ ~1þyoŒ=ƒ‰¿!A|eèo—8%ÿv°u_}ôÍ%³þÊiADþÓê$g#ùP½ù˜!ô¦†ÝB‰ÜAÚêlŒHïôctýq'Çß—ar¤ƒþåwºÞ'k?Ë.K¯¿Ö #‰[1ø0rtèX{%·F†¿gôV´¬‚nØz_³âK(_DžS€ E1ç ¤0Ãú2—â»æXÜ$ª¾„#Æe©IÖ}é f=½‘ènš ·ø¢ë¯ÊÇ+3lU€Œ#pˆÛ¢e×ï–[Cþ õ`…xy›O}åKé¢]¶dÿ¾p=“Jï=™¹-1 >FDŸa&öhǘ8„µS”Õý¥Sb¿ôZHÄuiÜ¿ÿΔäŸÜ¤O¸žMyP™¶–ÃüûoeÝ$þÞ-4noñ7ãB¡žÎZòuîïÊ‘@Ea>>æï¿=ƒ}DûäŒdì bY;cki|Èôj }¼^ÈTÉýK3ü=üIÆöéâþ¿ÿ®Ä¸ñðð©çÀ¦=Š&šþ󵕧J|Øt‡©þRkm1éy±ñk\ˆýqÇß—É~Ð`;FÁ“9oLwu#2¬û÷ˆgÃ…@jÛ_f|‡œu³èÕ÷äο‹Û-Q†¼±ZÅ‚|L¨qáxšl=ÿæ?7Sùã{¡Øb´í*Dð.×gæÜ VÖÅ: ¶ ÇØŒa×À úUPAÀ˜WÝ!*&r ¿²kXÌš5” À_¦Îã-þ2û'[ÿÝ¡Çït½kXãÙ©ûê´QpŒ ÆÜØb%¿ÞÝþ‰¸ÿ;}#e·}DÚßÒûÝjökFò(Y‚Ëð÷#{0äK1ˆÕ"G€"iuÖ„O4kÔ¦‹½fœ©ÁÃH߈ƛ¹³íŸ5mØ o± ìh÷ÿPßU“ZmÓ µÂ7 1ïxL4 GɈÙSÀ‘Ñ® 9¦©6óþw>éΣf«PV²‚×6c¦° ìfË› 2ùùU¼«ŽÞV܅˸õPX!òžÝx!ÝaPýÅ—Ãîe<Ïܳgüæ* áÏ_VdÐWLÄœˆ-–P?v0ÅcL&hÚ{Vè`iÒ¾‹N¿¹Ù‰jŠZ¡åDÿæü›õê@Tœa†ø”¯Ì — &ü1††–?(Ø(`!Â\”}k“$aœ±Æ®˜<£5V|Þ¾›¢ &Þ<]§”ƒá@Ÿ¡|Ó~w£sHKúß¼¼Ï‹+­e»Ãù»&&Ì `Œ»Žì„þ§ÊÑ}œVÄúñ‰ e`:C¶~å9^u&eȰH⨞VøP‚åÁ£Ìé§îBì‘tOŽ«mî¼Ãa÷s@á•ãZedÆý½•wQ í4#šx ¼S}µßÁô̈1aÀpƒ é“_­ çy+qÝj0Ç6D¥í¶ó4<ùa&EŽ}©õ\§ˆ~â×8Šë ‚ß¹õñw$hKŒò*»kóÙ«@÷ÄYäld¹9ûšaâÕ]–pK¡ó›¹ìEë›Ü"¦c ì»Í{J"Ë"Þöeõ;©yOêó@¥ ¿š¦fç `B:â)ôÇÄ´íÄxC_4íõûX…¬Ë{‰ZO E'‚y/Ħ½’éÚ3} ¿yÖ8‘U«‰#dzú)Ù¼$îê´ 3€ô“¸Ëh(Þ×^=h¬$D“96€Ïë׬ÆX¤•îº9}B̰e9^¿x ¼_¯rRÛ€£ó\‚çÈH~åpΊ/|õ¬Ù¬|~ãÈÖ« Hp]:ö«Qú÷sl à¨ðâÖò<±—c2T.tcÇfÛyÝÙ}…è> Ä”nÓáÚùÄ蟧XãŠvJS+õÀ®ou3’èࢵ¶þxÇëÞ‹_¯ŸG€ß¾aÏæ‹¾— Ù{ÒX«îZé.ˆeN뮤gU tåÍ­A»íÏŸÍ®oñTŒí ?[£™LsƒÐÁ ›yrýÜÁ¸ dƒÀÄ §îÆ,ÖB ú½~£°º!•XÒêYôàÅ•ý*,Áà¼Lg"æU³ÆÊ]À«nÞÿæ‘ÿoýþéúPTgr3.'k©¾[E0÷뫟Q-Ù‹Ø>œ²ì5 ÆÇ(x– !RÒi‹8Óà Ê˵„Lñ¾àAì=G¯yèá»xÀÙÇ#€Ço¨<ëwd¨€½êøK~w À„­Ó¶WŠâµú¨ö|Ïúó-”•¯¡Ñõî"ñ9ðo¦×ÚŽ 8zÜ9ªŠ3©žc”Œ…õhÀJFL{ê÷ï«á›mDŒd™7æ‚ÐÔê.À¶0•ÀùíyxîW5â?'æˆo@vì˧`ËýQ{K]ÂUfd¯±~gvj#õB¸‚7CïÒœ¿¾1€Yð,ä¸xàUý@’ïÛw4Óû8¡<äˆðþì·´dý[0™ølcPKˆ÷ÑŠ¶|lDWáapJÝûwÅØ7‰3Ê7h,ýÞ× µy[ìÓuÅË]`#àKÉW]{÷tÝ·ŸÌïÞE8ð,‚ÆŒ¡°ÃÙ|Ê…o>JBO1ÞÏÿ¬q29000ð‰¢3FAÃC}PÛkÓ6³þ»<Ïs¤S†R9󞘮ŒûĹ!Éã zgýŽf&ð&b¼›÷\!Î@')QåìÛyŽšBÝÜÞÔš MÈõ”kO+ÿ»ŒoÿíÝÜÜY¾Ã4öò2s¯=ˆç92k¦9 ^ºÂèÉ{½{ÜåƒÌOƒÛ ™û÷§ÝG¶Ä$»J_tÊßîÊû¦ ˜|¼<õíÃ2O¿ŽD°‘öø-( R•!˜èÀœ“Z•ÊïE›ÜøÐ\2?ŽßŸ¯råÍ©¿•«x¬­Ê•÷„õ'p4Ö†žñç9¡žξvµgšÍÚï(ç£xŒ(b;GöPbÅ~ðî/¬UN#w¼Üüç½Ê Þe¶¢Ål6­£?Ïmgïr.tÿ[ùöôv`‚™„\&©‰ ‹\¹Ñ;…ŽZ¼Ÿù”-Ýc©&žÛÞêIý«¡£„wdûö—–E>½jóÝÁ|[×'æ{É¸ê¶ØÚ€ìRÜ#\ZešÅ™9ÙÍì6Ÿ½[V_ûÛz8 àË'öÊôÌZeƒõasá%̴߬öÿ]’¦GÖ²p'*`ýYÖiHXpÊŠ9QãÙ3jà8`ÑÈ"|ÜÄi6 š×WúvT޶ë«q‹f58vãYM«9I©kËÑf¬;î»u‰3÷¾Ks  ™"HÛ¿7>Ù/š(;ü¸æ·K½8C3Ecö«ÀvI³ãs¿í÷׈·E¡¨vâW“þX¬19¨oGóåò«Ba™z´s‘O«àŠâ¥žJº0C€—©73àžB-™«¿áFÕoïüŽÛKº/šW)û†£×QƒX£kí k­ç±–Æ Éï¯ôIBT/yÀÜ[´Ë„³Ù~°Ìºµë€Yd4%ÄQ×WgÒ¨nûí­aø’kü]?+$WT\ßñľ ¸g^Õ ZaÜ Î,Ç`à-K\+ ó`ìÙûD¦—"è®g]Ð]Wr+øFIðãÎ}ÇâÃW%\mªˆR–Ћ’cŽò.Ã"ãÞ¤Ìi÷$n|íQVáÂpË\ûWµR°¨÷#2³–Uä°óŒô§eÅs9/áË«¾Ê4¶ÌµCvÙòHðºjD´e2¯px#`Ös‘¡V¼ ^½îÒO ÂWe8vnF¡˜2KþðþÒUEáãV ß̸Ù*æ$âuzdòŒQžçËw¹{?Ö磼šíÝ;ùm¤*ÊY[cS Y;‹qÜàÅþ·1/ªÄêYoÚħ#Ù¿uû?ìý­ÜgH-@ÏÈê ú¹Å·©ûþ¾MfÂûk)öÀVþ¿b%ŽWA¶ò)ðØ70zVQ2¿»’o~ÿ±x¾Æ#¢ O±X3O±Gœyν@â¤;æÃèèµSÆA¥ˆ¹JŒf® =s!Cºbñô0É]°×ÝœÑS™ê3bñ!»Ø×®gX‡f(û.®m–ÎQ¯Â~ŽŒfgˆ¸K&¼'ú>¿y`ózj\ØÓ]c 4/wÆáZÑËûkëi€^ €b(IÆ·Wµx̸¾út<…邪t“(ú,XAJ¬Ã¼JÁ#ÈÐ]ÚÊ{LsGáÊ4{›kÈhvúÞIp+€1¾{¯ÆñÈi#xô_+qäshÃþ´r´5‘.äo@«—7ÜÆAÆiù{;ßßñio7, ðH ûð$Ù¬µHÞ]£3Þê܃(íøÃw–+Ég3Âõö¯T [‘§{8,:â¹×’ž*ŸìÝÕuw‰Xß3~2âWñL„hgºG.[^•qdßÓôÜõô›Å3Çý*è —Ê1³‡ƒá:t]»Õ&«²Oååˆ {R€¿±ãíè¿#»xþ]î’Ír”ÇÓøKJÔh;Œ Ùiä]Æ Y_Yëw°ÿ†¾gFŒÎÂ+lj5#ÑÎ{‰:Œ~յؠ'£·­z:߀âî–˜ÚHà.ß¾cBýp—ó>Þ`\›io•ˆ(ÑÖJÁUPÕrv߀~?û‰ BŠ 7÷]:X+à™p‚É»çŽ ,A×Fq⬇,ÉDÏÑ?Bz#Wª&h¶åæàŠþ|{¦rÛ“Ol"âÜÄÌ’iÆUèqJE²ïÚ#Ý‘ånYŠùˆŸA Jn«ÂÈŠ£›ˆ¼e®ê$·®ñÝY£[{®=VÆÍy€Bg½ÆŒ{€vóRßÓ`xr9dý™yU¿ÇéÝ™c¹sLÔ[§M#˸Ôêk##æoiad¦~› ú¸·SI.úæÞ#ÂCMm=AZ`ŒÐvo Òºw^v"Ç 7ñlnOõg•%_=qWÙ‰hùŒ\”bv|fá5š@¸v¥¿7-qÖCÁã}a >™ñµx‹õ70Š!¶§¦ó »å)®%ÝÐ ¦ßo•„zDœeFyuäòymÅ™‘hôâýóÜ–“Èüg Qàßø]Káb2á‚ñ_{@G/ÎlÆ Tç]:²ó_¦þ• ‹Fæ Èä$t§=5cö9,2ß#~§ãú*Ëæ1:Qcy¯§òƒ(׊v…ì#„&"ûœ#ì¬%Àf"´6{¸W^5ˇŒû=3&ªmÜ÷ýMÿýæ'ìx¼kM|3Ú¶¤~ø¶þÃ*7óòª½GŽ&¶ vÄðÏú ý-G~€FŒN"¾lrÜ•åV>Mý–·Šœq÷Âu‹S£”'¢×¨ûúb™ª¡õ_g\6™VÕ0_²ç±¯ó;1‘ÎÉ1SñÑøB;D^È­æë¸SÖ~*>_u„OY•qX5Aä´´äW£ ²vDRuª™w#Qœb¨Ætã¥ÿÛßÃz¢¥‘+õ;bÍéŒEPï® g‹Š¯GÅHøl“Å—„„RÅô³ ËÙ«n¶ Õ!ño¼é¬Ë€½«ÿFr@á#,?iÀ¹Óu$ଞ½§¶*ÅW&(°(v¿ƒD¹‹`š…¸@¨‡K)” 49 Cò@ìð^Ù•ûkÐýê~ñôaaÊØ"†>¢bTrI£Ž ÈœïöáâÏÜÀ¬ŠØæ·®l·þ­¬úĹŸ2î{NhR¶«<Ëäú­ƒ|®=ŠI‹µ¤£–äQ’uù£H§)¡ŒÐÕ¶Ç]3í¹ŸyñA;vÒ¤§<Œ{­U •~¦_¿•kÙ|;’>'=O¾ÂêößiÔë믭óþ vß_ø½õýEàû÷ÖÇjV9Â3 Îçf‰(¡úúÔˆ»—Râw`"ÁBÒ pKƒµú7À’g!Ò” nCðpG ÿñ^«þM€yköi"£3¨$óÈGÌ$£‡uüÝã ï>-’¯QÑýû’ß_« Rî6€É–@£ÉÝÁØgŽúø{îÅ:;csýJÀìǽðâ0]~óÀäùá9ðáQbaB.J–‰}Á½ÛU" ýÝò~®»貫ù;D$Öæ;§ø’É«HÒæ=Æ(¤7wYÊ92wa ÅÁÚ2kξå²]óT< D"Æ' ³³‘À…U[N&Ÿ¼ómÏ*DíÕW@Ç‹ÿ¯Œ±?àùØØE-žW& lD2ë§ØvH…¿±àɰ³ÂLHÂjßq­ð”›çæÏVÒq‹ 6¶C@’„Ì<¹- 6äÓ¡_ah0ŽÍTê$^îu@‰‹&ÅKK sÄûl þ{1ì¾ù ‡º®Äô>*¥ƒT'J3Îä­gÃ1ÛÜê%¿lºÊ¦úŒ_V85ÜoAB“ E­$ÅßG²GV€×ú€Þ¬¹¾¶™xŽg÷Èý¦Înn€ ¼&ü±U¥6á¢ï`4—U“ Ûþ}FÒªŠ™„‘˜‘:a¤ØöΤ'®ò&0RGT…g_¥}}D¸Xu—  I/<¥îw.Á„ejÒ¯3.“'}1«‘ú’R%ù²8–ß-¾5c?èù:f}Ûóy*æV.#Ôþ·7¤Úr-‹Æ®tÉE.0{F—„çè«øý)K\. |kíÙñÕ;Apo2i8Ñ)¸µÁ' 1ÇŒF6ahîß]B’°ü^;>çSñ—ħ%ƽÉnö{?WøÊ\póÌ]Qü”†‹Yöô¨Jˆ<²Ug© Ô‚x°ñãÁ,b½•ŸÄ¯lö‡v N$ºªŠë-qªˆd2ß~߸Ùæ Ô±î‹ñ×AMÿhê·ŽžÄ]3fôÊ:¿–¼‹Ú"îçáá6 3ý:¬ƒ ÄpÐ{R”AøR›1I–€Zxªmï¶ÕëîÀg—-¼ööaHßšÓiTüÒ¯m"ÁÊâÖÐì¹Þk®½¨€Q ¤ š»©là>{_„Bûm÷eP$gŸ5:C1æ-2åczß}T±»é>È'±Ž<»Ñ9¾f$= Šqw©á Laú1Ê™©‰„’ï«93¹r·½½ŽÑAþ==41¸£Ðà¸FiÌÅs™ã’^•d’Gê)@¥ö`EŸ6–¥I £~§ýŠm²QÔ¬zÖ«Ãú]x¬æªù •Ó'íçWóqÝÖt'fI÷÷÷ëïõ7vž´P®=>&uÿ}éüŸÐºœúU.åæ˜‰ dÁ´JèdwÇÔ"ÿ*M³0ü´coœº÷Îè7ŒõÁñû˜LŠ3Dþûw&0uð¬I“Ì*Ù\"0³ÌEåµ4ë뛵Ýb™{> ²øŒÛxw2»©(ƒˆQ–Bg…‡,3ýSÿf÷þ-÷>y¯VÁÏbñ<Á z•„?>KHÁꊋÑÛ$0Ô˜£©u<·;ÙñÚC´íâ‰öCãu0On¾òªw³ÌºyÉ·Š´aGÓ¤$Þ§l+(çUG"nÌAøð‰ÏeXè5© ¾¹‹Ôbr×Ðxb±Ç#ËQ¡ë€ ×zdÚ~xí;X÷òu¬˜=/?ñü×u@Þã¤D½Dgè ²áàâºÇÙöwþÒ†™WYKئ¼÷_.‰ÍS³»j <µ8œBýoKøÔ·?ÌqÇû&Ö_m’¿²L;ÍŠ26*½G6»niÌ?2þ%R-m¥Å¶6ò蹡G’H?®º ñ/2¸¦6ûžá û uYeëo>·oÕ¶Ôq£ZîJË<ŽÿR”2_s:û™Õ'«^íëרŒá¹ŸÂ9+"-£sóHM†F¶/O·\Ÿè;wyÖ+¡ñ.~B&¼èý^øÑ­Mã(Dûø¾f¯ ³ºÓkáÁºžKfê'É3â1²‘çJ¤6v$Az£áG®•tm%rGaußaf<æ,ˆùñ¬g#’•5[Cr»\Œ˜hxùüâiåï ?· S¿å·¹ã`ÉUޏËâµ³(&s^kßy]³ìI”þƒ…W̟͛Y‰Î´Åµ¨1mÝ‘]âªÙc¹±¾²ïï¨ÐÉ’ë‚‹A4«Gón½ù¬A³ÖœyÕÜÙ»@?løÊçŽëÛ3^ø G^¹…“3{ú´ËâÐýpw–ˆ_(8e&ßÝrŽïØcYOÛVü(MÆÑ³m@4MW¾2ò¹Ë³GŸY  ŒVìY£Ç[3?ć1þ²óæãÓ0 \OKÌ[¥ÉÀ‹y࣫îf,qà–ÆUÙ»xÜh%ÌQz(Æ!va^DãË_®ç«¹Ÿ«l[“²Jv_XľâÚÃOÌß*÷­¼cÁ“₱c4ƒésÏÅÈv»ªº,˜«F—·ß™?ÄüHëmì»~U®ÉKXÿ­øNuáL,&W¡-ÈË=@ñS%+¹2±cßÞ˜/æ ¾éWÍݼ^u§ŸëXÎʼÉ\¸ s±ðj…ÒÖï"ìÃè-Ù`ñåWŇ½Ø·lª†ÍŒauò®9øùŸH’£Ø€kHû}ÅÔ÷µ=Öò2ðï…s»™dyùíjá åÄæ©u,ƒt?4fÆ`oõ“\!f^eøLüôïÇHëìŠtùœ5' Æ2îßηuz&wÜÛ¼K ¤sðVðßÿ1¨gÀ\Û²¿ª~%p„—býw Ï0¸ßrýxkŒ¤“-OÝëj5ç#xWжAÁMÓ’êáTœöŽr¶kWÚC""]RLb÷*Ó ö)æ ßø}×vSS°è‡ÀŽÑÝŒ±¤è´uÈû¡,Ús˜ݯyŸ ø&ã†yºÉ¡mIAB Î#·Ì{vyÇ%üXs¸¶%Ý0:ìl¬@œÙTÛ+xè#-bÙŒ"5°'ñ.‚X.‘óÊ8>ˆ›£s^ö|i ÎÕ‹/Ô>qZF‹#IŸ¿—ן­×Ó©’2KãA¯L§bZ™4ÿ~‰¡Áær .1` ^kí øô f6¯?ÿ~T ÀÜ…çZï$ö¶ØGšQï¤ë&£˜uGSËD ü»÷˜7×dx0ŽësÔˆ~6ð&¼¾ãŽý>ƒŒüÛã/\­#ûÚ!óbOÐÞN&Ú]ÏbÜxÍÊQ»bcª=l0„š¿Ùß^âØóÀö‡ÿý²ˆ‘7¿†ª„{Ù=d"O3ËÆÆ¶÷áªÖ-¢ÅÌÁFœ²L$~š‹faü~˜÷*aÏòŽ"r¶Fx>‹I´â÷7 IGÿU(G(ñÍ4»%5^›.ã´Øë#\?·©8ú#ÔH°Š‰ëÌsÿåÁ§bÓ~¶‰Ò x¿#µÜ˜(_Ͳ'~’»4ú^£ìIXX–*´b®o+*[îñ;0t ô½˜þì°~ï#8‹]ùø/Âã»ké{f„À8”ÿËì,;ÓÆ½¬ð1¢y@’qD¼°;žhÆÂÀ{ò¥ €ø/¶Û%>ŸØ¶yÖ 2‚ Oì{ÞïÝËRBŠ£'ußg[ê½øI鯲è;Έ]Ã&† “Íðç3eóDK¸‹›q½ÛBÂTPÏjžrœ’Ó-×fô9P{5¼õ¬MN'Xn«c¦G.Ø,°Éµ——)9œ$Û-Ú~mßbõWæôGNpÚÈ ë¶#2ò‰_å–B-‚0{QòÊ=wœ’vsÄZ£§j3/Á“uÌQð^+wÐ{´ÊrÏãBŸ@ X²™ä;fo{jÜf²1õ¹À¼ùH0Qš…(ÙKd‚]–…¢võ‹0_!`Ú˜\"‚À«§<¼\«“a4Üz ŸÝDlüƒÌâ»Í¡_e´ÇŒztåÚ ÍÃ71,mØ›÷å¯Ê8žÕÆ‘£ª7b~Dœ’ÕXöÅ«Æ4³ï×¶ºñý%2o>†%WµÌ¦ Gæ%^%{[EÖr Q¾E ÂÃß¡Œ3/+(Šª¢Et¤k/ãÄìîË(f/+mï ä÷›Cw^Æ0;‡%F/oÙf2ãˆßñÕLE£ëŒBr?Ã*ŒDÍkû—ât²‹7 ®ÒÚ=ýô•=CW8Æ[/þæ!¹fÝEdCj!òÄ)Æ2Š-ÿåãú*oü|êg꿽õ,=gƒ„|Ó^f½xqŒÏ¿ÙhÆ[å™7à^™³l{‹*÷‘}‹7}´ÞÁSD64ë?Ÿr`þ?‡öз£¸‚±®ç²â|ªªâd¹ï>jT·ƒ$¾#s˜c~ï…˜ûCã;¾ìq³ø'”Ü“9­ÍŸÍœkáb@.)ÌÚ~ŒRã´W‹7‰f ³sYŠ|ËY+yw|†ŽÙo›e„|¥’Ù` Á+-q— yÙ,̨vDÀ:¼õ°éNÄ&2i‘cw‰P1.žKL4cåW›xè,„ïû _õLfÜSµ} ȇ7_ë|­~ec÷æX/š ~ñ:±˜ø&¯‰8wÊ\Å(ñÛêZÑû¯…½B’ƻŦûo«çÊòÔÜ'ºß»2\ÕœõÿÜ ìûŠG\6÷…± ·[sW¶¹Ùº«Ïíÿo´Âþ[Nø•BC­}ú_;Zs¶òÍS€(@0+±ß-8«WDÀ&GŠ“O)¹uÿ}wþûûÂÒsr b®2Ф+ÎBZ/ÇUã*³|‡ãHy%p’Ψߑ)ÜׂKº`«äS”:Ò88˜´°‘ò–³ý‹„Ê0´Ä†„†f5Å];R×·9 &à1îü]oÚâ'¿OÖ“˜¡ß›O©ó%ÔÇD1ÔÆ/k2úùœö&âYØ€Ñ/%‘ãê•p•‡fZêÝ@þpǼLº¶ ê£Éu×Þ„siŒ÷î}mRšô;ŽäûÞmµAJ±aœ=L8r8w'Q¬MŸ‘%üªU‡øžQÒ3û D×¶ŽVÏÂ&"Ÿò‰Mz$¤íB×¼M~®e ë:Àuħ9•2Žª¿c‹ê¯[xðÇß^ƒ÷Kˆ[åÿ wD/6s?2‡¸ç$æ© ±qB‘œŽM$K = ñ+[Ž7ç²"¿Y_˜é_bÉÆIÜëy*®Yõ=mÛA̰0íìùVw[rs`ˆïnMÞ÷5é• •DùÁ¨?E@kA°s`ryÁDç¿mÎï9ÂÎÊI“©b ¼‰¯:Ñè€éÄäŸ3YÕk&ðU¿ß'Bç2ÕfÂ;jBEøÂÈÑ×€ÜèÛÙ©’ As~ÛÙ¢½_Cê„Muâ¯*,—“þls¶½·ýªÞ‰.7uЇåÞÌöå¦mpW‚?ǸG+QĤé×öc$öÈ×ßìÕ]3Çus®};7•$i¬Š?ïôà3-õÔÁÇmšd4K¯ýïS¬:Qؤ_óÔ…PÒÆD&FÙ#)Éì»§pÇy¶7wðöº \£Cés…c)é;±¶E…&Ù´Ò Í×o)VýzUËœ·P®ê)­/m_ô…Dpt€Õ’yCÖâ›yæ›&¿1jÜÀH>E‹0Ö»ž%´wí}Uvr¬~›©^õ•]f¯¥L‘lžR¶³ïII*×q÷çYf-Ÿ›ßW¾½sÇ¡€ _üèÖ°ï,­ýM*”V¹ïª“•êð›åAP¬eÜûØî=dÌÊÑ„â;·aýÕ†ûL{£ òa h¤<Û¨AŽÞ—hä‹Q¿Úä÷‘É=bý©Zìõ•(qŠŒZ }n?Ý{äÉ’ûÙî±ñ=V£ìa¥šØÿ%߉éõó^½üÉ]ŒEâCy·h!NþÞkM¬Ü&jM²èïsÏ[ZØŸÍÕXeçHb)«Ö8õþ}ñ‹Ïè†bÿPÑïú{iý–1B0±c{.ü$ŸÏ2ŠÖõ* ……r0idéhé²(‰E梥úµ’@nNÀ¶lÏFåõŸ“î›"›ö~ Ä Á<÷«™ LJ‹Ë-á¾Ø)EKãûÎ@' H=ôAߨ‰>4ã: ÖvE‚3¡rŒH ¶$†¦Ú›Á{sèðç`†Ê(ð;ü8^u"aÃs‡ã±©Ñ²u}ß´±ñŠ;M};ü}ëŽ-å¬àªR¤±¸jŒ’툴dÜŸcO+:c‡8úVEžä„Ü2ø‹û¢ Ø_ Â'iìïÄÂzâÔ§<cP3µ]•Àð%¬þ½ù[wœ>IÛ¿5ã/®Åÿ€DãÔö;‚<ö¶Ä:,@ý÷å±õ t17cP œ¥_ÙIÚÊYŒË¿ƒMëZ3T¢èX‰BE¾ï=¬æ[ZðïðݲÖÌ«žŒî¿o%׸Á—Ÿø;ž¥F´ÄçÕÿv]ZPc¹ a¿a—{ä³2ÃS˜óKHÄ8BóŽÝ$&€9WÅí4žÍ'þŽÏÿ&NP¤-Ñ莣ñîì[IÈ+óí;FÿbÌ«¾Ìmâçï-§"w˜ƒ” „’C|1SðWÜ_Iy›Wæ9þ 쾜•í{ázÓ*øtßXΉR_B}GŽ«¥Ø°WdvqÚ%Ô j‹UZ‚öàÓsDžLàÃÞrÃud°œOúö¯õRY z ”uø$æŽë*¡÷d~ŸI”ÞLÙ厖D1üØ2Ê6—ÊC}7©á¼;>ߟíE´#WÈ›¿­ç3÷×Sb"…¹ Ö»„E¢:ˆŠ™¶Ýèh¦9X½ÝeÛO”ùfå{ÇΞn 2Ε"èO2;¯U¨ÐVÎn£Uf×»Û®Xçv[Ë>"ÜCLŽ‘ÞÞ\ù€@X·ȸ²å|ï¥3ðâ^ÇYª²ä:ìb40†ìʽGêÞ7ªÆ%猯pllnädÿl.3ßû.q&6¼íÂók)ðÉM½ì­)æ¼ê…£×ÓÅR³Ïì¼jŽd™ªÌMšõ;wt!2M¯½•ói[¿¹¿{] o¡ÿÚÙ•ŠÑþT"6ÏúÊÛ—zUBvÃÂd=±¶z!*-šDraž•çÒó_e¥9O'ëv¡±v+ä¦}ŽlŸ¶EN¶Cö“£h "=›(œ(Šî LZ™Ûyþ§'âfwjÚâD¥Çÿû$Î}»ÓMšDÄ-³ÀŽ]Ô¾ËNüKZkTÍVÖ‘>¯:ð›Š;Ä|Þk•ÿÞÃKäb”?ïj9ŸƒŽŸÙ¿ö×?}SC[fv4L“llX,6òW|Ý“ŸÑýâ[:Q7ý-€ä7…âóB¯GI'd&Ц <®„¤gˆ;œ}RˆÞ”ÙcWÈ ú¾{Õx½\Àºïž ›æUdãY •—]¸)^c”ôiñŽyÈÙ¼ã,j£øråUø»“¢ÄE|«IóÛ•ãÞ¤`f)GåßjÞ„º]€v›ÒÈŽW+Ì3ùžÝ?ã,_×b»énGâ® \|Åë£ãïK.+‚¸ÇGŒ°ÿíy˜ù-™ö™;3orcZü *²1cXOíJÌ2øL45ìÄìV¿sGñÛ >:õV¸*¡õ` B…ÍiæúÄo£ñMÓõ=›bDnÔû‹{¡ø-&<ZÀ.ŒŽü´—K+¼Õµ¢msô×V9Xýæî„ù“–8TúÊ·£Ô6–qÕªç2Ò])^»;¦ß„~wƒŽâ+¸cw^‚Åñûw`h‹÷­’»C1ݳðú¢o±ÃöÙs¹¯#f’#±KèÆUhf×ZM=š}‘4qž}>qÚ´žÚnÆ)@2¸¯d4œD=±½®çÈ»¸â#à/Xü·Ø¥§îþw€ÅM¬g%¡F{öÆ%ÔY;“ë§K‘Ëkï#c†D6¼<ëÚÏM…À{ñ'fáUè¯~ݺ²+wÇýý¬Ê—a¾‰á™Àí´„ÆßBáMF͵™çÎPÆäªwÏ@ölÞK°±<äÈWÙÞ½ê)Ì"‡îÞ*ƒGúçÛ¶Á(7Uåee츾¯÷]£†Y9Ê:qf¨£K’Ñ?.ÄXÀX0RÌSį¶gw“Í`™up¶‡cÛPØ3N(ÎV±kš,¿Q¿ÇñŠ’ÈåVÜDÄÊòåQ›£¨´—øÅSž=±,{•câ~ ÐoSÜÝýˆ&:ƒí@–¡Ê½v/Žñ¼ãHPçè¢ßCØø†úWbV+ß²äÝŸ7µ(6ö¸¸c"šOD Iˆ²Íê)³§UMz™Ø‘œÉ o‰¨·ëB¿}FÜe¥W©žEçøOëãÛY{-#KnaÜ,Ñ<3øUoãѲdæþshx°]–´VÿJr­5Eú±xÌÙ§0ny•¸FäÄû80nýú×H%˜G‹ÄWý%ö¸­¢¼ª¬ë(Æ80+ùõ+iKdqwEtŽø.Ì5"Qò5Àì âŽvàŒ÷§ž7eR—S~óÀÏYwQ†¢PR8¯ê¡Q3Äïñ%fɕ꨾3ù¹ëﮞÑðn^;žCUüS¿QøHL‰ÎXÕ»ÌCû™,‰úzlЬ޳žÿ=«òíºÍz9â©g¡0ä ¯‹A³9Êâò{fQC|=~çŽb­#ÂßÏá{¢,º‚o¬ìÇ6Å7ÿ3•}è×/v'FÃyXˆlìbàoV?+x&Ž»Û¡žþ))bí>2i=ZÈSV5Ò&f ïûΈ8ú~ŽÌ¿š :·cÄŒQ¤Îˆì¥Gð,Ø?Œ®ßÜ¥ 9ö SUrß‘o¢cavß V`‰¨Oè=ÐõÒ¿dYM? ”‘Ù²æ{·NŽÏU©ÂÝð:¢GµKþ{[êÁïÑ`ù~«¥•ù4T5ïÉÓÙïS¼ÌsaƬûŽlWÙ‰’îcåÚy æðªQÞAwò\2õÑ«¢ÉµŸõ\÷,æ‚Õ`ü>¾ÍV†S¯ŠËñ{(m0dL¯j{F<ë¹N”ʼúöŒ÷#jpŒ£Šü‡;’Óö7\ûYŒNŒm™}ïÖOÇ¡“ÖïÈ;ò6"ÛìËL'6ñ÷KùÞÓ7k# ¾îYÞŒ-;)x¯€}ÐOœ…|»‘½¤0ÉÝ(ÖS˧`7×6äCr|™¼}'ÿ#€Ü‡|Ï:!–âÛˆwçŽ.7Ûß^Æð)”¯¥ €¹5÷Xžç€<7³²=“ýIñMŸÈVÍ#ùU ˆ´ÂO¤ø#Iº˜æ¿-DðS*ôîKüOŒþq»(òÈ™\&üþ´C Ù.J°»öL‚@à˲¦d´:&ÙÙÈ!¡H®AH#ŸX€þHw…ø}g¢µ=#ÆýÀt[ ¢ïÜã~ÚujútìQ0¢G"P¾ÿ°¿÷Þ.’Ë´‹çû¬ûI™vuçg)¨, È3•ž€·‚þrïlߛ߉̉W<÷J°ÛñÓ¯$S˜õ-ürzÒÛ¶¢…R»Àßv‚Pó,âZÌqÙQqtó3öÒ‘£¡ål¢]Û^OQ–W®ànO;|gªJ–ö·»Ô$ÈÞ5îþ€›sü Šù9Ø4š„Ç«,5VBåYz¯UÁ¸GaÊm1jÙ„@óÝ­^%Ôýýj©Ò–J<=Î5½Ô’’ùw4ŸÖAÄ"žAb¼b(J2:ž!â)q×^ºã”}™ß“ò~î&Kœ—|7âÒ¦“±Æw¡¬y» {ŠWËD"V@ˆZ ø%+$å]»ø‰ƒeÍÛ³Ïâ/Azyê.|SM˜@€†ÏØllj|ÿfnŽ ”XŒäS^ºlíU÷–0ø¶‰oH:ãoÕ\Ÿ—èo› î(o×òÅÌ™ïvQ.Årèû¦,Ë®š5¾nØß=A¬{–·#] ç½z±QÄÇC¸ 0eÛxÖð”Š8°;>y±³.¢fì¼÷p ûïãgñCäØàt}Œ'‚ž >>#º¢ÓyâOf´Šþ¡&Ï‚‹ý æ}0r–v×n>’ 6Ê}¹ÊÙ{£`âg‰ä–ÎÛ…Á óÌ*‘ºXR“ƒÌ‹½Ë¢¶‡]žÃ«ˆV‘¶ŸÚ„æÎ‡í×Ö)wj9[£lDLÈ&ÌQu€z ÕͲÄ{\í›-…e÷7N%Ò4ò æàúWÙ€B\ ~at²:NŲaìUr껼'O¬_4röd>C¼õªƒq±ˆ.¢j“Këûm«©¯R=Æa¾8¯4Qæ±dä^hÐ ×òºØ,=𬀥Ñ1üïwƒØHÖ¸öìØa-†Z*'Òß{v(šàæGÜÏÊÄ,Û¹,|ûf>fbxÛÑgÓ›Ùd¹‡R^,×½•ÏYr¾¥K‰£ƒÈ‰[Çk½öö£ÀÓkìsÛ¥a{¹å:ý1ÊÆTRÍÉVrÛ „ñÕ7h\~uüæP÷ž]»´’;Dqš^7MƒY¹o!/&Žw{¥ÝŽd»*2±Lw†|µUÖF¸ì2Ë ŒÇ\Þ«:9¸j¯Â%Ê’m~¤Qd4É.w=K|›æÚÖi\‹­)ÄLê×›*÷Àk1s¾Û†ÍúÕëˆE¹ïÒœäì¿RèqÊ÷ÝÆÁ]6§äÆùìÈlýàI5Dê‚úKÉM6aĦµö¸[;qÊ9‚sëÝãnÞLÇ@0<ölØY4s\Fã·g×úÁÌ-9¤ZÑ X'{P[™< ›Úóî¼yR¡kÝg3U ýßÔ%9»o{‚yµÞ _­|ѯ°uÇC,°(é"{è$|…c.‹ï³mÜú–{;ò^¬·Þûæ]ßpÈh’c.ƒ8y‹í–$rcã{ÛH·&¶æxÇöDÅïÏól†nTDNrÄ¿«æßùDoÄ]-ñ#¶³´?DœV‘„7Ú‹\ ”F¡9œ!„ò8!%šJèÙ8eG±äî‹e@sj‹ì†­”^=è8bñf/ ä^u C‰û;Ü7îõÉS–^5nÜNÁˆŒ±«g©ñ6½çø0æ…äÂÕ²ïËgÉÛñ/¤Ü»;çlÝóÜ'²r¦«¨šùŒQ4±éíۉСHr¹Rÿ«bRúÃ^ˆV ÀÈ ¸®;A‹È–ñ¿’’–…æù[µ*XŠÚî¥Pg¬ ÝWÍ‘ˆÆW^U4£U×UÄÁnïM6Ïžã“ô7rª¸£;Œ†U$뼘¯eEî¾÷Ç]l¼ÆKm YcæÝ¶Ó~…Ð,´}(‹ótàM™[Tw ØAÍ÷[ÄÆˆ×II¨ß–d=¤…wD¬»Ê-@ËØ˜»7K ®ô5f2K8=œðïßðWò“¨é5#ï¨Ôã*HÊc\ü‹bÝø&»!+l(œJ¥GaA¹™Åa÷zèé™Qc—x­Äó¸® ~B²X‡fD·|P0ŽÚ2LŸ¶UØŒŠywP4d§‚°²™e±I£›¿ Åóè_}sòtš/ÝÜuW ˜oì§+SÜ!}A9àߪò\‰DdH Ûóé#ÐÆòU>âñ£·ès0nªÜ]üËÈ[ÀtâžYKžÎqT!§ÒêùlgóºÖ‹A(p¹åÅoƒåÏU|ˆ "c;¬þ½…&wfÏ,ºqwÊ^Ù¨ÿŽ‚ž {v8Môθ®d|¹]¬uIÀ½48N«YvÐê2rÀ†xbœÁ'#»C³§%®b¥L¹ Å\Å”{ù¹“[¯RF´ù6ku„&ÞD<½_}ûKuâ9i¹¯·ÉrO¤Î¬;&±!ÚKmÒÚ6¬«n&VÝÊ@,'ÇŒñ6„“ɯ{GÛ¤2²“ƹyòÁÖøC¼I­¼ç^ö‰¯9ºÔÂvŒ«Á-ò,8@4õŸþ(U6@çuT°vÄd°vx•ë®[ÞŠùíj\Zçà8á/+U:æ2ÀR¢¶þr,_±ñ˵OÅoæåWqŒõƉ‚Wzí.fþ@‚½­ÕE|tò90 dÿHN &PS2Sùux¯¶±i<Üñ>´¬WÝÅZƒ97ö$›W­Âˆ˜ï ‹YAËnÒiûÚä‹¥%ŠŸ±Ô­xRö¢ú^Ì‹º«Üâh^Šs£m{²éÎ|·Â3G{P!€Vd‰û¡ èëƒ0Ckjû¹ÕGœðžP¥U+˜wL¦ÐÛ2QÜåy+a‚;cunÈ]~ÖŽbõ³587Xþ½ì£üªwˆæ3ã8íTŒW|îè,ôȘ8†uíÝ€Œ­²¾eF¼;Kð­°BÈy}; âè霱¨ÒGQ€=c9f"‚´Êq,=À²ÎÚD¨¾Ç=ø»Tà¿yÔ èñb&k‡ ròË÷}¥až÷ØÈŠW‡VQWj©{ãw‰Cã7gg}5wWŠoÀìÄÜÕÑÚx0ÀOªi? ò®ÃV8¢%ñB¥ Ÿœ¾[‘úØ÷à+¼àõ|وþ-i–ý/lÈF€xúäó]Ôìûs#7‰·x¢Ÿ¸ÚÜŸáK^ßvêè`öpZ„Ù ‰ Ø}šðÚ =úØ¢®+6%Œõî˜ðø+XbteàöÈHJqšÆ=m,ÕRVs7L‚xÛãÈb=WŒcvÐ<{Úa µ'éê.$D _-mMÆ À‘V4”káoB2£R°»è§ ø¯ŒY°?Ójo³> »Ù‰DÙ‡8ƒP•K½#êFcÜWÁXÊã·¤ú ˜‹ƒi³­æâ›…èwxJ–ôR¶´*¹Ʀ Ȧ%[Q3 $púÄuÀàlG|r»‘:–™xí™Ø˜z³ßv;œ´šD7‚ÛPҔΡI©Ï¸Ÿ•Kún0b¡¨¸áZb°ûÌ sÛöŽó|n>á"@æP+Aq|wŠënëÆ¥ÚUwaÁ6…‘ ™²P‹á)®˜W\ï~O—¸Yk£Zø«ðì;«@°±)Ñ@“îá/|ê–êò_$‰²¾Ñ”3ŠZÑ7žîYx3"KÜpæ‹é6”81û ‰ÏCîÌeù4Šä§Ò^¶]N¶ ôj\þC?ìI¦‡Ýðð„˜‘y¶Ç ÐýieIþ¥Kâ¶GÇŽ¦ˆ‰G?_rû•ø!VEbË'‚‚ȱufáð«•U¸ èÊ‚§™‹zØ;l3{ßTÞ9Ëæß_Ƴ Ys3ý±Šž±z´QŒë,’ÀO8‚Q .”¢)b×}`ÖD¢P »ÁBÄö‹šÌþ+¸’›V#L“2X ’bïÙ(½`»UøÔܱ(óFœÅWˆÅ7YøK̪hÞw”Àr#‚m îØ0‘V4}«+£tí߉աôRš!óˆYAÉGÃÃoùsºëò­æß]J& î¹;vž²Ýïh¤™/1ÏÍž°–<…‰1Ìkžg1‹ï».y?è.qûЍ´qþ¬bÞÌÜàè[±8Ì«ÏÄß<ÐìÙ#žd‡ù”Þ~J7D,OÚ4ú7=ÐJ±°ó\…»bƒ˜│ƒ·2Eý&²ú¼®B“Go‚¯äQ†mÍs¹î7-Ù7ŽÌë@€íów£¾™ ïk±IîÅc–USÝ’ÏD1Ù·Ø,ÑÄÆ¶|…l¨Ïož9ö¼™7ÃLr9×yyãÝ^™ä1ÞØ¾4>~y ³,E Ù¶E¦Ü%2þçCFߊc9›—ãÕljÕ~oœZÚ ›H(Øcy`¥…‡ñû7!“",Mæf.àÜÔ*û›Ÿ½òËy-Ù™fú››Oì;cÉ‚Ic‡¬u/l ¬q8Q§hïW†ûü?ûŽ i,à úlY÷¶ú¤‰ θÐFS†Mœ´p¿D)íÅ+-ÑwM2-ÔæÆ·1Òöcç-q2Q§— úwd§UJÌŸª>½¿DvOü„íжš`¼2Á<ë§<´õôÊŒywÔ©ãêÅpX}ö«r0õÐU ]Xj¡)’ÓöŒ"â€Èš½rhX©‰@ï½}3±ð¥V<ó9ðšØŽÜv Jæ 6%/æ[q;zÎñÛøKüÍ67–Ž‘ŠõÙ|Â,ê êšä€»ˆ¿ÉLDÑu¾}ðwG²úaÑ––ô3Ùs?ÃCÌG\œ’Ai¬~Þf „‰ˆû™­Ô±£Oñ‰vêÅaÃU½ö¾`™¦œæLUr•â{Äÿ¼ ëÕèÖžØ5ðo¯0ïÅ&;—¨|"þWDã\‡F¶‰¤N„õzÔ  ígŠNüŽ˜ÄÏà“ ­YUb©£æ3]ÅìàÌ…l, &š“ønÈ¶è¹ NEƒx",LÄýñ¾™¦YY§D&/ZæOiÉñdÞ=¥¤°„(I¦gF'qЕŠÕ f‰Å½z'fÌ+ÊɶbýÚY²îéxòmºUomÿáPãsKìå\öJEWV÷ÖÝÚë*f&¯ÞÂÚñŽ“-©¸ˆ)T&µ] ø$ZÈÇ®ÖôªÒœ“:åÌg”'Ðj‡ Í „º˜b è‰/câàIbÊè'&²'ØsñëaÓ6]1ß6Jœyžd&ŒéK«nM™Ù…O»Y¥¿veŸ!¿_ẋzÆ¿ ÄŽg­qÔƒÊzÂZ‡‡ “2¾ÑÉÒóT6è ±.Õ3wY¯š±=,4Ûuò,ˆøæ¾Ö:f ±óÂwe—ÕŠ]¹÷`X5ºÙËÿ#Z×ÕÊÒœh›_  Yg²’ïYº)ܾjÔrqä–¦òî.òÿ°þ[llÛ‰ut½tÍÇèz¡{2 Z&r4N¿ã0ÅÔªjYzt )¸‡<Ò [Ý`=r4¢eëÔô¢ì^àµhD_²P•{Ç»ÚëÄä;Ïš8gz%_™Ã γNÕjx«¢¡¿B¦Äqæþ˜ï¨|½Ÿ_õ ¨cÐqz¶´+Ñãß=â8«UÏ’IY±‹|è –"ïQ(˜\ öLÔj®˺@1ÂxÖÂZ…vÔ³{pm«2:; .²¨h‰‰@lž »»f¢hà+Q¶8ãèQós•÷oÛª‹jÀ<:·D-…özîc;@÷¥(‘o¼{vë^ ^¿ªßaËÕ౯åI{}‰ØEV€5u.‡-z`é­ßQá~ô†c,( ª]»Ñ‰icbªn¯ÂÆd8@µ`'¡9¯¹Ñjþ2;¹çöK*?îÒ·­O®Œƒ¾µgÒÀÓEÆÔµsWñÌn᨞/G?·u™ÏœÏɲ2ȵà1ê274ÁïÄtœýï)oq½ËãrÀìÛ÷‹§Ã-7«ÙE¥3¤Fáå–VgI;ùÅÏÄ$*òÎ][€0 ü²Wôýª€ûÈáe^À–¢Â×7Ê.þ7êà³ :Š`mÌ(i©&ä¦ùTF¹•TÕÅýC?.| ã«ãDF¾¨Ï ÇÓ %]ÛHím묳¸ ž]³ðÝמÍ:êU@ #ZXõ2ôð·çgªë©~3¯úæòv±Åó²¢ùZàmÛÒ 4DØÿAç1ï87^«¥æc=ýÑö]ðÊTYÊh¤Æ¸&¿Uó¬P€kýC£_-™ÃïäÊ ¢£³æÙÏ=@ 4L“ ^¤æ¶#¸§Ú…Xè_tþVÕpp R ®–ŽX1!ÖR7‰¯ ) ‰\@su_{PáTð ©jù:ï;¬*ÚÈÒŠª2‰¬PqËAµ¤=c\DÑ-[1¡nÀ[D üù±ÁUY2"þ‹Bš©Q¾£;ãâõFtôŽP‹F4½è z‘_æû¬:…E…›bgø&ù¿S½æˆï¯j}9{¿üuÎ~–"!š´½êÄìúªR LŒ³?UºÓÚS¬ݱ´Ü„mÌAFîw¼vmÛOµ»< §›Õ³8Õ¾ÀU׿îW«>üUUËXãÀ48`w˜Eâ æ6¯ƒáØšhœ€¢Œ;1…ßͨøîyåvCQ¢R^î,’ØL[ëW=£èñ=|õÏÎѕֿ¶x¯¯žoÕKÇíñ-ªÏ?ë>|‘å]ç†yM¢zåÀ5£MNõé«´ÊKà5õ˜_QŒœø6R‹L§CíÉx_æ-O/0ñÞñ9­7Õ=dÁ‹¾]¥VŽ«T ¿k9Õ'‚åü=÷Eíu‡òÞÃòÄÖC,˜Û 'kÇÖ<ÆYŒ¾——;kœÌ ‘ïj>0)3½m}²¾`ñ'´ÚÜì^¼²ŽZ÷Wµk}ÖFÑù¥®^ÉìûýTßvœ~‡>U½Ïò|S•ÿªÏ£R lyÛÁ®×Šø°é>~…þê ™{0Ç«¬fï,Ç56sÇ'ÃkQU²¸D¾pY­B3Ó{ýþªÝQc9ú+½¦=_î+©’]®}çЭYÏê‘çaÛ¯ôôÔö‰ÄǬ90RW­3ìÎ‘Öæ›üOˆ} §mì†XDn¾1Ææµ»¤íÕþ5îWEIL¨é´:W…U‰%ºØvKd%žu“I«*qû«ŠŽˆ‰qx†*È=t³ƒ¹^ÿÍ]>Koß;ZâÔwãZ]j?MeÈêÔX;ÊT‰vÕœÐû€Oo1£µ|²åØ¿¿í)r\ÓŒ ƒ×¶¬CÝѦbÀ¬ü©îÇ:wld3Dz~«òG?¬j-cêÙjð¥ßE>Þ*Cã`î~ ¾ý¨¾Ð¢WFÞ»9N&'þ’3Õ(`&Üó>eOõŽýKÑ¢£Ô$·”ß©\1ó×Ëfê¥yïhúÀR"ëÎXo»Û«®æ«}Ó´<¹§”3YŸ8zx,t#â‹ÄÉi>]H@^} ýíîŽðð‹½æöÐÈ5X”~Gß6PïXáÊ4lpEOXé9Vùpn°4ÇV¢‹çë:˳ûDæ"6T¡=©ÑGv¦>ßïú5}žž6|wUÏzø>˜]Êë;Ñ.Péå³ÝÄ—hf”£^Ì[N}»K¯Û H†„éšôbKoò‘1×ÖÁÞë®zàã*™æ;jzäG0l´Ø7°wr£(^´ÿr«.~G_‚®˜Ö6ûŽ~mzÁƒçÐ V#r2HÒéÁ~…­¸ø‚C¦·¹­"³ªz’¿Á޶Ÿ.—[Q© ¸#uì<ÔTs—äsï^{hû‡¯gD©Gï"V]QÐj 1]Ÿ±ýÇåO|súáЄìL§…ŸªÎÂ6ŸžÑo­r•n 2Bÿ;ëËúáW£ŽB'Á’àG®ª²ÒÿO|¡ÒZ`¹¢Ç>-«TÕ*ÕC;뱈ûiíU_Ѱß@Ä…ÿ>úõ0rêhð~Ƹ"OÉi;â™_uÁ/΄ÙÖî*<µ¢òÇ@RRÁ­ç>¸ÁêŒâ‰µd Û.~pΰÆÐj½j‰‰êeAìlïJƆ+QNÜövŒïÝY³¬\Sàó·î¢F¿yäSü²¸êÚ¹õw¨Áò 5ÎkN«*»ðýgµ÷fžn­GïK–ņŒËN¨(%öÍ ¾±¬H~[q&úί2XÕjÅ º‚PUíÝÁ!zÖY×Çï‘›_èa¹‹èru턎âô\þÂz-¿·»z~|®E/§¹£’³=R-=U„’}8hiù.Œë­6B7<•¼èÎÚ¸­ÿÁ¯ûÙQð:zªoÁª‡éU³rÿ«¿ð¯`µ^ñÃéÑ2\b©vm¬üù½àšþE¹¥Z¨híSø=ÝÙr÷‰•pw¾Lw˃clŸD²=‰¨8Œâ/¢ä»Ëv¯ÝŽÄB®¢Þje›¬Áºþî|ûè‚{®©;ç·Ÿ…‡Ô öDä,ùPã<Å7=áôÐU#ÂOîôTE>#ÙôáèIåÅ®fÎhùœ³Kì»É™Oõ.|ÊkvÆ(#6°‘Ü‘z*ø(zÂO| •™»p]°ýB•ˆð½…7×§wÝ$îr\í§ŠÌÑ—úÁzŸ\l7ÄÈì»~ùÐ÷(õ‘õ-6þËÈç"G­Ï†<>øž¾³KNl‰ä»£=:d'À·D+°6âè#²¬näOÞKÙCG_RÛ²sÌ??² ÛÞ¥^9KFeʽ>bµ©ógÿ%r4º^WŠZZ+5BKþ}âhJ®Ížœ»pÕ#}%§=º¬6I]$R¤Ý%@²¬f‘™æÑ΂J /›iÊ?H˜€f¢¤ôdñÚ’º ÈïvyÇ"0ލ'ÄSø›šÐ%Ú"l÷|þæf  §äSÒ§à÷"ìGQíkð'ýÞõ;w„Šç-„oaÿpÊ)’éé¡·`’ÅOÐ% ¾)ÉnNu\xÎÒÐÒs²ðnȰ Mªî- ¢'¾}ŠLÎÍ=+Ãþªâ!‚·l¨öøê0ï ׯ˨R&dƒ½ßƒ>]îqËÁw'Ø<œ¤ø)ÅcßÂÿáÐíKYxÊJl”#r˜n´ÈI}#g¨»µ˜™ žç’*WÆÇȭضAFX Â%>‰U›ƒ>±.䟶çï±Äš¹)ZÜí¡?oýŠÖÿùceŽeéåæ ÊPË_à õØ.ÒãôÐÛj99'NÑùW¡WU—°àŠ 5@¾Ò›3Så.Í$€| þÅoL‘¬±09Wú©Gý>k ¯u” u­•ÿ½ê¾và]ç\[3=÷uÔî’²*ïhò§Røv%Å.ÉÊZ¦âÜ U¾]k÷C¾ð_0Sœ–†ÚÈ•×ÕÔ4èÂÍr—¾áØáìöcÉ7f«ä—¢c‘¿U°Í|²öíx»gJz.úgê½Lˆžš^ýð÷f¼79˜N"DBx¿­¾Þ¬ÜH%ôÏÇï«’ÃJ% l•7aR£døŽÉÊÇôEZœÓ—ïKófìýk_‚ÕsÚRÈÖ!€‹Tˆ·‹ð-<ôü¹¢jèOzðáèÏΪÐqïåó`Ö?í: ¢ïô'Îø÷ßæ)︟¢#=Ô voV`+ôÑ: +롾ëu¤Às“O®A˜jê¯ü˜L…†Ÿ'l¹«’–÷#ýœó“ö¾ÒºŒxðF‡hñäì6þ³ä(ßHÏÞëښ鹉b2‰Ñ«Ÿö¯÷wP€+ˆv ¢_‡c/;ïȬ޵.²ã¹ýßvsNzî;GŸkT}ÿ¼ÇLÿ»vç: 6¸£Ã9úôVëˆK™õn2&ÊŸ›¸‡ÆÈö¬¦ðÚ½©þ¹õ¿s7ŸŒÏ'>eìzÚÊu6ý4s^ÿž{eÄfíâ~i­ãÓ·(ÑzE†at>?ئ%7¼Iòÿž82­ƒ^ûWÊ™çKâ|.r$û¿MÿÜÿß½âŽT—He©lÆ{ÜþŠÙZÆÏ|w<·žÇª)W †'Îq|îë莸OedýÃõ+óqËR:Š mHüš}üexâ~ö¼³ÿ`‚ñóÜæóً˹S,>7¥ŸßC8~ø“…Gü2—²7Wî# ´ƒƒþ¼ò¯­ kϘýÃ~Ob×?»Ü…Ò{F›ɉçb—¬ärbWÏQð¬Ä1%ºÜª˜÷*žíó‡^{FáºõköbZñq6Ä™ß,eHsc)ªXTB®û‚£1/°+Nû¢öß;—Ì5Qx–½xË|M•IöGß%>Ù›æÎÍ›.ðW‚8#à}kÖ¨ ;9JhlÃÿfw rZ,¶à"òÐN– ýÄõ@CV^ãÓ®!³s%Ú¡8à6¸ž‚Gõ¡çÁ#”á«[åXö7úµ×SP·qTݨ7)º6Ö\yëÿ±È¦kí¸z©Á8Ñ•;f§1•áÛªËhvcîh¯D'/(äx ÄúAÍ'‹–̦W¡½«íwE¤e( ~&g5Î ÌèäÍ÷j&óƳ(úx%º¥¶ø J³&ÔžÄÒ?%ü;ÖàÆ·Ôýn%üg§ß,MOò»Å¦J@«½•笓ÏY¾XMdbó9ð©û¬R7#Fa¡ÃŸ!~õ­nVãéi¹&˜3ê)ŒHüSÄâˆ?*ž£0N­™«ïfã{mõñ×n únN¡­âp#¬úgáß±Ú´ž­^nö;ä*ÔoV­ë©·¯ª›²úª«§±=Õ“=`yL5×ö]n1>ÐÎ{n6½AžÏâýD41÷ÈûþÞû/L®XZñrq%Ú.ûÇ”)n¿]²Æ!†ÈŽ\®»y¥–v7ehS²A‚‹@~m0º2v˜2¤¾J¤7AŠìàCPOóGƒÆ ­¯/{)BzÛlüQÓ"ÿw®øÌýËã X¥ëW¼{Û^Id½ð¹þ[½ôA7á;¬>¯mÕeF’u‹ïŽYKËëAeĈ>©Ä]¶~xª¹BÃŒ-bûÿJXReÛB‹<Õ³h-y¹ÙÀÍ¿‡qÎÍÓŸ^QLÙüC.;Èr¢a¤?¿j¿V<(U„Ö»«${X|°á@‰šÒrUkr±„~íû^Ù”aDóq`³HdË“6T[̽×{^7­GMXj€ÛãCͪQ—Qšñ ê¢0¹;ͰcŠ}ò-ÜvÌ%÷fS¤ïæ/êèy2æY¿*ùÅîKŒI ÚÎ’,Û¤”Áçø¶ƒöË­ÞÌ~-×PrqRì¿È-d¾í©r‰±ð¿±*fh#——bÜknT'L·+ãa²ÌÂë*ý2åÐ#þò¹îmõl8ˆs0ð¶½êÄa,«žÂ®¯pêšrÍ8Ô³{3‡V?lSò™âld²šÙ‘ÉŒÙæüMÅ ‹<³Á˜1÷–Æ{<÷‘õK„ƒÝð9jäíäÛÃÃÏÁ½×+ÂæÝ½sÿú|ÿ6Á¦»<ø€f‰ß÷n%“Kq4¶±~Ñ J•Dœð\"ú±Ýbé½ö€øÈ»˜å†ÙÄgý‰¥¾º¯m×ù«åÏËŠ3–XS?´vüLflT¡bí±`ÕÿÎN|ÿÞÜ^+U=\e_PÿÚ9{½ï‰ET& yô©“~¥ÑÍóï˜lõ ªªøË‡mHӪ̽¥…SãY],ÛÝû/Ÿ»2ÿ¾½ËW G<6*¨FÅ„«¢¸²ÊöõHG´JÇ—,A³÷k'–µ#zïlêÝ{1:ê…ŸŽÌ^@7.×ØÊ·±àÔ¯jމË1 ”åW}ß*´UºÅ|»Ì!1¯mLzÚÁì.²ys?>ë­F^Ú˜Yyñ‹#éç¡ØY6@m>ø€öd¶!ÝéÔ¶ât 9í¢aŸêeO£2<µ¢sü6[aD ñ/r~ä~ü" Ño?ÉÐö§XÊçãP¯({;׈àqŽ4•Òo _ck¿8AN…w}F ØÃ\CQ?vhR¥¥ûVô¯[Ðyr3…qêV‚o+ê8Éп»²C™ûØtä_Œ@2»‘­´— ”F (Ý×Ω¦x­PNîkÏFégôâÁ¬m@‘{lýÐÚÑMbÏYòÙüö¸*Jëx- 7öBŒ ÿ™½¿ƒÙ±(l…!ÖúÒ¿«¢/Ò£Ni~4+iS+ão|ÿð:#1 ÷¨±–lX‚߯CÑ&Cöo£Ëœhö¦í±Î¬g=¨°­«È’kkÙŸÐ5&.™Ù»Ù«Í£v0¦¾{3ûC”й0˜s¼«ÂO”2žSéÈ2«o>x Æé™7÷¶–ŠÓÿR•ó±›ÄÙuWü mÔ‹ºsøY5g׌‰yÇçë\,Êw¼lhÇÃ1î]Œ¢÷dœn\EUœ[>~¥¢ÁÆgÔ¸dÇn.Љdˆ[h‡·þ«…W´áaû™+ïVmŒø¡ïG¦õÔ-U“%u¸½GÔ`ö?žý÷÷¥àbâëbéÅ‹²=t¾_'o$Ê·ÒÍ uÙ¥þL¼ê.§òæ(†Ú`Üâ5·Ê…ê@F­ÙVFfߨ„oV£ß8}":"þÇκ²Ùo5žŒ0J¿lÓ»vüÜï8+‚È%2:δ:¸³EËÀt_᯺f›šx©¦‹Ï,°Áéï^çµ¶ïãôC#Ç WŽþÙ£hFé¬~úuv­Åtê,Fºì8ûÄbÍ81;±Z27ï«ñ!ô'^]²r»¬m°~óYkë­\œGÞÂóÆqÁDª7 LÃöä¹—k²a)6‰Å«¬®¬^¾ äÍâd–ŸÐ%©ÇÖ¡\±=Ÿÿb;k¢©6ÁzÔÉ{TC*k>á ƒë·ì¡‡¾ìsª»JFLð^϶NëwÍ ó¥íKé“1M¥ePQ¸ê»Ö1.1Iõ‚ž"â± Ý-+'¹ñ^ã[¯Yÿ›9Gnn²‚›P«-üÑÆÁYi3Ú˜q£ö§çÃedÛooûïã”ád`>ŠœZ~QùÁ4VÛã‘§#š›[3ÂÈ/*5xоÏU/ˆù‘ô¨ŽòåKÃØi[w1¯FçJ掞Vj8ÆÊ‡ èìÓ-Hõ¬×ßÝGOŒÀ¶Ÿ|.:4²¬Ôξ0iƹUhm¯vû°Fd­Cüî³0@ED×4¸fw]»ÑSU-­ã˜@1ñq}Yþ'‚ÂS =ØK5Ý® ðÚ2ýð «ÙAköÆçÞ™@W+Žg0ãr»eûêf–o•*Ü”žÞ7¶ÅÇÿìcÞ¾¦j®€j x`Wœîžy÷¼¿Z‘|xí¼±ï«pµE6ñŸîLJ´AíË@»uâËõ3gÊ“+7´…ø=£´ÔŠÓГ“[*¸RÆ oÇnëðß8¢x泌e °DœÄ‰Æê×ý¦#’ÝÂkøòšö'2ó÷ `ð,؃î½_£…íÀ¼'1<5ê)>›n§òf¿“5ŒÒÀ8ˆ Ý>°F^’7°|æj+ü—4ºâÏQ=¶u2ÙXßÛ[cx/uD?µ±1••Y?5dÅh?“ª”FétŸÝU[˜ üo´;hðŸþ1ÛjQ$㮬»»~¢šßu︎•M#CÍy׳Ü,Jãùê&b&0…œ©ÕÐêb0JwôÔ%£z d5¬@õx±VÛÈ‹¯ì±¢Ëê³éF,gü™q«òêíÅ*öTU(næM?1è~ˆS̈Ô÷+µ! |×·•Ñu(f6á‚™ñZqæñ%,’ñ¡ý¨W®Å]¹ç‡ü0æ|©è2ÚÈ’Žâ®µ‹f§^lš'6yÖ<Û¸ÿFÉ«<ÍC·b¯FVÅöxPIä5þù\Õd‹Š2ŽƒÉz—}.ÍcÑQoÅjT­/c¥Vòõ¯»“Ïr÷ ñv|¬Ù‡M•‚]ðú[Š%q4ŽqwbGÛ‡ð<B4sG8¹bÕ ¸ðªxØõ÷ÇY#ÖàÆíÿnÿ› +AÆâLªõ³8ÀéÓöí´¯`¯_OR៘÷ª‚85Nqik8Û?|Iß#è»ÉFY!pUIÀ¹Y4liBïA‚„ÛZEO! ÑH³Ž¨¦Ý¥(m¿MûJ€I€[ &¡~[’)@ˆ6eŸ²pÖS֑ؾ‹$g ìÁ3ƒ¯Ð½®1“þx •Y"±4K`/Ë%Sâ.aO)‹°yù¿Y‰qㇳ]”à#Ì v×öªj”A´, MŸ±Ó3ÎOVL¸Äô$]ÅQŒ8Î!v¾OÊŠo64?ÀÕír”ãºv”ƹˆå½Y&%`ß"ŒX>¶JZõ©¢ˆ¬ê£èâÊÖUdÒ@dûE. ³‡u;0‹mP„§õz‡V›ØR ©4&Vh{.ú}¶té—í*3jm‚";D½Ýù÷ï–Iæe~³ËÅ…/ÛZÍÍããøÖئzü¶4§m¶ßQÀF$1‹n¦3ocË·bØNó–ñ·vF3Ö_ØðˆìÞ¾CCë:Þœu1åv¹šb¿ö“XÛÈ¿C‚¼l©»Jˆ¸ØÓœ÷LÔú£Êß)‘ïm—N#ƒ¨kbÚ¯ Xd9Õ)‘.= ½±‰*¢¦u’IFÍØòĈsêÓ·–†)d@î¸W/ìj 夿{?«?o¡ƒT©$Ä.Ï·ï¨L²­E¶’¹m¹­„î#U"1ÀìÙ)høÒ¸¢;1ªïõVYò/c°”ù FÍŠ…Ÿâ™¯±ÿ|KO!^y·ï–­Ð8Ñ?#Ö·?`´ÔµgÌì;ñÛli©*ñºHuκ ×0šÊcïôDþ’šƒmjÈ”Gùâ¸JúÛhs±›Â6 µ¾®à]œXdKûnY6Ý»y'%š1øged=;׆Ùw,=ìE‰µ3Š8èúœÈ±­?jc „8ÏÎÖݓŕͫw³ý Ven±…\?uTÄ=‹ù£‘3ûŽ©8•Ó(j[ìÙ¬V\ÆYYÉò¼ø¾*Šû¸ ëGFλK%ÎЖ—ÚH,.!:øß«Dþ³ÌÔ–`*¸‘ÅNü‚ÈpØ€×l )y]µ™1?`W–mgè{bžŒ¤Ñ@>ƒ\™ tÚ0}ã³ÅKOŒQLJ^oGÜK{Rzúg1DS°±Åá}WËx£Ì•e4Ê\7o)o`j|HI-ÓÙ½kÛg£=³U ôä¦Þ«¾Ò oÅwÀ\yšÏ¥…)¾§|cùnK‡ 0ÈF{góáªbû¥8úJ翊šÎµÜ]VÉ,)ÅÆ†TpßVÐÑø”&À^ä»*˜¹žÝ¼˜¶F½Ø”ÈIœ¢–K«|î☋èoð„:ÇÍðŽÖƒg‰)y9¥z-F´æÖžn ÉVçU›*©GXî¢Ezó•¿Dýôž|,w< ¢2\Q_ B°Þ[9ÞfΨ35·ÄUð8|H>c)9]ηÕÕ6‡Å#Z½½™é3½>ð×f[KDwÅ­ª«ª‡f.ȇèµÞ¨ˆo6esÐ2˜]dmQÌá›;k›ú[uK°xvÛ6[¸r8J^̃7¬Åܧ|3ØÔ)‡È"ÌÜ c\UU·¬ kA,ÎH~&ñ.»1Je^cÜãz7~5ú2 • 8ƒÆy­}˜#[Èê02"ëçX¨2ðñGâR‘õZ¼­B÷+™ KƈQ?pzLÞÀÆß‘+9â¯RL¢á•qtí,SÀ°anA[,Ѝ9àP—uQ4s£FS·‹øp7Õ ¨!úsX$°z²è1e–5GÅèÄ®kJŽÊeø¿m#A÷^Y4]îð;È¿Y¨_~Dãw œ–"Yâ@Q™1Œ[¯Ó´‹QÄWoU.=öRàÀˆ#|qÖ—QÞUJÆ$8×ÚÎqhô£JWûX^âk4s¯ù­Ôsmߟ\h?”øÈ˜ºvöã»aB&¿g¦ûÝùïÊúÔ d‘Ûr{±-‹!==Pºf°HiU@§oʰÜŪø`[70s}|ìu¿ùìséÇÎáQù±0 ³.DÞc3ÿàZðÓ2掜ÁÝÁÒ'U·£aˆPG÷¦güÜ»‚CâÜíŒ~·þÊÖänä Ë]bRö“8!8"6N0x† ï]«öØ` ÖìÈ}ÆÄ»s˜h`“‘ÌjµÝý%ž¢ÒUÛfÝ÷îŠÏßùö•œÙ!¾­˜ÿíE¯aòzÂÃbv(Ò×Í-¼¾àìÈä±v¾Žq°eK¾;ßñ iò`CqŸÖÔ÷9£µñ}’Õò,=Óçlë£r›zž~ó+Ù…í> r?˜F•@ ; |GvØË(¯¼¼ÆÚg±mËL¾w…ÇŒUwïÖô2?ªlŦ=뤻*tqª¿Z¼9˜ÌÚÖ=Fÿ*»a5‘Äeô@VôbœU!æ=ê5y‡>؈ÚBåªÁ­Í¢C#%*Ý…Wqú¨ý5W²_”=Èo³Hœ\œ‘•ºÇ%ɾuâ¤o_Ú±ÿ¯#¦Þ»¸ÀM—ö“^ª×bs{K_öýÚÞ C´`Ujö¦ú–—P“<ý;»«.£Ô"&&øš ç#Xµ,"úÛìÐ]Wd³ ½ÔIñ½Tìü×—ûUŸŒyMpÛÚ=d”Úk×ãüxŸÞ`”‘lj¹üuF¿ÜG3¸ïeeA^AŸvÊ­ b®“-§¾hÉ|‡#îÅãD\ÙÚþ?ªßQ>ñ9js]œßܩ־=ûþåŠLßúûm…nŒ²6—£PÄÙœýKnœ[ǹЉ¿ T£>d­[Ôs;‘ÝÅogtœ¯"Úµ\gxkí^š_Uf}¤Wi’züÙ(Ü?×a†Uzóãé#¾ƒíÉ[¶–bc_ŽKMÞë˜Ìê“õ$Õª5~™7¾y7ëuëR9 Èf<£ }hY•ÊŒÑÁü®¿9:_BxçÖpq›U\wk…Lˆ ÍvSR2ô½Ç=O¼X×W>~?Ù%?,é¯ÿØóÛلצ¼AýæˆÁjPܪמÀï蟌¹Ç:ñ€ø)šb‘ˆ 8I0yƒ˜²ÿ1X£¥89E ª%:Öª…§¾ÛרÛ@ÿ…y‹'^Å\ÇÚÖ›21ç¹À¢Cؘ®Š…g*?ðû"ê•î¢AàÉ* ¨„Jíq§‘w ¯  í€É t.nðªâ׬ïNÕFàˆÿÖSâ4žÄÏtÀl+!qzŽmÉiÅʬè'‰Àz˜_Œæ·Puaik;÷#ˆöß®ý&–"Úðí“c™;Îñפ:q¾Z$™mÇÎSÉ…¬«#çbÍ»ñÉŒ×ØçXÿ绽:éf&kÉwãÂzŠKrS¾§{6‡Nt¦U9f´~Ô„ñDrô.½7îœéÜš#NTMnv5á1òúŽ|7í÷€0óT1Ì1´Ðâ5“×ÊÈö©TÜv*õùµóš_¬Lð û¡ò†}ªðVä›bm“XÏË*©õ“¬û¥·½6‘/¨ï^ Ši1F×l»966«.òì¡O5Óö¥ÑÈÁ9‘!ÅzºŽ9“J”22j% -¢{ºØ0'™Ü ñá÷ÜÑÁËG÷±³­Å>.7ö?3ëáêžÇ&ÄjÐ>ýàR¯7Z@wÑÀ|¤º…ùñÝ<˜DÖœ¡ “QÉ‚»p§º»Lß½Vé»&¬b]Ê,ÎfzV?Ö­Ò¬8¿Ã곤±!ŸLÁ¶f»U”ŠûÙkjè¥ ‚¨ù͵v".ÜAOk²!wb lËZEÆz;”3ŸkcýÖ:ܘš‡¼}gâÈ5çõ³ãþn2Ì’÷Àz ­ìUð ̎®";J”¶w5L,†Í‰#1œ«°‹ÝMj6tœ Õ@x2NœS?¸Bj”‡âZ\ ^Ø—NÔy7>Çé²’ý9{ìv6¬ðçF;ÖWÎk–~ j¨KõcZï-e€<®Š]ð÷e]PÓ÷«'oÛ9:Þì>¾;gȾ#¾x¡¡çÁÿ†uÌçx¬ € É€©”Æ® aµEm‚WÆd¡i|×Z¶´‹–=ÊcÕŸ¼^ ÌrÀ¯jBUV?ph$³/Š8 B'>A.k"W»¢¾µ.«‡]Å ŠÃüoª{ë.¬\Ó䗯뙞ÜP’qß‘]©…Á8[Û¾•CW¢NÕæ¨€E&|vÝGÅ¿ÄIÈÆµÕcç Мþ;ÙÍØ">8‘âÏÝÉZdߥ×fù‘}z=P‡8¢Ò%®ÕÅTèÌÎêí9ç±V²¶:YóÛ³™»ü%Ú ?\oÙÙû3b.εN,ΕÈcw4k„||Ö= ©àlHÌ ĺ¬ÖË÷œà@ýOï°Ý~ŽL…wí±,}Ž*ÎÙW· ÝGi‰a¯bðÁô|xbqNƒêD¬þªv0ë©y¥áüˆ¶e·TþÿUXêˆî‘ԧ­Öjˆ6€ôö6íˇ­þìø´Öò“\Ó]ûï—÷u­7æµÀÏx ´Éõ=™Ègµä³CÔ~U“Ñø3ÎÇkÇV›Œ5øŽ“ŠàWkS÷aqUܾq=ÈÚYÄs[z‰FàÛ8Ö­ã>»×|çœøìfd0Qª,EØ-uŽwå6XÏ(L3¾Å&ºætÂé}zÞ«ÆF-"`Ù-RXÌ­ÎÀò—ùW»~U§“?X}Ÿ ŸÈã ì“[ããsŸëÖ¹býíÞ*}Ö/žŽvû«µziv_¹–@,⬧fqÕýBfàµÕ6Óü±ŽHÑ·~ˆsXå>Wì[ËdœØØˆ¯Y¬Öòª¾c¯-+IkS³€¿…p*9¹$”Öå˜;y¥Yi°«±Å΀J ­N–âD"t{~ôËóªìÙš7Ñ6¹5@­ÚCÑ÷âuð TYóà »¹Ü™§,K;´´8*½×¶ñ"~/kPøØ[GL'ïýÚLûÂDݱ‘Q°Š‚=ÀI×®äpÜ;öÌ‘÷ê[¿`ÁkY=`·çÛíe^*Kg?ï“ rwíiœÿ1S"dÙ¸@+wuïÏp´ø\IãƒÑ¼IÐv¥¼öšg?}®u³hÆÁça5NWâZWIžäª[_ìIÃîå´Em`ƒí¦ofäjÆÜ:‚O쫞\ù°r$‡ñÍPùÖ˜]Ͱô‹…]r•Ìì»7 ¼phº¬@}éTýÌ~¥Çúì¨éÚS‹ÆIrÖÃóÊŒ˜ÅãxÊç‘Ó½ªÝ(ÓX%ǘwá5<ê#ëQïEÕqÇ—ŠyöP8”ñßSbFhV”‰k[ò Íÿ6ek¯jÅÐüoºîf­j€5öºN–ØÔ¶^žB/ε¼Ô®Õ…Am¼DL™¹2îÆºàkÙ¸ 5&ã[vx½óÄgpñ‘›¶•ƒýDmäšß(Eõcœ3ßW{³ûÓâõ\wpsp~âA.A`é·¯XªJ'{-ÖÆ×éj˜¾³J|+fߊ©éj˜ìÃã5îÞ­gÁ_Æ‚¦@{úysj+Ô8¼vKÅ+Ë«<ñ¾Å+œ¢¹×£Fh‡ž«ROö<Ô΋]åñ÷|h…huU•Ö¯ƒµQ\ãëŽ+V«£o|$ç.»µúƒœ {ٽ߹² ¥íûD–]Œqëç¡¢²Ê âàÈï>v+ÜöúFÍ+æø¼(";iÊB#DTñZ«¾6¬8—ŒÅXß»jÑ©f–qÀa¢ «i‹Uì³ï‚¥¬h;qB<|‰ µTÚp•æ BbM Ìî*_‹±ŽÂ«;}ߊÛÉÕ«¢uÙ$sÉbŽù]uòª¯r»¾°_âܯê j N”/WŽê„n :û³?ö;8üØ%ú‚Y ËBp$o š‘Ö¿Yz“\D|‡öäÖT\­ï\y± u”Ï-uÆï¯õ¾ì`-pç)->é… ñ}ÆÇA•OäSdëˆO;k*"WÄgå³}QƒìÙSјjKy 5lÒ Y­‹å­qm?¿(ÐÐJ\å Ú±Ÿäµ7àUðÎhéÁ1T}DçeEpo6JŸñ»cß¾ö nsåÝÊtˆÏ€=8ô;V¢˜7ØCµG>»¢¾´. õ)|U—;.2n– ß{¬‹e‘Ù¶ ã ñÄëO¹À5L0µWÖ7z"/xÑ|ïì2yÛ»£BÍœ}VÆ#{9ë‘JÈ7dbò“\åwTuê jéSG·ZQ̪ê›ûï9xE½yÍCåûþaDp¬£4Žd <Ó«£zI(›8;:uÕ~ÁG/|?ðÁ>«"qp®A/¨sy^U:¾"h¤½úÚ>x‰lPeœø+KËŒ‘îŒá.<ì‚8ÑT½ÇŠd^¥îj;6^;Ï0ñï¿Q\œàª*Ì <Ã|ˆ˜9 w‡ØW¿³kÑn?ÀuÕÑ^ÖtŒ’ìt=Æ0]ׄKàN“ûÈjw­¤.ªn¿ϱ¯ÃÕslüj©ocOVðÉj}3 ‡f|ª”Nú±rß¼vR­G¼êÚyM4¼Œy¯¹3ß¼F Ÿ`ÍÒÜÊ%j°~¬:jËêã-ÎfugžýZßš`¯hD½Û9î_V›#ÿÆ¢FéúwõµÚÌ#¾`X»+]„!Jß@ÿtŠŠŽ)}†åÊÊïPãît¿7šÚù°_fÕÃcýÙ‹%fzýPXßL†í³;:jÝåŒPW=ïÕK-ð;쯸O_Ž„Ûû,¦´VNä?~Ÿ X“ª'e¡=|©¶ô^h8ÝÎH+=g®¹&výÅF㨶Wm–]Ý+wŒ´ø@¨ýGvg÷ÄLpvÃx…*°eä?¥†cÜLšíÙûz³sÙ88‚C“ðÀr§–ˆoð³nVÇ^U9£Wæ¬,xÙ;fß“>Üf­é¸áãFü›¯ìkú~«(ϵŒ†Dq KõA–€'“ï­Çµµìx¶=^ßL4ìÕÑ ýÁÉòf•†juD_Ÿ‡rMV£ör\ ~ßêgͬGîĈƧö¾§ºY¹ÞªšEó®yĽú÷W±ZÆÕÞ¯¸-UŸëø|k¹›ÌL ë3æ+·%ñÄV‡ÐCvÔ­HÁ9Ö³ÐXÈÎ3g ëGû°iɹ#›¿$r숻þ¢Ú O|÷lD¤µ‹kï½ Çáí5ÓÃ3ã?mø-WŸä´ñy à²âÔn½ Gì›8.Ø ý€?xgÞw—˜òä39²-ñÓq•ŸJýW;à^¡ü¬$¨Ï¨¼†«[Ÿ¶ø€|ããÑì³™©Î]Yü¶ºá#ÎØyÙ’OÈ«oimnùã÷ß¡ññ»f¬!Qn—öÛžq|æ#šÏU]1‹øÅŒ¸µ/"ƒ¡"¨Ï¸w¥Ò®•¨Ðfͨ“Wv³Üo²¶U9èõSw&î¾[ƒ Ÿ;w¬~µÒ÷oS‡jrÝ0ãÚžp©=Ž¡Ã++£ˆRFÁ!•Ÿ–Âç"Ä»ö/ÎÂ]µë.:÷ŠÂjÀZDÛÃ@ÆZüo,vWðõ.kz¢nà¾kU>£sˆeVkY)Ü;*›±ýø+ä,±¨v"º±-Ú­ê|â—‘5ع ¾ØsÉ({w”rÔ¤xßdoUæÚ±Ž%>:ð会Nͦ~´ãàXæFɯ•½ä3Q˜5ïï9° qóiÁxàE÷¬ùž×_\Þ¹gL´™c{åS7‚2Ž îb½´ß™YƒÝi£+™¤qdͧƼ(¢²ÖP ™¡Ž«oÆÿ"nz¯~m}ÖBG÷À>Ojˆ˜ƒ<ÓJO¤¦"ëó)•çŠ3ïOp^5w‘Í\ñ~9Ršz²UÌÉ™{×óo¡¶xs¡ågsyë;ß³|³+ßâC’t±òÃöVüìTž¾×].0k¨G¥(>-uð‰¾UáÕßs!£ˆÌ'×Ö®`¢šiq˜œU‡c‚ûÆáGwÙÈAWš—ö0Ê«/Ð;+\T&Ÿ~½B[ƒ¸à§{Þ»0•C?Ùß°O\;vxÖ§†µ ù –SñÛš™ ¥X‰ÜŠß¾•‘9*9:ÔxsÝàWuØDG–î¢ç¸îbSì òÝ2«–øªZÀß:ÔXªš»z: †›¥“R‘bƒøvÇ~ïÑUÖñž<ïÌ·xÇŸ}Å|6üo¿±Ýöž;Ðvœ–ß±ª„“±$9t[m¢X¿ÝÃhckÂw]E¾YqŽg9{úÂ>k~…òo¡†Z²çU³ZÝ –çª'¶à½¥?Þiñí r{¿Ã¤z!»¨Ræ¡dF¢ÝUuÄ$âßT 5…ãZÅwØhnôÿã>=üU*ŽÖà0.ÔÚk×DVt•ë©øó¬_\u¨«¾´í^7ŸÁëö õÂuõX+bOr(Uñ¯T•Q£åÛ ëDC¬\QQ1®\¿J,vÝn”@A¾$•ž+¤O*¡ÆA@h«üܺ=ÜkG^ãè·Ïnzªª+#»ÝTä­¾¦}U¯ìrolPýŽçÐqvr?>}ݶ¦{]©Î5ê;i‹¦{gòûªºì#Ÿ{ÕXì}NĦO¸à±¶Ñæòüêm߯²«ÝÏ®¸ómA«ºÔ0à3¥g|ÛV€ß‰µ·5ÒïäTtíS ¿f0fêõ¬¨§Ý‡§mUØó}kt(×Ñá9€ æ¹ì“Ö©h[ήqè»êÖZò/Y=*;Àkµ»ÚŠD‰€è¬åzlû]›¥ß¥.ùîš‘ê„opÊD>^U7;‹Š‡v=ó©5†•س½Ç,s.¨E³ÀÞßW†wu»ß\;{ï+ú¡Ý~lEí¸à ˜êmå ÔœUºœNÞ~ǵò{®?}µg7tËMµ{ûM1=UuNø¨qÐ4¬ôZñ»Oq½9»ÇtY)¾YÇ HîžXÞ.™zõúÖHø¦]2/#Áêƒj<!ä{V’Äõ{Dãýomg–ÀÌ.*Ùô:ûxvðÍ.¾ñGÍã{.*×9Ÿ´Ô¿kïâ&ÕwòÕ•¿7“—­Ôð/UX/||ìxUËÌh8tµdô‘«jjÙk«›G¨gÆ|èâd‡cDZPPë½Ìn'S÷e‚¼a¿)€^º|Û„c'ƒâ3ìý®Ã'ŸûχRþJÏEvfXÑ›7«gW¹ùuaV¡üÆšoŒ­ˆ¹vɦ¨HíMdäàU‘5Œ¸_­_}÷Ví" ÑŒ¾q¼ð}pr³J—4MõCÆ´ôJèϧ¿x¢]ÙÌïîRñ*0™.üM^¼Ð´$\ÂTÌü„»À8óKK·K¶µ&‘wžŒ°Oi™YiŠf*n:þtz±Ú'óúÄ•1Ý.¸nœÆšã¾rÌ.1¯'KôŒ°‡}§:zÜ÷hw¤%¶µ»j5wC­–*÷ÊÞº§Åñº©Ýk Žïø}lž^iÉAÿ~oyíæV£‰8‹záÆÏëªÞsËÈìùx%-ñZ½ý°ÁÌg%ëÙ9P'€míÍøNÍàSråtë¦va)ž.»Átí"/ɪ;«Kþéç¡|¿,WæïôZ»°¶{’žÌUâ¨]ìÖƒ¥s1•Yìúc¾à3÷œ¬Ô'®m¿ù”vYÝ5oëÆYëZñ7=”¸õÕ'†í©åè½Ö¹\µ<÷‘}`’15[á7Ý"-hN«~¥«°'Ý u‡÷곉ÝCcYщòØ­Á®·%òüj•ÀÈàï ýÛ9‹ ÞƒÓíÈK µ5³s%‚/$²ŽÏ÷†Xßï`àG÷͹JÓf':TÆM¾ºÞ•]õ׽îˆXŽrv5PöÁD|³,^£ö†zðo ÇWFÙ'ú÷½_­¾¶Â»ñöšµŸae,·ê2,²¾•mí[Øû^(–/yÔ>øk­fö¿>¥7Ìv¯z ð£žG—z¬6¼‡=ÔVúÅ·±DŽê%ö&_ñ ïeN«(ŸuZ‘µŒK|ÔRíªú,òý¦ŽAum¬Baæƒ5ž4@F˜ÈÞ¸ü«Õ{¯ñMe|ó|Y“Ñ9cÜheÔd÷]µßÑzy°%åZS®áIlÕ|™H…ü·çÖ{殚Õî•Æ¡¢_¬ÓJ×ÐIž&2ÁOöuÁÙö\=¡Ú‰¹m?ÛüÞRÿƒƒ1îëˆU.›ÑNþxD³Œu¢-0ë¦6 bQ–vå®û­(Ÿâ1÷%Úa#±ükQ÷ïÍ£³<ì+T™]*¾šÃw»§†e® }›/nT$#*„ÄRk–/£\ýËŠß<Ö¢fŽn â¤ÍuÏV«äT‚ÏõTgçá˜úܼM_Ô§Ûý÷N‰þ¿77Å€iaÌãUßF¾[Þ¿“Z8ªš‹yk·o”Q¥Ü¿QlèþÒUÊÎÊZg^7#ÚŒþ—í¿C¥‚¢pùs0HªcÆÖ½ÉÝ~ûb¥-yDø»± ˆ‡‚¹`;y.´½¸|åˆFEî÷ìPû¨øB +ñî»^üZÊÈ|[¥±o¾Y@D£é¾\é]{×L¼'M}ã»{ÓΦ}Èèú!7˜rÙ-Þ]Û>X­ \F‹(J‘¯³r×õÍ\ bô‡6¢KÊ®9B„°‡OE&ùˆÈ?ž†£"3_v½GLѳî¿U}â?8âæ-+ªpT-«cÉ:aÕ›žÎ¬ª7Y‡7»Q”p\¿1íNA¥¾©Aèù êo:ÅOõ>ö˶¯1*1¯íVº{«È¤ImÅκçÈauVoû5®ðo©ÓɈQ^»Ý‰h¿Uǃ¥¡çÒò¹cÏ螇³bGÙÙU‰Ù'qÔ\F¡|aüËÏŽ™ òÙ}ý\Õ…óiWï^#Qit}&¾á¹çžXgŽÀ†Äªùt2cŸ wqÍùþOZÅt«=8Š'ñ™vÉ æÍ¡%ÍÄ·øb ÷QÃ…ã«>ÉûýVÕßf‘E'àЕ¹º;ĵqN–Ú‰÷qgj>ðÜNÅw®¡^fš£GùÏ~Ô*‰lý¨bŽ«\»Qí&~…i0_·ZÔjOi~òõ-5uuŸˆžFóa*qkô#³ÈJPŠh¸Œ9pÆU‰™×nÎsô½ªGôþ³ÈåŒîòŒ>ÇoÕñèqÅùŒíá/PÚ卑‰¬µuyÛ<”kqrWâ3ê}Gä•5ƒo{V^>`ŽÝ6­N–ÙW"‹;P42s^«²ó;îbkIµêÖÌÖ{½:ãa‰†OYKyÝù«Þ›|ƒŠìÏѵòÛZ³tš¨ŠÙE1SíŠÍÂpÿÂnÙ\*i—¸eGú2ŠZiYq†n/µîš©~AA|ÒíîØc{Çq¼Ïî%ß3©}D+F¼v|ˆ\è•;¾©ßâ F=ÎîQ'Þ±gw3Þ™ðŒ°øþOg$û AçQ1ó„gã$Ï­JÜ×cĽ¥Üˆ5c`uQ.%årR«ŠoØþ«™Êäí·v7ƺä¡óBĹB`‡–ZµÅú×+Zð—à 3í'~ñ÷¸˜sì@ÕI´°ÊL½g—hÆøZ=Kd³2¯êñ7Åy¶­Ñ¹K÷7kÅ(¼Þ±jŠõ {å‰oWž§?b¬XØK…?ߟSÿ½¿Uê¥&ÁØ"©õÃï@_P„x ‰ïì„QSÖ5ßåyöþ¯/µä*{6ôÈ:j¨îU2oŒˆ˜ ²n#î·sɼŠóGì;^~ÛÆø³Ží… Vú*M=_Õ N„!ì Û¡µþˆø'oÀkk‘¬VÁ{&oÍA~õ‰ïˆ¥8sZ±Ë¨Fð]müþoÏ·ßíº² >,Ùˆ%«s2Õ¸ÑYlÍHWþæÁS\µ*2T„bƒ=•¶ŸÕî}³´â~7J6T/¸z¥FøJÇßÇùç‰Ñ2nöæþ¥9Õ¡˜5v=§šu®o€Îqa §fJ&$?‚ááæ}¯ªáé¡'²qâÉ<î(Êåè¯ÍëÜ«ÁáÃŽ ÷¹°êWwÅ>ð Ä…;D±Ë¿õoTˆë+|â=Ó OÝå=žûŒß¯h.ò‘³ŒS Dü6þ·LžÛVÎò«|¾—±Á—»@¨°;þ+ïÀ¼ÛêïøóK”#¢ÿ…Ô\jz;wOÛèÚ¬;è4_ÅïÃê Þ͘-ñ#Ê¡†>fø•ÔuÖÁ =¥ÖVWñÄMÝgsö8)}µÿ`þe¿­üùì*¡­ê³Þ#+¸B¶N¦©jyC͈æùýÚYÝžšÃãú™,ý¢€grƒŒýØá’ÿø=ü_•N.tŘ¹2ïÖf!jÙŽbVu•ûq¢e"xÿôŠõ8»íßÛ‘•9Çwk.r¿9´œsä/Û·GÔøßà“+2YÅö6­˜ÒÓcëJþ¾QoƒOVõ‰•5îv¿…›â;Àín¬¶­Ò/{æ 1ÏpÐ4Œ8æ Ç‹ÏY~T71#xξ‹ó!ëÜÏJ´Ð’"D=‹k-œ=,ý‘ÇkG–ŒÝîÿ`Fx¢Wdý‹²ß¼¾̽ÞÊÔiÕô« ž„3-?ÒAx¬,ßÍõfòàd³ëÚãRwZ¿ÒùC“u*Gº Í%bÙÚ5>9Œí]+¹¿“ñA(F4¾ÍþOË(ö,â,G÷ØyëG‡½™ÔvÕªû¡YÕ­m–˜©ÇF•8ç'5(ÚFfµfà”†ÚnʘYõÛì;&RÍ?Éwjh²Ç*"Ñj•6"¾¬\ýµ¡Ùï¿…ô6¶„pè>pF{™ÃOýþÌÊçT¨Wß%(üËnAbZ+ÕNÍ¿GåFÆ™é¬3:N³~Í:sNÍ¿G®þ‹ÑQg-[ŠõðndjÇÂÃ:C#ÖE>â6çÕK§†ÎÑ1þÎZ¼þ:zfoˆsq/¸ ¨òàÑxµÅ÷Þ:{ÐøÒfœŠ}ôŠ8uÕ¸{;0K‰y£~ç¹·¸û+ §äçCçØ­@|âd´D®?ôÄß±³ï±°O¨ÕÁ$Yd„íú«8)Ò¼¥ÕãôuŸHd>võü0™¼üÆquTÝÚŸ²—ÌWE“„‡;=Ð4kܰ½ë81Ç›_c¿Óž«4 jTÛúŒÑŽ ïÊÛ–Õóïðóª5€{ŽS!þ1¯NŽÀ|{Wvo¡Ùð[_¼G9gAËÖl©äf!Tf!ŒJÍÈ%¯gáE·}¢‘k¥³6ôÑ aØU˜¨5 Í:šsÞ{¼Í“D`×÷ßc²ŠQŽf¸QWkGƒ»üâÔªîãÀ¬™Ýág¯¡ÅwßEÁÇïÊ ×:y×ds=×.<2À?»ÒbµµÓ( €o° 5]ÖNÌB¶NìQ­‚`xÀgèA+Ã^5ë¾ÍšLGyàµö£ ™…¬ ™ÌHAÙ•ØsèLroŠÎbº ]…j(÷Aˆ`X«£@3¾O I³Bó©TþîrÅÛªwì1íq.o_XõO¯ü½ZʳÄAâ­9ЉbÏ:0•±p-˜h½¬ÂDEÐÅ¥GbÇÌ•¥¯Öêã „6Fuuž¯ØbÅ€ ¨ƒ—µ½Ü­V¨2ÐVoUFÿÂøwÔN_åsKÞ Q$(yhe×”TÆaõñTÄ«’í£ÚõŒ(“•År; Ö¨YÓB ›qqRð#Bµô½u¾\qçn2Ñ ¼ r@µ“Ù¥RzöèÍTT“+ØY%~…D´Ý9¾âã¡uÔÉz`* £üè~iÕê7Æ9„Z;±{.ècCì§ö?tÿÅhÖŠÌQ nÿáÛ³vÎX¥X@ lÇö×iÆþ’c|wQ DýÛ¡ð›G­8 è=Ziu+ÙQhFµ3ýë_e¤ÙÉñ¶!íÒ"Ï}­ùÅ–vXŠ‘Š3ØKÅ⪣îhý$¦éÕÐ@ÌÁjÁî/<¨.š›âD¹6ÖQ»~  @ã¼Ìanhî`HDŽg‘ï2ŒJØ«eŽà¹ø¥=Ä¿U¿sG•[ÿ•VqÃöqê®Üñwêu?j­^Yíšej7<üÖìì%wµ†¨š8q9¯=À¬fÞ£ƒzÑ'æˆßœƒ9~Å@íÍ(][Wõç¡]I‹ÑfáðÖöž?¶?ë? üÆFh¨eû©äˆk£Æ ‡@£'ÕGýåP_Þµûd¤Õ‹!ñ×P1’eF´R'‘ïã>0+«»}•7®7f…³vŽ»v´Ì»µã…QLæe¯ëùuл‘`Üv´ñ( ôááú‹n}e6,lØ+f»ú’«àìÈÛ8½7}G¬ÞyÕ·#h°C¢wìáeuùìßÇsàõ•ØVø¦8tÿFu}ÂSZêSÕµ+ÆÔÔ“˜jî‡æYd1ˆO­/º«´½êÞ^e,ã:ðÀwf³h•qgx=žgP«Er—“6cæ¾?§Å&Þè5Ði}û÷q•»=-òÃk•—]-’UÉ·óg<ï1n•Áœ»ïg¾iIßl´U^åýh«PÅÊÉŒÏΟ88³w°_ÌþpDÚoÞ…vvŒ3¯¬úΨÑêîÝu= ÔŠóibuœ=¸¬*æÎ¨w7SÕ@èæ'³e¬/‘3â Î"oƒÎx0sÄïæ[2rô«rx² ìÊC؛Ȟúñè¿&Š“ãÁ½äÒèG¾[ËeÕQÙ§1döY§ˆßÄçÃWa¹kÔW¯n@túu¾0ýZůjPð"¾Âš±·ù–Ffú½­6x ܬײjÌ.þbœÕ²Yo¥–š(ÇQUgw=\] 7’ r§È ê0Švæ»ó3㪰­#’óÍTt¬I¾Ò+@Ù'J-=*#Æ1.•T¢B«E,‰‹ì±C„Šýà¾1uUs PÌAÈfþYS‹3 O4ŸTB¿ƒÓa‡YÞN~×¶*ýU™:jÖ]-‘ºú«¥ì‘z/Ô"Zƒ(e ²¬Ùñh4+kU:‰LhiØ”|¥d|#K­{UîÏÊ$Ï Ú½W&‚Or±Þ¤¤¦AÍ}Uþó"8Ü4àÑÄŒQ½Êd²ƒþÏÞuôíÝ×tpâ«àây›™£ÏÆ×y±z©ÝÍ«g3,hdvQ-Øõ“oÈtøNƒ{ì0ª%Àb➘¹íx¯»°PÀ#YÑ©ogåk®fÔ}Ä]¯röØÔàþp€Yo®Ð9§ííu"5¥O\ÅDÄ,ñ7ÉïÌ᫞z“]¡9_:âƒÛ=>¥ÙãÕ«/=_©½Åä¬Õ´ŠÌC|ÐdEÍQB¤ÛvÈB W*ĤÅPA«a…€BÊOáTc[$Í|;êãHÓ¤6Û%Ú³ÈG!DcØ€îî#ŸmÆë©ðÚ¤qz —¶mB„ %£ }¦Õßm=F1Aq*íÙöøø]Ÿ+ˆc^·ÑŒ,ˆ*u–þ8 ¾ÝY¦|›œÌ®´KX ‹M^¥5 ì‹å+›¥AÄ÷ÄýlŸòi J_x‡Œ°^‰cï«“’žgÑÄ5¯Ä–õlÌçÄm¤´üvvƱÝ{ŽÆ/ØóŠ#`3A\>xè,˜Ñ¤øûlD‡¥ããáØµ‡áÕ´öüùæN¹&^€Ï󣓭GŽ×—“ec9Y€P ~G>%Œ÷ꛑȥ8&óÝr6¥ãÚÙ9™¯ž}ÏÆ+‘©qÀyæ³%fŠìo祟õ’Mµú¼·¥go•7ŠÅ|âÚÿÆï³÷Êwq=±çÚ6˜ÏW84i¹ÎàËÙZåðJ4,ùoç8J&›Äâ?ÇýÙˆ)R¤ ï»9­v(-ŽÖK!ŸÁ7{ÑgîVDú"£–[NT9ovŒ]d‘˜èqÕ(Û{ ‰yk!ômôXØb¥ÃXxñÞ|sµG|'`ü}õgý=µ_é…¯¸¨æÎÌï_!ön¡ â~q¼Cn-`Ë×ð¥çòúŒwg©ÊÅÆšH^2ד -×Õb–- }zXg¡~gð¿›ãù:û«üAáC?KìßàÊßL:¯“û¡~—¢mp¡Fôjc[™Ìƒ¯ÉâQè0,OÕ<Fƒ+> ,ïõÇ’ëà·œŸW­bmrT¢`µˆMMÞ+×A’äüß¡ják²Têr÷¯ô¢˜ŽoØ€"¶émùµûí;ʺ‹²y+O41 ŸjY¬huð&ôÅÚÔ›oŲ%¥(E<°°—K}l0ÉQ®B$îO^Š^EÆÀDÐ:ŸèˆU|‡×ß#æ¬ÌxЉg­#û]Ø3þÁC¬CMˆ½³<oãÚ·•fqIÎåRy“¼dŒÄúŽ3‡Ñ䳿ïî´×],E4âÛ¿l8Êjvdzêdb#Z£÷Ž©¹[-ð¢VÑ·gÆ©WïŠéï¸ï“ã.N2¦¿# ž´Ô[Öa¦r$‘›¾™Åuüθ¯¯,šíðÝ{抇¥Iâà6¿Íì X… ZòηÑèï@Èø}ñ÷½bÆ#Í©²ŒÙg3Sïý³Î3fŸ‡™ycFÎß¡ãù´¢3R òQÚxÁ–ƒ:zl-ð‰8Rñ^©aúPYx}ááa»Ô'öBö—ø¿kŽY¶ZP‚é—¹`gÅ{­Âì—ÑÏÊáöŸ\⎑ e/Çd„|;N÷ºKxôëÖzߎÿ8@83ÊåA±‰¨ù¸ê*ìøW]¿USd–íŒ[x–Œ `ó]l?æûT¬Zš£ðJÜeaòÕ%7kð 3%–¬ T<òÝËU­rŒ¬¶c“ªõÙ9ºÈ¤Ï‘üæ¡ZûξE,|ªÙß‘£½žµîQùÚÓ­TDdß"ÔIF7ˆ=ïíŬEïœã³}ÃïK]Á¯ïÙ ‰æ"Úñ%«Í:Ÿv„gñÍ"ÃÈÀž*ýÚ±¼ð9#úìbüŽ˜Pu={\ÄÇ?ö#°dÅÄô#nbÇ•cÆÑm}åâ’êiú‘´\0¿öÖxøÅÒÍÍŠÎøÞ\BöŽùÄ] ®Pàà…a0·üÅØÒùÔ*€ãZ_—LÌ÷yíì[O=}ªoE>ZÊ7㺠]³‡D]A­¹Ž~’½ƒTr}ç/‹™ûûªb¢1ôN´±r„›ù76šWsh”ªpí\Z­žîaÈ[©Í}—ú’1Öq©ßqq˜aæèL{7ò÷«ß•£ÖªbÏZ;æVć8ä2¬ü6$²¨Àx;=e²¾Yý©vó§øùŽí»ÕZaé?ŽjÉ„È ¼‰CÄÔV.¢<ýd»àOâoa;0ÇîŒ nóÄÞì ÿ¬B„ÁàZkMy|Æ:‹"Á¢Ï»jÙYÙ»TbëÀ«~âQv(jfÌò»ªîÖ>©f{åGk¬É ¨˜”'T4Ù‡[Õ­æY¯ž%Aï5‹eÌïîH¼ª/Óp.(ìò£ýÞîâèŸuî7;ƒŒ,¾äÐ8ûM9.26øOÄ¿ *7Õ„v¿*Kˆ,k=ݟßëÀëáT‚OeÉúê¾wFÛS*%c¦ŠèÌN8ŽÈ ud¦Z1¦j¼ë¼Á­“R/öÊ8b†1Z5«P\1ßÞ˜ÖT¿yèÅVOAc‘£wæ]+Žãò‚§[óËKD#óe¦·ßoUçšJ7fò2ßuÖ?yÇƒÃØÞÃQuW^õo…ðù¦Ràâk½7[ôÝ–cA­Æ!¡FœÔëþõC»­Ê‘¨wo1Äx#Ntè§½yY¹·RH!].® )èù’_•ë1µ•‹.×Ph›¬áP:(€…S†‰‹,iS õ ñï­{)úMvÀÓ}Gâ»äšÒëÝaùâDîë6és–³¦?'”IM÷Nö!¼\´ùÍCÎTœkêX`š.ÐTï  :iIâ£LØ.G¦Ø»ò—A›Û¤°x3Ù™QÌî$^‰ëWÛP%øeè 2s‡}¤@çÜKÞ™É\eÂ4ÃÙ8ÒÄ“¶?@ûÃoE¡—‰M|Xâ+Ïw“ù­6 ðò2FHÎo&›ÆÄwŒÔdî)ïVµD¯hQÓ䌧Ÿ%à¯Úf€Ék40oý¡Àê;¾_üȳRÊâï(Ø !Nß æJ’¬ò‡˜d\¥kœQ>çöÄÙaÄŒÌoõ1¾Ïwж÷RøÍQ/B¦lø^x½W¦»iF`ùïýUvJŸâÑ\;*^2‚Èt‰Ã\›mÇôûÜ•wʳh|û—8?83Êö Ç'³h°4bvZ(¦p¼÷ßÇÉÓ™wÆ¿bð¦%.&B¾Žkêpª¨y YÙTçæ»#ÿÿÀ<‹t«þ¨ÞŒüz5«§bÉì~ŸmON]4Ó³4ýªø#¾ùÒ¹ôØyç^ù3"N^£°— ´Ñ`ö"¬nŠŸ«2ÙU$xkŽok… SöÅ.æ )1ÚÅÛß’-­^ìBä¾íÈÁÅ¢|¢Ã½m$F(í•8ï¿ý®\pA,EѨhÈ4Ç­Àj¿È7š1_)Šê—·ÏŒ¿?ôÿÍCÒ½SýÙ÷ý÷ ²30õíåõ^GLʇ`D[û^ËíP¶sØ8Dæk“+g¿ Ùñ$¢™LVø©¾#*ÆUQî·RYõë7N ®˜ï÷·ô å’K¼/ŒsŽ ø1Ó̲ìaÜl<4cô1 ÚaOp¦©q~‡ôwáˆùú”UØgÍ~\¥½An˜ädÄh÷g›9Ø‚ŒðË)©…îŠFîÞÕH¿yè„Yv™OES Þ÷@^~±‰_—Ý„Ü ‡qìkÁž£ï…Ï–/_E¹ÅúGäåäx'Çô ‰€­±še[ÞhƼë.ß¹hÞƒxý=Dÿ—¼roAç5·8=µ¡E¥ ŸS"«%±Oì…D7ÄIÛ”…éïS¤²‰”^Å;ÄÜ{°¹­.óœ%NȈ.çþª= ²«”ß6ÔZ“öR+{?ÿA‚u("âï+«¬7ï5 uˆolGäù-ƒTL³rÅâPô”'8§:Ñô)£ßû6*ŒÐ§²ù*?°ªOÌ{õÂYF‰¢' Ô{‘k‰ÿðø{ÜW5Ê䮿ÿ®Ê‚ǯ 1âÀ|#ŸX| ñùùKð÷ !ñäŽÅ÷dgd®âÓˆ€‘‚øVH¶C"Z8Ý‘Œ°5ÒÒ…Æ7qOüÝ,~¼D Ïu¾Ú´&—‰_³K¾ríÌwŒYŠèœä†ëC³»ó¦ ÓcÁvƸ=ŽëßõæŽó6þ™ãÍï^¤R d‹ˆþzqϲýhÕØ@\r­„ž3ßÐSqßï*Ë¿V­â˜ÑË×䵩 ±òE<—í´™Ügäe„Ɖ¹ÇÉÒY×Ñă×{?QåE¡Y z_@±ðõboM=r $z½'¾ôwÇç,‹5ö0Rµ[ß}Õ½¬ƒS[Už~dyÖ=GH6vnqâ°9ëfÓT`}ÿ=ažÙ|7Oá©øåÃs䬮XEÔ÷K.¹/6¸*2Yó]ŒbUî¸P–ªêÛqÂIyæžµ”‹…ñ Å›nsd9A}§býÏŒ¯rÒQL™mûûÃC䙌o~ õS4UcÞ«obÆqúu¢PµÎ¡Ð"¢9ýµºK„¥?cüÐ_d$üj¦^ÅØn­7ïÖ½=õÁ9ä`V×fæ§ XÝÖ7¯¼×³gÌìãäêŒLøD©U–äüK+knõã¬øç¼ÝÔÂ4`Sœw©%dd[¿© ßù_x3逸Thkõ ?™3g76ëùñsË…^57Oñ÷_›•+ož­9á ž±!ºcª¸…(ÿÚ*Ôq‘“h%r¿~ïø“M²¬‘¹Ð/GïRúïÈÛÕvö}ýª^,uªÆÞм/fM”©ÏßóLÅ9·ŸåôE^~½žøÚ b™/Q†DžK~ëJ{—š3—ÀWpÈ'5h;úÎwõ]"ï:ð¨}GùJ ¬¶‚©”JyèuÙSÁÏñŸ˜‡¦’QÐ p ¾Eƒ0ÖB*(PžŒÏŽÒ×åE¹ K ò¤g¥þûv.ä7ÕU'ßáõ16¼oFÛ[\B‘‰ÞË\Q§]•K* ÙãwT;p Y26ùÊ\ySuNcý`v0;!m/tÙýâ‰.$¤‡[± 1Z‚YàÏk”oAôÁ—®\Ôkd"hfCމB"K%¤%øÏìü;ÕWÁ.ä8hEd]FÜîóš5Gë`‡çƒc‡ùå¿Q¹z3"c¿ïÌ%ô ÏÉ«¬m×F<Ñ9YÛjÙ^šYïmv+õ€ãž5Wr”øwƒ¹'U²ùìφl#ê± ÚWbò»É²=c}\ù³®2vîòßårIuöT¸|iäÃ%ŒuY`5’ЬWä¯#£¬RkµúûuäJÖxßÁDë:"óJîý’kúÅ&'FO­ŸÕ„5y<?Ñ¡9®U,AÂøQ–—°ñÛ+r]4/Åmé~]Åì¯:óö9âû=rØ—ÌbõÅßã´û nı %Ê3¯wUF¨Çèœj 8o/õ”wyjFø\ÁêÓq?ugžBmIÞY7þ‹6d\êr=ˆ6œøùªkQöj%#[|• ¼§VyvwNŠF·¼ö|äVfDd0RuµW‘é° ÑBÜ.•'š@¥6*#Zþ}«ñ1V¶6È}ZRu¶¼>’÷2æ¾­¾zœ£MFd­ßACq°åòÑêÀù½Äl¯(#Z…ÆQË_×aW@#{ûÞà°è…™ÉÔ×úóýs†ozÄ_«=y¦”ŒºéóˆruWÅ!32/žSS½ª2®ê;{ÿýþV¬«kØú½åë?y¥úú2fþaUv­¼×“£ï—Šüà kÍT)=ÿwí—qÿ‡È¿ÍŒ¥_ôÿ™ —Ù×’qúEõŠÍ©Â’}ÆF•÷šéäF»Bêð—øã|IrDý«z#²ÌÄTýP)xhÌD¶?ÎýÍB^2µ¿_‰ÂÖ¥òÙsÑŸP)iuµÎ¬(î+çð7¢ôÉîŒÕ?DöïßÂg¢xÞ+fJÜÇ §ÿ®}KƒÐ£Ë¬±#®ï»æqu#ƒçÇXnòô;þ®å)3ãþßU­¬5­®ÎÜŹîÞwž^#}Vóгã3ÔwÆ"Ñ‘'CgD‚´¹No=Úw_-¾õïªÌçfV²FIn^C|câF]_§Z3wûÜQxGܽîhQÉ wEÀžPñÇéñÑïîßûóÀßþÇÒ6ÎÜ­ì1úç‡ã—·âzÌÿ¢7Ô*/Ôfú`ÎíÃ!«Ç<£_Õ·vÜßÏWYM%pùaŒ•FÊÙ·Õ¶wæ)qB´Y­îh÷‰µëÞ1}£U=ÆÆ¬|¾ÛªŒï»–˜}Ïþî÷ΨÔnú^”Žy±¢×{Õu‰Ÿ ÀzvÝý*4˜^5Ÿw¯È•íúû«½”|½–=–ñqŒ»øòeã%¢ÎoÏîî­rT5¦ÕF1Xü>Æ:ò}é˜T‰ù}²lÏ'¶B\bŒ|Eß߬] åq.êÚ KÀsä8•Í3ÍF'ãæ•æþތå«X~ÚeeÔE÷óÎäõ{ä’Ìm½ñ켺R™¢›à«ˆïÇaUí+‚Dà\þšu¿RÜ"ä¸wvÉ*S$È^ò„R‡eü¬C´‘Ûàzªï÷À#"†üŒH¯š…D)ê¶œýÈQ¨@4È]bÖâD@h áß¡|e*ƒê)Š£i”äÉ_¸ "Í´WX_åHàŠ§y“" ã¾G˜"¸hA&a\ÚÎ$†BïÁØc­ ÖGwòý"iÕQþu“Xº*™t*`ÿüJk€F!ð fŠàUtŽÓñÓÝr^3ç2á‰(… ¤Þâ.O…d6Hõc]¼½Šj\$OŒäR = ‰1/’—TSNz¯ç*KÓZÂ^Ï "¢úŠ£‰ûƒŸi<´$©~<Åòͧ´Š0-1YåX b? ÜýŒo¬·Ñ‘pÀ;o£ŽÁ¿!.ÊšªÐSX,1Ï,ømyÜÏD«R* °±›0XäÁ÷”>cùZàþâ‘-½ø²§¢ÀmÁ#^IˆÊ°4@ãÒך×C|1ŽïÖÍl§^µù ±Ï·ZÜügv;ã¸ãC“ Á¼jl= ‘ÙljX?¬þ(Û‰gñy™T÷’ãGŽöŒï·8ƒ¢$Bs˜¨ˆyÀ<" œzòÞGou¬B;4¾Eõ¸”3ޱl– ŠAü'šØ‰ÉÈBšØAð>WêˆX,¬÷˜é«p¨éa92êy°z/ìÈìŠ"|~b¦¢E»3cûyVňly+W|Ð-ù:‹7šx‡…ŸgT4LËC¯*¼x°÷!Ûõ;$ä;2;A“ä áG»õ(U‡ß¹rä[Ï@âHA&WÓ \'Hߌ§@â,@Î\ÙEìÚ êÄ1ÊÉ´›ôNxªÇ!¶ÿ~Ÿ…l|éÉQ:bðÛÖ1@<1C}£¶’Û°ýº3w’ç–|ÒAÌQ‘qçß·ò ÙLüÞê¬ß‰Fñ;È0ß™ŒQòªß-aÑÃ'öòÄ:¢ì6ú~w¡%ðÏUÿioÌ[eÛùRóùÄ™žƒèûïþ²êWšS¯‚E³ÒmDŒÇkTd÷ÖDr–AÈxȺOtÆ`$~~摵2ÎÌB·[œ’ °$MüÁ Ÿq0¨ü¯Š†'}WœÚðóR»kI2•¹`IbNmE´<´=ùû÷ð3˜råˆß²1O_‡jÊŠn•Ö­+–>¿â¦‡­áÄê刱%v 4}TED€^…O°Ø·*NÀZ—(å¬O¦'Íøñª·¬ Jâ[«³—QâßÀ| Â\ú Žá5ûÚ»~‡×Áž;Güm»6ð„hTaj¿±çÝ®‘¹ôÇ1æÚ»`Vÿ¯Ä,¯<Ög¢Zd›˜ñûäUïK#¾±·‹GZ»†e…aüxÕ—6¾ÁÏ]Õ£%ž5qltFy뇒¢ž¥ó­Bqë'Ñôå.³üL&›Qz’³ Ètb„áh¯_"ÿ÷û]~v!L…#þµ'1Ó¨Í šÿϨüH] ÒEN4,‰õX{_ù¡>Ïô8Y܈¢m¨ã¼jnï´û­hFáïà—±Î=¯ä£¿i—¸ê:ð¤elôãDkˆŠ2øÃ®Â#áv2UG¿5¿ˆæpjM¥ß‡qÌwÆäTãxUßžl,‚!àAfï˜ÛFíY•ӚūÚΟö´Š£i|ýj±%ßÞòöm7eCTÄôÆ¿õÓ“Ì[–Ö^­¦[íÛjûYq ¤‘eOÊnÔ÷Õ– ôZ|ÏN…ç‹™é½x§õkÇGr~ ¯²”ZÇ\aÙ7|Û‰±Þ-Òn—iõêO¼Æã×WFiøß¶V-;Y=âO|ÛÚ•ñ•X?ÒÏßÎÛÖÊb½õ6ÆÞ­Ý; Etk-¸¤ˆãŸ/y!Q#b–ø£{ž¾u5B»Q̶¶çKlg­U¬ËtVÅ2 ™ÞûŽbÙeh#b’fYœTÉåp؃¥’7Ò+_!qÐÅ.Ú©_Àw0Q†é}j$Óqb9ªŠÙÉÞÀ¿æÙIðÿ_.¼ñÁχFN¼Y1®úò`[ÿeår{ø1‘…l„gà–ÉÒ©l¨EƒßÁ€`Û6a5›3th׎Y…Jýû=F1Êÿê]¯û‘ç .W]8ø 4Åà_¸m¦ç{a<ùÔE`7TŒ'_GÏ(…þ¢çWÜjŽ÷½²ý±Š“{ÈW¢€¸„‡¬4Åe²g>åßK¿;Ç^Xi=ú–b˜y¯·rˆ¬›Ë#Ÿ¸ 6Xeu׆ÄuPè•{Ï›W}•‰ë®€{V2Ø[ªŒ¸+‰X¯z+#Ú:| ³a9YIë0awZÿß_^»õ¦#Þ>✳«Ù³d,"'Öÿð-(j…$&(ÏQ,ýXQŠÕØnš…OÚNäÄGÒF(jå&V­ïá›G.ö^GD=.·Ç9Fÿ~öÖec|ôq3¿ù”Y6F“Î#Gù>qb5±ƒ‡‰“GÍé8&Wˆ€ÇÈðª·0êëÛƒ äÃëÏúHZDkYyvл¹µÇkn´ŠÏªþmÀ’‰Þò—Jèúê ÄISwÿj ýѹ×[Lñ°ù$±w ‘fÎ.ÒÅu9ˆœ ïÞ#G/•Ö‡ÿÉÆÐÈ%#&*ø bNævöÁ¶Œ#NÔ‘âôD³öŠ3ðF ‘Âßø¶C·hIáO¢©©”~£ÆÏ\°Qçéù¬¶³¡“%DØd]«wðhû¨¡Þ“¡#æûuÄd·2scÅ»•"ªqb/O‚0þÑ/°*£šº÷WqNÌ÷ûðpW}üfOu2†È§Üªu߃e¬EõNxª_«|?äæß,»Çì:H ²~ÄOyÙ«Ñ*BFþýÜñÒï§"¼R_¡w]ûr¯†>w•Ü[8÷ïªwoc-™í(žâÀD8b'ð†˜ê"/ȼ~µ6Eu‹×ºÝ—¼ËÜ1Û­5gq >VÄ¢½½…0°])ü†û³*>—JÑ«Æö!»ÍÍ;c>q¼;{o;Žd]w à7|ØÛØq$W *|ù˜™¥«š üŠãÄmãL”·2d̨Îâó™çµ­Ó#ë»{HÔÄ?"®ê׎ ¦^%CÈ–8ïÖ8‘I»¨3+êºJ±0íç^ßij,^õµ}/#Yаä\û¶¿D[×·E{ò·í{‘ßuGq”l"šZåõ?üªeſĉ¯}jï~T™²Y<®2ÆL¯õÂ6vØÐ+QÑhOД˜íïö°ÈºÈøj¡uο‡A:2 ^ƒ#“i­ã÷AÆÍb×Bå-peŒôprØ?ŒÙÛ]Í£ÏL•€¥¦}‚ý‘‹¿µ>ï^1ÕÉ1ükMj‡.Z9‡¯0€(’Ûă/T• ÙÓT˜Z}V.™DQà:žü@vÏ#Êà ëWùì¥+EÄÂ+ý|ê¬Y˜i÷ú•?Â7ÿ~ï_pÖú÷;ë­wÅDêExÔ";Æ¡›2~á0€×Hñ6\"ˆ¦Ìx¶ŠO™ÿòªV3žÇì@Ö/-y ù8ÎwÍYv{@â¦z©re bG„q¥\š#>µ­~¸Í8q”¹ÀãÀT«I1™¨X£| >[¿ŠÿøT Nõů8´«Vù–Ot|Î î}ߪ»d?â˜8š‡f6¦EKF¹<ªUïuUÔkDÀ3T߉ Økš ×7‰Ý·tYœÛmÞ5;2©{ ŸŠLXÕEÞ!ZÁD"úrއÁ"SÎO{}åUPg9zß¡™Ç‰7Ž…»qg´:q^¸ÿS¦Åd‘ýˆJÞ«•¿Á“÷ÿe]G¶ä6 \OŸ†9ÜÿbVüÏ›ïqK"A„˜€ðŸþˆÏŽvhÀ¹æ·/÷¿ç#4¨Z³~’yaŸ=[]V´$0†ÿur4åÐùÏ’íq(É.[‘Ôd½Þ5ÇÅ}a›4Ó>=ÿŸ0ŸàY½çÅ34HçÙ¿yI¾vá‘tÃ1Aú=Q˜âUbëËÏŸ¸ì¬‰JÆ«ÒéžôœÑí³¯.´”¶[¼w<­85Bº£·µî÷Ýñ÷ -ö> +D~@‘C[œpAò` ‰OMÚ=ËÊ þ8ãúëÁwŽ®{v.®N®‹1]ó@û ãÍïÑò³ç«™ጠòRBÆOÖ¹Þþm#xÜ…=¹z8®¶ö\B3…PexÆ1o¢õF*Gÿe ´Œ.Û¯×6EÂ˱.¤'ò×Ístk µ±s ¶‚në¼d û‰y|ŽÔ}²KBhíyµcKÞ34{=LE «>+éŽÿ]pbßzbÚ7Óª^Uuñe RÔ[ ãwý£õÑ|›öŽ¢bÔk=_ >¨é™ƒd%¹õò莰Í3"{Aêv/ëêŽ=¢÷¥CÒ§^æÕ û2ÏÑÄ+ñ­—VêhÆ2¢Ä,=c5a–«½Ö°‰±_Ýìûð½wÑm­˜Çö=Úµÿ^󕪽¯‰¯âñžç°Ø¦ŠÎßËÒÊuåÕ|nN¼_Yßø{žÂgôs9_Û0%¯Ï´æã¹Æ¾#îÔci˜½œgËò\Ò—.¼”ýÈ‹uu0®I7J tóLÎÞF#n¡!ö<ý¼•KZ½²·ólÙ~@6Óú•ý‰Ìi¡¶´¢îKÝñ÷Æ[ù7ÉÓVìØÂsÆ#½…TíãÐ’Ã2uŠm?qPßâÎxüLKžýuFv¬Éi©· ƒeMm_©·5ø­–M"IÙƒxçÏè*kê$„´³¾6!¤­²ëjÔv[3ì·?ò’˜ç­°IË ­£!À½%o$û“EU=ü…OµeÉ¢%{Çž9íVj‹?Ú¾ÂΈʶ?ϵ̣=²d÷’}²NH^Œzº¤*©9f.Ú4V­jV{|÷Òþ‰¡–šPùغðX–9æÑ°ã<‡5ú‰ãá´ã•CWy Í¥MBh¯Øo%IÙ½ô$;–üEk,†H„ãëDEåÎϦ.nkíS÷:WeŽÏ‘>ð¹¤rbIYlûÀVÉC8(=În–ƒ:1phuy>v—¨E!¿ô[£ôÏ‘‘¢×Έµ{Shýöœh22K±šdmé¿ð‚æ·pPšUYÙîÆõâZì^8ÒÞ¡sóÑy‰Ó£,®<:1[hdÖ…VÛ¸PI<'<0ZK„“Òœbú=žAú»—ð¼Î˜.=~K¿„FéÈã‘Ázô¾~!oË~=ct`ê…Üâ´PZ:#IZOïÒ!£}³µ-?žCÜÊÊž%šâ‹0Q®–ü/üjOá©F~iý¥*l8¨".‰còk’‡ì9Zjèƒ0UòExÆfÌ–Œ„©’‡¬Þ{…¶i…0Ñ3ªújH}ø*)yòc Ý#)=økÉ÷‹;’‡O™—â«âiɳYο‡2R9Ò£AÂÏ<~>B¢©“o=¬À'æÖé·]­©‡„d}ÆË€òÂOéìÝûQÖMñe©Åšå9¥N B»ýX—g’–¥6„þÒ‰îhù÷Œ{µðçŽ!íK7G™Ôs†â´Ÿæ§´†4„ÒÙ°ç“–å1„:û±ÎjBµöZø. §CDíв/_‡ðFzй­}±@ÜÂÙm;Ï«a¬å~dëÍú¯þIË&K§„MÞ?4Ç—F×Cìa­!Ò—­˜†l‡£ñˆ‘Þ <Ì©y¾o—û#¯ú°6üžhÅ‘M yLG°~«^­å‘í°Oÿ=‘‹öõÉÃáØÒº% 2G¤í‡oãêÀl¥çBhÏÈ´3J¿#î^KçÄÅQZÈ{:fq/ëjËÅX’Fðƒc\^2®ŒŒž+IîÒ¡}hùá°÷õ%«á}t¹g„ÕÞWV™ãD}Pr%JUáϳ²&^‹ï£æ+Uã°g9±F?ʼR5öù6*k€7¦2??=’ g¹6% 6‚{®%½ ŽôÓJ ïçÖÔ¼§:4‡Ü%Ð#y&)ì–ÖŽ:®TŒãÝ>ÚŽwO9R÷Ë„«²-í×É—zMÚÊ6ˆ¡’·qÑó£”l£Î;n#–çRÆ{!C+W+Œý'rFËš[ºZa¼ö¬×Z/¼—5´¸ä]c¬¬Qç)äW…·Þ7ŒUGëÁ© ]…m^iŠ=eS­]­2’~³¿Xýq$N›g•ð‹ÎX±ð®†Ñ±í îD-;z-®\:ó¡§ì³­srÜé·VØz¯!a·Ï£c}š¤„l’eæ·‚Ç£çÐûR­&ûe?cÆ%aŸgFJùIx>¨¹Ž–Ž@½>BZFûõC/dN{ïÎQ¨£©t{”´†#Bã¨ø©Õ ö`ê‰s„ÆÂÏ›ÂuÏ £â”ð_Ò¦zži¼R/½…ä…]^}7r )„ø’i¶¬á—-g¡´d*|öþ¤1Yr–ïׄÏ^¯0ÚŠ“Âòþ ï>ê&ÊÎ%SÇìÍk|ýÚű.ÝALÕÜ Þ ¥oF6qÒˆ½ÃN=/2²J[„ˆâZ±ô[¿åcx*À”xïÌ(©Ñ ·%Íb)›úÇž}¾o…–yŒ’ŠpS¨¶º_6ˆ®jæVFh€°lîß4>J¶Â{ÉQvì"óM<”¿é åCw {–WЫæ§[ ±U§GŒ»²z5K¨Zr~k§…÷ó±Í|´aÚñDäpâ‡1óÌ%¾gõz‚ù" yæƒuùðëá·<„䨭þ›[焱’“lÓ7mõâºIÒnŽa~Oô$=öKš²MÏ«’²˜]‚·²3÷"õZ]bQÏé|†Pɼýz¢ï‡ký™ãúå!ïg<ö˜ÖXñPü^K¦Í±‡ßzìF±FbtµÌÅCñS¸¸«*GÇÕ¬)T—ºqà÷  $¨57qXVã™9½ä/Rè‡}¡×¶fÜ cÉ=ÇŠ«ïþˆ‡âç”]Hoí+õûÚØª‹ÃÑ«éÊa¯K±G>(ÌøEìdD¦UÎ2ÃóyŽì±p\3µ“,°~­+»)±üð\zò(úÝ^µQÆ–ÃÕ~íu==RãæáWXڔ璜d-½–$*¶¸6êúá×¼v1sÍjV|ÐÉ[åÀ²fŒû=è»%ͺ(dhç­~ujÒsY†ãÓµ¯Ìœ.?Œ±>«iIlÙæ L[ÒïAï9.f~4c®Žk]SQ«â!qã­Çãuƾß3ÍÈá o‚]Ï6bt3ïТé¨Ño•Ë©YrÈÔ«LšM eâÇAuS/Ùo%ê—·ÆÅ~øU¯„gY!'!‡O_Š>Ñ:ub ‡Ž£«ÆUѵ/׌±]ke¾Êuµå2E)NúOg*t¿aCS‘‘4Ö>Ø#ul¼.×g/ׂÇ9I­9³ƒº¥_t²ãh¬ $éõ¸#1Æz½\’T¦w$Fà¢wñÄCñsÖv¥i$öœÏˆ™S•«FÏÑ-íø%]­ŽÅ~†Ë^[HÓxî­WHÓ ß„,gçØÐÏZ¯Ìuóð &µ|ùu0Ø–&L’Óˆ_Ƨy¨IUœˆ‘º@ÅATYuW'ŽG=Ôç@ˆÖ‚ºä¨Óo­°b¬ßMŽÞ~yÙöûÃ[!â4(fR @Û}„çRåúãfŒ±÷ÀŒ3÷ö|iF"tT„ÐowØ6ÏZXì}Ý£ÐW¶ÝÛÕE#1ç‡CY{±3Á[gúÆŠÉg?Ù!ª²ÿöH! ~ãô~(i éμOè•nI F2P(Û¡_²%ëÖ³'¨“›²é-ûõ. QÂ8Î%1IT˜~2º:פªî°õ‹©œ1¶—bñC¨xf‡Â^áCßGJ‡M—¢Å­õX¦gNFhi‘ݲ´W=š[BvTv¿Y0êìJûØ ‹³žù¦v<ªV‘­áëÑQaŸ,Cq‡g1Ë”Ž½±Ç^̓߃.Ò훈Ò.Ï*]«‰G¿ê|b™G#…†³…•y^ed"È‹OFye2Ð9VÝ!äZkg¡*ŸcÎGœœ3-ìSÈ) ðlàp%rËâç;ÅN’zÍ/F`æô ȃ¹ìWþj<þ*ºrè¸<ôFHpÞk'½´«éòÃ÷¬}ùÁIyõkdÝ¿À;[³b«ù °ç¬¿ùW>[Ò²7¿ê#sÅVãñ!ž©Y[¤9ŠQ棚,¢¨„ÆÉ~³NÓkžÑ–hØ!Šg´(®x×Ðc•EÉöçõˆý¬Àñf´oI+{ KÍõ¡”žØ~dKòˆêwˬåûÒ-ó˘ò{¤N XéiÑölÜ•Ôe Ô†¥Y’­k½:£“€ãJþø~™uƒc\D.óVÚÝŽ„úE‚•{èrw4è·öÅO=_BTٛ׉S=Fj4²ÙSp•'·Û¯,iÖóÖº¶ è]c–÷?m][š3n¿¶´®˃-årêpÕt‹/ŽËµ7¶¯wž^g±ÎRW®ŽÎŒv9½„¸ÐŒ£%žë­ˆâä’… ¹¼—i‹¤~.y iô°¦ÿ±DRœõ7…UŽÓV¹òR_££¯æß·¯./y³mdy<¯âãÕÖí×hàÕ˜ƒVê1_®äZ¯õ¬à×Rì!KŠ4Œ=k]ŠXŠÞ\9(·_Xãrb•ú1Ï[ýÚó¢oƧ¡ü5Òe}¹ò|4ÚšeNåK·ùµÖµôU¢¯ƒ\ý]÷TaÆIk‡Ç±ç™nÿ«ÔÛâÁ$÷8à L±ü§ÐÆsrkPRšUzàˆgtÇbr<¯aÓóœƒÛc}ô~m¬aãÆ™:G8<¨Yÿ¤«‚£êi ÈÔ:wlí’©f y>–o‘5†– ½µKΪԌugq¾=s?ïkIeù*ù\5­1Ö;q#´ozOêxÜ£BÅžØcLa5\çrBœ3㛋›==Xbº…´ÂP¾çuvÆú¹Ztd㶬é}êFecÿ ÕZ›´#k›RŠ“mD»F£ªÐMXÓ[ðVHç¹­­]OZÞí,#’Îѧà°ÐI3:õî:À‚Ð]à\ÙZmk”iŒ­<–i]4‚‹zþ»ÍÇæ¤©Zo:ÖÖâ-ÛÜÑŒX¢5µ–ô:rzø-Šô®Ñgþ«,AÆM¦N¨ztq…¿·~ù‚=–è–ÆK6â}±„Ì©#Ö¸F ô,Ñ:S ö¼Íç­1Í‘^:f9Ö¥VFŒ±Ø‹üžoôýÈñ®õúhV»Õ‰âŠgͶWÉCq€r߉RÇÄAf< xNwtªFôËc´K6;úUëå¬k»Ú«ÒÂÚ÷ðŽ£ ÒqZ}WsÎ[3¨Ðsõk-4¿Ò£¹’³"_#ù%K•ÎÌg¤µgHæ‹x$(9'–éj¡¿ò2ê·Ú{™®Àø-äQïŽ_(T”$]¢y6t4§JJ'¼¦#zdûFTi¹x°-²4uFtÆHŒ‡k-´Tñ±Þµíš9Ó#‡‹àí`‘ŒÎjS¥^zúr.ßÉÿ=4ÄöèTdz³¯ìØBÓvšê?ëâZ³Ã²`E‚ȸHݪ¬pR.9/)u; ‘ƒ)bB±×S)›´fî Þæm–[‘%¾=Z©mf†þUªví°ü–L@_ª•õùåçE×èÕ¯MÓo+Ÿ@Fj%l^z«õ9®ÂŠäšªÂ{cÇW(Ô´KÑ–ÛZ/ø8¸R_šþ°ÇÝbÃèL…ü¾—sS ,Ãô䌜>\W@#çeu5×zãü‹+âÐÙ^TÀ¤£˜”Ùf@ég/ógûrÒ »K@ DÝrKµ¸í…›¬¾Ô¶¹-_Ë4ØXsŒNýNÑßÚ!aIÛã±d$s锸¹SðΛ_GKEÅŠVl#§¯táE£ÛùÑžT=NZgWQ€½omN,|oMçfª`ƒ¶(¾ˆxrçÂý­kÍ–Ÿh³V+¬ÑB§öUE^²œ²0×ÑÜ\Xcuå® Õ:v› Ìé–;{4ÙnÔ–ï­âBë¨Þuè É~)’^­“Žâ÷hïŒV¶\›59¿Eü‘–¨J±µË›mî­K×iËå·ÚÕ¢[èÐm8xÖñ…$ å»õqjÍGh~ãYÌWÓ¥Dzݯõ’í*ÔU"õTéhzºÔo9k½uBAF’œ¢Å£õñÓheKKò‹é¯L^’|é!ßs•m<×éghœ´/3†ö/9•v²²¨kO¨ Þªà±tÜኩ³c¯!³RoëëLbJè—ÑË8«pûPWÕ£BT[•{´.Šk㑃5ʵ4ù=B¨>ñ6U…š-­Ç^ÄUµhíôöî~ˆF!‘(5W ª¹Úfèšã•Ë·ZN¼FÅŠÔÊëÛª……¤]TZt Tm·ž«¶iNÙÁ{£µ¦åG¯5K¡Ýž²oðÈ®æÃ7ùšòôh¥=\³W• Xû%Áú|aK°´¥ý²$q½Ö;žu®ÛIö:°Ïò;*8©HkÌsX¤žÐþ<²8ŸmDËJ+@/“lçN1 êóÃÏ:‚Ƶ?¼—íŠîºã;‡ùÖ,Y­øå«zºýÖNê¹ZÌFÊßx<ÚCQë¡ežÔÙzdµ=‡²-øÏ[ÐÝFŒ·N<_ªF‰§¤GgøoÝ¢ËÈâ…‘‰>ŒOÄÀã»ÛÁƒ>® ×B&a?£Ô(eêõz"™‹zëâò[ÏèÑx ¶j_˜îFIªõ.‰,%8µÄèÖã]íÉ×kŒ±¯ ÁCÖÑ*ºG~ôGBΤx® oíéàÓ/ºD¯¶6¦#fE¾ö’Cº¸' ”ßœéSHM˜8wÂlªœÕK¬dþú£©Bã­–ùò_RúY8"=xÚ£Q¥XΡÖA}é¾Lƒ¸•b¼[`Š¥Cš\îS,v¼U<öy‘v¯Atµ¶3}?zhš¬ÅÒc;òÐë‘¥ú5§¬ƒû¡~™ÓÙÞù½³š{OÂCØ_F¢ðU¼eG«ÉÂz†+“ñn½Õ£=j3sˆÁSR'âmF§• §ï5)ë6¬?ƒ[ñ\CôTÈŒ}ÊÜS ní5©Ôê¹+¹”g)’žÔH_`Sµê³=q#ÿΧ²k/xŽ“ÐÁs¿yŽc|Ü~ÌG§‹R½ÆÃ.kºƒlÅtfº­ÔóRÔú‰”ýÿ.¾]êÑ—¡¶¬b·Úç’óVŒbÖïß-“ÕHhÞj¬Çr=/µÈÇ3õañ+Y¥£&Ù)Ë 'yi \ѲJ}øE{ Z“ié„™õøÁ|"]Iã{¾â±K•¼ÍÍËkX­‡Ì\ÁGÅ9ŠM4*Çw×ÛéñûÛKëRmmÛ÷Õ»}zFr´¤EûéÝÛbæ´‘n®èÓ%&ŽœÈÛýHË[]é¨EéáÄtþ{ŒVcú»-ó/ÌnÙS•læùX½©/‡/ßó½/¯^˜™‹ûÕäïç·ýШQ{j¯6瑊ú=àç ÿÃÏ|Æø½µ‚·ÞÔ;i§òÝ7Òk^o9\oÛiëÚ‹xÝU†¯•z°F‘0èwã|éÉ÷ÖºÑþö5™£-Ò9i| ®yö|$(©ŒCו¦Û²–³—¬xyo} ðð{œçjñòÞ–8¯]‰"µxäè­©-$=_g × ×uMø·¯ãã>miò}ŽR̤r,^qµ6Xãåµo¿Gûבà maA¿k]ÕêÍ‘09QKÈÙ3Û­µÍÑ$»žïÎòæ#•ý´"ÙØÄ=Í]+tof…Wg[´ÒÛ£¿æ‘¤&Ù–·GÛÐïÕ>)=Þµ6XvÖ9é§þŽGÿì¬9ž«EkÉŽG¬p‰G½G\åÃÊdžE÷ÙØžOD5#éøJͨáC3R ê0¥<É=ïðäŸG4sž:¦-Çj½B¸¤9G—¥-¢¤¼z}põñPÚmÐx²g?ÖÂã…’©ü£#ØÛ)õíõ|\E=/~9f‘±•¬b2[íÓ†rºuiQ£Ö_Š˜WjNðÎH6l¿•ПœD‹µaÅ[Ö‰ƒÅ+<¤8ÕV¬Ò¤åVVŒ¥¾ú—ýÑòTX×-­°(ŽÒ¿e]^¿³<ân{¤ª¶83:Ö«Q¶Çú$5ûÛͨWŽZêõ“ƒŸ%â!K%dÊÙºJxù´¨xu©*‚²ÎÍëûÔJ–%ËîšPå ÚÌ7ú÷ßƒÉÆA1_ªQìó%0 /§GÇKú­Uô«ˆÒ(kϸKê]Ñ0ìo$7!ó º²ÕÈwZ¬¡²âšÚµlè6H VQ¹ÌÒ‡jPPN9‡d§#Î߈hŒ«¦¹¦ˆ‡¼þíí_îå N˜pÌ[Ák9.0â§;®\f§£Hï®çœb ¢ë¢´4C#9ˆlãaÙÀ7e€šÁƒ¬Èm?Ð0¬K…(ÊŒ¼lÂãP¿®-21ïñõÞAh÷`MQu’L%Éër󯛉Á9×Ë£&ÆW %Ìö¨¢…=Cñô<çÊÏÉl›©Ô¬Ï,ªH¡k^5&µy?½™ ÷V¯Y‹•z×jêú…†©^ÍÛ­†n«´ ×ÜðzíWÐ/G˜½Æ_úcdnKŠ(¿!­¢Ÿz©˜$&e'³ï|ÛTe~âlÉW]lŠgš$EÜHA¥òèû€R±•ŽA™ 2-¿åq·0U¹ùLg:>†¥¾FPg#;Ô¯0¬öÈI@± Ò’³ GÏÛ+sÁ‘5XãRÒãm4€®Ð¬ª1Ö+­ä†¤$h§ãòb·Ñž1"ˆM&+…Zú¹†`hô˜ybdßÁ4Ôé²èZP¤Öbt[2-)À˜õR•Óã I_Õ¯MÖF!ÑkÜêk>¦¡“›×é=tϪèxÚ¦«ß‰:£™û}ÌLü’ý­¸Å£]z‡Ž;Õ¢UQÁÓ  +ç­‰ºYcìÍFgåoA—‚.óQæ`sÒÿé‰úuÔ{\f8[Ó-‡-¸OGòEf=Q¢×\ŽQ?tkf`™Y#¥ŸÒE¹bóVcç[ûÖRĺÒC´e¡‘χ¯Ö_¿e§R‚ã q¤ÝònÎꉓFá™Ñ‘^Z’'T™—Þbë¼î Á©ÛA±Z]†OsTºeÍßGè™Cn[ƒ~Û æµÃ¯Z¥Ñ)\R»ãȰ_éa‡ddÔ°õöIô\ÎYÒèÖ=Ó]£¯e}ø#Áß Ó²nÑ5#)É}=v VÄÕÞsP¡Rüš½ä5òÕsóÀÈjŠŒ!êëá§ÑÎ:e+ß—¢¢0Gß̓]íjH)ѯƒŠzz']Ò)½kÇ\ìô¬! Ôž1•Ìu[A Šöcž©±G…ÊûÑ¿é·Æó¥ô^ïZ³'ê塸©ù÷ÑsÕèC»I-ä,$ò¬÷h¹ž×ûîA-ËÑ:•n_%íG¿lÏÖɹß­ž^ª·•#GQo{^ëŽ^Sµx$ åQÉ^ß—¬åÖúpMViïRb’&Nú¨BŸè°Aç´dKYûÊ 5e;¤£Þò+OÛÇzt¾´GF¢¢™þúh³´1ݱ=rèhi”å‘”edI×xžÇcÝÖVIGeÈzÚ%¦k„5ØŠê|FâÝ-æÐ0õ(ß/<ñÄÑ­”ñè‘5ÛZ±â¹øa»’f­ÐHWŒÄb[j5‚BɸÍ»g~¹:ߣ•RÞ ,m¡JúuÒìÃUQ?Ÿ¶ÄáC}‰q1â9-ŠÞé·Ù¨-ÎJgϤà ¶9FGŸªM‡4]5z©9¨³üÓïÌfîâ¯Z±u©æ…–£ªü7C$–m=àµõP"<íqï^uRhÒs¸z¯;Ñðûú°CbÊG˜#z©†¬ì¶zP\¦X¤õ÷|#UU[©R«þFß‹.‹ÜŠcSb\­?îæðsÆX4.M6®kõઌ(ZA½ÕÇmYÌüÛÒC—úp[6ÔÏÛÓ¯ƒªÃïmé-«¢9e=²Œ‡:)·•Ðü–6´‡:IÛNKæ*%-½?¦Ëã©V~viÎ#-;qóKtµ½[ò¦ÎržÑJ{¾ö$ëȹG+ýå ë‹U™&”‹õÓœNñe¯´Ï[%ÚìêxecN²õhZ¬××cQ²1qÊpn‹Ç4îþpÊr4'3¢Bñ@Ž!i´˜jÈ…Ž×ª‹ìÆÔèÑkYîËÚÖžÑ͇_æ”ìJ¨¡^Œ#F·ÕNñ—‘ž­íᡞ(lµþY×­!ê«<ü2ÝV ZÕÊx÷vÏè[´5úCÆæû󛞧u‡È·x 87ÖnËq-¢K¡ä°ë„Ì©}™_æ}~ÓóY°þõGçDÑÌÑ®§xgDüm¾mit¦ÛZ¬¶z´Øía~6iÜêK-š_rvGsô5NH£+Ÿ]^)zoG³Vh¹žÏG•p¨Mµï]å£GíÑ~xdN{,éy>ŸqyÜÖ³úðpŸÆátø2Ÿ·Äo!ØÑŠZá 7_cUxhŠÄm8ŽêÝüh˜©pÿâ+i]ÏžæœQÌxî¶ôÔÜ™ßEÑz¾›–eôpú›È>\rÿCo»Ïúô¹~Ïhݾ™¿§UsF-ƒg¸´ŠŒ¡¨D‚ª¨ìÓy¥²‘áù‘¹Ÿ•Áy’‘Oy%‘9_‘Ýöû×ÇG\²CÎ?dV½#÷'2{"O.ËÎÈkkǸV…«/8 Ž«ÅÊЀkž<8Í=OÄ(8FãK¯Ü‰æ3·t¸\Àí5Ÿ… BTæ@ƒÛ¨ÀÕ H)Š ¾Ê¥è¢¢¹Šh¶h’[yn­*ƒ¯`0»N„‰•}`ŒƒÃ…Ѐ ƒ'oŒo\ßiœ<ÆÈ øú ˜ ÎÂÔ.,¿›85¹hÊDIÎG({mŒÉï€vVK`Ònf¢fòñ®h•wx’gÜy¬—÷Ü‘¦á×ïß<|Ê“ò[KE¼†£ÉG? ÇñãV•ž¶† Î)ç1å©HU.8±Vp¢ð윎»,É,ÃÌi & Ö¸‹Vö ÜKA5÷/bø¾‡Nt_@¦c`/*TÜ_.¨òyˆ‚ù¼~Ã(¨Â]Pȯ€kÅ"?ðân1ŠT-( YX°×Œ8ï(ª._?MåÂZu…‹R=H+¨+UPè¡€åÜ.ª­TPfª &KA¹ˆ¹”´)ª$¦w‘ø qcµƒ(ª˜R`,YW r \æ.HàVô áßßȦW:±(oeAÏ‚üsI¤ òò$:,ÊìXµ gaAb¯‚ì_éÄŠlòùƒ¦?•*HX”ñÒ@$HR»[‰üHëįßÈzPp‰·à®YÁí2™Ö¸ oZÁ韂Ë%g-+”£,RÂS7á ®9Ü,8^7G ²ˆ˜UòUœëdKEy Ò2ÜÖ©8\Sqb¯à‚J€Ã.¸3Vp9¡àgÁµ²91*¸Wp_¦à}¡rë:C,\˜¬8EQ±ŒZ±j÷}JþÁ¨*ÙUœ…¬‰ôO~礵b³¦bmµbã/ºTq²¨bï·¿*ö•+NýÔÔô}ÿ¿+6Û*öJk"š¾/µ/X?)×ÌWË ƒñ±bæ]±W±RZ±uQ³Ÿg &Æ6ñ['©8)/б¢V1©Z¬Ü¡©X¯˜8WÌn*¦|KIU«ásƒ @ûÞÿÕ»**¤×BШXÎÐÔ/´¨•ôpý§Âg}¿âÓ ¾ïÑÉF›nãƒÂï3žã¥Œö¹®U‡V@ú‡ý߯À€|ŸP²ªü+ÙV9@ºÀ¯…oT,ßáj+ ¤¨s­bû á{ëkð_á"¾ñ‰^¶ò!AEIߊêµó%ôרsì Í+*ù±ôG™´‚—! øßÚÙJƃJ™˜+´´a뮢¸Ø7Ù#Ë€yÙ÷*ŠúUT?¬À³ªºÈåÊ**U쨨Âmɪ U>¨"ƒaE”Ф,¥v¾|l«ˆ*>Vd—­H;]•W³Âw6,´·ŠA€H’ ׈çLÙ+ÃÞ y cR¢TeE­@”Šœr•ùpøþªËßðç÷éGîE²!¾÷ãÃo‹íc@¸#[‘† .NQøqÅýì °©¸7ÍVØ^ÀýõŠK®·í*®dU‚—.wWœ¦¯8äßpÿ¢Áî+î¼~ßP„¸iSq£áØkƒ™6œ¯º¦B‡_ù,½Í,•L^TͪáðOù—†ýà÷Ù°›Ûtj©2–~Vál»a‹½éÄOÃMâzÃJlÚMÊ÷÷€ß#Lo`-ŠÐÿC]÷ïñ¯Â½ýVÑ œjÃaKÔ£Ç<ø¢Éï);Aýj¦÷fUD–¤dõVÂe 0–Ocžp–¸b-8—Idæn¦åeöF&5ef§Øfž6&cV)fIbžA'ï+8ùTþqµ©£-·\š–þ˜W‘GŸx’'îy!Ò9ž˜B÷Éyp·óx…Þwºy5·sx˜Ÿx<Ï·<…쓆<­ÃÝdnvqŸ‘'Tº²¿pŪš:ª‚`ð½‰XÕËýÓàïW„äï¾?†|¯-UÒ@½Q'ñ!ï@[…Z*4¼¨”<÷4²%°v [Þ@ºÂk³C)S.· xËëpÔV2µ¯}ÃHN6á÷&´æ³Ù¯;8Ï¡ì˜Iÿ&¤6‘¥i"ìœpãsé” loâú÷Ä]͉ëA÷§ÒLøÐ‰ëU G±®6,øõ©K7z. ,,`-œ#›ÔÔÁ÷†/,K/,Þ,pza÷hå¦ç›Ó‹þoU´T?[˜~6ãúOñèSæor’ñæ\,Å«ßȾa«¡ixƒ¯‘ïZE}ô!,Ô!^OÑf<Ÿ |¿&>Bûÿ¢Á…Jj«s—û{ &CŸi,Ä} @ž£.ãBá°ÅÚ+_K§©Îèc N¤À‹X¨A±Pâd¹f•/ÌÜŠ$ˆ å>XˆgÊ¿,äâ_H+¼ù.*ïŸ^.$I^Èi¾”š|!cèBêÀ…Èlq*‡\|ß„² Øàv!T\‹ÑÀBJ©…)àÂ¥­ð]H9ò½©ç aáÂ%à…¬þžSð_°æ´^P©…[ìkm?Ç£†é%瘠j³Mº® _Ы­«PžâGvÅy(tvÁ lÝ·Ajÿ…ky_¯M- ËO‹6,cc&´¡´kO-ä´ÙúFŒ·qûÚ×Ê 7ÀìÄ8ëÜ€ ÉòF̸qmcN¼u|ã„úF¹qhnã,ØN7 ظÙÂ7‚Çá¶bÎ…{ÀëÆâò.œß6 †çŽ7ko¾Ýð[ÎiãÉÖa½óuÎk7ÂÑ9(:ÇÅëÛ{§ßÀ¹øy!½Ç‚‘~œ¯ÐØŽéoÒ´ŸÙdðf# YÚ§&k6BÚ]8ÐáC 4\<ÿ¯³o¤X4Ù8z´6½ÌF¾˜ol€nìOmD¾ A톃ޙ$â¥Bž‚Ý™%/ÄLx7@gÊd³ëenk#ÂÞXÞˆ\76¶67¢ì¬e¼µ¸ðzk¿ÅMc$X*ÝXéÜX–ÞÚ4i¢–eQèdc%}k‚½±Ñ§l@£»ò&D¸üx#3â®Ü„ld’·ÖåÙ0î*ù’ÄdVmVœþ&éøu, …o@áÆ7!w´¾ÉãZX§øœò÷€g3»DG§ˆ&\±SŸìý‹ñg㣌¦Š† Â>äû‚¸}i©âÌ6¦,*ÈZÃ?¹S¶1§ù^øÞj6êP}p„nx» ¯±É­7¼ÁÆDæ£C=€FH€çßp/ß—IàÌì u€÷¯Wò!ð®ÜÇrÔ×GÊpþfkí“FáùݨÒXQš(?Äßs<`Ü´ õ_àö}"«ÊVçøõ 'ñÌ* AlÕø!§Á>ºX»³­ºd“À,,™n&VK¸?´;Á€ë3°èWØ1:ƒ½×µjÏ’˃dR QÑMJÊD#·Éã-x}‘ì¿Íš°ŸA#h"²Â¦vdSÅáÐÚµM´«?0˜^¥)â?Ú8t}ÿæÐ‚¿¤ƒ†Åϱ4õ½Ñ_½ýÙ¸yÁŽý9×àÛ ìÔEH9r²â]4é;BˆbŽ Óü{$‚éæF½ËoD•¿¶z¨A8… ßÓ‰-¦s‹ÂÍâßk[¯‘ÖÛ§ío°ü#xðiˆœPìN~‚X-ÛU6&«[5Á=¸q~EmÇ…¶­óÅã7Ý6f¯õ7™­p†tmÔGÙC<å M!ªEo,,nÌŠ7f+[5ɸª”ÒÆü—¤R“;°.Ú«²t,òîA™NÛk¶raao3'ö×=MlZ—†-áx, C&’¦÷5"¹›ÙÑQ8ïL‘áÙž|ô ¢†h 5iûFêý$°¢ÕEªä™ßXœß®Õià y#áËÆrÙAûÆ*Àž$ï‹Á6cod_ßÊí²±Ú¿Qec‘qc]zc†¿]¤¦caVÂ*àFè·1[ fHT¿‘ u/’‚1!¥wc‹£è0ÝßH± 6ÿˆ ÷C‰L_œxs9ñ"DÂä}cùoO^ÙHʸ¹±Ù$âV–¸„SÙŸ6#>–Êé¶7¤<ÁKD¢Ë“[q6÷:˜Å%ñRlÂí÷%ô­ÌŠn S‰ù®Ën¤8Ù[Þðf®•ÄÝ) HaHŒÂÿÉ|ÌíÞ M¾—x±0ñVâêaâ³”Õ™RT&BO<¼œx-ñ°_â®ùGQV[d"«&žÔHÜ KÜ L>R˜x(ñ´@b’¸Kœxz"!A›ÜçM•T Ã[[ß“]ÜËJX#Ä[ür±•Σ`©lî a‘雜óßôƒp"xÊ6|]³cWHÏSU»˜E%¬ÿñ]í/q\ÜJÄÀŸ‰/ø»v?œ?~ X½Ã[™ÿfË< ¿+¿gMóĪ€©{ÃJ\g팄•;<á¿áyR'W»vŽ,±Žab*áÄê|‰ÓÐÉ„Äêr‰‹n‰µ‡« %VáJCÙk…%ÖóI¬"’X&±’NÂNÿ;^óK¦ôL¼Ð›¦N=%æOL“˜*è¬Ê/¸w§ýüÄÄÁ‰iO$&&ŒLL(õ=M~ }1QbâæTb ÄÄyÉ ^{'-ì+3ÙC–)0ùdrnýÌCð™ ×™ú™yÎ$ópánpÏ5óˆpæñÀÌÓ?ß/Mé5À·Œ˜ðûËr v‘©3ÙÚ”± õ=Å!3å÷·ƒ«È2Êßý¶É2½xfuÜÌÚ.8yˆ§n«3õ+7f¦(̬³—© Ù• 3üè÷z”Y}9³–hf¥Óìjê™õÛ3%œY± ³Jhf…ñìš¹ÃÖ2ëâf¦àά–©MÙ5“2kÔgVAά0”Yy+³V`v]æÌÊØ™\3ëêdVɬ閇ÎdÖɬh©YuäH+¹ÇÜý™õ2k?dWʬ­•Y·#3¥5w\¿¿”³«eÖ×ðoL§˜™ö23µxFVRߟ™¾=3¥áGu+3U·8¿¿àháugí¢bëTo >á†1¯ÑÞ*¼0ž‘zªãÿ0ŠÂÛ¨…—) s+_Ó-¼^xY§p’T¸?_о;)f ¿Äd¤ð[¡¶[/¾µÇíÕï9Æ]ˆ ÜZÅw|wpç·Ð Ï.°_èû²x‹–_0 ËÜZýþòþoÑ!ÍB?Pˆó¡eæÎ(þÍ~uêÆß4Ž‚ØùÍHù{gëJªRx°TŽëdŸI‘ŸœÝ`ãW=VÒÅaÉ+¢SiâT5]Tn¶[-J°Ç ¥êÂSÂâ(k¢ ªŠ’° ½|ó  ŠAèŠæÁÞï÷Á§Éo‘àF¦wІåãK'ëšÎ‡óh²ˆ¢÷.?…P;cŸšBÁÒ_æÆòG˜Ú¤@œb|ÏùV% ¿TàWt* Pô}aA×Â#-ba´—ApÁ°0¿îÇN>•Ó/ÌÖWhÄ……¹i~Ù–Nf¥/š8uŠ“ÕÊ€tà´0´.„nmãßz>u8#‹Vž· §iÜ……ÅÁu½Õõ´6Ô××­iÐ[ì™å©¸!}ZTë.ê]èÞ mÖ(Ìÿ]X‚¢LsJß3|aN²õÖæ×rÔ…e< ³›fË-„n‚uì;ÈPCþå2m'hˆÊRF›Â\æ…®°0ë]avÑâ º]æÅï¹ÉŒ¤Oü…:³”ͯ´*W'+/ÑW^.Œ5 ³ù€FÒÅï+S˜Tæà^tæî9z"õ5éü óSó*d¥!V^Ž­¾T]™Ï‰ûÖ™›ÇøËÖ)Qên΃¢Ì#8LïC¯¼ûQ]¸ò^P%ÀU†xÜ÷E*˜Å§Å‰aøÛäó¤w á_D¬\šä¾ð»‰ç{6ŸƒÏµ~+]p¥“ª,ºRé:u¼NI ²´Ø÷[>Ï+3¸WÖö¨ßì6\¬Tfã« Yªs Wf©­Ì^\©M•ùìªdŠ…M~ßõœ¹jÉogÒ«Ê(Æ0¾)ù ¯Œ7¦ªñ¶â÷_æÂSö<:œÆ.¨:—\ï­FöcÖ)§D`P¹rÙï£6Þj¼ÁÒxÛªeç‰æ½ÐÆ›9MG;©ã†æ;¦7>oÓ4J½ñfJã­Á†{\úå˜oáYsvÞã7 âZuÌVš}x¶Ÿoê Üôs,:2Ýõï¢1r*ÒxË¢ñÐd£SnY¹{Wò!frãñ>¢÷áñÆc·.¼UæÑ,ú‚¹ì|Œ¹ÑE7jbcZVÕc]]T0·[¥ *ùR´^Ðxì¯ñ,[«ÌÌY™!·0g¢c6Ny'Dn·ñœÛ×ßu†kQY)£:ô)"÷гxWfákYEî9næ¯äzuvZZk«[åó-M×ß|òû¿ÄãqxΣWM§êÔzuþm«¤ <%åïm¢ÁÙ|Y`š-òœÝ×#[¤6a•­ñ9î‘ëÜ5øÚ•͸¬¨+-D¶`¸ëÖ•u5ŠXÓ;~¿°Gç_TAn—lOiS•cJÊ =ÓS¦x¶(&èÌ .«rƒû)`©¶ÕÕUT›Æ•<ÒSÇhüþ>&ZMáscotch_6.0.9/grf/3elt.grf.gz0000644000302600021200000013624113303015264016025 0ustar pelegrinpelegrin‹‹[â5U[¶¬:®D¿O¶ü„þw¬Ðœ’×®1ní»N‚m)zØ€}ýÆn×m1~××uýú÷ã¿þÿµÿÖ÷×õý5ÿ{¾¿ïßüïú~yÿ»Çû÷ý?^ßwîºïÿîþÝÙ¾Kíûÿw‹«ßïßµmÚ÷C´›qß=ã†ÅÝ#n¼¿¿gÜÖ¿_­Ÿøñýo„0_¿ô?¿«­_n¸þ[vyÇ Ÿ2ߥçû¥ ¿þza·z\o¦1nŒúõû)pŽï7ÎFʧý×Ûúm¤øúùÆ_qßm¢áŒnÚŽ+!õ ?_KÆAC¨ç¿1ãç-T £íÍ0÷Ê׿–}E·÷ûCÁïÏ~ÇØ÷ó ÃøŸ¨ãýoõèäõˆ{ú÷ïFÄP>šöè«O:ÑÝø®?wHHÞ¡Ý}íÆ×i‹®ïóF×ï‡õÄX-4 I¾¾Þ(°`ä+ôšŸý6r‡vŒ+€7*˜1xHøuy#äÊþ¾†ý¿1è5Ä ‘[t6ï¸ò×›qDÛ±BÐöÆ­èqˆßøßÿè׸¾v_§ã“ìbÄ5tüîûhÜö"ù­ˆl__{† #,Š}JŒ9C”—×ç_’41lV‹^Gð'ñÃÚ  Xßß(ŸÜaò`ý'ü7æ^Ñià#£}c~ä~x_)ÍŒî>`>™&m{´ÚÒRŸ>Ñ<ð¹Gˆ7½4åÙxÁeÌï"„ë¨ýÆû>sâË}}ÒÜíÞ vܸCìç O”þèe¦¾Q¾V-‚Np*œó»íhï¸s…E}öÿ~ 9cˆÅåg…8¡tt÷÷Áw_Ÿð×Â^a˜…$Ï ƒOÑ€,Äønžtp;JÀÝhy_-äŸ;U™üòQïëgj_7_g=„1x@ûþ÷Fë+^1ö×÷7ÂÛã÷m(Ï×yôö†T;À õ>Ÿè3GÆ;šDowаÙ šÜï‹¢;œ:; Ç×n|Gwï×v£çø‰?¼Oˆ¶Œ[C›ï‡;îê#:»¯;~]¹ñ ÉïˆîןPi‹ÙÁÿV±ë3äóÐü¾:ý'ì …îù™EÖY!Ðiî‹áÖ«ÏË@÷µéê B){½/•‹.üNó;"ãÛææcÇ÷õÄ ÏÊñ6¿Ü‘/¿q_¼ § ©î=X¹¢“ÏaØè·O¤‚ƒYÊFBþÔŒX _"EâZ òa¶c\ä¾½ýV¬wRwß›îÞ±»÷‘¿Ñ0u“âãrˆ + 1pŠZ–££­þÑÉ­Æ/ÐthÔ¾¸Ngá3¡ã¼)P˜á—úÚD¶mB jƒFƾSê+J~l ǰ¯€ÓEo ú’Q¶ÙMäe”V³iÇñkË.¯çè|)kèb\d}†Îû#û"BOõ‚¬ašÙSM*¨·G €’wiPÄ}¤¦`µ¤\(2†ô¸ììvLj‰Û;(*Ô1;êoê:?â<ò–NvT^òR¡¶è;qÜÁwšû’¹ïûK£ó¸½§^Ö0wš8ôdzQ?j­ÇûGOTh‹UÜ?[â:ø\ª¹º@4„€ËžÈ)Ø+·£FOs&ÀÓÊ*»+„4¬ŒEh éo4EËÐçk7o¥ohŠ.Û_GétQ~uˆÑçc[€]0WÇh-ù‚¢=õX©)ü%r¼ï——Æü¢©s¡*tzþK'tнÒìæ™ªKp¸4Ί’q$àÔ•D– Áz%Àè€óÍ/ÆŠô‰Ò8” ®Q¯Ù"¹û_êBØÉÌÀ7újjB À@øÉW¢·E¸rK‰2š`ÌH5,$ SE€ ]âÎf¯°G½b6(ØSßè-wY´=cRÛv3áÄ0!Oȵ^õ‚lýŒ3í)"3eŸD›ºØˆ¸N”0Àh1ƒv x¨;r€%~ñ/žðÍv!:&Ã/nîoa²07Á‚±/¦!ÑcO•b;ús9Ƽ F@é'ÚøƒP pÞ"ÿ Wx–2:@„¤!ñ3KùŸÊ[´C£K90äuä¾?]È¿´Å˳è2¢E··©&‘Cß²VêÆöiÖ"²<8mûŽþ&"”šÚ ôxì[8Îí}c´ˆa]œþ b1Gû¨5ûŠŠ~9C×:qü¯‰-(#~#·¨b,l½c‚rÅüúB[‚3 ,òÆm(9–àÔÇ3Ñ«¸¥½ý¯½EjŲWñês×@¦Eì~Qñj›˜—vå <¶\è=µNa# ’mßñk‹ézÈøè®¼Z„+¼3|œÀ´ˆ¥„HDP›3ÂSL€›F¥J “EÇí¾NÓ†™ÜßbÞEElJ´X8‰¤ÿB—,‰¾˜m[ä(Š£‹îðÞîÅx±þuèKwò„ºX”cöxvÑ~\EXŠcD;lN^ kZA¡{s–9nö‹$ ŽR =ý•%üågd±à’Àºž!ЋÜÃRbv=7¿…y 5TâЦ¹C€X7hP“+SëÅjÆÐ"7õ¬výzyû2½œXÔ‰«ØŠòµÎù²ìùjÆŒþ7Säæ !ösJÄ ab¥A—_úGm&:ø ‹aÏP+[zWÀKò¼úGX‚IBDÖl°çw_,ÄŒ²+Ñ ìpDâî Üå:OÓ&1ÑOÚå㞸wd0©ÃC'ó”K1ÂU)Ñ© ‚²Œ‰õ°‹iC% c˜Ù´Ñå•åÀñkxd‡‚?}?_ê= Åò^¸Â…¬ÁzËõ׉E^Hbu1p 3–ˆPò€V 6#:¯48µD.VÙFÙO+mí6 ñ1{KʬXäz’r\i‰éŒ±.Ç´Ž%—¤:_uÓ2«Ñ´ýbt€¡3¼%¶•“¡”@X,,£ÌWÍàí‚£=¥‹^æ{±7¼/P‡8\ê9ÆÜê7Ä) Ùb%¾ÔÊ7ýuí”{®ñ_ë¶GØfoL{Ðf¿IP¿e~vOÅ®ô”)Âçç”hMu$â±@ùz50ùʽ-ñ‚’1Fæ>d¥~—AÀï×°H`B±*#–úì¦ÀÒÍ,_±¸ÓKtt°ÙYĤ¸:z‰ÀFG{**+H„3bìÂVò]j¥Í¦{š Ó¿®Àïv ´@Hœ‹Á¾zkfOqå±·Iì 䙈VØÕUº[ŸËûÁ[›NQŒû#7B†€ðˆOá~Çrð{Ý+˾ãþ¨B6ªC9º¸,.í— á#êGúyR|Q S}÷ÏAb@h Ò=W±¿ÙJ·DŠåz£\Üʉ!ðYv÷ŠÉµCK6ˆgC¤`ÂA]7[F‘BJlêÊw¶HŽOŽ6Ä»AOßlë6ð5»*1-n:B†++Bâ­½¨â2À‰ˆí°ÕpQ;0g«çòö˜ Û‘(í<ÕØ²ÕÙN Ë„ž§ãɾ}JÐ𥢇ßÚ^`„]?\{DŸóöúô/á‚­=…¤o Ý¹"L°¥eöù&E]· ²Pñ? GyãѾÄöiå_„û0òÚ¤xLà Áz¢’_!Z<€¸¹8—ÙP6zëá¥A™-ì#1žŽ0‹—ñªÇs’ ~6Ê_M¬”Öĸù3¬ó”(¹´}xÓУóŒi ,i0¤ ]ú}Ñ£¤¹²ü%%F‚þþi®XMÓ_‡wÄ7¹N^€ù·¿Æó°Èϱ– Ë>Ù6,FTy…­ßaÚ+t¦y¿D¬%þ2ÇÅu<4Š6 Cñ|§=Üõݲl¡(Ï—R„oõH2õ®äähÁ‰©Ñk;@zK‚0xŒ17$¹Ä`Ê߀:žų ªA£­9÷Šeì–1nýŒŒ¿îG‡z”¢+mGÏX ­ÃÉãérµ~¥é£·påf —”¨æLúPÓJŒ…N#DHÃÒZ5@\]I|z R¼±>w\IL¹4{ü:Vz³ì ¯xÝb–g#éø‚ðˆ÷R.ˆÏ£õ×à*ȪO˜þ!Yý7y1'£·Æ=Mq°˜ºÌâe”e ¡zwœÆýãv¼O¢ßƒ}•ÑCÓ Ô¦g¥x#è³Â ^„ >Öhà¼>kƘ†(4~.´‘MFÀ|‹~VÌ‘å"ú>M¯ì¾>æÆ{!d˜þ‰°¨‚}i_•bIÖxÕ¦-ûH¼gÌ+^˜Ùzo6}íZ‚nìžÛ1º™ø‘"ó»:0Œ‚¾¼h”ªÂc ~í=$^žê[ûã#V¬÷57U“­ï-a jhoå„ñy9Ê:=§¯·Ï“xPË„ˆ|¼Ó…W•Ëw[nÑã=•Wí®Yh Qs‹Š`ľÀë“dBN2ö/#ýGú eÌöÂÙ:˰X)(Ôs,¬ÅKEŒÑ=^àŠ± ézàÉ¿>u² rüŽÆ‚¦ãÎô?š5†±–šæÅàí Õü¼'˜üy÷o§…š÷óºÓÖZ<–'>\ Íx)ˆä3Kàð€xŊק.¤xT±?J½«jH^6âQÓ%L·’w‹—ÒâYe´§”Òl!ÓãUÌÇ“Z|6zšö%ј¯=ÅòDǸñúXÚÅ+W€×»-.ÍÖÜi ‚PòQ>Øð~V¯¡9WU›¯"ÃTdŒˆðcÅ{(ðÅø"~Òu¾v;Eþª€™½ðR—=QÙ¨pøÆå7ôu¾ŒTd1DºlÝRÖÇäA´*ò&â(Ü ^ |Sîþ‚ã ÞfŠî Dßâç.¥ì^Iwè8E®=…c5~Ýí}+ð]ÐwÝMÏ 9ñn`vzf ÆZ™€Ç¥WmžAà|„ÛW‘ ”è¼ µÂoB¸ñ–Y¡@Šðð¦)¹a085¿°?[ÏЯgÆH¬Å«Íç8à\* ù~áH¸ž £¶’„’-yeê‡K~|×+Þþ2*ÆËgl0:îd® ‹S¨;C@GŒ w [¾ñ²(&g `MÈeXH{Œ5£„qV¼UØ)á¸òP¬ïŽE-2³>@·ÐñI`W ¼½07¦«Gˆã¡õ| nƒgr0ôÝ6„‹"Ä q#9Å`˜|‚aa€¨6Ÿt‰4Ä+ bUò->2N›„ÅÙ€bä„GÞý~ E»MâÊåÁ”õTdŠ𽩷,ñë«è°`))q;ZH* v}³Sh‡NØ:ôŠ “ÙÁÂÅÈwöšPꆷf»¹E ú).þ ÔŒ@îQ¤üØÔ›ñ6tÓø ¼¥n0 s„†Ÿ¦3 BªÉ/"P7Ýã2zôê.fw?íöy~V,‘ag¼=°¼_Ìf”ÌøGXwþ2‚(ÃsïÄ’qßlMÛm_N˜æ½éJƒï_’PsÒç/¹¬Å—°Óó é §¹{r“1?éàÙ} M°‹r,ÛÝÒáZÑyxŽº£[ƒk!óŸ1ñ2ÞŠ¼âýåË‘å-k‘ì8ü(j’ûýo‘my?;0,dn†½‰æo*£íl¿5ÿT+ã44›mB¾ö2 d@ÃоGwOÑÑTÛ©eV¼"]•ù AŽ–Ü¡´eEu¼ø]ò}¯[ºÄ°QÌ…b¬²IŒù»¿÷$ˆïncì óð2FLÃJÈWnŒ@Ø8Ë~ºÆøŒŸ`ø†ËèábÓhªoX ”ƒ~ÑC¼qp]ñJÔ€¤aÚùžÍûN\¯ƒémç¼ÙŽ«ÿœ.Å´i÷xK»±öMfC̰9ð\OäÞÈ'áQÁ N^ù¥÷…h1* Îp%¹£Fe JOõÆýÍ^¶×Y·xÒ¼êÍ_GÂCµÉeßÑÛØÛkqÿ(øxÅŒ¦¿ŽÂÊ×ì‡÷ů³¥l‡ÉÌBre2‚ÞW«Gâ£Üê¬]ü’×ÑwôÔ]6¸X!‹9àR3­§°Nô¹âÓ‘!^mêi/›T¸HKžÄ|Ÿùv`ªp°c¦"<%T­é¯óI¡`jÐæ…ÜäS„ 0Ôø >xz¾ØÇ_c,¶M:¾2XeH¿k¸T+$^e®øŠIÚ¤\ŸÁÈÝ‹X–6Ý·×ã…`WX¤Å‡@¸ŸÞ|ÿÿb‰;ÊwÅšÔªÁüâU‘•WWE¨•÷£D¨jEhá«‹&TÈÓ¼ `¼Uñëð*pb.àˆ_§W…¬ûµYøã³‚a£Ù¦©YÔøÑŽoD`/Ú}ÿçwJ Ñaú«ß"„t„ÇÛûÑ¿ zA»6j@ù¿¾ ;#Æ]3Ö"ñŒøå³ÇŠo®´B¾Ux¡÷gÈà Àb ™—ÁÕ˜u“îÖ²_¢3x± )7 ů”™O.vbÊŒè DZ\³ãˉ /_x‡À%ð ™áCˆb>¯¿‚¥ÑlLÖÓIB,5ÂqÈËBĬiTм]³Ë ºþóÁ´ãØN¥ÌÐÀ¯+•ÀÀ£ÌÆZWÐÿ…à 4T6ru8º 8YkŠXƒ±KmCÇñ!Rd†hŽ8#XÄ@q—~¤Qfį`B¤~ñ¥Ðíe ƒÀÛH²¾(ƒ‘¼”Ÿ»2<†Þâ úŒì‘‰È]À<ÕULDBS‹`å¦aˆóuš E¬ç óOƒ›ë~‘²"†‰áV|5IŒûc]Šj?>!‹ï+â»3P »Âðûz¼;£‹#ˆIðvЫÈئkLñµÐçOTb,ØÈÛ¡v÷KÏ“5?!ù´‹ x4ê>$Dèϱnˆº‡Þ¡OäT¾Ñ£´ÝöVÀ·fññÖ '|›º[ »ò´–šò…xÅÇpŽ!nDᩱñÛ w|Z8Ê»ˆi3>ð3¶1ŸŸ±"’ñkȇ-g(më9¶B¶dCèÝGbÆ»ðÑ:z‰O”¢˜*´Ž^¬ —-#B÷xr½]ÓÔ{Ú7vå#ë«{ø{öÜ~û•÷µW ÀÚoá^¥¤§7-Äh`f¡éøÍ”íûÿc*ßý”Å"Ö¶#-ÇòþñxïØ‰LXYDbô×q@&²£Å¨#äAÒ–úC{êAUç§{èn^úî‹L½ã=òA¯:(Jð§ç2$ßÑ i|c€ßÞiÑ=>L»¨ôÄ'Ú G§ž‹ Ù"”î/V-Vï@ãNËF3{å#´‹ÑGiè¯òį18áѱ´Ÿ‚M«<O¬¨“E.z‹^žÒ.pçÃÚ‘Zbg‹+—÷‚nj÷·¼ ÎÈ4µsÔ˜¡,EthŽßh¢ ´¼/îh’tÛ<Ê÷óUih3:FŒ‘ù<[#éwϪ_ã<³ ¯‰¿¾ŸoœÂ:QI="ìWÛÐÇœøÂ„µrË=V¤Ôãk·¢]O}ˆ[H;ü5zDj´ìÉþ@&zMYóÁ7"ö\-”`¢8|UûdÛÉR³§øÜx÷”Òoegbð&Bø¬É,’]SÒq ^ËÌ AE6X=ˆ¼µã«êˆù>KÄóîøbõ˺ñì»+ªF¾ËQ9*&úþYp½ZéHrŒÿ½6´ðú*‰HÀ›ï‰›Åë'¯GqÎOêYE‚ø´÷ÃqG¸~p$>@öÿ,O`Áa6€Å2’J€$’ÖíX@ƒã D|J=á(¯•ô¼? „`aW>¥'òáÖå=‘ä£tXe¼i±¯Ä­LŸl¿ô“ÿÍ1xJYïÅÁ_z¦¼¸â /Éþ¢ÑŽäø¾ã ñøkôø 6ÜtãíéDd.?7k©Ý«ä Û]ˆÄÇà ]~Ù_|ôáþ;%Ž"<ž¨…£—xá€9©ˆ„ÄÙÈŒê Ý?™BKzE¦%Ù«}Oí—?è½ã«ë(\Ð’+1øzØQ‰GêÄ HŽñfO÷7ŠHGޝ¯¯$ŠÎqoôoH3]<1òʇÝQ—²ÓÓ¨ :ýò÷ºãá°|[/òè óýÓîRÊ[Ùï ¡YŒqw{DC%HDâþ»táËs0}óמÈDñ¤vÁˆ¸·qïã=íöW$æ‹nFB`x•Ñõ£­GÎø~þ•Ù, ‹v”ÅÑæMÔ/ƹ´CüÚJKx‚½³§hwì~+µ[ÞߦÒPº©Ýã¯!èwÕ.t‰¶nн§ç¯hi¬Ê4öÞøu¯DÌ ?ÍBË›B˜Þ^Gí3{ dØDyb’±¼Š\H‹±õÂíUt‰‰+­£—Ž\¿\1Y±5AlrÉiN˜4†]£",õ°sBÍqÅc›„–ƒÄÿtŽi(ŽYÌÊTµ¢^e-ñsª'ĈìΓ(ÍJ¼J€y! pÄ5NÈÆÆ!aH󯑠±"Æ=q¬¬U_„½'ÚmÖ¸yh„/µ0:$¡n‹:$Œ×˜‘ü æ¸7Gnä…øß㨆+zýæ]†ûâk³¨ãm&¼Äûëó+ì3FY4ŽíZöš£ÛÈ_‚^„BZ±ŸÈÊûAì—˜Å/ltÑ•l8ò«Æ±aEŒZYÿE ûˆ|%0]<²£·á½+ÇwœI£§×±XiYŒþK×FÄ8Q“‡¸96 4B¦x?n¥^T†üEE9rœÐýÑ0Úå8hJx »R÷g¯Ø|CÚè)f´!‘¹`úŒdL‰¡{È;¯ RѦqïá”9EEèî±ïGüOêÑ!zˆ‘ÑÃwáïÞW|ýŸã󊳮?ÒVlÎÒ•a*Ñk?ám1ÚS°ÁHìŒbý½”óêØô‰:¨°£ à XDßËÞÀä-­»ùÉ»–>~QB„?=qW$æÌêxçý+Q&E€EÜw¡òGÿ¿¢vÝ9âÛ¼Š–Ì$ŸÆjÕ³ãUð×9Œb$¶4é2˜¢„u .Db{SŸ|¬°Ä»Ó±EO6ª!U 7d3™/XÅÙ“Ç¢»Æt»Ü å—ÿÅN'3ApÏ–Ûaã×P hüh¦ñ²3ñáû'_ÃQ7W ႞Ï~¡\¸“…àJ¾Þ ³‚xè}Ç£Êt€Y^ž/à N‰±"KPÊGî¡Ìñõù6ÆÀ,Ö¢7D{b_—˜àw&|?k¶×­^¶ï»R÷ D,qVwaeÔ¼Øçæâª âMÀ™(Úco˜æÜè”tÑ_ôû\y?p` øþwß\,óãú¦^ÛLÁ|™©EäÀ€nL£ƒz º¦á¬4Q\"ó$ôíî•R„äÄK´‹ÌzK´ËXÌî>«'—k{‹uÛ7¶¬Á7bUš½kBïè÷¶'õ•G¬ÚíèàË®9 òýÿˆDwJaqÕÍÖo\}|>³v3Ž< e'3ãNw]HÚ›ƒ…ŠQ•¨^ü“¡Џ‡½wZB2‹éŒò!œ[ÿÃ÷ÜXÀޱ9ZG/!\Œ>ˆ{ñ«76:ê.zÏáICIûT ÃGã@>sÛ#Þ¥a>F©©IŒ •¶ãøilZöê-4µxx,L‚rl<ƌ٠8E(ÿ4O´Í_Ñð=:te‰WIÑÅ[7CgÈÂB?È£Y`;ìÌŒ$A4öú êE)0cã'Ü ¢H|‡v¹¤Üì¡olÑc²©e_eŠqÐ-£@d“¥±Í||íâø±pÉ‹=¯%c$±ax©:óÎ@ KÀƒÖ¯I.èòR¥#MX,ì2Α–ƒ7 W.{]5èê÷Ï­&”ib=õl‡uÀ£,¥ÀrÀ z{5zŠv`‚máLÞ¿ºXZêF*ÿì¹0Ÿ DøA÷1FŽãºk û¸¿†.}Ø'䈾_¶ÒóõãöTw|ßßuÆV¿h5ì=½’¶f'´¼‹å?2M”±W0c™uö#jÉ“a'®ú!¸ {[©Ç0«šcnÚ#MªY\EØ|*¬²G9C,†£ö‰Ï Ú-ârË ‰¨Ôì dà))6ÜzµIxÛ¥.QæK›P¤Æ„*âIÜO<¡^ÁˆÊc€d| kb;»°ý“8Œ(oA!ô`W=,ñKÛE/Dåïà=¼á‘Ìÿ¥Ý¢u ÷£ö[Úúe[ÀÇô¢¾ycc´ êÔ9¯Ÿè,¦u”n_$ë䘈¹ý567lôÆ®?W$–‘?ÜdmÌþÞ´¡º¶\Š @îÞwáïGµ0…+s€ù”Tð•Å"¤ÀĈñÓ0a 7$À=€ P°Ó{cz¼óJ½\ŒT¨öaðPð-A{/¤yc‹¸¨1Ð,ämA˜¦™s_¿R½ãFGBøÐ î2¿‘Ò.ÐËâ“×Û½ËØ+Ž·àÁHÂA„TuoÙùÝ Ŧ`E\‰¿õ¢iD 3õ…àx¸Ûh¡ä½i#x2jëÙäàAû¯Ÿ_Ɔ`x¨¥Û OŽx[¾@AÜ›Dý𼞞çû”lŒ9ÙÊîv±Áo*ovÅ»U®uÅÄ—H*áöŸ£‡]I.Ì…+„~³]ÁSPBèè #Èîty6µ 8tð×ãDÈ|p†_BýöfO@OzC@5^¡æ 8† ˜úV. ÖØcÑQß1lgaA-|$€ #¸ñÞƒ ÃâÝ^ _âíeܘãI×2múÓ/ÌØ-®î‹ýìboçHš›R‹ÑšžØ„„PXFï1Êã«ãPã/!!]|¯’½j>¶Òa•^¸…B“™øXåöìŠGÈÄOôCÿéøXøò¦ï±•æ0ƸMä•~Z¬KûXæ½2è‹Mˆ•Û/ÃZÜjµ§ ŠJ—BGÎá^ÿ+¾g¡Iÿ¥G„׆€|Æ,€Ñwˆ TòÏUCÈNIƒ’xžÃÉ.泌I{‹¼ Óݨ†Âÿ²Ÿ4,×·H‹­FGË;ýáÄ|¬»â&uiíê®§Oé¼®’=(c…—ç?¤*ö'½Ø4Ø­¸nV¿Ë8ð[Íá?'/ qe?}·xÃÖ°O!å{?*L“°óQÍ%ÈelÕøŒöVSi  Ý-œùÔSMÝ'>3á![Ö^¬wäþ½4ܽ†oNáÙþ€Å‹x"Œ_¼w†ýž~é¹1ç‰e‘×®u³+²P€¥ÖÁ„­„×N*³Ý&<ì§ØOY‡L¿…­¥‘‰³ØFÅðS Ù3ªÔ&ޱn ¡ è˜Ûå”ùéMÛ{Ò„ÄÔÙ` ?à•û°Û¼± ëXËöÈ&ûˆ¦µ̔ϊøJP­y_.Ýa•hžŠ€$z‡Fpß,IäÀJ¢õ(I$…·SÏÞ'Ö˜~ÈzñCž¼pŠ“ÛVŒÀXdú•²¼5i An4 R ùú;Xñës:µWƒí OlÊî®õlÇtå1­F%?"šVÑ`䇈«ÒNjOšƒeœÏ@`#6´þ'X"?…É£Î^ß%5Gf „ÔHýÊŒC'²jÿŒzÍþ÷†¥‘úÏä>ó#¤ ü¶”:NÙ ü?›Ž;=–MÏÁÏÜ«yŠÈUòk¿ý;j¼–!ªgBÄFÂ(õ,ôu“´D,^§á«»x}%ž¸óþ‘4æxÏ…!Xá¤né~ˆëñÔ¬b.…cfÿžYvù„håSAòE“èñÌ+[—LÙp³*=©‚À`žAŒ9‚… ÑÿRà®m²¶.tžÙ4˘òVø t0¦ {ü‹i¯®Û<èzæp¡§¼0ˆÀÉŠ;bìjÉ3˼,ñ„sUמpc´™ì{ëƒh ¼oÌò¾'Q© ã‘ãÔ"£ #­PÂVx žIÏÓIn9£®»$ଚ ¨Xú6ÇýÜÑW¥ FÞQT¸†‚ó¼‡öД|ï–îÉÛQrõD¹ò¬‚«çÍ’ ‚§¿\…a?h- óð ºÏá GªhžUüu‚ÉÓ9OÑäý¼þ;~ ‡ÆU Î¥I´HÔßó`æi*—'×Ü% ©“r~MyF+…xÖ@O:J¼Ü–¨"0óøn„°ÿ^²ŽUƒhü,žÌlæß ÏâÝ¡ßá4BÏ»ú9w›nãÆ’nlÆCõJmÇaDª³¬ÈŸ“®Þ™Ã²¨r9H^¥ é^czjÇÅ%zZýþt¸«b:Å?»ÿþLÿÌUziLyÖ¢s–èšåù T^0šø´¬Áì”T{‹à‰žUdÎAÿ»„$û¼¢† ì§\ BBd%à!šŒ‘ÝP v¬«T“lº~;ÄÐun÷ì˜NS® A|õ´Ból¶§àsb¥HE–¢'‘Û¿Êÿ·€¤¸C3 RD •xþC€=ÍóâfQÁŒ«÷J8Ø$í©©Vù$—8LFÐ]$–ÁMŠ$D×èj¥•Z6õ&¡ÏãÍfêÊ)-*!)¬8Uàâ@2N€ëSóH5ƒìÊKÍ“ÿ,+¤ÒÈHÕ<[î/Ü+?%жvBLN7#R4ϺcÃ÷§VŠªÕ€3,ÄpítØHô¼Ù57eà”Pr‰ñqдêN,9–EhdUæŸ7‡A¡Ø÷½’¤Vã¨'V,8%ŽÀ-¡t "FÀ`­ŸØáœ’±•Ã_MjùJVËÒ¨ïbßA¢ßûæav£ÌÍYxT¯byý*&Ù0!‘)«@#ò]ñî­‰ÆWW2Å'h±Žóp¾ÞNvÜÎ’sVœ¥ä@Ù'ÄoÓŒ½Øç<(9è¶Ó‰ìObŸ  zœ±Gy—%>…§{¾Ü:Þ•1tUuƒõÖ©¬jíîÎÕWã—Þí:,Ä‘3aÊ·Ôú-À=,€¦:–‡¯]ç×¶³iZ×sûä ?§4]¦»ŽÂ£•- µ:X±H'·Žÿ;žÆùxš¤Q‘nÆ*À.Yñ;N€,¾B´Kõ|.À|ƒùèËa¡£f·ïä»VŸƒ³™U˜N’%Ä«$—/$ÉDSC•4`«‚8lçÁZV›B¡pÏQ’Kµ<¤ñpƒÃв,•~«GM0´öÊ£WÉÊt|ü]‚tpRð^û„ ¬[½ui _NÕ•©æD{®?£y>&gË>e¾ŒÌÝ«ºÆŸ,G¤²"õl¥¤–•÷é3kI/²ÂAŸ³´V²<ß*}sÕ¥õi¯ŒRO%D³;§¿Ã2¤šˆ+êH€,,áTO«žˆÀ€$}ð¹c_öì®K Ö3è®ÊrÄ®}ò™3óäÝ…šþ0óüHÈÉ›óàbGóTF¢c(ÜW«tu@›uÕRJkõc(3HÉD{V2HÀ_¦¥ßñi¤<)/›Æt]»$Q ê]Bè飌z›[–žù¡s\-!C"Ðn5´l'\9cmô³WäBB‚<Éaƒ¬‘¬•I¦nÍ/0Ûs÷AåRª»d!\2ˆ‘ŒÅ¨û-Ñ0ˆå·0Ó+™xÀ³é]c5äÓ}å°§œE+ê„Ú‚{£U¿ŽüŒYú­¤oÿ3\O"¿”^Nª}NøQ>ÝgUS„Ô‘2ɼ•5wÍ ¿È5ë ªÍ©­q ǵIt9ĵ«”Ò Åà†òR¦›àPœ¢rvRï¢*õûÄ^þ."!·>ä!ºWaL­ûüQjÿYsÚ ‹|ÖjJˆ¬$:Ùvü;}Ñë{††2¼€nÑ|#iQ’Üpµ¿dFœ ¡Uo'bvNÿ#lác@cìòaa‰AZ )¥ôÝo§jÞ$ïR¿žèž}¼Éµ uå<Þë(©_¤èOš¡ûôî©ðäó I:/N^URú|„#ÐzøôŽ<±±yL ,Žã’ÅNÕÒÆ¼)ƒq¥š]‰qì¼›¥JKC= Oœ;’ÚÈk/'(W¶w•Þ÷›§1?é1“Þω=âé o§)E•lH< ©8¾™ƒ²=ÿ;ò•Åh‡« ðÛ×_©ãt”T]¶¥|o9+§hSàç Ôz<§_—éûy¦ô(ŽõÕ«b¿¿ˆÃ1Ï«:1öèhr,Æo³:Ñ&œ,©žC47oÇåœ9I4ìÃIê÷¡\f‚ӈĹÌa©då)Y3Z g~†‰ƒì{aÇMÃ*N±fhkQ~ . Ž`öHø§&dI*V¦®’\gIäFÅ,äáØk]ÜÓ{!Ǫ÷êDú¬cYc1¤™WÙØƒK%£ö–’'=dу4í9Ö«âÈ“ÇrÏ"5‡ªc™Kk9תÇòäÉ%ÎrüQ¦¤öG‰Û`#èw6TŸoÅ ¾p-‰gÿÌG0ëÐÆI4ã*MoµÿU.“” 4¹MÂ^Ÿ¥ÚØ%©¥Â±/zåëÛ *­»Lw¥«ì wèBö ‚“ 8‡ž¥º²È•“#ÇÇas—ôRvÞ¥yD,¸—V»î±ÛF¯_¥!3ˆ¬Ò Þ…}·bÕ­Áð<¾ ô½ˆ8V"] °ŸGFÃAÿSy‘œ3å‡ðs€;AŠñöÉ‹IåvðbñÊ žÀÿŸR_Òç©ôÇ7èšóç­+’ªO…Œºß"eÎúž#§Qã™VÜ –HŒ®«¡¦FͨÒÞ—Û `F¯ËÈYMç7¥ Êñ{¾XÌù7¿®#ÕPRÇ/nje\q ’ý¿5*ùAäKÚ²÷ÁŠ$¤Ëìž·@0ŠHµVKLÀ;Ø›Z=Ö¬ÂGÚ?Ò8 R•ÃàN ¢˜ÓL±:òJÈñG«= $& wP7œ"'foE¼8³"…˜ !à |†4‘!¡È€â‚K€¨xF8m4¸\èuÉãß %*ŒÛbd55T®B{i-kÒàå·_A#¦e,F¥  ©—ןê•\Ž~²NÀq>œ®‘ÐuCëÅ·Š«Øvß„ê Ïo¶?Õ¡žœ]¥­y‰ñ*!µzÆÞ7³GœÚ¡Õ¬¥\‚S´zXÊz7ÿJÑc»å Öۚƹ ¢ÐX€é0-òÉJMƒw^:ùs(Y#aP©õ`eK,yPT=˜ôɳyÝ÷áLà8•ת-™p“ ÑYO0U ß‹&«nÒæÂÁ½/ñk”`Ú\sÍ ¨3wÓãÖuýˆÀ€çx¾"¸X2œe.Kß›uèLÅÔApt­º“  ó¤r‚(å9÷^cÓ;¶2äiùë|\‹=oöN?i;&_’á¹{áOé‡aB­hëÖå" ¦¼e(„&Ðâ<ÓËÐý5«\H ÷[ªI§ù;µ)IÕx§Bf[®ÛÉU–n½$•³º™‚HÄ©ÌÙ¾•™yMžN.;þ Žwb•q§ýV ŽI$šÆÇúã·Ž©ï-Eõ›äCExFE·MZ ¯’Q>f,(÷(²j^ÒØÚ¸Hƒ T˾e Ä|„´dñSTßy*§V« êó¨†&XÖ¿ù52Cc^ÏÛÊh‰=‘ú]ZÖ뇔ã)ÕoÒG#_oðI5åâ¨ãðw )3Ôï®™[ìÓnMË ¿w†|SÒ.ÕçN÷W„óð!+7Š:Äêðí2Ûü•qÕÕKë…CL² ¨é h/f+­¤j ü–—#ëjE(À( ¦wTywW"« lf @`¦u ’0#²Ì#º\x¼~W¼Ñ±Šµµ÷Òj¾%š\P’öÄB­P%}çÜþÃÛ`Àu»§$ƒÛ±öÁ –’Ê‚Të(!¡ûM‰=lÂ:÷Ѓ€舧ø’³®Lpñ¡û“ê|À±³WSn":MV¤Z$Œè7 Y@W×ó>a€é¤ <ŽýX´À=óýq#޽Ð!|©&©wØI¼ JNË'Ý7ß§ ¯ÈZ\O!­W2¡NV†jœ´î,EÖá! þ\%ÆUz ¯}ðÑuÈ£Zþ •µ}zÈ]b\õ•œF×ãJ¸ë¬B|„挵ŸXÖjP äF–õB®qÓ[¢ë:bÝO´A4ÂÔêé0'‚` ¼|FfCŒ²ÁU*¾øŽ°èbj³Ä²~l~[™) 2A,Tœº¨½÷‚+›D9¯tÅɨ¨c)5~ð36h•nVû¾‹œ$ˆQ_ýÃÓ£Îû‡®6ÅH°2à˜×¡ËdŽEÀ tÄ.ë÷„n 7CþNŸÅ™‰ãËd #Ó°I/|ôIž2 2¢=Çð%_Å›¼”©§ëtC‡dT—XZ…¾èõÝ5¾œW4̽[ª>¯ƒ»ÇxÞ8 6±Ÿå{ò91¸8«\q‰=RóIz„L¡| 'dâOl†gõ|ù,ÓL@»I²1Øé¬«‰t“ˆ¢Us¾ÈÙKOÙ£Û¡n(>)<Þã€lv£á⌤4œÙ!ý¨¥>“`«G1¹J¦EÓKgv¬;ñCL’Î:Ô˜7•Ò‹y«+iInj%°î”æ®Àƒ@q–Qz’E·¬ÜÅÔIŠÂÏÞнƙX)ºœ«g¥Ôq‹B$g¤éâi¦8¶(‡« éI3‡Žã“Ò§œ4ŽðDo«8¥[?é:¬ŠÏ™=|nm¸ÂSéºõÃYñ—à÷¤Âõþ¤Q«¦dåÒt&¡§ÑÞÃgå‡F˜¦] ¢„Êœ¬éGu²Ò õèÿ™«3ËÈØ TO~ä” ?þ`¤ÜÄYŠ4½ŽÀ½a-x“PHµKt}VH~hIõû#D\êwu"5x€&`£×øY•>ž™V9 pÞñæ›^1œœhF`ŒÄäÐ(q%—G… ™;{–i&~¥š¬— Ð7B´yéÚqšÑG ¡A·×[Ñp¬ºIB1yJ3 €ëa瘣šJãÔú*ç@ êW ®T÷ÁÂÈ<\´=ó+SJ†nŠcÿ³ÈÁV;„‘k:o ¶f Ù,ÿ),f+!$Äðú±ÅºÊª––i•»hÂÐë)ü­zE,#–8ˆ¦·=c1*©iþ±Ö@-J˜ MÖ]Ó4OÍàH.ßo)i˜ÌlTµ,M=9aJýŽbšµJݛɲ Õâ?³Œ)âæÓgŸ,Vä4%®³ôõˆ€ÌZüÔV«‘gÎ'ÉÐø‹2Ôº\TàUëýÇõÛöÇÌ‘¼ìD.ëf”\á—‹2H~ˆ´!»æÐq²Šò[ú:Öx˜q«ÉZ݈¿ù•2Ôdmü.† :±¸|I]ÑÓjŒ¨~H –_¬Þ•Øþ*fA¯”2bYœ°¡’Î{:ÄNšÇ¹O R.©ü9­àÊ~Ê5z:ì*ƒ j敯UƒH. bñpÇæ@8ô[aV‘)UWr/2Écïò¦Â‹‚|ôi…„ä{¦~t"2Ró‹íÂOŸfʾ^ðCªTíJþ Z“UNÂÓáTýJÕß•øØÃŒw„˜ÑBŠxQh&}@<÷>(°pÈrmì‘nPp 1ã­Ì SݳT‘à 憿Á‚Õ‡®$s# Ü£ ”ÃÒ—­Xxðp(á±ýN©ãL.…Å›ÏiˆMD©8Õ©¤Ü+ ‡7ÉÙÉ4j Pd¦||gEÖs~{Éút„Õíœé%ÁïÔ:ÎKªï$Ø[Q+R;÷V>³ÐU—zeyÏFJÀj­§þé ^‡› ŠéîÃÒ'¡i•€IÅML~‡@Ð>ô‹ó?Ê•ºç8جëÍxìÐW¢ÍÄO‚?rû=¥Tx °Ð¤ÏCýˆ`GœAÊ )ð– ··°€Æ®C¥ _Õt\Ç™ a’ „"· 4ËéÂ{ÐÏz¼ãKþèš:ª7pºcˆaÃV¾æ9MYQL,øO*"ש$7Za0‹50ɱªúëÐð®:Îw’Át=J ¹œ4¹Ë9~¶DÚÃZ’A´³@ÒûoR=®ò66ÿFÝK«AÙ T]æ]¢5ƒ!!ç$Èæ©ÑL$gÎÔÞ )J½Ž‘¿ÙÃ>%Ä*†Â/袯i¨ƒif/%t(?0¦œ0ÄrPlšésâþ¤}f±j=5ˆa!% ÐÍQ 4ñúUúãðܩÎ?þ¦Ðî×;4]„Ù4Ý­VOÙ"ò˜ Cg!¢©¬!8:1Ðap8P]£”̉²,^f¾‹ºÃißV¶ )ÐFrü«` ϨmŠO£õ[JH}R–óÏ«ðY ¯»PÕu58ó+ë{XE×× ôE¯«×øC'üÕª?XÚÆk˜â¸0-k‰« B¬ƒ¿Mƒµ3 CçäpCrȦF;uø¸SêU0ìVªé5Š \ ‚/øûc8}K5¹®›Ã;ÁõÖ.®öDe•ä}ºó!ƒ² )y>­®Ó`³š®² âÉUÂàQ#š­•©) ¸iJråÛå¨Nr‚zé‹^I©Ã‘|„î=í]†OÀÐ3´„P*~|×svð”-÷<¾’SHû_% ±jBrRZ€¸ô¤­ŽK2 aÐä)± 0?»D—Ë9Ó©y7¿NÒíÿIÞn‚ ÇtNB“†Üt ú•…÷Òê9„sºc pÀ€æ>!Ùù/àÓÆ qž\)ø—+Rž3Ul) ×è=wêæ)ú[f$¯¿‡Vå’FЏdpJç6Ñ´äÊÆ×åšn*CãŸ÷©AäªÐ2–¾~•:ŒýË5y«Nw¥›Ü ¢ÅyB¼}ªf_Ñë¾H:´úËÕ+Eß„iY+~²†·}žBþ(¿|'5¸I#û ¸¶`Àz×âá›1®ÅIfÓáÛ-É¥Ðú¾ ÝÔbñÁØ<€_4 Wâ8­$ìN,Ë8¨¹‰øŠsÈLq_ÈZ„² Fd‰ÃòPÝT¬¥QÀt?)z*ûï‰à&[܇©µn0R´80§B[@i%D²šÝÄ\²#i’ÃácËF ¹Ë–­§$ɪ,oŸœÀÄ‘&Ÿå‹? I4|þmkœ È5ði#‘L×ôìÙScgw'M退¿Ç™Íd Ás•èr1i~W„ÂêÜ$…^.¡õSøép|WdåBHFþ§HdÊv-Jêà&hÝŸC"ì#uк°f‘(k¨]ÁYÓp/üÕA•€GÿWöz Ž›Ð¿¾áåljӯ(ûེšh«þS¤cNÐþè¹£¨}ÕMÒø’tÑjÜ%ˆ>ýWì”±RÇåGð. ²j@1 ™eãoRò´•$–UíwHÅУÆ:*¹¨ýK#á;¡ Bµ]KU3ìÍB!QâÎQŸÑ_÷Sõ]y\Ò*(æœ.›ÉØ{÷ôL™M{¢ÐÀF1'§šxF×óÞ’,‰ ¾îéÎþ¯’zÞ5’ž™uTM ê:q¹~ÇÕ@-ªˆ8±øñþŽ…°—I~%uZñhW/IÏ…~]u=Ÿt*WöpØ.KÚ«\ÄiW©¦{ðº˜Í#uW“ßa È" ®¿Rø ¾ ŠKæAUFÃuF• )Ð]¼AC2â2ŠÿÊü!’¡4 c߾͹%¦‘-Þn<É~ýÆí­·µBGVÓ/–y•ÞÂs·’Æ’7YÀð×QŸë©c+–Eþ9ýey}Õ¯Dm€À9ºY¥B½8Áç~Ik¦-}ÿ!¨˜.î¿(@‡tg!©Ì%R'[ Ib@™¹ø:nûrëÛ#æ¶#V®ã{v1˜X‘à ûVY¾Ü°B™äƒ¢«ÛòÓ’E±¤Q\!'SQa%½:IðÍé¼¶®û;Æ”uô¯¬²ZÁ"ÿòIóå:uTl—îªÄò‰ƒvF fû=ÜÉôÊçÃdì)N¼œeqpf|ùŸ ¯ˆÚä9´rá^ö¡&ÔV*¼NH¸ ë÷ܾ’ñsm%£,k: :ÆÅˆ»q¸ÚýKä.ÄŽÀˆþI¥•B¬cÐH“Œ¤æº*É3JÂP‚•µQ~s;Ëmÿ¹\“÷ウ\$xÑê˜F·¦Ä}HÉ¢§-ßìüaià=~R9ôN„p¼8t,CºkÐöõâÇ*Æ*u!‘½hø&ªF?6Ó{Ã[✻tá™]ßÙáCd)¾¿8 KfÈ/¡¤¹] ÈÃÛRoºÁ?‚Œ˜-—ZÂ¥ìø÷€‰‹Á^J£Øe¢ù€ö8w„sà‡=&"ú¤ÄyFþG›¥Z:¾³$-ÇOv)Úœ QY&¢ ·©O|ÞTÖS±â ¿;În,N¦Ï¼µâ5í`-årUr ëa—³$mÓ麿åXÎØâ EIwL]áúJ…eß“£ö‚±`éóæ–÷ÀØžTMж2-Aìù¤Õ<Ö4i4½•’ºûFº—Éøþøà…jîjÒd©,¢Q?è&ìA&úÜnÄwåôgó;Nƒ ×Kw‚Hï.›+`rˆ‘"ñ?D0|'k(Öz(ú"L¼ˆ¸-ÿ~ópdWS‰rÛõUM|¬Ë68U…@éY)P/ËÍ«šê4ú‹A¼NäŸV¨¾£Â“••ø Qo$‚"3Ùt_‚„‹¡8‰0Íá|- ‰îº j:IÂ3s¸ê&©O6&¨¤›`$³íº UÝ[@ù›_×AUÿ•íÐÀ€–^­¼¼—Vk—@ˆî¤Á4‹ãâÒÉÖI8¸ˆrÀðÔíO[jÌzóWû‹Æ»UÃבÔj ãiŒJxÜ'¼»LgѾÄη¯€.Ý> éš9~/7 <}Oøö¡“÷ÒŠHCàˆ@Ò¬åÐ:¬saD ‚%©.¸Ðži÷N7z±¬sÝ”7 b‚š¾*ƒ$X¿Õ¿4"m?Ô(ûÏ M›82ÆÇ éòG|²¨4ñ:=ÐÅÄþsÞdX9Šb£å ‡ã @Ų͂ö?«Wr IÄñÑÞVòœ'-—“Z<™NÆæŸx{«”!‹ŠÄy–äÅ.ˆF•},¨gÇ/ »+Ã!€SÖ’¾¨þüͯïQÓÍdØ[€£ÁõÑM~'F€ÊK¼ Iß Êlu'y9ÛèÅ«0çL®=:o»üç>KÚ*‰@‹¯IV-&›/yñýs#ƒÏ¬Û”Šl ˆ­wµzIôïŸIX·w ü’<å_BwüæEþUöñ‹ \ÔÞÌŒð"õS É*ƒ|ÑMœÄy¿ÌHÛ_6M@z"ˆT/!û$`æÐ'ýöå/øŸ‰$¼•8pè÷ .ªþ\‰jú—øè_©ú“X0ôK^5ïòE 0JdÜÕ*ή%éZ‰úH7E*“ÙÒ#¥b¢Åäåólª=ÊÆÜX$Áô…S÷ᤵ?æâ¶ ~I¸—Þeû™H¢Sņû GOɧv:HÒ1­»Êš *ñ2!ÞUœàîïªÐÊy²w (æé®úñ ÷ýŠ“ä*ƒK„’KQÁ‘¡ugÔÐñ”½•a\bõ=Œ8™+v¥øóŒ\‘®˜‹„€ê÷±Z}ɬófiÂŒÿ¼9´‡&uñ*öÙê³HìdÄʆäu÷ ÝÎÒMù< ¢“DZÿ¹Ž®]²o"¬æþ`úÿíõc¤†¤>£HãÒt•jpéÊöW!¡Û›(¹œ‡¥×Ü¥õhÇÚ©-¯¿ÐÚ8¿ËjÐç‘’¯£éX‰ú“ À]ó$c<'tõß!/ZQB¥c4º¾OðÆ!÷éš0¾ZK—B4¢N/ü}q'r—Ôö_h$ðˆÚ˜–„¶Ù¬O.(ýÃe+û$1éŒ/î–ÉßüJ5„êÒøùU °C¤^OIrgTzªÂe1Bâ¿ubu«¦Èßž?Öapl±€f•ýîlÿ”-æ<úašm†;Îjf8iŒÁæ.Õj†èºZu-!Õš{iE…4PãNƒ]:_ã¨;MO@~Õ·h,aç!dÊw<€¡×[ø­Ëòt•€À Ã7§ ª¦uÒ j5ྠ•*ê·¥.ÎÓ8–‡hëYôw`0¾‚AŒ@®dÄv%ñü ‡¬¾Û;Ùt)m-Í¢é>Ð+²ÿ]0 ÚF¹þû£a´Ú½T×µÃð˜9pLb²y}j‹v™ÁwQËõ+K²á:é–0êŠÖ¤y­fS¸êû9ú¡ZÆí·J ž•b§_¶ç^ÓÛ]úép&’x45p‹ýÑ2¸5'E¼†ƒZ†,LHØ¥•\Ö ( „!´‚~Žý>G!¬æÌAq PmœÔ¥•„l†^Þö½þ±ÓЈ÷ Çt§“ßI9Pç µ>%Êà8Õ¤ÅridKò¤VŒù$õOù5ޝ!3¹¸&x¬ëæ£}ÚŪ-þk™g'tH×$wT\ªý;Á8蟬GÖÎÐ3n{mq\2ѬÛY‹þc èÎÜã^Z5Ž5ÔppÒ Wb8²Æ{ˆåkOZ‚¯É¯-ˆ_߀Ôíºq†¥pYAØ×ö1ªCלwåD¤Åw‚ÔE>Ú~õ«CƒúËøñBãHRÆ~~m½7¶±¨ÅZe»lJêI¯Î¼V3q¬k\{Jþè¥Öåß¶Gø!ò¦â¬t–0—X4N¤LêhP „¹ïBE'Î Ûµ ¢µ8EÈB4NŸ'*ÄõyUhð0iô¼ŽÚ8ÓOBYòÇ0 ØâÈWäOBî|¦²}îÐÂêL¤óµë óò3E•ñ3CûT1ÍԺšÃ6+¾@“½åb‹3‹0ªþ¤i[œ >Eȇ[ÇaÍèåõDíœh»bø]í;a•k‡OF¸ô¤. ]3íó×ûÉÔ`Äï¦a'Ò,q· ƒÝOñóIè¯ò´îWQ#sábâåÐøšó ‡Õÿ¬C=ç3O/õ–½>ESÐ5„ÎjIr} º©!ùwÆ®BüwújÉqﮕŋïÊEÜ…û>¬ììTµ·R V¾i«^\¦iÕïÎX{¸°Ndš\ }–’²J|¨6})|\i­Óh/Mèõ)!uŒ»‚+øð‰ñÅé—Á}hš¿06® #d ÍÂtLJHÞ㯸â1oJ€,ƒNî²ïåþ|Ö¥ñ”é©ás,F«TÓ´š4½K¡yìÇ3\:i†B3m¹ŠÜ4˜ï1øø­"7b"PT(Isµ’\ºK5” Æ.—¼«éÜÇ9sü^ri­bÅ¥ÖÐÀçQ]Bdð\•CƒF7M-Xä’4¼JµÕ˪·×é‹^çQBV'ê«¡é‡ T×M®ª•fä:äl…_ËQ[‰A‡DHJ""@:0‰›Ü¢Ž„ÈŠ/1ˆ„š œ¿¯Ãõ[AV¤Þw©.¡’«-#ˆM cºÉ­ü«D5ŠÔÈëw HÓ}™åÍÛ*FJº ®«¿„Šv/%³§üÇC‡–ZÝh~ühóyù›Oé;‰ÀÉ7AÕšaPX4úš\ÆMü 1þ!Ìé0rEžc¿®/Óë>ªI8#€4]Õ5NÂn´zz‰¦/8ª4‹ÉñO;„‹—ãËLw]ÚrñwxŒÅê„ìi†ã2\"Û-¡ýK$QEc¼›%|RÊ­ÀàYXÜD@¸<¼Žßê²Ñ Óþ³ë&€L¤ô“ë h+Ý…Tg7§¥ñ–SÕß²»±ÒXTÀÃVYÖyÞ´ K #ÂÊ5i(CãŸx„¡Ë0b"YÏÆÎiÒ<Ë/C2. ˆþJCˆ­ß?ÑpÓ”ú˜1º¯Ã57ò^ZQ( š\{$Ä›~y“(¥±¥âS6fˆ­©—¢r¢i$52o¸H›éM†áÈý`%C×›¦Ë«$BŽ€5dÈ|€ Hã ÓìUrcè&:¼©ÐU¿ò:¼ â»`è(˜—ä÷—n!™ŸEúªMVJ9=e¹(‰®OÊ—äÔ¯V¹oœ×èøé<òvVøˆ³/½)O¿ DŒ¹µÀ(Š>vFæ8å2ÍHH^—’´o)¤äÜöÿô4H„šøI3y‰=O¢Gí²æÓÒq˜^‹å’[hž2HFçøÉ@êì›hAR–ÜÞ*æÂGâ£É•Ž:ªXªÕ:“RŽ:‹&—ôU3ó 9îl­ þh0hm¥è*«±Õ´ÁÕýç²…÷˜ÑNƒÃlüí-Ö¼Æph Wú(!%¬ýãp¦(©CˆÏ>. !«’5â+¢}¿JY11-A›A »Ó'ÒV ’„aüVHéz|(¥JâT¤tGjâ°>‚»êâlá¤Ê:@¶žP Øw)!µ¨Èï~¤’ÐçÞ> º\ÐþrB¼79âpž•ñzT«áŽœ<6ϵÙð2BŽ ñœQxË+µî6ïãé é #ú3ˆœ„.*aÊØ¥3Ö»Ò« Ú˜»<ÕW*b`DÑßcõII½a_ó:x_$DÙå¤#9CeýE_wÞ B’$˜¾—:–ú«àW#¾’¹(õ_XDÊÄG̸ŽMhŽë¶”úü€B›på¤CYj>G5´z~ëÄ·UMwOÇŽ#Êc@ßõî‡sJ…„©×± Ï+*ÿ_žŽø<6#ê)P+5iµzšõ8k^Lp—b“³G4gèAõÿ»s–U65Hl¢ñ•z{ ˜j(‹!mÀX€79#Py°_J‹£üRÊØ`2ßÉòN(Ð_o¹«ª +Y,Œhù&<†…¹ý™w%ÁGvبƒ_ l¸óÞ8m-ùh©^_sÚšëÍ—@®’5ônÚs©5ªðÃòSšçÙ)PlçÛZ¦=.:D`|_ßK©ïŒ€ÇM:¨å~êz¥@1ƒM­Ë=Ò.ñ±¦†Î°²~åÇ ç0Õä)¾´VZ%ßr)v8¤Èéñ’O|®KÀp L×:ÕýçjÒëªKí)¢%=ߣÁœšäMÕFþ-–7ÿXØi¡°àýg¦ìð*ãqé~³ÿûUaŒñ"ág{L—!r½ôè8°ÇáÁVi\d•I¥¢\ZˆQ™&ß %"q¯­¸q"píñ^Q篽æoƒ޲WbaI=%OyKæ´ý[‡Í«´îÐL¯£P5lÿëD÷àRa&>Lž.ƒæUƒ\ÂmÿOõÚÞRý¾Ž‡$j£D#q"ÎõþÎ\7I6ö©m±÷tÖYDl‰Q8±ÀŒcøb@†î ¡hÚBÌ’O«>^K þÔZõõúS­Æ]]·&Wë™f,™ôØÑ¾ûõ%Ë·>Ât¥ÿÑ$0%ís—End}U!ÛiÅüIÙëúÊ®¦ó=$FtP5Ý7|é—8ëû›ÆóHmU“<#ÌcK+dÁCÃñ–¬B´#ü¼K–~—›d »v×ÉhûýÆ^CÏ^ÃYF»u1.»ãfé8“æoUñOp’Ò“0©ÃŒ ©Á3¸T*ÓM ~†DâVÒì9¢$5GÆÈV­à2¶n&hÆ×Â@»Jmýš j“Ô˜^>ý=ä¶È³×Uº¬«šŽ<xµz’÷)Y)A$— µý]²®3ˆ¦]¿Ó½RN­?û§ÖOt=%„üé@'ãÂà:øÒ°'µîär9•ü±TI!Þêšòa#ã6€ÍfÞšª=¥«\ä±~'Çàr@C6Û®¡×=í{õ¤dÐEû½ë&-%>šÖ\%¿FÒ+` „‚Ÿ‰XhŽü™òà–¹ŒKùÉ:M½ò~Bh¤œKÕº!yüMxø>5š‡ä$k@,¨Œ~i0þæWŠ*†Ö*L[į¼B×Ô‹²>­Â€Oݤ}Ôš_IïOgB^kžè^aè·:ÙòWV¶Œq†š¬²üò™ñRÓmo=¶Ó+;¡Ë€a!®hMÉ‚š>½²Â MãÔœ4òHV½9jÚ— ëùEàS¿¾o,õsüó+Q÷ý3ýücÕ~rèÎjü²€OƒÓ?ÐbÎùç:šŽKWÞ¤ÿhKŠâ %ôu&AÓ8« æoHâÔzWÖ ¢K}ABF -5D C×8{Ò›Òô;9R1þDÜûøºX€Ê5’¬â¦K,Q™À¥ØÚÝ€™+.é°W…ùgµHî[$“°Š;× Bæ²AÄ ,á ãE5¤òÏÄï.ƒ€ß‡ú’¬Ÿ»ôëêü«¥1R)1Nk2`µÐ̲ ]Ó‰üZMK5‚hÏ1²Ô—ù­›$‰Çšj•UM©ÑÏ9‚²"õÚÕ‰$Ú°«c¤uüÓ™M7åïJ¾o~°>]'ñBÐ`•‚¶•s:ïȯöןCƒXáMÖh•qd]„™ë@ÃYò¡&]o‹þ`¼Šóp2XÞa)«Y½R!,] _E bhO7¨±ÊX(C¥ €¾¥š‘X·r.°~þÇß”RÎ2–Úõa(­è_.ifCn¯¦ï))|0—~û”Âà£U 1˜ä¦êpÅ”5*\îcÇ׫º¦$0*kP`\§)³ü-á•ÿM—}èÛ`A›’ìb–ž\A5¸úIaŠø[ÈÝÙ~àÂÿp}•éâÒ´„3ƒÄç*ù¨ DJÖÍÃeôsáÑDø zOùM‰7ÛÛ$j­¤FËGAIéï1‚S &da)¡-ªÓ ²ª×?ý·Òj†A¤Ž€Í ùbÁM²2 žfË!tds­*WŠ6¨kH(.b'–wÊ7¨KÐ$ b4sßv'~Æ}`YþáÐÁ¿ÉG æÝì¿%jqöj@ÿ©ÿL‡ˆÆÒa-™¿™¨!Ú ƒ2S!ü”jƒí[œ§ÀÆÅüþwƒ=‰HšJaºs˜8Œ5sZν´Š³#«G…¼ÞÒBql©ƒ$aÒCwƽ8l­"‰F[?EùAð¾!²2“Ò³D»òšKlõf'Ië) (ÿ½ Éå«â&¶ X—é]hZ5½K’îú=¼Ò ˆ–q ãx«¡“Vù"8’¼“þk9ê,ƒ0`kGuûABò.eù¡Õöñ{^ ó/ß…ãabd»Xîì‘ó­ˇ$L4í½”ËiµâZœí™ƒaHIÉ˧Djb´äêŸjEç&‹ÖÄ:úï³®‹:ïҤˮ’ª?u§¦MVܲQ}ÝwwêW\L+QRêR”Á0GôLÿ†¦Õo©~[ˆ(ú‘©ûiŸE³Î÷dȘA¬É7w[¾—Ãd—çùõ“¾–nÂЭD×a`•„C—± ½–D§O¦èÍ÷;”<`äEOD·ŠÖ¹pŽç t.&ï[µöç j2fÀáñ:Ÿ¡††<édS}3VLRÅÎRM¯R>†pD瑤B\¿ã÷`1{Ý$«D¥]e&§JÙë,]çZšˆ5 ‹/|ôCC¹€óÁÅÜ­7T*y5Jà‰|íp-+TßWu¢›i5h€AðE„t‰„Ê$8K´þŸ¬ £Ӟɴš\0-YUâªQ‘Ÿ”´,d~‡+ôŠü¢®ÕÀ ԈЀ„|CÈõáH”ñ­x[4]¬3¦þ»»Ÿ8ÛßWÇÁªüÑY'â[é¬ é0’2nöU¬¼yÏA†jpú—ËHˆ¬n«vXÕͱ<—E ÝH[÷c}Öû™Çó^P,¨wÞEbFßÛúš=§½\³k$ÄdÀì:À}hjµ9$Žü1¸xræ˜^~7Ïž¥›~ /øó:ÚohD•9fr!œ9’ $—Ça7RBhK°•÷@«Ãä[Í=èFHâÇÏÐ!ç(šÄè¹úãÓLyC(ŠHž–‡ú*c1*‰!õ…ÜãaûÉ*Ú™;º™Ûãd;Ý'„w ‚C²ASú­4¢Úú– 7oŽááhF€·º çUFð¬árêÝ’Z°ÆÊj×uðuÚãmÑ`’h-oŒ€¿Ã%` |yžÃ*‡ëdÛ÷à;Þ_-g-âü¶'™%?¬gÿ©ü‚Ÿ—©/“­jIÀóÇÚ =2>ÐÏŒ+wÆ ¸çSÊê8Áyç7ȾÎûy͈5CÞ¡ÈO’}d­./\E˜•WäÁ q\czÅÒ!F%Â8ð´Mò¦økDߥÐ$yn›®–0MלŽ×›Råê^iµyh$¬¨ICnzJþG¸®UAå­ñµ¯ú!fŒŠè“äªWR^¥›ö¼çƒ&‰ ˆÖâ†1~½šüµ¼JêÒHI“D*ñ^©_稤ÉD‹r’WTF·;4y.ÿq'ðC*íZ~8UHƒ*m¤TšöI¯¸+ÌaUæn¤ŸZd)ÅmñT¯y ˜ãX•¦×ñu} ¬H9šŽ gÜ%‹Xõ'…ð äô¬ºö$I)<+x·ÍîsG¹Ìí-Õeµ) .s{RjYñ¶?[@8Do+o~Êàc° ,¼Þò¹+Ú[„W9„õ°ä@ ÑJëËíÐoÙ²ß%¿\aá¬ßõø˜{@´ØqÊ’¥³ xq¹Õø‹ážCíþWéׯ‚ÃX¥W‚:“"5ÑÓë8Ī®G™;W‡¼>ÂÁ¦åÕWßßS\Á¹èfðWÜ9î2‚ÏÒ*­.õuìsýN5¸ ÈúbÆ‚Ua è±4–´rO@zuÝgA“5¬%íwÊ?í «h0V©.¿DV¢ø²BÊÏç¯};CÏÓ“/"$58sbV'ͨòW¾ÞÅŠ&Z+ð>¹VÅ¡Ö[¦½#ÈScMFâ}œ”…_[ ä,B˜0C$O¯wÛÐ!Á1år"ÜË.Ä ,`J™¿'ßÞç‘LÔ¦º01#ÏÏí|©%³ÍSjD¬‹S“ð>uI®&ZI*kº×G™á¹K&¨á¤B+^…" ê i°·<`b•§øëTQã`&Òƒ }#¹¤‡\íæŸVFèZM%°å]š°z +‰H2ô)Úó7¢Ñ8R>i4»Æ—ºY®ÆM‘fUBÖJh°Õ}W'’sfÿÆL~˜ƒi·LúÕT ®ÆFÐÞ>-Ss¤]œâNÄ™FJè†Ô@÷´?è0 ¨ì‚+J‰Ê®KT8â“ð.jIü2!÷âÌÓ”E’0ÃÐá>Ôy}×0\" ¬þgÐq,Ì%b9Ðê_8CÑ\CëÚbíd&&õÉÛ‘!‘:¶cÍ ~µß)D£=a"vnzëRß>vTÆ'–Páléê -{M¥2²ú;¥^XPƒ¿ÇSJC¯¬a?çH¢‚þäcü’ºüª¦$¤G×±ÿ§LK™AÂÓF"MÏ¥U7a3Kþ¤N„y˜ÀM’HKêÕ1»Qò>þ=•ÿ®cèEê×ÜÊÖØÂ4ÆmÇ¿òjLÛí§[N{ýJÆy“v’^áøØ::D´E."¾ >Lë@m‘5¨·KàEBÅÎAâìR”ú–\iFÄŒ™ykÐë¼@ïô²¢Õ™có*]³|N[÷pñð«» ‘fžÙõ¢ Àà®ÙËÐÀF !«Øµ²ý×4¶\oJ¼÷)y§^Õ“¦qd\[@×weW$ ÞOJw&1Ÿ„dzRÈ8t3ñµ$Kô‹C1Wj—¦#¹çU¶E~“ºz͞Ʌ8‘Ô›’º")áf6£L“zÎvˆ»8äB‰ÕOVËU´ž¾ÜùúÜ¥¢d%¡éš)½$IùÞ"lï)dºŽ¬Ôˆ°K¯2çóœÐf.z÷kº2Òͤ‹ø¶jO»¥ó¯¨!ôäß‚þ-~ô»Æ—©,eqoì`_üαzùºöYüÌ’þ9^AÓ~|1#èSziÎãëÏŸ›Æ1Í(üfæ==t”šý)Iý0!#ÐU]Ï]±È‰–^ׯ*Õõ÷xª±¨dÖ#ƒ 3XõƒuVãІëÄW›EXE“†».;Yã9ÇÅ•»´fÙÖd5þ–ØtŒC8¡ÅC ¾h½N˜sÒ¬›Ðá^>¸›NšK¹K•ý⟻Ö[‡ËòÉOP‰¿öS¯ß ãƒÏ¥fÝAˆ¨}žœ7éIÛëW5 k|fê §c uc[Ak±¹¨º¾$Vøä:AÐycú÷]—ˆ”€Ü×Ó¡.¦Ù§Ï–ö¹‹±‚Ç4&'œH"¬B~ÝÆ¼ß¡>cÕ1’ANýñ_¨E¤%Ü S‹¢¿Õ€¦„3™.þP ƒ|ÐO-#9øÜ'j‡éã„¶¶¡+1%÷N Ôb7¤û`°g@îÄ_‘ XCÓÍ.‰ÿç$ã@ó¶Ò©3—•ëjœ5Ù6p½Ç;dñ‡äÑþ9–ð…¨u¤f|<Í£ k®°Ó?6æÄYÆówxêfÿ¨E]2SŒaã‰ðØäuügþ:àI>o ý&&#?LêóÏȆ" 'ÀÜ“Z• üUÿb®dÖÜ4 ë§ø7þ‰OˆoÂ$3Ò.»¾ëÒÔ¬g׫®ê¥­ûé!úÚÄXç£ceWÚÞ¨Ù xèñœWî´z&«‚·Š3lÁW¥†¶| 6—Íz¼¾íóžv_ (Ï8Åâ]7¸Ë ¦º*ιJ*«5 E’Û™nƒ³eò¯)L:¶%õ*ÕœH¹½Rƒ=Ÿ"Ÿ[ái×Gk×ËÌñ`‹hÛÙ4Œ¥Î™Ù`T ÙÈG„Ä¥œ¹IÄÝÓ8q~fRÒ¼N´ ­° ÉAÊD „èÛ=(FE(Ÿ3¥ñP}§0¦L/b;VK  f:“1©ãÌÔe´{3|möM J’–“:8Bxˆó7Û6nYÜýã¨#/Åé}é²VÎafm§‚–üÕˆ'ï•—xÆf ßo“ÃïÈç%¯ßôÁ8°ñuÂv¢¡Í„~åéúÞíf<Ç€—É%c„Zí0ÀlqÊfº¤Ó¿Dåt)|<8 ¹˜YÄA"í?çãÐÐÈC¶°òÏÈÒjÀÞ*Æd x Àò~S+ô-@V5í=¡YobÑ+†@C`š1Ôþ÷14ž0 B¨…Ü_Ðþ,ôÄò4MçüÕÁ,E½KHpEÄ( åa`?ñrÿ1À‚#ãF´¯hP†¼ÛåAË©FZè*]úU¶ÊR  ¹"wjkÃ'ffa¡J½* Ú¿eÆ7É1+­“àßJ¿)²ô§ü*abƆ&X{Ñçªñ‰Fk‘à÷ÃË›—“hWÉj±.ÑP6Ïv(·¼Þ -ĄҺÿøUö“c,·Î;E[~°‘?Õ‰Õ%³ü‘ž~Zözü æUƒ\Ô9ê¹ÄÐ. Ël¢,l¢ºÆ|BÄŽáà‹¬Yú…þ(Œ@EÏoàjÐu]eZÜç •Y.ÛApW”\îóåZuP&ιhqA¤f¦ø·WlÆýáUû'J“¸#‹=.½ÎJáÎɳYé#Ïu@Êrü­<©E(‰;Q+h€*¼ôF&Û–£r²Í6é¤è³rC¨þ m\5Ö‘€‘ðµþ\êúÃÛ§.9 I &ªâ‚k½i&Ôä¦]³œI†!U¯NäZÓ–OÙ Ñ}–l¿j@ºÆVùp",ÀºvlÕ¯Aó¹‚äîG B= ëÃ^¿ï °7‰ß&Æ;Baؘn·¶Ð¥ñfÈûÌRmšOþÆ—¼ÄË»$q-V ÂâÝ9+K@㟨žâÌÕìÉ:Ʊ•¹÷1&t½.щ ¦þ#8 }(V \Î*ž* ã|!¹îÔÁ"SµV¢×ÖW'^ƒú#Ílµ Âïs¸fi¬_¥üÁÀÇÒ]ëÇ´*¬­ïºDÿŒŸ€Ã@l…›€š\lÒ´W CõvXá#}4Ì)fOô™³¦Üéw…õ%ÈŠ~lE ¦A´…fÞué½Áy‡hö¸¸ýTvò¥è‹VD@ðYIà ?X­ )>ÈÁk°~>¯!ÉþwÉB×/¡÷º€÷¼ôP½Õ[úýLÔâŒÏÄß%ïdhýú(ÅGùåʨ®ßC(7BJ†íº´Œ¡s§ñÜð]ǯ…ùY9VœâšÐí¼þ¤\âhãDõú£ÁÓ«8£2 ±Ð;3Gœ¡Ø&Q¯eן²0]?Ô¢* ºôL¬âPÒD…wg23yjýÎAv.nüÎÅÛsh—ä|Þf9jœ«W3©>;xna¶UÙÝ\Ò i¡Y~Ln•°ý*ã¢KûCý2ß*Ý£WJ•íʃå*YoZ½•s½4S«^ÛŸÁ2Fî ïxó,Ô¶ï1¡c½’åuV!Œ¹où]ÇÂÙoé=µÎW7}“в LÎù,Ú­ô6#²ÐëS1Î"\^À;tiû0Ä@ñGfðjð$ßªÚ ­ƒ¹œ<[; ëµ³Ò›ÆW ¸K4ô#$ø”%ÉÓJ4 (™“„¤É¹Ô‹KLJ¹ž¼ä)–Tߤ„~®2K¼…û:4BªdÀ]—ú[øeõ­#„TpÕ-ÛÔÊx7ù†ö[‘ßÇniV]3×Ô4¶'¼BcJ'ÍŽö÷!'M5Ðmû¿ËyP}ÌÒT¿M@·MǾþ åímo]ò•ýÌBÑ—Ñ R½Wxyj@¨#´,Àii7-ä{}XpùhñÊy´Á’¸ŽK™¼½¡!„I®¤ÁZ ÍR¼¦K«”4FÊàªüw1|ß%ü±ØMƒ®çuL7½>k@.ÍvLãÔñ­ôáÐr ¢-N«Ù zkSm)—éÈ_mûæÄh­ZLv®N=–æL‡×eŒ”ô)Ôé‰ä¦¹ä¿ κ´Ú“€e‡iŒ…N`~ÇàôE«5 ŽþÚ´´Q¤&‚ /<Õ 'DcYàÃë…«÷ˇn´¿«šòº%…ޝ0h :\<;ÚqPE –€0ÅËàwR4<‡ÆÚtÈYa€€ûœ€|§h³t¥ÿݪù~ksY¶ßœ'ÿ÷IÇHj /þc)mIò;…T{—&Ãø÷;Kl ß¿X-!0Z##äøÄ"|-¼îõA¨íøZ­UÓýûaº´Ê¨Kø¯öÉ4Ы¼ Õ`­…†‹ciŸ«ô#aj) ´ê¬®x»RÁç+Å÷0´Y§Ã§—þ袊±ú{Æw‚`„_ˆ¦!´8#L@¯êšQhu³Qî¥'L‰òuÃ;ßÚíœàÃ1:¾¤™n*à§kª-¡w|»Ktr-šZʧANÓçÏ4¼â€>uiå+Ï {œ¿á;ÓwÕE^ ¢-M˜^×Ív D.zQ°V—¨„N«ÎbpœrÙ8ÇYû¸œ’yé½þLçøÖ³ë— Bèä²€¬¼ô’K…Æä( ».í÷W_ñm˜©Ç0³v^_ƒÏ®ï”©^r ì4È4xy:{ÿÅ’tó‘4ŽC“5Ûõ¯ŠJ2tœŒ˜nêì:¿rÔ—ä"ôrIÀG^z©0„>Û0ΛT>ÃH®cøŠŒˆ(T}‰P.'à3»ŽãÝ úõç«|²Ðy0=Ókó™© À`4½Ç1 ïW¦A®¼ôäw3¿…¦=>ºòkˆ‘å%Õ Š;¸|Ýõ(ÆÕbiÍ„{‹PNEÒ–£.ñ¦šV•Ë>ëR»ôé¡'8EƪæU×L\Zd9*¨Ã)†d@s/ƒ­êºµc:¾–K¬—ÃxðpyÐU—ÚŸ/)¶‚ ô —o½æ÷g‹s©c*ó´Å¹t¥ó÷Ê!0Ôài¡ü«¸‘‰nÖuÿÓºé·NŽXui×´Ô“Ö p ëxÐçõQ ó°›4ÝôúªhŠC‚%ƒ„5J:‘ã·jW5íûà×lߪC.õuðãÁk¢ÖëR.ó²4/DÆ17ß|ƒÖW7L$Ä‚ïlizóJÎ<$Īë£jH(‚K¸Iø‚¾ìcÉœ£0kݸªsÑòŒ_1ä}ÿ®C8ÉЖtRÓëo:Àw”\Ëö^Zq]Ó¥UžúVcÓ]¿ã!ý\ï1 åaÎ%|U[j¦Y ¸¤ÁŒk”D«ÝË)4Œ[Fk~¼§iÌör¡ýq ¯¸jôŸX\uiöƒJû'BP#„hO¯Xá¤H¬±õ:ÈZ°Ó5op Ÿ¹yk +Ú[#ñ¦;ƒÁÐädMÀGu=Ÿ=5Fa¹]ðÓ€KBo´'‚xè˜å­äE/]ùbXÀ˜€&ïc¬Í´hÔ´q™=±¸«=ZTX0–ü Lð_²žgÚÏôýƒç?ô8µÄÊÍ®nV×è„BÊ;ê5à¾V)Õ.1¸´þP‘f@ø¤¬}¬nžäj¥5…Šøäæ2i÷8«ˆã{a±Î4ýœ˜‹y¥É3Q_—ˆ ÔDó7Bÿ™S®‹åU£î÷ Ú[5£‹Ñ9@‘s>%Tþâ !‰ ÕŸþ¸­žVHð¦@b t[è­ Hõ\zQðõwéXÍÕ¯÷8Bø]çOYá#sÔê¢Ò9Ïɸ¨é7&8#ú2jüN Æ Dø÷ é,$¡u‰Ï3¶¼q )Dó²ÚñÙµ^`äý÷0ÅWªD¨Œ $t³F}žº)ƒß:²xiˆ;E_Ú²ÇUiz+?Vrµ%¨Pm ß¢Ô Ô D=ÎFLè-ðÓ ZµB!B© ÑÎVýj‡Pî•jÒù³ÞÙæÃ~“wfãpzUMÔ¸ª) ?y}j¡gäM â›ÛiA´ÚÞT¶4nL^nÚåa–õÉ ¬ùÚ´’»Ò·á+оzíŸ0ÒÖ÷_íwNïp'[I ^e½¤È¡‡h¡aÓ~ù©¶²žÛ9{íq|\Ó¬zœÆÆ)òÊïPþ]¶g¤´š&뜫•'‘&ÖÑá½ê’¨§sö,ëa{ ”sŸë²§?Ò 7iädæÎ¦Nã´Æ5‰´%ZïB«²ÒåÄàÖÂñ[è <ƒþ‰>†Hpýªþ/=œ¸A¾'æ6SM2ý»-+°ª·ëðÃwxe.ÞR¾G(Ù3yEû­cu Õ‰ögaÌ@ì:qe¨SU~áKeµ€†ä[ï2í|16y`Í+÷wðŸIláŸv‚g\/«3Ͼìûw¹M« p|EäMÚ‡(× ,Hö·””zÏ?F:ªÍQæbQö¡ÿQ#i©ýÇ/"ö™o1íR MCÓUh¤œñ¾µŽ@Ü^6ëÿf™Ñi$TÑ×k]eSæü‡•’]TF…b ykÌãÕËQßÂbÞu;dˆ˜P~Œ¿zqªõ.¬F¯ñµ_¢º æy$1* ®kÕ<Õ‰öÍ÷»f¾ ¡ãª±pÇß Àf«NºþQ¨çaÊ’ˆëÝö£P»:Ñt‘(ûÍÜ Â¦ß B¬$LÓ•§°^­ºÖª»U ]Ç8DµˆoT[‚¿€*ë¬aø:k½ÇMe`?hŠAºn$ù[5ݽLÏŒ+=šì§Dš;‹¶,%{œ—Ñ[Ïu˜˜¶þŽßÑjýa©è@ÊÔȧ­›\{‹a$‡·ï«|¹Oq9þÁ (ˆK©_4£é®›L³Z ` äC £UV=0QI¦åoYõt ‚8íA ‚‚èœýIÏå"yÓ¿\]ü­úæn´l)Ä×wó}]LyòBlNßc‡{c½Ÿ¥ ,+g ý~öñ©H(Ï (ÍX"븄þ Ý[„†ï1òØÔë°ÊM@Ú:SÉó&ƒÓ“µˆíemüEfhù«›Î3 Q›$‘ZiÕV¢q“^t bYx]zÙo¢Ök¶}K,âð³~ãß™YbY•¡W™6#Ð,˜oìÿ'-Àgš9‹tü þª¡Ö›£Þ°Njý34^ÁÂ'ãg½M¯QÒÄÉ'²Ö©‹¸w<ë±[ԈϕGîý7ÙaJыˌz“õ­nëiÐjiúl?‹8´ß¼¯ÿHx®ÃKµVÐfÔ²=nò2ô•¤ÃmßckjÃäå— ýX!:›ã|L¥¯E¡ án¨Ÿ¹@V¼Iƒ8‘³ßdðG'Æ`Xpí¾ÅŽº²›8öQ«šRºRE£¯ƒ¼‡:ãý#Ì~°›’éÒ+EmÉà±í¤‡H­¯4 DZˆépKBáá|ì†ú:D΂g®hĹ:¤ÕüeÿºY³©B¤Ã‰Ú¾Sà8¶RÓfB2é&è7Ò´ M&â‘DÏñMƒ¬'=ôfzs›„öITã0QûO‡ÐWࣶQ„z2e÷¬üãdÆI_­ƨƒIÕ:¾Ø)ú9Õ@·•ä¿jÀ~•øÉÇLÑÃêqèJoóoú¢hz`«QÛ[¾¸s«SÖs²± щ€ïù´Ïm1YÛY,?ÈÝöú–ºa¦¤ªa†0Ö9ÙjVtµž5ÚAY"j÷š]Å&ŒCÜ_¦¬_% Ò{Öª9ö‘œ.D"fì÷!—hÑ atU/†ð7¿â憙%¹Ö ¹£Œ·fIê|'ý ñÏS\¸ÅR—ø >¢ÒÛ°Ðr·½>Å6œgÿ…ü­t1žñ^62÷¢™¥åõUTQš8»L¦V€OŸ¾¢×8h3ÉÚšP‰,HEd“­i¦žDl,}‚ÕÒ[QxQ±åt:Š„±cÕ¸ÇqH騖õJ…„ÓÝVªm³€Z]Åñª]‡†So˜å(qFjʇAG2äÉÈçb&ô˲ïwÒ›½Ý£ 7‹è£°-xG›…s¹zVdq ävvðd¯--ÇÈ)šŽìtP˜^.RÓ.ãå, ¨ðÚÉ™VøEœ`—i‘=Áz©@NWLáÚ• ;35Ò‚öºîO¯©& T÷ú›¸4’A™P8d; $S}X6ê”Ñô^ ƒîéÔúáàŸP~½)UO޶V¢éþN‚àlŠƒÔ4n&3½e›Q8NM,w^É–8›Uãg—,)³Ûé½S ]në»°ˆƒ2ÃKÊ_…¼ëWAoM›”!î'IòËk”)¼f)P‡<4½ôv¥zËÚ›ªé­9?añ,’qç&WUt* ²÷¾ªÜà™z†ÜŒgý¬ÓAïöÔ€ºŸj L$~aº$íËg”™n—dÒ}Xºk‰§8é”PÖ"Ì^a&½ÀÓ[s.2sòǼ$ L³¦v“²l#¼, ®O¥À7NÌËÄüÄçIDF*Ù¨I±X2*¶XZ%G¯ºDì—­i¼§p‰Ü![s»â'·ÎÆ8±áCwƒÄž–ð8ÊIÞ£<á7'è‹ãÉWÞäT=…(P†ZTõV•_ƒm Ò[-}5‹V}K!Ÿ¤^e_ch<ÎËSXõÞOHÊÉ $PgÄu½)]o%†ýúu¨ç”)½#ïRgªâ¡©~6íwQ;'”›/šRð›ôåƒ-LnÕÈŽ `Iå9!ÁU6a~µC"í·j. ¥×°¢?å‡Ô™54¹_exÞéfÚ‰›ÄxžÙ”ÂW^Bk~MÖ¡ ½âòOjà†°©Ño©³€Ì" þÕSà§h h­¯w=ôJçÓ‚>¤IµƒN'óùËQéa—N Å—íihLþ¶BÃ<ÊÑ5¢eP\²Ø£ÿ&ˆÐO¼õY`: Ìi5Xðcö“vÀ'Úø¬)Ѿs@JÜ…¢¼ !f¿²ýJCÄ£)Z¯lßR ºîävÞ¼åÅÛì¾ÄêLlOÓcã^§¤WÆ`ÙÞz=9RòZ%G~q~dÚÒúZk?+å§Éã¬!Å“òõk®èR’§.„4Úu¤BìÓ ·a ƒJÉp‰Ûaî„7í >5 Ľ˰âšç†Š0XÇ ŸÙ« ³p[ef°h[˜žâ•£¶« ’iaÆÈt-¡\ÚN„îjÚþ°òº4 „¢ôc>“0Ù‰`¯¦­XÕR+s{AÅad}N<4J4H/Üt­¿ðC°05q+u<Á3ç ‘ã€ f Íw4¤1 £i Y„/ƒÄ©š=ŽÎLçßÚ|ûɤçÌšT9ö¬Ìemc<$^â«èg‰l©y¯ƒ*Òÿ¸¬¯‘*.Ž“4VºÑSÑ ©çSÁIH')G\3ÌÎÚqÌ<˜š‘ |¤§Ñ©a=å%èD•GT3µÊXè­@Ó^“ÞNøë+K™%Øà=Ç^Õus]oaðÕJWÈŸ§(ô7 ˆo¤úãš*§Îe–|³zø¥ #ä©+}ÑëÚXûK-|—Âk[w£a«ê=FŠÃlúà87b™OƵ;0îQš x*y©HÁÝ aFuŠ i¼>J.í]ƒôý0`·êz’a1BÀú IþUáëa¦3Òo›3XÙ½D³°NÏ]Õ!ÑvšÙ…a–òÊõÃòúS¿F>RjÉûœ³òâè¸ß%ôÇî8Ü0y=²\s8$”ž.¹+r‘(x…qXÓ*1d ?7Ã3²^q™IwÎ̲„OìËìãª@êüÑhÌÍd|ÁõqÜ›@0âTÿÍ'«q.f÷‰yþ—½% ñº›®O“šÎïž« 7dÌ?rÂ+DŽåö¬3 Úc' ©¯Û¿áï)B<‡#kæ™áÀ0s.Wê3PÑ(:°¿åz2|V×äh$µ¦–!pƒó¹xšùÌ>AIGo…9à‘‹^?ƒ­èP¿ÑQQ“,¬š"ˆÓ¹õ9ƒˆ ¡ÖOƒ—A#ƒnK¿y2·aÜß¾k"0 ÒP~™½]w†7N“¼ nuªK¡æ»J5K„±6¢“JAEmí5w>ÕÓNùW†È‡VH‘!rtƒÌüJ€14]Ë€4þ•ñ4NÝÊÞ¿aÔ…Æeøü3ÈÞ‰Õ _½òšgÁ4ZŸžl4è=y)v„ÎðçŠ8•&5€ÖçIj¶]²@')…pZŒ;Њð`u¥qŸž]fv}:‚†âíq$bòÚg`±“C>2¼ÿPyò«à|y2>ˆ û°¹ä×Âï•´+•aPR5lCdPÈßôûßÉ]„êa¨Vª‚!Î^µ¯ÂñÍ:&6iV*?]Î,‰AÀ’,E'š&½åªPA׬à¢Jœ˜€éHH%ÑÍM;m™Ñ(#Û¬ÜFŒXäN ±NÂÑ0¨‘Õë¸7 ðö¥£G*øíÃîAú,ý$Œ¼%Zš™wJ˜<Ÿ`å©!d±Ø·‚#â‰Ú·R’²‘žîø¬(Qeè~ìs(Ò¸ÐPƒýþÌxU.iP½=¢A ¨-º+ñ†¼1è°¢øíãÃÑä“1¯2 .­.ò[’[çŸß§_µŠ§`ýÜ:ÿØYLMÈ0_ajî\˾šÌÓtWñ;EÎ8~3Ü¥©˜¢D« ‚! ä`¹dú;”ßIÜ&d:µL†¡ß¬NäÚm´›…*CO Ót‰·Zm£µ\è™ WP–Þèû?^FŠßi:Y1/S£QF´"”W—Nw3\á5öí7¤8aä0¶>y8 —q쑪ãœÁô _ƒú¾¼ùÞ„H³]²NX|lJš zúÐÈe= ¥^kef—ºDøE c°ÎêÞDPŽÍÍ ú.uª7íö"0Ý)p€ƒ˜Óxx„tV“Æé)𼎙Òïà™)Õ¼ËVÃIÖD—8B+‡†<ÎjÐ 3ÄÁ©Z-rG„m¼)ŽÉ,â:2à!P¡™€=ÿˆö<©Õ¤©€ëƪö&ŒH=ñK¶3ÁŽŒ¢xãºNª)ßÈ´A´˜X óqAœDÙã8IiäùY,o!—Ï]AR3‘ñàÕcÙ@+;aî'±Ì y j¶c&Èå$Á(€¡&~!9“³È… dâó«x£›‘GÊ­ŒÂT'k»_ÆÆÑŽv¨í÷»õ’5\ Õ†Õ‘”Ä}³ï"§Ex² ÊŒH^9µpBਨ~ˆ<Äc"Ò½^‡[†@¾öo®š¤së·öÿTŠáEÅÓál;NÈ쮸’@] O êp¼ÇVý­z ÄÚú¹Ø(Qñ1Œƒ_4½íWà§žß3¸¶7»l¼«ÃŽ®òê¹*ÔATx %]xÖLð ç,ƒ]Ppë§×&M~Øí*²`dJ9 WŠcŽ2Ï®Dà@Â0ó=ÆÉëOQê90 µôÆ•'¢˜ ºð¬É€,±!UËœù¦ÛbÈE{'4ú+UU$Ž8\¬ÇáSY_ù0[¢âT Hì—²"x?¥Fø8M²°JÏ}O¨ “§ÌàǶÓñ÷={½J9\ï!*µfzÔ€SÏ¥©ô¼ªCÄøšIŽ¢½®§ŒÏ†>máïfæù®¬iòáKz>üS¢û”›;¸7Žê ’Î{ZxVÂÂt™VÎc @fí"6ÓôFÏþ÷©4âúÒª "–ïéÚdcœ&ZìwxIú«0çÓÔˆJÉýVbZ”D¹Å]ÚðרþGfò' ’8·G^9ÑYDÔ°mQ•Z™¸%"l]ð†dñ¤…{™Œ;wÓ›Âsëxæ*ãìÃ;×^’rÈ¿êºä㡚ÆE¡u:IÔˆ ÀĨ;y@S±§éS¨¤ &­ö<ÞBœl¾ëÒ>=ѧ/‰X.à¨Ð=iŸ8äýthÓu¬.jx>”„Òø5.ÍÎG¥ð¨öÔDBƒÎæ&rz¸o€&­z3žJ( wÉiŠ~‡K“/¸IÌöÇ%iúþÙ—h–úÑt•jJ´IÓ\Õ”´¾þW³`ŠÂóBô×)­íߦ¤r-%ˆëtÈ%„nùaÈ"´R8œ†H×Lü½ÉÚ%Áá"ЛMz…L°Kƒ¬£?ËLô]W0ÌòðDÞ£¶"ów-Áæ(ÿr½É EÌZ^Ë€F¶©jo ¤+#àÎôW/þº\JDtÒÛË66A¢v Äl9ÈL|ã<ÏI:¦ž¤NœgÙ×}ÌíǦÐs]&­ìz¤iãˆÞì_#Ê/¨óììu‘’%‘ö•u‰N’$9É©<s!‹FÝø ÁPm«eõd½+)Ùê?E[I˜EèT5ü'£ÚÈàªqÀc:ùÊöe0†^wQcúFHœÜ¦U²ü°,°]ÄâûH !MiÈJ" ×X†ÎnJZÇŒØbe'iPiª¯0þHÕôš×Ÿr7?º‹ËN7LŸæè§:Ñ«”_[“z ¡ÕE [ Z+T´J.оg~d^~«²sQL.À•>kXñfÔUGcPgzVÔⳋÆxÈ:ôKèÑo—Á•^I³ëªò­'ôW9?¨Í*æJÓ>å&Šñoù/´»Âåæs•|D`$2Q<%UäÚdMÿý¸|ÂPÝMŠõÀhÏ3›Ø)Yygòþw|_EþH¸v‡M¢Šÿ}™–ºÁ.‡ÄˆÃù±Œ ‹’´—µaPT3–d<ªÚ$Â[hjh€ó9±PíUè7бHà«"¨­¯jïÐ|­§ß£7¬Q#1æm6æÄó¾\#$µãÄê\^ýÕìÓB„ &Å·+Òì«lѵϯ–ô{ÖXE6Õ ³Vuƒ÷8¤Á?¹ªwég˜ËëW™é9Bè0¦,â&ÑI^ñ—)4PX!ÄßD|—èû’\œQ+ R‘\µ¯±\ùvqéé%$põëw‚#4ªˆƒÌ`fÞNÓÏ„¨ÌíãÐýŸ—±Ò0G„|7…¹[^Ÿå¦ ¥ˆº—BöÃZôc|We:±s¾¬®´Šº>,K7¼J4"‰˜ñJÌ¢$½.3L«BòeݶSrm ~àY}œã|—·øšËÛN¥#–±‰„ü§Ìvåå0ý&jl3´Rï2X˜n“°À×åq‚ŸüŠV¾ `,X‹œ92à¸Ó×7&ßgòíÇzCœ¼çP¹Š0ó)PДqhO&'S`h!C–ÿ=†¹ÒàSJ©ï’­¾¸Vb½É%>]ÕŒ¾QXm¨ƒk¿ìÊЛ\WœÞ¤¯ÒõÔБO¹žTÕâ í;ÌëéK }e'éUޝÕÐ1íÍõ]Qa¦CÏt Ù¼«OTHBáHa@0ôóì.ÎkQ4¹låœìJ…7Q]Ðyœ*=IÓ8k2¹îKºIã@•ÇíÖ-¿ÞOÚ*NÎI÷å]ò)]ãTÅ$¤X~FbµÛ‰Õ9_Åøs¤®q>`¦) IÉCãhEå³xðÁlÿ‘]ƒši`˜Á žåW@G;&uw²ª'M1H™¾êÌÅ@áiÚþ¨'8/„ãÝFð7L^fû^q«™Á}UÜÁ z­%›£ŽòPÜœ­7œŠjUix•@­!M®&:B2VëO9ävªk^î&L‡¯ù7 ÿVð•^Ô^~!g¸ö8×´X©èx\åRÇ—d…z.šÁOÕ¬&î"äx¤•“…¢õ¸µT#¡õØåk©Õ>…Æ(_ÍBs—‡høIͼ,ág5w™öM7¾«äâW$å%úÇȳ*4Ï?/«ÆMó˜Öwäú}´^Õ“G<' .h=gšÎ#ž µ«ºž§§¬¡ßªÑu¸xâïnœ5ÙãøÕ4íeÑŒs]Ç"LÇ9v*áaÌåA«.ÍC]׿ô…û H@Óÿ-šñ  €[ŠK³v¤šë.{m¼0ã:¾óÈ߃É«ËûåÈ †!Ú'¯z¾‚SÍŒ £.ÍB®h]5$Åy:Vyþ:_ˆÄ¡#^ßô5¨x»¼å‹Ió»TÛw™þÎëO9/ª‘|%<Ðe\îÅå“ = [ìâ͇>&*â.­ÞChärŽq×T7¼æÁHVëÚ7pDÛ­ì›)oa•§ìë9hñI>_Pø-E¼3?bƒŒ–ÏcõÌ 84öm9j™Qƒ‚ÿ6s]B¡ “R‹¢5“B‰ë»ðI¿Y–«`V™²œŠ½‰Õã|ÔéÙï„4œƒ^õðK©W¹¶ ŒJh 1> &%´ZCS`D!ò–„53š|QM7ݶŸÕ€0ÃMº¹¾ ÍWuýœîœ¯HCÌ€hϱºå«4†a¨†ÃoöwBÒ‹‡\e5“ƒqsQ¥¯òUngí!¶æ±ê2bqpÄ2k‹„r‡†M.%*Ë´÷-ü”ø…%ÇøêFù´ŸÁœ>%‰fõõA?K^&R–Ò¯|ŸâàIuˆKØ’áwÒœ¯¤²rt|\‚4JX Ë©âDÊâ„æ$C½|³q'S³BKÑ{Vkð7ÅÊ2Âém2õJò†u•LjÉâÄÆ„néI¶ßizœ—@±œM´\À‰ó´Äo»ÞÂ)|íñOÓjUø¹{*ü\‡Î>‚ëÕ’dqfe¢îiùÉ€¨Œbª%­üÞO üÿeºíù5`âë"­ò½iD{"zšN —®Tí!~¿FªßI®Ñ ÎŽÚŒOŽ/¡GŠöa…«pÆÙqéiIëÐÏJÑ$#…V_åq¢Ô1+¤C¬¢Ð=²€a<ÛLÖì­l‰Öqâ`²6_ÁŠ®ãû¢Á¶È¯Fæ{ƒ¬K[b êqªˆ w»g•¶•MÉóp[‡K¸·¡A+ƒ{$sº'¼G¾‹+ÖÀÆü5Ú>\”FDü"ù_ÜùoŒB 59k‚ÍUfj•\0è¬t',1oŠ‹žäbsfH|•jÜ.—u^B&4|ëÍûÉàVªõ§¸l n‡aZít§ò2_ah>žlÆb¯·rÎq%ȵ4ÁCmŒDÚS‡“×1Í(KÆq©(„sÞ©ßÎòyWÊ×¹æ[öqA¿ÀoQxöò7­:*š’«0ÍåDòãwAÉ8Ƨ(+[겤‹j†·Ã|J!ËKŠ£¡á¼W… š×á¢fÀÂxXÌck¿lþ¨¼F<š¼“Ç‘#¹ßŽˆ@v2~ë0¤×ÐópÅ%Ôd`+Ñç*BdŽÑå*ýÄ\ÆUò®¤yÍNã|­`×ÎÈ!n´\3•—Àˆ@kCÕZÞá¶ó³ˆè5>f±Ÿ¥Ñ _þ"Iz7pdCç ýwÒÁ«¯YF¶ò—†ØTw+#ø–¾ïð(ÉFPw» íïãaÜù~9=ý೺-Çïåø"ø’ œEËJ¸ŠèûŸy½×À¼ ?õP|.€˸üf4{13øYT½q7Uüj8_4äNÒó,ÑáGz8 ‡1•fq‰Äcd“ËãLÿ–×[™ …5žôÄ‘µý!x‚jO,Ž_`Æ÷)_²ò–k03Ü–¾ª-fF›8¥I7±T³èH.ß%±fék^ß> 1•C+siàÐ.aÕžZ¯"_ˆ.´ÃÊÏvå´0°œea´ÔԃɌ¯|M«AC|èÞCÈ‘\}Ò¹90â5 Qôª?ä:¢öóEyi ùQí=ö™-z™èÒƒú‰;$jö1eÑŠGFj‰Má-qD›(ÌÜ’ ã"&ËÒL,¢â¡àø ÓûµNe™i§_b™„ò:äÄx¨I¦b99æ÷:¨¹z¥·„ß ¿!µg\\)¾ë¡C¯ýíÚ"¡g4±ò`/ÊÇ]aäº4¼RuN’” Iãý½¡ÖHÓµÓ /¬j!ÿIÓ¼Äò×0ç‡](µ‡/*ðøC£ мPKùè&N-í/Á Óû"~Æè'Ò*®'ï®”õ%.¿éW".ÅQ[¢¾µÄ¯æ”ÂhñEÜÈÙ¡¼Ý«•0U }ñ^ö$d¦VÙ _žÉEaXå ‡P&W|I†=¥Ð‹‡Êµ¤áÎø%nê÷rÉ@9Ë—Êã2xzýN5i‡T¦Z@'ƒî=ŽæL.m­vK[Ä9zý'»Æ%iÖSþ—/[߈þ”ÁŸT}WH@ªþGC¡#·¨ `¨!ã=EÞù‘ºÂÔõQÎ ê½ {˜9Þ£ÐúKtz€\»K´¾‹uÖîF~ƒÇŸ¨òfû"·VwJ’ŽŠ&8'ÒŠ^.á2<Æa•}Žóh„)ú¬èå‚ÀãUj]!qpbÈ…ì­½Gœ¸5âk –[ùô´õ*¥wMŸèäy2Q=nÐG¶vŽMS¾+Ý Ã'†q¢œé×EŒ$O+çU¨8ãH†^•#5FÖ³òYt„±¨Îö­<3+ºqû·Ž‡„蜿9v²òq}[šá! =÷!œ¨bf<ƒÌ3’ëç&]çäw@úÍ*'.…C+„¾žò•ó+Ú<¬Ô*MôTnH’¥8 Z—¶êc©ëG”Òç:ï¯RµÎÉ€ó°Ê§Ò´@×a/¯÷rN[å!YË >kù£‘ã\ib#Cö.— çº*Œ+ÐpÝ¥õR­™GêÍëÇx„C9ËÐVï‰öXuUð£Îw•Õ˜¶Ì¼Ý*{¤Où=\ Ñ3ÀïD{°D¾}ô–7ÍŸ²å>=9­Ð`0¨+Jj:¸€/‚Ï>¬h©äS¶ˆ¹+‡Å™7-å4Ü\E ø´ú]ª‘á¤Ü8pô%‘3¾KK2 [l=üwÂÿ8ÃmäZbõ¯P“;ûžÌð™!vPñNöˆWô[`t{doú5f$Ìì3œS¬(ň†ãêiÕ,Ê\pK.Ý%5Vë‰E/ðX#×»×Gy#f$ÂKõ3Ï2“ËY¶ù—†&VmYý;fÆœXEOà™HÍ48oG$=BK_PDÇ!:õ˜0n¨i˜[jEÅä±vzh×k1xT¬œo©hix› Å 3¯ðÅ£¬fHÔ #ýnp ¡nÚõ@ãB+ ÕÿÍbÀx†ÈÌ _ÑÂüŠ®„DÏïr‘bÄt’ ŽæŒü¯œ¯¨­­¨µ0ÞÑŽ3ÿ´õLT†>„…ÇÅ%×5óL,ÇÙ)ä2[ýð»7’2.¬Ôo•ã¹!ÇxŠÏÊhÝÌœãâøiR’k^)_2 6âà¶äÒ —q’Üà|E n­™÷§B¦Á-@AxË—Ú[Ñ(éÌð ƒãì¤iÎsz.ÝÔFœMÃŒ)æ&´_Ã@mpªeš–½5šËÿÓU»; މÍO‡_ÈOVãô¯GßeyáJ‹õÔ¾%Ԉê²²b‘‹ó¼9ÚCÞÆ$Îý]iÕ­™Q ýÓ­ "náã²2{Ê!§ó(ÓÇ1¨ÓŽ1ZÜŸr£eᨯ1ŽËÊ̸óûKI£§^&a])‘fñÐ9 >.â6äÿÍž-à#Îg(ùŸ!‚)¾5\†Ì«J¹•„ÌE&d]&D§¥dQc½g*"ÚAÓÑÊ¡2¤›´z²/ïŒ6p9¸Gc&¡}JoPƹ¬oÛGOJ} <º$*+¹ˆÝð`lISSTKrŒøÊ”œ—ZtbÑAŽZÑÉ<å‡Û’¸RB©Ñøþ“„’Ç×u3Çì²ê¸U'ƒPæ˜W«õ< 6Óç,B©=·ûÉ|•TsTpN7ÚOÅ%¸2ºã÷¬F°åŒ®I„ÈGE^éå)˜)4†úýŽ™q9`Ü­Æo)u¯h…¬VÞ¶_å<ÀHJg¯?E.#åq'‹çIœ…p($m¢ÚMQ BÓSW?å.Àp u%Ì5Ñ8Ž!Ç<Ózù€¦k B$Ú?‡ë·¨`&(`Dˆeð¥×Í"Ä*©3½9]ÜIéøš(£áXÎ T H6š¦L®÷£ Åæ¥î‡È˜ÂlÝX©OŒ ˜oŠ* ¡­pY:|˜øþ9ïöú*B´›Ê «umÕK`fÜI_Veæüî¼±ÊkÑò;áÞ†…o} ý4s/¿ºq#z2ÑXY /á- Ý&òHé¿á5¶"À•¡j”RMã±”jƒõ¯d V½‰pqhus©—}Ì‹ëŸÊb¤h7 +ØðkÄÙ[ãV@Ö9ð‹`XßDië†B3KÙt9&®ÜÅU§E’?\ ¬ãÇ4Í”Áý$õhîr3§*Iþ™]7R&Ô1nIÙ‡Út¥&¨D6j”ò¯šüEK,µ~â¦óXj0  ‹ª³˜tY¢qË¡u^§m2p¯T¸ár±ëw;f´2î ÏqR•~ëÄR(É1²×­A¡I&‚'Z!_:·!ZEƒ8)*'n%ÃGEC¸_I¥›¬4xËèí/ïXÊémO‰Æ º){¼~DqàXÎ(^&«’÷i¸3>£ÉÞ)k)7âܺ .S­a(‚øÂÕ­Ô–#³+ÓvÎkµ¾éòo¸7»à8Xt´^ýßéíó:"½^V¿?ÞRñ-f1ؤ—~CR|ë&=(±é­ša¡n§(Éлºî‡«-W‰6û‰ÊßÀ`Ëò÷x¥¼dâÐv ¾]#×ÞLåû.Â:cf9ëŽÇK<ñæÙ÷ˆÝŠFì‘vÏ!. ÚÇW´š9æ-è)ú¨1Þ .ƒã‹½âraíWB&8¾™tß* yCÂ8’ö¶"/ú»ÜÄ• ,vÑhî´Gÿ–s^¥ÐxÊMyö<â ½§8ªÕýf¯£b,ä]=û÷påŒÑD~̈‡Z™(5á—å&R§»F+BÂzËà—$ø­CS.ñÏ8„ÍRãÊÙ[Ç™øxíµý] ¦é¼Š–õÖ®„ÜwTÜ{Œ…^_©Pœš¦A­‡úmbÔnm~×êÐÎñWi5W)¡Cé &‚§ Ç5œE¨ßs²¬$ƒ§\'䲑Ÿ¢*Óȯ¦xæÐÝR ËvûM(ÐÜɵ»)2´Ùˆ‡…Ž83*¥6)ãžWÌÌúÅ[áÏK¨6Mÿƒ%wð²á&ëxhAoïÜd>¿ŠçúMa„°"5šn0Op»ÚhD´„ëÓiÓ^v£€Z­°²v̼ RftbG 1PßãwûµtAxï„´ö·ˆAä±éqWؼ¿•j Ðš%¤n£4ËˆÎÆâ£Qûy:ëd“FÈ‚Kƒ…é#u™õÃK¾Êå¸^š¨‰ÀØÊ‰‰ñpßÐĤxÿé‚·`&ÈV–]Íð÷$y:äÝ2û'Û`€JPŠ½Ú 3Ò!~Oð•¤f„Ü@C" ®k;g‰|¾eŒföÂŽAcÞêÚÚE 7ÝÅ{S=ù ÎÖ †o JbÒçȪ]†ûá™w`›E öRºÛxÒ)‘›ðÖf©ëw ¥kJeaB1ŸÇß½Ì`n¿£œàÑSûQ/ ,ÇŒ8³'GâÀŒ=]RFãn9I_šß°2ò׎Sbƒ•r?)·Mu'ÆoQíEø§¢€˜dùƒ@½pY–ÕA#AªN%øÊfE› d‚”†4š'À˜‚q&Q&W2ÿÉ4³“¾3¯Ï ¶É%௺lfˆòeT}Tl£UÇôÛ‡H#/%tNŸ ì_nš)D†}¯_OV2ql‰ôwð8Þ=ûï¤eìgŒI^ÞÀ°OµX>j!rì'ñïD^bÈÔÜ«V¾H¶ÌŠ»Ñˆ@—–*ÓÑ^&˜Od•_ÄaŸšÓ@43Þ¯Ìãt ™Vs®?²Ü$ õ]…ùÃ…»¥Vq|à轜À¤Rï(Ž|•—ÕÀA4a cRhêýÃj‹fmÃõ½“ qBšèæ–øúF¸ëÎŒfZbõ’òJN6å]F bÀuG³t_žtú'.ãS–u¦õç0½·ò)§æfb4$À{ͼíwŠIr ø‘¾7Çq=®6ݹ gY¸tO¿©‘޽HN¸€øm%&ž¹œî ú*pì¬Ý BO5íãÀ™ÙnT±ŽýàqÂyX’Œ¦»¹ ÈI˜ÅÝt[Ç{éX!pb Îë8ƒN}¼uEK&Iÿ)I¤Ëëõ«˜‚~ÜtÛ! §xÒB¿²™ÑÕŸÏûžÒ¿dž«¦"¹*°„÷¨®ù¥‰Ä¨ècæ¦ÓöpbÍ$¦gÿ¦Ï8 qo3‚>U}jWñXäŒ~øü¾JRãàú­Ã„»ä›÷á„Ï](oˆEºpg(ú‘õ7ó½ë›W£ÌbCì7—‹Þªg 'ɲËeé¤ñ×\eiSˆ¢ãIÄTì³VEkØÌi³š’,¦p©úiÈ@kÎVuøAÐzþ1%ÃÁ®Ä§µ)Rêdqî2ÿÜMê$Ènê6ôú.¬š›dršfV$Au”è†gtÝK>“­Ð¶cëÅ~IÇs*t×÷é!ä¡„î®LD¸ƒ:䌗¥SYϯëPßj9¹-X¹ ß–¨÷j€Tܤk¤kŸøŒÁ0⦘1tŒZÁ!‘€˜h5¬°Aføá¤K_â.—ñGù¯":Ù_j ¯r3"ísŸt'î½)ð`f‡i|¤÷üNÀº&çizã÷S4ƒpƒ¿ˆ4ê/ƒàüDIƒ¤øK¸Q]„¤ÞþKºq ‰Iœ>HÕá×}ÿ\U7jâf@ÇMSOý¬0ÏЩkømYD‰'¶Ô±Gò/âæŠ¨‘Œ÷C°Al‰)§!!œŒ-»•Ž Š§§`¯$ès¸â¢O?t¬bkx"Õ<Ö·k8ÍX¦çPd$ñZY"l2®ÑäE ƒpÐeî‘_ï±@u»~E5FÒEôž~"!¢£$~â«t ©ï=<˜:nXZTa/.^>?3¿áSã>1Û}$6XªqhbR|æÐ£‹QÑë1°ýN:Œëàƒ æ§Á‡á;&#KÈÛM%®f|Sª8°Ítäiä©Ë‹èWlÎS>Çì)õh§ºñE+QÑjôNá¤óÞ©Õ q=Æô߉tÑ`½Þƒ„…«áŠG{7%Þ®Àeõžî<²kðѱ}Ž©ÿMÔÆ}ÏÉR²²§è !?©Þ­äž–ZÇÙ˜XœÑ¥’oö'ªŽAœ†dK!v¡'_H(©kî‘ÔŠó@5‚ÑÑç4„hqžgòcb¡ýB'uŸé †n=ùGœíYNè%ú οfÿ_MgÈP{莉_K]iEÿ†ç‘éÐHõþ&Ž­WÀê;õ׿œ˜$5èúIý%É“^ÿT:ƒý)ÿóÙ„0CM §ìø8¨2û’Ÿº¾íïòŠ>²ãë ûxõåOšn5{+ð_'>IÝYãs$ÎrD¯ŒþÇâR0Ç/_”šãM$z©$ÒÕ| d‚˜ø´:¬íï1}½‹\š÷±¯ÐA¨¯«¨ÁNôIhDtXí³ ¹Œ-ˆšBoÔÅëž s6ézjkZÎ*TÆ:öÍ¥ü»žÏ“³1Òv³ÛÏrºVäZcuè7W™–¨í$G‡‚õ@3‹"3¿ŠŠ¬:¡†ì¥Õ+Ø+³×aá"«[Õ—„NLwûPÃö«"Ÿ£Œà$M‡ð ²F!mühá)ÂÍV ßïõY hJü—Ÿù÷Ê7˜Ì:oÉÜäO²þª¦óÿùôºÞÚˆ“0$>Å7¡ëuP‡;Ç_üt’i~×Ð e úñð;΋/Ý]oü—R9K’¢ˆ}ÿ±aèÂnë`ÝάVÖ‡NìâÓµ]ëâ®°Ãûu&–xOyÒÀÅŒ.>À;Þ rJ™¸“œn`6ÁI¶­tÅxq†78c¥xLž|ò9êˇ{*‰ÀˆNvZ!øUɧ8³V! 9‘84 éÚ‡BÊwçÕŸ ÒÖ$éøˆþÖ `n±,à ÈÐûø©“‘$vüºžêdQ¼~±›Î5MU7õ€ÛɆïmˆ{'…‡o‰`¤ w‰FØ)ÂA`$!OîÇz~õ䇕xǤ)¯föûWt—øä1êº3™&ÓgEðE8cu—…Í(ùž?NjI™Q'í£XO$Oˆb|4Ñcµ4 ¡Ús˜ð¾ý•$¸kh¼Ì}È“$£ÿ·„ÀæV/iÄÓ?±QsªŸ$Øuéù£ƒøH²§.=‡n3å D##oÃîoeÇp§»'k™g„jB– ‹/X¢ª½çNKØtB¾h|ˆ2Åþ{4P“´KÌI²Š\BHWI]v0ÏD0&aN—$ÔCûVBl£ƒò2Ûââð+¿¥À5¢¿sð¬6# ¦‡zÍtólž×Ëÿè%3Üi_©I«·ðÛ’äw²‡è“´"IRþ7µŽãUSIà^ÙÿNÔi:I ’HþÎ3 Ïᜌéî¿ÃÅgeÓIY#Éä·Ô~êÒûGòÄ&a€f’¸$¡Ÿ)ðëÅþ €\™Íg^WôÈ“üg楥·«X¿uú׈.{s â8MAÒÓ9`$—0#*aZ6‘èéÚ©4FB¡5àì¼§7¦ý­n1áÖ4æü•ÕA-"pôûU¼ræM‰ï«Ö³¼&Âuº†¨CxAü½ÿm«[ !èZ«švmÿ£-Ž܃š›ÏÙI½«ìw½9tY`²+¢éÕó·+øàkØ*2w^¶þý}=«ÿ™_D]ä.‡õ¶µ`•0ë0ñO? ÊÖQÓkv„ë81“K×éºVå`W¬R¿Q™t¸p¾„iV ™¡S¯%`ÁåÑRC×Îëo±¢_§td MÓþ#ƒ Ô’uüÊŽßèÿ\ì“°ôÚŸRÒеm¨Ñw !?Ó«*«ú©ƒÇÌú«Wa¼*tú•pKùVY&Ó¤.¦A?”¸u§ß.¯€¿Œ4VI fNÄÑÇUšB—;…xë.cé›…IÌ)“s£¬Û-ÔÇâ&qù2M5ýUR hÀUuñøPîr¾hzA ÈO9>úkYÍá)ý1E:ïÆã˜Ú:ñª«þc,Å¿×:$ÔÓ‘_ê¼Õ¿ü‘:íPƒQg;øŠ:¬â‡y•ú§CcUœûôOC­Òjt=éÄ/èFØäÏŸkàZ¨6‰xºÃ‹ðqtÔˆîœ]Å®øw•+e Câ&ç?©ÝSœÀ0ˆ ÷k=}¦—b‘}ãÌTÆÍŒ)Oi·NwVïé³oIO'RÜèCtFR²z¢±k‰>Jôê_vçK+9»ðsËÕÉ´êw<‰N4¦5é’r|–Ô®m¤Ïìš`!R^Ç\ãüJžn'lç”{õ…û8O“­ô'Š”<¥¦ { Aj˜Û˜`û®g9F¯6â¼ÌÛMæy;N·q"׈ÓÙZ¼gOU÷x÷ˆø}¤ÑWÜ¢‚š•c:²Ð6ˆun’¤/éMšR>Ò4ZjåU“èIS#M/oéþôBI¿“j°”¸´Ñ}õÀΨŒOɂчóºßIÔTä5ð†žWΑfÎÖå7Y7—,¡éUêêÜ<¼H${]—O½ŽÔÏi/œîUL7QmÄ),­¿ÉyË{äÐP탩ӃÄwÖué´ôS ¿dCªÑnž@…Vx. Z~ ã*h×uøž,ßg@õ{”_~\ué=Lqq>¡!ÌÓ²ÿ]¢S-=®”ÑöMÔâÔÑ´Ÿ/¶y3†A)žèÓµ¾„®Wÿ Nù®Å[/®‡ƒÇѪº¢§—j-›.êALû=¥ð‹}G¸ÿž„å×Er%”ïÅòy²kÚ'ÉSþ+µŽ“$SÉǺÔBge‰Ó$ÙôØ2]aˬxØ9HÙ¿)a~ˆ’–aø’!mäüªèqÚG¥Û ´¡Å6Då¼ÞÓ(\g´îmup%2q8¡6ð3Ÿ|»ÎFº€Ôiø0O †ñÉAÑÖ3,z"{1s–’wʘ‹ùô?®?jÙVM¹ ;r™”lNâevé+À2˵뀄£ê¾”pD†>S?ßBm9ôSÐÝûˆ.“¤œ®êL ’¾@}ÚéD#@¯$ÝS—Ú<ú ¯÷ú¡­´ôu©=™‰ê­Ñ3<žÕß$ÑôW³ý(­Ú&ø±4À3¡Fߥ©u¤Ð0jG~@Ò}ž*‘Å·s\Wc÷†~‘gâB éé¡Åì^-CCXØq¼ñÔ„øðÝe”þL}x‰©øºë:@å ÄpÔ ”q—ú¾¤“TÜ%Õ¸|Óë³ðàíu¯Dþ„;zã¡ê”¨2Ot¹d;¤'¦Æ®Àâä/ãíG]7r0y‰ÇpŽ8•1ÇøF CüN Ê(â@ϲ®aðwB>‡xÀOðs‚œœhÕ^x`Ƕý.Ç£)#ɉCåEÈDü¹­Á"xªc¹ƒÈΫ0t>ƒÐA–âH,YÒ'žº4Oˆun¨¬Z6þs¶cCÍߎV\b|½Ã˜¹®ªèøÅ©–ßÀòÉ& yic‰ï‚i=9¹«gzS‡X¿áS÷8Q.M[šrlÿ¹õÏßa Ú®QÂuÓÓÚ-þ¹…äv?&ç#IÁÕ$14ùkã8ÿw~àÒzŽŒ*z̪®×AØÊWß b þZ%® wÉý»º^Ç œ¢&oOÓuÔa~ÅÛß‹¤‚YtØÿå9ØÕ1‚öMíßf½Gz= £Õw5eŒŒw;®ï#=zøEGbìVý‹¾ÀÉŧ.Ù ò©8^o'ƒ~G+ÙDñ˜úi89Á¯ã¡ÿN_Ø„þ¹ qYâSAö9S’gl‹Ø(FÒbW þ\%‚T†càýUûwÜMÃ0Ð1£9ùVûç0‹èÒþܤ¢~|öªþS¯ßAGíßßÓÄÁ¤<6×™ÖƒbN‘Š=> 4QE —%S*ÐjÒ¬xyŠÚ–ëâ%GmŸKŒ,Ô¼8¤€eU'êƒIXR៷„´8Mz¯£Ù[P9÷HÞêÿýÃ@SÊ8—ÞÏúõ£š$”ûP+î¥ø£xüªáCzzO×Ö˜©Á¬KïáçÓl:Ž˜§ÿ¯†ì2¸ŒÓ´ó{ºa@÷÷|þ‹WHcWÅÛ/©¿ ½sߨXþ‹•-jYv•ÍÿãÿbI×É\Cú/ùY¨µ4ÿ/Ÿ¨}ÿ˧±DÈZ[ ~è2Q×DUÊé <âØ‘Qé>Èÿ‰Ïâ ·ò("f¡1Õˆz+*ó˜5Åtüî”èa1ãŠãì¢8! ‡¥fiñùf‹¯ÞZ¼øÞâż_ÈAˆþÐ"”Ư±n0¤Åɺmñ•§Çñ¥-Némž¢Ú6xƨqLX‹ ›[¿Ø§™µ8Q¢ÅÁ,-޵hžšÓbs‘¦È3M<ÏãUyÑ öHŽ›:odphjlÒ/v›œm—z·~çáV±¡i¼&ÓãA|§ù=ÞÕêùÊc,u÷Xì1mêQ¥wÖ¶r•;Ü#ˆ½6ƕ۠ÔöA,åú¹úSŸ‹± @^ç[¯û|ºÂ§šÃÏ7¥U}ýë`ìãò°_ý´]/d]oÛÍ^_ìÿ97P’¤#scotch_6.0.9/grf/bump.grf.gz0000644000302600021200000030276713303015264016131 0ustar pelegrinpelegrin‹]dâ5\]¢¥ª„Ÿwf):ÿ‰]ê«<÷a§mJ¢KT’ß¿÷ùýþÚxÇóï÷÷ûýþ•¿zÍ¿ßøëÿêß;ÆõW‹þ½ÿj%£ÿ]uT‰ö7Æ<ÿºë­ÿοgþ·¿åïþõù'°Ý×_©Ïü{Uy6~sßü_çÏ_¯C—ú+wá?úïüOsÉówéìëÒ‹×gT]¿Ù •ô'Åó䫨R×x pÊÕfÁ ðœ0»ÞÿÊïyT0täÿγUÒwÉ[÷|ü|¤GxÂó1åÿ<ÔOwýhÏ3¤¸*°?xÜçÓX§ò(õ)óß»SXû:aþ_½U›M·Y³I=+ó'6ÿ{/\ÏÆ¼Íí¦S7`Ÿ@£—Ýú÷úkÕ%#ÿ?(u¢•yó(nó?ê†Î(?>¥SPï÷¯©möã÷øÿRg{øÿ=Ÿƒ¿Ž:u4Ïšÿ¾ýrÉ<šê¼ç³ÛoJt¤çw¡—Ì#=µs]½íãwå¿óeÐVIçßYÒÿ­£ùXéÙêêN×+bŽÚ%œóªär1ç”Z/—ͳ‡ú¬P}/#7ÌÏ%SÜC}z›½)аô&›CºrÂü!Ì×ÙÕù!èí6$ô¾Ó(óΣ€_¡Þ~”ö¿ñ¸`é8Åx]2ý;ßa?—Ì˼ú÷ýã§ë£ŸÞœ¿¿‡—G—þ½þ¿¡t¤kMñT—Ì£¢ËߣîÌ·Ó5;—ó´”\óv=ƒW‰Ž8qÖ~\2†þµ^—Ì£Ùçkžøú­;žWÿηîå’y¤–gÕ×/2éE6«¾~‘éH/²Yõõ‹LG³Ï׬ú¢BŽø÷ú{û¿u¤Ž¿z›¹d©Ï³êë>ëH}žU_÷YG곪þÜéyøªÓªûs¯9T·Uûç~s¨Ž«þÏ=çP]W?÷C}éÔÀÞûƒÙÀ¯ÿÛ‡M³ßp™»ô¡z\¦Ã¡ƒù¿ßë2>:~.Óˆ^H—Ët¨žð7͇—¤‡â2Þ:"ªËt¨q¨Ü|Èáqp¨q\|Œ\¦CC \‡6ƒCƒ<Ž‹›ªp:Ñð8Ü–þÔ€ÇÁ¡ÆA‡ xr <Õ ð88ÔµiÀãànè‡\{6P<ÚÒµÕ@ñ88ÔµÕ@ñ88ÔµÕ@ñ88ÔµÕ@ñ88ÔµÕ@ñ88ä@sƒC][ ƒCC ƒCC ƒCÔ9¨‡ :ÔlÎãàPãPÕãàPãPÕãàPãPÕãà™ ÞA‡èmæqpØöŒñLç7Þ'Ì/€þÑËÍÝçPÝW[ÍÝ×aåi˜m5wŸC®9’Ët¨îkrÚrªûj”ÏëÕæË‚'€"N›ŸU½zø¾úH'ê:ÌW9š¯I=|b}¤—¢®ñR¢#½ }<(Ñ5æ«P·ž¯¬æ«P7ž¯¬æ«P·¯ì¥¯g[% Žëüèi,þÊr¤õåâ ÊÑüœ6ÏW–£>ÿÕÇî¡DGs²?GrñõÑœ4Íq™§ëh~ŽûÉÅ'ÔGs*0Grñ•õÑì¾9C}öÑütÏ‘\ƒ™GšÌžòõ‘þ=åKë#M4§ÏÍ>Ï‘\|k}4ûëh~\ûÉÅ·ÖG³Ïs$ßZ]šÌ‹ç%Âæ¿³§g3:š}Ö$ññlFGúwöôñlFGšÈÌžò­õÑì³&|k}4û¬õßZÍ>kÖÀ·–£ù™ìš5ð­õÑì³f |k}¤Ðì)ßZÍ>kÖÀ·ÖG³Ïš5ð­õ‘þ=å[ë£Ùg-Œ^ÏÀt4û¬©ßZÍ>kÖÀ·ÖG³Ïs$7ŸZéóØçHn¾´>š}ž#¹ùÎúH´99ã+ë£ÙgÍÔøÆúH«Ç9—œ_Øu¤u“gƒ”³º¬Ye £Ÿ¬8g?_•ÐOŽf?_-è§Žæç¯k}Æ—ÔG³Ÿ¯ÖFô“#õSë'÷SGê§–î§ŽÊœgj™Ñ˜qêHÿj5×ÿ­£¹:þiÁ1(ÑÑœ jeÅ·ÓGs‚øcÙB ‹²ù¯–EÌn,wæ¿Z1uåè7ÿšbS¢£kþ«¹<³WŽæ\W“^¾—>š}¾4—§Ïé_MÕé3G³Ï—æòô™£Ùç9ÚÛeŽfŸ/Íûé3G³ÏZ˜ÏÈÕûÙg­åøBúhöyŽöæûè£Ùç9Ú›¯£4?Ÿ=åÛè£Ùç9Ú›/£ôïì)ßEÍ>ßZ?ÓgŽfŸo­šé3G³ÏZ2óEôÑìóíÍ÷£ù ¬¬½DÐÑì³ÖÍ| }4û¬µ5_Bi‘¡Å}æhöYkd¾‚>Ò¿Z‘ÐgŽfŸçhoö=|4û\´æ÷‚DG³ÏZ7{ß„£ÙçÂòœõ~ö¹h_€>s4ûkÙÌÇÏG³ÏZ6³pô‘þÕ~}æhöY h¾}·Vºƒ”°Bbª…¶JÔgé¼9¾}iªÑðíóÑ\¥j4|×|¤væhøöùh®Ù4V˜>š¿†oŸôï ß>µ¹ˆŸ£áÛ磹*Öhøöùhö[£àÛç£Ùçyo¾}± MúÌÑìó¼‹7ß>Í>Ï»xóíó‘vÌfOùöùhöYÛ |û|¤gOùöùhöyÞÅ›oŸfŸç]¼ùöùhöY;;|û|¤Ý‰ÙS¾}ÍïDmÚ ¢ÏÍ>Ï»xóíó‘¶=fOùöùhöyÞÉ›oŸfŸç]¼ùöùHÿΞòíóÑì³ö øöùhöYû|û|¤-ŒÙS¾}>š}îÚi¢Ï:šß‰:ïâÍ·ÏGlsÌoÿΞ¾Þ+Ñ‘öJfO_ï•èhöyÞÅûõžŽŽôïì)ß>Í>k³€oŸfŸµ¡À·ÏG³ÏÚ‘ãÛç£Ùçy ß>MìO[…oŸfŸ‡¶Ìè3G³ÏCˆô™£Ùç¡ Dï1éhöyh;Ž>s¤ßù¯·™t4û<ïbaeé£Ùçy ßAÍ>Ï»XøúhöùÑn}ÖÑüTí”òôÑì󼋅5{ÊwÐG³Ïó.¾ƒ>š}žw±\ÞÓ‘þ=å;è£Ùçy ßAi·löôòö˜ŽfŸç],|}4ûüj¯—>ëh~ªöûøúhöùÕ1}æhöyÞÅÂwÐG³Ïó.¾ƒ>š}žw±ðô‘þÕî3}æ¨ýµŸv5Ù(ã¨ÏµÍVGcþ;{ÊwÐGÏŸvN ßAŽ´×öÓ©7þtôûc;•ï ®ùo×f)%:ºç¿³§|}Tþ¼åÊÆGúwö”ï fŸç],|}4û¬Ms¾ƒ>š}¾´UKŸ9š}žw±ðäh¾7›ö­ùúH»—³§|}4û¬mY¾ƒ>Ò&æÐ>%:š}¾ØÔ£DGúW›zô™£Ùçy ßAõe1ضƒÙgÐyÍ)Ù!äÿ·l óßÙg¾>ÒÖ©¶ é+G³Þ­FúÊ‘v^gŸùþùHך}öÆ)GúwöÙ{«éêÚ³v_u4ûª½oo¯r4ûª=o¾>šúÕæ8ß?Žæû²iïœïŸ´m+ã}æH;½³§|ÿ|4û<ïgáûç£Ùçy?K÷~°ŽØžÿöëhö¹hÇ>s4û\µÁNŸ9Òòì)ß?Í>kÎ÷£ù¾ló~¾>š}ž÷³ðýó‘6«gOùþùhöY {¾>š}ž÷³ðýkºWüOµ{J&6ÿ½àûç£Ùgí óýóÑìsS/è³îÿ›#æû×4ʦëÉr¥„ñ.[ }æhöYÏ|ÿ|4û¬g¾>š}ž£-þþéÍÀÿzÎ)ú®é¢'‹s„¹DÇôYßbþ§ö¼ùîÒ¢w&ß?•oz÷òýóÑì³®Å÷ÏG²Ìðý+ú®éÍH }ûfIÃ6Bæ{°ñÇùZÃÈä ·£Þ™^ûéפµŸ~C^ûq4×Tê7ß¿¢uß-dŽÏk?ýv´ö»eK`MU~ù߽Α Bk?Í ýýÓºO³àŸ>¯þja§É‹XyÕ‡¢ª¯ W€²¼è hóä6Tö¿ß¿.s†f–÷k;Æ­'pÎT®Z üaNÓ RŸ’«ë«9ßäXmZl5zÁT½Ýd¦éËl³¬=z HÇŠY0TöùTÏ~Q*[¦ûØ1ŸªWZ²\6ôÍ[­ïÚmá?=?6qu²îÞÔG_¦.Ms5£¿5‰þO[t6a>6Pζ¯!L™|àõåýñC§A}Aõ¬ÌµyÜ©k!ëô¦Òù‡Ö¼²Ïz½«tþ¡5¯ð³n*hÍ+ý¬ß•Î?´æ¿×ñèE(ZóÊ?ëyi`¢­y ëúK¥^dd' ë{u„¢5ïd/zŽP4ã¬÷«Jç:ðAÖýM¥óx§ ëÿ®Òù‡¼c}€¡Òù‡¼sý€G¥óxÁûŒR(:ðNBö4ʉ2³ÌŽBö æ([Yˆw²_0G9µû0ÌCö Jzí†ìˆ·4{Í\0;ÙGÐù³×̳óý?{Í\0;ì)ho¡Õƒô”ª×ïÚkâs5Âù7ïÈÃ,ÑçÎ} OÍ1uç];ÙŸ¸B»={œ?ÿ¸§ÞÕ`Ÿ¢A䫹SªÝŒ¶ö.‚ø\•?ÿè5ç–ì~èZ³~¶vGT²ö>væséÔ*³Q·Ð(mzNõD¦µÕ¶t0uÝÕ î‚Îѹsíª_¼µ¢Ý”ÙG=‘nm·-nÅ\}Í÷Æë÷+ç^œûj‰ìu–Û¸öhT¬  jˆ!YuÍCêQ¤¦*lô Ò)ñfϳš3Äþw}à†VuÇoïi߇ej×Þ_¬b×fŸ¬µm¡‚Zåvpö/ëd­kÖ½«•èd‰y1$ÇZ)«VWéüs­º¯.D+íêO”[¦ä•2cK­¶¶¬´6ßÐH‘ö´uèY\ؾ â s Ò°TÉô„soš‘€ Ãäô§«Hdu„É‘ÛñU´-ÖDH\P1Äv›3º¨.iŽö^ìn4v×P‡÷ØØï`G„=oô”<>_­1Knljð¿ùw³‹R¯U‡|åŒ {]Ihdž!½ëÊOZ|t¥xîU}s1¶hž½Å׿°1UN‡Øæq)|A|n§µ.Æ®ûÇyÕ%ÙüÖié˜Âm×¹Ó'qƒ¢Äö_ÛÈ“R•º´÷¾téûO›3ýWƒ¸Eq­«ñ»òé?NW‘xY?ª à½;p¹ºx:ÌŒÝþïÓõ±‘uª¤Aé:o«‡;Ý6RÓŠZ9ú÷dPz­ÍƒØ“Öu¶Ôñ¾{ƒÍkißPû‰iqµ‹›‘ Æúàô_NçÓƒk€Ý«c`ýÒv.ãìƒòQÈ®S|®&„Ú!)ÞÔp…ò.ޏ¸ài/­k¢˜R›£œÝsvɆ±‘gõ)*zÿ˹×êgý<Ÿ¹&½^Ïtêh ’§µg›ZuÑÏñ8ÛÕîû¿½¹í’ùŽÌöõê[¶¶û=2 ÞK>±R¬míwWßÃ4¡Ò®y¡*ï"ùìNùÚ_µÜ;å…[¨ípWÚ[é{“<MpÞüÓ¦wa¯*èÀlUsP5Ûœ7ùõ³jÖj¸¨r˜Ð:0{5œT¹Kè˜Ånê­Òù‡Ìf Gµ¨tþ¡³ZÃU­*èÀìÖpV›Jç:0Ë5ÜÕ®Òù‡Ìv ‡u¨tþ¡³^Ãe}T:ÿÐÙ¯æ´_&t`l¸­2Çè˜ Ž«l8úCfņë*×ý¡³cÃy-*èÀ,Ùp_«Jç:0[6ئÒù‡Ìš ¶«tþ¡³gÉ*•I m¸±JebMkެÜdXy ³jÕÕ:@èÀìÚpfµÑ:0ËîlÇ‘FÚ¥ Û­ÜH:®4ª`ØvXµ#ìÙJ­ÂÿÌžm©¡6]‹wT˜´¬ÍæÚ3÷6ŒZ¹Ð©.Ú37ÌZ¼íä…†­˜¶¯ž"öýÃÉ ÓVZP=´gnn·Ò¬Çz7Ý0oo•Î?LÂæê†+×¢Y}ÿpvÃÄ•c‘ê•›»FnSéü« pxÃÌí* .oºC¥ó¯ƒÀé S÷Qéü p{ÍØýi,ª‡eÓß0w5Õ{Aàú†Á«±Ìzìû‡ó&ï­Òù‡Ìý £·¨tþ¡s€Ãì•›•ê¡sÃð••ê¡s‚Ãôí*èÀÜà0~‡Jç:0G8ÌßG¥ó˜+l𥱨:0g8L`EõйÃak,rÚbÒq¨Á7Åf@'I¸P,"L,]¸R,*L1qÏ3*£ “C!ÆïŒÊ¨Ã´ã‰Å(ÄäЊŠ%P‰©È&ß Ê(ŤäP•Q‹éÉ!34UÆ¢rèÇ7ÅèÅ”å‘ ÅèÅäåP’+ÅèÅ4æ“5´« BshÊ}cŒÏÔæ–ñËCؤÉ9Ôå‡b Ægº³IÌ…¡IÜÄçЙKx|P Cl¾(–`|&C‹ÚŒÉ_ÅŒÁ´èMxÖ^Õ†îUŠ$8â¾×² Ò¢¨X‚û^M—6‰ S,^j£Ü4\襚6`"~‹ô¢Iii¡ œÑ‹XÅ$T,^4-ßCϼ&?Ö!:Wå&ÜK0x‘EDhRP(–à÷ ªHý…TP)–@/­PnZA£X½4S²M,èK —Ö(7µ`P,^š©&àÚ‰@/ºoÒ)ôT‚Ÿ'zÍ£š8 …­Š%ЋHÒ©žyM*<4L?u®ÊM2¸)–@/"zH§Ð ÅèETé¢A¥X½ˆìÑ®P Å襛öm²A§X½ˆð!B7K —nz ÅèE¤éÊ*‘`:jçw“ D P±zñC:í`àÿŠ@/ÚÝ”N!ÜK ‘?¤S¨…b ô¢]LéòA¥X½ˆ"B?hK —aj¹ b ô¢=Né  X½ SLBx(–@/ßûÐP‰ST«rˆšzþxh˜¤ê\•CExpF ¼÷ŸðF B¤Sè…b ô"Jˆt !¡R,^D ‘N¡$4Š%ÐËcúºI b ô"bˆt -aP,^ÓLLx(–@/Ú•N¡&  ¦­:Wåö…ÿQ,^D‘Nñ…¿(–@/¢ˆH§p¡F ‘D¤S( øO#Ћ6r¥SH •b ô¢}QéšB£X½¼¦È›¨Ð)–@/"‹H§PÅèå55Ád…‡b ô"ˆt ]•HxB*ÊÈc"ÂćÆSRm,I§Ïý@ÅÒ‹ÎU¹I 7Åì¢Ü´\Ìì¦ÜÄüË ¬PnêB£X¢ƒ™†oòB§Xb€5ÊM_K<`¦+˜ÀðP,ñþ3mAå¦0  &©:W嘂ðÐ0MÕ¹*‡ÆÀ„‡†‰ªÎU¹‰ 7ÅèEdm;Ce(K —ë¦Üd\ðèå*”›Î€ÿ=½\¦ú›ÐÐ)–@/W£Ü”†A±z¹La0©á¡X½\ƒrÓP‰œô™·ê\•ClÐÔÅ ˜·ê\•Cm€dJ æ­:Wå&7ÜK íœþÞÐ Åè…X$¿*ÅèE Íë ÅôrÛÀ$â Ћ¬QÒ)4‡A±z¹Mk0Ñá¡X½ˆl"Bu@%Ì[u®Ê!;hêB@„‹y«ÎU9tM]Œp1oÕ¹*7áá¦X½ˆt"By(K ÑN¤SébC=P¡H¬sš¡ÁY*2‰TãÔ&þ‰Ô—œ…ÚŠ¹ f3<K 6qP¤ø h…P›X(RÏ gbÅ@mâ¡H=ÖŨMLÈÀ[ Xµ‰‹"õÀk(K 6±Q¤˜ •b t#>Šô·¡Q,ÁãTíë`vC§X½ˆ“"ÝÀo Ê' —j>ƒ„¸àô"[½tÇasz‘-_º)ðæßu 7Å"3ÜóÁ(½ü@¤‡‹‰²Oÿ…ÿP)–@c4ó£\\ñÒd. Ò‹x€¸˜'ûô’ÓoÈj™=1(–@—Íl ó'ˆBãè’A5 F@›èRFs麚ëð/&Л"ÆÄõh…ÉŠ…8±$.OÆxÊ Ej‚y²N^ä S&ê Ef<Àr8P ua@A¸?q1»~z Eá…šp†âbvýôžrƒr9TÖWù7 !ˆœðo(}]§'(³§µ¡˜:ŠSB_Xí¨T'KОKNÿqú£™ A)v›cÖÙ-&Åo#…ÒGó¶Ë/&Ý>»Pþ`Ôw­šs <¤ÙÇ5 õ@Ϭ0!mmù¥‘ftò£øCŠ8ä™È“ÒÙôÓOso +ÐlÚŸl<|G‰4ýð[ç‚LÅi/HÝ`º•KÎ’[çÎ9c]‡Ë7.ÿhòäéW¢çYš¹Ô©œ{½»½u˦²ôÈs¦6ŒÍÛ®mWm°ÒÞi}jú¡n,EDei€uõKE¢ôzÀx†<8 ¨§ˆ1eU.îδØú¶û>€ÖZCÓ: è]÷å_šO,LS±ÜýKs À—ù…Îõí¼ó«)Y%R‰@#ˆÏÛTí‡2=òÙ…³M b‹Ï ¶õ³3á(¤¤‹dTükæW mÊ ÿÐ×kH»`{ò^i¡zÁéò˜ßØc,ôò.s)L0µè[ã3×›ôÇËØ¯mEìq|žš@>7‚Ø¿ ºO[ázÅôÑ!~¸§S,A'ì'!|ÅtÓaÌç¡Xu9Ãú/J½»Ù¿H( ø¡tˆçÇAâÇ¡~´ÑxÝì_$<ÐüóK*Е"z@?éÐ xï@A/q¥Ô±¥½˜Îï‡Åè¥8€ÍÃb ôRTÈâA±z)6ÛDüP,^Š ÙHL7Ô!ÿ ‹Ca&&U§Cè¥8ø†bâQu:Äà«ÃÙTL7èÐæ€D6Ó :„^ªCÙ\L7Ô!¾:Wå67Š%ÐKu"›Œ;Åè¥:p‘ƃb ôRm$¶Ùø¡X½T3²á˜n¨C|t®Ê1óØ:„^ªa<æ±t½4‡:²ù˜nÐ!ôÒôÈdºA‡ÐKsø#›é†:Ä[_çªÜFäF±zi„d3r§X½4G²!yP,^š Ç6%?K —æ€I6&Ó ‚²¡—æÐI˜“yl:„^šƒ(aPæ±}èzé§d“2Ý Cè¥;°’Êtƒ¡—îK6+Ó uˆý «r–‰§1ѹ*·i¹S,^º0Ù¸<(–@/ÝÆd›—Š%ÐKwP&˜éqëÐKwx&LÌ<¶/B/Ýš02óؾt½ ‡l²™™nÐ!ô2¼É†fºA‡ÐËp'™„e ~yt'´,Å5Vãvj¸Èæb: 0xìxè4•Û`<(–@“Ãå6?K ÉáriNáñØñй*ÇlüМÂä±ã¡sUŽáø¡9…ËcÇCçªÜ¦cš# š|\nã1ÍM>.·ù˜æš|\n2Í1ôò¸Ü&dšÓ@˜¿é\•ÛˆLtA ÄŸôÇå6#?K —Çå6$ӜއÎU9¦ä—æ4O.—cL~iNû«sUns2Íi liè\•Û LsDJD/¯ËmR¦9‚^^—Û¨Ls ½¼.·Y™æ4–;:Wå6,€QaKCçªÜ¦e¢/j žr½.·q™æ4¶4t®ÊÆBž?Í {:YÀÀZȨ DaSƒ³…ÄÈL“ Ûœ.$ffÚÔpØØàt!14Ó(zŒ‰©™FÒû/öe!16Ó(¡%FÄÜ<$®9]H ά԰ØÈàt!19Ó¨†…ÍÓ…ØèÌ#IJ¶,8]ˆÍÎ<”£,ÖÕe$†gÕ°Šuu‰éQ?èF°>ÇÌï1LËËë*ÕOžž:û½Ç4-_¯«4ëêîË÷=Æiù{]¥YWzêìÿó´ü¾®â@:=>ð1PË÷ë*ͺÒSg?ø˜¨åÿu•f]驳/|ŒÔò»J³®ôÔÙ>fjù]¥YzêìCµ|Á®Òü+•‰Þ~ñ1UËì*ͺÒcßø«åv•f]驱|ÌÕò »Š0:=>ò1XË7ì*ݺÂTß—©›jćµ®0Ö»y;áa­+ÌõOÌÝ<ŽšÜ”n]a°—Á›jt·®ôÔØo>¦kù‹]¥[Wzžì;ãµ|Ʈҭ+=5öŸùZ~cWéÖ•žûÐÇ€-ß±«tëJOýèc–ÿØU†uUûò¥[>dWÖæû¾ÌßTÓ ‡u…ÄÎã8ˆªk]aÂbçqÕµ®0â¿ËN5 zXWzjì_s¶üî2¬+=5ö±A[~bWÖ•žûÙǤ]˜þ ëJO}ícÔ.L€†u¥§Æþö1k¦@uÕúò¹a»0 z¬+Lú}™Ä©¦A?ÖFý£8#¡ÇºÂ¬ÿÄ,ÎãÈTè±®0ì¿Ë0N5B[Wzjì‡wa:ôXWzjì‹#waBôXWzjì3waJôXWzjì“CwaRôXWzjì—SwaZôZW½/ßü» £×ºÂÌß—™œjôk]aè1”ó829z­+LýOLå<ŽL^ë cÿ»ŒåT#‚³u¥§Æþú1{¦H¯u¥§Æ>û1|&I¯u¥§Æ~û1}¦I¯u¥§Æ¾û1~&JŽ'£Óã¿ó·¼.;2pz|øc¯š+ÕŸu…é¿/Ó9Õüùg]aü1ž_“¥ú³®0ÿ?1Ÿ _“¥ú³® ¼Ë€N5ŃþYWÚMµ_LábÒ_õg]i£Ê¾ý1†‹}ÕŸu¥Ý-û÷Ç®8>SXWÚ¶ âŠ%s9² §ÇÏ?&qå¸0‡Óã룸‚ ]õ²® ôeN§š}YWF ê/Õ4è˺‚ðĤþRMƒ¾¬+Hï2ªSMƒ¾¬+í1Ûÿ?æqEšÂºÒŽ£cÄ@®XESXWÚLv€˜È‰=T/ëJ[ÇŽ#9 Wì0Çé‰3¹×®z[Wo_1b(—ßÝå°Lœž¸1•+ÑÖ$G°±\ñ‹.{ArzâÄ\.§Ç)ÐÕQà]†vªiОÙëôÄ ˆÉ\n–St£÷Š£¹¢M1Œ–/ fs…4º‚ŠÓ3 †se£˜â5ÚVÜ€˜Î¤èªžÙëôĈñ\±¦¸ŒŽ? æs§¸ÿåôĈ]Ä)ŠÑwň ]$Ä)¬+Èï2¾SMƒöÌ^§'ž@Ìè•Øóž»ëôĈI¼Ú8žºeÅXžÿlÿ¿ïZ´>þù¬ æòZ¬ÿ«¯ˆ±•WÛ{5pA"ØVv´Ä)Ö?4‚egçAtÜ{ë"Á²´ó :ì½õ¯ç¥n[û aýëy©ÛÚ^$¬=/uÛÛ+€„õ¯ç¥n‹{°žô¼ÔmsïÖ¿ž—º­î@ººûŠûy%³“×:=Ñbíq ëJÏ‹#ľÎøÀ]ˆT·‘-Àº*¿m€·]\äÇ)¬«²Ló5sѧ°®ÊF¤MÄ€¼®U¹lC|,êíî˜Ë6NVË;îÀ2ƒ»aß…²c,ÛùóÇ*|)”຾ åY‘–œ®y•¡:+â@ èôÏ« „®rÑw™Ä9?¡ VÀ€v/·ÿewMß=Rqò·Ý»¾nü_N·uü´¾A[¬à×2~÷úAûBÔ ä ›eýÄê™2Œ²lè– üßÇ”¾ÆÃ¼Îp%ãä0áâF_pjéÁÄ:K°Låë X„¬Qò ]yú‰lûñ¨ë$ÏýD„U±ŸöÁë.EgzèùP{Þè§"ìŠÜèʧúÍõûaXävưzîè'ã0-t?+Õ…?›„QrÓsãÌôHR ËÙƒ®Ê´Èsé‹'49‚HóÅtƒœ-²Ì¯„œbÈyƒ4çÄgîòÜþÃŽèh C*Y9ÒnÝ·üÍndÍÈýðãüæF‹($H@?Ľÿç9êXqåýåµ²C/¥xzY_ýù<‚~RpÝZð»NÓ!̃ †^HIàFH¢AØGª‘õTn8*˦äûDþ·? ‘4oKËK÷(²s$ülºñ¾ï„Fè•ãº+T7(IBÊo»–Æ ]„Âk¼Ïí3ôÛõÝ?×pZÄ?q×?­^©*Ù)ü¤PË8]“+©žžï 'ï)õÆ¿7žÜTéÿøà®Ú\õ& Íõ¯—•>y¬‚µ…%ë/¿jÒa%ÇÕ³Ûô#Bb,g»zÞ`=/QRd%ï•t‰)xa2o&–ª`îõîÓf%–Š•ýl‘@+Y±Ê¼âTZÉ…¯Î{•¤ZI”Eö}Ãke̘–=@gÚZ¹³€„o©“n­,ZDñø}ÐaÚ)x,ì¿ ó1ò[)¶@k>|Nɵrl1?ÐOÁêKr®•m‹ù𷓦kåÝ*r[nÿúNص2pi0Ïø Åˆsqµ>F«gå"{ŽlüOzÕþBOM¢®ÎñM¯ºgꇺ|Ða„œ]Ę0Z>F®•Æ«s‡ßôù5â<^"•ØÛ¨€­Œ^â,É““¤[¹½ÊBý“KR°•å‹lIºƒž"&=ØÊ÷Õ$¬ ' [™¿hTïo'eØÊ¦F[ù =È´` N‡§jI#–¼`ÙˆQÆûY©Â@Ç•½AZ’†Én4…Gä$c+kØ á9ÝØÊVä¦î>;ñØÊ$V$®'ÙÊ)Ö$n£Õˆ³‹u ×iÉVž1u×§íFœqìÙ¨ÇkÃRrÝt—2ÞÇHYéȆÈx_#ÎGFwÕ€¤Id¶2“á«_>èeÄ9ÊÊFý<;¹ÙÊVV$|ælå-k~bðle0ë¯SŸ­\f@Âãu´•Õìðx-ùÍ C•¨Ñc¤®”gÃÂ÷×KÅ•óŒHß_'K#û™Ó  ùj¯´i$ÖÝ)ЊáAíYyЪ¾s§­dh @Â:vµ•­HXÇΧ¶¤ ëØ™Õþ˜ðB±nÀ:v޵:Íü« >)lh‡–iÀ:Vàƒ•n þf‘ß½‚Üu1·ˆÚ V¼pÔéBÂÝ"{˜ðòŽ Úw_ì-â@Ѐu%Þ“²»š¿Õ$¬«ætmapu ë ²Ù»8\@ºjfl­€fdmp¬BFIË4àç‘@wè\D¶peëŠ`%\.¢[ÐJ¾r$’«‹ÍuHXWpÎÚâsåB xqÃ:ë‹ÑEÖ5°®Ä…r`p³†°®Ä†rp°³†°®Ä‡r€ð³†°:z_A>ÂÐnÀœ¨kq»* XWÔ¸Ãî"žˆ°®ªQÂï"¦ ؈¤Óô#L-Ì:ŽŽÌé ü®fGHæôÿ[k¸ëJü( _k¸ëJ ) ck¸ëJ) gk¸ëjô $¬­á¬+xR×â{1T°®¼q‡ñõ0T°®¾QÂùzª°I§'8HØ[˜uE™Ó $ü-Ì:ޤÌé ×pÖ•8S×pÖ•XS×pÖ•&á×pÖÕÓWÐ0¹†°®àN]‹ÆPiÀº"@ÇØËPiÀº"HG ìe¨j ³6MÕD$Œ.Ì:޶Ìé $NfG\æô «k¸ëJv ¯k¸ëJSv ³k¸ëŠÕû8adG¤ëêí+¸HØ]à XW°±®Å c¨cQ¶8=AFVøcÃ''ðGøZ#´2Å¡zqèþE÷º$®©“( &n ¸Þ+ˆ©[$ŠÑ²¢˜¼%@¢­+"ˆé[$šÑ¶¢‚˜À%@¢í+2H(\Ã# :Vt¸†5ú}V„и°s=KïŠ"v®'Ú êG_°@ÂÚ òÇX$° amˆ®åˆ!¡saçz¢ ¶5$„.ì\O´eë·¨`@Âã…´u-2A8eí+‚Hh]عšÓE$Ä.ì\cÍé‰$jv.‡²æôD ¹ ;—ÃYsz"Š„Þ…Ë!­9=QEÂïÂÎå°ÖœžÈ"!xaçrhkN_ÑEÂðÂÐåøÖ>E Ç S—£\»ÂŠ2–Æ.Ǻv…i$wE0 Ç c˜ãe»ÂŠb–©Ží +’Ix^x¤:J¶+¬h&!ta6s¬lWXM6l|ð¾KJ%À­?Óµê&Œ¡δþ‰¤-¶XCu:Ék¦âh$}ñÅÑÉt’WMTXQNÂú„æxÚ®°"„÷…ÍQµ]aE; ó 3šck»ÂŠxî†4GØv…õ$ì/Li޳í +òIø_ÓmÛVô“0À0§9æ¶+¬(á€aPsämWXQPÂÃÕQ¶]aEB ìAÉ^QaEC  ËÛã5VD”pÁ0»9V·+¬¨(aƒ=(Ùë¢b:×osÉ„õgB×µÙdHÂú3¥ëÞ|²$aýõ~¢¤„†yÎÑ¿]aEJ / #}»ÂŠ–f®¯×HÅÑMúâ•%{•D…5%ì0Ìt×ITX‘SÂÃçà®°¢§„!†;¬£}»ÂŠ Žž°Žìí +ŠJXbØð«ÛV$•ðİç=^1•ÑO4•0Űè9:·+¬ˆ*áŠ=(Ù«¦â(m1͈Pˆ’½n*Ž‚Ò׌8…(Ù+'*¬è*aŒaÜ‹9 +ÂJ8cXæìÿå +ÊJXcJöú©˜öõÛœ32ks’õgâ×µYgD1ä$ëÏÔ¯{ó΄õ÷ôu%ì±%{ULÿª›{†j8Éús¤”¶Øg/ªÑI^KGK鋦9Õƒ’½š¢ÂŠÂÙƒ’½ž¢ÂŠÄÙƒ’½¢¢ÂŠÆ&Ùƒ’½¦*¦‚ý6¨œdý™ vm&yÊ9Éú3ìÞ\4bAr’õ÷ö%Œ²Ç#­?SÂêæ£¡N²þQ¥…‘«ìAÉ^_GU É̼²%{…E…­%̲%{E…±%ܲ%{•Um x73­ITãåDn ¿ìAÉ^iUÄ®ÍN#ö%'uãíDp ÇìAÉ^mÕ_?Q\Â2{P²I{ÕvŠº9j¨†“œΑWÚb©1'~ ¾ù3þžˆ.ášÉku ë©W¢º„m&/Ü)¬?¦^‰ì¾™\i§°þ˜•%ºKgrÔÂú3eì·ùj HÂú3iìÚŒµ$aý™6voÎD9Éú»ú‰öæ—ÕÔ±ºyk¨†“¬?Ghi‹¹v£äeGu”–¾¸kšiáék[WXÑ_Â@Ãå××®°"À„ƒ†ëïëÅV˜°Ð^”ìåG5ì·9l HÂú3‘ìÚ,¶$aý™JvoÛ’°þî~¢Â„ö¢d¯?ªédusÙP 'YŽäÒ›­ B¶ZŽæÒŸ­ãU'yýA…%&¬´%{ýA…)&¼´%{ýA…-&Ì46Ÿ_¯?ª£»ü6¯­IXŽîrmf[’°þLA»wˆ˜BÙÆû ó²™hÏ'œKødì^¿¶ÎTÑ6­¢Ú·þòeóÑà6p“¼~©&£FªÑEl…©¦£NZ’°þMH;¬´ $aý›’vxi˜0¾x=¡^» zIÞN¸—Å/Óç¸zþTk?!_ìc°õý35íðÓ0òª'ž?U“ÓžoÈSÍ~Jéý§“Ö?ÜzYL³N'­ÿÍb O ÂPýà‡Â†í§ý—P´¨k êŒOƒðü*µ Iß.Ev›Âúsƒe1áô%†´(m6ö¿±Žc|WD««{~‚E<öH†é\ÿ d»Íä?ìÅþ®X͉¬L@äXË1wK¶ ÇϳPÏ£aHÂõyêy4 Iø÷óPÏ£aHÂ÷g¡>ÿaö/Þvé TB¿¯_ý,´ó|Røhë‡g¡íG÷þ‹?«T·£¶ Ç*Ͻ>Æ0$áçƒnÈ¥R‚×§~öSŭdžáåy Ú‡ÊÖ™pù½üñÀ•XäÏ ò€Ÿ_¥Ìücj¥I–0H~$L«t‚±¼¶ øÇ”J'(EÃÕóÊÆàéOšƒ{ý©OX^Eª$Zµ°‹b ×S%…uH\„öÁÄ/þ3“À¬>UéÓô¶Åw Vv)”)ÊÆæ¼} rdsY×­O®Û6>‚7’—dêãk8\Š wµ_Ûl®\«¦&™süÙ”®¾«Â†Š.Ë¡¨nâu÷·Ky´ô«Ð/É¡ê}†fˆËë]kUaJ´^6ÄEz¸ˆa®.Þb ¬X˜ÁÞ$7v­šZ¯­ÍJIû=øa½Âe ¾"<…Vx¸»þs:…jîá»ÉI¼?CJâ­ 5 ýµÍH"¢=Áë‰S¿^­û©á®+EÅ¥´ëÙã^7®ú~õPëŸç§þ'–³ ñy¾üЭr#AäVGŠS8 êöƒ[Áá8y8\6¬rz5r5< 4‰_‘Ó\\³ˆÂTBaJ­¾kñÐ_üÙÝbdíÓþ¹ ô­×wãõ<g6¸«*“(‰V"HÆõ® *mWý¹ªJ•ì ’FÌ¥Uª¬]ʦtïÕ»ê¹ào÷„6Ÿ^V¸)Ƨðí¥¸5±_¹}ÔrM¿ûç_OûˆðkãsýgãcUåËî]k×â2ä·ÑÁ]‹7'µSßΠ׉9Óø½KëIؽgš6Ën‡Õ×ÅyŸÖë #a‘{OöÔÊ8^'Ñ['½(F"½W}æ¾Hûà¡.h—ôÔ7N*C çå$ž}é¶ñrú.¨RU½”Ño ·ï +Kb㽃×Àêß®Õe"í²³žë×ó_%ŒÄúyO¯>9éÎZˆ–F|ju×R©³3öÌäÜ^߃vÊÇž7[.tnùJ%ùo 3ZÙ79пöóQò`9ÈŸòõ¯:° —õÿøGHþX¨°‘Êœ6§Ña¸x¢þmE?.EzWêóLiSGY³/êè¿Wqí±k–l+|2{ ?ŸÔNo\z‘3 Ù‘xwéýi¿¯ Æ(§þ§Auââ"3éŸñÛƒ` …ÜæÍÈ©z»jqBrçÏEêçúE¦†BNê·_îŸOrôùÕkZâÒŽHu'ÇÆßl²d¿æ]·qúlÂH7ÒVU6˜ñþòVOkì{ç^U£d¶ ÑàÚ±©6€®Ý?ºÞ8ÓýwUJûV‚rÕø£—Zeá7—{ÜHûo«ÊF£tª:v…æ Uölð[Vøq{:”Ý+AìN2þl¼¬áh¥€G͹·»^o?m¼¬Í¬ìZÝ»ýàgC«œ]ö¦D¶²6ÔW'•ÌiuÒUÏîVϦAË»ÁU×öX¶²Õþ{éaýÜb)ŒÝVýîRi+B¸„"_«xB¥Ö/“ôìmy+B„ß,Pö—v)Iøþó©4D6)}±Þß¿ÎÞXö»:9®<ŸÀ“Ñ>¸Ú1±~ð²KÛj_‡«ª8!ŸÅNª+޼ÈÅ1lz\4Åßx߸ ïBynøó݉ÉNÊÅ™ÆD©všðTȲã³ÿr»ýK‘i§àùO-pí$ý(ccæùÔ¿R‹ü¬NNj–E¼\ÿvvR‘š‘k®u ‰a¼mˆ„¨.òïŸQÝä%Íèíæôõ>›LÞŽ;øèìd­=;ãïÞßzöîÞuðëì’¬õú¯~‡]®¯½(Õ”û\ŸLïéUïäÝä½mÂd/P ¤žNaý²‰¹w É¥ªM•Ûù ¼ÿ—MÄg{D¾ŸíýIøþØŸú·¢55èï–ó³½’çúN–ydü]îÏ8EÏ3‹,û%,á¦Ëv‹z9Éøµ\ íM#•“þ-_è@Ôoñq^ÏW|¥ ÝäåþÔ¯ïÆol—×Wc_õ¾ûö°|•ƽú’°~7ëH"ý[]¬-®~ éûR¯ç'^׆nM‚Uu~?ýûL­ŸkrÉ˵¦$P^üÅ+;¾Úõƒ—”ÆQ»I¸ö/ÛU»Iø÷kÿðºµDú·³ã®M×¾?öïÛaûÒûï÷/ Ùe»þ€$¬û‰?Ëi[SËË/aãö·Ûö-Ü'¿Åq»_žÔøjß>éŽÛuü°YÄ]'ì¶ës%rãñÅÖý{Ë_P¼±çó'÷æ;TÕ±¡“òBŽÕwœ£‡¡×Õ7‰“©÷èñM”a¿jŸt— ò=É2ìY}“yáŠ_¶ÞoÜJÜP<³Ë½ÈŠo6)¬uRKûå$ϰ‡õ}û$?¤Šv’ðCº¡“C®Öï»ô¡TÜé7™†=­IøþlÈ~ÚdÛ:É®cCöÔî¤ÜÖIÞ$Нö $áû³¡xk ëoCñ×®@Ö߆â±M"pN²þ6Ÿí$aýl(^ÛHÂ÷wCñÛ~€$¬¿ ÅsÕp’õ·!ûnT£“¼ˆ²÷6A”8É‹±¡øo“¸œ“¬¿ Ń»IXŠw’°þ6/î$aým(~ܤSç$ëoCñä@Ö߆âËýIXŠ77ªá$ëoCöç~PN2•olÈÝJàts’'écCñé¾$¬¿ Å«›ôïœdým(~ÝHÂúÛP<»„õ·¡øvw ëoCñî&)='YŠ÷$aým(Þ¨†“¬¿ ÙÇûE5:É‹ü±!{y¿„õ·¡øyß@Ö߆âé]€$¬¿ Å×»IXŠ·w’°þ6oå$c&¾ðv’|Ø÷Úø/ß— áó-WlAßì±ý›)ÅKghë×µž¸9?vÜÆ:í¿'…•Má8¾Í+•…Ý•I\Ư“ÎÂË‚$nã÷Iia—eAÅx9i-ì´,H¢¯'µ…Ý–I´ËËy¥·°ã² ‰n¼Ÿv]$1þ¥ÂNsaçeAñ示°û² ‰×ø{Ò]ØYЦÒãï¼R^Ø…Y„õ‡ê’öÂNÌ‚$¬?T—Ôöb$aý¡ºd¿°³ ëÕ%†½˜IX¨.)0ìÅ,HÂú»úI‚a/fAÖªK {1 ’°þP]aØ‹Y„õgÕ½Ë ÚCW#¦Âãö¼’aØ‹ù†îäŸv{^é0ìÅ,HÂúCuIˆa/fAÖªKJ {1 ’°þP]’bØUY„õ‡êÊ’X<Œá§ô¡T‚F¬?T—Ôve$aý9ÔÓÊñxè´dýYu¯˜U:…V¢ úXuïÉaWæƒ_'†½˜IX¨.)0ìÅ,HÂúsª²½ „õ‡ê’îʂ$¬TWÿ“Öâaü ?¥uchºH>N2 {1 ’ðó‹ê’Ã^Ì‚$¬«æ]^Ð ]ó£Ëó#ÜžWJ {1ßDŠÜøu’bØ‹ùVs:Éø}ÒbØ‹Ùxòoàö¼cØ‹YDêדÃ^Ì‚$|P]’cØ‹Y„ïOí'=†½˜oh1Ëãö¼dØ‹Y„õ‹ê’"Ã^Ì‚$¬_«î]^Ðî´~Q]ÒdØ‹Y„õ‡ê’(Ã^Ì‚$ü|£º¤Ê°³ )<Çíy%˰ó )&Y9p{^é2âŬð-o'aF¼˜ üòæùhý¤Ìˆókò]ú?NÒŒx1üåíéÿsÒfÄ‹™ð/ïHÿß“8#^Ì€yóü º¤Îˆ3!`^ÏŸ©°’gÄ‹™ 0¯çÏTXé3âÅL‚°×óg*¬ñb&AØëù3V x1>æõü™ +‰F¼˜ %ózþL…•F#^ÌÄ‘y=¦ÂJ¤/f"ɼž?Sa¥Òˆ3±d^ÏŸ«î]^ШFG¯çÏTXé4âÅL<™×óg*¬„ñb&¢Ìëù3VJx1Sæõü™ +©F¼˜‰*ózþL…•V#^ÌÄ•y=¦ÂJ¬/f"˼ž?Sa¥Öˆ3±e^ÏŸ©°’kÄ‹™è2¯çÏTXé5âÅL|™×óçǪ{—4ªÁÅóg*¬ñb&ÆÌëù3V’x1eæõü™ +ÍF¼˜‰3ózþL…•h#^ÌDšy=?¦ÂJµ/fbͼ¦%Qa%Ûˆ3Ñf^oQa¥Ûˆ3ñf^»êRa%܈3g^Ï¿©°RnÄ‹Y‘eîŸçßU÷./h--~LÒm„¥ÂJ»a/fAÖ¶I¼a/fAÖ¶I½a/fAÖþI¾a/fAÖ®I¿a/fAÖþIÀa/fAÖßÛO {1 ’°þ`ƒ' ‡½˜IXÅ“†Ã^Ì‚¦Èúª{ãÔì,Æšdÿ¼¾Àíy¥â°³ ‰Ûøu’qØ‹YD1~Ÿtöb$Q—“Ã^Ì‚$šñzRrØ‹YDÿ·ÜžWR{1 ’ÆûIËa/fAÏ¿T؉9ìÅ,Hâ5þœÔöb4…ׯU÷./hT£IöÏë ÜVz{1 ’°þP]tØ‹Y„õ‡ê’¢Ã^Ì‚$¬?T—$öb$aý¡º¤é°³ ëÕ%Q‡½˜IXW?©:ìÅ,HÂúCuIÖa/fAÖªKº{1 šÂë‹×ª{—4ªÑ$ûçõÅë„¿í}IX¨.I;ìÅ,HÂúCuIÛa/fAÖªKâ{1 ’°þP]RwØ ùþùÈúAuIÞqÒfq[^é2ì…¼ês%ßôWŽ+3úáJ¹ÈsòfØY„o‚óLlWfë‡+ù&8ËÄqeF?ºH…Þü:áÄreŽ«r—¸þµx©ª”Jø& ¿80ÛU„oú‹³]QIø& ¿80ÛßT„oBéÇy»ª>|ìRFÅõ¹ˆõ‡þûòL}=*.bý¡ú80oWÕëà¨Þ¥ŒŠKëJ^D¼ŽDûnÖ$á‡Õo/å—¡i¦þó"Ö@R ±~¸+qp¶SâMxš7ã«íëå|(l¼ï‚gWåJÖ®Âɸ°ý üYPûÅ)1Žˆeã©Å¨hšNúúÔÂÕ˜©ƒÇ'ý{òmpy(½ðûøHÙI„Ÿo|>¶£Ôëëëþx‘‚ûRü’ª½‘Iøþ%ÛN•„ïOë×H½È ;mã©ÊU5>~62¤V\†T*¡Nz‘ìÛÎÕ`—¨ëà\+(•þ¼zm„ÿOf××~ïR ‚Kß/o9+úN²R?Ü k“ÊY¡´³®¬ë$´Ì´æíýD¯òâL„•ãuÝYܱ¸Ô2Ó; ¯×u{q7X\²ÌŒr޽ʋ3A~ø¼®;‹;ºFO=x¯ëÎ⎮ÑIß뺳¸£kê¤W¯×ugq×€$üpy]wwH—×ugq7€$¬¿ÑOô*/ÎIX^×Å]S'}^¯ëöâî¡ktÒúst«½¸{è´þ¼®;‹;ºF'­?¯ëÎ⎮ÑIëÏ뺳¸£kê¤W¯×ugq×€$¬?¯ëÎâ®IX^×ÅÝ’°þž~¢Wyq&HÂúóºî,îèš:éäëuÝ^ܽtNZŽnµw/]£“ÖŸ×ugqG×è¤õçuÝYÜÑ5:iýy]wwtMô òõºî,î„õçuÝYÜu ëÏ뺳¸@ÖßÛOô*/ÎIX^×Å]S'½‚|½®Ëâ΋³âNZŽn•ÅgÅ”þ¨°£WeqVÜÉÇøu¢WeqVÜÉ×ø}¢Weq¦ãí,TØÑ«²8Ó‚ñvžF*ìèUYœiÁx;S#vôª,δ`¼«‘ ;zUgZ0ÞÎÖH…½*‹3¸(¦™PaG¯Ê⬺“Ýø{¢WeqVÝIëÏ뺳¸£ktÒúóºî,îè´þ¼®;‹;º¦N^ÖŸ×ugq×€$¬?¯ëÎâ®IX^×ÅÝ’°þ®~¢WeqVéäeýy]wwtM¼¬?¯ëöâî¦ktÒúst«½¸Ã¹Ý´þ¼®;‹;ºF'­?¯ëÎ⎮ÑIëÏ뺳¸£kêämýy]ww HÂúóºî,î:„õçuÝYÜ ëïî'zUg•NÞÖŸ×ugqG×ÔÉÛúóºn/î ]£“ÖŸ£[íÅ]¡ktÒúóºî,îè´þ¼®;‹;ºF'­?¯ëÎ⎮©“Åúóºî,î„õçu]Ý!ªFWÂÛYÍíÅÙøTí'pT–T•ñ«Þ1­Þ½$£W_±ê3ç·–d•^i|E (*ìÀQYRUÆçAtúÇ’p…òºJÐp…8(Kªê¡1ë×Kº×e´ÏH¬_/ Û^—qi¤Z¿ŽnÕ?q€¼¸ÚxÛ¥ƒR ¤ZIµŸèAYäµ”W@¯'„Ì^WõÞvé T‚+ù÷×úgÝåuOuûþýyݱB=dÝô~ðçxȺ§úúþ}zñQ׺©3>zbý:6CÛë&†N'¬_fÕ­ïuý×õ»õˬÚP¥TBé~>˜U¯u•×E•‹të‡Yµ¡N©-Y?̪÷’,ë¦ñÁû.¥t‹X?¶&ÅÕëõÖ=ÿ> ­½ê¡ëô$ãgÉ%œØŸïºþ»«²t¢ÿx[?®ðÛë2©k}uti¥>Í=î¿+€SŸ²çƒ×Ó¡,îLÐÆÿ=7cÕþ6ÌÆ‚P¨£‡K_ ^•Þu%M}-׫ÖkH·~ì‹*•ÂÉ3E J1è&€š„=™ô)-0%ÑlÞß%0R¢(ø#cVæe>`¾2g¾]¾§­ +hÁp¨óQç³Gòäžü†ñçèñþߎ€P uR7m¨ºój䃿©õcÎËÄö­wUýˆìç~Ÿö]ë—Z•`HóíÔÞ¼NÝ`.]D˜/W¾y¾Öow‚ð6ׯŸQYáK½ŒüÙŽ–k?–krúÔìX~™rà“ÿ]Òš¯l!`ݦz‰ê–…Â7)GrdÜ>ò‡þ›–Ãy3’Cƒs|#é5îT5 ŒŒ@+ÁF ~ûq¼´Rl@@ƒe–úV’ º®…’× ×‚Vš$!WX*™o–T\B®¬ÔZÐC©DùFÚN±‚#)^ƒ\‹À‚ÚÅ¥µPòäZܵÔ.®ª5œ× ×â®-‚—fÃøuRm„`VÜëoq×AK3ëoq×AKk^ƒ\‹»¶jHÂ÷wq×AmIÜÿRa'ÝÁ¬0¯A®Å][5.­Ax r-îZj7—Ö ¼¹w-µ›Kk^ƒ\‹»¶j\šAX‹»¶j\šAX‹»¶j\šAX‹»¶j\ZƒðäZܵEPë@Ößâ®-‚Ú’°þwmÔ ëoq×AKk^ƒ\‹»‚ZáÒ„× ×â®… V¸´á5ȵ¸k‹ Æ¥„õ·¸k‹ &Ufá÷ÉÀ±fÂ0” ;Çb‘iè,ØTØ86­ð¶K¥\Äã+Ÿ ‹`Ö¸HÆ7NŽÅ2k´Ÿþ?Ÿ4! 5®äçãp×Ì-£*ñóAr‰dðØ5„¯¿hk‹ VV#Õ×_ܵEPCÀ"óõwmÔº~ÍõëÉÀA©©f¢—­þmZÜjºA5óó[û¡Å­¦;T3?¿îKÙ]£*,2ß_÷¥®®ÁrÓlðòÐL ƒ›¦–45 n3óTÿ>øx|âö/½Ç®x´ïñ»Vœön>ò|Éíʧî¨m-p¢ˆÕXž¼»5ÜèkìV¾ë»e^4Þ]MOŠû\œ(fUø-HË Ùõwƒ@Jy}_ÌÀ2ïs­{AšûËãÿvt’O«†4#¾˜²f^éZuAMß4òÁû‚4­¾œŠ.øØ8F¢Àl„yå§UE¨ü‘ýNÙâ” M´UÕ')ÕÜå3iŸw¯Éón®êß%×r×öÐ9)÷•±¸GµuáÚ¦-šÿëL­ß&ÔhøV`„ ðM˜s~ë„Æ°ôèÎuÄMÉ_eõA–¼¯Ö¬f†)¡´|™ ù6ŽÏqßäà[xÉm¾Yc0%Îc箽—§ )ø4¯¹3›[ ÝŠP4ÃYõSëgè¾YMhÞuûiß­’Ï)õÍÙ_µnC÷ãøï[·úKôR"–&zéªU]«èEW ú\xß8ƒ|÷Iõß¹V5tËûõÿþàφ.ªJ4ãïÆ5R¼Ç5/þ¾­qéçÔw­Ÿ¡ûÆqq϶¿­ÎJ±`;!¬ò6M­Ûµ^ù¿rÖîŽ;»L¯Ι¿¯u†þŸç+cùmýíçƒÕ Œ/MqHu’ÜÉõ!h5]WT´? UCN÷{àü¨Y²±r;n2Ô)ûüõºc($²‘?ˆÁ ã ÷ðð‚$rݺ¡N©„Í=q·{z‚*8† ßê»Â+Þ@„oßCô \Gù)ày¾"3¬ðÏ7tíðº)žxØ½Üø½£‘^+ÆÃާ°c¼D°B–®ÎøK¨à^îÅ·=Ç *ÝîÃÉì¼]TqÆGØškÕåt\‰‘ÀE¬_7X—çrív/Nnèÿ…°Ö$t“<ñ‹.~K5øb ¸>.÷'ÚêŠÁ€ñYoY‚%ÐP©¬~Æ×2*Ü£ñv†é Øx¥T¢Ix|µüGuÕ„ŸŸzTçR Ü¿}ëWëö¼Æ‡ÙÙ¢£0ßk¹oÓ?pE ozJmšt—Lºåp®˜xLÿTÜ?Ø+`6Œ©QâÂÿ Ÿ›Bý _öÀôñúuŸÓ|¾ÎÑ’Sôiüwîí½<ÉÑ—îÇÈýZNæË“¼Iøy\NæË“¼I¸ßËÉü$å¶;øÆOéC©ðóä,Þc»“£j:áû¹<ÍãIî®Ó ßÏådOrwëû÷¸œÌ—'9]§'¾ßËÉ|y’kB2®~Ÿ¤ÞñoÃúYNæË“¼IxüËÉ|y’w ߟåd¾<É„õ³œÌ—'ù$aý,'óåIþIX?ËÉ<žäZ(¤ëÑÏ{R|ÇœµŽA{o'óåIÎÐt‘Ç¿‡åd¾<É „Ÿ¯åd¾<É+„õ·œÌ—'y’°þ–“ùò$ï@Ößr2_žäHÂú[NæË“ü’°þ–“ùò$gh\Äú[Næñ$÷иˆõ·œÌãIî¡qëo9™/Or†¦‹¼Ößr2_žäHÂú[NæË“¼IXËÉ|y’7 ëo9™/Oò$aý-'óåI>€$¬¿åd¾<É ëo9™/Or†ÆE¬¿ådOr‹XËÉ<žä±þ–“ùò$gh³¥îòíd¾<É „õ·œÌ—'y’°þ–“ùò$o@Ößr2·'y<Åû?¥ƒR .ÂÊãÞþåq¿¶5áñI}%îmH`|ôÄJö~‰!¡x|tÂJvÓ5†„âñÑ”\ìdÞ¶!ñqý×øõõT/„:áU[l c*Äe¼'öŒuŠÛx=Nì1(ØëÅx;Nì1(¢ìÕx?Nì1(¢ìÍø8Nì1(¢ìÝ=¿/ÞÃ/Ëிü=Nì1÷¤¶¸kmn ß]ëÛP€$<~wmlCB’ðøÝµg„Ç﮽ÛÐ$<~ïáÿ¶!aIx|W?Nì1("ìÃø8Nì1(ì~~¼‡_–!ÁC§??îZ]†]xR]ܵ¶ 7„õç®õmH(@ÖŸ»6¶!¡IXîÚ³ HÂús×ÞmHè@ÖŸ÷ðÛ0€$¬¿»'öm(x>øØ¥ŒšöiÄú£k1d·–è®ù`oô^œN×\ªQ×{Õ÷n$ç.óA6r üÚ½((îuÛÁHÂã÷FußÁ HÂãóõØÁHÂÏÍÏÞ@_ég{>¹Šƒ:…Ÿï¡ÿöFð 4…=ÅÛ¯×ÚÖþlÁSD?ïÙžÏn.!`»UÅ­eoß@ÖŸÌköp‰þJtWžu…µ½¿7‚¿x9Nì{£·}ðºK;¥YöŸ÷nï’°þjßÐC©„ôãE ö²ÝÙ‡u ë§>{{yûÄ·/þž|ßqg'pl÷" žøÇþ’°þì‰Üá „Ÿ?{âwø $aýØÿ¸Ã7 ?öÄ?îðHÂú³'þq‡@Ö_ë'ßwÜÙ ëÀ«·=ñÛq‡GfäØ¿mwxT;ÖŸ=ñ·;<ªëÏžøq‡_îî÷¿vi¡T‚#ëÆT?HÂú³CÆq¦h@ÖŸ<Ž3E’°þ`LõãL1€$¬¿Þ|œ!Ìõv/*l'ø8C(˜ëíôˆTØNðq†P°ÖÛé©°àã ¡8¬SX?¾ôq¦¸$üüùÒÇ™¢IX¾ôq¦¨@ÖŸ/}œ)„õçKgŠ$aýùÒÇ™bIX£'ø8C(˜ëÖŸýŽ3ª“ð"¡Øa;S ºaýùÒÛ™Õ½ëÏ—>Î7„õçKgŠ$aýùÒÇ™¢IX¾ôq¦h@ÖŸ/}œ):„õçKgŠ$aý=ý8ÁÇ‚è©Î“C…íg[‹WëÏ~Û™BѾæÖŸ/½)tm~ÞÙ-¾ôq¦¸$¬?_ú8S ëÏ—>ÎHÂúó¥3E’°þ|éãLÑ$¬?_ú8S ëïíÇ >΄€Õ¦Øá8Shw•þ'ø8C€·ÌÏ}éåL3DcçÏóóêKg LCZDzþ]}éãLAÓZDz¿úÒÇ™‚¦µˆ4Û¥úÒÇ™‚¦µˆ4Û¥úÒÇ™‚¦5HÏï«/}œ)Äe¼'ø8Có.ûÿÕ~Ç™‚¦5HÏï«ý¶3/ÍY›ç÷Õ—ÞÎMkžßW_ú8Sдéù}õ¥3MkžßW_ú8SÐ4ƒ´þ|éãLAÓ Òúó¥3MkžßW_ú8S ëïêÇ >ÎòΜÂú³Âq¦ i Òóûj?„íLÁ­Ñœµy~_}éíLÁ­ÑœÕ°œàã ÑØ´öü½úÒÇ™‚¦5H³ª/}œ)hšAZ¾ôq¦ iiýùÒÇ™‚¦1ÔX¾ôq¦@ÖßÝ|œ!äÝy;‡+,'ø8C(-ÜÖŸý¶3·F“@'Šr…å†f··ïK/gŠå‰n|¤Âò?GCêëJÞ™¯¾þ³Ý"*„•ìë¿Û-¢IXÉöhøÅ£¡‘Zù¼I-–úv‹HÓ}œZz¿zýSí_~o‰H¢{|ÏñOGg]¶¦ïqRß×ÁݵgÇœÕt6–ê^÷í6ÑwÒý_wó¸=/»Têð•Æv‹øúIôÝôýWì½jU×R©„²KxígA©„Rôx’ŸkÕã o·Šƒ?Ç Þ‚$Òÿ÷8ÁÛ­B„ŸW½·G×W2!/ª«{L¨T·_ÿëDÿõIßxÙmWÕEFðzœØí1!HÂýwƒãx¢Ûmâàý8¡ÛcBDÆ7Žº=&Id|'t»M’ðýý¯§yåÖ .â—›.v¦Péñ$¼ºé²Ý2 „ï¿›®Û#£Iø%ãªm;SHIÿÁ?NîÛ#Àã34¶Gø³Ý*–‹Æ.­nŠ´„â…~|ð'x0®¸MÔ‘ñŸÒëPä7¹h,ˆæh?úÿ4X6Ïž_·ïËAÚý³Ý2HW›¬¶JYÛþœÞïú¤êsî¾¾’âäŸÎ‘ºÃé^ç¡ëZ•vGU[½½Ò%%徕4ûvï5²æHÍ81ÄS`§"?=É¢¬üC®ÿnèJV"%¾ŸÜ¼•kÈI‚ؼwjžå¿ã»¥G¦ñÜüÍ™³ÜèóHø¾Ö^v)ýï@åÊË•±æn¿+êô méÂ¥EÌÂ"úà©ß?ª1®w Ÿ4mµÝ>N>Éø³ s–§Fœ,¢Ëpé! IjÐß|j¸7JÛQ OløÌfcíÚ WÁÐk&6¯ IBW4åvõ5ïNr§äBzÈz£'ôÉOâ­'ÃÓʪ¤µÄÆÛ.”J(«M^oÿ¤ir.%9®Oá§–„§†^JÕ[ºü9ž’KI¤úƒÓD%WÒÔ=Ü5g¸qV%r ývV °íê¡ÿm"-5׿3Ñ"ÁìÀÖ^€Æš‚…ƒ×\i\OLÚ(Ÿºu×x»¼^OcÕuÁ‹ö€ç:6ã§£¦Lô[wlòÝE5‰ëƒ¿† ç`ßl¼×P—Š»îî¿Z¥Popáb+Ч}V€bÞbÞNâuãr·Ï2$#ÎùëZËÝ>Ë@¨4a0Ra¹ÛgH¦p­œõ;îöYÂBqÎ_WXîöYw¢Ž»}–ÃÿÖºq¹Ûg8Ü ßwV@¿¾—‘tN¼ÿV…ånŸe ™B£Âr·Ï2.ØðZ” ËÝ>ËÀA'¼mv'ÿíed’°þXÅÝ>ËÀA'¼¥Âr·Ï2p¸Ö+ ¸Ûg8Ü ëPÜí³ î„õÇ (îöYwÂúctõ½Œ¤ëtÂúcwû,É2¼¥Âr·Ï2pÐ ¯E©°Üí³ „C<òû±;ùo/#;„õ‡'vÜí³ tÂkQ*,wû,‡;aý±nŠ»}–ðþXAÅÝ>ËÀáNX,žân¿–°¤‚³Bºû^FÞÁ›mTXîökÈÛÕÓ`*,wû,ãoWÛ2¨°Üí³ªSΜ,óªYš´ÌÙú.ÈÐKU¸‹ÁéÞ^âŸG¸ï‹Ñá±)*µúf3ê•ÞÆ_—†*iNdûmÞã¹ ŒGvI>MáÙrn]U¡BÂ~Ô~kÏ~ëZ›GsÃÏ7Úƒ@ßY G}ËJ?£è; ô¥¾ñûàõ,Ð×*æNc©ë Y ¯õöê?!Ö*ÙUYÏÞÿÖ²úÄ`=,h¤B¢ °¶e©ªAB· ŸÖ„F¨}¤V͉ŒêÂëï?ÐtÂÜ$×ú¹–J%˜Ñøà¹‰R )ù÷µ~'›ûNļ~³¹'‡Sÿàm—"'jºÖ;ÚÃÐiÄúsRÍG{ºÉüÈI=í’°þ b}øhHÂúƒŠõá£U ë*Ö‡Ö€$¬?¨X>Z’°þ b}øhHÂú{úIZ>Ùp#ÖT¬¡Óˆõg*Öæ£aïp#ÖŸ“zl>öñj®9©Çá£Ý@ÖT¬­IXP±>|´ $aýAÅúðÑ„õëÃGë@ÖžÞ>Ú’°þÞ~’–„O6܈õ‡§ö‡ÆÐiÄú3ŸkñÑà“ 7býÙÝ|ñÑà“áGýØÞÔíi~øh7Äeü:IKB{¼x¹ß'iÉæ›Õ^v)>Q´_Ìk9wyÂoª[™ÝžæÏf™]Uíß©ß;z¨b‚F*,Oô°ÄÈÁ€3ëã9\7KìZT3Ö]ähö®›%v/ªK2RN{×Í+›jvIXf‰ÕM5+@ÖYbmSÍ*D1^Ž;z¨bø±>žÃu»›M5£l|ð¶!ê?á‹Å;}qÏዟëã9^jõÔÂÅ?ÒÇö„4ØO{øf;{¨f8.üþwöP͘òx~Ñï븳‡jþöà÷qgÕŒ@•¯w;ú]Ž;{¨fTy½UÜïzÜÙC5#–J"¨ô»wöPÍ ?l¼wöPÍ‚ã㸳‡j3Â9\a¹³‡j3Â9\a¹³‡j3Â9\a¹³‡j3Â9\a¹³‡j3Â9\a¹³‡j3Â9\a¹³‡j3Â9\a¹³‡O3Â9\a¹³o*Úøà}—"ñóWN-¨V‹ïäÅ] ©æ„s¤–ñ+|4˜ÎßÛ1ùwÚ?4Ë¡«“þ~kÝ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌ¡ªÁ¬pWXîÌá«Á¬pW8>ÍlŽÁ¬pWÔ(•à¿î«Çúë}¼ñ¶ Æ®ÊE¬ßÖ»røj0/œcÀµŽÏ2T6˜Î1à †xë¼tRúó÷› ËÝ9T5˜Î!àZÛçyQÝî~¤.¡ªÁ¼pŽŸ»’º„ª&zEùåûË0I]LU$aýB%LRSÕIøùÄçZa¥Óò~4 ì÷ î+¾ÚÁï]Z)•ÐEò~tHÝ{óÝ„Ÿ‡Ô-›ê&G§÷úàí„6U͸#˜šÛ¶B›ª&H"õÇ lªš ?Ÿ°ÀØT5Aº~ôóžÀ¦ª š"ï/X` lªš ?fý6Õ­I¸ÿf]›êV$܇Խ7Õ­I¸ÿ©[6Õ­Iøù‚–À¦ª ’ðóõôØT5A~¾`%$°©j‚$ü|ÁKH`SÕŠ–3OH`SÕŒßÑ/,°„6UMÐѯY`¿Mu+@Ö¯Y`צºU ë×!uïMuk@Ö¯Cê–Muë@Ö/,°„6UM„õûöØT5AÖ/,°„6UM„õËzB›ª&HÂúcjžÀ¦ª ’@pÛVH`SÕMáïÃ0 ì·©n2¹Ilü>!MU3î'æ¶­À¦ª ’hÆë lªš ‰n¼À¦ª ’ÿ·m…6UM„£;05û¦ºñj椌ÿ9!•íú}ðMp»x+«>¸mãúÜl~$qÿÜl~$Qþ-{Å"¸Ùü HÂú»>7›IXׇàfóƒ ëïúÜl~$aý]‚›Í‚$¬¿ëCp³ùA„õs}n6?šÂ6 g6ÁÍæAÖßý!¸Ùü HÂú»?7›IX÷‡àfóƒ ëïþÜl~$aýÝ‚›Í‚$¬¿ûCp³ùA„õwn6?’°þîÁÍæAÖßý!¸Ùü h ¯oÇý!¸Ùü HÂú+‚›Í‚$¬¿ò!¸Ùü HÂú+‚›Í‚$¬¿ò!¸Ùü HÂú+‚›Í‚$¬¿ò!¸yÿ[„õW>·mžx>øØ¥h…úàÖŸYZ÷Ú_¯¨FgzýÊ^ú2Zì­óëà\Õ¥7¥ì¯Z?lÍgCýK%Ûø½ ê®Jûï¿– ñàÒ)Z.]--Ì1QÅÞN´]ÈIøÖ×¾¡‡R 6áséq¢ñn‚™µæ·—¹]«í?ÿFÈf+¯ù^‚$ÞÅszôáÌéOüï “þxjd¯÷ú,Oýºüó7~ïÒJ©„¶>¼5—|æ÷öï7$áG/tC.•Ð&ЧæöBOÀƒøïýõÔÜùÌwÔœÊ ƒþzjnWtCÔÒÒAŸ»×¦y{¡'`B\å‰úæÓ‡úŠš°\ÿ¯ƒ;Ÿùqµ§i­òiÄ ýãjOÓZßäÓÈÖÿvµ+}ýàe—º–„–>ù4²ëÿñ·G Ö»þW{ªJ6ßÛ ýãjÿIXÞõ?®öTÕøóiô®ÿrµ·+=[' w©kIH ù4Ú p-Ó»&ú¾ù4n(VªJù4n(VªJ ù4n(VªJ ù4n(Vª¢ëoC±zPUJȧqC±z<@Ö߆bõ ª4‘Oã†lõ`׃ý»|7d«»ìßåÓ¸¡X=¨*%äÓ¸¡X=¨*%äÓ¸¡X=¨*%äÓ¸¡X=¨*%äÓ¸¡X=¨Š¬¿ ÅêAU)!ŸÆ ÅêñIXŠÕƒªRB>²Õƒ]öïòiÜ­l}°—Oã†bõ ª”Oã†bõ ª”Oã†bõ ª”O߆bõ ª”à­Û±¡X=¨Š¬¿ ÅêAU)!Ÿ¾ ÅêñIXŠÕƒªR‚McCÝ ªJ ù4n¨Û`AU)ÁTògC±zPÓBðë8Øo«Fùà÷v Çª@ÕfûCÏ9&]BÄ †+N.âHq)íŽYW´R(Iîáp±+æ1ãI\ÆO̹‡R ±ý}p¸Ø®N¥27‡*ó ÕÍ·fUpc±Õþª“»˜žn¶Ú|uVVr—Ïu ñÞdÉf;hã—q(m—vÊ.mg]qµ$fl*­ùÝí{üŠÊ#üb‰è¯ŠÓZœ¾šZ ê†nB¸>Wðfüb“‰è­„h}ü~#ÜlZ}|ý¢8Åé­WƒÍUU*qKd|ÏÆ»›$‘ñ½¢ª©™L“º/W_ýÓ«Sq\~mHšg ¶³®¸‚N–À°ìz)DeQÊùß²ŸÏ<°m=Úþøù»ÏÝ)•°}Ìx;¶º¥áƒ÷]ðìª4õ3ÛŠÝ«™“º¹Â ÛƒÉÈ›sW؆ÌHÿözþH…¶!³—­mO]©°Â6Ä`Fš‚×SW*¬° ±z‘¡àmPK¨°Â6lƒZ— ¶ µuJ%|ëKûÜ0˜‘Áà53‰ tö}ëË©úÆ`æ(y´c Drƒ—ým; ¸ú|ЙZ²Ê£o:Ÿ©J–Êß«¬d-yLjFn­ÃŽjOM=Óó}µöÆ4µnCEŽè—÷]ÿÞ òß±qkÏĪaè~̃zL|ê‡dèüܹœüOÓÒƒ‰W×§þj5.ÝžOýwãׯ5¦Ü]j×ÓÃÂ`³þïªÅMß6͹pi»Áߪ¯ xr»Âép’Oª$½öA»6s{¡Ó+Úì1ÎmÌx_8ú5™ìÙì´ âv׋‰J?³‘~¹ÏÂé¿¢÷i3¼ëÝãïQ/ýum†ç¤!ëý%ëä%ã%;è%cçå@)ÂæÜ9iüû"Z Yí]˜•¤n(8¡p ¿‚¨¥h˜ø”©((½0*I ‰GâõIÍø…ðFÏîäU}RwUðíf`B¼Î4>vé›ú >:ü2ÂM7„gû"Œ/þîRXëzD´…»ðññPج÷›3.¼ª%WsëPß?\x bãB­÷rjÝRÔÿuýÝ*3š‡‹øçîZuAÌXlë-òO«@šv+gÛþ9¹VßµhŸ3­_7¸{õÂÚÿFâ.¹–ëgèU™,6N-÷ÏÆk2XW¸Ä¼}ùÀÿ_øR1ÌU*ñà°ïO”Ô<¾BÈÕ+úŽÖ‡‡^`ò_Þâ·B ñüiŠàûoý>ý?ªÅëÃ"ø¤ =z¯Ó~S KpRx¦(Ñ&Ž¥kCEì êÄõr-ã7¥EÂÏ ‚ßAcá—ö™.û(ò:"uÇËÄýcõÒ®oˆÅ‡Ô ¯»´S:ŸØ!2Ofõ’ÀŒÞ§$‘þ÷otÆÇõe‡È<šÕ‹¡—R ™P¼OÂžÏ ìè-œB\ÛÛû ìù¬ÀŽÞÇ)¯½mB`ÏçDw|}i:ù¿6Ä¥é/¡Ÿñû†ôN!®ìÆË ¹·€'¯'¢÷i ®Mo'âÞâœd¼ïR­C°NÉÄ |dÏgRôNi¬ctfâ*°ñ³¢)z§`¬J\6~V4EïãŒU‰«ÀÆÏЦèÍš‚±*qØøYÑ÷>Oùà÷.­”J\·ñrˆ­ÞÇ)«WŸElõ>NÁX•¸ lü,b«÷q ƪÄU`ãg[½S0V%®?‹Øê}œ‚±*qØøYÄVïãŒU‰«ÀÆÏ"¶z§`¬JÜ6~±Õû8cU|eØøYÄVïãìTñ•aãg[½S°XÅW†ŸElõ>NÁX_6~±Õû8cU|eØøYÄVïãŒUñ•aãg[½S0VÅW†ŸElõ>NÁX_6~±Õû8cUxÖlü,b«÷q ƪð¤ÙøYÄVïãŒUñ•aãg[½S0VÅW†ŸElõ>NÁX_6~±Õû8cU|eØøYÄVïãŒUñ•aãg[½S0VÅW†ŸElõ>NÁX_6~±Õû8cU|eØøYÄVïãŒUñ•aãg[½S0VÅW†ŸElõ>NÁX_6~±Õû8cU|eØøYÄV/v ÛÙì`ãg[³öÕŠ÷àõ»…£ÅlÁ˜_VÇÙÝ^¬ŒYñ¥Y çÃõŠ<6qÔ‹Õ‚± ‹VjXâ.ö¨W¬åF {Ô+Vã·w$Xâ.ö¨«‚$ÜI¾¯azÅ*H¢ý[«ÛCÕŠhdu»ˆ¡^¬ ’ЗÌËz–¸‡"ªe© ?|D½v}½b-D¾½¬gÈ¥S /ÛYâž1“ÂßžÆ:7‹åk‘Iû'š¡y åfÁ¡%š¡y  ÷„hY‰fTâ‹ß¢~ 4Á ±ÔjIHI^8¦Vq-•JHŽøœË ‰h2éÁû‰†h© )L–…xº¢!šG*HÂúíω†h© ‰èç=ÑÍ#$áçoüN4DóHIøù׉†h© ëoÜ'¢y¤‚$¬¿QN4DóDIX£žhˆ›gúÅÛfŒ¾æ‰ ’ðó9ú†J%¤$“Å –ê; IXãÙŒÑÛB¿–ë?‡}¶e&hwõ&‹]oßhcкIøþ°‰WCðR©Dh_ýÜ«ÝkT§çÿ6N‡ ¡=ú÷ûi¿žvÈjÆÇî˵»6výYQ¬ÛîÕÆ™öô§¸]ŠÛ殽àV²wâ~‰K¦é\éh²§ý÷DKs¬2 î «à^µÔþ›÷ѶV´4‡4c§ìÍûh[†¸ Uµ]›÷!µhm‡<#‚˜ŸoB%¿üYFp¯\¿üò+nÙ ¸W®ß?Iæ‰K&H"×;ÿ<ÑÈîUVܲ£mõj0´[ªí§Ã=M³‰÷æýùíWÈ´—3}ÿžëä·OÔ+¥?øªCc­pXuá«V£Ö¼4ßßÌ?]«$[¢bmœ :!jñ{=vü1/Á8Àúµ-Ñð:ÿùSP–<nÇç,Ií2e¢ &M”.楘aî¾T¶´y£H IzÏOò½NlºŒPé!4n, Tè!I™Íçk§P»~Èìn•“øÕóµy.3- w;Ý"Ìî”kЉxq9™Õ%߸K˽K榤µ:š­(C̡Ҏ¥B4ÅÆctƒ>»Š&ÈzA“ÜÌÑ­}þi’¼j΋öʲíZàŸ¡8aªgáTçæø¾\œ™‹”óhä–]$ \xÝPσ¢ŒþýçF+O†jIŒ¯H…ùíòc‘‹U¢q'f!DñS\Œ?ë¹áÈ–¯xKÿÞ Ñª¾‚|ïü•£ÂúYîf Íú¹ÄÓVøÊµÇ¿¢vîæZ;ªE†öøÖ ÷ç:µ:µdÊÑ*ò™Wa©Z·ÖÇ_g½Óü“ú´Ê3¤Ô»M ѵq)Ù±ïÉÁ©j袪„õK-ãR¢fi¼ª»þû¿Vo «ãÔw­ß®¥ ½´ž<Änp÷Ê¿/^ ~~\ë·;±ÞF«ÿéË~ôÖ+ëçUj*ì·Í»^9yÓ}D°3Ò¶½tÒøØ¸r‰ÖœóK$gà,Nž¹ÓÍþ½Ž8B6Εf³9¹æ%–à·ÞS·_±ZD(3ô+ÃÒc‡I²ÈŠ0 «Üt¦ñkCåoȦ >œ&Ž ›çhZáaðàåCv„q|¤ýº¡ùÆVHAs¯ï¿-¿M0,¦êLã}3äÖ¼~V®¨”|Ä¿ñ'ûŠZ©7§rÍ%|)ÉüÝPf |ù¯¯ZÆõ$èÍ©„2ÅùèÿÓjÉ$‚éF&©u¥Öz3NáM®4¸z%ßá"ßá)ü|øZ×w|vë]x[©¡³’~Ƕ3~ìµßÒÏWa,-Æj=ÿm·ªZ±0W½ëúïQ8¥Ò„'a¾VßР¯#Ô~ÙuÃt¯¢\2PøÂÎ[L½± Ø36¼¼ _U!þ©l@\ù}𺠇&}>í·UUÙåEƧU³ 5\èRÿÁ‡¡Ca|ábÕ®õÊAø{¼­ë&Ï5Áë乌! BËw­÷ƒ»”ÊËíw%ï9µ®= ÑášèpJ—Ù3=p«—ñr­¿Þéß¹ª -ÇÔˆ«¶ q9tö˪w[uAVb=·æ\k„ó×{Ø}üÙWeh/'ý;Ý<í‡ý˜úߨ­æ/Ýf‰G}³Òê&IABÓãöµm’L!Ÿd¼lˆúTå"V­›î 2êYL³ÍªZ«ö¿Ñòêù4­ŸÎÚƒÈÁ‡q3µ0b:˜M˜V+Vîu7“°Ü^Œ­<ÔÁ‹Ò5~˜b—¶¦.yü]lÍ(Í·éNNÙ¾úߣ•ËL*˜Rýà•ø‹÷½Û÷óéZ·k…¢; Ó¡V«K5ヷ…[5%'YI× "dzæ¸ÌìÙNÿý܉±¡÷xô…ó¥“ÚõeM@!Ó™ÿÂÿZç^iÚyå1ò@ Û~~az)ÖõÁ¯ã纗ðâàÛT8Î~f‚)uqüi*,¨Q*A#Õx=~‚a‚U>¢þ>“Á|ù † ¦˜ÙStãýø †VyøûrÿÆÇYÐL1…“.þM…@˜6.ºN#¯ñwãW˜\d·Ûᦞ-’ï—:—ˆÁ«Ö/$4Åd†éõ匭Vã±ÝlùÖÅ©]L[žÄt[ÇëWs˜´&þò¤z'šŸNH¶wžt?Ý\_6b™ˆ‹È¾•ÍRqÛŠ3 ñ€‹\nR†kg—]êÑ$JW-´Ÿù ©Ì5³Ô”Üh…Çq-tUd¬·×]ÿ¿8\Áº§ðÝw­kÕº Iøî»Á+PVØã´.Hªr"pëeU_Vx©UW­ûɪ\c–é}·Z¿+ü»dÿ¹jöî»wRk¬ZZ d‡ÀmÒ +ñà®%Hóxåßõ]ë· TÏ Cõ·UeŸ/Nh>¡íÊßåNý±uzíyj -=þÁ¸vq9û½¹âý»kh»EûºÚ,nœo§?0=›5—‘À‘qóྫõû·4S~çb.ýý÷±¢7ƒ(¼"ÈKМà2ùÎÂ[ˆ§LÈA\.–ZÛS& l- ;\a;ÉlQ—ðãQ¹hP*áþ×~‰A¶òÁ¯ “ƒn΋‹ÅF ohx| "x1¾ƒÔ…´ñzâÓmrQÿàm—Ò´ÆÏ óñjýC>2yh0RïMánˆªR-ãó wëÃ[2¹¨ÿ>ø'~]ÈAƒ‘zñu÷OüºƒãóÞÕÝ?ñëBŒÏ{Wxb¯øu! Fj ‘dWüºƒ†ùòüõOüºƒD}®²ðT.h®µƒØ™$Üíâ×mòÐcñçL4…gèD’]ñçL$áçgÔÎä *ƒÌÁÛ‰?grÐÂ}ÿG?ñçÄ ¢þa­T ’Ô®IGoú÷œ|‰”Ô ½¹þ{ò&RRƒäÍ›{aZ‘–n ¿?V¦i©Iøþ¯ L+ÒR’ðøV¦i©Iøþ® L+ÒR’ðý]A˜V¤¥$áû»‚0­HK„ïï ´"-¡:m˜ar¯ L‰´$ÕÉá¢8Ç8v¾ÀIé:8F—Þ”Jpdý±íüaø ëmç¹§IXo9ñ•BÎQœ×âôá®ðû{:„õÇfè‡Ü3€$¬¿·ŸøJ›¼ó|ð±KÑŽlaåÜßfø@Îéø"\ÑÏ{â+…œÓ™)ØÂJ…߇ÜsIã׉¯rŽüP‹Ó‡»ÂïCî©@íßbóü>äž$Ñ×_)ä¬KÝ *ü>äž$ñï'¾RÈ9òC-v°ô\J%ŠºZïö[xjÕ_ìEËðeüݸžËŠjÚÁiиFJÔ£_?í¯ •§c®£}?W®u¹Öͦ‡b¹êLãÅ¥7Û…'HOÈÆë†ø/õÉï±ñUkøúEÄS¤ÿ}ãÊT Í£¼WÜ AÔÉ èà+û]ÌÁ¸o…9âûÕ&)ð6iã:xûíRH+"…è·ü潉½!TŽ˜‹ñázóÞĨ*GlÆøp½yobÔØäÌÉøp½F Cä#£¾Ô1‚·ÃkX6e­6Þ¯aUºO2>Õ#6–XVü|cÔ¸–={ †šßS¾M=±Ç”SßF  {CzoyÓ‹ ËJ{ ±\7~¬<4‚å§Ú/w­)4¾žñí º–Ššúx;Z‘x9éƒ÷ ý¶e*×·M¿ý»VÏUU„_Ô2t¯Nöîª@ÜzN÷õ]ë·‡¦ëCOò¦ajýÖ Sû|ÆßúGÝÖóÕä^”¾ºri|¼tR-ä‚Y½º|}•Jøùÿ7´HÂúq‡ïtM>U¿éƒ?ÿÑ at˜Ö2¤‹à¹ªá8ÌôgÀ@ ÈZdôÝõ]ë· —£qêïV©U°W>プ@ê‘#GñžÑªURK»LEŽSøþ¸Á’«Ê^-H×÷óçk•@ Ⱥ:yðH>EŽSÎ’C?]9b”X¦Ü ëI5ü¦ÏOvpe Â[,ùFß”Á‰Ålý±äÃ=Ç”©ªuWž_–|,.Ywª‘F˜_û¸«éq„§†IQYkö}ˆðˆës‘wÅjúo’#¼ªJ¤cã¯ñ"ËFq,ÂÕ`O„'|à±a8¡kFöqž€OÁ«=ûEûú>zÝYk$ –Ç=}ß •XR\_!¯:ﱤˆ0ÅKð‹;®”D‘Ðf1‹‘ö›K/˜á•u¿Ä'õ»¡‹-Éʺƒ÷‡çGªt±[YYwèqÝøcèb·RIål´éžŸYRÐÅn¥ŒB/ûbÕï_UÂ¥uS¢Ôöðôž••e¼R*¡w¯÷¤¬ÇsGª! ?{(ÓK%Jðvnæ'ÝÁû.xvU1÷Vû㓸ŽoEüóƒ?;çÛ0DŠ7åv3ëäÐHÄÕh‡uÒ!q¸‘Ë œs0Éé ^a¤ø¿Q8©¤œåø¼kß8}sãܘ•/Yç´×­uL %ݽ5·óÏÝÎÿpFH{ÍZ‡œú}ãôS-iöÊyl*΄wÚ«ªki$Ü / ƒ¿Rw4Å­¦ü¸–qjQFOýðQk]ú¯­’¿Ïf®ÕÞ=jC+ÿÞW+îŸ&®¯•àúuCSµúÁ+}=C£¥çƒïNÊjÁÎq»ÿj1§Y£u®>¼÷½Ç‡&ÌH s$òÍåëœO8Á”;¡L©bã×7îl 2U¬¯?¶ C˜‚µº`ëÕ³W*¬=aSpR·QZ+dOØd¢ï‹ +dOØd¢¥Œ +dOØd¢èùºŽñÛS=ñ‘°Õƒ áU\aS`$éùúŽaЧj=øóû²5pžà¤f¶L}™ƒÑLyù@¯?ßžÃâ#Üf!T9—-Ü„@üWÓAleÞ‹ƒ¶pXfø8‰÷5E±½§ðýÇá7‰÷:'¡'ï~“xoGU¹ŽÃ¯!„”¨¹¿C¯ü' C£kêD> ý´Ê££ëëùäÕí¯dï{ðŒã—O«¯•þ9í_wž¾àɸRŽ]ß¿¿¾’ý% úÇCdUëɸRªëšö>-ýOvÀ¤ì’^œd<ÙÑ/)þØ õóãªÅÙû* · :¯›«–°IXÿ#)0)þê/»´Q*1ÄåÍì•øÏ{Ó‚$¬·zï½í$áû;úIüç½kAÖ¿·ÅøR Iÿ²-Ý)þ~<¥I¨ ¹ø¯-|A+EàüÊ÷aA+E`’ðø´RV A+E ž‹œäñ/h¥ì@ÿ‚VŠÀ$áû» •"hNÊø9E`R¾üY¥òÕ“ëT•“W½ò|îZ&¶éÑ’'Ú~þ6ç-œ¶HÂúÛt·pÚ „õ·éná´U ëoÓÝÂik@Öߦ»…ÓÖ$¬¿Mw §mIX›îNÛ$aýlº[8m¨†“üûÜt78m⤠šÂÄĶénpÚD<$þú¦»¨R"¦üÚ¥…R ðbü>±¨ÌI$Q—‹Êœ4AÍx=±¨ÌI$Ñ·‹Êœ4Aãß"±­XT&ž ’xŒ‹jsÖÞþ¬Rv¿:õqÒÿO,*sÒIX?›óNÛ $q¿N,*sÒ*;>×°þ6Ý-œ¶ $aýmº[8m HÂúÛt·pÚ%ÀIÖߦ»…Ó6€$¬¿Mw § œdýlº[8m¨†“Þ©°cQ™“&H ¬¿Mw3§í¾€$¬¿Mw §í’°þ6Ý-œ¶$aýmº[8mHÂúÛt·pÚ„õ·éná´l“¬¿Mw §mIX›îN8ÉúÛt·pÚP 'Y›îfN[A5:É[X}ÓÝÌic}›Òßß¾éná´Ý@Öߦ»…ÓV€$¬¿Mw;Q—DL;xÙ¥ìþQaý:–UÙĶŽ\kÅjÚœµñÁû.}(•àJÖ?ª»Ÿ€EaŸmüù,‚“F¤í×›øœè¢Tâqè¡– +ÖQ"%*V¥JUDn¿Þßz„"·ð–ZÉ®w-èú}¸5ŒƒP! X¤é¶ñ±ià~tjÿÒ:P»?øØÜ‚±púà1FD¸p'üè!çY,„Ð8rûè0÷@!4S>ÄîØ´Ó¤'±p­@•R Nò£™i3&Lk€{”O´$CR ެ?ÜÌßߦ•ŒpKJ^Mõ5Ph-ú´—ŒßÏ¡e(’^íþÃØèÚg#ÏS> (ÄЬ¥§²êùÑIàýCöØã9ÓøõƇUƒëºûß#KÍijÞóé¡BÈ"K?˜òé¡ÖaŒ :LùôPÁ´‚ú_n—+„l²Tûᆹ%:‡¶®­AèƒÊ«E?ý3þ÷?OÅ@‰7g‚›V<ª&n xq2¢è¢ýè÷ ‹pá÷y 2>â[;ÙQtqž*•õƒB }bœñ¶b¸}O½S«íÐ}‡F0÷Çmµ/.q_Ü3FÌyxõ!2¾7i!6üÜÆG*º·CíHµp‘E‚ãûÚì„£]*\á–TÛaä³vÅ·ðŠoàýw὜wcâÖJÝU÷¤&j«–åÆkëÐH­åÁkÃP˜?¢˜€Xµ,7^[‡*)™bâaÕ²Üxm$áÆŽ¸ñb’¸ޱéJ¶ýk^217ª©Ê‘"׺\«FH Þ¿JƒËzÕ¯»´S*!%ÙÒmÌx·E„_â¶(üNŠPç8ø';hR?ÈìàŸì Éï€ Ù›ùûɺSC\ǧ&¥®%¡‰ç·øÔ¬ì Iý@|ê×ó[Bã®ì Iý€wÙëù-QqWvФ~À…ìõ”¨¸+;hR?àBöz~KTÜ•4©p!{}‰Š»²ƒ&õ.d¯ç·DÅ]ÙA“ú²×ó[¢â®ì Iý€ ÙûD?Ÿì Iý€ Ùëù-QqWvФ~À…ìõü–¨¸+;hR?àBöz~KTÜ•4©ˆOýz~KTÜ•4©Ø.}=¿%*îÊšÔ씾žßweMêvJ_ÿ>‰Š»²ƒ&õ;¥¯ŸDÅ]ÙA“úÒ׿?¢â®ì IýÀNéë,QqWvФ~`§ôõ器+;hR?°Súš ETÜ•4©Ø)}ýû#*îÊšÔl‡¾ÞŸ&*îÊšÔ섾þ}weMêâS¿þ}weMꇗMl¨ˆŠ»²ƒ:õƒ ëïþduêAÖßýÉêÔ‚$¬¿û“Ô©IXå“Ô©IXå“t§†(üþ¤H$uƒ ëճɞ<†NípðºK;¥8^3ÿ&*îJq¸³>øÖ”¾ ž]KM{ëFäJawlAV ± êÊõ ‚£ ‰¨æ=i ìŽ-HÂCwø‚¶=¹išë{hvÏïÛ›¦5>o}wmlwnš–㨷¶‡»ölwnšÖHMîڻݹiZƒôÖ6NÜ¥„·¶ñï^i$¶;÷óÁÇ.¥UOë÷ßÏ/þÛÛÝû“µAŽ×œÔâ‰R.­AÚ´8|é•ÐA>ׂ$¬?÷jlwm.ýO…©Õ2Îí°Ïñpÿ> ¶O6þÙ+̓ݭWU? ¨_Û]{¯‰ŠŒöJó`wkA¾t½—í®M×8É÷^%Í¥òIþÙ»ÿiç‡Ý›Aïh·noÜ)g•`mp°I1èä¯UXVØö.pÝÜC}Ü<—ì8 ôD·œAVœxr¦#‰ |Ø/Šf÷(.^çÚbÉ¥W}Cºkâtɾp…s6ðJ7þ~ÂÌMáε†k©TêQ„Æ ´b@c¨2R×x$™|`¨J4 w3Êf0Èà.HÂÚ÷"ÜÐ$^ÙÚËà~i.~1Wð¸&ÓFÓ"} +²´ñþ×´ÆIó¿¹~3~dƒI²òO¼ïR©c@V†›|-|Uxÿ†ÈÈ\¤$Ì]j ×"1ŠGÍnÐøe¼ º› ׂ‘ Ùúáèùà— .M½/¦¾©ï·úqiÝíÓë—¡+‚Sk¥žô7Â8hÅPßdîçƒ7ãW'N,óë«oF8µ(c¼¹þb|§ÀqZ•€Ñö…œú¬’Ì_ø» ®UÕý³~Xp;‡»b2wùà׆Jßay_O­J- êûùv­Ã3o@¾ÿŸ«ÉâC烷 «ë^¸w½`—ž:÷˜'oÞš°« ½”J°*OûÏ¡¸‡lc|ãoJ!›£?bž8°Ï­²9—Ö¬Ë*™ß\«yã§”^Á¹•ÁÏì<Î=<ñƒVOȨήöj1¸xÂCzQÌÍz$Q÷/ÏüÁàÕÅú·3Š)èTåú}³šW^–EЬ÷Áí¶¤þ{’³,.€¦¶=©µ’³,.€fRgUTXÉY!«°=©p2´˜+P`MX– qUÝ$|gMx¡ÂJš)=6˜Rk%wÙ\‚ñÁûIβ úÜNT9w%gÙ\÷ƒ?«[?w’;å]Î=\s¸S6¨R+W¥ÿôÏú¹¯/ [ÿ«Ä_}j…5@Õ7ÿ–\LOßɃ)„p"w„0\‚ó_Ï&¼|0!yiĹŒV­æZÕ³”©C4ƒ†R §{®ÿ_ŒL˜9ø'y‘¹2•‰Äð®×S>ɋ̕$áþ•Oò"?ßUß샒m.Må$ãe—ί.nÕo?ÿý[ ÃÆ¾ ÷ŸßJ6~ôI¤ÿý0lüèWmâ|†Ízþ¥¿šß7¿•C³á§Á“ýQÁÎØêOJÆO…0tÖ£Ï/yá×aèìŸNá$ã÷aØìŸFýàe—¶Õ4o¿Ÿ}n4ëùççž÷³ÍM£á!à—ž÷oíÒõ!üÀ*©?gý>4§yòüRkÓpÌ•!—çG®`†KC˜ñ$ó&–&/Óhn‡~V|g{<¾þLº8‡}^! ×{ê?¯ tÝ·SÊmÃ¥žQú·É¹yÙ,µ˜Ñãg—ZyÙ,µð\øV ¥¼Q`w-·*ÈïN׫–¦²JÀ<…Ôç.hO ˜×½!FABt p´‚’w3û܆äs‰—l¢²r‹;²€p t¸“fyñéçâŸMóo«j| ’Ëù¬Ø½cHøàcÈ¥4¼Ÿ/Òð…]ðˆ—Õ¾¡mßd½›4_«™ ù†¶}}ÿ®ƒsW\zS*Á‘€Ü°sµÑ|m ß$îš¡J©„””7ô<ÄõÇ]5äR ¦{üÜðyµüÔ’ð­+åäÕòSSìÉ3?fÉ«å[[ñŽ|KðößäZ;ØÑÂû.xvU9¾æÑå1It$ßuAéßs¢#ù® ’Hûä».HžySe?57„=“"é%Πȣç·J"Ö¨Târ›yeÓ4Ú"|xz ùèdˆp†‡…·]J^ˆç¯y8þ4|RB៮Û÷ýw­n¨I“Mêj &µ[Ý4±V|æ m®Îiß×z?„H.-Á®VàïšiÃMB›ˆÞzg›í„pЮš ¿ú°Õj”Jp’ŸÒ¾ŸÞ:;x;Ѳ5¦°ïß¿*žÄòþûæ ¸Q$ß!~¸r¸þ³p2ttÊÿV€“hU}§ðÌѵÈ ¼/ÍBg¾Ÿ nº¬[O†Ϭ_gØø9¯GQ8_A¾?NÎñ3TÈ5þö¡eg 1¤ZJžs“kÇxÛøØxÒðïÁEúåG› #+žùkŸÜÞØš)Çq'Þãó+ŸÝKüòî4Éöä tÉâóoœNü‡å.,w^„mèY\Åá¢ý½zG^½<ÐïšHh õƒrH£TBS?o W¤IXÿ£ MdIøù!„,šÈ$áñcµøÕM¡ÿ\$ã™&ò04.âçÓǯ/šÈCÿ¹ˆõé3³i" MñÖ8¼ ÐD „õóÜB©@þ}c&¹~›&Ò€$¬¿§ M¤IX˜.°Z™&2€$¬¿'„Ey€$¬?¬ÐtLah\ÄúÃôyÔËиˆõGtœ«/šÈËиˆõGà¬.¦‰04]$ïOLÐtL)@ÖVL+¦‰hå[Þ^…&Ò‚×|ˆžMÇ4‘$‘ú-Ph"HÂ÷ç !dÑD ß^͘NLáÒZ¹çýÏ«ÓñŸ\ZƒðÖ3nr0H[·?.­A°õL3HB‘Áœí‡…_†MšÆÃIÆoC‹&RÎóM E¦k"õ«!X‹Ò?xÈ!°:Íc|ðîR¨*•¸acóVÖU N$ðü9ä•U_S~_©õû0PöõSÁ÷ªê+ã×!Ÿ,V „…ß'êÿâ‚i|È>͹;êÿâ‚iœpâÃ7éª'êÿ"„NœýMjíÐÿ‹B8qö7©°Cÿ/BÈ@ø&^ã„þ_„½ oÂõœÐÿ‹ò ¢¤÷ÿ?„‘á›po® „ž$½ •Äï«öOÿ°FНÏïË¥uÕçq+i¿œÔ›KÒ>x=¡ýá‚HŒÞ6!ä1+$‘þ7ÃdAžx’Y®Z}qI 4ñ$ß?7ØaÖKÛãÿreš¾ŽØ™Bkjß!D\Ÿ ¡ÙìîŽ~ï‚SUoŠîñ1–3tº^¿xÝPôãI«i¿}´V OZMÿûV¨K%¸HÿðC…I ôÍ^þeBœå„ç4m¥‰¡Ö&º˜»’ˆ*×súïQÝŒJB/Ùîú ȸK%ôí¾Œ574ýwˆ îßc]wÕC«l$§ÿus*µôÀÈVS¿â$yøàý¤v!(õ›ñqR;„^óç§‘Ô! )NÐ\ú÷ï_ IXß>÷Oç ”ü &!-|U-«ªžigZµ®]ëI&‡ãNBA¦‰Ûé2D§ÖJÑ]u¸JW~ˆ$¡žÜ~ɶ¤ƒXI"èŸVâ7ðM†zEt$gŠx$| ^‰÷·(PŠb7…o2\1¢# 'y¸kÌÚ‡ “k´…¯Z,’h_$"§N­k'‰ l|ðbœÄ+Ý9)<>_«ïªï±ÿ;©)Ún KðÙŸö{JdD—Ö&¬D®°MÃâ×éI®NW²Ú:I,º-ɲ¯™Èúœ?ùˆW~.ùp 1b¦ÅtÊýãÖfj²>ÌB~Ÿ©ÃþH×^—3ßßÊ/©ùGÄ­3Ô)•P'ÛÍCÊ;\Ï|k¾£šg>½ ­SkÞÿ|«Có̧W¡s¦°jùV‡æ™O/Qëjó£Ã·:4Ï|z§m «žouhžùô=®6«–oõáz>\šþûÑå[ äO7—fVÝSþóU~¸4/!«Ž–?ؼ_Õÿ¾¿/÷CÞKO4H¯ß§p&Žªœáà÷㬅|ÑD®?v)±>Ô­$”†vìVCCþÓ´OÃÃaISÕ']”JàÚå‹Ðªqb•Èk ×½…_ÆéÉ­8RULDiüÞ¥Ä*!ö¬’È¿ïÂW…–æÜþã›äZŵTJ\枨(Ž•Bvóç¿)Ð ³’0*j•èw«ÇïZ=SŒëçZò‘sƒ=±Vˆ¢M~â05WÈð›ö²*{Vu¶4Q' ¤ùO7QªÓ{“¨…ú$vÓzŠjü>±$ÿéº>x9±$ ×í+í×O@Éð£pݾœŒýw¨UŽ©(ñ~ð~bQ®`ŒùüK$ÆUÐwU"öU?­âuŽW8®ß¬´Sö‰p%:a¢/nBXz-’y“| ·ÏXà Kûbzüþ/5ìÍõV!riKÕÂCøZôuJ¥…Nþ;8UK¬¦Åou8©Y¦|é„y:Q¡ˆºäàO»TqÀ­×Q™Æ‰e¨ÊúŠØé+94Uªú$]õ¾wh¦÷ß·i ªÌÞUñ¦Õ¸ký)sø §Ó®ý§U ê¤àêsy}]ë64bHþ}ê—]•ÿjLø³Ý°ðH]« U=Å0Þ7Î 5œòûàcã@*+ï§ý}A´†k¹&¶—W*Áß q“é‰rj× q-Çu¼´ƒ»ªÞô?ž})¼œO­+µ½²*€ôÖ\½"¶â=+?_ëúïøÆßC÷ 5œÂÑ{p×Rè«NÓ×§þøhm(4Ä:)õŸ…ç®éþf|ûÒ¾ÿ¿õÜu…~YanÂHèGšú5cVT˜$á—hMÀ˜¦IX5cVT˜$á—XMÀ˜¦Ixü5cVT˜$áû[ÿeE…y€$üüÔŒ9éÈÚeã»´1*®ÏEü|AÒK³Du¹‰Ïã,VÁ•Ä,Q]n‚ôx§‚\â+‰Y¢ºÜ„æñNy0V³DuQ$˜)¬¿öIb–¨.Š3…õ×>IÌÕE‘`¦°þÚ'‰Y¢º(ÌÖ_û$1KTE‚™ÂúiŸ$f‰ê¢H0Sø÷Ý>IÌÕE‘`¦°þÚ'‰YB·(ÌÖ_ÿ$1ÛQ_î~J•®]äµþðON³Du¹¡‹ä#Ñ?IÌÕE‘`¦°þú'‰Y¢º(ÌÖ_ÿ$1KTE‚™ÂúëŸ$f Ý¢H0SXý“ÄlG}y?ø.åWõr}.býáž$f‰ê¢H0SX?ã“Ä,Q]n¦Kž©’k|%1KTE‚™ÂúŸ$f‰êRxIzGBò•Ä,Q] f ëo|’˜%ª‹"ÁLaýO³Du)Ä1þYã“Ä,Q] f ëg|’˜%ª‹"ÁLáço|’˜%ª‹"ÁLaýO³DuQ$˜)¬¿ç“Ä,Q] ÓÙ|žO³Du)L7¼Kšó•Ä,Q] f ëïù$1KT—BèÁLâžO³DuQ$˜)¬¿ç“Ä,Q] f ëïù$1KT—ÂL-óç“Ä,Q] f ëïù$1KTy"U{"Qa'1KTE‚™Âú{?IÌÕE‘`j¹­¿÷“Ä,Q[ f ëïý$1ÛQ_ê_IÊõ¥IX¿ï:¥\Äú{Û‰³™Hãƒ÷]úP*ÁE¬¿wœX0›‰ô~ðçÐÅ$ÂüË›—ól<‡i¦GðûuøEazfZÞ¤Õ»ùE&(Ò̯ñ{CtºœˆËx9Ô¤ÍiüC= ÓCDÅj""çnê‘é‚$? ›zdö† ‰º8k;ŽKkúýܬ”|“Á½Iw­@ïŽ(éݸj1 c;Ãi7h\a¥qÿvûŸ é÷SÙóðG<µ®@7Ë‹¶ß/*Û!ìyµúªÅMävy»? ö=ê Äžã¿]ËõËQýÁï­¶«¸SÙ³4~ýw§µí=Ïà÷.¨»iÚ´~±$îÚä¤ ¯‚ä¹ðJü WX™r³ÉY‰¿á +Inö'ê£*v7'õTþf'3»—¿»já®®úí|5M-Eª¨ `NÈ%¦0Õœõµ Üõ½OîZe;‹=+OÂ|C׌ŸˆìÎ Ÿ{m¼íMâþò,Rìôïø7sÙLY‘l%tÍ–öû8ÌL2¸vwX®iÞD“FBñ™= · ‰·ï ü²Ó²ñw—¢5vjµRö$€s—ZvZî»:…k'56aª¯üÞP Tùú#F…åß¶7iÚ?[7ü×U%¬ßÚ6.%°È >¤?òk×##‡\ˆ†ãó®Zý»‰1Ê‚¯ýŸìn”7 /'`$ËãÕÈróCôuš»ZþÃ†Ï 7NèSB›¶sÿ?„HÄ5lúþxZwja˜—‰ýàõiÍý*HÂãë}C¥¨ÃÏoÿdDKhØÄ þ¬9™¥ê¼HõN4+ ¬×÷‚$Ü?bQÖ³?pI¸Þu:ûHÂß/bQÖ³?P^N@X¯ï›Ì‰-æ6V@X/âƒ{ƒ v¯ÿÇï»ô¡TBãß8a½¾$‘ñ=' ¬×÷‚$Òÿ÷„õú¾É„ºqnH;ûwð˜[ÙXa½¾$áß7[3íìT ß_¶fÚÙh@SؒĆÀ ëõ½ ß¶fÚÙ@ÖÏÓO@جïá$n|œ€°YÄ ¯æ,ºÂ »Öÿú\müÝ¥¥ ÒæI8简°Yß+P}3Éfk¦Ÿý.=$¬?¶fúÙ }aý±5ÓÏþ—Ö òþfk¦Ÿý$aý±5ÓÇ7´+‹ü÷]*¦Aæ Âúck¦ŸM‚7'<ŸlÍŒµ?ÀúžÀ#Ï'[3cí°¾'&ÄðóG…6ëû'Ò›lTXa³¾°#½‰F…6ëû1Òów*¬€°Y߈‘ž¿Sa„Íú~@Œôüœ + lÖ÷b¤7Ù¨°Âf}? Fz~N…6ëû1Òós*¬€°Yß7Üyþž€°Y߃ÛÝÙV@جï–pÓ-¨°Âf}ß°YûýK…6ë{›ìÎä + lÖ÷Šy>…ÇÇÖÌsö:„ûÏÖÌsöD1ÞO@Ø¬ï ’Þò|°5óœýº¦Næù`kæÝûÄtÒÏ[3ïÞ¸é´þØšyïÕ5+ù__O#Ö÷|)[ž¶f Ñ+ú¯Næù¸ËqRÚëÿöÁë.í”J¨“¹ÿw;NJ{ý?>x?NF{}ÿ|ðqü;²Hg;½y}W¼+°œ•I;,Ñ>xÙ>#Ý‘tiwá«V§–G~þ]«&þ®ò!ÖŠ~kêwãNu¼|ì馈ëûþ8m$Ç,‚ô&ñøˆøíÔïž¿º–ñ›R ±ï½ ìñY¹‹évã÷Š„ëøÀÄ¿m¼lHšh”÷?Qs;µ$¨ïñ¹V]µ4É(øT.¼Ÿ¨»Ð ~œùï\«.hœ Äãƒ?»Gï »ðw_ºæ¤~ÕƒS•ž¨kJ®3Oÿ\­1H¹“z“;VÓXBïpW«­+ÁÀv®øæW0I`&÷?$,ãƒR èX©uøa¢(°ÒH#¿­TCOè®$}«^P!cÛ[W¤â£UJ«¼ïªüDOýwÕ÷­qã)Úƒ ɤ8ÿÏ7‰QFm¼Ú8áZ!‡„2NrÿЊ!Ä’ðøÇ‡¿büÒÆ¼”Äû3 u©jI´Ãä±VaÚH?ÌTžèCÍù…$±HìÞ:œ«ú$ª’°þhÕ¸4ÁL†éŠ-}ß«jIˆ®”‡Ôµ®]KÃSaãeãrqãMoºÐøàuCì”Èç²&Kóït(œ${Ç’ž¶êºÈø›6~HNrL» a²ë—ÕkT×¥š®Aš®è¹ë¥r¬ªÙz÷®Í=(öÃLv}¿&L•ÊL{á÷‡dcH.ÜJûi¼7‰ÇáXœ±&‹™ eó?ºI$‹µ‘Rþûžpp›i«ãC1‰ãáô«jJ )ñ âÊG6¬Œ@+ ó|3k2NL;Rçµ#€ c@ÂhÌ?8)ÑÍïA+x'à}0¬Ÿþ{;öWãåðƒ’l51Ú‰yCÜ«–˜:ˆáúmC„ÓAh‘íI A®W‡ì4…'1¹Þ‘pÉ!Hâ2þì 9£q’Èø®/ɒЧMÁó‰ÖiêWÞ~}ù1$8¯¬4ÌÙ¦V Dƒ„"qðÔj«ýÊ›ø1¾ZU¸z•RUâlÒfë–­uöo9Jý¾qHÆõß–Xj-þÝÞ¿ýâÏÞ‰Ú…üc'ö_?áSVH”Ûª•àýM¸ºÈfG;ùâ×.-”Jh§ÅÏ' ÊW ‡4$aýégE«q´y¼n¨ªÝúMûíºIÈÍô¦Hýþ‰vÃþmeN—IœƒÔ…øäì”yc7“èz<©3¿†³ÒÞŒÿLݟ̯á¬43%jùOê̯á¬4¿k¹Ž'u&ÙpVš™T8îÔÕë=$f’Q!µôèð:‰þè<±÷œº}ð¶ NU.âç£ôïüœù-œ–p~©•™6Sß_fÂ¥ý¶ãžÝùªÝý$ØI¶þX„$ªs|òä‡7…õÇ"$Qã“'?¼)¬?!‰êŸ<ùáMáñ±¾ITçøäá¢7òþ"RA¢:Ç'½áM0Âù­¨Îaºã¢çL®°¢:oŸ½ñÁû×Ý &<9-2ÿâÜ@/¥ ,òÛtv*,O¹ã“öÁ߯'Lw×Ïû#³!"™`¤ °Šëãî'¶M‡'º‰û‡}3Nj¡³Óˆ3]øÜå¤:;9#º'ùTXNj¡³“.™0\a9©…ÎÞ bïM*,'µÐÙ;.Ìž„Sa9©…ή8SøùÀ'­pÚ•¸a ?¸ËlO-èîŠC0…ŸÜ= Ñ+úG'Ød ÂròZ.LöÉ*>iUM)]S'½ÉÂiÇSËîLègáuC=PåMýôvœ¼–;¯Ëè§÷ãäµ|šx~¢ÜA¶§WÜ‘è„õƒ;ˆÀ¶OùÂ?¡ÃI¨8^,ým'-îªî´rRTç)Ï€ŒJ%8rÿÇ}œ¼ÒuEÏ­¼“±ö¾‡Þ€$Ü?Æ'¯tMÑm«óœg¬ÛÓ+C¼'¬ÍÄx>øØLŠ;$ÎmYÿpn˜ÕüAß»¡‹R YÂÌT‚Pqøæ?¼¿~m¦ÄXFtí_Uï_QÁ–vó'*„õ+ÒP£T‚FÜ?X‘›Za#:¯ó|¿`EÚÒÞ¶}ýýà}C‡¤`ÎÁ¿U!öûÍt¸OU㷔蛰¸$>ýòSߪA !Œdh9ÉCG ‡u€ýãá$ߺ÷(¬R*Á‘û÷~ éßë#?o=„…­•þÁÛ.•Vø>±Éøö€Ò4×ÏøÆÆ_J%d?1?$ öP3ˆ Ю‹·Ö»ûòü‡ÿaþ†I|Í¡sñkL­™DûÑnöY¬<Íâ]vø !<ÔP#sd¸~Ù8Ô ÍO/ð×x=®)ž ÒÔõg¼×”M}¼ïÒ‡R Å\1IŽiöaE4"!ߊ¹rg|Ï‚>¿O¯»ûÚ°qG‰nša¯Æ†n§·Ê?ZY‹î×”fÓ‚²oý¶!´ödQ^óæÉ>yU¥×šÂZw­¾–ò¼CXÔ-üY¸¡++óÝþ³«ݩ߼(t-ã@%‹úl |[Ôø¯úäEcj]«–æØŠË=…ß,nðôÊû¼.Zé#Šù7VûÖúå[÷’×C+“wxfæ«ú$,çú}ŽÊIƯc9¯«'^y®êŠVÙõKêY9¥ÖíZ]‹*Ÿäl«ÁÛáÿ}|ðå£þ dq‘ò~êý8IJ#àxÒÿqœbÙÄEòô† Ë) –ýA\$ϼ©°œbÙÄE2½ Ë) –ýA\$ûÐPa9IJ?ˆ‹”ñcù¸úfT ÿȱ|Ä) –ý‡1÷ËGœbÙÄEòΖS@,÷ä¨y ~œ¶åÿùàãËìDz hxæÍ¹† }­õ¥Ö–8lËÿup,.¥×ôïÙæyÎ]N‡žÿÁïCÊy>õ™ƒbÊ?ÌüXîgEœ“‡}¨œÿRñ±¿ý×è?RÕÙ.V…– ¸,ã’üü2¾qø”Jp¦Ÿ_¦Ï0„¯ZË) ¤€U>Hü²_ˆ7ø“Ù–©í¾@ùà÷1õg¿P–™)üè±ò(¿½ßØ€$üè9|Öµ÷;„oÃgÝ{¿qIøÑzû×ÞϦ ¢ Ö'³;V¦ôìŠþ<…ºÙ€Ìö ›‚Lÿ×ÌŸåǶ׳_¨éÿÜu*Øß~±œkæ~ðëk”ǨnÜ3{*R¯õjf?–Y*l{þ2”·˜Ç[©šÒN©Äpûí?Fw͇ñU!¥ŒïýTÒVÁõ‹eºôâ®m¥þQKBú×ãf´«ú¤‹R Ž<~ZÅŸ‹](n}ATã×1¥Çè-CÏÁï !(÷ ®²íõ¿m´oœÉ ®cÊïË]hɆl7Rw­’öñfë^þ¥´§”þámæl%«BO«8²á­Öó\ûú@zœÓ‰öÁß]Kÿ•’»-ÆÝªn—Þ”x«õûùàW …¯¤Œè~ÈSëÚµÚ:É–õ4x‘ oµÕþç‚ZSHÝÎæ°jÕÔ2Ô9Éãwƒ5CS€þúð8ä!òµêîÄo?øAè¤rý|v­¦Ý?Då4H-:ñ|ðë(<¸"XOáûC­{ßZî÷oáe—J¥ÿ—ùð¹á†vOlYN­ºjéÖ(¯xuúñUk?¤˜Oòè~tñfT .<'qÁŸ·4ý²à÷ï溈®ªàÀ§/†¨õ[øws;ÅU6$<Ùd/“=Mz´õ_½ æ3bNòìßV¶•}ÀF³.o˜ƒ²ØrÜó#¬l;F5AÛ=¢ÕeT=3yl¤5<Û誙:+…ÐçÅôÿÃTÁ›~þçͦ±2Ð-ð‘xí [5´)1§"§î½qÝ{zÁ*¬¦o›Mµ¸ìFŒ×÷s¦ßnpõ©¸ê.aÝú‚Ûl‘óZÛ¥˜˜Þ£l¶²EëÒ »„1ˆœ#/o"þ ×4bªÉ2 c¡ø›_;bÕ¡üÿ%¬¿Cñ'@1>œÅ‰ ª”®´ÏOê—„êOÿ¤’>xM¨þ•1;i­³ão „w†÷¼9Ñò^êg·Aëb= µÂú·6ö¾ë./žçª˜½Ñ‹Zv0 3ƒž§·Ë“oL`+ö“-Z‚$üòŸØO¶h ’ðMŸØO¶h ’ðMŸØO¶h ’°’Æ'ö“-Z‚$üOì'[´Í_Œ÷–ûøÄ~²YK„•4ú7”,^‚$|“ÇØ­êÇø“YÛo˜ÈVì¨e Ãöñƒ{ƒ lÅöÛ/Ú—äwcQ Ú×&áÏ¿"öþ·1L?`AŒäqý{ã´Ê üeÛ?v4[ŒÉv€mÅJ`o?Æ4›IX ìÈǘ¶Í>÷¶ý`gZÆ´ã›{p¢,àÊþô@ßDê?«TÜ+ÿ’üs þ&‹ºs«“”°‚û&à…îF^'8oòG9ø•,êI…žè:Éø½K««6ù«´+Ÿ9'@¿wõ$aýɬ¨S*¡Nd|zÓœ´ìÉ>>xߥ¥ꉹ7:·¤‘î Ö ”‘‡ÜA¯“*Ý1°I¾ñw\©ª“ÆãOÅ2¦ïxØ÷?Q²§ÖËÏU%šñûdLw¼kŸ”( ÿɘîxׂ¦ð2ð?ÓïZÄõ/vÆtÇ»$qÿdLw¼ëF¨›2¦;Þ5øiÿ“1Ýñ®I¤þ'cºã] ’àþý'cºã] ’°þ¾ÓïZ„õ÷͘îxׂ$ú¿ÈÞÓïZÄ0þɘžx×D†ßø'czâ] Ÿ"í2¦'Þµ½O‘úŸŒé‰w­ðð5ñPÿ“1=ñ®_æŠæVü'cz¸1 ô^_Ïàþ“1}Çþ?øµK ¥j$÷‡ÔS‰’Ú û›ûCê©DÉm†ððoî3ÈDÉ^´™òÅÛ‰’½h3$õ+Áû‰’™ YćgðTXQ²3q!²tf2Ç#— ÖD®Æ õöûÔþÁ[2Ÿ&*>xßy´TÙN=ȾkÑë{__Ãñ†lªŽ•ïô¢ÿÎjü5NU2£®ÌÁåß'vV`‰wCd›7oêo­xÁÙæÍ›ú@+^°¤'rf+WX´âK¤7¿„o­xÁçÍ/á@+^°¸Ê9ó•+¬Zñ‚ÅiîÍCø  /XœæœùÊV­xÁâ4÷æ—þ  /XœæœþÅV­ØºðŒ{ó¦ùÐÚ^²_üÞ¥•R ))o2Ü{ß¶4CÖfŽøÎÆ ¦”DSX˜1â;3˜rÐLaý=ýøÎÆ ¦lEõ5‹” Ëw6f0¥4šÂúÃßÙ˜Á^¾9ve§ÂòL)ª3‡»ÂòL)¦°~ð¨Œïì6ƒ½ü>¾³ÛÌ…ÕÆý‡×1úq€Ákãÿq€Å ö`•ðr—sa–ƒÕ&ýïÇwv›Éž>¶ol¡4¶¨¸ª.»_®ªlMU)™ª3Ÿ{,Ëø·»~mœZÇ‚G×~¦:ó¹Ï „Vuÿ5§xm§Â2þí®×^¶q®n3\ûàõkÃŒö^ßön,ˆé° 'T8Æ;Ìl/ÓaÓ‰¨ˆZÄ3¸·AŒ ËîwtÔZn¹Û–¶ñv´ÅÍAÌé¿|î¢åǦlN¿-ß¶°F è×{ÙTX´|ÛÂÀ[‚Jc<;Ü|ÙÂI4ã-PliHÂ÷ÿê‡vLâýàÇ̆­éƒX÷ó½Œk†TK‚‹<Æß_”JÐÏ·¼–­.¹ûƒŸRlqËêÖO…º›ÖrÒ¿ÏÔº]K¥ZNz») ÞÛÖ×$Ò~;¾µÛŒ7Œï–ïë6²½6­FNéK龈oâ½my…þi9ú£»¾ Ø*¶UOß|Aþ‘b1„Kí³æýa5d’p ‚¤GAn÷(h«êÅvZνwUšëËjæ™ÈjÐPÃéN©k¶ƒR«n[ V·÷ƒ÷à_WÙ± rç‚©µMg×øàÏ6ƒi8µ|Ú—mÜlõòG: –TµAM™Ä–qm_¿lüwÚ÷UÏлñöŸZ@Q"úu…²*(ÊŒõç;á±,Æ«ò(W%KÞ×?Ôt^²UUÂús­îZ*•ÐQ^¢nЖ¸€$ü#çZƯ5ô(ùஊVÔÿÖN}×:·†ÿ¢DߟvJ©º¬ŽÝ|ØÏU]‹û0>xu©®*¡ßW^"®°›f»QNeʼڪ»}©£aû}ðáRÕ’`|þH¹Bz­Ò)Š­¦Æß]¿|­² ÷X»m©©Ê•JðëkÆÅ ú°Ý´ð{Y]}Õj| ¿?bœ¥@bÄ´Ø?õÓj§U z’úmãÕõIXÿnµn3¬†ËvßÂGðØ7sÒ²jž‘§?yîýþR«º‰žÄ»–q„@¬3 ¿6®Ah:ø@ˆKûë‚@íâGÂ/1¿/׺]«’]Ù´u¦ñºñN«Û*[?xs­ªDÛõa%ñ¼j?~Sö'H­žZÊ–QÉ–±ñgá¬?ôþPÊØWé¥þsAÕR©„\ýeHùq’›ÖH˜n>õÿñË´Š÷„Rër­ªl悦ðžb¼ Õçñ¥çQf*ë‚@õaÎ7'f§~Û8µtÄLmÕo»*=ÕpaUÙj|j ? ¦ÿæ¼/ývÓ”>ýƒ¿çªwNz3âZÆ¥ fН‡spW-Ô’P"ÐL\ër­¦çGŽ‚—…3H¦“êŸðq®åÒ*;*úå&Kqn¤îªÔјeÝP#mWm†Öóáñ¯V©PÉ®AüþRƒŒÄÏS3ãš?3t}©^¤h0¸~:,7~u·¿/X£•$Â-ñL­ËµªóšÍ{áeãÍÏUJçÓ~.H­J¶ô×k¬×)m«”ðâDKïi¿o<¬‰Å¯`OìÓ 39²YC~ üЧêHUÝðNƒL‡$F¨ çZnÿŒÿÖu„^¿$ü¦zlá…<ïÕþoã©Úþû&´þ\«lÂÉð›æàmãg|×§ý¶«þ>/©èÿC³ôú¯½k%ý³È·9áãþ·j-šæZ êÃ÷z;’Z‡«ÉúNÉ{×JŒ ¦q¢é^7õñÚA÷НŠO‚ |©_N(þo¯}ðºK‰H#àÝx;¡øOOÄ0ÞO(~ÇÓ$áß^p Åïxz‚$|àÒ$¿ãé š"úÅœ‘PüŽ—'HÂÏA±ŠÇÛ»?ø•ÒÄÛ+@¾?D5T)•à$ë›H¢ðy“P„Ÿ_l"‰ÂçMBAÖ6‘Dáó&¡ ë¯ô…Ï›„‚$¬?è,‰ÂçMBAÖ_yN>o š"ïÌi‰ÂçMBAÖ–´Dáó&¡ ë‡=ûDáó&¡ ?¿lç' ŸwIXQ…oo"¶^wi§TÜúȾ7 IXµ¾7 IXu¾7 IXõ94|o šÂþÊì*.¾7 IXíwhøÞ$$aýµëÐð½I(HÂúk÷¡á{'M„õÓÊ¡áïMÄöÁë.í”J€[˜²µ¸7áÆïßýÁ—Ÿæó|ð±¡wí„ñû3»‰wáÚZ<„uÎÜøgÿŒŸžÛ·þ=k}ýVT©¶SØÓ±~y—fëͯFAÖ/ïÒl½ùý(ˆí*ãå¿ûowvºB_I¥m —%]bAú×Nfi›ÃM‘ç£÷“YÚæpAéÿ8™¥m$‘þ?'³´mÞ‚$Òÿ÷d–Þæòëàì»Ôµ$´œ0» ûù Pas¸ ßßqŸ¶ ’ðïk” b›ËÛ¯»Ôµ$P‚õ7Ú1¢Û\,Hì-ëoôcD·9X„õ7Æ1¢osòûÁŸ/çï}\UÂú'@µ ®•M|[¾åÛUZ7‰_jÚ‡˜óå4ÍéißþÚ÷ö·®@¾?vÕ.ñw†ø@ø×ë‡w»jÇ },Ïç…·¯?µý¡ùz§ô}Ž?õC©'ù÷÷ü×›I§' cåÕ/| ˆ_©ÿn¦t/˼‰óžúèOú½q‘õ&ÌûQmñøIXG«V]’°þ>Zm”Jp’õcòºôkÕõÞþãJ®Mb…ÏoI¿j…z(•à$ß7dlýâÊüûàQ½K4ÅþÐq:_º¤ôMîéí.Úé§ÖÂïí* »¬û¤æªœôqZÏúaÅÛL‡ BBÏ7ü†ÞMwh@Íx]$“¼Ûæ?Žé}[²‰‡ue8úD‡þ,œ JÜDjK|ÌÙ„Wâ!£V ¹zo®°øÛÜ}¡¿ë· îm©.Ûf>¨]> ëö2QûÒ×µk©Ì <ÿ¬ohëXºm¤–~súHj-¨S*¡ëßÕ—nÿ5’WC}÷±rýw_¿øÑx·¶Âà|í/V­«ŽTÔ¨`vÂÎu)”zhí?Ôv-ùþ1+]wxäª_=>mÌ:ssÃZH'¹š^ÿìu%~phÅúóøïà…ý{¢°)è×~4ï@m#2›ã±m<ñÚV·HÂO¥}¹{´)rŸ ÙÉuýÇxB½‘ê‡Õþk(QÞàdUÑ­Ò>kUp”7q²ä$»ñËЊòVÎþ€:¶¢Õ^vi£TBh~ôìkwïPeHG~´ñJ‡‡WŒ£Þw)ãÓ X?D?Çâ¼»izâGϵƮE×ú7N(|âÝ—Oûç‚R¼r]¿»¾ký\«k'°k;ñà÷é°>ºvu¦ñ²ñ¶£¬Y ¼JÕçÚ!+_¢ðWò”`øþÖ~²ø%%)ÁHûãdñK(þê|éßs²ø%ufÿÈ@”,~ Å_IJðøù KA²øeéO<ç+¢ÂÎâ·Cõ—~ïÒJ©X¿Àï´~J;¥´äß„€ðÏ®€ÂÇ4绡ÖàŸ]E–™ÂúÃêŸþÙPøœæ|7TØü³+  ™P‡ÕüçM±ðUõ¡–Ľ–ö«BÿÇ[ÁŸÏ†©Wý©Ÿö÷†Á»š&©Œ“ÆRaïµfÕOR'¥ÖÞk …¤27ñ¬©°÷ZÃx˜,w^òo9¾â!±yæÎKþ­ÇWüH$‹dÂüöúÝÛ!½ÿî}CÏæŸ´E‚iLÝ/û²¿‹UÒÖ¥É<ã̲ÔÚ¾âPK$žÞ7D¯^3Iª9á›°²!ôCý×ø³pÜAðùÀ±ƒý¡ÿ´JפžTöRËøM©$ˆnüúô ’Å"I¿Ž \›I“öËfº4s.V}ߟÅzY½îfbˆ}qÚw…±»¦‘¼¹~7¾H R ÙÂLJÿaþ¸3ÏR!žOqf›ˆ±­ï‹ ‡:b’„“ÎRa‘8®Mݸ?ø) QèA:ò­cCo±2Ì(´¿ð²IϦNtNú— â¿?öý.|Õ’Á™®Ñ¾Wµ©ÕR«ÐIw¦l¡f(è® ùÖÜéÕ¡~@Â8ø» !WøŠÌ;ÅÃï§|<ä75þDñIaU,HOñ¯ ù”þ¯ý—uQ©%áñ»Â êÛ¹w ëÏmÝae(hnSzŠƒ§C›…óQPëK 1uãùà§jÄo·üYxE\‹©áõÓâjjÊ\ÖùW€×Ó´¡Iˆ¢:íú«UC®ªïWi/úw­kÕúàð¬·zW|¦/Éã{Uô§;­pSøþ¸V]µôK+ž_¤­šRS7BBqÿöµøé5úÇE蟟W»ê¡‹ÔEBYøõ_uÖõ}X_ ¾*e½É‰Z³_øüéñGÊ?"׺R‹•Ë!g._ ^ù~°b¹ãÌäÿú0DC3?äÁŸé.Ú.gÙ.gØÄ‡KÀ8â+PJ>î8»ôîø'šI|ÝI_ûœ;‘¦´ã)‚‹8Ž#ÚDËKŸ';ŽV;Ž ’ðM€‰E¾ ûœâ¢Žc«‰0± á«ë³]ç•IÑâXÚ·Ïiýàe—6J%püôM€$…w<>?š.v m{Wsm ]ÎLøû÷d×èlø±I´ö7çJúÖrÞÛ]ÔÊIï†dÁ;¡T]»†”Jh9ÎÆŠ?;‰vü´c¨„œUó¹ÄÂv¢½?Áå§zùqÂÂv¢½?©*?Õ|Ž1‡°§hïOªâ§ê;‰9„=C{R?UßIÌ!ìDÚû“ªr‘Í7 s{Šöþ¤ª\do¿Füm‰$á;Íš$>Ÿ±DU\lƒ³&‰Ïg,Q§pû¬Iâós“"ùµšék’ø|nKUýàe—6J%À}X“Äç3–(yÔ¼ŸÏ˜›Œÿ|ÿŸ~|>·¥êùàc—¾”J¨'?ßÖ$ñ‰Œ%Š-ÄúóýgMŸÈXšØ=¬?ßÖ$ñ‰Ü–ªûƒm‰bw±þü|ØòKô6‰ª8 ͶO¤Ã2$Dv¨òD_HUödÉŒ¶B•'ú‡œ¤[çpâ•'ƒ á ;Ty¢/(&WSà­æ[TØñÊ‚A·¦°þáü'^yB0(ðVs-*ìxå‰Ã þÍáý©p‚–;Dƒs5çТ‚hUƒ, â5^N¼ó¡o®u‚z;ƒ áÓv¨ïf3r“Çñ—Ûï(•Ð à,SëwˆrHw¤‡/<ÑŒkY‰äE­…_”J êÃoJ<ñDo¨ì™;7¯sr€¯ âÿ ßM…Oü¤Oÿàå“}µºCH´oPð¾/ îûã ß¿íÚÖÃ×øp­U€þƧÿÝÞ3Ø'¥s¤ ß,ñ@·K%ôñKˆDéËÈks¤ ëçþ#¯Í‘@Ãçnû®Í‘‚$èŸïÏ},½˜+†+¬RWÐGðÒî¶?$ý^FâmÎì¼},½˜+ésjýÜz(•Ð ý‘ 2ù2osæk<µRʺ ‰âÏyËGž“bêvM¢ã•þØé“%HÌKð†“EV9±{¾ðÛÐÊ\îé󓃕ô¿l¬³ûšpµ+º3!˜_½.§Y"õÛÆÞÿ„L¢ÖŽM`¦—ŸÔ}},n¯íl{v"‘Ú׋AŸIøÇfë6öaLÔISø=Ãfkì€1KbVT0©Öñíp­ã6‹m­{ÚϹv¦ÅN®‚‚<5¢HuÏø–‰rÛæŽü;­ ZÉ‘l;;ø1Æ!žØ~^û.;\ 4mÍh= b1ö†ΨŒ•N¥åØîúÙv÷Ž»ô¾ ì¸ö³í®çÈKj-ž^¶ÍŸ~ gØqígÛªz£½?;®ýl»SU/«×ã‡ÇÕ϶;Uõ¿~ÙvígÛªó¿Ž•ï ‹§—msÅ_ŸÂ¯8(\ãl»Sõ’°þàq½íÞ©zKøþÃ3å˸cï|áìÓºÔµ$ª„õǶì8{ïàMÂúcGvœmwªv ëû7ζ;U‡„õÇ­gÛª(ÁúãÖ³íNU)!ŸˆÞO/Ûæ °ÞZ>ܺçl»SUãÏwŒ[÷ìm÷AUi"ŸnÝS¾Œ;6Àέû_Wב ; C׿Oc“¹ÿÅÆ/HP³¡«yˆdŒQ@’€|Zv ÷_¢õÉG'ùNÙ÷—ÌmÌE‚IŸÂ²a'g±6¶½ƒ·c'g‰5qˆ­» ÂN.%Þz4óºÌi‰´Iõèçu™3…ÙlZ†O¹ôñ¦^¡æ>—5-¬æf\Ý>ŸZÜØ”ÄþÒµJjÄð$ª$ö!ÝN‰$Fs_xM³VïEã£õ\Ê1(l€[û/1}Oh2 e«ZZkH›·dÇœzšÈùže ³5u4œ#wK9µäÌo ;(}6D.%ÎUÂèù+.Ñ+ Kð¯^-‘>&…[þßûþæzÖúX˜MÙI÷§Mm=·°œåÄ[ŠÐù/“yá=!NX›_Ÿ¹àDµH…õû« ªa*xdïp«þ%®÷eÄe‰tâ?÷-§n‰³¬!Ê¡«ñú ‚¡Œ‡DÚ7þòÚbJ¿‘°}ˆÝ°5YDp‹È ßA¸Á×¼4DMõ»!“r’†ð‘8¨^JÄË…ÏÄkvíaIá+ÇÇ\äa:³ÿ+©X5ºƒ­É"·úDK/%ö¬®öEÊ®sü‰êAT ßò¾ç{—ÄÔu½Ù? ¯kâíî:Ünîú{öo{hßW©¥5`?0* ¶.|®ù+¡¶x¯Ì˜&­ºZ½j}­Vèü~K­-á%µ íÐ_«:¿ï’8ßT35ýÂkB˜ U2Smqë1© “Ãí÷Ä1uS~G‚„ºçÂO¯B-bUȼðeª*µGaÉ ß†:¿šüHêû$*á¤"ŽñkÿW…©'¡Ú£Ÿú¯Y+&ar¤šQSÁ ‡Õ"1¸Âkl.¼ÎNhèG-tOÈÑõÔèø·@¡À©WýëVö¸k¤ðFÊM”ƒÐ&]¥i†ªtR%nRBÿ>ó#ª7•5Ô¸PíCµ•©^CÖÂ,+²‘lUZ˜•ô-µÕ:½ú¹¤=º†“~¥g]¿¿Âgöv%,wîr.§ÆÏßôû®ºóèÀ“ޏGÕ¥Y™Ùt½ð7!ô„Þp©›qÿ®ƒuã©wñ—ñš8©pY{jâ-ñÊ(ì/ÕûËÕ ¡eú¥£·©º!j´¤£—­«V\KëpUÒ·ÓQSíeú|jã\W±ž¬QúÈ/15fÞ_FôêÖèq¦Ôÿq2x8ûô¡Ç³FŽGÓ—%…¯ÐÃÅhÝV˜yDî«Åq‹¸<:×ì„&AT _vÆÁN7ŽO­¦ÂÖ z(Äù^×ÐEPƒ@3Eéø›Gwè9¡ËGo+‰û¬¿Ìˆ‰ðÑJT#ìdxÒÕ§EÆ!¿óÓH!HøÂvSMÿÕô‘õÆn/„@/¿/¥Ç•ü*y×1r_åvD Ÿ¸W­˜0Á+¨3‚8®õ™þTH¨#L9é甩ª Žàç® QÉ…÷€¾§R$šQuA½ò²9Nêußø4„8 Eâþ­lõÞá åK´jXaô ¹HP“¸:µ¥ú=t@ø¥ùáZÑÒ`ÒâÕ’ÀD f¤õv V¥W s8¬ÃA"é{P ×íy$š:AÝKkýù?Î_|@ºHÿ\ø4Ô¨ÓP×5u¢š†`GÜùVÁŽxÞµ’Š» nìw£xVâªËÙ0²“>AÊó¯·¾PŒ…ºLê4$TÍ¿P¢ÅŮԉõ o™+*$øW§Z–‹]¡óz©½x„s±+tZ…Ú‹Wø<»R'¶/|Ý·³¤“*Ônxü;/nQR¬½zm§ä;wRGB‰Ú[qõTbÆÅ;)!Â˹x—:Ëvá'WTH ½Õ©™J̸x—:Ëqá'WTH Â­š¿wMf>šuá3s‡ ¾±qÒýÍß»Ž&SSÏBczýðY=ñ$<µëà|VÖdæ£á$«ÿ$Hu¤‡…Yëƒe¥nä¿ÔZ±8޳òÐd5Êü)Ø×óá6-|0 Q`EªãÑœ:¡&Y4 ÂϹuRTYçË0ÄùC3^Ñ‹aÄ‚B¯!i9AœPã"¬šºúœµxÜÚ ïV’:£&©ž*­§ìç^šPâ_¢UÇc¼ýÜK ‰†VÛñs/M( $zjŒCi?÷R‡B¢§VÇíìšR@ÿ†ü JjH¹H «×‰ªÕð“<ÚK'ÊBÝJR犉¦ž×‘ÒÏ}k‚hêyÓJr‘ðùR EÕj¸ÈOMªIkfô¤býšZ.¾£ZåÅ ‡‰¦¶õ„&s‘@Aû^œÖʦ’’…öÑTâùZ¿E%•\ø¥³8µZĥ䢋÷tŒ&•¡—¹Hð$Å‹“85aRçÖoüUn£À¹QÍÁ{ 2qgXˆBg©øà6ª9¨Ë¼&„\ª1`Ì]f <¨©^“,ª&*ä"á/­OUØX!s‘p$-çϪÁm%"´‡c{}pB‰³†\$‰ÛßGu¨ù„D™s}ô‡ƒšÊ‰Dýã„ ªÌE‚žèùêYXõ˜Sß.¼F®fªk~~&|0 :)5„æòL=4±ðˆ2äÇ*h1 Û×®Ê¹Ž§Æ©„Dóà ×åCàí¦ç·r´­èöÒ{p--æ²W;©ùÓÒbý¼ØÄþ±§Ú臗!Åy±i²ëè¤O³ jÒ ð›ýÂ[ææ"Aÿ|j š£¼Â5 !ÑüÍ€|{kB¢õ5òí-v ô©b¤Û[‹í³žŸ€t{ çÔI|t·ð ÖÐ8·Š´#àΗ˜þr÷’·³Ú…×ÌœêÅ·u¹{ñí+ønÿ=ŸÕ»ß¾‚÷>¼­qܽøö¼ õáýkÍãîÅ·¯ëàë¸{ñí*á~~kw/y;ë©KŸ-TÃÙâ—èùRÆ;=ºU !ÑüR×!ˆ Ì”ŸÏ®çΖ5Äðˆ÷%Ú?v;w¶¬!†G¼>|jÚýÜÙ²†qƾDó»Ç¹³e 1B„õáóÁžçΖ5ă<«O}{;[ÖÃÙÝ—x~ö¹³e 1âxuÅ<AÜÙ²†qƾ¤ Ï-«B¬+f™âÎVjo¼fng.L’du,w¶¬!F°/YÂû¹³e 1Î-kˆáLªË»“âΖ5ÄCVï_¨”ãΖ5ÄCEø>w¶¬!²ÅÐü½Ï¹³e 1¯˜BHw¶¬fô²¡S/ âÎVjo¼Þ«¬!îÞ2—ÿNBH†ðžø 5¬t¹-q“ÒóO]L¡™‰©Žòx :usçê\|bÉ,×™,¿¡ÔFèv~(SêÃI¤9Ë:SÇM ¤´~ºGJ‚#K¢À‡±‹¯)fjÖå×"³„(ƒ-²òcxN­êàN&ù ¤fݯªƒ;™D/¡N­,u­7¾¢š„ZZR!{kh_R!Ñú$ Â\$˜))„U—•»ÌEB…-õ«šŸ½: e«^‡*©GÍœJÚªÙ¨¤e.ÿ¥BïMÕí¥Ë%¤ö=È‘T§kÔïRuû^ø4äAp¸ne«œZ0ÝS—•UaöŠW $q¶¥úcè*äö9–ó'Õ6>Œ‰—]¸ÖíÂkæ²Wè'̲GaM­ñä‡×;1e¹R-×P(Ò¾f±“š„9?ZÕŸ?Zkib¥ÄpÏïKLßÏÒg.É£•~ÚªGú|^‚2Ì™K;Iõ|K¾:ÌÅv£•®ÛWñÂrÓêäB¢‡  ·H‘ûoàžà—¼ÂßÀˆfY‰—ÌeO:!$š¾uÂA_G¼Iâ„ã­4pϤH4HQ5Q! 'ÑýϦ-çKxá'ƒhù¦>NAoÖïöw☉Æ7y°’ƒ‹”Pý—è!ŠêÔÒ¼#nyW óŸZÛGõ²ý…_š?QQ! ‘Áf¯àôŽàÞÎ&Ä’ÂG@uýÈù½S‘@ÛQ‰MÈ- _uÊ¡ß#¬¾ê_Ù“­Bè$×?©šEÜìzWÐb×å]/Eèí³C¹‰Z,>?ÒuIDZç&}Kˆÿb¤Tfè$vÉÔÑi)=“*(rPõ êÄѹ‚t…ÝßÓé{ÖŸ ÖŠP[©ý…ŠJ8EøÑ_8+NhüŠø¯AE§ïŒq>=?‹!F9a<“­“¤©Š©èe„žû÷výínšD¶„±®¿'þF×ø -k¤Ìˆþ瀤˜(GÎ+|ÅÉÑ3¤Šc [òãý>:›ûbè§ërFµ°Yí«:U"ÒÒeì$¶.G>°<¯@éb¹èSú-öXj¿g՜®óYµ ñÑ”()IÉ”â¤Á} ›ÿOðäÐÆwæªV$hN’–="nH";$‘Ý’Æ[°]Ý¿Ѭ0Hé%ƃ 2Ým=Ù>«ærc¢7A­¾†~¨#ÆPvâêg’ §ËøHŸF½Ã—ð‘2ØjTÈômWA¿c&ösá?*ËÙËÁ÷(q¯–È·oÁ¾ h"ÑøEõŠ ¹ÿ¬œ‡‚ŠD…oê :¡/yÝ~»õ”ÓÓ,:ñžÐ´œÞzª‘¸©(Âß ]ý‘þOáÆ™užZ-ÇφC‚ªZ¥8WèT¨Sì¯JvÒƒ'Æp`Bþ ´=†üPä– zƒ g28ò6‹w…Ù*ñJéÑÞ?ʈ%¼g_Oÿ}…°»,s}ÙP¤3Õ#/Rœµ‡¾¤ YqE¯®(´†*Ùy;±æ=?^¦é*4òN" Õšºì÷#d‡ï§NÏÏôñ¼¤Q—¤Jâ¦f™•[’9šªÎ$pQÓí¢Æqú#~âQ¿;AéǬùGB)Óê3u!˪‹q…7|EKlÇ{rû;r‡Æ‘hþHpUÍñí WÿX¨žöÏ‚-L؉ÁE¦ERsUâý…í°½€™ A™‰ƒÑ&à «ðN§Ôô&½d;y5q,<. ¸U:ô3qRᬘϿ*ùVð×ärüK*ÑçH½Rÿ.;Z‰[!®EÂ_Ü)¤ cÚ¬¶çÂË1¦M™,’ÆG™Ÿr»H;ü(åú¤ÌÏJ¬Xº\³Æ¯ ›z§·×µÜþ™š•ïO=ï©<áùï _iXù’·ß%NnœØ^Kf¡ â¬ÁlZ#Uÿ8ÖÚŽ89Þ¹ÀóÕ'òÐì\ôzþí÷­×«ÙYRxË\þ;£Ï;T˜ ðz?¼¾ü.  Òó/ªTx¿ð8é ®—LœÆÕ`MZ¥î ²ždâÚ…¿§¯ù~³¦NÍ0“Ð{2ÑÆkâè ÷÷®ýëà"½øsV"¼'Î k¡k%…Ä/qþU6hI>è++¾²C—¦4eþKoÝ u®…ðîíÒIzé­Û©€àÃú5~¾ÖJœ¿!Ý6¶£ü?ô£ç 2F ü?ô£)Ib¢ïu"ÖJœ/™“e¦mËj×Ñ^Kq4f ’’Øu9aÂ1t:OýÙ¦1ò9éýV‹ª ê Îðæ Z~×ŠË ¸Û1¹èñ['ªT¸ñ (ùw*ì‚â²ï{Õ|‚´ëF°ðxÜèõcášÕ•£nyjÑüI²²5we-ý•óÃI‰…WDnªŒüÃf[§~P1·2胢3FYâUP¥uA…BÔxPñß™‹Àô=qBèi{Eÿ[!!¯NÕž«ŠM?¬D…z”Œ¡{%>®étb®>s&ô&‘”x¹)'±'Õ¾Þàg}¿î©F2®®óÕÓû÷GM·ÀIÅñAÓ¡xßw…•ƒä¯ÍIP×zR­¬_û‹†‹U/ãëšÐpªÔÔ²™:~ŸOüÅ…¬UÁB¬Ÿz´-Ö˜ˆ­P(ËÜJßû …ŽSy¥‹ª-ýŠ+¬Ùþ£B§ý–øi#ýßÿ*<½~ð/ÆÍÔ>= ½{êMáþSý«ðò_`óS/Ïúa­€µVm + Œ#û3&.ªÐl²,$K—-]ÊLÕEÿíÂKB”ßc8jn&n*0$ƒõ¿}KÿR Ó¯>¢®°þ¨Øœ¸·Uõ,®¥Í®¬_¤5õ Î]Ù4ž÷'YÝT„šú‡Žýe‡…—Ä©©PÿIuµÊ%uô•æZIèôïêjå"eûÃxK|dÕ ‘¥ÎÕ¡ÁA¢¥yãOê.4y„ó?³­–Mƒ!ÄI‘Y^O’ªªzÐ÷8¼ºÑ¬V…£§øô»Á Gÿqö$>) °ˆ÷pèKâ„й/ú¬•»ÞdÞdÉ o‚P+’o¤­›¾'>™ûoÀ¬{Ø{›+tÓÈý(I‡ÌáÜVËNG<ŸÔáñLa=uðø™óã‡è±æó¯A/þÊTO¬?­T­© /iýõ‹>©ŸÊˆ•êç¯UÝ fëCó+ªTÔè%7>÷«š>9s‰¶ò%Ù©ø«§þƒ+UJÀzÑï[õHÕ”õ;¼¬ICG5¤¥{)§kµ:Hï‡ðPHE¯‘téFæÖÈùŽÜl‚zJR ïY×iºIët a]’•LC]ë®Ëº**Œ°õó%ަ—pA™ ,׿’ô RžÚIPa.Òwá¯pª®¤«Bäòƒ—„˜»¤Õ‚&+ð Â©…üÅÃâ7Þ ¹it’ª× jAõ²ìi>~šŽÈÞ_âþ®ÕP¸½ó— )ì¨#.…ÚÝaÕʦ÷iŸ §¼íÔuòz‚žG§ zMõR×ÇUx=B2¢ïOD[¯! McšÞsT˜Z©öÜ¿ø³R!È÷‘Õ††bð@ÉógÈbC@ ¿BMÌxhÐI¸a”©'dù3•Ejk%Šž¿¨ž ‚íùÁKâ€xàewêºðjª‡VKjóÆ›!F)ª_ÏWTÍT†8H·?ç$`¤4’ |&NèÉNÖ _ ‘”óÓ„ïÄ9>tG“K>óƒ‹`¸jHQòofýûÈ‘°ýt‚T*TÔHˆ+Çß]«H².TL°—„XµÞ/çÂ#ÎxšäŸìßU!æGkw Ïl¸ýž…ð|'Å—&Aµ¶”ªRÒ÷^øL¼qé¸ð•¹¢á;s),òYtzd­56ÍŠ‰‹êIÑ zÒ)äSû¢º¼7J’é!'éjSƒž°~x¼ŠÇµ†~H!ÑCVƒÙu 9ç…KÈi!%ô‰Ï„vB¤×$Põ‘òQ 1ùÑ'<^ ¸µð]1b€µ†8r¦|°z^}„I„³+ÆQÙÏÃI²ÔÒ" ø¾ˆMðý*\©"-Bg¸þ&(„ Ì›Þè3e†]B‘RMþâÔm QHýëYáΦÑS†G¡'é ù#ŽŠ÷ë ÇŒVyRà™ÿÑ› †T’µÒ#Q'Eõ¿…(ã‹¡ÂéžK’™T%¨Ž¤F’mªµ.é¦ëo—üÅBÕ¯ÏÁ<ò&;$)+ñ "ôd'g­|ÿ°þLåПZ_“Â-ƨ^"R /ÌE‚_¯+Ž™ÀJ†oŠƒ—Ä1 Xäêÿœœ?÷%¡•ôP¢¾Zi"­9ôé’ _¤UPH—4ð Oq·œ™Ÿ™®®jÿ*,ñØþi«GÓ›’þ¢a³V*I…¿”±ëßÏO×$i!.")+¬/{ý­ÿ:¹ðé±€Íbn…õbAw :¾§ ß?ósìÏe?ý*ŒÌCIJÓòÀ§•Ä©Ä5Õm¿Î¯óÖÔØ =s·ôÇ¡î¢_—%9õׄ¦"÷Mû욊ipr"¸ŒÐe$NT‘ñÜúu†u™×T…Nœ:óWxM¼[‰ßÉ_2Ô~FèCÐ<ͤ‘ù$„„èVýÇœ|§%øºð™¹àÈÓð í'ÒêÛ«f#KøNœ]çóÓ ¦×ÒRFä`1 “:ø{‘‡xg!áLj¼zÉxPÓAãB’±àí†Öƒ>jjzÃ:~ëNKTXƒ¦Ûqð‘8¹³¥vá3!š{SÜÅõgªT’„ºk;I[Ø·‰Pÿæi&ŒÌÓ=l¶¯öW´ŠÓýKM‰ûÏ g#”™2y.RäæMV"¼%N!Å­èX_Þƒ ç—‚ajáôŽˆ§þ™8%€Ýø *â¼3!žÄøÖ¨—ïä«A=Õ³pQ=¦‚îßõ¡ ‰sj¹4'K ¯‰cø&Võé›!“BøhþEÕrT‹_6Cˆ¼íIˆú³ABM¤H4ÿ¢š†^¾éé¹ðP!)½¤Ž™àKÌ×M<Ù]k%’†D‹\ToRuB_¢ï+| !ŽÂ@ ñSÿi’TŒ„Ž›Ÿ¨š©è»˜^Š[ÓøTa‹Q7AH4¿j«E'4Ò}æÇ}ÉYõô;p’Ö\Že\K?ß0A/Õʈ—ˆöWT‡øýò»”¹R³}=_C—$=èO…”D7’Rœ.¼'>-ާÓc©¢BuÉ>2ý¿ÓVËNìØJ¿ð¹ÒÔ”‹~®­é½öÏñS¡Òý¥dHM Krÿ^B Ô/M‡êzsC×M—™Í¤’KÛuî´Þ?Ý—ëÓðsæÝ._’yB’ê]oIº)ÝÞS‡d„üVâÖùª#i¥Ì†ùÀ‘h$óHb»e–1RN«ë)iMé' îÁÒSR˜is!èNÜTl„Ußô-qþËŽ­‹¾%)”/v’ÃÑN-ª.ª-苾ùtP…=eš”^¾,)|NÆBÂÎ'¥§ÑQ D€à“%®Z UubË‹zP=‚¢ Déé]+8¼CWM_ïÆaØ>V%*Œ^Y0».¼'‚Û_ø0¢4Hzû‹OCˆØ2ÖåKÜ¿8¨*™>ó­ùa…jµ¦ù=¸Új)8&)/~´¿K’ì\UÍžøùˆ dÆ•‘ËëøÒ}iM@┇ÒÕçÿô¯©8÷ü»Â×ôÄéo½J¦å¶²W¬ÿ¡ör ï qþVÜD‘tôê!¼zÕpègâ;ñ¼©޼D3ã:NÔŸ­¾¼ÄB¼Ó®Z94|ñáAû3©ž *Lð¹ìLÈŽ¹ÖÓµ#w[Ovâ÷:CöE¹R,P£`9UýýŒúÜ™ø;Wò&….V”˜®'¯û0#néºSLRd¬³4ÒKšÑ›—œTëø]„QW>éç\ìÊþßÚÏÏ̹:O¥x~‹fƒ,9õÝS_RcPx»<¨~ô(…·Ç£®a„´ …ÃÕ"¸ æb883ZQŽNBГí›~¥Î‚±“ëÂwP±%êAêE/ÒãÓ"Óü‹ê1Uãq§…‚ˆ Ÿl•8^"Z·D[¡B=HÕp.¼b¨5hÓõ÷ÄñjOAH4¿ª°ÝSG§û¥™>§ÎŠ@Ï…çü)wþª¨âY †Û¤G:¸HK4­ž Õ“T_>† µ#R1Í ¯†àñiÐß[꟨ª©àÑiÀsû—h|ª°æÐj¨¨‰?ièÙ[¨°Àx$ýöMó^?V‡‘ û×þ‡«Âìº'¸¨žæo1é^b蚤ÊBÂKҳ̛}K|¤vîI^ôÕT…*ŠNÓsáÃ<^ xÄÍ1Q SÁހǻÑx§"*Ñ*_~y’ÐIJ ªÐ›z°k’Ý!CV±C/ªçh­G{Äs¹Â' —j«zã¡”ÚRjA}„„·TÆQm÷¤vÎíS;·¬¢{ü|­É ‡, ÝaQPìM*¶^–üKªz>ã;µ{§ASÍPŒùýS«O6Mkšžýgרý˜ýôO¤-ž´èEUwJRðÍ맸®’ý„h|êPtΜ ~‰Ö—úúæ !$ú~iÀ1+Ö>RñUT¨ç„<1SdGºëßç¥ñ•ö2H]k±bññª´þѹðCˆ‘hjDð†âr±×ÔŠÞuåʼn™ŠEã-3F’²%Šã©D<šHø1p6:V÷’”…¬}\©4~ÝÉH="›ã·’“Ö)~ømç²é"I¹ÊRIºÀIÀËó€—ç¡ØlYWj—ÕÕG ë'S‰‡Cré^ou#qêüZ­ZLM ŽÖøô+6]´Ô4†:L¾á³®Tü­Ô¹¹ÿ33²~¬ÿJŸA‘»"·hQ6ToH8j&\•$ ~4yÒĉ5"•sAEþ‚Ïÿm‰›€PúÅ:™ªDýÕ2̺kAН¾‚!U *[øKŠðñÓ+má1ûKÜÿ™x œêŽèÿÌ1—U£ÚUE •—&ò®Kë³zQ=¿úGŽô^N‡RqIug^:Ó½7A‰ªÁ?YÉéÜž¹\šÏÕþ8ZQ)ù^¸AÉ¿CÕSÿÇN®€Xö…;×úò­D3Ì}á¤$SCw\‘ûD®zJK —=drB‘,ÑŸ¥ÓïU_)įäÊœ[ó%È·šâúz^M¿05¶áçÕ&7 ï?óÂßÜp¸+b~qHÿŧ!m˜4ÇЮhªi*¸xU¡þî¿ Š‘`’pˆD¼–ÑýÙ  •èÿµE‡L ßò1S¢U¬4ÛV°ìÀg@4xÙÿ÷ïPMf AOq’W0î°µXÆ7cãrü’e¨®Ó4#ƪêg­‚Ø4§¶^xI=Åù!C²ýÓ!B û*z_TÕb—(G%Þ u}_÷E?ç w’êßvC vîþµ¿ÿ5HGìTI¿ç£ÃpJ½èO­%H' Õc*D4R£ÀKâ)´*$…šÛz !‹û¯{ôÅP§À†›¸¾¦jç©äú3>×üõÿ­µUsýͤÙ}.BœšµÈe?e#Gwv²I !âzu0Ôjøý8’WÑø8Iª_ÄQ+Y 쩉×Ä{¼š~“/¼å[;ƒ^\•©ò%–‘͉ꅇ‘M‹pªü=¿‹`Øêî(‡œdŠ@¹l·ð‰ùýëú÷mðV=×Ö5A\š©þv2hÐTmßóJ èÜâ\¶/Ó¨îú«q[1~ ކî׿uÝ¿cKÔóê-«.ýH[¢7yuö¯G…º‰[òþ-Oõ Ö팸ÛhuÅúõýgÄî¼+žDáMÜ·nM w £oR'vTí¡³Ð鿨ú=¿Àû“‹3ÕÕµ~r‡O]<ŽIëçï—ôÊýœÊŽêú¯'i¿†>º¹ÂíB¡F?ºze,k½yRK[îZÝ—×GË:Uõxn½¥5„=O•Ô6ZØCyN¡yW¥rBsÑI>z1L—Êq°óK^xK½æð©9Û?UO‘î)ƒWÚ:e­1ªyNý,©JÆÕ¿‰˜:³ÓÿET²¯ê„³bq­m iÉpXš ŽzäLñ’:õ2}ŒYI5+cnµ‹¾—®– ¾ºÿq*D‚ôÁöbªj]©u¡d'´‰¨Âú£+æN$…L(wSáÚEO…êÌŒ™jÒ'Ú§‘–´>&˜Q >‚T­–Ö.|‡ÂuIz:+!NªF¸çYÔI׺Lî‰ÒJòM=jZë2I£þój–t%Š‹ %ªŽ^j¿ºÔII¡þñod¯ê5ˆÇl)uÉjzi|˜êŸ§W€Ú¿s¤òÊ1¿–ƒêGáªNnÅnu¯•ûþ+ÐÔ–Bw/Æ9 ërÕuúp-G(ªÈýW!xÛðißc¬«çø› a ìQØ6õš…ôü©õ4¬Cœ0âÝÚK×Ëåº]õÈŒn*jõŠYÊU[ÿ ¤¢!¬PˆST„*$‘ìZ]|òˆÀšVv†C§ ¦V‘³º/ü½u™x7¼óo¹ã—ÑE§%pô©a 5hjíKþuSJMÞ¤Ö-”©aœª „×÷¯Û·Âš:êçŸ÷%@lr)dN\ÊMýâÛÔ‰ø›BlŽ´KH݃ôIùwèçÆÑ°f­•SƒdŠ´¤BÓUšg˜Ù5Ä‘pÿp_A£“Ý üúÝÞmúWœd7t±ÛTýH½‘¼>ÏXSR^%Oª7&!äÿÑ#pWMªš’ôuêW«˜ ²8xtYMÝTõ{«5?[ÿþ¥~Ô¤¯H‘û½ºøë O«ƒ 2Íqƒoöd¤}]x\ ÙqJúqFe<…øIUB é'B‚[!±]ÜJœ«/Tð¸Ý²¤Ø R¯Ê÷þãÃÜùjû뉿‚Á"¸œéáß„À_áQ?=ê0^ŽŸ?:ÓCÒYHxM¹uËmüéTü`&G½ñл¢“Ÿ¨z@xtºŠJ.|æÐ0lg£Ž _9þ×ãÚÄ=—AʰkEöý+z–U‡VT=1ñ7!æb¤µŸöO‡a§CPÞ/ÑóU ëAkQÉ…“ƒ,œޝ^õWã쿞¯4žn«fÓìé¾ð™‰ý AyÑÈ…/Cðr:ÅíÐïÄßÄÙ=V˜½F”³_¢ñ³-õ*ÆP_Ca¹}h’†¢Ì‚Áé ³%µ¸ý‘øB­)¿D}é`‚áŒÍJþ ™ Ç}„ŃÓô[xå_„݃Ï\7ÖAE¨âžmA”‘²Ô>…u®õͪñ u]"`«¤ÑtPõŸþ3v_¸Vä"©ÿ¸‹/qÿz*ÌE¡¦Nôߦ—&sòw&¬E.o¤cÿÀ"a'FBËÐäq*X<¿¤ŽM‹`òƹ$¶ªÐ£RÿÃÊ}%Ù?¶¥§–óPQìú©Ìõ0±¯ýðxbê#·)w "J»·};÷&¨HXÿ¼ð‘¹ì:©Ûåzê_ÙÀ ±&-xnC¤“0¸«ÚpD ¼3Éø?ýÕÆWm#ìcv ÿöBxlèðs°ÌÔmaC¥3„2–x'Ô¹5rq>¦îløè)‚šýgÞdIá=!ä.ŽdŸþ ©~üë STCTqdADáþ¯À½¨úšŸh¨”¥w^|•:aÿ7„N×f R£&Í8CW‡ñ†¼kü>nÊd’Ê\DI;Åêï€)îѬîœkÍ%“¥Y™§Î…õ\…œ¿Rž•Ì3—9tN‚^U8îG3¥!È“@gT(8Ò£Uîã\pOQw”{TfyïEö²¸»Y}ùÉ¿’yÍæLã`[ØRB8¬fÑ)¼ê #ÑX^‰¶7éÙ Dáóª0 #K¥ü®¨‘…È~›Yi’ 'TГzõd^M ‡§§J'!ˆé;¬š0ý#ú %H…O§jÿVÀIUáŠRÝÝþuÕ¥Ü#­Ät”‡¬’lJu¥UQn—üYRïÅkÄQ¬ã´fˆi€p?UQÝÔ·UcžNõêGLíéZ— b¦ø¡¤ „»¡…SÐàÉ€AÆ-¨¸%„(è9‚S½‚]Ë1>¸BŸÿÔÚƒô…4F‚LSUQ͇ýûÆ7í$׺WÈEÂ’®$.ñ ¡/‘ ÄcyoA -_‘[æ"AûâA(”9âË`.œ›)¥Œ¥\øÉµ ¯ÉLK¹Á‘q„Ð%¡*A¡o™;˜‹„tá=q²çé)¡<âÈ0$hhܲHp$?G%·ïñ­À©Á€Œ‡þá,£yGVÍ©cOõüX¡ Î ¢xtµu‰?8>î?û*hñǤú[RÍlq»§’‘…B#áÈûüõ¬µ'ÔSERÕšìóÐ…«¥¤Ð€ì-‡VNÓý@Åì±ùbî:*ˆª^³rލ$„¢×[G΢š”LÔ8¾‹àÈ{,´(b † ½ a¦d!Dãhš§a¯¬žô®µþr.óÂËÍï¸ÿ+™á*I¡ÉHzç6å¿JçTŸš ^C(AöcªÐ©°åøžk|óˆr<>ÐE•ˆQ¿‘+¿YG2sfÅP‰žÊÌÆumCvÞUå|«ßµ¦ó®Cz:Ô,J¡Ñ¼ú¤-%GCÎÁf’ÖÌ)¾áÂpK‡tÚƒY8<>„§PI’â=éÃ×™–ÉMœªö•–ò¢•¼oÕÒ Vû¼:+^‚3ëN¥<C*êôE¶±’#)ª¿%4˜‹¤Š¾ êpÙÔi0€¼À‘4Ñ„s‘hÖ9VAì5›f#šUŽº°}¶„¼òï¢bn§ß!Ä:NRйì0{ÅöyàX0Ûg#˜¿Â^£'º¡¾44Bè$¸Š„jBüÒÝàì óÐô(}W¡Nô¹Š»>2£‹t,¶$6¹S¹Q+º.{ L0 »®µ¬^»ÕN7“‹Ú >‘!½Ëªñ@æ}’Iƒ›»f¢ÞPÄÜŽÚÝ!æÒ=Òâ¥ZµÖ±CêU/îPS…ÔµžÐ ÆÕ¸ëø%š?lS(Ô! ï•/îUÏÌÝÌEB\ïj]Â;åá Ù¾¸W¾uHÑ;½A1V¹c™, {]2-nS°ðåÑ(‹„%+!$šlS†s‘ ±ÑŒ•¼#–IgԔŽ*ð¦Ü΀'‹»7¤À{Bì:;ÉâoàA…YYì;©·VTCTÈE‚ù—=‹+¬ &‘»Nà[¹d§Ë«Å Ç8´ÄÎå¨ÙuÔ)“(7ÞÁ\vFeapóÄKæ² §³;;ð èY5Û7Þç¿.w…À»ðÎX.Æñ$dò— 2—¤ƒ’é5ŒÏè¿eƒ ú$)¿é§¨Ðê—lüÚžŸl¼Få·žt ]ÕVôŠUú7í—Z  qôG¬ñƒ—Ä1Éü BÆãs_E5‹œø—Ô oaëÀ…Ïi¿×¦j‚Æâû?ËEŸµìú‹DgQ Aɔłú©•­rh‰ö?R G­¯ üRû¬0z5qª›°q;ø›]㿘 lB¶ÓXa3‡;/\T€æÈF´ˆª  cŽ€à‡>k%„£5¢rú‘8¨p¾GTð±üþ«ÂO ±þàh¬›Ww[=ýY$ó¦_I…šÀ (BzTسUv’=Ù›àê?yê')G‚£=$”ÃJçVåbÔ_‚SA“©‚ \+r‘`JÌèºêÕ?@HÜ¿‘Ы®ú5 B˜?¼š8šOÛcy¬oLbmCsü%íÂwæ"o¿‡^ ZÃÁ¿Âl³,¡†Ë- ÷VEƒ‰—ÌhIÊúõ| ÔÞ(0d!ü9xKhˆ>–÷—€x£Àa¤cùl¿ß0År­‹µ"aû¿*ì"E.Ý=øÔ›†¶—áþ¯€Àf`“.†Ä;n°uÜ…ë¼ZøûdF R5Ò…¿Â;ïÚ!`9 $CxÔy±Æ!™&ˆT ©ùy›ðλz›—Ïßyá]PÇ5½Ž»vwé!8©"WU‰¬$P¡ÎkvˆU‰Ç¿u^žCÀr@HŠð-¨ã^ç59„áNœåbþði€_ÂiG‡ Ù ¼ó‚{B¢ù+EPç½:Ä¢„Dã+UPçå:Ä „d o‚:ïÕ! 5 $š¿Òu\¾ë4PA@òƒåvØk ÄÊžp.xð™ÐçÓ¢ï ƒkï°×è´×@ÀòƒïÌ%)Æï—½2¸9ð>댯f-þf.I1~ìôŽpÆhêK…ð çwDÈ:xUnÇIÜa&ëMß1*%!¤|ô}Tçó·Œã`}ˆFˆÚ~³Bä‚ ~mã+pˆIàápy(Ñúd]îfö%ç&Â54f`}ƒ¿½÷ m Œ.,â_6gE¤M¤ÎϾDÏOTETÈEÂ’” ºBNý²_:tó–i¿„›-VO0“½mÜ!ìÜe]ø¼CÁ $S8ÑŠÞpÎÒ9“lÉ#Ý q8DS´åž]O,[ºzáoúRÙòp"üÑ—>\®¤›LŒôÆë #h ˆx¸A —)‘ !Æ#Õ“&QMÐØü\ÙWÈ…A BÂ_Z ¢Çy’ráëtèx0I7"¢};ÁiÒ q{0YªZnDšŒ^û*wÂ*šÆ/á"8Ršn–¼¦¯‘‘Fú…·¼^òêRÉdhF{øÚºÔA3ÁÏ ¯g>gOwÜQñNæ[*†LŠNz§péõ¡³ÿGÏV‰³k••\µ–èºÆ§þ‰ê•çºB¹ip…îÕ|øh¹H}RP[OvýãŽÀ[Bü7Gâ/±ÇovðIJeª.h0–9B‹£’ Ÿ‚@…ãóIBTSTÈE‚—ÀχF¯‹ƒ§¢¶T‡´nüÍ\Þ×i„¨ÿ|VÂãf‘ï(̓/_JþRÿEUïKO¸tðž×“8&ëÂGB¼Y´}ó§KuEÜT„8~Öïþ­Àu_ˆ—‚Ðgo¢¤>|³È·‰ÖE¿“ŠSÃùÎ …ch8øon§®ÿjSƒ¡ñI‰S4Ur‘ð—éÛé0s‘ }iÕV¹§ƒ8øˆ Ó¥+ |~¾:ÆoçJò(¤«? |Öf.Bãg]:õçÑ’¨ÀKž¯‹OÕð€6ÍËgmA¬SÇ ÷ÎZœÚãÔ=.¼ÿ¸"Ø<Ú•  ­<5¾,ô—Çp{1ø9úúhJ*?{œÉ)lo'ÄZ‡Ï—Ï{ðW³rºÆâ#Ûw…’ÆBÙS5OÍÍš˜ j…9*T"F]åî<Ä}I~ºþäÑx]øˆþ¿Á¡sÏ€ûIžî—nËE*D×)¤¸Sß?Q g¯Ù5Œ¦U®ÐòѽP¾HÑŒÛzâTï“<»;®ç»|ª/BêûSmŸÚ¡é› T%Ÿï_Ÿºáfíàç|Þ|ô6¾…Ïû@ÏS9<´M7 ¨ÑH™¾}´ôq{$nÒsêäùòÙ zòÀ_­>‹³’«Ö}îÄ…ã"èYÿ+¨%4|´}èï OÀ?£"Py>Õü :#a'yH~®ñMç"ø–çO¬ ¢jâ¸C6»éË¡Ù4q½?bX†sá†{"Vxöïêpͪوַ¨^Suâ/Ó×3`æ"yôw[9 ¥x?—'|ê7½]çòOýH6 Ÿ ¾Ùª~ÊÈ$Ùˆ„ð ïWÒïÄÁýdI>äl5ohÄ%Vû§Õs! ¬öõ’’µQ.ùüáSe‡‘}/2ͧ?¯ôs qÖ¤AˆŠÐ8Mk‡tÄøÕÝ¢¦§  =3¹9S¦2Ž©{yk<ÕÛëß©uiýc‘J–\$\Dš]C Žžrh½_xI¼ÁfW8æqp‘b¸ìé áþðPç"c¢—LTÍbÏ—ÏwŒ †pknv.Bo²¢IõBâñ¯ìf‚W;p’ÎúOƒ„0œ©ƒžT‹ð¦…=Ÿ/©„c£Ÿª£Á `²ð/Öwäž}³ ‡ß /nÃ&ѳÖb¨½®æïôì„f¢ùW'ªšÆ¨`}ŒçïôŠ­b&èp—“È펗æ³×HÐî-‹MëwŠ ¶+qZ Þ´qƒ ûƒ¿ ¡§ãçý DY«©X}šã¢¯‰óV FÌ‹¾&)ÿEÇéwi§Þ áAôs6\ÉÈB˜)pð1pð™øV'*^·oR´**Ÿþ?|êšd<±‹¢^˜‹„¿´°BxFÀûUù¦ÀÆÁKæb|ôJÌ‹DYâ•ïÂL$?xK'ž¹xf“$˜µš #¡NœG¬}ã⺨ïrÿfâh܆ú¨•ûE v]TÂIÅ¡£‘¥” /ÆáÆ÷K´‘J8“ý_ãЫjRuVDÏG¾†^ž¾yDúOƒƒTHðü<~Q5SÁåXEÉ/ÑN¤ Õaæ~ýÃéZУ­vf-ñxü1tS½ñŸuá; ‡%Ùg>R'ļ™ôW­ *ä9ÈXˆ]1^Uô´zÌ®¿&NvÅq«ZУB7½' x&–¤Ùm•ìÄT¡/qû#!PÑC0ÍÄNx,¯ XÚœÉ}áKPCTFÃõ¤ß‰¿~à„%‰³Â'&YÏG˽'*¾dW³‚%ýW?l´™—Ù¦Ž‰¾ j4‡/dGèk×ã[BpÏðío/\&Ý*'N*B³¼ÿŸ¿ *°$-47.ôÅÛÜÿ™¹;žÝ„7~ÉPÖøU4÷ý몗¨ª:AK,=N=ú ¨U)Z?Ä»—  Zx9×\5!²h§ÐÒªHú’¸¥2ÝB"xL˜rŸTÕTp 1á7bŽé®uã MB(d|Ü¢!Êwà­b½Õ$0„Y«lš=ÑÔu"N&„æVµ¤)F†àMb‰Ü´o1•ðÂ\$ü¥UÅ ÉšYkkINâåGk+ùQ»ðš¹=\ LxH?x»EG”ÿ¨„¤24™‹äëÎô[]Ç‘:¥|h]ø¼µ®–_<¾ QÜAˆ’Ž×K+¥FÌ¥çGÜý=HªÔ,ÿ Wë/£®¢°‘~á—Ô&å#¬ÉxÍ\ÒK2Þ÷IܘºÂ¡÷Ò˜ª™Š¦5,$Ï­QaKùŠ $Z_íG¾Bùld!AdÝð æ0S~gEpD3––$NþC’’f6Ï!$ ‹sY?Љú×O­¤Ç†ÆOàÕ¸U¯Â01~rùoYÞ÷à&ÀW—oz§{2ÍŸ¨zˆ^x4ÆžÐ%v…ýhe-DPHôhk†üf„$ÁB˜è„|o"ë/]óO‚þ#¿€›ìiçÛ°$ûâJûb$´4Vÿd_¼Òþ·B¢ù§þJü͇LýGc!ßVÇiI<!Ñü…‘qC‰Ðö…Û\8ŒˆWàâoËe_¬\$Ôw­oÙ·´ ž¶ôM|+×FÂS¤H4~š†ÐˆSFÂ4â­þ&TeéKë^˜TTHøKó#ª’öÃÿª°ØQa¾DÏ7ŒŒÃˆxB¢õöÅaD¼!Ñ©$ì‹Ãˆ˜æ¨Ï…§}1¿tÔYÒŒ¿ËªØFÀ°iŸ0\ÿ­RÉy¦%q¹ð7s+s‘`üÞ_¨¿(K6ÃaDÜ.¼f®¨`üÞ_¨ªl†Ãˆx\xÏ\Q!ÙaÉ˲Äi3†¿ãÂgšó†¯éÝ¿/‰p‘rý‰+cÜò´–¥mã"”’—ÁÍm:ü¦%o¹ð“[™‹„¿4¿»\F¾2Òe,šâSé>P?¦±Þ.ûà°ßµ‘mU†dLû\-MÅ%\išÛÓHxEÕlð/D«´¿ý»ÊÚ ×½Æ­ccÈrRÑ4€xå­ï‡R‡*ƒÛǦ½VísÖH`3ÝaÕµIáåÇ`€’Õÿ7n[S ë§½•®°rמ«ýžø4î§æú£A+Á¹j¨Z¦/œÀÚT#ÄKŒK•j2w1 Û×üáêGãý^¡C€²/|EneרIvÂó³…÷ÆK8tP߃Óý±íð°ë€_¢õI +Aì;‰ö%¦aŒñIW»¤ŽváU¹á£B¢õ)çM5ÂÃÆ¸p熇I‰æ¿ ‹Ío56ØuŒdiýVCö°ÑØ5ö_ó[ ÙÃFcÓ„Öo;[e×ÙIÍŸœg¼r¨6ê…;7Ùõaÿ‰·ìúñú¡’Õ$ÒëÑM;á §p½±„wQEî7ˆÁõ¤KP8ÑxícxéOçÚ«¶^Ò­xµœ›˜¼j@à†¥—ø›Pµk ãÚ:¤-=]ÐF œ¤áPC¤HÔÿ‹jÙ+ÆàNçýWÏ٫Ŭüœ>.‡ô„®)´?óê9÷ºÑ‘kâîÿÿ¼^ך?^XïIÅï?’{n‚ý¯txåýWoRµŸ¿O*ûªtc¥Fž ¯†H ç…S¡†‚ªš A &âÌ!š+¬Ç!!$êŸÛº¼nÈ5ð.‚ÈÝÌE¢GË[çvÓa‡ƒ}EŸ~•/_Ý^)E¿bˆy—Ïþ+fz¨þ&„?6\F(öù0Ü\”S*,©JzµàИ˜¾ ¯Ìcs¦ï !÷µÿ‹áó¥k®Á£'nýMÅ-|fK˜ÄZ®öWVý„“ÚÐÖ¨ ³ixõ›ðå7Àm©þa×ðõö%Uø+È®=°µñ¸šxIˆ1º\wÀgGàAÅVѵFú.¼%Î'!$z~ª°’ë ~d£þž¤Ç+Å+ú™T#©ÚåäÅÿÒ¡Å;ŽW–üs­áëcºj5²ë‹È}2—ãÃ"’A‹ Cˆ >”(é¯ 9+?Ö— LULƒŽ‰x_¢ñ«Âb¯p¢4jÅí÷ğ˵ÇÁGf¬$EK¸1®yø±W8aúÍö%’^9Þ ß—C’ðJQÂõFºùPnxÅh‡^ÏqÈ‘î.ÔÕõ„“îDû פ?5äõ7åOý-¡‘~I Lç}á‹Ã®%n2ˆ¡ó¾Û!GKÿÆgfì$eýz~”Ea“ë „ß ·W y­°WŠ—RãÀ/12B%L„*˜ °eŸ$­„hü´µ/ Ë’*àKô~RÖ-$KFЀ©( " dY4óæ…÷„(kr¹pSaý &˜¿ß¢¦‚ÿȉðS6¢Âq^X*=¦ë߷à ʪM¯õC1˜ Â\$è„øK„¯Œ”e× /Ç—Eʪۅ×ÌíÌE‚Nˆ?eÙ”eKÖ%Cú,3Zð‡¿ o–ÐxPUR!a$¯GxIN5f#{DžL]á+hðEïò]ïßM8;Ñîk2¦É7ZÑ÷Ì Ô¯-š‚:‚ˆMŸŒýÝÄ h±ö¦®Á2ˆ›Š^JXuÌÊ„ PaÂj%}Z!Ø” ¤AM+…þ³Z ÿï±"¸Í©@Ô䡉ª˜ þ6æ¦0®ZKÞÁp[U#=©žs …%YÞyÏ-ÆDëCW=ª ømå?YHx»/˜è‡ï ïyäÜÌ8· DÝ-èajõÏ4ÅŸa€ßž _)ý£=O?¸©8ë%§F8©„šIÿ\¤šÐ|¾óÂKÌšfêz¾Âëï-šs ÁekVr-BÑ÷Ÿ®µ\dÅíÄ_ã6~ú?’t›T/™¾‡&à¨yK›‰ÖëΩ-1?í=¸H ©`'“RÅTOÎêŒ[Ô'è£æZs¦}˂ŅWçž«¾O`¼Å} ]:8Lu¢gîÌæX‰.ð%9Ô4»[•„8u؉÷PÕë\k`.ÖʼWôÛ…ò*¡ rï.ô •R¼ë–F\ð^ÐÔñ†r[ÞM`%ú´ñÆ|ò*ÿIêºÞìðéÈÜî\êÉzdê`‚~.+èîñžuNŒ¼±@gLß8ð-=P‘æ=‡¯ë¨‰fí,_F„D«–cDcüF‰v5ÞØÞÎe^UHÜ¤ÇØ^ô-¯0Ô¼ ÀñkjUáÎ’äÊÎÊE­HØI=UèŠs‘ $šÕõsc7~î1TYüB¢G»ž¼Ðuõo½ ‘í¿åÂËuÙ úZAcIáy…` ÑO ¯¾ÑáZ›r'"^¹ÒR™ %´þÕͨžAß“”f©˜¤·^ôÓ ’jóƒºhÛëþgî~D?VKQÇY–xÝ| °!2˜ÖôWs¹4 ¦•sUý~ ¼@ŠW¨¥F쬃—ÌÅ 1“ˆí4gÓ«µkâ)çwÃÊÝ»2ŸªH© þꈪ‰j"´öäµ[Ô»Âf¨SŸñèMUØ¥#D}Æ«Š…×Ä QßE¥Ö{á-©Ðõ—ÝÝÞ-~µ9Ȭ$¾€wZ ’ºiä"aI׿oê /®_£F.þÒø9õ_ BBH4%æçh!¡ï;xI}áL-a»ðzÜêKËIÞŽ[}©êï[*šÔ‚áö>µ€ZšedÆJ*Ö¯¥S~„ƒ³^Ÿ _ñÆÔéŠ>O¯]?o  !B´cÑ ˜ qL¿z™‹„’á5¤:âHþR/üMˆ¹Ó’š®“dtH€„U˜^EÓ줡¨ª¨‹B6¿ªÐM# $Uºàé¶jvbBâþMC–?aÿ'–ø2D!”äKËÑýÛ))ê)*§jBÚo¤o)Dº¥Jx*`2­TÓ—Ä[âìŸæO¾)zÂpÚºðfü¹$djÆèk=Î,Sª¥heM,´Yèª*­~ W’7év׊\$ré%d]¢—è Iž}i`\n*Tÿ®3^0Ø?t ÇÔÔ’à= á#Œ\4JÂ1|êªj`n£ŠÍ üà=!äâÕdÄðxuU׈n€'`ìñ)ùˆñ™}Õ¨YRx¹H=k1õ=Êj„SU£'„mE¯HºÈI¾dUûû¢ö‡º¾yq‘'’jTÂÑI|Xh‰“Ò€?œ3Ñ`yßh£®Øã9!™;ð}Ü}Ôh/ŽýYxõû gc€*ÈÁ b âà3!ÔC¢xy5pS Â÷’¨¤ß‰c:À Ô4*9¸HK’V$ÂEõˆ ¹HðtĸB÷jÒ*±¿^‹½F¢’Â[fT‘Ö—n[¼¿*W "ù*iôóƒAÑ5Bû‹¨†¨*eˆ'~ð¥ÜŽçÛ)ŽE<òƒoåvÞ<˜<ÿ`ªÞpKPç}D_¸cxðWP§¸QÈË #jÌE‚F¼¿¬*¼Sœ9©DÁ— ñ–ÿÆ©†A@¼SÜ |Nõt¤‹TH°ÓùýX§jævBß¿b"]×Pý2Ó¹o|g.V5üÈßOâå_ÅtW<“>¼~U×›TèHMIÊŒ³V<:~‰ø)”ñ*ˆýÿ¿¨ª¨b|üeú~5½~z™~$^ÔµE§êsŸ?Cû–KÅ3=øRF¼eIý¤èÝþTñ¤*»¾¨¤Tû `nåHõ“ê¤ñWPÅ$VötQS(/³ ˆ\¶?r|Æ«ðÊ™â¥KÞ¬\bb@n>ìú,I/xºêy¦ö[¿Ú¿\ש/1N‰Ï„vB8êýqƒ "AÕ!oåVºò_¼ÅV‰sÿ@Ù€ s‘ð×þ ¯Œ­ÅûštÀ°u¾¡ºyÕ’öW8sm½ ˆ½Æ!——n_×ß„W„ ¨eÕxÒO¼+£Ñô÷5Mß„A¦o¼”I\¡ÞHr‘`’tƒ€xëœdê¿ð¹Ùžÿw j°k4rã¥ÍÀ?‚ÈL‚Î(K¼Ñ4ŽW5´mëü*BFrˆG>éåaëýA@ìŸ $šßÒ„·NW¼oÎûä%ñ Ì„Îw& ¾˜‹㓃×ÕUc”\ÞìL|)·Ñãk9Uã†\5§yi3pEAElc>_Þ7çÍrñ¬Ð5ªVûšoÌEÂ_šÕõªþNá zžxSn§+p^ªd(‹-%ãšÌEÂ_š_„:诡c$¼ÊÌEøTnãIŒñÎ në|Œ²†¸4iC ^ðÍ ¼ñ$Èû˜‹ëC’hPj97 –y33qç6È”Åa¼^™xQn£¤‹ñΩ“_^¿­ juè;]•.YÅ1Ô¹3F’òÔΰˆ†fŒŠÏŸ#ö‡ õW£ÆÖ½Ø­Ï6õWUoáËààP§ÕE&‡ŒGB†:7ô2 >r‚0Ô9ðÕb§&çßÄßÌe­Ø¿yÈ|’¡ÎwºrÅÍO@HÈß0J9}ÃB´Ô £û: a!S)·r“èã¢ïε«6I€:çùÓFˆÛßÈ"„#‘8›^FˆÛé+Á˜t¡—Bt:"§"dLߙ˪1Rž)t©A—:yŸŸžGȘðL¡/¹B¥ó>¿œŽ°i G—%÷ùåt„õs$zSF5d§#l:YRÑË!;„h¥ñR7/íËéÈ$„D;Ѱ{9±S‘uá3sÙ*tJ8IؽŒ—çêtaŽdþ¼ôIˆNGìTä=8ï{+—UCøpš¿®Hìy„Msš?^:D§#v*Ò.¼f.«æÐ0™ÐËqz±S‘qá=s's‘ ÿ2Z3\‘Ð󈊬 ŸÎµS6‘ÊÜ‚®DQÓ !œÂ-‡â¢—âô3—¤?­/t¦ƒât"§ Ü)ß·?ŽÍýƒ†²$§« C¬SKŒ¦©å÷É®<äYƒÐ´ŽãÏcsë a /t\¦+㬕C£uÔ#¼ýúò¬qðž¹²´CrÓ‡+zæ žÝk¸ý™C¤²¹²‰uî KkžÏĉ““ ›bd½ ™_„hþøÕO=ÄIB¢ùá§=mêqRSkâô¨• Õ¯=3o©Ó·Ûô=m45¼t®(WK^˜}‰Ì1è¶ùD¹Â%F@H45¼tΛBºîXuÉñà+r'©*!$ß¾ïOâþ# $Zz¼ÿ"¨0 Ñ3bÅuõrå%Fã%sY oZ޼äxßz*ÜÙ4Q4ÿªp˜Š—MxOFÞÚÜ–Í}Ò°¦œm•´ù‘u º[õüh]6;È¥õ‡ìDÆé«¡ÁN²'î¿êz³êN‰ú¯ Ó¦g¼61I¼ Õ}ì`B;:ûE=˜Dÿgªàg*Þß _‘ !»AÆ‚âNn;*î ZÙ4M :Í+Î^Á°ÖމؖÍ\eÿšÆ¯V+Î+Qžëoa.@{¨èÞ3cZûlz¿… Þzb)®©vÿ;ÓzøEÅÂvü=©ŒßT›'»kžµšS­‰úGu  ýãüh~ûÍ 'Û.üpÂLÈóŽ`wø_¶Jí7ôÜ]ï_?µæ"A'»æ_Ö`’ÁsTö´k}¨­jˆ.‰ÌB· Ÿæ´!ø[•ýïÚÿD5ƒ]l=힟SáHNü=8¯³[nN¹j$šJâꥳ6Ïœx¹tÖ⤫zj¼&Ôb'‡Ö/=÷ZÝmv¹²CóGù\»×b§™»˜‹ýš?Þi·ºÛœte'‡æžX¬î6']ÙSïßtÒbu·9éªNj}ÐS‹ÕÝf§«ú§ñSR:mqÚU=ÕþIžC{…þ±SóCvÂêp³Û•˜?y’Љ‹]®ìÄÔú"O"uùa·ç…ÌE¯T?:95~òVW'§½/|]:gqÒUðüì„^Xç“”ík~xœ·º:9íÂ’¦úÑ9ÏTÁV:LöJíksKÅÇ-ºO§`CÚ×N‰&™†=‚s‘ ¯&‰îÓ)ø tCÚ×yá#ss‘ >¤Ð½:RѲkÔºKõ¬­A¸”°™ñ)#KRÉšá¬N%Ž@e_2I¿ßÄÙ5v]óOÏéï`iá= Ÿhxäð©níÞ2— bh8䔢©å§Áá¬NE4µ/ÑúÝã„w°:á×¾DSKÏèï`u*¢¡-Ý~!A†w°:—a¾DSÏo‰Ã;XŠË0_ÂõËðáÞÁ:S܈ù’)ü=áRÝZ/¼d.[åø8ˆ-¼žðÖ™"Ú*:¿1²W„wHuë¸ðž¹“¹H0oô+Â;XgŠj_R…ÏÞ!Õ­ûÂWäò…À—W –®@°l†wHuë{pJ¢•ËV1¾Êþk~(žãÄh°â4ñrÅh:—)¾d ¯ ±jŽoK':DáN … ï'¼‚5¥¦oÂGBQ5nd¬"&‘‘µ"ü‚5¥º8A‚Œ¼`%)îq,ENcÙŒ¼`M).^,…¯'Á ¿ %*¢±-…§'A@ÊE‚IÐч‘Í#rC*YÛ…×yÁJRHÿ¾DS_Ú‰¼`%)¤KáíI‘¬$…ôïK´´Ë8‘¬)…ôo¹<Ã/H‰ j_¢ù+©­ÊE‚I螟}"7¤’õ=x}NÐ+IYm!ò[WÙYAúQ@.›ñ¬E ¶…@k ‘ݺNdéOMDî`.Ì6ÑÒ5?µŸ  ©~T¯¢úì¤EG#:ÑrІfM(¼ƒ}‰Ö—²WäiJß™+*$˜O9â-¤µ\ø›¹¢B‚IÐш6ïo!•¨íÂë™@JR¸¼ý­?žÊ) fBG#†R ©I>2WT_‚£SÑщáÏ3²A(Q_áV­ %#´‹"Ý'¯&´üÍK+{”˜RBÂ¥î—Öß³2 åSt‚–ªOé'áRwÁoî—hkíïöŽ¿¹_¢EÈS™ð£¸\©SÔ$[õyyï‹2µÈ­úLÇã"IÀ©eû˜Ýè‰+ÜØû\ò~ÉVÿöåSDŽ9èmÁ%î—è!Œ'ñÂ\$šdz†¶;;Ö(<®t±Aªôyr¼õ Ÿ¢Jýr›!g®DÛ>9Â-†üh Þ3—ôËôe™~$Ng[3¦…áXÃ'½ô¤E5íg£ð|Ê“èÒ“`…¼ÑN#ùÑ(w[Î¥÷/»Ô/{‡È“êÒ›$ª7]x°kè©Î§w…-ýtô oéQcÙœÿ~‰Æ?{B“¹HÐÿ­ùãòÓ!?…'Õ­‡<Ÿö ýã!tk§™·‹ùá(<ŽnÏÏÀ:ñ$…oF•“.ÆÂ;HúѨþ&t¢ÔpF’Ž=ÒEG#)ÍïEÕíG£êÆ.ãŒ\1Òï)“ÂxÏém_Î6` ù%îÄHˆ—…Ábw¬>é¬ËQ¿=nÀØñK´׺¼õËGå™ëÑC^¢tR×¶…óv»ý§G ÒCæíöôöŸn3^2“ÈϽè5~^l¿ül°þÎ’Â[æŽtFѯ|ÔÚÓÏ«V¡¨?Z]Úå‘$FŽºäeôváËTE7ÖÉ󖘟 }=µ~ì? NÕ°#Å=n^ëþf¯V6Ý/¼œù|\«ÿ›&xÃühšÄ~J¤qãüï\ѯ1«{¥ùã–#ê·Ç㜿g«~·_ÿTÂëi3ét3ôa8m&ÝB;†ÓdÝ«Äû/zCm`h”TP1+‚°¹NÖ¾]xÍÜÎ\$ä´õèxgÙ6×ÇðùÂ{fÌ$eýUø¸Í¡ÉWî?4UXJ›É®Üdôý AXJ^áÝÎe×9u­<ÇHÚ¬wåÖ£O ÂHÚ¬wåÖ#ù5 ÂHÚ¬wåþ£O ÂHÚ¬wåª×§ƒa$mÖ»rëÑ[G‚0’6àAKÑDFÒÉš¯ Ÿ™ËV1>ÌTÕ§…eÃHÚü5œ­}‰¦–F\6’NÖü=8¿úÊeÕßæ 4õ=FÒæ¯+?=[óGÓNI'kÞ.¼f.«æÐ`S¡]—eÃH:Yóqá=s's‘À¦A»ˆ‘t²æëÂçméLþÁƒ¾DK—_õ÷Ç™üsâ;sÙ*l>0íÑüñ«lûåä¯Ë…¿Ç>Ùü1" }‰Ö/M;mŸl&Á¾DóOÓÍ4R&ÿŒàAK~ÐD`ˆT:)Ñ! ¾9ùëyáãØ'›?nô³¡¯6ˆ}²ùc¸õúÍ/?ضO6 __¢ùã·ÚöÉf’]tè«N‚c¤Lþ¹ÑÙ†¾ê$0D*ŒOªéO‚°oNþº Ÿ¦ Óäd¢Y 'A[3™ A¬š“°Eßir2Ñ$ÅL0𑍠-æ"ÑüÑ]  `ü|\äë˜6=ôhèÎJI¥ú5µt¬¦Íâá±ìK4µô$ÈõFÈäŸ/™Û˜‹S#Ñ"ˆér²Ö7Þ2w0 ¦¦P´Ë²aºœ¬µp$Ú_ǸÉ?ãÙj’’Àr‘`:Ä ì—ƒ¿¦uVà;sE…“ ýˆýrò×Ex7Õ1Ò%“ hºX˜îšõ…³µf_¢Iš‡V.L‚䃤:F¾dRçœj¿'<’õÕÒŸ'c%ÑÔòI?ü/çI{ÔÿuÜQš«mÜú¸Ó5½óàÊEBÖNóÛ$é¸2XCÖO®Âî,“aÉšþø´lÇ#›´ÌPºU³ÞÃèaXÉp²P“|T†&s‘`ü’ï‘ yÝ`H×…ÏÌL‚T£,› «ÆÆýKò=RÙqdK†ó=8Ô鸑 eã&×µ4ɦR.Ì„TŸ$Ÿæ*÷/©~Iu?’álܺ¤Ú$!Zj²küWë‡çjûŒ4ÃYö„–¹ÒÊCÆz7Ž.øtW²þ4 _†Ø¾:)©©Œ“ªBÂù#•q]2¼-뿤9*ž/‰+7mV§ðz:Œ·–À›qwbÖü»sEÊMHªOtO¹~r݉Ïã“3ú}á+g6óÚ[×ôüìã3Ó¼vãþ5ùê‘ |bšán´4UÙã“lxãþ&ÑËb.{ùÃB‚p§i^±qÿÑÒ U¸Ó4ëH†±1KòíÉk΋td.Mí ÎÂþ¦ËßšîÔžã½,|¦Ø“ Ù |•©Ú\Ýã·§»S)öyg&—»3áT^7¥’³2gP=éå4¢.e´¤b'´thPîTèsdQÿYeUÅKŠvŒ2» ¿Ý™ÐÅHøqý#3ØÓ%Ÿ!p&ôQáΦÙS׿„Óûˆ}’àÓœøV®Ý‘Tm!Ñú Á Ì}âŒrá¯pù,±;’Ê’ÂKæ¢Wx’®Dã“ÕÕ û$<ÝxË\’N$èßpûý¶…’ÁR½ñ‘­®è8âI«¦ËÌ U§¼®ºü~‰jšŠúKÞ­ÍýÛÇL* ‚ÐSY-¨-ŽÏ¶Z6Jü½ ¶ªðvá%¡ãXc¤ÕTšYŸ²ZJúfÇ›öoºäs÷¯ßWsÜÿçÂGB+†îIü ¨¸Õ“OœD=ZPȌ諕J(V¢ðá*{ ¢hÐÄ›„Š .*C…¹HÕ¯¦{ZEgýê¿z5Ò Š¤‰ž_DÑ–‰7©‰Ú¨Vum¥Uóæ…÷¸šä«EÆm•R̰U¯ *òw”çê‘ =þtº®ûþ­š’~g.f Û=õc ¿­²qëÈVKÔdmquu¼çÖQ<ÝxÉ\Lötj²#[eãÖ‘ šp±oé’Ÿ¨âÖ‘ špgïK4£Ÿ[G6hâ%Â-«WÄ­#4áÎÜ—hýŒynÙª wî–õk$8WhðÄK„ÛûûH[©I* û§. Š n-Ùà‰—ì¶X«:¯[KiÐÔ.ü¾º$¨êßùwYP9——qgomDPÓ–Š8'AóçºÎÕ#[=%>î«G”Uòº –,K(̘Rà©ï'Oi¦DY¦éÑHÕ!€GKá/s‘¼¤gÕ¶pJYä÷/-åxGT6cHR 2e¿Дj6ãÖŠÔuÙYêH?è#è/[£XáÓaKd©#]¤SÉ¢hÌ"ƒ"‹©dÞ‰)µµA‘Et†>ü¥ ÌE=Rÿ2šŽC<_٠ȢG*Y¨DâtHVE2RS¢Ç¢ «¢”OÖ /™Û˜‹„•h¦v=VE2Òãùðq‹ 1[¥|rï&pîd.ÍßÇ ÈòEø.ÿj HE)šäÐYÿü ©$!Ê¡ÚùÍßÞÇ (E“[‚wQâ¨Q¿„8,E)š¬^n« ‹Û…×ÌíÌE‚öÅ$±lü¤èq\x?V;RÉ­ÒtÙ°Ú±üÕé1]!‰Euìw(_¤Çt…• ^lŸ--áû˜þ¤üñ=8÷‡6SþÈþ±'[ø{Lw,?¤Gõ15IÜ ÚNùc#„ä^鎅ˆðm¾†8)ûÊá'zÉYº Mæ"a#šŸwÓŸ”?® Ÿ·}E‡ðc½2YeÃtÇòCø>_òƒ.‚c¤C!"|›‰æ›LÚïPR·äkh;&L{Æc!!\l/¸ðžG ™’ÆF Z’‘©Â~'%‰ýÂ[ææ"AKÒİlØï¤$q^øÈÜÅ\$üåAÌc¿c!áàv(#SR…}Ž%…жª²Ç>‡òÃÎÜ8wAÅ‚Ý-EßA˜ö¤|ñÆKæ6æ"ÁÅ-:NPÙ0í9–4–víô$u.or1Á)™³±ì1²¡—ù¾DóSGBÊý¾U›÷ÛçX:hcHySL¤hD›ŽÕ‹%‰Mý7~„”èÿ¸d~‰‹J£bÿØí¤Î^³}L’?¬°¯4­Ù&þޒȦ¡¡þˆI’̰XRÈ+ ÝÞÊÔ™‹õû#Av)%‘”$v¾ÎK‹€œ’ ©‹ñÇ9 S¹Gº-8¬2Òù¤ pv^uÅ~&•Å›êtx`!»¥w­ä¾$¢Lnù!‹GŠGÔä‘’gJqgX ]x9öA)8¡ðzLƒRðH¡úGîä-I5-b¬¯Î,–D„ñ¹ïÕ‰‘…ÖqÛÏâ§ÖžÒÍ…ô:¸ÁqJÎÈÄet›»NÆè½"&½X Ë,OØ„íK˜ª=gˆíÌ„ê¯WØ‚3ù•Á®û™Ç$ _wįÊ)_ž¹7ÜKsÅJÚ‰×<.ôÓEÃv¡.é2ƒ—Ó#ƒü4ìG}2ȃ\4È…ß$¾sz> +¼ÈÙ‚#N3bh:n°„²\ÝCÁ›ÞX+_G½d§.ùq )¶O-ÃFkúQX¼LÝ}œâ=tE·nr¡°Ú¾ñ‘]Lì?ªÐTœ5$X.ÝKGT3\àư“ý1¾ÃqoGÉ­AM\m)£˜T-É\‡ÑÏÓE‚]ðàÇE/¦ÏÀ%} ŸØô®`…ôëÏŽR.n¯³‘-¼Ç rÀËü?Κ®õû2àóòWüïúW@¼øþò ?¯è{|û88[ó ø *œžy…ÿynüVñþÁcJþÍÄK@?'iípV¤%Hßñ¿IT­% sû_"ª«UB`! <’¨z@4¡²Ÿ Ÿá]@¤(^]ÿ2.*œ©Û8på¾3\xüra0¢¯j¿Ät…„,«+þéL! ’¯kRDÛèõоr¸>%ØÒ0„3a‡õzæ4窶w\¤íïÔÚ¢¹¸ð¨æÏ\±þ¥÷Cxvü‡Þ?º0ý>ÓŒ8¯£g_…—x4œu >c,¦êd7xÜ—ÎßxIˆîX^g#ã8f¸ðfhPAÁƒߦj¦”4\î\aô*<1ÐÏÃßi«e'¶ÝA$¾²»Šœ„÷·¡ðIAÄI¥ ÛŒXÎ2’Ó3ÿWÉÿ!“+s;²~Æs‘°¤æLHý±$!§—xËÜÁ\$dò(ibÙ°?IþoþÃ猕T¬ÚC›Ç´ÄüÝ l›~Ýö%äßÅe²Ä#MO¶ù/†•Sôðä“S+‚¦Ë:£&ëÿŠOYê‘—;¬Y7†½šÞ5iÚ ¨3 d¶^ú”š\\ã2•x? ™Y'Ä®úM=E'm'ÿµ!éÂçmÄAÖ ±¥¾DóÛ“+ì5›f#Kó³ý‡Y§éU?.ÓäºÊ…¿·ý¹*FÄR-•5Ä£kXÕÓ$ÃlúaÖaŸ¾DÏg\¦Éu âH´«ò˜&h2‰¦nŒ›+#WÅSå”^Ãñ˜ab°+Ä‘ú-½±n†N\×|„OS…éF°N<î¢BÝÇHC¬Õ¦|Šέ瘧: qHöDZ˜N‡[Ç'XV¢õ¯Û“gQÕ©öûu ³bÉAè!Í‘>ÁZù+ðyÜÅ©O¸&™çþð æ%O…ïÌåü¡Mýþ“C9NytòûOû-Ey ä©]xIˆÄžŸ¾rpQ±iŽ›ßQ³$¿ üêÓ« k|0õ¥<a7’­RHI»Nû|šã-Ÿ¿þò÷“§Nyš¹4¼VÞdݵþþFz6A0X´üè·O%Sæ(ñ„óüR}ôH¼æÑ¤û@?K!âTÖÄÐñ‘ž2%Á9ðèÀòÞøHh¢§(…xÁ9+ù@CwQUC[†ì‹ÑáÞôo¥Îî¸|V9‡'·5ì?*z¥nŒô:U !©QÖPc.þêÂë‰ô–®¥Æ…·;ÜÛPû¬n%nªI*$¤×SA8¬¢*F‡›:‹º®žõoBпz|W¤¹ðjÅUøNÿSÍ®Ÿx52pQ5;²×'ºvÒS³›ªÌöõH‰í ‹kòoE`^x54¥:.é:ËTÕT‹ãG¡¥³´+Œ¦í‡hÔL?/îÚ¢‘ŒŒˆÜá’®¯HŠúcü—/­ðjE#¬ÀwæŠ Œ¨$ðI%×U•Ën<½Z©’vE?Ç•¡Eû" Iànª’­˜7/ü´êèj‚­_x7ï_^Ն讔®U–"¦¦¢k:IYRX¸ÂìÆètr‚èr=Ú}ÿ <'Ó„Õ£ *&¡Ì┵þˆø%:í«|*­Ú…×Ì®/--šn­‘VÄñêyèô0åkN6 ÿ2ÅA\s²A£ NOM›çš“mbåK´´èFЍ0 8úN)ìI× l0¥ë'AÜ€J3‚ráoæªB$˜éZX6n@Ù`’Mé$©âTšô o熓Í&y )üY6n8Ù`’— à[¤:w™h hš n8ـѹ´ci‘×È»LC8]'’ n8Ýކé‘è«3Ž­€r‘hy ÷5¥4¸ñr®Y×?•hýŽc+Й‹35ô-ç1Û׬ðW8WœkH4˜J´tÇHˆ³Æ“$5 âSš Üø:7¬æŸJ´tÉkø’ÕüS‰–.Ù ß@²š*ÑW•¼†o Y×?•hêÈfä5$šL%š:²‚:s‘`~$|&AÜ`J3ïç’ÕüS‰æoŽsùÈjþ©D¯>Ù ß@²šŸá§ì§Ip®!QÍ?•hþÈf”¸KD €©Dó·Ò‚€WJø¯æ‡l†¯!¥…À—Ì¥™ ™ô_»žU«k"¨& Dûà)•Žëª6˜¢gIžÕÝL=לÒa©P7©s9k¬ISOæ±Ä & ¦H÷_Äå&ËšlfðªÐ0•s9uh„5Ñ¯Ê  Ÿ&ýÿŠÀ¹¹HP‰ i~ÉkØx!%HýÂq´iªº®Fú±;°iŠž%µH÷8ÆM•ÔL‘×H І$+ |9W"Ñãû,^’eÃ8À²".\’‘êXPŒDOK² R.Mtô&A¤˜©]x=|‹‰h­˜„*Ê{ËŠ}PADp4øÓ’-|$¤Ü/Áv·^>i„òÿ¨é-Zb-HzÔôó‡~gîË\$˜$l| ì'‚Ðð[V„À_Ò…¿GÃo‚.ì&8jú)R¼°l(ï-0B¸ƒ…À_¢I¢#ÕøS8¦C\3© Íäºo| €ÃгäÁEÅYC"®ùQÿׯÏE®£= Ž„…l¶HÝõ’:ïàߥBü¾“ „3楗Øt„\&9ðvá5s;s‘^O­´#w1‡½D¯§Æ­Õr³ÉKl:7)¹J(‚kkDª#ü§keúOþ¸ê¿‹ùvîºÄ*›øÒ Ø M«‘p§›¡]d}Ü?rOðòákÙüírÿÈ5¤¯er½K=1^êI  ¥KÖÁnš“+Vÿëa“gR±~=Ÿ:n^yŠ«Ã Ä•“Êy]6®ëÂ) ‚Í6¬eâ&%/ɦ9½Z$0m&tÕà?‡+$ÿ"&õ ¯Ï¶ŸO6ˆn´šF¢õÛŽ­tg.¯]fÒfMè¿Ö_g»Ì¤“«™~xÅ\$lDó/ãå–¬Ï&„D[o»,¤ÍµÐ+¬Â¡Š ,¤ÍµÐ5ì–T‚a!mÖ…AZÎTÇBš\ ½Ænqå$0Ô˜‹•Èê›a\}ÛB“‰A¡nRçæ"ÑüÈx¹$ÿ3 !Ñ£íãO'k³„O„´¹ºŽ¥Ø-5Ô”ñò0kB×° w*‚0ŽNÖæ=8-•ËQ³i4"ÖR¬û:fÐfMv×®+ãã'š&hºX7'ÃÒ‰#ÑüË.¹&×2!Ñû3zB“¹HؾæWÆÉíX0› I|ÞÌdMè_VáLUVo}ð©ò!Š¿$A?'ëòœvÉ6^6ëAÿ² gª²a¼lÖƒ‘^ÎTa¼lÖƒ^gÎSa¼lþƒA^TÇ‚™¬Éæó•hcÊ.¹™ëØ|È|~bçÇø9Y—uáó/›õ`¸—-ÖrÊ.yë«|Ȳ%'A/›õ ÑI‚0^6ÿA3¡-þrÊdùIÖ…]gÿ4â/Þ›ÿ ‘øa=Ø+ôŸOZüåüåZÈ_ÐLh‹¿œ4™‹ÿ8Å„ŒÛ™LDâ—ݳùÚÙxh&t”×äß™Ë^a|Èâ/ç­òNþ¢\ø›¹ì5Áþi~.*ö ýã“Ø´À»•y²êZf˜ëIªOËMC›Ï_¬çÜ㨼Í5lòŸ{«éyTÞÉp¸×‘a6âMRzm¶ñe®"q““ÒÂj‹«]7‡Â\$˜zÙ…¸®ç¨ÄÍ•$^o•8y†VQè•5¤\$ÿÞ6=y™yáãhÃÍ‹l.-iX×36Ü ÉæªàÒbhQ½8–­GGç¾ÌEB†€ŽeC›~k¸3ã²þ.¼$Þ˜‹3¡ç·ÞzTæfSh7¶7•÷KÚì7Ùœ!hºl(Ê“)Íß{8åþÛ°Û6 [ÒûµäuˆÃ¤öñøÖ¯Þ|‰k8ø•aêõÀP$~åæ"áXó/Eà{T~ÉU/™Ñ’”õkýÞÚ¾<µáÓFhûn†`‰ÿÐC0¢?H‘À8W\µËö$]ô– Ÿ‡ÍàY^GwâC<\… I!¦þ-5ŽîAbH?’ªùSû†®…þÎYÿýk≸â% Ü9ú B¢A¨ý•GAH4Il_r‘p&´Ò¨fK®§z@_"®•g}BÔ/A«DèâR!%*$Z¤d=5å"Á$x‘ˆaÕtM›e±žTN5J€hjÔ«u‡AÂéà%sE…“ _?TNEð”ÔEõ o™Ë15|È÷_]ÕT!h…O5Qbbm\ö¨©0íÆ×­‹‚.i?ŸX7j˜ ½ a¤:ºSùtÔXÐ5B¢þ‘W`ÀFÊU^)î\ú¯ ¸ž8xMׯR쇓xKh$„AêhNöZQåõÐ<~-ì‚þàÐaó’ÿÒÑ3¢/Ž'Ž”ƒë]áüaþy%GZMR™‹ä8,a…ñ®NþF¯ü§C™ø î´y4SýðšP´áßâK\;q¡äë’&¼Ÿ¸PrxI>îàOð…É>⬰~zíx…¯7*|¥È!‰ñ¹á°DašúNÜ%ªV'øüLõ¤¸èO…rˆB_%ýÂë‰û$H^MªÞpŽ¢\P}ÉÂCÖþc‚–nR&!$Eø8q¡äë×?O\(ù:„DÏç]'.”|ìgßø>q¡äëDøëõQžJ¾N!QÿË{âBÉá $ê)wp(øB„Dý/ÇJg.Òúá©Ãq¥äЭŸrÅ•J_)óÂGæ.æ"™é+„ÎQŽú"±@Üã?Á¥FF€Úé«$œŸ„/’–õ·ì·$¼5§‡’í‡W–nªcK©: ©’r,Œ$5'}Œ„3¡•\/[£½ßøÈ“”Óñ-—W70¶ø™òùI‰fª^¶F­B¢']/[#‰Ö!Ñ“®—­‘Dë€h%ÖËÖHòu@H´ÚÁDï€èISk!ˆµb¯„èœävÙ*¥TžL.Åðak$©y²‘õ²øy[ I´ÉV#G*ÏùÃ$ˆIÛÒZ¬Í/BH^Õ?­QŠÞI™’RwA¤è é¤Lü¼ †RÒ.œóoƒ ÉMïÏç?­~ ?'þ%zHœA¹H0]RRàC)_¿ñv›þ@~ÉÞšÌE™rÿƱJùúÏcõ#ù8 /ñëÌù·Õäã€x~ö±ú‘|Í?­~$$„D‹œSŸ¦?ŸB¢ùãSÔ˜‹ó#%îa5”òõoÇêGòq@H4|t¶ú‘|mc«ÉÇ!Ñüñ©ÙêGBp@_"×±¨ÓÉÏqfyù:+ôEç†^æ"¡¸†õ0Ý‘L’4a”ª#Ñ!ÑNÀç'H¹H0 ºPE©ûLI¼…ìýÂÛ±ßI!úMß3w2 &É/ÉÇt'…è7>3—S‡„¯«_B>¿´ß¸-2>?IÚ{ŠË/\¢ó!q4r‘°&-B>¿§[„ý^xÉŒ–¤¬_óÏãvJÂ!΄DóOžBÐ`.þ¢¹åßë6Í‘à8}óÖ¸ís Ó&4-ävîNI4ûÇBÚiɘÜö9’iSY¾D*™¶tœû(~ wñ<&xB\Îã_×À˱êIq5qÍy ¹%³zjjC>ž2ïA æG×Ü)é6®\$Z_{ƒ‰«}ÉÔKJžÃ=)óŽD/)y†0Í‘LûßÎÜ—¹H0Sä X6 z,“~É<ÆßcÐsɼ¤ÕLµ¸Øô¯ðzL_RݯöO.öt]øbÏ# quЦMõñx‰ƒ> ±k?NA5Mõrš®zÿ¶JRþ‹“†›QÕ#„à|’–n³~’>#M[–ºÞO7“ ¨ê‘ÕK¥Ý*û·„·c°bÑôË·žaJH•+–O¸z=.ƒI­EÊýg¹þ™øf.üâ[Iª4h±|¡e¶ÂÔê2h±|û=8—QÜ¥üúå®@IËT™‹3Ák´$Èk–_¿|õ¶œ¯aXHýRàUõØî bÞ3—Tìÿ!õ-õæFU³š?Q S½|«ñÖ–§òù¨BIÍ-Ä.~¡ØLѾn}t]蘧™;-ÿFTœ­0@AEˆ•4BHºð’8ÖŸ´fb¤Ý3o^ô-q ¡)DCˆ~×JÕŸ?g{.|‚ç€=[|‚j˜ {6ÂølÅÚ £éÂ7U’,­/¶%ú]“¸Kí³Ã1j ùñÕP¬^¨ÿ54 ºu³® Û©Dh¢ŸQV¹l4”äãÓš´s—% Ij"—J©܉qT—ÿêƒOáq+¦¥ì¸ ØS á©©ÐK¦¡…Cl*ÖxB’ŸZƒ”ô—¤Wûlud­=Å©£T-‡6.úšxLÅÚäN­-§«3u¢jGHª©?ue‡–…¨G ÚÔ´ÅÕLKºK¬)'$$µ¹~N'¨ÄôÞ/I<N]y½~ï—„šA59_ڨİ|ØâX¸cý=_v=„Ì’ÔÂÝêVÀhÄU‰F^V¢—|ô#Ÿ–tUâÔÄÇ%©•8A¦¶N±lèfJZ÷…§üurêØ Ö¯õOMGHb%΄§Ö]xá–T!¤­)åøÐHÑ“žGRZ™‹D_Br•vmI'œ¸nxjÝ ýLªômq'<µn…v&Uz¶ÌNX7B;w×Ñ”YrY;”æ!\ü³nøgý-òy‹C%s,EóC†ò=^›»Å‘‰ïÌå¨X?èý#WBNI"áºõK´¾ÈU¾#%™•­/r•vèL!$’~á5!vbHiÿÎ)Ú /aá—¬jêEÕ =|“(îß7>Z;© ¨†¡‡/ —»W­„Øu,‚ªGK*á¯ñ‡+݇ R]½Bu›ÿj|¤R×FHjyt4ÿ¤RÿÚqm-¼ß~ãäæë8_ûÐ`‡‘ð—»Öç¬2Áó¯îÚøA_â­GcyÝáÂ,·.ß÷™•"²þ>õó­ö³:^¹g,µðÅm!2é=uŒ¥¾¸-I&®¨Õ$8¹%d†ÿÛ­¨Õ$¨[4Z(u ×H‚ôå-ùkHj÷ãË;…ÐSöÓIPæ1¸Ój“Ú–:¥¶|êM¤+rß'{Å£#¨…µ²p¸«BÒ¯’*m©-•…NˆxUÚR[*[iÕ˲iFm¬HõAg„µ0£¶@ê¢/)ÂÛ1£¶Tê¢/Ñй—„-5¥®¾‚>Ò̺YÖJ\±ÀS›R[>5Vâ¡­Ë Z×BÙ,›ÆÑ³Â×ð†Cá]<þr™I[à ‡Â±À»¨Ž-´d¥ÅSõ( é7e­íÂëe¦,1*|‰¦ŽkMÐ`.Ö¯˵f ç³Î —™²Ä¨ðEü%]øLˆfûlISK¿ð}3eËJßÇBÙbRø"þ­:úm·…²Å¤ðE¼Fœi¡l1iáKnÆm eËJ L:°38[š)KŒ 7Å[aÄIÐ`.424?|kláœbÖyáãX([LZx`š?¾0¶P¶˜´ðÀDÕ6 ÒBÙÒÂSÓÐüñ­±…²Å¤…g¥¡¥Ë·&Ì%&4U6“-<-øÌŒ¤lDSËjŽË YÔÄwær@ì:é5µÔ@ÙxÙÒÂcÔÔüñ…L f ?9LâÔúä«)3äj háYji~-rM1j'„Dë“oeKBZxªZšd¾š‚&s‘ K믞m‰-ü„ã­àÛ¤J[á” î _—TγÖÒúä«)ˆ Ûg'5‰#å®|ÿ†Å ¤ì5ÁNjþDõá'’qáUx×£ªÿj«¥µšþõû£Œ›žå(Pòø†åªAO¥^®^Å– òq,}ZùjÚÖ8„§|Ò\SÓìcpœ²R^©|I÷é°e‰ÆßÌ­)Æl§ˆÁ±D£?öµzTh¥À²g'(5 áe榬7Ê6 5´#K‚ö+&eqöTOÒΠ§BƒF oO\+'q\“¨ ýŸT±êIŒ ¢UÆ{YÕ²äßȶfÖOÒ™¢Iç–hZ™À¼ðÐ8õýדªUˆéGÖ jýÝ‹TÍÔ#+u!E˜n–Û øÕJÖù‚¼sM…Ä£ÞǂزÐ"©§6ižÕßË8¥¢ÆßÛø¥šƒïß eÕì„éĬð¾‹Jš¾wýƒ=u26C¶@´òT¿Éë’ Ì-¥T”…êãNÌ[àjésáËsn—§¤èô³¾¤BÂ_\z¤2ÎVqþÅ«Wi_"ªÓ2ÉL©*©ˆßáWø4Õ1H.ªzf') ÖòÕ–RU·ß3cž¦ñk ·@•Ѫd ?Ðfî—à%¯¯û¿~d±üH€É0.[Á–VÏ´”‘±é˜µZ–TÉDhk`]a0hR%! ŽÕ`é¾ðšP˽Òô]ap˜²¨qáýü¥¬i ²Î]ÌÍú1ú­AXõY–hš*­ú$K‚9õ†9õ—tÑïÛô®¨îÿ$ƒ<‹™¤o#’ßVT?gª9ž$IV{Æ-‹ ¹•%P0âÞ0âþ¸ÑGx3V}8Ÿ¦ ƒ¾”UMâH4Éå@‹¹Hذ!ß_~Dlz—R©ýTÊP­%ÁLJtC1U˜ÖYêsë/ÑHësLë,5‚Mõ—p»!A˜Ö¥TŠõs¸ü’’ÊB¤iÑ é²–mËW©oÃ&úKö_ÈŠ,‰ ùK­$UÊ%B#“Ž‘HˆB‚#U¢|æÒ_R…Ï„HþKàIXG e! bö}‰^'¾ä)•*j»MClu¦¸Aí·÷´Ž%à…—cÿg!…éµRÚÝ„¸#%!ãl ¹ý÷’tŒ"L Pf¡ñ·À-IX„hümƒ®ì «­"!%lIÛmÛǪËì|Ï«çןcÐuL«„O«ª¢þ¯lN‹H’„nv1ûvzS’VUfìaÂú%šd™nÍ” BHÜÉžÐd.ôDŒqIqB˜V™±¯Cß4šyتÊ<=LT7ìP¿D3)q‚õ=ÑJ“L¡„`@ýcw4Ó’)Ô °“ì„öÉZ ØôDÜq‘L¡›§‡‰é†é—hR¦öUæîoÇ´ÊŒ=LP¿D+]â„•‚I‰&qŒcZeîv¨_¢Ÿ‡L[U%÷Ïþ³:H°PÌÝÃDõK4’)„iUÑÐÐ q§E2…jÆ&ªŽ!¾DýOÁB˜^™ÏO¼Ü¦WdááøîK4¾ÐtŠ,:ß}‰ÆgqÁmEŽñ¾Dã#w"ˆ]'®ç?DZª2ãÇv_¢ç?籪2ãÇv»Ê¡HzP‚ñLJŽë¾äUÓÛÎÎìE[‡çǬáô›ø{[E‘§7®©‘ÕÖ0;Ÿu>ë¾D¯†Ä #‚èÑJÜ0A”÷ÄûmÕDƼòt½uX‡{/æÙ+ïάs9W„¾_ðY÷%ßú• ó4íÑ™‰Vãp?ÓŒ Ûe%âÔçm)Bã+ôa?bfƒ,†+ÑCÜ?Œ ¹÷T‹ô‚:s‘°>bQZ²0Ì›ÞbŸ‚û°MI¹¨ÈØq¦Ø’ñ™8O×Orå—!x¿é—¼ßNüe.þâ$‘ªÜ#™œf>…ŒIâóØw˜1㼃¯ÛÈÃ< §f ß ‘]!ãQ“q¹9v}dýÜ?Lõ˜ Ž÷6¼ë} ?r®ð1;Ÿw»ñMîAÜ|Ž%JrOÆ/ý;yš¤¯Â{BÌ]fqÊ…›jeûè.Í­ƒj˜ Žï6üØ}‰&Qþhò«i|gQÞ]6ôÿGORAÓì¼ãmxÇÛMŒ« Õ}òLíÂkævæ"Á󕦘eCkŸ<Ӹ𞹓¹Hб µŒ[uOÆ¡¾¤kh3¹£fžÐtYåªWì›fKš:êTÌi%Ïôœ§¦TÝWõÐúãÑIØætdáà%¡Pc!~:Iª{s: ˆ'‚ÐÚ›¿A¼/Ñ£“jøM&iB⮣uO&h]øa6s‘à—tjUZåv+¡Éé$¾3÷e.þÒ£åIxa. ]Š/R…jÛL‚0|‰-L©ß&Ôº-DÊíÌE‚©Áç¶éO‚P›?j<ÿ2` HC5n&E×ñTöV³øºð™¹ÛšV_²yÔ¿š•uø·ÔÉŠ´]÷sR§Ëï³k­©Î-§ÿø¥žôëþ9)DŠØMÚ9RÅý›ÔÙ¶ ¯™Û™‹QLˆ&ל"E|‰¶6­¬ÉM&l^øÈÜÅ\$l_[+NÖäšgªê¿¹²`²Ô?-¨¬i5k„СѾ„’„:ÕLRëB‚£N­ê»®õÃó• v˜ýG×Äš 4±ÉZõ o™;˜‹”beCÓj®©‰k!A(YÍ0!jßVð<• %«&Díû½ZR2¾Áp©i Bê MkU¯Øum=” b«ì?û§©¡ÌJÚd¸ê…—£d5ĸy»IÁ²¡d5¯„€}»IgG‚P²šaBÀ¾­à}"8šT1L¬_–Ð$%«¡*ÖâkÕfÿ¶‚ Á4ÂümôûÍï܇Mc.2Dz´lFšÌPçVWM©—2jR±Ê·ÈÜ…þ7y9ÖÏIÐÒ¥þ1Õ¹äÅPåK4ÿÔ?rÅÐ1Ïx7ÁQǪAz8¡L0?[[Û /4¹fØY ±V$ M®¶FÖb{öQâ’!CRNý… àÚ¬“}7U%þÒóÕ{4¹æß¯·&—\]®÷ƒ¼ˆ Á\$ü¥ù'Ca%°¹6„v9ø8Jàäúˆk’ÉPX‰›¬Ý¾ðå\±I$CDq5ˆL–Y/2 $u¡ꬵjb8nuUR¥’ˆ­V™n‘/snw¯ÌuNáí¨–’C~r™,óR%êïI ¹Åa¼Gïd^'ñuTNfsPàKôé¯Ñ‚MZ‚hþÄk†f™aIü½9 ²1+QjB–5Ô˜‹“$ óD†¥s}‰nÒ=f]Ȧt®4±ÑÁ%Ã#‰æo£’2ÃѹÈÄF71-Y“i†$ñ¹8Ëv.B®/ñÒ,ŽÙΕ&^šT¡’2/ѹ¾ÄK“ TRɦÜxÉÜÆ\$˜$ñÒM*¥£|jf(ÿQ.ñTÛ¹¥!lR9õ8ëêh¼/<ŸgÍõRÆ<Ê©_…¯.è,rЧ¾¯*jŠùp¹‹¡ï:5ŸS5'5‰aëÒ‹¼yÈíq´ ¼dnc.Ô´¨Æ`ÙûÔ¼óhÚU(H;˜‹¤ªþ~ŸZuêä› †ž†0*N_¡’À8 ·SêßuŒ ˆ/ ß1ì¢ÎSß"„“7Qqþy4ÖÑ”ÅiumÝ Ÿo« SåÏŸsxMˆ¹Ã‡LbÏ©×ÐŽN=$Q£)ÏŸ«ÂÇ95ÇIØ'Ý3HGu¢çIÅ~ÏÑœ…Dº’8Ÿ„fj\u•˜Z= nB¦z‚Š› 7©™]áƒàù›Û‰ÑVLÏ·Ÿë$¼9J•|àóüÝM—=Gk’± !RÊV„ZÌEò"Ñ& £s?jw)e+B»HC ’ÇÙuá3Õ¯Oº²²=Î>ä"ÈÊF¸“­ë"5‡»ˆ„ò%<óõîiú­!ÉCr'žgÆžççãçÁÓx¿Åð™åÂß#f÷!ñK¿D¯׊Åìyˆl^oY8‰ˆº‡÷® Aƒ¹HXHóÇc1º‰pg½ÐUTG–ÎC"ÜY‰6®ɺ‡‰pg½áÎzï„\?+Ž<Âgõ—h‘q}Xž'É÷à\:Ê-ÌEÂ_š®xó¤ŸÖ_¢IàÒI7ƒpwý%Ú‰¹~, Ï“d¿ð–¹ƒ¹HhqýXÖ'ÉyáÿXŸãœñ™;«>ÇQêž<é­' Ik¢S]ŠF}ˆÓÔqU)£dÕlDÏ—: 4óèV/¼¡Ï_ƒû»tñ:°©áâÔ¬óh¸ªtÛ>ùÑhýsU šùT¹ˆôþ­ñs¾ã™a­ Ÿ?çµcé÷o´Ÿ\šhI’8ÎÑ‹`ð##IŠ:U¥‹$ñ÷G´‡E0øýiú>ò@QÎq`û0øbh# uæ"ÑÒåÁ§ ÿ¿?²JÖÁR?ú¿?þ´ìq‹þø}G¤§/ÑóÝóHåò|°…ç€ï ?ýütHÒÁbG¾¦S¿Oø¦ úG•ñÂ\$œ:„h.>øüôˆÿ!AHÝòÀÐþ¢l—TsÇY ûT2|B04â§Kò „@-¾úú~G –†uá3sw~ðJ~5YV¸>ãÓ_ÚÄ÷È¥üL’¤ ¿¤:QÿÃS¿ÀGª£ö>sn‹Q=ãmX?ñýG´£¯®ç‡ …rGT¢ùÓüóÔß/©N|UG TV'ùˆ@'>¨üþK>D‚èÄW•H>D‚#ÕÑ—-I>DCì5ÛGM²° A„òƒ\/¼N~p›ðé²G*£*›ã!€‹E`|0I}?ØøégKÍGªã­Kû[àóHu¼ëõ—„ô­Ý‡ÿÖƒj„|ÇŸVn­¤ ©O~Ë…¿™[oþzèVˆÔ'?¸ë—‰é,ùÕî¿ßR…è'¿Ê#¿O$ð·r¥|ã>ÏgòˆòûÔu>ˆCôpz ‚£ò&O%š3¬±ëk¥hsÿ0Ú_ .½$í= gìú¤—eר]_‹„ŸC»¾{ÒU¨®2¶~®I½îi?¬elò\˜'’*¸Êü>¬ Ÿ‡kŒýŸkVâF•%ÄýŸkR¯³AÛ?¬¥¶kG+©_\çÿÇ=I2Kïÿ=wò{Nàåp‡IaɃ›õÈíìîD;¬Côß_º«‘~ø‡Ø“†¾‰=¨Þ³§­3I,{ø=ŸuËÒNsžùPÿöa=p-‡Ü¤”[rMiüâ_’?õ÷$"‚r¶³ÿbDPÆ9?éÔ£jŸZþ·ó·,gÕh'ï± Û8GMØŒ²×cœ€f¥çWåù=`@Ëd‚¸“ñü§£3 *ýyôüMC'WÁýI§vPÞ¾_è$‚À~[RÿU^ZG ÁgeRB•7ÿAÿýÂö싣зr IŽ­ã¯+üס¡ôuPºéRäd>J 2-öuã“­i©Æ´¡ó‹‰Â ln«÷ä/Êî´ ¦‰Ð€lgÀöíK°ÙtDäé „Ø‚Qð6¢à}‰^Ëï³B¼/¾çß·¡O.Gãú¨uÄîéˆÂüoø7s;¦/¾¥d;d„`ƒ‘û=VÖäæôÆo¤:EÚÕŽˆo±ÿÔõþÃxu„uëˆÍ¤(ËŒñhÀUƒŒ£Bƒj/wˆ“¤ ÿ¾ã6¯PxÜ{U| ^(þ.¸í2 ÆØÞCô/ÁÈ n(ˆ*Ld U7lñ'3Põ73…!㸾~t= ýUSBó}I |#L ¡AYBûyuÆCH¹HÞ¥ëJ HYÿ ˜*ÁDá[8ß©é]j5Ú¯,„Õ쌂_U£N|\W†¾™P½NÓ¯²5›~Õ4J²ê sù/{²7Ù×WƒÐUŒ®Š¹²@ÊŒÑU’}‚VæÕúm/%ºÆ¾\¹(EóÇÇ=ùùö1µƒ£ë…_~_Ôê·Çø¸(eR(¨ø…Iª‰ „Ï$\’½7÷æï†>8¼ÎjúƒcÖp‚Üð‹Ûù…©ü.!>•1 «T¸«p’ܹ•É›õßÂtí£NoE(I¼>Þ›(F„ò ßÂ_AèI ÐÏø>‚Èm&½¿(K|B× ÒgnHîæktÝC úç ÎÜ8 8éhÔlàŽí€Þv@—< K´ëŸÕõOe ú«8îí…¤oEþ¡ 7"•›²ÑA(r d~¼p#xy¢íÂ[ÛÓ ¶IWÇK€$ø'g€ûyƒè¹[4ŒÖ„Vf‚·k©›ð—1y­ QR&îM¼ÓF@…øÄݲ‰kQ€`¶*w>îq‚VniˆŒ::ï–ðwÕFö•*w£I ¡*ÈÀ¿ ©ð™ï¸ÑÙp}S ãE¿9aÜ[˜Í­ ‚󰺵…M}|ù¶Îr¶¦>ôß{s '¿û:–|Toä£å¦OâÈ yaÉÅÃÜß99$!Úèˆ7qËfâªË„xzBQ>¡ŸR¿f üqø;ð Zq©¾¾\âë`@(4ÀÅ Äûø’®}Ïöwœ3×ówzXÝkt¸nž—8“r¶±[UDá¬ðxð=ñï›ôB ^WF ³ ä6e ¸È€-´¸ œ®ŽÝ„0ç˜xÇlmœC48ŸhÒÀÈu†*Ä8 û|ÿrQÀ[E}¥„=Ùhº½>•àô¨R8ޏ'óÕƒ×#ÂP…{ÂÍÖ„W0 <kERÇõŠýÄ¡vâ”;qè$L*|4Ü&¬°Ð©/™K¾Œßÿ6l€W;{ß×kðÕÜ~£#d„o0¨kUÌ!b¤j˜ú†t“û‡‘t‡Jºó< 1x‡üKxÖ„K²A—b“Û ¾t#¦¸áƒŒ~Ë&—8pÄåz]‚j(מŠpÒ™º EµxóÑ'ŽNÿƒ¡$¹£scotch_6.0.9/grf/3elt.xyz.gz0000644000302600021200000014471213303015264016103 0ustar pelegrinpelegrin‹Ùp0ef_3elt.xyzd|Krm-Îlû;£pÿF9@/ЀþùOáJˆm“rµªyX@ )•°‹þÉ¢ñoü÷õ?þf²5Îþïÿùõõ5¿Ç4±ß?ý›¤ïÍä‚@ñEúùÓøúG¨¼÷óÏ¿þ'ß¾‡íÈ(²eማÄ÷ói9@VôíÛ—Ûûi=À©KöûéùMsû|F´<ûb¦êæúÓÿ¸þËî> æHßn¶ôqàZ‹áÓ#’Ù3G?@ÛbŽŸ&ݸᣤôù%ß3|7r΃”ͰœœOðÅï˜TH&rö·–ñ,|r!IÄqÌ17¯wL9HÖám†è©ÿ“Cc) ~Wd9mÃv~­ïÅÎò"‹¡©óݼ¯/Žà˜oü›EÑKçiññŽ™ù÷ºç¦¿±>’¦M{‘û›ØÆz‘ÉÑŽIÙlcÆÆé›DijþŽóÜ´x¼Hþ¯>ESß1å{¬µß #)äT¿QgC?ó<¼SrÛÑݧêÝO²ƒ¤À "ãTÒx¿¾ É1Ѷö-û §øûçsVi¿´ý£äȾõFÒÏ×ãtŒM/G<R˜Í¯ýÍ‘)^Ž89ÒÈSÛ‘+ŸŸ]¢@R!ç4zçiß±þÆ'óAneYÈæ`ƒ,Çr²|ï;O:ŽX  Z0êÖØB/Ò2òœù‹äï8‚ëM¼’bŸç9çÂ%Gòm‹ûéòé?öB’ÏÉþÉgž22ÙKü­NóåHæAÒðÉsѦI9ÇįG­lŸ"è{®¶" ~ó’ÈAf‰pä]EIÞi!c¢ÜÆœlï.‰ä²8`-B;¬h¤-±vÞW­7æeRÙ#$J°Ž'’Å ) 'îë$_˜§–TPµ÷SçĹ~&tÖ®ó"ž÷¨šQGß¼¤Tò#ÎÁj_Ÿ÷p|ÅQ„ubP´8"!ßó[â³æYE-•¾ö/ö"‹£Áb™ª† œ#]GZÄžç¹ýÑ/‰Ü…ŒbÚ2ÃŽäûÖ#õÒ^û©†‰ÔLýû=ï6 ʦå%ݘç­ôÜòG]ÔÚ7Ïñ®ÈJЭM—âO$? ½Æ,E·†MÇ1CUMÐ_%éŒfßù1°vXiº(SDu™Oç‹´‹È!)8d ¬¨8Š-qjkWo„Xq ù3*BÈ·ýæ%ó«f Ï»‡R\ÆÏ‰[ůКŸ.´ßý\ÅÇAœ¸ö8˜öò¾Š#Ž„a-æiú;ÏUQÄ’b$‹Þ£ù³8"$$ëQ,ÇaEWw/SÇѨ\ïίâhFÜ´L‡€ßL»Š£Pk³å(Gìï<‹£±uµX’ )àß*ŽâKX‹w|Æ¡nîâ(SËÂyF^zÅÁ¿] T‘“mÏ7‡ìÒÞ=Ï9dï͹ö3Î;mØ¥]ÚÛ#…1²IKè=ï»´÷öí 3Cè%‘‡Í]Ú{ogÃZ<Ì> \YÚ;Ú–Õxߟžîƒ¼íQ4(Ž+Š”¨ï‰ÛŸþhƒþL9¾¶¿cúí¶¡¶ U§ãÍ!^ý‘©LÆÓÁ;2è;&]$ËÆµsÕwç½82f<›‘iÙ×{Š]nÇ “c磻¨óâÈ®ày5ÿtÄ…´‹$nÙ;Î ½çÝ‹£ÐýÛ±vD þFHðîÅQÄÜjŒHôd/޲±%\;±¿Ÿ‰¶H QìÚJ‚?­éÎ ÝP=â$©üXÕ›ŽÛÆÚšíx:­W•ôö±2×Â5ÞºaTù4ǘ˜w*XR€S!ϰքÐî÷³«sØ…nåÓEÞ<Ðâ*B 5ŽEüSmîŠ,&ÛM8±U¤¶‚F8[—È ·ÿÍk9ð߯7ZT$özé-Œ«1ñœÎk:„|ÀÒÄFb¯ëY´[ú-Á,ëÚ ¥•f’FìÇwà½[WÉñÏq×xؤky…óü8ÑÐ/ —ÉË'Œz­Ö~\CY h±5É0÷ tPKV† ã¤b+ªÜjù×!Tl%«­­Ÿòx,gÅÖˆ"Ùt©Ë¼¸£[‘ëW(&?ûw¡ÅV4¢ÔºFÒ Z{’]¨YK˜ê öõx!ÆbÏ׎ŽÜ¨ç1!²ÞŒ·Úez3ÕýÚ“Ê) ñâï¨ù¯iM?­¬"Ž}¾£-6Ðz›š!èï¨+Yq(4¦wÔYD'PnQ‚ÐЈÓØâ²‹¢Ãóþñp£<À¾/"2$“Ãf¥))ã˜;=$¨[™¡å˜ÇØ)I v Û%Áüzìˆ8ô¡N dÿ‚”qüˆlmUB-ÁC" j¯+z$ƒm<Ç‘X!yh±q ‚•4õ³·¹¦*¨F+E.!$°SbEdÁ™+1 ˜2D¯G¯Ë]Öà G½öÞܳoVLˆ•ò÷âOF¨ñã°QËà¿mÒg®¡¹âUÊáÛÛ¨ÅkôûÐõN-‹oËt(¨ç}¡óxÿÂÈVDýoÊÈÈ:æD@Çz“é1ùlL¨0Lj2ÂS1´ƒsPìóØ–æÈ»Ü a–Ђ²ðÆcÈq4­cPXÔ­%Š£ºo4ÌCayÓá%Ž×ÂQ÷žx "¢‡< þF¶˜'fícRh^[û‰e,VŽl UìÊ :ŒieÉÊ'g~ Â6~pNhy²¼¼ø4â ˆɅª÷Tñ ›eåÊ’¯¯3bÂÅÊ–M»T±lÄç ÷ñ*òîL&’E82f£;æ‰AQ‰ Þʙݿ>û‡_ ÎÂ\eÍf…Ì„¡çNì*o6“®àBzáÑ*s6oSÏVô’˜]Žc‘.²ZKðÑ#:ˆýcY„¬$ö–‚ƒ³u< 9`hç.ËÊr^?×,Ÿ Ä!ƒv®uÝé5¶nd V±5}­V …§A_°Š­Ék „zª×‰™»Ø¨ÉÃÊ÷.—Ö?®Ïo&Ü´¡eÓ¦ƒ©ÚQŒmÀ%[ù´!“v#6j)ŠÒ]Fm6‘ÒjÁ®ZNmZäÖü0¶vYµ1À¤žŠ#î@ËOÇL‡ÛýG§^è¾ÐiŽ©X¥é¬]Žzæý^ Òuƒ{Æ{û¾t *Íâ…^b½ØŠŽ Ã%>K†œåÅVtÉÞ²öP…F~:_è„ÂyiP8]®Yî _#gÉÇýõúêä>[¸D… üë•óè¬!ý–_g]8¯:7Pàe nŸýÐï¥ð…^o]Ô[fg[¯5þÆÇ\'Ù­lD—¨£\A›4šÌ‰,òþ) ÷½DTPÁ LÌùåë‹ÜÈ™ÞhÜ7ôza–YNµ€Æµoãxl„"ù^ÿösõ÷›v„¶tžmÌÆVh$F üBÁ^<9+í¬wÔy-ÜÔ§ جy=\Æí˜ƒ(¥ëeøÚØFr‚¸.î»)ø([‚£^—”湘×ËÈÖ‚1õÓñþ¼8¸F®î.ÂAaÔuýYÅ>våUÒos6ëcåòl-Dl+("º^Æ"•VŽcSõíâˆ>f®(avÉ}†Q¯—M€µF:’« ŒJ×Òd¶.HŒ_º^†l]¼)œØëeHeAhÄço}:øø„»WîØÔ×8èõ Uÿœ­eSz}ÂÀÖ’ææ‘E?>!·FÚ¤Còë½9¯^ŒT!\¸ØÊGc†®ÃÊ €^ŸP‰[‚÷Ï{¡Ï²˜>ŽÞlÇpýv@åkÓíÙL&1œ€ÜB­‹ÛÁõœX¯¡¦(ËO¯B¸×yòÙÅ~„%ÔXâu]2Ñ&s?õ‰Zl ak²<\;ß7Jô´Tw °RΓ‘Ð =§€±nI9OÔ´Q7Ù|»c’ržb­ì/TòŽ^ g/#4x¬Õ^h–c6œk9OþfHúº/Sœ­—ñª*?kصžÚ[;âŒTw¼Ì&°óªÜ!gɾХï²ò-G/ò×ËÐP$ó…ÆœÜ¡¥ëepZz¸Y²~žÔtþ¼êËZì­~+å7k›Ä«V¿ƒn 6_þ¡óDZýV”5[d[zû­Ï…ê/T?q>¡­ÕoEÏMmÊ‚uKo¿%f0j¬t鯨·1yº"– ÌÓ€–‚Ï'=¯íŠR²Rð¡aãB @I÷Å…‡ªêЧ¯:£Ò}ðñh*«Vy@‰»o.öÜ&HldL¬[÷ÑElÌ4ÜWr%†QKFeŽl¹3ÜDÒ}vÊ…[¼:A¿ÐÒ„qŽ©ÇÀ¯¥x¡ŸËH~¥Ú1ÿÜà±Ù½ßbž£Ïuc ¬[·Æ`¹N™¸¬uoLÖšmYJðÔ4 ÷Æ$ºV äE,kÝVQwFÐĹÞ“t±1¿êpÔ.ÇËðï´}æo99¾•?¾ÕÕî}Ás ÂgÔý9Û?Ðz(úl"ŸZ`{a9^÷¹ÙZÎ/4»5s‚Qý¾ãZ¿7)r>‚×D”^F:R¼~÷•+Ñ#>sÔô2Níõ߉qÅ@t;¯óDéeäA"ûMP5ê$CE”^FZ7±®ÐC’,½Œ¯óOÞ}Í3äʸ¬`+6q9!4´?¾ËYV°õun æšOE \ÒË8kïc£œS´ö u+½Œ¯sÍü~í 0((½ŒuXŽ×TpHÈ‹-ޤ­8êZŠ’,½ŒEí’rÆýwÔTDéeä]’6íÂù®~@d¥—Q?GÀrœò›Áu ô2‹JM:LqxOée¤#Åk&M„â)½Œü»ÑôV¹*I@‹­XìjûšO)!ÒËȵÈZQô »¤—‘¢JQô[ËŸ.˜óMôø¯ì…ä=7©Êée$t.uÔ„¡ü gqz_'äßzv<øaðì”ÓË8®$ã¨ùhuò¨üWo†Éc`³¾# z÷˜¶ËñXîä9½ŒLJ£í+oÙ8u bO‡Góº4z¸­q.ß­¨tñÜ×oFM/ãëäWÓFÁ|"(w`V&̦¹+¾A»ð¬L¸¢„ÍÊY\…qz™4£Èr«†> Ûàô2iȰÄùñP­ümÜn%ÎÑàô2º—ï–ˆÖdÂô22í1c9Ž<šwß°Y» :D1%†Áð¥ÁÖµËP 9½Œ|W0w¬hÇÁ{ãô2r¹« =ËüФ—‘^çPLD, Få un©XUG½uëï1ÌB‚ËÒ u¬0ù2ÅÚ¯#ìVC…TœsІ~"@ÅVœÎ® “… [„»Õz&ž [{;ä×”º$ã­0ÌÅVÜl9+Ÿ¯¿ù•y^¨+·&*þf-¶"e­eÀ{æb+”Æ@´¼“ì-ÌÅ– ´Â§Yâ;Àz¡JÚ& câ¨Å–»îÕ;ÎN)§—q²ŽÏV ó©„Kzy«M³b‘ºýª´€úFBBUœ/Í ^ÓËHhœCí2‡áQ2§—‘Pvì ¢çV"ȯéeT¹µ;ñ'Y¡^FB·u•aï û• /løD×€–& a­-kGc¶§—‘P7inÎ6{Þ€[ñqlÍV¶f¯¦h±µH¬ùsµŸ>‰_ý:0\Rè1ÎU‹­|dÛQža8[Zlm#k‡ÛBNÀ”.Tyã²x;¨bÖb+>1ùuúUÌZl…V†~+Â%vó€[!4!ŸçЄ´ØŠNTšˆÿÙæºŽØâX⢒(H„€î‚êúËÖÏÏfŠØô2꣕¸ ûš^Fî̘¨ÞRýú€Ã^F>÷¥ÙOG€Â1L/#¡®³5&q Žazi²Ðöf¨…BÀrœ^FBÍðlEΚàÜT4–4[NSpu٪ߊ‰Á1<×vM’Y±¥q’Ã%ÄÜű[º•Z‚ÉÛk³[Fˆý:>"k[ùãÃüê" ZlÙ{u[éßk-¶,”C«6!.ÊŠË:¿=xî ´ØÊÇ|Œ™ÐøI ¹«Ø ùŽÚ%$‚løM¯Û/,œçG/Š…s[!ýŸå¨4W±µ#8½%M›mÔb+·–µ—+Æë.¶v¨Õv`ÄÛ)ØóB}¯Þ˜< >7k[‘t¼wq¦Žá.¶‚¬žbùHìñ2òÓè:+2#&øãeä³T[-gåm.Ë4$ £hN#A–/c¥‚ß-i¾í†QwA£‹²fªFÕA¨ÔhS/œŒu>^F>h\]<¥z…8^ÆÊ+qo>aôEÇËÈ PöÕšµìr¼Œ|§ 7T',¢9†¬íÅVLOA>çs<†®J«-+4õ‚pq»Pß³em Ú‹-2’æ,i¡íÅV4~ý&*JZ ^l…æïÆ É(¶¢/ÇT}-¿ùUƼÐ-íÀè‚Pú@­e—¼Æ2€[¡ ¼å×8@àæÈ(¶"!mý£³'PlEêøÓÉ·KÅVPÑ "‚±>Ðn'åÿW.«ØŠ‰pSð¼ì@‹-™*-eÈz^¨%[³ØÊ_Ùô"Ÿ†ÞQg±•"šØù ¿“IjHA¦·ÕFå ]2þ8$ï h±šXÚ‰å¹@’ÉÔ mÙå”]h!dÚ…>ï*eìèŒ \f±}XW‹¥â¨—-]ekˆÐË–/j„Ôñ$tÙŠüÔ>3ð4…Š­ £¦Š#7C΢ ]½p’2²EÅVþ¨®©·1'˜BŖ惸v¶.§ªºW¿f־Ŗ÷Í"ô­º>Ð?wqÑ5AdѾP¥v¶¢æLˆ*¶¢ÂÑú“ r 5îé-z „^¶âp´ÐN{ˆåËÖ¶Y:€-¾líæ¿Îüõ¦á.[·icÀ ÷•‹­(<˜4Ó’%ÐÚÂv¡ÛÚ²ˆÁa èºP—ÙÏÖ‚ŽS¸ØŠÆFº™BøâGØ?PÐùŒg´¬-ãBÍšÐóßÿ -¶,‚¡S`ŽgKèBWßW!Æ}•b+!õ+Fˆ €Ê…Êþc+ 1 —-Ý]Ääwà²}P«±ùC'õ²eêÍP—(½lE¶ Äqk;à¨ýQDC[/[!uÛ1Ìç°,½lmF§tçC&{ÛÑÿ_Ø›$[ãH£ãÊUä¼,ÂDíþ7ö 9ÀÑ5[¡zÑmh^ÇÚlmwƒ%E©{C›­ø\CÌð]›­tþ9'Èõ¢[~‹oÃíÀwUoèaz ± ufkŸ¯xÅéÃÖ^ï|› R*v5t >4%Á; Af›ôxØlh­×²gágÙÖÏY4¥gMøÒP´¹g,p¢Ä´¡y}ÎW¬‹k¶öAÄ»``ÄD¬ÙZ6(´`練Úl-º8·E9ù]›­•ƒäÔ3¨7[‚Áë: ÷j‡õêÍ–ÎA²² )A¼ÙRZ„Õ+ýXñfKA9y &ðÞl©±o¸O$Öõ@9^Pâ)>Õ”iŸwÝÐfkÿû©\úþ‡6´ÙªºUz+ÑÊðfËŒ7Ì^”ÄF³å“–œl“´Ùz—WžÓ…¡Í–ûP¾¹Q)•h¶â¼ž)¸\ZËØPÖ2*¾@k~4ª÷QPe#­exNeÓa¡ö&­ex®EÁëmN ¶µ ß¿á³c wlkÛx3Z¯k»[ðZË(Ý@X)¶‚zØÚ¦>Û„êcÀIØZFi,ɹ MÝÖ2bšÒ»îÈ‚Ö2âä¾vì ´ÞZˈ‹–ËÞC_À”¿@„¢ñÔZÆ&Æ91d.Áˆ N;;¹—?èÃV¬1é€ßg?XDÚZF¬Åx%0 ´ÙÚÎ¥ÎT8Þ´µŒX®ô®qr®~Ðfka”·–v‰—m¶Ä'ELªB›­¿^çg•¡m¶t¹}vÁDh³uN·wþ+üiC›­¯Ó¿>Ð<Ðp¾ä!˜úm-#8[¹Š´/° µµŒí¡ýZÉ*$Þikû_”ûãU ½ ºÔ?ƾO|j³µBG—÷d»ü=µÙй„ è5ñg5[Ñ»¢ R56´Ù »{œö«¶–ñ¹8Ó†ãSó@Ù/Ø?®8m-#NéÎëc9æ>jkÛ¿g9ilO^ µŒ Lö &ºÚZFdp¦ªø¢xت¸%ß0{iÁ"l-#YLYÕm´ m-cCÁ/¨Üÿ´µŒ¼’7Ìf7Lk¿Rˆ—öæ#‚l¨~,øK@PÓÖ2«òŸÞz§¶–‘KùÚ8Jût64ݱå­Â»¶–Qùμ´‡Àu¬­e¤\Ÿõú×û²¡Í–L~×}MüYÍ–À…z¬T¸cµµŒÔÁ.„­¤§6[š‹–öJÎ6´Ù²ÉÉl•Dlµ–‘fœQ©‰V±¶–‘>“ËQ¶ñ][ËH—äHÔ•qC›-W®/˜sâzm-c/£dÕanÃÖ22\Œ77-ÂÖ2*ÉŽïK¼¹[ËØFÖ"õÑ'fPhkÊyD±‚¾k³•ƒý-´¶–‘99`ßNø®­eä>]Ù‚ÿËnh³•ÉŽ´õ¥ñ-¶bÛàN—ŠFNº n-£ j$þm`ÂǺµŒ¨äv¡¥=EpÜZFT‰òç]Ó@ËÐ[ˈ»Y8D{Y:>5úq#M/¼Žo-#8…ö©/VˆFê­eDÅYÍ È#Ò[Ë(¨ð‘±WHàzk5>Þªü,k¶ôₜù®`»¡r Âö«Ò½eÍ–_Âëu(ÐjÍÖ14_ßÕis[³å>& ëW"´ÙŠ‹M²q2Ðf+Äé Z⸠½Ù ½ètÑk ¦Þl…³ åzõf+‡òrqHÙÐf+}PMÔeŠKÛå@YÙß—Oþ°UÝÓù¨ƒ ÖPÈÛz¢¹—ãS¶›µ áhØÐ8P*}A0uC³¡¦¤’mS;ÞÁk«¡++ÿ=Q×?èÃÖ~Õ™KdeÙP‡téjÿUÉ}ØK<Ùá›x¾†448 R¡à D³%W°Ëûî`qC›-Y\êµÿ[¨\Ñh¶,¥§)\»Ê'¡_‰wl4[ªìmø»Ì¿ Ùl™3q Hµšã@ReeÍë5›-ÿlî}éàm˜ÍV s>ŠUàÞÊf+¨¦\ˆ…&›­¼æ''èDe³•ÂÑŸ¨·AU݆>l•©h,ª¢ìa—64YúšÌï }Øš_ÇÄO¡Õê MN É! %Øõ°µYL,¦ëlh(ï­Ê{{k£ÙÚæãHCªÆ†6[²„Å?1dk4[˜Èt«6ïjÅ m¶ôãUB',—Ñl©%oëšm¶öï£ëxÔh³åëS#í±ð 4[þ‰9™6â@•«ó³l4[±O+peÍfkû0¼cSà’·Ùl…q ¨lDX³ÙÚVÛ„û8E8¶Vea°ðƒ± ›ÒÐø¬Wòˆ Õ†¦É'ÒbŠÍ‡­5Ú÷áˆ;vzCÃxs˜3ú°µ¯iÖý×–ù@³¡ÆÙ9Q˰u5Ô9vÝê:\þï²Àгõ°µÖ0*"“f˯ÏÞP8¾¡ÍÖ»•á¹·X&ͦ£õµ§4[ûŠ`¿@Q6i¶Ø…¨¨™'B¶ö©«l>^Ó°¡ÙМä Ó‡-ó#Óý5Çnèh(&aWu‚Áý´¡[2ãSêå¨Xk²è©%V¿²j¶–±]fNá¨{Ÿª ìôW%¬Ö2DÈÖ^•M‡×qk"ÂáÐ휂–a­eÔx6¾ŒÐ ÝÐfK’O?êÆ¶–!û.ü$Ü$è¯ÖZ†˜ é ÿ^¹MÚl¹Ø'¸·ZË®…(æ „6[©hìKµ2‡ÏZËЋü‚r!Pþ´Ö2ê€ÔÏ¡yá léü¿ç…r½µ–±À™ÕãM?èÖVת‡R/k-CeqC¢A·¡«¡Â×ñÞxÀ·–±]FÖµ·9¢ªµ–Qç@bÕD­e¨R‡›»‰^Ç­eTÇhZûZøÔfˌӥ¯qÑwm¶|ðÏÚ®¥­e¨[|Ä?,©·Ö2ô¿Í ×kkZ-19‡é&ÖZ†]×ø„ï ’Ö2¶ßõ1É,À9µÖ2¶%Ï7ŒÄ /` O^`Ƕ–QqjÇD¦};8¾@(ë.¥ÚÀŽm-cÒ“_@0+ÁZ˰‰Õ÷wŸ}º·ZËØ· §ñTA;ü¬Ö2Læ—X̵Ö2öú¹Œª¦  Í–‚ ~wb‘ } ­µŒ:tü#T&¾k³¥þ‘¾.~¬µŒ½_8°/8¼âZË0£{;ý‚ßµÙòõÙ0 òÿã­eX@pàiýä`yk–×ç.¹dÞZ†á-ÙÑ`Ë[ËØ¬5¹+„½µŒ"‘¥WzêÖWtåãA¿7o-c¿šåZ>0H¼µŒ*cb,X¯ÞZF}l–¾¶=‚?+ꜟµ!NØj-£Ê‘ù’‡°·–áòqø~ZЇ­½ãù»Æ>ñ¶öïg ¾z Ãri-£²éè’¯d:h³åÂY Õ¹¾kkŽ]Ð:¯Ôo-Ã=ï­è"ç­eÔ~ýˆÕ4䬵 ¬½]Ķ–áù=³Jd6ôa+®•Ÿ“kͼµŒí`;ûûÚºÞ‰¢ÞZF\ɧvEfà ´–S®OÔl |ׇ­e×üBåÉ[˨ÇÖÛ`:xk!ñùX§#Áú° þíÓ' G~yk¡¾x¹$f¦xka”„­uAhÁ[˼·r ®×Ö2¶¥dkÏa ŸÚl¹Àxòp¹´–îÉ©\ }ykbósd@F¥·–‘—²²)´$ØPo¨³­½ÝÅw}ØÚ I×–¿IY ͆’öVmk@þ·–‘Ã5BYºÀ$óÖ2r~žº]k¨‘öÖ2rb§«ûÔ6é¼µŒ”Á¢ê¶Ôa(·–‘BZF ë Òû½µŒ3ÄbJ ¡h³eÁ²rfþyké*ŸxA@Ã9o-#c}Ê&ëâ¼µŒ:Ì9v|aI½·–‘¹˜-$o-#ÿÝE Ãå†[ÕóïÊA‚ƾßZFV®‡í" M‡[Ë(¨pÖ×kruCµ¡þ-¡¶n-£ Éjyå¬ÁmxkY¹ò‰ ªë·–±¡FFé*)ïØ[˨èïõy ªøüÖ2 šNn¤]èžû­elh ñ[ V»5[±ØxJA‡Ï­ÙJñ'‰LnÍVêç2 hÖ¶¡ÍVRW®*Gqèõåö°µÿöI•M”Àݼ¡6¿'ˆ)n[c ùX]wNEp{Ø ë»]ÅEV±?lu± QS– óÓ‡ŒÏ }ØGÅ5òClC¶†^þ)|Æ&™îÒÐOzLëuØÔEî¾· Ùð†6[ûÈàsÀTß»7[™¸o×m j v]nø³¶ª70+ÐÛ5ƒ½WC×¢ÖpFÕ÷£¡Š—Qµa·ÙP*O­´3Œmx¬†ÆÅ¢ª (ÈñxØÚgÙbwG°lÂCêó[¢ 3,<¶æ×ÇxÂ\‡­)뢃h .=¢¡~}.NsüYÍ–DR–bå£ÂS³Ù²É‡æ6 †Ï³ÙÂd¬»æ4È ÉfËe²·Ø+Á³ÙrŦƒÕDd€DãÙlQo»¡'Ùôl¶N¤üÝ%¡ù¨çÃVu+.ÀÔCOoh|ˆr!òakaïõgè ¶Wñ̆º±w<±Ú.®‡­ZlìÍlèh(Ù„ÕH ÈâzتüUjÜòr\[+d-N‡~Ï*ÊáĶ•ú°UƒV¿ ÜÜq5[ùuL¬‰ m¶¨_Fud âŠÅ’ÏܧvNüY[û6þ‰ôC»×*»çc€sãa«*ücÁƒîãaKt¢úXšvb‰±ŠdU޲¯j `ºK¸¶j ]¼\*–7Ô&5BÙ4È1¢¡É&YU¬"ÍVÚ§(K1óa«LªOÇ;@±¡[:¿ùY è˜[º»;CÐÔù°USœéÈØB¶æÃÖ¯\îïc GÝ%¦6t~rždа†R%k5Føȧ-õü™™¾ú°¥!ãÓ)­·˜[?Ûéݸ*ÿë:Ðõéܾ@׎õ°õ“2à.P|ê<Ðìs㸶X[Û/êT1^XÚëaëg©½NÂîâ†jC#Øß È>ØÐ‡-“P>Þöe°à j9öü‹Ö2öÏãxl5;K€>l퟇ßUïÈ,ÂÖ2öÏã Š}š¾ÀÃVœ^lèas‘h-£†ýò|˜ ™¢µŒAéë)d€§¶–± ¼c««Fw¢µŒm,MJºŠÖ2¶ñÃM0†¡ð­e侌X^(¨EkÕìŒwÁexÛÓ½¿þBÃõ*6ˬ¡4 ñN=\øT?Pœö{ BûÕâ@yTt•½¡ÙÐ…³íª{N÷ ¿4xVÛ¯>ªJã[ýÂlåðy F—ÐàÃ×⼸Š©ëÒPÇAÖw[0zj³5. Õµ73znê4)kû•h>ºÿ 4ßpQ_Ýðfëíõ”O´S7´Ùz—‚>OÕ‘xÇö“íÍïd7´³b¨ÑàõátjG³5¯ b§(~¬h¶æXôñË 8ÐfkN˜!|7š Ð2"ô@ƒæœ–áñîÐÑl–ª¯ñ­ØAxC›­)NC·çt<ˆzŽÉ¶>>#Q©ú>zŽÉOxzÍߟ îØžcrÍÏ Õ}4áßsL®%FGƸ.4ÉzŽÉµ ÇaVŸ,”?£ç˜\+xà<U?¨(N£¬Ö›(þEÏ1©4š˜7öÚ~Šžcr‰LÚÜ’Ð-nCý@aÆå= …õÈ8Ф±ãad”f³%8ñ¹rs £;y5[b“vAî‹ÿm¿æÕl‰ãXÜrø@ÞØÐfK‚‡AîS Úlé‚Y·Ï låÕl©ûÂËÈ.£6´ÙÒWöbŸYØÝpC›-}ù±=I{a;˼š­w»Ûžqi>Úl8wé÷Œʼš-›0d³Fñ, /åh¶l ZY{¿ƒ¿•£ÙÚŽí­½Û!—c(\F=ÿa´Ùò5é:Ž…¦r4[Žëõ®ånC›­ã—¼æHæç°…›ûÉž…s G³cÐÊZ1égÅâ”z«ØPâÏj¶‚Æ·ÖÌ}ÌÙl„V©²çÎÙlå·á=±Îål¶r\tÇÆ¥]:hÇþÖÚÚlåÄ!ñÕjO—œÍVâüØ’é  m¶Òø ú…Œ~Ðf+Ýè]G`v}·­º#Ï}Åð“3:/ZûF¹>×u FÄ v`ÛÐÑЗàÞáó‚)I¹fCEèJ„w]«¡>iHü6ËßU&×„Ì WæÒ†&Ø.Û Y éú°5ÞÉ}¾®»`õ´´_„íoPžf®fë-üô""v5[#aiß“10Û#åúkcëír:ÐñƒÅ*P(¶¡ÍÖœ“¿€ÌãLi¶æKƒ¾€ ¬L‘e¶êpƒ%ÍÖ;Go—¶4[3Œæòn«M9³í’M²}¾ãe$ÍÖ"c¿æë@ÊÖ†6[kN²4«‹ @õ:P¥å²ÏGh³µܱÿ­AŠæ¥6[+ùŠ+¶`½j³%Ú„Zí'B›-™l”N½p½ª¨ÓϺë S›-œÉt{F¶‚Im¶ÄÀxºêŽ7Œ6[’‹O<µµÙRœ¦¾âÊæ¨5[øš-›èFÊÂ/Ðlm”ì¬éÝÉÖ2†‰ŽQŠOm-cCØÚ;oÃÖ2jàD;k{k¸·ZËØgÞäEh‰tkÃPPCôd ÝZÆp ^+pi·–QqjÚ±¡Š—QkÃÑ­s wAkŠ›ÛJ]¸ðcåš´ LÊýO¶–±Ÿ°hF»¼³=ê†i-£þ1º·* k µŒj« ŸEˆ&Ykã-\<ö@⌠m¶â£’-ª/ÈÖ2FÐ'¥. ™ÓZÆëžu;¡¾ ÏLÖ¡Ëh¯u-dkÛVtÚ†òkFy ÍV’D3îÑGïŒÊl-cä«îÙ±0kmC›­mn¬g„¦µŒ ]$Ê>Éaeµ–1Ò‚¾ë(fk#Ciio”žú°µ¿) {¹@è6[˘×äS{MìÒ™­eÔävÃͽ]S˜Lœ­el(›Uî‡ß5ªƒÜóM$\œõŸ5ÖíC£‰;K{¶D®ÖnÈEkäZh×F¤ Û¼­VÝhí´ÊQE¢‚u¥6|ß–96ÖXe°!ÈqëåsVÂØæMFßÊÇ)V5ú§±äb­âØq¿µÔ±]× Áo޼µÖ±±xTW#ªx{ô…mÞÞÝ‹Ž÷*Kä¢ÕŽºñÍ lI·±Í›@~á“é´‡Zï˜JÂÀ]) c~7¶ySºˆë;xâ>nÅc’ORêÌ2C.ZòØ–ÏàsgA¹Aaó`Y* ÅwhÑcª³šuê¡^Øq°xÕÀ贱͛`Gúºˆ‹Ö=¦-],?-|LûJ•~Šß¬•ít/òÐ+q.k+´â‚nŒ…õƒE—c”\*¸[ü˜>Qß¯Ž ˜P4»P2ö[™Å÷mù£’”hU7“ïÐúG½³%šÂÆ6oî²8€‡ÂÆ6ož²ø¬ÆàôÆ6o19‚f+èÞl d†¢5îþ¦[óöžÀÒ÷ãðáõƒå¸ûöTßô¶y‹²¹ÀSz°ÍÛ{Ì×cËéöspý¶2óâƾ'a›·¤ìƒ²wôB»¯¥™ÆÞÒ¶ûÈ–k-¤FÿLü¾óݺÿynó–ÁšdÝëô¾z°lïȱTþ°ÍÛ»1ís­€!›…}x«ÈeŒüZküa£±rq¨ØƒÖd+"ëÝæºíß) Ï’–DÖåƒÂºš0R¨°ok\ò‘|Ño+a¾±ë,¥¶»«kp*NN®– u\;óŽªÑsµ±‰ÂŒ”HÏÏ}x['Þ÷öqØ®ne¤fÐǵ°~scã`Ý›õ¾È[k#Ðf yS#Ž[YSQû­4< Álló6MÙ&˜ÐI¾°ÍÛŒEÙ >±;b• 76Q#«Q»ƒüÍHÖúœÕ¨ûlló¶¯ÿO"Ó$û¡%’mãñ½Y é›5oòqŸ{h¿’àzh‘¤4wò³J­¥oÖ¼ ùNrû¸‡Z&©±DmÚ•|·´NR µ'+ƒüîJ–(ûz:Öo+%ë=L£³i†¿%ïÂ6oJYm5|å¢=ÔZɶvù"!¼[,©Œ? #׌búÍ›&‹ÁÛ¥¡; å’õ®ïu&BçNë%un$ž%WÍ£x‡ÑzIéSù± п­—, Ì-³íöx¶y{÷_;¾Öÿmlóöî!òwþ¶ys1ÖØ&véߨæÍmQ6àP,Þߨæ-Èwª;K…žÛ¼ÅâYi ±Í[(‹½{ .G.ò`…Öƒ/lUé ö]ýÓ‚ß·õ’•¯önÏÙ÷Mö‡mÞö%IÚð…Å…mÞÒ䓿…õRÛ¼e:ÙÊ©8׳”°+ïäÊ«Ää©j{° NÞÎ »·°ÞX̸,ÓW‚5Z/©îyäû•„̓Å{¾f?“æ8Z/)7t‘ß]ú&bÞ¤¬qZgY«æß!AY5 ÷wcWcÝØ.؈gc¥±hWW>iàhÁmÞæµè¾È= Û¼MሑÙ;£õy÷"|öæòznóöžwÖw¬“æ8Z/©®Ý´çëâÇïÐzÉþNi,šJ{¨õ‘Ávß6µ‰ãÖK K™_Õ0.aµ^²ë¦Ø×tc›7ŽÊšù2|®,Û´>ÉF­—Tly‘¶5ÇÑz‰(8?÷]hòߨæM)W­ ÿ\‘ãÖKDÎÔ»Ô8éÎj½d¯Ö «…&>·õ’ê^Bûm;ŠüÜy°r-¹dÞÂ6o~ÍÄ=4±<¾°Í›´íkª_Ò~k½¤9žë:•îØÖKÄ…uûÒ=q­·^RM>:Ìxî´^"1&q\Cmé¹Í[(ÞCvÇßÖzI…Ú•í3¡{¨õ wâÍeÑû¶^"A1‰>P÷­—lGII‹×´vZ/‘wYw'!\J6Aë%òžêsrFÖ¢w°ƒå3ªn1úmoÛªžäw§(j™£õ½ãYµÖÕðÜi½¤ÒF8çu9©­—è˜Êkga¿¢]“r½Ô u£Ñz‰¾CžmG…å…ØÕØÀxa5:qô/Fë%:’Ͼ˜ƒl˜ÖKtÎ _Ï“âd£õK8}äÂÿÛ¼íO–l{Ú"lóÆwáí££V1Z/©Äg{+úkPIcyóÄ^cÛ¼½›gŽÓý”ÖNë%Û€Y¤§î#㛣õ’}eqå†nc™Þ·yûµ`}érFwVë%ªÆvI5cÁ5Ùz‰ªãskÂˤ3µõ’FvÉ4ÒÌGë%ë”öŸ5Ùz‰¾§Ôµý@së4>Xü¾¹¿ƒÐžo½Dôú® pº‡Z/©dJ\V*5ØØæÍ^Ý1Û›‰ZÛh½¤ÚqJâšmÞÜÎõjºJïÛ¼y.ª¤©Vƒh¯·^¢¿ È?Û~B¶Wa›·XC)]#×Në%ún;ÔIô>hÏ·^¢!˜ÕQ™=¬^Øæ­R™Ð&Øg;­—”ÀH¹“I“Û¼E$é¿yQþÃh½Ds²=Y·ÞY­—hb&Ð]ŠùñÛ¼%Å/ªCÊ¢»¥õÍâ­J„‘·ÖKªå®~côÜUo†6Ál½Ä,’ÖäÚëÏ’ÖK¶?Îo$úd³õ’ß+¼bÍ¡¨{ÎÖKjviº5îh!¶y òMõî½AÏmÞb€n´ï–ùž wc[/©Ï Ts².!ló–*l$Œ*ló–f¿¨²\¿­—l,Æ’¼Ìú­—X~ÊU^؇· ˜Y­"è·Yc—rìvéÄs§õ’jEšBÙ ¸Ö[/ñqÅ[ò]}ÿ¼Cì§Faý¶ÖKjò#ÝûêW|në%>>vÔµ@f(ì<Ø$Þª =w5Ví3'Í|¶^âƒÖƒVÓ0Zg­—øH¥š­ø3þ÷ºnló6‡²f8rjc›·w'¥öÖÀܤÙzI™+\bfšôš·µ.:K®¹&®‡ÖK dÛ…ºÑl½¤æ§‘oZõQø­—”²>š.jx³õ’ª›& D† =9[/ñwçü¶×1¯°Í›®¤÷­‘3ô¾Í›¾ºWÓ…îîÖKj*•|mOä¸õ’MºßÒ`¶Ia›7[h{úm&àÕzɶm”üã°I÷Pë%nŸ3ª"“¸ÎZ/q§VÕÍÏêÖKüݶí‡$¶^²Å ½o;H“žÛ¼½;=߬’=è}›·XÅ[Ê…Ü™Ùz‰‡®‹u¹Ä<…Ùz‰sÑ]ëlhW·^âaÆõýÇÀª¸®±¤‰UšÙïçöYÒz‰G~lÄ1èžo½ÄspáU,§û¸õOÊ9½S¼bàû>¼Åuñ}ìÖÒl¬6KtJc¢šáµÆF’¾®ã¼ ÙzIc ÙöqÑÙ×zÉérô¶ &Å gë%5P”cÛ€ÀïÛzI l pËNIödë%1‚»Él[™Î¾ÖKbtÏË;§áyî:XsÖVØ>k½$f}³ÊÁÁïÛzI, ò~Vþ°ÍÛ Î/©¸a›7¹„üù}Ôñ;4o"x>T¯Ç+éû6o:œÚY\Ó~zµ^ò‹½¾ržh¨àÆŽƒåsr¸Ðúm½$T„4è_³Ãßû¶^J¹ãZ³b0çt¶^T>XÇï‘IÏs›7Îí¨þLN÷Pë%Õœ1¹·ËÄœ†ÙzÉÆ.jté$_¤õ’Ø[(Ñ?ÞO<'[/©Ð ï·ÄŽ%uˆ=X¿‚â›Ûi‡æxûÿiÞ|±ý[•ë±Í›Ë|NÔ£Vë%5¶„ìɹ‰ÏmÞ<ô‡ê>ð¹Í[$ÞÝ5xgWÇì›—MnX NÏmÞ’r±Ë¥#ð}›·Ä¸é¾ ã¢àj½$¯dÿ®å ÿ©ÀucÉ.) ÚÑ÷_­—ävqÕ—B;àjþ?Ýq}⠤ůÖKr^“Îß‹FÔn¬ìâ8äÄiÝ«ëxªü”Þ×Ö¸®Ó óåVë%9eQþ™8ŽxªNÕuöc÷fÅš•ÕzIiÞ¤]Ùfª·icc•“¾ ºuc›7!¶|œÀXÝj½$E‡poŽ>Ùj½$ÅŒ8®Ô<üm­—llÒ}qU"&>·yÓ9H©£~ás›7›Ã?ú/Þ«õ’JcÒím]„mÞÌ!wñîÖJ1ŸÕzÉÆr{.H-Eº±Éºrªá°Z/©¾ l+ï;ÎêÕzIzr]ò¾ÆPŸ\­—TúÅvIbrµ^²ý>×+ï ×zë%ÕȇšâùÐÀõÛzI¦ñÙ·]QôyWë%™hŸÕ‰÷ñºõ’y×–R Ȧ)è}³±6(×g›žèë­[/),®‡;W‚ìõuë%'†tÕñ¶Ïð\¿õ’Â*ÖY۱ÎrÝzɬ.rN¿­ºÈáývë%76ò£AÓ¹~ë%…¥b5on½ƒ=ØE­ôÆÝöχ[/),éFÕë)“žëþiË4é}›·•™Ü¸dÂÀƒ±´yôcŸ’YÇõ Í›Ì4Ömå¥Í›û ûƒ£/²´ySªÑ½õ|‡æÍ†²N66o¦F¾ˆÙ´K›·mEs,) Xaý`“ÎßÊ´Ä}¡Í›a[½ò ÕÈ>ÓæÍ/nè¥Æ65oqá}1ïFo¸Ö­y‹}Êï&-hYóú©-I¶£¬yKÊSÈ;…Þ·yKj%Å1Æ|–5o¹¸ëKÝÆxþZó–69·c\CYÖ¼¥/ºcká:³‡7˜MÛvµæ¤/ËÆÒ>Öû·áZ÷ë`ξ}Ea>âò‡·J¬%ßi›®X+·|þ°töUî îcxãY¥?Ž6­.;vQîíüwùD~¹6–b_Û/tlæ°±ÖXŒß)^‹ì(÷Æk õÃ7oÞ亨ïë8”dcó`1¯ÍªtótW4o\7.\k¿¢y£Χló‚V4ov]Œ}ÿë`ǰ•òVV4oö©CÉî‹æÍ"¸N­†¾ ¶ysÌ­«XÒ¤:ÀÍ›cØ-@ߟÂ6ožÈqÕVS^ÛŠæÎ³»ë^˜Í[¬$ z»Á¨A¯lÞ¶=H¹>1„ìÉlÞ’êyïi±¨½®lÞR'Û\–´çóá­ú‘/ïÔ±ç¹z°œS¶ßW kÕ ˜å¯ÏÊöá­Ž®Mì3äÃÛœÔ$­B¿ãB­"³±rq£å÷ìáÂÊu¬‘®<”ì¹Fc“ã8¿ììó¾r=¼Í•ƒÎÛž-=w¬Œo^…#V69nà”Ö:n¬ Ö~-ÑþžÛ¼Éäõ»Œ4h¹š7[¬ƒGÊ ÷mÞL¿¹Ø”—)Wó¶M{ÊW–Aµ02š7éàRuÑð£ysa d»ÁîøÜæÍ=‰·mŒbœLFó¤1݃½ð|ѼŜToZŸÛ¼%6 z‡$}‡æ-±OÃ]f!¨{Êxx«|Êks :8í¡Õ¼™s¥£Â¼žÛ¼ù4î9 ýÀ7¶y ªÝ¹;7:ž«y‹¶ÁƒìjYÍçef•›`ˆ¬æ-÷ßÙænÐsã`ƒì_•…š£´^²ï‚µ>½Cèni½ä7*ü]"—–ÖKªäŠö…q¿+i½dŸÙwª<]ü¾­—ÔAò‰Iv%­—TMÝ…® ýMi½D~=æÿb‹Û¾Ä>¼ õ8ÝosÑwðƪp=¯\Nσuå3 Zè¶y[ŽvjÍ8 :ûZ/Ùüñëk¡)­—” â7¥ÒzÉþÎNùö Åû¸õ’šzÂ{S ýyi½D4¸¼L{ä¸õ©N¤™Þ³±Í›Ë¤xËv[…ÞÁý¬¬­‚½8¤õqE›¶f8]˜¿.­—l,Ç!E•ÎêÖKöÖJªPº7[/‘pîg¢yk½dÛЃc‹A=I¤õ˜|pr}.'ìÛrcï»w2­ßÖKÊ´ ªkÖÄnRZ/ÙÑ©ÖLì°_MwüÛ¦8Ùë­—ì{$Éžôq¡þ+­—èÌäûØÂ5ÙzI%öPüí—Yú{në%{åøGGtì7(­—Ô 5>'5ïîÖKJ™ÜפüÂÊÁÙÊÛPÁø¦´^¢êù™M!dƒ·^²×µRœ¬éáÞl½DY#½KžQ­—ì‡ ÒíUœü–ÖKÔÇäš ÃAd%+6V•Ï“êó{‡ÖK”Z¶V‚º/Z/ÑÀ»°buïr¿çš·}L®ÏpÜöÞ­—ìÏ»(ÇpÛ;;ÖK ˱º„6¢…}x³ s;þ¹GÃc¾†´^b—}jH'Å:¤õ’íw ²SÅ’üÂÖKªsP/™K0~!­—T_f®!]Ô#AZ/1îÐ^:í…}"¥õã^æeª,ú¾­—TkfÊ+®tZ<[/±÷æ:ý®H·—ÖKL1Þ]w÷uÑžo½ÄôÓ7t;^üÛš7˜O[9ÿF{¾õ’*'#<梳¯õ’ªI#¦Êà¾ÐÖK̃cù3'æ4hë%Õ¾„r\–@‹¦Â6oAþfµ]šüÍ[dPíúZTç®­—õâ¸ó Ïjm½¤þœÔ§yý«­—¡ÜÿÁqÒI Oo,­³{¶Ò ßöðæ#?ùAuÚz‰¯É>d éÅïÛzIu§sgï6Œ…jë%N½5kàË6àÐÖK\Öüô¸§þ}Úz‰ka|9Ö;ië%®)¤¯Û%¨§jë%î#9?•Ï(m½d[%æÜ+x`\Z[/©VF“ûú(ÚQÚz‰Wϧ&ï,m½d› ÜÑÌ0?J[/Ù?xæèsa¬C[/©™4›1C­B[/‰}0î»…r´õ’ÎSÓjŽ=Wû©ŒE=Fµõ’X~qÝA„ >÷á-äÓcMIÂzc•{‡ì%‚~·¶^òkôÒ¶…bØÚzI•… ×…’¢­—T½(Ç„Ý1GK[/ £~ÛÕó…jÏ´õ’Š{ú§nk'µõ’ÈÄž|Q“c1—J[/ÙvÅà3ê ì3¢­—l?)õ£—`ŒJ[/É+xŠÝe};´õ’empÿ¶A¿íáí×Sï5SÒ ›]œg¾¯Tznë%{$÷ZIçoë%5¿‰ú.…Ñ…õù‰;-¬7ÕÖKr ˆ¹ïóÌŒj×µõ’Šern’\J¿­y[ÆçC¤whÞäÃÞ¿óеõ’ÔᤗØ;OìÁ6oï`æõ²&a›7¥þ\¾}tÒl´õ’}c¥²Æ#ç7¶ysÌùºãcüB[/9­?Þ9Þ&m‚ÖKª†ƒ4…k(ý¶ÖKªüó×gÒ™ÚzÉþÑüÍ"ý,m½¤Ê°éΪÑ~Èqë%¹ïHÒSËDû¡õ’š.¬á]N߬x[ßñ©•¶5híÜzɺ“ÙNÅ’¸ÂŽÆRo¬ÊO5Ô«õÖKjFßc¥*/¨šn!v¬±?/“¾ï­—ÔØ`ã¾>9)?Jo½dce Ç,¯5ðž¿õ’:qHÉ­e!¬7{°ÝuùAûíÖK ëÜû¼”f¼ ­ysª³,ŸWP»R¿V©ö¬†UBmŸzóæÂ9†5Ëß×›77Ή¬G¼c½yKêÍÛN¥~ êo%A“­¼­3²K\ëÂñc#­Mýá­Öêúö™F{Ò½±Cˆ7±…ýíÕ£±Âë¡Êq¿ùÃ[%²¿™‚q«±ª¬ÅcûˆÂŽÆÛQ5IÏߘMå¸éJÃû8ÞJìçýæJû-š7]<Æ,Ué>ŽæÍt’U™jø}£yó¹è.ÜÇ-ÙgѼ9æ¸ÜÒøO êµÍ[ î‰j˜“£Ñ¼åÅù“ÛëÆ8ƒfó–c|t.¡ó7›·Žì×¥»0çÁ²ž*Õ˜ ±Í[÷’©ú&¼Í±0ÿaÞ¥`È[Zc}R/¤k‘öªùð6'õ‘-ŸÌPËÔ|x›ÛIîAìF\<¼UùOp?¼‰µv]E¿­zóÀÞ´ëá­NZžÏ°hÏÛ5+\ ^-àé¹oÓ(_Ϋ2æ¤ÛÕ¼íÏÀqÈ\[´«ysœsk ‰9²v5oþÙ›usÓsý`¹V¹$~Eló¶zå>9Ô÷Ö®Z¦oª4·îBAÜt46>¹TÎkRÞöÍ‚—ö:QË4]÷}náÚч·ý &åL/a¹±ÚXšap—-` Sk¬s/¯kP,ÉôáÍ~ݸ^y¯#é¹ÑXã>D5>ƒ¾ïÛMãï+˜ëc­—ìs˜s\ÊaÀ÷m½Äk@n]ƒr´¬õ3ôMÿ{^Å<k½Ä 5Ý:×åZ¸[/Ù¿Œû?ŒXèZë%æÂ}…¯íàyÖzIåáÓ}|ªP^ïÛ¼åÐÏHQeló–¨UÜíГlÏÖKjân°^ má7¶õ’MãšÌDÇZ/Ù[ÈHS¨ƒ¿Yë%¾mO¾/®eô܇7Êï›Øf§°o>±'Ô‡7é>n½¤><Õˆí_ô¾oÕ³ˆbå]à>n½¤Úv:¸&[/ÙX§¸È)l}aÞjf#ó>Ñšßû¶^RŽóyf˜ki­—T®û’A>oë%a˜³WÏ ê“n­—T¿lö¥UÈ&h½$gÅ?cAéû¶^’Û|àaÆïQóÏ;<¼eí<ÒHßôƒ}xËÞÊ=uØæj½$E8§AqpraÞrÿhúmÛ F[Ù[/I»¸g\Í” ÄŽÆÎ‹zm„Ðs×Ár/¯í‰óûÊÁ õ+¾~}Œúûzë%Û· å:ì…ûÍo½¤f3SÿÔq—åù[sô[/y°l÷]Tså·^"Jú¾uü:þ¶|°s°3/ªKò[/©föëbM!&j™~ë%5XvðŒ?ÁÖ{…Å^¶wO¾À³Úo½¤Ï­‹zõH%òÃw¸õ’»8Ž>µ+¿õ’2BÏ/¬>ø}G󔘷þ;Û¼¥²}¦õóÍñhÞ29c»ŠBßìá­zsÜ©æ;v>¼UÈ·Ví3Ÿ£±Áu–Ó©¿‘χ·JçÙJBúºÏ‡·88˜×¸œëã2î8ÓØ§6ÖxftµŸBÞæÃÛ¨õtYâ=äóámÖÄLÊ T;é3kÌñ†ñ!ŸoSÖ$»¯²Éáðu5Vœ´â9&êÕ¾Fcc‘n_¡[ð|=¼M½¦rÎÞ…w·¯ÕXœõŒ˜ôoÛ÷º‡‚g ùzxûÍÚ|Å÷½€ëaYc“óö–Á8º¯æ-?½Òª'5®õÕ¼¥ž)/Á¿íám]ØïªÎ‡£Hü~›\Mî=¦²0Ðåám å¸tÅüðäám­!ŸÜñ m{—‡·¥Ôc4ªt˜î ‘ÆêgGЬ"—‡·jÂ>/޲.ìÛ\Ô é?‹º†ËÃ[%•rž¨—KlòŒ“õ“¾úL•‡·½Ýœò uÒÜIׇ·mz&åƒo*q¶‡ëÛ¨púLÊßq}x§¸^µ!PÔa\Wc“ë!uÙ;úð&!è¿UzkbΓ«6ÖxþÅ•ƒînmÞò׫PaÞt\Ü%0ôP؇7Ôóð®çMèOàúð¦ûËOîáº0¦æöð¦‚ñØÚ›N}ÕÜFcǰ÷kaüÂm6VxNÛÌ38ÜÖÁrþÙ¥ƒîB“ƒe ä8^¯ç>¼éÞ‰cIçƒ=¼m†u¹³¢ÿ°o6gj–sM¿íáͰ¡]ý©¦;o&ʶ½† OæþðVî<÷‘4SÓýám»Î9é8®¼°o¶­~ž›:(ŸÖýámûê÷¯Ùeô¾ÒXòc%©–ûÛå§÷Üç7Þoþð¶müäzÈ5éûúÛ/êçèÕFNè›Eccoz¡LV؇·}LîÓÀùÕWc}rÆmƒã™onX3xß›IwKÌÆ’nT½ úÇoû7.š¿)o­øÁ>¼yØ'×gQ‡·Í„Óü㪘Åó!š·$m¥Ž¸iô¾oÕ@Ò8Ž>ioÆÃ[¥¤óÌÝ$ Ïãá-λí>êÇäùð2„µ«ù+9üßç¹ùð6Ó?uùd#æÃ[^“ë³öéplå>×s5–zW¯š­ä)Ë}ˆj: ®ß|xÛ—Å'=/òcó᭦ќ+Áq …}xÛ¦9û2ÓéûFc×´O>×Äõo%Êò|²‹îظ®Æ ÷ŒÛÀúî¸Þ2&מmƒ‚ŸÛ¼jWµ7…r%âÖKªÉ×ä^tª ëâÖKî†`|ž]ƒx‹[/ÑÚˆç— Š£Ç­—Ô¾ÏèªL |_°û[Ç ÷[Üz‰Þþ<åïìsó×ãÖK´ú‰}fæ)틸õ½sé,ÉŠ[/©&IØ/hï‹ýJ8‹$n½¤°lOÚoLì³ßb<¼U#`ç~ Ž91Þêt ûÂôׂå<÷á­.·àÜÒÏb<¼•ØÄ}oôÔÞØO¾²þòÉÏ}xaƒgép^fŒ‡·I˜¬Ñ]ój,Ír¨>Ž9²1ÇÁ:Ívõ7Šùð¶uî XýÚð}çj,Í1¯²&ÇXṘ·½÷¸;%¯ïðð6i¶ÒÿÓi›ãi]ì;å´EßÌ‹ZPå÷E`\/æÃÛÔÉõYU%´ûð¶‘F{¨f§ã;¬‡·#©ŸÍTšëámÕ!Å3C m¹Xo5d}âCØK1Öj¬Ëäú,ªÕˆõð¶gÌ´ê …y¤±´±>¿ó¾0Ï&ÖÃ[¨p¯ëu9½ÃÃÛ²O¿Á`=VlRÎÈ>‘…¸ÈÆbÄmWSO‡·åØGà¶U Û¼QMÅãû'®3iÞrÍÁsKj !Í[Zʧ7,Ý…òð¶ïH°£*i]tËÃÛþ:ŸÞX*8—6äá­NpýÅ\Xçòð¶/7ôýWõcìÃÛvRíM‰šMÈÃ[uày·6°VèÛc߉öNèhl|´×a´çõám;ä\g¹;º+˜ãýÔâ÷Õ‡·ªAbÝsÿC¸vT+¬ Ö !\“úð¦”×V9DÂç™>¼©)熚¥Ós£±4—¶Âw u£ÐæÍ5óJw¾ÈÖ°æ-¦|ë„Ñw kÞhÖËïyît¿ÙÃ[ÍP¤˜Oœôõ?ìj,Ö5ßþÕQ…Icý€¬KØÏ&ìá­´ ²öD}=̫܇¨ÓwxxÛÖ$çAW s öáÍœúUÏ—‰½Ò²±Î9 WÍ^ûدÆfð|‘d§úÛåÞq=ÔÁÛ7Ê©»Ûö xó+’êcËÄýæo•üŸ~6èdž?¼ù¤YPE»ýëo.ÉujvMŒã„?¼m"¸æU#12<KS¹^ºè;dcƒ}ÌE<¼Õ¬MÊ ¸P+ŽxxÛ¾ú ½éû\¤çÎÆâL»Ýļ•ˆ‡·íóÙ§¾›òi#Þªñ'ݱ醺r„66ÛI¹ùo1×'/~]¨sE<¼m›Ã¹'.Ô•#ÞB©·[Þ­ð>އ·Jù§÷ÝÙÕy5ÖGp¿6ê»ùð˜àÿÔãÐ\ÚÈÙXã™ ¥r¶yËKìÿogó–¾Óv™ÉöÌæóªç÷¢{(ÞrP¯“J«‰gTzcQ3¿í3%ý!£±ö©åÒ‹ü¡|xÛ÷šNyºy]»>óBϼFcýS³’ê„}xÛF¿n_“ü±«±¨Û×v êÕ“­—ì]”+¼­QÔV²õ’*‡¤\”ZþŸÛ¼¹ðœ×KèÎÊÖK›2<õNο­y‹ Î3ϽoòÖK*!kñÜߥÔ(o½äNÞâõëN}óÖKjpÙü̶»ïî¼õ’Â.ÞóŽ[*ì:XÌEYwoXE¬<Øåœ›?…úÿæ­—Ô@öË>µÊûJä­—6?3¦&åºç­—T3ÏÁ¶œ­‰yyë%…Uö¶û†ñîÍÛ/ø¯×ÔI ý½ïlÞý–šåTž³yóœÔ3n_o˜#³y‹‹sþePM|Îæ-”u®5{¢æ|x4pxL úmÚØàºæ}úmoc|òŠs¬ wðƒeMlÿÿxgåŒÆbþäݶFÑçÍùðVÃÄ?¾t`ýq®‡·qRQ^½Cæ@û!×Ã[5âZ¹êˆÏÕäzÈEÚk®‡· ê“—Ño[Í[b—»¥ª þ«yÛ6÷:Ô—*—,LJ¶u‡ùr¹Þf%â±Eyx¹¢±XSq÷’ Ôs=¼Íññ/DëÑS®ÆÆ »/E1†’òðV#(ߨzzÐsgc%”µŠ—?ÿ¹ã2±§zŠ46¹–k&Í!MyxûÍo{íÍ‹úƒ§<¼M£œÿŠ\FïÛ¼9éÕe†‘¶’Ò¼¹rå9yýJóbÁwìoÄÄc¥6o3þ*.Ô÷ µyK_œ#pB‹؇·uå§îk Ý›úð¶ÐèF>‘?”úð¶wû¦’T ®S£:ÀÔ‡·¥ƒsgª*ñ·ycq`õkÛkï }x[f;U.ZgúðV f©²¦\àÙgWc…gWUÛEÜC6KïP:øEçƒ5oû.ä:”É Û¼åâžãºßìámÿf¡=zQ½iÚÛ`QåýÛÞiÖ‹s£þûÌCŽÍ»XËÜ^Ö_ïûð& k^ŸvþX·˜–ýØ0{·ÒýæWc1ïµbjö’šïßæã`¹»Jl;KóªEžcŸ½ô‡7±µØ'‹¤{È›7ÿ̨ýhx󯳕ªÍÆMoÞçÝíAê“éÍ[^Ü3n!í…}x+M–â~¦›ý½o6Öy6;†È¿ˆ‡·Í0ƾ²jw0Þ’1N~Ëö é›ÅÃÛ¶·…´«5ÙÏŠ‡·jÌNþ±4è¿çJciMV8!ƒ°z°1Øî£œ½ k¬±/r)å]exc?³H¦Ê¶y3ã59¯yæ͛۠þ\k*ÝYÙ¼9ùC'£ÙΙÍ[Мâ*s»0vÙ¼¥á}QeŽõ"™o•åÈ:¢ÖwgJc?÷f•>àÞ̇7“ëêöUº RæÃ›-šeV%|N¦7–úJ¬êmA÷|FcóÓƒ8/ºçóámŸ\<`BBýwýèFû¨½dcÞªÌuödj,êrÿ­8ŽA¯à;ô`}²6¸‰€Xþþß›7§«Tùò¤whÞ¶IÊ38ëB7¶y‹±ÈçÝgKÐû6oo‡ñ×oß÷á­¦Yr,I0}có`“ûéÆPªsZc?½@×…ûbcÞ|LÞ›öžý´^Ôǻ·K雵^æ3¹§z€´±Í›ÅgÊþïñû¶^9æâš Q<Z/‰D=ª\Щ“¨šó›æ—³øèni½ä3g»ZyàÌÇmÞBy­H˜ ¾±Í[„rþƒ-Ú­—d.®¥ º[/ÉLΑÝïëï8ÙÆo5 ‡ú™W¾‘)=×ì\ß­Žz߯zc…m{Ã2–ÂFccrΩNº‡n½¤š°^N}Y+…wì­—x5V®Yý¶[/)ìÇo©~©ø¾·^²±ªÜ¼ö®³[/),åËiå4,<n½dc gŽU~j*ÙÖ¼ÙâYɦéh?XófÂýåj}àÞ´æÍ’{:,1ÚóÖ¼Ut›ërÐ;4oŽóPJò9ð·yóVYw”'výJ/{ýzó¶ÿ̺\qìÍ[ ^¾)´¤,ìÃ[´«?½ïÃÛ¤µU©èE¾ˆ?¼yqM›‰“½ãÖXê+QkÇÈgð‡·’Ë÷ñ ²5üá­‡N<K »Ðó`“{Xöø¨ÆJÅ> wÄX„5žã¸W/ù-1›ŸÙÃk,¼³¢y{'Ú>{þDêþ~[4o6Ù.ñ!äoF󿯽£ŽŠ)ló3èL­Ö.¸ç£yÛ´Q®š»‘MÍÛ6°>y W mÍ[^œKµ·gÙ¼åbí*ßýKîçfó–2y®r½C΃MޱfÐYoåx*÷Ãï–”ÆN®U®…Ž6A>¼Í!<Þ—_hkäÃ[WÆGSXô¾o‡¬?5b˜o_åœV(–Tý'1zcó`r¼+{s\o“grW¹Ù“ãzx«æw‹s°èÆ>¼ÕRž'‘ =ªÁƒÉ6LµÍ]ˆmÞBøÖ;oåyßæ-,IÓU[èCŽ«y‹äl3=é¹Í[NÎk³ #Ó Û¼%ÍvÞ¶ÜÛ†yžûð¶pÀ““ý‹1®Æ~çëé0c<¼íÕÇuî—`¸¥\÷ø÷4´~½ÃÃ[MÒ¡ûx`{¯Â>¼ýÚ­¼â8º ïÌÆê›Ÿž×ΰÆêH¶°ÜÆúÁÊG÷Äú’æ¬÷¤.f ¶ySªU–»NŸ;›7ê±TýíÙös,÷ žúë½ðØ0c6oN½jL€£??æ:XÔª>H–…mÞœú~yÍw‚™cuÄ>Ø@½äÎñ¶‹°Í[Ð\¹;”j„õƒê)9f,ÜdzyÛN$õÐÁŠ5¾±r-îᑊÏ]Wci®gü{Mì·±oÕVX¸·Ð…~ÖX³±šÆñ–‰wáX«±ÎZæÄÑ™…}x«¹Td¢N¿MëÆÞ\P²±ÖXÊï+ýw¡½3ÖÛpßP¯ší wˆÆZ|ôß@߬æMRÉ>ô}¥ySe]c;…ÏuiÞ4XÃËùk£ü¿Ï;Hófƒµ¶ Ç]Ëýûü‚eZØæÍ”k5t`l|c›7K®ïÞ^ÚgCš7êg^¾?ÍlªþüÁýaôRܛҼ…qý¾Í ׎4oiþéýètþêÛ^cRÏz{Ëèv,ׇMz5λš†=(6öáM±Èë) |õ`{ž+M>ö5Dçzë%:•ó£.êÿ»±ÖXÜOW±_ñÆzcƒû^óÄ66V¨/`Û;­—èLž}©×¤}ÜzI;æ…÷²Û¼­Ï>^бæ›“soÇ…·^¢ØøèîmqéÀõÛz‰êî9kIgIë%ÕZÈ?zªàÙ×zIé>´vªþ‚Þ¡ys]þéuB÷fë%Ës¶×b¦õ KÞCžg­—h$ß›§ÿý§uc›·\Ü[Ó§/´[/Ù&÷] Ÿ í’ÖKªð…g½”ûV»Œ¾ïöbé|h½Ä®ä¼×ªPǵÓz‰™Â:âËt•ë¥9mòï1Ê_ß,Kõ…÷ñÍØüaioú4úf­—ؤü³j¯èôÜÖKªBsö”ß·õ›2hoN½hµ^b30G ¶Š‘­Ñz‰U¶$×u\“žÛ¼-êxß±dƒ·^²?Ϥ>9Q—!b›·Ün[aüÛâ`¹þâŠ${§õêW±÷¼úß?ußÖKLhýF]7÷ŃmÞD{cíËq!¶y“`«Ò¶ð·µ^²=ÿtžÓ6é|h½¤^v່â¹ÞzÉ6a>¾éǶo½Ät|ô’TÌ«­—˜ÎϬ¢}j¡ Þz‰íÃzqÞëëÞ|¾Yó¦Ÿú–k›£pžÍÖKLƒmðÊ ƒß6[/1¥¾wêù=ëÆÎƒå>pó2õ<·yÛ‡*×ùÎg¨Š’ÆÎññ’qžwhÞ°ÿΡ¯»ûÁ6oæ\_(׫g܃mÞì3?¶ú”Ñ÷mÞüâü’½S`¾ôÆ6o>xÆõ%­—˜¯OO>!`¶^b®â»5èÛQõ†5î]ãnŸÛ¼9Ík®«) Þtcå`•4¼ý]×Në%×üÌ2›“~›,ç4ì>Ãl½¤rˆ+ï—Ï;ÄËšØ0´•gë%ËiÆŸ_ãO«¸ŸÛzÉ^:çï`™qaÇÁzr¬î¥‰ÝïÐz‰ÍGŸe+ã0[/©ùÝó“ÿ€±æÙz‰¡(Û}8®ÉÖKÊsJ®5ǵÞzIõù§\ÀyMŒÌÖK¶Õ÷‰ulŸ‘žûðÅ¥}ÇÎW ÿÃE,ûþûbBŸa¶^âì¿•þt?·õÇÞ»Æ&'j޳õ¿Pû[÷Nâ­õ¿ŒãèÕó›ÞAvQ<«Jêñœl½Ä/çsç7©öבּÁõoY¾8bý`ƒr´T^mìá-?s*.¬ÜØæm`?±g¾)ÆÔfë%Nõ±Çy§´ßÏm½ÄÇÒOžc®‡ÖK*Ÿ›çÍÎfÜØæz?³½Có6\÷W~é´7o­—øˆøôuO:'[/qêÛqǰî‹ÖK|â=TÚë5ۼ͎…®Ä¾¬Û¼Mœs¯³Aë¬õ’M>wâå‚Þß¡õ’í¬Çòr¿fë%umòì*¡<¼ÙzI%þ}úáLùmÞ– i¯ÕJ ÷[ë%åZR~ßv½’žÛ¼m‹ëSÊ{¨õ’*&äºü\Jß·yÃâ›§>VP˜­—”Oï»í C;ªõ’Z½Ÿ½ù ÉÝÏm½ÄÅ.Þoq­—l¬}úïL:Z/q!ݨFʾjlž÷mÞôŠ‹{J^P/½±Í›Îé­±HøÍZ/ql0ûÌ´€ö«…mÞÔ¹Sõ,BÞZ/ÙX^“{Ë'½CìgîºêF³õ’ ªCYq¡ß2[/qMÖG -Elófc}zõ,ųºõ’²^=.úm­—¸Ñ|ÞÊ1t²5Z/qSÌcÚ{s¾êÆåÆÚÁrXY©¸~[/q³O=ï|åÖ=ØæÍ>=ÂÖ»ÇÒƒmÞö*ã\”x¥mÝë·õ’ýØFyažÂl½dîí¦4¿¥¶TcižDüûk÷÷Í›jŠ÷®üm­—Ôì?ùÌ #³õ’Jûâ÷/ýaí`•rÔ'Ý­—¸ûú̘ƒ°q°Ê¹¡‹´¶Ùz‰× öÉ&æÍÖK668f¹œ~[ë%ÕN”{êè0<'[/ÙX\“56âUZuóÖzÉÞñœóTé¸Ö[/ñøô{ÝǺãwh½Äýª•óÅX;Xži¡—mÔz‰G é;"“lûÖK<×å¯HÌ™­—l,ç1­Ë1Wxµ^â)ƒÏ>›0vcÇÁNªÏ²mÀֶZ/ÙXå:À騬ÖK*™úÓ ë’ªwOcƒíê´ôÜæmûù¤­ì; ïîÕzI¹è\7n±ÛÕzÉÆ:å²^) ¼­ÖK Ë=–ìU»þ¼C6–ü¬ò¥ææ¯ÖKâì©çõ$ìh¬óìËꟀïÐzI|û ï½:ûðVvgûhF_dµ^ì·Ô™Šs6V–í’ŒW¯v¹±ÍÛXŸØíšÁjCÚXª¬Ù`+è·ÅÁ*ç)äB¿pµ^²±Æ5™®†k²õ’¨©³t½[Ýk§õ’ÆuÍÛ䯼âÕzI ìÿ»[Φ©ù_M³oþîùÖKb^\äÃð~[­—Ĭ?È»VãÁÚÁ&÷Š˜ó•Wë%AsÄn=Õ1ΰZ/‰÷`úã è×¶±ÍÛ¤*³•n.Z/ ¶ùœ¿6‘ãÖKbæ'pQžØj½$NJÙû2Úo­—Ö¹?×…úÙj½$Öœ4r/õ¹ð·5ok)í‹x×à=ÏmÞõŽ.È1'rµ^ËÆä¹r‰q§ÕzIͤ{Þö¿Iß·y[Îsiç÷ûm­—l,ß…2aœva›·œÛ|¼–¿wÃ[²m´Í&â¢õ’Ê5ãþ%IyŽ«õ’ÜËÇoV–Ïê:´ŸÛ¼ÉLâM gÈlló&ÊgÉ6YÐ7]­—„P¬®ê³l¶y“üôê™Ak§õ’P\ìõ‹uu«õ’ã}¡9°Žjµ^ìgí/Cß·õ’ˆ]2ßùˆ¶yË‹}ôùÖHì:ØE9ô{ -È«X­—ìW7Sûy®좾Õ3¿oë%UtBßaߤô}[/‰_Sɿؗ*Õ­—Ô‹±fîk˜Vë%•(¾¸î–4›ÕzÉÆò<3Çëj½ä\éï;V&g­—ä¥ÈÛºGâúm½$/œËu¦ÚÉÕzIuAæ¹Q¶Èh½d_òÜO桽£Q³‘ÖKÊ ^øã=ýÁ6oóâ±}ç:ì i½$çüô vœ P#Ó6Œcãv%>·y›Âý˜|R>—´^²Ðä>ÿ‹ÖŽ´^’3Ø×«¬«DlóöXp·W[•Û¼­É÷f5(%ló¶DÇ$먤õ’jiFwV¥+;b›·2yÞ`Ÿi½¤R-õã›b¼PZ/Ù¡9ûdôÛØæmº‡¶™ôÛš7™ƒ9ö‰5mÒzÉÿÑ ÆÍÐ;øËúNRìKZ/I±ÉóEärÂæÁrϽBè¹­—Ô„Jæ"(wFZ/IòûŒ]¥¸©´^’Š3¦nÛhÐúm½¤fqœw/¨å’ÖKR±OÙ?Õ*P¡§ÙÆêÁ:õœþÊ¥º÷që%ûwϨf»ø¾þÃÒàa´[/IÃ9¯÷ÚQÔ¶¥õ’4ªµ×{d/ødÒzÉÆÝ-ÕSß·õ’½+„ò*6•´&[/I‹áÜ·Žjâ¥õ’ýgžõ­ï?Ïs›·Sïü²5&õ|‘ÖK¶ òñ¥3ðÎ’ÖKÒéü]å_Ðúm½$=Y÷¬úh\¿­—dŒONŽQ “´^’1Ù^¿LÑN•ÖKª’€x«S\­—T÷ÆÊ‰¿´^’û˜ü?´6°w¤õ’Êçó,Ö“Ië%‰n;jÑ=/­—l¬ržÂZ´‡Z/IÎ)[w» \­—ä[ÌigûJô}›7ê›_qÓ ìI"­—l÷`R¾Ü^:hÛKë%ë_úW2ðèÒzÉÆÆgζai½dûØFg‰óìïš·z Ö˜ó@äÖKâßý§>ô>y_ÜzÉåÜ™I„\ÜzIaÑV¾ëç‡ÑoóƒåŠÛÉÂÜP¹õ’Â*Ï@ª¼Q\ë·^rcùû^4k`Ê­—ÄLÂõYïV4÷so½¤°Ž¹¡Õæ—ârë%–j®öž_àË­—T ü“K•“ƒõ†‡=\7¶yXWw÷³˜ñ·±ÍÛÀþàwÏYÑZØæmP߯ʕ¸è¾°æmàŒžòlÐYmÍ6|4¦_No¿¯7oóŠÁùÕ cÍâÍÛ$»¤â¼¤+‹7oó3«¨Òtð;xó6WRnþ䨢xóVVï<Ý«Ë÷fUëázðæm_óß<<Ì)oÞfîr :S½y[Ÿ×d_Äó`sq¿•EïÍÛÂÞ•Oû>’ló¶ XþÞ4·zcçÁ²Ïm&ló¶‚óªE½ƒ¬“YimxžEó&C>1AV¢y{'嶆w‘v%Ѽ ùèYeXïîhÞØ¨ûB}‡æMü" ¯Ú–C,T²yÓ‹{é»ÖýÜlÞ”ê¨ê¹k=%›7Õ‹ýy_˜/Ù¼©}fI¦¢^"Ù¼©ó ƒšFï«듵̅ùà’Íkæw¬ƒüØlÞÌX+®.ôÛš7ûäL—%ˆ~K6o<¦z?N´ ôjÞ|p²:k-ÄŽƒºßdž%z5oNùF53D0ƪWóƵ%ë_™tþêÕ¼ùGk[‹j^õjÞœêòkt¦òs›·¸¸>Ö| ¯§WóÓÙ&¸lÒo‹ƒMú¾Õ:‡¾oókðZ?e?ìhÞ‚fˆWï1ꤣy‹Ï,j·9‘:š·HWîE÷ª¿¿ÃhÞõÒK"0oE‡üÏ'§µL7¼çuèÁ:ÍÉ\ƒòÁu4où™¥¾·qÐ;4oéßoséÁ6o™7þÚoÏwȃåz^}½Ÿ;Þö?Æú¤\ïM£±4ŸaýûËÆýÃÎÆâ<á;~1Ð/Ô¹Vý€ ó tJc©ŸBÕ¡P ´Nmlrïóx÷R|°v°œÓë\¯§Ó6é>'köûð6ÅÜW²úmÙXÁø…T®ðBÞVó6ÏöH%^WóVQQZëõ7Ä6oã›Õ{¡!¶y›”›4ˇļx]Í6F{t9ªÑÕ¥Ëù}îÔƒBWó6cržØñÒþ°ÍÛÌI¾é¯Ãî6vkWyÑ;äÁr=Nµ„€–æm©pÑ Q¥y[4 uû8ŸsGš·Ÿ>²Æ¼‰,Ç»«\÷…4o óSŸþhk¨ØÁ*ï “AÏmÞ¸ï̼geÐo‹ƒåâûsbl\¥y“Á:ø%l—hó&ósV/¥ûB›·w!ÉñEÆ/T›7¡ó¬ÎÀþgªÍÛvÀ¹Vù=£ýÁ6oâÊó„s`Ÿ2m½dHr\¯Küf­— |_üÒÄþ°Í›~z)ưIïËyxƒì‡ÖKjVÍÖw»‹ÛzÉÆ ÛrÁwVë%C?±¯½D”žÛ¼©òµïFCŽ[/ÙXûäRM¬-ÑÖK†~l£‹{ýië%Ëó¥· ƒ¹(ÚzÉ0š[]³Lpo¶^²±ì£GPÿjm½dا÷uº>ÿξÖKÕÂüS{è%©ÝçNë%Ëzßvÿ0~¬­—TŠ,ë¿¥;!v,ç”fŽ6Aë%ûáú‹2–è¹òòÿ6Ö ÷ÕƒUî1*ÔKFýð–M7…Ö¯Þ>6LÕŒÒûÞRèûVØŸ°Í›¯žª˜Û¡­—–ÎSGßT[/>¹'É>ˆãÖK~ý#_çŽúÒÚzÉvÈ9o»}Ò;ÈÁbÕ]SAvIë%5ð£{ æÀië%…Opìû¥­—TíøÄ‡èìk½d¼7mß›¿a[?ìáênçFû8oγS,©——æá çdÖýv½fÓÜû8oÔJë|@ÝS[/Ù®¥U1KØæ-ÆÅ}þ-i¿µ^²±\sUáÂÚÁ®ÏÜ_Ãø¼¶^²±œ½Í0ò¥[/©±ˆ<ÃÀ_¡3½±Í[|fQ×9š®µ^²±CÙ‡îMk½d_§Üÿ¡êq±Í÷s¬Þ°í_»o8õîCôƒ¾nìáfœ¬»ÝqâsoîÉ{ÞQ/±ëð¼ç·±¿è}oÁg‰pNº]ñà ç‰Qî¢]‡·ˆÅþñB_ÏÆá-9ïjô7mÞòÛK‘l#k½¤òlY3Oznó–SØNäû[ë%5t–ótSP[±ÖKF~r%´7ˆµƒÍO~T$=·yËõí½ƒžû™}é8DZΖÆ~úvTf3œ©vô’Ή„­vl ëÊ”Ó`G/©Dž‡BõvôÖ˜ª øÀ|;zI÷Ë,Îj;zIRÏŒÒðh.—½$û¬ƒØÃ›sÆýíè%é¬9^UœŒØÃÙgu>íãÖKjHX²´ÎZ/™§Ó[—£þàÖzÉäy35#"è·µ^R¤8÷‹s©¬õ’ Å:8÷º¶ÖKj íMy·,x°v°“ë&ÕoZë%5´È¹§¤`Ïk½¤†ñÝTc­—Ô Ž}É wÃÛúö˜Ø›Ûäðö‰ÝŽíÓá÷•Û$çÐ_Šu¡&‡7ãœÞÊŒÆï+òÃ~òS“î9¼Q}wVxóLoÎu·þ¾òìáÍ9'ýšJ÷¼Þ(G ú‘æÎ˜ÞB>µ޶§éá->}®…šéá-XŸ¬ŽËøzx‹O¯Ê ~6¦‡·|>¤zßÃ[òÙWqzßÃåe®ª£³Oo¿(ÍF~ýÄžk½¤z'p/$ŽZë%Õ?>µ¿½oó6ûÆó³¬õ’j@εÅ$¬õ’jNgÔôÜy°ŸµŽ½›¬õ’jþÍ9ãÕ#áÁ6oc±VœÃÈÖh½¤N“Ï[k¿Yë%Õpšó«kboÂý'-¨–ÀìðF9DûÜÑ…±³üa¹¦"•Þ×o4§¸üÂÀœóÛçä(Ûà~xûô¯®9¿¸ü𦓵•´Iïpx£¹wN:'ýðfÜSGuÑå‡7ãœS›Ž5ºæ‡7 ®)^+ ÷yü°\—ô–¨žw8¼ùÅÚ  Ý-qxóOžÂL¬Ï²8¼áY]qÈ÷Œ¹±‡·àY/TcnqxKÔÌ«}°Ä$,ä‡ýô'HÚo­—ÔAÂý«˜…µV¹OúHú~°s²ÿF½Ä­õ’9©^ºîÊß±ÖK&÷»ïMÌÙ³ÖKªöœ×¤8ùd­—–ì(©&߈l#^N¶\ë%•CÁyjü¾r°\›ê×$ÿ-oƒmûí‹,úm‡·Á¹Í:©?­åám²®“~Ûájø³J/Њ-o“çÝîÕ€q^¿o“5›álˆ=¼M®¬ž ±‡·5¹—¸_Œ=¼‘}×gáùë×ám Ù×Ût}°‡·Å=g÷6@ÿ¯Û\ßþ´Fïpx“Á1V¥x–_‡7ùÔKòßü:¼ ׬AzŸÃ›r½“:ùÇ>ÆË÷üżÛM~î ØŒÃ›-ÎYË蹇·O~ß¶Â0wÜÇáÍ’ê:J#…x¬ûa?9†t_ø8¼ù5¸¯Ä¢õ0oþ©iSÊËôqxs®¬Ññøóðö‰u¨*ê%>Ǭ+Sþ¤ÏÃÛ'î¿ÝcZ“óð‹}ÿA5b>otoV-8ÕÏû<¼÷×P§¹>oÁ½l:Æ|ÞÒ8Ÿ–ûøŒ6>:8æúø<¼%Çò÷j =ô’™¼Î¶LgêÑKh¾SÕØÌWÈó^¿G/YçÐoÖÑFô£—¬‹ýÍ5„ÖäÑKöÝ0>uØtN½d ž]Uò/žQG/Yãcÿ.ª³ô£—,ªª^ןïËñc[ƒî€£—¬aß tö½dÍÉ9ô*ô}^²&×0ÅeÃö£—¬i×@¿¶àÍñÑKÖä|‚kê~ô’EúoVÉÖEÏ=¼QoÍ}_åäøÑKÎ^»ç£ìéG/Y‹û†îÃŒ¿ÙámqN­F–ˆ=¼}îãjØ£—,aûw] ý ?zÉ®µ_I} ýè%K¸·|ù"x–½d Çɶ‹›ô¾‡·Oý/Ñšõ|ñ£—¬°O?hEÔ^²Ây&÷xŇî÷=zÉŠÇ‹z¨øÑKV|úGm_ ¿ÙÑKV~mpA?Ë^²R9OwšVXÿÜYt½dQܳh ì#ëG/Ù'(×3Œ‹ìõ£—ÈÅÚÕ>«ù;äÁ~ro'Í2ó£—`1KÇÆQÿõ£—l‡{[äDýÌ^"ŸÞ»×¤t~ôú鶜޷y“Ï $Ùž aõ`YG,µ×ïÑKÞãÙóTKàG/‘ùÙoIyü~ô™ìÔØu\gG/ò+Ç…æaûÑK¸~¨Î>ûŽ^"‹c¡ë=~ëÁÞ¨ÏiÕàQo?z‰ë%Û=Æx¡½DDøº5G?z‰ÈgÞ­Pm”½D$?u¬ sdýè%¢×üô²¥õpô’ߤá×=D}Òýè%¢Ÿ¹àcá¹G/ö‡œf“ÇÑK„æuT,Ô‚ž{xSîO0sa¾F½Dç>£Žà—ÕàÝ=€06G/ûø+Q‹£—œµ ±´iãè%ByWºíIqzîáÍ8W"Öúùòf. kâè%ò™ã˜KpoÆÑK„r£æÊ9è¿qôqî9»o~ìÑG/‘øô„ºcjqôùÌÒ©¥·ðoÁu6ê%qôî7˜åãà=G/‘øøosbÆ8z‰|úkT%#ý¶üa?=žéÞŒ£—¼šScNµˆqô’½°¿sÏð,‰£—ègÓ¾„°‡v½D¯üèÊ må8z‰’/]Zü…±¯8z‰ž³½ÔðŠ£—èàÜŽšI¿Í6?gõ@?6Ž^¢ó“¯a¦„̓•mOöd½D§~æTP ;Ž^¢Ÿ\ªœÔƒ-Ž^¢Ÿ»¤Ð{x[Ü ¿Ædöð¶pÆß­Ó*î·£—œÈ»g\âÝG/Qª1/»d ÎG/Qáøüf˜ÎÉ£—¨°N 1p_½Dq6Í}®_ô¾G/Qå3µ:?öðfìUW|ߣ—¨ñÞ¬À/r|ô5æm,ªïŽ£—(άšírÊ{xóõñc'‡Ã›sýEÕÎÒso!«›¯\÷›‹£—hr}ÀÚ{×ÃÑK4¹uÕFá:zÉwfÞöðÉÖ8z‰]B9DU\‹\½Ä.¾ß>³Áâè%v}´ŠwyøƒmÞN÷mDuîqôñée+XëG/±‘Ô³Þæ…5qô£šÌÒ•©ßJ½Ä°vçŸûÎÂùÝqô›öÍ«@­"Ž^b‹ûJ\‹fæÅÑKöi°8wœúÖÅÑKŒúœ–®LzT½Ä>~À¸(—5Ž^bÂþŪboÊÚvÊÀõpô’åXǺ»^bŸÜÐq9ÖÅÑKL?³=¸&>Ž^b >Ù?RqéÀ{þè%û’üÄ7)_9Ž^bT¿™•GгPãè%æúÑtÆ|âè%üÕ[¿ÙÑKì“‹½×¾L|‡Ã[$õ`«±×ôÛoÉõ…•Þ‡kçè%~±O¶}‘ ÷ƒåøñRêG/ñ‹ãÝ2 óâè%þÉ'®Øß>Ž^ÂýVÉB=*Ž^âÃ>sµí8z‰/îß7¯‹|†£—8ùݾׯ“/rô£¹Ûá\gG/qýø"æ÷£—œz¥·ý0ÉF>zIÞçÕ{Îõ£—ħ×_ÍÀsçè%±º¼b bIyô’ú©Õ\gyô’øÌ-ÙÇæ)äÑKbðý¶‰XpçÑKbq¯žõs´~ÏmÞ‚b(Uøê¯üü6ýa)‡s¿-Ú}yô’øØà•Mîø‡7¬¥­˜åˆœøÜÛÍ'Û›bÒo;¼÷؃úxçÑK¹¦øRÅ>#yô’ðAgÔõž3ø`oÎq²í¬¢ýG/Ùü§‡¶àG/Ù_m ¡Ùyô’ œ†ò¥©F!^’Ÿ>{åmâš´^R9 ëÓïuÐ;Dc±úés*ôÍò`Ÿï×úû¾edë%û2»èŽ­¤"èí–­—¬K->=·ÐËÖKÖ;Á´ûp^ÈÖK66)Ÿ6ßãIžçÞ¨çKþûkô‡mÞÚëU³TG•­—¬wÑõ³~«Åžg­—–c‹N±¯l½dc?>ŽQœ7[/Yãb»ºÊäq¿µ^²ÆgÖ@rÎH¶^²ÆäY:U 6x¶^²8ß¾úÎP¾}¶^²†+ÝÕ3…žÛ¼¹È/›` jæ©úÃ:åÅ'õH=¼%ß5¯…ž{xËoUx‹ØÃ[~¸x§²<ØæmŽÏ\9I:[/YU\BgßrÌÍÏÖKÖ¤³$jô æ™gë%Õ7f~ú Ÿ÷}ê’²õ’5•cjË}œl½dMÒ ¢tÚ ÷Eë%k:èQÛïÞ& ÎÉÖKVeÆÐŒUŒÏgë%ªàž{­L8ÏZ/Yß¼ÌêE‡ëÁo9hnI Ãù›é‡·üÌi{_ç÷s[/Y sèïÙ‹ö|ë%k-î‘P#]ðŒj½d-ÔÌ÷s++¹h½d;IZÛvSè\o½d-ÇÚ‡›ƒ°ÍÛŠ$±\x®·^RÁWÎ'° ¼õ’•®AóE²õ’JÃãÙäft_´^²/¡Ï=¯‚ºr¶^²d±½S£tð|h½dÓùÉý:kk²õ’%8w²xÛß÷[ë%Ëy ÛˆR´ûZ/ÙçQ÷ ¾È¿h½dé÷n‘yŽÙzÉ:5i¯õ|î´^²t|z]êé›­—llÒyö» ¿­õ’ÂÒ,¨šüŠk½õ’Å1µ»W;æ¤gë%k[„Žû¢j2ñ¬n½¤:qð<µ?·°Í›]Ø·Y¶*Iï««ÜS}jüÙzɲ¾È?Y}%ž}­—,š½öVŽ7ö‡ÉÖK–MŽ“™O#.š7îÇTzu€¶Rÿwc…gZ˜½ú¤¯;~Xò[êÀøÜy°|ömßôêmÞL¹>«Ô7AìáæQU[ׄ™jl,ö=Ø÷[”á‡Ï=¼¡ÖöÏÞC’ ìÿùðBZÅŠëac›7ÇÚßZ“Ž~Veï7–úÈÊ=ß¡õ’åÉgŸ¼ŒÂ6oþ©…‘±=w¬.¾çÓpí´^²HO½íj„mÞj˜:} í² Û¼yȧWιªfc“óKæ4Р7¶y;úÁ«Îò=çÁ6o1õ3oÜhµ^²¨ÿoùÒ u˜rIKý«÷Ú¿ ß¡õ’UDõ±ßÄ}ÑzÉŠ°à¾Í¯\áç¹ë`}r½Èyæå7öÓ³³’Hð;´^²óaÊg8_æï¹Í[Ή„VäÖÖ©Ïéþô´/Z/Y¤1ýSíb1¯xcó`•z<»b®Z)o›ä“…¾öÛýÜÖKV¢½¾Ï+æ…\´^²~î-?Ç« ̃mÞ2!FµïÍø}[/‘‹æQé]ß‚çzë%raîí^ÛP\¿­—÷:©™M¦ôü`¹7VMÄõÛzI¥ ¾/p¾ÓÆæÁf~z$\øÛZ/‘‹rCe?wÑùÛz‰\>?½±^¤B˜–t‚ÒÚ®‹Þ·õC…u.Èqë%Õur¿¬U®xÆK9{û·­±±Í÷Ѝû"a.âÆ6oƒêfö¾ð+pµ^"ƒú1Y#†¹ÕÛ¼ Ô i[´ç[/©¡K<EÂpµ^RÝhÏWÔ ßWoToºíÉ Úzx£\Ö¼çlã¾ÐÛùâZ{…™,{xs!ÛhÛrŽûXow€Ö=ïôÍoù© 𠳍7öð†=Tþ¹ó×ߟ¦°ÍÛ¼½ïò5q­·^"sèëðéøÍZ/‘JXþô¨YøZ/‘ùé÷ZÓ··ÖK¤*Ó)wæ=~öÁ6ogùî³z¼{:<ï ›¤§Ö¬÷Àç6o‹úƒ[ßdsµ^²±<›Æ®A¶Fë%Bsâÿ©ó {»mló¶ÖX¬1 E.Z/ÙØE>ï6r'aÇÁÆç¬¶ÄoÖz‰l§WÈÏr¬]/é¹±Ê9Oå·à}ÑzIy…‡¬Å@ï«˺Ü>HÏT?¼a¬®ÖúõKñºu¹=¼%Û1_±ƒ›·ÖKªôá£{b½dõƒÛ³´ø}áok½¤Z]Ó~ÛžŒ ­—ˆÐ|§šq}Ñ>n½ds¿ØgÐEë¡õ²·ï½òlîßÖz‰ÖîóL|Оo½dc!NöOùÝ:qí´^²±‹óÌË¡Àwðƒ…½¹×ä^Ï‚ë,oªÔ·yÎߨÃæ{ÖÚY8°:D¬‘/гt6öðæI3ó*}œ<¼÷ÞÝ›yxK´¹üö¥ñûæázìkd§¶^²W÷I/' ϨÖK­ÝçŽòÑ[/ÙØ »ðJ¥µÓzIIx‹cI3è¹Í›¢mŸ%Xû[1ØÆ¢ýP{(~³ÑzÉÆõ‰Ô+ /sc›7õàÙ¸”·±ë`óÓW8ø}›·½¤„mHz®þ°­Mø}o1é}·ÉÂß¡y³ë¢3JgÿT(í`Y{Ë /³j;Ū§¬ÉÑzÉÆÕ@ëXÇ¿±Í›Í$±ô|‡ÖKÄÖE:b¥€v,ÏåÚ+}ôÑz‰Îή}¡Øscõ`â¦ûŸTz;X'ß´¼JðÆ8¼áü¬êYÿnŸö<÷ð†¾Ó?¥?jƒcäKÏ­~ÛpNŽyxs![®ÚÈâw˜‡7î³'q†šßÑXê‹m·|krÞ’ëÉê8s|nóæX£[çƒ ¡ß¦+lÃh¢s‚ª™bÇËó–@|~c›·w¡ÙÉéÅœ†]û© ²íÇÑKNØÿë¸&=·yKìÅ|ß…F½$?³•t@šdao>ù\WòÆÑKÒæÏ—åŠwáÑK2&ù±ª¡øŽ^’Øÿ¬bs ®£—d²_Xßáè%§wØë¹úšýó¼ÃÛҜíîY’tgµ^¢5X™ü‹JØ@¬6–b(Õ‡è2ü¾­—lì¢"Q%[®õ}7pxž[yиÖ[/ÑwÒþ™—$­—@“™ö/Ö¢5ÙzÉÆ*Ù©{kÒ™ÚzÉvÖ„ì(ÌᬩÇÍ‹s¦Ç«ÔîÁÞ’{áW6<âð–6Xß™¨)ŒÖKt|uÚĹÊk<— /º[/),Ūt ×Yë%:>³$íÒ¤whÞÆúô­¬/è`•g©+é;£õ¥>ÓÏZŽzêh½Döáüç±æÑzÉÆ²Ý·=éAØæíø‹ÚJ%´ã:Kýa9Þ=SпÈÛ_¤ü Ï=¼ÑukÅŠwVÞ‚ãþ{•:rœ‡·dMa[ÕhsÍÖKtR¾ÑÝŸ`¼{&oló61ÇåŸ{æ®ÉÙzI5¹å³Ä“ß¡y›s¿ócسõä‹Ì[ò¡wЃ5º ×)…ùÃ6oó;WÎ! ª°~°ƒë¥ßµ¶y{'÷9I³’+¶ßXŒ_Ô»(_c¶^¢ ë°ïÙ¢føÍZ/Ñ…=ëÿ¹cÂxÎÖK6vqˆ/Œ·ÌÖKtQì¶Ò=^nðóòÃQzaÌg¶^R“•¨FaS uIk;‰ãŠØ b›·…5ü·Ï “žÛ¼­`Ýs ’?l,ßóyQÞÕœ‡·4ÒiÕ]ð›µ^¢ïEíÏW_L|îw&ôÚØæ­Äbò ÍЮž­—¨èE5З’Ï;[/QÑÏ|œù2žwhÞ¶!eø¾%„"­—ÔQųºÒ+>7vÐðKUû{n좵#kVªòó`YãßHÌÙ›­—¨N>w"æÀ5ÙzIaYz÷T¿ÏßÖK ›|¦’þ;[/Q]¬™—A1Û¼)õnºS@“¾Có¶]†ï:£Z/ÙX7öc_åG7o­—üÎðW¼åÝ6ìÁ6oö™'1k朿­—l,ÆccÛ;²po¶^²±‹ì}¥âÝ=[/QÓqqˆ‰á;4oo§êÙǶy¿e¶^¢†óßö¾Xã5²÷Á6o4D »Ö•õßI6íÑKrÌà¼LÇœ†yô’$Û¨òVpîN•O5kÄnýwÒ{ô’\38n:èn9zIÚ \÷QMÍÛ¼¥óüغÏð;½$1w¦î¡Ä¹udÝX»&ûN—-ºßZ/±‹ò5îsó‚fë%ûé—¹—rÑz‰]6‚k*pÓÆjcƒï€ø­ÓÖvÑ[݃ñŽm½ÄNk ˆåz߇7cm¥úJxÐ;dc)·®fjBjÿ*+¯±‹kaªLïÂÖK*­û¢¤cLm¶^R±LŠë{TíóÜæó=Ÿ¾ÍÈqë%6Tø›é Ÿ¬õ’b˜ç›æ"±õ’š™Kù©zQ}Àl½dcÃ9Ïü¢ó·õ›Ÿž$•·‚çzë%û(Xƒûú8Ìq,ç`ƒ´+;JÏsWë%5X‹Î‡ýaðû®ÖKl]Ÿz†}ç-|‡æm‘/²÷[bßÅmÞÖdMl(öG¬©Uùä#:ÆÆWë%‹±æÒ^cu«õ[†9ÓåûãÜÔmÞöF¤\÷½p=¬ÖKl¹ú½ê; ôŸ (66Xƒö¸Ð?^­—ØJ´5¬BÕ¨¬qxËŽž¿«õ’}“qßÐÊéuÄ6o2/ªS«‹¿Yë%‹÷Pi™Cé·5o²ùÒûÔÙ¸ëËù\I³‡7¶yåz^§™šUÆÛX<×·ýëgV²ëKk²ì*\¿­—˜à<ËòByk½ÄkVž9¯˜W±Z/9Wïý¦Bß¡õSqÖ…âÝ«õ’MýØþÅj½Äç Þv´e+ló¦“ów({µ^bJ¶†Ö]xþ°Z/ÙX%ÛþRÃ8Ùj½Ä¶Îé{$܃mÞôc{æÏZ­—Xyï4;P­ßÖKª‘Î’_¢?lóvìÁWZ¿oóf¤­Tn‡a^ñj½Ä¸áºGàâÕz‰½ƒ6ýÍlb¾Æj½Ä g;×]x Ú¿«õ’}A±ÞçÓÐî[­—˜ý¶,½Â6o>|2Ÿƒöqë%U}A9ôÛÍÂŒÕzÉÆrN޾õç}›·m±ý«Žéj½ÄÜxÎk…~ñŽm½dc±ç€ý»=f~‡æí]0ÚyŽ‚3 6¶yóäZļœÖzë%F=Øþ±{4)ž©­—ìKr‘¿éï|¹û·µ^R²%÷P™/ÛèÞó­—lÛf?ô«lý­‡ÖK6vQ߯ÔE߬õ’Å3ªzXM¬5Z­—X褻p²˜ã²Z/ÙX#m¥æÈÑ;øÁrßæíAbîøj½dc“kÁƒja–Þœï‹eö–ßþSÎÕÁ~f9Õ-;¼¹æ'掺ç²ÃÙ0Z­è°Ãö¼mļŠÕzÉ6&×a_óVVë%+ls]*ôÛš·¤Ù`ÛHA­bµ^²w&×rûo«õKuöq|`þÃj½Ä¶Nzê^HûÈjÞ2°^Zÿýu¢ù=·õKœ7SZлeøóÜy°Üÿaï!ÌiX­—ì'p=Îf=èä`Ù}nT»Z/ÙXûÔ£í¡ÖKjæ%yMþÞØ½3{J––ÕXÒðjÚ8ž}­—–ûŒWÿ3-lë%~ÖQé¿rí‹ÖKª¥žóú½P{]­—6¸VƒïØÖK6–gÐmëŒüÂÖKüpò=)Çeµ^âÃ8öµ  D[£õ’½]ôÓH’žÛ¼mÿ‹Ï_MÌY­—8ç)dÕ£cÓj½ÄÎVúç•`-âj½Äk¨<¯u¥ïÛzI•¬Ï“pâ­õŸ4GaV»€IÏ]û±×'Õ¡¬ÖK|ʤó÷£+¯ÖK6öÓǰ´Ä6oSùôÝFã¾»[/)óŒÖd…‡Ð>k½Ä«i'û±ë’Vë%¾(†²ªOä÷…´^â ýͧÆóV¤õ’}ò,ß}dà](­—ø"› ú†â|ÈmÞ–q/ƒm ]-­—ø—ôÒâ==WXªŸ¯h‹âw°ƒUòôÂÙÛ¼­ä¾• FÏmÞäÛ‡( 5i½ÄßÉ['/ó:«µ#­—l,Ï1ßž-ÞÒzIaƒëɨˆ´^Rj5ë¶ûHë%N³•êܱ õÐz‰‹òùpiL°S¥õ—ÀØ—c¹êó\;Xî§[U¥ÈEë%U¬Éµ´ïpƒmÞgÔ¹þžù¼oó¦2é}¯÷ØÊû¹­—T©Æ¢þ#l{i½d;4Ü×rJ¢î)­—l,×ãŒwNÃóÜæí]höëFçCë%þNÞzÞ·‚Ý'­—–m¹ª?B¬,k >)×]æáú²nûÁƒÎ¨yx‹58&¼=÷𖜳7αóö^â†óï|˜¥¸Z/)­}ÈE´´^²Ýã Üºª_Àó¬õ7 ·q£=ÔzÉv¥yÞíÔÀ¸ž´^²í î9 ŸõÐzÉÆêgþÅŠ´^²±œ÷ºÎÔ´¿ç6o\k$:QW–ÖKÜ0G«|Þëu>”=)­—¸Ï¬úétFµ^²ÿÌ}Ý÷)€6—´^RIwÂq½I\´^âN}rtÛ>Ÿ+Ëçúœ/R·pc sg¶ .ÔŸ@Z/ùµ·­ßAuIÒz‰Sÿ¨[ÓÅ™»‹ñ¬»½íãÖK6–ëç+wÏ3=¼¥+ûèØW¸Ú lð¬Ÿt¿µ^â1t°“Äç¥õºüß_g¿÷mÞbNªýoßéÁêÁ}3ÛÄáYÝz‰Çâ¸È‚þúmÍ[Èõ©•£žÒzIÑ&܃øÕ®ðy‡æ-\è;ì/C\´^â‘öÉW^¨ÙHë%Ë9ë-¡Ü߬õ’ÊM& d›¥÷|ë%žT#–•Š>¯´^RXŠ%Õ\6Çç6o©Ü¿5é·ÙÁr0¶§°Í[×(l{r¡ØzÉÆr®Oõƒ6|ßæ-?:—^ä;Ië%;I+®±žxî´^²·×ÂØ{~Àƒ=¼Åg­¿Û#ÝgõÑK2Y_ߎ-jŽÒzÉÙïž$Õ¬ ¾Cë%;9/þr¬?–ÖK6–5±:%q­·^Ü÷ËÿÍSÙú÷Ühìâ~ÛÛã 9Jë%…\E}¤õ’Â:÷—sÌM’ÖK*¸M:ŒI¢?/­—Äõ±å¶Ó޹ÒzI\hÜúŽal\âð†½n½äU^ð`oÔ{¡ÖƒcÌRâð–°ç«W»/Œ;Ië%Ûª`m»z¨á—ÖKbMÒKª<†¾ol’æXÕìøÛZ/‰÷PÌs>“­—ìMðé§ŠÚ ´^²±Üg:gñmló6¨—â¬ÙŒƒÞA6¸ÿ51GVZ/‰w¾ããx ÕzÉÆê§öìÂoÉÃÛ'—êH©,ìáíóÙwÖ¢ïpx‹à96IuzÞ¨ÿú¶£ÞrÖƒ?,甲ºózÞPW®z^£x¡¶^²‰à:Ë`;J[/ÙÿÃJŽ¿ Ö jë%U×9¸¿òD»O[/),íMyÌyÞ¡y›˜C_ùgƒU»æÆ.ž£ðk½û‡Íƒ Žù Òíµõ’S™ú^;‘Xß­­—–k•·m¡øÜæmMžÃ¤Úë:o>)½²‚·qxóelÃ\ŠßwÞHÿš«{^Çá ktŸƒ³O[/‰uqNoÊD]C[/‰êäGëwÚE߬y« g¶×©wˆ¶^ 5ÝÿzÕdbŒJ[/©ÁÓÜçt»ÁøÍZ/‰µ8§l²¨ië%…¥ÝíµcüM[/‰ŠtÒÚQꨭ—DEH¨ža¾LÁ›‹ÖKbá,’Š^ÃpÍÃö¯Š$góð†ó»ï~ƒŽ~¡ÎÛsÕÃÆ!+Ö¡ƒîn=¼©²f^…^øÜÛ~Öïe„…=¼)çÖÕòÄÞlpÏÃL´ÏToÔ3nÛQù ª‡7ÇøÅ¶=õÕî^ëzxóO}À² ïpxs¶£Êü ìáÍjS“ì;¼ál°»_›`ž£Úáí£‘æ;…ùÁÞ>ÚÊÅ=ëµõ’2Åç†:ú…ÚzÉÆr_*YеöÚzI¼Ç³/Œhë%¡8¯îŸ[·§µÞzI¨² ^¡/úfq°ÉÚU\tÏ·^“¨º$ªëÐÖK Ë6A¤á÷m½¤S&÷ÁyÂ;Ö).]©Øxùá-„|ÓY…Hð}^B3ÏïºþG/QÒwVõÞ½p½D?÷ñÆýõè%JuØ÷¬8ºç^¢Xu÷—{l¸÷ñÑKªÛï'ÇpáÚ9zÉ»Kç”íÅŽ\½„j^+ÏÜŒl££—Øäžu+à9yô[ú™—÷×£—اgFu?Yø\=XÖsâ\åmÞLmpï< úÍ›á ÅÒÁS0ŸV^b¾(¾iJ=–ôè%Fý^+OAb^bT?d5ºXñÜ9z‰Çò¯w¾òƒ=¼¥^]£ŠðÞýÓ§áÕ³Þ׎^âëúömƺ:;zÉɳ}÷á¤8º½ÄM>=¨þÂŽ^âØ‡óŽë]8£ÇŽ^â¾âÞøÜÃ[(÷žä£ÛÑK<˜·Êkˆ=¼}z]saz;z‰'kŽ+I´£—ææßzõK¾ÛÑKbðLy[¤+ÛÑKbr¯Õ¹ýXäíè%1¿uj 5vlÒLØšÁß÷è%!¼ß¦ Ú%vô’îíÕô±Í[(çÔäLAló¦4W£f÷Ò÷mÞ"õ¿ÞóEôÆÞ}t¿{JÂeG/¡øÛßL°Áíè%y}æ˜û Â΃åyT[¾Û¼åÜSg;†¸Ž^’ƒç0-W¦°Í[®É±/3Ì)³£—äb­X/²íè%)ƒí³KÂËsKöµ‰=·ìè%ù©ßÜËÕÁµ£—$Åò+æCõ¼vôêõWqÈpÌ9µ£—¤)im×Eõovô’½N÷·â¸õ’ЉqÑ}Å:>W6(wfØ«}Äó¾ÖØ19ÿlßÕÈqë%yMî!(gß6V¹÷Í»нßZ/ÙÛ‚gZÄiù{në%yYÐZß×$Æ­õ’¼Ü)'§*Sð·µ^²Ímî#0ßÿÔó܇·Jæ£s=ÊÁ@¬,çáI„ Ç­—des>,Â6oc-Òû¶…5ÐÖzI IýôDMœÏ`­—Ô|s:£Ì©ÒZ/Ùv±Ûg†1wk½dŸË»Z(Î`­—lcL8·ù:{°ó`b_ûôZ/ÙØON¤Ùeø¾ÍÛTž¡X£ñ›µ^²~¡ý¶Môc­õ’\ï¡¡†¹uÖzIõl¡ÞXÕƒ m‚ÖKò×çÏ&¥=ßzI.ê·]³tÆ­õ’\ƒã…s-úf­—T‘âg¾Î ­ºŸƒuêiv ÐH­õ’\¤‘–ýK²ÖK*VaŒ}Ñs‡ÖKòw£þiºAu–f‡7ì%s÷ÆštV·^’²¸{ßǘ_b­—TK®í[=u¬õ’}r\i™ÐwÆZ/Ù^×ÚïoˆÚ¶µ^’bÎýKLèîn½dAgßð¤}ÜzÉ6&õÀ¼J›Aló¦X£P÷± ümz°ƒgîNÅÚ_k½$õÓêò'Ѧm½d;äœWu¬ ŸÛ¼ñìÖªkžÌEì'o{*Îí³ÖK¶'2•õÔ0ȳÖK¶ Ã{s_竳ÖK¶ cÆ1whQZØæÍŒµŠê‡¼µ^’ÔŸë>'#A«°ÖK66¹?­S®„µ^RØüäh%½oóf18¯BeÐsã`'ÏúìùÖK6–µøj©ƒ¼åá-¹†IPB)lóæ_6•ÎÔÖKÒ…u®él?´^’NóÑ÷Ú™ sʬõ’UžÅ1Kk½$=œú4DÖ±Zë%ÛÁåÜfS™^ØæmÿŽëÉ$.Z/ÉÐe¬ R¿Lk½dÿkò™õ2¬o½$ËàùÌ›AMÌ[/Ùæúâ>#Ûׇ}á­—d*Ï*ú©èØu°œ»¸B\…mÞò³/j¢¬ ¶yËÀºÅÛ¬1èeà­—d&ç½nßOè¹þÃ>w°]í·^²/õkr­\Èĸ“ßzIaiþ[ÅPï¿õ’Â~æuèvþ‘‹[/)¬ß-61gÚo½¤°ñáxAJZa׃hÓ–‘Öðû­—vroÍšiø\=Ø ûx¼S¹Ÿ÷µÆÇ„«_=×ì>ÄÉVÖw-ÌóÜæmÆ`ÛsMìÍâ£y[8— î€jÊØÙ¼QHÍF˜ï7ŸÍÛÂÚ{Þ"õ‡ñÙ¼-ìµzëöÐ&ª°Í[˜“ȉñ Ÿòò•^UØæmצÎ$ÿا,ÛÕ{Œ~[ó¶’óVʘt|ßæM>±™}N¢íé36ÉVΨAûjÞdq¼ÐzújÞä3sa¾ýãûVó&>ù;LS\¿«y“üäAc+„ÂÊÁ:ûCû„Ã=¿ô‡å3uN'l󦘟zç¤O´K|5oJ½˜í6Ëqí¬æMý3w'ݱ͛ûþš {y¹4ošxÏkù"¨½º4oöéZ­ñûJófÂu¬{³Ñú•u°<¯£Ê|ciÞ,åÖí­‰9é.Í›£ýPõ›õ–w±ƒ]Ôci`Yta›·JòfÆéŽ•æíWÕ½Yè¹Í[%’ÒýfIçº6oñÑÄÊýƒ\5׿ç®ÇwÖ–kó–ÏÉ,³׎®ƒUÊu7îÿàÚ¼%Õû—>ya¾½«,ÏŒ®Tw<«Õ6ç]Q-¸ëÃÛþã¢Ú’ª:ø¾ÑØOnå M|n6vî}9ÆÑÝ®ÆÊç<»ý6û‰oÊÀ¸“Ûl¬O;GÿÍm56XSØFã wÆæE}Çå× ©çǺéÁ&ÝoÛÊÅüj·‡·ÂûO» u9·æm`NÎ=ë[PßqkÞæÅ=_ª-+=7öSïÎ%poÞ¦|tÚed÷yó6Õ?1ØÚ…mÞªúŠûR¾†û:XžS‘¨—¸ËÁ&åŸUe•!¶y[¦T{VãùðÜñæm}ò®Ž<-ló¶>³[‡ÖK»ÇÁ²V¼=2º[¼yå>éC`´ùÆFó&vѱ5©¼Gó&®˜šѼýG½Îõ)ôë`?±ƒXtwGó¦×gn‰€+SØæmÛºÆ:×µÛ¼éòO?¼Ä¾>Í›&϶«¶I¸‡"~Xε”Wï±›ãhÞŒfƒeų0–ïÙ¼Uü§·“Ù¼ý¦eý¿gÕ{6oÔϼ´WqÚC¹–c·U9¶r6oû’ùøèõÏæÍí¢Ì¿¶(ïм9Í_U#vὙ͛Ç!åÝïõÁ6oA÷qQiüy°Bsw|Òì˸š·^gCíõ¸š·¼ç«wx ¶yË)´7ý2£whÞgrßû"19.9XáyØ 2za›·„`ÛÓ“/°F\v°Æ3*Ñ­,ló–Ÿ»û uTØ8Ø ù"ãLÿ{‡æ­&á~jwðŽÖKöµÉù;•ógI´^²W׋\£…?ì'g`Nz´^R{T³Raé‰ï+ËuãÓêQÑzɤ]iÉxDë%“jÄžYf˜k­—Ìyqmßvß0­—̉}zo[Ù°/v´^2'ÍS«~ 5›h½dcƒâóŸU´^²OðO¿â‡ÏË}“Ê‚IÄ6o˜´ÿÌB5ìu­—ÌE±ƒš 3a›·…ýi«?⺰ÇG´^²±ëS7ž8S>Z/Ù÷?Ï5¥Ãh½dŸsþé6…¸hÞöÑG5¯•o„ë¡õ’²ntÁØ´Â6oº’{fðìËh½dªr ž&õU‹ÖK ›Ÿþ©tþ¶^²ÿÌ}¦·ƒþP´^2ã-•‡'¦ôÛì`9Ö±¯:[/™6ÙæªÊ5«žfc~‡ÖKöaðÍH±ƒh½d:õc’[[[#Z/ÙX§¾TúvÅlóæÆwì^NØŸ+Z/™î<ó|[“¨—Dë%ÓëEj´ãs›·˜¼v22è;4o±X7úe%ÿa›·w3Ï®/Œ};¢õ’Ÿt•øˆ¼µ^2Ã9®W‹¿Cë%ÈšÍ6Ã&ÞY­—TLjŠ/îg­—죚ïÂ}¡­—ÌLîÅ,‹ê £õ’’×i&@õ1ĵÓzɺÖõíñ·h½d]ÂqÞMú¢wˆÆš~z¸.ô[¢õ’u9Ï sŒ;Eë%ûmÙ^·˜d?´^²±\;Y•„}x«¡ß\“¹æÑzÉÂx×3¨a|>Z/)#”ëÉ Z¶y aß&´R*lóFyñ•Ûq%ù±­—¬÷ÐçßLØÄïÛzÉÊO®ð5ç›Fë%+}ÒL–PªaŠÖKV:Ïr -ÜþS‹ãÆÊ65¨–àgiŸwÈÖKöÅ1ámVc|3[/‘K¹Æ¼¢†ØÕXœ·½}}ÁwÆÏÆÝV#úoÙz‰`òaÅÔ~­ Ï7ËÖKöÊšùB3¬°ÞXê%^3wóK²õ’JS$(”â¼ÙzÉÆ®¯gxofë%{™8ÝW¾ž­—È îÇ”ï60¶y[C¾ý P_ÏÖKªÔ~±;œ°ÍÛ’¤¾¡Ší Û¼-¬M½û)Öågë%ûFŸŸÞB43:[/Áï[}gö¹ˆmÞD9N6ñO…mÞ„z”o»d%ÎVÊÖK6Vhž.ÊõÉÖKöGpîY蘆eë%Õ÷èc{ž}Ùz‰pŸÓyÏžp|nóf÷,ªú1úmz°˜“¾ýîœÃ”­—lËþÓSÝsY³õ’êµã­u˜l½DÌ>½‚9Ÿ+[/ÙXc-Þ5Çl½D,òSÃ>#Ùz‰ø§F–`|3[/Ù·Ðà^tû0{=[/Ÿ<#xøÄÞBÙzÉ6û“5gÏßÖKä´zé;ªt–´^"îŸþ}Js5²õ’:Ä?µ\”ƒœ­—HÛ}«šßàs›·3çmƒ+Öudë%…¤»åÒ‰ý¶³õ’å9ºû¹8G7[/‘\þ©-²…Â6o™Ü/hCâ­õ’Âæ§§öíÈÖKöOvê“Sc ð›µ^¢\»S³t^%ß÷]ØzI5¡úäNÌ_ÏÖKt(Ïg¸’r³õ’MʵœÙÊÙzIµ•àó]ÅÂŽÆßYÕ×Cë%:Ò‚ýBš’­—”Â35÷Ý"ï܃l½Dç'.mcÐ:k½ä׳åå“™c.`¶^Rk•k¶/ò!³õÉó,u,œ?”­—k“ûL_Ø/>[/Ñ…=Âî¾·T•­—ì—ÍÏœbÁz‘l½De¡÷rµÞz‰ õ:¾1ö•­—èI=€>‘˜ÇŸ­—¨.Îˬ‰¸vZ/ÙX¾/öG¤ó¡õÝ?N8ÖL³Ì²õUc-ÈfbÜ)[/©ö%‹{­ê0ÙzÉÆrþÎv=Ð×ËÖK¶OÅyñ{ñ“Ý×z‰R­Æ='þ"[£õ5çõ ²p>Y¶^¢\Q=ögÒû6oŽó‡êL]Ô3.[/Ùê§Î]h®r¶^¢Nõ•{ðjóû`›7ÏÁuºÈ¦m½Dc®‡Ü& îÍÖK4Ö§vÇ¡…ЪãèƒÝŽ÷Søôþ°ã`|ék:jºÙzIÕØòl»50Ç%[/Qêƒ\ý˜Ôh­·^RÁ õ±£0Ç;[/©I¼Î¦aÞ GgõÂã»°ÞØÉ³ö‰šn¶^bïâþ§ÐDíÔÖK6V(vpñììl½¤AI ªÖyø}[/±Ë¸Î§J2î¡ÖK6–c‹ó¢<èl½¤ŽÏøôœEm0[/ùÙüï\ UP؇7;³eÀ>C1[/©yÍÜËÀ/ºZ/±aI¹·ÛlļŠl½ä3{¸þ4Èçm½¤âQ|ÇNœK[ÿóÁrŸ½š¤ºۼͅ}´*U{holó6ÝH/ñZhøÜæ­¼*Ò' ûÛoló¶_ö|u~ˆmÞÖ'çtD£ßÖ¼­Oî¸9Öûo¬,ûÝUÙ§ˆmÞäâ8þÎùš7Ž…^•ÄðÚUaÑXç^caÝWU&l~f i o­—ÔÎ=Q/›„mÞÎ\η?„q½•ƒÍÏÌ1hwQØæM…ûôîcrÇ7¶ySŠ“Ýe yk½dc9¿¤æd¾k'«ç~c?½5¯Waó`“lð¸lÄmã6oïKòÌ"s¿°ã`ù¹ºðì+µ¨±Á=“Ç{lÚƒmÞœzÀ—/´ßZ/©æKœ&PŠPØæÍÉÇñÒia>ÃÆ6oþ©- 4Ù Û¼Ådÿb˜p¦nló6>s &ÜCåo46õc—\¿Cë%ö.fé³ZçÂs§õ’Máú‹Ÿ«Øû¸õ’}»éàû$î·ÖKx>äKZÈEë%¶?<Ç7Úüöám»jÂþÛöSð›µ^â×7Æò®jû5ÖyMî§}³hlä§÷Íz§O6›œËºÿÓÀ»¥õs|{­<'[/ñA5b^¹ã`ƒoìl,iŽ·6èxî´^âÔ§áî2×oë%¾d|so¹h½ä7Ç’7¶y[ÁµëÛõ§{¨õ_™÷#´ßZ/)}†ë’öèû6o"œŸZ>/¾oë%5÷ìúôË¿pc›7IîWQmÒñ>n½Ä±0ù‰©AºRa›7\/]9›øZ/ñ÷ÔÓ›P®ßÖKÊq&]nß-‚{¨õ’²A¨ža{›†gjë%ûøeÿ¸²VãÖKÜô3›f ~nóöÕcBÛÑÿTSƒåZÚí@Ò9ÙzÉvy¦E©Cxöµ^âþñ!/¿è|h½¤°É=_Àµ-lóæÔó{Þã(è¹z°Ê¹ž‚߬õ 4›ÿZªx>´^²±Ÿï€V…mÞb\¤OÚ»ÍóÜæ-œgÚP:'[/Ù¦ÍÇ–›Sq¿µ^RXî‹]ÍJÛ¼¥Í­äx¦¶^âç:~­ß í² Û¼%æ²þs·ªšhï´^gf.ôô5úmÖXêm|ÛQNÏõÆ×(ünÒ¿çFc“ëfL.¨Þ؇·}Æ|êòC.´=[/©þ†ÜWxû¢¸‡Z/Ù ûÓ¿zBÉwagc•çI˜B{¤Â®Æ&úRm1'ž“­—Äœ<‡éRÔ+ÌÝØÅº}¾û1=ï`ûé»(|¶^²±ê|wOÃ5ÙzIÅĨ&¨n<úÍÛ¤Þ°uF"¶õ’аÒŠÍ%Ú¿­—ÄZœ¿¾¯_òõZ/©™ 4WCgƒmlóÆsê~3ºc[/‰EùÕÕ?®›Â6o‹ôê:×ÙVn½$J9ùöL^`+·^R3 h¶‡¿Ÿû¼Có&´öY=¯DŽ[/©~ñT“9ëMëFhìwFû¼£õ’eIûGmló&ñ™šØuc›7]œƒáI¶çh½$Tù~¥k…mÞ4?ym)…mÞ,¸¿œcKaý`9‡h½sÇlóÆýŠïyØPß½±Í›Sÿ/{'ð;´^Rý#)w¼æ ÂY2Z/ù•w¿úk8ÖùllóæÆý ·¥ël´^AÒ¶uMz‡æ-(ÎP±:G»d´^¤™ßµž‰÷æh½d{Yl#V9ü¾­—T?RªÉá¸Gë%‘k‘VQµôš·üÌûï9b÷;´^²ßõãÏ/ \“­—Ôgàø`­ÜÆÎÆêä\Ö•¨ÙŒÖKò²EÓ6j ¯pÍÖilr tu¡§÷}x+“”ìÉ)X7S=ïÖ'×ù`Ìrc½±Tç^y¼Z/É¡¬mÿFQÿa³±8o±zúN‡Ü™r^–c€‰ã¬ Û¼ ªoÑJIC›k´^RÒ ÏѬ©ØØæmR½é¾‡t í9Z/Éù™Wç&P¾±ÍÛÔA6Wå•#Ç­—T¯J®kž¤UŒÖKövãž/–“öEë%µ59.òžiü`›·eB¼… ˜ PA¡Æ:Ï­vÛx¦¶^’UýÊu˜o¿±Í›ÌOïÇåÄ[ë%›á¤¸+z~oló†Å»÷쟑Šk½õ’ÿ«ç¡bŽìÆÚÁ²m”n¨—ŒÖKR'ëö5Syk½¤\Î!ºñÖzɶƒÌ8÷+/<Z/©%­õ4ìÛ±±Í›:÷[Ù&áÀ{¨õ’å~ cÙ;­—ìàÞòÕ·¿Cë%õrŸÙ4޾Èh½$ g·n_Z—’}ÖzIý{Æõ¤ŒÖKÒ‡’¾‰ ›«õ’ Î!Š 3µõ’í¤`=oÅ’|à}ÑzIµ›ÐOn;­—llR-måáj½$¹¦­Ò'.ôGë%éÎ=Ø®¥t´^’ïÈsoò}ÑzIâàé§ßà/Eü±íGë%‰Áâ›·µ&Þ-­—ToÒ@‚úklló–Á¹ØÛ#Cr´^’™ê|öM²«o½¤’¿¯ã›Ö¹c(‹tðqë%7vÊÄ.Ú·^rcW"¶úçâz¸õ’kðk» 9ñ~»õ’ëôÛÜÇ·^r)^ë-ÛûéVë“Vñ¹ûh6¼ßn½äÆNømq—fÓ7‹ƒ=Éyn–ÏÍÖé}sÐ=‡·ß¬t Á¸ÓˆÃÛϹ<Ï­¹V¸vâð6¡yž»M²=cý°ÏýUêÿao3‰· Û]öð¶ðûÎêÕ>Ñ.‰ÃÛO¹±UƒgØû¦l°ƒu§w˜»?,½ÃTQúf‡·Ÿ¨õ`«ýTLÜoyxû:œwØK]ðìËñÃ*¾ƒHI…=¼ýòÚÎ;Tu ž“yxûÍ*z¾ÙÝÑ鹇7IÚÇû©äëåáMqy}3£w8¼ýO~ûØ•4…<¼é¤½Y³ÌpíäáíWßòü¶['zßÛ½ƒSME‘ÕXƒuVy™ïøÛ¼±‡·_’ßž÷Àu6¯ÃÛ‚ô·çÅ §wc×K{sR°=¼ý4¼ß;Œ m£yÞ~†ñƒÕÒ¡ç÷ÆÞ ‘ãÞóX[ØÃ[ÀyvÏÜ ¼/æux‹wâÔ];yZÀÿ½Ãáí7äìÁ®m­÷QôŸ*ï9ØÁçúœï0o9i­›ÐZŸãðök^~Îm圶*úai….<Ïæ8¼ýf{<ÏÝwË Íqýa÷|õïÄÞ~ýÿîãë¢w8¼ý{~ç¤þ;Çá-yMVg\“ãÇ[äçî†zS™³ykê_vIé½pÇÎ9vÞÇ5¥p!v¬Ñ~ÛG‡ãÞœÍÛŒ­-ˆ¿mÊ›dÃÈ…±º9õ`a­ß6_ôš·ñ‹3œw°mÞÑûúÁ ÙÃÇĵ3ã`-ð}·;ºýœy°Ÿ3Êó˜æº~Øà3õBt®ÃÛ¯Ð÷g—l[N{x[lË•ýNØÃÛïR?¿­2©ð;,ùaé}#±ßÊÆÞÞ±÷›\¬ÃÛRº¶ÿôÜÛŒà»0®‡uxûû¾ §Ów8¼ýjûÎùpþã¿ï ‡7?à¿wrxû9­g¿å…µ}{xScq&êÕSo¿áSçrQô‡¦Þ~ŽÝß»Pטrxûi ¿5iwšrx³‹ž[ÜÐûÞ~Ñ~wV’>9åðf‹öæotö6XZgÕ ׃Þ~A¼ßw Ì{xûÌ¿5éšÂÔùÃÚ;{5,¼[ôðöô>¤\ŠgµޜϨ}óóo;¼ýb>ÎEv”Þ~sÚþÎ(3ú‡·ßþÝ…+ƒ¾Ãá-ÐFôÒ1·nêá-’×dà\®ªûa‰·ìá-ÁV®>œSÑ®žvxËIß7 $áÂÞ~…÷qÐe‡·ü¬³dÃØá-mðú]NÏ=¼eo!* ­LkÞæåÉwKÐÙgq°ù¹»¯AØæmþý|½9h½dÖ@Òyí½dþá?¬^ÄñÑKæÀuv÷WÆÙyô’¿¼ø¿wÌ­›G/ùkàðçÏ/þmúÃŽïúÅovô’9ñ|¸KÔ1'r½d~|ÿm#®‡£—ÌÉûbb›’ÂÞÿ6݆5®õ£—LpúЦ;àè%ó×ûݱ#éŽ^2ïùÒV.òÉŽ^²WznL¬EÜØÃ›®‹ïÍE¶òÑKöá:Ù‡º ^2³Š~6L°ý{ô’©°ß¶3䕯ws|ô’©ù=‚ž{xû%KþìuuŒCΣ—Ì_ŸÞ?]ÎÉ';zÉüãg‰MÌuŸG/Ù&qq­…ñ–yô’¿æ£¿{ÈÝYG/ùkû³×Wzô’M'é0åø#oG/™ŽöƒVo,¡ovxû%íÿîc›ü‡7Ç;ký»_²í^2ƒ÷[™\ð}×ÑKf°³O´i×ÑKþêfþî!…šâ=¼åäýæ féT»£–}‘Ä>{xK>ûÕÕmìá-Ñoñ§_X£°Ž^²_Æ‹mz¢M»Ž^².#-SL‚Þ·yûkîúwÏÇ ÷mÞöyÏ÷|RNÙ:zÉúåÿþž{-´£ÖÑKÖŠ…ZŪÄ;ømG/ùk´ðÛC8–¹°ë`gÕv”°òò&6É.YG/Y:+“rÕÖÑK– kƒûDÆõ{ô’¥lÅR£÷=¼á™Zñ¬wËûç›ތχ½ñ>^G/ù fþöERlf½dÙG×h7TØÃ›O²Kö‘š¸Ö^R]æéLͼèo6ÌÝ_™öÛÑKVðž×™Ð'rcoÉ÷E𢭱Ž^²¾YÕ“½ç;=ØÃêgÿ½c_o·§°‡·D}½bƒÖäÑKþfôüöæ6]ñ;½¤*ðÞ,óü¬uô¼&«Kþ¶£—üºÔýî–íàݲŽ^"¿^zÉĸÓ:z‰LÔ*¾‰s 7Ö–}‘ªÀ=tô™ññl¶y“õ±¹.Êÿ]G/‘…vÔö³ÒQ_G/{þ¿ëß½Q0'g½D”}ÓuÒïpôùõÛ>÷ŶÂÐÞYG/‘_AÍy®ÏEkýè%bƒöPEãÝ}ô1㸩bÿÔ=¼ùe¤8Î:z‰øøØ´”ûµŽ^"÷Põ÷\ØË¶ZW¬:kbÖ"®£—쯻>1ô×ÑK$X·ßçÚàëè%òñyK¥Åuvô’¿Y¨?»ïŠûíè%zåb;JÉ&8z‰Ž`ghôÛì`Ù~¨Àï{ô_ÿìßuô’¿}Îu—9ˆ‹:ŒÆÖÑKÔ…b–›èW±±‡·øè%’ä_½D¿ïª\@ôc×ÑKŽËûÚÇìg­£—hr|so™¿|¹±Í›]¼ßB…쇣—ìû”µŠí:¶y³¹ÈoÙ?—îØ£—j6ÿ-Þ’ìߣ—ØLZgmÞlÁý¶}œ_ó·£—ü*‹þöÐiü÷\9ØÅg”}³£—Ø¯ØøO/™Aϵƒ5â¸fÑsoŸaÿ·t_½Ä(†B±º{x³‹c–.ÄñÑKÌÐöôš£@ß÷è%†ñùÊO×…öäÑKþ4ý쨭£—ØoQýâoWb­Ñ:z‰%kmiØtco‰~Ëݾëò×ÑKü|}ëhŸ½Äó:ŽÝWƒ_b›·¿úÍŸmï0"¥°y°è“IͦAQŽ^òwQÿ餗ÈÑKœÖoå?Þ-rôÿ%ÿÖÎ…ý•7¶ysŒ¿•ƒe …•–bT“ë|äè%M:^çæÙÈÑKÜ>ñn¡=/G/q Š¿•3ïø}o=JgnlóçJ×îÈÑK‚tðÒ)®'G/ Œ5W?Ö˜äè%!xV¯+ã y;zI(r|×·@ßæmÞþúJœ{S/ìEWu ~wÕÄ_ ýc9zIëã"GŽ^³¼g€*}ßæ-H(ýw8½Ãá4¼òqÖöÉÑK"Mг±ð.”£—ü5>礽[¸Ýßìè%I¹¬úoP£ G/É1s쉼½$礼 ¹è·5o¹`íÜó¨Ôè}í`QSâ}'9zI®¤m¸¢ G/I™Áö9ÝØæ-•õßš7gÉÑKÒY߉Aþ¦½$I×Í?÷ðö‰Ýj8j¤rô’ °i÷[ ~‡£—ddrþÎÀüi½¤ÞUH+Î mi½¤rj&Úrc ÌßÜX?X>Kfí‹ÖKå×°­\úfÙØµÈ)‚ñ~k½dc•4ÝŒ‰ùàÒzÉ(׺‹ÐÕzɸ>Z[Î!¸ÎZ/©Íf”¯1ùLm½dïLŒ¹ß³$÷Pë%› ޹GŒRZ/9ñoèÒ‹Þ×Ïõ»­ ú…ÒzÉ2Y³¹‚î¡ÖK*ÚM÷ü|ç4ÜØÖK6–óH«½®ßÖK6}Èš +¨OJë%•4Êš+Æê¤õ’_ÛÛ—m?É'“ÖKŠ Z¿<¯ncõ‡¨Onûr¶y›ÂyAÛíÆš i½¤šÐýËQ#•ÖKÆ´)¬Ù˜@¯4i½dcu²˜“.­—ŒéåA_5\±ã`á>®ïðýzÿ¶ÖKöò”S›÷|ë%%"³M°œì¨ÖKÆš¬‘Î0º[Z/+!©ÚhÌ$»¯õ’!“ý‹kRŠÏmÞdOÎ4ùYÒzÉøK0ýÓ«ÎÖK†kW6Elë%ûߨDÍ;ðÀïÐzI¥„ Þó5óï¬ÖK66è<«*76Â6o&ës·Pgm½äŸ|ùdâØƒB[/™>Ù~¨jJ\“­—LÇÜƒŠ·,3z‡ætÄÚåLÃÞl½¤PÒwŒ{hë%%r)Ú%F³³«ÏOcûYáŽ99ÚzÉLg­x¨¡®¡­—T'™Eß!á¨/¬6ÖÙß\20F¥­—¬+ûdn“Þ÷ámíËŒêÉ좕¶^²†OÊ©¬6¼³Z/©Ö”ó´Í]Œkë%å°?Ÿ8“pcÇÁù¼úÚzIÍ‹¡˜ÄpÞ›­—ì£kÒ}¼$I[/ÙXc; Sz Û¼éu%ûdOjë%Ë>ù}ûÔÂX³¶^R#ÄÉwÚ7!jƒÚzI ýf¿EƒÎÉÖKjXÚ +óÁµõ’üEÓ˜ sˆ´õ’ŽEš˜\&S¦­—Ô°ž¤zyµž~žûðViWôDÃÑ~h½¤Š_É~ƒò=µõ™±P-¹Pqµ^"ÍËçÃvp·^RŽ=틚I‰·^R†ÕÚïÕ‹qm½¤.[ÒÁÇ^½ø­—lƒ òcƒÿix÷s[/£³Ïª·P>w6sÒkÖÀ>T‘·ÖK¶j´Ö/îe«­—Tœ€îÂyöUÓÖK¶/)ÉÈ@ŸL[/Ùþ–ç¦Ósý`“â-ÃÙg­—llåÿzÍ´ ³¯õƒóíW”ð}[/Ùwqîí¥´Ö[/)Eï,£œSm½¤úc,zßµ°Ÿ‚¶^¢¿ÆTïø&öÕÖKJŒä|ðŠcâû>¼Ùáþ}_ð~k½Ä–±Ï»Í~²[/±…z_ix®“¾ÃÛ9ÆEjÏOÒ•µõ WÖ@†+žg­—”ùÊ÷Årznë%~Q¾Ü¬ž’¨ië%j¦Ê>ú°‡«¶^â~q½i}ÃÚv4ÜCvë%…MÎ!Ú+m9»õ’24)ÇEÿ•e¸íÖKnC>ã/Ä|»õ’;Ì}gÆÔHíÖKjðžàYR3a'Ì!­±¦6®ßKÄbâsíÆîS‡{[T×úþ`‡ kmqMÂ>¼­ÊðÿÔ/úoÕ‰öÅXàþý§¢|v Ì!Òjý~¡‡7uÌ‹¿?ãĵcãáÍãþ÷uã¸ßl<¼ù_qÿ+ŸÖq‡·} òç‡öf±ñð¶gÔ¶c_š)dãáÍÍñX•wµpMއ·¸ŒsN÷ÒCÀÆÃ[Ånëµµ6oñ» _¹ã¯ðèýÜùð–"ìCzi–ð·^ò4§ ŽkØÜvë%ëδ=Ëå 캱cšS|s®5‹[/ÙÓ‚{¬í2ÐsõÆÖ¾ :µJÀÇ5yë%5psÇoIbÒYrë%…ź¤ŠgÍK‘‹[/Y5$Õ)pŸ›F¿-ÿçIì¹&Ù%ÛÀœpVÛ­—¬JÁs½ZsŠáZ_£±“{y雋ç¹o®ö©T(ý)ìÃ[\“ë ·ÇøÖÃ[ìÏÀù;Óèü½õ’ú\’óö1´[/‘ºø›-Ñ¿óáy®7ÖÅ*1dás㞃{êì5¹¿ ­É[/‘2nœrY«*~‡[/‘’Ô#a{=˜ƒl·^"5ëÛ•ën¡¬´°óÁºK°½sý/Ïs×µ¿á'?}==q=Üz‰~jíë?(ë/¬ÞØM¾É§çÖ_ ¬ç¹vc÷#”µ '¿Ðn½DëÞôÁûbü­³7vûYlWg(æÙ­—܃”.Ò5tA[Á½õ}'Füòw–“Mpë%7m¹šÃd9;¬c>øS&d„]76/eÛsÈ«œýþ·^bå O:Ü ûUØ­—Tƒ8ÔaªO¤‹Ó;؃­.ݬ‰½Öäó~cæÛ¶_sàz¸õ¿‡÷êIŒ£Û­—x5…4ÚÕTï·[/ñ{V'Ù0û+Ð=ë%QFRÞJÍÒA{çÖK¶±paJÙ“d—ÜzI”3Ì>¯…~‡[/©@íg=lK…Öú­—ÄÝä–{ýUá*¾ÃÓïu-å>)J¶Q÷{ªåªã{ÊŸLö¼Ã™Û‡šy}ò_£ôßsO½©¼Izfe,²•õ8¢¯…}ŸgsÑyvòKþŒ¦ÿí>½Õ5Û/¿äÕ¯­ç@Ï…zŸü’šØö~nåúLAÞüó|?×kFÄB.ü[ðe¿ÒEŸç¶®|j˜ÿ¾ÃHÜó­—Tc±ñÆê×ýÙz‰üLþ÷ôüžæËYë%Õ}°Z£¡Éo9zÉõêÇÔ=ž—Ú­—Ô¼9xî-}ÑyÖzI5%.jýâžo½$Ö̉ß,ò•¶õ`?`¼ã¦gfÞ5ñÜ m?+Þ—dKÀ˜Eûo9q\µ³Èq<~€¾7Ì3ϧž:Û~À\ï‡Üw€¾Ú™>ØÇÈ9|Òú53ÜÇÙöä¼à¹·«dïäc—TO(ÂV–¾o>vIœ2ª¿w¨,Â>÷›†½›EÝçŽ;ÖîØ­—x¨¼‹ûŸþ´Ž½¦ìÖK¼š/½ÿºÖ"Ú­—xÍísÀ®»,„žë76Öz7 ¾s´äU×ü`ã`ß óO?Gà–ÙX:zû…F3…üzî·_„Ý–ö¹ßÆümåV!ìs¿I*¿ÃoÂÚö¹ß¶øNÀyLm•…ØæmBBÀ£^~=÷Û:h®g…fŸkv^ÍE\¢Ïò[/)¬Àl’/œzBù­—Ä+Ø~›Ï8/Ôo½¤†]˜Ðܨý |î­—ìï{á<÷r9&Õžùxx“s¤þͯÙéñŽåûhÞB…æÏëUý`Þ¼ºhfÓ¢y¡>»$͵¯Î×HÃç¹úϪ–÷©ô\û¿{ÎÖ™ê8̇ÿ¿zvÖ8÷ß,þÏž:ÿ½çIà Pÿõ/¡>.ë.O|ÿ¶ÿ‹Ð<Æñ&scotch_6.0.9/grf/4elt2.grf.gz0000644000302600021200000034456413303015264016121 0ustar pelegrinpelegrin‹¥[â5t[¢ì¨®l¿k¶Æ¼¡ÿ»Ž“kŸûQT¦B°l¦ð,ž¿”R-ÿõÖKÿ{þ{žç¯þWWM*òé¿ÔÖkylËúŸ=ÊâóëQô]–is~¿oÏÿµ÷{×Çîïõýþ~h6Yßßëó¿þ~_úRl²ò==úv…¬â=ÀôŸŽ0ñõ ›Žñ°$µ3•¦žó¿¤ ¶Œ°´×Ñ–nsꯛ-Íæô}´3Ìé­Øm)6§õºÙ’mÎï!L[’Íù=Â8žÇæü,cٜߊɖis®¯›-ÃæÜ^7[ºÍ¹¿n¶4›ókô10ç·¢y›óÛ¸yd›Ë{>æ‘l.ïAú˜Çcsy>æ¾l.oEsŸ6—÷Rð1÷asi¯›-ÝæÒ_7[šÍå5ú˜{˜ßk©ø˜{±ù½Ðйg›ß‹±ø˜{²ù½b‹¹?6¿—tõ1·eó{ñWs›6×÷bö1·asm¯›-ÝæÚ_7[šÍõ5ú˜[˜ë[ÑÇÜŠÍõmÜÇÜò6¿n¶¤0ë—gËfùb©+ÌoEsa~¿ø˜ëó{\>æÚÃüþßÇ\[˜_£¹nó[ÑÇ\K˜ßÆ}Ì5Û¬¾ô1×d³úÛÇ\›ßÎï>æ²l~ÿ@ÝÇ̸ðšß?b÷1—aóû‡î>æÒm~/†îc.Íæ÷‚é>ææ÷¢ê>æRl~/¼îc.Ùæ÷âì>æ’l~/àîc.ÍïE>|ÌyÙüþ†9O›ßËð1çaóûƒ>æÜm~tÃÇœ›Íïsø˜s˜ßïð1çbóû>æœm~ácÎÉæw >æüØü&ÓÇœ–Íï€3}ÌiÚüJÓÇœ†ÍïÀ5}Ì©ÛünÓÇœšÍï8}Ì)Ìï 9}ÌŒ¨¯ùM§™Ñ÷5¿Ãíô13ú¾æw4ޱ—Á[£õkô1?Ëæwd_>ægÚüû1Ì?Ãæ÷þ°|ÌO·ù½y,óÓl~o.ËÇü„y½}ÌO±y½û˜ŸlszÞ#ðA?Éöô~X>êç±=aö½o- ‰Úɶi!½ÿÆëkÛ°Þ#y}mëÒ{¼¯¯mÍBzdo¶…Õï¶ éÑ¿3lËRÒñLÛ’…÷Þ._Û )Éîó˜ËBJªïó˜ÓBÒ-2ù<æ°t“L>Ù-$Ý&“Ïc6 I7Êäó˜!$Ý*“Ïc I7Ëäó˜ÙBÒí2ùùXHYvŸÇXRV}ŸÇ˜RÖ­Þç1†…ôþSöyŒn!½¿Ó”}£YHYvŸÇ!eÕ÷yŒb!eý;>‘-¤¢ãñyŒd!·Ïc<R‘ÝçÑ—…TTßçѧ…ôŽk©ø<ú°Š&->Þ-¤wŒLÅçÑ›…Td÷yôRQ}Ÿ‡nžRÑ¿ãóÐíSBÒ¯øÝF%¤÷ž’ªÏC7R é½ó¤êóЭTBªš~ùBªªïóhÅBªúw|-[HMÇãóàû ©é¸}ºKHØc¼,$êûBR?4Ÿ‡æ$’ú«ù_¿¦¯mÛtÃÐÅÌíY.|}‹×™›/çÔÅ(?n¿S×múqpNº7k ðºà€-Û¶4ýJïMXå{ÐßÛÒ,,q¿Nïñ,.Š÷,¯nÔI¢k©¿4GÎÜÏ“&âYC€îð‰{˜j„M ßÓ³‰ûsÒÔ?»!glmI+…6üÞ3×z"GÝÌÇ÷ƒïîïJK’¬nçF¾•÷ƒþDÜîÃåí!-q²oøÙŽj@ÿ®þ<ï×f!iu”5~sW—‹¿jY•}§Ï6¾ç {‰ïìÙõ&ŽÉ÷íì:Ë~¾sç•,$ýÝ|ïÎZÆeû¼ÿ5ÛŠ…¤{÷ï¤ud^!Ú/iA¶÷À-<üôUÇu'ß–ŽÉwÿlã»8Ò½{}~8”µý&¶´mï1îÿïÿŸ©‘¹‡¿_³9fîáï×b!?=ü²¦*—¡¶u>¾¦>4lÈïbMs¤Âý?ä·)ͤ ÷ÿßÓHÇlù]å%މs³üž‡æn…û¿å×9k†W¸ÿ‡üž†æå½ÿ·-kÙª[;Ë–òδ@axÝÿú¯Ó­ JRsûcÌïÝ\þósR'¼zÎÌc:þºïëóößš\_£¦ïª—šëøË³Æ¯V¨`ƒN6k¥­ë“ã×<@Ÿ?ºãÛëý¤yY[ ÿáϪiõ ó~Ó{Çù³jêø5'xCåóRuŠþùK/ÉíëÏk_¬â:i]ú^üùøóØðž„¦ Oá’c6±ý… 0fŒ•ïZ(GVgy ªUþÉéÏrÿsûåX–|u¢Õ'ª>×â®”~j–?{ZÏšJ¼Ÿ’Æjý_΋²foq¦šIè³*àÚ4À”ÛíýÄÏ WÉY ÚÂ\#k%û~|?tþ°6úÏ/«2ªw>¾&׎ÿиÑ»ê_[\Œü¡›/Ì¡Züô©Œá½÷d晕{¶É\öL¨ªÙžî×’_BÖí*=þšìžÃ’õ³c!/„¬%~a’Yÿã¢ãe²>èu‘õoêRóâ¿Øøž#‡¥3ꄬŸ/÷Û¡.@Ф s>R±çwÊ12©¡3Óç×(l[¶ ÇÌäaè”r׿Í1¿3ìùíË÷CµF©ú·-cW]:üUýõ6¼0ûâãkã˜0-¿M މº–ÆtL>7du €YTÈïiøÜB~OC… Òù=Í1âÜ,냔>ùý{ĹY~ÏCH 3w ù=A Üù=Ér–ßó˜:PæX–‡Ÿ”9VÈïyL(s¬ßó˜:P¦M!¿ç1u LŒBÖ(¨#dÑF(£ßóX:PpGÈïy,(À#ä÷<ÊyX~Ïcé@™Y+%Î`+u þ[~ÏC¼Ù3!Ýú‡OPƒ<ŠõA:Ûç÷žÇÒ@Bîÿi0<1 yü§9ÀûAçòüOs€÷æããß3/ÀCó$û½Ëf¿ÄI/qVæ£ùOd–y«l¿¡Ym?.ªPhtj2~ØrÛ;¡ÖÔðÓÇÿ4x'ÙMßt³Ó,€ïšA´Kž"´ït`®¦w*ð_Ð÷ÿ<ŒMÓ€w4Pø¨%JÖBAL¹ñõýµR·í¯ør–‰•Ä©uÈÔ·†óð÷½Šµk¡FÐMÿ¸ÞÑ«j½ Fм[aZÐÖç÷þQ˜ð‹·¬Î¸+üâCÿÖË/¾ˆý•ŽåŒ­Ùæ|¯ŸŸ>h45È,ã{–Yÿ¸®&ÝÇ_ÓØ~üñD.‹:“‚~ù½¶Â®ÏïmŠû·ÿFÜã…ò ˜žc¶üž7û‘?¿÷˜ ð‹ù=îäüâCÖßû‹Õ_šeõíG-ý=äc¡ê‚{­ÔyON|>j©QÁc‰ºO¿8™Ê1ëA‚ŽÖ¬³h‘ô~þO·ißß߯ق Œ p'ŸÅ¢ïî…)Á”‹Ò̳LŒRõkQ2vøz[Ïø‹ïúü_áv®_<·üñô÷÷p¹[nÜú¿¾rPËï½l®$1Y|¿iŽ!g„V˜Úhj`ÒˆüioXÔÏcò ¦>¦¿ëç1…{^AKŽúΧj¬4ôñgMtøE -”&i}d+[䤇8Šža½?­ðò8)? :b–[E뙚 µdÓ_ƒ§}4ŠfÕàøô[ª ¡n3¨püw Ó¯Mn´2C˜ïXª_ÿú £~o>‹Už~=úˆ3ÿÒÚßßKT¿¯ ‡å'ø~üO?¥÷j·sN|Æ‘TÍœ¥@DÕ¡ù÷¤ƒð<›¿ë§ôÚþß>óÐoâGUNFä¡f;ËÛ ›~FÕã©ýÞߦDˆüžîâ¸n,¿§/QÁ²–ßV? ÷7Ëz¼¨3òŸÇò{Fâ•uTaé—Ûö£¹út´°Y9ëãúɼ-÷ÿø-UØlÈï½L«¥j6kyþÇš«ú©g­×ú}T?§@~íúí¼l+|üO¿˜÷LÓ²ž–êdÌf-«)¨Ù¬e}ÐVýjõx?²âC• ˆiŸ÷dD(ª­ucÖÉÐZ~O&q´ZË﹈PTZd[šÕ€–ßBCHr¦#øA‹'yôÏOu2´bU`91[ÐZnš8èCw{;óˆê‡ïu>tÿ:™æ‡ù±M×ùû5“núü‹já—mו=|ë¨zH¨[‚¾ÿçŸFÈïi虢×y᧦4[òy豤nágÛ°mè૽òˆS“"W _ô›žˆú^¡‹ºëÙYTÀÙ ¼“ÔÂCô„G8‡­þ×õ„lxÞ$g¾ëž7ÉGÿÓ%þ~àŒôØWdMßåL£ýب,7Qð¡Ñ=©]ç½lýRTÎcÓ{=ó&]íCƒ¾jÛ¶JN°êð‚8d=¾¡ÏÌ}ä—Xâi„ºYø·À÷^×Â[×þð¬J¿ }üO—Ëð¬*d}P³Žêm¡ëßP#œVÇþž‹)]òC¼¾ÿ?ËØÞüÄÂ~úªócVU¹Öôt­éoÂb*ä÷d¸p¦ë"¿²¦£e1ò{2MŬjh ×çר ..Ëï4uû´mòñ¿Ê´}ú<f¡e1²b*8PÎÍò{‚ "oYO;»‚çÊ•‹f!$9c«¶Õ®óXåó{ÏC4Á“§õAÊB1ä÷êá¨>Ð-ïÕÑù“ÚO}O¡ûtnLwº†üêÐþ~Ù+Á'вyx¶ÎQ-mÀÕ£Žê`}XEc+~ØÞ¢è´ÚS·o¿Q‰¡Ñ?],t ì„ÿ`SQh maÜ~£º£ÓŠ0/þMBØ>Û [RgF¨~º½êHìeù=#.O|,¿÷뤣uÀ²&D\Fù²üžLÒÉ0ñ ùã›f´¬ +Ÿ¿D$4¦·Ä=Ÿc¶Ütû׿ –»'žó,ýüWæ Õ{ßt(à+‡)¿ K,IŸ_£žˆqÌ–õT ?l+|ÔÓ]}ðÃ6dûꃶ!ó„Ršÿ tÊùïÈ<]Ó‡xðÇG=EÒ‡éº }ßÈÙ½¶Iš¼`×ñé§_x4eM‹äJ{©ìïZµ‘)Dû½Šm­è@ÓåÇ]̱ ›À^ážmï:Mv®¡Êa,¾«–×w¶½Ë÷CößC‹Ø‘—pzþ¡Ÿ‚ßêŸþ¹œ-Ø‹'¢:Hþ2™9·'“¶µª“q¬¦ý4%õAê±¹–ãöãÑm¶-SãÎ]|WUlm­éŒºÙtð%ñ]µ°eÛZÓòO流ÏÔh/œ‘}dÓ!ûÏÓt€¢Fö³­o›þ<Žå´ß{‚MÊŒ-d+êhõ·Œß¹BLƒñ­!ç®#ÕoZ±&!®pAçç»ßÓê:dS#ËïYu©c<-¿gÔuÈþYÖ²ì–u:dÿØ-¿gÔuFŽõ´üžÇç¿¥å÷<Ê1[V´¥ÔŸÈâLCê?å÷<·P #,¿ç¡¸/ B~ÏC^è*ÞƒpL¢e™t ^à qÇ%Z~«M¨#@í÷žÇä@9ËïyL¨r!7ªe9° =û p„¢å÷<¼º€CƨmêÐø£ˆ"9NѲBXu Žµß{ Sê˜PËïy,h÷@ÆDÏ•Õ`ù=”£®ÂDÐŽY´¬X84jæßˆZd¿ …“ˆ0SYôààQYÑ#2hšÒ¨èFàB=á—ªZ|éƒVk©0zð§yÿf]÷Š%„(ÄÎý|i²ßµzÓ!3ëe>¾t$üeVáO3µlrÆ/ì[³þ®Ç Íü{ÜbøÓ̆c[š©ïKµl›^Íl[zÒé/Ó‰ÕäNᥞõwî$s á/Ó¹kðçYºÍú<øÓh¦ÇIk´%kÛsI:Ä%AL•ÕXêÛ¤CåïnšÛèP™ø‡<|[×Äÿ-hRüvy×½‚Ç®q¤—˜5ÁzÿË¡)ÞTZ MqÕ³Šô÷N74SÖŸ@A!4=3'Òœ†¿rÛ®©yÍû×{ç'š;ÏpXŠHë¹ïêXxÎÄYk>`ž1õ?ýv•¥È5Ü›â\—Bè—"ë#‡þ¤äWˆyè5š“ÂÐó¦÷0ßóv™vy5ýPæTHwI|w…· ¸l*þk&·öC6Ú Ÿ^xB¥3ý­×âO_⻕®?Ï{Ã{û¡(dM oÕ•ø~ëÓ u»Ãߘsý&ggõ¿ó09Ú|«=ÁÒi?Ü­ÇMA³cËò;_áÒ´²™Å#‡Âi§¦†è4°_!FS1E“çl…Ùÿ¶ÖA<.<9=P-ƒŠqYùËt²¾ÿà‹N+ɼòý_Vñ^ÂCŸÆ£•Íz$º´êú4ôi2±SkEA¿Ÿ†<ýOêLõNÐT€Ø[øÈ'…ÎGZSÏ\Õ+ƒBý¨¿µ–³nfõ×}öýįëlz9€°õF1¹„x¶¢'* 윊ø| Ô,½ñk• alÃЫE²¾?…ªŸOÕÃÚåw«ôÔõ]jò(AµüÂévhŠím æ•›ëªÉ¾cNoËMá½#qúCÁ~VõÄc;KÛ­É®¡€5Ó{àñVèto8<Öš"zé{*MDƒÓ¿]êé8Y0éµ¢72±GaÏÔ¢Óy?![Ë»²´.»¾ð,'çp—40«h®ø^Üz8“åP£náX†eI]茧ÉN­®«"ã‡6Ðî]ã†&Ç ^['šët=¦Éœ6ôKv®G6…u¤šúEß©# :X0ÊKˆàײµ‚YE¦Þ{ʺ|X]OÝÒ Z }ÐFã©”"‰{Ô‘þžºžçèÉXÓ`-{»êqˆT¦_4ñÍ{ž“CT¿4ú…!ä­£¡ÍõÔ/ÄOÆ!×Q¸”Ì*è—Êäz“CTåN¿Ô„®:A’‹­Ó/Œ|™:“K‡+µÓ/ÕþSW ãbg=^N=Õy¯=""¶9ñX°ë]hÔãmhz¦£G=õK§_ê®ûž?#m§2ýRî Ç⩬~é¦48Ⱥžú¥»_ìßÁå ¹¤‚œ;ßU·ë}G.M)ì¬6þ±«®Ì*²î;÷<ÚÄCµ»æ’Š{n ˆ–Æôc9.s„÷Û¦Ÿ&SízSôsçÕ½(Ð5ÛL mÚÀ(¹mþ­óy†ÃtCxªÒ$›ˆ8¦¾ƒ×gÞϪoV4éQ™CUÙf´Ð©&„úõ!:|w½wÄ{ï4#ìS‹ÀGF•:"rT?¢5Üê Í¶ÀÉ]ŽWxì`k§z{Êçùä«}×_i5ÿTÞÏ  Žn”LøpëÀrÔ’ Úã•…äÚsn!T»[É´RÂ;…þE¿ä×€¬ðúj ?|K¡}*úÄru.ÚÕëY¼õõªÝÿfTSKsš ç‘j5…sÓõÍÃÁWµ—ê7"Þßß͟탑Z€ q`ÌHVº<Á¬¢Ñ& ŒÐfÜF‹ê NLØ1'ÝF†n… –á±ä—ÊÜ^—ýuaÊ!ò.f˜ÛÓÆ,̰gë Mæì™«xwCw=–LÇ–~bèâݳŠB›-ti³ŠJ½vùMÌ*šõ¡`×S¿äšü—ð>/ÕdþQú…õ¤žt™ULê-kz„Ù8DþQúEKP=Ð£ÌÆ!ª_ ý"Ê¥g"™ zNA¿$û/§šeÐ5‹¾Á„|kpuý£¥üÙ.h Ýï2r¡_Ò¶OÚh„ÔçÂõÒFèúÌ!òÒ/"Øõ60‡HeúESÏ´šæRábã¡7v­Ÿõ˜—·¸H™¾!ͼ5NMÿ(ÓwÙå¿«ÐyF ´&ê½Ç˜·V0«àz\ÕÓ)M2[¥_ò¶¿{ÍŒ23{ùJ×赸*ÿ(׋žd‰ºåSõ‹ÆÂ%H€ÏĬ‚/X«ÞÛƒC¤2ý’·ý=ÏÁ!R™ë¥ð|…:ƒwº*¯Ïq½@æxÔõ¸H½,öU4ð ýÂsL}ÞB!n?3}¬¯pöÿâm‚°i TÅShKÝ¿ëv{‹îzÝèhY{ÔgI§¿í ²äÊ¿ÒCR~ŽÎS æ¯úÃö••Ï£3|XÉP#1&%ÿPæ–¨S= ÌÓÌ–Ä•B¬ï m;üH¯wWs£1‡–ßs„ÉcL“¥@M O#S"1¤ÁŠ»3 : ÞüÁ$ã§Â¿¿ ŽĈv¥a¿jb4¸¹tHƒÆ‚4å`N‹%Ñ$}‚0 (ÑëÍOÀqÑ=`’Bc›h–ÅîÕ·Z-d#¡)†M•Îcô>ƒ²ûÔõI„o:LÓ«N ƒ¥(¤•5ä'±ê«ú¤IÖи95ñ³U“¿·W—i?1ýñ¸ÖæÁ‘I?QB±j@€AW?9×íXx}˜ ½‚> 2J×ò¼ô)¬=Å»§B÷§Ãûgã Uõ¿À¼Ÿ¼Eˆ;L¿~ñŽÖŸV­¨&K«é¶QZ÷é¥\ëz÷-+ ÉÜ`غn·U]}>ë¾ ZO o&òœ'Í?†?á¦ÿôë^óV`4|äÈ“7^e•7~zå|hI1ßéÃ€Ø ½ªÓÔhLÞâYO>lGï·¯ÁªAD´ ¨ýèI„Ʊ¥êÀú@tFÐFŠ9³vÕø3©Ñ·Mz:?¢¹3ä´Y3ÑÒ²3á6z·_ïü¯iʳ.þ£•…þ3ç`qåX“•>”ÆäGÔFÙÖì(ùp1å*X1]ü¹ƒÒ E¾›ÑH}¯Õ 7ºtuåŠÐHžd¬íoN#õ]5rcª£ ÊÈ0™(èm Y´(0£ÑÑøLg¡Qˆ×¦ñ˜Ë ôPÚQLsDg”]b+9˜ 0õ?QØWÝ $ÇDf±®â‚å &“CYAc6©qÅRñðt€LrÇ`ÈÛ¦<ï—GšêLÞÖsŽŽgƒšô°Öyô߀G fòú óÇë2žß1Ý Ü²‘ÊôÀ€ËKÝÁ@&F22ÿ9·_ lÂ(|4B©»ÿâpa“ÁŽkÇàéhl²ž£wk#°‰±Lz<úYcñ¢¯!Ø»­l’à^7ÂY»^³0xýlܲÂB=;Þ(&°‰~8 eêi¶`ˆ’·l¤õðázzÌ5×(g·©dðIRRAU¸°IRêA„€3G3n>Iw³a„c\’îJšL;:áh=Ð w6þ¸e#•¨æÁB“µ`'›Ë|šé-и¢²‘J tb$³}Wàë |’ƯЌMÒÈ¥•»áÌÑ Èd‘½Â÷`ÿ{3ìt²µra“bdVQ·©PQ-p½(à lb$³õ~´ 2YÅ{>HN} #è¸Åúc=ñìÜÌ¢CcSd¶áÌшⓞ`.rôH›·q Îðw×"4pŒ Ir&Ñ¸Õøs…™N9õŒ` [<$ãëzÞ;±秉NД¨çùWh®a‚’?Ec B" ¦^Ç"²ÇÔ»*`˜Tž÷iµÇÍøc1ºá®÷ŽÁT3û{àµÑ¨*×?°d²›U= ]†w@ZÎ (J «}tüóOñšŒÊËÌD”äk…JëqàŽ|¼Ú&ã“.?LŸ<’\=Œ_{ãqXχYæí­¿×œ<¼4Xaa‚ÏÎêp6昞œ.¬Z:€_ªcvЩÖ%ñj§–< Ö·…:¢…j£B®§Ã­/¼¢ ëéÀì©Ç“' „ 9ŸÞЀ65(çÃ4s(Âíý™‰¸%Æ]ß–âÍ ¿S1š +³úÅ›ÑÐÅæôxJW>k¥< vÓŸ8X=í .å šA•S“·Võ~Ë[€­_;P;A;…*Þb·€^4ËÑß–¥Ö;Ÿñºn\Ö©«p ¾…Ÿ p_®DØú¼ðŒ!L¶¹o&caJèY CŒYZ ™ú_Ìyv`ÐÒÎ4Ì*r„ÔÜÔÿœR£\â/*8ctÓþs*IÆ4Ggt Ìau€r`äNO¹†Œ^°›Ùäà0Ë`ƒÙõÇ·éÐÝ4q-O®õÁ §gì£*í-üÏl+mfù ·ñâ©cVÁ²Ü‚Š÷Ù7†4-Âm–G›]_¿úÔ(Zxd"¤fCDîR’:.è`ÃõN#Û§`Œw\‹ì¨ä%ŒÐ Mv&«MauI;8¨›Ó„š·Ê÷ÐÀ9ꡞ?ušÛ|°'Ôò©°ð@6 ö 5)¸C¹ýâtuüðt1 !¸ k”x'ÂôW1í¡±IŽŸ8@Ç|'»r"bÌéù¿rž>7ñ<~.ÝÚÇqrx>$û|ËÅÓïáôQëF žÉ´•‰óÎÏ•êgïaŸgc3¦]ú®:<É.‡Ì+%ÍCh\wNíP\Óø3¬žçv 8syE¸Mø: ÝÀ†|oÕ13”ö˜ðÔˆjÐÙt×rPG ‡ÍŒÛË8›õeû9·â Þhë-`ÏZiWx?:ˆ%Q}p(f9îµò!ì¼Ûª·ÔVóK’EúºÕ/½è¶x²†1üÏòkXL0i¿rõÅÍ/Ñ‘wŤ—ôçY¼1ü5¢j ÙþáÒúºâo”üåïöDižéБ‚ŒOßHèÆ’ Î~¼ 8§üz^N䤧‰oGïÃXÇ6îÿóeY?^Ã?臉µ)d\÷ýsݱeÖësªcËH {h̳ñ½s4ð#I%7}qDLÑÜÔë™9Rô¿ö©ÊOþZðÌðšŠÛYAn’ïíAkUËŒ¥¾å'0‰ã•.NxI®6ÈôDÅü8šÅyõ.^CÐÕDÄ“[M•í’7î9¨æã@ùägðÙGùšŸ¨›aç® ¥˜òd A¨õ"7„¿åˆŠÓ((r³<¹&ƒÚæ¨GBj¬qÔOØÆA7Ú§fƒ¨ã…£‚ †C]ŽÄ}•¦ òö{"ªÄ"u9ªù©y’Y?¸ cž‘ÓñA"S¦³c <;º’³œa\§Jþl@CÊΛ]>¤zD߸.ã²nEäÒŒ8!FcݸH‹™ykÄðþ¨ecJ./j5ô a†j,ôa"Re:‹æ(xÕ‹‘qÓC)“}[SÆ éÐFÄÔøÁ5BÚQC…2à<)bƒ6ÜÁ èè9HõL}ö$Åü „qù÷⸇}—“ž®O}Lz@F$Ùt‘0Ï‘8 ŽyFüM€ ¤ÈjD ê &¤ºT㟄Œ ê<˜h˜û’3b‰"ÇÕ ?¡«0öù•Ý *…ꄼ%Æû­‰5äïÜ]V2DÊ š¡VC¢.‘à3¢Š6RZ°íE]ŽÄ¤_£Xn޹ Î×Agð,¡ŽE;~È´-ÐPþG5E2'R¨PÚñE+ê’Nu‘¸žâá‚‘PRˆP¸Ð@ ˜ô¦ìgˆ:éæD‹ C)1Ú‰«š"u‡q>G«º¤QÌÙŒ”‚#–˜æ&Ó¥5Œ˜Ì OĨëÓ´gH‰Ò-yŒêIØ?di²²xfÓYôVŸw™4……q:#t¬Ó‰ïxi1¼­*ôÍäQæpØ—‡iÑäéô sŸ-5brP4ËRP‰Ÿ*ÉÕ˜qÙŠAi>&¹ÏêãDbOFä iZ#”ǹÍï¯(…‡X¶Æ¬· ÇÐç‘x›bµÆO1œ›fDjÇé°M IC£œªQ",YÔa+ ‚v&š™Áf‚_@,ˆ² oÄNR¯3$hRÓéF®÷Àgók €$EÞÒªO&=•ð\ò˜ é>ÂÚ')È×ÏÃÍ&½E¾¹’Ûâý1)sS¥¾Uv¨  r²_ß~mÓ¥qüZDÿ¸󥉠BCˆAPúO Q…ã}òæHœˆ¹Ï¼íjP”`bW šwÄM eÄ”´IG`Q=‰6ÒV!E©ð6Aß0Š 6˜’«º0µ®sÚXinS5GJⶪÐéRÚQCs³Âó¸:JúùZõûh‚Fð$ê²EE!ÄȨð¶D>Lê¨$ÙûŽ2F*L–½ó‹ë¯  Øh„¾Ò½‚%Eµ”>5ðQ°©|Ôü©ŽTJ¼­RÀ`$^¶ªnJõµd*,~.Æ/O&–án¹_2)z§'þˆi†ô%b‹L¤.D¥üv0å5ÂAI®²g~.=$¥k&§£“ÝQE`§ ¯\€ Ïr<˥׋4Ù©0{NJü¡Ï/1íæ"¸øNñbΠƤ¤ 4½6gòû;†PêÊ<ìÅM˜fåÚŽMbtRžäÅíh¨zJ<¬MŒQOldã9ÌóQ«õ7ªrtÑð”nîJâKò/±2ßšñ*À«Æ£V—ãBTó«<‰Óò"ÃPªÞ•ÿ.Ý<*–v^É” N4<ÿ‘›WT¼‡$VP?×±åäyýÚÇÈéïãOÏÑ‘ìôéŒS†R:’ÐÄi•oÎ¥œÉYŠ·Ë´J)iä¿ÒàV¡ç£—K/¡±Òðôé+UèõèíÒÛ[ê #[7˜š7übà)3b…r€«ðDš8]ú l¡——éþ -Yë굕ªj—Þ!§´1V"êÒA—ã#a´™O¬+<ë[î?¶Û+Ÿ';Êá^/½´i…îþ±µ䥮YãÒÓ©5‚WA®œ`gÇ4Afè„u™>¿uj• _`­Ïš4uðv2–´cÜó?z:Ì«ÝýñOð*YK4wôN!•@ZõùàW 1þ}¥¶}.}ÇDm°…d§?þ7ÂÀão`ó²Ä{æ~ÍÜúøYñy^H+5íWÖM¯>8†”ÙB/ÆÇÉ6c§À[ïÁ·6 “d§KÏÈ’Ä‚«5Ô¢¥ÐëbvÒÜ$1£t‰¸RõUO¸ÓRdE¢B 2 ×0ú Í‚q!©M?¸É®œ<‰5Ò)‡hx»Ÿ”i%GPñIGÊèê ,¯ü‰GìÕ,e‚ »-*=È(p10­Û‰'%$\àã|Õ• ž8rjÚ3e×Ò¼{NGV©zxÊÉÀLáWЬšDVY=û£wxÉÙqü„W‘žk6â©V¹¬‚cï—Ð+d5ÕqT 0Ãæ°*=Þ!I2õSw›©B'ûâj{ЙI­9ÂäÅÖé×yO‹Wõ.äPNÍÑxñÕŠ*ǹ‚}ù™ÉÝP.¾AR^ÍìFó'ò Uñ’¨¬Ã¥Ñxj!4è>»3ÑÖd³„‹XÂb‰—@PI Äk%M©ƒÀ‡×{‚˜‰-ò: ‘h½Ñªb;ïµ ž"Š’…Ä{8ƒ×Ù„´üqtm6F6P™cž´Ÿò•²> $ë ®·4•¡ ~ÏÓ›¸N>éíغݗ÷,u­àj4²±S†¥” i7̶ªÊlÝLÚÌÊô• {<¼T¶‰¸-Y$ú`Ï ÇĂְn&öØ=9•¼YX`5ënÚAXÆi 1ª¦Êxä¡fGc Ö‘Tx ïðªq›j(r@ŽÁ˜‘[:VÙµÆ ÜFð±ÊðfRÙiÄò<‡•=À(vªnWûséÏ!lIEº0›N¸çpR6î Ú†Ûz ˜VÍ@*»ÍšµhÉ;¾n½§z4ÌýSgXkßîå1“;z`¸ÀgIY»å~[08¤õk$—..zâü×Ñ©úq3eöþô@o3½µ*'Îolwb½¯UOõƒ¨åCÞÔuãÖû‘Jp´Ð}ýEp×Árü›íÒ7CSú4K›ÕýõƒÏæñÄÉî—>n|¦‡r2£zvýnrvt÷OÄyò¦®áG´õø Ï:O#3œÎuæÏq­^ E}¬å ¹úËÐÂJsö¼ôÍà„.¬—ìó7Nk!}­òÆmbÏÆàgæÌñb âÏ^ì\ÀM[@q©M›Úi‰µ¦ß#b7i^‚0Ä#/²£—™+ÉRfÁ/L…üA¹K1ËÓùh‚¸é<ŠÆV¼ì‡‰C©a7]kwû©ö ÁÕìážÆõxIÆa'p7G‚8áqÐQ‹÷ùúÑk2%ò®Ÿ\X¡×Fóâ4Eé2—‘ÉT7;Ð1ß¾~ !ʯÈ[Þò ÏÆ²4q¶ ª²“=yNŸIªdà«ñÉ ¥ë±V2†Bô{j-g­^…ô¢dl%³«À¥ú¯³-ÀÒÕ¾ôYdßm¼*¿ã¾ôRïâm„áD®“§+’x‚³€yEDøòã€'Býª{[ŠÒ—=›q™C¼ Øàµ½£$ZÆoæy—fýÿ²qt‡›Ä›¡~§È¶áwñŒÖöÒö¶éŠ Df„Ö°éWÔ¬}ž=V/} »r¿¸Û´Fä&™ÅýÊß‘ûfn…£€Ô?û®ái´ö|p.ÇŒ¥¥ã^âYø&fõCkÅàm,»]`fÑVf3ó|PM¹âe= ­\:ÿF†¦ òr·>‚—…NKõÒûÏ”x^NŸulh¦?£²ÌËÉúŠZ›—éJu Nè8Ac¼r$ëú´ž¥ÙÓèTÖ¥?74#{~«¾Ýê×ݸd­§i¡#Që„¥ÆÒiÑvp¨ì4g§£3l4¶½‡ŒŸÅù@iamÇÓýŸg ´Ê)‰þ?ú¸¡YèÃúÚõÏÔ“úao}‡ŽmÞ–ŽNÿ)·~"C?Ð †F oaM>SŽ~U4™Ò¹€ŸÍÛ6ˆkÞ—‰Z¡· gÍ¡@ZêóN–Èkä ^Ö€&;Žl×÷ß'ÂÆÂ)ªêü<6¶ÖoèPMèå¨ ‰ZŠgIŠèØ:”¬Ÿ#ŒìÔ÷ï›å Ð%É^Ë “3²ÿcØ¡d‡¼y|2/ƒW!ÕS'ê>hÖ>Fw˨Ðí«ãß'ã#kŽg|xÎõgàµÐ¿:ýÒÇM΃¬—@3¤ÆÐÉœ“…‡ÉúÍÛ85»ÿõƒÚtÁ0töÈ܇â>hÖNGè%êtSÿ šKÖ[@µÆ xÈ\óøz=ú¦iº½ oaÕE6¾æxaÑéŒYk¤ ÆÆíŸ²àiã@9ž‹e.BbÛ:õ)©o'ê óÙþkÃ!©ÆfÃÍm2çPY°qf„¦vKÔQšgI””ñ&Iu–ß@WDÒpÖ!‚ÍØ^q;M Érj”I"Ý[#ÎL¯6N²ðâÐg%3 9f•j{vg8£AÖæ–¦aL¥%º'[X: Ædw^­ûp0DïÑ›]Š”êT}ôXÊ:å^Éÿ­×Š•*2ö!ú6Í/4kÞõ$Rõ°ÛðV[ìòÙ39Â;ïíòŠ³Þ½õŽàSï4/‚l~ÿWw²ù™2–-^ÒãÅOÍÜfåÕ©†üÌI…©bªÒª‹FV²¨¨ ü&WWR’fuE™‘>€ÃÑòäÓáQòó4“6;‘Æž„”Jû£WH·§þºD¡ÁÔz'#™² õùÕœéÜI¶ö¨‘n÷Ø}9^-{8­dâ•ûuø+MÃR%Ç8‹ôÅD†]L]äÈÒ4]¤hx²PÀÓU ñs[‡=Ftì6Öqà™Ýi-¶™L éo\lp&&7–« Ña“KÊk2Da§4Lÿx×Ùõkè’>¦V“kjD;Cë-Úä§‘ÖÚsý8ùžh°Ö˜H*ü´@÷7EJÈpØÆAxHÔúN=yÌ_?ˆº¦p‹·ðÓªˆj °F}­"·XëLçž ó¢‘õ놓Ñ=Íþ.zgëLìžzé퀵­Gýré58NÛG|úÇñFÐ5%”Ó‰k æ6O} ?ÍgM`ú¶éÒþÉéèTÕn–ŒèþElÜɉÂý›>p—ƒÞi 9=)A×´…œ¬—¨tN§®y^/¦Ö¬}ôNI$ï0±™ÚçI}ŠréípºqôvÂà`jÇÓžÿè#›ö“°ˆícv¬IŸx±}ÌNZG_¿apw“S—SýN]Ó¹ÎÓT&#ºáÁÙ ká™Ot-ô‚¤¢\z ¸Æ;d½ÖKAØBoGW6ôä î–^7jƒ¯m”§bºFýr›Üõ¿õU\á‰SôØ'9_ôfq%*íÆìc¡®x&¿êwN_´FÅïiFú+&\¡3åz˜]½Ä«š$,ÏåèÚ0Ñ ®žŽÛH¹ˆAeg2³â,pÎNºA^cϼÍËÛ~±R/½+IéÒ`´¼+úÒÆŠKûç.6Ðkì½Û¶±›7m[Þ¨ñÚj©Ÿ-™Ø(K¿§¥™å;!ºn:y">êH©8yõ~ò&¶háô©;èϯíøÕnbo™œs,lpIþœ%²ß— k0´á¤Oñ’í°ÍáitýðË~xãP'ð¯}{oÇ·÷ŒÍ‰oÌÝ+b‹Üð»“ñ%ógËñ%W9ër¿j¼_T©.Û!ráÔÂIk‚47XÓ9RŽíuWS@ð A¼þ~ò2äÿo£AØþ©E^öæ»àfi0{9h jU kÚžñ¤ÂºÆ-ýá:ñNýCgÁÚ48Íí´IÓÆ=†ÉCå iÎâs;ÔMÞÝèÅÔûâ¤é~øÜüô¼¢‘Ÿ’ÖÔ´ØB2©ã6é„c³àsœéiÉèär˜IútÐá¼X?ôhn°…õ·I‡úî¶ÓR ˆÖŒåÆc ª‚Î:/I“1lîP¶SÉ»NÎϦÍ%_Áý37P àÆ©Qô†Y²Ak½½:»m|’ÖýÎëÇÊpÚTN_Ó¥SµÉšƒŸ…Žú;”-ÐÙ0:Ùl°²ÓHýÕƒµMY[@´á§=P3öÙ€º…Ôz3kÓ‚'Ás<—k`†¤"‚¾rÔê–%­K¯¿@NÝ™hßý˜,<è…FÒsé%$Ðm8hi°H§®KåÒçás:j ŠëÚS¯–׿káÄð³ j:¿Ôz3ëÏiŽŠær°²Ò4ÿÕŸZ¢éa—œ¬×`e¡«ÿ5\/CBW-Hð8Vßá·)>V¦;÷v*WP[Z³¡‘Ïê¿?†`mê?抄‹ãÛT ‰F@k#·K=mtƶ[O)¨ZèTå_êŸîZ[ ç'ÑÉn>Ç~Ãã'Y1ÜTî jcK œ¾ 6–zçÐ{ð3%{4“a£·MåÐUðø¯‘•hª¶°þ÷þyKÓèld¿ºLÕîP¶ÄNÖ¹Ò5¦gWò«¤èµoô¶­Ï¦j"mz¦-Oöâ¡A=ªL¼.îÅ]#ªŒ÷¤xóû~ßkì9ÁW˜i“!›ØDÕ z©ýµE”›òV=O8…;otvréeN¶j` žlOÉjÀœz@kϾ¼U]Ò1ƒº ÜÞ”LÌümâ)†cBg‰T4ªJ¨[/dl/$y"¥¶Þeçæ!25Ò5œ¹®€J·¦A¹i£÷Aþñwj§gÍÊé;Ùiña+VwBšÚxv²#-oͲÁŒdBÂBlÔø¸WÙ•T„±zçMS4õJ'’ÐwÅ^M]*]‘Wï§Ê~ˆê@½4Þ5öO½\ÞÅ–¦27½yŸIñª÷Áñœìôðhã·:#§@Ög…Ff(»â‘w“—J›Ä±ý€róæÉðëáx÷Œéá½Ó|<û_«ýùäÎmýøBφ ‘[è”­¼A©$¼}²ãš¥°j ¡ýP‘ÞKU“`|y·ö±t ô‹×|Ÿ¯¾À˜¬Óü+up†qÚtýArÊgÄGœ¶qØ`œ8õ`012F&òš9¬'HXuUã0v%ŠM‰"DíÃm IEúebÛ*’Šl]c##f›¼1#sÓ`Ë ;Bݬ×häÃeƒ‡ ¸IØR´ÔSC7iËÚ8:l0"ör#¸áþAŠZ+èØÍÌàc\rÜ¢Mn–H0b½3‹«. Ønãú ð‹!ÀØ8u|33›G§”K‡qŸšüûÕLíÙõG \Æ‹uÃo@€Ã€dÖ]àtéÏÁaúÄÉú†l¤c>>þ`å·A†Ú¶5Á8³^, Eý~˜‚™ó˜AÊ´{ÇnóÖû‘f€1ïöqBØnCjG‚ ˜òL7s^, QË8ˆLy/ÂúÜ8LñÓo1ݾþþ€åù1³tt$j…¾™Øô¼°¶hN[¯}údöá¶Ð5Ùø°Ø†`½ŽhKÛ¼½E‰wOÉÖà†Õ¾íß]ßžjæc-Þ9m—MÿL3's@“Ó4-¿El ø·ãÛˆHóË.ËŸëvRåxaÅ1jÀ6ÞpüS#0šãÒüâÔ¯éŒ_ÙJý¯žâ=Ò\Žnß ó=]hŒ—³aï–æH<–ý4¯B¢¤øl8¥Dƒì‹™·Ë±²ÿ²Öù‹m–½Ž_5“B彑kÓ¤JB^òŒŸÏ—~Ø«’Ôa±†Âá;Ð7[•HcMòhº(Fb~õ™WÆùá‹müþlÂ'Gé`¾Œ’Á],ÓŸ‰íö7ƒ0ãpBÿ¡c„™uëî°KqYïN‘‡~uÓ¯ir‡rž¢fCD‘UÛ ¯ž “í82‡åã»a™£Àâ'PL²ô33ñ­ÎD)PŠKƒ£6ƒƒù'B¦ rÖ“ÝþJma°•×&^¦_dHSÆŠ17ðº=• ó-Ìäòó1±qÃ-ÒdÎ^Ê3ËA¸”óÓKp-ÍN-ÙÓ7½ÐŸ€[°®ð+G§¥ù¯N­ÒM¸àZʈyB΢¹YÖ!dH8<Ó¿_Ó!dÀ¯¥é…Št*”6ë:ÁeAà Ì5k=Áe<#="i5ØÄHËȌۗ«rÎ);䌪`.rfýnVŽîà›òa´zê«#¸©Œ™Áµ^©=—>òR'´-ÍöBÈlFò/A .6‘T”\Æ ;Þðì_}=ëš~×bš´NKüûý.Þ¨þ‚Ï¢>:U[ÁÒÔ‰¼dVo‚ƫٳ­K/×z¥þ\ú kp³¾u¿kÜ x6¢6˜ÜtZ`2ýÓȶn$¶BG¢¥ÁMÖçǵ$µKÿåf)=”N }ÂТ÷\ÆÜì‚[æ .ÛÈ,à–â>Þ"‚ëÆáf_UýƒD Yp­Éz‚F¬‡¡Ü ¦ó‚ÂR€¸¡àf’Ê¿úØp+­£×œæúÆ\:u´¡ƒ´È®Šõ#hÍÁ·HÔs· `‘Ò"¬éf]ëý‡ ³>rßø…gªÏ íñ—'‹>‚˜Ëã‡á–:ŒAVÝ?‚HkÞðŒé•–¶>nÁº˜fÍxB1r®Ðuj ²ñ„â.{º>ÿH»ôçæZdÙœ^tð™úl¬ OîrdÒ éƒgÑÒÆ`A¸’Ýa]ÏlU[fâ^)HØpú4F `´hTÿ¼ÞBSoÁs4¶ÅUÄÁ¨ µ< Ö,QµºõÍÆH›¼ýv¶;Í-§PYPAŠuR’:‘„‰ÌÖcD¦Z$V'§¡3ê+fhê¼I~&y®Ç9Ðï} {Mbž:ÆfNiÔ5l¡wr“]'«² ƒÒ°ÙD¦7Hˆν¯±Óz`3a5²¡uÅoLa„)Ö05켈OëúžÈ®œÉÙŒ“b¾²ÃÁ´›§ÒêOÝû§¦¯-ý×´;‰8œvßy?ÿšRó¶J"6íŒÚü‰–´ Zë6= hl³¨ûqi¼g«DÓ+Mo¹6?Wjì.I¦v=ÂnÊ ÚØ9G\x§ éÈôújc“9½ÌÝS2v“Sª“žŒ½`cìxL^½Ï²ô"Kç]Ë4†=‚eê>l‹ ›ÒŽ]´ÕºV‰Ý[[wfXzÍÂ:žÝìÌq‡¬ƒ Û²»t~<ª%Ý $ʉ2 gÙ 6&6ÕY;(ŠaXÀ4ö‘c= ´*ÛÊÖ53ýêö¥‘!¼±Zÿ N¸¿NúWû©ý¢j?žãÀ´ƒÈT Ͽ̋­m‘€eìá cOÜDä묕dí®c¢¡fŒHÁѲ¾Ž`kªöa1$šC÷&.;¬¬Ÿú ^ö·aZ°·Í‘|s9j‡ÉšBµ#õ&ÒGÜn,Ÿy8½é‹Ø‡Í n¤ä\¥üb7Ø”Œ4œË+Œv¶ëÏtôþ‹Ý¦q¸ãÒ7;#!'ÒÝBÏÁÆ f$çô6ºÛZ‚AÌHȹ¼ÂÖ®úšµ:5áÅÙ‚¨éÐ4a]^a›7qc¹¸*mOêó”KשÕl,°ñH¶º¥ /;X ƒvq±»±ÛÊ¿Øícc¼¯E}±g@$ÐJd$"=ïKáù±µ‹‘ŸÈf–*VCÂ)ˆ›ŽÔ+Œ/–!ØX-tviÃf)PY`78XÀ¶ ;u8>ØŽ=‹ªÚ,fë«0V«‡‡¹ÿÛ §ù”ÃËh³ÇŽ‘š¢<5\©hê‘׉aį—i°˜ÎÜÔ—]ÚÕ¼ýÀÜ™ŸE⨑·ðð˜b>-dçßx¶ðx“:ov·üêèÎb³\ÂDV;^ÓéQv.›ÇI¢Á/¼ðißS;2¬ä”Ñ©üo=SçrvïˆC›®ª†f¼æê—ckîD6‡L9Ä=Êu#jÅ.…ÝPØŒÖcš346_"“°‚ʬh~½4 _âíKxþ-˜T±'—Þ_\ì¾5],r³‰¨9=ž¡§Ò\;HÌ›RFéÐRdË0¡Œ-Ó0áp ?l@û÷sd:ë娀ôë‹·ttoxçð°ØnEøè3ˆW¶.‹ì8õörî!§Ù±:ü²SCj² ãv¢ŒýãÕJ]ʹµ¦Nä¬ßênÈa^yWÒ;Àþa8Â+ŠA–žÝBr²‹4ÀrÿesJ‹Mè‡JŒ§=¥Ž c›¢±~a¹Á-NƒéòE$Ãk 6ýªcÖJ¢Ð/Ö,HšçŒ™k“4˜Yภ]é—¿S§=ªæ eä=z ˆ:õN—>’‘"}Æ}Œ[K;în@†e'p²Á­RFûîŸÃÇÈJћą¾ùš Y&>À{ÜøóÇשIp}ºö•2ùB²QÑ÷ º–qÕŽªYE¹ô~A2I*Ü?æcã_jG5ˤ ÒVN#ÍÇß]Ë|, Z’0N,ÙFg§¹yé„ã¨Ö©?ýï× eòܺÎϱL_„‚d’TD,Øsø™ðÓêÑ?R&Ï­ÓH9¤ =ê¢é“籆dÔR×¥æ6?ý ·Nûý8ùñÖ³ƒÏ¢~7)Ëc™€dÁÏàSœ:íOú´søX¸ôéù 'pY@´|HÙŽ+3ËdPsªhF#ù‹0;Nu“²¬ g;ÙgŽ5C¢‘MÊ’IÙ+øß¸²ÍÇÜœþ>&5P±Þàc’ú¥·ƒÎ’Ùºû/m§Éübd$¾¾ 1th¦êü˜œëè­îú…ƒðï·$ìͳÚ)ËÑqßúGÚÃILŸ|ý™Í‹Éeõÿè#H™HZÖ]@N'ÖLõ³´ —MÇúZKÛêúüûýÒŸÉ8 š>ÿeÃÖÓoq|Â$Ó¡WºÃá¶–Étè5ád}£7p™¦eYÙäôKÊB§~Áɱhù&iQŸƒðññTˆ'÷Âå‡AÔÛQ†>/f–D‹¶;dnæ–dÕWàY2nÛ 02Õ‡œÍÃË8àeÏ‘ø¹3p“ýÜ{~9kn + ®ºþ–ÊÅÐy¡µoÍxx?b:Ú'Ú£ÚÚµ3K×..+¹y—BÓ&ÐN“5Ãéñkzšë¯‡7üæc§>­#¨w¼ihàr‚E"B˜ÖÃæƒ½³{ô˜ËAèôçêÊš2uü]¹TºJOǼ±Mw‡vÁõÔ`¯¸?…tKyÏE†ƒÅ‰²Ü®+MB×NZ]©–îÎ];âˆn%EŒ±#Žâ÷ç2Á©èNóšò7 ‹ÝÞ´‘VÓòþÝýÖå{Mlbjc™¦éS¤cSØÜû•„Æðn²­^÷ +pÓü ‘ø¡ÕÉ~6Þ¸Btý6Ì6È4ƒÆÐÕë î©®ïÎÕ¯ÿ©·QŽÙøú¬ èîŵb]¡–Ú÷Jp&æ%šÜk5„[:te9Ž:RZÉÛo*`FèlžêÁUÿ«Ç NÓ{ɼsÔNp|üŒ(3pV2D )±W²ÞvÆ\‰‹N­¥N$ÐK$è f>戶| ¦2OV´™Fêæc™…!÷- PÜbö„mqߊq•ç ƒö+ÖàcËO@ Ä€4›¿å‡Á4šÂyÐU’¹~ >6ÜDû¢…'G:qºôdëæcæö† É·4Ï{²uó±Å-m¥£/îf+=p™œþ¶µ>þ6®°³è,Ðu*î—>dãÐh®þý ·@cüÓ4ây‰ZºÐ[~˜Áz]@,_è-+'föÆÊˆ•ãÉ©Óȼô’½‡ž˜Á®Ë[æcYÑÊHÛÓç·žMÅìIýŒû¥oH&ˆ–¹M%¯;ÂÚe¨–6‹°­Ï0LʲîPrÿë »ÐÛ+Ñ\ûôÁhY;á  —¾Ò´žØÇ.øÚÇß‚ªqèDß ¶©Û+iÝüÅÜé_J 'ó³ç—š©¤Ãׂ=§>ºŸ >ù±äF²öiüG¾–uKBr–µ³#VÓ3@ðl9÷:°X&ÿòûcŒZh$ä[sfgh—H©ø8úÆÁ>óÙNÏò›ÓoNžo°2'´…¢,¿x¾AÉ q±—âŒw;±EšwNóë}Ãïq:ÿ··@ }EóþsäW/Ïñj¼B)ZBÄöÁ8GÁÄäTí~`Ü¥ï°5Í©sbÐsœ"WOHê M7×üï°-¦e²{G +U§¥Ãά׋ÃÙéáÎã¥è )@#­Næþãà-™’}ª¢õqÀÛ®z¶n&fÏ]§réõ 6Ž©~zD§…5œ:ÑE‚vÓ3꫉XúÀØ¡oH*Æ_?t,ïúÜêÄaŽ^Áa}à<Üïº9Çc›žQ_‡K­p–ÌÉ$©ø8[ 45…ûáð|Ü('m§èŸàMNn˜óévZªÁÉâyuDŸ}Ž–ðŒˆ¯|ÀÙ:UÇ¥›‰G}Šñé†qÕˆ,k œ#uËŽN3'ˉ©j¦ÖælÁ©ë´r§t"Ò€qH4'ó¶h;úl`8DNççõBеyèUëÖÍÄÈ’iNfŽF}Ö ‰µCÞ±iÁátþ±d°¶¬ïæ¨8.=™šBA>½³®õFbd|ÌÚÉÙ†@díÔyg „‘+»ŽŸ8ûèšNátëãÔ*–66 Ž·ŒÐ¶•ú¾•0]õBp`³àd€1s²°RÇÿ>°¦f´ûÀéï¼…^‚£Eº0Ê:ˆM×#áÖ¼mDö6§Ø/9Yð¶Y =³È¢[9‚ÉÁmXV7‡£°Ìt,êׯ|¾b×àdÁÙ²Òyâ´Z;œm€ÅþFÐ1ZÒ¾;#êôh)q…>QSxˇààdƒõ„6Úq#4§å…jÿUÎ霷ô7£nÏ }h¸,DKdm¹cë-d°䫯ó4gèñL[ûä];Þ¯KD&YŸ®Ï6¿·zªž~4â×’ ƒ5íÅžxÇPaYzF½ôûnZB8‰OIŸxýQïyöBì•>Urúv¥ÞìJDÒ•°³+?§œTAã^çÍFMÏúCî”&ðш SôXS0ÑûIÿBSÌJdnЉo 0½›¯—ð[•­òNIÓ›AM¤©)kÀûUžMoÕ6Ewµîà¥Õ{Ó¾iáßôkj‘hL‚Mñ×h ô^ =ësr¡ 5…[e£«ŸÃIopôB&“^¹ôƧœô–Öû>¥¸LK Þìz—¡ë ˆ·p|Ú¯U8§ ×ôa~µ? méµÍAi¾i:Hì9R}ñL)úÒx­j<Æ`zÙ¾Ïi)Z%>ì±¾=[¼Þœ\Ü•lßç÷w¨±‡|™‹9lDàYB`¬j*Úʹº£ÃS½Z¶!ZD• ¯Ÿe%ÅTÅK eà•ŠjP·eôµõzô~éÖƒ¶ü´cÞe†hJ”™½'óU¶YÙ’Dá§qÑ”ÓÖh.ï¨1Kl—c ¶"ê,{ïåm}n¾¥D™ŸÞ/êe`¦D™9GÔЦfYù0‘€\›j-žìðøÜVªòÜú´8f ¯–6&Û@KØ(ºÏoÚð³¶æ_10×¶RuQñ/"È̲Âsn½GTX5ð²'ÀLùßÂ×—ænìZs€Ù†dîŸ Ì6ÚÒùwŠÐ‡×Öi®âäö› 0Ûh«Y§m­¹4“h,¨V ³¿Z¯­SgRñÒÐz8 ®¿<¶>7KÕ˜l-]?ƒ"ôÀX[Wsüæ=t$Mû ôù€Y6sòùL@h­Ä‚j±ps wëFWÇS]?h¸]zP1èVÖÐ-§?œ›gÄðÒ°n¯”"vmüÂ/7¤M-³†ÿœO왽gÔ¡}¹<[[}–ƒÎæ©õ~®ÀŒÈÆÖÃw.#,ë ½¨÷èQ—míØx®þŒHeÖ½á!fÃh¼9’Û¬± yá-¯GYOO ›²©±RžÅ¦'Û)>Ð'2‚EÏMÌŠ$úb›e-B°ÖŸ°lÓ×ü|:0æp2­¶+\A9x´¼a›%jlK©Ìmw€ÚAh´„^wPš¨'SFÎ\r­ƒÐ6‡Ó{äŸ>BSÿåq1LÕ-·äÃɸôìdÇŒ§Mºùâ-­£›³ØtWV¨ïÖ5—~ )Ùæp8Ñ?%º¦S/9ˆÛC‚®MÇJH46+žf‚Èp*‘ƒ˜•âþK‘k§*ºûÇh=jé…‘WêGœ•2‚“m‡“D-` ÏRNP›ÙˆLÒút®K38Y©t¢û×t,mŽF}t/3N¼ša™nw»OcS £–¥t‚Òè?¤àl-8z©î¿oÛ`g¥¢·ÛB¢¹„†ˆ-`šú”eÆû¿ÉçÃÉæŒËÊ€d§ÐÇ!n_Ðtìãp…á°úúÓøWàÈxnì&'Úo_ý|°º¯?Ó±r$š+ÿê9BÕàh…A¬ùú,›¨F-ˆ³=o½~ˆLN¾þ4ôÆ/ë-Ø™÷ͱD­¾&N&aZŸ§‘u°ÜÚAi'@-jÁÉð,=ôN"f¹ô ãŽ^‚Ž!QŸ:…eF.ŒuÝô츧 Û6]«§‘Am¥‡Þƒ¨…'͵õV`­tf ÁÜZ4RX•p'î ²î ¶aiPUûåä˘'¬¦cùÐ1ïZ=´ÂØa„ô„Sæ¹î§‹‰YÏ™(§ñŠ$RÔ'1‹—¾H=•„4RŠªÛpæfªõ>ÃÝR²5+ì+kŸ¹Ã`T}°a¿eF›®ÚÓvÒcjœzwÒ3 J÷*p¦Ow¢¤„È4MïJEÑõZïÀ²®Ô*]y»Rªt½ *wKíHŠÈÒWg\é‰d*ô8òýÔã»”pÿ±D™¦ mºÓ"ï4œöþ^[w!„Æ®—z;Té[-âp$hÓÃq ÉVy‡ÃšøW kÊgÔD¿Z#eJS¤Pˆoõm°VSV#ˆK©+Àà-ª©›@¢ Å¥¹ppš¬ÊÁÚõFH¯þä^’„A¯qw½¡Ýûðkœ¦?fWZ/åÉz׳‘®(¶êQ‹œ¸œµw‚6s°§åOÀÁÅ ¼ ;å\ÜÜUuZ ]˜}ý]Ÿß‹˜W7·SÖÎ4#ñÊÍàÖ/ –3ïYw¥6A3k ßÿre$"ß!¯vúuP9v¨AÝp¯üÁÒÊÑ“¤ü¯žÍ×LÝ”>3{¿›m-Ô@kJ¤™½_Í >3UÛõ)Ú Hƒº}ÔN‰4·®ä‚6„çFoš3u tGwL*ZàÀ®qêv:hîvºÅ)|TNFWù‹@Ûõ“þ>ªöQ·tt÷YZ=žIE¹ôahP7E«~z=õ[P7¥ÏÌNº¹­íP¹qtÏIÍÒæMítú¾hMÖœèÍÉ0ì0´ó|OSfM;åž¾X4šãž¬ûüMûÙØ4—žçÒÓ¡jº´²Ýÿ>WŽd§¿†û¨†J9]z04HœÆS9ùø·!¨Ú8žžS<›ßñDê¦ýcTÑú Ö:’¬¯àoቴpútꛪ©“4;«±&°U†²¥Í×8~ÍÄ>ȶùÝAszƒÚUÍÎjÉ?ènS5uæiÕk"ÐòèGG²Ó¥·Mƒ§‰3ÉÉúÔ:’.à éà´ÙržO€¸Ðp]Tâ1âan)Hn)y;—WÄîp#Æ; oQå ¿vêG€´fY6ƒáYDòN”D×<Äà\^íRðŠ}ÜI¯µâ×Çu ¼,:ɶ6#ÛÚ„áMßLnÅe0D¿fjÞ—íËJ&…¼òðªÈkƒbÅôñð’Çà Ïä5Ôi(ôL·-C»L³b÷Q^Ïxxõâá-‹gšlŦ3»$Œ×‡÷U-¦Š‹W_íÏhÙG¶ø——ÙA`áe\ÅKT‰÷¥žeR¾)t.ÎfåÛ·†‹úê6ý^‘rˆQê³ÖvM¼û”ürTfoœð´|TPó` ^’½i5? m~“÷ÖÕÛb¥[87^Ž•]3?÷Ëý*äÃ-yqÿ6XKTŒÞô[e@ôúB!ƒ6„¾ù\òúB™<íü®Öçߪݪµ»â¥÷áôsd@ìýÃæ>ÈW».à þf~'ÌöZKw0œ›óVÖ–\Á|.Ÿ«1Ø•#ÑܧÜhœç­¬7pká-¡×K¯u“Ô.½È$n묷­…;08Å|:U‘Ýéü‡ï%í½üœF(Ü?E+ÑIý—ïù^«—:ìô‘8㾋ßÝT¯œ:^¿rßåð·ŒDsn¿D­z“àþq`ÛGåhŽÂ×Wïȵ@oJþ’ë >·£ß@o4¢ìŸoṌ¦ Ü/4GKÖW8¹~9ÁnžÕ½í­p‡ÉÕõ~‡“6 ´ÇýÙ/'pKÁߢ*…¯¯Qn´zÓ.ooá{±©UuÖ ýã{AíjHîtb+ø\?@N]·úiéãw8…D¡>[æOÜq×wZrÿ­v\ð·ê—žamHum´×ž›¿¥ärTEoOè›ÊAâD –£—ƒöêѳ>•_¾·©’Š/Ø-¤.k;-…¾BjãZŒfuóæ{í¡ðøÆ¥U×GõTÌKŸÞ@szßmë³®–ôfœœ¿CWÎ'Kæ{æoJ eé#}Áï"˜Í,/ üMÙÜUÑõ·!Ð];žQ¿žZ-Üçu×ï!í¸CúÆáwAõf ½¨úŸk c‰·NU¤ÞôuùßW-†ÆÃßìäµ èM`ÆÔÍ|úqß?Ô §hD=íñ-ô|Лz"—£ó9 _»bã²7Øù‚ávÕfô¶u%þÚÖvÜ9ðñ7»¨žŠy*Ž¿ñ7I+ Ÿ²…J…ô8˜nºêÐ~×XÅïÄ×X(Éî‘Tð^]胜ØBQó$[øÌô^ÝcAó¶\xåNm¥rœ2è#¤·ÀÓo†t-¤i¯Ð¢aH'¸#‡ç[‡\ù²ÂßÂiÆÜ59îš5wM€ß"Yë#9¿H›)õAn–®´ª]}h«víS¶ÆÔʬkÑÖ•bU«P  k¹àh“ ‘vH Q=¶(Á)À¦)v¦‹lwí"%’Vú¦bhk0ÅÊ7Åŋֽc“0HcÃVJׅ纠 ½ÃÒĵšW[]\ŽwQº–Ô=¹Xd×uÝuUîºnº&Œ-S«iš´tedéJÈÒ•žø-„Ø)Àk oS´—>ŸUÀÐô·$³óVý/¬z§¦/ëºÔÚÔn<6l}‘>­“öðaʰ††æoQAÎB?¹õµÔ/©›¬e½OC- ?ì?BP·7îQ v[¢jeŒè¯5“ TȹäÍ;AªÚB¢*zqýÊçã™?¼fr¦1¸_¡pÑœwжŠk>“x­ͯ#ð[Xinà~é›ÇÝB7µõƒrêľŽeû‚⢾t“Ë¥}ÐNd7{»š Õ}PMÐ7{»™wxœN}”_Zà5 [èm-ÊéüG;zåÎ4ú íÀk޵D­•AÞÚðõañ)áæ§¯ kz™ÚRxZgOk›Ñé-l¹[OÝìIKš<µù\º*hÊ„xÍw+Í–>|x-‚Þj ¶Ú5MžÚü‚â káIs §~ Oªò·Koª©ë&EÍÍ@m¡S•N>þðÐmã;×_Q¿1ešë€6÷Q\ÚVÕoš7µzüöA»Ðó¥c(X´YSŠMKÕêÑ£~ Ôz9uÚ¥×ÕhSý»<ÛÒD©­Êãõg@·ÚEyéA׌۴E÷[p}uF=Æ7ø™ ëø}0ªéªê̦X|ª‘·¢É^`¸n4ƒoÕ€×½QÃÅÚ^{‘ÂuÿNøõmÂ¥V»€ýªŒ5Ø”°}"í5{ÐÒâ »+º†J@Ðâ ›aÒÊá.Œ·e}žþ§V¹¼hê# Œ€Áå’/|³k„×ß̦ÖÛÕ/ü¾Ä1ÆAè ëúª>.ûåOÌkÚWFJ·ìVŸvÃØdåcTmé4ûhÉO]õ`ØÓ®jÕÕB·óiášµ{Žÿ!N¡.¼¦©»‰ž¼~~‰Ø4 ãi45åbç mÏiÏÇ‡Ý Ãm„öÃE‰rޱšÖÙ/Zâ)ˆ†YoiõŒ7¬ Î@#¾d=‡µ‚åß±1›ËÁë”1Ôuª#šƒíí8<¥ µS ¾ý¥kÇÉ¡&O;õ{P<Ík·®‰¬ ¡·Ãë†õNaí›×ÅR5°œœÖ½¥õÖçÖõçé<öðÍ6‡µ2¸Ò’ÆÒ^ž_€OÝY(Œ²Æ…çFB/õ¡WWׯ¿z4Ò‚Ò…ÞN¨Ut½˜âéS÷¿¯s-›×}(0t$*@éê©;êÔA-ã À;mºÿ¸´4¤vFM»›ZOÁæì©–ìiÔúF}PºÎ¨[Ó/ª =½Ô0¥ëŒ²[o7„Ò…îþËÛIÁº²ÔçþÓÈÜëŽÂ ”g÷¿ ø@u æµ'¨/P^è#ô×õ@Éù ¾²yÂ~ß©Èjg (ÈAÓÐÞÜtX3Öh$PX®·rP_>„¾NP><{s(hi¢ëÔ[»ôí„5P z²}¡v›ýèTÊ›7„Üõ†Ó<¨§Îȼ“{} À» @õ塜ý>@')ÏÁþ6Åë,nbü;QxñÏR:(/Âê6lîÂÓýS?v§Nêõ};…TÕõ¡tã¼qA÷øÇÐÕÇ”¨ožP<Ø]gèê›ì }àêì9¾P;PÝG;ƒØÖsð¼ð|Žž/CÁä.P]Pºz´¤×Òä~é%Ю3~yñó±¹Ð©Úqºôöº£¿ð@u´ÔßF ÎuPÞr×ĬCñúÜ€îãީǵÐ;란võð:CŸõç º/Z»ð,n¿ò6¼.Èà‡úp‚×õÙ~Cñëõ°¢Ó’÷²Æå>ÇñÄ)P_‰úAŒ+ѨÏý׃èeÁ©L&ÑN:»”ÛØîÕ5ÈuÆ?L'ÞfŪúC‘qXÛ÷YìNçÇÖð¸¡(º¡‡š[‚¶£;¬ý}¶Óýá‰uVNã±4ðª[i^R×äñDº0³=…õåÇRŸQçïå…­ õ‘ßž]Hÿý‹'ÅH}ºà+u@Yz®Ý•ÉwK”%¨çâ[W¤™ Ÿ_û³íºf]ÏÆ»£íº²Žw%ìšM¼·5íJª„º¦ ] Åß‚¶´ÀéZ½tmÔµ¹Ð[Ж–7]ƒRÿ{­pJÍî»–]ƒÊ[6õÎM×üºk Л ò½i«›Þ, ò5mXÚÉØÚ(ƒn+½û“û[Ÿ‡­:Ú¦h¶®$}Z¢ †ò¤h9þ³[ÒŸ]TM;¿öÅ'ªfí³3’ ¡¿E2ÔÕÙ“õ¬Ó$›‘´|­ó×8C2БܦV:9ë!ÍÃ÷ÊEW ?1Á¬ŸÛsÚ鿇›¾?;rƒzãi£½ôÏåmzãiC>]Å[J§Ž'AõÂ)ùbô„®·¡Ds›þRø‘Àh©Qñ—$‚û€|ŠÉÞVG@OŸÇÑ{胇hð Ï“0­/>‘y›ô™ŽòÚû "ào8FJ›ídý²¶ç?1zH®Ïˆ§;â(ùÄèé-í<ŠJ› ¢)D¢Vè5Hà(Ak4ò1?íšóéý—êÔ ·_’|PÝYìd}ÜüðèóÒç|’Šubø\߸O=UŸOçªbo]Rµ“õ80<‘2N—žä«G/ÖË©_ŽZ/½F-pPé©äô×µÈ7ŽÞO µN$~. äc ¢Z½Å¼ôy çO#Ñ?k×?OI°òðb!¬ÏÁ}IE:1z¾Ð’Š|éù†|JHÿéåÔ¯ùB7É×~´öEæFБ¨õA><½ä¶îÈ< ŸÆï<¼Xò6ï= }S½p¢>žÃÏUnR8ÚX,†@ ƒþ©ë˜–=öäøû†ˆì¹Îˆ¸¦Z>fÆ“T.½áûâèvºôz Ÿº¦S0Èw“0þ@æ†ü昽ù-mp_îf+GkƒÑÒ/Xì†pSŸzËX“?þ`~;X]h$èÅþì{ lãù\f8æÎ´?ˆÝEIJ•Îr!ÝÀm“@ó=·UøÛy˜ã¨EŠúÃ+”N|*ñ Ò­n³NÍâ6]¨¯ù ©ÑC3ÆÛ¡£÷ÓÀ0®û>CüÖ©úá€Ö)³èÑY=K $ßèˆ*.Íœ§$ÆGCpe$±!<7çó6Û›î©4>âz¾t õÄÜžÕS öøÚN˜Ÿo-}Ã<$æà,üm:'i\ú80p»1ídýp<Ö®O'Í£»*7iÆ×ù…ì¹jÙœn,;Yÿè…:‰ñÕ!U098݇CwÿŽ­ƒè¢~½ôÍñH*ŠœïNG}œ¨3ÖÇùÐâ2ü—ã©Wø ®ñ±A×ß`nÓ?9-Ü?F ûÞN˜ ký†ìAç&ƒ¤šó~=Âqúœ§KljþC¢*œD‡§w¸ÞÖr_CRá[óÜ]¹ $ÑÒ¥·Ñ)¿‘<ç»­ãÁù²G}Nó™¿!{Ð9ÅOK:õ1PËtŽu°n½~Íë09lÝ0°Ýz D¬ Ïó…TOKôŸ"Tôù&‚ÀºîWƒÎÕSŸ:ŠýйþéÔ“¬þæ©Oñ…äæfš‡ŽõM÷pêÉf<Ç8œÝ-åO&'ƒ†6$`]p¾üÁé@tSÃåtÈiXóGçŽî‡¤såÐ=uM®—¾é–â–h$8^0¹°.êwÜÿ6݃Îmú'iàté#`ˆ.ts([çAtôÄ::L:‡•úxN?Çøõ¨ §SØ{ž~Ž`®˜—Tpý)k¨>ÏÍù‚Ó˜kÇŠ{¥â¥×ƒøh³áô×oð‡õãt‘_T©0ôùHýÀ¾8Îu†gÀ¾q8 R'ê!m„7™Núþ9ËÊŽÛ3äa„ï¿Ð9ÀÜG]Çã[èŽÑ b7)·¾9ݬ[ Ï›ã•CçÔÕî>¾mÑm„G›¿œÏà|Ôù8ßÇñH"JýÐÃ0Žç N7c|«þœÏºaÞTê:èÞ‡íÎs ör5ÊãHÉRv#’€z‡íeþÈ+w<ÅŠøüêÓõñ|‹áª0EˆïõêpÍ-"­ó”ed$þ\«Z‹!ß~N¡?.prR3rëÛå#¹¢ëSè"ç@7…úô¦,ÄOQa²&8g¶ÓßU»Í½R?xo^Û½6“&$f5Ÿ2’ ^JU¯®ô]–'?-¬]I»†Þk?aë®*VÆÑùa#p±Í.E%´P¹³ºdueÁz}h;”fCWî«®TWã±n&[›­]¹­ºX v2yHÝ•±ªëº‘A_ùxÕ箌T] ¨yÉ•ø4¿´­KBÙûò§‚'» C/MŒDÞD}RÑœMQ¯W[kc³…†¤‰7J'vd°‹#™ëõpÜ‹GèAø6ÜkáNBÐpòÓ‚ nLˆ“=­¯à~Xi®¹%×w<%1LÝ:ëŠ÷¬OPùK‡"åK/7ò£²‚ÎÁLóêC¯—¾‘ ܬ Go§þæzäõžÖ?p¯Ÿú§ÑIþ‰ðÐwо‚~1<×¥o$á#W¨·d¾àžõlIE:pÝU5¸MV%à_ù%ˆêšEñÁÁnž‹ÂwбiŸ¶Ó±´â¥o8÷ÓN6r·¾i^è42pºô~¸à<ºûïäüׯN­àzOèË+„ …ëp½$)]ú¡…uc¾Ðÿ  dX$•_=hàÆ|¡ûúŠÀ¨ ×[NîŸÙ‘a—Ô/}ÜÈP)S­üÛ! Néÿ„ ¤k(Ü'8ÐHPwHë^AìÀƒ’ _+ä·¹ )'VÀçU‚æ)†]ÖCÓ¥çéɉ¢¸·R;Áõ4÷ÁA$œ¨Ü[éŸ0AmƳ›ûàÞ‡ôùõнY¹^ Cz…Nøô ònŒ¨çtòütªæÿðóÆáé™öÉš£¹ÐÃ׋èÀWð“ZÓÀzt¤ú¯^>–'‰Â„BÂâàiÑYHWDJñ ƒÅų ùHýDpëý¦zd!]ŽTÖç–B§È8J‚R¨ù]ÀCê§`€±s¯ ÂÀϼN¹G?=G­Î=U#¹Gon[©PC lç.+„ÃñÈBЧ“ÙΑ€tîû[~øœÉáD#x.’Ð1L¬À¹Cø¢êη žw´Þ†yàœº¦>ŸžS:ëTeôÃà\.<©Ÿqºô˜8GRïx½­ùfud!õŽ®éÈGzô|¸_Þõ­»¸ ¸ µZ>°ªp9YHW }s9r†-ÕK¯ÁåpÓEnR\.ôD›—ÞœS×1ˆy| ëL¼ }H­Íå^‰ñËúb¬¹— Ï |;*/ªìƒ˜#Y€süÎé 9™€©¯µzù‚ôhÉÿ~Z÷v¤Þ2Ak .¦Sœ­CãH€„®G#ˉZ¡Ï t«ÿCèB¢9tŸ{÷›Aè´u^Ž„ š—nHÚë_ý¹áÜb8ók$ 9¤ÅÐ7>èë«ÕÀxÿ>Ïzé%ðn1n}#¹ÐëÑû¥pOçϘfÝH®íø¼ÅÒƒñÑë/>ª q±Óòú"ÜscÀÅ 7¿H<àÝæ~H*Ò¥o®œÓÎOyy}Ötàžº†Apë;4kÀ=uB#¹vàží_½8×îþãúâ …u¤ñ¯¾cö&÷W?¡ø¸\èœÿ¤M¬çp¿pŽÌ¡±Ã4ŽÌ¡üÓy‡KÔÚñyì–×ä †Ó\9‘|¡ïø<à‰DWŒ¶– tdØy‡ž•RÀ?Ìýcš§[ýÀ—þÃêØg­qÖ`ëè_$Hî°ÀBÒнl®§ ƒÐË‘ò¬uk>:R¾ôð.<ÓÑË¥çƒùª¤zéíÀ¹À€[o—^?.‡¤âB:Ò8:\m„ÄêŠ^ª(Þ ûãrXwsèëÒe#7΂æßï¦qE/d„Sý}s=aº¢w3äþ+‡Û•㔎“:©(ihyR9,oü›­ºµ ár›ÔÚ3â-7&¤%€c?º …ñ2pßÍuK¼,ïsÒîßbyþ÷Õï¡%%€ðB³ë ÿûêßF-}êêÉdê÷§?XÍm'Ÿ _Îdnóç‚UýnéÙµÕ&×D×ùçOǽPÇðYýSš=i$ë­Ö¢l£:§Ž„GWÜðPr9U­‚ºÎ.‡;¨În'ôAÊ8^LÕ[¿ÅÙ¢‡Þ?¼dªlx… ¥Ñ&êãÞá_ZÇs]ÇÄdµ’†'ƒ!oWNmþ—tü„Êc÷ÌÆAѰy¨ãxÈ1{ŽT­ Ëùb²NEÔ }mñãfm,H`> S¸‹]µ\€P’ “Géf‡´‰^¼E‰!€ððÈ"b»õX ,¤&UKÅ[m›â¤-„¶®Þõ#d³E(ÍfEØ÷W‡ò˜ ª'%½À ësؠοÚÉzr-cÁ‘?=¢?lH¡Sg”D/O ƒ=£‘zÂêZ› R§QÑõðÙâø(äŒÁÃwqé#(¡Ø $ÿD+®IÅâßgD…Ý” ¦ Á‚`ÈϮc@z @(vXFÙ­g×/O iSF__&ŠÍÖò´z)—^ìvz ÷‰â¸(dÑAÿè=¡6ð~¥“õD0t$;]ú J¸¸73ÞúU`à'tKåév¢~Ýúâ¶Ï½¹'œŽD1Payº¬o€¸Xûpof€õgq3îõf£Ú‰¿/k(Ëš'Pá+¸LLjHý_½ \Ü»ý¼À ¢¸ŽŽd§¿âh¶˜ž£»Z°CÞb|€1qü#…5bŸýûdí¥1{Ä=SñÒ³±`y†Ù Nn¿†5Ø` Txƃq¾ŸÜ?íªª$ýèÁ%£1ÄÒö y°a v¸=Ýýˆ:õi¶¸õ0ÀvxŠbv¨þñ"¸‰#XPÒ­— †@½\œ pÁv<‘*Nü<‘N0B Éwÿ"žH§Kßaƒ‹[0H‡hÁ!‚¡#ÙéÓ$‡±áÖ×dèúf‹I…ûÇÖlppé1Üm½"˜O}Š„5°áa’T€•/°º¥ò0ÈÅø9ú/{T×0H®ö Š,ϲӥo¬¸¸µ2H®1\A CG²Ó§— KbdSY‰Á”v¸)¤CøÒ©šÍ‹â+‹·äÞÖ|Øb•d'ë›8‚… ‹¢/åô÷Á~t$;]:†nɼ0a|îA Å‹^Ä.±yQXG`A¡Â¢°åd}ý`ÇFÿ,œèŸ†›=¶/p‡Ê3ÙF6@„ ÂñTÕ¢w·‹·äÞzþ°àÑÝ?¶–Ã’ ÷Ï  F} __kcÃC!‹^oúôDpcGI'®oÝKIkžÃz„ZŠú+P¡xbI~€D1öHs*üöÈG„b‡EŸžƒ †Žd§_@xØãÖËŒ7vlH*ê/€ÜXPR»ôæZP¢UºÈáŒ7vœÇ)ôÀ†EÑ…`Â]³C¶¼‹úôÏ ©`¶¨Û­">äd÷DU° aè~€òÁЩO‘/=%TÊóW*Gž8A$š{?¹Ò‡ ):’ŠvôhÄXIEÄîZ›¢ÓÈ8€ñÆŽ IÅ×ÏÜ÷ ÙúÇ Ë!}ê$/2Ø3\Òæ:uF­·ƒöÚ©ŠÞ¶¾©_~—éXD@í ©IO¡[ =±à(ý‹„ßIðt}hpÝ/Å 8S½ ©ú~ʹúA¼'ª*5iè'bp£A g¡ç­ïFJð=¥&ýôjÒ·uêWœ.½8vÐ|OùIåôwS»­×£÷KØAó;%1} _?;vp£¿‰¤Â×÷ßiªwêãäþÛÔnóAKoá(® ‚þ„îTø&j~—nI…û'€ÝñD*ÿêùð½zt÷ÏŽܰ!©ðõgê×ß³¤¢_z;ün ©pÿÙÚÿ›H*Ü› ¿kt NÑ~›ÿuÎ_N^D*É3ßÓáo‘6$¤ÖæIE@¼ ‚ð;ó½œq*ÖË¡‚ó$©¨þ Á†¤¢ýBB‘<ó=žeGi…µ~7TŒ¿~¬ÝèÎPÁâotý¢Aº'OR4¾årÐݳæˆò2µKv¢¾Iaö"#tS¿à{<€:z>¤0B ·îþ»Ð]9õë¿z¹ù]èî?[?ôבTÄ344ßÓsª’½Èê7nIżôñ¡;$¿¯ðô*œn]]W?ˆžæzР!á&yÙ‹ˆ våCƒH*Ê¥çÃïÔ5 b[o¦z[Wÿ3Æ"Ãz=ü®ÝýgkÄšïe±­ø~§Sg«ž$jT#jè#H w G¢ÖOhˆ—ãqšF52ªÉ{v›Ö3“)tø`fôCŽÐ#vÐ|/t_¦~åèHå_=~§®ë¾þ6Ü$O]Ç ØO!|ï⃙AÐ9B§Â°ÓÛ/>÷ÃÿÔuŒ_=ô ‚ð;ó½Ì è(/S¿ô]UýäPÁÍïÒÖý#¬¦~Áï2Ã¥aM&yæw™AŽE„yTwìàiÄ× ø O2 ùÔ~Èè¯ôGô€xã ½|/3È9JkG 4Èùã47Äi£Á…¤"¢Ÿ‹ Ý!½…£¸NáF IE@¼ü‹öò¥—_4¨þc›ž_s/EH#0=9¹~ ª—á3ëî¿ho{ZRÑ/ÝÔÏO’ ÷Ÿ©:„AÌNÿ£ú3ßË ’3úom>Xç•ÌøzD n4¨Eˆu?Ä8TÐü//ó=} ˆWLÁ÷ò*—^ƒêeFÂU¢~@¾1(©…S@B÷ß§þúñtÿEÄ  ëxQ48Oý‰ûÖ©°ùŸúAÌ9Â:¿{‹Â èõÉbÁËý÷ðA%5•Ó¥?¶BòÄïôÕýcjWB*φ€Åë‹Ð?þW‘TÄ«§~ ¾§¨oáó·µ^8O’о!à’ƾ«Îà{JjZJŒîÀy[÷C oä3ݱƒ§ô’>ê§³NÎ{¬§htGRÓÀy¾>W"m>¨þñCŽ1µ“µž–BoC*ñ¼µ¸ù] =tŽ Ýý³c7úH*Ü?›ÚáY ƒXû}â’ž âo=ntWrð;ôÝÜ-å {ÞÚèD º+96=¾iT+Lò.†ŽDÕîŽî –çýÁô”ÞôÓû‘zÔWRÓâ­Ç?HxA-ÞzüD žúºt2E@ÂMí°F#è¾þ4´•ò|h0˜^èH®_v(!ïI»èÏa‚xö,ÅA¦~åè–T”KχêüK½ôàw¥0Ó;¸Ð[“_T¨Ì¦öLÃýÃ]Ó讟–p—~Gšï…®]‰ ›Ûž(BIÿç;…å6¾Å‰ªx>)úoE# ½RŸ/ž½:4 ’¨þ©üÐaaº¨1¯8È ªWˆºÊå‰[‡å!áDUíTT¼5¹Y^!êeÇ J¢á¿-Q!Ð^ ÒWªû7‚ö”µ”Xäù‹’Šù( wêSDÿ¨BÛú„¦•v¸ß6è¬[Š–Ê þ·% uGsÿ Wš­‡?T_µúQÃðôËÚ–¢~;°¾WËú6éÛü¯>ˆÒWé–+ZŸDÜ:}2Ýþ=ÿóÖäÖ#ÑÜÿè6ÚC ¿Â€È¨Y?þ×7Ü(z ½èúãH3ªF_ÿÛp‚êÆ7ù ןQ5øà ¾Wúo ©^a~è–ÜÕÊØhw;Åø¨  ‡S4r‚·žÃ Ú+ãùùsAu#ƒüB¯òµ$|šû—µˆ zbôŸ @êúã'І‚:ë1‚m0Ìœúú ´!€ N}>?A€6T'ÌôhCAuâü ´!€ ºn–Ÿ @¨úôzø!û•ûþуÿm*H[@{eÚÉú8Ô°Ú Ýã_Ÿ‡R,$ÿúüf@¾Â 8?>ˆSaT½°ˆ1_)Ðv¾cÕ’õN¹\ñ›ï½R §¨AÀ¿ÍòʪW8 ëœú5€`Y_|_ÝüÏ, ãCï"úúØ0*Žÿ±—üp}Ný”´ù¡%DZƒþXN¬_¾g½°tñ>õÏáƒèÔí)…êÖµ{’ ;ô/Ú4ß³•ZöªÜ ]B/6NíF‡:«%€`„öàÞŒiúAƒSÒ§¾w¡CåQ-NÁ*Œ§Ïë ý;ÌÃ÷”SÕNÑÜ ´D#Â@‡ê³R€¿ ~´â6? ¾švŸS° ãés RR9|) a ô‡gMþ}ŽJê—>øÕ4n~èmÐ/`ú þW½þ¸€aß|OiU·®Ä©6ìпÍãùî j¨¡MÉTUÑzà§dª–¦KÏúúSZÕâÍšŠR¨Úz9ÏA,F{ýF‡J«Zj<ç^ U9è0ô~é=Bÿ@J¦úéãÔŸþ”Vµx³¥jÔªyCBoƒþZ2:Ôøå͘ô¿Õ?%}á€æwꋲ%ª^A€æ{Ê£j'‰ ?÷Àf”Ã÷Jð½ããÀɆƒ Û´@P½ÂLï ´!€ z¥ŒŸ @³<åLµD#&}¬-j«åùÅõ°1T¯±ÜÈÏ´ª;ô/ø_õúcüõ«5Ÿ–Bê·¥¤¯z|èᤫ¥Özø¡¯¿Ü.ˆh´‡S «õ·©à@Ráë+À¯Ú«Œ©žßÐ?Wͺ*ƒ ×;àoSA_Ê„~ô²Ñh¯¶ç4âõsÙQAÕÍžô/|×ú¯zý@°~ÔIE¹ô|´WI=¿ kÐ>ø^e$õü.€Þý«­ŸFn}SAÐ_e¸‹ ,[7ý…ý3O­诶µƒüü™ZP¿ÚŸŸ Àðõ|5Æ·º_…Úêü=¿Û¢*|¯ú%ð‡á AYÕÍÿ*èÅhPÞOŸ*‹£AwÿÔà2DUøž÷C::T'FVÝÀ¯öƒ¹ÝöâD-p_e¾?´t ¢:¾B}ëaH_èhO‚çÇÕê°á@BG º~‰ P½ÊøfÒçûïøÐ`;Áý×ú†ê„ÑOKžÿ¥Í÷BÚuê?A€»þD‚ôYàg¾Gs•1s||§Êø8"nþW¡*ù'–êtÿ1Ú)tx‚öRÔSÇýÃX8ËA{ícŠ'Èà:ßÃð¡CH_ð=¨^ãX{@>ï—d †Ò¾?L¾Ãa~%î¿ã‡ÿEUuø!T¯2H.ÇÒ>ë“’¾Ð?О÷_°¼#ÑÈÿèå Au ó;??þ€^][ÚñÒ[@>œ‚ßuŸ?Ÿ¨¾K sâqýAbbüâÖy !8¯1ÆK;àÏÖölˆwêï¨?e<Ý:üÎë7 ]íùÐ]ŽúÞÉü §¨Zõ5ø^;°ÉJafø÷Q»-Q~ç­Ë¯€?¨]cürKæºÚ3ÝáNèHTýBÿ`z-žohèjLòÌÿÖi‰ è-mˆWÌO`uax‚ß)ã©<ݾº&mt÷ABo]n)¨_=|Oýçù[Äòm¾§´§’hØú†|) §~éíæwʈZ¼5¹Ñ’RœÊz˜aÄÿ­ j?£íüî '¥@-AáÐüdÇúEUpNÍãÀ'SAdÊZ¼_щõ‹ª ;åA} ?X¿€xQ§øžQ_äç¡oêÉSÔ·ø~·q¡Ò¢–æñ/ôÍÿÀyʈZ¼ßQÄòY“NÂ)øÝs£AÐÒ¢–æõEÄò=Qˆ§Ü©o‘ÿûÐ OÛ½…û/bý¢*8O;#½…û/ÕÃsà<ívôî¿ÔÔ©ƒcÆ­o§j0½ü% ‚óZAwÿ¥y£Ap^+8¹ÿÒºÑ 8¯œÜù¹Ñ 8O[½?÷_N7ç5I¯Ým4ÎkŒo~~±|9H^ÔÇÉý—ë‹FºÆ˜i¾üQÁ ~ I…¯¿`ýu$î¿ý $î¿<©àDRáþËëPÁuêãäþãÖÉÒÁhÐÒ[D|U9Ôû¯FºÆøµõþÉ ÝýW>þ·Ñ]cLÜz9p“¼Æ ñW¥¾Wâ…þ¿ûHac¤lÿC§*èN4½Eð½ù '’Šyøß‚Áï”Eõ-‚ï=7$¬Üd${ð»Ø=»¾FºæõE¿N®Ï ö£§@w¼Æ æù_¿ztªVœ.½Ü$¯1ˆyýºÃ¤°Ýóo­_QÑRèHÔÚQÁ÷¼E’Rë¤Öá8AòÆõ×á8…„§®¯ñÅ÷áÔF:äÃïc• % àÍáw Ã]›ÇíŽÿka'øŸÎßë‡6Ú€ýæ{ÍÏw¬_Ôâ5Á­Ïpj }@óÁytjõS×1z}µòm*¸u¯¬§õ¿k ’Óýgà—nIE¾ôt `ARáþ1°«7$lL½~ø€à‡îƒ¤ùKXwÔ_åÖÊ éõè º%þýøÍãiIżôqó»Æ çç;Ö/H-)©jñfê;–o£A ^c&¸‚ßåuêð“rë;à/¤L¯­/¾ï†„IEð½ö ’Šö÷¡»ÍÿÀyJšúéã@Bõ Ë 7|oü…´™ž7[t7lˆF`z-žoÌðÉ‹ªï×îç°º jw$I*ÒÑ]õð;%U-Ýë‹ëUxÊ—ºuX]>~·!a÷KnHþš¾¶ãÙ¬·üøú‘<óQ hJ•j‰F‚äu×øM}=$Ï×'†~ôÊ ~—}}b *h¯§ßø?£; HFƒîzðãµ£þzÚ|~×ãùEÄúa8hPýçZ_Ô_Oå ?õ©×_Ô_‡Ôý©'ÍAw8uÆ7£?Xðãõ×Õ5ÜyŸ¤ëµ€xʬZzŒëw¨ßBRáõ[Äúax Ð cf<¿X¿¨ Äé{ýÀn£A žò©–ñUv9ªñ”YµxŸ¤ ìJTâ)³ê[øù÷Ó> OIU‹÷3ßÀ®EU žR©¾…×·ëUxʧúæ/ëü®ƒcú­¯éŸuœÌï5´õA€vÇ)ø UxöÔ?ñü—¥—ž¹Î æ6“ëT°H¨þ‰ç·,-Òæàÿƒê)_ª¬)¼ôÔ~ž¾þ‚Õ½†ÊY¯ã9?ZÌÿx´¦1Ïû™Úì:ƒœ›Ë—žâ)AªùßÑk@>¤h ½^z tÉ댄[ß/tZê8]z»ù]gLôúdÇúÄëŒd“úÁ7° iDïwnV×ÛóQÁÀy¡#ðÛ$¯‘#¾ ì€?ZªŒtŒ^_ë+7쌿Â]sÕ Jª—Þ‚Úu ²Ý N—^Î1÷Ã÷v¬Þ Ñ{į”Íÿ¾ø=pßÑg@ÀÞ6úS¾Õâ}’¶>ƒïõ¶=ƒïa >h¯YêsôÍòB¢ôñ-Ö7òuÉ­oê‡5 ¢ºÃëz%ø^giâFʉïÃ)$ ¸ŸÀò:h¹n÷Þ 9¿Þ£BDõmæçýÐw,ߦ‚ñAÔã›ãûD÷uFÒþñAC r>ãFÜ¿cóC<ûHÿßë •ö¡?Zúø NÕ~ÿãz}Øz˜á­×Ðr`î?î¥ã'0šóï»mô‡Uñô>H[§‘¯CZ¼>†åuÐJÛÍ…ŽD-£C¹ùÅ÷ÁòúÜVóC“¾ÐÕs;QÈçýÒ-T'0Ò]ñ°¼>·DsA =?d-b È×/ÜÏ÷Ö"‚ꄹ!a‰ë“±ln‰FvL ëÕ?sCBï—nƒ £Þ\›ôÅý—µˆ :iíø¾ˆÿÃ@PÄ iÒ÷XOª'W>¤Ïý°1T'1Rã@ëåAõ$#¥!Ÿûµ«†> ‹IŸûom4Õë«Òçßïêª')MúÜAõ$zÒÿŒUkK4bÒçû/RÁ·ãÛ4”Ž!€`ÖׯxýŒ!€`Ñ×|H_²ž¬úZ)ÌÖË‚M_kà¾âõ3†‚|m¿ñ}í¿ñN}'¾¯[.}'¾oXŸjüLM §õu€ ú/=_$àoüh§ö÷«û'm`øEÂÿ†ÇÇ/þo0ôñüDcÚH_|_PCõ_ª§~è›ú…TƒïôñÁ †ê?ÐŒ[òïW÷J%9ÝR?¤Ï|K£–ò›Ú‰F }ˆD# =óÃNwx~ó|ÔOý—ŸÓæ:|'K}ó¿χ ôJxø[Ê—ž¬H*üü÷CøhOéP‹·PßÖúQ=$^ÿ>ðkû”õ->>Ô°äS:Ô·ðúâ™7DÔ¦I’Tøù/ëßgóA Ÿr¢o¡~…þQȧL¨ïðñéF‡>¥C}‹à{›êmjˆ¤"_úæƒ@>%F-Þ%Éh/¤¸t¨ÞB}S½ÍµU’$î¿Ô?`|OéPˈç»i£¿M ‘TŒK7ÚS:Ôâ-Ö·un489uõ_Ä¿œø¿ ‚œºñó‘ëw¨`FRáþ;QA ’Šˆïû¨_´G¦To¡~ÅÿlH*Üyó¿ ‚I…û/Ô¯Ú#Iª·X?±~‡ N$ù_PANF">rê7í FÒXŸ”þ‚ rêj$â« ôžC3’ ÷ß ý£*ho0’¶/¾ïC‡ ½Áøñ-¥~Àª‡¤â‹ï jXý ÆÏöÅ÷ðkù㟟Ðû¨áDRñÅ÷}è´7IÛß·a =r¦z‹õMס‚œº‰ç#uó¿ ‚I…û¯æC S ¿Áø×ƒÿ}À/žßÚû¨aCRáþ«í†ˆ@¾Á Úƒÿõ‚ûƒh<©ã Cu§‘Ð7ÿ ióó.I'Ö/êùƒhøµçF‡@¾Á ¹õt£C ŸõˆiùC5Æ„¾©_H9HŸwIÚ@oóA ŸÒ¡ï²´^ ¾U)Ü­À0ÐÞ`ù·Ö1>j¤ïè꫱¨Çÿ!fÎzmÒ·õ ê¬çG=¿ƒµªf:¤/ôt€ ÎzæCú<¿aib ¨³žå>Ïÿ 6‚:ëYéóü¥‰ _Û!}žÿl Õ+sGúE| †‚ꤹ#ý">UáƒÁÕ§ÕWHäG¥˜Ÿ÷A7Ë»Ð!·NQ?ï ¢®xrpbèAõR8Q¾7_Õ¹W..üâá{cm'ª‚ûj\Ÿcó?œh¾ç]’̃ú©ÿÖצ×eó½v±‚n=êO¤Ãÿ>´÷AÄÁ éç' wüßd|d$¬_üßÇ'ƒœ†3ï“^”Út[?thÒçú›úQK$í:Åõ1”ƒöÚGÿú‚ýè¸7*º~Ço¾Õ#ÉiX{@¾éø,€^>t¸ôuº}¾#a~=îÏkó?S=WUáøúBõ”éT¤öÓ†hô'Áý,ïH4ò?:†ÒÆ}n¿…ôÅÿßóøxÐ!÷àwÝõý9 ÞØ[èœë¼#©Ó}ݱ~Aý€xÊiZ¼ºÑÑ F5å4µõ1úÛñd:íÁOX?˜ªÉÜRvýrÐ߇öÔS^_|3×h~ç}ÎîpšyóA˜ž÷9ßÔ®µ›@×÷ýAC×̇ß=Ÿ“û/Ϩ µ 4¨>Í_|Ÿž†.’œF›¡§M5ˆ…®úñ|CãÛ,ù想üÃÿ z ;¥3µ{ð? þêÁ…ê.¯/¾€¿Î æFÚ¯hpó;%6-Þ%Éè.¬#$HÞáƒó†„ð»ð4ßK;à ’Èyõ×áâáIL#–oCB [%yŸóî6ÿç‘étÖ|øß ’Šb½þBФ¢þ}±|›ÿóÈt:kð» aGRáëÏèn“@p™NätÇòmþÎ#ç©÷AtwABº'÷_yn4Î#Ýéôú"ÐÝFƒà<ŸN¯/Ým4Î#ñéôú"ÐÝFƒà<’œN¯/Ým4Î#ñéôøèn£Ap9O§Ç¿@w ‚óH|:=~ºÛ$œG&ÔéõEÄòm4Ä›ŒÁ—輄 8$ 3Æ¿úÜhœGÔü¸¦‚óȉùMÝm4ΛŒo1þÝm4Î# êôü-ÐÝFƒà<’ NÏßÝm4Î#ê ~\ûÁy¤C_UÇÁy¤C=øç¼Ñ 8t¨Óë £»ƒÁydB^?Ø4Ä#ê4?Þ±~QœGNÔéñ+€ÝFƒ@<’ NÏßv¬_TÜZ3=Û±~QˆG:ÔéõEÄòÕ¨:¸Ý2>ÆøÕúxäD#øÝø€`@<’ ÎàÇmÞhœGÔi~ìX¾ Ò58¹ÿúó ¹õj¤›æÇ°º ƒß‘ Õ»¤ŸX¿¨ º#ªwI?±~QtGNÔi~¼cýõ«H*Üëw¨_CRáþëýPÁèŽL¨Þ%}S»~¨ß@RáþƒÚ™ ö@w¤C^_˜Ú™ Ž@w¤Cõ&FAíLg ;2¡zu» ‚+Ð9QgÌïð@+ÜDÍ÷žÃ÷ÈoŠÓ üÏóc¼U¿+‡ÿyþË€Z1¿«‡ÿyþ·¶è.ø`=|ü¦8í¨¿Ãÿ†õN_ü_ð?÷_Äúê·Núü¦;ó;óÁ[OÇi£¿ y^ߪ*NP;ÒÉK®Ÿð+úú‘<¯o5´‘߉F‚äy}«¡$§8ÑH¼êöÛ~|ýHž×·ÚHrŠDsAò¼¾ÕÐF~Sœh$âû†ÛŸø-}=$Ï×'? r¤65Éóõ «#É)É£ÿø©ÿÒGòÌ4´‘Ú‰æ‚ä¹ÿ4´‘ä' ’WÜ~=ÀO˜>’çþcT3ðãë?ñø©ÓGòºõq€Ÿ:1m’×âù††6²š"Ñ$/â‘ ü4ȑߒñø©óGòÜŒj~ê¿ü‘<_Œj~êÄüOü†~êÄü‘<÷£šŸú/$ÏýǨfàÇר_€!€Ÿú/_á€ÖGT…Ú‘äÔ$Ïù 0PUÛò›šäyý‹ÁÀOƒùMMòüþªj;£Â&Hð»îõ/ªºKAò¼Kú¦v6D#ð»åñ`‡ùO© ¿[_ejgÃAêIAýl8è ~7‰L¨þÔ“ÿ"–oD-p™N¾nHÎ#çéòøhtÇõÉHV.ôøèn£Apž=½þt·Ñ 8œ¨Þ%}£»ÁydBõ.éÝm4Î#'ªwIßèn£Ap9Q—×î6ç‘ Õ»¤Ý}hœGNÔü… ÎhP½ÆH6o}4H'­ã4N|NH4žFÞ%};úSÿ´/¾ÏTP£éN£¾¿-ôW.TÿxýÀnó? IP½Kº0>ïп†ŽèïC{î?–‚ã4‡>ÿƒê‘ä”L¨›^úˆº#ÝéŠø–º©IN‘ÂóÓ]«?ñÀy+âWÌúrHdBæò¥§€x$9…ÿ½äCŠ–Ð륗@w<2}C¾Ði©ãtéíæw$9]ߣ ¼Ü„YZ<Ô>¸]H#êxu³:ò›n*8/t¤~›ä‘ó´ÇõÙvÀ-MF:Æ¿à+ió»†îëµlª”T/½j·ùéNWÄ·´Íÿ°‚þÀy+ž_D¬Þ‘¨Š>.½Ÿø¾¸ïè3 ™PiIéRk*·>ƒê‘Ïà{ 5È‘Ü:,/¨aÝ-yþ÷QC ¸œ©ÞE}½õ|dJ]žÿÐ+Á÷H‡„¾©_H:ðùÅ÷m`hœ©+âïûø€aà>Ò¥®ßú¼Ñád¤cø{mˆß# jè°<¶Fímtˆ“uëÚNæƒÃ$þØ0ˆŽ| ¢Î?žŒrCDmgTH—ê]Ô/jT°!©ðõ¬0ø |t©+žoŒþB§~ÿWïÁ÷H‚ ßó.ìfy$A…ï¡Gsžß¬ƒ¹«®C½>Æ@0ýWÉ„jÒ‡nCÁ¬¯é ´ž,úš¿p@ëùÁª¯å¾l½ Øôµ~á€Öë‚|m‡ôÕ¿m 8ôµÒ׬÷§¾Ž/Ðú8@péëܤëÓÁwÔ«$A5éãú³!€ ú©á2DgÔ3Tÿ1Hšô¹ÿ6‚ê?&‰&}î?€ úáÒ¤Ïý°1Tÿ1Ršô¹ÿ6‚|m‡ô¹ÿ6‚ê¿Ôésÿl ÕŒ”&}î?€ úéâ2´>7ìê?¦‹h} ¨þc&ø¢l ÕÌMúÜAõ3A“>÷£ž ú™ IŸû`c ¨þc&hÒçþcÀ3äk;¤ÏýǨg ¨þËý>÷£ž ú™ IŸûQÏ@PýÇLð1´>7ê?–#q õu€ ú¯ìH¿ñ¸ÿ6‚ê?f‚&}î?€ ú¯äCúÜŒz‚ê¿RésÿñÀÄ@PýWê!}î¿Räk;¤ÏüF÷Jå7µ Òg~3Ôk%œŒw8 Ûªÿ˜F8 õ¹àTÿ•µI_rÿ1ôªÿêŽôsüŸ Áà{ùÞ+˜ä|¨a2Ú“¤Âü —C ³Ñž$æ/¹jXŒö$©ðü:·C «Ñž$æ/¹jØŒö$©0ÉãPÃn´'I…ùAž‡£=I*Ÿ‘ס†ÓhO’ ó—òj¸Lú$½…çwÔŸë3’zý˃ï…gBRáþãúZõxf$åÒKP=‘>I*Ü\U«½"©h—Þ‚ê‰ôIRáþ+ýÔF{’T¸ÿlÕCRáþ+ð›&}’T¬øžÑ!õUô›ÿm>(Ü'I…û¯æ#%C>I*‚ÿ• òIRQþ¾X¾…û$©¨‡Þ±#©þ÷DH*úáƒ:b>xCDNFÜuý@ÄÄ©ÓHð¿çF‡Â}’ÞÂó»ˆåÛèPO’Šàù"$ùðÁ ÷IRQþ¾X¾"6$î¿Ö~!bGRáþkýF‡Â}’T¸ÿڸѡ Ÿ$Áÿæ…û$©˜‡~èP¸O’ ÷_~ bæÔÕHðçžnt(Ü'I…û¯ç ÷IRáþëåF‡Â}’T¸ÿz½Ñ¡pŸ$î¿Þnt(Ü'I…û¯÷ ÷IRáþëã C5K 7zð¿- 3¿úD|}_7:Âý7ž ÷Iz óçz òÕ‡A.øtѹ®|Ð^ÚÄüo}h°t¨ó÷ú#€lH(ÒW½Éùz5ø^T¥pÿþC¨’Š~ô@ƒÃèO’ _Á äÔç¥ú«¤6=ü°zôZÚ«¤;5ôç‚Y_Ó!}¡§‹¾æCú’õ|€`Õ×rH_¶^lúZé+Öë‚|m‡ôÕ¿m ¨Uÿ³cþ†×N} ‡×Ø$ÉhÏüpIpÿÌ ~•L¨ A‘¾÷«¯¿õü ÃFÿ©~ðgÝ+Ix äÛèðèAõR8±]’ø^ü¦ÚШ*«i%+jàÂ/>P|¯*õ)NFƒ;ððAp¢9ø^ü¦°À ~ê¿ôµú0úÛRÔ©‘ß4tªâ4òßûÐÞˆUùOkä?ý€¡¨^U~SôÍÿí?¬d:ÕvGÕ› W¥6ÝÖšô¹þ¦~l’¤­v__C9h¯}$ñ¯ ØŽ{£¢ëw.txó=Q½J~Ó°vC>Utûó>t¨þáýªÔ¦•ü§_$ ÌoùþlªÇ­—¡ËUUøýŠêU%9­¤C^_õ”ª ½àºÜâù°^½ÐaUÎÓôˆÿ«JwŠ.Üçö›­W$`ðÈßû¨_³ûæwþ}ÞúëÁuÜÕç%â÷žÍu×$“©øß§GÀß––ùÝûÕýèWÓáw߃ÕD*§Ž¯Ÿü½lˆ'I…×_¦vÕUAw’T¸ÿõj;ünCÂã£|Åü®þ7¬O;¿3ì›ßÕÄXWgP»àƒc󻚫à+\5F{®çð?I51ôµÃ#þÀÔ)ÛÉ$Ð|¯&Æ:øÊ ý \èß'ã|…‹(Ðàæ{51VµúEýþçþkát¢þÿ ~Q51ˆ5£?HÞ_?Q}HÓN›ÎÃÿ>4(œ·=}}Õç‚„à¸6ß«™QKãIP⥫~9NÉèn“<÷¯F-œØéDß«ÊoŠÓ¸ùŸû/‡Óæwíð?ÇWíпMýÆ©cþÞ9õ;Ðü/ǫ̂ÖÇæwæƒêN¿ßajg*8Ý)çé§§CW ;ë~ÿ#¨]:ÔO=Yò¥—CS ;å<•ǧQ‹$¨'pó?÷ŸF-òŸ¿«‡ÿ¹ÿJ8m~×ÿëÖ‡6¿ë‡ÿ¹4j‘ÿÔüÎ|°o¾W3có¿¸ùóge5Å)øùàÜ|¯f†.ææwÏá¾þÿà+æwéð?÷Æ*’ ¿Ë‡ÿù÷ËX_1¿+‡ÿ¹ÿ4µ# jð»zøŸû¯†“#ý‚ÖÍïjf¬«ý »~øŸû¾ÌEh>Ø7ß«™ªÂÒbCÂà{53àVàw7¿«™U+YóÁuør™âdˆh–7ÿ3TêS»tÿijGVTâû. ¾W3ãTÅüÎhpó½ªÔ¦8mþ×ÿsÿijGþS Þâ&kþçþcèjã‹ú;üÏñ‘ë'§îƒdėªL§v‚¦ˆ/­ðW•ßÔN‹˜ˆ/­ðW3ƒ`>(°g½\hœ·=_Zë…Áy’T8>­¶ ‚ó$©p|iíçIRáñ¯Ž ‚ó$©0áÒ2T'±´xn}4H'­ãdK«n‰F÷׈_1°³á ?u×øâûL¹³´p}_Ÿ#ôW.TÿxýÀ.øŸI_fôø§½Œ*ùM‰ôûpaèy´ƒþ>´‡àþãÒ2§9ô8ÿhOIN+™P7)¼ô ~F{áéë¯oª§$§•L¨á9?ZP®/îÉ_oÖ—CÊ,=Ü\¾ôdˆWÉoº¸¾¶^òeVn ½^z1º3ÚÓNFŸoëõèýÒÛÅïªòŸ~ú kBuͤ>Àî#…[_—ÔtW•î4ôßU%9E ÏìñScùOwÔ_4ü.X_ 4H&T _ŽøúTïPAIõÒ?jè¯*Ý©œ.½ÚJh8¯æˆ¯X½#Q}\z?ñ}3ø^Žñq™åª7þ«5æ¬5VÔr#&…~ÿÒ,φ䖪ҡÖã§Y`¾øaU:ÔZbü Vh¾g´§t¨r²^Ž”í…îþ›õPÃvêS¸ÿ ûA‡Ôo—p{"uœ.Ý•µ–ˆÏg­[×Ñ‘ìd}ª7O}Šˆ_{6ÕÃS#¥’ þ£?¦z†€J‡*§ÿ·©`º¯O[ð8PIR«÷?‡å™ï…N}Šzéø ¨t©Õû£okDý*Ij-1¾­~¨à†€ÊúéãÔ É¤Ïü¯*×)’#ýBš›ÿUå?µ‘~Á׿UYOí|ï9|0[Ïá|/>X¬—p ¾—¬Ök8ß+‡6ë-œ‚ïÕûõí|¯>8¬p ¾×œÖg8™ï™ŽÍÿª²žÚÉ|ÏüpnþW• ÕNæ{æ‡kó¿ªÔ§v ¾÷>èþÓ€†Sð½tø ûONÁ÷òáƒî? m8ß+‡ºÿ4 á|¯>èþ+Û)ø^;|Ðý§ §à{ýðA÷ŸÆBœÌ÷ÌÇæµ0 ^Ò:üpnþW ÏósøáÚü¯*¿©‚ï=‡ºÿ4ªá|/>èþc@¸ärøaÞü¯4€K®‡–Íÿja@ƒOçvøaÝü¯*¡©‚ïµÃÝ hµ¾×tÿ1 ^ò<üplþW è%¯ÃçæUYMíd¾g~¸6ÿ«Jhj§à{Ïáƒî?D€Kɇ¦Íÿ6Õˇ ÖSçÄ÷mjXíÁà+¥jXíÑæþe@„Oï ÀÍÝ m­_A€›ºÿáÓe~86ÿ«Êjj'¨^ðÃyøTO[Ù>ÑõYµpCæ® dq|Ÿû¿jXoXßÔ,Xz¹qâ¯^Ž^ƒ :¿é6Ôˆê÷)?ju~ÓMõ¨€ÔS4©ã‚ˆF{áúü€a =åG­Îoj–W@+uCÀÓqü)µLõ¸\ÇÇÿê„ÇFnÓã',ž)<ßtë9øhOùQ«ó›nk ȧԧ’þ¾‡õÿ‡ÿ„ôUå?­ÎêX> `èýè¾>5–)!êEú¢Î8|ðð?·u_ÊõÅÐvH¢ò£ÖñõÖŸò)?j-_o4¸£þhIùQk‰øzֹό¤¢\z ªT~ÔZ"¾ÞÖ|´§ü¨µD|½­í£z’úÑß³5êÍw,ß8UùÄù›¯r}•õWfàÄZ‚Ïp]ÏG ƒô…Žäúõü¯D|• é Á‚¤Âýg Xot¨t¨oQ.½Õ*ê[¸ÿl­AõÀ…A4âëmmAõÀ…A4âëdžˆP=p`aøz[GP=p ò£¾…ûÏÖT¨$¨µD|=Ö²‚ꕵÖxþaëT¨t¨oáþ³5Õ*j­_okªTNÔ·pÿÙZ‚ꕵֈ¯·µÕ*'ê[¸ÿlmAõÀJ‡ZkÄ×Ï ¡zà@¥C­5ÆG[GP=p Ò¡Öñõ¶Î zà@¥C} ÷Öº‚ꕵֈ¯·õ ªßS:ÔZc|´5Õ*j­_okªTNÔ·pÿÙZ‚ê•îôÓkÔ‚ê•îTNýX[P=p`èî¿5Õë§>ŸôT¾§œ¨µF|½­3¨|O9QßÂý‡•dz! Ò¡ÖšOüŸkÁ÷@{Jwúéi×Ê[‚ô™ÿU¥6µ|/>X­×p ¾WlÖ[8ß«‡vëÛ ªü°m¾W•ÚÔN Á@Óú '£=óC ó•gS?%9µ;|ÐüÏ,ïB‡#mÏzú€aà>¥C} Ç¥àUINeFÌÿªR›Z:A€näð¿ ü”äÔîÁÛáƒ8)É©‚ïEý"ÚIïýäø"]K=%9•õ‡n}íÕZ6.¬ÅñGíYŠ–ÿÛÀpª§ž¨¸Óÿ• Ýü ß&‰Õó¿Ê€X?4˜>Òçø¹ ~nD[ÕÊ Éû!µÖmøÐÞ&‰ÖÍú¾¨¿Óˆ¯ßú9µãÔ7ß3Ë«ukÈçýÑ- AƒÁÿÔ“Õ×gõç+pó?÷Ÿ` =ªªhÏæƒ†€:¬ ’?z:h¯ÝÏ—Výþ¢¥Ê i½2 §ËÇÿ âÿjehäqŠù¡Ÿ¬T0øüÎýÓüùDõ~h`äCwÎ^ú<èîÙºù V×çÖË­“álë)jAí€x•A°G|àø *¨®é^ßq¯ìõFƒ@¼ã#k‰§|QÁ÷œ¿tjD‚ö”ßôÓ{Tt§óï_|`ÁÍï”δz£/þOÀîÔ§æ‰ÿèí1j$«ý‹¤*ñ »Ê 㣭ÏAê:Aó™ÿ·©ŸºnPäŸø¿MýÔuƒ¢üÄÿmê§®c$‹ñmÇÿ Øú§¿øƒ©:pºô~ÐçOáþ;@jÉ«Œ„#ú/øŸ©$ÏzÄÏ÷Íÿ v¼Êøñó}ó?¨$¯2HFü|ßüjÉSºÓZ#~¾oþµƒä)¿i­?ß7ÿƒÚAò*ã[ÄÏ÷Íÿ v žÒÊé—ß…®ª™þY‡ÿ¡›j¸SºS9ø¾ j¸SºÓêýÑî>4ÄSºÓêýÑ¿ø?WÝ…þÿçªð;¥;ýôÀnSÁ£÷KoÁï@wJwúéóH=Ð]èÿð»@ƒHëèŽå{6Õ‹úÒ½¾øøà‡î”µzÿó/þ/êk¸S:ÔÚÊoüߦ~êšR.=âÿ6õÓùŠˆl‡ê•@{JwZ½ÿùÿhP×O¡ˆøÀq¨^ ’§t§Õû£_ÀîCƒJwZ½?úÖÇî”î´zôMýÖ¦~î”î´zô/þoS¿´õúÅÿÕ{Ý5Éšãÿ‚ú$å7þ/¨ŸºŽApëÿ·©ŸºŽA0âSwüߦ~:Á|oª×‚ß5A¯/`u7T×1Öˆÿ[è᤮c¬ßö|@0p^c¬ÿɪ »Æ èõÅŽõ‹ª »Æ ØÜ¿ëw¨ŸúA°ýÆÿmê§®c‹øÔÿ·©ŸºŽA°ÕŸø¿MýÔu b­ýÄÿmê§®clý'þoS?uƒXÄìø¿MýÔu ‚mþÄÿ¹*èNéN«÷Gÿâÿ6õS×1F|éŽÿÛÔO]Ç ñ©;þoS?uƒ`Ï?ñ›ú©ëÄzù‰ÿÛÔO]Ç ñ©;þoS?u]§h?ñ›ú©ëÄzÿ‰ÿÛÔO]Ç ÖÇOüߦ~êºN1âÿ‚úqktâú‰ÿÛÔO]Ç 8žŸø¿MýÔu ‚u¢þj*§~ÁéÄÿô Rµâtéå ?uƒàøâ£þFwA,âSwüߦ~ê:ÁˆOÝñ›ú©ëEÄ ~ê:ÁˆO=Q5oô×#>Õè.4¨ª ‚Ÿjý9èOçÏ ñ©Bí yA0âSûæP;H^cŒøÔ¾ùÔ’×#>µoþµƒä5Áx¾Ñ7ÿƒÚAòBwÿôÍÿ vð»Æ ñ§}ó?øè®1HÆó~¨«^n­ ’jV÷ê§®cÜz~g4H}ëùÒSP;ø]cÜz9õkð»Ð¿ø¾ võÔÇ©]ú¦~ñõGÜ_ÍúFè´NãÒûAwêÁ­¯›ê!Ñœó›^TªºS~ÔÚãù/Ï/Ìm œçü¦¦v@¾ *ÿé?ú¦~<å?­=âïƒÕ=½^z ~ÉSþÓOß/ô*©ãtéí&yÊZÿôÄúR8%QÜÀî#…¡¯KŸÝéüÓst%4µˆº³gÜŸm}Ý)Ó©ë~Wnꇞåð¿ v¦~’ê¿z¹IžÒVï¾­5¬„öó¼ÿù‰Õ;UÑÇ¥÷+ˆOhïè°<¤ž6ÿSN„¯þÞÓŠúÁ÷ ytËýWÍáÔó­? f$Žï8À´úS:ÔOÿ€á&}¡—ÃojØTÔ_~T°#©püF°Âƒ’ ÇÇ`ho"©ðóó ö:§N#^Ÿ<ù@J—ú~¾‹µï¨?Пҥ¾gãþ³õ9h0#©pÿ`h° ©0?=À0Ð`ERáþ;À0Ð^CRáþ;À0Ð^GRáþ;ÀÈúS’ÔêýÑ·µõƒô)]jõþè_Ôߦ†œ:Nó'þ/¨áäÔÕeýÆÿäÔÕHÄ·œø¿ ‚IEúÿ *XTäßø¿ ‚IEùÿ *ØTÔßø¿ ‚IEûÿ *8Tôßø¿ ‚IÅøÿ *È©ÓÈüÿ3\œ:¬ßø¿ ‚œºiÏoü_PÁŒ¤"ýÆÿ,H*òoü_PÁФ¢üÆÿlH*êoü_PÁޤ¢ýÆÿH*úoü_PÁ‰¤büÆÿäÔidþÆÿQ´×?#>õÄÿäÔÕHŒ'þ/¨`FR‘~ãÿ‚ $ù7þ/¨`ERQ~ãÿ‚ 6$õ7þ/¨`GRÑ~ãÿ‚ $ý7þ/¨àDR1~ãÿ‚ rê42ãÿL¹õ2ˆF|ê‰ÿ *È©«‘ˆO=ñA3’ŠôÿT° ©ˆøÀr¨!EERQŽN­@{ I…ûÏÖzÐ`GRñÚH*ú‰¤V Á‰¤â‹¤–Ñ·NÑñÅRËh[ç ‘/>Zð=Ð_gøT[Ÿƒ3’ ÷Ÿ`¹ÑagøÔ  V$î¿ n¾×D#>µÔ¯Ÿúíè7äë ¢ŸÚ·5êO$ãèWð½Î :?>ÔoÚë ¢_56ÿ *È©«ÿ">ulôT0#©HG§V Á‚¤Âýgk>h°"©pÿ`h°!©pÿ`h°#©pÿ`ho ©pÿ`hp"©ˆø¿nÈ×D#>ul«©!·Nш/Ï5äÖ©‘0ò›Õ;ÔP#™ò£ÖÈoT/*XTä£S+Ð`ERáþ³µ4ØT¸ÿ0 4Ø‘T¸ÿ0 48T¸ÿ0 48‘T¸ÿ0 4ȩӈûïC£ÁÆ©ÓHô߆9u5âç#0 4˜‘T¸ÿ0 4XT¸ÿ0 4X‘T¸ÿ0 4ØT¸ÿ0 4Ø‘T¸ÿ0 48T¸ÿ0 48‘T¸ÿ0 4ȩӈûïC£ÁΩÓHÄGn`hSW#^|À0Ð`FR‘¬o`h° ©ðúîÃ@ƒI…ã0 4ØT8¾åÃ@ƒI…ã³0 48T8~ãÃ@ƒI…×oäÔiÄñ/ NFt€a AN]xýñÃ@{I…ûïÃ@{I…ûïC èO™P«÷GÚÖô§œ¨Õû#mk=h°#©pÿ`hp ©pÿ`hp"©pÿ`hS§÷߆ö8uqÿ`äý)j_eëô§œ¨ÕûŸok:h° ©pÿ`h°"©øânÒ7D#¾êÄÿ5ìH*Úoü_Pä¢ÿÆÿœH*Æoü_PANF">pjõâÔiÄýw€^ Cê«ðú#ôç ÁŒ¤Âý§k  ÷¡ÃÁ |Æz¾ÑÞ`mX©aCRáþ;@/Ð!õ)Ú¥·€|ÚúH’ ÷߉ú *8‘T¸ÿÊüN}Šyô ‚›ï Ññ}ÏA‡è:uÉöÅÿüýIêv’>ÿ‚ß;ñ}õ£Ð©3Hö/þà÷¡ÃÑítéõ Á~ôvâ£~ô7D½þ€å‘ßtô~œøçãßÀÈüO×× ½Ñm¸Ã½?Ò‚)œ¨ŠÓðúㆃ¡q<鳞> Nû§×°¾ð|t§¡ñƒ¡‘¥‹ß_âø‰ÿ ~ñ}ý¦†¸wîŸ^Àòã_›w8`Ô‡Õ±ÑÝ›¯O ® yð»È_Ú¹WÎ+êo·i‰ þrxFþRXݘåè)H^èHüÔ?³ÒW­×ütþ ‚Ün}}aàÇ׸/âû0ðSOÍqâ}þ¬% üÔ+sžøÀi}àÇY¯¸¬¯ ü¸k®gÇúúÂÀO½²ÒŽôúC?]:+Ÿø@÷k W-î">°X¯GÊî">ÐýǀǂÂÔ¯ø@÷ßÚNAýú‰tÿ1`± 0õ÷¹ÿðÖGýæ!}î?Ö ,(LýÖ‰¤ÿÈjŠ“©_ý'þO KíÔïŸø?¥.µSP¿âÿ”«ÔNAýþ‰ÿSÖR;õû'þOYKíÔïŸø?e-µSP¿âÿH]ŠSP¿âÿ”°ÔNAýþ‰ÿSêR;õû'þOùKídê×þ‰ÿSÂR;õû'þOYKíÔïŸø?å/µSP¿âÿÈjŠSP¿âÿ”ºÔNAýþ‰ÿS®R;õû'þO MíÔïŸø?àÔïŸø?¥6µSP¿âÿHmŠ“©_ÿ'þO MíÔïŸø?¥6µSP»ç7þV§ü¦öŒú_ü¬NùMíD#wüR4ÒÝÝñJhº¥èîŽÿ£NP»™ÿ‰ÿÃÀO=™ÿ‰ÿÃÀO=™ÿ‰ÿÃ`à§QL§wü†~êÉòOü¬NYM-ÑÈÿ«SVS;ÑÈÿ‡ÀOXþ‰ÿÃÀO=QZྈïÃÀ¯ýÄúúcT3ðSÿ•qâÝŒj~ê¿2O| ûQÍÀOýWÖ‰ôóIeÊoj‰Fèõ-¬Žü¦8шã½¾…Õ‘ß'š‹ø@ÿ~Õ üÔ‰µœø@÷£šŸú¯þÿ‡!€Ÿú¯¶€|Íë[ Qµº»ãÿHmR t¤Ïý§Q § ~ÿÄÿ‘Ú§ ~k“>¯oImŠ“©8åŠÿ#µ)N¦vsýÆÿÁêÈoJUÜïø?XùMÃ)î‹ø>¤~ê„VO| ûQÍÀOý×Ú‰tÿ1ªøñµŸø@÷£šŸz²èþcT3ðSO¶ypŸû¯}ÀO=ÙÖ‰Œþ[QjG¦Ó }î?&|~êÉþOü†~êÉþOü†~êÄþOü†~ê¿^÷E|†~ê¿ÞN| ûµ„_û‰tÿd üÔ}œø@÷K?õ_Ÿ'>Ðý1ðSÿõuâÝ,=XÄp'ÏŽôúC?õßH;>Ðë[ üÔ#Ÿø@÷@ÆÀOý7ʉtÿ±Ö0ðSÿzâݬ: üÔ£ø@÷ë?¾öèþÈø©ÿÆ8ñî?Ö~ê¿1O| û cà§þëĺÿ2?îÄóÙñ^¿bà§þ›iÇúù†~ê¿™O| û cà§þ›åĺÿ2~ê¿YO| û cà§þ›íĺÿf;À¯ýĺÿ2~ê¿9N| û cà§þ›óĺÿ2~꿹N| û ÂÒE£™Nèõ†~ê¿•v| ×ø©ÿV>ñî?€ŒŸúo•èþ[å?õߪ'>ÐýÇúÄÀOý·Ú‰tÿ±>1ðãk?ñî?Ö'~ê¿5N| ûõ‰ŸúoÍèþch3ðSÿ­uâÝ m?jä7u| ×ø%}M;>Ðë ü²¾æ˜­çüо–X¬—üª¾Öƒûªõø5}m‡ô5ëí?¾öCúúß6DÕèîŽÿƒÕ‘Õ4ôþÿ‡D-’œ‚îîø?XùMCŸ¿ñHüÔ)îóþæ6D#9ÐÝÿGBÓJ4îóþæ•„¦8õû'þVGVSïo^IhR twÇÿ‘Ч vzsWÀI›Uò›F|àrýUwÔ_𽕃ߩ×X_ n:ÔÈÖtêçKGÒõ™?ˆçõ‡?ç v<œ–ç°:²šî¨¿àƒ¡#Q•Ô¦;ôïð½ß¤¹ûáAÕ“Œd†Ý¿ùホßQgåuøß‚¯•‘l<—ž‚Ú‘ÚÔ:-y}úsÐ:©P˜Ï\À.Ÿ–ÐËáð;R›’ÿô—~Ônó?’œzô­×°ÚÎóþç›õ#Q}\z?oä ýã{4B~T¥Cm‘?Õ±|髵¬üï~)š#êòü ·!ToëžîX¿]_CéR½?úF{9ª‚ûH—êýÑ7ÚÛÜGºTï¾ÑÞF‡à>Ò¥zôö6:÷‘.Õû£o´·I!¸t©+øóä„ç‰ê§_ŸuH¸I Ìoy~h´wÐ!¸t©Þ}Çòmtî#]ª÷?ßTo£CHéR—ç‡P½à{ùÔ§(—^‚ïAúH—êýÏ·µ߃ô‘$uy~Ö|ÒG’Tï¾­=ø¤t©Þ}[Gð=HùQ½ÿù¶Îà{>r¦®ý·6d‘Ì ÇHêùaXŸà{>r¦z¤mMÁ÷ }dJõþçÛšƒïAúÈ™ºb|´µ߃ô‘ÕûŸok ¾é#gª÷?ßÖ|ÒG¦ÔÏ?j?|pé#gª÷GÚÖ|ÒGºÔÏ?lÁ÷ }dJõþça}Vð=H9S—ç‡a}‚ïAúÈêýÏ·5߃ô‘$uÅøfk¾é#?ª÷?ßÖ|ÒG¦Tï¾­5ø¤L©±?RX[ð=H9S½¿Ñ¶öà{>2¥zÿómÁ÷ }äL]ž†u߃ô‘)uy~hkZö }¤C]1>ÚúÚò‘ ÕûŸokºù9Q×üø Ö ‰IÅÇoˆØTÔù^=õ)Ú¥·€|à>2¡ÆþHö>’8‘T¸ÿú¼Ñ!¸L¨±?’ÑÞA‡à>2¡ÆþHŽå;èÈG&Tï´cù6:ò‘Õû#m´·Ñ!¸œ¨±?R ½"V$î¿Q!bCRáþíF‡à>r¢ÆþHö6:÷‘Õû#m´·I!¸œ¨+ø47TÆ·1oˆ:R@ÂÍÿ }k}|ðC‡@>%AmÏóñÁ "¾Ã™$¼!bARáþ›å@ÄzêS¸ÿf½Ñ¡pŸ$î¿Ùnt(Ò'IE;z@ÂÀ’T¸ÿlíÁ÷Dú$©ðõgë¾'Ò'I…¯¿¹6ß³N}Šõéu]|OÒ[ÄüÏÖÍù$©øø`H:k l=øß–²™ßûÕý·ê/DlH*Ü«ÝèP¸O’ ÷ßê7:Âý·ÆA‡óÔ§pÿ­y£Cá>I*ÜkÝèP¸O’ ¯ïžçF‡Â}’Þ"Ö'OºÑ¡pŸ$ž??ùF‡Â}’TøùæSnt(Ü'I…Ÿo>õF‡Â}’Tx}ò´ ÷IRáç›O¿Ñ¡pŸ$^Ÿ<ãF‡Â}’Txþ÷Ì ÷IRáõݳnt(Ü'I…û/=7:î“ôæÓö6:Âý—ò…û$©pÿ¥r£Cá>I*Ü©ÞèP¸O’ ÷_j7:Âý—ú…û$©pÿ¥q£Cá>I*ÜiÞèP¸O’ ÷_Z7:Âý—Ÿ ÷Iz óé@{ ÷IRáþËùF‡Â}’T¸ÿr¹Ñ¡pŸ$î¿\ot(Ü'I…û/· ÷IRáþËýF‡Â}’T¸ÿò¸Ñ¡pŸ$î¿I*Ü¥ÜèP¸O’ ÷_©7:ÂýWÚ…û$©pÿ•~£Cá>I*ÜeÜèP¸O’ ÷_™7:œÜ:D½þ0Ú;èpqël4âþ«Ï·Nш¯ªéF‡‹['ƒhO›ï5R›äK»tK ˈ:¯?ímt¸¸u2ˆF|Lm7:\Ü:D#>¦ö.n ¢½ÿò½Ã%©øø`ð¿€€’TÌøá&}’T||þî“ôÓÒDLI…¯?Ö²©\üP’ _¬eS=žÔ§(—^.Ò'IÅÇ?þ·¸õ2ˆF|Lë‡ïI”¤¢_úMú$©ÿÛ|pqëdø˜¶ŽÕâÔidHxÐ^{$­/î• •þ¡?;q}ÍMwÍ™¿˜@ë9Ð`Xö$”Í÷INCŠø¿­G,_ð?{FýöË7Õ“Ô/½:<¤oëÿ·ù_PÃ…¤Â|ºÜñía|œ&‰æ_O ?œ\ŸA2øµu×óA>ëÛÃЄÿ  W/tØÉ•/CµtpßOü_{Yz˜ï™¯r¯å!ÉøøŸÎEü_ ==¬¿üÐÀNûüWí½ÉŸ(]>ó¿r˜ŸÜó)@]p;+ïðôXy±ó8÷º>Fs¤t Z—w-Œs$„ Vç+Œ*ÓXŽtrAê|þT†r¤  NgzOÓºÿÈb›‹½ËÅæH}çº-@ݘqþc«ë?2è™ÐÅuEÝbGþ=ó9_5®’âHátνD3ºÿH–ñă*1IÁs#žw¨Šùà{â ¾ágµØ(GêÂß÷×w•aGâÃÝgµÙ(üFÚÄÛgµÛ(øFªÅÙ÷wªT£75î¸>«ÓF·d æ¨>«ËFa·tpÜôúÕUÌãþK†yŽè³šlrK„Žç³šmpãÍ÷ÍgµØ(ÜF^ÌË÷×w•aØFÂÌÉgµÙ(ÔFÎÍÇgµÛ(ÐFîÎÅ÷wªTc6ò}î>«ÓFA6R†î>«ËF!6Rîø=Tª˜½ýGºÒ½g5Ù(¼F²Ó»g5Û(¸F–Ô¹gµØ(´FŽÕ·÷×w•a°FšÖµgµÙ(¬F~׳gµÛ(¨Fvر÷wªT#5ÒÊîx=«ÓFµd<æh=«ËFá´”?Ìæ¾¢Š9ÛdÅÝ‘zV“Bi¤ØÝ!zV³i$ëÝzV‹Âh¤÷¯ÍxF•aˆF"à¡gõ=_(uû¡jî+ª44r›©Å“°wt"‘±©›¨ù>ç*ÅðŒ,Èæi^…ºn6:#›rÐ4÷UÌÔþ#óȳúž/s7ê>_8žÕ¼Õ÷Äù˜£•¯î42#wtP4÷Õ;:‘pÚuÇahî+ª˜¤ýGÞj¸Ùô}MÜŒd×n¤D›%¨ÚØê{â  ^sºn1(#ãöÀ³º0‚ÉHß½Ãï˜/QÅüì?’ïà;« #ˆ hbh–-æÿLîê³b­üÇÒå=Ö)<6`‰iÿa,¶6-›,/íoZö룷³ÖÿcNñþX[E¨µõ³Õ«_˜µiíý[;:Î!vhïe²¡­ü…×Y{¬½š©šN½ÇèËÄÎu»Xö¾õ¬ÂÜ/òŸF^¬ Áê©7Œ»æ•›Íý"S°ÿf;ðËý"ÿfÌÅšÝàÌý"ÿjÄÅzèÕÜ/ò/Æ[°€Ws¿¼CÍ 4f Øå~‘¿‰×ó9 Ëýò; Õär¿¼þÖê°®rêM£,¸Šá–ûEþÃk|`Ëý"Ó­ÿF;PËý"ÿf| hu÷‹ü«Ñ ˜ÕÝ/ò/ÆVfPœHôËúÏH+ý7>ˆå~‘¿IÖ›}ÉÁZúUà;Ô˜›¯Ü/¯?+Èw 1s\¹_ä?¨85C+÷‹ü‡ñTÿ€•ûEþ¦Vÿõv`•ûEþÍXŠ?Œá~‘5’âO¤îùã(þäü‡ûEþÙ(ªpÊý"ªÿúsÀ”ûEþO ¨u ”ûEØj~šH¹_ä?=£Ü/ò>å~‘äÔ„r¿È¿nª@M÷‹ük ¦²áÓt¿È¿fÊ£Q’ßg$¨¸_¤{8Ès»¸È*9˜´ÿ;cDáüZ¹xð'ÆŠ,³Ö•SÀ°{\¸}†Š¾’‹»<Ì#ÅœvÆ}þ#¾$;Ÿ§ÜÚ*3G{Ü/ÒöhÏåwj˜íº‡sø ø2δ°ƒ=BÓÿøþ®1D‡vÚ(Ä)€#¨¿ÏPŒâÈÁû/àêŽÁî=ç<›E-Çm<îóßú‘ÜŸQœÇ»øŒêÄX£6Ï»×’w(çy%ý×s$çŒúœùYz ý§NœÚ>oVܤ­×Š«Ïsæé‡eñÓòJÎBgÄ7¾·U4IK±ºÜÛYŸgî´™*5«Ë+žÚ{j×¹¨xZÐŽ0O¡Ûfi%éÒrÓ¥}f–6“‘\"Mr_Z©j¹æ´/íi¥ïQ·†ËU¡B?3*†Pz (–ˆciL~ t3uáM×Ý×[ÈEº¥›n×Çÿx•¶ãs]cESº­±;”Pnk~}<5dd¹†ðž¢ñã‘O«ç€Ææ¦ö ›Ú¨NâT|ÙrŒ»_¬žûP»þOíJ'3¾LÚZ’`0ѱñÈÚçÁ2®´ž*xiÿ¹®‘:,¥£iQ!Å•©}èºÆû$öiÔMm@×5L¨™P´di×À¢&>¹¾¡ZÑçܰT—@/XÊ‘ïRà Q©¢»é‰&Guu—*ô4ÖŒ(ÍzÒŸ’7àMÕŽ6gÏiXÙ[¢¡@w¦>u é>5î+zƒ¾’Ù#Öì§ç°]ü­O]£È¨ÎÛƒ8–DóºF %PÁ“^ê’h¶S×èµ*Ü“½ Ñ\§®'³*nK+Ítê¨p_õŽD¹®‘~ TLK=亢<7®½b©óø^+ ÁóÞ³_,uI4»©+Œ*¢76’ÁÓô¹ß$PáÞÐ=ºÄ’ê«ç—- ÷†nÏ%úT_=·ž*Ô»òa(Mrz¥4ðZìíÎ0;*(ëõoýÅŸ[yNHþóVg¶R!t%¡Í~òFg]‰bveHÇ*S’ÿ¼ÍY\µíDòŸ79;P_N$ÿy‹³­ì]ybŽT¶z'úÞ˜%Ut½EoCýë¶Õp)ûÂ-Í˲S7­€èé$ é©öÕ¿ùÏf­çí­_+c{Œî_zÕ{4»~+%BWÞ˜c¡Çó©ú[c–M¿4â ™\*eŠ™Wù‘që(hÈùš©¦˜™Np©j í Ôè¦<·ëögT*úiHw|€ú®¶o½†=8ÕzMÂüÏõ¨Óré®ñµøëQß•Bæ(ßT^;æi£ùP4~e•1V·z]”É<<ëå¿å=÷@ç·Þõ8ió·EE5}ÊÚ#´·2*Ø$Tn®o ™úƒr©^o­‹Ç•Æ¡|EÁÊÚ0 —H±–¦+ê>¬ja§mÑ·Õðgñ[Zª…­D [yº«©j%o›&ÕÔÑ#Kпá³ÔeôáºÒÏL¼?r5¨'êQQ«:s¿ƒä$*× f(O\–íÏ M™Ò´¨®çêSÒI¥fAu%‘à)·Ž79ãÏ]yäÈqÆV 2ÜWKW)±rCên~ÄsoK·R%t¥’ÉyyäVR„®ô1GªVŸ‰;‡ŸñR_ÉOTM…òÖg§[]QCòŸFn%F蕲ÝVÑ\¨wŽ­â6 ­ôðÓ$¨wŽÆqô(;RÙêªÜWBÂÊ ÙBYsŸ¼áÙ1ÓE+ §‡™žÄsº¯¶új—Ó@GòŸ3"Ø¢j̺XzLÏé¾BÀ ~×E?oÌi¿WÓŸüèRpѶ TùWf TtåòhžÛÅRþÜÊ@§Ùs»x 4,&wÏ–§‘{R·¯&¬Ãbé@*wŒ³ËB=èÅ](F=–vReècÉódWœFO)yúSžÌ”ײ´+ërvIäéÓ‚®×ÒþOúò5Œ  Ÿ–vz=r\œÑ-±>bíõ]¶lÄÑÆê!Ò¢tÆ.¶E]Ϲ#o­Ÿ&cUz åju¯1ØÁ8ÆJ9#cŠa.ݯ–+l¹üõ±&ý¬Í8C ƒa ¹²ÔN’N§.^ËÌøåuy€Ä}óÜ—ˆ¨ízPíâa‘ÔÝŠîlañý"×ôàPŠíHˆnžNº-å5þŒŠXü¸ sYÚõÄšr‘D÷Q¨t~!e¯Ñ*ÏÝ?GBðìyñœØzôéãñ˜¡ùu½Ã"HŸ‰Ç±Ê;6¢ScP^¶ª‡9¬»B£»²û9ÈØüÓMò¼ÑÃê ŒT·r¤œK?j÷ÏøIHõí­ñ?™H O¢C'qêW?Ä}üê”ÒW<…ä»[m¾c#Hu–rü­¶~FB ù騭ý3RÙêÄ÷ïHHTÊVç¼GB¢’z|Ÿ‘ý­ñÇîgÜþ ‰ÌÔkûw$D•ò×1ëÊëò ‘?ßë«2~FBB:ÿ“·ÝEß‘UÊóî÷iä;‚—~•j³ ‘'Ý5j×ÏHHHeÛuð;•²:`hƒ¢#Õ¿i³®QjC4úñg #·?"FN4‚týÇ0Æí˜ïØÒýŸ\gÌúíaHZì*6ë7ž÷層 “U›u³iŒ }.¦Ü6ëÊÍÂØˆ>ÞÿÉ[Ƭß%FD4ú´ý'—³®¼, ‹hDß~уN¥?î£[ÿ? 9ÒÖê7^8‘Dj/Í™ì·Oc¼C#1ãÑ]Å~uù ùühU‹Y¿‹™h£åáz°–ÉLÅNfßI Ó%7»þÿO¾u¿ëg|$ôþR¦ŽŒ‘‘û$i:WX(3‹e´ƒŒñÊp‰9ô„Ð3>,ª4Dns)È¿îz¤1ƒ"_y¡ÀHÈæðÈž[Qúý¶Ð<ýŒZŒ’x¥ÓÐNë¨æìièæTwÔjôcÆÈÎÁN=de]†GF„ðÁïªpÅ¿qío,J½g­MtW«B°)'\Ï|IÆ+÷ ?å[­ ŒT´ªåã´àŸóíq‰+m£ú:ün‹ÐÍ5ÌF+7C ÒऻÐÉÊîåšzϳꯇJ¿ßÛu…Ôƒ:#ÁÂÛ u¶\~ý“—Ö|]n.m_ ²Ê P¯ZîõRÞ¾‡:«¾Ý¦^Š7„ÑZ4 …ò׎uh·¨×ƒ­é”<(SÜR¢t¢ØL7e‹Ÿãó21§Å0ɯFÈ8ñɯ}5M£~E=mPÏ`ÉŸ‡R ý+TÀµÄ ÇíÑh¿m®M&‡cªÖSV&=øJHŠǼÇJŒTNŠ1–+Êↅ¿ÕŒ‘¼­ úí<Ê¢k×WC!7Ÿ ¸àèú7mÖo­x|åφLnPŒªhÜ)×”*1 ¢IŰêøP‹¡•MѳQϼ®=Ÿ»6~éÍz––ÿô¨ë7- X:­›$7X,ôh¨@Ì’èIg3eˆ‘@EEª.©bŠ;¤z¸ÙL‰a$PÑêß´}Wn Tt¤œjªX ÎÓ¶ÍUù8BOÄÙëÍ¥C‡÷ÑêÊ Óµ—s÷^ÎH¼¹G½ öHüøâ½6é ©›•¦7jæ>Ê l!¸S ~ÑÀ‹÷pÖßø¿·µn*è°GB ¥ƒ‘@EsËc‰¬HHñötGeém=YKlº+÷Ko.†¨z¥…‰Zð“N³‰$íÞ¹9*5-‹³¦+Ô[ÌTP¥žA˜uå‘à)˜§ ÇNWÒ—P±@·—Æè”÷%Ô,PÁ‡Õ‰Ú‚9ôôéüÕ­¢3|^òÖs3OÇhìîf>£ž*]Aþ¨S_.lå5„ôé'f-.Ú I#îãÖd=SP¹­2-}*» ´p¾®ÔÑÂÀM)%Ì£QyŽi Å¢ñú͹p0eôÑkh)Ý;3H:säzñlêLLÑl ¯æ™3øÜJTnék•d)4¹X`¬]š§b]9`º6ežÚ4 £a‘žDë²UºŠ‹ÏÓÌŒSÑUñ|[êùTšš‚rù9)Íq¡ŸÓb¤NY`ôôÑ#J‚P.iÊ!ƒžAK¿ÊÅë^¹aÐÑ<_»–.)ñënEm,å±ð£­\–,e½(³–¶¾o=4²¤ýs‘víÔŒéÒv¼ ±žHVÑfZ½1ª¢Ü¬§/@¿—Î$‰”eõÛÓ²;?§¢ÏÓçjªUå–÷‡èߎ:-GêÊÓµ­óZ>šô‹ÀG3XýŒ²x¥Ž¢ú•±êXm¤öò|Qý÷ŸžQGEŸ¥ß©vw^Hü€wu~À¢!6(é¥úï?=´ºÒÅXÍè;æqÆ#w@¿Rmñܵóv82Ä*7F¼.æØ)9Lï.ÔÎsKùÁÖÝ–,èÓÚmصsõ¬aõReQã+ª:]Øþ¨é#Ü‚ÕUèN®V¼=A¡óm«ç‘æ^¥Þ7Ïߌb©¤1<Cc’ø!Ç“KïøŽ 7‹$š¼f3%Œ‘@…_&ŸȃªùFC6–ø)wû¨×zw!¾¬)G4ìtYË]ébº÷wV%O§fUŒN¤û?=âl¡ß‰*˜EªùáâÌôü”@³O5š£geïšýmå•RêîÐP~˜»:k–¸P¬YP¨`­æ‰sw¨Nia$PÁT`Íçãé çr· k¾4W\øˆ™’ÃH Âœ¨¥šn T0ÁæO«öƲã…ÓE°¨àz5o——6 ­ B_iÖ8?PpN“Š÷ÈÐDár‡™ÂH Â"-/ÐüdTB ‚¾âA¤Åz‡­úÊ»cX*{jTÐWš?^¦í{ã-eÖÇi*5ÏÞ“núªìƒnI*IŸWc+ìi]«顊mã®=›»sªöîÚÐêë Ç±Ú ̺tzy—I\TD*Êß‹%±ãF¤¢Z~'–Ô ˆîFìJ‘ 5à9/š¹B"1k†„‘˜B#ão¤Òœ€$º[r'‚c&‚lD*xqtW¬ ‘€••À‘HÑ;…•öÁ•—ÄD¡›»7~öq4R“_Ô ž·ÄËúPJ Fw#-©âNS ¾Õ—+ÚQ$WÁ´Q!†5ïC j“¡šC4ršS'NÎ~þÌìHEÎNÑ ÈènÄ´®d—˜ÑiÄó©;(™3®$•ÛŒÑ;C-Æl~h7‹¬D ÔÇ(^°Jh’ø­Œ"¥uÈÃ˸Tañ‹]òîº~˜ÑiµíóÒ°U°Io&‘žt¢Uyf®¤˜ j€‹¶}E–v,ÒC:ÙD¯ñ¹‹ôá?—yÜ éJ¨+ÈkxÑfÎSKk­®¡çþᚩպSËr+A*gø@S‰­>ä¡£¢ºÂ¬ýS±¶i°P 1¢Ðx£ä2ÈŠƒjÆÇò‡–¬¢ŸáÂÔþͧöð‡^í Ÿ0@bJ#W"GÒˆXBJãŸðÁÄï.ØGˆÀ ×® ÿ§ÑÁT¡˜ûðŸj¹áa˜4ʇ®41Ô*\.x¡k6ÃòŠ6‹/®Ä µY €µ<Të6ûÜÐõÓC@È!ŒàºÐ`>ú‹‰!ÍŸ¢Ê&VÃØ1Ü’šø—› Ly˜ªÏøÎŽ-h3ç§°[m|(‰7"îDMøhˆTÜ–·„“;8b¸ßd¬vvm  âàN†YâàÆ0Œ I'#ïm$WŒàŠáå æ‰6“E¸~v'B‘X1lžô•´²,Ä»¢—dŽ+ÐbÐÈË&‡:JÀÅ O ²¨I% ‘ w¢ÙâN.éˆTø&ä5`(iÁÃJîd½Mï>’a»ÿL¯ü€GÆK#ƒÃÅ—4‰ƒÂrŽ{òG(éúMÃÇ/I”$÷ù¡&Ü¡>L-ãÁ ‘ ÷OF8‚?:"ý„4Z´à‡a¥yÌä“ü0¬äþÉG ÇB¤Â÷—!c'ŸX¤bä+ Ò`ERÈ_ˆ.nô÷¨!Ó1 -ƒ&7"î¿ wz4D*þ‰~ztD*|ÿLŠüÐ3âì3§¶‡f3:¨bœP¬0\Ì p¸%·¿Â e~ðzÍ`SÉ ’`|¬×<¬hb‘Šb>`rÌ«yD½†Îšì1j0ÅðÞ/?0¢Gùâþ@DVgpðh3dŒTjÁÀë)D gìcRøï† ÄJÝÍ©»Ÿ}hýƒ5ƒ4šqd}qmÆCú 0gøÆ?±HciɼDR²ÇµKˆ–1­UƒDfðÅGÔ4!´Ù£8¤áZÅ"ü5\çû("#Æ>Œ Z'K¬\ÿ…h^<œåòB´wˆé„ ‡Ñ™fŽý Š@SYZBÈ© u"B2,7d,ÉûŸÌ,_>`‘Ƴ†[¢‡¦›/´ÑÔ¶C®Ýæ‹jôHàÐŒgmÑ·.æŠ.M]Z¡¡ ý¹ GTé#wiÆHÒ r%8¼a:LÄžÜæ,Ú¾?êÓhчq¢¢(Âѧët™/„ÒèP³ÕND$²ìÛð´ñrŸÆ 4¯—þ xpóÚ‡YP÷nAJÈGD?Tw9ÆQF@ ¦QOÓ‡ŸÔJ>M"áùgˆ8ôÂöÓuDKaŽ‹ûknv˜ìBñA”ƒ)çIÈÏxÖW~‡8™%ò¬º ÷§Áœ˜É3dû ÿ©Ž5x'>¸BŸ ÷ë6ãÆ‘›ž”’Á£gd#p¤ RawF$1]”‹ OËãÒÓÌq”&Ûµ!²Ò4xpÔ’9†MÛ'æa¦ˆUGA=Id RAÿi‘Žƒ$z†;‚YÂ`f cSxí‘q"HcNLËÝ'Ò$Òè)™9‚$®$‘‚Hý7Í•Š‹bf™ÁZfT“ õ’ˆQÝH³’Áb$8>byHÏ6=Á¤'˜€,\š^0$ñÒËD¤Â>M†>†•"îÄ ~‰Ð?(¹3üaéô”Ì= A"‘ ¿+L%IDÝé"äw’J œ¹o ƒ‰4D*‚)z@FàŠE*^¦˜.zÆ?þa’žJ+êŸÝX_Ò˜V7Ǹ}úb½1‘PŠ-äæ )IÝ-¹³ÖôáæTø] _hRŸ‰+lh?øå‰sÄ‚¦éŠšÌQƒ9¼¤éƤÒ©pÿ$Ž©Ð&ö¾?G‚T&"îáÄ4“Ìdš‘òi¡àªW HNÀHcšTŽ|&IÒ@Ó¨81ÝÌR©ðý—8Ls#Ráþ þHæ¨ÙHÈ[*ÝI^ÜМJ«Ø´¼‡¼aÔ‰ÿ2Gˆh‰âe–1Óöþ}'Žl—®þ3³LW쀌þ‚É‘=Bû'±¼¦R1s˜Núaš!ÑH ܘ¡éFîÄ•–8£>1³¤Œì)X_(ަ#¸(Þ·n¬‘üQ6ÖמÚµÂ}1«ªOSIÿòIì¡Ð“E¦#!AK»n©VÔ13þÑ ,+ c8¦q[½ûX@‘áŽj~Rô…£IOÍpG¦ÑdR^füEþXv <[ë+êQÛÙÈ/é µ ±MfhÅûËðÁüŸ˜Ñfô¬ ªq”ª‡›¦E'ªZ ‡6fÀ‡ö´+ WÄ?¢'±ÂrÀc;Ò15 Ìÿoy}áC$À²öÎjDÇV<Ì`MæÌ ŽF†^s°F°ëæ˜zÛÌÁ‚Cs‡VŠvMõ;ð¡“SÒ>â ÇÒ–ˆë Ö P¢ãB÷¨7ƒ5ˆ¡@F¶^ÒܸÆ7§ÿB.GÒðá92Žp˜&$’#¹äã‚#i¢E­aÉ¥ Vç;ý-h‚£ÉÔBaŒ·{&‚W˜&´ê7bZ8ò@ŽN¬C¿±¢]ÿ‰ptAêú¡]ÝJÝ ˆÚ¾ô#d0Âändº¹€Ë“; ÀƒG:?ºeš LQC‚0ŠÃ¬5MkIJú¡àb®0wð㜼Jͱ cÆrÝÐÑ?1Ì*´IñÈA’€‡eûiùúb ð -¦»·‰6-,×®ƒBYFÉÐ8¬„±Œ5×iÓ„¢£R L¡€‡å0Æ'àmzOiËçQ2K€ë`HÏÚ@±Üð?qà‘Šñ‘ –q'&a°ÐêDcÈHÂ0|4®ŸFü;LÂø(ˆžÂ²¨0wÔŒj\S #E¶wÁ¢†À€ «Ç>ÒI(†¸œo±—tÔ¶€‡å¢%\ŒäŠ@Ž™J!Ÿ‰$#¸œo±¯ôH®äàªiÄ]—\aä!,7â®K®äàªÕˆá#hã„9lï¢|ä%¹ãF¤¢Z~ÿ"IC¤Â/7ÑÀríð„|4ÚÖ.FÖÎ<dx1e¹˜ (-3à`}/@ät[ÿš3D*JÂÅH¸€Èé¶<¨Ã>ppX$ä+@#áà8ˆ½§å¢%!¼ð± ŒŒeô_8XBxÛ|áb¤Ò´\=å€Ç0¬ƒÖDnçV @’¶•˜q0„ó3wì@‚õ }X^¢‘c˜$øÂÃÈ@#Èýû4<´ä‹Tu ó`Bew»ÅfÕ˦Ö'þq¨Ä¨ 2¹­&¼ ¬ßÐÇ u·¿)ËxÀ7!‘±ŽhNrïx•pPÉ58Èî¶Ø£àŽfì˜5a{õë8rOfÀ#€¤!RÁH¦¶Èpq0DC£dj[3<´Äê*[“Z4ݵ+5ôýJDâ¶éÐG5?- !ßÚyÞh¡<2¸7¥ÿF7è%¢ˆIã©aNÏ™2ŠE¶Q{3EÇj9öÑ‚"´ö4q€ ¯¨x€Åoû€S°ëK+`cdˆÃïà°RûˆeØc1^G^·•¨Öðˆï{CGÅa }¥0Z<=‹j…ÒðŸGS‰lºåØ÷ùen óÆýmI›./ó³®dÛ(–—˜cF 2_òp]àÍm òÐ&3GÉH!òPJÿC&ƒmt4Í3ÃµÚ ÇÅ€F$RÐ}*ž>;ì° OWlmÞlüØÙÔˆ‚ÝØ¥H¯âÉnFËE7ˆèâñŽH¢­A{ ¢E¯KëWŸ?çDj2 “®X^«w·E7<žó¼ñt¯VE˜<äO‹FpÅÚÄÞä1„:¤®ûy@„ÂeÍcì;í¿aüpC÷€V¥kC6 äNOµB>-‡1„¸0y$ªt~w¢ûM>Óðß8êe‘Pb›A` iè¨_†ÙùÛ3Ï$íÕmÙ8<ÏPÇõ‡G^|q&š¾=˪~Ã~ 5Èì¶@^| Ô˜â™iòJ ‘Šù‹A)ØS¼(ò¢FØSlO0VŠƒ0¬yÈBJýņ¨UK24jЏ%x²`/ïmž €¸£‘m›¦#û+†Ì0ÃЉ>>¨ ÿF<@&"Y¡²©p' ¶kНLþ «™ÁÈbE^vØQ›¼²"ºêe(ÙF•}ì?xb;ðœÁŽC!5xb»‘ˆxÔ@=ì)ÚGÞ*à‰íF܉♈T¸3Ä(²©°¿“!Ž@‘H…ïÄ qEôçv#îÄ qŠÐjÄPr¢‰"‘ ßd⹩¨ÿBÅö/”ªèªOB-5©ë auP$ C×oùLÞðŒà {¬ù 9¼¡ˆýð DŽm?“L€Ží8ÿ|QÄ<Â¥óq;¡Å(ã‚KׇjØ¥d[tð# ¤$´ÊÔP?ö–ž!Œƒ7ÛšwBË %aŠÎÉj:ªV¹õmÍžä2mäÇ>d³¾x³­ÉEÎÈc¼¦h®$äX"ÛJA6%ñF—– ò¨8¼d¢‹tXdÛª$~Ô$—öö^éis(éÊg2™æ•fù4”X´e^èP;qž–À@dû“F’Kˆf@Çöûqhƒ¨1?xx·Ci~ D=i²2”:.y$Z ù€I9ê%¡d&,-äÛS¹‚Rú‹2ˆT„}2 MìQj¹œ›*‹œD†’B9O Î'm=ÛÐ3“g  õ¿çf!+]!I.'2‚÷Gþ+½ñ¯.'‡ô6„”Ã/„5¨…JÌ/r,@C"DäN|DrÌ›E#HVˆã#¯ôöƒÃgÒR>2bìƒ&=0ƒqA25h åü¢Ë¶ºÜÚÖ?À1|lêØŽ’B¼$Áɼ”CiLwðÉiòC ¡ô4BP‚¬— ¨$Š1Œjî˜z’Iÿ^ì\¹\ðçE€C´ÑÙóÔB ÚCS„Ñ\hUD…v c»ö®­Ž§¦CÌî=.µIf#ì¡ùÔ{ê½>·A Šä8¶¡HN#ƒ6¼°èöt¨Ë4q 8*AÝ÷µ••‰SÊ—á9O¾éM3h¿ÿ(‘˜¡Ìf(Õæ .`é·CQ¬„äʳUÀ?Y¼º»Xcd.åÃò`ðá'ia[¾É«r…Ò_Kù²HÜð§ìS;”w0 ˆà iþ9 ¹Ù`.#€Â Ø5Âã ‘5ÇåætÍj.@ó)ªã$í·¥n\…ß‰Ë 0©ð˜LÒB€ÄD¤BÿqÙ ¬7 ˧• oÃÈ-Œ «DµT«O2\f®j¬´ÙDÑ™; Ð×'ıM·¹@"å ’6$RQÿ^8H!—•9þáŽH…;1i!@b"RÑ‘ h{>d$Rhèî²Ò<òS±Œ •åˆë ôթ=ȰIK§üׇ+>ÜA*;>î„@î/|è!2È{wy&Öú€B5 ç¾ó$«7p Ñ©p'&-H D*܉I ‘ ±&-H,D*܉I \bo.iÁ ѹ4>㤅 .qÿ%-Hpiú#Çú€J7"å *"5‘@òqÙ´!ìçxAcX çÿ9rÿ%¬C%ØÑWŽËVÝ.ÿðÒÃpôHàíK¤Âýcþ: 0¸4ìÝ?ÇÑ—E/W|å ã:š ¶k«Evùƒ ?Û×o0CÞþ#ˆ8ÆáŠ…ŽH…·æ³û?’h{ËELb&Ht{û’«ðMfo-ÈÛ—HÅôIÚýÿF4¢‘y\þ¡ yGs8'¢c_R(·Çu‚wøø‰©(yy}D*ÜɦME¸ü¡òÛò¬Ð¥[î'™²q\ŸÚ–~¿ŸT&ƒ  ¡ë7-¼Þ~€6ó#Ÿ¯H…·¥Ã1=~ÿÑ\I Ƈ`ˆcã™RIª°·?® ¬ŒY#„ü)êo#¡!Rá­hK1¨âÑØ¬>$Ü“’iyÐ‚Æ p»ìÛ” Lr5aGú ƒZý¹È9¶Ž§oPªéq'4‰ƒ7¯Íƒ˜ªÔ,JŽàzå¿GÌb¦R1èzŽOiXаàQÄ}§ÏO$ÀØá6}Hô1wøüãr3¯4=x1éwyæÔ°æP"¿ v0ƒÜýÒíø×—–w‘p ³^cxÌÿ@B8þ97ýujµ¹¸Eæ|sã€%–»Ö$@FŒýÃ÷/X gž=îUÑÙ ßZ7µÞM$¢n\Ð~ÔÊ?o¤ÑòÚõÅìlªï‚Zy“\r¦†‰4°À,ÐÉ+œPÜ[• ƒ¾mݹnÖSxÊ“6Õ;êWQ_s˜*Ø@˜G8Á뼄¢ìà<þÉô%‹:ÅØ gÿbŽ‹Îñ/ N ˆcg±&›à5­ÙèsðÓQÚD/,ÏlÂçåÀˆðÕ¦xüÃ`Pj¡ÿøù¢‡Âïɉ°B´N¬`³34mnï©§4ÃvçK†Fj.>ß….þ>t ¿­d˜8Þ´´‰€ÄHf¸íçK¤"¯w?Ò¥aù2M‹TÌ|ØÝ—;H…&< xYDa:8``„(VZáØÿç¿Â±Ýù #МçËJDZ¯áØ—»&.”ðé‹åKŸÿà@C¤¢ý'¾¸h&è, +ÔGD käÞ+˜ohá8öTàÝcoûâ¹OÉØÛ§/–ï lùýHèÍt]qùCVªÓ’û×̰èZrÿ‚‡¦û•;¸P HX†äT¸‘šaÓƒ}fõŸÀ¡ûƒî_3EMÇÿÇ¿öïKT¤ãŸ`aÑu˜á€‘È¿/Í‹žòâŠñõù·mæ¯Ï8h¹Ãû0ƒÝ}eþ“’Ûß§ãÂ>13dáBE¤¢8ª»“‚.Ž=ãPÉ 8þC‰ͯϿStŽxþlP²=>?9-·“_²6Úœ'Ì`Ñ5¿8àL¿NW⟺¬yÖ9µX%¨N¯ãQâ8ÿËŽÿ!¿Näé+%êhš#L]@8à„ÜÇÉ -#äÍJ Jãò§†§b9¸0Œƒ¿ˆ@Þþ(þ3À Ûý'B€çœˆàÂqÿ™|Ô>Ï(÷(Ž+4kʆù%È×ùò\&Í:x ^cg\·Ý{ü~oµ¿µŒà3ùàýE4€w–c ó¸÷Cù¹íùwÞ4àAcùàð`¥œkÂѯöö»iiißo3Beõóqïk0@õ² Dú}[T<ý.è-:(qÔ>  9H£‡Ò²¨“ÎÊ @¬€‚¶´±ÅÔî¦í®§éE¤:‚€û¿æ,ºšs‘’^YØdu›2”UN BçpÁÜ%rÍ‘RŽÌq¦œšš­«Ð±|)oäùÓ]!6(¤šŽõîŽ&h/'ÝÚÀ{i3R°€Ú¢^o¨³­à„ÉJˆâß)+®•Ø`¹a@¿ùRñþ-‘ƒË?Q›îo#áì7öy¾.Ã@Q6ÈQmß“ÌüXަ` P@I=Vƒ°@ƒ{Zý9 A£Ì²WÅ#ZŸhÂ( úº5õ ®—)!Ù¹žXÕÉá/›š'®Óˆ €gs-¿¨Qºzx½š"LÕªwª_ˆ;ÙCÓÏnDKvˆTt¿`J¸ýM8Pð€×¾ GóWf@5O|ÂÑp…7,/V:¼Ôxàü¥ªyâ°Eð(P±¿=™‘ƒ ‘ ÷¤Q¢&E4D*þáj¨¸³}ä=”Š~%ýX÷_ÿ¥€ÀD3E2P­Áõ¶¿á ÀLüàúÕ‰ðDP@F @µ½;Ñ(±“"¸~5Ò܉¦€+)¢"RáN4”¤ˆ‘ w¢) &E4D*܉òò«kï„‚ûð†E%"É쯙zRÄD¤Âc˜¦€‘±©pÿ%fR—N#î?£Ä:ѹtqÿ%vR—®FºûÏA+)¢"Ráþ3@¨×,* _y ¨þSÝÕýsÎC®>šþ9Ÿð@R¢äëðĨ.zøûN q‚/J,D*Ü? ˜áêW+¹% .]JÇß/éê_Ç% Òß?š©¨É Wò‚òñI”<þ¾[ªVG©%/€ÀËG¤"vLæ„z:ý/^xÌÔñD¨“û[yJG} ¦€Ä ‰T¬|F4¨.,Ï@C T§¿F !yÀ(¡?«å¾‰>€g\©¨N…nýøû‡,ü%ÌJáïà ê$ûûxùõ¸úªÍ–×`ƒ ô`€z ó—"&"“×Åqõ_²¨îk.ž¤æSDȃ̤ ¤p agÃÁ ¯çê«$/\‡ðü%Rá;Ñ\ó'¦æ`à ¢Uh4tn cHÁñ1”¾Šz{uµPR ƒ–R©VuNZˆ-PAdYIÅLác!‚¾ev XëjÔÎRR4ÍGŽh]々ýäû‚)`‚›©{¹ÖàPÌ GBá­8Ë,*Ó˜¶6"wIG!Â~‹B=\ߊ—ž&4yÈLQ²V)Í J“9ÈñW¼A•—äm0°’#% @ô0”eÍC%éâ6B\8Þ÷?á·tûèÖoR¥£Òqà@ÉðC€‡2SY©&X”¸ó( *ôhé¶ü6iô/=Üf‚ñhPƒtF€ˆ€’ó¿¾A1ÜVÚöÙ¯/}ðN»Qú7$Q©ð›Ð$P’$*"îÄ :I܈T8ÅÞòqàDàê-™\¸O ‚Fdø‘7Ë?LàŒ¯§¢@·åóod(a†$p[Éý—ñ†€º%÷_Æ ®‘’q¡d¼! ¢ RáþËxC@DE¤Â×—ñ†€ˆ‘Šp HÃ"íï %œ€´Wøðæà^æˆTxd2ã ‘ 3©\ÿÛÅÌÈÂLܸ‡$7è÷_Æ ®‘ܸP2ÞQ©pÿtÕy¨ÿ+/)¿nãB„^ÜhˆT¸ÿ2ÞÑ©xÃõÄn¼rÐàî¯&öOÑÜþö%™\¸%I" ƒ®¡MߟI† ‡¶wÿ¾a’ 'ÔȿᇀŒŠHÅ‹Õ$P޽ ?ä$ºÍõ%ĉjùÌp›"<1“ލ¦\¸ßÃ< …Û6]‘ÿGÐ!qb¤ü6ZÌ\p#Ëî8¼ßÈC¶r]p*¹‘  Úôf¸?á­/v…13nÜ¡tG â~íï`†Û1ˆÛÇ2Šå·9¢ÆèNI¦¨.FöŒ1¼`)(?ÆSð:©DŒCóÅä*»¬Äü‡‚I¶ùàÈiNé2žÂ·#JÖÔ¥'‡„üN&É@„Áá†LA€Å(Ô++½_Ü8rÓƒ!')‡¨gsînUÜ &(O]UÏ[Z_æ¨ìoëZ %Á·å;õ3Ãáx°ª¬,z¨¸8Îìç@ø£8î YëìzÄ Ç%îËJKK"gR¼Pm³äÎöOšNš÷Všk¿´ÏòÇÔj“@È€ÿ4ØÝ?µàî®gÁ „¬ 9 ù¿Š!üÈåX’D¡8Ð@4Á{e|˜ÛGûˆ¦Ö&MÍAœZÀtby²‘V/«V{-ÌáZí[=õ,˜ÚœZJ (¬ÿ‰ÜyV°±­fÃhÝ‘…*ƒºÌ š¤TÕ¤ æ1!J3¼¦¢;Sþ¬ÀÖœŒ©)KãªK3²A0L¡x@dPÌòÝ–2#,ùKÏŸÃQ£”Ðfª«s.ï±DZ à‰A@Mÿ)1Cij¦Ñd‹Tý—€ÐC´XKìŠ`ƒ‹Z1¿¨2!iSa·½OìÍ#â¶ï¯Ÿs™ ‹=M;‚ ··+¸Bó9"õ…<~‚¯? ëëê·€>?£ ÑÒ¿±USÑN-:ß¾fÐæbP·^i+†²\`“¨À;ÅDQÃÁWÿðD[îIS@O%DÍr!>0S³YŽû/ÿPÂp¾<€Ž*o¿šl 3ÃÀIÁÙ¸¥Ö¿ðý!‚áÌxò5íu\ý}±s?"xh;¾Úí¿muxaãçy:R¹æÈ,Í‘Y˃ÖáöË»l-DÓCÝo­ž¤FNµBVm=ä–ž)ǵí+Dúé/ p@Ì*šQ+ö^u8±Û”ó<å7»Ð¼þio{j]±*´ˆh.×j“å©í˜çpQ¼Æï^…j› ¹çJ¡LSðSIƒp¨rô«b òüµ÷圸áSš©Žœ¬aQBl_uY$:Á›¯^o-^Ô’›µä†­âõÇ7û¤Êe—˶nB…o†$ $Ÿ–7©Z}s °—Ýÿ!ç=4‰\vùKÐÀ$ 7~^Ü áãlNl%0ÑÿºUtƒ°„Ípþ¯×ïß=¸  aco¹Ù¥5·Ö¹ åÄ{½}¼qŽ(ÜøøxûC4:›#ïPߎræHpÀŒ¡ —¿ž=SõYòæGgúàÆÃ_ú.Uq~=.¿ÕG)ù ˆcO±Óïoþ.½YBE·ü¶__“*"ž’ê¶îo!ì)ü"Ôúg§8pp×È4t…‡¯Õ(£»‘›¿×¥5[8÷¡Þ "¸`"RaoBµÝµã¸ù‚è¶G~!0Â÷ÄÍUĈeûH ²6 „_ï·á]³öøõ6ü6دǥWþ‰áTÛÇ›o‰ ‘ ûµ÷Q èˆTxt6ÃA‘Šþë×2`OñrAЗ¾»Þ†Ý3¼ù;£ípà ¥;øõN¹m¾GE:÷%¹¡§Á|}§ÝÆ¥¯ý¸³Ír¸àGÞïwj »ô=*’ Ɖ.ØïÇ›ï¦Ã N¿è(­ðæ»ÛŒèÁNÑG¾Û~o>‘ŠåÏŸá¾-`O±Í%Ç*¼ùÞ|§%#A§Â P3:È0?.}¥iÛ'~¿ g†ðö{Ô¦æzåc‡dÀùWâ»>> Ð±²_’êæÅE\‘\À<šfP@DQ‚Ú†³@o‚ºÃðp0Ây¼¼¥|!8Owzû)Ò>\‰mLhɰ@s°ç¼.J@Èw´é<ÝÌÀïWö ‰Œ #0ÁÜ ÍþÑÄ/O°fGi] À’P¨Öq¸ §èÅŒãüs§%7D- †¸ÿ´Ú^õæ:çÙvíL.Ã]ªì:\ð\é¸\û,>r9k7Hᔞã¨õ$Ymß?0sÌòþ˜)³´ÑßÒ& i= ð\\sÔ.ȉõT"h {åæ¿hü_/ÕªÀ@±´%J_¢x)áRÏM-ßyþT÷OíP„S+ûÍéÂ+ º3çpÁ¢Ýà³¹Ðj‚§hìE:åxMùiJ®,}m{CÕ\ r­¦¶ØŸ³:ë›hA[ÏÌí#-€Æ¡Zt¹’¥éK_Ã*xýî|¹–K^çÒàïÒïªÕýSï×@9šÍÿ¸ïG¤XЇÿY1€hÈ¡×~…kÚ¿×—pyeò…=®¿†üåßORjyð{ÑÅàq  ˜ –Ö¤‡&0ÆoBç_Dºþ¿ÿ’6üE- ?Á¾3Ê_¬9tUª–÷ÁvƸøìn¼¦}Øà˜×„²üs>ؾÿÚÆ†•`ß"Z2@(D2<}Êl ”G}8\àÿRþ£Ì¬ðøö>²½á +ü|­ûâ«Ä4´†Dx‰B»O¥’VÜpì-rK|È z¸øÃJ·Ûoáâ+—-,ï©Ô¿nûpÂËÑ’ y¦?¿ò~±"”fÂBÂ-Y}xD„‰`ÐÈÍsñ™û ØãwFºãç×ä„‘ {¼ލáì>ÄD£þ-9¡#RáoâÉ-œýáqOÚ }ÃA ¦T9û#a%5Rq°¶ÎòÀ†¾ÿŠ8n û Qÿ„dpäåEã"Ã-Ư8”1ø$f¥¾ÿ@Þ<¾–á}ȧ¹Á‡œ˜Ã&ÂíVòøZßÀAPÆ@®Â/ÛŒćLD* h¬áû’oÜŒ6p}|ˆïIcÃ>ØÐ¹H>Ä?ìtö‡MWØt‡Z²Ã°ÇÛ«‹„-1Ô¤Œ‘ ßÎÖ-Ÿp@3aªÂ0Lôð軕0¤¥ö÷ŠˆN­ÝþÎü°AÏHÀ|›óI@H/¿­dƒ !·–cÃÊH^0éÛñãÑ—4UñaƒM+"å×·•—'>òúñò&wÚpJjòÁì£lP2`§?!ˆæÆ·¥qa…ƒò†Î¬=FÝmî´¥l`ž˜NµÉã." A hŽ— ìû+‡„j±ñ˜üD0ÜêñíTÛŽûpLáõý«å3D2¨—Ù¢¿1IYÝn}usvð›cÇû·éQ¢aäÃt1¾Î<¾ÿðÌ£Ç)Ÿ"èöøÇo$ ‡[ï–, e–°¨¥ƒ?‚°v#w@(]¡äôÚÇÏ¿SS;KBÉB±bMa DÚ Jc±B-Ÿ–ðí­4ˆ.àƒ¾nÿp¾l6cçem‹»›kª–ÙaYnW_;Š,ÍSÙƒÖCIçŠüÔZ¾ø/${^¼N”à%ç8zEK{¯ÉšË—¡€š¢B`€çÛÒ³fé©SóYzþI„Ðp‡¼±u©B÷p iÉ5émiµÌÒj˜çO{éfAcó:Ò®½0‚ö]hœ’€M`«W÷Sá0ÑÁãɉДc|Êœvɧ¼·)gm*­Àœ±íd¹&uMö’Òš‘éj—¼³U,WØÃ íh”vU@îý]¼o“b9Íž¿ºFÓø»=ûa/ŸZí]*G~\ÝP€% ÷^ßÊ圦ÝÂ6’íM¯YìL%§~Ù½—&“ŶSÊi‡'ØpWJE( ¸v ö6ÝýƒbãAyyá¹å@\f¹áÉë?“ƒkµz§z ?˜àÄ ÇÇÝG~Ž C³›ìßO¨T& “B@‚Dª»uN,»ã ÇfDK ÀLé¶ßæ°ÏS0AO&{Îi ô7âø%…À Îi:JpÜ}Kæ—)äç^nƒõA«GDni8q‡ Þÿt#o!˜áF¤¢$LãF§6l‚.ÂÝï¡„}hÞ3å-Ü}9þ•œé†™êØ?LÐC>˜Å8”bL#ȰÈ`€MÐAÏPÃHÎP^ºcãí%4¡ÿi%b&À8þÚøy8_öñùk2¨+1]ôƒ`†‘Šbw¯rГ‚.Ôun䛈7„\½v·`‚ésú'žðʇÿ4‡ÝûƒF¶˜þÌaw±…î¾ÃOa:9$ð1ÅñŸþwb "A'wâÀ>ÿä“<™é'.܈T”¿×Óo‰ ‘ wbâ@BG¤Âx‰A ‘Šö72@0“&"þ‚"vW"v8=2ã xúÓ-­”GÅR0]t®Ïýg×þCˆžâÄ+ZàBh–ÀãÿOôIÔ°qÊ<‹†c=À Û¦þ‹=›»-?LÑSÔ¸Ò™J¸ƒ0K('Lc%öŸ˜nujt×6BXs:h1\Q˜ŒaD0XÌÓˆ£3Hà;ÕPCp ¶wÅNÍ’œá;Éà ë§UÓ‰9ä#¿S^™`8 QGDsîiCDMΜýa­¢Tí‹ ùüâ@h†c­ëûÈ—#Ègˆ"X¼p8¡èAyçÆW2²tq»w2Gp‚5>û„À ]º5_ùLÓa:x9C¾XQ 'Hôw‚0Ã?Vp‚ŒÇôZìnzX/s Rá/É`ðjÎàɧ!ÀjÄšÓ2  N(aðâã“T§Ú¥ÖV¸S^ú˜3"= @)"Ž&rÞóÓRÍ ‹næÐ•˜Nä,êøÅ…T‚.ºéA[5Öì1Ü^u¸µ‰HѰÍáˆêpHĈ ÈÁ»K(]·—~jÝÙœÙJp8äà±1&.ÝØË÷$äÐ@†Áõ^zMû²èñ‹¡ 1Å08hZ’Chà–uÍ(ÒĺuwP„áŽÅÊK^» ¹îËs‹t¬ïe$#hEу¢(AÑR⮦J,6§ Tl™ +kµÃÎÒ;KsÅ–°?.¿N©€ Úµ‰d€…<·œÿ¦¡þæÉ<Äo˜Í¥­–öBz /×·­o¥‡ øFÈw7ìÈãÒKî½êÑ¥­t—]°ºÖµÓ><޾üv‚K>¼¯Ö‚œÍÏÝÉL"h@Ó6 ÷½Nÿ˜$G_w*MËgÌ ¹µçñûËý2ÃÇ×ÚfjgøólÄVJ“¤$«ÛÇ!H ù‹ÕÊ/Z °˜Iu*Ž£ @„Sþ¼kµëÇ÷?mÕ¾Žþrû41h{_ ˜†’wõWÞX Ó‹S/þe„Ógâ§¼•‚ìÙ/Ÿ½Gž2Z`šÐÑòéÚH§þ@"ì÷ž½ÎZ§:{óLœæ;›cdAþþÕ4ìöño‹ŽçßÃå_Ø4ÒŸÿà9%Ö cÌ…žýò‰ñ€YnuQq||kŽ”/óÂ{;úÕOÙÏ—šÙÒHoÿòEîP G¿:¸ðµ·SqÜ_.bÛý>Œ€g¯Ý Æò‚‰iTˆÂѬÈUð!ã-ˆFpïµúk¬xiß¡é6ññ—[rOšf’ÁD¤"Â;Éa„{O$yE„"£A\'>rIrXáÞ/Ÿ„ïÉŒp꜄‡”íÙ×$N“دg'pê: 3Fxö-É÷W'aÆϾ'tD*Üƃ‘d0©pÿÙ‡ŸI‘Šöëã‡ç='Cî'd0ݧÎI {¶œ+­ŽôñMïð %ìQZGÞBi¹iœ^©Fè᯿´°øÌ—èa °?â²Rõùé\m?©MMúg  ð/Õö-Üûpä +kÇ ÈßY>'¤\Iô¢éF,áíÛÇ®á¹‡Ò ùŠàEºïÖtsºÓÌ!¿ìÞeÆh–ϨûöuéµEâPB¹ðÜŸZW$(ÌtÚïP:Ü`]Ýå¦ç·%¼ùePY†ŠþãÒ[Þ=ø}%P;ÂÛÖ™³£ZìHsSo¿3® 9ÙC)$ŽÒ²Òp­iàëÒÓg¼G–Mw€À°ËN7HÐ쾟ڂ’A¡FíòÑýzóF˜®Å=ïÖ‹„qeóN›wøðáÍÏTo‡pß‹wZç=9YtÌYþzáNÍŽüâµìÙOØKÉÞþoŸ]…î¿lé8÷vô‹üñžN;½²­>œ/ÛŽ~xþ—Õ‹Æ„echÑȲ\74²ÒÑ/ŠªB¯ËÈ`÷^J‚§ûóôs˜a[}{÷ó#(ÜÕò­-w9 ȼqé™l¤a¦¢µk<À75-°€¼~!EžùÒ=hàÙI†õàZzN-=ýJaÏ~Ï7Rðn)·4®°<Åp³s‘ÀBkÉ—ÖÀ,Í3ZÞNk*ÝT^ŠçžÖN¢K‘œë©I8SCíS®ë”/ût<ãé—†åå‘_3—×®ÞOáAI«$·ÜøûòB 9ú·ÆÐÛ…ßêèöûuæN=ìÈ‹©´ÌÀÛÃ’ÂzƒslGªS_dá&•¶²ð-%ðÖ*äÕ9–¯/7qÊܱœ1oáÕ{\¾‡Õ¢vÙ׿íÒ+~´`„(ÈÍn¨{Xÿ¬1ö_YêËÝ¥ûp±˜;fiMËÐ^EUÛôíÂ=GîëÀ[B޾Ö+Kóo'¾þä¾’ ¦E‘ ï€31½ßèî¿A¡Û•·’Z²{?‡Ú±ïöñû?T7~C‘ â Œ)ãÏÏCÇÍ哨©9éèL«§¨àêÉߟè*>P€§~ù‚eöÈíJÔž®~ ~[ÉýŒ 4D*`(Ƽ·í{÷C3®tú_hhiHô_þþÑ쟘À´i1ñäÀŽn$ð:¬A2ýø°Žý ù¼Ãó%9õÛ…ðâkò@A¤Âh/þN¨ˆT¸íÅ·¤€‘ wâ=’j¸òÛJöW퍀ŽH?|÷í¢çpÿL^Ø6íÇŸ·«®þ±¿ï¾‚FÊ÷Ç`§S¥¿^|9 I!ü²ˆc;ð%úšöˆ¶øöáÙÛJùNhpÿzÚ·ÐtÆiûî;Q üýW¾mÚ‚ fzöÎ8ýñâ‘GsÈÝ?ª%KÄÌpÀ²æÈ1ýe ¸£¹m§ÿúÈŸûsòÌÄ´Óg1’^¿àê“Tbûûˆð÷I*áŒÔMÛ»xy!(¢ÚóÛ¸û‚mÑý2ÆGÞ¶[RÇx ÓríØþ8ÈxÛùJ¸úÓ®þúE %’$…¿VcÆëêï° 2pŽ8ûö;QÁ^ž[âI€h¹ÐIîä>„Úå8þ¾S0aJ-þþ ÿˆíÀ£¤ž„R¢7ÝÒÕ·2N¯`j—)€F,ÇË7*´ˆ·–­ý¦C ;kg*ðü{Ú€$OŒ}äóÈÇN_+Íí:Ä]ɾˆdRAlÒíF*;±N2˜^JØÚd‘·Cäu`”X1¾Ç¿çQš€šN9w4{¸úÛGœŽ—ùø €Ñ®hËovþKè.˜' ù/EžéØÞ–Vdc×ßJëâ|5)€€áy¬ÎGèÆ†Á0H ²†ßÓt¦1àðà ן=w¸|аA’2Öo¥ÄWñ>KÌFÒ¶D•aã›:С¦+ sëõp—ãë®#ÚhêðZè硦M„,=Ÿ#ö3%í³Æ–alVºœ0YÌ¿áfõ­áå rY–¦Î­Fïk‘‚—tUOá, ×ÎõK»T.mŸ¯a~Ò0¨¶nLµ,€¹4ï_¿Ýçhÿ× Tä¤w³ï¯™_ÏyjW ÍJiI4ËI®6q9öšC´ÙµÀ—ç@Ó…Ï/Úa‰Ô–¾Î5Œ¸ü¤4Ð=±ôůiZh& õ)Fñ…JÊI²6KlJè–¾šçÎ/ÝJ Û†¦¾š©Q~¬ÔþÆÃ/z‘[Î~eÚHt+óü„Ë´1XT¬­Ê¶6-{ ÐS³Ž†Rd­ê8Òn¥óª]MC·m`‘Až´âcØz.î”(x¤¸8¬Í=­/ËO(b)ªí‘w[E­ááÆ†ŸSÒDš$y¾ìK§‹rcoîÂÐIxâ«»´Žëʼn¤ôe•ÀˆH°y4}¥µQbÆvEÏØB7AJ%øa¹ð ©"¨uäó<ç“:B:"tBòà )©ðH©3ᜃ4L"› ®SkÛõû3GòÅv£5,+ÝÉâ‡y½q E6É+•ÈW'œxþ4¤9€q E©è$RQéi¥gºŒ&PCÒ8¸"×›?Žh{Û¦eêP¯=ú?pýc¤ü@È>ˆ‘ÈŽÍü Œx©¤Vž¬®8¢™˜±Mó~æi{˜Ë¬pK|€¤^žZÔܘ1±áÔ! tÔ‘ë\xÓlcÆ—:æåxöf;À`õjÌIÛ¿ y3 ©ˆê ù¶¢öE‡;DJP‚lþ°`%@Œõ¯/bý+4ÁŠGé/Ž©=Á„,È÷çªTÀE“ë?lÁ²ªe¬Øæ€l&Á %V†&æ¼JbÃL%ók~š;ó4»퀾Ù+\éJ Dnå”ËwÏC í² b´–u.È‚@ñÒƒMÔÒÉÒcp_Œ -vØÔÜ$=LÖ"Á´Bìf$é=jõlXž¶U™Å#PÖõB:ˆáUØÚ"IÁº¥`Û¼IÆfIÝN¼¬=묦Æîçô4èA ¹ðšø4ÝÄ" î€à¶û” èV]Ëú:;6«°….K«.t{héž~ŒÕÙLÿ—É2T¾Çˆ…RºE÷Ew²î¿4vÁšxþêÅ ~¼šd gEM7>¸öù^ @ G*y7ylm·¼µ(D?{¿* }ÕI‡'š @¿(/—Öz(a*‡2"xd€Šª—JGý±/’Ò®ÍnͪdFâ…¿nl bCE1%쨨¦j> ƒ l×GCžÞúЧ°ïØ7’ø`”ÐÓ{Ö Q˜2°þëÖET8lá8ÇŒÛrØ`*KÝtÞ÷ l‡-8SËUôE´— Éö`=3âoLg¢ÀȆý-ÃJȆ©ý™gaBÓÔVl“Mš·¡¡»9x"QãðêhÎr(!x㥄I–ºç½`ù—2T«<)Á"P!D_‚fg¦Á—¼À ,8µw°A±ÜXCé°m¢ç7­t°b"R1ÿÌ úüˆX€°\Åú ¢@iêUµÆ( !BÜ.uYô†ŠÐ.Ê¢„ªåIð†Ô1=l€UÊá=±E9lpâõÓÒ,l´Œ-½1 S;¼(‚&6(±%€”à…cŠ\¿ù#êxâPÂDIÅt#-YÔªX/`¬¯©^>’«'÷>€¡ôö¥Æ¬°ˆ]¼‚ï\«(nä %„b%ß“¦„¦Ê8'‘ŠÛöÓJ‡-"öÝÚK 3íQê#Ù¡‡©ÐI¤‚õtÊ¡c°àå¾nëÎO”ãk–æÛ­Ñ++åÓ Q+ÉÀa‰•šûƒ€Ê,ÞýRÍUç>ä1ó8yƒÇt’ë—7d¥? "Q×þ‚,¨°\Y±4õ˜À4>DÕ˜r¨fqZà<"¾ñB3` ~^y\Ô³$¤@³ ~í‡N¤D÷!à¾CËš¶iìËŸ T´mƒ™dO?2`¦Ö´}äÒT>·§`À“lõáQŒj eÅ;Ütò¨ª€T !Þ?´Øý~†&›1!?•mX5 ]…z¦¿)–—»?‚. ‚C»á³ëi½É$äeR,æhlÏð¸þ·H€ÉZÖm ¶7ÁžrÚ¨rj‡¢­u÷;vé)Òµãñ¼I‘§Š\ÚéÚ¥î%9ÜÔiQ઩N7ÓýÅ? `( 2+»‡z‡Ø =Š]žôf”äQ‘²A½¬‡>™ŸþÖOÛ¦_> ;q­Cþ½´*šW.ŒäòX]ˆvaáùÐ7Œ)"Á³(´Ô­d¹sÛSûc5ƒpD(³2Óë‘©uæUÓø$ n)‡{VXô‹ ¯ic h„–B,ó7ŽHOò×¾ò™pÏ‘—/¡hÛ‚§ˆèÈ[[©Íæø|myv@ä¥ w¢fRi¤ôh¶$”8.}¹kFàƒ­Ü°ùʘÇðGÓêHd9-9fò"š¦=Ÿ?—}øË 3y–kKçé¬ÛðÆÇ@ÏO‰ž‚©[? RŽ=MŸpIÈm ~T+ÙÕvò˜A*rG8£¿d䡹×ÓÓ®yôÄ—‰HE÷ùéZ¬“Óò(“ñøá„Û¦Œ¡dœ•ò(sÈÃäÂõyè5¡$x…KÃQwtÓ¼Q’WnD*Ü %Á+ ‘Šúw(£Z©%™Ü)¯‰*Wâ RÙ~XÍñ!ý#r1YT+ ËßXÆŒ–ªÛgò0¯ÖëIe?óâÝ¡˜’²x>A6ýÅ ßZ Á…-9~Áh Ï’W=‘…[^×ðÓ-Ÿ!'¯†óãÂã5^)ZvÇÍеHî¸÷ó¡ôü¹«¨á³Ó÷ÂgGp9€üNïûz{lXMk¥rnŒí½ïúmï|lßⓘé˜W»ÛUËmN#xaUí˜ã}×Q:9<õõºóÈíN·°"ÍÃâÛ«åÓV§¶…§.¼æ=nQ O=Üí #àd£Tk<Ô¼ØÓF^™¢PíŽWן¼d˜Áù­qÒ~ûiÞžñ…ý©]é}sMÓîúJǼ[Irº¾îôÔ©¦3àxWOǦ¢2!ÙÇç«]ävÌñ¾/û¤rŒFIûÞ7Ï$ ·§Žwý×´†§Ž·{M!fU‡¼¦ãÝÜômù¬Mp´áÓ–»à|ׯ}fx`'QÕ$‹ã®ïtÂÝWû®uÉB%F“ò8¼ˆª&lÛµOÛ}¥ùK!º2(®u±¨2×¢dР25 7úˆzºîaÊ oûçGiœxtÕ\ŒÓÈ~cnº§üx奰œQþð¯¯pÈ‹“Fª‚Yw*ØîvøáΨÌÕSÁL¾‘úÞZy£Ë{‚W[»j5KÐC¦lÆÕ‡£mk;¨ÆoÈ+äåíÜ̧““á!CöÔuÐ3bx+jåWm;GúÏ¢ŽS{³³[c ×¢#k  äñ-|šÊg×ýî1ôñÚœ‘¿h1êp†–D)?\ÉNS+Y޽D÷•ö%î[O³vÙÍ®‡~÷ë+ä]Þn×ù#ÐO˵rt;t¥šëz棩֙uiµÍêófܽëiN­MC¤>cFM׋%P«u_C74)r_?1X9·J0×y „æðõ骹èɆܚ–/Ë;±rËu^ ~A{é¤m%ät]§P‡ÐSÛJ–‹ºÿS¹å:#@~MÛ@¢®÷ÁT‚¹®'÷‹Úu§•{®×m%Ë›E]£Î󦧶•,ïuœo®[ÉòaQ/ÄÌõžÔçû…MJ r©‹ý¨~ò¬d%_™Ê)‡Š2ÔMÍø‘>Úˆ¹º§¹ g8¾éT]¾v¤ÐDׯ~¨ê´ 9ý§Nj,˜é7~=RùJ}òØH¬M@ž?úŸµSȼé”TmL‰Õ-ñôKgƪRJ<Å¤ç²øÁ©ëBŠÕò‡che_¡©8ë•*ë¿q=/$çmA×ÿ”e*YÜtViý§ŠGEŽÆTv¸©„‘ã=*Ë©T+º|9øÍ9*oNùôÍÅÓ3)‡³³B›n½Æã‰íâ%X¨©ÏpWÝ$'„^ѧ’Ü‹6œVôâÜ&’Æ3Iˆ q¯épªÔú6c|¬Yêìò ÚÉa«}÷CYïpÿyÛ Õâ![9üÎ+}*dÛœÿJÒa‘B.g#+V³a3g“BR­éÕ’ÞÉÄÝÆ3^óó ½–J Â;£îùŸ83õ,Uáj÷<ïsm‰ ?£4¦ÊÀ™’¿é–›óO«é²”_ÖäZø!úo õÝ.2ÿJ s©’±{,”THés‹ðC㥠6kV©HŸ›€ßo½šUn¤Ïñ[|nC BS ”ô`*å¬Ü‘ÐEƒ_©5$P÷é©®Ô³áñ«Ò?"Þâ³f~ úñá®ñ2Ð ¸Y…ûì‘ø×´ø:êmsýj{[Q¿(µÂ×:‚§çôKÁkñ@W5~\®LúZ¿&ý¬î#œ,on~˜7–:còô¿MKÜfCÿfX0¯YJ_ég¥ŸŠÎMk¨ÐWÄ¿›Í‡O*è«GB>ḣ›Î* ?ÌÐ5«poéG‚wO?P©t ü–øU`¦ß¿önz î­Gâ_ fzðt«po=ÿHxlèá֭½¥_ ¿Õ5ùôÝ*ô?¡+U,PÁ³ÊR5ÿø¸Q¯]ú‹Ÿ‡â]¯ ¹ÜšT^ésÀïD±ƒî‚Ÿ+Ç2öåÚÖë ¢îù:ø ´g.ýE¥ö„Õ=·ØKW^–ÐØ}UÙº IÖu w°oŸ ãgâ½xé-~%ïN½í•ªM]±J &ž*GäÈþ±ÜâÐcòYß )jJBƒÏ5k?[ OÂޏ¡ôÓáþ·€«GÊOÙt|òrÎÈAÇícÃHY8»·Q ±*ÉeŽ$Å>–µÄþ}È7qþ8ýí_…µZ$=tö·ÙÝ)Òõ‚)G‡%r¥« uUýäT—.í/Ûú5SgäVw–騤‘eI!Ûõò±5ó_ˆKåÄ3é^©ŒB\G")ò;qri PÇ!­ƒ"eþ‘ñ7-è÷`’ÐÝ©£'Ö]Ttø©„»‚ Ô›ãû_Óun'ƒ)]Nã0µL]Ç(úGƒÿ`Ç]«ÖQ‘„Ÿ 8%tg;ˆ e+õí~Éóè.Šª=mΪÅñ;Ò¦S!Àõ—g®³gšýÓ°eM}2èå‚tõ(—WZ-Uò•©ô O•AQÿfØËͰÔ)¢%á7Òl-*†$]ä3\Œn»ÊæS/»ï¡÷+=6|¼zMuÎýf‡þ6­@€îbÿãÆ z /L¾oÞ^ÏzÛh·ÆÙcÒÂA|þ£IÇ“EîJP0PwðÖðÌ’•tù»5ÍnäNy $MÝœÞW•˜=¿]j_¾¸‡w_¼›•ìïãÄ(‹ÃŒ¬Ñ÷u<þnùMgžNm¥•HA'8%&‹À^LðrNŽšì€3Ó±'„>;óÊ´¸Å6Ó“_œ#«%¼ì|q“t×îú(Ñ" os>^ßÌ™…ˆ¤¼úbÁ »þ=*(>¸aQsíHà˜Îà5‚nWÌPj'ÃWÿâD7iÐ~Y˜A)Ç‘±R Ó;Ô_yðÁiÉh`æ×qwEMØP×-wI6 (H…^‚{Žðˆ¯QÁã †€vh‚“AÑÃëèALD*r#ˆj)š™cQ <¨#7~ˆXVàÄpÅ uZ7ÔøŠçPšÿÜd6ô™d|R~PæÐKÀÊÖÜà8µ™a)bÆÃ¼h"S#É <ùbL¨ßùž¢¨ò¡™ÈÔ>L.ÍäòjÒEÿÈ{òïÔjùLTY)WÇ‘ÛJ~Bž1 0YM™(¦3Ó½2À1ƪUKG}%ʶ MÅy«0Þz(5Åÿɨür­nìIœ9|Ôš÷/î´D*X 3RŽ÷„¸;­ÔƒN’L”+ä~†[2¸èÏéž:|¢)?Ž¡¥q|‚dŽ’Ýr lòÂРð|¦CD*Ü“b”͓Ȣ’š< €›ßÉ5ê«»;“…Z° "¾1Í+-Yg Rážj#Y¨  72,_™i?^v1‘fK†ÿÜÉ6/ñ@$¥OˆÂ°b¢)ˆT”Ä’êýG®kuQþ™MxeÓIÍÚ¬HÐ2†¡FL$Ãêú»û§„•‘¦ÈÝ?fŽ¡‹n¶ùy`Í-sÊøâÆp±²¹¯|ÂŒ“ç雟–‰æ€šnsðƸxÑ&½ô3’«€CÈ/š‡H^˜i†™n«;裛m êŽ~”OTã´Ä‡ô#?šW؇ ­Ã×7ƒcB4màaXé>ºk°f“/Ö\#ÃÑŽ}b!®0ˆM†å:Ñàˆú çgÎÊ]ÅÚ§Bïf—–ÄÒRÀÈÀ׉%Ò,Ÿ&GG®Œ w`ÉøÀÈH"â±×“ þD¡ù‡[†=‚}˜¢ùäsü@L$¤£°é3ó‡h[Ô±fÂfð#–|™É?kûK9J\¡tgpŽÒ¡e`Z†@"IZ VqΉ u$õ¦ ëøWb"Ý:‰ ÿè3€3©ð:#!8 UFòJPÌ+o ˜¨2þ ŽÐÀ2Ã*%waHp&"_”YIA©øULAˆö+Ã$üòô'k'‡”/ ÌЬTuz¢ä2­^u‚‡nÕÞÑfÈa“éâNòi'¶bT™.Z4!úw&àtcJÏÄ̇Už|×Û.Šó‡y¼‰ó¾#wHòŒò‰'¥ô+Ú–’Ïcô$¹Xszû.xçÑe²gÉ4ÐÜh³ãëKGÓŠô±Ç‡„^^±¸YçC9ýƒ2 ( @oNļ›@)!nr”JظËúòÐô¹ØÝ…äßÞ‡Rfùà‘åë+yEy-f²‰&y¥ WÁ/Å„)òúœb€1¶L£Ìm@Š0Ë!u§Øeþu ¢éˆTô¿ƒ {9ö(1ØõÂÌ4¶¨;M,gf€‰T,OWàSF¬öh2¬J+8Dy/ædoý§¢‡t×Û°}’öå˜P¯¡>½2]|ØÆr‡2–@1ÒäKŒL-šëŽá&»a 3=<öpb1ªP1 #‡}ì8¥¨gòVf®#ï~l¦\ÓÙê*¡àžíÉ6–£dg>­úc‹v Ÿöé~M$ñ,2»¨3R2¶ô8€Ô1¦e¸è~›õñ¥œh©ûxKÔR®µ¼¸Ü’ŸÖ\Ö4ÅL£Ìej0/4!ŸÈ3:.ƒ¹Â&äÓÄ£N4ÕÐT¦í•”4§‹šþë‚hØ u~(‡=“`FȇQ¨xiNç¯Mmì³ÃYòT{*FrÛLØÆX3ƒ}¦ ¶9š+(fº?æ—#¾ìø©åÏÓ‰±©cœ ¥+åóˆŽæá¡A¾;³M7*©»Ä.Ó͘nѨ$²±õü Ða£€í:I#aå MÌ”¥à­™P´² ß‚I9Ã…6{åÍ~äÉ6`‹É ùN9Ø MúÔ)ºqƒ»‰ç €™h.¿o\QYúA%…Õ‹05f:XÓ3„ÜCb9õ® hÎ$´´ù«Ô3PÓ03ÀeFx&é“ócÁ`4ÇøOõÔŠX×þÂø2ݰ{ò%ã ({‡tà—™ dN¢Ë_ˆ™æŸ£9 ç@üâów<§'ß.uD*|;&ßú D*<ý"ù&Ðg"RáþqWr &Hg$A5“!g:Þ3S¾ 1~}´·ø¢W€L7#iú&±^0JØaŸÊeRJAfX'0ˆÁó‘pc,cR³É…^Jâ5ÁÃ}}P(x‰Oí ãè¬C6#y¥»¹Î#p}ÈgX>Òt¢”ä3’|–¶Ée~É(¡¥Ïë(9«·)E¹3,Õ üYÉCÚ‡B<H䨎É%P¥„rgá;òC>~ä²Ñ¹œZ3ÎK>à¸f:ßÔ¶}r¯|¹h9#òa« ïnI…EQ»L6±½ÅŒ´·Âd´8u·ØDµ7}i ò Ê %C GA3ohz ÅJ##=ÓÓÖ¦ °?á@g~ì…U®”›|˰ùCîTê:b]š‚<ˆÄ0ÐÌ(<ôDš‹õ‰àK2PjŸÐÙS¡èÖA!Êöí¡a®†È±ñ1žXr» 2##=?Ðβ|&ÕÃHò WŸÌúQ¢B[0?Ò,OP›&Ÿ™ CˆhÁÀÃär?ËEÏÀÏLZ.^ÐQR×ÎÍ™ü!¡d|'æ3•[|.’ù%ùÈ,‹ü(0þ¼x´dšž62¾ƒ=\³Púd–¦œF~䇆–ÿäÈÞcÆv‚›"¬ûöÞ¬-8-9Èo§u`gB»g;~¡2Ü ççþdåÎ\ÝÊT}h%E.ïÔDïx(C;æžÍ…Kn‚[VÂKÒ+ÜYæš+fý晖߈T¸÷Ì-wrOC¤ÂÚ× îéˆTø̸NpÏ@¤Â· ná•Á›™aÒÌÚC@ÞMaç7Ò‡}€._·áfû­‡Ì2Ò¼¸”ì“hd=Umq¼ƒXê”¶uüC5ÖÜGÛ8é3©gA='èÃÓuB93€Ç: Íö\ðe†±öú;¢•øŒ4%ÀõY]ßÌl¥åF6ÇÁ7ÆŸý¿œd†AÙ Cwp«’¢ce'@ç•×` ÃHÆù‰ò,ƒM ÂdŸPÏ8$¤®t›IÖ’ .~™–kZ) g¥~ÙÒá¾Í2}fÊ!™íPÉ9v Íá—CJã–´:J›m 9;c;+ø'刖ѧóL…|»JjA$Cu"ÚQÉQž§6RêkÎŒ÷8O9º§‘žÓb¶!'Xe$úLD*¦'Œß&Ê™i¦»SY? !um$ð-ð8hs½hô‘S‹ùÆêŸð¹:Bé@P@LðÍêÙ®½Ô§ž°¦ì¤”–9Ý­dSœW'àÛw°Na¸Iù;4‰CÄØ^tQ’k.Cï^a ©CsX3"?ˆl?3èÉDZrÐff¨'š“ÜAŸà9¤?•éã) ‰à”pn+U…Ô Yç¦6ã9/ÍŒò,Om[3û}z(íäeœÊ"8cfû’r8’‡eÒ¹!1ƒ6넎f(oРÑfîSé@Öõ#Ç~[4÷‹>ÁBð µ(uzr;¨òEŸ®©csÍûUË3ècþÑŠe¶íG M6ý#âøá¿~€æCJÑ„GØ$’Ò!¡ü³ I‚^Hb#þ~p§Çäìù Zj¡.þY6Ú£ßT4D¡ÙTzÂe¥ÉV~óàÐ'ÊäÎfâ^ý„ZL|ƒoºß×É<“wÕý°¨~™iy2œ_lÙ¸´ A—åëK:auAJ¸”NNhƒ‹¡£ OF8¤´ ÐpsÈÀ‡:¶enë>ÑËÙP­ë¶QbkÒH€9Èa°ƒCaeÈÑC!·ƒ.‡„ØõÈQFÇóÛl’ ºüCJ)߆  ¡O˜È‰Úà›ÃG5›£ðÛþKE6Û ÇF9棴9rF({z<)©i:$ÔM=úÅ‹e¶ù)ÑÆZÓ׿B ÙÖ´ºOr‡ý 9Š”fðˆj42ß@‘ ¶+mkÚåIê ûòœ;o&ðEÛðNÚBëôšíùoKÔ²×O* ù6üŒ_àAàíš/EsPÍvÃîW Í•hÐìˆæ¼Ô„!ö°’å}@›í]fRÏrq#RaÏ>©'€¨!RáÞMê êˆTøy—Ô@Ä9шöáŸmQO~úʇåPÏ´öôåÍSyðGŒóÔm8æQcZˆTxHÉ”PôÁí@vy¹ÎúÏe®‘HEÄ~ê Lf‰TøÁ™ðHÔ©`Ñ"or“Ìæk-n_ÂYn‚â…£CKÔþǰi°‰ÆÄ3?(%§>"\ËücÅ}´—rΔÓJ:ú “)µ+Øu€Æ¤c| 4ÒE—Wn*ÂÎæ%ùH'–ìãH+ÔÙ¬VBÐ&ˆ³”ÿ#$-hì ôÞ´#-%YN­~”¨y"Ÿ¡È¦×Ρ9ü!5ëòÑ´úº¬>ÿ>¼J+ðGn³¦ˆ#!àgÄJ³u@èÅ›AlrWç=r­º8¬t´ÙûrúC3P†„hD"·w2¨!è¬+ðèÈOEûÒ’g]^Ô#”Y—è€P´Ôm?ŠÖ`p“{âOàÅF®"VÞ6ŽOPÇø³L;ëú¡ëÅ'Dšøyý2J6uQ>r öCfäR®}'ä/(9u·$‘Š– $¥u™¦Nsûö¾è =Ûø¤.ôŸÌuõ-H¦"kÎà!•ä*fÒRÒÔ(ž+;MCïÀ›uhh]†+·‰R»Ž&J/ÙÚ³¬•ûê2(Õ ô\ÉUÛò’pJO]õt¦•4ÕÜȺ\ÜÿrU ÑRâu³|º¢òRqv¾ã8hfE´ècÿ*½!kâ(ho6…ã94´Œ?‘𥞠&u¡S.r®hŽ€ûf²[ï>fynIÑ•4#/{iBk~ñ%©{馷%[Ž× ÿ˜3ÊCR÷ÂëÛk|^hY^ÈÓ~ùQ¢¢„Ò2¹¨‹½ÐG¬².5ååà¢ä¡Äuç²KôtZ’OG¬"Iæ9~q¦g/ ­T ûiÒX—„3ÈŸbY¾ƒtÐÜ!Rá©1 A‰3‹÷žöн> d‰ñ¥¸É…ûTÖ”Ôl¢ñðDÌ'I½ºÝÚ›ö °I˜¹““B¥žÑ—svrL Rh>Å8 óÏo0hùE#ßèÏæ'oÚ1µ¤9´3Ü"ãÏ ™dœ’Eÿ©xIæJòk\Âò!™’öÅöÕès;5P¦\îC9iåzæÎ6oÛ7˜‡‚””?‡1âƒ+ú›¢ô´W§‡ŽX†¹#â™U<•ÍÞ‚Ùf ^Å`³|Û‡^&bùÀä«+)^ÇÄ3Ýv@zà `³Ê‰ÿÔ¬­LÅòêËýBÎb;êr¸Iˆã6šÅÊ{¸”mÅ9ù᩸b"´œÔ=YE/î4ïœpøf'ÿbŽútÀ»[ó@ŽºáŸðÀ£Z“Ìsd7œGÃI‹ÇÞÑ¡–¥D+R¢‹æ$‰UŠÃ?±w±R1«ª„Ô¥ÿ¢Ë"D*<~fVia¥ä‡©èF#t{u‚–Ó"/,ûß'òs¨ xÛbt9$´¦šë”C5«|"?$x7ÿÜô”zúöKWM—µ\<åö IqIqQløÅ!!N2çC=gXYå°ÊÁ”;Ž­^_BQÿ¹hnD6^Ì<Üò«Gv¶¹$ZS$R1ÿæ‹$/™U$W៘³³”ܰŒ ö©ÞVúW®ÚASËs/ÎÆæ¨Všõ`Œ‹áä°Î~1æ%”¥¥»£ÑV·ácÌ5Ö„ZVùSúâ©CÃ93Xf;ÆcoPÜ¢"‡º#¤ã+ SD}Œ¬Çþèõ¡"7ìL‰Ì*ƒPÂ^†‡u›U³ŠràÁ†FfDv¼pSëxÝ-ÍfMv—ˆÚŸÃOê íÎ¥½ºé|ù¨ý§½½`©I…ºaÐ9¿~þA5íec ˜Ó\ðÑ[uÕa™j¥¥¬ ªÕŸº…¼iÁòq ÍI c^>æ£Ø°Î!*^„äç ¯¨êmÜðbŠJž€$Ý}8 ƒ×~XÀB§êJs±”ª1¨VZšÃ?˱rrâÕ´×ô8ü”Ã4o€f~Hè(aÓ¸ÝR j‘:$£–þ‚u –°¤5(c¼J^Øc`‘MA®‚ 4«¸㣠6’rަŸIE,çŽÜáúnæåÌ—E` ò7ŠÓ²¶¦ΩtpÉè&ˆ‘J´©ÇÆô«N\RŒQ#Õ§£<#E4ÇYõ7¼cyw#1`ŽÐ¤Lû§I(–ÃB´„õ4‹pBË„‚úi$>d¹¥µHs• º_øQEL·Yfœ Û÷lÄXæ-ÅíÃ*f™rxêK0n¨øÓî_z1¥¿Š—íÁÌ@”HÙ:A8›SæCTt½˜ŽC0nƒ~¶d__bÙncëI°Ž%Ũtÿ²J±åÍë‡eî/¦NkûéM$f¥¸ªõ¡ânfYÅ­ëüÏ)Ìq·›Ufê¶ ×LãËX\Ñaªà™§b„ÈO”à72 5ëzy†èOðJdÁÄNjȎ+¡ÇW ¥‚ßç´2Š,òyyGiªG”Ô¬J*ŸZ½†ÅðkëÁ§ì’ täþ§\¦ª•üRŽ–ˆ&Õ_FZHT8Hrpe૚/xÙ0TŒ6ûþ4m*ôgQ½üGsEå]®Ã9TS¬iy ïÃòú¡ ù­ê3p‹UªýêþTÓT‹ N1Ãè O©G0’MJd²áù[\{ðæ¥õ¼c²©>‘šÚøÍÖCÍõ2NáBøÌˆ|²9x”ò8%رÕLu|xM}oV5(ÞÈæïPJµnͰÇàZßëI6b˜¥´ñ3 &P'é4§«´¯d“:þ0ÐSÌ_¨Á¾zKÔ} zk¶=Åd£K÷I TÝà2¯¼á‘‹¤Ãx„Á8QÈÆxWºBé:xsh'ð¨~ uA‹ŽÏü L5´ 21Uo™ ãÒyØrI2z”|!jA.Õ§³» 7Œ4©Hr1(Y>B~%Ù-•àÄ&‚šˆÍ¨¡9}g·;l³’|ðñµìR^Uïo(g)i%øbáO%‘Ϫ¶7ãp Þ–)‰?´Î“´šœ"vÓ=|‚aú¼ÂNÒg²É›Q把„”Ô0ɆïÌ4Õ¯² ö8Ps4G‹”tÕªÐEãËÕZ¬¤Ô;KÉ-—Í÷ã`h2©Ä{ôßãÏE½8ÊÈZZ :×Õ vrË2b<¤òø‡FrL•€”ýD†·†” ¨Ciw¼ò‘„xOwƒÆ†¡¤dEMµ<‚°À#WP†r[Š< åe„ ™êY{(Õ ”mÍÛäÑýv†1Ý˼áPËCt-in¬ @Ì ˆ„Æä‡G5ž&ûÅ/—°2–fÀnø¥ûÃG]?1Ò!=Öf°…òd *x˜ò+ªŸ  €A€e¤¨; T†ß»®‰"# Iõ_ZÝV*Ve¥•0–rbކׯû. (±+~Yé['*dU”ÚKÇ6é %êbVé?Û¼qÈ¥&ÀÕŸt”Êô»·>¡%PÂÙJE ¢ŒBEPÄ!ËGȃ'®À‹¦þˆP1d¬ÊÙY´RZBQiu_ Ä+±¢šhØc~2¨\ø‰«œ6íƒù³–1˜fe=41–?äN8iÈUu”¸c™;02Ñ­ìwÊŠÖJÌNšöb„á"ÚኸË+y ýé31dÂXJ f¥ c·¿õCNpX>˜Òí5íúÆV‹XÄÀ†Ó§Wð tÍ –Ê'ùRÓw¤J Œ¨AÕÔSm5Bó°H‹Ó2šE ‘å±4RW$œL„/?ËqXÍ*ˆÆŸUÈa½YN„9ý²!6±Sqyˆ»D·É·N’•™lÑ;A‘À/Ê à@²û .Aù¾îWe¾PBbÅQh…$žÑÌ!1ÇÐ\ÄGª»¶dP5’”£(žòR-ƒE!@s°7±|¤|¸£Xn»›¹v‡!fjVc†ä*œç“+pøh™E]ÅA^RÞRݘA#Nä³ßLRÍ4K­ §õ¤o¤iûq)A(°ÈíOòIpóèæ»}ýëP¹Ù$ûDTnÆÐˆèmn:Ƨ[ÝÒ´=š=<þs€ã(•ße9(ô6BÓ àŸ4óKO`iÁðIec³ÆíVwÈ_û›ð”#0e†zàŒ>óðÓúòËÍ9±°9"³†D- ÄJ!ú›ë3Ÿ~)ìÖ–¬š<[«Û¢¥õ ÊM”n>ßyzfR‹zןä­t‚wƒ;Ôqׯ¦V•×sø—uâ1Gó¶æ°¦8–!d݆¨›Ó½ËB¬YoÿêLM‚_VÞx•íµ¯!¯žê¿€&²?¦øúêb>Äh"þèÄxoú,ÁGi>W*!ŸÔšDú2D8dó$ãÚêOŽáðÑ+E5ùc&ƒÉ]$òâŒ>Z'¡ÝÁÍ4“GÍ} FšVãÃ7z¾Éèü‚½ûÙ°ÄT05Ý(@›$™Çæ¯])9Éë‚(u‹áB™z7K‡M8®®íÚͧîúȆ & Í$2/³á fÊ«Y¤{á« ¤²õŽ(‰Yå6œ…¼pzL«—î>öÛ˜PRSÝØÍüHz±ýÀMÁÙ¨,ø9ÈqÛê#C”[è)n7ÒR½Çf@Éa¡W<À‘Ñ©œŒšÀq³ýÜA äwD?]J*þa¨ƒä¡7/Êx›òîâ+mPòožsWbÈõ 4y E +Ôt9¡˜E"Øáäk¸HŽ®Ü!¿Ïɘ¬î>+½p!V9¢Ó9‰–-õ`›kf“í¥—ÙÐÊð¥ jƒ:"ì~ ˜¢y¨å¶=m­ Œ/Õ¼ Gld‡êÌšôÃþŽh4>°n¢TÉÍÕ§6‘«`D1D#¸ãæreŠG5|Mìu Í;¹åEä¦;ghzÀÉK87g:ý·üú"ÇÅgèBçË.#Åb¥}~Äó=î9³ÚX‰.A5wÇí‹5¬/Àøq“7纸õd$ÓI0ˆGÓž()ŠÆn™>†0“¡ã¦Oíï 9ÐR+ýNS‡JþÔÐÈK79¯yËFZäa‘r>?r»+çðÈü¸—‡õŒ:ó“‰=¡æIPÐà™H÷îEÅ9Ýÿ"ÿ;ùámC¦÷º:z¤Ž7¾\W‚Ît¦ø RÏŸÔôÃéèƒaXga8,¦—å$¶'ñ½p†ÁýÓ†ª šñ›A¢qºa´“þºã™ïŠË˜ÁæF¼6¸jÏ×û’LÐÇÍÌ6ô’9È*Òj|!ˆ|; &“PÙæ«ðùàœ%qFµÏ[ß§I¸ZpHó¬´ö'úteÒ‰•àŒ¡•WÏŸÜšÀÄá-â>sÀu”èꘌLRO) ¹ýÑ#`AóiN'Ù@ºr8Ã7J9êÍ$¨[­('ËàÅš'„’J·•L!ZÁÍlUëõ 3t>ÉQ¬†/Tf ÈËuº\N)‰5né.º0§È“à‡lÓân·|½t!ÑêÍsõ:ßdéG‰sÖû£ñÖpÑkhVP?°‚î½€s˞뜾œÅ±nèñ…œ šµ·³’Ž$šæSßA,I4Giül|`Cl;×é¿Ô¬Lif§e¹™"è")GJl}$ÓPZ©ÔlʶäŒDRòƒ#5`õÊvMÜÕ€Ì¢Š¢j¸ÝÈÌFX/°6šOÒ£¦÷N¹­”bÿþúدæËÕ‘ÃZÄÖ|‹3l‚ǧܢÛwoÔŽ@ ©÷e:ðCçÞÆ×6:I±™eì™ A"+èBàÑÍÈ#˜à ‘yHµW ȇ)B1XH]6²~Ú—¿Hq¿*z kiuW6¹†ýæ zÁÊå¿M Í>¾~Ü#zj;µÉ þ©j~Ù0hÀ3ìB(}*,? ±.*«j ò|á’0”üo‘ ˆ|m4€¯ÌBÔ/’&hnh`Ôê­rèWÜV"E7r ×BC‚‘¢vêÚ¯dŸ®–Ž¡ìDƒ÷ºò™”¨:iæËá”GŽ§Ý»k 0ƒ²úÐýå‰zJ<ô*'ª—ÚHt*Z€ôИÈw ¢_4sÁÄ8²?r3Eµ»Îç hÜfš™ò ¹ŠˆÈï¡ÜE«õxlלØfĉ“Ô©©AчE'ôaÿ½D„Ò“6ÊGÞ_*¨¦\TPj£–– R§Æ y5óè$èIAB‹“ôr¦-!ÁˆÂ71zŒàƒÀ#ý6™â `tœmÈ< äD˜£mX°ÿ’ú€N6dhn~X0Gøf1Îà±ógyÃ!‰3$´†¸ÉtatPå^ˆXÞQ 4úžùpHó)à¶cß3ºÑþ¾TÐÌ6;ÄÍ ”,¾^(@¢Â˜PrâÜü¶2·¬„‚‘èQÅú$±Èê¦ ‘"e²\‰ˆ> „Ó.¹ tTƒ‚ 0ìÉ!Ç}ïÉÎ*G¥AX¤>ýÈ ”g¾zÏHÓ0$cr ”0 H©û1£¾æGÙH{%Eq)Ö´ÒímÊfzä]¾þ< ÉT{-SÑõ°D*Èy1. gxðÎpªŒžØ­¾àƒçܘ)7¼hñw¢ÁjDe4нq³mÅÏ#Fh<v`Ãó§ý}¨y©gzp°§Y¶ÿB8#ä´ø"„+´å~(MÓÁŒ ÖîMŸé Žh>å´ÅW"ć.T4”Tì_˜ôò. Á4OÛÓWt”УˆÝ³œ˜Ñís×Tê–Qó5i¾’fy¼0ÆŽùÂÏn á‚_ªhAÎQdy¿^l80qö9Ä`Q¹B½_l„¬ßǸîÔ,_ †Ñ=÷®͹~°è>ÓVzpœ FƒµÇМ1Ž©>®ƒ5/l8^ᔦœ©•@Å U ްÒ]¿òi9Pú6 XŽÿhž^u'4c“åe[.z0,¥d]ß †À`ܾ¾0z/öìsÀ56pjŠ'¼-ÝW÷F.£ú“öKy`…•'áÙvÄ3{­‰ ýËVèø6;X$6 ¥á…g–ÃÊRt°:ûܽj¿ûtz¯ŒîÞ´ ´P-£3E—E°”P´×#`4`âÄ–ú ¤û“J̼fxb¥á (CûÝ VRs²vK#P"Õ /%JzŽnN§…ôÎÂÍ)¾àÁ 9PÆÁ‹TWáû?ùÝ¿¼{¦`@Óàa_’™l]O³C#Ó:áNµ¢ŒÞí±›R6Ä1ƒ2º¡‚Vo¦^¥h0Fš.ËËÔÑ4³¾ö ÂH;ô ¨0{ÐÖ)\aÔ}³Ü! HôMF3B!;‚-ôSáÔ|E-‘ŠÆ*žLaA ä§¹Â ÊLäÚ—5š×IW|bA Í2C$8(€Ý‰ZHÉ2C0€{Û¬³ìœÝY«Oï—– ?%Wô7`ÍÁ ý\Qƒ:‹XÞ­‹–0k˜g ž¶ß‚º'ÙÝvÓ©%êP8”¼è)’Eº:¨»à‚Þƒ´8Íu¦ Z)0„¦×K"¿À€(€C÷Nð PŒÉ‹À-ù]Ÿ@"X8ru"—;<™ª€ÂÔ¡dEOQÝÆý!“fpÚˆUü5<éô£þbH°Cç4OBë>õi¥#‚ Øþ>Bråù©¬þÚ§5Ë%ïv0þl#Ëž¡úö•€(Á"a„·¦‡*:¨À·4À A†æñ>î¹ÉÞ«¸ïšû]tÖb‘ŠÉìsÇQA™UÉÀHÐÅꦠa h‡9¦qÁãW‹ä§ªSî¡ÕÁFÞ(¬ÒYf‰C r+Íí«Û<ÌÀîöçL;ÛjBfæ‰à…Pܬ'¯I¼òXÀ30äµ™òbÑ7è°º\V7,Œ˜=å•n9Dqäû#oF€Aw3D ‡P‰À@ ?6D>ä5º6¼ÿ0 |ÉAÜ«#DbÇ´c­*-½ÿ@Û' Ÿä>¡@Q»QüD¬'F, NB”Ä,E¯ž2L òb,(ÚŽw9Ñ*Þ¿+Z]6‚B|ºÇà%iŽË§³þvÀ„ïã*ÿR>3D`ö@Ó—Í+I-¡dNP®S©ëw#ˆM‡—Î'>|z8b@9wµ:š f°¦½{gÌíÊ µ”Èî|øüRgVǽ…§o¥Õ¡¤»þ…H¯rÄ59óã?y…rËô”¥€€aÏ~)mi×ó«ë™Û³V'b%¼ýžN?µÃJøø¯£C»áßSçwè(Öéãxömøéþ4’z{ûÑzáxmœú±p`2æ@C#vEXIÖí1êàÎq|úqØãNO„+?ü-# áås•‘ ~–Ý%§¿Pùñþ{Äm Ÿ~˜:Æ8ÍD a„‹?ÆJŸ¦Ÿ™öËıCi¸iœ÷} ØéÿwD*Ї÷'ÇxõAáésñ¤B)=y7Ò¼R%}õ# ›§h9ö¹çkX-åÊ0º”îÇ –R‰{Ä}±? )’LŽ|^AzºX;Ú’ \þy{ÚÑóyœ žpaÞì„H}—§ÛKÔÚ÷®U‚·§ÕŽ»?ðê—rªeöÑÕ;NÕO$!\y3Âp;‘Õ²qüÿ>ü`‡ýgÓMøxßvóå¼Þ¯?F]¨­ãºU$ÅŸ7OŒ,Øw—òÒC­° c¬Á‹èøö®Mûeߦ¯ƒ Ê!ôJ<€p@[eðòEá½®¾2e,ÁÍIýo¥R³RÆ$XáÙ?J(Žt¬/#DÔq²É¦Œ ÙZtÛŸŸvð×ð‡Ü‡ ,'ÒÀuUV¸÷ã:Q‡±ûßJ@jzöó8ú¾NžÁ,¥¥+ð ³J+D6Å©g»V¤$€¹jÇýo|+Á4ð2Â"’b¥ ÌðkRsíŽûÿ†0äæÓ€ÿä½V \£n%@à =T7gÃNZýãüßF¼àK ò\_˜’òh˜>ÓÜ`ÌÐ9Oï„€ßßÂÑ?páÖ=£Éþò´PB}º9O¥¶QOoˆÐkpò2ñ4¸‹§Ç –Íc’á!Ѓˆrµ|AüaÈÇ>JDJb€¾‚¢ÀˆÖ¤ÏJÁɞʤû¤<˜5ÈyŠ¡2•¶PRÓÃk, “‘îðûJÀAÀ WæQr#ËŸ¹‚ &û}Ÿ¨ÁÀ è>ñê}œ  º•,Ÿ„€\ @Ý7 Š8î-YÃ7[/|´ÿ4¨‰¦3}ý§Aë.¯õvjD *˜˜íDÁ%4cs—ôÁâ#=˺nÞZÍ»²’N)i]O›>]Ñ,·ý Í?ëZÉì1XúÓ™6«·Î¨9 1B´Ý4¡…›¿‘µÃh1p¥-h[0—w˜jWÖê×qz5ô Û3Ég™ü©)QjB‰Ÿíríÿ†ö‘÷GT‚2Jô‹ÐKuÞ~К=*Ø(1ì¶GK‹ì«‡=‚2&SîJc£Ïo¹‘ƒ"ÃJ?¡÷2ê.e$Jrù©)S¸åÜ=@ÙbØ`†òÙ*±ú…Û}‚ Á+¶GIdeMZ²½~`yá`Ø@ÔA‹ŠæÓ|ZŸd,:š%¡¤# ¨˜ÍO[‡.f(Ñðô%&‡"ºQA(ãQùà•-÷UKÈ?Œâ¥ÆˆÉ…;œ²Csúé]äæGøSãÀްbMί'z˜cø é+ÑX+¢ èL~‚ÄnGIMnÐu0í͵Яd7« öi‚Ìy_ÑŽ!¤ÒpÒÙŒ1|¥3Ú‰øÂ4_<‚e9öËäa¬0½´ÄŠ9N¼¡39®`†õH ±ÿÏŸêGoõ =»Â8Ã,EÐB V_p‘£3j»&6Ôšp(h7QW/ŸÈ{W$7xxŽƒˆ>´zÊ™Ûdº›vŒEFh PdaÑ|&­¸Ó`–˜‚ì,·· Ô›¼ëÕ}XE]dzŠ%xî—Ie‘ûôf§t½–r …(GàN<ñ¨NÕ"‹¡¡ l™?Ì"~s°ÛµŸ¾Ú2;Ôõ`”Ã%Ø){P3° 0ò·O„B+­ð7Öp‹D¢YÝ·¬åAg+W /† ‘ú{Õh2FdTŒå`šÁ(u›†Èð±‡H|0 ›¢i%å$ZοjÚ<ðë—e$W1¼xk¹%”L ÑD DcÚ}¯‰Ý4dƒ”Ó´ç&Ó‡0c#c,_Z v”¦MW0J2ù1p‘æšÛÍ%÷\…ÈE…!ìô·€ ï²È&•&i^#ÜA5ý5£µ¡Äù™¦£•0¬IñòÿPªGIÝ%jüBÃ9¾-7cq˜,:2 Ý^þÓÒºäÖ6˜ª(ì¯Ö#b’x‰ùNÓçL7‹,_ªsÞ0Wì/¨ààNæ• æÅ±`Ø Wý‘[V*‹,B]ëxÀ‹Géo'/t·d%%"2¨RPg?©­¸vÚ/æ²Cšƒ{äÕdanY¬Ä@(;ÈBNù¸ŽæÐ.pÍäáگΖï­e ‡,®”G#ÏÑÄ•g¾]È˵¿¿ÜÒÈŠP1@E·^Àêð/”ª´‹±:øCï-ç0R¾S‹ºQ|oOK,bé •i ÀD#šl¯©/é®ò4áäD!î¨ÕèM ÃRNS‹4ŒbQ÷ŸÍÔQ£‚! ¥(3°WÔnÁƒ¬íüÈ+ÐbžZk²öNÙI»Vö= ß"–ršvÞˆË8PÀ¨›»Ì^PX>“Îý4¡xH.CnDçêÓþºâ38॒-c‡a`¿^^óò.Eñƒ”#h‘ÈŽ¾}÷Äù÷!_<øâ¿ ”´F·NÝúÕí8pÛ_Ê$rõ–Ðíñ;4˜XwhÇ~°[íê_ßÞ!¥ã¼fõ" kºöF±¯ÿBÃò§F-ËßÛæQÚ;œ{ùíG^éˆi:;ÐayïÙS‹‡ÐÀ3ù´Âƒ_œ)³É:¾Ù"äeG7¦¡ÑJÍ,@#6|lþ¶EX±á’‡¾ÐPaæ‰ìÑïht°½N¼ßÈÚWCkØciaÓÊ"9ie^ýëÝ dÐqg}|äÕ~þØ^ \Ç㨖hœèèÑÎþëA·Ý~ÿp iâ ÍŽþ¢®­™ùEÑ¡lÚLœ|˜ ¤õ:ðÃÓ¼”+t)ßOHÖa~¿Ø}/ÌŸ„UìÏãÈ+g)Iþ·ST2˜0­TŒ`ë¶ß¿–IDþú ¥æZ%½«wìðáÈAEaG¸ÿãÀÁ¾<«ˆ“œ©Ô–˜)á¾+ÛÏR6 £I¤nrëøøŒm<œ?– (Ò©u8ò„YåÈMÎÛ+QZÛ6kÙÆ®Ü—àÈ"Z8ú{¼­ÿÔ,á÷ó/Ÿ"ã „tÓ9ñŒ†\Åv#;L'»_øý`BøíØ÷CÆ?{»AqÜíÜnЙlÇÄ/ûÀ<Û¨5„ú^ìè/ê:".bSôTROí†i—ß¾áÏQéÌF·£>-—æ_ ¢ÁLvrï˜%|þö½ñ3.{5¬xΟ o‚¾.¿\ú_Ðæä¶YŽÝÈé§bT·TÓ‡·KÏòk¬ˆ$L4ËG9áƒ@±£Ík^¯±qYÞÒég~[ $ÚVZZ] %¾ßcŠæÐ†Ð}Ûóæ±®¤ŸvÚ·FÒ‚Îß2-²¿îûâ3Y`}Z~[.—ÞAìÕS>bߥ©þG¾–ýýiQ'l´X¬Ò5ÏŸZ”Ô’ƒÃrM¾Yå¨ùô¢H`)Ch—÷yû¯Œ¢ü}¿Ÿ?½A“¡ –Ò‚önyq4Z¢ G4XhgXõ Á°óòžr»ÿ!Z ùãù/eÿ´È¿»S«.%®c¸,ŸöçßÚ¨Y¤ un°ÁN’€‚QíSÇ£¯î¿fùRÎO[‡][·=û…ÅŸ¨³cŽŽ ÁØz@@-Ù}fäÿ Ï%v9À3†^%’ý<Î?¯:8Ïg}³ŠùÊ(néЀ’ý.%#Í‘L‘"ó ¿žWÃ9—ÿù“AÿðÑkÒÀ|Ej©}äz¸É~/ ,ò{\¡3A‰üž‘Ó”u³d÷Ñs°¢Å¢½µÖÌaÿŽûOK Ùwn¡Ü0þ^_Ò8k\þžšöÙp»Û°ˆ–ˆÈš'”ðQhª'ù{úÓcòó·v$-¬#ß#œ|h ¤Ó¬³"ÀÃ'sÏ è,·/{' ´pû·ÃM¼ðø]—*8ÔÞO}…Ÿ_^ŽXŠó„äxýÁøØöî9?¸€Š²÷Ætž›»é(7ûúX8éÛL„äêÛý£1¨ïøö+(T?ì©d0¼ é¶•EÛŸ¶ÿ €ÉzÆ5®o›hn/ƒ!¨•úN§ŸñÙåiúÆ+¹¾{õÌ6¾xÀö ‚mPZÃ/®Án‹’!¸­à!M+š%ö' ==ÌŸ¯ˆ19ÒjW#fo¿„ [0Ù" ˜lûÕÙ%‘Ô?!šÇóç½ó»||x á¨Èaãæ¯\ùƒÙ_¯{ZÈ8€U¬KŸ‘§@aϰ‚]6Õ0÷ác, NcªxwˆÃ¨ iD7àfo …n-Š(XÊ?ºƒ&6ÙŽŸŒ=¢¹¤yÁ¹%ý»i¨ ë<Ö Ûd<¿5ÀÛW2›ô7o`èéÿ›>8À°Œ0§a²nG€”´0$÷ ÔœpÁTè@KV_ì#ÆñÀ¯K×ÿ´9þfÖV{øhM1[ÊF p~ݵ@¡†ÛT1Ì9?yK÷âû¦=ì+!£»áE†Ÿ}ÂÖiV¯vó‡¼ÞEÖŸmâ[„\<Ïå¤ÿï½–ž@»Óõ?À0wØï0ÝlÉm4Ð5{ãéeÌ P“¶/l`@éøúÞ‚™ÀоÍéÙZø26èr”ˆ;,ûú–Ïr€a»%Ðà¨-‡ßÀJz X˜]i‰dzÞá^$¢ªÎœ$kûå¥!íØf¿3ac_Î~¿*JÈe/Ë%â'êm kò¡ÃjùJ H]ŸÒ‚Jý¯%F´¤Š`0µˆT”Åö(uÏ?jV0_°ÉòöÒ“ËÇ3ì/+õ#êä¾TzÑd…¿‘\€)cÿÓšO1ÿ‚–Œâë#?~Ä´‰Gêד !t.©¶w‹¼žXZc¥Ž¼¦HËï´b€œÿ*o_νî6Ÿ¼Ö­õ抑"”íöWöF©=½TcÖŸ6êlïwäÄJ*!Òq×c£ë€\-ÙÁÇ·-Ó¾½Õ3ë‡s4ùs¿þ¾—x·S«'ÆåBXY¬Š"·èÔêËö U%íåk`/_꼟µ y=Ø0ØXEÙrïÍcç|„‡¿\(.ؙÏù²ßN…gU¿4§{ÓÊ ¹÷®E¾•gOCýªÐzõ£TO­¶ùc?¿FûÚ´kG ¶òa“‹ÛSù€9ÆDÍr{ù:fp84ùsbcù%ydV¡Ä¤ÉCÔ,*°’\­®õãÏÃ:šjõûB´/:ÙÉJnÕýÓä«Ñ“äâùq<þnÁ‹¤†ö}·ÛïZ–—0da^rœù­™Ecò6É4©¨GiÜ<+X²•“ œu|Î<%µki •ší;V®ÀOÇÇÕ? /nXvRþ(•ãÑãÂï«Fíèv¯tûÇGi†¯™°hÍ­ÜåœÉ Ѱ3|'àÅ^vÛ„f%š“o·¥Ç?­´IšÎz°~z·ïï±þûÑ{\ø­|™»àjè$&;Ù¿lP´Iæ‘+à–0€=¾»üt«ÆŠZWØ­‡žænOâ‚·ÿùÓJóuûyÉðþòI®P*\Ÿ(cû“|ã!ðßïm Ç7™Ò±?vCÒ×ã/QG‚œôé·2gîÛè?7!ÇþˆÉäðÁ ·÷‰gdÛŠ¯bY›ùR¸VÊ—©[ÙqÐ ¿ŸÊ‹5íÍ×%×S¯4 F4 8énpZ¯“ψQ×M`â(-»óóbº“ò0¥â<ùÉN„»ûûé—+Ž“®S%ž€'Oíkµ‹?Iûñ0¹ÿ¸ëøüõ؇¯ÙþrçŸZ† Ÿ6ºnŸ®^9Í>ÀÑèü¥3}x ÎJïú©-ÌžcNcX$Í¿•"œðaŸyWîg|úGê9úzuqSäÀ1vòÊʃ ]Ê_jô˜H‚ççÈ CñWX ´më¢ûûŸ}yþ\ ®rsË׿¹"xCƒy›/~Ïãíù#±7·+9'ê;ÊŒ_ÿԢɒ(¹ÝöÒCiÚ3ßʬ‰æógå–L¾¯)‡£¥F-zÑ>¯g¿µ–{ç»dWyén‰Mçåª[óbo¬­iZˆŽ?Û3WëvÚË—Õçå¹ZÛNû´SŽ{Žèù³Úð´Ô?žý°|^vÔÓ~“3Üó’r=”¦÷DÔcïbš¯‚y§£yW†ÐÃÊJ›aQ;ìâ)NkѺÒÛ÷ëϼЬ à”O--r[wa³3ä+Á÷¿§¨Øs/,²XƯE‡ñ?¢ã™ëÆ>òÛ¢¡Ù)ûZ~ßÙªÛ÷>šúöte9˜|…/«% Âj¥?^pÚ}é3äÊfsx½~çÅ,ѲÇ=_µ×ÿ¯ê0†½xïÞa¼I„G›Þ€uh9é¾lº¬‰[>¼6z;{&ÛYÓÍÙ7¼?öVºñ§Ù æXáÇÏh)äƒóßÌÜŸá»S«­“âóÇW©¸¥e,` À²ÜÍ…|ÿ…[ž¡Y¼fX?×+‡ƒ>ì@zŽ¿‘óP˜cWžå²mg®‰),Ö³_¶m&ø³’˜Yó¦kkˆº 4æÕGEˆÍh7;íXgé£÷§qú§B›ÿßÌèrúðß7c0V_Œá{G!‹p»ÈEt¹j]®˜Ýö~D#DòÂúôÑ´¦t¾­ŒXöÓg*ᙇ«=,Gs#nÚnIÑo…IV §]!ŸUÈ©ÔêÏaW<tjGY¡¤æþŽ%Ò)ÕPbôɾ9º;Dî!DÛy|‚iÑ9näp²o>­ôxÄüøidkÓK”ž#†Ep¶ñÈ;W@ú”ÕR‰_˜f“­8³(4=P>exßw*á–ó\wòK »ÝrÐõã*¬ÜÒÃAéhéß]1åcJ+=öáù=Œ‚·pÑOsž:óŠÂ»Š¯p·ñÉ/ûÄxšEö o‡‹Þ-*þ.îëãx7×¾«E¯Þš“½å "Çg?JŒ&3£Ä1ùº>Þ·]ôchðz ùñ¬‹çé\£w¥|îb‹ç/9ŒÊ«¼ØvÁtÛv°§oR2HÚÇs4—Ê“(óBï¦éMÌ{³Ÿn§ü(Íp²ížÓœsü`{K%œ÷·©ÁŽJƒ)6óuÔQíêB\í픓´BmWï‘÷œ¹ÁΆ?cÚng}*iÏV"Ê©]¼ƒ®¯gúÈò¿º-ÝrœmÚÄ'­ö²ŸB„—Z{W6OU½Â=iHšÉpÏ1“ÿ-\ºnàêö¿;>8®·¶Ø™Z¸óhÜv¿ôæ3›už#/Œ½^W»¥’}xž.|ΰÎÑ>’3v»åÝ“íŒc)—š%°Zýºì«o%­ôŒ p÷ùì{Kôøö›yj–¼eµ¢­Ú°çíIjª/ÊŽö°eñù?"tÐÓ"<íéã¢ä/vC ŸXßÉðyàI·$M6°Ó¶È>µ3×oöKÒò×Ý'4,ÇuÞZï %Ol©¶?®õÓHaµ$tÈ'nòe¯™F¦_èE›²îÂOzlkJ‰P‰÷Ω©-ÍÂ솦÷4¿ñÕßÚãUˡƗmGn×zÚ¡ÞŽè°=ÐóŸ¾îQŸi=žv°û|•ÂuÆÝ–’?¤[þºÖÏŸø¿Xó$+öê»kÑTÃöЧjéZIr‹tUrã¥4˜øÓ!pž•>2”<ž?þVŠ®4˜ò:ñ¯Çë:si,—¸fŠ^9£HLMg¼ðTf …›Ãu×LçãUãÚDì‡DžîRÂ!¥aOÿYê> |é;ÔÃ?¯(Ñu¶ºí5ïbÿ¾z¦MûÚÿ“p˜nÓ³Ö^÷_øÊ›‰Ã¯R³W¢+Dš¿ýüsñÕ û¿¹ù¸qS™î{”ª½æ]ì‹ïãFom¹~a¡.óø®¼…ó\¼¨”,§B®ÍVîÇÁ°©Ýl]k¶µ»°/¼¨ 9Êé2§=­Nj‘—W¿MzrÍWnf%*³ O8åìÌTtNFHÔy*§c¿Ýȶ¼XÔy0’n^Kš¤dyµ¨ë‘¶•Ù±ßn¤X~[Ôõ\ÛÊñØo7âWaÑÑ$iOq[®—€F0”ÏñØS4·¯K#•äÍ»è–OËw%ìªM4vÔ½ô±GIý'_|37{áîÊR-&q"‡\¸ÿÊuäòi´ø¢ßnd¿öéJ5F"œ› c®ÐÓ Ó­N¿ÝHa–‹÷¡^Ò$£/úåu£ Fcdl«mEp8?f’êm¾…2CñÛ¨âEtV48^“õÛÿKuDS—ƒÛ“3Ußêg§{ÿa)RàêÿË©Tw…ÎÒ ~ްÁùD…B¬h[u¸Ýg¨±¥¨ Ë-Ê“ï<_cÜõPÝJÙ5jÙ5ÿÀvÒÇ™SâùÎÀ„›ΰ”ðé°í’¦|ØR±ëiR=x»œ5Ûl%ƒ|ý½´aq¼¬¹+“”zY¯ŠvÊV©;›¿_Ua îK¢3¯:ŸB¢ÐK·õV.Iugwìz²>/f:M**Õ„nõ]½§¯ò­ô›©¨„Ð6ŒQuąߪ W }+1àˆuâb”«^#uÒl|úb—¸ ¿jýßü—ÃYQ¥Ÿ Š&\8_¨G õ²&{®"¦úTn®IßÔí3¯ok7:zþmå†DJégݽBªÖÖÜAWèô÷¯øR¯ÓÐÍXÌsA|}Úû]_q£ì–‡A¿qkŽØÞ»LNÍÅ>-N©ûñJ…AµŸ6â÷u¡ÔïVöWGbÝk“ÇŽ2&ÞÍw;cod¥<7?NΆÙ—fõt?ÜmcÞ?ÊÃ&üžÛ “çпóÁªQ…*:ëz}TtEeÝô ‹î©csýÄ[yŽûžWuWd×ÚO{1¦“•«ÕP,Šq<Ò‚ö?*›„ö•-7/«ø¶!Bb4±'ií=ƒôÈu2¥¥\¿K·å=åêi6¯s#DÐUÛ+b®Ž}*\tË)¦M·(¤{<ûnιÆöJr_à MÝ?FfX”Ô7L}RÔ¨6¿þHç¦ç´ÒõîʪN#~ý±pCƒzþîÊ4)ÅŠj·ûÀbŠ’zQ³•ž/%Ëo‹ºž½»²$bŒþc58̃“µ`gôŸîDžéÊÏ»+Ë/:ø!ÁòŠ*HDÔ¨Û}`a‰0²²ýSED#î?¶‘BN,«bO1?ö(©ÿ&—¾QâûÑÆzŽnÀ›X™¿çÁ“¨+!/¦[°>ý%°‘2¢®‡èVBI™þœÄEÈ»«[©'§¿„áþc@c!W×ñ% ÷hih§²vþFD#íc\y«øFÿØ£D'éÒùL±•g̽R®®ãKî?RÜÛ¦hNõéô"žc/‘QkÜft¢ûOÁÍy–4&ä/a^GÞ+?`ÞùJ?âNœî?Mþ¨<èÒùœ·… ¾JØ‹éÖÜt'BÔõ|Ü Ä…=…ûo Ë»«["¦úTJ¶§Àt»‘©>•Ò_ˆºƒûJ{ ÷q×¶mæô—àˆƒ5úÁbßýÓ^tÒ~í;9Õ“ÄZµ¥˜ó~nÆq*#N–«ëøØùˆn›nÒ«O¥d{”Z*©ëø–ï?½×B®Nd¡Èåt‡¯ž-aCI÷ÏW=ð.jñ%¸î?½V79ÅxF=— ÷óvÊmѺž]Rm––WÊý§ƒŠ@…ï n Ûo2Î7«p]d©o.¬¨­Z·¡È‚°áú5—U5ÝQsŽSÇ‚JkîæEÖÕÒÁD ÂËê C·±q ›UØ4S3IvŽ*¹è´˜öaJJ¬¨…÷ÌÝFà@‚òio;Í»¥ê1ñŽP ½Ýœ]Â5¢.Ð;QÓàž‚½\‰ïÈçm«o´Y7¢vÉ“GHJúªgY¬ác n måvx®<ÕˆNîÔe™8#Ú¨ÛeÉVEŒ´„Eá©G£ <“¹µ£!ˆOá%íz'V±@Ey¥OÓm£G’Fïv‹=¬š›< o'BÙ`Es!C+og´àNúºvcˆAzÝÖB)p1C­©CÍé9B¨d[ûhlï‹·ÚLu7o»«š”vg L3I¹™ò´•ϱ³yVqC¨pî î°PVG TTFãØ ñ÷ѳ™B‰¡°•~++ÊSðŒVò“M&D9^“ÀÖ©FôOgÕ›Û϶·m­£¼ [ÉŸš˜¨õ=aÑ,ТÌÛ³'åQŒË*”'c+E ãØš™}³ðɺß jª’4b‚ݸ—$µ•Ç=]Kžx…ZuIº½´®äQa‚‘¼/ÍÜV½CªyiÛ{K¬ Pmë{ÝzšÞ¼²â§#à‡Ñ¬Gº+ï­3¸™ïb=oã@D5lofÂXe:þªµOav3·Ý*‘…þ?íj³›yíVá·8Ù•:ÌnîITðN%ÑÖ§6ÓœO TxWE¬ï0ÓÒ0 Tð “ã¥ç2frù%Pá=/èîavsOZÅwÞuJ¢ÝOCï•J€¥º¬N5³ðî5¢Ah­õh=ç['ÃÜa¦Œ;[Y‹çðs­hº-×F—Ða‹˜ÝŽŸHjwt17,nGR¤‚3Êee´JTÔWªÔkº•å)x€)݉Ž%jèvêÆ­4‹ ø»¶áå…ú7m¹Ë¸cí‚Ê–Úî9²ª!Êã Y"‡²Š…@7—|.åY  TìWª¿ùufP\)ïF‰bÄ8ð¡K?ˆd`y4GqäwÀ±W…ä3*Â>€¡,žüVâÅ"ÃEÈÑÇÆ`@×2‚œ¨Ü´pðÃȰábg|)a›x ë¹­¶ùA,ñüÉp÷aˆë ‰°:î,¥0"t×ÚaØ0¨¤ƒo[¨æýCÉ#ˆT¼ì¼¹ Mìû;¼”²» æöËLJL"º¾“Q¶ 9øB&‚˜˜HôÊ•2q›~Ñ´Ü·›‘ã Š¸ýgÕÛ|òæ]/œjáÒ°ÝÀ8ò•îÂ)A¡ÑTj.:ržÁ›XR€ÏÝ‹2˜~}¯W©3vw#~&¢°z4B1?òiÂq Rá¼-Z`´ƒÌÛùAdWÜF¾VˆRI{e>u¾çâ8)ã æÔ†U ØpròwâKG¤Â÷äî/»gtÛw># #˜£fFŒà”@u‚£Çñ'âpˆÆž ¨›N9~0"YEËígø!0¤"RÀq'f”`‰a¥;$0£L +yDÀÒC:"8zš£ÃˆAû’îÂbщЮ{Xg˜<æ'±ûÑ3 e'&7“€ £œàEÿy2ɰºz©øñwÀB4B)šC©~è#MÓÅð¼sH¤7*µÁÃË^¦8Ì"Q·<"VŽLgB‡q˜â LOù4ÉxƒIC"‚ãÆðÑL1¬n:ñŽ+ä-Á¤W®³žF ‹Q}?Öƒ/ ˫ŸáÕ`aˆhI'Zö³"ðÃ$Í$¡w‘àrì{ˆº¸)™1>‚/’)z2K莌N˜4TǼ3Gh"IÃœážØ );ÕW6â{î¾¾àN° t˜9"®@ì 3n÷dF1‚D*"¾Í5!äF¤âþ;èNŒ lô<£Ç´N ã†Ò ê8Hâ stG8B÷ `Œ ‹aæ pq‚ÑȰ|¹}­"ÉèÆí£õ+o»? ˜ÝÍq ‰ † îÙÜ¿í' 2\TÉÝ¿í'ð1\Ü’»DZà "ùí(JϸG È¡œ"{6?>3¢Ñ-!æ’–1 •‰H…;1£A+ ‘Ší¤™È1¬ä›0#¦•¾IÉ\Ò2¶´R©ˆ˜À‰n­TD*ÜIßZ¹©.iI#5cXé iÜÃJ~½ö£´2©ðƒO´1‚F‚[‚Pp„Â`¾‘Ž€a ™nd}¹¥œHà;mÐ!F’ÙøŽuQJ B)I0æšTŠTëîÄŒyt‹HaˆÜ¿ä$Ã5ˆT¸ ¦Õöl„ÏK # §Ys|ä=àîV·ÃÊ.ÞHšþd>š Ô}ž(ˆ[‚;”>d;©¹‘c¸8ÜrX‡ödtT¿\ñš-UsG£þ¸£¸kƒKtô†>Íw ËNF"I V~gõàŽà‹Tø&›‡`FrG`Šo¢m̯Òð„œ—;ÅGÝ奈‡Ð’&x¢iéË= Í¡Yý!ì‰÷"G n ¹ÓYZr:‰Y9›¥–#@$¹£®9ºf9;;ã!ÚÙ1·ì€àv÷û šZa—oäîÉÅõSniæ-‘£\¼øÌ5Gs|B'/¼õà’/m” ˜aÍú‘n9´}ÿv ÁCw[¢äÛ1£&A+ìf‚Rp‰º{ ôlÄoï}à¥%¼€!#¸Ã´ÁV(óK8ãß@HÒc¾ò°×{œ#¸Äòþ ¯ìƒ$hšk”PÇA#= &¸gX^’KJpÉ4×À ó©ÑRȧæÎøÈ`âÄ‚¦À•<2ÝfrÍA•T2mïžïÀ™a2Ù…ò×»>`3?!•i@‘¸Ó˜YŠ{(ùã­8õ¡/P’™È3N¼!±-§ñå¥êpĵOÑ&Ž7àçpÉ«4ƒq’fNTe:`¢€Þž®=¡“iÂIø±|XÞ3VBÝtÔe&òð™Ñ°ÕçÁœ\3ˆ0œDM~¸deKû•Y—hç°ŸÚ+dúOÝT†›ŒBÅ7´bø)Ü¥¡ÔÂ4b%¼ˆ†*%#$w`Êt›ÿÀÉË=ÓEÿÈÜ€)Ó0JfGÅ ²R‰³§ø‡p€“áÝëÈI,Z!N¦á¦'·Òpá8ô¾y©0ͼ„r%ü(á •†á£d¬¤Øù¯¡Ô?Ü¢NøÀMp˘¢LƒOñœL‹ZØŒù›é?Õ“·ßAd¡XˆTLŸ?'Žrfo%üô„—q”ÿöòŸî¿„—µpË£dxéÉ-hNEr‹}'l…ˆ cœÝñ“3[+DÚÊq;Ãß  ´Ðœ.šEG>Í5º\GYz‚J0ÌD¤‚^›®Á =¹%hò˜É03,… Ñ:4ŸKw¯%¨ÃpÕjÓ4ÓT‚a*"`˜‘ ÷Z‚J0LC¤Âw]‚J0LG¤ÂwU‚J0Ì@¤Âý—4 ƒ=ÅøÈÍÀ%Ú]ãÈgVôD–  ýˆXs…æüÊdeI¹k¯‘é?uý™žŒ2\܈T¸ÿ>xBÑ©¸ÿ~ð#ð{ ÷_ʇ‹H…1Ætm¤9ÈCÿZþA~Éd­Z*‹W‡ÿÔMäPJOP1òˆ;”GdÏiÍ0Uñ¡™—VlFÖRM+•l®¾\âxMý€Œm ‘éP ä1£"‘ä>öˆ­$è ðøa”n8‘Hã¶ý—V¦å#¹gøJP‰,¦™€“ùáša.YÙÅ~å,:iœ #KOäQn+ý"I QÿÐÊ­—ý2rÜ :ÀÏ BQ¾‘=½ÚàË%‡€¦‹ö‘®a™éFœöРѣ‘é¿ÙžÈ—LÓÌ‹‡q©xi&o›žÀ~{NþýEžIa†ygyJ0Èü7¶䂦ºÓ ÓO‚\"îµÄ“ —ŽHE; ²¸é" ’ˆb¿‘T|‡e‚ptánÇOÄ„“áb!Rá•ý±„=½§ì{&¡‹\‰!/f¬7²"¥õ#?˜²ü'G$ÙÑdE8%;)å`‹µ gù(&>o†Uà–e?Ó´ÍJ2éÁËó¶ŠåbdˆtwÀL(Y4AŸ‡Òûé8h%qdÚn³™cQ˜?h ëBWî_ÜPB•§Ì¸Î˜²CtôÿaJ´Å¾=‹ðËQªA-ÿ×Ö¹%¸®ê@ôûd4¼óŸØªJBé}è*d›86ËÂèˆ@ì¿_ÂpªASØg` ì›S¾&L€ û݉äñkçSŽÃ¾d?‹ÎG[ÍMà’öËöG¢¬¡ ¯f¤ " jÅç‡@Z†—C»Â+U„âÜ"¸°E$¾ÏJÎûrV\ŠØ“F'0Cò쇴1r pq8›Ë²Úÿ  a†„SÂlHrÈ-Ëá‚òñ»[paéï!¬ˆ§[:zÂD$ "‰'"+Ûí;Æ VA&Až3Œ±¬L¡ ˜qˆ!àŠ1–Eia—L‰vZŽÇXN€‡Å arÉ”]1¨‰!'DhCV`Šjïc¬åpb× øXâÂÇT¨dFPå°h4õ7Ó µDŽ%š8,zÄK4ñËAâ°B’,²O9Š­D”d 8ކs…s‹™vØA'ˆ³ Š+B$ A¯\n?&B) ŒCY@—T˜¬ ×FE\Ò`²‚'\PÄ%&+xBEE\2`²‚·Ü ˆK&LVð„‹Š¸dÁdÅ‹§ìª¨=D/T²@ÙÑÞú—¡ËAx1ã„§Kû–‰íÁ¶ø2FÅX8Œ·!aù\|Ù t~áD'ìÄ N:LVðL4¤8 3z´ïô?Ôj.†€ãü‹3ÜÁ¾SV`Šå 11d‰;‘bɾ(ÂtKÐÄ ¸0¥µá®]ÑÈŠ( àâ>^EHb=ÉBö4Q£)ì-ÙQÑQ«PÉæº\hzX!¨ìnÊyÿ08 .„)Uñ¬ð²öcø# špdÉŠÍÇløßibœüû ä°>%rˆ&ìÐ#”$‘ÝúÉH☓ØÈá4I\ì*ñŠ*šPCž„DW9žý/zª€+ÎáÀî pw r‡3Äq¤ ˆ[à„wj‚ÆRœ‡„“#PÉñs…_ËùqCp" 9܉+Ñ  €0£ÐIöM,Ì`Îb‡‹pÒa²‚×ĈNLVðm”%6ÀÐbÅäñÒq‡ýÇß1‘b’X²ýr,†ì¼$"FBø Áðb*ÐHí¿u—íY¹ÿqÔH5y„ôàlb>¨1±l(ßÂNUx¥gй,ìžýØq颦ý?"4Ò]Ý©Y2‡”q[íî$þ°Q´$S¡”ËbqÁÐýÀæ?¹Ëኡ‡àÁ~ð$¶BÞ·xáLP Z\¾ ²U°Øî%÷\bÉáû%H®ÎÏ žæb̳¥ª¾ÿ¶`˜k Š\ôÇ6!·Ýà$1#ŽŠ;QJ§}SK;¢òGI%  Ì­b¢ÈŽ î,·®Ï JYâ‘Kw›}¼£¦(NŒ"Èáb‹=_f"{T,?;|ši‹8.Ù¤Päo\¢Ì åÀƒ)‡EƒÉŠÊñÄȨcé /Ò ^f{{\²‰%(‡¢%ûQ%(Çz‚“ z.‹™ì3(dÃdÅC™(Ǧã¬KûΕÃâ†Ý:ë4¤9c‡ò+2‘ˆ¿ô€– ÝaîøüÎÓÅoìVðQm€ÌN Óa·‚½›h¥¿( ìVð*i¢«(Ë Åh>+¢(Ðf¢!¹Ãiå&mÚÿD^‹“/²² Bè„#Ÿaw®¹?à–+î1¹ªp J‘0Ê ÑQÐ%"3`”¢£ KDf.§·4qË%÷ì@ÑÎ„É ž4¢øD{öo¢™)d¹t¢ÈÊ£&+ønÙ¤´Gñ¸v4Í\:¹,7hÆÜ‘{.R#ÒtˆDõ—‹LÄðˤ9,:LVð'Lí ª´àžñy¡”M»¸åº}f8²XŽ“{÷Æ`f4EÁѤqÉ#OØ/‡,1üÜnäéÈÎ;/Ã/¸?ßT V’ýІ„1"ëNËSà ¥qÉ  ŸvÚGÙ/A§‹{Ä2°¾ïØådæXÎA³áV8÷ˆp¬cÜþtÁðô²ØºÀ~(²îb±c*¦§ öÆsxÎ’€êƒ#oÃ7]!m‘u¢ý';¯¿Œ¢Tyºdöi¦E(¥‘j¾÷~^§ƒpYé h.óœ­d`º,æG„S+ƒ"Sí4—ž8¸ Ì9ˆÆZD('±’›ìt2““ßh˜°„›ñàH@ÆÔ£1#0¦p~Ûæ€`,Êeò{YÑD/;€G˜¤]$αN`¸‹Z_‚Œ/—Âá¨Dóañ°>x™ŒZy[b¦ñL‘–K—Æò0ã@±$ý¹X³0îbò¨çbeÍ"Æ<¥¨®¼Ô@Ÿ&EwÅeT¥!áö~±†gI—Nž™+l2Y!0Å>L±‹0©C†ðEqN²meU|3Šä˜mKáà2tx},®2¦Á¿Bš]ÝÃa['šÍp#cÈ"»È öo$ð§Z'wRÌW‚Á¥ó`6X1®¹D! Ô±–MÇe¼ö c°î§e‰WmË\ÅiÈ:& é¬ 3’fA©Oöpfr(Ø’‘`25ñ·k/´T\eƒØÊô1O庽%ÇA•¼CcÉà( ’ìH6¥@K°}&!íÐFÇ\Áµ4Av&Â6‚¤ /8íÝpÀÙ¸3SF8ÚT.eA#š; )´cÅqäˆp¸1Jö.Î7@£‰¾%‡#…hÔì&*?Õ‹ß’$´)F•6”•Š&™à¨Ñ†2Ç>8鈞BÆKO#X ]L:͹´MÚPòÉ\DqÄGôKú\#ÌYÏu\iy #Jn9ÚÉ+ ™†ˆãœ´ˆC”‰lD>VÉ fb™TTiCÉî$ÈÔ@¢FJuÖèü$¶Ñ4”°ÇÎ5î¤{THFµ oÌÂî÷1 ±êäxl„g+ñæ$Þ9ÏÑÉŠØ„Î%&ѧl²ñv¾Ÿr<ÚC¢vÖ¬h‰¥hûØ¿-@騦³>Ȫ;*Ñè¬C B%Oшú‘&m(Ùc÷$-ÚPò·OÌYI›6”B¢ ´H;°¡<MB)ÈØÔq°Ø­û€Žo÷‹t ›w`C©‘Àjü$ò¸¸ž^—Ì™ÇÁé>ÖH÷!VõôŠ`a’xf[Qñ‡~V²¡ÜÁO¦°šÃz±Ò_Â2Û•îÔð ‚h³Eöëy4-PKþù6ÂRü…˜„ ì¥v¹BF¡SO#³ðLÝèBrÏ5•â0µÝ¨æB"«Äò’lö™a#?Ét¹&@)QsÈ>+x‹æ@EfцòÈÑå'QÐ!9T]ä‡i•ìó)„9€Á-Ö[/§Fb¦’‚ˆ]."@ ’LjÈM—µ#É8vE&h$~z /ájÑ‚»•˜è1Õ¦ %]îûfĈ-.[ »8•M\uWrGTðì#•_#8Q!ãå2C,v¹}Îj;HЀ;/m6”H a$oM]O g­K¸è6•6ÿÿe&|ìA[Ž_ÿñ¤»Ü|#ä)&É‹¡l(78ŽG'¢Kî‡ÚƒÎ) §^ ꈸ }…¤•’ËÔ%žYQÂõ+7)vb}&6¦~¨&®¢3´™õ2¯¸’°žAT…9•ÊàP"¨ì…f°Zw`‹äHÅ/´–¿`5Ù„ºùŒÎWhhÌæ5b¯©Óý‹\䃊šçi¥ì>Ùqœ«XŒ` päÃêá¡ý£(Š/ݰ‚§T ),€ _ò,¤þã]CTFÓ&U™}²Q¬bU‚J„¨ K-yq1mºÕ2™ÍOÂ.ÌžkŽZ ½è§V~íŒuá~Ç 5? ¿ˆ^¹ð¹>bs†#„wm+‘€‰|õÃwE¨µÛVÝc/t5_î¹^-cú–‚Šª²¹ã…¡=‡²/Uè#¥<@•(oÓŠòqWÅL+«Z:ã©™$çA·ê¸ÁƒWÝã¹ãüæÖ¢¨!Í髒ணÙã¶F+J-´ÖùA(fÿ7™ƒZpÕ•ƒÎbL@ïøÕÃ!¬Ê/oÎiâ­(ÙÕÒ¦c™YQ"|uQU<ªeõû±ß’ðͼ͖ÜÊ“5â;Ôž)1ýuv ìk臼UiQ`ëÝZÑ ª«?×2çÑHt³ÿ#\À2ÔäÌaOxöÌÃaÎ2gîˆZ ÿk•'®*øÿÒŽ'—5g»Jª ÌÐ+Jvö«/²Ûì¶A Z«t/F¿-~*>Ôçú/ñÛU} MýÕ4"œÓ[ÅÿÔø§âøJô.Ið:â=þcKzãÙí÷‡L?û_Ï‚úfŠ2Øñª“…U0ÙCóêÆcMÁ Ùxv¿÷3ý*£m7#ár,õWãÜ÷À2iNÖ§¾ªòûÕÉ‘`@¡Ó qN¡0Âmâ¾oC¾u94bœ¬=V•¸h`…‰‰¸ ©Kr G[¿Q’ð—c§C¶©Ì—Eú«¨®G±‰ÃÒ2 üœ+ÉŒ@@Áf=p혛®žˆÆý `u¾tÔ¬\{î> Ñ÷mµ!ü0_aXn =äÆë~j[Š{¼ˆÞ½ºû§G…ý±gÃì±í )XNŠEA†:ñáTn?¥ ”ä&Cu·‹ì€J#Á;ê@ÄßˆÕæ%&\Qß L·ÈÇJ–x“N?“’ÉÓ³Ô’ùP¬e°W‘´±RèXX3pR;ËÊü!9&‰ððΫ¬º9 w¨ÔÈOM5ÕLq§‰ç_Ž4Y÷ ô=W$žÊã®"\géu'ûrÄÐ.€(²’4kСy¸^UZ&ÃC24 2óÔÎŒ-бÈÝò€ÊðkŠÚ5Õ9EºªáÿÊÅï~‰¯''XÆ£ñÔm„Ãóô=H È\¢øû‡ ]E«Ø™(¹1J çÌ$Z-Ÿ'}?Ì*ѣɒÜ–%% [ĤPŸ 5M*ÍìMæö‡@6oÐDü_"ìÁ–¤Á&•.ÁL*ªr$6| èƒ}…¶&ÊdÀÐíΓ ‹ÚiÈÇ´¤Á†³ŠöúpTxH0lJ!ªH_‚Ë:Ø›Pýƒ† >iGYd–€LÇæ²þ‰> Eªl tmK¨IZlCƒhÑàH^FPbCTPàXÆúC¤M"݇«‚47Í(5àðHaPgEM“Ö"ÆLøpR"”—»vÂÇ#F˜q,™%S‘ŒØ¨êWYŠ€|H;J]y¾uMÏh"¬ø S9q…íœÞ˜Ù5]Tq:¡òR¯óZŸV°bI‘F2êk³9® GæÓ|qø“÷ ªœ¿o¢ÓÜØ¤ÕÙOfŸž ÇFíRÿ§X£Óg¥åßèããÏF;J×ÕÂ}QÛT¬ &‡T|n;Ãþp2¸ôÿѦ©ÌDIfâÄßðQÄ’BMXÕÿÁ‘ Wa?ÿGõ"”M5ü_ýOÞ$Lòi™¼@Å%ˉ ÉÒR€²†h::RJ)²‰4x±9YA:qVqd ícJ×2c§ýå¥Ç’TUq¥~ûiÉuMz›ö†\Γ¶šÉ T…!x²¡šÙ<=xY_SdÚ¤½œ5zœ.£™©P„—ìѯS9Fj$§çRÊÍC– j%Ç]ÌöéAÉÌ番þ£jΙ „ÙT¯¡óºæè™¼N´ú™R™³4ýï0Ê¥v²ì·óóì•ÈÚ~óÅ=Ÿ?¡ÇðN¤p#VÊØêMâ(Ö_ãþ78nMµ%F˜”Û›j wÎðÁ@f—¹kÉGOðIŠ«$8 ºýïð º\Cnˆ™Gb^GÑãôçtÔ]áçýUì>ðss~Ü6ØLùƒ¶‚Yê Rw gÞä̓™—›ÕÏä/Í6KFV4A³9e»4ßM|Írð“9‹=ƒ<(œ™÷8çFùŸTó³#7iYíña"EL"[&­o@Pgw2ý“õ^—z _"M,ZÐ÷g…B²‰Ô›£í‚7”9lF.udÍшûK±çO‰‚V/ZÓSe·eëE¿_Ï›õŠó?p¶Ö"„uYE‹#G]-R´ò³ËÃߪÒYµJ;€—Ié[e¶ÛŠŽï½£ÍŠ6N½W†É<|:‚Vh½fì•u%Ê=®¬òãÖýºòZÛ¥äu¨„‹‡9u¥¥c,å.¢­-4tɦ¥³¦UáÎâVÜ8̬Á"åšÂœÕq•ÒÞt›u^Åš%¨L[ºD#I»’NtÕD¶DÔÞ4¤LÛTrg¹='cé Píÿ‚1º(!ªp«ºÈ~T{ãÁ섳é^Þ¡×ј?7×–„ªÎ³Ø>½8'{"\'Ñdzú…‚DÝ…ÆK‰QƒŠiGÙ?™TGb[ú¢VO×Õ2ÑÕ€ÈÌýŸÿ@kFf^{_ €©ÒÕ“ç—´ŽÉ÷,W»¶¨çšgµìî©îÖâ§Ïçénýªõù¢s¿í/(j%ZíX¹‹•é°Ëaÿƒ®]ÁÔúµ#¨µ«µ¾…Œ¶3ñ/÷ _ÛЀ(®ð¡¥‡]3ÕîÀÖ®ë[7aò líÚ®¾…„¸¿ì9nWÖâ:ü²»°]ÄhŸ;-ó>‡R•ø}ÃGÙ.©‡WŸ… Ûõ—j [›~º?¢.º8לüH‰±Ø.d® p›ÊC;J} p€Ùø„ÌÕîÁÕ„Ì'©º£ñXa0{CßA\`<±]!sýA[–v”:½…¶v9fÅ…ÌUÐû"´î‹Úþ£²––KœÛEÌ5nn)j¸iwLã­œ€ÚEØe1SÒ&óIÀÌñ8mÆ[Âû‚Ž4準ŒÊ´£¼œóB°r¢ÿ[ÄY%-ŸÄÙ-‘°fyßß¼¿0;"Óܶ®ì$ö `[æHÝ#û Ö› ÚQºÃAµ¥«f;Ẵÿ˜íf½VÚ‚Py¼v1ïveu晞8‡f‰¶](­‘ix?ÎíÚÄa÷¦xkIN :º1€L;›3¨{Êu|%ÐöÅTuse)¢×–³T üÚ»ïþhÐ]%Y]A~Òö˜úÆ\Ägi£×ÍÜ@×^ly ìuÑy„«q,AÀÁδ£¼?*´g¹‚q]Ôù‰’Xp¬þÀüÜû'ˆ+¬–Æ“ ‚©lÄ]¶á© Ðm—›}º! =:»ð´¦3À¶*l^LCÈm"Oz¶ ×+N+ô¢v 7#t¥ˆc¯\BƒX-zU ¶^ȯFFΨÇk,!ÙDRÑîÌJÝDWО`Ô^xµ±ÆVo~‚rùe}u.qל|Çka¶(jßÈ“|ú½ŸÛÖBA“§FÞE\y&š|ð‚Å6ê‹v`q;ˆÁo8‘˜2ä}ÚâO+ì“¿Ž@ãÚB4ÄÍQöƒXs`oaÚ › !‹í(GÑy‹àéˆR­ŒÊ˜ì j fR&"ÕÌ®4ª×ii¿:@Ç®¥5W¥ÜP6”˜/‚K£.zâÅ%ëzpZP5"pJ¨âÞLn·Äc8c†ö}¥ )¥îd;5úp~Ô“ -m¡+þM¨%A*Šº+ƒ2 E©ÜSAæ 7Õõ'‚Ì GrâÀŽ ôþ¡Ö$ŒC^©“´é^["M²çÐþУTt‹oß)ø‡!‹ûâ+À£é9…põ=’‡ây½#dKþ<íÛÖœpÒRx•9DÁ9¼êÊ}Çy@¢&\÷JŸ‰Ya§ÔE-qèú<ÞtËIvf¸ºawö¤_ì»ÄC¾FðbK!V§ÕÑŸVìéÁÕˆåëÁCûr£ÝoˆUöoûàÌ¢¡_ŠÕý`èÐV¹ïν3ì]hJ-¶Ü»2”)Á˜Ý MGâà1)ðÛR@ÕysÓŽR=/R<‰7í(´J¢Ò¤8x Ó5Qé H:†ÓG¥7(qèDZ‚¾–P“ûÍcP¾Ô„†-çÐ1ÜŸ é/}r¿q ˆp#»G[Ãùà!hü6¸ßDƒ”èܨ3Ÿ×íI\JGìËäÖ4û"ÅU;OÂNÒí HŠÃCÃ)”J%#í‡ö ªÁ=MaU÷µ´W;Ú7‘b R±[#1$‡ì2ô¾87á¡Z¸lQœÛ„ƒ3¼a©ûÙ’+—>XL˜j$ù‰(*Eƒ{¥#˜‰%[ ¨v99©…®ú‹{:ƒH“jÈóIY£ÅðÝ&‡Ú?^í 纪ü"¢7@Œæðf©Øíp»> #; qdw5‡_¹ÿ2÷ˆ/ð:Øe´ïGî› ñ/‡Žˆ )îЈ –öíÊíÊ …Ôm_c^“6hf}ÁVÙ»ÚoçÄÉ‘Ÿq`Äcv6ñcq%‰q8ˆ$–Ìœ:67ÉçC;hýymP³–‰1agû!JÌ+nŸ¿qÖ.'˽nZ—;©ø"´'qå”t:RÚÏ‹¯¶sþõ„Ž?ó‰Ÿzb’°“Ï–e>Ñlœ•©=£¤¨mE•-œùØHåZs‡éÈDÝ!ò”—C{8¥³¬×‡ßŽa‡»ÓqôË$DëÍJóg5¢8ý®ÈÂÙÐ3”Ä9pdãv¹ZŽ’)NÚ˜|78iÞ,ÅÅ“z¹9®«´‚(/ié!Öá^.Ç?Σ—jΨ_8N °ÆràÑr,ÄŶĸÔþX±€~„@!å(ìÃù¾?2«¤Ìé`ˆ´Ø‰&ÞM=†‰¢Ç]ØôG-ލߒñC¶dwVup ±ÔvDÁ.”lr' ´>¨¶Ì)ÚÄY+^q,³8OºãáXØÅ”ã3)’ùRˆrÔö|m”ËñÏÓÒtç'E+ƒÁÑ`¶ò#Âð,á@$IWÇO{ÿ?¤y¥ê¡íÿB&ã|1j2æKnëö`ȯ£Uómq"tll?Xÿؘø7›£ä;’(8uüz$-pœ2iG©ÛXB>o1Œâ¸Ï8Ù"n|ŸC’à 4œ=ã$A“^'¿øžýŸ€eæO2àÄáOï’°¤2àÄOq³Ó_O$I/8dq³ÓßH$I/è>Z8VâÍ 8qäÓy^ô·IÒ Z_‚xr'’¤všÎqñäI$I/ì4õ¿xò&’¤ôšó| J:IÚQV©ZbÄ 8Ùk"çîñÈG’“^Ðk"g'¿žH’^Ðk"çL¢NùB¯‰œ]UýƤôÚXŸ€¾¡Íî$ån¡ë†=/ iþ›ê Ž¥¦Žj¼xã<¯=麀—qyÙ[ÞD•;Q¥óæòÁ©yÕ¾9[ 9>uÕœ¯eOáI‚à6;ëõ’•v”n3ßH^ÐùgWÕ€@âßdÇMÞŠ§ör%^oå¿CT¼Iƒ‡ÉmzR›‘ƒ¡Õ8Õe:÷÷þ©ˆïcÑ¿ªõT §bÄÝ0×£ÆþË¢˜"Ì»Än„yAÈD¡§I“pñ—<§‹HƒS¡Æ.Zë¬ š$?Nâ"ñ¯'üÚËAJKYN•'‘¨nƉ» ¹7N4˜Âñž sjég4^Ö­ÂìúK¡‘'ça{U4òxfKœHŽ$-Nv/Ð"™d=]´ØêÑ¥7åÔ9¸så|¬øŸÉ£<=ÅñeÈ3Nv¿CBÎPý?<éÌסá¯j³OÃáäçŽtçÙ|ýäTxøþ¿Ð/×O±¼köðÍCšÒN€G6¾¢gÙÉ7£Ø¿®c»B‰N›‡#{kOµQÞWY–ØÐk«óÛe¶qÄ*Ü9Åö>µ”Ÿ‘YðêÙ4s–Û‡‰Å5E‚×"~d6ÃD³ÛãkAžn)îü'B›Ä±Æ…÷^±äP »3O1,™é²C0»þ¢Ò—›ÑÎöQ“-¼iŽr‹æYõJõ@¤¢ ;@g‘…w¿5`rEâ:šØò m"€J:³T‡®¦TU°õh´ö ±yÐ0Óº0ŒW ©Q»Ÿ„&ᎹkñõÜRa>ÎZ¯Âó•h…kZi]ôCÖhFr[…ÀÑðÿä›’“³~¯"fG³åET#ú!Y­²ÿ‰çMöD娋 °Ø0æÂƒóZS Ô¢rá«os$[ÁcT­ªɉäÈTà+®Ê»TªoiœîŠ¢©ÙºÈϪ!ĨÉ)z©Ž¡›:°¸¶ØiÂtWÕLT´£Äå€ ¶xnHÔ^¯ ×"EC R«–ÓëFÕÔþ²ÃxM]ÚÇåQ9¶˜RÕÐ:?­@4óMìêîh‘=ùjòâ@¦CÀÎ/ƒÔnŠøí ¨Åó°²o‡+R²6~Kõ»8ï$£nV?!ÞM,F/Üs„â§’XŒ^xÌêñSM,F/èñ§óSK,F/èK}áÎO=±Ø¡¥†àâ§‘XŒ^ÐkbOç§ùXlÐ zMߥóÓJ,F/è5ÙŠîvb1zA¯‰=ÅOb”GQ‹½Ö=*U±µ ¨Å^óø/éN”õ(j±×|zCò‹Ñ {í~V"¨–XŒ^ÐkbÏLSÎm‹v”Ž?3TSýA/è5¤>7ÍY‚Ã2¾-vλ”½1é}ö%OŠ'?™´ÿ!«1óÆxãfP3•PDW}Á3\8Å7 ãÕ³H^–Ù+âpæ*ÚÙ>Åõ„XKøé(†^g·E´_Õr‘Š0µ¦V/¢ö¬¬àF…UêŠãú±^lïËVêŠxíº”hµxÓƒ‚ž2ÆéÎõGõÐL"}-Æû2”Ýeƒ"”g-øv¢ 6£§¶v”ªŽRJ~[,Ó¤ôNf=ñ$Šà.>¿éuRd®‹âVjSy‹Tµ–¶ºš ‹¸›Ây°4b› ;> #“-öÜòGï¶¢{Mµª@fÓɉДxnj"ÎÄ,9Üq9)J~Í;ãPk8\­uDcíñÖÄKðEº‚2ù)ì—Ežäë}–£RÈDžrK \‚Þ•@âÖãÞ8ñÚŽ#Y8Òµ;؆ÌD³0Œ:âòý¨› qƒ]÷m9Þs±ÑŸ%¯ô0e‰ß¼K«®·¸Üœ1u™¬ôkwõo–3~¶ÂÍ]¹˜¬_ͣƟˆµqf'Ê5b¬ËyA–ÜÒ|ɼÆtðÁ·’ECd£7ÁŽÄ…Ö„³013ó{='ýçë‘ a¼M¼ƒ:£*ûCXdœ‡i8nêÕSK?mjôäÔg÷(³˜™Ä Ìôë³ô…–\°ØœÊ½iíxIF—Y–ËËHm(ê¦wGC‹ŸÏ-Í¿¬ñY•gæç¦`ÿã®rü!3MfŠž9‡ñýÊÏx5-Zºd\Â’\æV®éNdA[ó·ohï¤6>û}è׸ –K(¶¨j৺R Œè¶ˆ¤n>AVŠ“Ív$5‰<üÕ¸¾õ—ó%Gb´kÖ´›?¸F²¢r—ú/ÒÝ ­]^må”±Ôôõà ÜDv!'‡—åYh}„|ºÞ´ò¬áTÅSr«rlÕGU<ÉwQ.‰ÅAX9‚f0—"aÝa‹ž¼­@O¿À¶Õmÿ{øíEËÜߥÝʪ‘f[‰²æóÂþÜ:ÅÝÊj|­“«WmMcvsyÀEšiòtƒç’âUÞÎæ«xKÛc©/@`U¤MÚQj °ª Òí(5ÌXµi›v”Š~ ¬z‚4vKu¿Àj$HcÇ£T¼•8–r%¬;ÿ¨¶úà&ÔZ Å<ȵ¤á›aßêÜáíJ·/AçIÀÆë0ajótÞäqÈ× m„¼û ¾ÊtG"ÛÃCw;ó[ÀÕæW è*¬lž4`ÍSΧO”Yƒ®„4è5¾‰›ˆ®àfÃåBIX›ß˜¢þÌ5c˜0¯Þ?a²Íî’k)§+7Ï5Ž]V àÚÞ½³“IŽv”÷±Ø_Žpð2‘•ê‘Ùƒ7ËZ/«üÃW‚·Ûz7À-Pm³q[Ä’JF%]o~“CHøcyD,EÏÈhÎ`]ʲy6m}ß캙8®›1jKèðŽ½¶ëÝ:KÝx ÷5Z¯ýËq$)ÄßIV›¿ôPd¯‡\GBpWRŽ=geó+À¡l.‹ìœfãL æ6Ïš_Š«n%S-€äÉîEß#Ù›ÃÖ"o@Á+ÏÈ7\ôŸeD9@²Íåó ’¦È.àêͶ gÈÚ¶nÌ ¨âžðTŽnº÷l ’ññAmÈËä;m–[Ô¤b6 ±?´,m!d××°CvQQ ´˜ÎOö¯½3áÌq©ˆKV|‡9H+ð>_{cê¶&0š¬˜ö²êåûPë‹8}mñ-6ôÃ\ ¯ª ¡PÈ«3•Íé×kÏ î©ÁJŒsñE\ë,}…› >=òªèjqN-ß1†:)¶²4uU¤4ÿÐçÁŠt ¡¬‡ð‚‘ðÓ;ܣɈáQèc™@¥4š"·€”º[éM@TfÒ¾úQpNaOÐô9ïÃPÚ`ÇÍ£+±‘à¤æ’(ê!Ø.Ü"ú`©O Gqt_ʆ´/÷œ7;*2O:ÝTZÃ×.U[lR~ŽÖº}§Ê#úÖzMꉟØ)¸U°H:§‹Ôâ3Qyj“§ìÃ)%ÐÇ2‹>ÌRíñÌÁ^]T;1žh@ÄŸƒn;EcbžÃYdÚQòša™G[ˆ¼8—óŸÉ‹@Š+Žß@eÍŠÈÕÎ4£ÔØY›k‰¡ØC¥¾„ÒA?G=èÁ¹™Hkýð{>ÂF~Õ"ä¶u­DJÎ=+1½4¶–¯u|mÚÃUº_,8:¸û¢U¥*< ãù¨ ·àâ³ÃœÉ‹ìcLÔøÃ6î n'iƒ”'Z¢,Šì†ÓøáÈòºÍ„?]^%ÚZÇȃSã×ÇnÜmtðàˆøÈR8Su›´ÄAb.4毸ÃS ¥3Ö‰V§ñjlþ$ÝÂÅ«ØÉž߬ ü‡:w=Ù8„6ì iMLä;ÖÜìTƒNc/ qðLYê1«`å*Ú·d$d¢õÊ™'FD¼Þ6¨:‚Ä•h!LÏ úÙ ¼xd—"”±·ÇW=vÐ{§38Í'š:¢¶óÚrÝÚ¬Þ@¢Ó¹î.˜§Ìã¢?ôå$ÖzͶˆi¥èÔC°=¸ì^°÷j¹ˆ×ÿ}pD(:ì2ž̶pç·äyp¸ÖÔoä~0¶¦9G¸€Aå°Ë†B\Ë91ñÛÀ‘ö‰KRè ö\ÄO0»¼A-M°CÑAÊQ ¿Î¼M°…’›DßIGÈN:ôuØI“/k¸.Ð!–P5s‘ëyÕ5 —SøÝ¿ëF= f¬;4¡‘à@`y†0[™ptpÔÇñq—GMEB@Óqâ.êà“3‚ -2Ör@âj’d,³žDSIÙ])0Ã9®7\¾¥£ç„:ÞuHO†?èÚz1ˆ×>’XE#b\Â%^—¡µ-pi‡ÊþãŒB,Ý8HKŸÀ'òÕLîìÞ1¹båÞîÆªÇ\ŸÅšË7Ï7;ûTáTÓ ÉX ¡®½U>;ÙŠ>mßâC§Ñþ) ×÷ÚÇfÞ vûeÙÍÈÚqüµ·öõ¼*L7ÔÓ‚½Ym©‹ÛœÑ ˜Ákà+[£eS‰7ɬŠ,† 6™ Æ-‚ÇXgŸtsƒê‹fó¢Ôâ?;OöG ^C8 8\üKX%Ïý©]ŸjûȉMܧï¼…) Œ¿u4`=ÓÙäÕ~áì(æ 7°â±ÕÚ¯‘)â?gÄî‹éMzµlrxes^"7è%~Àòô 79$YU7ê~vojIæÑ7eÇ}à¿«ÛÝσ/‘Ò9,9¡BŒÔ"2åÈew³ÏÒ¶¶ªÔÈ©ìIÉZ²²-KSDD#ÑÖ¥Ýʫ׫°{ÝY¯0Ó•èK¤v8ÿï)·¸­t¿Ò>í /Ñ;ÿöÏãªÄdNG—åàÚ~l2„KAGeçŒÌ‡Z9#aø ONè)‰‘.K -ùÞ´£Ô¸YtÔiÚQê DZìz+o)¢  G†£™õ¡ŠOM®¢ÙV$k?³prGÜÉø©ñÕmK¿:lõ$ª}΋‰®DIÜ•G,''pïk“”J ê“›¸K,7Yîüa5bÓ-,ü Œ(EÊK÷¥‘•.¾Ž[=ˆRúà귲Ā@unÛTòÇï³xCZ‚›ne©Ç`Ïóë•Û™½õVÞ±ø›K¬Æáåw 8§R`©fÒŒ’#¦p½ìo¢«£¨°ºhËUH¹û.ðõ.A±†d3S³zð‰„vÿa¯Kj)EV(ô„f(¼¶ø _˜] D*ÑL¥‰›ÌÑêÚžÜÞˆl=ÕLG`Ø&œfduÕ”Gá–¤CÔG´¡þµu¯-ë‡Ã\  ÛÁN?î6rþ"@q“hÛX;KPã‘X± ­.gž ¦­·™´•É\‰Yî›^?ªžX©<ÚÒæ1 Þ$^(qëQý?[ª®gÿ`q¨ä‚TE"ó€ÖUGpËË鉢3HlH) çöÑÜ'5 >n«Ž^»FvVývÆ}òäe<µÃ³¹Zb× &ž";}s©}å|l8*…°ÈÙ÷_|z‹”™Z‘åón¼ˆ4õyc³ˆN…| ¤–`ºÖó8Ëq ;Ε\3ÄP€­ÿ©8 ¸3ûE²Ü|L­„Á/W°)ÍÇdús*/ßwÆÑUÈ_PJƒ6‹ŒpÅ‘­l$ÈJÌ“°X(Dµµvw3}é騏ÂÙ‹?ã?=±[#jmåµÝhÌ>}éãàÛEmRhG¸t €.ÓM{çÙÖÉz[[ËÒÙ¥½€‹¦­Ë0mµÀV/ †#€]’ TÃá~¥ârñ¿£ekMþSoôg“Ù¦½|ôµØ÷aƒìÍQâ®4‘´²Íù…}ÿ£à±@7Üÿã¹q j§/ŽUÃ2’”–f ¹^îáš²ø€Upß|\ú—¿gÄHÕ1¡úÃD–8f:ÁH¿0¹!ª¬|Å!‡ÞôO’IàXS®®O?“:yæ‡y,ÅIf¨¶y{›Í>þM`7¿O,‰$Íxê¡ã1Ö¢ÜsHR#ás2ñÀEî¬\¹ñäÀpzæô¹D°H! \å@ÀðF%hkiš™œBÈ'â¯8'\Ù3‰aôÐ_ÓAÊ뚆#öªîgžòçÌ£PQÓF©? SÆ“úž±3n¢”™èEQ§»Bu9Ü$«ˆ^t[‡åŠ“GÑ‹.¶hyñÿŒ iƒzŠƒíú¨ðÁí–PU(ãž®v‡NhéA@ŽL­$" À”ú#Ú‰Jºh¼“Ì<:ñÈHœ¢Û'FªçÐAýmY?Ÿ¶<Î(Sªú´„ö´ eIÕ\ë4®²m©ºkD‘ÑH5\<’8…s+§R(R¢©B,Ò£T©¶kFz‚”&Õqm@ÊH¡.Õu­ø„õ½¬·­`“+ªSßךT7±ŽIªæZ!Œy äÁÍ!"çÔÇEã)eºRw,b‰sÞtçÊnV3Õá‡,sº¾¢·`BT9˜šØ¸r˜IO"n~—x˜'ÄAf8´ËW|2†¸tҌݶîÑDŽËãý¡—E)6ת7ønò žÙì¥Ö\ ryì#]"ÑŠ9 2:È—À(¿…Îr²ð¤&}¥h»¨2ªIJ¶`íðNÒà–«ÉÐRä¬Òk®îþ™<ä"iDÞv´ó—fpC³Ö¸C½òD!—LG p€:ÞuçÁpŒ^Ù+<tÝM ¡³¤«ø˜†z‘M‹ìD&°Žgm]ê¿æÎÍ7€!û±Hûš…ÐÀ›` ö¾6˜;¸Ÿf>69Ž2&Ÿ.ç4p´‚)F‹àæøAÝÉT“8jâ_çyPc|b]ÂW„.ß(íOwå°cµXPèêsòýkèö¿iõ!J¿c40 -C®Æ¨ÖÆ¢ôö°ÉöžÓa¼†®WH@ fü׬û '[-µb §!÷öÀëIX¬y´'NTcˆyg`Ë%·^\û µUÛš½0™Åš `Žxýc?y[=$`üÿí?I¾ÿ1E8†Ô6rœ6̪©´Œ'`Ù!Ãzóßz ¬ñŠHi¼ìd2ã÷€éÌý€ÅV%³³ÅŒèÊXƒ¬èH¦Á/† B#B“XÖ ùD˜<„Íù¢–K8C=‚Cs,çF.9\°IÅăóà”vŒ¶À›ÁL¾èÀ¨H3 ƒëøä‘á7Ï' È9îöMètÉÎÜ‚ËéG1ÞM¾dŠÃÉÒÓ"ž×TèÍ9¾ŒUopa£îÈ/F˜/¾Jܯ†±Ç5¢ :ì,ÂŒk*³Ž^.S‘W4ê†ÓÝÉýxA¢ÛÀþe¶j•÷é͇‡¼Ÿõ¤eÐÁ/I nB;âdó‘»7ƒRÒÝ1y©X„‘ÁÍ|DC-ˆ¤qܨ±a ÉM¤B}“×ЋD¨lJÊßPMEâQ»u JÐ*ô~œ¡ 2i›B’F'’NI æc6“ˆU8è?¶cq"æ"uŠ©…†´·¸ÖE¾Gs¨u̦XÈœ ¿a…Zt|;AÊ’ï6†F¹×ÇC÷Ò GÜØpqBQ+¼t*¬å¡‰¤•f8B‡î“"§Í_ŸN!Á%UN›¯Í~9ú4y2³MØÖ¨…CpáH—»6ü)r‰C†Ü™Ù ]þj°Hè7ÍKàѸ̃“ŒsPrq¨”›ôèû`ÃrH´‚rSåÎ÷D)%µâù]y#HSÛÀ‘_-Þ€œòÜ’/ªT'´…GWÇcš&vš!µ) ’Ÿ HľzŒÆ?Ô>‰Z`¸JXEgQTtx;£PàJåÑ!àÉ #ZÍY&¸0ã B3ñÎÃC×i%¤…N[S(ü¢l,®çŽNЏGKUUIE½YûC.È# }CFÀ¡™éÆ­BÐ »&#‰‡þû/×°8lu’<§VLQú¾yH¼[´ûÚnÂËtGRLp§¹ÇéëáÜxým,D/“³"BTÁ$ÃM ËÁo#“EɈÁˆ—„ºVo"ãCÖX§AÊ@ &5–܈å0K¦^Ùápœy¿ÿÚÀ\y+¹„8À@—oì2`ìüiš ¬dmô‚AVõ€¢óQÁ„ˆÂvª‹Ï/@ˆ)l•ý£êűÉZMyc>;îºl,ýƒávÇŒ¡PMw§ÄØóÿðÂÞ®pÝÐ[ÍÙòÉj%%4&Œ9²Ñ›¯)+Ck¹qÀ‰_ ZûZTa/÷k‘kØí\|Z·Ç6-ô+³ôª¨±yNÕÖ/«6y@­¶ÛDŸÿˆú€x`scotch_6.0.9/grf/4elt.xyz.gz0000644000302600021200000072140113303015264016100 0ustar pelegrinpelegrin‹áøØ1ef_4elt.xyztý[²&˪Œ>Wµ¢ÞesXÆhúßáŒe&ó˶j3sä—ÄÇéÛÚßþûýù÷_û‘où¾~Çÿý?_û÷ï¿þÓ®¬û}óëúOß¿¿†guÙß·Ãpÿ|íîqï–k††j±×½g43ü×~î¸séYÛ ‡޳Û÷­ùùïÏ^û5œÍ ' ׺ó\ý?ËŸ¸~Æi}|­¯i†Ë çúcæxO?G†þ–¯÷e†›†sî¥o~fwÃöóé»Lü·b†Ç ÇÜMÿ2"þ´üHÓ7Ö?=üÇ ‡,¼¢|ï‰Kõú«eûw¼4ìúÁ:þôŒÏÓÖíþðŸþ6sMßãӲݲÿè?´O¿Ã>îóM_}‰þq9ñsÆéŸþÓ’îÏ4çôq¾©oÐZ|¡%[_àÎé_¨™wz¿s«åö_þŸülý^úB²Ü;ÍÜÓõƒè7ÒÅáï¹õGÎ¥?²M_ÍüÓ¿ÑðÙû‰ß>åv}!ý¿ü=ÍA­­1Ôm²âµ­oÏájæ!ýêõÛ[÷çëçS§Ÿîjæ¢OfÃW:é¢={Óå.ñÛÍGŸ¾•þ©¹vüué[zuyÙ{vó‘~Ña¹Ò›"¢¿ýúÚúÛá£ûs¦ìy×=¶ðåõ¯|úåûûž½ÿ±M0®nƒ=ÍÉüJó`OÙæƒå åºŒ>ýNŸ[N}¦ú³ü¢>i9/×b¿_<óþÞ,û¢åø°3便Ž/¯ÿ&okÀrÓ²ßuö§Î–çgë’Õyï ÉÏí§éq2Öõ¿¾ÔŸ~â;|%w¡¥î·ŽU2ý=ÕGãÓoQ-/-Ç”võ·ŸíÏÔW×_}¿6ßy4>Z¶»ôXÑïÜâÍ®kG¯¥Ñh©ÿ°ôT™#¿¼.mÁ>¶þøèà Â?·µò™ºD°¹÷qËa–'ZÛþ§x&éi‹•¼üIË¡g$\·†ÿõ¡Ûu bócn,Zê’xÀìñžê!] ê£÷Û·Yö¥ñèÖñ¿¾Ιºµtú±4-¿;çß}¿}é_GdÿÞW‚öÖ¶Ü#ï¯cѨÑÖmwŸå¥å¹]OÄvý8Ç{ö~„·ƒ+çg–sà*™ûù}ê¢Ñ3I—ló•<›Yê5TŽÿÎÏlãÀmoÍÏN˾›.œ>âËßÝËIO›ÿø×‡YŽ·Äi¾>õÜmâHí×Ï9iÙVãÂí~ü$}¡ý~|´~ô-»þ"5N¿_lÀ֎i©ÇêÒ½¹v®%ýš<Ðç{æ1K=ú×týøo×Ëzñþ>çóg -×QèKÅ{Nõ»nŽ‹Ÿé–×,u¿b#ögÈ·ôoàîð÷\ŸYÎ#zÖÝÖcÇé÷”ñ.X6·äå3n‹]¬O»ú#g––ê8ù®´¹â ÑëE/¹üJkвëýªëk_Éõ©÷ËÔ´‡ysMZêÖÕÉÒvxSWQëpð ÌGºõ´is÷xæÁI·¹ß|¤‹Q:~ûˆsièÑ?±w{–‡–XóˆLvžóWïœ!ÏGKh©?HC'ýQ;¾Ò7u#`qûJ^—–sëÄUóÅš_øOu%¿¯´?³ÄfÓhGN¬ý…ˆžöòûh7ZÝÝzñ®žgÝ9 'Ø·üÛÝ,è7gž!zöOãg_~Zv™Søç¯gn¼ô‹®÷å÷4K=>Õ•gß8ëôðݺBö[u{¹åÒ͇w±.V=ëDüÛæ£>E¯uÔï‰ Jκ¥ù¨aèÍÕG¬¥‹I¿|{!ê659±Mîw½c"–û¾§ùH7¢®Žvë­Ýõ2€¡Ïc>ÒU‹÷\ß‚ƒV—× óbcýíkµXŸMÏùxÛ—?ð‘.1]8„bÍë—oÂלþ=Ï ¥è?ë/ÒØ4N†¶ŽÞùçç™ì¸Ò_þÄÉ ®Ð[¦ÇW:Ë,7Â}A£ ­gîM.ΦåÖ˜ðÃrhñå5VÁÍÕîû퇖kÐïz…eã6ÒÿóþºÐrî9Þufd¥A»~O=×ý+]Zj¢>Òí52ºÐÅ¡ÿt^¤*ŸY"\Ó%ÿ,qÒê/b´æwœ´g‰Èê´Œ¬úá¯ëÙ-»[~¢«®Q®B]N§¢˜ÆÒ=ƒuó…7¿ƒhZw÷‘˜tãþâFРPÃ|ºw‚‰ùhèRÖ/VÞGS÷^èj8«õ·÷<½ÏèØqßûò>ê?È#&¶BÞ›í0NÖ%e«î6³Ôõ¡/õIϵĹq†ÜNK-8ëö‰Ý¡‹ˆáü[uw˜eÓØ@ßóÉzsi˜ ­ë{óN³Ô‹‹ñä{êy‚Å}ÖûëË-ÕŸºê"GPË0÷‹“önZ •tÙî™wñÑ3D¯R=èÝò˜¥tD·Fë]SP÷æZn]°øçžgò@”§Ƀ¿÷š%ܦßäÛy‚uÜÍzª½œë3'!:ÑÿYz†ªzÎ Ž†ï%]Ÿyiá–¹(Êi75¢ ‹í7éâ édÖõ‘Jt‰àÛ‡Z|槉bäíÕÕËØ^/ýÌQ† w±œ^‰š¾ßmûÌSóã¼f¹ô¸Á |/çýÌUº±Pn9ÈôxÂ¥8$^À|¥©þ‚ Wî'\üzÓöö2þÏœ…ÌO- bP]k…©yKwnç×ó,k«ë/=#˜·4ßîxí5–C,ФÊCæÖÌ[ºÍpŒa6MA°V'Öj‡©y«éÄS#ÔCJ®® ¸ßhæ­†Èâ¥[¶®C¨Wt¾0oé¶PŽ]=6"ñoËM÷@‰utE ·šçu­™·4²omÊEªQ ƒéÂ4GðÇVeÆô= *>–Aú£€¼G0×(6Æ~¦×MõüüD•¥„\ãÊÀr¾g:ðbo½ÂqUþ“šB¤k Ûó|£nCкADÂPDo¯Ü±}…œk¯÷†­¾Azºb èÖÖóJÓ¤· ûtSý†f¬,Ž&2¤/`(‘¦Cë¸ä‚z®OË~¶µn0ÑH†ô©#"½“Çöý¶a7oýÜxׇ'š™°zÆ×k7o»*WËïªq ¡ÐW7oéõÉSgg<£×®O‰s`|Ž‹^€_pã¶Ñ# 'Ã;]†ykÄx;#R lˆ¿(£­{áf]o²Ðk‘ÃóÖp¼ÑÛÊ}¹¾•wuÄ(V|^n¢ž­ˆk޹xGò»j<¤§V;zf™·Æv·¼˜ì¡ÆÄb›O=Žäò,kïÎDVªgÍO5oéÊ<ˆ#Vî-]ÊØB=άaÞÒ{x1rϽu4°Ù™ÜümÓ¼5X!N0˜æAÂ÷\0Í[S3„ä%C™—'žî>_YÓ¼¥;9Î:yhnõ2 ÈóŽ·iÞ¾…et‡›À ž"ñÓM7À“ûå³1õøÆ{ªykŒ†üJ<ôÀƧ~ñM›æ­wcÉ—F‘êþ=Ó㦠áÌŽExÙâÚ´¡MóVGò¡?k$|ƒà@M›Ä»:RÞ7ÛvDr<{û[ÚË¡ò>Å·wÃ[ ¡)P6ê2oéŸÁÊúFÆ‚r€:ï]—y«mÀjØÃ u|ïÔ^æ-½Ï¢Ÿ–OÕÜV#~ÛßÇZÓM0½g0 DMÃ{ªyK— Níyó Ò`±°´0uÀ|6%»¤`úîŒ&×ðE¸Ì[8Hq,ˆ~Ö~ÑrÈütlŽïä‘;*4uÌ\FD7§¡Ñ«zë{ïº4_Õ‚! ü¢þ÷±¶yë\ˆ¼6/dø@:û[.»»éä†Ù i¶‡ØU™gjÞ„êÂÉs`ô†Ã±½ ¼í馗û%„©öWð:55ä\÷ß\úËv2¿ëÄŽ—}/`й¥SPÜ7]¸8¿_ß•XÅP®Y¸ÆÕnÊs@péŒùb‚a9ð0ñ%o1á\¬dÄS¯ÕÄ‚Š=Ý@àhðJÑáŠûÓõ¿Ö³LOdWùÑ­­›Tsƒæ?ëXC»î؆"Ø^LÔ38À]ïÔ&`!?ºü€ é—tÓ­ëõâxè­±PS$ H’%¾«^ûL@^öÖYAW¤Uã½À`ø ÇfÙhÑtkæK*¼¥‹G»ã5 …šjÞ èQV˜jàʺËKsÛ±J‡ÞÃøcs?S½·h©W¾·Ž•:ñ³o¦z‚.šã<X­C3bü®÷××ëÕ €=U¬ØDÏÃ3EXNd*ƒ'"z£ë LsŸX.šì`¹~±\ÄÊØÚšàµð–z…‘º4>ï*VïÐH?k» 4vѧ ϵý¬àq¶è®Óðkæ†iHbõÖ‹°ŠÇþéªcº„ú|EGáŠ+K/#|¬/h†Ó«Žç¿ã]5…˜¸ŒdÊsÁô²cGâŽÏÉ7Ȱ8'L›.Ã:o¼+àfFooM+jé×#ÖëUCÐætc¬·^§UµÔ…„Ã/vÁ¿ê-Âõ¹i‡êA ÜÜš×l»äÝÔjKcúÉ.oCý|G:ì«{‘T¾ƒû —§‚¤q×c<ö5ÜT×rùrÉo$ š°lwì2oÍ Z\{õ¬WÔ C·xWó–†Tð–æþ±¹5åh3kó©æ­‰røGðØã©æ-b󨘜r,£O˜š·úaÙ^½—‘.ûfÀ›z RæÌiê‘!VñšÇ±â¾Í[m7^’é9N¦‘ËBMÍ[¸·q’µ Hôøèò½mÞjz+áB°ü¢ÁAaÎ6o´AD13‹›zJ ÀÓ:ì馬L%ïgáÖG±z¿µÍ[ BtüÜç+D°ë킽½ ËãA^zŽ8õ€Ø°ð™Z}Kó”AÚn™Ãè&r÷bímõ-5ãND½O÷*„?Õê[W?5ÊíqkHÖ±põ<âçå]ìŽû>"ãÔ­ÉZóh€cÕ·pZ¡}ó:FÉ g~DÅÇ‹Æzìfý%ÒÜËGÜ0ǫƺaPãì:è‡$ê~ïÐ<^6DNš$–Øg]M_Ý·¯¾™œjt„0gŸx/×ã¼w•ˆ4 ±ÏÔ+Ǻ²ð]¿Ì6°[Ä‚R75oaÉ_+¼eè°þÍXYǼŽÈ;7ãu_gÕþ݆òy™¹b¸äõxÓ±XlK¼vŒ¸IVÉ u­êÊj=–‹˜·xhâŠ+Ñ[‚­;ü},ñÚñ%Ò×N Ødi„ŸqÀ‹×Ž/ØTÄ_߆áÿ“aý{W¯ A¢qsikº¥KOÝxWó¨%‡•Ÿ|ª†ÈDžž ÄkǸ‰qDg hË%òñÚ±þPTRâ,ôÂ1v_ð$^;Ö{YQû™‚lƒËü±îºÓ14$ðSQ2ÝYÄ4ß‘á| ½ÛpDG Aží‡“ðIjÚ½"½+DŒ# <~@;#C— ®é62(ÕŸŽïzâÔvJ†."ÖŒN¦gqµO]n:¿b¢ »’éÈ6œ”¡‘<éIÒòÈ0æ^twV†." RqÏáÿËÛÐiº*ØOÑr èrÕÀB,3¢éuSTG¾—5ȇRÿ¾#ÎËЋgY £’~š<º·†ó2Ú‡Ut3ÌA½¥áê çe êƒ;ö+yAgíX?ì{ó–^9àbí‘y¬~{0—öˆw5o¡<ˆ…² 7à}Ï~¦ËË÷øaOœPLr*=šPS¯ôÂâÊþ×Ö[ ÕzÁþp^ Ϭ>çSM¬<óÕT‚ F1‹ïª‰X¦'¾€Wúå`ÉÏ’sënCyn¿‹sx+¹_˜ÞŠº†„aÚž)–áe=ÑÊñ¢ŒáÍ øLˆkW¹äAiÇGYï©V18‚äêd¯·#/Èwo¹Àǧ7bžY‡Õ·ð¼Å\ü=Ÿ©$\ð.£á !Ôv°h¾Ä2t_ƒ0ú Åñx©œù]—¾+¿­÷î-Ï_”lS䲿x×ë VÂÖ)¸FêÀC¯ßÜÃyº1IC¹å(Ö ë2~Öãe¬ÃÒ­äŽÕå¡|_/ —1Yé—{Ê™…ŠÓg@MÍ[à£&ÀºÞ±‰ÝƒÕtzÿ×eI|åÇÒc¬¡¸Þz}¼ ¶µÜQ=Mm±‚fìØÇËœ‰ü6u5ÖåŒmøx§1»,Àúí ”‚þB‡ñxº‘5ŒEi5Oýzë9öñ24¨+•?o ã¿÷éWÜp^(¨sŸ}ðœ8€šzÜL“‘æA}QÍ8Þœ—¡¦ˆ¨^ôA|E}€X«‡©³hÆAìÐã©=DøYë‹wuMcuWæ±Ëå¢)홺·>TÖaXø‹J“Ãççel"—ãgé{‹¾­…3¦æ-]Øm'€ÉZ×Ú,Ze çe¨)8O#¾›Dpd´xª{Kw9Û"Øf§çk€TÃyNê3ñW=.A¾ÜëDÎËØ?w¿§bÁvkç½€ó24òc§ÓWn˜NzÔ¹oÇ:/c]FDgärÑü—IwßÕy¹0T+…ft<\?œ—±—!gìႱŒ-‘ó2ôŸ¼›¡®†< 7÷|;ÖyjŠ t ¦fý¥Ó¸¿Ø0ÎËÐ3{+7·þdkQ¿ï©ÎyZÈt7'” †§ö€‡ó2Ö\í×µ±qÀã;?ëº)ÓHÙYÖSQÈs}G†ó2ÖD“ú!¿«žb‹`õ÷ÚÊÜ[º0°cožYz6éí@÷ º È ·÷±¶{«Ò$cÃl’tÃÌ—žíÞÒ8!Y9_‡°.\í±Cm€:%#"]Ú¨·Œ놩7½0G4–DfÞqom€"/# =õâêF¾ÇS{ ™9ÒöUcmœÎã¼à鸷>B7.ÎÅ~ÀÊëÚǼ¥9뙿¿ë$6*Ž]p¦›ZÑ2 !FˆBÚ[„g=ÓUõ<ˆŽÞæbe;7õ.nMoïrêvCÿS§Ëñ>nœCLÎÂTÏSML`?SqÓgV$|(^‹€"·f˜>>!`&Í Nœ§.a*Î'\„{”ÄÁRÜ÷~k@œO¸Øžñ+ŽŒÅí6â©ÝûØg?Æ{{k ‡éù;³Ä½*–vÞÜõq•µx÷Ö`‹úì‰<-²ëÛŽ(CÜ[úçv‰Þˆ±!Wý$¢bqoé½…hí+Q±æDX—÷6äuÝw6Íô:@ O¼«{ M€Hú3tØ8´õ[…cŽEjû­À: Nó<0½î­v)õ—É3‹Ã!tÚzÑ}ìÏûÍWvÊ‚ÅÌ_ª¦î-²Ð5‚væ5±¹¯{ ¥G|Ö·aÿÄièþî­oÞ[%éÇ6Ðý+뺷ôo“޶so(G”/àÞÒ­‰ãí&B¢,Ök{ ո療á´O®,“Á5¯ð䙪•RåE—ømïÔ¾î-üzä -Ñ$Æ8EÜó3o‘DŽ|ëf°ß± ö~k~ÍM7/£•!Ú°f»6¦cz}àÞ£ƒ¬³þ:Ë€  „3K‰‘QÚz‘æt,Cï f'@Š“Âïæ3eAxµZ/¬]?o9–1Pù¬·!É«§v¼ë~¦¸ŽWËk£OֱΠž¦cÃÈ%;R œº´_;ËÐx ù퉊Éx<¢³â©î­^âoKIúua¡q¿ŸåX"*„O†djÀ!Þ†q,CMÁL©pý]`{œ=ßzu,CãX~×–PÂh÷ÓŒ¥íX†^0d6Þ…lŸ:os;–1Ö0ÖWÆYÀap6½~:–1Âßä¿‚Ó°ØåŽu,c€3Sòt/ivÿa_Ä œGÄ¿¥è¢•&‡Ë@˜‡ËÿMà ,ÁgêÞšè.E&ç€. ÕÕ~¾NÇ2À4à/ÎÍ­ï¾ß%?ËÐMu'¥ ôÀcê¼(c:–Fñ²çxNÐûÐÔÿLÝ[zɳï DD³‹¦î­Žÿœm¦Ï±Ûàãð¨©{ 18 ÆRã„h‚‘Øý©î-=±´K¶¡:‚¤¨òNÇ2F7 À—E+œ¢Äâ]噢 sÆKHkÞ.p,„@ü¬“%F`Ìòˆ50u,CMËJ¿‰hŒ¯Ä"t,cX)2‘'Þ@ ¿b§ MÝ[Щá#>Ê-¼õzLÚ~xÊ]€¥æ}œö±^I+”òOqÆØó{;öõ˜´EŒãÔ“¥‘Õß]àX䀪ŽUXŠDðc¤ =Z†dк¨òÆpo5\'ë”`Ñ(oÃ8–1Ðv‚üº@Š×ÔƒæÛÜŽe 6Mfiü¬Í¢ß¼ï»:–b(áúSNB䀖OÇ2ÆG@m·Döǵòýƒ?§cÐââ ž& êŒÊW¶›Že (!µÈãÍ`å6^7Ë@„P£b”™Ï¡ý’éX䨰a® Bã@od3¤§ccaÅ$7Ì’7÷ãêNÇ2Hã2¹±X. €zøv¬cƒ|™»*‘I#’ äê>MïÒ´+ðH¶¡óÇÚ#ð³ËèT©ù’}‹Fm¤¸âË0ÚXa'QÙq4|ßs¬cý6‚ª’¦}€…„Æ?–cde ž’Ôª±¯¸8Ëè"&CU¸d·ÞêïÚp,CMY|-‰:_Sˆ¶¿øYÞ¿%¼âN9]¨ €âDŽetÙ”r“YêÜPš‰ ãXF7ý‰¼c‘mâ¯]?Ëèêt-HIwN#TWœc]/îV8z¿ÀýØÚCs¦cjˆÐ¡åâd…Ooèç-Ç2ºq¡fpsÐÇH‚MÚnêÞB‡PÉ<_·þi2RßÇr,CM‘­™Wœxø+_àuÛ­aÉa“rÀò¯Ûnê¹w–ÂJ*øYï’w,£Æ„£Ä$Õ½µp÷A\«´MljÄ=ºôt,|ÆQ?Öú½ Àxéù¼OGКµfî-ý¡dãÅæv,CMñ»DoúE°‰{¤çŽeÀ´•#ª‘%^ý±ñî-ÝH#wIúE}ÀÊñÔç­1¨– ÕL¬¿mxŸ·:Û ‹FAœ¯Kž Ë@Õ,„¡AíaÎ}¬ݸ{&ùRM¢¶±hzŸé¦†H!4zïÎ+°-Ç2ú4ŽÙ+3ÿƒø ns]´ã™¶×J‹uÜK<ð¡d§±‹ø».Ç2Ð˰’4dlïtá{ür,CM©¯62áC@~Ù™õLç3%p1g©òŠ!w󙺷ôÁRN²?ñ‹€¿¾ëx9–ê¾ëÈ–¤}:BÚ¯Ç œ§fI»0(šq›ö+Ý.Ç2,Ö¿IjÝ õ¢?ö[ñT÷–E¥m&…„ÆI9$7}ßp>ÌÒœùYéû}§Ñ Ê:À”¼ciŸ¼E¸B¤éÒׇ”ö©‹ÐïÈ~¦#L‰è­ÂÕe ¶f˜Î'èIɰžÕ2÷Õ†hºžéaÉ&“ÏŠÿ-¿À~¦ˆOt²’²…ûx¼Œs9–Óžø!WÖÞ_`šXÚŽeèa…˜æ”>£Ý¹1ÆÛ†«½.ñCXt$-à';¿=\ýu‰“Ûq¥¦f,g·è-Ç2ºЮ…°‡®sˆÜ¼@o9–ÑQw¥oÊ ³P{¿±úÓTå}¶Ï.¸6™Ýëeœ«?o}À]DvÅ4qÇŽ/ð¼e“²·&8Wà„éóÖÇkc$L7ÆBª >–{ Rjµ¿ÍïBÃŽåÞj&ÉXJ·g‚jûÅ¿Ëè×~';‚4¥D¾•‘chƒìµ‹që?Š'ó]Ç˱ |Öm²ÁQÔsÞ»â–c½™ÓL4G¯c¡>Š÷o-Ç2zûÖ*Å@šåAÀdï©î­JÈÒ¤j—º`ýáÚk< \ˆCà5onȹžær,CM;Ú“CBLýkÁøYŽe@~SêÞBì#2ˆ!˱ŒŽƒVž„F¬Žòýr,·ô²Î‹,Sz¼K~9–'rÇ^Zpé½p,ƒr%¦•LUa‘úuZ-Ç2\Šº¯Q8ûPX¤Ú†?u†Úr,CMÑÜ[j% ˆòb¿å"O9ȰŒRZ@ñŸ€d¼«{ bÇÈmJÎSí(/”§d´Þ[Lý.x¸Ë’§$ÜŸ+ë†8BH&ª‘˱Œf<žàÁã.]J±^Ë€é¨xVG‡E¯¤«åXF³ð#úâ˜B ÔcÛ£õ.Ç2Ú¤ ÿ­ 7^4z’Þ˱ŒFzð€R“§ê{‹óÕ± H}™ÎK~²•¤Ûc9–‘ñ™r6&xryj<èkÝç­IfŠdºL_ ‚ýû¼5™É÷|êwYâŒâʺÏ[ d¶^ô<ëùzO¨Gá€Ö×aˆ•ˆ2îóV§gK‰QŽédåSŸ·¨[ÍnðÔ3¨¨l‹pÏ[Ì6N)-ŒCMáûâ×íXFÓ¸ËÉ~l†iKú{ª{kg*IÔ@ݰE‡ ŸêÞÑ$9HÔÙ±ÛÎ3uoiÔë] g¡.ñ}¦î­)M/Wìõ?:4Ƽï]Ý[Ëõ~’mR£œ ùhÇ2 ÔϽ•K›½nX…ñ®î-ý HLJL*)õ‚íX:\¿ß­‰Ëæz˱ ÈÕïzÇv"¥èywìv,£1?Ç,’”„Wÿã×P¾Ë@Dølg&¿ìÞ¦ÛŽe¨)×FOLs|ü—ûŽŒíX†îJÕËHÃÞ±p¼Æ»º·Û§î× C Š+·½ñÏÛ0è^ºú°â$t,CM‘pž:O}OSåšÏ´…)ò ‚¾9ZGÖ;]Ëà x«4»éyI5Î÷®Že|ìñE¥53Nh½s|Ç20IÍcÉÅc)ì±·cŸ: ácËÍýi(×mð„?u?SŽM’r ;'Üã„é÷?$KÖä„©ëB{êá‡æ| þv‹¸Ïh„Œ¢ ¦G D³Ëø.áz‰>Ω›{¢eÅ¡éX†šZ‹Á-}œ&³.p,ãCïÖ@‰ˆ0ȧö{×ù¼5“þRÝ‚Juì|Þ‘“(ÊDîÃgú¼ÅnQØõ@VæËùÏ[6*îX½ŽW7%›wÏç-fò·›;Ž]@¯'jÏ7€Éä‘OfƒúˆMò©î-1~VK½Œï𠌗œnÇ2>t}S†#ù„€[oï(v,µÿþØ`O=Jïj”lÞ™åXq}$‚…WÜ àp¢)k;–a<|üÙ½dæìñ®ó™Z—miœ‹òòiêÞ:ç”,Äq/ç«é~¦  o®×ÙP»SÝápoIC)Ä»)„e<Ó§ý ÝÇì´â€nM˜òLï“ %ðÓ ¦ ET"ëþ³žöçfÆ›T®ŽÖ™Nšäû®OûsS0YN/tÝOûsSÏòV’àb á‹æinZf÷R3Éâ—Ït>SªÝö¯ÒxĦãlIZY‘–Ûå~/ÖÞŽe|èNµ“,9ì%‰ãͱŒÏ*Tm¦ØØÄ`\±VoÇ2>«ÝÒ¢Œ<7šÞgz¾» ÊXÆÃz¬„}ž·(&'#"M"'Ëƒï œç-¢ÊG2égLõ6÷yÞb¤tJO?ZB<¦êv,e\F#;„Ç´Qf÷¶Ë@£ß*TäÐï‡°Ü 7Û± vFâÜMÂ8èdÆ ¸·ã´¯À{SåHv¼€{k2a‘¢ñ³ h fÀ»¹ËøÐò;/À 5É»TMß,º‰ð1UŽ.h½èË+α ´Hï²²P3B¶„¾Æe8–í°S`àVÖc'¡cŸUïC“Šw,º#nôšmÇ2>kxì…Q©É›„bs;–¸c½6@s›xg¶áXÄLûËýŽ•eøÆó–cߤÄN+—ü‘Iý¬uåy‹ý0"UŸ’Û¦9Ãõ¼ÕÖ¯2s‡øÕº¦]ïO}Þú,|ÌëBm’!íßíX¦ÙÏÔ½õq8É«'ZÝ×n®Žc€ ³ôR‹3aާ›sË€i/·¡³HÙjÏÔ½õTm’Â=šÕàí’Ç2>¿wÙ[“Ðë'RS÷:© Ÿõ-=AçËâøT ÓJfÓmNò.…öóf¨~ÝB²ªÚM™«þðCTmÓ—,ðÞ Ÿ«—NŒ9soákáÞJ‰ܱÐ%{Áþñ1ªà†qž< '•°û~ŽÏQ½l$=Ý—¼£aDB˜r|*Pbüû†éì>‡ê­,Ÿ¤ŠS¬ßýz$psëgÕˆJëùLMþBǾí¦óGÃ3øÚÚS±´»éÁC¶  Ð~¦ÃգПú~–éÁ_ðÎtWh¦´¾^yަ×M™ÛˆcrVß‚úÖé/“?ãsS®k™7ž Põ>ÁššüôeóŸik¤Gí¬ŸáÞú–‘éV|W^”ïß™5Ì[æ$>Ö¦ÐÆcœúá0o‰…„§åS9øÅÿ4].É ³àDò€çH™OVá Wï×Å/z\‹+î,ÿÛu°ú Wï‡Hâ²ü® ÎÝÄh*.ôo'¹ÙˆÞC‰¸a†y L­Çré&€Ö^w¦yKÈÚÛK9ä’]ΖžéŠÑ‡+bÄ €ë(#MÍ[õXt¥½w…ذÀþ^+™ÃM'U„aÅØ…}§Í05otÃ<¹›GõX“³ç ˜·pM#²ßxdÇ\íÏ7Ì4oP qî0í—rËò"Í3Í[zÌ!¹Y.:Âñ¤¿‚ð™>kAØ òR6ò4Ûg5›wmLót>GývÁ²Iâc­ï™böé S­™€¼m¸š›â|#–6ÖÞ¦;ë ”FM¼.<"$‚1Éò=žæYÃMA í'– ¥Ÿ¨ßõÂdzÌ[°£|•„©æEX¯çåg™·@wÞèš±\öG"Xn˜µÝCÆ ¬ÙÍ,èª+ßõ<Óe-ñêhݦo2šŸv¿y¾Óžº±—{ëcýÿûz~W(H¼Q20Ýæ­%õ­žæƒrçƒãhjÞZ$Ú/–6ô_õŠéïðvwSJ2=¨‘õ ^úzÐ$ÏöùßlD{}Å´Lf}„Ƴ§›è@÷Ñò†áD`MnÞ†ñ9&kèᨩ?ÇB­ÄŸ%K|óÖÂÀ8ìØ/×ëw¨×÷RÞãsL–u¯¿¬Ù% Ü1ÆK!ŽÏ1Yp6êßuö…RX‹þÍ1¡²ð‰5õ~|Xèó¼wõ9&u?ìä /[fG«×ñ9&zâSlçÏÂ<(&œoœî¦Œ5GÙÜz€žà»ÓÔ¼…¼²‹í½+&ñØ\.gº)VèÛæÒ–zò ©‚s|^»†ãü~°p²ÂwÎvSôÃè¥6b¶Näg¼ÖïsÌ[H8 +çéÒ;G¾{_MÅM; ×_^Fz—"?±^ykX[Ø*·!b¥¯Âwļ©ZL[7¼¥É.–°<®ÃóH<Kæ‹ïŠ1§Í†^ºi÷áöP„ÊSDêåEe‹÷]Ž3Wvnn2€œ¶GS÷U@Ðü? ˆí1R±·Ä½ÅÄô¼†=ë²çßáO¾«yËO ÄmxlÂã‰ðQŽ›6Acψh`è}™6qļÕ9`ºÉ)çA)¬íôäºiÁÛ=¬Yð­ë3‚öGnËÊKž²Ì¸ŸÞS¯y«/nÏ[Lõ÷¨Kd=†Ú¹ÝMQ÷lq tÐÆ3ÈÃÔ¼ÕÑ÷Ë[.–¶É0·Éé5oµËÞ)Á~¿„ðד8?×¼¥k áú–¼âô¼µè6QSó–îKŽBÜRø¹^Ë'MÍ[mYºµ2,'µŽ}çÀ7µèíd¬M 8a¸À¼…q´ç ¬èŽ< J˜=(A¾ÏM‘W|çûN¿w>¯ÇD>óVkнOÞÎ óĽå@MÍ[ s×QuÚù±>6^MR¾á¦èY§Ï82†’‰4R>ó"BÅe 6è†éòéSä\Ý‘Á>Câ'SESóÖ9"%¼µ3£H#å3oé‚zç8>¶mý‘Ùä7ætèdé²hOM^M¯›–)æ½·± Œ™21_Ú¼…s úž±Ð!#èÃ}/Ð|þ¯ˆ}Wûhœh1?Ï´»i&7âÆÞ ­<ýWiæ­\¶±[žY𬒥ø>iî­AÜù•kCwàyú¯|ªÍßÂhª¢öŒPêqßSmþÖÄ8î;4¬Îé(+Lmþfi¶×ìæÑ\€Îäu/I³ù[8H¦+É)eïLS›¿Åî+|ïŽÕ}Þµ!ýsSìXp6òæF½§ŒÅb`Xô×\‘Bè•Ãl:î"½û\³ÑïØ3ô¢êÎK!¤gŠ–ü¹sb|¥7Ï3}ÓÒPQÅ+ œ}éæ-Á00 ŠcõMû“4¥©yKõﺱ\¶|Ö¾/`ÞÒ/Ñ;öüÉ”÷#YVü,ó–:˜î:yÀkˆ°9 f™ÃM)™± Fô°"™ÓÇ b€R‘\„X¢«u¿5ß$BÔ#ãØóȦAOõI„¸ p—;vR=@ò ø$BR¹ËÀSQÌÇ‘7Þw5o-] KžYmu^ÇqLóÖšš‚"Ÿf-Ž²ÙŸ'|²>7áyŸ¸ P1av}Ùæ-¤¡@Pã `x)ªŽMv˜n7…{_±\0ì ²ú¯²Ï3m@kGÆ.8݈Åð)Ÿ+·ßt£÷ó[Ï—BÈ6oéñJŠU ?׉r>7µ@OòȸŸueEðtÌ[zÜ@žYÊØhU{ã„hjÞ Ó•Ó±84oãà™H!|&+«ÌP”σH30™®CSóÖ ÞoÄà캥"¬Ïª érSÌÝéçž’š1¦|CôÔt»)”Çõâλ`Bï …´øæ-»øMetxÄÛ%ijÞ‚Z á‚>(z‚ÃþnÃ7“UH—>³Ä¯—bm’aÇúLÖ¾MT6`ºIÕÎ1ÙÏÔ¼†`X¹ 4(Äx–§™"ÒÝ´³WJ6š@©u<®®ÈpSì­v¿ õG¡z>_;Šˆy i4ŒïÔæÌ놜{<®ˆy CÖ¡†XRˆO“/ôŵøYÛMA$—S®ãƒ#š˜ÌxWóVÿÀ`ݧëº] Y½UVļ…Æ<°îë™5HÌèO)@ļÕ(^¿w€ª uªEPzÍ[˜“6 ‚üe”Ü R>ï:¾ÍM!q¾]° d48³ÞÞºæ-ÝBìôª×±Pœ;=¹ÃMÏ×¹ê%o£M\†Y®y«‘Ÿ/mKDo¶± L'×¼…AK¸¦+–adá;âö3x%ñTN—Á6–_óÖ‡iBˆ@G˜žKBaHÃÉ7Å0Í.2Åp¢Mý×¼¥™<ãZ lư|^ù{?Ÿw|6Õç%×+;#+ïgjÞB·$Tz¾Dô0Þ÷Öë^ºŸyëƒÑ5‘ëu¡ñ¡ñÃMIp:7=pÓ¯¾Xû~æ­™ÑÙgqH)g•==øû™·€ýV\›‡&›ö ËïgÞ±J$ÒŠeë¼É,ñÜ[L°!“˜¸6˜Í”òËè~î-ÖhïìÁ7"½] ÷³yÇdÍ©ÃWæ0ˆâÇX¿Íæƒå€i¿w„d²š'á‚©M§¾=$ãMlü×öžjÓ©zñ7dPÊ‘/è+ë6›N}Iˆk§e°X¤ó™Útjtõ!~bàF{*Ú¿ø®Í¦SƒeŠ\1xÐæ "í(ÙmÛMIO=ïXMÏÕ®¦6£¯Øû’Ë¥['mKS›NiLhÒˆ tƒ„ qà<ÝvÝt’®… Ïïo§8ößÛ?7¥Dw?8413Ucn÷Y⺉ç —,ÎULú{j÷±ã`5e—Í͹EmÇ 7åèôSÑGþÓ’Ííæ-I1áq”§Ž3fDôvûrS.[{´ˆì‰BÝPN˜š·Ð¥‚øý­,VøÄÐþ·²º{ ݰˆ2z`? x;¶»·cµ¼6À ¦ `Peo¿>M]ØõY"Mt[’™þáøÞ4uòoVƬ0v°}¯xGsÓÎâÈ—%FHò·×ŸASŸü¾Õ¶Ú,ÆÆ2ó+ƒÜá“ß§°ÿ~¯ØÜ€¤Ûã>Òt>SLÎY·ü,DføVÖXn:Ikøuþ`þ×y üÛMÑ ¡©kî½Ê1,¤áî0oa Þ‚gZźUH‚~fˆ›Ž½Ñ˜g–ÞÍö[~÷fvà:Nü•³Rðªï L÷VǦOœÐˆLˆ2Öë…¸Ó½Õ®U¨z (:h‚ôøÓ¼…­…@O)Õ$|ÉS5 ©ykoB_÷dv ê)±ï Ìé¦j4cg¥%¾«¬øYæ-°ÐQM‘„ëõšÑ’Ä0oíÉî©ý– G ³ù=ÐÇ;›~èI¿¥Ä¬Ja˼EH­=HWº£Ãb½V„;Í[šAÐ'Á?ûk‹‰Nw™·6ƒÒ»*®_à@Sì½ÀjnÊJñhpBμž¨¼Ë½eÄŠ]Î,SUóao45oÁfÅLLS )ŠË<ž:ÝGÚ9‰eh¬M€ý\°Ì[WžÚ= 7ÍÚüŸfõ]ÛM)òžé ‹%ÊüYæ-p€!ÏS® ¨‹|÷Uúï’?Oïƒ ‰E#,c%¼ƒh™·ôXqó(ÖÎ&6Ì6o-Àt„¤)è'’mÞZ²îƒýé@³¶ñ‚ý»Í[˜·ÁQ ™m ¯pZû{êx¦}Bs0CÝK¤¼ÍWá»Û¼5yóŒï–JOrŒ}¦æ­ Þ~UÞ[ß!Î9ÂÛ¼E©ÙǪµh&´%×¾û¸)tàtwæùŠͬ±´·¸)Žì½F.—%çÆ²à0oiLÇôæ ìÎ.ñÞ:æ­9Ù£ô¨E¤Ý ÇKa÷˜·¦æ PIß þa°òpá-—ÓÝcœÇwò©“9PxŽ=ã™~¬ž—|«qm?q5uoA‹b©ë¡_F©©{«¡Ó£[2Û¸=Õäùî­†žSé%éÿ8å nx¦î-õÊ¨Ô˜Ž©h9±…¦î-|?RUK iè¶"Ê8î­Ûs•„ÍñH,p¬¸·¨ØI,,ñ~ÁWSóÖÐkZÓö±25c{îSÝ¡iwS^œY²Á?1|¿TMÍ[ƒóv^F3›Þñæ-]º®eƆYX„˜4`9 ÖrS?»Kržt_"‘î(zż¥41gÔ>ŠŠyƒ³š7=¬ô—¼`Z{Dž.bÞ hùi¥Â×K^Qb¼bÞ3…Óz©ÇÚ ÇJïç¦ ž77Æú¹'¹‡‘]÷8äS2"‚ž(>^óHÍÔ^/%u„fßÌë{‡›2¦©—Q[Í8ÌoÇ^óÅµÑ ºøY(¼¢Åä…ºw¹ébãð'¥l·¨F>ÞÍ[ÐTE"(ù³z±Õë-ÂkÞê¶ÁÁÍm¨ß…ßóМ{Í[}`ÜVHŸótápm™±²îuÓžæîù®Hv1äDˆÌVãJb_;o#6æ}!y‡Ým‰ªŽGŒ š" ²ûåF(„ÿqU£K‘–ʽÓð·\ÚºÇÐ ùÊ !97ý¶æ2ÈRãÉ5`Gk:‘ÿó³Õ3]Ÿ.%Þ\°mȶm·5(ùËÝx;¿Ä;¤ak^k¬ª)<ý¯g¾¯¸-e,{ù‹qe{L;ØšßtüÿßQªØäDi“w°uXr?œÜ™˜n-±Øšßl‚£7—¼¥ƒQómIøÂ „|›M¿¥Þ(laö&nØ·ÅLey,Y›ù‰3E‚fñOö0}6)ghÿæÓj±wXn;8|wd„â(HÙ'Ö¤ƒyhã¥ô?íŸvÚ·ý0.n½6Ü9‹§%á7‡7¾38¿v~›ózÕEØ^·eÃè*7$Îu6´gëÇg9È ÷™Ü¢¶ôTg̶¹-ŠçMïä%ýQ‰& TÙs–TôrôPúÂQ›Pä³T=ئemµu¿ Ä,»˜—³×óû:Κ6…áëú]`Ñ JØfÛyÿ]îý¾@‡w>×ý u`k…ô«»‚z(á ‡:ªœ,çæBO0¾/±Žœäº›]8ÐQ`oaÛÍöpUûk¨ý¼iñöãOšÃ5ö}YÜ>tgÍvº-¸ú{|y®wè9 è¿ã–ÛêFÖ‡—øF3)¬‘&±7 xlÌO^ÐéÚ ùààü•8wˆxÀ£âúîYÚú&${$j+nKa¾3°R0­‘ßáš->júé Œì‘ì†ßzÀ–’y§—:ÿé3â·M÷Š ÀXn­öûô¦ùͦûä ™½pö/Ê7š¶æ7 !hÞèZ@ͦ…ߦùM(fˆ-•1ÒLMñ‹wXnË~±ïæ7›œô•=4ÍoBy=M2CÖP“s§{~‡ã¶P¤ïo¾Ä•$o(”Ùʳ…ts°‹ÙžG¥‡²ÀÖü&ãØœå\§Þq–¬Ïm‰˜®SÚÓ0ñ Jì¡e~“ŽÁ¾£Ì3qF-¬-¾Ã2¿I»~"¥.©ßhg7lÝo 9õ]#Ë8 A1ñÍ–û µ&4Ô—~¾k*=›ùípéIÚ*ª˜Õ •4µÝn‹Fèv"Ob– Z“ØÇËüùŽä>›fcäOÆFËüvöVZ¯TïE^üÈf™ß4v¬&K`B&’wìþÜöcY0“­ÇB•×ýÖ7ýÖw!qþË—ùÅq¿5áNÖ?À“n 5Š­û sp0²ä ,û_ÉûBÜo -RÐâ+(‚ ND÷óÝÉ4ÏjpøcÄÝ"æ7h ny·ÆÙ¾Ìßd¸-f(Ÿ¤ß.„®@2fîc™n .Û2r§>XP™·ˆù …5Î,‰ƒÀò%‡¶Ûmx 7b Hâƒ5ÖNÆb~[ú5Ù+Th­È‡Þ°3³·e¿µäà.V¤» ˲ovÝ BFáfP7“­ï¹×ü&:‡V”ι>G]÷[#™ù”9‘±S¸äæ¹~Ýo ³¤É)g”€Ñ52g¸î7>Á.÷[ƒ6ÿlOg[mÝoÈ5Q$رô Z@OFœ}w=[r­¾ÌqúÒQxˆµ~Ío“1È™‘g²FÊD´›-Ƙ_´ße¼®›j¿iÄf+nËâEky®/è¯ ®ŽsòšßH$Ì1·Øh*Eu6ò¡ö™ß0Õmåî>|À~Íø(`»-E\vϳD3úí¹æ7”î5®^£ä8/ÄÖ¾ak~ÓÛ J¥ó”{³SYo<=µn‹9&-ùÃØ› øCÐuPÛ7Û†)ÆÞQîí 6ÿ`=…Iµu¿iLJÁ‹Œ¹0/]Nq>´Ïý¦ïµ éßd½PÐ8ôè»­ÉÂÞ\èÖì…nŒ[æÙz R’†öfu%¿o3¿éé»è4G鯓Ÿ~žÜ,&À™­5ZŸ•w–:’$Ž/Þ¡™ß4ݨ”Fc©š ¸ÛUåÑÐd¶ ÎãMf‘£Ûs§Û‚$sÖʼÔDWoĘXfÛ?ZNÆ%£‘â¾N~‡í¶s–Îf+!7Æ®±/Z;n UÇ&Æ"lž¿­É³åЫ’Ï긾-×N»n‹E…jKøXcwû¤Ås»û g'Îê$ÞŽƒ®/ɸºuó[Ç}£÷éÊ{^Ù$·1~[7¿AÆséZÁKöñ”4ÕÖüÖG}…˜$È0­9Øl§Û9ÎÉ<ë£nêÍ}ÑÍozAêm%7Ås(Ëœïk~ë`1})L— ü¡õã¶šU#ÿÊ{¡=‹R!ÆÎ·ÙžË±Ô«”où$+ðêæx‰îu’dô÷;3ÒÇŽ—´…Ô£EN¦y,f "ž”|󛫈û+d%ªë§ ¶æ7J÷£[t%¢¡Ãä{Èñµæ¯:ƒ€€Óå 5b³íÀúÚÙ‰lcy†„‡Úºß:„f[ͳXÆ”¿ÍýÖY ”"a¡Ç·7¶æ·S‚¤Sêc‚{>f¢iÌmþ¸{霞•X±‡/(jhê{?ɲîÆos¼+O™â%Ðe®—\2Ü>£c­/Q[T*P ,y! ‘÷qa»ÌvR(ëò$^a"û*ßaÿyƒÆG²žYcEËàÓ37[÷Û\<«O‰5¦Ò#ó€ã~ÓÄŸÂA—POIJØÞgËÑ}=ëY5Ö¯ü6q¿qàÑ º"ó7^»GÂoâ~ë®Ü•µfˆÆ¢®úÅÞ÷[c¿Æ8ŒœªÞx©-lÝoÍ”%[b6È8¤.ßa>[`6C¾Ú_¥'-|!î7ýÏ'd ÖÔ^nÞÇâ~£Hª$k¸ KàˆMÜoÅ2úNÌ]Sh¥ïùÛÌokw)E˜±ÜG‚æ–|‡ë¶Ë~&ª5ÄÚ¡Õf¥Ù2aøzKÑ›¹mljw¸Ím­¦¶3öÔmTX“·»­¸%Ñ;€\´î’þjk~Ó}ȡՅO kÛ¾|®ù T"‚é·ÔÔØ<¾r_Üå¶Ý”ÞiHѰŸ;Ψk~“nÔ¯Ut0JXEœ©×ü&Ö•Òwö^Ï8 /žë~ûÈÃ]'ã(ăÓÿÂÖüv¬ûbl[ô ÌïaÛýûž­ulel¿Aä…"áÛ›ýkn‹Á¿m·_Œ(Haì™¶æ7 `©=r³u}娣¿¡Šj;Ü¢4mÕ.]ѬïGÌÕ?ó›m +óypy o¹Hÿ–Û¢DD veä#ÖdÿÌoº )‚^è‘D×_=Àž{Üêc…@„¼$zè®x®¸-uOWÿPÕOÂÖý¦—- ˉéUͳ$öqoî7¬ÿnuiሀȇzs¿}ÌNÁVPÉjõ~[3¿é_ Æò< G 7óÛfƒ€®‡[ÚŒ8ò$ºÔÌ»-¦eÜY:‚lƽÜà`ôf~Ó…K­Ó•1Áù@×½¡žÜËm'‰ÿR8•ÜU_òKz;n LLÓçR‡ÔÕ{ÊøPÌ 7[άøN9ϬªýWÕK·ý¨§w ® à»rˆz7¿©?çlWá’ƒ»0æ©ms[Œêi{æ}±?Jß\gÝý¶@¢Óu’õMÝ;¼¾Ó»ûm¢Ú²3‡8 sõî~ãØXŒFIfáÕB¯øfÝý¦§)Ù´=p˜É>×{[~÷›†rÐ|jyVëI¿xÝ̰u¿aÀ-ý¬3 ÊAD)¶î7س¹Ö×ø(v½ò¹î7Ý]øm3±6=1p4îÀ2ûp¿ÙØhzA½EBbºá‹á~û8a²—{“ƒÃÞD5úb˜ß„Êï;`RŒ”9öÐ0¿Aâ´a4ó)E…˜[ݳݣjMb ËÚÁGþ6óÛZèÿúÊZ>ºœ(}š¶ÛmqëIï‘WÒfü6ó›dPpÍZèøA#pôñ·íùEJï:+ÙÙ¶æ7\e@i×,²Rœ/¸}êË_tS™­f­ƒ}’…†ŠÚ7¢V×§ùmi0~ÉÎzËÀáQ´>ÿ¹-ºuR–óéÈ"nÞoÓýöAZ‚S†˜ÁÐ놴çšßô4£LÝèµ9k[44ÄÜ–£Ýï(üHžÆ—¶Ûm5VAgx©5£‰ Âê±7çq[ ™ÒK|Ö8ôì&.×§ù :ÃØÊ)X&v_øâºmç‚P´¸”â_ßü"wêËü671ï+¼Aüñ°Ül›Ûâ!í+òà ß”„­ùm’ì,™ûŸ šý-¸žÍvr,ÛYoù«¸Q_î7LÉJÀÖ{wž©Ëý60¾VÚÉüMCb„…1¡]mÝoÃtnæNbt{ ¤/÷[çÝpæ)ìzæþ'¸u}¹ß:&Vè¡(%g˜¤ÉFÝ¿/÷[·Ã»ŒiZßi¬í~c]Y’gƒ˜ã«FžgÛýFm¶ûIò•Çà0FQ„­ûAéíq>Pÿ ñäÓü€­ûµ¯–}Ä«;çd>ü¡o÷æÎMG›˜&ÒÊÚÙæ·An†þ_%¿ gÀûºÍÖü6Lg:D‰Órš±DÙ/l÷i)‡ÑÙ§€x=÷¼ã% ÷1Ïšh¤;5´v‰•…<‡À»ã%Ì.LÄÊ}|:£¾P½Q[ó[í“•gõ¼«îx døÔ´Ìç™î>“–¶Ž—tÈS—˜Ø„KñÍ/;Q)´W2(·¶æ·ŽN!ôÖe¥Ð´Y]üfŽ—èwÆj³Ô‡šõQ¥çšß:†c,íR‡8”ó×ñµ5Ñ„¬·€om5ö\󛯬l×Íò£AÒûDŽãx êN$Ž‚Woq#¸Ýñ’ngê,J\BáïdŒèx‰Æ×BrséR·vžQŽ—t˾Rýy² €Ñ±/éPOAp Åâm‹:zw¼Äˆ¨-ce„åBŠ÷S•V[ó‹þí…_‚¡Ö;†.áÿé¶ìë˜E-ecŽBŠøŽ—´Ëþ)ü‡Ïûµà4tÇKÊ'È9Kãõ™-ò[ó[;”o Ájã2w º;^Ò0WŠE„ùP3rä™êxI#×òÛ…¿~‘Œ^yßa8^¢Q&§z}§ÚP¶»b ÇK@xb.š÷õš3U„mwÛ3z•ì &>&tß'V ¶î·ÕÙÐ]$Ç»ÜL 2è'דü} fùÛÂÖý6I>E×t/)7lÝoãr|eáJèöˆ®ž:/A]ЧE0&ïù¶î·Ž.|™=c]fˆB]Çn{ ÷™÷¦®Oj«Ž— @Í9J»pd¡êsc‚¤ÚºßˆÊ,ç:ž¢lÕò¹î7ÐûO–\WSK˜¶î·ÄÕUZ›7Üï [óÛ§¡ þ…ÿ‹2d(ó¹Ëm«bKJŽŽÔ¿ïž¶Ûm?JÃt)˜c£æOœ;Ãñ}S0ºƒçÈ»›½Š3êCÃñ´ˆQ…îËž¶ÍfˆèÃe¶é%—&YáÒ;K†ã%PcÂ9¹ =HWã·9^ò‘CúE3ò?öãlJI¾Üt8^B*-þ·‰‘bܧ Çû/A±xS|~­ÒWw©iqÉ ^‚K’»[nÑßÇX±üÉA¼¶sq´C©‹m'pðA¼dþØ„æäüƒ°íâdˆ§1ˆYHf ܱræ8ÖvPzlñ4v³YHо:u2ɽI¼d²>´ßˆå'VĹšÙs5ˆ—L(aºj/A7þoôj â%OÕE ÆHÏk¶Ým¹ ¾ò}õ^Ä…üàcغß%—,ÈôkNÔ°Çp¿éMÝ!’q˜h) |r ÷[Ãî0±W±ÑJ_>×ýÖbDnÊñ GwÏ÷u¿1Ei¦§ö­ä}<†ûÜYUˆ‡Üƒ]ak~·Á‘k}£Åßu?é‹ù¹-Zçï)Œiíì_ÔÆ4¿¡ëþf›jF>A`+cv·…pùÍ:ïçô³7 [ó›`6 òîY89VÇ ^Řæ7Ðà7Ià)dKô¼³ær[d?íTÌ]¸¬‡ív[R·²ûTMÊÓ=±ØšßD Ô„ fŽ¥?rlÅm'‰x«ÔEz›ly ¿M÷Û â¼ÊôÌíîo"#ý¶Üo £ãœ¿ð³]´ÞQ0vÛçžÓJ-i¢–¿£v0–ûiþ7gâ0÷NŒXëËýÆ?Ø’›„ö9Èvœõ¡±Üo@”ä}ܧMî¼—ûíƒDœ~œÁƒÖ6‘çûšß 5‡±$ßœ¾Í‹'Ç:nÛ¹efQ)Sÿ eîùæ·#D9[‰×!.û8âê±ÌoçàÊ’Y´NŽ!ï¹Ûüv 6^ñhCmd plóÛ!DÿÕzcÆ2GQm»ÛbX†$§·£ oPRښߎFn8£vžЗ¯8×äžn òìÂj&‹ËþåÀ£Æ^n‹)“w®]°Ì~êÌXn»ßÀ`Ͱbñ8_dEll÷ (Ü“_íï¾P¾‰šÏØî·Éæ(º˜½É»)ÖÃ6¿möýúÄ?Ú¢¿œ²q>·4hçŒÌbæäÁ›ñïinkñoÉß>*&ýËçšß 6™‘802 GÔºœjk~ÛÖ|“÷&&‰ |—ž{ó˜ß4ÉjÝVè'÷øã,·Ýœè¶G/!·›¼¶q¶Û.á£]yÛhNNÎ8Çmm_´\¿›,ו´ßf~Û ÓÛ.ºYè æpÒXÇý¶Xó msà%„‚ŠõŒ·m¨¿[ú7ûŒÓÀï î·iÉDÕÇܼÎïÓJV[÷›žë8l opÀ¨Æ÷÷ÛÄè/¸jì«ë8£²—vˆûm~$Cµ¬"*§ØZ¬3q¿Q­²F‰ŸmªŸ¨ q¿uÂoQl†O[9­¶î7¤èÀ®ŠÆÎôÕGúBÜoÍ»|ÚÍKó3eŒIÛûlQõœ%†¹à¬"î‹ßvÝo€á‘ˆÁ\ìµlE€­ûÍ‚¦}GÅ’n#¸ùãºß€±bNaÆ0·/›…¾¸î7 ؈Y»ÕÅosc]ó›ÑoÌ3¡"ËÁ€º›¾¸æ7t›¢öu3¿hSëZöèŽk~Óø =4Q;à½I·è×ü¶'pÚ•õXõŽ.»ÑË÷·]äÈÖ^e.ßJ}È1ÝvØ8‚Ä5 ÀJú‹r[ŒŽÐ»(¬¢}ñÁᜟûí±>­Ù¥|ȃþb^µÚšß&s½{Fö˜_ŸD>ÓÖü67gs|¥jAÉXL [óÛ\àlÉÅn Ù6Xý,™Ÿ¸-ϾŠJಞ Å·7ÕC·m#×k¿ô‚WîãÙ>·EôŸ ü¾‘%ZØšß°ƒÀ‘)ÓÖ65¨FØv·… `™QÈáé(?§6Ëlæ7”‘Uµ¢÷Ú¬vÜdzM·…Æ`Á£8êJ–±&Ûz¶“Å«Âm^Z?#¿ƒûM³KˆSŽ!ärñO=ßÁýFªZ™@Ù¼ƒžßšû­[é%6ì?–ЃƒZŒÛ.Dnò• aù›Üè×›ÝýöñIÑ/Ñ`’”ÊÀ‚fw¿¡»r-;e±³™Ýü†š?yLE;„jƒ_¨«íp[¦€§Ô³6ç@ò­IÇK0@:½LfY‹ùEðð¦ã%­›X™cX ›tOØšß4æ˜Ì ¶xr~³ã¶ýÔšuBôQ}Ék›Ž—à ¾*YMj?´…˜Ž—@:’£\JÏ Ðkÿñt¼Dcq.ónAs®ÒÈ!§ã%h´äDÎ7Ñ4T«åšíÂ÷ýF–n´®A¿9^¢y¥ÃoârzàIÝ™éx‰æ‡øð{—˜öˆÅJ[÷›óCÃû-»Ÿé_Nںߧaô^j_ Ø¤älÝoД~ã¬uôEŠ7Î_뙎—`Ô%Iû­ò¹H؈ÞõéxÉ`_‘>$yñøÏ÷¯ûÍñ’A:Œì:ŸÀÆ.ì¨LÇK4óIeôÔF¼0ß„_î ÇKÐaÃtxVÎ)/Ãw€ã%ýpxlðaÐÛ·™_<û/!-¸FÑ=¸ÔLÇK: ›GT8ÞI{sÄ;l·å˜„Yð’³&©òïLÇKÐbÓ)JSð„Ót¼DpH`8EéÌò;{þ6󛆩l~,£Eô“áRÛb:^ÒÇDßm(i+æ4 —q¦//ÁJOa&†÷aæQNf†­û­£/T¢¶ˆZ³F“)É;Öñˆž¨jÉ9]ûØñ’þñcžRÏø—ŠÓNÇK !žM© Ò>†­ù­aº\íyVo` å}Íoí°y7ï è·<1?ûfæ7L¸eº-§‡³Žsóœt¼¤mâg»Ä ´†bÏÖñTõ8}x—ë„öà Ž÷t¼ "õâó|h‹­¢å;8^P9N/*ð›˜Z9×/XŠ©¥ŸAENœšðt¼…"6Jæsy…éy–ñ¤ã%(®Ø2\™%ÄŸ9^2'òãÂç:=9út¼¤±+‚<Æ´Æ~ØÑ'1/AƒÝ÷HÚk¹¢X뎗 yzÍ%Ù˜¤šG‘Ú:^Ò ˜h«hžoÆlž%Ž—@¾ø vEni©óNÇKp–á,Y£àrìC™'m‡ÛRJù;Ej°×óF­y:^ò Gtÿ÷ß²XèŸïëx „JA\½¿{å“å:s¼D­p µ¢¿3Ÿîyo:^áÖß’G 1)„åãqà¦ã%˜› jIQÙ¶‰a9NÇK0ªô&!Ë9eûã›9^¢¶\¿EG«a¦åÃùÍ/ù6…¥VíYY, Yt»Ü¶ÙÈâ §6gîäxÉ·8+<5—éZæè=غß›*÷,=xƒ¡J̽úh¶íP뺌G_Z¿æ«åOÇKÀíŸo$¯ï¡Îñ ;0…éx ®‚«ÔÆdŸOœ%Ž—0YK‚ˆDÞäµ}ùÜog(W‰|dcг |/?×FŒÒŸ……Ï>¾ñØîÆÃö+ÊÌj›cl`ÛÍV ìƒ/å;ækg ¿/ñÄþdgî„I»Ôíˆ;‹x‰‰É ¢ ¹/?cÌÕ•Ám!&'he-³g¶i/A¡–Mí1Èõ¡ NdÍg/ -±*ÙY~œr">#^Û} %Sîc]¾äµ|î5ÛÉÙ¡g¸=°ŠÔ”\ŸûMã\Ô€[ÞÇ`…"'‹^‚õ¹ß Î ý’¯hÞ~ ƒÐË\Ÿû­ñÞŒq̈KÖÙ#eaë~9kÖ‡ð¹jGî¿>÷º‹Q0©9*†‘*ÂÖýF-D¤ìEßhX_ó[÷ÛÇ(:ß÷bÏ£‡ßè΃¶æ7À àÓÞÚSÌŒ3ë ë3¿É$Ã]²Þ a-ðzÚ^·…Ñz úMcÏïÛ>·e³EÌÓ²1 Ä»#&XÍü&ôó˜LîŸÁÒÕI[ó›ÿÛ².‚¼¢õz½¼e5ó›/¹£â€c[ðVV›nKý‡y9µ1Aä"«™ß h†ov‹v`#ੱÎÚvÛýèíwG%ä;¸ß> NLœßôÖsèÔVž-çÄWÜS¿"ðêò¾æ7¦z™@…;ëLÊ Æý¶úç¶ä¢ç¸ôV ßb=tóÈê» qEþŽg„m¶èGï·è|ë5O ãøÝüÆ:"òªQ°øu½žïk~Óߌ° W= 98zåsÍoèCEMëKÞ+r=œ¿#ßw»-…ÆÖ7ëLÀ…ßÈïpܶmòwZÑkã1ý›«›ßÎv(–‰p”üØÐoÝý¦©z 'SŒ0×1ÖÙp¿uÊ»÷’“ƽ™ú;k¸ßº1ON`·§lÍ´u¿5ȨEc1Œ¸EÍ2ßÁý†x—}úb;èÛ›M¨¶î7LòD ”÷깩“³†ù \ SÕ)£›P]>Ù³²†ùm³`-Áðދ|hÙÐs~ßqÜvðr¸ùÛô˜Äu2â>^ÃüáÏ(^½ølâz´ú¼ý¶ë¶ùñ(Bõl\ﱡí4¿Q»†Ã’§p&ÿTÔn×4¿íe1tÉqFGûÞm¹ÎfwÛAÝ‹^ÆŠ¢í-¾áãi~Û“$Ù?ÔQÖæl³è]Óü¶Ç÷«Ë*ØÕ`îñúšî·A°7ud¥ìØ{sºß¨ˆ n.ÙÛ¬Ã%î‹é~3ïä~aÂÃÇ¡†'¿ƒû ™gûÅèP)í_¾¯ûí[VÔ-zñšì”çÙr¿øÏq-ìÝAÇ€†¤¡[·–ù Äöž|Ô†Èç¸Dµ5¿éaK­‡OŠV0Aér­á¶ü<£èx›J‰ãë¼7×t[róWËÊ8÷·¾ÜZæ7ý Ôj»èbS¨²œ©k»mGoê*£ ñÉÖÓoËü†;FY4Êõ¯°=ßÁü¦_ß,ûß0 B>í×lÍo‹×ñ±ßÄ©õvBníÏmQŸo©‰Ša]Rú°u¿õÎ~²Ù –¹H›ã_ÛýñÄ}yî $×ÎÇ~Ûî·Fìõn3„Ÿ:®ÿøÛý„æ1þ¯…åÑ—´¶ûÍ„šÆÎ}Ül$O/¿Íü6QÖw(yì`AÎKÕöÛŽÛ¢A@bb•Í0¸¼JÃÇÛü¦¡.øgu0&$¿7Ë%ak~›Óm#æì¡_úR›å>îÌ:æ7LÁÖ·³nÚ‡õÅY}Ìoi,jšåL²€ç£†²Nw[Nñ–èg¸?hóÁòÉ=Ìo³-«3` ¤‡œwåsÍo˜B³³ŠØ .|äo#öñYn+6h¢àCP;¡¿Žù ÿ~ÊŒ^µ:ùô:Çm!Gñ]´C&¦+ ÁuÌo¸,x0Wr§j\àFë˜ßÐS m¬s±p%î 1¿M²Û †7íL ¿‰ùm@ ùÐ(Z=@EÚÈœAºÛ¤oûfÞMvÌ›w`ï0ܶ±A°ð*„3„¥‡&êóÛ€vÃïiØì }rÒf»Ü–k=@Ã_…Ïo&î7kœ­:§ûC“‚œŒÁÅýÆ) -pN·eH‘ÄKÜoçÆ}AmM›‡²b‰û &ܽEËKÃ_´zf¾/éÄ"ÉöŸËRT®3ÇK:mÚ(1â2^ò=—ã%(Ó‚'öåz˜{³'#›ã%Ø*>¶‰Þzîä;L·Õwãœ×üfz~£æ:éËñ’.89Z/}= ÷×ZEÍÖüÖõ¨Þ7¤ÔÉPµ ÉØšßô1¹PÊÐõc|Ñ/måÙ¢q+Gù@Ëà`=â óÆ:ó +XÐaßâ|.ñFnK±¨êÝN§9ÁÉÙŽ—°»<ûy“xn [÷ؾˆÃóüÕ…#§ö"nÇKPcâ¢*½Ê+b2ÃÖýÖïüÅ+FYåàZHMÉíxIï,’ž’›†6ý°u¿5Ö¿RoA)HøJ[÷›u1V걇xÀšië~ûŠŽ³аH[ó›^‘Ô2¸¥ï–ú%7æ·íx‰Fðˆ=ãœdU’/sBPÎl7ç'fŸ{G ´Ã¨ùlÇK@´&ÁEœJ!Ž7±ÉÞÁüA-\¾-¹ã®cHí™ù\óÛè7›óÇêw&{â·ã%ÈÛÀÄÄÏ0^ô-nÇK¨7ŒK'ÏÉáÒ{of< ynÛÉmÞ%ÏÄ=­u¸ÑÖüÕ&Ôq¾:+ƒÖûË÷½n;õr¿©oP“8q®oÇK¾cƒsÊœØ>÷PôÒnÇKÔ¶“DQêgñΊ\z;^©ZUg9ú`@îcÇKôFg¾Yràöø4¹&/ÑíŠC¼Î·FGr¯3z¶ã%ŸÝ›Ù§†xGn@uöÛÜoœL“±Æ?Rd˜üß|÷[gÖ,uMS¨”g‰ã%Ÿ ©O‹v¤¶rs/x ·œÕK8A>9ÿ›xI‡²§ÙzÑíhBÙÑ´mn;¨W88¸u,“eÕ&^[ʺŸÂ+ÖK©”ôñ’ÎY:¿z /f²|œªû‚x mLï¢É‡:î‹b»þ<Ñ7üÁ•ßAŒÃ‘uÓM¼¶Í¤'Ð-Ïù¹&‰—¨íbH«ñ/g=íÝM¼‚ŒÐ»¡ƒŒübQ ÌjÂÜ›ÃýÆà]ÒŠ–íÇP;êþ{ºß,èI¿ìkÆ$s£ßtO÷›ìä1•É¥˜é…˜+|1Ýo„Œ?t1•Éýb‚=ÍoÏÁo%î;”Àê¡g¾çt[~ßѪÞqûbšß Êr²©’±†~РvÚšßÕ¶¢}ÎI§(ýÞÄö4¿ 9ßR{É]¼ù}Åm¹Ã¥ä¼öåñiÍÖü¦A4 £çûBöcçýŠBn «œlý…‚»ç¦ms[‹¥.=‰‚Ã[óz‚xöíªsJm¡\;Ëý6Œ²/Œ•¬¡nìãå~œÖç*½`Mßslör¿ L>ƒ°eêõ6‹¯ÇÚYî·ÎÆúÔÓ…”hE'戢aÈlÛ>œù½J?N#·#ðɽÜo`c¤p¸Á›=þ3ó;¸ß9m•ø‚ 1ä÷/V¨Ù~  »P©óQ†54ÖÃv¿á8Å¥žg*tþXG­no÷Ûgjr»ÌÖÆ¸0ØÆúÝæ7ÄAlXø´}ä¶æ7½€÷…î8ÇÒqv`ê<ím~Ã[ þÙg Ö1§bïýl9àqg-_/R´¶'žº÷qÛK t±© ¥Ó2Shoq[´%æ¼/èº#IG“¶æ7ýäÙDéÕè,×|QËßÇü¦$´‚—\«„/Žù혾ç(úQßêX;–ûÛs»Û’?SáÿQRcÇLþ„ßì˜ß6$IRh—qõÀ|̹Œw0¿íóôNÄ“8KÂog¹-À2ãK=<±o̼‡Î~¶«ò2Ó"BLé2Øšß6çÝÿ:ÏÚko‰5yÄm;‰»èÿâ'àØ‰ýv®ÛbŽc©Õ îcÝa}GÍg‹ùmSœíG–­kþúfp›·˜ß4F"FZî,9”ùÛ¤»í!0QúP¬±.¼°u¿A9ˆC öŠ–Ç›:#[Üo¹¬k¥.ÊǾ­ÌÄýöaá×Êhèñn‘‘ï`~ƒ“'!T zΪë¾å¸-{Äfé]Wçï‹Ç¥Ú"nûÙàœ‚G£}ùÍÌo ”6h’,¹"Z¶â¾¸ŸÛš.Õ9Ec”›ÕÆaš­ùmñï[™ãÌFí<çm¶æ7Ký¾–:Õ®S+b_óÛÂ}Œ‹zýÒ1\eovÍo‘¶r"59e£“S–ùÅ]nûÙ\¹Q4Å®è´u¿}¬u̲~ûA&+Ïßë~û(=7ÊÚ9;U4©÷5¿Maƒë·fÁ&ëYygÝë¶$Ý}Á¯ÆšDTs,üÀ÷=ŸùMoÍCÂqÕØ¦Íòøçknûɯ>áŽõ‹07k¡ç3¿áÍs±´.¥œ Ûá¶äW7ùŠG¯äÙw>ó›þf&Jç–yÝtNÓÖü6J‰¥o=Wg”•)ì;ìgÛ{&kÀ 4Ì£<Ý=ñ\ó˜¡RxüÀH;${‹ûí|î7¨«ã¾(1ž¼€‡$ß×ýö!¿§’3 ًxšû R¨·äú‹Eή:Íý¦kš±rékž‡1bpžN3¿Ë`bWà-†ÄÓžf~SqZaÁiãý¥îøióÙr|/õBÀQ¤/šùml Ê©}–˜~Sã4óÛXÔ*IÍNœg÷üšù¾æ7 ÎÆzØE3nRž.g3žf~Ï‹M•§j¬<©{¨]·]äÕ>5ÎûFôzžn~w¿Åe¢æÃÄNoÏ–õÍRG?ü—Ïj·“¶î7ëpý…ƒ³P™Ý÷ºû WP6õ{=Ô¾YÁ/9ÝüÖ©Ë]4ØÐ»~²ÍØ~›ù 5óBT¤é&6gœn~Ãüâ"úæù`-mÍošæ³]¨à´zQ6j¡§‹Û.ž¿-{  ÜŽ}ìxIGtžUé7Fa×d4øÛ/é`U妵9м¢wð'ã%DsÜ«h¥mÒ@Ú‹wŽã%šÀ’{[8 ó«fÆq¼Û|£s]ƒ³Róð8^Ò0½' ÖKKÍ¢y÷q¼¤Y{÷è·äÝì-IÍ¢ãx ‚/ ’{€ž.öØóŽ— éÛ‡VÑQ&Ù‹Øw0¿!\Bcє҇½x¢å=äx š¡qñÈyMˆ3x¯ÇñNk“Sjjx®÷;lÍo˜¯Þ¹¬ T&Õ ¶î·Fe“Yp‚Ñ71˨›ÇK0k§ˆ„õ\‘‡—œÞãx F˜(ZíhÖBȶòÜoÖRYµ®‘|ÜŽþØãx RqrÕFéÏZlPÌsÒñ 4ÇžÙ?®.½8û/ùði‘å=4颴ëÌñ’϶ü,=b‹s/Ï™¯Vw/srçp[ž}‡šõ#úŽã%àÛ“è•ø$&wC:'êÇñd»¸ jïƒnò^ó†ÛâL¼uÞx#;åx/ÍÂ…õQ¿ïD?äq¼ä£æme^n@KÎ3Êñ´£µç•ó:Z}Á+>Ž—@î €~Y“WÛ+Ù;¸ß@ÒFQ¡Ìsà‚#k‹çºß:¹êÁÐ}¼aûÔ:ÄKšicý® Lµ3p®C¼¶¨Í|»p8?c9å~#^ï(|„hü.Ïf;9ÈnÞ¬Í\­`”)úxIÁ‰Äˆž8¢&<¤öÏ|‡e¶câS£y!ûõ,†á÷%^QÈŽÜ©Í2—`u’ úw8f{0û®›q ûÈÕGyþ/-×ö.ü³i¸\hâ%(Åñ½ô(h–…»©Ärçs[êþÀÙ¸P>@m=l›ÛN”ØWéÕÐ4‚•Èà.žÓÝvXÿqêÙàèÅ\ö˜ÛwŽùMõaŽä¾€žt%¢^xÎtÛN ₯¶ß›ßá˜ßdšóÍ:Ü-'ß×ýfØë*Üñ¾m¥7ôlÎq¿éOƒßJ¯¤:×u<×ý†ad9Îæ3p%ð÷[H{Ñ—SG6λ/î÷¥K¿SfL6蟋÷÷ïÚïO}DašëLÌo;«ZøÀwPøuÊp[mtKáÎX›ü—¶æ·ƒZ]&Ù–KCõ{ÊrÛ9m"Džƒr"9#øÈv[TØ£©xuçÑ™|#æ·ƒì1m­›r®‘AÂÜÇ"n»‘ãÜVf²˜È(ßÁü†<ŸœÿVrôCÊuôœk~Ãð«%sÀǭΞ8×ü¶AãÇû¶¢-Ol%qûsÍo›3ïž¿µ{Žq‚íx¶,‚”YE‡î‘)3lÍo[ïHÖêúÿŸ»xîr[(˜€×PëÇ—ãTò¶Û|­÷1¦Û [ó›Ò&â;PK†µÛý8çšß6FQ¥1óùƒ8ê˜d—Ùšß ³S¼Ñ$ÆùÔ6–Ïý†(ß™Ï ðL‚õ÷•ÏüŽ#{KZÑÁÀñÒRD¾î¶žÖJ ê$0¼Àâå3¿-1]÷ÂAZ'_ê‘Êg~[Fîu®2ç´vò}—Ûvܱ©£…¶†“{¦­ùMo~|³Sæ›~PºxT·IÛã¶ÌÇWf á.L¶â¶ŒS{‰£ùú¢V'ŸùMÏ.v­Žr®3’s-/~³ö¹-…,²¦¡í¼QÂííciî7½w‚²²¡Ãÿ¡%Íýe­ßÁìƒò¹î·!‡@ÅÌ·°¼tÃÖýöQ÷@¾^x™hÊ8'êzÒÜoµ"‚›ÄÔ‹GÑ ýiæ· M$Ùyþ²™UDšù ñÖê\–”¿Ðš’f~ƒ6/¨Q9‘H ¾À ¤™ßæ6ùÑ·3ŸBñÜþ¹-„ïʬ8ÜC裹3[7¿iâÁFªö•øA(âÚò¹æ·96öÛ-9:äô@bMvó¥A~ùJî½/ç©IŸn‹R|¹‡pFa %TÄÂv¹í¢.v«œ=ÒÔ“¯,Ýýf×ÛùjÍ]Ö̱װu¿A9èò޾º&ÐÝýö±19µ@uC¢ B/N•î~ã`-€©Mh*eMóÛฎ DÎp, “çÙ0¿ !˜sdÔù8#ö<ßwt·ÝÃPÓU¯C2f…ƳŒñl1í/×(‡Øx¼ƒùm ×{‡Ÿ%”3m_è ËXnËâ`½ß¶°ç5çË0¿idŽå.+ã(/oÕ“qÜ–S][á åÉst{_ó›øœy_ r%VðÏd˜ß44çUf#èÅØ~­ßé~› (ûM=&ä9`{çút¿¡ ‚*Ây]F&9—K¦û ê‡$tU܈£Ð“é~ûX[Ì9ƒÀ' udmQ¦ù­³÷ø¦ñT6åù;׳µy1ÙßÍÌúµûÙ;˜ßtËPÚå› =åÍnµçšß:¾Ò48öÛ¿â_™æ·îЖפD&P¦ù­S[9ê  ÄîÌF–ù­A¿D FÊRêÉ{~5·6¼'ë O|t¶Ýmõ‚Ê} vóÂ|ó[3ÂEÕBdDÞv¬‡5ÝvP`k—3 5åÚ/-Ëü†$•4•YõÁû/^,óŠŒLgé5“o'”>ã¹÷Ù²^8¿Ê= ôiÞYŽ—@À™¢-§ô£OãJÄyæx †»ô.¼×10oñk‘›Šã%í±ßZ`ì¹ ½mq¼ÃK'Û/ÁèKHMäZw¼¯…ÂÜ(ø§}é]Ÿï»Ü¶_/Z[©B÷é<‰ã%Ÿú õ%?Æ<Ö¤ùÂöüy …ïP´èجqSI/Ñëô²Ñ·hµÝOÇK>ûÑç&ÿW£jöKG}H/æÛH!!Óò‚ÄnPC`ÛÜ–:Á)cß8Q‘3@ÅñÜ@£¬¿0å2´ ÄñjhæÀ9æÒãp¦|ô‹ˆã%,#q€VáµYªXÞ~»ÐÇ êTÙ¼ò«Eò¹ÛmùÛæx£-üv :¢¸H>µ&a;¾í¦ÙNprÀ3Œ÷…ÚqOyØ®?XL’´‹ßö7É Nú%^¢¶Ó¬Gv`¯½ñòü½ÄKÎ÷ÈÛoú}»þg~3q[Äë>¯ÙÏ(Ìsãò›Ý?6`lòîí=Ö/²ÍùŽ8Ú/9h`ã@ë™k]/Έ3õ/9„Ø–ømð1Ú4oj—^â%}j\eñÛÔ¶“&¹O¾ƒù cËPttQ2ÛoŒw¾Ð¸ÍüÂæ´•»e4ꪤfçmæ·Žæ”f®C‚ü’ÛÌo5N¨ø&àÙèA9+4·n3¿A™=bMb=èj¤ÞöÊçÂoMoð\gHÿÀWî-~Ûu[†LóÛï7}"G–Åš$^²1Œ–w7{ÁÑ‚š9Ã%^¢É¥\ÉÙ#Î(áCî"8È—xÉF2 ­£gßBR}‚þûÄK0‚ño[¹æ$Ô|B÷ö/ÙÐã¢ùÂ&¶â’s=ßaÑv±ÊåµPó€y<1{‡M[ ¹ož¯uÔ~_ÉÈÞáж7æ-û+ï»ÐqúÙ(ëI[ój“í‘FýL]˜ÕÔ]ØÚ\#hB!m}wûEB¶Ô4»>OX=ÏBmì ÜÇè. X¶oîºà¸m3×ÙÖˆlá Ÿ'Œr·<ÜÞÎ>}*$Ã{ÔÉ®Ï>£Ù,ÓÜ›šÉ³d¹Þ}ó„/ÅÃú¨ß—­?Ržëó„1Ö±Ü*1%°rfÈ}ó„1y‘Õü´Eáƒ|è·7OX“lÔûŽï0Øs“{p}žð`iQ?ÃûøÏ1G½Ðž>O#þˆs}e= ¯ï빇|ž°,½±þ‘ò›‹r}ž0-¶„ó¬Æáã;Ÿëó¨­ñÛâ>´!KqâÎòy„"<¿éµkÜ[“7[Ÿ³’7†çô—ôÖ/ÞÁç¬tœ¿Í´Ý†ësQã9q®ëz¯˜kPkÝ8K ^Œ¥:ôwÆÜ4Gß‘ñ$”é1>9ê±×õ^×°i¡-cÄ ÑªÚ'q]ïUÖzœëà™ë±q|Ç=äz¯“Ñ·ێ}¬ßÁ{ü6×{ÅE ïÅ´Ì[k3Á¹®_"Tºwg¼s)u‚äx®ësm’¿÷Ìï yIùUغ^P£fý–¯_jÔô™¿m="Âà=ßœ‘T7غîÌa2<"~þ‹"d¡=v]¿ƒ#÷kî·w8c²z`Ð×õKz#!`íŒå°gCöü¾Þ', )¿ *“ãåoü¾ûõ-Ú€GÙ™›6V}ʚܯo±[Hx‹/ˆöÐx¾¯G:°Ì¶s=èÅÚLäC×ûq0» E—R‚þï—ïëýÐBóã[e+¶Éïˆå¼g¡§ºÂy_° iCœÞ³µÄçÍ=ÄÛ±\¾¯ó•ÕEŒzä›h»ï·Ù;8_ÙúÜw‰'DŠ~Å©Þ3M`kÆ9¹1£’ù_ž©Þc­gßš™_ ºb´™¶ÎŸ±‰Ö™ûãœGŒ(÷y?Ä–Öã­ø}|&öÐŒzáu¼“ÜÛ#Ê ç<­oÔy×ñ4¡_y¸–"óÍÍ#™ûâ<žÂÁ;´Ëéb4­žØÎ/9ê^%ÇA„‰°&ú®óKŽ'ÓßÊ\O\2’¬|ØœâEI“¨ù\ç—\°–ð`¬ešPleì=úÆ/ð’˜MŽ!¯þ/äŸS±˜ò~ù¾ê7lÚF1®é"_Ì!Ñ« ÛM[L5"eûw@^Ȳ´IOsí/!(0° ¬‡z}~aæ Ð ¼Dß™Fömû;°Åa™´@ÜóÀKŒ±†'–8OëÁ;&gúbpÏî·žg 0'Æ®aÛÌvrXì·2þÔµ‘£Œ°í´mÄo¡pœñÃîÀnC wÇF‘Ž)?èvErz™È•ÿ8àÌf€•w%Œž,ü í2[ƒ‚Mì7\B”²Ûa»ÿ¸61±12F$ßTÞ8LØž? |xß3ƒÆ‰cwgØ m¡MxX]Î{“£–oÌÑ…Ðmς֟÷¦:.w¸v‚ÛÝ©?o€1ô…Fâ%ëpL@hUbôÒ>DîÊ¢ ¡:L¢À~‰÷^òÜñCJì¬Ö ñÃK§`;þØc_·$&¶g=Ù%ØNÚ.R±=Yó¼å›Vk޵¼„C61’gma[^®_à%HD7 s‘ótG…xßc¶H¿^±"òM× ·½ )µ?¶¨À5òú¦}‡ypîô˜[‚‡™­¦Çýé)˜¡ûÄŠÀyï¼Ä6 „k¿â7\Ç%„ßoëæ·k³wÁÕk¿æÄ«mÿcEèkuûÌ¥ ÖÀ{…í0[#d\Í9büµ_øx ÈfÆx¾üí[f9ÛcÄ:ëvNî>¸ÅÞ„Ò¶Öáð[·sræ8çf¬¸¯w¾ï1[v<ß»òŒUtä[ùcÂÀ—½àQC¡45ãÊ÷½fk—ÀøqwkÄ·“ú(ÏjˆtÏ'6‚£…åÔâ;/±G0'î‹Z)•›Ž÷©m§í@O'Ñ÷ÌÑ í{³ŠÔv˜-ÄÞ=ïuœÍ òk…í´»ªtÌ«2ö„^=.YEþß ¥Ijä¾P¶‹¶ºP03¯Å}ÌQsÐÁXå;l³ ´™8—Þl6 Û¡í†^Ò‹Œ•!S‚87ï¡iqÉáh[ïMõúÅÜç÷¹¼¶ l¾žWÇVLƒ"8#P¬±xGˆÍo0§ÉÐ.¶ðÛ†x… ƤîÇ9ºÚv·j¨ÌÌ¥;[äÉ#ÁvÐPSäÚA£õ*3±ÔvÒ’dòfAyî?9Ǽ¬à%°]ìCå|€zà}:ÜCÀK`{mGœ;<&êÿúí¡íqíÑ!ñÛ„½ÒA¯‚­˜íÄP /Pú~RÒb®ÙÌÓ½ÈS)k§³ÏâÕ¾0êÅ)’ÿÝ’KöŒßa›ß Ø¼*vu)O×ßì*{®ù PÇz„î·7™Ì‘ï0Üv¢6nÄ`¯ëu›Û·ã;/áð`cú¼ Û`©oµ]´ÅÜH#çÅlT"{hBÚl7$[eN ®Å^ð<— Øv?Ó€/gÉàL!9Ã/ùwx°®—ûb‘“šÿh‹ö5Ÿ/ë@Þô¨?±v€—ࢢˆ^Íw7©ý_ ]Kµmfkü…ÄÄ%Mâ=â>à%‡r&ú³æsQÌEH÷ðØNÁÙ7 î90úê…ÏöÜɇubô™ŸÄŒµur/íâ )õ!‘¹Ó޳x l7„×mY‚jBKš$lm!VÃ^€ß £IQ€i3~›Ð¶/ê÷­¨ûsFð”2#Bm-£¼!Îå<'©jX#Ïx lõ0†Wb¹=œ“±Ö—Àv=wz¾´Ú1ï ï¼ —Ðãö)ya7ÚwëqF/Q[Lˆñ%N;'b# )Âob~å®q5û„$÷¦˜ßŸ@¿zd {m¶CìÌqÄüÆÑàòe £Ç ›«ËoƒßÀU_ë %QWy1Û•ÖË€Æ )ÚÆj{i‹÷axÚȳD¿.Þ7cOà%°EЄ¢nÉqä#þÛâ}—¸üP™^«ä [ïJBÄú^ò|£.1(Åy+ìÝ”›ñ$ð’äG-êmžÍì(­Ïçñ’Ëí‹30"‡ÄXqÁiû‚xÉE!iü_ž˜ƒ ü'ï–ky÷g5£êUtÀÒ^¶w8n»÷}ƒœÏ!PÎoQ[Ë»ÑZõ^<4I8:ðJÆ\×ònüçÀâgéG—…+z¾z,jf»Øáƒ[Í8P€®ŒØéÙ¢±¨ßÒ7¾±Îe¿~µín»ÚȧͶÓ_‡øÅs /Ál[WfíæœøÐ&Dã۲l³ÝÏÁFÌ¢f\Ý9³ôõÕ©­ù r¸_ "84ÃóûñûÔVž-È|ßM½m|š[æ–¨­ù­Aù“ BéÝ9d©ßøŽ—hê³8d2gÕs|¦›=ܨ5ó¨‡)š’Â>µ'Ï[ǹP¸Ç)šst!B/€ßzå¬zè`°3e•ïpÝ–:.½ôzb°Rü¸ç[7¿éÿbŸÒójÜ!~vö¹-yA£pN¡úÌÔ ~[ïn‹`0÷1Krœ—ÔûÃlZ7¿õešE¡+Œ×zà¾Q&fk~ë謯/¦mÝü5Ýñĉ½Ç£ÑQ“ˆõÐÝo‚–7û!ÁÑ"'ý…û°u¿]ˆ£ÏçrÏ·¢É§¶òl)$_ö&ºúXšìak~ƒþºÔùäÓŽ˜5Ëwæ·Ñùá¿¢%>A?¹,~‡a~RÙû@Ù;^M;rÈ6Ìo}™"3¬_ônå´nKÀ9Z™•Áöû¯ÇÚæ7 °€¤´Sú/>ÆQ-°¶6ÌozYÌþðÛCgLð Úˆ³dl·60¼èΘ, D<Ù†ùMW/tàä+çïfѲìã!nk'hô©Ac£ØPé‰w0¿¡N ¯hýAܯpöp±»- ËûÝË?TÃÖüŒ‰{>ï·Ö¿ë¶Ý1~î¡ÔÀ¼/çÆÚ™^ ¸Ç-:{Vš#¶ùê‹Ï-Zíº[©Qóøžjëõ€éë,¿¤Àú«òžŸ^˜—ÃÅ‹ž# ¿ý•G¹~§ùm.Šäß[4¬ö°:o¾¯ùmy–÷Ú#ðº·ö¾î7Á(äÛƒâõáÿ×ÚŽµ³ÜoÂY[«ÌyÕ›IRäzm¹ßÈÀiP4öÁEië~»'Ä¿ëé—Ø;˜ßcê»Ë;à~î9â¶Ók(Í4_ŠVÄrY[ßw-·aÏ5¿iÌÄùfŒ¨I75–×qÀIφrÛÇ›©âŒûm‰Û ß¡åwÀän†˜q/óÛBJ–›Öf µÁQ±öç¶“YtYÏd™-Ïêm~[hhàÉQ43¨¥¸òìÛÝm7õ2%õ F#ü0¾|®ûí2IÒÊì5ôÔ‰x9¶æ·Í’ûe@ǘ ·m~ÛˆÔê|HÖ!ŸÝ“ïk~Ó´›~™Ë¥'2µ˜g|ßm~ÛsRsëË^û†¶R]M3Îßíõ·Éðª1-ú,‘ëÅÚÙ×m7/ßû"ï¨q·WûjÇü¦ }šE T¡‰¾™7«Hm›ÛröD/šfg˜DHÔÛ1¿±n¿=±6yLrzgÔn;LŽi¥®dð¿s«A:v[Fѽô˜C“ØëŽõpÜoÑß^µg»SF®ÅuÜo†.ö¢w©4â“ùÛÜo‚4¥è”Q*° [÷ÛepsvÎÉD4ÊBEœëÇý¦Çÿ­ó/Øÿ†u6¢~ÜÄüvxÞ1»•ô@¡¦Cä¦MÌo§ÛPŠ“¿M¯sŽŒü"¦ó›Þz›Ü潿 GLŠ[ó ‹Rôåî £ÅZ—é¶ÈÐo/k„z;ñÍdyýØt©V™á5ØFøRPØšßÎñû©èxƒ„>”|îq[F‰RzÄ:99-tþÕVÜ–SÙ~iÙȽç¯x½›3±®}Z”™÷ã½r]÷"2~àHoÔ¨4(‹5yÍoZ£~ßÌ9 ”òꟄ/®ù  ús ˜ý±\Üó×ü¦ëÀg¯úˆƒýC;ã¨;ÝÖ&¶Ò³=>öÈÏ5¿Éj ø²¿°}œ7þÚ,`k~“Í^åUuà–•ÖO¬_ÇKD¸Á[¬3µ@&šKdÓÖü&—ZÌ­Ä0zDuJ<æo3¿ÝF”yò~Ãb@§[ä…Ýñ’ ¥DpgV™µ5{‘km{¶Ð)ç:×/nèÏínkqÑÅt°8Kºã%ê]W”Ò×L¨.äÐa;ÝvqHêÙ œÄÒǥ©ðlÉŒsùŇý–x_w¼Ó¤æÝÔH ÜÅ›ù¨¶ÇmÆtÚ¯Ù—¨KÇùÐ/¹Òß,Ú¥ú(äyóÜos5¾`ê&M†Û9öÇ/™çÇÐû»wc¬ü¥­ûmQÕtŒ¼ wçwxT!غß6h}ýÛÁÞêÀºã%È¿Rš„ðŒŠY$jë~»¹îEŸ }¨F½¥;¿¡¤T Lä-¤J웿m?[ÎrX©¡Â‰«è?ža{Ü–Íç'b9Î-¡*êžñÄm7ŸYæ·v]EüÛ_B.@µñ|ä`Ȉïëü\!‡}üEf~Er¶Î Ò¤·•w0©‰ÝËüMH–šíó׌U@ØÔ=ÂÝxAaÐyö©Ä5‚— tÀm}íòsŸ´ßæ~;Üô©FÍYž~é‹î~®–ÂÀN¹ÆÅùVÜ»û ÔE“šç:k;ÅÇÝýÆÂt Vóo[Z®õ~K…V8 ý¿¢ùMä×Öÿ“ÝvÛ.Ú,}0¼éöÑž-%÷ÅDTš‹ëôªíãsQë¯ÏÔ[zî æ³bMó[Ó,°±c?µ8@”‡¤CÚšß «Ú*fc:ÞãÍܵ÷5¿¡/ɵðiÑ€± nk„ùY´¼:µvËï`~Ã@GP¬zɾ.íÕÍÖü†áXÀ[â´PŽ$Ç%ß×ý¶ÑÖssÖ!Gƒ=b·ÜÖøQqþ‚[‡™n’quŸî·Mqù³Ë\˜…žL¹Á—ëÓý¶{3ppÔMõW–9zŸî7*ê•qêžÄ£B‹NmÝoÇô¶W«3Cæ||D{®ûíQ—/u¼‘¤Gå¶çºß°²«¶1ä™?Ó`K[ó›5 è ü ÞwMb7ßWÜ–=]ÒöZKfµ½n‹ŒSïÂ2ïC›~­‡e~ þÙ>OeßL½\jk~£ j¯‰—àÎÕs]ÿí«»í¾ÔRœÃ\ŠIëniak~냢-¡…ÄTœã3Êo[Óm9È_b+Èzf™Ÿ¥¶æ·N~H%Ié‘ XAìãe~ÓH.e¿AÐLÞ›ë<[ü⻋î"šJ‹Þ ÚbÝVúy½´o&ÖåH¢ÜÇËývx9ܢݯÇëkl÷Ør¯³?Î?°í™qÔnÏÖ„ÙoÑÆûO¡óÎÉí~Cóž=F¹o¾©Úºß8tOÿ×¥ÙIPÝ_¬õm~ìH’çƒn͊׌õ°Ío&”2¿…øÇ3´gÔ6¿ 0¥pe¼ƒî.JGÆÚÙæ7ýk8Û¹%7Õã qI¬ß-n QHuÅ(Z«œæ:ÞXânknûZÑ.eººzøí|Ïv~¯65gjF}³óÛ *|C/“}–Ð`ùJÎpºÛ’Ø3oî͉á#ež»ÚšßƢдü¾Ðfçe>×ý¶v¯:ô¤½,l×ù´ÔÖý¶Øà’ó ©>99ßÁý†Æ ¦e~Œ‰B#¥#aë~ƒ4rœ‚ƒåzm„fë~#™¶hò´C™³ÈMûq¿:)âTö5OÎH¿‰ûí,œ©‰kpÏoÂCiÛž-êÝ·h?jîgÒeqîH¶rð°ÑLˆb¿Óâ;ˆûML[H2Ϻàʃñ¤¸ß„ƒe[ÑMÒÔ”´¬awq¿]uüØôÁ?þ­ø¾â~»rökVb9,Ó|®ùm~bÍeftc8zò¾q==VɳÐÞWv Ûë¶›¥ñ¯Ì8G³[cÝÏmŠ~_㬸/ãk~C<Ès½àž&”ݘ‰¥¶Ým©ÇÔ~ésqÜRÖ¨úõþ€‰iè¾ÁíÜQ¯­ñ¤ÌÖü¦'²ôìmtÐ×@u[óÛ< |õMlÛkï‚­ù ÒXìn*øÀ*ä-ùî7á܇^µw G¨/ÒÖý†çªÖ5ÇöÀiûu¿ÝfsH‹¾§F\ÔË|ßl|î7@´eÞî¬ (´Å¿-û†ã%\7HpKþf²¹=sSÇKÔ{h•¼_Æ%1‹'“ÛN›qrÊŒˆ…?•}_ÃñÍYÉ·ÿÊœ=€ÁL žÂp¼D `Ü¥6¾0MÚÆ±Ö/ Ä}ä#¡IôKÇKö[·Ñެ¹¯è—Ž——À>¾5—þ¬­?ßa»íÆ ×:ºfS( îÀ2‡ã%ÒY[…Û,@o~øÍñ}Kr­Ó,H^Ðp¼DŒ x¾¼/ÖÇåŸqõt¼Dã‘ß=º«ñòlÃÈ­ó°õðf<×ýv¾Yôð<#õ|Å99/jtOñž©—æìKšŽ—ú}R求ªL‰xÇKMãÀâKŽ.œTœyÀt¼D?ò䌓£a#ÔwbÅÓñµñ5q9Ža@˜µ™éx‰\‹Á%g¿£ß³£gp:^"èk*ó/زµ+í¶î7£nÌÜE ÎÉ 'y+Óñý¹RÎ.w@ƒ’–‡±/Áti©÷&ŽúŠÌ‰\d:^É{ "$·CO§y^O×ÎÓ/iJ‘·äóGàÆ|µín;yÏ—~'ÍöHŠ-l‡Ûïê+y·î+ä-mç³…ØÙõì£DžÄ=?/Eœƒ2/\ëcÎ÷ñt¼„Ÿ=XØŒJ¦¶í{yÀt¼|M¬³ÂAþ®iç>v¼•cä_ÖP¶o#ò€éx 2 ÉazÄ'û¶‰¡aëx‰~â0'ØêIqF9^¢ÉÅ`¯q™YІúl/€­ûm‘˜=à+ƒSÑ›< z:^–Áš· '“ã$VúÍñ’KmâOJL ‹‘cAaë~[äòO _+0£O¼ƒûͦŽ’KcàsÈümî·m€Ç*ñ: µ?k:^î9ò€õÕXû8t8Ñ8ê¶lRu~á¤^á l{:^NÎQ̵¾¯é½FŸÏœO/è’3"%6’s ä[÷›¡—¬r¿Ùzô\MÇKîaƒÊ-ÜüK¹ (×ÀÖývÈc:¥G÷vjÍòî·cÃÔGÞóºÈ›£b=8^Bþ;…ÂÇÛ9•ámÝoÇÆ“íÂ[™l[ˆùdjë~“΢‚ä  ‰ëùÛî³E/y¯ÐêAýYϾømŽ— zMîWbÐ.«½#˜Ž—@æº8ßê±ÇÄ*ã/º„»e—™„˜¹ TøáëÓñ.…7ÐÏk_5ùf®³e:OØkXe¶’¦tàÀŒ£Ör[òÒÆ(÷[ÚÉ»{m·&Ü5K—m ·¥íqÛÓ‰§í°šgÌÕP[qÛKAÇöÕ;áG+ϽÏÖîÍŒåöFÕ§%þ;‰—ŒëÏú<ï!ÀH ŠI¼¶ýÇe>ÆöZ7Ûõ¹:©3uéí¶~õ€Ìíú\ƒ¤\)ó¾ÆùlÞWü¶í~3q•³ ¯ sSÑÍ~Ûî· g©ã@ÔÚnƒ{;·ûmr–Ù˜É[e„cZã~Ûî·Em–Sæ›6»ßB[måÙj7eÍ£âp*K¾ƒûmA>ù¥ÆzlØìŒÚí<î·ÅD9ç¯ážÏã~C->’R"_#æ «m¶6s·ô¹CXÈmü¶ã~[T¹û®”»…£[Ï÷u¿éÑwRÁtàsÿŒûÍFmIÁ¥±\ãÎlÝo›üÔSúÉÖaÌUß×ýÆ9Ê•¾™)äbgÞrÜo6jÞ ¼ÚfeD~<ûMнPêCËBÒ+åü÷›i­f-úž +ôû¦¸ßnOá˜7Öóo¿o‡­ûíºÎÓ)çë¼;pû)ãÙRÖòþO8IÆ)æ·ü¼Ì¬¿p±½`¤ír[’·n©Q‘½ƒk,¿Ãv[˜-ç$¤û©­玘ß4k¡@Qk¥ŽCH­GgЏ-ù0g”RC‚õÎ(Þ›b~kP°+sûLßwdît?·¥¦¤ìÒǺ!-Ð$sôÛÜ–B7+¸TX;í Z'ß÷ög‹{(ï,´±pLáùÃmÅË%{¹Ð-ˆÜéK[÷›¬›ØÊžHAõÿ_¸Þ« lÙÇJYÌV(¶°u¿X‰Ù)_ÉÑ5êuš¶çÙšN¹‡:g¦Ÿò䚷ƒ íæsÝoË€Ö•yaÛ‹Sòâßõ¹ß°Vq–”øl‘×ö/s}î· A™·Ô:õ'[ð=×ç~ÛØÒm®Ôhœ#Vj_ës¿é=Bà²ô£ Åó¾7«^mÝopd˹¿À¨é·¢&¼>÷Ku­öu¬†ìºíïà~;Ô©³|¡nбç[غߎ@·eìÄÄ4$„¼Šõ¹ßlvOöIhÌ¥¿¶´¦ÀÖý&Ójãkœû›|£ÕÜo"ðErÇqžqNEöž­æ~ãqæó:^å wغß4¾Cü[æ"ê¥ÂÚxð¹Vs¿a´(ªµ½œQìÙ–ÈVs¿érµpS_K$úÑWs¿]bmòÕ^pÌÆ0v^åïk~ƒÎ(çÏ(ÎwÚq¿­þ¹-‹ñ¬Ã°|rFO{s*Ô¶¹-”`5ÐËØh7N‰-~s½WO(äÀ‰éÛ?9=Ø×peýø”œ·›,E3j…ÞëÜr½W$Êä&}¥â¥=ú$–ë½"ÙY¯±óÍ&?¸vOô%-×{ÅEǾ¿]pZ œ‰k¶î·E±ÊVð’k½ë-xAk¸ßH•Ð%[bDŽ»m1UmÝo&VÝ‹n©7O†ÖlÝo\€wNŽ4(ËZÒãÙ™/9ÓC—Øî·½”Ö:¤njÄû(P/|·ÝÄ‚ (¤r㈎Öî·Y:¥]ãõ^›Ü\ëÃý…„§]újx+ŸÁl¶òl¹ gZ×î‹ýÒk¸ßÄ´Ê÷•A9¼¹ÿšî7aí`µì›Áð:JÖÆÚ™î7á|ÓVxŽuù’> [÷Ûåpñù•:Î5jž¿Óývm@oáÞ’漯XÓü†;DñyŠæ‹_oéãùtèÛˆR®ó¾è]VCá7›ûÙ–73^ï6*|E­cÍã¶ãƒV°d=ƒWX ³zŠÛζžØÙ«™^Eyîu[øXöJŒ r”Z‹3u™ßTÿPrÏxçó’r>w5·¼.»Ö[Ø¥©nOÛî¶Jl«àQ€Hôׇ½Öp[=RŒË¸€PÈt¨ÎÞ×ýfºùRæÏ£ý×BàËñÝ\Òéc=K™ië~ÓÔëQŸ‡'¡Ž¬K/ÇKÔÖ´ 3wB¬4j¾¹/Au²8Ÿ÷¼F*ã/2[÷›æþ$@–Z+;wG޾/QÛƒAJ¥6Óô\dƒÖËÉ–ã%6ÂVnK\*©_íç]Ž—èáßÚøùò ¨Ñ}'pÄåx dåÍâó³ã7Е¶î·Íúæ*qª¡”úÑÓÏIÇK9ßwJ¼³l¼ty®ûÍz˜ää}<¡l¨¡Mpr–ã%šM!àNÌœÒ.È¥“ë¾/‡ÃÆWxƒsXù#bÇKÀcÆå[ø“¨zÝZ[Ž—`™mr³î¤ël“F{ÈñÍÈ8òK"ìLB·ácÇKÐÑRŒ–9Ä…ž–¢=×ý¦ßq>½W?K¶ÅFù/—k§¬@± 5÷ÈM—ã%³ƒ,³ 'C·À@–ã%ÐϾ…›¤wacïΗ}ÂËñdY½æ--|˜ðûEÏër¼d’AôíWSv·Ö–ã%³Q¤#¸3¸³0³Ì⹎—L¼mÕXZl1ëoœ Ù¶gK¢íÊú¦~ñƒ,?úÑ—ã%j®ÈßVkˆR¢&¼/™P¡aÑv£žMê /ÇK&!R 2´8>êÝà½.ÇK8ñCáù…<'/Á¸‘"Ûœ?PwzºËñ’Ù­°\zåf·vÕèQXŽ—ÌAÂÆ(}2;sœ\¿Ž—LƒwrM^ÊA²=&Ö™ã%õ?¥Ç‘ù1S/‰|~9^zÈ©4z29Ê䯴/A¼B±Ä@ fnGÞCŽ—Ìé÷P>wßÑ9Ó-ßÁý69¬°ÍV° ¤jõüæx fÛâL•Qp¹Ëž«\Ž— ï…ÂËE¯BL^1ã(ÇKæ2¡ÒÂᄾ®îÀ=—ã%“sŠc`¢iXOñ—¶î·mÔŽò®a6_َ̦—@¨”ýz‰sIVnO[÷Û!.÷•ÞÉo–Œ‚O»/ü~â˜^»,QGߎ—Lñ»%Ÿk÷Æ=¿/Akù­ô Ð waÚºß..½õXòÌõ®¢.²/A°l°ç…™B³ÂÖü¶¾…L`IâQ‡š/kÛŽ—,@àwd~ªâ)ý|îuÛÓë:C.¢w ´Ç¢~±/QÛµy¶Ç÷Õ”ƒiZœ©ÛñrYŒo©if³3\’ÝlÍo‹©žŒ]{2IEùcÚŽ—¨-uþ%5¡0¿p¾p¼d5†€†+Ö¿ãí·íx :˜pœÂ­ë GóÞÜŽ—¬FQ‘ª)©é—t` Ûñ „%¹“1ø„Ôßù¾î7¨"LRâÉMY•>ò;¸ß Ò®:#“’RácÇK0'p—¾qj||¤_³/YÈäÐ#^6Ý¡ñÛ/Y¸½pIVìŠJÃ-¸uÛñ’Õ÷(E<êá5Îòͳz;^¢yý®|OŽÁü—k:ÿö\÷Çã”ú&~)â«|÷Û Ñ->Æ”ù–íª°u¿ èkhÀQâAŠßù\÷ÛD#;8.Ëú/P’“x_÷Û¤Qôg!ßÄÐe uñÍ/Aå ‚£œ¿‡¹^êklÇK4nçÜõRwjãpCp¦·ã%‹’w× YzF…//Y¦Ù2K}ó°SIz±u¿ÙyŸüÌ*b~2¾ümëÙr˜o5ödôÉçºßôdŸªçHTÆ}Ûñ+Áj؃/ŸóÚ²{;^¢q%DfBCmç–Gu;^ÂeRkîÈ/ØW×󹎗,ô¼¼™B÷mð/qÇYâx ”y! oslßþò¹î7¹ãWgæ!?>ÁÛÞŽ—hÜӉᕸdQâ±·n;^‘¶fdl¯9µ o>×çQYñ¶ÉûB¯7ŽN[ŸGõx"cä=϶¨ å;œg‹F‡^b{ ;e]a+Ï–lìâ Gcþ<˜—f ¤ u½U4ÂÈ0®%bÚíxÉæ@ʶjcg?äZÌÛñŒ¾ÄbùÍ /'IÛ‚mwÛµðJ}~ƒÇlåi mÇKvcÇ):‡ád™a°/ÙÍîØÂkñÔŠØ+爱Ùb/(5¶ã%ƒ]¾VµKõøBò•óɶã%Ý!E×ÒÆa"íùN~y¶hÖL\}€˜ñ§ëzÆ÷u¿ Ž–­õ ˆ‰´76Ïu¼DÏ öþþ$´JAGŒt;^¢ë‚¢ÝkƒVÊ£’Ïu¿-6fœ¢…¿¬üñå¾p¼„²jhD¥~|téµ5÷íx‰¾ Öä*Z׳F?äˆûØñ’M¾\›_bx¬}2•¿Íý¶ï?\Î’3mÝo›šþ³hëæÙT,ˆ{Þñë«k§è#Al±½Ï5”äáMÓ‡ÊzØ:^¢:õ‚Š~ ÈÃÀ$—ÛŽ—ìCí»}³Î3R½¼/Q×Ëy³í<ÖÀÈ<6üæx ôSá¤Ð_G y¯=ørÛñ’ -ñ’jú\ÓFôä;¸ß.û¤îÁA‡´—÷écÇKöå¼ñÌý‘£CÊN²÷wŸ7·D¤z_ *"Pï Ï€èµPœëdÜÏÐñÞŽ—lÆæå|8<ÎÝ3t·ã%KçzÞ-S£Ö•´NØ6·¥+zÉýb×:f;^rØq'•·ò'Z 3Þq¼DmçzóÉ\{{Q÷°Ï$ ¼„ãž©º¡Ûñ„hBùÍšæèHËýæxÉô9ÂÔ癞þŒ—r_8^Qÿï ‡ç=4_K½½¯<[¶TÓ&[Ås}Þb'{«NˆØÀ@BŸk;^rPy©ZS“å0ÄFQ‡ÜŽ— ¶ˆûFÑ`kÐbNÿv¼äè}±_“âÓɹœYXÅv¼­gÔÜÊœL„äƒzxÛñ½(pùö›w7&>Ž,kÃÖý†dBæC,Þ‘¶î·Åž¶Ô°BŒT¯õ•Ïu¿mö“ç]HM_r$›ûmã°Õ{¤ôÂ,~‡®Ûñ’³W/ÍX¦ ˆù:8}MÇK‰œ7÷̵¹ç¦~ñÍŽã%óšk}hR ”ËáåÝÇñõ/É¢qw0ú î‘x®ûíptë(>^Ƶ\ÁË<Ž—¶·HögàrXølwŽã%G83ïà'„œ¿ÍýÆ¡ET =’Æìù¾î·Ë9£ÕÚø" *öÐq¼„=¬8Å[Áý8Çñˆ*³'ÿê{…&5m/}¹“ƒRxþ^ÎE<-m›Û²>ù6¢ñ¶)í÷ÇKÔ @լnj¼‘%ZØŽg‹N>)5´ëÍßÏn‹^Ä–Z^s*8.wäsÍo¢75æ/y úÍ€ñ¯À¹Žã%èÁÛ)˜ÂûM/̆8ê8^¢iÖ8•ŠXÎ G_ؚߤ“H÷UœK(E3ƒ x/A¯ZÍÊ™ŠßÍÜ6|áx‰µ}þî‡D5í<™(®3ÇKÄHÒªˆ™ïàx‰ º¿QbZ;¢fÄFÇñŒ”ElÔÊy†ô5”§3r/Á˜Ù¥¿·†1Ýx_÷Äzp eÍ}Ìí5Äx÷fìà1µ?ÖFLœ|®ûm ê«`mœEîZÇñá¨YIþÃÍÌJÕ±&/ &@oSÉõÆwŠÎ_ˆu˜íAÞí wã'?¥^}/A_µûo™Áa°SÜYÇñÑ5µÒ[°Ë?úMã%`‘3òÖ$ÎTªÀ€ìûÎ>ÇKÔþwRRï˳^Îp/ô(ð´M®æ´ ¼‹õëx‰&[YýÍã:]7mÝow˜ÀVö\ath$§ÇKÄzŠÏ-º¬,‡u‰™ÑÇñ\z§ò7g -´û‡/¹&¿óK“äZ½;´Úã%÷3 ¥ôK£—áGÜÇÇñ’ûI‰3•=ЛÇlà©Çñ’Û²/ù8‰¤î ÇKA¢"P4ùiœZ>Ž—\¨ödâÁ\¤O“M[óÊ*«hX!wÚûbç;·…,]˘ ØàF]0¹ùÇñä€eôäáé1À(pãx‰¾VŸo†¸×c? Z~3ÇKî´úq™µ…!”_JôÃÖý6!š:‘\N(Uëv ¿9^r'‡~LÉiÓêóqêq¼äNtÓÞЖG€A¸ºóÜo‹Š)ëä¬ ÌË¢„[œ©Ž—ÜE– }.}½AùöW;8Ž—`R‚¦²ÖÑ,{k/Ìq¼äõ×/'Öyæfë~[o¸É]ĈVä’˜Çñ’kM9êz‹ŽX[ß×ñÔ{M=~}©6R¶î7ë‹{@Š$Bîß‚Ct/a¥YuoÇþu:^¢i3¥Ì=ÛÜœ‰GÇKôf·yÏ‚ô XdÝ|_÷Û1.U©;íËòÒ žÍq¼œh£•y3¼ï83lÝod‰ÜL|ã«·¨ùÇKÐeÔÑL•ñ¶%øyV;^‚‘.¸7{ÕWþøÍÒÇŽ—\鯫8ežÚµYñŽ—`Nì¬u½çkM¥­ûM=Öʼ/Î ¸'…­ûͤ-¾•{u=–â›9^ÎZÇÛ­x*Ç^·7ì/AÓ*´‚Zôc†âƈªþ¥ßˆ—À–|·=ê¼›>ò}ÛBÿWŸü¾uýlÁ•8ÄK&=p€Î{q—úC¼>¸ß)ø'jÿûx l7b®^øˆ¨Žž,[Á¶ýqá£M™Þ‚™“:®7W¬â%°¥0Z+ü‡1Ù¢ž= ‡x €4á;Ðêµ[(.¡&ß—x A\Ü;î‹óómà­…Nï÷›µ–¬Â—C£j«üõ#î7=±ßVö…¶Ï„¼ƒÏuä<[ˆ•ô[jù›ãàO®_q¿Múɹ— ÎIJ±Hö\÷›Þ$à÷}y·@^^ëï€ë~› ´¼ QË\¦ù×ý¶:çM3d"jÿ…ü¹î7¼Ý›/íùÆ`v|³ë~Óq# KÛ)ñN˘àºßx ² WÒpˆ3ž¼î·Mâu+|¹ñ'»ÇsÝo›šP£`LbÚX“×ý¶Á|mɳV0!À²~¯û uHÔ:fÁ*8ÊïfLpÝoÂÚzžmMt®¥”þ_ınË!F½hµCUpÀÛÇò¹ßŽÕ$zá— 9F|çºß á†Ÿ÷…&ìÀi3ÏývØ|JßÁá´»o-Ÿû à$>æ)¼x ?úÓÑ’Ïý&œ8¥Þ‚fÎûö¦=×ý¦iéþ=o±¡=àõ¹›­û 3<3$žWã…­û±BöÄ“¦ƒ`2èk°u¿]˳ O¬F‚gÛÌoÜÀŠ{ÑΛKI,^Zs[›Ov?ãxk”÷Ö&Íü†Þ>ŠÌ¤žr¿õ;i;ÜÖ‚ÒUûn?›ß½â¦Û‡iÉ#ÅLBŒ^ågï°ž-†¹§>×Ò¼Ðú £6.m»-u´²—vA? œœ+ùçÙÂCJ=kùÓ¶æ·fK_9SõË¢ù-uQ¤]·à æ|äó kr‡f²t÷Û0‚HÄrh»„õÚ› Ýý6ÙO¶k?¤AuÙç#Ýý6î>b9„Je‡ôñl…z¯¹7ýšw Ýý¶ ó/£ôCjͱ==mÝo I¶®Â¯Ô¾6‰ÙUÒÝo­sFpጠ‹ð9öEw¿mr}df<)—cÓdæwp¿mPŒS_™ü‡Å6–àIw¿AU„¼Æ\¿“2FÉÑ’ñ=Û…A`¿ô'q–íÔ¸“á~;,‚¬‚á}[aë~;ÌMÛ^µW¹!„¾fî·C³/ÖÎB\Ík!×úp¿iŠ@³pY'úúk¬,ÃývHØh…·Ñ,qÅ÷î7áðˆù8D¤½,´Îôñp¿ `÷v W?T*.Cž-QsþÅÁŒŒ‡ëQ“á~Ó8ŒuÓ‡™j#x2Ýo6kö7¦;{ŽÀÚdºßn3âê-¼í˾à`Èt¿]ÃåvéaÒo}‚ï;ÍoýãP«+‰÷a®ÊÂôöÓm-Ÿ)XÅ…6gŽv„ír[†÷•Ù2†ÍÐíi~Ãö–—¯×‡È!Š•Ìã¶õ¡ÑWå—pAä¹>Íox%)ân<…Ë^‚àvȼnËþ¶s¾žþìÆ9|±>·%¾øUŽ‹\“Xˆ5¹šÛ ¢±˜w‹9ƒ6VqEN&Ëü†ðõVݺÆc€Sm#.Yî·9ƒó\ë”ÛD^ël¹ßtGH™qò¼øÑ‚3zwd¹ß Bu!Ýk}±Ó35%e¹ßÖæÇ,:œ[K·Ðiå~[–”YEó`(ç­ïà~ãâ*s‘¹È$ŒZ‡,÷›ÝÉõ€œãul<ï¬í~;9h»ðVåÞöÉxg»ß‰¯oôQQÞ+χí~ÓÓuÿ}Ø…èÊ×í~;ÒÔx=ãŒ@ê³êe»ß~¬“ML9ñ9™fë~;¬ÝÎÓ®~ë±&·ûíØœ¶¢gnÌÅïäù°Ï³ÝÀKL aØ"G öüv¿a˜4î‹Ô<ıÃý–¿Íý&Àî—úÊ CYŒÅ:;î7Pû€‘æ|=ÍÈvô€ð¹§=Ûuªî8ŽÙQñ'¸(rÜo—鬽g]m_Î}ã~»ä&µ“g߀ȡ.³¨ÕÉq¿a+Ls.âFC7ÚG¼¯û­g1üš{Þfžg_¾8^‚ ˜½´G j½ß•ç¤ã%C/Ô•ïØ½!Ö´·6õ9s=à ãµ@Ùû^·¥æÀWòB4Íœ‡½ò¹Ž—ŒÆncýê’"AÛæ¶TQ ̵ãúJ±íÏ–5%ŸßäË¡¿5l‡Û÷LÍÙ‰:p§•±†ã%ƒ¤´Áýê Šu Ýfq¼d Gä¢Ê?!èQûÇK:ÞÁ Z[a[H Ízq¼D/(´Õ™»ÔFÂZ;Àñ’1¾€yçÐÐ>úyÅñ’…Nô¤µ2ë›ñúšië~[º%PÌ”¸q¶ U¾ƒû¢"·ör}\Mxž//»QŒ«å™*äôžä¢ˆã%è³$g/ceø~Ë÷u¿Åsg$N9hp-#Ç¹Ž— ¡.JÆ0 ]Yf ü:^48W™É íÚÅ^ì°u¿áÉAÙÆ‘å2[-mÝo׊b=÷ØèŸõp/—3wû—yËa§RKŽÀu¼äèVs=ÄöxÞäOì¹æ· Ù†c¹´°§-ú®ã%ºÙØK{K>4PÅ‘ [y¶{§(ƒñ•Mî<òu¼Ì|ø=±×‹¦xÔÆ_\}/Á¦Àå{²Qäb}~„msÛFÍ¢2#m™TÊ ¾Üu¼d‚…Än—ø´Ã~"溎—Ì6¥+kÌ:öãéšít[L oÃ0&À²Ãœì°]ÏâV¡YĶRtÐߨÕu¼ý’b´Ä^1ë¢Ïu¿¡û[YÏš“#&LÿaÒÖýFžb4Ô6hܯ\¿Ž—ÌΧôRçB-ƒ¬I\ÇKðŘeN¶Ú1Zïëx‰&ClŒÛy·LÎ9rÝ$³u¿x'ÏòuÕy/™zimpÊ; qMr†­ûmðâ”9bSl¯D¼~/™“ª›»ÌXÝg~“™ïà~›DÓ2†Ñ¸2'OƒÂ~›ûM£žädÞo+ÅñÒã¹î·I\.õ•9›] Qc½Ž—pf.ߢQÈã¬ã}/™(,¢xUfDtŽzãëaÛž-ë…¥'áèIYxغßl¶èY‰WC`÷ 1(ö›ã%˜}rгRfØÂC-pÚëxÉÄ.ÀPævÊZ­Ðžޗh¤ .½ôö}F½ÉžÁëx‰np Ú•; L7uåÍ=ïx‰1Ì/Cô ¬"Žš­ûM]ŒÃvæ}¬{:4óËoæ~Û¸6[ò«7F °•&îùëx '>¢W(1 ž_Žì…­ûíàðj³œ© I èñ¾Ž—hÜÐj¿ôV:ŠÚ‘·\ÇK&†3£2kÓÐÜÅÀ=¯ã%X¾¯é3ç€Þóæ¦^ÇK¦–ÙKÝŸ3Hqöî7æ€1¸·¸–„vÈu¼d^*ñäæäVIMÔëx ñÔ¥GÎzÁ`â÷ix¦:^¢ÿNï¼5g¸<ƒot/Ñ[žšf_™­41m¤Õ÷\ÇKt 1*˜ÂêÔK¼ï:^²¨ !ÑNZòâÞìq¦:^öØ­3˜ó’ßwf>wºmGâœ÷8^¢ŸrÿSsg¤ñ`Ü-Ž—¬iuð–{H÷)d`Vž%Ž—¬iç\©5O#’¶˜…z/Ñ@ åQÏÒÜidÚMB+í:^² ÚRjùÿˆ™ž’÷°u¿­e¼Ì¯hβ Tb{ÇKô Öe^óÇRhÏþ€ëx †ŽÎ²ÞT ¬®CÄ=ïx è½rÇ1k¶CÖáD.}/YÈìr¸"1sᦵc9^‚NûVëo£Ž ¶BŸà:^²ÎehÁVMÂÀVÂÇŽ—,q²ï-9ú„<¥”ïë~ãxÈ»JïÙ<&³¯ã%K:õwj?"óbºëÁñ’¥7ÔÆq–gÔXml9“å:^² ÒA]ÞŒ5 ŒÿfeØsÝozµë~¿‚k /¿è ^ÇK–ðØ…›(hÖÞõëxÉ" žÚBÀ'ç fÿÛu¼da:G™]¥±Æâuç}·\;Ž—XûÄ—18ô P*i#÷…ã% uAü/òô.$$uÓëx‰IÑ¢X÷+æ¢<ÇÃV®ã%Û„!NÑòÚß"¬}î×ñ’Í$ òtÙÂÔnÌB½Ž—`(ÐÌâ Î>¤2ØÇ+Î_ÇKlÎpK®%õH/ĸ//Ù ³­÷¬ÒKéÿ|‡å¶†y—t S_Ñ?9Žã%Ô¤ªm¬1 +3_öÏ_ÇK¬ÀƒÊZþ6°ÎÁSŒXÎñ’ͤJß7ãIý¼óWMí:^‚^Zžg9 µÍÆüïåYhÀz¶Ð¯¾'±íÜ›žÏô2[T«€ðrÞÚí“?­û êP 727Ýa˜õØsÝoÓÈ×ÞÔ-€L^fÒÖý6N´ÐÙwqóÆx”غß&‡µÂX¡à ‰ïà~›ÔòÚ¡§€yulA•wN‚ªâ¶(ã&ÍXn-ÊL¾Ú8Êáf»ŒPfˆ“q­ËÿÕ’i»íÄ÷ݧ•×¢ÚGéù‹vÉg+Œ•»BMmXñ/Ù „ä§Ì:Äà\!ë}ÇK6†¡B\{—žx´HÞñ´þð;Ý–ýþ ¢ÛÃßžG)Úmm¤PÑx&÷E÷øfŽ—ìÍE5WÕ°¢¼­éUØsÝoç£8Å;Et=RN$ß×ývØW×î-z ¼[¾w_`;º­å¦¡½p0ÚaØz½gj{Ÿ­ñSgÑî—ü»;¾ƒã%Š«Ô³=íG³u¿é1À¡ªEgÚz£ÚßÁñ’}¬p¿‹^ÕZ@º[÷ÛáÀÐìûZlqÀ‘ñî,t ¹­@·¯¬; HÖë{ÞÞt¼d›¶qÎ\Ÿí²Â# ¶î7áàéÖS÷‹Zb७ûM0ôüKMIöaƒï®jë~»ióE¿ˆÆà#ðÐR”¾p¿ÝZäè¸/&磇~êø/É–"I9Ux|]é﹎—À÷«Î8Á©¡=eØšßÐô')pè3@‘©í§?‰2–Ù6:Oðz+hì®ç¤ã%hÔ3Váæ#0Jù?Ø.·àZÞ%E;ĤesM:^rL¤<ô¶‘ó@Ø­å¹ãxɘ8ˆ …?y©:Oj+n»A´Ý…3ÕL‰sØ^·%¯¢ÎR‡8³IÁ=[ÇKÈ(àúÔÞ%yzAjk~ƒzh¹¥¯¹]ör½ÑްíÏ~ &†Z>Îð±ã%®e´nöža|!bœçºã%§³|ì2·wrW|ÇKÔõd£îQxФ鿖ïà~TDèE#2í8/Q[jÌ¢w6øgíiýAÖÐm!¢–ý¼Ö ®{Ïó×ñ’íiÜé½há³Þ"+|áxÉ™÷P™©©gßâHúX“Ž—@ħ¿è9ïáHîMÇK40Cºvn«<&¶÷øŽ—œImÂQf41åR‰øÁñµÎç-:½h ~{Óñ’cºï¸ËlùÜo¨ÕÉÈó¬áœ-zmí`¶ä {ø¸3Œ]eä7s¿a$Puu¸»É£´›­ûí`>z«êµ¡—fŒ/Q[|_é%G?,k‰µãx‰îêJ”»pAêµ™X¿Ž—@2ÅÁ7«÷ñàL€qó¹î7a-¨U­?*ªü[÷›p”sÎøÓ¸ø ’‘ø¾Ž— ^MÞJê°Dp÷νéxÉŸ%­ä”5¨P7Ï(ÇK䜕ÑzéŸ'0÷FxÀVÜ–ó|fáOê.£ÌŠSÛë¶6 ¯Ü… Óz±µc_8^‚)ƒ¨<¢½‹ êYñ}/QÛÎÂtÁKÐ=}åm‡mw[ðM³—<`?*|ìx‰Ú¢‘dK­3èÑ‚Ô?ßwº-U¸×M." ÔßfÄŽ—ˆåzkåùи75¶‰}ìx zVÑ%\úÉ&î1@ØùÛγ…~uêÞj,‡áèàïÄYâx‰ØØ²6Kw[}åos¿5ÌÅ•õ. Pû\¾ømŽ—Pú:.…k¹M7¿¯ã%‚65à¿§Ì1·éÔ§:^"èš+zñÌ 1à µ“›íí½…~Î(!íÛèv<û/Ñã:OYÅ•GÙò™±œã%`‚#fÙ­ÌãèÁ¶ò;¸ßze—š;f¤&Ë}ìx‰z¬ å¾Cy$“ܰ÷u¿M4¨Ä@v∗ZÃkÄzp¼›€µFÃ\ÄÄkÆ7s¼D¿å°ÙôyN6Ôq$´ÚÕÖýFhDäüê³üØößÌñhìßýèç0 “°u¿-~ËvËl;4½XÃÞÁý¶0ŠüÖ¾E 5W‘;†­û ~(ê–™!ûæH{®ûm]òVJ…`tg+lϳÅÁºîøf}£öì¶œÏl\N]WØlÝo‡XP/üIˆÞ×ãh¶î7!0ñ•³oA”¥¨ümî7±~Ü{ Ÿö³6ª/lÝo—èHðûP÷çðÀv{¾¯ùí²%­­Uz‚tÏs¤ì;ûšã%zuÏ:·¼+@¨Ços¼D·êçäž?¨¯Ñâ¹Ým9ç5æVsvB¿í¹æ·Û-Û©4Å®¥ÚN·%=g{ 6Ò(_¶‹¶ËmÙÄœi`b˜æúFîÙ;l·µF‡^9œl£ê;Ûq[6ÖIËZˆkà`Ì|_q[ãŠàýÑGâ”Ú#Öƒã%꿵õœÍáÆyÖ/¹`M ®Îº)G´s梟ÕÍñŒ)%9ShÊeHÜ…ÍñtÆö‚Ëq4k‹wÆ7s¼Ä:ÄÍvFô¼fë~Óš ž]øg”)(lÝo(ã~K}å†&›w·ØsÝoºj²J¯2ÂÔ–¥°=Ïv²¯Ì„RYN`+Íñ’;w§èqéÉ<”g–È»›ã%š¶ò^‹¦ä䜊xTs¼UiÌ£*|9½1:(s§æx &V³ªÄQd>öïÆû:^B†K½/ ±Ä"W‹¼°9^r7ë¦UC°¯bˆÏ…QÛùl©ŸúêY¨YèG­yKs¼ä¢ß = ­¬¶ó/HmÝoàP Ž*Z2B½×ÐjG7³ÛšàO`L £™PÏZ;öã%÷ñÜ¢‡‡®:´E–Ù/ADÍñóE{áR®°Ý/ÀeáìQGŸ™eغß8sW÷À©}¡ý-7lÝoè'—5ëþ˜Ç¨®åsdzE©aõ2³Tþ)NŒA3[á¦å\ß šß÷5ÇKЊÉW/#̽‚í~¶¨;õo'úGS cƒž-uz£åÛf/y`+ÍñB¥¿ð?nAáŒÊ|®û m%¤÷æc;ï“<ú‹ ónK<5kTzwÔñµ…ßÖïÇ'$ÿ0<›1õ‹F¼¶ÀHoÛeVç!?jÆÔˆ—ÀvÓ^Lì"³_·øŒg5ñØ’ ×ʼ¯c>VŸ7Ûe¶úŒXn–œŒÔÒàpªív[ ÌY´Ä¡`­öØCÄK`»HÄ?Y';;-ú¥ÕVÜvSÓW’;¾)ŒQ²°½n‹&Ž¯Î”ï¹Ø6Ó˜ï@¼dlXìU.ÜÐÁžb£Û™­û3&õE ·ƒêŠ"-î¡ÝŸ-¸•»è÷éžgz’gêv¿±_Tz‰•5ßäOØq¦îùlqDÿ&ûõÀão™C¶½ž-ùNáe‚5ƒÚÍ _l÷[çÀåo–ùêø80¦¶Ýo­:GZéaB]qغßf·JÎé¾TS,k}»ß& ÇZ§j¢òÐzü¶ã~ÃÔ\vt—z5ãB?UmÝoÛt»ÊÌý­,•ìx‡ã~C¤ úY4>,‹ÑÔíƳäyå;`…qtPÜÇýHð$¨„q¿÷š…ÀÍ(Z•—#{[ä±í¸ßd’$xS÷V_’Qiç<[ê6·¯ÄÊlð^#›ûM ¼ˆ&ø2E8 õqgÔÖý&$®Já¯ëI÷¬¢‰ûíš_‹çýxºjë~£<ˆ…냒2F#½w÷Ûµ¼pŒ©¹|T¬q¿AäýLÝèuþ‚ë®¶î·k|عkŸpeîºÚ®gË>ê¢õ‡ -gÛÅ÷÷¨%ø_ˆfˆ³DÌo tèKík“^âI·=Yœ9wG/ró|ë¶œkÔ¤ô0aøe¶‡ÿEÝl-0-¿/î@I™3Üæ¶¸[ÄžÀ(Wœ3Ô¶»­aÅ=1Ý;ÇcyŹs‡Ûb °F8÷óÛšñÛît[4JJÆ}„PH3+ﻞíb£YrþÑÿ¨éþμðšß ÏÂ[A¥ayËу°u¿¡<”‡q›9Ê·œ}×ý6&zKÍýcÛXŒ2­ûmP…ê]*]4(—ï8«û÷=[öoV}Dhª¿Z‡Ùºß& ó½p}PþØ)Õ [÷Û¤ 㑪§°Q÷^pµÏÑz?©O  ¯óÆõÿá~›ìÕ8E¯mmò®Vpúç~c#‰.ª‘óôâ¿ó¹ûÙ2_,ñ¯pFà½{öÏý6A•^êó«“öÚ‡øl…Â&?k¦q—ßÁý¶&"Ýàpìß _#bûÞÜo>Á€9¹>uhóÎõÞÜo‹=ÛßLNŽž+XëÑO¦¶î·=àИõB ¶Beõæ~# $¢¹Îˆõ _4÷ÄÚs,q£KpÆz'mÝoœroNŽ >—Úºß h Ñ®ó¡í–û¸7÷'˜òæÇ‚¹ß‚®¶î7Jk~9wã0…’~QËïí>[Ä0cd-ôÓ“h¾Y:|nÿž-ÚÝuž%ë"oî¯Ú¶gk`Ù,3£'zøÇß·»ßûX÷¬¼+î͘Xïî7±2ÃȘ@/F@N`ü½»ß®ñ¶û-½Œ¹ÎÌçºßî['|þMN|jYKêÝü¦kÕS´ 'Kù©ñ¡¶æ7Q(<]ð*Ÿõï„ߺ¸-ÚmÈä:C‚©e¤íuÛIÙ˜àkpTêzßÓ4ö涤šœ7~8ï€:ȱ&‡ù­ãÄ/ó ÃtÌÑÿ<öÛèn ¶ƒÌ2³Môaó; ó›þ7 H‰Ï ÝIÌ Û鶈?)Z y;¶Jøm˜ßt¥Ç{þšIÈ 4ùö³Ý=Åø¾U”}¨«»í0®ZÑPü¯÷á~›,¤¶ü æì}ófÌö>[ ¢£Ô,qÀþÞoÓý69|8õ*:æo¢Öa÷±ÙºßÔ£˜áUç¡tꔬ™ÏíÏwÖú2.ùLßsîÙ§ûm¡•O†T\yZ½%Î’9Ÿ-xº¡ÉÚ"gØJäN}ºß§Å¥(èd‹f½»O÷Û²jÒ*¹yåé¹7§ûm“_š$„»I•_±&§ûí@{7ŸZÛ.5¡bF°Úºß ó³ôÏcäÍysH÷õå~;œ{sû€ái<‰¸dÄ;8^±%â¿…ÎÁ)Ù³‚öö?¯‰õãÂIǬKŽŒoæxIçØ’Âee 5{=Oœ“Ž— ‘“…£^p‚‹­š¨jë~ƒtTÅ@€]±·zŽð…ã% Þ³0×èF¸/ò\w¼Rˆ"ÌÒ_ˆb òÕ´•g a¿^´…ö7m¬AÄrŽ—PÈzAyÏëMAêcpʺã% &R̨ð=Ñ,…׊ïëx õ)üê‰iï›Ïín‹æ]IrgoP…+~›ã%ƒ ¯ŒÊ3縄/´ÇÔÖüÆ$å‘©=öܬ ®çºã%ƒóñp–ž J¢µÈɺã%H”w6ߘTà¡òAîMÇKØ› ûV’ëÿ1Œã%ƒ…ñZâÔƒ—ÚBqF9^‚€j>r½Ÿ;¸³P&~øCw¼—ø,œ'èЛvži¨po:^‚ ‰=¤‰]5Ĺ/lä;8^2Œg3YˆéúßÌñ, Æ©­àrÃÑow‹ã%ŠeÊ\p›ß}2þu¼d û ‡WÞ-ºOZsKxþ:^2ÀLL±uäÇ` Ƹg³u¿-ÃÃopé)¡+¡¶î·Õ8«¨ðiÑ$4¡dw¡ã%®Ø\gq2ø©qÏ;^2cþÀVPiàÕëéñŽã%C±ªnþF‹: æ+÷¦ã%ÖØÞ´>ì‹«´ä8Ž—h>LÎnh!›0ß×ýv8X+øà&÷®Grëºã%rU³Ôs6ëõ¨ÕuÇK€#Ž*ºT€»ÑÃp}.8ؘn ¥]™ÀL`àg#ÎÇK†v³Ô’ô½¨-ëÌñ’qqc´¯à\“]ù Ò=[ÇKÈ5.Áh<Æå#ÏÇK 8ÄY±_©'\gŽ—¨-ÛJl„åD\.|ìx‰!lÀ<µÏ}q¬xž“Ž—LôÄÕ»»£çÊÚòóÖ³•ÿ™÷¥Éñd¬kÒñ’ùqÖÀ(œôþá#Ö„—Ü’¡ÑÐ$ú-ßÍÅ~Ô~‹UÞHMúÜG—Wøaï×Ïá%w“ ÒÝë3°}çÚý7Vy³;øÎšEíšãwû&¼B 42\—pˆø]å 0mšë¸{ê¼Õ\}Þ­ö¼Êñ™<ê~ÇhªÍØû„—àŒLCÄVîÍ m ç”5á%KUùLsu„òƒKÕ„—ÌBᮑÏîû©p¯öoHx <£wö¾„Ž@ç}rú^"¼V¾˜«ûâŒÅ|ôôKÄZÞ&¸¬èYÆ,-lÅgæh5á%X×3.7Ô’™~£ñ]/‘sK¸Œ1¸âo›Šm¦É˜Bµ=ª:± /¹Å »ûÃ]VàæG  /™}²‘xòÌ èÃgÄ>)¼äÆRCû‹:cylïû;^2;‹µž|lÚ1i7ÇÁ›ðŽ3fMê ä«÷[šð’‰ÁN4¤ÒlÔWëäíQÂKîŠé.0~ÌÍ|f_¿«¼ î}Žñó?7ÔùMxÉœ•ž I;ä.'οÅY(¼ä^1Ïø¼ê'1¯ç›ðô¶)<“¸‹²€^¦¯á%èÛÏ̇©ø¬H[‰šLx ¸EÐÛ½Rµ‚?ƒð’¹( gÆòhÓòÅFxÉÅíš$ÿÛ ¤¶çXx dÜ0¿“WÑfÛtù|K^2Me&ô˜€ÿ.z–z¨ /¹;r' ý%Ü~AY°9?µ /)Œ›×J>WòÏð}Rx vj\v{Ô÷^vÓvl° /C›ý¬Ì#%¦PâÎ%¼äV±•&©I³ìÄ{‡é~ç^r/mà –V’¯%ÆzÔ›ÂK0¸ð¥{5ð3Ò$µeð /¹™q [ö*¢Dì©ÂKÖG"Ræbß²‡:OÝëcá%ËWºÿ.dÜßw„—À_ú<â‰p‚§ì¨q„—, èìÐÞ…?Ã0«"_“ÂKîUƒ\ìßà%pCc^‹Ê‘ûN ÖA`»8‡„—¬J/‡’<è ¬íø7$¼dÁùà53…k4z½§ /Y˜hÍgtg0R#Ç]xɺ@vd£&ƒztÊÛûºð’›Nήg|úïÉ‹äÆ*o8bʆ¾=Æ'ü•–Ç*ob“{Ïxg‡¤2èÀzìx±ÔHJ_3î×x3 ]x ü¥¿¼—@§ uá]TÕw½XŒ5á0…æ+®oc•7ȸ“¦yS '“즼uá%k„0JžQ /íòw&¼×5û˜oú¡ È,¼5Ù…—¬Á3À5Âð&íãÎÓ~¼±ÊÛ ÎtàrÐ)Cõ>™7VyèC–þõ¤ßWHûây•·a@Jâ~LƒpgPÞ¦ ³÷¤A¼Hw®>KÐ…—`/À%/ÍuܽõÔóaº±Ê„Fp±(éž ”ñÔ»_,fS]Ç…”ò‡ãö]xɽÚS‹#{tÎèÎXëÂK`F…1õ7çýCAspîW^²Ì-v®žsc¬8¦ /Y&’0¿™ðŽWïvá%k5 [¯•æMa÷ î¡Ç*o«³¥µÒ|7ýÂðWx¬ò†éŒ£goÑO;øà]x ¼¾I¤i6j€{9Ó3(o{4|C'õ¥ )SÛûÝ]xÉ¢MæÙIw¦bèÿ¥û;SÞŽÍ‚·¨çqïÝÎ÷Ô.¼dS$úž‘I÷–zAè§¾g^²iÜøpð ÷é¹½vêÂK6ý ¿ôK5_Îð¾S^² l–¾ž|lF#­s׈íŠ5¡¯c7ù“°ã‹ýAxÉÆ6‰{j|g’KåÞ÷ÿ`yÛõ @ôiú²ª >L^B^´)ã.w0Nµ#¼d›HGÖ(ï¸Â£Iôjÿ.¼Sùœ¿kæE`Bû=µ /Ù³ÊÁ‹Ç]a§<竼5>·Ý 37hÑq.¼dSè|»^ÐÿpÂ3ä>îôXå­SÔl¨!ËGoš/Î,á%¸.a-©~k´)>gÙ…—À©¼âÙG¶˜väç¿«¼ Èå¯É ™Á1vOÿ]åm@áô™¼Á¤½Öô™•.¼¶cM¼èCn t¹æK^r9š õ¤\(ÂyáïWx ,œI@,©‚Öýßû„—ìYp7ŠʽÃLôpvíþ· /Ñ “„ËÝã‚^Žsuá%÷ zŸø†:®ß_[>KÐ…—ܧ5¢xxÿ”f*ë=bÇ‹íïOs(›ÁÕy]xÉ](hvÒí˜ ³>9'û]åmÑ rÍ4 3©®ùlp»_,EÔ’.ög’3ö(á%›ûÝÇJ5$g5B'§ /¹ÿ:¾Í™|ûîÚ83ZˆUÞ–qÝ¿žê€nÖæþ ÂK¶‰ŒŒä‡²+=Üö‹‰U Ž'ÑwOrȃú{^Bç|Cq·'–…¿Í÷Tá%› Qò¾œ¹ìpýð¼ /!®‚Bi'OúrM¯Eºð’ó±/Ò’/í} ”Ÿrí.¼—ÝÉÇîLáܵC¬å;W毳 ÏvXÜ«…— Õ‡¯¦YOL&RWûí“ÂK0]>µ›§—ÏŠýLx f ¼2àçÃyé¹=oÂK€€Ìq]Ë ¯äN‹ßíÏÐ_ì)ÅJûΠýÖçµt^rîqŒèçІþ/hóÕ{ã]x ®‚4C]IßpVM{Ÿð’u¨7HòüúûÃõ˜ºð’ƒÛb‰r_ßäï5wá%(Oz˜ËH£œþNÛs,¼”^#Ò¯ |ïãtá%°K %z`³s^äá%]x ZT0~Ê>bPGÙÒ¿±ÊÛ-Œf\ÆÌ>îs½¶.¼ä@H3z¼ƒgîçߦðX>Ñó&ž·pÆù&¼änGÔ«ÉwgÒkÎ}ŠQM*$ÃåÔ™·]ƒ¢ /ª1´c6µ€»‹vÇÂK½iR3¡º+ßä‹^‚2"™½q&N£Ð‘õß^‚‘-êô¶ØÆ5ÕÂK5ï}=i&ÛUoñ»ÊÛ&7y%ŸŠ»wƒŽýLx Þ㈋õK¤e²Vü6…—J€í7a¯›öfÆÑâÚ!^‚bãñ°/ ÄÚ-5¾yâ%7ÒQ¼i&_Z“Rò^]'^‚Øf¡ÜûîúÅÜW'^‚ØÎÖxÂ@@5æZël/Aì§ÁyæðÃG㟈-k<¼/añ ®Å8BÞ¾>ˆ— – t™q×Àáö373ˆ— öpö·&mî Ý:·çCl±'¯`x‹5Cñâ%ÀæÑkÒEÃJü~ü”70úñ‡$ßß{Ä®¤YYÅ‚W|Ò¾ÁÐkÀ›ˆUÞ:gH§…Œ=„›4rh¿{^,üêJÒ3Ÿ×Ä7äï·(o\¹2¾>çPBoeå­kŸLg 0¬__EyuФ)õy;­ã«ŸC£´‹…’ßœõ¾ €"¶¿X€3ágØ'i÷âï¬(o䙟t“`¹Wƒ†ŠXåm ,+ÕÝ÷ПðÂKÏ«¼gÅýì$žXÁ²ì¬ c•7C{&n~3;÷åûï(ÊÛ¢ËIüjL‚A¢É1èQ•7;$}Ÿ´ÙCÝæ§55ªòvwIÎF%l›Nî몼Qwü„.+>•í%8D£*oävœ6[ò\À„ã·|oTåít#¹Fÿâ¯=쫼A¡ó™1«XáZµ6ÿÛ,o¸Aµ°’SÏÞñ K±ÔIß ƒ^íó¼'<ªå­N’Ìú0 ¯ö”ýwbi¸¾ãP$ñÍ·O±ÀÄöNg÷&yï=ìÑ,oü< ËvJ/ô`ŸÏë­Š]4°ø¢Æƒ©½íÅ~×òVgV‹ý¬Œ>AðGëŠ r´ä§vßîÀÀëùÑÆ‹¥OÛˆz•Åx«¼µÝ)ÌwDríAWòo¾)oýþÙ¯ù€Øx0øúmÊ[_¦•jÿXfÌð¦¼a.ÀZª ùE͂ە7H&gü ZÁ¸lcGôXå2e%¸I篺kÔþÖoWÞ&ÅÙjÖX‚Þp.]y£ßç>_|oe6gìï¡+otw<¸Øà€f;^,¶¤o%¥A)çÊób0VyÛÜÄGâD‚Ý/Þ~w½XðlFÒŸÐAœ]yc³í¬4?6úÊsî£+oghéÓ+àùíµôÊۙ散Ö+ÝüâÞ7•·1hÇ—fW#çiÅù6•·gg™|£ØP«&¥Ä}g*o÷$iÙ3ÜœÒ ¶ßUÞè‹2!jé:ÉùóàXʰ6ÌÞ>y/ëý‡«6–ò¶IÄÿ2~vo­Ðôsý¾±”·Ááû-G~ă¡ï;Kyƒü0wF𱱑äözãcYÞpçƒFsÚÈÒìékg{¬º6µdà§ù5ïÍŒ5Ël&_»$OÄZÞ BM¨u삇8pñ [±˜…©Þ€VÄâý·ùÜ×XG±(»[î±Ön2;Þ›û{±÷ðmÙs|.ZZ<.öØE±äWŸ¼ £éúU±U± •·Ì í•7žæsÍc[Þ08Mƒ•4îÈo+žWyC÷ óÀÌqÂã•;Æ4¶òV':&+ñÄaH&:®1¶òÖ8Xäž»,{îÊÇvü®òóŒÈÆ7Ï¥Imoß϶ò6ì+NþdP–myv}låmžyØwÎq+v~CGy›˜oY_IØv!5ºGít”7ÌÚóräë¬Þ›«ûCÚï*op–E=´Ï·Q(¼ùï*ohݵš0G F;$«¼m늵àGá:°èGýÞïQÞ6š¡%|ê_ð(ðÈáš^Òàé þcš!ž•9½Cx XæxÚäii:Øù¹>Ì^Ò©Ùú¿¨M+±Ìg¡ð’ûµQ›0Ÿh…ÛyÛ(IrÂ+÷wŒÝø\þ^#ÜŽ=êK^=úbMá%ú\q8˜®ðG^s%¦ð’ë÷ûZ˜ÐèXÅö \Ù{¡)¢%Fsý‡)¼DÔóg§™¶fpÔÛ§ð’»ôHe EäøÃ^rß"È©cfÌ|Û¸T¼‡ýb1˜'hçš>R÷ ¼áp “>ìp!AçÔç$¦ð’ÎÍoG.6Æ4?ºÅ¼µ>…—€êŽ9…4£–Íæ±ÊÛ@ ç8†“:ÿÁÁ˜ÂK`²ƒ¹¯™ænõï×ê™ÂKhcŽú6æºí%FÕìŒUÞЇ„¨]O~€èv­˜©˜ÂKúìäÈÖàbCKíÂÏ ¼ ±¾’ùö€PZ÷«¼a{¸…þÊšÕL¼ü^Ò!ê ò_ªqØ¡=Ûuz§ðÎî⼈}§ƒm÷øg|á%˜å.Y+âî;ßv¾SxIçNRã^Í?P`xSxI§³Ä?t§½_åÎõÛ^r«îð©†ÆF=Wò¥½±C±Ð_u§³e6ZIÕxS±PÌüò¼ÿÝܨ5ão³¼ ªÞÐÄ9Å×ýÏŸÁò6àrF?Ô¨q`y$_;ÂKî…õü—°âû½Cg¯Ç:^2ÌŠÄ1j<çÙLá%ÊhÀåân3çý=ÂK°EôåbïÛ·¨|á*Sx @*jR§Þ¢yWŬç^rÏzb¥>ý<ó,Œ3@xÉý²î®Ø^ØîÕÐÛ’þ™=ÃR¬ÕàÖ¡±OšdüîVlgÁ8²îG}$çÐOá%wŸàE³DÍ[9/¢95>ƒð’‰Û"ÝŽ7ŸvaÍy+Sx ´úîý·%~ 쩱޽<…—LØÝ_ LwU Ê'oš)¼tûEqÖø†@7ÂBëþ ]±e° IsãéŒÛñ³)¼äþon¡Ôªk„Ì34ºˆÇó*o³´üMsã´ámÎ¥šÂKîÿÍl™‡ “x¬ò6HpZ‰;^¨X»¦çUÞ&1­/éïÈóñsmÍ)¼dÎA^Zò~çÄöu_ÂK&à0`miVn²ßÒâ,^T 'k‰¾ÇÁ§ðâaÙëüÉÅÙë·)¼’f3Ï05”¸¯W÷œÂKî¾GÊðtøŒ¹ÎÞ^Ï´èSÍ€ ”ú|íy÷^²èg¹ÚHš|VÀõs}û)¼d5DÎÔ«klË9DSx ,‘'î qW^ ’­8WxÉMBùÑ]lä—pÍ×™ð’»#ÃëÛ=l1K°)Kq¶ï}ÂK&“ñ·%ö êØZ±§ /¹‡ý‡úI¼b Ÿ×SxÉb£à;-ÕÙ^óý /a;+óå/ÛßÔìòß/¶ÃèyDŸ—çòÚKö·)of.SÓmÚd¸_Ç^‚•@_®4Sq(sþoSxÉ™uf`6¸sΌ<ó î+¶R«²&}£Þ'-Ö|=/DÕ‰®%í] lÇw¦ð’E¹Ù2ç`\IößUÞ¶ÙßN=ËM©k×3ŸÂKnAhnIópCök/ç§Ná%·ô__˜ÅÚ¬ s}¦ðŒMÐãŒ5ÎÓ>±Ö…—õœIŸ ØÕ ,=ì)¼dÓ㯅×Ö ÄùÉ=Ë)¼(~w'½•{ ÁÞw¼¹æ)¼ÓV”@K<±^9Wç3™Sx ¬A¡ó?Ætÿ_® 0…—쎽¯î{ FßéékGxÉ6IÔ:ÇBJnù„XËÛÆåúp™ëzö¶Ö™=ÃPì€üÍ׳o%ïKìQÂK6ð|r{â»(ÔâÀ–éÎLá%àeÒãq$ AØÉÁžAyÃ…Ë|šÕXüÝîœô)¼c|¨qzòi€JåËñ^ò4:ò½_Å7ü,\ÂK@qÅÌI:È6rX·_ÂK6ät ;½[‚ °5:þ»ÊÛÙ7“6É#sö–ðl´ÔâNÞØ ïŸë}œ%¼w¾Ã_J÷¼ ç­,á%X ¤'W zÛ¨ç·?ïR,;Þ›A­w?dH¸x–·Ã{jm½'¯¢EhpÄßv^,3AX;‡zº¾÷-á% G¡ œpÄ:AXÂ!Öòv ½ BaºWoÚ‚Îô»U±·»ûä<Ù…®'¶„—œÊ!Ç'ÿ+v¯fCVûÃ^r÷e`º#q8ï•7“â8Ì^‚‘Aê”í¤‹ ½bIÿÛï*o"ØgGÿkð𼟵„—À”â Dݹhµqâ=(oÓêîÄ'øz¥µX‰XåmRÖ)¾ ô7;ø­Ógð–ðlt0±?¡·=-v¸Îÿ^‚¯¤šk 4ºåñ / ƒþEòn…q{ÿ.„—LË?š’lMŽx^åma†tמxx÷j…ÖƒóÏ–ðÊO ïsu9i;z€Kx hjÔ"ˆ9ª²Úc‘·ï œ°=ùè‚»Šßõ}r/A,…ÜVÂíIÍãì?ï±X0+¡q89ôöøŽcÛ‹xÉ¢ŸE“¿Þ¢µMóšl/aÖî+ùó.è‹cÎÇ¿Mâ% ~,Ö_Ü/žoþ¼ÄK}Ø@©× /êÒ¼6]ÄKnl£aÙÙ—ÖôÁc=/A,Àœê\*jJ6âè^/â% ²<±NÏhÜå·_My#g¤Í‘t¼ g[ãÜ\My›¼¿~_:cùO%lpµóbQ_ô„W7`ÀKüývåm’¤íœÜKîEjeo°Õ•·9m>+p‚=Áš^Ëg˜VWÞ¸N¾ü~»@%<¹WWÞ€anv$½Ãë]ñ3 +oÍÂÐs&ÆyôZK<ƒòvqÂ8d§zsŽayŽ»òvÌÁ-ùžáŠ8~ß™òFó ðz¯„¹Šï¿ÝòÆÚíàûJ>?R)ˆ=Šå0ì—øˆp¯‡ÎcÛk|/–Ú‚ ÷¤^mÐS[ËùÖÎnÀ…yõ}gXÞ0]Ž™•Ü7=´4œî‰µFSìÀý÷äYûAéٽϻ†å­ o \#¾¡i-#ódá;C±çC Y“3uéá â¿ky‹tÅp´Ýíìã~Øk,ÅR¬/ößs¯wúÊߌ¿My£ÏJ«‰c°r=ïl{^åmÀÜsIC2ˆ«úß6•·†SVòøkÔ; \cMåàÈléÌ‚û2J¿¯¯©¼M#g$í~tI ß糓k*oÂÐÛú¸ŸõX“Sy›ô ˆú—ÄŽÜKZSy£®ÚýÄú½÷5\?‚#»æ|±tÀ/zu¼Nàb}ü)o /¢…Æi#ê~MåmÙíÑ5gå.¸Îâ)ol˜”™6iß×…— tTÁHúà÷Jëò|á%Ð þò~†òѪÀ¿Má%›®¥yÞms–¾ÿ /T¼,»G50x²Å׺ð’±iû£Ñ"¼__;ÂKÆF-Tãî N/åb¿«¼›“H¼mxˆã2ú=ý^2P·£#Z2"Ú´“üw•76ºjp\ðmR¹´:‡h /Άºåg&³Q0ÈqÚ-¼dbÖ(Ä?Xã@° cT~Î /™v©~äNÓØçˆùçó [xÉ„§&îˆ=ú `@‡Èÿ6á%³ìB¦%l¸}êwoá%ƒ3™ÏÕÌþ0¬ƒkyC) Š«°w€—ØöïXxÉ]ªÐä«-×"…{gܹ„—ÜXààgδÖwùB>±–·{‘ìè%ÕÄ«€Õ=îˆþ /¹ÕЬ8Ó(æÐÇù^{ /™“À_‰ûæ5w®É¶ðY÷ŒY×§±QQcŸ^r_e«8{ºN_{ï%má%xíX€#ÞØÄ¢Ÿµ…—LÞûvèÕ»Î`ûw–÷M·ð’»á€¤R³?ï"ÿòsLl /™ ób”5ß«+¹u+b•7Úu”‘jÞuÿ\\G¸…—̃q¦ò­Ük6Ë‘[·Xo| /è=ßNò•kbð·ù:^‚ÁèML48Þ¿Çã˜(wÄ{ËNúAv·ŸÞÂKØ©H³¼ƒ[oÆû8[x pƒF+™?I_ðȱð’ ¦ýåsÐÊ×ã^"¼ä–_XWmÇL<įXG<Ìf /A±‰™×/Í"ΉÚ?üM·ð’eÞJ5iÖfïïÁò¶8ÐP[ž <îóákRx H£˜y­Q_Ü=r-& lÏ«¼Ýo³‚+˜î°–çòY£-¼dÁß´²¤ Œ(ø;^²Àí¼›ÁˆõðMü§•ê á% œØ ŽŸþùTžcá%·@àá˜.Ú˜0YÀ÷êwOá%›âž%Ï´UÌølóßµ¼mŠ Þ,éZ~¦<5ƒð’ êì]¬#rüQþ â‹»‹!ŽºZÒS¨”µ6&s!¼äî"è;•xÉ‚ô­@üw-o@Nš 'óâq nó^²¡O‡^GM³žÔ2èÞë8ÂKn,D|îë˜!¶½|ï/»‰ŽhÉó|Sƒ%0¦#¼äÞe È›y¯ ÿàxôûï^rßùM‰›?†éu{Žð’{ÖÒ%â$¿€ÒØŽâoSÞ&øëqÿ£UhÉUÇKŽð’ÍÞA9YS§lÔx^å  \IEüq>^å H«ñßüÅÁ-VyΊ3+zãîÂy>ë/¹ß>¯M饩@ìRky;ì3×–ðI쩯×|„—Üœ`j &MÔ{ÝÅÖyç:ÂKÐ}›1äÅÞ Æs8¨ïâ/9@µ0ö•úY7ˆ¯Íø]ËÛé•ú²%´óè_‰<_¿ÂKîÍý€/if@¥e?µ#¼Ç O©ß ƈùÒ½Xá%÷'Ùõi¡™|‹žLÇðôì¯|saó= ŽùZ^r¨_2óüœæp{õýá/¡Ol4™-s5‰G_;ÂK(—Œ¤ú“)Åýñªâ_+=qCï_Öqb¹†à!^‚X+ÀÖLzñíÜÀíñÄ’Õ^Ó þF:Ëó‚:ÄK@6m4ñVÌ[ ž°^Çâ%ˆedÕßEÿheݼïtˆ— vSÏÎg×Z0 ñÞ;ÄK6.ÑØ·gM½[óX‹™ÌC¼Æ{(º—ë™sœ$ŽRœotˆ— ¶q€xF_ºoS爵C¼„±`$öį¾Ç1¶ïðX=My¨ywÖÓEópd‘Ó”·m36_ê롈ÀK.þ¼Ê›9ƒº´õÑÁ³Y>¯wšòv ½ ’Ö*¸3îm±–7‹ðqìq¨cáçñé–7ÑhPö™¸ÂXͱíÓ‹bÛö=öÔ Yò2<¶*vÂMg§’õ=ó5NoŠ%2ørVö`öÌ1…Ó-oÈ ñ}öÜ7ôðÊW#v(¶b0®Œ¤Ý¿¡D_úô©Ømî±/Dùx½æ­[ÞJ£ï¯ŸCàpB paüîV,_|œ-°6ÆI÷õÛ•·QœÕ÷`öÏj^ÏñPÞ:ðÔæž8/ )ÌÅïëg(oú;eg zhGöxCy[›F`_pö6¦÷2·î åmSãcÌ̦õçia±ýÅâõý¡[{B'ǨÆ|ÃòV¡½—fax÷ä…ò;ñ S±@ºî5$ú6Üâo³¼ÝRqD/ÿ>õKÊ«¥Ï°¼Õ›]v3õ|îß=–±G±èǶݺ>7âïÎïÅvàà5°WLÀö{Fºîí™–·Š/ï,¯Ñé× Úw ÿ¡3-oµ“k6¾|§%Æ4|Vã̦X|ÇÓ5¡¨=†}OÄö¼–7T ”}I÷ߺŒÓë{ÉTÞf®b¾}ÈI¡ãgáTÞ‰¼&5ÒlÉ™ÊÛ¢ûÉìQgu¶ý—Ù¿Øï*o´ÞYÛmLîPÕû±gZÞînHffú†àüFGÿÛÖ÷b©/;¾äùØ€ù¯¨–å Ó ¸,¤¹/œüœñ¼-ËÛ­ГˆýsàþŒBÇ\¬¦ØEñçÄù?ð’|úà|ËòÖÌ|ª'þÙ†a7;ü,oäÅBg·ôä¹@Ã=ð^nŽå"OüùÝíx71“yNU,¾Íû£ú¸G¥\œ¦Øµ©•–øÊ÷ú‚otŽå­C`Câ²6NŸE/ôå­OøÄ÷äë >ZZεb|›ÂK0Ã9á÷¾…ñ%´ý} /»pQ¿<æ ‡Õ"Ó¿7á%€í9ã˜ü$8e%¿³­ØU¨/¿Û¡o‹Ùפð’‰&4@©’õ'mžÌŸAxÉýªXU%}pÈ6RCÅ¿ á%¸©·'^.}‚…™fÔsæBxÉEïëÇ»ÊìîÚñç^2÷]ÁÓˆ{ „œès±ÊE|š{0cn|Pãù± ÖòÑ#ÅWôï%ŒC³¯~ÃòÅB“¯'oüö8G¬å tÙcçü7L·Îׯðዌ»r#[Cß½3ËÛ}´’.XÜKf5k]_¿ÂKÉFs¥^蜼´øÛ„—ÀöÔ¢žtdñábÿõo^xÉbݱÝšÜ/üè]’ž á%Ø¥0Nò@j´Œ$¤öBï Z) û>)¼äV¡à÷Å[Aá@³ã ^²`ý†‹ñHÞ}µ¤oc•7Þ_gðŠQwsl컈UÞ0×÷;_ˆ¦ÎŽ×ø$OÆb„„gYòF„¥ÇòïMxÉý Ø'ÛÑ[w²˜¾&…— ÷…NGêI”ÙÌ’Åó&¼dÓo¹¹ßð¾ÎæÌh¾„—ìzÌÈ9ψ¡õñpÄZÞà¢ÂÐ ý’{…Ýv_ëÂKÌ[ÉÁ=r%®@n‘Ø¥XŠ+oï…J¸áÏMÏkyÛ ™£6mi>ë|ÆFñXËÛý‚!lâZ=6·Hi–øæ…—lúj% •IýïéÎðo^²E:Jê©}ÇŠŸ-ÂKÎGÀ#k¸®2èá5ü»^‚ùã‚ Í,êÚ݈ëWx PÁpÉœHtyÑ Ý;»iŒ±{šU¶\4?/„—]¢wê¿Í²©'æ{Ÿð’õU¤;íÂ]Î=o¬å ³Ê }̸ÓBâ¼`&3žá¼XбOâÊ ê}‚@a}±˜óн0$”NljýWx íqµÏžXhS`¯ïLx‰apó‰Ñ?àÐÛyß…—œA°RJöq¤ÌäŽýAx ®ØvœC?bøù;^º?Š‚5:ðx·_gÂK ãIÝ™èëU£xòÆ*o¢‡ÓgûPû7´÷;ú«¼ÑC¼œšg‚L‹.îëÂKð½b,3éúÜÏ Ë¿Ä ¼ØÁÆM:0…i6f 1–?°eøš$^r@& þJú©è Þƒç‚xÉí´ÆØI—ŠæEOƒØžwZì­QPH­¤;Þh™>¶¯uâ%‡",pãŽ38ÔlÕÏâ%¸¸™[šc]Ô9¯]ŽØóÿLð½ÛýeÞÕ­ƒ7AK¼„±4©žQCÞ‹zu>;yc‹b7¸3Í%qœ÷;gÇòv¿©sÅÞw £_ú~všb¡/û£I½©ŒQÞb-o¥QÛx­Œ—¬¾Þ<¤ÅZÞ ˆùÐʺjÚ üìÆZÞ05ƒ%á5zåÌ+,ÀÊñç]Ší<‡‡ó³ù€wœ#ÖòñKœizôÐsÌø0ö»ÊÛêôi›‰“stüÂÃ*ʧ¼I¨?ëª m;— \LÆVó=« cÂÔ˜ ezlUì†>Lö¼™¦%þJ[Ä6Å¢ç¸[IÇp_XÛµ¼a&˜É7Ó zàåIc Öò…H õüx™UÖ…~(Ÿå ô<Üåvôê:ëÐCö’R”·Óh…°ZÒÃÕg}¶tˆUÞ¨Ë:OâOÂMbÅ?uc«ò)åž<ݪi:øóVËÛ=­@&ù¾ì/MyÅgõ‰XËxtئvÏ<1ð«›×-¥6ÅåOóN4‡Æ^‡¿ßÚ»&M‰ã~†k2Ö¿Ÿ…¥ZÞ Š¿ó¾ÎÙ(”‘> 7p‹]Ô¶(;t•âæ8m©–7ë‹ÜÌìÔûªf›¿»;Ð]\_ÉØ ¶Æ:ýÛ¬–7y€sùÌ6pÚ‰ç4_“íSl'žzØP¿^c*Íò†bèŒ÷00½¯‡fyë0DÁÜm|t\Å¢þ M±¸¸mǨePp k3b-o¼*ƒx´ Ak.†¡Xh»­SÓ}}Mö/š¯Éfyë¨P“åjζô»K±„˜úŽ¿ínœÙñ~-o½Wꤧyx©ÐÌ×C³¼õш—¤Ì?Ž\ë•þ).í'ô•¡¥HûØžb•78ÅbŸœÉ«ˆÜÅg@WÞ öý„+çßúÓX²Xåmô³Þ‡ÕœH¯ÅÏ¡®¼-*FÝ2€Q£|û·Ù•7úI|«g½m´÷ŠuÖ-o ¥»Æ¢è÷³†FìR,¦SVÌÚ“ƒÜwâOÞXËD´poK¸2äxqÅüüÛìG±¨ ‹ë<Ñ&€&•Ýñ¨2,ow[®†M:DsQÛíó÷;,o£Ó¯cŒ8OÛì}í ËÛ-;P£ŸÄ7š„Hóy1šb9?ô%­Õ>y[êq–·£³ÉË»lè¸ÜXËÛ€´=U’F£5þ½–.Cy[ØwÀÆOZB9ŸŸYCy»»?.òvëZÄÎØ'‡ò¶¡]}+׸œÍ²r¶xË´‚1—ô®îeãàþæ§XŠÜ¶Y×}Sòsû`ZÞf…ÏÕÝ£ßÁh(íñ~g}±ô·9‰ŸÚG¡=µ?ïlŠÝ ºÆ3êã‰&ÌZމ•iy»_%‰OÎ y‡ñ –·[³.nì™õÚHBþNPæT,tÊJOx_¡VÏ™'ža)2´£ö_6òíý–2-os6ÙEj€¿ì.gÏ ¼™ƒ[掃âÛÈ©|¿»”·Íj¸¸ÎÈÆ}§`r&îKyÃÚÚ‰;l#¾~§]ÊÛ¡.JO3m 5±‡Ï`y#©vóÉ?v™³çbuÅÂɼŽä[=)Ý_Þb-o˜Ù€®’7ØùhÙ[†ÍÍÜXËÛ¢ÍZ%úN¼MâØõõ»Ö‹ÅμFÔdc°¬œŽ)”eyÃO ùÍrë,'ÞïQ,·‡‘4ˆ+v·»ùƒ»’b79å+c™õÐö÷°-o0…¯É;õEÇ!rvœCÂK–ù>|i~¨rœÝmbÛ^ì!4¿; Ž‡>dÄ*o˜Q;áþ{È—qð"¼ä~  ö%}Ú»B¡9°^.„—@ÿ§å™íò—&¤wI­øÛ,oÀ8q¯NøƒQîßÏ`yƒ,fajšG‡TÐw¢¯_á%œH ‡tz+ùz^² ŸKGðóý§â{^‚qUàé•%ç>ßK„—ìIØ;s8áø :Øó¦¹±M±|E:aLähÍØû„—læþ¹ïd½ÅVâ,ofBZœo÷u%háìkRx (Úè¿Õ4S±8¬\bŸ^²gÌWÒe]ƒz =ðá%Ö&Yéiæµ²øï¾O /9ìÛbâ"°âÊÉÔãýù*¼äLÝnçan¼U:œVÍàn±µp¶¤Ç3€!NKú÷ UxÉi®}Å}S )SF§±Ø¦X ðýÎö}ݼõªð’•ÜûÓ-õDU=Öò†ô€¤’°6¸û•Gi·g˜ŠE3¨†ÿüö3âw—b)žPëJ½ÅÊžåŽØýbñw~©ß }p𽆬ÂKîÁ‡ËîW²æ¨nÁ#½KTy[ÛìÓVðÄ:œçyž7VyÛP˜«#iA ¾¹>ƒðhvRp-t\î]Ü[ïTâ%÷>;Jl3`PÉE©ÞªÄK;y½ØÝfœÇŸï“•x cé &›?Æâ;«ÇóNÅÖâ^[{¿=´vúÛ–b9Of3™Å<"V1Lwzì~±ÓŒi-HE‘¾|ÎçÆÅv›Ð>нû½‹•¶ÌñÆâýÚ«I£ç©i±Ê›’Å¿‹J;°Á'1öžkòÏÇ÷jì}4F|:”·fâÆ_üm}/73öêQ=–ÕDZg÷LÇ b•·Ækõø.ÀZDÒûu(oÍvÅÒüy×&}}¦¿m¼XŠ•¬{Iƒ½Ì|=VyCœ £¿ß[CÏæ›¾vÆË'ˆwKß±µRÝÇüÆ*o`R¦}wð[6Þ=ö¼XúO•Ø£>Œ¬ÀZÌŸw*oè˜=S ò8œ“µiÄ–Ë­dÅ^R¾E½Šò°í:ë‹åtÀ÷ÖõÌ §«ý;žÊvÁ'†h¿ ¶çŒO±Ê[7A°÷½ýGOîžF;^,ˆg®(. ¶¸à”Õ9_,;(;î0«bIcHÀc•·Þi®èw ÌdNº£Æ=j¾¼±_½¾·Îh3µ‰ûä|yƒ)E¬Iô¾¶ÏÇv}KÁµáß¼9 ^}ßY/oÄ^¿´ÎÖБ¯Éõòfbr-ÎîÎSÒyº±/o¸…«x·\ *m©KyPŸéœçÃ=Õk†¥¼j:òÅ×t<ð‚?¿k¬ùb)¶Ú"¶ÐÏý¬½zmº_ÞX×ßñ8Õ $?ß¶ò6Ú~>¿Rô7#Vy›—¼ÕâÞw?Þí?ÿÞÎ÷by@½½Ï¼ÁFÖê]ê‹Ý4ë>~à2LˆÊ×ÃQÞ0ÿCÔÐs ¨„V«¼M9Xùޏø‚ŸîÁí/–"¬#îÊb fQ<¯ò €.ñ] ›îžÃ¿¡£¼~—hÛw6:—{rCãU±º”~þp¦n`™¾&ÏËÄ]P½Çeü×¢ƒ(‘b7 _ä­qü«¾W·OyãÔÖW¿8/€éã»ð:¶}ÊÛÝñk,@qÊg*ŠÇÖ‹¦îª‘‹û—±7îüßö)o«Q<·Dmº[¿Û÷Œþfû”·e–Ö%žu@ ¹7ÄŽKçéw#S=ø¢iŸò¶&‡±}àzv¿«¼- ˆŸóÎcj?Z­ç½ºö)of4ü¨Ñ£hï d±çÅâ¾³Zõß½6F£Îjåå $…¯Ô¼ M{¬òF>¸ˆª¥+ëàâõP+Õcç3z/âLÐÔ{ßUÞv¡€¤„4s Xù|éw•·Ýhí’îëåP7é8gº=¼ZŒ!ÔošêP“çca¬òlññ£ô]OXm v½Xª,Ö5æ#ïâ5o{xɦ0Ï~ߦy>tl»=¼d›×lkñ½.ÏX|{x ›^¦½r†ÿY´"Vy;sL¶O…—ït]aÜö^ìä;‹õ†9úoÎùo/¹>›ü=jÞN^[qìµ=¼ýQÔ…q·¿5%Èî¹{c•·ÓÈãO5ºY}ÞÕ×ïÃKÎ Ù,aAô{PžÄ;SÞpáU.‡º[PÅ*oèùc?‹\lˆrÝÒ^Âás ¹Ù{¨`øb&þá©íá%œýlÊö¨2¡Œî²¹ˆµ¼ÈÁ;{Øî\ÕxƒÎoÂK0<Œ½oÆþ ±‰eéÏ+¼.|ãiê;îæoæçE^RØ7H¸\‡9³ã˜B^BÞ×›}ød#<ïw®&¼¤€—õ°Þ·è«ß›ð’»~îàx¿‡÷Pšðë¾Eœv±URoß„—ê‰;bCû=ªkRx ¼Szˆ?óžÚÈÅ^^¶þò6y^Ìêß7Vy«¾ùНupYqûXËë‹&¼äƲnq¼¤.JðÖýy•·[ ìT_€›TH \£ /cóÒ]Í{«<]|›ÂKJ…>L®À7ÂÅè¾ ^RP áÅÇz€6x ªb•·»ºq™}o•MŠe#³üÞ„—”JWÄUc_?´Y‘æ·ýn{±ô­^ñÍÃõ³Ìqÿ^‚‘-z‘wß'¡é[:¯³Ú|ywç+þ·µ¿FØ+ŸãMx‰Íô|uGŸaï jù×#Vy»—ìÕ½'ÜåQè÷ÝXå­Ñ0ÜRºWäÅñ@€`ãŸrt^R6©­ÆÙ‚ãfæ»r^Byû'h÷pp6»géUÞî¹WÓw \¹pƼúÞ×…—”M®ÏZñ] oN2_ëÂKÊæ8Í|5$5© æÿ׌gPÞö´o(î%à¸à{ó^s^‚Ø“Þî”M. ŸAxIÙ4 k5ÖÎÝM¹ÿúyÑ…—@ ¬¿!}Cw‡Y¬òvXíTãÜ #EDZí.¼¤`¤.Cä`ÐOâ+«¼q>ö«Žµ¿ÜèÑšy<¦.¼¤6™Ö Ì‘ Ðíð÷+¼¤h‰C˜5¾·~a½xëÅRH>½‡&è¾ï/çê<¡];³`)Ì&¾Má% UP8<8÷-p$Ùk².¼„Ú´¨œö:r÷¨.¼„{ÝOb­w’£›ã]xI5ãàÆá?°9·¹ /©ÔnÂø&Ñ)ñýAx 4 +ã ´nOÜKºð’ þ&U:"÷p$ û3LÅbdÏøæÇà6»ãw׋ín*øp9rè§Ïvá%õ›¸ïìg û$ÏêÞbÏ‹=%×›ð} 'r8º /od"€vï+v{ÞÎGìýåæ2Á«@χ@Nõ~@^r_Nô=Ò·iG^ð˜ºð’[p—’û¦´Gôõž.¼äÆr}©XAt,Óg »ðôÏpèxjÐ’–È^¿uá%•î^q/¡^&ÈŒºŸY¬òVHÐ[Þ?nÐ+æ§íý·.¼äÆ.¾³´?°'ÑÎðýAxI-†G™øækàµS^é¼ý4„§NxãÜ=ÕÏá%”y…ÖïdÙõf/oÇz¯±&ï©9©É7üw•·J^Ån ÞóvöÌŸìÂK °Ä^~Ô¦x[ÔÙ‹gPÞ*ËÙc=ÌoS–Øñ.¼.¾ääDßô^—¨A{Ÿðt³æ3±7î»ÄàMyÞ„—Tаêb¬ýawR¡c /©u͹jœkæjòº¥ /¹±Ë7ºÇE!ر¼†ìÂKªµÜƒïiß° xgÂKxXà« ,<X·ù½º /­­¤ ð´$¼i¿«¼5ÞåVâËÝ»·-çtá%À ±ÎÞ>ùåé äjümÊ[#©¡øÞ}Üo«G¬òÖ&½tVì}Äx I¾Ö…—Tþ“y…šÉq^RmèºöÄÿý¨-T½7Ó…—T(ã_‚ëð=ó¿Mx üc©·Rü›7{½Ú½'Ü…—TtHh¢˜ÎÒ×܃ùÆ*o8erÿbþ¥- ä®}¯^R;OË—ø©cÙ È«7»ð’jÈwÒ7_ùÍ¿8b•·›Ð•pÔèôê*îqc•·N Žc¦_½(éëWx $MÙÜ^™·òXzˆUÞÈÙ¿—©Äá„úÃÄ+¼¤ŽB³–¸Ñ&?ð´øæ…—Ü»¡Š´GÝC»ðj±ÊÛhÄHÓþ[QÞ€ÿà¹^r·êì–êØ‚¥ýî.¼äÞö‰ 'þCÇè:Nh¯‡„—ÔÁîŽ?»wIÔ-¾v„—ÔÁ íºc=|·´ewÜ¿!á%æÙ=5Ôä‰Ç*owe£[™·bwðØ…—ÔIžÍX Ÿd×U¼ >¯ð’{e#W¢6¸&%`GœÇÂKê½Çã¬1­I®DhÜuá%÷…'ÊðpsÅ©ëëWxÉÅ¥i¤æÔ°½xí?„—ÜXöP¾èãÀ·u¤¯ß!¼¤.öwªcïEg¦6$î\“Ú>+7„—@¤Q 1úècãètß’«¼›¸uÔ¢£Çû쫼ÝãŠB ÃïQã®H¶Œ†Ç*oï!™p£yÐð½±–7úo¤ÙŽÌò–[_2„—@| IJ¼A4(¾hßXá%Ðå½/îF€ùž&”ÅŲ_Ô-Ðûœñ[K¥¦á½ü°±…íïAx œVâÙØ¹Iæ‚ïÕCxÉ5-ºàAÖŠÝËs,¼¤ÑÀø'jH dðýñ¦b ´f)¶-ŒÔ{M6„—´*.Ž—ü‡ù úF-ÇĆð’V Û^yŽªÂºm9Î5„—À‡±d41~ÞSý,ÂKšÕ±#áëhÂ+wl{/iV¿õßüÜGÀˆ­‹Ÿ´—°ðNZ'Cx ÛØO{_=^ù%¼„þè¨!kÂÁ;¥†›ï;ÂK`!·r=¿ÐFyºØ…—€Ž»Þ Ãë“«8#ö_á%7XÐ8#q0øi/¯‡ð’f5NÌ‹P_õ[÷ù¡!¼¤µfFq×(…GlÔCx ´zzêûS“V÷ÑÂK@©¤Ûˆûö)áçGuc•·Ff{M³0cÑM};¶2„—´Æ;Ìè3ñйÃuçxá%X¼ÔøRÀѵãKCxIë4‘›©Ö«Ö¤ß<¾Î„—4°ÿQ€å¹ƒ ¡}>„—Àœm¬õ˜pø@ߨýbÉÑúâN;(8cv}/¹%$ªìžÎ‹-ª|f /iœÙþ†÷: ¥È±ÒÀ‡ð’f¦˜­œt' —Îv!¼#«;õ9»C ±{M6„—´A~jßqÆÞk‚ÍN6ÿ]åmÌ™{j¶Õ£Ø\ûf/¹±‡õ|ÂLæ7t¦‡ðƒÇã¾Þ¹máºdóÒCxÉÝ1(FpÒ~‰’Çs´çUÞ` ôÈê·TâÕë‹çUÞl´Ï–x¤3b6UÏ ¼¤Yg£/õ‡¹>޽á%@Ecù¤¹™J’wD#Vy›4(Û;ϼ”HÝý†ð’6á…%¸ÆÍÛ×Òÿ6á%÷“goçûN'þëµÓ^rc±Ö×wÄ YlÉ«¼-&=í%€ÆaGûƒðø¡d¼ÄfiI#éñ¼ûÅG>3õ°1qëSß«…—4È;ãÜ Þà7át%†ð’Fý_|]±WßݰÕ±åÅr“);õP:Õ²¼‡2„—ÜÕ_ú#?jP–xÅ%¼äÞјë;ÎnxÅ‘¥îß…ð’¶Qy§›ó—£g˜žó÷+¼äÆbó#îF(¤€W»^Ð^‚m‡º×…[=F•>Çø‡ð˜hÿ­Œ T5«¼Ñ°éž~Û—¹Yz/iVÐÌ‘ñ’ÆÒ±¶!¼¤q³½ûrâm¯ý¼/2„—Àì {íijèRk®Á6„— WŒš×gÚ*¤<@uk>Ó6„—4ë;Í4_ˆ;AË<¦!¼g.!'öø‹‡qìj/±ÄNóCÿñЉO»;ÿw/°9ÖdméÎU¸D|d/X9†¦vK³›2´q÷^Ò‰SÁâ+aAߪ1ƒØã±BJØkáÌvû¯ðãrS‚70ŽÉ#ÿ6…—@|¶§ûÖä iÙqG^‘Mœ¾'î}“{'ÂK:ýI¿ú¥ÚiC¾ÄŒÂ^‚~·t‡¡ælqf/à³tÿE¿’#¨;_ì`Wã,\}Û0£¯_á%¤vâ.ü‡JåÝû$O#w/ÐÆ?5Î*lÙ¯¿{^ì®çº5ú€|zÞ)¼ƒÞ?ýn‡({æ‰Øòb+ vgâÓr :t¦ð }Ž_M‡>'õðžÿ&äõ»±ÿösI£;_ô:¦ðLÈ섽¢†\1Ú'=ƒòµ(N`&®;ºËs;N0…—€t‰fqº€KU“'ìUÞ q‹Ž½æX…Ç*oݼfš}hÔs,ÄÙÊùß Ôs!¼—ºÍîkªqx_ŸŽ—Lá%8@AèN÷~¨ã½|/™ÂKîe–z ßH5ïÄ1¶â^Ë›ÌG¤,< í¡8…—ÜSˆó;ú8ùa´|âw•·INÎÜ=õcÙo‰:v /1¾Æ€ÿ ·åðξ±ÊÛäìÙHœ§[—°-èxÉ^Òá}îgíc*·¯Iá%ü&üƒ©–¦Þf œv /ékðè¹.¬•(ƒß ¦ð’ÎnêWwôy¡¼ ëL×S˜ÂK øòD?ë2•üf¦ð’¾Íì"ÕÒ÷ˆ%ιãSxÉ­C9RœxmVÖpöXåm³ggl#·9É–#Vy;†ñø.>t`°}Gìz±<ÕÓ}»NÏsISxI?ÖHÜPtÉ8ûïWy;ìYŽ/ñ@̾h¸&Ô^ÒíPE"jÞ«}{ïv /ÌŒâÇî£;çÔbë‹¥ØY~÷=ï¨Ç{µð>ÐÄëÛ^Iv ±ýÅIûCÁÜcýˆ/ö°·wÚ[¾Ouìj /¡å3h-aÐlßµÛz±h3=âªÝå&jéð šÂK(¤äYÖ6;¼?4…—ŒMsŸÅßvw PÛÂK†á¿ÁƒÍÛaÿsžØ^2ÌŸwx} â|£)¼€] ÀƒµÓ1¹·X;ÂK–y®yé«Ì+sè§ð’Ë>¯óú½k°eT½×<…—ŒosÀjÿô»9Óy^2Jcý/~t³xw…)¼d˜˜òÊš:W•¹Óߦ¼(åa7Hg÷Æ5·Ç½Ox :¡ôÝI¸Ü¡¾\wݺ)¼dª¶DϲadkžÇ½µØòbyáN}'tÙê£Þðy…—P®âÓåiÙò*øE¬ò†6N®M+5ëqÍõžÏ^2*5Â|®uw]0I)®Ó;…—€Ï½~ïgsRÂuzÍ;…—ÜØFcÃÀø?œo˜óo^xÉ Z'=íÕßQþù^-¼ä.ÈÁ…tß1˜¬/_;ÂK†aЭ¦³ð`Èá±ï/ {'åZNýà÷(á%ãÞ¹—DŸ‚µÇ¸€†ŸMá%zñÀ^£/]KƒsôÞ™ð’ÑI¼j%fÁïj‚eÃp½•)¼dtÃÝyü¸‘™wNümÊ&Óÿ¹Ó.â«Fì|±¼ %þÎ}PŽºæ^K¥ÙÔglè~Má%÷pvÕV¬‡Eo°Ó|nf /ß[O³öÔëÁ¦û$·^°„—ŒcsØ#ö‡J }ü®±„— ^=Ý`ul#³KxÉÀßf«ÿ÷¼ÀëÌÏ«¼!¸<¦wvضªé)o˜³øÕ&¬¦C_]ãc /¯p£F¢YŠÿîy±R’®e­œõŒù€%¼d➊ËÍŽþÛ¢-ÇqÜ^2éú•Ä„ç Ž1? —ð’ùMÓDÍ<›FYÇ–ð’ùm#þ¥sxž<›%¼àÿŒ쓘%áÜýw-o“‚ _ »ûK YbÄNÅrö¬ ¸÷³­Ä.HŸî}ƒý¢¯«¼PÙµAÿX|¿My«üŽþÛBŽ)æsØKx „cp ÉóC8š¢E‹XåÍô2{æ¢,z?Ê b•·{ÉëO¼ñÕÇ›2“'~Wy« i¯¾û/ÒÞ¼'±„—ÀYº>"×e¥‚óK–ð’»ëð=¤»ÆýßRçÔûKx <<ñ¾„ÜaeŒt / ÖY‹2e ¾ž á%>™ø%Ê 1w°„—Ü»• g°÷Å¿à m·%¼d¶EÌñDÝ Éþ«¼ujœ1N0éäï%¼¦aɨ•}ÓJSÂÑâw•·N½×“¾7L/Ï<Ó¶„—€î¹ úzÃè—ÛWy•"Ø_ì¿P½Å<¯÷7—ð’É+¢Æ1lËz0þ»Ê/R§úLæÝÁÒÄŸë9^ˆCu ¿ïÔËëÜü%¼dNjŒ4ËUaƘõ–ð’{_™ä<}QCæ+±Å*o³b±ö¯$>y¡uÿÛ„— –÷¾Tûɇ€¬Ç*o7÷Xë%Í–jê× ZÂK º8~ñÉ{殯±ÊÔä’þ{u6Õ}?^rë—5ÆÄ~,&gZq\n /™f–<ã¹/NN}˜û™ð’IÉÙ»qDŸá°¥\—` /¹±4‰J³ÊõPns9?u /ÁF`§¾éÝ}OžË_ÂKn=Àbx$½«Ñˆ#6?ß„—LàI©Êû$ùì3Ö¯ðø;î¤A|’#Õk‘%¼äÆ¢6#t8ï?dò^¾&…—ÜzÀÄkv®M)‘wây•·msjk&.Ê&¼î=À%¼Š:-õn©½°o¯³–ð*Χ>΀ÍÒ`9ßs /™ØÃ±§æzs_Ùs!¼dÒjö§ÿv¿R@³·„—àÁÒeï *wßñõ ¼d}¦{P¾¤«Æï¸úLñ^²°5 ÇÑË¿Ëú:³Ø®Xj¨Ì/ÍK·š¡Vϱð8ÿáJ½ñiúˆõÄ{°¼-¬àÊynq‘æëº€KxÉEí4ÓÌÕ8Ð7ÚÓ99Kxɽ÷p¶ºÆ~V©‘7[äMxÉ"ÿùŒöuÎê}¡·„—ÜX~3õÆ)x»„—˜¯–qµÿÒ&6Íó.á%«š¨“cŽð\4~õ+¼änQ$'Ï\›Ê{Å:^rcÏÊóçïÂy»ý®òÆÁßû§µ>ÁO-%¾yá%÷\†ÎHèUàÞ·¨ÿàuá^mø–jHêLÖN^K/á%÷ü¤ÈmÒäƒÅe<} /YÍ„çÒ]nÞ3uõÑð¨%¼äþ÷½~ç/”Oƒ>Xå­Ñí«»vÞøkâ*A¹¯ /AlOºî˜Ï ˜¿á%«k ,ó5¨šûyOm /YpËsã&iÚ4֙𒅟ܣb‹–иã\Kx |áð~çN"ìÿûDÍ ¼äž}üιß÷;~´@—ð’ËY¹ö¾Cõõð’Õù “pﻋyDëì*JÅNÒÕ¿•æ¨ ®wµ„—,ª¡Hù’'À^={ù.á%w_3å‚„Ÿ “‹ûƒð’»¯Ñ|*Í\Á~±Ó Êc•7ŒÒ¾BTø/ d Šù{^r÷ò¹¾˜*вÊßUÞû裣-Œ•®à),á%°7ka gµÞ¤lyÔèÂKÖš&^ÓlÔ2Í#¿W /YËüfü> ½mZFßs /Y¦‰^ü¾‘ý$¶ðòÔLwìA:•±ÊÛ®☠.žo;¼ø¶ð’û-á€^㠟ŹæÞâw»ÇæÙÖ,·Ïoá%8FÖóSÓ캵]C·n /š.ú"i&¨Ö‚þÅv­ˆ-¼dmú‹ÔÄUƒ‚`™uÄîK=±qÒÜ—I49Fº…—,h1â&”û ,{¼_á%ð·ædgð˜Ñvx½lá%7–ƒ G¼W.úû^½…—@gŒ„·Ü&Õ­F.„—à¼bc#Ý=᱊kîöXËj‹‚¢æ‹H#ëðÝÂK¶õ[i©_Èjúìú^µŠò|®^]H/’åXÐ^rß]©O¨TÏ»ì¾ï|¹-¼dCD=ÀØû&•5ÓÞ·…—ÀÒ˜|®8/n­\€­8žº…—ÜØÉØb®’èÕ½}g /¹#‡dFžQÀ„ÿ·}n| /¹#ÛT B§oÐò\/Ù…‚¸£G/ÿè3ÔxgÂKìkdu!U€Ü¿p /¹¿²jŒ¤åÅÞL è-¼äÆ@IƒbNo×>ßÂKv5Ÿ‚NC‡ëîîñ»ûŲxŸ5Cÿø¼ná%÷Yz E ¦>Á­[ì^²…—ÀÝ”f›ñFç¾Ó\£f /¡nW:‡0Í[cùÜ?` /¹¿o„Ú÷I %îâJº_‹cyáM¾…—ÜX›MMûú!Yã^ò#rð|wH3 NÎ^ï¿ÁDÔ±(óîjнOxÉ>VýÔÇ”CÝÐ-¼dj<Uqôšõ÷ ¼žžõw= ë³5Ç2·ð’Kn~ê˜Hâsmá%h?—¬ =h„•ð¿ØÂK¨÷B”þgFwdNÙ^r¬ŸUÓ¼^³VI‹³Px FH€)œ¸GÁÀÐŒcx[xÉ1kè¹Óþ»p /¹…v¤ž¾ãY Çãþ ¼äÆâŒYÄ{Ó˧tŸoÙÂKÎgC';ôظ?ï^r0éh%ép.2ݪãà[x |e‘¦ÙÔ¶)ó¼Á-¼äÆr÷j¹JLásþÎ^‚Øý)¼ä ãvìŸ9a“xßæ^‚3ç›ÏjLz¬’–ñîGx ä#(™÷_4G±Lý;>ÂKÐBœi~žµ?‡¶#Gx ¾W€p¡VÄ3Äï*o“†ì?:ôœ§é>ÐGx ŽÝ´)’ÿPI㯎‘á%xàÌTë‘“}=ðœýJúÅ˼¯w„—Üïp'PË8ÞÝ´5#VyCý…ûNÂS?Êì¼Öïˆö½XjU¶Ø×ë4uq×9ÂK@‹›yVÚ7«¸½zc¬ò¶í/I<һ˚uüñßUÞàì’1Òìʦ7Þ7t„—€³dô¸¬é`2ö¾„—ÀQc<1§9p È{29öz„—À¹¤òÄ»Bß|…±ÊÛY?³Ê˜ËŸÇšuñ»È[}žÆ9£5BT3ž÷(¶P•,i”˜²d¥C¼„±Ôäk ºù1Z…Ø¢ØÖÇ#}G„=F^u†ò6&gVžQ ñdkñ»ÊÛ0¿Žïáãèå^~·?Cy›ÕÈTÙOx²Õçú%g(o淘璪A_=΋¡¼Ç;ë­ÜÅLʉ×og(o¦‡7jÂ=9t1·x†ò†fsöúhS€Gú9_ã åÍ@ïÞà˜ÏëvÆ*o0ÊÆf›µa©)9¼‡}æ÷bçXQûsl7f×ÏTÞö—‰•6ûK¯í¼«3•·Í¾ôÆáH=Ýé³g*oï¾[à}÷†¹ŽàxŸ©¼m ÿ&LwÞ{*ÆJ÷êñ»ÊÛ6ïŸ\ÀS Óuý3•·Í³04ˆÇßû°¸R¯ßÎTÞQŒ–ð3Hcüx ¹_,1±–0¼öQ"=¯òvu%¼Ï §MmBŸ>Ky³þÛ^Yw†#êá{–òvèã8zÖê!£6æΪ/–Tªý!åA^ü›Ý9Ëòk0jz´„вa8ÿì¬þbI~qþÙæöÒ!ÕãgìŠíl ·4_¸ñMø b§b'†ÒZ ½/ÞÃz±Äð¾•ÞÃàH†ã´gmÅrsØ+f@pÙ/À}¯^–74ãÑÏJøN…/Þ¯¯‡ý½Xò*vâLú“mï-ž]Ës3{%ßË·éOúúÝõÅR“/é¯ÍžDððÎVÞJå\GêgÝÛ…Õâ^²•·ÂKHh‰ƒ~¯gþ¶òVȳɃ”vz ùy¼•·Zl 7i”³{Œ[Ç*oä¡E7aÓþ›a<[¶òV§iqdŽ79O#½_åÍÔ4VÂ=A½mA%ü\\±‡Â5ö’¶É?{0b•7è?$þ™ùϳ÷åsê‹í#kŸ“¦Ó9öÏ ¼© ™g×{)?Ú çô P`–À®àƒ8¬]£ïøŒË}=õÑYÞã|óuv”7ó˜*38Èû®ŽJ³ä—·£¼™QJK>÷Î…ñº|å ÙæI™0R3BÛOËöåí ¼ð6ˆ+ñŽkØ,ÅÒçµ®ØïM›sù3Ç»V,zIµé|ÝÛ®ˆ­/–}Äüõ²yô3xˆbï0£¤ó­á{Û+Œö‘b—ÍÚǃŒì¹OUÞ'Oæ&MÞ€¾§»ˆ–ÅNû’¶üĸÀ:¯öǽY±õü—úCÖ£zÒéˆUÞxßþ²нÊQZ`Ç3œ»™úÿxÕ3¶|/öÐ&é÷a}–?oQÞV¥á\â#ÎÑ8Z5}=”úb9„”Îèf퀄«¼­Öæ/o¥Öcro¾J±V_Ô¤·=Nyû¯=¯ò¶l¶:ñ¶'<Òžæ·ý®òf–„ηFZÁæ¨åõ:0Žo±ð©¢œbò Ñ,´*!A Xɸ®½ IÔÏ«¼íIÒ~ÂHî¸Öøó /Áß—üÆÉIïì_ ¿ÂKŒ¡¢Ã¹>lÝÿ†„—Ü‚fŒÜ—ßûÙÓ¿cá%åpï+©.&ué5ïUÞµ¸s5´­æ~´z‹UÞ`=„§‹3`’àâ-9ÄN%ö:Ò\G7Ká±ÊYH'jÿå…³rD¬å­àˆÚM\À=ž6 õŠ¥ÈÜ?ú\¼Ù¿ÂK*õîrm“ÑðoHxIý&ñ‡]§쟵ß\¤,¶pF·&®Ï}¿´©,þ· /©†‡~ªÄâ=oÂKîbD}1ÓŒ.|GiqÏ0»VýåUôj.Y5žÁòV«i„Õü°ù õåûŽð’;Ë3WÔ9?xŸ|7ˆÝ/–k'ïÕ»=°x¬òVÙ´#øëݸ_¦§À /©•ƒ¨¹·¸?šž{ý©ŒkæS'Ï_lÒE}ý /©uKIë #| ñ÷+¼NEøÞÆÈ~îü§–ŸÂK*údø6c±òWêòïXxI5±É“½$?kï÷x^åíÞúJm¹ïHë$r!¼±ä)ÌÔó¡Þkþ]å­XŠ»ç]䄊ï¿ÂKj§^fhЄn÷|ã '¹Å¶+Zš˜<±î?ìïLxI5l¥Œ/ù 'ß>ƒð’:ÇÌÓÙ…¥™úN7¶½Xbñ=óí©üMß×…—Ü%‰a·Qÿ]û.TŒ3ø{^B ®Ôs·nßÓ׺ð’»ÃàòØ¿“zù-sú:^RM»i¤sÜ|ÂCñ·)ovϤ7xO&ð×GzgÊÛ"|¤þÐ-EÏHŒñ /©‹Þ>Óí…bÞ¢s½oSxÉe3>aÛË|Ïž\7bë‹eÏ}–ŒËY+ÉŸWxɽÀR<á ^ñ‹¹ÅÛ_l#Å)Ý劆´,b•·M†ôL¾¿˜×[1úƒXåÍôø=w ÛÂ-þ6åm›Þö ­?ø®· # Vy;e,Kš/Ǭ‹ãÛ^Rám‚¦-ÄAávÍ(À0GtÄZÞ`‚P“Îk=kï/¿s /iüïøã’ÜB0bO^}û‘tžÀýºìäfé¿;_,g´wøT˜¢ê¶j®_á%à Q¿:Í\5â;+ò&¼-‰õ;K0·’‘b-o­ðbÑvÌ> ì$Q|í/i¥Ùþôa I’ü»oly±,ÞKÒŽÞË.þ ÂKîFÇ;AîQuâÕîpc•·Bþú§ñ^f‘í¹^ÚÊN^‡Ô—#ýò}*ˆUÞ*ÃGê¡Ï´Ä*o=Ý'äfÜ:“7ø"v½ØIÝ™Ðb>7ÝÞïÂK0rµÂdÇxA”Lô¼«¼AxµSÒsä§ù½ÿ&v»Èc:1}æ ^î;ÓY(¼äþÅÄ×[êØþ=¦×ÇÂKZ£Åuuž9îF•gËñ /¹ïýÔß\÷áý›^j3šLižó"ôšmþ Ê[§¶ÅœY³ˆ !ÄÚ7ÝD,•\¿ÂKÚ!Ñ«ÌÌ¢•êöý¡/¹ÛYÙ¤p/¹Ë|¼û߃ð\^¡Q“qÚe[†ßS‹ð’fš’§e/Ô¶¿E¬åäYÔYƒ¢ íóqÒQ¼XÊfÕ–¸䲺gôŠ$VΙæyL­zìT줛^-™—É7Üão[Še>4€îö“îñÎ,ox!PÐýZ“R¢f«È¼ /ÁhÉH88q ô/ªë"¼¤jBu÷£"nDlÐï©Ex ¶zºW³î®”AŒ=JxÉíí]}ƆË)Öºð’^ME¢Ç]ùžI=Ù} Vy«ä§fŸŠ Mö|ná%½Üs-qj¢R¼º:þ[„—ÜXêJ¤ó ·ÆVÀˆUÞê¶ï-áˆÍ,ªbï^rÏÞZ’öãfã4ƒ&‰ØóbÛ—¸¬¼Zq$¹9ÞW„—tyé$Ýñ›6ãÞzÞ„—ôÖg""NPA•~@^ÒïÁÙÒ9¯™ \Û.ÂK0;bâúÜJ‘r"'~Wyë|ñs½WHŸVû\;c•·‘™4sÕ°¯£TlO/óÆ*oŒ¡¬ p¿öhc¯^Fo ±bH1aFÌ÷já%ЧðFÜÏf§ûj`N±Ô’É÷É»Ôwö¸µ¾ò&ÇÄic] ±ÊÛ nOúwâc5_;ÂKТB!º2o¥¡,+Û׎ð˜’ôì§FŠ-}¼n)ÂK žŒâ'}Cm§[›oÂK Ø[³ö#mæImrŒ´/øìNzW”™,‡õP<¯ò6çüégÁ·šùfn¬òÆDÜO7Ýí;µ±ÎŠ¿í¼ØMܳ$ýÔ½î´Ex b÷¯ÎÞ6®åö§/8Ôþ՟ıMe ßw„—tëÍìô¼òÈ…ÇÂK0ØÛÒŒ-sοÛ_,9§S(¤ÊǘŠð ö_,èkô!^wá%4dA33ß([©"Vy3‹à/}k˜¬ëŽ÷«¼m6(Kî¿('¹}b•·ÍZd¤~ìnVKÇï /yºÿêC¶ßÛëÝÞXåí°±¼³Ž÷¢×†û"ÞØúb©ë³bNJºà|ñ ÊÛ½ò±&ëiŽõnäà~û7/¼$°CÁøŽQ·‚ÇP__¤/A»üjÉܵDÎHAoÜ~×òF|pIRÏp^þ!v)–›LÌP³hRÆ÷Iá%ƒ>{ÔÌAÆ?•ëá%°¨¾’5xfùQáEY,ý·OM3x÷8ãÖ©[ ^Äç<]â´F‰8¾Ö…—àE¯¤gN:ú›¸%øß&¼dPºôÛÉ;°6zºÇ'‹ð’ûyßû$c³1ã®!¼dTãõ¤ïb€*ì}«¼U“òÁ<¨/¾j’÷<7…— ÃKüwïw¼&´÷Zñ¼ÊÛ=HPü¤yÿjÐg‹ð’{Am4Û^3ÀŠz'ÿ T抅HÄU„kŽN¤»‘ð’{H‰¹Žó×N…Î,á%7–÷õÄi¸;_[?Ï+¼äÆÂ†À=£©wèÓߦð’Ñ&µ›JèÛßÛ:ü|¾æwpá%±¡XòÃP9þÿ†„—ŒFÂ[ž›§ÉIº>7öåm›‡bÒO]Ídü 8/o$¹Ž\£W³Azþ¼¼Apø~õq^ “uî-Îk‹í<7c=˜¶üN^:À™˺{'Ï^0å˜y^2:õûfÂKð©šÈ³Ç*o4Lܧ…óJV4§ƌǂd•î©÷ í¥¿¹ñ;^ìY¿{Tµ;íÙñ¼ÊÛ-œ{Æ•1+G̲:^…—ŒÁÞí—fFåð{>ÞXåm g¹G£`{FŸâî±Êéžg$ݶe•›ðŒ®³Áž½P¥á|MVá%ð^=±1³¢Ö¦K4!Vy“(N Ý™‚1p̦úó /“䎒ö߯qi/§«¼ÁS%H‚ÔTY&éhÝXåmÑÔ5÷ý‡é)ÔåkGxÉXÔ‡‰ÙêŽû>«ã5o^BÍd ¸Y³žïáÉË Vy‡{ꈳ‚EÕô¹&…—ÜXþHÂÁï5šµžß¹ªðP´1L˜ð(è’aóö{T^2¶ Ô$]ªû§k›ñ»ÊÛ&ÎU{òí䲆W…—ŒÍé§w;+nÖ-=¯ò¶ÙŸ_¹ÿöÏŒØUÞ6µdB#lbÖˆÜÅæëWxÉ hV驟µ@ê YLÄ*oøðGFŠéîAIUÞ †1€š1“ÊŽ÷{^,š¹F¿¯žÊOO×ýÃÊÉ0¥%ÿn a+òý· /™ß q:uÒ£U…—Lä•gÀbTMbmu¼{I^2ÙO³rÔJû(M¿Û» JÖGæÀ±Í»œûU…—̃ß5q;€V¶7kĵ.¼äf‡³ž5á0›²Úî7~c—bKÁÆ1bOýŽEìV,÷åoÅwqèç>]ƒêþŠÝ¼®–ý:p¥øâ=/™4ÂÝñ“¾Æ:¶Gly±Ø£ZÂnÁŒûÏñžZ^2 ÍWOÒ|™F:ñ]/¹‡1«À‘}'IåNY^2«™µ$ß¾a2¿=öuá%p ÍýBð g¹\+âÆ*o•'k|˜gHÔ›Ux ´¸jö^£FQVý^2›ÍF¥Þ×-Œë‚ì—çMxÉeó5ÝÏ 9»CŠñÆ /™ £‡÷ žgVèttœX…—ÜØ1ƒÔh8ønIþ±ÊÛ½–£ïò,A#ϱùýAx ¼W±ó$ÌÝ´üþ[…—@Fƒ5õ ¯¹Ÿ×"Ux Ra“÷jÌIàtê¾ï/™½M\äço{dF^2exôÅýá~Øha­Ï׃ð’i3WsgÿMΩ¹¯Æ=/vU|ÇI“zrìñ¥7VxÉ€Ê}t¨ZRšÓÿ6á%ÐvÉ*ñ vÛ&ó±ÊÛÀˆUùÒLÛ½÷±ýg–ð’i8WÍZŠ Wb|ãáöUxÉœ‡Ý'i,Ð'“¾ÑUÞ&MfâË¡îžA“D¬ò6¹1gÈ Â=¶ÿÞ„—ÜØN”ð[\°Ö…ÂïÂKæýÓîú ßjèæCWrö·)o«n‚Þ=ù7ZNÇ}]xÉ\íß¼oЮqOߣ„—@ý–º‡›V™Îí¨ÂKîÆ‹Á2sïÀ¤‰š¿3á%7öô\“‘‹M¹·¸+ /™ …þ>+q-ëE÷û¤ð’‰ÝF±~=œ‚XåíÞÏZöòׇ£úÓ{UxÉÜ4Ø #…>Ð9Äî ¡›Ú³7.ÇïkÜw„—ÜØ…;Dš/¼%`·¯á%“~u%{ÿŒ9ŒvèÏ+¼dÎÏ·T_¬ŽÒ‰ãR…—L qïÄŦ†ðßû^2dƒ¿³VòŸ·ùî¸s /™ S¥¥yXæàâØÎU…—ÌC7é¬mqïä¦çïAy£Ý©‰Oÿ{Z2ky[ù _š5‚'ìòˆÝŠ…uxù‹ÀW|CÂK–õ kò1‡¥º®ñ»ÂKÖ·@4½«…”Üûõ:ªðˆvoäçn{Ÿsëªð’EOÁðƒoÔ=ðŠíQ†ŸUá%‹Tµ¯®Ìé]ÔÜðþ[^ro“¸¯‡¯ùë‡í ÿÞ„—¬Â •‘0¼”Ue¼‡©ØcÈž9O錽DxÉ=„`)å3Û¸ï Žþ¸v¨?Š-8tJÒª4ýªð«ТØZZÎ1Þoÿ…ëLc{±ðà™3ùl›Ìúr<µ /Y g]ìh‘êžã&¼¥ûx"ù¯Á1 ÷k¾±Ê[íÎË|ZjɈKe¿«¼UšO¹+ù¿(‘ÒÜA^²š5dS/tm¾_Ÿ—Ô¨Xꔚ´ŒXxT^r–F©Ò‘{ %¿Ã4á%ËfÏüžÊµ7°ý·&¼ä—ò۸律åXE^‚X´ˆ’R‰jÞkÈ&¼du6ºòÝÆ[-Ï5á%ËÑgÁ =5·ó•›ðXÝÏì«Áÿ9%ï§mÂK\FÑ\ɵӚ3F꫼¡²¹3ᓃ­j÷wº±Ê['¿¯Ÿ¨‡>*ŸbøAûC^B!k!aÛO[24Š]ÐNsÍe Êæúý¬ /Ù”Ø/½f=sÃ#ÂKnì&F¸'˜Í Z=þm /¡ÎtúÖ¨áq7^y™ç&ÆÛl~^/¹·_jíðÚ{Íþ¸¡ö·ÍËffZ“Pî]A¯B¬òÖXÕ‘¹ãUŠš¬ /Ùä<í“t±'”dcjÏ ¼Ý¥ŽËÍÈ•ìID² /t?ëÍT·Üj·Åˆb•7º~¿ù{<â?u¯šðH’[I\V(ÙW¿Ùï*oþó5Ý÷uRf'Îná%RhJœxƒ¦ÿÐ|F· /Ù@¼ˆñxxd·Çכ𒻭›7BžUþH;\«¼ NÙöxI~€Q‹4á%÷"„Z¤·tO½µiº.!Vy›ÔÜZY¯—9ò ^¬ð’ %ù_½+ª#å¾t^rc)ŠÞ¢'q·qs9ïÎ%¼V›õñçßÅ­/ç,ß³ /A¿oFÚ8Ó‡–²Þ?nÂKöâÙý7ðt;ü"[iÂK Ùãm묲”ñ™Á&¼dãRûx—´ vÉÚ 7Vy[¨r ß~3ƒ-×½½±ûÅ’`rÂC6-ý«1SÑ„—l›=[_ödáZ?±W /¹UŒkšC¹ÇÞY‹oSxɦt´䬳LÖʵ¹o¬ò¶™ã™´åÇ .`ÌÇ6á%È'rõi‰CwäÅÎþ†líL£(¢&³ó¢ /9脃£•æBA)ôÚü”·F͸‘|ŠAz)Ïþœ².¼LûäYã&Jvùý¡ /A7 ÍýIöÅÑ4ô¿Mxɹ÷vfOnØñ»Ê[g¯dÍBšÎœ«¼AmxâÅßkØÊó¦]x 佨,ÞÁáDш?Áߙ𒃠›mº+wúgϦ /á îÐ)·ª?ëLx ¼mÑ?î©§vhíQ|þ­ /áP•çSŸŒcTÁçêÂKîµ’Ç\ª»ù¾‡­tá%æ}ý£±¿=^ŸOü®ò6aœ£„J×cAëDl{±xñ-qÝ'žž×‡ìÂKp½CÍ0Ò>‰* ¬¢á±Ê› Œöt`– …ËŽçUÞÆ@tð€ÂìŒ.¼ãÀœ¥NÚy èbÎö ûÅb©_H3*#ñ”· ïùÓúHû:¯aÍuºðЖ¥z³ÃÌç[÷Øòb{2(5˜—þ›Á!êÂKŽùˆå»îg4ó÷ ¼mAÔ›I³ž•Wò~¿±Ê›yƒ­4; `3Çs,¼eÓzÍWí%wå Eëød^‚¥G_¹ì)O§Ï¨õºð¼Zr8³ÿE+”7ˆçUÞh^YÂiý­üo%æ7»ðR5p^¬Ü/Ä¡:D]x ï‚À£2?há}éN¼y$î¬áºYó~ŽÃtâ%Œ~¶¿‘trÚÛ¹Tx c7}“Ç*ZÍTØïö‹$¹ÎîÕ°l¸Oà¼øN¼±d^9‡þÞïG}ïÙw·¿m*–üê/ñà¹Â& ±K±¼Xï4—±â#¾ˆÝŠåd\ž‰¿'¹ù~ÿíÄK/,-ñ È/1 ÇÚ:ñÆâ®ñÍÏô †¡¼ÙelfL÷ç?}²>”7Óm>'Ír ²Y‹×N}(ouÐÿ8s}8‹û}˜krô[¿¤«FN$ïÕ=Î㡼U¯3§j”Ìñ] å·KÆ7·õÒˆUÞîNVcã^ͱ¼±Ê[cóK÷êÒ83ØS¬òF¿ÐòåY.¶r¿{Ôü^,ÖzÒ»‚<9ö‡A÷Y^ìnlÍ8ޱ¯û5•·N®æyœIÍÙûïTÞà¬n\ªÉèÇYº÷ÜûTÞHgÆûœ/ößYD¬„ýz3ö·)oƒŸï¦fÜ<4\·£Oå÷‡û¦{_3™‡¸ONå )ì©ÉOmò3¼Ñ—òFÂQiÉû}~ØØ·{ÓÜXåíÞAÀÑJýy:ûFû±Êw£Rvöh§´@hqô¥¼-â“;é~ÁtѸ—,åm¡³|ßgÍß&ç°½'Ü—òF©ˆ˜‡´èJΩ¿ß¥¼Á6Ï›4jîaÓÃò±ÊÛ.FÃKsÍÍäô\[¨¯ýbáYë–ýmŽVõxÊÛÖ\rËzL#ɡߨ­¼mLGŸš}åfÜó»•·=ÇþÕÈmćtˆŸY[yÛ {åûï] 5÷Xûn/HºÏàaí€d&áÓé[yÛw«Cÿ-ÏuÊhÄÝ~+o÷mb6Êïö‹^@8gÄ*o´¼)Ž—˜§¸šIØß¦¼áÈ ó4ó\¨¶â¾—låïòËÜЉ¿8ÿæ·å­€ó—<áöƒó{>ÅšÞvÚwî³Ó#Âçêú)Š%hø%ÿnàFÐDõþE?–7°Ô¾ÌÛ¦ž ÿ[Ô-§)–‚Ù?óeÐ0É1Ý~ºbѮڮ5E™¾eú0¾vÎP,/ígÖ^_iñ»óÅ¢¾(É£§aÄæk¥ú>y–Ç®¬)¹0ÞEi–X;g+–rÊïÆ{¨c˜ŽÀãìõ£¼Zµ–´WßÎïÍó6>å­‚h¶Gâ·Ïåp«¼UêGͤçˆ[®@^_Œ¯¾XóÙ¿Ðûï Œ¨'~Wy«—¦SR-²é5œÈñ)o÷$¤.JôšoÁy×:ŸòAô¢ïëÄÙž5´ÅÎ;©{[²àÍX¿ãSÞ ·„!Ãím¤ó‹Xå­™.Z d~,8‡ëìOyë ûÞ'°Ê^Çp­¿Q”·Søòü÷˜IåûÝ¢¼a 2óÌËÓ–wk´î ÖóŽùù|˰z¿påmPÒ£&ÍÎ[ƒŸ,ñ ýŪ)œpðIS¿OŽ¢¼ (E—/ñ'ï!¼$4–FQÞÆùw^¯˜³ùr.à(ëÅΖud)Š;ÊÄ*oTo¼—Ç|γÍ;W<¯òFÃ×ýž ïwHÓ—àŸª¼Ícçfìg·t½¼µx,¸Ù µRõÐ=Ýn¬òv¯œ;ˆyS¨·¾vªò†>î©QÏ£ØÀwá<±Q•·Eð™çÑ r{ê¨ãÅRÿ¡¦yÈûfȃó}§ÎK¯Ã4HM¨§ŸjÏ ¼qÞ^™q*87KužÍ¨ÊÛ"qª¦>d¯ä1¥ï¸*o›³gD_Èyˆ78šòce¨in&òX¾Gµòbçùa‚QmËÜæÑ”·m=÷“û±”Íݱšò†±_\ú“Û¤Îÿt¬b´þb97ž¾Í‰+MòÔD¿ÈbÑóž¼êïþ½ŸˆÅ*o&RW’vžtÀ_dù3(o÷~¼…®Ú½¦b&Þ}˜nì~±cÆÐŸñ¶1ž4FG;/¼•Ð µ¯ìò>cQ~ᇲ¶<š¹¹ÖÂK~´V\°O׆ÂK*-…\ÈBx57öÛ ÇÐ=çIzƒ¸YŸâ@CxÉ­¬Mcn3+h>ß«…—ÜÿÊBÀùƒ>+ЀþÎ[¿ÂKjá|löd>‚ŽåÏkyƒÒÔLz¯ÔeÀwJì¿ÂK*'i·cº˜‡¼•îûŽOá%8ÌÐ"ݱ¯C?ð|{}†!¼¤BP³Ö g×½7>„—ÔJ¡…Ú³FXckÇïöCx fñÁÌ/k~ß'-Vy«Ôeï¢ÿ@˜÷ø%¼¤6r…ÇÈó-´{ž~—ÂK ‘û¥YÞ•iÿ²]÷`/©6]ZÆ•) üÅ·)¼¤övQK3x§ ü§'C€Xåí~iàªt7¢< Z=/Ã%ù´Ý¤RóПWx äVòEŽaë…Ô×™ð’Úm¬.éät›Ñ]Ž­ á%0¡E’jÆ«Ië Mõ!¼¤‚Á‘„{ÂgǹçBxIœ-ɼíÚM¶æÄó*o÷d]ç<\AQ“y5„—Ô‰òò§Z÷ž:b¼±ÊÛ¬A)#yÐuê1ÅýAxɽ4Ü«%n„—ÔµL¤9ë6Ó9¥{ 9„— »\šh‹:p1?4„—pUãJx5‘óçœ^R7 Ʋ7ÂÚ¦¡í8Ì^RM;¯'=Ó9¦9¼ï?„—TšÍï½wÚ1à]¬ßÍw&¼¤nô7Ë7‡!büœ…ÂK*èÒx™iö‚¯€˜|­ /©8Ç~õlÆ&'gÆÙ-¼äÞàQ€•„Wc¤žc CxÉ]Ôx†Q³o¥µZ|ÇÂK*‡ÉÁÅ‹3¶Ã~ñ„ÆÝ^R­‡23qZw.á%÷¿paï½âÈ׈³Ex Ž€t ©ÝO­žî=ª!¼¤}/†‹qð®ô×å?Ïõ+¼ä~ñ4É}2²øÂ³ôÆZÞšÉ ·ÄeÅÈ!ûóþ· /iÄ5JK}‘{ ÜIf±]±ä9ºoÔÿ¨-„® _gÂK¨D÷ëõÝçgº(þ΄—´Ê¡““uè'9½5¾7á%¨“Zš;À¼tƒiYéq /¹+dÒd½$Þ6ËökGxIk$ÁgÝqXDPëäýmSx »óY·xµÁè΃žÂKZ§@‘×Ç÷‘XåÿÇIŸÂK̘hǯ÷ §zXë"VyƒÚCà‰é^)¾ô·)o j€_Z'Õ('3¾Má% K3™‰×v‹9jä¾=u /a_ü¾êÍ€¿s–µR™ á%fTXŠ÷$ö½+ã3,Â}RxIç•+Íâ;æ¼ÉtNï^‚þ<ZÌÍ@ãƒ÷u_“ÂK:šÂ·ÊÙiÖ¾Z\¦¿m¼XÞñjÒÐþ(±|6j /éÊ~ö¥{ ¼[wõžÚ^ÒÑü"¢žu ¹~#ÂKúdžjÏ<…J>bñ¼–·[¤ìüy%ü c…—t‚ºû|1/ 3L^ü /é•wÚ‘=˜;íʗצSxI¯ Ö‚s>›JœËù%SxÉ¥}ÏÌXÛ3sž¦ð’»c4l‰¿ž½S¦ð Õõ_œRûãµÙ3(oíkÞøT50Úµ¢¿9…—Ü»9ø§?ØëX¼màú^rÿ¥À¦K ç9#Ê[Ãzø¼'Á¾éáHgœ±ÂKz§™ÈNüÔŠF$äüw…—ÜX*‚¤o5ÙÉš‡SxÉÝб÷ýâ©Ø ¿àƒOá%÷$Ä{X s¤=Tæ­Lá%8{ù‚/þ˜¦™cLSx LRq‘ÏžÑz¤¥zOm /æ,æR«S¬•é±ÊÛ=$‰1Gë2÷„¬æIh±Êæ="',þ–¸Óz=4…—ô ë‘Ò¾¦ÅÊxß^ºEË5$=£mŽÊ¿7á% /ÐS>½ß[Ú²­òúÒSxÉÝ¡VÉš/àÅÓ¾¨ÆÚ^Ò× ˆkͳˆì-f3…—tÎA}keÍúE¾ýŒçUÞÖÂ&ô©5µ~¼•¦ð’¾hÜþ›¸?P[w­Iá%°óÃ^ÖäšÔø(î/2…—t›³Œš¬ÓÏr¾Òrq^ì$A/î´(lkž‡œÂKn¬yî&ÜÄì ?ª)¼“,3ÏwÌP@;>…—@ïµ'O7óµï¼6Æ3(oló&Ï…BŠÌ|TyþmÂK éÃFLò¸&Çì˜Í¦ÅZÞ`¦ÈFmÔz¸)ol%~^3ºFÕᄽ Pz½9…—ÀÀd¤ï‚ž°}Ó˜cÂK`J2žy¥ÕÇwõVúpø¾#¼ÆûwŽu"8lŽÿ@bG±¬œwâZÖi6-މMá%ˆ]¯Ijyƒ+Ç ‚¥ÇVÅò‚•ÏØ{,lZ(ùó /ÐrËëlÞïlVOïý /xr¡¾[: m¦Øké)¼‚ÈÈqš$­”˜™ÂK  TwäÚLÇa¦ð ;Ídþþ¦h¥†Þ^0<ÃL3A÷‡ùÊý{^°•0<üm¥1zì¿ÂK :UB”Œ÷õƒca‡×Ö^ÑÜýÒœGH€ú%¼ÃÐ_Ãæ¹€=£,oO^2lŠ®ô4Gu(Í9âŽ(¼CµãW ¶rxgÇ׃ðÂÕñN½ÐM_®û¤ð >í_Î<„0¿™žAy3úYÞ£ÚwÌ×Ó׎ð’ÑÍäaDÍ»îd‰Xå­ƒT¶]û'˜Ƹô»ƒ/á% 7j-Iû¼Rëï¸ßÁ^‚Fr‰K4ûþt V›Í~·¾Xê¸ì€u|ç±z¬ò†j3ŽYg„­êà]-á%q^¤¼l/±Å!Vy¸(§dqt“~~WyFÙ’4içqo-Vy›…8íª [a;ás†%¼…=’™xmZip /ôÇÙá“Év9ÎB“óÇZ_ÂKp±<‰+ñ?úCfJb•·Ió¬ …÷TÇ•—ð2HµÓ}ch†·Ç^­Õ|fa¯nƒº>>—¿„—Â@¾“& -÷Fú]åÍ${ö:{_.á%ƒ¬•Ä1\aºžÿ1s!¼dlꤻO´l+-~ÌZÁb•·mb\‰ëƒ1´Î\·n /Ûz «@×vÿÆ /&LÙ{žQ •êô>Ã^2àmŽ—™x “’‰ÁÓ]ÂKÊÇØb}ÌvÜåKxÉüè‹8RuêFmÚü®¼„—Ìïgð›ë—Æiï[ÂK€V“ Ò².k–ÖBìT,¿Ã¬ÕŽö1Þƒ×-KxÉ,çÒÝ ›–5F—ðhŒ–ìÏ€º{ÑÎʹ‹KxÉå sªâ47Vxɽø_éÌjÞõXËhS ¥9Ÿ y/¼Ï›ð’‰+L4º8Mq®o»/í^2kã\è ]wpWD¬òVb×'½Š³ÑwZÂK& ÁUK}§ÆëGuí¦%¼d¢1‚ÕÛôiý›^ðGÖ:Áo¢6õõ ¼d’€³Ç:¹zfö¦YÂKn,¹:ç$­þSß÷fâ—ð »Ä!2íhÓΡ_ÂKfƒ&I ½¶~*(^¡ã½„—L)ÝÓ:|l0:Ñ÷½:v /™ Àùñ˜äZìø]å Æ;ÀicÿðyCûÌפð@ÛâÎ8âGÊ_¬_á%0 ø”1›Ž»òòg /Á¸^ ß8½8º¿æ}²%¼äÖT0-ß;Ÿ¦õç÷’%¼dBáµÑHƒîßï /bÓóì¼PK¶¹@¬ò†ƒóÒ©ö¿GËŠÿ9b•7Š1ŸgÂÅy§Ž\l»ïØ3´ æRF®7)åá~(KxÉf³3s묳XëÂKÐðœ\ -¤vÌÅôáKxɼWÏŠ»rÒæñü…6ì^2'GlFöÌ»u¾cŸQXÂK&ñº¨ßþgý7\áW¼_åm±~;©.,&]ö9¦°„—`Tc¿bBhœ?óïMxÉ­;Ñ5Ùϲü Ý5ö—ð’[óQ/3ë Ú<Ä—~WyƒÈz I3nWÎ ;Æ¿„—LêR•/ÍTÜO¼þÜ«—ð’[DZÿeœöã;ÿâ”·;ÔF炎¨c¾&…—Ü“ü¾jSpß)aéû¯ð’Û“ ç–õM}6u /¹uÜ¿sjý~ÛåÍ›2Vx 5;Ñ'KûïdÛµ9f³„—ÌæØj¹.¤'K̹/á%˜ÿa}‘<Äaé‚×èÏ+¼d‚ÃŒ3°ø%*¬kG/á%Ó°ÈÝVš)ÞS‹\/Y™)%÷! åÓê‰Ø©Ø9øî“Nix_‰»§ð’Eë¿o´ò£ë3²nÒ^rï {¥¹Ðÿh¹‡ÐåXÐ^²Ì€»~{o[èÈîØK„—,8#£H ß’ePóp½ø%¼äÞéÈÉ)‰·²1ï¿-á% ûòÞu]÷žlÅÛ òížI¿ú:¨-Öºð’Ë ûN^:›¾#ê,á%÷ È7›I#á^Ö8 ójÿ%¼dÁ9Ý£8ÂûYè,á%÷>ÅÓ,ým°o)™g³„—,Ç¿¾cÑYWb /YÍÄ)R³˜dççXÛ^²lÊÁµ£ÏUȧõ½OxÉêôåÚ©7~OþÂûYÄ*o’ éМV_xr/á%ËæB#lý¥¿¾ ?…—ÜXôÒ{`†cшUÞà …Y‘{èë¾³„—¬A–‘4> ¬f°~} /t4^CÝI{SŽ!öá%kPjõ¬ øÅ ~÷¼Xr\fEµ/÷³¶ð’…“ï7ÍèÚœOhúná%7vò 1O6¨gn#’±ÊÛ0½ŠþN»/ašþ»ÍcÁi8QûŽ„$\c /1Fbïàp®î8Þ·…—@dg@ê@”[}÷ßUÞfÉ@“š$8ü- ‡ÿîz±à Ysë#­3¼'¶ð@{Ì[Â@Îâ|b‹¿My£2{hs›EÊÄ\~¼3á% ">¿ZtD™k¹…—à œ¯ñùz€ôYé^má%Ä]¿óÒT <ÖöXå \ºfž}@1—¿á%w¯Âe¡ä;íâ+ÿÜ;{ /¹{Jçà@Ü×açJ½xʛ̈́þÓ)æµì¿«¼aD8ïó/}á½Ï ¼A„€tÕúØ™£µ…—,`!XE-ë£oŸÕØÂK0W½žð†÷!)Óçšf[x ®ºøÞjž©Oø[~/ÙÂKî: (Ϙw3“ ÏÒ-¼dìCæµSAcc ±ýÅ6`Û5úó×E»Æç’¶ð’›kÎ&üá˜yO¿;K«¡šüf`Ëq7‰ïWx ¥CBÈX| PÚÃgp /¹±|†¤ÃyOx^ÃGÜÂKnì¢ R¹ÛBˆåøï^í;¬3Ÿƒ®ôb¾ÐAÞÂK6P-¶¬{Ý<~[¿ö»Ê-¥¦™A¬þýö’ÎXå­þú;×ôdé®í¶…—À }½‹Ð›¡?ßð>Î^‚hü!©f6ܳÀ^=]q—›»‰±1Ä*o~·­gýÚëDí¿…—Ügã|9Öd)ªÎ‹ßÂK6 ÇÁ©1ÇJ+¿Õ ÚÂK6¼íPÇFO îC(W½W·…—ìn¦Ï™gc#æÛë‹-¼d†öO’cÝu·ð’=HÚϳ0·˜"Në÷‡-¼d£«Íว&&[©õ° -¼dÓ@ès}¢g^Û^BYœ±±v0[]Ôþ¶õb98ÛÂÿbr–f‡à^²aèߎ1l.ï^b¿«¼¡„Ä`FòžÀ% klá%w‘ïé}ÌÝ6Ó¯öõ ¼±ó×Sóÿôß¶ð’Máæ{OßYEnë…Xå { EØ,A\Òþ~…—`©¢?”b*™¬£µ…—@^y¤šµ5uB·c /g"Ç S8”,è'ža½XŠâäY‚ûŸ¨U±ÊìcÂgaïð'»«ßïQÂK … þCÂ2ñiƒãûºðÀN'k¥mjUvPˆ^³…—ìCGµ2WÂ5 è­é„—X„{ ¯dLâ·=ÇÂKÐÖ.!@B,sU´)‡Ïulá%€ò îìõ]ù·ùz^”ÚX¹ÿ6ØÒp o /Ât …ù>T ÇQxÉ=µíöÉ=lXÎ÷Tá%8] [.‘ Р¨õäÛQl¯,†ÃCj¼;Ïàmá%X¹À{ÌöAwµHÔ ÂK€CU'a ÛFçx /¹ òÖÉúˆÓ\#|=/\.ý©—4eŸ§ûQmá%øÚWÒ‡¡ý!-]Æñµ#¼ä~/xÃù,ìh&†Db•·ÖÁcšI+ S(÷äíΟÜÂKè{Ôoªq„—(“ÔzT›rÒ®wµ…—À*†­¤uÝ(×R¦ŸoÂKðOGÐÓ<º ØÆ{Ø/–ÍÁøz½÷´­Z<¯òv³ÏÆrœ±¨E)O÷8[x ,O[^“¤DŒ/{ná%‡º¥ïàx¯"dÑׯð’c€èJúgˆÓÆ3(osÒ·$qzáP1³NÙ^‚6&ú'ê€zëXŽ˜ù;^rc‰!gOØMoF¬òFŠáçZÿÑ£@ÁI¿«¼-̈m_;è“a„ ÚþÍ /¹Ã]î仯š4§‰õ+¼bô|zæér>vùw|„—Ø7xbøæ¿U²÷û^bN´ÚLÅGœ Åï*oàÉÑC™…å‰kÙá%ÇLkVâ&q\àTÆ*oðÙŒáGóçåâÁ:3žã^Âk'jÓ/éWÃÃ@£ä±Ê$ÕÁ÷̼«Eìjå7©é¾ƒÑ!ÔYñÎö‹Å;;í“gøG‹÷€¼u.ã^Ý2Fj–#Õg«ñÄR¸öËÚc‹³“Q‹â%ˆÁ´Ôä½Ö0ÐGâw8ÄKk‚äÞ‡œäËá(õzþ/a¬ ¦¬Xë“ôËÀ˜ñ’þ—K ‹Ô'›à ß[æç¿;,¶aü#¥Þ í3ÚŽØ©Øg˜šæcÌCf±K±%gÂÛ¡VZ_»‹ lâ<¡œÚ¯4®r^ì¤>bÖÀd=µ¼v:Uy«Ö®H=@èy&êbË‹ÝÔ:éÙŸþÒŽª¼Uš½ù÷ÎS#eµºFÍ©Ê[[˜1ï^“ñŸj”eÛ_ì")õé°š|lNUÞ:ª4©I~»ö»ÊÛy÷ži6êVóàm;.wêz±¼4%öY¨^¼yê~±fÀ’ö¨Bÿ¡åuÖ©ÊÜwŸqïÓ¯¤´Ç÷Ö¾»©˜µzÈñ 5åmP³¾¥ÞW3 ºø,øiÊÛ<ÜKÌóvS¥˜>3xšò¶øpñcÖˆwÚâØëiÊÛ"(°Ó:››iõþÐiÊÛ¢±ÀùB+ c·T‹xÞùbÙûœYφráå{šòFÿ€Ä?+¤ˆïA¬ò†ºdÔØ'ïF hf:çÿ4åmÔ:‰{ŽûyÞºò¶©\“ÎtÝœ¹êî¡xºò¶é32ß“ô]õXåínl;ûz¢ÃÙ@ó±áþЕ·C‚t)‰}`£yàßfWÞ(’[ܯúÊwO]À‚ü,ìãÅRh,ë‘¢!–²ˆ/–z™Y; ãìëyúz±à ެÿ;øŸvßµ¼Ñ$%}Öo•Ãö¡ótúQ,õ³?ä½²±‡íØÕŸb©-Œß›|¥cÛgÅ‚Õs>ÿÈÂCJ­ºþï–7LÉôÜ‚HÒ o_ëÃòÆyÆäÉý?zO ‚+þmŽþbQ;Å}çæ¦|yóèg ÅRàðKþó­Ô/ôÏ˜Š¥‘Ò—çÑ›¡;±~Çz±`©dNú†Ü<¾7ÏñPÞ*/,¥$O“+œqçÊÛ=ŸföÒÁßF Ší¾Õg*oXÐÜ¡['uºtÌòbA@Ϻ‹õYOG‹Ï;•·FÑùšæ ,ƒ»«÷ÜÏTÞúâü[ª³Ð¢àÜ®¿³©¼uVï+cLPúÁ}Òs1•·a{Tæ—êÆ3øÙ=ç‹Ýl6g šúr5½‡õb1ßòÓ»ý†I1zÞ¦ò6xy ¿™Ž–9qNåmPdàsÝõ ¬ís?ª³”70 ^ã^=ËÊÇêõæYÊÛ„®æçç{€•FAÞ»=Ky›ƒ3Û‰7SùÅÝh)osZ£ éìuÓZ]o®î,åmR ܱbkõ‘齎³”7^Œ÷Iºu/@¡w¶”·ÅZ$ûVße†Ðò:k½X Ïœc(•}á}y–ò¶záÆœÖ䲑ä¿{^l¥ÑZªnÑП×!c·ò¶ dŽ÷0Ù+ñùvñXlÌc¥Ú‰-‚Ð`;[y[?`™õ¾è¯7}.ôlånŸßL{uçXÒ^QCnåmÓ»jÌ<;ÉÑ«ý¹Onå Ä/\²NEî–ÏIœ­¼ë;­¬oDÒÞpÎÈÙÊ ¹Göu¯\‰×±–7úH†€™õE&¥h\£ñì£ØŠ‚¦'®fåpmŒ»Üù^ìÁ=j'?ŸºÙ}víþsŠb ~©w öåŽñeÄVÅê”’f«égšç4ÅBü.ôl¸§r/±ÿË[-\Ø%y€âlå/îëg(v—+;¾7ʧàÌòõ{,o_‡¯FËý‹µ˜ç¬;ñ²]KfÓ뛈Ooðå­ÖLÎàÙ½ØüêŽ]£¼ÕFá‚=~ZC;/ÿgÅNž|‰#Ë´ÃÞÙmßb¨c¬”­Û·ÿBUì„à„{uòNKSŸ]G»àÅrHüG‹¹Ñ.÷Ý«yYl7K¬³rX½(mkñgPÞPˆânõ<¥ØZÿÒ €P°âîÏ ¼ñÜKØ {è%¸¶&J^,çš“çØ:ƒÖºë¼ß^RGµ¡ž¤£…Ú ­[á%Ôfç)õ³6“nq5ü”·Aïà¶b.âÐß³‡jŒUÞEv:ßà 0`úÚ^rkw|0'Í8Þ[2l ›c•·¹fޤ1j´ŒSª¯uá%w3ÍàˆqÒi9Ý^=tc÷‹ÅÀhO÷Tdr&­k4…[LÐ<¸T¸= õú˜œ{±àhפ[7­Çê|#h()v4c¼…vȤ+À³`Dl}±z?=ð®ž4bÛ‹¥ÖIâÞ.Óát¼äÆ*o÷È㱕} ­ñF<¯ò¶9Ìâ~–Ôò¢ÅÚh¾Î„—TðŠ3·î@šèþÏï™ϰ^,ø¼×¼ÞgXÖ’ëŒUÞLè¼ï‘üßÖäPP¼åíð¾~_yAz\*ÿæ…—Ô39€¹ò쎕 ¯7ÏbÆRÇ ïg˜wZfíkGx |”8wø:(« §Tÿ.„—Ü[&½wÏZ•l³Mßw„—´BXn×–zù˜Ùv±C±ô: ÿ7ÈÂCX{Ï;_,HíG‡ZŽ_Ú'…—˜FXh!Ÿí;»{øqt RÝO…¢Ê‹]#ÄÃ8ç>8Kks|gÂKˆŽC×=õu0ú›©À$…ÅV~óß—g¨"è:²7Vyƒ¯lÒ µY£ÃoÈ¿Má% ”ÐM Í-ˆÒ×ÄI‡tbN‘ž|Á!…[ÞX©Å*odÜë‹™W|í}_ñ·)oü€Ÿ952säÐs,¼äÆâNë:éÐj7wõ²ãý*o ÛíÏ<šÄäÓú÷&¼nI ©Ô¤<PÒk]xIëÍ,r?€–§ÏʱÊ[ïîKøÃýYró›¯3á%ÍÄ<£çƒžÚ¡E`Ü„—4œÀ'H"S$iñ΄—4[€ÝŸašï$|Àâ†Çî¤ÝOy/P¦¶qFì”7*£…2ÞÙ½è/ÈúÔwÆ /i´ÄúbFáÞ5Χ(åí&Å~ò]'ïž«ÓïFÂKîõŒ$•Ä€8(îqÆ /¹È¡3ýÎýî©Í׃ð’[\Pðç$-浈W/ϱð Üáÿ!ymݤ¶ýý /i‹®»…nÇ¡LÙ÷$¸«¼-ú\ÕÄGÄnapï=/¡N†K³ß8©ý(WYÏßXåíæ“n1ß ;5”×qW^‚«MÏ:½ãoé•ûŽ÷ ¼mnQ%ñøY7=Z׃ðÓ?sÁ*›ŸÇü¦K`ýÁ­b¡‘ðí¤¡ Âò=ˆUÞ‡þvÉÞø¼~»±ÊÛÞÝ”’WFi‡œ¿Û /i ¼¢QšÚ;}Ož±–7ö“WѤ.àðÞ&÷K3§ÐAsBI×»ÇÂK ûʼnÆäqÝè þ­xG±³žäãHO h¢ÞÖ÷uá%šà%¿Ž»œØ’ó3KxIç ¾ KWGô½oû¾.¼ƒE(6vÒÂÇUãÞ¥«×ÂKºaÐkd¿Žo¸vÞíŠ]½fÞʹ%(2{úÝñbqqû’è䉞Ú/–š/ógú,Ž÷°^,}{â{V«Aúiù3(okê+Éûå&}ây•·JcŒ™µè`êÇÿý{á%âXù~Ža#ŒSýo^rW:ê·ð©¨õøz‹¯_á% ø—(R¨qÇþ³£.^Òz!ŽoaŒ Òþ»Ê['çôË~¬fƒ>¢n^=16‹s»S§¬ÇïN…ÐÍʾ%ô‚x¶ˆ]/víÌ?£|0ißq¾ /AyP³_s…Ž·Íùø^"¼¤wŒ°…ÿ¥½½îó4´Ñ·Ø›Ü•;ÓIåÆÕuIÛ wtÅÒ@¨%ÎÓøààþAß΋"¼¤zGì|/i…3ü¾vŠð’>+uŸë¾oÀ¼ÞG‡ß©b¡¾”üÜ9[2lJÇcNjņ?ZšwÂ6ÖN¼åmBïêžõ默 rŸ×VAìòXJ^ìõ‚÷à~T\Pì¡Ö”ß•7`§A:ÂñgPÞf}Hûïî¸AjÔŽ±ÂKú½‡[Qgi}çõ°!å`±»°ßòÆtúÄà:Z7VyÛ4‘s_ðî^·Þm±íÅnj1g­UÍðù{^ÒAcMÞ¸TÎå›$0×™ðØg‚WœÎBú']ª«¼ý^åÒVÒ¹±Êii>d`½qöy§Ÿ›ExIG{ ˆä»^UÇ‹ð’[ä#ÇÙ—vâ“+ÖŽðpu(ošÀ©WáïWxI7ÌÜõVèüá»r_ðkytJ˜|@ØÞw^&ô_;ÁJÛ5îÕß mO{\Öky»_ë¯Æ>´èx%î5~w¼ØýýjäB›çç (ÂKFá·~I¸¯ÏÉûÃòØõbw 3HÍùð¾îõ|^í±†Ö¶vAÖîßð’Qq7Ú«$leQ³¶Õw/)ÂKö–0FÆóVô‡ḇE±¤9¶:~|×kÐ’[_,öõ²Ówa²(£Ä3(oï¬'nGïzAéwû‹ýWcÿ^k€ žêߦðX_ÖäË~ ×Ù,¾Ö…—€9ÛCäËú-‹ÈØû„—À0~e>éÎÔpñΔ·Íäïä^Ç(Ôؾ΄—à˜niwÄ[‡Wó /!4f*JÒÖÄ ® þ¼ÂK`Ô‹ÍkG zиÓù&¼Æ‹à†&¯ZÍ)ö(á%Ä ·kÉÜ•q}®Ï÷ìÆ*o·º(o€Xº3°Úz²Ú«¼Ý« î©'8³d8¯ßÙÅNrʾøæo%Óö“¢±ßUÞu%~t q{ˆ¶ b•7S§ÿ~z3Íü‡ü›^)9Ü•wÖŒC»ûþm+¼š[_ˆú[‡"®óifÜXå #«Y{ò«•rþ~…—@XŒóþ¡Q3ØÜ¬Ã1Ç"¼dг´ôž„…Т#Vy£þÓ7’>íþLÓÌ1ó"¼dp°ªÉ¾—à¢AKïýò&¼C1-L~ÍGŒ4Íë€"¼d˜‡x>ß0†¾i‰¿My³AÌ‹‡É1¾Íæg–ð LPÛ8…õãÀÍ…¾ á% ”b ®¤ùRh™~Ÿ,ÂK@Ž„fÑÌZtœæzTyÄ*o¸±‰Íúo¿ÚÜ7¶½XÌûo…%]mo‹³gPÞŽéA'¿™ûT®j¿ /ÈÒ{ÍB_a‰Ø©Xð‡~þ6Jò€zãûŽðllÀå2|°îú\7v+·£o§ÚÉAÞâN+¼ä¾ÊÁËBxžß ™òö»†ð’{ SµéøkJÎÛ=nlQì=e’)°¶eÎŽ§á%ÔÑÂ1’öXk~G´Ø¦ØÉ¢!a > ¼÷ ¼dVŠ^Ÿþ›PÙßÛkÈ"¼WÝöëµ…r¨>î¢Å*oÌ“çõ*ħ¿±"Vy£&éiM®»1s5ã=(oX˜×Kk½RÆy¤Ø ;/>Û·¦îLì©ÂK`¡Œ3 ôÌià vì;ÂK&pÚÜF_úÐ/4ö_á%sØU¢7sï¿´²æÝ³3VyƒÂ€µTóRÂïÜWy#1ôd~5”uõ}]x n%#HK6×ñQ¦zxŽ…—LêLC¸%îÊD’2ÂKn,þñ•äIÐÆf,Vyà îWöÚš£þþmçÅbÐa$_p2/ŸÞc…—ÜMü™< ð°u±ÊÛ‚üá5/ê¬j×;ÂK 1Í3Z~+ÎMá%¥@äÄs\”ñt½+hR(–Ãò¡™<À‘”¿ñ½Dx wqßN\aÜ£‰Xåí~®ýW'ò¦ËtF}!¼äÀ¶kª̱b èGâ±S±8òq²'? rz^ɌإXÙïƒÑ¾^OòQ¸±ûÅÒ´&õõ`k»ßþÆÅÂìbgfá¯ïÏ ¼ä~-Àw\?êäéšv“ÿ®ð(‡HºãÇLNšŸ…Ux 6üõ;G…^Á÷ä6-¶½ØõíÁB)‰zc•·Âi®š0R¨)ÐÖ+b•·Ê︥óxŸ^¾±Ê[åËÙ½P;d­ø]å­Á¹¯ÔÄɹ(ŽE{ Y…—¬Ö ¹æÙûrtz€Æï*otaºÏ‘4–9œ®½ÇkÅ.ÔC-õýÏ4.€ã\Ux aÖ¸`Ïf˜3ž?¯ð’Õ9/rw¦}¤ã>ÛUÄ*o½sÂÛ1~ލb]ÏëåÆ*oÐÏÁ3$=݆VBp…¡mðbÙ†N5$å’FùUÞ:æ`Jé¹'Ñ¿îA^‚fô„Ó,Ëå b÷‹9Ë>múb•·AK÷¢—:1ë¿q /YäïþxˆïõcƒŽXå 7@üÆH¿Ë;âûŽðhäÓ$*j2Ü’éè{Ÿð’µ*/ý;z˜çì™çXx :Âìo®ì7ŽYÚÀ«ð’u¯4öN³öƒ²åÍùˆUxÉZÖàtŒü%¬òxb«¼-zb­Ì„‘î["ö·)o›.ö;{é`zk=Þ¯òy9ÌÍt׸‹Ãë€*¼d™·sO}†e#’ÅïÕUxÉEŸw÷ì- oÆ{æø·)¼d™ÐÈw²Ž7ܧť²ßm/g_Ìupæ|žXö»Ê›1žvš•»ùF‹Ö}n¬òfžÑ%õ[&„g’žÂUÞè$_î´¾ÐòóBxÉ=±Ðdš5éÅw¢Ò¯¼F¬òv Ô›fס÷ÚéôÅ{°¼Qó‹{êuTòÓ­ÂKöGcï™øžœðMZÁ7¶(–þY;éÜ’¬õŒñWá%÷…Qr{éy)çdV<Û˹üЀ7'®Žã\UxÉæ°¸Û­4ΖÔÏ;^ì 6޾~…—Ð5p—˜É\„ÔÌã›ð’ƒk=.y´›V~Î /9¨ q·O¢ccMŽïTá%‡ÂBÞ,¶»'–Óý›=ÂKà²ÅÂ#yˆÓbøÞó©ÂKn¬‘ØÒL…ݹªã\UxÉ]:ø{Òj¿ëƒœ'ÇŠ«ðȲs&3Õ±wwXo†‰ûŽð’SQ&í~ئás•ä½½‡ýb|ÉO äÄöfˆUÞ ®…5ßJÐ'üŒmÂKN§çÍÌš¾%ËkÞ&¼ÚB+ŒLhѪE¬òÖ) ñåÚ´íÙò™Õ„—ܵJi–•¹(œG?éú‹¥öX-©ŽÅ2ýÆÓ«€…ƒÅÂ#HsÌæÞÖ äÀ¼ÿÖ„—άìðÃ&k¸4re¬òfWâZ¯æ—ízÅÀ.‹.H ?ô[ŠÍwG.”7Lf Ïý·nò×/ÇMx Z;ë²bíÿuï쫼-Û÷ë|ô:Þׄ—Àò|þË3çzˆ»g^‚FÔ -zã·X%‡Èg*šðèäÔ´¯“FŸ T;^,¹Iµ&¿¯ ^ÛLïAy[h´× :ŽÍã¿«¼í3™»$$ôÜ÷ñ»Ê. ß/è¦ —Ÿ…Mx ®PðI®Ð¯™y–  /ôµ…¥˜‚÷ÔšðÚ- ùÉ×¼P‹óåšðJUÐ64*©!Ó{îMx ea!Á}iÝ+^ b•·cfê_šá§­ÆgÞ¢ö»ãŶpeø ÷ô}² /a™ž¤‘[ƒ¤…„¥¤Xüköo)¦-ôE¬òFl}ÏtÆBqœº‹Çc•7ŠÝÓ:݋͋xµ/Т~µs¼á9ÀpX›˜{ ñÆB(ôSç߯IÜmm¾3â%ˆå˜O;ÍFuKßwˆ— háýÔ›ÄYèï—x bÑu_1×¼þr6/Ã÷(â%ˆìÐgMr“Eì´Ø \åVqÙ jÓBÉëîF¼±tyíi†¿OâFÍë¡F¼±à¤¯^s¼‡r<7jÄK ÏóoXm4æØùà­+o•BB%éœތÇ{·­+oíã[ž% ÖêW¼æm]y£g^ÉÞ Æ}è“ù7ß•·{=¨-“/"d-ùøwÜ•7šrבp9@ü¶Aènߺò#„Ì˸Ã4Ì·x/´uåí–T…ŠÕ‰¯=}UÞpvãbw#œY\ó²uå­OpVèéÎÙ(ç4ü¼èÊ[‡ Ív}hvÞ3zãúêßÛPÞp‚¤Ù¯‚‚üÞoiCyƒó8@Œ„™•³­±ÿŽúbYàÎÀq¶ôLD¬ò†³ûwØ{’¯ßÐPÞ8²íBvn6ú“Íx^åm¢+ç#ëI|XN6rÈw6”7Tàc¥ž»­õûïX/vCt(ÍdâéAIC¬ò¶àÎXz©Ù¿×òæ5CÊÛš¬7½æ½gáWL·Ù÷ß©¼ÝIé¨[:ø0¸>û~6•· ù•ýƧéAÇœD›ÊÛn¸W·äUÔ;5´ËlSyƒz.zù [Ù6$«¼áNŒáè’ú¦€!‹áàÜ£¦ò†! M%^|¥_‡ÏÚßXåíPw|Ìàªq'¹/æÄó*oV²k~É“°JÑ;ç¿MåÍŒÁfš;€=5ðIçm·iy3?͵¿ÏúóúÌJ[ŸbËg©Ð)•ÚçÛ×Ù*ІÍg÷ý»Écò¼­ªXjJܯ†ÁHýøÞ·,oÅŠ÷ž}å -€­>ž·+¶4¾cŒ*q/ok(Ö¬m“Þ J/ªIûzXS±«üèvÀª¶”$!Øõb9µR-M]á=âÛ\–·B¿ºU’>¼‘¿(«¼UXBï–µÇî¶“ÎìÙK çkXù×ná3lå­‚ë¾V ,¾ì+Ñl[yƒúÚÜ[l؈¼må­Ü™´¦àÿÆY‚5ý ØÊGÏ’ÿ|ç¬\Kžc7Vy£–ðÒp(-ßñVÞ0¤€Z/ñwÿ©ûïVÞ , ~Š7ZwnµØýb7“–¼â°BP_Äï*opФwuðSxu;ÊÛ 8PI:.s“—y×Ó;çòfÎö;Ê9áø.ŽòFŸøí~–à¸,úaǶÛQÞ&‡Ò¾tØ »Ø|ß9ýÅžÔáyÑ©}Þ¿ø]å UjâO *@B‹îÆ*osS°*q;2qŠw¦¼Ñ{íæ)±í„µôQÞH">+ésuó~¯íÍÍ´£¼màwµ¬à܃Æ4ÞïöOy»gMGzB°ûÞÇéŸò¶i€Þ—÷ €Ä4dUÞ·Ù¿úbyøö˜ß¤üõÓ³XåmS˶¤;¤Fæ#ö¯¿XÜ2c>`Âû‡7 ïÕõOy»÷x ¶Î4ïð6 !‹UÞÉ+kÑ5T.¸Ñù3(oÛ-͘WhZak½Ê82x½Yû¦RVeÅïž˾SâG¡'ÅRÍsQ”7L~ãlˆÞâse°ÿnQÞ ×CÊ1Î`üŽ—ôby/Ÿ€dÌVï»UCߨú;+M± =‰“ù‡ÆÁ¡QÓKWl^’u¼7¶P‚«ÇŽ»Ož•ƒGðä–¼^mÚËTì1q×àeÞ+ŒñÌ—?¯å­¤kœÞ¢0ˆó^¶bÑçX-÷ÐV̳%½XÞj-eKâ”òÌ›k|ôú½XØ9­ì?93ÔÌ[‹µö’îë”tøºc޽*o÷ú=^úõõ(-Û'èUyCá KËu7hP6:ÌwVû‹%³f_OJX”Ï«¼5(&߆¹:¶|ü¼èu¾ØÁùßÔo”î]~ÿíUy»ëäîA;íÕƒõDýw•·{Má¸&¼ ·§Ím¿«¼QU"|×m~ð±k„Í.¼Mhò—sÐ1‚þÎÓì¼±Ê[§.•ÏIp>‹²*Ÿã0]xÉÝ}Ožtzd—Ž{´ßXå­†‘Ü‘û…´pí¼Û_ì¤÷ÚÈúÕ4TqžM^RmF±žÄS¨ÜØãþÛ…—TúÊ-ç½b^TÚgoÏ«¼uì¿kžÀw3=ÿé߱𒊠{ÁJ}ÿUùÊ}ï^R¹r¾“´">“:ÍÏá%Ø?qÒ' 6̉_wݤ.¼¤Â{uò ›p"pÛvÄ*o“ñ–u¦{3-rßS…—@jM…„Ð#8ùˆÝXåm¢_¸\†­3vʉçUÞ&tYVöí»g(ð³9âw•·IUÞèãp‚RÎ+þ6åmYƒ}Fz ÓF¬õÉXåm¨%yZìÊéÕã”·µ@‚¿™ ž#~Öø}üÛ„— `úyQ·ðòð¹ïïUÞè5û”·û¸cýþ· /©&z\òlÉ‚KϵS^R!;†v]Ú£î%w>=‹UÞмåF|Ú9([ç±ð’ )›û½õ™õH)uéõP^C!ÊÈÚ¤u~þ /¹4ï;­ßTyבÍX±“³0õ¤¹™N*ËŽ÷«¼Ý\„ó}çü5‰ÑbcÆüŽ…—à}áSÎwûÝù ®oÔ…—P|÷8cË];”Öòw&¼„:Ù›8i‡>Þ…—Üz¼ÿý¢fÀpåþP^ÒL¹ve¾ò–]¨ï;ÂK§š´OèO(ÀÝÞ¿Má%Í<èvšUÆÑ?3ϼ /¹'4ôá%·FEÁØÒ¹¹v‡Ó}Áo¬ò6 {€-8i$°å³'ÂK 5ÕTg7Ú£ (/¨FË<Z¦ßs~ú3(oPy®ÚwëÂàÞá%Ä;k7@ù÷?íwïÂK`ð8¢¹B^A±³gCxIG¥ý†TKƒlç|†ð’NÊ)\ó,-GÁÂKn ENÎ lŽ}=®®ˆUÞ–i$$_p¨D!oŽÅá%wájQ’¿È1™¨Ð7ÂKîK%ëb½ÃX0ká%BÈxAÍï}¢Xf¾&…—Üsˆõö¹¯9÷Féhßw„—À>¶¡žgÀ|JÓñj½!¼äîïôI5ïdëyÇœð^r÷÷Sʽƒ[GỞ><„—ÜÖ¥¦Y Œ˜ÃÚÆs,¼äÆB2Åçç1«|ß'¤]¼'<„—ܳ ·ÛAÞ&Ç7ë÷Å3(o÷X O7yã í¯‡2„—Ü}øþJuSú–Ì<ηÂKn"ès•ø%­mŽzxÍ;„—Üg£GðwÊ6y_ÂK`Ï !‹4+·î•­‡Ô%b•·ûB@™K' XÉ~Î /¹kžÓäÑӼƛò6Á3Ö•æÉAîºã­ËûÌ}éº]È~Wy[dJôìÇzwÿÉK­Ç*o‹5ïwÓ­Í;ù;^r×Ê˽~401§s¡CxÉ Í¼ŽìÇÊYÿ/ÕóÂKö[É÷I°ùw!¼äæw£½vÂle¼·8„—Àмež.樌øŽ…— žÔµÁ­+À Qùþ ¼úQæ™ëCÜþÄÚ^bræ·Œ3v-Ðf¿õ¼ð’A³ã{Õ;YƒuÀˆû™ðˆ“´XÚíèÊïw§ðˆå_OØÕäÈwܦð¢\àºÇµØ.¼uV÷تØÊ‹|Âi¡Ÿ ÞŠ÷X§ðˆ¢É_¢_¸àª (zlWì"˜4ñ§VÔ¦Õÿ¶¡Xz#ÎuH'‡5W{ºjSx D#ПÏZt3+«Æó® ~”¸ÃÜÛ5ØÒ;ÛŠ$þ%ŽáMZ¯ÙOb /Á{8‘°ÁùVмXá%s±TÝËîØ«§ðÎpŸÜß4yP¯¦ðU!×ÓgâORë¤|Û^ìþÇ[ô¦ g·û5ßXå­-1ÆÞÕ ±ÊÛ­”ð½¨c¡µ‹¾Þó|¼±Ê[‡Ê®Ni/1“)¯‡¦ð€àΤz³À3÷’é¿«¼Á†ô.À:.¶1.µâ=(oƒ<™'€Jܨ —_M#¿+¼K\Rg||£G¬ò†M êL³“¼ ÅüÛ^‚w‚’f51”y^2€Þð¤ÛQ*ÇMz¬Iá%“Ne¤oþÞ´9B{‰ð’[bàã=œøàÄܯ<…—ÌeÅð—ôûyEÛÏã)¼dÂBÌ…Þ¤Êî˜Í^2ÍØ»fÝü‰„—Lá%0©¶ò¾yêЃsz¯aï<žÂKnìá€kò ‚àc¿ÂK&=l¿8½àtãý–øÝúbI†*5i”³éÞ{ÂKîíçÉýÂAýò^è^2¡gŠ}£¤ß=œ•óÙ‡)¼DzW5säèøä^ƒvðûR_¯óåòÊ^rp…‹ßS'|£ 'ÖÛòßUÞ\"Vèƒ/Ø›Ñ+ã‹Xåí°ï’Q‘ùýµPÆ.¬¶kµcN­á¶)í1þ®ðIÞMºwáã¸ñša /F€Ú?ñía©µ5û{^‚Ù,ôWpoÛ¢$ðp~Ô^²0‹€>oð¾‹Ï;^ìäbMš$´ˆøZœ±ÂKÖÇÓ!{†˜%g/¨)¼ÍøÛFp0ÖÝ p¯ŽýLx ºN3ùY‚ÇD¥á¯xÏr /¹?‚u¤¼m´A3V<…—Ü•^pOýB#w£gf¿ïÕÂKVùGþî¿G²Âþ΄—ÜÝŒsã;×¼ä4Ç'§ð’UÙË?_Ò‹/¤‹×—›ÂKibµ¦þê‚õ<£íw•7Rzý@5~ »˜áw0…— –Zp+á„ß¶cüSx fJ®à•1Í{"~Wy£^fY_`ŽKÓ®W1…—,b²%ãÊð9Ã!ß›ð’Õè5°³®%?â„™Oá%¦—½CZtv÷ô¹ü)¼¿Jˆ¨‡ÀÎnYÇ{ /¹±{…Y¡q">íðœÂKî© ]Ë–ú WGÖyšÂKî_þtKØ ÇB²¦ï^sñI$z‡’ÖÅq)¼d™°uæ9®I«®Ð:™ÂKÖ Hÿ£µPõž2ã=(oƒ†Öyþ Ú< |ú¼È^²ý—õåL6´ûLÛ^‚#¶üžóèóΊsHxÉÂGtêÞ .ö_ïOá%讂ƒü¥žð昅Qìy•78šöjò®úŠßUÞô‚vIXÐð稦ð aï!Ý'˦|eúÛ”7ÜúÁ÷Œ:«c=ARÇÏMá%7–BM €w™Lùï*o÷ 4~9ÈPn€¥@ìëÂK 'Æ;â¢L.ÿíÚ SxÉÚbn'ï;ËF@"VyÛ‡$«ž´Òv¥DSœÇÂK'>Ðû L¬ ô.¿Ã/¡fC#á^öñ¶¸Ÿ /Aì~0ó±hÓâï)¼„&`æÛ±«…Óæ…Þ£šÂK6¤ƒœ¬=Šú0Ž—Lá%›.rçK¢ ’ÀÏ]YxÉ}ØëÊÚ!ƵôXá%›&©gÉQð£lüžÏ+¼d~®½Ë¹ÛEδó×§ð’]^Á™¸I¦Qãœé)¼äÆ.ê”­ìw€ÃpêèŒíŠ¥!åÎþ8“°ÿtí±)¼MÇš˜™Ç¿9¢îu·ð’Íz~¹–}̵NœÂKða‚oŸ=o*}âói§ðH•T·ü3РO8ý±Çc+äNæ Ü«>˵„— ‡×_óêilôߊk­.á%›Ò„eÏàÓ¢„o~/­/–ÚšéÜܜإÝb•·† ÿîyO¥åt` KxÉܤŒ?P>íø\Ý^‚ 8l9GæŸQskû=u /A,?˜“u{{8{^å­“à4Z|ó0’Âh ¯É%¼“dµÒü†Æ?,‘â¿«¼u^ JÉ\Kðl0‹ ~Ë^è ë÷GG¶r†Ú÷¾%¼dwj[øÜ×óò4î9^rHšx&®å½dPÚñ¾%¼e!f{xOtØ~«ÿ®òvo¸h&½•y¨Uüß%¼äþQ0‘‹Z¤ªmuB/s /}×^‚QQüÑIc x wçµ-á%w%@`ÉyºÔMB³ïfÓWx õåð–‚_rëXŒw÷G_ÂK08€û}y¤Ò§xx¬ò lÔ-‰ó¯?ï^…/`­_=RäÂõ«—ð’»°yµ™´8Æ ×Çõ*–ð’»ÃÑád=R“ô‹=Jx ˆÔ&^JºòtˆUÞÚ®#ÀSr¿HÛ½ÕK¼3å­Xÿͽqü¹ø§ZÂK`m‹îæ—µ®Ç4@ê=ƒð’ÓÁØÜß¹à¼,ÚÇ~ /È"®ßÖ eŒ¼Þ\ÂKNg£¶dí~ 8Ø«ý /9}Þ“¼â*•áJÜ«—ðÜø0f-™ÙQpº 1š]¹LQÇ.á%H=ÆÝÒ:›&!Ô별—`äV4I…ª{Àaüý /Á0꡼q©¸¬û]å ¶¸s%MÉŠøi>sµ„—`¦¾‡™©ñ•Ù莭,á%€|Î?÷aï‹»²ðÜŸA.ú¹ƒoJ<6ÿ6…—`Ô~ÒÛ“ÒÈÓ}H—ðÎ×À/¶d=êÆ7D¼drÝÉ£Ü/›5ôñÆb–6¸_‘d£Íùg‹x b¡¼\/?ªâ ßã¼ ^‚ØA݃ž½ȧ9%~·)ò|u”ŸÌM^EünW,*„úã_Hî3,â%äúC²COsjwûÐ>_ÄK»ÖÉ^fûÖ± ´c~ÍŸa)ØYé5î\&×{G-M¼Àðõ½fB†kÊ÷‡£¼Ñl¨~Ù7µñþóNûSÞ*í|žìë/üô@ðZdÊ[ûèLt2¾¾¨êkrõÅ—8{€.øÍäù€ý)o~á-ƒ1éIÏ ¼µÁ™Ìï÷ýà™ïîOy»Ÿ@£xhžUFÍÓœ÷º?å­cjµ™êØ]Ö›w_ߟòvW+ÎØŒÙÙ¢†ÜŸò†³5zžµï×»æ±Ê[§‘ÝL~–›¸¢yÞŠòÖÑFçÔóv7t\]?ï%í¢¼Ñ¾å¦n¤ÙT I‡žï¡Ô;©e›ô¹ 5ÕÃ_z—öb1¼½×P®ræêógPÞ »Æ‰»\• ÝÔ´‹òSM´ßb_/córï8Á.Êë¤ò­4㈠Eö,ÝEyƒÚ3ú´Iÿ¬Òð 0¼]”7(ØÁ'*ñŠÑæƒÄ£¯Ér^,5¿Çenr¼ÃfWå „p©ã;!×ϱʯ¬“Sa‰®;µ«òFª¯Ÿ44ìlqþήíÅ¢O6’oß-þp Ÿí]•7|ñ6ä\VÎó–oÅï*o÷þ@ï<88_à¸ý®ÊÛ2Mo$=RøuÌá*»® "~íyNØ4(üžº«ò¶91õ¥ú ôß•ûÝ»*o›>6uÅÜ-Dá0î8×nÊÛ}ˆ'dìµÓîc8'}7åí~Ðk¯q¾-["§¼ûïnÊÛmbͤ‘{ß/¤†»×d»)o›xImyO%Q!½‡¦¼pÊjèLoó„…ýñögPÞX—Ö¨[Àç"%¸8§a7Ë[¡ŸÐ-t\à·Y¡"ôôw[Š%†ëc°)ÓçÜwÛŠ…"_É÷IJDâlñ½¤YÞ Ö^>cM«gär÷O±4.;‰ß"ßY쓽¼Xlø¡…0#¶iíß|¯/v““¾´½OãÙDlS,çëJšÉ0áÀÚyú»÷‹µµ)èvƒÒy±ÎúP,&öÑN3ÖØ‹µÞ•7p% B•ïÕ¼ïô8[þ?_ß’,KŽã:ÏUäü™sý¥ýoì HB‘Vm=ªjVÜ8Aw‰A Þ¼eª!NÙÑ…¥,<˜Ëœõæ-Sd1ü:žŒÒu.ÿÛ–Å¢ Ÿbð&eh]›e¶›7|Y 3E§7OœìÙ}tgK[`z—“<ë RÉû€ÙnÞ0‡ÁkðIJýµP:ßáæmÿÉÐæ^¢ãÒæÑ‘õg§Ý¼•ºè½&Þ˜÷˜=õùÜ›7®“¥Ð¥¶×x<öæ­~4#ûTS‡½étnèlÃbQ]Í¥uêL´PŠï{óVóñ’ž›JÊWžíæí,/,ÙC)ý˜ˆ{O6ûÍ[Åx¸yº¤é çÖÍž<–4Ù%Hƒ³fÇ®f¿yƒÍ—V‰Zž~Ô¢ó÷›7Ø;As%8{¬ˆñ¹žã~óÖ ½q{ðÚö‘Ž÷+ñnÞúY-ƒ“Z^ÙqÏÙoÞð$/Lbv°ËŒ¼›ïåço¿y­úrâA7èI?»õݳO‹]2`?=$à¯9çtö›·Û9¥×ƒº-ÚÇ æø,vð¢,>5ÌG—÷osܼ ,ÍÕµþÍÄ/\gŽ›·QKåL@ýc!ƒ˜“3G±ØAGöÀYÒWÃë¾qó6hìuŽ>ç‚ë&Íqó6ðÎæèEðü’Û?â½Ýb±Ÿ•óÃÓ%ýÇ9ôsܼÍcÎQÂß´”CípÎÓ7oóß‹H:ŸòøçX‹éUù‚{0 ½³ƒ{0çÍÛ¤p’s%[2žŸyóv´ûÃï«¢™2Ž9Îyó¶Ðw×3ç®\kCù%sÞ¼BMwKÙÿkr©L»tΛ7tj¨7d6^¹§–#0çÉÍx0dÒš«‚+Ü]×rÎ~cç¼U|^ Ö°ÒˆÚ~ŽË̬=C¥,üÈñæ¥Ló]µ ‘z9Ì‹—ìØ µ4?Kh/è‡í…¹¸x /!Ì“´^êü…nþ¼x Î9ª» ^g˜–‡‹—dl¾¬ÑýYÀÝgýÙ¹x &‹XbVs:‹íbÎϨ‹—ä}]P6ËNf]'÷¼xÉŽ˜žeu|t–›qÇ^¼ ž¹à%XƒŽïåÏ‹—`Ô1°7Pô<ûè§ægÉÅK2 c®PéÝŸ?²*%ÅçÞ¼•„ý;ôŒêô<÷÷b]¼RkØßÌ:C¡–mõsg]¼„G¸øÇRÛbRRÇ÷×ÅK2µáqÒɹƒÖ˜–îÍ[AûPU¼iƤ NñÏ­ Îàµí»ÎŽëóÚh]¼:‘Õ'sgüê[·Øž˜÷CT,Žï|u]¼dÿbDxdÎ0Y‚;õ±Ób9æ’³¢#ÀÔRÄÞ¼ÕBïª{‹Ø@áL¢Ü÷m]¼dŸþ9kS/’ïüâþû^¼vØõ¬q®ƒ_‚ÇÔ=èÖÅKr%01D3®Á®”da½yƒ¡ú·!;+ zhÅw‚ÖÅKàÂÔ€/†¶xÄ_X¤ öæ 6bxdŸ÷ã_>ºëâ%»ý§¡©'@må˜ÅyìÍ[ãRpS|§¶9c\ƒØi±(¸›óHñ›áʺ^|ço»y‚w^Ï_XC‹~ߺx 4X¡“îÜ[B‹ô;pϱuñÌKàGµb_\aT5ާ®‹—ä΢àÓ]úº boÞÈþΟpÒ±jTÂ^±ÕbÉ»Êqî, ëXÐð™¼xɾ€µcš 8¢ùªþ}oÞF#0aõαÔÌønÞ "Ñ·&sœ ¥šãsoÞ`&‰ÁÁ÷{€Y‡c6ëâ%à“ß7³i”Þ˾µ.^²O¬¾tÙ'Û×xWÙµNÖÅKÐÎ@W"«V;‰æÅkÄuñ’ý²Coe<õ䱜Žó÷â%;"²Cv^KJÄíÝë{]¼$cI¹‹Ô”,´B‹Ï½yÛ?tÓ¶= §éºuëâ%yÿè/º3ÐgƒîbØa±h ÕŸ{øŸÇYrñ.ØC‘wCßn-þùÛnÞµÇr‰þ¨Ñ8‡s]¼Þ›ÿÎ4›9⽸x ™ãK(;L”¦¯î5°.^Rà#BW`ñø£Geø¹¯‹—z ®è 8é½™ÅÚùÜzcÊ1ÅÛî;øNïÛn,Pï\fø*ïÃÛ6âûv‹XsÜÝxr8@Žßìä­"7ÈÏ>lvg.zì¼±(¸±+©X&-1œ¾.^‚XìÏ ïuRŽiÅ~÷ºxÉ.aÐ$ñQ «%Œß‹—@Ë呸ÕÁt…¥!boÞv[HùÜ©|.ô›)ÞÍ‹—ìXêhЧ|& d…†öºx 50QÀÊže£Çß)kÎ÷½yËÔ u݃ýûŽc»ÞX/Ur‚ÓX“ðÃh{ž¿/)žFx²co1C <Õx/.^R´Ž*óBè NÎUüo[‹†>¼ö}Q Ìû Ÿ}­‹—”rôäw¨û×ňÀûîuñ’rEÉšÎ[°ô œÉcoÞXÈÏ÷œ„œˆÌ$ÖÅKpЙKçèƒúÊŽs­‹—¸& VÏ ó!?'/^RXsÍ&žc˜}AÇÐ1uñ’RÁ¼Â ¦:ÿÔÑò~h]¼´JöâŸú¸uñ›Ý¼a ˜€ìaï‹ü38ö|‡›7Hv£x ŸŠÝµãÏ™ûºxɮۀ?̳ºƒ¡G*ÏÙÅKv,ê¾^D—jr¾9ƒ¼.^R°€¬û8“R4sîâºx ´*á\²äLzY`ÏÅÅK ïnõ>K0û Þuñ’‚©Š<ñóið±/¾uñg0ÐWÞ+VÜ®&êù¾7oƒN+=iÍ5®s„îÍÛÈ4ÙzN²ÏZQÓ^¼41®Ë ¿zTžEÞû¯‹—”QôàD,ž½©sÇ×ÅKÊà2·ó÷¹³O-®N¸çºx ^ùª¾´˜“ñˆk=>÷æm²"Í%æ-ØÇ銭‹—ˆS €ŒÝ’ƒ­ÏÐcZ/)“õEû,àzˆ÷çáâ%eγ@ܽž„§*RõÎÅKÊ¢Ò¿ów°çÁ3Û]?ßaZ,9é^#.Pa­Á"öæ Ýhýž]OüäŽñ¯‹—À&³ѵuž²ó£ÖÅKv•“x ý’>Cþì\¼¤,H-ÌÞ³hRj¸:¿.^R`³õaöúÕ ‡þÄÞ¼ÑÛItdYÿRº7Þù‹—ž½éÇSÛ4Т;øÙºx E„@k2oárusî̺xIý M™bw²“†šWq¾Ã´Ø£ )¸r§¦Nèm¯‹—TšGä%šß3Þ¼ÏÀÕ;Ö©aÅë0qc¤DìÉ[EkÌC?°«ŠË©;÷ ”¾[¸ˆZU{”`` üÍp2ÝØš]Ðùrg}ìgDlµX +ªh­R r§ÃæÒÀ‚o,Ïj×÷„~*‹\· FìÍ[‚cíl®±„yÀ¢÷=¿Ø½±HîÙü÷èôãÖ¡#µX¬ƒ7ÅK4‹,ðÇ›©‘ÐõjĶ]k Õ76‘¨øÉÎvk8Š’Í7±žqc3t±“îWÚåz­ãîÆÖ¿rg×YOvboÞA‡HæYG?ÊqZÔj'öŸ¹ÇÓ®} 49Í» Ü‹õ›ì5”+¤”þø"öæâ¿n’zyb¥š¯Üù7o4°HcŸ ÁSÏÙ­=±j`±ƒ€— ²çßö„ñÚÜXìå¡Ú7ûµêRŸáµ¹±˜y®{yŒý÷½x ¡—ÙBŸ } ø“vwãª<±8RÁÿ¿¤yöEª?/Ù±úÕS÷[(aïÐÅKj£"‚ó2‡è[Ïï{ñ’]|£ñ¨²cÅ%ì%Ù¾¤¾,¶>³ÐL¿æ/FÕˆ½ykP:ÍKüqö!OÿBÓÀÄnä¥ãúD·ã;þd9¾ÃÍ[ÏŒÀHÑës­ßóvñ’‹U³–>©årm¶×qb“Å6h¸Jÿ¶ƒœDWbÇZÞVæ‚`pà P ’à÷-–7,úÌÞCÇe÷ã –=öæ­“CîK£uîøŽ½y£öȪ-4ëGî—?“/©¼¿¤=ä, 6?£.^RÁZÀ%ð³EÞ+óp¾ïÍÛÀ‚mxñý;àC>×çÏäÅKvMŠ¡Ê]¸»€F-ÿÛ.^R¹ãYžßÁYþW#Ç/Ù¯7vH?ñkžûo. xƒôóõ¿íâ%x¹qçv˽b<Ç[o,uÝ«Ì,ç¡“7‰m7¤}ÜyðôoÜëÉ—`Œ³hÅ$wVã+µÑÅK,'×pï5ö-ÓûÇŸ‹—ì †–1ŠÃ4z†ì„Ø›7 -_NŽdŠßìæ Ã/èk(æï¡àkìØe±0{Ë¢½ > ñ¸ /^\4­UðAÈÏþ)Ä&‹eI­ªh:ÅϨ‹—°|f(šõCgoà±7oÇL¯K/‚{:9q]¼ÖSÐQ /Q¯Û$¢{ó0\¨è[vUN=ÒìgõÅKv,Hl¥…–×n+Áf­+¾ï°ØEsÐàÖq™Õ‡?/Ù''8éþn’'F_£•ý}»xIãÎõë?¿Ÿ\jnù9yñ’c—’ø3€ýKz Ÿ%/iõ8´.š‡ä½~q_¼¤ß¾&ç:Ù”8>ýy¸x ôiK4­÷¬æ–oõ¼]¼¤å…_œó7–Ên±:ùç–^^\¼¤±.Þµ”pʵ¯Ç¹~ñ’Vi ¤úcÑÃËýÔvìÍ[×r×ÕºgYˆ]M?£.^²KOtºïttè×*^Ë]¼¤5QGøu,<“‡BççÙÅKZƒôPÎ4–sèçîÏúÅK0…P˜Kp\gØ£øó{ñèÞB·°‰Æþ #õúÅKÞCŠó,ñ˜^?\¼¤ ºÛy?D™ÎÜëòçìâ%m²ÙO–gíð)Fÿ|cp®RŸ³ºaò¦Å66ðC÷Û‘ÂðØ›7ŒæÑ©¼tjÔLã)ྱôÁ[‚a5X¾×öéâ%»Ån$%ÄüâîÎHfìÍöMÂÜöàs°o™þ¹7o³su÷ §ì4ió¹ÕbÁéÝhBAb²&þ¹7os ˜Ðfñ†ÄÖŒ“îÍ5’kvrŸ·€Z3½.I/i˜ð€g« ì¿M¥"öæmÁýòÝKâX0üÉ0,½±˜¤2ŠèG8Àkåtñ’Æ)ޜ‘Ýɡƾãéâ%ˆ¥è…è.ÈLæV</UF‚‡çã'—È$ï{óÆÅÅT»ž;Ò8%!öæíx¦Og÷ßáäú¢˜ãÄ.-«¡Îí=dºx 4ÕÐè׈Íë&îºc‡ÅÒ‘Gô•ц7š†xì¼±µd¦ô}ô>ÄÏË27–â˜á??÷s¶Ž¯œéâ%;èFÅfؘþœ]¼¤;±80o»îþ¾]¼dwTÔ&̪WL;í1ü÷½xIgŸ/ûèç¿Ãò¿íâ%ý˜–Ñt¨}ÛT~/^ÒóáúÈùK©6nÎø÷½yC?þzìˆA–‘5þ¶a±ÜcÛ–iu_?K/ÁÉWðüJßRø…Kñwóâ%ý4­y¾žaz޾ÅÏ’‹—ìÃôˆ[ '§Ìñü^¼ ЊùÛîc2_»‡ÒÅK:é⡈=µYX~x..^²ŸæX0¦ÒꩪîÍ[Á»™ó™ÚÇݳ*ß÷æ­`Å_ŽÁç+ô…þL^¼ce #­Ü7±•CÄÞ¼U$ék27Ýcë!»Ø›7ycêY2i ãþ p&±Xüm½V™ó{¹ûùpñ˜ß|:gð`ŽôÄ&‹­˜…ŠnÒw?å7»x b(Z8•ÇDiËêïÅÅK Ore`ÅöỜ,þ<\¼¢Ìx„eWyf”’¿íæ­sé/ëŒuò ;w|ÇÞ¼õ3ªÊ'§dïÒÅK TË½ÐØ5Ú?ýGúMòϽyƒê æzzîpÞ’K|‡›7lž‚¼UÂ+ùã®\ó>+]¼B~=bÅ Þ­3æ8éâ%Tò/Hw• |‘‹‹—@°¬™àûÅ0oÁþ°ÿ/ðxb}¨7Â8þE{ó6à1Ôû}‘ß7Gäââ%=Á°SõÌW?Öž~_\¼³mXн¦yf(þ^\¼¤“iæ\¢!X¸BÒâo»y›Ü¹Ê#>·Òówõá5×ÅK¸ö}ÿ®\aþê^¯§‹—`!pƒ¿ßmÏ\üs/^Òiî%û ôˆÈÜ÷÷íâ%@i¹üéÞý¬â>¾x Hv•NÊ¡-Ô(IY¼oI/ApõŠöã¾»A}Qï\¼… ¼¶DG b1¾ÑùÜ~c3µw jôµå˜Xºx š>3ppx,`E}ùù{ñ4}ä ‹÷û¾à@Fð~(]¼ بEô ‹gÍïØ‹—ÝfÑO\ã†}Qógòâ%(Ô°+¸2nýÁJûÛ.^‚â€óXé¥K¡ËÚŠØrc±y¸_pñ`摼K?w.^‚KÏCW¯­"³SAìÍøgêí<ùûvÑ”„ó퉴¹/ÈrÈ9ξ‹—à!šÈqÔöûˆâ]Xï `ŽKm!÷·ƒ•yôø}oÞr¢Áاôª5‹µ01°ØÊ_5ÊwA Y¿/^F&æ¹K/Í=ªRýݼx Ô|Ñg©Æ r¼<¶X,À#é\opÏÇï·‹—Œ\É+–ù&Fr€Pf|ßf±ÐBY4\±˜f{(çsoÞ(%¾Šôóà⣶Šúáâ%û²Z¨Êô v©þm7o¬'ÓнńծåþCºÝX*ÎÖÏ”—ì"‚}tc;t³èìí;ºæødºxÉ8~á]æÝð>Å ÒÅKÀwÛ¿YS®%–ÂPïÄw¸y«$%¿¯@÷õ¤ï¿íØ›·:ÞÝÂ&r¦ý÷½x Èõx/¾"þ…èmÃ[ ¤ó‹3*}¢k‰¢#®ì9¾x H£¸P«x“7úzNq‹—Œ–éa$t»ž¤ßAÜ›/Ùaù^¿¤]¸Vòtí÷Í/Ùg÷/SÌš©®ŒkÌ~³|ñ’Ñø°ºŽËñ‰§·³í´íØ›·¶¸G5µ–ƒêÁç; XD:±hÑÁå]ûŠQIû-_¼kÜðkÑà ßÁö³Àm½±z*êa[©èš;¶[læÕØëÈÜï¶ï´†ÇbUHöꀆeñï†îžÅ¢™N‚#îŠ [æ©Æßvóvˆ¡yéŽyáxÔû·|ñ’1(6RhB-ü´`ôøïpñtŽ·æb™B!NÿÜl± 5N¹þÓKç‹—`…’Ų«‘2w³ãëùâ%Ð(G’ZÜCu"Kò;+_¼ ÍL­ì½ÈG»4>÷æ @Ææ‚÷5T÷÷};±7o°uÆH°óZ'åïÈO®^ý}»x ºqÀÍ¢ õ»³²coÞ`P qÁØÝÁÖÏáß> _¼d,sç$õ·¥@Íóûââ%³@èÒ¿q\ŽÆs|ñ’K öúöûq"çIboÞ°;Žhk&Žú²Ï,óÅK&Ä”÷û¦8æ=¥FìÍ[-ü5•›ôQ¿$9Vœ/^ñâ]½’³î·€Àe±ƒa‚é‚` þ›°º¹±ƒ`ŽK­GrÎϳ‹—` ӉäÈšÏòóÅKÐß– S¯Yp VŠgòâ% õ@Ÿ@´Ï÷W@!wËÅK ÕNáĬžÜÔãšàâ%;–÷|ŽýÈÍᵊóìâ%³Á@cV©å®¢?Ž3êâ%;guÒ8Í?÷æ­XÑ3µRÖ%ù~,Z±˾°Ëî:Px1ò;ܼÁA âϲÃ_±:gØa±Ä@D«rµ^»ø ¾±Ðº-ËÌf’0÷÷íâ%p×Kv©û¹SŸùP¾xÉ$/W¹?x“†=b“ÅnÒGA=6[,æ¸s‰>ÁiO’cAùâ%01Ââ–ÜCû7C­Q÷Ì/™ƒqû˜^ܨ0öæ ä¨/9ׇž»ØhùÜslÇÞ¼M4ÞCwS&V1ã=¾xÉ<‡u{¸·µs,ègÔÅKöÉ ºŠ¾gý ž‡õïÅK0'ÀmѲh,uò«¯‘/^²'øÕ ÁKöoˆïÛã~»xÉŽE“Ó…³×©W´Ü›fÇÞ¼Q°jÕ¥^ÔWvt,=[,t+—èGÁL`ý‡ÛÅK¸%¢¦ä ê™ç¸/¦åmQc¿gÿZ˜Þeç#æ‹— Ï_CöÑ t¸€éÆo6, n™I¸ •É<6_¼Û£àä”èMaS ¾WW.^'lpñ…¿³oÐ…³ifìØ›·³‡Ý½'ç˜mù}\.^²Z.¼Žr–@ “wÿÜ›·m·ý¸D¼;¬Z6Óh Àb±á{~ô .U¹xÉêÜ"q=ØÁWhXy Øl±ÀK‚GºþöÃðÑ‚&¾ÃÍÛ®)v³E0²í%Ï­ËaðV€NÑ4Û±7o»OKæ…écoÐgüm7o» (ú¾a—€ž 3ÎÔ‹—¬N-Ûðw‚N]ÅEÊùÛnÞ€ÄÇ?HÎô~á¦IXœØ›7l¡ß,êkß8ƒñïpñ’㣰%ç:1é5ã9»xÉ¢9Ò®‚U[~r.ïüÅK(Ÿ½ÆÍ¢ÝDãÒš>7-/A«‰¿ÅÙ‡¦îbÃï·‹—P :.Âý‚è ð,ÿ.^²ŽðœkÉ€wµ«gðãκx Öú²,˜§|§n‡üfÃb_}p i‡é*°˜½±Ü%˜%v'q–aÝÏq®rñÄbv ³|´”äÂúç^¼dß Œ«²³²Î$â,¹x èU˜“É^s¢CÊåw¸x vê¡S&šÔiÀþp6X.^ߨ)4Áð£Ù ßùÜ›·É«‹ŽT8ØCÆßvóÆýËÜÕÛc?½Ï¬®\¼¼dðÁk¼óàq_ÄŸß‹— §›!~9äºOç/^‚—Ïd œ ¸Aµ=áó·!oãf1`·+>I³89ûˆ— ’rAä=À´âýµüo#^‚ØJ7’¡{¬‹~ãŽÅâ%ˆ¥ASpFV %ùü½ ^‚ØEÔ1“àg‹šPq/ÜÅ]Ãu´ßþðÌý½ ^‚ØšÈ×Pm‹NJÇi ñÄ:1ÉŽcêÔÐ.>›)ÄK;pLÌ!q’qžïµñÄrÌ›’ÎÎLÍñõÒoÞvO×UëoÁ‹/c_2îùqó–I\êÏ[iW«?ãæ £Bœgr–äJŸ‹8ûÆÍ÷qV½ml'RÀÚ‡qó†þ-27E«ˆ‘„ßãæ­P[}û ÐÐèßéŸÛ,vR›0úù …ø ^§Ž›70ñ¡))ß·². Nd7oû¦Â„þÙõ&ö¥Ë˜[(t^$u+–óaܼºÅ®gƒNY™æCÊØyóVInv¬í_bÐòZ>ç-óæ­¢¸ì…~œ W­Ì›·Z9àNÄoD½>‹Å‚ïYESµ&¡qïqæÍ[%ç\T?à{Æ39›ÅâæT½W,›ÐË×ó6oÞÁïËT`9-ZeÞ¼a1ÍÚ'Z=@«úfÎw˜˃Y=l ÄVCc ‹l7–˜V—ù¨ÃÀ5|†RÖÍ[£åç7Ôö’·ïкykƒûÂ[Ù¯ Ëî;Åeݼ5 wÒ7âoþYÉyLe‹ÅÙ»bü‡ôïü¾²nÞ!+ðjxò½ˆ«²šÅÂ'·Éç‡eü7oBB³uõy]dž,>÷æ­zŠ>-¦¤{IeM‹ÅøJ}ænž²ižØ›7 ¤À >í¬l]—B 7uêY1&Ê–g?êwó6h ¯û…» Sçèõ»yt +CyŽœã”±7oƒbQêk¿/¼ Jšsêwó6&ø}êCŠYJmŸÍÔ¯Y,ÑLáæ ~î¢9P¿›· o_ކ~ɤML;¼ÁÂØ›·ÉvŒN¼äs=¼{ó˜|íE2³á}lýnÞæ€è­ö¦˜ÇöñÜ±éæ F,ìós1ÍEä¿CºyÛovâ³z>òœ¬Î³©)[,vÌ—Þ…gºõø7oë˜îŠ®ÄîaPsUŸ¿Õtó†wÜ×xvÖÎ"÷¨"¶Y,̺‡î‚×R~IM'o‰þ¦¹dÁå ‹+À†Å’g+Xý©P»úóæ¥)±jhƒÆ„"ü‹ï»,–<~ÍÛ÷±-sš?‹¥hw l%ï»rÒ>o©9ÝØvÌDTãn€p¼¤æl±x¹ªì0aí Ž ®ñQs¹±0_Û’âFv*%¾ÃÉiÂãRï(?½ª¹ÝX,)fÕïþ8î'±c»ÅâàHÂGÄš|.Ïq¾yƒK 8½á˜ „¸z©ñnÞɨ®I;…àkìÖ|ó–ý$FSn3w}·¤–›·„åü„2$.ç>;öæ--zO¨W}ÊGûqxìÍðˆ×ЇíàŠYó¡‹Ô·8IÞÉö;”›7zæŠ6z'j&UËÍÊ+\¾¡¡2Îôgþ¼û?ݼa«ùŒÞAgB~î”›7+aí{>þNÁõ©eZ,ˆ2MpÌëÙóÆïpó¶kpÒ;´bk¸F­7ohçÑo ïµ=.¾‹XëÍ[áÒý(,` ïµ}­7o…B.ZW'òÙyl±XúrõÐxÞåîM=Þ·zóVè5²Ì,ahŠÄùó[›ÅR ^¾/PŠ$þè;öæ>+h^d×’sÐ|óØ›7,ä‚7ßëª"ƒØ›·Š{s&é!¹îj>ço»yCYv3γŒVùʵ} Ñ€$óXXýq\¹¶d±Ð’)I¹¼ÙØ¨íæ­žÅzy~¡¨éßϪíæí칇VÄ‚L ʬêzAµÝ¼µDÒ´ëð«Ûg>½qãûÞ¼µBS ÑÌØ.J«Râw苾;©–8ŒŠx!{ì°XÌ„§¾›ƒ¯|«ñ}oÞZ¥÷e ^EÛõ9ædò·Ý¼µýüƒ·Xæ¾l@×ÿâ<»xI¢}&ÌHuw‡0úŠØd±Ðq™Âùj&·ÎgØõâ%X“ ‰BµûÙÝû‹zñ’Ô3·kÞ³ÈÅÅK€ rQgiIÍÃø}/^’g?É}¼Gë‹æâ%;„‹oj?DŽÀô~³^¼$ÁY |¡?Ù©Ü»’ã%õâ%ðÒÁÁ!{>$oägßÅK70çú´‡üàSìÞvPˆº±ø1g×ó75J&ú^R½xI:"·K÷¨j /ðõzñ’ýƒ;Sú³Cʶ0ÎÉ‹—ì¦ €~•ó _+)T/^Ï›úÎ/ø‡áê÷¼]¼ž7xÄ8Rô¹×F/Ù±à¯áÍ]ž5Ý?®/á$ï¢ö›ƒ ç ׋—ì§\lÅSÛÀHÙí¡{óF©©œôÝ‹àPÝÓßÍ‹—@õûÇ#ö 3F¼hc#öæ šõè¥wêÔAn>˯/I“.LIæ Ü(=o/IG÷ ôŠù0ŸIŸïpó“_ 2s¯ ¤^¼dPƒz¤Ev×1ŸÅwêÅK@ìÆ½ ©N›îïÐÅKö‹ \‘Ù8¸•å©K.^‚I(Ψg’;W#ê’‹—P£»¿OÿVønúßvñÔ/u’{“D˵\c´^¼$qIòÂG\‡œÿÕˆ=y÷—"¢ XÈï‹YG½x }‚ÔÇÔñþ$¶Z,43Šz}SŠ9ü°±Zã±ð°ÍoÏKý¾ˆí7–Úy¡¡‚~37®¾Ço6,¶­ 9šáè‡.^²¯^ì”®uïÍïÛÅKòG¼:¥ðHàЃNkçC»x T"©ÿ }÷ÁŠ}^Ø.^’ÑACPûÂLª¼×àíâ%;ôﳈƒ7ÈOuç)´‹—dJïçð|\„n©3RýûÞ¼Á]fç)uÝáZˆë ¶‹—@á”bö1'ëÔûœ½DìÍ[êèMƒWÌ{ˆV‰þL¶‹— µ\ ¼z·ïXmýV|ßi±üѺFL­ÊâŸ{ó––üéLxU2©ýùmÉò6À?kò¬·~t¢âoK–7âàKç-óháû=ß’åkS¡—¹(‰¶Çëßvñ’¼;îJ³íðÁË$G ß j/É4Þq3‘«Ի괋—ìŽX¼ë6c Žö³šn÷XŠŠHÞØM‰S»xÉŽäH˹“aϺjäââ%;ä®÷VM•'Ö.^‚ÿG ¢íÁaÀØÃÜÝb/^’GËÁ1Ü?~Æ2í~k/Áº)M`TC{QcÔµèÚÅK°BÃcñh‡5z¬"¶X¬ä‡WŒ•Á/9ÖÖ.^’ 5ru/šh zØ›7°ÐGv?ýó/.^²q0Û¾*þY0ýDåçÃÅKv,ù‚áR\ýµÛÏ·‹—ä…Ùeu_¸•}Züf7oõ,?ÊT¹±ºæ˜n»xIÞYÀÀ¯(Æÿ}9$°›,¶“êÓ´ï¦[}¶Ø.^æCÒ=5ôþÝÃßÍ‹—좟EÒœ6ïœÇÞ¼í"‰‚úÚó’'–[Ä6‹…~õ¬Yy¤ôÆõÙL»xɾ(¨íöìÐÚ|”ønÞ4\áJ¥¾àÀG¼C/Ù±xkËÔÞŸçCéñ;ܼaHŠB^fØ”ÑX1;h/Ù±¨ Ì„ëxÓ†a8ïµ]¼$s‘/‡>Á„vÓ„6¯ëŸµ‹—dêéÏ*½£%ᚎ ¶‹—ìê ƒÏ˜Ï?ð_° à{Âíâ%ØÂ;[D“zÑs!4ùÚÅKrÃXõ®`º‹Tùx‡.^’‰SMÝi£Á„â}­ZÞ&Ef’hŒRÎÛþnÞ:Š˜ý§÷®Zœ·”ì;Wíâ%™s§¯‹~5øP»] vñ¨? ãÍC4jpN~î•,öÆB€o|M}Sd4²c¤íâ%'¡Y¹ÍƒrCZÃ\¼ÛoÔ¾Æ>°°v“#¶zl Òï XùÑÈÑcoÞàØfõîY:¨Ó[·ØFrrhqà&„æÊ¾ÕÓðXTöRGåñÕüŽí/Ò§ó7îz"Ë1oé/×aÖÝ_Ìõh0Ú¥ýâ%;E^jÂ?@^VÔ©ýâ%;šO]Ý¿C7òçìâ%¥R@ý™Ô|$)ý=¾xIa‹>ëÒ9:5`›÷¼ýâ%PίBù…8ú(ñ¹7o\YÝ `x³S‡kÄçÞ¼Õ ±³©séyÞ"ÇŠûÅKöP¡ÿ«^:•ûNÕñ¾ž§ÇVnòÉðµÇçÞ¼5܃)¥"5AFù<×è/¡¼‹êƒã?WHœ“/ٱ軧ôd»µƒ®e÷Ý~ñ’Â;eÁ°Èþhö‹— ¯Ë‘$bbû@Þkë/Ù±$â¡üÜÝ­ô‹—€Ù ¢­h?6ÊÞ-÷Üݱ7oØÝ9žÑÇŽÉÑCx+õ‹—ìÛ±q’¹¨ØÇ»ùçÞ¼uBWM÷»+þ„œfüfËbÑ–a¤jœ[ìÅKµ`”ß—m×êñü^¼dÇÂ!4_Æßa0嚨ýâ%ûqþVé2-¾4ãs‹ÅâÜ vJ‘fÈ>¿è/Áç 1S[tq¸±7o`G¢ç>+{îúFýâ%Lº H-·(üäýP¿x bá¨{µ”bwችy"Ý:™£c´ƒ\øsvñ’28ßôÝuüfX¼ÆlÑ—”Á‚°J >ÀÌþ@°¿íâ%A®±lqµÒ…þý7»xIhKö3¬z6\ßø|¿»_¼¤€D¬gü[®…ÐjïÍòÑú¤~·3SŽ·9G¶7ËIKSõ®ñ¬R"öæ d#´`ÂGDf ?é÷ÛÅKv,æYEöêû ñ«ë/Ù±O?é!÷)BŠ8/^R&9œ±#Fyq¬ „·G¿xI™™»¥â%™!¬…žÁŸ‹—Ø/¿|®×Ü-þû^¼¤€aŠM$é[Öá]Åývñ’˽[Á ö¡VŽšëâ%•ìɤçÍlSòwþâ%ûÁ‚ ûØœÕ ¾û:?¸}ï–·AîíúïƒV`.®[×»åm×Ô‡ š~_Êñ}-o,±>ÙÃ.™Ø`èñ÷‹—àØ€ÆhŽØaú˜Ç³~ñ°×¿ºk¦ºL?êÄÞ¼-L“fé¡[wKÏ÷üÅK0Ýä%˜.H…è‰<Ç/)¹çàЃóŸ)Tå»ýâ%(åhž#µ\JàFÜ/^Qkrˆ…3½O—Ç ª_¼C&Xœé·<Óþû^¼dþ¨S§ÌÑÁl"T¿ïôØ$u5TpVï_ÜŸ‡‹—T8ÜùðæbñÞÌŽËõ‹—À •GÔ%sò8 }¹~ñÄâØo°M¬5Gl¾±ƒLÒ𔓴]9~ß‹—ì ‘6•¢}¤R—ˆ­ ¯¸$µ'ˆ¸ÝüPN¬åmNp6jÜ‹þ"©º®e¿x QwpYå>ž¼³bNÖ/^µÌ©žòè¥0s9w.^²O(hL<ûó·/tQ¿xÉî“J‚ûúÕå³n±/Áfø$ª‚!ð‡ˆM‹ùqpdìj T\£¼_¼æíÜí¥!™¸ªk&÷‹—ì–çz-¯œ­mÜÝ/ÁŽp®4Eó%QÚ%jÏ‹—ÔćªÍ¨aö˜„Ü=ÇËòF¾í1|³†F¬åKÌå |üMóµ?ßáæ-“í£Ühoàœ¬ñ·Ý¼ý÷;r\O?Ÿ7.^²cQ”Ná ¦–¨õçµò¸x z hË+w¦“CÔ½×/© } >AÃUARôZc\¼¤fšj+çôhΊF¸xÉŽÅEýhµ“÷zý¾NìÍ[^àáeá쇙²l+þ¶›·Â­à^“îF ý’qñxãÒ ! VQÈßáæ­dzæÙóð/ÿ¶BL÷»wì¸xÉŽÔ=ÈQWîfrÌf\¼dׯãáñ£7¥üTõ^z\¼dW8d¦x E^Ep›ÇÅK*´CÀcJ¢!ˆ5Ÿ•Û/¡ØtF³iGãÙïÍqñ’[Gè”ÿjüm7oõc“­çY#9´{9.^R‰?Ìü)®Ñ¹˜#vX,ù7â“Y‰óbÚà±7o4lžMô˜vSXOáßwY,ô‚toî<ï ÇÅK@_‡†•Ôëy,(¾ïÅK*¿pŸ EÉÚlëìü/ٱجÓïl…ã ÏÛÅKàHáÑ™†žMÓ½¤qñ’‹ëû´®Îë©=G¶¼Áp#wáË5Z¯îóÍ‘-o8SsW>A£7Xœë#[ÞèI¨~ÍßJ¬­œ;3.^k»,^6Åh/viÇÅKPÁ`‡Il8½^>‚ñ·Ý¼õŠ{¾Ë®ç°Šqñ’}&ÌžzÔ\Ø\ÃÞ—kߌ‹—Àÿ¢"òLbဵ×Qãâ%ÎÞ˜ éý±á²jÜo/¡ # vy/*eµå¿x |•9óQ”à»¶÷çáâ%uP`kŒ,X1ÝТ/­ ý:ºì´Ö+ÕwÚÆÅKK³!í/:®ÇïñÅK*Ô¡ ¢u Ë¥ìÚãâ%uÐë{þ[>ú ï[ÆÅK*Ø#˜óNg=Ì[\Wm\¼¤²oÎÊÿe ƒKËß‹—TT¬kÄó@>Ê–à{Ž‹—ÔA`­ÊŒ $rü™l–7zä,Z^ÀbWØ›!Öò†2…]ƒ|%Úöåµçh–7ˆ¢¤)»à}ÿ*ôÉôçáâ%¬ _-ޝÓç*µˆ½y›ïШª;>•%~‡›7È¢ˆïPÏÞâr d\¼,R”µs‰®1”îú;ãâ%:Q˜3tå6¾oñ¹7oØØG!óBè² b‹½y›ä]õz)ØŸÕ÷ÇÅKà ¦‚ÔЯn WÇçÞ¼í'àˆÊi Îi÷}\¼& W„¯ „¾\^k\¼. ¸»Çõ´9Wm\¼dÇbÂÙ—r* ñðS/©G«R9.âPÞc/^R÷‰M%ñ¾­Õ{‘qñ’ºàö/æÝ”ád1ç±7o«AÏ&©NÃ`•»Êãâ%ÔŽ0>XÅÏâs]Ÿqñ`\“$SÁĨ¼Šqñ\Òè/†öÒÔ¡—óìâ%»M_ÌõÐCòwèq¿]¼{üêàAcO©îÌóŠ.Œ Ø.:½½O–>Ã/á¢þ¾®¼bŒÙ»/i°üÅ¡(¿ÃGëèÑÇÅKPõx{D,ÌIq‚qñ’ö .—NÅÌiYöÕøÅbk& R¼°—?³ûŽ‹—`DÞˆúüîr‹—ÀÇ»ëÒ_ôÄ¾Íø¾Ýbùòâ{¶OiÁÅ¿ÃÍÛî} ò¥XñwH鎋—ìXR±¥F¬(æÃ–±7oÀ/ u"}@û8®qÜh\¼ ÎjÙ ‚x1Îßó/Ù½Î>­=Û¤NdŽóáâ%ˆ¦«|‚L.«œ“/Ù±ô,u] ø ÓÆôàü͖傟hX[¹¸ èŸkyãRÚ”ç*Sô?öggYÞ—ð%ǰ‘pèÇÅKöeAO .zDŒßáæ-Ã$uXâÃT¦ÛâsoÞÀ4€6ò•Z®éÏüx ¤o&úîõì[—=öæmá%Håg>OK—²"öæ-C° fUÒ;Q&=øóâ%0…÷ð2¿ý:3coÞ2½$›hS¾ y«þ¹7o(°â…å÷•}7u^¼Ûè³Jhä£N«ß÷æ­pÖÌîc;}5âw¸y«ùW+¸A¥ÜŽˆ½y£ðm¡ €I"ÏñÅKv,žìÒÕëÒú]¼„^õ0骭™Èýòïpñ’‹¹XéÚgqg;;5/^Ò*½^ºzDÔÄÏõów^¼dÇâþ–ê”a $…çù¼x T¸û 5"÷[¾ß×ò6ïˆh°,´ '}fËÛ‚FcIO­Á{³Æw¸yÚL7°¶ý‰>Éc§Ç²±“š‹R2‚ÙÌ‹—À\$éö¿z_M½:/h^¼±Ü=m\®é^’óâ%°©€h ßIHDS7Áú€yñ’ýÃï~hŸ“ÂEIäПÝ΋—4b6#4´+ìØÀ¯îŸŸ“/i8T±/ò‰§à´ëqboÞ ù¬÷¸Œ˜;Å3yñ’‹ƒcˆöBÆp\ù³XÞ°ðŒKNz†•ާÇZÞyÛRÃìrP–2¾ƒå šf9Ës†G‰«J{ñ’]ÇçMàÑ/i#éÕ¼x ü>Ý çޱ䂣öØ›·NV¦þfô+ÃØÉŸõ‹—q„ÿE“64‘7zŽ/^Ò ‰ýÅÁ‰:öß·Y,“¤ú©â,Õ9Þóâ%ˆ¥˜x>’ ˆ{öbƒóâ%;vPVî¬>Ñ¿…vÓ¼xIëÔ¢SÑý“Ó¸:îØ‹—4jc†/8ë_®aMïEf³¼Ax.©Ø¾Æ5·üºx †mÀ2ewg?÷¤myŸ5/^Ò Á†zðÕ«àlÆsqñ’ÕBt˜E¹Í8WÄV‹ÅøëÓ=Ú2 >9/^g‚½I÷°W6ÿî{ó%4I”Vއ¢çøâ% Š(.¢†ùSÎc§ÅR£.‹/ÁÑÊê9~³›·Á§]½2öOn]Ü…/Mf¨WγDÀÏ{ôÙ-o;6Uç ·ß·[Þj%ÝyÅt³*–9»åm‚‹¢ø„Ž‹îVÏny[¤ð''7ê§ÆÜi^¼¤M®"á9¢ãaŸ¿C÷Ø¥¼bhÜ¡0ùš|‡a±s'Á ÷Ý7ŽEìÍìcÀûû?ú€yñÄ‚o$³|°ÙQ6:ßh^¼¤¡ô¥&®`bœ±~Ž?Ì‹—ŠÇá%g 6®D®±7o“^P±7Ó0kFñü’yñ’6¡‹²‚[×þhwŠ[Úÿ¶‹—ìX 'J/RëõêûÓð’Ù¨—)õY#<´z¼o†—L,ÌO¹I0t i"ÄZÞ:µ5¥¿€ÑÑ tÄZÞðœãè–¾ë&n'ˆXËEn›Ì {ê…X¦_ÃKˆáÍ﹇&¡LŸóNÃKhòš³èŽw¼~è‚ çš†—{8T§ÂŒûžþ;^²¾CÝŒt—˜€ý›ót§á% ÏÂÔ^¤A‰Wñix —ghÑÁó†²ð%jOÃKçN]ê³÷/³~=ÛÍÄðq_èîGQ¡Û1 /Á3‚·Kû b ÅOÃKÀsŽÓ;5r}œç8 /_Zü1—®Ù.à4¼<‰w»+Lîž9¿z^‚è_ì^„qF^B@ =«'÷¾¤»x üÍq‘øoFÒs1|^¼±ê×Ì³Óæ3ÖyñÔ¾ø®ôø£cýÞµ-æÅKv]A^EÖ`Ƽ>E/}ñ’þqs&|í‰AóÈð=ªyñ’~0ä,ZH» g=éõÙºxIÿ¨TT¿BÍM7¶¢ÒUÞJÆ£€¼OÍ{´á‡Îqg Ç×ÅK:5_žûx¿#8×KŠï`yÛ)UÝæ8’ªÕë‡õYÞP¥.¸F%ø^>s_Ÿå­c¾9¤ï΀puÇ÷µ¼Á¢4¥!û…ÜÛ•â;XÞHªÉUµÄ±«9µ¼M’´ÇÓS‡Þ1›•,o ïK9b H¦x]Ìßi%ËÛ¢g“ð^÷÷Ï+Öú{ó†6zÍÐi°'vSõ}Þuñ’»¼_Êã?ïÏäºxÉŽ%/Lwû&UˆSüf/Ù±Ôk›Ò·œë1ê‡uñè7€RÿBÚzÅ.ÁºxIO¬§ìöµLÎ^Ôˆëâ%;––`6XS޻τ×ÅK:>ö{!»\¥ÂOe¿{ñ,Rƒ÷*x5ÊÑO½¾×ÅK:ñßgÏ\*<>s_Ùòöi? zæ…ïäÊ–·Æâf‰vͳ/7Ÿ9Ζ·Áá†~ww2Þùlyƒƒ!EBƒÌAoªŽ)¬ly[š|Úò. =›uñ’Î ñ{ξý>õï^/é9á÷mMõ5ÈmoÆuñ’³‹µOn©£¾cËìõÙºxÉ~iÑz÷,ÜІ½Åýª¾³.^ÒÙÐìŽøÙQ ¶Pœ©/éð@1}V·‹ú£cd}ìºxÉŽ…fÑø‡]Šò±ÕbÙ…èDrG^1{ó–kán½ð«}SCÃj]¼¤g æ±kO–]×`üáØö*–7н“êº÷3öyÀ*–7´gûfïâYZޱ–7þ!ý{|¶é?äuꪖ7úY'ñ…¸í³üì«–·‰»0É?·vm—€[µ¼aê†Ë§Ï‚ÁØëª–·EøAù0¸¡6Šï`y£èø|ôwf:ìP½y#áÐî_e÷øºÅÒcGq®LJ¥œ“/¡à!° ÕÞå¥8öº.^Ò ×>éçˇÿ+ñ]¼%?ùë™YÕ{]/Ù×µéÑÛ¦>Lœ“/Ù±<ĥ׃»*½2ü;\¼d7­}tÅ? qüÜ“³.^Ò±L‹äKO† ({ñ¹ÕbÁI)¸¡ T“¬=Ÿky«ÔÊ$4©üj–7ø¿}ê‰^ïá­fyãb²Î[€pêáx¬å ‚j­bi·)}5ËÛïj ÿ »˜“El·¼áfIIµV¿Óë9V¼ºå‚J¯âà%r¿uËN˜áZ¶ÿÒëpŽç\ï–7>di¨&T!§Çgãëâ%œ35ìªÑ%Þ‹‹—àÁæºÏ$h-F½«8'/^. p@Ñ«€ˆó§½Þºx .õ&O:GG*Có{]¼dÇb÷aÉÝ ",&ZüfËbáK;õ˜äN°.^ÒQ– ›Ž¶±ÏßÖÅK€6º†?3@¼Ç‘‹‹—`ô€è\Ú×bj}ÖºxÉ~¢35Qu§˜\á¿ï°¼Áã/Õõô±à`´x&‡å 6@x½ä¾HýJß2,oБ:wêøÍQ#Æofy›tî“÷­AFyƒkL¹³ªÞ+üÊ¿’â7»yk\©²{†’|£8/^Ò[¦G¥pN±—?¿/Ù±¸«èï@ÎI(ˆÍKLWør%‘×V¼7]/é Ã#B8exìhxç±7o­R Hzô]©Ì¤û ëâ%»´¡6¬ðø±Ö)¸ÏB×ÅK:†>¨dϽäã{湸xI§ç9œ5tÿx´°«AìÍ[;‚ïCù´WÇÅŸÉiy[Å)¤'#ILkåeyÃ4h|²Ï©ÂNë>µ¼QV/IÿÖŽ—Nwþâ%½³ÒÖýçâ%rÓuñ’ Í¢¦^êýç³ë†.ÃKÐàª:pLJtù³cx TWuÖž¥ ã;¸Òn,÷:‹è4|³|€+Û<¶*GkA÷vߥÛ»c-oâKÎýó’OûÅßfy¥ß[ñ<@$½ƒÊ±–7x0O=w:¶Þeîq­År¡Q5ÂôÌ?¿‡ Àe±#áw4 .QÛGìÍž ¯UCô³•AìÍÛ¤èE‘=áÒi_ä¸2.‹å¢Ž`LûÌäÎ`¼›†—·ýÍ¢~´\Ÿ?†—ÌŒ¡Â”]û²‹ZPV ãǘÇb1ßÎro.R->“„@ìÍlñ±¹†Áu“øÓbË5™ÔFg‰¼^mù0J9:†¤Ž¹gÈn­oÞØ7?žðòÈâ¥õ‹­ô‰Ïê建ÜÐôX̲èkÀ'¦ŠŽÜ7–˰cÄNü1Ϻç_ÃKöi†W0hÒ¨qgùï`xÉœ;û(¤å\Ï8S]34n¥aí¿fp›®_݉µ¼Ya™£C½ˆ' MOì:DhÕO]¼ßìUAì²X_u°C²+ú–ù^²RýÑŠØÕ¡ÅêßÁ𒕨o$ØJ9<]9 /YÊ+K9ÞÄðìÊCìÍ€÷0ö>š:™¾Ã_ÃKÃ"gÍW÷ K K0™Õ*¡šf;öæ ÄUø(Ϧ·ƒ]Å÷KœöS|}5ÝyçðÆ6`ƒáëYè_(ðb-oh†ŸÚ*^xv–çÍð’…©ðã[ÒóñEŒçÁð’u’Å—«BH6¨,ˆµ¼¢àÙû*\kj~^²ÿ½ Ylñ©Èดã-Ê÷Íð’ãÿ¦sÈÒäå}ÀŽ=y# w@Õý¡Ê‡ø¾Ýb¡©þ… Ã9ñÀ óÆašCê‡É#á‘bp~cùÎùè™Ó×>Ç箋jrVýÛÆ™Ïdzsñ’ñq¬˜t³–ì®ïØtc+=Œ‡rÕ¨+Q"Ç/ûÁ@ñô ÜÉt~ÉŽ-‹=צûY踈­7¶/éMAÍÃyŸkyÃvÓPÜ>ëÄ'ão³¼MrU×ÇÞãø\Ëj夞XcmÌPü=ݳBN=8X˵8Ϻå:pEv2fI ÊûÝrñ’%ð µo¡xÞŠ3õâ%;¶`Xí9×)Ÿ{óƲ$%Ùq,ðq É{Ä‹­UuÒ1‡ž°|GlÇV‹%hØjPCkÜX,1ÐqÁÎ÷ÈÇç¿ÙÅKÆñí+Ïžw¶k¿íæí€Z:kî‰Ü¤5×ÅK€8b÷AŸõZΊƒ¿C/1¾¦à0¥4ŽŒªÿmÓò†!ôr·ûY9Î’iyÛ ~õ3£"g/ÎÉiy›ß|¹–bMÂc‚¸‰ÅâÿÑ»bWóx–úÙ7-o\LÖç,ïr”>mþÎOËÛâÞ­¼uиÇäü{óWˆÁ¾C©µÏ¨ˆÛ©ñ¡{‹Ä Kñçáâ%X½ùÑfÁ6û k&Ä.av|8 ƒ{îËß‹— XÅáuîyR£b€Ød± ˜zVãÈÂ’¹ÇÞ¼_Ä&šÉet”gòâ%ãx6C&î—õøÍ.^2@qĬ­8VŒEÆÎ P» /^²O^ü𳩗ù/âZ–7<~ßm–AzU®þ¹–7l g­i!Ã…©QôYËòÖ¸€)šf)ƒRD ‹µ¼q"ÛVì·ìšr ËvtèY,–¼>¹7 eµ¾áçoú,oGopê̇ײù&x {f¤‚áUj/¿Ógy#SXß¡¶5f(Ãc-oó×ç5ÃMïEöXËÈf¹”*~Øyìç¬ÎŒµ¼QW¸‰îmÝÿÚ„Þg¥Ïò¶0sŒôß©I9çø¾7o…ìó&Þ pâ·É˿òX l´à&e®¡ìL{Þ.^‚[ð 2ê¹7iq‡çââ%ºy¼f¹{F*w‰Ø›·ýë6Ì bŽžh°Á¾ïÅKÆáÔ,Ñ7‚t4x †+ïØ›7èÞ¢žÊqa]â8WºxÉŽ¥&ÉÔ»ªVû}KÛ=»¡5pOtCÜY™þ}‡ÅÒ«Æ]† ÙßÁòVRxLX†õàóϵ¼UÐQUÀ Zq¿/Rþ<z ²GÕ@'o„ky«½™Á£÷xΆcm)[Þ¨Ù=„ã‚ ‘òÌžãlyÔñ–Ù…pe7¤7‹-Š)?Š­î5°c-o°ž™Êm.v__ñ¹–7öÝEµCJ«O ž²åm|ZQ@÷ò0~FeËÛ¢^…`b@”³x§ìXËîc_À¼<ètþ}‹å ›79?ü>‘.^óóa,æ£ÀÝê!±7oþÂ¥£{juó½–K/16æCrVc>ˆÔï·tñ´>]w2ŸU\XÃû¬tñ˜Gç×ÿ¢æ-Ž{ó1¤;;œÊ8ï ¤7‹¥FѽÌ|¼k|ßi±¬{ø€€À7°ž¿ÃÍÛ!žäØö:z¯eú÷½x Ìwé ýf?Þï~ǦjyC%´ëuáÐïÇwF)ˆXËIVM|ûNµ×KÕòFq•¥w,<¹Q*ûßV-oèß²kÀÿ ?bÐeùyV-oÂáê ƒÑôݱ–7âE4Tö“ŽLs§ZÞpî'©*Ïuµ{²ìXË€pH-JýÐX§Æ³S-o̶®Øêܱþ;4˰ÐFïï0Aá8ZŠþn6ËÛs¥´8¸¸¸âÏÙÅK`îÖ~pĆÇ#x¯;¶xì£ËÓó¦E­a.^“0¼C²›Z)MZâ;¶Y,Þuæ3ia—Jü7oTÈÍ­À[iî2¹³çÁð’V¸6.tÅ+\Ö{óvL]“ÌXKîÜN»,ë´á½¶ÏÔÉÚ3ÿÛ /iäD~KgTÄÁ]Cí‘ÅB3#ÉY]௲ ˆµ¼qgJ½ê¬ñBæ±ÅcW§~k®Ï{½dx gÍ8h‡äªeÎ /iƒºÀ®ÙÙÿp½Vçƒá%x3MœØëÔc~ß×ò63ŵ÷$jF}fxI[Ôq‘½¤]ÏÒ|ß›·ÓÍ|rc·“¶iþ;^Òé9V¿Ð7‚ WEýÜ1¼dgô iº ´Ô0†—\—ÔGáü¼èP=öæí@OzFUTU²÷‹Í|Îdf9¸ãØ"†—`*–Ò¸§Ö1ûšÝgÉð’^°zk¦ÏÔô…X! Eß /éËö)4tObqg0~ß›7jçÎþèæZ íÇkykèSžZŽП­ÝüÆ¡Åb&¦¾}y6¤rF?dxÉŽEñØ_Œ‰{Tþ¾^ÒûY–Wÿ‹VRŒ÷kyÃÁ±/¿ÐÑšõ¬–Ønõ޵¼AÛb(Ïq/¸²jÔà†—`@„ÆYæoô`Ngfy>×òFF=ÒðÊ«ç¼¡Kõ -™t>Õ{ÃK †p$vÄ2Û‚aW?boÞ°0ŸÑ·/¤†mëP[è/˜Ô{pNú3ixɸv"vÓGNƒÿm†—ÀRN}‚àuøMZˆÆw( ÷‰ÿ·bVÇYÒðß×ð’ÓìÕGgd´£»ïŸÛ,¶Pñ{zéOtgvìÍÛ@ŸPU÷)—•ü=6¼d@ÁoÆ)’-[Ü›†—ÐpãëŠ]e®Ç´8S /Ë(~³¡¾%ç…µß,^×CÌU;Ï|{<ÖòÖ°›U;/ïr >ö^dÃKàüä—‹ƒÓ,Á±¶lx ²†Ý3ÙÃÎ,1³cÙð¨^c\(¼ŠR?õwÚ±–·‘ª‰2Ø^Ò8?ñ¹–·Åy÷ƒÓZ)fÂÙð’IAÆ”C÷Z¶nëu~‡i±8êšxp´\:ý¦î²Xà{O³qPCü숗 Zö£{–´‰·6 ±7oê û—žlñs[ñ¼^2)r›Åˬ@MüvlñX<¿ªk9é-úEŽ /™™zžê?”h]ÑC” /iùþÛdv°#S–=*xZ,zSå@xuŽï`yƒ£Dêª È‘Ñê)~_Ë[Á;;LÐBÂîð7}~‘ /™TÊErq|åÖð~>^²ëL` Ï,”œ‘æs†lxÉn+QWËì 6 EçÝÙð¼\û;ÌøÍPŸÃæÂg>Ùð@Ø ½Aì õ&^² ãôúÏsŒ–,þ¶æ±4&’J‡ÂÕçz ;öæmA£lâ‚ÃPñ04ˆwì°ØLÃùG#wÒ÷7¾ï´X¼oSzôQ@A}ä±Ëbé-*µg£=ßr~ß̆—`؆s]¹ã؃è Ç&‹\œíáŸÕvþš¸c³coÞv?C%Œ8öI1Pó&^B^² _2•3½¿/w£¦¿Ç†—ìÿÔ©òôoY}H!Æí±¨e?«pĵz܆—¬z·ÛÎÇÛófxÉjÜ%{žÖ—˜Ýúw0¼d5ê&e­Éüâ½0¼Þ™ÉŠüJôúnkyÜøâÝì4Xû‚Ó /Áom7éc¡!ìÕsax ë¢1Kx‚QL:ϱá%‹äÎ)*‹×'î‹‹—`F¶8n–»›³ŽÏúÅKÐH¤#™Ú±ëÆB¯ÈšƒáQJTîù‹—€lŒ®üõ¼¯ÇÝrñà˜ðyÍÂ' ·dUŸÏç‹—LŠå!£­fÐSªãˆùâ%€›Q?èÜ” ÐýöØj±àà ñ*ÂìC˜åwìÅK@”ùS÷Æ!͸ڳ‹—€Ð¾\‹Z£‚4²?ïcs³¼5|òT~Ô$¦P[|_Ë|2s~ôÄR­±€XËw=ÃoqA Çw±sˆKßXl­¤UB'½aÅ¢î±ÉcѤÑe­ðÆ5G¬åm´Ë §~Àâû®wüê–7d.סzŽä ú.  Fê9¾x NÑ:Çi‹~_ÄÞ¼%¾0SkeˆŒØ ðÄf‹E§¯³ÐU ñê¨.^‚XÔÂÚ×`éî}V¾x † K퉈Zíþ;\¼ƒªÞ`‡oÞ?ÎêÑ=GQü·jÄ÷µ¼‹2«j’äÅçø\Ë[Åâ@×>‹Ðø—ãž–7¼Ç£ ‚œ{>;?­XÈÂ{Ô[‰þm&/ßsp]uå8¦å ‹újÐ|:.ñ,oÄa²<“» Hìâ;XÞ:DEZžãçïñl;‚È|îùÞJÌÆó´¼uÐuÔ?«`í‰çbZÞ:çzÏ~Žï/}kyÃäièžÚî*}¹â;XÞ(<—Õ¾²$>ÊËò«VÑç¢<µ-†ßËò‚i*ú·AGÏ™ßYËò"è|| ÷!Y]œ/AN¿PÝçmœa;&–/^‚3‰G;äø G..^2Ác~<›ÚÑyòß÷â%hÎÀ_êã„Ì,óÅK‹ÚHûã}šq&±7o~ sŒòhìS›ÛŸß‹— XLÊà}¼–ìàaHm± ¶=×á­¤\ªrñЗ³êœÄçf‹Å>º¾›upþö9n_>Ë ç¦ð ´ÄtÇZÞ:ÅJ„›ßó7ÖøÍc¹ï»öp•!ËjòYÞ`Ÿ7Ý+Ú ½‚ÿ0üs-o­&}À¾”æÒ³º|–7\8©ËîNM™Z9þ6Ëwt³¾Ç´Ö ]lkNla ž¥ÜÛ#Y?=6Ylá´£h¿ >®{xaMÉb jÏÀÜ¥1{ó¶ÿeƆ~Çî&Å÷½y+hhò³š¿Ógùïpñ’IO¡õì}ûÕ9d¹x d D‡ä™L”¤\ò· ‹…Vû1±WïçËÅKàʈþx*æ XÌôØå±ØËPôÚÖwVÉ–7øí¤JMÐáñÇÏJN‹¯‰¿4Ë”qäüùüfË}=»p%F!‡(f¬%[ÞÚÁVmÍ„Â5ëw¬å»ž]våv¹Ã½™ß×òÖ¡ŽÜšÞoäA—¿ƒåíÅeϽAÖ-V ;<>byO,£¤pÛky£aâÍúR`V¥µ¼±Õ½¤ i{ðtí*ÅòF¢øÐ¦³+»}¥XÞ°Ü?t·º`R¼`stc Mt¿0>ÜWˆó¶K±¼­"Ëy×3ñùý<¶z,8O]pÏÙj8 ’;±'!žçؼ€ÍEOö›]¼°0=Vè4`­0z|îÍ[…$czÞÍ1!&~³›· <êÓç’Ëèãü½xÉŽ ¤»žûì®9Öïÿàã¥D~×]e*|Íñrñ’‹Ý¨$3K¨±JÏäÅKv•\(Ì#­ÇÖô½¤rñ’}«à.3Îj@rÜ÷ç÷â%¸°¥|Eþdôèåâ%;¶áž—> CÞÀtO¬ånYEç8£žu?ç /©TQŒ\¨W\œ3] /©|°—è6ïwººEÊùÛ,oðÁñ¶ 2üÏcFU /¡™¤¤OÏx;öæ­hÉÅ.~¹Ñãû޼шZiÇÏŠá%½L •j˜°;9¢þ5¼o-ú$Ñâäº'Ƕ‹á%nŸÄâÑyæÝÅðŽÌÇOùú)ŽÃK:ÿIÞcXü­X7A¬å­aXÜäs¡±…2×ñ¨bxÉi†Ü'ýÁ®<†—tú…?ýФ†vs¾Q1¼¤ïþ“S½H°ýPœoT /éÜáWÓ+fk´øÛ,oØOs©§Žî¯É÷µ¼a°œ[Þ piØ"z¿ixIG!4BŸàìè~ʇ)†—t\¦£éo–Y¿º^‚eepdwÝ&à(ÿ¾†—pV¼t?v÷Òµ+] /(Œf’Ê€<0v /ÙÎIåeÊhÄ>Y1¼ ZÀ®ªôCgTì-ÃK÷Ô§ÎÆ7ÍØé±)ÄŒNH>—<;†— ,³$¡—*zžUÃK@Œ‡Gp›ÈS¨wl'¾^*žIõ)æœ7ù̧^ƒ1¤ß,¢`&Ü<¶X,—Ä}ÇœÓ*ÞÑŽ>ßÁòÖ©ÉІèº&–s%ªá% S•ó¡-bü¦ƒ f€Ç’Cu4ï’¿çs-oXíÝåÐT]aÎ¼Žª†—À8WWÞ`ÉÊÛ®†—@>[wÏ VÀ Ža5¼pj¤¶ß'N2O·{óF¾¼/<‘·âçY5¼držštWŽ·‚ÛC!¶X,ô®®e¢OE`™Õð Æèßôümš|þ<^‚î óЮÜ:¶×ñœ^‚Ng”ð×;¥{OËQ{ó†'zóáOåJTÃKðë¡ç•g[¸è¥‹Ç.‹¥žB‹]‚ïX?£ªá%ÐÁÀlQ}H;ûXǪá%\LžŠËUp¦”—Y /™SVŽÖø¨™âû^2Ñ‹Ì.3ÖZ0âZ±¿Y /á‚+Ïþ1ýü93¼dú¦øF•#Ç»¼&¨†—LJåéó )gRÒâûZÞwŠå¾ØÅ¡IúsfxÉ‚"yê‚mÃ2’ùê ƒI~cz^_`û¸‹ï/Úm‹ñz½ºî8×ݯcÇÞ¼-0ȾÀa*üÆ1ÞÇVÃKXûЫ”~ˆÚ¥Éû€jxɾûÇ‹{î.­Rø ¾ïÍtìcàÔ™„¹±Íbñ<¨4œ[ÀÛ=»ëϹαJpC«á%ôî™Y½Á:ß¡˜¿UÃKðns1ôÄöï‹ñ’ó®ªá%k`·OñIð®ð Æ9ix fCêwß3JDÿV /¡…½ÜÜ™0g®ùR /Á¦»FÄ58p¦^¼C¾ž™÷y]·nÇV‹ ^½Z%±¤øÍcõ§çåΫ÷±õâ%À4àòè#B cµßaÜØDE3Íà˜¥6²ÇN‹Åó ¾ÊÇ‚ñ nG½xÉ:Cþà‰?ü¯¡£ãŒzñ’…s ¡<ëiOÿÜ‹—`‚óÙ`îä§l {uÄæ[(Ž)ûþõÔ©¡ÝT›å­¦"Íçü¥Y}‰û¢YÞj¦áœÜoôpÜ·‘ÿfÍòó5Ñ™.E©úµYÞ*Ňêé~kj\›å­Ôy)f>Pîà TXË Sü!aJ-Ûø}-oüÉ$þdè/Š%Ì[·¼EÎ?@4œ•ö¹Ýò6aÜeϧâ/ÈóÖ-oè¦êJ@¼=«^Eí–·y–z]*Ìcc׳vËú‹Ü„O€yz´Ç÷½yK0±Ç¯.Ó?+p®zñ’KïŸT†ëìˆK\íÉêïG½~ñ’…"da]Kvl:à±Ëb¹–$x þH¸Å™zñlfÕs$ý”kÎî¼±4×> Tüäû<»wìÅKv,·lT‹£Ófsij~ñPCÑãÌè7÷Ï€zòK^ƒ_¼d%šñ©o_íÄKJÔžÃòÖ°ŒÞªúIÅ8K†åšÉÑ‚…ÐñùnI–7rèUS¢Ï=Ö4kyã9åY‡Eš½¨Ï†åm@þÓ]ûÔh ,vZÞxôuÁðvûC\ÙçYuZÞÏô`LÇ›1ꨋ—àŽÄ¥ýE¢–xð êÅK`‡Í%[™ ç³óÅçV‹¥œô|| zŽ¿íæ-£X€§ôè\k+boÞ°V~ŸœgX–ÄÎk|‡›·Ìù¦b ³ñGß±7o‡”[´G‡Î?.^BkEàr±?„oÔÂÁgçâ%°hÅ`N¾ÃÜYIQŸ]¼d¡n“³ºÃ­\qåº,o†Pœ ð7ÔºzYÞ`³´ëÕÓ-,UâL]–·IÍžô)ÀÚ®ÿËò¶ Þ”çsNbÌ&çï²¼a9ëS®¦¹ôC‰Ïµ¼A@ð‹gl¸~èâ%ël9tå”QZH´zêÅKv,¦jºÓN…@–ÿ`Äa±x‡šô¼+’«{?Ô.^² Þ»/õ‰§'rð ÛÅK0'èx0jÑ•ø7oзßSzÈ}lMÅíÛÅK å¼”ï‰s’üÉ–ã;ܼøI@,ZwåÐ_t/ÚÅKÀf˜!öÀy< qÆç‹-¨Ù˜UU—µ}–7¼^P T~ ~²˜·ÏòÖó§Eç[,|®–,oXØÏ]¸IûfªÔEiky#X1Ý]ÂàœŒÙbK–7ö¼UwH GÊîU„1–Å6jéž%µÇ‚‹Ò.^²ö€ªùÍUš¯É÷m»ßÍÑc_„ /f3Æh/ÁÆ-DȽÇiÔ4ÿåsÈvñàîÔ¼Â{˜“Å÷K¢ŒõzØ©\&;uõù7od/Œï úˆÓëvñ¬VÝ›¡ß-ñÔÏf(íâ%«È—“þÑËÌß‹‹—ìvJͪí¶(qÏúÅK“ѬE÷[X&Ä~wË–·|ç“ØrfØW·ly£ BR=&Pó´þmÙòÆ%™žt_„õphä¶lyãöï3êü’·lyÃvÔî UÓ»3´CZ^KÓråÙ,r}â}+–7Ìæ¿1”¯ÕeÝ}l+Š{6ÃKúâœW~‡ qÈËx. /AgÀY¼×28×2ïn†—pÎõ-Ѭ_–Ž’ ±7o4IÝ'£zœÐf3< šá%ƒC<ÅKö1Žº$4Tšá%ƒ$ŠÜ´F,ŸúÇîØa±‹>Ar–ôš9¦ˆïpóêÎþ¾¢µº‡Æ{3þ¶e±˰3‰7.`Ó{•òy0¼¢q˜·¨ÿõ¹‚ÿÐ /ØOC}ûØØo†—@t —ƒro±.õÉ}lx uv½¡¹ºTô¥‹ó×ð’7õïP~†–9tÕšá%x®C”3”}VtÐ:kk†—@u…èÓÎ1fà0Íð’<êËŠ{¢<Œr±–7¸W¦Ðœå®2j{é7 /9Fvíñq¤­LrNC3¼À?û"yQBÈqfx \(PWË}Ü;ís|n¶XÔQ+é®'÷:BŸ ^‚EKxuÁîY|î²X̾T§¬ÅùŠãÝðl @+žÉ†-Ø; µ¼aî?óP°ãÙäço7¼džÁ£ÓP©ý8#ÖòFcÕ’© 4Iàóky« *ÿau޼ꆗ ïƒÞo™»gŽïtÃKÐÑbOî·· Ù/솗ÌgÑ3ºˆ@…Ýc-oíì–>ÚMõÓ; ^‚ VŽ¢ËJ£ìûèÝðTj(D{·B"zxÝðTôÐY>5;½~膗à„Ç!!ÚyóÐKü|膗L8pNåÀåËÝÉî±–·Nò">x…ZÌí‹ï`yCÕ4”+ \ãÁ‚ºá%“:ôu.Ñœ-¤3FÞ /™ämë\:c±Ç@üf–7<Àc5±²þ ošnxÉD¼s¬=ëêî܃nxÉ\U„O¿I&÷7ݱ7oäJ|ê‡ ‹µ°b³Çrç*=guUL·^‚¡î–÷”&àÆcxT7¼den÷©(Žª!Ø /Aݸfê¡û… }×?ÿÜ›7Ÿ‚ÿž>€òŠþ¬^²{[h³HϼG'b§ÅÂ-|V2zÓwÖÜ /¥ ÅT= <¥p:òß×ðÈe`v+w,öÆUŸ«^î¡îØàΪùáAwÃKÀsØW·úaãeD¯ßÁòÖk§#«Ì©^Ýð’E-üÔUïZW«öø\ËÛàF¤j17ŽŒŠ×ˆÝð’Å!´z²ˆ*—µ^²ˆs}S{ÓLM’/~ËÛ€Ò»¥d|nèôvÃK—¦¾ïå#õwÞð’}˜$Èh©G;w'›ã;ÝðhìÁW@<¼ug‚_Ý /ÁÀ„¡Ðüb"±–·ãS¬{j(ÃÄ}ÇVíñrás;TÞ±.ß×ò¶8Ô™p>š÷Î]솗ìÀ@ª*Fz¬u=ÇÄKæ÷J)3ÏîC|ßi±àDÑͧæ‹Ùð'^ÂØAÁVÅ‚  E[û\â%'6ƒ¿«ÌgÞí5b'^rbk%¾2¨c_rï”N¼±Àì?å.¢å¡ŠÿÄK»ÈãPÝ:ŠŸ¹wâ%ˆÝ³êseرaÔ”G|‡vc¡ê“C/(ÿ%ŸŠGuâ%ŒålNûÂV5×8wšåóù•uŸúžû¸ö\4Ë[Í_Íî ý|ä7[‹qóTž#ýëWîÝòòá¾é•/Ù;ô›+Ix_Ø»åmP°J=è2õí‡ã0½[ÞÈͯÚûwø| ÿ¬wËÛ"g¤†Vl‹rYû°¼ax<ôŒÚÅszïùqó–°èE[¹Ioq¿›·”žåŸAÎF÷û(‹;@Ÿuðëü‡>ªÅöôÎ/Ê"·#öyûhË œ…·ÝŽg“ÿfãæ-‘h ÎÝCR"zDìðX<¿Š‰aªþÔ¿cZ,—a”O»ïTŒàFÄ.‹…EÕÞiRT=ô×ûü, çÃ΋m»ãF}ZÞhÜÚ3û¢srúÌ‹&Ppû A ÔAþMË[¥qÒ9X#ŸìÓòF쵨_$›qvùï0-o•{ÍOÁÉæs‘>»ÇN· g¨˜oÎ8§å ‚4²OVÁ« ?*úÍiyÑkè®gC‘¶•ˆµ¼Q_¶Èn5\jy®îÙ—å˜nèNÈWî"‡¯F_–·Îٸ܅¨ÿF¹,oP“K1.˜¡ð(rþd_–·ïÖ©µÑÑõÎ?ëËò.*^ Ñ+&§7E}¶,oXRµX{ÿ™tØ—åmÒ”X9È‹r 3ÎeyÃaðú£7Ü!.‹XË9.=ª¡ByEÇ®ú²¼-îa«WÖïÂRà0‡O,ˆÑgåØGî蟿ãK ¿/I@1™{Óc³ÅNî± ¦°ÈA^#¾ÃÍ[NÔbVíÇ]…%Ý_µXÚÈÈ}±Ÿ¥2Ô£r|Íb'MÔ•dáä8×ønÞ2DE棩ž[å¹ÛÍé0ûqW}r…c?`|7o¹bVW”¿³x~ßaY,@ä™T'a&öfF²¼U¨&gõ;hœ¿ï G²¼Áh;•³áŠoœ“#YÞÀøÇ[.½H%<Ÿãs-oû…³äñ} Ö”c+#YÞêIõwÂQTku$ËHÄKý¥ëäNfèádyÀHgÕÚžòøÅ{§‘,o«ª·‚gPJLÄZÞ˜ÐO½ö#]Ôûg¤å±ØG×=µFÎtx‹Žly6+ưo…´b-o“X™Õ\ÿ¬o€Â\ZÄZÞú–¡ó¡M?ù<Öò‡üܱ»îÏêÓ6²åmуYgj kk²1òÍ[¡öãRïË]#>³™‘»ÇÂ.Y¸j»PG/Ò$öæ­ øBw±€Þ žX`ƒ#O‹..hç/ –ÏqF^Ëá`hn•Úc¼„;k”›·ÂÅ¢ÇG,aUUæY£$‹íüGUׇ³Žá<ÝQ²ÅbߊŸÄ‡9¼ò¶G¹y+ Ç%åÿ"týxJµØI íSαžˆXË[Á®†zضR(Í¿o±¼ÑÐçÓ9z¥LTñ™Ï(–7îùÁ» knÍ÷,G±¼UàsF?´Ǫ¢oÅòVy—)Ö†â˜3.‹­–7ržšì;µÄú·ÆyV-o µ\’Þô³4ÄÞ¼‘"øø¿åDwçï[- ­`õ/l»VáÜŽQ«ÅfY¸;wVSµÒFmÛÀZQÝÛy¼=\iÔn±ØkÚóÖLÎtßlx,–è¾§hI5͆á%õ˜+Nõ¶ƒ\–[›#vY,ð’çÝ„,1 ‹5¼¤Bz|ŠWïû¬Å?…Øä±óÕmÆJERÝŽaxIámè{ ¶]+kÄZÞ Ä²fÖ<êA^= /©XÀŸsÈzdã½0¼%zÈéç6ý¹Qoû-Ãð@èÕS²ð2†—TH£õ¦Z¿®^#ÃK*Ô?æ>ânÉɵŒ÷Íð’%h—6½³ ºšsg†á%=YV¢ !”Úþ¹†—Tî0UÁ YɽòXË[íç¤ÎM?Îâû^‚é 4_´ç¥ùÜÝ'¦¢3ËaxIˇw¢šõ£¼?†—4$BñLýÆ©=ç™á%Ô7‰"5mæHù‹ï`y+™Ä©¬=–âFœ;†—4‚{i®Q á &–ñ̇á%GŒ6ë}œÁ©@·gŸkxIƒ€ÙÐ3Üü¢³üaxIƒ©Ñ–/¤‹fß›†—4¼´Øž”û­p¿ƒá%TLÎãÑ?£[¾Ûð0@P’ùü>f¹#±–7ì;=ž•û'õ¤á%­Ò}çãCʳ:~Ë8½ãëÁ1Üm 8 3úcÃKŒ9Aµ-üN¾‘¿oÓð°ÃèÝø\H»÷›Óð’Fð‘ÃgBhÜ"{ç§á%ªIŸà¿}qöU皆—42™õìƒq'׫ÇVÅ<àñf\ÀKªÄZÞXÈ?3ìÎ9YhNÃK–zž]pÈ·uÅ£¦á%ûS0ÃÖ¾°ÕyÖc-oxV×=÷ì@4ã¦á% žcƱ‡žÙžixI[äR©¿S©¤Tz; /é0C›Uyƒ@x)Œí±7o;ÐÑêÊémä÷9¯b^ÒyºÂãï”Ásg^Òéç£sôvV@ªóЧá%´Wˆ™ð¿™RÃôõÌW“d^²«(xÿÔg/„ÈØ†—ôB£µ; ¸>ÕMš†—ìS¦ƒ_ý©¶!àxÎ /é4ªÒùæ.ÞÉYõYþ4¼¤cï+µ,~Iûå+œ1ylòX”ëIwh½:ÿÓ𒎱©þN»J -Î1óix 1¯ªöy¥-sòš`^²ce uwøñû¯K¦á%¶w¹©ßL.'6þ6Ë[kaí:™Ü7õ™Ï4¼¤“ì;>õso´Þñ;XÞ0¨u=:pÔñvý¾ixI‡Vû>¬ÕÛ¹SÏÜq®ixIÇjÜh:óÁ7/<6y,þA9Ï>`g0žuÃKz'_YûØÄtÊçZÞF†¦zÞ¬F~ŸÏy§á%àƒcg;8D´|õB†—tb§Ÿî“}tZ–^Ò‰ ÎõÌò1:ë>'›†—t õwé߃«ŸÏ4¼¤ƒ»ŽvZõ@з,Ÿ±NÃKú‚. úFá(á³ãß×ð’}뀜ñÅ;ߎBpz§á%·Ó·d‡©[™Ÿ{ó†ÊdÅ®ç/†Â5ÎjÃKöWdR”“C]í>âs«Å²8W-Ð}Z –Ë{óú¤Ð Z»òí¦WÌûØð蟡ç]ºsÅ·sN§á%þÒsµË„E<†—ìX’óµ‚VÏ ~õ4¼d`ì2?N˜ªƒÇáçƒá%°€Á‚ŠðÚòñ÷™Ï4¼d^ºß½/ÌòhBMÃKhÕ+Á±Š†ÅŸýóº/Á4¼Æàਮe§Þ•÷Óðx¢GW>má eF¬å Vãïì<ÉUóþm^²¯1¨[¨Ö_'ÖÔùÆÇÇ0Ìc-o$è©HË•^/%>·zì'l]õhÅßÖ=Žß†—P¿ìñghåzÄ÷­KáDÝ«K¬såÜ1¼ãà0é;ÜÛ3ljþÍð(oƒ[´Þ ~šèE /™ä ­!½€9™çÂð(ö­«¦CbkŸ»,–ReÊ‹p=Ú¿£Ç^2Y,4åÀÍJ5Q§á% ÞûŸê¹Ëб–·šÊ«I² ò£5¼dòêÖžw_L-éŽî4¼dòPüœgCÙ0/žg†—@‰ÚŸ:³$çIî,ÃK°í¦g¾9OÇc-o4€ý’ú®S+"¯ø¦Ç– …³šk–Ÿ|‡å±lˆ–ÎP°¹Xü½X†—`›¤‚gг$4;—á%Øš ³–{Ãs›ex Øœ_OÏ@—ž¸[–á%“£ ý} <²QÓF¬å<óªœôN:nÜoËðú ¤¤³ŽZÉ1ô9ú2¼“¢} ¨Æf¹øs?µ¼ÁèrfÅâ ¶çi^‚jº<еUîõˆµ¼¡GQ :œÔ)óça^òÀroæ]gG¬å ®w#Wõ&_|罿X†—@€ÖxÎ’¢½Þ2¼°6—-Ÿ]ð¬µý2¼ä,³ŒS¸>Åñ·YÞ§«7yi\¯ûb^‚D€Œ÷xÓà(êŽm/ÃK(d˜C”6oX *î­´ / ö’¤¶ïôûŠûb^²Œñå‡#[òé»ýû^²°ñ<›úu$ÔÄ2—^†—,Î7‹ø*C‚ «î2¼d ˆÉ®¼Ç‰;õñ¬^² ¶óêL7úg¥Ÿ[=¶½:Ó56žÂ2¼dAÇe*¾Þ p6™/ÃKV¦€o§B©ìþÅï0<³Ðg&Á&=´å—á%‹JåÓÝ(X(íßÁófxÉþ#{4ï§æ¢žcsLa^²8}r<uä±ÉcÇ»ûÐ@EáϤá%ØÔxù;”uQÍ—exÉ*<@å; ðíq xÞ /Y§¡qNY‡5)Ó¿ƒá%«ðÔ9ï6á2¼„$Á©ü(Òšð@ø{lx =æRNú¾/HSßÌòV«Ï^©!å‹Ïµ¼‘¾õìoöL]×êY†—,Î$fÒg½&jsûï`xÉ‚äƒÂC×ò6¨¥øö88üšág¨-–û õÑqYüǺÇZÞ°ÞŸt/´ÕãÉmûoàsz,ïM­'I“4™(ÄZÞ}ðOEÊдø}-o®øêÐ;á2ºb-o€˜×ã¿Yè­äš’èøo,ú¬ž¥û9C¹bõ/ >Å¥¤úžÐª iCÄZÞðsèNPÔüîkyƒáá§ÖAž¹ëJ@ÂÑb¹›ª|ÚÆµ{]kyC—5Цv`¯ ÛžØ#þ¼{Ec’H’õØá±ƒJôR+·ãÁ¿Ù´Xð ?Õ7BqÏþÏc—Ç‚­¦wKÍÄÁ‹?g/¡ù¼zæ‘?‰ÃÄ{ÿ›,ÞÙSg3©<<£wÐðç¬ZÞj§fò÷ìz&’}<ÖòÆÌVõbn´CÄZÞd?zLýC·÷}ò· Åâ¡Ö;ûµ J|îôXjlMÇåHäF ”ìݬ–·†ª«<^$ô1_ÍïØfyã>ÍW•'¢ExÈìXˈÌYyÅ(a¨ëîï[³¼Ð–´Þocˆ^lf,¶²’à‘3qž5Ë73’Ö%Oiž·fy#¯BçÒ•)ÿœ7¸c-oöÃrïs…Ôó¿ƒå î»èV¿EŽ!m´ŽX˸Iµ˜÷ËNï8£šå ¤¥¤Z ­ó—£&èŸÇÂoFædT4‹µhÄZÞNw©ˆm¸ ý;tË‹ÇþðŠÁ^Œý,ˆ¼Xl…^êAw?ÚUÄV#}>ú©Ô—›þ<^r¼xg‰y p|´Sq·^’Ðf?ZÁ»ÒÈ\Ì÷\^—mð@¤ž¿DzTù7vR Nù0£ & /9:º;¹ŸÑÞE3æ@ ­úåwg›„Ç&¥‰ç㉮Z‰wÈð¬ÎP—;¶r'Ãyƒ0G¶X´]4j g¹åPþx–^’0°FÇ©8<;=jDÃK–³jU¶€ŸIO#Öò¶€Å§þèÙðJþ¬^’à%=ºàñ—Ë{Óð’ÄEµ BÓÄÛnÇZÞÈ/YojÇZˆ­Éÿƒ•1‹ÅÝýh[ìÿŽ>±þ·^B#‡ṵ̈(ˆÊŸÃK2 fý”ƒÑp¸c /ɘ¯¤lƒ’~F=GlµXúÄ?ï<094œÛ,–ç²î…Bøƒÿf†—Pÿ!å‡OØÇ6Ï›á%ù!%œ^¶‰íØé±ý¢r¦IíÑ¿^’ÁÉ™ê÷…í.ÔgQ^’a,“‡z¬Ò‚n¹–"&« Îéx´ Q{öÏßMÃK2ÌȆÖë ºñÞôßÌð’Ýî~ÀtU¦¡,ïQ#^H8­bñÜûÒïky—5©7.Ö,é%±–7ê²*Ϧ{T÷!Åóm±+Ø@¼Öê¸/âûZÞ Þ8GR¾\å®rôÒ†—d è|: Í‹;/Æ +ÏbÑ:ÿa»†üìé±–·R¨éûð×Û±–·ržÕÇ×¾sv±–·BœKyŽX(ÃMß×òV°ã˜õìÃf öEšÇZÞ(®g_ã™êšÔ°}óX˜=¼LrP?‡’á%K cäüàà+¬xky£W±ÏÃ3ÿ"vy,5ëUË‹<¼¹0¼ fèqT_™e®käîØä±à|LÕÉé¬F|®å üßgoHèWÄZÞ°#¶TÛm7Rg>T=¶z,¼•ôŒ*pEVæ±Íc+§ì;{·_üm–7–æøBk–(Ûå½îXË=ì‹Îyô`ºá±À‚ä=Ç ½Ëw°¼aΛÕ3<Ý–†ÿ̶X<¯öã:~ÂñL^’é±£ÜÐý€áñœ^’ýP¤~€9w¼‹ÇZÞ ä–”ów¥‘×Éð·³ú8¶FkóþÅ÷µ¼Q4 im„Eæ –"¶{l…Ñ«™1µÖH†—d 8äñði©]ê8A2¼$#¡#pÄö—ù_]* ŸÃKr§ £œëûò@ŸeÖÛÿ` ×c±Ÿ•>-æ"Ëk®dxɾµ‰ÙÈü¢‚ú5ïE’á%†yÈù‹Ö8—ßYÉðØtî³Zfð±%ß·zlC>“bÅœuŒø–7ô Iw˜ ¿‚ÆxLpî°X`Y½iΫësíXËÛè(»´O¬ ¢/L†—ìX,à¬ØQ€ÛR[°Ü,<Æ,ŒÝ .Zâû^’Á\: ­`í‚"àïá%yRU|’\Ñ}ù÷5¼ 8T•3MŸÌÀ“á%_ÿñQÈìM[ŽïkyCß’RR.ù¿®µºc-og‘Z5¿±’©ý|2¼$Ãöp6ÝóáêÄj#þ6ˤ™–ÎX[%¬Å¹nx 4ÁEiê²Ä&±–7,Q硵g_ÜŸ÷:*^’VߣWAN¯ïãìXËH Y=VaCú‰×ÖŽµ¼¡gɪlj‡.º·`êYìþ!Çãá…Eá­ìØê±ô\XŠ­ æŠZ9^’1äZƒ×w÷¸ /ÉtÏÔ¾°5Ú›Ž˜ /Ó0¸¬êa‡êƒïØi±¨'¿Û28»-ñ¹Ëby™ôøo¶ ñíXÃK 5ÊÃÛõ:êI"6yì¢}ø@ãUÆägµá%ðqÄYç$Ö¢‰ùü-^B­ñö…ÇÀ¥GlõX|ˆr;¸æû›;¶Yì⎭hõ$ŽR«c Éð’B€]=CàA(ÄåbiÝWé5õ™á%ôÛøÆÃM"޽H2¼¤ì^½‡3ž_ÔËñ’dxIÁ=’Úƒ‰Ñ~^jÃK ÷0øÊà¤G¬å çÆ˜Ú“UÅž±–7üÓÌZ¯S~uø|3^Rh7ÏîÍ”¸‡ /Ág@ÓLë¨B®°Ïc“á%t%˜Ï^Ò:Mñ^^‚  ]ªW‹º3êIÃK §bº£0*u ÊG¬å Ó” ÊÜ÷Ïqg^R¨5µ‡iþlݱ–·Êå~ÙoÙ ¾}Š;Àðz¤æ¡Ÿ[û¡8' /)òÕÛW ¢¨S³á%¥q;U÷¨ÊÑvóÚ(^R Ú‚Á¹Ü-°Ž]£kyƒX5Œ›äY§ BvŒ?^^¡OÝQHôEìky£=úSƒÉN×<ܱ–7š¨¾çþ‰õ[÷X<,¯W25}÷̆—.åUìoÛE‹–ä7:§»×ú·"U§lÌŒµ¼q1#.kÓݳ• /¡ˆ{Ϊ²Ÿâþ /ÙG_{ý*J3Œk¦Çf¥–Ü…¸jbE±–· 4­•)O€s2¾oõX<;ëÑãGà>ñû?ZÞ&Aå4ìâ¾ÕžcÃK kùòwúÁ¥›|®åm¢ßÔY~/â÷w3^RfÂнç }Hão³¼¡IYö°±#Æ ÃsaxIÁ:ÿ(êK0èw#†—”IßIåŽï6+¦› /Á倄*® ºÑª5b=oÀ®Šj,ÑhúSkycb5žuÃK*yÛ³*¾˜lE] /©¸H¦(æH>Œ|‡f±W/jB–«GÞ /©ýB•3Ý;Ÿõ±ÃbÁO-™îK+;õþì^R¿AŸ }ß0ÒX£Åßvó†éÅÏNüîeEý4æ í1Ý5‚O'0ÿ†—T’©T t÷Q(Läü5¼’f8?å+÷*zæ;Öò–ÀõéZÿfò®bN– /Û1>Cïn®åõ8Ï /¡7ùuuÁÎ+š=çcyËc±Ð-šf \¯bD¬å^/í¹[ÎtŠXË[>âVzgö…ò,o §‡_ é<Òþ;^R gó£ÝOý’¨ /AoICÅ@h¿å3ìlxI=‚vÊ?ƒ ò³á%µ€C¤œi8ñ©æ÷޵¼q¹© ®ŒBŠGá,¶—h†Ï™š°Oæº>p=ôX¤³Öà¬åz<“†— TFŸ¯¾\Üi›QG^²?…æiêßBS¯ñ›YÞ k¼®~‹ýµÏ²á%µBÞXyW}fê{z™ /©à~­$¾¿iZˆ—ÔÚ9PUÜ>Ñ«ÈôSab챸ßä‚ñKÕ^$^R¡ð=»úã@‚â©w /©ð?Þ¥²òâéaà{IØÚôXz¡*>I?ÀàOfÃK*8Zy<=ÙÂßi6¼¤‚Ê‘ªj!íï Ðb-o MÊÔ½ƒÓ"Z'û氼ѫ¨)g¯î‹”ˆµ¼a¼=ú×ý(ìÆsfxÉ~·ºúTPm°÷oÙðŠB¦ØK»‰ÁÈ~õfµ²á%(bú¤w x™3¾ƒå  Vz¸Í•X›û‚ƒqã±X„Ð= ¸žR‹ßÁòF¦¬»ÐtÀ]èÏ™á%ÞvûœT“Lœ Î_ÃK*vû†z.d¸"))^Å Ìu—ö{9V‘ /löt”;Îò¹G=ixI€½Ÿü£¿^Ìf²á%;BšrCýWÓŒXËt…}ÏÝ€rÄZÞø¿ªÛ)$ÜqÇ^‚ñ1ö¹t·o+ö=Öò6ˆƒk] XO<"°eí±àá©–8þRà}þ<^R'¨ñªÛ\×ñܺÄð’ ˆfK?:%yŠ?¿†—Ô™I¦n.+tgâ2¼V¯Ÿeûγï¦á%7iÉÝ ëá$»F;Öò›„ùiM0êÔàÞfÃK*ú–QÄ;p¿%eênI6¼LæW;¤ÉD÷/ÖcOªÖj.Gw<¾ƒåmÒÌéám_q_,϶ zЃ¹ùžDùOâ…ŠI²ÅÒû]ýk«UûùbxIKgH¥s†LÿBÇ=‹á%ÐËÆž®z(Nî¦|‘ ËgÐIkÄLY‰ä³æbxI·.+—jÂûR{Èbx (.˜o>÷ñ8Z­kyK¨ûÊÓ_¼;ñ`Z[,v¿Ç÷ál ûù[ /ièõf“s½õcO’Û<–ÆQº ^Ûmy¸µ[,°à_•ü’±–·  õµß} 99Þ3ÃK< ÇL·cmG/†—4ˆÁŒ¦:#åX G­axIÃHuW`óá­P¿Ä¿ƒá%ÞŒºg ϼªu_1¼¤¡xL:÷ß·EϽix ˜âu¨>× ìR*À‰§æŽµ¼‘âšôsgã«y3¼dŸøí‡³·Èƒ®ò›MÅù s½ÜªH{#ÖòÁ¬G özàb9^] /iþüÑØçL¸FŸexÉîp!çúÕh¹¢›=v†¹×©¸Ó–£¶7¼¤k¾>»;ýèÂ{¬å&´Ï¾4(8ââokKläáª}D¿¦ç¢87u¿¾ß×òJ¿›ÿ]M’C!Šï;=–¶ëI¼ŠÆ7CÚ±–7ŠÆeåL×A¯¢8Ï /idߤÇœg_pŠá%`¨`^±×B½ßw*†—ìÛwÆzg3x­ä.4¼¤“ië3w"¿Ú±âbxIǬn(7i×ëué>d1¼N`_RMêv¼¨]?jÇv‹íœ~)¦›i{-¿Ã°Xxž¿;AXn~1¼¤'jë.øGýßVâ;,‹Å¥"þ`ÏN5¼¤'úuÎ5½×bžU /é` dÝ¥­°™ÅsV<Öò–Z}9{ ZŒäØz¬å :OCgPþo¢E‡a¢ÅbÐ¥ÞUáT¿ÐÛ<¶€_ÿ÷,©^²$W3zÍïãjx Xæ1´9=ï n‡üfÓc¡«ÏäÇ]‚žã;XÞ8PMZG^1“¨†—tN91–žº“Y /a…•UÇ¥C‘ÚMñ¹–·LF¢ö8<¾,ßÁòF¯·ÜŸ]£zˆb[=–ý…î s‰É}Šw¬å̈¢|®I¼úsŒ©&ÏD,U:^.Õ!-«¶1Vï-;ºC<£>‹ó×ðÜP±@q~ê3»vT <G³Ö“å/ºNNíž7È×Tá§¢mÁ{ÏN÷¼QüC}HÛ¡‘xM[»ç 3ªùÌM;åÞ¼G¯†—ì.@Ñ£ŸÊ=–5á%ûzÊ#­“=d¯ñ¹–7’•S6 þŒˆíÛ0U-ÿ{¯¹^²}¬~ ¶ ªñàÃc-o4‘ûM‡É~5ÞcÃKú¤/—j‰CV”4ÿÛ /¡vØ>ªîÚ£Ìm>£ª†—tX„Ïo…Ç^(ð®âì3¼¤Ãr<:È;Éœ5Çwð¼Mì¦6½³úªŠOVÃKPœë]^&æqÇ^Ò!‹”ÓÓë%žÎS¨†—tôÒ3+> ?wÔg~î^Ò¹„¤»g;‡ÔiˆÚÞð’*å“kyË8T?u „zzÃKú‚/ŒžûÂ;gIÄ&íAº»þY‰stÎ /é¾/z®ïSz¨[5¼¤“JWtÎûÕSFy.¦çm°(U®Ï‡ÏqÏOÏöêÔ‡ '2ú‘Ÿ{ó6¸ PejÎÒ^Äðð p€ªs^%¤h;=–¦ÖÏœŒeœ%†—ŒÃëÑ>€’ÖŸûoâ_°ØÆçÙå¢'Kœ†—Œ£+óãÓ¼¸n›=õÙ£ÃY©#g‰á%ƒË!Cj ¸ÝQ?Â_ÃKÆi<’zæ‘ß'ï¦á%Οö¼º:£ªËóF’•Ö©ëÀ5~_ÃK$›jeöè9ÞcÃK÷!§r…Ç6;ϼ^²cû«] Þ¬ød3¼ä$_5ëÿƒ¯7ÃK Ê»ß ™ :Yî‡^¡Åb'¨km߉m·ßÁò†ä¾t&¦@¬åF)i>šß©>>WØoéñ›-¥qzvßjhìóŠõÏ5¼dÀü/-å¸4zÊFÚ /4¯\Š1•D­©x/ /¡·è£9›@‰§1̉,ýÎ! 8DxÎ"¶z,ç-:£bƒ¸}3¼d<ä­ó¬sG·GŽ‹ç œéª{>Ôüø\wl8‹…šó¾2Öêªršá%dFä¤þól{V•ïky#ÜÿMœQ…Ö_3¼d4p¦»ÖÊðb'Ìc-oøå¢Xq¦th¨4ÃKýêBë$ÿ•Y1ñ¾^28l{ôÁˆûz]ðX4éñˆ` ãx_3¼d¿ð ÒZ9Ó¬µøÝcÙ›>wô4.ky£ÞPºp¬ìa·êy᣼âž(ûÕâ~«ž7ìëVçAwhÉìúœ\µÖê_ÃK&÷ÆÕ¯×É_þ¬^rP¸n35Íây0¼d~ýæ£W’-x™Íðˆß½úàãø>4?Ϻá%NÛ9éù°ŸFjE$M‹U¾$}@ïLBO·^2Ù|Oß²+><"¾ëÙ /™Ø³ÏáUTÿJÂÆ–’=ÖòÆC|‰!\†0Ÿ÷Z¹^2MÕõé…¾ž±çÓ /™Pzò…ý;“øªútÃK&x6_Q¾òà°®×ø}-o‰žcf\§?ƒüËc÷ó[þ$µ ãꆗÀ P¦Îç;mÛ½î놗Ll]A`E| &õxý¾èÉó†þç{¼P uèãyHž7 >y!Åѵ—îÉóÆ9b´5¹×\ãûZÞ ”»büƒØJhòuÃK ‘"­û ¢²?;¾¯å »ö©(®Ñ _,šfÝð’ ÿ·ü½<~Ìšüf–7Æ£¶WœßÁ?×ðú±ãG~´a—öÝð’ýjC‡HzÞ6XP ky+¨íµ^ßo68Ó±?ß /™ð«[ª]ºïBh ÅýÖ /Á &0¦K…³ÏùëÝð’ aªñ½žšôúŽç×ð’Y&¨ƒún¬U<ÄaOuc©£•¯C¶èµÆçN¥P©bú%Ãï–nx }í!¡ çYf> Ýð’YÉ'ÐÙ8Ì:u¤^‚5£wWc6žÕÑ“uÃK&víç³/=Ƀ^q–^2¡w5çÔ¹y™¡9Ð /™ô°UÍ—ÿÔžÝð’‰Åº¬œé]·σá%X‹Âã zxƒš>£ê†—̆zRw«ÑóNÕ<솗po ™ž¹´X‹!vyì2s¤³#†¹X‡”íˆuÃK&zô”TËôlüû^²c1¬P.6†·â)_úÆr'þåLƒ±á¶2ˆ-KUõÔüv\£^²KZÔë²W—y$Ýû–nxÉìÒ|¸jäbgŸwÃK&JÂôh¾ôÁÇ,Î>ÃK°"ñúKƒŽ¶Ä—vÇZްϰ¢ÇÉpÀ»éõo7¼„Zr£jm4¹ž^|Ýð\’a¸|÷»çTÍŒnxÉd£?‡î´±ä ~I7¼djÔºZ{~ô's-™nx lâP_é¾?¢ð×놗ÌAà=é>ï8; ñ,oà¢ìÏÏ&ÜÊ3¾¼z àÚdÍß×òv4škp¿¸Šöœ;†—ÌAn·ÀN(ZÄ.ņb•°^ÌÔºá%s€Ã©žÜ»%\Èljï¦á%s ¢;æû á»é9îž7ìo6á÷1çoæ[÷¼šuG ‹1ÖF¬å ºjié;?°ªIÇZÞpH%Ý!%GG÷,»á%s‚Ü©û à,YÞ“uÃK&çöc=~™Ì øÛ,osÿŸ:/¤”mÔQ†—LjLÝ5‚>¸‹þ /™TìÔ>kMòøcG·^rÅáüº3¾ƒá%RûdÖXb+áwÐ /™Ô«OM€úî+>醗 bÂk¼žzýè{l³ØD?vÑPÉä~ϱ^‚Î_}èEòÉç@"÷Ûîð©_]âo›[èG­4w¹¤'3¼e=§1CÞ=o¨ûšö±ƒuI»ezÞ`ä0U—ªã… ínxÉ¢#룩3éRã\7¼.Àsdî?xfç¯wÃK½³Ëã ÛÏçÆï»<³ÕkÃfæþkx µË“êZîõì>øï`x Tmáƒ~Ø)grã¬6¼j® õ‡£…³:ê>ÃK æŠ BŸîÊ}ñn^²Î=]½ C7òwÓð’uLŸÃâÓUg¯^²è³=Ts¶`¾jÜ…†—@} û)ñ<œ—J{tÃK $Ÿ õÜ¥g锿ÍòQô©û…•tÑÔ†—@•|{Å 'pÏâs§axÉâ·[Uç…ýŒ¢†ÇfÍÜÐ’ûî.ÂE†—Š‚·ržHyŠßw^²ŽX_z¼³i:Åc›Ç‚z¥º‹cÐGì‹XË„zaˤ|ZŠúg^‚mè}7(_yѸ/v@†á%‹:pª¹¯jž=þ6Ë-CýÀÃãÕäyKž7 ¯ª 5Ç¡:#yÞè%)=ÙèÜýÙøHž7.<ž7E­â5ø0¼„Âáóц…ÏÎM‡á%ؘ€.DS¬˜JÞ~ ÃK00‰ƒãîdR[Óûîax çàXÍÇ·úñ¹–·#Hópè'u“zü¾Óc¯{Óð;`ûCÃð0vÑxèÌ«¢+ü‡á%Ô†ÿ´›ôY^±3 /km¿C:Ç)ô= žã0¼Œ&,àh¿ÉÝß"Ÿkyk‰µ½âQ<%?ï!‡á%àZà*”ÏgÝ:ž_ÃK0ՇƳê­P¢´Ìø\ËeýÓ§\ î †Ç0¼ÓŸý^èL ®òφá%‹K¯ºM,}æ=Öòñ»¤œiø@÷gÝð Q4Ñk€’s_ìT ÃK¨å9u_º·£¹å÷æ0¼UÒ®SuÏg×!Þ0¼U<úÖ£‘ÐbŒ‰Øê±ørº[²o„®sœax Ÿ²©~ A½‡†á%‹Únª“Û¾®|‚ax °>ðÕß=*6éñ·YÞ´*«bA­×Ç›f^¥œ;YµÚGþ} /Á œtí/ ǘ^Ÿ ÃKàŸˆZWî7À À2ý73¼kÐ2zô×±'<±axÉ¢X’¾×yQÿ¡ax 뢡Þ»”G¯=Î0¼dÑSþѪ„¡þ6Ö /¡XÊR,sp¨¹ÂOm^ÂF"}-ö: Œ””“3 / 4¬E»z#,â¿ñ;XÞpÈeÕªÜM8mD#†— iZïy¶-Á7†—Puè®ò€­z ÃKŽkÃjŠ+Óî#9ž:.^Bc/`ñ^1ÞãgÔÅK(è€Ý(9Ïý͆—`H@ÜR¾o&=0æãâ% §ª¿H«ÜýMñ· ‹ÆŸ²êb󙎼qñj§‚'¦»“­ÿüËc±û ÷üèXµ ÃqñjŽ«¾ý‚—$ˆ9›¾ý¸x ˆ‡ÀµßÔHHq>\¼±ãG ¿C"Z0Ñ=oGÚMú!–Ø–ñXÏÛ$þûøˆå¦˜Øè–7L’rVÏ›D-ñ5W·¼Á%-}ç´ÄvtËuÊÒã=1ÍPÄNͯþ.…:5ë#–·Ä/§¸g§RŽûxXÞh–Üä‚ke [Ä&§ó ÒÉ…—9†å-£.QÍïzæÝ5ê’ayËÐÀ,ڿͯŠ5b-oð¬ÕñáJÐûÒs1,o™Ã6åDîÓéѶ£{,k®g_„ðqäbXÞÊG'Gí!) <ä÷µ¼Ñ°KkÏý¦¬øÙ–·B_6='ÓwxWþnN˺÷ùè î;}qwOË„ †ò£öIR[¬õ#ÖòV“,[\Í-ŽUŒiy«ô‡ÔÙ̱q žÂ˜–·J#\ÕÔ!#X4ÕÇ´¼Añò[zž îˆõ±–7êh©Æ(ö$ªêªiy£W½z²4"_-ñ;XÞÈQÍÃñq¦–]—j¬ÏcYïè\;LËyLcYÞx™)×r—ÊÈEðHÇÊ Hév!J{’±–7¥Gë¤ÍãÑß¡z,trž}^âó=j˜ey£ ÁªZ{VÖ¾¯7–å ³¤QÔg;Sïj9ÿa,Ë[çâ‹ê™7ò{ÔöËòF ÝS®L¼ø–7¬~CäPjOêsu¿»çgyc3¬:œ»]®üùŒu~–7H ä%¼íÔ{ϵ¼A_y|ÊçÂêjûæ±ÅcËVûÇö”ïkyô•]Ï^=˜WÄZÞhΡu*zj?~ky8£T“¤b ¸Q|®åmœ½—g_XR_ñ›M†WƒÓâ@~*~Ëvts°âãYêµýL–7ìU§*uT=ØUh„Ídy›"TrV—óH;÷`¦ì±õGS™ø{ãs-o“Æ#Š z.Î5“åmBǰI0癋ø¹3“å Œ¬{Ie§Í~>ÌdyÃ>ñ§ø/ÌFg\ýˆ LL}•Q˜ õXËä\÷5õh¦¡³ƒ™–Ç’Œ*ç:tñnúo–?0+}ìÀl#Zÿ9y,.IÁÄg—vfËu’b ™3ËÀðf¶¼ØÈu,Ù?Æë P×c-oAaB.wÀ¤¾²ë)ÌÜ<íˆîYv¸­ '}fÏÕËuÇÈ1Fñ¹ž7~°ržvÁC.«?g/¡ÃJÑ3?z ÑgÍ‹— výðûz¢Mläíâ%°+jvå†bµjß›Éc“ÅÖïG[¾/8S/^’iÉ’ZÕg‡Z•ÍçÒóâ%ˆ%Iëá@Cp®ˆ­ ˜JhbÉÁg(óâ%°©b‹ûj/P{×sqñ8S–Zó–¹|æ3ªyñ¨¢&øÊ3SŠËÍby;}³¼ HÖ‹XËõ®Â[©üá”ߟ»¼^ŸÕòÆL­i1PYº0kòØñrÕ0ŽíϳS-o¨ÐÒ’Ús­ˆàRÍjyË©ª^<5FYW爵¼ezIê.Áì$<¦Y-oÜÛÒg§åz"qFUË’4³êƒ£ D¯ÛðX`mºkßéß\ÖY§ÇRßû™;ÑfÈëêY-oy‚ ÃÄJøÎfy+ÐqQ}ÎMÙcÍòÆ>ôÕ?š/ñœ5ËÛ1™N:î¬äµò4¼„4Ò¤ÚÑûDå¼%òfx 5»‡êO6ȽÆõˆXËͶºb¤‹¢Ÿ3êÃKv9Ù§ýq|/âs-ozôÌ!ó¤:pÓ𒪩ú0»v?<ÝÈ…å­BeTµ"ö÷ᾜՆ—$šËÌgî4é¹0#ÖòVij¥{_¥-Q& /¥΃øÍ>®£á´ñØâ±•–ÍRÿÒh:¯m^Óx ÷¶ •ixIjô||ÎIs_ørMÃK Ö$@¹¬ù,o0öž>Åx]±–7¬&ÃòOgj×Ä3ixÉþ¹ÀÓU]V”Eê…: /­<…G„^$ñû^’ÀJȪ ˆ›»ŒŽØì±0×3“ ß¢÷Óðˆçaæ¨ïfâïçƒá%¹ûÌq>xœ¿†—@ä¸ÞYŸß8£ /9"KÎH&?%4(¦á% Ô“©¼xL5îzxìôXð*¤×¼þø€ÌáyCoªþÇ£v®ÉÇ÷ž7pþ‹ÎÔ¾³Ëç¤á%\‡“§Ô•³ºŸ›=¶Æuqjõijnx \PC«þ$èÎûŒòßÁð´X莪{ íÿ]FËŒµ¼MøT¨îxÇqŠûÍŸÃKhA7T7G’¯ï›á% ýÐÌR#²$×Zñ;LXïVðä93¼$M ¾ ¦P u Cu^’Hþ^Òge˜»èNæ4¼$Aó «?/^©G'b-oDŸŠ~ßžXsùÿ4¼„.tœr–z Å.Á\ž7.4>3áCõ™Ä4¼DÛk/ÌfÆ3ix Èàë¾?÷!sÔà†—`èŽ Aµz¸ÓÖ¿øÛ,o.&­Kö¡õàLÃKIÄKÎPå?õ^†—$‚ž]5}åZ>v–á%ÇûäÕR¬Üýõþx^’Yì~.l{0ÿõØâ±+/Û)^AóElµØLÌ:«®µwZ†—dÛ£ê<–¶i²w° /¨‹½:åmWúV÷øÛ†ÅÂKòчv„î®/ÃK2-Yºòð&½’sŽïpóÆÞ¿òüúØÄ÷5¼$S&=¾;•¯«ß±Ëð’}ÉG”¾0Á<ƒµ ÇZÞh²ž…ÃY&¤AÅ×h^Nø©Z—Ð"¥Ëw°¼‘@¦ûÒÛpè»=o†—dØ™ÍvøëóL^‚…\ ¤¢÷‡lþ£÷º /ɸbó÷_äÂvï–á%™Ú,ª»ØÎѺîËðŠ×dÝ)ÆâpRžî2¼$ENêå;çñ›^’ f͹§¡ì—žã»Ïc³ÇÂíKÎß…©Žâ}Ëð’ý‰Xð×¹é¢Íæ\ñ}«Çb[Ó…‹ìù,ÃK@[Du)w÷8`|NÀwºÏÉ–á%yt Ïé¾nÒ%÷¦á% l¹Õ‹‡zˆ>†—À8<¦©-p}Âïk^’±‡Ç›õdœg†—Àhl Å+{޹X‹IŽbW`>¿ƒá%dÂ1»îè’ƒ±œ¹ /ÉXÀSyñóñ¶[†—d4U¹ioJƒª•W|ËÖÍϺû‹B¹Bß Z†—dÓ£…ô뇲 /ÉÇ»GõS¡+e^B¾f*?œÓRˆ ²ÎPÏRn˜¹üb§ÅBŠe*‡³R§ÔøËb‰ezÞ2Μá'± /)Gô½¨Ä'ƒ½ /)Œ|MùœÏ7ß[†—”DÉÌGûæààÎ Z†—ìØ Ô6<ÏÏ]üÇ –á%%lR-ÐyÞùåÞ2¼¤p‡_5u Ÿu° /aŸŸ›ÔëûØÂ=ú2¼¤p‡îÉñÇG½ÆûfxI![¢æØ•+¤§÷…á% ;@Ÿ¶?¶¬üû^R("¡u߀f½îg-ÃK “ôì8îSˆ; þ /)™äžmz·úßfxI9&%VÄÔÂϵ¼BSwÌaNŽÏögÇð’Rà¾üJEøüb^²ËÜfèwFÕè¿¿ÃðXèÃÈs†½àÒ鈵¼ÑKý©wvïÏ½ÒøÛ–Ç&ÌEtåœÑ^RȆyv^ÏZ^Ž~Èð’¢4I­Œú&©¾Ü2¼¤@;ofùÜú*•ÄZÞÐ0æÕÂ÷\¸£Ç1¼¤ ö|4F$e~^R(|?´^‡íNP"kykåw¥?Þõ(ïùø,o»”ÇôE9mœ¾ø}-o4mŒ]¹ü7'$„öAåσá%…†µEt-¡6DŽâ=£¸õãÁ¯þÐBúLk‚Á–¹N ãªÈ}þª±¸ÙhÁó{mé+@©xíl¹ë¶$ íñ¡ãw²`ü=jŠá»&Kpu½Á”V«îQÑ[ú8gW9hÆ&5ƒ-쟪/1 w¤Œ’Å`K Ô0w{›´X$ÉnÉOgÇwH+ "=ŽTb*÷y0-ÁYJ  ¶ ö©g$o¼*Îûn0Ô6`×ñ,­U¸"Ø29ˆ¡ª§­pè/‚-ƒåeVšÎXÇÖËlÄÂëþÞ:¯/“Ü7 îÜ_aC€NS©¶ .p)«²®¸H#ƒ¡Às 8”5õX(5ùé,ƒhp¦j7äI/¯pGXÑS¬ú.D4}0ß Ò%?.—û¿¢àƒàlÁgÏQ¡Ú“zùJ[ Æ.l~Ž‚‰¹¿I1¸Z0Ä÷Õ×¾‡|r³`JÕ<'(·û¬ødp÷`¡²>6)¢«[”¹¾ÁozüîØY’wÐÀ” Òñ+޶ÎâÔŸny0é¯Êá’ ¦dŸ/^5Zs©ÌT(l“÷ápeg…[©¾­B;õ—ÖO¶ âñ‡gª:ı±IUî,¸ÕwÜ_8ôð—‡Á–Á W°gf ‰ Uñˆ¨²Ë2², ÐȧH UÙ=<6}'Åù‡œH«`¯PÉÒu+ÒÉjœ¢†«Tîy&í9]ýÜ?‘Rý –B.º\H ¥Ê kÈJ=ceÿé:Lx)`Áƒ5Ÿ`Ë`´½ôᯕ%íŒÛʰ• ¨õá÷‘ãÒå5p¥‚Œý«åv J9 ]©\›Ó‘¹þ7i«¹ÏÅß¹{0ä š–\(òˆ¾²ÿTM\.5‚-ƒ4L_Ü•}0ÌÛ#Ø2HgcUØ÷bÂðÀVže«ƒÏ=hbI`Ë`«²P}nØL©…!Á–ÁFw+Í`¡öÜzÃP– †ñ«Põo¤X>Ù2_œÑÕæÕ ~ùdË L¶ÐáKt´ÛZüt´T.ïÕwàœ_‘CZ*ÔÍÒȃ¨——"Ø2Hý”¦ï &×({âš0¬egìƒ1PšQ/[ê¨)ÔâI"Aõ#¾³¡-ÎAùÙâ®è ö÷ŒßÙà–:(>-çßaÅù8 Á–ÁAŸýÌïlœ4_Ñ_£uô°CnXC\*XÁRä¾X½D r©äqöüP´3íåkXÉÖUíQ”9dol²RoÐü¯%IŠep¡>Ñ)Ó¨œ 5ù v©¤ð¾’¸•4-9¾ w©äð.ÁéAõžøˆóÙ€—Š;÷½(&d•=ƒ-ƒl%ê³uWˆŠÊmeÐK£^X“t7؆â“?°Y0ÆÑ?r#fVôìÌë¸êBI"®‡àaÁôOÙ"+™MQ—ÂÕà—ÆÝ•KÂL« ܉à›Á–èeýì·¿ÜcØ‹}Lƒ ]f+Üc/òÔ³{Ÿú:}ÁTqŽEp¶`È‘ ½ýÐ,\,3}ÕôpNB% 0 + 3 BÒ¯l}q ÓÀöœÊF„z ÝEâÈ5$"%Ó9¤XY~áÁ8Ÿ“b5Ó*F¾³e0cÀÙu0M/©5¤2$¦eªl½²Dj[|gƒb×Ïtã;Ô•Þ#)†Å€ióz:òZ³:€$J¤ÇõÛðÓèØ9UÙ³u.ÏF°e°Ð²~êlÒŠYZÃcv‡kÝ_Ü?F~ë dv0 ã 9ú€¶CÁ`Ë`=d“8ëÖ>6÷#xzp}­…GOçŒÖ0™FoË!OÝìT6Èqò'Ãd`ñ üQQˆL‚ï7"Ø2ØÐlæGÙ B’«4 Î<Õþ¶þíÛæ ˜%&³_b¹ª½š÷p£¼L†É4%.†»ãiÒ“a2ûHĔ® 8mìÿ ˜”¬M†Éìâ‹pŽ65´œ¹Ç'[;÷MŇaÿÁnU~éÁõ5«m¸ípQÊw¶ öœÞÉà>ÊV§ø–AÌ÷±¢–wß¡b×¶ Rü¶ê’ùšíƒ-ƒ`ÈÔ;óuLIâ×0L¦ º‹ë¶ñþqÒs>'Ãd(¤º²\»‚D[š£M†É4x9ÍOø|ƒw.¶Ù#Ø2È©þ7tÁ‰ú»µÉ¯1<›ŠoìFŽn`l¤ ¡–—o¬¬z!Ø28)¶¡¼ÂÝaâφa2;x¼'¿¢0¶ NBÊâ‚£‚8f#Ø28'ן“£·3¿3¥9¿a2Þ~Owüñ¢/Qå&Ãdˆûާ¼L2莓a2mQí[1FÎbÒ‚`Ë \g¨rƒ#œ"¿†ep‘¿ðì⤖žº.&§ •HUxF” “¥Œ×ôDjtŽÂ5&Ó±“ ú‘!šOS“ “ÿ<ædZ¸~Ô•·Û0™Nã³.'?¿b¦ƒàbÁTuRWÍ6(d•L2L¦'Z+źU0ŒÁà›Á³rª¼ÿB™ÇUä`4L†Õó~9…àÌ…ô ¤PÛ΃AÕ^º™I‰7¹Ž“a2¦dy9íÿU!!Ïl\¼,¸`GU±¯vè’ò¦&Ó9… Á‘¼ëºNÏ®¿a2ýеÎâIŽŽt&³ƒ;D”Ž\ï'2h˜ t‚8ŒÕY2°à&I1L¦µ(Ùºñî‘ãD2L¦sÛ¥ªÊD¢‹u«ò5,ƒTzÖ# -câ0Ø2ˆÅ’©ž û9¼¾6ùΖAˆ3燂[BŒ™l¬` }ÏuB]W$)†ÉìN˜’ ë)Õ¸ÎI1Lsi¨ˆ%õ '7$Pâd˜Ì®ï  Ë?×’àâÁí=›»`&·,Á–A´mc lXØ©®.¿†a2œ°ù€Ng7ÆgÉ0™Þ(‡±”(ÞHž•ªÀ0™Ž•ðÇ!.•êMl¤åQÓÊ|ùI·a2½Q#%L2DÿŽ«} ±˜µe|g<‰KÒm˜Ì ¸tCä£_Q8É0™Þû‘¦‘“Ÿòîë‹kÂ0(Ø£›P¼XØH9&Óëßgñn6ŠC°ep`š¤æý¸yvù–AàSå¾&¸¼€àâ¶2L¦­YÚwWêQÍÀ ’a2}R™K ª}àÏgÃ0îâ>Êí8-~RP&ÃAü.Ü”~Lš„ ÛÉ0 Xfõ»¡#Ýî%Ãd`^üŠ´cØ¢ÓL†ÉÀEw‚4é¥bh[äÈ5LÅΧª­ô™€ËØ<Ç—r0 W|æŽ`Ë gQ¡^ê€û‚o1Bß©Ào:[Ðò§SGMû¢dûÍŒGÔ0™qv¡4Ý»~l±ýi} ñ™²rÛàS‚“Ó>Rœã–å*÷¾Äçà­Ðº®TÞ›ñˆ&Š5XøÕùèÄÁÉN>õH†ÉìSpâTñ­|ê¦x “ÙÇÀ6ÅSÆg‰QT2Lf íYÙÁ£Äól˜ 6fÙÉ‹6°ËõTlÄ0‹Á*º†ÉŒŠ%@U8#TܼiéÁ˜èº@ÇÙW‚8‘ “œ•õøøáÙª10J†É`õ }§ö°-•ð'f°e씥.…4—\Yº Ãd(Ìû\Ô‰zó.…‹`Ëà®…¾¬œ¿IÚ×îèãA2L††‚s*€Ó¸ðWäø2LfŸÆØ®Òó¹’©¶ä4Lf€êû-¿a;*FBäy6Læxé}Ï‹×Ä·U6LfO,[>ÞõN²a207Ç–”*4:áÆL3&3(’U ÔI˘¸­²a2çÃ_££Ä³ä“`Ëà`‹§cÝ!èúE°ep0êôO (/«~gËà R úÚ€Lªa[Ç ÀœU«¬‘ô;OÎï<¥ÁRóüf°ep Tõ!,~”žÍ†Éìó'cÅX$dh­ýµ$Á–AÛ<×Ä~hQ1~ñl&3øZ$ ™$,ç$&3 `¸”U‡R=?ä¥l˜Ì€šáh ¥'[_Ù0™±N'¬ºÜo\ÑþgÃdhö•Ôè{¡Gð°` Ê…˜©•^ù5¦ûR¹Ì±È9)ò;/ ¦8› ˜4̰F°a2ó[ç@‘`#Á7ƒ3QÝMÐË’­ªKpöàIòŠ®úàø²?ƒÁÅ‚ÿÔC™£Vµ¤Û0ô`H¢Š ‘8±†|fÁ ‘<›Å»+Ñ3Ø2H‹ƒ%­»h‡ƒÁ–ÁL3Ú§$>$„(/³a24zúÔ, £ ±ÇYg˜Ì„ªøRvŒƒ›¨˜î`Ãd&êð••®SÏ9*¯•a2„ï‘—Ž¢=¬å1L†Nß3I/¬{ÊŒ_Ã0:8Íþl)ÑÀÌN ¶ r ?“@ÊG®¯v!Ø2HjÕûÜÝ=ëV9d “™ÇOÅÛ'´øt Ÿ “™T´.Ê…ø51&3빚®›…ö?&w%<ÏäJ½dåfÃd&¹EÞ¸¿¿øÎ†ÉL\š»s‹¯ÑÀB :VX0Ø,j\K&âUn6Lfßê9Ä0®¶+ ¡Íc6Lfbiv>¤ýÂ:À—£lYvê› Ø$ã5LfüŸ®°áÜ€ªCÈ xx0úæGg¦`’n²¾ ¶ RXÅ~ flœpp×M¯}?7š§Æh˜ h–¨ø”H9¡&ßÙ0Lú¡Ô ôöV+˜¨Ù0¤ú ±Š—º.&ƒ@‘–—‰Š,òk&ƒüéãÁ¾>YŸB°epÇ|*Æôp³a2´ožK*sƒ³q“¯q3¸bªŒí„æ,TÒ<-˜ÒöJ1ÏGÝCŽÃdÛ÷‡5TF#Ù8>Ù0™•ØüI?XàªýT†É,òÓRµ6nãHß “Á*Dµ”b4h7þÉ×(œx"éN±É@p±`j`¨î#,+ID‰àêÁÜÄR³/š5ŒO‚›·V w}£ÑYô‹àîÁ¼SâÚ­5Rù,ƒ™ÛÏ@Ú}«ˆZ>Ë`I¼&¤•gáÿ“¯aÄŠáþ1´«¬{â,É2X`» râ»~æk…kIɃWZ/ǵ¬œ¢%YéºñžuÕ°vÁ–Aªö¦7,G$ý“ïl„|ÇRâñ.¶'½*ãM–ÁŠùWŸÏ¼ûèÁõ¶ Ö”^ñÎA–Æ~"ƒÉ2µ\¥áňx] &Ë :UõM)ƒëñC¾³e°ƒH¯ûл¤GŸ"›\%[áš²•ªç3MÐâ*9yðÒõòTåe|[áÇʧ•ù<’ò5,ƒ`#¥Ç'1s§ô“ß9WƳ›»ˆ¯&P8dQ²eÎ:3„na¡K9‚-ƒ“n‰^ÉìO®ÜúÍq˜—ldy¨4“üô²dËàp)0ó:.Á-Ù28=®òŸ+Îa,”bœ”UriÁ ƒg#>¹XaéœÔÀnØh=JÉ ªm{ B@lkòZË ÷••¿±`âdòÂ^L¦°ýYïú.m‰¯+“),ñæã¾¨µ cr1™SÃ¥”žƒ±‹Î3ƒ‡s‰@¹=?ê&žŒê«¤Cv-  L˜Nåb2Æ]_Õ¿Œ}S–‹É@Ç´¾«»¬£ÀŸœ¢“âÀ¥ T:o¿®\L2?˜•ÕòmÉ$×ÄÅdv0÷üeò¸ç³¹O]µ â’_ÏÕ6^•On<èZ¢ù•ªB‘”jLä‰ë8¸í:ñ UË`çD5Ýˤ.¬Œ)K|Ä´Œ'5±Ë×X "I~6ŒYÈô¿4Ë Ö”e##ïš¿Òyû“`Ë ˆ~Iµ‚ Gà¨!"Ø2˜)$ çužâ¤Y)-µôDjt·›Ñâ•fäÐvŠ,*Œ‚¸ˆR³ b{ÖÎî5q´Çå´ VœIC ¡°Âÿ½ÅI³ ‚³=’6™ ì_@¥YÉúIR?gêBº ‚-ƒ•»ÑÚþåYDp· VŠl:Aeýõ„ q>Ò¹&ºe°•ú³°€GRTWl$~ÜgJs£‡~ Ë µŽæ§w7ÔÅV6xé–AÔ’ÈZƒµ«z±ƒ»Á”€+0IéEjÑn”T™a .ž™fé–AŽü‚ÃaÎÛJ>Ù2È ‡ cÁ /'_Ì·óaurÇ,˜ÕeX'›šÇîngøéFò`lÌ=§è«/Ž`Ë T©Ó#['çÆ° .ªj?øq‘`è'[am0Ú3©¡]A—‡Xa&9ã¶jÐà -eϰ â¢ÿÔäaœa¢¬1–aD÷7×xðgJtÊQ0¦C*Z‰mp¶XCeXq»¦þìäiöU.&ƒ'¿€8UDdéN¹˜ ñÐŒI%³oôÒHÊÅd Œ+蔪Ú\,˜˜·`2˜¤ñÇ@ðÍ å_3ÏzŒÑš~çfÁ…¨Ò” oã @Þ”‹ÉÊd~ÄêÀr1™Ì£í‡àÍ•ºxø/&Ɉ™É#ºÏ ‰IJµ‹É xb0õýײ,ƒoÑT+ 8/£ ŠŸnY±ß –‘ôqdËTº,Ë ÖñSs‚J‡¸)J,|Ïÿ,ƒ´€éU1s"Û]™U=˜¬Ÿ©ògK¿,ƒXwº}Vií¬›eY+]Ùôy.g‚-w·a2Ø%+;"™T«Œ¤&s°«O¥%Ûª[gõÞYX×Aýר†ÉdXÎ¥S¼ÃÿøÙ®†ÉäÖËë(‰>•[Ì5‚³£Aha‘»«Š' Ë'[!k³”m8*ý®d]´&¾ûkè¸;3:'- nŒCINþ Μ8Ú Ø2HºÎ—Bò¬ª$Rh :dÕöhƒï2Ø2HPLWãQ‰’ú"ßÙ28°oÕ´êTò\5LT'œÏJ‹úð> ùΆÉPû/©î4–?’øõ"Ø28¿ò#Žt†ÿ£J°e7ìÃÄŒ#æà)6¹ªa2™rxIø¢/ÐPF°e’Ž+«§Ö¤ˆ„0pªa2ûéʰÏÕ*:h“^ “9CÍñ8·§#ÅS"Ø2Y›©ö™{Yb›Ž`Ë 6±ö]uÅ5°=C°a2û9À*ø³»ÄIºÌ€ªa2r†ûµR5®G5†Á–A´ÍòRƒ~:ù7ƒ„Õfºó«oÐ"¸Z0õe¯ ¤£öLĪa2…CÐTnåÙý¯†Ét]# ²]=‘ðŸ«a2%sU—”55ôy6L¦žÍý1…œÇQ~º›ÁRŽ:´.°7:ׯhµ&tH`û?¨Õ0™R°PöÕþ¨dþ}5L†UYR#l¸ÿ¢õ\<ȶütû]Hl¬ÔÎ’ ÐúqáWZ¼j˜Lá EýÑöã6é—I1L†4ÍTõ…m<™!_Ã2ë뤂fûáž?ç³a2‹þû­ŠóÍ•1äkX±T“uøR}VŠ<φÉ@ý +qúv/$¼ÚS “ÙMÖÙ’2ñ:¡aWÃd¸Ÿý@ÿ«†É2žá ¦‹'°&S(ã¡”Œ: @‰«a2ePÎX†ŠÙ‹`Ëà ´”v»£'KY~ Ë . ¯¨—m>2 ’nÃd f-铊Ú<õ‘–ª†ÉR8ÓCwç¦m°º&³ß*_zÃ΂†°Êùl˜L¡¶ú:Ì|tæ£~®†Éæ»—zV{¸ «ñÕ0™B·iUlC‰DvùÎ7ƒ`Ÿaçï{-LqäÆÕf˜L—ZÒʼ~E4ÖÜ-&¼Ÿ ÄóTæS®6ÃdÈkÛgóB§/¶Ý«a2û&já»ng]iN/ ÞíÒ|ôdò:§ñl&S3Ýßµïng©SžgÃd*f¿)ä°êß*é¬öÈ'g Ƭ,H¼™Š’+|3X¡ƒ7”«†iè¿.[Ñ0&çFI‡$o·a2û8M¯ \Ö¡bÔäktÆê¥–ÄXÄT>Ù2¸3ðòrîx@ñˆ&SIìÐÝÒö¯“%¸j˜Ì>ƒ]Ë¥¿ÈŽUÃd*ïÞâ7l¡lÞA9d “©ô¸-zM ¼Rûˆ?Ð0™J48®ãRƒU “©¨F~ÜIªm5L¦Âód¾1aý ´(O7¨†ÉìTNšîé‰!]A«a2;•PPQ>R‡>õªM~:Ë Ò•G Šþ Êü ñ¸&³SÙÐM|J¸À^äÜ0L†ÌïQµá*÷¬ªUÃd*ä7q?i•K®[Lÿ«a2x-pu!Q\L/MÃd*P§Nÿ©`¦-QÃd*·ÝuOû;õáöTÃd¨´‘R{ˆ5`ã×0Læpü”é„MX´âò¦&·ßcC‡)^—_cX0Zé!Äches?E¾Æ´`£Ÿ¶Ò€Ö"?ݲà9âN8•ù¢³±Ô†É4LSUÛÅÌ-Y ¬†É4ÒaŸUˆFóÊ&½a2-Š¥ä¥‚Ñ ÕL#¸X0øHYùHƒ¢‰2Я†Éi™²vš½Tòùãí6L¦‘8Q¼õX´ §=œOx«a2ÌÃ:Ž”j¯ÆªúÓY÷ë‰E½4a`ù ¨&CY›ïQªÁ´Plj©å`Áœ´¨¿pÂz×WbRÓ “ „¶ÄÀûœ>R3L{â`´2§±HŽÛª&Ó¸²­`õ>Ø™¢Dpñ`t–Bâ­G%wùdË wCëc Ö>ˆélävÂ#˜·f¼#‚-ƒ +®y>E 'ÊQó7Ãd>S'5•þb¹J°e'ÿx. x±?óîf˜L#¢P– ¤ÖBž¢&Ó:…/\AeA^›–]ŸC÷Í0™]²BŨêôŸú"LÔ “Ù-TÅ¥©Æ£‰’ΰ7ÃdÚ`ó§{šOºÎß “¡·ûT5¿V;ê ù–AN-²ê?'nëÔpša2»ãÁø)ñ˜ü³hÿ›a2øj m+Æg$^è'[¹¶­¡L±èÚj†É4¤j¨ 0høô ‰‡ß0™†IÍ®•‹Lñ(§%t÷f˜Lø «[iÅÌ×qü†É4.V×Ç ›¬£1åkXOî÷0g×¥Z3Lîì0¿Ðú™g®t@Í0™¾/2ªŒ…›Ïʲ¼V†Éì`úQʉtTDj¸&Ó9ý×#—ö-·§&Óá^™TÈ#€¨!Ò “ézõ÷ÐÑgy6 “é’ñŠ1NŒ¬0HŸÎ0™íüÙtL¹KˆJϾìzt½»1ÄE•+ÁÅ‚)NPuS€‚4¢sÒ “é_üÔN&ˆªbÔ “ÙÇŽe,`Ò€C&ž:Ãd:ÖСÊðþb¹‹Á–AX«¦ÕÄ­§,λ«Ç›a2lÈ“‹HüÛþ@lh4k3LfwT T¡zÄÈc3LfÏX42Ú€è&ša2gÝlUù¢|­ªüΆɘTDbw˜=ç.ŸlÄÚÖPU®]«ã|–©&Ó±4”Õpo§”ÅvŒ°›a2ðúÆÊEÕb;qe%Ãd:LSQØ0a ø5ýΖÁy–QVìþÏ!˜}3L¦ƒ… «áÇS€Ó ¶ ¡5çO‡/tf¡m3L¦Onë<3ÍA«!9¾ “éDÍÜ“!ÁÊ1o†Éôƒ"h7qp²@Y3L,$…¥œ®F)¶›a2c÷*'?…°ß#×0™ñqMSWÇà¸aÉwîŒCC~)C†åÙx6 “¡Kã§’†ß¾Ñ “¼$dÄêìã¬nÊYg˜Ì€‰ÄãM\æøYfi†ÉÀ– ˽z"qv,Óÿf˜ÌØÇ˜¨RÉŒã\+wŠa2;”ŒG„‡L>¥&C %™68É|\-˜îÔj!1¹Æ({mÍ0Œ0]JªeAõ†$›a2ÓÎôØñýS1Òf˜ voÐÔL?EFc”%ç†a2ƒâ1j"¶ÿʵTù-ƒ­{,,`ëåiü†Éì÷‚`†Nx©ï/Z÷Í0™ÁÑê#©Á"×ùL ÎŒÞʯãF_t:òk&3h —ʳ}fµ0Q›a2ƒ þúÔ’ŠS$õ†a2;8³L’ô:s¢1Ø2H°9KËúaˆù:‚-ƒû%Á +ÝD*dîId˜ 뤒v­rÒ “¯¾z¢BõGA0pša2ìi=Ö4´‘-ìf˜ `\,°ëæøÀ'yê “ôõh? Éòæ†ÉàÎ|=IwƒÈ‚*ðf˜Ì U‡ªë„å +_Ã2È™f¬ vJÁËh3LfR02iy9h“$Ê¥Í0™ùAGý´öQp–à"݆Éìf¿¼&›y 1òCðò`v1ïN»€§kvdÐ0™É˜–qå2Ì'7¬a2”²Ù¿ðM›ûL!XÉàìÁíÕq­µƒ9Qä…5Lff.ƒOÝ|) r}Òi&3ÙH ­‘>2Ah†É`V„uÏ%lðÄmyij “™ônø¤ ÚiâN»\ô†Éì`8X«ƒñªGP¾óôàõZ1¢ØÁ³a°esØRJ½‘èqó”n˜Ì¤+ÄX!/Kó¸»a2ØDÂÔC€²^š1Âî†ÉìÇ …òr)i20ê†É ¬ãpU÷a! zæÝ0™ýØÀHL¨¾#þ5ù̓ak¢«Ä…`µlèwÃdöCœ^;MJK‰±T7LæH¹)°0©d“«&3Aת2 Šù —Ý0舨dé‰NUvºa2“£Õï™–íIñZuÃd&äuö¦ËY•Üø,Á–A¬0¦RÓ.uFß “™Ô Ýž‚ƒ• o‘ïlœ Õgw©ƒe!¯U7L†c«¿Å6 ª¦ßÙ2Hk£¬;é³RX_2h˜Ì5 ;ÐáŸR°k=;¿s>ÁÓƒÙÜ>=þ8»a2‹ÊØ*Í:÷¯A>f¤Û0™E’[—#w }M‚“÷×1nc2Qtê†É,êÆ×¤ïàä·ˆ³®&³häý¸ªýxª#¸Z0ö­’pãw…ÎJ’sÃ0™ERyUÝøut‡|r·`²md6ñßÕËn˜ÌÐ2¦ìxþ±H·a2 pÈë}V¨~&´Õn˜Ì¢¯ŽuöÁø½ZÝ0™c+úÉ# ùúñ¶wÃdÅÏÕGlã³Ô£a2Ø3=Xk~(l|ròwÃdöµ]4º4lŠ1G-Ú “YKy ¼v/?Åÿû¾Ü<8PU$°²8‰‚ª&ƒýìJöÈ´3k<<¸½{š+qÝTdN»a2ð@%ÓÒUAþǼ-‚-ƒ»²Æ³ñê^¦Àé†ÉbqQ“;æï3Ín˜ XX W£4,“ã_‹`ËàŒ=D=¯ŽÚÛ"Ø2¸èMïÈve!ωd˜ J–—®Õz4¼Ý0Î#‡šŽÁ0$=ÊKýb2•7M~6æÆùÇbnÕ/&SA‰<«K“j$ÿŸ¯wI¶%×qDû9Šè—Ù6ýI ¨æ?…'@â"ü¤½J«NEð®ðí”Kúž=‚­~ ÐKl%±õ0ˆÆÑuós‡õùaî­‡É „ÁÌ:õÌÕ­GH®‡É tr³]pÑž‰’X˜{ëa2¸úqZ½È´ˆB_“× ’¡ª¢ß9פ’y˜ q¼$•?¶!å´¤ z˜ G¹±)g{¢ý6dߘ‘Á e6•ôH’«4æÖŒ N0¼útªë{Å[32èsíþÈRr4!‹5#ƒíQë(îûgàw­È ¦NÏ=6©/×Ì·È0ËZ‘A#ÛF5$ÁÉ ™UÁŠ ÚªIL KAœýò¥¬È ±2JU6p]ʵ±"ƒt&Tþ3«üÓI_+2èœì.~mp¨b”¶VdÐ)?3?š!œòK%„µ"ƒûʰjßjQ ¾È3Gá ÙVQeî}Ò•^“œ,>t0„‚ï3a–õ0™AÚ<#óºD7‡í©š¸&ƒ!s-…ôøÞf‘_n üùcFïôÓhh=LfŒ`ÁYÊ€øp4yoqr·‚‡É€-Ú1®¡–UrÑ*÷a2s¨_«BKâ/ŒàÁÔÔþ-~ûÉØšñ2xÎGhuV†˜Ž®‡Éœ`𠪫J†-5å=GÏ}·¶®7ÍÕ?t÷å‘AP MuÕÎ;'»K¾ ²p%—®+4 1 Ò—{YýX–—”dpdN¦ ösÜb%ÉòòÈ »'*Aº;òÌ‘At—ªke~v 0ÐdcôÈà5Q.Ä¢ˆ„yæÈà‚çý” ¦d0¬¸$82hdìô; ¼²…½<2ˆùAW“ó_+ âÞ‘AU”'ô6\;2ˆ{ëEÉP,Ðñçõ0™: ÔuTÊ’r-[žùa2£U–áŠ}m:¨ë{~˜Ì @{¤Éu>à«HŸ¯îa2˜³íÿL7œRŠÆyòË/ƒài¢Ù¢“°»:'l~Ý“A¯ ¥š¸ÉÃ¥ÙE&3e!u+øßô³õ0™Ñ.Z_]¹ NbŒö0™[5¹(/×ýçUÚ&çE\XU(R\=fGa[Úô]j>C#2^íGî{— vçä‹•È A£Ì—NÚÒ¤Vt!¬Dè*¹¿hÉíM#2HfµRô*źü‘ANši×-¼åÕEo[F`p¤É>[®•ÈàmÿÝ4ǘÈ=Yt~˜ ެ:Wæ•¥EÌ&s‚AÓû ¢Ñ¹ÔØÃdN0ví9ù#~“ʼn=LÁ /Cú w#¹—ö0™A$þ‹Y`ˆNQb{˜ ”¯é`û)ãYPåíØ&30é”w+W͉uæ{~˜ÌÀ¸Vûøøðú§“n“9ÁØÌ÷G%ƒ¸kÈÛØ ÞWѹ‰iÔRL6‹µÈ GÛu˜¥/ŽV›d°Eo ДúBŠ¥¸ÉX‹ ¢µP§„=}ŒÒ¬õ_0¨2²žþìÊ ±\œ´ÝK<2¨»,sšÖ"ƒ×ÍLXÐ!!^—Ii‘Aލ¶‘Ðý©š°1ά̭E¡'S?’û 3áÖ&`dX[-B#ÞÓ¥›Á‘ÁMiÕÏ98)®›²õÈ O¦öãŽ?@ÕÍ #ë‘AÈjK˄ؽ?ž‰Ö#ƒ•+&w«Fð_¿ B ”Û1Š®ìa2'xޝ<Ì£ñžó²‡É à~ø:UØ“¼/×g^¼àƒ§:Ná×ÙÃd1Ì×e_9öճʵ‡É¼qÖ$Ng](³ö0™qþj)«qI§7e–ñö0™1hƒØLÇI.•Q5{˜ÌÀ¾Ü>ƒ!•ÔDýå—ÁA=Å"E#š§îÏ6"ƒ ÍÄ"Èöœ”}~ãL­z%¥“H/P‘AÐml«öٙLJôhÉ #©FÞsušôZjÉ „|¬Á0MC»ÉÜE“n”ðÚ?ä›-þŸ%·&s*kZxÉÌã,4f•10™Aá}~T ýc¨aÉ@‹BZ$ÿax–ˆ«Ÿké$-0ÈEÀXêÃRÆ&³$ƒÉ „ìø³Z`24íµ©ÎYå¶›<óË ËêýÑ¡šlÈHßÊ“™Ò\Mmã %ÓEÆ×+êü·Å’ŸU`2°ÉVVçu²‡Ê“`1.j‰Â9|A{,0èü£"0 Ý„¶K˜Ìtï:Ôéhñá…æ3&ƒwš2Á`Ÿß"00™I£›ª‘p*·ç(±&3¯‹”ª4_ L|ñ,0™I¶¡ê}ÿ¦¢Ä^Ä“™è÷쟉Þa›à`-YÉL2;t˜ålþå×Y`2GD3!\uç h9GoÉL€U‰Ç½S×XT2,0™IЩ¨¤óõв?&3!rNy ÈÌ—àÈà¦0¾opÈKpYuÉœ`9Ê „!ýG8Γ¡¶·/éð.Ôz˜L”_Ž ¢Œoö9»qŸzFžùepÚ)BB8›0o@ YX`2 Rv¦ïÏãÓÓ´ÀdÝ3\®!Èà77™Àd0ïKõ˜üåUYÇËc&³'ÿF͹”WiyÏɬЙŒî¥Ñ2Vfj,0™ÌCSËK,]Õ,0à#åVpŠRä´ Læü')£7”2ÇI[Y¢É,L3Ÿ[‹b¤ø èdÉ,’ñôZ ÉPÊœäB Læ”e²±]ãlÄÔ%ï928ÕÏú‡,M}ÿüº“YƒÃܵUòdZBp˜Ìšh tu9áű³Ú“Yô0ªC(Í |p°ù282H§¡.z_®Œ}ãžÝÉœo³'Sé¹1^FYîuÉœ9¤,…Œw–ÛX Lf^ª¶HήÃÓJNØÀdN¬”> W,Å5Þ“¹·[…YΑ1üã¸gÉ`z ’yª@h:"ËàÈànœ½üŒ‹RÏ1¯K˜ ?ðbõêqÅ÷Àd ïI´à:ådÞü2h$íý¹¤sr<’&c°$2• ]Óñuw ÌNúgœÓ B1òÀdŒȧ[J"¾V˜Ì Þ_Å6TzÄwåm¼ §éü#®»©>\ä1<‚é4$uÝ9&ŒÂú–Á/ƒPò>>åÜdòm&C0ã£Q 6To¹}y`2vùzO)üg«É/G¹F›éÝV¤úòÀd n…¢Êu.é¸ãÃÄ9ßs`2°L IHo@×vY~92VˆÍ_÷¡¿8èªþ3töÀd öÖMÕHÎ7H»<­<0™“/ºk •æ¥è3GqI¯J.««®É3G72hÂG‚ }K3ÝÉ` þN:?8)Ÿ$Lö ØdzÊ4 ²Á¯Ö}É8FÍ<£ÿžÇAŸ¯.0§m’j:¡ç…{÷”ÇL]b¡»O˜²ŽcL$Tؘ¨pfù¶ŒÉx`2œT۪ĻïT”&%0‡ ˆ©AÌlTÓ¹?{`2Þ)g%õÆn$=y`2ð«i÷` åd380§…D)s7Òür3÷Àdœ…Z‘2ÞÁ˜üÈoz`2>›}mjOI|DdN=0ç½zE៴'Гq˜&TcÄäayæÈ v‡féùɣ͓áôrq×J†%ñc"0¥¢–%7[«r©ñÀdP‰@ÛK›\Nö€|VɸÓ×Cé”"¼‘Ϙ ÅD>ލpyôÏ}Гq`„Åòÿ ÜŽ!¸%Ó¹-èþ»ñÕ£i[‚{ÃD/iQ S(Dl¬öÀdÀuœõÁd “ª;R`2›Óî)|ÑÿÎݤŸeº“Ù…Œ²©à¦ ôŠçÉ {’Þe×÷¯óÀdvÅAíUE~gK«¼çÁ‹•Ú•ævÈV˜Ìæx¤}&ô;0ümÊGºÂDhÛËÑ˜ÌÆÈ‚©ç8ê¼:YÉì±Eœ€d\bPDæ« L˜&ªžùøÈ×{`2<š¢=g¯Û”´“Lj žíø;œÕ6 CAx “&X ƒþûcšG6ÆÀdÐíâËî?kl§ùëþ{`20¡½A·/žk3‰˜ ÍV€#Hs¼áÂ+ýAL·`|Ýâ² Í4Ç[GqìµâÄ" ¾d“ L¯ ¿"§U¡n¦XHx`2hQ“êeðZ¸ýölÂ?J†&CýÇo?ÅåƒLãfp’ëYÔf ¡í†øÃdp¦ãRóº§Ìimò6üƒx'Å6§°ûúØ.ûÃd [2Ø_ý:'&ŸÕÃd¥Š°ç«{˜ÌÇ]¾ 8JÒë;÷ç‡É>ëC5QQ%c!É3G9ª¡¸ì’åz¶È ¯úE‡YHËþlŒ¤?ìRÉ£Slöwƒ[dÖ}E­u}²) “¶î‘A¿ý=Å7¸;Ș¹{d*ÍU9TÝXœ$UÀ=2H® Š™šõ1"ƒÎ®ôüÖuþ}„ñ|Då˜Xr\ýa2BÛŸaCé èa2“¸ˆTæ4A¿œrOy˜Ìù†H×QÄu \ÿu}˜Ì ^UÛ ¦½w%¹§³£ÆàÈ úžŠôý±šB¢Á@\Mˆm¼éÌ#ÔX_0˜ŸÞúÌ(©582èàŽ©úÙ†äZ™îÀdÀ]FNT3 g¡Zß Þ;¨'%cœÏ ó  ¶eðŽ`ÜKë¢ÊÅÝ=A§óoË æ˜¸ÒHNfôÅË÷ü0™u[v:â::G÷|çø0™…v.?Xω•Ïü0™U®á§ºåÎN¯}ŒÁœ¡*Écdù3)—èÃdV!è–¯§„˜.Tò >Lf¡óMNñ;Ʊ)smpfŽ`4ŠS„mÿU¨ñ:282È¡©ãV26¡&¿äenÈBÂ4¯x™Á‡É,öö¡é,7Mçhåcæ;Ñ,Á/ƒ äöó‰pZWÕq¨G0fŠÛ°ŽÔÔ‚¹/¶èÐÔTþsJ§„6ë f)™^”jãŽ(É3Û/éVÎ U6Ñ?Ëà—Á³€«ùéoš#¹üòŽ`”=íëSÃN|Éöa2 â„xh×{÷ý†ó|˜Ì‚žOÃI˜–ÕÃd TÚ”=eŠpÐç{~˜Ì nä^Êcœ³µ+ï šGŒïÙ)CxÕß9ø0™E¿6«²žqiÛ*"%—ÆìQïùÒ® RÖu“¡l<ÀéMôÅIÎÁ‡É@{7Yuç–C;³•é~˜Ì‚>J€Tî=Í]òmLf*õT_ö£7Œ?ð»1ç)«îa2çÎÁ‹ÖÐé³F¿7Ï >L× Ô+IH´*›ÌÃdN0•“TAåœ]+ÿƒg9ÛUnÇF‡ÆÝé~˜Ìœ¥[:²Ý@!ƒ’[þ²ý‚ñY)OæªÆM—Lj â¿iã—A‡cå‘ürdõ³YS…XŽPuÙ¾<2è“LTmS6Ê&ì\ut2$µ2ßô‡-R™{dÝÒ¦cæ 1TÜÉàÈ DجË; N::åBz˜Ìšd³¤ãÛ8J,_ÊÃdÖ¬×~ÛÔzt9$xE06zÿXÝî¥M’ò0™5IP1™·b·_íŸÀ}‰`4_VýH€xÜ¥T{˜Ìš {”¥›y7ö­¤~~˜Ìš´…ÈÁêþGÑèHæ{~˜Ìš¤TTÏÞD¹h|6mѧŒ`Üš 'å*—6)&s‚¡åֵË‘¤;ÿÀÜP[Í)콈M÷‘ïyG7(F:3´ý-!&³à Í›üåÙæU?“g¶† ¢»Ö¢Þ"‹ÿa2'€dÊ43ç©[¤®{˜ ¦/èÚ³´¼Ü*û%¥>Læ‘J½¼–(™”ú0™Ì;èÈ w…ò•Á/ƒ·ü]Ý·A¶‡ýZQ( _0}ñ\Q5óT,µÚ Æmß‹úÔ`J å³gðËà¢ýiù8”UçŽT282è«Å3±ÒV쟰ÙE0„j«UQ™ÛÔømòË/ƒP¹HÚéí“j»+¨“ƒ¦ gAÇZYý‚a‘ù‘<Æ+âªù“YFk°©•ùwØÐ2øeÐ:tÕT›epôl§ºÎù¿ÁNgâˆ+ë߸èù¿—AƒbKS:³t(’Lùå—AÃMÊÔìÛm]C{ ~´E¯Öu œ!ëùa2ËpHÿ Ïg OYžÿ‹ ^âÃP·Ü«±Ùä—#ƒà$›*¥ŸµíãÖÀdÌÑA›gaÐKceR“1š4¹d°üSŠdpûp§6 MÇ‚«ÉЖ°&OU.œ;Ddþ¿ :Ú}î2 a‹ÎYË%xF0$ÆÝä„ÝÔ`ï&àŠà ˜°ë4%Z,ØK2Ø"›A¯‚}­;#æòž_A4D'\6s£ lª œàÁð¤IàÒ%d,x@50ïä Ôyn8Ä¡dñ&¥ô´Éºèå¢òRÞÚj`2N”÷ãù3`Nò=‚A¤WºÊÓ¡}'82x§ñe2ñ\òaÈa²&ƒ8 îé(14Üß$W»Á‘A8ĸêÆCñ(±ÿnÇ50^¤Zm²6ŠõRe!&ã$ZK÷ @äöOï1^7ÆQLÇ7ƪñ’o#0™Îð¿ö™ýÔl}Êî/&³qhž§Tj"¶’ß‘Á-‚±'uW\”ÍDÿbAÿ~ÁBú BYŸx¦;0™ ý 8í —˜`÷ÎKz LV©…¥æçœfzÌà—ÁMK÷Ïü ..P`2>3uk•»†Ì*ñ2H1à6JŽöœçü,óK L·` Qç½{’ý^†ep`2`X¨ž €Ìòí)gw`2¤DŠù1ÃrU?Á7ƒ$ÑÃkUØ, 'aé5_ÝÃdh^‹!‹¢œí^Õòõ\©‰ªrß“»hª­žàù‚®ûCÍgà]¼HðzÁ`õµiÒ|¡VGYSþ@{Ád_¦µÁúk„/í’ÿïâ˜Ì“ŸïQ”9ªŽöÀ—6‚iºä¢;™tK0¿àëí.òçãÁ¬S‘éa2°_§Þ€ØÃ–E7Pô²Éùî•5ÒÃd ÝQDÈÆ¸hLUK~°“(+wLA!ú¾U®‡ÉL HtZìÕÈÎÿ0£BìYMò6:ì™(q}˜ŒÑ«°5¯ü¶JÚ‘¼ `\jLµ ‹h:½àý ¦¬p!ÈÉýÔ“9ÁÊœ\KÏ –+_ÊÃdÎÿJé uB¤žšÜd&c„£jS>˜&ªÒã Ž òî7ºòëÀç€æJG¡¤ ±­œn0³¢Cu‚#ƒ^šz»?4X†H .‚o@™N»°–=ô«.„5ÆR§ÎÄaÅã4ÎA 8ÎP}˜Œqì¼[ sZ´ûïë~˜ÌY€v9ÁÔfOŸ¿ ¶AIž#êna:"Ÿùa2'¸„—¡S(-%ååÃdN0Š .ñùc郘ÀB}˜ Žx´HDý¬tW¥Ç<#¸£i+í†^íW¥ z˜Œ]Áe:íAâE“«ÇÃd¬Ñóp¶R>eSÅtãÌâäa2ç£'­©¨‹+¹ñKvQ ‚1ï£Jw© 6¹¤p}˜ LXq ¿T[t޻ׯ ž2~w¡xc³žàÁP¿ÖÑËA\U&ô!˜ý‚+Ö£^ÄžtxëÃdì|—C½ƒ;.ùë5yÏ“9Fe#ÁûEYr·z˜Ì©&OYQ ÄÅ8¿[;(q¿/ÅÐää8Kâ~ƒ_û¹E£@é:ó»žÝ“9G/ˆ<>Ë=ÿŒˆÏï1Z‰ B ÏrŒñdðÜ`9W382ˆÉ;ÿ@÷t<°Ú3¸ý‚ÏO…‰`{á:ëŽq_ &E2éi„©*ùåÈ ½)»à…Å×N™Óü24Å2ݸ+Řò¾ þ±ª ±®jbŠœ€—ÁAzƒº}ÍëéU\~Ù#úúCº¥ë: i‹<©* û$ÈÙÎà‡Éµ¾mÈ9¸!†£1߯ÃdÐýò!3b°HÄ¥&/ía2vÅž†î¢«ôfÔb"øì¦¶DȰucðËàN³Â‰à…Ê)¿Áö0™ŒÏj¶. Pè–TóîÁ€î›6.2žR<'øet+Ê)ç—… ,yÁCêþ†ßYi“?ðepRÀ©teƒSï &lØZùƒ¹§#Û´¿¶„ÀH-‡³ÎEöüº[dp´W-¹±¿»z4ÃòçÃEÊó¦Ùÿ *NÛåLJ‹ r‰åõƒmÜþb ûGËÂêPhB±žIi‘A'YZ®Àf뵬z7úÖ"ƒ›lC}uçO›)XÉàÈ ÊÜD¡¢N÷Ô?ðepñ)£¨àdk°º=LÆØú­£©“%÷=/ía2Æ;)Tõž$ëåu©=Læûêʓḻ´VÛÃd@žEN {,.Ÿ<"xƒ+-lEV~< ~\è–~.¼ç‚xfsÕ=LÆÀoà ‘iàê‘*s'Ø~Á(i["T}ÐÖÓ¦<ÆËà¢oR2Æ„†)R/¯.28T¤‡È FÁPRç78"ƒƒüe}ç=n¡:Á‘Aã[Ѿ• )]>«„ h™âPæW8nä=¥Èà5ÃÚÚò[ÃÔ¦öG—Qàú£ØÆ'kÑ6"ƒpëª HÖXJk#2h¤€Îü`§Í+¹ŸI‘A˜¥´*uÝ‚v6^ÒÃd¢ÿ`läõÿœz•;&åa2 Ý´ºš¨diäàz"/—ŸSé: 1`ÇËàÁÀ±ãвôYG˜O¹,ç{AØ‘AX‘úô|£ ‚K¾œ$±ÊeÞ댯[ÖÆ¹ àÀªúF鄬ÌqLߨ‘Áûþ‰ 6:Éq&§ýî);2Èãtȵ”2Ã*Ê[j³JÕùîqGÄò1z‰ îëš‚Ï^à.h<"9ðÛ2Ø"˜ W©Ÿ¡eú‡Lä nµ&zé:†;Ã0ù÷/Ä»*Óîl¹åU˜ŒcSÀg¥Mx€`÷ûå‡ÉœtЮ½w!‰MüóšbðËàù`±ö±ËAIܳoÕ&ã4ó”§è¸–b&-ýèOpd¨wBµÅ|þü0Q{ Ò¥&±Ãغ­ž_w¯‘A¶ÿ³ŒÇüলt‚N½Fi7™ÝR¸^Rd~TyæÈ :ÍÍ”‰ÚÙ†úê^gñºˆÏôIõ3Kx¶?Lơ؋ PU™c#¶Éª{˜ŒŸÛz/÷ÿ·N½Î¥ÝÿØ}“ñF”ØÄÆJ¸d¯?L†uëw–9@§Ü &sV:>‹%TI¾)äj3xFð7^ àꔋÿa2ŽWŒÛm~VPìÇ`îÏýa2(aŽ,,8° §š‚Ýñ‚‰ûÇÀ †f2i‹Fä Æ#||=pê…Hĵ?LÖ^T¤›‚×ÙXÈW÷0™ó]ãëÂtZW8®çXA˜ŒwÍ/õ›À½ôÓyì“9ëí|Ç5¿ý*N@ó*ÿÀ‡Éœ`À,»šp\îÀEv¤‡É€4Ô¿\â³6o÷_~yE0Èøm¼«Î%ú0ç—C½dÊÛxìT_0QBXN_¼å¹ê&…ª•âÏá·NÕ3?ï*2ÖSK›²óÖ&“¶}DÇqWÉýF²±3)#2踖‚¨ã?#'ýa2Pq!±Mq~8)áèÈàÁ@LÛj#N=Ƽ§ô‡ÉøÏ¸4…³2Ö‡Hß&ãÀ_Pð¥Á@ÃÑßøF˜Œ³)@6ÔÔÆÅ·ª‘`hùH÷™ÜÚ %ĵkà‡Éœ`‡0‘x78TxÀîÊ}ãa2NÁ£ÚET+™“\ùž&s5Aö÷üãïà©û¯ÑÜ&s‚§˜Kð„uZ^§Ãï ¿`HÊVa íõ(ueO™·ª·Ø–)’>#ƒ‹TÛõ± ÅHöç\ôÑ©rk£Ä¯ö»ûŒ Ú9Ïg”qÞ&ªäºäÕEª´ÊD]P‡ßr]ê+2ÞϹ;K[‹(/3ƒ«þ‚ñÝ ‡Ê`ƒ¯;߯Ãdüì^¯“*wa·Ålj&åa2Þø¥q8éÓ>ë“9Áè„ñïÆÀèòÉ`ï“9Á„+¥­Ú5„–ÇxÄ(„âüØE‰qC~Ù"¸³„VëF:ƒO9&ã“Õ&R– 7PãWãep‚±ÐTƒ}Á0 (zîü“qÊ5U%[K5CNpà.°»¥N7­•˜y·È &ëy´Q:s@¹6,2ÈÍ8Ù,è§4"'#7s‹ Ò­[‰m˜¦[N`·ÈàyØfi¿]vQ‹ Âè¡!ÒÃöÀR–Á/ƒw<Ø¥$î›vÀU¾Á‡É@õ½c9Ûà6:LÞÆËà‚¾±Ïø@W~Ê1ñ0™sÅÏhþÍPJH¨³?Læ6ôMªÙO™õzwdè?L'ÓJô1<æ…3øep¡óxNegµA1 ùåÁZ>ÞU½ò’Þ“Y UÁT1¥ÛÄ©©s=&³ê᥺=…-¿4ƒwÔ &²=uZç<ôúÌiöÀdshÐýõÒJ-‹˜ÌâyÕ–ÌzÌÍ¶Ž”ñÉað¥…ë,ƒ˜×F_z ÏRfþ½ &ƒRƒ!²}YçÛ²'0ƒ]î9 Š4h5=ä LÆ åVU†ztÎ<΂ëÉ y¼=Ûg€ ä›p!.¢™[îLP J¡:÷°ž_ƒ_½âZú1¤«WW]ƒ_½±Ý`&’Τd”-oãeÐ)•æCpŒM.‘âÉ@(ê‹™C,Lü4OðËàùM`Œ¿úyþq8‰Ä¡_p`2(¿Re™E`klSf½1“qºªåÚè L©Ï|&ãÐj4=€N, WËÊ|&ƒä×Lí­óÉœsâ²J¨%gGtÙg2q²~÷LÆ!‰áMçŽ ›<㘠´UPˆ¸.ÎnfpdÐÀ"½N)ÆI.ùåÈ ã¯i.XÁâàÞ̲˜LÀ݃PÉ# Ž â> ~@€”¶¿š ÓLÆ¡±à»«Ï#=6‡¿ n0Êücdi‹FIÉ©tÿ0Êî¬a62F`2´7ªi†5pö_>ùWc7î*ápg’¿ ²GU?bw½tÿÌ.Àd6„‰Ïf®ïB+ƒwÓîK{mg?£FYþr`20õ.0©x›n_\#øÊrmU™£íü–_~¤Ëɯ¹ ŽSö)Á‘AÌðŠ› š‰TõJ§û¤3øÐ=Ä­Òí€Á7ƒR¼Sm‘ÐŽAØYãa2ðZã,wÖu“vhUÄÁÆÃdp3†Ž8îuüÉØÑòë~˜Ì&»ª ¹Ñc¢Ý?šñ0€€Fe*Ê–U‘ù>Lfbæ[XpÐ[´*×x˜Ì&Ñ wI!u‘–$„ñ0àºDëžêA9ÅÍàþ‚¡ìzy4ú±?ËcŒ7øõªÄâ îŒNºÎµUJààCÎàÁ`”5²ØÍpÁ(²É—ÇÑ9+GÛÃd6U[,Çù'Jb~Vy͇Élè oKḳ1Þª æµt>L†ƒfçÏSñ™ý<Á ~„_;ÜÈÔ»ôàôõ8Á=‚”-™@ÕDifðËàÀd›O5§0ÔfZÎÄܱ(¶ÛCJtIÆï,‘Ax1º¶VáV>>"l³DFÃ"õp¾ÞB¶ˆ¼ºÈ NÈó' ÛðÔ§díËikw¥7@? ^.¿µ1&sª ÚoÈ}°u§Hf @͇ÉÀ`8—àH}PÞ¢ùå—Á Ó0S4Kñ=d“k>LfÓ {aNÚBÖ3øepÒJ´l¡&ÂFÍÝPºEðþhÁ¡ÝÆ0hü28'9Fòž£R˜RȯÉ`tüËß™²ÏA?ÈrÎIÛù0(°ÒõRF\{c›²ÊÛØ¼!Zõ»iúY¢P–^Wýáþr‹ ¢¤õ-’§ž"šŸÕl‘ALï*ìèŽlF282h¤WÉÐý³©mIB˜­ÿ‚'ZøÚ “œˆ‘Î4vô¥2‡¶ÁÂÇ-Á‘Aºd}zmÐ %Á‘A ž-Õ¹Wƒ:ä™_9­óПL·æÃdÀãž_Òã9­À_ à̇ÉPQƒlé§,Ò$‚&E:Nçè%Z«”ÎÎÏêa2'ȯË»(Ìö›ªbðË (o¨¾Ö§71r¸‹Á/ƒw7Ó½Ðæ$Á;EQæÃd@RàMÃÐáò3‚]1Æ,.²D“9±Ì ´uP3aTM‚#ƒ0 ;iÈû Q§,“?ðeÐpžÖÏ´û¨÷~ IÙŒ"P†AæÀÙåå LÆÈÁ-R7˜ûÀÉí+0~‚ââŠy«;ì–Pç Læì/ô-É£«P¿³¼œÉ`(:à¹óW°^7:v<"˜2Ò5!¸ öRNø3øeÐúU•>ìm¨¸ËÛX<çwö4ç1áò6,‚ Rðk Uö Ujј f‰U°â¸m9€“êßYürÐ;&ÌQøæV˜ŒÑOsÉÜ¥'´G×í¾È¡IC°_282¸­u]*PØhƒ#ƒXϦ·c;W<ì²&C­; ›e±½úµ©Íõ˜ŒÃ´Ï“ÿ<1ÎOÊÝÏý¯Æ-oV•[Y×.'R`2g ¡ld¢%øRrÈb&CÕÞ¢jQ^¯nFÊ4ÍÀdn]M¯¥Ÿ4t[s‰&ãTjjS,,ùåÀdœtO9ÿúÊ7˜Œ÷J{ê©úu-ó¼µÍÀdÎí“\Kä)è!^¦>óË Z¼UŸp\×Ådä1"ƒ¾ 謔¹+3ä LÆ9ð;dÕÍË•¹˜ º¨7„¨YØ][ãeÔ —*z9h·åm¼ :1íÔà V¶¯ÀdØOñî:…mÔ¬Î;ì L*ñçmÈ9ØágõѬžÉl®Gÿ ݯ?£l‚ °0“Ù‡Ì1ós©1ç-éL†S?VæååB¿ çd&s‚›Òh«´ÌÑÏÀd6‘íÑMº¥\:ƒŸà—A ÍxÂ,JÐ"=S“Á…ü YìÊoòFqï6o¬«ß>l&³é­Sí3ˆŠû`“}#0jü®ï÷"æ°¨9ƒ0‰Éì?ÂÝIa£ÚTVóm“A0øRîMä +}/›vRm…±0nûLîƒÄdÌ+úR ö>É¡ÚòË+‚!-e" ‰á¯¾è$&ÃàI\QB87AŽ™ç×ML†ÁNKAÕÀÙøé)õ31/ZR i Ö=ù “ap+aõüd@ÎË@¡'U1£Õ¢1àÈÚ?¿D݃R^ØYN‰ìu;2è¤+SÍ71ð]D{vîÈ s|c˼¨â¸Zågµ#ƒ4ƒ­¢…¡‹ý]u;2Èæq‰Á½Àt¿ VRekW5#uFnôûej8I¿©Ãêç¹öË ¨W(:D·g£Ç»Óí íLX`Ë„Rê×÷ÒÄˉ¨¿³úZåew{ŒØIsüÜÿqIJÆ*ý,¯+½XÉÈ/^œ¡ÊtŸ¢‚Çqn¹«¼ ^u¶-ZÊPêì9<Ààõ F]'˜Ìy<€\^]dãR[°jÚâ-yû/˜ÕjÇЕ—$82è ô•®d³—–›Ìª‘A”àç³RóÍ‹×%·êË`»Bâž@lÜ"˜½‰]”_¨ãšï¹ö6ÊB{¶QzIDØV}¤q-¦n_üÁÝ#ƒg–7Å瀃ëÒÌÓjÕ—Á³3÷¯38ª<‰ ~l½ãt`¢‚¨&[îªþ ÆV`°‡ÂVÜ2xG0yðêø¹ç|ÍÕ^Ïu7Í¢zŒ4¯¿#ÛýG™«:4ˆFùË‘ÁE/8u¡ZÌiY^®„Þ€}ŒxÎêIñgpdpƒÅ§Üx»¦=#±ÜÕæ/4lqÜ[w"cêcD7;¼2BÞ3˜Ii‘Aº#©a¨ï7Z*Ïü2HMºž'„ç”e±ÚŽ`(—&¸71»Ôéú“ÑKSù\ñ '‹´°W¯ É}uíñ«²ÑÙ^ýeÅ“Ð)a{A«Ùä1^Oõ{‘¯…”ÖùYõÁFý9uf–ÜÊÜê3‚)£í†MÙÓÇxì ÛÔ)¹«/ZõLé/ƒýÉuè08Õ–œVÝÁ5¿þGSSpÞ%82ȹa=ŽËÀ¶ =©_ðˆ np㇥ÍãÄ Öxô1S,7E$º¿ Xõä:ÛÕ¬Î÷X8ëGÂk&sJGH$ÊÈö\­GÕV`2‹½‰.ßຠWÕä™#ƒ¼¤Waü¶k»,×ÿ˜Ì‚uc+³ ¯ s4^.5ÉPðÆ“„A`ô ÄTýG'¬H»èª¡„çiž)ɬ+æ/”9»Fðb輓9›Þ?Z˜Lcç1Ó˜Ìâ%]çaߨGËb&³Œž¶[ÖA—Ù¥˜Ì‚hÕù2°€KHùÁ&³`iÚï¾ #°!282ÅËö»ÌäˆâÄ Læ;€þ«QJájÉÀ¼ãSèic©dÉ)sÚ;†ÛÄøŒ^Z`26È—QµbÎõ LÆ@×9;©ÚÆ 4Ç{‘_LÑC¹þŸ½Ž[A‚¨˜ŒAøâü{µn$ùi%É“1”´¶däd8½Ý×à—Ás™oÄïXð;í.¯ÎÁhåƒmນä²ÀdŒ÷¹"ÌjØJ}1F LÆœòÆkˆf <« LÆèÓ8Tÿˆò‡HoÉ8`}\µ„éò“~ݘŒ“,誉úH5Y¸Z`2Pµ ñ`üb3Ï·˜ 8!§¨Æ%ƒ•)¿¼"Õ— «óœ°tTÕ_¶_ðùµ™Ø.,*"l˜ §›JÁÓ,ìcalÉ8Ü‹«ðrª¶s“±Àd^æâ‹·N• JGn˜Œs\)Í}_»œ¬‘,0LÌ´«ªÕfÚû182»#W¢&¸,ìçËcDÁê,Unôg{¢âD@˜ŒO* ‡“l}æ-0 x㑾'ô]&,0«Óò* mpjŽÙ¾“¡ØÆùË›³à"fC’„¶þô¤­ÖD!,0‡oo…”ï&%àž&ãF³Âþñ¾Ž¨ùu&ã4Ã~lƒà{'U ßF`2Ž)Û¦ºÄPF꬛282è0t®27qþ×(°¦ìHÉ8nm6 Ä„<¶ürdþEµ˜’h{±–<óË æ‘Pók÷¿SÍdÈcx_‘øõñõ°¼&³qarý§]±étß°Àd6î­ÊŽäç "»˜Ì>r]b{W,-0´áP}ùWyécÝhÉÀxãìnB<ž½ñ³ÜòÌ/ƒäE—3Íë†/xF0›CKb®gé–Z`2û2 •‰ŠyXLëdº“Ùk2‘%xV2ò‘AÛ¤èKýì 'Ø0yŒÈ »pªr.Î:’"Г¡êùÿ¹”ĽP…-#04¶á£NºÂ½´‡ÉÔ뿦º—4±NíZ÷V½.â¢:'B³‡É¤+ÚV}$Ê[ ùåù Æ,|Ýc‚9«Ó ö0™J±êr;6ÐúÐï–ǰŒÁ=/⇽ok¤‡É ˜î‹E¯xlÓ7yu;‚1rmR¸‚-ß?jØö0\•pEÛZ¸B7ïSB©Æ/•KdÕ=L¦ŒoU‚Ý Âî)ÁÁ8NçÞŸÞ1Hbr©y˜ qOÑ!‹kÉ-5ÿÃdè3š*Ë—{Iª™`ˆ=L†flÔÌÕ¡!Ìiºl“¡Óêa³EºX7ÚÃdh^…cBF\6©òyŒÁPKk²1îzᬤdØÃdhªQm‘P¬CD2Í#ƒðãjU¼'Œ¤Mi¾~Á#Õøž˜Ò¤7¼<†ý‚÷WŠ5+ZØ[#2a¡æÒ›€>7è\¢<œiêtˆ¦“íò  p‰Š~½£r›Ø‘Aòè‡P2æšT˜•£mG;Saüž™,ÉàŽ N°Øêg–Ûš­)`;2ˆ÷d.“‰P]s7Û‘Ah2ÃâMýŽ™ÕòÌë ||hoC¡Ûõ1"ƒ°8ËJÞæ§?¾x¶#ƒ´Ÿº?eC פKàÖWg×ê. ^"ƒPª±-g÷*Ñ+Gíj_+©àmô%¿¤:{‘Nz§|ºBx‰ Â6®U‘U‡Á­}úV^"ƒ¸qýŒ‚Ù3²³Ä®ÝKd•r+ÂrJ†¨"?LÄž©~ô¸–ReN( þ0X;áÅ?…*°¸zÈ/{Ó~ËåÑÈcÜyùÃd l)”uE¹;v¤™'¬?L›ÑF/Kˆ¹ŒÚ†ùË“x0)oM¥³9À.é~˜ ¿Jóú‰¦‚È×ûÃd`ÑØO†à°‡â “÷ü0X´p”œE|C”ýa2讲øŒå{k¯‘Aêlë$&ÇËgRÀkd,åÒT„‚•++F¯‘Áî¡B[•ŸÎ^\ƒS$êëA!Dñáõ<÷>Q¨t ÄÒTØ[d› ܳŇ—”"Øî-2ˆ­À—/ê^Êl©·È L d"e<§¢ÄÔ[dÐ/(&L'TXµòË‘AKW‘À F™ÁÔéþéµ9Uš¼:ûã’Nú„Öý§wì-2¸érÒ³iKÔTyŒÈ ¦ÇªË(Ä9E+©ÜË/ Q•zc\­Î¼–z bô'ñò¸=ØEgVæÞ#ƒ>MkªA97Ö–äR˜ ´Ê9Úc*äB2ß”à—A ƒCWM´ ÇœO‘?ðeðì%Ô3±9Àž7M˜ DU±±uEÕàn¹ÅBÂ&æŠvQ¨9éÑûÃd PŒ÷$e|·> Zeº&ƒ+…“MU@‰æËcC÷0'üX¢øŒ ^OZéÂmˆùY9S“ä_L,‹ø†Xr{`2WÇ­K؆P-:_x‚!˜Ìlhúuo6øRòL Lf€3rîårLLnUŸyE0L¨·Î[ä¬ÖWgŒUd2?Iß™P)ƒ_9¡ÿS…w0|A Í<0j5[ꟲèT,•L`2èÂJR W4ÊàÁ È©Vç D™Ž?{`2°k;¿ìZ×Q‘s'±Í“ í‚.› ¼hH.Í60™Á"nHcî¬ëJ³&30ríJ#Ñ,) ¹6“A—¡4¥Ô£Ù“m=×ÿT ¼~t6ô1"ƒxw­J︓.º¥§éÉ ¿ªò?Ö·èûÿA¨# ™£w§¿•¼çÀd§H–œ)cð´D=0™‹¥—¡T.:Ú ÕÖ“ÓèÖU” Â[›œ)ÉŒIí Ñ`?[ ®Kâ™èÉœ‚ÏsÐÿ²³ é ²D“¡•hó™;?¬Ž "%D`2ÊFHTô ½LªÉ3G9Ÿ’ýÁÉ>.”O³ÃëÉ ¸‚[k2JÜ€—ŸÓ*Ÿ90™E¹Re4Û -¿t˜#oiEuPÿrfpd¢ÎK Þ€Ü>£=˜Ìp–=[IéXÑcôÀd†s:¸h½Aâ±ÞS“P³ð%rßÖcÊÛxœØE˰òGMTL朂¦Cphrõ"Á Þ¿`|):âêª#ÛÁ˜ÌÄ6ƒ5ׯÙ&×7ƒÉ@½þ,tÑíœX)2VàÉL§Šœ°*Ïâ†Á=‚AJoêªvž£}˜Õ˜Ìl fæ1ÅcÎRˆ&3ÉOÓ±‰ñ:à׺6“™r—ÑøF7óñaîy`2³ gKþïsm&3!úZÕ…ª]£›]$)ûŒqQ¹^“5õ†˜Ì,Õ¤­ƒ¢`ÑH<ƒ#ƒcñëãÞàç Ž ‚8ì±xÿû¯Ã% SÓLj Ϋª#DUð „—µŒBX@‚Í?ƒ#ƒPj4Wï`|d¦’?02Èù ;>E2Ú:#¯¥;0™³—cÔI6kg(=›ã;0™óÈ´G–R­PoW(Í;0Hb¢’QIºJ~]6Çw`2ó:N)·§q¨' a&3é²Å‚mÌ+Í’eüLäR°šäuì‹S®Ù›ØÉØ¢²´\=plû);0cOsÈÌ#äÁßòÌ‘AWæ2þ¼PÒávœ¯.0è‚¡ë!‹³e(Þî;0£r©©Êܽo‰kÏL†Óž œ³oeÕ«ÔHɘsA:¼ D”ÔòFÁ`6²å‚*Ëcþr`2è×âГўÁ#¶ÉzL†à éµóùÎ!}`2 5Áõ¢©¢æÜŸVÔLÇ ÖsWE šÈ¡˜ŒÑÇÀ´p½f€‚ÆïÀdÐq‡Þ—ê1u\ž92øì|Š ããLÙ£ßÉ`a “¤Íñ†’X¼Vw`2à%ÂÉbh•Ë~·ìÏÉx¹ªárOá :ec¥ü‚1M¹„= ±O@C=ƒ_TÛ¦ã©6ÀüKy7´¨_p+èþË"JÙ…™Á=‚•j2ƒŽöèAŒˆ`l2C¾Aι© 5ŽÛf#ƒNé­›’¸mDðþøˆQ"•ë*D‹ä':u/bl„ä j Æ;W÷:¸íÒ·fpdðuß(±à­³ÁÉø/Ó–’—®]û ,Yã¯Q³ÂŽ-¨—òË‘Alæ6¶ÌˆÝ®túwŸàÈ œ:ÏÕ+wQJJ¨Ç>õFo—²g+7Ư.0P RÍúbæk\FyGÍ)>ÌvÅ”r!&s%\Xå³ê‹¼ÜeòÌ‘AÒN‡ àœ³ ·¶TÀ*Œ`hÏ6ù¬`¥ä*é uŽŒ¾¹«Ã¯Ýá,ûáh‚EðyIYæ6yÏÉ8Â=•Õi¼Ñ'°€9ûÆ-¥Ë×;wKõaG©W°ô*m0±Ýéz ÒÙ/ØÓâòn¹N­´.`d.é#gß¾U¦;0™s¯äö5ů­ƒö:V&%0? ™›_0ðcá1ÎÁ®IšaÁ¼%‚1ܽE aeá*×s`2›zŒ]œg4€¸æ9˜Ì)œÖ—$†“*n¹#&³ÉHÞE/5“û³¬ºÀd®dÑ–’¸£m¬Ö`°7‹`̧lÁ¾N,Ø‘$82$ϵ7q^÷:ÏW˜ÌîûZ¢úB¥t0"2828p•.òêì¶²vÍ÷˜ ¶WP¿¥úBos{ùž“9;.5Šöœ|,P rßLfCª¦Ltâ”:úœòÌ‘Aà‰b7‰Ñxx QÞFdpB¬£¨²Ç耇GY(eΉ‹IŘ ÔÏP}$5Óì|æÀd ~ŽÍ\;°0>'B>F`2›s–M«Z¸—!P`2{aôeË™rnÊì<êcDñuÂPR{èÕ•žûF`22i)tñhI0å L}ché©ïͦº,ÑÀd6G{–Ô¢Ýh¢—4’„õµW®:~°ÁÍàÈ IM‹“¹(˜#c`2$µ%ÀBol¿¥©ú Ž î«­õF¥¥l_É\&iýÐ: _©¾“á„ßù²¤Ýc˜vñNpd}QºÎ€Ÿ=¯š$sËàêB¤Ûò|˜ ]Î0EÝÅ?Ï ŠeÛ/˜¶‚râÊ®›{£ƒ0вàèéUšü;‚éI+5ÿ\d”u)!&C`/§!XøNpýƒ¢/ŸÕnâ–Ïü0Ôó˜’í뜂ð\¢“A=ý¹èu jØ gðxÁ SÕ}7m7  š[‚gošÁnqûj…ÍàÈàµÈÐU3YìÏDß -­dh>$uG;¯K[™N†ýÙä’î‘Á]m59ñ  Y>ÆŽ vz³KAujSLqÏ•±#ƒ”ÜÏWGùz 2hpdpàn¥š{ã€6ùRvdcUvþYcç?Á‘A0I- W•´£ÉMfÏ_0 ¶úAÀª¹vdÓ »¨Àµ¡lZ‚Blûƒe¡CÊì ì^å1"ƒè•Å/mJ”+©žÆàÈà€(w=ÆsrSê¢M÷‚'ç4?8—¢‘Un-‘AÇE•ÀbÉ?282Ȳ!òÔ¿uF£ÿ‚ѯnJl»ŽN?*× ¿à­#ÄÌûÖ‘íƒæÔÐMD2ùóJpdpÑqZJ5 ¨E«¼È fp«RÊV[ú‘Á»ÉfêV@²u \ƒŒû ¦š_Õ®Gãßñ[HµFq"´µu¢™òKþÀ4¢“U»x¤å×]kdÂÉÿéM:Ä î¿`hšÞS »¥?ê8ä"ª¦«is¼/²äŒ ‡¤æAVÔ žWrÕÕÈ H12ƈ_æàÞH ¬ÖÈà/“f")9ÀÃ`ÿ£QÑ›Ka<ÖW—Lj Âq§è ½zSæ/·È ä%ªêÀ/Ë% ªÚ"ƒ›“… †Pþ¹ÔÚâb Ž :f¹tälà­ƒ{XlŒÛ„ÒüÎÆ…mtË»"ƒTxMòš\L`Ût@;CôdÎÝ©ÓçQ‚#ƒtZ1ÙÌ‘%LžçM³Zù£/°t†÷ªdÈie‘AêoíxðÐñ ,ãÜ8?5äëÙ­ÐÃdàÔóž‡Òƒ ~5Ùr&ÓíO—€Õ€ ©™ éa2 ÕöמH>b3øe‹œ‘&ÇiÞ”ÁÁ¨rË«æP^¢uºTÉ€* Bìgü™-l9Ú“ÁOC%£(ëè@÷50™F)x=ç3ùω×Àd0š‘Ÿ¥bþäöHR“iR^b¶²yi›-|M/ж”„pÎ\p)º¯ÉÀg6}Gù¥”NI Ù‘“iƒ³ÿ®œ@šPwYÉÀת\”{7Þõ”Wg¿`²D詃 ”W„iÂï’}‹ÀI•|)É4B„óKÉÀ4eO@²&ÓØvßrO¡r'êº\HÉœÓ_–BÊònEÒ˜ t!à Yu–‹rÅ L?ú=Uû°_(ŒO¾`z4§$¦¢0±U¥­S“¡N¶mT­£Fªé“ð:‚Ác4Õq=O[TîûÛ/zæ:OÎ#\%382Hu½[M0œ )0™Oˆ¿ÿÿKñ`‹‹`j¶ôŽ Hèð® Ž Âö¢ªfõ˜Ô…È‘mŒÆ¼às´Ù¡}üU¢žàþ ¦r©ž°VÙØ«t6ôêqªÏ)nÏ_0eNEenÞÛiY…m9‚»}•ñæ¹§øÀiÉ4§ahË9MÐñ¿Ï¶&Ó.Ûãƒ}QæDJˆ˜ÌÙ$Ê#C‡,8Ο›L L¦à}N¶-„+ú– lØ“iصmÊíxÿ¦382¸yéÈ¢±%P„ Ñ“<û×ÍN­$ÿç{LæN¢ µD¨ šxòË/ƒÉ>«R! jÁy³-0èwáLÑ(Wt—Z`2 Œ /–zP÷H”¸&ÓÑIoi Ù9€³•Œs?‚7Ûe´A×F»Ò-0J!ÕØÔlkƒ¢_e¾·#ètç¾&ÓIÚbÄ3ÏEkärapà+Ú*}«¾H]Ì‹X L¦7@6\,2· —_Ž b%‰N ܃t!&Ó;´Y>Jbýò̧¼È ˜…åcÒD#&ñŠB1ð †øŒà  Í0“}ÁûŒ£­‰ÛùQ0~³újÉôŽ!ûœ›€±€‘.A±ó †—ÈLõà~GëmÊ/·_ðÆX®b2ì{ÕÄ[`2½sUX,™ª¿q‚Ç/˜÷-‰é½²™Ø“égÊ*JÆ«ÄëdßL¦SY" ]-`²?&ÓÙ¿rL€α/y‘AT2©eÙ±FJ†ç ¨&C¹ïbmà\âÔ…zÔ ^4çÛ®¾¥œ-M‚J L¦ã¶tG¼VÁ܃ÙGG©¯·ed·ÔûÊŘL_|Õ ¤ê¢ˆ)¡ö‹`L`¨ð2e™ÐÊ•?pþ‚ñYHí ¶ ¤Ü“ùÍi±›œy<Á‘ÁSo`f~¤Lò¯#Û'82ýy[ê<ëdwY"-0™ŒJFÍÎÙ”’γ@>_0 w¨Ü°¬/©¦&Ó©Üße,õíb-ŸÁ‘A‡®ð(MÚ”\Ï=+ó˜LǤm394D €œHpdÐ"=Ú•¦ºNêöœàù Æ™"ÓÁëâ kHpdwf8¦è *ØŠrlÉok½}X¡Ørv&ÓÙv¬S äö*ñ28?k;xaÒ Ô L† ŒNh+ ðÁ’U˜ u{lËÎæ.ºK²ó&30ð ~ˆÐƒiÓe“ L­ãïÀ¼‡ b,ÇD`2ô1ø=´$Þ*ŸU`20HÄ €Î–B¬¤GÆ ^ŒíÇD©æ|: ¸ÜÌ“8OÜe=UþÀ!k#0™±aôÛÒRÐ96!÷Á˜Ì`u8e=ÃòÃÕò&3h[Ñ»Þ&(·ÒŠ×_0eâ1w¶Úðʘ̺×>*Œ}¸=-0™ÁþeÝ2ÉUHðN#H‡EðIÉ¥ •/Iw`2£˜Êc¤öÖN†d LftXP©Ä"šKƒ%cGyŽm!ãΘ)õ¥&3Hó=·\ Ja2&©/-0̳â"&¢Ü “”ØÁÉ úˆ©ü¹,€ëVd3LæϯoéX`d꿟Öá¦å^ä=G'å«òë  ^»ì¢É BhMÎA0Y§ÊÉâÁ°©]2É«U45“æ×“kN•f©†\%»h`2€³Õ &ƒÒ÷œ\É ÈözHÈ ØYrõLf8¬×R–€Á³+Ý“Pâ­VÔ‚ô<½â&3Œ…]WZj=ŸR×&}¤+*ࢲ#&3fƒ&Þ”-kº¿gîÉ@ò}TõnpúDæqÜ“Só-¨ì I[]õ™ýL_•ܧÿJúðâ"ÁÀ̇ô°jK7‚“¹ÒªzÁøo«Ô.ò/˜ÂMœsklTÑ/Ü~ÁØ$ôÂ;Hɼ&3 Ç¥³a§&¸Ä¹oôÀd&g‡¨4ƒqGŸÈ|ÏÉP‡êl²j­KÁœ‘ELfbLâwof´8Y‹öÀdpƒÕ)ºjšýÍå™#ƒâ?¦Ðóî.IÙ¿àmÆë!б×~KâÆàÀd&ppûÔ· (#'=0™ó´$÷è /é”%k¤˜Ìì$WsEÕl¨92p›ÆÔj‚ f ÉâLÚY0—©(HKçè&ƒç/<\Õ…˜…·ë-¿ÄmÀ¼MµºÃuIH5=0™ ö«¸×‘5ÄyÚ!Áþ 6™|¡ÏcqKw%G1ôkÈÃðè,ªþŠ“GœèÉÌK9ù=óú£±xú1821 t䦹عÌÛDLf +±Ü'Ô€ùÌÉœ`Ëê鎜`ëúl_ÉL  xUòÿ¾Þ–¹“™ S–¨`;Dœ½êä :(õÞÝ“™dHæXî8W¼A-‹lŽ÷Àd(ÌQÓ úü˜ž;&ƒ#ƒ¸Qn(D‘½.0™¼è@ ¢U&ì«&3!÷íª—K¶ ÷ü“¡@•«Òã¾¢!­Ë/Ga^ßôhÃM 7<Ùù“sŽc9Ú0tŸ}/G)>³u˜Ò஄ŠDSqƒqŠÀ«[–Á‘A0vaÃ$(ñBsqê3GéMY妉•ŒíKN«Àd榥ˆu~ð;:¡ÁçÕÕjí3H5#0™UPr¨úÙ9æ±oLyɬ7FíþwL%Ît&³ =@E -=®dm&³`¶ŒBùuJé`ðüƒH?”Y½h l`2 úÎZÓênÉ«³ÞÔ­T' ö >àËà¢åáÒÉqŒ¿@§˜ õKHùüþ©IMìÉ`ì”æ%îH0å¥$­Ö>}õ^Ro&< J*¼LÆÂ–10™…nÉg‡e yŒÈ ëû¸ªq¾¿.yŒÈ ÄÁ,omP[…þ•K×£&³@åqÍ`ƒ-¨ºP`ûCÃFÖ3¸îxì¼MôÀd ‰ùU1:Lc±-ì¹N·;Jœ«.0Š|'_*é Kª‚ÀdHç&-½cN­î•œí˜Ì´YW#ØUî!ÇD`2çjÄ]TÆ‘6ÛÒS¶ÜÀd€ :•Ø6Ùl®&³ x|ªCÙrËõÊ•(0™ÅsLeç4áELöºÀd0Š•ZÈ÷ÞílfS &s×®k©6Ö²5ƒ#ƒlD¨ÑP5î%ùu&³¤ôä`ÏolŒÁ‘ÁE9aqM!¹43˜ÌZPÆ«¢CuöŸB¢g>s`2 ³ÿ?˜ä]K'› Ä¥í§Ñ{o@vÇÌ2ƒÉ@„ M.%\m†üòú[·S³Ð4©“a½ÐT$“s™àˆÉÛˆ Ò±*Ib°cuÓ¤p LfÙä9¨ÔDö&d’«&svyeÒhÆ#zj×282H<±›úz„u)¶“YðUYH@ÔżJq¿`h¢¡Z£X2Ø{`2ô„ü àÌIͽT.EãàŒáYÊ0fŽ;ð”_Ž ¢ö=›ŠÌ§@ùDTQÿ‚í;­sI&ï92ßFS‡2p³”-¯.2n‚5WÄ ú$æ÷ ŽÀd ö>6††âš¯7ú˜ *k‚¹Ò"1~¹6F`2¢ssE!ö ÙáàÁ¼¥ˆ¸Asö¸|É3¿ B ü@H52}6“9›%¹ÀR1nb”–t÷˜ ¶€©c€U¸F³#‚µÛ,OKî#0«(–Çoߘi25fE³#‚Q—¹”jçÅ‘U“³x#0ƒÌ!¬Õ”~† 5•ÄNpý‹:ÎGrvµõ—#ƒT™+%Y}/žýyZÀd î çÿ«"?ÍüÓ>Éœ’4M9Ž1Ó>>7 ˜Ì ^ t]ì‹ß %7“é!ë·@‹+T~92Èêi e ‰º#0€&èI ^ááïÚLÂÁØ1›RôѶOÛå6“1bÞC:…øæc&c4ˆ©]Ǿ‡og~°É` $@Uℹ7“1v©ZUoJèÑj~&sªP°WZ¥AE3 I?ÉØm›7m¾\Ý”?0281G²–r‰ÉU ‚˜Œ 9'ƒlæÐV¢ AGÙˆX*b<¡Ùçž'ìLÆ NðS@¹”¹5¨?›ï90™³sñ´ZzÓýIºÒ#0™ÌÓJ*™}×FÂ,#0ãsLµË)ôØô|ÉÀ× ùÏi4?¢(#0z× fÔ?”æ˜Ì¹I·ô|^šlç=e&qÜüoÞÂF7µËB Læ\«è¨æAãùiª282ˆ9KR¸B-œ.T¹ž“Á*s‘C9R&%0ƒƒ'ñ¸þÊDz¡SŽÀdðÈX¢Zó`ÙLÉ@ËjÊŸ¹¶ö!KÀdŒˆrW?zçk[~92¸ifµTÅÈ ÕHåŒ R+Èu~Jž{Ëö˜ŒQWUOXxEáÎÕ×L†îˆçŽüÑf&=5ØÁ”œÍ=hû}$F`2N¡ ÕÜÙ¥ZR¹F`2ÃÝa}Ä:€5$/w&C?L÷½5÷\N«ÀdÓ -!ås›À²Â¡+¿Ü#ØiOí:¸è /Á#‚ ‚+þ<)û›‹h’¾àF{jK["èn‘—;R`2Îi¼þ±€ûÐOmŠÁö ¦‡tx ðE·‚ÀdÅ…L¾3‡VÑ—Ààý v¨èç«;;"dÙÓ6®Àdο!—Gõéõ!Ã,#0‡6aIÓ±OÜÕÕåäGaGÖ†nðžAq“``2Nãpq½bÑòu&s®)íU GUG9‚q4©˜¦èÍ“»h`2Ä®ši0;wÓLj R§Ô9g£œá–·á¿`Ü»%ñ:÷nlugÉcì_0eåÔ[gÑTÒ˜ŒãÃ/U’w¦F®Ò#0™Œ‚ùƒÉáªUúÀdœžáU¨ãe.^FdçLÆEˆ¥$ÞWü\*#0™³¿ÂtLF‰ÏErŠˆƒ#ƒûDŠ¢TȪ“«kò‘AL`M¬"ƃôµ\üÉ€%”—@²rt“Á‘AÒ)³… ´и»ÔüÉ8’E9Tä¶|äVF`2P¿N6ÄQ}‰Ü\Á«& „ø^íCÉøºfßòueÞÒkÉPûìV ”ÜSL®xÉ8ïúKè”vI¼SnÉ€ʈ ô±ÆÚyIÉœRZC,á  3#0™sœ€g®Ú³{rºKNØÀdhžÙJýÜè±±jᘌӥD)ssÓ-ý»O%¤¿•êåžK:5S—GõoS÷糋Òñ=Ó˜ >ytšê¸â¦*â#0ˆµA©Fq~Z‘êÙ˜Œƒ¿áC‹mú‚ oŸÁ‘Á ýfeg¡÷6!å˜ ¯ä{ëü`§þs‘…˜ åä?N¨dxÐgº“ñ3'¥ú²v{mòêvcçŸûCö(B~úN@F0¦üšòëŒÚà‚×ÍÀd ¸«JbTÃ&O3/é30™]éü&g‹ªTÙàÁ ©.1p‚ö!\ÍÀd ¶–CÆ÷êAûo‘˜Él'%1\,ÛçœÉl|þñòkÐþ?U¤<†E0†°§Šÿì¿à‰å!ð,dŠ>쬘 ®hù}ôù· < 80\ºNUðCŽã¯r"x@8•ÿìœõ˜ìúoÈ ìlÄO—Lj ’šXÔ…Šþ²ª27“¡b)®%5(ÓýG!BÜ>÷îÞ©Ï?$82ˆÞDSþ³A)]µÁÁÒ‰`yåã[ D H¿{&söWÈPË—¼œí„³f`2b£.JmçÚMòÿo“™Élô-Ný»Ô #²24“Ùä16i¡™2Ô¡ìG'š'.–(¸mQù4ßF`2EZä,°û_³#6“9OËù’ÛA˜ÆÏÆÜ Lf£©i:É…‘PŒÆùåÈà­øŠL­€#Áö æ$IÇjQyÏ‘A’Ê]÷ (qt&ƒ#ƒWÓ´K‹Ä0ÿñëm 80ЭÐãšzï¾ÆÛ¤¹[•JÆw#D¾”ÀdöUx] B1Ç¥9>“a3ÿgqy¯ÒýÁQä1Æ/ؾRi«PF_F/g`2¬Íeû2ئ}Tæf`2›P[!e0d!#šK40P¢”©Å|'^¾ÁÀd6gµ*à] r¹ê“a»O¤Ò:…æç’>“u*þò©Þg¤€&è4“m6²1B¸E GAÓk[˜¨-ëieÊàÈ FŠô4q¤ìõe&š,\Õ´ßÝ. [‚#ƒ²NU:éF? ¾˜É@¨¤E© Îk­ýù0™NÛ¯Mådë?Xî|˜L'teCúƒ«+0ùR&ƒ v¡ï®”j·ó˜eü|˜ PL¦ji½±ÎÙŒRmÉÛXŒ@E2ga»a% >gdæ§èг{/·gÎÈ æZ¼®Ïõj9B1š32ü²ªÑš:¨8äƒ]‘A,^Qƒâ<]jÑUÁ+ÇoÅ8€wt“àÈàÕËі߬#sEáeý¡š†»ÊÜ\‘AاzÑ ï€/mY‰óÏì¯è—ò²CGîÝsE©5åÐ4tGÕ² ¼Å^írÐÕùgûZ‘AH͘+kˆs?¿ G'æaU‡ª³Õ&Æ ìE0&¹¶HÿáåàœÐÐ´È ìÖÛ’›æ¹ì²d)O‹ R$ΤTëRŠ™O‹ ^.ÃÇe›Â—]Êx‹ ÞIË¢E`]äÆgº-2¸È4/zõh‹UÇ´È࢘¨|VpÆÂi%'¬E©í]¦,å.$Á¤ˆžŒø-‚1N‹ ”æTŒÂ…ÅÞù zùŸÇpߢFBž¹ìÓ#ƒ¸’œ_—vð¼À’\=<2ûˆªZ•ò¤:‘1=2ÈËßÏ\ia”«Î#ƒÐ 1eîÍNÓÅæòÌ‘ÁMꢶžö>ÿôÈà¦åT0®'¾ä´rûwµž!X3OÌ|zd·—6uô35©\Ó#ƒÐ3ý ([ßIÛ¹Ë/[fÑáYÜk•…´ë/ß²TŒçœøx¤Ý‘AÐBre³Ð °Ê/÷_°k‹„"l·Ï îÈ ~¶-¡ë<‘ ‘-’ù0™^ïá­šNË©b$ûÆÃd:ÝêR/?\'7,„2Ø~Á<­ä™if^…\:&ÓÏ}d©ÞgKiò$ååÃd:>Ï·•ã¢`»C’#÷çõ0™NßÂóY‰€* ‚ŠåA¿&Ó);äJ<>k /H´,ÖÃd:%OŠÒü`d YœLÊz˜L'÷êÓ"õî°©pµ&Óy”-ÀãPödku•È`ã%]æ4¨\€<$82Hfˆ”K)Q&WU"ƒôÆQcëн(-¹=«D·µÔ9éÑ£»¨þrdb¢SÐË~¥,‘“U#ƒtk*òü7 LJ òÓëçÖ†íK&mW ô­”Œ×ë¤u@Þ­Ví¿à™“ßO‡ª3œ`¿`Gõ%é†eq6BäàåÈblvƒ¥×¶jdpÒÝJ]¨&ï£É3G'IS›\RžòÌ‘ÁIÏj¹¢ß±²Xgpdî™' ÚZíPêšò6Zdp¢ˆ3u9å ~s‰¶Èà¼c.b Y(Z5rGZ-2…×sy”RmØ&Ù#ÓÝ"ƒ ÃÀŸáYH:cKž92¢fU*×YAœÓM˜eµÈ ŸÕµŒ_ UÁÌvµÈ ”)›º×A,j~F‰W‹ Â}Ý›h†@š[ÁàÈ SwGqÑ;§¹¶¼ºý eN†”aKÄ:¹G\ÿ©Ô— ÈCtÕV¯¿à…ÃZ€£^ØÊýê‘AÈ™A·7omPüý(j®¤Z”&ÅnA&<™Õ#ƒ*ó{‡YD´YV âHñ}–—µpBR’Ò#ƒp²höÑøåÌä4ù_a›6xJÄÀÏ3éUžÙ#ç‹bæçCÁ乍ޝ‡É`¶ WgjL¾î‡É Úe+ö¼N&_ÖÃdÌ3eJ Å”ö€ÖÃd:´³œÌßq E hœñÐnpÿc,W/g½–T0dðË ÚC_œ5 òÌ3‚!;¦Šš½Ñ€PÚ ëa2ÆejKWrQ@¸r¯ L‚z@\µ³°# Ž ¶krbŸIÛÛðÎàÈ tZv¥œgÑp~Ý LL`î)dŠR™ÙÈXÉ@ÏcÃÙ]¢£XÎùê“iôyüLrUjHŠ¥à Læ’CÜX=(ê%õF`2j©ö\¸ÑçHà LãÀmå>OAÔ…ìTM$ð\an—Ř –rZ>«;œ-ˢ f`@w—N:/ݾä˜L¦]ê·Ìâ5ç5@¦ƒW`2˜úÀ¾! ƒàÙò[É€(Œ“~~Tæ€Æ'i&j,<_Ôø*O+Qˆ˜L£Â•}”p;þa” Ž ¢ŸÒÖ‡´ç—¢¿“Á]HuÕ)õ¾³i»“iœK«S›/hr‡]É4 !Lk^ö“GÕ>hã*.:Û+0ü©jÄþ îqMÞs`2ýj¬àìG˜ÐÎ LTQÛ:Gï舥™,®i )ΦŒ…³Ã~gñV`2 Ž—¶u´§¢;Uä*½“¡ü¦˜¿SÕM^¥åŒ Òõ² •(¿‚;ú‘Aì®4&ýL7¬ÀdΞˆ¹6ùº1íN¬”—É4ÚM®•Åk‹TÉ€‚ƒw*^Èóã™ó L†¯ [J¸ˆbL Ž BÝõ|tª\J¾©´üV`2 M­Œ2Ì<Šƒ#ƒ›ÚÞÊ+ÕöÓYÉ ½„ÓJdÇêíÝè3¿ ÒåÁSŒ„XXÔo¹¤¯Àd.6«víi~àòÌÁ¸)Oû̈añ)¨“(ƒíU¯x•j«²D“éhÆoÕf†ÄM&¿îÀd:¼©vÓNMé§^©]ƒkSíi~l¶HH´g&ë0+ÅDR²E²“9^Y¥*8Å–¨ìÉàr…ŸQöÚ´é’_Ž V'7§«ö?=€“¡=ˆŒ#±»D¶þ‘AŒãŸÿ¦Jx TÈ"0reí“îq³³‡É¤Ls‘"sºh­æõß“é(K«žƒ@úP Ž rÖÙ„@ˆÿ Àÿlè[`2øi¬9­ Ž;(Õepdð0¤ìYŸý¹þ082Ø¡úYFS#Ý,\-0™N•¸©°!7¤ß ÍàÈ É.¿Ìv2ª–Á‘ÁnúC¼||j,0™N!ª­7 F ¹MX`2—`ÒE—¬Nûô˜L§)šIe~v—ýE¨,0™Žf08cR}-·Ï²&Ó©¾æÈTö0juæÛLÝû¯ü•ÒbÛ“9Á‹ä)/‰C ÇÕ“á‘éUu fv[œÁ-0™³4ìk1¿ ä‘ÌG ë÷©>ÝÿZämD!*çCý&Æ,ø3¦ürdDÍ#J ù@æ« Læ,0_hõµ "h.ƒ#ƒ†[šK ®[=÷: L¦ƒÄéK WÀP$/Écô_ðÄêP”xþ#bÉtü}Ö-gñ0ñ_ÞòÌ‘A˜Sìõ1(Çpå¶ÜÌ-0™î¶/’AG”-Ò¬˜Lw(Nèq ó¢g.¤Àd:„¶¶ªŽ£#R€,¤Àd /•nJl£)WöŽ-0X‰à´J`¡])„*éLæÜAQªŒÞ„§—Ë&ÓIÔìËÅ•²ì#! L¦£7ÑjÕ+Þ*_$Гé´õTMÔóçôöý“]ÍĬd0 ¨4Q L†D3Ìl‹Š=LŸÙ"¸ùw„ªWšÆˆí…&‡S`W¢æ7d¨EÏ“0X2A†ÎcBåë-0™Q¸ ·ÎµÑí@8®˜Ì(:©KU_ÇïlŽ[`2ƒM ÙÔ*úÙáµÀd ª³»I'%×60™­ÇuóZûC‹²ÀdXU=@Ï»€âÄ”c"0™Aþ²éD3ôŸ¡Û#ÏlW¤g~ìS¡/º%82ˆṡ4&[¾Eæ»-0™ËúQ}ÑJâ…r¶-0¶¿LcŒÍ¯&s‚×9)N0ü^A>s`2ƒ&§]6sPÒy·ÊW˜ÌÌ_»° '4``Û,Ïì@Õôú¶g.Ä*Á‘AR2>4?Þð´$¶Àd0‘޶Ž|Ýì{Õ–D LæÔ&0“ó ÚE¼†Á‘Að7 ‰óÛùqM¡ª@f00°ò¦x¡Nd2)`Éà‡qÂê ¦ kI`Á“ÈôØ2óË E{šoõ£§ûF©òÌó /È€Ùû§ëaÉÊ]>gJ#´Ž¤¾X`2“ ÖÅúÜ0tÿ} ÿÓ^Ù†8 TD“™Cp.M[¨Öâ¼J€Ý“™T›â– ¬{\Ä“™¼=e¾‹>ÿÄ3WÙr“™Æé²`k@G,­”,0™S‡Ã?Eˆmåx‰Ë¶&3XÊMvQ ztKý˜Ì„žq邟3}Øeò6"ƒüÓ—¢uîR¸&3ÁÝØEÙ³›ðìÌ©( LfRâŦŠdÒ£ºé{Ž Rlªßñÿ£ˆ¢&®,*Æ¡nŒ“XéÈàÈ`§¤Æ‡ÛHã®ì•‚ÙŠ:K£-_&3;x™½É¥Õº÷Àd&ȥť­cèì}d<0™S³ÝÛj\Bƒ•G›&s^TGkµ¨²ô¦Œµürd¦èʬ&N9-û/x€¦¯×ð¬Èz`2çîš¾N4w<‚2p<0™9€OñLİéøPš=0™³¸H¼ªìÑ.E?#0À¼ÙêŽÕoÜ=ƒû/‡© Õ:Dç|'œåÉL àœ#YV`\=ƒ#ƒ¤­6å¸HF{dõåÉL ¼¸äi+ªS>(W]`2¥š•}Ø]h~V]‚#ƒçÖÆïÒ ¯_Ƀ Þ¿`Œ”›öýI:LfÒiµ™@pû_SLfâO·þQB § @p˜ ŒÎwcjÉMñó÷<0™ó´hSJÈê ·ñ|ÏÉ@Yõ;P†ñu ôIpdЀrÍ¥2Mpv1XôÀd&¦¶§ri¦¤ß``2˜Ø†à¤x­Ž~¥"rG Lf:õ7TÒy¢ÊuÑÙöÀd&MN‹°,Îa@ÒÓÓÖ“ª Àj©7&Uøw6š=0™‰fOuéi¢ÃFs¾ºÀd&ÕqªëÐP™¬ Ïz`2ø„è+ôé¢Z%82\ÓÆ§p…b[é ƒ{`2sóú/¬!tİ×eÈ“™{B£Ì´ BÙ¤õ³&3!QåU»xgã P­üòËà‚­×IÂTësøgáêÉ,¨!›ôV´è7ü‚“¡üBµÈ¼òA¹×&³0râÊ…àÜÿÇÌ“¡riQu÷Å=XïV˜ ®V h+4D°'3Ä“ArшPòÿ¥Oùç/xCÌ_`–I["¡{`2 =:ŸŠ^:¤Ïæ˜k#0™s_ÃA­,¸;ç$âç˜Ìêt»•½67`àH“YØíZí"Ðç˨¥œk#0™ÉÏSß ËåD2óÕ&³ ââéœrúÖÉ Ç¡š{·óˆ ÈcD/I¨*Û°œW<Lfå×5KQÄ=0™s+ZÉ¿x:T(Õ¦Gqv{÷O+Š]—àÈ Sqâî‘S£E``2‹r°Š™[§ÂÎ!eLfA¸²*bÁN×Òü¬“Y›îs?|cý|‘¨™í3Lfm…Ðnýl èwYuÉ,,õ_Wù‘x)p]å1"ƒ›.jCe!a!Q¬IðËà¹Éù·ƒ@-eŒ–æ{LØ©…üF¸[öDã=0J†V¥aŸ;'æäÐ LÆ …õ¹¼g÷u@’õ˜Ìù.*}Ô¤™ÈiJ‘²ôÀd ¬[úYaŠB<ÁNhLT¬¤‘ƒWsó’iʶ1º‰ù¥ ~DU§#Tó¯C„î©ìL†ðo“™⼌ä1ö/æýë+MfIþÉX£Ç…²YÎÎW?¬{LÆ0µVf¯Ss¯ËgLWTj—C»-÷îÀd ’Pbò4áŽÁ‘ÁŽF³ÉCUœÍ10™Œ¦«ÎiÒék÷ľ<0Ô7Wšƒý#ƒ —€…¡P`\u,“!>Qºâüsq&½ËcDÇ•Eù ‡©ÍÏ’ðhÁ({¦6¹€Áâ1jGaíU·^ñ £…4382ˆ+ÌÙ2]5Ê8O–ИŒMJ,Ê {®{•ªãòË‘Á œ?%¼ ÞØQRï*Á‘ÁE©‡–‚f¸⦩Á‘AXpÝÊTÔ"ÐäÕEyì©4+FÕÀqͤìÀdÎ÷Æ¿~\!°×-yÏ‘Aœ°Ö–‹J†H$ýLÆpw%! òít˜e&ƒ! î•Ï´NùLïÀdμ€žoc>¡€œLÜÉZ´§UãŠ^YöSv`2hz”ÖöÇOŒß±ä™#ƒèIVeV¯Îkimò6"ƒŒÝ•Û³¨¢/HàLÆÐA{G'æÛåmD1\Õò>Øÿ6ìž>C÷;0CS UeÏ®ߨɨ—´ mçrñ ®¿`L Léz²}6ø|æÀd {«7A¶÷Õ¼n&¿Ü„ÐLµ 7ªdªÝÉÜOyËðìYr@™‡>ÆË Ýè0¬©Zø¬ÝÉx¡ÆBEú³¡¡j”M&0­Ð§ £Ðþ[Üdv`2³ÄѤeüåÝäÜ¿`Sß%v=PD !v&ãÅét/ÀÂD?¥ô¼<îÀd¼B·§õÏp£%̲“ñ €}O%KCªX‰Ç;0™SäâT‘aC4š1,[n`2ŽbÙÊG ›º½-¯Ò;0o×®k%³Y2Ê/Ga1]m5å`´^ü4w`2Þ(±([AGTƒ\¢É8'”挈€ìHÉx#|¬Ð=æ¹±¶ò—“õÉ6½i®gGG©þáªÁÐù£¶º“¼ŽK¶š‘Œ×dû LÆÁߨCv¤SjÓ§VvþÀd²ê?]´×ÖÁ««r´&ƒ}ÐŽêœ`p@ Þ;0Gû¥4i¾ØùŸ‚=|¤˜ åÈK“?𜃤ù yuþ ¶t¾ºCCÚ*U^]d^«¦ÊxU8è380§k¯:³œUÖÈæøL†Ê¥ž²6˜Šê\%)É8eþ?=ú5ÊìÒLœœyCÚ”… S²àv`2§ qUhQ Ï„w ¤)ýl:¥YRÞÉœà¥ÃY¨ëè ãLæÎKí.|~:Éí%P`2W™c Q@OùLdìÀdœ„X%¥Ã÷k൓qöQkùØóaVÄÀÙÉøÂ%}Ö¯x#HÙáÝÉÀ|u™úQ[|ùåÈ •þ·:520-!“q2C\fjÎm‚ïcKpdÐ@1Rüy ʱ^GO}‰›¦`_쨚ßLÆiW¬¢¯p…€i•Lj ò“â3NÊÄGd“ LÆSÁd¦±9ä1“Ùסglœ¤ˆ›|°Éœg·6æè÷tvÎ|æÀdNð„þ†ŽBtªèwyŒÁÎ-WæÁí/—h`2 ù'×ìÊönTsHðËà&w©Êoè[L¨w`2›wý¦üÛĵ¤4ïÀdvãX­b˜Ùýf00™ ÃÀêò §’‚xŸíÀd6ÅÙuÂÍœ°‰ïÀd#}'Œ:¥"äv¼“Ù =žRW) Ät„g¾“Ù”–ÒnißT•¬‰#íÀd6€ù¯ýG‰]|xw`2›ƒ¤U®Ä"ï¶“Ù´"® ±Æ%*I L†Âž¿Y‹wš–˵40™æª7Óf¢C‚@ôrw`2›¦aKسv›7CêÀdv§„ªxÚž ¢ê þ‡‚^0Gú†BçH.*_J`2§<%CÖÆ¹ô¡¡²³)°“Á )ôù§Ú^P¨69;0™M± *8з&)=_]`2¹6Õ‚[N¹BáÉìÀdö¤¦}”K9è´ä1"ƒðó‘ #´jg/ds5•Ug !Jé;0X`"c‰ä>;Äb&»“Ù„*Uš[@ÔßígÎ ^d„måÀ%c§Ù7àªr¢.Tà‡¬F)÷‚i¾i‚ gæ¯1‡ÇŒ``*Ú§`rÝë¿F°á´úÌL†Ã7ظ»zÌa¯K=¨¾`¬]‘ÚPúìÀ‘?pF0øüÞ”u¿Q$ ÊÓ|yr_‘l7à ø †í…ŒªMc½ìibâùCÓ§|T;½‡·É3GÁÙ6uܳI¨4K0~ÁØÌ×оõý§,¤¤œõG‘þ\áx¶å{n‘ÁIÙ01>-S‹ŸÜÁ¨ÙÕïxQz®\-2HÚ¼ 뾑oº“{‰tF0jÑ&JƃC†³0ŒÁ ¦©Èüy`Ò)å=·Èà¢'í,w‘•±Dù+Ó `îñn–g ¤#_0TðÅ5À/«‹Ëªë‘AØ}Ù*Êø5Úµ{f°G n¹½$¥ØÈÖCCD j¡©]q:¾q‚û/xç ùŒKEŒsÕõÈ Svl)ªvpôœ¿`jTr1÷"Á‘AˆÝ™r/ (±Î Ž r]ªÇH(d§Ý$„4Á†KºN€Ò`f̦‡l_32ØQ×-Ùdl–;Jœ›ÌŒ vH$êþlà‡c ߯Œ ’ÛSd`¡l‰ŠÇ32Øáí®žã§vÀžƒsý‚'xY@W·ªYá Ž Rw*œ5ÉÜËZЬ<¨œäRǸ|2x¼Á€Þ»ò1fͤ¬È z’6†jÝoŠ»Ê»"ƒýu7 azÈÇX‘AbúKEØHý‡çUGçªJw¿FÃhaÏ|u+28ñ¥˜éø3[,cÊ/GáF~ÖsûXÌo߀0l£Âfi•’Îé‘}$‚¡„4dôÒN-ÚÕºñGƒwög¿[v¤P]•±€‰e‘ÞF°•_ðÎÖè…gCCR×YdÐ8¤¬×RÇ\ÂvÙù-2žŒm“Á²U¹•tllêf> ´(ž…˜í ÞA veÎwHàö¤tÉPÄ0aöËÜWT@§H8+2fn¹“ö(MiÅT–l_“(z'CA½Ý9,;ÿÃdÀj‚ ¢x­ÖÍI‰4(‡Zo…XSÁ½Eåù!Á5‚}}<ǻ͗âäa2˜p_«hÒdPlKp`I·yý”«ºŸKôa2l$A!Ù,×KÜ7NðË |¿`ª.îƒnÅå—_ᤕåŠ>­-“âö f^>æn´¼^òFƒW½–öIaÏ&kÃ#ƒXÕ—ö­8²eÞ‘ÁEÝž%Å L ÕÃrÄŒ2)›‰„, s2%Ý;2h¬ëTüT¶œV;2ˆ}k?nb𲓗›;ÒŽ ¶¯ÏV(4trcÜ‘A¯Ô³Ò‘@xw2«¡]ÁôMRG§ R‡§äˆ#xt*’gô”ÏSÒ?02ˆk¥¥þó¹M,š&ºÜ»wdÐ)uV?bw^ÓæÈÓ~Á›?óÊŒ.ƒ¹‹ÖÄü HB:¤LëG@""˜sÚ´Ý$¨¤Ïã Ž òVòÑß8ç(ʦü¬êÃdƵlýàÏv9…¹êÃd>]Z,¨®^%øe°ÓXjÊ%}]r]ÎÞ‹`êÉìB…2~º¼ à¾ÕáwÂŽÁ{žI Þ ÎKV2Wºè¿àÀd¨´õÑ…€k•Á/ƒ§z_õ’±k#0™NËð!WSÖÐoä˜ FšÑÐé\—¦r/OpdÃà®s„wgA×:‚Yœ(× FŠõ•Á‘AŒP=Hešè²íS~92ˆ.Þ©ˆ‡àüdѵ-¯.2H‡±&TѨí’ÃàPÌþc¿jY¸‚Ý>T·ç$!2xªrJWæªk•³x–Ϙ EkŽ]ÛŒäœ`aþ‚wúEð6±)Ù_óRS“9eݾD­èd¤§À Ž ·bÆ?•,ßšo#0²Õ=ÝrÏ.z 2Š µ Ž ÂwÔzÝž:Ÿ¡GʉT:K!ß``2h—"…åKÉøT250™Î‘í)ÚàƒâQ;Åî@Š»ÁcfßÒUuPÇó=&s>(m¿[.Ž×sVd“pÊD_ýšŸIpÿó^êþŒ¸ge^“œVY£·;,93xþ‚ÏJáz8Ç€¸•´¼"˜ŠâdaP”OÏ_¶¦º„Á5Õ&× ~Ä[F£XIb·Y$);‚‰F©[' 0eçLæü®ÿÂ·Š­Õ·|)ÉŒIµ %!LàP[.¼50™±nr³Ÿ‚¯¦VÑuàŠÉDÌ©àU`Ï%˜Ì©–GÊü¿‰}Øž[n`2ð£ƒ;’°Áû}ÏžéLf€ã®ðì¸k450™A ÿxÚBVú· 382¸¡¯£Öºç,¦Š¾¾çý ¸ðª½5’C6óÀdÆ&‘þ£¿èÚãùž“XŸís©¡ð^òê“¡ÞMQ̼ÂÔĉLw`2³,h\¯l7”È£eöÞ´È”²ÇR>r´&3¡2oŸ?p’)Õ³¼¬Éœ¸~'чÅU:Qâ˜Ì¤jËh¹DqAØ4ÈÊà—AìÛjHGŒÞ•Ï!ú®"/qg¨{ç{Lªè˜ÅœPîÉpÌ܆Œ×9@ð¡åzL†ÀôÂGk•¸h.¤Àd&¸“59T¸µ§ ˆ<ÆøÓ…JðÉÃQúV50¨³)ËbÒykä=‡Á‘A‚5½Õ… ŸLΔÀdpøbÐ?ÏAŒ›ªŸàÈ gé¬ê<줛Œþ‘ÁÅŽÝTÒãý`{þÉÌeCytËåÈ¥Gª[Je˜Ì ©º€!@ ,‹uϦãëJ°0 d!¥ì LfáRÓªªo*dY’j`2çr×Ó‹ïn¹6(®'Ï쌦Àúø§ºßSßsd2Ô.ð,ÌEqÂÊE,0™eô“—]ÔoŸ@š\50™…)‰6Àa ¼»œVÉÀo®¥Z¡Žun_É,ß4à Ó&¨õrñ&á?42ËõÑÉU“_Ž ²¨kg+ªÞVV‘s00 ‘ÀýYÁ=ñ}\ÉP¢MeÁí+%k#0+¼u©é04×%);‚:é3/(\«ˆX/¸ªÅ­ù9fS~Ó”|‹à†JFï‘À€K¿ B ÙRÃÐN¾h -0£ ð˜z-…àÆ¹dÈ/Æ”^+*ZUJdòΆlXéK™!ÜþL~ùeÐP>í)÷ÁË +%k¤˜Ì¹ý¹z¾°Ë‹ûàÈàÀ B:”ñºDDÕZ`2F–rêoL,6‚¨ùËÉ*sÀÛ²?Ãh¥–¬r[`2¶xæÔù_¤ £µ*ï90ƒ`{IQîE›ÚË/G©‰ZêÇ6î:ÝË/Gå…êlwÊShº“E†_¤\¸yC<#ƒ#ƒ¨Âwý(N€¬š˜ íªÝD`äÎD{r+hÉ ¿\tKý<ïжüòŽ`ÐkùpQå=¥&㤢U+ðFÂUË[[ LÆ {ñÅ;·R”ÔM^]`2NaÏ&o¼LmIÉhÉ8…=§ÛÊmè .Ú“qÞ„Wsi»ãžrªè™Áó¼SõðÕÏØÑÆohè¿ :äg~ ‚6,âÅà—Aü†”î¾ÉM^]dp@÷@Ç ®¥8Àä™#ƒâeæ.z–„#¡Î˜ŒÏ›oÁ¾xÀÊ(Ä Ž Rhv þ¿¼Hà±Á²oM´”!ˆè Ž ¢EzZ¾‚=»Š(°$Ri'82ˆÒP¼ÏxõÀ—–žð6yÁ˜Ï¶®\`Ž^ž92¸±º´Hæ¤ÐíŠÑ"ƒpuh¢O6#¥|˜Ì¬”ˆ)-Ÿà"+PÖ&s‚QxºîHn$¿È/?LTz K©6èƒàr¦ï`‰GÑX³.å%ÆUÐ]ò|Œ¤ü|Š‘ÎóFnºÉìÈ ë…´ø¸J7Þò˜Ø‘A§ä¾6šIjü•Á‘A\Vwq°}q6iµÙcwùåóê¡ê5äÕíÈ NM‚óCÖ„¶òË/ƒÂœ>o|2Ÿ.Ïü2ØFS• ö½d¬ =LæÃT…ãàeRU`ò Åî.µ(®ÀC%àÁ¤1 ÿ™ÆïàoHp`ü›ôÂîTZ§AËà—A¸1¦ÑÙ-¨@Ç+,ô‡É@ðŽ!å#ìYYoô ~$ý¬ê.jðîÊ«t˜ Ô‘©º?¢‚å3ëÑKdp ÇUe »)ô†^"ƒ mÛþ¥ù¡„öl/þ F*òzšG.o#2¸ƒ«ÛW#-tz ¹®(£ ŸMñxdpd³GçR¨ÜKâ4EÖFm¿`Êmç´N^¥{ Ú?ù[‹r“‘±×ñ †d诃`4±v81Ë$£L§¢¼_MÔ"Á‘A‡2ž­JŒ~LÎðžà—Á^ÔY宀ð,1Æþ0™‰9‡¯¦IkðË`ïäà*CrQø"}j`æñ‚9 Yäƒ%‡^gKá¼ö‚/+@¿Nn–•…k˜Ì쬺|Ý»B”ðìj¹D&s‚1Ò7TùC3¸ˆå{~˜Ì 6ªÌ5Õ œöaàô‡ÉÀªÂøß©¨k·"ϼ"Ø8t¯di6¹z—gŽ ¢ðÄøŠ®ðÌ3«¯þ0™9¨i:…Ä Ñ+èRç9Ø&=è1 E`.r¹?÷‡ÉÌñA>nH_M÷ÃdŒRDdmNy Ȣʎô0™Iõ äK *òz…Ò&/kTuYŒFŠ”Äýa2hã*·ã³âxMA`Øá½`v¥Mêg°ëpÈæÀB˜Ì¤KR‹.7Tž}«þ0o•GFÍÏÏa.ùåÈà¤&“@0t*ßý¹G! +W-¶ÑvßY}õä,žº×åÊY>ÙëFd Ÿ³¿VÕfá»<ƈ }ô-7 ‰ª—{‚#ƒ˜ô÷.}XÔ¢0µIÞW‘ÁUb2‹·è‘áE#2¸0û_] bØ©Io÷\´ ƒÞ +è#2él2Ô‰ûíþ”ñ}D7òVu”Øp÷èE‚#ƒ›0hÂ3ÁT8EÆ †2X’5.ˆv =‰mýa2󔿖Z$a_Rür‹à9t€ýlæÎI!Nô‡É@êÆ]¹=$»T“™Œ)]7óëðÛ%øepB:îëó¸ð÷‚ý”Á/ƒóªî.Bl·»$¿lÌÉq™¦„9€Ù &s‚1ö“Ê(ê:áöô‡É €äv)ãÑE?ŸCÉL4û¡#)¶žV<H¾çÀd¦_9,ízÔjŸ9͘ÌÄêÏâ’1úÝkÉcD×¥1Õe»ÜJ!?ØÀd&tšd »= ½ìÉ@$7)E\©ÞÐsЩ&CêlÉ)¿y ªFªA“?ðepAÄåçLxkÑky%›L`2«R˜Hˆô }¡1—x]LfÑÏgÿÚg“Uò΄àÀd @‡ƒºåXn¡2Ñ’õ˜Ìj,TUºKìeep‹`ž)"& «“ò î<]êÐЩ¿û·ì LfQ³u‹^®‘ÛS‹TÉ,\”Ý¥„€Y(J²}&³PâÁãFk~ ¹HR“Y×"Ñš(\Ñ–h yŒÈ ÀË]¤­ãpÍ8y’…˜ Ô½@GRCŽÖe »&³h%ª“¶Þ9L,䥘̚ ¥qÉÙ7p W'‹œ`¨øT”¸ãДëLæV¸ ´Ü7îQtñ&—¥/ÔYöÿ:a“Y¼ˆ¹''ú’h„˜aK ¸Õ¨\*;ÿLÆ9ØQ„…ÑRT_ú®_0ÐxÙù¡ÊN7¸žÁ/ƒN…«®3bŽIês£oì|nt¦‹¸„uLÌÉcìæ×éŸ{ Йɀ|ÍV~½sŠ1QG`2ŽñS9Y|îèôd¯m&ã3ZÿÚµw²àä1"ƒ$h§üf=e±Å{¾”×0É@‘¦f™¬òÌóL¥F@ìýôŽG`2v‡ ¢ÞSàÅééÉu‚#ƒ„"Œ2N%â+\`Hf;˜¼/ZlæÎ?“qÌLæÜI9<[§òŸéñ“7úñ0™u½ÙmO¡7¬þÅùÇÃd Òª­BèSó‡É,êWí)šN{òügLfqæÄ‹Œ?ÃI_J³D¡2p;žh¿íæÃd0 IЪüº»j“b4&s‚é4$Tðfh-ÏllD¦¥§¹À‚ó¥oãep6ZüHAuþŸÒ ¼Æ­Íü3+Mƒyu“9Á4â•_ é·ɜ` hOm­N’—ª¼º‡Éœ»QÇ–kʽÄ2ƒ T¿ N4I|*P]¶ÏLÍ|˜Ì FC~ï&#!¼¦œTæÞF³îûžkd½6¡4¿ÉD gÉ«‹ :ín„‡,ô»‹G¡FRçÖ²§–ïœæ¬‘AÎ<ËJÀ ä“%ƒ-2Hw#UÔ<§k¤Ü7f‹ n¬!,e ŽèmÈÛh‘AHH·õ«¾æ¹þ…ó´š“!;+ëËc¤¦\çÃdÖâYõ±ŠnìiÊèå|˜ÌB×U®°:7´›t@r>LfÁà5˜\¢›2‘1&³EuœwÎî%oãep-l™SMLžƒ¹×$)/ƒÆ9!í`LhPŸ?ùa2‹eÈÇF|ž)22&³€V`汉ç8÷HØp>L†§ç«Wݹ’¤]Þ³G0.5SjÑÚ:±\9&“Á”DžOò•o—µ˜ %‹ÜÕP£_#øœyœÉàoÿGÏ‹ï LÆy™vÅŸ}]sŠLw`2Ρ%îó5Ph+ßF`2Nï…)äÿóÁ³w,'l`2Lˆ{Ã@B'šg`2›éJ Ð6˜¬"‡5“ÙìýNíMÀCÌ¡¥¬@!´„Ø‘Á •%ž‰§,Áë~îÈ  ËŸ#Ó-NGëTÔ|˜ :@¨Ÿesî¸È¹üòË`kœ÷™& ÑÒãgðË`ƒ¯ÝÖ®úÝàLæ1±&.JýÚzBz›LÞ&ÖÃd¬a(¦åf>±åâKUÛõ0k¼Š¹Ðݯ'—ªë¬‡É` äŽ&Q>¾(¶G¿ 68¸ÊbõI›>óŒ`C¨”ŒÙ(â¶åm¼ ‚Æv Ìþõ]úÞ×Ãdð³à™G'ý¿‰‚ , ´íߥf=L تê7X1¯¥¬¡õ0S”{Š&ê L“ÓÁëa23 U#A- þí¹D×Ãd Êæh´(7žE ð‘ÖÃd¬s̈́ċÌ?MÛõ04–"®ãH4·¨òË/ƒ˜Êƒ¶Š”jγ±æV°&^TKîüÐíY±´ü2ˆ®Øà¹óC¨–ê™Á¤8N𻡠²%Å:ƒ#ƒsó®/ £óˆ4X”¤DE „ãêè¦V2ªt=ÖÃdàëmê"œÉ™eÏz˜Ì ¦¹¦š»9Qâ"é~˜ &qÓÐ2¾o 2Èâï‘Áuo]òY 6wâukDíÌ3ß–Ö²5"ƒÜÀš gAÁjd!׈ ÂbËô1ö½áWùGdú?2¸‡zïi~V#2¸‰oȨ%æ>}Øõ0[ulSœ,ÐlXŸËãz˜Œ-†N¥d Ç‰MJ^ÝËàbuQ„_·ú-å8~˜Œ­£'ßjVXP¬K+j=LÆ€gafHÍâÍg~˜ ôèì•Õ—q c Ûp=L†Ã%§Z“~ ö*xç3?LÏ€ÜÊä˨à+*X½&s‚$ niâµTމ‡Éœ`KžÝNîe-ú/ƒ¹[Á€›j-²É†E0Í®eü€póþ¿ ¢´&7Zj¤RðrW`2{Ý鱦 Ù “xiCåÉPÖFÆŸW`2ûz)Ù£~¦rß+0™ ¼n«( ¨¦È`"®+0¶ªj"Š“Û£— B`2ûúmñÄXÔ‡š¸“áPtMS›‰*¥žnŒ“á8Žïü1ÑŠ6e—`{Á­CUÎ_T$×ÃdN0Ú’U°‚qÍ•[vjÖÃd ‡‚ N¹¤cèb_Ù±l“¥ ‡žðëv¨Æî‰ÚÃd»1fÄ„ 9lì–Á-‚1µª,‹ûâ,|3ˆ©%x­Ê\”IG d3x¼àŠýyŠt‰¯.žãuö0¯”+TgC@ÀÔ†¼Áàɘ: ΧÔ,{ìa2‡-\—Ä­€ú_E*{˜ŒS-æ3ZŒ–„Òáµ‡ÉøeQ+ˆ à ±ÛAðÃdÎq ò¿ 4"¾ ’Á/ƒ˜kKô’VƒÈÉÚÃdVبq´­s;³Ÿb52HÝ&<Æz[Ë$82胂¾Z4*¶¥é˜ÕÈ S£§ ­ G/å—#ƒÎ~µ˜SàMÚÇkÕjdpW™ãy%ïíÙZµ‡Éœýx›²,гY*~@ö0o”Ô¨]bQ,ÅËà‡É`¬ãž‚}r™Edþ“9Á8úGÞM¡»ÛÃd¼ùµ1ë’AÙcÏ¡²‡É8l’SyÖçÿ\Kía2N$ð¥ÞS.Á2×óÃd¼S,uÈÎoÀ8’¯5`K;=ô²:ö0ßz¹òu…'“Q5ë‘Áë!b»ShL¼¬G ¯(Vî!0JùåÈ §]t{°ê”å«ë‘AÃõ¸K+ Æ<"Ø8{äÚIç%=¿ö0·ürdpÓÓtÂ耓SQö0™³ÍSsÚdRÚ)øÎà—A¸o ó˜ÜI¦ÏDÁÛ&JXÉóãJÜ1µ*«îa2çf\gÃs.’*•=LÆyµB;<‹“=p̸\&ãŒ8ë¹Ê-(ù‹“qâuu ª†‹*jÑìÑÛÃd|³’Qó siƒ>é2ùWM§ç?Õä1^ÏA3Ô îHଔ­àË ¹çÌ™ª¹GR™\“976@hSgÄ`"â+;˜ å(\»j J¿ £·&…+Çípš¯ ~äÐ]YŸëÿ²s!y`28– ¡7zB¥–-lL /ÊpCÊøÇ±Ú“a}Êë¢×ÀUKr¶=0™ÍA¥-SØÀ+ægpÏ&³ù«§Ü±hþÉ*±è“ÙÐ ƒš/ä"[ï ͶâÒ0âuÿcdé“9—³IÁè[àQ•.ƒë ÞlŸe ž¸n¹øÃd6 M ·æÛØ´P˜Ìæ µ¨92¸ƒ×œ5ƒÇ ´Gý#Nëä}˜ ‚@I)\¯¼ŒœøÃd64ÄáÃ#ÇD¥<œe©æ“=®&¦ríù>¤Rå—_qªÁ„J|—Nɪ@Tþ0{ž6÷´êÔÜKi)˜ ÆqE˜ŠåBW¼Š‚·?Læœ>}ªnLfŸ«>ùMä‘'ÎA!ÿûÃdÐc±C¼pÖfÛ¾Ë/¿ ’æW\&ÇO± f‰ ®þ0™SI:Ýë–àHį-ùþ0ÌÐ,eˆ)ä‚©:ûÃdஇ.ž0÷ÀºFq"[ÁÃdàg2shþ‚{$¨ˆÙ·?L²$‡Ê&s*=Kx—Á/ƒ±)}Xø3bE2ø0™Ý›v;¹×u²ze*Ê&³aèB~B'g½~‰Çþ0™ M1ôÚŠ"Û˜(ü2"C„uOXDõ‡Él.¸Ñ/iraTÀº|ƒ“AÑ2Ô3Ç/ˆ& éa2pW†Àžð Ðç!‰7—èˆ ²ïdz¦ÀŒÅI¾ºä§C±žàÃdö€ª¥él)ØS¤gå☠˜Ë P‡²…3iëøÃd mas"ƒÔļúÃdN06Æla/X×ËÝE‚_ÏÉFs7)Õ6ä[—?ðepÀ³Iö¨¤ìÃï§Øæ“Á°ÎL+Ñë¾¥*8’?LF“KÁsyìü›{^ñüa2˜Ä‚BÕ–ÂuÃ[÷¼\“Ù>{ '„²I]¨_ðÃdNðþgö ÊBÖüa2øÓfž6'Süc€ë“A÷fPP}˜¨þ0™=O©¡N¡rÏ%u~ƒ“žY×YÔd,yu+2H÷º"}+¨þ¢¬–t¯È F2Zj8Gó=¯È ÑÇÞ—N蕱/˜ ¨†è*›òë8?Ø¡ò‡Éœ`TæJ Äýw}”xýa2¹¦fž"Û„àdÖÃ&s‚Aœ0¹.5^ŽUß&³a3«vfƒÜúþá^úÃd0ø\¿s°Òò’þòË ø`94Ïnpd‹P@ýa2çäu| ‘ß„n#.é¹É"Æþ0™}¥¯·Ô¢¥òæ2ô1,‚Iœø\¥yÏÑÂõa2(püÊ”ßYâlùI ñ0æC§P,ò7²oå“¡Ç0¬îD©¦SJ¾çX®?L›ÛÕ2ÚC‹Í-²cþ0j=qP­Î‚b{È^÷0™M%JÐdx–+baì“!çÝ5¥dnµ4øeÐ)Ý—¢—, »ìÏ“Á­«$ôNÞW½wX©¾&ƒ!YKI¸oŸsÈ/¿ B%±,þ §âÚ4)‘AÎ¥mžsKÊqÝ%23¬â"±ˆÙÒ^[G¹ŽšÌwŸ Ñï}È/Gáw\v[R}›Ÿý.‘A\%ö^Jl‰ªÈ%}?L†õ›ú[¡*À\ɹfÈ/¿ brdDiùr_†ü2x6‚•FÁ¯§Iu¬Ìw`2ç<Æñ+¬¡‚1hàÈ3¿ ⊒®ÂïÐdW:9';0jƒV“ûà© €z~V;0ÒVöЉÏHjþ21™úG™zü鷈㪃&ôÙß󞲉ÉÜ`›½¼`œÝ•ãHyÚÄd „"§•º›˜Ì ]}Jp®¹}mb2 ¾ŠEícj•FòÒLÜÄd~š L»fGÁÁ˜ dh¼ ¸xâ/IÄu“a0D p‡à:¯jbîH›˜Ì ÆJßí\εÜ Ô“ÙÄdn0jœæ¿·a=:¨üËàn×V(þÀ³=/iÍ282ŒwC+~àûWàz·þ ^—*û{¸ âKËt·È ‰yó—ô“:'òÌóŒ³rÕÑo!Ѭã2'~¿<Ñ"þ0«w‹ Öyµ/~oÃ@B…¯~Áxq%£Á²ÇŒürd°U»Ó¿_v:îÉ­m÷È ©‰&ú}ÝÐÏEo#W]·_0¯¹êj¥“²tv÷_0uúïm@N&ulôI·Ü¾ Ó*hþç—2"ƒ¶ÒeåÚ-«%_݈ 6šªïü¬¬:PUä.:~Ä× GÓxf˜6î‘~_qhâû}ƒ“”ž7 ="ƒ”r;›Ð nÁ1!옿àNÏ©|…s.‡æˆ R·æ™ìhïƒÀ#Á‘ÁN‚œç/Cuº¤¹2ƒ#ƒwrÅóKYçu⌼ÁØr§ìf,å8ž‘A–áSN+l8ÉØ×ž‘Av`ò%‚¡»EJe¦{FoyØ2ÝçìFÅ"•=û/¶;O«¹9” 2§{Ž_0*¾•_ T¨Y$ ¹çü£+kňòYÍÈ ‡uüwLàì¦Xt“U7#ƒ£õ«ª•g7Õƒ›|)ÓÁ)•WW1Zúi7ì¹Á[ׯü£ý‡¼´WdpP\ey¦BDåÒ½ê/Øo£ù÷ ®Fd\ õË †QÀ¹Îƒ¾q@2/¼{ý2a!ÀY¿i@¹i×¼§ìõË É_ñTÜίýT¹öúeÐiŸ ÉÎVP>"{E'x.(.ò8Æ…ôoG1#ÆýïôNrªìüËÁ¬GÇï—Çêì<ê«‹ ^ߤ½òKðGx[dD |u¨ îi•`È¶È ˆ@¸ãæz¦pó^9V°-2H¯TàÇy/èˆOͶÈàBºæï g ëPô·EÍøzýœƒ†I¼nÛüûU^ÊspnjåµÈà¢^÷69âbRšý‚iŸI¡Xõ¢382¸½%ómp[Ìáï_°_]ˆß{vz­èë‘Ax)a²<‹mÐÁÁ½Ì·á‘ÁÅÞ¯”ñ3w´_pdð‡Lÿ*tt· öµ=2ÁîÒmÈ9¸@5eéí‘A#_JŽ64À¿‚íÛç/¸^A²ß{6(œªSÞFdÐHœY1šÑ–)_ŠÛ/¸^ãmfq‚lS~92È)¸)æiE|#ß3ÔÑ"¸QÅxËq<¨'ó»  ”‹`ZãJº;1øàdpdpOŽ2äö…}‘ÁM4ªw9ÚUô›GiR9Ø<4'ãî¡òû+»›§¯ˆó×nÄö Æ«ëùË›çüNÍ`.7¸’=Ø«^¥Ü¥žï90™JµÑ ÙTº©ú=‚q·êÖäÐtü£:%xü‚ÇuûÝ­°9àÊÕ2xF0'¿e=·; Óz¾çÀd ‹3EОÉ?p´\üÉÔre_Öo“1Jÿ—. )0™J§+œÅùÊü:ìf¿`,QÙ'Å=Ní^"ÎøÝv~cÊuýn'ø—AcÅ'w+Ná’Á¿ b2ý”ì€:ináò¿ r¦æ·6Ö”Ö ^Ssm&ƒAmR1NhᲓÁóLr¨ìu„q epdm¤SK.94©u?Mž92XYk,!&„‡!}’ )0P—ñêr¯ªJ±;yŒÈ §H¦üç.bÜÌ380¸MùÈ/¥R˜JTNpý¯ë…Uî@C?i$'82xÑžò9»IÞ“t&S!1ޱf)N&·lYHý—ÁÍV¿I ±‹«éØ Ž ^W´–ÐÐ2Npd°…YJVÆ/¥Kpd£¤»He>HBØSž92È^à°|æv_s \ƒvó &¬"%ñɬ²6“LJb¹M\)ˤAB)‚!é3z®ºrM_ÒX Bk/¸N5'lnÛgòË‘ÁNñ2\ôìK-ŒOpdðÞºZ‘н¸PÐÁè¤o‹_^Ì¿ó_ÌW˜ õæ9¥÷+!Œ³Ò.[n`2TÆÂÌv>ó©@ ± I L†"L”¾NôÎ.'Ź6“!é‰ÂÉyÐóÛÉA'\~Áx@“ë?>o´ó™“aoÍQ9è' p僿 îr½Ýó ‡°´Nð/ƒÁÇÿšž1ç ʯ;0žgßëÒ¹Aáƒoy&SÉ'ZU>+*å»ipdp\'Š\ugUáìÎé³Då æ}"ÛçæÑY*g°ÿ‚éi¢·c”^]d ¯Sଅa`ùÉÔAÚêçv|åVþÉÔXlNA¨Ì! ºå™“95;bÏÂ9†t¹ê“–Gmsîh!”Á‘AÚg¡â¨—‚*0™JS­Ñó¦ ' ¶SþÀõ ~r²¿ šEy’[A`2çdãíQªÜÉm£ŒÜd“êç,{ÚdO70wGQ¸pì+ÍGX“ &ÌÀ¦ôœ‹ž``2•´òö»["°“#»å´²_q´“ÇñàýÈo00™óqV]Ï<4§©9ò Ž R^bÔ)Xg&u‰&S/ÌRq­0güÉ[0xý‚Ç¥åq ã8q 9Á‘Á|Æø,ƒýìל-2ØÁú~VÉ€² ºa®ºp0W>F`2•¬ÏnJ[>F`2•* S®>*Åuå L¦Ô×ÏŠ4|ü£|fÿeGpï?Ø™µ†«ÉÊÏ*0™sÜõ;jöË ¡øªUn`2õŽé9H™¹mR&S‰öAÕNþ;ûÛ/¯n.­ x¯-òF‰ö´%íàJg—!×¥ÀdNaÈ".Þs…­'ª7û¿£&s‚ñáÏ,¶!×u™o#0™JÖì|§•‘ô8$)ÉPuį|u•o¨ïLJ`2'ø7Òò›c/š­Hð/ƒ(¦md€&8å„Ý¿ ó  TK|VrL&S àtÁ  3È­ 3˜ ÍRh·ï¹ùEóM‚ýüD¹³„Xœë•s00˜?_¢f–åªÉþž¹&SZµHÙC—íÁ\c³ú’»¼Ûgò?¼UO_¿+^¯P#m%a–˜ <¥®q¶Ôø¬zâ50™Ê û-•̹Ý;¿aù#ƒ~écYœ"§CYËàÈà¦EsÿÖÔX_Ž bX—=ö¬¾(úZ¦¼:ÿûu ÉN¬%‡,NpdÜ«²’Í^¤ÿ0xÁc»vÒW]i÷ÎàÈ Ö2ùH¿Ïjr²Ñ~ðì Ž n~÷&‹ÿÞ­v—àþ ž·­U¾ÎÔß8Á㌜òÁBÌ=²|?L†D/Z^B±Ò²Ss‚_I+(½È—B7ß[žÙ~Á4 у¾¡8iCÞ³GðUš p;ÀêžÁ;‚q©™®ÈXÂhã˜Lc•:Ü£=ör ®|Ù‚RoàF¿ò´ªÉ4BCkt)/©ØWþÉ4HØžŠQ€…˜tƒ ŒÜÖªTÇiÕ+¨É4Ž\w¹[½ËúÌ‘ÁZ©a+èå ¸·—ürd°Ò¸¤|.bœÅÛòê"ƒÔišEcTnUטL«÷ž!Œ…³q5²€ÌD_£`Yü°f»+_]`2Ð@Ûݤ#Ö9¸'ûF`2ÈÉT\ÔêDO%wþ˜Ì æK•}£s"E2Oðø/]ü'ÝŽÞªbæ50™F…ª¾²ì9w茄gk`2»—»Û·!»h`2Üœ:õ ŸJœ¿&Ó(v?…Íâ…6ˆºø“i¨¬w¢Ð`çìSºœÀt0‚¥¥ªô¸"ìþG‰öhºç¤ñv6ôOpd3¸½ À^hÊž3é0lüïKÅʃÞi[ä—#ƒj²óO ýfSüË Õ‡ô»½“B:ä—d$ #£[f382H'乚”•.Á‘A*^äìÞ€Õf–j50™¼¯ ë%>›Pˆ•¿˜LcºæVÈÂQ^Z^Äj`2 ô#yÏ84Á…°Ôt:Á‘Aè£p4G`¹t‰&ƒÙWvms+ØÔr´&C&ZU¹ž9f+o@50™F´gÌ%UQ@ÊåŒ ê $œý`hò‘ÁÁÞïr©G*Ûä—ýŒ%Ú²®3ÔñXºòË‘Ajô&I %D§“…¼çÀdGÛçÌt6ÉN9:Ÿé ®¿`»[\K¡£ˆæŽN£&Ó¨€[„ú)ÜÍ%®É4\,·^ÄÚÙÆéÚ“ŸU`2>³O­7(,»h`22FJåÚøæÒ Áã¼®üæo¯;g¿+±íGbÑy›€,ŽŒœàÈࢸŠ8 á’gŽ ®«Oár´9®Ò9}v‚ý<4ƒâ稚LîVÉœ`*MLûT-N“iœ‰gÁ”e,þÀdN0µ s‰V–^åÐ L掚Y•/er,a$èT“Á<þmÈçqÌ¥^Ä“iF%°ÁçþDSœ!¿4±&tÊSÒs&=[Q50™³¥ámÈ7xŽ/´t¯ L¦aŒ‘†G¿Å?ïü`‚!50¸`ŸÏµa‹›LM̼&Ó,Ür‡æ9è‰hå7˜L»-ha)òÆÑ­ÊàÈ ‘(`5ìlÿ¹i&ÓÈÀ)rL`Ï,UA`2˜ýGS@zÇ‹f…Ò¦¬É4眦l¹ðW/L¾ÁÀdÚ…Y¤æoжg‡=ƒ×/Ýÿ­'¬?˜ ¶_0köþÃd ƒ ·JþG}ð"&A9ó&d˜Lóù´¯ò8æÔ¤gqÒ“ƒ“2ž¹žj~žI¿àú nš”EW¼ºÜŸ[`2í§îþÛ üŽR¸ürdÜž)|$¢#¸ý× Ž ÂoíŒ\¢˜ Âj’ǘ¿`òùebs6>CNpdwšbùê¦7§ õÊ`û“F"÷”s!æ:ä—ýŒº.ðºÿÎ&Ó)WXÆàÈ I5àÇå|J]v–ñËÉP醘¹×‘ÃPj¶V[`2ü¸Wáßut ÍžÁíìoËã¸aÂ(…\Npd¸˜z³­-ñ2Øiý\¤åG‡:¶¶3xF0.bkI£y ˆ^ œÕ“9Ÿ*îV#ƒî7$f°E°Q‚P°‚6Qœ¸ËÛð_0Åîd‰Â[çS¸¶Àd:íAÚDm§ÆX”ŘL‡\Eˆó"UÀóënɰ‘N{½_ëåO»·F•:eçŸônB}iÉôÊòp )!ìºù6“¡áôgná~޼¶ Ž Â›r/¡E5Üï™— Ž r+Û¬¦Ì)Zǹ6“9Áàô ­7€0—6åmDÙܮҴ=Ç-mn»d‰&ÓInMŒñîì¼~ÁýQþèÁ%¶-Çq`2Ô!¸Féí‘ÞÃ Ž :&¿­å7ˆÿÍ %82èT/[zR”Rêa´ÀdúL“Ê|ãîPN‚#ƒNol_ÿá$½ÎY×µÜ~Á$¥ËB‚› X$™ÁýË ®;cè¡i¸ç¬d϶Àd:é :BU£ñi/r‚ç/xsþ23X+Òäú˜ S\4󤽤ÊèA¥-‚CúúWBl EN“ Àw8 §|½0ú/xÿ‚M'Œ0À>®NÐo‰öÀd:oô®SØçÊÐI°Ïàú †èžT¹ç;¡|}^—z`2>Á7˜GÛ¹IÑ­ ©\=0Œˆ 8™ür¬@˜Õ=0™ÁKºÖÏÕš¶-ƒgã³È©(ÔëŸÈ¸"˜p” ñçÓæÉaòö ÆÛˆ?ðü£1QOýx öö¥#T 4U0å—÷/xé{†ÀH#mEÞF`2ƒÀBÕúyrÜtKº“´™2#Æ¿ ôà_ÙâÈ¢s(]ÜEOð/ƒœ¡’3Å&ÇdŠÉ/GIœÈ¡!ðrÁp4JG©5\¥)Ð`ûpjdIw`2ƒ—ôñ947Ù—C~92Xéý;2øì㨒XèÉPRž½Q'3/¼=0.W(ë÷žóCêá÷u÷Àd^èØ×9S =2äºÔ“š/rh¶6¸ïä¡Ù“Á½‚"I™Aˆð¹— Lf°ûßänÅY”—ùÁ&3xï]2Xx7³"Ï<Á[ǾÀX€AÌùÀsm&ƒ:LǾ&}j0±Óä—íü€¬ λ¥ßÝ“š‚}aØd}F¨z`2ƒŠ{'4tz|…ÒõèÉ@_”’ò¹oÀ¥ëXþ‚#ƒ}Výq¦ÀOH™Õ=0™AÇjFÙæX‚ŒÆŸàþ v}æ³ê׳Ì[õÀdFç¡ùáÉ@”Î\>ØÀdD{éÐÐÚì[ÉV˜Ì e•W7 ¦1&382xï§ Â' 28288¶¥_w'.ê]þÀÈàwtK?Uù0z`2'ؾÓg®€6‹ìüÉ H~žU#›y¡NÍ2¾&3Æu4ÍÈd˪—;²ös!&3¨w;eGêÕT¬ãGW\²³Ý€©ý-=͘ ‚qw”‰ Üσeo¢&3ÉtÚhÞóVC^]dãKJµ“Sõdpd9B…!‹üºgIÜ“ìþw—"°U­u© “ìðõ¢4’…-täH`Lfp°#_Žã+whò‘Á‹/ YúìˆÔ”µ˜Ì`Û} %㎯×4w1èL#ÊÄrI`¿.“˜Ì€UÇ69»ÇnT É醘Ì0T¹C„‰Î[%ÖÐå—ý¼uÖ£Ó“’²×&s§!m‰ ȤÐ’}#0™:Ýg‰äoIü Ž ^°yJ¨Â· Þˤ`Š ^‡Äø´Ý{`2ƒ£9eðyt(öüR“N!)ÑûšœâþYl282xÛ2=©\ÔíÁD®Àd¯Òúžý‡£Rö&°†T„­…ØòY&3HþWÙ˜0õ»£ý‚÷/x\¢P6Ðy<·Þü¬“ÍòŠ‘æ„‘Ó“KÞF`2Ø]¯Nmp•ØKÎîÀdÆ¥C~&mAÕ)}KpÏ`¬g!xW¸ìÉŒM¥Z™òÃe •|ƒÉœK0 WŸ\ ªä\uɰ*35À¾ÈÙîeLf°á³~{Ý- wf!ÿ÷ÀdÆf½!ex³ô¹‘¤D9jV´ëa]…"_J`2§Fh ‚54>ßs`2'"c7é Wð]îƒÉÌ;"&žÓ)|ôR˜Ì\-S$Ô½^«ù6“¡ÔîØ˜Ìld ‰p§öpyÌ_LfÒVhM¹ðHÉ+u|&3)ÜŠ*Äò{¨ÙŠÉœ`»·ÛœÖéø¤å7“™Íê7)Í€mÉL’ÿ‹Êœ²ÞpŸõ—AÒƒõ"ú«=ƒ#ƒlaw‘[mñ”ˆëLfvŠ‘ÊÖÎâhŸRm&sn0M'УgÙ´²FÉðºSÚªª‰z‡g3ÝÉLvÒuÖã\ÈÙNvÖLföi×v9I¿\ªGyý79Ûÿ×××e]’ã¸=÷.r'ôKiÿ³Š"nÎŒ}ü`W±oÅTHkRX–h`2$v`7ÈU·ÑÔ9 ˜ÌàÍÒ±¯IUÉô0:Áó¯ß·qîà0ð2ùº“¤ú+%ã3ê… Ÿ¿&3pÇ¡ Цìï'à~Áæƒþ)á³/80™ÿ'NêŸv0 !Á‘AÂ$Sùu‰kœàÈ )®9ùb1G ;[Q=0™ŒzCèÁ(( ”T˜Ì¤ëŒ.$jªöÄ z`2ƒ÷îüÏÚøHß Ñ.Õ—½ RáJÇ7Ο&œ|°ÉL6ǧ”ñç–C'eÙE“™;¢2Är†R¸&3ÙDúó° cÈÙ˜Ìä…·È1± Œ™ÇüR“™D¦§v=€~¢Ò“àñ‚±×Ù’ÛÃϘÌ,¤ëüÌ¡]±D|¦&ƒ`n€t µäJÂY=0™Yxv«°gBì7¥b Lfrœˆ+D©%²×&3Ëàà]û‘ˆ±)˘Ì,“„*U£®Z6z`2“#}k _q‚‘+ìÉL^¥Ï*‰‘†"o#0t-ð/äR3±Á|B1êÉÌʳ»ÿ0$ÙA•Ï*08 óh?Íøouyö‚‡òù+e¬iòœéLæÔSEýS(eyjµ¢wØÀd& ÞµJCÉÃôVÝLfzzý/F£á¬ÌG`2ØØh{]¥ ßÈâd&s~…hYÌóךz€‚Êwƒõ‘´Ãkn!‘æ˜Ìä¶Èf\›®?äм’j@€‡·þ‘ÁÆ«Ãú„‘E½MŒÀd&ì~CÎ6ˆaC¡ÀdpÓÿu ±söpÀ[‚#ƒdèt]%›¯.0™I¶f°;¡Vø#0™‰]l‰0‘ážœÅÉÌÎ+š¨E×ø¡$.Ü^0}f”ÒÜ)$ž„˜Ììöc¶Òi—S&æF`2³S>Hdš¤Íù‚#ƒã[éê%D§ºŽd00™9(-ïZøÅþürdp°o¥£Ä˜žÂ œG‰05Ádà/œ?ú˜Ì$ [}=ÎÍÈ–0ËLfÚU»ÿ˜Ô\¢4“™L%áe¢¸ÿç{Lfr0±˜ŠEÓz¦%ð;“9Á`YHe>ZŶ"̘ >ü_KPûÎöLæ³ØyŠÕI \òÌ‘AgFËÎ?iͳSù]ܼÝo-G\ûtªfGyy´•sš¸™q®-÷ºÀd&ÚB¤GÃhR&¶˜Ì¤]¤þ°yĘGÛLæ\4XgÙ³ óµäÝj&ö‘ŽBà„5 àÈ™2“9÷]|Ý[ …ÀqÉÞ˜Œ[{Up¦«Ô›þó³•õ QjwÂxÁ‘A£©£ðE eGl_pdÐ(ý§œÀÉ9¢¥Á‘ÁõÕ_Îög)A/G`2'\ÑÀ1›ìÝ$?“¡”Û7þ¤Üú.``2“}Ø)g úŽÅ͇^p{Á8&Šj†ÀŠ©|&Ï\ļ²ÀÜWšÑ282¸H§”B±±Ø¹Ìõ˜Ì\ëÇ̰KÑLj n²_WU'8\¥Ó´÷G¹±Me¢6žS_]dp‡ µ°YØ"ÉÙÿ˜ :Zʺ?Ç1gÄVÉZt&3e¬³KgÇèTaÍàÈàGÓÔqå¨Û§¿|3HüÿüKuX`ç²ÉÙ˜ é`ÔaÍi‡A‚&ƒÇ Æ¡W¤„€$Mr‰&cTxmâåW+,Œ×’)0û(·"zØæH¡òÌ+‚‘òŸ1‡­>#0™¼}ü"‰š´Z©g>“Æ8N+A\Ye|&c…GÛûå iÖ‚ŠTÉXq¢’©²êç•ÐÐLÆ oŠr£?§1 %“˜Œ«î;*.T˜Ÿ•néLÆh¯§\ˆíª!l`2Æ:YÌS¹bô2/5#0+”À­Òám)ÑÉ-z’Yí3“ÍR=82H…˜:…³mçߘŒUº˜¨¤†@VÌÇLÆØyü–ê‹¢\/ˆÃEð ¿î§~†ßŠŒ#Àd¬R±MnÇДŸ~oÁ‘Ab-¹wCÍ©ÿ´¢F`2î8­¢‚Ð ˜ ègR“1^jLL!§[™yi&sªeVŒêùRá ºå8LÆÁ ó?xŒmÊÛØ/ØèŠ*ÄcHŸ˜ÈÚŒÀd¨S»u:˜³ÕLÆ5M•[ˆC •k&s‚)’)B[Õ¿îd)Àd¬³¡/j$d¨Å<ºå̉™ÈžÙ…çÛLÆà1&nœ ¯œƒÉX§’اìY”jE+óÀdœ}ÖTbñÔÖØßå"˜ ” PIõµ Ã§š{#0b*{øõ‘ïÄdF`2FzB²g©îî7—LJ`2 Á©Gb Pæ!¯.0£l²” x_w àw&s‚›jtÞÁ+èòË‘AýC *Œ–âL‘›f`2FÏð=UC²“Ò‘ýÁ˜ÌÉßRa|vÒÑ'èR}&c“m÷ª¤G(°QˆÉù>B /³ŠWáLæ7š\ˆè:&S«30›ËÝ<1ñ m„•Á‘Aös‹Œ×´xÁõ/Ç®’8Q 1™Á‘A:ŒU)\'@H´ú¯>ÿ÷ù[[‚Ç ªH±\½Jwi&cF+ UBhtFüò8žÉ˜QËB®x°r«3áÙ˜ÌÙMåëa—3I™[’”È YQs ô%³‘1“9×ÿÀ mlPV2)Éç4‹¿œ°Xr•žÉ/V•Y {y¸Bepdp *5NCð6Ëàþ‚©è#:®ÕE§€Qg`2˜ôü?§+ ¶LJ`2¶ V+ ƒ³ªÀ LÆØ]Ò Î‰¹O¨‰30Ü¥(¥ã8&$?30™<#ÈćŽDa&sts1¤$ÄžK:¤òóÕ&ã Ç-xÝê¤ þG]ˆE±Û—‹ÜSf`2~ß5ÕÜœ™û§˜ÌúBö »ÿ`‰}2^7“Y¼ há âwæq&³8{´ÅöâH•s¼"˜¨ø<ˆ»M× ¾<ïb*{vpXqÓOû&Ãn°è™£­e•þ›É,@?Šô ð ùåÁnÕOÓu[r/g`2‹ÌŽª‹°ÅÅO#2H>¾‰Äb7KëØ¬œà”áÙQx7ûd¯ LfœkªK|.–ö»×&C 6Qð n®LP`2‹•ù…+ð ¸øå1ö ^î”÷6meœ&³ØAbë¹ñ–ýêò‚Ë ^ªx •ý6œÉœ’öG”sš0ð‚!`GGÛe¯³Í’Sˆ@30™‰ñŸWéäMÓ· Ž 62®>9S6®Ñå—#ƒ˜`ÿeî•Jm Ž ²Ý0eVº•Aû”·¤DLWÜ„ãþ¦üò~Á$¥jYÕ›œGp`2 ˆø^VƒgÛ~Ú:30™E,v¨{ÝÇÏrK%˜Ìê6”Õ AÚU o&³8Ý«„X¨­~? ±30:ô~*‡ÕŒ6â%ÉÒ30™å:Ò:S3*™ÄEg`2‹?[Jµs)ÓOHb30™5°Ö§8îµ >· ^/«N<@wá S—)0™åjÖò"»<:ò1“h˜²³Ð;.ÞòËo00™E*¥&bZ£¡™¯.0™ÅÂõS©4¿MˆÎ L³¿¼¯Z|û“Ř̚ëGÄ „lE´j&³ÜêYôráˆ;~æ»g`2‹:'ý]—*þ@,Ñ)_w`2‹ê ªKlÐXGdm&BÒÁò6"ƒ6~ÔƒAz¤…nŒÉ RÃ1!FÝ»RÆ&sÞžãÇ”2M]Ös`2‹•ÈgªmH“T1¤›É»„QÙ'b ¥üEa¨f`2'˜ŒX€@múÌãsÖY…¶Û¬ç« LfQ£÷Ó1™ÂŠqËö˜Ì"ÀÞÕ1Äx4–„:g`2kí©aT Ì=ښɬÍ"N4ÊPÚ ÙyáÉ,øÊ6\¸œýž°É,ìú̧ò$£,ûV30jÏcÆA:¼•m\“àÈà¦Pºô%æ™$Á7ƒ.?>@6\Ò›ÉP${÷®lðZÿ©ù“ñ>jÓãß%xž™ÁÀd6É©\:®orO LÆÇ\š ³@”æ&ϼ#x/¥rçGñyN‰ü“98«©r'9®=ñç˜Ìæô˜šªŸ â’®WÀd6)œ}­»2÷òÕ&³ í$ͯ];mÍÀdঽ:)'2dc LfsòE9T'£(¶-¹j30™];Í)Úã™÷M™&qêœÉ€Oî‚ë9ÌB2ø–J&0\þ¨I';'–T¹Éø oI±}NÌb[VŒ˜Ì9;h­+„IWu×µÀd6GNôm4üÐÔWGÉÛêŠ@å } Ž ^}¾¦C÷Xý¢=kɀꉽNnÇ艺eì Ž 6RæÔ½Ž±OF{,0™SÂ5"]‚?s2q$¾aÉ€‹â2x‰o= »¨&ƒMŸ•œ)JÚð›ÊàÈ`o?ú¢l€r˜%)F˜Ì&–«* jë‡gÉlê|ûS{k :IÛÝ“ÁÔ%n2­CŽëÙý{GY‹NÑÀ,†ä—û 6åªÁv%„I±mÉÚÀ&!^Œ#a/R`2›JWü¹L|HSÖs`2Û5?")pŃ‘%Ä{øµÀd6y2] Ö$v6ä1"ƒôߪ*æOo»ŸÏ*0™M¢)8?tj8ý‘o#0™íŠ &cÁWREÓ ß`N¾|F?áUä1"ƒDy«ÊŽùБš˜ÌžÜŒr²` u÷/W LÆIëøñ¢%J‘_Ž Nw&ÉV/?6µ˜Ìfݲ¤æ§pÖs&%0Œ;‚p&§•-Ó”W·_ðVp$ ŸØY`2ç_\Ê[:gÑfkæD³&³‰g™t=pÈPÊ2“˜Ì&gDu/1E‚_’˜ .QøRԯ͕Ääƒ L6€,ªZ)Q1)á, LfDýdûBÕŽi÷„†,0˜}þª&b²¾~U€_ L„jHÚ?µÔfpdªáUØ,DUÉ6È_Ž n ‰‹i…ŒÇ^p`22þeà€CþiþÉp`HÒ élèªÑ÷ôGAù¡‘TŽÅ¡jÎàÈ qÑ$N,>Ö…ù&CZâÙ뺊°áòhMþ@Ï °cÂ$"ÖáþÝMÖÆÅdð©Q3D±õÁENÃ^0'M}j&aGùåuƒ9ÑüI‡UϯP€]L†ªIØ‘9á Љ|1™Bø­Šôø±d…°‹ÉK¤’œá©K½q1`štº×Yi(ëÀ 9ƒÛ Æ^'ˆë‚{‡— /¸GðüWÛÎ[çŠocD '„ÄÙ°u6ÞG–ñ6"ƒ¼ÏM±›44ð1z!¤W‡}ª!I>ñõ°¬´Ò¦æŽqñ–·$ÆØ…µöøgÔfd°q+  =ûE±dõµtâûãÉe³¾`vuv‰4’ª¿d¾Š‡æ!±×%IÌfdÌJ¨!©*˜)ÛŒ Ò¿{-íiÒöC?ؤCï–oÎ,žË}cFéÛ3ÿ¨“@›Œ×ÙŒ ²g«ÚYXç™®328¸o”'‹ñýè?›}/˜¶BM™N.m˜oÃ"ƒ“[AS"$®Î3çµÈ §)»ö4 ÛB3qQ³È ɯ]þÀJçÙ"Bâf‘Á‰Zrè¼dm~,~ÌÆ &‡JΔ³õ“Ä o#2hìâÉ98ñÖ1 ”ïÙ"ƒÄÛ†ÔÏ@³¦»þ¼àÈ §)?é[åë®Ê3Gøó±/>³ ªf+2h›1%jv좺DWyÁSú¢Š¨%Àn+2ÈJFÍÍq½[­ÈàêM{ô”ÜÇÆ*º¶"ƒ‹-?í Lžý"Ðgk¼àíÔ•·#µé^$òË‘A–‡M˜{ $´…ÊàÈ qú.lpL6b(é”¶"ƒÊTÐ ’ÄxASÞFdíàT‹šð†‡aè”%º#ƒ$—ªÞWÎÍ[B—¼~{Ç yÐ"ÏÁ‹Éà¶ßæ8t¨Ö%Ã.&S°õÿ6ÇW@Ä‹Ä.&S ýa·©£ÓGžyev1™Rx9R%±s €fJ‘ËãÅdÀÕýT‡ Å Ô-ë–÷|1“ÿ,³x@Q‘AyæÁ¸[etžË#”`Lpìb2žÿôèÑ©†¿Ì{Œu1™Là·«¬:If_¶°×ÅdðÈ]MÕó/ÀY‚¬¯¾à#ð ]¼ž—šõE«û& ÿÊ”¸ëÈ3G É4!¶;‹½.;ë‹ VãDs:àl—Åùn-ËàÈ :Mú)†Ê÷ yŒÈ ôR1/cmuåMs}‘ÁæZÊ)U;Ǿ&Á‘ÁNùù­ª¶ØNx>F‰ ’·U„zöOg Ž Rü·+È:íRen•Èàð]Szmc ó¾4¸½`:Ý mrA?]¼U"ƒÃM3?÷ûV/0‰ôè!W‡)’,¶W‰ ²˜‚å~|?pØÉàÈ _4›€N…[®´uV‰ Žý#ä2¸ÐBÊ1™U"ƒÄ7²§9Ðv¦#NC«~/˜zŒEÜ µk$ݵ¼`ü¢s‚‘íú3ë±jdprx6~ùÏú "¦al"W]m/ø• ÍkT2òÌ‘Az htuÖ+­Ë3GÉVÃéY ž/ØT„ŠÇ$Xnù#ƒÀùäêqòO½\}æÈ ›gjO³’ÖÙºürd’rEÀj^±êò—[d´è) ýEëú²e=_L¦T íý4Œp³2·ô~Á5ƒQ‹nõL$@6ó‹ÉœµK2ƒàHõÔ…|~ îLþ…ž°ÅSçz¾˜ øøøÊ\ä ¦€üó›öS°?Cˆ·4 ¶¦o©(ž»ÿ€ˆDÞ&ÖÅdyŒÈ h ?㢤;dSÁ‘ÁÅwWÔПCí˜ EJ¡­z‰ Ïp­=ê˜LÝô‡•*ã)Ê÷Ü´œº™Ã¼JÃh&S÷•ÔT14S„5´“á’ù1ŽØñßÊÇL¦}(N–hÁx¼~äƒV`2Ö: ub8 d°œ"YÉ´oü3ó¥l¨Eåíx&Ó)ÕæÀz²ø“i„WU=˜ÒÂG–_¾lîT/~špsÀ6UšW`2 yÅë”wqsÉR-0™Ö@ŲO•7m3’¢¿“im¸ƒWî0z-RÉ&Ó:ñ 5²ÜÐkýZÉ4ªŸ yÏ }*4âs=&ÓX$ÒΙ‚¡À-îÏ+0™6|zL†,`ñƒã\ž928øÓ²×5d?£+0™6Ã3<‘ƒ\“’80™FQî5trœW—*ë908êüq…Ààž0~W`2RîŸ'@?iÊzLæÔ¨]À=^ ¬H‹|°É¸ÅOS /œ˜$›gp}ÁCfjþ`‰ByÊV`2"Æö´î!CÝÉcì¯S³“i”<ÒYûЉ_=G¨V`2 cÄ‚ö,@pÀl…K¼“qRyªŽ|°ØzBC‡ÁÁhÄvÙ‘zwút‘W·"èe—oðÔ hùÉÜ L¬råóèî÷dÌ|&Çt”=z2b2‰¬ÀdzÙëWx“¸Ê˜ Lv½ï”_wÇ…B<ÇW`2¶ž­ýxEQ ‘í˜ ÔQUxž‰m‚)µh`2žÄ'Z»è§—šÀd €¤4±˜Ðø•®ô LåNãòCÉÀ•ª 00iØ^ €Üs“ Lè¹*—¢SS¼®{_ÊL¦SFºK©†¹F|‡ ,ìÀd:¿ÁúÀ}>X HðóËàÈ •9º@0TL“pÖL‰G©6 \X03ö˜Œ wa³ cÛv›êo{!|¿ýˆ‹böIjÑ‹É xªº;©V+²™_Læb±í•j˜íégÏàuƒK»9r’¶‰?쾘LE/ µ¨iÁ­ñ2øb2 ÿ¿³KÝq½Ü“wsÿZƒ\C.“aoÛÝ3b¯;ƒ;KðÍ`%5‰m§ Â8-J½L÷Åd¨‹½®¼KMót/©d.&S)^§Œ·D;Ä¿ñË™”‹Éœ`j@ ‡ªMìXx|3ØjëZo¬¿7RìùöÅdNp¿>º±žñ¿F›²ä¾q1tŠò‘&mnÏYÏ“©.ÆßÅwéûÃÙûÆÅdÎ)8>•Mù±m/ÇÄÅdN0ÈGùËó/Ððù…Ø“ÁBg?ÕË"`²ó_L¦º{šURÁæÏÎ^‘A£ÝäH|L·õCâÝ+2¸8è¤*Fµ€5¤«nÙ Þêè4h|”8oôûb2çÓ¤qŸ0Ø1°ŠÆÕ’à›Áî]é®òncÒT=3x1™êc OèTp˜G•KüÙ/“9Kà£þÆVØל)7ú‹ÉÔAZÔSlûƒ¯›S45¹Äûb2»™ÜÆ7ˆñüö¸ûb2•nkœg}Œx?ÿ8î‹ÉTmÁCP p±oˆ]ξ˜Ì ¦t¶ˆc¬#TM~ùfp'Òv‡ïˆ²D/&;…ê²èYBpö¿H q1™:íYYÉ̳ýa}%>%¶B•ØEÏ?:7]¢+ê:Ün°QædU€ÇÂÜ1›ÕƒoÛÁÙ¦4HÒIÇj°·n0ñºì[úÝvþÀõJ]7˜×ÿ­Î±œXðeðˆ`5¿„: p,îí=ÿÀ›A4p´)@}$êwTyuÁ”Žºîü#L>5‡:ß/ß n®º©µ(dôaë9ó—o¡ƒªgJ½ÁÞÄr…E0Y¹:aT‰í7‘;ê þÇÖsBx4%\¡ Áìþ‹ñß·@:–Å ¾Üÿ¸^¨€zŸ3ÒÅdê&2¤|îVÓírÞz†áâ Þ(^»áÏÂìçEL‚=ƒ¸Wÿ—·kŽB~97™‹É4¨Ijº gá8Ï©¨|38(’™ÜY¢çµWùÁ^LM¼ÎQÙ·êXm@W-—èÅdN°q¯kïžR+í Óòß rzywYüÚ,5 Þ'øfp‚ùþ%õ7Íú+‡u‚o§¹QC–ÄçæÁ‘ï*q3®,îÝ YœçÂõ¿¼ÉÄs+¸Ì¢Á…½ Ks ß î:–e+€ÇhÏ?ðb2¦¶XjEÚpú,÷‹É@ƒˆŠíõõ¡¹‡_yÏ“é`îi£ÙNq² ²¨ éb2gûûÙùqk+ó«éãËàyƒíÇDï¾”SÄÀIù{ýÅd:Îc =‰ÆO ê#3x1™ÞJsÜ„î16†Ó.?Ø‹É@ é¶ †”<‡»ò„½˜ :TC¤7QOÁ„­ äŽt1x±!ƒ’î¹Ü`¦Ì ¾'¨‘6EýààÅdŒspföœ•‚y¦\L¦sÓ8‡¬ !bM~så{1¨sbND?ÞŠÊÎõ|1(Èñ»ÞBBïŒZ¹™_L¦SÎ\”ì/e ñÉæ–{1Ìv©¾àŸÒ)%ª‹ ¾ry<_7Ý®ñIdº/&ã659+}6ÆI:ÌÚ².&3;õ§¹Ì|q²±SÃÏÁ‹ÉÌNŸYå>XÈÒ$ƒoÏz£˜r.QžGiTÌà›Á9ð)—/éîgUÄ.ïùb2@Ìy#Ìc¢’oõÔá|3øÏ'«Û»Y|3¿^llbdy*Üqånu1(îãÆÞ…@·›u™Á‹É ªÒòóF5õÐd3¿˜ †š°#ÕÜr¡÷,^¾”‹Éòå\³| P¢1 ™ÁžÁóÁÙ‹+j$6}?š7xÝ`*—ö7€s6ÆÿÈŠœÝ“±AßøTPfŽ: ¨Güåb2 þÓ ;ÇùE¢ü{ Ö”Š1V\>1–\01=ØX\´CÎôy½‘¶q'Ø3h‹_wW ¶|3¸à Ý¥æâº®fò‚o!Õˆžæ~»hƒH:ÖÖÌgö .4þ±Éä…p`ÿ)\ËÅdÖ÷뙈ÃréKÍ`Ï %Æ…‡dtû*¹DËÅdNÙôÓ"VPh#^ßq\.&³ñÙ5ò™ëùÔ84Ô2Ø3¸R”û|<¿lE{—‘¨YDê¡:Å?Ø· n7˜3™OËÂùyŠ$2Ø3¸ïVY‹â³:[3nˆï˜(“YçJ2ç¯Ôý–UA¹˜Ì¹t•¦³xåïæ1Áö|Œ›A×Úì¢ ±*ï°I™;ÁžAx1ê”Ês(/åÕyq!­:G¿a0®ŒHüòÅd0½»Ìà…—Šœ°/y¿|1tÙÐï–t7[bÍǸ˜ '›Y‹ƒ²¸á„Ñ€)caB 7».ìÅdЯ* ÉaCp‘Ë–gFa(WçP¥Ø1Ð2û)'xÞ`º”"ë¹ù¨Û?Ð<¸`~Ú/o“Qg¸Öç=4 1sGÍs¸‹ŽN}ä/ï¼ùêºt¡ñëRiLL“+Å¥¯{¾çÉîÝ,?Xb2Žç}ðœVTð.\o°±ŒñðvŠ›¦e n|ªì³H¯ç|¹‹“AqÁ­ J<(ù²bZžÁ7ƒ‹ò?#4°‹8=lÁEK»\´"­#/f›Dü‘gJ»Ýðóm2²½ëË…´Ê ž@‚9 –à3K+ª,Ï <‚¦{KæÆHW½´›<ÁÈ`ûËY½Ã‚üßè¸'5?1€ÍÓ ýÓ™t–ÖHÄdQ?µ|QNÍ"w+b2ŽNø¥¤°¨™nb2 ºj@kÞ{&¾Ñfù½ð“A0U@ŸH&1vµ»>Æöà³Ûà×-‰€ù µüRˆÉ40$9_‡ =ä†C0ƒ ƒÏ÷€‰ŒÜdÐ|ð™¶T2ÄdNð¢òò“JÇèUr‘ì<]ù™Ö!‡Aøê1Ø3Ø&‡¶tB©æ£¶‰?—íl.W0E]§WbÁi&{‚=ƒ0Š-bÒă޵y³1W¶gð¼ PeŸ0þûkΞM§!ˆøzðâý^‘þ ocß`::•*= MFÚb©Ç_®ŸgpBýÜuþÞqì¢\ý3Ø38ÙxOóÁÒ9ý¼ç’ÁžÁó™;-&×RtoN¹ªÜnpC‡÷°8f`žc½ ö ‚ûm¹%5êäöÔÏ3hF×Ë!×¥ [0 _{1`l:}ÖpvsˆNÙ3«§™3“G 0Ø3ˆ±*ìüúÌÉ0ùeÏ Ã~œ³ĘÈ1J^A%&ƒY:0V”-Ä&•ÿgT*1úùRñj~;\ôÇÊ«t%&C«…’v'4Äò‹_‚›¯Ë–}£r ?zð î ®d䬒2ˆ*~}gðøChF¼îõ&`ƒ94òmLŸåâƒô™ÿ‘s"¿l<ÎÙÁ÷úŠm¹ÕuÕ^ðbðØ…UªÜ&Pjs91 áãÝ–7MLõ¶èø3×ïãr_lÊ.z28UËâ{'^"SʯƒžÛjoÒn¼Ñý_©Ï¿Ñ•&ñXƒ=ƒ§xZ±¬ùç¢9òL®Ö~ƒ¡9]sË%©0ºÉÚ¨žÁ…f Ž6A/mïËë­žÁ…ÊuYÎí ùeÏàÚ¼ÏUË}Ã0åwñWÏà†—nŠIP¿âçYPÕêµ»l˜%1Úå¼iæc“Tˆ©<®øÒ¬¹Ëé+{*1LÎ2Y&èåtÅ!‹Ÿ˜ Õ%I|Ö3e–§U%&C]4rFz¾ ÌÒGA‚;ƒQ¥65.¡7ö•WéJLê ç£wž—ûéÿÍàÉೞÏ":)Zïƒ=ÙDÍô}yL“:f»K^ñÚ_Ê<â—ó"&3€^â˜X«ËLú¦êË#—žàíÁ.ÝfÞ­ ÷ó)D01°¹+!B©¾ ¥Y"‰ . ®¿tcpL뺵óë&&"å瓱PÿRLø÷K!&ƒ`ü5ëùðbc…O8âå1:ƒ{áââؾNðçòÈñ6ˆÉàndî4«•yÅxVÕ_ž¼1Í}vu¢®\ÊŽ`cð¢e5µ½ãLYƒ3 q42xy0Õ%W†`f/g\}ùê6ƒw£yP‚!g‰‚E‡2þU_•˜Œs6®6óZ•ЗÌJLÆp&`~pÉ M/HÒ ®®.t¯&zYCO†'ý•§(ÜÏAÆ™ö/ ª˜]²Å Ï\/¢/𯗺îòdÄbœ•éÏ<±óR¬3x’œ“ûžðÁ.¸#ÅÈ%zy2ÄQÉŒ÷6Ü {§OÍ ¾\µÏ§”{¼ @Ò?žå ¾\µ³,Ž'Ü_®”+ÄüŠ|)+˜Nœ6¨Vó1šqx åå1x2ƒ{Žo¯‘Î.0Ñ$“_¾, 0PæB"¾‘£A ¾ÞŽ{Þn(Nµý¨ÎR’bT/OfA¹",Œ=)0p²ŸQˆ L†.p}[ýlÚZñf䣾T`2deÒB †Œ]U€ôJ è 6>TsÈï{þœ,RW^xÉx0¿”‹ŠñМÆû$Ïnß €É{3f®ï/C œIyï—É IE"ÐúÌÐ_=Œð®Sç >D'Üíüå꥜0YŒfðÉ àÕÅ1Mš­ÁmzP.†þÌÀd¨7Àke³þ£íFå%ÎJwîÿ¹NÈ$®y™JT[ýäDÑ „ ðò°ûn :¸–ò žÿqI9ê³ÛýÓ‰#™C¹É3¯Àd8¥×CqÂéfcní–¿Œ 6T2ǯwÕ°Œ•gìEɰ¤¥Yá7M^@ ¦ñË ˜Ì‰VÚðÎ÷í±¾xõ .w‰âÛ}ÿ†·> U«Œ Ö¿h AE3«ö'Ñxû—àæ¿¼:0B¹ô`YØ`Ì`Çd.,ísÃý¶°IKžÙoçƒ\¸±u¾º©Zîèe÷àËø¥PÖ熟•wغ¯l{«®}·?8] ìÛ7¸Rg{Åã} G¶Ý¶äsÇ<u‚hkì‘ÁŽÉœŸ!–ûÞ3¤Y;ŒÃ}=ûcGÕÐç˜L{ÑÎæ ¯ò6™VUCñTKÁ§`puø/ƒU;Û"4§mÙûREæîâ÷WWU;ù®é.%¾èúçêðï—=ƒØÌÙý_ïKÁZÝíàýãetëjñê¸\&zš>Ñ|ù¢j\+Ã2¸s\ëTn°£j¨œW¨=Õ+¹Ï©¨!_JY\Ÿt_½XÅuk—÷|QµÆñ‹Òs“«{ó‘À¾˜Ìy’Ê¿ïýr1ççÉ7x1™‚ ÐPl¹FR;‡rm\LnŠTåšoûJ¼#WÝÅdš¡ Z¾ÒïÆèÐP|– vLWaÈ‘Þö—Ÿý…-ˆI¹˜L‡ŽC8Ýq ÅBªî ¾¨dÃAΊ¤¬¿Íg³\"æ>†c2ä;},ãÜè$Çårƒ/ªM¡°ó­¬ëÎÍM²%¼˜ H¼Ø‘F[Á€ TDÖ[üÍ3xÊV”® x‰Ê鈙³­y ŽrØÝdß(,A<ØŸ¹yq¶¼º‘KLdº[»p=ŒÜí¦»sl¬|–ÑtBWÚî&áæ ,,½¿ì»(Z~%ß3„<¦s°^°c2§ö8çž-õÞŽ¹1–Ñò1ìÂY0í\o‰’s2817Wþ²c2SM¬ùc!j¿òv éb2Ý=vÍã,(ô³8iÝQ5HLî×Ï cCüï‹—Ln±Ý_v‰™ÊÇðgîUÛÓ”²ê*=qÏ¥-·‚î¨ÚðÙ†&;’óSN9“ŸU¿¨N¶³êfž)‹~TŠ|ÁžÁóUUªYÇclÈŽ­ ¸/ÓÝ=ƒ˜âi²™ã=eCÅ‘ë¹{!ñC£áúã\ù°†>³c2¸ùÔï±×6Ɖ›jrNÚÅd`É=ÃŽ¬^âm`ÚœÄlŒsCâcügKÖ}áiåàpT ²èÓQµH÷‡+”;¸Çc GÕΡ;aÔô¶Ü‰v åKŽª>]p¥wîu \ÑÉ*Ù1™³Ïÿµù W4}1{Kµû:&S)oü¹D¢”—ؾ2)Äd 06k8]ü …8ãáƒ!æW`힟•A57V/Ç‘+ë=¾WÆWŠož*ïy_©Â1ÏU<ý—a^8kå3_L¦8Ùð«yL€×V³ cpqÉ8õÉÚø\–½õ|fb2 •HƒBÊ—éÆýsA´Ü|îØtP[å¥Ã,Û•A")“Áø ®Ø+ÿÀÖXš[ϳûb2góÿ\·òÿX¤Îl} ÇdŒï©FsYؤªì¢Oã—·ÿïÞxA0R݆¬ºÐøÅÐplŽoÀ ¤ö¼i¶‹É¸føÙ5¿{„&j$íµ¨_L2%œ]²w‡…‚7'ÁÞ=¥]Lfz€–ÏŒ-—»C™ù^Læ\WÙý¿J8ŽÏOž‡\¥å3_LÆ6s‚5·9Ážý g‘q¿6¼ mï1NÕDêùS>ÁÁø-›Wé¼ÑW4ùq´ÉxÙ†æ’ÇWêÌ'2–×ßò÷6aôhŽé^g¤‘÷դʽ<¢xØç{ŒŽ~‚Ó1ß/_¦Ó¹29é,àÀy­T‹íñd6eæ¯æ4+N‡{ÜÜc•hEU›ù6F÷2¾ç¸î9Ø0V`!7èeqf’mù9¸ 1–0 ¾Þî¼"Ê]Þ›àqzþ“WØžWDlÍà´Ë3{o¢@ƒoð{Á š‘NPyÏì»è`[¦–Ë¿ðM½ê”`»;Íæ—Î)o)1ó4pNðÝE§‘ÁüÖ3ÊžBÑ7hËwÑIªš…'Ù'¹žtöùOyo bð˜ÒO [0œ öÞÄ¢6ü ¡Zî5Uå—½7áhH7˜ª/ã¦y]ÚÞ›8 ƒSˆeå3OzóÔ„,ÚöspêV,yfh q–OžÙÏAL=@þçË_†þ›¶¹?oÏ À76·Ûƒ³ÐýÅÚ’ýy{)š¹Hº+ýÚ?yžAâ)¦œòž©ô8¾ÌàÞ/x& xGN(ß™S~ýósðûUÁ'À^¦ÿïwû9¹©ÅòÝ ZæÐ€Î`?Ïù€Å¿FþçòÈÏ*÷ºþù9Hû-ªeð&aK4p:1™Œ6[ ±,vÒ·<ƸÁ6@ù²žÏ•žÚ.òËÞ]‚¸cšü¬ýü¬úg7væ%¼Ù™”åº9)Ð?ï.á«€¬˜ì¢h­}ÿ<óŽà ¨Y£ÕZóLéåV2°¢@[GßFí×Fñ—LÆîù3¸,Ÿ$ßK½5 >Ù‘æ9¢‰Ö n7OT¿¥ÏÜ °w î7øì‚iËéIq*qj³ôâDÓŠö M÷:ëê.z‚g£¿ÎÞ¾ži£,öŸÿeZ_ÊÇÉ)!z¹¬|$Ë}®ZSμ#øç±»ìH¤9§ ÙÉÒÍ ²uR^ò1„‘ 93¸d0œ6¢’àdǵ4ªd×ƾ‚7>™H5ËÑø^o+€.Ó BÙ½Dý|ƒ{Ÿ?ÑlJU0è—4‡<óÍ`+T°ÒÖyU"Òë|Á†Flæ‰s_ê|3ØØ>[C‚ý­§¬º"—Ç) öns3øfÃSX˪>‚^dþí‹`ìHqèù×ý±‡šeOo7ƒ|üo5ݾ>↹DÛÍàÙ1Lpå™ l˜ÄB6Å7xR| ¦4UÑg¾„½M$rûÚäѥ㠾ÄU"P²}y×Ãd‰¶Á ÓÙï—7:­‡l‚/Ñv3ˆ1 ®¦ûsÛîÝ_¾d …¯¯çáXƒï&ªUý uÊÚè7ƒ£ÖåmX¡,Žå ÛûÍà2²¡õFÙ®‡þ‚kÃð¥H©Ö·3æd=÷›AB÷¥È8¾£á”›yï\ðË&Á§ í?„Þ#ƒ¾¼`ÈM÷ü°×Évï7ƒgÏ\P,–W7È%ÓÝo'¤…lëÙ} q’ä1n'ônë’Í|’&¿*IÙŒ÷,%„Íu]3#x|ÿ{°ARƒ¾¥5WÝ(\‰䫳JCޝÈ/ׯåoË«;_;-«? nl84W×CÎ;G¨ú¸„Œö:Ùr‹ç¥T7ƒp㪺ê*ý­º|ƒÁ“ùŸÁçênæ¹ÉŒÈ E.LÞ3rèÉÑ6"ƒ˜JÇù–oÃ=š‹þ‘AHñ˜–—:ïÈI&c­²)#.^„ã3øfð´´å”U‡ V|Á5‚¡×5åì>9Å hJUp1™B4ê‹Üú3`—KMŸ7ƒ†›“Í©ÁE½‚>G—€ÛÎ2~ ÔSù Î`:mt¾!oÃ;Õr]êófS÷˜ü–ýyŒ}=q_ðÍà‚Œ‡M¹M¨Ca^D~yGð¼äP=€ª+E°Ý žÏžè¥ŸSÁòmXù¿‚ÁNÙîæø‚kóK‘U×Àqmñ|3¸¨âY¤ì9[Pˆ™„«n7ƒ «ºÇt:u^É©½ë·›Á…ÿ¤™Ü­šOøwÙŸmFð.)Žë¯ŽdiÝ7ìf”¨&èVàR˜²×ÙÍ N”³žµæ7ÛKŽ6ó :í{½Ãžs½:ù¬Öwƒ)j’nŸMßR`i/¸ Ùƒû†Ùê\o0‡Œw-Â9añUg.þÕ.sd:}ŒîÑŸ|)«ß`¼V³&E Lø³äâ_žAÐ/ ="ÕØ¦Ý “^ð¼Áа0— ƒ}lj»ÈA¿ìÿ †à$¾}uëÿ F¼|˜üß VŸ€šš8‹ž—”‹ß BÑ9m“ùÌ…Ä “¤ì›ÁÆÞ¶¾ ´Ö8•±oíÖ¿­I!­³ëcÜ ž×ÉK‰næ”Üÿyæ›ÁAÞÖÒßy2MÞÆ¾„zº˜²É´Q¯Cð ¾4`Þ•È·1! ôM“Ǹ\ÜK_ª‚Nö­àûfpƒàùð Ï`#™B¶¯}3ˆ šó+R×Á÷o²Ö‹àq1<¨ã­(‚&Wz‘@´Éƒ 6ó¥‡fw׌49=ÿ_Ïà)zPàoNèŽPòíƒß cZIŠÛfh°g°q¾yÏègÂK%Þq1Ø,éÿ®xãb2½ð>Ø{ÕÇèÅÕ_°göœI_Zlq]ò6<ƒ³fÐ3“o°qÂhhR<ƒ ÚRPvþÞ2f%3.&Áâš>3Ür Ûxi=s‚=ƒÃUL6Fl>lÁ·»t*¾‡oÔ¿dáã"Ö2Ø3ˆŸA'®åøÙ*Ó…\^°gßúam¼_†t-kQùGOØÚ˵r4æZp/Ø3‘Œù{£¾¹‰õ ¶Û3°îÃÜØ×Õ SÁP9ƒ7M‹IAõM‚›µÊ/{©Z4JþÀ=és!“Á…΢%þ›$—‚Nz&¥–¼p­lrÓlƒJ5ËËQ³ýuˆ`zïý2\‹̼`çlhÃødâ{ÏÛg­‹<³÷¿YáÍsð^™“E'ãÏ£z."-:ÉêäB”`ï–â3?µ½àS©Q£}H°yp-Åe1^0P|‡Ù©Äd6ô€PI +ul_¹D‰É ï–ÇDeGl¹óV7ÏàÙÑ9ÌöY…âÛl®Ëö‚=ƒ˜‡"̘¿Ü!…€[[>só ’€€‘¾ Þ0 Á?ͤ4Ï`-`=ÚtÓ`þ =£yký¨æöŠÀ £‡yeD^ðíðVêŽ$¾î? Ò[ç{+Ä¡²´eÕ=ëôl7˜ Ú”¤¸‰ÕI¬{+Tf£XâñÇmx˸o0´ÀVùä\ÒÆ98úÁYí“³ÛæøÁ F¿sÆï¾“ ¶Ú_Ú1œà›A¨K Ÿb ±ºÌŽØè7ƒ‹Z¯óˆ.àÄ9sþòLw¿<¯©A,_HÔU“àèÑSµ¿½ÔDJŸ|òÁvÏ ·Kd0ƒÁ'[ÿÛ žÎˆLÎv§šÒ— îÞàýYšûÌ#µàZö&F÷ žBûëš¹6AÔ´Š†aÙ  45—èYŸcþ4ŒÆ(7xaRƾ cGÒâdxüE6F¿ò1N ëÏuiŒÁdz’ß qß9…Rn2£ß`êÌŽÖó—¿á=ú|uÃ3xj´5œéÿ‚ußä´7ƒmÜSä³juq°GÍq38p´jù¥ 2C dÁ7ƒ†FqI³ÿ¼Ô|²DÇ~ÁU²™Cð [A~VófO€ÇÈU‡.¤Þ¸³K@¾0a4ä™± ã´Ê÷|g—\ÁÛŠ,þS¾fR×ÝÙ%P)1è/kc~pŠ ÐÀ î7ø&瘽jÚ¤ùå½<™Ž3$íL·µN›[©‘.O*Ô*r´5—B˜òê<ƒ먮ó\H¢àŠ÷É/{!p…ÂzägJu½°ì„hç)ßnÝԞͅdžAìå¬reË…z'*Æ|uæÄdNÂwZu¸™×îE>³y7pÉàA¹^ä—'Cùu8xÂq•= *õóåÉü/Áp’£f®º;»„NÊröì“âÁ(€…LÊ]‚~Ýeݧ=ڪ竕à˜>£ÑpWâE~ÞƒÑ|§ÏN Á‚òÆE{ gK“_¾Óg•µrz @eªçoÉÅg—>N’²^ˆ`X7P8߯]BŸFT(õ0 HÊÈö¸³K_åXíhC\ nrïwvés½9Ò€à¼9\ä¶œ)wvéì¶}9Qó=sÿ€¤‹ë ¾¬ÔÚLiÖó6 ª!÷Á«ñ‹!ØœÊK8ɺ˅¿à›AÈ‹¥H¼ÿ2­VºìHWã÷k¬{ºZÌWzu)¶¯ÆïGʶ˜œ6•Uà«ñ‹»8ùž[fK!ÓtèüR®Æ/Ê—šœ60«Ñ-b\_(™£À—?ðäš#'R#]_ÐŽjL¼Ýµ±ù‚zŽ?«ñûù½tô­Íh&ë—r5~¡×R´Õ—è ÷Žì¢Wã÷M[ñÖ­àürZ]ßÏñ‰".çh­Tµ•÷|3m|¹ê8ôD ÿÕø…·ØJa{ÚzºšØ^Ì«ñûŸ ‰ËduÊ ;¯Æ/gÇÐGM5¿JêÓ9˜,ƒoY¯ï]ÅS`òK³çªÿäÌ¢¬WqûÚφü_Ék½nêÅÂ<¥Òfxaûä÷S?£CÑÁ«îÿŠù\’à‹ scotch_6.0.9/grf/bump.xyz.gz0000644000302600021200000025215413303015264016177 0ustar pelegrinpelegrin‹¹p0ef_bump.xyzŒýK¶ì°­,Š–íVìúg Ä·A·ÿ]x’æL˜–\ót˜‹ÉŸH Aÿ oí¿í?ÿ÷ÿú?îjíúÏÿ÷ÿkíÿÎ?‘Î?ý¿fÿ÷ß~ýß8þóù+môŸÿû¿þ¯ùø«ÅqÇ?yòøô¯Yþeþ鿲ý1 ^ÀáýéWÛòãðøöÇã’=øœâÇ&{ŸÈöÜ&]ÈnÏmމÏmòD¶ç6çü4}nsNPÏmž3ÿâ¯Íÿ×úéRû32.$=·IíÚñÜ&Íý#/Ú¤ I/Ú<çÈþù‹6ùBÊ‹6åBömžs¤ÿüE›v!ùE›~!û‹6Ï9’öÜæh’ŸÛýB¶mžsÄÿìE›ãBŽmò…l/Ú<çhüÓmê…/Ú<çˆÞì£áòÅ>q!_ì#žgÝ‹}Äó¬{±xžuƒˆžó¬kfþ„œsäôýü?;ºNúùHÉ=ü†<¿Eü‡ò˜£ãÏ]ÛíËúÇ¢á.7ä1Gÿ'ÿtX¿!ý_#²ò˜£ÿ‹ãLvCž¿ˆ¾ÿô_ŽësM¢·ß~üÉ"¾;ô_iR¿Ûì×/"½!û… ùêþDªF»!éúíëãü…Œàû¿>.¤²Ç 9Žú Éÿ™ x¤ôÛ´ýWäºX 6¤ öR/¤†5@F÷ýœ£có}}^ò{›~!DZåÙ¹Ý{\ÈcݤÇmäµ]+¤Eù×{¸ÜýBríç±ïHºVûÙŽ¾!Ï9:NoVÆQ²à’/$‡ây‡_$ÒYpŽ´GÜç_®`äp½Í»Ú…ˆì4îýô éA ëÓ©ßfSÏ9:¾ÚÜpw°öÛxZ»²Vò­“j!û…ŒÁ {S:ßFÞèÚï´–ü²5¿·9.¤ìùçãû 1¾aŠ¿=޽!e^ùé3ÌóÞ}öókˆO¤N¤ðý†®ÿhŸŸf²wz˜O¤<¾#lžuÝÛôyÖ=¶é=ÏÏç6çÈâ¹Íq!=·É©ÏmÎ9ñÜæœ#ÏmÎ9b}nsΑ´ç6çÉxl3æ‰=¶=¿\ÏmÎ9R~nsΑÚs›sެ?·9çÈø¹Í9GöüvŽ9Gþ¼bΑ?säÏûè8cæUày#ïǼ5¼huNSÄ‹V罡ыVçÅ¡é‹VeBãE«y½/Zµ¼ ¾hÕ/(µ­Æ„>ï¨~†®ûÜs«gÌẹ½h5/yü¢Õ9[Ã^´:g‹û‹Vçl1¿huÎû‹VçlIÑêœ-‘­ÎÙ’{‹æl鋽Es¶ôÅÞ¢9[úboÑœ-{±·hΖ½Ø[4gË^ì-š³å/öÍÙò{‹ælÅ‹½Es¶âÅÞs¶âÅÞ:ãÇe´½Ø[g ℾØ[cÆ[Û‹½5fĵ¿Ø[c¾¡ú‹½5æ#ª¿Ø[g4â|Ú½Ø[g8ℾØ[g<ℾØ[g@â|9¼Ø[ž¡s¶Øž[ís¶˜Ÿ[ís¶¸½h5oðö¢Õ9[c¼huÎÖh/Z³Eú¢Õ9[4^´:g«Ç‹Vçlu}ÑꜭNÏ­Òœ­Ï­R¾ŽåE«ù:¦­ÎXFø‹V3Á(/Z±Œè/ZÍX†¿h5c/öVÆ2üÅÞÊX†½Ø[˰{kÌÈ“½Ø[##O/öÖÈlð‹½5æl鋽5ælÉ‹½5ælÉ‹½5ælñ‹½5ælñ‹½5ælñ‹½Ås¶Æ‹½ÅÕ}±·8£º/öÏÙ¢{‹çlÑ‹½Ås¶èÅÞZ‹{‹3ÿboñœ­þboñœ­öboÉœ­öboÉœ­öboIfL^ì-™™­x±·d¦¶âÅÞ’™Ûò{KfrË_ì-™Ù-{±·d¦·ìÅÞ’™ß²{K“óboif!_ì-Í4䋽¥s¶äÅÞÒ9[òboéœ-y±·4ÓÅ/ö–f¾øÅÞÒ9[übo霭ñboÙœ­ñboÙœ­ñboY&ö_ì-›³E/ö–ÍÙ¢{+ùýÅÞJF±·’Ñ^ì­¤`´{+9íÅÞºbqD_”óþÚ/è×Ãä74©2oZÿÆß´Ê“Ôó¦U¹ ýM«“ÒäoZœ&~Óê$5õ7­ÆÅ¾²­^± ý¦ü†ö Ú¾“¿ I>/ ã‚Ž7­ò¤É½iU.î¾iU'¡ïM«ó½oZï-}ÓêÊo=BGËläx홑~¥¤¼€Žä¼€æwëM«y¾iU¯mxÌ–‚.B'§Óß@çIøªÕÉŽîªüí“®o ýª]xÕê$H_p}¬¬Ñþ:ËAâM«rÀxÓªNÒù›Víâ¼·7­ú¤Ç¿i5.¨½hõ* ᳌àÚ/(¿i5KÞ´:®åÒߴʳ8âM«rAýM«³4¤¿iuֆțVgqˆ¿i5®*zÑêUbgAÁ3´_ÐxÓjñ¼iu\Ð7{ë*ñW{몉W{ë*‰W{kÌz¸µ^[¨g —>C#ë/ž[ÍB‘Þž[ÍJ‘Î/Z]eq/Z'!õ­rð½huV‹¿h5kû‹V³zQ^´šõ‹ÎôŸU–ÃïPi?¡ Z•¾‡ž_l•~B¶:~A=°Uþ UlU~B [Õ_P lÕ~B[õŸPÂVãTZÕö*Ъþœ-íØêÏÙúB>П³%Œ­þœ-éØêÏÙbÃVÎ3¶ús¶¸a«?gkàÞÒŸ³5poÙÏÙ¸·ìçlî-û9[„{Ë~ÎVǽe?g«ãÞ²Ÿ³ÕqoÙÏÙj¸·ìçl5Ü[ös¶î-û1[ñÏýÎ!Þ~Ae ´ÿ‚öÒêÙò^Z¿ \Zå_Ð^Zý1[öÏJ«ú Ê¥Uûm¥Õ³¥ÿ¬´¿ [ö Ú°Õø1[òÍuH(ý‚ŽÒêÙâQZå_P-­Ê/(•VÌÖø¥Uû•Òªÿ‚Riõç-÷·Ÿ· Ü[Üú/h/­þ< ½´úó$äÒêï“°´úso9ð_¹é¯•Ej¿F@ t¨Šú­€ú ò ;4® *»{©ç¼×ÇrÏ|°Abë=îЃo*Oå¸-Ý¡Yì­ŸºÈÏrá&w蜭c‰ @M±¯ó½eñ췉ñ:cŸ»þWµ$c«3–aaQ :îÐ|oýų>F` úÜ[ý¯ÆyA3 :yÙ‡zM>V–ŒÛ"¤¶ Èí"t‡ö¬^ëËJ·ZYΓ±Õè>®4ö8÷Âqïï¡ú/BåW«Z 3#»ÎòüöǦ˾Ψ®6¹ÇÞN©¿ÏÍ}'ÑR¬Üïk€fõ7um° ›Ü+ÊyLWÄ÷9]î{käly‹Bå¢ï£á€RN¬ü:ó[]ošG{è¸rqѵ?¶:…Ïø 4Õé¢ëãä{‹_@ç ÞÞ´:…µú›Vgî˜_´zÅ2ÎgÐ h¿Æµ¿i•.¨¼iuΖ¿iuÊkÑ›Vå‚Ê›Võ‚Æ›VíÊqÒ›V}æäß´:µêâ¹U¹bz*=CûÕ7­Òµ Ú›V§¦àñf´GèÜ[Æ;¨Þ¡r=¤½åP½ ŒÏÈÔæó<¨U¨Ü¡Sü±3GèT<–øægñ zñ2ŽWM«ã‘§ÖƒëíîÐË8^‘R¡ýMå:’`û¿„¦L'q½>v¿CçIx,–^¡÷5B=¤Võûle,ãylÕ“™"Ï}ÍXFëô4X+–1L+ô>X4gkX´Uh5#O›)èí>+–Ƙ¸ôÐŒeD/9ο¸KBW,õa–î­9Æ4]îë•lEH T@WîX ´ ÖŠ<Ý•ÎëŒÅ} Œyb,c¾·:ú‚v„þ]gJ¿ jt_YcEž¸T1»OÁX‘'رg ÖëX³Å8X¢z?ˆÆš-Á¾¿ø>cÍ–”šÓ€õ:>³…}ý¬ìô3[%®Mrß0Ü~­qÐ5[L9ï©r_KÂÓ—Ë ÐOœ‹\yþ<°aX~B;¶ªûâˆÀVí'”å¾/CÊ`õ¿`uBã'ôOìoB¥ýì@o÷Hÿm}ú elõ3[¸¹[ÃVs¶¤¬ÌÇJò2 ôÊÇÞâÚ"ºï@G†ô;4g‹Ê.¨}õ=ôj•ï­¦x×¾ê š¼Œ ôØí÷V“—±éÀ±,î#¼ŒM«+y›V–ò¯)8ZèÏÙ:zJwèÏÙ:~´j¿ ­I»C}¿^ýŸ Bãt`«Ö~¥’¼Œ2~ìØ(í¡v~8úc¶®øÊ¿ Úné¹*¿:ÀßÇTW«ZS6÷¥mö«Õfتï¡úÏJâW"Hp ’—QM=ï~÷V½ïÖÕê}°œ~A©Á$/cÓ†kÀæ·¨áÏ’_i;Ç¥íú *¸¹Ýö}½ ÷ëŸï–WÃýÌòøÕªâ‘‘¼Œc\¥öõÞè¿ ]nRÂô3[\Ó¡÷ÙŠñëg£w_Á¿’¬Ç7þ>!¿Z¥¿ô\BõW«½áÏú|·Fé€Â`å{+8ÊÏêÐ×Ïw«Õ‰½õU“—AÊZÆõ¦}@û‚Z-»Có»5˜Jz¿CÇ‚öò³ ¼: e°ŒîPù5Xä·@ÄÕ_SðE`N¨­T¨C_}ý¬V:0 ¯9[öà‡oËEûg¶?ðÉÐ~ }µª…ñ#÷5ð©1Pn÷óU3–qŒkm~VÆ2(¸²“è>®ý3[£PŽ†Þ¡ŸÙj¥¯v_¯}í-ÆqmbÐêç$”ÒÐÏIXGྠ•>'a/³e÷å²b"u°ú}\?± ­k@î}¥ï­s°`Çþñ2z¬ûùªô9 ¹°¾:´ªû·á©5‹>ß-*±Pß?NOM…qýÌV/\2ºÏÖøñ:>yðz×O,C* VÖŠeGa¨ûæ^± a- µû·@W,ƒ¶ªzÿëŠeP!]Aé€jnÃÑk_š'a—¾ÞïY:VœZ,øÂd,ƒ´k¡Kß?ÇÊë½EZ8z~Ÿ‚Ë Á”ã» ­®[Fœ30†ÐUc‚#pÜàîžÌûVõN=¼ koÁø)K­æÞºëj]9b èë: ·¦àð©1È©5q7hX± ‡¥'³çîN±bR"zé¾´—ö§Þ4Mã>[KûS` ô”Üwèøeëå_P'ì«ì¡ö¯ÝϬ¥ýY¡B°·–ö'Ž€ýsЪï¡þˆ¡¯ñ z¼0ïÑÒþ¼”\.›{i"4ŽExDéÒþ¬P¥ûsG—ög…†!”÷г¨íž3Ò¥ý¹þ¹©$TA{ÃVí't`«þjØjü‚RƒV­ý„BÖL­ÿ„¶J¿ Ç} ã'”±ÕŸ³u.•ýz=iÑ·ÜÐÕŸP!€ÚO¨c«¾ß±ýر÷$«Zü„ŠÝ¡KûS¨ÔDÝ¿$ôsâ'î¸,Åú9 KnjwÔ?'!Fu5îhõÏIˆu»K“ÐÏl•œ‘ú}b—ö§ô’‰ús­Jèš­røÐZ>Ð5[½ˆ9Ú-9u@×luüE‹û¸.íOéø³‚åÞêÒþ¬ˆ¿wAB?{«0U©Ñ:–BcI\ ü¬¥ýÙ6iæ{2PSû“Õkîajò §„°¦^Æ­Üã:gkè&!ÜàgEмKIûlYjR´V¡z‡ö¤çQ¡ã¥%s¯Ð±ÄóŸ;êý÷2G ß¡©Þß©¦ï´ªi`ãa ,µ?Ø ð´:° Õ€îÐôZ0ª9ù{:ÔúR7Ù,—û†±ô1‰MEûŸû^B)-$T¸–>&ÇM÷ii[ú˜Xèxà:Xú˜Ønißå€jZsh EXú˜hôþÀL±ô1QÙµ ãiNÒëlÝ?Ç–>&R_òšZ4²kõ>Yc"]Ÿ¡#M_v­Þg+µ?™õšìÏþ¢UMÛ}:4-µ?÷g¨§EÏ®Uè@zY„¦ö'çVSû“Ú‹V)­v­Þg+µ?ûèÏÐttŠç5ÚŸMŸWVj6zѪ¥QÕ‹V=í¯v5&4ÕjЬ1q¬\±¬19®TÏPJS±­Ž¥ÐXNÂûGç€òRh|†ÊRhäG¨.…Æg¨-…Æg¨/…Ægh,…ÆGhÖ˜··gh_ ÏPZ ÏÐñS¡±@ù§BcÊO…ÆÕŸ j? Ô*4hüThDhjî ´ÿTh,Pú©ÐX ã§BcòRh|\ºÜ<ŸW–êRh,¼âµ¥Ðø õ¥Ðø ¥Ðø]¶«/ZMßÕ¾mõ~͹bv—†ûK¡Q¡¼Ÿ¡²Ÿ¡ºŸ¡¶Ÿ¡¾Ÿ¡±¡Þ–Bã3´/…Æg(-…ÆgèX ÏP^ ÏPY ÏP] ÏP[ ÏP_ ÏÐø©ÐˆÐeÅ:^@ûO…Æ¥ThdÂÚ©ÐÈýš•¬o ’ PM…ÆPK…ÆPÿ©ÐX ñS¡ ž¼ŒÐÐþS¡±@é§BcŽŸ Ê? T–B£Cm)4>C})4>Cc)4>BSû“_´zñ2ö J? tüTh,Pþ©ÐX ²íásì/ãRh|†ÚRhôG¨§Bcì8 t‡F*4Uè-˜â/ãTh´Í´;´§B£—â¡~¯Ýñ‹—q*4FíÀ=œäÉËhÊë¸ßãYž¼Œv¯fHè}’—Ѭ†jïášAͼÖÃ@_-GíÀ=TëÉËèæ›*èkfú;Ó4yÄ»Ú{’—AX¹²ùY‹—AMžÆõÃ˨Á?\‹—aÔkà>‹—!µ"ˆï9¾jL°ÔëLX´ºX4^(F0?ØŸgrźX4…nâ 6̪1©I+»ŠÐÅy*Ùû0t±hJrEïd•ºf«K¥›@¾Ì–Þ£6tÍVMÛù½ÔË?¼Œ \@Öl*xÏîø§Æ¤0(ØF`ÍV)tb÷üñ2¼ $êúaÑv)@iO9ºJå=?ë’]¼¯UcB¥ÖlÜCÝôÃP«N„÷Z3_5&Hfëhôu@mÏü»ïk@|Oç»ø˜_Û°C>Öµí9ÐWõÒ}ÇêfõU½tŸ-ýÁƒ¿êŒ:~–ùà6ÔßA æè«ÆdS»ÃØÝ×Ã\uFÐÅÕ-+«5ßC¯Š ßÅuquaÃ\A7nŽgÉz¬J½Có»Õ`ÇF¡IzÖ˜l (ónãW°xȳÆäh•Ї®þ™­Z<4î}uúõ³:Å} ü3[Z‹‡îãš5&Ç•ÌÊ hUTK_ïüWÏ“M«* ƒ•wÂ>¸Œ«ß§À—â]ñîd¥2z¬1é Yˆ³&ªßg+kLº(­šß¡Ÿ½E¥Õ;¹Ý³Æ¤ÛðRi?+>³Å¥Ò ά1Ù´Úì^Šà¡¿úJr§zؾZü¹=>³UK½î,EØCÏR/ºMA´Ïl•R/¾—OEÖ˜4‡7Ìñ^;ó/²Æä€–R/¾oÃÈ“ã(Ãú-ë÷¥YcÒ„ŠA¸âÏ’ÕB?{¡SdÉf°†‘ß¡ök°Ž&õ]ï­QÄra¹D‹_P#½ÿ¬UcÒàöv.ºwàScÂR–‹C«ôëxcò{_W‰J«÷q퟊ ¨UŒ÷‰ýԘȨµ‘|‡ê/èqÃد¾†0´ê{èõÝ‚ˆý…ä:Šï†Ú¯»Kƒj»È“ryº¾Ü÷Á"úÕꀺ¸ ìÏ“V+‹>ìO|ôÇý4¡®.jª²q‡~¸ºX£ðÙ²=”Ïë#Œ«ÿ‚»¹ž¯|œ.p¼¶ù×Ôúƒ«+ÿ¸ûýÈÉ'$*—ã:Æ‚ŽBï‡]0xA ¢èЪü‚*€ê/hÄý¦Ãö}µÇ!}õ_P X.#wAã{ _pÛë±cÎ,î¿ Æq߆ü™-Åû±ý^Ðñ Ê|/Ì þÌV‘¹‡|°ì¡§ðÑÝvã¿Ƀ§V'öž/ˆ˜\]ßæ·î» ’¿ÍšÝa$¾×õ BSɃ·Ø¤í ¯Éƒg®}…C3’ßH ½D‘¶Ø±|>^`y}¼ÀÊrúxÕ½ÕÇk{¯-Ö÷f[lìÝ>vØ,F!yÑnV£¿-–ö†[ìØ;~l±¼,?žç"+Rš¿˜·,Iiü¦][®/°¾l?îD¹-6–ïÇ3ö \Æ/°}9¼ÀÒ²þxËûã–—ùÇ ¬,÷X]öúŒµåÿñëËä6–È wDmËä¶/XZ& /°c¹€¼Àò²y•åò«ËäÖ–È ¬/+ØX^ òˆµ¶Ì@^`ûry¥eò;–È ,§!ß}϶Ø|iÿ©jÿì¤iwÑ¿üÅø…µô¹þÀzš‚¼ÁÆÞd‡]&¯üÛ÷¾ [,-c繸¸—3È ,/kXYÞ /°ºÌA^`m¹ƒ¼Àú²yåòŒ½(—AÈ l_!/°´,B^`Çòyåeò+{—Ý·%to²ÅÚÞ'd‹õeâ{…ØH§ðôØ`{ki¦›·i¿Ø—WȦ XJ³QÇ÷Ρ?°#ÝB¸ŽÙì}`9íB” ¶áo“åRï© û I,ªØØtVÞþàÀp`“BEý>îQº›,íåžjs‘4Vûà0Z£üŒ]Ô‚hµ¿0˶"q‡¤‚Œ±k±‹qZ²_Á÷˜ïM‚ð(‚ùAÆw)ŽŽÂ=÷»í‰]2ôÕºXq-ÍQ*ã믂–Å„öЪs‰ªbÖpÏe!PÖÎ0³±4-KÇ{è#Aʸ~Ç]NæÄ~4H±]ºk^œXÝ‹æ^Æ0ã‡zöåüýý!Ÿ}ñìaÞÆG?»ÈU*îùi9×;9bûžXVùó–~²âM`=|´Hk»÷B Ë{ZeÛØ\ïJ·?°?ÈÞ•o`m‘­{aÑßÕ8¬ÿÂÊŸÑîÂÆâNzáÑßtÏ2»_X$ÒØþ«Ȥ?°k¿1Õ‚ù¨iK­(óW~Èi_Ÿ]X¿YÿRtʯ}û- `ŠüUTûMl¯U•À~ßS3¯²ÄÆÏ5YÖz zp/²â-n5è'6™Q"÷ÂÀ.A ò㙂،+#c|Û /,ï×ε‡à|PÙ¯ÉkÁ˜é‡R,ué}MªýÂÖ=¤þ ÛýN$;°?÷[ ³v?~Üaîv¾†ƒÏé)FÞä>¾WAÌñ<¥íîÖïvú&ªG/ØkÇV>À²ÝÝaŽM2ÏPXëý›6?±šëŒQbš¼ô!Ýχ†¹ X“i#+=P™¾Iö›jGRl…n¥ÞÖ—lDy 4þ]yœ" Nt¼?°™Ç‰fe1Œ™}»Ç8 ‚9ö´¬GÅ!ý>wVVŠCÀ·ŒúÄê3¤­b»©QE‚† ¿ä›ù7m;ûù7”J;é+}H¹Ï}a»CRïô¶ÛÖddÞ´Õþ¶ý•7-d k2%?ŽŸá‹û"$ó¼bÛ`íÄœ·àV±{(R Î k'B±ÝÌw÷¦uà|H~Iãºv¾M+N,%¿¤ym·“6y ½¶‹û˜’_Ò¥¶K­6y ^Ü(öwòˆZÅÂ7–’_B²iW°“§@±iW»ø%Rö1•ñMÁE­{ž¼6’³iö%¿„Ǧ݀ñM~ ë¦Ý€þ&¿ä˜ù æ8ù%2j»ç8ù%bmƒ…yK~‰¶]»8sÞŽí²Á`›kÓnÇ>d§oÚ…ýF©kj¼iö<¥°©ùæü%èo*›IÅq×ÀšØ$àɦ]¸§Rj›È wJqÓ¢+yaaRÝ´ÈUžX<RÞ´¨`žXÜCôƒ3yb›/*fÅbc1< –á^MYJÓ7ß·ïò¿‰í‹Z±Ø‡±h®½á¶;’=[¬xš ŒY–ÓõQïˆù·co:ÇØM qíoS³d&o¿o°~³¤†ïlÑùmÁó,kj˜‹ÑÑ1í°ß²¨†½¶köÛªªé\ú+pG¤UV#EqV¿-«®F;VAñ·ÃÆÄ®¢5ÁÊž/Mô…•_ŠýÇo½¿qˆõVôîyu`í—i@ô{Ðé¾÷"8…ƒ¹öG½Æ €ý+¯Á»œ·»ké]×o—»žÁ]%¿óÒ°¿Ÿ Æ}üåw½°¼ÇòY+€•}ø,FÁþêþ·ñq|Ìñ_• zÙÐPÄæ~ ÂÒ@n±¹ßjWäß±³›…6]ë{ˆÛß±¬Æ!Km6í‚´Ù‰{¬b«Ø_Þÿ¶Ó(ç8ù%¶:åt˜ãÅ/ Âò[‚zõk ‹± ±}ø1o§YN³Øc/·˜ [óF'P‚Ø Yÿ…E¿œStaaKœ sìø‰ÇœË¿°h™s`å'v”võ'ÖJ»ö ‹®9Öb¹´ûñ½|sîñIòö ;:!¶ï×Ã圃Xú‰õ»²×ûõ{yç –÷ûâ2ÏqÀþØo—{NV÷ûø ›Þ-i¬íχ3Ü9ò5o½ÔÞS\'ösN–Ü"A^šbÍ[áœêÝóÄ®y+õx?¦XóÖp|í.ÌsbsÞ<𷳿-V™›W…1[~/îØ£‰««|®éà\¤ã {­;ý²›óæ•ÿ /¤ô|áê¯ø©ŽYØ‘¦/Ì^9÷Òě󆲇'òÒ#m_¾ªýÿ°‚íÎy£þ¶»àƉÍw@TÝ?ƒóa¤óËñ]®}ŽËH몖a ÛMþ¤o8#°Fš¿ÿ\_Á¹ˆtª‘ŠUèooÉ1lµ}è=½j6í–Ò¬&ê8À™:2^VòoapžŒ—ĈÚÇþæ»»:ok/q­E°È/ñAuý:ö7ã%QöqX`2^R-:ÃöÅŠ—TÞJxƒv3^¢Ñk]äGÆKTv5L0¾/QÚ´ ¼•‘ññ]»0¾/éuT#ã%ÒwíÂ\¤ {ùfÞHCfÝ`qb¹×l°pF¥%̰M¡†i¤'ÌàMíYÁÒ2°±gìX6þÜ_^6þ8é C­Ûãø¦1L×MqÞ†em_ù‡àù;ccÙåÈ–¯zœË/ç¶/ÜXZŽ9/°KáSÇŒSUû¬,ÓœX]®9/°¶ls^`}ùæ¼ÀÆ2Îኽß×ùªÇß2bÿÛ—uÎ ,-ïœرÌs^`y¹ç¼ÀʲÏyÕåŸÃã{Õã\:ÏsqÕãè÷{þ`co¡³Ã^õ8-¶/Íù«€¥tѱV±رltFÅ2`yùèlú;+i¤ã›¹è€ÕtÒ‰:¾À3gšî[j½W,ö×——N½÷Ý5±l,3«u_ÐnÖã4+µ;ÁP+ÇYÓQÀêÂÂ8d=Ng®}0ìCªŒ{«X Àf}@·V±°²‡dóÛJ»YàŸˆeòªÇi¾á)`V=N3¿{LŸØøUïä õNü©Ç)ùï¸ßV=Ž[©i3†ß–õ8Å[èÌã(ö!¿o^xü8Ç«§æETû «¿VòY„¿mÍ[‰1 æP8ëq6c&eÏóš·¢u"j5˜×¼•8";îMYBÖ¥]VÈ‹pÖãlò"_êû »êMk>6ðÛ²êq´¬³!Š}Èy%–9 r_¼êqF9£Æ€šWþÔãÔz=¹Ôç¢Rð¥8¹I,ÉWÖ¢VßøÕ,ŸŒÚî®;kK2Š‚>-§+ U³e<×Ó–†¤ìMmgIúÒ”ü¦hÀy–õ8jþw­'ÔC²®s²ä’8 ÊËš†J+c®ƒ—7ÍhµÖS`=,sšQâž J’6÷[+ß‹‹çeOÓzµSÂóáãOSòCƒðL]5£î¡yt^5Zâ´t ŸØeŽ…'æqçáqÖãœb5…éØ|¿a^ï¤b3Îeŷφ)`ÓÎ9Óg»P?Ķü¬C*·ÚÍz²¢Éaÿ…í+æøÈ·ç¬Çַ̽`»#c¤QÆ×ÿËYsü´¨uTp–d=ÎñB§RG¥p–d=Î0õÂ¥ ߬Çá^tÔGkØnÆ•GáÀõ`XgYÃ(ß{¶ ¢œc¿-ã%}/§9+}XF–]颌¯}œ,GùmŒíêÞvó<ñeKw¦¬QîÕië{´‹ýõ¦°/–¯o'¬×‹?)ýÄúGç©Î›À7Ë?÷’öØÿ|߸ööÅòöE‘«]³eîk¥¾PÔ©ÉÇÝöŸ2Ê0oËÞc g»PÓ&éï[\Xù;¿°K/¨Ì9®tømޱݯ©Lì²øí„µžn•vÍ[Y½Ìq¬ü¡6€)Á8ü¹üöÒ…u¶l~Q7éŒO¬}oþR »î“5î ûx9ýaÝ-1ã˜}î“8¾Üöw½J=¯)hiûÜ'¥Î…öãÍLeí@´­÷[©Ñ忰Ȧ.6r±Ï²¿ßK4ã%Çí—8±éЊye.€Õ‹ ¨÷bã|o:`mò[Üóèq†±ÝäO"/þŒ­0öwñ'_m'%íþ†ÔÞö~Gt}´Ï¸ò—ÉïŸöÔÄkŸq®Vë:œ1ìš·Âmîg”vÞÃM.kaeåJÎRpõô}ð¢‰:Z`2°y›ªâo[¼×(Ôn°ÒŠa/k…¿¦?ÎY¤Š5æ´¦4ýq:Î…œrè Øå×½6ý:pŸn†í¦_‡ÔX±ãùþ8=Jü¡“ öÃë5¯Pc®éC½p˜pí¤?Õéq›Äv3Ó ½eWì‹ôÇ!*wOÐíÐôÇùò´þÔû·Òîœ7B?Üí'6yæÕ湯߉͸2ÆÌã{z6ó8Tâ©ý[3nb5û[x+ÇìÜïºüqª&)~–?NÕRdǽ™þ8ÃJÎRîšþ8ÜŠæ·(#6õ'¹Ôà‰ÀÝ^³gã?D wååkTê°ià˜e=ŽTrù»æ.¬ìu¯3±º´óÊ˜Ž¿Í–&_™7"8³Gk Óç¥ø‡Õn©.ãõ8bUC›ñ“õ8ǽïgž°´ú‹ã°êq¸œg>àÝ¢Y£Zkâ âšõ8Z×:áR³G­ð¨3þ6[}Àx_'ˆ1iÖãh許 lΛ¹–øä„5ëq¬‚e Àö¥yXú ßѬÇ1®} ÒîXúˆ¥]ÂowÖãÞ5оQ]þo%nÿUʸ°ºúPöj­jÖãx­‡<î´°/²Ç{ÙC=άÇñVÖCkŸÔ¬Ç1¯óÖð^’þ8Ž÷¾3NJ߬ôÇq¬=;°qDMwÇXñW ô®ºÅ'ÔôÕä—„”;W¸áoÓ¥)‰Z21GM~ITðÖSóÅýªë ÞÒjýÉ’—FΈúG²`ïöþÑŸìe¿n:-NÙ¨Ú,°Î|,NYÕq8¢:/]˲&¿¿Ç³’µ¿^âž<ð·éÒÀ,{¾Üåܲþ¸ÆSÙ›þ¦Ã{‰W—vÓß´êÞ¶ïœå…MáѼ¼MQ+M³‡Ð_ä<«ñnŸõ8%×ßé°…Y7>jûËY¾é/ÞÓK˜û&7cØ®.N+ý5¸Ó¦›0³oâö°‡Rïõ¸ŸYá½2bcå6Øû>¶å'<Š/¢tàUØò®¾ÞA{ÌRïU*ÇûÀb»ãWþâÀ*`yÿÛŽ­BM+ë·m°Ø®.=Ò ûk+OVûë°¾×9½øÊ °±ÏÕëx6–z¯¥Ý3ŸYK½×’×»Ú…þ¦ÞkÉë]ØØù· Ë€å}NíÂÂ\¤~IÑZ=Ä£,õKŒ69@8-õK ¹Í'V°K¿¤¾cU±‘º(›vá.g©_âºi´w-õKŠŸðÉ×€˜˜¥~Iñ)>±ï3Zº3õndð–¶¥÷*ZÞèÎj[z¯Qïë¡ôVS'§ÞM°¿©÷Ê›þö7õ^Ñ_úâ¸`–^PåJ8ÝïQ¶ô^¹¶‹¹P[z¯õÐ ¾ó–z¯½ÞíOýÀŽÔM*ýí îž¶ô^ñ^­g¨Æ!õ^I¸ð^¸€–z¯„q9ýN=,lê½—½9þ¶9oCêÜ@«ÝRïu vÞ‰…÷-½WÒºv o©÷ÊèOvroá®l¼tÕÊ]Ž:Äm齎Ê/Amy[z¯èGÇ|p[z¯Tâ0umé½V¬a.Éø£Úà[xœ¿p®³ï5;Ïk#Ä*ŒèÒ™„ûƒ,=¼}ŒŸ™,=¼9µ1Û]óVr3jðÆ1Y:†Œ¹¤FøÝÞ·Ëÿ†¸—ÈÒ1,¹¤ã‚Øþ$¾õš ìCêái‰éR‡x”-½WŒ­Èq¥èØnÎjÖûí[ßþÂ.½WmxF‘C¼Ï–Þ+¶«Çz(íÒê/î·¼÷-½Wí˜wL0ÇKïµ˜í¸ª0¶+ ‹ñõ¯´ÕÂêÂ*æ$¼Hlé½b=™Ÿá!³Ï¼Õ»‘ão‹ýyÇ“â0¶ô^qíç¾ýmé½V½¶ÖA“Ï–Þ«-Іõ±¶ô^7X/íò/l§Ò®üÄJiWb£´k¿°DPGeK﵎iClüĶ»ô^«§æØ®÷ýÚ9K^@SÒœökòL=€Îžùدõ³ŒE°Ÿý†±x6ð,5—ýÞ­-½W)õ¼æPûkKïUª_(á/½Wô*:½E¡æÕ–Þ«pÉ¡ /¢-½×š»ÁØ‡Ô ÕM­}ß|Œªv/“ÿïÙûôˆˆZ»u¡žz¯ÇC”+ÛMÝPªš|XÃä/‰›ºüØõ~óM­=6ßoÕ[´Ôð{ÆKÜwõþØßÔ •²ƒ ûàËãd£O€cË;¥?ixÆKŒy£#€ïnkQû ØŒ—W]á†}ÈxɈ ÆlÅKÚNϱ6ã\,ö!ã\cÓ_8Ï<ã%¼Yë¨ñá}Å'¹?éŸyÆK˜vú“0/±é/èpzÆK†lô2 vÅ•«önŦΓGÕhíGÏxÉq&nôaŽ3^òE”ù=f´ò¬s‘z¯gR ±„k'õ^û(9Ÿ@]§O]~ÙóßXÝPÆfÝ"—uCÛœü;uCGt{úGŸû͸oÎ_ìÔ m|Ä/lìÔ e¦M`§n¨Å¨í‚Eô©z 0V,ŽÃÔ å: ûà³F—­ŒjUFê—4ªq®Z ‘ú%­Æ^£ƒh¤~I‹ú.ì†Ø¬[¤êçÓ!Ž©_Òµú>tõ@Y·Õ/©3Œ-C«ã0°©;c5~Ö›-½Âç2…9Ný’+…C/8±ôKÎ=p.R¿„¤èDWx˜ãÔ/!.ñ>£†ífÝ"—˜šÃšLýªž!* ïKïyg)h—ÆÒ{%­Z {¥÷Jµ®N@‡3–~ UÝÅñêHý’%&ÆáØnÖwWOVðŒÔ/ù"HÕrA»©_rJKXƒµóÑ/)ÃÆlé—X«9ÀÀ>¬úî’ çmé½6’ªã»ô^Gå÷ÝC_'véΔz'ü°ïkOÞ äê‚?uÂZj¹ æÒöuÍ״ØIß×Ä_GœòCwæÒ­ƒñ•º3-ºO}wÒ7 ùè)Ä“¾QÈGCŸôBla½ê!vé`?é…¬ï[YgEß(´í5>ÎÚ_àLGê½n°ÇWHK¿´…†€¿t¤~ÉÛPÛ-”÷šPþÏ ôKBè<ùqþlW——N©' ¼ï,œê¥³Áú// 6~yéTìòÇÑíf=ÎÆKgƒ¥ôÒa¼Wo°#½t˜Ÿ±œ^:o°’^:o°š^:o°–^:o~›§—N¹§n°‘^:ܱW¼äôÒáöŒí饳ÃÂYþ8<Þ`Gzé¼Árzéì~b%½tÞ`5½tvã‹XK/7XO/7ØH/Øä—è›v“_BoÆ!ÏüÅ\d=ÎÆ»jƒ]~‹Åûgƒ]¾}ÅÏgƒ]yœ7X[5üúŒõôÒ)q£ 6ÒK§ÄÄ{ÎÕòÒñgl_^:ãKËKçv,/zÆò// V~yél°º¼tøkËKçÖ——ÎxÆÆòÒyƦ?ÎxÓnïËK‡ž±´¼t^`ÇòÒyåå¥ó+ËKçV——Î ¬-/X_^:/Æ7–—Îóz¸â%——ÎóšLœ—~ ,-/zöÝß"v,/zþÞïÊ–——Níï=vu>ÛÒKÇëY}çZX]^:õüm83Î5¨•vï™ëËKÇ+–ËK§ÄVîr"ÿ=K]——Nõo1øm/i6j»Šíæû­ÕøŽ ŒÃÒ{å’Ãö»õʉÍw€—÷ߥ Ol¾»ûÆ›¦ÃÚŸw7¾ ý^FxbíWÆïO¯›ïn*ñ‡ãz‡ýÍwwõ¢6èÃÒ{í…ƒa ÇlùãT. ÁÚYñ’úQàžr‰-\5m÷xÉ)ÑžØÂ!ëˆM]µ¨µ´w ù›ºj*£Æ®`Mf¼äsìܼ=pÌ2Î¥…ÿË,ØnƹFÅÞCjÿ=Kk[b¤ã^šrbûž¹ŒÃŠ—Ü X&åçø/)k‡\aV¼Ä6|ûÀß¶tzkœkàšÌxÉi–VãQØ_[ØÂï…ø^ûñ:^p|c¯kyŘ`ŽW¼Äk:~‡þâ%\cLØ.­˜ÍF›Û÷ɯäÊú|iä.,'¶ä’0Æt`%±$ [ç~KqX]ýEk÷ú·k¿°tþ¬ÿŠ1u»×ØØøÕîqå¦;ÖÚ>ÖvƱ}?;ãF÷˜Ø©u±×½õlwÑ;ö1?Û%˜‹?½×€ú¬ã¿í£j€•¸ÇÚ¬ï׺ý38^ìq øë?ö›)èÃÒ{Eä³]†ßæ´× ¶S³Æ×Ç^+XÏ{Ô,¯Ü"Ö¼~fò›óFEgä¬Çìg¿á˜;Ž™í5“Ïy+c6ï“Ñýþf8牕X¦ãpñKŽ{j¬„@£'îëçoX;Aé;ɆýU…9Ž‘XðÉ<é)çNpö°TÆ7òœDþεv°¿kÞz]¿ sœz¯Çõ«V%b³ŽŠv÷_ønf=Õœ0|»{[õÝ5ßÍðéY3Bj=ν~èÀÒªG/œSÈ_Ø‘uîÅË,îW Ë+ÖVú{¿†Ø¬Ëçšï:›uù­òiá8Ì:ª³°¬æÜ °YG%}ƒÅv—ž‚ל;Ü{Ï:*ñ؇žuT¼ñõ¼{ºج£ªy² vé`˜<÷!머Ö3Ôß–uTNzgìCÖQY©D®Ä© ”:#;NÌÅ/ý’‹¯k=ëqLkÝW7èCÖãm8c–õ8}³›uT¢•ÛÜ`Ïg=ŽmêP`e=Žxí/á>Îzê5+§fMj!mja:ö7ë¨|S Óq²ŽŠKePÇß–uT}×.ü¶¬Ç¶‚þf=Îàêi\±YGÕLk`ÌFÖQm~¬ß±ò¶ÁÂúYGÕHÇw|tÕJ|ç.Gvbm¯í¶‰ŸõáK‹®U,ö7먬ԓU,·U%ÏØ¬£¢ÝÚyËzœˆÂÙ`³Žªjh#ïÀ.ÃÎsÁ+£üPÏpjƒfÝWá<Õ¹Èzœ¨5™%FÚ³'Fù–ØkÏzœh¼™cXëYã/°=¼Z 1¦žþ8›ºßôÇ!jöÜ^‚¥Ý{9û‰ýèrÅÂÚIœ¾‹OâÝhù GÙóìÇO˜Ÿ±ñK«²öW—ßbùf9è4œü£µ/6cë7õ^á K,ìc]º¡ºÁÂZO½W—]»°vRïÕÇfýâž_z¯ôŠµÔ†/°s¿¹?ccÕ"Êão[z¯½ó3¶§VðxîƒÑÒJ«ÚÆwÅ;–¦YTì,g½Õýún—.¬¤Ž@ÕûNEMlꪅôîØÔUÛi1C̦§~IïÕ?¶ß}ÚìÌ¿Q@¼ïôì~ïÃ/‘ó^]|)`®x‰Þ¨/2ìÌw›ZñE”»÷ij#∨1z`ùÂJŒ‚UÁß&Ù‡Âi ð"9­fÞ” ßþËþpagÞT*_CZ`}Ö(HÇ+Gk€ ;œJŽ• ®ÑcÎ[‹òÛ |®lŸ5£Ôö±+ŒCÌyk^r¬_ò¶ ;ò·5.s¡í>W¼äóì ÖiÀzXõ8L°Üqýf¼„ƦäÁ~‹¬ë„9a)gId¾»—y#ð*:°¹ßÜÊš ¿µ™ïfm£´ ñjs¿éPl··».ख़GoQæ tNÏ”â… ×Žíö»?Ãþ¦½Öë•󗚤g©Pi—Úþ¦ÒLk»Úµl·ä°¼=Îåüm£ìÍØßÈßVùD0=y ­æò‰a|{Ï>À:;—?þ¶N9Ç0fç•íîûp`ç¼9ÆSO)…ßvñKŽuf½`y Væú5GlgB¬ÎvE G‹î¾rÖò· ®sóÖ'/¨cŒ´ÛÝ[éÀƬµ+îà£{F¿/ìÇßü Ë Ú½â%—8zx XïË›ú\£#Ve`RŸkŸ¶ÖÛ]ºjPû0¾é ëk6sØø¥3íýîß}›{Ÿ×k|aϧ~‰rÕWvÜCKï•ûK!؇œ·ÖP»”£#6ç­­UçÒnÎú‚Ÿ¥¸ cÆkÞý‡@Ž•xÍã¼IÇývñKÆñ†¬¾ààqr`'’£i¹Û œg2ù“[”v´+“÷Âxö †{]ü’sA éé…ªØîÚo‚Ú°.æb齪 ïdwü¶,½WeÔ{Â5¹ô^µøoúý)sbsÞ¡gÈ-ca3ÿ6j&opö-½W Ô{5Æõ»ô^{jRßuóOÚÙÂb®™¿CKïu´’ßâ;ö¿íøÆ*#–ó›Ò!×LKïuÀYm§œ|[–ÞëèÈiø¢Ð-ìš·Ž~u_œ²…]óo?ï°v–Þ+žëqZx@»Kïutä¢|Õo.l_Xô´c‡¥÷:J<ª àÒÒ{%ÑÔË¿°½•vå'v”võ'ÖJ»öë·Q^™ÿÄÞé`'6ösq–/c»Þ~aG‡¾FôŒíËßéE»´´lõ;––-=å„ÇŠ—PÕ‰ŽíÊÒ²­}Àµžñ’¡­žs‘ñ’Q9pÀÁ/­æ»÷&-ÿ·: yÿ‘ñÚäÑ1ÿ62^B•;î÷§Á‰¥äkÔ+ŒoòKzÕOu¾ÑH~Iï²i›,OB~nW÷^‡ÎÉä—´V÷ÞFê½n©XX“©÷c£Qƒ{3õ^£ñ ãñ×]»0É/ñÁ/°ciÙ>æ°GòKÌ»>cSO7~·¥™ïÞìã:éK[ë‡6X_º·ã¹¿éK+nOyé‘ü¥¡ÏØôv—g,¥óxMèþ¦Ý9oìúVÒ·Ú_`ç¼qÓnúwÛ›v?þÝ/°éßÝ^´›ü²í&¿„F{V,-Üx\gÉ/Ùhän°üK#wƒ•_¹¬þÒÈÝ`í—Fîë¿4r7ØX¹%ÿV°W¼$¾}×ÿ¶/ÜXZ¹/°ciä¾è//\yÆÊÒÈåg¬¦FnÑÿunݸâ%§FnÉûo°ž¹o°‘¹/°ÞR#w×_ønzOÜÏXJÜݘ!v,\yÆòÒÈÕg¬,ÜXMÜ7}X>+o~[ò‚Ú›1Kž¹¼˜‹ô檼Áö¥‘ÏXZ¹þŒK#מ±¼4rŸç⊗\¹‚ú›ï»ÁÚÒÈý›‹ñ ë¿4r7ØX¹ã Ë­ýÒÈÝ`û/Ü ––F.?cÇÒÈÏX^¹/°²4ré«K#÷Ö–FnÆúÒÈ}¥‘û¸‡¸·¥‘ûÛ—Fî ,-Üر4rŸ[祑û+K#÷y.’_¢oÖY·_¹å;Ä—~É¥‘ëÏØH\êOßc¾ôK.ÜM°}iänÎI,-ܲ7ÞèLciärÅ `ù—F®‹c»²4r½b±¿úK#×Åk¿4r]îþYÖ×yVy挿-–Fnmⓜú%]«ï™à¼-½×Ö7Xl7õ6wû^ú0¶hq®‡~I‰½ÖòXz U_#p=¤~I¯¾àjŽãðÑÁ(X½ ^z¯UoPksÞ¤Ô¡H@LŒ—Þ«ŽšK‚¸/½×Qr‚º¼ôKFñbðÁ;°9oÃJþMA‹ƒ—~I+¹Ìëaé—´2lkãÔ/iVâÊGð·å~³Ú 샯þ–v;¼yyé—´/9ž40oK¿¤Uý†Z ^ú%­ê—4ÆvsÞz“ª3{èO¿¤äyÁcêÀ.ÝвßÎø`eaK´l¬.í–-öᣧ@Oš$,=…þ¤IÂz¯íI“„µe yëMÖO]>~‡øzXJ¬—v¹ôa$¶¼EPŸöÀ®ºüRK` øÊüÑ/nhüº{îXý…=}];õ¹”€ã}ê— Äú/lkÀÿe½ÞÊ©I<~¶¶t\ËÈa[óïX?®‚ #Àö™7l—°Ý™ØŽœSNý Aèf¥²×fa¤ùžØ¥¯ ZÁ|œ%À e³¥ÿe|A“„Í«QÆ·ãøÆŠ½¿[N/{K/3ª÷(ÐÁ`ϸò°r/aSÀÒ^Ûâ\ëcæKÃëZ‡:ö¹ßjýùñ4ž.»$V¢¬3ÅþN=X¿KïÕòtOŽYæq°¦øÄlæq0¯wÑêa=Dæq*»àxK꽪ռ4jI[u‹Õá¾üO,e=Y«õo|Ÿ7i#kÚ¨ÔëÔ J›ïîfPSq´k†í¦?s/u€P+'W¼„¿É:Ÿ=OL€q.£ÂÿíÔ±…õ ëÁ^xÅP(/QÔ#…Z Éx‰I‰?Ðýø>±3^2ÂJÍ•vê½*ÎÛ¹U€Ÿ*+^¢¢—P',—¦ïxÆÊOMߊեéËÏX[š¾ãëKÓ—ž±±4}û#–ÚÒômÏØžš¾ÏXJMß7Ø‘š¾âÏXNMß7XIMß7XMMß7XKMß7XOMß7ãKÓ÷y.F[š¾Ïëaô¥é»Y“ Xú©é[±#5}mÓßX^š¾›>tÀÊÒô-c†|º4}¹b °–š¾5‡‚\ë>YóY±4}{ÅÞßè’ñ’Ö6\ƒqÈxI«š/N}ÈxI«ž,NÀ#•/ÙpžPcTV¼„¥ÖA¬BxæßŒGyb-púD}Çv¸?[Ö"6\k äâ—lj/¬vÖ-ïú(ÚšpOɺŹÒw» Ø™7õox·—Œ—´^b+SŒ—4‘^° ë7ã%-ŠÖ‰!6ã%TõŠ‘»(+^"¥vÒPëZ>z¯…{kR~[ƹ¤pd užD>:½E9 FA4õ¹ú®¾Ö™.}®McÀ¼iú›nÎ÷œ“«§uôw²€w·¬zœV8§­C]‡¬zœVrIfô–~b½´»æ­Ô(t*íòO¬”våW:zȪǩس^°ökÌHK»¾Ÿ‹+TßnýŸòÏ’øÌž¿CA']V=N«uI ïž«§•º$+–û=tæ[ -Áû½y†ê ¶-Y3ª'¡0~[>õ8%slE¸s­zœ(zAÚñ»êq¢pC• ÛÍzœ(ßMuˆñkÖãŒ(Z^†š’úÑ{-~&°&ué½W¯ÎŽí¦ÞkTŽ,x>Ø9oCkþ˜¡.I³ghÉ‹¸Á\³gP½âÚѬÇ9îüåþkðÐÔ{%­¹fUlwÎÛYÄ^±Ðnê½öØè”uĦïºÔZ#Á>¤Þk'Ùø_ 6õ¹bÃÀ9î©Ï%%wë ÄÚSŸ«×†ZÍzœcgÚS._³'¢òí»ãoË:*­5Aõ8Á›1ƒºÍzœ¨yÓ:fYãÕSsƒÍ:ªQyñ˜ լDZzFù]¾ýÄòÒ²õÇõõ8Vë!ïëšõ8µî@ ±YG%¶Ñ<ÄßæKË6žt5ëqÄwº‹€Ízœõ8ÒkÍ`éoÖã°÷ ÖïXº3ϵšõ8Ü7uû+K˶ž%„ýÍ:*®uJ8f«ŽÊjÍ Ôgiê—PÔu6p­§~ÉØü¶†k=õKŽïHÅB9˜ž±KÏœÛ3v}ßF+*Ö;²>klÚ…óaðªÏÚ´‹¿M~ÕgÖØÐUŸÕ*ÇÁ²>Kj ûà‹RÞè ¾©–õ8mXÅBý…-~‰Õ·´b“_Ru0 c6¶êqªþ¯Ä íÃ/)weØ-~I/~jÀi°U3Êòø‚ 6y T´"”±ÉS¨~Íâ±US5–DÛªÇ*z¯ŒXÅZÓ¾rÖÑïÀô“7E=Ýn†¿måMa¿òÀ•0]ySGíÝèe|?ySÔÓ%ôX5]ySÈÍ\’÷ЇÔ{=¦Âë 8 ¶ø%È銿mñK4P{÷lw,,úóKæÍVÞx+~ò«+kuÀŠÉì³ß·öÔ'Öö{óÔÓ%ümk¿5ÔÈU*s ‹¼•0†ß–ü’a%†Wôt-ù%£Æ‹ž®%¿dƒ-zº–ü’v”vù'ÖJ»òë·=]sý‰E=]sÛ不 wÿ1o—ž.| =öëáÒÓ…;A´ý:;õtAÒbÍ[«zºPçnAû}qééÂøÆg¿.JùÎÇg¿•ºf­J‹Ï÷­Ö“A,Þ¿¤Æ2%ÛÍyÓÊ Ûõ…­µàx7Zü­|Ïy=_ü-Ú6`Ž}ñKª¾Üç¨þîy«yÞwD_ü’ÑøI¿Ï“_Ò¸h¸/o±RÞ±±Ê#…ï…/?᪡-èÏàËO˜wžcØÌãlî\ZøÞ—ÿ[ÕSÀo¬÷™8®Q•Ÿ Üfï´Ú­¾g û02ŸUö¦£/—÷¥cXûÛ@»ß{úöõ’³샦îbɹs0öaæŽkå¾,Ö³]CO–¯çÔÂFæ!ËÇÐÁ)}2­r뼜új·pуÃiéOBžÌO{{M›ÓØ÷á,0lž“ƒê\€ö‚Sž“•ßçòþNéß]ymŽß§äs©o´Ká| äsq­çeðvʸrßhv‚Öµäsyåµa½ˆäsqÉ;‡ÓGò¹:ÕzHà‰yúãw…Ê2Äæ9Yc LJ¹òËCÜP§×Çâsñf­ã˜%ŸKZ­%pìCò¹(6|{Ä&Ÿ«^s‡ä—x ªívÀö™ëp‘R³o=¿ø%|\¸ÆGù^ðÔÃ;~G©-éx®3gŠæ¡~ß>õ82 v`»³§·Ö êüSÃÿ ôoñO=N©£ 28׳§E w ¨Ë÷¬Ça¡Š…ºÏz­ºIAxVKêx>ž²ÚðFw™ù71¨«;°Í±¼j‚:ö÷níxb§^/ù€pÄÎyû"N}æ­þ6Ë1+¹/¥2¾Ëÿ ÖÃ9ð&sYó&è¯ç®°/4çÍAÛâÀ6¨gðÞ« 7ÍMsàú-½×êÉMXSáÉ/¡ÊÔ«ðä— ê›Ø ¬‡ä— –ç;LòK†ká)¶›ü’G°ã~K~ s`¬­»ÂšÔ¥ƒÙËʰ¶t0ªâúµ¥ƒáUG à·ÙÒWìƒ)x>zòK5}O,ø}¹­¼)ÄÏë>ž}¶xAŧ­)Þ£’_"è!~>e Ñ“_®£`ÁÔ“_rôýÉ> ¤?l,-XÐâð¥_"ŒñÉ!x_ú%›xªbsÞ¢xæ}å$v¤6·U,ޝ/]lÅõkž„î©‹­QæØ¼<ù\o²ë‰ãë¶Úm8¾Š{Óý?`Ü»°QÖ™ç¼QÇñ Ï1µßàîÉ'½~[¬ý¨©ó±|üÃ~öþ¶À©¯zœ(1&a\«G¢Öoâ˜}üqЉž;Ÿzœ’C1ÃoÖ'^RxºaŒ}ÈxÉ(ëìæY:±/ŽçÎñ½¸Ï[¬x jšßB¸ŸÅŠ—0Ô‹\–9ØŒ—°!V¼ôaÅ'ÏÃúãh+à¸&¿êfvÕ¿úöu‡XE´Uÿæ¸&Ùûkûþ×g‡ïf´ç‚ZÓN4_¢­8x6É)Éíö¶‰]T,Äö}¬MÏôvŹ}ûXpŽûŠs™Õüü¶¾ÞÝ>JÍ+ø¼FÖãX-5¯Œ}ÐýZ·ê8¾=ç Ï?ž•eÖ~ .5¯[Œ¾ö¬³³æΨ ¶°µæ´…‚Ö~kTj^!‡´ö[ãRóêØ‡±°Rj^Áï+V¼„K|½Ô¼ÆŠ—l°Xó/ÕG·Ô¼FÆK6í–š× ÿ‰Åš×ÈxÉà’(5¯1Ú¯1#¬Ý‰Ñ÷sQäéN,íç¸cøøÄ~æmSóª€åýšìX{be¿ÖOЏâ8¬ýV´8Ž%‰ý]û­èHSìƒïχóÛM8fk¿•ÚI1ˆµ¯ýVó ò-Á}}c‹NCmj¤Ÿð¨<~uÜC¼ÎɪƒA ¼æ­äL±+>Yk5 j #ý„©æÔ¾(H ›ñɺ/넃3>Ù6Z žóÖu7è¯d|rH<Åi#ù%½Õ߆þz‘ü’¦E§×œ°Ÿ56hs‘ü’”)ð¶CfUXÉã˜8b3>9ÊÝD±¿–±Á:¾Âˆõ¬õ´‚uàs…¤†èÆ¿Æ!õKŽÿÁŸj^#õKÌkÝ á˜-ý®žMùØXú%­úîþ¶~IÍ¢>m¤~‰zÐãZOý’ãÊUcüely©ojKàŒJýmµæµb³ÞÔhã{ófYo:J|Ç çØ’gÞZ­Ÿwø^XÖ›jWäÆÃ²ÞtW¿ ¹ƒ0^^|µvr`³Þ´æM}àÚ±UoZ4´½áù`Yo:Ê8r%ÂV½iÕ20ȇ¥oŸÖvòCáYoJ\±8¾ÞÓ‹¯ò'xáéÛ'%cÈE Oß¾Z?oŠçºszñ•=¿iW–W,Ü<ëM{«œSyÓÊ{…¼Sd¼Ä«/í¦ÝÌ›¶6û›þ8¦õ^‚Úç‘z¯FµNX!ï©÷z|æå«Y¿ôÜ[õ›òTK?ÕÕE꽊»=`Ï\þzúŒí?ýõ*––Æó ìH¿¤¼ø3u~IÑŸ±²ü’â«Ë/Éž±¶ü’⡾åÀzú%±?c#ý’¾òNãöªÇ9Šu>v/}?±=uYß`)uYK]Ò;~é²n°¼tYÇ3V–.kÆjê²VÎÿ’vb-uY‹×Ëë©Ë*òŒ¥Ë:±Yc½Ôzn°}é²ög,-]ÖöŒK—õ–—.ë ¬,]ÖýÕ¥Ëúb,uY…Ÿ±žº¬/æ8õ^ýÍ:Ëzœ.«ÝéÃ'¶/]ÖÍzPÀRê²úf|°#uY}Ó‡XN]ÖØŒo¬,]V-XÇþê/]VÏ››¾µ¿߀Ô{u.µ“6Ç!–fgõþ‡U#ÅkÀà^}`³gs‡¹§]Oìò£ªkr8ô——U=KŽóÏz§q¿{XIÝÛÂ1ˆGØô}hõÞöÅòÇÁÜ̉e3ßûI\õC89o^ë‡î–Þÿ=_ Y»Ã5vå0éÓªövÅv³Þ´úF_]ømKïµW}9ˆGX^cVõåöPê½6+\µ‹}X~\[ƒñ]þ8Ry¤æ89oZæB@îÀæ¼)UžnƒqÐÜo^ÞzxïÓ¾ôt ÏÜ ú 9oÕƒùXeØnΗX&÷s¡9oV<ÒŽ§8¶+¿|£Ž+&Ì….?ªrWD°7uùQ•óìärÖ×ø¾2è”ØXãP~›a»©÷Ú¸ðwÄö…-¿­ b?óöäGu`×¼•ú8oésŒƒ4îùåS=Ú?nKصߪé]zäÄæ¼Qm÷NA:±ž¾QŠßX(‘<±©g^ï½c½å÷¸pÊZ èƒ÷…Å;ÁqÀø~üq¸jsèïÇîQÇçÜïšß§%yú;Üñ\Ã>,¸œÞU¤ÐnÎú®Ÿat¹ù€Øy/1ÿó™Ö`}­_ÌåY%.ìò‹R+G7‰…ÿžJEs=ÔKŸ×\‚þÆœ·¯Xü—ìù …ÅûYc\;/iQòCr·S9±é»^ýÜ™nËéÄÎyãa„ãk]à·Íûä1'ÅëEÇ!ã%çzœa½ìú¾1jRs+íæ¼E™7¿ÏqO?ác™1`ÍŒÛW]3æ°µÝ}l,íϳóÈpì:'!~vlÁfØnž“p̨y윷㇠W}/½‰Mÿ7)úDý¾7{Ëw@/ïãrNööñkõœ4ÀFžE÷¬lŸ¾´ÖÊûâXÚ ØžXÒzNb»ùhåÛh`—€Výê{ ôÍy«õóÔáìë/i\î%r§%ŸØÏ9Yî¿ öqïyNFy_7l7}ûZùѸsìœ7¦³ÀÒ<'OcŸÚnlž“ZxÛü;ç-ZÑùJ=,ìÈ3ªá÷­‡ó}_,?ácç½öqú “€Gû饰ßHs|!¦p`Y±éÿ6úFõoÎÞÄzŽCï*"Äf¼ä^H=½¶Î’Œ—t%-Ø›ŒÑ‰M¿ÅÖð[mÀoß}ÏÛ1=öÅÈ{Ikè fr»ªœØ¼— ¶žÚ ؼ— ð´SÎû {?@ý®!]XËõ 8Çì^Ûw`Wý[§RÛ×±©êåì3àÛŸWä•Ï*ïÍÀyc]í–ºñÀómµ+¥^Oú}­óÜoŒwûÓó‘áì»â%¶6bÀ˜I[žQö|‡v%}×;!vð@l~ßð{údâ~“Ô jÅ'Sï¥U'vÆ'o¸b»½ü¶Ÿìã?Ó¥¿šØ(ž¥àIx`ç9ÙÑköò,€õëó†¿íøØÀ\ج[¤½Öëá˜y®³^ÛìCd»àÁ|¾7{ñK®}QúP·¬Ç᪛ÄP£p`3ß-„:OÇ0Â\d=©u3ø_õ8ݨÔÍö7ëqPÏ|œÖxØnÖ¿¡®Ï…Å1Ëzœ^ô˜Ž]Œíúªó)õ86p²þ­¬S#ê0¾ËOxŒRÒð°üq,ðÍË*ðFO~Éq”z2Á}‘ñn½Ö©1ü¶Œ— äežö8Çñ©[l¥†Øœ7uŽÌ[Öã0Æ (Ç!}ÄK¬¸á·%ëq8JNè^_x>&¶×˜.¾7éãSø¿Ç­ÜûÑ/ÑšÁv_¹èñ;Á}’–?Nãr÷ û°øÊVtÕ¼a»É3oweÛMžy'\“ a|b“gÞ×H#ŸØä™÷(uIŽ}Xõ8ÒkŽÙªÇ!ÂZ¹ã¹}Xõ89ýçá^M«÷æñ¹x·Pê— +ãK r–¯}Ì¥ž,`í¤~ ÷âÉýŧ]Ø™ ôa:)ŠÛõäÎOîÖJg|’Fßðia¨%¶ê—Ø½ÆæÀÎø$µ’K:ž-Т…ÕÚ_˜cJýÉÊ‹ÿâé.lêOjɱ¶»ô'½ö—`.H—Ndõt3ÄÚêC©ÝéóF©?‰5ƒÇ»%üþÖ#JýIU¬å²ï8×…WFM¾8-h°WŽRWg6 °9o¹Eû'ß{~b“ÏEfEw± Àæ¼áÙ§°ÿîRSL}ÐÄB[O*ví7ƺE#ÇñÍýÒK „`cõ¡ÌñÀyãÏ~+qºk’Ø5oQ5 þKYs¼%+—õ®÷z`GzŽm|å€DYs<ª',!6ug¸Ö_0ä(ëqÍ-ý»|ÄjA’Ò'Äj»ç%NÝ¢Z—¹[’¬ëðÊÅ&àU¤XõÁ«c&ËG¬Üw̱“÷êDµ8 $“gîU»Érî”õ8¦å{aîØnúÒŽ¢³g w`Ó—¶U-l7ë:4žêNË”ô'«õ8wKΛõ8Çg³jšŒCÖãHTo°†ã›õ8"Zë³ÖNÖãÕz†{*õĦ˜×ºƒÀõõ8\k' ¹(”õ8¼ñÁkçCÖã|]Jÿ° {3ëq†ÖÚ‡»$å‰M±M=ã:Ëzœ3ÈR°ÚÍzªž„6€+A¶|Äj}á½DòÄ.1«ZŠ k2ëqºU²¡°lùˆÉ ìò«û­b?>bòÜ_¿8éÚvúØé³rš¸>qÝɧ^PTîÁ;užDâI7ÿÀ¦ÎÓý±ö;ã“®:ÿvÆ'A8ñvÆ'»¾ÁÎï›÷7}°¥ù=žÇ,õ'{ëÏØ¹ßŽƒÙ±ÑÖù Ïؾ¼Sü‰M«§z²l°©T=Y6X^Þ)ñŒ•åO5 ”þ8>nŸXKï”ñ¢]ŸµßÂ&#÷fÀ>ŽHï”áb‹­¥wŠiÅ `ïµäÆ7Xúå²ÁŽåÒŸ±œÞ)ÍŸ±’Þ)­ò á®1š.ïzÆÚòNiÏØY×q»ÈÿÄÎys}Ä^ü’+¶ýüÛú¬ë~ÆÎºŽ;¬vLïƒuºí/bg]Gø‹1»ø%—wJÆZz§´ãëË;…×YôN¡Íz€ýF-½SÆK€íéRϨ5#ù%ÌõLð4ó¦Ju7¸ï šyÓ0ê‹}˜<…30U°cFËgÅqí(r…}|VŠV¥)ŽïOŸeÅñ]u¾áñÃ8Œ¹ß„a..ùÕ{LaŒ¹ßzÀÙwÅS °s¿µÞ /Ó€/7®xÉ)JÖ;Ó´!–çYB sØô]î7±raÙ€Çä§d¶«³ö ëqÎíÚ;`g¾›záÃÜ–ôÄNžB»›‰\9w‚È“§0¼¾çiðÌwSåáèbØYGåRtY©C^od=N#E¬tÈÝŽ«ÇŽÅëØžµ\­zæa»2Ï Ô#ý²ƒ_X}ð¦[ÆÁæ `=ÐI3Cì<'» ìÓÀ>,¾rÕ,rx£I¾r/~Týns|b“ÏU9ÞÝáî9dñ¹¼×vá|äáu/í2¼»GòK¬—;LÇúã‘ü’\ùöÀuÉ/õnÔ âr#ù%ã.>¹Ø ¾’¼ V¾Yí^~b#9§Žg‰Û] ô,›HžMGž+äõ†æ~Cç1•ùØ¡³nѱ– NùØ›:÷›Å¨¿ ârC9×zá Ÿ…vç~c/þd­ãFç~3+ß·V¾Ýjùïµö`íhž“^î´MðÛ­ó^bRj Ï1|-ßZÖd»SèNlú-ŽR‹x¬èƒQžQæëc‡ÍyëVõ¶Ôj ›û­i©µoQ~Ûœ·M ïÀ6çmXÔ½ ujÃæ9Ùyà±7Âqð¬ýå·yùmÉ{µòvjÒ{ÕãX/ºã­ãùpÕãè)òUæbà¹sÕ㜚Ž<¼p‚=ÕãœM…›Ô:ÄûÆU£g1VýmxNz¾TË2é·h:ú«>ß„÷³“z9áqÕãœ>ŽTΨü¨ásÞrÕNz6ä!GÌyÓVxŽ…§;R¿¤ËF{ â#ã%_ÜÅ/,¬‡UãívÆK65Žlæq¨Ô¢ÏÊÕåßRs·ÀµÉ/i-ª.ÕÀñM *~ÖCòKšÒxÂròKšEõgØÔUëUc‰ ¦‚“_Ò9*x œü’/-Ž¿ñ5ÄrúTŒZ·\N~ µŽü®ðnáä—úÕÅ¿ÿ›zxFVxAðfàÅ/Aí±8-1 °K’P48ÿ¼ø%ùùãc»åä—p3ô^+µQœþ8ÚcדÛû-Ä6õ8÷; '¿$Œ« pQ¸§ÎS+¹¯ãH…9î©Ï…¹üø.“_ýù®µ;Ô;öaæqx´º&áLå«Ý¢E×+ÁÔV»Zöæ]ýÀöÌg9r"ü/Î%“ºj"…#o=¦±úPôÌéîwp`3ÿƆúëíNÏ>±™óÑ*›.Í8}ès=5î6í*ö!ó¦m×îý¬æ±ò¦£pY±~“GÏ|¬o°Ø.-­¿Ú\;c¤† XÁ›Çœ7 =¦ ÆaÈj·úr—•/½×«¦x@íŽ(ÔNò¥÷êÿ>Çú_¦!Ö/¬{}ã¸ào‹ ûµþÞ¦ã{Õã8Ѥ—äÃW=ŽWO–ÓN8DÌ´æ¸z·6ìÃXsQ±ÀcNýÉÞ6s sÁÉS êSQöëj·Î1p¿8ù%ÆÅÓ¢ƒ—ÎõäJŒ¯ŽCæßêýLÀ3ä¤òÎ|¡Öó^&Ëœ·Þ GŽŸ‹ß€‹_r¾![­„Ú>¾ø%v!`œ 1Áw3ù%Vý½œëÉ/ñ^îžÒ æ-ù%>ª¾á:[z¯R´cƒ¼ô^GÉÖñÒ{­C¿æÓV,yAEûFºÁÚI~I´òÛ¼|,ý y>÷¨&°7“_âȽoKï…åõÛì‰ÛÌÉ/‰¶Ñp…X&'¿$¨pˆ¤ã<ù%Qu±©ã÷BŸ«Ô@KÇóAŸ ÖÃ9xï[~•“ï7^~ÂÕËŒø¿¼ü„7YÃ{TÖãU¯¸X“YC¦x7¢{Yé‰Íw€•ïñqs…1K?aB}*â6ßÎX[BŽwÚô>Ío°î`þ¶ôíCô³ê9ý„ ýßøL[A—Ÿ0qñ´0\“ËOXrC•ðü]~ÂèuöÏçÅÅöÊñ†1óä½¶RÇú%Ý»°ÉW¶2oüɬ-4~ßZ/c–|åµëàÔ/éõî)Œï–X:õÞ}ˆä½6Ã>“A‰-w‚îP[Â1¶jŒö÷}è˜ò<±Kçi£û…ï–нvÓõüƒñŸ:Oç·°9om' ØC±ö›`M…Þ¥ÿ{~,sbÏ_Yü’ª'æ wpYú%Rïg8DzôK¨ÄÄ"àÎ%í£ƒQù}û ×}ç˜{Úøï0/]X½°º«?V¬ýgšÞ•|Òßùè^x =çb¾¸¶ËñéóÐ*ÏFì éó>y^•œ¥!–æç^øNÄŽ {<ß0¶ÍÞrÅKN˜âù8êõ䊗œ*ë5ãÛçûM¬¡&”w¾ß•劗œæ2­úzޝÿ'Î%×,°%ý„[wŒG}ÂÊŸ>М·ãç•+ãpÅKN½Š’¿(µÊrÅK ç¦ï$ÔÊIú ·V5…±W¦7úº–/ìœ7¯9*wCìÒWÖr®c£ÐäáµQj®>•ïØYoÚ¤xÍú(ãó†Þg( ÏÉѲÝ»ê7•Ñ3?j}‹ vÆ'›•šA <GÎÖˆ ”<:±¼´¼ðÛx/‘!™gèÅ“°5˜·¡™¿(Š_vÏ ;ç­·RK+5b2æ¼õQjŠEþ¶Xù¬»¥ú’ú%}ʈIê—ô^îgªP÷%©_òŵü«õĵžú%ÍJmßñOÁ8¤~Ióò–v|gÉÒ/ÙÔÍ Ž¬¤~É&¶]øg²ôKˆ*ß8pÂþKJHNìÇw±’þU[¾pëDzjÔlÚ…ú!‘9oÆ›ûÔuˆ¤@'yÆÎyS³öÜY:ÿ›zlúP­gÐ2f©‡×t<å!EÒßtSÏP±Ëß´Ö“¬.ŸÌÞž±KOA_`?þÕ¯8œ’~ÂÌ‚M=…ñ¦¿ò«Ýâa ºê„k±b“gnþë© ð¦Ý9o§Èæ#6ý„É^´›~Â$ò˜ï–ô¦Ê)Û`Grþå6ëÔÇã§Ÿpõ|¨Ø¼—„o°ؼ—lêq*6ï%ä/°ë>ÙsùrÅKâ4á*¼íŠ÷Iî•›_±ó>y|a_`óЛU,ÌÛUãç¥_ž±³®£ÕZ˜MòýVka6Øù~-^ŒÙ¬£Šmm|‡|ÖQÛøQç_®zœKÈmS7߀‹_¢'9Ùžja$f• éÏØqa‡KÕùÇq¸ø%ò¯¢Ã¹ÁÎ:*uÏØY3†ò36užüÙ3D’_¢C_ŒCÆK\ë´µåW'ÏØ¬7õç¹Ð–ùnäbojôÏ'ž±yÆ.œ gìÇçE–?Ž>Ö;éǧÖ\Ul~ßFG/ äûñÇ ­ØØåþŒ]þ8þ¢Ý?N­ë(Øßþ8 îàúñÇ©ë·b?þ8üŒýøã´gìòÇáÍo€]þ8µ°`?þ8Üž±Ëgø3vùãT‘Š]þ8cóÛ`M~üqÞ`—?ήˆ]þ8µÖ¨b—?Λñ]þ8übÌ–?N=ûÊzøóǑǵþç³ØÇœØÔ;Á™ºüq¬ž© Þdšþ8Ì%>©æØ_I¯—R[­àÏ{`5½^ _ùÀ `-ë³¼ÄÙp|S_ÙŠ¯‘²b¦¾òñî.ýíP˥˧’çuxóêòÇ©o' ÐPÎ|•·©|ç•ÇòN)\5Ä.Ÿ• ·®ôAæZ¯þCMqŽY“]¹ù.869Èb…3­8Ç<ùÊ*¥6µ1®É«çü]ìÖÁ›F¯z9k˜ gµKUòûEš;#vòÌ[3¬ë †¼žÊä™*5 Í{«2yæÚKÍ ð*Tæ¼EïXÂ؇9oZja:äETæ¼3o„g”ÌyZùöC±¿sÞ†ꃋC^DuÎÛñÅBN:äòUç¼æâ´[‚yÓœ7‚ïüIIm!Õœ76Ô½5Ô>WÍyÃúcÿ÷aàÿasÞÈKÍ`Íï…cg ¨ê¬ë Æ…›/À¯VÍú·(Ú |âìœ7£ŽzºêP›õ ¿~j­BmÖu sÔô¥¿6çMUK»1~µ9oÁQæÍ ?¯6ë¨h l7¸>šõ8BD¥~Ó°sÞdŒŽë¬AžA³DZ]?sØ9o‚ï¡Ë Öúâ—ÔX1ŽÃâ—Tÿ7¡=±=óè%öJùyM~ i‰ÿŠ‚§.~ M.ÀõÑä—t ÔO5±»‡Œzò‚0®|ÊËÏFS¿„¤ÔT0rö4õKˆGáp ž%©_BR4Q]kÇsÞÄŠVe€F¹FΛ6ä&9rr4õ^I yA] ±9o4Âø<`Þ"ù\¨ʧ'ŒC$ŸKrˆ¤þ¶œ7Þö)qÓ±¿9où 9ýE°¿©::êvœf¼dŒXÈgiÆKj)W ìƒ-~ Þ厫j÷ÛÒ{Eïw=¾óÀ²¥÷ŠÚMǧõ'mé½b½ÈYö5¤öÑ{õ¢Ø±KïbÅg‰:ÜKì£÷ œÈ³üžk ‹|QAìªÇ‰RcÓaÙªÇip–œw.ÐȵUƒú´Ç7¹¡¶ô^Ñ›<ªÆ³-½×^4ÍÚ¸ûÏر°øfhà»~`yaKíN»{ÕXù‰†XýÕ‡n¥]ûõÛ@bìÄ.Þ¢yÜž °±ßó;t÷‰?¶öóvr\ .ߨï×Ù^‚÷ÑÚo¥¶o8Ôlýú=Óaß4úì7-Ü[Æþ~öŽ;äPŒt>\oHlwí7+oHmØßµßjíd(ŽÃÚo%¿©´ m¬y+ÚyªS°±æ«w+xØÚXó66¹|³ñá+WíG¨]·‘ß7®µ©± ù}ëTrÍ 9šõ5‡mû`‰-\cœã‘ºjÆp_¼AØ›#².t£1Š{ˆ³ÞÔ«FcNãžµ´RòzÍ`ÞRïµõÚßÖ±3V¸îÇæ"ëq‚¥xîÞeªOìª(üÔãê†ýͺ东X¨á·¬Çq®º‹4-ëq¼žÖñÜYõ8æUSÇ7õ^öëzÀ5™z¯Ç™]u" öf꽪o¸3ŠØ¬£Úð@Ͼ¬ÇQ®9asÄfý[Û±Y·hVÆAÁÃÖ²G¸W†b²n±qÅ‚©e=«V,¼Ñ-ý„7Ö»C¥Ÿð)FŒïÔT·ôÄÈÑ‚÷¨ô¦Èm–q.K?aÒQ="€[gºt±+o°öaùwÃýA¿-½vÆ•c€Æ‡|ï¡…qåãØ`ÔRxK›FzŽAÎGŽ;"èÙÅ/9ãö†9‰hPd–õoè;I§Ä9¼/lò•…µŽq»§¬É,¼âxóÚÒ{í,¥.©aRïµjH¹Û§Þk×â•L-`.Rï•Õ:ª†íÎýv| k-"ðÌÍæ~;¦³ÖÕA=ƒyK-P«u8ÇÞW»¨“þ‘—[± óÔé‘‚EóÔéµò-¤5ƒæsÞF+ü>ÂZsI½âRçNÈË4Ϻ|mµ.ücÍS_Ù|Ó.̱/}åV×cbiTݨ©°Ô{Õ›Ü;¾SïuD©µ/5ü‹§0kø-FöÁüË«£Ö®Ã9Y—ßÉk]>ìÍÐ¥ €|å¾%¶4¸`qÅú¾µ öEÌy“î:žü’/ÓÆŸúþá—lÚ…X¦'¿DiÓn`×½dóÛ¶Ë«Ö^ Ö¤7Y5ÛZ°Oõ¦«¼xb ¨wòö©ï.^:è+çíG}÷UcŽ}H¾r«þ ÞÇÞÓ'SUêÝ^›|eÔ̸° ØÉŸüpoXìäOªDíÜ=õK”êÛ©V»§?Ž6•'?ޏû_ÙûäOkÝžx™Þ“¯¼¹ƒWl,râŽ;µÅA~í‹+üK‹ÿûÈAö¬Çņ̃õÔ/ièÉréÛÚ¤îL]g è©_ÒX*| <õKZÍ_¨ ì¯gB©*üÏzœ0Þ¬_èCÖã]Ÿ ¿Ä³'Zߊ¥å5»iöEÖãøÐM»°²ç«ÿo€WáYcµDM±]Íz†Â8°8f–õ cÓ.Ì[Öã“4ê¼á8ĪgˆÇ9Îz­ñ3ÅX¦g=ŽxÔ³Ç,ëqd3oü/œ—½Òã>Îzé^cmŽ¿MV ¬®Z‚Øå·Xk*6ëBÛó8Ī;x>£²ç$]>žQ2óÝòod»ë”yòKuÝÏï< `Çú^øã8d=Ž ­ë¿…Y#­o°p>d=«¾ÀÚú^Ðs|­‡²‡ïòñÉÜ`a²g„Ö>@\Ù—Þ«ôâ'ï×¥¯<еã[ÄSïÕ‘«F§4Ü=³G¥|³”ñŒÊz¥¢ÁvŒ̅꯳DbŽžõ8b›³ºŒ™¯5ùb.â? lò{޳‡}×.|»íSG…ûX;žÕYãWŸL3[÷’zV£v©Ûò[¬Zíe|³ç$O?~²g˜ëã7 ëq†öç³Ï~ÖQÕ{jÖã zq?ó©C?4ŠSô{ Ä}éÐ7*<<ðísŸûM$PËàxM`GbË>¦²=u±©êà»Û=u±­ð•sÂîS[¸èé:AœË}ê+oârŽÚ!îŸy{¾#úïy+ï–ôÞÔÊÕõz¯EÏf·2^è9FÕÏÝ“_ÒZX©G‡x‰'¿¤ä’.,¼c—Þ«·Zçñj_z¯a5Zžü’>È ßóÉ/éj½6ìC¬¼^ÑMêÀµŒä—PÛi„uÀ&/h”ï…PGlò‚¸Þí ´£-¿ŽÂu/çz´å×±ãx3`%kKŠçM9«£Mž¹T§ò ˆ6óÇùÊâðm‰6óÇÞÄß&âˆ]~%þ ûГg^õĿѓg^¹<àm=yæ½ä7GìXØâq^‡‘õ8;,zIFÖã´^4ÍÈá»]—ÇI‰Wßå¤O¬­ñ­ùÁþúÒßAlGÿÂè3s¬ù¢?¸~iú>h+z6t¿ŽžØ¾¼¼´‹ã@³ŽªQÑ’éŽãþ8FR="Àw2Ò‡{Ñjï oœ IíþŠÛÕôžäм^¤ŸpkUãî–>±ž¹ºâi!w{ê›u£ô—‘3#ç-J--ÈûǘóæVêEï\1(kKû0ð=cdköK8ý/bÈêþ6RŒå5[±pçŠä—Hß´KØ®,ýêMî û»ø%›\Þ¹’_¢mÓ.äÑcÅKÄ‚øüÆ2`3^‚þó|Ê]À].ã%,…;.ùãXú%nØ1ßåCu¦C!ï:–GbÍq_h~ßp0ì¤xÁ]YóýæpFÛ*pŽUÓSÎõSj¸´ké­ÔZÙx_W_˜%W‡:ô¡K²c®Î±$,õ'ÿˆøŸ|¡;léO=±/É£…]üIB^¼ ¾lñ^áM¦ÿ:ê ÇŸÞ+!/>û°ô^A»é,ÃþN,½×Š=šµ³ô^{Z–AíY,½WΞ}ÇÄ6Ö“^ôÁcÕã WÂQ–âÄö…eÀÚ€˜B¬zóÂ×@ÝÅðÅ{ Ôf=±ð5o àUĪDZr_/¾;±êq*‡³1ÔÇÆªÇñÂoΈõ_ØÞK»ñ«Ÿ[î»êq¬ðÌ¿lW¶ÿ"¼¯¯z+oHR¼+ÇgÞð Iè1Áû9>å#€ãñÑW.zä9ƪǩÚMŒ^õk¿•·Å>|ö›”÷1pÇcé—X‰UðŠÏ>.l‰ÜC¡'vÍ›^Û}ÈOìš·ây®ý>ÇvÍ[á¯ë]êýÄ®yãÊA¾¿!ìš·Ó¥›÷‰Íyãªív§·žX[üõ’«#A¬ïkåNÎ?ã˜ÅÂÖìøw½›|®±á<ŒYòK¬m8OÖoòKŒJ|]ámz`}ñí¥î!ìCúãhÝóM›þ8NµÝ{éĉÍú€M®n`ÓǤæÉ€›`sÞxÓ®À¼¥?޵º&GéoÖ(—=õoV“ X±µ¿¶8†ãñŒùä…ÇÛØXØ¢?îo‘“±˜úÒîGlúy9SµÌÛòÇa){³á7`ùãP=£î2%'6ù“msžœQYó¥'ö7¾xFe=޶¶ÑElÖuh·Q~[ò^iÃÄ}œõ8ìåŽh¿CYÃRû@ŠØô£¨ujgÔŠ—ôÊ—£ŽØä+G­Y>ÁM±ºß <lòÌÕ6¼Aøfe¼dlxx÷PÆK>1äÿµ²‡tÃQÄ®ú«ÜPßôÇKÿ윷.žgés¼ýë7‹aÒ§oïpFéªë¨µ}µÉŸô^ù}x¦¦?Noõ›u¿ºžXË>Ôz½òmIšX<Òçø•›D°ÎlÝ'˽Z¡]ûÜ'¹rF`íd¼ä«¨ýïð2^Ò½ÞwŒáÜÉxIg«í:Ì[ÆKz/ï–/šÙÂæ}ÒKýÛÑ_ød¼¤U~µréƒÿòXU&‡¼OF½kÜékÿ= Ò/Éêûϳ¬Ç ªóFëÁé—Ï•žgYó‰5|¯|ãd=Ž÷¢ÿ«À¡?°yŸ´º‡¾ÉüŸë´½ëüØ¥‹ůÎï\µ›¼WÖŠ½k/Øä½’am ßíØþ{VIO,zž6C÷ú·;ãÊÇ¶Ö ÞëElÖ ñuÅÀf}€/>æã~Â%Fj÷̉M¾r×^j*[ú`ŒŸÎ1˜·Hÿ*~–§G`—@áÎ4а:°éЭjGßkwÎ/Mú"nò"÷¸ýÍûdPõÄ‚yëYcTjw>¬Ù?ìzHY;û:åc÷õ-ç“ù®Ír`eï_x>éþ6Ýûžsl8fö«Ý̧õÞ;ðÄÞµÒl콯uv_¿½·å™Gµ]‡Þ÷ý=Ç·´Kûq8Ç÷_?°cý¶^Æ÷®otÒ~õ÷«Æ|aeyüÕºº€u–þ8_wðOÍ«)þ6K-qÈ…ž×°Àß6ýq¢u/œ^Ø›ýŠ—œFJ «vÕB»”zæ˜?—4#6ýqPÛíúÜÀ˜¥?Îq¹qä™GÁŽé?„Zã_'Üo4}ŽÏ…–›"vúãt=Ýq¦1«Ó'h(ö·…}AÓ—Ö,CÏ2`“§ÿPÁ~³:M?ªã)mˆ½Ëþ÷,ÞU<…qò¹ Ý‘~TëaüóÐß1ë»·CöËbbaÓß´Î…ÒîÔ¡?ÖÛ}ø¸b2þ¶©CÏ:‘ü}Å\Ø9o>€ÇÄÇ÷ ¾C=ý„¿‚e Ë­ŒÙÜoMÛ=}U;÷[GMI>)'°‡xî7Hø]sL8<÷›lõ×ïï€Îs¿ÑPyÆ®ºü–Ë镬ôŒ•ô^{ÆNÿò¢ÝéÀÎþüÛüÂö­Î?bcy lô×ïï–.Ó?àëNû…€þT= PSýÀNÿ€À\~Õ :°Ó?@6ãΟ<°Ó?€ð°ÅNÿWjÏØép|6Ç3Öþ“"€üüÛæûÍ;Ñ3væqŽo€?bµå۴ǹÈx‰i‹g,elp§ß›z Cì›u‹¨q<°YG5vðˆÍw€ï4Ê;ÏÉ1ì»(âÖçÚ_‡×OläÛ¿ `õ^nòßS¡çªÕ oýõ±°Ø~iÖßÈ$ô ;yAü]@ñ›|å(ûBï©ê;ùÊÌe¿m°“¯lw‚Sb°Ó? sÏØéÀ¾Ñ>/X¿°>Êy¦†ófÓ? {åЬOÿNÏØ9oîÅsƒþ4¬þ6ÜC>ýän¢üË6Æìô WíNÿ}û‚M=s÷þŒþc¸=ÙôP/ß¡ŠéиéãÚ‰Y·8¶ûöPÌýfÕßT ò"=&Äs ߨàô›ºØo1yxPü¸«Õ8°“‡ç­pz±äÀN^D/õY®pžEò•¹ü¶OYÇ6užFáæËÝNð¿ça>õ£F!Gìä™KTžy@©Mž9WŽ7+äê¨äb—³ ÆŒ'Ç»Ô3œÜÀNžùqÇß6î’]'vÕã”{ê Áq˜<óã¡T¸ãÎØ®ÿv_ú} °™3ÙèÂ8d¼äL}â?P_ù·ƒVà­P_|åšë¸§sOlò•{åÝÃd'6óo£ê{‚‡×M½ F^°§žù7/<¥ë¡gþM ÷K¢#6užxSK ßcJ~ÉiWùQ0É/Q9.¢ˆÍyku|Î>J~É)rQó°&“_2vü†õü’¢3}©ØnæM[¯ë¬`55ÂjmµbSWm§™œJ~ µ _rjD+oZë°AW‚)ù%ÇÜ×ÚuàGÑÒ/©~¬= 'AÉ/£pëŽsæ"ù%£zT*Ô¡Øœ7ÔG<û 9VJ~ ÅØðð·éÏZÚû"õKvü>¨Ñ=°ÉSp³Z'a0fÉ ÂñßÜ™Är[ÚX·q×ç:CaK sIq· ?±´´±FÁBü—ø“‚eÄ~òTò Æ!ù%†Þ—'öÎ3?°ºmŸ1óÀ>ØŠÛ—ñå2¾¾âàE¯ 4ölüj· ˆm“Ìûäq ¡'ËWþªŸ?°}Õ‚?Õ˜Xú¹&+vüZëjÀÓ¥Ô/!ÆÎw7ê…Zû ¿Ú­û-õKví–ý–õ8T}£6Øøéó : LY³ó­Ø¾ú@Z––,=hÉرüÆýA/èÀ¦/mßü6x;‘.ßõÍÙW°é·È]Ü«™li”×úã2+®¼©]Þ Ó|wä¹¾uN¡^š3^ò51…{~LÝÐ^ãðöç‘:†^ÞoÇ- ú;FÆÚZ)ÌñHÝКóéï!S7ô¸{JÑ.‡ùîŽUU°óÝ­­Ôut+c–ïî(¹Ž.‚ý]:OÅÃ`ôíòªË/9÷qON?aâÂw)š»ôÌ«žXìÃø¥}ÎXϼ| ‹žp™SŸ«j[j|0/}..œ=%Ø›¼ô¹ŠÆqUA¬/ÍZczAÌK‡¾x;–öS‹p¤g HõwBÝ–ôö '¸¡,é •/×qÞ$ýºÖqÀu–ú%Çur<÷WÓ_zÃËÄïEê—D/íJ€ö§~‰›Ö9†xËâþŽÜå+lê—¿¢è`hnñ_=NáÖi‡qÐUß-•s q Îzò ëØßÔ ª:.r·Þ>±©óDÕ×5IX—^W-$œ·Ô/Ùyé Þ§~‰hÅÖß–>™ìUßâžlé“Ù«n]¶äáñFó°ÃYm©óT=ó„KƇªñ>N?aÙè٠߈ÓOXdÇŸ„}‘~Â26žneÒß46¼mÃv“gîUKfàYm‹g^õðÙϼî!ë0¾xæå=$j0¾©_2¢zƒßøMÞ«Ô³DqÏ/?᪡"¢øÛ>|åzŸˆM¾²·zŸ,}H¾²VMyHN?áhÑ&ää—WŽaÃï[òK¸—û¯ ¾/?áéÀ=”ñ’ŸÔ8òòî­ú·à½/ã%TϨãI†¿-ùÊZ¿YˆÍyµ¿VÆÁ–Çu=Kð^~ÂDµFóYœ~ÂÔêGa=Hê—P“Ç»†¤~Iת5ÕaýJÆKºÔs5¬dù cNÎ4Ä@dù SÑ_§1sIýˆœoiB¬.m–¢1~Yú%-Š®»@|G–Ÿ0Ãub!Þ'Yc¸çO,ŽCÖãXxùmBÐ߬Çù¼Çokæ-ëqúØÔ¬À@úGW­|/ò›Ò'’¿¹€téƒyÞL~µ¤ŸpG? ЖŸØ©_bÖ8OuÀ8ä»»—v‹@lêµò6ý,É?lúpåÜËÜ,-')¹[Yñ’ÑÐ#‚¾Ëk¯q ÊxTùm¸vhƹ¤r}" ¾#4ã\Ž<…óÒ;õš”Øë×ÚYØÉ{Ucô|ÔÖ±¿–ñ³ðÿ…8—¤~Éñ~)^’æ0o©_â$W.š2&_¹«¡FÍqÌÂo=±…Oà:O2æ¼ýEô‰?¥/'WønŒ18È¡ÈàœcÈûŸÏ)Ãvg|’u æ ®ß‘|e䲎³LÆw$_9ÞgŽ*°¿“¯üå½°_Rk W»Ôur‚@ÃJxò•]‹æËñÜ„vyÆ•›)ê¸æM劗( a]Ø{øíÄŽùÛØ1V,Z=ÂsÞŽ{IÁ¢Ž–pÎuÔ‡¡&ˆ¼WB½ F¬MŽl'Ÿ”JX¿<çm4Ãv¿êvòÌ»@|’OÙ8KR¿d˜cF9×S¿¤xŽqÕ`™óæã¯{Sæ~;úëˆ-w™óÖð¬–3äƒíÎyxþXê0f¢¹ÖaŽå,mÅßfS›epÑnbÃþú俇 Po ëWæ¼5ê¸Ö‡ãKç¼uäôžõY ¥(:ëŽk5b™¯!:ëà‚uå|î–9'vÖP,XIØ©;Ó-°ÑðŒºâ%çÀ7\ݱšZå;¯Þó¢–ZÒž±žZ%}`°‘Z…Z±ÖR+â ¶/ŽVÌïÕwV'¨ÁÓ>už¢M¨Þ!¨}é<žyCž¹^õ8–©ði8ÓzÕãœb“•#Û –@{ò^‘{{Ú®‚6¬vI>-¼[N9àÎhÏ{Iä§jô쬣’ÆèaëØî¬£b+üÔãy)€Í:*ïÈ{<8”æ¼²³|ø´JsÞ:¾³- O윷ncf o=½êqNÍà&ÒDÛå‰íXBý¥Yÿ&T°Œ<%M­4Å1kÈ9Ušºjæ£CÜȰ¿sÞz/sÑFÇq˜óvta»È­Ó1ç­áÝÞOþ$´;ú¾Ïÿ1x3ž!Š «X—äçýlvî7£âó:°Ý¹ßš0®‡æp·×1÷[kÀñö“ÞŠØyNŽÞË\˜`æ99¸ÌEWÂ1›ó¦ ßù«l ÛóV¾…§í5¼ý•SÇPçX8½Ê³>@°†ÔÏ'bg}@ùÆÆ7a'ŸkTO,AîŒrÖ kÉ-Š@ ˆrò¹6žÜ$e]¼« ’kK¤z9@n\Sï•Ã1âw+Õ;ã\ÖAÿì¤öÌÛòÇaàêI½i·X±¦?Ž7¨¿ÐSþš»tCÏTq€MÞ«”:á†1RMÛÜ=Þè*éÿfåm:0f®2yAä~»!N 2yAkÚŽkãw¬mþ6_¢¨ù7¸GÉâ>mÉ5ëÒ{ÝqA¯Muñ‚D*¯ÆAÓ·Oª—ᙪËg¥hìŸú€M>W+ú¢u­š|®î˜r¬KRÍ8 ƶcLª3>Yô Oj“bRCã¿ãn½}b—Þkåú€?:kúã4.| A=MœÖ¬æßJ»É3¯\ AµÅ3¯¹:ÔÔä—Dõ£ªç¤-ÿ€Âé¬kÖä—8Õ<:7‡Ì›F§š÷‡s2ù%&µ¿D8f™7%*ûMà=¯É/Q/ùnPS¬É/Ѫy(÷|òKŽ“¯ðKš!6yAQóþò±šü’ ?ªŽ¯/^På`Ý¢úâYÍå7˜ãä—H÷êèøÛòœ¤^½' §¦ËO¸ZSºü„»•›»lù‰MÞ+)r݇ b“÷::rÔ@§L—Ÿp+Þ)޾ºü„Ñ[”¿%¥VV»Èã¬aÒå'<±±¶°÷1“Ó3ξå'¬àé&Xªb#}ÌAcTj>À–Ÿ0®_9—?b—Ÿ0Ôë%É0¾¶ü„¸§ÔÄ@ìâ+C}–þ;ï€å=ú”R*¿mñ•=ÏûpÄ꾿çU±¿¶çWŸ¥J¥ËOæÍϼ4bcÿÛÎ+ø_ØÇO¸x´G‡<Ž-?aä6‹”»æ­ø®+澬¯yƒµçç1»æ­Ü£ÆH­¯y+>mM ±kÞ ß³·Ò®ýj·Òîš·À3µ|߬ǯßF øÊFkÞJ-íçiaû~_t´ ?±Ë·¯po)Ûë¬.þè4Œxaq†*þ¶uŸ,÷¨mß6ç­—; #7ßhÕ?ÀãÉÛ»ÞµîuÕŒâ?›€ó¶vÇF[ZŠôô†´ñÑ1lOõC6¹T_}À®w@уfjØ./l/5 ¸Fú-zyw«æbhb ·ù‹ÿ°°¶Þ8•©Øß¬ëè•éàCj©÷ê®Z4F¡ÝRï5—ºñ߬Ô{Å{ák©÷¢Õ{ Þ8–z¯aÌå]HØ^íZ©75ÄÊz_àzp"샮>ô‚Åïqê½FT®p/cæËûrÔ;"ŽY¾ßÈJÝø€7¯e=Në­ÖûC<ʲ§a]Òõ'lÖãh©G7ô˜2ùÌ›—vÃi/émSÏ‹g_Öã4ãZçñËzœVk®Š‡¸e¼¤y¯cf8féoŠZÁôí»³°‘~·õ]hP¿iYÓ¼ž¿üuËzœ&­Öz¶›:†6|{8³§m8Ó u–z¯aå·©€þŽ¥~ÉWœöï¬.¿MSó›k]G`-=z¢ôß…¦“÷µ¾Eb ¦©§°ÑuxCš¥ž‚Ô5‰~ضâ%ß¹Úó*ÌÒg囸:ÖºÍ|@Œ1j»0¾6ëMy|åšbeùîøgÄ.~Éɦ ×ÇÁÒw§=òV,ýqú¨z™âf‘¹$Ø‹_rÖÊ=ól,ýqº+?c)}wÄž±™Çi%w+Žãà+ãôŒyn^99e2ß-æÏØésœÕU“¯ü¶©óÄÛv;õ¹¼ÙŠÉSèUç©ö÷â—èq ³‹_ròi‹¦¤8®õ©»X´þŽ^ÁÞ ÎZp­sŒo§ä——ü¼~/’_½ø¬Ö£[úãi«œ'l7yARtÕ8À#Â"’V¼Eàýæmêá ¯ëA ¦Í[êáU¿Œƒ·ô5•KÀqñ–¾FU‹ùx­b?¼ ümŒ1ho“Ïõá&s´Jç¼yÔ> f½7ËþŽáð†}˜óF^¸€C F×[¤¶fÉ% >Œ÷ÔS¨Ú¥ßNÞ{ö¡r“Öº÷Ô ­^E_ôÖ…ûM­ì!rÐSð>÷Û׃ü‹ÏsܧŽaDõBO½WÕò".ýz ëËoŽVßÉçjT4㨗þN>W«õ8Ä»uš¼W£â1u<8`Þ(y¯Qü7{Àùà4ù\Ÿ2‰›V%ÌM>·rNBºñĦŽaå§~I”.lêZáÓveümÓÿ­ÑFÏ‘ð·Mž‚ZáœvÂó’¯<ŠÖêñiBìäsu«<1¬Uöä—xl8pÀ{õä—h¯ó†çº/~‰–}Üôa<ù%Ã*§¬Á7À/~É8ú\´*ûå¿ä2r.}0ˆù˜|®/O‹/þ¶›|®®UÏßä—P«Z•¨›ïcÞ'£×œ;A<Ê9ï“Èq Œ™ûÅ/¡ïÂïG+ –Ë/~ íx¤ ߼Γϥ²Ñ.¶óäs}t¿µ*‹â<ù\Æeý6¬ïvž|®Q}×›¶;ù\#ªö ò'óÐÊ}½9pNç¼µZKÐ4(\æ¼ .\Ë6ð,‘9oªv)¶;çBê:ž®Ëœ7bE.Š*ä¨\R‡Þò¹ Î%ýM[ñ[<^¦°vd¾ßk .Ûlw¾ß¢/œHÐÎóKïõ xàZYøÖ¥p©ºAüÌuÎ[xg\ËÖÛÓ»Îÿ u€®sÞ˜ùgFÀksófØß‹zó¦óœl,ÈUC°s¿ñäª …Ü—ëÜo†µ%þm±¶°Ë?Öƒõ±Øô Úî0˜7<©p:K' –ÖÓO¸±sá vØóé'|ì}PÜ/bÈ],|ÏxI£ŽíÖ›zÆKß^OÝ[ÀÆòYøÛzÙ‘ïŒsã ;ðÈú·(sqFÞ`Hd.©œë_üßÄjæß¬j ShÏßVâFÜÛ¥ümR¿›øÛ4u±­´;0:ó8æ%~6:~ç?õ8… tš«¿°½b²Ô(€eΉ]üIGþÎçÿý‡…E. Ô¬„­ú€¢‹M ºÍ‘ü’îEëš òèa´°ÈWûÔQ½ír߱ş,üÔá“Kþ¤¯"nP#–üÉʳáù–°ÅŸ•÷ÊØßäO UÎΛeýµªÙ‰÷OžW-fƽ™õ8#´ro!ïKïu£ƒŒ¼íXz¯£øp§7²çx¾•1‹Ò‡Ô µª¯LÀ{¥÷Z=¤ã™ºô^ïŸuI0o©÷Ú=*G¶ŒCêôŽZ·ˆZñÑ{-£lÀ'ˆ¥÷ê¥ŽŠ xº±ô^¥ôáäi6ç ¿¿›½×ÂI?ëÏ»ô^¥®‡†í.½×Âeeô“ˆÔ{íQù똟Ô{Ýø“I]ìH½×ÍùðIã$öìPjvVýjØÇ6uC+ÓîG7´jŸß÷ñËó& ¿ú{=°‹¯lT°†XY\áÊÛÄ&ïÕ[àÙXKŽì(üT8׬'´Ö…Ú='|`#¹¡QµV`û|¿…—zH=¦;ë‚+ßÎK‰­ÚÜðí>°³.?zõ-iøÛú|¿yõNÑ~?lúˆqÕ¦û]îÀjbËÙ§÷åb-[­õô;×çÀ&ïµr¦åþy<±9o£~‡À+ùøÖä¼õª-o¸‡(ùʪúðÝ<°ÉWæº~û€1£ÅW®:ôƒa=¤?ŽW/>e\;écZõâï '6ýßFûŠ ›þoªÇÔ“~`Ó*Š7£8®‡Œ—¨Ô³Ï~[ÆKÀD#±0ÇYs<µ@[ÑÙS 8wxê†~™”|a±Ý©ºáôn°1ã}Êþ؇«‡«æì§…ývÕ㜅Բ‰é˜e=Ž÷M v¾ß”û&ö çNúãP´öÓ=°²t;*ßð·¥ÿ›½ 6ý:6±m¨}8°y/Q¢glú›öþÜ®æ~Óö;÷Ûñâ½ÌK3Í»˜.œ;:V š[ξÔ/iZãÊ›yûJ„-ÏüÀjj,)×vaÞÔÒ›Üj özÖ–Ôøo¹§jdmÉØðÌጲ¶jKâ“~`“46£8oFK§¬U,¬K]µÁýËY[BúŒ•ŒAó¨1Gümšµ%Cž±–µ%ýÔ2É/i;,ö7} ¥Îáž÷¶r·%^Mgª÷¬-!~ÆRÖ–>÷admɋ߿œµ%åü­cæ3®|\'«Ž¬Áùë3®Ü¨ðÌϘ`-ãÕ­Æq¿¹¯˜®Õ¸2ŽCÖuPùfñÀûYÖã8›ÔX1ìãèë·qü­›Qcňƒ®žÀs<°œ5+›…ŽýófµŽêK‹nag}À¨œtºK¸XK†ôZÏkgñK¸ÔùOHl7’ƒQ8Þ ÝðßóÎýV±àUt`“ÏUs·Ÿg÷–2—_xºý~<±#¹EÛ¸ËO{`9¿Yeýö€÷|O½×Vsj5Å6óo4j;b“g^s‹¿½¥nè†Û ±ÉŸeŽ»Â}²§Þëñ½(롌CŸß·Ï§ðöÛ°”¼ÌÚ_ÈÍØ™7¥(wðžX6y¯•ÿeÑ'væ»5jm lwò^µr0¾J6yæõÐñ<ëÝ“;UO×°ÉWî^5}öÍ{É'-²Õï[Ø>ï0VÎ߯×è¿ä"¿På¯Ãz¸êqÎ;­!¿:âε<°“g>ð{ç3Â;yæ4 ¹Tt/>±zqTý~ŸŒS«}vÖ¿}i$,lÏ›;ï“] g:î6è'vΛt¨/ŒSs‹îØ‘÷IÔ{õnðÛFÖxáªÉ¸•NœØ¹ßº~Ô§’æ;çÍ£èœÒvxb³>çÍN½Aìâ—À=ÕÎ+ŽCêôJ+ܯqçÓØÔéí„%)±óûfÈ‹?íj Çl~ß¼®ÉÖqËú¾ Ö(ô»U׉íK½x}ßY÷’ªó/¾o2’_õøËY-©g>j¥0|$õÌ»ã ë!ýq~íuN¬¥Ç|[®²8£–Þkœq¾7±ÝÌw› ®8®³¥÷Šw§UÁö…E¿*–ÖŠ. ~[ô£cˆ>ƒ~/µ;±¼×h”“^ã°ø%´dN s`2ÿ޼‡zú oêê!Ž÷êôn\sù iv`#ó"\ãÊ ê~‰¢Î^#‚1K~IÑó“#‹Ø¥«ëÌÏZ3û誡Î^ ÜöÑUC=Æk7ÙsgÎ:Küv›þÒômïQö“Ô8»|×k»àå{`ãë!Ï’þ…Ýhò!vñ‚Ê:ëà}`/È[Õäƒ{µ/^PÉ“}R·ØäIÉ-¯M3_¼ -<&¨U>°‹¤…Ç4ð­ç‹T|‡¶›óF%o:\±ÝÅ ª:p˜—î©÷Ú©ä»?´ ?lÎQ=ðžz¯-ªjÇ÷fê½6-9K!ÈôXqåªEWÞ¼©÷ÚÆÆËßdÉ/‰÷{y“%¿$´æ¹Œoêªý}æêzòK“v…_û‚:§W½TŸmÃv%½êeÃ5Ù5}ʹ.£´›ù7«¼ †k§{¶[çÂþ¶äáQáA·þ{–ý$'²è†ò].öÄ.ßõrFÞÈ€]¾ëåŒâs‘ü’Q5ãybDÉë¼ F®e=ɨýuX¿YC½¶ >x6yxU•¥Áz äái9£óÒDKÇ0*¾4’‡Wy6…‡GÉ/iQî%VöEòKš–ï¦>í¹%'– ¿zƒåÿL‘Ž?Û`“ÏÕJN˜í^‹x`óХƫïZÖ§ cLÖä»üèÄ&ŸKê¹Nðæ¥ä—Iý¾Áwž’_²óQ`àkPòKÜ«/¶KK±œgyHJ~ɱÊÚ œ‹ä—l¾› ¾g6ù\l…£ÕcHécTyÅ 3rj§%Oló €8-±¯>l|*ð·-žÂÆ÷Þ"”ü§Qj¹H›úÊßš’ wZZú%ßÅ»,¬3É:áoïËÆáŠ—ÄYè0*Æ!õKŽ—Í C,ž–~I¯>ñ„ß·¥_¢»<:ö׳ö¬Å36R§ê.bÎ4}Äšø36õ'«þþ6M *¹Å 6}û¬êÖUlÖ “<æ°)ù%Rõ¹ìyuÂARk£ çNjéùÈ›ßk]gÞTiØs»3oVÖ~ß,}2·ãëÁ¦þ$GÑ#e…7:%G`ãóŠû"ý„¿Hû_9wl7ëß´è” Ã³Ä²þM‹Wç`ˆGQú 7.>Wƒðüµ™ï6᚟'ìïÔÃã¾óyÅþN=…^µ¼FXgÉ/1-9ÖySZü’ªeKånŸü’N­æýñ›ú%ÞK½4”oœØ¹ß¤ÍÙÑð®œz¯Ý¬j)ŽÃÊwWîԹؙ8š-¹fÆ·“ûò$,1óVæ"ýÅJÌü.û|`#󃫎!ç$SÙoÇQs”yé’?>~bÇÊH†˜EúdJÕ‰ìøôÉ´’“è÷’H]µ¶ñÜm0¾aùí®z™ ÷qxꉕvÑ›ºj•Öx £-^”ß6 Þ7ZÏ|l9×{òh3ß-£|7› lwæMAè&5 °3oz.úòÛû÷Ìož¿mà8Ì{ qùÆv lÖåkòQrÊ8L½Wç -<…‘z¯Ò 7´9ÄGŸçä— ×§Ýµ%#õK\;Þûú0lw~ßú·ØYb ¸ã£ÏýTx¤ê»ìÜoÚï©üÔìÜoô}ï[ã øÛ¦žB·¢“ÞT±©Ó«Eÿ¡1ãoKž‚TfqìC$G¶Ô7‚8ÌHý’›§r}`9Ø/)º_rzüa»ó>Ù½h7bh7õ^¹GßûõùÄ.>WÃñý°þ°”zÐÛî2Õ'vÝKà{|ü6ä÷Ô{¥šÉÇ'OqkêhçW+ü^d=G+~Ø cx`-µKµjJØ:ë:>ü诵Þï6uCÉ ÷«|l~ߌ ¯Gƒv-ù\¨Çtý68Òç8‹æ=½fïk‡ÛŒsYŽoÝñÛÓ#ÂË80œ¿ÜV> #ö+ß½°Éç¢Rç>:ä9ý„;•ší!äônQ<݆Bm5§Ÿðñ^,5æ êÜ9ý„lñêdˆ]q[¾}¥Þÿô lú-jßprîoiN?áV9.'6ù\Rør kubiaùAOìÀŽ…mUO æ¢æ-*g±²°…߇5ñÜ×¼Ý$œ÷5o< g¯ôÁ—ïd]g„Ø5o%o:@£ñ¤-lYg¼N?áÍ÷Ç!ý„Ûèu·ƒSïµµ¢ùRòoœüñÂÙcÅõ›üáâiÌ؇Ô{•S?æä—œJUŸ ·ônUsëøòc»9o­jMaí$'¿$¬îc¬/䑾´Z5Ø:AGúÒrṎñóH§ |,§çnõv\gcΛW?lÆ\'¿Ä{]¿Šó6æ¼™i]¿ÀMâ1ï%_ê¿yS³y/±VÛ5¸Órú «ç—ÕÜÂÎyS©|Z†;-§Ÿ°RÑBb†x5§ŸðW¬øoÌbs¿Eáó€¼§Ÿ°èN›æ8ý„…6ãÛà,I?aik‚íN~I»Gï¼Pìä—´êK[±¿äŒ –ºE5‡‹_ßæŠ_\*èï¥_§/¸V,Ìñ¥_âÇ*þCÖJù?³à®Ô±n°òŸ4¬š$XSÁW=θU›¸|Õãœ,ºéŽYΛîâf|cqà ç‰ñû–ú%j]Øž¸ª_RÛóv|÷ªÞ6ŽÃUsýÈfí`&¯iÉ5«•>ÌyóèUw8¬sÞ„ WB¿±ºæm£}nØ_¿°ÿº®zœ30,ú¸&¯zœ3(ËÏûâªÇ9ƒœ%gYÇ̦žyHýmº>lSwF›m´…°¿üŸŒtyÒ!â«GÏúØ:å·M'«y^åÒîÔyÕûRQ·Žmê<5îôÜîÔy:îLR±pžùäá .úŠùcÎz(ºÞê1±/'ò`>°Ë?ÀÆ“ÆûÒy]wìCêOrõc­ØåñŒ]þ/ß‚]þ¶ñÜ…õëË?@ùË?@ª®;îùH¾roU×t“8–Γ>r-9–ÎS`ÞÿÔElÖã|kêüÄJæ7¿â0caqf¼¤}{;ÚÅß6už¤SÅ*öaé ¤p"¿äüvò'{÷êíܰ¿“?yÜ+ vgO–Ÿ°ÕÜÖ }ø“Zûó–~ÂÔuÔq€õKÉŸt­íâ:£Œ+ þ$j¸ Ir›ËqÜ„–_‡UÎ)ãoK½ Ž çû›¾´TîP7.4ó¦ZùžP,é'Ü¢òH©A»ã“7­¹$ˆUÈX:¥¿£PFúÒn4‹°PÆ<'¥—}Aƒ›ùîV¸‹„ot‹?Y¾Ç€õ›ü’ âSñeƒ³°K/¨j!_N’_b­òiÏõä—ȈÊ+Æþ&¿Ä«&qÁ&OÁ Ïœ‹-É/ÑVîžu……9¿Çc£ÇãÀÉŸÜx©7ˆ] O½ ñM¢ ‡õËé»þý&£ÅAFìòÖÚ.a²>à[«‡—ç9Œ™´UÜáÎÕjEV> ÔØ|åšv¾dÃ÷$x_ˆÌû$KÇ{_oxN¦Þk4Áú¡ E'W¼$N^‡vjÀË/9½Š:ÞiÆE,ë’òHÛí1I?áøNê®vñ,‘¼—hñ¹jâ}¢“§0£.U(ð*$ëqL:r"u ìäOÞü³Fz%ß=lÆ•Û×:›XêŠ}Èøä7o;¹–ÈÔ/12Ä¢ë©;ßè8fqæckWü¡ðiãô$Äqðkíh‡õß2 ›q.ôKŠS‹ãžk–+^âß&%'êR‰M}e·ŽN ÇvgÝ"¹ò=ïJ'6uÕš`µçT’_Ba÷9ö$‚}¼4䆶Žó–üÿÖxžNëï›<óÆâöôšlú¿yÑn:fû³]…ú“³º>rÕ㜦ÝÇWOÛ`X;žuT gµž! _ŸûM¾ë(½|o$>y¯êÀAÖ³fÆÁ9yƒ½z;Ì…KÖ·0öá£øù‡÷IR¨‡<¹–À•¬Çéß‹jÌq¸ÛØœ·gÉéq <ñÔUÓ†ëϾŒ—´ï8âlW ´Ý$ù%ÑÙ°ÝœiYú%RÆÁÆÀ>Œ+†ç¸Î>Œ©?,/íG)íâúMœOìÿk.øgKƒÊú%<ד_rÛ0#}•‡'©_r’µ Ý|e¹ôKNÏGÂ}ñ¥‹2±zé—ÈÉ9ŵ~|¹°Ë×(° ÛÍï[wümÔƒ¬mêô~( {òáœÔ6ù“挿­ hÆiÆKï}zÊTcæ»Ûè™ýe€ç¤}/ììC0ŽÃòÉ´^xº†ýMýIÕÂ9eàŽkO¾2o¸‹ £¥¿ä"ûJ©ÁõpñKN¿qønêùy¼khòKÁ™z"€åô;(µF_ï¬ÕùÏ܈åŽ8šÁ\¤~ „ÍTuÃqH;òðŒ€­}é`€žÂÉ­ƒsGS¿¤;Ë·NS¿¤kñH󜥾êý«Ÿ%äܕүcãoŠ1h¥‘±íêÇŠ^$šþ8­ÜÓC°’¹Ðò&cÝ%M}Þ` °ùPkÏØùî&/5bV;ßoÞ™ Û˜÷’ãÛà‹c6zÞ vñTèCÖãs­OqZM½×ÐÁOñIÍxÉhOqZÍx‰ÖÚ³WÖŒ—xÕ/qOy/Ѫ?Jæ»[:ñs»©ª¼ÁB»Ü2†W×ï€ø™rO}Ùxˆ#vò^£—)ˆ)O ÚÌۀضrÖ¿íÆr_zÅK®3¾Ø‡ù°ßá†ãË3®,ã)®¬É/ñ¾èìiòK\½jÉ€æ·J[i…S†ÜPMýßh»•9–ÔÙøÕ)p¿Tæ9ù•KúÓqn’Êü¾u«|‚Žë!ýq"l“‡„ñM¡§\¨ÊäO·êêq‚sœz¯½»>c“Ï¥êX]>™5oZ±«>`ã‡R°9oU½è§ª¦Øðªã‚烦Uå1¯-Õ©Ô«RñÏRÕünn|•b§N¯Rñþáû’>±ÉŸüÎÕ-,á˜ÍïÛ- 4V»°~³§.ߨzƒjÓ¯C¹Ôó€ø¯Úü¾õVs¡ÃÓŒ—|´þ'vÅ•‹÷ÜC–ùª9ÖqOµ¬[4Úäõ°][ßM®g*Ì›yæy«wJÃ}lóûvÌgÍ_C}æqÔhÔ>Àûü¾µaµCQ§ôóÙø·@Þ_S¿Ä¤jê`ÎG}~ßšSýmP—ô-©w˜†ß7O½ ^óN.Øn¾»‰«ö ÄÌÕg¾›FÉûu‡HO¬7 ð*4õKŽ)ªyHÈ…jê—l|íá76õKàñžžÜ°v–~É(y²Ïuç›ù7*š[C€Ÿª±üÊÚ×dÌún—²A„³:fþí4•,ã€÷³ä—ŒQ4ù(ðü’^5‹¼’Ï•?ïöÕdžÜííâ—ĹÎPÛ‚ÔjXÆK:Í bÐï³6õ¹ŽM[òYø~³ôÇùÒ ^ßêP'a©÷j£äP:êìYK¿E‘¢ñá‚íÎïSáu\“vÕãèY,_r_à?`'²{+ù!ƒsÝúäOžªE‹´û­Ï|À— øK°Ö튗œÆTrI îvÅKŽsgPÑ̻Ƕ­/Ó²vZíRë’q£Ú߮؇Ô!˜·8S }˜ïîaŒñ„عßTµž“„s™©œôF°ôÇé"µ6jŒæ~£ˆ²ß¢`éÒí¸H;bçûí«€â/v|#NQÉ5ôÄ2’¬/ó6hJå9Én¥Àï³Å/ZÎ8¾ž@_s1–†ì‹Ô{MZ9Ïàžjé'l> } íªÇ‘SªÌ…ÀÖÆŒOòpÜoÇÉ s1f}€š×¼?äç-õ^)¢œQ¨…o©÷ú Ù|ësÁÑÒOøKÿ÷‹ÿsqÕãœqåëî\–z¯­jc5ÔóÔ{½ÄK:Ä–Ÿ0—»QsœãÔ{U.¼«Þ±óý¦V8Ó ãQ–z¯aå>Ùî¿–z¯ WÞÛ•ôÎ.~‹­|SïuXá&5†xª¥ÞkãÂUkJ89oVîààc/éX'gªäW6Y>Ðu= î­e¼d¸aÝ;h,YÆK:z¯ךyËz†ÚM û›ïîy‘8C·XA?쇗|7EÓóœñ·Ñpl7uz]J»¨KeY#:P[H 4,ëqχch r¬–õ8¥sî–~Âõ'N>±sÞØ¼ê1n‡éÒW.žXaß´Œ—(Ö·Ø?Ã\’e¼„¬£f‘1Ô®[ÆK:ê<•¼žé<'½GÑÆ ðг+^b§Vr;JÝ.~É© \*?)«°ÎlÎ!îüÜà[æM¹!gDbé#½p;:r\Ì2Ó:AÎ=ð@,õ^ÉJ¾{4Æß&3Þ€ãbg *¬«ç"à(æÑyÀ¼Ù¬£ºÕÍd\°¿³Ǿ߱K$؇™ï¶o¯ÙÌY:è&™O^oø%w‹÷Û'¶Á\èqOÅsÒg]‡‘ŽÀýi{bsÞLPK¤NìÜoDÕ+Žñ|ðŒOúˆ¢QÜsÍ÷EGM¨c=`-Ï–’k.ã;ÏÉ£Õ¢…ÔÛaW=ŽŸZ˜so 8e“§ÀßyZK°~“_RÞ8rìM<'cÞ' ïÕrÊ~Ào‹ÔQàËÉ÷[da§žùíPœœ†Óç °“§ü9uë;y Ás?µ…ð¬Îzú®qœXÈwÛªÇéECÅЛÑ2^ò‰q~i‡t8=ã%ÇÁÌEïJ °3oÊqíXlêz ÿáËßta3®Œú\gÉŒƒ§Þ«QÑi.؇ùî¶QÖ:KÁj¶ëQÆ—k‹‹e¿ŽYòÌp.}½M>Wí1ìúï)m—y^.ú0Ü$ï}ï=,ß »x 5¶=àÍà=ó8\s· ïcÏx‰U½í£]¬d»…¿þÅ Zؼ—Ä&f>°¿óûÆ£è½2ÖuxÏw@ÕÅ>žøÛòýfUSã´Nùî&¯±mümÉ/‘šûŒ¿-ù%ÔKíÃ`ˆGyú O§û­ðl<ý„Y _xÊDá:K?aUÈãœåµÀƒöÔ{mo†£]Æ5I3ÓháŸrN íæÉ/ù Oœñ·Íý6°¾ÿÙÀvG[}À3*pëþÿ…][²$©û¾³—éüÂûߨ…ƒ©S)åDÍt´#›â,Kóê—¨°G¼!gé—׿ĞómpÏKìÕU{ñž€ZYxɺzÇÂÜ)~‰kñ0äWÏò^{b’ŽhvN¹ãt^ð§\=sA²x¾éÍwÇßû¡ôK¾•¾ö3èßë“ãe©WïmïÃ6h}wö¿ågé—´` ÁÀ½ºð’lœÇÁººYú%ëÎ%· ëê`O½þ8JuN»¾FÁ~€—ÌÂK|PÞiLlCá% l}Úu_³ø%M…µÛW¿ä›2Þó…ÓŽžÂÃgûâÊPï4íäqZsÿûwO'aº‚õzóòKO•€¼Þ´¬ú òÒXü,¼ä!V}c±½¥÷ª6Ú[õ8 kwúwšíÆžú€¯bãßXÇ6T}ÀlÍûO¯óí¥ÎîîÅdÞ`ünù>i‡ð}ÇK§·Q­² ŽÖô,~íg‚ü¨­<Ä_êš!G5£t ‡¿Üa c#ñ ¿æ¥Ó‹^õ[²´®gT]~Þ5ÚülÞzÝûÄتëHè‡õü¼ÃDåqfÇ{T¨ë˜QüIØÞ/í±[üÉ öŠ‚&ê,~ÉTÃØhàq=g/gdz{*ä ç,}eÔÀt·yõ•cçS‹ÿ0±½é o?§ÝziÔìüÊ_ÜØº—°Æóh Û<«geÛ±p¿d]èþ‹z¤s–¾òºWK‡;L¶«sêtŸ oæáê&)> vì(þŽRÓyò¦äUÿó–†þÍâ!„è?;öð‚ÄßÇñ¨™‡÷*˜›Ù`8wòð^=^ÞóŸY>bN÷ÉÙqm–Þk"Þ·!Vxãd;z 9ƺô€Ø^±„$ÖžeñKÖ%„°Á€}'›\m‹N˜ãHˆ-1QÄ'Å ö!›U,õoα…sáo{mï©ïNQÒ€7xëå^;ŸEZøXO–íøu #ò@|'ûñK|ãì<ðžÈ~êAý\­ 0ËGƘ„Cíd–~ cý`Ð0Ò¼ú%Øgñ÷¿±5ncïƒ;öƒWìÄXÁ|KöªË7Ê;í÷Ä–ÿÛ zÓä±8ú%¤ô“ØòÇiÖЃc¼õrôÂS'×¼B2ø%ÛëEȤŸãÔ¿MÄ=c×c¬O!Ô[Ù5™ÔûùnLj×ÎÈõó] öÕ˜{pe:/b§`ÜŠ_Ò:x_îz^Ãïžõ¦è;¹ÚÐàíŸR¾Fmb¬NümRãÖ¨½b¸†äŒ[·Fk(à^’rÆÍŰö7¼a{õü6'Ý|µÀïÚI±pH9ãÖ•Ú°®r°ïÈ·TòÕè‰{Ÿ”¯Q£ýÊïwìñSôßô?·ÜOìO=Îü£Ãp>ø„ü[þÔãlo%ª‡ÌÀu¡Åç’‰kh˜aä'ÖÑ?kÍoøÝ³ÞÌîm@ tþÔãÌíãÈs÷=ãn8Ƴឪ§Þ´qÎ}ç vÞXÜ?*¿±¥‡7 ^d—êƒÏUÞz¼m¹ì_«ºŽÈéè”6Êk`"ÿaÚÄ6>‰}6·7.¬ ;ø$˜Q:÷ÄœË{Ç6(zȤyùÏ+~w4¼ŸY”§…!gdÜ×ÓªÞ”÷¾ŽßÍÒ †;Áö傜OV=N(ñ*º 自Ç!O¡Ø¶ 0×½ô•5qž™á}§ôK¤Q{½QJÇ0‰WÑÎßÒ/yxF¿Äq_÷SG¥Æþdè)”~Æ-¸>:ûáà\ÂóW¥cl–ÞJÃØ‘ðÞÌ8:ô¼¶}ßÁ»\½ qâäàÙRü’ì=Ç'È8õÝžAçæøÝSÿ֬ѽO@Ç%ø%º7æ¤ûÎß8uÂÚõ{‡iØqjð&­Ml÷)Ôî“‘UWG÷³Ž\‰,Qºÿ*â;Yz¯kHcÓ'ð»¥CÏc¡ oô,œòŠ÷òÇÑAßï0óúÇŽs½ô^Gg¯¸Žw¹Ò{S•3wð|+~I²¯œÛ€1.½×§sžÞyù“Ü¿‚ïØÒ{í=qîÀutÇÒtÒXàÛ4O>@‘+±ï€ÙdVëÔ~øF؆Ë{ôŽ¥»rž<Žâ…Ug9ð.g¨Õ“YuÂȉÜò=[ãŽoÞÞŸ{ßþØ™;Â>xpßY±·Þt’/¬ù{Æ-<«ðþY±5nF8¢?ËäwlñÐó|SÚÛpóoäÑã^±åG…X…ÑýwÅïU˜;ZH+öŒ›bNxçB©ÏН¬ƒ0<ØööVãFøäï[±¥ƒsrcŽ ú¡—Ø ü¼=KHvlÕw·É¹ü'¶½bõæõç¥b‹¯Œ^êë· úmÅ/é”ï®ÍÅ‘uäúô>`ŒK¿d07_Û3g¹b‹§àÄ•hO»Æ6«¯øFpnÒQºcŸ+§ ›Çý0FÕó*ÆúÓªvÇž|@KÃ6è ·â—L|Ç ÊãïØª£ÂºÐ¶0ϪÇàë8×§_ÝŠÛ†çÜÙé%Å6ÌÒ.Õ ïâÜ)~IÇzȱ¯°ÞŠ_òU@üÛƒþ-ý’ÈÄX—c\ú%Ö¡>`[Ðà¾#wÜ€S¶š¥¸Ÿ•~‰¢òNÁà<+ý’èoýcQü’@Ýü›,lCù›6Åy&çÙå—LšÈ_±Ymh8ÆÖñ ÐÒéõFóWcOþ­5úmñÜ2vì¨s¸m»QœzêMɯY¶Ý3ô¯jinÝ~z ô¯–¿éTì³ö´ ر'ošÖæCŠñÄžü[6˜¿{/1lï¬:lÅö®…‚ß­¼)úʶA‡ßf¥§€uûy‚ó×NþmtÁöNÐZ±£|Ï¡ÖqŒíÔå|ηgJnÇ^]lÁß¶®g[þÒq,&í%vêòg äÀî°†,®<žÇRç{òo2ñû&ÞKìè`b+û<Æ1ö“ÓÖ(—ox×ð^ùÂx¹GáwGåêZ£{TÇïV§Q?̉çW]ß'û3U²cOg WÆ$;Œ±_zök~–íîØ“ÇñFùM‡÷жتØÖ)Nß=yV­öÂw£òo̯‹¸yœFwð©Ðqòc:ÁvÅV> Q^ú£,û{òŽXÐìQqòÒ;áë£a{½´‰Ç¿¶-lo|];û±:Ü=ãäMÉ jËËà¾'0|â|À»ÜÐsà{hž|€ š¿©cϸE åqß¼óäF'Æ:ͱŽNo7Ò²m‰÷¾ÌQõâ—ê9n{_ÀS{ñKæìuû·(~÷Œ‡b{ϽDP“z{Þà9ï÷^Bg÷—ÿüõ«9€ßÕ¬¢¿¤uâ÷…Á»°û¹—ˆòбÁî¥Cï„èº]±ÑJ“¤#¹O­ê„´Yv9œ£•ýð±þ´ݱ£ü[ ûa6ÈÍŒvtC§RŸ©8¶÷òKÛ;ð ¥_ò%Žùù®ö:ÚÁ¹T@«çGÎÔ!6Ê#8ŒÛ€±³´Ä»Ò]ÏÐ öÔøœØ†9s½ß^° Pº¶c+ÿ†ÚX?WLho¯ºŽ ž„{€³{ô£ƒÑFÕz~W ¤ÚÉaØg¥÷*¨Ç¿÷3ØKF齊x§ó‚¾{ðÉõ¦î©É\±³ê/Äqmf`NýÛZ+Oß?ûZuæÎ÷…°Ö[âo+~ é†Ú¾Á\/~‰ Çs(”¾{Æm4ÊK»(¶÷àÊ’€§n¥Aÿ¿dLâ­HƒûúW§7±½ë}¿-n{¹6ñ»'п)ãð5¼aìÉ㤀ÞëøÖí¨X©ºEôPÜö¾srêß>|ùß>k*Ðgrx M@Ëk·îÕ£ø%wá‰%^ÅSo:¿“Û'V Þiþ‡¯zÐûªMýàUJ>Aéc+3©;Þi‡}®Ž8×¦Õ öïÑ碼ÿøö]¯ØòÖ yÞí]÷‡Q~Â=Èà ¡öwÅžõöâEþ¬¿X±¥Ä‰÷Éqý„ô¶þÄZé¸V{(îÕZzA‘¸†ZlÃYoŸtáoì˜ôÛŠ”€ïl(×±~xAÄxKk5';µ×q²£ƒ!AÌ3qŒ­ôb’M@{˜”¾y ™àÆ/¨ Â^§ã\7«X8‡vŸáÙm‡$Ø¿ ßÝâb•~[¾3¬xANøäœÀ‰vxA|ÏÉ èoÕ††ã¦È(?a7Þ×Ç‹ÏÕ×ñpW.Õ¿ðÎÚÜ:Üϼƭû$Þ``ìÕÁHâÖu<½ø\:軂ëØÏ}²!‡s`ÉËŽ-¿¬ÕØ|Dxǯ{Éh“¹–0åcˆïì3kÀ|ˆòC]‰ }á‡Ï%X7³K׿{ø\ëìÆq‚w®òV¬}Xûº%¶ÁʇÔqþÊÓ^gÇ^ŸÚ'¶'6Š'FçÐ:™`>Ä·Ï3ö‹ß—øˆÒÁ0â.JÇóm–ÿ['®XüìØ3nÏ·¶Â}}–ꌬï"¯mÌ£ƒÑ‡ÇPðÜ,œÞ »jŽëâúã`MŦ>â½z–ÿ›â;½Q?”†STð3¯†ݨÏÊoq’ŽËÖTzÆfÝ'ÛÄ6ð›!Ï}²OÂå¬Ï|äÑSX_ n♕‡‡AÜʼnü¨‘‡‡—˜G·í¥k(Ÿ«kCÌf"v5òð¹=…~4T°½Qœ²ÄZ ¸Ž³ÞÝ¡¤GwĬº|!>bÌùü®´Votª%ð|9i‡‡—“j5&Ö3H;|®‘4®±å'œ4'玴ÃçcÙŸww½Zš•–­‹Þà’vø\kC¢Ú…ü›´óðN}ÖœCÒfñÚ÷T<¥Õû k'u[¯ÀoëÅçê„OºÁÛIzù¬ô Òšž‚ôÃç¨m±1üm]ª ‰Íä«Õ4Æïžòƒ—lÒ¯îÈí¼$×áKüê4Ø£¤Ÿº|Ò6 #°bçõ%.ëSkÇ^ âD~åÆ+v_ÚpÒ» Ã1.5ÖÜ \Ç£xxèû°÷_xKé—@~°+8»eÞ«`Ýíš;ÔgÃJëšxÛÖc_ùE+Í:®ÍqøÊÚ©:òøe¾rã3 c®NFÛå §&røÊ”—–†9YxI8ár£×]äœo–´ïàž*ç|›³Q„O˜;¥_Òê/< #¥_"škð»ç|kA{ß[º3BwÄ™pnJé—4å;ø¯Ø,½ñ0ƒÚ)ý’ÆwDMÅØÃ{ýPà¾k*¯–Ò/ñNcˆèÝ''Ÿ-p?“Ò/I®'ƒ¥½ckŸí Ð__±^{ê¤û¤ lCí“–Œƒì³³Of”‡|–NìØ³ON§÷[€WÆÎ”¾}<½ß÷zÃul½bb´UŸm°Ò¡W ˆu<™Xå4'ĦSlå"bc"fW¿«ˆ Š\¹e3Œ}>mwlñ•çÀïvÅýÁ Ÿ|Šþ¼ß@CpÅ–À¿æ½ÿBýø9ß2éÍ ‚÷¯q©ð]Åñ«‹Nµž‰±¥;“q{<³Š_b¨ß·1ÈJñK†7ªÉTœëå“FøC¼Ãx”– íQÛ[ùnäüoªaÿV¾Û¸n<…v5ÇÿʤÚë¸æ£¿ká˶e†9•ï6Ú£Ž(qòÝŽþ?ïcømqòÝ’‘mù}öÃ/ÙP¿;°®CJ¿Dò"{½5lÃÕ/±€Ø.ÀÑ’(Ÿ•o¯jƒáš¼\wlƒ7àÙÈ<<< ÈÕí3Çm_¹9æBצ¿í‡_òChÌÇfÇØs/±ïºŽª©pàŽKñK>ådßúÕOïµk¥™T£àOƒë•Ë'®ûO/‡[ë}{vlCÕåÒmîÈé•Y:OJxuwƒ~Èà ²àØ1á·•?ÎÄœÏÃ÷Æ/É'¾wàKùãlQ$â?=-VlñÌqzûoYéµKµõ ’Å3oÄéíúô‡\±Å3ïAu]±½‡?9Xç¿¥a?Ïœ½»@¶â½¾Ì‡õCÚ_Y¥s]ÇS›{oyg½)ûN¨CÑvøÊÍ‚½³C¬þïòQ{› þ¶ÃW–tæôNlïÑ¡÷ɱ2Ä^;åø¡ì2‘ÓeÏÇ9±½ÇGÌ…b;ø®»öãGÕDi aý…öão*ƒëq†@?ôÃ3ßdz®5š{Æ-Ñ«h7ð»gܲqÀ£rÅÿ€Ñ'ïŽýàÇ3/•Ú;;Æÿco„îŽí=>Ð/µ]:Æß¾9H‡¾pÇõ§Çw}·Æžú·5´§ Ô(è8>Ðä{ö³6ažýÔã¬68×Ìsç§g óºHì³qÆÍ0‡ý ÝØ3nÃ×P`θ %n~ï8Æc–/8¯ÍØÞ³Þ2Œ½[¡EåŒÛx©ÕømÖíÿ;&r\‡2pÿý©ÇÙZ×´ŽÛ¯5é=ãÖЋï§õy‡Q9ë-:׋4Ü£äì“!ÄIÿ<[~¿{öIåZŠþ{öIÕIœô ü>•3nÝH³sà»[«g¢÷Dnàç}R«ÇÔÈtWì9߯HªYiôÝQ‚äóÚ@nÅþ¤!_nnþÄØS³~4j?FüWõè¶:²“tàVl½ºak¶µêqÖÁú‹î€iÕã´9P3n‚†öŠ=ãF^|sýàÿjÕãxÞö>Ï öÖQQ?4Å6Ø·m΂˜Ñð»5n0è-Ç[|®$§€×ኽ|.7z¿Á[O‹_Nï! ꇃsí$îãݲu©ïÓ‹—˜ã[J×vìÁKFrz;âêåûðý”ƒ)$äBµð ÛPxIûö?±‚9 õâ+·¯3ëÄ6ä9jé½>¼ntxûké½>|¶‹ßZ•Û’üìë ïã;öœo ý|Ö³G©½ç^²… ¶¡¶…ú­7íÈœà=±s˜§ ß¾¿çÍë ùÃç²nX—?i*é½ ÖÖc‡§ 9QGÀ[ÇØ³ÞƨO0ÚÄöž¼©9à?þC°†âäMÝû,@SrÅ_Ù_¸€À=Шõƒî©È¥Ò(þ¤g’vÞ„ïÎâO&×Ýb ˆÎÒU3ö3àŸéå_HoÓõô€1.œaäÙ4§ÕytÕ,Éûr(äPtßCŠš|Zþ8ë(¤ûNRlñ'ëBŸ0ÎŽ=ãFù¬-Ñï[:†êÜ-ôá6•æð1'¼%äC ö¬·Ô™|Ÿ„¹“åkô¢½€8­féªMª—ÄqËÒUCÑ͵ÌQ¯Ÿ°ß3ž›Y<<éÈÑjÍð·EñøyºŠß-Þl´6i>äáOæ$Hi°÷Y»<¼Ž±S#µV¾F8Ϧïvìááe·NÛaíì“Ãc |âW@ñ¹Œt 'xQ¯ØÃç"½øo|–µò5ŠŽ_¥iÆZføÝÃçŠNw1Ç"+–s˜o±òÇiNùMÃ|€õò5òÄöÎ {ªõQg–vâ{lÃ7ŸINê‡òÇiƒ´û˜Ø†ÃSÔ=Ø9¨µòÇùðǾr>È+¶òÇq'Ãn[ºjèS±s>Àí°òÇîRNVì(]5ô!}ÉÍØèåÙd̆܌Q¿8ÈùBr¿‹{”ã›Á.¿¤?5î0Vþ8ú·ÏzÃïzi»%γώñ{x  ×àÝÆ¬övl×oõ-Þ¤<™#ŸÖÊ'Yßst\oåCܯñ,e<±£êõHïÕ‘/grx =YÃóC&‡§0FÒºàW›Ô}²é½"7ÉÊLvŽä½c{«'&Î_¸ÓZñK‚ÛÛ1_hrx _ÏÙ‚ÓVõY´Ÿ9ÖÍXñK¦P ÈDî¸éás}8ð_{_ǹSü’Ä+ûõÇÁ9ÙPƒØÊg½X‹ÏÂòÇ!þÙ^P»nÅ/Ìß‘‰ó·ø%ƼÌõŒÀ6dñûlÒ¹ 9K³3nS)?/૱bob¾e0Ä.¿ä Nÿ´ù¿vù%ÈÁ ZO»ü}$xЧsçòK~÷³»÷TÁ6TÝb؆æxÆ¿dˆ φêÌλ[§“¶xù®Ø“ ¹¾uà a~ÞÝ:á«[ç±Wîü~ƒü¦ùÁ•U©þmÄÓzÅ\yÝÛèMök‡ycO> br^ºáo;ù0<:¹ÃX?œ†¤|Ëײº±qb£ó{òöƒ—ÄÛg žýà%ë|kÆíMè³¼dCIÚnãW†àÆž<ˆtœœ;hýYœ<ŽÒÃë¦ÐgÅ/é]9—ýPü5‹_zà=ü’PÎÏÿz‘ÜØ3náÄSè¨óoqÆMÙK½ý–$ߨ3n1YÐ#`Qã†ÜüÇi0óŒ[ŸÂ9*ƒöγÞf¯bý4hï<ã6ÐsìG# ¿{Ö[vŽíÛ«…÷q{‡ãwÏzóÁÚXX{f³ðIÔÓÝ´o¼ŸÍƒO:æÔ¶ÞžYóì“âJzLè×aóì“Íé~ <ó仵ór×KC{óä»õts×3@òä»;úoz+¾cóä»­S‡0sË“œo±®Ø^»þó¤5…5+Vú%Ó&æ‡ë/¬ôK:zmmï5Ài-gq0Èçj>·—{ò¦âŠ9Ÿ4xoz;ã&³#Î5îÕÞzñó8½2¼OAóCy'/~I"î¹­(cϸMÔÍßOÃX+ùÕ)Ö®{ñKÄÈcÊý¶ÒqòSôdñ6¯† öéúxËÊ…²Ÿ¥áXô“›I¾Ê3°úÉ¿¹“¾²#§×û¨ô×óÂK²‘6– ¦Žç·ŒD¼Ï1'á¥÷:&q¼õû¼ô^G¦YK¼åÁ'‡“'€*¾óŒ[ áÕÒñmšŸc0Þ‡wðœÅùwä¥÷'ÇóŒ›{' Zá ˆVë͸¾¥Œí…ËÑvÚC²vÇŽš„Ÿž+U_ÚcÊï±gܬMöÇ}'Jïµ UÌãàÚŒVuª±Š|h'ÿ6'å³ ýê¢ü?;"ä„£Uþ-I{LP¿/zÕ £GåØë-!öäßïÊý£Wþí7‡rú¡?e”O¬Tý<Õ¡L…·iô£JþÇ[¿°Šè'o*Ìcê=ð»'oúr r£Gåçi˜è+ý5ÊwãÜ)ý’uß!ýIäœFÕã¤6¬Q ÿãg½¥ z9€”ÇŽ­|€ bÛä£öÉ ¿Ža Û£Ö›S„¢†vŒ³OÚ¤z†Þ°ÇÉãŒ$ˆl°ÿFÕãäTòž@°ÅWʌѱϲÎX‹M÷[õ8 µC6Å0Ý(¼L‰~[À1 /Y?¼î©!•@Ð-íã&WXK Mñ·YÕ´ lïzýÁœ”ª£šFX<úÕ…Ô}rÈã9ãÖ²c>@¸ÏÎ5%ð»kû†¹®íÞ£_ïC ­ûdÂfýð =çÛ@¾œ³îm”?Nj4«cµê!'ÆFâþ[þ8ŽX|‹‰í=ï€áЏQ(µ¡ò8ȃŽ5”x¾iÕ›"®¼åp:Æ–oŸaL¸FØÁ'{R{ý°Ã ŸÄú·‚Ì&ì¬7C¯Ùí% y½°3n>qÏDL,¬Ö›ù›fÇ6XÝb™ÓqŸ´3n«Ýˆ9zŒ=ã–°LÀu;ã#Igý£ø%-HËkk’?c‹_—±Óx‹DñKÖ±™Ó? ¯}ß8÷E¿„ünu—[ÃoóZoøÛvÙ¹bª¾;È+Yé (¼Ä#U,{ܱµÞØ· ¤;/nDßUœg…—¨Ö]Äw@ܺ|ÒGœ†÷Ô(?*¬c}Ñ—‹ÂKÖü#2¬ó‰¸õoäq­o§ˆƒOæ$]5Àl"*ÿÖI²¼sEùQIÏ6b WN#­ò¿ˆ8ù€ÀûÎîßÀ~8ùG½bC«¹¶kÀ©'3'ïl;fùöyvÒìþdÌ•=©½óa\YÍú¬ôKëçwnru1K£Ó¾3±/Êg²ÿñl¸ŽgùuÊÝv¡þ-_#%/(ÃÐÏžù”^ú}|p…§Œ‹ca­cŽïzNÁþµ:.SŽXjÐ:þ¥¤ÝØòíëÜ¿篔®ÚSììü¶m8ºjÓtÒoƒómÊ,½¶Ö)Ö0öèá­sŽúLpßÑ£c“¿‹çñÔÒÃswê_8c§žq ¾—ØÀþU)ÿB§6 ~ÔT-ÿÂ0j¯b{ϸ¹öɱ0zÆÍ›+Å‚ÝÔò[2ù·ÁœÔ3n6i_·a{ÆÍ¢jøÄO;ã¶–1·×›qûwýmÅžqÓ©þ÷Ø3n_⣿k´›¦qûðå±0w̪ Æ{*Ü=§qSã{Ÿã^mgÜ4x?œëvÆMŸE2u?Ãß–÷·ñ¾Žg–·úm|ÎwÜϼÿïe=g7ö™×¸ ÞžÝ^ãÖøÌ-E‡ß5n|fÉo½ôµjßwïqÆm¤¾¼!ñ»5nö³Õ‰øÛjÜ^ÎcÇùwÜh>¨€fçœW§wò9s§ô^¥Ñ[Ï·9ªøxÆÎ3n_fY¿w£„ù0ϸ ³ä·¬ùÒ{ƒ¿ s²ô^×wƒÛ‹¿-ª½/÷(\Cå'<²ó9¤øÝ·Ao23¼\?á_±OìÄó¸ü„Wp,5Fgù ¯ß†íýòY¹±rûlþý»5n£ÇÂX¤•¶± ÇÂç·OIУ½øÝ·6œû û·ô•=„bñÜÌ3nÝèÜô}–å'ÜE^ÚÛïw±½_~7vÜïb1…lgÜz§¹þeûwcµ¼¨iØ:I{Æ­Í—1Ž ±gÜšÒ:þJõÝØ3n/o§—Ø=n?~(äñשó'ViÔl¿ùgì^²E ©>–Çí/I$ľχ¼dn.+Ç:~WþwÜ=ó/Ù^E¤Ãù{x Sìå· Äž‚qàKk•´_ú÷äßHopÇbŠ_¢B|®­›±ýæê¨ ˆ 敳|™g€‘æ(ž{IzŸ°†Æ­[ ž“ÖЭljöÒãªÇ±AõÇ/¿­øÊšJºj8cVm ÕÄ›á\¥‡7dR,Ôå§´ª-I¬1·gKJåqÒ_bažIåq¸4 Û …m“î×Klù>$ém+jµ§Xឬ/'€W§œ‹|_c WNÒçÒµö)óæ$XãN±½‰ÿ‡Ã‰õó©…+³ž¹¼²êq^Ú+ úëYõ8Êû¤tÁïÖ¸±F¹túnåyIß-¿ŽÎú©gܺ1/õŠSϸõ shô†±óâö¤Oðkerc+ã¬w𴪣b}‚ÑpŒ­W- õYŸ‚±g½Mävüh~Ü,½×ÞhèO(ÇjÕ¬ômnc³ª|ÑÇ>³³OzҚ聆OV=Ž¿x.LÜ««''éDölCV.”µ"¿[õ81:Åvüm~xA#ÙÁð (~É}ÑË„þõËÃãþ T=ŽvÚ£¤þ›¥_|f æóÖãÛ@›œ¥„>æ?2Õ°†æyˆ“&ê0Ð’ÉYzAJš:óN9³Þ"´§Ž\9³ô‚‚jlÝ5òèmã$¾kÀÊÃ3_mÓ¿®¡ªÇIá¹.¸6ó¼ß†ð«ã>ùƒ—¬X#ž1Áï óŒ˜üžýÏîªÇÉÉûÎÀ÷Å^²…ä“ï%cüƒ—l/_ÒcÀ«ØÞ¼£±vÓsßYßO¤³Ès>¬Øóîeÿ}¤­vìyw¯+"µa<÷¨õ÷õîf}®6ŸXæŠ=ãÖÛ`Ý$ÅßvÆmv®KÅöžq³AÚc­¶÷¬·! k4öWìYo¦Tw°®wöŒíg½M¼ÿ&RÇvìYoÄeÍm÷Œ±ãb؆5bϸuMÔ!šOÙš{ÆjÁw©Ò³þxÅžqSWü®?éú;ÖOì¤~ðQX±q°  ö¢þäŠ=ëmÝKð»_wÏ{Ö›¡oõÜ5™úŒg½õ ì_ô1_±g½‘—Ùú ÔU“Ͱþž ;¶|ûÐ;e}WÛ{êq5>~¤#a>T=Ž£gÓÜ:ØÞ³Þ¤{}WÛ[zxè)¿a=œ;cV,ù_ˆQlá\-HÃê)Ñ´b«g?Œ ìîvlÕutÒÜò'|±c«n±S-Ì\ÇåÓ•Ûû”eÛ±Z¸œþzàÚ¬zÕŽßé½ë¥×Ö°fe­ üîyDB½éÚâL`Œ«gÚDM¨îsG’="ª~¼6B\zmBzL ×PÕãô¥„¹®ãbŽX×ÐÁŽ=¼×˜t×è™p•?N›ìm¾r+¶ÞÝ.Œ)Æ–îŒ1øäŠ-|RØGAÎÂòÇÙ† t‡üî­Çi¬1Šm(œòÄp__±õîFÎônÃ3‡²bï¸)k—è³ÂK²±g`?^âp£aßµª;|p‡)¼DZã6 ¸Ë^2œ°biŽß¥•ÆÞÏôèŽÍª©h\?ó·ðª?Þéòc\ú%s/;غZå‰E®ë±(¼¤³§›È3¾bÏ»»¹Äé·YéhލÍ𻥇7é­‡yô·&ˆ°í'zÇ^¿E˜€>¼cËo±s~a†Š-¼$mðwú7êÝÍþ…ë¸9õîvZÇÚñ·Å9ß$(ç³^ŠðÛ¢tCG0×O¸ó\RVwl½»¥ó»ú¬Þ݃4r×y}vî%.Éc®clÖݨ³f†ÂÚ,½Wo´ÿÊĹ>Ï; ûàµùÄðV쨻'íÕbúlžwÀ`d LíØó°Æ¸Ñ“v¸cÏ;ÀF2ÎåøÛÎ;À”pOyÒÌvìy˜ó{Þqï›ç0xNÅ}}Ö;`Æ ž ¿-Ï;`]é,4ì‡<ï€É:£;Ì<ãæm². žYyÆÍ…ÞǰŠ{ÆÍÎXô?^±VytnCCœ ϸɋq(ì%yÆM;ë î…—ôAxTë s§ðU:Zü¡^æøŽóé3¸bϸ…P^º'εb‹§Ð+nˆ­ôÂK>õÃ/(ü®®DëÜ¿cíÄö,E̦ÿà%ÛsÖPk0ú^²ùuBžzƒ+öðKÄéÝOIÊ{ø%2ÉûÒÀŸa+©ÿï~:éAƒWç¶=±9É'“Úðƒ—lMŠE/‡+§’<5åi9²cϸuôÎþ‘4é{ÖÛD]ìŸ7$¶¡öI¡X—§FØŠ=ëm(ŪWkä™×p/)¼$CH?•æÃÅKò8Û¦Û`Í^¢¨¡²éU€÷ÂK>Öï_õÇO‚¶pa+ž¤A¡Ð¿…—€‘豜,¨—~‰¢ÝÖ Æ1V)ŸmÇÚjqÀðºÎÁšxhåߌôQópÅžq›AõÝ º·+öêáM%Í ¼è¬}§“Î4­y­w@i[‡óÂÎz[³ô®Më÷-BºØŽsÇÎz Ô7" »+¥ÝDÚÑÚñÜ4}ÏÕm¹ ÁßVyí¤3 º3+Ö+÷E*¢€9v«ûdNÒm‹{î“ÛštFpÿµºO¢'á–3Å=Õë>™£ÓümÐÞë}áFíõÊ¿õA±Ùa®û¹O¦ Ö/ ü®V¾PI3ãùDÚ±7ÿf¨W«{Æm]yã>éç>ÙÑaÓpîxÝ'{¢‡Kñ¨û¤ÔøX±q^’[.×qÔ}ÒõtwÍÄžûd¤¡Þ«€/ÁŠ=÷ÉļÞö«KXoUÓ:yA í%UCšò;±Å3ïP—ôc7бÅ37ún‚vÓŠ=õ̓Ú@{jÕã¬wzm}øŸ-_qbjt[ãÁ:®zœÞÀïKÿ|Ø?¿±U0 ÖsÛ%ôCÕ㬽 Çb‚–̦­ÿïÅðèÐ!OÖç­ëPlÃh í·çIF=^êûìŒÛêwØHœ·g(ŽE8î;U3Ô oYíí­zÿÏzÃóøÖãX §[К¿õ82ûA'Œñ­Ç ÇùÐ:Îõ[óôÚÐp¯®zé¾û„ýwlÕ-ò sÐØ_±qk˜È¯n*¬·ªÇAûƒv|ÇV=ΗöãÇÛ|'÷ÍãÄΉýÐòÝ£êqj ”oß±U·ˆµF›F ï€Qõ82h®7Ðî_±U·øm9R)Oý{ÇÍ0 ¤[ë µ¶œ¼ÉFÕã ümzñ+¶Æí™Ø8R4‰}VãÖ…¾‹÷õÑ«Ž*õiç„·Èè5nXß½åœ`?½öI·ßͼŠÑk½ šÃ;~·Ö›’&I>Ÿ=;¶ê­qÍÎÉî·vcg:öYüWÍàï”M'¾u¡8¹Îå üÛS;dÅÖ;`rî ózc̺¯s¾%·…—Ì· ¶WZá}œ ƒöʹO~ÞTß¹$È9ï€Éض€ŸåŠ=ï€ÉµgcR{ Ÿtâ#ÐPY±Wؿ1Ò{påžÌ3oO¢{Æ-;ñH¿†ýÆžqK5Ê_èÄ6œqË—ºà§ÆÐª[äüf…qÓ3n䇽q{È_ =ïá¹Ó°ø¡rß-;€Ã9Tï[„ó"Û7㦸6õŒ[ùdÂ3bÇž÷[:û8¼¥‡Îzã_Ξǥ_ÒÔa¯.Ÿ g‹q‹Až |Wì7Ò6†­hÇÖûMÉã/îˆÃθ©Q¬ql­7|›î4P`*`ÄGšäŽ­õ掸½ÈS/sÅÆÍY/xv^bÈMÚöÔ‰m(¾r8òûÚÞÕ(¼Ä²áöx—+¼Dš#½V6ô¯ŸqK%ÞÕW:·æ¯Ÿq³|«ß„uìgÜÖ|ãØ§¿éŠ­qKÊ5ÛtXo~óÝ/í5loÔYH\ {ʪìØYü_®!À[~ëþZ[½c–ÙŒk!ç>Š_²öáúnØS‹_âMâ/õè+¶|V‚ê!Wÿb WT'a¸#¬êP‚cñl©zœâºÛ„<ï¨zIÊÛœØÞò7å|ìKŸ+Zã~˜Ð†ÙÞ=…~ê¡ ³ü…jVÌpÜfù-q°þxÅ^kÄG|‰Õª&Ž€&ÎßÒ{Õ ïá/Iö[þoI\5u¼Ÿ]½Wå:a78ç¬zéÎwZÅþÍjåçy #O½iï\ï„¼Š‘½Ú;˜Eß­ún®å’'¸cOpÚx¹Ob´4Q¹F×p,JïUC˜k9ð»¥?‰ûY‰wÚÒ{݆L‹m˜¥e˵}#±θµTæúÀš—vÆM‚Ö@Jï5õÅ÷0s)½×”¤=Õ© ŸLsÞ£ Æ\Jï5- Z+¶ôÌÏ!üWJï5ÏÉ o')½×ù¤)}è³â—ÌÉå‚ãWÏ\IcÔp*~Éä\*àÕRü’)ÁÚçø)~Él/±xç*~ILŠ]? ö‡â—„ 벂6€¿$º¿h¸Âo+~Éáí7çdñKÜ’õÁñ|+~‰kѧ…q+~‰7ã6àÙ]ü‹Æ±†ß=㶬{‹gKñK>öÿ­ù½bK»ÏˆÍ«gNwZ\CÅ/1ÖxVÇ»gñKl²†¶ãš/~‰½x.žÅ/ñöâ7µ¿Rü›ƒÆó›RüÓì|G„±(~‰uÖ6Ěò^Ò° Y:鬋=a]hñKTùÜ ø®¿DGcmn8çµø%Úxïë°GiñKÖ ½Ä*ÄêmCÐöT½ü’Iž!cBP‹_²î^ÊßmWwÛ;ž¶;vþ—¦ú0Àµø%Âû$Õ‚kñKÄ:ÇB=¯¿DD¸ ØÅ/yÑÿHêüÆ¿„}*ózù%Ïáp.lCñKœ {ŸŽâO¿ÇmÒø~ÖÌßqù“|f xóê¨që/ïîÀßvu±Û‹=öÙ¼\*ùÛ@G^ýõt˜ÒþKÝP IËg¼x½€ÇÉŠýð'qŒQ'}Å^þ$ŸóÓ° z¹¬ì³o=-œudßÀw´üqºN°Žh˜;åÓŸ¢NoúÕ+¶øÊIóÁ&ä¾´üqšÉ±ÐÞòÇic²¦:äê´üqšÒýÌ@rÅŽ«ùÍóî;Zü’ˆ|É¿DY;Ä ×qñKÚ|ÉâÜÑ“ïŽaü]Ü×µxAíEÛÏX-ž‚‘þ™ < 5o]3·×…µÒ'-:ô%X±UcT>A+öÔ㬻çòᮬUÓG¼ä»aŒMË'ž¸T†\5µ“ï¶ã1Æ~(ÿnÖu§ü±^?áÆ\ ð©X±³t\ŒçNÂ:.½×1&òèêå“ç®ÍÒ{]÷jƒà9õ^§±.6Ž…_Ýk ýàGwL‰ëí„íµ«ùÂßÅ=ÕîLáDâûM=*?OkSQ¯BýäœuÕ© yóóƹq˜gqõÌIŸ`]Ï¡ å'¬Nzº„‘jTþms-ñîåK˚ɂ: Z~Â"¬…„ºZ~ÂnÂ:x/)?átʹ迱gܺ sN;öï¼zÐ9½0n—_2‰ (çCñKÂY'<*WìYoÍ™ƒ¹q-~I¨ðœlØ©5Oc¡A±G/È‚´5­á¹9?úÊ üTgŸìÌýZkÛ©7#ÍÙµ-âwgÕ¦Ê ¿¿[zxµzÏ€l·~ž¸3ÈÁÐ,>W?UÁ¯cÅŸ‹u“ÛÖÒ{m5“'`ŽšzùFÌßÁ½$­ö>æ Þ•Ó/ß(ÿ{÷Igý(Ð[Ñâ—Ìn¬óûC–ïúKÿbNØ /ñöÅG·î›–<~b׸ý+[ûæ· Rùù/þä‰]ãöoßo=ÔºÞr ÀI7)žyì°‡Ú±£ô« ùëàVÙª§¡ö‚oZÌÉÒ/™¨Õãß6…7Öê i¤]ÚÛptgz#MTEÍ “Ò3OÁ6|inÝØ3nbᤂc\õ8[´cÔ¼šV}Àl¨m1xb¦½tHóe4ì­:ªÞð·™ü®”þ¬7GyÐ[:ô=° ‚:#¦Va¤ù2'Ô‚[Õã4qÒi ¿[z ¨Oà\ nzõ¹†NÔNšfí}IsG¡fЪgäÀþý첿±¥§ð¢gÓp]T=Ž¢¦ÎÖPÁ~¨zœf‰óìsSùÕª«k¤gÓ ÎÒª'Qÿ×þ|ÔO~cϸ ë­€”ÇŽ­q“Ä6­y;ãæ“Ö>íIvlÖ«ÛQÛ¼î%8úMG¸±5nð¨ýLëøÝ3nÞõKµ¬êq¦ êvô 5ºVõ8Sàý¶žÌjíÍÏ}2‡âw5¡ŽÊŠ_Òžù#o;`N¿¤ ÈYnhïg~ï%Ÿßš$xG,~É— Â'ÖðNPü’fáÔœÅ/i9P§ÁPûÆâê`Ll¯>e1wlåq°xýö“¸±•@¾§î+1ôCñK:ë4|Aù7¶ò¨+!ïgÅ/é˜Ý¥4¸ïÄÍãø„XGž¹¿ä3O¾Ú  ±dÅ/ÈõÑ]¿m^_ZšgÒp?+~ éJìy†÷â—ˆjE|œ™~c¯wc}ÅßVùn§ùe7;¶òÝI±x_/~‰ÄÄXïÔ•ïF¾½nI4ì‡â)ˆblÒ²ø%´Ž'ê`Øå—4š;ÓÖÐå— Áïšážzù%6­c¼—¿Ä0W§; ãvù%¼?hþ6¿øþ¶¸Þ.¿d’ŽK¢ß¿Ä‘/·5uÛ[¼ ÌAúF°W{á%4]ážêÅ/‰§ÉoaLOœË‹_Ì+VÔI÷â—„½p뀣åÅ/‰áÎÜñ ±ÅçJæú`>Ë‹_â\£ –؆¸cáüÛ0¶ÆMœ¹î c³8pÌWƺ/~‰s}r>^x ÷¶-[ë-ùF8Æ…—¬k qø^x‰÷A¼bÅùPx‰+ñlD·÷â—¸¿p%ckÜf£Xô\ðÂKܩψåÅ/qᚊü/~‰%ùwK>¸¿Ä‚8 ¢Šß­qóÁÈCzñKl×ç cº±µO6nƒ ¶Áê 0cà {ñKT'׬€7‚¿äëAþÅc‚uQü5âÞ¬1÷qÏ·4â]_Ãåžo\dP/íÅ/Q#¾ÕyñKt0÷ ½Á¼ø%Úhïë9ð»ú¿‚SÅÂ\/~‰q{â:–Ë㺤µ216.WÚk¸6‹_"Ì{í¨ñáÅ/¼¯wä&yñKF?Š<Ý\ï}2¸Ï:Æ^žñ¸AîËõòð‚ùˆ¸ŽµxxÌmÈ r-žv®'Ã3@‹Ï5Œö‡¡ûyÐzÃZZ×Yü3âW jÖ{é—€ m0­ô¹ó•1—äV:†JÎuÀØ«Ï%Ì™¦Øz¿Í®;póÝjÜZá¤Ã|°z¿9ñimwÆíò¹sà Å­ÆMã…¿sÇjÜ:ó«‘ÿàVïîgáKq0à·y[WæÖwƽÞÝ‘Ä)CÞ•{åq¼sŸV»\NqöFb{µt}˜o4p ^ÜW÷ʰŸÑz+½WõιqøK`ŸŒƒ+{©«wlÃÁ•¿Ìx¿ üuò[dÝE-û/®ÚËwKW-™×†œS/œ9˜£5¨ÏŽîŒz2O± ¥;ó2ß"åó±­þþmàÑãåÓkß <[æ(=›®îå'îÿmå'œNz6š íæå'lNþCš‚¿ÍKýå·9¶÷ðKš±öÍHì‡ÃËŽ¡à[¤ü„G^o8yÇûÞ±å',üÉ´Aí¤—Ÿ°%yتá;«ø%Óò¯š/^þ8ë®ÜÿÞÞÊã°?ŽŽÄïVg2¿¤÷Ëóì“’´†>7øßØ›Çá½õK<óâö4öêh¥«ö¢3o­tÕxîˆ%~·ò8Fú0ë~¦[ùnÒ³iÐQþ8Ê<Ò1Á—+Š_žìU{y tŒ€=5Ê'^xx ÷(¼¤5®ëÀ»}´«‡Çu>‰cQx q0~jlÄöúm´6‡À&~ù%TÓáÝ~ Ý«øw¯ØË/!}‚/ ݽüÒXWWè³Ë/áýwà½:Š_¢“¼•êvD?ëMCÙ£î¿Qü’¯Kô¯®%hDñKÆ MÔî€Äå—°çùZ­øÝQwÜÔÔ‰â—$¯ù®ÀŒQ÷ÉA¸Þà,ŒQ÷ÉΞXXÓ…—´AoœŽõd1nþj˜>ÖU¿±¥?ùâ æ¸æ /ùòëøä0o/épß6¦'‹^*ö-Mtc /IÀ5lãØ¹˜ ÆZ‡Ë›¿Àœ¥¶ãVx‰OÖØÏŽ±5nÞ0? ùã(¼$žÍãwº_Qx‰ÏÞ7 »y#ßÔ²ÂKÂódÞ@ç4 /‰9)Ÿ% Û·ýXÇüzDá%ç±ì5Ô!¶ôÜcûNá%ØÕšg ×±ßü[ÎaC?^2Û‹—pN£ð’9œ<øã„ëý.Ž…´ÄßvÆm*y.ŒØÞ«ƒAºîé8'‹_òå]õÑu·Ä>+ ôgßž°7¶ôKš¢¿+îÕÿ¥_²¿ \”¸ú%bJíÎS\ýSúîTlƒÔw'jÖ7ZCÅ/yùm-€ÿW¿d ¼W¯e…¿Í¯æ ÞK€–¼cKw&zD´ÄûCñK2©¶$4wìÑ jÃ9òè1^PÓA^ûl½ uD/ÀÁˆYzAA^_[Æ-½ ÔõÙn¸ŽçÑ êÒÉ_DcÎSÇœ¥0<¦—“l/úF齂@ýÏwž›s–&T*Ç"뻣Qÿâ9Ÿí~7hÜpÍ—Þëh¤2;ðÌ#ϸ ãX˜¿¥÷:0·øÓ‹Ò{ý2ýúm0ÏJïuÄпǖ>WÒœü’µº±q¿üÛ°½5nFµàÖû7o„cŸm˜íŒ› Ê“Y‡ss¶^úgƒüEz`léªyÃ>ëÎùÙ®®í;:¿«÷»/ë¿k¥í]³ùí‡ö÷ïÆm¯ñwbçm/ÞÏD€»8Û7Iâµ­Xè‡^zx}Ý£À[iöÒúO&ú}Í~Æ Æ |¹ÙϸY{ù.ì}³ëÕì=㶦ú¤ß60öêRÿ¦(Æ–Žá â÷ œC³ÏÒRÔAüÔ†±Y) œÈ9Zi?ªQ,œÝsœqó¤ûä48 ç(ýÉA¿m}W®¦¿îQshikÒ›lºào;ã6QûF¿ëÜo¬—¾'qC§þ¶Ò Em¡õ]ß¾9æ}wpŸåûw×Ü1ði›rÆm:yL¹âÞ'¥gÞè-âŠûŽœq›˜ËßmÀþ•Ò3ô~KÃ>»z¯¨ ¸Ë¸±Ï®ÞkÐÚtÏÝ)§nqnF±Žß-^|Ïÿx>âwçÕÓuŠÅ}R®žyòwï9õ£Cãö¥™|cK_çξ#bÿjé+;½‡Bð·éÕÅV>‡ÛPúʈÃÈ®¿€~ÐÒWöÄy6<1¶êMQ'g{ñMŒ-]lÔÿ•ý¾À~˜ï±ë}ŒiSK[퓼§µÿŠŽw«qÃ{Ô¶£püˆ9j^ñ´3n_ÅXÌ1áÎ5íŒÛÀ7¤ý™Ã° VðÀs|ñJžæw>4ˆî´Ó®ž9œÇ¾á!쳫g¼¶à»ò´«g®X›ªèã8½ÆÍ(Ö±¦búÕ3W¬nˆUL¿zæpÿÈáÀ<ó«gûï¦D4l¯ÞØçXl ÇÀïÖzCtb©Ý޽õÝ^Pu¯ßظ±x¯nò"Ó¯_ñ ×,›7ßÍ!3K¿¤jCoÀýš¥_Ò’ôÚzý‡Yú%ë-MßEý¾Yú%-éÓ'äcgé—4g^f]ªYú%Í…t ô˜fé—4!]ªá‚}7–¸€ ù·ׯƒÞdÒ¿{î%ëpæì=ó…³ð’ôdŽ7hòÍÂK’µÒ ŒeÇŽºÃÈ ú¬ð’µ–˜ƒ ùØYxÉä<™8äßfá%1Yùg³ð’°.6öoá%Û´“ùë[ï€dÝqÌ¿ÍÂKÜ —Ô|™…—ø‹¶<òHgá%Æë‚±(¼Ä,ù·>×,¼„jw~úÛ{ÆM'k] äýçõÇqžë¹ñYxÉ ô <ÝYx‰0ßS°d^"FüTQÜÏ /‘ž/õ Ï6dá%ckk‚^[^2Œ¹ë- /yãÿ"§7 /9½ÈùÏÂK־̜Åö>i¬eë°.²ð’μxQ¨“ÈÂKÚä9iÀqÉÂKšñ¥ ÛW–¿é{fñK2·ê²êqÒHSPÛ8‹_’¢¼G ünåלCYü’‰>Å{_‡s>‹_2m¾ø(àw+óÂÛîÔ•Çék8ª'’ýEß—U3[g/àÙdÕㄳNzƒ½/ǧþç/Üw²êqfy != /‘ Ð[4 /’àÁðànŸ…—î©ârYx‰×+ä¾²ðÂ^7.gkO%Œýà“„ÿ:®‹ÂKš:c¤8Ï /i³OŽ}â;yñ’þ’ëÀuüÁKzr®¿[¼W#¿™ÞÀ»*o=ŽQ-mCýõ,~IcŸ¶fxn¿ä%ïß:Ô(äÕ/Œ— À«ó£_’ˆÙèÄù{õK«ö#[óìê— =×t‚üE^ýÄ£\!O–W¿$êÖ}™ßØ7mè‹øa\ÿÆÖ¸a2¶¥ ÌÉâ—4Ä=ãOvÈYfñKZ(ú8šþ¶7…z²ØwZlCžÝ±1üî,AïlAîA–~I나ã—ì~Å–~ISöÉœ€ç¼ãæøÛzG+K¿¤¡?Žÿù ñolÕ-¶‰ýÛÞwJ¿¤7Èãl 6À³ôKÖ¾Ó!VQ›0ç·D¬Ø{bî¸uÄ ƒû·ÆÍmä‡r–>—j¶„Jæå™[§ïâÞ—UÐ’4Ât“2Ï|†öXŒ½u‹À Ýw¸†J¿¤µcñu,ÜØÃ3Ÿc’FXPN}@¢÷»íò{·¼ã˜‰Øgó][Ó¶ö#ŒqÞõówß¹ž:9û‡Öwé>9íùÝ{×éGͧÜüŽ­:áNzWsgÅ^§¤ïöç=jÅ^ßÁßÖâÉ»Ú<·ª)æÜøÓzÇúõ-¡û™>yAë×gʼn#0©>>+ônÉÄ6\Ÿ•$M¨6 ¶ð’‘´…üùZ±å3ˆO‹|û[uù*Jmèп…—ˆQ?¤)̳þ:O¶¥ÄV}@#þºrÅúÕÀïÎiØÞÒÁPÀK|½Œ[á%ÊçEî⊽>bÃ(_h0nW¿dÐ'f`lé— Ž–}ëÝØ«_w{ÛÒéпW¿d6ª“€ß6®XÃõ2ñ»vur„r·¸.ÆÕ êXòQ<ú½õ´O6˜¿ã£Dýû´ûر½ ì3Z™ü³s‚…­¾õÄôCÕãç¥WÁ~Võ8ÑY{Œö‡ªÇ‰1pÜd(ÌõªÇ ™ˆUdâ ·>@qÿuÚKäâ\Š{ª®ÍÂK:jÔl¾Î_ùø›rl‡ý·ðò]ÿ‰…ßVxÉâk´çq¾c/ﵓî—ày¡—÷êÂïB˜úá½2o°côrNs¡ /8n;uføÝâ½Îœá¯ØÊã ÷åßcçåe óH16ïw'ói¡½…—ˆ?j­L軼W: ‡b?\?aüîæÀ5˜göÁ''óûà·]?anÃtÜ /Y[”5a(¼DÐ÷lßåðÌ*?aíò7 oÅ–4jm ׄ5T~ÂÊ5bSÆ¢ü„Õ§\yÅöËO%>¢ìgå'lB{”=¥{wlåM­µWà·•Ÿ°9ÕYvÚ£üúw©?mDv¬ç4’Ç û, OU:]`ÿõ›ïnA±xfyù®7z3à}2>¾ët×¼ƒG¿~îI±x߉qùžÜ†€ùòŽ‘îúM<¢x ÈÞØ+Þ£Â.îIk3p,Â/‡“¹¬ýqqOÂi÷’˜—ÃI?h1¯Ø¼NÊ3½op…{å/è3‹„wħ⚟ÅçjJµ}‘°6§\Œ×1È€ïØâsuªõô‰wÏY|®Þé­7pÜfñ¹”°øÑqß™—?I{ŸÈŠ—ˆ±Ûb³øˆ ßè)xïËv¿‹æ¸.òâÊô¾ºd›j#< ßzyyx ßCIó,/îg±u…aþfÛÆæ#R?Ô¸ Â2çS¾gÇÖ¸!fn)gXoyyx9†¦øfÈËÄ+w8[z»<Øœ°ÿövyx“qû'§lÅê5ÎtˆµKÜÅ©[<<'­´yÿ]§_±Ä•èO:îŽýðÌñŽØAeÅæå÷i|àoëíÆ²ŸðSsÅöË$M’gziÇŽË‚O~ÉŠ•Ë$îAÐýÖ0wô*V¬ÝXc®¶¡Î·Æ|.Å1®zœ¬‰: Æ¢êq¦*ó£cóæXY»ôÉk›½êqbr{öoÕã|mÌ_š³øÝªÇéÄ9•öäÃl ʹsÍ`¾ÑSgdÅV¾›õ=eôCÕãxg=Ç1ð»UG5i] †ëŠ­:*eŽV§þ½<…þÒ[ï€_å†k³ø%úÒÁ¹^üíçÙ„~(~‰Ä|™“0.¿D™7ØöÉË/éÂkÓ± õîžÎ^ê¸.Š_2Œ}«ŸRJ;¶êMñGâ\¿xI2°Œ[á%Ý&ÏI\…—ôA®òÜ2vlÕwçËþÐ¡Ï /iÌ“F±Uß=HS@CpÅV]þäßÖÖqé—¤Ñ^2’b«.ÿ…»Á+¶xxÙymÆ–žÂ‹ÞöªÛ±ÅÃÓÆ¼â€½ºôKÖ]Úð, Ù±½8†/óaBÿÚÕÁÐñ×}²ôKÂóe€¹sõKØg[:žCW¿„õ×å -îX¿š/þ×}²ôK8~7®žyr¬Áº(~‰r]þÚ¾¡ Å/Qg-:Çý·ø%:¸vçYâ°coþÛë[é™Ç Øûd\=sª;«û{õÌ'Çâ{ýq&Ýí[*öC^ÏꇧÍÅ?FªÜ-ÿ6Ã1¾þ8Þ^ÞøÝQy^ÖG¤ûzñKÞtÇéN[ü’Áµ0Ãðl)~Içwáš9؆ÒÅvÞûÞaŠ_òRÓÆ÷êyu±¹¦Bq]”?ÎzwÒ¾ß-œµK’ÞvÃ7dùãôF5W*¸GåÇêož,+V®Ïy‘8Þ=/¿$Ø3$ñì.œ¦cqŸ,œÆ÷IõÀöÆå‰‘þ:½»?üª/D}ڛ׌ýPžõ»Soè>c‹_¢|‡ ˜;£ø%m°=Þ5FñK×3(îg£ø%­37ÿy­Ù±åÿ¦ÎzºÏº™ë×_u…Ÿð+6.·®alRì|çìí#Z±½—÷Êœ^à9nºÂ‚ë`(Æ^2)'<7¸b /‰Ù)÷ù¬Ñ Ÿl“rîó©#°b ŸD-ÛÍlpôÂ'•8#)†m(|²žº®ý[ødwÄt­?ëšWlá“=ÓJ}vñIhClþ:ÄŽÂ'['¾'pWì­6ä§z zŒ['L\Ö œCÞçÎüó‘¾ù-|r&òtcLlïÅ'¯Î?½7üná“©ˆ§j ì³Â'î}›ò‡ã6.>ÉØkƒ{õµÞœêÔÔ©Í!íÆö 5º+¶ÆM’õi;´AjÜ„ö³ÞqOù¯Úêõ Äö>™Iüõ€»ç¸ú%ì73ÚSÏ|ÅúÅHÙ÷êÂK^ê°‡Óo›# Æl°½ù®ós7‚±(¼d¿õæÓgÅV]¿¤F: /™ïˆOùà[zA|×@Ϧ]Ö])cÛàsµbo=ÝÆ3¶c+ß/ØvÃ6T¾›Ïù/†{užèÍ0&ÞŠ_b!/X<ôYñKLØS(à5ìÃS ÷fàz³«ÏÅóø%*ì”ëâòK’Þ-ã _ìØË/ÜÞß½ºj i?k‰ó¡ð¯©{*~·êäåN«0n…—Hc¼ü³VlÕup¥ùÀöV]‡Ò¦Ñ]£ð’Á¾@áØ±…O²—dϱ{ý»¹ÎòiÇöÏ~†W}Ë‹&`xRxIgm¡–‚ßÿå3Ø# ·Gh½ôµc«‡}tû|RªçEë¤8[¤]|’ç/æ¾äÖã4ÒtèØÞ·!ì ÓÄÖ¸5šgëé ßíwÜ”ï%ØgýŽ{ÞäÔ¤êqº¼äà.'ýÖ-Ïf€ïÙŠÕëIÈ¼ŠŽß½u‹N¸œáü­zœ5±_t“`þV=N“ø›?ïŠýøMÖÁßVySÌÍÈöNyrʤêqfÔƒÎñÔú[±¥;ÓÉo¼cÍŠT=NöÄïÎhعw.Òî7¨ªÇIŸøÝÕ‡±vsã¨o¯ ë¾bë>Ùc{ŒIŠ_Bùù]Ð0¶ô‚ð-½u8û¡ô‚ß±P Å/i–Tk¯ÀÓâ—4ÔùÑ9…ö¿¤÷—:”ÄïÞw@ÿ›†ÊŠÕ«-Ïõ"¿k·†5žôÙå—`­§0çT.¿ÄÄþ¢ã²iõÎb¾2踬Øz¿ó•¸¡rëq&Õ­ãÚpëq¢³ ÔöÉ­ÇÁ\ó6·A¬Ü:álC½»ià [á%`È~ÚëØ÷ÝMÄ«`®êqœÇÂñ·Ýz!N:֬ȧÇXgÚà·Ýzü®m9Sh劉êß4¬‹[ƒþÒ»ž!° …—t¥ºlCéá)ÕYê˜0võðŒêq÷ÔÂKt²67­Í[ƒ\ûÎKߨ^רt8‡ /1ÔAÞßÜ^ /ù2áúíÁØ«Dc¬µ}Rx‰wÊ·¨á^òµhs3Pw ~õ‚ÕoÔCŠ_|’êÜ·N>Ä~ô‚8¶aJ/(29¿ûÑ 2nÌIÿèQ-ÁÄó¢êqæ ê‡ì{õ̹Nxâ<«zœÒxãwåjQU@]¨T=N²§[Ÿ¸6o=NýD½Üzœª' Åï~ô‚¨FlB]¨\½W“ê|û¡ò8J:Ùñ¼øÔãPmÔp‡5ô©Ç¡5d¹E™ÿ™7Í™øÝÊãLAM1‡ù;oþ-0g÷õyóo0±®axטÿQ[gæä¼õ¿&øÝ7Ô~œ>2#¿±5n¨S6ÿX‡šW©zœfT/’Šë8ï¸ ¬YW ˜gUÓÜ0géðÛòæß&i,®·ªÇiÚè=ß'¼‡ª§)½ÉèÓ®Øë0ßÁ7YÕã´Œ?CJï5ÓêØÞÊ¿EyÏ?¿«íê+ së ¡¥÷úÑB|x͈­}Rˆ=žR;ö£«ö‚Ó6ˆÕÿª©yS-½×ù‚ÓŒ…–ÞëlÁxjÃßVç›OÂ5ÀOxÅΪ!M®…Qüm¥¯œ”k\w-gìêkŸ¼±å³"/Ø pr´üq,ù·îŠ­:aþm±U'<ï A¼bë>ɺØC û¡î“Æm ãVõ8ÊÚ°«°Ïê0_üšçÒªÇãÜŒB~SÇ}ðBNƒV=ÎxióÌmÇŽû6åXÃ6\}eÂ×W,¬ÍqßÝÌAïá[ïn æÓo+¼$yŒö3½x‰r Ö¦/‘Áù À=õâ%œgŠë­ôK287£«S¹~‹Œ9 äET.ÎÅüjsŒ•‹Ëý},J¿d*çqhO-ý’Mò öBNB¯~ɤ3kˆa{+ÿÆú!»U¹þ¦Œé®y¹þ¦¼Þ°6JËOعÞiôÀØò¥UªKJðŽõ]š¿}¦«×OX™ëã«×Ó˜r({êõî„鎎{jÕãØäÚ¨\ ­z cnžoUó¹N~ß5pï«zãœpW¼kØÕyâš×ãVõ8šÎù\óö©àº[ »õ/ž!7ÕªÇQÖ™úÚŽµëcNí¨±ÑªÇ!?ÀÉOXóUÅ'¶áwo}çõÏ7»ºjT³ø>ÖªÇMæ'ÖA/H«g(çõÔriÕ㌗»ò€ü…V=ÎË™OÛ[ù7¡:À }Võ8õâ×s ¿ë—oÿr·‡ùPü’ÞÇKýÌÉ«÷´æ;ÿ¶â™§r×fñKºð¾ƒùB-~I7âÀõ‰ï‹â—t®õìï\qÇ9†ÞYZü’®Ä  Ý¿bï¸q^¹ãZü’Îu‹ —µc㎱ó9„ý0¯véd^~7¯–-srð ¸z¯Î5 ‚÷’«÷*ìSÑqÍ_½Wå·HàX¿äÍ«HÛ 7–ƸãÙrõ^“üP:ò*ôê½¾èÌŽ±5n“jíݹŠ_ÒÞö_\ÇóÖu@gË™BGo=úÇæzþæ‹¿„| óÛgåÆÖ¸!v•»Ü¯Aì­Ç¡öð»]±7ßíÈ3Ÿ.ØÞZoÈœ» صÞPjþéƒÚ[û$jêlœ p{-~ɧý‹ooÓ ¶ê¨Pÿ!öµæù]»üôµMÿÁØÚ'±.4¾ë,olí“X«ì¦Öf~I"æ¨ 8­]~Ioµobí}îl}OÈû[»uT†Ú7cR{/OÁP ´aþØn=Ž‘¶æ=ûÆ^=óÄœ„5л²â—4Ó`|}@l­·؆1 oj—_Òæ/¬C¿¤MÊ3LÁ¹Sü’>Hã.Òð·ÕzÎëŽ÷Š­õfœÇ‰†¿-.‡È8_cQü’ŽXÅÖ9í0×û‡D9µÚ„Vü’®N9@ÔL¶â—ôˆñ…Ü¢ñ¾—ؾÿB{‹_Òi®'ôCñKz¨“.ä¨l\}eÊ´.Ø~÷ÒÞ톿펛²Þ•ÂÜ)½WÒÁð?ž¥+öÃÃë¼æa É­&í±¯TÔ­wz¤mÍYÜ /X;i»4æoá%ë}@uj˜/´ÂKF’6¡£¾œ^"´Òrvün½ß­ GÝ[+¼„7~êõ´cìÕŦ\³äõ¬ð’!´Ž%qm^2Œµw'hÆ™Þq#½¶Žº_VxIrùhÀƒ¶ÂKr06ˆÚXvõK×>ê¾côÛ:Þå>x Õ"¶Üf»xI쇞•+vÖwé=/¸†üúã âZ6Ôñëã=…€wå×ë[lSá·^²vjÄ‚†€æ·^¢BoS ÅØÊ¿9éŒ(ú(øõÇI®´%þ6¿>6´ONðñÂKH ô‡ ˆýû¹O µÎ!¿þ8è±êZâo»þ8ÈAö “Áü-¼ÄGÃ>û’Ƹ±•ï6:[Z üîÍwÓwõaüãCã&kèúã #O7ÇyöñÇI7< ýúã„^Òûw¾kîuøÝz¿5â »a{ / BkÛpýqp?³oÎ[ï· _® ÜÏ®?N ážkþòK«XßÅsÞ¯?N’n’+Ô(¸|ü»É?k8öÙ}wóŠòÂK¦‘GšõYÕ¿‰“¯râX^2ùHVìZ¼W#ŒtེïÕÈkËÐÊU.§çﺩ`ô`Þó{ÃýÁµx¯¸GÅ.ãÆöúý.é¡7ëå™›Ñ&0¶øÊè«<ך<Êõú>Ðý¬¡Ž–ÛÕ3¼O|ÝíêÆÚpŒ½zæß8ÑpO5¹>ÄÁ@7½¿µ€{ë×Ox²N$æýýú ;Õ±®æâw¯^å»;rÝ®^P°'à^õ8)\ ‹âU“ˆÛ¿h?zÕãÌWÞ`Blé)k¼¥½êq&sQÆ‘W=N¼`Ž ´ üÖã(ó'ûÄØªÇéÌÓíÀóë3۠إä¬o$û¡øÊ/|Z¬]÷ªÇ±ÉV¸>^õ8öÂé¥ßVõ8ÆÚÆ£>éU£“y+ *·þù žW=޾´uè½êqd¾pè¿[u‹ÌG\¿ û¬øÊ9#¨åqëM9ÿ8æÕ "¢ž ƒáóê1_ý/|Vpˆü 3÷YuÂÊ|Ä | ŸÅWf½ÌkW×½³^öƒ—®û‹îmâwË·5¿{~·øÊјã‚ã6‹¯,oy‘'¶íÙ.·Yy alñ•yNöÀßVxIZ׿ñ^=o‡û9O^xÉ|ÑÃÃZ/¼d:ç$&Ž[á%SH»è;¶øÊ¬g¾¦)ì;…—¬;^²~öY½”t¿ºÀ¾…—Dç:Ÿga^âŒÅwôžˆvßoœ“H¨o‰ÂK|PìËwõòéþ0'¶×Þ=V÷½j®¢]½ :ç›÷+ÚÕ bþïîm´ëKËyüné±6KëPS…—(Žñº÷%¼³¢ðm|®5E b¯^P§\Þ•ãú £6wþñµ}qý„;ù%I8~·på Ü^:ð˜¢_h#Œ4À“0úÅ•;æf>.¿±Ww¦žŠïã(¼¤#¯mþÙ<Šglá%£Mü®%ŽÅ¸ùnŠ<* /X>·dL@¬\þâ©óWoûÆêÍÏã;+4TâòK| N&`ÐQx ñ¶ã»”ñÆÖ¸a^Úw‰Y‡ØùîÉíß6Ç7¶på¤7ïDœ6 /‘¡I¹ÈFá%¢Ôމ߽ë­%aW8 /YO†Ny\ó…—(Îçzô(¼DÙ¯Î0Ò(¼D-œú!± ×÷¡N†ý0oýγ/nþýà“Ø!P…—˜“¾òg7ü½zx\[x_èõï&íhm8Ï.^ÂXÛœÔÞ‹—â“ëzý{ñ’AëbÝØ° /1ünp£ôKó8¾½í°½·N˜Ö1Õ®G闬؉{I\.J¿„ê禩CJ¿$Ñ×hn½xhCé—ätÊó¢gi”~INÊå÷zLqñ’¦x Ö¡Ä/¡úËŽí-¼µ@óÏDü7.^2ùþ0à/á·3àÐÇÅKëb£—N\¼äE“k'ïßíîëQxÉ‹ÆsG]Ö¸xIL~oâ±ð’]°Æ±pç*¼d¶à÷&Ô‚ÇÅK‚jºÎW¿„kúLŒ­úî>øÍ€÷Ô‹—¿[ÞzQx‰³Þ ¤~wlÕwwó¿½!ãâ%‘ü~\# /1åÚ¾€:µ(¼ÄXϱè#ÆÅK‚ñ>WümUßÍïÒ&ŒÂK´½¼ û¡ð’·ÂK„µ H«= /îzóBŸ]¼Ä_t¡.? /ƒ¦¢9` /I®q4‹^Â\À˜B\¼DHs ÐSˆ‹—4ž;X_…—´IøYG¾\\¼Ä^ú×ñÅK^ü¨çYñK’u¦»n/qæ#"n/aoÑ>°½/iöjql¯þ—g^wÐã_¼„ÆÞҼ䭾¿WÚ¹žæÎÅK‚纂¶q\¼$¸½ê„çÅKôÅGêÉfá%Á{_›Pã8 /yÁlšS¬Üzt憺Bl廹ðëþ{círdÙ{æÎ,¼Ä×´xLÍ‹—$i4£>«wûI4ô:œ…—¬§)kêÀ¹9 /±nJuÂ×›/™9§g˜—_‚5™?ÖA ¾+—3BwÄM³yù%ƒtˆ¾è)7öÖwïUÚpë»»¶<¦Yx‰ù¬´¼Ìyñãù'Ó± yùQë€Í‹—(yˆ»¦0/^‚Z¶?x Æ^>— ¯­a½Þ¼xI8½EÅ^2ßCnÀ™…—ÓØÞ[×ákˆsÍÂKDÛ¤ï ¶¡ð#œ °•Yx‰½ =± /Izo¦ãX^¢ÒðÞp¹)WO¼ê¥z^bMSu(³ðâÓŠAmÔ,¼Äž&?ÜÛ>ð»·>€êB×µû¬xAxbŸj©ßØâ¡Nú…ýPþA|®µKÂ:¾ú%«ö:o=N'±Óoìå‘ç0œ;·ǨvÒ7š?a#ÎS7ünñ‚fÒ]Äùpý„“ôH 1±yý„1ª{€>»~¨%³5ˆ[™U31ß"lâ¾n·ŽŠ´‚Ö|Õã|-‚OlƒzÓYõ8‰c!›Oý[õ89;êÿ¶~Ô,¼¤ºÂ_%õ7öêbҤƚ×é7oêØIàµÍÂKz}ËZ®¿;Þ½id׬Àœ,¼„40×#V<¯?÷Y*ÔåÏë“€—ÈÞ¶`ß)¼¤we­k·ÂK:z‘ìX\o…—¬G Íõgwá%ä?´×äEfá%£;é‘¢îø,¼¤ãügmÂ*¼¤'i—NÁ{Tá%CyƒÓpN^2P/sûCNlƒ]8lƒ™àwýj]ãÜ!ÿŒ®îQ£A^d^Ò2ïIZ³ð’O ó÷ã}§ð’®Aú´¨…? /騵bÞÏ /iÈ÷Ô‰ë­ð04Ù±‘‰í­õfs'¦Âü-¼¤Õ÷F¿Í¯v?Çâ½äâ%ƒæÎ÷Æ^ÿ®Ÿ¸G]¼d°ŽÀÀ³0?þø]m¸Þ²öÉäZå„\ÒÌëÐH¹AíÎ̹ƜT£€ûN^C:cçÀý,ío´ëšqܲöÉ â/í¦[þ5àÑWc–Þë ¼—tÇùPz¯c°V;rþ³ô^ú(Ø7}âÆ^ýIÑÌh;®_õ¯Ã™•íúP}‹uxãd»þΚ Ûp}ûˆ¿øæÍÒ{•¤ûd|.<ŸØÂ•q__±´³ô^ÕbQ$KïUç`my˜¿Yz¯Öôâ;Ô¡dé½j’.J4ÈçÕ{•Nº Þ"ùÑ{%ÍŒÀšŠ¼z¯IZaôÛ¬r“53¿ë7×A5ƒÈ[ÉÒ{u£Z®†ùî,½WŸ¤©óek{c³4}ôlðÝ’¥÷N†ÚyYz¯‘”ËoÓ0¶øÊByé6ážš¥÷:û7áÌÊÒ{%~µÓo¬]-|Ö¨|w–Þk¢7ÍÖ¨ÁùPz¯Áz6€så¸ùî]Ç6Üú€Fçj‡äõTW× ø;yý„YÃh]\?áNZ'_ÖŽ7öæ»çYWÜ?~ÂêEðÝ’×OµÇ|Û@bn}€ ¶òU*zco}@ dˆ)äõö@,hâ[/¯Ÿ° â“£G Ë'ü° ¹3Yþ8iŠÜƒlÀ•ÈòÇI¬áÏ­-ûNùãä _ïž©×÷á…³‡ýPþ8«-”;hþÌdùãdg­>m^~Ió¿êUdñKf2»A H¿dº³f=ðiÓ>>М†ÜA¿d›:Pþ rTYü’Ét¤I’Å/YçHþ-g™öñfî8}÷ú¬åõ”úáú@ów…¾{} ™§ë8Æv} ]þÞÞòÇaýTx¦ý³eêþ@s²+ðKÒdó±~ãé׺±&jâw«®cpîk‚Ò¯4óÌ ê’Ò?÷IÎoBN-ýúQMÎwC¾0ýú@÷oQ˜…—¬ŸFm‚¿­Þýï^õYx qd<*¡ /a?á6¡V#/^ÂuIëûCá%m2'§ulC½»_rØ¢øÝzw¿pþ×qá%­sMPïØgךtžÖÏ…±ˆë/|{˜gq} û‹,ôCé—l’(·ædé—l}nôCé—Ì¿Û't°c WîÄÁh5 Yú%1¹ ¨ž¥_&/¹fümךëÐW#ç­ï¦½¯iÃïÞ<΋¦è gé—ø‹/­‚~Tæõæu^¨™·.Ÿ´…&½Š_b3œtˆð®Qü{ѧE-Ð,~‰¤{Éè[ù·F¹ü/­à{õ”rØXf¿DQã#÷î\Å/ÑÖ„¹¡p*~‰øÄ¼4Öðï¤ò±Ž\V‡ÊúCñÌ;åÑÝžù¡[ùî Í·Žm¨|7žYsýSÏwì ¸uŠ÷õÔ'.·b+ßm\wàOþúн<i¤ù¢Øñ®²uz[廃ü¨Z>k¶WlÕã°önFÀo»õ8¨i¶¹Íco=N#Î4ä[Vì§Ûð%ãyc?ú%؆/ ·[üS ŸO|rÅV}Öw¯Ø®ØÞÊw÷©ÄSпW¿óN±q.ƒØâMãØ‰m¨}ïž«lBŠ_âÌ«è0ׯ~ z™Åw½ô­ú7ÖBÀßY±òî/â{O…uQü’Ö! œÅ/Y[ißhƒuQü’ª›é™Ø†ª[ôÀ÷¼ œ¿Å/‰¤ïªâ<+~ iUþèAø]ý’¤<ú‡Jõ[÷ô£²&†1.~ åÆm[Û`ê^‚i¸.Š_’Áx5}·ø%i¤‘«àw»b?¾FJ˜î;WïµuÂå×üÕ{Å=J÷Õckܤ[¢ æoñK’ñ¾†ýà×C}1W·mêjÜóþs$ŒÅå—LʹoÞÄÖ¸ÙD^E„CÿÚøQÉ.ƒßVü’D>¸lqhCá%ëœÃ>k‚s§ø%ë­ƒãÖÀOxËó^~5æyeà}çòKÜ1×,­áwkÜB1Öh½^²îS”sŸý{}ÄÈÛY!¹bkÜc¸ç¯B¬ßq£Ú³®¸—ø·F¾´Úð»5n/^¾{ù%´§®VÁü½üÆâ£á|(¼¤wÒüö‰÷ÉË/´—ÔÇ®Øâ— ^½sÍxºüÌåofuüá—íÕš°—\~ b¯¶sÍÐqó¦ŠçÐ΃@츺”oÛPyS¥zÈîŠß-œk²^›ãþ{ëqiѵá0'o=ŽQ®#Ý0¶ò¦SŒòz ã׿›´ ×qƒí-|¹–[[Þ`®¿ÄÌÈÿtþWléÎä úMð¢^±åß-Të©çzñK<ú ØÀöêõä&ÍÃF±V~¡ƒôï}Å/‰Áµ´ô~+~ItâÓ®' ~·êßÔ¹¦xÀ|(~I /(¾éÙ›7oÊ÷õXoÅ/‰Iù¬œØ†â—„ÓËÏ‹â—×K*¶áú¬¼ÔÕ=k=WìÕy"­4ƒÚ‡[ã6é½i†s²ø%‘ä=À¿eÅ^ßõ—šâßÍû]ý‹æ¾ýܱ =GÀlVl¿Þï´6'쿽ø%Óhð5Z±•m¬ æN/~IÒäÓþäï¬ØOþ­ñ^í{ó¦ ï¿ï½ÝúîN¼§~¨¼)ëpªS{¯®qÖ\‡Øâ—äK½?Ôu¬ØÊ› qþu<ùàÒ®>£uÀÍ_±•7'½bÈû¯X½šq¤Å¡Ûå)f²'öYñKrá“J}wî/Ô_l{×ÊÇi¾xÃïÖ¸5ö‡lϺÛ]ž^sõlžÒé;öêá‘[Í¢{×ë~=¯Ï;V.…suOl{ÅV}wã¼èµ­ØÚ'½žKeÇÖ>)ìuØÛPyÓd=&ðB]±Wsà »b«¾û­ž¶Ûv¥îœ }ÚíØ«‡Ç¹™Þ¡ R|®AþǘÇY±WÏyŒé»¥‡gjSñ»=¼} ¹<¼—ü›al\Ÿm·‰±Wo²†ÎÉâ—ŒI}ÖòY×¼ê`\Cê°ÞŠ_2Øwr-VƒØË3ï¬ÿ0aN¿¤Û‹6Å5ÁN{ÇÖû­±×ásËØ±•7õ—zÓó¡ø%MýÅgûìÖuWb]aÜ.^2Y3c·‹—¸p-­Á\¿xÉ0æÃàܹõ8“s·Ô¿·‡õÚÓ¶}ÇV}7çòÛ~Û±…+ÏI}Öc WöA9ÀïÂ^õ81ìÅëæoùãøËX<ËÑvlå|`¾p ž±…—–øög€»}/¼Äñ®PiëCWžtÕ†®ÑËÇð-½ó›€ïôòÇ1Œ]Ç<ÆVÞTÉofLjƒßïNªÑmøÛ*#ý%û·ò¦91vNx÷òÇQ˜ß ü·—?Ž¢†à®Ü×ãú$Ö‡9~·òo“½Er€=>zxøÛÐ÷aÅêÕä#Ž¡%¶×n’ü: .tÅV¾[ûAA'}ÅV¾[à^²k 7êqu ódiŽß½ãÆùã![üCoÆÕmÀo+~‰¡çùÎã:.~‰aîà'Ï c\üÔ zÛ;ePó—îöë–€¿­ÖÛèƒß°6‹_bš”Ëw|ÇÎØ ·ä»{ñK,ÈרñX”žBR~3§ÀÚ¼üÎóFÔ/¿} w.°Ì^ü!N¯àœ,~‰¿ð ŽE^ŒÀ6LÐ)[±u¾µ$¿oØ¿ùXŒýP±cë|cÛ @ìÍ›vÒk³Ä>«¼)ž-[¿ð‡Qü’¼ó]—oéÑ>|.ÖG„¹3Š_² II›ðY ³bë^"p. z¿d"o{û·¶·ê»SÙ Ê1¶ò8íŇðÉQüª?Þí;o¾…0&Ð\±uŸä1nô蟼)å|$ Ïú§N˜¾«Àßý?ê„ý[ÆèÆÞºEªÏÊ ëx^ÒÑ÷Á¾¡™{ëßs(/ýÖ¿ O°b+3I#¡i`lñ^{RŸ ÜåFá%Ãhþ¢¯Æ†¤ë­GÚ ÃàÌ…—HwÂí=ñ»ã¾M©þ1±Qx‰}Wð¾1nÇ {m€9ŽÂK´9ç:pÜ /Qu^oÔg7Œ9⸛Ç!¯!€AÂKlé—(Îõ‹—8ù{àš/¼ÄÙƒnÍRhCá%äCê[–~[á%>{&*`Уðǽ/ÈËw—OU¾%IKÆàœró83èΕøÛââgÈÑš‚ãVxI$wÀù6 /™<ÝL±½…—nÇÎãà:.¼d¢æ–K”ÞØ[ÿFûúW:ìÆÞú7šgkÂ6Üú7ªŒŽë­ð’-¦Bó0èQxÉLÒºîà´b£¾ëXkdÈ/·‡5Qw=ÄÖ¸©¿Ôå¸õ8’ÌmËvlÕã°Î^{Ê€ïØªÇÑOã}vëq^ò ¸bõ¿üPÖ æÎ­ÇyÁ^ÁŸak€W9ký9Îõ[\Wõd+v^®%HŒ½ü A2æŸí6yu¨ ÇíÖãh0Þ'п·gpÿʳŽj§Çn=ç’ÛP¼ Õ—ïbª‡5Q›âŠË碚+° Û±õÐÁ5'·±ÁŸ<̇ÂK^üEÚH·[#/ã†í½õ8/cy§QxI îÌÚ×'…—Dù(ž·GœðIÅwKá%ŽøÃö©È(¼äÃ3øÒ¹z¯¨…´î©)؆ZoÈémí8 V/×êç8rñwÒ&DüL /™NïØ¯²¼x“ý»#°jŸä7¯ê³ËW&¼äsÓþÄ^¼dÒݽqWìÕWæ{uÇö^¼¤ ö“Έ\¼DHñ«$ãÆÖùÖÈSS&`ƒRxIcÿ /õ[yÓIÞÀúéWŸ‹½S@§aÅÎwϱíJcQú\Þþ_²®;®>õC½•{ë„0¦61öãÿÆœHÀ®¤ð’Ñ™S¦8w /bóý]±¥«¤­‰¾ëÛGµj¶ùgô‚Vlñ„j5foøÝâ)8aБÔÞÒ¡O%®%æ,¥ð’Õ™äÑcð6•ÂKÔ˜ ^ßûÌ­~¶'bWRx‰uÊ34Áý¬ðSÂwRó/…—¬ þ.¶áê%žC´KWìÕ âœœëryAF9‰0ünñ‚’ørÑ Ÿ%…—x*ÕC‚¾çŠ-Þë Ÿ•AûYá%aJ÷:‡ /‰IÏÍ¡¶O /™¨Ç´¾‹\¼DÝKõCá%˜—Þç<Þ>ú%¤-Ñð·åÕ$i4n¸6¯?N§úÍÀû¤\¼„s– ü»Wì¸íűÐTXÇ…—lA Ìå‹albƒ›#€k¨ð’iäiü‘âøõËÓEnÇÚá`Œ /™Xß{Ÿ„¹SxÉ‹ç.Ø-íØâ+‡ïêiK÷ϾÑ›yW2bk½½` ˆ‰Iá%þÆË,H /q}Ñøm…—|Îô‡ž¶÷Ý/€ïHá%æ/ÈÀöFi¾(¿ç»(…—X/Ú 8¥‡çóe,  /Q‘øÛ»[ /‘d?ìN¹õ8A~>M黕ÇgL¾«×†ñ’ãvõ^9pà'¼kcê¾£ì¹ðÔÙVÜ…GÑ= ß8qq®A¸òÀ{êõFíÝÍyÂ{êÕ{ų%wy ìWï5H+ ÏØë'ŒĹŸ °W_œF¸F‚§æŠ½º3ìoúìÆkïú©;×|á%™oã†ß½u‹äO6Þ× /I'ŸŠ¸ÿ^’ãm>À¸^BµÕ»Ï #…—÷`÷`ºRxÉtÆ£ê$$/Oa £‡‘ëÓ2 RŒ½üÉ <ªaŸ}𒙌]a{ãòV0V°^Oòò'Û ý\C…—ÐÙ²yxp—Óvù“ÄÔLŒ-^PgM’ùô"Y±ãz#ßdzý„Q7ÅvÁïêõ0 ý>ðöX±5nbˆá ð\X±WO¾‹¾´+6îã½Ú@£fÅ^œ‹0GKÅï^=ºŸÉÐÞ~qåFwp…\¨ö»ÞH£1\ð»ã]j×îÀ^¢¥_²ÍÝ0ëXµ_=…‘ôv‚\³ö[—?¨þm:Æþ‡žÂ¾Û öí˟ĥBþŽ–~ÉLâ¢L¬×~õGD-¼¤u EÞŠŽë»žì¿©øÝ¹iÉ _芽õݤc îöZxIzuÄ ´ð’æ}K¨ çzÁ ¦âw‹„|û­GJm(œ õ|S@± yëÆ©>Öq®ËÕÃ#ŽV4Àtµð’5ƒñ}Dߨ«‹Íž»È™ÖÂKÆ4ò ê¸ïÈÕŦ·éêè‡ÂK„q†í­¼)ÖÒÆæ&a?Ä­ó¡ö"¿Z /!-¤]ojøÛî;À ÓUÀa´ðâ1Å·tú½ùnÂâÅ3­zq.îßaøÝ¹{¡þƒ^¢ÉÜ™ Ø ^bƒ0·Ž±õ~Sòò•Žk¨ðÃZ£í—„ó¡ðg/(Åšm-¼ÄQãysˆ&|·ðGôæ1áUx‰ÇkÁµðO® Em7½ü’Nù7 <»?z¯T “^½×I¹º5Ïð»…—ôæÔàËéÅKP÷`×>PŸ^bì׌µëjçâ¯ÜÁµð’‰9‰¹‡¾ë—”äíŒ1à¢èÅK’ûz‡±ÅS@ݺܖ9[<ô”Ÿf_Y/^‚9µ­Çûïå— :7s6¨·§Ó¹é p»ü®=ƒœ]~‰[£3¶cì­ö~µ@ìÕã»\"wÆ /YÿÃ:§Ô^»Ü:¼Ó¦c¥_Ò˜oÔ°ÏJ¿¤!V<7c¯7û>¨ão«õ†:psÃÇÏ{”•~IKê‡/yŽÛ¯gÝÁð»ü’pÆ5&¶A®?q}p »õ8J\Ÿ6¿kï~j[ŸrãvëqÜ8¿éøÝ[Ó“ÞY‰}VïîNsg}[¾{¿ÇÞס½~ i¾ø„|€]~É œ{â}Ò.¿Ä©Ï2á]h…—ôIo=Ÿ±Å/i„] ø\­ØÊã(½cÅ [åqbŸ`àºü®‡\W!ØK.¿D•Þzàñ·bë^"Ä«…·©^"Nš¾>áÍ`—_ÂØ \Çòá™7ªõ„³Å®~I0ÇÐpï»ú%Ù³™Î »ü’1ñ=Ôzb?ܼ©a¯¸W_~ ú€l 8Ovù%XGõR/m—_2ømŠ5ævù%èGµýqàíd…—øä·žãº¸ü’F5æ»¶bëÝ-Ô¿µöVxIðÛ4ûáòK:i¤7Ô /!}åu‡™m¨÷›QnF›áw«ŽÊHÛ"®y½>bFw¹Žk³ð’htOX£k/‰—;-ŽÛÅK”8Þ¶¡x ÞódVx‰ÍNþy+¼ÄL‚ßd0Æ…—Ø ~Élx¾Ù­[¤\h ÿ× /Q£:*Gþ™^¢r–æ€{Zá%2©5ðœ/¼DÌ8¿‰sݯn(å°ëÍ/®,ì1Õ° u¾EsÒ:Á}²ð’ab´Þpþ^2:åê2p,®ÞkP?´ض]½Wö©hüݼ9 þmøˆëoj»®àп…—4a͸ ¹[+ý’LòÊè¨Wa¥_²;ÛÛñ~Vú%‰¼ø—7ºÅ§.ŸÞN‰ãVõ8Óè»-[ñÌ…ÞC³Q{+ÿ´WGOlïõ]„§¢Ž·Ýzœ$ý’¯ëèí—ëÞ)'Œí­zœDŽ÷Üž°+ïùÂI^õ+öòÌ)?/ùB»üí„ÿªcl½ß‚Ö›†m¨õÖ87îx—›ŸüaňXá%=œ~ÛÀ½/?ù7ì³Öp>äÕU#^±'žC¥÷:Œï\ÈÍ·Ò{I¹Û‰œS+?aéÉ:.xÆæÍ¿Ñ¸µŽo‘¼ù·ÉoôÀßVç焳 lï=ß‚¸·ð3Ë›£ßÖ1ë¥÷ª¤„õ8^z¯ëÞŽý g–—Þë—iãoÎîÕ^z¯6'ñi±vÝÛõ¥ÄÁÀ»‘—Þëê;Ò°Bís/¼Ä…ø0ïr^x‰Ggœ j̽]_Z%o%Ä5¼ð’èT38öï—÷ª”oÁ·“^BZËÄ>+¼ÄYÿL0sï—÷jFçöYá%Þ;þ6Åš+ÿø Ó¹¹–+Ì~ó¦“õåà®á…—X'ìU1Ïë…—èKÞÒ^x‰bÞ4÷æCá%ŠäÜ%/ÐgW¿$ˆ³×ñëW¿5·g)œ~õKáöÒàÌò‹—$a¯ ^ß+öò^_øgÀÙó‹— ЮßÄ5tù%Ig¡›áo›W[“bñ ·ŽŠö(78³\.>I¹æ Àнð’†<èdþƒ^Ò¬¿äXa, /iÞþšÉ~ýq‚8{kKüúãÝÏЃn[øVþ‚ënð¿þ8Ì]4ãëÃ5+†ºÍ^x ˆ°þôröüê½vºO ÖùÕ{•Awø\®—Dwð†úë®÷^BgË@¾‘ëåQ½ˆ(¼E¼ð Òh$|Ò /Yÿ\××fá%¤±ëšq*¼D¹ w{/¼D1Ÿ5¿©¥kWƒ| ]€kévõ•©Ï õ=½ð’uâsàúÅKï¹ßN€øÅKtàùÖïó‹—4Êû7ô´ðÂKÔ)W×àë~ñæW7Á»ÜÅK½q² lCáÊAs= xx~ñ¡;W:èÖùÅKÝ£ßó^xÉàý×P·Î/^ât§¥¼´_¼Diߘ;ð~IМìxÿ-¼D·× _èþã¶Û ï/¼dnBïnœë…—˜Ðúü´Olá%Ó`ÙI•àýìòKäqÑ¬Ò è‡â—¬)åøÝ[㦄ÉY®Û ×ÃË VÑÅð&þÓ^ÔÎó[ÓõÙÞ&üîÕ1|lâ‡zNm(ÝЧ(ÃIkCîÀ‹_Ò•¾kÈÁðëó4¢9wòùñ]lrQ|^ÿ€ÇD92©€§ú¼zx‚±y >o}÷xÆæ>[~ÇbüÄîq“õhm8>q®ÿà%²“bøÛ¾( 76*ö±Éè ïˆ?xÉ6p{Ç¢ß?x‰lpÚá·Ù÷Ýèç·ýà%ºÁØu ˆí§pÜöUÏã—ü»7ÿþKç æNá%Òå»Ë`ã÷—ü `Îù®èæûÆKþý1 >{¦kv¬ÿÄj£¹.óéß½õTb÷c‡bŸâ+vÛ¿{/i8ÆâO¯ï›ç»S©½\µØxÉ¿;±ñU@Qý` ›/ùw~¿Ñ?±Ã1vÛ.Âÿ¤ŠÅÚÔØxÉ¿ºq  ¨/Œ—üûÃöƒo<5ó,Ú·u >Ï€NCƒØ=n²}Úž±û¾n ±ñ»ÞT ýÛ¸(±ñ’muáyÑ‘÷/Y±ÍÇxͲ纈—ü»Å]î×+¶ÿ|×5:ž-Z±ñ’Û´áÚœ cå'ö“ãÿ>ð·m¼äß=HƒÎ!|‹ÄÆKÖw¿êq>}&ûÁ¾Û’Îc¥þÝxɿۨÕ16Ð(6^²Û+°†v:î0±ñ’·ø‡â]#ìQ±ñ’;æ˜xa.)F¯½Úžý+Û.Úðƒ—È~ˆˆý’»±R±C!Öñ}?x‰¬ómvnÆÚÕÇ{É@Ža”Ÿ°c6¼øÛ>úÊÔ¿˜[ŒòviøÝD­ë(?ay^Ï|L!~ð’ü椟=J6GÖÅ^²éç€sè£ñ;þWÄʱÃà.å'<\qþ6ôÆÂKFs<‡œú·ð’1…ö䯯KþýÁæÃÄ;m¿${`Zw<Š_’⸟5IŒ=盘ã»[±f%6^²cÑ¿e½çñ^/ùwûÚ›PžçúÆKN,ñ2#ñ»ò_mp3l¯þ×oû*½¼±5n ùÍâ /ÊOx 'ÀCÒúÆž{IÃ<ÙæúÆKþý8Lü.Öð‡žqkèÃôHUì^²®ù9° vöIIÒ2èÛ`ç^²ÍVáNOº{î%¡pfmOÀícã%ûìžôÝ™€kÄÆKv¼vÍUàwýç»c¨`lWüî9ßš¹áosÜ£ìœo> Ûë¨qvî%êp§Ýœ2È;ÅÆKÖÝÈŸD¤ÒäÃØþ3ÆÖàÜ”?-q?ûÁKüÏÝu¾bߦQþ8/^Põ^£üqjµ÷?]@O!ʧa¾p÷¨?N'or¬G¼„H5?ß Ã6Ô»û[J~úAžÇÍŽÍŸ±ókO­3«Ã›,6^òsïËç;`û Ü•7^²Þ ã·ž÷~׿u“NìYoûÂùft_³O®ÍËànoßûä‰=ï7ÏïÆ7eêÆÚÿŠàp·ï8#±ñ’Ī´!Ðï6⼻ǓDü£[7&ÆÎ:/ânþioí“ßÍmO=Ÿ±³ÕÝÓŸ÷‡¹Þ ޱýì;3'®7q˜×OØßY‚žXQx‰¸Wÿ,WX›?xÉþ!Θ`üQx J?ÞÙ¨¥_Ò0ø°¾±ç>ÙO»û!ð»g½­;´B¬ æaüà%ù­ ðé_Çó8Ï}²ñ;@eÂuëq„¼/}=#Ï>Ù…Þ"_ò7VêÌjæù˜Ç^²Þ›æÃæsá~Vx‰=‹˜®C ~[ù›œ…ºõÏð·ÕzS¸{ê:7ñ“ç’¿M÷š‡s¨ø%©ŽßmÀ[ù?¬¡scotch_6.0.9/ci/0000755000302600021200000000000013465315041013652 5ustar pelegrinpelegrinscotch_6.0.9/ci/gitlab-ci-filelist.sh0000755000302600021200000000023013303015264017643 0ustar pelegrinpelegrin#!/bin/sh SRCDIR_TO_ANALYZE="src" echo $PWD rm -f filelist.txt for dir in ${SRCDIR_TO_ANALYZE} do find $dir -name '*\.[ch]' >> filelist.txt done scotch_6.0.9/ci/analysis.sh0000755000302600021200000000367113465315041016043 0ustar pelegrinpelegrin#!/bin/sh export CPPCHECK_DEFINITIONS="$(grep SCOTCH_GITLAB_SEPARATOR < src/Makefile.inc | sed -e 's#^CFLAGS.*SCOTCH_GITLAB_SEPARATOR##1' | sed -e 's#[ ][^-][^ ]*##g' -e 's#[ ][-][^D][^ ]*##g')" export CPPCHECK_INCLUDES="-Isrc/scotch -Isrc/misc -Isrc/libscotch -Isrc/esmumps -Isrc/libscotchmetis" ./ci/gitlab-ci-filelist.sh cppcheck -v --max-configs=1 --language=c ${CPPCHECK_DEFINITIONS_VM:---platform=native} --enable=all --xml --xml-version=2 --suppress=missingIncludeSystem --suppress=varFuncNullUB --suppress=invalidPrintfArgType_sint ${CPPCHECK_DEFINITIONS} ${CPPCHECK_INCLUDES} --file-list=./filelist.txt 2> scotch-cppcheck.xml rats -w 3 --xml `cat filelist.txt` > scotch-rats.xml cat > sonar-project.properties << EOF sonar.host.url=https://sonarqube.bordeaux.inria.fr/sonarqube sonar.login=$SONARQUBE_LOGIN sonar.links.homepage=$CI_PROJECT_URL sonar.links.scm=$CI_REPOSITORY_URL sonar.links.ci=https://gitlab.inria.fr/$CI_PROJECT_NAMESPACE/scotch/pipelines sonar.links.issue=https://gitlab.inria.fr/$CI_PROJECT_NAMESPACE/scotch/issues sonar.projectKey=tadaam:scotch:gitlab:$CI_PROJECT_NAMESPACE:$CI_COMMIT_REF_NAME sonar.projectDescription=Package for graph and mesh/hypergraph partitioning, graph clustering, and sparse matrix ordering. sonar.projectVersion=6.0 sonar.language=c sonar.sourceEncoding=UTF-8 sonar.sources=include,src/check,src/esmumps,src/libscotch,src/libscotchmetis,src/misc,src/scotch sonar.c.includeDirectories=$(echo | gcc -E -Wp,-v - 2>&1 | grep "^ " | tr '\n' ',')include,src/scotch,src/misc,src/libscotch,src/esmumps,src/libscotchmetis sonar.c.errorRecoveryEnabled=true sonar.c.compiler.charset=UTF-8 sonar.c.compiler.parser=GCC sonar.c.compiler.regex=^(.*):(\\\d+):\\\d+: warning: (.*)\\\[(.*)\\\]$ sonar.c.compiler.reportPath=scotch-build.log sonar.c.coverage.reportPath=scotch-coverage.xml sonar.c.cppcheck.reportPath=scotch-cppcheck.xml sonar.c.rats.reportPath=scotch-rats.xml sonar.c.clangsa.reportPath=analyzer_reports/*/*.plist EOF scotch_6.0.9/ci/gitlab-ci-env.sh0000755000302600021200000000047113303015264016627 0ustar pelegrinpelegrin# Set external libraries #export LD_LIBRARY_PATH=...:$LD_LIBRARY_PATH #export PKG_CONFIG_PATH=.../lib/pkgconfig:$PKG_CONFIG_PATH #export PATH=.../bin:$PATH # ENV var used during the analysis export GCOV_PREFIX=$PWD/src/coverage/src export GCOV_PREFIX_STRIP=`echo $PWD/src | grep -o "/" | wc | awk '{print $1}'` scotch_6.0.9/ci/Makefile.inc0000644000302600021200000000112413465315041016060 0ustar pelegrinpelegrinEXE = LIB = .a OBJ = .o MAKE = make AR = ar ARFLAGS = -ruv CAT = cat CCS = gcc CCP = mpicc CCD = gcc SCOTCH_NAME_SUFFIX= CFLAGS = -Wall --coverage -fdiagnostics-show-option `pkg-config --cflags ompi-c` -Drestrict=__restrict -DSCOTCH_GITLAB_SEPARATOR -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_FILE_COMPRESS_BZ2 -DSCOTCH_RENAME LDFLAGS = --coverage `pkg-config --libs --static ompi-c` -lz -lbz2 -llzma -lm -lrt -pthread CP = cp LEX = flex "-Pscotchyy$(SCOTCH_NAME_SUFFIX)" -olex.yy.c LN = ln MKDIR = mkdir MV = mv RANLIB = ranlib YACC = bison "-pscotchyy$(SCOTCH_NAME_SUFFIX)" -y -b y scotch_6.0.9/lib/0000755000302600021200000000000013470125017014023 5ustar pelegrinpelegrinscotch_6.0.9/include/0000755000302600021200000000000013470125017014700 5ustar pelegrinpelegrinscotch_6.0.9/tgt/0000755000302600021200000000000013466077161014066 5ustar pelegrinpelegrinscotch_6.0.9/tgt/h7.tgt0000644000302600021200000000000713303015264015103 0ustar pelegrinpelegrinhcub 7 scotch_6.0.9/tgt/m23x25.tgt0000644000302600021200000000001513303015264015524 0ustar pelegrinpelegrinmesh2D 23 25 scotch_6.0.9/tgt/k24.tgt0000644000302600021200000000001113303015264015160 0ustar pelegrinpelegrincmplt 24 scotch_6.0.9/tgt/m11x13.tgt0000644000302600021200000000001513303015264015516 0ustar pelegrinpelegrinmesh2D 11 13 scotch_6.0.9/tgt/p512.tgt0000644000302600021200000000001513303015264015253 0ustar pelegrinpelegrinmesh2D 512 1 scotch_6.0.9/tgt/m21x23.tgt0000644000302600021200000000001513303015264015520 0ustar pelegrinpelegrinmesh2D 21 23 scotch_6.0.9/tgt/k7.tgt0000644000302600021200000000001013303015264015100 0ustar pelegrinpelegrincmplt 7 scotch_6.0.9/tgt/m27x29.tgt0000644000302600021200000000001513303015264015534 0ustar pelegrinpelegrinmesh2D 27 29 scotch_6.0.9/tgt/k12.tgt0000644000302600021200000000001113303015264015155 0ustar pelegrinpelegrincmplt 12 scotch_6.0.9/tgt/m8x8.tgt0000644000302600021200000000001313303015264015366 0ustar pelegrinpelegrinmesh2D 8 8 scotch_6.0.9/tgt/m25x27.tgt0000644000302600021200000000001513303015264015530 0ustar pelegrinpelegrinmesh2D 25 27 scotch_6.0.9/tgt/vhcub.tgt0000644000302600021200000000001013462016476015702 0ustar pelegrinpelegrinvarhcub scotch_6.0.9/tgt/m2x2.tgt0000644000302600021200000000001313303015264015352 0ustar pelegrinpelegrinmesh2D 2 2 scotch_6.0.9/tgt/vcmplt.tgt0000644000302600021200000000001113303015264016065 0ustar pelegrinpelegrinvarcmplt scotch_6.0.9/tgt/m10x20.tgt0000644000302600021200000000001513303015264015513 0ustar pelegrinpelegrinmesh2D 10 20 scotch_6.0.9/tgt/h5.tgt0000644000302600021200000000000713303015264015101 0ustar pelegrinpelegrinhcub 5 scotch_6.0.9/tgt/k96.tgt0000644000302600021200000000001113303015264015171 0ustar pelegrinpelegrincmplt 96 scotch_6.0.9/tgt/m10x10.tgt0000644000302600021200000000001513303015264015512 0ustar pelegrinpelegrinmesh2D 10 10 scotch_6.0.9/tgt/p4.tgt0000644000302600021200000000001313303015264015105 0ustar pelegrinpelegrinmesh2D 4 1 scotch_6.0.9/tgt/k128.tgt0000644000302600021200000000001213303015264015246 0ustar pelegrinpelegrincmplt 128 scotch_6.0.9/tgt/m32x32.tgt0000644000302600021200000000001513303015264015522 0ustar pelegrinpelegrinmesh2D 32 32 scotch_6.0.9/tgt/m19x31.tgt0000644000302600021200000000001513303015264015526 0ustar pelegrinpelegrinmesh2D 19 31 scotch_6.0.9/tgt/h9.tgt0000644000302600021200000000000713303015264015105 0ustar pelegrinpelegrinhcub 9 scotch_6.0.9/tgt/k1.tgt0000644000302600021200000000001013303015264015072 0ustar pelegrinpelegrincmplt 1 scotch_6.0.9/tgt/m3x3.tgt0000644000302600021200000000001313303015264015354 0ustar pelegrinpelegrinmesh2D 3 3 scotch_6.0.9/tgt/k48.tgt0000644000302600021200000000001113303015264015166 0ustar pelegrinpelegrincmplt 48 scotch_6.0.9/tgt/m4x8.tgt0000644000302600021200000000001313303015264015362 0ustar pelegrinpelegrinmesh2D 4 8 scotch_6.0.9/tgt/m16x32.tgt0000644000302600021200000000001513303015264015524 0ustar pelegrinpelegrinmesh2D 16 32 scotch_6.0.9/tgt/t2x4x8.tgt0000644000302600021200000000001613303015264015646 0ustar pelegrinpelegrintorus3D 2 4 8 scotch_6.0.9/tgt/h3.tgt0000644000302600021200000000000713303015264015077 0ustar pelegrinpelegrinhcub 3 scotch_6.0.9/tgt/k256.tgt0000644000302600021200000000001213303015264015250 0ustar pelegrinpelegrincmplt 256 scotch_6.0.9/tgt/h4.tgt0000644000302600021200000000000713303015264015100 0ustar pelegrinpelegrinhcub 4 scotch_6.0.9/tgt/p8.tgt0000644000302600021200000000001313303015264015111 0ustar pelegrinpelegrinmesh2D 8 1 scotch_6.0.9/tgt/m9x11.tgt0000644000302600021200000000001413303015264015442 0ustar pelegrinpelegrinmesh2D 9 11 scotch_6.0.9/tgt/m24x24.tgt0000644000302600021200000000001513303015264015524 0ustar pelegrinpelegrinmesh2D 24 24 scotch_6.0.9/tgt/h8.tgt0000644000302600021200000000000713303015264015104 0ustar pelegrinpelegrinhcub 8 scotch_6.0.9/tgt/k2.tgt0000644000302600021200000000001013303015264015073 0ustar pelegrinpelegrincmplt 2 scotch_6.0.9/tgt/h10.tgt0000644000302600021200000000001013303015264015147 0ustar pelegrinpelegrinhcub 10 scotch_6.0.9/tgt/k32.tgt0000644000302600021200000000001113303015264015157 0ustar pelegrinpelegrincmplt 32 scotch_6.0.9/tgt/k512.tgt0000644000302600021200000000001213303015264015243 0ustar pelegrinpelegrincmplt 512 scotch_6.0.9/tgt/p64.tgt0000644000302600021200000000001413303015264015174 0ustar pelegrinpelegrinmesh2D 64 1 scotch_6.0.9/tgt/m17x19.tgt0000644000302600021200000000001513303015264015532 0ustar pelegrinpelegrinmesh2D 17 19 scotch_6.0.9/tgt/m2x4x8.tgt0000644000302600021200000000001513303015264015636 0ustar pelegrinpelegrinmesh3D 2 4 8 scotch_6.0.9/tgt/m8x16.tgt0000644000302600021200000000001413303015264015446 0ustar pelegrinpelegrinmesh2D 8 16 scotch_6.0.9/tgt/m16x16.tgt0000644000302600021200000000001513303015264015526 0ustar pelegrinpelegrinmesh2D 16 16 scotch_6.0.9/tgt/t4x4x4.tgt0000644000302600021200000000001613303015264015644 0ustar pelegrinpelegrintorus3D 4 4 4 scotch_6.0.9/tgt/k64.tgt0000644000302600021200000000001113303015264015164 0ustar pelegrinpelegrincmplt 64 scotch_6.0.9/tgt/k8.tgt0000644000302600021200000000001013303015264015101 0ustar pelegrinpelegrincmplt 8 scotch_6.0.9/tgt/m5x7.tgt0000644000302600021200000000001313303015264015362 0ustar pelegrinpelegrinmesh2D 5 7 scotch_6.0.9/tgt/p2.tgt0000644000302600021200000000001313303015264015103 0ustar pelegrinpelegrinmesh2D 2 1 scotch_6.0.9/tgt/p16.tgt0000644000302600021200000000001413303015264015171 0ustar pelegrinpelegrinmesh2D 16 1 scotch_6.0.9/tgt/m9x7.tgt0000644000302600021200000000001313303015264015366 0ustar pelegrinpelegrinmesh2D 9 7 scotch_6.0.9/tgt/h2.tgt0000644000302600021200000000000713303015264015076 0ustar pelegrinpelegrinhcub 2 scotch_6.0.9/tgt/m19x21.tgt0000644000302600021200000000001513303015264015525 0ustar pelegrinpelegrinmesh2D 19 21 scotch_6.0.9/tgt/k6.tgt0000644000302600021200000000001013303015264015077 0ustar pelegrinpelegrincmplt 6 scotch_6.0.9/tgt/k4.tgt0000644000302600021200000000001013303015264015075 0ustar pelegrinpelegrincmplt 4 scotch_6.0.9/tgt/h6.tgt0000644000302600021200000000000713303015264015102 0ustar pelegrinpelegrinhcub 6 scotch_6.0.9/tgt/m29x31.tgt0000644000302600021200000000001513303015264015527 0ustar pelegrinpelegrinmesh2D 29 31 scotch_6.0.9/tgt/k9.tgt0000644000302600021200000000001013466077161015120 0ustar pelegrinpelegrincmplt 9 scotch_6.0.9/tgt/h1.tgt0000644000302600021200000000000713303015264015075 0ustar pelegrinpelegrinhcub 1 scotch_6.0.9/tgt/p128.tgt0000644000302600021200000000001513303015264015256 0ustar pelegrinpelegrinmesh2D 128 1 scotch_6.0.9/tgt/m4x4.tgt0000644000302600021200000000001313303015264015356 0ustar pelegrinpelegrinmesh2D 4 4 scotch_6.0.9/tgt/k16.tgt0000644000302600021200000000001113303015264015161 0ustar pelegrinpelegrincmplt 16 scotch_6.0.9/tgt/T3D_64.tgt0000644000302600021200000000001613303015264015470 0ustar pelegrinpelegrintorus3D 4 4 4 scotch_6.0.9/tgt/p256.tgt0000644000302600021200000000001513303015264015260 0ustar pelegrinpelegrinmesh2D 256 1 scotch_6.0.9/tgt/p32.tgt0000644000302600021200000000001413303015264015167 0ustar pelegrinpelegrinmesh2D 32 1 scotch_6.0.9/tgt/m5x5.tgt0000644000302600021200000000001313303015264015360 0ustar pelegrinpelegrinmesh2D 5 5 scotch_6.0.9/tgt/void.tgt0000644000302600021200000000001013303015264015520 0ustar pelegrinpelegrincmplt 1 scotch_6.0.9/tgt/m64x64.tgt0000644000302600021200000000001513303015264015534 0ustar pelegrinpelegrinmesh2D 64 64 scotch_6.0.9/tgt/SP2_16.txt0000644000302600021200000000000713303015264015520 0ustar pelegrinpelegrinleaf 4